Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations Symbian2
authorWilliam Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
epoc32/include/EGL/egl.h
epoc32/include/EGL/egltypes.h
epoc32/include/GLES/egltypes.h
epoc32/include/VG/1.0/openvg.h
epoc32/include/VG/1.0/vgu.h
epoc32/include/VG/1.1/openvg.h
epoc32/include/VG/1.1/vgu.h
epoc32/include/animation.h
epoc32/include/animationconfig.h
epoc32/include/animationdataprovider.h
epoc32/include/animationevents.h
epoc32/include/animationframe.h
epoc32/include/animationgroup.h
epoc32/include/animationmixins.h
epoc32/include/animationticker.h
epoc32/include/animationtls.h
epoc32/include/animator.h
epoc32/include/ansicomp.h
epoc32/include/apacmdln.h
epoc32/include/apadbase.h
epoc32/include/apadef.h
epoc32/include/apaflrec.h
epoc32/include/apaid.h
epoc32/include/apamdr.h
epoc32/include/apcaptionfile.rh
epoc32/include/apgcli.h
epoc32/include/apgctl.h
epoc32/include/apgdoor.h
epoc32/include/apgicnfl.h
epoc32/include/apgtask.h
epoc32/include/apgwgnam.h
epoc32/include/app/btmsgtypeuid.h
epoc32/include/app/cacheman.h
epoc32/include/app/calalarm.h
epoc32/include/app/calcategory.h
epoc32/include/app/calcategorymanager.h
epoc32/include/app/calchangecallback.h
epoc32/include/app/calcommon.h
epoc32/include/app/calcontent.h
epoc32/include/app/caldataexchange.h
epoc32/include/app/caldataformat.h
epoc32/include/app/calendarconverter.h
epoc32/include/app/calentry.h
epoc32/include/app/calentryview.h
epoc32/include/app/calinstance.h
epoc32/include/app/calinstanceview.h
epoc32/include/app/calinterimapipanic.h
epoc32/include/app/caliterator.h
epoc32/include/app/calnotification.h
epoc32/include/app/calprogresscallback.h
epoc32/include/app/calrrule.h
epoc32/include/app/calsession.h
epoc32/include/app/caltime.h
epoc32/include/app/caluser.h
epoc32/include/app/cemailaccounts.h
epoc32/include/app/cimattachmentwaiter.h
epoc32/include/app/cimplainbodytext.h
epoc32/include/app/cmmsaccounts.h
epoc32/include/app/cmmssettings.h
epoc32/include/app/cntdb.h
epoc32/include/app/cntdbobs.h
epoc32/include/app/cntdef.h
epoc32/include/app/cntfield.h
epoc32/include/app/cntfilt.h
epoc32/include/app/cntfldst.h
epoc32/include/app/cntitem.h
epoc32/include/app/cntsync.h
epoc32/include/app/cntvcard.h
epoc32/include/app/cntview.h
epoc32/include/app/cntviewbase.h
epoc32/include/app/cobexsendoperation.h
epoc32/include/app/csmsaccount.h
epoc32/include/app/csmsemailfields.h
epoc32/include/app/hlplch.h
epoc32/include/app/hlpmodel.h
epoc32/include/app/hlpzoom.h
epoc32/include/app/iapprefs.h
epoc32/include/app/imapcmds.h
epoc32/include/app/imapconnectionobserver.h
epoc32/include/app/imapset.h
epoc32/include/app/imcmmain.h
epoc32/include/app/imcvcodc.h
epoc32/include/app/impcmtm.h
epoc32/include/app/imsk.h
epoc32/include/app/irmsgtypeuid.h
epoc32/include/app/irmtmcmds.h
epoc32/include/app/miut_err.h
epoc32/include/app/miutatch.h
epoc32/include/app/miutconv.h
epoc32/include/app/miutdef.h
epoc32/include/app/miuthdr.h
epoc32/include/app/miutmsg.h
epoc32/include/app/miutpars.h
epoc32/include/app/miutset.h
epoc32/include/app/mmmssettingsobserver.h
epoc32/include/app/obexheaderlist.h
epoc32/include/app/phbksync.h
epoc32/include/app/pop3cmds.h
epoc32/include/app/pop3set.h
epoc32/include/app/popcmtm.h
epoc32/include/app/smcmmain.h
epoc32/include/app/smsclnt.h
epoc32/include/app/smscmds.h
epoc32/include/app/smtcmtm.h
epoc32/include/app/smtpcmds.h
epoc32/include/app/smtpset.h
epoc32/include/app/smut.h
epoc32/include/app/smuthdr.h
epoc32/include/app/smutset.h
epoc32/include/app/smutsimparam.h
epoc32/include/app/vcal.h
epoc32/include/app/vcal.inl
epoc32/include/app/vcard.h
epoc32/include/app/vcard.inl
epoc32/include/app/versit.h
epoc32/include/app/versit.inl
epoc32/include/app/versittls.h
epoc32/include/app/vobserv.h
epoc32/include/app/vprop.h
epoc32/include/app/vprop.inl
epoc32/include/app/vrecur.h
epoc32/include/app/vrecur.inl
epoc32/include/app/vstaticutils.h
epoc32/include/app/vtoken.h
epoc32/include/app/vuid.h
epoc32/include/app/vutil.h
epoc32/include/apparc.h
epoc32/include/asaltdefs.h
epoc32/include/ascliclientutils.h
epoc32/include/asclidefinitions.h
epoc32/include/asclisession.h
epoc32/include/asclisoundplay.h
epoc32/include/asshdalarm.h
epoc32/include/asshdbitflags.h
epoc32/include/asshddefs.h
epoc32/include/attrlut.h
epoc32/include/bafl/sysutil.h
epoc32/include/basicanimation.h
epoc32/include/beagle/iolines.h
epoc32/include/beagle/mconf.h
epoc32/include/beagle/variantmediadef.h
epoc32/include/bif.h
epoc32/include/biodb.h
epoc32/include/biouids.h
epoc32/include/bmpancli.h
epoc32/include/bmpanconsts.h
epoc32/include/bmpansrv.h
epoc32/include/bsp.h
epoc32/include/btmsgtypeuid.h
epoc32/include/cacheman.h
epoc32/include/calalarm.h
epoc32/include/calcategory.h
epoc32/include/calcategorymanager.h
epoc32/include/calchangecallback.h
epoc32/include/calcommon.h
epoc32/include/calcontent.h
epoc32/include/caldataexchange.h
epoc32/include/caldataformat.h
epoc32/include/calendarconverter.h
epoc32/include/calentry.h
epoc32/include/calentryview.h
epoc32/include/calinstance.h
epoc32/include/calinstanceview.h
epoc32/include/calinterimapipanic.h
epoc32/include/caliterator.h
epoc32/include/calnotification.h
epoc32/include/calprogresscallback.h
epoc32/include/calrrule.h
epoc32/include/calsession.h
epoc32/include/caltime.h
epoc32/include/caluser.h
epoc32/include/cbioasyncwaiter.h
epoc32/include/cbnfnode.h
epoc32/include/cbnfparser.h
epoc32/include/cdtdmodel.h
epoc32/include/cemailaccounts.h
epoc32/include/cfragmentedstring.h
epoc32/include/chttpformencoder.h
epoc32/include/chttpresponse.h
epoc32/include/cimattachmentwaiter.h
epoc32/include/cimplainbodytext.h
epoc32/include/clock.h
epoc32/include/cmarkedstack.h
epoc32/include/cmmsaccounts.h
epoc32/include/cmmssettings.h
epoc32/include/cmsvattachment.h
epoc32/include/cmsvmimeheaders.h
epoc32/include/cmsvplainbodytext.h
epoc32/include/cmsvrecipientlist.h
epoc32/include/cmsvtechnologytypedefaultmtmsettings.h
epoc32/include/cnftool.rh
epoc32/include/cnode.h
epoc32/include/cnodeleteattribute.h
epoc32/include/cntdb.h
epoc32/include/cntdbobs.h
epoc32/include/cntdef.h
epoc32/include/cntfield.h
epoc32/include/cntfilt.h
epoc32/include/cntfldst.h
epoc32/include/cntitem.h
epoc32/include/cntsync.h
epoc32/include/cntvcard.h
epoc32/include/cntview.h
epoc32/include/cntviewbase.h
epoc32/include/cobexsendoperation.h
epoc32/include/coeaui.h
epoc32/include/coeccntx.h
epoc32/include/coecntrl.h
epoc32/include/coecobs.h
epoc32/include/coecoloruse.h
epoc32/include/coecontrolarray.h
epoc32/include/coedef.h
epoc32/include/coeerror.h
epoc32/include/coefepff.h
epoc32/include/coefont.h
epoc32/include/coefontprovider.h
epoc32/include/coehelp.h
epoc32/include/coeinput.h
epoc32/include/coelayoutman.h
epoc32/include/coemain.h
epoc32/include/coemain.inl
epoc32/include/coemop.h
epoc32/include/coesndpy.h
epoc32/include/coetextdrawer.h
epoc32/include/coeutils.h
epoc32/include/coeview.h
epoc32/include/comms-infras/cftransportmacro.h
epoc32/include/comms-infras/metadata.inl
epoc32/include/conarc.h
epoc32/include/concnf.h
epoc32/include/confndr.h
epoc32/include/conlist.h
epoc32/include/conplugin.rh
epoc32/include/crulemarkedstack.h
epoc32/include/csendasaccounts.h
epoc32/include/csendasmessagetypes.h
epoc32/include/csmsaccount.h
epoc32/include/csmsclass0base.h
epoc32/include/csmsemailfields.h
epoc32/include/cstack.h
epoc32/include/dtdnode.h
epoc32/include/eikamnt.h
epoc32/include/eikapp.h
epoc32/include/eikappui.h
epoc32/include/eikaufty.h
epoc32/include/eikbhelp.h
epoc32/include/eikcmobs.h
epoc32/include/eikdef.h
epoc32/include/eikdll.h
epoc32/include/eikdoc.h
epoc32/include/eikembal.h
epoc32/include/eikenv.h
epoc32/include/eikenv.inl
epoc32/include/eikfctry.h
epoc32/include/eikfutil.h
epoc32/include/eikmobs.h
epoc32/include/eikmsg.h
epoc32/include/eiknotapi.h
epoc32/include/eikproc.h
epoc32/include/eikrutil.h
epoc32/include/eikstart.h
epoc32/include/eikunder.h
epoc32/include/eikvcurs.h
epoc32/include/elements/cftransportmacro.h
epoc32/include/elements/metadata.inl
epoc32/include/estatus.h
epoc32/include/fepbase.h
epoc32/include/fepbconfig.h
epoc32/include/fepbutils.h
epoc32/include/fepplugin.h
epoc32/include/fepplugin.inl
epoc32/include/gles/egl.h
epoc32/include/grdcells.h
epoc32/include/grddef.h
epoc32/include/grdprint.h
epoc32/include/grdprint.inl
epoc32/include/grdstd.h
epoc32/include/grdstd.inl
epoc32/include/gulalign.h
epoc32/include/gulbordr.h
epoc32/include/gulcolor.h
epoc32/include/guldef.h
epoc32/include/gulfont.h
epoc32/include/gulicon.h
epoc32/include/gulutil.h
epoc32/include/hlplch.h
epoc32/include/hlpmodel.h
epoc32/include/hlpzoom.h
epoc32/include/http.h
epoc32/include/http/cauthenticationfilterinterface.h
epoc32/include/http/cecomfilter.h
epoc32/include/http/framework/cheadercodec.h
epoc32/include/http/framework/cprotocolhandler.h
epoc32/include/http/framework/cprottransaction.h
epoc32/include/http/framework/crxdata.h
epoc32/include/http/framework/csecuritypolicy.h
epoc32/include/http/framework/csecuritypolicy.inl
epoc32/include/http/framework/ctxdata.h
epoc32/include/http/framework/mrxdataobserver.h
epoc32/include/http/framework/rheaderfield.h
epoc32/include/http/mhttpauthenticationcallback.h
epoc32/include/http/mhttpdatasupplier.h
epoc32/include/http/mhttpfilter.h
epoc32/include/http/mhttpfilterbase.h
epoc32/include/http/mhttpfiltercreationcallback.h
epoc32/include/http/mhttpsessioneventcallback.h
epoc32/include/http/mhttptransactioncallback.h
epoc32/include/http/rhttpconnectioninfo.h
epoc32/include/http/rhttpfiltercollection.h
epoc32/include/http/rhttpheaders.h
epoc32/include/http/rhttpmessage.h
epoc32/include/http/rhttppropertyset.h
epoc32/include/http/rhttprequest.h
epoc32/include/http/rhttpresponse.h
epoc32/include/http/rhttpsession.h
epoc32/include/http/rhttptransaction.h
epoc32/include/http/rhttptransactionpropertyset.h
epoc32/include/http/tfilterconfigurationiter.h
epoc32/include/http/tfilterinformation.h
epoc32/include/http/thttpevent.h
epoc32/include/http/thttpevent.inl
epoc32/include/http/thttpfilterhandle.h
epoc32/include/http/thttpfilteriterator.h
epoc32/include/http/thttpfilterregistration.h
epoc32/include/http/thttphdrfielditer.h
epoc32/include/http/thttphdrval.h
epoc32/include/httperr.h
epoc32/include/httpstd.h
epoc32/include/iapprefs.h
epoc32/include/icl/imageprocessor.h
epoc32/include/iclanimationdataprovider.h
epoc32/include/imageprocessor/imageprocessor.h
epoc32/include/imapcmds.h
epoc32/include/imapconnectionobserver.h
epoc32/include/imapset.h
epoc32/include/imcmmain.h
epoc32/include/imcvcodc.h
epoc32/include/impcmtm.h
epoc32/include/imsk.h
epoc32/include/ineturi.h
epoc32/include/ineturilist.h
epoc32/include/ineturilistdef.h
epoc32/include/ipaddr.h
epoc32/include/irmsgtypeuid.h
epoc32/include/irmtmcmds.h
epoc32/include/logdef.h
epoc32/include/mdataproviderobserver.h
epoc32/include/mdptx.h
epoc32/include/mframeworksp.h
epoc32/include/miut_err.h
epoc32/include/miutatch.h
epoc32/include/miutconv.h
epoc32/include/miutdef.h
epoc32/include/miuthdr.h
epoc32/include/miutmsg.h
epoc32/include/miutpars.h
epoc32/include/miutset.h
epoc32/include/mmf/plugin/mmfformatimplementationuids.hrh
epoc32/include/mmfformatimplementationuids.hrh
epoc32/include/mmmssettingsobserver.h
epoc32/include/mmsvattachmentmanager.h
epoc32/include/mmsvattachmentmanagersync.h
epoc32/include/mobexnotify.h
epoc32/include/msvapi.h
epoc32/include/msventry.h
epoc32/include/msventryscheduledata.h
epoc32/include/msvfind.h
epoc32/include/msvftext.h
epoc32/include/msvids.h
epoc32/include/msvoffpeaktime.h
epoc32/include/msvrcpt.h
epoc32/include/msvreg.h
epoc32/include/msvruids.h
epoc32/include/msvscheduledentry.h
epoc32/include/msvschedulepackage.h
epoc32/include/msvschedulesend.h
epoc32/include/msvschedulesettings.h
epoc32/include/msvsenderroraction.h
epoc32/include/msvstd.h
epoc32/include/msvstore.h
epoc32/include/msvsysagentaction.h
epoc32/include/msvuids.h
epoc32/include/mtclbase.h
epoc32/include/mtclreg.h
epoc32/include/mtmdef.h
epoc32/include/mtmuibas.h
epoc32/include/mtmuids.h
epoc32/include/mtsr.h
epoc32/include/mtud.rh
epoc32/include/mtudcbas.h
epoc32/include/mtudreg.h
epoc32/include/mtuireg.h
epoc32/include/mturutils.h
epoc32/include/mw/animation.h
epoc32/include/mw/animationconfig.h
epoc32/include/mw/animationdataprovider.h
epoc32/include/mw/animationevents.h
epoc32/include/mw/animationframe.h
epoc32/include/mw/animationgroup.h
epoc32/include/mw/animationmixins.h
epoc32/include/mw/animationticker.h
epoc32/include/mw/animationtls.h
epoc32/include/mw/animator.h
epoc32/include/mw/ansicomp.h
epoc32/include/mw/apacmdln.h
epoc32/include/mw/apadbase.h
epoc32/include/mw/apadef.h
epoc32/include/mw/apaflrec.h
epoc32/include/mw/apaid.h
epoc32/include/mw/apamdr.h
epoc32/include/mw/apcaptionfile.rh
epoc32/include/mw/apgcli.h
epoc32/include/mw/apgctl.h
epoc32/include/mw/apgdoor.h
epoc32/include/mw/apgicnfl.h
epoc32/include/mw/apgtask.h
epoc32/include/mw/apgwgnam.h
epoc32/include/mw/apparc.h
epoc32/include/mw/asaltdefs.h
epoc32/include/mw/ascliclientutils.h
epoc32/include/mw/asclidefinitions.h
epoc32/include/mw/asclisession.h
epoc32/include/mw/asclisoundplay.h
epoc32/include/mw/asshdalarm.h
epoc32/include/mw/asshdbitflags.h
epoc32/include/mw/asshddefs.h
epoc32/include/mw/attrlut.h
epoc32/include/mw/basicanimation.h
epoc32/include/mw/bif.h
epoc32/include/mw/biodb.h
epoc32/include/mw/biouids.h
epoc32/include/mw/bmpancli.h
epoc32/include/mw/bmpanconsts.h
epoc32/include/mw/bmpansrv.h
epoc32/include/mw/bsp.h
epoc32/include/mw/cbioasyncwaiter.h
epoc32/include/mw/cbnfnode.h
epoc32/include/mw/cbnfparser.h
epoc32/include/mw/cdtdmodel.h
epoc32/include/mw/cfragmentedstring.h
epoc32/include/mw/chttpformencoder.h
epoc32/include/mw/chttpresponse.h
epoc32/include/mw/clock.h
epoc32/include/mw/cmarkedstack.h
epoc32/include/mw/cmsvattachment.h
epoc32/include/mw/cmsvmimeheaders.h
epoc32/include/mw/cmsvplainbodytext.h
epoc32/include/mw/cmsvrecipientlist.h
epoc32/include/mw/cmsvtechnologytypedefaultmtmsettings.h
epoc32/include/mw/cnftool.rh
epoc32/include/mw/cnode.h
epoc32/include/mw/cnodeleteattribute.h
epoc32/include/mw/coeaui.h
epoc32/include/mw/coeccntx.h
epoc32/include/mw/coecntrl.h
epoc32/include/mw/coecobs.h
epoc32/include/mw/coecoloruse.h
epoc32/include/mw/coecontrolarray.h
epoc32/include/mw/coedef.h
epoc32/include/mw/coeerror.h
epoc32/include/mw/coefepff.h
epoc32/include/mw/coefont.h
epoc32/include/mw/coefontprovider.h
epoc32/include/mw/coehelp.h
epoc32/include/mw/coeinput.h
epoc32/include/mw/coelayoutman.h
epoc32/include/mw/coemain.h
epoc32/include/mw/coemain.inl
epoc32/include/mw/coemop.h
epoc32/include/mw/coesndpy.h
epoc32/include/mw/coetextdrawer.h
epoc32/include/mw/coeutils.h
epoc32/include/mw/coeview.h
epoc32/include/mw/conarc.h
epoc32/include/mw/concnf.h
epoc32/include/mw/confndr.h
epoc32/include/mw/conlist.h
epoc32/include/mw/conplugin.rh
epoc32/include/mw/crulemarkedstack.h
epoc32/include/mw/csendasaccounts.h
epoc32/include/mw/csendasmessagetypes.h
epoc32/include/mw/csmsclass0base.h
epoc32/include/mw/cstack.h
epoc32/include/mw/dtdnode.h
epoc32/include/mw/eikamnt.h
epoc32/include/mw/eikapp.h
epoc32/include/mw/eikappui.h
epoc32/include/mw/eikaufty.h
epoc32/include/mw/eikbhelp.h
epoc32/include/mw/eikcmobs.h
epoc32/include/mw/eikdef.h
epoc32/include/mw/eikdll.h
epoc32/include/mw/eikdoc.h
epoc32/include/mw/eikembal.h
epoc32/include/mw/eikenv.h
epoc32/include/mw/eikenv.inl
epoc32/include/mw/eikfctry.h
epoc32/include/mw/eikfutil.h
epoc32/include/mw/eikmobs.h
epoc32/include/mw/eikmsg.h
epoc32/include/mw/eiknotapi.h
epoc32/include/mw/eikproc.h
epoc32/include/mw/eikrutil.h
epoc32/include/mw/eikstart.h
epoc32/include/mw/eikunder.h
epoc32/include/mw/eikvcurs.h
epoc32/include/mw/estatus.h
epoc32/include/mw/fepbase.h
epoc32/include/mw/fepbconfig.h
epoc32/include/mw/fepbutils.h
epoc32/include/mw/fepplugin.h
epoc32/include/mw/fepplugin.inl
epoc32/include/mw/grdcells.h
epoc32/include/mw/grddef.h
epoc32/include/mw/grdprint.h
epoc32/include/mw/grdprint.inl
epoc32/include/mw/grdstd.h
epoc32/include/mw/grdstd.inl
epoc32/include/mw/gulalign.h
epoc32/include/mw/gulbordr.h
epoc32/include/mw/gulcolor.h
epoc32/include/mw/guldef.h
epoc32/include/mw/gulfont.h
epoc32/include/mw/gulicon.h
epoc32/include/mw/gulutil.h
epoc32/include/mw/http.h
epoc32/include/mw/http/cauthenticationfilterinterface.h
epoc32/include/mw/http/cecomfilter.h
epoc32/include/mw/http/framework/cheadercodec.h
epoc32/include/mw/http/framework/cprotocolhandler.h
epoc32/include/mw/http/framework/cprottransaction.h
epoc32/include/mw/http/framework/crxdata.h
epoc32/include/mw/http/framework/csecuritypolicy.h
epoc32/include/mw/http/framework/csecuritypolicy.inl
epoc32/include/mw/http/framework/ctxdata.h
epoc32/include/mw/http/framework/mrxdataobserver.h
epoc32/include/mw/http/framework/rheaderfield.h
epoc32/include/mw/http/mhttpauthenticationcallback.h
epoc32/include/mw/http/mhttpdatasupplier.h
epoc32/include/mw/http/mhttpfilter.h
epoc32/include/mw/http/mhttpfilterbase.h
epoc32/include/mw/http/mhttpfiltercreationcallback.h
epoc32/include/mw/http/mhttpsessioneventcallback.h
epoc32/include/mw/http/mhttptransactioncallback.h
epoc32/include/mw/http/rhttpconnectioninfo.h
epoc32/include/mw/http/rhttpfiltercollection.h
epoc32/include/mw/http/rhttpheaders.h
epoc32/include/mw/http/rhttpmessage.h
epoc32/include/mw/http/rhttppropertyset.h
epoc32/include/mw/http/rhttprequest.h
epoc32/include/mw/http/rhttpresponse.h
epoc32/include/mw/http/rhttpsession.h
epoc32/include/mw/http/rhttptransaction.h
epoc32/include/mw/http/rhttptransactionpropertyset.h
epoc32/include/mw/http/tfilterconfigurationiter.h
epoc32/include/mw/http/tfilterinformation.h
epoc32/include/mw/http/thttpevent.h
epoc32/include/mw/http/thttpevent.inl
epoc32/include/mw/http/thttpfilterhandle.h
epoc32/include/mw/http/thttpfilteriterator.h
epoc32/include/mw/http/thttpfilterregistration.h
epoc32/include/mw/http/thttphdrfielditer.h
epoc32/include/mw/http/thttphdrval.h
epoc32/include/mw/httperr.h
epoc32/include/mw/httpstd.h
epoc32/include/mw/iclanimationdataprovider.h
epoc32/include/mw/ineturi.h
epoc32/include/mw/ineturilist.h
epoc32/include/mw/ineturilistdef.h
epoc32/include/mw/ipaddr.h
epoc32/include/mw/logdef.h
epoc32/include/mw/mdataproviderobserver.h
epoc32/include/mw/mdptx.h
epoc32/include/mw/mframeworksp.h
epoc32/include/mw/mmsvattachmentmanager.h
epoc32/include/mw/mmsvattachmentmanagersync.h
epoc32/include/mw/mobexnotify.h
epoc32/include/mw/msvapi.h
epoc32/include/mw/msventry.h
epoc32/include/mw/msventryscheduledata.h
epoc32/include/mw/msvfind.h
epoc32/include/mw/msvftext.h
epoc32/include/mw/msvids.h
epoc32/include/mw/msvoffpeaktime.h
epoc32/include/mw/msvrcpt.h
epoc32/include/mw/msvreg.h
epoc32/include/mw/msvruids.h
epoc32/include/mw/msvscheduledentry.h
epoc32/include/mw/msvschedulepackage.h
epoc32/include/mw/msvschedulesend.h
epoc32/include/mw/msvschedulesettings.h
epoc32/include/mw/msvsenderroraction.h
epoc32/include/mw/msvstd.h
epoc32/include/mw/msvstore.h
epoc32/include/mw/msvsysagentaction.h
epoc32/include/mw/msvuids.h
epoc32/include/mw/mtclbase.h
epoc32/include/mw/mtclreg.h
epoc32/include/mw/mtmdef.h
epoc32/include/mw/mtmuibas.h
epoc32/include/mw/mtmuids.h
epoc32/include/mw/mtsr.h
epoc32/include/mw/mtud.rh
epoc32/include/mw/mtudcbas.h
epoc32/include/mw/mtudreg.h
epoc32/include/mw/mtuireg.h
epoc32/include/mw/mturutils.h
epoc32/include/mw/mwappluginsp.h
epoc32/include/mw/mwbxmlconverterobserver.h
epoc32/include/mw/obex.h
epoc32/include/mw/obexbase.h
epoc32/include/mw/obexbaseobject.h
epoc32/include/mw/obexbttransportinfo.h
epoc32/include/mw/obexclient.h
epoc32/include/mw/obexconstants.h
epoc32/include/mw/obexfinalpacketobserver.h
epoc32/include/mw/obexheaders.h
epoc32/include/mw/obexirtransportinfo.h
epoc32/include/mw/obexobjects.h
epoc32/include/mw/obexpanics.h
epoc32/include/mw/obexserver.h
epoc32/include/mw/obextransportinfo.h
epoc32/include/mw/obextypes.h
epoc32/include/mw/obexusbtransportinfo.h
epoc32/include/mw/playerinformationtarget.h
epoc32/include/mw/playerinformationtargetobserver.h
epoc32/include/mw/pragmamessage.h
epoc32/include/mw/prninf.h
epoc32/include/mw/prnprev.h
epoc32/include/mw/prnsetup.h
epoc32/include/mw/prnuids.h
epoc32/include/mw/remconbatterytarget.h
epoc32/include/mw/remconbatterytargetobserver.h
epoc32/include/mw/remcongroupnavigationtarget.h
epoc32/include/mw/remcongroupnavigationtargetobserver.h
epoc32/include/mw/remconmediainformationtarget.h
epoc32/include/mw/remconmediainformationtargetobserver.h
epoc32/include/mw/remconstatusapicontroller.h
epoc32/include/mw/remconstatusapicontrollerobserver.h
epoc32/include/mw/rsendas.h
epoc32/include/mw/rsendasmessage.h
epoc32/include/mw/rtcp.h
epoc32/include/mw/rtp.h
epoc32/include/mw/schedulebaseservermtm.h
epoc32/include/mw/schsend.rh
epoc32/include/mw/sdpattributefield.h
epoc32/include/mw/sdpbandwidthfield.h
epoc32/include/mw/sdpcodecconstants.h
epoc32/include/mw/sdpcodecerr.h
epoc32/include/mw/sdpcodecstringpool.h
epoc32/include/mw/sdpconnectionfield.h
epoc32/include/mw/sdpdocument.h
epoc32/include/mw/sdpfmtattributefield.h
epoc32/include/mw/sdpkeyfield.h
epoc32/include/mw/sdpmediafield.h
epoc32/include/mw/sdporiginfield.h
epoc32/include/mw/sdprepeatfield.h
epoc32/include/mw/sdprtpmapvalue.h
epoc32/include/mw/sdptimefield.h
epoc32/include/mw/sdptypedtime.h
epoc32/include/mw/sendas2.h
epoc32/include/mw/sendasserver.rh
epoc32/include/mw/sip.h
epoc32/include/mw/sip_subconevents.h
epoc32/include/mw/sip_subconevents.inl
epoc32/include/mw/sip_subconparams.h
epoc32/include/mw/sip_subconparams.inl
epoc32/include/mw/sipacceptcontactheader.h
epoc32/include/mw/sipacceptencodingheader.h
epoc32/include/mw/sipacceptheader.h
epoc32/include/mw/sipacceptlanguageheader.h
epoc32/include/mw/sipaddress.h
epoc32/include/mw/sipaddressheaderbase.h
epoc32/include/mw/sipalloweventsheader.h
epoc32/include/mw/sipallowheader.h
epoc32/include/mw/sipauthenticateheaderbase.h
epoc32/include/mw/sipauthheaderbase.h
epoc32/include/mw/sipauthorizationheader.h
epoc32/include/mw/sipauthorizationheaderbase.h
epoc32/include/mw/sipcallidheader.h
epoc32/include/mw/sipclientresolverconfigcrkeys.h
epoc32/include/mw/sipclienttransaction.h
epoc32/include/mw/sipcodecerr.h
epoc32/include/mw/sipconcreteprofileobserver.h
epoc32/include/mw/sipconnection.h
epoc32/include/mw/sipconnectionobserver.h
epoc32/include/mw/sipconnpref.h
epoc32/include/mw/sipconnpref.inl
epoc32/include/mw/sipcontactheader.h
epoc32/include/mw/sipcontentdispositionheader.h
epoc32/include/mw/sipcontentencodingheader.h
epoc32/include/mw/sipcontenttypeheader.h
epoc32/include/mw/sipcseqheader.h
epoc32/include/mw/sipdefs.h
epoc32/include/mw/sipdialog.h
epoc32/include/mw/sipdialogassocbase.h
epoc32/include/mw/siperr.h
epoc32/include/mw/sipeventheader.h
epoc32/include/mw/sipexpiresheader.h
epoc32/include/mw/sipextensionheader.h
epoc32/include/mw/sipfromheader.h
epoc32/include/mw/sipfromtoheaderbase.h
epoc32/include/mw/sipheaderbase.h
epoc32/include/mw/siphlerr.h
epoc32/include/mw/siphttpdigest.h
epoc32/include/mw/siphttpdigestchallengeobserver.h
epoc32/include/mw/siphttpdigestchallengeobserver2.h
epoc32/include/mw/sipinvitedialogassoc.h
epoc32/include/mw/sipmanagedprofile.h
epoc32/include/mw/sipmanagedprofileregistry.h
epoc32/include/mw/sipmessageelements.h
epoc32/include/mw/sipnotifydialogassoc.h
epoc32/include/mw/sipobserver.h
epoc32/include/mw/sipparameterheaderbase.h
epoc32/include/mw/sippassociateduriheader.h
epoc32/include/mw/sipprofile.h
epoc32/include/mw/sipprofilealrcontroller.h
epoc32/include/mw/sipprofilealrobserver.h
epoc32/include/mw/sipprofileregistry.h
epoc32/include/mw/sipprofileregistrybase.h
epoc32/include/mw/sipprofileregistryobserver.h
epoc32/include/mw/sipprofileservercrkeys.h
epoc32/include/mw/sipprofiletypeinfo.h
epoc32/include/mw/sipproxyauthenticateheader.h
epoc32/include/mw/sipproxyauthorizationheader.h
epoc32/include/mw/sipproxyrequireheader.h
epoc32/include/mw/siprackheader.h
epoc32/include/mw/sipreferdialogassoc.h
epoc32/include/mw/siprefertoheader.h
epoc32/include/mw/siprefresh.h
epoc32/include/mw/sipregistrationbinding.h
epoc32/include/mw/sipregistrationcontext.h
epoc32/include/mw/sipreplytoheader.h
epoc32/include/mw/siprequestelements.h
epoc32/include/mw/siprequireheader.h
epoc32/include/mw/sipresolvedclient.h
epoc32/include/mw/sipresolvedclient2.h
epoc32/include/mw/sipresponseelements.h
epoc32/include/mw/sipretryafterheader.h
epoc32/include/mw/siprouteheader.h
epoc32/include/mw/siprouteheaderbase.h
epoc32/include/mw/siprseqheader.h
epoc32/include/mw/sipsdkcrkeys.h
epoc32/include/mw/sipsecurityclientheader.h
epoc32/include/mw/sipsecurityheaderbase.h
epoc32/include/mw/sipservertransaction.h
epoc32/include/mw/sipstrings.h
epoc32/include/mw/sipsubscribedialogassoc.h
epoc32/include/mw/sipsubscriptionstateheader.h
epoc32/include/mw/sipsupportedheader.h
epoc32/include/mw/siptimestampheader.h
epoc32/include/mw/siptoheader.h
epoc32/include/mw/siptokenheaderbase.h
epoc32/include/mw/siptransactionbase.h
epoc32/include/mw/sipunsignedintheaderbase.h
epoc32/include/mw/sipunsupportedheader.h
epoc32/include/mw/sipwwwauthenticateheader.h
epoc32/include/mw/spriteanimation.h
epoc32/include/mw/swi/pkgremover.h
epoc32/include/mw/swi/pkgremovererrors.h
epoc32/include/mw/telsess.h
epoc32/include/mw/thttpfields.h
epoc32/include/mw/tmsvsystemprogress.h
epoc32/include/mw/tsendasclientpanic.h
epoc32/include/mw/tsendasmessagetypefilter.h
epoc32/include/mw/tuladdressstringtokenizer.h
epoc32/include/mw/tulpanics.h
epoc32/include/mw/tulphonenumberutils.h
epoc32/include/mw/tulstringresourcereader.h
epoc32/include/mw/tultextresourceutils.h
epoc32/include/mw/tz.h
epoc32/include/mw/tzconverter.h
epoc32/include/mw/tzdefines.h
epoc32/include/mw/tzlocalizationdatatypes.h
epoc32/include/mw/tzlocalizationdatatypes.inl
epoc32/include/mw/tzlocalizer.h
epoc32/include/mw/tzupdate.h
epoc32/include/mw/uikon/eikalsrv.h
epoc32/include/mw/viewcli.h
epoc32/include/mw/vtzrules.h
epoc32/include/mw/vwsdef.h
epoc32/include/mw/wapattrdf.h
epoc32/include/mw/wapengstd.h
epoc32/include/mw/waplog.h
epoc32/include/mw/wappdef.h
epoc32/include/mw/waptestutils.h
epoc32/include/mw/wbconverter.h
epoc32/include/mw/wsp/wsptypes.h
epoc32/include/mw/xmlelemt.h
epoc32/include/mw/xmllib.h
epoc32/include/mwappluginsp.h
epoc32/include/mwbxmlconverterobserver.h
epoc32/include/obex.h
epoc32/include/obexbase.h
epoc32/include/obexbaseobject.h
epoc32/include/obexbttransportinfo.h
epoc32/include/obexclient.h
epoc32/include/obexconstants.h
epoc32/include/obexfinalpacketobserver.h
epoc32/include/obexheaderlist.h
epoc32/include/obexheaders.h
epoc32/include/obexirtransportinfo.h
epoc32/include/obexobjects.h
epoc32/include/obexpanics.h
epoc32/include/obexserver.h
epoc32/include/obextransportinfo.h
epoc32/include/obextypes.h
epoc32/include/obexusbtransportinfo.h
epoc32/include/phbksync.h
epoc32/include/platform_paths.hrh
epoc32/include/playerinformationtarget.h
epoc32/include/playerinformationtargetobserver.h
epoc32/include/pop3cmds.h
epoc32/include/pop3set.h
epoc32/include/popcmtm.h
epoc32/include/pragmamessage.h
epoc32/include/prninf.h
epoc32/include/prnprev.h
epoc32/include/prnsetup.h
epoc32/include/prnuids.h
epoc32/include/remconbatterytarget.h
epoc32/include/remconbatterytargetobserver.h
epoc32/include/remcongroupnavigationtarget.h
epoc32/include/remcongroupnavigationtargetobserver.h
epoc32/include/remconmediainformationtarget.h
epoc32/include/remconmediainformationtargetobserver.h
epoc32/include/remconstatusapicontroller.h
epoc32/include/remconstatusapicontrollerobserver.h
epoc32/include/rsendas.h
epoc32/include/rsendasmessage.h
epoc32/include/rtcp.h
epoc32/include/rtp.h
epoc32/include/schedulebaseservermtm.h
epoc32/include/schsend.rh
epoc32/include/sdpattributefield.h
epoc32/include/sdpbandwidthfield.h
epoc32/include/sdpcodecconstants.h
epoc32/include/sdpcodecerr.h
epoc32/include/sdpcodecstringpool.h
epoc32/include/sdpconnectionfield.h
epoc32/include/sdpdocument.h
epoc32/include/sdpfmtattributefield.h
epoc32/include/sdpkeyfield.h
epoc32/include/sdpmediafield.h
epoc32/include/sdporiginfield.h
epoc32/include/sdprepeatfield.h
epoc32/include/sdprtpmapvalue.h
epoc32/include/sdptimefield.h
epoc32/include/sdptypedtime.h
epoc32/include/sendas2.h
epoc32/include/sendasserver.rh
epoc32/include/sip.h
epoc32/include/sip_subconevents.h
epoc32/include/sip_subconevents.inl
epoc32/include/sip_subconparams.h
epoc32/include/sip_subconparams.inl
epoc32/include/sipacceptcontactheader.h
epoc32/include/sipacceptencodingheader.h
epoc32/include/sipacceptheader.h
epoc32/include/sipacceptlanguageheader.h
epoc32/include/sipaddress.h
epoc32/include/sipaddressheaderbase.h
epoc32/include/sipalloweventsheader.h
epoc32/include/sipallowheader.h
epoc32/include/sipauthenticateheaderbase.h
epoc32/include/sipauthheaderbase.h
epoc32/include/sipauthorizationheader.h
epoc32/include/sipauthorizationheaderbase.h
epoc32/include/sipcallidheader.h
epoc32/include/sipclientresolverconfigcrkeys.h
epoc32/include/sipclienttransaction.h
epoc32/include/sipcodecerr.h
epoc32/include/sipconcreteprofileobserver.h
epoc32/include/sipconnection.h
epoc32/include/sipconnectionobserver.h
epoc32/include/sipconnpref.h
epoc32/include/sipconnpref.inl
epoc32/include/sipcontactheader.h
epoc32/include/sipcontentdispositionheader.h
epoc32/include/sipcontentencodingheader.h
epoc32/include/sipcontenttypeheader.h
epoc32/include/sipcseqheader.h
epoc32/include/sipdefs.h
epoc32/include/sipdialog.h
epoc32/include/sipdialogassocbase.h
epoc32/include/siperr.h
epoc32/include/sipeventheader.h
epoc32/include/sipexpiresheader.h
epoc32/include/sipextensionheader.h
epoc32/include/sipfromheader.h
epoc32/include/sipfromtoheaderbase.h
epoc32/include/sipheaderbase.h
epoc32/include/siphlerr.h
epoc32/include/siphttpdigest.h
epoc32/include/siphttpdigestchallengeobserver.h
epoc32/include/siphttpdigestchallengeobserver2.h
epoc32/include/sipinvitedialogassoc.h
epoc32/include/sipmanagedprofile.h
epoc32/include/sipmanagedprofileregistry.h
epoc32/include/sipmessageelements.h
epoc32/include/sipnotifydialogassoc.h
epoc32/include/sipobserver.h
epoc32/include/sipparameterheaderbase.h
epoc32/include/sippassociateduriheader.h
epoc32/include/sipprofile.h
epoc32/include/sipprofilealrcontroller.h
epoc32/include/sipprofilealrobserver.h
epoc32/include/sipprofileregistry.h
epoc32/include/sipprofileregistrybase.h
epoc32/include/sipprofileregistryobserver.h
epoc32/include/sipprofileservercrkeys.h
epoc32/include/sipprofiletypeinfo.h
epoc32/include/sipproxyauthenticateheader.h
epoc32/include/sipproxyauthorizationheader.h
epoc32/include/sipproxyrequireheader.h
epoc32/include/siprackheader.h
epoc32/include/sipreferdialogassoc.h
epoc32/include/siprefertoheader.h
epoc32/include/siprefresh.h
epoc32/include/sipregistrationbinding.h
epoc32/include/sipregistrationcontext.h
epoc32/include/sipreplytoheader.h
epoc32/include/siprequestelements.h
epoc32/include/siprequireheader.h
epoc32/include/sipresolvedclient.h
epoc32/include/sipresolvedclient2.h
epoc32/include/sipresponseelements.h
epoc32/include/sipretryafterheader.h
epoc32/include/siprouteheader.h
epoc32/include/siprouteheaderbase.h
epoc32/include/siprseqheader.h
epoc32/include/sipsdkcrkeys.h
epoc32/include/sipsecurityclientheader.h
epoc32/include/sipsecurityheaderbase.h
epoc32/include/sipservertransaction.h
epoc32/include/sipstrings.h
epoc32/include/sipsubscribedialogassoc.h
epoc32/include/sipsubscriptionstateheader.h
epoc32/include/sipsupportedheader.h
epoc32/include/siptimestampheader.h
epoc32/include/siptoheader.h
epoc32/include/siptokenheaderbase.h
epoc32/include/siptransactionbase.h
epoc32/include/sipunsignedintheaderbase.h
epoc32/include/sipunsupportedheader.h
epoc32/include/sipwwwauthenticateheader.h
epoc32/include/smcmmain.h
epoc32/include/smsclnt.h
epoc32/include/smscmds.h
epoc32/include/smtcmtm.h
epoc32/include/smtpcmds.h
epoc32/include/smtpset.h
epoc32/include/smut.h
epoc32/include/smuthdr.h
epoc32/include/smutset.h
epoc32/include/smutsimparam.h
epoc32/include/spriteanimation.h
epoc32/include/stdapis/boost/aligned_storage.hpp
epoc32/include/stdapis/boost/archive/detail/abi_prefix.hpp
epoc32/include/stdapis/boost/archive/detail/abi_suffix.hpp
epoc32/include/stdapis/boost/array.hpp
epoc32/include/stdapis/boost/assert.hpp
epoc32/include/stdapis/boost/bind.hpp
epoc32/include/stdapis/boost/bind/arg.hpp
epoc32/include/stdapis/boost/bind/placeholders.hpp
epoc32/include/stdapis/boost/call_traits.hpp
epoc32/include/stdapis/boost/cast.hpp
epoc32/include/stdapis/boost/compressed_pair.hpp
epoc32/include/stdapis/boost/config.hpp
epoc32/include/stdapis/boost/config/abi_prefix.hpp
epoc32/include/stdapis/boost/config/abi_suffix.hpp
epoc32/include/stdapis/boost/config/no_tr1/complex.hpp
epoc32/include/stdapis/boost/config/no_tr1/utility.hpp
epoc32/include/stdapis/boost/detail/algorithm.hpp
epoc32/include/stdapis/boost/detail/call_traits.hpp
epoc32/include/stdapis/boost/detail/compressed_pair.hpp
epoc32/include/stdapis/boost/detail/dynamic_bitset.hpp
epoc32/include/stdapis/boost/detail/iterator.hpp
epoc32/include/stdapis/boost/detail/workaround.hpp
epoc32/include/stdapis/boost/dynamic_bitset/dynamic_bitset.hpp
epoc32/include/stdapis/boost/graph/adjacency_list.hpp
epoc32/include/stdapis/boost/graph/detail/adjacency_list.hpp
epoc32/include/stdapis/boost/graph/detail/incremental_components.hpp
epoc32/include/stdapis/boost/graph/detail/is_same.hpp
epoc32/include/stdapis/boost/graph/exception.hpp
epoc32/include/stdapis/boost/graph/incremental_components.hpp
epoc32/include/stdapis/boost/graph/random.hpp
epoc32/include/stdapis/boost/iterator/detail/enable_if.hpp
epoc32/include/stdapis/boost/iterator/reverse_iterator.hpp
epoc32/include/stdapis/boost/lambda/detail/lambda_fwd.hpp
epoc32/include/stdapis/boost/lambda/detail/operators.hpp
epoc32/include/stdapis/boost/lambda/lambda.hpp
epoc32/include/stdapis/boost/limits.hpp
epoc32/include/stdapis/boost/math/complex.hpp
epoc32/include/stdapis/boost/math/complex/acosh.hpp
epoc32/include/stdapis/boost/math/complex/asinh.hpp
epoc32/include/stdapis/boost/math/complex/atanh.hpp
epoc32/include/stdapis/boost/math/special_functions/acosh.hpp
epoc32/include/stdapis/boost/math/special_functions/asinh.hpp
epoc32/include/stdapis/boost/math/special_functions/atanh.hpp
epoc32/include/stdapis/boost/mpl/and.hpp
epoc32/include/stdapis/boost/mpl/apply.hpp
epoc32/include/stdapis/boost/mpl/apply_fwd.hpp
epoc32/include/stdapis/boost/mpl/apply_wrap.hpp
epoc32/include/stdapis/boost/mpl/at.hpp
epoc32/include/stdapis/boost/mpl/aux_/advance_backward.hpp
epoc32/include/stdapis/boost/mpl/aux_/advance_forward.hpp
epoc32/include/stdapis/boost/mpl/aux_/arity.hpp
epoc32/include/stdapis/boost/mpl/aux_/at_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/begin_end_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/clear_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/config/has_apply.hpp
epoc32/include/stdapis/boost/mpl/aux_/config/preprocessor.hpp
epoc32/include/stdapis/boost/mpl/aux_/config/workaround.hpp
epoc32/include/stdapis/boost/mpl/aux_/empty_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/full_lambda.hpp
epoc32/include/stdapis/boost/mpl/aux_/has_apply.hpp
epoc32/include/stdapis/boost/mpl/aux_/has_key_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/has_tag.hpp
epoc32/include/stdapis/boost/mpl/aux_/include_preprocessed.hpp
epoc32/include/stdapis/boost/mpl/aux_/iter_fold_if_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/iter_fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/arg.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/equal_to.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/greater.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/less.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/list.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/minus.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/or.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/plus.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/quote.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/template_arity.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/times.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/vector.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessor/enum.hpp
epoc32/include/stdapis/boost/mpl/aux_/preprocessor/repeat.hpp
epoc32/include/stdapis/boost/mpl/aux_/reverse_fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/reverse_iter_fold_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/size_impl.hpp
epoc32/include/stdapis/boost/mpl/aux_/template_arity.hpp
epoc32/include/stdapis/boost/mpl/base.hpp
epoc32/include/stdapis/boost/mpl/begin_end.hpp
epoc32/include/stdapis/boost/mpl/bind.hpp
epoc32/include/stdapis/boost/mpl/bind_fwd.hpp
epoc32/include/stdapis/boost/mpl/bool.hpp
epoc32/include/stdapis/boost/mpl/clear.hpp
epoc32/include/stdapis/boost/mpl/empty.hpp
epoc32/include/stdapis/boost/mpl/equal_to.hpp
epoc32/include/stdapis/boost/mpl/for_each.hpp
epoc32/include/stdapis/boost/mpl/front.hpp
epoc32/include/stdapis/boost/mpl/identity.hpp
epoc32/include/stdapis/boost/mpl/if.hpp
epoc32/include/stdapis/boost/mpl/iterator_range.hpp
epoc32/include/stdapis/boost/mpl/lambda.hpp
epoc32/include/stdapis/boost/mpl/lambda_fwd.hpp
epoc32/include/stdapis/boost/mpl/limits/arity.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/O1_size.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/item.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/pop_front.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/preprocessed/plain/list10.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/preprocessed/plain/list20.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/push_back.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/push_front.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/size.hpp
epoc32/include/stdapis/boost/mpl/list/aux_/tag.hpp
epoc32/include/stdapis/boost/mpl/list/list10.hpp
epoc32/include/stdapis/boost/mpl/list/list20.hpp
epoc32/include/stdapis/boost/mpl/logical.hpp
epoc32/include/stdapis/boost/mpl/minus.hpp
epoc32/include/stdapis/boost/mpl/next_prior.hpp
epoc32/include/stdapis/boost/mpl/not.hpp
epoc32/include/stdapis/boost/mpl/placeholders.hpp
epoc32/include/stdapis/boost/mpl/plus.hpp
epoc32/include/stdapis/boost/mpl/quote.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/at_impl.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/begin_end_impl.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/clear_impl.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/empty_impl.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/has_key_impl.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/set0.hpp
epoc32/include/stdapis/boost/mpl/set/aux_/size_impl.hpp
epoc32/include/stdapis/boost/mpl/set/set0.hpp
epoc32/include/stdapis/boost/mpl/times.hpp
epoc32/include/stdapis/boost/mpl/transform.hpp
epoc32/include/stdapis/boost/mpl/vector.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/O1_size.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/begin_end.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/clear.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/front.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/include_preprocessed.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/item.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/pop_back.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp
epoc32/include/stdapis/boost/mpl/vector/aux_/vector0.hpp
epoc32/include/stdapis/boost/mpl/vector/vector0.hpp
epoc32/include/stdapis/boost/mpl/vector/vector10.hpp
epoc32/include/stdapis/boost/mpl/vector/vector20.hpp
epoc32/include/stdapis/boost/multi_array/algorithm.hpp
epoc32/include/stdapis/boost/multi_array/base.hpp
epoc32/include/stdapis/boost/multi_index/detail/converter.hpp
epoc32/include/stdapis/boost/multi_index/detail/has_tag.hpp
epoc32/include/stdapis/boost/multi_index/tag.hpp
epoc32/include/stdapis/boost/next_prior.hpp
epoc32/include/stdapis/boost/numeric/conversion/bounds.hpp
epoc32/include/stdapis/boost/numeric/conversion/cast.hpp
epoc32/include/stdapis/boost/numeric/conversion/conversion_traits.hpp
epoc32/include/stdapis/boost/numeric/conversion/detail/bounds.hpp
epoc32/include/stdapis/boost/numeric/conversion/detail/converter.hpp
epoc32/include/stdapis/boost/operators.hpp
epoc32/include/stdapis/boost/optional.hpp
epoc32/include/stdapis/boost/optional/optional.hpp
epoc32/include/stdapis/boost/pending/detail/disjoint_sets.hpp
epoc32/include/stdapis/boost/pending/detail/property.hpp
epoc32/include/stdapis/boost/pending/disjoint_sets.hpp
epoc32/include/stdapis/boost/pending/property.hpp
epoc32/include/stdapis/boost/preprocessor.hpp
epoc32/include/stdapis/boost/preprocessor/arithmetic/inc.hpp
epoc32/include/stdapis/boost/preprocessor/array.hpp
epoc32/include/stdapis/boost/preprocessor/array/elem.hpp
epoc32/include/stdapis/boost/preprocessor/array/insert.hpp
epoc32/include/stdapis/boost/preprocessor/array/remove.hpp
epoc32/include/stdapis/boost/preprocessor/array/replace.hpp
epoc32/include/stdapis/boost/preprocessor/array/reverse.hpp
epoc32/include/stdapis/boost/preprocessor/cat.hpp
epoc32/include/stdapis/boost/preprocessor/comma_if.hpp
epoc32/include/stdapis/boost/preprocessor/comparison/greater.hpp
epoc32/include/stdapis/boost/preprocessor/comparison/greater_equal.hpp
epoc32/include/stdapis/boost/preprocessor/comparison/less.hpp
epoc32/include/stdapis/boost/preprocessor/config/limits.hpp
epoc32/include/stdapis/boost/preprocessor/control/detail/edg/while.hpp
epoc32/include/stdapis/boost/preprocessor/control/if.hpp
epoc32/include/stdapis/boost/preprocessor/control/while.hpp
epoc32/include/stdapis/boost/preprocessor/debug/assert.hpp
epoc32/include/stdapis/boost/preprocessor/enum_params.hpp
epoc32/include/stdapis/boost/preprocessor/enum_shifted_params.hpp
epoc32/include/stdapis/boost/preprocessor/facilities/apply.hpp
epoc32/include/stdapis/boost/preprocessor/identity.hpp
epoc32/include/stdapis/boost/preprocessor/inc.hpp
epoc32/include/stdapis/boost/preprocessor/iterate.hpp
epoc32/include/stdapis/boost/preprocessor/iteration/detail/local.hpp
epoc32/include/stdapis/boost/preprocessor/iteration/iterate.hpp
epoc32/include/stdapis/boost/preprocessor/iteration/local.hpp
epoc32/include/stdapis/boost/preprocessor/list.hpp
epoc32/include/stdapis/boost/preprocessor/list/at.hpp
epoc32/include/stdapis/boost/preprocessor/list/detail/edg/fold_left.hpp
epoc32/include/stdapis/boost/preprocessor/list/detail/edg/fold_right.hpp
epoc32/include/stdapis/boost/preprocessor/list/filter.hpp
epoc32/include/stdapis/boost/preprocessor/list/first_n.hpp
epoc32/include/stdapis/boost/preprocessor/list/for_each_i.hpp
epoc32/include/stdapis/boost/preprocessor/list/for_each_product.hpp
epoc32/include/stdapis/boost/preprocessor/list/rest_n.hpp
epoc32/include/stdapis/boost/preprocessor/list/to_tuple.hpp
epoc32/include/stdapis/boost/preprocessor/logical.hpp
epoc32/include/stdapis/boost/preprocessor/logical/and.hpp
epoc32/include/stdapis/boost/preprocessor/logical/bool.hpp
epoc32/include/stdapis/boost/preprocessor/logical/not.hpp
epoc32/include/stdapis/boost/preprocessor/logical/or.hpp
epoc32/include/stdapis/boost/preprocessor/punctuation/comma_if.hpp
epoc32/include/stdapis/boost/preprocessor/repetition/detail/edg/for.hpp
epoc32/include/stdapis/boost/preprocessor/repetition/enum_params.hpp
epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted_params.hpp
epoc32/include/stdapis/boost/preprocessor/repetition/for.hpp
epoc32/include/stdapis/boost/preprocessor/repetition/repeat.hpp
epoc32/include/stdapis/boost/preprocessor/seq.hpp
epoc32/include/stdapis/boost/preprocessor/seq/cat.hpp
epoc32/include/stdapis/boost/preprocessor/seq/enum.hpp
epoc32/include/stdapis/boost/preprocessor/seq/filter.hpp
epoc32/include/stdapis/boost/preprocessor/seq/first_n.hpp
epoc32/include/stdapis/boost/preprocessor/seq/fold_left.hpp
epoc32/include/stdapis/boost/preprocessor/seq/fold_right.hpp
epoc32/include/stdapis/boost/preprocessor/seq/for_each.hpp
epoc32/include/stdapis/boost/preprocessor/seq/for_each_i.hpp
epoc32/include/stdapis/boost/preprocessor/seq/for_each_product.hpp
epoc32/include/stdapis/boost/preprocessor/seq/insert.hpp
epoc32/include/stdapis/boost/preprocessor/seq/pop_back.hpp
epoc32/include/stdapis/boost/preprocessor/seq/pop_front.hpp
epoc32/include/stdapis/boost/preprocessor/seq/push_back.hpp
epoc32/include/stdapis/boost/preprocessor/seq/push_front.hpp
epoc32/include/stdapis/boost/preprocessor/seq/remove.hpp
epoc32/include/stdapis/boost/preprocessor/seq/replace.hpp
epoc32/include/stdapis/boost/preprocessor/seq/rest_n.hpp
epoc32/include/stdapis/boost/preprocessor/seq/seq.hpp
epoc32/include/stdapis/boost/preprocessor/seq/to_tuple.hpp
epoc32/include/stdapis/boost/preprocessor/seq/transform.hpp
epoc32/include/stdapis/boost/preprocessor/slot.hpp
epoc32/include/stdapis/boost/preprocessor/slot/slot.hpp
epoc32/include/stdapis/boost/preprocessor/tuple.hpp
epoc32/include/stdapis/boost/preprocessor/tuple/elem.hpp
epoc32/include/stdapis/boost/preprocessor/tuple/reverse.hpp
epoc32/include/stdapis/boost/ptr_container/detail/is_convertible.hpp
epoc32/include/stdapis/boost/ptr_container/detail/move.hpp
epoc32/include/stdapis/boost/ptr_container/detail/throw_exception.hpp
epoc32/include/stdapis/boost/ptr_container/exception.hpp
epoc32/include/stdapis/boost/random.hpp
epoc32/include/stdapis/boost/range/empty.hpp
epoc32/include/stdapis/boost/range/iterator.hpp
epoc32/include/stdapis/boost/range/iterator_range.hpp
epoc32/include/stdapis/boost/range/reverse_iterator.hpp
epoc32/include/stdapis/boost/range/size.hpp
epoc32/include/stdapis/boost/serialization/is_abstract.hpp
epoc32/include/stdapis/boost/serialization/version.hpp
epoc32/include/stdapis/boost/throw_exception.hpp
epoc32/include/stdapis/boost/tuple/tuple.hpp
epoc32/include/stdapis/boost/type_traits/aligned_storage.hpp
epoc32/include/stdapis/boost/type_traits/conversion_traits.hpp
epoc32/include/stdapis/boost/type_traits/detail/bool_trait_def.hpp
epoc32/include/stdapis/boost/type_traits/detail/bool_trait_undef.hpp
epoc32/include/stdapis/boost/type_traits/is_abstract.hpp
epoc32/include/stdapis/boost/type_traits/is_convertible.hpp
epoc32/include/stdapis/boost/type_traits/is_same.hpp
epoc32/include/stdapis/boost/utility.hpp
epoc32/include/stdapis/boost/utility/enable_if.hpp
epoc32/include/stdapis/boost/variant.hpp
epoc32/include/stdapis/boost/variant/detail/bool_trait_def.hpp
epoc32/include/stdapis/boost/variant/detail/bool_trait_undef.hpp
epoc32/include/stdapis/boost/variant/detail/config.hpp
epoc32/include/stdapis/boost/variant/detail/move.hpp
epoc32/include/stdapis/boost/variant/variant.hpp
epoc32/include/stdapis/boost/version.hpp
epoc32/include/stdapis/float.h
epoc32/include/stdapis/stlport/algorithm
epoc32/include/stdapis/stlport/bitset
epoc32/include/stdapis/stlport/cassert
epoc32/include/stdapis/stlport/config/_gcc.h
epoc32/include/stdapis/stlport/config/stl_confix.h
epoc32/include/stdapis/stlport/config/stl_gcce.h
epoc32/include/stdapis/stlport/config/stl_rvct.h
epoc32/include/stdapis/stlport/config/stl_winscw.h
epoc32/include/stdapis/stlport/deque
epoc32/include/stdapis/stlport/exception
epoc32/include/stdapis/stlport/functional
epoc32/include/stdapis/stlport/hash_map
epoc32/include/stdapis/stlport/hash_set
epoc32/include/stdapis/stlport/ios.h
epoc32/include/stdapis/stlport/istream.h
epoc32/include/stdapis/stlport/iterator
epoc32/include/stdapis/stlport/limits
epoc32/include/stdapis/stlport/list
epoc32/include/stdapis/stlport/map
epoc32/include/stdapis/stlport/mem.h
epoc32/include/stdapis/stlport/memory
epoc32/include/stdapis/stlport/pthread_alloc
epoc32/include/stdapis/stlport/queue
epoc32/include/stdapis/stlport/rope
epoc32/include/stdapis/stlport/set
epoc32/include/stdapis/stlport/slist
epoc32/include/stdapis/stlport/stack
epoc32/include/stdapis/stlport/stdexcept
epoc32/include/stdapis/stlport/stdiostream.h
epoc32/include/stdapis/stlport/stl/_abbrevs.h
epoc32/include/stdapis/stlport/stl/_algo.c
epoc32/include/stdapis/stlport/stl/_algo.h
epoc32/include/stdapis/stlport/stl/_algobase.c
epoc32/include/stdapis/stlport/stl/_algobase.h
epoc32/include/stdapis/stlport/stl/_alloc.c
epoc32/include/stdapis/stlport/stl/_alloc.h
epoc32/include/stdapis/stlport/stl/_auto_ptr.h
epoc32/include/stdapis/stlport/stl/_bitset.c
epoc32/include/stdapis/stlport/stl/_bitset.h
epoc32/include/stdapis/stlport/stl/_bvector.h
epoc32/include/stdapis/stlport/stl/_check_config.h
epoc32/include/stdapis/stlport/stl/_cmath.h
epoc32/include/stdapis/stlport/stl/_codecvt.h
epoc32/include/stdapis/stlport/stl/_collate.h
epoc32/include/stdapis/stlport/stl/_complex.c
epoc32/include/stdapis/stlport/stl/_complex.h
epoc32/include/stdapis/stlport/stl/_config_compat_post.h
epoc32/include/stdapis/stlport/stl/_construct.h
epoc32/include/stdapis/stlport/stl/_ctraits_fns.h
epoc32/include/stdapis/stlport/stl/_cwchar.h
epoc32/include/stdapis/stlport/stl/_deque.c
epoc32/include/stdapis/stlport/stl/_exception.h
epoc32/include/stdapis/stlport/stl/_fstream.c
epoc32/include/stdapis/stlport/stl/_fstream.h
epoc32/include/stdapis/stlport/stl/_function.h
epoc32/include/stdapis/stlport/stl/_function_adaptors.h
epoc32/include/stdapis/stlport/stl/_function_base.h
epoc32/include/stdapis/stlport/stl/_hash_fun.h
epoc32/include/stdapis/stlport/stl/_hashtable.c
epoc32/include/stdapis/stlport/stl/_heap.c
epoc32/include/stdapis/stlport/stl/_heap.h
epoc32/include/stdapis/stlport/stl/_ios.c
epoc32/include/stdapis/stlport/stl/_ios.h
epoc32/include/stdapis/stlport/stl/_ios_base.h
epoc32/include/stdapis/stlport/stl/_iosfwd.h
epoc32/include/stdapis/stlport/stl/_istream.c
epoc32/include/stdapis/stlport/stl/_istream.h
epoc32/include/stdapis/stlport/stl/_istreambuf_iterator.h
epoc32/include/stdapis/stlport/stl/_iterator_base.h
epoc32/include/stdapis/stlport/stl/_iterator_old.h
epoc32/include/stdapis/stlport/stl/_limits.c
epoc32/include/stdapis/stlport/stl/_list.c
epoc32/include/stdapis/stlport/stl/_locale.h
epoc32/include/stdapis/stlport/stl/_messages_facets.h
epoc32/include/stdapis/stlport/stl/_monetary.c
epoc32/include/stdapis/stlport/stl/_monetary.h
epoc32/include/stdapis/stlport/stl/_new.h
epoc32/include/stdapis/stlport/stl/_null_stream.h
epoc32/include/stdapis/stlport/stl/_num_get.c
epoc32/include/stdapis/stlport/stl/_num_get.h
epoc32/include/stdapis/stlport/stl/_num_put.c
epoc32/include/stdapis/stlport/stl/_num_put.h
epoc32/include/stdapis/stlport/stl/_numeric.c
epoc32/include/stdapis/stlport/stl/_numeric.h
epoc32/include/stdapis/stlport/stl/_numpunct.h
epoc32/include/stdapis/stlport/stl/_ostream.c
epoc32/include/stdapis/stlport/stl/_ostream.h
epoc32/include/stdapis/stlport/stl/_ostreambuf_iterator.h
epoc32/include/stdapis/stlport/stl/_pair.h
epoc32/include/stdapis/stlport/stl/_pthread_alloc.h
epoc32/include/stdapis/stlport/stl/_ptrs_specialize.h
epoc32/include/stdapis/stlport/stl/_queue.h
epoc32/include/stdapis/stlport/stl/_range_errors.h
epoc32/include/stdapis/stlport/stl/_raw_storage_iter.h
epoc32/include/stdapis/stlport/stl/_rope.c
epoc32/include/stdapis/stlport/stl/_rope.h
epoc32/include/stdapis/stlport/stl/_slist.c
epoc32/include/stdapis/stlport/stl/_slist_base.c
epoc32/include/stdapis/stlport/stl/_slist_base.h
epoc32/include/stdapis/stlport/stl/_sstream.c
epoc32/include/stdapis/stlport/stl/_sstream.h
epoc32/include/stdapis/stlport/stl/_stack.h
epoc32/include/stdapis/stlport/stl/_stream_iterator.h
epoc32/include/stdapis/stlport/stl/_streambuf.c
epoc32/include/stdapis/stlport/stl/_streambuf.h
epoc32/include/stdapis/stlport/stl/_string.c
epoc32/include/stdapis/stlport/stl/_string_fwd.h
epoc32/include/stdapis/stlport/stl/_string_hash.h
epoc32/include/stdapis/stlport/stl/_string_io.c
epoc32/include/stdapis/stlport/stl/_string_io.h
epoc32/include/stdapis/stlport/stl/_strstream.h
epoc32/include/stdapis/stlport/stl/_tempbuf.c
epoc32/include/stdapis/stlport/stl/_tempbuf.h
epoc32/include/stdapis/stlport/stl/_threads.c
epoc32/include/stdapis/stlport/stl/_threads.h
epoc32/include/stdapis/stlport/stl/_time_facets.c
epoc32/include/stdapis/stlport/stl/_time_facets.h
epoc32/include/stdapis/stlport/stl/_tree.c
epoc32/include/stdapis/stlport/stl/_uninitialized.h
epoc32/include/stdapis/stlport/stl/_valarray.c
epoc32/include/stdapis/stlport/stl/_valarray.h
epoc32/include/stdapis/stlport/stl/_vector.c
epoc32/include/stdapis/stlport/stl/c_locale.h
epoc32/include/stdapis/stlport/stl/char_traits.h
epoc32/include/stdapis/stlport/stl/concept_checks.h
epoc32/include/stdapis/stlport/stl/debug/_debug.c
epoc32/include/stdapis/stlport/stl/debug/_debug.h
epoc32/include/stdapis/stlport/stl/msl_string.h
epoc32/include/stdapis/stlport/stl/type_traits.h
epoc32/include/stdapis/stlport/string
epoc32/include/stdapis/stlport/utility
epoc32/include/stdapis/stlport/valarray
epoc32/include/stdapis/stlport/vector
epoc32/include/stdapis/stlportv5/algorithm
epoc32/include/stdapis/stlportv5/bitset
epoc32/include/stdapis/stlportv5/cassert
epoc32/include/stdapis/stlportv5/ciso646
epoc32/include/stdapis/stlportv5/deque
epoc32/include/stdapis/stlportv5/exception
epoc32/include/stdapis/stlportv5/functional
epoc32/include/stdapis/stlportv5/hash_map
epoc32/include/stdapis/stlportv5/hash_set
epoc32/include/stdapis/stlportv5/ios.h
epoc32/include/stdapis/stlportv5/iso646.h
epoc32/include/stdapis/stlportv5/istream.h
epoc32/include/stdapis/stlportv5/iterator
epoc32/include/stdapis/stlportv5/limits
epoc32/include/stdapis/stlportv5/list
epoc32/include/stdapis/stlportv5/map
epoc32/include/stdapis/stlportv5/mem.h
epoc32/include/stdapis/stlportv5/memory
epoc32/include/stdapis/stlportv5/pthread_alloc
epoc32/include/stdapis/stlportv5/queue
epoc32/include/stdapis/stlportv5/rope
epoc32/include/stdapis/stlportv5/set
epoc32/include/stdapis/stlportv5/slist
epoc32/include/stdapis/stlportv5/stack
epoc32/include/stdapis/stlportv5/stdexcept
epoc32/include/stdapis/stlportv5/stdiostream.h
epoc32/include/stdapis/stlportv5/stl/_abbrevs.h
epoc32/include/stdapis/stlportv5/stl/_algo.c
epoc32/include/stdapis/stlportv5/stl/_algo.h
epoc32/include/stdapis/stlportv5/stl/_algobase.c
epoc32/include/stdapis/stlportv5/stl/_algobase.h
epoc32/include/stdapis/stlportv5/stl/_alloc.c
epoc32/include/stdapis/stlportv5/stl/_alloc.h
epoc32/include/stdapis/stlportv5/stl/_auto_ptr.h
epoc32/include/stdapis/stlportv5/stl/_bitset.c
epoc32/include/stdapis/stlportv5/stl/_bitset.h
epoc32/include/stdapis/stlportv5/stl/_bvector.h
epoc32/include/stdapis/stlportv5/stl/_carray.h
epoc32/include/stdapis/stlportv5/stl/_cctype.h
epoc32/include/stdapis/stlportv5/stl/_check_config.h
epoc32/include/stdapis/stlportv5/stl/_clocale.h
epoc32/include/stdapis/stlportv5/stl/_cmath.h
epoc32/include/stdapis/stlportv5/stl/_codecvt.h
epoc32/include/stdapis/stlportv5/stl/_collate.h
epoc32/include/stdapis/stlportv5/stl/_complex.c
epoc32/include/stdapis/stlportv5/stl/_complex.h
epoc32/include/stdapis/stlportv5/stl/_config_compat_post.h
epoc32/include/stdapis/stlportv5/stl/_construct.h
epoc32/include/stdapis/stlportv5/stl/_csetjmp.h
epoc32/include/stdapis/stlportv5/stl/_csignal.h
epoc32/include/stdapis/stlportv5/stl/_cstdarg.h
epoc32/include/stdapis/stlportv5/stl/_cstddef.h
epoc32/include/stdapis/stlportv5/stl/_cstdio.h
epoc32/include/stdapis/stlportv5/stl/_cstdlib.h
epoc32/include/stdapis/stlportv5/stl/_cstring.h
epoc32/include/stdapis/stlportv5/stl/_ctime.h
epoc32/include/stdapis/stlportv5/stl/_ctraits_fns.h
epoc32/include/stdapis/stlportv5/stl/_cwchar.h
epoc32/include/stdapis/stlportv5/stl/_cwctype.h
epoc32/include/stdapis/stlportv5/stl/_deque.c
epoc32/include/stdapis/stlportv5/stl/_exception.h
epoc32/include/stdapis/stlportv5/stl/_fstream.c
epoc32/include/stdapis/stlportv5/stl/_fstream.h
epoc32/include/stdapis/stlportv5/stl/_function.h
epoc32/include/stdapis/stlportv5/stl/_function_adaptors.h
epoc32/include/stdapis/stlportv5/stl/_function_base.h
epoc32/include/stdapis/stlportv5/stl/_hash_fun.h
epoc32/include/stdapis/stlportv5/stl/_hashtable.c
epoc32/include/stdapis/stlportv5/stl/_heap.c
epoc32/include/stdapis/stlportv5/stl/_heap.h
epoc32/include/stdapis/stlportv5/stl/_ios.c
epoc32/include/stdapis/stlportv5/stl/_ios.h
epoc32/include/stdapis/stlportv5/stl/_ios_base.h
epoc32/include/stdapis/stlportv5/stl/_ioserr.h
epoc32/include/stdapis/stlportv5/stl/_iosfwd.h
epoc32/include/stdapis/stlportv5/stl/_iostream_string.h
epoc32/include/stdapis/stlportv5/stl/_istream.c
epoc32/include/stdapis/stlportv5/stl/_istream.h
epoc32/include/stdapis/stlportv5/stl/_istreambuf_iterator.h
epoc32/include/stdapis/stlportv5/stl/_iterator_base.h
epoc32/include/stdapis/stlportv5/stl/_iterator_old.h
epoc32/include/stdapis/stlportv5/stl/_limits.c
epoc32/include/stdapis/stlportv5/stl/_list.c
epoc32/include/stdapis/stlportv5/stl/_locale.h
epoc32/include/stdapis/stlportv5/stl/_mbstate_t.h
epoc32/include/stdapis/stlportv5/stl/_messages_facets.h
epoc32/include/stdapis/stlportv5/stl/_monetary.c
epoc32/include/stdapis/stlportv5/stl/_monetary.h
epoc32/include/stdapis/stlportv5/stl/_move_construct_fwk.h
epoc32/include/stdapis/stlportv5/stl/_new.h
epoc32/include/stdapis/stlportv5/stl/_null_stream.h
epoc32/include/stdapis/stlportv5/stl/_num_get.c
epoc32/include/stdapis/stlportv5/stl/_num_get.h
epoc32/include/stdapis/stlportv5/stl/_num_put.c
epoc32/include/stdapis/stlportv5/stl/_num_put.h
epoc32/include/stdapis/stlportv5/stl/_numeric.c
epoc32/include/stdapis/stlportv5/stl/_numeric.h
epoc32/include/stdapis/stlportv5/stl/_numpunct.h
epoc32/include/stdapis/stlportv5/stl/_ostream.c
epoc32/include/stdapis/stlportv5/stl/_ostream.h
epoc32/include/stdapis/stlportv5/stl/_ostreambuf_iterator.h
epoc32/include/stdapis/stlportv5/stl/_pair.h
epoc32/include/stdapis/stlportv5/stl/_pthread_alloc.h
epoc32/include/stdapis/stlportv5/stl/_ptrs_specialize.h
epoc32/include/stdapis/stlportv5/stl/_queue.h
epoc32/include/stdapis/stlportv5/stl/_range_errors.h
epoc32/include/stdapis/stlportv5/stl/_raw_storage_iter.h
epoc32/include/stdapis/stlportv5/stl/_rope.c
epoc32/include/stdapis/stlportv5/stl/_rope.h
epoc32/include/stdapis/stlportv5/stl/_slist.c
epoc32/include/stdapis/stlportv5/stl/_slist_base.c
epoc32/include/stdapis/stlportv5/stl/_slist_base.h
epoc32/include/stdapis/stlportv5/stl/_sstream.c
epoc32/include/stdapis/stlportv5/stl/_sstream.h
epoc32/include/stdapis/stlportv5/stl/_stack.h
epoc32/include/stdapis/stlportv5/stl/_stdexcept.h
epoc32/include/stdapis/stlportv5/stl/_stdexcept_base.h
epoc32/include/stdapis/stlportv5/stl/_stlport_version.h
epoc32/include/stdapis/stlportv5/stl/_stream_iterator.h
epoc32/include/stdapis/stlportv5/stl/_streambuf.c
epoc32/include/stdapis/stlportv5/stl/_streambuf.h
epoc32/include/stdapis/stlportv5/stl/_string.c
epoc32/include/stdapis/stlportv5/stl/_string_base.h
epoc32/include/stdapis/stlportv5/stl/_string_fwd.h
epoc32/include/stdapis/stlportv5/stl/_string_hash.h
epoc32/include/stdapis/stlportv5/stl/_string_io.c
epoc32/include/stdapis/stlportv5/stl/_string_io.h
epoc32/include/stdapis/stlportv5/stl/_string_npos.h
epoc32/include/stdapis/stlportv5/stl/_string_operators.h
epoc32/include/stdapis/stlportv5/stl/_strstream.h
epoc32/include/stdapis/stlportv5/stl/_tempbuf.c
epoc32/include/stdapis/stlportv5/stl/_tempbuf.h
epoc32/include/stdapis/stlportv5/stl/_threads.c
epoc32/include/stdapis/stlportv5/stl/_threads.h
epoc32/include/stdapis/stlportv5/stl/_time_facets.c
epoc32/include/stdapis/stlportv5/stl/_time_facets.h
epoc32/include/stdapis/stlportv5/stl/_tree.c
epoc32/include/stdapis/stlportv5/stl/_uninitialized.h
epoc32/include/stdapis/stlportv5/stl/_unordered_map.h
epoc32/include/stdapis/stlportv5/stl/_unordered_set.h
epoc32/include/stdapis/stlportv5/stl/_valarray.c
epoc32/include/stdapis/stlportv5/stl/_valarray.h
epoc32/include/stdapis/stlportv5/stl/_vector.c
epoc32/include/stdapis/stlportv5/stl/c_locale.h
epoc32/include/stdapis/stlportv5/stl/char_traits.h
epoc32/include/stdapis/stlportv5/stl/concept_checks.h
epoc32/include/stdapis/stlportv5/stl/config/_mwerks.h
epoc32/include/stdapis/stlportv5/stl/config/_native_headers.h
epoc32/include/stdapis/stlportv5/stl/config/_system.h
epoc32/include/stdapis/stlportv5/stl/config/_windows.h
epoc32/include/stdapis/stlportv5/stl/config/compat.h
epoc32/include/stdapis/stlportv5/stl/config/features.h
epoc32/include/stdapis/stlportv5/stl/config/host.h
epoc32/include/stdapis/stlportv5/stl/config/stl_confix.h
epoc32/include/stdapis/stlportv5/stl/config/stl_gcce.h
epoc32/include/stdapis/stlportv5/stl/config/stl_rvct.h
epoc32/include/stdapis/stlportv5/stl/config/stl_winscw.h
epoc32/include/stdapis/stlportv5/stl/config/user_config.h
epoc32/include/stdapis/stlportv5/stl/msl_string.h
epoc32/include/stdapis/stlportv5/stl/type_manips.h
epoc32/include/stdapis/stlportv5/stl/type_traits.h
epoc32/include/stdapis/stlportv5/string
epoc32/include/stdapis/stlportv5/unordered_map
epoc32/include/stdapis/stlportv5/unordered_set
epoc32/include/stdapis/stlportv5/utility
epoc32/include/stdapis/stlportv5/valarray
epoc32/include/stdapis/stlportv5/vector
epoc32/include/stdapis/zconf.h
epoc32/include/stdapis/zlib.h
epoc32/include/swi/pkgremover.h
epoc32/include/swi/pkgremovererrors.h
epoc32/include/sysutil.h
epoc32/include/telsess.h
epoc32/include/template/mconf.h
epoc32/include/template/specific/iolines.h
epoc32/include/thttpfields.h
epoc32/include/tmsvsystemprogress.h
epoc32/include/tools/stlport/ciso646
epoc32/include/tools/stlport/float.h
epoc32/include/tools/stlport/iso646.h
epoc32/include/tools/stlport/stl/_carray.h
epoc32/include/tools/stlport/stl/_cctype.h
epoc32/include/tools/stlport/stl/_clocale.h
epoc32/include/tools/stlport/stl/_csetjmp.h
epoc32/include/tools/stlport/stl/_csignal.h
epoc32/include/tools/stlport/stl/_cstdarg.h
epoc32/include/tools/stlport/stl/_cstddef.h
epoc32/include/tools/stlport/stl/_cstdio.h
epoc32/include/tools/stlport/stl/_cstdlib.h
epoc32/include/tools/stlport/stl/_cstring.h
epoc32/include/tools/stlport/stl/_ctime.h
epoc32/include/tools/stlport/stl/_cwctype.h
epoc32/include/tools/stlport/stl/_ioserr.h
epoc32/include/tools/stlport/stl/_iostream_string.h
epoc32/include/tools/stlport/stl/_mbstate_t.h
epoc32/include/tools/stlport/stl/_move_construct_fwk.h
epoc32/include/tools/stlport/stl/_stdexcept.h
epoc32/include/tools/stlport/stl/_stdexcept_base.h
epoc32/include/tools/stlport/stl/_stlport_version.h
epoc32/include/tools/stlport/stl/_string_base.h
epoc32/include/tools/stlport/stl/_string_npos.h
epoc32/include/tools/stlport/stl/_string_operators.h
epoc32/include/tools/stlport/stl/_string_sum_methods.h
epoc32/include/tools/stlport/stl/_unordered_map.h
epoc32/include/tools/stlport/stl/_unordered_set.h
epoc32/include/tools/stlport/stl/config/_gcc.h
epoc32/include/tools/stlport/stl/config/_mwerks.h
epoc32/include/tools/stlport/stl/config/_native_headers.h
epoc32/include/tools/stlport/stl/config/_system.h
epoc32/include/tools/stlport/stl/config/_windows.h
epoc32/include/tools/stlport/stl/config/compat.h
epoc32/include/tools/stlport/stl/config/features.h
epoc32/include/tools/stlport/stl/config/host.h
epoc32/include/tools/stlport/stl/config/user_config.h
epoc32/include/tools/stlport/stl/debug/_debug.c
epoc32/include/tools/stlport/stl/debug/_debug.h
epoc32/include/tools/stlport/stl/debug/_string_sum_methods.h
epoc32/include/tools/stlport/stl/type_manips.h
epoc32/include/tools/stlport/unordered_map
epoc32/include/tools/stlport/unordered_set
epoc32/include/tsendasclientpanic.h
epoc32/include/tsendasmessagetypefilter.h
epoc32/include/tuladdressstringtokenizer.h
epoc32/include/tulpanics.h
epoc32/include/tulphonenumberutils.h
epoc32/include/tulstringresourcereader.h
epoc32/include/tultextresourceutils.h
epoc32/include/tz.h
epoc32/include/tzconverter.h
epoc32/include/tzdefines.h
epoc32/include/tzlocalizationdatatypes.h
epoc32/include/tzlocalizationdatatypes.inl
epoc32/include/tzlocalizer.h
epoc32/include/tzupdate.h
epoc32/include/uikon/eikalsrv.h
epoc32/include/variant/platform_paths.hrh
epoc32/include/vcal.h
epoc32/include/vcal.inl
epoc32/include/vcard.h
epoc32/include/vcard.inl
epoc32/include/versit.h
epoc32/include/versit.inl
epoc32/include/versittls.h
epoc32/include/viewcli.h
epoc32/include/vobserv.h
epoc32/include/vprop.h
epoc32/include/vprop.inl
epoc32/include/vrecur.h
epoc32/include/vrecur.inl
epoc32/include/vstaticutils.h
epoc32/include/vtoken.h
epoc32/include/vtzrules.h
epoc32/include/vuid.h
epoc32/include/vutil.h
epoc32/include/vwsdef.h
epoc32/include/wapattrdf.h
epoc32/include/wapengstd.h
epoc32/include/waplog.h
epoc32/include/wappdef.h
epoc32/include/waptestutils.h
epoc32/include/wbconverter.h
epoc32/include/wins/variantmediadef.h
epoc32/include/wsp/wsptypes.h
epoc32/include/xml/dom/xmlengattr.h
epoc32/include/xml/dom/xmlengattr.inl
epoc32/include/xml/dom/xmlengbinarycontainer.h
epoc32/include/xml/dom/xmlengbinarycontainer.inl
epoc32/include/xml/dom/xmlengcdatasection.h
epoc32/include/xml/dom/xmlengcdatasection.inl
epoc32/include/xml/dom/xmlengcharacterdata.h
epoc32/include/xml/dom/xmlengcharacterdata.inl
epoc32/include/xml/dom/xmlengchunkcontainer.h
epoc32/include/xml/dom/xmlengchunkcontainer.inl
epoc32/include/xml/dom/xmlengcomment.h
epoc32/include/xml/dom/xmlengcomment.inl
epoc32/include/xml/dom/xmlengdatacontainer.h
epoc32/include/xml/dom/xmlengdatacontainer.inl
epoc32/include/xml/dom/xmlengdataserializer.h
epoc32/include/xml/dom/xmlengdocument.h
epoc32/include/xml/dom/xmlengdocument.inl
epoc32/include/xml/dom/xmlengdocumentfragment.h
epoc32/include/xml/dom/xmlengdocumentfragment.inl
epoc32/include/xml/dom/xmlengdom.h
epoc32/include/xml/dom/xmlengdomimplementation.h
epoc32/include/xml/dom/xmlengdomparser.h
epoc32/include/xml/dom/xmlengelement.h
epoc32/include/xml/dom/xmlengelement.inl
epoc32/include/xml/dom/xmlengentityreference.h
epoc32/include/xml/dom/xmlengentityreference.inl
epoc32/include/xml/dom/xmlengerrors.h
epoc32/include/xml/dom/xmlengfilecontainer.h
epoc32/include/xml/dom/xmlengfilecontainer.inl
epoc32/include/xml/dom/xmlengnamespace.h
epoc32/include/xml/dom/xmlengnamespace.inl
epoc32/include/xml/dom/xmlengnode.h
epoc32/include/xml/dom/xmlengnode.inl
epoc32/include/xml/dom/xmlengnodefilter.h
epoc32/include/xml/dom/xmlengnodelist.h
epoc32/include/xml/dom/xmlengnodelist.inl
epoc32/include/xml/dom/xmlengnodelist_impl.h
epoc32/include/xml/dom/xmlengoutputstream.h
epoc32/include/xml/dom/xmlengprocessinginstruction.h
epoc32/include/xml/dom/xmlengprocessinginstruction.inl
epoc32/include/xml/dom/xmlengserializationoptions.h
epoc32/include/xml/dom/xmlengtext.h
epoc32/include/xml/dom/xmlengtext.inl
epoc32/include/xml/dom/xmlenguserdata.h
epoc32/include/xmlelemt.h
epoc32/include/xmlengattr.h
epoc32/include/xmlengattr.inl
epoc32/include/xmlengbinarycontainer.h
epoc32/include/xmlengbinarycontainer.inl
epoc32/include/xmlengcdatasection.h
epoc32/include/xmlengcdatasection.inl
epoc32/include/xmlengcharacterdata.h
epoc32/include/xmlengcharacterdata.inl
epoc32/include/xmlengchunkcontainer.h
epoc32/include/xmlengchunkcontainer.inl
epoc32/include/xmlengcomment.h
epoc32/include/xmlengcomment.inl
epoc32/include/xmlengdatacontainer.h
epoc32/include/xmlengdatacontainer.inl
epoc32/include/xmlengdataserializer.h
epoc32/include/xmlengdocument.h
epoc32/include/xmlengdocument.inl
epoc32/include/xmlengdocumentfragment.h
epoc32/include/xmlengdocumentfragment.inl
epoc32/include/xmlengdom.h
epoc32/include/xmlengdomimplementation.h
epoc32/include/xmlengdomparser.h
epoc32/include/xmlengelement.h
epoc32/include/xmlengelement.inl
epoc32/include/xmlengentityreference.h
epoc32/include/xmlengentityreference.inl
epoc32/include/xmlengerrors.h
epoc32/include/xmlengfilecontainer.h
epoc32/include/xmlengfilecontainer.inl
epoc32/include/xmlengnamespace.h
epoc32/include/xmlengnamespace.inl
epoc32/include/xmlengnode.h
epoc32/include/xmlengnode.inl
epoc32/include/xmlengnodefilter.h
epoc32/include/xmlengnodelist.h
epoc32/include/xmlengnodelist.inl
epoc32/include/xmlengnodelist_impl.h
epoc32/include/xmlengoutputstream.h
epoc32/include/xmlengprocessinginstruction.h
epoc32/include/xmlengprocessinginstruction.inl
epoc32/include/xmlengserializationoptions.h
epoc32/include/xmlengtext.h
epoc32/include/xmlengtext.inl
epoc32/include/xmlenguserdata.h
epoc32/include/xmllib.h
epoc32/include/zconf.h
epoc32/include/zlib.h
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/EGL/egl.h	Wed Mar 31 12:27:01 2010 +0100
     1.3 @@ -0,0 +1,52 @@
     1.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +// GLES/EGL.H
    1.18 +// 
    1.19 +//
    1.20 +
    1.21 +#ifndef __GLES_EGL_H_
    1.22 +#define __GLES_EGL_H_
    1.23 +
    1.24 +/**
    1.25 +@publishedPartner
    1.26 +
    1.27 +__OPENGLESHEADERS_LEGACY_EGL_1_1
    1.28 +
    1.29 +The purpose of this define is to allow the staged migration to
    1.30 +EGL 1.3 from EGL 1.1 taken from the perspective of OpenGL ES 1.X
    1.31 +
    1.32 +If __OPENGLESHEADERS_LEGACY_EGL_1_1 is defined, then GLES/egl.h and
    1.33 +GLES/egltypes.h will only provide the EGL 1.1 API; in particular no
    1.34 +symbols from a later version of EGL will be seen at a source code level.
    1.35 +This is considered to be legacy behaviour.  If
    1.36 +__OPENGLESHEADERS_LEGACY_EGL_1_1 is not defined, the GLES/egl.h
    1.37 +and GLES/egltypes.h header files will re-direct to the system-wide
    1.38 +EGL/egl.h. and EGL/egltypes.h respectively.
    1.39 +
    1.40 +The use of GLES/egl.h or GLES/egltypes.h by applications is considered
    1.41 +legacy behaviour because applications should instead use EGL/egl.h
    1.42 +or EGL/egltypes.h respectively.
    1.43 +
    1.44 +When this legacy behaviour is desired, the define should be placed in an
    1.45 +OEM-specific system-wide .hrh file.  Symbian product configurations
    1.46 +never set this legacy behaviour.
    1.47 +*/
    1.48 +#ifdef __OPENGLESHEADERS_LEGACY_EGL_1_1
    1.49 +#include <GLES/legacy_egl_1_1/egl.h>
    1.50 +#else
    1.51 +#include <EGL/egl.h>
    1.52 +#include <GLES/gl.h>
    1.53 +#endif
    1.54 +
    1.55 +#endif /* __GLES_EGL_H_ */
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/epoc32/include/EGL/egltypes.h	Wed Mar 31 12:27:01 2010 +0100
     2.3 @@ -0,0 +1,52 @@
     2.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     2.5 +// All rights reserved.
     2.6 +// This component and the accompanying materials are made available
     2.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     2.8 +// which accompanies this distribution, and is available
     2.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    2.10 +//
    2.11 +// Initial Contributors:
    2.12 +// Nokia Corporation - initial contribution.
    2.13 +//
    2.14 +// Contributors:
    2.15 +//
    2.16 +// Description:
    2.17 +// GLES/EGLTYPES.H
    2.18 +// 
    2.19 +//
    2.20 +
    2.21 +#ifndef __GLES_EGLTYPES_H_
    2.22 +#define __GLES_EGLTYPES_H_
    2.23 +
    2.24 +
    2.25 +/**
    2.26 +@publishedPartner
    2.27 +
    2.28 +__OPENGLESHEADERS_LEGACY_EGL_1_1
    2.29 +    
    2.30 +The purpose of this define is to allow the staged migration to
    2.31 +EGL 1.3 from EGL 1.1 taken from the perspective of OpenGL ES 1.X
    2.32 +
    2.33 +If __OPENGLESHEADERS_LEGACY_EGL_1_1 is defined, then GLES/egl.h and
    2.34 +GLES/egltypes.h will only provide the EGL 1.1 API; in particular no
    2.35 +symbols from a later version of EGL will be seen at a source code level.
    2.36 +This is considered to be legacy behaviour.  If
    2.37 +__OPENGLESHEADERS_LEGACY_EGL_1_1 is not defined, the GLES/egl.h
    2.38 +and GLES/egltypes.h header files will re-direct to the system-wide
    2.39 +EGL/egl.h. and EGL/egltypes.h respectively.
    2.40 +
    2.41 +The use of GLES/egl.h or GLES/egltypes.h by applications is considered
    2.42 +legacy behaviour because applications should instead use EGL/egl.h
    2.43 +or EGL/egltypes.h respectively.
    2.44 +
    2.45 +When this legacy behaviour is desired, the define should be placed in an
    2.46 +OEM-specific system-wide .hrh file.  Symbian product configurations
    2.47 +never set this legacy behaviour.
    2.48 +*/
    2.49 +#ifdef __OPENGLESHEADERS_LEGACY_EGL_1_1
    2.50 +#include <GLES/legacy_egl_1_1/egltypes.h>
    2.51 +#else
    2.52 +#include <EGL/egltypes.h>
    2.53 +#endif
    2.54 +
    2.55 +#endif /* __GLES_EGLTYPES_H_ */
     3.1 --- a/epoc32/include/GLES/egltypes.h	Tue Mar 16 16:12:26 2010 +0000
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,52 +0,0 @@
     3.4 -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
     3.5 -// All rights reserved.
     3.6 -// This component and the accompanying materials are made available
     3.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     3.8 -// which accompanies this distribution, and is available
     3.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    3.10 -//
    3.11 -// Initial Contributors:
    3.12 -// Nokia Corporation - initial contribution.
    3.13 -//
    3.14 -// Contributors:
    3.15 -//
    3.16 -// Description:
    3.17 -// GLES/EGLTYPES.H
    3.18 -// 
    3.19 -//
    3.20 -
    3.21 -#ifndef __GLES_EGLTYPES_H_
    3.22 -#define __GLES_EGLTYPES_H_
    3.23 -
    3.24 -
    3.25 -/**
    3.26 -@publishedPartner
    3.27 -
    3.28 -__OPENGLESHEADERS_LEGACY_EGL_1_1
    3.29 -    
    3.30 -The purpose of this define is to allow the staged migration to
    3.31 -EGL 1.3 from EGL 1.1 taken from the perspective of OpenGL ES 1.X
    3.32 -
    3.33 -If __OPENGLESHEADERS_LEGACY_EGL_1_1 is defined, then GLES/egl.h and
    3.34 -GLES/egltypes.h will only provide the EGL 1.1 API; in particular no
    3.35 -symbols from a later version of EGL will be seen at a source code level.
    3.36 -This is considered to be legacy behaviour.  If
    3.37 -__OPENGLESHEADERS_LEGACY_EGL_1_1 is not defined, the GLES/egl.h
    3.38 -and GLES/egltypes.h header files will re-direct to the system-wide
    3.39 -EGL/egl.h. and EGL/egltypes.h respectively.
    3.40 -
    3.41 -The use of GLES/egl.h or GLES/egltypes.h by applications is considered
    3.42 -legacy behaviour because applications should instead use EGL/egl.h
    3.43 -or EGL/egltypes.h respectively.
    3.44 -
    3.45 -When this legacy behaviour is desired, the define should be placed in an
    3.46 -OEM-specific system-wide .hrh file.  Symbian product configurations
    3.47 -never set this legacy behaviour.
    3.48 -*/
    3.49 -#ifdef __OPENGLESHEADERS_LEGACY_EGL_1_1
    3.50 -#include <GLES/legacy_egl_1_1/egltypes.h>
    3.51 -#else
    3.52 -#include <EGL/egltypes.h>
    3.53 -#endif
    3.54 -
    3.55 -#endif /* __GLES_EGLTYPES_H_ */
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/epoc32/include/VG/1.0/openvg.h	Wed Mar 31 12:27:01 2010 +0100
     4.3 @@ -0,0 +1,815 @@
     4.4 +/*------------------------------------------------------------------------
     4.5 + *
     4.6 + * OpenVG 1.1 Reference Implementation
     4.7 + * -------------------------------------
     4.8 + *
     4.9 + * Copyright (c) 2008 The Khronos Group Inc.
    4.10 + *
    4.11 + * Permission is hereby granted, free of charge, to any person obtaining a
    4.12 + * copy of this software and /or associated documentation files
    4.13 + * (the "Materials "), to deal in the Materials without restriction,
    4.14 + * including without limitation the rights to use, copy, modify, merge,
    4.15 + * publish, distribute, sublicense, and/or sell copies of the Materials,
    4.16 + * and to permit persons to whom the Materials are furnished to do so,
    4.17 + * subject to the following conditions: 
    4.18 + *
    4.19 + * The above copyright notice and this permission notice shall be included 
    4.20 + * in all copies or substantial portions of the Materials. 
    4.21 + *
    4.22 + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    4.23 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    4.24 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    4.25 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    4.26 + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    4.27 + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
    4.28 + * THE USE OR OTHER DEALINGS IN THE MATERIALS.
    4.29 + *
    4.30 + *//**
    4.31 + * \file
    4.32 + * \brief	OpenVG 1.1 API.
    4.33 + *//*-------------------------------------------------------------------*/
    4.34 +
    4.35 +#ifndef __VG_1_1_OPENVG_H
    4.36 +#define __VG_1_1_OPENVG_H
    4.37 +
    4.38 +#ifndef __VG_OPENVG_H_
    4.39 +#error Do not include this file directly. Use <VG/openvg.h>.
    4.40 +#endif
    4.41 +
    4.42 +/* differences from the actual sample implemtation provided by Khronos:
    4.43 +- this comment
    4.44 +- the Doxygen comment with tag 'publishedAll', and tag 'released'
    4.45 +- changing 
    4.46 +	#define VG_API_CALL extern 
    4.47 +	to 
    4.48 +	#define VG_API_CALL IMPORT_C
    4.49 +- the addition of __SOFTFP to all function prototypes
    4.50 +- the addition of VG_PATH_DATATYPE_INVALID in VGPathDatatype
    4.51 +- the addition of VG_IMAGE_FORMAT_INVALID in VGImageFormat
    4.52 +- the addition of VGeglImageKHR typedef for the VG_KHR_EGL_image extension
    4.53 + */
    4.54 +
    4.55 +/**
    4.56 +@publishedAll
    4.57 +@released
    4.58 +*/
    4.59 +
    4.60 +#ifdef __cplusplus
    4.61 +extern "C" {
    4.62 +#endif
    4.63 +
    4.64 +#include <khronos_types.h>
    4.65 +
    4.66 +#define OPENVG_VERSION_1_0 1
    4.67 +#define OPENVG_VERSION_1_1 2
    4.68 +
    4.69 +typedef khronos_float_t  VGfloat;
    4.70 +typedef khronos_int8_t   VGbyte;
    4.71 +typedef khronos_uint8_t  VGubyte;
    4.72 +typedef khronos_int16_t  VGshort;
    4.73 +typedef khronos_int32_t  VGint;
    4.74 +typedef khronos_uint32_t VGuint;
    4.75 +typedef khronos_uint32_t VGbitfield;
    4.76 +
    4.77 +typedef enum {
    4.78 +  VG_FALSE = 0,
    4.79 +  VG_TRUE  = 1
    4.80 +} VGboolean;
    4.81 +
    4.82 +#define VG_MAXSHORT ((VGshort)((~((unsigned)0)) >> 1))
    4.83 +#define VG_MAXINT ((VGint)((~((unsigned)0)) >> 1))
    4.84 +
    4.85 +typedef VGuint VGHandle;
    4.86 +
    4.87 +#define VG_INVALID_HANDLE ((VGHandle)0)
    4.88 +
    4.89 +typedef enum {
    4.90 +  VG_NO_ERROR                                 = 0,
    4.91 +  VG_BAD_HANDLE_ERROR                         = 0x1000,
    4.92 +  VG_ILLEGAL_ARGUMENT_ERROR                   = 0x1001,
    4.93 +  VG_OUT_OF_MEMORY_ERROR                      = 0x1002,
    4.94 +  VG_PATH_CAPABILITY_ERROR                    = 0x1003,
    4.95 +  VG_UNSUPPORTED_IMAGE_FORMAT_ERROR           = 0x1004,
    4.96 +  VG_UNSUPPORTED_PATH_FORMAT_ERROR            = 0x1005,
    4.97 +  VG_IMAGE_IN_USE_ERROR                       = 0x1006,
    4.98 +  VG_NO_CONTEXT_ERROR                         = 0x1007
    4.99 +} VGErrorCode;
   4.100 +
   4.101 +typedef enum {
   4.102 +  /* Mode settings */
   4.103 +  VG_MATRIX_MODE                              = 0x1100,
   4.104 +  VG_FILL_RULE                                = 0x1101,
   4.105 +  VG_IMAGE_QUALITY                            = 0x1102,
   4.106 +  VG_RENDERING_QUALITY                        = 0x1103,
   4.107 +  VG_BLEND_MODE                               = 0x1104,
   4.108 +  VG_IMAGE_MODE                               = 0x1105,
   4.109 +
   4.110 +  /* Scissoring rectangles */
   4.111 +  VG_SCISSOR_RECTS                            = 0x1106,
   4.112 +
   4.113 +  /* Color Transformation */
   4.114 +  VG_COLOR_TRANSFORM                          = 0x1170,
   4.115 +  VG_COLOR_TRANSFORM_VALUES                   = 0x1171,
   4.116 +
   4.117 +  /* Stroke parameters */
   4.118 +  VG_STROKE_LINE_WIDTH                        = 0x1110,
   4.119 +  VG_STROKE_CAP_STYLE                         = 0x1111,
   4.120 +  VG_STROKE_JOIN_STYLE                        = 0x1112,
   4.121 +  VG_STROKE_MITER_LIMIT                       = 0x1113,
   4.122 +  VG_STROKE_DASH_PATTERN                      = 0x1114,
   4.123 +  VG_STROKE_DASH_PHASE                        = 0x1115,
   4.124 +  VG_STROKE_DASH_PHASE_RESET                  = 0x1116,
   4.125 +
   4.126 +  /* Edge fill color for VG_TILE_FILL tiling mode */
   4.127 +  VG_TILE_FILL_COLOR                          = 0x1120,
   4.128 +
   4.129 +  /* Color for vgClear */
   4.130 +  VG_CLEAR_COLOR                              = 0x1121,
   4.131 +
   4.132 +  /* Glyph origin */
   4.133 +  VG_GLYPH_ORIGIN                             = 0x1122,
   4.134 +
   4.135 +  /* Enable/disable alpha masking and scissoring */
   4.136 +  VG_MASKING                                  = 0x1130,
   4.137 +  VG_SCISSORING                               = 0x1131,
   4.138 +
   4.139 +  /* Pixel layout information */
   4.140 +  VG_PIXEL_LAYOUT                             = 0x1140,
   4.141 +  VG_SCREEN_LAYOUT                            = 0x1141,
   4.142 +
   4.143 +  /* Source format selection for image filters */
   4.144 +  VG_FILTER_FORMAT_LINEAR                     = 0x1150,
   4.145 +  VG_FILTER_FORMAT_PREMULTIPLIED              = 0x1151,
   4.146 +
   4.147 +  /* Destination write enable mask for image filters */
   4.148 +  VG_FILTER_CHANNEL_MASK                      = 0x1152,
   4.149 +
   4.150 +  /* Implementation limits (read-only) */
   4.151 +  VG_MAX_SCISSOR_RECTS                        = 0x1160,
   4.152 +  VG_MAX_DASH_COUNT                           = 0x1161,
   4.153 +  VG_MAX_KERNEL_SIZE                          = 0x1162,
   4.154 +  VG_MAX_SEPARABLE_KERNEL_SIZE                = 0x1163,
   4.155 +  VG_MAX_COLOR_RAMP_STOPS                     = 0x1164,
   4.156 +  VG_MAX_IMAGE_WIDTH                          = 0x1165,
   4.157 +  VG_MAX_IMAGE_HEIGHT                         = 0x1166,
   4.158 +  VG_MAX_IMAGE_PIXELS                         = 0x1167,
   4.159 +  VG_MAX_IMAGE_BYTES                          = 0x1168,
   4.160 +  VG_MAX_FLOAT                                = 0x1169,
   4.161 +  VG_MAX_GAUSSIAN_STD_DEVIATION               = 0x116A
   4.162 +} VGParamType;
   4.163 +
   4.164 +typedef enum {
   4.165 +  VG_RENDERING_QUALITY_NONANTIALIASED         = 0x1200,
   4.166 +  VG_RENDERING_QUALITY_FASTER                 = 0x1201,
   4.167 +  VG_RENDERING_QUALITY_BETTER                 = 0x1202  /* Default */
   4.168 +} VGRenderingQuality;
   4.169 +
   4.170 +typedef enum {
   4.171 +  VG_PIXEL_LAYOUT_UNKNOWN                     = 0x1300,
   4.172 +  VG_PIXEL_LAYOUT_RGB_VERTICAL                = 0x1301,
   4.173 +  VG_PIXEL_LAYOUT_BGR_VERTICAL                = 0x1302,
   4.174 +  VG_PIXEL_LAYOUT_RGB_HORIZONTAL              = 0x1303,
   4.175 +  VG_PIXEL_LAYOUT_BGR_HORIZONTAL              = 0x1304
   4.176 +} VGPixelLayout;
   4.177 +
   4.178 +typedef enum {
   4.179 +  VG_MATRIX_PATH_USER_TO_SURFACE              = 0x1400,
   4.180 +  VG_MATRIX_IMAGE_USER_TO_SURFACE             = 0x1401,
   4.181 +  VG_MATRIX_FILL_PAINT_TO_USER                = 0x1402,
   4.182 +  VG_MATRIX_STROKE_PAINT_TO_USER              = 0x1403,
   4.183 +  VG_MATRIX_GLYPH_USER_TO_SURFACE             = 0x1404
   4.184 +} VGMatrixMode;
   4.185 +
   4.186 +typedef enum {
   4.187 +  VG_CLEAR_MASK                               = 0x1500,
   4.188 +  VG_FILL_MASK                                = 0x1501,
   4.189 +  VG_SET_MASK                                 = 0x1502,
   4.190 +  VG_UNION_MASK                               = 0x1503,
   4.191 +  VG_INTERSECT_MASK                           = 0x1504,
   4.192 +  VG_SUBTRACT_MASK                            = 0x1505
   4.193 +} VGMaskOperation;
   4.194 +
   4.195 +#define VG_PATH_FORMAT_STANDARD 0
   4.196 +
   4.197 +typedef enum {
   4.198 +  VG_PATH_DATATYPE_INVALID                    = -1,
   4.199 +  VG_PATH_DATATYPE_S_8                        =  0,
   4.200 +  VG_PATH_DATATYPE_S_16                       =  1,
   4.201 +  VG_PATH_DATATYPE_S_32                       =  2,
   4.202 +  VG_PATH_DATATYPE_F                          =  3
   4.203 +} VGPathDatatype;
   4.204 +
   4.205 +typedef enum {
   4.206 +  VG_ABSOLUTE                                 = 0,
   4.207 +  VG_RELATIVE                                 = 1
   4.208 +} VGPathAbsRel;
   4.209 +
   4.210 +typedef enum {
   4.211 +  VG_CLOSE_PATH                               = ( 0 << 1),
   4.212 +  VG_MOVE_TO                                  = ( 1 << 1),
   4.213 +  VG_LINE_TO                                  = ( 2 << 1),
   4.214 +  VG_HLINE_TO                                 = ( 3 << 1),
   4.215 +  VG_VLINE_TO                                 = ( 4 << 1),
   4.216 +  VG_QUAD_TO                                  = ( 5 << 1),
   4.217 +  VG_CUBIC_TO                                 = ( 6 << 1),
   4.218 +  VG_SQUAD_TO                                 = ( 7 << 1),
   4.219 +  VG_SCUBIC_TO                                = ( 8 << 1),
   4.220 +  VG_SCCWARC_TO                               = ( 9 << 1),
   4.221 +  VG_SCWARC_TO                                = (10 << 1),
   4.222 +  VG_LCCWARC_TO                               = (11 << 1),
   4.223 +  VG_LCWARC_TO                                = (12 << 1)
   4.224 +} VGPathSegment;
   4.225 +
   4.226 +typedef enum {
   4.227 +  VG_MOVE_TO_ABS                              = VG_MOVE_TO    | VG_ABSOLUTE,
   4.228 +  VG_MOVE_TO_REL                              = VG_MOVE_TO    | VG_RELATIVE,
   4.229 +  VG_LINE_TO_ABS                              = VG_LINE_TO    | VG_ABSOLUTE,
   4.230 +  VG_LINE_TO_REL                              = VG_LINE_TO    | VG_RELATIVE,
   4.231 +  VG_HLINE_TO_ABS                             = VG_HLINE_TO   | VG_ABSOLUTE,
   4.232 +  VG_HLINE_TO_REL                             = VG_HLINE_TO   | VG_RELATIVE,
   4.233 +  VG_VLINE_TO_ABS                             = VG_VLINE_TO   | VG_ABSOLUTE,
   4.234 +  VG_VLINE_TO_REL                             = VG_VLINE_TO   | VG_RELATIVE,
   4.235 +  VG_QUAD_TO_ABS                              = VG_QUAD_TO    | VG_ABSOLUTE,
   4.236 +  VG_QUAD_TO_REL                              = VG_QUAD_TO    | VG_RELATIVE,
   4.237 +  VG_CUBIC_TO_ABS                             = VG_CUBIC_TO   | VG_ABSOLUTE,
   4.238 +  VG_CUBIC_TO_REL                             = VG_CUBIC_TO   | VG_RELATIVE,
   4.239 +  VG_SQUAD_TO_ABS                             = VG_SQUAD_TO   | VG_ABSOLUTE,
   4.240 +  VG_SQUAD_TO_REL                             = VG_SQUAD_TO   | VG_RELATIVE,
   4.241 +  VG_SCUBIC_TO_ABS                            = VG_SCUBIC_TO  | VG_ABSOLUTE,
   4.242 +  VG_SCUBIC_TO_REL                            = VG_SCUBIC_TO  | VG_RELATIVE,
   4.243 +  VG_SCCWARC_TO_ABS                           = VG_SCCWARC_TO | VG_ABSOLUTE,
   4.244 +  VG_SCCWARC_TO_REL                           = VG_SCCWARC_TO | VG_RELATIVE,
   4.245 +  VG_SCWARC_TO_ABS                            = VG_SCWARC_TO  | VG_ABSOLUTE,
   4.246 +  VG_SCWARC_TO_REL                            = VG_SCWARC_TO  | VG_RELATIVE,
   4.247 +  VG_LCCWARC_TO_ABS                           = VG_LCCWARC_TO | VG_ABSOLUTE,
   4.248 +  VG_LCCWARC_TO_REL                           = VG_LCCWARC_TO | VG_RELATIVE,
   4.249 +  VG_LCWARC_TO_ABS                            = VG_LCWARC_TO  | VG_ABSOLUTE,
   4.250 +  VG_LCWARC_TO_REL                            = VG_LCWARC_TO  | VG_RELATIVE
   4.251 +} VGPathCommand;
   4.252 +
   4.253 +typedef VGHandle VGPath;
   4.254 +
   4.255 +typedef enum {
   4.256 +  VG_PATH_CAPABILITY_APPEND_FROM              = (1 <<  0),
   4.257 +  VG_PATH_CAPABILITY_APPEND_TO                = (1 <<  1),
   4.258 +  VG_PATH_CAPABILITY_MODIFY                   = (1 <<  2),
   4.259 +  VG_PATH_CAPABILITY_TRANSFORM_FROM           = (1 <<  3),
   4.260 +  VG_PATH_CAPABILITY_TRANSFORM_TO             = (1 <<  4),
   4.261 +  VG_PATH_CAPABILITY_INTERPOLATE_FROM         = (1 <<  5),
   4.262 +  VG_PATH_CAPABILITY_INTERPOLATE_TO           = (1 <<  6),
   4.263 +  VG_PATH_CAPABILITY_PATH_LENGTH              = (1 <<  7),
   4.264 +  VG_PATH_CAPABILITY_POINT_ALONG_PATH         = (1 <<  8),
   4.265 +  VG_PATH_CAPABILITY_TANGENT_ALONG_PATH       = (1 <<  9),
   4.266 +  VG_PATH_CAPABILITY_PATH_BOUNDS              = (1 << 10),
   4.267 +  VG_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS  = (1 << 11),
   4.268 +  VG_PATH_CAPABILITY_ALL                      = (1 << 12) - 1
   4.269 +} VGPathCapabilities;
   4.270 +
   4.271 +typedef enum {
   4.272 +  VG_PATH_FORMAT                              = 0x1600,
   4.273 +  VG_PATH_DATATYPE                            = 0x1601,
   4.274 +  VG_PATH_SCALE                               = 0x1602,
   4.275 +  VG_PATH_BIAS                                = 0x1603,
   4.276 +  VG_PATH_NUM_SEGMENTS                        = 0x1604,
   4.277 +  VG_PATH_NUM_COORDS                          = 0x1605
   4.278 +} VGPathParamType;
   4.279 +
   4.280 +typedef enum {
   4.281 +  VG_CAP_BUTT                                 = 0x1700,
   4.282 +  VG_CAP_ROUND                                = 0x1701,
   4.283 +  VG_CAP_SQUARE                               = 0x1702
   4.284 +} VGCapStyle;
   4.285 +
   4.286 +typedef enum {
   4.287 +  VG_JOIN_MITER                               = 0x1800,
   4.288 +  VG_JOIN_ROUND                               = 0x1801,
   4.289 +  VG_JOIN_BEVEL                               = 0x1802
   4.290 +} VGJoinStyle;
   4.291 +
   4.292 +typedef enum {
   4.293 +  VG_EVEN_ODD                                 = 0x1900,
   4.294 +  VG_NON_ZERO                                 = 0x1901
   4.295 +} VGFillRule;
   4.296 +
   4.297 +typedef enum {
   4.298 +  VG_STROKE_PATH                              = (1 << 0),
   4.299 +  VG_FILL_PATH                                = (1 << 1)
   4.300 +} VGPaintMode;
   4.301 +
   4.302 +typedef VGHandle VGPaint;
   4.303 +
   4.304 +typedef enum {
   4.305 +  /* Color paint parameters */
   4.306 +  VG_PAINT_TYPE                               = 0x1A00,
   4.307 +  VG_PAINT_COLOR                              = 0x1A01,
   4.308 +  VG_PAINT_COLOR_RAMP_SPREAD_MODE             = 0x1A02,
   4.309 +  VG_PAINT_COLOR_RAMP_PREMULTIPLIED           = 0x1A07,
   4.310 +  VG_PAINT_COLOR_RAMP_STOPS                   = 0x1A03,
   4.311 +
   4.312 +  /* Linear gradient paint parameters */
   4.313 +  VG_PAINT_LINEAR_GRADIENT                    = 0x1A04,
   4.314 +
   4.315 +  /* Radial gradient paint parameters */
   4.316 +  VG_PAINT_RADIAL_GRADIENT                    = 0x1A05,
   4.317 +
   4.318 +  /* Pattern paint parameters */
   4.319 +  VG_PAINT_PATTERN_TILING_MODE                = 0x1A06
   4.320 +} VGPaintParamType;
   4.321 +
   4.322 +typedef enum {
   4.323 +  VG_PAINT_TYPE_COLOR                         = 0x1B00,
   4.324 +  VG_PAINT_TYPE_LINEAR_GRADIENT               = 0x1B01,
   4.325 +  VG_PAINT_TYPE_RADIAL_GRADIENT               = 0x1B02,
   4.326 +  VG_PAINT_TYPE_PATTERN                       = 0x1B03
   4.327 +} VGPaintType;
   4.328 +
   4.329 +typedef enum {
   4.330 +  VG_COLOR_RAMP_SPREAD_PAD                    = 0x1C00,
   4.331 +  VG_COLOR_RAMP_SPREAD_REPEAT                 = 0x1C01,
   4.332 +  VG_COLOR_RAMP_SPREAD_REFLECT                = 0x1C02
   4.333 +} VGColorRampSpreadMode;
   4.334 +
   4.335 +typedef enum {
   4.336 +  VG_TILE_FILL                                = 0x1D00,
   4.337 +  VG_TILE_PAD                                 = 0x1D01,
   4.338 +  VG_TILE_REPEAT                              = 0x1D02,
   4.339 +  VG_TILE_REFLECT                             = 0x1D03
   4.340 +} VGTilingMode;
   4.341 +
   4.342 +typedef enum {
   4.343 +  /* RGB{A,X} channel ordering */
   4.344 +  VG_IMAGE_FORMAT_INVALID                     = -1,
   4.345 +  VG_sRGBX_8888                               =  0,
   4.346 +  VG_sRGBA_8888                               =  1,
   4.347 +  VG_sRGBA_8888_PRE                           =  2,
   4.348 +  VG_sRGB_565                                 =  3,
   4.349 +  VG_sRGBA_5551                               =  4,
   4.350 +  VG_sRGBA_4444                               =  5,
   4.351 +  VG_sL_8                                     =  6,
   4.352 +  VG_lRGBX_8888                               =  7,
   4.353 +  VG_lRGBA_8888                               =  8,
   4.354 +  VG_lRGBA_8888_PRE                           =  9,
   4.355 +  VG_lL_8                                     = 10,
   4.356 +  VG_A_8                                      = 11,
   4.357 +  VG_BW_1                                     = 12,
   4.358 +  VG_A_1                                      = 13,
   4.359 +  VG_A_4                                      = 14,
   4.360 +
   4.361 +  /* {A,X}RGB channel ordering */
   4.362 +  VG_sXRGB_8888                               =  0 | (1 << 6),
   4.363 +  VG_sARGB_8888                               =  1 | (1 << 6),
   4.364 +  VG_sARGB_8888_PRE                           =  2 | (1 << 6),
   4.365 +  VG_sARGB_1555                               =  4 | (1 << 6),
   4.366 +  VG_sARGB_4444                               =  5 | (1 << 6),
   4.367 +  VG_lXRGB_8888                               =  7 | (1 << 6),
   4.368 +  VG_lARGB_8888                               =  8 | (1 << 6),
   4.369 +  VG_lARGB_8888_PRE                           =  9 | (1 << 6),
   4.370 +
   4.371 +  /* BGR{A,X} channel ordering */
   4.372 +  VG_sBGRX_8888                               =  0 | (1 << 7),
   4.373 +  VG_sBGRA_8888                               =  1 | (1 << 7),
   4.374 +  VG_sBGRA_8888_PRE                           =  2 | (1 << 7),
   4.375 +  VG_sBGR_565                                 =  3 | (1 << 7),
   4.376 +  VG_sBGRA_5551                               =  4 | (1 << 7),
   4.377 +  VG_sBGRA_4444                               =  5 | (1 << 7),
   4.378 +  VG_lBGRX_8888                               =  7 | (1 << 7),
   4.379 +  VG_lBGRA_8888                               =  8 | (1 << 7),
   4.380 +  VG_lBGRA_8888_PRE                           =  9 | (1 << 7),
   4.381 +
   4.382 +  /* {A,X}BGR channel ordering */
   4.383 +  VG_sXBGR_8888                               =  0 | (1 << 6) | (1 << 7),
   4.384 +  VG_sABGR_8888                               =  1 | (1 << 6) | (1 << 7),
   4.385 +  VG_sABGR_8888_PRE                           =  2 | (1 << 6) | (1 << 7),
   4.386 +  VG_sABGR_1555                               =  4 | (1 << 6) | (1 << 7),
   4.387 +  VG_sABGR_4444                               =  5 | (1 << 6) | (1 << 7),
   4.388 +  VG_lXBGR_8888                               =  7 | (1 << 6) | (1 << 7),
   4.389 +  VG_lABGR_8888                               =  8 | (1 << 6) | (1 << 7),
   4.390 +  VG_lABGR_8888_PRE                           =  9 | (1 << 6) | (1 << 7)
   4.391 +} VGImageFormat;
   4.392 +
   4.393 +typedef VGHandle VGImage;
   4.394 +typedef int VGeglImageKHR;
   4.395 +
   4.396 +typedef enum {
   4.397 +  VG_IMAGE_QUALITY_NONANTIALIASED             = (1 << 0),
   4.398 +  VG_IMAGE_QUALITY_FASTER                     = (1 << 1),
   4.399 +  VG_IMAGE_QUALITY_BETTER                     = (1 << 2)
   4.400 +} VGImageQuality;
   4.401 +
   4.402 +typedef enum {
   4.403 +  VG_IMAGE_FORMAT                             = 0x1E00,
   4.404 +  VG_IMAGE_WIDTH                              = 0x1E01,
   4.405 +  VG_IMAGE_HEIGHT                             = 0x1E02
   4.406 +} VGImageParamType;
   4.407 +
   4.408 +typedef enum {
   4.409 +  VG_DRAW_IMAGE_NORMAL                        = 0x1F00,
   4.410 +  VG_DRAW_IMAGE_MULTIPLY                      = 0x1F01,
   4.411 +  VG_DRAW_IMAGE_STENCIL                       = 0x1F02
   4.412 +} VGImageMode;
   4.413 +
   4.414 +typedef enum {
   4.415 +  VG_RED                                      = (1 << 3),
   4.416 +  VG_GREEN                                    = (1 << 2),
   4.417 +  VG_BLUE                                     = (1 << 1),
   4.418 +  VG_ALPHA                                    = (1 << 0)
   4.419 +} VGImageChannel;
   4.420 +
   4.421 +typedef enum {
   4.422 +  VG_BLEND_SRC                                = 0x2000,
   4.423 +  VG_BLEND_SRC_OVER                           = 0x2001,
   4.424 +  VG_BLEND_DST_OVER                           = 0x2002,
   4.425 +  VG_BLEND_SRC_IN                             = 0x2003,
   4.426 +  VG_BLEND_DST_IN                             = 0x2004,
   4.427 +  VG_BLEND_MULTIPLY                           = 0x2005,
   4.428 +  VG_BLEND_SCREEN                             = 0x2006,
   4.429 +  VG_BLEND_DARKEN                             = 0x2007,
   4.430 +  VG_BLEND_LIGHTEN                            = 0x2008,
   4.431 +  VG_BLEND_ADDITIVE                           = 0x2009
   4.432 +} VGBlendMode;
   4.433 +
   4.434 +typedef enum {
   4.435 +  VG_IMAGE_FORMAT_QUERY                       = 0x2100,
   4.436 +  VG_PATH_DATATYPE_QUERY                      = 0x2101
   4.437 +} VGHardwareQueryType;
   4.438 +
   4.439 +typedef enum {
   4.440 +  VG_HARDWARE_ACCELERATED                     = 0x2200,
   4.441 +  VG_HARDWARE_UNACCELERATED                   = 0x2201
   4.442 +} VGHardwareQueryResult;
   4.443 +
   4.444 +typedef enum {
   4.445 +  VG_VENDOR                                   = 0x2300,
   4.446 +  VG_RENDERER                                 = 0x2301,
   4.447 +  VG_VERSION                                  = 0x2302,
   4.448 +  VG_EXTENSIONS                               = 0x2303
   4.449 +} VGStringID;
   4.450 +
   4.451 +typedef enum {
   4.452 +  VG_FONT_NUM_GLYPHS                          = 0x2F00
   4.453 +} VGFontParamType;
   4.454 +
   4.455 +
   4.456 +/* Function Prototypes */
   4.457 +
   4.458 +#ifndef VG_API_CALL
   4.459 +#define VG_API_CALL IMPORT_C
   4.460 +#endif
   4.461 +#ifndef VG_APIENTRY
   4.462 +#define VG_APIENTRY /* nothing */
   4.463 +#endif
   4.464 +#ifndef VG_APIEXIT
   4.465 +#define VG_APIEXIT __SOFTFP
   4.466 +#endif
   4.467 +
   4.468 +VG_API_CALL VGErrorCode VG_APIENTRY
   4.469 +    vgGetError(void) VG_APIEXIT;
   4.470 +
   4.471 +VG_API_CALL void VG_APIENTRY
   4.472 +    vgFlush(void) VG_APIEXIT;
   4.473 +VG_API_CALL void VG_APIENTRY
   4.474 +    vgFinish(void) VG_APIEXIT;
   4.475 +
   4.476 +/* Getters and Setters */
   4.477 +VG_API_CALL void VG_APIENTRY
   4.478 +   vgSetf (VGParamType type, VGfloat value) VG_APIEXIT;
   4.479 +VG_API_CALL void VG_APIENTRY
   4.480 +    vgSeti (VGParamType type, VGint value) VG_APIEXIT;
   4.481 +VG_API_CALL void VG_APIENTRY
   4.482 +    vgSetfv(VGParamType type, VGint count,
   4.483 +        const VGfloat * values) VG_APIEXIT;
   4.484 +VG_API_CALL void VG_APIENTRY
   4.485 +    vgSetiv(VGParamType type, VGint count,
   4.486 +        const VGint * values) VG_APIEXIT;
   4.487 +VG_API_CALL VGfloat VG_APIENTRY
   4.488 +    vgGetf(VGParamType type) VG_APIEXIT;
   4.489 +VG_API_CALL VGint   VG_APIENTRY
   4.490 +    vgGeti(VGParamType type) VG_APIEXIT;
   4.491 +VG_API_CALL VGint   VG_APIENTRY
   4.492 +    vgGetVectorSize(VGParamType type) VG_APIEXIT;
   4.493 +VG_API_CALL void    VG_APIENTRY
   4.494 +    vgGetfv(VGParamType type, VGint count,
   4.495 +        VGfloat * values) VG_APIEXIT;
   4.496 +VG_API_CALL void    VG_APIENTRY
   4.497 +    vgGetiv(VGParamType type, VGint count,
   4.498 +        VGint * values) VG_APIEXIT;
   4.499 +VG_API_CALL void VG_APIENTRY
   4.500 +    vgSetParameterf(VGHandle object,
   4.501 +        VGint paramType,
   4.502 +        VGfloat value) VG_APIEXIT;
   4.503 +VG_API_CALL void VG_APIENTRY
   4.504 +    vgSetParameteri(VGHandle object,
   4.505 +        VGint paramType,
   4.506 +        VGint value) VG_APIEXIT;
   4.507 +VG_API_CALL void VG_APIENTRY
   4.508 +    vgSetParameterfv(VGHandle object,
   4.509 +        VGint paramType,
   4.510 +        VGint count,
   4.511 +        const VGfloat * values) VG_APIEXIT;
   4.512 +VG_API_CALL void VG_APIENTRY
   4.513 +    vgSetParameteriv(VGHandle object,
   4.514 +        VGint paramType,
   4.515 +        VGint count,
   4.516 +        const VGint * values) VG_APIEXIT;
   4.517 +
   4.518 +VG_API_CALL VGfloat VG_APIENTRY
   4.519 +    vgGetParameterf(VGHandle object,
   4.520 +        VGint paramType) VG_APIEXIT;
   4.521 +VG_API_CALL VGint VG_APIENTRY
   4.522 +    vgGetParameteri(VGHandle object,
   4.523 +        VGint paramType) VG_APIEXIT;
   4.524 +VG_API_CALL VGint VG_APIENTRY
   4.525 +    vgGetParameterVectorSize(VGHandle object,
   4.526 +        VGint paramType) VG_APIEXIT;
   4.527 +VG_API_CALL void VG_APIENTRY
   4.528 +    vgGetParameterfv(VGHandle object,
   4.529 +        VGint paramType,
   4.530 +        VGint count,
   4.531 +        VGfloat * values) VG_APIEXIT;
   4.532 +VG_API_CALL void VG_APIENTRY
   4.533 +    vgGetParameteriv(VGHandle object,
   4.534 +        VGint paramType,
   4.535 +        VGint count,
   4.536 +        VGint * values) VG_APIEXIT;
   4.537 +
   4.538 +/* Matrix Manipulation */
   4.539 +VG_API_CALL void VG_APIENTRY
   4.540 +    vgLoadIdentity(void) VG_APIEXIT;
   4.541 +VG_API_CALL void VG_APIENTRY
   4.542 +    vgLoadMatrix(const VGfloat * m) VG_APIEXIT;
   4.543 +VG_API_CALL void VG_APIENTRY
   4.544 +    vgGetMatrix(VGfloat * m) VG_APIEXIT;
   4.545 +VG_API_CALL void VG_APIENTRY
   4.546 +    vgMultMatrix(const VGfloat * m) VG_APIEXIT;
   4.547 +VG_API_CALL void VG_APIENTRY
   4.548 +    vgTranslate(VGfloat tx, VGfloat ty) VG_APIEXIT;
   4.549 +VG_API_CALL void VG_APIENTRY
   4.550 +    vgScale(VGfloat sx, VGfloat sy) VG_APIEXIT;
   4.551 +VG_API_CALL void VG_APIENTRY
   4.552 +    vgShear(VGfloat shx, VGfloat shy) VG_APIEXIT;
   4.553 +VG_API_CALL void VG_APIENTRY
   4.554 +    vgRotate(VGfloat angle) VG_APIEXIT;
   4.555 +
   4.556 +/* Masking and Clearing */
   4.557 +typedef VGHandle VGMaskLayer;
   4.558 +
   4.559 +VG_API_CALL void VG_APIENTRY
   4.560 +    vgMask(VGHandle mask, VGMaskOperation operation,
   4.561 +        VGint x, VGint y,
   4.562 +        VGint width, VGint height) VG_APIEXIT;
   4.563 +VG_API_CALL void VG_APIENTRY
   4.564 +    vgRenderToMask(VGPath path,
   4.565 +        VGbitfield paintModes,
   4.566 +        VGMaskOperation operation) VG_APIEXIT;
   4.567 +VG_API_CALL VGMaskLayer VG_APIENTRY
   4.568 +    vgCreateMaskLayer(VGint width, VGint height) VG_APIEXIT;
   4.569 +VG_API_CALL void VG_APIENTRY
   4.570 +    vgDestroyMaskLayer(VGMaskLayer maskLayer) VG_APIEXIT;
   4.571 +VG_API_CALL void VG_APIENTRY
   4.572 +    vgFillMaskLayer(VGMaskLayer maskLayer,
   4.573 +        VGint x, VGint y,
   4.574 +        VGint width, VGint height,
   4.575 +        VGfloat value) VG_APIEXIT;
   4.576 +VG_API_CALL void VG_APIENTRY
   4.577 +    vgCopyMask(VGMaskLayer maskLayer,
   4.578 +        VGint sx, VGint sy,
   4.579 +        VGint dx, VGint dy,
   4.580 +        VGint width, VGint height) VG_APIEXIT;
   4.581 +VG_API_CALL void VG_APIENTRY
   4.582 +    vgClear(VGint x, VGint y,
   4.583 +        VGint width, VGint height) VG_APIEXIT;
   4.584 +
   4.585 +/* Paths */
   4.586 +VG_API_CALL VGPath VG_APIENTRY
   4.587 +    vgCreatePath(VGint pathFormat,
   4.588 +        VGPathDatatype datatype,
   4.589 +        VGfloat scale, VGfloat bias,
   4.590 +        VGint segmentCapacityHint,
   4.591 +        VGint coordCapacityHint,
   4.592 +        VGbitfield capabilities) VG_APIEXIT;
   4.593 +VG_API_CALL void VG_APIENTRY
   4.594 +    vgClearPath(VGPath path, VGbitfield capabilities) VG_APIEXIT;
   4.595 +VG_API_CALL void VG_APIENTRY
   4.596 +    vgDestroyPath(VGPath path) VG_APIEXIT;
   4.597 +VG_API_CALL void VG_APIENTRY
   4.598 +    vgRemovePathCapabilities(VGPath path,
   4.599 +        VGbitfield capabilities) VG_APIEXIT;
   4.600 +VG_API_CALL VGbitfield VG_APIENTRY
   4.601 +    vgGetPathCapabilities(VGPath path) VG_APIEXIT;
   4.602 +VG_API_CALL void VG_APIENTRY
   4.603 +    vgAppendPath(VGPath dstPath, VGPath srcPath) VG_APIEXIT;
   4.604 +VG_API_CALL void VG_APIENTRY
   4.605 +    vgAppendPathData(VGPath dstPath,
   4.606 +        VGint numSegments,
   4.607 +        const VGubyte * pathSegments,
   4.608 +        const void * pathData) VG_APIEXIT;
   4.609 +VG_API_CALL void VG_APIENTRY
   4.610 +    vgModifyPathCoords(VGPath dstPath,
   4.611 +        VGint startIndex,
   4.612 +        VGint numSegments,
   4.613 +        const void * pathData) VG_APIEXIT;
   4.614 +VG_API_CALL void VG_APIENTRY
   4.615 +    vgTransformPath(VGPath dstPath, VGPath srcPath) VG_APIEXIT;
   4.616 +VG_API_CALL VGboolean VG_APIENTRY
   4.617 +    vgInterpolatePath(VGPath dstPath,
   4.618 +        VGPath startPath,
   4.619 +        VGPath endPath,
   4.620 +        VGfloat amount) VG_APIEXIT;
   4.621 +VG_API_CALL VGfloat VG_APIENTRY
   4.622 +    vgPathLength(VGPath path,
   4.623 +        VGint startSegment,
   4.624 +        VGint numSegments) VG_APIEXIT;
   4.625 +VG_API_CALL void VG_APIENTRY
   4.626 +    vgPointAlongPath(VGPath path,
   4.627 +        VGint startSegment,
   4.628 +        VGint numSegments,
   4.629 +        VGfloat distance,
   4.630 +        VGfloat * x, VGfloat * y,
   4.631 +        VGfloat * tangentX,
   4.632 +        VGfloat * tangentY) VG_APIEXIT;
   4.633 +VG_API_CALL void VG_APIENTRY
   4.634 +    vgPathBounds(VGPath path,
   4.635 +        VGfloat * minX,
   4.636 +        VGfloat * minY,
   4.637 +        VGfloat * width,
   4.638 +        VGfloat * height) VG_APIEXIT;
   4.639 +VG_API_CALL void VG_APIENTRY
   4.640 +    vgPathTransformedBounds(VGPath path,
   4.641 +        VGfloat * minX,
   4.642 +        VGfloat * minY,
   4.643 +        VGfloat * width,
   4.644 +        VGfloat * height) VG_APIEXIT;
   4.645 +VG_API_CALL void VG_APIENTRY
   4.646 +    vgDrawPath(VGPath path, VGbitfield paintModes) VG_APIEXIT;
   4.647 +
   4.648 +/* Paint */
   4.649 +VG_API_CALL VGPaint VG_APIENTRY
   4.650 +    vgCreatePaint(void) VG_APIEXIT;
   4.651 +VG_API_CALL void VG_APIENTRY
   4.652 +    vgDestroyPaint(VGPaint paint) VG_APIEXIT;
   4.653 +VG_API_CALL void VG_APIENTRY
   4.654 +    vgSetPaint(VGPaint paint, VGbitfield paintModes) VG_APIEXIT;
   4.655 +VG_API_CALL VGPaint VG_APIENTRY
   4.656 +    vgGetPaint(VGPaintMode paintMode) VG_APIEXIT;
   4.657 +VG_API_CALL void VG_APIENTRY
   4.658 +    vgSetColor(VGPaint paint, VGuint rgba) VG_APIEXIT;
   4.659 +VG_API_CALL VGuint VG_APIENTRY
   4.660 +    vgGetColor(VGPaint paint) VG_APIEXIT;
   4.661 +VG_API_CALL void VG_APIENTRY
   4.662 +    vgPaintPattern(VGPaint paint, VGImage pattern) VG_APIEXIT;
   4.663 +
   4.664 +/* Images */
   4.665 +VG_API_CALL VGImage VG_APIENTRY
   4.666 +    vgCreateImage(VGImageFormat format,
   4.667 +        VGint width, VGint height,
   4.668 +        VGbitfield allowedQuality) VG_APIEXIT;
   4.669 +VG_API_CALL void VG_APIENTRY
   4.670 +    vgDestroyImage(VGImage image) VG_APIEXIT;
   4.671 +VG_API_CALL void VG_APIENTRY
   4.672 +    vgClearImage(VGImage image,
   4.673 +        VGint x, VGint y,
   4.674 +        VGint width, VGint height) VG_APIEXIT;
   4.675 +VG_API_CALL void VG_APIENTRY
   4.676 +    vgImageSubData(VGImage image,
   4.677 +        const void * data,
   4.678 +        VGint dataStride,
   4.679 +        VGImageFormat dataFormat,
   4.680 +        VGint x, VGint y,
   4.681 +        VGint width, VGint height) VG_APIEXIT;
   4.682 +VG_API_CALL void VG_APIENTRY
   4.683 +    vgGetImageSubData(VGImage image,
   4.684 +        void * data,
   4.685 +        VGint dataStride,
   4.686 +        VGImageFormat dataFormat,
   4.687 +        VGint x, VGint y,
   4.688 +        VGint width, VGint height) VG_APIEXIT;
   4.689 +VG_API_CALL VGImage VG_APIENTRY
   4.690 +    vgChildImage(VGImage parent,
   4.691 +        VGint x, VGint y,
   4.692 +        VGint width, VGint height) VG_APIEXIT;
   4.693 +VG_API_CALL VGImage VG_APIENTRY
   4.694 +    vgGetParent(VGImage image) VG_APIEXIT;
   4.695 +VG_API_CALL void VG_APIENTRY
   4.696 +    vgCopyImage(VGImage dst, VGint dx, VGint dy,
   4.697 +        VGImage src, VGint sx, VGint sy,
   4.698 +        VGint width, VGint height,
   4.699 +        VGboolean dither) VG_APIEXIT;
   4.700 +VG_API_CALL void VG_APIENTRY
   4.701 +    vgDrawImage(VGImage image) VG_APIEXIT;
   4.702 +VG_API_CALL void VG_APIENTRY
   4.703 +    vgSetPixels(VGint dx, VGint dy,
   4.704 +        VGImage src, VGint sx, VGint sy,
   4.705 +        VGint width, VGint height) VG_APIEXIT;
   4.706 +VG_API_CALL void VG_APIENTRY
   4.707 +    vgWritePixels(const void * data, VGint dataStride,
   4.708 +        VGImageFormat dataFormat,
   4.709 +        VGint dx, VGint dy,
   4.710 +        VGint width, VGint height) VG_APIEXIT;
   4.711 +VG_API_CALL void VG_APIENTRY
   4.712 +    vgGetPixels(VGImage dst, VGint dx, VGint dy,
   4.713 +        VGint sx, VGint sy,
   4.714 +        VGint width, VGint height) VG_APIEXIT;
   4.715 +VG_API_CALL void VG_APIENTRY
   4.716 +    vgReadPixels(void * data, VGint dataStride,
   4.717 +        VGImageFormat dataFormat,
   4.718 +        VGint sx, VGint sy,
   4.719 +        VGint width, VGint height) VG_APIEXIT;
   4.720 +VG_API_CALL void VG_APIENTRY
   4.721 +    vgCopyPixels(VGint dx, VGint dy,
   4.722 +        VGint sx, VGint sy,
   4.723 +        VGint width, VGint height) VG_APIEXIT;
   4.724 +
   4.725 +/* Text */
   4.726 +typedef VGHandle VGFont;
   4.727 +
   4.728 +VG_API_CALL VGFont VG_APIENTRY
   4.729 +    vgCreateFont(VGint glyphCapacityHint) VG_APIEXIT;
   4.730 +VG_API_CALL void VG_APIENTRY
   4.731 +    vgDestroyFont(VGFont font) VG_APIEXIT;
   4.732 +VG_API_CALL void VG_APIENTRY
   4.733 +    vgSetGlyphToPath(VGFont font,
   4.734 +        VGuint glyphIndex,
   4.735 +        VGPath path,
   4.736 +        VGboolean isHinted,
   4.737 +        const VGfloat glyphOrigin [2],
   4.738 +        const VGfloat escapement[2]) VG_APIEXIT;
   4.739 +VG_API_CALL void VG_APIENTRY
   4.740 +    vgSetGlyphToImage(VGFont font,
   4.741 +        VGuint glyphIndex,
   4.742 +        VGImage image,
   4.743 +        const VGfloat glyphOrigin [2],
   4.744 +        const VGfloat escapement[2]) VG_APIEXIT;
   4.745 +VG_API_CALL void VG_APIENTRY
   4.746 +    vgClearGlyph(VGFont font,
   4.747 +        VGuint glyphIndex) VG_APIEXIT;
   4.748 +VG_API_CALL void VG_APIENTRY
   4.749 +    vgDrawGlyph(VGFont font,
   4.750 +        VGuint glyphIndex,
   4.751 +        VGbitfield paintModes,
   4.752 +        VGboolean allowAutoHinting) VG_APIEXIT;
   4.753 +VG_API_CALL void VG_APIENTRY
   4.754 +    vgDrawGlyphs(VGFont font,
   4.755 +        VGint glyphCount,
   4.756 +        const VGuint * glyphIndices,
   4.757 +        const VGfloat * adjustments_x,
   4.758 +        const VGfloat * adjustments_y,
   4.759 +        VGbitfield paintModes,
   4.760 +        VGboolean allowAutoHinting) VG_APIEXIT;
   4.761 +
   4.762 +/* Image Filters */
   4.763 +VG_API_CALL void VG_APIENTRY
   4.764 +    vgColorMatrix(VGImage dst, VGImage src,
   4.765 +        const VGfloat * matrix) VG_APIEXIT;
   4.766 +VG_API_CALL void VG_APIENTRY
   4.767 +    vgConvolve(VGImage dst, VGImage src,
   4.768 +        VGint kernelWidth, VGint kernelHeight,
   4.769 +        VGint shiftX, VGint shiftY,
   4.770 +        const VGshort * kernel,
   4.771 +        VGfloat scale,
   4.772 +        VGfloat bias,
   4.773 +        VGTilingMode tilingMode) VG_APIEXIT;
   4.774 +VG_API_CALL void VG_APIENTRY
   4.775 +    vgSeparableConvolve(VGImage dst, VGImage src,
   4.776 +        VGint kernelWidth,
   4.777 +        VGint kernelHeight,
   4.778 +        VGint shiftX, VGint shiftY,
   4.779 +        const VGshort * kernelX,
   4.780 +        const VGshort * kernelY,
   4.781 +        VGfloat scale,
   4.782 +        VGfloat bias,
   4.783 +        VGTilingMode tilingMode) VG_APIEXIT;
   4.784 +VG_API_CALL void VG_APIENTRY
   4.785 +    vgGaussianBlur(VGImage dst, VGImage src,
   4.786 +        VGfloat stdDeviationX,
   4.787 +        VGfloat stdDeviationY,
   4.788 +        VGTilingMode tilingMode) VG_APIEXIT;
   4.789 +VG_API_CALL void VG_APIENTRY
   4.790 +    vgLookup(VGImage dst, VGImage src,
   4.791 +        const VGubyte * redLUT,
   4.792 +        const VGubyte * greenLUT,
   4.793 +        const VGubyte * blueLUT,
   4.794 +        const VGubyte * alphaLUT,
   4.795 +        VGboolean outputLinear,
   4.796 +        VGboolean outputPremultiplied) VG_APIEXIT;
   4.797 +VG_API_CALL void VG_APIENTRY
   4.798 +    vgLookupSingle(VGImage dst, VGImage src,
   4.799 +        const VGuint * lookupTable,
   4.800 +        VGImageChannel sourceChannel,
   4.801 +        VGboolean outputLinear,
   4.802 +        VGboolean outputPremultiplied) VG_APIEXIT;
   4.803 +
   4.804 +/* Hardware Queries */
   4.805 +VG_API_CALL VGHardwareQueryResult VG_APIENTRY
   4.806 +    vgHardwareQuery
   4.807 +        (VGHardwareQueryType key,
   4.808 +        VGint setting) VG_APIEXIT;
   4.809 +
   4.810 +/* Renderer and Extension Information */
   4.811 +VG_API_CALL const VGubyte * VG_APIENTRY
   4.812 +    vgGetString(VGStringID name) VG_APIEXIT;
   4.813 +
   4.814 +#ifdef __cplusplus
   4.815 +} /* extern "C" */
   4.816 +#endif
   4.817 +
   4.818 +#endif /* __VG_1_1_OPENVG_H */
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/epoc32/include/VG/1.0/vgu.h	Wed Mar 31 12:27:01 2010 +0100
     5.3 @@ -0,0 +1,154 @@
     5.4 +/*------------------------------------------------------------------------
     5.5 + * 
     5.6 + * VGU 1.1 Reference Implementation
     5.7 + * -------------------------------------
     5.8 + *
     5.9 + * Copyright (c) 2008 The Khronos Group Inc.
    5.10 + *
    5.11 + * Permission is hereby granted, free of charge, to any person obtaining a
    5.12 + * copy of this software and /or associated documentation files
    5.13 + * (the "Materials "), to deal in the Materials without restriction,
    5.14 + * including without limitation the rights to use, copy, modify, merge,
    5.15 + * publish, distribute, sublicense, and/or sell copies of the Materials,
    5.16 + * and to permit persons to whom the Materials are furnished to do so,
    5.17 + * subject to the following conditions: 
    5.18 + *
    5.19 + * The above copyright notice and this permission notice shall be included 
    5.20 + * in all copies or substantial portions of the Materials. 
    5.21 + *
    5.22 + * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    5.23 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    5.24 + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    5.25 + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    5.26 + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    5.27 + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
    5.28 + * THE USE OR OTHER DEALINGS IN THE MATERIALS.
    5.29 + *
    5.30 + *//**
    5.31 + * \file
    5.32 + * \brief	VGU 1.1 API.
    5.33 + *//*-------------------------------------------------------------------*/
    5.34 +
    5.35 +#ifndef __VG_1_1_VGU_H
    5.36 +#define __VG_1_1_VGU_H
    5.37 +
    5.38 +#ifndef __VG_VGU_H_
    5.39 +#error Do not include this file directly. Use <VG/vgu.h>.
    5.40 +#endif
    5.41 +
    5.42 +/* differences from the actual sample implemtation provided by Khronos:
    5.43 +- this comment
    5.44 +- the Doxygen comment with tag 'publishedAll', and tag 'released'
    5.45 +- changing 
    5.46 +	#define VG_API_CALL extern 
    5.47 +	to 
    5.48 +	#define VG_API_CALL IMPORT_C
    5.49 +- the addition of __SOFTFP in some of the function prototypes
    5.50 + */
    5.51 +
    5.52 +/**
    5.53 +@publishedAll
    5.54 +@released
    5.55 +*/
    5.56 +#ifdef __cplusplus
    5.57 +extern "C" {
    5.58 +#endif
    5.59 +
    5.60 +#include <VG/openvg.h>
    5.61 +
    5.62 +#define VGU_VERSION_1_0 1
    5.63 +#define VGU_VERSION_1_1 2
    5.64 +
    5.65 +#ifndef VGU_API_CALL
    5.66 +#define VGU_API_CALL IMPORT_C
    5.67 +#endif
    5.68 +#ifndef VGU_APIENTRY
    5.69 +#define VGU_APIENTRY /* nothing */
    5.70 +#endif
    5.71 +#ifndef VGU_APIEXIT
    5.72 +#define VGU_APIEXIT __SOFTFP
    5.73 +#endif
    5.74 +
    5.75 +typedef enum {
    5.76 +  VGU_NO_ERROR                                 = 0,
    5.77 +  VGU_BAD_HANDLE_ERROR                         = 0xF000,
    5.78 +  VGU_ILLEGAL_ARGUMENT_ERROR                   = 0xF001,
    5.79 +  VGU_OUT_OF_MEMORY_ERROR                      = 0xF002,
    5.80 +  VGU_PATH_CAPABILITY_ERROR                    = 0xF003,
    5.81 +  VGU_BAD_WARP_ERROR                           = 0xF004
    5.82 +} VGUErrorCode;
    5.83 +
    5.84 +typedef enum {
    5.85 +  VGU_ARC_OPEN                                 = 0xF100,
    5.86 +  VGU_ARC_CHORD                                = 0xF101,
    5.87 +  VGU_ARC_PIE                                  = 0xF102
    5.88 +} VGUArcType;
    5.89 +
    5.90 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
    5.91 +     vguLine(VGPath path,
    5.92 +        VGfloat x0, VGfloat y0,
    5.93 +        VGfloat x1, VGfloat y1) VGU_APIEXIT;
    5.94 +
    5.95 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
    5.96 +     vguPolygon(VGPath path,
    5.97 +        const VGfloat * points,
    5.98 +        VGint count,
    5.99 +        VGboolean closed) VGU_APIEXIT;
   5.100 +
   5.101 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.102 +     vguRect(VGPath path,
   5.103 +        VGfloat x, VGfloat y,
   5.104 +        VGfloat width, VGfloat height) VGU_APIEXIT;
   5.105 +
   5.106 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.107 +     vguRoundRect(VGPath path,
   5.108 +        VGfloat x, VGfloat y,
   5.109 +        VGfloat width,
   5.110 +        VGfloat height,
   5.111 +        VGfloat arcWidth,
   5.112 +        VGfloat arcHeight) VGU_APIEXIT;
   5.113 +
   5.114 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.115 +     vguEllipse(VGPath path,
   5.116 +        VGfloat cx, VGfloat cy,
   5.117 +        VGfloat width,
   5.118 +        VGfloat height) VGU_APIEXIT;
   5.119 +
   5.120 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.121 +     vguArc(VGPath path,
   5.122 +        VGfloat x, VGfloat y,
   5.123 +        VGfloat width, VGfloat height,
   5.124 +        VGfloat startAngle,
   5.125 +        VGfloat angleExtent,
   5.126 +        VGUArcType arcType) VGU_APIEXIT;
   5.127 +
   5.128 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.129 +    vguComputeWarpQuadToSquare(VGfloat sx0, VGfloat sy0,
   5.130 +        VGfloat sx1, VGfloat sy1,
   5.131 +        VGfloat sx2, VGfloat sy2,
   5.132 +        VGfloat sx3, VGfloat sy3,
   5.133 +        VGfloat * matrix) VGU_APIEXIT;
   5.134 +
   5.135 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.136 +    vguComputeWarpSquareToQuad(VGfloat dx0, VGfloat dy0,
   5.137 +        VGfloat dx1, VGfloat dy1,
   5.138 +        VGfloat dx2, VGfloat dy2,
   5.139 +        VGfloat dx3, VGfloat dy3,
   5.140 +        VGfloat * matrix) VGU_APIEXIT;
   5.141 +
   5.142 +VGU_API_CALL VGUErrorCode VGU_APIENTRY
   5.143 +    vguComputeWarpQuadToQuad(VGfloat dx0, VGfloat dy0,
   5.144 +        VGfloat dx1, VGfloat dy1,
   5.145 +        VGfloat dx2, VGfloat dy2,
   5.146 +        VGfloat dx3, VGfloat dy3,
   5.147 +        VGfloat sx0, VGfloat sy0,
   5.148 +        VGfloat sx1, VGfloat sy1,
   5.149 +        VGfloat sx2, VGfloat sy2,
   5.150 +        VGfloat sx3, VGfloat sy3,
   5.151 +        VGfloat * matrix) VGU_APIEXIT;
   5.152 +
   5.153 +#ifdef __cplusplus
   5.154 +} /* extern "C" */
   5.155 +#endif
   5.156 +
   5.157 +#endif /* __VG_1_1_VGU_H */
     6.1 --- a/epoc32/include/VG/1.1/openvg.h	Tue Mar 16 16:12:26 2010 +0000
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,815 +0,0 @@
     6.4 -/*------------------------------------------------------------------------
     6.5 - *
     6.6 - * OpenVG 1.1 Reference Implementation
     6.7 - * -------------------------------------
     6.8 - *
     6.9 - * Copyright (c) 2008 The Khronos Group Inc.
    6.10 - *
    6.11 - * Permission is hereby granted, free of charge, to any person obtaining a
    6.12 - * copy of this software and /or associated documentation files
    6.13 - * (the "Materials "), to deal in the Materials without restriction,
    6.14 - * including without limitation the rights to use, copy, modify, merge,
    6.15 - * publish, distribute, sublicense, and/or sell copies of the Materials,
    6.16 - * and to permit persons to whom the Materials are furnished to do so,
    6.17 - * subject to the following conditions: 
    6.18 - *
    6.19 - * The above copyright notice and this permission notice shall be included 
    6.20 - * in all copies or substantial portions of the Materials. 
    6.21 - *
    6.22 - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    6.23 - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    6.24 - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    6.25 - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    6.26 - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    6.27 - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
    6.28 - * THE USE OR OTHER DEALINGS IN THE MATERIALS.
    6.29 - *
    6.30 - *//**
    6.31 - * \file
    6.32 - * \brief	OpenVG 1.1 API.
    6.33 - *//*-------------------------------------------------------------------*/
    6.34 -
    6.35 -#ifndef __VG_1_1_OPENVG_H
    6.36 -#define __VG_1_1_OPENVG_H
    6.37 -
    6.38 -#ifndef __VG_OPENVG_H_
    6.39 -#error Do not include this file directly. Use <VG/openvg.h>.
    6.40 -#endif
    6.41 -
    6.42 -/* differences from the actual sample implemtation provided by Khronos:
    6.43 -- this comment
    6.44 -- the Doxygen comment with tag 'publishedAll', and tag 'released'
    6.45 -- changing 
    6.46 -	#define VG_API_CALL extern 
    6.47 -	to 
    6.48 -	#define VG_API_CALL IMPORT_C
    6.49 -- the addition of __SOFTFP to all function prototypes
    6.50 -- the addition of VG_PATH_DATATYPE_INVALID in VGPathDatatype
    6.51 -- the addition of VG_IMAGE_FORMAT_INVALID in VGImageFormat
    6.52 -- the addition of VGeglImageKHR typedef for the VG_KHR_EGL_image extension
    6.53 - */
    6.54 -
    6.55 -/**
    6.56 -@publishedAll
    6.57 -@released
    6.58 -*/
    6.59 -
    6.60 -#ifdef __cplusplus
    6.61 -extern "C" {
    6.62 -#endif
    6.63 -
    6.64 -#include <khronos_types.h>
    6.65 -
    6.66 -#define OPENVG_VERSION_1_0 1
    6.67 -#define OPENVG_VERSION_1_1 2
    6.68 -
    6.69 -typedef khronos_float_t  VGfloat;
    6.70 -typedef khronos_int8_t   VGbyte;
    6.71 -typedef khronos_uint8_t  VGubyte;
    6.72 -typedef khronos_int16_t  VGshort;
    6.73 -typedef khronos_int32_t  VGint;
    6.74 -typedef khronos_uint32_t VGuint;
    6.75 -typedef khronos_uint32_t VGbitfield;
    6.76 -
    6.77 -typedef enum {
    6.78 -  VG_FALSE = 0,
    6.79 -  VG_TRUE  = 1
    6.80 -} VGboolean;
    6.81 -
    6.82 -#define VG_MAXSHORT ((VGshort)((~((unsigned)0)) >> 1))
    6.83 -#define VG_MAXINT ((VGint)((~((unsigned)0)) >> 1))
    6.84 -
    6.85 -typedef VGuint VGHandle;
    6.86 -
    6.87 -#define VG_INVALID_HANDLE ((VGHandle)0)
    6.88 -
    6.89 -typedef enum {
    6.90 -  VG_NO_ERROR                                 = 0,
    6.91 -  VG_BAD_HANDLE_ERROR                         = 0x1000,
    6.92 -  VG_ILLEGAL_ARGUMENT_ERROR                   = 0x1001,
    6.93 -  VG_OUT_OF_MEMORY_ERROR                      = 0x1002,
    6.94 -  VG_PATH_CAPABILITY_ERROR                    = 0x1003,
    6.95 -  VG_UNSUPPORTED_IMAGE_FORMAT_ERROR           = 0x1004,
    6.96 -  VG_UNSUPPORTED_PATH_FORMAT_ERROR            = 0x1005,
    6.97 -  VG_IMAGE_IN_USE_ERROR                       = 0x1006,
    6.98 -  VG_NO_CONTEXT_ERROR                         = 0x1007
    6.99 -} VGErrorCode;
   6.100 -
   6.101 -typedef enum {
   6.102 -  /* Mode settings */
   6.103 -  VG_MATRIX_MODE                              = 0x1100,
   6.104 -  VG_FILL_RULE                                = 0x1101,
   6.105 -  VG_IMAGE_QUALITY                            = 0x1102,
   6.106 -  VG_RENDERING_QUALITY                        = 0x1103,
   6.107 -  VG_BLEND_MODE                               = 0x1104,
   6.108 -  VG_IMAGE_MODE                               = 0x1105,
   6.109 -
   6.110 -  /* Scissoring rectangles */
   6.111 -  VG_SCISSOR_RECTS                            = 0x1106,
   6.112 -
   6.113 -  /* Color Transformation */
   6.114 -  VG_COLOR_TRANSFORM                          = 0x1170,
   6.115 -  VG_COLOR_TRANSFORM_VALUES                   = 0x1171,
   6.116 -
   6.117 -  /* Stroke parameters */
   6.118 -  VG_STROKE_LINE_WIDTH                        = 0x1110,
   6.119 -  VG_STROKE_CAP_STYLE                         = 0x1111,
   6.120 -  VG_STROKE_JOIN_STYLE                        = 0x1112,
   6.121 -  VG_STROKE_MITER_LIMIT                       = 0x1113,
   6.122 -  VG_STROKE_DASH_PATTERN                      = 0x1114,
   6.123 -  VG_STROKE_DASH_PHASE                        = 0x1115,
   6.124 -  VG_STROKE_DASH_PHASE_RESET                  = 0x1116,
   6.125 -
   6.126 -  /* Edge fill color for VG_TILE_FILL tiling mode */
   6.127 -  VG_TILE_FILL_COLOR                          = 0x1120,
   6.128 -
   6.129 -  /* Color for vgClear */
   6.130 -  VG_CLEAR_COLOR                              = 0x1121,
   6.131 -
   6.132 -  /* Glyph origin */
   6.133 -  VG_GLYPH_ORIGIN                             = 0x1122,
   6.134 -
   6.135 -  /* Enable/disable alpha masking and scissoring */
   6.136 -  VG_MASKING                                  = 0x1130,
   6.137 -  VG_SCISSORING                               = 0x1131,
   6.138 -
   6.139 -  /* Pixel layout information */
   6.140 -  VG_PIXEL_LAYOUT                             = 0x1140,
   6.141 -  VG_SCREEN_LAYOUT                            = 0x1141,
   6.142 -
   6.143 -  /* Source format selection for image filters */
   6.144 -  VG_FILTER_FORMAT_LINEAR                     = 0x1150,
   6.145 -  VG_FILTER_FORMAT_PREMULTIPLIED              = 0x1151,
   6.146 -
   6.147 -  /* Destination write enable mask for image filters */
   6.148 -  VG_FILTER_CHANNEL_MASK                      = 0x1152,
   6.149 -
   6.150 -  /* Implementation limits (read-only) */
   6.151 -  VG_MAX_SCISSOR_RECTS                        = 0x1160,
   6.152 -  VG_MAX_DASH_COUNT                           = 0x1161,
   6.153 -  VG_MAX_KERNEL_SIZE                          = 0x1162,
   6.154 -  VG_MAX_SEPARABLE_KERNEL_SIZE                = 0x1163,
   6.155 -  VG_MAX_COLOR_RAMP_STOPS                     = 0x1164,
   6.156 -  VG_MAX_IMAGE_WIDTH                          = 0x1165,
   6.157 -  VG_MAX_IMAGE_HEIGHT                         = 0x1166,
   6.158 -  VG_MAX_IMAGE_PIXELS                         = 0x1167,
   6.159 -  VG_MAX_IMAGE_BYTES                          = 0x1168,
   6.160 -  VG_MAX_FLOAT                                = 0x1169,
   6.161 -  VG_MAX_GAUSSIAN_STD_DEVIATION               = 0x116A
   6.162 -} VGParamType;
   6.163 -
   6.164 -typedef enum {
   6.165 -  VG_RENDERING_QUALITY_NONANTIALIASED         = 0x1200,
   6.166 -  VG_RENDERING_QUALITY_FASTER                 = 0x1201,
   6.167 -  VG_RENDERING_QUALITY_BETTER                 = 0x1202  /* Default */
   6.168 -} VGRenderingQuality;
   6.169 -
   6.170 -typedef enum {
   6.171 -  VG_PIXEL_LAYOUT_UNKNOWN                     = 0x1300,
   6.172 -  VG_PIXEL_LAYOUT_RGB_VERTICAL                = 0x1301,
   6.173 -  VG_PIXEL_LAYOUT_BGR_VERTICAL                = 0x1302,
   6.174 -  VG_PIXEL_LAYOUT_RGB_HORIZONTAL              = 0x1303,
   6.175 -  VG_PIXEL_LAYOUT_BGR_HORIZONTAL              = 0x1304
   6.176 -} VGPixelLayout;
   6.177 -
   6.178 -typedef enum {
   6.179 -  VG_MATRIX_PATH_USER_TO_SURFACE              = 0x1400,
   6.180 -  VG_MATRIX_IMAGE_USER_TO_SURFACE             = 0x1401,
   6.181 -  VG_MATRIX_FILL_PAINT_TO_USER                = 0x1402,
   6.182 -  VG_MATRIX_STROKE_PAINT_TO_USER              = 0x1403,
   6.183 -  VG_MATRIX_GLYPH_USER_TO_SURFACE             = 0x1404
   6.184 -} VGMatrixMode;
   6.185 -
   6.186 -typedef enum {
   6.187 -  VG_CLEAR_MASK                               = 0x1500,
   6.188 -  VG_FILL_MASK                                = 0x1501,
   6.189 -  VG_SET_MASK                                 = 0x1502,
   6.190 -  VG_UNION_MASK                               = 0x1503,
   6.191 -  VG_INTERSECT_MASK                           = 0x1504,
   6.192 -  VG_SUBTRACT_MASK                            = 0x1505
   6.193 -} VGMaskOperation;
   6.194 -
   6.195 -#define VG_PATH_FORMAT_STANDARD 0
   6.196 -
   6.197 -typedef enum {
   6.198 -  VG_PATH_DATATYPE_INVALID                    = -1,
   6.199 -  VG_PATH_DATATYPE_S_8                        =  0,
   6.200 -  VG_PATH_DATATYPE_S_16                       =  1,
   6.201 -  VG_PATH_DATATYPE_S_32                       =  2,
   6.202 -  VG_PATH_DATATYPE_F                          =  3
   6.203 -} VGPathDatatype;
   6.204 -
   6.205 -typedef enum {
   6.206 -  VG_ABSOLUTE                                 = 0,
   6.207 -  VG_RELATIVE                                 = 1
   6.208 -} VGPathAbsRel;
   6.209 -
   6.210 -typedef enum {
   6.211 -  VG_CLOSE_PATH                               = ( 0 << 1),
   6.212 -  VG_MOVE_TO                                  = ( 1 << 1),
   6.213 -  VG_LINE_TO                                  = ( 2 << 1),
   6.214 -  VG_HLINE_TO                                 = ( 3 << 1),
   6.215 -  VG_VLINE_TO                                 = ( 4 << 1),
   6.216 -  VG_QUAD_TO                                  = ( 5 << 1),
   6.217 -  VG_CUBIC_TO                                 = ( 6 << 1),
   6.218 -  VG_SQUAD_TO                                 = ( 7 << 1),
   6.219 -  VG_SCUBIC_TO                                = ( 8 << 1),
   6.220 -  VG_SCCWARC_TO                               = ( 9 << 1),
   6.221 -  VG_SCWARC_TO                                = (10 << 1),
   6.222 -  VG_LCCWARC_TO                               = (11 << 1),
   6.223 -  VG_LCWARC_TO                                = (12 << 1)
   6.224 -} VGPathSegment;
   6.225 -
   6.226 -typedef enum {
   6.227 -  VG_MOVE_TO_ABS                              = VG_MOVE_TO    | VG_ABSOLUTE,
   6.228 -  VG_MOVE_TO_REL                              = VG_MOVE_TO    | VG_RELATIVE,
   6.229 -  VG_LINE_TO_ABS                              = VG_LINE_TO    | VG_ABSOLUTE,
   6.230 -  VG_LINE_TO_REL                              = VG_LINE_TO    | VG_RELATIVE,
   6.231 -  VG_HLINE_TO_ABS                             = VG_HLINE_TO   | VG_ABSOLUTE,
   6.232 -  VG_HLINE_TO_REL                             = VG_HLINE_TO   | VG_RELATIVE,
   6.233 -  VG_VLINE_TO_ABS                             = VG_VLINE_TO   | VG_ABSOLUTE,
   6.234 -  VG_VLINE_TO_REL                             = VG_VLINE_TO   | VG_RELATIVE,
   6.235 -  VG_QUAD_TO_ABS                              = VG_QUAD_TO    | VG_ABSOLUTE,
   6.236 -  VG_QUAD_TO_REL                              = VG_QUAD_TO    | VG_RELATIVE,
   6.237 -  VG_CUBIC_TO_ABS                             = VG_CUBIC_TO   | VG_ABSOLUTE,
   6.238 -  VG_CUBIC_TO_REL                             = VG_CUBIC_TO   | VG_RELATIVE,
   6.239 -  VG_SQUAD_TO_ABS                             = VG_SQUAD_TO   | VG_ABSOLUTE,
   6.240 -  VG_SQUAD_TO_REL                             = VG_SQUAD_TO   | VG_RELATIVE,
   6.241 -  VG_SCUBIC_TO_ABS                            = VG_SCUBIC_TO  | VG_ABSOLUTE,
   6.242 -  VG_SCUBIC_TO_REL                            = VG_SCUBIC_TO  | VG_RELATIVE,
   6.243 -  VG_SCCWARC_TO_ABS                           = VG_SCCWARC_TO | VG_ABSOLUTE,
   6.244 -  VG_SCCWARC_TO_REL                           = VG_SCCWARC_TO | VG_RELATIVE,
   6.245 -  VG_SCWARC_TO_ABS                            = VG_SCWARC_TO  | VG_ABSOLUTE,
   6.246 -  VG_SCWARC_TO_REL                            = VG_SCWARC_TO  | VG_RELATIVE,
   6.247 -  VG_LCCWARC_TO_ABS                           = VG_LCCWARC_TO | VG_ABSOLUTE,
   6.248 -  VG_LCCWARC_TO_REL                           = VG_LCCWARC_TO | VG_RELATIVE,
   6.249 -  VG_LCWARC_TO_ABS                            = VG_LCWARC_TO  | VG_ABSOLUTE,
   6.250 -  VG_LCWARC_TO_REL                            = VG_LCWARC_TO  | VG_RELATIVE
   6.251 -} VGPathCommand;
   6.252 -
   6.253 -typedef VGHandle VGPath;
   6.254 -
   6.255 -typedef enum {
   6.256 -  VG_PATH_CAPABILITY_APPEND_FROM              = (1 <<  0),
   6.257 -  VG_PATH_CAPABILITY_APPEND_TO                = (1 <<  1),
   6.258 -  VG_PATH_CAPABILITY_MODIFY                   = (1 <<  2),
   6.259 -  VG_PATH_CAPABILITY_TRANSFORM_FROM           = (1 <<  3),
   6.260 -  VG_PATH_CAPABILITY_TRANSFORM_TO             = (1 <<  4),
   6.261 -  VG_PATH_CAPABILITY_INTERPOLATE_FROM         = (1 <<  5),
   6.262 -  VG_PATH_CAPABILITY_INTERPOLATE_TO           = (1 <<  6),
   6.263 -  VG_PATH_CAPABILITY_PATH_LENGTH              = (1 <<  7),
   6.264 -  VG_PATH_CAPABILITY_POINT_ALONG_PATH         = (1 <<  8),
   6.265 -  VG_PATH_CAPABILITY_TANGENT_ALONG_PATH       = (1 <<  9),
   6.266 -  VG_PATH_CAPABILITY_PATH_BOUNDS              = (1 << 10),
   6.267 -  VG_PATH_CAPABILITY_PATH_TRANSFORMED_BOUNDS  = (1 << 11),
   6.268 -  VG_PATH_CAPABILITY_ALL                      = (1 << 12) - 1
   6.269 -} VGPathCapabilities;
   6.270 -
   6.271 -typedef enum {
   6.272 -  VG_PATH_FORMAT                              = 0x1600,
   6.273 -  VG_PATH_DATATYPE                            = 0x1601,
   6.274 -  VG_PATH_SCALE                               = 0x1602,
   6.275 -  VG_PATH_BIAS                                = 0x1603,
   6.276 -  VG_PATH_NUM_SEGMENTS                        = 0x1604,
   6.277 -  VG_PATH_NUM_COORDS                          = 0x1605
   6.278 -} VGPathParamType;
   6.279 -
   6.280 -typedef enum {
   6.281 -  VG_CAP_BUTT                                 = 0x1700,
   6.282 -  VG_CAP_ROUND                                = 0x1701,
   6.283 -  VG_CAP_SQUARE                               = 0x1702
   6.284 -} VGCapStyle;
   6.285 -
   6.286 -typedef enum {
   6.287 -  VG_JOIN_MITER                               = 0x1800,
   6.288 -  VG_JOIN_ROUND                               = 0x1801,
   6.289 -  VG_JOIN_BEVEL                               = 0x1802
   6.290 -} VGJoinStyle;
   6.291 -
   6.292 -typedef enum {
   6.293 -  VG_EVEN_ODD                                 = 0x1900,
   6.294 -  VG_NON_ZERO                                 = 0x1901
   6.295 -} VGFillRule;
   6.296 -
   6.297 -typedef enum {
   6.298 -  VG_STROKE_PATH                              = (1 << 0),
   6.299 -  VG_FILL_PATH                                = (1 << 1)
   6.300 -} VGPaintMode;
   6.301 -
   6.302 -typedef VGHandle VGPaint;
   6.303 -
   6.304 -typedef enum {
   6.305 -  /* Color paint parameters */
   6.306 -  VG_PAINT_TYPE                               = 0x1A00,
   6.307 -  VG_PAINT_COLOR                              = 0x1A01,
   6.308 -  VG_PAINT_COLOR_RAMP_SPREAD_MODE             = 0x1A02,
   6.309 -  VG_PAINT_COLOR_RAMP_PREMULTIPLIED           = 0x1A07,
   6.310 -  VG_PAINT_COLOR_RAMP_STOPS                   = 0x1A03,
   6.311 -
   6.312 -  /* Linear gradient paint parameters */
   6.313 -  VG_PAINT_LINEAR_GRADIENT                    = 0x1A04,
   6.314 -
   6.315 -  /* Radial gradient paint parameters */
   6.316 -  VG_PAINT_RADIAL_GRADIENT                    = 0x1A05,
   6.317 -
   6.318 -  /* Pattern paint parameters */
   6.319 -  VG_PAINT_PATTERN_TILING_MODE                = 0x1A06
   6.320 -} VGPaintParamType;
   6.321 -
   6.322 -typedef enum {
   6.323 -  VG_PAINT_TYPE_COLOR                         = 0x1B00,
   6.324 -  VG_PAINT_TYPE_LINEAR_GRADIENT               = 0x1B01,
   6.325 -  VG_PAINT_TYPE_RADIAL_GRADIENT               = 0x1B02,
   6.326 -  VG_PAINT_TYPE_PATTERN                       = 0x1B03
   6.327 -} VGPaintType;
   6.328 -
   6.329 -typedef enum {
   6.330 -  VG_COLOR_RAMP_SPREAD_PAD                    = 0x1C00,
   6.331 -  VG_COLOR_RAMP_SPREAD_REPEAT                 = 0x1C01,
   6.332 -  VG_COLOR_RAMP_SPREAD_REFLECT                = 0x1C02
   6.333 -} VGColorRampSpreadMode;
   6.334 -
   6.335 -typedef enum {
   6.336 -  VG_TILE_FILL                                = 0x1D00,
   6.337 -  VG_TILE_PAD                                 = 0x1D01,
   6.338 -  VG_TILE_REPEAT                              = 0x1D02,
   6.339 -  VG_TILE_REFLECT                             = 0x1D03
   6.340 -} VGTilingMode;
   6.341 -
   6.342 -typedef enum {
   6.343 -  /* RGB{A,X} channel ordering */
   6.344 -  VG_IMAGE_FORMAT_INVALID                     = -1,
   6.345 -  VG_sRGBX_8888                               =  0,
   6.346 -  VG_sRGBA_8888                               =  1,
   6.347 -  VG_sRGBA_8888_PRE                           =  2,
   6.348 -  VG_sRGB_565                                 =  3,
   6.349 -  VG_sRGBA_5551                               =  4,
   6.350 -  VG_sRGBA_4444                               =  5,
   6.351 -  VG_sL_8                                     =  6,
   6.352 -  VG_lRGBX_8888                               =  7,
   6.353 -  VG_lRGBA_8888                               =  8,
   6.354 -  VG_lRGBA_8888_PRE                           =  9,
   6.355 -  VG_lL_8                                     = 10,
   6.356 -  VG_A_8                                      = 11,
   6.357 -  VG_BW_1                                     = 12,
   6.358 -  VG_A_1                                      = 13,
   6.359 -  VG_A_4                                      = 14,
   6.360 -
   6.361 -  /* {A,X}RGB channel ordering */
   6.362 -  VG_sXRGB_8888                               =  0 | (1 << 6),
   6.363 -  VG_sARGB_8888                               =  1 | (1 << 6),
   6.364 -  VG_sARGB_8888_PRE                           =  2 | (1 << 6),
   6.365 -  VG_sARGB_1555                               =  4 | (1 << 6),
   6.366 -  VG_sARGB_4444                               =  5 | (1 << 6),
   6.367 -  VG_lXRGB_8888                               =  7 | (1 << 6),
   6.368 -  VG_lARGB_8888                               =  8 | (1 << 6),
   6.369 -  VG_lARGB_8888_PRE                           =  9 | (1 << 6),
   6.370 -
   6.371 -  /* BGR{A,X} channel ordering */
   6.372 -  VG_sBGRX_8888                               =  0 | (1 << 7),
   6.373 -  VG_sBGRA_8888                               =  1 | (1 << 7),
   6.374 -  VG_sBGRA_8888_PRE                           =  2 | (1 << 7),
   6.375 -  VG_sBGR_565                                 =  3 | (1 << 7),
   6.376 -  VG_sBGRA_5551                               =  4 | (1 << 7),
   6.377 -  VG_sBGRA_4444                               =  5 | (1 << 7),
   6.378 -  VG_lBGRX_8888                               =  7 | (1 << 7),
   6.379 -  VG_lBGRA_8888                               =  8 | (1 << 7),
   6.380 -  VG_lBGRA_8888_PRE                           =  9 | (1 << 7),
   6.381 -
   6.382 -  /* {A,X}BGR channel ordering */
   6.383 -  VG_sXBGR_8888                               =  0 | (1 << 6) | (1 << 7),
   6.384 -  VG_sABGR_8888                               =  1 | (1 << 6) | (1 << 7),
   6.385 -  VG_sABGR_8888_PRE                           =  2 | (1 << 6) | (1 << 7),
   6.386 -  VG_sABGR_1555                               =  4 | (1 << 6) | (1 << 7),
   6.387 -  VG_sABGR_4444                               =  5 | (1 << 6) | (1 << 7),
   6.388 -  VG_lXBGR_8888                               =  7 | (1 << 6) | (1 << 7),
   6.389 -  VG_lABGR_8888                               =  8 | (1 << 6) | (1 << 7),
   6.390 -  VG_lABGR_8888_PRE                           =  9 | (1 << 6) | (1 << 7)
   6.391 -} VGImageFormat;
   6.392 -
   6.393 -typedef VGHandle VGImage;
   6.394 -typedef int VGeglImageKHR;
   6.395 -
   6.396 -typedef enum {
   6.397 -  VG_IMAGE_QUALITY_NONANTIALIASED             = (1 << 0),
   6.398 -  VG_IMAGE_QUALITY_FASTER                     = (1 << 1),
   6.399 -  VG_IMAGE_QUALITY_BETTER                     = (1 << 2)
   6.400 -} VGImageQuality;
   6.401 -
   6.402 -typedef enum {
   6.403 -  VG_IMAGE_FORMAT                             = 0x1E00,
   6.404 -  VG_IMAGE_WIDTH                              = 0x1E01,
   6.405 -  VG_IMAGE_HEIGHT                             = 0x1E02
   6.406 -} VGImageParamType;
   6.407 -
   6.408 -typedef enum {
   6.409 -  VG_DRAW_IMAGE_NORMAL                        = 0x1F00,
   6.410 -  VG_DRAW_IMAGE_MULTIPLY                      = 0x1F01,
   6.411 -  VG_DRAW_IMAGE_STENCIL                       = 0x1F02
   6.412 -} VGImageMode;
   6.413 -
   6.414 -typedef enum {
   6.415 -  VG_RED                                      = (1 << 3),
   6.416 -  VG_GREEN                                    = (1 << 2),
   6.417 -  VG_BLUE                                     = (1 << 1),
   6.418 -  VG_ALPHA                                    = (1 << 0)
   6.419 -} VGImageChannel;
   6.420 -
   6.421 -typedef enum {
   6.422 -  VG_BLEND_SRC                                = 0x2000,
   6.423 -  VG_BLEND_SRC_OVER                           = 0x2001,
   6.424 -  VG_BLEND_DST_OVER                           = 0x2002,
   6.425 -  VG_BLEND_SRC_IN                             = 0x2003,
   6.426 -  VG_BLEND_DST_IN                             = 0x2004,
   6.427 -  VG_BLEND_MULTIPLY                           = 0x2005,
   6.428 -  VG_BLEND_SCREEN                             = 0x2006,
   6.429 -  VG_BLEND_DARKEN                             = 0x2007,
   6.430 -  VG_BLEND_LIGHTEN                            = 0x2008,
   6.431 -  VG_BLEND_ADDITIVE                           = 0x2009
   6.432 -} VGBlendMode;
   6.433 -
   6.434 -typedef enum {
   6.435 -  VG_IMAGE_FORMAT_QUERY                       = 0x2100,
   6.436 -  VG_PATH_DATATYPE_QUERY                      = 0x2101
   6.437 -} VGHardwareQueryType;
   6.438 -
   6.439 -typedef enum {
   6.440 -  VG_HARDWARE_ACCELERATED                     = 0x2200,
   6.441 -  VG_HARDWARE_UNACCELERATED                   = 0x2201
   6.442 -} VGHardwareQueryResult;
   6.443 -
   6.444 -typedef enum {
   6.445 -  VG_VENDOR                                   = 0x2300,
   6.446 -  VG_RENDERER                                 = 0x2301,
   6.447 -  VG_VERSION                                  = 0x2302,
   6.448 -  VG_EXTENSIONS                               = 0x2303
   6.449 -} VGStringID;
   6.450 -
   6.451 -typedef enum {
   6.452 -  VG_FONT_NUM_GLYPHS                          = 0x2F00
   6.453 -} VGFontParamType;
   6.454 -
   6.455 -
   6.456 -/* Function Prototypes */
   6.457 -
   6.458 -#ifndef VG_API_CALL
   6.459 -#define VG_API_CALL IMPORT_C
   6.460 -#endif
   6.461 -#ifndef VG_APIENTRY
   6.462 -#define VG_APIENTRY /* nothing */
   6.463 -#endif
   6.464 -#ifndef VG_APIEXIT
   6.465 -#define VG_APIEXIT __SOFTFP
   6.466 -#endif
   6.467 -
   6.468 -VG_API_CALL VGErrorCode VG_APIENTRY
   6.469 -    vgGetError(void) VG_APIEXIT;
   6.470 -
   6.471 -VG_API_CALL void VG_APIENTRY
   6.472 -    vgFlush(void) VG_APIEXIT;
   6.473 -VG_API_CALL void VG_APIENTRY
   6.474 -    vgFinish(void) VG_APIEXIT;
   6.475 -
   6.476 -/* Getters and Setters */
   6.477 -VG_API_CALL void VG_APIENTRY
   6.478 -   vgSetf (VGParamType type, VGfloat value) VG_APIEXIT;
   6.479 -VG_API_CALL void VG_APIENTRY
   6.480 -    vgSeti (VGParamType type, VGint value) VG_APIEXIT;
   6.481 -VG_API_CALL void VG_APIENTRY
   6.482 -    vgSetfv(VGParamType type, VGint count,
   6.483 -        const VGfloat * values) VG_APIEXIT;
   6.484 -VG_API_CALL void VG_APIENTRY
   6.485 -    vgSetiv(VGParamType type, VGint count,
   6.486 -        const VGint * values) VG_APIEXIT;
   6.487 -VG_API_CALL VGfloat VG_APIENTRY
   6.488 -    vgGetf(VGParamType type) VG_APIEXIT;
   6.489 -VG_API_CALL VGint   VG_APIENTRY
   6.490 -    vgGeti(VGParamType type) VG_APIEXIT;
   6.491 -VG_API_CALL VGint   VG_APIENTRY
   6.492 -    vgGetVectorSize(VGParamType type) VG_APIEXIT;
   6.493 -VG_API_CALL void    VG_APIENTRY
   6.494 -    vgGetfv(VGParamType type, VGint count,
   6.495 -        VGfloat * values) VG_APIEXIT;
   6.496 -VG_API_CALL void    VG_APIENTRY
   6.497 -    vgGetiv(VGParamType type, VGint count,
   6.498 -        VGint * values) VG_APIEXIT;
   6.499 -VG_API_CALL void VG_APIENTRY
   6.500 -    vgSetParameterf(VGHandle object,
   6.501 -        VGint paramType,
   6.502 -        VGfloat value) VG_APIEXIT;
   6.503 -VG_API_CALL void VG_APIENTRY
   6.504 -    vgSetParameteri(VGHandle object,
   6.505 -        VGint paramType,
   6.506 -        VGint value) VG_APIEXIT;
   6.507 -VG_API_CALL void VG_APIENTRY
   6.508 -    vgSetParameterfv(VGHandle object,
   6.509 -        VGint paramType,
   6.510 -        VGint count,
   6.511 -        const VGfloat * values) VG_APIEXIT;
   6.512 -VG_API_CALL void VG_APIENTRY
   6.513 -    vgSetParameteriv(VGHandle object,
   6.514 -        VGint paramType,
   6.515 -        VGint count,
   6.516 -        const VGint * values) VG_APIEXIT;
   6.517 -
   6.518 -VG_API_CALL VGfloat VG_APIENTRY
   6.519 -    vgGetParameterf(VGHandle object,
   6.520 -        VGint paramType) VG_APIEXIT;
   6.521 -VG_API_CALL VGint VG_APIENTRY
   6.522 -    vgGetParameteri(VGHandle object,
   6.523 -        VGint paramType) VG_APIEXIT;
   6.524 -VG_API_CALL VGint VG_APIENTRY
   6.525 -    vgGetParameterVectorSize(VGHandle object,
   6.526 -        VGint paramType) VG_APIEXIT;
   6.527 -VG_API_CALL void VG_APIENTRY
   6.528 -    vgGetParameterfv(VGHandle object,
   6.529 -        VGint paramType,
   6.530 -        VGint count,
   6.531 -        VGfloat * values) VG_APIEXIT;
   6.532 -VG_API_CALL void VG_APIENTRY
   6.533 -    vgGetParameteriv(VGHandle object,
   6.534 -        VGint paramType,
   6.535 -        VGint count,
   6.536 -        VGint * values) VG_APIEXIT;
   6.537 -
   6.538 -/* Matrix Manipulation */
   6.539 -VG_API_CALL void VG_APIENTRY
   6.540 -    vgLoadIdentity(void) VG_APIEXIT;
   6.541 -VG_API_CALL void VG_APIENTRY
   6.542 -    vgLoadMatrix(const VGfloat * m) VG_APIEXIT;
   6.543 -VG_API_CALL void VG_APIENTRY
   6.544 -    vgGetMatrix(VGfloat * m) VG_APIEXIT;
   6.545 -VG_API_CALL void VG_APIENTRY
   6.546 -    vgMultMatrix(const VGfloat * m) VG_APIEXIT;
   6.547 -VG_API_CALL void VG_APIENTRY
   6.548 -    vgTranslate(VGfloat tx, VGfloat ty) VG_APIEXIT;
   6.549 -VG_API_CALL void VG_APIENTRY
   6.550 -    vgScale(VGfloat sx, VGfloat sy) VG_APIEXIT;
   6.551 -VG_API_CALL void VG_APIENTRY
   6.552 -    vgShear(VGfloat shx, VGfloat shy) VG_APIEXIT;
   6.553 -VG_API_CALL void VG_APIENTRY
   6.554 -    vgRotate(VGfloat angle) VG_APIEXIT;
   6.555 -
   6.556 -/* Masking and Clearing */
   6.557 -typedef VGHandle VGMaskLayer;
   6.558 -
   6.559 -VG_API_CALL void VG_APIENTRY
   6.560 -    vgMask(VGHandle mask, VGMaskOperation operation,
   6.561 -        VGint x, VGint y,
   6.562 -        VGint width, VGint height) VG_APIEXIT;
   6.563 -VG_API_CALL void VG_APIENTRY
   6.564 -    vgRenderToMask(VGPath path,
   6.565 -        VGbitfield paintModes,
   6.566 -        VGMaskOperation operation) VG_APIEXIT;
   6.567 -VG_API_CALL VGMaskLayer VG_APIENTRY
   6.568 -    vgCreateMaskLayer(VGint width, VGint height) VG_APIEXIT;
   6.569 -VG_API_CALL void VG_APIENTRY
   6.570 -    vgDestroyMaskLayer(VGMaskLayer maskLayer) VG_APIEXIT;
   6.571 -VG_API_CALL void VG_APIENTRY
   6.572 -    vgFillMaskLayer(VGMaskLayer maskLayer,
   6.573 -        VGint x, VGint y,
   6.574 -        VGint width, VGint height,
   6.575 -        VGfloat value) VG_APIEXIT;
   6.576 -VG_API_CALL void VG_APIENTRY
   6.577 -    vgCopyMask(VGMaskLayer maskLayer,
   6.578 -        VGint sx, VGint sy,
   6.579 -        VGint dx, VGint dy,
   6.580 -        VGint width, VGint height) VG_APIEXIT;
   6.581 -VG_API_CALL void VG_APIENTRY
   6.582 -    vgClear(VGint x, VGint y,
   6.583 -        VGint width, VGint height) VG_APIEXIT;
   6.584 -
   6.585 -/* Paths */
   6.586 -VG_API_CALL VGPath VG_APIENTRY
   6.587 -    vgCreatePath(VGint pathFormat,
   6.588 -        VGPathDatatype datatype,
   6.589 -        VGfloat scale, VGfloat bias,
   6.590 -        VGint segmentCapacityHint,
   6.591 -        VGint coordCapacityHint,
   6.592 -        VGbitfield capabilities) VG_APIEXIT;
   6.593 -VG_API_CALL void VG_APIENTRY
   6.594 -    vgClearPath(VGPath path, VGbitfield capabilities) VG_APIEXIT;
   6.595 -VG_API_CALL void VG_APIENTRY
   6.596 -    vgDestroyPath(VGPath path) VG_APIEXIT;
   6.597 -VG_API_CALL void VG_APIENTRY
   6.598 -    vgRemovePathCapabilities(VGPath path,
   6.599 -        VGbitfield capabilities) VG_APIEXIT;
   6.600 -VG_API_CALL VGbitfield VG_APIENTRY
   6.601 -    vgGetPathCapabilities(VGPath path) VG_APIEXIT;
   6.602 -VG_API_CALL void VG_APIENTRY
   6.603 -    vgAppendPath(VGPath dstPath, VGPath srcPath) VG_APIEXIT;
   6.604 -VG_API_CALL void VG_APIENTRY
   6.605 -    vgAppendPathData(VGPath dstPath,
   6.606 -        VGint numSegments,
   6.607 -        const VGubyte * pathSegments,
   6.608 -        const void * pathData) VG_APIEXIT;
   6.609 -VG_API_CALL void VG_APIENTRY
   6.610 -    vgModifyPathCoords(VGPath dstPath,
   6.611 -        VGint startIndex,
   6.612 -        VGint numSegments,
   6.613 -        const void * pathData) VG_APIEXIT;
   6.614 -VG_API_CALL void VG_APIENTRY
   6.615 -    vgTransformPath(VGPath dstPath, VGPath srcPath) VG_APIEXIT;
   6.616 -VG_API_CALL VGboolean VG_APIENTRY
   6.617 -    vgInterpolatePath(VGPath dstPath,
   6.618 -        VGPath startPath,
   6.619 -        VGPath endPath,
   6.620 -        VGfloat amount) VG_APIEXIT;
   6.621 -VG_API_CALL VGfloat VG_APIENTRY
   6.622 -    vgPathLength(VGPath path,
   6.623 -        VGint startSegment,
   6.624 -        VGint numSegments) VG_APIEXIT;
   6.625 -VG_API_CALL void VG_APIENTRY
   6.626 -    vgPointAlongPath(VGPath path,
   6.627 -        VGint startSegment,
   6.628 -        VGint numSegments,
   6.629 -        VGfloat distance,
   6.630 -        VGfloat * x, VGfloat * y,
   6.631 -        VGfloat * tangentX,
   6.632 -        VGfloat * tangentY) VG_APIEXIT;
   6.633 -VG_API_CALL void VG_APIENTRY
   6.634 -    vgPathBounds(VGPath path,
   6.635 -        VGfloat * minX,
   6.636 -        VGfloat * minY,
   6.637 -        VGfloat * width,
   6.638 -        VGfloat * height) VG_APIEXIT;
   6.639 -VG_API_CALL void VG_APIENTRY
   6.640 -    vgPathTransformedBounds(VGPath path,
   6.641 -        VGfloat * minX,
   6.642 -        VGfloat * minY,
   6.643 -        VGfloat * width,
   6.644 -        VGfloat * height) VG_APIEXIT;
   6.645 -VG_API_CALL void VG_APIENTRY
   6.646 -    vgDrawPath(VGPath path, VGbitfield paintModes) VG_APIEXIT;
   6.647 -
   6.648 -/* Paint */
   6.649 -VG_API_CALL VGPaint VG_APIENTRY
   6.650 -    vgCreatePaint(void) VG_APIEXIT;
   6.651 -VG_API_CALL void VG_APIENTRY
   6.652 -    vgDestroyPaint(VGPaint paint) VG_APIEXIT;
   6.653 -VG_API_CALL void VG_APIENTRY
   6.654 -    vgSetPaint(VGPaint paint, VGbitfield paintModes) VG_APIEXIT;
   6.655 -VG_API_CALL VGPaint VG_APIENTRY
   6.656 -    vgGetPaint(VGPaintMode paintMode) VG_APIEXIT;
   6.657 -VG_API_CALL void VG_APIENTRY
   6.658 -    vgSetColor(VGPaint paint, VGuint rgba) VG_APIEXIT;
   6.659 -VG_API_CALL VGuint VG_APIENTRY
   6.660 -    vgGetColor(VGPaint paint) VG_APIEXIT;
   6.661 -VG_API_CALL void VG_APIENTRY
   6.662 -    vgPaintPattern(VGPaint paint, VGImage pattern) VG_APIEXIT;
   6.663 -
   6.664 -/* Images */
   6.665 -VG_API_CALL VGImage VG_APIENTRY
   6.666 -    vgCreateImage(VGImageFormat format,
   6.667 -        VGint width, VGint height,
   6.668 -        VGbitfield allowedQuality) VG_APIEXIT;
   6.669 -VG_API_CALL void VG_APIENTRY
   6.670 -    vgDestroyImage(VGImage image) VG_APIEXIT;
   6.671 -VG_API_CALL void VG_APIENTRY
   6.672 -    vgClearImage(VGImage image,
   6.673 -        VGint x, VGint y,
   6.674 -        VGint width, VGint height) VG_APIEXIT;
   6.675 -VG_API_CALL void VG_APIENTRY
   6.676 -    vgImageSubData(VGImage image,
   6.677 -        const void * data,
   6.678 -        VGint dataStride,
   6.679 -        VGImageFormat dataFormat,
   6.680 -        VGint x, VGint y,
   6.681 -        VGint width, VGint height) VG_APIEXIT;
   6.682 -VG_API_CALL void VG_APIENTRY
   6.683 -    vgGetImageSubData(VGImage image,
   6.684 -        void * data,
   6.685 -        VGint dataStride,
   6.686 -        VGImageFormat dataFormat,
   6.687 -        VGint x, VGint y,
   6.688 -        VGint width, VGint height) VG_APIEXIT;
   6.689 -VG_API_CALL VGImage VG_APIENTRY
   6.690 -    vgChildImage(VGImage parent,
   6.691 -        VGint x, VGint y,
   6.692 -        VGint width, VGint height) VG_APIEXIT;
   6.693 -VG_API_CALL VGImage VG_APIENTRY
   6.694 -    vgGetParent(VGImage image) VG_APIEXIT;
   6.695 -VG_API_CALL void VG_APIENTRY
   6.696 -    vgCopyImage(VGImage dst, VGint dx, VGint dy,
   6.697 -        VGImage src, VGint sx, VGint sy,
   6.698 -        VGint width, VGint height,
   6.699 -        VGboolean dither) VG_APIEXIT;
   6.700 -VG_API_CALL void VG_APIENTRY
   6.701 -    vgDrawImage(VGImage image) VG_APIEXIT;
   6.702 -VG_API_CALL void VG_APIENTRY
   6.703 -    vgSetPixels(VGint dx, VGint dy,
   6.704 -        VGImage src, VGint sx, VGint sy,
   6.705 -        VGint width, VGint height) VG_APIEXIT;
   6.706 -VG_API_CALL void VG_APIENTRY
   6.707 -    vgWritePixels(const void * data, VGint dataStride,
   6.708 -        VGImageFormat dataFormat,
   6.709 -        VGint dx, VGint dy,
   6.710 -        VGint width, VGint height) VG_APIEXIT;
   6.711 -VG_API_CALL void VG_APIENTRY
   6.712 -    vgGetPixels(VGImage dst, VGint dx, VGint dy,
   6.713 -        VGint sx, VGint sy,
   6.714 -        VGint width, VGint height) VG_APIEXIT;
   6.715 -VG_API_CALL void VG_APIENTRY
   6.716 -    vgReadPixels(void * data, VGint dataStride,
   6.717 -        VGImageFormat dataFormat,
   6.718 -        VGint sx, VGint sy,
   6.719 -        VGint width, VGint height) VG_APIEXIT;
   6.720 -VG_API_CALL void VG_APIENTRY
   6.721 -    vgCopyPixels(VGint dx, VGint dy,
   6.722 -        VGint sx, VGint sy,
   6.723 -        VGint width, VGint height) VG_APIEXIT;
   6.724 -
   6.725 -/* Text */
   6.726 -typedef VGHandle VGFont;
   6.727 -
   6.728 -VG_API_CALL VGFont VG_APIENTRY
   6.729 -    vgCreateFont(VGint glyphCapacityHint) VG_APIEXIT;
   6.730 -VG_API_CALL void VG_APIENTRY
   6.731 -    vgDestroyFont(VGFont font) VG_APIEXIT;
   6.732 -VG_API_CALL void VG_APIENTRY
   6.733 -    vgSetGlyphToPath(VGFont font,
   6.734 -        VGuint glyphIndex,
   6.735 -        VGPath path,
   6.736 -        VGboolean isHinted,
   6.737 -        const VGfloat glyphOrigin [2],
   6.738 -        const VGfloat escapement[2]) VG_APIEXIT;
   6.739 -VG_API_CALL void VG_APIENTRY
   6.740 -    vgSetGlyphToImage(VGFont font,
   6.741 -        VGuint glyphIndex,
   6.742 -        VGImage image,
   6.743 -        const VGfloat glyphOrigin [2],
   6.744 -        const VGfloat escapement[2]) VG_APIEXIT;
   6.745 -VG_API_CALL void VG_APIENTRY
   6.746 -    vgClearGlyph(VGFont font,
   6.747 -        VGuint glyphIndex) VG_APIEXIT;
   6.748 -VG_API_CALL void VG_APIENTRY
   6.749 -    vgDrawGlyph(VGFont font,
   6.750 -        VGuint glyphIndex,
   6.751 -        VGbitfield paintModes,
   6.752 -        VGboolean allowAutoHinting) VG_APIEXIT;
   6.753 -VG_API_CALL void VG_APIENTRY
   6.754 -    vgDrawGlyphs(VGFont font,
   6.755 -        VGint glyphCount,
   6.756 -        const VGuint * glyphIndices,
   6.757 -        const VGfloat * adjustments_x,
   6.758 -        const VGfloat * adjustments_y,
   6.759 -        VGbitfield paintModes,
   6.760 -        VGboolean allowAutoHinting) VG_APIEXIT;
   6.761 -
   6.762 -/* Image Filters */
   6.763 -VG_API_CALL void VG_APIENTRY
   6.764 -    vgColorMatrix(VGImage dst, VGImage src,
   6.765 -        const VGfloat * matrix) VG_APIEXIT;
   6.766 -VG_API_CALL void VG_APIENTRY
   6.767 -    vgConvolve(VGImage dst, VGImage src,
   6.768 -        VGint kernelWidth, VGint kernelHeight,
   6.769 -        VGint shiftX, VGint shiftY,
   6.770 -        const VGshort * kernel,
   6.771 -        VGfloat scale,
   6.772 -        VGfloat bias,
   6.773 -        VGTilingMode tilingMode) VG_APIEXIT;
   6.774 -VG_API_CALL void VG_APIENTRY
   6.775 -    vgSeparableConvolve(VGImage dst, VGImage src,
   6.776 -        VGint kernelWidth,
   6.777 -        VGint kernelHeight,
   6.778 -        VGint shiftX, VGint shiftY,
   6.779 -        const VGshort * kernelX,
   6.780 -        const VGshort * kernelY,
   6.781 -        VGfloat scale,
   6.782 -        VGfloat bias,
   6.783 -        VGTilingMode tilingMode) VG_APIEXIT;
   6.784 -VG_API_CALL void VG_APIENTRY
   6.785 -    vgGaussianBlur(VGImage dst, VGImage src,
   6.786 -        VGfloat stdDeviationX,
   6.787 -        VGfloat stdDeviationY,
   6.788 -        VGTilingMode tilingMode) VG_APIEXIT;
   6.789 -VG_API_CALL void VG_APIENTRY
   6.790 -    vgLookup(VGImage dst, VGImage src,
   6.791 -        const VGubyte * redLUT,
   6.792 -        const VGubyte * greenLUT,
   6.793 -        const VGubyte * blueLUT,
   6.794 -        const VGubyte * alphaLUT,
   6.795 -        VGboolean outputLinear,
   6.796 -        VGboolean outputPremultiplied) VG_APIEXIT;
   6.797 -VG_API_CALL void VG_APIENTRY
   6.798 -    vgLookupSingle(VGImage dst, VGImage src,
   6.799 -        const VGuint * lookupTable,
   6.800 -        VGImageChannel sourceChannel,
   6.801 -        VGboolean outputLinear,
   6.802 -        VGboolean outputPremultiplied) VG_APIEXIT;
   6.803 -
   6.804 -/* Hardware Queries */
   6.805 -VG_API_CALL VGHardwareQueryResult VG_APIENTRY
   6.806 -    vgHardwareQuery
   6.807 -        (VGHardwareQueryType key,
   6.808 -        VGint setting) VG_APIEXIT;
   6.809 -
   6.810 -/* Renderer and Extension Information */
   6.811 -VG_API_CALL const VGubyte * VG_APIENTRY
   6.812 -    vgGetString(VGStringID name) VG_APIEXIT;
   6.813 -
   6.814 -#ifdef __cplusplus
   6.815 -} /* extern "C" */
   6.816 -#endif
   6.817 -
   6.818 -#endif /* __VG_1_1_OPENVG_H */
     7.1 --- a/epoc32/include/VG/1.1/vgu.h	Tue Mar 16 16:12:26 2010 +0000
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,154 +0,0 @@
     7.4 -/*------------------------------------------------------------------------
     7.5 - * 
     7.6 - * VGU 1.1 Reference Implementation
     7.7 - * -------------------------------------
     7.8 - *
     7.9 - * Copyright (c) 2008 The Khronos Group Inc.
    7.10 - *
    7.11 - * Permission is hereby granted, free of charge, to any person obtaining a
    7.12 - * copy of this software and /or associated documentation files
    7.13 - * (the "Materials "), to deal in the Materials without restriction,
    7.14 - * including without limitation the rights to use, copy, modify, merge,
    7.15 - * publish, distribute, sublicense, and/or sell copies of the Materials,
    7.16 - * and to permit persons to whom the Materials are furnished to do so,
    7.17 - * subject to the following conditions: 
    7.18 - *
    7.19 - * The above copyright notice and this permission notice shall be included 
    7.20 - * in all copies or substantial portions of the Materials. 
    7.21 - *
    7.22 - * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    7.23 - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    7.24 - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
    7.25 - * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    7.26 - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    7.27 - * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE MATERIALS OR
    7.28 - * THE USE OR OTHER DEALINGS IN THE MATERIALS.
    7.29 - *
    7.30 - *//**
    7.31 - * \file
    7.32 - * \brief	VGU 1.1 API.
    7.33 - *//*-------------------------------------------------------------------*/
    7.34 -
    7.35 -#ifndef __VG_1_1_VGU_H
    7.36 -#define __VG_1_1_VGU_H
    7.37 -
    7.38 -#ifndef __VG_VGU_H_
    7.39 -#error Do not include this file directly. Use <VG/vgu.h>.
    7.40 -#endif
    7.41 -
    7.42 -/* differences from the actual sample implemtation provided by Khronos:
    7.43 -- this comment
    7.44 -- the Doxygen comment with tag 'publishedAll', and tag 'released'
    7.45 -- changing 
    7.46 -	#define VG_API_CALL extern 
    7.47 -	to 
    7.48 -	#define VG_API_CALL IMPORT_C
    7.49 -- the addition of __SOFTFP in some of the function prototypes
    7.50 - */
    7.51 -
    7.52 -/**
    7.53 -@publishedAll
    7.54 -@released
    7.55 -*/
    7.56 -#ifdef __cplusplus
    7.57 -extern "C" {
    7.58 -#endif
    7.59 -
    7.60 -#include <VG/openvg.h>
    7.61 -
    7.62 -#define VGU_VERSION_1_0 1
    7.63 -#define VGU_VERSION_1_1 2
    7.64 -
    7.65 -#ifndef VGU_API_CALL
    7.66 -#define VGU_API_CALL IMPORT_C
    7.67 -#endif
    7.68 -#ifndef VGU_APIENTRY
    7.69 -#define VGU_APIENTRY /* nothing */
    7.70 -#endif
    7.71 -#ifndef VGU_APIEXIT
    7.72 -#define VGU_APIEXIT __SOFTFP
    7.73 -#endif
    7.74 -
    7.75 -typedef enum {
    7.76 -  VGU_NO_ERROR                                 = 0,
    7.77 -  VGU_BAD_HANDLE_ERROR                         = 0xF000,
    7.78 -  VGU_ILLEGAL_ARGUMENT_ERROR                   = 0xF001,
    7.79 -  VGU_OUT_OF_MEMORY_ERROR                      = 0xF002,
    7.80 -  VGU_PATH_CAPABILITY_ERROR                    = 0xF003,
    7.81 -  VGU_BAD_WARP_ERROR                           = 0xF004
    7.82 -} VGUErrorCode;
    7.83 -
    7.84 -typedef enum {
    7.85 -  VGU_ARC_OPEN                                 = 0xF100,
    7.86 -  VGU_ARC_CHORD                                = 0xF101,
    7.87 -  VGU_ARC_PIE                                  = 0xF102
    7.88 -} VGUArcType;
    7.89 -
    7.90 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
    7.91 -     vguLine(VGPath path,
    7.92 -        VGfloat x0, VGfloat y0,
    7.93 -        VGfloat x1, VGfloat y1) VGU_APIEXIT;
    7.94 -
    7.95 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
    7.96 -     vguPolygon(VGPath path,
    7.97 -        const VGfloat * points,
    7.98 -        VGint count,
    7.99 -        VGboolean closed) VGU_APIEXIT;
   7.100 -
   7.101 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.102 -     vguRect(VGPath path,
   7.103 -        VGfloat x, VGfloat y,
   7.104 -        VGfloat width, VGfloat height) VGU_APIEXIT;
   7.105 -
   7.106 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.107 -     vguRoundRect(VGPath path,
   7.108 -        VGfloat x, VGfloat y,
   7.109 -        VGfloat width,
   7.110 -        VGfloat height,
   7.111 -        VGfloat arcWidth,
   7.112 -        VGfloat arcHeight) VGU_APIEXIT;
   7.113 -
   7.114 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.115 -     vguEllipse(VGPath path,
   7.116 -        VGfloat cx, VGfloat cy,
   7.117 -        VGfloat width,
   7.118 -        VGfloat height) VGU_APIEXIT;
   7.119 -
   7.120 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.121 -     vguArc(VGPath path,
   7.122 -        VGfloat x, VGfloat y,
   7.123 -        VGfloat width, VGfloat height,
   7.124 -        VGfloat startAngle,
   7.125 -        VGfloat angleExtent,
   7.126 -        VGUArcType arcType) VGU_APIEXIT;
   7.127 -
   7.128 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.129 -    vguComputeWarpQuadToSquare(VGfloat sx0, VGfloat sy0,
   7.130 -        VGfloat sx1, VGfloat sy1,
   7.131 -        VGfloat sx2, VGfloat sy2,
   7.132 -        VGfloat sx3, VGfloat sy3,
   7.133 -        VGfloat * matrix) VGU_APIEXIT;
   7.134 -
   7.135 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.136 -    vguComputeWarpSquareToQuad(VGfloat dx0, VGfloat dy0,
   7.137 -        VGfloat dx1, VGfloat dy1,
   7.138 -        VGfloat dx2, VGfloat dy2,
   7.139 -        VGfloat dx3, VGfloat dy3,
   7.140 -        VGfloat * matrix) VGU_APIEXIT;
   7.141 -
   7.142 -VGU_API_CALL VGUErrorCode VGU_APIENTRY
   7.143 -    vguComputeWarpQuadToQuad(VGfloat dx0, VGfloat dy0,
   7.144 -        VGfloat dx1, VGfloat dy1,
   7.145 -        VGfloat dx2, VGfloat dy2,
   7.146 -        VGfloat dx3, VGfloat dy3,
   7.147 -        VGfloat sx0, VGfloat sy0,
   7.148 -        VGfloat sx1, VGfloat sy1,
   7.149 -        VGfloat sx2, VGfloat sy2,
   7.150 -        VGfloat sx3, VGfloat sy3,
   7.151 -        VGfloat * matrix) VGU_APIEXIT;
   7.152 -
   7.153 -#ifdef __cplusplus
   7.154 -} /* extern "C" */
   7.155 -#endif
   7.156 -
   7.157 -#endif /* __VG_1_1_VGU_H */
     8.1 --- a/epoc32/include/animation.h	Tue Mar 16 16:12:26 2010 +0000
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,75 +0,0 @@
     8.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
     8.5 -// All rights reserved.
     8.6 -// This component and the accompanying materials are made available
     8.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     8.8 -// which accompanies this distribution, and is available
     8.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    8.10 -//
    8.11 -// Initial Contributors:
    8.12 -// Nokia Corporation - initial contribution.
    8.13 -//
    8.14 -// Contributors:
    8.15 -//
    8.16 -// Description:
    8.17 -//
    8.18 -
    8.19 -#ifndef __ANIMATION_H__
    8.20 -#define __ANIMATION_H__
    8.21 -
    8.22 -#include <animationmixins.h>
    8.23 -
    8.24 -class TAnimationConfig;
    8.25 -
    8.26 -/** Pure virtual base class for animations.
    8.27 -
    8.28 -This defines an abstracted interface between a client application and an
    8.29 -animation.  Most of the implementation details are handled by an animator
    8.30 -plugin.  The source of the animation data and its interpretation are usually
    8.31 -handled by a data provider.
    8.32 -
    8.33 -@see CAnimationDataProvider
    8.34 -@see CAnimator
    8.35 -@see MAnimationObserver
    8.36 -@publishedAll
    8.37 -@released*/
    8.38 -class CAnimation : public CBase
    8.39 -	{
    8.40 -public:
    8.41 -	/** Causes the animation to start, at the first time step or logical
    8.42 -	equivalent.  If the animation is already running, it rewinds.
    8.43 -	@see TAnimationConfig
    8.44 -	@param aConfig Specifies run time attributes of the animation.*/
    8.45 -	virtual void Start(const TAnimationConfig& aConfig) = 0;
    8.46 -	/** Causes the animation to stop, and rewinds to the first frame.*/
    8.47 -	virtual void Stop() = 0;
    8.48 -	/** Causes the animation to stop, but without rewinding.*/
    8.49 -	virtual void Pause() = 0;
    8.50 -	/** Causes a paused animation to continue from where it left off.*/
    8.51 -	virtual void Resume() = 0;
    8.52 -	/** Puts an animation on hold, which is similar to pause, but keeps
    8.53 -	track of the time steps passing and catches up when resumed.  This
    8.54 -	can be used to temporarily cease processing an animation without it
    8.55 -	getting out of step with others.*/
    8.56 -	virtual void Hold() = 0;
    8.57 -	/** Resumes a held animation.*/
    8.58 -	virtual void Unhold() = 0;
    8.59 -	/** Sets the coordinates of the animation.  This generally refers
    8.60 -	to the top left corner of the total area the animation covers.
    8.61 -	@param aPoint The new coordinates of the animation (usually the top left
    8.62 -	corner)*/
    8.63 -	virtual void SetPosition(const TPoint& aPoint) = 0;
    8.64 -	/** Causes whatever ticker this animation provides to its animator to
    8.65 -	be frozen untill a corresponding call to unfreeze.
    8.66 -	
    8.67 -	You should not normally need to call this function.
    8.68 -	@see Unfreeze()*/
    8.69 -	virtual void Freeze() = 0;
    8.70 -	/** Causes whatever ticker this animation provides to its animator to
    8.71 -	be unfrozen.
    8.72 -	
    8.73 -	You should not normally need to call this function.
    8.74 -	@see Freeze()*/	
    8.75 -	virtual void Unfreeze() = 0;
    8.76 -	};
    8.77 -
    8.78 -#endif //__ANIMATION_H__
     9.1 --- a/epoc32/include/animationconfig.h	Tue Mar 16 16:12:26 2010 +0000
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,51 +0,0 @@
     9.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
     9.5 -// All rights reserved.
     9.6 -// This component and the accompanying materials are made available
     9.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     9.8 -// which accompanies this distribution, and is available
     9.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    9.10 -//
    9.11 -// Initial Contributors:
    9.12 -// Nokia Corporation - initial contribution.
    9.13 -//
    9.14 -// Contributors:
    9.15 -//
    9.16 -// Description:
    9.17 -//
    9.18 -
    9.19 -#ifndef __ANIMATIONCONFIG_H__
    9.20 -#define __ANIMATIONCONFIG_H__
    9.21 -
    9.22 -struct TAnimationConfig
    9.23 -/** These are passed to animator objects when an animation is started and
    9.24 -provide some control over the manner in which the animation runs.
    9.25 -@publishedAll
    9.26 -@released*/
    9.27 -	{
    9.28 -	enum TFlags
    9.29 -	/** Flag values used by animator objects when an animation is started that
    9.30 -	provide some control over the manner in which the animation runs. 
    9.31 -
    9.32 -	@publishedAll
    9.33 -	@released */
    9.34 - 		{
    9.35 -		/** If set, interpret the iData member as the number of times the
    9.36 -		animation should run before automatically stopping itself.*/
    9.37 -		ELoop				= 0x0001,
    9.38 -		/** If set, the animation will start as soon as it can.  By default,
    9.39 -		animations wait for the data to be completely loaded before starting.*/
    9.40 -		EStartImmediately	= 0x0010,
    9.41 -		/** If set, and ELoop is set, interpret the iData member as a number
    9.42 -		of frames to run through, instead of complete cycles.*/
    9.43 -		ECountFrames		= 0x0020,
    9.44 -		/** By default animations which stop after a number of loops return
    9.45 -		to the first frame.  If this flag is set they stop on the last frame.*/
    9.46 -		EEndOnLastFrame 	= 0x0040,
    9.47 -		};
    9.48 -	/** Set this to a combination of the values in TFlags.*/
    9.49 -	TInt iFlags;
    9.50 -	/** The meaning of this item depends on the value of the iFlags member.*/
    9.51 -	TInt iData;
    9.52 -	};
    9.53 -
    9.54 -#endif //__ANIMATIONCONFIG_H__
    10.1 --- a/epoc32/include/animationdataprovider.h	Tue Mar 16 16:12:26 2010 +0000
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,66 +0,0 @@
    10.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    10.5 -// All rights reserved.
    10.6 -// This component and the accompanying materials are made available
    10.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    10.8 -// which accompanies this distribution, and is available
    10.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   10.10 -//
   10.11 -// Initial Contributors:
   10.12 -// Nokia Corporation - initial contribution.
   10.13 -//
   10.14 -// Contributors:
   10.15 -//
   10.16 -// Description:
   10.17 -//
   10.18 -
   10.19 -#ifndef __ANIMATIONDATAPROVIDER_H__
   10.20 -#define __ANIMATIONDATAPROVIDER_H__
   10.21 -
   10.22 -#include <e32std.h>
   10.23 -#include <animationframe.h>
   10.24 -
   10.25 -class MAnimationDataProviderObserver;
   10.26 -
   10.27 -_LIT8(KUndefinedAnimationDataType, "undefined");
   10.28 -
   10.29 -/**
   10.30 -Pure virtual base class for data providers.
   10.31 -
   10.32 -A data provider takes an animation specification (such as a file), converts
   10.33 -it (if needed) into a format recognised by an animator (such as CAnimationFrame
   10.34 -objects), and passes it to the animator, via the medium of an animation.
   10.35 -
   10.36 -Most animation types take a data provider as an argument during contruction.
   10.37 -For more detailed usage instructions, refer to the documentation of the derived
   10.38 -classes.
   10.39 -
   10.40 -@see CAnimation
   10.41 -@see MAnimationDataProviderObserver
   10.42 -@publishedAll
   10.43 -@released
   10.44 -*/
   10.45 -class CAnimationDataProvider : public CBase
   10.46 -	{
   10.47 -public:
   10.48 -    IMPORT_C void SetObserver(MAnimationDataProviderObserver* aObserver);
   10.49 -    /** Called from the animation when it is ready to begin receiving data. */
   10.50 -    virtual void StartL() = 0;
   10.51 -    /** Called from the animation to obtain the type of data to expect.
   10.52 -    @return An 8 bit identifier string*/
   10.53 -    virtual TPtrC8 DataType() = 0;
   10.54 -protected:
   10.55 -	IMPORT_C CAnimationDataProvider();
   10.56 -	IMPORT_C virtual void CAnimationDataProvider_Reserved1();
   10.57 -	IMPORT_C virtual void CAnimationDataProvider_Reserved2();
   10.58 -
   10.59 -    IMPORT_C void SendEventL(TInt aEvent);
   10.60 -    IMPORT_C void SendEventL(TInt aEvent, TInt aData);
   10.61 -    IMPORT_C void SendEventL(TInt aEvent, TAny* aData, TInt aDataSize);
   10.62 -protected: 
   10.63 -	/** Reserved for future use */
   10.64 -	TInt iCAnimationDataProvider_Reserved;
   10.65 -	/** The destination to send data to. Usually an animation class. */
   10.66 -	MAnimationDataProviderObserver* iObserver;
   10.67 -	};
   10.68 -
   10.69 -#endif // __ANIMATIONDATAPROVIDER_H__
    11.1 --- a/epoc32/include/animationevents.h	Tue Mar 16 16:12:26 2010 +0000
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,56 +0,0 @@
    11.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    11.5 -// All rights reserved.
    11.6 -// This component and the accompanying materials are made available
    11.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    11.8 -// which accompanies this distribution, and is available
    11.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   11.10 -//
   11.11 -// Initial Contributors:
   11.12 -// Nokia Corporation - initial contribution.
   11.13 -//
   11.14 -// Contributors:
   11.15 -//
   11.16 -// Description:
   11.17 -//
   11.18 -
   11.19 -#ifndef __ANIMATIONEVENTS_H__
   11.20 -#define __ANIMATIONEVENTS_H__
   11.21 -
   11.22 -/** Generic events which all animation data providers can pass to animators.
   11.23 -
   11.24 -An implementation of CAnimation may intercept these and perform additional
   11.25 -processing if necessary.  
   11.26 -
   11.27 -Events specific to a particular data type should take values greater than
   11.28 -EAnimationReservedEvents.  Implementations of CAnimation should not intercept
   11.29 -or attempt to act on data type specific events.
   11.30 -@publishedAll
   11.31 -@released */
   11.32 -enum TAnimationEvent
   11.33 -	{
   11.34 -	/** Sent when the data itself has changed and the animator needs to be
   11.35 -	ready to	receive the new values */
   11.36 -	EAnimationDataChanged,
   11.37 -	/** Sent when an error occurs within the data provider and it is unable
   11.38 -	to complete the sending of the animation data */
   11.39 -	EAnimationDataProviderError,
   11.40 -	/** Specifies an upper limit for generic events.  Events larger than this
   11.41 -	are free to use for data type specific information */
   11.42 -	EAnimationReservedEvents = 0xFF
   11.43 -	};
   11.44 -
   11.45 -/** Events specific to the "bitmap" data type.  These events are only sent
   11.46 -by data providers dealing with bitmap frame animations, and are only understood
   11.47 -by bitmap animators.
   11.48 -@publishedAll
   11.49 -@released */
   11.50 -enum TBitmapAnimationEvent
   11.51 -	{
   11.52 -	/** This event contains data specifying the bitmaps for a new frame of
   11.53 -	animation */
   11.54 -	EBitmapAnimationNewFrame = EAnimationReservedEvents + 1,
   11.55 -	/** This event indicates that there are no more frames to send */
   11.56 -	EBitmapAnimationComplete,
   11.57 -	};
   11.58 -
   11.59 -#endif //__ANIMATIONEVENTS_H__
    12.1 --- a/epoc32/include/animationframe.h	Tue Mar 16 16:12:26 2010 +0000
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,92 +0,0 @@
    12.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    12.5 -// All rights reserved.
    12.6 -// This component and the accompanying materials are made available
    12.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    12.8 -// which accompanies this distribution, and is available
    12.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   12.10 -//
   12.11 -// Initial Contributors:
   12.12 -// Nokia Corporation - initial contribution.
   12.13 -//
   12.14 -// Contributors:
   12.15 -//
   12.16 -// Description:
   12.17 -//
   12.18 -
   12.19 -#ifndef __ANIMATIONFRAME_H__
   12.20 -#define __ANIMATIONFRAME_H__
   12.21 -
   12.22 -#include <icl/imagedata.h>
   12.23 -
   12.24 -class CFbsBitmap;
   12.25 -
   12.26 -/**
   12.27 -Data format for individual bitmap format animation frames.
   12.28 -
   12.29 -Animators and data providers which use the "bitmap" data type use objects
   12.30 -of this type to transfer data.
   12.31 -
   12.32 -You do not need to instantiate an object of this type unless you are writing
   12.33 -a new data provider.
   12.34 -
   12.35 -@see CBitmapAnimator
   12.36 -@see CICLAnimationDataProvider
   12.37 -@publishedAll
   12.38 -@released
   12.39 -*/
   12.40 -class CAnimationFrame : public CBase
   12.41 -	{
   12.42 -public:
   12.43 -	/** Structure used for passing a CAnimationFrame safely over a
   12.44 -	client/server connection.*/
   12.45 -	struct THandles
   12.46 -		{
   12.47 -		/** A handle to the bitmap into which the decoded frame(s) are put */
   12.48 -		TInt iBitmapHandle;
   12.49 -		/**	The bitmap mask for the changed area for this frame */
   12.50 -		TInt iMaskHandle;
   12.51 -		/** General frame info provided by all plugins */
   12.52 -		TFrameInfo iFrameInfo;
   12.53 -		};
   12.54 -public:
   12.55 -	virtual ~CAnimationFrame();
   12.56 -	IMPORT_C static CAnimationFrame* NewL();
   12.57 -	IMPORT_C static CAnimationFrame* NewL(const THandles& aHandles);
   12.58 -	IMPORT_C void GetHandles(THandles & aHandles) const;
   12.59 -	IMPORT_C void SetHandlesL(const THandles & aHandles);
   12.60 -	IMPORT_C void CreateL(const TFrameInfo& aFrameInfo);
   12.61 -	/** Returns the bitmap image for the changed area for this frame
   12.62 -	@return A pointer to a CFbsBitmap */
   12.63 -	CFbsBitmap* Bitmap()				{ return iBitmap; }
   12.64 -	/** Returns the bitmap image for the changed area for this frame
   12.65 -	@return A pointer to a const CFbsBitmap */
   12.66 -	const CFbsBitmap* Bitmap() const	{ return iBitmap; }
   12.67 -	/** Returns the bitmap mask for the changed area for this frame
   12.68 -	@return A pointer to a CFbsBitmap */
   12.69 -	CFbsBitmap* Mask()					{ return iMask; }
   12.70 -	/** Returns the bitmap mask for the changed area for this frame
   12.71 -	@return A pointer to a const CFbsBitmap */
   12.72 -	const CFbsBitmap* Mask() const		{ return iMask; }
   12.73 -	/** Returns information about the frame.
   12.74 -  	@return A TFrameInfo */
   12.75 -  	TFrameInfo& FrameInfo() 			{ return iFrameInfo; }
   12.76 -  	/** Returns information about the frame.	
   12.77 -	@return A const TFrameInfo */
   12.78 -	const TFrameInfo& FrameInfo() const	{ return iFrameInfo; }
   12.79 -protected:
   12.80 -	IMPORT_C virtual void CAnimationFrame_Reserved1();
   12.81 -	IMPORT_C virtual void CAnimationFrame_Reserved2();
   12.82 -private:
   12.83 -	TInt iCAnimationFrame_Reserved;
   12.84 -private:
   12.85 -	CAnimationFrame() {};
   12.86 -	CAnimationFrame(const CAnimationFrame&); // no implementation
   12.87 -	CAnimationFrame& operator=(const CAnimationFrame&); // no implementation
   12.88 -	void ConstructL();
   12.89 -private:
   12.90 -	CFbsBitmap* iBitmap;
   12.91 -	CFbsBitmap* iMask;
   12.92 -	TFrameInfo iFrameInfo;
   12.93 -	};
   12.94 -
   12.95 -#endif //__ANIMATIONFRAME_H__
    13.1 --- a/epoc32/include/animationgroup.h	Tue Mar 16 16:12:26 2010 +0000
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,72 +0,0 @@
    13.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    13.5 -// All rights reserved.
    13.6 -// This component and the accompanying materials are made available
    13.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    13.8 -// which accompanies this distribution, and is available
    13.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   13.10 -//
   13.11 -// Initial Contributors:
   13.12 -// Nokia Corporation - initial contribution.
   13.13 -//
   13.14 -// Contributors:
   13.15 -//
   13.16 -// Description:
   13.17 -//
   13.18 -
   13.19 -#ifndef __AnimationGroup_H__
   13.20 -#define __AnimationGroup_H__
   13.21 -
   13.22 -#include <animation.h>
   13.23 -
   13.24 -class CAnimationTls;
   13.25 -
   13.26 -/**
   13.27 -Handles groups of other animations.
   13.28 -
   13.29 -When it is appropriate to have several animations starting and stopping
   13.30 -together, add them all to an animation group and control them through that.
   13.31 -
   13.32 -In addition to making the code easier to both read and write, the animation
   13.33 -group handles synchronisation issues which can occur when issuing a sequence
   13.34 -of asynchronous requests.
   13.35 -
   13.36 -Care must be taken to remove an animation from any groups it may have been
   13.37 -added to before deleting it.
   13.38 -
   13.39 -@publishedAll
   13.40 -@released
   13.41 -*/
   13.42 -class CAnimationGroup : public CAnimation
   13.43 -	{
   13.44 -public:
   13.45 -	static CAnimationGroup* NewL();
   13.46 -	~CAnimationGroup();
   13.47 -	IMPORT_C const RPointerArray<CAnimation>& Animations() const;
   13.48 -	IMPORT_C RPointerArray<CAnimation>& Animations();
   13.49 -	// From CAnimation
   13.50 -	virtual void Start(const TAnimationConfig& aConfig);
   13.51 -	virtual void Stop();
   13.52 -	virtual void Pause();
   13.53 -	virtual void Resume();
   13.54 -	virtual void Hold();
   13.55 -	virtual void Unhold();
   13.56 -	virtual void Freeze();
   13.57 -	virtual void Unfreeze();
   13.58 -	virtual void SetPosition(const TPoint& aPoint);
   13.59 -protected:
   13.60 -	IMPORT_C virtual void CAnimationGroup_Reserved1();
   13.61 -	IMPORT_C virtual void CAnimationGroup_Reserved2();
   13.62 -private:
   13.63 -	TInt iCAnimationGroup_Reserved;
   13.64 -private:
   13.65 -	CAnimationGroup();
   13.66 -	void ConstructL();
   13.67 -	CAnimationGroup(const CAnimationGroup&); // no implementation
   13.68 -	CAnimationGroup& operator=(const CAnimationGroup&);		 // no implementation
   13.69 -private:
   13.70 -	TInt iFreezeCount;
   13.71 -	CAnimationTls* iTls;
   13.72 -	RPointerArray<CAnimation> iAnimations;
   13.73 -	};
   13.74 -
   13.75 -#endif //__AnimationGroup_H__
    14.1 --- a/epoc32/include/animationmixins.h	Tue Mar 16 16:12:26 2010 +0000
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,165 +0,0 @@
    14.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    14.5 -// All rights reserved.
    14.6 -// This component and the accompanying materials are made available
    14.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    14.8 -// which accompanies this distribution, and is available
    14.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   14.10 -//
   14.11 -// Initial Contributors:
   14.12 -// Nokia Corporation - initial contribution.
   14.13 -//
   14.14 -// Contributors:
   14.15 -//
   14.16 -// Description:
   14.17 -//
   14.18 -
   14.19 -#ifndef __ANIMATIONMIXINS_H__
   14.20 -#define __ANIMATIONMIXINS_H__
   14.21 -
   14.22 -#include <e32base.h>
   14.23 -
   14.24 -/** Interface from a data provider to an animation
   14.25 -
   14.26 -An animation which has a data provider receives information from it via this
   14.27 -interface.
   14.28 -
   14.29 -You do not need to derive an implementation from this class unless you are
   14.30 -writing a new animation type.
   14.31 -
   14.32 -@publishedAll 
   14.33 -@released
   14.34 -@see CAnimationDataProvider
   14.35 -@see CAnimation
   14.36 -@see CAnimator*/
   14.37 -class MAnimationDataProviderObserver
   14.38 -	{
   14.39 -public:
   14.40 -	/** Receives an event from a data provider.
   14.41 -	@param aEvent The event code.
   14.42 -	@param aData Any data associated with the event. Can be NULL.
   14.43 -	@param aDataSize The size in bytes of the item pointed to by aData.*/
   14.44 -	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize) = 0;
   14.45 -protected:
   14.46 -	IMPORT_C virtual void MAnimationDataProviderObserver_Reserved1();
   14.47 -	IMPORT_C virtual void MAnimationDataProviderObserver_Reserved2();
   14.48 -	};
   14.49 -
   14.50 -class CAnimationTicker;
   14.51 -
   14.52 -/** Interface used by an animator to during the rendering process.
   14.53 -
   14.54 -A class implementing this interface is provided to an animator by an animation.
   14.55 -It may or may not be the animation itself.
   14.56 -
   14.57 -You do not need to derive an implementation from this class unless you are
   14.58 -writing a new animation type.
   14.59 -
   14.60 -@publishedAll 
   14.61 -@released
   14.62 -@see CAnimator*/
   14.63 -class MAnimationDrawer
   14.64 -	{
   14.65 -public:
   14.66 -	/** Called by the animator when it needs to draw a new frame */
   14.67 -	virtual void AnimatorDraw() = 0;
   14.68 -	/** Called by the animator when it is ready to begin running. 
   14.69 -	@param aSize The size of the smallest bounding rectangle that will be required to render the animation */
   14.70 -	virtual void AnimatorInitialisedL(const TSize& aSize) = 0;
   14.71 -	/** Called by the animator when it is no longer ready, usually in
   14.72 -	response to TAnimationEvent::EAnimationDataChanged */
   14.73 -	virtual void AnimatorResetL() = 0;
   14.74 -	/** Called by the animator plugin loading routine to determine the type
   14.75 -	of data for which an animator is required.
   14.76 -	@return An 8 bit descriptor containing the data type.*/
   14.77 -	virtual const TPtrC8 AnimatorDataType() const = 0;
   14.78 -	/** Called by the animator to obtain an AnimatorTicker, to which it will
   14.79 -	add itself whenever it is running.
   14.80 -	@return A reference to a CAnimationTicker.*/
   14.81 -	virtual CAnimationTicker& AnimatorTicker() = 0;
   14.82 -private:
   14.83 -	IMPORT_C virtual void MAnimationDrawer_Reserved1();
   14.84 -	IMPORT_C virtual void MAnimationDrawer_Reserved2();
   14.85 -	};
   14.86 -
   14.87 -class CAnimation;
   14.88 -
   14.89 -/** Interface used by an animation to report events to the client application.
   14.90 -
   14.91 -An animation can inform the client application of particular events through this
   14.92 -mechanism.  Only errors are reported in this way in v9.1, but more events may
   14.93 -be added in future.
   14.94 -
   14.95 -Use of this interface by the client application is optional.
   14.96 -
   14.97 -@publishedAll 
   14.98 -@released
   14.99 -@see CAnimation*/
  14.100 -class MAnimationObserver
  14.101 -	{
  14.102 -public:
  14.103 -	/** Represents generic events which can be sent to the observer. */
  14.104 -	enum TEvent
  14.105 -		{
  14.106 -		/** Indicates that an error has occurred in the data provider.
  14.107 -		For events of this type, aData is a pointer to a TInt error code. */
  14.108 -		EDataProviderError,
  14.109 -		/** Indicates that the animator initialised (and therefore knows it's size) */
  14.110 -		EAnimationInitialized=0x01,
  14.111 -		/** Any user defined animations introducing new events should use
  14.112 -		values greater than EReserved */
  14.113 -		EReserved=0xFFFF,
  14.114 -		};
  14.115 -public:
  14.116 -	/** Receives events from an animation.
  14.117 -	
  14.118 -	The receiver is not required to take any action atall in response to this
  14.119 -	call.  The receiver should not delete the animation whilst responding
  14.120 -	to this call.
  14.121 -	
  14.122 -	@param aSender A reference to the animation which sent the event.
  14.123 -	@param aEvent The event code.
  14.124 -	@param aData An event specific data item.*/
  14.125 -	virtual void AnimationEvent(CAnimation& aSender, TInt aEvent, TAny* aData) = 0;
  14.126 -protected:
  14.127 -	IMPORT_C virtual void MAnimationObserver_Reserved1();
  14.128 -	IMPORT_C virtual void MAnimationObserver_Reserved2();
  14.129 -	};
  14.130 -
  14.131 -/** Interface used for receiving animation ticks.
  14.132 -
  14.133 -Animators receive regular ticks, during which they perform any required processing.
  14.134 -
  14.135 -You do not need to derive an implementation from this class unless you are writing
  14.136 -a new animator type.
  14.137 -
  14.138 -@publishedAll 
  14.139 -@released
  14.140 -@see CAnimator
  14.141 -@see CAnimationTicker*/
  14.142 -class MAnimationTickee
  14.143 -	{
  14.144 -public:
  14.145 -	/** This function is called regularly by any ticker to which the tickee
  14.146 -	has been added */
  14.147 -	virtual void Tick() = 0;
  14.148 -protected:
  14.149 -	IMPORT_C virtual void MAnimationTickee_Reserved1();
  14.150 -	IMPORT_C virtual void MAnimationTickee_Reserved2();
  14.151 -	};
  14.152 -
  14.153 -/** Internal interface used by the ICL data loader to communicate with the
  14.154 -ICL data provider. Not intended for user derivation.
  14.155 -@internalComponent*/
  14.156 -class MICLAnimationDataLoaderObserver
  14.157 -	{
  14.158 -public:
  14.159 -	enum TDataLoaderEvent
  14.160 -		{
  14.161 -		EImagePartialConvert,
  14.162 -		EImageConvertComplete,
  14.163 -		};
  14.164 -public:	
  14.165 -	IMPORT_C virtual void DataLoaderEventL(TDataLoaderEvent aMessage, TInt aError) = 0;
  14.166 -	};
  14.167 -
  14.168 -#endif //__ANIMATIONMIXINS_H__
    15.1 --- a/epoc32/include/animationticker.h	Tue Mar 16 16:12:26 2010 +0000
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,64 +0,0 @@
    15.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    15.5 -// All rights reserved.
    15.6 -// This component and the accompanying materials are made available
    15.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    15.8 -// which accompanies this distribution, and is available
    15.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   15.10 -//
   15.11 -// Initial Contributors:
   15.12 -// Nokia Corporation - initial contribution.
   15.13 -//
   15.14 -// Contributors:
   15.15 -//
   15.16 -// Description:
   15.17 -//
   15.18 -
   15.19 -#ifndef __ANIMATIONTICKER_H__
   15.20 -#define __ANIMATIONTICKER_H__
   15.21 -
   15.22 -#include <e32base.h>
   15.23 -
   15.24 -class MAnimationTickee;
   15.25 -
   15.26 -/** This provides timing information for animators.
   15.27 -
   15.28 -You do not need to instantiate an object of this type unless you are writing a
   15.29 -new animation type.
   15.30 -
   15.31 -@see MAnimationTickee
   15.32 -@see CAnimationTls
   15.33 -@publishedAll
   15.34 -@released*/
   15.35 -NONSHARABLE_CLASS(CAnimationTicker) : public CBase
   15.36 -	{
   15.37 -public:
   15.38 -    IMPORT_C static CAnimationTicker* NewL(TTimeIntervalMicroSeconds32 aTickLength = 100000);
   15.39 -    IMPORT_C ~CAnimationTicker();
   15.40 -    
   15.41 -	IMPORT_C TInt Add(MAnimationTickee* aTickee);
   15.42 -	IMPORT_C TInt Remove(MAnimationTickee* aTickee);
   15.43 -	IMPORT_C void Freeze();
   15.44 -	IMPORT_C void Unfreeze();
   15.45 -	
   15.46 -	/** This provides the resolution of the timer.
   15.47 -	@return iTickLength The resolution of the timer */
   15.48 -	inline const TTimeIntervalMicroSeconds32& TickLength() const { return iTickLength; }
   15.49 -	void OnTick();
   15.50 -protected:
   15.51 -	IMPORT_C virtual void CAnimationTicker_Reserved1();
   15.52 -	IMPORT_C virtual void CAnimationTicker_Reserved2();
   15.53 -private:
   15.54 -	TInt iCAnimationTicker_Reserved;
   15.55 -private:
   15.56 -	CAnimationTicker();
   15.57 -	void ConstructL(TTimeIntervalMicroSeconds32 aTickLength);
   15.58 -	void StartTickingL();
   15.59 -	void StopTicking();
   15.60 -private:
   15.61 -	TInt iFreeze;
   15.62 -	TTimeIntervalMicroSeconds32 iTickLength;
   15.63 -	CPeriodic* iPeriodic;
   15.64 -	RPointerArray<MAnimationTickee> iTickees;
   15.65 -	};
   15.66 -
   15.67 -#endif //__ANIMATIONTICKER_H__
    16.1 --- a/epoc32/include/animationtls.h	Tue Mar 16 16:12:26 2010 +0000
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,54 +0,0 @@
    16.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    16.5 -// All rights reserved.
    16.6 -// This component and the accompanying materials are made available
    16.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    16.8 -// which accompanies this distribution, and is available
    16.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   16.10 -//
   16.11 -// Initial Contributors:
   16.12 -// Nokia Corporation - initial contribution.
   16.13 -//
   16.14 -// Contributors:
   16.15 -//
   16.16 -// Description:
   16.17 -//
   16.18 -
   16.19 -#ifndef __ANIMATIONTLS_H__
   16.20 -#define __ANIMATIONTLS_H__
   16.21 -
   16.22 -#include <e32base.h>
   16.23 -
   16.24 -class CAnimationTicker;
   16.25 -
   16.26 -/** This is a wrapper around the thread local storage, which simplifies its
   16.27 -use for obtaining a CAnimationTicker object that can be shared between
   16.28 -animations.  The object is reference counted, and only one will exist per
   16.29 -thread per DLL at any given time.
   16.30 -
   16.31 -You do not need to instantiate an object of this type unless you are writing a
   16.32 -new animation type.  If you are writing a new animation type it is optional.
   16.33 -
   16.34 -@see CAnimationTicker
   16.35 -@publishedAll
   16.36 -@released */
   16.37 -NONSHARABLE_CLASS(CAnimationTls) : public CBase
   16.38 -	{
   16.39 -public:
   16.40 -	IMPORT_C static CAnimationTls* NewL();
   16.41 -	IMPORT_C void Close();
   16.42 -	IMPORT_C CAnimationTicker* Ticker();
   16.43 -protected:
   16.44 -	CAnimationTls();
   16.45 -	~CAnimationTls();
   16.46 -	IMPORT_C virtual void CAnimationTls_Reserved1();
   16.47 -	IMPORT_C virtual void CAnimationTls_Reserved2();
   16.48 -protected:
   16.49 -	/** A Reference count of the object */
   16.50 -	TInt iRefCount;
   16.51 -	/** This provides timing information for animators */
   16.52 -	CAnimationTicker* iTimer;
   16.53 -private:
   16.54 -	TInt iCAnimationTls_Reserved;
   16.55 -	};
   16.56 -	
   16.57 -#endif // __ANIMATIONTLS_H__
    17.1 --- a/epoc32/include/animator.h	Tue Mar 16 16:12:26 2010 +0000
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,82 +0,0 @@
    17.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    17.5 -// All rights reserved.
    17.6 -// This component and the accompanying materials are made available
    17.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    17.8 -// which accompanies this distribution, and is available
    17.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   17.10 -//
   17.11 -// Initial Contributors:
   17.12 -// Nokia Corporation - initial contribution.
   17.13 -//
   17.14 -// Contributors:
   17.15 -//
   17.16 -// Description:
   17.17 -//
   17.18 -
   17.19 -#ifndef __ANIMATOR_H__
   17.20 -#define __ANIMATOR_H__
   17.21 -
   17.22 -#include <e32base.h>
   17.23 -
   17.24 -const TUid KAnimatorInterfaceUid = {0x10204F59};
   17.25 -
   17.26 -class MAnimationDrawer;
   17.27 -class CBitmapContext;
   17.28 -class TAnimationConfig;
   17.29 -
   17.30 -/**
   17.31 -Pure virtual base class for animators.
   17.32 -
   17.33 -Each data type supported by the animation framework is represented by an
   17.34 -animator, which handles the data interpretation, timing and control.  Each
   17.35 -animator is provided in the form of an ECOM plugin.
   17.36 -
   17.37 -You do not need to instatiate animators in a client application.  This is
   17.38 -handled by the animation classes.
   17.39 -
   17.40 -@see CAnimation
   17.41 -@publishedAll
   17.42 -@released
   17.43 -*/
   17.44 -class CAnimator : public CBase
   17.45 -	{
   17.46 -public:
   17.47 -    // ECOM instatiation and destruction:
   17.48 -    IMPORT_C static CAnimator* NewL(MAnimationDrawer* aRenderer);
   17.49 -    IMPORT_C virtual ~CAnimator();
   17.50 -	/** Starts the animation running.
   17.51 -	@see TAnimationConfig
   17.52 -	@param aConfig Runtime settings*/
   17.53 -	virtual void Start(const TAnimationConfig& aConfig) = 0;
   17.54 -	/** Stops the animation and rewinds it.*/
   17.55 -	virtual void Stop() = 0;
   17.56 -	/** Pauses the animation.*/
   17.57 -	virtual void Pause() = 0;
   17.58 -	/** Resumes a paused animation.*/
   17.59 -	virtual void Resume() = 0;
   17.60 -	/** Puts an animation on hold. */
   17.61 -	virtual void Hold() = 0;
   17.62 -	/** Restores a held animation and brings it back into synch. */
   17.63 -	virtual void Unhold() = 0;
   17.64 -	/** Receives data from a data provider.  The mechanism by which data is
   17.65 -	actually passed depends on the animation type.
   17.66 -	
   17.67 -	@see MAnimationDataProviderObserver
   17.68 -	@param aEvent The event identifier
   17.69 -	@param aData A pointer to any data for the event
   17.70 -	@param aDataSize The length of the data in aData*/
   17.71 -	virtual void DataEventL(TInt aEvent, TAny* aData, TInt aDataSize) = 0;
   17.72 -	/** Called from the renderer and draws the animation.
   17.73 -	@param aBitmapContext The context on which the animation will be drawn*/
   17.74 -	virtual void Draw(CBitmapContext& aBitmapContext) const = 0;
   17.75 -	/** Called from the renderer and draws the mask for the animation.
   17.76 -	@param aBitmapContext The context on which the mask will be drawn*/
   17.77 -	virtual void DrawMask(CBitmapContext& aBitmapContext) const = 0;
   17.78 -protected:
   17.79 -	/** Animator ECOM Plugin identifier */
   17.80 -	TUid iDtor_ID_Key;
   17.81 -	/** Data */
   17.82 -	TInt iLoop;
   17.83 -	};
   17.84 -
   17.85 -#endif //__ANIMATOR_H__
    18.1 --- a/epoc32/include/ansicomp.h	Tue Mar 16 16:12:26 2010 +0000
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,29 +0,0 @@
    18.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    18.5 -// All rights reserved.
    18.6 -// This component and the accompanying materials are made available
    18.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    18.8 -// which accompanies this distribution, and is available
    18.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   18.10 -//
   18.11 -// Initial Contributors:
   18.12 -// Nokia Corporation - initial contribution.
   18.13 -//
   18.14 -// Contributors:
   18.15 -//
   18.16 -// Description:
   18.17 -// Enforce ANSI compliance on Microsoft compilers in 'For loop' behaviour
   18.18 -// 
   18.19 -//
   18.20 -
   18.21 -
   18.22 -#if !defined(__ANSICOMP_H__)
   18.23 -#define __ANSICOMP_H__
   18.24 -
   18.25 -#if defined(__VC32__) && _MSC_VER>=1100
   18.26 -#pragma warning(disable : 4127)		// warning C4127 : conditional expression is constant
   18.27 -
   18.28 -#define for if(false);else for		// Enforce the definition of a loop variable to local scope
   18.29 -
   18.30 -#endif
   18.31 -
   18.32 -#endif    // __ANSICOMP_H__
    19.1 --- a/epoc32/include/apacmdln.h	Tue Mar 16 16:12:26 2010 +0000
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,178 +0,0 @@
    19.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    19.5 -// All rights reserved.
    19.6 -// This component and the accompanying materials are made available
    19.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    19.8 -// which accompanies this distribution, and is available
    19.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   19.10 -//
   19.11 -// Initial Contributors:
   19.12 -// Nokia Corporation - initial contribution.
   19.13 -//
   19.14 -// Contributors:
   19.15 -//
   19.16 -// Description:
   19.17 -//
   19.18 -
   19.19 -#if !defined(__APACMDLN_H__)
   19.20 -#define __APACMDLN_H__
   19.21 -
   19.22 -#if !defined(__E32BASE_H__)
   19.23 -#include <e32base.h>
   19.24 -#endif
   19.25 -
   19.26 -#if !defined(__APADEF_H__)
   19.27 -#include <apadef.h>
   19.28 -#endif
   19.29 -
   19.30 -#if !defined(__F32FILE_H__)
   19.31 -#include <f32file.h>
   19.32 -#endif
   19.33 -
   19.34 -#if !defined(__S32STRM_H__)
   19.35 -#include <s32strm.h>
   19.36 -#endif
   19.37 -
   19.38 -
   19.39 -class CApaCommandLine : public CBase
   19.40 -/** Information for launching an application.
   19.41 -
   19.42 -This is often referred to as a command line and contains:
   19.43 -
   19.44 -the name of an application EXE to be launched,
   19.45 -
   19.46 -a document name,
   19.47 -
   19.48 -a command code that defines the way the application is launched
   19.49 -
   19.50 -trailing data; the structure of this depends on the application to be launched.
   19.51 -
   19.52 -The information is held in a buffer implemented by a heap descriptor. 
   19.53 -
   19.54 -@publishedAll
   19.55 -@released */
   19.56 -	{
   19.57 -public:
   19.58 -	// construction/destruction
   19.59 -	IMPORT_C static CApaCommandLine* NewL();
   19.60 -	IMPORT_C static CApaCommandLine* NewLC();
   19.61 -	IMPORT_C ~CApaCommandLine();
   19.62 -
   19.63 -	// Getting/setting the CApaCommandLine to/from process environment-slots
   19.64 -	IMPORT_C void SetProcessEnvironmentL(RProcess& aProcess) const;
   19.65 -	IMPORT_C static TInt GetCommandLineFromProcessEnvironment(CApaCommandLine*& aCommandLine);
   19.66 -
   19.67 -	// Getting/setting the CApaCommandLine to/from a server IPC-message
   19.68 -	IMPORT_C void GetIpcArgsLC(TIpcArgs& aIpcArgs) const;
   19.69 -	IMPORT_C void ConstructCmdLineFromMessageL(const RMessage2& aMessage);
   19.70 -
   19.71 -	// operations on the document name
   19.72 -	IMPORT_C void SetDocumentNameL(const TDesC& aDocName);
   19.73 -	IMPORT_C TPtrC DocumentName() const;
   19.74 -
   19.75 -	// operations on the executable name
   19.76 -	IMPORT_C void SetExecutableNameL(const TDesC& aAppName);
   19.77 -	IMPORT_C TPtrC ExecutableName() const;
   19.78 -	
   19.79 -	IMPORT_C void SetOpaqueDataL(const TDesC8& aOpaqueData);
   19.80 -	IMPORT_C TPtrC8 OpaqueData() const;
   19.81 -
   19.82 -	// operations on the tail end
   19.83 -	IMPORT_C void SetTailEndL(const TDesC8& aTailEnd);
   19.84 -	IMPORT_C TPtrC8 TailEnd() const;
   19.85 -
   19.86 -	// operations on the command
   19.87 -	IMPORT_C void SetCommandL(TApaCommand aCommand);
   19.88 -	IMPORT_C TApaCommand Command() const;
   19.89 -
   19.90 -	// operations on the parent process id
   19.91 -	IMPORT_C void SetParentProcessId(TProcessId aProcessId);
   19.92 -	IMPORT_C TProcessId ParentProcessId() const;
   19.93 -
   19.94 -	// operations on the file passed by handle
   19.95 -	IMPORT_C void SetFileByHandleL(const RFile& aFile);
   19.96 -	IMPORT_C void GetFileByHandleL(RFile& aFile) const;
   19.97 -public:
   19.98 -
   19.99 -	// operations on the server requirement/differentiator number - 0 means no server, non-zero sets the differentiator for the server name
  19.100 -	IMPORT_C void SetServerNotRequiredL();
  19.101 -	IMPORT_C void SetServerRequiredL(TUint aServerDifferentiator);
  19.102 -	IMPORT_C TUint ServerRequired() const;
  19.103 -
  19.104 -	// operations to support starting an application with a specific screen number
  19.105 -	IMPORT_C void SetDefaultScreenL(TInt aDefaultScreenNumber);
  19.106 -	IMPORT_C TInt DefaultScreen() const;
  19.107 -	IMPORT_C TBool IsDefaultScreenSet() const;
  19.108 -
  19.109 -	// Operations to support window chaining
  19.110 -	IMPORT_C void SetParentWindowGroupID(TInt aParentWindowGroupID);
  19.111 -	IMPORT_C TInt ParentWindowGroupID() const;
  19.112 -
  19.113 -	// operations to support passing memory-allocation failure settings in to applications
  19.114 -	IMPORT_C void SetDebugMemFailL(TInt aDebugMemFail);
  19.115 -	IMPORT_C TInt DebugMemFail() const;
  19.116 -
  19.117 -	// operations to support the instrumentation (i.e. profiling) of application startup
  19.118 -	IMPORT_C void SetAppStartupInstrumentationEventIdBaseL(TInt aEventIdBase);
  19.119 -	IMPORT_C TInt AppStartupInstrumentationEventIdBase() const;
  19.120 -
  19.121 -	IMPORT_C static TInt EnvironmentSlotForPublicUse(TInt aIndex);
  19.122 -
  19.123 -private:
  19.124 -	struct SOption
  19.125 -		{
  19.126 -		const TDesC* iToken;
  19.127 -		TInt* iResult;
  19.128 -		TRadix iRadix;
  19.129 -		HBufC8* iHBufC8Result;
  19.130 -		};
  19.131 -
  19.132 -private:
  19.133 -	CApaCommandLine();
  19.134 -	void SetServerDifferentiatorL(TUint aServerDifferentiator);
  19.135 -	void ExternalizeL(RWriteStream& aStream) const;
  19.136 -	void InternalizeL(RReadStream& aStream);
  19.137 -	HBufC8* StreamableAttributesLC() const;
  19.138 -	void GetCommandLineFromProcessEnvironmentL();
  19.139 -	TInt Parse(const TDesC& aCmdLine);
  19.140 -	TPtrC StripQuotes(const TDesC& aDes) const;
  19.141 -
  19.142 -private:
  19.143 -	enum
  19.144 -		{
  19.145 -		EEnvironmentSlotUnused=0,
  19.146 -
  19.147 -		EEnvironmentSlotMain=1,
  19.148 -		EEnvironmentSlotFsSession=2,
  19.149 -		EEnvironmentSlotFile=3,
  19.150 -
  19.151 -		EFirstEnvironmentSlotForPublicUse=8,
  19.152 -		ENumberOfEnvironmentSlotsForPublicUse=4
  19.153 -		};
  19.154 -
  19.155 -	enum
  19.156 -		{
  19.157 -		EIpcSlotMain=0,
  19.158 -		EIpcSlotFsSession=1,
  19.159 -		EIpcSlotFile=2
  19.160 -		};
  19.161 -public:
  19.162 -	enum
  19.163 -		{
  19.164 -		EIpcFirstFreeSlot=3
  19.165 -		};
  19.166 -private:
  19.167 -	HBufC* iDocumentName;
  19.168 -	HBufC* iExecutableName;
  19.169 -	HBufC8* iOpaqueData;
  19.170 -	HBufC8* iTailEnd;
  19.171 -	TApaCommand iCommand;
  19.172 -	TUint iServerDifferentiator;
  19.173 -	TInt iDefaultScreenNumber;
  19.174 -	TInt iParentWindowGroupID;
  19.175 -	TInt iDebugMemFail;
  19.176 -	TInt iAppStartupInstrumentationEventIdBase;
  19.177 -	RFile iFile;
  19.178 -	TProcessId iParentProcessId;
  19.179 -	};
  19.180 -
  19.181 -#endif
    20.1 --- a/epoc32/include/apadbase.h	Tue Mar 16 16:12:26 2010 +0000
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,127 +0,0 @@
    20.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    20.5 -// All rights reserved.
    20.6 -// This component and the accompanying materials are made available
    20.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    20.8 -// which accompanies this distribution, and is available
    20.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   20.10 -//
   20.11 -// Initial Contributors:
   20.12 -// Nokia Corporation - initial contribution.
   20.13 -//
   20.14 -// Contributors:
   20.15 -//
   20.16 -// Description:
   20.17 -//
   20.18 -
   20.19 -#ifndef __APADBASE_H__
   20.20 -#define __APADBASE_H__
   20.21 -
   20.22 -#if !defined(__E32STD_H__)
   20.23 -#include <e32std.h>
   20.24 -#endif
   20.25 -#if !defined(__S32STD_H__)
   20.26 -#include <s32std.h>
   20.27 -#endif
   20.28 -#if !defined(__GDI_H__)
   20.29 -#include <gdi.h>
   20.30 -#endif
   20.31 -
   20.32 -
   20.33 -class CApaDoorBase : public CPicture
   20.34 -// Base class for a wrapper for embedded CApaDocuments
   20.35 -/** The base class for the graphic representation of an embedded document.
   20.36 -
   20.37 -An embedded document can be represented either as an icon or as a glass picture. 
   20.38 -Such a graphic representation is known as a door.
   20.39 -
   20.40 -The class is intended for derivation.
   20.41 -
   20.42 -@publishedAll 
   20.43 -@released
   20.44 -@see CApaDoor
   20.45 -@see CApaModelDoor */
   20.46 -	{
   20.47 -public:
   20.48 -	
   20.49 -	/** Defines the possible formats for the graphical representation of the embedded 
   20.50 -	document. */
   20.51 -	enum TFormat {
   20.52 -		/** The representation is an icon. */
   20.53 -		EIconic,
   20.54 -		/** The representation is a glass door. */
   20.55 -		EGlassDoor,
   20.56 -		/** The representation is a glass door but has been temporarily switched to an icon. */
   20.57 -		ETemporarilyIconic
   20.58 -		};
   20.59 -public:
   20.60 -	inline TFormat Format()const;
   20.61 -	inline TUid Source()const;
   20.62 -	inline void SetSource(TUid aSource);
   20.63 -	// Virtuals from CPicture
   20.64 -	IMPORT_C virtual TStreamId StoreL(CStreamStore& aStore) const;
   20.65 -	IMPORT_C virtual void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight); 
   20.66 -	IMPORT_C virtual void SetCropInTwips(const TMargins& aMargins); 
   20.67 -	IMPORT_C virtual TPictureCapability Capability() const;
   20.68 -	IMPORT_C virtual void GetCropInTwips(TMargins& aMargins) const; 
   20.69 -	IMPORT_C virtual TInt ScaleFactorWidth() const; 
   20.70 -	IMPORT_C virtual TInt ScaleFactorHeight() const; 
   20.71 -	IMPORT_C virtual TBool LineBreakPossible(TUint aClass,TBool aBeforePicture,TBool aHaveSpaces) const;
   20.72 -	IMPORT_C virtual TBool NativePixelSize(TSize& aPixelSize);
   20.73 -protected:
   20.74 -	IMPORT_C CApaDoorBase();
   20.75 -	IMPORT_C void ExternalizeBaseStreamL(CStreamStore& aStore,CStreamDictionary& aStreamDict)const;
   20.76 -	IMPORT_C TSize InternalizeBaseStreamL(const CStreamStore& aStore,const CStreamDictionary& aStreamDict); // returns current size in twips
   20.77 -
   20.78 -private:
   20.79 -	IMPORT_C virtual void CApaDoorBase_Reserved1();
   20.80 -	IMPORT_C virtual void CApaDoorBase_Reserved2();
   20.81 -protected:
   20.82 -
   20.83 -	/** Returns the size of the glass door, in twips.
   20.84 -	
   20.85 -	A concrete implementation of this function is provided by derived classes.
   20.86 -	
   20.87 -	@return The size of the glass door, in twips. 
   20.88 -	
   20.89 -	@publishedAll 
   20.90 -	@released */
   20.91 -	virtual TSize GlassDoorSize()const=0;
   20.92 -protected:
   20.93 -	TFormat iFormat;
   20.94 -	TUid iSource; // foreign representation of a translated door (eg MS Word doc)
   20.95 -
   20.96 -private:
   20.97 -	TInt iCApaDoorBase_Reserved1;
   20.98 -	};
   20.99 -
  20.100 -//
  20.101 -// inlines
  20.102 -//
  20.103 -
  20.104 -inline CApaDoorBase::TFormat CApaDoorBase::Format()const
  20.105 -	/** Gets the current format of the representation of the embedded document.
  20.106 -	
  20.107 -	@return The format for the representation of the embedded document. */
  20.108 -	{ return iFormat; }
  20.109 -
  20.110 -inline TUid CApaDoorBase::Source()const
  20.111 -	/** Gets the UID that identifies this door when the source originates on a non-Symbian 
  20.112 -	OS device.
  20.113 -	
  20.114 -	This is used by converters.
  20.115 -	
  20.116 -	@return The UID for the non-Symbian OS source. For a source that originates 
  20.117 -	on a Symbian OS phone, this is KNullUid. */
  20.118 -	{ return iSource; }
  20.119 -
  20.120 -inline void CApaDoorBase::SetSource(TUid aSource)
  20.121 -	/** Sets the UID that identifies this door when the source originates on a non-Symbian 
  20.122 -	OS device.
  20.123 -	
  20.124 -	This is used by converters.
  20.125 -	
  20.126 -	@param aSource The UID for the non-Symbian OS source. For a source that originates 
  20.127 -	on a Symbian OS phone, this is KNullUid. */
  20.128 -	{ iSource=aSource; }
  20.129 -
  20.130 -#endif
    21.1 --- a/epoc32/include/apadef.h	Tue Mar 16 16:12:26 2010 +0000
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,291 +0,0 @@
    21.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    21.5 -// All rights reserved.
    21.6 -// This component and the accompanying materials are made available
    21.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    21.8 -// which accompanies this distribution, and is available
    21.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   21.10 -//
   21.11 -// Initial Contributors:
   21.12 -// Nokia Corporation - initial contribution.
   21.13 -//
   21.14 -// Contributors:
   21.15 -//
   21.16 -// Description:
   21.17 -//
   21.18 -
   21.19 -#ifndef __APADEF_H__
   21.20 -#define __APADEF_H__
   21.21 -
   21.22 -#if !defined(__E32BASE_H__)
   21.23 -#include <e32base.h>
   21.24 -#endif
   21.25 -
   21.26 -// comand line tokens
   21.27 -
   21.28 -/**
   21.29 -@internalComponent
   21.30 -*/
   21.31 -const TUint KApaCommandLetterOpen='O';
   21.32 -
   21.33 -/**
   21.34 -@internalComponent
   21.35 -*/
   21.36 -const TUint KApaCommandLetterCreate='C';
   21.37 -
   21.38 -/**
   21.39 -@internalComponent
   21.40 -*/
   21.41 -const TUint KApaCommandLetterRun='R';
   21.42 -
   21.43 -/**
   21.44 -@internalComponent
   21.45 -*/
   21.46 -const TUint KApaCommandLetterBackground='B';
   21.47 -
   21.48 -/**
   21.49 -@internalComponent
   21.50 -*/
   21.51 -const TUint KApaCommandLetterViewActivate='V';
   21.52 -
   21.53 -/**
   21.54 -@internalComponent
   21.55 -*/
   21.56 -const TUint KApaCommandLetterRunWithoutViews='W';
   21.57 -
   21.58 -/**
   21.59 -@internalComponent
   21.60 -*/
   21.61 -const TUint KApaCommandLetterBackgroundAndWithoutViews='A';
   21.62 -
   21.63 -/** Defines the command codes used to indicate the way an application is to be 
   21.64 -launched.
   21.65 -
   21.66 -@publishedAll 
   21.67 -@released
   21.68 -@see CApaCommandLine */
   21.69 -enum TApaCommand
   21.70 -	{
   21.71 -	/** The application is to open the document specified on the command line. */
   21.72 -	EApaCommandOpen,
   21.73 -	/** The application is to create the document specified on the command line. */
   21.74 -	EApaCommandCreate,
   21.75 -	/** The application is to run and open the last used document. */
   21.76 -	EApaCommandRun,
   21.77 -	/** The application is to open the last used document and to run in the background. */
   21.78 -	EApaCommandBackground,
   21.79 -	/** Reserved for future use. */
   21.80 -	EApaCommandViewActivate,
   21.81 -	/** The application is to run without views.
   21.82 -	
   21.83 -	This should NOT be used for view based applications. */
   21.84 -	EApaCommandRunWithoutViews,
   21.85 -	/** The application is to run in the background and viewless mode */
   21.86 -	EApaCommandBackgroundAndWithoutViews
   21.87 -	};
   21.88 -
   21.89 -/**
   21.90 -@publishedAll 
   21.91 -@released
   21.92 -*/
   21.93 -const TInt KApaMaxAppCaption=0x100;	// Default name is a file name, so the same limit is used
   21.94 -
   21.95 -// TApaAppCaption is the current language name of the app (for task lists, dialogs etc)
   21.96 -
   21.97 -/** Defines a modifiable buffer descriptor to contain the caption or the short caption 
   21.98 -for an application. 
   21.99 -
  21.100 -@publishedAll 
  21.101 -@released */
  21.102 -typedef TBuf<KApaMaxAppCaption> TApaAppCaption; 
  21.103 -
  21.104 -/**
  21.105 -@internalComponent
  21.106 -*/
  21.107 -const TInt KApaMaxCommandLine=0x100;	
  21.108 -
  21.109 -/**
  21.110 -@internalComponent
  21.111 -*/
  21.112 -typedef TBuf<KApaMaxCommandLine> TApaCommandLine;
  21.113 -
  21.114 -/**
  21.115 -@internalComponent
  21.116 -*/
  21.117 -const TInt KApaMaxAppFileName=0x10;	// Length of App's filename without path or extension (not it's caption)
  21.118 -
  21.119 -/**
  21.120 -@internalComponent
  21.121 -*/
  21.122 -typedef TBuf<KApaMaxAppFileName> TApaAppFileName;
  21.123 -
  21.124 -/** Maximum length of an application group name.
  21.125 -
  21.126 -@publishedAll 
  21.127 -@released
  21.128 -@see TApaAppGroupName */
  21.129 -const TInt KApaMaxAppGroupName=0x10; // Length of App's logical groupname
  21.130 -
  21.131 -/** An application group name.
  21.132 -
  21.133 -This is a name that allows applications to be categorized, for instance "Games" 
  21.134 -or "Utilities". 
  21.135 -
  21.136 -@publishedAll 
  21.137 -@released */
  21.138 -typedef TBuf<KApaMaxAppGroupName> TApaAppGroupName;
  21.139 -
  21.140 -/** The hexadecimal value of the 2nd UID that identifies a DLL as being an ASCII UI 
  21.141 -application. In .mmp files, the hexadecimal number is explicitly inserted 
  21.142 -as the first value following the UID keyword. 
  21.143 -
  21.144 -@publishedAll 
  21.145 -@deprecated */
  21.146 -const TInt KAppUidValue8 = 0x1000006c;
  21.147 -
  21.148 -/** The 2nd UID that identifies a DLL as being an ASCII UI application. 
  21.149 -
  21.150 -@publishedAll 
  21.151 -@deprecated */
  21.152 -const TUid KUidApp8={KAppUidValue8};
  21.153 -
  21.154 -/** The hexadecimal value of the 2nd UID that defines a DLL as being a Unicode 
  21.155 -UI application. In .mmp files, the hexadecimal number is explicitly inserted 
  21.156 -as the first value following the UID keyword.
  21.157 -
  21.158 -@publishedAll 
  21.159 -@released
  21.160 -@see KAppUidValue */
  21.161 -const TInt KAppUidValue16 = 0x100039CE;
  21.162 -
  21.163 -/** The 2nd UID that defines a DLL as being a Unicode UI application.
  21.164 -
  21.165 -@publishedAll 
  21.166 -@released
  21.167 -@see KUidApp */
  21.168 -const TUid KUidApp16={KAppUidValue16};
  21.169 -
  21.170 -//
  21.171 -// 2nd Uid for app doc files
  21.172 -/**
  21.173 -@publishedAll 
  21.174 -@deprecated
  21.175 -*/
  21.176 -const TUid KUidAppDllDoc8={268435565}; 
  21.177 -
  21.178 -/**
  21.179 -@publishedAll 
  21.180 -@released
  21.181 -*/
  21.182 -const TUid KUidAppDllDoc16={0x10003A12};
  21.183 -
  21.184 -/** The UID encoded in a TPictureHeader that identifies a picture as a door (for 
  21.185 -ASCII builds). 
  21.186 -
  21.187 -@publishedAll 
  21.188 -@deprecated
  21.189 -*/
  21.190 -const TUid KUidPictureTypeDoor8={268435537};
  21.191 -
  21.192 -/** The UID encoded in a TPictureHeader that identifies a picture as a door (for 
  21.193 -Unicode builds).
  21.194 -
  21.195 -@publishedAll 
  21.196 -@released
  21.197 -@see KUidPictureTypeDoor */
  21.198 -const TUid KUidPictureTypeDoor16={0x10003A33};
  21.199 -
  21.200 -//
  21.201 -// Uid's for streams in stream dictionaries
  21.202 -/**
  21.203 -@publishedAll 
  21.204 -@deprecated
  21.205 -*/
  21.206 -const TUid KUidSecurityStream8={268435661};
  21.207 -
  21.208 -/**
  21.209 -@publishedAll 
  21.210 -@released
  21.211 -*/
  21.212 -const TUid KUidSecurityStream16={0x10003A40};
  21.213 -
  21.214 -/**
  21.215 -@publishedAll 
  21.216 -@deprecated
  21.217 -*/
  21.218 -const TUid KUidAppIdentifierStream8={268435593}; // stream containing a TApaAppIdentifier
  21.219 -
  21.220 -/**
  21.221 -@publishedAll 
  21.222 -@released
  21.223 -*/
  21.224 -const TUid KUidAppIdentifierStream16={0x10003A34};
  21.225 -
  21.226 -#ifdef _UNICODE
  21.227 -/** The type-independent 2nd UID that identifies a DLL as being a UI application.
  21.228 -
  21.229 -@publishedAll 
  21.230 -@released
  21.231 -@see KUidApp16
  21.232 -@see KUidApp8 */
  21.233 -#define KUidApp KUidApp16
  21.234 -/** The type-independent hexadecimal value of the 2nd UID that identifies a DLL as 
  21.235 -being a UI application.
  21.236 -
  21.237 -@publishedAll 
  21.238 -@released
  21.239 -@see KAppUidValue16
  21.240 -@see KAppUidValue8 */
  21.241 -#define KAppUidValue KAppUidValue16 //lint !e1923 supress could become const variable
  21.242 -/**
  21.243 -@publishedAll 
  21.244 -@released
  21.245 -*/
  21.246 -#define KUidAppDllDoc KUidAppDllDoc16
  21.247 -/** The type independent UID encoded in a TPictureHeader that identifies a picture 
  21.248 -as a door.
  21.249 -
  21.250 -@publishedAll 
  21.251 -@released
  21.252 -@see KUidPictureTypeDoor16
  21.253 -@see KUidPictureTypeDoor8
  21.254 -@see TPictureHeader
  21.255 -@see TApaModelDoorFactory::NewPictureL() */
  21.256 -#define KUidPictureTypeDoor KUidPictureTypeDoor16
  21.257 -/**
  21.258 -@publishedAll 
  21.259 -@released
  21.260 -*/
  21.261 -#define KUidAppIdentifierStream KUidAppIdentifierStream16
  21.262 -/**
  21.263 -@publishedAll 
  21.264 -@released
  21.265 -*/
  21.266 -#define KUidSecurityStream KUidSecurityStream16
  21.267 -#else
  21.268 -/** The type independent 2nd UID that defines a DLL as being a UI application.
  21.269 -
  21.270 -@see KUidApp16
  21.271 -@see KUidApp8 */
  21.272 -#define KUidApp KUidApp8
  21.273 -/** The type independent hexadecimal value of the 2nd UID that defines a DLL as 
  21.274 -being a UI application.
  21.275 -
  21.276 -@see KAppUidValue16
  21.277 -@see KAppUidValue8 */
  21.278 -#define KAppUidValue KAppUidValue8
  21.279 -#define KUidAppDllDoc KUidAppDllDoc8
  21.280 -/** The type independent UID encoded in a TPictureHeader that identifies a picture 
  21.281 -as a door.
  21.282 -
  21.283 -@see KUidPictureTypeDoor16
  21.284 -@see KUidPictureTypeDoor8
  21.285 -@see TPictureHeader
  21.286 -@see TApaModelDoorFactory::NewPictureL() */
  21.287 -#define KUidPictureTypeDoor KUidPictureTypeDoor8
  21.288 -#define KUidAppIdentifierStream KUidAppIdentifierStream8
  21.289 -#define KUidSecurityStream KUidSecurityStream8
  21.290 -#endif
  21.291 -
  21.292 -const TUid KUidFileEmbeddedApplicationInterfaceUid={0x101f8c96};
  21.293 -
  21.294 -#endif
    22.1 --- a/epoc32/include/apaflrec.h	Tue Mar 16 16:12:26 2010 +0000
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,208 +0,0 @@
    22.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    22.5 -// All rights reserved.
    22.6 -// This component and the accompanying materials are made available
    22.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    22.8 -// which accompanies this distribution, and is available
    22.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   22.10 -//
   22.11 -// Initial Contributors:
   22.12 -// Nokia Corporation - initial contribution.
   22.13 -//
   22.14 -// Contributors:
   22.15 -//
   22.16 -// Description:
   22.17 -//
   22.18 -
   22.19 -#if !defined(__APAFLREC_H__)
   22.20 -#define __APAFLREC_H__
   22.21 -
   22.22 -#if !defined(__APADEF_H__)
   22.23 -#include <apadef.h>
   22.24 -#endif
   22.25 -#if !defined(__APAID_H__)
   22.26 -#include <apaid.h>
   22.27 -#endif
   22.28 -
   22.29 -// classes defined:
   22.30 -class MApaAppStarter;
   22.31 -class CApaAppLocator;
   22.32 -class CApaFileRecognizer;
   22.33 -class CApaFileRecognizerType;
   22.34 -class CFileRecognizerExtension;
   22.35 -//
   22.36 -// classes referenced:
   22.37 -class TApaAppEntry;
   22.38 -class CApaCommandLine;
   22.39 -class RFs;
   22.40 -//
   22.41 -
   22.42 -// KUidFileRecognizer is UID[1] for app recognizer dll's (UID[2] identifies a particular identifier)
   22.43 -/**
   22.44 -@publishedAll
   22.45 -@released
   22.46 -*/
   22.47 -#ifdef _UNICODE
   22.48 -#define KUidFileRecognizer KUidFileRecognizer16
   22.49 -#else
   22.50 -#define KUidFileRecognizer KUidFileRecognizer8
   22.51 -#endif
   22.52 -
   22.53 -/**
   22.54 -@publishedAll 
   22.55 -@deprecated
   22.56 -*/
   22.57 -const TInt KFileRecognizerUidValue8=0x1000013E;
   22.58 -
   22.59 -/**
   22.60 -@publishedAll 
   22.61 -@deprecated
   22.62 -*/
   22.63 -const TUid KUidFileRecognizer8={KFileRecognizerUidValue8};
   22.64 -
   22.65 -/**
   22.66 -@publishedAll
   22.67 -@released
   22.68 -*/
   22.69 -const TUid KUidFileRecognizer16={0x10003A37};
   22.70 -//
   22.71 -
   22.72 -
   22.73 -class CApaAppLocator : public CBase
   22.74 -/**
   22.75 -@internalComponent
   22.76 -*/
   22.77 -	{
   22.78 -public:
   22.79 -	virtual TInt GetAppEntryByUid(TApaAppEntry& aAppEntry,TUid aAppUid)=0;
   22.80 -	virtual TInt GetAppCapabilityByUid(TDes8& aCapabilityBuf,TUid aAppUid)=0;
   22.81 -	};
   22.82 -
   22.83 -
   22.84 -
   22.85 -class CApaFileRecognizer : public CBase
   22.86 -/**
   22.87 -@internalComponent
   22.88 -@deprecated
   22.89 -*/
   22.90 -	{
   22.91 -public:
   22.92 -	//
   22.93 -	IMPORT_C CApaFileRecognizerType* RecognizeFileL(const TDesC& aFullFileName,const TUidType* aUidType=NULL);
   22.94 -	IMPORT_C CApaAppLocator* AppLocator() const;
   22.95 -	//
   22.96 -	IMPORT_C ~CApaFileRecognizer();
   22.97 -protected:
   22.98 -	IMPORT_C CApaFileRecognizer(RFs& aFs);
   22.99 -	IMPORT_C void AddFileRecognizerType(CApaFileRecognizerType* aFileRecognizerType);
  22.100 -	IMPORT_C TInt RemoveFileRecognizerType(const CApaFileRecognizerType* aFileRecognizerType);
  22.101 -	IMPORT_C void SetAppLocator(CApaAppLocator* aAppLocator); // should be called by child-classes eg during construction
  22.102 -	static inline void SetAppStarter(CApaFileRecognizerType* aRecognizer,MApaAppStarter* aAppStarter);
  22.103 -	IMPORT_C void DestroyRecognizerList();
  22.104 -protected:
  22.105 -	RFs& iFs;
  22.106 -	CApaAppLocator* iAppLocator;
  22.107 -private:
  22.108 -	CApaFileRecognizerType *iFileRecognizerList;
  22.109 -	};
  22.110 -
  22.111 -
  22.112 -
  22.113 -class MApaAppStarter
  22.114 -/** An interface used by the Application Architecture server to start applications.
  22.115 -
  22.116 -CEikonEnv is derived from this class.
  22.117 -
  22.118 -@publishedPartner
  22.119 -@released
  22.120 -@see CEikonEnv */
  22.121 -	{
  22.122 -public:
  22.123 -	virtual TThreadId StartAppL(const CApaCommandLine& aCommandLine)=0;
  22.124 -protected:
  22.125 -	IMPORT_C MApaAppStarter(); 
  22.126 -private:
  22.127 -	IMPORT_C virtual void MApaAppStarter_Reserved1();
  22.128 -	IMPORT_C virtual void MApaAppStarter_Reserved2();
  22.129 -private:
  22.130 -	TInt iMApaAppStarter_Reserved1;
  22.131 -	};
  22.132 -
  22.133 -
  22.134 -
  22.135 -class CApaFileRecognizerType : public CBase
  22.136 -/**
  22.137 -@publishedPartner
  22.138 -@deprecated
  22.139 -*/
  22.140 -	{
  22.141 -public:
  22.142 -	enum TRecognizedType {EProgram,EDoc,EOtherFile,ENotRecognized};
  22.143 -public:
  22.144 -	virtual TThreadId RunL(TApaCommand aCommand,const TDesC* aDocFileName,const TDesC8* aTailEnd) const=0;
  22.145 -	inline TThreadId RunL(TApaCommand aCommand, const TDesC* aDocFileName) const;
  22.146 -	inline TThreadId RunL(TApaCommand aCommand) const;
  22.147 -	inline TUid AppUid()const;
  22.148 -	inline TUid TypeUid()const;
  22.149 -	inline TRecognizedType Type()const;
  22.150 -	IMPORT_C void Capability(TDes8& aCapabilityBuf)const;
  22.151 -	IMPORT_C void Lock();
  22.152 -	IMPORT_C void Unlock();
  22.153 -protected:
  22.154 -	IMPORT_C CApaFileRecognizerType();
  22.155 -	IMPORT_C ~CApaFileRecognizerType();
  22.156 -	IMPORT_C TThreadId AppRunL(const CApaCommandLine& aCommandLine) const;
  22.157 -private:
  22.158 -	inline void SetAppStarter(MApaAppStarter* aAppStarter); // must be called before AppRunL()
  22.159 -	virtual TRecognizedType DoRecognizeFileL(RFs& aFs,TUidType aUidType)=0;
  22.160 -	TRecognizedType RecognizeFileL(RFs& aFs,const TDesC& aFullFileName,TUidType aUidType);
  22.161 -	TBool Locked()const;
  22.162 -	IMPORT_C virtual void Reserved_1();
  22.163 -public:
  22.164 -	IMPORT_C static CApaFileRecognizerType* CreateFileRecognizerL(TUid aImplUid);
  22.165 -protected:
  22.166 -	CApaFileRecognizer* iFileRecognizer;
  22.167 -	MApaAppStarter* iAppStarter;
  22.168 -	HBufC* iFullFileName;
  22.169 -	TUid iFileType; // type UID of the recognizer file (ie UID[1])
  22.170 -	TUid iAppUid; // UID of the associated app (ie UID[2])
  22.171 -	TRecognizedType iRecognizedType;
  22.172 -	TApaAppCapabilityBuf* iCapabilityBuf;
  22.173 -private:
  22.174 -	CApaFileRecognizerType* iNext;
  22.175 -	TInt iLock;
  22.176 -	CFileRecognizerExtension* iFileRecognizerExtn;
  22.177 -private:
  22.178 -	friend class CApaFileRecognizer;
  22.179 -	};
  22.180 -
  22.181 -
  22.182 -//
  22.183 -// inlines
  22.184 -//
  22.185 -
  22.186 -inline void CApaFileRecognizer::SetAppStarter(CApaFileRecognizerType* aRecognizer,MApaAppStarter* aAppStarter)
  22.187 -	{ aRecognizer->SetAppStarter(aAppStarter); }
  22.188 -
  22.189 -inline void CApaFileRecognizerType::SetAppStarter(MApaAppStarter* aAppStarter)
  22.190 -	{ iAppStarter = aAppStarter; }
  22.191 -
  22.192 -inline TUid CApaFileRecognizerType::AppUid() const
  22.193 -	{ return iAppUid; }
  22.194 -
  22.195 -inline TUid CApaFileRecognizerType::TypeUid() const
  22.196 -	{ return iFileType; }
  22.197 -
  22.198 -inline CApaFileRecognizerType::TRecognizedType CApaFileRecognizerType::Type()const
  22.199 -	{ return iRecognizedType; }
  22.200 -
  22.201 -inline TThreadId CApaFileRecognizerType::RunL(TApaCommand aCommand, const TDesC* aDocFileName) const
  22.202 -	/** Calls RunL(TApaCommand,const TDesC*,const TDesC8*) with NULL as third parameter.
  22.203 -	@see CApaFileRecognizerType::RunL(TApaCommand,const TDesC*,const TDesC8*) */
  22.204 -	{ return RunL(aCommand, aDocFileName, NULL); }
  22.205 -
  22.206 -inline TThreadId CApaFileRecognizerType::RunL(TApaCommand aCommand) const
  22.207 -	/** Calls RunL(TApaCommand,const TDesC*,const TDesC8*) with NULL as second and third parameter.
  22.208 -	@see CApaFileRecognizerType::RunL(TApaCommand,const TDesC*,const TDesC8*) */
  22.209 -	{ return RunL(aCommand, NULL, NULL); }	
  22.210 -
  22.211 -#endif
    23.1 --- a/epoc32/include/apaid.h	Tue Mar 16 16:12:26 2010 +0000
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,358 +0,0 @@
    23.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    23.5 -// All rights reserved.
    23.6 -// This component and the accompanying materials are made available
    23.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    23.8 -// which accompanies this distribution, and is available
    23.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   23.10 -//
   23.11 -// Initial Contributors:
   23.12 -// Nokia Corporation - initial contribution.
   23.13 -//
   23.14 -// Contributors:
   23.15 -//
   23.16 -// Description:
   23.17 -//
   23.18 -
   23.19 -#ifndef __APAID_H__
   23.20 -#define __APAID_H__
   23.21 -
   23.22 -#if !defined(__E32BASE_H__)
   23.23 -#include <e32base.h>
   23.24 -#endif
   23.25 -#if !defined(__APADEF_H__)
   23.26 -#include <apadef.h>
   23.27 -#endif
   23.28 -
   23.29 -#include "apmstd.h"
   23.30 -
   23.31 -
   23.32 -// classes defined:
   23.33 -class TApaAppIdentifier;
   23.34 -class TApaAppEntry;
   23.35 -class CApaAppFinder;
   23.36 -//
   23.37 -// classes referenced:
   23.38 -class RReadStream;
   23.39 -class RWriteStream;
   23.40 -class RFs;
   23.41 -//
   23.42 -
   23.43 -
   23.44 -class TApaAppIdentifier
   23.45 -/** The identity of an application.
   23.46 -
   23.47 -An object of this type contains two pieces of information:
   23.48 -
   23.49 -The application specific UID
   23.50 -
   23.51 -The file name and extension of the application DLL
   23.52 -
   23.53 -All persisted documents associated with this application have a stream containing 
   23.54 -this information.
   23.55 -
   23.56 -@publishedAll 
   23.57 -@released
   23.58 -@see CApaProcess::ReadRootStreamLC()
   23.59 -@see CApaProcess::WriteRootStreamL()
   23.60 -@see CApaProcess::ReadAppIdentifierL()
   23.61 -@see CApaProcess::WriteAppIdentifierL() */
   23.62 -	{
   23.63 -public:
   23.64 -	IMPORT_C TApaAppIdentifier();
   23.65 -	IMPORT_C TApaAppIdentifier(TUid aAppUidType,const TFileName& aDllName);
   23.66 -	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
   23.67 -	IMPORT_C void InternalizeL(RReadStream& aStream);
   23.68 -	
   23.69 -public:
   23.70 -	/** The application-specific UID. */
   23.71 -	TUid iAppUid;
   23.72 -	/** The full path name of the application DLL. */
   23.73 -	TFileName iFullName;
   23.74 -
   23.75 -private:
   23.76 -	TInt iTApaAppIdentifier_Reserved1;
   23.77 -	};
   23.78 -
   23.79 -
   23.80 -class TApaAppEntry
   23.81 -/** An application entry.
   23.82 -
   23.83 -An object of this type contains two pieces of information:
   23.84 -
   23.85 -the full path name of the application DLL
   23.86 -
   23.87 -the UID type (or compound identifier) of the application DLL. 
   23.88 -
   23.89 -@publishedAll 
   23.90 -@released */
   23.91 -	{
   23.92 -public:
   23.93 -	IMPORT_C TApaAppEntry();
   23.94 -	IMPORT_C TApaAppEntry(const TUidType& aAppUidType,const TFileName& aDllName);
   23.95 -	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
   23.96 -	IMPORT_C void InternalizeL(RReadStream& aStream);
   23.97 -public:
   23.98 -	/** The UID type (or compound identifier) of the application DLL. */
   23.99 -	TUidType iUidType;
  23.100 -	/** The full path name of the application DLL. */
  23.101 -	TFileName iFullName;
  23.102 -private:
  23.103 -	TInt iTApaAppEntry_Reserved1;
  23.104 -	};
  23.105 -
  23.106 -
  23.107 -class TApaAppInfo
  23.108 -/** Application information.
  23.109 -
  23.110 -An object of this type contains four pieces of information:
  23.111 -
  23.112 -the application specific UID
  23.113 -
  23.114 -the full path name of the application DLL
  23.115 -
  23.116 -the application's caption
  23.117 -
  23.118 -a short caption; how this is used is up to the UI 
  23.119 -
  23.120 -@publishedAll
  23.121 -@released */
  23.122 -	{
  23.123 -public:
  23.124 -	IMPORT_C TApaAppInfo();
  23.125 -	IMPORT_C TApaAppInfo(TUid aAppUid,const TFileName& aDllName,const TApaAppCaption& aCaption);
  23.126 -	IMPORT_C TApaAppInfo(TUid aAppUid,const TFileName& aDllName,const TApaAppCaption& aCaption,const TApaAppCaption& aShortCaption);
  23.127 -	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  23.128 -	IMPORT_C void InternalizeL(RReadStream& aStream);
  23.129 -public:
  23.130 -	/** The application specific UID. */
  23.131 -	TUid iUid;
  23.132 -	/** The full path name of the application DLL. */
  23.133 -	TFileName iFullName;
  23.134 -	/** The caption for the application. */
  23.135 -	TApaAppCaption iCaption;
  23.136 -	/** The short caption for the application. */
  23.137 -	TApaAppCaption iShortCaption;
  23.138 -
  23.139 -private:
  23.140 -	TInt iTApaAppInfo_Reserved1;
  23.141 -	};
  23.142 -
  23.143 -
  23.144 -class TApaAppViewInfo
  23.145 -/** Contains the basic information about an application view.
  23.146 -
  23.147 -An object of this type contains two pieces of information:
  23.148 -
  23.149 -The UID that identifies the view
  23.150 -
  23.151 -The application's caption.
  23.152 -
  23.153 -Objects of this type are returned in an array populated by a call to RApaLsSession::GetAppViews().
  23.154 -
  23.155 -@publishedAll 
  23.156 -@released
  23.157 -@see CApaAppViewArray
  23.158 -@see TUid */
  23.159 -	{
  23.160 -public:
  23.161 -	IMPORT_C TApaAppViewInfo();
  23.162 -	IMPORT_C TApaAppViewInfo(TUid aViewUid,const TApaAppCaption& aViewCaption,TInt aScreenMode);
  23.163 -	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  23.164 -	IMPORT_C void InternalizeL(RReadStream& aStream);
  23.165 -public:
  23.166 -	/** The UID identifying the view. */
  23.167 -	TUid iUid;
  23.168 -	/** The application caption. */
  23.169 -	TApaAppCaption iViewCaption;
  23.170 -	TInt iScreenMode;
  23.171 -private:
  23.172 -	TInt iTApaAppViewInfo_Reserved1;
  23.173 -	};
  23.174 -
  23.175 -
  23.176 -/** Defines an array of TApaAppViewInfo objects contained within a flat dynamic 
  23.177 -buffer.
  23.178 -
  23.179 -An array of this type is populated with TApaAppViewInfo objects in a call 
  23.180 -to RApaLsSession::GetAppViews().
  23.181 -
  23.182 -@publishedAll 
  23.183 -@released */
  23.184 -typedef CArrayFixFlat<TApaAppViewInfo> CApaAppViewArray;
  23.185 -
  23.186 -
  23.187 -class TApaAppCapability
  23.188 -// expandable class - add new members to the end, add them to the end of int/ext also, and increment the version no.
  23.189 -// default value for all data members must be 0
  23.190 -/** Application capabilities. 
  23.191 -
  23.192 -@publishedAll
  23.193 -@released */
  23.194 -	{
  23.195 -public:
  23.196 -	IMPORT_C static void CopyCapability(TDes8& aDest,const TDesC8& aSource);
  23.197 -	IMPORT_C void InternalizeL(RReadStream& aStream);
  23.198 -	IMPORT_C void Internalize7_0L(RReadStream& aStream);	// deprecated
  23.199 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  23.200 -private:
  23.201 -	IMPORT_C void Externalize7_0L(RWriteStream& aStream) const;	// deprecated
  23.202 -	void DoInternalizeL(RReadStream& aStream, TBool& aLaunchInBackground, TApaAppGroupName& aGroupName);
  23.203 -public:
  23.204 -	//
  23.205 -	/** Defines an application's support for embeddability. */
  23.206 -	enum TEmbeddability {
  23.207 -		/** An application cannot be embedded. */
  23.208 -		ENotEmbeddable=0,
  23.209 -		/** An application can be run embedded or standalone and can read/write embedded document-content. */
  23.210 -		EEmbeddable=1,
  23.211 -		/** An application can only be run embedded and can read/write embedded document-content. */
  23.212 -		EEmbeddableOnly=2,
  23.213 -		/** An application can be run embedded or standalone and cannot read/write embedded document-content. */
  23.214 -		EEmbeddableUiOrStandAlone=5,
  23.215 -		/** An application can only be run embedded and cannot read/write embedded document-content. */
  23.216 -		EEmbeddableUiNotStandAlone=6 };
  23.217 -	/** Defines an application's attributes as a set of bit flags. */
  23.218 -	enum TCapabilityAttribute
  23.219 -		{
  23.220 -		/** If set, the application was built as a DLL, otherwise it was built as an EXE. */
  23.221 -		EBuiltAsDll			= 0x00000001,
  23.222 -		/** If set, the application provides control panel functionality. */
  23.223 -		EControlPanelItem	= 0x00000002,
  23.224 -		/** If set, the application is not a native executable, and hence the "path" and "extension" (as well as the "name") must be provided in the app_file field of the APP_REGISTRATION_INFO resource. */
  23.225 -		ENonNative			= 0x00000004
  23.226 -		};
  23.227 -public:
  23.228 -	/** Indicates the extent to which the application can be embedded. */
  23.229 -	TEmbeddability iEmbeddability;
  23.230 -	/** Indicates whether the application is document-based and supports being asked 
  23.231 -	to create a new file. */
  23.232 -	TBool iSupportsNewFile;
  23.233 -	/** Indicates whether the existence of the application should be advertised to the 
  23.234 -	user. If this is set to ETrue, the application does not appear on the Extras 
  23.235 -	Bar (or equivalent). */
  23.236 -	TBool iAppIsHidden; // not shown in the Shell etc.
  23.237 -	/** Allows the application to be launched in the foreground (when set to EFalse) 
  23.238 -	or in the background (when set to ETrue). */
  23.239 -	TBool iLaunchInBackground;	// Series 60 extension to allow apps to be launched in the background	
  23.240 -	/** Stores the application's logical group name. */
  23.241 -	TApaAppGroupName iGroupName; // Series 60 extension to allow apps to be categorized according a logical group name, e.g. 'games'
  23.242 -	/** Indicates the application attributes. One or more values from TCapabilityAttribute may be specified. */
  23.243 -	TUint iAttributes;
  23.244 -private:
  23.245 -	enum { EVersion=4 };
  23.246 -private:
  23.247 -	TInt iTApaAppCapability_Reserved1;
  23.248 -	};
  23.249 -
  23.250 -/** Packages the TApaAppCapability class. 
  23.251 -
  23.252 -@publishedAll
  23.253 -@released */
  23.254 -typedef TPckgBuf<TApaAppCapability> TApaAppCapabilityBuf;
  23.255 -
  23.256 -
  23.257 -/** Filter used to define the subset of applications returned by RApaLsSession::GetNextApp()
  23.258 -
  23.259 -@publishedAll
  23.260 -@released
  23.261 -*/
  23.262 -class TApaEmbeddabilityFilter
  23.263 -	{
  23.264 -public:
  23.265 -	IMPORT_C TApaEmbeddabilityFilter();
  23.266 -	IMPORT_C void AddEmbeddability(TApaAppCapability::TEmbeddability aEmbeddability);
  23.267 -	IMPORT_C TBool MatchesEmbeddability(TApaAppCapability::TEmbeddability aEmbeddability) const;
  23.268 -private:
  23.269 -	TUint iEmbeddabilityFlags;
  23.270 -private:
  23.271 -	TInt iTApaEmbeddabilityFilter_Reserved1;
  23.272 -	};
  23.273 -
  23.274 -
  23.275 -class CApaAppFinder : public CBase
  23.276 -/**
  23.277 -@publishedPartner
  23.278 -@deprecated
  23.279 -*/
  23.280 -	{
  23.281 -public:
  23.282 -	virtual void FindAllAppsL()=0; // sets up a scan for all apps
  23.283 -	virtual TBool NextL(TApaAppEntry& aEntry)=0; // increments a scan for all apps
  23.284 -	virtual TFileName FindAppL(const TDesC& aFileName,TUid aFileUid)=0; // searches for a particular app - should support wildcards in aFileName
  23.285 -	//
  23.286 -	virtual TFileName DefaultAppInfoFileName()const=0; // should return the full name, path and drive of the default icon file
  23.287 -protected:
  23.288 -	IMPORT_C CApaAppFinder();
  23.289 -	
  23.290 -private:
  23.291 -	IMPORT_C virtual void CApaAppFinder_Reserved1();
  23.292 -	IMPORT_C virtual void CApaAppFinder_Reserved2();
  23.293 -	};
  23.294 -
  23.295 -/** 
  23.296 -The uid for the Open service.
  23.297 -
  23.298 -@publishedPartner
  23.299 -@released
  23.300 -*/
  23.301 -const TUid KOpenServiceUid = { 0x10208DCA };
  23.302 -
  23.303 -/** Application service information.
  23.304 -
  23.305 -Encapsulates a service UID and associated opaque data.
  23.306 -
  23.307 -An instance of this class provides information about
  23.308 -a specific implementation of the service identified by
  23.309 -the encapsulated service UID.
  23.310 -
  23.311 -@publishedPartner
  23.312 -@released
  23.313 -*/
  23.314 -class TApaAppServiceInfo
  23.315 -	{
  23.316 -public:
  23.317 -	TApaAppServiceInfo();
  23.318 -	TApaAppServiceInfo(TUid aUid, CArrayFixFlat<TDataTypeWithPriority>* aDataTypes,
  23.319 -		HBufC8* aOpaqueData);
  23.320 -	void ExternalizeL(RWriteStream& aStream) const;
  23.321 -	void InternalizeL(RReadStream& aStream);
  23.322 -	void Release();
  23.323 -	CArrayFixFlat<TDataTypeWithPriority>& DataTypes();
  23.324 -	IMPORT_C TUid Uid() const;
  23.325 -	IMPORT_C const CArrayFixFlat<TDataTypeWithPriority>& DataTypes() const;
  23.326 -	IMPORT_C const TDesC8& OpaqueData() const;
  23.327 -private:
  23.328 -	TUid iUid;
  23.329 -	CArrayFixFlat<TDataTypeWithPriority>* iDataTypes;
  23.330 -	HBufC8* iOpaqueData;
  23.331 -	TInt iTApaAppServiceInfo;
  23.332 -	};
  23.333 -
  23.334 -/** Application service information array.
  23.335 -
  23.336 -Owns an array of TApaAppServiceInfo objects.
  23.337 -
  23.338 -@see TApaAppServiceInfo
  23.339 -@publishedPartner
  23.340 -@released
  23.341 -*/
  23.342 -class CApaAppServiceInfoArray : public CBase
  23.343 -	{
  23.344 -protected:
  23.345 -	CApaAppServiceInfoArray();
  23.346 -public:
  23.347 -	/** Provides access to the encapsulated array of
  23.348 -	TApaAppServiceInfo objects.
  23.349 -
  23.350 -	@return A generic array of TApaAppServiceInfo objects. */
  23.351 -	virtual TArray<TApaAppServiceInfo> Array()=0;
  23.352 -	
  23.353 -private:
  23.354 -	IMPORT_C virtual void CApaAppServiceInfoArray_Reserved1();
  23.355 -	IMPORT_C virtual void CApaAppServiceInfoArray_Reserved2();
  23.356 -	
  23.357 -private:
  23.358 -	TInt iCApaAppServiceInfoArray_Reserved1;
  23.359 -	};
  23.360 -
  23.361 -#endif
    24.1 --- a/epoc32/include/apamdr.h	Tue Mar 16 16:12:26 2010 +0000
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,202 +0,0 @@
    24.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    24.5 -// All rights reserved.
    24.6 -// This component and the accompanying materials are made available
    24.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    24.8 -// which accompanies this distribution, and is available
    24.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   24.10 -//
   24.11 -// Initial Contributors:
   24.12 -// Nokia Corporation - initial contribution.
   24.13 -//
   24.14 -// Contributors:
   24.15 -//
   24.16 -// Description:
   24.17 -//
   24.18 -
   24.19 -#ifndef __APAMDR_H__
   24.20 -#define __APAMDR_H__
   24.21 -
   24.22 -#if !defined(__E32STD_H__)
   24.23 -#include <e32std.h>
   24.24 -#endif
   24.25 -#if !defined(__E32BASE_H__)
   24.26 -#include <e32base.h>
   24.27 -#endif
   24.28 -#if !defined(__GDI_H__)
   24.29 -#include <gdi.h>
   24.30 -#endif
   24.31 -#if !defined(__APADBASE_H__)
   24.32 -#include <apadbase.h>
   24.33 -#endif
   24.34 -
   24.35 -// classes defined:
   24.36 -class TApaModelDoorFactory;
   24.37 -class CApaModelDoor;
   24.38 -class CApaModelHeader;
   24.39 -class MApaModelHeaderFactory;
   24.40 -//
   24.41 -// classes referenced:
   24.42 -class RReadStream;
   24.43 -class RWriteStream;
   24.44 -class CStreamStore;
   24.45 -class CStreamDictionary;
   24.46 -class CEmbeddedStore;
   24.47 -class TApaAppIdentifier;
   24.48 -//
   24.49 -
   24.50 -
   24.51 -class TApaModelDoorFactory : public MPictureFactory
   24.52 -// Recognizes KUidPictureTypeDoor and creates CApaModelDoor pictures
   24.53 -/** A factory class for instantiating and restoring an application's door using 
   24.54 -the application's model. 
   24.55 -
   24.56 -@publishedAll 
   24.57 -@released */
   24.58 -	{
   24.59 -public:
   24.60 -	IMPORT_C TApaModelDoorFactory(const MApaModelHeaderFactory* aFactory);
   24.61 -	//
   24.62 -	// from MPictureFactory
   24.63 -	IMPORT_C void NewPictureL(TPictureHeader& aPictureHeader,const CStreamStore& aPictureStore)const; // used to create CApaDoor's during document restore only 
   24.64 -private:
   24.65 -	const MApaModelHeaderFactory* iHeaderFactory;
   24.66 -	TInt iTApaModelDoorFactory_Reserved1;
   24.67 -	};
   24.68 -
   24.69 -
   24.70 -class CApaModelDoor : public CApaDoorBase
   24.71 -/** A persistent representation of a door that also acts as a wrapper around an 
   24.72 -application's model.
   24.73 -
   24.74 -The class allows embedded data to be manipulated without requiring the whole 
   24.75 -associated application. 
   24.76 -
   24.77 -@publishedAll 
   24.78 -@released */
   24.79 -	{
   24.80 -public:
   24.81 -	IMPORT_C static CApaModelDoor* NewL(CApaModelHeader* aHeader);
   24.82 -	IMPORT_C static CApaModelDoor* NewLC(CApaModelHeader* aHeader);
   24.83 -	IMPORT_C static CApaModelDoor* NewL(const CStreamStore& aStore,TStreamId aHeadStreamId,const MApaModelHeaderFactory* aFactory);
   24.84 -	//
   24.85 -	/** Gets the application model wrapper object.
   24.86 -	
   24.87 -	@return A pointer to the application model wrapper object. */
   24.88 -	inline CApaModelHeader* ModelHeader() { return iModelHeader; }
   24.89 -	
   24.90 -	/** Sets the format of the door.
   24.91 -	
   24.92 -	@param aFormat The format for the graphical representation of the embedded 
   24.93 -	document. */
   24.94 -	inline void SetFormat(TFormat aFormat) { iFormat = aFormat; }
   24.95 -	//
   24.96 -	IMPORT_C TStreamId StoreL(CStreamStore& aStore) const;
   24.97 -	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aHeadStreamId,const MApaModelHeaderFactory* aFactory);
   24.98 -	//
   24.99 -	IMPORT_C ~CApaModelDoor();
  24.100 -	//
  24.101 -	// from CPicture
  24.102 -	IMPORT_C void DetachFromStoreL(TDetach /*aDegree*/=EDetachFull); //lint !e1735 Virtual function has default parameter - Inherited from CPicture, must be fixed there
  24.103 -	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  24.104 -	IMPORT_C void Draw(CGraphicsContext& aGc,const TPoint& aTopLeft,const TRect& aClipRect,MGraphicsDeviceMap* aMap)const; 
  24.105 -	IMPORT_C void GetOriginalSizeInTwips(TSize& aSize)const;
  24.106 -	IMPORT_C void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight); 
  24.107 -	IMPORT_C TInt ScaleFactorWidth()const; 
  24.108 -	IMPORT_C TInt ScaleFactorHeight()const;
  24.109 -	//
  24.110 -private:
  24.111 -	CApaModelDoor();
  24.112 -	CApaModelDoor(CApaModelHeader* aHeader);
  24.113 -	//
  24.114 -	static CStreamDictionary* ReadStreamDictionaryLC(const CStreamStore& aSourceStore,TStreamId aStreamId);
  24.115 -	static void CopyStoreL(const CEmbeddedStore& aSourceStore,RWriteStream& aTargetStream);
  24.116 -	void InternalizeModelL(const MApaModelHeaderFactory& aFactory);
  24.117 -	//
  24.118 -	// from CApaDoorBase
  24.119 -	TSize GlassDoorSize()const;
  24.120 -private:
  24.121 -	CApaModelHeader* iModelHeader;
  24.122 -	CEmbeddedStore* iStore;
  24.123 -	TSize iScaleFactor;
  24.124 -	CBufSeg* iStoreHost; // the host for the embedded store, if the door has been detached from its originating store
  24.125 -	};
  24.126 -
  24.127 -
  24.128 -class CApaModelHeader : public CBase
  24.129 -// Abstract wrapper for an applications model - used for file format conversion etc
  24.130 -/** An interface class that acts as a wrapper for an application model.
  24.131 -
  24.132 -This is also known as an application model header.
  24.133 -
  24.134 -The class provides the knowledge for internalizing and externalizing an application 
  24.135 -model's data. An instance of the class is used by CApaModelDoor.
  24.136 -
  24.137 -A concrete implementation of the class must be supplied by the application 
  24.138 -model (not the application UI). An instance of the class is constructed by 
  24.139 -a factory object that implements the MApaModelHeaderFactory interface; the 
  24.140 -factory object is also supplied by the application model (not the application 
  24.141 -UI).
  24.142 -
  24.143 -@publishedAll
  24.144 -@released
  24.145 -@see CApaModelDoor
  24.146 -@see TApaModelDoorFactory
  24.147 -@see MApaModelHeaderFactory */
  24.148 -	{
  24.149 -public:
  24.150 -	/** Stores the model and its components in the specified store.
  24.151 -	
  24.152 -	@param aStore The store in which the model's components are to be stored.
  24.153 -	@param aDict The stream dictionary into which stream IDs and associated UIDs 
  24.154 -	are put. */
  24.155 -	virtual void StoreL(CStreamStore& aStore,CStreamDictionary& aDict) const=0;
  24.156 -	/** Gets the identity of the application associated with the application model.
  24.157 -	
  24.158 -	@return The application identity. */
  24.159 -	virtual TApaAppIdentifier AppId()const=0;
  24.160 -	/** Restores the model to the specified degree.
  24.161 -	
  24.162 -	An implementation of this function should propagate this call to all components 
  24.163 -	of the model.
  24.164 -	
  24.165 -	@param aDegree The degree to which restoration is needed. */
  24.166 -	virtual void DetachFromStoreL(CPicture::TDetach aDegree)=0;
  24.167 -protected:
  24.168 -	IMPORT_C CApaModelHeader();
  24.169 -private:
  24.170 -	IMPORT_C virtual void Reserved_1();
  24.171 -	IMPORT_C virtual void Reserved_2();
  24.172 -private:
  24.173 -	TInt iCApaModelHeader_Reserved1;
  24.174 -	};
  24.175 -
  24.176 -
  24.177 -
  24.178 -class MApaModelHeaderFactory
  24.179 -/** An interface class that applications implement to construct an application model 
  24.180 -wrapper object, also known as the application model header.
  24.181 -
  24.182 -@publishedAll
  24.183 -@released
  24.184 -@see CApaModelHeader */
  24.185 -	{
  24.186 -public:	
  24.187 -	/** Creates and returns an application model wrapper object.
  24.188 -	
  24.189 -	@param aStore The store containing model data.
  24.190 -	@param aDict The stream dictionary. 
  24.191 -	@param aAppId The application's identity held as a stream in the application's 
  24.192 -	store
  24.193 -	@return A pointer to the new application model wrapper object. */
  24.194 -	virtual CApaModelHeader* NewHeaderL(const CStreamStore& aStore,const CStreamDictionary& aDict,const TApaAppIdentifier& aAppId)const=0;
  24.195 -protected:
  24.196 -	IMPORT_C MApaModelHeaderFactory();
  24.197 -private:
  24.198 -	IMPORT_C virtual void MApaModelHeaderFactory_Reserved1();
  24.199 -	IMPORT_C virtual void MApaModelHeaderFactory_Reserved2();
  24.200 -private:
  24.201 -	TInt iMApaModelHeaderFactory_Reserved1;
  24.202 -	};
  24.203 -
  24.204 -
  24.205 -#endif
    25.1 --- a/epoc32/include/apcaptionfile.rh	Tue Mar 16 16:12:26 2010 +0000
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,35 +0,0 @@
    25.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
    25.5 -// All rights reserved.
    25.6 -// This component and the accompanying materials are made available
    25.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    25.8 -// which accompanies this distribution, and is available
    25.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   25.10 -//
   25.11 -// Initial Contributors:
   25.12 -// Nokia Corporation - initial contribution.
   25.13 -//
   25.14 -// Contributors:
   25.15 -//
   25.16 -// Description:
   25.17 -// Contains definitions for the resource files that are input to 
   25.18 -// caption files for Series 60
   25.19 -// 
   25.20 -//
   25.21 -
   25.22 -
   25.23 -
   25.24 -
   25.25 -/**
   25.26 - @internalComponent
   25.27 -*/
   25.28 -#define KMaxCaption 256
   25.29 -
   25.30 -/**
   25.31 -@publishedAll
   25.32 -@released
   25.33 -*/
   25.34 -STRUCT CAPTION_DATA
   25.35 -	{
   25.36 -	LTEXT caption(KMaxCaption)="";
   25.37 -	LTEXT shortcaption(KMaxCaption)="";
   25.38 -	}
    26.1 --- a/epoc32/include/apgcli.h	Tue Mar 16 16:12:26 2010 +0000
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,309 +0,0 @@
    26.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    26.5 -// All rights reserved.
    26.6 -// This component and the accompanying materials are made available
    26.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    26.8 -// which accompanies this distribution, and is available
    26.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   26.10 -//
   26.11 -// Initial Contributors:
   26.12 -// Nokia Corporation - initial contribution.
   26.13 -//
   26.14 -// Contributors:
   26.15 -//
   26.16 -// Description:
   26.17 -//
   26.18 -
   26.19 -#if !defined(__APGCLI_H__)
   26.20 -#define __APGCLI_H__
   26.21 -
   26.22 -#if !defined(__E32BASE_H__)
   26.23 -#include <e32base.h>
   26.24 -#endif
   26.25 -#if !defined(__APMSTD_H__)
   26.26 -#include <apmstd.h>
   26.27 -#endif
   26.28 -#if !defined(__APMREC_H__)
   26.29 -#include <apmrec.h>
   26.30 -#endif
   26.31 -#if !defined(__APAID_H__)
   26.32 -#include <apaid.h>
   26.33 -#endif
   26.34 -#if !defined(__BADESCA_H__)
   26.35 -#include <badesca.h>
   26.36 -#endif
   26.37 -#if !defined(__F32FILE_H__)
   26.38 -#include <f32file.h>
   26.39 -#endif
   26.40 -
   26.41 -// classes referenced
   26.42 -class CApaCommandLine;
   26.43 -class CApaMaskedBitmap;
   26.44 -class MArrayFiller;
   26.45 -class RFile;
   26.46 -
   26.47 -class CApaLsSessionExtension;
   26.48 -
   26.49 -class CDataRecognitionResultArrayEntry;
   26.50 -class CApaRegistrationResourceFileWriter;
   26.51 -class CApaLocalisableResourceFileWriter;
   26.52 -
   26.53 -/* @internalComponent
   26.54 -*/
   26.55 -IMPORT_C TUint MinApplicationStackSize();
   26.56 -
   26.57 -class CDataRecognitionResultArray : public CBase
   26.58 -/**
   26.59 -This class holds the recognition results of a recognized directory.
   26.60 -@publishedAll
   26.61 -@released
   26.62 -*/
   26.63 -	{
   26.64 -public: // exported functions
   26.65 -	IMPORT_C CDataRecognitionResultArray();
   26.66 -	IMPORT_C virtual ~CDataRecognitionResultArray();
   26.67 -	IMPORT_C const TFileName& Path() const;
   26.68 -	IMPORT_C TUint Count() const;
   26.69 -	IMPORT_C void GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;
   26.70 -	IMPORT_C void GetFileNameL(TFileName& aFileName, const TUint aIndex) const;
   26.71 -public: // dll internally
   26.72 -	TUint InternalizeL(const CBufFlat& aBuffer);
   26.73 -	void SetPath(const TFileName& aPath);
   26.74 -private:
   26.75 -	TFileName iPath;
   26.76 -	RPointerArray<CDataRecognitionResultArrayEntry> iEntries;
   26.77 -	};
   26.78 -
   26.79 -
   26.80 -
   26.81 -////////////////////////////////////
   26.82 -// RApaLsSession
   26.83 -////////////////////////////////////
   26.84 -
   26.85 -class RApaLsSession : public RSessionBase
   26.86 -/** A session with the application architecture server.
   26.87 -
   26.88 -The server provides access to a cached list of the applications on the device. 
   26.89 -
   26.90 -To use this class, clients first need to connect to the server. 
   26.91 -
   26.92 -Then, one of GetAllApps(), GetEmbeddableApps() or GetFilteredApps() needs to be called. 
   26.93 -These functions do some initialisation of server data in preparation for returning the 
   26.94 -application list (which is owned by the server).
   26.95 -
   26.96 -Then, GetNextApp() is called in a loop. The first time around, it populates the session's 
   26.97 -application list and retrieves the first application in the list. Further calls to GetNextApp() 
   26.98 -retrieve the remaining applications in the list, until RApaLsSession::ENoMoreAppsInList is 
   26.99 -returned.
  26.100 -
  26.101 -The session should be closed when it is no longer needed, before it goes out of scope.
  26.102 -
  26.103 -Various functions in RApaLsSession need to access the application list, and may return 
  26.104 -RApaLsSession::EAppListInvalid to indicate that the function was called before the initial 
  26.105 -population of the list is complete. If this occurs, you could try again after a short delay.
  26.106 -
  26.107 -This class provides many other functions, for instance launching applications, querying 
  26.108 -application-specific information, recognising data.
  26.109 -
  26.110 -@publishedAll
  26.111 -@released */
  26.112 -	{
  26.113 -	friend class CApaLsSessionExtension;
  26.114 -public:
  26.115 -	enum {
  26.116 -		/** A possible return value from GetNextApp(), to indicate that there are no more 
  26.117 -		applications in the list. */
  26.118 -		ENoMoreAppsInList=1,
  26.119 -		/** Indicates that an RApaLsSession member function was called before the session's 
  26.120 -		application list is fully populated. */
  26.121 -		EAppListInvalid
  26.122 -		};
  26.123 -	/** Defines the way an application is launched. */
  26.124 -	enum TLaunchType {
  26.125 -		/** Launches a new instance of the application. */
  26.126 -		ELaunchNewApp=1,
  26.127 -		/** Launches a new instance of the application if no existing instance of the application 
  26.128 -		is running. If an instance of the application is already running, then it 
  26.129 -		is brought to the foreground. */
  26.130 -		ESwitchFiles
  26.131 -		};
  26.132 -	
  26.133 -public:
  26.134 -	IMPORT_C RApaLsSession();
  26.135 -	//
  26.136 -	IMPORT_C TInt Connect();
  26.137 -	IMPORT_C TVersion Version() const;
  26.138 -	//
  26.139 -	IMPORT_C TInt AppCount(TInt& aCount) const; // returns error
  26.140 -	IMPORT_C TInt EmbeddableAppCount(TInt& aCount) const; // returns error
  26.141 -	//
  26.142 -	IMPORT_C TInt GetAllApps() const; // Call to initialize
  26.143 -	IMPORT_C TInt GetAllApps(TInt aScreenMode) const; // Call to initialize
  26.144 -	IMPORT_C TInt GetEmbeddableApps() const; // Call to initialize
  26.145 -	IMPORT_C TInt GetEmbeddableApps(TInt aScreenMode) const; // Call to initialize
  26.146 -	// 7.0s
  26.147 -	IMPORT_C TInt GetFilteredApps(const TApaEmbeddabilityFilter& aFilter) const; // Call to initialize
  26.148 -	IMPORT_C TInt GetFilteredApps(const TApaEmbeddabilityFilter& aFilter, TInt aScreenMode) const; // Call to initialize
  26.149 -	// 8.1
  26.150 -	IMPORT_C TInt GetFilteredApps(TUint aCapabilityAttributeMask, TUint aCapabilityAttributeValue) const; // Call to initialize
  26.151 -	IMPORT_C TInt GetFilteredApps(TUint aCapabilityAttributeMask, TUint aCapabilityAttributeValue, TInt aScreenMode) const; // Call to initialize
  26.152 -	// 9.0
  26.153 -	IMPORT_C TInt GetServerApps(TUid aServiceUid) const; // Call to initialize
  26.154 -	IMPORT_C TInt GetServerApps(TUid aServiceUid, TInt aScreenMode) const; // Call to initialize
  26.155 -	//
  26.156 -	IMPORT_C TInt GetNextApp(TApaAppInfo& aInfo) const; // call repeatedly, returns err (inc ENoMoreAppsInList,EAppListInvalid)
  26.157 -	IMPORT_C TInt GetNextApp(TApaAppInfo& aInfo,TInt aScreenMode) const; // call repeatedly, returns err (inc ENoMoreAppsInList,EAppListInvalid)
  26.158 -	//
  26.159 -	IMPORT_C TInt GetAppInfo(TApaAppInfo& aInfo,TUid aAppUid) const;
  26.160 -	IMPORT_C TInt SetAppShortCaption(const TDesC& aShortCaption, TLanguage aLanguage, TUid aAppUid);
  26.161 -	IMPORT_C TInt GetDefaultScreenNumber(TInt& aDefaultScreenNumber, TUid aAppUid) const;
  26.162 -	
  26.163 -public:
  26.164 -	IMPORT_C TInt GetAppCapability(TDes8& aCapabilityBuf,TUid aAppUid) const;
  26.165 -	IMPORT_C TInt StartApp(const CApaCommandLine& aCommandLine); // This is only recommended for non document based apps
  26.166 -	IMPORT_C TInt StartApp(const CApaCommandLine& aCommandLine,TThreadId& aThreadId);
  26.167 -	IMPORT_C TInt StartApp(const CApaCommandLine& aCommandLine,TThreadId& aThreadId,TRequestStatus* aRequestStatusForRendezvous);
  26.168 -	//
  26.169 -	IMPORT_C TInt RecognizeData(const TDesC& aName, const TDesC8& aBuffer, TDataRecognitionResult& aDataType) const;
  26.170 -	IMPORT_C TInt RecognizeData(const RFile& aFile, TDataRecognitionResult& aDataType) const;
  26.171 -	IMPORT_C TInt RecognizeSpecificData(const TDesC& aName, const TDesC8& aBuffer, const TDataType& aDataType, TBool& aResult) const;
  26.172 -	IMPORT_C TInt RecognizeSpecificData(const RFile& aFile, const TDataType& aDataType, TBool& aResult) const;
  26.173 -	//
  26.174 -	IMPORT_C TInt AppForDataType(const TDataType& aDataType, TUid& aAppUid) const;
  26.175 -	IMPORT_C TInt StartDocument(const TDesC& aFileName, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
  26.176 -	IMPORT_C TInt StartDocument(RFile& aFile, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous=NULL);
  26.177 -	IMPORT_C TInt StartDocument(const TDesC& aFileName, const TDataType& aDataType, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
  26.178 -	IMPORT_C TInt StartDocument(RFile& aFile, const TDataType& aDataType, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous=NULL);
  26.179 -	IMPORT_C TInt StartDocument(const TDesC& aFileName, TUid aAppUid, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
  26.180 -	IMPORT_C TInt StartDocument(RFile& aFile, TUid aAppUid, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous=NULL);
  26.181 -	IMPORT_C TInt CreateDocument(const TDesC& aFileName, TUid aAppUid, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
  26.182 -	//
  26.183 -	IMPORT_C TInt GetAppIcon(TUid aAppUid, TInt aSize, CApaMaskedBitmap& aAppBitmap) const;
  26.184 -	//
  26.185 -	IMPORT_C TInt AppForDocument(const TDesC& aFileName, TUid& aAppUid, TDataType& aDataType) const;
  26.186 -	IMPORT_C TInt AppForDocument(const RFile& aFile, TUid& aAppUid, TDataType& aDataType) const;
  26.187 -	IMPORT_C TInt IsProgram(const TDesC& aFileName, TBool& aProgram) const;
  26.188 -	IMPORT_C TInt GetAcceptedConfidence(TInt& aConfidence) const;
  26.189 -	IMPORT_C TInt SetAcceptedConfidence(TInt aConfidence);
  26.190 -	IMPORT_C TInt GetMaxDataBufSize(TInt& aBufSize) const;
  26.191 -	IMPORT_C TInt SetMaxDataBufSize(TInt aBufSize);
  26.192 -	IMPORT_C TInt GetPreferredBufSize(TInt& aPreferredBufSize) const;
  26.193 -	IMPORT_C TInt GetSupportedDataTypesL(CDataTypeArray& aDataTypes) const;
  26.194 -	//
  26.195 -	IMPORT_C TInt GetAppIconSizes(TUid aAppUid, CArrayFixFlat<TSize>& aArrayToFill) const;
  26.196 -	IMPORT_C TInt GetAppIcon(TUid aAppUid, TSize aSize, CApaMaskedBitmap& aAppBitmap) const;
  26.197 -	IMPORT_C TInt GetAppIcon(TUid aAppUid, RFile& aFile) const;
  26.198 -	//
  26.199 -	IMPORT_C TInt GetAppViews(CApaAppViewArray& aAppViews, TUid aAppUid) const;
  26.200 -	IMPORT_C TInt GetAppViewIcon(TUid aAppUid, TUid aViewUid, const TSize& aSize, CApaMaskedBitmap& aViewBitmap) const;
  26.201 -	IMPORT_C TInt GetAppOwnedFiles(CDesCArray& aAppOwnedFiles, TUid aAppUid) const;
  26.202 -	//
  26.203 -	IMPORT_C TInt NumberOfOwnDefinedIcons(TUid aAppUid, TInt& aCount) const;
  26.204 -	//
  26.205 -	IMPORT_C TInt GetAppIcon(TUid aAppUid, HBufC*& aFullFileName) const;
  26.206 -	IMPORT_C TInt GetAppViewIcon(TUid aAppUid, TUid aViewUid, HBufC*& aFullFileName) const;
  26.207 -	IMPORT_C TInt InsertDataMapping(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
  26.208 -	IMPORT_C TInt InsertDataMappingIfHigher(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TBool& aInserted);
  26.209 -	IMPORT_C TInt DeleteDataMapping(const TDataType& aDataType);
  26.210 -	/**
  26.211 -	@internalComponent
  26.212 -	@released
  26.213 -	*/
  26.214 -	IMPORT_C TInt InsertDataMapping(const TDataType& aDataType, TDataTypePriority aPriority, 
  26.215 -		TUid aUid, TUid aServiceUid);
  26.216 -	/**
  26.217 -	@internalComponent
  26.218 -	@released
  26.219 -	*/
  26.220 -	IMPORT_C TInt DeleteDataMapping(const TDataType& aDataType, TUid aServiceUid);
  26.221 -	/**
  26.222 -	@internalComponent
  26.223 -	@released
  26.224 -	*/
  26.225 -	IMPORT_C TInt GetAppByDataType(const TDataType& aDataType, TUid aServiceUid, TUid& aAppUid) const;
  26.226 -
  26.227 -public:
  26.228 -	//
  26.229 -	IMPORT_C CApaAppServiceInfoArray* GetAppServicesLC(TUid aAppUid) const;
  26.230 -	IMPORT_C CApaAppServiceInfoArray* GetServiceImplementationsLC(TUid aServiceUid) const;
  26.231 -	IMPORT_C CApaAppServiceInfoArray* GetServiceImplementationsLC(TUid aServiceUid, const TDataType& aDataType) const;
  26.232 -	IMPORT_C void GetAppServicesL(TUid aAppUid, CArrayFixFlat<TUid>& aServiceUids) const;
  26.233 -	IMPORT_C CApaAppServiceInfoArray* GetAppServiceOpaqueDataLC(TUid aAppUid, TUid aServiceUid) const;
  26.234 -	IMPORT_C TInt AppForDataTypeAndService(const TDataType& aDataType, TUid aServiceUid, TUid& aAppUid) const;
  26.235 -	IMPORT_C TInt AppForDocumentAndService(const TDesC& aFileName, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType) const;
  26.236 -	IMPORT_C TInt AppForDocumentAndService(const RFile& aFile, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType) const;
  26.237 -	IMPORT_C TInt ApplicationLanguage(TUid aAppUid, TLanguage& aLanguage) const;
  26.238 -	IMPORT_C void Close(); //lint !e1511 Member hides non-virtual member
  26.239 -
  26.240 -	IMPORT_C void RegisterListPopulationCompleteObserver(TRequestStatus& aStatus) const;
  26.241 -	IMPORT_C TInt CancelListPopulationCompleteObserver() const;
  26.242 -	IMPORT_C TInt MatchesSecurityPolicy(TBool& aMatches, TUid aAppUid, const TSecurityPolicy& aSecurityPolicy) const;
  26.243 -	IMPORT_C TInt RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult) const;
  26.244 -	IMPORT_C void RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);
  26.245 -	IMPORT_C TInt RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult) const;
  26.246 -	IMPORT_C void RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);
  26.247 -	IMPORT_C void CancelRecognizeFiles();
  26.248 -
  26.249 -	IMPORT_C void RegisterNonNativeApplicationTypeL(TUid aApplicationType, const TDesC& aNativeExecutable);
  26.250 -	IMPORT_C void DeregisterNonNativeApplicationTypeL(TUid aApplicationType);
  26.251 -	IMPORT_C void PrepareNonNativeApplicationsUpdatesL();
  26.252 -	IMPORT_C void RegisterNonNativeApplicationL(TUid aApplicationType, const TDriveUnit& aDrive, CApaRegistrationResourceFileWriter& aRegistrationResourceFile, CApaLocalisableResourceFileWriter* aLocalisableResourceFile, const RFile* aIconFile);
  26.253 -	IMPORT_C void DeregisterNonNativeApplicationL(TUid aApplication);
  26.254 -	IMPORT_C void CommitNonNativeApplicationsUpdatesL();
  26.255 -	IMPORT_C TInt RollbackNonNativeApplicationsUpdates();
  26.256 -	IMPORT_C void NotifyOnDataMappingChange(TRequestStatus& aRequestStatus);
  26.257 -	IMPORT_C void CancelNotifyOnDataMappingChange();
  26.258 -	IMPORT_C TInt GetAppType(TUid& aTypeUid, TUid aAppUid) const;
  26.259 -	
  26.260 -	IMPORT_C TInt ForceRegistration(const RPointerArray<TDesC>& aRegFiles);
  26.261 -	
  26.262 -public:
  26.263 -	// not for public use
  26.264 -	IMPORT_C static void SetFsSessionL(RFs& aFsSession);
  26.265 -	IMPORT_C static void ClearFsSession();
  26.266 -	IMPORT_C static RFs* FsSession();
  26.267 -	IMPORT_C void SetNotify(TBool aCompleteImmediatelyIfNoScanImpendingOrInProgress, TRequestStatus& aStatus);
  26.268 -	IMPORT_C void CancelNotify();
  26.269 -
  26.270 -private: // Reserved for future use
  26.271 -	IMPORT_C virtual void RApaLsSession_Reserved1();
  26.272 -	IMPORT_C virtual void RApaLsSession_Reserved2();
  26.273 -
  26.274 -public:
  26.275 -	/**
  26.276 -	@publishedPartner
  26.277 -	@released
  26.278 -	*/
  26.279 -	IMPORT_C void ForceCommitNonNativeApplicationsUpdatesL(); 
  26.280 -	
  26.281 -private:
  26.282 -	void DoGetAppOwnedFilesL(CDesCArray& aArrayToFill, TUid aAppUid) const;
  26.283 -	void DoGetAppViewsL(CApaAppViewArray& aArrayToFill, TUid aAppUid) const;
  26.284 -	void DoGetAppIconSizesL(TUid aAppUid, CArrayFixFlat<TSize>& aArrayToFill) const;
  26.285 -	TInt DoAppCount(TInt& aCount,TInt aCommand) const;
  26.286 -	void FetchArrayL(MArrayFiller& aArrayFiller,TUid aAppUid, TInt aOpcode, TInt aInitialBufSize) const;
  26.287 -	CBufBase* GetServiceBufferLC(TInt aOpcode, TUid aUid1, TUid aUid2=KNullUid) const;
  26.288 -	TInt StartAndCreate(TInt aRqst,const TDesC& aFileName, TUid aAppUid, TThreadId& aThreadId, TLaunchType aLaunchType);
  26.289 -	CBufBase* GetServiceBufferLC(TInt aOpcode, TUid aUid1, const TDataType& aDataType) const;
  26.290 -	TInt SendReceiveWithReconnect(TInt aFunction,const TIpcArgs& aIpcArgs) const;
  26.291 -	TInt TransferAndInternalizeDataL(const TDesC& aPath, const TInt aRequiredBufferSize, CDataRecognitionResultArray& aResult) const;
  26.292 -	TInt GetExecutableName(TDes& aNativeExecutableName, TDes& aLogicalExecutableName, HBufC8*& aOpaqueData, TIpcArgs& aIpcArgs, TInt aOpcode) const;
  26.293 -	TInt GetOpaqueData(HBufC8*& aOpaqueData, TInt aLengthOfOpaqueData) const;
  26.294 -	TInt StartApplicationPassingFileHandle(const TDesC& aNativeExecutableName, const TDesC& aLogicalExecutableName, const TDesC8* aOpaqueData, const RFile& aFile, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous);
  26.295 -	TInt StartApplicationPassingDocumentName(const TDesC& aNativeExecutableName, const TDesC& aLogicalExecutableName, const TDesC8* aOpaqueData, const TDesC& aDocumentName, TThreadId& aThreadId,TApaCommand aCommand, TRequestStatus* aRequestStatusForRendezvous);
  26.296 -	void StartApplicationL(const TDesC& aNativeExecutableName, const CApaCommandLine& aCommandLine, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous);
  26.297 -	TInt DoAppForDocumentOptionallySpecifyingService(const TDesC& aFileName, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType, TInt aOpcode) const;
  26.298 -	TInt DoAppForDocumentOptionallySpecifyingService(const RFile& aFile, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType, TInt aOpcode) const;
  26.299 -	TInt GetBufferFromFile(HBufC8*& aBuffer, const TDesC& aFileName) const;
  26.300 -	TInt DoStartApp(const CApaCommandLine& aCommandLine, TThreadId* aThreadId,TRequestStatus* aRequestStatusForRendezvous);
  26.301 -	void DoStartAppL(const CApaCommandLine& aCommandLine, TThreadId* aThreadId,TRequestStatus* aRequestStatusForRendezvous);
  26.302 -	static void GetThreadIdL(TThreadId& aThreadId, const RProcess& aProcess);
  26.303 -	static void DeletePointerToPointerToTAny(TAny* aPointerToPointerToTAny);
  26.304 -	static CBufFlat* CreateRegFilesBufferL(const RPointerArray<TDesC>& aRegFiles);
  26.305 -	static void CleanupOperation(TAny* aAny);
  26.306 -
  26.307 -private: // data
  26.308 -	CApaLsSessionExtension* iExtension; // friend!
  26.309 -	};
  26.310 -
  26.311 -
  26.312 -#endif
    27.1 --- a/epoc32/include/apgctl.h	Tue Mar 16 16:12:26 2010 +0000
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,160 +0,0 @@
    27.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    27.5 -// All rights reserved.
    27.6 -// This component and the accompanying materials are made available
    27.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    27.8 -// which accompanies this distribution, and is available
    27.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   27.10 -//
   27.11 -// Initial Contributors:
   27.12 -// Nokia Corporation - initial contribution.
   27.13 -//
   27.14 -// Contributors:
   27.15 -//
   27.16 -// Description:
   27.17 -//
   27.18 -
   27.19 -#ifndef __APGCTL_H__
   27.20 -#define __APGCTL_H__
   27.21 -
   27.22 -#if !defined(__E32STD_H__)
   27.23 -#include <e32std.h>
   27.24 -#endif
   27.25 -#if !defined(__E32BASE_H__)
   27.26 -#include <e32base.h>
   27.27 -#endif
   27.28 -
   27.29 -// classes defined:
   27.30 -class CApaSystemControl;
   27.31 -class CApaSystemControlList;
   27.32 -//
   27.33 -// classes referenced:
   27.34 -class RFs;
   27.35 -class CApaMaskedBitmap;
   27.36 -//
   27.37 -
   27.38 -/**
   27.39 -Calls the control DLL's first ordinal function to create and run the control.
   27.40 -
   27.41 -The function leaves with KErrBadLibraryEntryPoint if the ordinal 1 function 
   27.42 -cannot be found.
   27.43 -
   27.44 -@publishedAll 
   27.45 -@released
   27.46 -*/
   27.47 -typedef TInt (*ApaRunSystemControl)(const TDesC&);
   27.48 -
   27.49 -/**
   27.50 -@publishedAll 
   27.51 -@released
   27.52 -*/
   27.53 -#ifdef _UNICODE
   27.54 -#define KUidSystemControlDll KUidSystemControlDll16
   27.55 -#else
   27.56 -#define KUidSystemControlDll KUidSystemControlDll8
   27.57 -#endif
   27.58 -
   27.59 -/**
   27.60 -@publishedAll 
   27.61 -@deprecated
   27.62 -*/
   27.63 -const TInt KSystemControlDllUidValue8=0x10000297;
   27.64 -
   27.65 -/**
   27.66 -@publishedAll
   27.67 -@deprecated
   27.68 -*/
   27.69 -const TUid KUidSystemControlDll8={KSystemControlDllUidValue8};
   27.70 -
   27.71 -/**
   27.72 -@publishedAll
   27.73 -@released
   27.74 -*/
   27.75 -const TUid KUidSystemControlDll16={0x10003A34};
   27.76 -
   27.77 -
   27.78 -class CApaSystemControl : public CBase
   27.79 -/** Wrapper to a control panel application.
   27.80 -
   27.81 -An instance of the class represents a control panel application. It is also a cache for the control's icon and caption.
   27.82 -
   27.83 -An instance of the wrapper can only be constructed by the control panel application list, which 
   27.84 -is a CApaSystemControlList object. 
   27.85 -
   27.86 -@publishedAll
   27.87 -@released */
   27.88 -	{
   27.89 -public:
   27.90 -	IMPORT_C void CreateL();
   27.91 -	IMPORT_C TUid Type()const;
   27.92 -	IMPORT_C TFileName FileName()const;
   27.93 -	IMPORT_C CApaMaskedBitmap* Icon()const; // one size of icon, 48x48?
   27.94 -	IMPORT_C TPtrC Caption()const;
   27.95 -	IMPORT_C TPtrC ShortCaption()const;
   27.96 -private:
   27.97 -	static CApaSystemControl* NewL(RFs& aFs,const TDesC& aFullPath,const TUidType aUidType);
   27.98 -	~CApaSystemControl();
   27.99 -	
  27.100 -	CApaSystemControl(RFs& aFs);
  27.101 -	void ConstructL(const TDesC& aFullPath,const TUidType aUidType);
  27.102 -private:
  27.103 -	CApaSystemControl* iNext;
  27.104 -	HBufC* iCaption;
  27.105 -	HBufC* iShortCaption;
  27.106 -	CApaMaskedBitmap* iIcon;
  27.107 -	TBool iExists; // used during updating
  27.108 -	TFileName iFullPath;
  27.109 -	TUidType iUidType;
  27.110 -	RFs& iFs;
  27.111 -	
  27.112 -	friend class CApaSystemControlList;
  27.113 -	};
  27.114 -
  27.115 -
  27.116 -
  27.117 -class CApaSystemControlList : public CBase
  27.118 -/** Provides a list of all available control panel applications present on the phone. 
  27.119 -This class is implemented as a linked list of CApaSystemControl. Updates the control panel application list by removing 
  27.120 -control panels that no longer exist, adding new control panels found to the control panel application list and replacing 
  27.121 -a control panel if found in an earlier drive.
  27.122 -
  27.123 -@see CApaSystemControl
  27.124 -@publishedPartner
  27.125 -@released
  27.126 -*/
  27.127 -	{
  27.128 -public:
  27.129 -	IMPORT_C static CApaSystemControlList* NewL(RFs& aFs);
  27.130 -	IMPORT_C ~CApaSystemControlList();
  27.131 -	
  27.132 -	IMPORT_C TInt Count()const;
  27.133 -	IMPORT_C TInt Index(TUid aType)const;
  27.134 -	IMPORT_C CApaSystemControl* Control(TInt aIndex)const;
  27.135 -	IMPORT_C CApaSystemControl* Control(TUid aType)const;
  27.136 -	
  27.137 -	IMPORT_C void UpdateL();
  27.138 -	inline TInt UpdateCount()const;
  27.139 -private:
  27.140 -	CApaSystemControlList(RFs& aFs);
  27.141 -	CApaSystemControl* PreviousControl(const CApaSystemControl* aControl) const;
  27.142 -private:
  27.143 -	TInt iUpdateCount;
  27.144 -	RFs& iFs;
  27.145 -	CApaSystemControl* iControl;
  27.146 -	};
  27.147 -
  27.148 -
  27.149 -//
  27.150 -// inlines
  27.151 -//
  27.152 -
  27.153 -
  27.154 -inline TInt CApaSystemControlList::UpdateCount()const
  27.155 -/** Gets the number of times the control panel application list has been 
  27.156 -updated (by calling UpdateL()). It returns 1 for a newly created list.
  27.157 -
  27.158 -@return The number of times the control panel application list has been changed. */
  27.159 -	{ return iUpdateCount; }
  27.160 -
  27.161 -
  27.162 -
  27.163 -#endif
    28.1 --- a/epoc32/include/apgdoor.h	Tue Mar 16 16:12:26 2010 +0000
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,181 +0,0 @@
    28.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    28.5 -// All rights reserved.
    28.6 -// This component and the accompanying materials are made available
    28.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    28.8 -// which accompanies this distribution, and is available
    28.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   28.10 -//
   28.11 -// Initial Contributors:
   28.12 -// Nokia Corporation - initial contribution.
   28.13 -//
   28.14 -// Contributors:
   28.15 -//
   28.16 -// Description:
   28.17 -//
   28.18 -
   28.19 -#ifndef __APGDOOR_H__
   28.20 -#define __APGDOOR_H__
   28.21 -
   28.22 -#if !defined(__E32STD_H__)
   28.23 -#include <e32std.h>
   28.24 -#endif
   28.25 -#if !defined(__E32BASE_H__)
   28.26 -#include <e32base.h>
   28.27 -#endif
   28.28 -#if !defined(__S32STD_H__)
   28.29 -#include <s32std.h>
   28.30 -#endif
   28.31 -#if !defined(__GDI_H__)
   28.32 -#include <gdi.h>
   28.33 -#endif
   28.34 -#if !defined(__APPARC_H__)
   28.35 -#include <apparc.h>
   28.36 -#endif
   28.37 -#if !defined(__APADBASE_H__)
   28.38 -#include <apadbase.h>
   28.39 -#endif
   28.40 -
   28.41 -/**
   28.42 -@internalAll
   28.43 -*/
   28.44 -#ifdef _UNICODE
   28.45 -#define KUidApaDoorDocStream KUidApaDoorDocStream16
   28.46 -#else
   28.47 -#define KUidApaDoorDocStream KUidApaDoorDocStream8
   28.48 -#endif
   28.49 -
   28.50 -/**
   28.51 -@internalComponent
   28.52 -@deprecated
   28.53 -*/
   28.54 -const TUid KUidApaDoorDocStream8={0x10000144};
   28.55 -
   28.56 -/**
   28.57 -@internalComponent
   28.58 -*/
   28.59 -const TUid KUidApaDoorDocStream16={0x10003A35};
   28.60 -
   28.61 -// classes defined:
   28.62 -class CApaDoor;
   28.63 -class TApaPictureFactory;
   28.64 -//
   28.65 -// classes referenced:
   28.66 -class CEmbeddedStore;
   28.67 -//
   28.68 -
   28.69 -class CApaDoor : public CApaDoorBase
   28.70 -/** A wrapper for an embedded document that can be displayed in a user interface 
   28.71 -as an icon or a glass door. 
   28.72 -
   28.73 -@publishedAll 
   28.74 -@released */
   28.75 -	{
   28.76 -public:
   28.77 -	IMPORT_C static CApaDoor* NewLC(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); // call to create a new door in iconic format - restoration is achieved with TApaPictureFactory
   28.78 -	IMPORT_C static CApaDoor* NewL(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); // call to create a new door in iconic format - restoration is achieved with TApaPictureFactory
   28.79 -	IMPORT_C static CApaDoor* NewL(RFs& aFs, const CStreamStore& aStore,TStreamId aStreamId,CApaProcess& aProcess); // restoring constructor called by TApaPictureFactory
   28.80 -	//
   28.81 -	IMPORT_C void SetFormatToIconL();
   28.82 -	IMPORT_C void SetFormatToGlassL();
   28.83 -	IMPORT_C void SetFormatToTemporaryIconL(TBool aEnabled=ETrue);
   28.84 -	//
   28.85 -	IMPORT_C CApaDocument* DocumentL(TBool aCheckPassword=EFalse); // returns a pointer to the doc, restoring it if necessary. Checks password if required.
   28.86 -	inline TDesC* Caption()const;
   28.87 -	IMPORT_C TUid AppUidL()const;
   28.88 -	//
   28.89 -	// persistence methods
   28.90 -	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aHeadStreamId);
   28.91 -	TStreamId StoreL(CStreamStore& aStore) const;
   28.92 -	//
   28.93 -	IMPORT_C ~CApaDoor();
   28.94 -	//
   28.95 -	// from CPicture
   28.96 -	void Draw(CGraphicsContext& aGc,const TPoint& aTopLeft,const TRect& aClipRect,
   28.97 -						MGraphicsDeviceMap* aMap)const; // draws according to current iPicFormat
   28.98 -	void DetachFromStoreL(TDetach aDegree=EDetachFull); //lint !e1735 Virtual function has default parameter - Must use the same default as declared by CPicture
   28.99 -	void GetOriginalSizeInTwips(TSize& aSize)const;
  28.100 -	void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight);
  28.101 -	void SetCropInTwips(const TMargins& aMargins);
  28.102 -	TPictureCapability Capability() const;
  28.103 -	void GetCropInTwips(TMargins& aMargins) const;
  28.104 -	TInt ScaleFactorWidth() const;
  28.105 -	TInt ScaleFactorHeight() const;
  28.106 -private:
  28.107 -	CApaDoor(RFs& aFs, CApaProcess& aProcess);
  28.108 -	CApaDoor(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips);
  28.109 -	void ConstructL();
  28.110 -	//
  28.111 -	void SetIconSizeInTwips(TSize aSize); // for use of factory
  28.112 -	//
  28.113 -	void StoreDocL(CPersistentStore& aStore)const;
  28.114 -	void RestoreDocL(const CPersistentStore& aStore);
  28.115 -	void RestoreDoorStateL(const CStreamStore& aStore,const CStreamDictionary& streamDic);
  28.116 -	static CStreamDictionary* ReadStreamDictionaryLC(const CStreamStore& aStore,TStreamId aStreamId);
  28.117 -	static void CopyStoreL(const CEmbeddedStore& aSourceStore,RWriteStream& aTargetStream);
  28.118 -	void ExternalizeStateStreamL(CStreamStore& aStore,CStreamDictionary& aStreamDict)const;
  28.119 -	void InternalizeStateStreamL(const CStreamStore& aStore,const CStreamDictionary& aStreamDict,TSize aDefaultIconSize);
  28.120 -	//
  28.121 -	// required so CPicture's can be swizzled
  28.122 -	void ExternalizeL(RWriteStream& aStream)const;
  28.123 -	// from CApaDoorBase
  28.124 -	virtual TSize GlassDoorSize()const;
  28.125 -	TUid AppUidFromStreamL() const;
  28.126 -private:
  28.127 -	RFs& iFs;
  28.128 -	HBufC* iAppCaption; // name of the app used to create the embedded object
  28.129 -	CApaProcess* iApaProcess;
  28.130 -	CApaDocument* iApaDoc;
  28.131 -	CPicture* iPicture; // the current view of the door, either iconic or glass
  28.132 -	CEmbeddedStore* iStore; // store containing the doc
  28.133 -	CBufSeg* iStoreHost; // the host for the embedded store, if the door has been detached from its originating store
  28.134 -	__MUTABLE TSize iIconSizeInTwips;
  28.135 -	//
  28.136 -	friend class TApaPictureFactory;
  28.137 -	};
  28.138 -
  28.139 -
  28.140 -class TApaPictureFactory : public MPictureFactory
  28.141 -// Recognizes KUidPictureTypeDoor and creates CApaDoor pictures
  28.142 -/** A factory class for instantiating and restoring an application's door.
  28.143 -
  28.144 -A door factory object is constructed by the UI environment and can be accessed 
  28.145 -by calling CEikonEnv::PictureFactory().
  28.146 -
  28.147 -@publishedAll
  28.148 -@released 
  28.149 -@see CEikonEnv::PictureFactory()
  28.150 -@see CApaDoor */
  28.151 -	{
  28.152 -public:
  28.153 -	IMPORT_C TApaPictureFactory(CApaProcess* aAppProcess);
  28.154 -	inline void SetIconSize(TSize aIconSizeInTwips);
  28.155 -	//
  28.156 -	// from MPictureFactory
  28.157 -	IMPORT_C void NewPictureL(TPictureHeader& aPictureHeader,const CStreamStore& aPictureStore)const; // used to create CApaDoor's during document restore only 
  28.158 -protected:
  28.159 -	IMPORT_C TApaPictureFactory();
  28.160 -	
  28.161 -private:
  28.162 -	CApaProcess* iApaProcess;
  28.163 -	TSize iIconSize;
  28.164 -	TInt iSpare;
  28.165 -	};
  28.166 -
  28.167 -
  28.168 -//
  28.169 -// inlines
  28.170 -//
  28.171 -
  28.172 -inline TDesC* CApaDoor::Caption()const 
  28.173 -	/** Gets the name of the application with which the embedded document is associated.
  28.174 -	
  28.175 -	@return A pointer to a descriptor containing the name of the application. */
  28.176 -	{ return iAppCaption; }
  28.177 -
  28.178 -inline void TApaPictureFactory::SetIconSize(TSize aIconSizeInTwips)
  28.179 -	/** Sets the size of the icon.
  28.180 -	
  28.181 -	@param aIconSizeInTwips The size of the icon, in twips. */
  28.182 -	{ iIconSize = aIconSizeInTwips; }
  28.183 -
  28.184 -#endif
    29.1 --- a/epoc32/include/apgicnfl.h	Tue Mar 16 16:12:26 2010 +0000
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,561 +0,0 @@
    29.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    29.5 -// All rights reserved.
    29.6 -// This component and the accompanying materials are made available
    29.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    29.8 -// which accompanies this distribution, and is available
    29.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   29.10 -//
   29.11 -// Initial Contributors:
   29.12 -// Nokia Corporation - initial contribution.
   29.13 -//
   29.14 -// Contributors:
   29.15 -//
   29.16 -// Description:
   29.17 -//
   29.18 -
   29.19 -#ifndef __APGICNFL_H__
   29.20 -#define __APGICNFL_H__
   29.21 -
   29.22 -#include <apadef.h>
   29.23 -#include <apaid.h>
   29.24 -#include <bitdev.h>
   29.25 -#include <apmstd.h>
   29.26 -#include <badesca.h>
   29.27 -
   29.28 -class CFbsBitmap;
   29.29 -class CPersistentStore;
   29.30 -class RReadStream;
   29.31 -class RWriteStream;
   29.32 -
   29.33 -class CApaMaskedBitmap : public CFbsBitmap
   29.34 -/** An application icon.
   29.35 -
   29.36 -This is a bitmap and a mask, managed by the Font and Bitmap server.
   29.37 -
   29.38 -An object of this type is passed to RApaLsSession::GetAppIcon() to fetch a 
   29.39 -suitable application icon.
   29.40 -
   29.41 -@publishedAll
   29.42 -@released
   29.43 -@see RApaLsSession::GetAppIcon() */
   29.44 -	{
   29.45 -public:
   29.46 -	IMPORT_C static CApaMaskedBitmap* NewLC();
   29.47 -	IMPORT_C static CApaMaskedBitmap* NewL(const CApaMaskedBitmap* aSourceIcon);
   29.48 -	//
   29.49 -	IMPORT_C CFbsBitmap* Mask() const;
   29.50 -	IMPORT_C void InternalizeL(RReadStream& aStream); 		//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
   29.51 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
   29.52 -	//
   29.53 -	IMPORT_C ~CApaMaskedBitmap();
   29.54 -	void SetRomBitmapL(TUint8* aRomPointer);				//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
   29.55 -	IMPORT_C void SetMaskBitmap(CFbsBitmap* aMask);
   29.56 -private:
   29.57 -	CApaMaskedBitmap();
   29.58 -	void ConstructL();
   29.59 -private:
   29.60 -	CFbsBitmap* iMask;
   29.61 -	};
   29.62 -
   29.63 -/**
   29.64 -@internalComponent
   29.65 -*/
   29.66 -class CApaResourceFileWriterBase : public CBase
   29.67 -	{
   29.68 -protected:
   29.69 -	class RBufferSink;
   29.70 -	class MDataSink
   29.71 -		{
   29.72 -	public:
   29.73 -		void WriteBufferL(const TDesC8& aBuffer);
   29.74 -		void WriteCompressedUnicodeRunL(TInt aNumberOfBytesWhenUncompressed, const TDesC8& aTextAsCompressedUnicode);
   29.75 -		void WriteInCompressedUnicodeFormatL(TInt aNumberOfBytesWhenUncompressed, const TDesC8& aData, TBool aInCompressedUnicodeRun);
   29.76 -		TInt NumberOfBytesWhenUncompressed() const;
   29.77 -		inline TBool CompressedUnicodeFormat() const {return (iBufferSinkForCompressedUnicodeFormat!=NULL);}
   29.78 -	protected:
   29.79 -		MDataSink(RBufferSink* aBufferSinkForCompressedUnicodeFormat);
   29.80 -		void FlushL(TBool aFinalFlush);
   29.81 -		void Reset(TInt& aNumberOfBytesWhenUncompressed);
   29.82 -	private:
   29.83 -		void WriteRunLengthL(TInt aRunLength);
   29.84 -	private:
   29.85 -		enum
   29.86 -			{
   29.87 -			EFlag_InCompressedUnicodeRun	=0x00000001
   29.88 -			};
   29.89 -	private:
   29.90 -		// new virtual functions
   29.91 -		virtual void DoWriteBufferL(const TDesC8& aBuffer)=0;
   29.92 -	private:
   29.93 -		TInt iNumberOfBytesWhenUncompressed;
   29.94 -		TUint iFlags;
   29.95 -		RBufferSink* iBufferSinkForCompressedUnicodeFormat; // does not own what it points to
   29.96 -		};
   29.97 -	class RBufferSink : public MDataSink
   29.98 -		{
   29.99 -	public:
  29.100 -		RBufferSink(RBufferSink* aBufferSinkForCompressedUnicodeFormat);
  29.101 -		void ConstructLC();
  29.102 -		void Close();
  29.103 -		void FlushAndGetAndResetL(TInt& aNumberOfBytesWhenUncompressed, RBuf8& aBuffer);
  29.104 -	private:
  29.105 -		// from MDataSink
  29.106 -		virtual void DoWriteBufferL(const TDesC8& aBuffer);
  29.107 -	private:
  29.108 -		RBuf8 iBuffer;
  29.109 -		};
  29.110 -protected:
  29.111 -	CApaResourceFileWriterBase();
  29.112 -	void DoGenerateFileContentsL(RBuf8& aBuffer, TUid aUid2, TUid aUid3) const;
  29.113 -	void WriteUidTypeL(MDataSink& aDataSink, TUid aUid2, TUid aUid3) const;
  29.114 -	void WriteTextL(MDataSink& aDataSink, const TDesC& aText) const;
  29.115 -	void WriteText8L(MDataSink& aDataSink, const TDesC8& aText8) const;
  29.116 -	void WriteUint8L(MDataSink& aDataSink, TUint aUint8) const;
  29.117 -	void WriteLittleEndianUint16L(MDataSink& aDataSink, TUint aUint16) const;
  29.118 -	void WriteLittleEndianUint32L(MDataSink& aDataSink, TUint aUint32) const;
  29.119 -	void WriteBufferL(MDataSink& aDataSink, const TDesC8& aBuffer) const;
  29.120 -private:
  29.121 -	static HBufC8* AsCompressedUnicodeLC(const TDesC& aUncompressedUnicode);
  29.122 -	void MainResourceInCompiledFormatLC(TInt& aMainResourceSizeInBytesWhenUncompressed, RBuf8& aBuffer, TBool aCompressedUnicodeFormat) const;
  29.123 -private:
  29.124 -	// new virtual functions
  29.125 -	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const=0;
  29.126 -	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const=0;
  29.127 -	};
  29.128 -
  29.129 -/**
  29.130 -Used to support the registration of non-native applications.
  29.131 -
  29.132 -The task of this class is to generate the resource files expected by the Apparc server. Applications 
  29.133 -that register other applications can use functions of this class to customise the generated resource files.
  29.134 -
  29.135 -@publishedPartner
  29.136 -@released
  29.137 -*/
  29.138 -class CApaRegistrationResourceFileWriter : public CApaResourceFileWriterBase
  29.139 -	{
  29.140 -public:
  29.141 -	IMPORT_C static CApaRegistrationResourceFileWriter* NewL(TUid aAppUid, const TDesC& aAppFile, TUint aAttributes);
  29.142 -	IMPORT_C virtual ~CApaRegistrationResourceFileWriter();
  29.143 -	TUid AppUid() const;
  29.144 -	void GenerateFileContentsL(RBuf8& aBuffer) const;
  29.145 -	void SetLocalisableResourceFileL(const TDesC& aLocalisableResourceFile);
  29.146 -	IMPORT_C void SetAppIsHiddenL(TBool aAppIsHidden);
  29.147 -	IMPORT_C void SetEmbeddabilityL(TApaAppCapability::TEmbeddability aEmbeddability);
  29.148 -	IMPORT_C void SetSupportsNewFileL(TBool aSupportsNewFile);
  29.149 -	IMPORT_C void SetLaunchInBackgroundL(TBool aLaunchInBackground);
  29.150 -	IMPORT_C void SetGroupNameL(const TDesC& aGroupName);
  29.151 -	IMPORT_C void SetDefaultScreenNumberL(TInt aDefaultScreenNumber);
  29.152 -	IMPORT_C void SetOpaqueDataL(const TDesC8& aOpaqueData);
  29.153 -	IMPORT_C void AddDataTypeL(TInt aPriority, const TDesC8& aType);
  29.154 -	IMPORT_C void AddFileOwnershipInfoL(const TDesC& aFileName);
  29.155 -// Not needing to be supported for the foreseeable future:
  29.156 -//	IMPORT_C void AddServiceInfoL(TUid aServiceUid, const TDesC8* aOpaqueData);
  29.157 -//	IMPORT_C void AddServiceInfoDataTypeL(TUid aServiceUid, TInt aPriority, const TDesC8& aType);
  29.158 -private:
  29.159 -	struct SDataType // DATATYPE
  29.160 -		{
  29.161 -		TInt iPriority;
  29.162 -		HBufC8* iType;
  29.163 -		};
  29.164 -	struct SFileOwnershipInfo // FILE_OWNERSHIP_INFO
  29.165 -		{
  29.166 -		HBufC* iFileName;
  29.167 -		};
  29.168 -private:
  29.169 -	CApaRegistrationResourceFileWriter(TUid aAppUid, TUint aAttributes);
  29.170 -	void ConstructL(const TDesC& aAppFile);
  29.171 -	void WriteDataTypeL(MDataSink& aDataSink, const SDataType& aDataType) const;
  29.172 -	void WriteFileOwnershipInfoL(MDataSink& aDataSink, const SFileOwnershipInfo& aFileOwnershipInfo) const;
  29.173 -	// from CApaResourceFileWriterBase
  29.174 -	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const;
  29.175 -	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const;
  29.176 -private:
  29.177 -	TUid iAppUid;
  29.178 -	HBufC* iAppFile;
  29.179 -	TUint iAttributes;
  29.180 -	HBufC* iLocalisableResourceFile;
  29.181 -	TBool iAppIsHidden;
  29.182 -	TApaAppCapability::TEmbeddability iEmbeddability;
  29.183 -	TBool iSupportsNewFile;
  29.184 -	TBool iLaunchInBackground;
  29.185 -	HBufC* iGroupName;
  29.186 -	TInt iDefaultScreenNumber;
  29.187 -	HBufC8* iOpaqueData;
  29.188 -	RArray<SDataType> iDataTypeList;
  29.189 -	RArray<SFileOwnershipInfo> iFileOwnershipList;
  29.190 -	};
  29.191 -
  29.192 -/**
  29.193 -@internalAll
  29.194 -*/
  29.195 -class CApaLocalisableResourceFileWriter : public CApaResourceFileWriterBase
  29.196 -	{
  29.197 -public:
  29.198 -	IMPORT_C static CApaLocalisableResourceFileWriter* NewL(const TDesC& aShortCaption, const TDesC& aCaption, TInt aNumberOfIcons, const TDesC& aGroupName);
  29.199 -	IMPORT_C virtual ~CApaLocalisableResourceFileWriter();
  29.200 -	void GenerateFileContentsL(RBuf8& aBuffer) const;
  29.201 -	void SetIconFileL(const TDesC& aIconFile);
  29.202 -// Not needing to be supported for the foreseeable future:
  29.203 -//	IMPORT_C void AddViewDataL(TUid aViewUid, TInt aScreenMode, const TDesC& aCaption, TInt aNumberOfIcons, const TDesC& aIconFile);
  29.204 -private:
  29.205 -	struct SCaptionAndIconInfo // CAPTION_AND_ICON_INFO
  29.206 -		{
  29.207 -		HBufC* iCaption;
  29.208 -		TInt iNumberOfIcons;
  29.209 -		HBufC* iIconFile;
  29.210 -		};
  29.211 -private:
  29.212 -	CApaLocalisableResourceFileWriter(TInt aNumberOfIcons);
  29.213 -	void ConstructL(const TDesC& aShortCaption, const TDesC& aCaption, const TDesC& aGroupName);
  29.214 -	void WriteCaptionAndIconInfoL(MDataSink& aDataSink, const SCaptionAndIconInfo& aCaptionAndIcon) const;
  29.215 -	// from CApaResourceFileWriterBase
  29.216 -	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const;
  29.217 -	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const;
  29.218 -private:
  29.219 -	HBufC* iShortCaption;
  29.220 -	SCaptionAndIconInfo iCaptionAndIcon;
  29.221 -	HBufC* iGroupName;
  29.222 -	};
  29.223 -
  29.224 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.225 -
  29.226 -class CApaAppInfoFileWriter;
  29.227 -
  29.228 -/**
  29.229 -@internalAll
  29.230 -*/
  29.231 -const TUid KUidInterimFormatFileForJavaMIDletInstaller={0x10208182};
  29.232 -
  29.233 -/**
  29.234 -@internalAll
  29.235 -*/
  29.236 -class ForJavaMIDletInstaller
  29.237 -	{
  29.238 -public:
  29.239 -	IMPORT_C static void CheckInterimFormatFileNotCorruptL(RFile& aInterimFormatFile);
  29.240 -	IMPORT_C static void GetJavaMIDletInfoL(RFs& aFs, const TDesC& aFileName,TUint32& aJavaMIDletInfo_AmsAuthId,TUint32& aJavaMIDletInfo_MIDlet);
  29.241 -	IMPORT_C static CApaAppInfoFileWriter* NewInterimFormatFileWriterLC(RFs& aFs,const TDesC& aFileName,TUid aApplicationUid,TUint32 aJavaMIDletInfo_AmsAuthId,TInt aJavaMIDletInfo_MIDlet);
  29.242 -	};
  29.243 -
  29.244 -#endif // UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER
  29.245 -
  29.246 -#if (((defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || !defined(SYMBIAN_HIDE_UI_FRAMEWORKS_V1)) && !defined(SYMBIAN_REMOVE_UI_FRAMEWORKS_V1)) || defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER))
  29.247 -
  29.248 -#if !defined(IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER)
  29.249 -// we're compiling a source file that doesn't define IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER, so give it it's default "value" of "IMPORT_C"
  29.250 -#define IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER IMPORT_C
  29.251 -#endif
  29.252 -
  29.253 -/**
  29.254 -@publishedAll
  29.255 -@deprecated
  29.256 -*/
  29.257 -#ifdef _UNICODE
  29.258 -#define KUidAppInfoFile KUidAppInfoFile16
  29.259 -#else
  29.260 -#define KUidAppInfoFile KUidAppInfoFile8
  29.261 -#endif
  29.262 -
  29.263 -/**
  29.264 -@publishedAll
  29.265 -@deprecated
  29.266 -*/
  29.267 -const TUid KUidAppInfoFile8={268435562};
  29.268 -
  29.269 -/**
  29.270 -@publishedAll
  29.271 -@deprecated
  29.272 -*/
  29.273 -const TUid KUidAppInfoFile16={0x10003A38};
  29.274 -
  29.275 -/**
  29.276 -@internalComponent
  29.277 -*/
  29.278 -const TUid KUidAppInfoFileVersion2={0x101fb032};
  29.279 -
  29.280 -/**
  29.281 -@internalComponent
  29.282 -*/
  29.283 -enum TAifVersion
  29.284 -// The order here is important, only ever APPEND to the list
  29.285 -	{
  29.286 -	EAifVersionOriginal,
  29.287 -	EAifVersionAddsDataType,
  29.288 -	EAifVersionAddsViewData,
  29.289 -	EAifVersionAddsFileOwnershipInfo
  29.290 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.291 -	,EAifVersionAddsJavaMIDletInfo
  29.292 -#endif
  29.293 -	};
  29.294 -
  29.295 -class CApaAIFCaption : public CBase
  29.296 -//
  29.297 -// Represents a caption in an AIF during reading and writing of the file.
  29.298 -/**
  29.299 -@internalComponent
  29.300 -*/
  29.301 -	{
  29.302 -public:
  29.303 -	~CApaAIFCaption();
  29.304 -	CApaAIFCaption();
  29.305 -	void ConstructL(TLanguage aLanguage,const TDesC& aCaption);
  29.306 -	static CApaAIFCaption* NewLC(TLanguage aLanguage,const TDesC& aCaption);
  29.307 -	void InternalizeL(RReadStream& aStream);
  29.308 -	void ExternalizeL(RWriteStream& aStream) const;
  29.309 -	TLanguage Language() const;
  29.310 -	TApaAppCaption Caption() const;
  29.311 -public:
  29.312 -	HBufC* iCaption;
  29.313 -	TLanguage iLanguage;
  29.314 -	};
  29.315 -
  29.316 -class CApaAIFViewData : public CBase
  29.317 -//
  29.318 -// Represents the data associated with an application view described in an AIF
  29.319 -// during reading and writing of the file.
  29.320 -// implementation class
  29.321 -/**
  29.322 -@internalComponent
  29.323 -*/
  29.324 -	{
  29.325 -public:
  29.326 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TApaAppCaption CaptionL(TLanguage aLanguage) const;
  29.327 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER CApaMaskedBitmap* IconByIndexL(TInt aIndex) const;
  29.328 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TInt NumberOfIcons() const;
  29.329 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TUid ViewUid() const;
  29.330 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TInt ScreenMode() const;
  29.331 -public:
  29.332 -	~CApaAIFViewData();
  29.333 -	static CApaAIFViewData* NewLC();
  29.334 -	static CApaAIFViewData* NewLC(const CApaAIFViewData& aSourceData);
  29.335 -	void InternalizeL(RReadStream& aStream);		
  29.336 -	void ExternalizeL(RWriteStream& aStream) const;
  29.337 -	void SetScreenMode(TInt aScreenMode);
  29.338 -	void AddCaptionL(TLanguage aLanguage,const TDesC& aCaption);
  29.339 -	void AddIconL(CApaMaskedBitmap& aIcon);
  29.340 -	void AddIconIndexL(TInt aIndex);
  29.341 -	void SetViewUid(TUid aUid);
  29.342 -	void LoadIconsL(const TDesC& aFileName, TUint aMbmOffset);
  29.343 -private:
  29.344 -	CApaAIFViewData();
  29.345 -	void ConstructL();
  29.346 -	void ConstructL(const CApaAIFViewData& aSourceData);
  29.347 -private:
  29.348 -	TInt iScreenMode;
  29.349 -	CArrayPtr<CApaMaskedBitmap>* iIconArray;
  29.350 -	CArrayPtr<CApaAIFCaption>* iCaptionArray;
  29.351 -	TUid iViewUid;
  29.352 -	CArrayFixFlat<TInt>* iIconIndexArray;		// used for AIF version 2 format
  29.353 -	};
  29.354 -
  29.355 -class CApaAppInfoFile : public CBase
  29.356 -/**
  29.357 -@internalComponent
  29.358 -*/
  29.359 -	{
  29.360 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.361 -	friend class ForJavaMIDletInstaller;
  29.362 -#endif
  29.363 -public:
  29.364 -	~CApaAppInfoFile();
  29.365 -	//
  29.366 -protected:
  29.367 -	CApaAppInfoFile(RFs& aFs);
  29.368 -	void ConstructL();
  29.369 -protected:
  29.370 -
  29.371 -	class TCaptionHeader
  29.372 -		{
  29.373 -	public:
  29.374 -		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
  29.375 -		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
  29.376 -	public:
  29.377 -		TSwizzle<HBufC> iCaption;
  29.378 -		TLanguage iLanguage;
  29.379 -		};
  29.380 -	class TIconHeader
  29.381 -		{
  29.382 -	public:
  29.383 -		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
  29.384 -		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
  29.385 -	public:
  29.386 -		TSwizzle<CApaMaskedBitmap> iIcon;	// Used for old AIF format Internalize
  29.387 -		TInt iIconSideInPixels;
  29.388 -		TSwizzle<CFbsBitmap> iIconMain;		// Used for new AIF format
  29.389 -		TSwizzle<CFbsBitmap> iIconMask;		// Used for new AIF format
  29.390 -		};
  29.391 -	class TDataTypeHeader
  29.392 -		{
  29.393 -	public:
  29.394 -		// header info only
  29.395 -		void InternalizeL(RReadStream& aStream); 			// internalizes the header info only
  29.396 -		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
  29.397 -	public:
  29.398 -		TSwizzle<TDataType> iDataType;
  29.399 -		TDataTypePriority iPriority;
  29.400 -		};
  29.401 -	class TViewDataHeader
  29.402 -		{
  29.403 -	public:
  29.404 -		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
  29.405 -		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
  29.406 -	public:
  29.407 -		TSwizzle<CApaAIFViewData> iViewData;
  29.408 -		};
  29.409 -	class TFileOwnershipInfoHeader
  29.410 -		{
  29.411 -	public:
  29.412 -		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
  29.413 -		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
  29.414 -	public:
  29.415 -		TSwizzle<HBufC> iOwnedFileName;
  29.416 -		};
  29.417 -protected:
  29.418 -	RFs& iFs;
  29.419 -	CPersistentStore* iStore;
  29.420 -	CArrayFix<TCaptionHeader>* iCaptionHeaderArray;
  29.421 -	CArrayFix<TIconHeader>* iIconHeaderArray;
  29.422 -	CArrayFix<TDataTypeHeader>* iDataTypeHeaderArray;
  29.423 -	CArrayFix<TViewDataHeader>* iViewDataHeaderArray;
  29.424 -	CArrayFix<TFileOwnershipInfoHeader>* iFileOwnershipInfoHeaderArray;
  29.425 -	TApaAppCapability iCapability;
  29.426 -	};
  29.427 -
  29.428 -class CApaAppInfoFileReader : public CApaAppInfoFile
  29.429 -/** Aif file reader.
  29.430 -
  29.431 -Aif files contain information about an application, including its icons and 
  29.432 -captions.
  29.433 -
  29.434 -An application can get a reader for its own aif file by calling CEikApplication::OpenAppInfoFileLC(). 
  29.435 -
  29.436 -@publishedAll
  29.437 -@deprecated */
  29.438 -	{
  29.439 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.440 -	friend class ForJavaMIDletInstaller;
  29.441 -#endif
  29.442 -public:
  29.443 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static CApaAppInfoFileReader* NewLC(RFs& aFs, const TDesC& aFileName,TUid aApplicationUid=KNullUid);
  29.444 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static CApaAppInfoFileReader* NewL(RFs& aFs, const TDesC& aFileName,TUid aApplicationUid=KNullUid);
  29.445 -	//
  29.446 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void Capability(TDes8& aInfo) const;
  29.447 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TApaAppCaption CaptionL(TLanguage aLanguage);
  29.448 -	
  29.449 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER CApaMaskedBitmap* CreateMaskedBitmapL(TInt aIconSideInPixels); // If there are no bitmaps in the file this method leaves with KErrNotFound
  29.450 -	// Not available until ER6
  29.451 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER CApaMaskedBitmap* CreateMaskedBitmapByIndexLC(TInt aIndex); // If there are no bitmaps in the file this method leaves with KErrNotFound
  29.452 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TInt NumberOfBitmaps() const;
  29.453 -
  29.454 -	// Not available till ER5
  29.455 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void DataTypesSupportedL(CArrayFix<TDataTypeWithPriority>& aTypeList) const;
  29.456 -	//
  29.457 -
  29.458 -	// Not available till ER6.1
  29.459 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void GetViewsL(CArrayPtr<CApaAIFViewData>& aViewList) const;
  29.460 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void GetOwnedFilesL(CDesCArray& aOwnedFilesList) const;
  29.461 -	//	
  29.462 -
  29.463 -	// utility function
  29.464 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static void StretchDrawL(CFbsBitmap* aSource,CFbsBitmap* aTarget,TSize aSizeInPixels);
  29.465 -	//
  29.466 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER ~CApaAppInfoFileReader();
  29.467 -public:
  29.468 -	static void GetAifFileNameL(const TDesC& aFullName,TDes& aAifName);
  29.469 -private:
  29.470 -	CApaAppInfoFileReader(RFs& aFs);
  29.471 -	void InternalizeL(RReadStream& aStream);
  29.472 -	void ConstructL(const TDesC& aFileName,TUid aUid);
  29.473 -	void LoadAifFileVersionTwoL(const TDesC& aFileName, TUid aMostDerivedUid);
  29.474 -	void AddIconHeadersL(const TDesC& aFileName, TInt32 aFileOffset, TInt aNumIcons);
  29.475 -private:
  29.476 -	HBufC* iDefaultCaption;
  29.477 -	TUint8* iRomPointer;
  29.478 -	TInt iMbmOffset;
  29.479 -	HBufC* iAifFileName;
  29.480 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.481 -	TUint32 iJavaMIDletInfo_AmsAuthId;
  29.482 -	TInt iJavaMIDletInfo_MIDlet;
  29.483 -#endif
  29.484 -	};
  29.485 -
  29.486 -class CApaAppInfoFileWriter : public CApaAppInfoFile
  29.487 -/**
  29.488 -Aif file writer.
  29.489 -
  29.490 -This class writes application information, including icons and captions into the aif file.
  29.491 -
  29.492 -@publishedAll
  29.493 -@deprecated */
  29.494 -	{
  29.495 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.496 -	friend class ForJavaMIDletInstaller;
  29.497 -#endif
  29.498 -public:
  29.499 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static CApaAppInfoFileWriter* NewLC(RFs& aFs, const TDesC& aFileName,TUid aApplicationUid);
  29.500 -	//
  29.501 -	IMPORT_C TInt SetCapability(const TDesC8& aInfo);
  29.502 -	IMPORT_C void AddCaptionL(TLanguage aLanguage,const TDesC& aCaption);
  29.503 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddIconL(const TDesC& aIconFileName);
  29.504 -	IMPORT_C void AddIconL(CApaMaskedBitmap& aIcon);
  29.505 -	
  29.506 -	// Not available till ER5
  29.507 -	IMPORT_C void AddDataTypeL(const TDataTypeWithPriority& aTypePriority);
  29.508 -	//
  29.509 -
  29.510 -	// Not available till ER6.1
  29.511 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewL(TUid aViewUid);
  29.512 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewL(TUid aViewUid,TInt aScreenMode);
  29.513 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewCaptionL(TLanguage aLanguage,const TDesC& aCaption,TUid aViewUid);
  29.514 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewIconL(CApaMaskedBitmap& aIcon,TUid aViewUid);
  29.515 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void StoreViewL(TUid aViewId);
  29.516 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddOwnedFileL(const TDesC& aOwnedFileName);
  29.517 -	//
  29.518 -	
  29.519 -	IMPORT_C void StoreL();
  29.520 -	//
  29.521 -	IMPORT_C ~CApaAppInfoFileWriter();
  29.522 -private:
  29.523 -	CApaAppInfoFileWriter(RFs& aFs);
  29.524 -	void ExternalizeL(RWriteStream& aStream) const;
  29.525 -	void ConstructL(const TDesC& aFileName,TUid aUid
  29.526 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.527 -					,TUid aMiddleUid=KUidAppInfoFile,TUint32 aJavaMIDletInfo_AmsAuthId=0,TInt aJavaMIDletInfo_MIDlet=0
  29.528 -#endif
  29.529 -					);
  29.530 -private:
  29.531 -	CStoreMap* iMap;
  29.532 -#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
  29.533 -	TUint32 iJavaMIDletInfo_AmsAuthId;
  29.534 -	TInt iJavaMIDletInfo_MIDlet;
  29.535 -#endif
  29.536 -	};
  29.537 -
  29.538 -class CApaAppCaptionFileReader : public CBase
  29.539 -/**
  29.540 -@internalComponent
  29.541 -*/
  29.542 -	{
  29.543 -public:
  29.544 -	CApaAppCaptionFileReader(RFs& aFs,const TDesC& iAppFileName);
  29.545 -	void GetCaptionsL(TApaAppCaption& aCaption,TApaAppCaption& aShortCaption);
  29.546 -private:	
  29.547 -	RFs& iFs;
  29.548 -	TFileName iCaptionFileName;
  29.549 -	};
  29.550 -
  29.551 -class AppInfoFileUtils
  29.552 -// Internal utilities providing helper functions for non-ROM localisation
  29.553 -/**
  29.554 -@internalComponent
  29.555 -*/
  29.556 -	{
  29.557 -public: // For internal use only
  29.558 -	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static void GetAifFileName(const RFs& aFs,TDes& aAifName);
  29.559 -public:
  29.560 -	static void GetAifFileNameL(const RFs& aFs,const TDesC& aFullName,TDes& aAifName);
  29.561 -	};
  29.562 -#endif // #if (defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || !defined(SYMBIAN_HIDE_UI_FRAMEWORKS_V1)) && !defined(SYMBIAN_REMOVE_UI_FRAMEWORKS_V1)
  29.563 -
  29.564 -#endif
    30.1 --- a/epoc32/include/apgtask.h	Tue Mar 16 16:12:26 2010 +0000
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,195 +0,0 @@
    30.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    30.5 -// All rights reserved.
    30.6 -// This component and the accompanying materials are made available
    30.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    30.8 -// which accompanies this distribution, and is available
    30.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   30.10 -//
   30.11 -// Initial Contributors:
   30.12 -// Nokia Corporation - initial contribution.
   30.13 -//
   30.14 -// Contributors:
   30.15 -//
   30.16 -// Description:
   30.17 -//
   30.18 -
   30.19 -#ifndef __APGTASK_H__
   30.20 -#define __APGTASK_H__
   30.21 -
   30.22 -#include <e32base.h>
   30.23 -#include <w32std.h>
   30.24 -
   30.25 -class RWsSession;
   30.26 -struct TKeyEvent;
   30.27 -
   30.28 -/** @internalTechnology */
   30.29 -static const TInt KApaSystemEventsWithPowerMgmtCapabilityStart = 100;
   30.30 -/** @internalTechnology */
   30.31 -static const TInt KApaSystemEventsWithPowerMgmtCapabilityEnd = 199;
   30.32 -
   30.33 -/** Defines the event types that a TApaTask object can send to its window group.
   30.34 -
   30.35 -The events are sent by TApaTask::SendSystemEvent() and are handled by CEikAppUi::HandleSystemEventL().
   30.36 -
   30.37 -@publishedAll
   30.38 -@released
   30.39 -@see TApaTask::SendSystemEvent()
   30.40 -@see CEikAppUi
   30.41 -@see CCoeAppUi::HandleSystemEventL() */
   30.42 -enum TApaSystemEvent
   30.43 -	{
   30.44 -	/** The task is being closed. */
   30.45 -	EApaSystemEventShutdown=1,
   30.46 -	/** Reserved for future use. */
   30.47 -	EApaSystemEventBackupStarting,
   30.48 -	/** Reserved for future use. */
   30.49 -	EApaSystemEventBackupComplete,
   30.50 -	/** The task is being brought to the foreground. */
   30.51 -	EApaSystemEventBroughtToForeground,
   30.52 -	/** Close any tasks including system tasks. 
   30.53 -	Events in the range @c KApaSystemEventsWithPowerMgmtCapabilityStart to 
   30.54 -	@c KApaSystemEventsWithPowerMgmtCapabilityEnd requires capability PowerMgmt*/
   30.55 -	EApaSystemEventSecureShutdown = KApaSystemEventsWithPowerMgmtCapabilityStart
   30.56 -	};
   30.57 -
   30.58 -#ifdef _UNICODE
   30.59 -/**
   30.60 -@publishedAll
   30.61 -@released
   30.62 -*/
   30.63 -#define KUidApaMessageSwitchOpenFile KUidApaMessageSwitchOpenFile16
   30.64 -
   30.65 -/**
   30.66 -@publishedAll
   30.67 -@released
   30.68 -*/
   30.69 -#define KUidApaMessageSwitchCreateFile KUidApaMessageSwitchCreateFile16
   30.70 -
   30.71 -/**
   30.72 -@publishedAll
   30.73 -@released
   30.74 -*/
   30.75 -#define KUidApaMessageSwitchOpenFileValue KUidApaMessageSwitchOpenFileValue16
   30.76 -
   30.77 -/**
   30.78 -@publishedAll
   30.79 -@released
   30.80 -*/
   30.81 -#define KUidApaMessageSwitchCreateFileValue KUidApaMessageSwitchCreateFileValue16
   30.82 -#else
   30.83 -#define KUidApaMessageSwitchOpenFile KUidApaMessageSwitchOpenFile8
   30.84 -#define KUidApaMessageSwitchCreateFile KUidApaMessageSwitchCreateFile8
   30.85 -#define KUidApaMessageSwitchOpenFileValue KUidApaMessageSwitchOpenFileValue8
   30.86 -#define KUidApaMessageSwitchCreateFileValue KUidApaMessageSwitchCreateFileValue8
   30.87 -#endif
   30.88 -
   30.89 -/**
   30.90 -@internalComponent
   30.91 -*/
   30.92 -const TInt KUidApaMessageSwitchOpenFileValue16=0x10003A39;
   30.93 -
   30.94 -/**
   30.95 -@internalComponent
   30.96 -*/
   30.97 -const TUid KUidApaMessageSwitchOpenFile16={KUidApaMessageSwitchOpenFileValue16};
   30.98 -
   30.99 -/**
  30.100 -@internalComponent
  30.101 -*/
  30.102 -const TInt KUidApaMessageSwitchCreateFileValue16=0x10003A3A;
  30.103 -
  30.104 -/**
  30.105 -@internalComponent
  30.106 -*/
  30.107 -const TUid KUidApaMessageSwitchCreateFile16={KUidApaMessageSwitchCreateFileValue16};
  30.108 -
  30.109 -class TApaTask
  30.110 -/** Application task.
  30.111 -
  30.112 -A task is a running application. At any one time, for any given application, 
  30.113 -there may be zero, one, or more tasks running on a device.
  30.114 -
  30.115 -A task is identified by its association with the running application's window 
  30.116 -group.
  30.117 -
  30.118 -An instance of the TApaTaskList class is used to find and access specific 
  30.119 -tasks.
  30.120 -
  30.121 -@publishedAll
  30.122 -@released
  30.123 -@see TApaTaskList
  30.124 -@see RWindowGroup
  30.125 -@see RWsSession */
  30.126 -	{
  30.127 -public:
  30.128 -
  30.129 -	IMPORT_C TApaTask(RWsSession& aWsSession);
  30.130 -	IMPORT_C void SetWgId(TInt aWgId);
  30.131 -	IMPORT_C TInt WgId() const;
  30.132 -	IMPORT_C TBool Exists() const;
  30.133 -	IMPORT_C TThreadId ThreadId() const;
  30.134 -	IMPORT_C void BringToForeground();
  30.135 -	IMPORT_C void SendToBackground();
  30.136 -	IMPORT_C void EndTask();
  30.137 -	IMPORT_C void KillTask();
  30.138 -	IMPORT_C void SendKey(TInt aKeyCode,TInt aModifiers);
  30.139 -	IMPORT_C void SendKey(const TKeyEvent& aKey);
  30.140 -	IMPORT_C void SendSystemEvent(TApaSystemEvent aEvent);
  30.141 -	IMPORT_C TInt SwitchOpenFile(const TDesC& aFilename);
  30.142 -	IMPORT_C TInt SwitchCreateFile(const TDesC& aFilename);
  30.143 -	IMPORT_C TInt SendMessage(TUid aUid, const TDesC8& aParams);
  30.144 -
  30.145 -private:
  30.146 -	TInt CheckSwitchFile() const;
  30.147 -	void SendSystemEvent(TApaSystemEvent aEvent, TEventCode aType);
  30.148 -private:
  30.149 -	RWsSession& iWsSession;
  30.150 -	TInt iWgId;
  30.151 -	TInt iTApaTask_Reserved1;
  30.152 -	};
  30.153 -
  30.154 -class TApaTaskList
  30.155 -/** Accesses tasks running on a device.
  30.156 -
  30.157 -Tasks can be identified by document, application specific UID or by caption 
  30.158 -name.
  30.159 -
  30.160 -Users of this class can also cycle through a set of tasks running a specific 
  30.161 -application, bringing each one, in turn, into the foreground.
  30.162 -
  30.163 -@publishedAll
  30.164 -@released
  30.165 -@see TApaTask */
  30.166 -	{
  30.167 -public:	
  30.168 -	/** Defines the direction in which tasks are cycled to the foreground. This is used 
  30.169 -	by the CycleTasks() function.
  30.170 -
  30.171 -	@see TApaTaskList::CycleTasks() */
  30.172 -	enum TCycleDirection
  30.173 -		{
  30.174 -		/** Cycles the task list forwards, i.e. the foreground task is moved to background, 
  30.175 -		bringing the next foremost task to the foreground. */
  30.176 -		EForwards,
  30.177 -		/** Cycles the list backwards, i.e. the task furthest from the foreground is brought 
  30.178 -		to the foreground, pushing what was the foremost task to the next ordinal 
  30.179 -		position. */
  30.180 -		EBackwards
  30.181 -		};
  30.182 -public:
  30.183 -	IMPORT_C TApaTaskList(RWsSession& aWsSession);
  30.184 -	IMPORT_C TApaTask FindApp(const TDesC& aAppName);
  30.185 -	IMPORT_C TApaTask FindDoc(const TDesC& aDocName);
  30.186 -	IMPORT_C TApaTask FindByPos(TInt aPos);
  30.187 -	IMPORT_C TApaTask FindApp(TUid aAppUid);
  30.188 -	IMPORT_C TInt CycleTasks(TUid aAppUid,TCycleDirection aDirection=EForwards);
  30.189 -
  30.190 -private:
  30.191 -	void FindByPosL(TApaTask& aTask,TInt aPos);
  30.192 -private:
  30.193 -	RWsSession& iWsSession;
  30.194 -	TInt iTApaTaskList_Reserved1;
  30.195 -	};
  30.196 -
  30.197 -
  30.198 -#endif
    31.1 --- a/epoc32/include/apgwgnam.h	Tue Mar 16 16:12:26 2010 +0000
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,106 +0,0 @@
    31.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    31.5 -// All rights reserved.
    31.6 -// This component and the accompanying materials are made available
    31.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    31.8 -// which accompanies this distribution, and is available
    31.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   31.10 -//
   31.11 -// Initial Contributors:
   31.12 -// Nokia Corporation - initial contribution.
   31.13 -//
   31.14 -// Contributors:
   31.15 -//
   31.16 -// Description:
   31.17 -//
   31.18 -
   31.19 -#if !defined(__APGWGNAM_H__)
   31.20 -#define __APGWGNAM_H__
   31.21 -
   31.22 -#if !defined(__W32STD_H__)
   31.23 -#include <w32std.h>
   31.24 -#endif
   31.25 -
   31.26 -class CApaWindowGroupName : public CBase
   31.27 -/** Gives access to the name of a window group and the information encoded by that 
   31.28 -name.
   31.29 -
   31.30 -A window group is associated with a task, i.e. a running application. The 
   31.31 -window group's name encodes four pieces of information for that task:
   31.32 -
   31.33 -the name of the document that the task is handling,
   31.34 -
   31.35 -the task's caption,
   31.36 -
   31.37 -the application specific UID, as eight hexadecimal characters,
   31.38 -
   31.39 -status information for the task, as two hexadecimal characters.
   31.40 -
   31.41 -@publishedAll
   31.42 -@released */
   31.43 -	{
   31.44 -public:
   31.45 -	enum { EMaxLength=13+2*KMaxFileName };
   31.46 -public:
   31.47 -	IMPORT_C ~CApaWindowGroupName();
   31.48 -	IMPORT_C static CApaWindowGroupName* NewL(const RWsSession& aWsSession);
   31.49 -	IMPORT_C static CApaWindowGroupName* NewLC(const RWsSession& aWsSession);
   31.50 -	IMPORT_C static CApaWindowGroupName* NewL(const RWsSession& aWsSession, TInt aWgId);
   31.51 -	IMPORT_C static CApaWindowGroupName* NewLC(const RWsSession& aWsSession, TInt aWgId);
   31.52 -	IMPORT_C static CApaWindowGroupName* New(const RWsSession& aWsSession, HBufC* aWgName);
   31.53 -	IMPORT_C static CApaWindowGroupName* NewL(const RWsSession& aWsSession, const TDesC& aWgName);
   31.54 -	IMPORT_C static CApaWindowGroupName* NewLC(const RWsSession& aWsSession, const TDesC& aWgName);
   31.55 -	IMPORT_C void ConstructFromWgIdL(TInt aWgId);
   31.56 -	//
   31.57 -	IMPORT_C void SetWindowGroupNameL(const TDesC& aWgName);
   31.58 -	IMPORT_C void SetWindowGroupName(HBufC* aWgName);
   31.59 -	//
   31.60 -	IMPORT_C static void FindByAppUid(TUid aAppUid, RWsSession& aWsSession, TInt& aPrevWgId);
   31.61 -	IMPORT_C static void FindByCaption(const TDesC& aCaption, RWsSession& aWsSession, TInt& aPrevWgId);
   31.62 -	IMPORT_C static void FindByDocName(const TDesC& aDocName, RWsSession& aWsSession, TInt& aPrevWgId);
   31.63 -	//
   31.64 -	IMPORT_C void SetBusy(TBool aBusy);
   31.65 -	IMPORT_C TBool IsBusy() const;
   31.66 -	IMPORT_C void SetSystem(TBool aSystem);
   31.67 -	IMPORT_C TBool IsSystem() const;
   31.68 -	IMPORT_C void SetDocNameIsAFile(TBool aDocNameIsAFile);
   31.69 -	IMPORT_C TBool DocNameIsAFile() const;
   31.70 -	IMPORT_C void SetRespondsToShutdownEvent(TBool aRespondsToShutdownEvent);
   31.71 -	IMPORT_C TBool RespondsToShutdownEvent() const;
   31.72 -	IMPORT_C void SetRespondsToSwitchFilesEvent(TBool aRespondsToSwitchFilesEvent);
   31.73 -	IMPORT_C TBool RespondsToSwitchFilesEvent() const;
   31.74 -	IMPORT_C void SetHidden(TBool aIsHidden);
   31.75 -	IMPORT_C TBool Hidden() const;
   31.76 -	IMPORT_C void SetAppReady(TBool aIsReady);
   31.77 -	IMPORT_C TBool IsAppReady() const;
   31.78 -	//
   31.79 -	IMPORT_C void SetAppUid(TUid aAppUid);
   31.80 -	IMPORT_C TUid AppUid() const;
   31.81 -	//
   31.82 -	IMPORT_C void SetCaptionL(const TDesC& aCaption);
   31.83 -	IMPORT_C TPtrC Caption() const;
   31.84 -	//
   31.85 -	IMPORT_C void SetDocNameL(const TDesC& aDocName);
   31.86 -	IMPORT_C TPtrC DocName() const;
   31.87 -	//
   31.88 -	IMPORT_C TInt SetWindowGroupName(RWindowGroup& aGroupWin) const;
   31.89 -	IMPORT_C TPtrC WindowGroupName() const;
   31.90 -private: //enums
   31.91 -	enum TApaStatus { ESystem =0x01, EBusy =0x02, EDocNameNotAFile =0x04
   31.92 -					 ,EDoesNotRespondToShutdownEvent=0x08, EDoesNotRespondToSwitchFilesEvent=0x10
   31.93 -					 ,EIsHidden=0x20, EAppReady=0x40 };
   31.94 -	enum TApaDelimiter { EEndStatus=1, EEndUid, EEndCaption, ELast=EEndCaption }; // ELast must be last and same as predecessor
   31.95 -private:
   31.96 -	CApaWindowGroupName(const RWsSession& aWsSession);
   31.97 -	//
   31.98 -	void DefaultConstructL();
   31.99 -	void WriteStatusToName();
  31.100 -	void GetStatusFromName();
  31.101 -	TInt FindDelimiter(TApaDelimiter aDelim) const;
  31.102 -	void ReAllocIfNecessaryL(TInt aExtraLengthReqd);
  31.103 -private:
  31.104 -	HBufC* iBuf;
  31.105 -	TUint iStatus;
  31.106 -	const RWsSession& iWsSession;
  31.107 -	};
  31.108 -
  31.109 -#endif
    32.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.2 +++ b/epoc32/include/app/btmsgtypeuid.h	Wed Mar 31 12:27:01 2010 +0100
    32.3 @@ -0,0 +1,36 @@
    32.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    32.5 +// All rights reserved.
    32.6 +// This component and the accompanying materials are made available
    32.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    32.8 +// which accompanies this distribution, and is available
    32.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   32.10 +//
   32.11 +// Initial Contributors:
   32.12 +// Nokia Corporation - initial contribution.
   32.13 +//
   32.14 +// Contributors:
   32.15 +//
   32.16 +// Description:
   32.17 +// $Workfile: btmsgtypeuid.h $
   32.18 +// $Author: Stevep $
   32.19 +// $Revision: 8 $
   32.20 +// $Date: 17/12/01 12:02 $
   32.21 +// 
   32.22 +//
   32.23 +
   32.24 +
   32.25 +
   32.26 +/**
   32.27 + @file
   32.28 + @publishedAll
   32.29 + @released
   32.30 +*/
   32.31 +
   32.32 +#if !defined (__BTMSGTYPEUID_H__)
   32.33 +#define __BTMSGTYPEUID_H__
   32.34 +
   32.35 +const TInt32 KUidMsgTypeBtTInt32 = 0x10009ED5;
   32.36 +const TUid KUidMsgTypeBt = {KUidMsgTypeBtTInt32};
   32.37 +const TInt32 KUidBtTechnologyGroup = 0x10009ED6; //used for BtMtm registration details ("\\system\\mtm\\IrMtm.dat")
   32.38 +
   32.39 +#endif // __BTMSGTYPEUID_H__
    33.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.2 +++ b/epoc32/include/app/cacheman.h	Wed Mar 31 12:27:01 2010 +0100
    33.3 @@ -0,0 +1,295 @@
    33.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    33.5 +// All rights reserved.
    33.6 +// This component and the accompanying materials are made available
    33.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    33.8 +// which accompanies this distribution, and is available
    33.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   33.10 +//
   33.11 +// Initial Contributors:
   33.12 +// Nokia Corporation - initial contribution.
   33.13 +//
   33.14 +// Contributors:
   33.15 +//
   33.16 +// Description:
   33.17 +//
   33.18 +
   33.19 +#if !defined (__CACHEMAN_H__)
   33.20 +#define __CACHEMAN_H__
   33.21 +
   33.22 +#include <mentact.h>
   33.23 +#include <msvstd.h>
   33.24 +#include <msvapi.h>
   33.25 +
   33.26 +_LIT(KMiutWildCard, "*.*");
   33.27 +
   33.28 +class CImFinder : public CMsgActive
   33.29 +/**
   33.30 +@internalComponent
   33.31 +@released
   33.32 +*/
   33.33 +	{
   33.34 +public:
   33.35 +	IMPORT_C void FindFirstL(TMsvId aRootEntry, TRequestStatus &aStatus);
   33.36 +	IMPORT_C ~CImFinder();
   33.37 +	IMPORT_C virtual void FindNextL(TRequestStatus &aStatus);
   33.38 +	void FindFirstL(const CMsvEntrySelection& aInitialSelection, TRequestStatus &aStatus);
   33.39 +
   33.40 +	class CImEntryStack : public CBase
   33.41 +		{
   33.42 +	public:
   33.43 +		static CImEntryStack* NewL();
   33.44 +		~CImEntryStack();
   33.45 +		inline void PushL(TMsvId aId);
   33.46 +		inline TMsvId PopL();
   33.47 +		inline TBool Empty() const;
   33.48 +		inline void Reset();
   33.49 +
   33.50 +	private:
   33.51 +		void ConstructL();
   33.52 +
   33.53 +		CMsvEntrySelection* iFolders;
   33.54 +		};
   33.55 +
   33.56 +protected:
   33.57 +	void ConstructL();
   33.58 +	CImFinder(CMsvEntry& aEntry);
   33.59 +
   33.60 +private:
   33.61 +	void DoRunL();
   33.62 +
   33.63 +	virtual void AddChildEntriesL() = 0;
   33.64 +	virtual TBool IsRequiredEntryType(TUid aEntryType) const = 0;
   33.65 +
   33.66 +protected:
   33.67 +	CImEntryStack* iEntryStack;
   33.68 +	CMsvEntry& iCurrentEntry;
   33.69 +
   33.70 +private:
   33.71 +	enum TImmfState
   33.72 +		{
   33.73 +		EImmfEntryFound,
   33.74 +		EImmfFindingEntry,
   33.75 +		EImmfNothingFound
   33.76 +		};
   33.77 +
   33.78 +	TImmfState iState;
   33.79 +	};
   33.80 +
   33.81 +
   33.82 +class CImMessageFinder : public CImFinder
   33.83 +/**
   33.84 +@internalComponent
   33.85 +@released
   33.86 +*/
   33.87 +	{
   33.88 +public:
   33.89 +	IMPORT_C static CImMessageFinder* NewL(CMsvEntry& aEntry);
   33.90 +	IMPORT_C static CImMessageFinder* NewLC(CMsvEntry& aEntry);
   33.91 +	
   33.92 +protected:
   33.93 +	virtual void AddChildEntriesL();
   33.94 +	virtual TBool IsRequiredEntryType(TUid aEntryType) const;
   33.95 +
   33.96 +	CImMessageFinder(CMsvEntry& aEntry);
   33.97 +	};
   33.98 +
   33.99 +
  33.100 +class CImEntryFinder : public CImFinder
  33.101 +/**
  33.102 +@internalComponent
  33.103 +@released
  33.104 +*/
  33.105 +	{
  33.106 +public:
  33.107 +	IMPORT_C static CImEntryFinder* NewL(CMsvEntry& aEntry);
  33.108 +	IMPORT_C static CImEntryFinder* NewLC(CMsvEntry& aEntry);
  33.109 +	
  33.110 +protected:
  33.111 +	virtual void AddChildEntriesL();
  33.112 +	virtual TBool IsRequiredEntryType(TUid aEntryType) const;
  33.113 +
  33.114 +	CImEntryFinder(CMsvEntry& aEntry);
  33.115 +	};
  33.116 +
  33.117 +
  33.118 +class CImMessageCounter : public CImFinder
  33.119 +/**
  33.120 +@internalComponent
  33.121 +@released
  33.122 +*/
  33.123 +	{
  33.124 +public:
  33.125 +	IMPORT_C static CImMessageCounter* NewL(CMsvEntry& aEntry);
  33.126 +	IMPORT_C static CImMessageCounter* NewLC(CMsvEntry& aEntry);
  33.127 +	IMPORT_C TInt Count();
  33.128 +	
  33.129 +protected:
  33.130 +	virtual void AddChildEntriesL();
  33.131 +	virtual TBool IsRequiredEntryType(TUid aEntryType) const;
  33.132 +
  33.133 +	CImMessageCounter(CMsvEntry& aEntry);
  33.134 +
  33.135 +private:
  33.136 +	TInt iCount;
  33.137 +	};
  33.138 +
  33.139 +
  33.140 +class CImPruneMessage : public CMsgActive
  33.141 +/** Deletes the body text and attachment data from an individually specified message. 
  33.142 +
  33.143 +Example uses of this class are:
  33.144 +
  33.145 +1. to cleanup after a populating operation has failed
  33.146 +
  33.147 +2. to remove body text and attachment data from remote messages, while preserving 
  33.148 +the message structure 
  33.149 +@publishedPartner 
  33.150 +@released
  33.151 +*/
  33.152 +	{
  33.153 +public:
  33.154 +	IMPORT_C static CImPruneMessage* NewL(CMsvEntry& aEntry, RFs& aFs);
  33.155 +	IMPORT_C static CImPruneMessage* NewLC(CMsvEntry& aEntry, RFs& aFs);
  33.156 +
  33.157 +	IMPORT_C void StartL(TMsvId aMessageEntry, TRequestStatus &aStatus);
  33.158 +	~CImPruneMessage();
  33.159 +	
  33.160 +private:
  33.161 +	CImPruneMessage(CMsvEntry& aEntry, RFs& aFs);
  33.162 +	void ConstructL();
  33.163 +	void DoRunL();
  33.164 +	void DoComplete(TInt& );
  33.165 +	void DoCancel();
  33.166 +	void PruneEntryL();
  33.167 +	void ResetStoreL();
  33.168 +
  33.169 +private:
  33.170 +	enum TImPruningState
  33.171 +		{
  33.172 +		EImPruneUpdatingEntry,
  33.173 +		EImPruneUpdatingFirstEntry,
  33.174 +		EImPruneFindingEntry,
  33.175 +		EImPruneFindFirstEntry,
  33.176 +		EImPruneFindNextEntry
  33.177 +		};
  33.178 +
  33.179 +	TImPruningState iState;
  33.180 +
  33.181 +	CMsvEntry& iCurrentEntry;
  33.182 +	RFs& iFs;
  33.183 +	CImEntryFinder* iEntryFinder;
  33.184 +	CFileMan* iFileManager;
  33.185 +	TMsvId iRootEntryId;
  33.186 +	CMsvOperation* iChangeOperation;
  33.187 +	CMsvStore* iStore;
  33.188 +	};
  33.189 +
  33.190 +struct TImCacheManagerProgress
  33.191 +/** Holds progress of a cache management cleanup operation.
  33.192 +
  33.193 +@see CImCacheManager::ProgressL() 
  33.194 +@publishedAll
  33.195 +@released
  33.196 +*/
  33.197 +	{
  33.198 +public:
  33.199 +	/** Total number of messages to process.
  33.200 +	
  33.201 +	Note that, immediately after a CImCacheManager object is started, the progress 
  33.202 +	operation may return 1 for iTotalMessages and 0 for iMessagesProcessed, regardless 
  33.203 +	of the total number of messages. This is because the counter for the iTotalMessages 
  33.204 +	operates asynchronously and may not have counted all of the messages at that 
  33.205 +	time. */
  33.206 +	TInt iTotalMessages;
  33.207 +	/** Number of messages processed so far. */
  33.208 +	TInt iMessagesProcessed;
  33.209 +	};
  33.210 +
  33.211 +class CImCacheManager : public CMsvOperation
  33.212 +/** Provides management of the local cache of messages in remote mailboxes.
  33.213 +
  33.214 +A mailbox that is being used in disconnected mode allows the user access to 
  33.215 +message data by opening the message directly from the remote mailbox. If the 
  33.216 +required message has been downloaded previously, then it will not necessarily 
  33.217 +need to be downloaded again. This functionality is achieved by preserving 
  33.218 +the message data locally, under the remote service entry. The preserved message 
  33.219 +data acts as a cache to allow the user access to the message without the need 
  33.220 +for it to be downloaded every time. 
  33.221 +
  33.222 +The cache management functionality is required to reduce the amount of memory 
  33.223 +that is consumed by the message cache. CImCacheManager provides a mechanism 
  33.224 +for asynchronously traversing a message tree and for removing text and attachment 
  33.225 +data from messages. Deleting more message data will free up more memory but 
  33.226 +there is a higher chance that a user will need to download a message for a 
  33.227 +second time. 
  33.228 +
  33.229 +CImCacheManager is an abstract base class, which can be specialised to implement 
  33.230 +a filter (Filter()) that decides if data for a message shoulded be deleted: 
  33.231 +for example, deletion could be restricted to 'all read messages over a week 
  33.232 +old,' or, 'all read messages, over 20K in size which are also over a day old.' 
  33.233 +@publishedAll
  33.234 +@released
  33.235 +*/
  33.236 +	{
  33.237 +public:
  33.238 +	IMPORT_C void StartL(TMsvId aRootEntry, TRequestStatus &aStatus);
  33.239 +	IMPORT_C void StartL(const CMsvEntrySelection& aSelection, TRequestStatus &aStatus);
  33.240 +	IMPORT_C ~CImCacheManager();
  33.241 +	IMPORT_C const TDesC8& ProgressL();
  33.242 +	IMPORT_C void DoCancel();
  33.243 +
  33.244 +protected:
  33.245 +	IMPORT_C void ConstructL();
  33.246 +	IMPORT_C CImCacheManager(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus);
  33.247 +
  33.248 +	IMPORT_C void RunL();
  33.249 +
  33.250 +private:
  33.251 +	// Override this function to filter the currently selected message (iCurrentEntry).
  33.252 +	// Return TRUE if the current entry is to be pruned.
  33.253 +	/** Tests if cache cleanup should be performed on a message entry.
  33.254 +	
  33.255 +	After StartL() has been called, this is called once for each message entry. 
  33.256 +	It should return true if the body text and attachment data belonging to the 
  33.257 +	current message, as held in iCurrentEntry, should be deleted, or false if 
  33.258 +	the message should be left unchanged.
  33.259 +	
  33.260 +	This function must be implemented in any classes derived from CImCacheManager.
  33.261 +	
  33.262 +	@return True to clean the entry, false to leave it unchanged */
  33.263 +	virtual TBool Filter() const = 0;
  33.264 +
  33.265 +	void DoRunL();
  33.266 +
  33.267 +	// Remove the store from the currently selected entry
  33.268 +	inline void PruneMessageL();
  33.269 +	
  33.270 +protected:
  33.271 +	/** Message entry currently being processed. */
  33.272 +	CMsvEntry* iCurrentEntry;
  33.273 +
  33.274 +private:
  33.275 +	CMsvSession& iSession;
  33.276 +	CImMessageFinder* iMessageFinder;
  33.277 +	CImMessageCounter* iMessageCounter;
  33.278 +	CMsvOperation* iDeleteOperation;
  33.279 +
  33.280 +	TImCacheManagerProgress iProgress;
  33.281 +	TRequestStatus* iReport;
  33.282 +
  33.283 +	enum TImcmState
  33.284 +		{
  33.285 +		EImcmLookingForMessage,
  33.286 +		EImcmPruningMessages,
  33.287 +		EImcmCountingMessages,
  33.288 +		EImcmSkippingPrune
  33.289 +		};
  33.290 +
  33.291 +	TMsvId iRootEntry;
  33.292 +	TImcmState iState;
  33.293 +	TPckgBuf<TImCacheManagerProgress> iProgressBuf;
  33.294 +
  33.295 +	CMsvEntrySelection* iMessagesToPrune;
  33.296 +	};
  33.297 +
  33.298 +#endif
    34.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.2 +++ b/epoc32/include/app/calalarm.h	Wed Mar 31 12:27:01 2010 +0100
    34.3 @@ -0,0 +1,58 @@
    34.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    34.5 +// All rights reserved.
    34.6 +// This component and the accompanying materials are made available
    34.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    34.8 +// which accompanies this distribution, and is available
    34.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   34.10 +//
   34.11 +// Initial Contributors:
   34.12 +// Nokia Corporation - initial contribution.
   34.13 +//
   34.14 +// Contributors:
   34.15 +//
   34.16 +// Description:
   34.17 +//
   34.18 +
   34.19 +#ifndef __CALALARM_H__
   34.20 +#define __CALALARM_H__
   34.21 +
   34.22 +#include <calcontent.h>
   34.23 +
   34.24 +/** Alarm category Id for Calendar alarms
   34.25 +@publishedAll
   34.26 +@released
   34.27 +*/
   34.28 +const TUid KUidAgendaModelAlarmCategory = { 0x101F4A70 };
   34.29 +
   34.30 +NONSHARABLE_CLASS(CCalAlarm) : public CBase
   34.31 +/** Class representing an alarm. contains associated data extensions
   34.32 +
   34.33 +This can be assigned to a calendar entry.
   34.34 +
   34.35 +@publishedAll
   34.36 +@released
   34.37 +*/
   34.38 +	{
   34.39 +public:
   34.40 +	IMPORT_C static CCalAlarm* NewL();
   34.41 +	IMPORT_C ~CCalAlarm();
   34.42 +	IMPORT_C void SetTimeOffset(TTimeIntervalMinutes aOffset);
   34.43 +	IMPORT_C TTimeIntervalMinutes TimeOffset() const;
   34.44 +	IMPORT_C void SetAlarmSoundNameL(const TDesC& aAlarmSoundName);
   34.45 +	IMPORT_C const TDesC& AlarmSoundNameL() const;
   34.46 +	IMPORT_C void SetAlarmAction(CCalContent* aAlarmAction);
   34.47 +	IMPORT_C CCalContent* AlarmAction() const;
   34.48 +
   34.49 +private:
   34.50 +	CCalAlarm();
   34.51 +
   34.52 +private:
   34.53 +	TTimeIntervalMinutes iOffset;
   34.54 +	HBufC* iAlarmName;
   34.55 +	// the associated data for rich alarm action
   34.56 +	CCalContent* iAlarmAction;
   34.57 +	};
   34.58 +
   34.59 +
   34.60 +#endif // __CALALARM_H__
   34.61 + 
    35.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.2 +++ b/epoc32/include/app/calcategory.h	Wed Mar 31 12:27:01 2010 +0100
    35.3 @@ -0,0 +1,96 @@
    35.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    35.5 +// All rights reserved.
    35.6 +// This component and the accompanying materials are made available
    35.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    35.8 +// which accompanies this distribution, and is available
    35.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   35.10 +//
   35.11 +// Initial Contributors:
   35.12 +// Nokia Corporation - initial contribution.
   35.13 +//
   35.14 +// Contributors:
   35.15 +//
   35.16 +// Description:
   35.17 +//
   35.18 +
   35.19 +#ifndef __CALCATEGORY_H__
   35.20 +#define __CALCATEGORY_H__
   35.21 +
   35.22 +#include <e32base.h>
   35.23 +
   35.24 +class CCalCategoryImpl;
   35.25 +
   35.26 +/** Calendar categories can be associated with a calendar entry.
   35.27 +
   35.28 +There are 12 built in category types defined by TCalCategoryType. Additionally,
   35.29 +it is possible to define extended category types which are held as a descriptor
   35.30 +of any length.
   35.31 +
   35.32 +Any number of categories can be specified for an entry. CCalEntry provides member 
   35.33 +functions for adding, deleting and fetching categories for an entry. 
   35.34 +
   35.35 +CCalCategoryManager functions enable the client to add\\delete\\fetch categories 
   35.36 +from a Calendar session and to get a list of entries filtered by their category. 
   35.37 +@publishedAll
   35.38 +@released
   35.39 +*/
   35.40 +NONSHARABLE_CLASS(CCalCategory) : public CBase
   35.41 +    {
   35.42 +public:
   35.43 +	/** Calendar category type.
   35.44 +	@publishedAll
   35.45 +	@released
   35.46 +	*/
   35.47 +	enum TCalCategoryType 
   35.48 +		{
   35.49 +		/** Appointment */
   35.50 +		ECalAppointment,
   35.51 +		/** Business */
   35.52 +		ECalBusiness,
   35.53 +		/** Education */
   35.54 +		ECalEducation,	
   35.55 +		/** Holiday */
   35.56 +		ECalHoliday,
   35.57 +		/** Meeting */
   35.58 +		ECalMeeting,
   35.59 +		/** All other types */
   35.60 +		ECalMiscellaneous, 
   35.61 +		/** Personal */
   35.62 +		ECalPersonal,
   35.63 +		/** Phone call */
   35.64 +		ECalPhoneCall,
   35.65 +		/** Sick day */
   35.66 +		ECalSickDay,
   35.67 +		/** Special occasion */
   35.68 +		ECalSpecialOccasion,
   35.69 +		/** Travel */
   35.70 +		ECalTravel,
   35.71 +		/** Vacation */
   35.72 +		ECalVacation,
   35.73 +		/** Extended */
   35.74 +		ECalExtended
   35.75 +		};
   35.76 +
   35.77 +public:
   35.78 +	IMPORT_C static CCalCategory* NewL(TCalCategoryType aCategory);
   35.79 +	IMPORT_C static CCalCategory* NewL(const TDesC& aExtendedName);
   35.80 +	IMPORT_C ~CCalCategory();
   35.81 +
   35.82 +	IMPORT_C TCalCategoryType Category() const;
   35.83 +	IMPORT_C const TDesC& ExtendedCategoryName() const;
   35.84 +	
   35.85 +public:	
   35.86 +	CCalCategoryImpl* Impl() const;
   35.87 +	static CCalCategory* NewL(CCalCategoryImpl* aImpl);
   35.88 +
   35.89 +private:
   35.90 +	CCalCategory();
   35.91 +	CCalCategory(CCalCategoryImpl* aImpl);
   35.92 +	void ConstructL(TCalCategoryType aCategory);
   35.93 +	void ConstructL(const TDesC& aExtendedName);
   35.94 +
   35.95 +private: // member data
   35.96 +	CCalCategoryImpl* iCalCategoryImpl;
   35.97 +	};
   35.98 +	
   35.99 +#endif // __CALCATEGORY_H__
    36.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.2 +++ b/epoc32/include/app/calcategorymanager.h	Wed Mar 31 12:27:01 2010 +0100
    36.3 @@ -0,0 +1,59 @@
    36.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    36.5 +// All rights reserved.
    36.6 +// This component and the accompanying materials are made available
    36.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    36.8 +// which accompanies this distribution, and is available
    36.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   36.10 +//
   36.11 +// Initial Contributors:
   36.12 +// Nokia Corporation - initial contribution.
   36.13 +//
   36.14 +// Contributors:
   36.15 +//
   36.16 +// Description:
   36.17 +//
   36.18 +
   36.19 +#ifndef __CALCATEGORYMANAGER_H__
   36.20 +#define __CALCATEGORYMANAGER_H__
   36.21 +
   36.22 +#include <e32base.h>
   36.23 +
   36.24 +class MCalProgressCallBack;
   36.25 +class CCalCategory;
   36.26 +class CCalEntry;
   36.27 +class CCalCategoryManagerImpl;
   36.28 +class CCalSession;
   36.29 +
   36.30 +/** A category manager used to manipulate the categories held by the Calendar store. 
   36.31 +
   36.32 +There are 12 built-in category types which are specified by CCalCategory::TCalCategoryType. 
   36.33 +In addition, clients can create as many of their own categories as they like by giving a name to the category.
   36.34 +This class is used along with the class CCalCategory to manipulate the categories in the file, for instance to 
   36.35 +add, delete and get a list of entries filtered by their category. 
   36.36 +
   36.37 +@publishedAll
   36.38 +@released
   36.39 +*/
   36.40 +NONSHARABLE_CLASS(CCalCategoryManager) : public CBase
   36.41 +    {
   36.42 +public:
   36.43 +
   36.44 +	IMPORT_C static CCalCategoryManager* NewL(CCalSession& aSession);
   36.45 +	IMPORT_C ~CCalCategoryManager();
   36.46 +
   36.47 +	IMPORT_C TInt CategoryCountL() const;
   36.48 +	IMPORT_C CCalCategory* CategoryL(TInt aIndex) const;
   36.49 +	IMPORT_C void AddCategoryL(const CCalCategory& aCategory);
   36.50 +	IMPORT_C void FilterCategoryL(const CCalCategory& aCategory, RPointerArray<CCalEntry>& aEntries, MCalProgressCallBack& aProgressCallBack);
   36.51 +	IMPORT_C void FilterCategoryL(const CCalCategory& aCategory, RPointerArray<CCalEntry>& aEntries);
   36.52 +	IMPORT_C void DeleteCategoryL(const CCalCategory& aCategory, MCalProgressCallBack& aProgressCallBack);
   36.53 +	
   36.54 +private:
   36.55 +	CCalCategoryManager();
   36.56 +	void ConstructL(CCalSession& aSession);
   36.57 +
   36.58 +private:
   36.59 +	CCalCategoryManagerImpl* iCCalCategoryManagerImpl;
   36.60 +	};
   36.61 +	
   36.62 +#endif // __CALCATEGORYMANAGER_H__
    37.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.2 +++ b/epoc32/include/app/calchangecallback.h	Wed Mar 31 12:27:01 2010 +0100
    37.3 @@ -0,0 +1,172 @@
    37.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    37.5 +// All rights reserved.
    37.6 +// This component and the accompanying materials are made available
    37.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    37.8 +// which accompanies this distribution, and is available
    37.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   37.10 +//
   37.11 +// Initial Contributors:
   37.12 +// Nokia Corporation - initial contribution.
   37.13 +//
   37.14 +// Contributors:
   37.15 +//
   37.16 +// Description:
   37.17 +//
   37.18 +
   37.19 +#ifndef __CALCHANGECALLBACK_H__
   37.20 +#define __CALCHANGECALLBACK_H__
   37.21 +
   37.22 +#include <calcommon.h>
   37.23 +
   37.24 +class TCalChangeEntry;
   37.25 +
   37.26 +class MCalChangeCallBack
   37.27 +/** A call back class for observing changes in the model view.
   37.28 +
   37.29 +A client will not be notified of a change if it is the source of
   37.30 +the change.
   37.31 +
   37.32 +@publishedAll
   37.33 +@deprecated
   37.34 +*/
   37.35 +	{
   37.36 +public:
   37.37 +	/** Instance view change type
   37.38 +	@publishedAll
   37.39 +	@deprecated
   37.40 +	*/
   37.41 +	enum TChangeType
   37.42 +		{
   37.43 +		/**	Entries are added */
   37.44 +		EChangeAdd,
   37.45 +		/** Entries are deleted */
   37.46 +		EChangeDelete,
   37.47 +		/** Entries are modified */
   37.48 +		EChangeModify,
   37.49 +		/** Undefined entries */
   37.50 +		EChangeUndefined,
   37.51 +		/** Entries cause overflow error */
   37.52 +		EChangeOverflowError
   37.53 +		};
   37.54 +
   37.55 +	/** Instance view entry type
   37.56 +	@publishedAll
   37.57 +	@deprecated
   37.58 +	*/
   37.59 +	enum TChangeEntryType
   37.60 +		{
   37.61 +		/** Entry type is todo */
   37.62 +		EChangeEntryTodo,
   37.63 +		/** Entry type is event */
   37.64 +		EChangeEntryEvent,
   37.65 +		/** All entry types */
   37.66 +		EChangeEntryAll
   37.67 +		};
   37.68 +	/** A call back function for change notification
   37.69 +	@param aChangeEntryType Filters notifications to only notify about entries of this type (event/todo/all).
   37.70 +
   37.71 +	*/
   37.72 +	virtual void CalChangeNotification(TChangeEntryType aChangeEntryType) = 0;
   37.73 +	};
   37.74 +
   37.75 +/** A call back class for observing changes in the model view.
   37.76 +
   37.77 +The call back returns an array containing information about at least
   37.78 +one change to the database. The information includes the type of change
   37.79 +and the identity of the item being changed.
   37.80 +
   37.81 +A client will not be notified of a change if it is the source of
   37.82 +the change.
   37.83 +
   37.84 +@publishedAll
   37.85 +@released
   37.86 +*/
   37.87 +class MCalChangeCallBack2
   37.88 +	{
   37.89 +public:
   37.90 +	/** Instance view change type
   37.91 +	@publishedAll
   37.92 +	@released
   37.93 +	*/
   37.94 +	enum TChangeType
   37.95 +		{
   37.96 +		/**	Entries are added */
   37.97 +		EChangeAdd,
   37.98 +		/** Entries are deleted */
   37.99 +		EChangeDelete,
  37.100 +		/** Entries are modified */
  37.101 +		EChangeModify,
  37.102 +		/** Undefined entries */
  37.103 +		EChangeUndefined
  37.104 +		};
  37.105 +
  37.106 +	/** Instance view entry type
  37.107 +	@publishedAll
  37.108 +	@released
  37.109 +	*/
  37.110 +	enum TChangeEntryType
  37.111 +		{
  37.112 +		/** Entry type is todo */
  37.113 +		EChangeEntryTodo,
  37.114 +		/** Entry type is event */
  37.115 +		EChangeEntryEvent,
  37.116 +		/** All entry types */
  37.117 +		EChangeEntryAll
  37.118 +		};
  37.119 +	/** A call back function for change notification
  37.120 +	@param aChangeItems  List of changes since the last notification.
  37.121 +
  37.122 +	*/
  37.123 +	virtual void CalChangeNotification(RArray<TCalChangeEntry>& aChangeItems) = 0;
  37.124 +	};
  37.125 +
  37.126 +/** Struct for storing change notification data.
  37.127 +This contains the calendar local ID, the type of change and the entry type.
  37.128 +
  37.129 +The iChangeType will only be set to EChangeEntryTodo or EChangeEntryEvent
  37.130 +values. EChangeEntryAll is provided for callback registration only.
  37.131 +
  37.132 +If iChangeType is EChangeUndefined or EChangeOverflowError, iEntryId and
  37.133 +iEntryType are undefined and should not be used by clients.
  37.134 +
  37.135 +@publishedAll
  37.136 +@released
  37.137 +*/
  37.138 +struct TCalChangeEntry
  37.139 +	{
  37.140 +	/** Local UID of the entry */
  37.141 +	TCalLocalUid iEntryId;
  37.142 +	/** Type of change to the entry */
  37.143 +	MCalChangeCallBack2::TChangeType iChangeType;
  37.144 +	/** Type of entry */
  37.145 +	MCalChangeCallBack2::TChangeEntryType iEntryType;
  37.146 +	};
  37.147 +
  37.148 +/** Class to encapsulate call back registration parameters.
  37.149 +
  37.150 +The type of entries, the date range and whether undated todos are included
  37.151 +can be specified.
  37.152 +
  37.153 +@publishedAll
  37.154 +@released
  37.155 +*/
  37.156 +class CCalChangeNotificationFilter
  37.157 +	{
  37.158 +public:
  37.159 +	IMPORT_C static CCalChangeNotificationFilter* NewL(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange);
  37.160 +	IMPORT_C ~CCalChangeNotificationFilter();
  37.161 +
  37.162 +	MCalChangeCallBack2::TChangeEntryType ChangeEntryType() const;
  37.163 +	TCalTime StartTime() const;
  37.164 +	TCalTime EndTime() const;
  37.165 +	TBool IncludeUndatedTodos() const;
  37.166 +
  37.167 +private:
  37.168 +	CCalChangeNotificationFilter(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange);
  37.169 +
  37.170 +	MCalChangeCallBack2::TChangeEntryType iChangeEntryType;
  37.171 +	CalCommon::TCalTimeRange iTimeRange;
  37.172 +	TBool iIncludeUndatedTodos;
  37.173 +	};
  37.174 +
  37.175 +#endif // __CALCHANGECALLBACK_H__
    38.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.2 +++ b/epoc32/include/app/calcommon.h	Wed Mar 31 12:27:01 2010 +0100
    38.3 @@ -0,0 +1,230 @@
    38.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    38.5 +// All rights reserved.
    38.6 +// This component and the accompanying materials are made available
    38.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    38.8 +// which accompanies this distribution, and is available
    38.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   38.10 +//
   38.11 +// Initial Contributors:
   38.12 +// Nokia Corporation - initial contribution.
   38.13 +//
   38.14 +// Contributors:
   38.15 +//
   38.16 +// Description:
   38.17 +//
   38.18 +
   38.19 +#ifndef __CALCOMMON_H__
   38.20 +#define __CALCOMMON_H__
   38.21 +
   38.22 +#include <caltime.h>
   38.23 +
   38.24 +/** This system-wide #define is for version 2 of the Calendar component. 
   38.25 +V1 is the CalInterimAPI. V2 is the refactored Calendar component which includes 
   38.26 +support for Attachments, GEO, TRANSP, instance iterator, extended text searching.
   38.27 +@publishedAll
   38.28 +@released
   38.29 +*/
   38.30 +#define SYMBIAN_CALENDAR_V2
   38.31 +
   38.32 +/** Calendar local entry ID. 
   38.33 +This entry ID is assigned by the calendar server when an entry is created. 
   38.34 +It will remain unchanged for the lifetime of that entry.
   38.35 +@publishedAll
   38.36 +@released
   38.37 +*/
   38.38 +typedef TUint32 TCalLocalUid;
   38.39 +
   38.40 +/** Calendar file ID.
   38.41 +@publishedAll
   38.42 +@released
   38.43 +*/
   38.44 +typedef TInt64 TCalFileId;
   38.45 +
   38.46 +/** Utility class containing common calendar-related enums.
   38.47 +
   38.48 +@publishedAll
   38.49 +@released
   38.50 +*/
   38.51 +class CalCommon
   38.52 +	{
   38.53 +public:
   38.54 +
   38.55 +	/** Entry filter used in the entry view and instance view, filter flags are defined by TCalViewFilterFlags
   38.56 +	@publishedAll
   38.57 +	@released
   38.58 +	*/
   38.59 +	typedef TUint TCalViewFilter;
   38.60 +	
   38.61 +	/** Entry filter flags used in the entry view and instance view. 
   38.62 +	@publishedAll
   38.63 +	@released
   38.64 +	*/
   38.65 +	enum TCalViewFilterFlags	
   38.66 +		{
   38.67 +		/** Include appointments. */
   38.68 +		EIncludeAppts=0x01,				
   38.69 +		/** Include reminders. */	
   38.70 +		EIncludeReminder=0x02,				
   38.71 +		/** Include all-day events. */
   38.72 +		EIncludeEvents=0x04,				
   38.73 +		/** Include anniversaries. */
   38.74 +		EIncludeAnnivs=0x08,				
   38.75 +		/** Include completed todos. */
   38.76 +		EIncludeCompletedTodos=0x10,					
   38.77 +		/** Include incompleted todos. */
   38.78 +		EIncludeIncompletedTodos=0x20,	
   38.79 +		/** Remove non-alarmed entries. This flag cannot be used by itself. */
   38.80 +		EIncludeAlarmedOnly=0x40,
   38.81 +		/** Include next only instance of a repeat entry. */
   38.82 +		EIncludeRptsNextInstanceOnly=0x80,
   38.83 +		
   38.84 +		/** By default all instances which overlap the time range are found. Use the EInstanceStartTimeWithinRange
   38.85 +		flag to only include instances whose start time is inside the search time range. 
   38.86 +		
   38.87 +		Note that setting both the EInstanceStartTimeWithinRange and EInstanceEndTimeWithinRange flags will 
   38.88 +		only include instances which are completely within the search time range. */
   38.89 +		EInstanceStartTimeWithinRange=0x100,
   38.90 +
   38.91 +		/** By default all instances which overlap the time range are found. Use the EInstanceEndTimeWithinRange
   38.92 +		flag to only include instances whose end time is inside the search time range. 
   38.93 +		
   38.94 +		Note that setting both the EInstanceStartTimeWithinRange and EInstanceEndTimeWithinRange flags will 
   38.95 +		only include instances which are completely within the search time range.
   38.96 +		*/
   38.97 +		EInstanceEndTimeWithinRange=0x200,
   38.98 +		
   38.99 +		/** By default all instances which adjoin the search range are found. Use the EExcludeInstanceAdjoiningRange
  38.100 +		flag to exclude instances that are outside, but adjoin the search range.
  38.101 +		
  38.102 +		Instances that are outside, but adjoin the search start or end time are excluded.
  38.103 +		Instances that both start and end on the search start time are included.
  38.104 +		Instances that both start and end on the search end time are excluded.
  38.105 +		*/
  38.106 +		EExcludeInstanceAdjoiningRange=0x400,
  38.107 +		
  38.108 +		/** Include all entries (appointments, day events, reminders, anniversaries and todos). */
  38.109 +		EIncludeAll=EIncludeAppts|EIncludeReminder|EIncludeEvents|EIncludeAnnivs|
  38.110 +		EIncludeCompletedTodos|EIncludeIncompletedTodos,
  38.111 +		};
  38.112 +		
  38.113 +	/** The range of instances referred to in a recurrence ID or instance view. 
  38.114 +	@publishedAll
  38.115 +	@released
  38.116 +	*/
  38.117 +	enum TRecurrenceRange
  38.118 +		{
  38.119 +		/** Only this instance is referenced. 
  38.120 +		If the user set EThisOnly when a repeating child entry is created and stored to the file, only the parent instance
  38.121 +		referred to by the child's recurrence ID will be replaced. */
  38.122 +		EThisOnly,
  38.123 +		/** This and all other instances are referenced. */
  38.124 +		EThisAndAll,
  38.125 +		/** This and all future instances are referenced. */
  38.126 +		EThisAndFuture,
  38.127 +		/** This and all previous instances are referenced. */
  38.128 +		EThisAndPrior
  38.129 +		};
  38.130 +		
  38.131 +	
  38.132 +	/** Search filter for use in the CCalInstanceView::FindInstanceL() function.
  38.133 +	Note that a folded text search is used if exact text search is not specified.
  38.134 +	The summary text field is always searched. It is possible to specify additional text fields to be 
  38.135 +	searched as well.
  38.136 +	@publishedAll
  38.137 +	@released
  38.138 +	*/
  38.139 +	enum TCalSearchBehaviour
  38.140 +		{
  38.141 +		/** Search for folded text. */
  38.142 +		EFoldedTextSearch=0x0,
  38.143 +
  38.144 +		/** Search for the exact text. */
  38.145 +		EExactTextSearch=0x1,
  38.146 +		
  38.147 +		/** Search location during a text search. 
  38.148 +		@publishedPartner
  38.149 +		@released
  38.150 +		*/
  38.151 +		ESearchEntryLocation=0x2,
  38.152 +		
  38.153 +		/** Search description during a text search. 
  38.154 +		@publishedPartner
  38.155 +		@released
  38.156 +		*/
  38.157 +		ESearchEntryDescription=0x4,
  38.158 +		
  38.159 +		/** Search attendee addresses during a text search.
  38.160 +		@publishedPartner
  38.161 +		@released
  38.162 +		*/
  38.163 +		ESearchAttendeeAddress=0x8,
  38.164 +		
  38.165 +		/** Search attendee sent by addresses during a text search.
  38.166 +		@publishedPartner
  38.167 +		@released
  38.168 +		*/
  38.169 +		ESearchAttendeeSentByAddress=0x10,
  38.170 +		
  38.171 +		/** Search attendee common names during a text search. 
  38.172 +		@publishedPartner
  38.173 +		@released
  38.174 +		*/
  38.175 +		ESearchAttendeeCommonName=0x20,
  38.176 +		
  38.177 +		/** Search organizer's address during a text search. 
  38.178 +		@publishedPartner
  38.179 +		@released
  38.180 +		*/
  38.181 +		ESearchOrganizerAddress=0x40,
  38.182 +		
  38.183 +		/** Search organizer's sent by address during a text search. 
  38.184 +		@publishedPartner
  38.185 +		@released
  38.186 +		*/
  38.187 +		ESearchOrganizerSentByAddress=0x80,
  38.188 +		
  38.189 +		/** Search organizer's common name during a text search. 
  38.190 +		@publishedPartner
  38.191 +		@released
  38.192 +		*/
  38.193 +		ESearchOrganizerCommonName=0x100,
  38.194 +		
  38.195 +		/** Include all possible text fields during a text search. */
  38.196 +		ESearchAllTextFields=ESearchEntryLocation|ESearchEntryDescription|
  38.197 +			ESearchAttendeeAddress|ESearchAttendeeSentByAddress|ESearchAttendeeCommonName|
  38.198 +			ESearchOrganizerAddress|ESearchOrganizerSentByAddress|ESearchOrganizerCommonName,
  38.199 +		};
  38.200 +		
  38.201 +	/** Class to implement a time range in the Instance view and Entry view.
  38.202 +	@publishedAll
  38.203 +	@released
  38.204 +	*/	
  38.205 +	class TCalTimeRange
  38.206 +		{
  38.207 +	public:
  38.208 +		IMPORT_C TCalTimeRange(TCalTime aStartTime, TCalTime aEndTime);		
  38.209 +			
  38.210 +		IMPORT_C TCalTime StartTime() const;
  38.211 +		IMPORT_C TCalTime EndTime() const;
  38.212 +		
  38.213 +	private:
  38.214 +		TCalTime iStartTime;
  38.215 +		TCalTime iEndTime;
  38.216 +		};
  38.217 +		
  38.218 +	/** Enumeration returned when opening a file to indicate whether the file is the current version, 
  38.219 +	needs converting, or is unsupported.
  38.220 +	@publishedPartner
  38.221 +	@released
  38.222 +	*/
  38.223 +	enum TCalFileVersionSupport
  38.224 +		{
  38.225 +		/** The file is the current version and can be loaded immediately. */
  38.226 +		EFileIsCurrentVersion,
  38.227 +		/** The file is an older version and will be converted when it is used. */
  38.228 +		EFileNeedsConverting,
  38.229 +		/** The file is an old version that is not supported. */
  38.230 +		EUnsupportedFileVersion
  38.231 +		};
  38.232 +	};
  38.233 +#endif // __CALCOMMON_H__
    39.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.2 +++ b/epoc32/include/app/calcontent.h	Wed Mar 31 12:27:01 2010 +0100
    39.3 @@ -0,0 +1,77 @@
    39.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    39.5 +// All rights reserved.
    39.6 +// This component and the accompanying materials are made available
    39.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    39.8 +// which accompanies this distribution, and is available
    39.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   39.10 +//
   39.11 +// Initial Contributors:
   39.12 +// Nokia Corporation - initial contribution.
   39.13 +//
   39.14 +// Contributors:
   39.15 +//
   39.16 +// Description:
   39.17 +//
   39.18 +
   39.19 +#ifndef __CALCONTENT_H__
   39.20 +#define __CALCONTENT_H__
   39.21 +
   39.22 +#include <e32base.h>
   39.23 +
   39.24 +class RReadStream;
   39.25 +class RWriteStream;
   39.26 +class CAgnContent;
   39.27 +
   39.28 +NONSHARABLE_CLASS(CCalContent) : public CBase
   39.29 +/**
   39.30 +This class holds in memory 8-bit data of any type, or a link to 8-bit
   39.31 +data such as a URI.  The MIME type of the data may also be held to help
   39.32 +callers determine the appropriate application to launch the content.
   39.33 +
   39.34 +Because the data is held in memory, callers should only use this class
   39.35 +to store small amounts of data or a URI to some content elsewhere.
   39.36 +
   39.37 +This class can be used to set an alarm action using
   39.38 +CCalAlarm::SetAlarmAction() (such as a link to an internet
   39.39 +radio station, or a small animated icon).
   39.40 +
   39.41 +@see CCalAlarm
   39.42 +@capability None
   39.43 +@publishedAll
   39.44 +@released
   39.45 +*/
   39.46 +	{
   39.47 +public:
   39.48 +	/** Disposition of the data which maybe used while setting an alarm. The data can be a link or inline.
   39.49 +	@publishedPartner
   39.50 +	@released
   39.51 +	*/
   39.52 +	enum TDisposition
   39.53 +		{
   39.54 +		/** URL disposition */
   39.55 +		EDispositionUrl = 0,
   39.56 +		/** Inline disposition */
   39.57 +		EDispositionInline = 1,
   39.58 +		/** Unknown disposition */
   39.59 +		EDispositionUnknown = 15
   39.60 +		};
   39.61 +
   39.62 +	IMPORT_C static CCalContent* NewL();
   39.63 +	IMPORT_C ~CCalContent();
   39.64 +	IMPORT_C void SetContentL(TDesC8* aSmallContent, TDesC8* aContentMIMEType, CCalContent::TDisposition aContentDisposition);
   39.65 +	IMPORT_C const TDesC8& Content() const;
   39.66 +	IMPORT_C const TDesC8& MimeType() const;
   39.67 +	IMPORT_C TDisposition Disposition() const;
   39.68 +	CAgnContent* Impl() const;
   39.69 +	void SetImpl(CAgnContent* aImpl);
   39.70 +
   39.71 +private:
   39.72 +	CCalContent();
   39.73 +	void ConstructL();
   39.74 +
   39.75 +private:
   39.76 +	CAgnContent* iImpl;
   39.77 +	};
   39.78 +
   39.79 +
   39.80 +#endif // __CALCONTENT_H__
    40.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.2 +++ b/epoc32/include/app/caldataexchange.h	Wed Mar 31 12:27:01 2010 +0100
    40.3 @@ -0,0 +1,89 @@
    40.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    40.5 +// All rights reserved.
    40.6 +// This component and the accompanying materials are made available
    40.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    40.8 +// which accompanies this distribution, and is available
    40.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   40.10 +//
   40.11 +// Initial Contributors:
   40.12 +// Nokia Corporation - initial contribution.
   40.13 +//
   40.14 +// Contributors:
   40.15 +//
   40.16 +// Description:
   40.17 +//
   40.18 +
   40.19 +#ifndef __CCALDATAEXCHANGE_H__ 
   40.20 +#define __CCALDATAEXCHANGE_H__
   40.21 +
   40.22 +#include <calentry.h>
   40.23 +
   40.24 +class CCalDataExchangeImpl;
   40.25 +class CCalSession;
   40.26 +class RWriteStream;
   40.27 +
   40.28 +/** The default number of entries to import or export between callbacks.
   40.29 +@publishedAll
   40.30 +@released
   40.31 +*/
   40.32 +const TInt KDefaultNumberOfEntriesToHandle = 10;
   40.33 +
   40.34 +/** A call back class to show the progress of long-running operations.
   40.35 +
   40.36 +When a long-running operation is carried out, this class is used to signal its progress, 
   40.37 +and when the function is complete.
   40.38 +
   40.39 +@publishedAll
   40.40 +@released
   40.41 +*/
   40.42 +class MCalDataExchangeCallBack
   40.43 +	{
   40.44 +public:
   40.45 +	/** Progress callback. 
   40.46 +
   40.47 +	This calls the observing class with the percentage complete of the current operation.
   40.48 +	This also propagates any error to the observing class.
   40.49 +
   40.50 +	@param aPercentageCompleted The percentage complete. */
   40.51 +	virtual void Progress(TInt aPercentageCompleted) = 0;
   40.52 +
   40.53 +	/** Progress callback.
   40.54 +
   40.55 +	This calls the observing class when the current operation is finished. */
   40.56 +	virtual void Completed() = 0;
   40.57 +	
   40.58 +	/* Retrieve the number of entries to handle at once. 
   40.59 +	@return The number of entries to handle at once.
   40.60 +	*/
   40.61 +	virtual TInt NumberOfEntriesToHandleAtOnce() { return KDefaultNumberOfEntriesToHandle; };
   40.62 +	};
   40.63 +
   40.64 +/** 
   40.65 +This class provides functionality for importing and exporting vCal entries.
   40.66 +@publishedAll
   40.67 +@released
   40.68 +*/
   40.69 +NONSHARABLE_CLASS(CCalDataExchange) : public CBase
   40.70 +	{
   40.71 +public:
   40.72 +	IMPORT_C static CCalDataExchange* NewL(CCalSession& aSession);
   40.73 +	IMPORT_C ~CCalDataExchange();
   40.74 +	
   40.75 +	IMPORT_C void ImportL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray);
   40.76 +	IMPORT_C void ImportL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray, TInt aFlags);
   40.77 +	IMPORT_C void ExportL(TUid aDataFormat, RWriteStream& aWriteStream, RPointerArray<CCalEntry>& aCalEntryArray);	
   40.78 +	
   40.79 +	IMPORT_C void ImportL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray, TInt aFlags, TInt aNumEntries);
   40.80 +
   40.81 +	IMPORT_C void ImportAsyncL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray, MCalDataExchangeCallBack& aObserver, TInt aFlags);
   40.82 +	IMPORT_C void ExportAsyncL(TUid aDataFormat, RWriteStream& aWriteStream, RPointerArray<CCalEntry>& aCalEntryArray, MCalDataExchangeCallBack& aObserver);
   40.83 +	
   40.84 +private:
   40.85 +	CCalDataExchange();
   40.86 +	void ConstructL(CCalSession& aSession);
   40.87 +	
   40.88 +private:
   40.89 +	CCalDataExchangeImpl* iImpl;
   40.90 +	};
   40.91 +
   40.92 +#endif // __CCALDATAEXCHANGE_H__
    41.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.2 +++ b/epoc32/include/app/caldataformat.h	Wed Mar 31 12:27:01 2010 +0100
    41.3 @@ -0,0 +1,40 @@
    41.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    41.5 +// All rights reserved.
    41.6 +// This component and the accompanying materials are made available
    41.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    41.8 +// which accompanies this distribution, and is available
    41.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   41.10 +//
   41.11 +// Initial Contributors:
   41.12 +// Nokia Corporation - initial contribution.
   41.13 +//
   41.14 +// Contributors:
   41.15 +//
   41.16 +// Description:
   41.17 +//
   41.18 +
   41.19 +#ifndef __CCALDATAFORMAT_H__ 
   41.20 +#define __CCALDATAFORMAT_H__ 
   41.21 +
   41.22 +#include <e32cmn.h>
   41.23 +
   41.24 +/** 
   41.25 +@file
   41.26 +@publishedAll
   41.27 +@released */ 
   41.28 +
   41.29 +/** The UID for a VCal 1.0 data parser
   41.30 +Used in vCalendar Import. */
   41.31 +const TUid KUidVCalendar = {0x1020DB7B};
   41.32 +
   41.33 +
   41.34 +/** These flags control the behaviour of the data exchange parser.*/
   41.35 +/** This flag overrides the default character set when parsing 
   41.36 +vCalendar 1.0 files to Shift-JIS */
   41.37 +const TUint32 KCalDataExchangeDefaultShiftJIS = 0x00000001; 
   41.38 +
   41.39 +/** This flag ensures that the STATUS property of an imported vCalendar
   41.40 +will map to the CCalEntry::TStatus value with exactly the same name. */
   41.41 +const TUint32 KCalDataExchangeImportStatusAsVCalendar = 0x00000002; 
   41.42 +
   41.43 +#endif // __CCALDATAFORMAT_H__ 
    42.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.2 +++ b/epoc32/include/app/calendarconverter.h	Wed Mar 31 12:27:01 2010 +0100
    42.3 @@ -0,0 +1,89 @@
    42.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
    42.5 +// All rights reserved.
    42.6 +// This component and the accompanying materials are made available
    42.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    42.8 +// which accompanies this distribution, and is available
    42.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   42.10 +//
   42.11 +// Initial Contributors:
   42.12 +// Nokia Corporation - initial contribution.
   42.13 +//
   42.14 +// Contributors:
   42.15 +//
   42.16 +// Description:
   42.17 +//
   42.18 +
   42.19 +#ifndef __CALENDARCONVERTER_H__
   42.20 +#define __CALENDARCONVERTER_H__
   42.21 +
   42.22 +#include <e32std.h>
   42.23 +#include <e32base.h>
   42.24 +
   42.25 +class TChineseDate  
   42.26 +/** Chinese date.
   42.27 +
   42.28 +Its public member data is the year cycle, the year (1-60), the month (1-12), whether or 
   42.29 +not the month is a leap month, and the day in the month (1-29 or 30). 
   42.30 +@publishedAll
   42.31 +@released */
   42.32 +	{
   42.33 +public:
   42.34 +	IMPORT_C TChineseDate();
   42.35 +	IMPORT_C TBool operator==(const TChineseDate& aDate) const;
   42.36 +public:
   42.37 +	/** The year cycle. */
   42.38 +	TInt iCycle;
   42.39 +	/** The year (1-60). */
   42.40 +	TInt iYear;
   42.41 +	/** The month (1-12). */
   42.42 +	TInt iMonth;
   42.43 +	/** Whether or not the month is a leap month. */
   42.44 +	TBool iLeapMonth;
   42.45 +	/** The day in the month (1-29 or 30). */
   42.46 +	TInt iDay;
   42.47 +	};
   42.48 +
   42.49 +
   42.50 +class CChineseCalendarConverter : public CBase
   42.51 +/** Converts between TDateTime and TChineseDate formats in both directions. Chinese dates 
   42.52 +are calculated using the -2636 epoch. This is equivalent to 2637 BCE (Before Common Era). 
   42.53 +@publishedAll
   42.54 +@released */
   42.55 +	{
   42.56 +public:
   42.57 +	IMPORT_C static CChineseCalendarConverter* NewL();
   42.58 +
   42.59 +	/** Creates a Chinese date from a TDateTime value.
   42.60 +	
   42.61 +	@param aDateTime The date/time value to convert.
   42.62 +	@param aChineseDate On return, contains the Chinese date. If the supplied date 
   42.63 +	is invalid, this contains KErrArgument. */
   42.64 +	virtual void DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate)=0;
   42.65 +
   42.66 +	/** Creates a TDateTime value from a Chinese date.
   42.67 +	
   42.68 +	@param aChineseDate A date in Chinese format.
   42.69 +	@param aDateTime On return, contains a date value. If the supplied date is 
   42.70 +	invalid, this contains KErrArgument. */
   42.71 +	virtual void ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime)=0;
   42.72 +
   42.73 +	/** Returns the range of dates, in standard date format, acceptable to the Chinese 
   42.74 +	calendar converter. 
   42.75 +	
   42.76 +	@param aLower On return, contains the lower limit of the converter.
   42.77 +	@param aUpper On return, contains the upper limit of the converter. */
   42.78 +	virtual void DateRange(TDateTime& aLower, TDateTime& aUpper)=0;
   42.79 +
   42.80 +	/** Returns the range of dates, in Chinese date format, acceptable to the Chinese 
   42.81 +	calendar converter.
   42.82 +	
   42.83 +	@param aLower On return, contains the lower limit of the converter.
   42.84 +	@param aUpper On return, contains the upper limit of the converter. */
   42.85 +	virtual void DateRange(TChineseDate& aLower, TChineseDate& aUpper)=0;
   42.86 +	/** Returns the result of the last calendar conversion as a Julian date. 
   42.87 +	
   42.88 +	@return The Julian date. */
   42.89 +	virtual TReal JulianDate() __SOFTFP =0;
   42.90 +	};
   42.91 +
   42.92 +#endif
    43.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.2 +++ b/epoc32/include/app/calentry.h	Wed Mar 31 12:27:01 2010 +0100
    43.3 @@ -0,0 +1,349 @@
    43.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    43.5 +// All rights reserved.
    43.6 +// This component and the accompanying materials are made available
    43.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    43.8 +// which accompanies this distribution, and is available
    43.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   43.10 +//
   43.11 +// Initial Contributors:
   43.12 +// Nokia Corporation - initial contribution.
   43.13 +//
   43.14 +// Contributors:
   43.15 +//
   43.16 +// Description:
   43.17 +//
   43.18 +
   43.19 +#ifndef __CALENTRY_H__
   43.20 +#define __CALENTRY_H__
   43.21 +
   43.22 +#include <calcommon.h>
   43.23 +
   43.24 +const TReal KCalGEOMinLatitude = -90;
   43.25 +const TReal KCalGEOMaxLatitude  = 90;
   43.26 +const TReal KCalGEOMinLongitude = -180;
   43.27 +const TReal KCalGEOMaxLongitude  = 180;
   43.28 +
   43.29 +const TUint KCalGEOMaxDecimalPlaces = 6;
   43.30 +
   43.31 +class CCalAlarm;
   43.32 +class CCalAttachment;
   43.33 +class CCalAttendee;
   43.34 +class CCalCategory;
   43.35 +class CCalEntryImpl;
   43.36 +class CCalGeoValue;
   43.37 +class CCalUser;
   43.38 +class CTzRules;
   43.39 +class TCalRRule;
   43.40 +class CCalEntryIdImpl;
   43.41 +
   43.42 +/** Class representing a calendar entry. This can be an appointment, to-do
   43.43 +item, reminder, event or anniversary.
   43.44 +
   43.45 +CCalEntry contains information about a calendar entry, including
   43.46 +a repeat definition, synchronisation information, and group scheduling data.
   43.47 +
   43.48 +A repeating calendar entry has more than one occurrence. Instances are
   43.49 +represented by the CCalInstance class.
   43.50 +
   43.51 +Synchronisation information includes a record of the date/time the entry was
   43.52 +last modified. This can be found by calling the LastModifiedDateL() function.
   43.53 +
   43.54 +@publishedAll
   43.55 +@released
   43.56 +*/
   43.57 +NONSHARABLE_CLASS(CCalEntry) : public CBase
   43.58 +	{
   43.59 +public:
   43.60 +	/** Defines the type of the calendar entry.
   43.61 +	@publishedAll
   43.62 +	@released
   43.63 +	*/
   43.64 +	enum TType
   43.65 +		{
   43.66 +		/** An appointment, which has a start time and end time. */
   43.67 +		EAppt,
   43.68 +		/** A to-do, which can have a start time and end time (the end time is the due date), or can be undated. */
   43.69 +		ETodo,
   43.70 +		/** An event, which has a start time and end time. */
   43.71 +		EEvent,
   43.72 +		/** A reminder, which has a start time only. */
   43.73 +		EReminder,
   43.74 +		/** An anniversary, which has a start time and end time. */
   43.75 +		EAnniv
   43.76 +		};
   43.77 +
   43.78 +	/** Defines the possible status values of the entry.
   43.79 +	There are values here to support both iCalendar (RFC 2445) and vCalendar v1.0 STATUS properties.
   43.80 +	Enumerated values for vCalendar v1.0 contain the prefix 'EVCal'.
   43.81 +	@publishedAll
   43.82 +	@released
   43.83 +	*/
   43.84 +	enum TStatus
   43.85 +		{
   43.86 +		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event is tentative. */
   43.87 +		ETentative,
   43.88 +		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event has been confirmed. */
   43.89 +		EConfirmed,
   43.90 +		/** Used to support iCalendar (RFC 2445). The event has been cancelled. */
   43.91 +		ECancelled,
   43.92 +		/** Used to support iCalendar (RFC 2445). The to-do entry needs action. */
   43.93 +		ETodoNeedsAction,
   43.94 +		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The to-do entry has been completed. */
   43.95 +		ETodoCompleted,
   43.96 +		/** Used to support iCalendar (RFC 2445). The to-do entry is in progress. */
   43.97 +		ETodoInProcess,
   43.98 +		/** No status is set. */
   43.99 +		ENullStatus,
  43.100 +		
  43.101 +		/** Used to support vCalendar 1.0. The entry has been accepted. */
  43.102 +		EVCalAccepted,
  43.103 +		/** Used to support vCalendar 1.0. The entry needs action. */
  43.104 +		EVCalNeedsAction, 
  43.105 +		/** Used to support vCalendar 1.0. The entry has been sent. */
  43.106 +		EVCalSent, 
  43.107 +		/** Used to support vCalendar 1.0. The entry has been declined. */
  43.108 +		EVCalDeclined,
  43.109 +		/** Used to support vCalendar 1.0. The entry has been delegated. */
  43.110 +		EVCalDelegated,
  43.111 +		};
  43.112 +
  43.113 +	/** Replication status.
  43.114 +	@publishedAll
  43.115 +	@released
  43.116 +	*/
  43.117 +	enum TReplicationStatus
  43.118 +		{
  43.119 +		/** No restriction on access. */
  43.120 +		EOpen,
  43.121 +		/** Data is private (no access). */
  43.122 +		EPrivate,
  43.123 +		/** Data is confidential (restricted access). */
  43.124 +		ERestricted
  43.125 +		};
  43.126 +
  43.127 +	/** The method property of a Group Scheduling entry.
  43.128 +	@publishedAll
  43.129 +	@released
  43.130 +	*/
  43.131 +	enum TMethod
  43.132 +		{
  43.133 +		/** The RFC2445-defined method value 'None'. */
  43.134 +		EMethodNone,
  43.135 +		/** The RFC2445-defined method value 'Publish'. */
  43.136 +		EMethodPublish,
  43.137 +		/** The RFC2445-defined method value 'Request'. */
  43.138 +		EMethodRequest,
  43.139 +		/** The RFC2445-defined method value 'Reply'. */
  43.140 +		EMethodReply,
  43.141 +		/** The RFC2445-defined method value 'Add'. */
  43.142 +		EMethodAdd,
  43.143 +		/** The RFC2445-defined method value 'Cancel'. */
  43.144 +		EMethodCancel,
  43.145 +		/** The RFC2445-defined method value 'Refresh'. */
  43.146 +		EMethodRefresh,
  43.147 +		/** The RFC2445-defined method value 'Counter'. */
  43.148 +		EMethodCounter,
  43.149 +		/** The RFC2445-defined method value 'DeclineCounter'. */
  43.150 +		EMethodDeclineCounter
  43.151 +		};
  43.152 +
  43.153 +	/** Specify which entry details are to be copied in CCalEntry::CopyFromL functions.
  43.154 +	@publishedAll
  43.155 +	@released
  43.156 +	*/
  43.157 +	enum TCopyType
  43.158 +		{
  43.159 +		/** Copy the ID of the entry */
  43.160 +		ECopyAll,
  43.161 +		/** Dont copy ID of the entry */
  43.162 +		EDontCopyId
  43.163 +		};
  43.164 +
  43.165 +	/** The busy status of an entry and corresponds to the TRANSP property in the iCalendar (RFC 2445) and vCalendar specifications.
  43.166 +	In the vCalendar specification, the TRANSP property can be any positive integer value. 0 is opaque and blocks time, 1 
  43.167 +	is transparent and doesn't block time. Any higher values have an implementation-specific meaning.
  43.168 +	In the iCalendar specification (RFC 2445), the TRANSP property can be either OPAQUE (blocks time) or TRANSPARENT (doesn't block time).
  43.169 +	@publishedPartner
  43.170 +	@prototype
  43.171 +	*/
  43.172 +	enum TTransp
  43.173 +		{
  43.174 +		/** The entry blocks time. */
  43.175 +		ETranspBusy,
  43.176 +		/** The entry doesn't block time. */
  43.177 +		ETranspFree,
  43.178 +		/** The entry is tentative and blocks time. */
  43.179 +		ETranspTentative,
  43.180 +		/** The entry is an out-of-office calendar event and blocks time. */
  43.181 +		ETranspOutOfOffice,
  43.182 +		};
  43.183 +
  43.184 +	// Construction / Destruction
  43.185 +	IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum);
  43.186 +	IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum,
  43.187 +					const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange);
  43.188 +
  43.189 +	IMPORT_C ~CCalEntry();
  43.190 +
  43.191 +	// Date and Time
  43.192 +	IMPORT_C TCalTime StartTimeL() const;
  43.193 +	IMPORT_C TCalTime EndTimeL() const;
  43.194 +	IMPORT_C void SetStartAndEndTimeL(const TCalTime& aStartTime, const TCalTime& aEndTime);
  43.195 +
  43.196 +	IMPORT_C void SetLastModifiedDateL();
  43.197 +	IMPORT_C void SetLastModifiedDateL(const TCalTime& aModifiedTime);
  43.198 +	IMPORT_C TCalTime LastModifiedDateL() const;
  43.199 +
  43.200 +	IMPORT_C void SetDTStampL(const TCalTime& aTime);
  43.201 +	IMPORT_C TCalTime DTStampL() const;
  43.202 +
  43.203 +	IMPORT_C TCalTime CompletedTimeL() const;
  43.204 +	IMPORT_C void SetCompletedL(TBool aCompleted, const TCalTime& aTime);
  43.205 +
  43.206 +	// Repeat rules / RDate / ExDate Methods
  43.207 +	IMPORT_C void SetRRuleL(const TCalRRule& aRule);
  43.208 +	IMPORT_C TBool GetRRuleL(TCalRRule& aRule) const;
  43.209 +
  43.210 +	IMPORT_C void SetRDatesL(const RArray<TCalTime>& aRDateList);
  43.211 +	IMPORT_C void GetRDatesL(RArray<TCalTime>& aRDateList) const;
  43.212 +
  43.213 +	IMPORT_C void SetExceptionDatesL(const RArray<TCalTime>& aExDateList);
  43.214 +	IMPORT_C void GetExceptionDatesL(RArray<TCalTime>& aExDateList) const;
  43.215 +
  43.216 +	IMPORT_C void ClearRepeatingPropertiesL();
  43.217 +	
  43.218 +	// Entry alarm
  43.219 +	IMPORT_C void SetAlarmL(CCalAlarm* aAlarm);
  43.220 +	IMPORT_C CCalAlarm* AlarmL() const;
  43.221 +
  43.222 +	// Comparison
  43.223 +	IMPORT_C TBool CompareL(const CCalEntry& aEntry) const;
  43.224 +
  43.225 + 	// Copy
  43.226 + 	IMPORT_C void CopyFromL(const CCalEntry& aOther);
  43.227 +	IMPORT_C void CopyFromL(const CCalEntry& aOther, TCopyType aCopyType);
  43.228 +
  43.229 +	// Text Fields
  43.230 +	IMPORT_C void SetSummaryL(const TDesC& aSummary);
  43.231 +	IMPORT_C const TDesC& SummaryL() const;
  43.232 +	IMPORT_C void SetDescriptionL(const TDesC& aDescription);
  43.233 +	IMPORT_C const TDesC& DescriptionL() const;
  43.234 +	IMPORT_C void SetLocationL(const TDesC& aLocation);
  43.235 +	IMPORT_C const TDesC& LocationL() const;
  43.236 +
  43.237 +	// Category list
  43.238 +	IMPORT_C void AddCategoryL(CCalCategory* aCategory);
  43.239 +	IMPORT_C void DeleteCategoryL(TInt aIndex);
  43.240 +	IMPORT_C const RPointerArray<CCalCategory>& CategoryListL();
  43.241 +
  43.242 +	//	Attendee Methods
  43.243 +	IMPORT_C void AddAttendeeL(CCalAttendee* aAttendee);
  43.244 +	IMPORT_C void DeleteAttendeeL(TInt aIndex);
  43.245 +	IMPORT_C RPointerArray<CCalAttendee>& AttendeesL() const;
  43.246 +	IMPORT_C void SetOrganizerL(CCalUser* aUser);
  43.247 +	IMPORT_C CCalUser* OrganizerL() const;
  43.248 +	IMPORT_C void SetPhoneOwnerL(const CCalUser* aOwner);
  43.249 +	IMPORT_C CCalUser* PhoneOwnerL() const;
  43.250 +
  43.251 +	// Attachments
  43.252 +	IMPORT_C void AddAttachmentL(CCalAttachment& aAttachment);
  43.253 +	IMPORT_C void DeleteAttachmentL(const CCalAttachment& aAttachment);
  43.254 +	IMPORT_C CCalAttachment* AttachmentL(TInt aIndex) const;
  43.255 +	IMPORT_C TInt AttachmentCountL() const;
  43.256 +	// Other Attributes
  43.257 +	IMPORT_C TType EntryTypeL() const;
  43.258 +	IMPORT_C void SetStatusL(TStatus aStatus);
  43.259 +	IMPORT_C TStatus StatusL() const;
  43.260 +
  43.261 +	IMPORT_C void SetReplicationStatusL(TReplicationStatus aReplicationStatus);
  43.262 +	IMPORT_C TReplicationStatus ReplicationStatusL() const;
  43.263 +
  43.264 +	IMPORT_C void SetPriorityL(TUint aPriority);
  43.265 +	IMPORT_C TUint PriorityL() const;
  43.266 +
  43.267 +	IMPORT_C void SetMethodL(TMethod aMethod);
  43.268 +	IMPORT_C TMethod MethodL() const;
  43.269 +	IMPORT_C void SetSequenceNumberL(TInt aSeq);
  43.270 +	IMPORT_C TInt SequenceNumberL() const;
  43.271 +	IMPORT_C const TDesC8& UidL() const;
  43.272 +	IMPORT_C TCalTime RecurrenceIdL() const;
  43.273 +	IMPORT_C CalCommon::TRecurrenceRange RecurrenceRangeL() const;
  43.274 +
  43.275 +	IMPORT_C CTzRules* TzRulesL() const;
  43.276 +	IMPORT_C void SetTzRulesL(const CTzRules& aTzRule);
  43.277 +	IMPORT_C void SetTzRulesL();
  43.278 +
  43.279 +	IMPORT_C void SetLocalUidL(TCalLocalUid aLocalId);
  43.280 +	IMPORT_C TCalLocalUid LocalUidL() const;
  43.281 +
  43.282 +	IMPORT_C TTransp TimeTransparencyL() const;
  43.283 +	IMPORT_C void SetTimeTransparencyL(TTransp aBusyStatus);
  43.284 +
  43.285 +	IMPORT_C CCalGeoValue* GeoValueL() const;
  43.286 +	IMPORT_C void SetGeoValueL(const CCalGeoValue& aGeoValue);
  43.287 +	IMPORT_C void ClearGeoValueL();
  43.288 +
  43.289 +	// Internal APIs (Used by Java)
  43.290 +	IMPORT_C TCalTime NextInstanceForLocalUIDL(const TCalTime& aTime) const;
  43.291 +	IMPORT_C TCalTime PreviousInstanceForLocalUIDL(const TCalTime& aTime) const;
  43.292 +	
  43.293 +	IMPORT_C TCalTime FindRptUntilTimeL(TInt aCount);
  43.294 +
  43.295 +	
  43.296 +public:
  43.297 +	// Internal APIs
  43.298 +	static CCalEntry* NewL(CCalEntryImpl* aImpl);
  43.299 +	CCalEntryImpl* Impl() const;
  43.300 +	
  43.301 +private:
  43.302 +	void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum, const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange);
  43.303 +	void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum);
  43.304 +	void ConstructL(CCalEntryImpl* aImpl);
  43.305 +
  43.306 +private: // member data
  43.307 +	CCalEntryImpl* iImpl;
  43.308 +	};
  43.309 +
  43.310 +
  43.311 +/** Class representing a uniquely identifiable calendar entry in a calendar file.
  43.312 +
  43.313 +@publishedAll
  43.314 +@released
  43.315 +*/
  43.316 +NONSHARABLE_CLASS(CCalEntryId) : public CBase
  43.317 +	{
  43.318 +public:
  43.319 +	IMPORT_C static CCalEntryId* NewL(TDesC8* aFlatData);
  43.320 +	IMPORT_C ~CCalEntryId();
  43.321 +	IMPORT_C TPtrC8 IdL();
  43.322 +	IMPORT_C TPtrC StoreFileNameL();
  43.323 +	IMPORT_C TCalTime RecurrenceIdL();
  43.324 +	IMPORT_C TCalTime InstanceTimeL() const;
  43.325 +	IMPORT_C TCalLocalUid LocalUidL() const;
  43.326 +private:
  43.327 +	CCalEntryId();
  43.328 +private:
  43.329 +	CCalEntryIdImpl* iImpl;
  43.330 +	};
  43.331 +
  43.332 +
  43.333 +/** Class representing the geographical location of a calendar entry.
  43.334 +This corresponds to the GEO property as defined in vCalendar / iCalendar (RFC 2445). It contains a latitude and a longitude.
  43.335 +@publishedPartner
  43.336 +@prototype
  43.337 +*/
  43.338 +NONSHARABLE_CLASS(CCalGeoValue) : public CBase
  43.339 +	{
  43.340 +public:
  43.341 +	IMPORT_C static CCalGeoValue* NewL();
  43.342 +	IMPORT_C ~CCalGeoValue();
  43.343 +	IMPORT_C void SetLatLongL(const TReal& aLatitude, const TReal& aLongitude);
  43.344 +	IMPORT_C TBool GetLatLong(TReal& aLatitude, TReal& aLongitude) const;
  43.345 +private:
  43.346 +	CCalGeoValue();
  43.347 +private:
  43.348 +	TReal iLatitude;
  43.349 +	TReal iLongitude;
  43.350 +	};
  43.351 +
  43.352 +#endif // __CALENTRY_H__
    44.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.2 +++ b/epoc32/include/app/calentryview.h	Wed Mar 31 12:27:01 2010 +0100
    44.3 @@ -0,0 +1,65 @@
    44.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    44.5 +// All rights reserved.
    44.6 +// This component and the accompanying materials are made available
    44.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    44.8 +// which accompanies this distribution, and is available
    44.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   44.10 +//
   44.11 +// Initial Contributors:
   44.12 +// Nokia Corporation - initial contribution.
   44.13 +//
   44.14 +// Contributors:
   44.15 +//
   44.16 +// Description:
   44.17 +//
   44.18 +
   44.19 +#ifndef __CALENTRYVIEW_H__
   44.20 +#define __CALENTRYVIEW_H__
   44.21 +
   44.22 +#include <badesca.h>
   44.23 +#include <calentry.h>
   44.24 +
   44.25 +class MCalProgressCallBack;
   44.26 +class CCalSession;
   44.27 +class CCalEntryViewImpl;
   44.28 +
   44.29 +/** View class for accessing calendar entries.
   44.30 +
   44.31 +Once a session to a calendar file has been created, a view to the session
   44.32 +can be created.
   44.33 +
   44.34 +This view can be used to fetch, store and delete entries.
   44.35 +
   44.36 +@publishedAll
   44.37 +@released
   44.38 +*/
   44.39 +NONSHARABLE_CLASS(CCalEntryView) : public CBase
   44.40 +    {
   44.41 +public:
   44.42 +		
   44.43 +	IMPORT_C static CCalEntryView* NewL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack);
   44.44 +	IMPORT_C static CCalEntryView* NewL(CCalSession& aSession);
   44.45 +
   44.46 +	IMPORT_C ~CCalEntryView();
   44.47 +	
   44.48 +	IMPORT_C void FetchL(const TDesC8& aUid, RPointerArray<CCalEntry>& aCalEntryArray) const;
   44.49 +	IMPORT_C CCalEntry* FetchL(TCalLocalUid aId) const;
   44.50 +	
   44.51 +	IMPORT_C void GetIdsModifiedSinceDateL(const TCalTime& aTime, RArray<TCalLocalUid>& aIds) const;
   44.52 +	
   44.53 +	IMPORT_C void StoreL(const RPointerArray<CCalEntry>& aCalEntryList, TInt& aNumSuccessfulEntry);
   44.54 +	IMPORT_C void UpdateL(const RPointerArray<CCalEntry>& aCalEntryList, TInt& aNumSuccessfulEntry);
   44.55 +	
   44.56 +	IMPORT_C void DeleteL(const CDesC8Array& aUidList);
   44.57 +	IMPORT_C void DeleteL(const CCalEntry& aCalEntry);
   44.58 +	IMPORT_C void DeleteL(const CalCommon::TCalTimeRange& aCalTimeRange, CalCommon::TCalViewFilter aFilter, MCalProgressCallBack& aProgressCallBack);
   44.59 +	IMPORT_C void DeleteL(const RArray<TCalLocalUid>& aIds, TInt& aNumSuccessfulDeleted);
   44.60 +
   44.61 +private:
   44.62 +	CCalEntryView();
   44.63 +	void ConstructL(CCalSession& aSession, MCalProgressCallBack* aProgressCallBack);
   44.64 +private:
   44.65 +	CCalEntryViewImpl* iImpl;
   44.66 +	};
   44.67 +	
   44.68 +#endif // __CALENTRYVIEW_H__
    45.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.2 +++ b/epoc32/include/app/calinstance.h	Wed Mar 31 12:27:01 2010 +0100
    45.3 @@ -0,0 +1,54 @@
    45.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    45.5 +// All rights reserved.
    45.6 +// This component and the accompanying materials are made available
    45.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    45.8 +// which accompanies this distribution, and is available
    45.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   45.10 +//
   45.11 +// Initial Contributors:
   45.12 +// Nokia Corporation - initial contribution.
   45.13 +//
   45.14 +// Contributors:
   45.15 +//
   45.16 +// Description:
   45.17 +//
   45.18 +
   45.19 +#ifndef __CALINSTANCE_H__
   45.20 +#define __CALINSTANCE_H__
   45.21 +
   45.22 +#include <caltime.h>
   45.23 +
   45.24 +class CCalEntry;
   45.25 +class CCalInstanceImpl;
   45.26 +
   45.27 +/** Class representing an instance of a calendar entry.
   45.28 +
   45.29 +A calendar entry (CCalEntry) can have any number of instances. 
   45.30 +A non-repeating entry will only have one instance.
   45.31 +Any further instances will appear if the entry has recurrence data.
   45.32 +
   45.33 +The time of an instance is the start time of that instance of the entry.
   45.34 +
   45.35 +@publishedAll
   45.36 +@released
   45.37 +*/
   45.38 +NONSHARABLE_CLASS(CCalInstance) : public CBase
   45.39 +	{
   45.40 +public:
   45.41 +	static CCalInstance* NewL(CCalEntry* aEntry, const TCalTime& iTime);
   45.42 +	IMPORT_C ~CCalInstance();
   45.43 +	
   45.44 +	IMPORT_C CCalEntry& Entry() const;
   45.45 +	IMPORT_C TCalTime Time() const;
   45.46 +	IMPORT_C TCalTime StartTimeL() const;
   45.47 +	IMPORT_C TCalTime EndTimeL() const;
   45.48 +
   45.49 +private:
   45.50 +	CCalInstance();
   45.51 +	void ConstructL(CCalEntry* aEntry, const TCalTime& aTime);
   45.52 +	
   45.53 +private:
   45.54 +	CCalInstanceImpl* iImpl;
   45.55 +	};
   45.56 +
   45.57 +#endif // __CALINSTANCE_H__
    46.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.2 +++ b/epoc32/include/app/calinstanceview.h	Wed Mar 31 12:27:01 2010 +0100
    46.3 @@ -0,0 +1,129 @@
    46.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    46.5 +// All rights reserved.
    46.6 +// This component and the accompanying materials are made available
    46.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    46.8 +// which accompanies this distribution, and is available
    46.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   46.10 +//
   46.11 +// Initial Contributors:
   46.12 +// Nokia Corporation - initial contribution.
   46.13 +//
   46.14 +// Contributors:
   46.15 +//
   46.16 +// Description:
   46.17 +//
   46.18 +
   46.19 +#ifndef __CALINSTANCEVIEW_H__
   46.20 +#define __CALINSTANCEVIEW_H__
   46.21 +
   46.22 +#include <calentry.h>
   46.23 +#include <calentryview.h>
   46.24 +#include <calinstanceiterator.h>
   46.25 +
   46.26 +class CCalFindInstanceSettings;
   46.27 +class CCalInstance;
   46.28 +class CCalInstanceIterator;
   46.29 +class CCalInstanceViewImpl;
   46.30 +class CCalSession;
   46.31 +class MCalProgressCallBack;
   46.32 +class TCalTime;
   46.33 +class CCalLiteEntry;
   46.34 +class TAgnInstanceId;
   46.35 +struct TASShdAlarmedInstanceParams;
   46.36 +
   46.37 +/** View class for accessing instances of calendar entries.
   46.38 +
   46.39 +Once a session to a calendar file has been created, a view to the session
   46.40 +can be created.
   46.41 +
   46.42 +An instance is a calendar entry, a repeated instance of a calendar entry, 
   46.43 +or an RDate added to an entry.
   46.44 +
   46.45 +This view can be used to search for instances and also to delete instances.
   46.46 +
   46.47 +@publishedAll
   46.48 +@released
   46.49 +*/
   46.50 +NONSHARABLE_CLASS(CCalInstanceView) : public CBase
   46.51 +    {	
   46.52 +public:
   46.53 +
   46.54 +	/** Parameter struct for storing search data.
   46.55 +	This contains a descriptor to store search text and an enum to describe the text search behaviour.
   46.56 +
   46.57 +	@publishedAll
   46.58 +	@released
   46.59 +	*/
   46.60 +	class TCalSearchParams
   46.61 +		{
   46.62 +	public:
   46.63 +		IMPORT_C TCalSearchParams(const TDesC& aText, CalCommon::TCalSearchBehaviour aBehaviour);
   46.64 +		IMPORT_C const TDesC& Text() const;
   46.65 +		IMPORT_C CalCommon::TCalSearchBehaviour Behaviour() const;
   46.66 +	
   46.67 +	private:
   46.68 +		TPtrC iSearchText;
   46.69 +		CalCommon::TCalSearchBehaviour iSearchBehaviour;
   46.70 +		};
   46.71 +		
   46.72 +	IMPORT_C static CCalInstanceView* NewL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack);
   46.73 +	IMPORT_C static CCalInstanceView* NewL(CCalSession& aSession);
   46.74 +	IMPORT_C ~CCalInstanceView();
   46.75 +	
   46.76 +	IMPORT_C void FindInstanceL(RPointerArray<CCalInstance>& aInstanceList, 
   46.77 +					   			CalCommon::TCalViewFilter aCalViewFilter, 
   46.78 +					   			const CalCommon::TCalTimeRange& aTimeRange) const;
   46.79 +	
   46.80 +	IMPORT_C void FindInstanceL(RPointerArray<CCalInstance>& aMatchedInstanceList,
   46.81 +								CalCommon::TCalViewFilter aCalViewFilter, 
   46.82 +								const CalCommon::TCalTimeRange& aTimeRange, 
   46.83 +								const TCalSearchParams& aSearchParams) const;
   46.84 +					   
   46.85 +	IMPORT_C CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings& aSettings) const;
   46.86 +
   46.87 +    IMPORT_C void FindAlarmedInstanceL(RPointerArray<CCalInstance>& aAlarmedInstanceList,    
   46.88 +    								   TASShdAlarmedInstanceParams aAlarmedInstanceParams) const;	
   46.89 +	
   46.90 +	IMPORT_C void DeleteL(CCalInstance* aInstance, CalCommon::TRecurrenceRange aWhichInstances);
   46.91 +								
   46.92 +	IMPORT_C TCalTime NextInstanceL(CalCommon::TCalViewFilter aCalViewFilter, const TCalTime& aStartDate) const;
   46.93 +	IMPORT_C TCalTime PreviousInstanceL(CalCommon::TCalViewFilter aCalViewFilter, const TCalTime& aStartDate) const;
   46.94 +	
   46.95 +private:
   46.96 +	CCalInstanceView();
   46.97 +	void ConstructL(CCalSession& aSession, MCalProgressCallBack* aProgressCallBack);
   46.98 +	
   46.99 +private: 
  46.100 +	CCalInstanceViewImpl* iImpl;
  46.101 +	};
  46.102 +
  46.103 +/** Class for specifying the search criteria for use in @see CCalInstanceView::FindInstanceL.
  46.104 +
  46.105 +@publishedPartner
  46.106 +@released
  46.107 +*/
  46.108 +NONSHARABLE_CLASS(CCalFindInstanceSettings) : public CBase
  46.109 +	{
  46.110 +public:
  46.111 +	IMPORT_C static CCalFindInstanceSettings* NewL(CalCommon::TCalViewFilter aFilter, const CalCommon::TCalTimeRange& aTimeRange);
  46.112 +	IMPORT_C ~CCalFindInstanceSettings();
  46.113 +
  46.114 +	IMPORT_C void SetFilter(CalCommon::TCalViewFilter aFilter);
  46.115 +	IMPORT_C void SetTimeRange(const CalCommon::TCalTimeRange& aTimeRange);
  46.116 +	IMPORT_C void SetTextSearchL(const CCalInstanceView::TCalSearchParams& aSearchParams);
  46.117 +	
  46.118 +	CalCommon::TCalSearchBehaviour Behaviour() const;
  46.119 +	CalCommon::TCalViewFilter Filter() const;
  46.120 +	const CalCommon::TCalTimeRange TimeRange() const;
  46.121 +	const TDesC& Text() const;
  46.122 +private:
  46.123 +	CCalFindInstanceSettings(CalCommon::TCalViewFilter aFilter, const CalCommon::TCalTimeRange& aTimeRange);
  46.124 +
  46.125 +private:
  46.126 +	CalCommon::TCalTimeRange		iTimeRange;
  46.127 +	CalCommon::TCalViewFilter		iFilter;
  46.128 +	HBufC*							iSearchText;
  46.129 +	CalCommon::TCalSearchBehaviour	iSearchBehaviour;
  46.130 +	};
  46.131 +	
  46.132 +#endif // __CALINSTANCEVIEW_H__
    47.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.2 +++ b/epoc32/include/app/calinterimapipanic.h	Wed Mar 31 12:27:01 2010 +0100
    47.3 @@ -0,0 +1,104 @@
    47.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    47.5 +// All rights reserved.
    47.6 +// This component and the accompanying materials are made available
    47.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    47.8 +// which accompanies this distribution, and is available
    47.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   47.10 +//
   47.11 +// Initial Contributors:
   47.12 +// Nokia Corporation - initial contribution.
   47.13 +//
   47.14 +// Contributors:
   47.15 +//
   47.16 +// Description:
   47.17 +//
   47.18 +
   47.19 +/**
   47.20 + @file
   47.21 + @publishedAll
   47.22 + @released
   47.23 +*/
   47.24 +
   47.25 +#ifndef __CALINTERIMAPIPANIC_H__
   47.26 +#define __CALINTERIMAPIPANIC_H__
   47.27 +
   47.28 + /**
   47.29 +Panics raised from CallinterimAPI
   47.30 + */
   47.31 +enum TCalInterimApiPanicCode
   47.32 +	{
   47.33 +
   47.34 +	/**
   47.35 +	Trying to create a CCalCategory object and a wrong type is passed.
   47.36 +	*/
   47.37 +	EInvalidCategoryParameter		= 0,
   47.38 +
   47.39 +	/**
   47.40 +	Attempt to pass wrong type of TChangeEntryType.
   47.41 +	*/
   47.42 +	EInvalidChangeEntryType			= 1,
   47.43 +
   47.44 +	/**
   47.45 +	Trying to fetch an undefined TStatus/TCalStatus of an Entry.
   47.46 +	*/
   47.47 +	EInvalidEntryStatus				= 2,
   47.48 +
   47.49 +	/**
   47.50 +	The TType of an Entry dosen't match the standard types
   47.51 +	*/
   47.52 +	EInvalidEntryType				= 3,
   47.53 +
   47.54 +	/**
   47.55 +	Atttempt to create an object using NULL object of type CCalEntry.
   47.56 +	*/
   47.57 +	EInstanceCreatedFromNullEntry	= 4,
   47.58 +
   47.59 +	/**
   47.60 +	Passed invalid Recurrence Range.
   47.61 +	*/
   47.62 +	EInvalidRecurrenceRangeParameter= 5,
   47.63 +
   47.64 +	/**
   47.65 +	Attempt to pass a NULL object of type CCalInstance.
   47.66 +	*/
   47.67 +	ENullInstanceParameter			= 6,
   47.68 +
   47.69 +	/**
   47.70 +	Wrong CCalEntry TType passed to API
   47.71 +	*/
   47.72 +	EInvalidEntryTypeParameter		= 7,
   47.73 +
   47.74 +	/**
   47.75 +	Attempt to create an invalid repeat rule.
   47.76 +	*/
   47.77 +	ERepeatRuleBitFailure			= 8,
   47.78 +
   47.79 +	/**
   47.80 +	Attempt to pass incorrect TCalRRule TType.
   47.81 +	*/
   47.82 +	EInvalidRepeatRuleType			= 9,
   47.83 +		
   47.84 +	/**
   47.85 +    Trying to set a repeat rule while one has already been set.
   47.86 +	*/
   47.87 +	ERepeatRuleTypeAlreadySet		= 10,
   47.88 +
   47.89 +	/**
   47.90 +	Raised by the Class CCalSession's destructor if all the opened references
   47.91 +	have not been closed before destruction of CCalSession object.
   47.92 +	*/
   47.93 +	ESessionHasOpenReferences		= 11,
   47.94 +
   47.95 +	/**
   47.96 +	The type of CCalAttachment is unknown.
   47.97 +	*/
   47.98 +	EInvalidAttachmentType			= 12,
   47.99 +	
  47.100 +	/**
  47.101 +	The instance iterator index is corrupt.
  47.102 +	*/
  47.103 +	EInstanceIteratorIndexCorrupt	= 13
  47.104 +	
  47.105 +	};
  47.106 +
  47.107 +#endif 
    48.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.2 +++ b/epoc32/include/app/caliterator.h	Wed Mar 31 12:27:01 2010 +0100
    48.3 @@ -0,0 +1,54 @@
    48.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    48.5 +// All rights reserved.
    48.6 +// This component and the accompanying materials are made available
    48.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    48.8 +// which accompanies this distribution, and is available
    48.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   48.10 +//
   48.11 +// Initial Contributors:
   48.12 +// Nokia Corporation - initial contribution.
   48.13 +//
   48.14 +// Contributors:
   48.15 +//
   48.16 +// Description:
   48.17 +//
   48.18 +
   48.19 +#ifndef __CALITER_H__
   48.20 +#define __CALITER_H__
   48.21 +
   48.22 +
   48.23 +#include <e32base.h>
   48.24 +
   48.25 +class CCalSession;
   48.26 +class CCalIteratorImpl;
   48.27 +
   48.28 +/** 
   48.29 +An iterator for iterating though all the entries in the calendar store.
   48.30 +
   48.31 +This may be used by a synchronisation application to iterate all entries in the file to find entries that
   48.32 +have been added\\deleted between two synchronisations. 
   48.33 +
   48.34 +The application must not create the entry view or instance view while iterating through the entries. 
   48.35 +
   48.36 +@publishedAll
   48.37 +@released
   48.38 +*/
   48.39 +NONSHARABLE_CLASS(CCalIter) : public CBase
   48.40 +
   48.41 +    {
   48.42 +public:
   48.43 +	IMPORT_C static CCalIter* NewL(CCalSession& aSession);
   48.44 +	IMPORT_C ~CCalIter();
   48.45 +
   48.46 +	IMPORT_C const TDesC8& FirstL();
   48.47 +	IMPORT_C const TDesC8& NextL();
   48.48 +
   48.49 +private:
   48.50 +	CCalIter();
   48.51 +	void ConstructL(CCalSession& aSession);
   48.52 +
   48.53 +private:
   48.54 +	CCalIteratorImpl* iCalIteratorImpl;
   48.55 +	};
   48.56 +	
   48.57 +#endif // __CALITER_H__
    49.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.2 +++ b/epoc32/include/app/calnotification.h	Wed Mar 31 12:27:01 2010 +0100
    49.3 @@ -0,0 +1,50 @@
    49.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    49.5 +// All rights reserved.
    49.6 +// This component and the accompanying materials are made available
    49.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    49.8 +// which accompanies this distribution, and is available
    49.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   49.10 +//
   49.11 +// Initial Contributors:
   49.12 +// Nokia Corporation - initial contribution.
   49.13 +//
   49.14 +// Contributors:
   49.15 +//
   49.16 +// Description:
   49.17 +//
   49.18 +
   49.19 +#ifndef __CALNOTIFICATION_H__
   49.20 +#define __CALNOTIFICATION_H__
   49.21 +
   49.22 +/** The calendar publish and subscribe category
   49.23 +@publishedAll
   49.24 +
   49.25 +@released
   49.26 +*/
   49.27 +const TUid KCalPubSubCategory = { 0x10003a5b };
   49.28 +
   49.29 +/** Used for subcribing to either todos or event changes
   49.30 +@publishedAll
   49.31 +@released
   49.32 +*/
   49.33 +enum TCalPubSubValues
   49.34 +	{
   49.35 +	/** subscribe to todo notifications */
   49.36 +	ECalPubSubTodoNotification,
   49.37 +	/** subscribe to event notifications */
   49.38 +	ECalPubSubEventNotification,
   49.39 +	};
   49.40 +	
   49.41 +/** The publish and subscribe data 
   49.42 +@publishedAll
   49.43 +@released
   49.44 +*/
   49.45 +struct TCalPubSubData
   49.46 +	{
   49.47 +	/** The time that the calendar change took place, in universal (UTC) time */
   49.48 +	TTime iTimeOfChangeUtc;
   49.49 +	/** The filename hashed into a 4-byte integer. CalInterimAPI provides a method to find the filename from this value. */
   49.50 +	TUint32 iFileNameHash;
   49.51 +	};
   49.52 +
   49.53 +#endif // __CALNOTIFICATION_H__
    50.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.2 +++ b/epoc32/include/app/calprogresscallback.h	Wed Mar 31 12:27:01 2010 +0100
    50.3 @@ -0,0 +1,54 @@
    50.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    50.5 +// All rights reserved.
    50.6 +// This component and the accompanying materials are made available
    50.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    50.8 +// which accompanies this distribution, and is available
    50.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   50.10 +//
   50.11 +// Initial Contributors:
   50.12 +// Nokia Corporation - initial contribution.
   50.13 +//
   50.14 +// Contributors:
   50.15 +//
   50.16 +// Description:
   50.17 +//
   50.18 +
   50.19 +#ifndef __CALPROGRESSCALLBACK_H__
   50.20 +#define __CALPROGRESSCALLBACK_H__
   50.21 +
   50.22 +class MCalProgressCallBack
   50.23 +/** A call back class to show the progress of long-running operations. 
   50.24 +
   50.25 +When a long-running operation is carried out on the instance view or the entry 
   50.26 +view, this class is used to signal its progress, and when the function is complete.
   50.27 +
   50.28 +@publishedAll
   50.29 +@released
   50.30 +*/
   50.31 +	{
   50.32 +public:
   50.33 +
   50.34 +	/** Progress callback.
   50.35 +	
   50.36 +	This calls the observing class with the percentage complete of the current operation.
   50.37 +	
   50.38 +	@param aPercentageCompleted The percentage complete. */
   50.39 +	virtual void Progress(TInt aPercentageCompleted) = 0;
   50.40 +	
   50.41 +	/** Progress callback.
   50.42 +	
   50.43 +	This calls the observing class when the current operation is finished.
   50.44 +	
   50.45 +	@param aError The error if the operation failed, or KErrNone if successful. */
   50.46 +	virtual void Completed(TInt aError) = 0;
   50.47 +	
   50.48 +	/** 
   50.49 +    Asks the observing class whether progress callbacks are required. This
   50.50 +    is called once only to check if callbacks are enabled.
   50.51 +	
   50.52 +	@return If the observing class returns EFalse, then the Progress() function will not be called. 
   50.53 +    */
   50.54 +	virtual TBool NotifyProgress() = 0;
   50.55 +	};
   50.56 +	
   50.57 +#endif // __CALPROGRESSCALLBACK_H__
    51.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.2 +++ b/epoc32/include/app/calrrule.h	Wed Mar 31 12:27:01 2010 +0100
    51.3 @@ -0,0 +1,151 @@
    51.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    51.5 +// All rights reserved.
    51.6 +// This component and the accompanying materials are made available
    51.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    51.8 +// which accompanies this distribution, and is available
    51.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   51.10 +//
   51.11 +// Initial Contributors:
   51.12 +// Nokia Corporation - initial contribution.
   51.13 +//
   51.14 +// Contributors:
   51.15 +//
   51.16 +// Description:
   51.17 +//
   51.18 +
   51.19 +#ifndef __CALRRULE_H__
   51.20 +#define __CALRRULE_H__
   51.21 +
   51.22 +#include <caltime.h>
   51.23 +
   51.24 +/** Class representing iCal repeat types.
   51.25 +
   51.26 +This supports the following standard iCal properties:
   51.27 +- FREQ (rule type), 
   51.28 +- DTSTART (start date), 
   51.29 +- UNTIL (end date), 
   51.30 +- COUNT (number of instances),
   51.31 +- INTERVAL (interval between instances), 
   51.32 +- BYDAY, 
   51.33 +- BYMONTHDAY, 
   51.34 +- BYYEARDAY, 
   51.35 +- WKST (start day of week).
   51.36 +
   51.37 +Note that the repeat rule type (FREQ) must be set before any of the following 
   51.38 +properties can be set, since their behaviour is dependent on the rule type:
   51.39 +BYDAY, BYMONTHDAY, BYYEARDAY
   51.40 +
   51.41 +The WKST parameter is only significant in weekly repeat rules with an interval of 
   51.42 +greater than 1.
   51.43 +
   51.44 +The repeat rule type may not be changed once it has been set.
   51.45 +
   51.46 +If the start date of the entry does not match an instance of its repeat rule then 
   51.47 +the entry's start date will be moved forward to the first matching instance. For example,
   51.48 +if the rule repeats every Wednesday but the start date of the entry is Monday, then the 
   51.49 +start date will be changed to the Wednesday.
   51.50 +
   51.51 +@publishedAll
   51.52 +@released
   51.53 +*/
   51.54 +NONSHARABLE_CLASS(TCalRRule)
   51.55 +	{
   51.56 +public:
   51.57 +	/** Types of repeat rule. 
   51.58 +	
   51.59 +	@publishedAll
   51.60 +	@released
   51.61 +	*/	
   51.62 +	enum TType 
   51.63 +		{
   51.64 +		/** The type has not yet been defined. */
   51.65 +		EInvalid=0,
   51.66 +		/** Rule which repeats based on a number of days. */
   51.67 +		EDaily,
   51.68 +		/** Rule which repeats based on a number of weeks. */
   51.69 +		EWeekly,
   51.70 +		/** Rule which repeats based on a number of months. */
   51.71 +		EMonthly,
   51.72 +		/** Rule which repeats based on a number of years. */
   51.73 +		EYearly,
   51.74 +		};
   51.75 +		
   51.76 +	/** Class to represent a weekday within a month.
   51.77 +	
   51.78 +	Valid values of iWeekInMonth are 1, 2, 3, 4 for the 1st, 2nd, 3rd and 4th week of 
   51.79 +	the month, or -1 for the last week of the month.
   51.80 +
   51.81 +	For example:
   51.82 +	The 3rd Wednesday would have iDay = EWednesday and iWeekInMonth = 3.
   51.83 +	The last Sunday would have iDay = ESunday and iWeekInMonth = -1.
   51.84 +	
   51.85 +	@publishedAll
   51.86 +	@released
   51.87 +	*/
   51.88 +	class TDayOfMonth
   51.89 +		{
   51.90 +	public:
   51.91 +		IMPORT_C TDayOfMonth(TDay aDay, TInt8 aWeekInMonth);
   51.92 +		IMPORT_C TDay Day() const;
   51.93 +		IMPORT_C TInt8 WeekInMonth() const;
   51.94 +	private:
   51.95 +		TDay iDay;
   51.96 +		TInt8 iWeekInMonth;
   51.97 +		};
   51.98 +	
   51.99 +	IMPORT_C TCalRRule();
  51.100 +	IMPORT_C TCalRRule(TType aType);
  51.101 +	
  51.102 +	IMPORT_C void SetType(TType aType);
  51.103 +	IMPORT_C TType Type() const;
  51.104 +	
  51.105 +	IMPORT_C void SetDtStart(const TCalTime& aTime);
  51.106 +	IMPORT_C TCalTime DtStart() const;
  51.107 +		
  51.108 +	IMPORT_C void SetUntil(const TCalTime& aTime);
  51.109 +	IMPORT_C TCalTime Until() const;
  51.110 +	
  51.111 +	IMPORT_C void SetCount(TUint aCount);
  51.112 +	IMPORT_C TUint Count() const;
  51.113 +	
  51.114 +	IMPORT_C void SetInterval(TInt aInterval);
  51.115 +	IMPORT_C TInt Interval() const;
  51.116 +	
  51.117 +	IMPORT_C void SetByDay(const RArray<TDay>& aDays); 
  51.118 +	IMPORT_C void GetByDayL(RArray<TDay>& aDays) const;
  51.119 +	
  51.120 +	IMPORT_C void SetByDay(const RArray<TDayOfMonth>& aDays); 
  51.121 +	IMPORT_C void GetByDayL(RArray<TDayOfMonth>& aDays) const;
  51.122 +
  51.123 +	IMPORT_C void SetByMonthDay(const RArray<TInt>& aMonthDays);
  51.124 +	IMPORT_C void GetByMonthDayL(RArray<TInt>& aMonthDays) const;
  51.125 +
  51.126 +	IMPORT_C void SetByMonth(const RArray<TMonth> aMonths);
  51.127 +	IMPORT_C void GetByMonthL(RArray<TMonth>& aMonths) const;
  51.128 +
  51.129 +	IMPORT_C void SetWkSt(TDay aDay);
  51.130 +	IMPORT_C TDay WkSt() const;
  51.131 +
  51.132 +	void SetUntilAndCount(const TCalTime& aTime, TUint aCount);
  51.133 +
  51.134 +private:
  51.135 +	void InitialiseData();
  51.136 +
  51.137 +	TUint MapToBitsWeekdays(TDay aDay);
  51.138 +	
  51.139 +	TBool GetNthBit(TUint aNum) const;
  51.140 +	void SetNthBit(TUint aNum);
  51.141 +		
  51.142 +private:
  51.143 +	TUint64	iBuffer; 	// stores BYDAY/BYMONTHDAY
  51.144 +	TCalTime iDtStart;
  51.145 +	TCalTime iUntil;
  51.146 +	TInt32  iReserved;
  51.147 +	TInt32  iReserved2;
  51.148 +	TInt	iCount;
  51.149 +	TDay	iWkSt;
  51.150 +	TType	iType;
  51.151 +	TUint8	iInterval;
  51.152 +	};
  51.153 +
  51.154 +#endif // __CALRRULE_H__
    52.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.2 +++ b/epoc32/include/app/calsession.h	Wed Mar 31 12:27:01 2010 +0100
    52.3 @@ -0,0 +1,106 @@
    52.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    52.5 +// All rights reserved.
    52.6 +// This component and the accompanying materials are made available
    52.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    52.8 +// which accompanies this distribution, and is available
    52.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   52.10 +//
   52.11 +// Initial Contributors:
   52.12 +// Nokia Corporation - initial contribution.
   52.13 +//
   52.14 +// Contributors:
   52.15 +//
   52.16 +// Description:
   52.17 +//
   52.18 +
   52.19 +#ifndef __CALSESSION_H__
   52.20 +#define __CALSESSION_H__
   52.21 +
   52.22 +#include <badesca.h>
   52.23 +
   52.24 +#include <calchangecallback.h>
   52.25 +#include <calnotification.h>
   52.26 +
   52.27 +class CCalSessionImpl;
   52.28 +class MCalChangeCallBack2;
   52.29 +
   52.30 +/** A handle to the calendar file.
   52.31 +
   52.32 +When the client instantiates a CCalSession, it will connect to the calendar server. 
   52.33 +In turn, the client can use its APIs, for instance to create or open a calendar file.
   52.34 +
   52.35 +The agenda data in the file can be accessed as entries. To access the entries, clients should
   52.36 +use class CCalEntryView or CCalInstanceView to process the entry data. However, both view classes 
   52.37 +require the handle to the file which is represented by this class.
   52.38 +
   52.39 +A calendar file can be opened on any writable drive. Note that if the file is opened 
   52.40 +on a removable media and that media is removed, operations will leave with KErrNotReady.
   52.41 +This error can also happen when trying to access file attachments on removed media.
   52.42 +When this error occurs, the user should close the CCalSession and re-open it once the media 
   52.43 +has been replaced. 
   52.44 +It is recommended that when using a calendar file on removable media, the user should watch for when 
   52.45 +the media is removed / replaced using the RFs::NotifyChange API.
   52.46 +
   52.47 +The session object must not be destroyed until all the objects which where created by referencing it 
   52.48 +have been destroyed.
   52.49 +
   52.50 +@publishedAll
   52.51 +@released
   52.52 +*/
   52.53 +NONSHARABLE_CLASS(CCalSession) : public CBase
   52.54 +    {
   52.55 +public:
   52.56 +	IMPORT_C static CCalSession* NewL();
   52.57 +	IMPORT_C ~CCalSession();
   52.58 +
   52.59 +	IMPORT_C void CreateCalFileL(const TDesC&  aFileName) const;
   52.60 +	IMPORT_C void OpenL(const TDesC& aFileName) const;
   52.61 +	IMPORT_C void OpenL(const TDesC& aFileName, CalCommon::TCalFileVersionSupport& aFileSupportStatus) const;
   52.62 +	IMPORT_C const TDesC& DefaultFileNameL() const; 
   52.63 +	IMPORT_C void DeleteCalFileL(const TDesC& aFileName) const;
   52.64 +	IMPORT_C CDesCArray* ListCalFilesL() const;
   52.65 +
   52.66 +	IMPORT_C void StartChangeNotification(MCalChangeCallBack2& aCallBack, const CCalChangeNotificationFilter& aFilter);
   52.67 +	IMPORT_C void StopChangeNotification();
   52.68 +	IMPORT_C void DisableChangeBroadcast();
   52.69 +	IMPORT_C void EnableChangeBroadcast();
   52.70 +	
   52.71 +	IMPORT_C void EnablePubSubNotificationsL();
   52.72 +	IMPORT_C void DisablePubSubNotificationsL();
   52.73 +	
   52.74 +	IMPORT_C void FileIdL(TCalFileId& aCalFileId) const;
   52.75 +	IMPORT_C void GetFileNameL(TCalPubSubData aPubSubData, TDes& aFileName) const;
   52.76 +	IMPORT_C TBool IsFileNameL(TCalPubSubData aPubSubData, const TDesC& aFileName) const;
   52.77 +	IMPORT_C TBool IsOpenedFileL(TCalPubSubData aPubSubData) const;
   52.78 +
   52.79 +	// debug only
   52.80 +/**
   52.81 +@publishedPartner
   52.82 +@released
   52.83 +*/
   52.84 +	IMPORT_C void _DebugSetHeapFailL(RAllocator::TAllocFail aFail, TInt aRate);
   52.85 +
   52.86 +/**
   52.87 +@publishedPartner
   52.88 +@released
   52.89 +*/
   52.90 +	IMPORT_C TInt _DebugRequestAllocatedCellsL();
   52.91 +
   52.92 +	// deprecated
   52.93 +	IMPORT_C void StartChangeNotification(MCalChangeCallBack* aCallBack, MCalChangeCallBack::TChangeEntryType aChangeEntryType,	TBool aIncludeUndatedTodos,	TTime aFilterStartTime,	TTime aFilterEndTime);
   52.94 +	
   52.95 +	IMPORT_C void __dbgClearTzClientCacheL(TBool aRestartCaching);
   52.96 +
   52.97 +	IMPORT_C TInt _DebugRequestAllocatedHeapSizeL();
   52.98 +	
   52.99 +public:
  52.100 +	CCalSessionImpl& Impl() const;
  52.101 +	  
  52.102 +private:
  52.103 +	CCalSession();
  52.104 +	void ConstructL();
  52.105 +private:
  52.106 +	CCalSessionImpl* iImpl;
  52.107 +	};
  52.108 +	
  52.109 +#endif // __CALSESSION_H__
    53.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.2 +++ b/epoc32/include/app/caltime.h	Wed Mar 31 12:27:01 2010 +0100
    53.3 @@ -0,0 +1,68 @@
    53.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    53.5 +// All rights reserved.
    53.6 +// This component and the accompanying materials are made available
    53.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    53.8 +// which accompanies this distribution, and is available
    53.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   53.10 +//
   53.11 +// Initial Contributors:
   53.12 +// Nokia Corporation - initial contribution.
   53.13 +//
   53.14 +// Contributors:
   53.15 +//
   53.16 +// Description:
   53.17 +//
   53.18 +
   53.19 +#ifndef __CALTIME_H__
   53.20 +#define __CALTIME_H__
   53.21 +
   53.22 +#include <e32base.h>
   53.23 +
   53.24 +/** Represents a date/time, as used in the Calendar API.
   53.25 +
   53.26 +This stores a single TTime, which may be set in UTC or local or floating local 
   53.27 +time, and can be retrieved in either UTC or system local time.
   53.28 +
   53.29 +There are references to null time throughout the Interim API - this means Time::NullTTime().
   53.30 +
   53.31 +@publishedAll
   53.32 +@released
   53.33 +*/
   53.34 +NONSHARABLE_CLASS(TCalTime)
   53.35 +	{
   53.36 +public:
   53.37 +
   53.38 +	/** The time mode for a calendar time
   53.39 +	@publishedAll
   53.40 +	@released
   53.41 +	*/
   53.42 +	enum TTimeMode
   53.43 +		{
   53.44 +		/** Floating time. */
   53.45 +		EFloating,
   53.46 +		/** Fixed time in UTC format. */
   53.47 +		EFixedUtc,
   53.48 +		/** Fixed time in local time with time zone reference format. */
   53.49 +		EFixedTimeZone
   53.50 +		};
   53.51 +
   53.52 +public:
   53.53 +	IMPORT_C TCalTime();
   53.54 +	
   53.55 +	IMPORT_C void SetTimeLocalFloatingL(const TTime& aLocalTime);
   53.56 +	IMPORT_C void SetTimeUtcL(const TTime& aUtcTime);
   53.57 +	IMPORT_C void SetTimeLocalL(const TTime& aLocalTime);
   53.58 +	IMPORT_C TTimeMode TimeMode() const; 
   53.59 +	IMPORT_C TTime TimeUtcL() const;
   53.60 +	IMPORT_C TTime TimeLocalL() const;
   53.61 +	
   53.62 +	IMPORT_C static TTime MaxTime();
   53.63 +	IMPORT_C static TTime MinTime();
   53.64 +private:
   53.65 +	TTime	iTime;
   53.66 +	TUint8	iTimeMode;  
   53.67 +	TInt8	iReserved1;
   53.68 +	TInt16 	iReserved2;
   53.69 +	};
   53.70 +	
   53.71 +#endif // __CALTIME_H__
    54.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.2 +++ b/epoc32/include/app/caluser.h	Wed Mar 31 12:27:01 2010 +0100
    54.3 @@ -0,0 +1,163 @@
    54.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    54.5 +// All rights reserved.
    54.6 +// This component and the accompanying materials are made available
    54.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    54.8 +// which accompanies this distribution, and is available
    54.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   54.10 +//
   54.11 +// Initial Contributors:
   54.12 +// Nokia Corporation - initial contribution.
   54.13 +//
   54.14 +// Contributors:
   54.15 +//
   54.16 +// Description:
   54.17 +//
   54.18 +
   54.19 +#ifndef __CALUSER_H__
   54.20 +#define __CALUSER_H__
   54.21 +
   54.22 +#include <e32base.h>
   54.23 +
   54.24 +class CCalUserImpl;
   54.25 +
   54.26 +/** Class representing a calendar user.
   54.27 +
   54.28 +A calendar user is the base class representation of a meeting participant.
   54.29 +It contains attributes common to all calendar users.
   54.30 +
   54.31 +Contains methods to store and retrieve a user's ADDRESS, SENT-BY and CN
   54.32 +fields.
   54.33 +
   54.34 +@publishedAll
   54.35 +@released
   54.36 +*/
   54.37 +NONSHARABLE_CLASS(CCalUser) : public CBase
   54.38 +	{
   54.39 +public:
   54.40 +	IMPORT_C static CCalUser* NewL(const TDesC& aAddress);
   54.41 +	IMPORT_C static CCalUser* NewL(const TDesC& aAddress, const TDesC& aSentBy);
   54.42 +	IMPORT_C ~CCalUser();
   54.43 +
   54.44 +	IMPORT_C void SetCommonNameL(const TDesC& aCommonName);
   54.45 +	IMPORT_C const TDesC& Address() const;
   54.46 +	IMPORT_C const TDesC& CommonName() const;
   54.47 +	IMPORT_C const TDesC& SentBy() const;
   54.48 +public:
   54.49 +	static CCalUser* NewL(CCalUserImpl* aImpl);
   54.50 +
   54.51 +	CCalUserImpl* Impl() const;
   54.52 +protected:
   54.53 +	CCalUser();
   54.54 +	CCalUser(CCalUserImpl* aImpl);
   54.55 +	void ConstructL(const TDesC& aAddress);
   54.56 +	void ConstructL(const TDesC& aAddress, const TDesC& aSentBy);
   54.57 +protected:
   54.58 +/** Handle to CCalUser implementation */
   54.59 +	CCalUserImpl*	iImpl;
   54.60 +	};
   54.61 +
   54.62 +
   54.63 +/** Class representing an attendee of an event.
   54.64 +
   54.65 +CCalAttendee is a specialization of the CCalUser class.
   54.66 +
   54.67 +This class contains extra methods to store and retrieve an Attendee's
   54.68 +ROLE, PART-STAT, and RSVP fields.
   54.69 +
   54.70 +@publishedAll
   54.71 +@released
   54.72 +*/
   54.73 +NONSHARABLE_CLASS(CCalAttendee) : public CCalUser
   54.74 +	{
   54.75 +public:
   54.76 +	/** Attendee's role. 
   54.77 +	@publishedAll
   54.78 +	@released
   54.79 +	*/
   54.80 +	enum TCalRole
   54.81 +		{
   54.82 +		/** A required participant of the event. */
   54.83 +		EReqParticipant=0,
   54.84 +		/** An optional participant of the event. */
   54.85 +		EOptParticipant,
   54.86 +		/** A non-participant of the event. */
   54.87 +		ENonParticipant,
   54.88 +		/** This participant will chair the event. */
   54.89 +		EChair,
   54.90 +		
   54.91 +		/** Indicates an attendee at the event or todo. This value is supported in vCalendar only. */
   54.92 +		EVCalAttendee,
   54.93 +		/** Indicates a delegate of another attendee. This value is supported in vCalendar only. */
   54.94 +		EVCalDelegate,
   54.95 +		/** Indicates owner of the event or todo (not the same as phone owner). This value is supported in vCalendar only. */
   54.96 +		EVCalOwner,
   54.97 +		};
   54.98 +
   54.99 +	/** Attendee's status
  54.100 +	@publishedAll
  54.101 +	@released
  54.102 +	*/
  54.103 +	enum TCalStatus
  54.104 +		{
  54.105 +		/** Action is required by attendee. */
  54.106 +		ENeedsAction=0,
  54.107 +		/** Attendee has accepted request. */
  54.108 +		EAccepted,
  54.109 +		/** Attendee has tentatively accepted the request. */
  54.110 +		ETentative,
  54.111 +		/** Attendee's presence is confirmed. */
  54.112 +		EConfirmed,
  54.113 +		/** Attendee has declined request. */
  54.114 +		EDeclined,
  54.115 +		/** The required action has been completed by attendee. */
  54.116 +		ECompleted,
  54.117 +		/** Attendee has delegated the request to another person. */
  54.118 +		EDelegated,
  54.119 +		/**	A to-do action in the process of being completed. */
  54.120 +		EInProcess,
  54.121 +		
  54.122 +		/** An entry has been sent. This value is supported in vCalendar only. */
  54.123 +		EVCalSent,
  54.124 +		/** An entry has been received. This value is supported in vCalendar only. */
  54.125 +		EVCalXReceived,
  54.126 +		};
  54.127 +	
  54.128 +	/** Attendee's expected participation response.
  54.129 +	This property is supported in vCalendar only. It is not a property of iCalendar.
  54.130 +	@publishedAll
  54.131 +	@released
  54.132 +	*/
  54.133 +	enum TVCalExpect
  54.134 +		{
  54.135 +		/** Indicates request is for your information. */
  54.136 +		EVCalFyi,
  54.137 +		/** Indicates presence is definitely required. */
  54.138 +		EVCalRequire,
  54.139 +		/** Indicates presence is being requested. */
  54.140 +		EVCalRequest, 
  54.141 +		/** Indicates an immediate response needed. */
  54.142 +		EVCalImmediate 
  54.143 +		};
  54.144 +
  54.145 +public:
  54.146 +	IMPORT_C static CCalAttendee* NewL(const TDesC& aAddress);
  54.147 +	IMPORT_C static CCalAttendee* NewL(const TDesC& aAddress, const TDesC& aSentBy);
  54.148 +
  54.149 +	IMPORT_C void SetRoleL(TCalRole aRole);
  54.150 +	IMPORT_C void SetStatusL(TCalStatus aStatus);
  54.151 +	IMPORT_C void SetResponseRequested(TBool aRsvp);
  54.152 +	IMPORT_C void SetVCalExpect(TVCalExpect aExpected);
  54.153 +
  54.154 +	IMPORT_C TCalRole RoleL() const;
  54.155 +	IMPORT_C TCalStatus StatusL() const;
  54.156 +	IMPORT_C TBool ResponseRequested() const;
  54.157 +	IMPORT_C TVCalExpect VCalExpect() const;
  54.158 +public:
  54.159 +	static CCalAttendee* NewL(CCalUserImpl* aImpl);
  54.160 +private:
  54.161 +	CCalAttendee();
  54.162 +	CCalAttendee(CCalUserImpl* aImpl);
  54.163 +	};
  54.164 +
  54.165 +
  54.166 +#endif // __CALUSER_H__
    55.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.2 +++ b/epoc32/include/app/cemailaccounts.h	Wed Mar 31 12:27:01 2010 +0100
    55.3 @@ -0,0 +1,628 @@
    55.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    55.5 +// All rights reserved.
    55.6 +// This component and the accompanying materials are made available
    55.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    55.8 +// which accompanies this distribution, and is available
    55.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   55.10 +//
   55.11 +// Initial Contributors:
   55.12 +// Nokia Corporation - initial contribution.
   55.13 +//
   55.14 +// Contributors:
   55.15 +//
   55.16 +// Description:
   55.17 +//
   55.18 +
   55.19 +#ifndef __CEMAILACCOUNTS_H__
   55.20 +#define __CEMAILACCOUNTS_H__
   55.21 +
   55.22 +
   55.23 +#include <e32std.h>
   55.24 +#include <e32base.h>
   55.25 +#include <msvapi.h>
   55.26 +
   55.27 +
   55.28 +class CImIAPPreferences;
   55.29 +class CImPop3Settings;
   55.30 +class CImImap4Settings;
   55.31 +class CImSmtpSettings;
   55.32 +class CRepository;
   55.33 +class CImapSyncDownloadRules;
   55.34 +class CImapTransportBufferSizes;
   55.35 +class CImSmtpMobilitySettings;
   55.36 +
   55.37 +/**
   55.38 +Maximum size of email account name
   55.39 +
   55.40 +@publishedAll
   55.41 +@released
   55.42 +*/
   55.43 +const TInt KEmailAccountNameSize = 256;
   55.44 +
   55.45 +/**
   55.46 +Maximum number of entries allowed in the IAP list for a SMTP mobility account
   55.47 +
   55.48 +@publishedPartner
   55.49 +@released
   55.50 +*/
   55.51 +const TInt KMaxSmtpMobilityAccountIAPListEntries = 32;
   55.52 +
   55.53 +/**
   55.54 +Identifier number for a POP email account.
   55.55 +
   55.56 +@publishedAll
   55.57 +@released
   55.58 +@see TPopAccount
   55.59 +*/
   55.60 +typedef TInt TPopAccountId;
   55.61 +
   55.62 +/**
   55.63 +Identifier number for an IMAP email account.
   55.64 +
   55.65 +@publishedAll
   55.66 +@released
   55.67 +@see TImapAccount
   55.68 +*/
   55.69 +typedef TInt TImapAccountId;
   55.70 +
   55.71 +/**
   55.72 +Identifier number for an SMTP email account.
   55.73 +
   55.74 +@publishedAll
   55.75 +@released
   55.76 +@see TSmtpAccount
   55.77 +*/
   55.78 +typedef TInt TSmtpAccountId;
   55.79 +
   55.80 +/**
   55.81 +Identifier number for an SMTP moblity account.
   55.82 +
   55.83 +@publishedPartner
   55.84 +@released
   55.85 +*/
   55.86 +typedef TInt TSmtpMobilityAccountId;
   55.87 +
   55.88 +/**
   55.89 +Array of IAP values
   55.90 +
   55.91 +@publishedPartner
   55.92 +@released
   55.93 +*/
   55.94 +typedef RArray<TUint32> RArrayIAP;
   55.95 +
   55.96 +/**
   55.97 +Null or undefined SMTP account identifier
   55.98 +
   55.99 +@publishedPartner
  55.100 +@released
  55.101 +*/
  55.102 +const TSmtpAccountId KNullSmtpAccountId = 0;
  55.103 +
  55.104 +/**
  55.105 +POP account ID.
  55.106 +
  55.107 +Objects of this type identify POP email accounts. 
  55.108 +They are obtained when a POP account is created 
  55.109 +(CEmailAccounts::CreatePopAccountL()), or by 
  55.110 +querying for what POP accounts exist 
  55.111 +(CEmailAccounts::GetPopAccountL() and CEmailAccounts::GetPopAccountsL()).
  55.112 +
  55.113 +The object is then used as a handle to the account when getting
  55.114 +the account settings, using CEmailAccounts::LoadPopSettingsL() and 
  55.115 +CEmailAccounts::LoadPopIapSettingsL().
  55.116 +
  55.117 +@publishedAll
  55.118 +@released
  55.119 +*/
  55.120 +class TPopAccount
  55.121 +	{
  55.122 +public:
  55.123 +	/** POP account identifier number. 
  55.124 +	
  55.125 +	Each POP account stored on the phone has a different
  55.126 +	identifier number to distinguish it from other accounts.
  55.127 +	*/
  55.128 +	TPopAccountId iPopAccountId;
  55.129 +
  55.130 +	/** POP account name. */
  55.131 +	TBuf<KEmailAccountNameSize> iPopAccountName;
  55.132 +
  55.133 +	/** Entry ID of the POP service for this account. */
  55.134 +	TMsvId iPopService;
  55.135 +
  55.136 +	/** Entry ID of the related SMTP service for this account. 
  55.137 +		
  55.138 +	This is set if an SMTP service has been created, using 
  55.139 +	CEmailAccounts::CreateSmtpAccountL(), that specifies that 
  55.140 +	it is related to this account. An SMTP service (which provides
  55.141 +	email sending functionality) is used in conjunction with 
  55.142 +	a POP or IMAP service (which provide email retrieval).
  55.143 +	*/
  55.144 +	TMsvId iSmtpService;
  55.145 +	};
  55.146 +
  55.147 +/**
  55.148 +IMAP account ID.
  55.149 +
  55.150 +Objects of this type identify IMAP email accounts. 
  55.151 +They are obtained when a IMAP account is created 
  55.152 +(CEmailAccounts::CreateImapAccountL()), or by 
  55.153 +querying for what IMAP accounts exist 
  55.154 +(CEmailAccounts::GetImapAccountL() and CEmailAccounts::GetImapAccountsL()).
  55.155 +
  55.156 +The object is then used as a handle to the account when getting
  55.157 +the account settings, using CEmailAccounts::LoadImapSettingsL() and 
  55.158 +CEmailAccounts::LoadImapIapSettingsL().
  55.159 +
  55.160 +@publishedAll
  55.161 +@released
  55.162 +*/
  55.163 +class TImapAccount
  55.164 +	{
  55.165 +public:
  55.166 +	/** IMAP account identifier number.
  55.167 +	
  55.168 +	Each IMAP account stored on the phone has a different
  55.169 +	identifier number to distinguish it from other accounts.
  55.170 +	*/
  55.171 +	TImapAccountId iImapAccountId;
  55.172 +
  55.173 +	/** IMAP account name */
  55.174 +	TBuf<KEmailAccountNameSize> iImapAccountName;
  55.175 +
  55.176 +	/** Entry ID of the IMAP service for this account. */
  55.177 +	TMsvId iImapService;
  55.178 +
  55.179 +	/** Entry ID of the related SMTP service for this account. 
  55.180 +		
  55.181 +	This is set if an SMTP service has been created, using 
  55.182 +	CEmailAccounts::CreateSmtpAccountL(), that specifies that 
  55.183 +	it is related to this account. An SMTP service (which provides
  55.184 +	email sending functionality) is used in conjunction with 
  55.185 +	a POP or IMAP service (which provide email retrieval).
  55.186 +	*/
  55.187 +	TMsvId iSmtpService;
  55.188 +	};
  55.189 +
  55.190 +/**
  55.191 +SMTP account ID.
  55.192 +
  55.193 +Objects of this type identify SMTP email accounts. 
  55.194 +They are obtained when a SMTP account is created 
  55.195 +(CEmailAccounts::CreateSmtpAccountL()), or by 
  55.196 +querying for what SMTP accounts exist 
  55.197 +(CEmailAccounts::GetSmtpAccountL() and CEmailAccounts::GetISmtpAccountsL()).
  55.198 +
  55.199 +The object is then used as a handle to the account when getting
  55.200 +the account settings, using CEmailAccounts::LoadSmtpSettingsL() and 
  55.201 +CEmailAccounts::LoadSmtpIapSettingsL().
  55.202 +
  55.203 +@publishedAll
  55.204 +@released
  55.205 +*/
  55.206 +class TSmtpAccount
  55.207 +	{
  55.208 +public:
  55.209 +	/** SMTP account identifier number. */
  55.210 +	TSmtpAccountId iSmtpAccountId;
  55.211 +
  55.212 +	/** SMTP account name */
  55.213 +	TBuf<KEmailAccountNameSize> iSmtpAccountName;
  55.214 +
  55.215 +	/** Entry ID of the SMTP service for this account. */
  55.216 +	TMsvId iSmtpService;
  55.217 +
  55.218 +	/** Entry ID of the related POP or IMAP service for this account. 
  55.219 +		
  55.220 +	An SMTP service (which provides	email sending functionality) is 
  55.221 +	used in conjunction with a POP or IMAP service (which provide email retrieval).
  55.222 +	*/
  55.223 +	TMsvId iRelatedService;
  55.224 +	};
  55.225 +
  55.226 +/**
  55.227 +@publishedPartner
  55.228 +@released
  55.229 +*/
  55.230 +class TSmtpMobilityAccount
  55.231 +	{
  55.232 +public:
  55.233 +	/** SMTP mobility account identifier */
  55.234 +	TSmtpMobilityAccountId iAccountId;
  55.235 +
  55.236 +	/** SMTP mobility account name */
  55.237 +	TBuf<KEmailAccountNameSize> iName;
  55.238 +
  55.239 +	/** Parent SMTP account identifier */
  55.240 +	TSmtpAccountId iParentSmtpAccountId;
  55.241 +
  55.242 +	/** Linked SMTP account identifier. Identifies the SMTP account whose
  55.243 +	    settings will be used by this mobility account. If the mobility account
  55.244 +	    is using its own settings, this will be set to KNullSmtpAccountId. */
  55.245 +	TSmtpAccountId iLinkedSmtpAccountId;
  55.246 +	};
  55.247 +
  55.248 +/**
  55.249 +Creates, loads, saves and deletes email (IMAP, POP, and SMTP) accounts. 
  55.250 +
  55.251 +An account encapsulates:
  55.252 +
  55.253 +- Settings for a messaging service. There is a different type of 
  55.254 +  settings class for each of the email protocols (CImPop3Settings, 
  55.255 +  CImImap4Settings, CImSmtpSettings).
  55.256 +- IAP (Internet account) settings for accessing the service.
  55.257 +
  55.258 +The class has a family of functions for each protocol to create, get,
  55.259 +and delete accounts:
  55.260 +
  55.261 +- Create\<protocol\>AccountL 
  55.262 +- Get\<protocol\>AccountL 
  55.263 +- Get\<protocol\>AccountsL 
  55.264 +- Delete\<protocol\>AccountL 
  55.265 +
  55.266 +where \<protocol\> is either POP, IMAP, or SMTP. 
  55.267 +The Create and Get functions don't directly return settings 
  55.268 +objects, but only account identifiers. 
  55.269 +
  55.270 +Account identifiers are passed to the following functions 
  55.271 +to save and load the service and IAP settings for that account:
  55.272 +
  55.273 +- Load\<protocol\>SettingsL
  55.274 +- Save\<protocol\>SettingsL 
  55.275 +- Load\<protocol\>IapSettingsL 
  55.276 +- Save\<protocol\>IapSettingsL 
  55.277 +
  55.278 +For SMTP only, there is a concept of a default account (as a client
  55.279 +program may want to send an email, and not care which account is used.)
  55.280 +SetDefaultSmtpAccountL(), DefaultSmtpAccountL() and DeleteDefaultSmtpAccountL() 
  55.281 +are used to handle this.
  55.282 +
  55.283 +Note that an account is associated with a service entry in the message store,
  55.284 +but account information itself is stored in the central repository.
  55.285 +
  55.286 +@publishedAll
  55.287 +@released
  55.288 +*/
  55.289 +class CEmailAccounts : public CBase, public MMsvSessionObserver
  55.290 +	{
  55.291 +public:
  55.292 +
  55.293 +	IMPORT_C static CEmailAccounts* NewL();
  55.294 +	IMPORT_C static CEmailAccounts* NewLC();
  55.295 +	IMPORT_C virtual ~CEmailAccounts();
  55.296 +
  55.297 +	IMPORT_C TPopAccount CreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings,
  55.298 +		const CImIAPPreferences& aPopIAP, TBool aReadOnly);
  55.299 +
  55.300 +	IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
  55.301 +		const CImIAPPreferences& aImapIAP, TBool aReadOnly);
  55.302 +
  55.303 +	IMPORT_C TSmtpAccount CreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings,
  55.304 +		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
  55.305 +
  55.306 +	IMPORT_C TSmtpAccount CreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings,
  55.307 +		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
  55.308 +
  55.309 +	IMPORT_C TSmtpAccount CreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, 
  55.310 +		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
  55.311 +
  55.312 +	IMPORT_C void GetPopAccountsL(RArray<TPopAccount>& aAccounts);
  55.313 +	IMPORT_C void GetPopAccountL(TMsvId aServiceId, TPopAccount& aAccount); 
  55.314 +	IMPORT_C void DeletePopAccountL(const TPopAccount& aAccount);
  55.315 +
  55.316 +	IMPORT_C void GetImapAccountsL(RArray<TImapAccount>& aAccounts);
  55.317 +	IMPORT_C void GetImapAccountL(TMsvId aServiceId, TImapAccount& aAccount); 
  55.318 +	IMPORT_C void DeleteImapAccountL(const TImapAccount& aAccount);
  55.319 +
  55.320 +	IMPORT_C void GetSmtpAccountsL(RArray<TSmtpAccount>& aAccounts);
  55.321 +	IMPORT_C void GetSmtpAccountL(TMsvId aServiceId, TSmtpAccount& aAccount); 
  55.322 +	IMPORT_C void DeleteSmtpAccountL(const TSmtpAccount& aAccount);
  55.323 +	IMPORT_C void DeleteDefaultSmtpAccountL();
  55.324 +
  55.325 +	IMPORT_C void PopulateDefaultPopSettingsL(CImPop3Settings& aPopSettings,
  55.326 +	CImIAPPreferences& aPopIap);
  55.327 +
  55.328 +	IMPORT_C void PopulateDefaultImapSettingsL(CImImap4Settings& aImapSettings,
  55.329 +	CImIAPPreferences& aImapIap);
  55.330 +
  55.331 +	IMPORT_C void PopulateDefaultSmtpSettingsL(CImSmtpSettings& aSmtpSettings,
  55.332 +	CImIAPPreferences& aSmtpIap);
  55.333 +
  55.334 +	IMPORT_C TInt DefaultSmtpAccountL(TSmtpAccount& aAccount);
  55.335 +	IMPORT_C void SetDefaultSmtpAccountL(const TSmtpAccount& aAccount);
  55.336 +
  55.337 +	IMPORT_C void LoadPopSettingsL(const TPopAccount& aAccount, CImPop3Settings& aPopSettings);
  55.338 +	IMPORT_C void LoadPopIapSettingsL(const TPopAccount& aAccount, CImIAPPreferences& aIAP);
  55.339 +
  55.340 +	IMPORT_C void LoadImapSettingsL(const TImapAccount& aAccount, CImImap4Settings& aImapSettings);
  55.341 +	IMPORT_C void LoadImapIapSettingsL(const TImapAccount& aAccount, CImIAPPreferences& aIAP);
  55.342 +
  55.343 +	IMPORT_C void LoadSmtpSettingsL(const TSmtpAccount& aAccount, CImSmtpSettings& aSmtpSettings);
  55.344 +	IMPORT_C void LoadSmtpIapSettingsL(const TSmtpAccount& aAccount, CImIAPPreferences& aIAP);
  55.345 +
  55.346 +	IMPORT_C void SavePopSettingsL(const TPopAccount& aAccount, const CImPop3Settings& aPopSettings);
  55.347 +	IMPORT_C void SavePopIapSettingsL(const TPopAccount& aAccount, const CImIAPPreferences& aIAP);
  55.348 +
  55.349 +	IMPORT_C void SaveImapSettingsL(const TImapAccount& aAccount, const CImImap4Settings& aImapSettings);
  55.350 +
  55.351 +	IMPORT_C void SaveImapIapSettingsL(const TImapAccount& aAccount, const CImIAPPreferences& aIAP);
  55.352 +
  55.353 +	IMPORT_C void SaveSmtpSettingsL(const TSmtpAccount& aAccount, const CImSmtpSettings& aSmtpSettings);
  55.354 +	IMPORT_C void SaveSmtpIapSettingsL(const TSmtpAccount& aAccount, const CImIAPPreferences& aIAP);
  55.355 +
  55.356 +	IMPORT_C TBool IsAccountReadOnlyL(const TPopAccount& aAccount);
  55.357 +	IMPORT_C TBool IsAccountReadOnlyL(const TImapAccount& aAccount);
  55.358 +	IMPORT_C TBool IsAccountReadOnlyL(const TSmtpAccount& aAccount);
  55.359 +
  55.360 +	// Published partner routines
  55.361 +	IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName,
  55.362 +		const CImImap4Settings& aImapSettings, const CImIAPPreferences& aImapIAP,
  55.363 +		const CImapSyncDownloadRules& aSyncDownloadRules, TBool aReadOnly);
  55.364 +	IMPORT_C void LoadImapSyncDownloadRulesL(const TImapAccount& aAccount, CImapSyncDownloadRules& aRules);
  55.365 +	IMPORT_C void LoadImapTransportBufferSizesL(CImapTransportBufferSizes& aBufferSizes);
  55.366 +	IMPORT_C void SaveImapSyncDownloadRulesL(const TImapAccount& aAccount, const CImapSyncDownloadRules& aRules);
  55.367 +	IMPORT_C void SaveImapTransportBufferSizesL(const CImapTransportBufferSizes& aBufferSizes);
  55.368 +	IMPORT_C void DeleteImapTransportBufferSizesL();
  55.369 +
  55.370 +	IMPORT_C void GetSmtpAccountL(TSmtpAccountId aAccountId, TSmtpAccount& aAccount);
  55.371 +
  55.372 +	IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const CImSmtpMobilitySettings& aSettings, TBool aReadOnly);
  55.373 +	IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const TSmtpAccount& aLinkedSmtpAccount, TBool aReadOnly);
  55.374 +	IMPORT_C void GetSmtpMobilityAccountsL(const TSmtpAccount& aSmtpAccount, RArray<TSmtpMobilityAccount>& aAccounts);
  55.375 +	IMPORT_C void DeleteSmtpMobilityAccountL(const TSmtpMobilityAccount& aAccount);
  55.376 +
  55.377 +	IMPORT_C void PopulateDefaultSmtpMobilitySettingsL(CImSmtpMobilitySettings& aSettings);
  55.378 +	IMPORT_C void LoadSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, CImSmtpMobilitySettings& aSettings);
  55.379 +	IMPORT_C void SaveSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, const CImSmtpMobilitySettings& aSettings);
  55.380 +
  55.381 +	IMPORT_C void LoadSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, RArrayIAP& aIapList);
  55.382 +	IMPORT_C void SaveSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, const RArrayIAP& aIapList);
  55.383 +
  55.384 +	IMPORT_C TBool IsAccountReadOnlyL(const TSmtpMobilityAccount& aAccount);
  55.385 +
  55.386 +	// Internal routines
  55.387 +	IMPORT_C void GetSmtpMobilityAccountsL(RArray<TSmtpMobilityAccount>& aAccounts);
  55.388 +	IMPORT_C TBool LoadSmtpMobilitySettingsL(TSmtpAccountId& aSmtpAccountId, TUint32 aIap, CImSmtpMobilitySettings& aSettings);
  55.389 +
  55.390 +private:
  55.391 +	CEmailAccounts();
  55.392 +	void HandleSessionEventL(TMsvSessionEvent , TAny* , TAny* , TAny* );
  55.393 +	CMsvSession& SessionL();
  55.394 +	CRepository& PopRepositoryL();
  55.395 +	CRepository& ImapRepositoryL();
  55.396 +	CRepository& SmtpRepositoryL();
  55.397 +
  55.398 +	TMsvId CreateEmailServiceL(CMsvEntry& aMsvEntry, const TDesC& aAccountName, TUid aMTMType, TBool aVisible);
  55.399 +	void SetRelatedIdL(CMsvEntry& aMsvEntry, TMsvId aId, TMsvId aRelatedId);
  55.400 +	void SetEntryDetailsL(TMsvId aId, const TDesC& aAccountName);
  55.401 +	void UnSetInPreparationFlagsL(CMsvEntry& aMsvEntry, TMsvId aId, TInt aAccountId);
  55.402 +	void DeleteServiceEntryL(CMsvEntry& aMsvEntry, TMsvId aId);
  55.403 +
  55.404 +	TUint GetNextEmptyAccountSlotL(CRepository& aRepository);
  55.405 +	TUint32 FindEmailAccountL(TMsvId aService, CRepository& aRepository);
  55.406 +
  55.407 +	void LoadIAPPrefSettingsL(TUint32 aAccountId, CImIAPPreferences& aIAP, CRepository& aRepository);
  55.408 +	void DoLoadPopSettingsL(TUint32 aAccountId, CImPop3Settings& aPopSettings);
  55.409 +	void DoLoadImapSettingsL(TUint32 aAccountId, CImImap4Settings& aImapSettings);
  55.410 +	void DoLoadSmtpSettingsL(TUint32 aAccountId, CImSmtpSettings& aSmtpSettings);
  55.411 +
  55.412 +	void SaveIAPPrefSettingsL(TUint32 aAccountId, const CImIAPPreferences& aIAP, CRepository& aRepository);
  55.413 +	void DoSavePopSettingsL(TUint32 aAccountId, const CImPop3Settings& aPopSettings);
  55.414 +	void DoSaveSmtpSettingsL(TUint32 aAccountId, const CImSmtpSettings& aSmtpSettings);
  55.415 +	void DoSaveImapSettingsL(TUint32 aAccountId, const CImImap4Settings& aImapSettings);	
  55.416 +	void DoSaveImapSyncDownloadRulesL(TUint32 aAccountId, const CImapSyncDownloadRules& aRules, CRepository& aRepository);
  55.417 +
  55.418 +	TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
  55.419 +		const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TBool aReadOnly);
  55.420 +
  55.421 +	TUint32 DoCreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings, 
  55.422 +		const CImIAPPreferences& aPopIAP, TMsvId aPopService, TMsvId aRelatedService, TBool aReadOnly);
  55.423 +	TUint32 DoCreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
  55.424 +		const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TMsvId aImapService,
  55.425 +		TMsvId aRelatedService, TBool aReadOnly);
  55.426 +	TUint32 DoCreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings, 
  55.427 +		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aPopAccountId, TBool aReadOnly);
  55.428 +	TUint32 DoCreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings, 
  55.429 +		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aImapAccountId, TBool aReadOnly);
  55.430 +	TUint32 DoCreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, 
  55.431 +		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, TMsvId aRelatedService, TBool aReadOnly);	
  55.432 +
  55.433 +	void DeleteIAPPrefSettingsL(TUint32 aAccountId, CRepository& aRepository);
  55.434 +	void DeletePopSettings(TUint32 aAccountId, CRepository& aRepository);
  55.435 +	void DeleteSmtpSettings(TUint32 aAccountId, CRepository& aRepository);
  55.436 +	void DeleteImapSettings(TUint32 aAccountId, CRepository& aRepository);
  55.437 +	void DeleteImapSyncDownloadRulesL(TUint32 aAccountId, CRepository& aRepository);
  55.438 +
  55.439 +	void GetEmailServicesL(CMsvEntrySelection& aServices, TUid aMTMType, CMsvEntry& aMsvEntry);
  55.440 +
  55.441 +	TBool IsAsciiPrintable(const TDesC16& aText);
  55.442 +	TBool IsAsciiPrintable(const TDesC8& aText);
  55.443 +	TBool IsUnicodePrintable(const TDesC16& aText);
  55.444 +
  55.445 +	TSmtpMobilityAccount DoCreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const CImSmtpMobilitySettings& aSettings, const TSmtpAccount& aSmtpAccount, TSmtpAccountId aLinkedSmtpAccountId, TBool aReadOnly);
  55.446 +	void AddMobilityAccountToSmtpAccountL(const TSmtpAccount& aSmtpAccount, const RArrayIAP& aIapList, TUint32 aMobAccRepId, CRepository& aRepository);
  55.447 +	void AddLinkToMobilityAccountL(TSmtpAccountId aLinkedSmtpAccountId, TUint32 aMobAccRepId, CRepository& aRepository);
  55.448 +	TInt FindIapListEntryInSmtpMobilityAccountListL(const RArrayIAP& aIapList, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries, TInt aIgnorePos);
  55.449 +	TInt FindAccountIdInSmtpMobilityAccountListL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries);
  55.450 +	void GetSmtpAccountInfoForMobilityAccountL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32& aSmtpAccRepId, TInt& aPos);
  55.451 +	void DeleteAllOwnedMobilityAccountsL(TUint32 aSmtpAccRepId, CRepository& aRepository);
  55.452 +	void DeleteAllLinkedMobilityAccountsL(TUint32 aLinkedSmtpAccRepId, CRepository& aRepository);
  55.453 +	void DeleteSmtpMobilityAccountListEntryL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId);
  55.454 +	void DeleteSmtpMobilityAccountFromLinkedSmtpAccountL(TUint32 aMobAccRepId, CRepository& aRepository);
  55.455 +	TBool IsSmtpTypeAccountReadOnlyL(TUint32 aAccRepId);
  55.456 +	TBool IsSmtpMobilityAccount(CRepository& aRepository, TUint32 aAccRepId);
  55.457 +
  55.458 +private:
  55.459 +	enum TEmailSettingTypes
  55.460 +		{
  55.461 +		// Partial CenRep Id for service settings
  55.462 +		EServiceSettingType 			= 0x00000000,
  55.463 +		// Partial CenRep Id for IAP Prefs
  55.464 +		EIAPPrefSettingType				= 0x00010000,
  55.465 +		// CenRep mask for email accounts
  55.466 +		EAccountMask 					= 0x800FFFFF			
  55.467 +		};
  55.468 +	
  55.469 +	enum TPOPServiceSettingsCenRepId
  55.470 +		{
  55.471 +		EPOPServiceId					= 0x00000000,
  55.472 +		EPOPAccountNameId				= 0x00000001,
  55.473 +		EPOPRelatedSMTPServiceId		= 0x00000002,
  55.474 +		EPOPSettingsVersionId			= 0x00000003, 
  55.475 +		EPOPServerAddressId				= 0x00000004,
  55.476 +		EPOPPortNumberId			   	= 0x00000005,     	
  55.477 +		EPOPFlagsId						= 0x00000006,
  55.478 +		EPOPLoginNameId					= 0x00000007,
  55.479 +		EPOPPasswordId					= 0x00000008,
  55.480 +		EPOPMaxEmailSizeId				= 0x00000009,
  55.481 +		EPOPGetEmailOptionsId			= 0x0000000A,
  55.482 +		EPOPInboxSynchronisationLimitId	= 0x0000000B,
  55.483 +		EPOPPopulationLimitId			= 0x0000000C,
  55.484 +		EPOPReadOnlyAccountId			= 0x0000000D,
  55.485 +		EPOPTlsSslDomainId				= 0x0000000F
  55.486 +		};
  55.487 +
  55.488 +	enum TIMAPServiceSettingsCenRepId
  55.489 +		{
  55.490 +		EIMAPServiceId					= 0x00000000,
  55.491 +		EIMAPAccountNameId				= 0x00000001,
  55.492 +		EIMAPRelatedSMTPServiceId		= 0x00000002,
  55.493 +		EIMAPSettingsVersionId			= 0x00000003, 
  55.494 +		EIMAPServerAddressId			= 0x00000004,
  55.495 +		EIMAPPortNumberId			   	= 0x00000005,     	
  55.496 +		EIMAPFlagsId					= 0x00000006,
  55.497 +		EIMAPLoginNameId				= 0x00000007,
  55.498 +		EIMAPPasswordId					= 0x00000008,
  55.499 +		EIMAPFolderPathId				= 0x00000009,
  55.500 +		EIMAPPathSeparatorId			= 0x0000000A,
  55.501 +		EIMAPSynchronisationStrategyId	= 0x0000000B,
  55.502 +		EIMAPSubscriptionStrategyId		= 0x0000000C,
  55.503 +		EIMAPMaxEmailSizeId				= 0x0000000D,
  55.504 +		EIMAPGetMailOptionsId			= 0x0000000E,
  55.505 +		EIMAPInboxSynchronisationLimitId= 0x0000000F,
  55.506 +		EIMAPMailboxSynchronisationLimitId= 0x00000010,
  55.507 +		EIMAPTlsSslDomainId				= 0x00000012,		
  55.508 +		EIMAPSyncRateId					= 0x00000020,
  55.509 +		EIMAPFetchSizeId				= 0x00000030,
  55.510 +		EIMAPIdleTimeoutId				= 0x00000040,
  55.511 +		EPartialMailOptionsId			= 0x00000050,
  55.512 +		EBodyTextSizeLimitId			= 0x00000060,		
  55.513 +		EAttachmentSizeLimitId			= 0x00000070,
  55.514 +		EIMAPSearchStringId				= 0x00000080,
  55.515 +		EIMAPReadOnlyAccountId			= 0x00000090,
  55.516 +		// 0x00001000 - 0x00002FFF reserved for sync download rules
  55.517 +		// 0x00010000 - 0x00014FFF reserved for IAP/SNAP preferences
  55.518 +		};
  55.519 +
  55.520 +	enum TIMAPSyncDownloadRulesCenRepInfo
  55.521 +		{
  55.522 +		EIMAPSyncDownloadRulesVersionId = 0x00001000,
  55.523 +		EIMAPNumInboxSyncDownloadRulesId = 0x00001001,
  55.524 +		EIMAPNumFolderSyncDownloadRulesId = 0x00001002,
  55.525 +
  55.526 +		EIMAPInboxSyncDownloadRulesBearerTypesId = 0x00001010,
  55.527 +		EIMAPInboxSyncDownloadRulesMailOptionsId = 0x00001011,
  55.528 +		EIMAPInboxSyncDownloadRulesTotalSizeLimitId = 0x00001012,
  55.529 +		EIMAPInboxSyncDownloadRulesBodyTextSizeLimitId = 0x00001013,
  55.530 +		EIMAPInboxSyncDownloadRulesAttachmentSizeLimitId = 0x00001014,
  55.531 +		EIMAPInboxSyncDownloadRulesGetMailBodyPartsId = 0x00001015,
  55.532 +		EIMAPInboxSyncDownloadRulesMaxEmailSizeId = 0x00001016,
  55.533 +
  55.534 +		EIMAPFolderSyncDownloadRulesBearerTypesId = 0x00001030,
  55.535 +		EIMAPFolderSyncDownloadRulesMailOptionsId = 0x00001031,
  55.536 +		EIMAPFolderSyncDownloadRulesTotalSizeLimitId = 0x00001032,
  55.537 +		EIMAPFolderSyncDownloadRulesBodyTextSizeLimitId = 0x00001033,
  55.538 +		EIMAPFolderSyncDownloadRulesAttachmentSizeLimitId = 0x00001034,
  55.539 +		EIMAPFolderSyncDownloadRulesGetMailBodyPartsId = 0x00001035,
  55.540 +		EIMAPFolderSyncDownloadRulesMaxEmailSizeId = 0x00001036,
  55.541 +
  55.542 +		// Offset between sets of rules
  55.543 +		EIMAPSyncDownloadRulesOffset = 0x40
  55.544 +		};
  55.545 +
  55.546 +	enum TIAPPreferencesCenRepId
  55.547 +		{
  55.548 +		// single settings		
  55.549 +		EIAPPrefVersion 				= 0x00010000,
  55.550 +		EIAPChoicesCount 				= 0x00010001,
  55.551 +		
  55.552 +		// List of settings
  55.553 +		EIAPListIDs						= 0x00011000,
  55.554 +		EIAPListDialogPrefs				= 0x00012000,
  55.555 +		// EIAPSnapId placed here is a deviation from Design doc. Remove comment after a decision is made
  55.556 +		EIAPSnapId						= 0x00014000 // The same value is to be used in all account types
  55.557 +		};
  55.558 +
  55.559 +	enum TIMAPTransportBufferSizesCenRepInfo
  55.560 +		{
  55.561 +		EIMAPTransportBufferSizesVersionId = 0x80000100,
  55.562 +		EIMAPNumTransportBufferSizesId = 0x80000101,
  55.563 +
  55.564 +		EIMAPTransportBufferSizesBearerTypesId = 0x80000110,
  55.565 +		EIMAPTransportBufferSizesFetchRequestSizeId = 0x80000111,
  55.566 +		EIMAPTransportBufferSizesMaxOutstandingFetchResponsesId = 0x80000112,
  55.567 +	
  55.568 +		// Offset between entries
  55.569 +		EIMAPTransportBufferSizesOffset = 0x20
  55.570 +		};
  55.571 +
  55.572 +	enum TSMTPServiceSettingsCenRepId
  55.573 +		{
  55.574 +		ESMTPServiceId					= 0x00000000,
  55.575 +		ESMTPAccountNameId				= 0x00000001,		
  55.576 +		ESMTPSettingsVersionId			= 0x00000002,
  55.577 +		ESMTPServerAddressId			= 0x00000003, 
  55.578 +		ESMTPPortNumberId				= 0x00000004, 
  55.579 +		ESMTPFlagsId				   	= 0x00000005,     	
  55.580 +		ESMTPEmailAliasId				= 0x00000006, 
  55.581 +		ESMTPEmailAddressId				= 0x00000007,
  55.582 +		ESMTPReplyToAddressId			= 0x00000008,
  55.583 +		ESMTPReceiptAddressId			= 0x00000009,
  55.584 +		ESMTPBodyEncodingId				= 0x0000000A,
  55.585 +		ESMTPDefaultMsgCharSetId		= 0x0000000B,
  55.586 +		ESMTPSendCopyToSelfId			= 0x0000000C,
  55.587 +		ESMTPSendMessageOptionId		= 0x0000000D,
  55.588 +		ESMTPLoginNameId				= 0x0000000E,
  55.589 +		ESMTPPasswordId					= 0x0000000F,
  55.590 +		ESMTPRelatedServiceId			= 0x00000010,
  55.591 +		ESMTPIncludeToCcId				= 0x00000011,
  55.592 +		ESMTPReadOnlyAccountId			= 0x00000012,
  55.593 +		ESMTPParentAccountId			= 0x00000013,
  55.594 +		ESMTPTlsSslDomainId				= 0x00000014,
  55.595 +		ESMTPLinkedAccountId			= 0x00000015
  55.596 +		};
  55.597 +
  55.598 +	enum TSMTPLinkedMobilityAccountListCenRepInfo
  55.599 +		{
  55.600 +		ESMTPLinkedMobilityAccountListVersionId = 0x00015000,
  55.601 +		ESMTPLinkedMobilityAccountListNumEntriesId = 0x00015001,
  55.602 +		ESMTPLinkedMobilityAccountListEntryId = 0x00015010,
  55.603 +
  55.604 +		// Maximum number of list entries
  55.605 +		ESMTPLinkedMobilityAccountListMaxEntries = 2048
  55.606 +		};
  55.607 +
  55.608 +	enum TSMTPMobilityAccountListCenRepInfo
  55.609 +		{
  55.610 +		ESMTPMobilityAccountListVersionId = 0x00016000,
  55.611 +		ESMTPMobilityAccountListNumEntriesId = 0x00016001,
  55.612 +
  55.613 +		ESMTPMobilityAccountListAccountId = 0x00016010,
  55.614 +		ESMTPMobilityAccountListNumIapsId = 0x00016011,
  55.615 +		ESMTPMobilityAccountListIapId = 0x00016020,
  55.616 +
  55.617 +		// Offset between entries
  55.618 +		ESMTPMobilityAccountListOffset = 0x40,
  55.619 +
  55.620 +		// Maximum number of list entries
  55.621 +		ESMTPMobilityAccountMaxEntries = 32
  55.622 +		};
  55.623 +
  55.624 +private:
  55.625 +	CMsvSession* iMsvSession;
  55.626 +	CRepository* iPOPRepository;
  55.627 +	CRepository* iSMTPRepository;
  55.628 +	CRepository* iIMAPRepository;	
  55.629 +	};
  55.630 +
  55.631 +#endif // __CEMAILACCOUNTS_H__
    56.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.2 +++ b/epoc32/include/app/cimattachmentwaiter.h	Wed Mar 31 12:27:01 2010 +0100
    56.3 @@ -0,0 +1,50 @@
    56.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    56.5 +// All rights reserved.
    56.6 +// This component and the accompanying materials are made available
    56.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    56.8 +// which accompanies this distribution, and is available
    56.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   56.10 +//
   56.11 +// Initial Contributors:
   56.12 +// Nokia Corporation - initial contribution.
   56.13 +//
   56.14 +// Contributors:
   56.15 +//
   56.16 +// Description:
   56.17 +//
   56.18 +
   56.19 +#ifndef __CIMATTACHMENTWAITER_H__
   56.20 +#define __CIMATTACHMENTWAITER_H__
   56.21 +
   56.22 +#include <e32base.h>
   56.23 +
   56.24 +class CImEmailMessage;
   56.25 +
   56.26 +/**
   56.27 +An Waiter object used to wait for an attachment to be added to an email message.
   56.28 +
   56.29 +@publishedAll
   56.30 +@released
   56.31 +*/
   56.32 +class CImAttachmentWaiter : public CActive
   56.33 +	{
   56.34 +public:
   56.35 +	IMPORT_C static CImAttachmentWaiter* NewL();
   56.36 +	IMPORT_C ~CImAttachmentWaiter();
   56.37 +	IMPORT_C void StartWaitingL(TRequestStatus& aStatus, CImEmailMessage* aMailMessage, TBool aDeleteMessage = ETrue);
   56.38 +	
   56.39 +private:
   56.40 +	CImAttachmentWaiter();
   56.41 +	void Reset();
   56.42 +	
   56.43 +	// from CActive
   56.44 +	void RunL();
   56.45 +	void DoCancel();
   56.46 +	
   56.47 +private:
   56.48 +	TRequestStatus* iReportStatus;
   56.49 +	CImEmailMessage* iMailMessage;
   56.50 +	TBool iDeleteMessage;
   56.51 +	};
   56.52 +
   56.53 +#endif // __CIMATTACHMENTWAITER_H__
    57.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.2 +++ b/epoc32/include/app/cimplainbodytext.h	Wed Mar 31 12:27:01 2010 +0100
    57.3 @@ -0,0 +1,100 @@
    57.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
    57.5 +// All rights reserved.
    57.6 +// This component and the accompanying materials are made available
    57.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    57.8 +// which accompanies this distribution, and is available
    57.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   57.10 +//
   57.11 +// Initial Contributors:
   57.12 +// Nokia Corporation - initial contribution.
   57.13 +//
   57.14 +// Contributors:
   57.15 +//
   57.16 +// Description:
   57.17 +//
   57.18 +
   57.19 +#ifndef _CIMPLAINBODYTEXT_H_
   57.20 +#define _CIMPLAINBODYTEXT_H_
   57.21 +
   57.22 +class CImEmailMessage;
   57.23 +class CImStoreMessagePart;
   57.24 +class CMsgActive;
   57.25 +/**
   57.26 +This class is a wrapper over CMsvPlainBodyText class of message server.
   57.27 +The pointer to this class can be obtained by calling OpenPlainBodyTextForReadL 
   57.28 +or OpenPlainBodyTextForWriteL API of the CImEmailMessage class.
   57.29 +This can be used to store/restore a email message created by using the 
   57.30 +CImEmailOperation class.
   57.31 +
   57.32 +@see CImEmailMessage, CImEmailOperation
   57.33 +@publishedAll
   57.34 +@released
   57.35 +*/
   57.36 +
   57.37 +class CImPlainBodyText: public CMsgActive
   57.38 +	{
   57.39 +public:
   57.40 +	static CImPlainBodyText* NewL(CImEmailMessage& aEmailMessage, CMsvEntry& aMsvEntry, CImEmailMessage::TImEmailEntryType aEntryType, TInt aChunkLength, TBool aEditMode);
   57.41 +	IMPORT_C ~CImPlainBodyText();
   57.42 +	
   57.43 +	IMPORT_C void StoreChunkL(const TDesC8& aChunk, TRequestStatus& aStatus);
   57.44 +	IMPORT_C void StoreChunkL(const TDesC8& aChunk);
   57.45 +	
   57.46 +	IMPORT_C void StoreChunkL(const TDesC16& aChunk, TRequestStatus& aStatus);
   57.47 +	IMPORT_C void StoreChunkL(const TDesC16& aChunk);
   57.48 +		
   57.49 +	IMPORT_C void StoreRichTextAsPlainTextL(CRichText& aRichText);
   57.50 +	
   57.51 +	IMPORT_C void CommitL(TRequestStatus& aStatus);
   57.52 +	IMPORT_C void CommitL(TRequestStatus& aStatus, CImMimeHeader& aMimeHeader);
   57.53 +	
   57.54 +	IMPORT_C void NextChunkL(TDes8& aChunk, TRequestStatus& aStatus);
   57.55 +	IMPORT_C void NextChunkL(TDes8& aChunk);
   57.56 +	
   57.57 +	IMPORT_C void NextChunkL(TDes16& aChunk, TRequestStatus& aStatus);		
   57.58 +	IMPORT_C void NextChunkL(TDes16& aChunk);
   57.59 +	
   57.60 +	IMPORT_C void PreviousChunkL(TDes8& aChunk, TRequestStatus& aStatus);
   57.61 +	IMPORT_C void PreviousChunkL(TDes8& aChunk);
   57.62 +		
   57.63 +	IMPORT_C void PreviousChunkL(TDes16& aChunk, TRequestStatus& aStatus);
   57.64 +	IMPORT_C void PreviousChunkL(TDes16& aChunk);
   57.65 +	
   57.66 +private:
   57.67 +	CImPlainBodyText(CImEmailMessage& aEmailMessage, CMsvEntry& aMsvEntry);
   57.68 +	void ConstructL(TInt aChunkLength, CImEmailMessage::TImEmailEntryType aEntryType, TBool aEditMode);
   57.69 +	void DoRunL(); // From CMsgActive
   57.70 +	void DoCancel(); 
   57.71 +private:
   57.72 +	CImEmailMessage& 		iEmailMessage;
   57.73 +	CImStoreMessagePart* 	iStoreMessagePart;
   57.74 +	/** The CMsvEntry associated with the message being stored/restored.*/
   57.75 +	CMsvEntry& 				iMsvEntry;
   57.76 +	/** The array of  framework/server class to store/restore body text in chunks.*/
   57.77 +	RPointerArray<CMsvPlainBodyText> iPlainTextArray;
   57.78 +	/** The id of the message. */
   57.79 +	TMsvId 					iMessageId;
   57.80 +	/** The Store associated with the message being stored/restored.*/
   57.81 +	CMsvStore* 				iStore;
   57.82 +	/** For indexing the plaintext array */
   57.83 +	TInt 					iIndex;
   57.84 +	/** The 16-bit pointer to a chunk that will be populated with data when asynchronous
   57.85 +		16-bit versions of NextChunkL / PreviousChunkL returns.*/
   57.86 +	TDes16*					iChunk16;
   57.87 +	/** The 8-bit pointer to a chunk that will be populated with data when asynchronous
   57.88 +		8-bit versions of NextChunkL / PreviousChunkL returns.*/
   57.89 +	TDes8*					iChunk8;
   57.90 +	
   57.91 +	/** Enum indicating which asynchronous chunk retrieving method resulted in a 
   57.92 +	   	call to DoRunl.*/
   57.93 +	enum TChunkRetrievalState 
   57.94 +		{
   57.95 +		EIdleState,
   57.96 +		ENextChunk8Bit,
   57.97 +		ENextChunk16Bit,
   57.98 +		EPreviousChunk8Bit,
   57.99 +		EPreviousChunk16Bit,
  57.100 +		} iChunkRetrievalState;
  57.101 +	};
  57.102 +
  57.103 +#endif //_CIMPLAINBODYTEXT_H_
    58.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.2 +++ b/epoc32/include/app/cmmsaccounts.h	Wed Mar 31 12:27:01 2010 +0100
    58.3 @@ -0,0 +1,127 @@
    58.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    58.5 +// All rights reserved.
    58.6 +// This component and the accompanying materials are made available
    58.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    58.8 +// which accompanies this distribution, and is available
    58.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   58.10 +//
   58.11 +// Initial Contributors:
   58.12 +// Nokia Corporation - initial contribution.
   58.13 +//
   58.14 +// Contributors:
   58.15 +//
   58.16 +// Description:
   58.17 +//
   58.18 +
   58.19 +#ifndef __CMMSACCOUNT_H__
   58.20 +#define __CMMSACCOUNT_H__
   58.21 +
   58.22 +
   58.23 +#include <e32base.h>
   58.24 +
   58.25 +class CRepository;
   58.26 +class CMmsSettings;
   58.27 +class TMmsAccountId;
   58.28 +class MMmsSettingsObserver;
   58.29 +
   58.30 +
   58.31 +/** 
   58.32 +The maximum account name size
   58.33 +
   58.34 +@publishedAll
   58.35 +@released
   58.36 +*/
   58.37 +const TInt KMmsAccountNameSize = 256;
   58.38 +
   58.39 +     
   58.40 +
   58.41 +/** 
   58.42 +MMS account ID 
   58.43 +
   58.44 +@publishedAll
   58.45 +@released
   58.46 +*/
   58.47 +class TMmsAccountId 
   58.48 + 	{
   58.49 +public:
   58.50 +	/** MMS account Id */
   58.51 +   	TInt iMmsAccountId;
   58.52 +
   58.53 +	/** MMS account Name */     
   58.54 +   	TBuf<KMmsAccountNameSize> iMmsAccountName;
   58.55 +   	};
   58.56 +
   58.57 +
   58.58 +/**
   58.59 +Stores MMS settings.
   58.60 +
   58.61 +@publishedAll
   58.62 +@released
   58.63 +*/
   58.64 +class CMmsAccounts : public CActive
   58.65 + 	{
   58.66 +public:
   58.67 +  	IMPORT_C static CMmsAccounts* NewL( );
   58.68 +   	IMPORT_C static CMmsAccounts* NewLC( );
   58.69 +    IMPORT_C virtual ~CMmsAccounts();
   58.70 + 
   58.71 +    // Observer functions
   58.72 +    IMPORT_C void AddObserverL(MMmsSettingsObserver & aObserver);
   58.73 +    IMPORT_C void RemoveObserver(MMmsSettingsObserver & aObserver);
   58.74 +
   58.75 +    IMPORT_C TMmsAccountId CreateMMSAccountL(const TDesC& aAccountName, const CMmsSettings& aSettings);
   58.76 +  	IMPORT_C TInt MaxMMSAccounts();
   58.77 +               
   58.78 +    IMPORT_C void GetMMSAccountsL(RArray<TMmsAccountId>& aAccountIds) const;
   58.79 +    IMPORT_C void DeleteMMSAccountL(const TMmsAccountId& aAccountId);
   58.80 +     
   58.81 +    IMPORT_C void LoadSettingsL(const TMmsAccountId& aAccountId, CMmsSettings& aSettings);          
   58.82 +    IMPORT_C void PopulateDefaultSettingsL(CMmsSettings& aSettings);
   58.83 +
   58.84 +    IMPORT_C void SaveSettingsL(const TMmsAccountId& aAccountId, const CMmsSettings& aSettings) const;
   58.85 +
   58.86 +    IMPORT_C TMmsAccountId DefaultMMSAccountL( ) const;
   58.87 +    IMPORT_C void SetDefaultMMSAccountL(const TMmsAccountId& aAccount);
   58.88 +
   58.89 +private:
   58.90 +    CMmsAccounts();
   58.91 +	void ConstructL();
   58.92 +	void DoLoadSettingsL(TUint32 aAccountId, CMmsSettings& aSettings);
   58.93 +	void DoSaveSettingsL(TUint32 aAccountId, const CMmsSettings& aSettings, const TDesC& aAccountName) const;
   58.94 +
   58.95 +    void DoCancel( );
   58.96 +    void RunL( );
   58.97 +
   58.98 +	TUint GetNextEmptyAccountSlotL();
   58.99 +
  58.100 +private:
  58.101 +	enum TMmsSettingsCenRepId
  58.102 +		{
  58.103 +		EMmsAccountName				= 0x00000000,
  58.104 +		EMmsSettingsVersion			= 0x00000001,
  58.105 +		EMmsApplicationID			= 0x00000002,
  58.106 +		EMmsAddress					= 0x00000003,
  58.107 +		EMmsCreationMode			= 0x00000004,
  58.108 +		EMmsSettingsFlags			= 0x00000005,
  58.109 +		EMmsProxyCount				= 0x00000006,
  58.110 +		EMmsNapIdCount				= 0x00000007,		
  58.111 +		EMmsAutomaticDownload		= 0x00000008,
  58.112 +		EMmsValidityPeriod			= 0x00000009,
  58.113 +		EMmsMaxDownloadSize			= 0x0000000A,
  58.114 +		EMmsMaxDownloadRetries		= 0x0000000B,
  58.115 +		EMmsDownloadRetryInterval	= 0x0000000C,
  58.116 +		EMmsMaxSendMsgSize			= 0x0000000D,
  58.117 +		EMmsDeviceContentClass		= 0x0000000E,
  58.118 +		EMmsMaxImageHeight			= 0x0000000F,
  58.119 +		EMmsMaxImageWidth			= 0x00000010,
  58.120 +		
  58.121 +		EMmsProxyList				= 0x00001000,
  58.122 +		EMmsNapIdList				= 0x00002000,
  58.123 +		};
  58.124 +
  58.125 +private:
  58.126 +   	CRepository* iRepository;
  58.127 +    RPointerArray<MMmsSettingsObserver> iObservers;
  58.128 +    };     
  58.129 +     
  58.130 +#endif // __CMMSACCOUNT_H__
    59.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.2 +++ b/epoc32/include/app/cmmssettings.h	Wed Mar 31 12:27:01 2010 +0100
    59.3 @@ -0,0 +1,200 @@
    59.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    59.5 +// All rights reserved.
    59.6 +// This component and the accompanying materials are made available
    59.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    59.8 +// which accompanies this distribution, and is available
    59.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   59.10 +//
   59.11 +// Initial Contributors:
   59.12 +// Nokia Corporation - initial contribution.
   59.13 +//
   59.14 +// Contributors:
   59.15 +//
   59.16 +// Description:
   59.17 +//
   59.18 +
   59.19 +#ifndef __CMMSSETTINGS_H__
   59.20 +#define __CMMSSETTINGS_H__
   59.21 +
   59.22 +
   59.23 +#include <e32base.h>
   59.24 +
   59.25 +
   59.26 +class CRepository;
   59.27 +
   59.28 +
   59.29 +/**
   59.30 +Automatic Download Options.
   59.31 +
   59.32 +@publishedAll
   59.33 +@released
   59.34 +*/
   59.35 +enum TAutomaticDownloadOptions
   59.36 + 	{
   59.37 + 	/** Automatic Download Option Off */
   59.38 +	EAutomaticDownloadOff = 0,
   59.39 + 	/** Automatic Download Option On */
   59.40 +	EAutomaticDownloadOn,
   59.41 +	/** Automatic Download Only When Roaming */
   59.42 +	EAutomaticDownloadOnlyWhenRoaming
   59.43 +	};
   59.44 +
   59.45 +
   59.46 +/**
   59.47 +Creation Mode Options.
   59.48 +
   59.49 +@publishedAll
   59.50 +@released
   59.51 +*/
   59.52 +enum TCreationMode
   59.53 + 	{
   59.54 +	/** Creation Mode Free */
   59.55 +	ECreationModeFree = 0,
   59.56 +	/** Creation Mode Warning */
   59.57 +	ECreationModeWarning,
   59.58 +	/** Creation Mode Restricted */
   59.59 +	ECreationModeRestricted
   59.60 +	};
   59.61 +
   59.62 +
   59.63 +/**
   59.64 +Run-time MMS configuration settings.
   59.65 +
   59.66 +Messaging clients should use an instance of this class to specify
   59.67 +and retrieve configuration settings.
   59.68 +
   59.69 +This class should be used with CMmsAccounts to store and restore settings.
   59.70 +
   59.71 +@see CMmsAccounts
   59.72 +
   59.73 +@publishedAll
   59.74 +@released
   59.75 +*/
   59.76 +class CMmsSettings : public CBase
   59.77 +     {
   59.78 +public:
   59.79 +	IMPORT_C static CMmsSettings* NewL( );
   59.80 +	IMPORT_C static CMmsSettings* NewLC( );
   59.81 +    IMPORT_C ~CMmsSettings( );
   59.82 +    IMPORT_C void CopyL(const CMmsSettings& aMmsSettings);    
   59.83 +
   59.84 +    IMPORT_C TInt ApplicationID( ) const;
   59.85 +	IMPORT_C void SetApplicationID(const TInt aAppID);
   59.86 +
   59.87 +	IMPORT_C TPtrC Address( ) const;
   59.88 +   	IMPORT_C void SetAddressL(const TDesC& aAddress);
   59.89 +	
   59.90 +	IMPORT_C TCreationMode CreationMode( ) const;
   59.91 +   	IMPORT_C void SetCreationModeL(TCreationMode aCreationMode);
   59.92 +
   59.93 +    IMPORT_C TInt ProxyCount( ) const;
   59.94 +    IMPORT_C TUid GetProxy(TInt aIndex) const;
   59.95 +    IMPORT_C void AddProxyL(const TUid aProxy);
   59.96 +    IMPORT_C void RemoveProxy(TInt aIndex);
   59.97 +
   59.98 +    IMPORT_C TInt NapIdCount( ) const;
   59.99 +    IMPORT_C TUid GetNapId (TInt aIndex) const;
  59.100 +    IMPORT_C void AddNapIdL(const TUid aNapId);
  59.101 +    IMPORT_C void RemoveNapId(TInt aIndex);
  59.102 +
  59.103 +    IMPORT_C TBool DisplayNotification( ) const;
  59.104 +    IMPORT_C void SetDisplayNotification(TBool aFlag);
  59.105 +
  59.106 +    IMPORT_C TAutomaticDownloadOptions AutomaticDownload( ) const;
  59.107 +    IMPORT_C void SetAutomaticDownload(TAutomaticDownloadOptions aDownloadOptions);
  59.108 +
  59.109 +    IMPORT_C TBool CreationModeReadOnly( ) const;
  59.110 +    IMPORT_C void SetCreationModeReadOnly(TBool aFlag);
  59.111 +
  59.112 +    IMPORT_C TInt ValidityPeriod( ) const;
  59.113 +    IMPORT_C void SetValidityPeriod(const TInt aValidityPeriod);
  59.114 +
  59.115 +    IMPORT_C TInt MaxDownloadSize( ) const;
  59.116 +    IMPORT_C void SetMaxDownloadSize (const TInt aSize);
  59.117 +
  59.118 +    IMPORT_C TBool Priority( ) const;
  59.119 +    IMPORT_C void SetPriority (TBool aFlag);
  59.120 +
  59.121 +    IMPORT_C TBool HideNumber( ) const;
  59.122 +    IMPORT_C void SetHideNumber(TBool aFlag);
  59.123 +
  59.124 +    IMPORT_C TBool ReadReport( ) const;
  59.125 +    IMPORT_C void SetReadReport(TBool aFlag);
  59.126 +
  59.127 +    IMPORT_C TBool DeliveryReport( ) const;
  59.128 +    IMPORT_C void SetDeliveryReport(TBool aFlag);
  59.129 +
  59.130 +    IMPORT_C TBool ReplyWithHistory( ) const;
  59.131 +    IMPORT_C void SetReplyWithHistory (TBool aFlag);
  59.132 +
  59.133 +    IMPORT_C TBool AllowDeliveryNotification( ) const;
  59.134 +    IMPORT_C void SetAllowDeliveryNotification(TBool aFlag);
  59.135 +
  59.136 +    IMPORT_C TBool FilterAdvertisements( ) const;
  59.137 +    IMPORT_C void SetFilterAdvertisements(TBool aFlag);
  59.138 +
  59.139 +    IMPORT_C TInt MaxDownloadRetries( ) const;
  59.140 +    IMPORT_C void SetMaxDownloadRetries(const TInt aRetries);
  59.141 +
  59.142 +    IMPORT_C TInt DownloadRetryInterval( ) const;
  59.143 +    IMPORT_C void SetDownloadRetryInterval(const TInt aInterval);
  59.144 +
  59.145 +    IMPORT_C TInt MaxSendMsgSize( ) const;
  59.146 +    IMPORT_C void SetMaxSendMsgSize (const TInt aSize);
  59.147 +
  59.148 +    IMPORT_C TBool FullScreenPreview( ) const;
  59.149 +    IMPORT_C void SetFullScreenPreview(TBool aFlag);
  59.150 +
  59.151 +    IMPORT_C TInt DeviceContentClass( ) const;
  59.152 +    IMPORT_C void SetDeviceContentClass(const TInt aClass);
  59.153 +
  59.154 +    IMPORT_C TInt MaxImageHeight( ) const;
  59.155 +    IMPORT_C void SetMaxImageHeight(const TInt aHeight);
  59.156 +
  59.157 +    IMPORT_C TInt MaxImageWidth( ) const;
  59.158 +    IMPORT_C void SetMaxImageWidth(const TInt aWidth);   
  59.159 +    
  59.160 +	void RemoveAllProxies();
  59.161 +	void RemoveAllNapIds();
  59.162 +	
  59.163 +	TUint32 MmsSettingsFlags() const;
  59.164 +	void SetMmsSettingsFlags(TUint32 aFlags);
  59.165 +	    
  59.166 +private:
  59.167 +    CMmsSettings();
  59.168 +
  59.169 +	enum TMmsSettingsFlags
  59.170 +		{
  59.171 +		ESmsSettingsNoFlags					= 0x00000000,
  59.172 +		ESmsSettingsDisplayNotification		= 0x00000002,
  59.173 +		ESmsSettingsCreationModeReadOnly	= 0x00000004,
  59.174 +		ESmsSettingsPriority				= 0x00000008,
  59.175 +		ESmsSettingsHideNumber				= 0x00000010,
  59.176 +		ESmsSettingsReadReport				= 0x00000020,
  59.177 +		ESmsSettingsDeliveryReport			= 0x00000040,
  59.178 +		ESmsSettingsReplyWithHistory		= 0x00000080,
  59.179 +		ESmsSettingsAllowDeliveryNotification	= 0x00000100,
  59.180 +		ESmsSettingsFilterAdvertisements	= 0x00000200,
  59.181 +		ESmsSettingsFullScreenPreview		= 0x00000400
  59.182 +		};
  59.183 +
  59.184 +private:
  59.185 +
  59.186 +	TUint32 iMmsSettingsFlags;
  59.187 +	TInt iApplicationId;
  59.188 +	HBufC* iAddress;
  59.189 +	TCreationMode iCreationMode;
  59.190 +	RArray<TUid> iProxy;
  59.191 +	RArray<TUid> iNapId;
  59.192 +	TAutomaticDownloadOptions iAutomaticDownloadOptions;
  59.193 +	TInt iValidityPeriod;
  59.194 +	TInt iMaxDownloadSize;
  59.195 +	TInt iMaxDownloadRetries;
  59.196 +	TInt iDownloadRetryInterval;
  59.197 +	TInt iMaxSendMsgSize;
  59.198 +	TInt iDeviceContentClass;
  59.199 +	TInt iMaxImageHeight;
  59.200 +	TInt iMaxImageWidth;
  59.201 +   	};
  59.202 +   	
  59.203 +#endif // __CSMSACCOUNT_H__
    60.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.2 +++ b/epoc32/include/app/cntdb.h	Wed Mar 31 12:27:01 2010 +0100
    60.3 @@ -0,0 +1,1427 @@
    60.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    60.5 +// All rights reserved.
    60.6 +// This component and the accompanying materials are made available
    60.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    60.8 +// which accompanies this distribution, and is available
    60.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   60.10 +//
   60.11 +// Initial Contributors:
   60.12 +// Nokia Corporation - initial contribution.
   60.13 +//
   60.14 +// Contributors:
   60.15 +//
   60.16 +// Description:
   60.17 +//
   60.18 +
   60.19 +#ifndef __CNTDB_H__
   60.20 +#define __CNTDB_H__
   60.21 +
   60.22 +// System includes
   60.23 +#include <e32base.h>
   60.24 +#include <cntdef.h>
   60.25 +#include <cntdbobs.h>
   60.26 +#include <cntsync.h>
   60.27 +#include <s32file.h>
   60.28 +#include <badesca.h>
   60.29 +#include <versit.h>
   60.30 +#include <collate.h>
   60.31 +
   60.32 +#include <ecom/ecom.h>
   60.33 +
   60.34 +// Classes referenced
   60.35 +//
   60.36 +class CContactViewDef;
   60.37 +class CFoundMatches;
   60.38 +class CContactTextDef;
   60.39 +class CContactItem;
   60.40 +class CContactItemViewDef;
   60.41 +class CContactItemFieldSet;
   60.42 +class CContactItemFieldDef;
   60.43 +class CContactActiveCompress;
   60.44 +class CContactActiveRecover;
   60.45 +class CContactDatabase;
   60.46 +class CContactTables;
   60.47 +class CCntFilter;
   60.48 +class CContentType;
   60.49 +class CContactItemField;
   60.50 +class CIdleFinder;
   60.51 +class CContactClientSession;
   60.52 +class CPrivConverter;
   60.53 +class RCntModel;
   60.54 +class CProxyFactory;
   60.55 +class CCntTemplateCache;
   60.56 +class CSortArray;
   60.57 +class CCntIdleSorter;
   60.58 +class MLplPersistenceLayerFactory;
   60.59 +class CContactOpenOperation;
   60.60 +class CDataBaseChangeObserver;
   60.61 +class CContactConverter;
   60.62 +
   60.63 +// Constants
   60.64 +const TInt KMaxContactTextSeperator=4;
   60.65 +const TInt KTextFieldMinimalLength=64;
   60.66 +const TInt KMaxCustomFilterableFields=4;
   60.67 +
   60.68 +const TInt KMajorVersion=1;
   60.69 +const TInt KMinorVersion=0;
   60.70 +const TInt KBuildNumber=40;
   60.71 +
   60.72 +
   60.73 +//
   60.74 +// Classes used for compact
   60.75 +//
   60.76 +
   60.77 +class MContactStorageObserver
   60.78 +/**
   60.79 +Mixin used to observe low disk events
   60.80 +
   60.81 +@publishedAll
   60.82 +@released
   60.83 +*/
   60.84 +	{
   60.85 +public:
   60.86 +	virtual void HandleDiskSpaceEvent(TInt aDrive) = 0;
   60.87 +	};
   60.88 +
   60.89 +class MContactUiCompactObserver
   60.90 +/** Mixin used to observe contact database compaction status
   60.91 +@publishedAll
   60.92 +@released
   60.93 +*/
   60.94 +	{
   60.95 +public:
   60.96 +	virtual void Step(TInt aStep)=0;
   60.97 +	virtual void HandleError(TInt aError)=0;
   60.98 +	};
   60.99 +
  60.100 +class MContactUiActive
  60.101 +/**  Mixin used to register the observer.
  60.102 +@publishedAll
  60.103 +@released
  60.104 +*/
  60.105 +	{
  60.106 +public:
  60.107 +	virtual void Cancel()=0;
  60.108 +	virtual void SetObserver(MContactUiCompactObserver *aObserver)=0;
  60.109 +	virtual TInt StepsTogo() const=0;
  60.110 +	virtual TInt Step()=0;
  60.111 +	virtual TInt Error() const=0;
  60.112 +private:
  60.113 +	IMPORT_C virtual void MContactUiActive_Reserved1();
  60.114 +	};
  60.115 +
  60.116 +class CContactActiveBase : public CBase, public MContactUiActive
  60.117 +/**
  60.118 +@internalTechnology
  60.119 +*/
  60.120 +	{
  60.121 +public:
  60.122 +	~CContactActiveBase();
  60.123 +	void SetObserver(MContactUiCompactObserver *aObserver);
  60.124 +	void Cancel();
  60.125 +	TInt StepsTogo() const;
  60.126 +	TInt Step();
  60.127 +	TInt Error() const;
  60.128 +	void SetContactDatabase(CContactDatabase* aContactDatabase);
  60.129 +	void SetFileManager(RCntModel& aCntSvr);
  60.130 +	
  60.131 +#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__ 	
  60.132 +protected:
  60.133 +	void ConstructL();
  60.134 +	static TInt CompactCallBack(TAny *aThis);
  60.135 +protected:
  60.136 +	MContactUiCompactObserver *iObserver;
  60.137 +	RCntModel* iCntSvr; 
  60.138 +	CIdle *iIdle;
  60.139 +	TInt iStep;
  60.140 +	TInt iError;
  60.141 +	CContactDatabase* iContactDatabase;
  60.142 +#endif	
  60.143 +	};
  60.144 +	
  60.145 +class CContactActiveCompress : public CContactActiveBase
  60.146 +/**
  60.147 +@publishedAll
  60.148 +@released
  60.149 +*/
  60.150 +	{
  60.151 +public:
  60.152 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
  60.153 +    void ConstructL(RDbNamedDatabase /* &aDataBase */) {};
  60.154 +#endif	
  60.155 +	};
  60.156 +
  60.157 +class CContactActiveRecover : public CContactActiveBase
  60.158 +/**
  60.159 +@publishedAll
  60.160 +@released
  60.161 +*/
  60.162 +	{
  60.163 +public:
  60.164 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
  60.165 +    void ConstructL(RDbNamedDatabase /* &aDataBase */) {};
  60.166 +#endif	
  60.167 +	};
  60.168 +
  60.169 +
  60.170 +
  60.171 +
  60.172 +class TContactTextDefItem
  60.173 +/** An item in a text definition.
  60.174 +
  60.175 +A TContactTextDefItem has a field type and an optional separator string
  60.176 +with a maximum length of 4 characters.
  60.177 +
  60.178 +@see CContactTextDef
  60.179 +@publishedAll
  60.180 +@released
  60.181 +*/
  60.182 +	{
  60.183 +public:
  60.184 +	IMPORT_C TContactTextDefItem();
  60.185 +	IMPORT_C TContactTextDefItem(TFieldType aFieldType);
  60.186 +	IMPORT_C TContactTextDefItem(TFieldType aFieldType, const TDesC &aSeperator);
  60.187 +public:
  60.188 +	/** The field type. */
  60.189 +	TFieldType iFieldType;
  60.190 +	/** The string used to separate the fields in the text definition. */
  60.191 +	TBuf<KMaxContactTextSeperator> iSeperator;
  60.192 +	};
  60.193 +
  60.194 +class CContactTextDef : public CArrayFixFlat<TContactTextDefItem>
  60.195 +/** Defines a way of grouping fields to form a string which represents
  60.196 +a contact item.
  60.197 +
  60.198 +A text definition is implemented as an array of text definition items
  60.199 +(TContactTextDefItems).
  60.200 +
  60.201 +For example, CContactDatabase::ReadContactTextDefL() uses a text definition to
  60.202 +build up a string from a contact item. When creating the string, it searches
  60.203 +the item for fields whose type matches one of the fields specified in the text
  60.204 +definition. The contents of the first matching field of each type found in the
  60.205 +item are read into the string. These strings may be separated using a field
  60.206 +separator, which is also specified in the text definition. A separator is not
  60.207 +appended to the last field used to make up the string. It is only inserted when
  60.208 +there is a following non-empty field.
  60.209 +
  60.210 +Additionally, the text definition may also contain a fallback field
  60.211 +type. This is used when none of the fields specified in the text
  60.212 +definition contain any text. If the item's fallback field contains no text
  60.213 +either, or if the fallback field type's value is KUidContactFieldNone, the
  60.214 +text is read from the first non-empty field in the item.
  60.215 +
  60.216 +A contact database can have a default text definition which is set using CContactDatabase::SetTextDefinitionL().
  60.217 +This may be overridden using the variants of CContactDatabase::ReadContactTextDefL()
  60.218 +which take a CContactTextDef* argument.
  60.219 +
  60.220 +CContactTextDef is derived from CArrayFixFlat<TContactTextDefItem>, so all
  60.221 +relevant functions can be used, e.g. to add and remove elements.
  60.222 +
  60.223 +@publishedAll
  60.224 +@released
  60.225 +*/
  60.226 +	{
  60.227 +	friend class CContactDatabase;
  60.228 +	friend class CContactTables;
  60.229 +public:
  60.230 +	CContactTextDef();
  60.231 +	IMPORT_C static CContactTextDef* NewL();
  60.232 +	IMPORT_C static CContactTextDef* NewLC();
  60.233 +	static CContactTextDef* NewLC(RReadStream& aStream);
  60.234 +	IMPORT_C void SetFallbackField(TFieldType iFieldType);
  60.235 +	IMPORT_C TFieldType FallbackField() const;
  60.236 +	IMPORT_C TBool ExactMatchOnly();
  60.237 +	IMPORT_C void SetExactMatchOnly(TBool aExactMatchOnly);
  60.238 +	void ExternalizeL(RWriteStream& aStream) const;
  60.239 +	void InternalizeL(RReadStream& aStream);	
  60.240 +private:
  60.241 +	TFieldType iFallbackFieldType;
  60.242 +	TBool iExactMatchOnly;//Default to EFalse cause ReadInTextDef to only match the chosen fields and not attempt a matchall
  60.243 +	};
  60.244 +
  60.245 +class CContactItemViewDef : public CBase
  60.246 +/** A view definition for a contact item.
  60.247 +
  60.248 +When reading or opening a contact item using the CContactDatabase class,
  60.249 +a view definition may be specified to indicate which field data should be
  60.250 +retrieved. See for instance CContactDatabase::ReadContactL().
  60.251 +
  60.252 +A view definition for a contact item contains an array of field types, a use
  60.253 +(CContactItemViewDef::TUse) and a mode (CContactItemViewDef::TMode). The use
  60.254 +indicates whether the field types contained in the view definition should
  60.255 +be included in or excluded from the view. The mode indicates whether fields
  60.256 +with the hidden attribute should be included or excluded.
  60.257 +
  60.258 +@publishedAll
  60.259 +@released
  60.260 +*/
  60.261 +	{
  60.262 +public:
  60.263 +	/** Include or exclude specified fields. */
  60.264 +	enum TUse
  60.265 +			{
  60.266 +			/** Include specified fields in the view. */
  60.267 +			EIncludeFields,
  60.268 +			/** Exclude specified fields from the view. */
  60.269 +			EMaskFields
  60.270 +			};
  60.271 +	/** Include or exclude hidden fields.*/
  60.272 +	enum TMode
  60.273 +			{
  60.274 +			/** Include hidden fields in the view. */
  60.275 +			EIncludeHiddenFields,
  60.276 +			/** Exclude hidden fields from the view. */
  60.277 +			EMaskHiddenFields
  60.278 +			};
  60.279 +public:
  60.280 +	IMPORT_C static CContactItemViewDef* NewL(TUse aUse, TMode aMode);
  60.281 +	IMPORT_C static CContactItemViewDef* NewLC(TUse aUse, TMode aMode);
  60.282 +	static CContactItemViewDef* NewLC(RReadStream& aStream);
  60.283 +    inline TUid operator[](TInt aIndex) const;
  60.284 +    IMPORT_C TInt Find(const CContentType &aContentType) const;
  60.285 +    IMPORT_C TInt Find(TFieldType aFieldType) const;
  60.286 +    inline TInt Count() const;
  60.287 +    inline void Reset();
  60.288 +	IMPORT_C void AddL(TFieldType aFieldType);
  60.289 +	IMPORT_C void Remove(TFieldType aFieldType);
  60.290 +	IMPORT_C void Remove(TInt aIndex);
  60.291 +	inline TUse Use() const;
  60.292 +	inline void SetUse(TUse aUse);
  60.293 +	inline TMode Mode() const;
  60.294 +	inline void SetMode(TMode aMode);
  60.295 +	IMPORT_C TBool Contains(const CContactItem& aItem);
  60.296 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  60.297 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  60.298 +	IMPORT_C TBool MatchesAll() const;
  60.299 +private:
  60.300 +	CContactItemViewDef(TUse aUse,TMode aMode);
  60.301 +private:
  60.302 +    CArrayFixFlat<TUid> iFieldTypes;
  60.303 +	TUse iUse;
  60.304 +	TMode iMode;
  60.305 +	};
  60.306 +
  60.307 +class CContactViewDef : public CBase
  60.308 +/** Specifies a subset of fields to be loaded when reading a contact item.
  60.309 +
  60.310 +A default view definition is owned by the contact database.
  60.311 +It is set using CContactDatabase::SetViewDefinitionL() and is used in calls
  60.312 +to CContactDatabase::ReadContactL(), ReadContactLC() and ReadContactAndAgentL()
  60.313 +when no view definition is specified.
  60.314 +
  60.315 +The view definition owns the item view definition (see the CContactItemViewDef
  60.316 +class), which stores the view definition's field types, use and mode.
  60.317 +
  60.318 +The following functions declared in class CContactViewDef have not been
  60.319 +implemented:- Groups(), AddL().
  60.320 +
  60.321 +@publishedAll
  60.322 +@released
  60.323 +*/
  60.324 +	{
  60.325 +public:
  60.326 +	IMPORT_C static CContactViewDef* NewL();
  60.327 +	IMPORT_C static CContactViewDef* NewLC();
  60.328 +	IMPORT_C static CContactViewDef* NewL(CContactItemViewDef* aItemDef);
  60.329 +	IMPORT_C static CContactViewDef* NewLC(CContactItemViewDef* aItemDef);
  60.330 +	static CContactViewDef* NewLC(RReadStream& aStream);
  60.331 +	IMPORT_C ~CContactViewDef();
  60.332 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  60.333 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  60.334 +	IMPORT_C CContactItemViewDef& ItemDef() const;
  60.335 +	/** This function is not implemented    */
  60.336 +	IMPORT_C CContactIdArray& Groups() const;
  60.337 +	/** This function is not implemented. 
  60.338 +	@param aFieldType The field type to append to the array of field types. */
  60.339 +	inline void AddL(TFieldType aFieldType);
  60.340 +private:
  60.341 +	CContactViewDef();
  60.342 +	void ConstructL(CContactItemViewDef* aItemDef);
  60.343 +private:
  60.344 +	CContactItemViewDef* iItemDef;
  60.345 +//	CContactIdArray* iGroupIds; // unused for now
  60.346 +	};
  60.347 +
  60.348 +class TContactIter
  60.349 +/** Iterates through the sorted contact items in a contact database.
  60.350 +
  60.351 +A value of KNullContactId is returned by the iterator if a requested item cannot
  60.352 +be found.
  60.353 +
  60.354 +@publishedAll
  60.355 +@released
  60.356 +*/
  60.357 +	{
  60.358 +public:
  60.359 +	IMPORT_C TContactIter(CContactDatabase &aDatabase);
  60.360 +	IMPORT_C TContactItemId FirstL();
  60.361 +	IMPORT_C TContactItemId NextL();
  60.362 +	IMPORT_C TContactItemId PreviousL();
  60.363 +	IMPORT_C TContactItemId LastL();
  60.364 +	IMPORT_C void GotoL(TContactItemId aContactId);
  60.365 +	IMPORT_C void Reset();
  60.366 +private:
  60.367 +	void GotoIndexL(TInt aPos);
  60.368 +private:
  60.369 +	CContactDatabase &iDatabase;
  60.370 +	TContactItemId iCursorId;
  60.371 +	};
  60.372 +
  60.373 +class MIdleFindObserver
  60.374 +/** The interface for an asynchronous find observer.
  60.375 +
  60.376 +An object which implements this interface is passed to the asynchronous find
  60.377 +functions defined in class CContactDatabase, (FindAsyncL() and FindInTextDefAsyncL()).
  60.378 +The observer would typically notify the user of the progress of the operation.
  60.379 +
  60.380 +@publishedAll
  60.381 +@released
  60.382 +*/
  60.383 +	{
  60.384 +public:
  60.385 +	/** Asynchronous find observer callback.
  60.386 +
  60.387 +	If an observer is supplied to CContactDatabase::FindAsyncL()
  60.388 +	or FindInTextDefAsyncL(), this callback function is called by CIdle::RunL()
  60.389 +	when nothing of a higher priority can be scheduled. It is called for every
  60.390 +	16 items searched to give the application a chance to update its search status.
  60.391 +
  60.392 +	An implementation might test for and handle errors and retrieve information
  60.393 +	about the progress of the search. This information may be retrieved using
  60.394 +	functions provided by the CIdleFinder class. */
  60.395 +	virtual void IdleFindCallback()=0;
  60.396 +	};
  60.397 +
  60.398 +struct SFindInTextDefWordParser
  60.399 +/** Search string parser struct.
  60.400 +
  60.401 +An object of this type is used in the callback parser function passed to
  60.402 +CContactDatabase::FindInTextDefLC(). The parser function must walk
  60.403 +through and parse iSearchString, adding any words found to iWordArray.
  60.404 +
  60.405 +@publishedAll
  60.406 +@released
  60.407 +*/
  60.408 +	{
  60.409 +public:
  60.410 +	inline SFindInTextDefWordParser(const TDesC *aSearchString, CDesCArray *aWordArray) : iSearchString(aSearchString), iWordArray(aWordArray)
  60.411 +	/** Initialises the search string and the word array.
  60.412 +
  60.413 +	@param aSearchString Pointer to the input string to be parsed.
  60.414 +	@param aWordArray Pointer to the array to which words parsed from the input
  60.415 +	string should be added. */
  60.416 +		{};
  60.417 +public:
  60.418 +	/** Pointer to the input string to be parsed. */
  60.419 +	const TDesC *iSearchString;
  60.420 +	/** Pointer to the array to which words parsed from the input string should be
  60.421 +	added. */
  60.422 +	CDesCArray *iWordArray;
  60.423 +	};
  60.424 +
  60.425 +class CIdleFinder : public CIdle
  60.426 +/** Provides information about the progress of an asynchronous contact database search,
  60.427 +and can be used to get the results of the search.
  60.428 +
  60.429 +An instance of this class is returned by calls to CContactDatabase::FindAsyncL()
  60.430 +and CContactDatabase::FindInTextDefAsyncL().
  60.431 +
  60.432 +@publishedAll
  60.433 +@released
  60.434 +*/
  60.435 +	{
  60.436 +public:
  60.437 +	~CIdleFinder();
  60.438 +	IMPORT_C TBool IsComplete() const;
  60.439 +	IMPORT_C CContactIdArray *TakeContactIds();
  60.440 +	IMPORT_C TInt Error() const;
  60.441 +	TInt RunError(TInt aError);
  60.442 +private:
  60.443 +	friend class CContactDatabase;
  60.444 +	static CIdleFinder *NewL(CContactDatabase &aContactDatabase, const TDesC& aText, const CContactItemFieldDef *aFieldDef, MIdleFindObserver *aObserver);
  60.445 +	static CIdleFinder *NewL(CContactDatabase &aContactDatabase, const MDesCArray* aFindWords,const CContactTextDef* aTextDef, MIdleFindObserver *aObserver, const TCallBack &aWordParserCallback);
  60.446 +	void DoCancel();
  60.447 +	void Start();
  60.448 +	static TInt CallbackL(TAny *aSelf);
  60.449 +	void ConstructL(const TDesC *aText, const MDesCArray* aFindWords, const TCallBack *aWordParserCallback);
  60.450 +	TBool ScanForMatchL(const TDesC &aFieldText,const TDesC &aFindText, CFoundMatches *aFoundMatches) const;
  60.451 +	TBool CheckFindL(TContactItemId aContactId) const;
  60.452 +	TBool CheckFindL() const;
  60.453 +	CIdleFinder(CContactDatabase &aContactDatabase, const CContactItemFieldDef *aFieldDef, const CContactTextDef* aTextDef, MIdleFindObserver *aObserver);
  60.454 +	TBool doFindL();
  60.455 +
  60.456 +	enum TAsyncFindState
  60.457 +		{
  60.458 +		EFindInBlobFinished				=0x00000001,
  60.459 +		EFindInIdentityFinished			=0x00000002,
  60.460 +		EFindInEmailFinished			=0x00000004,
  60.461 +		EFindInTextDefFinished			=0x00000008
  60.462 +		};
  60.463 +private:
  60.464 +	CContactDatabase *iContactDatabase;
  60.465 +	CContactIdArray *iIdsFound;
  60.466 +	TBool iOwnsIds;
  60.467 +	CDesCArray*		iFindWords;
  60.468 +	TInt iReserved1;
  60.469 +	TInt iReserved2;
  60.470 +	TInt iReserved3;
  60.471 +	const CContactItemFieldDef* iFieldDef;
  60.472 +	const CContactTextDef* iTextDef;
  60.473 +	MIdleFindObserver *iObserver;
  60.474 +	TInt iError;
  60.475 +	TCallBack iWordParserCallback;
  60.476 +	TInt iReserved4;
  60.477 +	TInt iReserved5;
  60.478 +	TInt iReserved6;
  60.479 +	TInt iReserved7; //was 	TDbColNo
  60.480 +	TInt iReserved8; //was 	RDbView
  60.481 +	TInt iReserved9; //was 	RDbView
  60.482 +	TInt iReserved10; //was CIdentityTableColSet*
  60.483 +	};
  60.484 +
  60.485 +class MContactDbPrivObserver
  60.486 +/** Provides notification of database changes to clients. 
  60.487 +* Provides information about database change event details and the type of changed event.
  60.488 +@publishedAll
  60.489 +@released
  60.490 +*/
  60.491 +	{
  60.492 +public:
  60.493 +
  60.494 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
  60.495 +	virtual void HandleDatabaseEventL(RDbNotifier::TEvent)=0;
  60.496 +#endif	
  60.497 +	virtual void HandleDatabaseEventL(const TContactDbObserverEvent &aEvent)=0;
  60.498 +	};
  60.499 +
  60.500 +
  60.501 +class MContactSortObserver
  60.502 +/**
  60.503 +@publishedAll
  60.504 +@deprecated
  60.505 +*/
  60.506 +	{
  60.507 +public:
  60.508 +    /**
  60.509 +    @deprecated
  60.510 +    */
  60.511 +	virtual void HandleSortEventL(TInt aContactsSorted, TInt aContactsTotal)=0;
  60.512 +	};
  60.513 +
  60.514 +class MConverterCallBack
  60.515 +/**
  60.516 +Interface class for providing Intra-Contact Properties during a PBAP specific contacts export.
  60.517 +@prototype
  60.518 +@internalTechnology
  60.519 +*/
  60.520 +{
  60.521 +	public:
  60.522 +	/**
  60.523 +	PBAP clients are supposed to provide any information regarding the contact item represented by aContactId.
  60.524 +	This information should be in form of standard vCard property, all such properties should be appended to the array aPropertyList.
  60.525 +	*/
  60.526 +	virtual	void AddIntraContactPropertiesL(const TContactItemId& aContactId, CArrayPtr<CParserProperty>* aPropertyList) = 0;
  60.527 +};
  60.528 +
  60.529 +enum TVCardVersion
  60.530 +/**
  60.531 +Specifies type of export of contact items.
  60.532 +PBAP clients should use EPBAPVCard21 and EPBAPVCard30.
  60.533 +@prototype
  60.534 +@internalTechnology
  60.535 +*/
  60.536 +	{
  60.537 +	EVCardUDEF = -1,
  60.538 +	EVCard21 = 0,
  60.539 +	EVCard30,
  60.540 +	EPBAPVCard21,
  60.541 +	EPBAPVCard30
  60.542 +	};
  60.543 +
  60.544 +class CContactDatabase : public CBase, public MContactDbPrivObserver, public MContactStorageObserver
  60.545 +/** A database of contact items.
  60.546 +
  60.547 +Contact items can be added to and removed from the database and items in the
  60.548 +database can be opened or read. To edit an item, it must first be opened.
  60.549 +Changes to the item can then be committed using CommitContactL()
  60.550 +(committing can only take place to an open item).
  60.551 +
  60.552 +If the available disk space is less than 128 kilobytes then changes to the
  60.553 +contact database cannot be started, and methods such as CreateL() or CommitContactL()
  60.554 +will leave with a KErrDiskFull error. Less obviously OpenL() can also fail with
  60.555 +KErrDiskFull when trying to update the system template.
  60.556 +
  60.557 +Each item has an access count. An item cannot be fully deleted unless its
  60.558 +access count is zero. This is to prevent items which have been
  60.559 +synchronised with another contacts application from being deleted.
  60.560 +Also, if the item is a template, it cannot be deleted if other items are based
  60.561 +on it.
  60.562 +
  60.563 +More than one contact database can exist on a phone, but there is a
  60.564 +default contact database. Its filename is contacts.cdb. It
  60.565 +can be moved between drives.
  60.566 +
  60.567 +CContactDatabase implements searching and sorting and also provides
  60.568 +separate phone number matching functions. These provide a fast way of indexing
  60.569 +and looking up phone numbers, e.g. for looking up caller IDs on incoming
  60.570 +calls.
  60.571 +
  60.572 +The database owns speed dial information. This is a mapping between a single
  60.573 +digit integer and a telephone number. There may be up to 9 speed dial telephone
  60.574 +numbers; each of them belongs to a contact item in the database. If a
  60.575 +contact item is deleted, its speed dial mapping is removed.
  60.576 +
  60.577 +The following functions defined in class CContactDatabase are not
  60.578 +supported. If called, they leave with KErrNotSupported.
  60.579 +
  60.580 +- ReplacePrefL()
  60.581 +
  60.582 +- ReadPrefL()
  60.583 +
  60.584 +- CreatePrefL()
  60.585 +
  60.586 +@publishedAll
  60.587 +@released
  60.588 +*/
  60.589 +	{
  60.590 +	friend class TContactIter;
  60.591 +	friend class CIdleFinder;
  60.592 +	friend class CCntIdleSorter;
  60.593 +	friend class CContactLocalView;
  60.594 +	friend class CContactOpenOperation;
  60.595 +	friend class RContactRemoteView;
  60.596 +	friend class CViewIteratorProxyManager;
  60.597 +	friend class CCollectionProxy;
  60.598 +	friend class CContactActiveBase;
  60.599 +public:
  60.600 +	class TSortPref
  60.601 +	/** Specifies the field type and order preferences used for sorting items in the
  60.602 +	contacts database.
  60.603 +
  60.604 +	The contents of the first field in a contact item matching the field type
  60.605 +	is used as the data to sort on. The order can either be ascending or descending.
  60.606 +
  60.607 +	@see CContactDatabase::SortL()
  60.608 +	@see CContactDatabase::SortArrayL()
  60.609 +	@publishedAll
  60.610 +	@deprecated
  60.611 +	*/
  60.612 +		{
  60.613 +	public:
  60.614 +		/** The sort order. */
  60.615 +		enum TOrder
  60.616 +			{
  60.617 +			/** Ascending sort order. */
  60.618 +			EAsc,
  60.619 +			/** Descending sort order. */
  60.620 +			EDesc
  60.621 +			};
  60.622 +	public:
  60.623 +		inline TSortPref();
  60.624 +		inline TSortPref(TFieldType aFieldType,TOrder aOrder=EAsc);
  60.625 +		IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  60.626 +		IMPORT_C void InternalizeL(RReadStream& aStream);
  60.627 +	public:
  60.628 +		/** Specifies whether the sort should be ascending or descending. */
  60.629 +		TOrder iOrder;
  60.630 +		/** The first field matching this field type is used for the text to sort on. */
  60.631 +		TFieldType iFieldType;
  60.632 +		};
  60.633 +
  60.634 +	/** Import and export format flags. Contacts can be imported into
  60.635 +	or exported from the contact database as vCards.
  60.636 +
  60.637 +	The following options are available during import and export.
  60.638 +
  60.639 +	@deprecated This enum is deprecated. It has been replaced by the TOptions enum in
  60.640 +	the plugin convertor class CContactVCardConverter, so that each plugin converter
  60.641 +	can define its own options. */
  60.642 +	enum TOptions
  60.643 +  		{
  60.644 +  		EDefault=0x0000,
  60.645 +		/** Handle Symbian's extended vCard format options. */
  60.646 +		EIncludeX =0x0001,
  60.647 +		/** Support non-standard extensions requried by Symbian PC connectivity software
  60.648 +		and Microsoft, amongst others. */
  60.649 +  		ETTFormat =0x0002,
  60.650 +		/** Don't export the contact ID (for exporting only). */
  60.651 +		EExcludeUid=0x0004,
  60.652 +		/** Decrease the contact's access count when importing and exporting. */
  60.653 +		EDecreaseAccessCount=0x0008,
  60.654 +		/** Only import the first contact in the read stream (for importing only). */
  60.655 +		EImportSingleContact=0x0010,
  60.656 +		/** Increase the contact's access count when importing and exporting. */
  60.657 +		EIncreaseAccessCount=0x0020,
  60.658 +		/** Sets a contact item to the local time when importing. */
  60.659 +		ELocalTime=0x0040,
  60.660 +		/** Allows you to set a template to a contact item that does not exist. */
  60.661 +		ENullTemplateId=0x0080,
  60.662 +		/** For use by implementor of converter plug-in. */
  60.663 +		EConverterDefined1=0x0100,
  60.664 +		/** For use by implementor of converter plug-in. */
  60.665 +		EConverterDefined2=0x0200,
  60.666 +		/** For use by implementor of converter plug-in. */
  60.667 +		EConverterDefined3=0x0400,
  60.668 +		/** For use by implementor of converter plug-in. */
  60.669 +		EConverterDefined4=0x0800,
  60.670 +		/** For use by implementor of converter plug-in. */
  60.671 +		EConverterDefined5=0x1000,
  60.672 +		/** For use by implementor of converter plug-in. */
  60.673 +		EConverterDefined6=0x2000,
  60.674 +		/** For use by implementor of converter plug-in. */
  60.675 +		EConverterDefined7=0x4000,
  60.676 +		/** For use by implementor of converter plug-in. */
  60.677 +		EConverterDefined8=0x8000,
  60.678 +		/** Reserved for use by Symbian. */
  60.679 +		EConverterReserved1=0x00010000, 
  60.680 +		/** Reserved for use by Symbian. */
  60.681 +		EConverterReserved2=0x00020000, 
  60.682 +		/** Reserved for use by Symbian. */
  60.683 +		EConverterReserved3=0x00040000, 
  60.684 +		/** Reserved for use by Symbian. */
  60.685 +		EConverterReserved4=0x00080000, 
  60.686 +		/** Reserved for use by Symbian. */
  60.687 +		EConverterReserved5=0x00100000, 
  60.688 +		/** Reserved for use by Symbian. */
  60.689 +		EConverterReserved6=0x00200000, 
  60.690 +		/** Reserved for use by Symbian. */
  60.691 +		EConverterReserved7=0x00400000, 
  60.692 +		/** Reserved for use by Symbian. */
  60.693 +		EConverterReserved8=0x00800000, 
  60.694 +		/** Reserved for use by Symbian. */
  60.695 +		EConverterReserved9=0x01000000, 
  60.696 +		/** Reserved for use by Symbian. */
  60.697 +		EConverterReserved10=0x02000000, 
  60.698 +		/** Reserved for use by Symbian. */
  60.699 +		EConverterReserved11=0x04000000, 
  60.700 +		/** Reserved for use by Symbian. */
  60.701 +		EConverterReserved12=0x08000000, 
  60.702 +		/** Reserved for use by Symbian. */
  60.703 +		EConverterReserved13=0x10000000, 
  60.704 +		/** Reserved for use by Symbian. */
  60.705 +		EConverterReserved14=0x20000000, 
  60.706 +		/** Reserved for use by Symbian. */
  60.707 +		EConverterReserved15=0x40000000, 
  60.708 +		/** Reserved for use by Symbian. */
  60.709 +		EConverterReserved16=0x80000000 
  60.710 +  		};
  60.711 +	/** Specifies whether the database can be accessed from single or multiple threads. */
  60.712 +	enum TThreadAccess
  60.713 +		{
  60.714 +		/** Allows access to the contacts database from a single thread only. */
  60.715 +		ESingleThread,
  60.716 +		/** Allows for a multi-threaded program to access the contact database from multiple
  60.717 +		threads but note that the contacts model provides no synchronisation support
  60.718 +		for such use. */
  60.719 +		EMultiThread
  60.720 +		};
  60.721 +/**
  60.722 +@internalComponent
  60.723 +*/
  60.724 +	enum TSortDataSource
  60.725 +		{
  60.726 +		ENoOrder,
  60.727 +		EUsesIdentityTableOnly,
  60.728 +		EUsesAllTables,
  60.729 +		EIdentityTableNotUsed //Not used
  60.730 +		};
  60.731 +public:
  60.732 +	IMPORT_C static CContactDatabase* OpenL(TThreadAccess aAccess=ESingleThread);
  60.733 +	IMPORT_C static CContactDatabase* OpenL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
  60.734 +	IMPORT_C static CContactDatabase* CreateL(TThreadAccess aAccess=ESingleThread);
  60.735 +	IMPORT_C static CContactDatabase* CreateL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
  60.736 +	IMPORT_C static CContactDatabase* ReplaceL(TThreadAccess aAccess=ESingleThread);
  60.737 +	IMPORT_C static CContactDatabase* ReplaceL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
  60.738 +	// asynchronous Open
  60.739 +	IMPORT_C static CContactOpenOperation* Open(TRequestStatus& aStatus, TThreadAccess aAccess=ESingleThread);
  60.740 +	IMPORT_C static CContactOpenOperation* Open(const TDesC& aFileName, TRequestStatus& aStatus, TThreadAccess aAccess=ESingleThread);
  60.741 +	IMPORT_C static TBool DatabaseDrive(TDriveUnit &aDriveUnit);
  60.742 +	inline static TInt NullUidValue();
  60.743 +	IMPORT_C static void SetDatabaseDriveL(TDriveUnit aDriveUnit, TBool aCopy=ETrue);
  60.744 +	IMPORT_C static void GetDefaultNameL(TDes &aDes);
  60.745 +	IMPORT_C static void DeleteDefaultFileL();
  60.746 +	// database file mangement
  60.747 +	IMPORT_C static void DeleteDatabaseL(const TDesC& aFileName);
  60.748 +	IMPORT_C static CDesCArray* ListDatabasesL();
  60.749 +	IMPORT_C static CDesCArray* ListDatabasesL(TDriveUnit aDriveUnit);
  60.750 +	IMPORT_C static TBool DefaultContactDatabaseExistsL();
  60.751 +	IMPORT_C static TBool ContactDatabaseExistsL(const TDesC& aFileName);
  60.752 +	IMPORT_C ~CContactDatabase();
  60.753 +
  60.754 +	IMPORT_C void SetViewDefinitionL(CContactViewDef* aView);
  60.755 +	IMPORT_C void SetTextDefinitionL(CContactTextDef* aView);
  60.756 +	IMPORT_C const CContactTextDef* TextDefinition() const;
  60.757 +	IMPORT_C TInt CountL();
  60.758 +	IMPORT_C void SetDbViewContactType(const TUid aUid);
  60.759 +	IMPORT_C TUid GetDbViewContactType() const;
  60.760 +
  60.761 +
  60.762 +	IMPORT_C TContactItemId AddNewContactL(CContactItem& aContact);
  60.763 +
  60.764 +	IMPORT_C CContactItem* CreateContactGroupL(TBool aInTransaction=EFalse);
  60.765 +	IMPORT_C CContactItem* CreateContactGroupLC(TBool aInTransaction=EFalse);
  60.766 +	IMPORT_C CContactItem* CreateContactGroupL(const TDesC& aGroupLabel,TBool aInTransaction=EFalse);
  60.767 +	IMPORT_C CContactItem* CreateContactGroupLC(const TDesC& aGroupLabel,TBool aInTransaction=EFalse);
  60.768 +	IMPORT_C CContactItem* CreateContactCardTemplateL(const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
  60.769 +	IMPORT_C CContactItem* CreateContactCardTemplateLC(const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
  60.770 +	IMPORT_C CContactItem* CreateContactCardTemplateL(const CContactItem* aTemplate,const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
  60.771 +	IMPORT_C CContactItem* CreateContactCardTemplateLC(const CContactItem* aTemplate,const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
  60.772 +
  60.773 +	IMPORT_C CContactIdArray* GetCardTemplateIdListL() const;
  60.774 +	IMPORT_C CContactIdArray* GetGroupIdListL() const;
  60.775 +	IMPORT_C void AddContactToGroupL(TContactItemId aItemId, TContactItemId aGroupId);
  60.776 +	IMPORT_C void AddContactToGroupL(CContactItem& aItem, CContactItem& aGroup);
  60.777 +	IMPORT_C void AddContactToGroupL(TContactItemId aItemId, TContactItemId aGroupId,TBool aInTransaction);
  60.778 +	IMPORT_C void RemoveContactFromGroupL(CContactItem& aItem, CContactItem& aGroup);
  60.779 +	IMPORT_C void RemoveContactFromGroupL(TContactItemId aItemId, TContactItemId aGroupId);
  60.780 +	inline TInt GroupCount() const;
  60.781 +	inline TInt TemplateCount() const;
  60.782 +
  60.783 +	// speed dial functions
  60.784 +	IMPORT_C void SetFieldAsSpeedDialL(CContactItem& aItem, TInt aFieldIndex, TInt aSpeedDialPosition);
  60.785 +	IMPORT_C TContactItemId GetSpeedDialFieldL(TInt aSpeedDialPosition, TDes& aPhoneNumber);
  60.786 +	IMPORT_C void RemoveSpeedDialFieldL(TContactItemId aContactId, TInt aSpeedDialPosition);
  60.787 +
  60.788 +	// reading contacts from the db
  60.789 +	IMPORT_C CContactItem* ReadMinimalContactL(TContactItemId aContactId);
  60.790 +	IMPORT_C CContactItem* ReadMinimalContactLC(TContactItemId aContactId);
  60.791 +	IMPORT_C CContactItem* ReadContactL(TContactItemId aContactId);
  60.792 +	IMPORT_C CArrayPtr<CContactItem>* ReadContactAndAgentL(TContactItemId aContactId);
  60.793 +	IMPORT_C CContactItem* ReadContactL(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
  60.794 +	IMPORT_C CContactItem* ReadContactLC(TContactItemId aContactId);
  60.795 +	IMPORT_C CContactItem* ReadContactLC(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
  60.796 +	IMPORT_C void ReadContactTextDefL(const CContactItem &aItem, TDes &aResult);
  60.797 +	IMPORT_C void ReadContactTextDefL(const CContactItem &aItem, TDes &aResult,CContactTextDef* aTextDef);
  60.798 +	IMPORT_C void ReadContactTextDefL(TContactItemId aContactId, TDes &aResult);
  60.799 +	IMPORT_C void ReadContactTextDefL(TContactItemId aContactId, TDes &aResult,CContactTextDef* aTextDef);
  60.800 +	IMPORT_C CContactItem* OpenContactL(TContactItemId aContactId);
  60.801 +	IMPORT_C CContactItem* OpenContactL(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
  60.802 +	IMPORT_C CContactItem* OpenContactLX(TContactItemId aContactId);
  60.803 +	IMPORT_C CContactItem* OpenContactLX(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
  60.804 +	IMPORT_C void CloseContactL(TContactItemId aContactId);
  60.805 +	IMPORT_C void CommitContactL(const CContactItem& aContact);
  60.806 +	IMPORT_C void DeleteContactL(TContactItemId aContactId);
  60.807 +	IMPORT_C void DeleteContactsL(const CContactIdArray& aContactIds);
  60.808 +  	IMPORT_C CArrayPtr<CContactItem>* ImportContactsL(const TUid& aFormat,RReadStream& aReadStream,TBool& aImportSuccessful,TInt aOption);
  60.809 +  	IMPORT_C void ExportSelectedContactsL(const TUid& aFormat,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOption,TBool aExportPrivateFields=ETrue);
  60.810 +  	IMPORT_C void ExportSelectedContactsL(const TUid& aFormat,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOption,const Versit::TVersitCharSet aCharSet, TBool aExportPrivateFields=ETrue);
  60.811 +	IMPORT_C void CompactL();
  60.812 +
  60.813 +	IMPORT_C CContactIdArray* FindLC(const TDesC& aText,const CContactItemFieldDef *aFieldDef);
  60.814 +	IMPORT_C CIdleFinder* FindAsyncL(const TDesC& aText,const CContactItemFieldDef *aFieldDef, MIdleFindObserver *aObserver);
  60.815 +	IMPORT_C CContactIdArray* FindInTextDefLC(const MDesCArray& aFindWords, const TCallBack &aWordParserCallback);
  60.816 +	IMPORT_C CContactIdArray* FindInTextDefLC(const MDesCArray& aFindWords,CContactTextDef* aTextDef, const TCallBack &aWordParserCallback);
  60.817 +	IMPORT_C CIdleFinder* FindInTextDefAsyncL(const MDesCArray& aFindWords, MIdleFindObserver *aObserver, const TCallBack &aWordParserCallback);
  60.818 +	IMPORT_C CIdleFinder* FindInTextDefAsyncL(const MDesCArray& aFindWords,const CContactTextDef* aTextDef, MIdleFindObserver *aObserver, const TCallBack &aWordParserCallback);
  60.819 +	IMPORT_C CContactIdArray* SortArrayL(const CContactIdArray* aIdArray, const CArrayFix<TSortPref>* aSortOrder);
  60.820 +	IMPORT_C CContactIdArray* SortArrayLC(const CContactIdArray* aIdArray, const CArrayFix<TSortPref>* aSortOrder);
  60.821 +	IMPORT_C void SortByTypeL(CArrayFix<TSortPref>* aSortOrder);
  60.822 +	IMPORT_C void SortL(CArrayFix<TSortPref>* aSortOrder);
  60.823 +	IMPORT_C void SortAsyncL(CArrayFix<TSortPref>* aSortOrder, TRequestStatus& aStatus);
  60.824 +	IMPORT_C void CancelAsyncSort();
  60.825 +	IMPORT_C void SortAsyncL(CArrayFix<TSortPref>* aSortOrder, TRequestStatus& aStatus, MContactSortObserver& aObserver);
  60.826 +
  60.827 +	IMPORT_C void SetOperationTimeOutL(const TInt aMicroSeconds) const;
  60.828 +  	IMPORT_C TPtrC FileUid();
  60.829 +	IMPORT_C CContactActiveCompress* CreateCompressorLC();
  60.830 +	IMPORT_C CContactActiveRecover* CreateRecoverLC();
  60.831 +	IMPORT_C void RecoverL();
  60.832 +	IMPORT_C TBool IsDamaged() const;
  60.833 +	IMPORT_C TBool CompressRequired();
  60.834 +	IMPORT_C void CloseTables();
  60.835 +	IMPORT_C void OpenTablesL();
  60.836 +
  60.837 +	//New Phone Matching function, takes a number as a TDesc& and will match from the right of the string
  60.838 +	//by the the number defined
  60.839 +	IMPORT_C CContactIdArray* MatchPhoneNumberL(const TDesC& aNumber, TInt aMatchLengthFromRight);
  60.840 +
  60.841 +
  60.842 +	IMPORT_C const CContactIdArray* SortedItemsL();
  60.843 +	IMPORT_C TContactItemId TemplateId() const;
  60.844 +	IMPORT_C CContactItem* CreateOwnCardLC();
  60.845 +	IMPORT_C CContactItem* CreateOwnCardL();
  60.846 +	IMPORT_C TContactItemId OwnCardId() const;
  60.847 +	IMPORT_C void SetOwnCardL(const CContactItem& aContact);
  60.848 +
  60.849 +//	Preferred Template
  60.850 +	IMPORT_C TContactItemId PrefTemplateId() const;
  60.851 +	IMPORT_C void SetPrefTemplateL(const CContactItem& aContact);
  60.852 +
  60.853 +//	Current item
  60.854 +	IMPORT_C void SetCurrentItem(const TContactItemId aContactId);
  60.855 +	IMPORT_C TContactItemId GetCurrentItem() const;
  60.856 +
  60.857 +//	Connectivity
  60.858 +	IMPORT_C void SetDateFormatTextL(const TDesC& aFormat);
  60.859 +	IMPORT_C void FilterDatabaseL(CCntFilter& aFilter);
  60.860 +	IMPORT_C CContactIdArray* ContactsChangedSinceL(const TTime& aTime);
  60.861 +	IMPORT_C TContactSyncId SetLastSyncDateL(const TTime& aSyncDate);
  60.862 +	IMPORT_C void SetLastSyncDateL(TContactSyncId aSyncId, const TTime& aSyncDate);
  60.863 +	IMPORT_C void GetLastSyncDateL(TContactSyncId aSyncId, TTime& aSyncDate);
  60.864 +
  60.865 +	IMPORT_C TInt FileSize() const;
  60.866 +	IMPORT_C TInt WastedSpaceInBytes() const;
  60.867 +	IMPORT_C TUint ConnectionId() const;
  60.868 +	IMPORT_C const CContentType &TemplateContentType(const CContactItemField &aField) const;
  60.869 +	IMPORT_C TVersion Version() const;
  60.870 +	IMPORT_C TInt64 MachineId() const;
  60.871 +	IMPORT_C TContactItemId ICCTemplateIdL();
  60.872 +	IMPORT_C TContactItemId ICCTemplateIdL(TUid aPhonebookUid);
  60.873 +	IMPORT_C TContactItemId PhonebookGroupIdL();
  60.874 +
  60.875 +public:	// For test code only
  60.876 +	IMPORT_C void DamageDatabaseL(TInt aSecretCode);	// Don't use this, you don't really want to damage your database do you?
  60.877 +	IMPORT_C void OverrideMachineUniqueId(TInt64 aMachineUniqueId);
  60.878 +	IMPORT_C TInt CntServerResourceCount();
  60.879 +	IMPORT_C void SetCntServerHeapFailure(TInt aTAllocFailType,TInt aRate);
  60.880 +	IMPORT_C CContactIdArray* DeletedContactsLC();
  60.881 +	IMPORT_C void ResetServerSpeedDialsL();
  60.882 +
  60.883 +public:	// For cnt server only
  60.884 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
  60.885 +			 void HandleDatabaseEventL(RDbNotifier::TEvent) {};
  60.886 +#endif
  60.887 +	IMPORT_C void HandleDatabaseEventL(const TContactDbObserverEvent &aEvent);
  60.888 +	IMPORT_C TInt GetCurrentDatabase(TDes& aDatabase) const;
  60.889 +	IMPORT_C TInt SetCurrentDatabase(const TDesC& aDatabase) const;
  60.890 +
  60.891 +	IMPORT_C void StoreSortOrderL();
  60.892 +	IMPORT_C void RestoreSortOrderL();
  60.893 +	IMPORT_C const CArrayFix<TSortPref>* SortOrder() const;
  60.894 +	//Contact Hint Field Access
  60.895 +
  60.896 +	/** Contact view filter flags.
  60.897 +
  60.898 +	These flags define the bits that can be set in filtered views (CContactFilteredView)
  60.899 +	and in the filter passed to CContactDatabase::ContactMatchesHintFieldL() for
  60.900 +	comparing against contact view items (CViewContact).
  60.901 +
  60.902 +	If the item's bit field and the view's filter have the same settings for the
  60.903 +	CContactDatabase::EHome and CContactDatabase::EWork flags and any of the other
  60.904 +	flags are set in both, a match occurs and the item is included in the view.
  60.905 +
  60.906 +	Filters only apply to non-hidden contact fields with content. */
  60.907 +	enum TContactViewFilter
  60.908 +		{
  60.909 +		/** The view is unfiltered; it includes all contact items. */
  60.910 +		EUnfiltered	=0x00000000,
  60.911 +		/** The filter includes items that have an email address. */
  60.912 +		EMailable	=0x00000001,
  60.913 +		/** The filter includes items that have a mobile telephone number. */
  60.914 +		ESmsable	=0x00000002,
  60.915 +		/** The filter includes items that have a landline telephone number. */
  60.916 +		ELandLine	=0x00000004,
  60.917 +		/** The filter includes items that have a fax number. */
  60.918 +		EFaxable	=0x00000008,
  60.919 +		/** The filter includes items that are phonable. (All items with any of the above
  60.920 +		three flags set also have this flag set). */
  60.921 +		EPhonable   =0x00000010,
  60.922 +		/** The filter excludes items without a work telephone number or email address. */
  60.923 +		EWork		=0x00000020,
  60.924 +		/** The filter excludes items without a home telephone number or email address. */
  60.925 +		EHome		=0x00000040,
  60.926 +		/** The filter includes items that have a non-empty ring tone field (a ring tone
  60.927 +		that is associated with the  item). */
  60.928 +		ERingTone	=0x00000080,
  60.929 +		/** The filter includes items that have a non-empty voice dial field (a voice
  60.930 +		recording associated with a telephone number field in the  item). */
  60.931 +		EVoiceDial	=0x00000100,
  60.932 +		/** The filter includes items that have any non empty instant messaging address field. */
  60.933 +		EIMAddress  =0x00000200,
  60.934 +		/** The filter includes items that have a non empty Wireless Village ID field.
  60.935 +		An item with this flag set will also have the EIMAddress flag set. */
  60.936 +		EWirelessVillage = 0x00000400,
  60.937 +		/** Reserved filters for future use. */
  60.938 +		ECustomFilter1	 = 0x00000800,
  60.939 +		/** Reserved filters for future use. */
  60.940 +		ECustomFilter2	 = 0x00001000,
  60.941 +		/** Reserved filters for future use. */
  60.942 +		ECustomFilter3	 = 0x00002000,
  60.943 +		/** Reserved filters for future use. */
  60.944 +		ECustomFilter4	 = 0x00004000
  60.945 +		};
  60.946 +
  60.947 +	IMPORT_C TBool ContactMatchesHintFieldL(TInt aBitWiseFilter,TContactItemId aContactId);
  60.948 +public: // for vCard converter only
  60.949 +	IMPORT_C void DatabaseBeginLC(TBool aIsInTransaction);
  60.950 +	IMPORT_C void DatabaseCommitLP(TBool aIsInTransaction);
  60.951 +  	IMPORT_C CContactItem *UpdateContactLC(TContactItemId aContactId,CContactItem* aNewContact);
  60.952 +	IMPORT_C TContactItemId doAddNewContactL(CContactItem& aContact,TBool aIsTemplate,TBool aIsInTransaction);
  60.953 +	IMPORT_C void doCommitContactL(const CContactItem& aContact,TBool aIsInTransaction, TBool aSendChangedEvent);
  60.954 +	IMPORT_C TContactItemId ContactIdByGuidL(const TDesC& aGuid);
  60.955 +	IMPORT_C void doDeleteContactL(TContactItemId aContactId, TBool aIsInTransaction, TBool aSendChangedEvent, TBool aDecAccessCount=EFalse);
  60.956 +	IMPORT_C CContactItemViewDef* AllFieldsView();
  60.957 +public: // For Symbian use only
  60.958 +	IMPORT_C void DatabaseBeginL(TBool aIsInTransaction);
  60.959 +	IMPORT_C void DatabaseCommitL(TBool aIsInTransaction);
  60.960 +	IMPORT_C void DatabaseRollback();
  60.961 +	IMPORT_C void SetSortedItemsList(CContactIdArray* aSortedItems, CArrayFix<TSortPref>* aSortOrder);
  60.962 +	IMPORT_C CContactIdArray* UnfiledContactsL();
  60.963 +	IMPORT_C static void RecreateSystemTemplateL(const TDesC& aFileName);
  60.964 +public:	// For Contacts Lock Server use only
  60.965 +	IMPORT_C static CContactDatabase* LockServerConnectL(const TDesC& aFileName);
  60.966 +	IMPORT_C static CContactDatabase* LockServerConnectL(const TDesC& aFileName, TInt aOperation);
  60.967 +	IMPORT_C TInt LockServerCallBackL(TUint aServerOperation);
  60.968 +	IMPORT_C void LockServerCleanup();
  60.969 +public:
  60.970 +	IMPORT_C void ExportSelectedContactsL(const TUid& aFormat, const CContactIdArray& aSelectedContactIds, RWriteStream& aWriteStream, TInt aOption, const TInt64 aContactFieldFilter, MConverterCallBack* aCallback, const TVCardVersion aVersion, const TBool aExportTel, Versit::TVersitCharSet aCharSet = Versit::EUTF8CharSet, TBool aExportPrivateFields = ETrue);
  60.971 +private:
  60.972 +	//for cntiter
  60.973 +	TInt ContactPosL(TContactItemId aContactId); 
  60.974 +	TInt DoGotoL(TContactItemId aContactId);
  60.975 +	
  60.976 +	void DoReadContactTextDefL(const CContactItemFieldSet* aFieldSet,TDes& aResult,CContactTextDef* aTextDef);
  60.977 +	CContactItem* OpenNoMergeLCX(TContactItemId aContactId);
  60.978 +
  60.979 +	void FetchGroupAndTemplateListsL();
  60.980 +
  60.981 +public:
  60.982 +	void CancelNotifyRequestL();
  60.983 +	TBool IsICCSynchronisedL();
  60.984 +
  60.985 +	//for LocalView
  60.986 +	void AddObserverL(MContactDbObserver& aChangeNotifier);
  60.987 +	void RemoveObserver(const MContactDbObserver& aChangeNotifier);
  60.988 +
  60.989 +	void OpenDatabaseAsyncL(TRequestStatus& aStatus, const TDesC& aFileName = KNullDesC);
  60.990 +	static void CleanupLastLockedContact(TAny *aDatabase);
  60.991 +
  60.992 +private:
  60.993 +	CContactConverter& CContactDatabase::ConverterL(const TUid& aFormat);
  60.994 +	CContactConverter& CContactDatabase::ConverterL(const TUid& aFormat, const TInt64 aContactFieldFilter, MConverterCallBack* aCallback, const TVCardVersion aVersion,const TBool aExportTel);
  60.995 +	static void CleanupDatabaseRollback(TAny *aDatabase);
  60.996 +
  60.997 +	CContactIdArray* SortLC(const CArrayFix<TSortPref>* aSortOrder, const CContactIdArray* aIdArray);
  60.998 +	TBool CheckType(TUid aUid) const;
  60.999 +	void SortDuplicatesL(const CArrayFix<TSortPref>& aSortOrder,CSortArray& aList,TInt aPos);
 60.1000 +	void SortDuplicatesL(const CArrayFix<TSortPref>& aSortOrder,CSortArray& aList,
 60.1001 +								TInt aIndex,TInt aStartPos,TInt aEndPos);
 60.1002 +	TBool AddContactToSortListL(TContactItemId aReqId, TContactItemId& aActualId,CBase* aItems, TUid& aFieldType, TBool aHasSortOrder);
 60.1003 +	void RemoveFromSortArray(TContactItemId aContactId);
 60.1004 +	void HandleDbObserverEventGroupDeletedL(const TContactItemId aContactId);
 60.1005 +	void RemoveFromGroupIds(const TContactItemId aContactId);
 60.1006 +
 60.1007 +public:
 60.1008 +	static void CleanupTableCancel(TAny *aTable);
 60.1009 +/** A text buffer of KTextFieldMinimalLength used during sorting and searching of contacts  */
 60.1010 +	typedef TBuf<KTextFieldMinimalLength> TTextFieldMinimal;
 60.1011 +	static TUid SpeedDialFieldUidFromSpeedDialPosition(TInt aSpeedDialPosition);
 60.1012 +	void HandleDiskSpaceEvent(TInt aDrive);
 60.1013 +
 60.1014 +	/** State of database connection
 60.1015 +	*/
 60.1016 +	enum TDbConnState
 60.1017 +		{
 60.1018 +		/** Database is open, connection is available for use. */
 60.1019 +		EDbConnectionOpen = 0,
 60.1020 +		/** Initial state. */
 60.1021 +		EDbConnectionNotReady,
 60.1022 +		/** Asynchronous Open failed. */
 60.1023 +		EDbConnectionFailed,
 60.1024 +		/** A Rollback has occurred and a Recover is required now. */
 60.1025 +		EDbConnectionRecoverRequired,
 60.1026 +		/** Write access is locked during backup. */
 60.1027 +		EDbConnectionWriteLockedForBackup,
 60.1028 +		/** The database has been closed whilst a Restore is in progress. */
 60.1029 +		EDbConnectionClosedForRestore,
 60.1030 +		/** Restore is in progress need to close after current transaction. */
 60.1031 +		EDbConnectionNeedToCloseForRestore,
 60.1032 +		};
 60.1033 +	/** Currently unused    */
 60.1034 +	enum TDirection {EAsc,EDesc}; //unused
 60.1035 +	void SetDbConnectionState(TDbConnState aDbConnectionState);
 60.1036 +private:
 60.1037 +	void CheckDbConnForWriteL() const;
 60.1038 +	void CheckDbConnForReadL() const;
 60.1039 +	void CheckDbConnForRecoverL() const;
 60.1040 +	void CheckTemplateField(CContactItem& aCnt);
 60.1041 +	static void ValidateDatabaseNameL(const TParse& aParseName);
 60.1042 +	void StartAsyncActivityL();
 60.1043 +	void EndAsyncActivityL();
 60.1044 +	TBool DatabaseReadyL() const;
 60.1045 +	enum TSvrSessionType //unused
 60.1046 +		{  
 60.1047 +		// Server Session is persistent, for Open(L), CreateL or ReplaceL
 60.1048 +		ESvrSessionPersistent,
 60.1049 +		// Server Session is temporary, for a simple static API
 60.1050 +		ESvrSessionTemporary,
 60.1051 +		// Session is from the Contacts Lock Server
 60.1052 +		ESvrSessionFromLockServer,
 60.1053 +		};
 60.1054 +private: // objec construction/destruction
 60.1055 +
 60.1056 +	CContactDatabase();
 60.1057 +	static CContactDatabase* NewLC();
 60.1058 +	void ConstructL();
 60.1059 +	void CreateViewDefL();
 60.1060 +	MLplPersistenceLayerFactory* FactoryL();
 60.1061 +
 60.1062 +private:
 60.1063 +	CContactItem* doCreateContactGroupLC(const TDesC& aGroupLabel = KNullDesC);
 60.1064 +	void AddCntToOpenedGroupL(TContactItemId aItemId, CContactItem& aGroup);
 60.1065 +	void ReadTemplateIds();
 60.1066 +	void AddToTemplateListL(const TContactItemId aNewTemplateId);
 60.1067 +	void RemoveFromTemplateList(const TContactItemId aOldTemplateId);
 60.1068 +	TBool SystemTemplateFieldsValid(const CContactItem& aContact);
 60.1069 +	void RespondToEventL(const TContactDbObserverEventType aEventType, const TContactItemId aContactId);
 60.1070 +	void HandleDbObserverEventGroupOrContactChangedL(const TContactItemId aContactId);
 60.1071 +	void HandleDbObserverEventGroupOrContactAddedL(const TContactDbObserverEventType aEventType, const TContactItemId aContactId);
 60.1072 +   	TBool CheckSortError(TInt aError);
 60.1073 +   	TInt NextExistingL(TInt aIndex);
 60.1074 +   	TInt PreviousExistingL(TInt aIndex);
 60.1075 +   	void ReSortL(CArrayFix<TSortPref>* aSortOrder);
 60.1076 +   	void InsertInSortArray(const CContactItem& aContact);
 60.1077 +   	void MoveInSortArray(const CContactItem& aContact);
 60.1078 +   	void InsertInSortArrayL(const CContactItem& aContact);
 60.1079 +   	void MoveInSortArrayL(const CContactItem& aContact);
 60.1080 +	TInt NewSortIndexL(const CContactItem& aContact,TInt aStartPos,TInt aEndPos);
 60.1081 +	TInt CompareSortFieldsL(const CContactItem& aContact);
 60.1082 +   	void ConstructTableUsageFlagsFromSortOrderL(TInt& aFlags);
 60.1083 +   	void LoadSyncPluginL();
 60.1084 +   	void DeleteContactSendEventActionL(TContactItemId aContactId, TCntSendEventAction aActionType);
 60.1085 +
 60.1086 +private:
 60.1087 +	// Member variables
 60.1088 +	RCntModel*					iCntSvr;			//was RDbNamedDatabase iDatabase;
 60.1089 +	CProxyFactory*				iProxyFactory;		//was RDbs iDbsSession;
 60.1090 +	TDbConnState				iDbConnectionState;	//was CContactClientSession* iContactClientSession;
 60.1091 +	CDataBaseChangeObserver*	iDataBaseObserver;	//was CPrivateDbChangeNotifier* iDbChangeNotifier;
 60.1092 +	CCntIdleSorter*				iIdleSorter;		//was CPrivateSvrSessionManager* iServerSessionManager;
 60.1093 +	CPrivConverter*				iConv;				//was TContactItemId iLastLockedContactId;
 60.1094 +	TBool						iTablesOpen;		//was TContactItemId iTemplateId;
 60.1095 +	CContactItemViewDef*		iAllFieldsView;		//was TContactItemId iOwnCardId;
 60.1096 +	TUid						iDbViewContactType;	//used to select which contact type to sort / search on
 60.1097 +	
 60.1098 +	//These two members are accessed via the inline functions!
 60.1099 +	CContactIdArray* iCardTemplateIds;
 60.1100 +	CContactIdArray* iGroupIds;
 60.1101 +
 60.1102 +	CCntTemplateCache* iTemplateCache; //was CContactTables* iItemTable;
 60.1103 +	CContactTextDef* iTextDef;		//remains
 60.1104 +	CContactIdArray* iSortedItems;	//remains
 60.1105 +	CContactViewDef* iView;			//remains
 60.1106 +	
 60.1107 +	// Used in SetLastSyncDateL() and GetLastSyncDateL()
 60.1108 +	TTime iSyncDate;	//was TInt64 iMachineUniqueId;
 60.1109 +	TCollationMethod iCollateMethod; //remains: used for sorting contacts
 60.1110 +
 60.1111 +	TInt iAsyncActivityCount;
 60.1112 +	CContactSynchroniser* iContactSynchroniser; //a handle to the synchroniser plugin
 60.1113 +	CArrayFix<TSortPref>* iSortOrder; // holds a sort order passed into SortL(), as in cntmodelv1, 
 60.1114 +									  // for delayed deletion to maintain backwards compatibility
 60.1115 +	};
 60.1116 +
 60.1117 +
 60.1118 +class CContactChangeNotifier : public CBase
 60.1119 +/** Receives events reporting changes to a contact database.
 60.1120 +
 60.1121 +After the change notifier has been created, it notifies the specified
 60.1122 +observer whenever a change takes place to the database.
 60.1123 +
 60.1124 +@publishedAll
 60.1125 +@released
 60.1126 +*/
 60.1127 +	{
 60.1128 +public:
 60.1129 +	IMPORT_C ~CContactChangeNotifier();
 60.1130 +	IMPORT_C static CContactChangeNotifier* NewL(CContactDatabase& aDatabase, MContactDbObserver *aObserver);
 60.1131 +private:
 60.1132 +	CContactChangeNotifier(CContactDatabase& aDatabase, MContactDbObserver *aObserver);
 60.1133 +	void ConstructL();
 60.1134 +private:
 60.1135 +	CContactDatabase &iDatabase;
 60.1136 +	MContactDbObserver* iObserver;
 60.1137 +	};
 60.1138 +
 60.1139 +
 60.1140 +/** The UID of the default vCard converter implemented by an ECom plugin. */
 60.1141 +#define KUidEComCntVCardConverterDefaultImplementation  0x102035F9
 60.1142 +/** The UID of the default vCard converter plugin implementation. This
 60.1143 +implementation is independent of the plugin framework used. */
 60.1144 +#define KUidVCardConvDefaultImpl 	KUidEComCntVCardConverterDefaultImplementation
 60.1145 +
 60.1146 +/** The UID of the vCard converter ECom plugin interface. */
 60.1147 +const TUid KUidEcomCntVCardConverterInterface = {0x102035F7};
 60.1148 +
 60.1149 +/** The UID of the phone number parser ECom plugin interface. */
 60.1150 +const TUid KUidEcomCntPhoneNumberParserInterface = {0x102035FA};
 60.1151 +
 60.1152 +/** The UID of PBAP vCard Converter plugin Implementation.
 60.1153 +@prototype
 60.1154 +@internalTechnology
 60.1155 +*/
 60.1156 +#define KUidPBAPVCardConvImpl 0xA00015C1
 60.1157 +
 60.1158 +class TPluginParameters
 60.1159 +/**
 60.1160 +Class used to pack the extra arguments required for a PBAP conveter,
 60.1161 +PBAP client provides these arguments using overloaded CContactDatabase::ExportSelectedContacts.
 60.1162 +@prototype
 60.1163 +@internalComponent
 60.1164 +*/
 60.1165 +{
 60.1166 +public:
 60.1167 +	TPluginParameters(TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel);
 60.1168 +	TInt64 GetFilter()const;
 60.1169 +	MConverterCallBack* GetCallback()const;
 60.1170 +	TVCardVersion GetExportVersion()const;
 60.1171 +	TBool IsExportTel()const;
 60.1172 +private:
 60.1173 +	TInt64 iFilter;
 60.1174 +	MConverterCallBack* iCallback;
 60.1175 +	TVCardVersion iVersion;
 60.1176 +	TBool iExportTel;
 60.1177 +};
 60.1178 +
 60.1179 +inline TBool TPluginParameters::IsExportTel()const
 60.1180 +	{
 60.1181 +	return iExportTel;
 60.1182 +	}
 60.1183 +inline TInt64 TPluginParameters::GetFilter()const
 60.1184 +	{
 60.1185 +	return iFilter;
 60.1186 +	}
 60.1187 +
 60.1188 +inline MConverterCallBack* TPluginParameters::GetCallback()const
 60.1189 +	{
 60.1190 +	return iCallback;
 60.1191 +	}
 60.1192 +
 60.1193 +inline TVCardVersion TPluginParameters::GetExportVersion()const
 60.1194 +	{
 60.1195 +	return iVersion;
 60.1196 +	}
 60.1197 +
 60.1198 +inline	TPluginParameters::TPluginParameters(TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel):iFilter(aContactFieldFilter), iCallback(aCallback), iVersion(aVersion), iExportTel(aExportTel)
 60.1199 +	{
 60.1200 +	}
 60.1201 +
 60.1202 +class CContactConverter : public CBase
 60.1203 +/** Provides functionality to import and export vCards.
 60.1204 +One or more vCards can be imported from a read stream (the vCards are converted 
 60.1205 +into contact items and added to the database). Also, contact items can be exported as vCards.
 60.1206 +
 60.1207 +@publishedPartner
 60.1208 +@released
 60.1209 +*/
 60.1210 +	{
 60.1211 +public:
 60.1212 +	virtual CArrayPtr<CContactItem>*  ImportL(CContactDatabase& aDb,RReadStream& aReadStream,TBool& aImportSuccessful,TInt aOptions,TBool aImportSingle)=0;
 60.1213 +	virtual void ExportL(CContactDatabase& aDb,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOptions,const Versit::TVersitCharSet aCharSet,TBool aExportPrivateFields, TInt aCommitNumber=10)=0;
 60.1214 +	};
 60.1215 +
 60.1216 +
 60.1217 +class CContactEcomConverter : public CContactConverter
 60.1218 +/**
 60.1219 +It provides Ecom Framework based facilities to resolve and load the appropriate implementations at run-time.
 60.1220 +The framework supplies a default resolver for selecting appropriate implementations.
 60.1221 +@publishedPartner
 60.1222 +@released
 60.1223 +*/
 60.1224 +	{
 60.1225 +public:
 60.1226 +	static CContactEcomConverter* NewL(TUid aImplementationUid);
 60.1227 +	static CContactEcomConverter* NewL(TUid aImplementationUid, TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel);
 60.1228 +	inline virtual ~CContactEcomConverter();
 60.1229 +private:
 60.1230 +	TUid iDtor_ID_Key;
 60.1231 +	};
 60.1232 +
 60.1233 +inline CContactEcomConverter* CContactEcomConverter::NewL(TUid aImplementationUid)
 60.1234 +/** Allocates and instantiates an interface implementation to satisfy the specified interface.
 60.1235 +@param aImplementationUid Denotes the type of implemetation that needs to be loaded.
 60.1236 +@return A pointer to a newly allocated and initialised object of type CContactEcomConverter.   */
 60.1237 +	
 60.1238 +{
 60.1239 +	TAny* ptr = REComSession::CreateImplementationL(aImplementationUid,
 60.1240 +													_FOFF(CContactEcomConverter,
 60.1241 +														  iDtor_ID_Key));
 60.1242 +	return reinterpret_cast<CContactEcomConverter*>(ptr);
 60.1243 +}
 60.1244 +
 60.1245 +inline CContactEcomConverter* CContactEcomConverter::NewL(TUid aImplementationUid, TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel)
 60.1246 +/** Allocates and instantiates an interface implementation for PBAP export.
 60.1247 +@param aImplementationUid Denotes the type of implemetation that needs to be loaded.
 60.1248 +@param aContactFieldFilter Specifies contact fields to be exported.
 60.1249 +@param aCallback Callback to client for providing intra-contact properties.
 60.1250 +@param aVersion Denotes the vCard version for contact export.
 60.1251 +@return A pointer to a newly allocated and initialised object of type CContactEcomConverter.   */
 60.1252 +	
 60.1253 +{	
 60.1254 +	TPluginParameters partr(aContactFieldFilter,aCallback,aVersion,aExportTel);
 60.1255 +	
 60.1256 +	TAny* ptr = REComSession::CreateImplementationL(aImplementationUid,
 60.1257 +													_FOFF(CContactEcomConverter,
 60.1258 +													  iDtor_ID_Key), &partr);
 60.1259 +	return reinterpret_cast<CContactEcomConverter*>(ptr);
 60.1260 +}
 60.1261 +
 60.1262 +inline CContactEcomConverter::~CContactEcomConverter()
 60.1263 +/** The destruction of the interface implementation referred to by iDtor_ID_Key */
 60.1264 +	{
 60.1265 +	REComSession::DestroyedImplementation(iDtor_ID_Key);
 60.1266 +	}
 60.1267 +
 60.1268 +
 60.1269 +class CContactPhoneNumberParser : public CBase
 60.1270 +/** Provides functionality to extract the real phone number from a contact's phone number field.
 60.1271 +@publishedPartner
 60.1272 +@released
 60.1273 +*/
 60.1274 +	{
 60.1275 +public:
 60.1276 +	virtual void ExtractRawNumber(const TDesC& aTextualNumber, TDes& aRawNumber)=0;
 60.1277 +	};
 60.1278 +
 60.1279 +
 60.1280 +class CContactEcomPhoneNumberParser : public CContactPhoneNumberParser
 60.1281 +/** It provides Ecom Framework based facilities to resolve and load the appropriate implementations at run-time.
 60.1282 +The framework supplies a default resolver for selecting appropriate implementations.
 60.1283 +@publishedPartner
 60.1284 +@released
 60.1285 +*/
 60.1286 +	{
 60.1287 +public:
 60.1288 +	static CContactEcomPhoneNumberParser* NewL(TUid aImplementationUid);
 60.1289 +	inline virtual ~CContactEcomPhoneNumberParser();
 60.1290 +private:
 60.1291 +	TUid iDtor_ID_Key;
 60.1292 +	};
 60.1293 +
 60.1294 +inline CContactEcomPhoneNumberParser* CContactEcomPhoneNumberParser::NewL(TUid aImplementationUid)
 60.1295 +/** Allocates and Instantiates an interface implementation to satisfy the specified interface. 
 60.1296 +@param aImplementationUid denotes the type of implemetation that need to be loaded.
 60.1297 +@return A pointer to a newly allocated and initialised object of type CContactEcomPhoneNumberParser.   */
 60.1298 +	{
 60.1299 +	TAny* ptr = REComSession::CreateImplementationL(aImplementationUid,
 60.1300 +													_FOFF(CContactEcomPhoneNumberParser,
 60.1301 +														  iDtor_ID_Key));
 60.1302 +	return reinterpret_cast<CContactEcomPhoneNumberParser*>(ptr);
 60.1303 +	}
 60.1304 +
 60.1305 +inline CContactEcomPhoneNumberParser::~CContactEcomPhoneNumberParser()
 60.1306 +/** The destruction of the interface implementation referred to by iDtor_ID_Key */
 60.1307 +	{
 60.1308 +	REComSession::DestroyedImplementation(iDtor_ID_Key);
 60.1309 +	}
 60.1310 +
 60.1311 +
 60.1312 +inline TInt CContactDatabase::TemplateCount() const
 60.1313 +/** Gets the number of contact card templates that exist in the database.
 60.1314 +This does not include the system template.
 60.1315 +@deprecated
 60.1316 +@return The number of contact card templates that exist in the database. */
 60.1317 +	{ return iCardTemplateIds->Count(); }
 60.1318 +
 60.1319 +inline TInt CContactDatabase::GroupCount() const
 60.1320 +/** Gets the number of groups that exist in the database.
 60.1321 +@deprecated
 60.1322 +@return The number of groups that exist in the database. */
 60.1323 +	{ return iGroupIds->Count(); }
 60.1324 +
 60.1325 +inline TInt CContactDatabase::NullUidValue()
 60.1326 +/** Gets the NULL contact ID value.
 60.1327 +
 60.1328 +@return KNullContactId. */
 60.1329 +	{ return KNullContactId; }
 60.1330 +
 60.1331 +inline TUid CContactItemViewDef::operator[](TInt aIndex) const
 60.1332 +/** Gets the field type located at a specified index position within the field type array.
 60.1333 +
 60.1334 +@param aIndex The position of the field type in the array, relative to zero. It
 60.1335 +must be non-negative and less than the number of objects in the array otherwise the
 60.1336 +function raises a panic.
 60.1337 +@return The field type located at index aIndex within the array (this is equivalent to a
 60.1338 +TFieldType). */
 60.1339 +    { return iFieldTypes[aIndex]; }
 60.1340 +
 60.1341 +inline TInt CContactItemViewDef::Count() const
 60.1342 +/** Gets the number of field types in the view definition.
 60.1343 +
 60.1344 +@return The number of field types in the view definition. */
 60.1345 +    { return iFieldTypes.Count(); }
 60.1346 +
 60.1347 +inline void CContactItemViewDef::Reset()
 60.1348 +/** Deletes all field types from the view definition's field type array. */
 60.1349 +    { iFieldTypes.Reset(); }
 60.1350 +
 60.1351 +inline CContactItemViewDef::TUse CContactItemViewDef::Use() const
 60.1352 +/** Gets the view definition's use.
 60.1353 +
 60.1354 +@return The current TUse setting. */
 60.1355 +	{ return iUse; }
 60.1356 +
 60.1357 +inline void CContactItemViewDef::SetUse(CContactItemViewDef::TUse aUse)
 60.1358 +/** Sets the view definition's use.
 60.1359 +
 60.1360 +@param aUse The new TUse setting. */
 60.1361 +	{ iUse=aUse; }
 60.1362 +
 60.1363 +inline CContactItemViewDef::TMode CContactItemViewDef::Mode() const
 60.1364 +/** Gets the view definition's mode.
 60.1365 +
 60.1366 +@return The current TMode setting. */
 60.1367 +	{ return iMode; }
 60.1368 +
 60.1369 +inline void CContactItemViewDef::SetMode(CContactItemViewDef::TMode aMode)
 60.1370 +/** Sets the view definition's mode.
 60.1371 +
 60.1372 +@param aMode The new TMode setting. */
 60.1373 +	{ iMode=aMode; }
 60.1374 +
 60.1375 +inline CContactDatabase::TSortPref::TSortPref()
 60.1376 +	: iOrder(EAsc), iFieldType(KNullUid)
 60.1377 +/** Constructs a TSortPref object. The order is initialised to EAsc and the field
 60.1378 +type to KNullUid.
 60.1379 +@deprecated
 60.1380 +*/
 60.1381 +	{}
 60.1382 +
 60.1383 +inline CContactDatabase::TSortPref::TSortPref(TFieldType aFieldType,TOrder aOrder)
 60.1384 +	: iOrder(aOrder), iFieldType(aFieldType)
 60.1385 +/** Constructs the TSortPref object with a field type and an order.
 60.1386 +@param aFieldType Specifies the field type to sort on.
 60.1387 +@param aOrder Specifies the sort order.
 60.1388 +@deprecated
 60.1389 +*/
 60.1390 +	{}
 60.1391 +
 60.1392 +
 60.1393 +/** A class that manages the asynchronous open operation for a CContactDatabase.
 60.1394 +
 60.1395 +The object can be deleted before the asynchronous open completes. This will set
 60.1396 +the state of the client supplied TRequestStatus to KErrCancel.
 60.1397 +
 60.1398 +When the client supplied TRequestStatus is completed with KErrNone the TakeDatabase()
 60.1399 +method is called to pass ownership of the open database to the client.
 60.1400 +
 60.1401 +@publishedAll
 60.1402 +@released
 60.1403 +
 60.1404 +@see CContactDatabase::OpenL()
 60.1405 +*/
 60.1406 +class CContactOpenOperation : private CActive
 60.1407 +	{
 60.1408 +public:
 60.1409 +	IMPORT_C CContactDatabase* TakeDatabase();
 60.1410 +	IMPORT_C ~CContactOpenOperation();
 60.1411 +
 60.1412 +	static CContactOpenOperation* NewL(TRequestStatus& aPtrStatus);
 60.1413 +	static CContactOpenOperation* NewL(const TDesC& aFileName, TRequestStatus& aPtrStatus);
 60.1414 +
 60.1415 +private:
 60.1416 +	// from CActive (for BC reasons)
 60.1417 +	void RunL();
 60.1418 +	TInt RunError(TInt aError);
 60.1419 +	void DoCancel();
 60.1420 +
 60.1421 +	CContactOpenOperation (TRequestStatus& aClientStatus);
 60.1422 +	void ConstructL		  (const TDesC& aFileName = KNullDesC);
 60.1423 +
 60.1424 +private:
 60.1425 +	TRequestStatus*  	iClientStatus;
 60.1426 +	CContactDatabase*	iContactDatabase;
 60.1427 +	};
 60.1428 +
 60.1429 +
 60.1430 +#endif //__CNTDB_H__
    61.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.2 +++ b/epoc32/include/app/cntdbobs.h	Wed Mar 31 12:27:01 2010 +0100
    61.3 @@ -0,0 +1,150 @@
    61.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    61.5 +// All rights reserved.
    61.6 +// This component and the accompanying materials are made available
    61.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    61.8 +// which accompanies this distribution, and is available
    61.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   61.10 +//
   61.11 +// Initial Contributors:
   61.12 +// Nokia Corporation - initial contribution.
   61.13 +//
   61.14 +// Contributors:
   61.15 +//
   61.16 +// Description:
   61.17 +//
   61.18 +
   61.19 +#if !defined(__CNTDBOBS_H__)
   61.20 +#define __CNTDBOBS_H__
   61.21 +
   61.22 +#if !defined(__E32DEF_H__)
   61.23 +#include <e32def.h>
   61.24 +#endif
   61.25 +
   61.26 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ ) && !defined __D32DBMS_H__ 
   61.27 +#include <d32dbms.h>
   61.28 +#else
   61.29 +#include <s32std.h>
   61.30 +#include <f32file.h>
   61.31 +#endif 
   61.32 +
   61.33 +#include <cntdef.h> //for tcontactitemid 
   61.34 +
   61.35 +/** Change event type. For events which update, delete or add a contact item, the 
   61.36 +ID of the item affected is provided in the TContactDbObserverEvent struct.
   61.37 +@publishedAll
   61.38 +@released
   61.39 + */
   61.40 +enum TContactDbObserverEventType
   61.41 +	{
   61.42 +	/** Null event type. */
   61.43 +	EContactDbObserverEventNull,
   61.44 +	/** Not currently used. */
   61.45 +	EContactDbObserverEventUnused,
   61.46 +	/** A contact item (not a template, group or own card) has been changed. */
   61.47 +	EContactDbObserverEventContactChanged,
   61.48 +	/** A contact item (not a template, group or own card) has been deleted. */
   61.49 +	EContactDbObserverEventContactDeleted,
   61.50 +	/** A contact item (not a template or group) has been added. */
   61.51 +	EContactDbObserverEventContactAdded,
   61.52 +	/** Unknown change event type. */
   61.53 +	EContactDbObserverEventUnknownChanges,
   61.54 +	/** Recover from a damaged database. */
   61.55 +	EContactDbObserverEventRecover,
   61.56 +	/** Rollback from a change to the database. */
   61.57 +	EContactDbObserverEventRollback,
   61.58 +	/** Database tables closed. */
   61.59 +	EContactDbObserverEventTablesClosed,
   61.60 +	/** Database tables opened. */
   61.61 +	EContactDbObserverEventTablesOpened,
   61.62 +	/** A contact card template has changed. */
   61.63 +	EContactDbObserverEventTemplateChanged,
   61.64 +	/** A contact card template has been deleted. */
   61.65 +	EContactDbObserverEventTemplateDeleted, 
   61.66 +	/** A contact card template has been added. */
   61.67 +	EContactDbObserverEventTemplateAdded,
   61.68 +	/** The database's current item has been deleted. */
   61.69 +	EContactDbObserverEventCurrentItemDeleted,
   61.70 +	/** The database's current item has changed. */
   61.71 +	EContactDbObserverEventCurrentItemChanged,
   61.72 +	/** The database's own card has changed. */
   61.73 +	EContactDbObserverEventOwnCardChanged,
   61.74 +	/** The database's preferred template has been set. (See CContactDatabase::SetPrefTemplateL()). */
   61.75 +	EContactDbObserverEventPreferredTemplateChanged,
   61.76 +	/** An own card has been deleted from the database. */
   61.77 +	EContactDbObserverEventOwnCardDeleted,
   61.78 +	/** A contact item group has been added. */
   61.79 +	EContactDbObserverEventGroupAdded,
   61.80 +	/** A contact item group has been updated. */
   61.81 +	EContactDbObserverEventGroupChanged,
   61.82 +	/** A contact item group has been deleted from the database. */
   61.83 +	EContactDbObserverEventGroupDeleted,
   61.84 +	/** The current database has changed. */
   61.85 +	EContactDbObserverEventCurrentDatabaseChanged,
   61.86 +	/** The phone number assigned to one of the speed dial positions 
   61.87 +	has been replaced, removed or modified.*/
   61.88 +	EContactDbObserverEventSpeedDialsChanged, 
   61.89 +	/** Not currently used. */
   61.90 +	EContactDbObserverEventSortOrderChanged,
   61.91 +	/** Contacts DB about to be backed up  */
   61.92 +	EContactDbObserverEventBackupBeginning,
   61.93 +	/** Contacts DB about to be restored */
   61.94 +	EContactDbObserverEventRestoreBeginning,
   61.95 +	/** The backup/restore operation has completed. */
   61.96 +	EContactDbObserverEventBackupRestoreCompleted,
   61.97 +	/** The restore operation has completed but the database could not be opened. */
   61.98 +	EContactDbObserverEventRestoreBadDatabase,
   61.99 +	/** Database has been compressed. */
  61.100 +	EContactDbObserverEventCompress
  61.101 +	};
  61.102 +
  61.103 +struct TContactDbObserverEvent
  61.104 +/** Contact database change event details. These include the type of change event 
  61.105 +and the ID of the contact item affected by the change, if relevant.
  61.106 +
  61.107 +An object of this type is passed to a contact database's change observer, 
  61.108 +see MContactDbObserver::HandleDatabaseEventL(). 
  61.109 +@publishedAll
  61.110 +@released
  61.111 +*/
  61.112 +	{
  61.113 +	/** The change event type. */
  61.114 +	TContactDbObserverEventType iType;
  61.115 +	/** The ID of the contact item affected. */
  61.116 +	TContactItemId iContactId;
  61.117 +	/** Identifies which connection to the contacts server generated the event. Use 
  61.118 +	CContactDatabase::ConnectionId() to get the ID of the current connection.
  61.119 +	
  61.120 +	Set to zero if the event has no meaningful connection ID. */
  61.121 +	TUint iConnectionId;
  61.122 +	};
  61.123 +
  61.124 +class MContactDbObserver
  61.125 +/** The interface for an observer that handles changes to a contact database.
  61.126 +
  61.127 +It specifies a single pure virtual function which should be implemented by 
  61.128 +the observer class to test the type of the change event (see the TContactDbObserverEventType 
  61.129 +enum) and handle it.
  61.130 +
  61.131 +There is no need for the observer class to explicitly test for all possible 
  61.132 +event types - the event is for information only and event types which are of no interest 
  61.133 +to the observer class can safely be ignored.
  61.134 +
  61.135 +The change event type (TContactDbObserverEventType) may be augmented 
  61.136 +in future releases with additional values.
  61.137 +
  61.138 +A contact database observer pointer is passed to the NewL() function for the 
  61.139 +CContactChangeNotifier class. 
  61.140 +@publishedAll
  61.141 +@released
  61.142 +*/
  61.143 +	{
  61.144 +public:
  61.145 +	/** Tests the contact database observer event type and handles it. The ID of a 
  61.146 +	contact affected by the change event, if relevant, can be retrieved via TContactDbObserverEvent::iContactId.
  61.147 +	
  61.148 +	@param aEvent Provides information about the change event. */
  61.149 +	virtual void HandleDatabaseEventL(TContactDbObserverEvent aEvent)=0;
  61.150 +	};
  61.151 +
  61.152 +
  61.153 +#endif
    62.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.2 +++ b/epoc32/include/app/cntdef.h	Wed Mar 31 12:27:01 2010 +0100
    62.3 @@ -0,0 +1,1402 @@
    62.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    62.5 +// All rights reserved.
    62.6 +// This component and the accompanying materials are made available
    62.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    62.8 +// which accompanies this distribution, and is available
    62.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   62.10 +//
   62.11 +// Initial Contributors:
   62.12 +// Nokia Corporation - initial contribution.
   62.13 +//
   62.14 +// Contributors:
   62.15 +//
   62.16 +// Description:
   62.17 +//
   62.18 +
   62.19 +#ifndef __CNTDEF_H__
   62.20 +#define __CNTDEF_H__
   62.21 +
   62.22 +#include <e32base.h>
   62.23 +
   62.24 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
   62.25 +#include <d32dbms.h>
   62.26 +#else
   62.27 +#include <s32std.h>
   62.28 +#include <f32file.h>
   62.29 +#endif
   62.30 +
   62.31 +#include <cntdef.hrh>
   62.32 +
   62.33 +
   62.34 +// Constants
   62.35 +
   62.36 +/**
   62.37 +@internalTechnology
   62.38 +@released
   62.39 +*/
   62.40 +const TInt KSpeedDialPhoneLength = 64;
   62.41 +
   62.42 +/**
   62.43 +@internalTechnology
   62.44 +@released
   62.45 +*/
   62.46 +const TInt KCntMinSpeedDialIndex = 1;
   62.47 +
   62.48 +/**
   62.49 +@internalTechnology
   62.50 +@released
   62.51 +*/
   62.52 +const TInt KCntMaxSpeedDialIndex = 9;
   62.53 +
   62.54 +/**
   62.55 +Phone Match Length
   62.56 +@internalTechnology
   62.57 +@released
   62.58 +*/
   62.59 +const TInt KMaxPhoneMatchLength = 15;
   62.60 +
   62.61 +/**
   62.62 +@internalTechnology
   62.63 +@released
   62.64 +*/
   62.65 +const TInt KLowerSevenDigits = 7;
   62.66 +
   62.67 +/**
   62.68 +Used for firstname, lastname, companyname, secondname and their
   62.69 +associated pronunciation fields and e-mail address
   62.70 +@internalTechnology
   62.71 +@released
   62.72 +*/
   62.73 +const TInt KCntMaxTextFieldLength=255;
   62.74 +
   62.75 +// Type definitions
   62.76 +
   62.77 +/**
   62.78 +@internalTechnology
   62.79 +@released
   62.80 +*/
   62.81 +typedef TBuf<KSpeedDialPhoneLength> TSpeedDialPhoneNumber;
   62.82 +
   62.83 +/** Contact item ID. These are used to uniquely identify contact items within a
   62.84 +contacts database. Contact items include contact cards, contact card templates,
   62.85 +contact card groups and own cards. Contact item IDs are also used to uniquely
   62.86 +identify agents.
   62.87 +@publishedAll
   62.88 +@released
   62.89 +*/
   62.90 +typedef TInt32 TContactItemId;
   62.91 +
   62.92 +/** A UID which identifies a contact item field's type. The possible values are
   62.93 +defined as UIDs in cntdef.h.
   62.94 +@publishedAll
   62.95 +@released
   62.96 +*/
   62.97 +typedef TUid TFieldType;
   62.98 +
   62.99 +/** A contact item field's storage type.
  62.100 +
  62.101 +This is an unsigned integer value which identifies the type of data stored
  62.102 +in a contact item field. The possible values are defined in cntdef.hrh as:
  62.103 +
  62.104 +- KStorageTypeText (used by CContactTextFields)
  62.105 +
  62.106 +- KStorageTypeStore (used by CContactStoreFields)
  62.107 +
  62.108 +- KStorageTypeContactItemId (used by CContactAgentFields)
  62.109 +
  62.110 +- KStorageTypeDateTime (used by CContactDateFields)
  62.111 +
  62.112 +Note that numeric fields are not supported. Numbers (e.g. telephone
  62.113 +numbers) are stored in the database using text fields.
  62.114 +@publishedAll
  62.115 +@released
  62.116 +*/
  62.117 +typedef TUint TStorageType;
  62.118 +
  62.119 +/** Machine identifier.
  62.120 +
  62.121 +This is used when synchronising the contact database to identify the
  62.122 +machine with which the database has been synchronised.
  62.123 +@see CContactDatabase::SetLastSyncDateL()
  62.124 +@see CContactDatabase::GetLastSyncDateL().
  62.125 +@publishedAll
  62.126 +@released
  62.127 +*/
  62.128 +typedef TInt32 TContactSyncId;
  62.129 +
  62.130 +/** Stores the value of KUidContactsDbFile as an integer.
  62.131 +@publishedAll
  62.132 +@released
  62.133 +*/
  62.134 +const TInt KUidContactsDbFileValue=0x100065FF;
  62.135 +/**
  62.136 +The third UID of the contacts database file, c:\\system\\data\\contacts.cdb.
  62.137 +This should be used by file recogniser implementations.
  62.138 +@publishedAll
  62.139 +@released
  62.140 +*/
  62.141 +const TUid KUidContactsDbFile={KUidContactsDbFileValue};
  62.142 +
  62.143 +
  62.144 +/** NULL contact item ID. Indicates that no contact item is present.
  62.145 +@publishedAll
  62.146 +@released
  62.147 +*/
  62.148 +const TContactItemId KNullContactId=-1;
  62.149 +/**
  62.150 +The ID of the system template.
  62.151 +@publishedAll
  62.152 +@released
  62.153 +*/
  62.154 +const TContactItemId KGoldenTemplateId=0;
  62.155 +
  62.156 +/** Identifies a vCard that has been pasted from the clipboard into the Contacts application.
  62.157 +@publishedAll
  62.158 +@released
  62.159 +*/
  62.160 +const TUid KClipboardUidTypeVCard={0x100038f6};
  62.161 +
  62.162 +/** Identifies a contact card (CContactCard).
  62.163 +@publishedAll
  62.164 +@released
  62.165 +*/
  62.166 +const TUid KUidContactCard={KUidContactCardValue};
  62.167 +/** Identifies a contact group (CContactGroup).
  62.168 +@publishedAll
  62.169 +@released
  62.170 +*/
  62.171 +const TUid KUidContactGroup={KUidContactGroupValue};
  62.172 +/** Identifies the system template (CContactTemplate).
  62.173 +@publishedAll
  62.174 +@released
  62.175 +*/
  62.176 +const TUid KUidContactTemplate={KUidContactTemplateValue};
  62.177 +/** Identifies an own card (CContactOwnCard).
  62.178 +@publishedAll
  62.179 +@released
  62.180 +*/
  62.181 +const TUid KUidContactOwnCard={KUidContactOwnCardValue}; 
  62.182 +/** Identifies a non-system template (CContactCardTemplate). 
  62.183 +@publishedAll
  62.184 +@released
  62.185 +*/
  62.186 +const TUid KUidContactCardTemplate={KUidContactCardTemplateValue};
  62.187 +/** The UID that identifies ICC entries. These are a special type of
  62.188 +contact item that are stored in the SIM (ICC) card on the phone.
  62.189 +
  62.190 +@publishedAll
  62.191 +@released
  62.192 +*/
  62.193 +const TUid KUidContactICCEntry={KUidContactICCEntryValue};
  62.194 +
  62.195 +/** Identifies any CContactItem-derived class (all of the above).
  62.196 +@publishedAll
  62.197 +@released
  62.198 +*/
  62.199 +const TUid KUidContactItem={0x10005673};
  62.200 +/** This identifies the CContactCard and CContactGroup classes.
  62.201 +It is used internally by the contacts model.
  62.202 +@publishedAll
  62.203 +@released
  62.204 +*/
  62.205 +const TUid KUidContactCardOrGroup={0x10005F71};
  62.206 +
  62.207 +
  62.208 +/*
  62.209 + * Speed-dial UIDs.
  62.210 + * These are used to indicate the speed-dial position for a particular field.
  62.211 + * They are added to the content type of a phone number field set as a
  62.212 + * speed-dial using CContactDatabase::SetFieldAsSpeedDialL().
  62.213 + */
  62.214 +/** Field maps to the first speed dial position.
  62.215 +@publishedAll
  62.216 +@released
  62.217 +*/
  62.218 +const TUid KUidSpeedDialOne={KUidSpeedDialOneValue};
  62.219 +/** Field maps to the second speed dial position.
  62.220 +@publishedAll
  62.221 +@released
  62.222 +*/
  62.223 +const TUid KUidSpeedDialTwo={KUidSpeedDialTwoValue};
  62.224 +/** Field maps to the third speed dial position.
  62.225 +@publishedAll
  62.226 +@released
  62.227 +*/
  62.228 +const TUid KUidSpeedDialThree={KUidSpeedDialThreeValue};
  62.229 +/** Field maps to the fourth speed dial position.
  62.230 +@publishedAll
  62.231 +@released
  62.232 +*/
  62.233 +const TUid KUidSpeedDialFour={KUidSpeedDialFourValue};
  62.234 +/** Field maps to the fifth speed dial position.
  62.235 +@publishedAll
  62.236 +@released
  62.237 +*/
  62.238 +const TUid KUidSpeedDialFive={KUidSpeedDialFiveValue};
  62.239 +/** Field maps to the sixth speed dial position.
  62.240 +@publishedAll
  62.241 +@released
  62.242 +*/
  62.243 +const TUid KUidSpeedDialSix={KUidSpeedDialSixValue};
  62.244 +/** Field maps to the seventh speed dial position.
  62.245 +@publishedAll
  62.246 +@released
  62.247 +*/
  62.248 +const TUid KUidSpeedDialSeven={KUidSpeedDialSevenValue};
  62.249 +/** Field maps to the eighth speed dial position.
  62.250 +@publishedAll
  62.251 +@released
  62.252 +*/
  62.253 +const TUid KUidSpeedDialEight={KUidSpeedDialEightValue};
  62.254 +/** Field maps to the ninth speed dial position.
  62.255 +@publishedAll
  62.256 +@released
  62.257 +*/
  62.258 +const TUid KUidSpeedDialNine={KUidSpeedDialNineValue};
  62.259 +
  62.260 +/*
  62.261 + * Contact field type UIDs.
  62.262 + */
  62.263 +/** Address field.
  62.264 +@publishedAll
  62.265 +@released
  62.266 +*/
  62.267 +const TUid KUidContactFieldAddress={KUidContactFieldAddressValue};
  62.268 +/** Post office box field.
  62.269 +@publishedAll
  62.270 +@released
  62.271 +*/
  62.272 +const TUid KUidContactFieldPostOffice={KUidContactFieldPostOfficeValue};
  62.273 +/** Extended address field.
  62.274 +@publishedAll
  62.275 +@released
  62.276 +*/
  62.277 +const TUid KUidContactFieldExtendedAddress={KUidContactFieldExtendedAddressValue};
  62.278 +/** Locality field.
  62.279 +@publishedAll
  62.280 +@released
  62.281 +*/
  62.282 +const TUid KUidContactFieldLocality={KUidContactFieldLocalityValue};
  62.283 +/** Region field.
  62.284 +@publishedAll
  62.285 +@released
  62.286 +*/
  62.287 +const TUid KUidContactFieldRegion={KUidContactFieldRegionValue};
  62.288 +/** Post code field.
  62.289 +@publishedAll
  62.290 +@released
  62.291 +*/
  62.292 +const TUid KUidContactFieldPostcode={KUidContactFieldPostCodeValue};
  62.293 +/** Country field.
  62.294 +@publishedAll
  62.295 +@released
  62.296 +*/
  62.297 +const TUid KUidContactFieldCountry={KUidContactFieldCountryValue};
  62.298 +
  62.299 +/** Company name field.
  62.300 +@publishedAll
  62.301 +@released
  62.302 +*/
  62.303 +const TUid KUidContactFieldCompanyName={KUidContactFieldCompanyNameValue};
  62.304 +/** Company name pronunciation field.
  62.305 +@publishedAll
  62.306 +@released
  62.307 +*/
  62.308 +const TUid KUidContactFieldCompanyNamePronunciation={KUidContactFieldCompanyNamePronunciationValue};
  62.309 +/** Phone number field.
  62.310 +@publishedAll
  62.311 +@released
  62.312 +*/
  62.313 +const TUid KUidContactFieldPhoneNumber={KUidContactFieldPhoneNumberValue};
  62.314 +/** Given name field.
  62.315 +@publishedAll
  62.316 +@released
  62.317 +*/
  62.318 +const TUid KUidContactFieldGivenName={KUidContactFieldGivenNameValue};
  62.319 +/** Family name field.
  62.320 +@publishedAll
  62.321 +@released
  62.322 +*/
  62.323 +const TUid KUidContactFieldFamilyName={KUidContactFieldFamilyNameValue};
  62.324 +/** Given name pronunciation field.
  62.325 +@publishedAll
  62.326 +@released
  62.327 +*/
  62.328 +const TUid KUidContactFieldGivenNamePronunciation={KUidContactFieldGivenNamePronunciationValue};
  62.329 +/** Family name pronunciation field.
  62.330 +@publishedAll
  62.331 +@released
  62.332 +*/
  62.333 +const TUid KUidContactFieldFamilyNamePronunciation={KUidContactFieldFamilyNamePronunciationValue};
  62.334 +/** Middle name field.
  62.335 +@publishedAll
  62.336 +@released
  62.337 +*/
  62.338 +const TUid KUidContactFieldAdditionalName={KUidContactFieldAdditionalNameValue};
  62.339 +/** Name suffix field.
  62.340 +@publishedAll
  62.341 +@released
  62.342 +*/
  62.343 +const TUid KUidContactFieldSuffixName={KUidContactFieldSuffixNameValue};
  62.344 +/** Name prefix field.
  62.345 +@publishedAll
  62.346 +@released
  62.347 +*/
  62.348 +const TUid KUidContactFieldPrefixName={KUidContactFieldPrefixNameValue};
  62.349 +/** Hidden field.
  62.350 +@publishedAll
  62.351 +@released
  62.352 +*/
  62.353 +const TUid KUidContactFieldHidden={KUidContactFieldHiddenValue};
  62.354 +/** Hidden field.
  62.355 +@publishedAll
  62.356 +@released
  62.357 +*/
  62.358 +const TUid KUidContactFieldDefinedText={KUidContactFieldDefinedTextValue};
  62.359 +/** Email address field.
  62.360 +@publishedAll
  62.361 +@released
  62.362 +*/
  62.363 +const TUid KUidContactFieldEMail={KUidContactFieldEMailValue};
  62.364 +/** Telephone number used for a messaging service.
  62.365 +@publishedAll
  62.366 +@released
  62.367 +*/
  62.368 +const TUid KUidContactFieldMsg={KUidContactFieldMsgValue};
  62.369 +/** Telephone number used for SMS messages.
  62.370 +@publishedAll
  62.371 +@released
  62.372 +*/
  62.373 +const TUid KUidContactFieldSms={KUidContactFieldSmsValue};
  62.374 +/** Fax number field.
  62.375 +@publishedAll
  62.376 +@released
  62.377 +*/
  62.378 +const TUid KUidContactFieldFax={KUidContactFieldFaxValue};
  62.379 +/** Comment field.
  62.380 +@publishedAll
  62.381 +@released
  62.382 +*/
  62.383 +const TUid KUidContactFieldNote={KUidContactFieldNoteValue};
  62.384 +/** Comment field.
  62.385 +@publishedAll
  62.386 +@released
  62.387 +*/
  62.388 +const TUid KUidContactStorageInline={KUidContactFieldStorageInlineValue};
  62.389 +/** Birthday field.
  62.390 +@publishedAll
  62.391 +@released
  62.392 +*/
  62.393 +const TUid KUidContactFieldBirthday={KUidContactFieldBirthdayValue};
  62.394 +/** URL field.
  62.395 +@publishedAll
  62.396 +@released
  62.397 +*/
  62.398 +const TUid KUidContactFieldUrl={KUidContactFieldUrlValue};
  62.399 +/** Template label field (a label which is used to refer to a template, for instance "work
  62.400 +template", "personal template").
  62.401 +@publishedAll
  62.402 +@released
  62.403 +*/
  62.404 +const TUid KUidContactFieldTemplateLabel={KUidContactFieldTemplateLabelValue};
  62.405 +/** A picture field, for instance a logo or a photo.
  62.406 +@publishedAll
  62.407 +@released
  62.408 +*/
  62.409 +const TUid KUidContactFieldPicture={KUidContactFieldPictureValue};
  62.410 +/** Used internally by the contacts model.
  62.411 +@publishedAll
  62.412 +@released
  62.413 +*/
  62.414 +const TUid KUidContactFieldDTMF={KUidContactFieldDTMFValue};
  62.415 +/** Identifies a ring tone field. This is a ring tone that is associated with a contact item.
  62.416 +@publishedAll
  62.417 +@released
  62.418 +*/
  62.419 +const TUid KUidContactFieldRingTone={KUidContactFieldRingToneValue};
  62.420 +/** Identifies a job title field.
  62.421 +@publishedAll
  62.422 +@released
  62.423 +*/
  62.424 +const TUid KUidContactFieldJobTitle={KUidContactFieldJobTitleValue};
  62.425 +/** Identifies an instant messaging address field.
  62.426 +@publishedAll
  62.427 +@released
  62.428 +*/
  62.429 +const TUid KUidContactFieldIMAddress = { KUidContactFieldIMAddressValue };
  62.430 +/** Identifies a USIM second name field. This field is provided to
  62.431 +store an additional representation of the contact's name, such as a
  62.432 +nickname or a different representation. An example could be a Japanese
  62.433 +contact which has a romanised name and an alternative representation using
  62.434 +kanji (pictogram) characters.
  62.435 +@publishedAll
  62.436 +@released
  62.437 +*/
  62.438 +const TUid KUidContactFieldSecondName = { KUidContactFieldSecondNameValue };
  62.439 +/** Identifies a SIP identity field.
  62.440 +@publishedAll
  62.441 +@released
  62.442 +*/
  62.443 +const TUid KUidContactFieldSIPID = { KUidContactFieldSIPIDValue };
  62.444 +/** Identifies a Assistant field.
  62.445 +@publishedAll
  62.446 +@released
  62.447 +*/
  62.448 +const TUid KUidContactFieldAssistant = { KUidContactFieldAssistantValue };
  62.449 +/** Identifies an Anniversary field.
  62.450 +@publishedAll
  62.451 +@released
  62.452 +*/
  62.453 +const TUid KUidContactFieldAnniversary = { KUidContactFieldAnniversaryValue };
  62.454 +/** Identifies a Spouse field.
  62.455 +@publishedAll
  62.456 +@released
  62.457 +*/
  62.458 +const TUid KUidContactFieldSpouse = { KUidContactFieldSpouseValue };
  62.459 +/** Identifies a Children field.
  62.460 +@publishedAll
  62.461 +@released
  62.462 +*/
  62.463 +const TUid KUidContactFieldChildren = { KUidContactFieldChildrenValue };
  62.464 +/** Identifies a Class field.
  62.465 +@publishedAll
  62.466 +@released
  62.467 +*/
  62.468 +const TUid KUidContactFieldClass = { KUidContactFieldClassValue };
  62.469 +/** Identifies a Department field.
  62.470 +@publishedAll
  62.471 +@released
  62.472 +*/
  62.473 +const TUid KUidContactFieldDepartmentName = { KUidContactFieldDepartmentNameValue };
  62.474 +/*
  62.475 +* CContactICCEntry (Telephony specific) UIDs.
  62.476 + */
  62.477 +/** Identifies an ICC slot contact field in the contact item.
  62.478 +@publishedAll
  62.479 +@released
  62.480 +*/
  62.481 +const TUid KUidContactFieldICCSlot={KUidContactFieldICCSlotValue};
  62.482 +/** Identifies an ICC Phonebook contact field in the contact item.
  62.483 +@publishedAll
  62.484 +@released
  62.485 +*/
  62.486 +const TUid KUidContactFieldICCPhonebook={KUidContactFieldICCPhonebookValue};
  62.487 +/** Identifies an ICC Group contact field in the contact item.
  62.488 +@publishedAll
  62.489 +@released
  62.490 +*/
  62.491 +const TUid KUidContactFieldICCGroup={KUidContactFieldICCGroupValue};
  62.492 +
  62.493 +/** Identifies a voice dial field. This is a voice recording associated with a telephone number
  62.494 +field in the item.
  62.495 +@publishedAll
  62.496 +@released
  62.497 +*/
  62.498 +const TUid KUidContactsVoiceDialField={KUidContactsVoiceDialFieldValue};
  62.499 +
  62.500 +/** Indicates no field present.
  62.501 +@publishedAll
  62.502 +@released
  62.503 +*/
  62.504 +const TUid KUidContactFieldNone={KUidContactFieldNoneValue};
  62.505 +/** Used in field type matching to indicate that all field types match.
  62.506 +@publishedAll
  62.507 +@released
  62.508 +*/
  62.509 +const TInt32 KUidContactFieldMatchAllValue=0x110FFF22;
  62.510 +const TUid KUidContactFieldMatchAll={KUidContactFieldMatchAllValue};
  62.511 +
  62.512 +/*
  62.513 + * Contact field type vCard mappings.
  62.514 + * The vCard mapping describes how the field should be handled by the
  62.515 + * vCard import/export code.
  62.516 + */
  62.517 +/** Field type maps to the Post office box field in an ADR vCard property value.
  62.518 +@publishedAll
  62.519 +@released
  62.520 +*/
  62.521 +const TUid KUidContactFieldVCardMapPOSTOFFICE={KIntContactFieldVCardMapPOSTOFFICE};
  62.522 +/** Field type maps to the Extended address field in an ADR vCard property value.
  62.523 +@publishedAll
  62.524 +@released
  62.525 +*/
  62.526 +const TUid KUidContactFieldVCardMapEXTENDEDADR={KIntContactFieldVCardMapEXTENDEDADR};
  62.527 +/** Field type maps to vCard property ADR.
  62.528 +@publishedAll
  62.529 +@released
  62.530 +*/
  62.531 +const TUid KUidContactFieldVCardMapADR={KIntContactFieldVCardMapADR};
  62.532 +/** Field type maps to the Locality field in an ADR vCard property value.
  62.533 +@publishedAll
  62.534 +@released
  62.535 +*/
  62.536 +const TUid KUidContactFieldVCardMapLOCALITY={KIntContactFieldVCardMapLOCALITY};
  62.537 +/** Field type maps to the Region field in an ADR vCard property value.
  62.538 +@publishedAll
  62.539 +@released
  62.540 +*/
  62.541 +const TUid KUidContactFieldVCardMapREGION={KIntContactFieldVCardMapREGION};
  62.542 +/** Field type maps to the Postcode field in an ADR vCard property value.
  62.543 +@publishedAll
  62.544 +@released
  62.545 +*/
  62.546 +const TUid KUidContactFieldVCardMapPOSTCODE={KIntContactFieldVCardMapPOSTCODE};
  62.547 +/** Field type maps to the Country field in an ADR vCard property value.
  62.548 +@publishedAll
  62.549 +@released
  62.550 +*/
  62.551 +const TUid KUidContactFieldVCardMapCOUNTRY={KIntContactFieldVCardMapCOUNTRY};
  62.552 +
  62.553 +/** Field type maps to vCard property AGENT.
  62.554 +@publishedAll
  62.555 +@released
  62.556 +*/
  62.557 +const TUid KUidContactFieldVCardMapAGENT={KIntContactFieldVCardMapAGENT};
  62.558 +/** Field type maps to vCard property BDAY.
  62.559 +@publishedAll
  62.560 +@released
  62.561 +*/
  62.562 +const TUid KUidContactFieldVCardMapBDAY={KIntContactFieldVCardMapBDAY};
  62.563 +/** Field type maps to vCard property EMAIL.
  62.564 +@publishedAll
  62.565 +@released
  62.566 +*/
  62.567 +const TUid KUidContactFieldVCardMapEMAILINTERNET={KIntContactFieldVCardMapEMAILINTERNET};
  62.568 +/** Field type maps to vCard property GEO.
  62.569 +@publishedAll
  62.570 +@released
  62.571 +*/
  62.572 +const TUid KUidContactFieldVCardMapGEO={KIntContactFieldVCardMapGEO};
  62.573 +/** Field type maps to vCard property LABEL.
  62.574 +@publishedAll
  62.575 +@released
  62.576 +*/
  62.577 +const TUid KUidContactFieldVCardMapLABEL={KIntContactFieldVCardMapLABEL};
  62.578 +/** Field type maps to vCard property LOGO.
  62.579 +@publishedAll
  62.580 +@released
  62.581 +*/
  62.582 +const TUid KUidContactFieldVCardMapLOGO={KIntContactFieldVCardMapLOGO};
  62.583 +/** Field type maps to vCard property MAILER.
  62.584 +@publishedAll
  62.585 +@released
  62.586 +*/
  62.587 +const TUid KUidContactFieldVCardMapMAILER={KIntContactFieldVCardMapMAILER};
  62.588 +/** Field type maps to vCard property NOTE.
  62.589 +@publishedAll
  62.590 +@released
  62.591 +*/
  62.592 +const TUid KUidContactFieldVCardMapNOTE={KIntContactFieldVCardMapNOTE};
  62.593 +/** Field type maps to vCard property ORG.
  62.594 +@publishedAll
  62.595 +@released
  62.596 +*/
  62.597 +const TUid KUidContactFieldVCardMapORG={KIntContactFieldVCardMapORG};
  62.598 +/** Field type maps to vCard X-IRMC-ORG parameter of property SOUND.
  62.599 +@publishedAll
  62.600 +@released
  62.601 +*/
  62.602 +const TUid KUidContactFieldVCardMapORGPronunciation={KIntContactFieldVCardMapORGPronunciation};
  62.603 +/** Field type maps to vCard property PHOTO.
  62.604 +@publishedAll
  62.605 +@released
  62.606 +*/
  62.607 +const TUid KUidContactFieldVCardMapPHOTO={KIntContactFieldVCardMapPHOTO};
  62.608 +/** Field type maps to vCard property ROLE.
  62.609 +@publishedAll
  62.610 +@released
  62.611 +*/
  62.612 +const TUid KUidContactFieldVCardMapROLE={KIntContactFieldVCardMapROLE};
  62.613 +/** Field type maps to vCard property SOUND.
  62.614 +@publishedAll
  62.615 +@released
  62.616 +*/
  62.617 +const TUid KUidContactFieldVCardMapSOUND={KIntContactFieldVCardMapSOUND};
  62.618 +/** Field type maps to vCard property TEL.
  62.619 +@publishedAll
  62.620 +@released
  62.621 +*/
  62.622 +const TUid KUidContactFieldVCardMapTEL={KIntContactFieldVCardMapTEL};
  62.623 +/** Field type maps to vCard property parameter FAX.
  62.624 +@publishedAll
  62.625 +@released
  62.626 +*/
  62.627 +const TUid KUidContactFieldVCardMapTELFAX={KIntContactFieldVCardMapTELFAX};
  62.628 +/** Field type maps to vCard property TITLE.
  62.629 +@publishedAll
  62.630 +@released
  62.631 +*/
  62.632 +const TUid KUidContactFieldVCardMapTITLE={KIntContactFieldVCardMapTITLE};
  62.633 +/** Field type maps to vCard property URL.
  62.634 +@publishedAll
  62.635 +@released
  62.636 +*/
  62.637 +const TUid KUidContactFieldVCardMapURL={KIntContactFieldVCardMapURL};
  62.638 +/** Field maps to the vCard property N (name). Must be used in conjunction with
  62.639 +a name-related field type (e.g. KUidContactFieldGivenName) to form the given
  62.640 +name field mapping.
  62.641 +@publishedAll
  62.642 +@released
  62.643 +*/
  62.644 +const TUid KUidContactFieldVCardMapUnusedN={KIntContactFieldVCardMapUnusedN};
  62.645 +/** Field type maps to vCard property FN (the display name).
  62.646 +@publishedAll
  62.647 +@released
  62.648 +*/
  62.649 +const TUid KUidContactFieldVCardMapUnusedFN={KIntContactFieldVCardMapUnusedFN};
  62.650 +/** Mapping between the vCard property and field type is not required.
  62.651 +@publishedAll
  62.652 +@released
  62.653 +*/
  62.654 +const TUid KUidContactFieldVCardMapNotRequired={KIntContactFieldVCardMapNotRequired};
  62.655 +/** Unknown mapping between a field type and a vCard extension property.
  62.656 +@publishedAll
  62.657 +@released
  62.658 +*/
  62.659 +const TUid KUidContactFieldVCardMapUnknownXDash={KIntContactFieldVCardMapUnknownXDash};
  62.660 +/** Unknown mapping between field type and non-extension vCard property.
  62.661 +@publishedAll
  62.662 +@released
  62.663 +*/
  62.664 +const TUid KUidContactFieldVCardMapUnknown={KIntContactFieldVCardMapUnknown};
  62.665 +/** Field type maps to vCard property UID.
  62.666 +@publishedAll
  62.667 +@released
  62.668 +*/
  62.669 +const TUid KUidContactFieldVCardMapUID={KIntContactFieldVCardMapUID};
  62.670 +/** Field type maps to vCard property parameter WORK.
  62.671 +@publishedAll
  62.672 +@released
  62.673 +*/
  62.674 +const TUid KUidContactFieldVCardMapWORK={KIntContactFieldVCardMapWORK};
  62.675 +/** Field type maps to vCard property parameter HOME.
  62.676 +@publishedAll
  62.677 +@released
  62.678 +*/
  62.679 +const TUid KUidContactFieldVCardMapHOME={KIntContactFieldVCardMapHOME};
  62.680 +/** Field type maps to vCard property parameter MSG.
  62.681 +@publishedAll
  62.682 +@released
  62.683 +*/
  62.684 +const TUid KUidContactFieldVCardMapMSG={KIntContactFieldVCardMapMSG};
  62.685 +/** Field type maps to vCard property parameter VOICE.
  62.686 +@publishedAll
  62.687 +@released
  62.688 +*/
  62.689 +const TUid KUidContactFieldVCardMapVOICE={KIntContactFieldVCardMapVOICE};
  62.690 +/** Field type maps to vCard property parameter FAX.
  62.691 +@publishedAll
  62.692 +@released
  62.693 +*/
  62.694 +const TUid KUidContactFieldVCardMapFAX={KIntContactFieldVCardMapFAX};
  62.695 +/** Field type maps to vCard property parameter PREF.
  62.696 +@publishedAll
  62.697 +@released
  62.698 +*/
  62.699 +const TUid KUidContactFieldVCardMapPREF={KIntContactFieldVCardMapPREF};
  62.700 +/** Field type maps to vCard property parameter CELL.
  62.701 +@publishedAll
  62.702 +@released
  62.703 +*/
  62.704 +const TUid KUidContactFieldVCardMapCELL={KIntContactFieldVCardMapCELL};
  62.705 +/** Field type maps to vCard property parameter PAGER.
  62.706 +@publishedAll
  62.707 +@released
  62.708 +*/
  62.709 +const TUid KUidContactFieldVCardMapPAGER={KIntContactFieldVCardMapPAGER};
  62.710 +/** Field type maps to vCard property parameter BBS.
  62.711 +@publishedAll
  62.712 +@released
  62.713 +*/
  62.714 +const TUid KUidContactFieldVCardMapBBS={KIntContactFieldVCardMapBBS};
  62.715 +/** Field type maps to vCard property parameter MODEM.
  62.716 +@publishedAll
  62.717 +@released
  62.718 +*/
  62.719 +const TUid KUidContactFieldVCardMapMODEM={KIntContactFieldVCardMapMODEM};
  62.720 +/** Field type maps to vCard property parameter CAR.
  62.721 +@publishedAll
  62.722 +@released
  62.723 +*/
  62.724 +const TUid KUidContactFieldVCardMapCAR={KIntContactFieldVCardMapCAR};
  62.725 +/** Field type maps to vCard property parameter ISDN.
  62.726 +@publishedAll
  62.727 +@released
  62.728 +*/
  62.729 +const TUid KUidContactFieldVCardMapISDN={KIntContactFieldVCardMapISDN};
  62.730 +/** Field type maps to vCard property parameter VIDEO.
  62.731 +@publishedAll
  62.732 +@released
  62.733 +*/
  62.734 +const TUid KUidContactFieldVCardMapVIDEO={KIntContactFieldVCardMapVIDEO};
  62.735 +/** Field type maps to vCard property parameter DOM.
  62.736 +@publishedAll
  62.737 +@released
  62.738 +*/
  62.739 +const TUid KUidContactFieldVCardMapDOM={KIntContactFieldVCardMapDOM};
  62.740 +/** Field type maps to vCard property parameter INTL.
  62.741 +@publishedAll
  62.742 +@released
  62.743 +*/
  62.744 +const TUid KUidContactFieldVCardMapINTL={KIntContactFieldVCardMapINTL};
  62.745 +/** Field type maps to vCard property parameter POSTAL.
  62.746 +@publishedAll
  62.747 +@released
  62.748 +*/
  62.749 +const TUid KUidContactFieldVCardMapPOSTAL={KIntContactFieldVCardMapPOSTAL};
  62.750 +/** Field type maps to vCard property parameter PARCEL.
  62.751 +@publishedAll
  62.752 +@released
  62.753 +*/
  62.754 +const TUid KUidContactFieldVCardMapPARCEL={KIntContactFieldVCardMapPARCEL};
  62.755 +/** Field type maps to vCard property parameter value GIF.
  62.756 +@publishedAll
  62.757 +@released
  62.758 +*/
  62.759 +const TUid KUidContactFieldVCardMapGIF={KIntContactFieldVCardMapGIF};
  62.760 +/** Field type maps to vCard property parameter value CGM.
  62.761 +@publishedAll
  62.762 +@released
  62.763 +*/
  62.764 +const TUid KUidContactFieldVCardMapCGM={KIntContactFieldVCardMapCGM};
  62.765 +/** Field type maps to vCard property parameter value WMF.
  62.766 +@publishedAll
  62.767 +@released
  62.768 +*/
  62.769 +const TUid KUidContactFieldVCardMapWMF={KIntContactFieldVCardMapWMF};
  62.770 +/** Field type maps to vCard property parameter value BMP.
  62.771 +@publishedAll
  62.772 +@released
  62.773 +*/
  62.774 +const TUid KUidContactFieldVCardMapBMP={KIntContactFieldVCardMapBMP};
  62.775 +/** Field type maps to vCard property parameter value MET.
  62.776 +@publishedAll
  62.777 +@released
  62.778 +*/
  62.779 +const TUid KUidContactFieldVCardMapMET={KIntContactFieldVCardMapMET};
  62.780 +/** Field type maps to vCard property parameter value PMB.
  62.781 +@publishedAll
  62.782 +@released
  62.783 +*/
  62.784 +const TUid KUidContactFieldVCardMapPMB={KIntContactFieldVCardMapPMB};
  62.785 +/** Field type maps to vCard property parameter value DIB.
  62.786 +@publishedAll
  62.787 +@released
  62.788 +*/
  62.789 +const TUid KUidContactFieldVCardMapDIB={KIntContactFieldVCardMapDIB};
  62.790 +/** Field type maps to vCard property parameter value PICT.
  62.791 +@publishedAll
  62.792 +@released
  62.793 +*/
  62.794 +const TUid KUidContactFieldVCardMapPICT={KIntContactFieldVCardMapPICT};
  62.795 +/** Field type maps to vCard property parameter value TIFF.
  62.796 +@publishedAll
  62.797 +@released
  62.798 +*/
  62.799 +const TUid KUidContactFieldVCardMapTIFF={KIntContactFieldVCardMapTIFF};
  62.800 +/** Field type maps to vCard property parameter value PDF.
  62.801 +@publishedAll
  62.802 +@released
  62.803 +*/
  62.804 +const TUid KUidContactFieldVCardMapPDF={KIntContactFieldVCardMapPDF};
  62.805 +/** Field type maps to vCard property parameter value PS.
  62.806 +@publishedAll
  62.807 +@released
  62.808 +*/
  62.809 +const TUid KUidContactFieldVCardMapPS={KIntContactFieldVCardMapPS};
  62.810 +/** Field type maps to vCard property parameter value JPEG.
  62.811 +@publishedAll
  62.812 +@released
  62.813 +*/
  62.814 +const TUid KUidContactFieldVCardMapJPEG={KIntContactFieldVCardMapJPEG};
  62.815 +/** Field type maps to vCard property parameter value MPEG.
  62.816 +@publishedAll
  62.817 +@released
  62.818 +*/
  62.819 +const TUid KUidContactFieldVCardMapMPEG={KIntContactFieldVCardMapMPEG};
  62.820 +/** Field type maps to vCard property parameter value MPEG2.
  62.821 +@publishedAll
  62.822 +@released
  62.823 +*/
  62.824 +const TUid KUidContactFieldVCardMapMPEG2={KIntContactFieldVCardMapMPEG2};
  62.825 +/** Field type maps to vCard property parameter value AVI.
  62.826 +@publishedAll
  62.827 +@released
  62.828 +*/
  62.829 +const TUid KUidContactFieldVCardMapAVI={KIntContactFieldVCardMapAVI};
  62.830 +/** Field type maps to vCard property parameter value QTIME.
  62.831 +@publishedAll
  62.832 +@released
  62.833 +*/
  62.834 +const TUid KUidContactFieldVCardMapQTIME={KIntContactFieldVCardMapQTIME};
  62.835 +/** Field type maps to vCard property TZ.
  62.836 +@publishedAll
  62.837 +@released
  62.838 +*/
  62.839 +const TUid KUidContactFieldVCardMapTZ={KIntContactFieldVCardMapTZ};
  62.840 +/** Field type maps to vCard property KEY.
  62.841 +@publishedAll
  62.842 +@released
  62.843 +*/
  62.844 +const TUid KUidContactFieldVCardMapKEY={KIntContactFieldVCardMapKEY};
  62.845 +/** Field type maps to vCard property parameter value X509.
  62.846 +@publishedAll
  62.847 +@released
  62.848 +*/
  62.849 +const TUid KUidContactFieldVCardMapX509={KIntContactFieldVCardMapX509};
  62.850 +/** Field type maps to vCard property parameter value PGP.
  62.851 +@publishedAll
  62.852 +@released
  62.853 +*/
  62.854 +const TUid KUidContactFieldVCardMapPGP={KIntContactFieldVCardMapPGP};
  62.855 +/** Used internally by the contacts model.
  62.856 +@publishedAll
  62.857 +@released
  62.858 +*/
  62.859 +const TUid KUidContactFieldVCardMapSMIME={KIntContactFieldVCardMapSMIME};
  62.860 +/** The field contains a Wireless Village instant messaging ID.
  62.861 +@publishedAll
  62.862 +@released
  62.863 +*/
  62.864 +const TUid KUidContactFieldVCardMapWV={KIntContactFieldVCardMapWV};
  62.865 +/** Field type mapping of a vCard property to contacts Second Name Field
  62.866 +@publishedAll
  62.867 +@released
  62.868 +*/
  62.869 +const TUid KUidContactFieldVCardMapSECONDNAME={KIntContactFieldVCardMapSECONDNAME};
  62.870 +/** Field type mapping of a vCard property to contacts SIP Identity Field.
  62.871 +@publishedAll
  62.872 +@released
  62.873 +*/
  62.874 +const TUid KUidContactFieldVCardMapSIPID={KIntContactFieldVCardMapSIPID};
  62.875 +/** Field type maps to vCard extension property parameter value POC
  62.876 +(Push to Talk Over Cellular).
  62.877 +@publishedAll
  62.878 +@released
  62.879 +*/
  62.880 +const TUid KUidContactFieldVCardMapPOC={KIntContactFieldVCardMapPOC};
  62.881 +/** Field type maps to vCard extension property parameter value SWIS
  62.882 +("See What I See").
  62.883 +@publishedAll
  62.884 +@released
  62.885 +*/
  62.886 +const TUid KUidContactFieldVCardMapSWIS={KIntContactFieldVCardMapSWIS};
  62.887 +/** Field type maps to vCard extension property parameter value VOIP
  62.888 +(Voice Over IP).
  62.889 +@publishedAll
  62.890 +@released
  62.891 +*/
  62.892 +const TUid KUidContactFieldVCardMapVOIP={KIntContactFieldVCardMapVOIP};
  62.893 +/** Field type maps to vCard extension property parameter value Assistant
  62.894 +@publishedAll
  62.895 +@released
  62.896 +*/
  62.897 +const TUid KUidContactFieldVCardMapAssistant={KIntContactFieldVCardMapAssistant};
  62.898 +/** Field type maps to vCard extension property parameter value AssistantTel
  62.899 +@publishedAll
  62.900 +@released
  62.901 +*/
  62.902 +const TUid KUidContactFieldVCardMapAssistantTel={KIntContactFieldVCardMapAssistantTel};
  62.903 +/** Field type maps to vCard extension property parameter value Anniversary
  62.904 +@publishedAll
  62.905 +@released
  62.906 +*/
  62.907 +const TUid KUidContactFieldVCardMapAnniversary={KIntContactFieldVCardMapAnniversary};
  62.908 +/** Field type maps to vCard extension property parameter value Spouse
  62.909 +@publishedAll
  62.910 +@released
  62.911 +*/
  62.912 +const TUid KUidContactFieldVCardMapSpouse={KIntContactFieldVCardMapSpouse};
  62.913 +/** Field type maps to vCard extension property parameter value Children
  62.914 +@publishedAll
  62.915 +@released
  62.916 +*/
  62.917 +const TUid KUidContactFieldVCardMapChildren={KIntContactFieldVCardMapChildren};
  62.918 +/** Field type maps to vCard extension property parameter value Class
  62.919 +@publishedAll
  62.920 +@released
  62.921 +*/
  62.922 +const TUid KUidContactFieldVCardMapClass={KIntContactFieldVCardMapClass};
  62.923 +/** Field type maps to vCard extension property parameter value Department
  62.924 +@publishedAll
  62.925 +@released
  62.926 +*/
  62.927 +const TUid KUidContactFieldVCardMapDepartment={KIntContactFieldVCardMapDepartment};
  62.928 +
  62.929 +/** Name of the TYPE property parameter, for which the values are work, home etc. 
  62.930 +@publishedAll
  62.931 +@released
  62.932 +*/
  62.933 +_LIT(KVersitParamType,"TYPE");
  62.934 +/** Name of the WORK property parameter.
  62.935 +@publishedAll
  62.936 +@released
  62.937 +*/
  62.938 +_LIT(KVersitParamWork,"WORK");
  62.939 +/** Name of the HOME property parameter.
  62.940 +@publishedAll
  62.941 +@released
  62.942 +*/
  62.943 +_LIT(KVersitParamHome,"HOME");
  62.944 +/** Name of the MSG property parameter.
  62.945 +@publishedAll
  62.946 +@released
  62.947 +*/
  62.948 +_LIT(KVersitParamMsg,"MSG");
  62.949 +/** Name of the VOICE property parameter.
  62.950 +@publishedAll
  62.951 +@released
  62.952 +*/
  62.953 +_LIT(KVersitParamVoice,"VOICE");
  62.954 +/** Name of the FAX property parameter.
  62.955 +@publishedAll
  62.956 +@released
  62.957 +*/
  62.958 +_LIT(KVersitParamFax,"FAX");
  62.959 +/** Name of the PREF property parameter.
  62.960 +@publishedAll
  62.961 +@released
  62.962 +*/
  62.963 +_LIT(KVersitParamPref,"PREF");
  62.964 +/** Name of the CELL property parameter.
  62.965 +@publishedAll
  62.966 +@released
  62.967 +*/
  62.968 +_LIT(KVersitParamCell,"CELL");
  62.969 +/** Name of the PAGER property parameter.
  62.970 +@publishedAll
  62.971 +@released
  62.972 +*/
  62.973 +_LIT(KVersitParamPager,"PAGER");
  62.974 +/** Name of the BBS property parameter.
  62.975 +@publishedAll
  62.976 +@released
  62.977 +*/
  62.978 +_LIT(KVersitParamBbs,"BBS");
  62.979 +/** Name of the MODEM property parameter.
  62.980 +@publishedAll
  62.981 +@released
  62.982 +*/
  62.983 +_LIT(KVersitParamModem,"MODEM");
  62.984 +/** Name of the CAR property parameter.
  62.985 +@publishedAll
  62.986 +@released
  62.987 +*/
  62.988 +_LIT(KVersitParamCar,"CAR");
  62.989 +/** Name of the ISDN property parameter.
  62.990 +@publishedAll
  62.991 +@released
  62.992 +*/
  62.993 +_LIT(KVersitParamIsdn,"ISDN");
  62.994 +/** Name of the VIDEO property parameter.
  62.995 +@publishedAll
  62.996 +@released
  62.997 +*/
  62.998 +_LIT(KVersitParamVideo,"VIDEO");
  62.999 +/** Name of the DOM property parameter.
 62.1000 +@publishedAll
 62.1001 +@released
 62.1002 +*/
 62.1003 +_LIT(KVersitParamDom,"DOM");
 62.1004 +/** Name of the GIF property parameter.
 62.1005 +@publishedAll
 62.1006 +@released
 62.1007 +*/
 62.1008 +_LIT(KVersitParamGif,"GIF");
 62.1009 +/** Name of the CGM property parameter.
 62.1010 +@publishedAll
 62.1011 +@released
 62.1012 +*/
 62.1013 +_LIT(KVersitParamCgm,"CGM");
 62.1014 +/** Name of the WMF property parameter.
 62.1015 +@publishedAll
 62.1016 +@released
 62.1017 +*/
 62.1018 +_LIT(KVersitParamWmf,"WMF");
 62.1019 +/** Name of the BMP property parameter.
 62.1020 +@publishedAll
 62.1021 +@released
 62.1022 +*/
 62.1023 +_LIT(KVersitParamBmp,"BMP");
 62.1024 +/** Name of the MET property parameter.
 62.1025 +@publishedAll
 62.1026 +@released
 62.1027 +*/
 62.1028 +_LIT(KVersitParamMet,"MET");
 62.1029 +/** Name of the PMB property parameter.
 62.1030 +@publishedAll
 62.1031 +@released
 62.1032 +*/
 62.1033 +_LIT(KVersitParamPmb,"PMB");
 62.1034 +/** Name of the DIB property parameter.
 62.1035 +@publishedAll
 62.1036 +@released
 62.1037 +*/
 62.1038 +_LIT(KVersitParamDib,"DIB");
 62.1039 +/** Name of the PICT property parameter.
 62.1040 +@publishedAll
 62.1041 +@released
 62.1042 +*/
 62.1043 +_LIT(KVersitParamPict,"PICT");
 62.1044 +/** Name of the TIFF property parameter.
 62.1045 +@publishedAll
 62.1046 +@released
 62.1047 +*/
 62.1048 +_LIT(KVersitParamTiff,"TIFF");
 62.1049 +/** Name of the PDF property parameter.
 62.1050 +@publishedAll
 62.1051 +@released
 62.1052 +*/
 62.1053 +_LIT(KVersitParamPdf,"PDF");
 62.1054 +/** Name of the PS property parameter.
 62.1055 +@publishedAll
 62.1056 +@released
 62.1057 +*/
 62.1058 +_LIT(KVersitParamPs,"PS");
 62.1059 +/** Name of the JPEG property parameter.
 62.1060 +@publishedAll
 62.1061 +@released
 62.1062 +*/
 62.1063 +_LIT(KVersitParamJpeg,"JPEG");
 62.1064 +/** Name of the MPEG property parameter.
 62.1065 +@publishedAll
 62.1066 +@released
 62.1067 +*/
 62.1068 +_LIT(KVersitParamMpeg,"MPEG");
 62.1069 +/** Name of the MPEG2 property parameter.
 62.1070 +@publishedAll
 62.1071 +@released
 62.1072 +*/
 62.1073 +_LIT(KVersitParamMpeg2,"MPEG2");
 62.1074 +/** Name of the AVI property parameter.
 62.1075 +@publishedAll
 62.1076 +@released
 62.1077 +*/
 62.1078 +_LIT(KVersitParamAvi,"AVI");
 62.1079 +/** Name of the QTIME property parameter.
 62.1080 +@publishedAll
 62.1081 +@released
 62.1082 +*/
 62.1083 +_LIT(KVersitParamQtime,"QTIME");
 62.1084 +/** Name of the X509 property parameter.
 62.1085 +@publishedAll
 62.1086 +@released
 62.1087 +*/
 62.1088 +_LIT(KVersitParamX509,"X509");
 62.1089 +/** Name of the PGP property parameter.
 62.1090 +@publishedAll
 62.1091 +@released
 62.1092 +*/
 62.1093 +_LIT(KVersitParamPGP,"PGP");
 62.1094 +
 62.1095 +/** 8 bit name of the TYPE property parameter.
 62.1096 +@publishedAll
 62.1097 +@released
 62.1098 +*/
 62.1099 +_LIT8(KVersitParam8Type,"TYPE");
 62.1100 +/** 8 bit name of the WORK property parameter.
 62.1101 +@publishedAll
 62.1102 +@released
 62.1103 +*/
 62.1104 +_LIT8(KVersitParam8Work,"WORK");
 62.1105 +/** 8 bit name of the HOME property parameter.
 62.1106 +@publishedAll
 62.1107 +@released
 62.1108 +*/
 62.1109 +_LIT8(KVersitParam8Home,"HOME");
 62.1110 +/** 8 bit name of the MSG property parameter.
 62.1111 +@publishedAll
 62.1112 +@released
 62.1113 +*/
 62.1114 +_LIT8(KVersitParam8Msg,"MSG");
 62.1115 +/** 8 bit name of the VOICE property parameter.
 62.1116 +@publishedAll
 62.1117 +@released
 62.1118 +*/
 62.1119 +_LIT8(KVersitParam8Voice,"VOICE");
 62.1120 +/** 8 bit name of the FAX property parameter.
 62.1121 +@publishedAll
 62.1122 +@released
 62.1123 +*/
 62.1124 +_LIT8(KVersitParam8Fax,"FAX");
 62.1125 +/** 8 bit name of the PREF property parameter.
 62.1126 +@publishedAll
 62.1127 +@released
 62.1128 +*/
 62.1129 +_LIT8(KVersitParam8Pref,"PREF");
 62.1130 +/** 8 bit name of the CELL property parameter.
 62.1131 +@publishedAll
 62.1132 +@released
 62.1133 +*/
 62.1134 +_LIT8(KVersitParam8Cell,"CELL");
 62.1135 +/** 8 bit name of the PAGER property parameter.
 62.1136 +@publishedAll
 62.1137 +@released
 62.1138 +*/
 62.1139 +_LIT8(KVersitParam8Pager,"PAGER");
 62.1140 +/** 8 bit name of the BBS property parameter.
 62.1141 +@publishedAll
 62.1142 +@released
 62.1143 +*/
 62.1144 +_LIT8(KVersitParam8Bbs,"BBS");
 62.1145 +/** 8 bit name of the MODEM property parameter.
 62.1146 +@publishedAll
 62.1147 +@released
 62.1148 +*/
 62.1149 +_LIT8(KVersitParam8Modem,"MODEM");
 62.1150 +/** 8 bit name of the CAR property parameter.
 62.1151 +@publishedAll
 62.1152 +@released
 62.1153 +*/
 62.1154 +_LIT8(KVersitParam8Car,"CAR");
 62.1155 +/** 8 bit name of the ISDN property parameter.
 62.1156 +@publishedAll
 62.1157 +@released
 62.1158 +*/
 62.1159 +_LIT8(KVersitParam8Isdn,"ISDN");
 62.1160 +/** 8 bit name of the VIDEO property parameter.
 62.1161 +@publishedAll
 62.1162 +@released
 62.1163 +*/
 62.1164 +_LIT8(KVersitParam8Video,"VIDEO");
 62.1165 +/** 8 bit name of the DOM property parameter.
 62.1166 +@publishedAll
 62.1167 +@released
 62.1168 +*/
 62.1169 +_LIT8(KVersitParam8Dom,"DOM");
 62.1170 +/** 8 bit name of the GIF property parameter.
 62.1171 +@publishedAll
 62.1172 +@released
 62.1173 +*/
 62.1174 +_LIT8(KVersitParam8Gif,"GIF");
 62.1175 +/** 8 bit name of the CGM property parameter.
 62.1176 +@publishedAll
 62.1177 +@released
 62.1178 +*/
 62.1179 +_LIT8(KVersitParam8Cgm,"CGM");
 62.1180 +/** 8 bit name of the WMF property parameter.
 62.1181 +@publishedAll
 62.1182 +@released
 62.1183 +*/
 62.1184 +_LIT8(KVersitParam8Wmf,"WMF");
 62.1185 +/** 8 bit name of the BMP property parameter.
 62.1186 +@publishedAll
 62.1187 +@released
 62.1188 +*/
 62.1189 +_LIT8(KVersitParam8Bmp,"BMP");
 62.1190 +/** 8 bit name of the MET property parameter.
 62.1191 +@publishedAll
 62.1192 +@released
 62.1193 +*/
 62.1194 +_LIT8(KVersitParam8Met,"MET");
 62.1195 +/** 8 bit name of the PMB property parameter.
 62.1196 +@publishedAll
 62.1197 +@released
 62.1198 +*/
 62.1199 +_LIT8(KVersitParam8Pmb,"PMB");
 62.1200 +/** 8 bit name of the DIB property parameter.
 62.1201 +@publishedAll
 62.1202 +@released
 62.1203 +*/
 62.1204 +_LIT8(KVersitParam8Dib,"DIB");
 62.1205 +/** 8 bit name of the PICT property parameter.
 62.1206 +@publishedAll
 62.1207 +@released
 62.1208 +*/
 62.1209 +_LIT8(KVersitParam8Pict,"PICT");
 62.1210 +/** 8 bit name of the TIFF property parameter.
 62.1211 +@publishedAll
 62.1212 +@released
 62.1213 +*/
 62.1214 +_LIT8(KVersitParam8Tiff,"TIFF");
 62.1215 +/** 8 bit name of the PDF property parameter.
 62.1216 +@publishedAll
 62.1217 +@released
 62.1218 +*/
 62.1219 +_LIT8(KVersitParam8Pdf,"PDF");
 62.1220 +/** 8 bit name of the PS property parameter.
 62.1221 +@publishedAll
 62.1222 +@released
 62.1223 +*/
 62.1224 +_LIT8(KVersitParam8Ps,"PS");
 62.1225 +/** 8 bit name of the JPEG property parameter.
 62.1226 +@publishedAll
 62.1227 +@released
 62.1228 +*/
 62.1229 +_LIT8(KVersitParam8Jpeg,"JPEG");
 62.1230 +/** 8 bit name of the MPEG property parameter.
 62.1231 +@publishedAll
 62.1232 +@released
 62.1233 +*/
 62.1234 +_LIT8(KVersitParam8Mpeg,"MPEG");
 62.1235 +/** 8 bit name of the MPEG2 property parameter.
 62.1236 +@publishedAll
 62.1237 +@released
 62.1238 +*/
 62.1239 +_LIT8(KVersitParam8Mpeg2,"MPEG2");
 62.1240 +/** 8 bit name of the AVI property parameter.
 62.1241 +@publishedAll
 62.1242 +@released
 62.1243 +*/
 62.1244 +_LIT8(KVersitParam8Avi,"AVI");
 62.1245 +/** 8 bit name of the QTIME property parameter.
 62.1246 +@publishedAll
 62.1247 +@released
 62.1248 +*/
 62.1249 +_LIT8(KVersitParam8Qtime,"QTIME");
 62.1250 +/** 8 bit name of the X509 property parameter.
 62.1251 +@publishedAll
 62.1252 +@released
 62.1253 +*/
 62.1254 +_LIT8(KVersitParam8X509,"X509");
 62.1255 +/** 8 bit name of the PGP property parameter.
 62.1256 +@publishedAll
 62.1257 +@released
 62.1258 +*/
 62.1259 +_LIT8(KVersitParam8PGP,"PGP");
 62.1260 +
 62.1261 +/**
 62.1262 +8 bit name of the X-IRMC-N property parameter (family or given
 62.1263 +name pronunciation).
 62.1264 +@publishedAll
 62.1265 +@released
 62.1266 +*/
 62.1267 +_LIT8(KVersitParam8NamePrn,"X-IRMC-N");
 62.1268 +/**
 62.1269 +8 bit name of the X-IRMC-ORG property parameter (company
 62.1270 +name pronunciation).
 62.1271 +@publishedAll
 62.1272 +@released
 62.1273 +*/
 62.1274 +_LIT8(KVersitParam8CompanyPrn,"X-IRMC-ORG");
 62.1275 +/**
 62.1276 +8 bit name of the X-IRMC- property parameter (pronunciation field prefix).
 62.1277 +@publishedAll
 62.1278 +@released
 62.1279 +*/
 62.1280 +_LIT8(KVersitParam8PronunciationPrefix,"X-IRMC-");
 62.1281 +
 62.1282 +
 62.1283 +
 62.1284 +class CContactIdArray : public CBase
 62.1285 +/** Array of contact item IDs (TContactItemIds).
 62.1286 +
 62.1287 +Instances of this class are used in several contact database functions,
 62.1288 +for instance CContactDatabase::DeleteContactsL().
 62.1289 +@publishedAll
 62.1290 +@released
 62.1291 +*/
 62.1292 +	{
 62.1293 +public:
 62.1294 +	IMPORT_C static CContactIdArray* NewL();
 62.1295 +	IMPORT_C static CContactIdArray* NewLC();
 62.1296 +	IMPORT_C static CContactIdArray* NewL(const CContactIdArray* aArray);
 62.1297 +	IMPORT_C static CContactIdArray* NewLC(const CContactIdArray* aArray);
 62.1298 +	static CContactIdArray* NewLC(RReadStream& aStream);
 62.1299 +	IMPORT_C ~CContactIdArray();
 62.1300 +	inline const TContactItemId& operator[](TInt aIndex) const;
 62.1301 +	inline TContactItemId& operator[](TInt aIndex);
 62.1302 +	inline TInt Count() const;
 62.1303 +	inline void Reset();
 62.1304 +	IMPORT_C TInt Find(TContactItemId aId) const;
 62.1305 +	IMPORT_C void AddL(TContactItemId aId);
 62.1306 +
 62.1307 +	inline void Remove(TInt aIndex);
 62.1308 +	inline void Remove(TInt aIndex,TInt aCount);
 62.1309 +	inline void InsertL(TInt aIndex,TContactItemId aId);
 62.1310 +	IMPORT_C void MoveL(TInt aOldIndex,TInt aNewIndex);
 62.1311 +	IMPORT_C void ReverseOrder();
 62.1312 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 62.1313 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 62.1314 +public:  // intended for internal Contacts Model usage only
 62.1315 +	void Sort();
 62.1316 +private:
 62.1317 +	CContactIdArray();
 62.1318 +	void ConstructL();
 62.1319 +	void CloneL(const CContactIdArray* aArray);
 62.1320 +private:
 62.1321 +	CArrayFixFlat<TContactItemId> *iIds;
 62.1322 +	};
 62.1323 +inline const TContactItemId& CContactIdArray::operator[](TInt aIndex) const
 62.1324 +/** Gets the indexed TContactItemId.
 62.1325 +
 62.1326 +@param aIndex The position of the contact ID within the array, relative to zero.
 62.1327 +This must be non-negative and less than the number of objects in the array
 62.1328 +otherwise the operator raises a panic.
 62.1329 +@return A reference to a const element of the array. */
 62.1330 +	{ return (*iIds)[aIndex]; }
 62.1331 +
 62.1332 +inline TContactItemId& CContactIdArray::operator[](TInt aIndex)
 62.1333 +/** Gets the indexed TContactItemId.
 62.1334 +
 62.1335 +@param aIndex The position of the contact ID within the array, relative to zero.
 62.1336 +This must be non-negative and less than the number of objects in the array
 62.1337 +otherwise the operator raises a panic.
 62.1338 +@return A reference to a non-const element of the array. */
 62.1339 +	{ return (*iIds)[aIndex]; }
 62.1340 +
 62.1341 +inline TInt CContactIdArray::Count() const
 62.1342 +/** Gets the number of contact IDs in the array.
 62.1343 +
 62.1344 +@return The number of contact IDs in the array. */
 62.1345 +	{ return iIds->Count(); }
 62.1346 +
 62.1347 +inline void CContactIdArray::Reset()
 62.1348 +/** Removes all contact IDs from the array. */
 62.1349 +	{ iIds->Reset(); }
 62.1350 +
 62.1351 +inline void CContactIdArray::Remove(TInt aIndex)
 62.1352 +/** Removes the indexed contact ID from the array.
 62.1353 +
 62.1354 +The index value must not be negative and must not be greater than the number
 62.1355 +of elements in the array, otherwise the function raises a panic.
 62.1356 +
 62.1357 +@param aIndex The index of the contact ID to remove. */
 62.1358 +	{ iIds->Delete(aIndex); }
 62.1359 +
 62.1360 +inline void CContactIdArray::Remove(TInt aIndex,TInt aCount)
 62.1361 +/** Removes a block of contact IDs from the array.
 62.1362 +
 62.1363 +This function raises a panic if any of the following are true:-
 62.1364 +
 62.1365 +- aCount is negative
 62.1366 +
 62.1367 +- aIndex is negative or is greater than the number of elements currently in
 62.1368 +the array
 62.1369 +
 62.1370 +- the sum of aIndex and aCount is greater than the number of elements currently
 62.1371 +in the array
 62.1372 +
 62.1373 +@param aIndex The index of the first contact ID to remove.
 62.1374 +@param aCount The number of contiguous contact IDs to delete from the array.
 62.1375 +If this is not specified, a value of one is assumed. */
 62.1376 +	{ iIds->Delete(aIndex,aCount); }
 62.1377 +
 62.1378 +inline void CContactIdArray::InsertL(TInt aIndex,TContactItemId aId)
 62.1379 +/** Inserts a contact ID into the array.
 62.1380 +
 62.1381 +The index must be valid or a panic occurs.
 62.1382 +
 62.1383 +The function may attempt to expand the array buffer. If there is insufficient
 62.1384 +memory available, the function leaves. The leave code is one of the system
 62.1385 +error codes. If the function leaves, the array is left in the state it was
 62.1386 +in before the call.
 62.1387 +
 62.1388 +@param aIndex The index at which to insert the contact ID.
 62.1389 +@param aId The contact ID to insert. */
 62.1390 +	{ iIds->InsertL(aIndex,aId); }
 62.1391 +	
 62.1392 +
 62.1393 +/** Shows supported event action types that are used when deleting
 62.1394 +a contact or an array of contacts
 62.1395 +@internalTechnology
 62.1396 +@released
 62.1397 +*/
 62.1398 +enum TCntSendEventAction
 62.1399 +	{
 62.1400 +	EDeferEvent              = 0,
 62.1401 +	ESendEvent               = 1,
 62.1402 +	ESendUnknownChangesEvent = 2,
 62.1403 +	};
 62.1404 +
 62.1405 +#endif
    63.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.2 +++ b/epoc32/include/app/cntfield.h	Wed Mar 31 12:27:01 2010 +0100
    63.3 @@ -0,0 +1,642 @@
    63.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    63.5 +// All rights reserved.
    63.6 +// This component and the accompanying materials are made available
    63.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    63.8 +// which accompanies this distribution, and is available
    63.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   63.10 +//
   63.11 +// Initial Contributors:
   63.12 +// Nokia Corporation - initial contribution.
   63.13 +//
   63.14 +// Contributors:
   63.15 +//
   63.16 +// Description:
   63.17 +// Persistence layer exports
   63.18 +// 
   63.19 +//
   63.20 +
   63.21 +
   63.22 +
   63.23 +#if !defined(__CNTFIELD_H__)
   63.24 +#define __CNTFIELD_H__
   63.25 +
   63.26 +#include <cntdef.h>
   63.27 +
   63.28 +
   63.29 +
   63.30 +const TInt KNullFieldId=-1;
   63.31 +
   63.32 +//const TInt KIntContactFieldHint???=0x01;
   63.33 +const TInt KIntContactHintIsPhone=0x02;
   63.34 +const TInt KIntContactHintIsMsg=0x04;
   63.35 +const TInt KIntContactHintIsCompanyName=0x08;
   63.36 +const TInt KIntContactHintIsFamilyName=0x10;
   63.37 +const TInt KIntContactHintIsGivenName=0x20;
   63.38 +const TInt KIntContactHintIsAddress=0x40;
   63.39 +const TInt KIntContactHintIsAdditionalName=0x80;
   63.40 +const TInt KIntContactHintIsSuffixName=0x100;
   63.41 +const TInt KIntContactHintIsPrefixName=0x200;
   63.42 +const TInt KIntContactHintStorageInline=0x400;
   63.43 +const TInt KIntContactHintIsEmail=0x4000;
   63.44 +const TInt KIntContactHintIsPronunciation=0x800;
   63.45 +const TInt KIntContactHintIsCompanyNamePronunciation=KIntContactHintIsPronunciation|KIntContactHintIsCompanyName;
   63.46 +const TInt KIntContactHintIsGivenNamePronunciation=KIntContactHintIsPronunciation|KIntContactHintIsGivenName;
   63.47 +const TInt KIntContactHintIsFamilyNamePronunciation=KIntContactHintIsPronunciation|KIntContactHintIsFamilyName;
   63.48 +
   63.49 +const TInt KHintTypeMask = 0x1FFFFF;
   63.50 +
   63.51 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
   63.52 +const TInt KHintAdditionalMask    = 0x7F000000; //Number of additional type ids.
   63.53 +const TInt KHintVCardMappingMask  = 0x80000000; //bit flag to show if there is a vCard mapping uid.
   63.54 +const TInt KHintTemplateFieldMask = 0x7FFFFFFF; //Template field mask in low hint value.
   63.55 +
   63.56 +const TInt KHintAdditionalMaskShift = 24;
   63.57 +
   63.58 +#else //_SYMBIAN_USE_SQLITE__
   63.59 +
   63.60 +const TInt KHintAdditionalMask = 0x200000;
   63.61 +const TInt KHintIdMask = 0xFFC00000;
   63.62 +
   63.63 +#endif //_SYMBIAN_USE_SQLITE__
   63.64 +
   63.65 +
   63.66 +class RWriteStream;
   63.67 +class RReadStream;
   63.68 +class CContactFieldStorage;
   63.69 +class CContactTextField;
   63.70 +class CContactStoreField;
   63.71 +class CContactAgentField;
   63.72 +class CContactDateField;
   63.73 +class TFieldHeader;
   63.74 +class CContactItemField;
   63.75 +class CContactItemFieldDef;
   63.76 +class CContactItemFieldSet;
   63.77 +class CContactItem;
   63.78 +
   63.79 +class CContentType : public CBase
   63.80 +/** The content type for a contact item field. 
   63.81 +
   63.82 +The content type identifies the field's type and the vCard property which 
   63.83 +the field maps to. It is owned by the field. Field types are defined as UIDs 
   63.84 +in cntdef.h.
   63.85 +
   63.86 +The vCard mapping is optional. It should be specified if the field type alone 
   63.87 +is not enough to identify the mapping. The possible values for the vCard 
   63.88 +mapping are defined as UIDs in cntdef.h.
   63.89 +
   63.90 +Each field is uniquely identified by the combination of UIDs contained in 
   63.91 +the content type. 
   63.92 +@publishedAll
   63.93 +@released
   63.94 +*/
   63.95 +    {
   63.96 +public:
   63.97 +    IMPORT_C ~CContentType();
   63.98 +	IMPORT_C static CContentType* NewL();
   63.99 +	IMPORT_C static CContentType* NewL(TFieldType aFieldType,TUid aMapping=KNullUid);
  63.100 +	IMPORT_C static CContentType* NewL(const CContentType &aContentType);
  63.101 +	static CContentType* NewLC(RReadStream& aStream);
  63.102 +	IMPORT_C void SetMapping(TUid aMapping);
  63.103 +	IMPORT_C void AddFieldTypeL(TFieldType aFieldType);
  63.104 +	IMPORT_C void RemoveFieldType(TFieldType aFieldType);
  63.105 +    IMPORT_C TFieldType FieldType(TInt aIndex) const;
  63.106 +    IMPORT_C TInt FieldTypeCount() const;
  63.107 +    IMPORT_C TUid Mapping() const;
  63.108 +	IMPORT_C TBool ContainsFieldType(TFieldType aFieldType) const;
  63.109 +	IMPORT_C TBool SupportsMultipleLines() const;
  63.110 +	IMPORT_C TBool operator==(const CContentType &aType) const;
  63.111 +	IMPORT_C TBool IsEqualForSyncUpdate(const CContentType& aType) const;
  63.112 +	IMPORT_C TBool IsEqual(const CContentType& aType) const;
  63.113 +	void Reset(); 
  63.114 +	void InternalizeAdditionalUidsL(TInt aCount,RReadStream& aStream);
  63.115 +	void ExternalizeL(RWriteStream& aStream) const;
  63.116 +	void InternalizeL(RReadStream& aStream);		
  63.117 +private:
  63.118 +    CContentType();
  63.119 +	CContentType(TUid aMapping);
  63.120 +	void ConstructL();
  63.121 +	void CloneL(const CContentType &aContentType);
  63.122 +private:
  63.123 +    TUid iMapping;
  63.124 +	CArrayFix<TUid>* iFieldTypes;
  63.125 +    };
  63.126 +
  63.127 +class CContactItemField : public CBase
  63.128 +/** A field in a contact item.
  63.129 +
  63.130 +Fields are grouped into a field set (CContactItemFieldSet), which is owned by 
  63.131 +the contact item.
  63.132 +
  63.133 +The contact item field stores the field data. The data may be text, a date/time 
  63.134 +value, or an agent, as indicated by the storage type (TStorageType). The storage 
  63.135 +type is also owned by the field. Note that numeric field data is not supported. 
  63.136 +All numbers, for instance telephone or fax numbers are stored as text.
  63.137 +
  63.138 +Fields also have a content type, attributes and a label. The label is a string 
  63.139 +which identifies the field to a user e.g. First name, Last name.
  63.140 +
  63.141 +The following attributes are supported: 
  63.142 +
  63.143 +- hidden: the field is not displayed if the view definition masks hidden 
  63.144 +fields
  63.145 +
  63.146 +- disabled: the field cannot be deleted from the original template and thus 
  63.147 +is marked as disabled
  63.148 +
  63.149 +- read only: the field cannot be written to
  63.150 +
  63.151 +- synchronise: used by Connectivity applications; set by default for all 
  63.152 +contact item fields
  63.153 +
  63.154 +- user added: the field was added by the user and was not taken from the 
  63.155 +template
  63.156 +
  63.157 +- template: indicates that the field is part of a template. Template fields 
  63.158 +differ from other fields in that they are persisted when they do not contain 
  63.159 +any data.
  63.160 +
  63.161 +- speed dial: the field contains a telephone number which maps to one of 
  63.162 +the nine possible speed dial positions.
  63.163 +
  63.164 +These attributes can be set using member functions of this class, but they 
  63.165 +are normally set automatically by other functions, for instance when 
  63.166 +setting a speed dial field, CContactDatabase automatically sets the field's 
  63.167 +speed dial attribute. 
  63.168 +@publishedAll
  63.169 +@released
  63.170 +*/
  63.171 +	{
  63.172 +private:
  63.173 +	friend class TFieldHeader;
  63.174 +	friend class CContactItemFieldSet;
  63.175 +	friend class CContactDatabase;      
  63.176 +	friend class CContactTables;
  63.177 +	friend class RPplContactTable;
  63.178 +	friend class CPackagerTests;
  63.179 +	class THint
  63.180 +	/**
  63.181 +	@internalComponent
  63.182 +	@released
  63.183 +	*/
  63.184 +		{
  63.185 +	public:
  63.186 +		THint();
  63.187 +		THint(TInt aValue);
  63.188 +		TBool operator==(const THint& aHint) const;
  63.189 +		TBool operator!=(const THint& aHint) const;
  63.190 +		TInt  HintType() const;
  63.191 +		inline void SetIsMatchAll();
  63.192 +		inline void SetIsPhone();
  63.193 +		inline void SetIsMsg();
  63.194 +		inline void SetIsCompanyName();
  63.195 +		inline void SetIsFamilyName();
  63.196 +		inline void SetIsGivenName();
  63.197 +		inline void SetIsCompanyNamePronunciation();
  63.198 +		inline void SetIsFamilyNamePronunciation();
  63.199 +		inline void SetIsGivenNamePronunciation();
  63.200 +		inline void SetIsAddress();
  63.201 +		inline void SetIsAdditionalName();
  63.202 +		inline void SetIsSuffixName();
  63.203 +		inline void SetIsPrefixName();
  63.204 +		inline void SetStorageIsInline();
  63.205 +		inline void SetIsEmail();
  63.206 +		inline TBool IsMatchAll() const;
  63.207 +		inline TBool IsDefault() const;
  63.208 +		inline TBool IsPhone() const;
  63.209 +		inline TBool IsMsg() const;
  63.210 +		inline TBool IsCompanyName() const;
  63.211 +		inline TBool IsFamilyName() const;
  63.212 +		inline TBool IsGivenName() const;
  63.213 +		inline TBool IsCompanyNamePronunciation() const;
  63.214 +		inline TBool IsFamilyNamePronunciation() const;
  63.215 +		inline TBool IsGivenNamePronunciation() const;
  63.216 +		inline TBool IsAddress() const;
  63.217 +		inline TBool IsAdditionalName() const;
  63.218 +		inline TBool IsSuffixName() const;
  63.219 +		inline TBool IsPrefixName() const;
  63.220 +		inline TBool IsStorageInline() const;
  63.221 +		inline TBool IsEmail() const;
  63.222 +		inline TBool Contains(const THint& aHint) const;
  63.223 +		
  63.224 +#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__
  63.225 +		inline void SetHasAdditionalUids();
  63.226 +		TBool HasAdditionalUids() const;
  63.227 +		
  63.228 +		TInt FieldId() const;
  63.229 +		void SetFieldId(TInt aId);
  63.230 +		
  63.231 +#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
  63.232 +        TInt  TemplateFieldId() const;
  63.233 +        void  SetTemplateFieldId(TInt aTemplateFieldId);
  63.234 +        
  63.235 +        inline void SetHasVCardMappingUid();
  63.236 +        inline TBool HasVCardMappingUid() const;
  63.237 +        
  63.238 +        inline TInt  AdditionalUidsNum() const;
  63.239 +        inline void  SetAdditionalUidsNum(TInt aNumber);
  63.240 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__		
  63.241 +	public:
  63.242 +		TInt iHintValue;
  63.243 +
  63.244 +		};
  63.245 +		
  63.246 +public:
  63.247 +	IMPORT_C static CContactItemField* NewLC();
  63.248 +	IMPORT_C static CContactItemField* NewL(TStorageType aType);
  63.249 +	IMPORT_C static CContactItemField* NewLC(TStorageType aType);
  63.250 +	IMPORT_C static CContactItemField* NewL(TStorageType aType, TFieldType aFieldType);
  63.251 +	IMPORT_C static CContactItemField* NewLC(TStorageType aType, TFieldType aFieldType);
  63.252 +	IMPORT_C static CContactItemField* NewL(const CContactItemField &aField);
  63.253 +	IMPORT_C static CContactItemField* NewLC(const CContactItemField &aField);
  63.254 +	IMPORT_C static CContactItemField* NewL(TStorageType aType, const CContentType &aContentType);
  63.255 +	IMPORT_C static CContactItemField* NewLC(TStorageType aType, const CContentType &aContentType);
  63.256 +	IMPORT_C ~CContactItemField();
  63.257 +
  63.258 +	IMPORT_C TStorageType StorageType() const;
  63.259 +	IMPORT_C const CContentType &ContentType() const;
  63.260 +	inline TBool IsHidden() const;
  63.261 +	inline TBool IsReadOnly() const;
  63.262 +	inline TBool IsDisabled() const;
  63.263 +	inline TBool IsTemplate() const;
  63.264 +	inline TBool IsPrivate() const;
  63.265 +	inline TBool IsSpeedDial() const;
  63.266 +	inline TBool DoSynchronize() const;
  63.267 +	inline TBool OverRidesLabel() const;
  63.268 +	inline TBool HasExtraStream() const;
  63.269 +	inline TBool UsesTemplateTypes() const;
  63.270 +	inline TBool LabelUnspecified() const;
  63.271 +	inline TBool UserAddedField() const;
  63.272 +	inline TBool IsCustomFilterable() const;
  63.273 +	IMPORT_C void SetHintType(TInt aType);
  63.274 +	IMPORT_C TPtrC Label() const;
  63.275 +	IMPORT_C void ResetStore();
  63.276 +	IMPORT_C CContactFieldStorage* Storage() const;
  63.277 +	IMPORT_C CContactTextField * TextStorage() const;
  63.278 +	IMPORT_C CContactStoreField * StoreStorage() const;
  63.279 +	IMPORT_C CContactAgentField * AgentStorage() const;
  63.280 +	IMPORT_C CContactDateField * DateTimeStorage() const;
  63.281 +	IMPORT_C void AddFieldTypeL(TFieldType aFieldType);
  63.282 +	IMPORT_C void RemoveFieldType(TFieldType aFieldType);
  63.283 +	IMPORT_C void SetMapping(TUid aMapping);
  63.284 +	IMPORT_C void SetHidden(TBool aHidden);
  63.285 +	IMPORT_C void SetReadOnly(TBool aReadOnly);
  63.286 +	IMPORT_C void SetSynchronize(TBool aSynchronize);
  63.287 +	IMPORT_C void SetDisabled(TBool aDisabled);
  63.288 +	IMPORT_C void SetLabelL(const TDesC& aLabel);
  63.289 +	IMPORT_C void SetLabel(HBufC* aLabel);
  63.290 +	IMPORT_C void SetUserAddedField(TBool aUserAddedField);
  63.291 +	IMPORT_C void SetTemplateField(TBool aTemplateField);
  63.292 +	IMPORT_C void SetPrivate(TBool aTemplateField);
  63.293 +	IMPORT_C void SetSpeedDial(TBool aSpeedDialField);
  63.294 +	IMPORT_C void SetId(TInt aId);
  63.295 +	IMPORT_C TInt Id() const;
  63.296 +	IMPORT_C TUint UserFlags() const;
  63.297 +	IMPORT_C void SetUserFlags(TUint aFlags);
  63.298 +	IMPORT_C static TBool IsValidLabel(const TDesC& aLabel,TInt& aInvalidPos);
  63.299 +	IMPORT_C TBool IsTemplateLabelField() const;
  63.300 +	IMPORT_C void GetFieldText(TDes &aText) const;
  63.301 +	IMPORT_C void RestoreHeaderL(RReadStream& aStream, const CContactItemFieldSet *aSystemTemplateFields);
  63.302 +	IMPORT_C TStreamId RestoreFieldTypesL(RReadStream &aRootStream, const CContactItemFieldSet *aSystemTemplateFields);
  63.303 +	IMPORT_C void RestoreTextL(HBufC *aTextStream,TInt aTextFieldIndex);
  63.304 +	IMPORT_C TBool RestoreIfMatchL(RReadStream& aStream,const CContactItemFieldDef *aFieldDef, const CContactItemFieldSet *aSystemTemplateFields,HBufC *aTextStream,TInt aTextIndex);
  63.305 +
  63.306 +public:
  63.307 +	IMPORT_C void SetCustomFilterable(EContactFieldFlags aContactFilterType);
  63.308 +	IMPORT_C void Reset();
  63.309 +	void SetUsesTemplateTypes(TBool aUsesTemplateTypes);
  63.310 +	void SetOverRidesLabel(TBool aValue);
  63.311 +	TInt TemplateFieldId() const;
  63.312 +	void SetDeleted(TBool aDeleted);
  63.313 +	inline TBool IsDeleted() const;
  63.314 +	void CopyStorageL(const CContactItemField &aField);
  63.315 +	void UpdateFieldFlags(const CContactItemFieldSet& aTemplateFieldSet);
  63.316 +	void PopulateStoreL(RStoreWriteStream& aRootStream, TInt aCount, CArrayFix<TFieldHeader>& aFieldHeaderArray) const;
  63.317 +	void PrepareFieldAsTemplateL(CContactItemFieldSet& aSystemTemplateFieldSet);
  63.318 +	IMPORT_C TBool HasCustomFilter(EContactFieldFlags& contactFieldFlag) const;
  63.319 +	TBool RestoreIfMatchL(RReadStream& aStream,TFieldType aFieldType, const CContactItemFieldSet *aSystemTemplateFields,HBufC *aTextStream,TInt aTextIndex);
  63.320 +	void ExternalizeL(RWriteStream& aStream) const;
  63.321 +	void InternalizeL(RReadStream& aStream);		
  63.322 +	
  63.323 +protected:
  63.324 +	void UsesTemplateData(TInt aTemplateFieldId);
  63.325 +private:
  63.326 +	void UsesTemplateLabel();
  63.327 +	void SetLabelUnspecified(TBool aUnspecified);
  63.328 +	const CContentType &TemplateContentType(const CContactItemFieldSet &aSystemTemplateFields) const;
  63.329 +	TFieldHeader StoreL(RWriteStream& aTextStream,CStreamStore& aBlobStore,TInt aTextFieldIndex);
  63.330 +	TStreamId StoreAdditionalUidsL(CStreamStore& aStore,TStreamId aId, CArrayFixFlat<TUid> *aAdditionalFields);
  63.331 +  	TStreamId StoreDataL(CStreamStore& aStore);
  63.332 +
  63.333 +   	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
  63.334 +    void RestoreDataL(CStreamStore& aStore,TStreamId aId);
  63.335 +	
  63.336 + 	TStreamId RestoreHintL(CStreamStore& aStore,RReadStream& aStream);
  63.337 +	TBool AddFieldToHint(TFieldType aFieldType, CContactItemField::THint &aHint) const;
  63.338 +	void MapHintsToFieldTypesL(THint aHint);
  63.339 +	CContactItemField();
  63.340 +	CContactItemField(TStorageType aType);
  63.341 +	void CloneL(const CContactItemField &aField);
  63.342 +	void ConstructStorageL();
  63.343 +private:
  63.344 +	enum {EUserMaskShift=4};
  63.345 +	enum // er5 hard coded enum most of which have been used but not documented ;o(
  63.346 +		{
  63.347 +		EHidden				=0x00000001,
  63.348 +		EReadOnly			=0x00000002,
  63.349 +		ESynchronize		=0x00000004,
  63.350 +		EDisabled			=0x00000008,
  63.351 +		/* 0x00000010,-> 0x00000080 are used for 
  63.352 +			the user defined attribs / categories like work /
  63.353 +			Personal / Other / None - used in er5 UI */
  63.354 +		EUserMask			=0x000000F0,
  63.355 +		ETemplateMask		=EUserMask|ESynchronize|EReadOnly|EHidden,
  63.356 +		EOverRidesLabel		=0x00000100,
  63.357 +		EUsesTemplateData	=0x00000200,
  63.358 +		EUserAddedField		=0x00000400,
  63.359 +		ETemplate			=0x00000800,
  63.360 +		/* 0x00001000,-> 0x0000F000 are used for 
  63.361 +			the storage type of the contact field */
  63.362 +		ELabelUnspecified	=0x40000000,
  63.363 +		EDeleted			=0x80000000
  63.364 +		};
  63.365 +	enum 
  63.366 +		// new extended enum to allow cntmodel to have
  63.367 +		// more attributes per field
  63.368 +		{
  63.369 +		EPrivate			=0x00000001,
  63.370 +		ESpeedDial			=0x00000002,
  63.371 +		EUserDefinedFilter	=0x00000004,
  63.372 +		EUserDefinedFilter1 =0x00000008,
  63.373 +		EUserDefinedFilter2	=0x00000010,
  63.374 +		EUserDefinedFilter3	=0x00000020,
  63.375 +		EUserDefinedFilter4	=0x00000040
  63.376 +		};
  63.377 +	
  63.378 +private:
  63.379 +	CContentType *iContentType;
  63.380 +	TStorageType iStorageType;
  63.381 +	HBufC* iLabel;
  63.382 +	TInt iId;
  63.383 +	TUint32 iAttributes;
  63.384 +	TUint32 iExtendedAttributes;
  63.385 +	CContactFieldStorage* iStorage;
  63.386 +	TInt iTemplateFieldId;
  63.387 +	};
  63.388 +
  63.389 +class CContactItemFieldDef : public CArrayFixFlat<TUid>
  63.390 +/** A field definition. 
  63.391 +
  63.392 +This is an array of field types. Field definitions are used by 
  63.393 +CContactDatabase to specify a subset of fields when searching.
  63.394 +
  63.395 +The CContactItemFieldDef class is derived from CArrayFixFlat<TUid> so all 
  63.396 +relevant functions can be used, e.g. to add and remove elements. It adds no 
  63.397 +functions other than a constructor. 
  63.398 +@publishedAll
  63.399 +@released
  63.400 +*/
  63.401 +	{
  63.402 +public:
  63.403 +	inline CContactItemFieldDef() : CArrayFixFlat<TUid>(8) 
  63.404 +	/** Constructs the CContactItemFieldDef object, with an array granularity of 8. */
  63.405 +		{};
  63.406 +	};
  63.407 +
  63.408 +class TContactFieldAtts
  63.409 +/**
  63.410 +@internalComponent
  63.411 +@released
  63.412 +*/
  63.413 +	{
  63.414 +public:
  63.415 +	inline TContactFieldAtts() : iStorage(0)
  63.416 +		{};
  63.417 +
  63.418 +	void SetAttribs(TUint32 aAttribs);
  63.419 +	void SetExtendedAttribs(TUint32 aExtendedAttribs);
  63.420 +	void SetType(TStorageType aType);
  63.421 +	TUint32 Attribs() const;
  63.422 +	TUint32 ExtendedAttribs() const;
  63.423 +	TStorageType Type() const;
  63.424 +	void InternalizeL(RReadStream& aStream);
  63.425 +	void ExternalizeL(RWriteStream& aStream) const;
  63.426 +
  63.427 +#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__	
  63.428 +	TInt Count() const;
  63.429 +	void SetCount(TInt aCount);
  63.430 +	TInt TemplateFieldId() const;
  63.431 +	void SetTemplateFieldId(TInt aId);
  63.432 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
  63.433 +
  63.434 +		
  63.435 +private:
  63.436 +	TUint32 iStorage;
  63.437 +	
  63.438 +#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__	
  63.439 +	TUint32 iExtendedAttribs;
  63.440 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
  63.441 +	};
  63.442 +
  63.443 +
  63.444 +class TFieldHeader
  63.445 +/**
  63.446 +@internalComponent
  63.447 +@released
  63.448 +*/
  63.449 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
  63.450 +
  63.451 +	{
  63.452 +public:
  63.453 +    TFieldHeader();
  63.454 +	TFieldHeader(TContactFieldAtts aAtts, TUint32 aFieldUid, TStreamId aId);
  63.455 +	
  63.456 +	inline TContactFieldAtts FieldAtts() const;
  63.457 +	inline void SetFieldAtts(TContactFieldAtts aAtts);
  63.458 +	
  63.459 +	inline TInt FieldId() const;
  63.460 +    inline void SetFieldId(TInt aId);
  63.461 +    
  63.462 +    inline TStreamId StreamId() const;
  63.463 +    inline void SetStreamId(TStreamId aId);
  63.464 +    
  63.465 +private:
  63.466 +	TContactFieldAtts iAtts;
  63.467 +    TInt      iFieldUid;
  63.468 +	TStreamId iStreamId;
  63.469 +	};
  63.470 +
  63.471 +#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
  63.472 +
  63.473 +	{
  63.474 +public:
  63.475 +	inline TFieldHeader(TStreamId aId,TContactFieldAtts aAtts);
  63.476 +	
  63.477 +public:
  63.478 +	TStreamId iStreamId;
  63.479 +	TContactFieldAtts iAtts;
  63.480 +	};
  63.481 +
  63.482 +inline TFieldHeader::TFieldHeader(TStreamId aId,TContactFieldAtts aAtts)
  63.483 +	{ iStreamId=aId; iAtts=aAtts; }
  63.484 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
  63.485 +
  63.486 +inline TBool CContactItemField::IsHidden() const
  63.487 +/** Gets the value of the field's hidden attribute.
  63.488 +
  63.489 +@return ETrue if hidden attribute is set, EFalse if not set. */
  63.490 +    { return iAttributes&EHidden; }
  63.491 +
  63.492 +inline TBool CContactItemField::IsReadOnly() const
  63.493 +/** Gets the value of the field's read only attribute.
  63.494 +
  63.495 +@return ETrue if read only attribute set, EFalse if not set. */
  63.496 +    { return iAttributes&EReadOnly; }
  63.497 +
  63.498 +inline TBool CContactItemField::IsDisabled() const
  63.499 +/** Gets the value of the field's disabled attribute.
  63.500 +
  63.501 +@return ETrue if disabled attribute set, EFalse if not set. */
  63.502 +	{ return iAttributes&EDisabled; }
  63.503 +
  63.504 +inline TBool CContactItemField::IsTemplate() const
  63.505 +/** Tests whether the field is in a template, as set by SetTemplateField().
  63.506 +
  63.507 +@return ETrue if field is a template field. EFalse if not. */
  63.508 +	{ return iAttributes&ETemplate; }
  63.509 +
  63.510 +inline TBool CContactItemField::IsPrivate() const
  63.511 +/** Tests whether the field's private attribute is set.
  63.512 +
  63.513 +@return True if the field's private attribute is set, false if not. */
  63.514 +	{ return iExtendedAttributes&EPrivate; }
  63.515 +
  63.516 +inline TBool CContactItemField::IsSpeedDial() const
  63.517 +/** Tests whether the field is a speed dial field.
  63.518 +
  63.519 +@return True if the field is a speed dial field, false if not. */
  63.520 +	{ return iExtendedAttributes&ESpeedDial; }
  63.521 +
  63.522 +inline TBool CContactItemField::DoSynchronize() const
  63.523 +/** Gets the value of the field's synchronise attribute.
  63.524 +
  63.525 +@return ETrue if synchronise attribute is set, EFalse if not set. */
  63.526 +    { return iAttributes&ESynchronize; }
  63.527 +
  63.528 +inline TBool CContactItemField::IsDeleted() const
  63.529 +/** Gets the value of the field's deleted  attribute.
  63.530 +
  63.531 +@return ETrue if the field is deleted, otherwise EFalse.                            */
  63.532 +	{ return iAttributes&EDeleted; }
  63.533 +
  63.534 +inline void CContactItemField::THint::SetIsPhone()
  63.535 +	{iHintValue|=KIntContactHintIsPhone;}
  63.536 +inline void CContactItemField::THint::SetIsMsg()
  63.537 +	{iHintValue|=KIntContactHintIsMsg;}
  63.538 +// turn off Pronunciation bit too?
  63.539 +inline void CContactItemField::THint::SetIsCompanyName()
  63.540 +	{iHintValue|=KIntContactHintIsCompanyName;}
  63.541 +inline void CContactItemField::THint::SetIsFamilyName()
  63.542 +	{iHintValue|=KIntContactHintIsFamilyName;}
  63.543 +inline void CContactItemField::THint::SetIsGivenName()
  63.544 +	{iHintValue|=KIntContactHintIsGivenName;}
  63.545 +inline void CContactItemField::THint::SetIsCompanyNamePronunciation()
  63.546 +	{iHintValue|=KIntContactHintIsCompanyName|KIntContactHintIsPronunciation;}
  63.547 +inline void CContactItemField::THint::SetIsFamilyNamePronunciation()
  63.548 +	{iHintValue|=KIntContactHintIsFamilyName|KIntContactHintIsPronunciation;}
  63.549 +inline void CContactItemField::THint::SetIsGivenNamePronunciation()
  63.550 +	{iHintValue|=KIntContactHintIsGivenName|KIntContactHintIsPronunciation;}
  63.551 +inline void CContactItemField::THint::SetIsAddress()
  63.552 +	{iHintValue|=KIntContactHintIsAddress;}
  63.553 +inline void CContactItemField::THint::SetIsAdditionalName()
  63.554 +	{iHintValue|=KIntContactHintIsAdditionalName;}
  63.555 +inline void CContactItemField::THint::SetIsSuffixName()
  63.556 +	{iHintValue|=KIntContactHintIsSuffixName;}
  63.557 +inline void CContactItemField::THint::SetIsPrefixName()
  63.558 +	{iHintValue|=KIntContactHintIsPrefixName;}
  63.559 +inline void CContactItemField::THint::SetStorageIsInline()
  63.560 +	{iHintValue|=KIntContactHintStorageInline;}
  63.561 +inline void CContactItemField::THint::SetIsEmail()
  63.562 +	{iHintValue|=KIntContactHintIsEmail;}
  63.563 +inline TBool CContactItemField::THint::IsPhone() const
  63.564 +	{return (iHintValue&KIntContactHintIsPhone);}
  63.565 +inline TBool CContactItemField::THint::IsMsg() const
  63.566 +	{return (iHintValue&KIntContactHintIsMsg);}
  63.567 +inline TBool CContactItemField::THint::IsCompanyName() const
  63.568 +	{return ((iHintValue&KIntContactHintIsCompanyNamePronunciation) == KIntContactHintIsCompanyName);}
  63.569 +inline TBool CContactItemField::THint::IsFamilyName() const
  63.570 +	{return ((iHintValue&KIntContactHintIsFamilyNamePronunciation)==KIntContactHintIsFamilyName);}
  63.571 +inline TBool CContactItemField::THint::IsGivenName() const
  63.572 +	{return ((iHintValue&KIntContactHintIsGivenNamePronunciation)==KIntContactHintIsGivenName);}
  63.573 +inline TBool CContactItemField::THint::IsCompanyNamePronunciation() const
  63.574 +	{return ((iHintValue&KIntContactHintIsCompanyNamePronunciation) == KIntContactHintIsCompanyNamePronunciation);}
  63.575 +inline TBool CContactItemField::THint::IsFamilyNamePronunciation() const
  63.576 +	{return ((iHintValue&KIntContactHintIsFamilyNamePronunciation)==KIntContactHintIsFamilyNamePronunciation);}
  63.577 +inline TBool CContactItemField::THint::IsGivenNamePronunciation() const
  63.578 +	{return ((iHintValue&KIntContactHintIsGivenNamePronunciation)==KIntContactHintIsGivenNamePronunciation);}
  63.579 +inline TBool CContactItemField::THint::IsAddress() const
  63.580 +	{return (iHintValue&KIntContactHintIsAddress);}
  63.581 +inline TBool CContactItemField::THint::IsAdditionalName() const
  63.582 +	{return (iHintValue&KIntContactHintIsAdditionalName);}
  63.583 +inline TBool CContactItemField::THint::IsSuffixName() const
  63.584 +	{return (iHintValue&KIntContactHintIsSuffixName);}
  63.585 +inline TBool CContactItemField::THint::IsPrefixName() const
  63.586 +	{return (iHintValue&KIntContactHintIsPrefixName);}
  63.587 +inline TBool CContactItemField::THint::IsStorageInline() const
  63.588 +	{return (iHintValue&KIntContactHintStorageInline);}
  63.589 +inline TBool CContactItemField::THint::IsEmail() const
  63.590 +	{return (iHintValue&KIntContactHintIsEmail);}
  63.591 +	
  63.592 +#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__	
  63.593 +inline void CContactItemField::THint::SetHasAdditionalUids()
  63.594 +	{iHintValue|=KHintAdditionalMask;}
  63.595 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__ 
  63.596 +inline TBool CContactItemField::THint::Contains(const THint& aHint) const
  63.597 +	{return (iHintValue&aHint.iHintValue);}
  63.598 +
  63.599 +inline TBool CContactItemField::OverRidesLabel() const
  63.600 +/** Tests whether the field's label (as set by SetLabel()) overrides the label 
  63.601 +specified in the field's template.
  63.602 +
  63.603 +@return True if the field's label overrides the label specified in the template; 
  63.604 +false if not. */
  63.605 +	{return iAttributes&EOverRidesLabel;}
  63.606 +
  63.607 +inline TBool CContactItemField::HasExtraStream() const
  63.608 +/** Tests whether the field needs an extra stream to store information not contained 
  63.609 +in the template. This is the case if the field's content type is not based 
  63.610 +on a template, or if the field has a label which overrides the label specified 
  63.611 +in the template.
  63.612 +
  63.613 +@return True if the field uses an extra stream; false if not. */
  63.614 +	{return(!(iAttributes&EUsesTemplateData) || iAttributes&EOverRidesLabel);}
  63.615 +
  63.616 +inline TBool CContactItemField::UsesTemplateTypes() const
  63.617 +/** Tests whether or not the field's content type is based on a template.
  63.618 +
  63.619 +@return True if the field's content type is based on a template; false if not. */
  63.620 +	{return iAttributes&EUsesTemplateData;}
  63.621 +
  63.622 +inline TBool CContactItemField::LabelUnspecified() const
  63.623 +/** Tests whether the field's label has been set, either by a call to SetLabel() 
  63.624 +or by inheriting a label specified in the template.
  63.625 +
  63.626 +@return True if the field's label has been set, false if not. */
  63.627 +	{return iAttributes&ELabelUnspecified;}
  63.628 +
  63.629 +inline TBool CContactItemField::UserAddedField() const
  63.630 +/** Gets the value of the user added field attribute.
  63.631 +
  63.632 +@return ETrue if the user added attribute is set, EFalse if not. */
  63.633 +	{return iAttributes&EUserAddedField;}
  63.634 +
  63.635 +inline TBool CContactItemField::IsCustomFilterable() const
  63.636 +/** Tests the value of the user defined filter attribute.
  63.637 +
  63.638 +@return ETrue if the user defined filter attribute is set, EFalse if not. */
  63.639 +	{
  63.640 +	return (iExtendedAttributes&EUserDefinedFilter || iExtendedAttributes&EUserDefinedFilter1 ||
  63.641 +	       iExtendedAttributes&EUserDefinedFilter2 || iExtendedAttributes&EUserDefinedFilter3 
  63.642 +	       || iExtendedAttributes&EUserDefinedFilter4);
  63.643 +	}
  63.644 +	
  63.645 +#endif
    64.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.2 +++ b/epoc32/include/app/cntfilt.h	Wed Mar 31 12:27:01 2010 +0100
    64.3 @@ -0,0 +1,214 @@
    64.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    64.5 +// All rights reserved.
    64.6 +// This component and the accompanying materials are made available
    64.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    64.8 +// which accompanies this distribution, and is available
    64.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   64.10 +//
   64.11 +// Initial Contributors:
   64.12 +// Nokia Corporation - initial contribution.
   64.13 +//
   64.14 +// Contributors:
   64.15 +//
   64.16 +// Description:
   64.17 +//
   64.18 +
   64.19 +#ifndef __CNTFILT_H__
   64.20 +#define __CNTFILT_H__
   64.21 +
   64.22 +#include <e32base.h>
   64.23 +
   64.24 +#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
   64.25 +#include <d32dbms.h>
   64.26 +#endif
   64.27 +
   64.28 +#include <cntdb.h>
   64.29 +
   64.30 +class CCntFilter : public CBase
   64.31 +/** A contact database filter.
   64.32 +
   64.33 +This is used to get a subset of the items in a contact database. 
   64.34 +There are three criteria used when filtering a database:
   64.35 +
   64.36 +- the contact item's state
   64.37 +
   64.38 +- the date/time the contact item was created/last modified/deleted
   64.39 +
   64.40 +- the contact item's type
   64.41 +
   64.42 +The state can be one of: deleted, modified or created (since 
   64.43 +a specified date/time). The filter can be set to include contact items of 
   64.44 +only one state, or it can be set to include contact items of all states, using 
   64.45 +the TInclude enumeration. 
   64.46 +
   64.47 +The date/time value is used in combination with the contact item's state.
   64.48 +
   64.49 +The contact item's type is one of contact card, contact card group, contact 
   64.50 +card template, or own card. Any combination of contact types may be specified 
   64.51 +in the filter, in addition to the contact item's state.
   64.52 +
   64.53 +After the filter has been set up, it should be passed to the function 
   64.54 +CContactDatabase::FilterDatabaseL(). 
   64.55 +@publishedAll
   64.56 +@released
   64.57 +*/
   64.58 +	{
   64.59 +	friend class CPackagerTests; //Comparison test
   64.60 +public:	
   64.61 +	/** Flags to identify which contact items should be included in the filter.
   64.62 +
   64.63 +	Only one of the following values can be set in the filter at a time. However 
   64.64 +	the client may select to filter contacts in all states using EIncludeAllContacts. */
   64.65 +	enum TInclude 
   64.66 +		{ 
   64.67 +		/** Contact items in all states should be included. */
   64.68 +		EIncludeAllContacts,
   64.69 +		/** Only contact items which have been added since the date/time should be included. */
   64.70 +		EIncludeNewContacts,
   64.71 +		/** Only contact items which have been modified since the date/time should be included. */
   64.72 +		EIncludeModifiedContacts,
   64.73 +		/** Only contact items which have been deleted since the date/time should be included. */
   64.74 +		EIncludeDeletedContacts	
   64.75 +		};
   64.76 +	/** Contact item types.*/
   64.77 +	enum TContactType
   64.78 +		{
   64.79 +		/** All contact item types should be included. */
   64.80 +		EIncludeAllTypes = 0x01,
   64.81 +		/** Contact cards should be included in the filter. */
   64.82 +		EContactCards = 0x02,
   64.83 +		/** Contact card groups should be included in the filter. */
   64.84 +		EContactGroups = 0x04, 
   64.85 +		/** Contact card templates should be included in the filter. */
   64.86 +		EContactTemplates = 0x08,
   64.87 +		/** Own cards should be included in the filter. */
   64.88 +		EContactOwnCard = 0x10 
   64.89 +		};
   64.90 +
   64.91 +	IMPORT_C static CCntFilter* NewL();
   64.92 +	IMPORT_C static CCntFilter* NewLC();
   64.93 +	IMPORT_C static CCntFilter* NewL(const CCntFilter* aFilter);
   64.94 +	IMPORT_C static CCntFilter* NewLC(const CCntFilter* aFilter);
   64.95 +	static CCntFilter* NewLC(RReadStream& aStream);
   64.96 +	IMPORT_C ~CCntFilter();
   64.97 +public:
   64.98 +	/** A pointer to an array which stores the filtered list of contact IDs. */
   64.99 +	CContactIdArray* iIds;
  64.100 +//
  64.101 +	IMPORT_C void SetIncludeModifiedContacts(TBool aIncludeModified); 
  64.102 +	IMPORT_C void SetIncludeNewContacts(TBool aIncludeNew); 
  64.103 +	IMPORT_C void SetIncludeDeletedContacts(TBool aIncludeDeleted);
  64.104 +//
  64.105 +	IMPORT_C TBool TestContactFilterType(TUid aTypeUid);
  64.106 +	IMPORT_C void SetContactFilterTypeALL(TBool aFilterAllContacts);
  64.107 +	IMPORT_C void SetContactFilterTypeCard(TBool aFilterCards);
  64.108 +	IMPORT_C void SetContactFilterTypeGroup(TBool aFilterGroups);
  64.109 +	IMPORT_C void SetContactFilterTypeTemplate(TBool aFilterTemplates);
  64.110 +	IMPORT_C void SetContactFilterTypeOwnCard(TBool aFilterOwnCard);
  64.111 +	void ExternalizeL(RWriteStream& aStream) const;
  64.112 +	void InternalizeL(RReadStream& aStream);	
  64.113 +//
  64.114 +	inline TBool ContactFilterTypeALL() const;
  64.115 +	inline TBool ContactFilterTypeCard() const;
  64.116 +	inline TBool ContactFilterTypeGroup() const;
  64.117 +	inline TBool ContactFilterTypeOwnCard() const;
  64.118 +	inline TBool ContactFilterTypeTemplate() const;
  64.119 +//
  64.120 +	inline TBool IncludeModifiedContacts();
  64.121 +	inline TBool IncludeNewContacts();
  64.122 +	inline TBool IncludeDeletedContacts();
  64.123 +//
  64.124 +	inline TTime GetFilterDateTime();
  64.125 +	inline void SetFilterDateTime(TTime aTime);
  64.126 +//
  64.127 +	IMPORT_C void Reset();
  64.128 +//
  64.129 +/**	
  64.130 +    Intended usage: Reserved to preserve future BC  */ 
  64.131 +	IMPORT_C void Reserved1();
  64.132 +/**	
  64.133 +    Intended usage: Reserved to preserve future BC  */
  64.134 +  	IMPORT_C void Reserved2();
  64.135 +
  64.136 +private:
  64.137 +	TTime            iSinceDateTime;
  64.138 +	TInclude		 iInclude;
  64.139 +	TInt32			 iContactType;
  64.140 +	TAny*	         iReserved1;
  64.141 +	TAny*			 iReserved2;
  64.142 +	CCntFilter();
  64.143 +	CCntFilter(const CCntFilter* aFilter);
  64.144 +	};
  64.145 +
  64.146 +
  64.147 +inline TBool CCntFilter::IncludeModifiedContacts()
  64.148 +/** Tests whether the filter includes only contacts modified since the filter's 
  64.149 +date/time.
  64.150 +
  64.151 +@return ETrue if the filter only includes modified contacts. EFalse if not. */
  64.152 +	{return iInclude == EIncludeModifiedContacts;};
  64.153 +
  64.154 +inline TBool CCntFilter::IncludeNewContacts()
  64.155 +/** Tests whether the filter includes only contacts created since the filter's 
  64.156 +date/time.
  64.157 +
  64.158 +@return ETrue if the filter only includes new contacts. EFalse if not. */
  64.159 +	{return iInclude == EIncludeNewContacts;};
  64.160 +
  64.161 +inline TBool CCntFilter::IncludeDeletedContacts()
  64.162 +/** Tests whether the filter includes only contacts deleted since the filter's 
  64.163 +date/time.
  64.164 +
  64.165 +@return ETrue if the filter only includes deleted contacts. EFalse if not. */
  64.166 +	{return iInclude == EIncludeDeletedContacts;};
  64.167 +
  64.168 +inline TTime CCntFilter::GetFilterDateTime()
  64.169 +/** Gets the date and time used by the filter, as set by SetFilterDateTime().
  64.170 +
  64.171 +@return The filter's date and time value. */
  64.172 +	{return iSinceDateTime;};
  64.173 +
  64.174 +inline void CCntFilter::SetFilterDateTime(TTime aTime)
  64.175 +/** Sets the date and time used by the filter in combination with the TInclude 
  64.176 +value to test contact items against.
  64.177 +
  64.178 +@param aTime The new date and time value. */
  64.179 +	{iSinceDateTime = aTime;};
  64.180 +
  64.181 +// CONTACT TYPE
  64.182 +inline TBool CCntFilter::ContactFilterTypeALL() const
  64.183 +/** Tests whether all contact item types are included in the filter, as set by 
  64.184 +SetContactFilterTypeALL().
  64.185 +
  64.186 +@return ETrue if all contact item types are included in the filter, EFalse 
  64.187 +if not. */
  64.188 +	{return iContactType & EIncludeAllTypes;}
  64.189 +
  64.190 +inline TBool CCntFilter::ContactFilterTypeCard() const
  64.191 +/** Tests whether contact cards are included in the filter, as set by SetContactFilterTypeCard().
  64.192 +
  64.193 +@return ETrue if contact cards are included in the filter, EFalse if not. */
  64.194 +	{return iContactType & EContactCards;}
  64.195 +
  64.196 +inline TBool CCntFilter::ContactFilterTypeGroup() const
  64.197 +/** Tests whether contact card groups are included in the filter, as set by SetContactFilterTypeGroup().
  64.198 +
  64.199 +@return ETrue if contact card groups are included in the filter, EFalse if 
  64.200 +not. */
  64.201 +	{return iContactType & EContactGroups;}
  64.202 +
  64.203 +inline TBool CCntFilter::ContactFilterTypeOwnCard() const
  64.204 +/** Tests whether own cards are included in the filter, as set by SetContactFilterTypeOwnCard().
  64.205 +
  64.206 +@return ETrue if own cards are included in the filter, EFalse if not. */
  64.207 +	{return iContactType & EContactOwnCard;}
  64.208 +
  64.209 +inline TBool CCntFilter::ContactFilterTypeTemplate() const
  64.210 +/** Tests whether contact card templates are included in the filter, as set by 
  64.211 +SetContactFilterTypeTemplate().
  64.212 +
  64.213 +@return ETrue if contact card templates are included in the filter, EFalse 
  64.214 +if not. */
  64.215 +	{return iContactType & EContactTemplates;}
  64.216 +
  64.217 +#endif
    65.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.2 +++ b/epoc32/include/app/cntfldst.h	Wed Mar 31 12:27:01 2010 +0100
    65.3 @@ -0,0 +1,191 @@
    65.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    65.5 +// All rights reserved.
    65.6 +// This component and the accompanying materials are made available
    65.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    65.8 +// which accompanies this distribution, and is available
    65.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   65.10 +//
   65.11 +// Initial Contributors:
   65.12 +// Nokia Corporation - initial contribution.
   65.13 +//
   65.14 +// Contributors:
   65.15 +//
   65.16 +// Description:
   65.17 +//
   65.18 +
   65.19 +#if !defined(__CNTFLDST_H__)
   65.20 +#define __CNTFLDST_H__
   65.21 +
   65.22 +#if !defined(__E32BASE_H__)
   65.23 +#include <e32base.h>
   65.24 +#endif
   65.25 +
   65.26 +#if !defined(__BAMDESCA_H__)
   65.27 +#include <bamdesca.h>
   65.28 +#endif
   65.29 +
   65.30 +#if !defined(__S32STD_H__)
   65.31 +#include <s32std.h>
   65.32 +#endif
   65.33 +
   65.34 +#if !defined(__CNTDEF_H__)
   65.35 +#include <cntdef.h>
   65.36 +#endif
   65.37 +#define KTextStreamSeparator 0x00
   65.38 +
   65.39 +
   65.40 +
   65.41 +class CStreamStore;
   65.42 +
   65.43 +class CContactFieldStorage : public CBase
   65.44 +/** Abstract base class for the different types of contact field data storage. 
   65.45 +
   65.46 +CContactTextField, CContactStoreField, CContactAgentField, CContactDateField 
   65.47 +and CContactNumberField are all derived from this class.
   65.48 +
   65.49 +A pointer to the base class can be obtained by calling CContactItemField::Storage(). 
   65.50 +Pointers to the derived classes can be retrieved by calling CContactItemField::TextStorage(), 
   65.51 +CContactItemField::StoreStorage() etc. 
   65.52 +@publishedAll
   65.53 +@released
   65.54 +*/
   65.55 +	{
   65.56 +public:
   65.57 +	/** Internalises the field data.
   65.58 +	
   65.59 +	@param aStream Stream from which the the contents of the field should be internalised. */
   65.60 +    virtual void InternalizeL( RReadStream& aStream)=0;
   65.61 +	/** Externalises the field data.
   65.62 +	
   65.63 +	@param aStream Write stream to which the contents of the field should be externalised. */
   65.64 +    virtual void ExternalizeL(RWriteStream& aStream) const=0;
   65.65 +	/** Stores the field data.
   65.66 +	
   65.67 +	@param aStore Reference to the stream store to which the field data is written.
   65.68 +	@return The ID of the stream store. */
   65.69 +	virtual TStreamId StoreL(CStreamStore& aStore) const=0;
   65.70 +	/** Restores the field data.
   65.71 +	
   65.72 +	@param aStore Reference to the store from which the object is to be restored.
   65.73 +	@param aStream Reference to the stream which should be passed to InternalizeL(). */
   65.74 +	virtual void RestoreL(CStreamStore& aStore,RReadStream& aStream)=0;
   65.75 +	/** Tests whether the field storage contains data.
   65.76 +	
   65.77 +	@return True if the field storage contains data, false if not. */
   65.78 +	virtual TBool IsFull() const=0;
   65.79 +private:
   65.80 +	IMPORT_C virtual void CContactFieldStorage_Reserved1();
   65.81 +	TAny* CContactFieldStorage_Reserved;
   65.82 +	};
   65.83 +
   65.84 +class CContactTextField : public CContactFieldStorage
   65.85 +/** Provides access to the text stored in a contact item field. 
   65.86 +
   65.87 +An object of this class can be retrieved using CContactItemField::TextStorage(). 
   65.88 +@publishedAll
   65.89 +@released
   65.90 +*/
   65.91 +	{
   65.92 +public:
   65.93 +	IMPORT_C ~CContactTextField();
   65.94 +public: 
   65.95 +	void InternalizeL(HBufC *aTextStream,TInt aTextFieldIndex);
   65.96 +	void InternalizeL(RReadStream& aStream);
   65.97 +	void ExternalizeL(RWriteStream& aStream) const;
   65.98 +    void ExternalizeL(RWriteStream& aStream,TBool aIsInlineBlob,TInt aTextFieldIndex) const;
   65.99 +	TStreamId StoreL(CStreamStore& aStore) const;
  65.100 +	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
  65.101 +	IMPORT_C void SetTextL(const TDesC& aText);
  65.102 +	IMPORT_C void SetText(HBufC *aHbuf);
  65.103 +	IMPORT_C void SetTextArray(MDesCArray* anArray);
  65.104 +	IMPORT_C TPtrC Text() const;
  65.105 +	TBool IsFull() const;
  65.106 +	IMPORT_C TPtrC StandardTextLC() const;
  65.107 +	IMPORT_C void SetStandardTextL(const TDesC& aText);
  65.108 +	IMPORT_C void SetStandardTextArray(MDesCArray* anArray);
  65.109 +private:
  65.110 +	HBufC *EncodeL(const TDesC& aText,TUid aConversion) const;
  65.111 +	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
  65.112 +private:
  65.113 +	HBufC* iText;
  65.114 +	};
  65.115 +
  65.116 +class CContactStoreField : public CContactFieldStorage
  65.117 +/** Provides access to the binary field data stored in an 8-bit descriptor. 
  65.118 +
  65.119 +An object of this class can be retrieved using CContactItemField::StoreStorage(). 
  65.120 +@publishedAll
  65.121 +@released
  65.122 +*/
  65.123 +	{
  65.124 +public:
  65.125 +	~CContactStoreField();
  65.126 +	TStreamId StoreL(CStreamStore& aStore) const;
  65.127 +	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
  65.128 +	IMPORT_C void SetThingL(const TDesC8& aDes);
  65.129 +	IMPORT_C void SetThingL(const HBufC8& aDes);
  65.130 +	IMPORT_C void SetThingL(const CBufBase* aBuf);
  65.131 +	IMPORT_C HBufC8* Thing() const; 
  65.132 +	void InternalizeL(RReadStream& aStream);
  65.133 +    void ExternalizeL(RWriteStream& aStream) const;
  65.134 +	TBool IsFull() const;
  65.135 +private:
  65.136 +	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
  65.137 +private:
  65.138 +	HBufC8* iThing;
  65.139 +	};
  65.140 +
  65.141 +class CContactAgentField : public CContactFieldStorage
  65.142 +/** Provides access to an agent ID. 
  65.143 +
  65.144 +An agent is a field in a contact item which contains another person's 
  65.145 +contact details. It corresponds to the agent property in the vCard 
  65.146 +specification (version 2.1). The agent is identified by an agent ID 
  65.147 +(a TContactItemId).
  65.148 +
  65.149 +An object of this class can be retrieved using CContactItemField::AgentStorage(). 
  65.150 +@publishedAll
  65.151 +@released
  65.152 +*/
  65.153 +	{
  65.154 +public:
  65.155 +	TStreamId StoreL(CStreamStore& aStore) const;
  65.156 +	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
  65.157 +	IMPORT_C void SetAgentId(TContactItemId aId);
  65.158 +	IMPORT_C TContactItemId Value() const;
  65.159 +	void InternalizeL( RReadStream& aStream);
  65.160 +    void ExternalizeL(RWriteStream& aStream) const;
  65.161 +	TBool IsFull() const;
  65.162 +private:
  65.163 +	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
  65.164 +private:
  65.165 +	TContactItemId iAgentId;
  65.166 +	};
  65.167 +
  65.168 +class CContactDateField : public CContactFieldStorage
  65.169 +/** Provides access to the date/time value stored in a contact item field. 
  65.170 +
  65.171 +An object of this class can be retrieved using CContactItemField::DateTimeStorage(). 
  65.172 +@publishedAll
  65.173 +@released
  65.174 +*/
  65.175 +	{
  65.176 +public:
  65.177 +	CContactDateField();
  65.178 +	TStreamId StoreL(CStreamStore& aStore) const;
  65.179 +	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
  65.180 +	IMPORT_C void SetTime(TTime aTime);
  65.181 +	IMPORT_C void SetTime(TDateTime aDateTime);
  65.182 +	IMPORT_C TTime Time() const;
  65.183 +	void InternalizeL( RReadStream& aStream);
  65.184 +    void ExternalizeL(RWriteStream& aStream) const;
  65.185 +	TBool IsFull() const;
  65.186 +private:
  65.187 +	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
  65.188 +private:
  65.189 +	TTime iTime;
  65.190 +	};
  65.191 +
  65.192 +
  65.193 +
  65.194 +#endif
    66.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.2 +++ b/epoc32/include/app/cntitem.h	Wed Mar 31 12:27:01 2010 +0100
    66.3 @@ -0,0 +1,559 @@
    66.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    66.5 +// All rights reserved.
    66.6 +// This component and the accompanying materials are made available
    66.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    66.8 +// which accompanies this distribution, and is available
    66.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   66.10 +//
   66.11 +// Initial Contributors:
   66.12 +// Nokia Corporation - initial contribution.
   66.13 +//
   66.14 +// Contributors:
   66.15 +//
   66.16 +// Description:
   66.17 +// Persistence layer exports
   66.18 +// 
   66.19 +//
   66.20 +
   66.21 +#if !defined(__CNTITEM_H__)
   66.22 +#define __CNTITEM_H__
   66.23 +
   66.24 +#if !defined(__E32BASE_H__)
   66.25 +#include <e32base.h>
   66.26 +#endif
   66.27 +
   66.28 +#if !defined(__CNTDEF_H__)
   66.29 +#include <cntdef.h>
   66.30 +#endif
   66.31 +
   66.32 +#if !defined(__CNTFIELD_H__)
   66.33 +#include <cntfield.h>
   66.34 +#endif
   66.35 +
   66.36 +#include <cntdb.h>
   66.37 +
   66.38 +
   66.39 +const TInt KUidStringLength =244;
   66.40 +#define KUidStringSeparator '-'
   66.41 +class CContactItemField;
   66.42 +#define KContactMaxFieldNumber 32
   66.43 +class CContactItemViewDef;
   66.44 +class CContactItem;
   66.45 +
   66.46 +const TInt KContactFieldSetSearchAll=-1;
   66.47 +class CContactItemFieldSet : public CBase
   66.48 +/** A contact item's field set. The field set owns an array of contact item fields 
   66.49 +(CContactItemFields). The field set is owned by a contact item, and can be 
   66.50 +retrieved using CContactItem::CardFields(). Use functions in class 
   66.51 +CContactItem to add and remove fields to/from the field set.
   66.52 +
   66.53 +A field set can contain more than one field of the same type, but this is 
   66.54 +not advisable as it may cause problems when synchronising the contacts database. 
   66.55 +@publishedAll
   66.56 +@released
   66.57 +*/
   66.58 +	{
   66.59 +	friend class CContactItemField;
   66.60 +	friend class CContactDatabase;
   66.61 +	friend class CContactTables;
   66.62 +	friend class RPplContactTable;
   66.63 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
   66.64 +    friend class TCntPersistenceUtility;
   66.65 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
   66.66 +public:
   66.67 +	IMPORT_C static CContactItemFieldSet* NewL();
   66.68 +	IMPORT_C static CContactItemFieldSet* NewLC();
   66.69 +	IMPORT_C ~CContactItemFieldSet();
   66.70 +	inline const CContactItemField& operator[](TInt aIndex) const;
   66.71 +	inline CContactItemField& operator[](TInt aIndex);
   66.72 +	inline TInt Find(TFieldType aFieldType) const; // will only find the first such occurence
   66.73 +	inline TInt Find(TFieldType aFieldType,TUid aMapping) const;
   66.74 +	IMPORT_C TInt FindNext(TFieldType aFieldType,TInt aStartPos=KContactFieldSetSearchAll) const;
   66.75 +	IMPORT_C TInt FindNext(TFieldType aFieldType,TUid aMapping,TInt aStartPos=KContactFieldSetSearchAll) const;
   66.76 +	inline TInt Count() const;
   66.77 +	inline void Reset();
   66.78 +	IMPORT_C void UpdateFieldL(const CContactItemField& aField, TInt aMatchCount);
   66.79 +	IMPORT_C void UpdateFieldSyncL(const CContactItemField& aField, TInt aMatchCount);
   66.80 +	IMPORT_C CContactItemFieldSet& AddL(CContactItemField& aField);
   66.81 +	IMPORT_C void Remove(TInt aIndex);
   66.82 +	IMPORT_C void InsertL(TInt aIndex,CContactItemField& aField);
   66.83 +	IMPORT_C void Move(TInt aFrom, TInt aTo);
   66.84 +	IMPORT_C TStreamId StoreL(CStreamStore& aStore,RWriteStream& aTextStream,CStreamStore& aBlobStore);
   66.85 +	TStreamId StoreL(CStreamStore& aStore,RWriteStream& aTextStream,CStreamStore& aBlobStore,CContactTables* aTables);
   66.86 +	IMPORT_C void RestoreL(CStreamStore& aStore, TStreamId anId,CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,RReadStream& aReadStream);
   66.87 +	IMPORT_C void RestoreL(CStreamStore& aStore, TStreamId anId,CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,const CContactItem* aTemplate, HBufC* aTextBuf);
   66.88 +	TInt FieldText(TFieldType aFieldType, TDes &aText, TInt aStartPosition) const;
   66.89 +	CArrayFix<TFieldHeader>* ConstructFieldHeaderArrayLC(RWriteStream& aTextStream, CStreamStore& aBlobStore);
   66.90 +	TInt FieldTypeCount(const CContactItemFieldSet& aSystemTemplateFields, TInt aStartIndex, const CContactItemField& aField) const;
   66.91 +	TBool ContainsFieldTypeMapping(const CContentType& aBaseFieldContentType, const TFieldType& aContactFieldType) const;
   66.92 +	void ExternalizeL(RWriteStream& aStream) const;
   66.93 +	void InternalizeL(RReadStream& aStream);	
   66.94 +private:
   66.95 +	CContactItemFieldSet();
   66.96 +	void ConstructL();
   66.97 +	void SetFieldId(CContactItemField& aField);
   66.98 +	const CContactItemField* FindById(TInt aId) const;
   66.99 +	IMPORT_C TStreamId StoreL(CStreamStore& aStore,const CContactItem* aTemplate,RWriteStream& aStream,CStreamStore& aBlobStore,CContactTables* aTables);
  66.100 +	void RestoreL(CStreamStore& aStore, TStreamId anId, CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,const CContactItem* aTemplate,RReadStream& aReadStream,CContactTables* aContactsTable, RArray<TInt>* aEmailIdArray);
  66.101 +	void RestoreAndAddTemplateL(CStreamStore& aStore, TStreamId aId,CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,const CContactItem* aTemplate, RReadStream& aReadStream,CContactTables* aContactsTable,RArray<TInt>* aEmailIdArray);
  66.102 +	TInt MatchTemplateField(const CContentType& aContentType,TUint aUserFlags,TBool &aExactMatch) const;
  66.103 +	static HBufC* LoadTextStreamLC(RReadStream& aStream);
  66.104 +	void NonZeroFieldText(TFieldType aFieldType, TDes &aText) const;
  66.105 +
  66.106 +private:
  66.107 +	CArrayPtr<CContactItemField>* iFields;
  66.108 +	};
  66.109 +
  66.110 +class CContactDatabase;
  66.111 +class RCntModel;
  66.112 +class CContactItem : public CBase
  66.113 +/** The abstract base class for contact cards, templates and groups. All contact 
  66.114 +items are identified by a contact ID, (TContactItemId), have a last modified 
  66.115 +date/time and own one or more fields (the field set). Contact items also 
  66.116 +have an access count and attributes (e.g. hidden). Note that fields in a contact 
  66.117 +item also have attributes. Attribute values specified in the contact item 
  66.118 +override those in the contained fields. The access count is a record of the 
  66.119 +number of objects referencing a contact item. A contact item cannot be fully 
  66.120 +deleted until its access count is zero. 
  66.121 +@publishedAll
  66.122 +@released
  66.123 +*/
  66.124 +	{
  66.125 +	friend class CContactCardTemplate;
  66.126 +	friend class CContactItemPlusGroup;
  66.127 +	friend class CContactCard;
  66.128 +	friend class CContactTemplate;
  66.129 +	friend class CContactGroup;
  66.130 +	friend class CContactOwnCard;
  66.131 +	friend class CVCardToContactsAppConverter;
  66.132 +	friend class CContactICCEntry;
  66.133 +	friend class RPplContactTable;
  66.134 +	friend class RPplIdentityTable;
  66.135 +	friend class RPplPreferencesTable;
  66.136 +	friend class CPackagerTests; //Comparison test
  66.137 +	friend class CPackagerCntComparator;
  66.138 +	friend class CContactDatabase;
  66.139 +	friend class CPplContactItemManager;
  66.140 +public:
  66.141 +	IMPORT_C ~CContactItem();
  66.142 +	/** Gets the contact item's type.
  66.143 +	
  66.144 +	@return The contact item's type. */
  66.145 +	virtual TUid Type() const=0;
  66.146 +	static CContactItem* NewLC(RReadStream& aStream);
  66.147 +	IMPORT_C static CContactItem* NewLC(TUid aType);	
  66.148 +	IMPORT_C TContactItemId Id() const;
  66.149 +	IMPORT_C TContactItemId TemplateRefId() const;
  66.150 +	IMPORT_C TTime LastModified() const;
  66.151 +	IMPORT_C void SetLastModified(const TTime& aLastModified);
  66.152 +	IMPORT_C void AddFieldL(CContactItemField& aField);
  66.153 +	IMPORT_C void RemoveField(TInt aFieldPos);
  66.154 +	IMPORT_C void InsertFieldL(CContactItemField& aField,TInt aFieldPos);
  66.155 +	IMPORT_C CContactItemFieldSet& CardFields() const;
  66.156 +	IMPORT_C void SetHidden(TBool aHidden);
  66.157 +	IMPORT_C void SetSystem(TBool aSystem);    	
  66.158 +	IMPORT_C TBool IsHidden();
  66.159 +	IMPORT_C TBool IsSystem();    	
  66.160 +	IMPORT_C void UpdateFieldSet(CContactItemFieldSet* aNewFieldSet);
  66.161 +	IMPORT_C void SetDeleted(TBool aDeleted);
  66.162 +	IMPORT_C TBool IsDeleted() const;
  66.163 +	IMPORT_C void SetTemplateRefId(TContactItemId aUid);
  66.164 +	TContactItemId Agent();
  66.165 +	inline TBool IsDeletable();
  66.166 +	inline void IncAccessCount();
  66.167 +	inline void DecAccessCount();
  66.168 +	inline TInt AccessCount() const;
  66.169 +	IMPORT_C void SetUidStringL(TDesC& aString);
  66.170 +	IMPORT_C TPtrC UidStringL(TInt64 aMachineUniqueId) const;
  66.171 +	TStreamId PopulateStoreL(CStreamStore& aStore, CArrayFix<TFieldHeader>& aFieldHeaderArray) const;
  66.172 +	void AddLabelFieldL();
  66.173 +	IMPORT_C void RestoreTemplateFieldsL(const CContactItemFieldSet& aSystemTemplateFields, const CContactItemFieldSet& aTemplateFields, const CContactItemViewDef& aViewDef);
  66.174 +	void ClearFieldContent();
  66.175 +	inline TPtrC Guid();
  66.176 +	virtual void ExternalizeL(RWriteStream& aStream) const;
  66.177 +	virtual void InternalizeL(RReadStream& aStream);	
  66.178 +
  66.179 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__		
  66.180 +	IMPORT_C void SetId(TContactItemId aId);
  66.181 +	IMPORT_C TUint32 Attributes() const;
  66.182 +	IMPORT_C void SetAttributes(TUint32 aAttributes);
  66.183 +	IMPORT_C void SetAccessCount(TUint32 aAccessCount);
  66.184 +	IMPORT_C void SetCreationDate(const TTime& aTime);
  66.185 +#endif
  66.186 +
  66.187 +public:
  66.188 +	/** Contact item's attribute flags 
  66.189 +		
  66.190 +	These flags can be used to set the various attributes of a contact item. */ 
  66.191 +	enum 
  66.192 +	{
  66.193 +	/** To set the contact item's system attribute. */ 
  66.194 +	ESystem=0x01, 
  66.195 +	/** To set the contact item's hidden attribute. */  
  66.196 +	EHidden=0x02, 
  66.197 +	/** To set the contact item's hidden attribute. */  
  66.198 +	ECompressedGuid=0x04, 
  66.199 +	/** To set the contact item's Is deleted attribute. */ 
  66.200 +	EDeleted=0x08 
  66.201 +	};
  66.202 +protected:
  66.203 +private:
  66.204 +	CContactItem();
  66.205 +	void ConstructL();
  66.206 +	void ConstructL(const CContactItem *aTemplate);
  66.207 +	void MakeUidStringL(TInt64 aMachineUniqueId);
  66.208 +	IMPORT_C void SetHasCompressedGuid(TBool aCompressed);
  66.209 +	TBool GuidIsCompressed() const;
  66.210 +	TInt NumberOfFieldsToStore() const;
  66.211 +
  66.212 +private:
  66.213 +	CContactItemFieldSet* iFieldSet;
  66.214 +	TUint32 iAttributes;
  66.215 +	TContactItemId iId;
  66.216 +	TContactItemId iTemplateRefId;
  66.217 +	TTime iLastModified;
  66.218 +	TTime iCreationDate;
  66.219 +	TUint32 iAccessCount;
  66.220 +	HBufC* iGuid;
  66.221 +	friend class CContactDatabase;
  66.222 +	};
  66.223 +
  66.224 +class CContactItemPlusGroup : public CContactItem
  66.225 +/** Abstract base class for CContactGroup, CContactCard and CContactOwnCard.
  66.226 +
  66.227 +The purpose of this class is to avoid duplication of group functionality 
  66.228 +in its derived classes. 
  66.229 +@publishedAll
  66.230 +@released
  66.231 +*/
  66.232 +	{
  66.233 +public:
  66.234 +	IMPORT_C const CContactIdArray* GroupsJoined() const;
  66.235 +	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
  66.236 +protected:
  66.237 +	CContactItemPlusGroup();
  66.238 +	IMPORT_C ~CContactItemPlusGroup();
  66.239 +public:
  66.240 +	virtual void ExternalizeL(RWriteStream& aStream) const;
  66.241 +	virtual void InternalizeL(RReadStream& aStream);	
  66.242 +
  66.243 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__	
  66.244 +	IMPORT_C void ResetGroups();
  66.245 +	IMPORT_C void SetGroups(CContactIdArray* aGroups);
  66.246 +#endif
  66.247 +
  66.248 +private:
  66.249 +	CContactIdArray* iGroups;
  66.250 +	friend class CContactDatabase;
  66.251 +	friend class RPplLookupGroupsTable;
  66.252 +	friend class RPplGroupMembershipTable;
  66.253 +	};
  66.254 +
  66.255 +class CContactGroup : public CContactItemPlusGroup
  66.256 +/** A contact group.
  66.257 +
  66.258 +A contact group is a contact item which holds a set of associated contact 
  66.259 +item IDs. The members of the group may be contact cards, own cards, or even 
  66.260 +other groups. The group has a label which identifies the group to users, e.g. 
  66.261 +"family", or "colleagues". The type of a contact group is KUidContactGroup, 
  66.262 +as returned by Type().
  66.263 +
  66.264 +Objects of this class are constructed using CContactDatabase::CreateContactGroupL() 
  66.265 +or CreateContactGroupLC(). These functions create the group, optionally with 
  66.266 +a label, add it to the database, and return a pointer to it.
  66.267 +
  66.268 +To create an association between a card and a group, use CContactDatabase::AddContactToGroupL() 
  66.269 +and to remove the association, use RemoveContactFromGroupL(). To find out 
  66.270 +which groups a card belongs to, use CContactCard::GroupsJoinedLC() or CContactOwnCard::GroupsJoinedLC().
  66.271 +
  66.272 +The function CContactDatabase::GetGroupIdListL() may be used to retrieve a 
  66.273 +list of IDs for all groups in the database. 
  66.274 +@publishedAll
  66.275 +@released
  66.276 +*/
  66.277 +	{
  66.278 +public:
  66.279 +	IMPORT_C static CContactGroup* NewL();
  66.280 +	IMPORT_C static CContactGroup* NewLC();
  66.281 +	IMPORT_C ~CContactGroup();
  66.282 +public: // from CContactItem
  66.283 +	IMPORT_C TUid Type() const;
  66.284 +public:
  66.285 +	// default sorted item array is ascending
  66.286 +	IMPORT_C CContactIdArray* ItemsContainedLC() const;
  66.287 +	IMPORT_C const CContactIdArray* ItemsContained() const;
  66.288 +	IMPORT_C TBool IsSystem() const;
  66.289 +	IMPORT_C void SetSystem(TBool aSystem);
  66.290 +	IMPORT_C TBool ContainsItem(TContactItemId aContactId);
  66.291 +	IMPORT_C void SetGroupLabelL(const TDesC& aLabel);
  66.292 +	IMPORT_C TPtrC GetGroupLabelL();
  66.293 +	IMPORT_C TBool HasItemLabelField();
  66.294 +	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
  66.295 +// 
  66.296 +	//IMPORT_C void ReservedFunction1();
  66.297 +	IMPORT_C void AddContactL(TContactItemId aContactId);
  66.298 +	//IMPORT_C void ReservedFunction2();
  66.299 +	IMPORT_C void RemoveContactL(TContactItemId aContactId);
  66.300 +	virtual void ExternalizeL(RWriteStream& aStream) const;
  66.301 +	virtual void InternalizeL(RReadStream& aStream);
  66.302 +
  66.303 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__		
  66.304 +	IMPORT_C void ResetItems();
  66.305 +	IMPORT_C void SetItems(CContactIdArray* aItems);	
  66.306 +#endif
  66.307 +
  66.308 +private:
  66.309 +	CContactGroup();
  66.310 +private:
  66.311 +	CContactIdArray* iItems;
  66.312 +	friend class CContactDatabase;
  66.313 +	friend class RPplGroupMembershipTable;
  66.314 +	};
  66.315 +
  66.316 +class CContactCardTemplate : public CContactItem
  66.317 +/** A contact card template.
  66.318 +
  66.319 +This is a contact item containing a set of fields on which new contact items can 
  66.320 +be based. Templates have a label which is a string which identifies the template 
  66.321 +to a user. For instance, 'work template' could indicate a template used 
  66.322 +to create contact cards in the style of a work colleague. Contact card templates 
  66.323 +have a type of KUidContactCardTemplate, as returned by Type().
  66.324 +
  66.325 +Objects of this class cannot be constructed directly because its constructors 
  66.326 +are protected. Instead, use either CContactDatabase::CreateContactCardTemplateL() 
  66.327 +or CreateContactCardTemplateLC(). These functions create a contact card template, 
  66.328 +add it to the database, and return a pointer to it.
  66.329 +
  66.330 +The function CContactDatabase::GetCardTemplateIdListL() gets a list of the 
  66.331 +IDs of all contact card templates in the database. 
  66.332 +@publishedAll
  66.333 +@released
  66.334 +*/
  66.335 +	{
  66.336 +	friend class CContactDatabase;
  66.337 +	friend class CContactTables;
  66.338 +	friend class RPplContactTable;
  66.339 +	friend class CContactItem;
  66.340 +public:
  66.341 +	IMPORT_C void SetTemplateLabelL(const TDesC& aLabel);
  66.342 +	IMPORT_C TPtrC GetTemplateLabelL();
  66.343 +protected:
  66.344 +	IMPORT_C static CContactCardTemplate* NewL();
  66.345 +	IMPORT_C static CContactCardTemplate* NewLC();
  66.346 +	IMPORT_C static CContactCardTemplate* NewL(const CContactItem *aTemplate);
  66.347 +	IMPORT_C static CContactCardTemplate* NewLC(const CContactItem *aTemplate);
  66.348 +	IMPORT_C TBool HasItemLabelField();
  66.349 +// 
  66.350 +/**         
  66.351 +    Intended usage: Reserved to preserve future BC         */
  66.352 +	IMPORT_C void ReservedFunction1();
  66.353 +/**          
  66.354 +    Intended usage: Reserved to preserve future BC         */
  66.355 +	IMPORT_C void ReservedFunction2();
  66.356 +
  66.357 +protected: // from CContactItem
  66.358 +	IMPORT_C TUid Type() const;
  66.359 +private:
  66.360 +	CContactCardTemplate();
  66.361 +	};
  66.362 +
  66.363 +class CContactCard : public CContactItemPlusGroup
  66.364 +/** A contact card. 
  66.365 +
  66.366 +Implements the Type() function declared in class CContactItem. 
  66.367 +Contact cards may optionally be constructed from a template. 
  66.368 +@publishedAll
  66.369 +@released
  66.370 +*/
  66.371 +	{
  66.372 +public:
  66.373 +	IMPORT_C ~CContactCard();
  66.374 +	IMPORT_C static CContactCard* NewL();
  66.375 +	IMPORT_C static CContactCard* NewLC();
  66.376 +	IMPORT_C static CContactCard* NewL(const CContactItem *aTemplate);
  66.377 +	IMPORT_C static CContactCard* NewLC(const CContactItem *aTemplate);
  66.378 +public: // from CContactItem
  66.379 +	IMPORT_C TUid Type() const;
  66.380 +public:
  66.381 +	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
  66.382 +private:
  66.383 +	CContactCard();
  66.384 +private:
  66.385 +	friend class CContactDatabase;
  66.386 +	};
  66.387 +
  66.388 +class CContactOwnCard : public CContactItemPlusGroup
  66.389 +/** Own card. 
  66.390 +
  66.391 +An own card is a contact card which contains information about the device's 
  66.392 +owner. This can be sent to another compatible electronic device as a vCard. 
  66.393 +The contact database recognises a single own card, referred to as the 
  66.394 +current own card; its ID is returned by CContactDatabase::OwnCardId(). Like 
  66.395 +a contact card, an own card can be a member of one or more contact card groups. 
  66.396 +The own card type is identified by a UID of KUidContactOwnCard.
  66.397 +
  66.398 +Own cards can be constructed using either CContactDatabase::CreateOwnCardLC() 
  66.399 +or CreateOwnCardL(). These functions create an own card, based on the system 
  66.400 +template, add it to the database, set it as the database's current own card 
  66.401 +and return a pointer to it. To change the database's current own card, use 
  66.402 +CContactDatabase::SetOwnCardL(). 
  66.403 +@publishedAll
  66.404 +@released
  66.405 +*/
  66.406 +	{
  66.407 +public:
  66.408 +	IMPORT_C ~CContactOwnCard();
  66.409 +	IMPORT_C static CContactOwnCard* NewL();
  66.410 +	IMPORT_C static CContactOwnCard* NewLC();
  66.411 +	IMPORT_C static CContactOwnCard* NewL(const CContactItem *aTemplate);
  66.412 +	IMPORT_C static CContactOwnCard* NewLC(const CContactItem *aTemplate);
  66.413 +public: // from CContactItem
  66.414 +	IMPORT_C TUid Type() const;
  66.415 +public:
  66.416 +	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
  66.417 +private:
  66.418 +	CContactOwnCard();
  66.419 +private:
  66.420 +	friend class CContactDatabase;
  66.421 +	};
  66.422 +
  66.423 +class CContactTemplate : public CContactItem
  66.424 +/** A contact item template. 
  66.425 +
  66.426 +This is a contact item which is used to seed the initial field set for 
  66.427 +other contact items.
  66.428 +
  66.429 +Non-system (i.e. user-defined) templates are implemented 
  66.430 +by the CContactCardTemplate class. CContactCardTemplate should be 
  66.431 +used in preference to CContactTemplate. 
  66.432 +@publishedAll
  66.433 +@released
  66.434 +*/
  66.435 +	{
  66.436 +public:
  66.437 +	IMPORT_C static CContactTemplate* NewL();
  66.438 +	IMPORT_C static CContactTemplate* NewLC();
  66.439 +	IMPORT_C static CContactTemplate* NewL(const CContactItem *aTemplate);
  66.440 +	IMPORT_C static CContactTemplate* NewLC(const CContactItem *aTemplate);
  66.441 +public: // from CContactItem
  66.442 +	IMPORT_C TUid Type() const;
  66.443 +private:
  66.444 +	CContactTemplate();
  66.445 +	};
  66.446 +
  66.447 +
  66.448 +class CContactICCEntry : public CContactItemPlusGroup
  66.449 +/** A contact ICC entry. 
  66.450 +@publishedAll
  66.451 +@released
  66.452 +*/
  66.453 +	{
  66.454 +public:
  66.455 +	IMPORT_C ~CContactICCEntry();
  66.456 +	IMPORT_C static CContactICCEntry* NewL(const CContactItem& aTemplate);
  66.457 +	static CContactICCEntry* NewL();
  66.458 +public: //from CContactItem
  66.459 +	TUid Type() const;
  66.460 +private:
  66.461 +	CContactICCEntry();
  66.462 +	};
  66.463 +
  66.464 +
  66.465 +class ContactGuid
  66.466 +/** A globally unique identifier enquiry utility.
  66.467 +
  66.468 +Each contact item has a unique identifier, stored as a descriptor. It is 
  66.469 +referred to as the 'UID string'. This is a combination of the unique 
  66.470 +identifier of the database in which the contact item was created, the 
  66.471 +contact item ID and the date/time of the contact item's creation. ContactGuid 
  66.472 +provides a single static exported function to enquire whether an item was 
  66.473 +created in a specified database. 
  66.474 +@publishedAll
  66.475 +@released
  66.476 +*/
  66.477 +	{
  66.478 +public:
  66.479 +	IMPORT_C static TContactItemId IsLocalContactUidString(const TDesC& aString, TInt64 aMachineUniqueId);
  66.480 +	IMPORT_C static TBool GetCreationDate(TDes& aString, TInt64 aMachineUniqueId);
  66.481 +	static HBufC* CreateGuidLC(const TDesC& aCreationDate,TContactItemId aId, TInt64 aMachineUniqueId);
  66.482 +	static HBufC* CreateGuidLC(const TTime& aCreationDate,TContactItemId aId, TInt64 aMachineUniqueId);
  66.483 +	static HBufC* CreateGuidLC(TContactItemId aId, TInt64 aMachineUniqueId);
  66.484 +	};
  66.485 +
  66.486 +inline const CContactItemField& CContactItemFieldSet::operator[](TInt aIndex) const
  66.487 +/** Gets the field located at a specified position in the field set. 
  66.488 +
  66.489 +@param aIndex The position of the field in the field set. This is relative to zero. 
  66.490 +It must be non-negative and less than the number of objects in the array, otherwise 
  66.491 +the operator raises a panic.
  66.492 +
  66.493 +@return A const reference to an element in the array. */
  66.494 +	{ return *(*iFields)[aIndex]; }
  66.495 +
  66.496 +inline CContactItemField& CContactItemFieldSet::operator[](TInt aIndex)
  66.497 +/** Gets the field located at a specified position in the field set. 
  66.498 +
  66.499 +@param aIndex The position of the field in the field set. This is relative to zero. 
  66.500 +It must be non-negative and less than the number of objects in the array, otherwise 
  66.501 +the operator raises a panic.
  66.502 +
  66.503 +@return A non-const reference to an element in the array. */
  66.504 +	{ return *(*iFields)[aIndex]; }
  66.505 +
  66.506 +inline TInt CContactItemFieldSet::Find(TFieldType aFieldType) const
  66.507 +/** Finds the first field in the field set with the specified field type.
  66.508 +
  66.509 +@param aFieldType The field type of interest.
  66.510 +@return If found, the index of the field within the field set, or KErrNotFound 
  66.511 +if not found. */
  66.512 +	{ return FindNext(aFieldType,KContactFieldSetSearchAll); }
  66.513 +
  66.514 +inline TInt CContactItemFieldSet::Find(TFieldType aFieldType,TUid aMapping) const
  66.515 +/** Finds the first field in the field set containing both the content type mapping 
  66.516 +and the field type specified.
  66.517 +
  66.518 +@param aFieldType The field type of interest.
  66.519 +@param aMapping The content type mapping of interest.
  66.520 +@return If found, the index of the field within the field set, or KErrNotFound 
  66.521 +if not found. */
  66.522 +	{ return FindNext(aFieldType,aMapping,KContactFieldSetSearchAll); }
  66.523 +
  66.524 +inline TInt CContactItemFieldSet::Count() const
  66.525 +/** Gets the number of fields in the field set.
  66.526 +
  66.527 +@return The number of fields in the field set. */
  66.528 +	{ return iFields->Count(); }
  66.529 +
  66.530 +inline void CContactItemFieldSet::Reset()
  66.531 +/** Deletes all fields in the field set. */
  66.532 +	{ iFields->ResetAndDestroy(); }
  66.533 +
  66.534 +inline TBool CContactItem::IsDeletable()
  66.535 +/** Tests whether the contact item is deletable. 
  66.536 +
  66.537 +This is true if the item's access count is zero.
  66.538 +
  66.539 +@return ETrue if deletable, EFalse if not deletable. */
  66.540 +	{return (iAccessCount == 0);}
  66.541 +
  66.542 +inline void CContactItem::IncAccessCount()
  66.543 +/** Increments the contact item's access count. */
  66.544 +	{iAccessCount++;}
  66.545 +
  66.546 +inline void CContactItem::DecAccessCount()
  66.547 +/** Decrements the contact item's access count. */
  66.548 +	{if(iAccessCount) iAccessCount--;}
  66.549 +
  66.550 +inline TInt CContactItem::AccessCount() const
  66.551 +/** Gets the contact item's access count.
  66.552 +
  66.553 +@return The item's access count. */
  66.554 +	{return(iAccessCount);}
  66.555 +
  66.556 +inline TPtrC CContactItem::Guid() 
  66.557 +/** Accessor function for Contact Guid. 
  66.558 + * This is used to cache contact items that are added during a sync.
  66.559 + @return Guid    */
  66.560 + { return iGuid ? *iGuid : TPtrC(KNullDesC); }
  66.561 +
  66.562 +#endif
    67.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.2 +++ b/epoc32/include/app/cntsync.h	Wed Mar 31 12:27:01 2010 +0100
    67.3 @@ -0,0 +1,135 @@
    67.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    67.5 +// All rights reserved.
    67.6 +// This component and the accompanying materials are made available
    67.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    67.8 +// which accompanies this distribution, and is available
    67.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   67.10 +//
   67.11 +// Initial Contributors:
   67.12 +// Nokia Corporation - initial contribution.
   67.13 +//
   67.14 +// Contributors:
   67.15 +//
   67.16 +// Description:
   67.17 +//
   67.18 +
   67.19 +#ifndef __CNTSYNC_H__
   67.20 +#define __CNTSYNC_H__
   67.21 +
   67.22 +
   67.23 +#include <e32base.h>
   67.24 +#include <cntdef.h>
   67.25 +
   67.26 +class CContactICCEntry;
   67.27 +class MContactSynchroniser
   67.28 +/** 
   67.29 +Abstract interface for a contacts phonebook synchroniser.
   67.30 +
   67.31 +It should be inherited by classes which implement the phonebook 
   67.32 +synchroniser API. The plug-in should have a second UID of 
   67.33 +0x101F4A6E (KUidContactSynchroniserDll).
   67.34 +
   67.35 +@internalAll
   67.36 +*/
   67.37 +	{
   67.38 +public:
   67.39 +	/**
   67.40 +	@internalAll
   67.41 +	*/
   67.42 +	enum TValidateOperation
   67.43 +		{
   67.44 +		ERead,		/** Check a cached ICC contact can be read */
   67.45 +		ESearch,	/** Check a cached ICC contact can be searched */
   67.46 +		EEdit		/** Check a cached ICC contact can be edited */
   67.47 +		};
   67.48 +public:
   67.49 +	/*
   67.50 +	A CContactICCEntry is wanted for read/search or edit.
   67.51 +	*/
   67.52 +	virtual TInt ValidateContact(TValidateOperation aOp, TContactItemId aId) = 0;
   67.53 +	/*
   67.54 +	A CContactICCEntry has being added/edited.
   67.55 +	*/
   67.56 +	virtual TInt ValidateWriteContact(CContactICCEntry& aContactItem) = 0;
   67.57 +	/*
   67.58 +	A CContactICCEntry is being deleted from the database.
   67.59 +	*/
   67.60 +	virtual TInt DeleteContact(TContactItemId aId) = 0;
   67.61 +	/*
   67.62 +	Release resources used by Phonebook Synchroniser. Called prior to unloading plug-in.
   67.63 +	*/
   67.64 +	virtual void Release() = 0;
   67.65 +	/*
   67.66 +	A new CContactICCEntry has been added to the database. 
   67.67 +	(Called after ValidateWriteContact() and database write has completed.)
   67.68 +	*/
   67.69 +	virtual void UpdatePostWriteL(const CContactICCEntry& aContactItem) = 0;
   67.70 +
   67.71 +	/*
   67.72 +	Id of template contact for specified phonebook
   67.73 +	*/
   67.74 +	virtual TContactItemId ICCTemplateIdL(TUid aPhonebookUid) = 0;
   67.75 +
   67.76 +	/*
   67.77 +	Id of contact group for specified phonebook
   67.78 +	*/
   67.79 +	virtual TContactItemId GroupIdL(TUid aPhonebookUid) = 0;
   67.80 +
   67.81 +	/*
   67.82 +	Request notifiction of Synchronisation state changes for specified phonebook
   67.83 +	*/
   67.84 +	virtual void NotifySyncStateChange(TRequestStatus& aStatus, TUid aPhonebookUid) = 0;
   67.85 +	/*
   67.86 +	Cancel notification of Synchronisation state changes for specified phonebook
   67.87 +	*/
   67.88 +	virtual void CancelNotifyRequest(TUid aPhonebookUid) = 0;
   67.89 +	/*
   67.90 +	Test Synchronisation state changes for specified phonebook
   67.91 +	*/
   67.92 +	virtual TBool IsSynchronisedL(TUid aPhonebookUid) = 0;
   67.93 +
   67.94 +	/*
   67.95 +	List of Phonebooks supported by Phonebook Synchroniser that may be present on the ICC.
   67.96 +	*/
   67.97 +	virtual TInt PhonebookList(RArray<TUid>& aPhonebookList) = 0;
   67.98 +
   67.99 +private:
  67.100 +	IMPORT_C virtual void MContactSynchroniser_Reserved_1();
  67.101 +	};
  67.102 +	
  67.103 +
  67.104 +/** The UID for the default phone book synchroniser ECom plugin interface
  67.105 +*/
  67.106 +const TUid KUidEcomCntPhBkSyncInterface = {0x102035FD};
  67.107 +	
  67.108 +class CContactSynchroniser : public CBase, public MContactSynchroniser
  67.109 +/** 
  67.110 +Abstract interface for a ECom contacts phonebook synchroniser plugin
  67.111 +
  67.112 +It should be inherited by classes which implement the phonebook 
  67.113 +synchroniser API in a platform secured environment. The ECom plug-in interface uid is 
  67.114 +KUidEcomCntPhBkSyncInterface
  67.115 +@internalAll
  67.116 +*/
  67.117 +	{
  67.118 +public:
  67.119 +	// From MContactSynchroniser
  67.120 +	virtual TInt ValidateContact(TValidateOperation aOp, TContactItemId aId) = 0;
  67.121 +	virtual TInt ValidateWriteContact(CContactICCEntry& aContactItem) = 0;
  67.122 +	virtual TInt DeleteContact(TContactItemId aId) = 0;
  67.123 +	virtual void Release() = 0;
  67.124 +	virtual void UpdatePostWriteL(const CContactICCEntry& aContactItem) = 0;
  67.125 +	virtual TContactItemId ICCTemplateIdL(TUid aPhonebookUid) = 0;
  67.126 +	virtual TContactItemId GroupIdL(TUid aPhonebookUid) = 0;
  67.127 +	virtual void NotifySyncStateChange(TRequestStatus& aStatus, TUid aPhonebookUid) = 0;
  67.128 +	virtual void CancelNotifyRequest(TUid aPhonebookUid) = 0;
  67.129 +	virtual TBool IsSynchronisedL(TUid aPhonebookUid) = 0;
  67.130 +	virtual TInt PhonebookList(RArray<TUid>& aPhonebookList) = 0;
  67.131 +public:
  67.132 +	static CContactSynchroniser* NewL();
  67.133 +	IMPORT_C virtual ~CContactSynchroniser();
  67.134 +private:
  67.135 +	TUid iDtor_ID_Key;
  67.136 +	};
  67.137 +
  67.138 +#endif
    68.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.2 +++ b/epoc32/include/app/cntvcard.h	Wed Mar 31 12:27:01 2010 +0100
    68.3 @@ -0,0 +1,131 @@
    68.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
    68.5 +// All rights reserved.
    68.6 +// This component and the accompanying materials are made available
    68.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    68.8 +// which accompanies this distribution, and is available
    68.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   68.10 +//
   68.11 +// Initial Contributors:
   68.12 +// Nokia Corporation - initial contribution.
   68.13 +//
   68.14 +// Contributors:
   68.15 +//
   68.16 +// Description:
   68.17 +//
   68.18 +
   68.19 +#ifndef __CNTVCARD_H__
   68.20 +#define __CNTVCARD_H__
   68.21 +
   68.22 +// System includes
   68.23 +#include <cntdb.h>
   68.24 +#include <vcard.h>
   68.25 +
   68.26 +// Classes referenced
   68.27 +class CVCardAddress;
   68.28 +class CVCardItemAndLabel;
   68.29 +class CVCardToContactsAppConverter;
   68.30 +
   68.31 +// Enumerations
   68.32 +/**
   68.33 +@internalComponent
   68.34 +@released
   68.35 +*/
   68.36 +enum TCntVCardImportType
   68.37 +	{
   68.38 +	ECntVCardImportTypeFirstSync,
   68.39 +	ECntVCardImportTypeMerge
   68.40 +	};
   68.41 +		
   68.42 +class CContactVCardConverter : public CContactEcomConverter
   68.43 +/**
   68.44 +Plug-in vCard to CContactItem converter.
   68.45 +@publishedAll
   68.46 +@released
   68.47 +*/
   68.48 +	{
   68.49 +public:
   68.50 +	// Ideally each converter should be able to define its own flags relevant 
   68.51 +	// to its own mode of operation. Due to the legacy design (defining flags 
   68.52 +	// in CContactDatabase) they have to be redeclared here. Long term we hope 
   68.53 +	// to deprecate the CContactDatabase flags and rely on those declared in 
   68.54 +	// the converter implementation.
   68.55 +	/** Import and export format flags. Contacts can be imported into
   68.56 +	or exported from the contact database as vCards.
   68.57 +
   68.58 +	The following options are available during import and export.
   68.59 +               
   68.60 +	@publishedAll
   68.61 +	@released
   68.62 +	*/
   68.63 +	enum TOptions 
   68.64 +	   	{
   68.65 +  		EDefault = CContactDatabase::EDefault,
   68.66 +        /** Handle Symbian's extended vCard format options. */
   68.67 +		EIncludeX = CContactDatabase::EIncludeX,
   68.68 +		/** Support non-standard extensions requried by Symbian PC connectivity software
   68.69 +		and Microsoft, amongst others. */
   68.70 +  		ETTFormat = CContactDatabase::ETTFormat ,
   68.71 +		/** Don't export the contact ID (for exporting only). */
   68.72 +		EExcludeUid = CContactDatabase::EExcludeUid,
   68.73 +		/** Decrease the contact's access count when importing and exporting. */
   68.74 +		EDecreaseAccessCount = CContactDatabase::EDecreaseAccessCount,
   68.75 +		/** Only import the first contact in the read stream (for importing only). */
   68.76 +		EImportSingleContact = CContactDatabase::EImportSingleContact,
   68.77 +		/** Increase the contact's access count when importing and exporting. */
   68.78 +		EIncreaseAccessCount = CContactDatabase::EIncreaseAccessCount,
   68.79 +		/** Sets a contact item to the local time when importing. */
   68.80 +		ELocalTime = CContactDatabase::ELocalTime,
   68.81 +		/** Allows to set a template to a contact item that does not exist. */
   68.82 +		ENullTemplateId = CContactDatabase::ENullTemplateId,
   68.83 +		/** Allows to set white spaces as value for an empty field.  */
   68.84 +		EConnectWhitespace=0x0100,		// Used to correctly manage the TimeIS protocol for syncing.
   68.85 +		/**
   68.86 +		During import ignore the UID property value of the vCard.  By ignoring
   68.87 +		the UID the client is indicating that it knows that the contact does not
   68.88 +		already exist in the database (i.e. the contact is being added rather
   68.89 +		than being updated).  Within the CContactVCardConverter::ImportL()
   68.90 +		method no attempt to search for the UID in the database will be made.
   68.91 +		For a series of addition of vCards with UIDs use of this option will
   68.92 +		give a performance improvement since the search for the UID in the
   68.93 +		Contacts database can become very costly as the number of contacts
   68.94 +		grows.
   68.95 +		*/
   68.96 +		EIgnoreUid = CContactDatabase::EConverterReserved1,		
   68.97 +		/**
   68.98 +		During import, if it is determined that the contact item being imported 
   68.99 +		already exists in the database then the contact item in the database will 
  68.100 +		be deleted before being replaced by the vCard being imported. This option
  68.101 +		should be used when the client does not want a merge type behaviour for
  68.102 +		existing contact items. This option will typically be used in a sync use case
  68.103 +		where the vCard data that the client is provided with has already been through a process 
  68.104 +		of conflict resolution and so the existing contact item should be replaced not merged.
  68.105 +		*/		
  68.106 +		EReplaceIfExists = CContactDatabase::EConverterReserved2,
  68.107 +  		};
  68.108 +  		
  68.109 +	/**
  68.110 +	@internalComponent
  68.111 +	@released
  68.112 +	*/
  68.113 +	enum TVersitPropertyType
  68.114 +		{
  68.115 +		EPropertyValueSingle,
  68.116 +		EPropertyValueComposite,
  68.117 +		EPropertyValueHandlingNotImplemented
  68.118 +		};
  68.119 +public: // from CContactConverter
  68.120 +	static CContactVCardConverter* NewL();
  68.121 +	CArrayPtr<CContactItem>* ImportL(CContactDatabase& aDb,RReadStream& aReadStream,TBool& aImportSuccessful,TInt aOptions,TBool aImportSingle);
  68.122 +	void ExportL(CContactDatabase& aDb,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOptions,const Versit::TVersitCharSet aCharSet, TBool aExportPrivateFields, TInt aCommitNumber);
  68.123 +public: // Utility
  68.124 +	static TBool ContainsExportableData(const TDesC& aText);
  68.125 +	static TBool ContainsImportableData(const TDesC& aText, TVersitPropertyType aType, TCntVCardImportType aImportType);
  68.126 +private:
  68.127 +	static TBool ContainsData(const TDesC& aText);
  68.128 +	void doImportL(CVCardToContactsAppConverter& aConverter, CParserVCard& aVCard, CContactDatabase& aDb, TInt aOption, TBool aIncAccessCount, TBool aDecAccessCount, TBool& aImportSuccessful, CArrayPtr<CContactItem>* aContactItems, TBool aIsInTransaction, TContactItemId aIdForUpdate);
  68.129 +	TContactItemId IsVCardMergeNeededL(CVCardToContactsAppConverter& aConverter, CParserVCard& aVCard, CContactDatabase& aDb, TInt aOption);
  68.130 +	void ModifyAccessCountL(CContactItem& aContact,  TBool aIncAccessCount, TBool aDecAccessCount);
  68.131 +	void HandleAgentsInVCardL(CVCardToContactsAppConverter& aConverter, CArrayPtr<CParserProperty>* aAgentProperties, CContactItem& aContact, CContactDatabase& aDb, TInt aOption, TBool aIncAccessCount, TBool aDecAccessCount, CArrayPtr<CContactItem>* aContactItemArray, TBool aMerge);
  68.132 + 	};
  68.133 +
  68.134 +#endif
    69.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.2 +++ b/epoc32/include/app/cntview.h	Wed Mar 31 12:27:01 2010 +0100
    69.3 @@ -0,0 +1,480 @@
    69.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    69.5 +// All rights reserved.
    69.6 +// This component and the accompanying materials are made available
    69.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    69.8 +// which accompanies this distribution, and is available
    69.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   69.10 +//
   69.11 +// Initial Contributors:
   69.12 +// Nokia Corporation - initial contribution.
   69.13 +//
   69.14 +// Contributors:
   69.15 +//
   69.16 +// Description:
   69.17 +//
   69.18 +
   69.19 +#ifndef __CNTVIEW_H__
   69.20 +#define __CNTVIEW_H__
   69.21 +
   69.22 +#include <cntviewbase.h>
   69.23 +
   69.24 +/** The maximum length of the string used by contact sub view ranges to find the 
   69.25 +item at the upper or lower limit of the range.
   69.26 +
   69.27 +In practice, only the first character in the string is used and this value 
   69.28 +is ignored. */
   69.29 +const TInt KMaxBoundaryMatchLength=8;
   69.30 +
   69.31 +class CContactGroupView: public CContactViewBase, public MContactViewObserver
   69.32 +/** Provides a view of a group of contact items.
   69.33 +
   69.34 +The view uses an underlying view. For items to appear in the group view, they 
   69.35 +must exist in the underlying view.
   69.36 +
   69.37 +The TGroupType enumeration defines whether the view displays items that belong 
   69.38 +to the group, items that do not belong to the group, or items that do not 
   69.39 +belong to any group.
   69.40 +
   69.41 +The group view observes its underlying view so that it is kept up to date 
   69.42 +if the contents of the underlying view change.
   69.43 +
   69.44 +The group can be identified by a contact item ID or by a label, e.g. "family", 
   69.45 +or "colleagues".
   69.46 +
   69.47 +@see CContactGroup 
   69.48 +@publishedAll
   69.49 +@released
   69.50 +*/
   69.51 +	{
   69.52 +friend class CGroupViewTester;
   69.53 +public:
   69.54 +	/** Defines the types of contact group view. */
   69.55 +	enum TGroupType
   69.56 +		{
   69.57 +		/** The view contains contact items in the group. */
   69.58 +		EShowContactsInGroup,
   69.59 +		/** The view contains contact items not in the group. */
   69.60 +		EShowContactsNotInGroup,
   69.61 +		/** The view contains contact items not in any group. */
   69.62 +		EShowContactsNotInAnyGroup
   69.63 +		};
   69.64 +public:
   69.65 +	IMPORT_C static CContactGroupView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver,const TContactItemId aGroupId,const TGroupType aGroupType);
   69.66 +	IMPORT_C static CContactGroupView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver, const TDesC& aGroupName,const TGroupType aGroupType);
   69.67 +
   69.68 +	// Factory constructor for version 2 behaviour
   69.69 +	IMPORT_C static CContactGroupView* NewL(CContactViewBase& aView,const CContactDatabase& aDb, MContactViewObserver& aObserver,const TContactItemId aGroupId,const TGroupType aGroupType);
   69.70 +	// Factory constructor for version 2 behaviour
   69.71 +	IMPORT_C static CContactGroupView* NewL(CContactViewBase& aView,const CContactDatabase& aDb, MContactViewObserver& aObserver, const TDesC& aGroupName,const TGroupType aGroupType);	
   69.72 +	//All CContactViewBase derived classes in public headers,
   69.73 +	//should mandatorily implement this reserved function.	
   69.74 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
   69.75 +	~CContactGroupView();
   69.76 +public: // From CContactViewBase
   69.77 +	TContactItemId AtL(TInt aIndex) const;
   69.78 +	TInt CountL() const;
   69.79 +	TInt FindL(TContactItemId aId) const;
   69.80 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
   69.81 +	const CViewContact& ContactAtL(TInt aIndex) const;
   69.82 +	TContactViewPreferences ContactViewPreferences();
   69.83 +	const RContactViewSortOrder& SortOrderL() const;
   69.84 +protected:
   69.85 +	IMPORT_C virtual void UpdateGroupViewL();
   69.86 +private: // From MContactViewObserver.
   69.87 +	void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
   69.88 +private: 
   69.89 +	void ConstructL(MContactViewObserver& aObserver,TContactItemId aGroupId);
   69.90 +	void UpdateForContactsInGroupL();
   69.91 +	void UpdateForContactsNotInThisGroupL();
   69.92 +	void UpdateForUnfiledContactsL();
   69.93 +	void UpdateForContactListL(const CContactIdArray* aArray);
   69.94 +	TContactItemId GetGroupIdbyNameL(const TDesC& aGroupName);
   69.95 +	TBool HandleRemoveEventL(TContactViewEvent& aEvent);
   69.96 +	TBool HandleAddEventL(TContactViewEvent& aEvent);
   69.97 +	TBool HandleAddEventForUnfiledContactsL(const TContactViewEvent& aEvent );
   69.98 +	static TInt CompareMappingsL(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
   69.99 +	TInt static CompareIndexesAllowingDuplicates(const TContactIdWithMapping& aFirst, const TContactIdWithMapping& aSecond);
  69.100 +private:
  69.101 +	CContactGroupView(const CContactDatabase& aDb,CContactViewBase& aView,TGroupType aGroupType);
  69.102 +	void UpdateMappingsL();
  69.103 +	void NotifyRemovedMembersL(const CContactIdArray* aArray);
  69.104 +private:
  69.105 +	RArray<TContactIdWithMapping> iGroupContacts;
  69.106 +	TContactItemId iGroupId;
  69.107 +	CContactViewBase& iView;
  69.108 +	TGroupType iGroupType;
  69.109 +	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
  69.110 +	};
  69.111 +
  69.112 +
  69.113 +class CContactFindView: public CContactViewBase, public MContactViewObserver
  69.114 +/** Provides a view of an existing CContactViewBase-derived object, populated using 
  69.115 +search criteria.
  69.116 +
  69.117 +The find view only contains contact items from the underlying view that match 
  69.118 +the search criteria.
  69.119 +
  69.120 +The find view observes its underlying view so that it is kept up to date if 
  69.121 +the contents of the underlying view change.
  69.122 +
  69.123 +The search criteria (one or more words) are held in an MDesCArray object. 
  69.124 +The fields involved in the search are those that have been used to sort the 
  69.125 +underlying view. 
  69.126 +@publishedAll
  69.127 +@released
  69.128 +*/
  69.129 +	{
  69.130 +public:
  69.131 +	IMPORT_C static CContactFindView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver,MDesCArray* aFindWords);
  69.132 +	IMPORT_C static CContactFindView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver,MDesCArray* aFindWords, TSearchType aSearchType);
  69.133 +	
  69.134 +	// Factory constructor for version 2 behaviour
  69.135 +	IMPORT_C static CContactFindView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,MDesCArray* aFindWords);
  69.136 +	// Factory constructor for version 2 behaviour
  69.137 +	IMPORT_C static CContactFindView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,MDesCArray* aFindWords, TSearchType aSearchType);
  69.138 +
  69.139 +	~CContactFindView();
  69.140 +public: // From CContactViewBase
  69.141 +	TContactItemId AtL(TInt aIndex) const;
  69.142 +	TInt CountL() const;
  69.143 +	TInt FindL(TContactItemId aId) const;
  69.144 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  69.145 +	const CViewContact& ContactAtL(TInt aIndex) const;
  69.146 +	TContactViewPreferences ContactViewPreferences();
  69.147 +	const RContactViewSortOrder& SortOrderL() const;
  69.148 +protected:
  69.149 +	IMPORT_C virtual void UpdateFindViewL();
  69.150 +public:
  69.151 +	IMPORT_C void RefineFindViewL(MDesCArray* aFindWords);
  69.152 +	//All CContactViewBase derived classes in public headers,
  69.153 +	//should mandatorily implement this reserved function.	
  69.154 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  69.155 +private: // From MContactViewObserver.
  69.156 +	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
  69.157 +private: 
  69.158 +	void ConstructL(MContactViewObserver& aObserver,MDesCArray* aFindWords);
  69.159 +	void DeleteFindContacts();
  69.160 +	void TightenFindViewCriteriaL();
  69.161 +	void HandleRemoveEventL(TContactViewEvent& aEvent);
  69.162 +	void HandleAddEventL(TContactViewEvent& aEvent);
  69.163 +	void CopyNewFindWordsL(MDesCArray* aFindWords);
  69.164 +	void DestroyFindWordsArray();
  69.165 +	TInt InsertContact(const CViewContact* aNewContact);
  69.166 +private:
  69.167 +	CContactFindView(const CContactDatabase& aDb,CContactViewBase& aView, TSearchType aSearchType);
  69.168 +private:
  69.169 +	RPointerArray<CViewContact> iFindContacts;
  69.170 +	CPtrCArray* iFindWords;
  69.171 +	CContactViewBase& iView;
  69.172 +	const TSearchType iSearchType;
  69.173 +	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
  69.174 +	};
  69.175 +
  69.176 +
  69.177 +class CContactFilteredView : public CContactViewBase, public MContactViewObserver
  69.178 +/** Provides a filtered view over an existing CContactViewBase derived object.
  69.179 +
  69.180 +For example, it might provide a view containing only contacts that have an 
  69.181 +email address. For efficiency reasons there are a limited set of filters available 
  69.182 +(defined in CContactDatabase::TContactViewFilter).
  69.183 +
  69.184 +The filtered view observes its underlying view so that it is kept up to date 
  69.185 +if the contents of the underlying view change. It will, in turn, notify its 
  69.186 +observers.
  69.187 +
  69.188 +Filters only apply to non-hidden contact fields with content. 
  69.189 +@publishedAll
  69.190 +@released
  69.191 +*/
  69.192 +	{
  69.193 +public:
  69.194 +	IMPORT_C static CContactFilteredView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,CContactViewBase& aView,TInt aFilter);
  69.195 +	// Factory constructor for version 2 behaviour
  69.196 +	IMPORT_C static CContactFilteredView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,TInt aFilter);
  69.197 +
  69.198 +	//All CContactViewBase derived classes in public headers,
  69.199 +	//should mandatorily implement this reserved function.	
  69.200 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  69.201 +	~CContactFilteredView();
  69.202 +public: // From CContactViewBase.
  69.203 +	TContactItemId AtL(TInt aIndex) const;
  69.204 +	TInt CountL() const;
  69.205 +	TInt FindL(TContactItemId aId) const;
  69.206 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  69.207 +	const CViewContact& ContactAtL(TInt aIndex) const;
  69.208 +	TContactViewPreferences ContactViewPreferences();
  69.209 +	const RContactViewSortOrder& SortOrderL() const;
  69.210 +	virtual void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts);
  69.211 +	virtual void ContactsMatchingPrefixL(const MDesCArray& aFindWords, RPointerArray<CViewContact>& aMatchedContacts);
  69.212 +private: // From MContactViewObserver.
  69.213 +	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
  69.214 +private:
  69.215 +	CContactFilteredView(const CContactDatabase& aDb,TInt aFilter,CContactViewBase& aView);
  69.216 +	void ConstructL(MContactViewObserver& aObserver);
  69.217 +	void CreateFilteredIdArray();
  69.218 +	void UpdateFilteredIdArrayL(TContactViewEvent& aEvent, TBool& aViewModified);
  69.219 +	void HandleAddEventL(TContactViewEvent& aEvent, TBool& aViewModified);
  69.220 +	void HandleRemoveEventL(TContactViewEvent& aEvent, TBool& aViewModified);
  69.221 +	TInt BinaryInsertL(TContactIdWithMapping aId);
  69.222 +	static TInt FilterCallBack(TAny* aSelf);
  69.223 +	static TBool CompareMappings(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
  69.224 +	void FilterResultsArray(RPointerArray<CViewContact>& aMatchedContacts);
  69.225 +	TInt DoFilterIncrementL();
  69.226 +	void UpdateMappingsL();
  69.227 +private:
  69.228 +	const TInt iFilter;
  69.229 +	CContactViewBase& iView;
  69.230 +	RArray<TContactIdWithMapping> iFilteredIdArray;
  69.231 +	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
  69.232 +	};
  69.233 +
  69.234 +
  69.235 +class CContactViewRangeBase : public CBase
  69.236 +/** The abstract base class for all contact view range classes.
  69.237 +
  69.238 +Range classes are used by contact sub views to specify the upper and lower 
  69.239 +range boundaries and for searching their underlying view.
  69.240 +
  69.241 +@see CContactSubView 
  69.242 +@publishedAll
  69.243 +@released
  69.244 +*/
  69.245 +	{
  69.246 +public:
  69.247 +	/** Defines the range criteria. */
  69.248 +	enum TCriteria
  69.249 +		{
  69.250 +		/** Less than. */
  69.251 +		ELessThan,
  69.252 +		/** Less than or equal to. */
  69.253 +		ELessThanOrEqualTo,
  69.254 +		/** Greater than. */
  69.255 +		EGreaterThan,
  69.256 +		/** Greater than or equal to. */
  69.257 +		EGreaterThanOrEqualTo
  69.258 +		};
  69.259 +public:
  69.260 +	~CContactViewRangeBase();
  69.261 +	inline TInt LowIndex() const;
  69.262 +	inline TInt HighIndex() const;
  69.263 +	/** Sets the iLow and iHigh members. */
  69.264 +	virtual void SetL()=0;
  69.265 +	IMPORT_C TBool IndicesValid() const;
  69.266 +protected:
  69.267 +	CContactViewRangeBase(const CContactViewBase& aView);
  69.268 +	void ConstructL();
  69.269 +	TInt FindIndexL(const TDesC& aMatch,TCriteria aCriteria) const;
  69.270 +	TBool MatchesCriteriaL(TCriteria aCriteria,const TDesC& aMatch,TInt aIndex) const;
  69.271 +	void ValidateIndices();
  69.272 +protected:
  69.273 +	/** The sub view's underlying view. */
  69.274 +	const CContactViewBase& iView;
  69.275 +	/** The index into the sub view's underlying view of the item at the lower limit 
  69.276 +	of the range. */
  69.277 +	TInt iLow;
  69.278 +	/** The index into the sub view's underlying view of the item at the upper limit 
  69.279 +	of the range. */
  69.280 +	TInt iHigh;
  69.281 +	//ChrisD: contain by value not ptr
  69.282 +	/** The collation method used to sort the strings.
  69.283 +	
  69.284 +	By default, this is the standard collation method for the current locale. */
  69.285 +	TCollationMethod* iCollateMethod;
  69.286 +	};
  69.287 +
  69.288 +
  69.289 +class CContactViewRange : public CContactViewRangeBase
  69.290 +/** A sub view range with both a lower and upper limit.
  69.291 +
  69.292 +This is used by sub views when lower and upper boundary criteria are specified.
  69.293 +
  69.294 +@see CContactSubView 
  69.295 +@publishedAll
  69.296 +@released
  69.297 +*/
  69.298 +	{
  69.299 +public:
  69.300 +	~CContactViewRange();
  69.301 +	IMPORT_C static CContactViewRange* NewL(const CContactViewBase& aView,const TDesC& aLowMatch,TCriteria aLowCriteria,const TDesC& aHighMatch,TCriteria aHighCriteria);
  69.302 +private: // From CContactViewRangeBase.
  69.303 +	void SetL();
  69.304 +private:
  69.305 +	CContactViewRange(const CContactViewBase& aView,const TDesC& aLowMatch,TCriteria aLowCriteria,const TDesC& aHighMatch,TCriteria aHighCriteria);
  69.306 +	void ConstructL();
  69.307 +private:
  69.308 +	TBuf<KMaxBoundaryMatchLength> iLowMatch;
  69.309 +	TCriteria iLowCriteria;
  69.310 +	TBuf<KMaxBoundaryMatchLength> iHighMatch;
  69.311 +	TCriteria iHighCriteria;
  69.312 +	};
  69.313 +
  69.314 +
  69.315 +class CContactViewLowRange : public CContactViewRangeBase
  69.316 +/** A sub view range with an upper limit only.
  69.317 +
  69.318 +This is used by sub views when the range criteria are CContactViewRangeBase::ELessThan 
  69.319 +or CContactViewRangeBase::ELessThanOrEqualTo.
  69.320 +
  69.321 +@see CContactSubView 
  69.322 +@publishedAll
  69.323 +@released
  69.324 +*/
  69.325 +	{
  69.326 +public:
  69.327 +	IMPORT_C static CContactViewLowRange* NewL(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
  69.328 +private: // From CContactViewRangeBase.
  69.329 +	void SetL();
  69.330 +private:
  69.331 +	CContactViewLowRange(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
  69.332 +//ChrisD: why private d'tor
  69.333 +	~CContactViewLowRange();
  69.334 +private:
  69.335 +	TBuf<KMaxBoundaryMatchLength> iMatch;
  69.336 +	TCriteria iCriteria;
  69.337 +	};
  69.338 +
  69.339 +
  69.340 +class CContactViewHighRange : public CContactViewRangeBase
  69.341 +/** A sub view range with a lower limit only.
  69.342 +
  69.343 +This is used by sub views when the range criteria are CContactViewRangeBase::EGreaterThan 
  69.344 +or CContactViewRangeBase::EGreaterThanOrEqualTo.
  69.345 +
  69.346 +@see CContactSubView 
  69.347 +@publishedAll
  69.348 +@released
  69.349 +*/
  69.350 +	{
  69.351 +public:
  69.352 +	IMPORT_C static CContactViewHighRange* NewL(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
  69.353 +private: // From CContactViewRangeBase.
  69.354 +	void SetL();
  69.355 +private:
  69.356 +	CContactViewHighRange(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
  69.357 +//ChrisD: why private d'tor
  69.358 +	~CContactViewHighRange();
  69.359 +private:
  69.360 +	TBuf<KMaxBoundaryMatchLength> iMatch;
  69.361 +	TCriteria iCriteria;
  69.362 +	};
  69.363 +
  69.364 +
  69.365 +class CContactSubView : public CContactViewBase, public MContactViewObserver
  69.366 +/** Provides a view of a range of contact items from a potentially larger underlying 
  69.367 +view (another CContactViewBase-derived object).
  69.368 +
  69.369 +All contact items between a lower and upper boundary in the underlying view 
  69.370 +are included in the sub view. For example, the sub view might contain all 
  69.371 +items whose name begins with a character between 'd' and 'f'.
  69.372 +
  69.373 +The sub view observes its underlying view so that as the underlying view changes, 
  69.374 +the sub view is kept up to date. 
  69.375 +@publishedAll
  69.376 +@released
  69.377 +*/
  69.378 +	{
  69.379 +public:
  69.380 +	IMPORT_C static CContactSubView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,CContactViewBase& aView,const TDesC& aBoundary);//>= > is infinity <= < =0;
  69.381 +	IMPORT_C static CContactSubView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,CContactViewBase& aView,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
  69.382 +	
  69.383 +	// Factory constructor for version 2 behaviour
  69.384 +	IMPORT_C static CContactSubView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,const TDesC& aBoundary);//>= > is infinity <= < =0;
  69.385 +	// Factory constructor for version 2 behaviour
  69.386 +	IMPORT_C static CContactSubView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
  69.387 +
  69.388 +	//All CContactViewBase derived classes in public headers,
  69.389 +	//should mandatorily implement this reserved function.	
  69.390 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  69.391 +public: // From CContactViewBase.
  69.392 +	TContactItemId AtL(TInt aIndex) const;
  69.393 +	TInt CountL() const;
  69.394 +	TInt FindL(TContactItemId aId) const;
  69.395 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  69.396 +	const CViewContact& ContactAtL(TInt aIndex) const;
  69.397 +	TContactViewPreferences ContactViewPreferences();
  69.398 +	const RContactViewSortOrder& SortOrderL() const;
  69.399 +private: // From MContactViewObserver.
  69.400 +	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
  69.401 +private:
  69.402 +//ChrisD: why private d'tor
  69.403 +	~CContactSubView();
  69.404 +	CContactSubView(const CContactDatabase& aDb,CContactViewBase& aView);
  69.405 +	CContactSubView(const CContactDatabase& aDb,const CContactSubView& aView);
  69.406 +	void CommonConstructL(MContactViewObserver& aObserver);
  69.407 +	void ConstructL(MContactViewObserver& aObserver,const TDesC& aBoundary);
  69.408 +	void ConstructL(MContactViewObserver& aObserver,const CContactSubView& aView);
  69.409 +	void ConstructL(MContactViewObserver& aObserver,const CContactSubView& aView,const TDesC& aBoundary);
  69.410 +	void ConstructL(MContactViewObserver& aObserver,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
  69.411 +	CContactViewRangeBase::TCriteria DecodeBoundary(TDes& aBoundary) const;
  69.412 +	TInt MapToUnderlyingViewIndex(TInt aSubViewIndex) const;
  69.413 +	TInt MapToSubViewIndex(TInt aUnderlyingViewIndex) const;
  69.414 +private:
  69.415 +	CContactViewBase& iView;
  69.416 +	CContactViewRangeBase* iRange;
  69.417 +	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
  69.418 +	};
  69.419 +
  69.420 +
  69.421 +class CContactConcatenatedView : public CContactViewBase, public MContactViewObserver
  69.422 +/** Concatenates multiple contact views into a single contiguous view.
  69.423 +
  69.424 +The component views are ordered according to their order in the array passed 
  69.425 +into the NewL(). 
  69.426 +@publishedAll
  69.427 +@released
  69.428 +*/
  69.429 +	{
  69.430 +public:
  69.431 +	IMPORT_C static CContactConcatenatedView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,RPointerArray<CContactViewBase>& aComponentViews);
  69.432 +	//All CContactViewBase derived classes in public headers,
  69.433 +	//should mandatorily implement this reserved function.	
  69.434 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  69.435 +public: // From CContactViewBase.
  69.436 +	TContactItemId AtL(TInt aIndex) const;
  69.437 +	TInt CountL() const;
  69.438 +	TInt FindL(TContactItemId aId) const;
  69.439 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  69.440 +	const CViewContact& ContactAtL(TInt aIndex) const;
  69.441 +	TContactViewPreferences ContactViewPreferences();
  69.442 +	const RContactViewSortOrder& SortOrderL() const;
  69.443 +private: // From MContactViewObserver.
  69.444 +	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
  69.445 +private:
  69.446 +	struct TComponentView
  69.447 +		{
  69.448 +		TComponentView(CContactViewBase& aView,TState aState);
  69.449 +		CContactViewBase& iView;
  69.450 +		TState iState;
  69.451 +		};
  69.452 +private:
  69.453 +	~CContactConcatenatedView();
  69.454 +	CContactConcatenatedView(const CContactDatabase& aDb);
  69.455 +	void ConstructL(MContactViewObserver& aObserver,RPointerArray<CContactViewBase>& aComponentViews);
  69.456 +	void CopyComponentViewsL(RPointerArray<CContactViewBase>& aComponentViews);
  69.457 +	void OpenComponentViewsL();
  69.458 +	void CloseComponentViews();
  69.459 +	TBool ComponentViewsReady();
  69.460 +	void SetComponentViewReady(const CContactViewBase& aView);
  69.461 +	TInt OffsetL(const CContactViewBase& aView);
  69.462 +	static TBool ComponentViewsEqual(const TComponentView& aFirst,const TComponentView& aSecond);
  69.463 +	TInt FindComponentView(const CContactViewBase& aView);
  69.464 +private:
  69.465 +	RArray<TComponentView> iComponentView;
  69.466 +	};
  69.467 +
  69.468 +
  69.469 +inline TInt CContactViewRangeBase::LowIndex() const 
  69.470 +/** Gets the index into the sub view's underlying view of the item at the bottom 
  69.471 +of the range.
  69.472 +
  69.473 +@return The index of the item at the bottom of the range. */
  69.474 +	{ return iLow; }
  69.475 +
  69.476 +inline TInt CContactViewRangeBase::HighIndex() const 
  69.477 +/** Gets the index into the sub view's underlying view of the item at the top of 
  69.478 +the range.
  69.479 +	
  69.480 +@return The index of the item at the top of the range. */
  69.481 +	{ return iHigh; }
  69.482 +
  69.483 +#endif
    70.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.2 +++ b/epoc32/include/app/cntviewbase.h	Wed Mar 31 12:27:01 2010 +0100
    70.3 @@ -0,0 +1,908 @@
    70.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    70.5 +// All rights reserved.
    70.6 +// This component and the accompanying materials are made available
    70.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    70.8 +// which accompanies this distribution, and is available
    70.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   70.10 +//
   70.11 +// Initial Contributors:
   70.12 +// Nokia Corporation - initial contribution.
   70.13 +//
   70.14 +// Contributors:
   70.15 +//
   70.16 +// Description:
   70.17 +//
   70.18 +
   70.19 +#ifndef __CNTVIEWBASE_H__
   70.20 +#define __CNTVIEWBASE_H__
   70.21 +
   70.22 +// System includes
   70.23 +#include <e32std.h>
   70.24 +#include <s32mem.h>
   70.25 +
   70.26 +#include <cntdb.h>
   70.27 +
   70.28 +// Classes referenced
   70.29 +class CViewContactExtension;
   70.30 +class CContactViewBase;
   70.31 +class CContactRemoteViewNotifier;
   70.32 +class CIdleContactSorter;
   70.33 +class CContactViewFindConfigInterface;
   70.34 +class CViewContactSortPlugin;
   70.35 +class TSortPluginViewParams;
   70.36 +
   70.37 +/** View preferences for sorted contact views.
   70.38 +
   70.39 +This is used to specify the types of contact item that should be sorted and 
   70.40 +included in the view and the behaviour for items that cannot be sorted because 
   70.41 +they do not have content in any of the fields specified in the view's sort 
   70.42 +order.
   70.43 +
   70.44 +The default behaviour is to include contact cards only and to sort contact 
   70.45 +cards without content in any of the sort order fields using the first available 
   70.46 +field containing any text.
   70.47 +
   70.48 +The view preferences for all concrete contact view classes can be retrieved 
   70.49 +using their implementation of CContactViewBase::ContactViewPreferences(). 
   70.50 +The view preferences are set during construction of a CContactLocalView. 
   70.51 +
   70.52 +@publishedAll
   70.53 +@released
   70.54 +*/
   70.55 +enum TContactViewPreferences
   70.56 +	{
   70.57 +	/** Only contact cards (of type KUidContactCard or KUidContactOwnCard) are included 
   70.58 +	in the view. This is the default. */
   70.59 +	EContactsOnly					=0x00000000,
   70.60 +	/** Only contact groups (of type KUidContactGroup) are included in the view. */
   70.61 +	EGroupsOnly						=0x00000001, 
   70.62 +	/** Contact groups and contact cards (of type KUidContactGroup, KUidContactCard 
   70.63 +	or KUidContactOwnCard) are included in the view. */
   70.64 +	EContactAndGroups				=0x00000002, 
   70.65 +	/** Excludes contact items from the view which don't have content in any of the 
   70.66 +	fields specified in the sort order. */
   70.67 +	EIgnoreUnSorted					=0x00000004, 
   70.68 +	/** Includes contacts in the view which don't have content in any of the fields 
   70.69 +	specified in the sort order. These contacts are placed in an unsorted contact 
   70.70 +	list which is located before the sorted list. */
   70.71 +	EUnSortedAtBeginning			=0x00000008, 
   70.72 +	/** Includes contacts in the view which don't have content in any of the fields 
   70.73 +	specified in the sort order. These contacts are placed in an unsorted contact 
   70.74 +	list which is located after the sorted list. */
   70.75 +	EUnSortedAtEnd					=0x00000010, 
   70.76 +	/** Fields containing a single white space only are treated as empty, and therefore 
   70.77 +	unsortable. */
   70.78 +	ESingleWhiteSpaceIsEmptyField	=0x00000020,
   70.79 +	/** Only ICC entries (of type KUidContactICCEntry) are included in the view. */
   70.80 +	EICCEntriesOnly					=0x00000040, 
   70.81 +	/** Only contact cards and ICC entries (of type KUidContactCard, KUidContactOwnCard 
   70.82 +	or KUidContactICCEntry) are included in the view. */
   70.83 +	EICCEntriesAndContacts			=0x00000080  
   70.84 +	};
   70.85 +
   70.86 +
   70.87 +class TContactViewEvent
   70.88 +/** Identifies a contact view event.
   70.89 +
   70.90 +Sent by contact views when notifying their observers of an event.
   70.91 +
   70.92 +@see MContactViewObserver::HandleContactViewEvent() 
   70.93 +@publishedAll
   70.94 +@released
   70.95 +*/
   70.96 +	{
   70.97 +public:
   70.98 +	/** Identifies the event's type. */
   70.99 +	enum TEventType
  70.100 +		{
  70.101 +		/** The observed view's state has changed from EReady to either ENotReady or EInitializing, 
  70.102 +		so is not available for use. */
  70.103 +		EUnavailable,
  70.104 +		/** The observed view's state has changed from ENotReady or EInitializing to EReady 
  70.105 +		so is available for use. */
  70.106 +		EReady,
  70.107 +		/** The observed view's sort order has changed, so observer views need to update 
  70.108 +		themselves. */
  70.109 +		ESortOrderChanged,
  70.110 +		/** An error occurred when sorting the observed view or when appending an observer 
  70.111 +		to its observer array. 
  70.112 +	
  70.113 +		The error code is provided in iInt. */
  70.114 +		ESortError,
  70.115 +		/** An error occurred in the contacts server.
  70.116 +	
  70.117 +		The error code is provided in iInt. */
  70.118 +		EServerError,
  70.119 +		/** An error occurred when setting the range for a CContactSubView.
  70.120 +	
  70.121 +		The error code is provided in iInt. */
  70.122 +		EIndexingError,
  70.123 +		/** An item has been added to the observed view. 
  70.124 +	
  70.125 +		The ID of the added item is provided in iContactId and the index into the 
  70.126 +		observed view of the added item is provided in iInt. 
  70.127 +		Exception from this are the first version of CContactFindView, CContactSubView and
  70.128 +		CContactGroupView classes.
  70.129 +		For these classes, iInt has KErrNone value */
  70.130 +
  70.131 +		EItemAdded,
  70.132 +		/** An item has been removed from the observed view. 
  70.133 +	
  70.134 +		The ID of the removed item is provided in iContactId and the index into the 
  70.135 +		observed view of the item is provided in iInt. 
  70.136 +		Exception from this are the first version of CContactFindView and CContactSubView classes.
  70.137 +		For these classes, iInt has KErrNone value */
  70.138 +
  70.139 +		EItemRemoved,
  70.140 +		/** A change has occurred in a contact group, for instance a contact item has been 
  70.141 +		moved into or out of the group.
  70.142 +	
  70.143 +		The ID of the group affected is provided in iContactId. */
  70.144 +		EGroupChanged
  70.145 +		};
  70.146 +public:
  70.147 +	inline TContactViewEvent();
  70.148 +	inline TContactViewEvent(TEventType aEventType,TInt aInt = KErrUnknown,TContactItemId aContactId = KErrUnknown); 
  70.149 +public:
  70.150 +	/** The type of event. */
  70.151 +	TEventType iEventType;
  70.152 +	/** The error code (where relevant) or the index of the contact item added to/removed 
  70.153 +	from the underlying view. */
  70.154 +	TInt iInt; 
  70.155 +	/** The ID of the contact item that has been added or removed or the group ID, where 
  70.156 +	relevant. */
  70.157 +	TContactItemId iContactId;//ContactId that has been added / removed if relevant.
  70.158 +	};
  70.159 +
  70.160 +
  70.161 +struct TContactIdWithMapping
  70.162 +/** A struct used internally by filtered and group views to pair a contact item 
  70.163 +ID and its index into the underlying view. 
  70.164 +@publishedAll
  70.165 +@released
  70.166 +*/
  70.167 +	{
  70.168 +	/** The contact item's ID. */
  70.169 +	TContactItemId iId;
  70.170 +	/** The index of the item into the view's underlying view. */
  70.171 +	TInt iMapping;
  70.172 +	};
  70.173 +
  70.174 +
  70.175 +class MContactViewObserver
  70.176 +/** The interface for a contact view observer.
  70.177 +
  70.178 +Objects that need to observe a contact view should implement this interface. 
  70.179 +The view observer should be passed to the observed view's OpenL() or Open() 
  70.180 +function. This adds the observer to the view's observer array: a view can 
  70.181 +have more than one observer. The observers receive notifications when the 
  70.182 +observed view becomes ready for use and when changes occur in it.
  70.183 +
  70.184 +Many contact view classes implement this interface to observe an underlying 
  70.185 +view. They in turn send notification to any objects observing them.
  70.186 +
  70.187 +@see CContactViewBase::NotifyObservers()
  70.188 +@see CContactViewBase::NotifyObserverAsync() 
  70.189 +@publishedAll
  70.190 +@released
  70.191 +*/
  70.192 +	{
  70.193 +public:
  70.194 +	/** Handles an event in an observed contact view.
  70.195 +	
  70.196 +	@param aView The contact view causing the notification.
  70.197 +	@param aEvent The event. */
  70.198 +	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent)=0;
  70.199 +	};
  70.200 +
  70.201 +
  70.202 +class RContactViewSortOrder
  70.203 +/** Specifies the sort order for a contact view.
  70.204 +
  70.205 +It is implemented as an array of TFieldType UIDs, which define the fields 
  70.206 +whose contents are used to sort on, and their order.
  70.207 +
  70.208 +The sort order for all concrete contact view classes can be retrieved using 
  70.209 +their implementation of CContactViewBase::SortOrderL(). The sort order is 
  70.210 +set during construction of local and remote views. 
  70.211 +@publishedAll
  70.212 +@released
  70.213 +*/
  70.214 +	{
  70.215 +public:
  70.216 +	IMPORT_C RContactViewSortOrder();
  70.217 +	IMPORT_C void Close();
  70.218 +	IMPORT_C void CopyL(const RContactViewSortOrder& aSortOrder);
  70.219 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  70.220 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  70.221 +	IMPORT_C TInt ExternalizedSize() const;
  70.222 +	IMPORT_C TBool operator==(const RContactViewSortOrder& aSortOrder) const;
  70.223 +	inline void AppendL(TFieldType aField);
  70.224 +	inline TFieldType operator[](TInt aIndex) const;
  70.225 +	inline TInt Count() const; 
  70.226 +private:
  70.227 +	RArray<TFieldType> iFields;
  70.228 +	TInt iSpare;
  70.229 +	TInt32 iSpare2;
  70.230 +	TInt32 iSpare3;
  70.231 +	};
  70.232 +
  70.233 +
  70.234 +/**
  70.235 +Wrapper around RArray, to container TTextFieldMinimal buffers.
  70.236 +
  70.237 +Features: minimum size 1, easy resize of array, persistent last counted total.
  70.238 +
  70.239 +@internalComponent
  70.240 +@released
  70.241 +*/
  70.242 +class RFieldBufferArray : public RArray<CContactDatabase::TTextFieldMinimal>
  70.243 +    {
  70.244 +public:
  70.245 +	explicit RFieldBufferArray();
  70.246 +
  70.247 +	void ResizeL(TInt aNewSize);
  70.248 +	void ZeroAll();
  70.249 +	TInt NewTotal();
  70.250 +	TInt LastTotal() const;
  70.251 +
  70.252 +private:
  70.253 +	TInt iTotalLength;
  70.254 +    };
  70.255 +
  70.256 +
  70.257 +
  70.258 +class CViewContact : public CBase
  70.259 +/** The representation of a contact item used in contact views.
  70.260 +
  70.261 +It stores the contact item ID and other information. This includes a buffer 
  70.262 +holding the contents of all the item's fields, an array of indexes into the 
  70.263 +buffer indicating the start position of each field and a hint bit field (a 
  70.264 +combination of CContactDatabase::TContactViewFilter values) which is used 
  70.265 +in filtered views.
  70.266 +
  70.267 +The fields are defined by the view's sort order (RContactViewSortOrder). 
  70.268 +@publishedAll
  70.269 +@released
  70.270 +*/
  70.271 +	{
  70.272 +public:
  70.273 +	/** Defines whether the contact view item is a contact group. */
  70.274 +	enum TViewContactType
  70.275 +		{
  70.276 +		/** The contact view item is not a contact group. */
  70.277 +		EContactItem,
  70.278 +		/** The contact view item is a contact group (CContactGroup). */
  70.279 +		EGroup
  70.280 +		};
  70.281 +	IMPORT_C CViewContact(TContactItemId aId);
  70.282 +	IMPORT_C static CViewContact* NewL(const CViewContact& aContact);
  70.283 +	IMPORT_C static CViewContact* NewLC(TContactItemId aId);
  70.284 +	IMPORT_C static CViewContact* NewL(TContactItemId aId, TInt aLength);
  70.285 +	static CViewContact* NewLC(RReadStream& aStream);
  70.286 +	
  70.287 +	IMPORT_C ~CViewContact();
  70.288 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  70.289 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  70.290 +	IMPORT_C TInt ExternalizedSize() const;
  70.291 +	IMPORT_C TInt FieldCount() const;
  70.292 +	IMPORT_C TPtrC Field(TInt aPosition) const;
  70.293 +	IMPORT_C TBool ContactMatchesFilter(TInt aFilter) const;
  70.294 +	IMPORT_C void AddFieldL(const TDesC& aField);
  70.295 +	IMPORT_C TBool IsSortable() const;
  70.296 +	IMPORT_C void SetFirstFieldForBlankContactL(const TDesC& aFirstField);
  70.297 +	IMPORT_C void Reset();
  70.298 +	IMPORT_C TInt ContactHint() const;
  70.299 +	IMPORT_C void SetContactHint(TInt aHint);
  70.300 +	IMPORT_C TUid ContactTypeUid() const;
  70.301 +	IMPORT_C void SetContactTypeUid(TUid aUid);
  70.302 +
  70.303 +	inline TContactItemId Id() const;
  70.304 +	inline TViewContactType ContactType() const;
  70.305 +public:
  70.306 +	inline void SetId(TContactItemId aId);
  70.307 +	inline void SetContactType(CViewContact::TViewContactType aContactType);
  70.308 +	static TBool HintFieldMatchesFilter(TInt aHintField, TInt aFilter);
  70.309 +	TPtrC FindFirstPopulatedField(TInt aOffset, TInt& aFoundPosition) const;
  70.310 +	
  70.311 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__	
  70.312 +    IMPORT_C void  ChangeToLightweightObject();
  70.313 +    TBool IsLightweightObject() const;	
  70.314 +    void  CopyL(const CViewContact& aContact);
  70.315 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
  70.316 +
  70.317 +private: 
  70.318 +	void ConstructL(TInt aLength = 0);
  70.319 +	void ConstructL(const CViewContact& aContact);
  70.320 +	friend class CContactViewBase;
  70.321 +private:
  70.322 +	TContactItemId iId;
  70.323 +	TViewContactType iContactType;
  70.324 +	CViewContactExtension* iExtension;
  70.325 +	RArray<TInt> iTextIndexes;
  70.326 +	};
  70.327 +
  70.328 +
  70.329 +/*
  70.330 + * A view can be named or un-named. An un-named view has a fixed sort order - the 
  70.331 + * only way to change this is by closing the object and creating a new one with a 
  70.332 + * different order. Named views may have their sort order changed. When this is 
  70.333 + * done, first all observers will be informed that the view is 'unavailable'. This
  70.334 + * notification will be followed by 'sort order changed' and 'ready'. Only once 
  70.335 + * the 'ready' notification has been received may the view be used again.
  70.336 + */
  70.337 +class CContactViewBase : public CBase
  70.338 +/** The abstract base class for all contact view classes.
  70.339 +
  70.340 +All contact views operate asynchronously, so users of the view must observe 
  70.341 +it, by implementing the MContactViewObserver interface. Immediately after 
  70.342 +construction, views are not in a usable state (the underlying data may be 
  70.343 +being sorted, for instance). Only after the user has received a TContactViewEvent::EReady 
  70.344 +event may the view be used.
  70.345 +
  70.346 +View observers are also notified when changes occur, for instance when the 
  70.347 +view's state changes (see TState), when an error occurs, or when an item is 
  70.348 +added or removed. 
  70.349 +@publishedAll
  70.350 +@released
  70.351 +*/
  70.352 +	{
  70.353 +public:
  70.354 +	class CContactViewBaseExtension : public CBase
  70.355 +	/** An extension class that holds member data added in v7.0s.
  70.356 +
  70.357 +	It was created for binary compatibility purposes. 
  70.358 +	@internalComponent
  70.359 +	@released */
  70.360 +		{
  70.361 +		public:
  70.362 +			static CContactViewBaseExtension* NewL();
  70.363 +			~CContactViewBaseExtension();
  70.364 +
  70.365 +		private:
  70.366 +			CContactViewBaseExtension();
  70.367 +			void ConstructL();
  70.368 +
  70.369 +		public:
  70.370 +			/** A standard error code that is passed to view observers by NotifyObservers() 
  70.371 +			(unless its value is KErrNone). */
  70.372 +			TInt iError;
  70.373 +			/** The UID of the view's find configuration plug-in.
  70.374 +	
  70.375 +			On construction, this is initialised to KNullUid.
  70.376 +	
  70.377 +			The plug-in is loaded when ContactsMatchingCriteriaL(), ContactsMatchingPrefixL() 
  70.378 +			or MatchesCriteriaL() is called. */
  70.379 +			TUid iFindPluginUid;
  70.380 +			/** The UID of the view's sort plug-in. */
  70.381 +			TUid iSortPluginUid;
  70.382 +		private:
  70.383 +			CContactViewFindConfigInterface*	iFindPluginImpl;
  70.384 +			CViewContactSortPlugin*				iSortPluginImpl;
  70.385 +			TCollationMethod					iCollationMethod;
  70.386 +			friend class CContactViewBase;
  70.387 +		};
  70.388 +	class TVirtualFunction1Params
  70.389 +	/** Holds the two parameters passed to the helper method GetContactIdsL() from 
  70.390 +	the reserved function CContactViewBase_Reserved_1(). It has an inline constructor 
  70.391 +	to initialise the data members. 
  70.392 +	@publishedAll
  70.393 +	@released */
  70.394 +		{
  70.395 +		public:
  70.396 +		   /** Inline constructor to initialize member data
  70.397 +			  @param aIndexes Pointer to an array of indexes in a view
  70.398 +	          @param aIdArray Pointer to array of contact IDs  */
  70.399 +			inline TVirtualFunction1Params(const CArrayFix<TInt>* aIndexes, CContactIdArray* aIdArray) :iIndexes(aIndexes), iIdArray(aIdArray){};
  70.400 +			/** Pointer to an array of indexes in a view  */
  70.401 +			const CArrayFix<TInt>* iIndexes;
  70.402 +			/** Pointer to array of contact IDs  */
  70.403 +			CContactIdArray* iIdArray;
  70.404 +		};
  70.405 +	class TVirtualFunction2Params
  70.406 +	/** Holds the two parameters passed to the method GetContactsMatchingFilterL() 
  70.407 +	from the reserved function CContactViewBase_Reserved_1(). It has an inline 
  70.408 +	constructor to initialise the data members.
  70.409 +	*/
  70.410 +		{
  70.411 +		public:
  70.412 +		   /** Inline constructor to initialize member data.
  70.413 +			  @param aFilter Filter for the contacts
  70.414 +	          @param aMatchingContacts Contacts matching a particular criterion  */
  70.415 +			inline TVirtualFunction2Params(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts) : iFilter(aFilter), iMatchingContacts(aMatchingContacts){};
  70.416 +		public:
  70.417 +			/** Filter for the contacts. */
  70.418 +			TInt iFilter;
  70.419 +			/** List of contacts matching the criteria. */
  70.420 +			RArray<TContactIdWithMapping>& iMatchingContacts;
  70.421 +		};
  70.422 +	class TVirtualFunction3Params
  70.423 +	/** Holds the two parameters passed to the method InsertContactInView() from the 
  70.424 +	reserved function CContactViewBase_Reserved_1(). It has an inline 
  70.425 +	constructor to initialise the data members.
  70.426 +
  70.427 +	@internalAll */
  70.428 +		{
  70.429 +		public:
  70.430 +			inline TVirtualFunction3Params(RPointerArray<CViewContact>& aContacts, const CViewContact* aNewContact) :iContacts(aContacts), iNewContact(aNewContact){};
  70.431 +			RPointerArray<CViewContact>&	iContacts;
  70.432 +			const CViewContact*				iNewContact;
  70.433 +		};
  70.434 +	/** Search type.
  70.435 +
  70.436 +	This controls whether a search term can occur anywhere in a contact item field, 
  70.437 +	or just at the beginning of the field. */
  70.438 +	enum TSearchType
  70.439 +		{
  70.440 +		/** The search uses full wildcard matching so that the search string can occur anywhere 
  70.441 +		in the item's fields. */
  70.442 +		EFullSearch,
  70.443 +		/** The search uses partial wildcard matching so that the search string can only 
  70.444 +		occur at the beginning of the item's fields. */
  70.445 +		EPrefixSearch
  70.446 +		};
  70.447 +	/** Identifies the functions that have been added to CContactViewBase, or that 
  70.448 +	may be added in the future. This identifier is passed to the reserved virtual 
  70.449 +	function CContactViewBase_Reserved_1() and enables the addition of new virtual 
  70.450 +	methods without breaking binary compatibility. */
  70.451 +	enum TFunction
  70.452 +		{
  70.453 +		/** Identifies the function CContactViewBase::GetContactIdsL(). */
  70.454 +		ECContactViewBaseVirtualFunction1,
  70.455 +		/** Identifies the function CContactViewBase::GetContactsMatchingFilterL(). */
  70.456 +		ECContactViewBaseVirtualFunction2,
  70.457 +		// communication with Sort Plug-in
  70.458 +		/** Identifies the function CContactViewBase::InsertContactInView(). */
  70.459 +		ECContactViewBaseVirtualFunction3,
  70.460 +		};
  70.461 +protected:
  70.462 +	/** Defines the contact view states. */
  70.463 +	enum TState
  70.464 +		{
  70.465 +		/** The view is initialising.
  70.466 +	
  70.467 +		This is the view's state immediately after construction or after a significant change 
  70.468 +		(e.g CurrentDatabaseChanged or UnknownChanges),	indicating that it can't be used yet. */
  70.469 +		EInitializing,
  70.470 +		/** The view is ready to be used. */
  70.471 +		EReady,
  70.472 +		/** The view is not ready to be used, for instance immediately after the sort order 
  70.473 +		has changed, or after an error has occurred. */
  70.474 +		ENotReady
  70.475 +		};
  70.476 +public:
  70.477 +	IMPORT_C void OpenL(MContactViewObserver& aObserver);
  70.478 +	IMPORT_C TInt Open(MContactViewObserver& aObserver);
  70.479 +	IMPORT_C TBool Close(const MContactViewObserver& aObserver);
  70.480 +	/** Returns the contact item ID at the specified index into the view.
  70.481 +	
  70.482 +	@capability ReadUserData
  70.483 +	@param aIndex Index of the contact item ID into the view.
  70.484 +	@return The contact item ID. */
  70.485 +	virtual TContactItemId AtL(TInt aIndex) const=0; 
  70.486 +	/** Returns the contact item at the specified index into the view.
  70.487 +	
  70.488 +	@capability ReadUserData
  70.489 +	@param aIndex Index of the contact item into the view.
  70.490 +	@return The contact item. */
  70.491 +	virtual const CViewContact& ContactAtL(TInt aIndex) const =0;
  70.492 +	/** Returns the number of contact items in the view.
  70.493 +		
  70.494 +	@capability ReadUserData
  70.495 +	@return The number of contact items in the view. */
  70.496 +	virtual TInt CountL() const=0;
  70.497 +	/** Returns the index into the view of the specified contact item.
  70.498 +	
  70.499 +	@capability ReadUserData
  70.500 +	@param aId The contact item ID to search for.
  70.501 +	@return The index into the view of the contact item ID, or KErrNotFound if 
  70.502 +	no matching ID can be found. */
  70.503 +	virtual TInt FindL(TContactItemId aId) const=0;
  70.504 +	/** Returns a descriptor containing the contents of all fields for an item in the view.
  70.505 +	
  70.506 +	The field separator is used to separate the contents of each field. It is 
  70.507 +	not appended to the last field.
  70.508 +	
  70.509 +	@capability ReadUserData
  70.510 +	@param aIndex The index of the contact item into the view.
  70.511 +	@param aSeparator The string to use to separate the fields.
  70.512 +	@return Pointer to the contact item descriptor. */
  70.513 +	virtual HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const=0;
  70.514 +	IMPORT_C virtual void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts);
  70.515 +	/** Gets the view preferences.
  70.516 +	
  70.517 +	@capability ReadUserData
  70.518 +	@return The view preferences. */
  70.519 +	virtual TContactViewPreferences ContactViewPreferences()=0;
  70.520 +	/** Gets the view's sort order.
  70.521 +	
  70.522 +	@capability ReadUserData
  70.523 +	@return The sort order. */
  70.524 +	virtual const RContactViewSortOrder& SortOrderL() const = 0;
  70.525 +	IMPORT_C virtual void ContactsMatchingPrefixL(const MDesCArray& aFindWords, RPointerArray<CViewContact>& aMatchedContacts);
  70.526 +	//This is a reserved virtual exported function that is used for BC proofing against present 
  70.527 +	//and future additions of new exported virtual functions. Existing exported virtual methods 
  70.528 +	//that broke BC are now non-virtual exported helper functions called from this method. 
  70.529 +	//All derived classes of CContactViewBase that are public must mandatorily 
  70.530 +	//implement this reserved exported virtual method.
  70.531 +	IMPORT_C virtual TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  70.532 +	//New exported method to set the ECOM plug-in to be used
  70.533 +	IMPORT_C void SetViewFindConfigPlugin(TUid aUid);
  70.534 +	IMPORT_C TUid GetViewFindConfigPlugin();
  70.535 +	IMPORT_C virtual void GetContactIdsL(const CArrayFix<TInt>& aIndexes, CContactIdArray& aContactIds);
  70.536 +	IMPORT_C TInt Error() const; 
  70.537 +	IMPORT_C TUid GetViewSortPluginImplUid() const;
  70.538 +
  70.539 +protected:
  70.540 +	IMPORT_C ~CContactViewBase();
  70.541 +	IMPORT_C void ConstructL();
  70.542 +
  70.543 +	IMPORT_C CContactViewBase(const CContactDatabase& aDb);
  70.544 +	IMPORT_C void NotifyObservers(const TContactViewEvent& aEvent);
  70.545 +	IMPORT_C TInt NotifyObserverAsync(MContactViewObserver& aObserver,const TContactViewEvent& aEvent);
  70.546 +	IMPORT_C static TBool IdsMatch(const CViewContact& aFirst,const CViewContact& aSecond);
  70.547 +	IMPORT_C HBufC* FieldsWithSeparatorLC(const RPointerArray<CViewContact>& aContacts,TInt aIndex,const TDesC& aSeparator) const;
  70.548 +	//Find helper functions
  70.549 +	IMPORT_C virtual TBool MatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords);
  70.550 +	IMPORT_C static TBool MatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords, TSearchType aSearchType);
  70.551 +	IMPORT_C static TBool MatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords, TSearchType aSearchType,CContactViewBase::CContactViewBaseExtension* aExtension);
  70.552 +	IMPORT_C static TBool IdsEqual(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
  70.553 +	IMPORT_C static TBool IndexesEqual(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
  70.554 +	IMPORT_C static TInt CompareFieldsL(const CViewContact& aFirst, const CViewContact& aSecond);
  70.555 +	// View Sort Plugin changes
  70.556 +	IMPORT_C static TInt CompareContactIds(const CViewContact& aFirst, const CViewContact& aSecond);
  70.557 +	IMPORT_C static TBool ContactIsSortable(const CViewContact& aContact);
  70.558 +	IMPORT_C TInt CompareContactsAndIdsL(const CViewContact& aFirst, const CViewContact& aSecond) const;
  70.559 +protected:	// these are needed by CContactLocalView only
  70.560 +	TInt InsertContactInView(RPointerArray<CViewContact>& aContacts, const CViewContact* aNewContact, TBool aSortByIdOnly, TInt* aIndex) const;
  70.561 +	TBool IsContactSortable(const CViewContact& aContact, TContactViewPreferences& aViewPreferences) const;
  70.562 +	CViewContactSortPlugin* SortPluginImpl() const;
  70.563 +	TUid FindSortPluginImplL (const TDesC8& aSortPluginName,TBool aWildCard=EFalse) const;
  70.564 +	TUid FindDefaultViewSortPluginImplL () const;
  70.565 +	void LoadViewSortPluginL (TUid aSortPluginUid,TContactViewPreferences& aViewPreferences);
  70.566 +
  70.567 +private:
  70.568 +	static TInt AsyncNotifyCallBack(TAny* aSelf);
  70.569 +	static CDesCArrayFlat* CreateFindWordArrayLC(const MDesCArray& aFindWords, TSearchType aSearchType);
  70.570 +	static TBool ContactMatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords,CContactViewBase::CContactViewBaseExtension* aExtension);
  70.571 +	void MatchContactsL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts, TSearchType aSearchType);
  70.572 +	static TInt CompareFieldsWithCollationLevel(const CViewContact& aFirst, const CViewContact& aSecond, 
  70.573 +												TInt aCollationLevel, TCollationMethod* aCollateMethod);
  70.574 +	TInt GetErrorValueFromExtensionClass();	
  70.575 +	void GetContactsMatchingFilterL(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts);	
  70.576 +	TInt TextCompareFieldsL(const CViewContact& aFirst, const CViewContact& aSecond) const;
  70.577 +
  70.578 +
  70.579 +private:
  70.580 +	struct TObserverAndEvent
  70.581 +		{
  70.582 +		TContactViewEvent iAsyncEvent;
  70.583 +		MContactViewObserver* iObserverToNotify;
  70.584 +		};
  70.585 +protected:
  70.586 +	// Reference to CContactDatabase class.
  70.587 +	const CContactDatabase& iDb;
  70.588 +    // Different Contacts view states.
  70.589 +	TState iState;
  70.590 +	// The pointer to the ContactViewBase BC extension class.
  70.591 +	CContactViewBaseExtension* iExtension; 
  70.592 +private:
  70.593 +	RPointerArray<MContactViewObserver> iObserverArray;
  70.594 +	CIdle* iAsyncNotifier;
  70.595 +	RArray<TObserverAndEvent> iOutstandingNotifications;
  70.596 +	};
  70.597 +
  70.598 +inline TInt CContactViewBase::GetErrorValueFromExtensionClass()
  70.599 +	{
  70.600 +	return iExtension->iError;
  70.601 +	}
  70.602 +	
  70.603 +class MLplPersistenceLayerFactory;
  70.604 +
  70.605 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
  70.606 +
  70.607 +class CViewContactManager;
  70.608 +
  70.609 +#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
  70.610 +
  70.611 +class CViewIterator;
  70.612 +
  70.613 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
  70.614 +
  70.615 +class CContactLocalView : public CContactViewBase, public MContactDbObserver
  70.616 +/** An instantiable base class for contact views.
  70.617 +
  70.618 +The data associated with a local view is allocated within the client's memory 
  70.619 +space; CContactRemoteView should be used in preference if the view is likely 
  70.620 +to be shared between multiple clients. It is kept up to date by receiving 
  70.621 +change events from the underlying CContactDatabase object which it observes. 
  70.622 +The view preferences and sort order are specified on construction. 
  70.623 +@publishedAll
  70.624 +@released
  70.625 +*/
  70.626 +	{
  70.627 +public:
  70.628 +	IMPORT_C static CContactLocalView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
  70.629 +	IMPORT_C static CContactLocalView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
  70.630 +		const TDesC8& aSortPluginName);
  70.631 +	IMPORT_C static CContactLocalView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
  70.632 +		MLplPersistenceLayerFactory* aFactory,const TDesC8& aSortPluginName);
  70.633 +
  70.634 +	IMPORT_C const RContactViewSortOrder& SortOrder() const;
  70.635 +public: // From CContactViewBase.
  70.636 +	TContactItemId AtL(TInt aIndex) const;
  70.637 +	TInt CountL() const;
  70.638 +	TInt FindL(TContactItemId aId) const;
  70.639 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  70.640 +	const CViewContact&  ContactAtL(TInt aIndex) const;
  70.641 +	TContactViewPreferences ContactViewPreferences();
  70.642 +	const RContactViewSortOrder& SortOrderL() const;
  70.643 +	void NotifySortError(TInt aError);
  70.644 +	//All derived classes of CContactViewBase that are public should mandatorily 
  70.645 +	//implement this reserved exported virtual method.
  70.646 +	IMPORT_C TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  70.647 +protected:
  70.648 +	IMPORT_C ~CContactLocalView();
  70.649 +	IMPORT_C CContactLocalView(const CContactDatabase& aDb,TContactViewPreferences aContactTypes);
  70.650 +	CContactLocalView(const CContactDatabase& aDb,TContactViewPreferences aContactTypes,MLplPersistenceLayerFactory* aIterFactory);
  70.651 +	IMPORT_C void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder);
  70.652 +	void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder, const TBool aUseNamedPlugin, const TDesC8& aSortPluginName);
  70.653 +	IMPORT_C virtual void SortL(const RContactViewSortOrder& aSortOrder);
  70.654 +	IMPORT_C virtual TInt InsertL(TContactItemId aId);
  70.655 +	IMPORT_C virtual TInt RemoveL(TContactItemId aId);
  70.656 +protected:
  70.657 +	void SetState(TState aState);
  70.658 +private: // From MContactDbObserver.
  70.659 +	virtual void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
  70.660 +	
  70.661 +private:
  70.662 +
  70.663 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
  70.664 +	void SortComplete(TInt aSortErr);	
  70.665 +	void SetSortOrderL(const RContactViewSortOrder& aSortOrder);
  70.666 +	void SortL();
  70.667 +	void SafeResort();
  70.668 +	friend class CViewContactManager;
  70.669 +#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
  70.670 +	TInt SortCallBack();
  70.671 +	TInt DoReadIncrementL();
  70.672 +	void ResetSortL();
  70.673 +	void InitialiseSortL(const RContactViewSortOrder& aSortOrder, TBool aChangingSortOrder);
  70.674 +	void SortL();
  70.675 +	void SafeResort();
  70.676 +	void ContactsArraySortL();
  70.677 +	TBool ContactCorrectType(TUid aType,TContactViewPreferences aTypeToInclude);
  70.678 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
  70.679 +
  70.680 +private: // Metheds for event handling
  70.681 +	void HandleOutstandingEvents();
  70.682 +	void HandleOutstandingEventL();
  70.683 +	friend class CIdleContactSorter;
  70.684 +protected:
  70.685 +	/** The sort order. 
  70.686 +	This is set during construction or when SortL() is called. */
  70.687 +	RContactViewSortOrder iSortOrder ;
  70.688 +private:
  70.689 +	IMPORT_C virtual void CContactLocalView_Reserved_1();
  70.690 +	IMPORT_C virtual void CContactLocalView_Reserved_2();
  70.691 +
  70.692 +private:
  70.693 +	MLplPersistenceLayerFactory*	iFactory;
  70.694 +	RPointerArray<CViewContact>	iContacts;
  70.695 +	RPointerArray<CViewContact>	iUnSortedContacts;
  70.696 +	RArray<TContactDbObserverEvent> iOutstandingEvents;
  70.697 +	CIdleContactSorter* iAsyncSorter;
  70.698 +	
  70.699 +#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
  70.700 +	CViewContactManager* iViewCntMgr;
  70.701 +#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
  70.702 +	CViewIterator*		iViewIterator;
  70.703 +#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
  70.704 +
  70.705 +	CContactTextDef*	iTextDef;
  70.706 +	TContactViewPreferences iViewPreferences;
  70.707 +	TBool iSpare0;
  70.708 +	TInt iSpare;
  70.709 +	};
  70.710 +
  70.711 +class RContactRemoteView : public RSubSessionBase
  70.712 +/** This class is used internally by remote contact views as the handle to the 
  70.713 +server side view object.
  70.714 +
  70.715 +@see CContactRemoteViewBase 
  70.716 +@internalComponent
  70.717 +@released
  70.718 +*/
  70.719 +	{
  70.720 +public:
  70.721 +	void OpenL(const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,const TUid& aSortPluginImplUid,const TDesC8& aSortPluginName);
  70.722 +	void OpenL(const CContactDatabase& aDb,const TDesC& aName,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,const TUid& aSortPluginImplUid,const TDesC8& aSortPluginName);
  70.723 +	void Close();
  70.724 +public: // From CContactViewBase
  70.725 +	TContactItemId AtL(TInt aIndex) const;
  70.726 +	CViewContact*  ContactAtL(TInt aIndex);
  70.727 +	TInt CountL() const;
  70.728 +	TInt FindL(TContactItemId aId) const;
  70.729 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  70.730 +	const RContactViewSortOrder& SortOrderL();
  70.731 +public:	
  70.732 +	void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts, TBool aPrefixSearch,TUid aUid);
  70.733 +	void ChangeSortOrderL(const RContactViewSortOrder& aSortOrder);
  70.734 +	void GetSortOrderL(RContactViewSortOrder& aSortOrder);
  70.735 +	TContactViewPreferences ContactViewPreferencesL();
  70.736 +
  70.737 +	void RequestViewEvent(TPckgBuf<TContactViewEvent>& aEvent,TRequestStatus& aStatus);
  70.738 +	TInt CancelRequestViewEvent();
  70.739 +	void GetContactIdsL(const CArrayFix<TInt>& aIndexes, CContactIdArray& aContactIds);
  70.740 +	void GetContactsMatchingFilterL(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts);
  70.741 +	TUid GetViewSortPluginImplUidL() const;
  70.742 +private:
  70.743 +	HBufC8* PackageSortOrderLC(const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes) const;
  70.744 +	HBufC8* PackageSortOrderAndPluginDetailsLC(const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,const TUid& aSortPluginImplUid,const TDesC8& aSortPluginName) const;
  70.745 +private:
  70.746 +	CViewContact* iContact;
  70.747 +	RContactViewSortOrder iSortOrder ;
  70.748 +	};
  70.749 +
  70.750 +
  70.751 +NONSHARABLE_CLASS(CContactRemoteViewBase) : public CContactViewBase
  70.752 +/** Base class for all remote contact view classes.
  70.753 +
  70.754 +It implements all the pure virtual functions in CContactViewBase and additionally 
  70.755 +it handles remote view notifications. The data associated with remote views 
  70.756 +is allocated within the memory space of the contacts server. This means that 
  70.757 +multiple clients can share the same server side view object, thereby reducing 
  70.758 +the overhead associated with initial sorting of the view data and keeping 
  70.759 +it in sync with the underlying data. Remote views should therefore be used 
  70.760 +when the same view is likely to be needed by more than one client. 
  70.761 +@internalComponent
  70.762 +@released
  70.763 +*/
  70.764 +	{
  70.765 +public: // From CContactViewBase.
  70.766 +	TContactItemId AtL(TInt aIndex) const;
  70.767 +	TInt CountL() const;
  70.768 +	TInt FindL(TContactItemId aId) const;
  70.769 +	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  70.770 +	const CViewContact&  ContactAtL(TInt aIndex) const;
  70.771 +	TContactViewPreferences ContactViewPreferences();
  70.772 +	void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts);
  70.773 +	void ContactsMatchingPrefixL(const MDesCArray& aFindWords, RPointerArray<CViewContact>& aMatchedContacts);
  70.774 +	const RContactViewSortOrder& SortOrderL() const;
  70.775 +	//All derived classes of CContactViewBase that are public should mandatorily 
  70.776 +	//implement this reserved exported virtual method.
  70.777 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  70.778 +	//This function was virtual in a previous release, if you still need to use it
  70.779 +	//in a virtual way then you can call it via the Reserved function.
  70.780 +	//The functionality of this function ,however,remains the same.
  70.781 +	void GetContactIdsL(const CArrayFix<TInt>& aIndexes, CContactIdArray& aContactIds);
  70.782 +	void GetContactsMatchingFilterL(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts);
  70.783 +protected:
  70.784 +	~CContactRemoteViewBase();
  70.785 +	CContactRemoteViewBase(const CContactDatabase& aDb);
  70.786 +	void ConstructL(MContactViewObserver& aObserver);
  70.787 +private:
  70.788 +	static TInt NotifierCallBack(TAny* aSelf);
  70.789 +	void HandleContactViewEvent(const TContactViewEvent& aEvent);
  70.790 +protected:
  70.791 +	/** A handle to the server side view. */
  70.792 +	RContactRemoteView iView;
  70.793 +private:
  70.794 +	CContactRemoteViewNotifier* iNotifier;
  70.795 +	/** Cached copy of the count of the local view in the contacts server. 
  70.796 +		If this is KCachedItemCountInvalid then next time CountL is called
  70.797 +		the current count is retrieved from the contacts server. */
  70.798 +	mutable TInt iCount;
  70.799 +	};
  70.800 +
  70.801 +
  70.802 +class CContactRemoteView : public CContactRemoteViewBase
  70.803 +/** An instantiable remote contact view class.
  70.804 +
  70.805 +Remote views are associated with a CContactLocalView object held in the contacts 
  70.806 +server. They provide an efficient means for multiple clients to share the 
  70.807 +same underlying view.
  70.808 +
  70.809 +The view preferences and sort order are specified on construction. 
  70.810 +@publishedAll
  70.811 +@released
  70.812 +*/
  70.813 +	{
  70.814 +public:
  70.815 +	IMPORT_C static CContactRemoteView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
  70.816 +	IMPORT_C static CContactRemoteView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
  70.817 +		const TDesC8& aSortPluginName);
  70.818 +	IMPORT_C void GetSortOrderL(RContactViewSortOrder& aSortOrder);
  70.819 +	//All derived classes of CContactViewBase that are public should mandatorily 
  70.820 +	//implement this reserved exported virtual method.
  70.821 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  70.822 +protected:
  70.823 +	~CContactRemoteView();
  70.824 +	CContactRemoteView(const CContactDatabase& aDb);
  70.825 +private:
  70.826 +	void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
  70.827 +	void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypesconst, const TDesC8& aSortPluginName);
  70.828 +	};
  70.829 +
  70.830 +
  70.831 +class CContactNamedRemoteView : public CContactRemoteView
  70.832 +/** A named remote contact view.
  70.833 +
  70.834 +This class enables multiple clients to share a named server side view. It 
  70.835 +also provides a function to change the sort order. If the sort order is changed, 
  70.836 +a notification is sent to all users of the named view. 
  70.837 +@publishedAll
  70.838 +@released
  70.839 +*/
  70.840 +	{
  70.841 +public:
  70.842 +	IMPORT_C static CContactNamedRemoteView* NewL(MContactViewObserver& aObserver,const TDesC& aName,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
  70.843 +	IMPORT_C static CContactNamedRemoteView* NewL(MContactViewObserver& aObserver,const TDesC& aName,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
  70.844 +		const TDesC8& aSortPluginName);
  70.845 +	IMPORT_C void ChangeSortOrderL(const RContactViewSortOrder& aSortOrder);
  70.846 +	//All derived classes of CContactViewBase that are public should mandatorily 
  70.847 +	//implement this reserved exported virtual method.
  70.848 +	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  70.849 +private:
  70.850 +	~CContactNamedRemoteView();
  70.851 +	CContactNamedRemoteView(const CContactDatabase& aDb);
  70.852 +	void ConstructL(MContactViewObserver& aObserver,const TDesC& aName,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
  70.853 +	void ConstructL(MContactViewObserver& aObserver,const TDesC& aName,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes, const TDesC8& aSortPluginName);
  70.854 +	};
  70.855 +
  70.856 +inline TContactViewEvent::TContactViewEvent() 
  70.857 +/** Empty default constructor. */
  70.858 +	{};
  70.859 +
  70.860 +inline TContactViewEvent::TContactViewEvent(TEventType aEventType,TInt aInt,TContactItemId aContactId) : iEventType(aEventType),iInt(aInt),iContactId(aContactId) 
  70.861 +/** Constructor with an event type and an optional error code and contact item ID.
  70.862 +
  70.863 +@param aEventType The event type.
  70.864 +@param aInt Optional standard error code.
  70.865 +@param aContactId Optional contact item ID. */
  70.866 +	{};
  70.867 +
  70.868 +inline void RContactViewSortOrder::AppendL(TFieldType aField) 
  70.869 +/** Appends a field type to the sort order object.
  70.870 +
  70.871 +@param aField The field type to append. */
  70.872 +	{ User::LeaveIfError(iFields.Append(aField)); }
  70.873 +
  70.874 +inline TFieldType RContactViewSortOrder::operator[](TInt aIndex) const 
  70.875 +/** Gets an indexed field type.
  70.876 +
  70.877 +@param aIndex Index of the required field type. A panic occurs if this is 
  70.878 +invalid.
  70.879 +@return The field type located at the indexed position in the array. */
  70.880 +	{ return iFields[aIndex]; }
  70.881 +
  70.882 +inline TInt RContactViewSortOrder::Count() const 
  70.883 +/** Gets the number of field types in the sort order array.
  70.884 +
  70.885 +@return The number of field types in the array. */
  70.886 +	{ return iFields.Count(); }
  70.887 +
  70.888 +inline TContactItemId CViewContact::Id() const 
  70.889 +/** Gets the view item's ID.
  70.890 +
  70.891 +@return The view item's ID. */
  70.892 +	{return iId;}
  70.893 +
  70.894 +inline CViewContact::TViewContactType CViewContact::ContactType() const 
  70.895 +/** Gets the view item's type.
  70.896 +
  70.897 +@return The view item's type. */
  70.898 +	{return iContactType;}
  70.899 +
  70.900 +inline void CViewContact::SetId(TContactItemId aId) 
  70.901 +/** Sets the view item's ID.
  70.902 +
  70.903 +@param aId The contact item ID. */
  70.904 +	{iId=aId;}
  70.905 +
  70.906 +inline void CViewContact::SetContactType(CViewContact::TViewContactType aContactType) 
  70.907 +/** Sets the view item's type.
  70.908 +
  70.909 +@param aContactType The view item's type. */
  70.910 +	{iContactType=aContactType;}
  70.911 +#endif
    71.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.2 +++ b/epoc32/include/app/cobexsendoperation.h	Wed Mar 31 12:27:01 2010 +0100
    71.3 @@ -0,0 +1,36 @@
    71.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    71.5 +// All rights reserved.
    71.6 +// This component and the accompanying materials are made available
    71.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    71.8 +// which accompanies this distribution, and is available
    71.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   71.10 +//
   71.11 +// Initial Contributors:
   71.12 +// Nokia Corporation - initial contribution.
   71.13 +//
   71.14 +// Contributors:
   71.15 +//
   71.16 +// Description:
   71.17 +//
   71.18 +
   71.19 +
   71.20 +#ifndef __COBEXSENDOPERATION_H__
   71.21 +#define __COBEXSENDOPERATION_H__
   71.22 +
   71.23 +
   71.24 +#include <msvapi.h>
   71.25 +
   71.26 +
   71.27 +class CObexSendOperation : public CMsvSendOperation
   71.28 +/**
   71.29 +@internalComponent
   71.30 +*/
   71.31 +	{
   71.32 +public:
   71.33 +	IMPORT_C CObexSendOperation(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
   71.34 +	// from CMsvSendOperation		
   71.35 +	IMPORT_C virtual const TDesC8& TranslateProgress(const TDesC8& aProgress);
   71.36 +	};
   71.37 +
   71.38 +
   71.39 +#endif // __COBEXSENDOPERATION_H__
    72.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.2 +++ b/epoc32/include/app/csmsaccount.h	Wed Mar 31 12:27:01 2010 +0100
    72.3 @@ -0,0 +1,96 @@
    72.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    72.5 +// All rights reserved.
    72.6 +// This component and the accompanying materials are made available
    72.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    72.8 +// which accompanies this distribution, and is available
    72.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   72.10 +//
   72.11 +// Initial Contributors:
   72.12 +// Nokia Corporation - initial contribution.
   72.13 +//
   72.14 +// Contributors:
   72.15 +//
   72.16 +// Description:
   72.17 +//
   72.18 +
   72.19 +#ifndef __CSMSACCOUNT_H__
   72.20 +#define __CSMSACCOUNT_H__
   72.21 +
   72.22 +
   72.23 +#include <e32base.h>
   72.24 +#include <msvapi.h>
   72.25 +
   72.26 +
   72.27 +class CSmsSettings;
   72.28 +class CMsvOffPeakTimes;
   72.29 +class CMsvScheduleSettings;
   72.30 +class CMsvSendErrorActions;
   72.31 +class CMsvSysAgentActions;
   72.32 +class CRepository;
   72.33 +
   72.34 +
   72.35 +/**
   72.36 +Stores SMS service and Schedule Send settings to Central Repository. 
   72.37 +
   72.38 +@publishedAll
   72.39 +@released
   72.40 +*/
   72.41 +class CSmsAccount : public CBase, public MMsvSessionObserver
   72.42 +	{
   72.43 +public:
   72.44 +
   72.45 +	IMPORT_C static CSmsAccount* NewL();
   72.46 +	IMPORT_C static CSmsAccount* NewLC();
   72.47 +	IMPORT_C virtual ~CSmsAccount();
   72.48 +
   72.49 +	IMPORT_C void InitialiseDefaultSettingsL(CSmsSettings& aSmsSettings);
   72.50 +	IMPORT_C void InitialiseDefaultSettingsL(CMsvScheduleSettings& aScheduleSettings, CMsvOffPeakTimes& aOffPeakTimes, CMsvSendErrorActions& aErrorActions, CMsvSysAgentActions& aSysAgentActions);
   72.51 +	IMPORT_C void LoadSettingsL(CSmsSettings& aSmsSettings);
   72.52 +	IMPORT_C void LoadSettingsL(CMsvScheduleSettings& aScheduleSettings, CMsvOffPeakTimes& aOffPeakTimes, CMsvSendErrorActions& aErrorActions, CMsvSysAgentActions& aSysAgentActions);
   72.53 +    IMPORT_C void SaveSettingsL(const CSmsSettings& aSmsSettings) const;
   72.54 +	IMPORT_C void SaveSettingsL(const CMsvScheduleSettings& aScheduleSettings, const CMsvOffPeakTimes& aOffPeakTimes, const CMsvSendErrorActions& aErrorActions, const CMsvSysAgentActions& aSysAgentActions) const;
   72.55 +
   72.56 +private:
   72.57 +	CSmsAccount();
   72.58 +	void ConstructL();
   72.59 +	void HandleSessionEventL(TMsvSessionEvent , TAny* , TAny* , TAny* );
   72.60 +	CMsvSession& SessionL();	
   72.61 +	
   72.62 +	TMsvId CreateSmsServiceL();
   72.63 +	void ResetSettings();
   72.64 +
   72.65 +private:
   72.66 +	enum TSmsSettingsCenRepId
   72.67 +		{
   72.68 +		// Service Settings		
   72.69 +		ESmsServiceId					= 0x00000000,
   72.70 +		ESmsSettingsVersionId			= 0x00000001,
   72.71 +		ESmsSettingsMesssageVersionId	= 0x00000002,
   72.72 +		ESmsValidityPeriodId			= 0x00000003,
   72.73 +		ESmsValidityPeriodFormatId	   	= 0x00000004,     	
   72.74 +		ESmsAlphabetId					= 0x00000005,
   72.75 +		ESmsMsgFlagsId					= 0x00000006,
   72.76 +		ESmsMessageConversionId			= 0x00000007,
   72.77 +		ESmsFlagsId						= 0x00000008,
   72.78 +		ESmsStatusReportHandlingId		= 0x00000009,
   72.79 +		ESmsSpecialMessageHandlingId	= 0x0000000A,
   72.80 +		ESmsCommDbActionId				= 0x0000000B,
   72.81 +		ESmsDeliveryId					= 0x0000000C,
   72.82 +		ESmsDefaultSCId					= 0x0000000D,
   72.83 +		ESmsSCAddressesCountId			= 0x0000000E,
   72.84 +		ESmsBearerActionId				= 0x0000000F,
   72.85 +		ESmsBearerId					= 0x00000010,
   72.86 +		ESmsClass2FolderId				= 0x00000020,
   72.87 +		ESmsDescriptionLengthId			= 0x00000030,
   72.88 +		ESmsAccountNameId				= 0x00000040,
   72.89 +		
   72.90 +		ESmsSCAddressesPartialId		= 0x00001000,
   72.91 +		EMsgSMSTimeStampSettings		= 0x000A0020
   72.92 +		};
   72.93 +
   72.94 +private:
   72.95 +	CMsvSession* iMsvSession;
   72.96 +	CRepository* iRepository;
   72.97 +	};
   72.98 +
   72.99 +#endif // __CSMSACCOUNT_H__
    73.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.2 +++ b/epoc32/include/app/csmsemailfields.h	Wed Mar 31 12:27:01 2010 +0100
    73.3 @@ -0,0 +1,65 @@
    73.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
    73.5 +// All rights reserved.
    73.6 +// This component and the accompanying materials are made available
    73.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    73.8 +// which accompanies this distribution, and is available
    73.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   73.10 +//
   73.11 +// Initial Contributors:
   73.12 +// Nokia Corporation - initial contribution.
   73.13 +//
   73.14 +// Contributors:
   73.15 +//
   73.16 +// Description:
   73.17 +//
   73.18 +
   73.19 +#ifndef __CSMSEMAILFIELDS_H__
   73.20 +#define __CSMSEMAILFIELDS_H__
   73.21 +
   73.22 +#include <e32base.h>
   73.23 +#include <s32file.h>
   73.24 +#include <badesca.h>
   73.25 +
   73.26 +class CMsvStore;
   73.27 +
   73.28 +/**
   73.29 +Encapsulates the address and subject fields for Email sent over SMS.
   73.30 +
   73.31 +@publishedAll
   73.32 +@released
   73.33 +*/
   73.34 +class CSmsEmailFields : public CBase
   73.35 +	{
   73.36 +public:
   73.37 +	IMPORT_C static CSmsEmailFields* NewL();
   73.38 +	IMPORT_C static CSmsEmailFields* NewL(const CSmsEmailFields& aEmailFields);
   73.39 +	IMPORT_C virtual ~CSmsEmailFields();
   73.40 +
   73.41 +	IMPORT_C void Reset();
   73.42 +	IMPORT_C TInt Length() const;
   73.43 +	IMPORT_C TBool HasAddress() const;
   73.44 +	IMPORT_C HBufC* ComposeLC() const;
   73.45 +	TInt ParseL(const TDesC& aBuffer);
   73.46 +
   73.47 +	IMPORT_C void AddAddressL(const TDesC& aAddress);
   73.48 +	IMPORT_C void RemoveAddress(TInt aIndex);
   73.49 +	IMPORT_C const MDesCArray& Addresses() const;
   73.50 +	
   73.51 +	IMPORT_C void SetSubjectL(const TDesC& aSubject);
   73.52 +	IMPORT_C const TDesC& Subject() const;
   73.53 +	
   73.54 +	void RestoreL(CMsvStore& aStore);
   73.55 +	void StoreL(CMsvStore& aStore) const;
   73.56 +private:
   73.57 +	CSmsEmailFields();
   73.58 +	void ConstructL();
   73.59 +	void ConstructL(const CSmsEmailFields& aEmailFields);
   73.60 +
   73.61 +	void InternalizeL(RReadStream& aStream);
   73.62 +	void ExternalizeL(RWriteStream& aStream) const;
   73.63 +private:	
   73.64 +	CDesCArray*		iAddresses;
   73.65 +	HBufC*			iSubject;
   73.66 +	};
   73.67 +
   73.68 +#endif	// __CSMSEMAILFIELDS_H__
    74.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.2 +++ b/epoc32/include/app/hlplch.h	Wed Mar 31 12:27:01 2010 +0100
    74.3 @@ -0,0 +1,98 @@
    74.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
    74.5 +// All rights reserved.
    74.6 +// This component and the accompanying materials are made available
    74.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    74.8 +// which accompanies this distribution, and is available
    74.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   74.10 +//
   74.11 +// Initial Contributors:
   74.12 +// Nokia Corporation - initial contribution.
   74.13 +//
   74.14 +// Contributors:
   74.15 +//
   74.16 +// Description:
   74.17 +// Help Launcher module
   74.18 +// 
   74.19 +//
   74.20 +
   74.21 +#ifndef __HLPLCH_H__
   74.22 +#define __HLPLCH_H__
   74.23 +
   74.24 +#if !defined(__APGTASK_H__)
   74.25 +#include <apgtask.h>
   74.26 +#endif
   74.27 +
   74.28 +#if !defined(__EIKDLL_H__)
   74.29 +#include <eikdll.h>
   74.30 +#endif
   74.31 +
   74.32 +#if !defined(__WSERV_H__)
   74.33 +#include <w32std.h>
   74.34 +#endif
   74.35 +
   74.36 +#if !defined(__COEHELP_H__)
   74.37 +#include <coehelp.h>
   74.38 +#endif
   74.39 +
   74.40 +/** Help application UID. 
   74.41 +@internalComponent
   74.42 +@released
   74.43 +*/
   74.44 +const TUid KHlpAppUid={ 0x10005234 };
   74.45 +
   74.46 +/** UID of window message to send to application. 
   74.47 +@internalComponent
   74.48 +@released
   74.49 +*/
   74.50 +const TUid KHlpAppWsMsg={ 0x100055c7 };
   74.51 +
   74.52 +/** Maximum length of command line to launch application. 
   74.53 +@internalComponent
   74.54 +@released
   74.55 +*/
   74.56 +const TInt KMaxCmdLineLength = 512;
   74.57 +
   74.58 +// resource file name
   74.59 +_LIT(KHelpLauncherResource, "z:\\resource\\apps\\lch.rsc");
   74.60 +
   74.61 +class CHlpCmdLine : public CBase
   74.62 +/**
   74.63 +@internalComponent
   74.64 +@released
   74.65 +*/
   74.66 +	{
   74.67 +public:
   74.68 +	static CHlpCmdLine* NewL(CArrayFix<TCoeHelpContext>* aContextList);
   74.69 +	static CHlpCmdLine* NewLC(CArrayFix<TCoeHelpContext>* aContextList);
   74.70 +	~CHlpCmdLine();
   74.71 +public:
   74.72 +	TPtr8 CmdLineL();
   74.73 +private:
   74.74 +	void BuildCmdLineL();
   74.75 +	void AddContextL(TCoeHelpContext& aContext);
   74.76 +private:
   74.77 +	void ConstructL();
   74.78 +	CHlpCmdLine(CArrayFix<TCoeHelpContext>* aContextList);
   74.79 +private:
   74.80 +	CArrayFix<TCoeHelpContext>* iContextList;
   74.81 +	CBufFlat* iCmdLine;
   74.82 +	};
   74.83 +
   74.84 +class HlpLauncher
   74.85 +/** Launches the help application.
   74.86 +
   74.87 +It assumes that such an application is at z:\\Sys\\Bin\\CsHelp.exe
   74.88 +
   74.89 +@publishedAll
   74.90 +@released
   74.91 +*/
   74.92 +	{
   74.93 +public:
   74.94 +	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession, CArrayFix<TCoeHelpContext>* aContextList);
   74.95 +	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession, TUid aUid);
   74.96 +	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession);
   74.97 +private:
   74.98 +	static void DoLaunchHelpApplicationL(RWsSession& aWsSession, const TDesC8& aCmdLine);
   74.99 +	};
  74.100 +
  74.101 +#endif
    75.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.2 +++ b/epoc32/include/app/hlpmodel.h	Wed Mar 31 12:27:01 2010 +0100
    75.3 @@ -0,0 +1,557 @@
    75.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    75.5 +// All rights reserved.
    75.6 +// This component and the accompanying materials are made available
    75.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    75.8 +// which accompanies this distribution, and is available
    75.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   75.10 +//
   75.11 +// Initial Contributors:
   75.12 +// Nokia Corporation - initial contribution.
   75.13 +//
   75.14 +// Contributors:
   75.15 +//
   75.16 +// Description:
   75.17 +//
   75.18 +
   75.19 +#ifndef __HLPMODEL_H
   75.20 +#define __HLPMODEL_H
   75.21 +
   75.22 +// System includes
   75.23 +#include <e32std.h>
   75.24 +#include <badesca.h>	// For MDesCArray
   75.25 +#include <txtmrtsr.h>	// For MRichTextStoreResolver
   75.26 +#include <gdi.h>		// For MPictureFactory
   75.27 +#include <d32dbms.h>
   75.28 +
   75.29 +// Help model includes
   75.30 +#include "hlpconstants.h"
   75.31 +
   75.32 +// Classes referenced
   75.33 +class CRichText;
   75.34 +class CHlpDatabase;
   75.35 +class CHlpFileEntry;
   75.36 +class CHlpSQLSearch;
   75.37 +class TCoeHelpContext;
   75.38 +class CParaFormatLayer;
   75.39 +class CCharFormatLayer;
   75.40 +class CHlpPicture;
   75.41 +
   75.42 +// Typedefs
   75.43 +/**
   75.44 +@internalComponent
   75.45 +@released
   75.46 +*/
   75.47 +typedef CArrayPtrFlat<CHlpDatabase> CHlpDatabases;
   75.48 +
   75.49 +/**
   75.50 +@internalComponent
   75.51 +@released
   75.52 +*/
   75.53 +typedef CArrayPtrFlat<CHlpFileEntry> CHlpFileList;
   75.54 +
   75.55 +
   75.56 +class MHlpModelObserver
   75.57 +/** Client callback inteface to receive events from the help model. 
   75.58 +@publishedAll
   75.59 +@released
   75.60 +*/
   75.61 +	{
   75.62 +public:
   75.63 +	/** Receives a help model event.
   75.64 +	
   75.65 +	@param aEvent Help model event. Events are listed in the enums that begin 
   75.66 +	ECategoryListAvailable, and ENoRecordsFound. */
   75.67 +	virtual void HandleModelEventL(TInt aEvent) = 0;
   75.68 +	};
   75.69 +
   75.70 +//
   75.71 +// Internal API to handle events reported by the search engine
   75.72 +//
   75.73 +class MHlpDbObserver
   75.74 +/**
   75.75 +@internalComponent
   75.76 +@released
   75.77 +*/
   75.78 +	{
   75.79 +public: // TInt aEvent should be a named enum
   75.80 +	virtual void HandleDbEventL(TInt aEvent) = 0;
   75.81 +	};
   75.82 +
   75.83 +//
   75.84 +// Search types (these should be named, but SC cannot be broken until v7.0
   75.85 +//
   75.86 +/** Defines the search types for use with CHlpModel::SearchL(). */
   75.87 +enum
   75.88 +	{
   75.89 +	/** Gets a list of index entries for all help files.
   75.90 +
   75.91 +	Success is indicated by an EIndexListAvailable event; failure by EIndexListNoneFound. 
   75.92 +	The list can be retrieved using CHlpModel::LoadListL(). */
   75.93 +	EIndexList,
   75.94 +	/** Gets a list of categories for all help files.
   75.95 +
   75.96 +	Success is indicated by an ECategoryListAvailable event; failure by ECategoryListNoneFound. 
   75.97 +	The list can be retrieved using CHlpModel::CategoryListL(). */
   75.98 +	ECategoryList,
   75.99 +	/** Gets a list of topics for a specified category.
  75.100 +
  75.101 +	Success is indicated by an ETopicListAvailable event; failure by ETopicListNoneFound. 
  75.102 +	The list can be retrieved using CHlpModel::LoadListL(). */
  75.103 +	ETopicListForCategory,
  75.104 +	/** Gets a list of topics for a specified category UID.
  75.105 +
  75.106 +	Success is indicated by an ETopicListAvailable event; failure by ETopicListNoneFound. 
  75.107 +	The list can be retrieved using CHlpModel::LoadListL(). */
  75.108 +	ETopicListForCategoryUID,
  75.109 +	/** Searches for a topic with the specified help context.
  75.110 +
  75.111 +	A successful search generates an ETopicAvailable event. The topic can then be retrieved 
  75.112 +	using CHlpModel::LoadTopicL(). An unsuccessful search generates an ETopicNotFound event. */
  75.113 +	EContextSearch,
  75.114 +	/** Searches for index entries for the specified help item.
  75.115 +
  75.116 +	A successful search generates an ETopicListAvailable event. The list can then be retrieved 
  75.117 +	using CHlpModel::LoadListL(). An unsuccessful search generates an ETopicListNoneFound event. */
  75.118 +	EIndexSearch,
  75.119 +	/** Searches the topic titles for the specified text.
  75.120 +
  75.121 +	A successful search generates an ESearchListAvailable event. The list can then be 
  75.122 +	retrieved using CHlpModel::LoadListL(). An unsuccessful search generates an 
  75.123 +	ESearchListNoneFound event. */
  75.124 +	EQuickSearch,
  75.125 +	/** Searches the full text of topics for the specified text.
  75.126 +
  75.127 +	A successful search generates an ESearchListAvailable event. The list can then be 
  75.128 +	retrieved using CHlpModel::LoadListL(). An unsuccessful search generates an 
  75.129 +	ESearchListNoneFound event. */
  75.130 +	EFullTextSearch,
  75.131 +	/** Searches for a topic with the specified ID.
  75.132 +
  75.133 +	A successful search generates an ETopicAvailable event. The topic can then be 
  75.134 +	retrieved using CHlpModel::LoadTopicL(). An unsuccessful search generates an 
  75.135 +	ETopicNotFound event. */
  75.136 +	ETopicIdSearch
  75.137 +	};
  75.138 +
  75.139 +//
  75.140 +// Search progress responses (this should be scoped as members of MHlpModelObserver
  75.141 +// and should also be named, but SC cannot be broken until v7.0
  75.142 +//
  75.143 +enum
  75.144 +	{
  75.145 +	ENoRecordsFound,
  75.146 +	ESearchInProgress,
  75.147 +	ESearchComplete
  75.148 +	};
  75.149 +
  75.150 +//
  75.151 +// Search progress responses (ditto for naming and scoping)
  75.152 +//
  75.153 +/** Help model search result events*/
  75.154 +enum
  75.155 +	{
  75.156 +	/** The search returned a category list.
  75.157 +
  75.158 +	The list can be retrieved using CHlpModel::CategoryListL(). */
  75.159 +	ECategoryListAvailable,	
  75.160 +	/** The search did not return a category list. */
  75.161 +	ECategoryListNoneFound,
  75.162 +	/** The search returned a results list.
  75.163 +
  75.164 +	The list can be retrieved using CHlpModel::LoadListL(). */
  75.165 +	ESearchListAvailable,
  75.166 +	/** The search did not return a results list. */
  75.167 +	ESearchListNoneFound,
  75.168 +	/** The search returned a topic list.
  75.169 +
  75.170 +	The list can be retrieved using CHlpModel::LoadListL(). */
  75.171 +	ETopicListAvailable,		// Category expansion
  75.172 +	/** The search did not return a topic list. */
  75.173 +	ETopicListNoneFound,
  75.174 +	/** The search returned an index item list.
  75.175 +
  75.176 +	The list can be retrieved using CHlpModel::LoadListL(). */
  75.177 +	EIndexListAvailable,
  75.178 +	/** The search did not return an index item list. */
  75.179 +	EIndexListNoneFound,
  75.180 +	/** The search returned a topic list from an index phrase search.
  75.181 +
  75.182 +	The list can be retrieved using CHlpModel::LoadListL(). */
  75.183 +	EIndexSearchListAvailable,
  75.184 +	/** The search did not return a topic list from an index phrase search. */
  75.185 +	EIndexSearchListNoneFound,
  75.186 +	/** The search returned a topic.
  75.187 +
  75.188 +	The topic can be retrieved using CHlpModel::LoadTopicL(). */
  75.189 +	ETopicAvailable,
  75.190 +	/** The search did not return a topic. */
  75.191 +	ETopicNotFound,
  75.192 +	/** The search is in progress. */
  75.193 +	EModelSearchInProgress,
  75.194 +	/** The search has been cancelled. */
  75.195 +	EHlpSearchCancelled
  75.196 +	};
  75.197 +
  75.198 +/** Defines help model zoom sizes. */
  75.199 +enum THlpZoomState
  75.200 +	{
  75.201 +	/** Small zoom. */
  75.202 +	EHlpZoomStateSmall = 0,
  75.203 +	/** Medium zoom. */
  75.204 +	EHlpZoomStateMedium = 1,
  75.205 +	/** Large zoom. */
  75.206 +	EHlpZoomStateLarge = 2
  75.207 +	};
  75.208 +
  75.209 +// Constants
  75.210 +const TInt KHlpModelDefaultNumberOfImagesForV6Point2Files = 1;
  75.211 +const TInt KHlpModelMaximumNumberOfImagesForV6Point2Files = 3;
  75.212 +//
  75.213 +/** Default zoom factor for small zoom size. */
  75.214 +const TInt KHlpModelZoomFactorSmall = 750;
  75.215 +/** Default zoom factor for medium zoom size. */
  75.216 +const TInt KHlpModelZoomFactorMedium = 1000;
  75.217 +/** Default zoom factor for large zoom size. */
  75.218 +const TInt KHlpModelZoomFactorLarge = 1250;
  75.219 +//
  75.220 +/** Default zoom factor for medium zoom size as real number. */
  75.221 +const TReal KHlpModelDefaultZoomFactorAsRealNumber = 1000.0;
  75.222 +
  75.223 +
  75.224 +class CHlpItem : public CBase
  75.225 +/** Encapsulates an individual item in a help file.
  75.226 +
  75.227 +Note that item IDs are assigned in increasing numerical order by the help 
  75.228 +compiler and are not unique. Categories and help files are however specified 
  75.229 +by UID, and so are unique. 
  75.230 +@publishedAll
  75.231 +@released
  75.232 +*/
  75.233 +	{
  75.234 +public:
  75.235 +	static CHlpItem* NewL(const TDesC& aTitle, TUint32 aId, TUid aCategoryId, TUid aHelpFileUid);
  75.236 +	static CHlpItem* NewLC(const TDesC& aTitle, TUint32 aId, TUid aCategoryId, TUid aHelpFileUid);
  75.237 +	static CHlpItem* NewLC(const TDesC& aTitle, TUint32 aId, TUid aHelpFileUid);
  75.238 +	IMPORT_C ~CHlpItem();
  75.239 +
  75.240 +public: // Access
  75.241 +	inline TUid CategoryUid() const 
  75.242 +	/** Gets the item's category ID.
  75.243 +	
  75.244 +	@return Category ID */
  75.245 +		{ return iCategoryUid; }
  75.246 +	inline TUid HelpFileUid() const 
  75.247 +	/** Gets the item's help file UID.
  75.248 +	
  75.249 +	@return Help file UID */
  75.250 +		{ return iHelpFileUid; }
  75.251 +	inline TUint32 Id() const 
  75.252 +	/** Gets the item's ID.
  75.253 +	
  75.254 +	@return Item's ID */
  75.255 +		{ return iId; }
  75.256 +	inline const TDesC& Title() const 
  75.257 +	/** Gets the item's title.
  75.258 +	
  75.259 +	@return Item's title */
  75.260 +		{ return *iTitle; }
  75.261 +
  75.262 +public: // These should not be public, but I can't break SC (these were inherited from
  75.263 +		// the previous author.
  75.264 +	/** Item's title */
  75.265 +	HBufC* iTitle;
  75.266 +	/** Item's ID */
  75.267 +	TUint32 iId;
  75.268 +
  75.269 +private:
  75.270 +	friend class CHlpList; // Needed for searching
  75.271 +	CHlpItem(TUint32 aId);
  75.272 +	CHlpItem(TUint32 aId, TUid aHelpFileUid);
  75.273 +	CHlpItem(TUint32 aId, TUid aCategoryId, TUid aHelpFileUid);
  75.274 +	void ConstructL(const TDesC& aTitle);
  75.275 +
  75.276 +private: // Meta data required for correct restoration of topics
  75.277 +	TUid iCategoryUid;
  75.278 +	TUid iHelpFileUid;
  75.279 +	};
  75.280 +
  75.281 +
  75.282 +
  75.283 +///////////////////////////////////////////////////////////////////////////////////////
  75.284 +// ----> MHlpTitleArray 
  75.285 +///////////////////////////////////////////////////////////////////////////////////////
  75.286 +class MHlpTitleArray : public MDesCArray
  75.287 +/** Interface to get a topic ID from an array index. 
  75.288 +@publishedAll
  75.289 +@released
  75.290 +*/
  75.291 +	{
  75.292 +public:
  75.293 +	/** Gets a topic ID for the specified index.
  75.294 +	
  75.295 +	@param aIndex Index of item to get
  75.296 +	@return Topic ID */
  75.297 +	virtual TUint32 At(TInt aIndex) const = 0;
  75.298 +	};
  75.299 +
  75.300 +
  75.301 +
  75.302 +///////////////////////////////////////////////////////////////////////////////////////
  75.303 +// ----> CHlpList 
  75.304 +///////////////////////////////////////////////////////////////////////////////////////
  75.305 +class CHlpList : public CBase, public MHlpTitleArray
  75.306 +/** A list of help items (CHlpItem objects). 
  75.307 +@publishedAll
  75.308 +@released
  75.309 +*/
  75.310 +	{
  75.311 +public: // Static construct / destruct
  75.312 +	IMPORT_C static CHlpList* NewL();
  75.313 +	IMPORT_C static CHlpList* NewLC();
  75.314 +	IMPORT_C ~CHlpList();
  75.315 +
  75.316 +public: // From MDesCArray
  75.317 +	IMPORT_C TInt MdcaCount() const;
  75.318 +	IMPORT_C TPtrC MdcaPoint(TInt aIndex) const;
  75.319 +
  75.320 +public:
  75.321 +	// 'At' returns topic Id, but this function is next to useless because you can't
  75.322 +	// uniquely identify a help topic by topic id alone. You need to know 3 things:-
  75.323 +	// a) topic id, 2) category id, 3) help file uid. This information is all
  75.324 +	// encapsulated in CHlpItem so help app authors should use 'Item' instead.
  75.325 +	IMPORT_C TUint32 At(TInt aIndex) const;
  75.326 +	IMPORT_C CHlpItem* Item(TInt aIndex) const;
  75.327 +	IMPORT_C TInt Find(TUint32 aId);
  75.328 +	IMPORT_C void Reset();
  75.329 +	IMPORT_C void AppendL(CHlpItem* aItem);
  75.330 +
  75.331 +private: // 2nd phase constructor
  75.332 +	void ConstructL();
  75.333 +
  75.334 +private:
  75.335 +	// This is the array of help items that were located as a result of
  75.336 +	// performing a search.
  75.337 +	CArrayPtr<CHlpItem>* iList;
  75.338 +	};
  75.339 +
  75.340 +
  75.341 +
  75.342 +///////////////////////////////////////////////////////////////////////////////////////
  75.343 +// ----> CHlpTopic 
  75.344 +///////////////////////////////////////////////////////////////////////////////////////
  75.345 +class CHlpTopic : public CBase
  75.346 +/** Encapsulates a help topic.
  75.347 +
  75.348 +A help topic has text, a title, a category, and paragraph and character formatting. 
  75.349 +@publishedAll
  75.350 +@released
  75.351 +*/
  75.352 +	{
  75.353 +public:
  75.354 +	IMPORT_C static CHlpTopic* NewL();
  75.355 +	IMPORT_C static CHlpTopic* NewLC();
  75.356 +	IMPORT_C ~CHlpTopic();
  75.357 +
  75.358 +public: 
  75.359 +	// This function will not behave as expected in the case where it is used to 
  75.360 +	// restore rich text that includes pictures. Instead, only the text and markup
  75.361 +	// will be restored. Help App authors should use 'CHlpModel::LoadTopic' instead.
  75.362 +	// I can't remove this as it would break S&BC.
  75.363 +	IMPORT_C void RestoreL(RDbView* aView);
  75.364 +	
  75.365 +	IMPORT_C CRichText* TopicText();
  75.366 +	IMPORT_C TDesC& TopicTitle();
  75.367 +	IMPORT_C TDesC& Category();
  75.368 +
  75.369 +	inline CParaFormatLayer* ParaFormatLayer() const 
  75.370 +	/** Gets the topic paragraph formatting.
  75.371 +	
  75.372 +	@return Topic paragraph formatting */
  75.373 +		{ return iGlobalParaFormatLayer; }
  75.374 +	inline CCharFormatLayer* CharFormatLayer() const 
  75.375 +	/** Gets the topic character formatting.
  75.376 +	
  75.377 +	@return Topic character formatting */
  75.378 +		{ return iGlobalCharFormatLayer; }
  75.379 +
  75.380 +private:
  75.381 +	void ConstructL();
  75.382 +
  75.383 +private:
  75.384 +	friend class CHlpModel;
  75.385 +
  75.386 +	TUint32 iTopicId;
  75.387 +	TBuf<KMaxTitleColumn> iTopicTitle;
  75.388 +	TBuf<KMaxTitleColumn> iCategory;
  75.389 +
  75.390 +	CRichText* iTopicText;
  75.391 +	CParaFormatLayer* iGlobalParaFormatLayer;  
  75.392 +	CCharFormatLayer* iGlobalCharFormatLayer; 
  75.393 +	};
  75.394 +
  75.395 +
  75.396 +
  75.397 +
  75.398 +///////////////////////////////////////////////////////////////////////////////////////
  75.399 +// ----> CHlpModel 
  75.400 +///////////////////////////////////////////////////////////////////////////////////////
  75.401 +class CHlpModel : public CBase, public MHlpDbObserver, public MPictureFactory, public MRichTextStoreResolver
  75.402 +/** Help model interface.
  75.403 +
  75.404 +It provides functions to search help files in various ways.
  75.405 +
  75.406 +The interface implements MHlpDbObserver for help database events, and MRichTextStoreResolver 
  75.407 +and MPictureFactory to obtain pictures from rich text stores. 
  75.408 +@publishedAll
  75.409 +@released
  75.410 +*/
  75.411 +	{
  75.412 +public: // Construct / destruct
  75.413 +	IMPORT_C static CHlpModel* NewL(RFs& aFs, MHlpModelObserver* aObserver);
  75.414 +	IMPORT_C static CHlpModel* NewLC(RFs& aFs, MHlpModelObserver* aObserver);
  75.415 +	IMPORT_C ~CHlpModel();
  75.416 +
  75.417 +public:	// Opens all the help files in \System\Help
  75.418 +	IMPORT_C void OpenL();
  75.419 +	IMPORT_C void CloseL();
  75.420 +
  75.421 +public: // Opens specific help files
  75.422 +	IMPORT_C void OpenFileL(const TDesC& aFileName);
  75.423 +	IMPORT_C void CloseFileL(const TDesC& aFileName);
  75.424 +
  75.425 +public: // Specialized searching
  75.426 +	IMPORT_C void ContextSearchL(TCoeHelpContext& aContext);
  75.427 +	IMPORT_C void CategoryUIDSearchL(TUid aCategoryUID);
  75.428 +	IMPORT_C void TopicSearchL(const CHlpItem& aHelpItem);
  75.429 +	IMPORT_C void IndexSearchL(const CHlpItem& aHelpItem);
  75.430 +
  75.431 +		// Generic searching
  75.432 +	IMPORT_C void SearchL(TInt aType, TUint32 aId);
  75.433 +	IMPORT_C void SearchL(TInt aType, HBufC* aCriterion=NULL);
  75.434 +	IMPORT_C void SearchL(TInt aType, const TDesC& aCriterion);
  75.435 +
  75.436 +public: // Cancel EFullTextSearch types - will return KErrArgument if not the correct type
  75.437 +	IMPORT_C TInt CancelSearch();
  75.438 +
  75.439 +public: // Assumes that the search has already been performed and that the view is valid
  75.440 +	IMPORT_C void LoadTopicL(CRichText& aRichText, TDes& aTitle);
  75.441 +	IMPORT_C void LoadTopicL(CRichText& aRichText);
  75.442 +	IMPORT_C void LoadTopicL(CHlpTopic* aTopic);
  75.443 +	IMPORT_C void LoadListL(CHlpList* aList);
  75.444 +	IMPORT_C void CategoryListL(CDesCArray* aList);
  75.445 +
  75.446 +public:	
  75.447 +	IMPORT_C void SetZoomSizeL(THlpZoomState aState = EHlpZoomStateMedium);
  75.448 +	IMPORT_C THlpZoomState ZoomSize() const;
  75.449 +	IMPORT_C void SetZoomFactors(THlpZoomState aZoomState, TInt aFactor);
  75.450 +	TInt CurrentZoomFactor() const;
  75.451 +	void RemoveHelpPicture(CHlpPicture* aHelpPicture);
  75.452 +
  75.453 +public: // FROM MPictureFactory
  75.454 +	void NewPictureL(TPictureHeader& aHdr, const CStreamStore& aDeferredPictureStore) const;
  75.455 +
  75.456 +public: // FROM MRichTextStoreResolver
  75.457 +	IMPORT_C const CStreamStore& StreamStoreL(TInt aPos) const;
  75.458 +
  75.459 +public:
  75.460 +	// Check to see if any of the databases have matching meta data
  75.461 +	IMPORT_C TInt MatchUidL(TUid aUid);
  75.462 +
  75.463 +	// Replace the current observer with another
  75.464 +	IMPORT_C void SetObserver(MHlpModelObserver* aObserver);
  75.465 +
  75.466 +public:
  75.467 +	void NotifyHelpModelDestructionToPictures();
  75.468 +
  75.469 +private: // Internal search API
  75.470 +	void DoSearchL(TInt aType, const TDesC& aCriterion);
  75.471 +	void DoNextSearchL();
  75.472 +	void ResetReadyForSearch();
  75.473 +	void ResetViews();
  75.474 +	void SetCriterionL(const TDesC& aCriterion);
  75.475 +
  75.476 +private: // Event management
  75.477 +	void HandleDbEventL(TInt aEvent);
  75.478 +	void ReportEventToObserverL(TInt aEvent);
  75.479 +
  75.480 +private: // Misc internal functions
  75.481 +	inline CHlpDatabase* CurrentDatabase() const;
  75.482 +	inline TInt DatabaseCount() const;
  75.483 +	inline void SetSearchType(TInt aSearchType);
  75.484 +	inline TInt CurrentSearchType() const;
  75.485 +	RDbView* CurrentView() const;
  75.486 +	TBool DiskPresent(TInt aDrive) const;
  75.487 +	CHlpFileList* BuildListForDriveLC(TDriveUnit aDrive, RFs& aFsSession) const;
  75.488 +	static void ResetAndDestroyArrayOfCHlpFileEntry(TAny* aObject);
  75.489 +
  75.490 +private:
  75.491 +	CHlpModel(RFs& aFs, MHlpModelObserver& aObserver);
  75.492 +	void ConstructL();
  75.493 +
  75.494 +private: // Member data
  75.495 +	RFs& iFsSession;
  75.496 +	
  75.497 +	// This is required in order to restore rich text pictures from the database
  75.498 +	CStreamStore* iCurrentRichTextStore;
  75.499 +	
  75.500 +	// Creates our SQL string based upon the search type and criteria
  75.501 +	CHlpSQLSearch* iSearch;
  75.502 +
  75.503 +	// An array of all the help files currently available
  75.504 +	CHlpDatabases* iDatabases;
  75.505 +
  75.506 +	// Receives help model notifications as various actions are performed
  75.507 +	MHlpModelObserver* iObserver;
  75.508 +
  75.509 +	// Were any matching results found for this search
  75.510 +	TBool iFound;
  75.511 +
  75.512 +	// What was being searched for
  75.513 +	HBufC* iCriterion;
  75.514 +
  75.515 +	// What type of search was being performed
  75.516 +	TInt iSearchType;
  75.517 +
  75.518 +	// Which database are we currently searching
  75.519 +	TInt iCurrentDb;
  75.520 +
  75.521 +	// Transient category Uid used when creating category lists
  75.522 +	TUid iTransientCategoryUid;
  75.523 +
  75.524 +	// What zoom size is used
  75.525 +	THlpZoomState iZoomSize;
  75.526 +
  75.527 +	// Array to hold the bitmaps that are currently used in the help rich text
  75.528 +	CArrayPtr<CHlpPicture>* iPictures;
  75.529 +
  75.530 +	// Array to hold the zoom factors that correspond to each zoom size
  75.531 +	CArrayFix<TInt>* iZoomFactors;
  75.532 +	};
  75.533 +
  75.534 +
  75.535 +
  75.536 +
  75.537 +
  75.538 +///////////////////////////////////////////////////////////////////////////////////////
  75.539 +// ----> CHlpModel (inlines)
  75.540 +///////////////////////////////////////////////////////////////////////////////////////
  75.541 +inline TInt CHlpModel::DatabaseCount() const
  75.542 +	{
  75.543 +	return iDatabases->Count();
  75.544 +	}
  75.545 +inline void CHlpModel::SetSearchType(TInt aSearchType)
  75.546 +	{
  75.547 +	iSearchType = aSearchType;
  75.548 +	}
  75.549 +inline CHlpDatabase* CHlpModel::CurrentDatabase() const
  75.550 +	{
  75.551 +	return iDatabases->At(iCurrentDb);
  75.552 +	}
  75.553 +inline TInt CHlpModel::CurrentSearchType() const
  75.554 +	{
  75.555 +	return iSearchType;
  75.556 +	}
  75.557 +
  75.558 +
  75.559 +
  75.560 +#endif
    76.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.2 +++ b/epoc32/include/app/hlpzoom.h	Wed Mar 31 12:27:01 2010 +0100
    76.3 @@ -0,0 +1,83 @@
    76.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
    76.5 +// All rights reserved.
    76.6 +// This component and the accompanying materials are made available
    76.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    76.8 +// which accompanies this distribution, and is available
    76.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   76.10 +//
   76.11 +// Initial Contributors:
   76.12 +// Nokia Corporation - initial contribution.
   76.13 +//
   76.14 +// Contributors:
   76.15 +//
   76.16 +// Description:
   76.17 +//
   76.18 +
   76.19 +#ifndef __HLPZOOM_H__
   76.20 +#define __HLPZOOM_H__
   76.21 +
   76.22 +// System includes
   76.23 +#include <e32std.h>
   76.24 +
   76.25 +// Classes referenced
   76.26 +class MGraphicsDeviceMap;
   76.27 +
   76.28 +
   76.29 +///////////////////////////////////////////////////////////////////////////////////////
   76.30 +// ----> MHlpZoomStateManager (header)
   76.31 +///////////////////////////////////////////////////////////////////////////////////////
   76.32 +class MHlpZoomStateManager
   76.33 +/**
   76.34 +@internalComponent
   76.35 +@released
   76.36 +*/
   76.37 +	{
   76.38 +public: // Zoom state
   76.39 +	enum THlpZoomState
   76.40 +		{
   76.41 +		EHlpZoomStateSmall = -1,
   76.42 +		EHlpZoomStateNormal = 0,
   76.43 +		EHlpZoomStateLarge = 1
   76.44 +		};
   76.45 +
   76.46 +public: // From MHlpZoomStateManager
   76.47 +	virtual void SetZoomState(THlpZoomState aState) = 0;
   76.48 +	virtual THlpZoomState ZoomState() const = 0;
   76.49 +
   76.50 +public: // From MHlpZoomStateManager
   76.51 +	virtual MGraphicsDeviceMap& ZoomDeviceMap() const = 0;
   76.52 +	virtual TInt ZoomFactorValueForZoomState(THlpZoomState aState) const = 0;
   76.53 +	};
   76.54 +
   76.55 +
   76.56 +
   76.57 +///////////////////////////////////////////////////////////////////////////////////////
   76.58 +// ----> MHlpZoomStateObserver (header)
   76.59 +///////////////////////////////////////////////////////////////////////////////////////
   76.60 +class MHlpZoomStateObserver
   76.61 +/**
   76.62 +@internalComponent
   76.63 +@released
   76.64 +*/
   76.65 +	{
   76.66 +public: // From MHlpZoomStateObserver
   76.67 +	virtual void HandleZoomStateChangedL(MHlpZoomStateManager::THlpZoomState aZoomState) = 0;
   76.68 +	};
   76.69 +
   76.70 +
   76.71 +
   76.72 +///////////////////////////////////////////////////////////////////////////////////////
   76.73 +// ----> MHlpZoomStateChangeNotifier (header)
   76.74 +///////////////////////////////////////////////////////////////////////////////////////
   76.75 +class MHlpZoomStateChangeNotifier : public MHlpZoomStateManager
   76.76 +/**
   76.77 +@internalComponent
   76.78 +@released
   76.79 +*/
   76.80 +	{
   76.81 +public: // From MHlpZoomStateChangeNotifier
   76.82 +	virtual void RegisterForZoomStateChangeNotificationsL(MHlpZoomStateObserver& aObserver) = 0;
   76.83 +	virtual void RegisterForZoomStateChangeNotificationsCancel(MHlpZoomStateObserver& aObserver) = 0;
   76.84 +	};
   76.85 +
   76.86 +#endif
    77.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.2 +++ b/epoc32/include/app/iapprefs.h	Wed Mar 31 12:27:01 2010 +0100
    77.3 @@ -0,0 +1,132 @@
    77.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    77.5 +// All rights reserved.
    77.6 +// This component and the accompanying materials are made available
    77.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    77.8 +// which accompanies this distribution, and is available
    77.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   77.10 +//
   77.11 +// Initial Contributors:
   77.12 +// Nokia Corporation - initial contribution.
   77.13 +//
   77.14 +// Contributors:
   77.15 +//
   77.16 +// Description:
   77.17 +//
   77.18 +
   77.19 +#ifndef IAPPrefs__
   77.20 +#define IAPPrefs__
   77.21 +
   77.22 + 
   77.23 +
   77.24 +
   77.25 +#include <e32base.h>
   77.26 +#include <msvapi.h>
   77.27 +#include <msvuids.h>
   77.28 +#include <cdbcols.h>
   77.29 +
   77.30 +// Note: Version 1 = EPOC6.1
   77.31 +//		 Version 2 = EPOC6.2 / Hurricane
   77.32 +const TInt KImIAPPreferencesVersion = 2;	// identify which version of this class has been stored
   77.33 +
   77.34 +// for builds which don't define it.
   77.35 +/*
   77.36 +enum TCommDbDialogPref
   77.37 +	{
   77.38 +	ECommDbDialogPrefUnknown =0,
   77.39 +	ECommDbDialogPrefPrompt,
   77.40 +	ECommDbDialogPrefWarn,
   77.41 +	ECommDbDialogPrefDoNotPrompt
   77.42 +	};
   77.43 +*/
   77.44 +
   77.45 +class TImIAPChoice
   77.46 +/** Sets the connection dialog preference to be used with a particular IAP used 
   77.47 +for an internet mail service.
   77.48 +
   77.49 +The connection control component (GenConn) allows various options for whether 
   77.50 +or not the user should be should be prompted with a dialog at connect time. 
   77.51 +For example, a connection using the first choice GPRS IAP might not show a 
   77.52 +dialog, but a second choice connection using GSM might bring up a warning. 
   77.53 +@publishedAll
   77.54 +@released
   77.55 +*/
   77.56 +	{
   77.57 +	public:
   77.58 +	/** The IAP identifier, as specified in the CommDb record for the IAP. */
   77.59 +	TUint32	iIAP;
   77.60 +	/** Preference for what type of dialog is shown before a connection is made using 
   77.61 +	the specified IAP. */
   77.62 +	TCommDbDialogPref iDialogPref;
   77.63 +	};
   77.64 +
   77.65 +class CImIAPPreferences : public CBase
   77.66 +/** Encapsulates preferences relating to IAPs for an email service.
   77.67 +
   77.68 +An IAP defines all of the variable factors that determine how an Internet 
   77.69 +connection is made. These variable factors can include the bearer (CDMA, GSM 
   77.70 +or GPRS), dial-in number. network login names and passwords. 
   77.71 +
   77.72 +The Comms Database is capable of storing details of several IAPs, which can 
   77.73 +then be used to initiate different types of connection. The database also 
   77.74 +stores the preference order of the IAPs: this defines which IAP should be 
   77.75 +used as the first choice, and also an optional second choice to be used if 
   77.76 +the first choice is not available.
   77.77 +
   77.78 +The CImIAPPreferences class associates a first choice, and optionally a second 
   77.79 +choice IAP to use with a particular email service. The preference object is 
   77.80 +stored in the service entry's message store.
   77.81 +
   77.82 +For SMTP, if no object has been stored in the service, then the SMTP client 
   77.83 +will attempt to use any default Internet settings in the Comms Database, or 
   77.84 +will use the existing Internet connection if one does already exist. Note 
   77.85 +that SMTP sessions will normally fail to send any email messages if the SMTP 
   77.86 +session is not created using an IAP which the SMTP server does not accept.
   77.87 +
   77.88 +Note that in Symbian OS v6.0 a single IAP was associated with an email service 
   77.89 +entry through the iMtmData1 field. 
   77.90 +@publishedAll
   77.91 +@released
   77.92 +*/
   77.93 +	{
   77.94 +	public:
   77.95 +		IMPORT_C static CImIAPPreferences* NewLC();
   77.96 +		IMPORT_C TInt Version() const;
   77.97 +		IMPORT_C TInt NumberOfIAPs() const;
   77.98 +		IMPORT_C TImIAPChoice IAPPreference(TInt aPreference) const;
   77.99 +		IMPORT_C void AddIAPL(TImIAPChoice aIap, TInt aIndex=0);
  77.100 +		IMPORT_C void RemoveIAPL(TInt aPreferenceNumber);
  77.101 +		IMPORT_C TInt FindIAPL(TUint32 aIAP, TInt &aLocation) const;
  77.102 +		IMPORT_C void ReplaceIAPL(TInt aPreferenceNumber,TImIAPChoice aIap);
  77.103 +		IMPORT_C ~CImIAPPreferences();
  77.104 +		IMPORT_C TBool SNAPDefined() const;
  77.105 +		IMPORT_C TUint32 SNAPPreference() const;
  77.106 +		IMPORT_C void SetSNAPL(TUint32 aSnap);
  77.107 +		IMPORT_C void RemoveSNAP();
  77.108 +		
  77.109 +		void Reset();
  77.110 +		
  77.111 +		// class constants
  77.112 +		/**
  77.113 +		@deprecated 
  77.114 +		*/
  77.115 +		enum 
  77.116 +			{
  77.117 +			KSanityCheckOldWins = 0xEFBEADDE,
  77.118 +			KSanityCheck = 0xDEADBEEF
  77.119 +			};
  77.120 +		/** ID of the stream used to store IAP preference information in a 
  77.121 +		message store. */
  77.122 +		const static TUid KUidMsgFileInternetAccessPreferences;
  77.123 +	private:
  77.124 +		CArrayFixFlat<TImIAPChoice>* iChoices;
  77.125 +		TInt iVersion;
  77.126 +		TUint32 iSnapId;
  77.127 +	private:
  77.128 +		CImIAPPreferences();
  77.129 +		CImIAPPreferences(CImIAPPreferences& aOther); // not implemented
  77.130 +		int operator=(CImIAPPreferences& aOther); // not implemented
  77.131 +		void ConstructL();
  77.132 +		void Panic(int err) const;
  77.133 +	};
  77.134 +
  77.135 +#endif
    78.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.2 +++ b/epoc32/include/app/imapcmds.h	Wed Mar 31 12:27:01 2010 +0100
    78.3 @@ -0,0 +1,1082 @@
    78.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    78.5 +// All rights reserved.
    78.6 +// This component and the accompanying materials are made available
    78.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    78.8 +// which accompanies this distribution, and is available
    78.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   78.10 +//
   78.11 +// Initial Contributors:
   78.12 +// Nokia Corporation - initial contribution.
   78.13 +//
   78.14 +// Contributors:
   78.15 +//
   78.16 +// Description:
   78.17 +//
   78.18 +
   78.19 +#if !defined (__IMAPCMDS_H__)
   78.20 +#define __IMAPCMDS_H__
   78.21 +
   78.22 +#if !defined (__MSVSTD_HRH__)
   78.23 +#include <msvstd.hrh>
   78.24 +#endif
   78.25 +
   78.26 +class TImap4RenameFolder
   78.27 +/** Buffer for an IMAP folder name. 
   78.28 +
   78.29 +@see KIMAP4MTMRenameFolder
   78.30 +
   78.31 +@publishedAll
   78.32 +@released
   78.33 +*/
   78.34 +	{
   78.35 +public:
   78.36 +	/** IMAP folder name. */
   78.37 +	TBuf<128> iNewName;
   78.38 +	};
   78.39 +
   78.40 +/** IMAP4-specific commands that can be issued through either 
   78.41 +CImap4ClientMtm::InvokeAsyncFunctionL() or, in a few cases, 
   78.42 +CImap4ClientMtm::InvokeSyncFunctionL().
   78.43 + 
   78.44 +These functions take an input message selection parameter 
   78.45 +(@c const CMsvEntrySelection& @c aSelection) and an input/output buffer parameter 
   78.46 +(TDes8& @c aParameter). The use of these parameters is command specific, and is 
   78.47 +described for each command below.
   78.48 +
   78.49 +The commands fall into a number of categories: 
   78.50 +
   78.51 +- Connect and logon to remote server:
   78.52 +  - #KIMAP4MTMConnect
   78.53 +  - #KIMAP4MTMDisconnect
   78.54 +- Synchronise headers:
   78.55 +  - #KIMAP4MTMCancelBackgroundSynchronise
   78.56 +  - #KIMAP4MTMConnectAndSyncCompleteAfterConnect
   78.57 +  - #KIMAP4MTMConnectAndSyncCompleteAfterDisconnect
   78.58 +  - #KIMAP4MTMConnectAndSyncCompleteAfterFullSync
   78.59 +  - #KIMAP4MTMConnectAndSynchronise
   78.60 +  - #KIMAP4MTMFolderFullSync
   78.61 +  - #KIMAP4MTMFullSync
   78.62 +  - #KIMAP4MTMInboxNewSync
   78.63 +  - #KIMAP4MTMSynchronise
   78.64 +  - #KIMAP4MTMWaitForBackground
   78.65 +- Subscribe to mailboxes:
   78.66 +  - #KIMAP4MTMLocalSubscribe
   78.67 +  - #KIMAP4MTMLocalUnsubscribe
   78.68 +- Populate messages:
   78.69 +  - #KIMAP4MTMPopulate
   78.70 +  - #KIMAP4MTMPopulateAllMailWhenAlreadyConnected
   78.71 +  - #KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected
   78.72 +  - #KIMAP4MTMPopulateNewMailWhenAlreadyConnected
   78.73 +  - #KIMAP4MTMConnectAndPopulateAllMailAndDisconnect
   78.74 +  - #KIMAP4MTMConnectAndPopulateAllMailAndStayOnline
   78.75 +  - #KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect
   78.76 +  - #KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline
   78.77 +  - #KIMAP4MTMConnectAndPopulateNewMailAndDisconnect
   78.78 +  - #KIMAP4MTMConnectAndPopulateNewMailAndStayOnline
   78.79 +- Copy messages:
   78.80 +  - #KIMAP4MTMCopyAllMailWhenAlreadyConnected
   78.81 +  - #KIMAP4MTMCopyMailSelectionWhenAlreadyConnected
   78.82 +  - #KIMAP4MTMCopyNewMailWhenAlreadyConnected
   78.83 +  - #KIMAP4MTMConnectAndCopyAllMailAndDisconnect
   78.84 +  - #KIMAP4MTMConnectAndCopyAllMailAndStayOnline
   78.85 +  - #KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect
   78.86 +  - #KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline
   78.87 +  - #KIMAP4MTMConnectAndCopyNewMailAndDisconnect
   78.88 +  - #KIMAP4MTMConnectAndCopyNewMailAndStayOnline
   78.89 +- Move messages:
   78.90 +  - #KIMAP4MTMMoveAllMailWhenAlreadyConnected
   78.91 +  - #KIMAP4MTMMoveMailSelectionWhenAlreadyConnected
   78.92 +  - #KIMAP4MTMMoveNewMailWhenAlreadyConnected
   78.93 +  - #KIMAP4MTMConnectAndMoveAllMailAndDisconnect
   78.94 +  - #KIMAP4MTMConnectAndMoveAllMailAndStayOnline
   78.95 +  - #KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect
   78.96 +  - #KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline
   78.97 +  - #KIMAP4MTMConnectAndMoveNewMailAndDisconnect
   78.98 +  - #KIMAP4MTMConnectAndMoveNewMailAndStayOnline
   78.99 +- Create messages:
  78.100 +  - #KIMAP4MTMCreateForwardAsAttachmentEmailMessage
  78.101 +  - #KIMAP4MTMCreateForwardEmailMessage
  78.102 +  - #KIMAP4MTMCreateNewEmailMessage
  78.103 +  - #KIMAP4MTMCreateReceiptEmailMessage
  78.104 +  - #KIMAP4MTMCreateReplyEmailMessage
  78.105 +  .
  78.106 +  Note that CImEmailOperation is usually a more convenient way
  78.107 +  to create messages.
  78.108 +- Query state:
  78.109 +  - #KIMAP4MTMBusy
  78.110 +  - #KIMAP4MTMIsConnected
  78.111 +- Offline operations:
  78.112 +  - #KIMAP4MTMCancelOffLineOperations
  78.113 +  - #KIMAP4MTMUndeleteAll
  78.114 +- Miscellaneous:
  78.115 +  - #KIMAP4MTMEndBatch
  78.116 +  - #KIMAP4MTMRenameFolder
  78.117 +  - #KIMAP4MTMSelect
  78.118 +  - #KIMAP4MTMStartBatch
  78.119 +
  78.120 +Note that when @c iServiceSelection is referred to in code examples for some
  78.121 +commands, this is assumed to be a CMsvEntrySelection that  
  78.122 +contain the entry ID of an IMAP service. 
  78.123 +
  78.124 +@see CImap4ClientMtm::InvokeAsyncFunctionL() 
  78.125 +@see CImap4ClientMtm::InvokeSyncFunctionL()
  78.126 +
  78.127 +@publishedAll
  78.128 +@released
  78.129 +*/	
  78.130 +enum TImap4Cmds {
  78.131 +	/** Tests if a specified service is connected.
  78.132 +	
  78.133 +	This command is synchronous, and used from @c InvokeSyncFunctionL().
  78.134 +	
  78.135 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.136 +	to test.
  78.137 +	 
  78.138 +	@c aParameter: a packaged TInt. On return, this is set to  
  78.139 +	KErrNone if the service is connected or KErrDisconnected if not. 
  78.140 +	
  78.141 +	Example:
  78.142 +	@code
  78.143 +	TPckgBuf<TInt> parameter;
  78.144 +	iClientMtm->InvokeSyncFunctionL(KIMAP4MTMIsConnected, *iServiceSelection, parameter);
  78.145 +	if (parameter()==KErrNone)
  78.146 +		{
  78.147 +		_LIT(KConnStatus, "\n\n Connected to the service");
  78.148 +		iConsole->Printf(KConnStatus);
  78.149 +		}	
  78.150 +	@endcode
  78.151 +	*/
  78.152 +	KIMAP4MTMIsConnected = KMtmFirstFreeMtmFunctionId,
  78.153 +	
  78.154 +	/** Connects to the specified IMAP service.
  78.155 +
  78.156 +	This makes a network connection and logs on the IMAP server specified 
  78.157 +	in the settings for the service. 
  78.158 +	
  78.159 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.160 +	to connect to.
  78.161 +	 
  78.162 +	@c aParameter: packages a pointer to an implementation of the connection observer 
  78.163 +	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
  78.164 +	to notify the client of the stages of connection.
  78.165 +	
  78.166 +	Completion: KErrBusy if the device is already connected to the specified server.
  78.167 +
  78.168 +	Example:
  78.169 +	@code
  78.170 +	TBuf8<1> parameter;
  78.171 +	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnect, *iServiceSelection, parameter, iStatus);    
  78.172 +	@endcode	
  78.173 +	*/
  78.174 +	KIMAP4MTMConnect,
  78.175 +	
  78.176 +	/** Connects to the specified IMAP service, and starts a background synchronisation.
  78.177 +
  78.178 +	The call completes when the connection occurs and the synchronisation starts. See
  78.179 +	CImap4ClientMtm for a description of a background synchronisation.
  78.180 +	
  78.181 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.182 +	to connect to.
  78.183 +	 
  78.184 +	@c aParameter: packages a pointer to an implementation of the connection observer 
  78.185 +	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
  78.186 +	to notify the client of the stages of connection and synchronisation.
  78.187 +	
  78.188 +	Completion: KErrBusy if the device is already connected to the specified server. 
  78.189 +	
  78.190 +	Example:
  78.191 +	@code
  78.192 +	TPckg<MMsvImapConnectionObserver*> parameter(this);	
  78.193 +  iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnectAndSynchronise, *iServiceSelection, parameter, iStatus);
  78.194 +	@endcode
  78.195 +	*/
  78.196 +	KIMAP4MTMConnectAndSynchronise,
  78.197 +	
  78.198 +	/** Cancels a background synchronisation in progress.
  78.199 +		
  78.200 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.201 +	being synchronised.
  78.202 +	 
  78.203 +	@c aParameter: unused.
  78.204 +	
  78.205 +	Completion: KErrCancel if a synchronisation was cancelled; KErrNone if no
  78.206 +	synchronisation was taking place.   
  78.207 +
  78.208 +	Example:
  78.209 +	@code
  78.210 +	TBuf8<1> parameter;
  78.211 +  iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMCancelBackgroundSynchronise, *iServiceSelection, parameter, iStatus);	
  78.212 +	@endcode			
  78.213 +	*/
  78.214 +	KIMAP4MTMCancelBackgroundSynchronise,
  78.215 +	
  78.216 +	/** Ensures that the IMAP server will remain loaded ready for more commands. 
  78.217 +	
  78.218 +	If this is not set, then the Message Server can unload the IMAP server MTM
  78.219 +	after a service is disconnected. It is more efficient if it stays loaded
  78.220 +	if further use of the MTM is expected.
  78.221 +	
  78.222 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.223 +	 
  78.224 +	@c aParameter: unused.
  78.225 +	
  78.226 +	Completion: KErrNone.
  78.227 +	*/
  78.228 +	KIMAP4MTMStartBatch,
  78.229 +	
  78.230 +	/** Ends the effect of KIMAP4MTMStartBatch. 
  78.231 +
  78.232 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.233 +	 
  78.234 +	@c aParameter: unused.
  78.235 +	
  78.236 +	Completion: KErrNone.	
  78.237 +	*/
  78.238 +	KIMAP4MTMEndBatch,
  78.239 +	
  78.240 +	/** Tests if the server is busy.
  78.241 +
  78.242 +	It can be used from either CImap4ClientMtm::InvokeAsyncFunctionL() or 
  78.243 +	CImap4ClientMtm::InvokeSyncFunctionL().
  78.244 +	
  78.245 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.246 +	 
  78.247 +	@c aParameter: if the command is called from InvokeSyncFunctionL(), then on return a packaged
  78.248 +	TInt holding the result.
  78.249 +		
  78.250 +	Completion: This completes with either KErrNone (neither session is busy) or KErrServerBusy 
  78.251 +	otherwise. 
  78.252 +	*/
  78.253 +	KIMAP4MTMBusy,
  78.254 +	
  78.255 +	/** Issues an IMAP SELECT command on the specified mailbox. 
  78.256 +
  78.257 +	This is used to select an mailbox for the KIMAP4MTMSynchronise command.	
  78.258 +	
  78.259 +	Pre-condition: a connected service.
  78.260 +	
  78.261 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
  78.262 +	to select.
  78.263 +	 
  78.264 +	@c aParameter: Unused.
  78.265 +		
  78.266 +	Completion: KErrDisconnected if not connected. 
  78.267 +	*/
  78.268 +	KIMAP4MTMSelect,
  78.269 +	
  78.270 +	/** Synchronises the current folder that is selected on the remote server.
  78.271 +
  78.272 +	Note that after a connection is made, the Inbox folder is selected by default.
  78.273 +	
  78.274 +	Pre-condition: a connected service.
  78.275 +
  78.276 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.277 +	 
  78.278 +	@c aParameter: unused.
  78.279 +	
  78.280 +	Completion: KErrDisconnected if not connected. 	
  78.281 +	*/
  78.282 +	KIMAP4MTMSynchronise,
  78.283 +	
  78.284 +	/** Synchronises the connected service's folder tree with the folders on the remote IMAP server.
  78.285 +
  78.286 +	This creates and deletes folder entries in the message store under the remote service as needed,
  78.287 +	to match the mailboxes that exist on the remote server. Note that this step is done as part of 
  78.288 +	the normal service synchronisation operation.
  78.289 +		
  78.290 +	Pre-condition: a connected service.
  78.291 +
  78.292 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.293 +	 
  78.294 +	@c aParameter: unused.
  78.295 +
  78.296 +	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
  78.297 +	background synchronisation is already in progress. 	
  78.298 +	*/
  78.299 +	KIMAP4MTMSyncTree,
  78.300 +	
  78.301 +	/** Not supported. */
  78.302 +	KIMAP4MTMReserved10,						// SyncSubscription
  78.303 +	
  78.304 +	/** Synchronises the specified service. 
  78.305 +
  78.306 +	This is a foreground synchronisation, and completes when the synchronisation is done.
  78.307 +	
  78.308 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.309 +	to synchronise.
  78.310 +	
  78.311 +	@c aParameter: unused.
  78.312 +	
  78.313 +	Pre-condition: a connected service.
  78.314 +	
  78.315 +	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
  78.316 +	background synchronisation is already in progress.
  78.317 +	*/
  78.318 +	KIMAP4MTMFullSync,
  78.319 +	
  78.320 +	/** Cancels any operations in progress and sends logout messages to server.
  78.321 +
  78.322 +	If CImImap4Settings::SetDeleteEmailsWhenDisconnecting() is set,
  78.323 +	any messages marked as deleted while offline are deleted before logout.
  78.324 +
  78.325 +	Pre-condition: a connected service.
  78.326 +
  78.327 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.328 +	 
  78.329 +	@c aParameter: unused.
  78.330 +
  78.331 +	Completion: KErrDisconnected if not connected.
  78.332 +	*/
  78.333 +	KIMAP4MTMDisconnect,
  78.334 +
  78.335 +	/** Sets the local subscription flag on a specified folder. 
  78.336 +
  78.337 +	This sets the local subscription flag on the folder's index entry 
  78.338 +	(see TMsvEmailEntry::SetLocalSubscription()), and saves the changed entry 
  78.339 +	to the index.
  78.340 +	
  78.341 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
  78.342 +	to subscribe to.
  78.343 +	 
  78.344 +	@c aParameter: unused.
  78.345 +	
  78.346 +	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
  78.347 +	*/
  78.348 +	KIMAP4MTMLocalSubscribe,
  78.349 +
  78.350 +	/** Clears the local subscription flag on the specified folder.
  78.351 +	
  78.352 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
  78.353 +	to unsubscribe from.
  78.354 +	 
  78.355 +	@c aParameter: unused.
  78.356 +
  78.357 +	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
  78.358 +	*/
  78.359 +	KIMAP4MTMLocalUnsubscribe,
  78.360 +    
  78.361 +	/** Not supported. */
  78.362 +	KIMAP4MTMReserved15,						// MakeRemoteMailboxesInvisible
  78.363 +	/** Not supported. */
  78.364 +	KIMAP4MTMReserved16,						// MakeRemoteMailboxesVisible
  78.365 +	
  78.366 +	/** Synchronises any messages received by the remote server Inbox since the
  78.367 +	last synchronisation operation.
  78.368 +
  78.369 +	Messages that have been deleted from the remote Inbox are not deleted from
  78.370 +	the mirror.
  78.371 +
  78.372 +	Pre-condition: a connected service.
  78.373 +
  78.374 +	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
  78.375 +	 
  78.376 +	@c aParameter: unused.
  78.377 +
  78.378 +	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
  78.379 +	background synchronisation is already in progress.
  78.380 +	*/
  78.381 +	KIMAP4MTMInboxNewSync,
  78.382 +	
  78.383 +	/** Selects and synchronises the specified folder. 
  78.384 +	
  78.385 +	Pre-condition: a connected service.
  78.386 +
  78.387 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to synchronise.
  78.388 +	 
  78.389 +	@c aParameter: unused.
  78.390 +
  78.391 +	Completion: KErrDisconnected if not connected.
  78.392 +	*/
  78.393 +	KIMAP4MTMFolderFullSync,
  78.394 +	
  78.395 +	/** Completes only when a background synchronisation has finished. 
  78.396 +		
  78.397 +	This turns a background synchronisation into a foreground synchronisation.
  78.398 +
  78.399 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.400 +	being synchronised.
  78.401 +	 
  78.402 +	@c aParameter: unused.
  78.403 +	
  78.404 +	Completion: KErrNone when no background synchronisation is in progress.   
  78.405 +	
  78.406 +	Example:
  78.407 +	@code
  78.408 +	TBuf8<1> parameter;
  78.409 +	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMWaitForBackground, *iServiceSelection, parameter, iStatus);	
  78.410 +	@endcode
  78.411 +	*/
  78.412 +	KIMAP4MTMWaitForBackground,
  78.413 +	
  78.414 +	/** Renames a specified folder.
  78.415 +	
  78.416 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to rename. 
  78.417 +	 
  78.418 +	@c aParameter: the new name for the folder. This should be a packaged TImap4RenameFolder object.
  78.419 +
  78.420 +	Pre-conditions: a connected service.
  78.421 +			
  78.422 +	Completion: KErrDisconnected if there is no connected service. 
  78.423 +	
  78.424 +	Example:
  78.425 +	@code
  78.426 +	// rename folder, assumed to be identified in *selection[0], to "newname".
  78.427 +	_LIT(KNewName, "newname");
  78.428 +	TImap4RenameFolder newName;
  78.429 +	newName.iNewName = KNewName;	
  78.430 +	TPckg<TImap4RenameFolder> name(newName);
  78.431 +	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMRenameFolder, *selection, name, iStatus);	
  78.432 +	@endcode
  78.433 +	 */
  78.434 +	KIMAP4MTMRenameFolder,
  78.435 +		
  78.436 +	/** Undoes any offline delete operations pending on the specified entries.
  78.437 +		
  78.438 +	@c aSelection: Entries on which to cancel offline delete operations. 
  78.439 +	 
  78.440 +	@c aParameter: Unused.
  78.441 +
  78.442 +	Completion: KErrNone.
  78.443 +	*/
  78.444 +	KIMAP4MTMUndeleteAll,
  78.445 +	
  78.446 +	/** Cancels any offline operations pending on the specified entries.
  78.447 +	
  78.448 +	If any item is a folder, then it cancels all operations queued on any item 
  78.449 +	in that folder. If an IMAP4 service ID is given, then it cancels any Copy() 
  78.450 +	or MoveFromLocal() operations that are queued. A message can not have its 
  78.451 +	pending operations cancelled individually. 
  78.452 +	
  78.453 +	@c aSelection: Entries on which to cancel offline operations. 
  78.454 +	 
  78.455 +	@c aParameter: Unused.
  78.456 +
  78.457 +	Completion: KErrNone.	
  78.458 +	*/
  78.459 +	KIMAP4MTMCancelOffLineOperations,
  78.460 +
  78.461 +	/** Fetches the specified messages from the remote server to the mirror. 
  78.462 +		
  78.463 +	@c aSelection: Messages to fetch.
  78.464 +
  78.465 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.466 +	specifying the message parts to fetch and size limits on what is fetched.
  78.467 +
  78.468 +	*/
  78.469 +	KIMAP4MTMPopulate,
  78.470 +
  78.471 +	/** Not supported. */
  78.472 +	KIMAP4MTMSyncSubscription,
  78.473 +
  78.474 +	/** Connect and synchronise the specified service, and complete after connection. 
  78.475 +	
  78.476 +	The operation completes when the connection part completes. The synchronisation
  78.477 +	is done in the background. 
  78.478 +	
  78.479 +	The command	has the same functionality as KIMAP4MTMConnectAndSynchronise.  
  78.480 +
  78.481 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.482 +	to connect to.
  78.483 +	 
  78.484 +	@c aParameter: packages a pointer to an implementation of the connection observer 
  78.485 +	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
  78.486 +	to notify the client of the stages of connection and synchronisation.
  78.487 +	
  78.488 +	Completion: KErrBusy if a connected session already exists. 	
  78.489 +	*/
  78.490 +	KIMAP4MTMConnectAndSyncCompleteAfterConnect,
  78.491 +	
  78.492 +	/** Connect and synchronise the specified service, and complete after synchronisation. 
  78.493 +	
  78.494 +	This is similar to KIMAP4MTMConnectAndSynchronise, except that the operation
  78.495 +	does not complete until synchronisation is complete.  
  78.496 +	
  78.497 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
  78.498 +	to connect to.
  78.499 +	 
  78.500 +	@c aParameter: packages a pointer to an implementation of the connection observer 
  78.501 +	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
  78.502 +	to notify the client of the stages of connection and synchronisation.
  78.503 +	
  78.504 +	Completion: KErrBusy if a connected session already exists. 	
  78.505 +	*/
  78.506 +	KIMAP4MTMConnectAndSyncCompleteAfterFullSync,
  78.507 +	
  78.508 +	/** Connect and synchronise the specified service, and complete after disconnection.
  78.509 +	
  78.510 +	Unlike the other synchronisation commands, this command does not complete
  78.511 +	after either connection or synchronisation. Instead, after the initial synchronisation
  78.512 +	is complete, it periodically resynchronises the Inbox until the service is disconnected.
  78.513 +	CImImap4Settings::SyncRate() sets the refresh period. 
  78.514 +	
  78.515 +	Disconnection can occur because the network connection is closed, either through 
  78.516 +	user action, or because a networking timeout occurs on the socket. 
  78.517 +	
  78.518 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service
  78.519 +	to connect to.
  78.520 +
  78.521 +	@c aParameter: packages a pointer to an implementation of the connection
  78.522 +	observer interface, MMsvImapConnectionObserver. Callbacks are made to this
  78.523 +	interface to notify the client of the stages of connection and
  78.524 +	synchronisation.
  78.525 +
  78.526 +	Completion: KErrBusy if a connected session already exists.
  78.527 +	*/
  78.528 +	KIMAP4MTMConnectAndSyncCompleteAfterDisconnect,
  78.529 +	
  78.530 +	/** Not supported. */
  78.531 +	KIMAP4MTMCancelSendOnNextConnection,
  78.532 +	
  78.533 +	/** Copy any new messages from a specified folder to another folder,
  78.534 +	assuming a new connection does not need to be made.
  78.535 +
  78.536 +	This is used after message headers have been synchronised. Any messages marked
  78.537 +	as new are populated in the mirror, and then copied to the specified destination folder.
  78.538 +
  78.539 +	Pre-condition: a connected service.
  78.540 +
  78.541 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.542 +	@c aSelection[1] should contain the entry ID of the folder from which
  78.543 +	to copy the entries.
  78.544 +
  78.545 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.546 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.547 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.548 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.549 +	the entire message is always fetched.
  78.550 +
  78.551 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.552 +	information is a null descriptor.	
  78.553 +	*/
  78.554 +	KIMAP4MTMCopyNewMailWhenAlreadyConnected,
  78.555 +	
  78.556 +	/** Connect to a specified service, copy any new messages from 
  78.557 +	a specified folder into another folder, and stay connected. 
  78.558 +	
  78.559 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.560 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.561 +	the messages to copy.
  78.562 +
  78.563 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.564 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.565 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.566 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.567 +	the entire message is always fetched.
  78.568 +
  78.569 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.570 +	information is a null descriptor.			
  78.571 +	*/
  78.572 +	KIMAP4MTMConnectAndCopyNewMailAndStayOnline,
  78.573 +	
  78.574 +	/** Connect to a specified service, copy any new messages from 
  78.575 +	a specified folder into another folder, and disconnect afterwards. 
  78.576 +	
  78.577 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.578 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.579 +	the messages to copy.
  78.580 +
  78.581 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.582 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.583 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.584 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.585 +	the entire message is always fetched.
  78.586 +
  78.587 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.588 +	information is a null descriptor.			
  78.589 +	*/
  78.590 +	KIMAP4MTMConnectAndCopyNewMailAndDisconnect,
  78.591 +		
  78.592 +	/** Move any new messages from a specified folder to another folder,
  78.593 +	assuming a new connection does not need to be made.
  78.594 +
  78.595 +	This is used after message headers have been synchronised. Any messages marked
  78.596 +	as new are populated in the mirror, and then moved to the specified destination folder.
  78.597 +
  78.598 +	Pre-condition: a connected service.
  78.599 +
  78.600 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.601 +	@c aSelection[1] should contain the entry ID of the folder from which
  78.602 +	to move the entries.
  78.603 +
  78.604 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.605 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.606 +	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.607 +	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.608 +	the entire message is always fetched.
  78.609 +
  78.610 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.611 +	information is a null descriptor.	
  78.612 +	*/
  78.613 +	KIMAP4MTMMoveNewMailWhenAlreadyConnected,
  78.614 +
  78.615 +	/** Connect to a specified service, move any new messages from 
  78.616 +	a specified folder into another folder, and stay connected. 
  78.617 +	
  78.618 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.619 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.620 +	the messages to move.
  78.621 +
  78.622 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.623 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.624 +	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.625 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.626 +	the entire message is always fetched.
  78.627 +
  78.628 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.629 +	information is a null descriptor.			
  78.630 +	*/
  78.631 +	KIMAP4MTMConnectAndMoveNewMailAndStayOnline,
  78.632 +	
  78.633 +	/** Connect to a specified service, move any new messages from 
  78.634 +	a specified folder into another folder, and disconnect afterwards. 
  78.635 +	
  78.636 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.637 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.638 +	the messages to move.
  78.639 +
  78.640 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.641 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.642 +	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.643 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.644 +	the entire message is always fetched.
  78.645 +
  78.646 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.647 +	information is a null descriptor.			
  78.648 +	*/
  78.649 +	KIMAP4MTMConnectAndMoveNewMailAndDisconnect,
  78.650 +
  78.651 +	/** Copy the specified messages to another folder, assuming a new connection
  78.652 +	does not need to be made.
  78.653 +
  78.654 +	The specified messages are populated in the mirror, and then copied to
  78.655 +	the specified destination folder.
  78.656 +
  78.657 +	Pre-condition: a connected service.
  78.658 +
  78.659 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.660 +	followed by the IDs of the messages to copy.	
  78.661 +
  78.662 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.663 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.664 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.665 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.666 +	the entire message is always fetched.
  78.667 +
  78.668 +	Completion: note if there are no entries to copy, then KErrNone, and progress
  78.669 +	information is a null descriptor.
  78.670 +	*/
  78.671 +	KIMAP4MTMCopyMailSelectionWhenAlreadyConnected,
  78.672 +
  78.673 +	/** Connect to a specified service, copy the specified messages to another 
  78.674 +	folder, and stay connected.
  78.675 +
  78.676 +	The specified messages are populated in the mirror, and then copied to
  78.677 +	the specified destination folder.
  78.678 +
  78.679 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.680 +	followed by the IDs of the messages to copy.	
  78.681 +
  78.682 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.683 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.684 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.685 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.686 +	the entire message is always fetched.
  78.687 +
  78.688 +	Completion: note if there are no entries to copy, then KErrNone, and progress
  78.689 +	information is a null descriptor.
  78.690 +	*/
  78.691 +	KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline,
  78.692 +
  78.693 +	/** Connect to a specified service, copy the specified messages to another 
  78.694 +	folder, and disconnect afterwards.
  78.695 +
  78.696 +	The specified messages are populated in the mirror, and then copied to
  78.697 +	the specified destination folder.
  78.698 +
  78.699 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.700 +	followed by the IDs of the messages to copy.	
  78.701 +
  78.702 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.703 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.704 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.705 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.706 +	the entire message is always fetched.
  78.707 +
  78.708 +	Completion: note if there are no entries to copy, then KErrNone, and progress
  78.709 +	information is a null descriptor.
  78.710 +	*/
  78.711 +	KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect,
  78.712 +
  78.713 +	/** Move the specified messages to another folder, assuming a new connection 
  78.714 +	does not need to be made. 
  78.715 +
  78.716 +	Pre-condition: a connected service.
  78.717 +
  78.718 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.719 +	followed by the IDs of the messages to move.	
  78.720 +
  78.721 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.722 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.723 +	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.724 +	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.725 +	the entire message is always fetched.
  78.726 +
  78.727 +	Completion: note if there are no entries to move, then KErrNone, and progress
  78.728 +	information is a null descriptor.	
  78.729 +	*/
  78.730 +	KIMAP4MTMMoveMailSelectionWhenAlreadyConnected,
  78.731 +	
  78.732 +	/** Connect to a specified service, move the specified messages to another 
  78.733 +	folder, and stay connected.
  78.734 +
  78.735 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.736 +	followed by the IDs of the messages to move.	
  78.737 +
  78.738 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.739 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.740 +	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.741 +	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.742 +	the entire message is always fetched.
  78.743 +
  78.744 +	Completion: note if there are no entries to move, then KErrNone, and progress
  78.745 +	information is a null descriptor.	
  78.746 +	*/
  78.747 +	KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline,
  78.748 +
  78.749 +	/** Connect to a specified service, move the specified messages to another 
  78.750 +	folder, and disconnect afterwards.
  78.751 +
  78.752 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.753 +	followed by the IDs of the messages to move.	
  78.754 +
  78.755 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.756 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.757 +	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.758 +	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.759 +	the entire message is always fetched.
  78.760 +
  78.761 +	Completion: note if there are no entries to move, then KErrNone, and progress
  78.762 +	information is a null descriptor.	
  78.763 +	*/
  78.764 +	KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect,
  78.765 +
  78.766 +	/** Copy all messages from the current service, assuming a new connection does 
  78.767 +	not need to be made. 
  78.768 +
  78.769 +	Pre-condition: a connected service.
  78.770 +
  78.771 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.772 +	@c aSelection[1] should contain the entry ID of the folder from which
  78.773 +	to copy the entries.
  78.774 +
  78.775 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.776 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.777 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.778 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.779 +	the entire message is always fetched.
  78.780 +
  78.781 +	Completion: note if there are no entries to copy, then KErrNone, and progress
  78.782 +	information is a null descriptor.	
  78.783 +	*/
  78.784 +	KIMAP4MTMCopyAllMailWhenAlreadyConnected,
  78.785 +
  78.786 +	/** Connect to a specified service, copy all messages from the current service, 
  78.787 +	and stay connected. 
  78.788 +
  78.789 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.790 +	@c aSelection[1] should contain the entry ID of the folder from which
  78.791 +	to copy the entries.
  78.792 +
  78.793 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.794 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.795 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.796 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.797 +	the entire message is always fetched.
  78.798 +
  78.799 +	Completion: note if there are no entries to copy, then KErrNone, and progress
  78.800 +	information is a null descriptor.	
  78.801 +	*/
  78.802 +	KIMAP4MTMConnectAndCopyAllMailAndStayOnline,
  78.803 +
  78.804 +	/** Connect to a specified service, copy all messages from the current service, 
  78.805 +	and disconnect afterwards. 
  78.806 +
  78.807 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.808 +	@c aSelection[1] should contain the entry ID of the folder from which
  78.809 +	to copy the entries.
  78.810 +
  78.811 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.812 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.813 +	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.814 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.815 +	the entire message is always fetched.
  78.816 +
  78.817 +	Completion: note if there are no entries to copy, then KErrNone, and progress
  78.818 +	information is a null descriptor.	
  78.819 +	*/
  78.820 +	KIMAP4MTMConnectAndCopyAllMailAndDisconnect,
  78.821 +
  78.822 +	/** Move all messages from the specified folder, assuming a new connection does 
  78.823 +	not need to be made. 
  78.824 +
  78.825 +	Pre-condition: a connected service.
  78.826 +
  78.827 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.828 +	@c aSelection[1] should contain the entry ID of the folder from which
  78.829 +	to move the entries.
  78.830 +
  78.831 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.832 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.833 +	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.834 +	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.835 +	the entire message is always fetched.
  78.836 +
  78.837 +	Completion: note if there are no entries to move, then KErrNone, and progress
  78.838 +	information is a null descriptor.	
  78.839 +	*/
  78.840 +	KIMAP4MTMMoveAllMailWhenAlreadyConnected,
  78.841 +
  78.842 +	/** Connect to a specified service, move all messages from 
  78.843 +	a specified folder into another folder, and stay connected. 
  78.844 +	
  78.845 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.846 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.847 +	the messages to move.
  78.848 +
  78.849 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.850 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.851 +	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.852 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.853 +	the entire message is always fetched.
  78.854 +
  78.855 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.856 +	information is a null descriptor.			
  78.857 +	*/	
  78.858 +	KIMAP4MTMConnectAndMoveAllMailAndStayOnline,
  78.859 +	
  78.860 +	/** Connect to a specified service, move all messages from 
  78.861 +	a specified folder into another folder, and disconnect afterwards. 
  78.862 +	
  78.863 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.864 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.865 +	the messages to move.
  78.866 +
  78.867 +	@c aParameter: packaged TImImap4GetMailInfo object.
  78.868 +	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
  78.869 +	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
  78.870 +	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
  78.871 +	the entire message is always fetched.
  78.872 +
  78.873 +	Completion: note if there are no new entries, then KErrNone, and progress
  78.874 +	information is a null descriptor.			
  78.875 +	*/	
  78.876 +	KIMAP4MTMConnectAndMoveAllMailAndDisconnect,
  78.877 +
  78.878 +	/** Populate the specified messages, assuming a new connection does not need to be made. 
  78.879 +
  78.880 +	Pre-condition: a connected service.
  78.881 +
  78.882 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.883 +	followed by the IDs of the messages to populate.
  78.884 +	
  78.885 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.886 +	specifying the message parts to fetch and size limits on what is fetched.
  78.887 +
  78.888 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.889 +	information is a null descriptor.		
  78.890 +	*/
  78.891 +	KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected,
  78.892 +
  78.893 +	/** Connect to a specified service, populate the specified messages, 
  78.894 +	and stay connected.
  78.895 +
  78.896 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.897 +	followed by the IDs of the messages to populate.
  78.898 +	
  78.899 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.900 +	specifying the message parts to fetch and size limits on what is fetched.
  78.901 +
  78.902 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.903 +	information is a null descriptor.		
  78.904 +	*/
  78.905 +	KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline,
  78.906 +	
  78.907 +	/** Connect to a specified service, populate the specified messages, 
  78.908 +	and disconnect afterwards.
  78.909 +
  78.910 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
  78.911 +	followed by the IDs of the messages to populate.
  78.912 +	
  78.913 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.914 +	specifying the message parts to fetch and size limits on what is fetched.
  78.915 +
  78.916 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.917 +	information is a null descriptor.		
  78.918 +	*/
  78.919 +	KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect,
  78.920 +
  78.921 +	/** Populate the new messages in a specified folder, assuming a new connection does 
  78.922 +	not need to be made. 
  78.923 +	
  78.924 +	Pre-condition: a connected service.
  78.925 +
  78.926 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.927 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.928 +	the messages to populate.
  78.929 +
  78.930 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.931 +	specifying the message parts to fetch and size limits on what is fetched.
  78.932 +
  78.933 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.934 +	information is a null descriptor.			
  78.935 +	*/
  78.936 +	KIMAP4MTMPopulateNewMailWhenAlreadyConnected,
  78.937 +
  78.938 +	/** Populate all messages in a specified folder, assuming a new connection does 
  78.939 +	not need to be made. 
  78.940 +
  78.941 +	Pre-condition: a connected service.
  78.942 +
  78.943 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.944 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.945 +	the messages to populate.
  78.946 +	
  78.947 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.948 +	specifying the message parts to fetch and size limits on what is fetched.
  78.949 +
  78.950 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.951 +	information is a null descriptor.		
  78.952 +	*/
  78.953 +	KIMAP4MTMPopulateAllMailWhenAlreadyConnected,
  78.954 +
  78.955 +	/** Connect to a specified service, populate the new messages in a specified 
  78.956 +	folder, and stay connected. 
  78.957 +	
  78.958 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.959 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.960 +	the messages to populate.
  78.961 +
  78.962 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.963 +	specifying the message parts to fetch and size limits on what is fetched.
  78.964 +
  78.965 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.966 +	information is a null descriptor.			
  78.967 +	*/
  78.968 +	KIMAP4MTMConnectAndPopulateNewMailAndStayOnline,
  78.969 +	
  78.970 +	/** Connect to a specified service, populate the new messages in a specified 
  78.971 +	folder, and disconnect afterwards. 
  78.972 +	
  78.973 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.974 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.975 +	the messages to populate.
  78.976 +
  78.977 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.978 +	specifying the message parts to fetch and size limits on what is fetched.
  78.979 +
  78.980 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.981 +	information is a null descriptor.			
  78.982 +	*/
  78.983 +	KIMAP4MTMConnectAndPopulateNewMailAndDisconnect,
  78.984 +
  78.985 +	/** Connect to a specified service, populate all messages in a specified 
  78.986 +	folder, and stay connected. 
  78.987 +
  78.988 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
  78.989 +	@c aSelection[1] should contain the entry ID of the folder containing
  78.990 +	the messages to populate.
  78.991 +	
  78.992 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
  78.993 +	specifying the message parts to fetch and size limits on what is fetched.
  78.994 +
  78.995 +	Completion: note if there are no entries to populate, then KErrNone, and progress
  78.996 +	information is a null descriptor.	
  78.997 +	*/
  78.998 +	KIMAP4MTMConnectAndPopulateAllMailAndStayOnline,
  78.999 +	
 78.1000 +	/** Connect to a specified service, populate all messages in a specified 
 78.1001 +	folder, and disconnect afterwards. 
 78.1002 +
 78.1003 +	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 78.1004 +	@c aSelection[1] should contain the entry ID of the folder containing
 78.1005 +	the messages to populate.
 78.1006 +	
 78.1007 +	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 78.1008 +	specifying the message parts to fetch and size limits on what is fetched.
 78.1009 +
 78.1010 +	Completion: note if there are no entries to populate, then KErrNone, and progress
 78.1011 +	information is a null descriptor.	
 78.1012 +	*/
 78.1013 +	KIMAP4MTMConnectAndPopulateAllMailAndDisconnect,
 78.1014 +
 78.1015 +	/** Creates a new email message. 
 78.1016 +
 78.1017 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
 78.1018 +	which to create the message.
 78.1019 +	 
 78.1020 +	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
 78.1021 +	message creation flags and message type.
 78.1022 +	
 78.1023 +	The operation object returned is a CImEmailOperation. Final progress information 
 78.1024 +	from this contains the ID of the newly created message.
 78.1025 +	*/
 78.1026 +	KIMAP4MTMCreateNewEmailMessage,
 78.1027 +	
 78.1028 +	/** Creates a new reply message. 
 78.1029 +
 78.1030 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
 78.1031 +	which to create the message; @c aSelection[1] should contain the entry ID 
 78.1032 +	of the message to which to create a reply.
 78.1033 +	 
 78.1034 +	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
 78.1035 +	message creation flags and message type.
 78.1036 +	
 78.1037 +	The operation object returned is a CImEmailOperation. Final progress information 
 78.1038 +	from this contains the ID of the newly created message.
 78.1039 +	*/
 78.1040 +	KIMAP4MTMCreateReplyEmailMessage,
 78.1041 +		
 78.1042 +	/** Creates a new forwarded message.
 78.1043 +	
 78.1044 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
 78.1045 +	which to create the message; @c aSelection[1] should contain the entry ID 
 78.1046 +	of the message to forward.
 78.1047 +	 
 78.1048 +	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
 78.1049 +	message creation flags and message type.
 78.1050 +	
 78.1051 +	The operation object returned is a CImEmailOperation. Final progress information 
 78.1052 +	from this contains the ID of the newly created message.
 78.1053 +	*/
 78.1054 +	KIMAP4MTMCreateForwardEmailMessage,
 78.1055 +
 78.1056 +	/** Creates a new forwarded message, with the original message as an attachment.
 78.1057 +	
 78.1058 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
 78.1059 +	which to create the message; @c aSelection[1] should contain the entry ID 
 78.1060 +	of the message to forward.
 78.1061 +	 
 78.1062 +	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
 78.1063 +	message creation flags and message type.
 78.1064 +	
 78.1065 +	The operation object returned is a CImEmailOperation. Final progress information 
 78.1066 +	from this contains the ID of the newly created message.
 78.1067 +	*/
 78.1068 +	KIMAP4MTMCreateForwardAsAttachmentEmailMessage,
 78.1069 +
 78.1070 +	/** Creates a new message-receipt message.
 78.1071 +	
 78.1072 +	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
 78.1073 +	which to create the message; @c aSelection[1] should contain the entry ID 
 78.1074 +	of the original message for which the receipt is required.
 78.1075 +	 
 78.1076 +	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
 78.1077 +	message creation flags and message type.
 78.1078 +	
 78.1079 +	The operation object returned is a CImEmailOperation. Final progress information 
 78.1080 +	from this contains the ID of the newly created message.
 78.1081 +	*/
 78.1082 +	KIMAP4MTMCreateReceiptEmailMessage
 78.1083 +};
 78.1084 +
 78.1085 +#endif
    79.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.2 +++ b/epoc32/include/app/imapconnectionobserver.h	Wed Mar 31 12:27:01 2010 +0100
    79.3 @@ -0,0 +1,67 @@
    79.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    79.5 +// All rights reserved.
    79.6 +// This component and the accompanying materials are made available
    79.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    79.8 +// which accompanies this distribution, and is available
    79.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   79.10 +//
   79.11 +// Initial Contributors:
   79.12 +// Nokia Corporation - initial contribution.
   79.13 +//
   79.14 +// Contributors:
   79.15 +//
   79.16 +// Description:
   79.17 +//
   79.18 +
   79.19 +#if !defined(__IMAPCONNECTIONOBSERVER_H__)
   79.20 +#define __IMAPCONNECTIONOBSERVER_H__
   79.21 +
   79.22 +/** IMAP4 connection observer events.
   79.23 +
   79.24 +@see MMsvImapConnectionObserver 
   79.25 +@publishedAll
   79.26 +@released
   79.27 +*/
   79.28 +enum TImapConnectionEvent
   79.29 +	{
   79.30 +	/** Connecting to server. */
   79.31 +	EConnectingToServer,
   79.32 +	/** Synchronising folder list. */
   79.33 +	ESynchronisingFolderList,
   79.34 +	/** Synchronising inbox. */
   79.35 +	ESynchronisingInbox,
   79.36 +	/** Synchronising folders. */
   79.37 +	ESynchronisingFolders,
   79.38 +	/** Synchronisation complete. */
   79.39 +	ESynchronisationComplete,
   79.40 +	/** Disconnecting. */
   79.41 +	EDisconnecting,
   79.42 +	/** Connection completed. */
   79.43 +	EConnectionCompleted
   79.44 +	};
   79.45 +
   79.46 +//	Mix-in class to allow observation of the stages of an IMAP operation
   79.47 +//
   79.48 +class MMsvImapConnectionObserver
   79.49 +/** Abstract base class used for IMAP4 connection observation. 
   79.50 +
   79.51 +A derived class to handle IMAP4 connection events should override the HandleImapConnectionEvent() 
   79.52 +member function. 
   79.53 +
   79.54 +Objects that implement this interface are passed as a packaged parameter 
   79.55 +to CImap4ClientMtm::InvokeAsyncFunctionL() when a connection command is issued.
   79.56 + 
   79.57 +@publishedAll
   79.58 +@released
   79.59 +
   79.60 +@see TImap4Cmds
   79.61 +*/
   79.62 +	{
   79.63 +public:
   79.64 +	/** Called when a connection event occurs.
   79.65 +	
   79.66 +	@param aConnectionState Connection event */
   79.67 +	virtual void HandleImapConnectionEvent(TImapConnectionEvent aConnectionState)=0;
   79.68 +	};
   79.69 +
   79.70 +#endif
    80.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.2 +++ b/epoc32/include/app/imapset.h	Wed Mar 31 12:27:01 2010 +0100
    80.3 @@ -0,0 +1,708 @@
    80.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    80.5 +// All rights reserved.
    80.6 +// This component and the accompanying materials are made available
    80.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    80.8 +// which accompanies this distribution, and is available
    80.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   80.10 +//
   80.11 +// Initial Contributors:
   80.12 +// Nokia Corporation - initial contribution.
   80.13 +//
   80.14 +// Contributors:
   80.15 +//
   80.16 +// Description:
   80.17 +//
   80.18 +
   80.19 +#ifndef __IMAPSET_H__
   80.20 +#define __IMAPSET_H__
   80.21 +
   80.22 + 
   80.23 +
   80.24 +
   80.25 +#include <msvuids.h>
   80.26 +#include <miutset.h>
   80.27 +
   80.28 +class TBearerTypes;
   80.29 +class TImImap4GetPartialMailInfo;
   80.30 +
   80.31 +/** Default IMAP4 server port number. */
   80.32 +const TUint32 KIMAPDefaultPortNumber = 143;
   80.33 +
   80.34 +/** Default inbox refresh rate in seconds. */
   80.35 +const TInt KImapDefaultInboxSyncRate = 300;
   80.36 +
   80.37 +/** Default idle timeout in seconds. */
   80.38 +const TInt KImapDefaultIdleTimeout = 1740;
   80.39 +
   80.40 +/** Default fetch size in bytes. */
   80.41 +const TUint KImapDefaultFetchSizeBytes = 20480;
   80.42 +
   80.43 +
   80.44 +
   80.45 +/** @deprecated */
   80.46 +const TInt32 KImImapSynchroniseAll = -1;
   80.47 +
   80.48 +/** @deprecated */
   80.49 +const TInt32 KImImapSynchroniseNone	= 0;
   80.50 +
   80.51 +
   80.52 +/**
   80.53 +Describes the folder subscription synchronisation strategy.
   80.54 +
   80.55 +This specifies whether the local or remote folder subscription flags, or a
   80.56 +combination of both, are used to determine which mailboxes are synchronised.
   80.57 +For an overview of the synchronisation process, see CImap4ClientMtm.
   80.58 +
   80.59 +@see CImImap4Settings::SetSynchronise()
   80.60 +@see CImImap4Settings::Synchronise()
   80.61 +
   80.62 +@publishedAll
   80.63 +@released
   80.64 +*/
   80.65 +enum TFolderSyncType
   80.66 +	{
   80.67 +	/** Folders that are marked for subscription either locally or remotely are synchronised. */
   80.68 +	EUseCombination=0,
   80.69 +	/** Only folders marked for subscription locally are synchronised. */
   80.70 +	EUseLocal,
   80.71 +	/** Only folders marked for subscription remotely are synchronised. */
   80.72 +	EUseRemote
   80.73 +	};
   80.74 +
   80.75 +
   80.76 +/**
   80.77 +Specifies methods of synchronising IMAP4 subscription information with a server. 
   80.78 +
   80.79 +Subscription settings that have been set on folders on the local device, and 
   80.80 +subscription settings that have been set on the corresponding mailboxes on the 
   80.81 +remote server can be synchronised, as part of the synchronisation process
   80.82 +(see the overview for CImap4ClientMtm).
   80.83 +
   80.84 +@see CImImap4Settings::SetSubscribe()
   80.85 +@see CImImap4Settings::Subscribe()
   80.86 +
   80.87 +@publishedAll
   80.88 +@released
   80.89 +*/
   80.90 +enum TFolderSubscribeType
   80.91 +	{
   80.92 +	/** Do not alter local or remote subscription information. */
   80.93 +	EUpdateNeither=0,
   80.94 +	/** Update local copy of subscription information when it is received from the 
   80.95 +	remote IMAP4 server at the beginning of the mail session. */
   80.96 +	EUpdateLocal,
   80.97 +	/** Update remote copy of subscription information so that it matches the local 
   80.98 +	subscription information. */
   80.99 +	EUpdateRemote,
  80.100 +	/** Merge local and remote subscription information, store updated information 
  80.101 +	on the remote server and store merged data on the local message store. */
  80.102 +	EUpdateBoth
  80.103 +	};
  80.104 +
  80.105 +
  80.106 +/**
  80.107 +Defines which components of a message to fetch when copying or moving from
  80.108 +a server. 
  80.109 +
  80.110 +@see CImImap4Settings::SetGetMailOptions()
  80.111 +@see CImImap4Settings::GetMailOptions()
  80.112 +
  80.113 +@publishedAll
  80.114 +@released
  80.115 +*/
  80.116 +enum TImap4GetMailOptions
  80.117 +	{
  80.118 +	/** Get message headers. */
  80.119 +	EGetImap4EmailHeaders,
  80.120 +	/** Get message body. */
  80.121 +	EGetImap4EmailBodyText,
  80.122 +	/** Get message body and attachments. */
  80.123 +	EGetImap4EmailBodyTextAndAttachments,
  80.124 +	/** Get message attachments. */
  80.125 +	EGetImap4EmailAttachments,
  80.126 +	/** Get message body, including non-plain or non-HTML alternative text parts (or attachments). */
  80.127 +	EGetImap4EmailBodyAlternativeText
  80.128 +	};
  80.129 +
  80.130 +/**
  80.131 +Defines which components of a message should be fetched partially when 
  80.132 +fetching the message from a server.
  80.133 +
  80.134 +@see
  80.135 +CImImap4Settings
  80.136 +
  80.137 +@publishedAll
  80.138 +@released
  80.139 +*/
  80.140 +enum TImImap4PartialMailOptions
  80.141 +	{
  80.142 +	/** No size limits, full message to be fetched.*/
  80.143 +	ENoSizeLimits,
  80.144 +	/** Get body text only. 
  80.145 +	Gets text/plain part only if text/plain part size + text/html part size
  80.146 +	is greater than body text size limit.
  80.147 +	Gets text/plain part and text/html part if text/plain part size + text/html part size
  80.148 +	is less than body text size limit of the message.*/
  80.149 +	EBodyTextOnly,
  80.150 +	/** Gets all the attachments less than attachment size limit.*/
  80.151 +	EAttachmentsOnly,
  80.152 +	/**  Gets the body text less than or equal to body text size limit and attachments 
  80.153 +	less than or equal to attachment size limit.*/
  80.154 +	EBodyTextAndAttachments,
  80.155 +	/** Gets the body text less than total size limit and also attachments whose size 
  80.156 +	is within total size limit minus fetched body parts.*/
  80.157 +	ECumulative,
  80.158 +	/** Gets the body text less than total size limit and all non-HTML text attachments whose size
  80.159 +	is within total size limit minus fetched body parts.*/	
  80.160 +	EBodyAlternativeText
  80.161 +	}; 
  80.162 +
  80.163 +/**
  80.164 +Flags to indicate what type of IMAP4 progress information is being returned. 
  80.165 +
  80.166 +@publishedAll
  80.167 +@released
  80.168 +*/
  80.169 +enum TImap4ProgressType
  80.170 +	{
  80.171 +	/** Progress information is an TImap4GenericProgress object. */
  80.172 +	EImap4GenericProgressType,
  80.173 +	/** Progress information is an TImap4SyncProgress object. */
  80.174 +	EImap4SyncProgressType
  80.175 +	};
  80.176 +
  80.177 +
  80.178 +class TImap4GenericProgress
  80.179 +/**
  80.180 +Progress information for an IMAP4 get operation.
  80.181 +
  80.182 +For the 'get mail when already connected' operations, the progress state can 
  80.183 +be obtained from TImap4GenericProgress::iState. In the case of the 'connect 
  80.184 +and get mail and disconnect' and 'connect and get mail and stay online', the 
  80.185 +actual progress defined in TImap4GenericProgress::iState will be of the form 
  80.186 +of 'Copy New Mail', 'Populating Message Selection' etc. The sub-operation 
  80.187 +state can then be obtained in the form of 'Connecting', 'Fetching', 'Disconnecting' 
  80.188 +etc. from TImap4GenericProgress::iImap4SubStateProgress.
  80.189 +
  80.190 +@see
  80.191 +CImImap4GetMail 
  80.192 +
  80.193 +@publishedAll
  80.194 +@released
  80.195 +*/
  80.196 +	{
  80.197 +public:
  80.198 +	IMPORT_C TInt ConnectionState() const;
  80.199 +	IMPORT_C TInt ConnectionIAP() const;
  80.200 +
  80.201 +public:
  80.202 +	/** Operation type. */
  80.203 +	enum TImap4GenericProgressOp
  80.204 +		{
  80.205 +	/** Connect operation. */
  80.206 +		EConnect,
  80.207 +	/** Disconnect operation. */
  80.208 +		EDisconnect, 
  80.209 +	/** Sync operation. */
  80.210 +		ESync,
  80.211 +	/** Select operation. */
  80.212 +		ESelect,		
  80.213 +	/** Copy messages to local operation. */
  80.214 +		ECopyToLocal,
  80.215 +	/** Copy messages within remote server operation. */
  80.216 +		ECopyWithinService,
  80.217 +	/** Copy messages from local operation. */
  80.218 +		ECopyFromLocal,
  80.219 +	/** Move messages to local operation. */
  80.220 +		EMoveToLocal,
  80.221 +	/** Move messages within remote server operation. */
  80.222 +		EMoveWithinService,
  80.223 +	/** Move messages from local operation. */
  80.224 +		EMoveFromLocal,
  80.225 +	/** Message population operation. */
  80.226 +		EPopulate,		
  80.227 +	/** Delete operation. */
  80.228 +		EDelete,		
  80.229 +	/** Offline delete operation. */
  80.230 +		EOffLineDelete,
  80.231 +	/** Offline undelete operation. */
  80.232 +		EOffLineUndelete,
  80.233 +	/** Offline delete operation. */
  80.234 +		EOffLineCopyToLocal,
  80.235 +	/** Offline move messages to local operation. */
  80.236 +		EOffLineMoveToLocal,
  80.237 +	/** Offline copy messages from local operation. */
  80.238 +		EOffLineCopyFromLocal,
  80.239 +	/** Offline move messages from local operation. */
  80.240 +		EOffLineMoveFromLocal,
  80.241 +	/** Offline copy messages within remote server operation. */
  80.242 +		EOffLineCopyWithinService,
  80.243 +	/** Offline move messages within remote server operation. */
  80.244 +		EOffLineMoveWithinService,
  80.245 +	/** Offline message population operation. */
  80.246 +		EOffLinePopulate
  80.247 +		};
  80.248 +
  80.249 +	/** Operation state information. */
  80.250 +	enum TImap4GenericProgressState
  80.251 +		{
  80.252 +	/** Disconnected. */
  80.253 +		EDisconnected,
  80.254 +	/** Connecting. */
  80.255 +		EConnecting,
  80.256 +	/** Idle. */
  80.257 +		EIdle,
  80.258 +	/** Selecting the folder to use. */
  80.259 +		ESelecting,
  80.260 +	/** Fetching messages to mirror server. */
  80.261 +		EFetching,
  80.262 +	/** Appending local messages to remote server. */
  80.263 +		EAppending,
  80.264 +	/** Copying local messages to local or within service. */
  80.265 +		ECopying,
  80.266 +	/** Deleting an item, including expunging a folder. */
  80.267 +		EDeleting,
  80.268 +	/** Synchronising folder after an operation. */
  80.269 +		ESyncing,
  80.270 +	/** Disconnecting. */
  80.271 +		EDisconnecting,
  80.272 +	/** Sync already in progress. */
  80.273 +		EBusy,
  80.274 +	/** CImImap4GetMail move operation in progress. */
  80.275 +		EMoving,
  80.276 +	/** CImImap4GetMail copy new mail operation in progress. */
  80.277 +		ECopyNewMail,
  80.278 +	/** CImImap4GetMail move new mail operation in progress. */
  80.279 +		EMoveNewMail,
  80.280 +	/** CImImap4GetMail copy selected messages operation in progress. */
  80.281 +		ECopyMailSelection,
  80.282 +	/** CImImap4GetMail move selected messages operation in progress. */
  80.283 +		EMoveMailSelection,
  80.284 +	/** CImImap4GetMail copy all messages operation in progress. */
  80.285 +		ECopyAllMail,
  80.286 +	/** CImImap4GetMail move all messages operation in progress. */
  80.287 +		EMoveAllMail,
  80.288 +	/** CImImap4GetMail populate new messages operation in progress. */
  80.289 +		EPopulateNewMail,
  80.290 +	/** CImImap4GetMail populate all messages operation in progress. */
  80.291 +		EPopulateAllMail,
  80.292 +	/** CImImap4GetMail populate selected messages operation in progress. */
  80.293 +		EPopulateMailSelection
  80.294 +		};
  80.295 +
  80.296 +	/** Progress information type: always EImap4GenericProgressType. */
  80.297 +	TImap4ProgressType iType;
  80.298 +	/** Operation type. */
  80.299 +	TImap4GenericProgressOp iOperation;
  80.300 +	/** 
  80.301 +	The progress state.
  80.302 +	
  80.303 +	For 'connect and get mail and disconnect' and 'connect and get mail and stay 
  80.304 +	online' type operations, additional sub-operation state can be obtained from 
  80.305 +	iImap4SubStateProgress.
  80.306 +	*/
  80.307 +	TImap4GenericProgressState iState; 
  80.308 +	/** 
  80.309 +	The progress sub-state.
  80.310 +	
  80.311 +	This only applies to 'connect and get mail and disconnect' and 'connect and 
  80.312 +	get mail and stay online' type operations.
  80.313 +	*/
  80.314 +	TImap4GenericProgressState iImap4SubStateProgress;
  80.315 +	/** In the EConnecting state, this field holds the connection iap value, 
  80.316 +	otherwise it holds the number of messages still to be processed. */
  80.317 +	TInt		iMsgsToDo;
  80.318 +	/** In the EConnecting state, this field holds the connection stage value, 
  80.319 +	otherwise it holds the number of messages processed. */
  80.320 +	TInt		iMsgsDone;
  80.321 +	/** Number of message parts still to be processed. */
  80.322 +	TInt		iPartsToDo;
  80.323 +	/** Number of message parts processed. */
  80.324 +	TInt		iPartsDone;
  80.325 +	/** Number of bytes (for a multipart fetch) still to be processed. */
  80.326 +	TInt		iBytesToDo;
  80.327 +	/** Number of bytes (for a multipart fetch) processed. */
  80.328 +	TInt		iBytesDone;
  80.329 +	/** Error code. */
  80.330 +	TInt		iErrorCode;
  80.331 +	/** Message ID returned from the operation. */
  80.332 +	TMsvId		iReturnedMsvId;
  80.333 +	/** The total size of messages to be downloaded (bytes). */
  80.334 +	TInt		iTotalSize;
  80.335 +	};
  80.336 +
  80.337 +
  80.338 +class TImap4SyncProgress
  80.339 +/**
  80.340 +IMAP4 synchronisation progress information. 
  80.341 +
  80.342 +The client may then use an object of this type created by the server MTM to 
  80.343 +track synchronisation progress.
  80.344 +
  80.345 +@publishedAll
  80.346 +@released
  80.347 +*/
  80.348 +	{
  80.349 +public:
  80.350 +	/** Synchronisation state. */
  80.351 +	enum TImap4SyncProgressState
  80.352 +		{
  80.353 +	/** Idle. */
  80.354 +		EIdle,
  80.355 +	/** Busy. */
  80.356 +		EBusy,
  80.357 +	/** Connecting. */
  80.358 +		EConnecting,
  80.359 +	/** Disconnecting. */
  80.360 +		EDisconnecting,
  80.361 +	/** Synchronising inbox. */
  80.362 +		ESyncInbox,
  80.363 +	/** Synchronising folder tree. */
  80.364 +		ESyncFolderTree,
  80.365 +	/** Checking remote subscription. */
  80.366 +		ECheckRemoteSubscription,
  80.367 +	/** Updating remote subscription. */
  80.368 +		EUpdateRemoteSubscription,
  80.369 +	/** Synchronising other information. */
  80.370 +		ESyncOther,
  80.371 +	/** Deleting. */
  80.372 +		EDeleting,
  80.373 +	/** Processing pending operations. */
  80.374 +		EProcessingPendingOps
  80.375 +		};
  80.376 +
  80.377 +	/** Progress information type: always EImapSyncProgressType. */
  80.378 +	TImap4ProgressType iType;		
  80.379 +	/** Synchronisation state. */
  80.380 +	TImap4SyncProgressState iState;	//	Where is the sync up to?
  80.381 +	/** 
  80.382 +	"Folders to do" count for synchronisation. 
  80.383 +	This is meaningful during the #ESyncOther and #EDeleting 
  80.384 +	synchronisation stages.
  80.385 +	*/
  80.386 +	TInt		iFoldersToDo;
  80.387 +	/**
  80.388 +	"Folders done" count for synchronisation. 
  80.389 +	This is meaningful during the #ESyncOther and #EDeleting 
  80.390 +	synchronisation stages.
  80.391 +	*/
  80.392 +	TInt		iFoldersDone;
  80.393 +	/** 
  80.394 +	"Message to do" count for synchronisation.
  80.395 +	This is meaningful during the #ESyncInbox, #ESyncOther and #EProcessingPendingOps
  80.396 +	synchronisation stages.
  80.397 +	*/
  80.398 +	TInt		iMsgsToDo;
  80.399 +	/**
  80.400 +	"Message done" count for synchronisation.
  80.401 +	This is meaningful during the #ESyncInbox, #ESyncOther and #EProcessingPendingOps
  80.402 +	synchronisation stages.
  80.403 +	*/
  80.404 +	TInt		iMsgsDone;
  80.405 +	/**
  80.406 +	Number of headers fetched during synchronisation.
  80.407 +	*/
  80.408 +	TInt		iHeadersFetched;
  80.409 +	/**
  80.410 +	Number of folders orphaned during synchronisation.
  80.411 +	
  80.412 +	An orphaned folder is a local folder which existed 
  80.413 +	under the service, but which did not exist
  80.414 +	on the remote server when synchronisation was done.	
  80.415 +	*/
  80.416 +	TInt		iOrphanedFolders;
  80.417 +	/**
  80.418 +	Number of new folders during synchronisation.
  80.419 +	*/
  80.420 +	TInt		iNewFolders;
  80.421 +	/**
  80.422 +	Number of orphaned messages during synchronisation.
  80.423 +
  80.424 +	An orphaned message is one which existed locally 
  80.425 +	under the service, but which did not exist
  80.426 +	on the remote server when synchronisation was done.	
  80.427 +	*/
  80.428 +	TInt		iOrphanedMessages;
  80.429 +	/**
  80.430 +	Number of remote messages tagged for deletion.
  80.431 +	
  80.432 +	In IMAP, messages can be flagged as deleted, before 
  80.433 +	they are later permanently removed.
  80.434 +	*/
  80.435 +	TInt		iRemoteMessagesDeleteTagged;
  80.436 +	/** Number of messages fetched during synchronisation. 
  80.437 +	
  80.438 +	In the current implementation, this is always 0. Use
  80.439 +	iHeadersFetched to get the number of headers fetched.	
  80.440 +	*/
  80.441 +	TInt		iMessagesFetchedOK;
  80.442 +	/** Number of message parts fetched during synchronisation. 
  80.443 +	
  80.444 +	In the current implementation, this is always 0.
  80.445 +	*/
  80.446 +	TInt		iMessagePartsFetchedOK;
  80.447 +	/** Number of message parts not found during synchronisation. 
  80.448 +	
  80.449 +	In the current implementation, this is always 0.
  80.450 +	*/
  80.451 +	TInt		iMessagePartsNotFound;
  80.452 +	/** Number of folders not found during synchronisation. 
  80.453 +	
  80.454 +	This can occur if the remote server returns an error when 
  80.455 +	a client attempts to select a folder during synchronisation. 
  80.456 +	*/
  80.457 +	TInt		iFoldersNotFound;
  80.458 +	/** Any error-code that the client needs to be informed of. */
  80.459 +	TInt		iErrorCode;
  80.460 +	};
  80.461 +
  80.462 +class TImap4CompoundProgress
  80.463 +/**
  80.464 +IMAP operation progress information.
  80.465 +
  80.466 +The class supplies both the two IMAP progress types, generic and synchronisation.
  80.467 +
  80.468 +The IMAP4 server MTM owns two IMAP4 sessions that are used independently of 
  80.469 +each other to perform 'background' and 'foreground' operations. In a typical 
  80.470 +situation, the user may be downloading the body parts of a message (populating) 
  80.471 +in the foreground whilst in the background a full synchronisation may be underway. 
  80.472 +In this scenario, the generic progress will give an indication of the 'foreground' 
  80.473 +activity and the synchronisation progress will give an indication of the 'background' 
  80.474 +progress. The synchronisation progress component of the compound progress 
  80.475 +will always show the synchronisation progress irrespective of whether the 
  80.476 +synchronisation is running in the foreground or the background. 
  80.477 +
  80.478 +@publishedAll
  80.479 +@released
  80.480 +*/
  80.481 +	{
  80.482 +public:
  80.483 +	/** Generic progress. */
  80.484 +	TImap4GenericProgress	iGenericProgress;
  80.485 +	/** Synchronisation progress. */
  80.486 +	TImap4SyncProgress		iSyncProgress;
  80.487 +	};
  80.488 +
  80.489 +
  80.490 +class CImImap4Settings : public CImBaseEmailSettings
  80.491 +/**
  80.492 +Settings for connection to and use of an IMAP4 mail server and its mailboxes.
  80.493 +
  80.494 +Messaging clients should use an instance of this class to specify and retrieve
  80.495 +configuration settings that are used by an IMAP4 service when executing email
  80.496 +operations.
  80.497 +
  80.498 +Service settings include:
  80.499 +
  80.500 +- server log on settings (user name and password)
  80.501 +- message header synchronisation strategy and synchronisation limits
  80.502 +- message getting options, such as maximum size. Note that these options 
  80.503 +  are not used by the IMAP MTM. They can be used by client applications to 
  80.504 +  store user preferences, and be used by the client when issuing get commands.
  80.505 +- miscelleanous settings, including whether IMAP IDLE should be used
  80.506 +
  80.507 +CImImap4Settings objects are created and accessed through
  80.508 +CEmailAccounts. CEmailAccounts can also be used to get the 
  80.509 +connection settings, such as the ISP to use, used to access an IMAP server.
  80.510 +
  80.511 +Settings for a service are associated with a service-type entry in the Message 
  80.512 +Server'smessage store. However the settings are not actually stored in the 
  80.513 +message store, but in the device's Central Repository data store. 
  80.514 +
  80.515 +@see CEmailAccounts
  80.516 +
  80.517 +@publishedAll
  80.518 +@released
  80.519 +*/
  80.520 +	{
  80.521 +public:
  80.522 +	IMPORT_C CImImap4Settings();
  80.523 +	IMPORT_C virtual ~CImImap4Settings();
  80.524 +	IMPORT_C void Reset();
  80.525 +	IMPORT_C const TPtrC8 LoginName() const;
  80.526 +	IMPORT_C void SetLoginNameL(const TDesC8& aLoginName);
  80.527 +	IMPORT_C const TPtrC8 Password() const;
  80.528 +	IMPORT_C void SetPasswordL(const TDesC8& aPassword);
  80.529 +	IMPORT_C const TPtrC8 FolderPath() const;
  80.530 +	IMPORT_C void SetFolderPathL(const TDesC8& aFolderPath);
  80.531 +	IMPORT_C const TPtrC8 SearchString() const;
  80.532 +	IMPORT_C void SetSearchStringL(const TDesC8& aSearchString);
  80.533 +	IMPORT_C TText8 PathSeparator() const;
  80.534 +	IMPORT_C void SetPathSeparator(const TText8 aPathSeparator);
  80.535 +	IMPORT_C TBool DisconnectedUserMode() const;
  80.536 +	IMPORT_C void SetDisconnectedUserMode(TBool aFlag);
  80.537 +	IMPORT_C void SetSynchronise(const TFolderSyncType aType);
  80.538 +	IMPORT_C TFolderSyncType Synchronise() const;
  80.539 +	IMPORT_C void SetSubscribe(const TFolderSubscribeType aType);
  80.540 +	IMPORT_C TFolderSubscribeType Subscribe() const;
  80.541 +	IMPORT_C TBool AutoSendOnConnect() const;
  80.542 +	IMPORT_C void SetAutoSendOnConnect(TBool aFlag);
  80.543 +	IMPORT_C TUint MaxEmailSize() const;
  80.544 +	IMPORT_C void SetMaxEmailSize(const TUint aMaxEmailSize);
  80.545 +	IMPORT_C TBool DeleteEmailsWhenDisconnecting() const;
  80.546 +	IMPORT_C void SetDeleteEmailsWhenDisconnecting(TBool aFlag);
  80.547 +	IMPORT_C TBool AcknowledgeReceipts() const;
  80.548 +	IMPORT_C void SetAcknowledgeReceipts(TBool aFlag);
  80.549 +	IMPORT_C TImap4GetMailOptions GetMailOptions() const;
  80.550 +	IMPORT_C void SetGetMailOptions(TImap4GetMailOptions aGetMailOptions);
  80.551 +	IMPORT_C CImImap4Settings& CopyL(const CImImap4Settings& aCImImap4Settings);
  80.552 +	IMPORT_C TBool operator==(const CImImap4Settings& aCImImap4Settings) const;
  80.553 +	IMPORT_C TInt32 InboxSynchronisationLimit() const;
  80.554 +	IMPORT_C void SetInboxSynchronisationLimit(const TInt32 aInboxSyncLimit);
  80.555 +	IMPORT_C TInt32 MailboxSynchronisationLimit() const;
  80.556 +	IMPORT_C void SetMailboxSynchronisationLimit(const TInt32 aMailboxSyncLimit);
  80.557 +	IMPORT_C TBool UpdatingSeenFlags() const;
  80.558 +	IMPORT_C void SetUpdatingSeenFlags(TBool aFlag);
  80.559 +	IMPORT_C TInt SyncRate() const;
  80.560 +	IMPORT_C void SetSyncRateL(TInt aSyncRate);
  80.561 +	IMPORT_C TUint FetchSize() const;
  80.562 +	IMPORT_C void SetFetchSizeL(TUint aFetchSizeBytes);
  80.563 +	IMPORT_C TBool ImapIdle() const;
  80.564 +	IMPORT_C void SetImapIdle(TBool aFlag);
  80.565 +	IMPORT_C TInt ImapIdleTimeout() const;
  80.566 +	IMPORT_C void SetImapIdleTimeoutL(TInt aIdleTimeout);
  80.567 +	IMPORT_C TImImap4PartialMailOptions PartialMailOptions() const;
  80.568 +	IMPORT_C void SetPartialMailOptionsL(TImImap4PartialMailOptions aPartialMailOptions); 
  80.569 +	IMPORT_C TInt32 BodyTextSizeLimit() const;
  80.570 +	IMPORT_C void SetBodyTextSizeLimitL(TInt32 aBodyTextSizeLimit);
  80.571 +	IMPORT_C TInt32 AttachmentSizeLimit() const;
  80.572 +	IMPORT_C void SetAttachmentSizeLimitL(TInt32 aAttachmentSizeLimit);
  80.573 +	IMPORT_C TBool UseExpunge() const;
  80.574 +	IMPORT_C void SetUseExpunge(TBool aFlag);
  80.575 +	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
  80.576 +	IMPORT_C TPtrC8 TlsSslDomain() const;
  80.577 +	IMPORT_C void SetUseSyncDownloadRules(TBool aFlag);
  80.578 +	IMPORT_C TBool UseSyncDownloadRules();
  80.579 +	IMPORT_C void SetFolderSyncDisabled(TBool aFlag);
  80.580 +	IMPORT_C TBool FolderSyncDisabled();
  80.581 +
  80.582 +private:
  80.583 +	class TImImap4SettingsExtension
  80.584 +		{
  80.585 +	public:
  80.586 +		inline TImImap4SettingsExtension();
  80.587 +	public:
  80.588 +		HBufC8* iLoginName;
  80.589 +		HBufC8* iPassword;
  80.590 +		HBufC8* iFolderPath;
  80.591 +		HBufC8*	iSearchString;
  80.592 +		HBufC8* iTlsSslDomain;
  80.593 +		TInt	iSyncRate;
  80.594 +		TInt	iImapIdleTimeout;
  80.595 +		TUint	iFetchSizeBytes;
  80.596 +		TImImap4PartialMailOptions	iPartialMailOptions;
  80.597 +		TInt32	iBodyTextSizeLimit;
  80.598 +		TInt32	iAttachmentSizeLimit;
  80.599 +		};
  80.600 +	
  80.601 +	inline TImImap4SettingsExtension* Extension() const;
  80.602 +	inline void CheckExtensionExistsL();
  80.603 +
  80.604 +	enum TImImap4EmailSettings
  80.605 +		{
  80.606 +		KImap4EmailSettingsClearFlag				= 0x00000000,
  80.607 +		KImap4BaseEmailSettingsLastUsedFlag			= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag, //0x00000002
  80.608 +		KImap4EmailDisconnectedModeFlag				= KImap4BaseEmailSettingsLastUsedFlag << 1, //0x00000004
  80.609 +		KImap4EmailAutoSendFlag						= KImap4EmailDisconnectedModeFlag << 1, //0x00000008
  80.610 +		KImap4EmailDeleteEmailsWhenDisconnecting	= KImap4EmailAutoSendFlag << 1, //0x00000010
  80.611 +		KImap4EmailAcknowledgeReceipts				= KImap4EmailDeleteEmailsWhenDisconnecting << 1, //0x00000020
  80.612 +		KImap4EmailUpdatingSeenFlags				= KImap4EmailAcknowledgeReceipts << 1, //0x00000040
  80.613 +		KImap4EmailIdleFlag							= KImap4EmailUpdatingSeenFlags << 1, //0x00000080
  80.614 +		KImap4EmailExpungeFlag						= KImap4EmailIdleFlag << 1,
  80.615 +		KImap4EmailUseSyncDownloadRules				= KImap4EmailExpungeFlag << 1, //0x00000200
  80.616 +		KImap4EmailSettingsFolderSyncDisabled		= KImap4EmailUseSyncDownloadRules << 1, //0x00000400
  80.617 +		KImap4EmailSettingsLastUsedFlag				= KImap4EmailSettingsFolderSyncDisabled
  80.618 +		};
  80.619 +
  80.620 +	TImImap4SettingsExtension*	iExtension; // renamed iReceiptAddress
  80.621 +
  80.622 +	TInt32  iInboxSyncLimit;
  80.623 +	TInt32  iMailboxSyncLimit;
  80.624 +
  80.625 +	TText8  iPathSeparator;
  80.626 +	TFolderSyncType iSynchroniseStrategy;
  80.627 +	TFolderSubscribeType iSubscriptionStrategy;
  80.628 +	TUint32	iMaxEmailSize;
  80.629 +	TImap4GetMailOptions iGetMailOptions;
  80.630 +	};
  80.631 +
  80.632 +
  80.633 +class TImImap4GetMailInfo
  80.634 +/**
  80.635 +Specifies options used when retrieving messages with IMAP.
  80.636 +
  80.637 +An TImImap4GetMailInfo is passed as a packaged parameter 
  80.638 +to CImap4ClientMtm::InvokeAsyncFunctionL() when a message
  80.639 +getting command is issued.
  80.640 +
  80.641 +Options include the maximum message size, and what 
  80.642 +message parts are required.  
  80.643 +
  80.644 +@see CImImap4GetMail
  80.645 +@see TImap4Cmds
  80.646 +
  80.647 +@publishedAll
  80.648 +@released
  80.649 +*/
  80.650 +	{
  80.651 +public:
  80.652 +	/** The maximum message size (bytes). 
  80.653 +	Messages of greater size are not fetched. */
  80.654 +	TInt32					iMaxEmailSize;
  80.655 +	/** The required message parts. */
  80.656 +	TImap4GetMailOptions	iGetMailBodyParts;
  80.657 +	/** The destination folder ID, specifying the
  80.658 +	target folder when messages are copied or moved. */
  80.659 +	TMsvId					iDestinationFolder;
  80.660 +	};
  80.661 +
  80.662 +/**
  80.663 +Specifies message criteria that are used as a filter when retrieving messages partially.
  80.664 +
  80.665 +Options include the maximum size for the whole message,
  80.666 +the maximum size for the body of the message,
  80.667 +the maximum size for the attachments with the message, and 
  80.668 +the message parts required.
  80.669 +
  80.670 +An TImImap4GetPartialMailInfo is passed as a packaged parameter 
  80.671 +to CImap4ClientMtm::InvokeAsyncFunctionL() when a message
  80.672 +populate command is issued.
  80.673 +
  80.674 +@see
  80.675 +CImImap4GetMail
  80.676 +
  80.677 +@publishedAll
  80.678 +@released
  80.679 +*/
  80.680 +
  80.681 +class TImImap4GetPartialMailInfo : public TImImap4GetMailInfo
  80.682 +	{
  80.683 +public:
  80.684 +	/** The maximum size limit for the total message (bytes). */
  80.685 +	TInt32		iTotalSizeLimit;
  80.686 +	/** The maximum size limit for body of the message (bytes). */
  80.687 +	TInt32		iBodyTextSizeLimit;
  80.688 +	/** The maximum size limit for the attachments  (bytes). */
  80.689 +	TInt32		iAttachmentSizeLimit;
  80.690 +	/** The required message parts. */
  80.691 +	TImImap4PartialMailOptions	iPartialMailOptions;
  80.692 +	};
  80.693 +	
  80.694 +inline CImImap4Settings::TImImap4SettingsExtension* CImImap4Settings::Extension() const
  80.695 +	{
  80.696 +	return iExtension;
  80.697 +	}
  80.698 +
  80.699 +inline void CImImap4Settings::CheckExtensionExistsL()
  80.700 +	{
  80.701 +	if (!iExtension)
  80.702 +		iExtension=new (ELeave) CImImap4Settings::TImImap4SettingsExtension;
  80.703 +	}
  80.704 +inline CImImap4Settings::TImImap4SettingsExtension::TImImap4SettingsExtension() 
  80.705 +: iLoginName(NULL) ,iPassword(NULL) ,iFolderPath(NULL),iSearchString(NULL),iTlsSslDomain(NULL), iSyncRate(KImapDefaultInboxSyncRate), iImapIdleTimeout(KImapDefaultIdleTimeout), iFetchSizeBytes(KImapDefaultFetchSizeBytes),
  80.706 +	iPartialMailOptions(ENoSizeLimits),iBodyTextSizeLimit(KMaxTInt),iAttachmentSizeLimit(KMaxTInt)
  80.707 +	{
  80.708 +	}
  80.709 +
  80.710 +
  80.711 +#endif // __IMAPSET_H__
    81.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.2 +++ b/epoc32/include/app/imcmmain.h	Wed Mar 31 12:27:01 2010 +0100
    81.3 @@ -0,0 +1,41 @@
    81.4 +
    81.5 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    81.6 +// All rights reserved.
    81.7 +// This component and the accompanying materials are made available
    81.8 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    81.9 +// which accompanies this distribution, and is available
   81.10 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   81.11 +//
   81.12 +// Initial Contributors:
   81.13 +// Nokia Corporation - initial contribution.
   81.14 +//
   81.15 +// Contributors:
   81.16 +//
   81.17 +// Description:
   81.18 +//
   81.19 +
   81.20 +
   81.21 +
   81.22 +/**
   81.23 + @file
   81.24 + @publishedAll
   81.25 + @release
   81.26 +*/
   81.27 +
   81.28 +#if !defined (__IMCMMAIN_H__)
   81.29 +#define __IMCMMAIN_H__
   81.30 +
   81.31 +#if !defined (__E32STD_H__)
   81.32 +#include <e32std.h>
   81.33 +#endif
   81.34 +
   81.35 +#if !defined (__BARSC_H__)
   81.36 +#include <barsc.h>		// RResourceFile
   81.37 +#endif
   81.38 +
   81.39 +
   81.40 +GLREF_C void OpenResourceFileL(RResourceFile& aFile, RFs& anFs);
   81.41 +GLDEF_C void CloseResourceFile( TAny* aResourceFile );
   81.42 +
   81.43 +
   81.44 +#endif
    82.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.2 +++ b/epoc32/include/app/imcvcodc.h	Wed Mar 31 12:27:01 2010 +0100
    82.3 @@ -0,0 +1,360 @@
    82.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    82.5 +// All rights reserved.
    82.6 +// This component and the accompanying materials are made available
    82.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    82.8 +// which accompanies this distribution, and is available
    82.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   82.10 +//
   82.11 +// Initial Contributors:
   82.12 +// Nokia Corporation - initial contribution.
   82.13 +//
   82.14 +// Contributors:
   82.15 +//
   82.16 +// Description:
   82.17 +//
   82.18 +
   82.19 +
   82.20 +#if !defined(__IMCVCODC_H__)
   82.21 +#define __IMCVCODC_H__
   82.22 +
   82.23 +#include <s32buf.h>
   82.24 +#include <s32stor.h>
   82.25 +#include <txtrich.h>
   82.26 +#include <miutatch.h>
   82.27 +#include <miutconv.h>
   82.28 +#include <miuthdr.h>
   82.29 +#include <mentact.h>		// CMsgActive
   82.30 +
   82.31 +#include <imcvdata.h>
   82.32 +#include <imcvtext.h>
   82.33 +#include <imutdll.h>
   82.34 +
   82.35 +#define KBase64 _L("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")
   82.36 +#define KCharFormat _L("%c")
   82.37 +
   82.38 + // Maximum length allowed for an 'encoded-word' rfc2047
   82.39 +const TInt KEncodedWordMaxLength = 75;
   82.40 +
   82.41 +// All encoding information except data and charset name length. =?B?=?    => 7
   82.42 +const TInt KMaxEncodedInformationLength = 7;
   82.43 +
   82.44 +// Length of the field name, eg "Subject: ". This may change as other fields are processed.  
   82.45 +const TInt KMaxHeaderFieldNameLength = 12;
   82.46 +
   82.47 +const TInt KImCvFinished=(-1);
   82.48 +const TInt KImCvAdvance=(1);
   82.49 +
   82.50 +
   82.51 +// error states involved in sending attachments etc.
   82.52 +/**
   82.53 +@internalComponent
   82.54 +@deprecated
   82.55 +*/
   82.56 +enum TIattErrorCode
   82.57 +	{
   82.58 +	KImAttNoError = 0,
   82.59 +	KImAttFinished = 1
   82.60 +	};
   82.61 +
   82.62 +
   82.63 +/**
   82.64 +@internalComponent
   82.65 +@released
   82.66 +*/
   82.67 +enum TImBodyConvAlgorithm
   82.68 +	{
   82.69 +	ENoAlgorithm,
   82.70 +	EQPEncode,
   82.71 +	EQPDecode,
   82.72 +	EBase64Encode,
   82.73 +	EBase64Decode,
   82.74 +	EUUEncode,
   82.75 +	EUUDecode
   82.76 +	};
   82.77 +	
   82.78 +// Used in CImSendConvert
   82.79 +/**
   82.80 +@internalComponent
   82.81 +@deprecated
   82.82 +*/
   82.83 +enum TImSendEncoding 
   82.84 +	{ 
   82.85 +	ESendNoAlgorithm,
   82.86 +	ESendMimeAlgorithm
   82.87 +	};	
   82.88 +
   82.89 +struct SAttachmentInfo
   82.90 +/**
   82.91 +@internalComponent
   82.92 +@released
   82.93 +*/
   82.94 +	{
   82.95 +	TInt iSize;
   82.96 +	TFileName iName;
   82.97 +	TFileName iPath;
   82.98 +	TBool iComplete;
   82.99 +	};
  82.100 +
  82.101 +// Shared implementation code	
  82.102 +//----------------------------------------------------------------------------------------
  82.103 +class TImCodec
  82.104 +//----------------------------------------------------------------------------------------
  82.105 +/**
  82.106 +@internalAll
  82.107 +@released
  82.108 +*/
  82.109 +	{
  82.110 +protected:
  82.111 +	// base64 and UU coding defines.
  82.112 +	enum EMaskValues{ ESixBitMask = 0x3F, EEightBitMask = 0xFF };
  82.113 +	enum EMaskShiftValues{ ESix = 6, EFour = 4, ETwo = 2, EZero = 0 };
  82.114 +
  82.115 +public:
  82.116 +	virtual TInt Encode( const TDesC8& aSrcString, TDes8& rDestString)=0 ;
  82.117 +	virtual TBool Decode( const TDesC8& aInputLine, TDes8& rOutputLine)=0;
  82.118 +
  82.119 +protected:
  82.120 +	// TImCodec();
  82.121 +	inline TBool IsDigit( TChar aChar );
  82.122 +	};
  82.123 +
  82.124 +
  82.125 +// Interface for sending file data.
  82.126 +//----------------------------------------------------------------------------------------
  82.127 +class TImFileCodec : public TImCodec
  82.128 +//----------------------------------------------------------------------------------------
  82.129 +/**
  82.130 +@internalAll
  82.131 +@released
  82.132 +*/
  82.133 +	{
  82.134 +public:
  82.135 +	virtual TInt PrefixNextLineL( TDes8& rOutputLine, const TFileName& aName, TInt& rPaddingCount );
  82.136 +	virtual TInt PostfixNextLine( TDes8& rOutputLine, TInt& rPaddingCount );
  82.137 +	virtual void Initialise();
  82.138 +
  82.139 +protected:
  82.140 +	TInt iPrefixState;
  82.141 +	TInt iPostfixState;
  82.142 +	};	
  82.143 +
  82.144 +// Dummy, just copies
  82.145 +//----------------------------------------------------------------------------------------
  82.146 +class TImCodecNull :  public TImFileCodec
  82.147 +//----------------------------------------------------------------------------------------
  82.148 +/**
  82.149 +@internalComponent
  82.150 +@released
  82.151 +*/
  82.152 +	{
  82.153 +public:
  82.154 +	TInt Encode( const TDesC8& aSrcString, TDes8& rDestString);
  82.155 +	TBool Decode( const TDesC8& aInputLine, TDes8& rOutputLine);
  82.156 +	};
  82.157 +	
  82.158 +// Quoted-printable encoding/decoding
  82.159 +
  82.160 +//----------------------------------------------------------------------------------------
  82.161 +class TImCodecQP : public TImFileCodec
  82.162 +//----------------------------------------------------------------------------------------
  82.163 +/**
  82.164 +@internalAll
  82.165 +@released
  82.166 +*/
  82.167 +	{
  82.168 +public:
  82.169 +	IMPORT_C TImCodecQP();
  82.170 +	IMPORT_C TInt Encode( const TDesC8& aSrcString, TDes8& rDestString);
  82.171 +	IMPORT_C TBool Decode( const TDesC8& aInputLine, TDes8& rOutputLine);
  82.172 +
  82.173 +	// Not to be used anymore..
  82.174 +	IMPORT_C TInt EncodeRichText( const TDesC8& aInputLine, TDes8& rOutputLine);
  82.175 +	IMPORT_C TInt DecodeRichText( const TDesC8& aSrcString, TDes& rDestString );
  82.176 +
  82.177 +	// Functions which allow flexiblity. Can replace the '=' char or add characters..
  82.178 +	// to what is defined as 'plain.
  82.179 +	inline void AddPlainChar(const TDesC8&  aCharList );
  82.180 +	inline void AddEncodeChar(const TDesC8&  aCharList );
  82.181 +	inline void SetQPChar( TUint8 aChar);
  82.182 +
  82.183 +	inline TUint8 ReplacementChar( TChar aControlChar );
  82.184 +	inline TBool IsPlain( TChar aChar );
  82.185 +
  82.186 +private:
  82.187 +	TBool SmartBreak( TInt written, const TDesC8& pSource );
  82.188 +	inline TBool IsBreakable( TChar aChar);
  82.189 +	inline void AddSoftLineBreak(TDes8& aPtr, TInt& aPadding, TInt& aWritten);
  82.190 +	inline void AddSoftLineBreak(const TUint8* apEnd, TUint8* aPtr, TInt& aPadding, TInt& aWritten);
  82.191 +
  82.192 +private:
  82.193 +	TUint8 iQPCharacter;
  82.194 +	TPtrC8 iPlainCharList;  
  82.195 +	TPtrC8 iEncodeCharList;  
  82.196 +
  82.197 +	TInt iPaddingCount;
  82.198 +	};
  82.199 +
  82.200 +
  82.201 +
  82.202 +// Base64 coding/decoding
  82.203 +
  82.204 +//----------------------------------------------------------------------------------------
  82.205 +class TImCodecB64 : public TImFileCodec
  82.206 +//----------------------------------------------------------------------------------------
  82.207 +/**
  82.208 +@publishedAll
  82.209 +@released
  82.210 +*/
  82.211 +	{
  82.212 +private:
  82.213 +	// base64 coding defines
  82.214 +	enum{ EPadChar = 64 };
  82.215 +
  82.216 +public:
  82.217 +	IMPORT_C TImCodecB64();
  82.218 +	IMPORT_C TInt Encode( const TDesC8& aSrcString, TDes8& rDestString);
  82.219 +	IMPORT_C TBool Decode( const TDesC8& aSrcString, TDes8& rDestString);
  82.220 + 	IMPORT_C void  Initialise();
  82.221 +
  82.222 +protected:
  82.223 +	TInt DoEncode(const TDesC8& aSrcString, TDes8& rDestString, TBool aInsertLineBreaks);
  82.224 +
  82.225 +private:
  82.226 +	TInt iShiftStored;
  82.227 +	TInt iMaskShiftStored;
  82.228 +	};
  82.229 +
  82.230 +class TImCodecB64WithLineBreaks : public TImCodecB64
  82.231 +/**
  82.232 +@internalComponent
  82.233 +@released
  82.234 +*/
  82.235 +	{
  82.236 +public:
  82.237 +	TInt Encode(const TDesC8& aSrcString, TDes8& rDestString);
  82.238 +	};
  82.239 +
  82.240 +
  82.241 +// UU coding/decoding
  82.242 +
  82.243 +//----------------------------------------------------------------------------------------
  82.244 +class TImCodecUU : public TImFileCodec
  82.245 +//----------------------------------------------------------------------------------------
  82.246 +/**
  82.247 +@publishedAll
  82.248 +@released
  82.249 +*/
  82.250 +	{
  82.251 +private:
  82.252 +	// UU coding defines
  82.253 +
  82.254 +	enum{ ESpace = 32, EBackQuote = 96 };
  82.255 +
  82.256 +	enum TImBodyPostfix
  82.257 +		{
  82.258 +		EInvertedComma = 0,
  82.259 +		EEndString,
  82.260 +		EEndOfPostfix
  82.261 +		};
  82.262 +
  82.263 +public:
  82.264 +	IMPORT_C TImCodecUU();
  82.265 +	IMPORT_C TInt Encode( const TDesC8& aSrcString, TDes8& rDestString );
  82.266 +	IMPORT_C TBool Decode( const TDesC8& aSrcString, TDes8& rDestString );
  82.267 +	TInt PrefixNextLineL( TDes8& rOutputLine, const TFileName& aName, TInt& rPaddingCount );
  82.268 +	TInt PostfixNextLine( TDes8& rOutputLine, TInt& rPaddingCount );
  82.269 +private:
  82.270 +	void AppendFilenameL( TDes8& rOutputLine, const TFileName& aName );
  82.271 +	
  82.272 +	};
  82.273 +
  82.274 +
  82.275 +
  82.276 +
  82.277 +// For converting a text string to/from encoded form
  82.278 +// Note: 'Word' here has special meaning derived from the one defined in rfc2047.
  82.279 +// It refers to one encoding instance.
  82.280 +
  82.281 +//----------------------------------------------------------------------------------------
  82.282 +class CImConvertHeader : public CBase
  82.283 +//----------------------------------------------------------------------------------------
  82.284 +/**
  82.285 +@internalTechnology
  82.286 +@released
  82.287 +*/
  82.288 +	{
  82.289 +public:
  82.290 +	IMPORT_C static CImConvertHeader* NewL(CImConvertCharconv& aConverter);
  82.291 +	~CImConvertHeader();
  82.292 +
  82.293 +	IMPORT_C void SetMessageType(TBool aIsMIME); 
  82.294 +	IMPORT_C void DecodeAllHeaderFieldsL(CImHeader& rHeader); 
  82.295 +
  82.296 +	// Functions for decoding & converting descriptors
  82.297 +
  82.298 +	IMPORT_C void DecodeNonMIMEHeaderFieldL(const TDesC8& aBufIn, TDes& aBufOut); 
  82.299 +	IMPORT_C void DecodeHeaderFieldL(const TDesC8& aBufIn, TDes& aBufOut); 
  82.300 +	IMPORT_C void DecodeHeaderFieldL(const TDesC16& aBufIn, TDes& aBufOut); 
  82.301 +	IMPORT_C void ConvertHeaderFieldL(const TDesC16& aBufIn, RBuf8& aBufOut, TBool aIsAddressField); 
  82.302 +	
  82.303 +	// Header needed for retrieving encoding information, used in Send code.
  82.304 +    IMPORT_C void EncodeHeaderFieldL(const TDesC& aBufIn, RBuf8& aBufOut, 
  82.305 +            CArrayFix<TImHeaderEncodingInfo>* aInfoArray, TInt aState, TInt aArrayVal = 0);
  82.306 +
  82.307 +	IMPORT_C void EncodeHeaderFieldL(const TDesC& aBufIn, RBuf8& aBufOut,  
  82.308 +		                             const TUint aCharset, const TImHeaderEncodingInfo::TEncodingType aType, TBool aIsAddressField);
  82.309 +	
  82.310 +	IMPORT_C TBool FindEncodedWord(TPtrC8& aData, TInt& aInit,TInt& rStart, TInt& rEnd);
  82.311 +
  82.312 +	void Append(TDes& aBuffer, const TDesC8& aAddition);
  82.313 +	inline CImConvertCharconv& CharConv();
  82.314 +
  82.315 +	IMPORT_C TUint OverrideCharset() const;
  82.316 +	IMPORT_C void SetOverrideCharset(TUint aCharset);
  82.317 +
  82.318 +private:
  82.319 +	void ConstructL();
  82.320 +	CImConvertHeader(CImConvertCharconv&);
  82.321 +	// Functions dealing only with single 'encoded-word's
  82.322 +	void GetCharsetAndEncodeDataL(const TDesC& aBufIn, RBuf8& aBufOut, TImHeaderEncodingInfo& aInfo);
  82.323 +	void EncodeWordL(const TDesC& aBufIn, RBuf8& aBufOut, TImHeaderEncodingInfo& aInfo,
  82.324 +						const TDesC8& aCharsetName, RBuf8& aEncodedWord);
  82.325 +
  82.326 +	TBool DecodeWordL(const TDesC8& aBufIn, TDes& aBufOut, TInt rRemainder); 
  82.327 +	void DecodeRecipientListL( CDesCArray& aArray);
  82.328 +	void DecodeFieldL(const TDesC& aField);
  82.329 +
  82.330 +	TBool DoCharsetConversionL(const TDesC& aDataToConvert, RBuf8& aEncodedWord);
  82.331 +
  82.332 +	void DoEncodingL(RBuf8& aEncodedWord, TImHeaderEncodingInfo& aInfo);
  82.333 +
  82.334 +	TInt AddEncodedWordInfoL(const TDesC8& aEncodedWord, RBuf8& aBufOut, 
  82.335 +							 TImHeaderEncodingInfo& aInfo, const TDesC8& aCharsetName);
  82.336 +
  82.337 +	TBool IsAscii( TUint aChar ) const;
  82.338 +	TBool ExtractTextToEncode(const TDesC& aBufIn, TInt& rStart, TInt& rEnd, TBool aIsAddressField);
  82.339 +	void Insert(TDes8& aBuffer, const TDesC16& aInsert);
  82.340 +
  82.341 +private:
  82.342 +	TImHeaderEncodingInfo iEncodingInfo;
  82.343 +	CImConvertCharconv& iCharConv;
  82.344 +
  82.345 +	// Get access to QP/ Base64 encoding/decoding functions
  82.346 +	TImCodecB64	 iB64Codec;
  82.347 +	TImCodecQP	 iQPCodec;
  82.348 +
  82.349 +	// Need in the narrow build, to check if possible to convert to/from
  82.350 +	// the machines character set.
  82.351 +	TUint iCharacterSetId; 
  82.352 +
  82.353 +	CImHeader* iHeader;	
  82.354 +
  82.355 +	// Converted static variables used in EncodeWordL()
  82.356 +	TBool	isMIMEMessageHeader;
  82.357 +	TUint   iOverrideCharset;
  82.358 +	};
  82.359 +
  82.360 +
  82.361 +#include <imcvcodc.inl>
  82.362 +
  82.363 +#endif
    83.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.2 +++ b/epoc32/include/app/impcmtm.h	Wed Mar 31 12:27:01 2010 +0100
    83.3 @@ -0,0 +1,416 @@
    83.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    83.5 +// All rights reserved.
    83.6 +// This component and the accompanying materials are made available
    83.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    83.8 +// which accompanies this distribution, and is available
    83.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   83.10 +//
   83.11 +// Initial Contributors:
   83.12 +// Nokia Corporation - initial contribution.
   83.13 +//
   83.14 +// Contributors:
   83.15 +//
   83.16 +// Description:
   83.17 +// Client MTM for the IMAP4 protocol
   83.18 +// 
   83.19 +//
   83.20 +
   83.21 +
   83.22 +#if !defined (__IMPCMTM_H__)
   83.23 +#define __IMPCMTM_H__
   83.24 +
   83.25 +#if !defined (__MTCLBASE_H_)
   83.26 +#include <mtclbase.h>
   83.27 +#endif
   83.28 +
   83.29 +#if !defined (__MIUTHDR_H_)
   83.30 +#include <miuthdr.h>
   83.31 +#endif
   83.32 +
   83.33 +#if !defined (__MIUTPARS_H__)
   83.34 +#include <miutpars.h>		//TImMessageField
   83.35 +#endif
   83.36 +
   83.37 +#if !defined (__IMAPSET_H__)
   83.38 +#include <imapset.h>
   83.39 +#endif
   83.40 +
   83.41 +#if !defined (__IMAPCMDS_H__)
   83.42 +#include <imapcmds.h>
   83.43 +#endif
   83.44 +
   83.45 +#if !defined(__OFFOP_H__)
   83.46 +#include <offop.h>
   83.47 +#endif
   83.48 +
   83.49 +#if !defined(__MIUTMSG_H__)
   83.50 +#include <miutmsg.h>
   83.51 +#endif
   83.52 +
   83.53 +
   83.54 +
   83.55 +// Forward declarations.
   83.56 +class CImap4ClientSessionObserver;
   83.57 +class CImImap4GetMail;
   83.58 +class CImEmailAutoSend;
   83.59 +
   83.60 +/////////////////////////////////////////////////////////////////////////////
   83.61 +// Imap4 Client MTM  
   83.62 +class CImap4ClientMtm : public CBaseMtm, public MImUndoOffLineOperation
   83.63 +
   83.64 +/** IMAP4 client MTM interface, providing access to the email services using the IMAP4 
   83.65 +protocol.
   83.66 +
   83.67 +The class provides support for:
   83.68 +
   83.69 +- connecting to remote IMAP4 mail servers
   83.70 +- synchronising message headers with mailboxes on these servers
   83.71 +- getting message bodies and attachments
   83.72 +- copying and moving messages
   83.73 +- creating messages that forward or reply to IMAP4 messages
   83.74 +- server notification of new messages using IMAP IDLE
   83.75 +- queueing operations requested when there is no connection to a mail server, to be 
   83.76 +performed when a connection is made (offline operations).
   83.77 +
   83.78 +Note that CImap4ClientMtm does not support many of the generic functions defined by 
   83.79 +the @c CBaseMtm base class. In particular:
   83.80 +
   83.81 +- Message address information, body, subjects, and attachments are not manipulated 
   83.82 +through CImap4ClientMtm. Consequently, SaveMessageL() has an empty 
   83.83 +implementation, and is not used. Message access and manipulation is instead done 
   83.84 +through CImEmailMessage, which understands the email specific message formats, 
   83.85 +including MHTML (RFC 2557). The RFC 822 email header, which includes subject and 
   83.86 +address information, is encapsulated in a CImHeader object, which can be obtained from 
   83.87 +a CImEmailMessage object. IMAP also has its own specific flags, such as draft, 
   83.88 +answered, and deleted: this can be accessed through TMsvEmailEntry, which extends the 
   83.89 +message server's generic TMsvEntry to add email-specific information.
   83.90 +
   83.91 +- The idea of a default service used by base class functions DefaultServiceL(), 
   83.92 +ChangeDefaultServiceL(), and RemoveDefaultServiceL() is not supported.
   83.93 +
   83.94 +IMAP specific commands are issued through the InvokeAsyncFunctionL() function, with 
   83.95 +the commands defined in the #TImap4Cmds enumeration. Details of particular commands 
   83.96 +are given in the documentation for that enumeration, but the following describes some of 
   83.97 +the key concepts required to use those commands. Note that usually these commands do 
   83.98 +not correspond directly to the IMAP protocol commands described in RFC 3501. Instead, 
   83.99 +they are at a higher level, to simplify the logic required for an email client program. 
  83.100 +
  83.101 +--------------------------------------
  83.102 +
  83.103 +Connection and services
  83.104 +
  83.105 +Settings for connection to and use of an IMAP4 mail server and its mailboxes are 
  83.106 +encapsulated in an CImImap4Settings object, created and accessed through 
  83.107 +CEmailAccounts. Preferences for the network connection (e.g. the ISP to use) to be made 
  83.108 +to access an IMAP server are also accessed through CEmailAccounts.
  83.109 +
  83.110 +The settings are associated with a service-type entry in the Message Server's message 
  83.111 +store. Message and folder type entries under the service entry store a local copy of the 
  83.112 +mailboxes and messages that are present on an IMAP server. For this reason, the service 
  83.113 +is sometimes referred to as the local mirror of an IMAP server.
  83.114 +
  83.115 +By default, it is assumed that the user has a primary mailbox on the server called INBOX, 
  83.116 +though this can be changed if necessary using CImImap4Settings::SetFolderPathL(). (To 
  83.117 +avoid confusion, the term "Inbox" used in the IMAP MTM documentation refers to this 
  83.118 +mailbox, rather than the Message Server's standard local Inbox folder.)
  83.119 +
  83.120 +The settings store the user's log-in details required to access the IMAP server, and other 
  83.121 +settings not related to connection, but which affect the behaviour of commands, such as 
  83.122 +synchronisation, made to the service.
  83.123 +
  83.124 +--------------------------------------
  83.125 +
  83.126 +Synchronisation
  83.127 +
  83.128 +The IMAP4 MTM provides the means to synchronise message headers on a remote 
  83.129 +IMAP mailboxes with the messages headers on the phone. Note that synchronisation only 
  83.130 +refers to message headers. Once headers are synchronised, populate operations (i.e. 
  83.131 +getting the message bodies) can be done.
  83.132 +
  83.133 +The basic steps involved in a full synchronisation are:
  83.134 +
  83.135 +- The headers of messages in the Inbox are synchronised. 
  83.136 +- The local list of folders is synchronised with those existing on the remote IMAP service. 
  83.137 +Depending on the service settings, the local or remote settings of subscribed mailboxes 
  83.138 +may be updated (see below for more information). 
  83.139 +- The headers of messages in subscribed folders are synchronised. 
  83.140 +
  83.141 +Queued offline operations (see below) pending on the Inbox or subscribed folders are 
  83.142 +performed prior to the relevant folder being synchronised.
  83.143 +
  83.144 +Synchronisations can be performed in the background or the foreground. A foreground 
  83.145 +synchronisation means no other requests, such as message fetching, can be made to the 
  83.146 +MTM, until the synchronisation is complete. A background synchronisation allows some 
  83.147 +types of command to be given while it is in progress. Commands that write to the remote 
  83.148 +server are not allowed however while a background synchronisation is in progress. A 
  83.149 +client is informed of the state of a background synchronisation through the 
  83.150 +MMsvImapConnectionObserver callback interface.
  83.151 +
  83.152 +Synchronisations commands are made through  
  83.153 +CImap4ClientMtm::InvokeAsyncFunctionL(). There a variety of commands available 
  83.154 +that give different options for compounding synchronisation
  83.155 +with other commands, such as connection, and synchronising only particular folders. See 
  83.156 +TImap4Cmds for details. Progress information for synchronisation commands can be 
  83.157 +obtained from the CMsvOperation object returned by the InvokeAsyncFunctionL(). 
  83.158 +Synchronisation progress information is encapsulated in a TImap4SyncProgress object.
  83.159 +
  83.160 +Settings that affect how a synchronisation is performed include:
  83.161 +
  83.162 +- Subscriptions: when an IMAP service had been synchronised, the Messaging server will 
  83.163 +contain entries for all folders on the remote server. These entries will be marked invisible 
  83.164 +within the TMsvEntry for the folder, implying that they should be invisible to the user. 
  83.165 +Messages in these folders are not synchronised unless the folder has been subscribed to. 
  83.166 +Note a folder subscription can be set either locally (i.e. just on the phone), using 
  83.167 +the #KIMAP4MTMLocalSubscribe command, or remotely (on the server), possibly through email 
  83.168 +clients on other devices. A service can be set to synchronise folders using either or both 
  83.169 +of these types of subscription (CImImap4Settings::SetSynchronise()). Local and remote 
  83.170 +subscriptions can themselves be synchronised in various ways (CImImap4Settings::SetSuscribe()).
  83.171 +
  83.172 +- Filters: a filter prevents certain e-mail messages from being synchronised onto the 
  83.173 +device when a client requests a synchronisation. Filters can include anything permitted by 
  83.174 +the IMAP Search command, including date, size, content, and message flags.
  83.175 +
  83.176 +- Limits: service settings can limit the number of emails synchronised to the inbox 
  83.177 +(CImImap4Settings::SetInboxSynchronisationLimit()), and to other folders 
  83.178 +(CImImap4Settings::SetMailboxSynchronisationLimit()).
  83.179 +
  83.180 +- Sync rate: one of the synchronisation commands 
  83.181 +(KIMAP4MTMConnectAndSyncCompleteAfterDisconnect) periodically resynchronises 
  83.182 +the Inbox until the service is disconnected. CImImap4Settings::SyncRate() sets the 
  83.183 +refresh period.
  83.184 +
  83.185 +--------------------------------------
  83.186 +
  83.187 +Getting and copying messages
  83.188 +
  83.189 +After messages headers have been synchronised, message bodies and attachments can be 
  83.190 +fetched from the remote email server. Getting message parts and saving them in the 
  83.191 +mirror service is calling populating them.
  83.192 +
  83.193 +Commands for these actions can be made through  
  83.194 +CImap4ClientMtm::InvokeAsyncFunctionL(). There are a large number of commands, 
  83.195 +for different combinations of these options:
  83.196 +
  83.197 +- action type: whether to just populate messages, or to also copy or move them to a local 
  83.198 +folder 
  83.199 +- message selection: whether to get all, new, or selected messages
  83.200 +- connection: whether to make a new connection or assume an existing connection
  83.201 +- disconnect: whether to disconnect or stay online after operation is complete
  83.202 +
  83.203 +For the populate type commands, further options can be set that control the message 
  83.204 +getting behaviour.  Basic options control, encapsulated in TImImap4GetMailInfo, specify 
  83.205 +whether body text and/or attachments are fetched, and a maximum message size. There 
  83.206 +are also options, encapsulated in TImImap4GetPartialMailInfo, that allow size limits to 
  83.207 +be separately specified for body text and/or attachments. If the the body is larger than the 
  83.208 +limit, then the body is partially downloaded up to the limit. Only attachments smaller 
  83.209 +than the specified size are downloaded. A partially downloaded message can later be 
  83.210 +fully downloaded.
  83.211 +
  83.212 +For the copy or move type commands,  a TImImap4GetMailInfo parameter is supplied, in 
  83.213 +order to specify the destination folder for the messages, and a maximum message size. 
  83.214 +
  83.215 +Progress information for getting commands can be obtained from the CMsvOperation 
  83.216 +object returned by the InvokeAsyncFunctionL(). Progress information is encapsulated in 
  83.217 +a TImap4GenericProgress object.
  83.218 +
  83.219 +Fetching and then copying or moving specified messages can also be performed by using 
  83.220 +the standard Messaging Framework @c CMsvEntry::CopyL() and @c 
  83.221 +CMsvEntry::MoveL() functions on entries under the remote service. If these functions are 
  83.222 +used, then the entire message is fetched without size limits.
  83.223 +
  83.224 +CMsvEntry functions can also be used to:
  83.225 +
  83.226 +- create a folder on a remote server
  83.227 +- delete messages
  83.228 +- copy or move messages from a local folder into a remote folder
  83.229 +- copy or move messages between remote folders
  83.230 +
  83.231 +Note that changing an existing entry through CMsvEntry is not supported. An MTM-
  83.232 +specific command #KIMAP4MTMRenameFolder is instead provided to rename a remote 
  83.233 +folder.
  83.234 +
  83.235 +The page "CMsvEntry functions for IMAP4 message entries", linked to in the "See also" 
  83.236 +section below, provides more details on using CMsvEntry.
  83.237 +
  83.238 +--------------------------------------
  83.239 +
  83.240 +Offline operations
  83.241 +
  83.242 +Some operations can only be performed while online, while other commands may 
  83.243 +be stored while offline for processing when next connected. An attempt to perform a 
  83.244 +command while offline that requires the MTM to be connected results in immediate 
  83.245 +completion with the error code KErrDisconnected.
  83.246 +
  83.247 +Permitted offline operations include:
  83.248 +
  83.249 +- copy
  83.250 +- move
  83.251 +- delete
  83.252 +
  83.253 +Queued offline operations are usually performed when a connection is made, prior to the  
  83.254 +relevant folder being synchronised. Delete operations can alternatively be set to be done 
  83.255 +on disconnection using the service setting 
  83.256 +CImImap4Settings::SetDeleteEmailsWhenDisconnecting().
  83.257 +
  83.258 +Note that:
  83.259 +- Offline operations are only permitted if the service setting SetDisconnectedUserMode() 
  83.260 +is true.
  83.261 +- It is possible to undo pending offline operations using the commands 
  83.262 +#KIMAP4MTMCancelOffLineOperations and #KIMAP4MTMUndeleteAll.
  83.263 +
  83.264 +--------------------------------------
  83.265 +
  83.266 +IMAP IDLE support
  83.267 +
  83.268 +IMAP IDLE (RFC 2177) is an optional expansion of the IMAP email accessing protocol 
  83.269 +that allows the server to send updates to the client that messages have been created or 
  83.270 +deleted in real time. The IDLE command is sent from the client to the server when the 
  83.271 +client is ready to accept unsolicited mailbox update messages. Whether the client requests 
  83.272 +the server to provide IDLE support is set in the CImImap4Settings::SetImapIdle() service 
  83.273 +setting. When the IMAP MTM receives such a notification, it synchronises the changed 
  83.274 +folder. Email clients can be notified of such changes by setting a MMsvEntryObserver 
  83.275 +observer on a folder.
  83.276 +
  83.277 +@publishedAll
  83.278 +@released
  83.279 +*/
  83.280 +	{
  83.281 +public:
  83.282 +   	IMPORT_C static CImap4ClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aSession);
  83.283 +	
  83.284 +	~CImap4ClientMtm();
  83.285 +	void HandleEntryEvent(TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
  83.286 +	void StoreL(); // uses a CMsvStore from the Session
  83.287 +	void RestoreL();
  83.288 +	CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
  83.289 +	CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
  83.290 +	TUint ValidateMessage(TUint aPartList);
  83.291 +	TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
  83.292 +	void SaveMessageL(); 
  83.293 +	void LoadMessageL();
  83.294 +	IMPORT_C void StoreSettingsL();	// uses a CMsvStore from the session
  83.295 +	IMPORT_C void RestoreSettingsL();
  83.296 +
  83.297 +	// --- RTTI functions ---
  83.298 +	TInt QueryCapability(TUid aCapability, TInt& aResponse);
  83.299 +	void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
  83.300 +	CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
  83.301 +	// Addressees have no meaning in the text mtm.
  83.302 +	void AddAddresseeL(const TDesC& aRealAddress);
  83.303 +	void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
  83.304 +	void RemoveAddressee(TInt aIndex);
  83.305 +
  83.306 +	// Attachment functions to support the SendAs API
  83.307 +
  83.308 +	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  83.309 +	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  83.310 +	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  83.311 +	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
  83.312 +	IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  83.313 +	IMPORT_C void CreateMessageL(TMsvId aServiceId);
  83.314 +	
  83.315 +	IMPORT_C virtual TMsvId DefaultServiceL() const;
  83.316 +	IMPORT_C virtual void RemoveDefaultServiceL();
  83.317 +	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
  83.318 +
  83.319 +public: // Returning a list of all the offline operations for a service entry.
  83.320 +    IMPORT_C CImOperationQueueList* QueueListL(CMsvEntry& aServiceEntry);
  83.321 +public:  // Wrapper to settings
  83.322 +    IMPORT_C const CImImap4Settings& Imap4Settings() const;
  83.323 +    IMPORT_C void SetImap4SettingsL(const CImImap4Settings& aSettings);
  83.324 +public: // inherited from MUndoOffLine
  83.325 +    virtual void UndoOffLineChangesL(const CImOffLineOperation& aDeleted, TMsvId aFolderId); 
  83.326 +protected:
  83.327 +	CImap4ClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aSession);
  83.328 +	void ConstructL();
  83.329 +	void ContextEntrySwitched(); // called after the context of this instance has been changed to another entry
  83.330 +
  83.331 +private:
  83.332 +	TBool ValidateAddress(const TPtrC& anAddress);
  83.333 +	void SendOnNextConnectionL();
  83.334 +	TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
  83.335 +	void FilterAllOrNewMailsL(TInt aFunctionId,const CMsvEntrySelection& aSelection,TDes8& aParameter);
  83.336 +	void FilterMailSelectionL(const CMsvEntrySelection& aSelection,TDes8& aParameter);
  83.337 +	CMsvOperation* CopyMoveOrPopulateL(TInt aFunctionId,TDes8& aParameter,TRequestStatus& aCompletionStatus);
  83.338 +	void ConvertToPartialPopulate(TDes8& aParameter);
  83.339 +	// To check whether a partial fetch or full fetch of message has to be done.
  83.340 +	TBool IsPartialPopulate(TDes8& aParameter);
  83.341 +
  83.342 +private:
  83.343 +	CImImap4Settings iImImap4Settings;
  83.344 +	TImMessageField iTImMessageField;
  83.345 +	CImap4ClientSessionObserver* iImap4ClientSessionObserver;
  83.346 +	HBufC* iEmailAddressFormatString;	// defines format of email address used by "Send as" API eg _L("/"%S/" <%S>")
  83.347 +	CImHeader* iHeader;
  83.348 +	CMsvEntrySelection* iMsvEntrySelection;
  83.349 +	CImImap4GetMail*	iImIMAP4GetMail;
  83.350 +	CImEmailOperation*	iImEmailOperation;
  83.351 +	TPckgBuf<TImImap4GetPartialMailInfo>	iImap4GetPartialMailInfo;
  83.352 +	};
  83.353 +
  83.354 +class CImImap4GetMail : public CMsvOperation
  83.355 +/** Encapsulates an operation to copy, move, and populate (i.e. download the full 
  83.356 +message body) IMAP4 emails from the remote inbox to any local folder.
  83.357 +
  83.358 +Note that the same operations are available by calling CImap4ClientMtm::InvokeAsyncFunctionL() 
  83.359 +with a suitable command. 
  83.360 +
  83.361 +@publishedAll
  83.362 +@released
  83.363 +*/
  83.364 +	{
  83.365 +public:
  83.366 +	IMPORT_C CMsvOperation* GetMailL(TInt aFunctionId, CImap4ClientMtm& aImap4ClientMtm, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aImap4GetMailInfo, TRequestStatus& aObserverRequestStatus);
  83.367 +	~CImImap4GetMail();
  83.368 +	void DoCancel();
  83.369 +	void RunL();
  83.370 +	const TDesC8& ProgressL();
  83.371 +	const TDesC8& FinalProgress();
  83.372 +private:
  83.373 +	CImImap4GetMail(CMsvSession& aMsvSession, CImap4ClientMtm& aImap4ClientMtm, TRequestStatus& aObserverRequestStatus);
  83.374 +	void ConstructL(TInt aFunctionId, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aImap4GetMailInfo);
  83.375 +	void SelectNextStateL();					// selects next state to go to
  83.376 +	void ChangeStateL();					// initiates the next state operation
  83.377 +	void SelectAndChangeToNextStateL();
  83.378 +	void RequestComplete(TInt aError);
  83.379 +	void Complete();
  83.380 +	void ConnectToMailboxL();
  83.381 +	void CopyMoveNewMessagesL(TBool aCopy);
  83.382 +	void CopyMoveMessageSelectionL(TBool aCopy);
  83.383 +	void CopyMoveAllMessagesL(TBool aCopy);
  83.384 +	void PopulateNewMessagesL();
  83.385 +	void PopulateAllMessagesL();
  83.386 +	void PopulateMessageSelectionL();
  83.387 +	void DisconnectFromMailboxL();
  83.388 +	void ResetProgress();
  83.389 +	void StoreProgressL();
  83.390 +private:
  83.391 +	enum TImImap4GetMailState
  83.392 +		{
  83.393 +		EConnectToMailbox,
  83.394 +		ECopyNewMessages,
  83.395 +		EMoveNewMessages,
  83.396 +		EPopulateNewMessages,
  83.397 +		ECopyMessageSelection,
  83.398 +		EMoveMessageSelection,
  83.399 +		EPopulateMessageSelection,
  83.400 +		ECopyAllMessages,
  83.401 +		EMoveAllMessages,
  83.402 +		EPopulateAllMessages,
  83.403 +		EDisconnectFromMailbox,
  83.404 +		EFinished
  83.405 +		};
  83.406 +	
  83.407 +	CImap4ClientMtm&				iImap4ClientMtm;
  83.408 +	CMsvEntrySelection*				iMsvEntrySelection;
  83.409 +	CMsvOperation*					iMsvOperation;
  83.410 +
  83.411 +	TImap4GenericProgress			iProgress;
  83.412 +	TImap4GenericProgress			iErrorProgress;
  83.413 +	TImImap4GetMailState			iState;
  83.414 +	TInt							iCommand;
  83.415 +	TPckgBuf<TImap4GenericProgress>	iProgressBuf;
  83.416 +	TPckgBuf<TImImap4GetPartialMailInfo>	iImap4GetPartialMailInfo;
  83.417 +	};
  83.418 +
  83.419 +#endif // __IMPCMTM_H__
    84.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.2 +++ b/epoc32/include/app/imsk.h	Wed Mar 31 12:27:01 2010 +0100
    84.3 @@ -0,0 +1,605 @@
    84.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    84.5 +// All rights reserved.
    84.6 +// This component and the accompanying materials are made available
    84.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    84.8 +// which accompanies this distribution, and is available
    84.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   84.10 +//
   84.11 +// Initial Contributors:
   84.12 +// Nokia Corporation - initial contribution.
   84.13 +//
   84.14 +// Contributors:
   84.15 +//
   84.16 +// Description:
   84.17 +// This file contains the API definition for the class CImTextServerSession.
   84.18 +// This class creates sockets and is responsible for transmitting data between client and the server 
   84.19 +// 
   84.20 +//
   84.21 +
   84.22 +
   84.23 +
   84.24 +/**
   84.25 + @file
   84.26 +*/
   84.27 +
   84.28 +
   84.29 +#ifndef __IMSK_H__
   84.30 +#define __IMSK_H__
   84.31 +
   84.32 +#include <e32base.h>
   84.33 +#include <es_sock.h>
   84.34 +#include <in_sock.h>
   84.35 +#include <f32file.h>
   84.36 +#include <mentact.h>
   84.37 +#include <miutlog.h>
   84.38 +#include <miut_err.h>
   84.39 +#include <miuthdr.h>
   84.40 +
   84.41 +#ifdef _DEBUG
   84.42 +#define __IMSK_SIMULATION
   84.43 +#endif
   84.44 +
   84.45 +// Enable Scripting in Debug Builds only
   84.46 +#ifdef _DEBUG
   84.47 +#define __IMSK_SCRIPTING
   84.48 +#endif
   84.49 +
   84.50 +const TInt EActivePriorityHigh = 1;
   84.51 +const TInt KCarriageLineFeedLength=2;
   84.52 +/** Max numeric IP address len = "0:0:0:0:0:0:194.217.242.23" = 45 chars */
   84.53 +const TInt KImskIPAddressLen=45;				// Max numeric IP address len = "255.255.255.255" = 15 chars
   84.54 +
   84.55 +/** Maximum buffer size of the received data 
   84.56 +@internalTechnology
   84.57 +@released
   84.58 +*/
   84.59 +typedef TBuf8<KImMailMaxBufferSize> TImMailBuffer;
   84.60 +
   84.61 +/** received buffer data line type
   84.62 +@internalTechnology
   84.63 +@released
   84.64 +*/
   84.65 +enum TImLineType
   84.66 +	{ 
   84.67 +	ECRLFTerminated, 
   84.68 +	EBufferTooSmall, 
   84.69 +	EReceiveBufferFull,
   84.70 +	EReceiveBufferEmpty
   84.71 +	};
   84.72 +
   84.73 +
   84.74 +class CImLog;
   84.75 +class CImTextServerScript;
   84.76 +class CImIAPPreferences;
   84.77 +class CImConnect;
   84.78 +class CSecureSocket;
   84.79 +class CImSocketIdleTimer;
   84.80 +
   84.81 +/**
   84.82 +Creates/opens socket and sends and receives data.
   84.83 +
   84.84 +@publishedAll
   84.85 +@released	
   84.86 +*/
   84.87 +class CImTextServerSession : public CMsgActive
   84.88 +	{
   84.89 +public:
   84.90 +	enum TImOperationMode{
   84.91 +		EImServerMode,
   84.92 +		EImClientMode
   84.93 +		};
   84.94 +
   84.95 +/**
   84.96 +	//cat				Construction
   84.97 +	@fn				NewL()
   84.98 +	Intended Usage	:	Static factory constructor. Uses two phase construction and 
   84.99 +						leaves nothing on the CleanupStack.
  84.100 +	@since			6.0
  84.101 +	@leave			KErrNoMemory.
  84.102 +	@return			A pointer to the newly created CImTextServerSession object. 
  84.103 +	@pre 			None
  84.104 +	@post			A fully constructed and initialised CImTextServerSession object.
  84.105 +	
  84.106 + */
  84.107 +	IMPORT_C static CImTextServerSession *NewL();
  84.108 +
  84.109 +	/**
  84.110 +	@internalTechnology
  84.111 +	@released
  84.112 +	*/
  84.113 +	IMPORT_C static CImTextServerSession* NewL(RSocketServ& aSocketServ, CImConnect& aConnect);
  84.114 +
  84.115 +/**
  84.116 +	//cat				Construction
  84.117 +	@fn				NewL(TInt aSendIdleTime, TInt aReceiveIdleTime)
  84.118 +	Intended Usage	:	Static factory constructor. Uses two phase construction and 
  84.119 +						leaves nothing on the CleanupStack.
  84.120 +	@since			7.0s
  84.121 +	@param			aSendIdleTime is the time for which the idle timer runs (for a send)
  84.122 +	@param			aReceiveIdleTime is the time for which the idle timer runs (for a recieve)
  84.123 +	@leave			KErrNoMemory.
  84.124 +	@return			A pointer to the newly created CImTextServerSession object. 
  84.125 +	@pre 				None
  84.126 +	@post				A fully constructed and initialised CImTextServerSession object.
  84.127 + */
  84.128 +	IMPORT_C static CImTextServerSession* NewL(TInt aSendIdleTime, TInt aReceiveIdleTime);
  84.129 +
  84.130 +	/**
  84.131 +	@internalTechnology
  84.132 +	@released
  84.133 +	*/
  84.134 +	IMPORT_C static CImTextServerSession* NewL(TInt aSendIdleTime, TInt aReceiveIdleTime, RSocketServ& aSocketServ, CImConnect& aConnect);
  84.135 +
  84.136 +/**
  84.137 +	//cat				Destruction
  84.138 +	@fn				~CImTextServerSession()
  84.139 +	Intended Usage	:	Destructor.
  84.140 +	@since			6.0	
  84.141 + */
  84.142 +	~CImTextServerSession();
  84.143 +
  84.144 +/**
  84.145 +	@fn				QueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue)
  84.146 +	Intended Usage	:	Queue a connect assuming the socket is successfully opened.
  84.147 +	Error Condition	:	KErrNoMemory
  84.148 +	@since			6.0
  84.149 +	@param			aStatus	Asynchronous completion status
  84.150 +	@param			anAddressDesc is the IP address		
  84.151 +	@param			aIAPPreferences is the IAP connection preference to be used		
  84.152 +	@param			aPortNum is the port number eg. 143, 25, 110.
  84.153 +	@param			aEnableTimeout Not used		
  84.154 +	@pre 			None
  84.155 +	@post			connection is ready to send and receive data.
  84.156 + */
  84.157 +	IMPORT_C void QueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue);
  84.158 +
  84.159 +	IMPORT_C void QueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, const TDesC8& aSSLDomainName);
  84.160 +
  84.161 +/**
  84.162 +	@fn				SSLQueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue)
  84.163 +	Intended Usage	:	Queue a wrapped SSL connect on an socket assuming the socket is successfully opened.
  84.164 +	Error Condition	:	KErrNoMemory, EImskSocketOpen
  84.165 +	@since			7.0s
  84.166 +	@param			aStatus	Asynchronous completion status
  84.167 +	@param			anAddressDesc is the IP address		
  84.168 +	@param			aIAPPreferences is the IAP connection preference to be used		
  84.169 +	@param			aPortNum is the port number eg. 993, 465, 995.
  84.170 +	@param			aEnableTimeout Not used		
  84.171 +	@pre 			None
  84.172 +	@post			connection is ready to send and receive data.
  84.173 + */
  84.174 +	IMPORT_C void SSLQueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue);
  84.175 +
  84.176 +	IMPORT_C void SSLQueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, const TDesC8& aSSLDomainName);
  84.177 +
  84.178 +/**
  84.179 +	@fn				Disconnect()
  84.180 +	Intended Usage	:	To disconnect and close socket connection.
  84.181 +	Error Condition	:	None
  84.182 +	@since			6.0
  84.183 +	@pre 			None
  84.184 +	@post			connection is closed.
  84.185 +  */
  84.186 +	IMPORT_C void Disconnect();
  84.187 +	IMPORT_C void Disconnect(TRequestStatus &aStatus);
  84.188 +	void TimeOut();
  84.189 +
  84.190 +
  84.191 +	IMPORT_C const TDesC& LocalName();
  84.192 +/**
  84.193 +	This method should be called before Send/SendQueueReceive() 
  84.194 +	TLS command is sent.
  84.195 +	@fn				SetSSLTLSResponseL(const TDesC8& aDesc)
  84.196 +	Intended Usage	:	To use for secure connection.
  84.197 +	Error Condition	:	KErrNoMemory
  84.198 +	@since			6.2
  84.199 +	@param			aDesc is the positive response the MTM expects from the connected
  84.200 +					server for TLS command. e.g.  OK, +OK, 220 etc..		
  84.201 +	@pre 			aDesc cannot be zero length
  84.202 +	@leave			EImskNoTLSResponseString
  84.203 +	@post			iTLSResponse is filled with aDesc contents
  84.204 +
  84.205 +  */
  84.206 +	IMPORT_C void SetSSLTLSResponseL(const TDesC8& aDesc);
  84.207 +
  84.208 +/**
  84.209 +	@fn				Send(TRequestStatus &aStatus, const TDesC8& aDesc)
  84.210 +	Intended Usage	:	To send data.
  84.211 +	Error Condition	:	None
  84.212 +	@since			6.0
  84.213 +	@param			aStatus	Asynchronous completion status
  84.214 +	@param			aDesc is the aData to be sent
  84.215 +	@post			None
  84.216 +
  84.217 +  */
  84.218 +
  84.219 +	//sends
  84.220 +	IMPORT_C void Send(TRequestStatus &aStatus, const TDesC8& aDesc);
  84.221 +	IMPORT_C void SendWithTimeout(TRequestStatus& aStatus, TInt aIdleTime, const TDesC8& aDesc); 
  84.222 +	IMPORT_C void SendQueueReceiveWithTimeout(TRequestStatus& aStatus, TInt aIdleTime, const TDesC8& aDesc); 
  84.223 +	IMPORT_C void Send(TRequestStatus &aStatus, TRefByValue<const TDesC8> aFmt,...);
  84.224 +/**
  84.225 +	@fn				SendQueueReceive(TRequestStatus &aStatus, const TDesC8& aDesc)
  84.226 +	Intended Usage	:	To send data and queue a receive.
  84.227 +	Error Condition	:	None
  84.228 +	@since			6.0
  84.229 +	@param			aStatus	Asynchronous completion status	
  84.230 +	@param			aDesc is the aData to be sent
  84.231 +	@post			Sends the data and queues a receive.
  84.232 +	GetCurrentTextLine should be called after this method to read received data
  84.233 +	*/
  84.234 +	IMPORT_C void SendQueueReceive(TRequestStatus &aStatus, const TDesC8& aDesc);
  84.235 +	IMPORT_C void SendQueueReceive(TRequestStatus &aStatus, TRefByValue<const TDesC8> aFmt,...);
  84.236 +
  84.237 +    //receives
  84.238 +/**
  84.239 +	Returns first full line of data received from socket to user
  84.240 +	@fn				GetCurrentTextLine(TDes8& aDesc)
  84.241 +	Intended Usage	:	To return received data.
  84.242 +	Error Condition	:	None
  84.243 +	@since			6.0
  84.244 +	@param			aDesc will be filled with received buffer
  84.245 +	@post			returns the received buffer in the form of aDesc
  84.246 +	@return			EReceiveBufferEmpty when received data is empty
  84.247 +					EBufferTooSmall when aDesc length is smaller than received data
  84.248 +					ECRLFTerminated when received data is complete (full line)
  84.249 +					EReceiveBufferFull when received data length is more than aDesc length
  84.250 +	GetCurrentTextLine should be called after Send methods
  84.251 +	*/
  84.252 +	IMPORT_C TImLineType GetCurrentTextLine(TDes8& aDesc);
  84.253 +/**
  84.254 +	User queues a new request from the socket (unless there's a full line of data in buffer
  84.255 +	then signal user and there's no need to make a receive request)
  84.256 +	@fn				QueueReceiveNextTextLine(TRequestStatus &aStatus)
  84.257 +	Intended Usage	:	User queues a new request from the socket.
  84.258 +	Error Condition	:	None
  84.259 +	@since			6.0
  84.260 +	@param			aStatus for asynchronous request
  84.261 +	
  84.262 +	*/
  84.263 +	IMPORT_C void QueueReceiveNextTextLine(TRequestStatus &aStatus);
  84.264 +/**
  84.265 +	@fn				ReceiveBinaryData(TRequestStatus &aStatus, TDes8& aDes,TInt aLen)
  84.266 +	Intended Usage	:	Users queue a request for received data
  84.267 +	Error Condition	:	None
  84.268 +	@since			6.0
  84.269 +	@param			aStatus	Asynchronous completion status	
  84.270 +	@param			aDes is the aData to be received
  84.271 +	@param			aLen is the length of the data the user wants to read
  84.272 +	@post			aDes will be filled with received data of aLen.
  84.273 +	ReceiveBinaryData should be called after Send.
  84.274 +	*/
  84.275 +	IMPORT_C void ReceiveBinaryData(TRequestStatus &aStatus, TDes8& aDes,TInt aLen);
  84.276 +
  84.277 +	IMPORT_C void LogText(const TDesC8& aString);						// write string into log file
  84.278 +	IMPORT_C void LogError(const TDesC8& aString,const TInt aError);		// write string and integer into log file
  84.279 +
  84.280 +/**
  84.281 +	@fn				GetIAPValue(TUint32 &aIAP)
  84.282 +	Intended Usage	:	Returns the IAP we are connecting/connected with in aIAP or returns an error code
  84.283 +	@since			6.0
  84.284 +	@param			aIAP will be the current IAP 
  84.285 +	@post			aIAP will be filled with current IAP connected.
  84.286 +	@return			will return genconn errors if any
  84.287 +	*/
  84.288 +
  84.289 +	IMPORT_C TInt GetIAPValue(TUint32 &aIAP);
  84.290 +/**
  84.291 +	@fn				GetRConnectionName(TName &aName)
  84.292 +	Intended Usage	:	Returns the name of the RConnection.
  84.293 +	@since			9.1
  84.294 +	@param			aName Buffer in which the name is returned. 
  84.295 +	@post			aName will be filled with current name of the RConnection.
  84.296 +	@return			KErrNone if successful, or another of the system-wide error codes.
  84.297 +	*/
  84.298 +
  84.299 +	IMPORT_C TInt GetRConnectionName(TName &aName);
  84.300 +
  84.301 +/** Returns the bearer type we are connected to with in aBearer or returns an error code */
  84.302 +	IMPORT_C TInt GetIAPBearer(TUint32 &aBearer);
  84.303 +
  84.304 +/**
  84.305 +	@internalTechnology
  84.306 +
  84.307 +	@fn				GetLastSocketActivityTimeout(TUint32& aTimeout)
  84.308 +	Intended Usage	:	Returns the last socket activity timeout value
  84.309 +	@since			9.1
  84.310 +	@param			aTimeout is a return argument containing the timeout if it was found
  84.311 +	@post				aTimeout will be filled with the timeout value
  84.312 +	@return			Returns KErrNone, KErrNotFound or KErrBadHandle
  84.313 +	*/
  84.314 +	IMPORT_C TInt GetLastSocketActivityTimeout(TUint32& aTimeout);
  84.315 +
  84.316 +/**
  84.317 +	@fn				GetSocketServ()
  84.318 +	Intended Usage	:	Returns the Socket Server
  84.319 +	@since			8.0
  84.320 +	@return			Socket Server
  84.321 +	*/
  84.322 +	RSocketServ& GetSocketServ();
  84.323 +
  84.324 +/**
  84.325 +	@fn				GetConnectionStage()
  84.326 +	Intended Usage	:	Gets the stage of the connection process obtained from RConnection
  84.327 +	@since			7.0s
  84.328 +	@return			The current connection stage from RConnection or a system-wide error code.
  84.329 +
  84.330 +	*/
  84.331 +	IMPORT_C TInt GetConnectionStage();
  84.332 +
  84.333 +/**
  84.334 +	@fn				SocketIdle()
  84.335 +	Intended Usage	:	disconnects the socket and notifies the observer when the socket has been idle
  84.336 +						for some time
  84.337 +	@since			7.0s
  84.338 + */
  84.339 +	void SocketIdle();
  84.340 +
  84.341 +/**
  84.342 +	@fn				SetPrimaryTextServerSession(CImTextServerSession& aPrimaryTextServerSession)
  84.343 +	Intended Usage	:	Users set only on the secondary session 
  84.344 +	@since			9.2
  84.345 +	@param			aPrimaryTextServerSession is PrimarySession's TextServerSession
  84.346 +	@pre 			None
  84.347 +	@post			Going to be use on the secondary session
  84.348 +*/
  84.349 +	IMPORT_C void SetPrimaryTextServerSession(CImTextServerSession* aPrimaryTextServerSession);
  84.350 +
  84.351 +/**
  84.352 +	@fn				GetCImConnect()
  84.353 +	Intended Usage	:	Returns the CImConnect object
  84.354 +	@since			9.2
  84.355 +	@return			CImConnect 
  84.356 +	@post			Going to be use on the secondary session
  84.357 +    */
  84.358 +	CImConnect* GetCImConnect();
  84.359 +	
  84.360 +// Depreciated functions - do not use.
  84.361 +	IMPORT_C void QueueConnect(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, TBool aEnableTimeout = ETrue);
  84.362 +	IMPORT_C void QueueConnect(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TInt aType, TBool aEnableTimeout = ETrue);
  84.363 +	IMPORT_C void QueueConnect(TRequestStatus& aStatus,const TDesC& anAddressDesc, TInt aPortNum, TCallBack aDisconnectFunction,const TUint32 aIntraddress,TInt aType, TBool aEnableTimeout = ETrue);
  84.364 +	IMPORT_C void QueueConnect(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum,const TUint32 aIAPaddress, TInt aType, TBool aEnableTimeout = ETrue);
  84.365 +	IMPORT_C void QueueConnect(TRequestStatus& aStatus,const TDesC& anAddressDesc, TInt aPortNum, TCallBack aDisconnectFunction, TBool aEnableTimeout = ETrue);
  84.366 +	IMPORT_C void QueueConnect(TRequestStatus& aStatus,const TDesC& anAddressDesc, TInt aPortNum, TCallBack aDisconnectFunction, const CImIAPPreferences& aIAPPreferences,TInt aType, TBool aEnableTimeout = ETrue);
  84.367 +	IMPORT_C TInt Send(const TDesC8& aDesc);
  84.368 +	IMPORT_C TInt Send(TRefByValue<const TDesC8> aFmt,...);
  84.369 +	IMPORT_C TInt SendReceive(const TDesC8& aDesc);
  84.370 +	IMPORT_C TInt Receive(TDes8& rDes);
  84.371 +	IMPORT_C void Receive(TRequestStatus &aStatus, TDes8& rDes);
  84.372 +	IMPORT_C static CImTextServerSession *NewLC (TImOperationMode aMode, RSocketServ &aServerServ);
  84.373 +	IMPORT_C static CImTextServerSession *NewL(RSocketServ &aServerServ);
  84.374 +	//Do not call SetSecurity.  Call SetSSLTLSResponseL
  84.375 +	IMPORT_C TInt SetSecurity(TBool aSecurityOn, TBool aUnattendedMode = FALSE);
  84.376 +	IMPORT_C void PerformLogging(TBool aLogging);
  84.377 +
  84.378 +private:
  84.379 +/**
  84.380 +	//cat			Construction and Destruction
  84.381 +	@fn				CImTextServerSession()
  84.382 +	Intended Usage	:	Constructor. First phase of two-phase construction method. Does 
  84.383 +						non-allocating construction.
  84.384 +	@since			6.0
  84.385 +	
  84.386 + */
  84.387 +	CImTextServerSession();
  84.388 +
  84.389 +	CImTextServerSession(RSocketServ& aSocketServ, CImConnect& aConnect);
  84.390 +/**
  84.391 +	//cat				Construction
  84.392 +	@fn				CImTextServerSession(TInt aSendIdleTime, TInt aReceiveIdleTime)
  84.393 +	Intended Usage	:	Constructor. First phase of two-phase construction method. Does 
  84.394 +						non-allocating construction.
  84.395 +	@since			7.0s
  84.396 +	@param			aSendIdleTime is the time for which the idle timer runs (for a send)
  84.397 +	@param			aReceiveIdleTime  is the time for which the idle timer runs (for a receive)
  84.398 + */
  84.399 +	CImTextServerSession(TInt aSendIdleTime, TInt aReceiveIdleTime);
  84.400 +
  84.401 +	CImTextServerSession(TInt aSendIdleTime, TInt aReceiveIdleTime, RSocketServ& aSocketServ, CImConnect& aConnect);
  84.402 +
  84.403 +/**
  84.404 +	//cat			Construction and Destruction.
  84.405 +	@fn				ConstructL()
  84.406 +	Intended Usage	:	Second phase of two-phase construction method. Does any 
  84.407 +						allocations required to fully construct the object.
  84.408 +	@since			6.0
  84.409 +	@leave			KErrNoMemory.
  84.410 +	@pre 			First phase of construction is complete
  84.411 +	@post			The object is fully constructed and initialised.	
  84.412 + */
  84.413 +	void ConstructL();
  84.414 +
  84.415 +	TInt Open();
  84.416 +	void Close();
  84.417 +
  84.418 +	void CreateLogFile(TInt aPortNum);
  84.419 +	void OpenScriptFile(TInt aPortNum);
  84.420 +
  84.421 +	void DoRunL();
  84.422 +	void DoComplete(TInt& aStatusValue);						// Cleanup code
  84.423 +	void DoCancel();
  84.424 +
  84.425 +	// these called from DoRunL;
  84.426 +	void SocketConnect();
  84.427 +	void DoConnectedToSocketL();
  84.428 +	void DoQueueConnect();
  84.429 +
  84.430 +	void RealReceive(TDes8& aDesc);
  84.431 +	void RealSend(const TDesC8& aDesc);
  84.432 +/** 
  84.433 +	@fn				ParseSSLTLSResponseL()
  84.434 +	Intended Usage	:	session will compare the response(for TLS command)
  84.435 +						with the MTMs response 						
  84.436 +	@since			6.2
  84.437 +	@leave			KImskSSLTLSNegotiateFailed if the response doesn't match 
  84.438 +	@post			CSecureSocket object is created
  84.439 +	*/
  84.440 +	void ParseSSLTLSResponseL();
  84.441 +
  84.442 +/** 
  84.443 +	@fn				CreateSecureSocketL()
  84.444 +	Intended Usage	:	to use secure socket connection 						
  84.445 +	@since			6.2
  84.446 +	@leave			None 
  84.447 +	@post			CSecureSocket object is created and iSecurityState is set to EImSecurityStateOn;
  84.448 +	*/
  84.449 +	void CreateSecureSocketL();
  84.450 +
  84.451 +/**
  84.452 +	@fn				QueueGenericConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue)
  84.453 +	Intended Usage	:	Queue a standard or wrapped SSL connect on an socket assuming the socket is successfully opened.  Called by SSLQueueConnectL and QueueConnectL
  84.454 +	Error Condition	:	KErrNoMemory, EImskSocketOpen
  84.455 +	@since			7.0s
  84.456 +	@param			aStatus	Asynchronous completion status	
  84.457 +	@param			anAddressDesc is the IP address		
  84.458 +	@param			aIAPPreferences is the IAP connection preference to be used		
  84.459 +	@param			aPortNum is the port number eg. 143, 993
  84.460 +	@param			aSSLDomainName SSL domain name to use for secure sockets
  84.461 +	@pre 			None
  84.462 +	@post			connection is ready to send and receive data.
  84.463 + */
  84.464 +	void QueueGenericConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, const TDesC8& aSSLDomainName);
  84.465 +
  84.466 +#if defined(__IMSK_SIMULATION)
  84.467 +	void ReadNextPeriod();
  84.468 +	TUint32 GetTokenValue(TInt aTokenLen, const TPtrC8& aBuffer);
  84.469 +	TBool IsSuspended();	
  84.470 +	TBool SuspendPeriodSet();
  84.471 +	void ResetSuspendPeriod();
  84.472 +	void SetAfterTimer();
  84.473 +	TInt ReadConfigNum(const TDesC& aName);
  84.474 +#endif
  84.475 +
  84.476 +	enum TImSocketState
  84.477 +		{
  84.478 +		EImClosed, 
  84.479 +		EImResolve, 
  84.480 +		EImConnect,   
  84.481 +		EImSendReceive,
  84.482 +		EImDialUsingOverride,
  84.483 +		EImTLSHandShakeStarted,
  84.484 +		EImSendReceiveTimedOut
  84.485 +		};
  84.486 +
  84.487 +	enum TImSendReceiveState
  84.488 +		{ 
  84.489 +		EImInactive, 
  84.490 +		EImSending,
  84.491 +		EImReceiving, 
  84.492 +		EImReceivingBinaryData,
  84.493 +		EImSendingQueueReceive,
  84.494 +		EImSuspended,          //used when we are in a simulated GPRS suspend.
  84.495 +		};
  84.496 +
  84.497 +	enum TImSecurityState
  84.498 +		{
  84.499 +		EImSecurityStateOff,
  84.500 +		EImSecurityStateOn,
  84.501 +		EImSecurityStateFailed
  84.502 +		};
  84.503 +private:
  84.504 +	/** handle to the socket */
  84.505 +	RSocket							iSocket;
  84.506 +	/** handle to RSocketServ */
  84.507 +	RSocketServ						iServ;
  84.508 +	/** handle to Hostresolver */
  84.509 +	RHostResolver					iHostResolver;
  84.510 +	/** handle to secure socket for SSL/TLS connection */
  84.511 +	CSecureSocket*					iSecureSocket;
  84.512 +
  84.513 +	TUint32 iCurrentIAPcache;
  84.514 +	/** Used to find if IAP is cached */
  84.515 +	TBool							iIAPCached;  // true if the above value can be used.
  84.516 +	/** result of the host resolver */
  84.517 +	TNameEntry						iHostent;
  84.518 +	/** port number e.g. 25 for SMTP, 143 for IMAP and 110 for POP */
  84.519 +	TInt							iPortNum;
  84.520 +	/**  server address */
  84.521 +	TPtrC							iAddressDesc;
  84.522 +	/** data returned by the socket */
  84.523 +	TImMailBuffer					iReceive;
  84.524 +	TSockXfrLength					iLen;
  84.525 +	TImSocketState					iState;
  84.526 +	TImSendReceiveState				iSendReceive;
  84.527 +
  84.528 +	HBufC8*							iBuffer;
  84.529 +	TImLineType						iCurrentLineType;
  84.530 +
  84.531 +	/** to log connection data  */
  84.532 +	CImLog*							iLog;
  84.533 +	/** IP address name */
  84.534 +	TBuf<KImskIPAddressLen>			iLocalName;
  84.535 +	/** secure state i.e to use Secure socket */
  84.536 +
  84.537 +	TImSecurityState				iSecurityState;
  84.538 +	const CImIAPPreferences*		iIAPPreferences;
  84.539 +
  84.540 +	CImConnect*						iConnect;
  84.541 +
  84.542 +	TDes8*							iReceiveData; // buffer we just recieved data into
  84.543 +
  84.544 +
  84.545 +	HBufC8*							iSentData;
  84.546 +	/** response for different mail protocols like 220,+OK, OK, BAD */
  84.547 +	HBufC8*							iTLSResponse; //response for different mail protocols like 220,+OK, OK, BAD
  84.548 +	/** internal flag to read tls response */
  84.549 +	TBool							iReadTLSResponse;
  84.550 +	TBool							iPerformLogging;
  84.551 +	TBool							iWrappedSocket;
  84.552 +
  84.553 +	CImSocketIdleTimer*				iSocketIdleTimer;
  84.554 +	TTimeIntervalMicroSeconds32		iSendIdleTime;
  84.555 +	TTimeIntervalMicroSeconds32		iReceiveIdleTime;
  84.556 +
  84.557 +	/** A shorter idle timeout, used when a fast response is expected */
  84.558 +	TTimeIntervalMicroSeconds32		iSendShortIdleTime;
  84.559 +	TTimeIntervalMicroSeconds32		iReceiveShortIdleTime;
  84.560 +
  84.561 +
  84.562 +#ifdef __IMSK_SCRIPTING
  84.563 +	CImTextServerScript*			iScript;
  84.564 +#endif
  84.565 +
  84.566 +#if defined(__IMSK_SIMULATION)
  84.567 +
  84.568 +	RFs								iFs;
  84.569 +
  84.570 +
  84.571 +	TUint32							iScriptedIAP; // value to return for iap when scripting
  84.572 +	TUint32							iBearerIAP; // value to return for bearer when scripting
  84.573 +
  84.574 +
  84.575 +	TImSendReceiveState             iSuspendedState;
  84.576 +	
  84.577 +	RTimer							iSuspendTimer;
  84.578 +
  84.579 +	RFile							iGprsFile;
  84.580 +
  84.581 +	TBool							iGprsConfigExists;
  84.582 +
  84.583 +	TInt							iCfgFilePos;	
  84.584 +
  84.585 +	TTime							iLastSuspend;	// time last suspension took place
  84.586 +													// in universal time
  84.587 +
  84.588 +	TTimeIntervalSeconds 			iStart;		// number of seconds since last delay
  84.589 +												// before the following delay occurs.
  84.590 +												// if 0 no suspend is required.
  84.591 +	TTimeIntervalSeconds 			iDuration;	// how long to delay. If 0 no suspend is
  84.592 +												// required
  84.593 +	TBool							iRepeat;	// repeat the above delay for an 
  84.594 +												// infinite period
  84.595 +
  84.596 +	HBufC8*							iSendData; // suspended data 
  84.597 +#endif // __IMSK_SIMULATION
  84.598 +	
  84.599 +	CImTextServerSession*			iPrimaryTextServerSession; //Only going to be set on the secondary session
  84.600 +	
  84.601 +	TBool iClientOwnsConnection;
  84.602 +
  84.603 +	/** SSL domain name for secure sockets */
  84.604 +	HBufC8* iSSLDomainName;
  84.605 +	TBool							iSocketIdleTimeSet;          // iSocketIdleTimeSet=ETrue, if smtp server did not responds within 10 seconds after sending "."
  84.606 +	};
  84.607 +
  84.608 +#endif
    85.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.2 +++ b/epoc32/include/app/irmsgtypeuid.h	Wed Mar 31 12:27:01 2010 +0100
    85.3 @@ -0,0 +1,40 @@
    85.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    85.5 +// All rights reserved.
    85.6 +// This component and the accompanying materials are made available
    85.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    85.8 +// which accompanies this distribution, and is available
    85.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   85.10 +//
   85.11 +// Initial Contributors:
   85.12 +// Nokia Corporation - initial contribution.
   85.13 +//
   85.14 +// Contributors:
   85.15 +//
   85.16 +// Description:
   85.17 +// $Workfile: irmsgtypeuid.h $
   85.18 +// $Author: Stevep $
   85.19 +// $Revision: 4 $
   85.20 +// $Date: 4/12/01 9:45 $
   85.21 +// 
   85.22 +//
   85.23 +
   85.24 +
   85.25 +
   85.26 +/**
   85.27 + @file
   85.28 + @publishedAll
   85.29 + @released
   85.30 +*/
   85.31 +
   85.32 +#if !defined (__IRMSGTYPEUID_H__)
   85.33 +#define __IRMSGTYPEUID_H__
   85.34 +
   85.35 +const TInt32 KUidMsgTypeIrTInt32 = 0x100053A4;
   85.36 +// This is defined in irobutil.h, which we don't control.
   85.37 +// const TUid KUidMsgTypeIr = {KUidMsgTypeIrTInt32};
   85.38 +
   85.39 +const TInt32 KUidMsgTypeIr			 =	0x100053A4;
   85.40 +
   85.41 +const TUid KUidMsgTypeIrUID = {KUidMsgTypeIr};	// we will revert this when we persuade PAN to make the other one a real TUid.
   85.42 +
   85.43 +#endif // __IRMSGTYPEUID_H__
    86.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.2 +++ b/epoc32/include/app/irmtmcmds.h	Wed Mar 31 12:27:01 2010 +0100
    86.3 @@ -0,0 +1,34 @@
    86.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    86.5 +// All rights reserved.
    86.6 +// This component and the accompanying materials are made available
    86.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    86.8 +// which accompanies this distribution, and is available
    86.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   86.10 +//
   86.11 +// Initial Contributors:
   86.12 +// Nokia Corporation - initial contribution.
   86.13 +//
   86.14 +// Contributors:
   86.15 +//
   86.16 +// Description:
   86.17 +// $Workfile: irmtmcmds.h $
   86.18 +// $Author: Stevep $
   86.19 +// $Revision: 3 $
   86.20 +// $Date: 20/11/01 11:19 $
   86.21 +// 
   86.22 +//
   86.23 +
   86.24 +
   86.25 +
   86.26 +/**
   86.27 + @file
   86.28 + @publishedAll
   86.29 + @released
   86.30 +*/
   86.31 +
   86.32 +
   86.33 +#if !defined (__IRMTMCMDS_H__)
   86.34 +#define __IRMTMCMDS_H__
   86.35 +
   86.36 +
   86.37 +#endif	//__IRMTMCMDS_H__
    87.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.2 +++ b/epoc32/include/app/miut_err.h	Wed Mar 31 12:27:01 2010 +0100
    87.3 @@ -0,0 +1,521 @@
    87.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    87.5 +// All rights reserved.
    87.6 +// This component and the accompanying materials are made available
    87.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    87.8 +// which accompanies this distribution, and is available
    87.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   87.10 +//
   87.11 +// Initial Contributors:
   87.12 +// Nokia Corporation - initial contribution.
   87.13 +//
   87.14 +// Contributors:
   87.15 +//
   87.16 +// Description:
   87.17 +//
   87.18 +
   87.19 +#ifndef __MIUT_ERR_H__
   87.20 +#define __MIUT_ERR_H__
   87.21 +
   87.22 +// Minimum value for an MTM-specific error
   87.23 +/**
   87.24 +@publishedAll
   87.25 +@released
   87.26 +*/
   87.27 +const TInt KMiutErrorBase						= (-170);
   87.28 +
   87.29 +// POP3-specific error codes
   87.30 +
   87.31 +/**
   87.32 +@publishedAll
   87.33 +@released
   87.34 +*/
   87.35 +const TInt KPop3ErrorBase						= KMiutErrorBase;
   87.36 +
   87.37 +/**
   87.38 +@publishedAll
   87.39 +@released
   87.40 +*/
   87.41 +const TInt KPop3CannotConnect					= KPop3ErrorBase;
   87.42 +
   87.43 +/**
   87.44 +@publishedAll
   87.45 +@released
   87.46 +*/
   87.47 +const TInt KPop3InvalidUser						= KPop3ErrorBase-1;
   87.48 +
   87.49 +/**
   87.50 +@publishedAll
   87.51 +@released
   87.52 +*/
   87.53 +const TInt KPop3InvalidLogin					= KPop3ErrorBase-2;
   87.54 +
   87.55 +/**
   87.56 +@publishedAll
   87.57 +@released
   87.58 +*/
   87.59 +const TInt KPop3CannotCreateApopLogonString		= KPop3ErrorBase-3;
   87.60 +
   87.61 +/**
   87.62 +@publishedAll
   87.63 +@released
   87.64 +*/
   87.65 +const TInt KPop3ProblemWithRemotePopServer		= KPop3ErrorBase-4;
   87.66 +
   87.67 +/**
   87.68 +@publishedAll
   87.69 +@released
   87.70 +*/
   87.71 +const TInt KPop3CannotOpenServiceEntry			= KPop3ErrorBase-5;
   87.72 +
   87.73 +/**
   87.74 +@publishedAll
   87.75 +@released
   87.76 +*/
   87.77 +const TInt KPop3CannotSetRequiredFolderContext	= KPop3ErrorBase-6;
   87.78 +
   87.79 +/**
   87.80 +@publishedAll
   87.81 +@released
   87.82 +*/
   87.83 +const TInt KPop3InvalidApopLogin				= KPop3ErrorBase-7;
   87.84 +
   87.85 +/**
   87.86 +@publishedAll
   87.87 +@released
   87.88 +*/
   87.89 +const TInt KPopTopError							= (-179);
   87.90 +
   87.91 +// IMSK-specific error code
   87.92 +/**
   87.93 +@publishedAll
   87.94 +@released
   87.95 +*/
   87.96 +const TInt KImskBaseError						= (-180);
   87.97 +
   87.98 +/**
   87.99 +@publishedAll
  87.100 +@released
  87.101 +*/
  87.102 +const TInt KImskErrorDNSNotFound				= KImskBaseError;
  87.103 +
  87.104 +/**
  87.105 +@publishedAll
  87.106 +@released
  87.107 +*/
  87.108 +const TInt KImskErrorControlPanelLocked			= KImskBaseError-1;
  87.109 +
  87.110 +/**
  87.111 +@publishedAll
  87.112 +@released
  87.113 +*/
  87.114 +const TInt KImskErrorISPOrIAPRecordNotFound		= KImskBaseError-2;
  87.115 +
  87.116 +/**
  87.117 +@publishedAll
  87.118 +@released
  87.119 +*/
  87.120 +const TInt KImskErrorActiveSettingIsDifferent	= KImskBaseError-3;
  87.121 +
  87.122 +/**
  87.123 +@publishedAll
  87.124 +@released
  87.125 +*/
  87.126 +const TInt KImskSecuritySettingsFailed			= KImskBaseError-4;
  87.127 +
  87.128 +/**
  87.129 +@publishedAll
  87.130 +@released
  87.131 +*/
  87.132 +const TInt KImskSSLTLSNegotiateFailed			= KImskBaseError-5;
  87.133 +
  87.134 +/**
  87.135 +@publishedAll
  87.136 +@released
  87.137 +*/
  87.138 +const TInt KImskTopError						= (-190);
  87.139 +
  87.140 +// error codes -190 to -199 are used by Sockets
  87.141 +
  87.142 +// IMAP-specific error codes
  87.143 +/**
  87.144 +@publishedAll
  87.145 +@released
  87.146 +*/
  87.147 +const TInt KImapBaseError						= (-200);
  87.148 +
  87.149 +/**
  87.150 +@publishedAll
  87.151 +@released
  87.152 +*/
  87.153 +const TInt KErrImapConnectFail					= KImapBaseError;
  87.154 +
  87.155 +/**
  87.156 +@publishedAll
  87.157 +@released
  87.158 +*/
  87.159 +const TInt KErrImapServerFail					= KImapBaseError-1;
  87.160 +
  87.161 +/**
  87.162 +@publishedAll
  87.163 +@released
  87.164 +*/
  87.165 +const TInt KErrImapServerParse					= KImapBaseError-2;
  87.166 +
  87.167 +/**
  87.168 +@publishedAll
  87.169 +@released
  87.170 +*/
  87.171 +const TInt KErrImapServerBusy					= KImapBaseError-3;
  87.172 +
  87.173 +/**
  87.174 +@publishedAll
  87.175 +@released
  87.176 +*/
  87.177 +const TInt KErrImapServerVersion				= KImapBaseError-4;
  87.178 +
  87.179 +/**
  87.180 +@publishedAll
  87.181 +@released
  87.182 +*/
  87.183 +const TInt KErrImapSendFail						= KImapBaseError-5;
  87.184 +
  87.185 +/**
  87.186 +@publishedAll
  87.187 +@released
  87.188 +*/
  87.189 +const TInt KErrImapBadLogon						= KImapBaseError-6;
  87.190 +
  87.191 +/**
  87.192 +@publishedAll
  87.193 +@released
  87.194 +*/
  87.195 +const TInt KErrImapSelectFail					= KImapBaseError-7;
  87.196 +
  87.197 +/**
  87.198 +@publishedAll
  87.199 +@released
  87.200 +*/
  87.201 +const TInt KErrImapWrongFolder					= KImapBaseError-8;
  87.202 +
  87.203 +/**
  87.204 +@publishedAll
  87.205 +@released
  87.206 +*/
  87.207 +const TInt KErrImapServerNoSecurity				= KImapBaseError-9;
  87.208 +
  87.209 +/**
  87.210 +@publishedAll
  87.211 +@released
  87.212 +*/
  87.213 +const TInt KErrImapServerLoginDisabled			= KImapBaseError-10;
  87.214 +
  87.215 +/**
  87.216 +@publishedAll
  87.217 +@released
  87.218 +*/
  87.219 +const TInt KErrImapTLSNegotiateFailed  			= KImapBaseError-11;
  87.220 +
  87.221 +/**
  87.222 +@publishedAll
  87.223 +@released
  87.224 +*/
  87.225 +const TInt KErrImapCantDeleteFolder  			= KImapBaseError-12;
  87.226 +
  87.227 +/**
  87.228 +@publishedAll
  87.229 +@released
  87.230 +*/
  87.231 +const TInt KErrImapInvalidServerResponse  		= KImapBaseError-13;
  87.232 +
  87.233 +/**
  87.234 +@publishedAll
  87.235 +@released
  87.236 +*/
  87.237 +//This POP error declared in IMAP error range, 
  87.238 +//since there is no scope to declare the error within pop range. 
  87.239 +const TInt KErrPop3ServerAlreadyConnected 		= KImapBaseError-14;
  87.240 +
  87.241 +/**
  87.242 +@publishedAll
  87.243 +@released
  87.244 +*/
  87.245 +const TInt KImapTopError						= (-219);
  87.246 +
  87.247 +// DMSS-specific error codes
  87.248 +/**
  87.249 +@publishedAll
  87.250 +@released
  87.251 +*/
  87.252 +const TInt KDmssBaseError						= (-220);
  87.253 +
  87.254 +/**
  87.255 +@publishedAll
  87.256 +@released
  87.257 +*/
  87.258 +const TInt KDmssUnknownErr						= (KDmssBaseError-1);
  87.259 +
  87.260 +/**
  87.261 +@publishedAll
  87.262 +@released
  87.263 +*/
  87.264 +const TInt KDmssMailboxUnavailableErr			= (KDmssBaseError-2);
  87.265 +
  87.266 +/**
  87.267 +@publishedAll
  87.268 +@released
  87.269 +*/
  87.270 +const TInt KDmssActionAbortedErr				= (KDmssBaseError-3);
  87.271 +
  87.272 +/**
  87.273 +@publishedAll
  87.274 +@released
  87.275 +*/
  87.276 +const TInt KDmssActionNotTakenErr				= (KDmssBaseError-4);
  87.277 +
  87.278 +/**
  87.279 +@publishedAll
  87.280 +@released
  87.281 +*/
  87.282 +const TInt KDmssCmdUnrecognisedErr				= (KDmssBaseError-5);
  87.283 +
  87.284 +/**
  87.285 +@publishedAll
  87.286 +@released
  87.287 +*/
  87.288 +const TInt KDmssSyntaxErrorErr					= (KDmssBaseError-6);
  87.289 +
  87.290 +/**
  87.291 +@publishedAll
  87.292 +@released
  87.293 +*/
  87.294 +const TInt KDmssCmdNotImplementedErr			= (KDmssBaseError-7);
  87.295 +
  87.296 +/**
  87.297 +@publishedAll
  87.298 +@released
  87.299 +*/
  87.300 +const TInt KDmssBadSequenceErr					= (KDmssBaseError-8);
  87.301 +
  87.302 +/**
  87.303 +@publishedAll
  87.304 +@released
  87.305 +*/
  87.306 +const TInt KDmssParamNotImplementedErr			= (KDmssBaseError-9);
  87.307 +
  87.308 +/**
  87.309 +@publishedAll
  87.310 +@released
  87.311 +*/
  87.312 +const TInt KDmssMailboxNoAccessErr				= (KDmssBaseError-10);
  87.313 +
  87.314 +/**
  87.315 +@publishedAll
  87.316 +@released
  87.317 +*/
  87.318 +const TInt KDmssExceededStorageErr				= (KDmssBaseError-11);
  87.319 +
  87.320 +/**
  87.321 +@publishedAll
  87.322 +@released
  87.323 +*/
  87.324 +const TInt KDmssMailboxNameErr					= (KDmssBaseError-12);
  87.325 +
  87.326 +/**
  87.327 +@publishedAll
  87.328 +@released
  87.329 +*/
  87.330 +const TInt KDmssTransactionFailedErr			= (KDmssBaseError-13);
  87.331 +
  87.332 +/**
  87.333 +@publishedAll
  87.334 +@released
  87.335 +*/
  87.336 +const TInt KDmssTimeOutErr						= (KDmssBaseError-14);
  87.337 +
  87.338 +/**
  87.339 +@publishedAll
  87.340 +@released
  87.341 +*/
  87.342 +const TInt KDmssTopError						= (-239);
  87.343 +
  87.344 +// SMTP client-specific error codes
  87.345 +/**
  87.346 +@publishedAll
  87.347 +@released
  87.348 +*/
  87.349 +const TInt KSmtpBaseError						= (-240);
  87.350 +
  87.351 +/**
  87.352 +@publishedAll
  87.353 +@released
  87.354 +*/
  87.355 +const TInt KSmtpNoMailFromErr					=  KSmtpBaseError;
  87.356 +
  87.357 +/**
  87.358 +@publishedAll
  87.359 +@released
  87.360 +*/
  87.361 +const TInt KSmtpUnknownErr						= (KSmtpBaseError-1);
  87.362 +
  87.363 +/**
  87.364 +@publishedAll
  87.365 +@released
  87.366 +*/
  87.367 +const TInt KSmtpBadMailFromAddress				= (KSmtpBaseError-2);
  87.368 +
  87.369 +/**
  87.370 +@publishedAll
  87.371 +@released
  87.372 +*/
  87.373 +const TInt KSmtpBadRcptToAddress				= (KSmtpBaseError-3);
  87.374 +
  87.375 +/**
  87.376 +@publishedAll
  87.377 +@released
  87.378 +*/
  87.379 +const TInt KSmtpLoginRefused					= (KSmtpBaseError-4);
  87.380 +
  87.381 +/**
  87.382 +@publishedAll
  87.383 +@released
  87.384 +*/
  87.385 +const TInt KSmtpNoMsgsToSendWithActiveSettings	= (KSmtpBaseError-5);
  87.386 +
  87.387 +/**
  87.388 +@publishedAll
  87.389 +@released
  87.390 +*/
  87.391 +const TInt KErrSmtpTLSNegotiateFailed 			= (KSmtpBaseError-6);
  87.392 +
  87.393 +/**
  87.394 +@publishedAll
  87.395 +@released
  87.396 +*/
  87.397 +const TInt KErrSmtpBufferOverFlow 			    = (KSmtpBaseError-7);
  87.398 +
  87.399 +/**
  87.400 +@publishedAll
  87.401 +@released
  87.402 +*/
  87.403 +const TInt KSmtpTopError					    = (-249);
  87.404 + 
  87.405 +// IMCM error codes
  87.406 +/**
  87.407 +@publishedAll
  87.408 +@released
  87.409 +*/
  87.410 +const TInt KImcmBaseError						= (-250);
  87.411 +
  87.412 +/**
  87.413 +@publishedAll
  87.414 +@released
  87.415 +*/
  87.416 +const TInt KImcmHTMLPartNotPopulated			=  KImcmBaseError;
  87.417 +
  87.418 +/**
  87.419 +@publishedAll
  87.420 +@released
  87.421 +*/
  87.422 +const TInt KImcmInvalidMessageStructure			= (KImcmBaseError-1);
  87.423 +
  87.424 +// POPS error codes
  87.425 +/**
  87.426 +@publishedAll
  87.427 +@released
  87.428 +*/
  87.429 +const TInt KPop3BaseError						= (-260);
  87.430 +
  87.431 +/**
  87.432 +@publishedAll
  87.433 +@released
  87.434 +*/
  87.435 +const TInt KErrPop3TLSNegotiateFailed			=  KPop3BaseError;
  87.436 +
  87.437 +/**
  87.438 +@internalComponent
  87.439 +@released
  87.440 +*/
  87.441 +enum TImcmPanic
  87.442 +	{
  87.443 +	EOffOpNoBodyText = 0,
  87.444 +	EOffOpBadMtmTypeUid = 1,
  87.445 +	EOffOpNoCMsvEntrySet = 2,
  87.446 +	EOffOpEntryShouldBeFolder = 3,
  87.447 +	EOffOpTwoSameLinesNotAllowed = 4,
  87.448 +	EOffOpNoMemory = 5,
  87.449 +	EOffOpInvalidConstruction = 6,
  87.450 +	EOffOpListOutOfSync = 7,
  87.451 +	EOffOpNoMtmParameters = 8,
  87.452 +	EMiutBadStreamVersion = 9,
  87.453 +	EEntryIsNotMessage = 10,
  87.454 +	EMiutArrayHasOddNumberOfElements = 11,		// ie there should be even number of entries in array
  87.455 +	EMiutLocalServiceIdSet = 12,				// iServiceId should not be set to Local
  87.456 +	EPopcMTMNoBodyText = 13,
  87.457 +	EPopcMTMBadMtmTypeUid = 14,
  87.458 +	EPopcMTMNoCMsvEntrySet = 15,
  87.459 +	EPopcMTMOperationNULL = 16,
  87.460 +	EPopcMTMNotAServiceEntry = 17,
  87.461 +	EPopcUnknownNewEmailType = 18,
  87.462 +	EPopcUnknownSyncFunction = 19,
  87.463 +	ESmtcMTMNoBodyText = 20,
  87.464 +	ESmtcMTMBadMtmTypeUid = 21,
  87.465 +	ESmtcMTMNoCMsvEntrySet = 22,
  87.466 +	ESmtcMTMOperationNULL = 23,
  87.467 +	ESmtcMTMNotAServiceEntry = 24,
  87.468 +	ESmtcUnknownNewEmailType = 25,
  87.469 +	ESmtcUnknownSyncFunction = 26,
  87.470 +	ESmtcMTMStoringBadEntryType = 27,
  87.471 +	ESmtcMTMRestoringBadEntryType = 28,
  87.472 +	ESmtcMTMNotAMessageEntry = 29,
  87.473 +	EMiutActiveInFinalProgress = 30,
  87.474 +	EImpcNoBodyText = 31,
  87.475 +	EImpcBadMtmTypeUid = 32,
  87.476 +	EImpcNoCMsvEntrySet = 33,
  87.477 +	EImpcEntryShouldBeFolder = 34,
  87.478 +	EImpcTwoSameLinesNotAllowed = 35,
  87.479 +	EImpcNoMemory = 36,
  87.480 +	EImpcInvalidConstruction = 37,
  87.481 +	EImpcBadServiceEntry = 38,
  87.482 +	EImpcNoBaseMtm = 39,
  87.483 +	EImpcNoAddresseeList = 40,
  87.484 +	EImpcInvalidProgress = 41,
  87.485 +	EImpcNotSupported = 42,
  87.486 +	EImpcMTMNotAMessageEntry = 43,
  87.487 +	EImpcMTMNotAServiceEntry = 44,
  87.488 +	EImcmMessageEntryHasMoreThanOneFolder = 45,
  87.489 +	EImcmUnknownState = 46,
  87.490 +	EImcmFinalProgressFailed = 47,
  87.491 +	EImcmNoEikonEnvironment = 48,
  87.492 +	EImcmSetVersionNotSupported = 49,
  87.493 +	EImcmSystemDefaultCharsetNotSupported = 50,
  87.494 + 	EImcmHtmlConverterNotFound = 51,
  87.495 +	EImcmUnknownMtm = 52,
  87.496 +	EImEmailOpUnknownAttachmentType = 53,
  87.497 +	EImcmNonIdleRetrievalState = 54,
  87.498 +	EImcmIdleRetrievalState = 55,
  87.499 +	EImcmSyncDownloadRulesInvalidPos1 = 56,
  87.500 +	EImcmSyncDownloadRulesInvalidPos2 = 57,
  87.501 +	EImcmSyncDownloadRulesInvalidPos3 = 58,
  87.502 +	EImcmSyncDownloadRulesInvalidBearerTypes1 = 59,
  87.503 +	EImcmSyncDownloadRulesInvalidBearerTypes2 = 60,
  87.504 +	EImcmSyncDownloadRulesInvalidBearerTypes3 = 61,
  87.505 +	EImcmTransportBufferSizesInvalidPos1 = 62,
  87.506 +	EImcmTransportBufferSizesInvalidPos2 = 63,
  87.507 +	EImcmTransportBufferSizesInvalidPos3 = 64,
  87.508 +	EImcmTransportBufferSizesInvalidBearerTypes1 = 65,
  87.509 +	EImcmTransportBufferSizesInvalidBearerTypes2 = 66,
  87.510 +	EImcmTransportBufferSizesInvalidBearerTypes3 = 67,
  87.511 +	EImcmTransportBufferSizesInvalidFetchRequestSize = 68,
  87.512 +	EImcmTransportBufferSizesInvalidMaxOutstandingFetchResponses = 69,
  87.513 +	EImcmMobilityAccountsListInvalidPos1 = 70,
  87.514 +	EImcmMobilityAccountsListInvalidPos2 = 71,
  87.515 +	EImcmMobilityAccountsListInvalidPos3 = 72,
  87.516 +	EImcmMobilityAccountsListInvalidIAPListCount = 73
  87.517 +	};
  87.518 +
  87.519 +/**
  87.520 +@internalComponent
  87.521 +*/
  87.522 +GLREF_C void gPanic(TImcmPanic aPanic);
  87.523 +
  87.524 +#endif // __MIUT_ERR_H__
    88.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    88.2 +++ b/epoc32/include/app/miutatch.h	Wed Mar 31 12:27:01 2010 +0100
    88.3 @@ -0,0 +1,94 @@
    88.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    88.5 +// All rights reserved.
    88.6 +// This component and the accompanying materials are made available
    88.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    88.8 +// which accompanies this distribution, and is available
    88.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   88.10 +//
   88.11 +// Initial Contributors:
   88.12 +// Nokia Corporation - initial contribution.
   88.13 +//
   88.14 +// Contributors:
   88.15 +//
   88.16 +// Description:
   88.17 +//
   88.18 +
   88.19 +#if !defined (__MIUTATCH_H__)
   88.20 +#define __MIUTATCH_H__
   88.21 +
   88.22 +
   88.23 +#if !defined (__S32FILE_H__)
   88.24 +#include <s32file.h>
   88.25 +#endif
   88.26 +
   88.27 +const TInt KDataLineBufferLength = 4096;
   88.28 +_LIT(KImcvAttachFormatStr, "%S(%d)%S");
   88.29 +
   88.30 +/**
   88.31 +@internalTechnology
   88.32 +@released
   88.33 +*/
   88.34 +enum TImAttachmentFileState
   88.35 +	{ 
   88.36 +	EFileNotOpen, 
   88.37 +	EFileIsOpen, 
   88.38 +	EFileIsClosed,		
   88.39 +	EFileIsCorrupt,		// UU data being decoded is corrupt
   88.40 +	EFileIsIncomplete,	// file write failed
   88.41 +	EFileFailedToOpen,	// can't open attach file
   88.42 +	EFileTopIncomplete	// File is incomplete due to top
   88.43 +	};
   88.44 +
   88.45 +class TImAttachmentFile		// utility class to handle file operations with Email attachments
   88.46 +/**
   88.47 +@internalAll
   88.48 +@released
   88.49 +*/
   88.50 +    {
   88.51 +public:
   88.52 + 	enum TImFileOpenMode
   88.53 +		{
   88.54 +		/**
   88.55 +		File opened for read mode
   88.56 +		*/
   88.57 +		EImFileRead = 0,
   88.58 +		/**
   88.59 +		File opened for write mode
   88.60 +		*/
   88.61 +		EImFileWrite,
   88.62 +		};   
   88.63 +public:
   88.64 +    IMPORT_C TImAttachmentFile(RFs& aFileSession);  // constructor
   88.65 +    IMPORT_C ~TImAttachmentFile();  // destructor
   88.66 +
   88.67 +    IMPORT_C TInt MakeDir (const TDesC& aDirPath);
   88.68 +    IMPORT_C TInt OpenFile (const TDesC& aDirPath ,const TDesC& aFileName );
   88.69 +    IMPORT_C TInt CreateFile (const TDesC& aDirPath ,const TDesC& aFileName );
   88.70 +    IMPORT_C TInt ReadFile (TDes8& rBuffer, TInt aNumBytes );
   88.71 +    IMPORT_C TInt WriteFile (const TDesC8& aBuffer);
   88.72 +    IMPORT_C TInt WriteFile (const TDesC16& aBuffer);
   88.73 +    IMPORT_C TInt CloseFile();
   88.74 +	IMPORT_C TInt DeleteAttachment(const TDesC& aDirPath,const TDesC& aFileName);
   88.75 +	
   88.76 +	IMPORT_C void SetFileHandle(RFile& aFile,TImFileOpenMode aFileMode);
   88.77 +						
   88.78 +	TInt AppendValidFile(const TDesC& aDirPath, const TDesC& aFileName, TFileName& rFullFilePath);
   88.79 +private:
   88.80 +	void Reset();
   88.81 +	TInt WriteFile ();
   88.82 +    TInt ReadFile ();
   88.83 +	TInt FlushFile();
   88.84 +	TPtrC8 SelectFileData(TInt& abufLen, TInt& aDataLen);
   88.85 +
   88.86 +private:
   88.87 +    RFs&		    iFileSession;
   88.88 +	RFile			iFile;
   88.89 +	TFileText		iFileText;
   88.90 +	TFileName		iFullFilePath;
   88.91 +	TBuf8<KDataLineBufferLength>		iDataLine;
   88.92 +	TBool			iWritingToFile;
   88.93 +	TInt			iSpaceOnCache;
   88.94 +	TInt			iPositionInCache;
   88.95 +    };
   88.96 +
   88.97 +#endif
    89.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    89.2 +++ b/epoc32/include/app/miutconv.h	Wed Mar 31 12:27:01 2010 +0100
    89.3 @@ -0,0 +1,206 @@
    89.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
    89.5 +// All rights reserved.
    89.6 +// This component and the accompanying materials are made available
    89.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    89.8 +// which accompanies this distribution, and is available
    89.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   89.10 +//
   89.11 +// Initial Contributors:
   89.12 +// Nokia Corporation - initial contribution.
   89.13 +//
   89.14 +// Contributors:
   89.15 +//
   89.16 +// Description:
   89.17 +//
   89.18 +
   89.19 +#ifndef __MIUTCONV_H__
   89.20 +#define __MIUTCONV_H__
   89.21 +
   89.22 +#include <e32base.h>
   89.23 +
   89.24 +
   89.25 +#if !defined (__CHARCONV_H_)
   89.26 +#include <charconv.h>
   89.27 +#endif
   89.28 +
   89.29 +#if !defined (__MIUTHDR_H__)
   89.30 +#include <miuthdr.h>		
   89.31 +#endif
   89.32 +
   89.33 +#if !defined (__UTF_H_)
   89.34 +#include <utf.h>
   89.35 +#endif
   89.36 +
   89.37 +// IMail-specific stream type within an IMail file store for TImEmailTransformingInfo
   89.38 +//
   89.39 +const TUint KUidMsvCharsetNone				= {0x10003C7F};		// 268450943
   89.40 +const TUid KUidMsgFileTransformingInfo		= {0x100094A5};		// 268473509
   89.41 +const TUid KUidMsgEmailGeneralCenRep		= {0x10285A25};		// 271079973
   89.42 +
   89.43 +// No longer used as the charset information retrieved from resource file.
   89.44 +// Might possibly needed in the future ? maybe
   89.45 +// const TUid KUidMiutSystemDefaultCharset		= {0x10009418};		// 268473368
   89.46 +// const TUid KUidMiutOverrideCharset			= {0x10009419};		// 268473369
   89.47 +
   89.48 +_LIT8(KMiutUndisplayableChar, "?");
   89.49 +
   89.50 +/** SMTP send methods. 
   89.51 +@publishedAll
   89.52 +@released
   89.53 +*/
   89.54 +enum TImSendMethod
   89.55 +	{ 
   89.56 +	/** Simple email. */
   89.57 +	ESendAsSimpleEmail,
   89.58 +	/** MIME email. */
   89.59 +	ESendAsMimeEmail
   89.60 +	};	
   89.61 +
   89.62 +
   89.63 +// Information to be used when sending an email message.
   89.64 +// Relating to how parts are encoded and converted.
   89.65 +//
   89.66 +class TImEmailTransformingInfo
   89.67 +/** Encapsulates character conversion and encoding settings for sending SMTP email.
   89.68 +
   89.69 +The default outcomes for header, body, HTML, and attachment parts respectively 
   89.70 +for each of the listed categories are given below:
   89.71 +
   89.72 +Plain Charset: ISO-8859-1,ISO-8859-1,N/A,N/A
   89.73 +
   89.74 +Plain Encoding:None,None,N/A,UU
   89.75 +
   89.76 +MIME Charset:UTF8,UTF8,UTF8*,N/A
   89.77 +
   89.78 +MIME Encoding:B,QP,Base64,Base64
   89.79 +
   89.80 +*: the UTF8 value set in the header field, but no conversion is done. The 
   89.81 +HTML converter converts to UTF8. 
   89.82 +@publishedAll
   89.83 +@released
   89.84 +*/
   89.85 +	{
   89.86 +public:
   89.87 +    IMPORT_C TImEmailTransformingInfo& operator=(const TImEmailTransformingInfo& aInfo);
   89.88 +    IMPORT_C TBool operator==(const TImEmailTransformingInfo& aInfo);
   89.89 +	
   89.90 +	// streaming operations
   89.91 +	IMPORT_C void ExternalizeL( RWriteStream& aWriteStream ) const;
   89.92 +	IMPORT_C void InternalizeL( RReadStream& aReadStream );
   89.93 +	IMPORT_C void StoreL( CMsvStore& aStore ) const;
   89.94 +	IMPORT_C void RestoreL( CMsvStore& aStore );
   89.95 +
   89.96 +	// Setting functions
   89.97 +	IMPORT_C void SetToDefault(const TImSendMethod aMethod);
   89.98 +	IMPORT_C void SetSendMethod(const TImSendMethod aMethod);
   89.99 +	IMPORT_C TImSendMethod SendMethod() const;
  89.100 +
  89.101 +	IMPORT_C void SetHeaderEncodingQ();
  89.102 +	IMPORT_C void SetHeaderEncodingB();
  89.103 +	IMPORT_C void SetBodyTextEncoding(TImEncodingType aType);
  89.104 +	IMPORT_C void SetHTMLEncoding(TImEncodingType aType);
  89.105 +	IMPORT_C void SetAttachmentEncoding(TImEncodingType aType);
  89.106 +	
  89.107 +	IMPORT_C void SetHeaderAndBodyCharset(TUint aCharset);
  89.108 +	IMPORT_C void SetHeaderCharset(TUint aCharset);
  89.109 +	IMPORT_C void SetBodyTextCharset(TUint aCharset);
  89.110 +	IMPORT_C void SetHTMLCharset(TUint aCharset);
  89.111 +
  89.112 +	// Accessor functions
  89.113 +	IMPORT_C TImEncodingType HeaderEncoding() const;
  89.114 +	IMPORT_C TImEncodingType BodyTextEncoding() const;
  89.115 +	IMPORT_C TImEncodingType HTMLEncoding() const;
  89.116 +	IMPORT_C TImEncodingType AttachmentEncoding() const;
  89.117 +	
  89.118 +	IMPORT_C TUint HeaderCharset() const;
  89.119 +	IMPORT_C TUint BodyTextCharset() const;
  89.120 +	IMPORT_C TUint HTMLCharset() const;
  89.121 +
  89.122 +private:
  89.123 +	void SetHeaderEncoding(TImEncodingType aType);
  89.124 +
  89.125 +private:
  89.126 +	TImEncodingType	iHeaderEncoding;	
  89.127 +	TImEncodingType	iBodyEncoding;	
  89.128 +	TImEncodingType	iHTMLEncoding;	
  89.129 +	TImEncodingType	iAttachmentEncoding;	
  89.130 +
  89.131 +	TUint	iHeaderCharset;	
  89.132 +	TUint	iBodyCharset;	
  89.133 +	TUint	iHTMLCharset;	
  89.134 +	TUint	iTextAttachmentCharset;	
  89.135 +
  89.136 +	TImSendMethod iSendMethod;
  89.137 +	};
  89.138 +
  89.139 +
  89.140 +// Default Sending Charset/Encoding Values
  89.141 +const TImEncodingType KDefaultMIMEHeaderEncoding	=	EEncodingTypeBASE64;		// MIME
  89.142 +const TImEncodingType KDefaultMIMEBodyTextEncoding	=	EEncodingTypeQP;
  89.143 +const TImEncodingType KDefaultMIMEHTMLEncoding		=	EEncodingTypeBASE64;
  89.144 +const TImEncodingType KDefaultMIMEAttachmentEncoding=	EEncodingTypeBASE64;
  89.145 +
  89.146 +#define KDefaultPlainCharset		KCharacterSetIdentifierIso88591
  89.147 +
  89.148 +const TImEncodingType	KDefaultPlainHeaderEncoding		=	EEncodingTypeNone;	// Non-MIME or Plain
  89.149 +const TImEncodingType	KDefaultPlainBodyTextEncoding	=	EEncodingTypeNone;
  89.150 +const TImEncodingType KDefaultPlainAttachmentEncoding	=	EEncodingTypeUU;
  89.151 +
  89.152 +
  89.153 +
  89.154 +
  89.155 +// Wrapper class for CHARCONV.
  89.156 +// 'Our' charset dependant on build, UNICODE or CodePage 1252.
  89.157 +//
  89.158 +class CImConvertCharconv : public CBase
  89.159 +/**
  89.160 +@internalTechnology
  89.161 +@released
  89.162 +*/
  89.163 +	{
  89.164 +public:	
  89.165 +	IMPORT_C static CImConvertCharconv* NewL(CCnvCharacterSetConverter& aConverter, RFs& anFs);
  89.166 +	~CImConvertCharconv();
  89.167 +
  89.168 +	// MUST call prepare function first.
  89.169 +	IMPORT_C TInt ConvertToOurCharsetL( const TDesC8& aBufIn, TDes& rBufOut, 
  89.170 +										TInt& rNumUnconvertedChars, 
  89.171 +										TInt& rIndexOfFirstUnconvertedChar);
  89.172 +	IMPORT_C TInt ConvertFromOurCharsetL(const TDesC& aBufIn, TDes8& rBufOut, 
  89.173 +										 TInt& rNumUnconvertedChars,
  89.174 +										 TInt& rIndexOfFirstUnconvertedChar);
  89.175 +
  89.176 +	// MUST be called prior to calling above two functions.
  89.177 +	IMPORT_C TInt PrepareToConvertToFromOurCharsetL(const TUint aUid);
  89.178 +
  89.179 +	IMPORT_C TUint GetMimeCharsetUidL(const TDesC8& aBufIn) const;
  89.180 +	IMPORT_C HBufC8* GetMimeCharsetTextStringL(const TUint& aUid) const;
  89.181 +	IMPORT_C TUint DefaultCharset() const;
  89.182 +	IMPORT_C TUint SystemDefaultCharset() const;
  89.183 +
  89.184 +	static TInt StraightCopy( const TDesC8& aBufIn, TDes& rBufOut);
  89.185 +	static TInt StraightCopy( const TDesC& aBufIn, TDes8& rBufOut);
  89.186 +private:
  89.187 +	void ConstructL();
  89.188 +	CImConvertCharconv(CCnvCharacterSetConverter& aConverter, RFs& anFs);
  89.189 +	TBool CharsetAvailable(const TUint aUid);
  89.190 +	void SetSystemDefaultCharsetL();
  89.191 +
  89.192 +	TInt GetSystemCharsetFromCenRepL(TDes8& aMimeCharSet);
  89.193 +
  89.194 +	enum TEmailGeneralSettingsCenRepId
  89.195 +		{
  89.196 +		EEmailGeneralCharSetId				= 0x00000000
  89.197 +		};
  89.198 +
  89.199 +private:
  89.200 +	CCnvCharacterSetConverter& iConverter;
  89.201 +	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iCharsetsAvailable; 
  89.202 +
  89.203 +	RFs& iFs;
  89.204 +	TUint iCharsetUid;
  89.205 +	TUint iSystemDefaultCharset;		// Value obtained from .ini file
  89.206 +	TInt  iCharconvState;
  89.207 +	};
  89.208 +
  89.209 +#endif
    90.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    90.2 +++ b/epoc32/include/app/miutdef.h	Wed Mar 31 12:27:01 2010 +0100
    90.3 @@ -0,0 +1,56 @@
    90.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    90.5 +// All rights reserved.
    90.6 +// This component and the accompanying materials are made available
    90.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    90.8 +// which accompanies this distribution, and is available
    90.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   90.10 +//
   90.11 +// Initial Contributors:
   90.12 +// Nokia Corporation - initial contribution.
   90.13 +//
   90.14 +// Contributors:
   90.15 +//
   90.16 +// Description:
   90.17 +// This header file defines the bit flags that may be used to instruct
   90.18 +// the CImMessageOperation class how to construct a new Email message
   90.19 +// 
   90.20 +//
   90.21 +
   90.22 +#if !defined (__MIUTDEF_H__)
   90.23 +#define __MIUTDEF_H__
   90.24 +
   90.25 +/** Type for email creation flags used in the @c aMsvEmailTypeList parameter of CImEmailOperation 
   90.26 +functions.
   90.27 +
   90.28 +@see KMsvEmailTypeListMHTMLMessage
   90.29 +@see KMsvEmailTypeListInvisibleMessage
   90.30 +@see KMsvEmailTypeListMessageInPreparation 
   90.31 +@publishedAll
   90.32 +@released
   90.33 +*/
   90.34 +typedef TUint TMsvEmailTypeList;
   90.35 +
   90.36 +/** Flags that a new message should be of MHTML type. 
   90.37 +
   90.38 +If this is not set, a plain-text message is created. 
   90.39 +
   90.40 +@publishedAll
   90.41 +@released
   90.42 +@see TMsvEmailTypeList
   90.43 +*/
   90.44 +const TMsvEmailTypeList KMsvEmailTypeListMHTMLMessage				= 0x00000001;	// if not set Email is a "normal" (i.e. non-MHTML) Email message
   90.45 +/** Flags that a new message should be invisible.
   90.46 +@publishedAll
   90.47 +@released
   90.48 +@see TMsvEmailTypeList
   90.49 +*/
   90.50 +const TMsvEmailTypeList KMsvEmailTypeListInvisibleMessage			= 0x00000002;	// if set, message stays invisible on completion
   90.51 +
   90.52 +/** Flags that a new message should have the "in preparation" flag set. 
   90.53 +@publishedAll
   90.54 +@released
   90.55 +@see TMsvEmailTypeList
   90.56 +*/
   90.57 +const TMsvEmailTypeList KMsvEmailTypeListMessageInPreparation		= 0x00000004;	// if set, message stays marked "In preparation" on completion
   90.58 +
   90.59 +#endif //MIUTDEF.H
    91.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    91.2 +++ b/epoc32/include/app/miuthdr.h	Wed Mar 31 12:27:01 2010 +0100
    91.3 @@ -0,0 +1,849 @@
    91.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    91.5 +// All rights reserved.
    91.6 +// This component and the accompanying materials are made available
    91.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    91.8 +// which accompanies this distribution, and is available
    91.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   91.10 +//
   91.11 +// Initial Contributors:
   91.12 +// Nokia Corporation - initial contribution.
   91.13 +//
   91.14 +// Contributors:
   91.15 +//
   91.16 +// Description:
   91.17 +//
   91.18 +
   91.19 +#ifndef __MIUTHDR_H__
   91.20 +#define __MIUTHDR_H__
   91.21 +
   91.22 +#include <s32strm.h>
   91.23 +#include <badesca.h>
   91.24 +#include <pop3cmds.h>
   91.25 +#include <msvstd.h>
   91.26 +#include <msvids.h>			// KMsvNullIndexEntryId
   91.27 +#include <miutstd.hrh>			// KUidMsvEmailTextEntryValue
   91.28 +
   91.29 +// IMail-specific stream type within an IMail file store for CImHeader
   91.30 +const TUid KUidMsgFileMimeHeader	= {0x1000160F};		// 268441103 decimal
   91.31 +// IMail-specific stream type within an IMail file store for CImMimeHeader
   91.32 +const TUid KUidMsgFileIMailHeader	= {0x100001D8};		// 268435928 decimal
   91.33 +
   91.34 +// Identifies which version of CImHeader has been stored in stream
   91.35 +const TUint16 KImHeaderVersion = 2; 
   91.36 +
   91.37 +const TUid KUidMsvEmailTextEntry			= {KUidMsvEmailTextEntryValue};
   91.38 +const TUid KUidMsvEmailHtmlEntry			= {KUidMsvEmailHtmlEntryValue};
   91.39 +const TUid KUidMsvEmailExternalBodyEntry	= {KUidMsvEmailExternalBodyEntryValue};
   91.40 +const TUid KUidMsvEmailRtfEntry				= {KUidMsvEmailRtfEntryValue};
   91.41 +
   91.42 +
   91.43 +_LIT8(KMiutDateFormat, " %S, %2d %S %04d %02d:%02d:%02d ");
   91.44 +_LIT8(KMiutMonthNames, "JanFebMarAprMayJunJulAugSepOctNovDec");
   91.45 +_LIT8(KMiutDayNames, "MonTueWedThuFriSatSun");
   91.46 +_LIT8(KMiutTimeZoneNeg, "-%02d%02d");
   91.47 +_LIT8(KMiutTimeZonePos, "+%02d%02d");
   91.48 +
   91.49 +_LIT8(KMiutBase64String, "Base64");
   91.50 +_LIT8(KMiutQPString, "quoted-printable");
   91.51 +_LIT8(KMiut7BitString, "7bit");
   91.52 +_LIT8(KMiut8BitString, "8bit");
   91.53 +_LIT8(KMiutBinaryString, "binary");
   91.54 +_LIT8(KMiutUUString, "uuencode");
   91.55 +
   91.56 +_LIT8(KMiutWildcardBase64, "*base64*");
   91.57 +_LIT8(KMiutWildcardQP, "*quoted-printable*");
   91.58 +_LIT8(KMiutWildcard7Bit, "*7bit*");
   91.59 +_LIT8(KMiutWildcard8Bit, "*8bit*");
   91.60 +_LIT8(KMiutWildcardBinary, "*binary*");
   91.61 +_LIT8(KMiutWildcardUU, "*uu*");
   91.62 +
   91.63 +#define KMiutEmptyString KNullDesC
   91.64 +
   91.65 +_LIT(KMiutFormatString, "%S");
   91.66 +_LIT(KImEngineResourceFile, "\\resource\\messaging\\imcm.rsc");
   91.67 +
   91.68 +const TInt KMiutDateStringLength	= 32;
   91.69 +const TInt KCenturyThreshold		= 100;
   91.70 +const TInt KCenturyOffset			= 70;
   91.71 +const TInt KThisCentury				= 1900;	// as defined in 1998
   91.72 +const TInt KNextCentury				= 2000;
   91.73 +
   91.74 +class CMsvStore;
   91.75 +class TMsvEntry;
   91.76 +class RMsvReadStream;
   91.77 +class RMsvWriteStream;
   91.78 +class CImConvertHeader;
   91.79 +class CImEncodedHeader;
   91.80 +
   91.81 +void CopyArrayL(const CDesCArray& aSource, CDesCArray& aDestination);
   91.82 +
   91.83 +// Maximum size for descriptors stored in HBufC members of CImHeader = 1000 chars
   91.84 +const TInt KMaxImHeaderStringLength = 1000;
   91.85 +const TInt KMaxImMimeFieldLength	= 1000;
   91.86 +const TInt KImMailMaxBufferSize		= 1000;	// 1000 is defined by the SMTP spec as max space
   91.87 +const TInt KSmtpMaxBufferExcludingCRLF = 979; // Line length limit is 1000 chars per line including CRLF (RFC2822, Section 2.1.1)
   91.88 +                                              // 1000 chars including "Field name: "+"Field body"+CRLF (here "Resent-Message-ID: " is largest field)
   91.89 +
   91.90 +
   91.91 +/** Defines how emails will be encoded when they are sent.
   91.92 +
   91.93 +MIME standards are defined in RFC 2045, RFC 2046 and RFC 2047. 
   91.94 +@publishedAll
   91.95 +@released
   91.96 +*/
   91.97 +enum TMsgOutboxBodyEncoding
   91.98 +	{
   91.99 +	/** Emails are sent with the default encoding, which is as for EMsgOutboxMIME. */
  91.100 +	EMsgOutboxDefault,
  91.101 +	/** Emails are sent as plain text RFC822 messages. 
  91.102 +	
  91.103 +	Attachments are encoded using UUEncoding algorithm. This method would not 
  91.104 +	normally be used unless the sender was sure that the receiving mail clients 
  91.105 +	don't support MIME. */
  91.106 +	EMsgOutboxNoAlgorithm,
  91.107 +	/** Text is encoded using quoted-printable encoding, and all attachments are encoded 
  91.108 +	using BASE64 encoding.
  91.109 +	
  91.110 +	This is the default setting for this option. */
  91.111 +	EMsgOutboxMIME,
  91.112 +	/** Text parts of the message are sent as MIME TEXT/HTML parts, and are encoded 
  91.113 +	using UTF-8 encoding system. 
  91.114 +	
  91.115 +	All attachments are encoded using BASE64 encoding. Receiving mail clients 
  91.116 +	that do no support MHTML mail will display the HTML message text to the user 
  91.117 +	including all HTML tags, etc. */
  91.118 +	EMsgOutboxMHTMLAsMIME,
  91.119 +	/** Each text part of the message is sent as two alternative MIME parts.
  91.120 +	
  91.121 +	The first part is sent as plain text using quoted-printable encoding, the 
  91.122 +	second part is sent as a TEXT/HTML part which is encoded using UTF-8 encoding 
  91.123 +	system. All attachments are encoded using BASE64 encoding. This is the standard 
  91.124 +	encoding method if the user wishes to send MHTML mail. */
  91.125 +	EMsgOutboxMHTMLAlternativeAsMIME
  91.126 +	};
  91.127 +
  91.128 +/** Messaging encoding types. 
  91.129 +@publishedAll
  91.130 +@released
  91.131 +*/
  91.132 +enum TImEncodingType 
  91.133 +	{
  91.134 +	/** Unknown. */
  91.135 +	EEncodingTypeUnknown,
  91.136 +	/** None. */
  91.137 +	EEncodingTypeNone,
  91.138 +	/** 7-bit. */
  91.139 +	EEncodingType7Bit,
  91.140 +	/** 8-bit. */
  91.141 +	EEncodingType8Bit,		// ie lines still <1000 chars and terminated by CRLF
  91.142 +	/** Binary. */
  91.143 +	EEncodingTypeBinary,	// ie any length of data, not terminated by CRLF
  91.144 +	/** QP. */
  91.145 +	EEncodingTypeQP,
  91.146 +	/** Base64. */
  91.147 +	EEncodingTypeBASE64,
  91.148 +	/** UU. */
  91.149 +	EEncodingTypeUU
  91.150 +	};
  91.151 +
  91.152 +
  91.153 +// Class used for storing extracting information (to/from header)..
  91.154 +// regarding the encoding in an incoming email message header.
  91.155 +//----------------------------------------------------------------------------------------
  91.156 +class TImHeaderEncodingInfo
  91.157 +//----------------------------------------------------------------------------------------
  91.158 +/** Stores encoding data found in message headers. 
  91.159 +@publishedAll
  91.160 +@released
  91.161 +*/
  91.162 +	{
  91.163 +public:
  91.164 +	/** Message field types. */
  91.165 +	enum TFieldList 
  91.166 +		{ 
  91.167 +		EFrom, 		/**< "From" field. */
  91.168 +		EReplyTo, 	/**< "Reply To" field. */
  91.169 +		ETo, 		/**< "To" field. */
  91.170 +		ECc, 		/**< "Cc" field. */
  91.171 +		EBcc, 		/**< "Bcc" field. */
  91.172 +		ESubject	/**< Subject field. */
  91.173 +		};
  91.174 +	/** Encoding types. */
  91.175 +	enum TEncodingType 
  91.176 +		{ 
  91.177 +		EBase64, 		/**< Base64. */
  91.178 +		EQP, 			/**< QP. */
  91.179 +		ENoEncoding, 	/**< No encoding */
  91.180 +		EUU				/**< UU. */
  91.181 +		};
  91.182 +
  91.183 +public:
  91.184 +	IMPORT_C TImHeaderEncodingInfo();
  91.185 +	IMPORT_C TImHeaderEncodingInfo(const TImHeaderEncodingInfo& aFrom);
  91.186 +
  91.187 +	IMPORT_C void ExternalizeL( RWriteStream& aWriteStream ) const;
  91.188 +	IMPORT_C void InternalizeL( RReadStream& aReadStream );
  91.189 +
  91.190 +	inline void SetField(const TFieldList aField);
  91.191 +	inline TFieldList Field() const;
  91.192 +
  91.193 +	inline void SetOffset(const TInt aOffset);
  91.194 +	inline TInt Offset() const;
  91.195 +
  91.196 +	inline void SetLength(const TInt aLength);
  91.197 +	inline TInt Length() const;
  91.198 +
  91.199 +	inline void SetCharsetUid(const TUint aUid);
  91.200 +	inline TUint CharsetUid() const;
  91.201 +
  91.202 +	inline void SetEncodingType(const TDesC8& aChar);
  91.203 +	inline void SetEncodingType(const TEncodingType aType);
  91.204 +	inline  TEncodingType EncodingType() const;
  91.205 +
  91.206 +	inline void SetArrayValue(const TInt aValue);
  91.207 +	inline  TInt ArrayValue() const;
  91.208 +
  91.209 +	inline void SetAddSpace(const TBool atrueFalse);
  91.210 +	inline  TBool AddSpace() const;
  91.211 +
  91.212 +	inline void SetEncodedLength(const TInt aLength);
  91.213 +	inline TInt EncodedLength() const;
  91.214 +
  91.215 +private:
  91.216 +	TFieldList		iField; 
  91.217 +	TUint16			iOffset;
  91.218 +	TUint16			iLength;
  91.219 +	TEncodingType	iType;
  91.220 +	TUint16			iArrayValue;
  91.221 +	TBool	iAddSpace; // A space char needs adding between two adjoining 'encoded-words'
  91.222 +	TUint8	iEncodedLength; // This can be used to determine space needed for buffer.
  91.223 +	TUint	iCharsetUid; 
  91.224 +
  91.225 +	};
  91.226 +
  91.227 +
  91.228 +//------------------------------------------------------------------------------
  91.229 +
  91.230 +
  91.231 +class CImHeader : public CBase
  91.232 +/** Encapsulates an Internet Mail (RFC822) header.
  91.233 +
  91.234 +Note that the class contains some obsolete functions that take a narrow descriptor: 
  91.235 +always use the equivalent wide descriptor function instead. 
  91.236 +@publishedAll
  91.237 +@released
  91.238 +*/
  91.239 +	{
  91.240 +public:
  91.241 +/** Flags used to determine where to obtain the ReplyTo address for the header 
  91.242 +field of that name. */
  91.243 +	enum TReplyTo 
  91.244 +		{ 
  91.245 +	/** Get address from originator. */
  91.246 +		EOriginator, 
  91.247 +	/** Get address from sender. */
  91.248 +		ESender, 
  91.249 +	/** Get address from all sources. */
  91.250 +		EAll,
  91.251 +	/** Get address from recipients. */
  91.252 +		ERecipients
  91.253 +		};
  91.254 +
  91.255 +	IMPORT_C static CImHeader* NewLC();
  91.256 +	IMPORT_C ~CImHeader();
  91.257 +	IMPORT_C void Reset();
  91.258 +
  91.259 +	// streaming operations
  91.260 +	IMPORT_C void InternalizeL(RMsvReadStream& aReadStream);
  91.261 +	IMPORT_C void ExternalizeL(RMsvWriteStream& aWriteStream) const;
  91.262 +	IMPORT_C void RestoreL(CMsvStore& aMessageStore);
  91.263 +	IMPORT_C void StoreL  (CMsvStore& aMessageStore) const;
  91.264 +	IMPORT_C void StoreWithoutCommitL(CMsvStore& aMessageStore) const;
  91.265 +
  91.266 +	// the bulk of the member functions are accessors & mutators so we can use
  91.267 +	// objects of the class as data repositories during the data-marshalling stage
  91.268 +	// of getting imail headers to/from the internet
  91.269 +	IMPORT_C const TPtrC Subject() const;
  91.270 +	IMPORT_C void SetSubjectL(const TDesC8& aSubject);
  91.271 +
  91.272 +	// Internet message ID
  91.273 +	IMPORT_C const TPtrC8 ImMsgId() const;
  91.274 +	/** Sets the "MessageId" header field.
  91.275 +	
  91.276 +	@param aImMsgIdL Field value */
  91.277 +	IMPORT_C void SetImMsgIdL(const TDesC8& aImMsgIdL);
  91.278 +
  91.279 +	IMPORT_C const TPtrC From() const;
  91.280 +	IMPORT_C void SetFromL(const TDesC8& aFrom);
  91.281 +
  91.282 +	IMPORT_C const TPtrC ReplyTo() const;
  91.283 +	IMPORT_C void SetReplyToL(const TDesC8& aReplyTo);
  91.284 +
  91.285 +	IMPORT_C const TPtrC ReceiptAddress() const;
  91.286 +	/** Sets the "Receipt" header field. 
  91.287 +	
  91.288 +	@param aReceiptAddress Field value */
  91.289 +	IMPORT_C void SetReceiptAddressL(const TDesC8& aReceiptAddress);
  91.290 +
  91.291 +	IMPORT_C TUint Charset() const;
  91.292 +	IMPORT_C void SetCharset(const TUint aCharset);
  91.293 +
  91.294 +#if defined (_UNICODE)
  91.295 +	IMPORT_C void SetFromL(const TDesC16& aFrom);
  91.296 +	IMPORT_C void SetReplyToL(const TDesC16& aReplyTo);
  91.297 +	/** Sets the "Receipt" header field. 
  91.298 +	
  91.299 +	@param aReceiptAddress Field value */
  91.300 +	IMPORT_C void SetReceiptAddressL(const TDesC16& aReceiptAddress);
  91.301 +	IMPORT_C void SetSubjectL(const TDesC16& aSubject);
  91.302 +#endif
  91.303 +
  91.304 +	IMPORT_C TInt DataSize();
  91.305 +
  91.306 +	inline const TUint RemoteSize() const;
  91.307 +	inline void SetRemoteSize(TUint aSize);
  91.308 +
  91.309 +	inline const TUint16 Version() const;
  91.310 +	inline void SetVersion(TUint16 aVersion);
  91.311 +
  91.312 +	// give const access to the recipient lists
  91.313 +	inline const CDesCArray& ToRecipients () const;
  91.314 +	inline const CDesCArray& CcRecipients () const;
  91.315 +	inline const CDesCArray& BccRecipients() const;
  91.316 +	
  91.317 +	// give non-const access to the recipient lists
  91.318 +	inline CDesCArray& ToRecipients () ;
  91.319 +	inline CDesCArray& CcRecipients () ;
  91.320 +	inline CDesCArray& BccRecipients() ;
  91.321 +
  91.322 +	inline CArrayFix<TImHeaderEncodingInfo>& EncodingInfo() ;
  91.323 +	inline const CArrayFix<TImHeaderEncodingInfo>& EncodingInfo() const;
  91.324 +
  91.325 +	IMPORT_C void AddEncodingInfoL(TImHeaderEncodingInfo& aInfo);
  91.326 +
  91.327 +//-------------------------------------------------------------------------------------
  91.328 +//----------------------Used for forwarding/replying to an email ----------------------
  91.329 +
  91.330 +	IMPORT_C const TPtrC8 ResentMsgId() const;
  91.331 +	IMPORT_C void SetResentMsgIdL( const TDesC8& );
  91.332 +
  91.333 +	IMPORT_C const TPtrC ResentFrom() const;
  91.334 +	IMPORT_C void SetResentFromL( const TDesC& );
  91.335 +
  91.336 +	// give const access to the recipient lists
  91.337 +	inline const CDesCArray& ResentToRecipients () const;
  91.338 +	inline const CDesCArray& ResentCcRecipients () const;
  91.339 +	inline const CDesCArray& ResentBccRecipients() const;
  91.340 +
  91.341 +	// give non-const access to the recipient lists
  91.342 +	inline CDesCArray& ResentToRecipients ();
  91.343 +	inline CDesCArray& ResentCcRecipients ();
  91.344 +	inline CDesCArray& ResentBccRecipients();
  91.345 +
  91.346 +	IMPORT_C const TPtrC8 InReplyTo() const;
  91.347 +	IMPORT_C void SetInReplyToL(const TDesC8&);
  91.348 +
  91.349 +	IMPORT_C TInt CreateForwardL(CImHeader&, TDesC&);
  91.350 +	IMPORT_C TInt CreateReplyL(CImHeader&, TReplyTo, TDesC&);
  91.351 +	IMPORT_C void CreateReceiptL(CImHeader&, TDesC&);
  91.352 +
  91.353 +//-------------------------------------------------------------------------------------
  91.354 +//-------------------------------------------------------------------------------------
  91.355 +
  91.356 +	// Body Encoding (charset) stored on a per message basis
  91.357 +	IMPORT_C TMsgOutboxBodyEncoding BodyEncoding() const;
  91.358 +	IMPORT_C void SetBodyEncoding(TMsgOutboxBodyEncoding aMessageBodyEncoding);
  91.359 +
  91.360 +	IMPORT_C void ReDecodeL(RFs& aFS);
  91.361 +	IMPORT_C TUint OverrideCharset() const;
  91.362 +	IMPORT_C void SetOverrideCharset(TUint aCharset);
  91.363 +	IMPORT_C void SaveEncodedHeadersL();
  91.364 +
  91.365 +private:
  91.366 +	CImHeader();
  91.367 +	void ConstructL();
  91.368 +	
  91.369 +	// these four functions keep the line count down as there are several instances
  91.370 +	// of streaming in/out HBufC objects.
  91.371 +	void ReadRecipientsL ( RReadStream&, CDesCArray* );
  91.372 +	void WriteRecipientsL( RWriteStream&, const CDesCArray* ) const;
  91.373 +	void FormatSubjectL(CImHeader&, TDesC&);
  91.374 +
  91.375 +	//finds the duplicate recipients in To and Cc list
  91.376 +	TBool IsRecipientPresent(CImHeader& aCImHeader, TPtrC16 newRecipient);
  91.377 +
  91.378 +private:
  91.379 +	TUint16 iVersion;
  91.380 +
  91.381 +	HBufC16* iFrom;
  91.382 +	HBufC* iSubject;
  91.383 +	HBufC8* iImMsgId;
  91.384 +	HBufC16* iReplyTo;
  91.385 +	HBufC16* iReceipt;
  91.386 +
  91.387 +	CDesCArray* iTo;
  91.388 +	CDesCArray* iCc;
  91.389 +	CDesCArray* iBcc;
  91.390 +	TUint iRemoteSize;
  91.391 +
  91.392 +//-------------------------------------------------------------------------------------
  91.393 +//----------------------Used for forwarding/replying to an email ----------------------
  91.394 +
  91.395 +	HBufC* iResentFrom;
  91.396 +	HBufC8* iResentMsgId;
  91.397 + 	CDesCArray* iResentTo;
  91.398 +	CDesCArray* iResentCc;
  91.399 +	CDesCArray* iResentBcc;
  91.400 +	HBufC8* iInReplyTo;
  91.401 +
  91.402 +//-------------------------------------------------------------------------------------
  91.403 +//-------------------------------------------------------------------------------------
  91.404 +	CArrayFix<TImHeaderEncodingInfo>* iEncodingInfo;
  91.405 +	TMsgOutboxBodyEncoding			iBodyEncoding;
  91.406 +	// The character set to be when sending message.
  91.407 +	// Overrides the charset passed in from the settings.
  91.408 +	TUint							i822HeaderCharset; 
  91.409 +
  91.410 +	CImEncodedHeader* iEncodedHeader;
  91.411 +	};
  91.412 +
  91.413 +class TImRfc822DateField
  91.414 +/**
  91.415 +@internalTechnology
  91.416 +@released
  91.417 +*/
  91.418 +	{
  91.419 +public:
  91.420 +	IMPORT_C TInt ParseDateField(const TDesC8& aRfc822DateField, TTime& rTime);
  91.421 +	IMPORT_C void SetDate(const TTime& aTimeDate, TDes8& rOutputLine);	// NB assumes that "Date: " string has already been inserted into  rOutputLine
  91.422 +
  91.423 +private:
  91.424 +	TBool GetMonth( const TDesC8& name, TMonth& month );
  91.425 +	TBool GetTimezone( const TDesC8& name, TInt& minsOffset );
  91.426 +	};
  91.427 +
  91.428 +
  91.429 +/** Folder type flags.
  91.430 +
  91.431 +The flags correspond to the MIME multipart subtype. 
  91.432 +@publishedAll
  91.433 +@released
  91.434 +*/
  91.435 +enum TImEmailFolderType
  91.436 +	{
  91.437 +	/** Unknown. */
  91.438 +	EFolderTypeUnknown,
  91.439 +	/** Related. */
  91.440 +	EFolderTypeRelated,
  91.441 +	/** Mixed. */
  91.442 +	EFolderTypeMixed,
  91.443 +	/** Parallel. */
  91.444 +	EFolderTypeParallel,
  91.445 +	/** Alternative. */
  91.446 +	EFolderTypeAlternative,
  91.447 +	/** Digest. */
  91.448 +	EFolderTypeDigest,
  91.449 +	/** RFC822. */
  91.450 +	EFolderTypeRFC822,
  91.451 +	/** Partial. */
  91.452 +	EFolderTypePartial,
  91.453 +	/** Directory. */
  91.454 +	EFolderTypeDirectory,
  91.455 +	/** External. */
  91.456 +	EFolderTypeExternal
  91.457 +	};
  91.458 +
  91.459 +/** Describes the types of off-line email operations than can occur.
  91.460 +
  91.461 +@see TMsvEmailEntry::DisconnectedOperation() 
  91.462 +@publishedAll
  91.463 +@released
  91.464 +*/
  91.465 +enum TImDisconnectedOperationType
  91.466 +	{
  91.467 +	/** No operation. */
  91.468 +	ENoDisconnectedOperations,
  91.469 +	/** Create operation. */
  91.470 +	EDisconnectedCreateOperation,
  91.471 +	/** Delete operation. */
  91.472 +	EDisconnectedDeleteOperation,
  91.473 +	/** Change operation. */
  91.474 +	EDisconnectedChangeOperation,
  91.475 +	/** "Copy to" operation. */
  91.476 +	EDisconnectedCopyToOperation,
  91.477 +	/** "Copy from" operation. */
  91.478 +	EDisconnectedCopyFromOperation,
  91.479 +	/** "Copy within service" operation. */
  91.480 +	EDisconnectedCopyWithinServiceOperation,
  91.481 +	/** "Move to" operation. */
  91.482 +	EDisconnectedMoveToOperation,
  91.483 +	/** "Move from" operation. */
  91.484 +	EDisconnectedMoveFromOperation,
  91.485 +	/** "Move within service" operation. */
  91.486 +	EDisconnectedMoveWithinServiceOperation,
  91.487 +	/** Special operation. */
  91.488 +	EDisconnectedSpecialOperation,
  91.489 +	/** Unknown operation. */
  91.490 +	EDisconnectedUnknownOperation,
  91.491 +	/** Multiple operations. */
  91.492 +	EDisconnectedMultipleOperation
  91.493 +	};
  91.494 +
  91.495 +// Remote folder message count limited to TUint16 by using lower 16 bits of "iMtmData3".
  91.496 +// Note: The upper 16 bits of "iMtmData3" are not currently used by "TMsvEmailEntry".
  91.497 +const TUint KMsvRemoteFolderEntriesMask =		0x0000FFFF;
  91.498 +
  91.499 +class TMsvEmailEntry : public TMsvEntry
  91.500 +/** Provides storage for and access to extra email specific information for a message.
  91.501 +
  91.502 +To get a TMsvEmailEntry, get the entry's TMsvEntry, e.g. using
  91.503 +@c CMsvEntry::Entry(), and use the constructor that takes a TMsvEntry parameter.
  91.504 +
  91.505 +Many of the flags are only used by IMAP4 entries. These can be grouped as follows:
  91.506 +
  91.507 +- IMAP-specific flags, as defined by the IMAP protocol (see RFC3501, 2.3.2. Flags Message Attribute)
  91.508 +  - GetIMAP4Flags() and SetIMAP4Flags() handle all the flags as a group
  91.509 +  - \\Seen flag: SetSeenIMAP4Flag(), SeenIMAP4Flag(). 
  91.510 +  - \\Answered flag: SetAnsweredIMAP4Flag(), AnsweredIMAP4Flag()
  91.511 +  - \\Flagged flag: SetFlaggedIMAP4Flag(), FlaggedIMAP4Flag()
  91.512 +  - \\Deleted flag: SetDeletedIMAP4Flag(), DeletedIMAP4Flag() 
  91.513 +  - \\Draft flag: SetDraftIMAP4Flag(), DraftIMAP4Flag() 
  91.514 +  - \\Recent flag: SetRecentIMAP4Flag(), RecentIMAP4Flag()
  91.515 +- Folder subscriptions and other folder-related flags: 
  91.516 +  - SetMailbox(), Mailbox(), 
  91.517 +  - SetSubscribed(), Subscribed(), 
  91.518 +  - SetLocalSubscription(), LocalSubscription()
  91.519 +  - SetRemoteFolderEntries(), RemoteFolderEntries()  
  91.520 +- Disconnected operation information:
  91.521 +  - SetDisconnectedOperation(), DisconnectedOperation().
  91.522 +- Partial download flags: these flags allow a client to test if a message or its body has
  91.523 +  been partially downloaded (see TImImap4GetPartialMailInfo)   
  91.524 +  - SetPartialDownloaded(), PartialDownloaded() 
  91.525 +  - SetBodyTextComplete(), BodyTextComplete()
  91.526 +- UID information: IMAP messages have a unique identifier number (see 
  91.527 +  RFC3501, 2.3.1.1. Unique Identifier (UID) Message Attribute)
  91.528 +  - SetValidUID(), ValidUID()
  91.529 +  - SetUID(), UID().
  91.530 +  
  91.531 +The following flags are set only by the IMAP MTM. They indicate if the 
  91.532 +message contains a vCard, vCalendar (http://www.imc.org), or iCalendar (RFC 2445) attachment.
  91.533 +
  91.534 +- VCard(), SetVCard()
  91.535 +- VCalendar(), SetVCalendar() 
  91.536 +- ICalendar(), SetICalendar()
  91.537 +
  91.538 +The following flags apply to all email protocols:
  91.539 +
  91.540 +- Receipt requested: Receipt(), SetReceipt()
  91.541 +- MHTML content: MHTMLEmail(), SetMHTMLEmail()
  91.542 +
  91.543 +Note that the email specific data is stored in the reserved data members @c iMtmData1, 
  91.544 +@c iMtmData2 and @c iMtmData3 of the TMsvEntry base class. These public data members 
  91.545 +must not be directly altered by clients.
  91.546 +
  91.547 +@publishedAll
  91.548 +@released
  91.549 +@see CImap4ClientMtm
  91.550 +*/
  91.551 +	{
  91.552 +public: // Public member functions
  91.553 +	IMPORT_C TMsvEmailEntry();	// default constructor
  91.554 +	IMPORT_C TMsvEmailEntry(const TMsvEntry& aGenericEntry); 
  91.555 +
  91.556 +	IMPORT_C TBool operator==(const TMsvEntry& aEntry) const;
  91.557 +	IMPORT_C TBool operator==(const TMsvEmailEntry& aEntry) const;
  91.558 +
  91.559 +	IMPORT_C void GetIMAP4Flags(TBool& rUnread,TBool& rSeen,TBool& rAnswered,TBool& rFlagged,TBool& rDeleted,TBool& rDraft,TBool& rRecent);
  91.560 +	IMPORT_C void SetIMAP4Flags(TBool aUnread,TBool aSeen,TBool aAnswered,TBool aFlagged,TBool aDeleted,TBool aDraft,TBool aRecent);
  91.561 +
  91.562 +	IMPORT_C void SetMessageFolderType(TImEmailFolderType aFolderType);
  91.563 +	IMPORT_C TImEmailFolderType MessageFolderType() const;
  91.564 +
  91.565 +	IMPORT_C void SetDisconnectedOperation(TImDisconnectedOperationType aDisconnectedOperationType);
  91.566 +	IMPORT_C TImDisconnectedOperationType DisconnectedOperation() const;
  91.567 +
  91.568 +	IMPORT_C void SetPartialDownloaded(TBool aPartialDownloaded);
  91.569 +	IMPORT_C TBool PartialDownloaded() const;
  91.570 +
  91.571 +	//
  91.572 +	inline void SetEncrypted(TBool aEncrypt);
  91.573 +	inline TBool Encrypted() const;
  91.574 +	//
  91.575 +	inline void SetSigned(TBool aSignature);
  91.576 +	inline TBool Signed() const;
  91.577 +	//
  91.578 +	inline TBool VCard() const;
  91.579 +	inline void SetVCard(TBool aVCard);
  91.580 +	//
  91.581 +	inline TBool VCalendar() const;
  91.582 +	inline void SetVCalendar(TBool aVCal);
  91.583 +	//
  91.584 +	inline TBool ICalendar() const;
  91.585 +	inline void SetICalendar(TBool aICal);
  91.586 +	//
  91.587 +	inline TBool Receipt() const;
  91.588 +	inline void SetReceipt(TBool aReceipt);
  91.589 +
  91.590 +	inline TBool MHTMLEmail() const;
  91.591 +	inline void SetMHTMLEmail(TBool aMhtml);
  91.592 +
  91.593 +	inline TBool BodyTextComplete() const;
  91.594 +	inline void SetBodyTextComplete(TBool aFlag);
  91.595 +
  91.596 +	//
  91.597 +	// IMAP4-specific flags
  91.598 +	//
  91.599 +	inline void SetUnreadIMAP4Flag(TBool aUnread);
  91.600 +	inline TBool UnreadIMAP4Flag() const;
  91.601 +	//
  91.602 +	inline void SetSeenIMAP4Flag(TBool aSeen);
  91.603 +	inline TBool SeenIMAP4Flag() const;
  91.604 +	//
  91.605 +	inline void SetAnsweredIMAP4Flag(TBool aAnswered);
  91.606 +	inline TBool AnsweredIMAP4Flag() const;
  91.607 +	//
  91.608 +	inline void SetFlaggedIMAP4Flag(TBool aFlagged);
  91.609 +	inline TBool FlaggedIMAP4Flag() const;
  91.610 +	//
  91.611 +	inline void SetDeletedIMAP4Flag(TBool aDeleted);
  91.612 +	inline TBool DeletedIMAP4Flag() const;
  91.613 +	//
  91.614 +	inline void SetDraftIMAP4Flag(TBool aDraft);
  91.615 +	inline TBool DraftIMAP4Flag() const;
  91.616 +	//
  91.617 +	inline void SetRecentIMAP4Flag(TBool aRecent);
  91.618 +	inline TBool RecentIMAP4Flag() const;
  91.619 +	//
  91.620 +	inline void SetMailbox(TBool aMailbox);
  91.621 +	inline TBool Mailbox() const;
  91.622 +	//
  91.623 +	inline TBool Orphan() const;
  91.624 +
  91.625 +	inline void SetOrphan(TBool aOrphan);
  91.626 +	//
  91.627 +	inline void SetValidUID(TBool aValid);
  91.628 +	inline TBool ValidUID() const;
  91.629 +	//
  91.630 +	inline void SetSubscribed(TBool aSubscribed);
  91.631 +	inline TBool Subscribed() const;
  91.632 +	//
  91.633 +	inline void SetLocalSubscription(TBool aLocal);		// i.e. is subscription local, or remote
  91.634 +	inline TBool LocalSubscription() const;
  91.635 +	//
  91.636 +	inline void SetUID(TUint32 aUid);
  91.637 +	inline TUint32 UID() const;
  91.638 +	//
  91.639 +	inline TInt RemoteFolderEntries() const;
  91.640 +	inline void SetRemoteFolderEntries(TInt aEntries);
  91.641 +
  91.642 +private:
  91.643 +	enum TMsvEmailEntryFlags
  91.644 +		{	
  91.645 +		KMsvEmailEntryClearFlag				=0x00,
  91.646 +		// Flags set on Message entries...
  91.647 +		KMsvEmailEntryEncryptedFlag			=0x00000001,
  91.648 +		KMsvEmailEntrySignedFlag			=0x00000002,
  91.649 +		KMsvEmailEntryReceiptFlag			=0x00000004,
  91.650 +		KMsvEmailEntryOrphanFlag			=0x00000008,
  91.651 +
  91.652 +		// VCard and VCalendar entries may be set on folders or attachments
  91.653 +		KMsvEmailEntryVCardFlag				=0x00000010,
  91.654 +		KMsvEmailEntryVCalendarFlag			=0x00000020,
  91.655 +
  91.656 +		// Message contains HTML data
  91.657 +		// (Note: HTML and not only MHTML)
  91.658 +		KMsvEmailEntryMHTMLFlag				= 0x00000040,
  91.659 +		KMsvEmailEntryBodyTextCompleteFlag	= 0x00000080,
  91.660 +
  91.661 +		KMsvEmailEntryNoDisconnectedOperations					= 0x00000000,
  91.662 +		KMsvEmailEntryDisconnectedCreateOperation				= 0x00000100,
  91.663 +		KMsvEmailEntryDisconnectedDeleteOperation				= 0x00000200,
  91.664 +		KMsvEmailEntryDisconnectedChangeOperation				= 0x00000300,
  91.665 +		KMsvEmailEntryDisconnectedCopyToOperation				= 0x00000400,
  91.666 +		KMsvEmailEntryDisconnectedCopyFromOperation				= 0x00000500,
  91.667 +		KMsvEmailEntryDisconnectedCopyWithinServiceOperation	= 0x00000600,
  91.668 +		KMsvEmailEntryDisconnectedMoveToOperation				= 0x00000700,
  91.669 +		KMsvEmailEntryDisconnectedMoveFromOperation				= 0x00000800,
  91.670 +		KMsvEmailEntryDisconnectedMoveWithinServiceOperation	= 0x00000900,
  91.671 +		KMsvEmailEntryDisconnectedSpecialOperation				= 0x00000A00,
  91.672 +		KMsvEmailEntryDisconnectedUnknownOperation				= 0x00000B00,
  91.673 +		KMsvEmailEntryDisconnectedMultipleOperation				= 0x00000C00,
  91.674 +		KMsvEmailEntryDisconnectedOperation						= 0x00000F00,
  91.675 +
  91.676 +		// IMAP4-specific masks. Can be re-used by non-IMAP4 entries (eg POP3, SMTP)
  91.677 +		KMsvEmailEntryIMAP4SubscribedFlag	=0x00001000,
  91.678 +		KMsvEmailEntryIMAP4UnreadFlag		=0x00002000,
  91.679 +		KMsvEmailEntryIMAP4SeenFlag			=0x00004000,
  91.680 +		KMsvEmailEntryIMAP4AnsweredFlag		=0x00008000,	
  91.681 +		KMsvEmailEntryIMAP4FlaggedFlag		=0x00010000,	
  91.682 +		KMsvEmailEntryIMAP4DeletedFlag		=0x00020000,	
  91.683 +		KMsvEmailEntryIMAP4DraftFlag		=0x00040000,	
  91.684 +		KMsvEmailEntryIMAP4RecentFlag		=0x00080000,	
  91.685 +		KMsvEmailEntryIMAP4ValidUIDFlag		=0x00100000,
  91.686 +		KMsvEmailEntryIMAP4MailboxFlag		=0x00200000,
  91.687 +		KMsvEmailEntryIMAP4LocalSubFlag		=0x00400000,
  91.688 +
  91.689 +		// MIME "multipart" types assigned to folders. 
  91.690 +		KMsvMimeFolderUnknownMask			=0x00000000,
  91.691 +		KMsvMimeFolderRelatedMask			=0x01000000,
  91.692 +		KMsvMimeFolderMixedMask				=0x02000000,
  91.693 +		KMsvMimeFolderAlternativeMask		=0x03000000,
  91.694 +		KMsvMimeFolderParallelMask			=0x04000000,
  91.695 +		KMsvMimeFolderDigestMask			=0x05000000,
  91.696 +
  91.697 +		// MIME message types
  91.698 +		KMsvMimeFolderRFC822Mask			=0x06000000,
  91.699 +		KMsvMimeFolderPartialMask			=0x07000000,
  91.700 +		KMsvMimeFolderDirectoryMask			=0x08000000,	// for VCard, VCalendar types
  91.701 +		KMsvMimeFolderExternalMask			=0x09000000,
  91.702 +		KMsvMimeFolderMask					=0x0F000000,
  91.703 +		
  91.704 +		// Can be used by POP3 and IMAP4 MTMs.
  91.705 +		KMsvEmailEntryPartialDownloadFlag	=0x10000000,
  91.706 +		
  91.707 +		KMsvEmailEntryICalendarFlag			=0x20000000
  91.708 +		};
  91.709 +
  91.710 +	};
  91.711 +
  91.712 +const TUint16 KImMimeHeaderVersion = 2; // identify which version of this class has been stored
  91.713 +
  91.714 +class CImMimeHeader : public CBase
  91.715 +/** Stores a MIME email header. 
  91.716 +@publishedAll
  91.717 +@released
  91.718 +*/
  91.719 +	{
  91.720 +public:
  91.721 +	IMPORT_C static CImMimeHeader* NewLC();
  91.722 +	IMPORT_C static CImMimeHeader* NewL();
  91.723 +	IMPORT_C ~CImMimeHeader();
  91.724 +	IMPORT_C void Reset();
  91.725 +	IMPORT_C TInt Size();	// number of header fields stored in object
  91.726 +
  91.727 +	// streaming operations
  91.728 +	IMPORT_C void InternalizeL( RMsvReadStream& aReadStream );
  91.729 +	IMPORT_C void ExternalizeL( RMsvWriteStream& aWriteStream ) const;
  91.730 +	IMPORT_C void RestoreL( CMsvStore& aMessageStore );
  91.731 +	IMPORT_C void StoreL  ( CMsvStore& aMessageStore ) const;
  91.732 +	IMPORT_C void StoreWithoutCommitL(CMsvStore& aMessageStore) const;
  91.733 +
  91.734 +	/** Sets the Content-Type field value (e.g. "text" in Content-Type:text/plain). 
  91.735 +	
  91.736 +	The value is MIME defined and should always be 8-bit. 
  91.737 +	
  91.738 +	@param aPath Field value */
  91.739 +	IMPORT_C void SetContentTypeL(const TDesC8& aPath);
  91.740 +	IMPORT_C const TPtrC8 ContentType() const;
  91.741 +
  91.742 +	/** Sets the Content-Type subtype field value (e.g. "plain" in Content-Type:text/plain). 
  91.743 +	
  91.744 +	
  91.745 +	The value is MIME defined and should always be 8-bit. 
  91.746 +	
  91.747 +	@param aPath Field value */
  91.748 +	IMPORT_C void SetContentSubTypeL(const TDesC8& aPath);
  91.749 +	IMPORT_C const TPtrC8 ContentSubType() const;
  91.750 +
  91.751 +	/** Sets the Content-Disposition field value (either inline or attachment). 
  91.752 +	
  91.753 +	The value is MIME defined and should always be 8-bit. 
  91.754 +	
  91.755 +	@param aPath Field value */
  91.756 +	IMPORT_C void SetContentDispositionL(const TDesC8& aPath);
  91.757 +	IMPORT_C const TPtrC8 ContentDisposition() const;
  91.758 +
  91.759 +	/** Sets the Content-Description field value.
  91.760 +	
  91.761 +	The value is MIME defined and should always be 8-bit. 
  91.762 +	
  91.763 +	@param aPath Field value */
  91.764 +	IMPORT_C void SetContentDescriptionL(const TDesC8& aPath);
  91.765 +	IMPORT_C const TPtrC8 ContentDescription() const;
  91.766 +
  91.767 +	/** Sets the Content-Base field value.
  91.768 +	
  91.769 +	@param aPath Field value */
  91.770 +	IMPORT_C void SetContentBaseL(const TDesC8& aPath);
  91.771 +	IMPORT_C const TPtrC8 ContentBase() const;
  91.772 +
  91.773 +	/** Sets the Content-ID field value.
  91.774 +	
  91.775 +	@param aPath Field value */
  91.776 +	IMPORT_C void SetContentIDL(const TDesC8& aPath);
  91.777 +	IMPORT_C const TPtrC8 ContentID() const;
  91.778 +
  91.779 +	/** Sets the Content-Location field value.
  91.780 +	
  91.781 +	@param aPath Field value */
  91.782 +	IMPORT_C void SetContentLocationL(const TDesC16& aPath);
  91.783 +	IMPORT_C const TPtrC16 ContentLocation() const;
  91.784 +
  91.785 +	// IMAP-specific info describing relative location of entry w.r.t. parent Email message
  91.786 +	/** Sets IMAP-specific information for the relative location of the entry to the 
  91.787 +	parent email message.
  91.788 +	
  91.789 +	@param aPath Relative location */
  91.790 +	IMPORT_C void SetRelativePathL(const TDesC8& aPath);
  91.791 +	IMPORT_C const TPtrC8 RelativePath() const;
  91.792 +
  91.793 +	/** Sets the Content-Transfer-Encoding field value.
  91.794 +	
  91.795 +	@param aType Field value */
  91.796 +	IMPORT_C void SetContentTransferEncodingL(const TDesC8& aType);
  91.797 +	IMPORT_C TImEncodingType ContentTransferEncoding() const;
  91.798 +	IMPORT_C TImEncodingType ContentTransferEncoding(TDes8& rType) const;
  91.799 +	IMPORT_C const TPtrC8 GetContentTypeValue(const TDesC8& aContentTypeParameter) const;
  91.800 +
  91.801 +	// inlines to access arrays
  91.802 +	inline const CDesC8Array& ContentTypeParams() const;
  91.803 +	inline const CDesC8Array& ContentDispositionParams() const;
  91.804 +	inline const CDesC8Array& XTypeParams() const;
  91.805 +
  91.806 +	inline CDesC8Array& ContentTypeParams();
  91.807 +	inline CDesC8Array& ContentDispositionParams();
  91.808 +	inline CDesC8Array& XTypeParams();		// anything else that is in the header, but not recognised
  91.809 +
  91.810 +	inline const TUint16 Version() const;
  91.811 +	inline void SetVersion( TUint16 aVersion );
  91.812 +
  91.813 +	IMPORT_C void SetMimeCharset(const TUint aCharset);
  91.814 +	IMPORT_C TUint MimeCharset() const;
  91.815 +
  91.816 +private:
  91.817 +	CImMimeHeader();
  91.818 +	void ConstructL();
  91.819 +	TBool ArrayEntryExists(CDesCArray& aArray, TInt aField);
  91.820 +
  91.821 +private:
  91.822 +	TUint16 iVersion;
  91.823 +	HBufC8* iRelativePath;
  91.824 +	HBufC8* iContentDescription;
  91.825 +
  91.826 +	TImEncodingType iContentTransferEncoding;
  91.827 +
  91.828 +	// MHTML parameters
  91.829 +	HBufC8* iContentBase;
  91.830 +	HBufC16* iContentLocation;
  91.831 +	HBufC8* iContentID;
  91.832 +	//
  91.833 +	HBufC8* iContentType;
  91.834 +	HBufC8* iContentSubType;
  91.835 +	HBufC8* iContentDisposition;
  91.836 +	//
  91.837 +	CDesC8Array* iContentTypeParams;			// zero or more "parameter"
  91.838 +	CDesC8Array* iContentDispositionParams;		// zero or more "parameters"
  91.839 +	CDesC8Array* iXTypeParams;					// zero or more X-Type "parameters"
  91.840 +	//
  91.841 +	TBuf<20> iContentTransferEncodingBuffer;	// must be big enough to store "quoted-printable" string
  91.842 +
  91.843 +	// The uid value is always used in preference to the stored string.
  91.844 +	// Only when the uid is not set is the string used when sending.
  91.845 +	TUint iMimeCharset;	
  91.846 +	};
  91.847 +
  91.848 +
  91.849 +
  91.850 +#include <miuthdr.inl>
  91.851 +
  91.852 +#endif // #defined __MIUTHDR_H__
    92.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    92.2 +++ b/epoc32/include/app/miutmsg.h	Wed Mar 31 12:27:01 2010 +0100
    92.3 @@ -0,0 +1,950 @@
    92.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
    92.5 +// All rights reserved.
    92.6 +// This component and the accompanying materials are made available
    92.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    92.8 +// which accompanies this distribution, and is available
    92.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   92.10 +//
   92.11 +// Initial Contributors:
   92.12 +// Nokia Corporation - initial contribution.
   92.13 +//
   92.14 +// Contributors:
   92.15 +//
   92.16 +// Description:
   92.17 +//
   92.18 +
   92.19 +#ifndef __MIUTMSG_H__
   92.20 +#define __MIUTMSG_H__
   92.21 +
   92.22 +#include <msvstd.h>
   92.23 +#include <msvapi.h>			// TMsvEntry, CMsvOperation etc
   92.24 +#include <mentact.h>		// CMsgActive
   92.25 +#include <miuthdr.h>		// CImHeader, CImMimeHeader
   92.26 +#include <txtrich.h>		// CRichText etc
   92.27 +#include <miutdef.h>		// CImHeader, CImMimeHeader
   92.28 +#include <mtmdef.h>
   92.29 +#include <miutatch.h>
   92.30 +#include <smtpset.h>
   92.31 +#include <miutpars.h>		// TImMessageField
   92.32 +
   92.33 +#include <barsc.h>		// RResourceFile
   92.34 +#include <conarc.h>
   92.35 +#include <conlist.h>
   92.36 +
   92.37 +#include <txtmrtsr.h>
   92.38 +
   92.39 +
   92.40 +
   92.41 +//#include <mmsvattachmentmanager.h>
   92.42 +#include <s32mem.h>
   92.43 +
   92.44 +//Content-Transfer-Encoding: types
   92.45 +_LIT8(KMimeQuotedPrintable, " quoted-printable");
   92.46 +_LIT8(KMimeApplOctet, " application/octet-stream");
   92.47 +_LIT8(KMime7Bit, " 7-bit");
   92.48 +_LIT8(KMimeBase64, " base64");
   92.49 +_LIT8(KMimeMime, "MIME*");
   92.50 +// Content-Disposition: types
   92.51 +_LIT8(KMimeInline, "inline");
   92.52 +_LIT8(KMimeAttachment, "attachment");
   92.53 +// Content-Type: types
   92.54 +_LIT8(KMimeMultipart, "multipart");
   92.55 +_LIT8(KMimeText, "text");
   92.56 +_LIT8(KMimeImage, "image");
   92.57 +_LIT8(KMimeAudio, "audio");
   92.58 +_LIT8(KMimeVideo, "video");
   92.59 +_LIT8(KMimeApplication, "application");
   92.60 +_LIT8(KMimeMessage, "message");
   92.61 +// Content-Type: Multipart types
   92.62 +_LIT8(KMimeMixed, "mixed");
   92.63 +_LIT8(KMimeRelated, "related");
   92.64 +_LIT8(KMimeAlternative, "alternative");
   92.65 +_LIT8(KMimeEncrypted, "encrypted");
   92.66 +_LIT8(KMimeParallel, "parallel");
   92.67 +_LIT8(KMimeDigest, "digest");
   92.68 +_LIT8(KMimeSigned, "signed");
   92.69 +// Content-Type: Text types
   92.70 +_LIT8(KMimeHtml, "html");
   92.71 +_LIT8(KMimePlain, "plain");
   92.72 +_LIT8(KMimeDirectory, "directory");
   92.73 +// Content-Type: Message types
   92.74 +_LIT8(KMimePartial, "partial");
   92.75 +_LIT8(KMimeExternal, "external-body");
   92.76 +_LIT8(KMimeRfc822, "rfc822");
   92.77 +// Content-Type: Directory types
   92.78 +_LIT8(KMimeProfile, "profile");
   92.79 +_LIT(KMimeVCardExtension, ".vcf");
   92.80 +_LIT8(KMimeVCalender, "vcalendar");
   92.81 +// Content-Type: Image, Audio, Video, Application types
   92.82 +_LIT8(KMimeBmp, "bmp");
   92.83 +_LIT8(KMimeGif, "gif");
   92.84 +_LIT8(KMimeJpeg, "jpeg");
   92.85 +_LIT8(KMimeTiff, "tiff");
   92.86 +_LIT8(KMimeWav, "wav");
   92.87 +_LIT8(KMimeZip, "x-gzip");
   92.88 +_LIT(KMimeHtmlExtension, ".html");
   92.89 +_LIT(KMiutMsgDefaultHtmlFileName, "attachment.html");
   92.90 +const TUid KUidMimeHeaders = {0x10204281};
   92.91 +
   92.92 +class CImHtmlConverter;
   92.93 +
   92.94 +class CImAttachmentManager;
   92.95 +class CMsvMimeHeaders;
   92.96 +class CMsvPlainBodyText;
   92.97 +class CImPlainBodyText;
   92.98 +
   92.99 +class TImCreateMessageOptions
  92.100 +/**
  92.101 +@internalComponent
  92.102 +@released
  92.103 +*/
  92.104 +	{
  92.105 +public:
  92.106 +	TMsvPartList		iMsvPartList;
  92.107 +	TMsvEmailTypeList	iMsvEmailTypeList;
  92.108 +	TUid				iMessageType;
  92.109 +	};
  92.110 +
  92.111 +// Mixin provides interface to Browser control to resolve MHTML URIs.
  92.112 +
  92.113 +class MImURITranslator
  92.114 +/** Translates a URI in an MHTML message into a message body part file name.
  92.115 +
  92.116 +MHTML messages may contain multiple HTML body parts. Each of these body parts 
  92.117 +is able to reference another body part within the same multipart structure, 
  92.118 +or a body part within a parent multipart structure [RFC2110]. These references 
  92.119 +are called URI's.
  92.120 +
  92.121 +When an MHTML message is parsed by the message engine, the HTML body of each 
  92.122 +part is stored as a binary file. This interface provides a means of finding 
  92.123 +the file name of the body part that corresponds to a given a URI.
  92.124 +
  92.125 +The URI resolving process has the potential to become time consuming, therefore 
  92.126 +it is broken into two steps:
  92.127 +
  92.128 +Resolve asynchronously the relative URI into an absolute URI. The message 
  92.129 +body parts are recursively searched in order to find an absolute base for 
  92.130 +the relative URI [RFC2110, RFC1808]. 
  92.131 +
  92.132 +Once a relative URI has been resolved in to an absolute URI, then the message 
  92.133 +is searched for a body part that corresponds to it [RFC2110].
  92.134 +
  92.135 +If no matching body part can be found, then the absolute URI is returned to 
  92.136 +the caller in place of the filename. This absolute URI should be used to search 
  92.137 +for the required data externally, for example by using HTTP.
  92.138 +
  92.139 +@see CImEmailMessage 
  92.140 +@publishedAll
  92.141 +@released
  92.142 +*/
  92.143 +	{
  92.144 +public:
  92.145 +	/** Starts an asynchronous operation to resolve a specified URI.
  92.146 +	
  92.147 +	@param aMessageId The ID of the body part containing the URI which is to be 
  92.148 +	resolved. CImEmailMessage::FindFirstHTMLPageL() can be used to find the aMessageId 
  92.149 +	parameter for the first HTML page in a message.
  92.150 +	@param rBase The base parameter from the HTML part that contains the URI to 
  92.151 +	be resolved. If there is no base parameter in the HTML, then an empty descriptor 
  92.152 +	should be passed in.
  92.153 +	@param rURI The URI to be resolved.
  92.154 +	@param aStatus Asynchronous status word */
  92.155 +	virtual void FindUniversalResourceIdentifierL(TMsvId aMessageId, const TDesC& rBase, const TDesC& rURI, TRequestStatus &aStatus) = 0;
  92.156 +
  92.157 +	/** Gets the results after a search.
  92.158 +	
  92.159 +	@param aLinkedEntryId On return, the message ID of the linked body part, providing 
  92.160 +	one is found. Note that you should keep a record of the returned message ID 
  92.161 +	as it is required for resolving any URI's that may be found in the linked 
  92.162 +	body part.
  92.163 +	@param aFileFound On return, true if a linked body part has been found. It 
  92.164 +	is set to false otherwise.
  92.165 +	@return If successful, the filename that corresponds to the URI, or the absolute 
  92.166 +	URI if no matching file can be found. If failed, NULL. */
  92.167 +	virtual HBufC* GetUniversalResourceIdentifierL(TMsvId& aLinkedEntryId, TBool& aFileFound) const = 0;
  92.168 +
  92.169 +	/** Starts an asynchronous operation to resolve a specified URI.
  92.170 +	
  92.171 +	@param aMessageId The ID of the body part containing the URI which is to be 
  92.172 +	resolved. CImEmailMessage::FindFirstHTMLPageFileHandleL() can be used to find the aMessageId 
  92.173 +	parameter for the first HTML page in a message.
  92.174 +	@param aBase The base parameter from the HTML part that contains the URI to 
  92.175 +	be resolved. If there is no base parameter in the HTML, then an empty descriptor 
  92.176 +	should be passed in.
  92.177 +	@param aURI The URI to be resolved.
  92.178 +	@param aStatus Asynchronous status word */
  92.179 +	virtual void FindUniversalResourceIdentifierFileHandleL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus) = 0;
  92.180 +	
  92.181 +	/** Gets the results after a search.
  92.182 +	
  92.183 +	@param aLinkedEntryId On return, the message ID of the linked body part, providing 
  92.184 +	one is found. Note that you should keep a record of the returned message ID 
  92.185 +	as it is required for resolving any URI's that may be found in the linked 
  92.186 +	body part.
  92.187 +	
  92.188 +	@param aFile On return, the file handle corresponding to the URI if successful.
  92.189 +	If not successful, then this is not valid.
  92.190 +	
  92.191 +	@return KErrNone if successful and therefore aFile contains the filehandle 
  92.192 +	that corresponds to the URI. An error code if unsuccessful and therefore 
  92.193 +	aFile is not valid. */
  92.194 +	virtual TInt GetUniversalResourceIdentifierFileHandle(TMsvId& aLinkedEntryId, RFile& aFile) const = 0;
  92.195 +	};
  92.196 +
  92.197 +
  92.198 +
  92.199 +
  92.200 +class CImMhtmlUriResolver;
  92.201 +class CImRemoveMessagePart;
  92.202 +class CImStoreMessagePart;
  92.203 +class CImMimeHeader;
  92.204 +
  92.205 +class CImEmailMessage : public CMsgActive , public MImURITranslator
  92.206 +/**
  92.207 +This class can be used to manipulate new emails that
  92.208 +have been created using CImEmailOperation when composing a message.
  92.209 +
  92.210 +Use an instance of this class to add attachments, MHTML parts, body
  92.211 +text, and existing messages to a new message before it is to be sent.
  92.212 +
  92.213 +This class can also be used to retrieve the body text, list of attachments,
  92.214 +and embedded messages from emails that have been downloaded and stored within
  92.215 +the message store.
  92.216 +
  92.217 +If the store_8bit_body_text flag in imcm.rss is enabled, an instance of this class
  92.218 +can be used to retrieve the original body text character set for a particular message.
  92.219 +It can also be used to override the original body text character set so it will
  92.220 +be decoded in a new character set next time it is viewed. 
  92.221 +
  92.222 +@see CImEmailOperation
  92.223 +
  92.224 +@publishedAll
  92.225 +@released
  92.226 +*/
  92.227 +	{
  92.228 +public:
  92.229 +	/** Flags that specify to process on any messages embedded in this message. */
  92.230 +	enum TImEmailEntryType
  92.231 +		{
  92.232 +	/** Do not process embedded messages. */
  92.233 +		EThisMessageOnly,
  92.234 +	/** Process embedded messages. */
  92.235 +		EThisMessageAndEmbeddedMessages  // i.e messages with in a message
  92.236 +		};
  92.237 +	/** Flags to specify types of attachment. */
  92.238 +	enum TImAttachmentType
  92.239 +		{
  92.240 +	/** All attachments. */
  92.241 +		EAllAttachments=0,	// all attachment files contained within this message (but not inside messages within this message)
  92.242 +	/** VCards. */
  92.243 +		EVCards,
  92.244 +	/** VCalendars. */
  92.245 +		EVCalendars,
  92.246 +	/** VCards, VCalendars and ICalendars. */
  92.247 +		EVEntries,			// ie VCards, VCalendars or ICalendars (or all three)
  92.248 +	/** Encrypted. */
  92.249 +		EEncrypted,
  92.250 +	/** Signed. */
  92.251 +		ESigned,
  92.252 +	/** Secure. */
  92.253 +		ESecure,			// ie Encrypted or signed (or both)
  92.254 +	/** ICalendars. */
  92.255 +		EICalendars
  92.256 +		//.. add new items here
  92.257 +		};
  92.258 +public:
  92.259 +	IMPORT_C static CImEmailMessage* NewL(CMsvEntry& aEntry);
  92.260 +	IMPORT_C static CImEmailMessage* NewLC(CMsvEntry& aEntry);
  92.261 +	IMPORT_C ~CImEmailMessage();
  92.262 +
  92.263 +	IMPORT_C void GetAttachmentsListL(TRequestStatus& aStatus, TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
  92.264 +	IMPORT_C void GetAttachmentsListL(TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
  92.265 +	void DoGetAttachmentsListL(TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
  92.266 +
  92.267 +	IMPORT_C void FindFirstHTMLPageL(TMsvId aMessageId, TRequestStatus& aStatus);
  92.268 +
  92.269 +	IMPORT_C const CMsvEntrySelection& Selection() const;	// return selection
  92.270 +	IMPORT_C const TDesC8& ProgressL() const;
  92.271 +
  92.272 +	IMPORT_C void GetBodyTextL(TRequestStatus& aStatus, TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer,CCharFormatLayer& aCharLayer);
  92.273 +	IMPORT_C void GetBodyTextL(TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer,CCharFormatLayer& aCharLayer);
  92.274 +	void DoGetBodyTextInitL(TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
  92.275 +
  92.276 +	IMPORT_C void GetBodyTextEntryIdL(TRequestStatus& aStatus, TMsvId aMessageId, TImEmailEntryType aEntryType);
  92.277 +	IMPORT_C void GetBodyTextEntryIdL(TMsvId aMessageId, TImEmailEntryType aEntryType);
  92.278 +
  92.279 +	IMPORT_C CImPlainBodyText* OpenPlainBodyTextForWriteL();
  92.280 +	
  92.281 +	IMPORT_C CImPlainBodyText* OpenPlainBodyTextForReadL(TImEmailEntryType aEntryType, TInt aChunkLength);
  92.282 +	
  92.283 +	IMPORT_C virtual void FindUniversalResourceIdentifierL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus);
  92.284 +	IMPORT_C virtual HBufC* GetUniversalResourceIdentifierL(TMsvId& aLinkedEntryId, TBool& aFileFound) const;
  92.285 +	IMPORT_C void FindUniversalResourceIdentifierFileHandleL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus);
  92.286 +	IMPORT_C void FindFirstHTMLPageFileHandleL(TMsvId aMessageId, TRequestStatus& aStatus);
  92.287 +	IMPORT_C virtual TInt GetUniversalResourceIdentifierFileHandle(TMsvId& aLinkedEntryId, RFile& aFile) const;
  92.288 +	IMPORT_C MMsvAttachmentManager& AttachmentManager() const;
  92.289 +	void AddAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
  92.290 +	void AddAttachmentL(RFile& aFileHandle, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
  92.291 +	void AddLinkedAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
  92.292 +	void AddEntryAsAttachmentL(TMsvId aAttachmentEntryId, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
  92.293 +	const RPointerArray<CMsvAttachment>& AttachmentInfoSelection() const;
  92.294 +	void RemoveAttachmentL(TMsvAttachmentId aAttachmentId,TRequestStatus& aStatus) ;
  92.295 +	void RemoveAttachedMessageL(TMsvAttachmentId aAttachmentId,TRequestStatus& aStatus) ;
  92.296 +	void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
  92.297 +	void CheckEntryAndResetStoreMessageL(TMsvId aMessageId);
  92.298 +	void CheckEntryAndResetRemoveMessageL(TMsvId aMessageId);
  92.299 +	void DoSetActive(TRequestStatus& aStatus);
  92.300 +	CImMimeHeader* ConvertToImMimeHeadersL(CMsvMimeHeaders* aMimeHeaders);
  92.301 +	CMsvMimeHeaders* ConvertToMsvMimeHeadersL(CImMimeHeader* aMimeHeader);
  92.302 +	void AppendEntryAttachmentInfoL();
  92.303 +	IMPORT_C void AddRelatedPartL(TMsvId aMessageId, const TDesC& aAttachmentFullName, TRequestStatus& aStatus, TMsvId aRelatedPartId, const TDesC8& aContentId);
  92.304 +	IMPORT_C void StoreBodyTextL(TMsvId aMessageId, CRichText& aRichText, TRequestStatus& aStatus);
  92.305 +	IMPORT_C void StoreBodyTextL(TMsvId aMessageId, CRichText& aRichText, TRequestStatus& aStatus, TBool aUsePlainTextStorage);
  92.306 +	IMPORT_C void GetMessageDigestEntriesL(TRequestStatus& aStatus, TMsvId aMessageId);	
  92.307 +	IMPORT_C void GetCharacterSetL(TMsvId aMessageId, TUint& aCharacterSetId, TBool& aOverride);
  92.308 +	IMPORT_C void SetCharacterSetL(TMsvId aMessageId, TUint aCharacterSetId);
  92.309 +	IMPORT_C void StoreBodyTextWithMimeHeaderL(TMsvId aMessageId, CRichText& aRichText, const CImMimeHeader& aMimeHeader, TRequestStatus& aStatus);
  92.310 +
  92.311 +	TMsvId EmailEntryId();
  92.312 +
  92.313 +private:
  92.314 +	void DoRunL();
  92.315 +	void DoCancel();
  92.316 +	CImEmailMessage(CMsvEntry& aEntry);
  92.317 +	void ConstructL();
  92.318 +	void DoComplete(TInt&);
  92.319 +	void DoStateL();
  92.320 +
  92.321 +	void Start(TRequestStatus& aStatus);
  92.322 +	void StartL();
  92.323 +
  92.324 +	void Reset();
  92.325 +	void ChangeMessageContextL();
  92.326 +	void CompareChildrenAndPopulateSelL();
  92.327 +	void AttachmentInfoL();
  92.328 +	void AssembleBodyTextL();
  92.329 +	void CheckAndInitialiseL(TMsvId aMessageId);
  92.330 +	
  92.331 +	void AppendAttachmentL();
  92.332 +	TBool MessageDigestEntry();
  92.333 +	TBool HandleDifferentFolderTypesL();
  92.334 +	void GetTextForAlternateFolderL();
  92.335 +	void GetTextForRelatedFolderL();
  92.336 +	void GetAttachmentsForRelatedFolderL();
  92.337 +	TBool GetBodyTextCharacterSetL();
  92.338 +	TUint GetOverrideCharacterSetL();
  92.339 +	TInt FindFilename(const CImMimeHeader& aMimeInfo, TPtrC8& aFilename);
  92.340 +	void FindFilenameDecodeL(
  92.341 +		const CImMimeHeader& aMimeInfo, TFileName& aFileName, TUint aCharset);	
  92.342 +	void AppendAttachmentNameL();
  92.343 +	void SetBodyTextCharacterSetL(TMsvId aEntryId, TUint8 aNewCharacterSetId);
  92.344 +	void FindFirstBodyTextPartL(TMsvId aEntryId, TBool& found);
  92.345 +
  92.346 +	CImMimeHeader* FindAttachmentMimeHeaderL();
  92.347 +	TMsvEntry FindIdEntryL(TMsvId aMessageId);
  92.348 +
  92.349 +	void DoGetBodyTextEntryIdL(TMsvId aMessageId, TImEmailEntryType aEntryType);
  92.350 +
  92.351 +
  92.352 +	enum TImEmailMessageStates
  92.353 +		{
  92.354 +		EIdle=0,
  92.355 +		ETextForThisMsg,
  92.356 +		ETextForMsgDigest,
  92.357 +		ETextEntryIdForThisMsg,
  92.358 +		ETextEntryIdMsgDigest,
  92.359 +		ETextForThisMsgGetCharacterSet,
  92.360 +		EAttachmentsForThisMsg,
  92.361 +		EAttachmentsForMsgDigest,
  92.362 +		EMsgDigestEntries,
  92.363 +		EResolveURI,
  92.364 +		EStoreMessagePart,
  92.365 +		ERemoveMessagePart,
  92.366 +		EFinished
  92.367 +		};
  92.368 +	CMsvEntry& iClientEntry;
  92.369 +	CMsvEntrySelection* iCompleteSel;
  92.370 +	CMsvEntrySelection* iResultSel;
  92.371 +
  92.372 +	CRichText* iRichText;
  92.373 +	CParaFormatLayer* iParaLayer;
  92.374 +	CCharFormatLayer* iCharLayer;
  92.375 +	TMsvId iParentMsgId;			// the Id passed into Getxxx() function representing the 'parent' message ID
  92.376 +	TImEmailMessageStates iState;
  92.377 +	TImAttachmentType iAttachmentType;
  92.378 +	TMsvEmailEntry iEntry;
  92.379 +	CImMhtmlUriResolver* iUriResolver;
  92.380 +	TBool iUriFileFound;
  92.381 +	CImStoreMessagePart* iStoreMessagePart;
  92.382 +	CImRemoveMessagePart* iRemoveMessagePart;
  92.383 +	TPckgBuf<TMsvId>	iProgress;
  92.384 +	TImEmailEntryType iEntryType;
  92.385 +	TBool iIsAMHTMLmessage;
  92.386 +	TUint iCharacterSetId;
  92.387 +	RFs iFs;
  92.388 +	CDesCArray* iAttachmentNameList;
  92.389 +	CImAttachmentManager* 			iAttachmentManager;
  92.390 +	CMsvStore* 						iStore;
  92.391 +	
  92.392 +	// This is the entry Id using which the CImEmailMessage was created.
  92.393 +	// store this , so that when the  message id to which attachment is 
  92.394 +	// retrieved then the CIMEmailMessage is reset with this Id.
  92.395 +	TMsvId							iEmailEntryId;
  92.396 +	enum TImAttachmentStates
  92.397 +		{
  92.398 +		ENoAttachment=0,
  92.399 +		EAddAttachment,
  92.400 +		EDeleteAttachment,
  92.401 +		ECreateAttachment
  92.402 +		};	
  92.403 +	TInt		iAttachmentState;
  92.404 +	
  92.405 +	};
  92.406 +
  92.407 +class CImRemoveMessagePart : public CMsvOperation
  92.408 +/**
  92.409 +@internalComponent
  92.410 +@released
  92.411 +*/
  92.412 +	{
  92.413 +public:
  92.414 +	static CImRemoveMessagePart* DeleteAttachmentL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TMsvId aAttachmentId);
  92.415 +	static CImRemoveMessagePart* DeleteAttachedMessageL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TMsvId aAttachedMessageId);
  92.416 +	~CImRemoveMessagePart();
  92.417 +	const TDesC8& FinalProgress();
  92.418 +	void DoCancel();
  92.419 +	void RunL();
  92.420 +	const TDesC8& ProgressL();		// returns NULL until operation completed - then returns MessageId
  92.421 +	TMsvId RemovedAttachmentId();	
  92.422 +private:
  92.423 +	CImRemoveMessagePart(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId);
  92.424 +	void ConstructL(TMsvId aAttachmentId);
  92.425 +	void ErrorRecovery(TInt aError);
  92.426 +	void SelectNextStateL();					// selects next state to go to
  92.427 +	void ChangeStateL();					// initiates the next state operation
  92.428 +	void SelectAndChangeToNextStateL();
  92.429 +	void RequestComplete(TInt aError);
  92.430 +	void Recover();							// leave message in a 'good' state
  92.431 +
  92.432 +	void CheckAttachmentParentTypeL();
  92.433 +	void MoveOtherEntryToParentOfFolderL();
  92.434 +	void DeleteAttachmentEntryL();
  92.435 +	void DeleteFolderEntryL();
  92.436 +	void CompleteRemoveMessagePartL();
  92.437 +private:
  92.438 +	enum TImRemoveMessagePartState
  92.439 +		{
  92.440 +		ECheckAttachmentParentType,
  92.441 +		EMoveOtherEntryToParentOfFolder,
  92.442 +		EDeleteAttachmentEntry,
  92.443 +		EDeleteFolderEntry,
  92.444 +		ECompleteRemoveMessagePart,
  92.445 +		EFinished
  92.446 +		};
  92.447 +	CMsvEntry&			iMsvEntry;
  92.448 +	CMsvOperation*		iMsvOperation;
  92.449 +
  92.450 +	CMsvEntrySelection*	iMessageEntrySelection;
  92.451 +	CImEmailMessage*	iEmailMessage;
  92.452 +
  92.453 +	TInt				iState;
  92.454 +	TPckgBuf<TMsvId>	iDataMember;
  92.455 +	TMsvId				iMessageId;
  92.456 +	TMsvId				iFolderToDeleteId;
  92.457 +	TInt				iAttachmentSize;
  92.458 +	TMsvId				iAttachmentId;
  92.459 +	TMsvId				iEntryToMoveId;
  92.460 +	};
  92.461 +
  92.462 +class CImStoreMessagePart : public CMsvOperation
  92.463 +/**
  92.464 +@internalComponent
  92.465 +@released
  92.466 +*/
  92.467 +	{
  92.468 +public:
  92.469 +	static CImStoreMessagePart* AddAttachmentL(TMsvId aMessageId, const TDesC& aFilePath, CMsvEntry& aMsvEntry,CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus );
  92.470 +	static CImStoreMessagePart* AddEntryAsAttachmentL(TMsvId aMessageId,TMsvId aAttachmentMessageId, CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
  92.471 +	static CImStoreMessagePart* AddAttachmentL(TMsvId aMessageId,RFile& aFile, CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
  92.472 +	static CImStoreMessagePart* AddLinkedAttachmentL(TMsvId aMessageId,const TDesC& aFilePath, CMsvEntry& aMsvEntry,CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus );	
  92.473 +	static CImStoreMessagePart* CreateAttachmentL(TMsvId aMessageId,const TDesC& aFileName, RFile& aAttachmentFile,CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
  92.474 +	static CImStoreMessagePart* AddRelatedPartL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, const TDesC& aAttachmentFullName, TMsvId aRelatedPartId, const TDesC8& aContentId);
  92.475 +	static CImStoreMessagePart* StoreBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CRichText& aRichText, TBool aUsePlainTextStorage = EFalse);
  92.476 +	static CImStoreMessagePart* StoreBodyTextWithMimeHeaderL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CRichText& aRichText, const CImMimeHeader& aMimeHeader, TBool aUsePlainTextStorage = EFalse);
  92.477 +	static CImStoreMessagePart* StorePlainBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TBool aUsePlainTextStorage = ETrue);
  92.478 +	static CImStoreMessagePart* StorePlainBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CImMimeHeader& aMimeHeader, TBool aUsePlainTextStorage = ETrue);
  92.479 +	~CImStoreMessagePart();
  92.480 +	const TDesC8& FinalProgress();
  92.481 +	void DoCancel();
  92.482 +	void RunL();
  92.483 +	const TDesC8& ProgressL();
  92.484 +private:
  92.485 +	enum TImMessagePart
  92.486 +		{
  92.487 +		EMessagePartAttachment,
  92.488 +		EMessagePartBody,
  92.489 +		EMessagePartMessageAttachment
  92.490 +		};
  92.491 +	void ConstructL(RFile& aFile);
  92.492 +	void ConstructL(RFile& aFile,const TDesC& aAttachmentName);
  92.493 +	void ConstructL(const TDesC& aAttachmentFullName, const TDesC8& aContentId);
  92.494 +	void ConstructAttachmentInfo(CMsvAttachment* aAttachmentInfo,TInt aAttachmentCreationState);
  92.495 +	CImStoreMessagePart(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TBool aUsePlainTextStorage = EFalse);
  92.496 +	
  92.497 +	void ConstructL();
  92.498 +	void ConstructL(const TDesC& aAttachmentFullName);
  92.499 +	void ConstructL(TMsvId aAttachmentMessageId);
  92.500 +	void ConstructL(const TDesC& aAttachmentFullName, TMsvId aRelatedPartId, const TDesC8& aContentId);
  92.501 +	void ConstructL(CRichText& aRichText);
  92.502 +	void ConstructL(CRichText& aRichText, const CImMimeHeader& aMimeHeader);
  92.503 +	void ConstructL(CImMimeHeader& aMimeHeader);
  92.504 +	void ConstructL(TImMessagePart aMessagePart);
  92.505 +	void ErrorRecovery(TInt error);
  92.506 +	void SelectNextStateL();				// selects next state to go to
  92.507 +	void ChangeStateL();					// initiates the next state operation
  92.508 +	void SelectAndChangeToNextStateL();
  92.509 +	void RequestComplete(TInt aError);
  92.510 +	void Recover();
  92.511 +
  92.512 +	TBool HTMLMessage() const;
  92.513 +	void SetHTMLMessage(TBool aFlag);
  92.514 +	TBool MultipartMixedExists() const;
  92.515 +	void SetMultipartMixedExists(TBool aFlag);
  92.516 +	TBool MultipartMixedCreated() const;
  92.517 +	void SetMultipartMixedCreated(TBool aFlag);
  92.518 +	TBool MultipartAlternativeExists() const;
  92.519 +	void SetMultipartAlternativeExists(TBool aFlag);
  92.520 +	TBool MultipartAlternativeCreated() const;
  92.521 +	void SetMultipartAlternativeCreated(TBool aFlag);
  92.522 +	TBool MultipartRelatedExists() const;
  92.523 +	void SetMultipartRelatedExists(TBool aFlag);
  92.524 +	TBool MultipartRelatedCreated() const;
  92.525 +	void SetMultipartRelatedCreated(TBool aFlag);
  92.526 +	TBool TextPartExists() const;
  92.527 +	void SetTextPartExists(TBool aFlag);
  92.528 +	TBool TextPartCreated() const;
  92.529 +	void SetTextPartCreated(TBool aFlag);
  92.530 + 	TBool AttachmentEntryCreated() const;
  92.531 +	void SetAttachmentEntryCreated(TBool aFlag);
  92.532 +
  92.533 +	void FindMultipartRelatedFolderL();
  92.534 +	void CheckForSubfolderL();
  92.535 +	void CreateAttachmentEntryL();
  92.536 +	void CopyOrigMessageToMessageL();
  92.537 +	void CreateMultipartMixedFolderEntryL();
  92.538 +	void CreateMultipartAlternativeFolderEntryL();
  92.539 +	void CreateMultipartRelatedFolderEntryL();
  92.540 +	void MoveOriginalMessageEntryChildrenToNewFolderL();
  92.541 +	void CreateTextEntryL();
  92.542 +	void StoreRichTextL();
  92.543 +	void CompleteStoreMessagePartL();
  92.544 +	void CreateHTMLEntryL();
  92.545 +	void PrepareToStoreHTMLEntryTextL();
  92.546 +	void StoreHTMLEntryTextL();
  92.547 +	void RemoveHTMLEntryL();
  92.548 +	void MoveTextEntryToAltFolderL();
  92.549 +	TPtrC GetDefaultAttachmentName();
  92.550 +	void OpenAndReadResourceFileL();
  92.551 +	void StoreMimeHeaderL();
  92.552 +	TBool CreateAttachmentMimeHeaderL(CImMimeHeader& aMimeHeader, const TDesC& aDetails);
  92.553 +	void CreateFolderMimeHeaderL(CImMimeHeader& aMimeHeader);
  92.554 +	void CreateMessageMimeHeaderL(CImMimeHeader& aMimeHeader);
  92.555 +	void AddAttachmentL();
  92.556 +	void AddAttachmentUsingFileHandleL();
  92.557 +	void AddLinkedAttachmentL();
  92.558 +	void AddEntryAsAttachmentL();	
  92.559 +	void CreateAttachmentL();
  92.560 +	void DoAttachmentStoreL();
  92.561 +	TInt CheckMimeInAttachmentInfoL(CMsvMimeHeaders& aMsvMimeHeaders);
  92.562 +	CImMimeHeader* ProcessAttachmentMimeHeadersL();
  92.563 +	void SetEntryDetailsL(TMsvEntry& aEntry);
  92.564 +	void StorePlainTextL();
  92.565 +private:
  92.566 +	enum TImStoreMessagePartState
  92.567 +		{
  92.568 +		EFindMultipartRelatedFolder,
  92.569 +		ECheckForSubfolder,
  92.570 +		ECreateAttachmentEntry,
  92.571 +		EStoreAttachment,
  92.572 +		ECopyOrigMessageToMessage,
  92.573 +		ECreateMultipartMixedFolderEntry,
  92.574 +		ECreateMultipartRelatedFolderEntry,
  92.575 +		ECreateMultipartAlternativeFolderEntry,
  92.576 +		EMoveOriginalMessageEntryChildrenToNewFolder,
  92.577 +		ECreateTextEntry,
  92.578 +		EStoreRichText,
  92.579 +		ERemoveHTMLEntry,
  92.580 +		EMoveTextToAlternativeFolder,
  92.581 +		ECreateHTMLEntry,
  92.582 +		EPrepareToStoreHTMLEntryText,
  92.583 +		EStoreHTMLEntryText,
  92.584 +		ECompleteStoreMessage,
  92.585 +		EFinished
  92.586 +		,EStoreHTMLTextInEntry,
  92.587 +		EAddEntryAttachment	
  92.588 +		};
  92.589 +
  92.590 +	enum TImStoreMessagePartFlags
  92.591 +		{
  92.592 +		KStoreMessagePartClearFlag							= 0x00000000,
  92.593 +		KStoreMessagePartHTMLMessage						= 0x00000001,
  92.594 +		KStoreMessagePartMultipartMixedExists				= 0x00000002,
  92.595 +		KStoreMessagePartMultipartMixedCreated				= 0x00000004,
  92.596 +		KStoreMessagePartMultipartAlternativeExists			= 0x00000008,
  92.597 +		KStoreMessagePartMultipartAlternativeCreated		= 0x00000010,
  92.598 +		KStoreMessagePartTextPartExists						= 0x00000020,
  92.599 +		KStoreMessagePartTextPartCreated					= 0x00000040,
  92.600 +		KStoreMessagePartAttachmentEntryCreated				= 0x00000080,
  92.601 +		KStoreMessagePartOrigMessageEntryChildrenCopied		= 0x00000100,
  92.602 +		KStoreMessagePartOrigMessageEntryChildrenDeleted	= 0x00000200,
  92.603 +		KStoreMessagePartMultipartRelatedExists				= 0x00000400,
  92.604 +		KStoreMessagePartMultipartRelatedCreated			= 0x00000800
  92.605 +		};
  92.606 +	CMsvEntry&			iMsvEntry;
  92.607 +	CMsvOperation*		iMsvOperation;
  92.608 +	
  92.609 +	CRichText*			iRichTextToStore; // I don't own this object!
  92.610 +	CImMimeHeader*		iMimeHeaderOfBodyText;
  92.611 +	CRichText*			iRichText;
  92.612 +	CFileMan*			iFileMan;
  92.613 +	CMsvEntrySelection* iMessageEntrySelection;
  92.614 +
  92.615 +	TInt				iState;
  92.616 +	TPckgBuf<TMsvId>	iDataMember;
  92.617 +	TMsvId				iMessageId;
  92.618 +	TImMessagePart		iMessagePart;
  92.619 +	TMsvId				iMixFolderId;
  92.620 +	TMsvId				iAltFolderId;
  92.621 +	TMsvId				iRelFolderId;
  92.622 +	HBufC*				iAttachmentFullName;
  92.623 +	TInt				iAttachmentSize;
  92.624 +	TMsvId				iAttachmentId;
  92.625 +	TMsvId				iTextId;
  92.626 +	TMsvId				iHtmlId;
  92.627 +	TMsvId				iRelatedPartId;
  92.628 +	TMsvId				iAttachmentMessageId;
  92.629 +	TUint32				iFlags;
  92.630 +	HBufC8*				iContentId;
  92.631 +	CImEmailMessage*	iEmailMessage;
  92.632 +
  92.633 +	// Used when converting rich text to html
  92.634 +	CParaFormatLayer*	iParaLayer;
  92.635 +	CCharFormatLayer*	iCharLayer;
  92.636 +	CImHtmlConverter* 	iHtmlConverter;
  92.637 +	TBool iFinishedConvertingHTML;
  92.638 +	CMsvAttachment*		iAttachmentInfo;
  92.639 +	CMsvStore* 			iStore;
  92.640 +	TInt 				iAttachmentCreateState;
  92.641 +	TBool				iIsAddByFileHandle;
  92.642 +	RFile*				iFileHandle;
  92.643 +	RFile               iFile;
  92.644 +	// Indicates whether to store message body as CRichText or plaintext.
  92.645 +	TBool 				iUsePlainTextStorage;
  92.646 +	// Size of the plain text body.
  92.647 +	TInt				iSizeOfBody;
  92.648 +	// Size of the Fwd'ed/ReplyTo plaintext body part.
  92.649 +	TInt				iSizeFwdReplyBody;
  92.650 +	// The error value returned when CRichText is populated with message body text.
  92.651 +	TInt 				iRestoreErr;
  92.652 +	enum TImAttachmentCreation
  92.653 +		{
  92.654 +		EAddAttachment,
  92.655 +		EAddAttachmentUsingFileHandle,
  92.656 +		EAddLinkedAttachment,
  92.657 +		EAddEntryAsAttachment,
  92.658 +		ECreateAttachment
  92.659 +		};
  92.660 +	};
  92.661 +
  92.662 +class CImEmailOperation : public CMsvOperation
  92.663 +/** Provides simple email messages creation functions, including creation of new 
  92.664 +messages, replies, forwarded messages, and receipts.
  92.665 +
  92.666 +Both plain-text and HTML messages, with or without attachments, can be created. 
  92.667 +@publishedAll
  92.668 +@released
  92.669 +*/
  92.670 +	{
  92.671 +public:
  92.672 +	IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.673 +	IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
  92.674 +	
  92.675 +	IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority , TBool aUsePlainTextStorage);
  92.676 +	
  92.677 +	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.678 +	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.679 +	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority);
  92.680 +	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
  92.681 +	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.682 +	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.683 +	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
  92.684 +	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
  92.685 +	IMPORT_C static CImEmailOperation* CreateForwardAsAttachmentL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.686 +	IMPORT_C static CImEmailOperation* CreateForwardAsAttachmentL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aSmtpServiceId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
  92.687 +	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.688 +	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.689 +	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority);
  92.690 +	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
  92.691 +	IMPORT_C ~CImEmailOperation();
  92.692 +	IMPORT_C const TDesC8& FinalProgress();
  92.693 +	void DoCancel();
  92.694 +	void RunL();
  92.695 +	const TDesC8& ProgressL();
  92.696 +
  92.697 +	static CImEmailOperation* CreateCopyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
  92.698 +
  92.699 +private:
  92.700 +	enum TImEmailOperation 
  92.701 +		{
  92.702 +		ENew					= 0,
  92.703 +		EReply					= 1,
  92.704 +		EForward				= 2,
  92.705 +		EReceipt				= 3,
  92.706 +		EDeletingBadEmail		= 4,
  92.707 +		ECopy					= 5,
  92.708 +		EAttachOriginal			= 0x80,
  92.709 +		EForwardAsAttachment    = EForward | EAttachOriginal,
  92.710 +		EReplyAsAttachment		= EReply | EAttachOriginal
  92.711 +		};
  92.712 +
  92.713 +private:
  92.714 +	CImEmailOperation(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
  92.715 +	void ConstructL(TMsvId aMessageId, const TDesC& aFormatString, TImEmailOperation aOperation);
  92.716 +	void ConstructL(TMsvId aMessageId, TImEmailOperation aOperation);
  92.717 +	void ConstructL(TImEmailOperation aOperation);
  92.718 +	void OpenAndReadResourceFileL();
  92.719 +	void SetSmtpServiceFromDefaultsL();
  92.720 +	void SetSmtpServiceFromOriginalMessageL();
  92.721 +	void ErrorRecovery(TInt error);
  92.722 +	void SelectNextStateL();
  92.723 +	void ProcessStateL();
  92.724 +	void SelectAndProcessNextStateL();
  92.725 +	void RequestComplete(TInt aError);
  92.726 +	void CreateNewHeaderL();
  92.727 +	void GetBodyTextL();
  92.728 +	TInt RemoveIncompleteAttachments();
  92.729 +	void CreateEntryDetails(TMsvEmailEntry& aMsvEmailEntry);
  92.730 +	void CreateNewMessageL(TMsvId aDestinationId);
  92.731 +	void CreateMultipartMixedFolderEntryL();
  92.732 +	void CreateTextEntryL(TMsvId aFolderId);
  92.733 +	void StoreBodyL();
  92.734 +	void StorePlainBodyL();
  92.735 +	void CheckForSignatureOrVCardL();
  92.736 +	void CreateAttachmentEntryL();
  92.737 +	void StoreAttachmentL();
  92.738 +	void CreateMultipartAlternativeFolderEntryL();
  92.739 +	void AppendHtmlAttachmentL();
  92.740 +	void AttachOriginalMessageToNewMessageL();
  92.741 +	void CompleteEmailOperationL();
  92.742 +	void CreateHTMLEntryL();
  92.743 +	void PrepareToStoreHTMLEntryTextL();
  92.744 +	void StoreHTMLEntryTextL();
  92.745 +	void CreateVCardAttachmentL();
  92.746 +	void AddVCardAttachmentL();
  92.747 +	void AddMessageAsAttachmentL();
  92.748 +	TPtrC GetDefaultAttachmentName();
  92.749 +	void RestoreSmtpSettingsL();
  92.750 +	TMsvId ServiceId();
  92.751 +	TBool NeedMultipartMixedFolder() const;
  92.752 +	void ReadDefaultHtmlAttachmentNameL(TDes& aFileName);
  92.753 +	void CreateDefaultAttachmentL();
  92.754 +	void AddMessageAttachmentInfoL(TMsvId aAttachmentMessageId);
  92.755 +	void ResetStoreL();
  92.756 +	void CreateAddressListStringL(HBufC*& aListBuffer, const CDesCArray& aAddressArray);
  92.757 +	void RestoreOriginalHeaderL();
  92.758 +	void SetBodyHeaderFormatL();
  92.759 +	static void ClosePlainBodyTextArray(TAny* aPtr);
  92.760 +	void StorePlainTextL();
  92.761 +	TInt GetPlainBodyTextSizeL();
  92.762 +	
  92.763 +private:
  92.764 +	enum TImEmailOperationState
  92.765 +		{
  92.766 +		ECreateNewHeader,
  92.767 +		EGetBodyText,
  92.768 +		EGetAttachmentList,
  92.769 +		EGetMessageDigest,
  92.770 +		ECreateNewMessageEntry,
  92.771 +		ECheckMultipartMixedFolderRequired,
  92.772 +		ECreateMultipartMixedFolderEntry,
  92.773 +		ECheckMultipartAlternativeFolderRequired,
  92.774 +		ECreateMultipartAlternativeFolderEntry,
  92.775 +		ECheckTextEntryRequired,
  92.776 +		ECreateTextEntry,
  92.777 +		EStoreBody,
  92.778 +		ECheckVCardRequired,
  92.779 +		ECreateVCardAttachment,
  92.780 +		EAddVCardAttachment,
  92.781 +		ECheckHTMLEntryRequired,
  92.782 +		ECreateHTMLEntry,
  92.783 +		EPrepareToStoreHTMLEntryText,
  92.784 +		EStoreHTMLEntryText,
  92.785 +		ECheckAttachOriginalMessageRequired,
  92.786 +		EAttachOriginalMessage,
  92.787 +		ECheckHTMLPageRequired,
  92.788 +		EFindHTMLPage,
  92.789 +		ECopyHTMLPartToAttachment,
  92.790 +		ECheckAttachmentsRequired,
  92.791 +		ECreateAttachmentEntry,
  92.792 +		EStoreAttachment,
  92.793 +		ECheckEmbeddedMessagesRequired,
  92.794 +		EAddEmbeddedMessagesAsAttachments,
  92.795 +		ECompleteEmailOperation,
  92.796 +		EFinished
  92.797 +		,ECreateDefaultHtmlAttachment,
  92.798 +		EStoreHTMLTextInEntry,
  92.799 +		EAddMessageAttachmentInfo
  92.800 +		};
  92.801 +
  92.802 +	// Flags specifying format of body header information to include
  92.803 +	// in reply and forwarded email addresses
  92.804 +	enum TImBodyHeaderFormat
  92.805 +		{
  92.806 +		ENoToCcInfo=0,
  92.807 +		EToOnly,
  92.808 +		ECcOnly,
  92.809 +		EToAndCc
  92.810 +		};
  92.811 +	
  92.812 +	CMsvEntry* iMsvEntry;
  92.813 +	CMsvOperation* iMsvOperation;
  92.814 +	
  92.815 +	CImHeader* iNewHeader;
  92.816 +	CParaFormatLayer* iParaLayer;
  92.817 +	CCharFormatLayer* iCharLayer;
  92.818 +	CRichText* iRichText;
  92.819 +	CImEmailMessage* iEmailMessage;
  92.820 +	HBufC* iFormatString;
  92.821 +	CFileMan* iFileMan;
  92.822 +	CImSmtpSettings* iSmtpSettings;
  92.823 +	TInt iState;
  92.824 +	TImEmailOperation iOperation;
  92.825 +	TMsvId iDestinationId;
  92.826 +	TMsvId iMultipartMixedId;
  92.827 +	TMsvId iMultipartAlternativeId;
  92.828 +	TMsvId iOrigMessageId;
  92.829 +	TMsvId iNewMessageId;
  92.830 +	TMsvId iSmtpServiceId;
  92.831 +	TMsvId iAttachedMessageId;
  92.832 +	TUid iMsgType;
  92.833 +	TMsvPartList iPartList;
  92.834 +	TMsvEmailTypeList iMsvEmailTypeList;
  92.835 +	TInt iAttachmentCount;
  92.836 +	TInt iTotalAttachments;
  92.837 +	TPckgBuf<TMsvId> iDataMember;
  92.838 +	HBufC* iBodyHeaderFormatString;
  92.839 +	HBufC* iBodyHeaderDateTimeFormatString;
  92.840 +	HBufC* iBodyHeaderToString;
  92.841 +	HBufC* iBodyHeaderCcString;
  92.842 +	HBufC* iBodyHeader;
  92.843 +	HBufC* iUserEmailAddress;
  92.844 +	TInt iRichTextSize;
  92.845 +	TInt iVCardAndHtmlSize;
  92.846 +	TBool iOrigMessageHtml;
  92.847 +	TBool iHtmlNoTextAlt;
  92.848 +	TInt iEmbeddedMessagesToProcess;
  92.849 +	TImMessageField iMessageField;
  92.850 +
  92.851 +	// for MIME messages:
  92.852 +	TBool iCreateHtmlMessage;
  92.853 +	TBool iMultipartMixedFolderCreated;
  92.854 +	TBool iMultipartAlternativeFolderCreated;
  92.855 +	TMsvId iTextId;
  92.856 +	TMsvId iHtmlId;
  92.857 +	TMsvId iVcardId;
  92.858 +
  92.859 +	// Used when converting rich text to html
  92.860 +	CImHtmlConverter* iHtmlConverter;
  92.861 +	TBool iFinishedConvertingHTML;
  92.862 +
  92.863 +	// Relating to adding Signature and/or Vcard to an email
  92.864 +	TBool iNeedToAddVCardAttachment;
  92.865 +	HBufC* iDefaultVCardNameFormatString;
  92.866 +	TStreamId iVcardStoreId;
  92.867 +	CStreamStore* iVcardStore;
  92.868 +	CRichText* iSignatureText;
  92.869 +	TFileName iFileName;
  92.870 +	TImAttachmentFile iAttachmentFile;
  92.871 +
  92.872 +	// PCMail
  92.873 +	TMsvId iPCMailServiceId;
  92.874 +	RPointerArray<CMsvAttachment>	iAttachmentInfoList;
  92.875 +	// set this anytime during the object life cycle attachment manager was used
  92.876 +	TBool iAttachmentMgrUsed;
  92.877 +	CMsvStore* iStore;
  92.878 +	RFile iFile;
  92.879 +
  92.880 +	TImBodyHeaderFormat iBodyHeaderFormat;
  92.881 +	CImHeader* iOriginalHeader;
  92.882 +	/** Indicates if the body text entry is plain text */
  92.883 +	TBool  iUsePlainTextStorage;
  92.884 +	// The error value returned when CRichText is populated with message body text.
  92.885 +	TInt iRestoreErr;
  92.886 +	};
  92.887 +
  92.888 +
  92.889 +class CImHtmlConverter : public CBase
  92.890 +/**
  92.891 +@internalComponent
  92.892 +@released
  92.893 +*/
  92.894 +	{
  92.895 +public:
  92.896 +	static CImHtmlConverter* CImHtmlConverter::NewL(CMsvEntry& aMsvEntry, 
  92.897 +								   CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
  92.898 +	~CImHtmlConverter();
  92.899 +	void PrepareToStoreHTMLEntryTextL(TMsvId& aHtmlId, const TMsvId aTextId);
  92.900 +	void ResetStoreL();
  92.901 +	void ResetStoreWithoutCommit();
  92.902 +	TBool StoreHTMLEntryTextAL(TRequestStatus& aStatus);
  92.903 +	CMsvOperation* ChangeHTMLTextInEnrtyL(TRequestStatus& aStatus);
  92.904 +	
  92.905 +	void ReadDefaultAttachmentNameL( RResourceFile& resourceFile);
  92.906 +	TInt Size() const;
  92.907 +
  92.908 +private:
  92.909 +	CImHtmlConverter(CMsvEntry&	aMsvEntry, CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
  92.910 +	TFileName HtmlFilename(CMsvEntry& aEntry, TPtrC aFileName);
  92.911 +	TPtrC GetDefaultAttachmentName();
  92.912 +	void ConstructL();
  92.913 +
  92.914 +private:
  92.915 +	CMsvEntry&			iMsvEntry;
  92.916 +	CParaFormatLayer&	iParaLayer;
  92.917 +	CCharFormatLayer&	iCharLayer;
  92.918 +
  92.919 +	CConverterBase*		iToHTMLConverter;
  92.920 +	CCnaConverterList*	iConverterList;
  92.921 +
  92.922 +	TMsvId				iTextId;
  92.923 +	TMsvId				iHtmlId;
  92.924 +	TInt				iSize;
  92.925 +	HBufC*				iDefaultAttachmentName;
  92.926 +	CRichText*			iRichText;
  92.927 +	RDesReadStream 		iSourceStream;
  92.928 +	RFileWriteStream	iTargetStream;
  92.929 +	CMsvStore*			iStore;
  92.930 +	RFile 				iFile;
  92.931 +	};
  92.932 +
  92.933 +class CImStoreResolver : public CBase, public MRichTextStoreResolver
  92.934 +/**
  92.935 +@internalComponent
  92.936 +@released
  92.937 +*/
  92.938 +	{
  92.939 +public:
  92.940 +	CImStoreResolver(CStreamStore* aStore);
  92.941 +	~CImStoreResolver();
  92.942 +	//
  92.943 +private:
  92.944 +	const CStreamStore& StreamStoreL(TInt aPos)const;
  92.945 +	//
  92.946 +private:
  92.947 +	CStreamStore* iStore;
  92.948 +	};
  92.949 +
  92.950 +
  92.951 +
  92.952 +
  92.953 +#endif // __MIUTMSG_H__
    93.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.2 +++ b/epoc32/include/app/miutpars.h	Wed Mar 31 12:27:01 2010 +0100
    93.3 @@ -0,0 +1,98 @@
    93.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    93.5 +// All rights reserved.
    93.6 +// This component and the accompanying materials are made available
    93.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    93.8 +// which accompanies this distribution, and is available
    93.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   93.10 +//
   93.11 +// Initial Contributors:
   93.12 +// Nokia Corporation - initial contribution.
   93.13 +//
   93.14 +// Contributors:
   93.15 +//
   93.16 +// Description:
   93.17 +//
   93.18 +
   93.19 +#if !defined (__MIUTPARS_H__)
   93.20 +#define __MIUTPARS_H__
   93.21 +
   93.22 +#include <e32base.h>
   93.23 +
   93.24 +// comment out line below to switch ON Internet message checking
   93.25 +//#define __NO_EMAIL_ADDRESS_CHECKING__
   93.26 +
   93.27 +class TImMessageField
   93.28 +/** Parses email message header fields for valid Internet email addresses, 
   93.29 +comments and aliases.
   93.30 +
   93.31 +A comment is a string surrounded by parentheses, as defined in RFC822, 3.1.4. 
   93.32 +
   93.33 +An alias is defined as any substring which appears to the left of a legal email address:  
   93.34 +for example, the string "this is an alias" in "this is an alias <an.email@address.com>".  
   93.35 +
   93.36 +For email addresses, the string being parsed: 
   93.37 +1) must contain an @ character, surrounded by valid address characters; 
   93.38 +2) may not contain more than one address or @ character; 
   93.39 +3) may contain aliases and comments.
   93.40 +
   93.41 +Note the following about the implementation of this class:
   93.42 +
   93.43 +1. Functions that test subject lines, ValidSubjectLine(),  and alias names, ValidAliasName(), were 
   93.44 +initially written to test that the strings did not contain characters outside a limited 
   93.45 +ASCII range. Unicode characters are now allowed, so these functions now always return true.
   93.46 +
   93.47 +2. Of the four overloads of GetValidInternetEmailAddressFromString(), only the first has a meaningful
   93.48 +implementation. 
   93.49 +
   93.50 +@publishedAll
   93.51 +@released
   93.52 +*/
   93.53 +	{
   93.54 +public:
   93.55 +	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress);
   93.56 +	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress, TInt& rFirstBadCharPos);	
   93.57 +	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
   93.58 +	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar, TInt& rFirstBadCharPos);
   93.59 +
   93.60 +	IMPORT_C TBool ValidInternetEmailAddressChar(const TChar& aChar);	
   93.61 +
   93.62 +	IMPORT_C TBool ValidSubjectLine(const TDesC16& aSubjectLine);
   93.63 +	IMPORT_C TBool ValidSubjectLine(const TDesC16& aSubjectLine, TInt& rFirstBadCharPos);
   93.64 +	
   93.65 +	IMPORT_C TBool ValidSubjectLineChar(const TChar& aChar);
   93.66 +	
   93.67 +	IMPORT_C TBool ValidAliasName(const TDesC16& aAliasName);
   93.68 +	IMPORT_C TBool ValidAliasName(const TDesC16& aAliasName, TInt& rFirstBadCharPos);
   93.69 +
   93.70 +	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress);
   93.71 +	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress, TInt& rError);
   93.72 +	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
   93.73 +	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar, TInt& rError);
   93.74 +
   93.75 +	IMPORT_C TPtrC16 GetValidAlias(const TDesC16& aAddress);
   93.76 +	IMPORT_C TPtrC16 GetValidAlias(const TDesC16& aAddress, TInt& rError);
   93.77 +
   93.78 +	IMPORT_C TPtrC16 GetValidComment(const TDesC16& aAddress);
   93.79 +	IMPORT_C TPtrC16 GetValidComment(const TDesC16& aAddress, TInt& rError);
   93.80 +	TBool TruncateAddressString(const TDesC16& aDesc, TInt aLimit, TInt& aLastChar);
   93.81 +private:
   93.82 +	TBool isValidEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
   93.83 +	TBool isLegalEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
   93.84 +	TBool isSurroundedByRoundBrackets(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
   93.85 +	TBool isSurroundedByAngledBrackets(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar, TInt aAtPos);
   93.86 +	TBool isEnclosedSubString(const TDesC16& anAddress, const TChar& aLeftBracket, const TChar& aRightBracket,TInt& aLeftPos, TInt& aRightPos);
   93.87 +    TBool isValidString(const TDesC16& anAddress, TInt& aFirstBadCharPos);
   93.88 +	TBool isValidChar(const TChar& aChar);
   93.89 +    TBool isValidEmailString(const TDesC16& anAddress, TInt& aFirstBadCharPos);
   93.90 +	TBool isValidEmailChar(const TChar& aChar);
   93.91 +	TBool LocateSubString(const TDesC16& anAddress, const TInt atPos, TInt& rFirstChar, TInt& rLastChar);	
   93.92 +	TBool hasAngledBrackets(const TDesC16& anAddress);
   93.93 +	TBool isValid_ISO88591String(const TDesC16& aString,TInt& aPos);
   93.94 +	TBool isValidRoutedEmailAddress(const TDesC16& anAddress);
   93.95 +	TBool isValidDomainNameChar(const TChar& aChar);
   93.96 +	TBool isValidMailboxChar(const TChar& aChar);
   93.97 +	TBool isDotChar(const TChar& aChar);
   93.98 +	};
   93.99 +
  93.100 +
  93.101 +#endif // !defined __MIUTPARS_H__
    94.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.2 +++ b/epoc32/include/app/miutset.h	Wed Mar 31 12:27:01 2010 +0100
    94.3 @@ -0,0 +1,92 @@
    94.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    94.5 +// All rights reserved.
    94.6 +// This component and the accompanying materials are made available
    94.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    94.8 +// which accompanies this distribution, and is available
    94.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   94.10 +//
   94.11 +// Initial Contributors:
   94.12 +// Nokia Corporation - initial contribution.
   94.13 +//
   94.14 +// Contributors:
   94.15 +//
   94.16 +// Description:
   94.17 +//
   94.18 +
   94.19 +#if !defined (__MIUTSET_H__)
   94.20 +#define __MIUTSET_H__
   94.21 +
   94.22 + 
   94.23 +
   94.24 +#include <msvuids.h>
   94.25 +#include <miuthdr.h>
   94.26 +
   94.27 +const TInt KMaxSettingStringLength = 1024;
   94.28 +
   94.29 +/** UID of an SMTP message type. */
   94.30 +const TUid KUidMsgTypeSMTP			= {0x10001028};	// 268439592
   94.31 +/** UID of a POP3 message type. */
   94.32 +const TUid KUidMsgTypePOP3			= {0x10001029};	// 268439593
   94.33 +/** UID of an IMAP4 message type. */
   94.34 +const TUid KUidMsgTypeIMAP4			= {0x1000102A};	// 268439594
   94.35 +
   94.36 +/**
   94.37 +@deprecated
   94.38 +*/
   94.39 +const TUid KUidMsgTypeSMTPServer	= {0x10003923};	// 268450083
   94.40 +
   94.41 +
   94.42 +class CImBaseEmailSettings : public CBase
   94.43 +/**
   94.44 +Parent class for CImPop3Settings, CImImap4Settings, CImSmtpSettings.
   94.45 +
   94.46 +This class should not be instantiated directly. It implements common email
   94.47 +settings such as the hostname or IP address of the server, port number,
   94.48 +and whether or not to use SSL.
   94.49 +
   94.50 +@see CImPop3Settings
   94.51 +@see CImImap4Settings
   94.52 +@see CImSmtpSettings
   94.53 +
   94.54 +@publishedAll
   94.55 +@released
   94.56 +*/
   94.57 +	{
   94.58 +public:
   94.59 +	IMPORT_C CImBaseEmailSettings();
   94.60 +	IMPORT_C virtual ~CImBaseEmailSettings();
   94.61 +	IMPORT_C void Reset();
   94.62 +	IMPORT_C const TPtrC ServerAddress() const;
   94.63 +	IMPORT_C void SetServerAddressL(const TDesC& aServerAddress);
   94.64 +	IMPORT_C TUint Port() const;
   94.65 +	IMPORT_C void SetPort(const TUint aPortNumber);
   94.66 +	IMPORT_C TBool SecureSockets() const;
   94.67 +	IMPORT_C void SetSecureSockets(TBool aFlag);
   94.68 +	IMPORT_C TBool SSLWrapper() const;
   94.69 +	IMPORT_C void SetSSLWrapper(TBool aFlag);
   94.70 +	IMPORT_C CImBaseEmailSettings& CopyL(const CImBaseEmailSettings& aCImBaseEmailSettings);
   94.71 +	IMPORT_C TBool operator==(const CImBaseEmailSettings& aCImBaseEmailSettings) const;
   94.72 +	IMPORT_C void SetBearerMobility(TBool aFlag);
   94.73 +	IMPORT_C TBool BearerMobility() const;
   94.74 +
   94.75 +	TUint32 SettingsFlags() const;
   94.76 +	void SetSettingsFlags(TUint32 aSetFlags);
   94.77 +
   94.78 +protected:
   94.79 +	enum TImBaseEmailSettings
   94.80 +		{
   94.81 +		EBaseEmailSettingsClearFlag			= 0x00000000,
   94.82 +		EBaseEmailSettingsSecureSockets		= 0x00000001,
   94.83 +		EBaseEmailSettingsSSLWrappedSockets	= EBaseEmailSettingsSecureSockets << 1,  //0x00000002,
   94.84 +		EBaseEmailSettingsLastUsedFlag		= EBaseEmailSettingsSSLWrappedSockets,  //0x00000002
   94.85 +		EBaseEmailSettingsBearerMobFlag		= 0x80000000
   94.86 +		};
   94.87 +	TUint32 iPortNumber;	// the port the TCP/IP connection be made on
   94.88 +
   94.89 +	TUint32 iFlags;			// space for flags info (now and for future)
   94.90 +
   94.91 +private:
   94.92 +	HBufC* iServerAddress;	// remote server's IP address
   94.93 +	};
   94.94 +
   94.95 +#endif
    95.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.2 +++ b/epoc32/include/app/mmmssettingsobserver.h	Wed Mar 31 12:27:01 2010 +0100
    95.3 @@ -0,0 +1,56 @@
    95.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
    95.5 +// All rights reserved.
    95.6 +// This component and the accompanying materials are made available
    95.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    95.8 +// which accompanies this distribution, and is available
    95.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   95.10 +//
   95.11 +// Initial Contributors:
   95.12 +// Nokia Corporation - initial contribution.
   95.13 +//
   95.14 +// Contributors:
   95.15 +//
   95.16 +// Description:
   95.17 +//
   95.18 +
   95.19 +#ifndef __MMMSSETTINGSOBSERVER_H__
   95.20 +#define __MMMSSETTINGSOBSERVER_H__
   95.21 +
   95.22 +
   95.23 +#include <e32base.h>
   95.24 +
   95.25 +
   95.26 +
   95.27 +/** 
   95.28 +Provides the interface for notification of changes that occur in the Central Repository. 
   95.29 +
   95.30 +@see CMmsAccounts::AddObserverL()
   95.31 +@see CMmsAccounts::RemoveObserver() 
   95.32 +
   95.33 +@publishedAll
   95.34 +@released
   95.35 +*/
   95.36 +class MMmsSettingsObserver
   95.37 + 	{
   95.38 +public:
   95.39 +	/** 
   95.40 +	Settings event.
   95.41 +	*/
   95.42 +    enum TMmsSettingsEvent 
   95.43 +  		{ 
   95.44 + 		/** 
   95.45 +		Settings have been updated.
   95.46 +		*/ 		
   95.47 +       	ESettingsUpdated     
   95.48 +       	};
   95.49 +public: 
   95.50 +	/** 
   95.51 +	Indicates that a settings event has occurred. 
   95.52 +	
   95.53 +	@param	aEvent
   95.54 +	The Settings Event
   95.55 +	*/
   95.56 +  	virtual void HandleNotify(TMmsSettingsEvent aEvent) = 0;
   95.57 +   	};
   95.58 +          
   95.59 +#endif // __MMMSSETTINGSOBSERVER_H__
    96.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.2 +++ b/epoc32/include/app/obexheaderlist.h	Wed Mar 31 12:27:01 2010 +0100
    96.3 @@ -0,0 +1,155 @@
    96.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
    96.5 +// All rights reserved.
    96.6 +// This component and the accompanying materials are made available
    96.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    96.8 +// which accompanies this distribution, and is available
    96.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   96.10 +//
   96.11 +// Initial Contributors:
   96.12 +// Nokia Corporation - initial contribution.
   96.13 +//
   96.14 +// Contributors:
   96.15 +//
   96.16 +// Description:
   96.17 +//
   96.18 +
   96.19 +#ifndef __OBEXHEADERLIST_H__
   96.20 +#define __OBEXHEADERLIST_H__
   96.21 +
   96.22 +
   96.23 +
   96.24 +#include <e32std.h> 
   96.25 +#include <e32base.h>    //CBase 
   96.26 +
   96.27 +//forward declaration
   96.28 +class RReadStream;
   96.29 +class RWriteStream;
   96.30 +class CObexHeader;
   96.31 +class CObexBaseObject;
   96.32 +class CObexServerSendOperation;
   96.33 +
   96.34 +
   96.35 +class CMsvAttachment;
   96.36 +
   96.37 +const TUid KUidObexHeaders = {0x10204282};
   96.38 +
   96.39 +class CObexHeaderList : public CBase
   96.40 +/**
   96.41 +Encapsulates and owns a list of CObexHeader objects.
   96.42 +Public users of this class can add CObexHeader objects 
   96.43 +                        
   96.44 +@publishedAll
   96.45 +@released
   96.46 +*/
   96.47 +	{
   96.48 +public:
   96.49 +
   96.50 +	/*
   96.51 +    It provides functionalities for its friend classes to internalize and 
   96.52 +    externalize itself from a CMsvStore stream, and add all its contained 
   96.53 +    CObexHeader objects to a CObexBaseObject, as well as two general list
   96.54 +    functions to return the number of objects it contained and a contained
   96.55 +    object at a specified index into the list.
   96.56 +    */  
   96.57 +	friend class CObexServerSendOperation;		// requires the use of 'AddHeadersToBaseObjectL'
   96.58 +
   96.59 +	/**
   96.60 +	 * Factory function to return a new CObexHeaderList.
   96.61 +	 @return New CObexHeaderList object 
   96.62 +	 */
   96.63 +	IMPORT_C static CObexHeaderList* NewL();
   96.64 +	
   96.65 +	
   96.66 +	/**
   96.67 +	 * Factory function to return a new CObexHeaderList and leave it on the 
   96.68 +	 * cleanup stack.
   96.69 +	 @return New CObexHeaderList object 
   96.70 +	 */
   96.71 +	IMPORT_C static CObexHeaderList* NewLC();
   96.72 +
   96.73 +
   96.74 +	/**
   96.75 +	 * Destructor which frees all allocated memory with the list.
   96.76 +	 */
   96.77 +    IMPORT_C ~CObexHeaderList();
   96.78 +    
   96.79 +    /**
   96.80 +	 * Add a CObexHeader object to the list. The CObexHeader object added 
   96.81 +	 * should have its attribute, header ID and header value set before
   96.82 +	 * it is added to the list. CObexHeaderlist will not change these
   96.83 +	 * values of its contained CObexHeader objects
   96.84 +	 * @param  aHeader Pointer to a constant CObexHeader object
   96.85 +	 *  
   96.86 +	 * @return KErrNone, if the operation is successful, otherwise
   96.87 +	 *         one of the system wide error codes  
   96.88 +	 */
   96.89 +	IMPORT_C TInt AddHeader(const CObexHeader*  aHeader);
   96.90 +	
   96.91 +	IMPORT_C void ExportToAttachmentL(CMsvAttachment& aAttachment) const;
   96.92 +	
   96.93 +	IMPORT_C void ImportFromAttachmentL(CMsvAttachment& aAttachment);
   96.94 +
   96.95 +	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const;
   96.96 +	
   96.97 +	IMPORT_C void InternalizeL(RReadStream& aReadStream);
   96.98 +
   96.99 +protected:
  96.100 +
  96.101 +
  96.102 +
  96.103 +    /**
  96.104 +	 * Add all the CObexHeader objects contained in a list to a 
  96.105 +	 * CObexBaseObject.
  96.106 +	 *
  96.107 +	 *
  96.108 +	 * @param aObexBaseObj CObexBaseObject to add the objects to
  96.109 +	 *  
  96.110 +	 * @leave Error System wide error code 
  96.111 +	 * 
  96.112 +	 */
  96.113 +    IMPORT_C void AddHeadersToBaseObjectL(CObexBaseObject& aObexBaseObj);
  96.114 +
  96.115 +	
  96.116 +	//General list processing functions
  96.117 +
  96.118 +    /**
  96.119 +	 * Return the number of CObexHeader object pointers contained in the list.
  96.120 +	 *
  96.121 +	 * 
  96.122 +	 * @return The number of CObexHeader object pointers in the list
  96.123 +	 */
  96.124 +	IMPORT_C TInt Count() const;
  96.125 +
  96.126 +	/**
  96.127 +	 * Get a non constant reference to the CObexHeader object pointer at 
  96.128 +	 * position aPos into the list.
  96.129 +	 *
  96.130 +	 *
  96.131 +	 * @param aPos A list index specifying the CObexHeader object pointer to 
  96.132 +	 *        be returned
  96.133 +	 *  
  96.134 +	 * @leave KErrArgument aPos is out of range
  96.135 +	 * @leave KErrNotFound The list is empty
  96.136 +	 *        
  96.137 +	 * @return A non constant reference to the CObexHeader object 
  96.138 +	 *         pointer
  96.139 +	 */
  96.140 +	IMPORT_C CObexHeader*& ObexHeaderL(TInt aPos); 
  96.141 +
  96.142 +private:
  96.143 +	/**
  96.144 +	 * Leaving constructor function used in 2 phase construction in NewLC()
  96.145 +	 */
  96.146 +	void ConstructL();
  96.147 +
  96.148 +    /**
  96.149 +	 *  Constructor function used in 2 phase construction in NewLC()
  96.150 +	 */
  96.151 +	CObexHeaderList();
  96.152 +
  96.153 +private:
  96.154 +    ///<pointer to the CObexHeader object pointer array
  96.155 +	RPointerArray<CObexHeader>*	iObexHeaders;
  96.156 +	};
  96.157 +	
  96.158 +#endif	// __OBEXHEADERLIST_H__
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/epoc32/include/app/phbksync.h	Wed Mar 31 12:27:01 2010 +0100
    97.3 @@ -0,0 +1,358 @@
    97.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
    97.5 +// All rights reserved.
    97.6 +// This component and the accompanying materials are made available
    97.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    97.8 +// which accompanies this distribution, and is available
    97.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   97.10 +//
   97.11 +// Initial Contributors:
   97.12 +// Nokia Corporation - initial contribution.
   97.13 +//
   97.14 +// Contributors:
   97.15 +//
   97.16 +// Description:
   97.17 +// Phonebook Synchroniser API header file.
   97.18 +// Describes the Phonebook Synchroniser API for use by clients of the
   97.19 +// Phonebook Synchroniser Server.
   97.20 +// 
   97.21 +//
   97.22 +
   97.23 +
   97.24 +
   97.25 +/**
   97.26 + @file
   97.27 + @publishedAll
   97.28 + @released
   97.29 +*/
   97.30 +
   97.31 +#ifndef __PHBKSYNC_H__
   97.32 +#define __PHBKSYNC_H__
   97.33 +
   97.34 +#include <e32std.h>
   97.35 +#include <cntdef.h>
   97.36 +#include <cntdb.h>
   97.37 +#include <cntitem.h>
   97.38 +#include <cntfldst.h>
   97.39 +
   97.40 +/**
   97.41 + *  Index not supplied.
   97.42 + */
   97.43 +const TInt KSyncIndexNotSupplied=-1;
   97.44 +
   97.45 +
   97.46 +//
   97.47 +// TUid Phonebook Types used by Contacts Model 
   97.48 +//
   97.49 +#define KUidIccPhonebookNotSpecifiedValue    0x101F7874
   97.50 +#define KUidIccGlobalAdnPhonebookValue       0x101F7875
   97.51 +#define KUidIccGlobalSdnPhonebookValue       0x101F7876
   97.52 +#define KUidIccGlobalLndPhonebookValue       0x101F7877
   97.53 +#define KUidUsimAppAdnPhonebookValue         0x101F7878
   97.54 +#define KUidIccGlobalFdnPhonebookValue       0x101FB2AF
   97.55 +
   97.56 +const TUid  KUidIccPhonebookNotSpecified = {KUidIccPhonebookNotSpecifiedValue};
   97.57 +const TUid  KUidIccGlobalAdnPhonebook    = {KUidIccGlobalAdnPhonebookValue};
   97.58 +const TUid  KUidIccGlobalSdnPhonebook    = {KUidIccGlobalSdnPhonebookValue};
   97.59 +const TUid  KUidIccGlobalLndPhonebook    = {KUidIccGlobalLndPhonebookValue};
   97.60 +const TUid  KUidUsimAppAdnPhonebook      = {KUidUsimAppAdnPhonebookValue};
   97.61 +const TUid  KUidIccGlobalFdnPhonebook    = {KUidIccGlobalFdnPhonebookValue};
   97.62 +
   97.63 +
   97.64 +/**
   97.65 + *  Types of cancel requests for the asynchronous server requests.
   97.66 + *
   97.67 + *  @see RPhoneBookSession::CancelRequest
   97.68 + */
   97.69 +enum TPhonebookSyncRequestCancel
   97.70 +	{
   97.71 +	/** Cancel the asynchronous RPhoneBookSession::DoSynchronisation() request */
   97.72 +	EDoSynchronisationCancelClient,
   97.73 +
   97.74 +	/** Cancel the asynchronous RPhoneBookSession::DeleteContact() request */
   97.75 +	ESyncDeleteCntFromICCCancelClient,
   97.76 +
   97.77 +	/** Cancel the asynchronous RPhoneBookSession::WriteContact() request */
   97.78 +	ESyncWriteCntToICCCancelClient,
   97.79 +
   97.80 +	/** Cancel the asynchronous RPhoneBookSession::NotifyPhBkCacheStateChange() request */
   97.81 +	ESyncNotifyCacheStateChangeCancelClient
   97.82 +	};
   97.83 +
   97.84 +
   97.85 +/**
   97.86 + *  Class to hold the contact field formats.
   97.87 + *
   97.88 + *  @publishedAll
   97.89 + *  @released
   97.90 + */
   97.91 +class TContactFieldFormat
   97.92 +	{
   97.93 +public:
   97.94 +	TContactFieldFormat(TInt aLength, TInt aCount, TBool aDisplayed);
   97.95 +
   97.96 +public:
   97.97 +	/** The maximum length (i.e. number of characters) of the field. If the field is 
   97.98 +	not a string type this attribute should be ignored. */
   97.99 +	TInt  iLength;
  97.100 +
  97.101 +	/** The maximum number of instances of this field within an item. This is set to 
  97.102 +	-1 if this is unlimited. */
  97.103 +	TInt  iCount;
  97.104 +
  97.105 +	/** Indicates whether this is displayed or hidden. */
  97.106 +	TBool iDisplayed;
  97.107 +	};
  97.108 +
  97.109 +
  97.110 +//
  97.111 +// Forward declare the internal data storage class.
  97.112 +//
  97.113 +class CSyncClientData;
  97.114 +
  97.115 +/**
  97.116 + *  Provides the CPhoneBookSyncPlugin client access to a session with the
  97.117 + *  Phonebook Synchronizer Server. 
  97.118 + *
  97.119 + *  A handle to an RPhoneBookSession enables the plug-in class to perform
  97.120 + *  IPC communications with the server.
  97.121 + *
  97.122 + *  @publishedAll
  97.123 + *  @released
  97.124 + */
  97.125 +class RPhoneBookSession : public RSessionBase
  97.126 +	{
  97.127 +public:
  97.128 +	/**
  97.129 +	 *  Structure holding the template ID and buffer size. The client has
  97.130 +	 *  no need to use this structure.
  97.131 +	 *
  97.132 +	 *  @deprecated
  97.133 +	 */
  97.134 +	struct TTemplateAndBufferSize
  97.135 +		{
  97.136 +		TContactItemId  templateId;
  97.137 +		TInt  bufferSize;
  97.138 +		};
  97.139 +
  97.140 +	/**
  97.141 +	 *  The synchronisation mode for phonebooks when the server starts.
  97.142 +	 */
  97.143 +	enum TPhonebookSyncMode
  97.144 +		{
  97.145 +		/** Automatic synchronisation will be performed. */
  97.146 +		EAutoCurrentIcc,
  97.147 +
  97.148 +		/** Automatic synchronisation will only be performed if the current ICC is
  97.149 +		    the same as the last ICC to be synchonised. */
  97.150 +		EAutoSameIcc,
  97.151 +
  97.152 +		/** Manual synchronisation will be performed when requested. */
  97.153 +		EManual
  97.154 +		};
  97.155 +
  97.156 +	/**
  97.157 +	 *  The phonebook cache state.
  97.158 +	 */
  97.159 +	enum TSyncState
  97.160 +		{
  97.161 +		/** The server has not yet populated the Contacts Database. */
  97.162 +		EUnsynchronised,
  97.163 +
  97.164 +		/** The server has finished populating the Contacts Database. */
  97.165 +		ECacheValid,
  97.166 +
  97.167 +		/** The server encountered an error populating the Contacts Database. */
  97.168 +		EErrorDuringSync
  97.169 +		};
  97.170 +
  97.171 +	/**
  97.172 +	 *  Specifies format of phonebook fields within an ICC phonebook entry.
  97.173 +	 *
  97.174 +	 *  @publishedAll
  97.175 +	 *  @released
  97.176 +	 */
  97.177 +	class TContactFieldsV1  
  97.178 +		{
  97.179 +	public:
  97.180 +		/**
  97.181 +		 *  Enumeration to describe the version ID of the Phonebook Synchronizer.
  97.182 +		 */
  97.183 +		enum TContactFieldsExtensionId
  97.184 +			{
  97.185 +			/** Phonebook Synchronizer version 1 */
  97.186 +			KPhBkSyncTContactFieldsV1,
  97.187 +
  97.188 +			/** Phonebook Synchronizer version 2 */
  97.189 +			KPhBkSyncTContactFieldsV2,
  97.190 +
  97.191 +			/** Phonebook Synchronizer version 3 */
  97.192 +			KPhBkSyncTContactFieldsV3
  97.193 +			};
  97.194 +
  97.195 +		/**
  97.196 +		 *  Returns the Phonebook Synchronizer API extension number of the class.
  97.197 +		 *
  97.198 +		 *  @return  The version ID from TContactFieldsExtensionId.
  97.199 +		 */
  97.200 +		IMPORT_C TInt ExtensionId() const;
  97.201 +
  97.202 +		/**
  97.203 +		 *  Standard constructor.
  97.204 +		 */
  97.205 +		IMPORT_C TContactFieldsV1();
  97.206 +
  97.207 +	public:
  97.208 +		/** The format of the name field within an ICC phonebook entry. */
  97.209 +		TContactFieldFormat  iNameField;
  97.210 +
  97.211 +		/** The format of the number field within an ICC phonebook entry. */
  97.212 +		TContactFieldFormat  iNumberField;
  97.213 +
  97.214 +		/** The format of the ICC slot number field within an ICC phonebook entry. */
  97.215 +		TContactFieldFormat  iIccSlotField;
  97.216 +
  97.217 +	protected:
  97.218 +		TInt  iExtensionId;
  97.219 +		};
  97.220 +
  97.221 +	/**
  97.222 +	 *  A packaged instance of TContactFieldsV1.
  97.223 +	 */
  97.224 +	typedef TPckg<TContactFieldsV1>  TContactFieldsV1Pckg;
  97.225 +
  97.226 +	/**
  97.227 +	 *  Specifies format of phonebook fields within an UICC phonebook entry
  97.228 +	 *
  97.229 +	 *  @publishedAll
  97.230 +	 *  @released
  97.231 +	 */
  97.232 +	class TContactFieldsV2 : public TContactFieldsV1 
  97.233 +		{
  97.234 +	public:
  97.235 +		IMPORT_C TContactFieldsV2();
  97.236 +
  97.237 +	public:
  97.238 +		/** The format of any additional number fields within an ICC phonebook entry. */
  97.239 +		TContactFieldFormat  iAdditionalNumString;
  97.240 +
  97.241 +		/** The format of group field within an ICC phonebook entry. */
  97.242 +		TContactFieldFormat  iGroupField;
  97.243 +
  97.244 +		/** The format of email field within an ICC phonebook entry. */
  97.245 +		TContactFieldFormat  iEmailField;
  97.246 +
  97.247 +		/** The UID of the phonebook. */
  97.248 +		TUid  iPhonebook;
  97.249 +		};
  97.250 +
  97.251 +	/**
  97.252 +	 *  A packaged instance of TContactFieldsV2.
  97.253 +	 */
  97.254 +	typedef TPckg<TContactFieldsV2>  TContactFieldsV2Pckg;
  97.255 +
  97.256 +
  97.257 +	/**
  97.258 +	 *  Specifies additional format information for phonebook fields within a
  97.259 +	 *  UICC phonebook entry.
  97.260 +	 *
  97.261 +	 *  @publishedAll
  97.262 +	 *  @released
  97.263 +	 */
  97.264 +	class TContactFieldsV3 : public TContactFieldsV2 
  97.265 +		{
  97.266 +	public:
  97.267 +		IMPORT_C TContactFieldsV3();
  97.268 +
  97.269 +	public:
  97.270 +		/** The format of an addition number's text field within an ICC phonebook entry. */
  97.271 +		TContactFieldFormat  iAdditionalNumAlphaString;
  97.272 +
  97.273 +		/** The format of the second name field within an ICC phonebook entry. */
  97.274 +		TContactFieldFormat  iSecondNameField;
  97.275 +		};
  97.276 +
  97.277 +	/**
  97.278 +	 *  A packaged instance of TContactFieldsV3.
  97.279 +	 */
  97.280 +	typedef TPckg<TContactFieldsV3>  TContactFieldsV3Pckg;
  97.281 +
  97.282 +
  97.283 +	/**
  97.284 +	 *  The phonebook ID type requested from a phonebook. There are two types of IDs
  97.285 +	 *  (group IDs and template IDs).
  97.286 +	 *
  97.287 +	 *  @see RPhoneBookSession::GetPhoneBookId()
  97.288 +	 */
  97.289 +	enum TSyncIdType
  97.290 +		{
  97.291 +		/** Used to allocate a new entry to the right group in the Contacts Database. */
  97.292 +		ESyncGroupId,
  97.293 +
  97.294 +		/** Used to define new ICC entries in the Contacts Database. */
  97.295 +		ESyncTemplateId
  97.296 +		};
  97.297 +
  97.298 +public:
  97.299 +	IMPORT_C RPhoneBookSession();
  97.300 +	IMPORT_C TInt Connect();
  97.301 +	IMPORT_C void Close();
  97.302 +	IMPORT_C TVersion Version() const;
  97.303 +	IMPORT_C TInt ShutdownServer (TBool aUnconditionally);
  97.304 +
  97.305 +	//
  97.306 +	// Single (ADN) phonebook support and functions not requiring a phonebook UID.
  97.307 +	//
  97.308 +	IMPORT_C void DoSynchronisation(TRequestStatus& aReqStatus);
  97.309 +	IMPORT_C TInt ValidateContact(MContactSynchroniser::TValidateOperation aOperation, TContactItemId aId);
  97.310 +	IMPORT_C void WriteContact(TRequestStatus& aReqStatus, CContactICCEntry& aContactItem, 
  97.311 +							   TInt& aSlotNumber);
  97.312 +	IMPORT_C void DeleteContact(TRequestStatus& aReqStatus, TContactItemId aId);
  97.313 +	IMPORT_C TInt GetPhoneBookId(TContactItemId& aId, TSyncIdType aIdType);
  97.314 +	IMPORT_C TInt UpdateLookuptable(TContactItemId aNewUid, TInt aIccSlot);
  97.315 +	IMPORT_C TInt GetContactFormat(TDes8& aContactFields);
  97.316 +	IMPORT_C TInt GetSyncMode(TPhonebookSyncMode& aSyncMode);
  97.317 +	IMPORT_C TInt SetSyncMode(TPhonebookSyncMode aSyncMode);
  97.318 +	IMPORT_C TInt GetPhoneBookCacheState(TSyncState& aState);
  97.319 +	IMPORT_C void CancelRequest(TPhonebookSyncRequestCancel aReqToCancel);
  97.320 +	IMPORT_C TInt GetLastSyncError(TInt& aError);
  97.321 +	IMPORT_C void NotifyPhBkCacheStateChange(TRequestStatus& aStatus);
  97.322 +	IMPORT_C TInt GetNumSlots(TInt& aNumSlots) const;
  97.323 +	IMPORT_C void GetFreeSlotsL(RArray<TInt>& aFreeSlots) const;
  97.324 +	IMPORT_C TInt GetSlotId(TInt aSlot, TContactItemId& aId) const;
  97.325 +
  97.326 +	//
  97.327 +	// Multiple phonebooks support. These should be used in preference to the above
  97.328 +	// ADN specific versions.
  97.329 +	//
  97.330 +	IMPORT_C void DoSynchronisation(TRequestStatus& aReqStatus, TUid aPhonebookUid);
  97.331 +	IMPORT_C void WriteContact(TRequestStatus& aReqStatus, CContactICCEntry& aContactItem, 
  97.332 +							   TInt& aSlotNumber, TUid& aPhonebookUid);
  97.333 +	IMPORT_C TInt GetPhoneBookId(TContactItemId& aId, TSyncIdType aIdType, TUid aPhonebookUid);
  97.334 +	IMPORT_C TInt UpdateLookuptable(TContactItemId aNewUid, TInt aIccSlot, TUid aPhonebookUid);
  97.335 +	IMPORT_C TInt GetSyncMode(TPhonebookSyncMode& aSyncMode, TUid aPhonebookId);
  97.336 +	IMPORT_C TInt SetSyncMode(TPhonebookSyncMode aSyncMode, TUid aPhonebookId);
  97.337 +	IMPORT_C TInt GetPhoneBookCacheState(TSyncState& aState, TUid aPhonebookId);
  97.338 +	IMPORT_C void CancelRequest(TPhonebookSyncRequestCancel aReqToCancel, TUid aPhonebookId);
  97.339 +	IMPORT_C TInt GetLastSyncError(TInt& aError, TUid aPhonebookId);
  97.340 +	IMPORT_C void NotifyPhBkCacheStateChange(TRequestStatus& aStatus, TUid aPhonebookId);
  97.341 +	IMPORT_C TInt GetNumSlots(TInt& aNumSlots, TUid aPhonebookId) const;
  97.342 +	IMPORT_C void GetFreeSlotsL(RArray<TInt>& aFreeSlots, TUid aPhonebookId) const;
  97.343 +	IMPORT_C TInt GetSlotId(TInt aSlot, TContactItemId& aId, TUid aPhonebookId) const;
  97.344 +
  97.345 +	//
  97.346 +	// Memory checking functionality for Debug builds only.
  97.347 +	//
  97.348 +	IMPORT_C TInt __DbgMarkHeap();
  97.349 +	IMPORT_C TInt __DbgCheckHeap(TInt aCount);
  97.350 +	IMPORT_C TInt __DbgMarkEnd(TInt aCount);
  97.351 +	IMPORT_C TInt __DbgFailNext(TInt aCount);
  97.352 +
  97.353 +private:
  97.354 +	RPhoneBookSession(const RPhoneBookSession& aSession);
  97.355 +
  97.356 +private:
  97.357 +	/* Temporary data used by the session. */
  97.358 +	CSyncClientData*  iData;
  97.359 +	};
  97.360 +
  97.361 +#endif
    98.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.2 +++ b/epoc32/include/app/pop3cmds.h	Wed Mar 31 12:27:01 2010 +0100
    98.3 @@ -0,0 +1,113 @@
    98.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    98.5 +// All rights reserved.
    98.6 +// This component and the accompanying materials are made available
    98.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    98.8 +// which accompanies this distribution, and is available
    98.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   98.10 +//
   98.11 +// Initial Contributors:
   98.12 +// Nokia Corporation - initial contribution.
   98.13 +//
   98.14 +// Contributors:
   98.15 +//
   98.16 +// Description:
   98.17 +//
   98.18 +
   98.19 +#if !defined (__POP3CMDS_H__)
   98.20 +#define __POP3CMDS_H__
   98.21 +
   98.22 +#if !defined (__MSVSTD_HRH__)
   98.23 +#include <msvstd.hrh>
   98.24 +#endif
   98.25 +
   98.26 +/** POP3-specific commands that can be issued through CPop3ClientMtm::InvokeAsyncFunctionL(). 
   98.27 +@publishedAll
   98.28 +@released
   98.29 +*/
   98.30 +enum TPop3Cmds 
   98.31 +	{
   98.32 +	/** Unsupported. */
   98.33 +	KPOP3MTMIsConnected = KMtmFirstFreeMtmFunctionId,
   98.34 +	/** Attempt to connect to the current service. */
   98.35 +	KPOP3MTMConnect,
   98.36 +	/** Disconnect from the current service. */
   98.37 +	KPOP3MTMDisconnect,
   98.38 +	/** Unused. */
   98.39 +	KPOP3MTMCreateReceipt,
   98.40 +
   98.41 +	// need to pass in destination in aParameter
   98.42 +	/** Copy any new messages from the current service, assuming a new connection does 
   98.43 +	not need to be made. */
   98.44 +	KPOP3MTMCopyNewMailWhenAlreadyConnected,
   98.45 +	/** Copy any new messages from the current service, and do not disconnect afterwards. */
   98.46 +	KPOP3MTMConnectAndCopyNewMailAndStayOnline,
   98.47 +	/** Copy any new messages from the current service, and disconnect afterwards. */
   98.48 +	KPOP3MTMConnectAndCopyNewMailAndDisconnect,
   98.49 +	/** Move any new messages from the current service, assuming a new connection does 
   98.50 +	not need to be made. */
   98.51 +	KPOP3MTMMoveNewMailWhenAlreadyConnected,
   98.52 +	/** Move any new messages from the current service, and do not disconnect afterwards. */
   98.53 +	KPOP3MTMConnectAndMoveNewMailAndStayOnline,
   98.54 +	/** Connect to current service, move any new messages, and disconnect afterwards. */
   98.55 +	KPOP3MTMConnectAndMoveNewMailAndDisconnect,
   98.56 +
   98.57 +	// need to pass in destination in aParameter
   98.58 +	/** Copy the specified messages from the current service, assuming a new connection 
   98.59 +	does not need to be made. */
   98.60 +	KPOP3MTMCopyMailSelectionWhenAlreadyConnected,
   98.61 +	/** Connect to current service, copy the specified messages, and do not disconnect 
   98.62 +	afterwards. */
   98.63 +	KPOP3MTMConnectAndCopyMailSelectionAndStayOnline,
   98.64 +	/** Connect to current service, copy the specified messages, and disconnect afterwards. */
   98.65 +	KPOP3MTMConnectAndCopyMailSelectionAndDisconnect,
   98.66 +	/** Move the specified messages from the current service, assuming a new connection 
   98.67 +	does not need to be made. */
   98.68 +	KPOP3MTMMoveMailSelectionWhenAlreadyConnected,
   98.69 +	/** Connect to current service, move the specified messages, and do not disconnect 
   98.70 +	afterwards. */
   98.71 +	KPOP3MTMConnectAndMoveMailSelectionAndStayOnline,
   98.72 +	/** Connect to current service, move the specified messages, and disconnect afterwards. */
   98.73 +	KPOP3MTMConnectAndMoveMailSelectionAndDisconnect,
   98.74 +
   98.75 +	// need to pass in destination in aParameter
   98.76 +	/** Copy all messages from the current service, assuming a new connection does 
   98.77 +	not need to be made. */
   98.78 +	KPOP3MTMCopyAllMailWhenAlreadyConnected,
   98.79 +	/** Connect to current service, copy all messages, and do not disconnect afterwards. */
   98.80 +	KPOP3MTMConnectAndCopyAllMailAndStayOnline,
   98.81 +	/** Connect to current service, copy all messages, and disconnect afterwards. */
   98.82 +	KPOP3MTMConnectAndCopyAllMailAndDisconnect,
   98.83 +	/** Move all messages from the current service, assuming a new connection does 
   98.84 +	not need to be made. */
   98.85 +	KPOP3MTMMoveAllMailWhenAlreadyConnected,
   98.86 +	/** Connect to current service, move all messages, and do not disconnect afterwards. */
   98.87 +	KPOP3MTMConnectAndMoveAllMailAndStayOnline,
   98.88 +	/** Connect to current service, move all messages, and disconnect afterwards. */
   98.89 +	KPOP3MTMConnectAndMoveAllMailAndDisconnect,
   98.90 +
   98.91 +	/** Cancel all offline operations. */
   98.92 +	KPOP3MTMCancelOfflineOperations,
   98.93 +	/** Unused. */
   98.94 +	KPOP3MTMCancelSendOnNextConnection,
   98.95 +	/** Creates a new message. */
   98.96 +	KPOP3MTMCreateNewEmailMessage,
   98.97 +	/** Creates a new reply message. */
   98.98 +	KPOP3MTMCreateReplyEmailMessage,
   98.99 +	/** Creates a new forwarded message. */
  98.100 +	KPOP3MTMCreateForwardEmailMessage,
  98.101 +	/** Creates a new forwarded message as an attachment. */
  98.102 +	KPOP3MTMCreateForwardAsAttachmentEmailMessage,
  98.103 +	/** Creates a new message-receipt message. */
  98.104 +	KPOP3MTMCreateReceiptEmailMessage,
  98.105 +	/** Populates the selection of messages from the current service, assuming a new connection does 
  98.106 +	not need to be made. */
  98.107 +	KPOP3MTMPopulate,
  98.108 +	/** Populates any new messages from the current service, assuming a new connection does 
  98.109 +	not need to be made. */
  98.110 +	KPOP3MTMPopulateNew,
  98.111 +	/** Populates all messages from the current service, assuming a new connection does 
  98.112 +	not need to be made. */
  98.113 +	KPOP3MTMPopulateAll 
  98.114 +	};
  98.115 +
  98.116 +#endif
    99.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.2 +++ b/epoc32/include/app/pop3set.h	Wed Mar 31 12:27:01 2010 +0100
    99.3 @@ -0,0 +1,293 @@
    99.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
    99.5 +// All rights reserved.
    99.6 +// This component and the accompanying materials are made available
    99.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
    99.8 +// which accompanies this distribution, and is available
    99.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
   99.10 +//
   99.11 +// Initial Contributors:
   99.12 +// Nokia Corporation - initial contribution.
   99.13 +//
   99.14 +// Contributors:
   99.15 +//
   99.16 +// Description:
   99.17 +//
   99.18 +
   99.19 +#if !defined (__POP3SET_H__)
   99.20 +#define __POP3SET_H__
   99.21 +
   99.22 + 
   99.23 +
   99.24 +
   99.25 +#include <msvuids.h>
   99.26 +#include <miutset.h>
   99.27 +#include <miut_err.h>
   99.28 +
   99.29 +
   99.30 +
   99.31 +/** Default POP3 server port number. */
   99.32 +const TUint32 KPOP3DefaultPortNumber = 110;
   99.33 +
   99.34 +/** @deprecated */
   99.35 +const TInt32 KImPop3SynchroniseAll	 = -1;
   99.36 +
   99.37 +/** @deprecated */
   99.38 +const TInt32 KImPop3SynchroniseNone	 = 0;
   99.39 +
   99.40 +/**
   99.41 +Specifies which parts of a POP3 message to download. Used when configuring the
   99.42 +POP3 service settings.
   99.43 +
   99.44 +@see
   99.45 +CImPop3Settings 
   99.46 +
   99.47 +@publishedAll
   99.48 +@released
   99.49 +*/
   99.50 +enum TPop3GetMailOptions
   99.51 +	{
   99.52 +	/** Message headers only. */
   99.53 +	EGetPop3EmailHeaders,
   99.54 +	/** Complete message. */
   99.55 +	EGetPop3EmailMessages
   99.56 +	};			   
   99.57 +
   99.58 +
   99.59 +class TPop3Progress
   99.60 +/**
   99.61 +Progress information for a POP3 operation. 
   99.62 +
   99.63 +@publishedAll
   99.64 +@released
   99.65 +*/
   99.66 +	{
   99.67 +public:
   99.68 +	IMPORT_C TInt ConnectionState() const;
   99.69 +	IMPORT_C TInt ConnectionIAP() const;
   99.70 +
   99.71 +public:
   99.72 +	/** Defines types of POP3 operations. */
   99.73 +	enum TPop3ProgressType 
   99.74 +		{
   99.75 +	/** Refreshing view of remote mail box. */
   99.76 +		EPopRefreshing,
   99.77 +	/** Copying messages. */
   99.78 +		EPopCopying,
   99.79 +	/** Deleting messages. */
   99.80 +		EPopDeleting,
   99.81 +	/** Connecting to remote mail box. */
   99.82 +		EPopConnecting,
   99.83 +	/** Internal reorganisation. */
   99.84 +		EPopTidying,
   99.85 +	/** Connected to remote mail box and no current operations. */
   99.86 +		EPopConnectedAndIdle,
   99.87 +	/** Disconnecting from remote mail box. */
   99.88 +		EPopDisconnecting,
   99.89 +	/** Disconnected from remote mail box. */
   99.90 +		EPopDisconnected,
   99.91 +	/** Moving messages. */
   99.92 +		EPopMoving,
   99.93 +	/** Copying new messages. */
   99.94 +		EPopCopyNewMail,
   99.95 +	/** Moving new messages. */
   99.96 +		EPopMoveNewMail,
   99.97 +	/** Copying a selection of messages. */
   99.98 +		EPopCopyMailSelection,
   99.99 +	/** Moving a selection of messages. */
  99.100 +		EPopMoveMailSelection,
  99.101 +	/** Copying all messages. */
  99.102 +		EPopCopyAllMail,
  99.103 +	/** Moving all messages. */
  99.104 +		EPopMoveAllMail,
  99.105 +	/** Populating view of remote mail box. */
  99.106 +		EPopPopulating,
  99.107 +	/** Cancelling all off-line operations. */
  99.108 +		EPopCancellingOfflineOps,
  99.109 +	/** Populating mailbox with top command */
  99.110 +		EPopTopPopulating,
  99.111 +	/** Defines the maximum value for this enumeration. */
  99.112 +		EPopMaxProgressValue=EPopTopPopulating
  99.113 +		};
  99.114 +
  99.115 +	/** Type of operation for which progress is being reported. */
  99.116 +	TPop3ProgressType	iPop3Progress;	// holds the progress for a 'super operation'
  99.117 +	/** When in the EPopConnecting state, this member holds the connection 
  99.118 +	stage. Otherwise it holds the total number of messages for the operation. */
  99.119 +	TInt				iTotalMsgs;
  99.120 +	/** Remaining number of messages to process. */
  99.121 +	TInt				iMsgsToProcess;
  99.122 +	/** Number of bytes processed by the operation. */
  99.123 +	TInt				iBytesDone;
  99.124 +	/** When in the EPopConnecting state, this member holds the connection 
  99.125 +	iap value. Otherwise it holds the total number of bytes to progress for the
  99.126 +	operation. */
  99.127 +	TInt				iTotalBytes;
  99.128 +	/** Operation error code. */
  99.129 +	TInt				iErrorCode; // client side needs to be informed of an error
  99.130 +	/** Type of the sub-operation, where a nested operations is occurring. */
  99.131 +	TPop3ProgressType	iPop3SubStateProgress; // holds the progress for the substate of the 'super operation'
  99.132 +	/** Service performing the operation. */
  99.133 +	TMsvId				iServiceId;
  99.134 +	/** The total size of messages to be downloaded. */
  99.135 +	TInt				iTotalSize; // The total size of messages to be downloaded.
  99.136 +	};
  99.137 +
  99.138 +
  99.139 +class TImPop3GetMailInfo
  99.140 +/**
  99.141 +Use to specify the maximum message size and the destination folder ID for
  99.142 +certain POP3 operations.
  99.143 +
  99.144 +@see
  99.145 +CPop3ClientMtm
  99.146 +
  99.147 +@publishedAll
  99.148 +@released
  99.149 +*/
  99.150 +	{
  99.151 +public:
  99.152 +	/** Maximum message size for the operation. */
  99.153 +	TInt32		iMaxEmailSize;
  99.154 +	/** ID of the destination folder for the operation. */
  99.155 +	TMsvId		iDestinationFolder;
  99.156 +	};
  99.157 +
  99.158 +class TImPop3PopulateOptions
  99.159 +/**
  99.160 +Use to specify the population limit for the POP3 top command
  99.161 +
  99.162 +@see
  99.163 +CPop3ClientMtm
  99.164 +
  99.165 +@publishedAll
  99.166 +@released
  99.167 +*/
  99.168 +	{
  99.169 +private:
  99.170 +	/** Version of this GetMailInfo class, breaks coding standard by putting a private member at 
  99.171 +	    the beginning to enable unpacking code to check the version before unpacking the rest of the class */
  99.172 +	TInt32	iVersion;
  99.173 +
  99.174 +public:
  99.175 +	IMPORT_C TImPop3PopulateOptions();
  99.176 +	IMPORT_C static void UnpackL(const TDesC8& aDesc, TImPop3PopulateOptions &aUnpackTo);
  99.177 +
  99.178 +	IMPORT_C TInt MaxEmailSize();
  99.179 +	IMPORT_C void SetMaxEmailSize(TInt aMaxEmailSize);
  99.180 +	IMPORT_C TInt PopulationLimit();
  99.181 +	IMPORT_C void SetPopulationLimit(TInt aPopulationLimit);
  99.182 +	
  99.183 +private:
  99.184 +	/** Maximum message size for the operation. */
  99.185 +	TInt32		iMaxEmailSize;
  99.186 +	/** Population limit for Populate operation, set to -1 for total populate */
  99.187 +	TInt32		iPopulationLimit;
  99.188 +	/** Construction utility function */
  99.189 +	};
  99.190 +
  99.191 +
  99.192 +class CImPop3Settings : public CImBaseEmailSettings
  99.193 +/**
  99.194 +Run-time configuration settings for POP3.
  99.195 +
  99.196 +Messaging clients should use an instance of this class to specify
  99.197 +and retrieve configuration settings that are used by the POP3 service when
  99.198 +executing email operations.  
  99.199 +
  99.200 +Service settings such as the user name and password, whether to authenticate
  99.201 +using APOP or plain text, the maximum size of an email to download, and the
  99.202 +maximum number of messages to synchronise can be specified using this class.
  99.203 +Storing and restoring from the message store is also supported.
  99.204 +
  99.205 +To use this class to change a setting:
  99.206 +1) Set the current context to the POP3 service entry using CMsvStore.
  99.207 +2) Create an instance of CImPop3Settings and put it on the cleanup stack.
  99.208 +3) Retrieve the existing settings by calling CImPop3Settings::RestoreL().
  99.209 +4) Change the inbox synchronisation limit setting by calling CImPop3Settings::SetInboxSynchronisationLimit().
  99.210 +5) Save the new settings by calling CImPop3Settings::StoreL().
  99.211 +6) Pop and destroy the CImPop3Settings instance.
  99.212 +
  99.213 +@see CMsvStore
  99.214 +@publishedAll
  99.215 +@released
  99.216 +*/
  99.217 +	{
  99.218 +public:
  99.219 +	IMPORT_C CImPop3Settings();
  99.220 +	IMPORT_C virtual ~CImPop3Settings();
  99.221 +	IMPORT_C void Reset();
  99.222 +	IMPORT_C const TPtrC8 LoginName() const;
  99.223 +	IMPORT_C void SetLoginNameL(const TDesC8&);
  99.224 +	IMPORT_C const TPtrC8 Password() const;
  99.225 +	IMPORT_C void SetPasswordL(const TDesC8&);
  99.226 +	IMPORT_C TBool AutoSendOnConnect() const;
  99.227 +	IMPORT_C void SetAutoSendOnConnect(TBool aFlag);
  99.228 +	IMPORT_C TBool Apop() const;
  99.229 +	IMPORT_C void SetApop(TBool aFlag);
  99.230 +	IMPORT_C TBool DisconnectedUserMode() const;
  99.231 +	IMPORT_C void SetDisconnectedUserMode(TBool aFlag);
  99.232 +	IMPORT_C TBool DeleteEmailsWhenDisconnecting() const;
  99.233 +	IMPORT_C void SetDeleteEmailsWhenDisconnecting(TBool aFlag);
  99.234 +	IMPORT_C TBool AcknowledgeReceipts() const;
  99.235 +	IMPORT_C void SetAcknowledgeReceipts(TBool aFlag);
  99.236 +	IMPORT_C TInt MaxEmailSize() const;
  99.237 +	IMPORT_C void SetMaxEmailSize(const TInt aMaxEmailSize);
  99.238 +	IMPORT_C TPop3GetMailOptions GetMailOptions() const;
  99.239 +	IMPORT_C void SetGetMailOptions(TPop3GetMailOptions aGetMailOptions);
  99.240 +	IMPORT_C CImPop3Settings& CopyL(const CImPop3Settings& aCImPop3Settings);
  99.241 +	IMPORT_C TBool operator==(const CImPop3Settings& aCImPop3Settings) const;
  99.242 +	IMPORT_C TInt32 InboxSynchronisationLimit() const;
  99.243 +	IMPORT_C void SetInboxSynchronisationLimit(const TInt32 aInboxSyncLimit);
  99.244 +	IMPORT_C TInt32 PopulationLimit() const;
  99.245 +	IMPORT_C void SetPopulationLimitL(const TInt32 aPopulationLimit);
  99.246 +	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
  99.247 +	IMPORT_C TPtrC8 TlsSslDomain() const;
  99.248 +
  99.249 +private:
  99.250 +	class TImPop3SettingsExtension
  99.251 +		{
  99.252 +	public:
  99.253 +		inline TImPop3SettingsExtension();
  99.254 +	public:
  99.255 +		HBufC8* iLoginName;
  99.256 +		HBufC8* iPassword;
  99.257 +		HBufC8* iTlsSslDomain;
  99.258 +		TInt32 iPopulationLimit;
  99.259 +		};
  99.260 +	inline TImPop3SettingsExtension* Extension() const;
  99.261 +	inline void CheckExtensionExistsL();
  99.262 +
  99.263 +	enum TImPop3EmailSettings
  99.264 +		{
  99.265 +		KPop3SettingsClearFlag					= 0x00000000,
  99.266 +		KPop3BaseEmailSettingsLastUsedFlag		= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag,	//0x00000002
  99.267 +		KPop3ApopFlag							= KPop3BaseEmailSettingsLastUsedFlag << 1,		//0x00000004
  99.268 +		KPop3AutoSendFlag						= KPop3ApopFlag << 1,							//0x00000008
  99.269 +		KPop3DisconnectedModeFlag				= KPop3AutoSendFlag << 1,						//0x00000010
  99.270 +		KPop3DeleteEmailsWhenDisconnectingFlag	= KPop3DisconnectedModeFlag << 1,				//0x00000020
  99.271 +		KPop3AcknowledgeReceipts				= KPop3DeleteEmailsWhenDisconnectingFlag << 1,	//0x00000040
  99.272 +		KPop3EmailSettingsLastUsedFlag			= KPop3AcknowledgeReceipts						//0x00000040
  99.273 +		};
  99.274 +
  99.275 +	TImPop3SettingsExtension*	iExtension; // renamed iReceiptAddress
  99.276 +	TInt32  iInboxSyncLimit;
  99.277 +	TInt32	iMaxEmailSize;
  99.278 +	TPop3GetMailOptions iGetMailOptions;
  99.279 +	};
  99.280 +
  99.281 +inline CImPop3Settings::TImPop3SettingsExtension* CImPop3Settings::Extension() const
  99.282 +	{
  99.283 +	return iExtension;
  99.284 +	}
  99.285 +
  99.286 +inline void CImPop3Settings::CheckExtensionExistsL()
  99.287 +	{
  99.288 +	if (!iExtension)
  99.289 +		iExtension=new (ELeave) CImPop3Settings::TImPop3SettingsExtension;
  99.290 +	}
  99.291 +
  99.292 +inline CImPop3Settings::TImPop3SettingsExtension::TImPop3SettingsExtension() : iLoginName(NULL) , iPassword(NULL), iTlsSslDomain(NULL)
  99.293 +	{
  99.294 +	}
  99.295 +
  99.296 +#endif // #define __POP3SET_H__
   100.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.2 +++ b/epoc32/include/app/popcmtm.h	Wed Mar 31 12:27:01 2010 +0100
   100.3 @@ -0,0 +1,233 @@
   100.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   100.5 +// All rights reserved.
   100.6 +// This component and the accompanying materials are made available
   100.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   100.8 +// which accompanies this distribution, and is available
   100.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  100.10 +//
  100.11 +// Initial Contributors:
  100.12 +// Nokia Corporation - initial contribution.
  100.13 +//
  100.14 +// Contributors:
  100.15 +//
  100.16 +// Description:
  100.17 +// Client MTM for the POP3 protocol
  100.18 +// 
  100.19 +//
  100.20 +
  100.21 +
  100.22 +#if !defined (__POPCMTM_H__)
  100.23 +#define __POPCMTM_H__
  100.24 +
  100.25 +#if !defined (__MIUTMSG_H__)
  100.26 +#include <miutmsg.h>
  100.27 +#endif
  100.28 +#if !defined (__MIUTPARS_H__)
  100.29 +#include <miutpars.h>		//TImMessageField
  100.30 +#endif
  100.31 +#if !defined (__POP3CMDS_H__)
  100.32 +#include <pop3cmds.h>		// KPOP3MTMConnect etc
  100.33 +#endif
  100.34 +#if !defined (__POP3SET_H__)
  100.35 +#include <pop3set.h>		// KPOP3MTMConnect etc
  100.36 +#endif
  100.37 +
  100.38 +class CImPOP3GetMail;
  100.39 +class CImEmailAutoSend;
  100.40 + 
  100.41 +///////  Pop3 Client MTM  /////////////////////////////////////////////////////////////////////////////
  100.42 +class CPop3ClientMtm : public CBaseMtm
  100.43 +/** POP3 client MTM interface.
  100.44 +
  100.45 +Most of the functions in this class are implementations of the virtual functions 
  100.46 +defined by the base class CBaseMtm. 
  100.47 +@publishedAll
  100.48 +@released
  100.49 +*/
  100.50 +	{
  100.51 +/** 
  100.52 +@deprecated
  100.53 +*/
  100.54 +
  100.55 +public:
  100.56 +	enum TImPopcNewEmailHeaderType
  100.57 +		{
  100.58 +		EForwardedEmail,
  100.59 +		EReplyToEmail,
  100.60 +		EReceiptToEmail
  100.61 +		};
  100.62 +
  100.63 +public:
  100.64 +	IMPORT_C static CPop3ClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
  100.65 +	~CPop3ClientMtm();
  100.66 +
  100.67 +	void SaveMessageL();
  100.68 +	void LoadMessageL();
  100.69 +
  100.70 +	IMPORT_C void StoreSettingsL();
  100.71 +	IMPORT_C void RestoreSettingsL();
  100.72 +
  100.73 +	CMsvOperation* ReplyL  (TMsvId aId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus);
  100.74 +	CMsvOperation* ForwardL(TMsvId aId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
  100.75 +
  100.76 +	TUint ValidateMessage(TMsvPartList aPartList);
  100.77 +	TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
  100.78 +
  100.79 +	void AddAddresseeL(const TDesC& aRealAddress);
  100.80 +	void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
  100.81 +	void RemoveAddressee(TInt aIndex);
  100.82 +
  100.83 +	IMPORT_C void SetSettingsL(const CImPop3Settings& aSettings);
  100.84 +	IMPORT_C const CImPop3Settings& Settings() const; 
  100.85 +
  100.86 +	// --- RTTI functions ---
  100.87 +	TInt QueryCapability(TUid aCapability, TInt& aResponse);
  100.88 +	void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
  100.89 +	CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
  100.90 +
  100.91 +	// Attachment functions to support the SendAs API
  100.92 +	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  100.93 +	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  100.94 +	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  100.95 +	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);	
  100.96 +	EXPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  100.97 +	IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
  100.98 +
  100.99 +	IMPORT_C virtual TMsvId DefaultServiceL() const;
 100.100 +	IMPORT_C virtual void RemoveDefaultServiceL();
 100.101 +	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 100.102 +
 100.103 +protected:
 100.104 +	CPop3ClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
 100.105 +	void ConstructL();
 100.106 +	void ContextEntrySwitched();
 100.107 +
 100.108 +private:
 100.109 +	TBool ValidateAddress(const TPtrC& anAddress);
 100.110 +	void SendOnNextConnectionL();
 100.111 +	TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
 100.112 +	CMsvEntrySelection* FilteredChildrenLC(TBool aNewOnly, TInt aMaxEmailSize);
 100.113 +	CMsvEntrySelection* FilteredSelectionLC(TInt aMaxEmailSize, const CMsvEntrySelection& aSelection);
 100.114 +		
 100.115 +
 100.116 +
 100.117 +private:
 100.118 +	CImPop3Settings* iImPop3Settings;
 100.119 +	TImMessageField iTImMessageField;
 100.120 +	CImHeader* iHeader;
 100.121 +
 100.122 +	HBufC* iEmailAddressFormatString;	// defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>")
 100.123 +	CImEmailOperation* iImEmailOperation;
 100.124 +	CImPOP3GetMail* iImPOP3GetMail;
 100.125 +	};
 100.126 +
 100.127 +
 100.128 +class CImPOP3GetMail : public CMsvOperation
 100.129 +/** Encapsulates an operation to copy/move POP3 emails from the remote inbox to 
 100.130 +any local folder.
 100.131 +
 100.132 +Functionality is provided to:
 100.133 +
 100.134 +1. copy/move any new emails
 100.135 +
 100.136 +2. copy/move a selection of emails
 100.137 +
 100.138 +3. copy/move all emails
 100.139 +
 100.140 +4. in the Remote Inbox to a local folder.
 100.141 +
 100.142 +There are three cases for copying/moving the emails from the Remote Inbox:
 100.143 +
 100.144 +1. the user is connected to the account so just copy/move the emails
 100.145 +
 100.146 +2. the user is not connected to the account so connect, copy/move the emails, 
 100.147 +and then disconnect
 100.148 +
 100.149 +3. the user is not connected to the account so connect, copy/move the emails, 
 100.150 +and then stay online
 100.151 +
 100.152 +Objects of this type are returned from CPop3ClientMtm::InvokeAsyncFunctionL() 
 100.153 +when a suitable get command is requested. 
 100.154 +@publishedAll
 100.155 +@released
 100.156 +*/
 100.157 +	{
 100.158 +public:
 100.159 +	/** Defines types of get mail operation. */
 100.160 +	enum TImPOP3GetMailType
 100.161 +	{
 100.162 +	/** Connect and copy new mail and stay online. */
 100.163 +		EConnectAndCopyNewMailAndStayOnline,
 100.164 +	/** Connect and copy new mail and disconnect. */
 100.165 +		EConnectAndCopyNewMailAndDisconnect,
 100.166 +	/** Connect and move new mail and stay online. */
 100.167 +		EConnectAndMoveNewMailAndStayOnline,
 100.168 +	/** Connect and move new mail and disconnect. */
 100.169 +		EConnectAndMoveNewMailAndDisconnect,
 100.170 +	/** Connect and copy mail selection and stay online. */
 100.171 +		EConnectAndCopyMailSelectionAndStayOnline,
 100.172 +	/** Connect and copy mail selection and disconnect. */
 100.173 +		EConnectAndCopyMailSelectionAndDisconnect,
 100.174 +	/** Connect and move mail selection and stay online. */
 100.175 +		EConnectAndMoveMailSelectionAndStayOnline,
 100.176 +	/** Connect and move mail selection and disconnect. */
 100.177 +		EConnectAndMoveMailSelectionAndDisconnect,
 100.178 +	/** Connect and copy all mail and stay online. */
 100.179 +		EConnectAndCopyAllMailAndStayOnline,
 100.180 +	/** Connect and copy all mail and disconnect. */
 100.181 +		EConnectAndCopyAllMailAndDisconnect,
 100.182 +	/** Connect and move all mail and stay online. */
 100.183 +		EConnectAndMoveAllMailAndStayOnline,
 100.184 +	/** Connect and move all mail and disconnect. */
 100.185 +		EConnectAndMoveAllMailAndDisconnect
 100.186 +	};
 100.187 +
 100.188 +public:
 100.189 +	IMPORT_C CMsvOperation* GetMailL(CPop3ClientMtm& aPop3ClientMtm, TRequestStatus& aObserverRequestStatus, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo, TImPOP3GetMailType aPOP3GetMailType);
 100.190 +	IMPORT_C const TDesC8& FinalProgress();
 100.191 +	IMPORT_C ~CImPOP3GetMail();
 100.192 +	void DoCancel();
 100.193 +	void RunL();
 100.194 +	const TDesC8& ProgressL();
 100.195 +private:
 100.196 +	CImPOP3GetMail(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, CPop3ClientMtm& aPop3ClientMtm, TImPOP3GetMailType aPOP3GetMailType);
 100.197 +	void ConstructL(const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo);
 100.198 +	void SelectNextStateL();					// selects next state to go to
 100.199 +	void ChangeStateL();					// initiates the next state operation
 100.200 +	void SelectAndChangeToNextStateL();
 100.201 +	void RequestComplete(TInt aError);
 100.202 +	void Complete();
 100.203 +	void ConnectToMailboxL();
 100.204 +	void CopyMoveNewMessagesL(TBool aCopy);
 100.205 +	void CopyMoveMessageSelectionL(TBool aCopy);
 100.206 +	void CopyMoveAllMessagesL(TBool aCopy);
 100.207 +	void DisconnectFromMailboxL();
 100.208 +	void ResetProgress();
 100.209 +	void StoreProgressL();
 100.210 +private:
 100.211 +	enum TImPOP3GetMailState
 100.212 +		{
 100.213 +		EConnectToMailbox,
 100.214 +		ECopyNewMessages,
 100.215 +		EMoveNewMessages,
 100.216 +		ECopyMessageSelection,
 100.217 +		EMoveMessageSelection,
 100.218 +		ECopyAllMessages,
 100.219 +		EMoveAllMessages,
 100.220 +		EDisconnectFromMailbox,
 100.221 +		EFinished
 100.222 +		};
 100.223 +	
 100.224 +	CPop3ClientMtm& iPop3ClientMtm;
 100.225 +	CMsvEntrySelection* iMsvEntrySelection;
 100.226 +	CMsvOperation* iMsvOperation;
 100.227 +
 100.228 +	TPop3Progress iProgress;
 100.229 +	TPop3Progress iErrorProgress;
 100.230 +	TImPOP3GetMailState iState;
 100.231 +	TImPOP3GetMailType iPOP3GetMailType;
 100.232 +	TPckgBuf<TPop3Progress> iProgressBuf;
 100.233 +	TPckgBuf<TImPop3GetMailInfo> iPop3GetMailInfo;
 100.234 +	};
 100.235 +
 100.236 +#endif // __POPCMTM_H__
   101.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   101.2 +++ b/epoc32/include/app/smcmmain.h	Wed Mar 31 12:27:01 2010 +0100
   101.3 @@ -0,0 +1,91 @@
   101.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   101.5 +// All rights reserved.
   101.6 +// This component and the accompanying materials are made available
   101.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   101.8 +// which accompanies this distribution, and is available
   101.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  101.10 +//
  101.11 +// Initial Contributors:
  101.12 +// Nokia Corporation - initial contribution.
  101.13 +//
  101.14 +// Contributors:
  101.15 +//
  101.16 +// Description:
  101.17 +//
  101.18 +
  101.19 +#ifndef __SMUTMAIN_H__
  101.20 +#define __SMUTMAIN_H__
  101.21 +
  101.22 +#include <e32base.h>
  101.23 +
  101.24 +/**
  101.25 +@deprecated
  101.26 +@internalComponent
  101.27 +*/
  101.28 +const TInt KSmscSessionPriority = CActive::EPriorityStandard;
  101.29 +
  101.30 +/**
  101.31 +@deprecated
  101.32 +@internalComponent
  101.33 +*/
  101.34 +_LIT(KSmcmDllName,"SMCM");
  101.35 +
  101.36 +/**
  101.37 +The panic codes used by the SMS client MTM.
  101.38 +
  101.39 +@internalComponent
  101.40 +@released
  101.41 +*/
  101.42 +enum TSmcmPanic
  101.43 +	{
  101.44 +	ESmutPanicUnsupportedMsgType		= 0,
  101.45 +	ESmscEntryNotSet					= 1,
  101.46 +	ESmscWrongContextType				= 2,
  101.47 +	ESmscPanicUnexpectedCommand			= 3,
  101.48 +	ESmscUnrecognizedEntryType			= 4,
  101.49 +	ESmscAddresseeIndexOutOfRange		= 5,
  101.50 +	ESmscRecpAddresseeMiscount			= 6,
  101.51 +	ESmscDefaultSCOutOfRange			= 7,
  101.52 +	ESmscVPOutOfRange					= 8,
  101.53 +/**
  101.54 +@deprecated	Currently not used.
  101.55 +*/
  101.56 +	ESmscRetryLimitOutOfRange			= 9,
  101.57 +	ESmscBioMsgIdTypeError				= 10,
  101.58 +	ESmscSettingsNotSet					= 11,
  101.59 +	ESmscServiceIdNotSet				= 12,
  101.60 +/**
  101.61 +@deprecated	Currently not used.
  101.62 +*/
  101.63 +	ESmscSimParamWrongType				= 13,
  101.64 +/**
  101.65 +@deprecated	Currently not used.
  101.66 +*/
  101.67 +	ESmscSimParamExistingOperation		= 14,
  101.68 +/**
  101.69 +@deprecated	Currently not used.
  101.70 +*/
  101.71 +	ESmscSimParamInvalidProgressCount	= 15,
  101.72 +/**
  101.73 +@deprecated	Currently not used.
  101.74 +*/
  101.75 +	ESmscWrongCommDbAction				= 16,
  101.76 +
  101.77 +	ESmscFunctionNotSupported			= 17
  101.78 +	};
  101.79 +
  101.80 +/**
  101.81 +Panic function.
  101.82 +
  101.83 +@param	aPanic	The panic code.
  101.84 +
  101.85 +@internalComponent
  101.86 +@released
  101.87 +*/
  101.88 +inline void Panic(TSmcmPanic aPanic)
  101.89 +	{
  101.90 +	_LIT(KSmcmPanic, "SMCM");
  101.91 +	User::Panic(KSmcmPanic, aPanic);
  101.92 +	}
  101.93 +
  101.94 +#endif	// __SMUTMAIN_H__
   102.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   102.2 +++ b/epoc32/include/app/smsclnt.h	Wed Mar 31 12:27:01 2010 +0100
   102.3 @@ -0,0 +1,209 @@
   102.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   102.5 +// All rights reserved.
   102.6 +// This component and the accompanying materials are made available
   102.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   102.8 +// which accompanies this distribution, and is available
   102.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  102.10 +//
  102.11 +// Initial Contributors:
  102.12 +// Nokia Corporation - initial contribution.
  102.13 +//
  102.14 +// Contributors:
  102.15 +//
  102.16 +// Description:
  102.17 +//
  102.18 +
  102.19 +#ifndef __SMSCLNT_H__
  102.20 +#define __SMSCLNT_H__
  102.21 +
  102.22 +#include <mtclbase.h>
  102.23 +#include <smuthdr.h>
  102.24 +
  102.25 +
  102.26 +/**
  102.27 +The UID that indentifies the SMS message editor application.
  102.28 +
  102.29 +This is the response to the query for the KUidMsvMtmQueryEditorUidValue
  102.30 +capability.
  102.31 +
  102.32 +@see	CSmsClientMtm::QueryCapability
  102.33 +
  102.34 +@publishedPartner
  102.35 +@released
  102.36 +*/
  102.37 +const TInt KUidMsgSmsEditorAppVal=0x1000163f;
  102.38 +
  102.39 +/**
  102.40 +The maximum number of SMS PDUs allowed in a concatenated SMS message.
  102.41 +
  102.42 +Together with KSmcmMaxCharsInMessageConcatenated7Bit, this is the response to
  102.43 +the query for the KUidMtmQueryMaxTotalMsgSizeValue capability.
  102.44 +
  102.45 +@see	CSmsClientMtm::QueryCapability
  102.46 +@see	KSmcmMaxCharsInMessageConcatenated7Bit
  102.47 +
  102.48 +@internalComponent
  102.49 +@released
  102.50 +*/
  102.51 +const TInt KSmcmMaxMessageNumber=0x32;
  102.52 +
  102.53 +/**
  102.54 +The maximum number of characters in a concatenated SMS PDU.
  102.55 +
  102.56 +Together with KSmcmMaxMessageNumber, this is the response to the query for the
  102.57 +KUidMtmQueryMaxTotalMsgSizeValue capability.
  102.58 +
  102.59 +@see	CSmsClientMtm::QueryCapability
  102.60 +@see	KSmcmMaxCharsInMessageConcatenated7Bit
  102.61 +
  102.62 +@internalComponent
  102.63 +@released
  102.64 +*/
  102.65 +const TInt KSmcmMaxCharsInMessageConcatenated7Bit=0x99;
  102.66 +
  102.67 +/**
  102.68 +The maximum number of characters in a non-concatenated SMS PDU.
  102.69 +
  102.70 +This is the response to the query for the KUidMtmQueryMaxBodySizeValue
  102.71 +capability.
  102.72 +
  102.73 +@see	CSmsClientMtm::QueryCapability
  102.74 +
  102.75 +@internalComponent
  102.76 +@released
  102.77 +*/
  102.78 +const TInt KSmcmMaxTotalMsgSize=160;
  102.79 +
  102.80 +/**
  102.81 +The granularity of the in-memory buffer for CRichText objects.
  102.82 +
  102.83 +@see	CRichText::NewL
  102.84 +
  102.85 +@internalComponent
  102.86 +@released
  102.87 +*/
  102.88 +const TInt KSmcmRichTextConstant=256;
  102.89 +
  102.90 +class CSmsHeader;
  102.91 +class CSmsMessage;
  102.92 +class CSmsSettings;
  102.93 +class TSmsUtilities;
  102.94 +class CSmsSimParamOperation;
  102.95 +class CMobilePhoneSmspList;
  102.96 +class RResourceFile;
  102.97 +
  102.98 +/** 
  102.99 +The SMS client MTM interface.
 102.100 +
 102.101 +Most of the functions in this class are implementations of the virtual functions 
 102.102 +defined by the base class CBaseMtm.
 102.103 +
 102.104 +An object of this class can be obtained from the Client MTM registry. The message
 102.105 +server provides the necessary information required by the registry to provide
 102.106 +the SMS client MTM.
 102.107 +
 102.108 +All client MTM objects have a current context. This is an entry in the message 
 102.109 +store that will be manipulated by certain APIs supplied by the MTM. If the 
 102.110 +current context is not set then certain APIs will panic. 
 102.111 +
 102.112 +The CBaseMtm::HasContext API can be used to check that the current context has 
 102.113 +been set. It can be set using either the CBaseMtm::SwitchCurrenEntryL API or the
 102.114 +CBaseMtm::SetCurrentEntryL API.
 102.115 +
 102.116 +@see	CClientMtmRegistry
 102.117 +@see	CBaseMtm::HasContext
 102.118 +@see	CBaseMtm::SetCurrentEntryL
 102.119 +@see	CBaseMtm::SwitchCurrenEntryL
 102.120 +
 102.121 +@publishedAll
 102.122 +@released
 102.123 +*/
 102.124 +class CSmsClientMtm : public CBaseMtm
 102.125 +	{
 102.126 +public:
 102.127 +
 102.128 +	IMPORT_C static CSmsClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll,CMsvSession& aSession);
 102.129 +	virtual ~CSmsClientMtm();
 102.130 +
 102.131 +	void HandleEntryEvent(enum MMsvEntryObserver::TMsvEntryEvent,TAny*,TAny*,TAny*);
 102.132 +
 102.133 +	inline CSmsHeader& SmsHeader();
 102.134 +	inline const CSmsHeader& SmsHeader() const;
 102.135 +	inline CSmsSettings& ServiceSettings();
 102.136 +	inline const CSmsSettings& ServiceSettings() const;
 102.137 +	inline TInt ServiceId() const;
 102.138 +
 102.139 +	IMPORT_C void RestoreServiceAndSettingsL();
 102.140 +	IMPORT_C CSmsSimParamOperation* ReadSimParamsL(TRequestStatus& aObserverRequestStatus);
 102.141 +	IMPORT_C CSmsSimParamOperation* WriteSimParamsL(const CMobilePhoneSmspList& aList, TRequestStatus& aObserverRequestStatus); 
 102.142 +	
 102.143 +	/** 
 102.144 +	Sets the character encoding value. The character encoding value options are 7-bit,
 102.145 +	8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding.
 102.146 +	*/
 102.147 +	void SetMessageCharacterSetL(TSmsDataCodingScheme::TSmsAlphabet aTsmsAlphabet);
 102.148 +
 102.149 +public:	// methods from CBaseMtm
 102.150 +
 102.151 +	virtual void SaveMessageL(); 
 102.152 +	virtual void LoadMessageL();
 102.153 +	virtual TMsvPartList ValidateMessage(TMsvPartList aPartList);
 102.154 +	virtual TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
 102.155 +	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
 102.156 +	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
 102.157 +	virtual void AddAddresseeL(const TDesC& aRealAddress);
 102.158 +	virtual void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
 102.159 +	virtual void RemoveAddressee(TInt aIndex);
 102.160 +	virtual TInt QueryCapability(TUid aCapability, TInt& aResponse);
 102.161 +	virtual void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter);
 102.162 +	virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
 102.163 +
 102.164 +	IMPORT_C void CreateMessageL(TMsvId aServiceId);
 102.165 +	IMPORT_C void BioTypeChangedL(TUid aBioTypeUid);
 102.166 +	
 102.167 +protected: 
 102.168 +	/**
 102.169 +	Methods from CBaseMtm, The implementation of this function assumes that
 102.170 +    the new service for setting the charset encoding value for a SMS message is supported.
 102.171 +    */
 102.172 +	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
 102.173 + 
 102.174 +private:
 102.175 +
 102.176 +	CSmsClientMtm(CRegisteredMtmDll& aRegisteredMtmDll,CMsvSession& aSession);
 102.177 +	void ConstructL();
 102.178 +
 102.179 +	void BasicReplyForwardEntry(TMsvEntry& aNewEntry) const;
 102.180 +	CMsvOperation* CreateNewEntryL(TMsvEntry& aNewEntry, TMsvId aDestination,CSmsHeader& aSmsHeader,const CRichText& aBody, TRequestStatus& aCompletionStatus);
 102.181 +	TBool ValidRecipients() const;
 102.182 +	TBool ValidNumber(const TDesC& aNumber) const;
 102.183 +
 102.184 +private:	// methods from CBaseMtm
 102.185 +
 102.186 +	virtual void ContextEntrySwitched(); 
 102.187 +
 102.188 +private:
 102.189 +
 102.190 +	void DoAddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
 102.191 +	void AddRecipientL(const TDesC& aRealAddress, const TDesC& aAlias);
 102.192 +	void DoAddRecipientL(CSmsHeader* aSmsHeader, const TDesC& aRealAddress, const TDesC& aAlias);
 102.193 +	void ResetHeader();
 102.194 +	TMsvPartList DoFindL(const TDesC& aTextToFind,TMsvPartList aPartList);
 102.195 +	void FindL(const TDesC& aTextToFind, const TMsvPartList aPartList,TMsvPartList& aFoundList);
 102.196 +	void FindInBodyL(const TDesC& aTextToFind, const TMsvPartList& aFoundList, TMsvPartList& aResult);
 102.197 +	HBufC* ReadEmailSubjectFormatL(RResourceFile& aResourceFile, TInt aResourceId, const TDesC& aDefaultFormat);
 102.198 +
 102.199 +private:
 102.200 +
 102.201 +	CSmsSettings*	iServiceSettings;
 102.202 +	TMsvId			iServiceId;
 102.203 +	CSmsHeader*		iSmsHeader;
 102.204 +	TChar			iRealAddressOpen;
 102.205 +	TChar			iRealAddressClose;
 102.206 +	HBufC*			iEmailForwardSubjectFormat;
 102.207 +	HBufC*			iEmailReplySubjectFormat;
 102.208 +	};
 102.209 +
 102.210 +#include <smsclnt.inl>
 102.211 +
 102.212 +#endif	// __SMSCLNT_H__
   103.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   103.2 +++ b/epoc32/include/app/smscmds.h	Wed Mar 31 12:27:01 2010 +0100
   103.3 @@ -0,0 +1,329 @@
   103.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   103.5 +// All rights reserved.
   103.6 +// This component and the accompanying materials are made available
   103.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   103.8 +// which accompanies this distribution, and is available
   103.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  103.10 +//
  103.11 +// Initial Contributors:
  103.12 +// Nokia Corporation - initial contribution.
  103.13 +//
  103.14 +// Contributors:
  103.15 +//
  103.16 +// Description:
  103.17 +//
  103.18 +
  103.19 +#ifndef __SMSCMDS_H__
  103.20 +#define __SMSCMDS_H__
  103.21 +
  103.22 +#include <e32def.h>
  103.23 +
  103.24 +/**
  103.25 +Numeric value of the first SMS-specific command.
  103.26 +
  103.27 +This is only used by TSmsMtmCommand.
  103.28 +
  103.29 +@see	TSmsMtmCommand
  103.30 +
  103.31 +@internalComponent
  103.32 +@released
  103.33 +*/
  103.34 +const TInt KMinCommandExpected = 10000;
  103.35 +
  103.36 +/**
  103.37 +The SMS-specific commands that can be issued through CSmsClientMtm::InvokeAsyncFunctionL.
  103.38 +
  103.39 +SMS messages can be stored in a medium other than the message store itself. For
  103.40 +instance, SMS messages can be stored on the SIM card. This alternative storage
  103.41 +is referred to as the phone store.
  103.42 +
  103.43 +Some of the commands defined allow the contents of the phone store to accessed
  103.44 +and manipulated.
  103.45 +
  103.46 +@see	CSmsClientMtm::InvokeAsyncFunctionL
  103.47 +@see	CSmsClientMtm::ReadSimParamsL
  103.48 +@see	CSmsClientMtm::WriteSimParamsL
  103.49 +@see	TSmsProgress 
  103.50 +
  103.51 +@publishedAll
  103.52 +@released
  103.53 +*/
  103.54 +enum TSmsMtmCommand 
  103.55 +	{
  103.56 +/**
  103.57 +Gets the service centre address (i.e. telephone number) from the GSM handset.
  103.58 +
  103.59 +The result may be retrieved from the iServiceCenterAddress member variable 
  103.60 +in the TSmsProgress progress object for this operation. 
  103.61 +
  103.62 +The aSelection and aParameter arguments are not used by this command, except 
  103.63 +that aSelection must contain at least one member, preferably the SMS Service 
  103.64 +ID. 
  103.65 +
  103.66 +If the telephone handset is unable to supply the service centre address, then 
  103.67 +the progress object for this operation will contain the error. 
  103.68 +
  103.69 +NOTE - ESmsMtmCommandReadServiceCenter should only be used if the telephone 
  103.70 +handset or TSY module does not support reading the SMS parameters on the SIM. 
  103.71 +ESmsMtmCommandReadServiceCenter should only be used if the operation 
  103.72 +returned by CSmsClientMtm::ReadSimParamsL completes with KErrNotSupported.
  103.73 +
  103.74 +@removed	
  103.75 +This command is not supported from v7.0. The function CSmsClientMtm::ReadSimParamsL
  103.76 +should be used instead to obtain Service Centre number from the phone store.
  103.77 +
  103.78 +@see	CSmsClientMtm::ReadSimParamsL
  103.79 +@see	TSmsProgress
  103.80 +*/
  103.81 +	ESmsMtmCommandReadServiceCenter			= KMinCommandExpected,
  103.82 +
  103.83 +/** 
  103.84 +Sets a new service centre address (i.e. telephone number) on the GSM handset. 
  103.85 +
  103.86 +The new telephone number is passed in aParameter as an 8-bit descriptor containing 
  103.87 +a packaged TSmsServiceCenterAddress. 
  103.88 +
  103.89 +The aSelection parameter argument is not used by this command, except that 
  103.90 +aSelection must contain at least one member, preferably the SMS Service ID. 
  103.91 +
  103.92 +@removed
  103.93 +This command is not supported from v7.0. The function CSmsClientMtm::WriteSimParamsL
  103.94 +should be used instead to write the Service Centre number to the phone store.
  103.95 +
  103.96 +@see	CSmsClientMtm::WriteSimParamsL
  103.97 +@see	TSmsServiceCenterAddress
  103.98 +*/
  103.99 +	ESmsMtmCommandWriteServiceCenter,
 103.100 +
 103.101 +/**
 103.102 +Schedules the selected SMS messages to be sent.
 103.103 +
 103.104 +The aSelection argument contains the TMsvId of the SMS messages to be sent. An 
 103.105 +empty selection will cause a panic in debug mode. In release mode nothing will 
 103.106 +happen.
 103.107 +
 103.108 +The time that each message is scheduled to be sent is set by the date field in
 103.109 +the TMsvEntry for that message. Each message in the selection must have the same
 103.110 +scheduled time as the first message in the selection. A send task is scheduled 
 103.111 +to occur at this time.
 103.112 +
 103.113 +In debug mode a panic will occur if all the messages in the selection do not 
 103.114 +have the safe scheduled time. In release mode, the scheduled time sending all 
 103.115 +the messages in the selection will be that of the last message in the selection.
 103.116 +
 103.117 +When the scheduled task occurs not only will the selected messages be sent but
 103.118 +also any waiting SMS messages in the Outbox.
 103.119 +
 103.120 +If the messages are successfully sent by the scheduled task, then all the sent
 103.121 +messages are moved to the Sent folder.
 103.122 +
 103.123 +If any message fails to be sent then the message is marked as failed. Also it
 103.124 +may be re-scheduled to be sent at a later time if that particular error has been
 103.125 +specified as a re-schedulable error. The message remains in its current folder.
 103.126 +
 103.127 +The aParameter agrument is not used.
 103.128 +
 103.129 +@see	CMsvSession::TransferCommandL
 103.130 +
 103.131 +@see	CBaseMtm::InvokeAsyncCommandL
 103.132 +
 103.133 +*/
 103.134 +	ESmsMtmCommandScheduleCopy,
 103.135 +
 103.136 +/**
 103.137 +Not supported by the SMS MTM.
 103.138 +
 103.139 +@internalComponent
 103.140 +*/
 103.141 +	ESmsMtmCommandScheduleMove,
 103.142 +
 103.143 +/**
 103.144 +Removes all messages specified in aSelection from the task scheduler list.
 103.145 +
 103.146 +If successful, the messages will have their SendingState() set to KMsvSendStateSuspended 
 103.147 +on completion of this operation. 
 103.148 +
 103.149 +The aParameter argument is not used by this function. 
 103.150 +
 103.151 +@see	TMsvEntry::SendingState() 
 103.152 +*/
 103.153 +	ESmsMtmCommandDeleteSchedule,
 103.154 +
 103.155 +/** 
 103.156 +Checks the current scheduled status of the messages specified by aSelection. 
 103.157 +
 103.158 +If successful, the Scheduled() and iDate members of each TMsvEntry identified 
 103.159 +in the selection will be changed to represent that messages's current status. 
 103.160 +
 103.161 +The aParameter argument is not used by this function. 
 103.162 +
 103.163 +@see	TMsvEntry
 103.164 +*/
 103.165 +	ESmsMtmCommandCheckSchedule,
 103.166 +
 103.167 +/**
 103.168 +Starts sending the specified selection of SMS messages.
 103.169 +
 103.170 +When a selection of SMS messages are scheduled to be sent using the ESmsMtmCommandScheduleCopy
 103.171 +command this is the actual command that is executed the scheduled time occurs.
 103.172 +
 103.173 +The SMS server MTM creates a package contain this command. The package is passed
 103.174 +to the task scheduler who then passes it to the schedule send exe. The exe then
 103.175 +uses the package to ask the SMS server MTM to send the messages. As such this
 103.176 +command should not be used be external clients.
 103.177 +
 103.178 +When the scheduled task occurs not only will the selected messages be sent but
 103.179 +also any waiting SMS messages in the Outbox.
 103.180 +
 103.181 +If the messages are successfully sent by the scheduled task, then all the sent
 103.182 +messages are moved to the Sent folder.
 103.183 +
 103.184 +If any message fails to be sent then the message is marked as failed. Also it
 103.185 +may be re-scheduled to be sent at a later time if that particular error has been
 103.186 +specified as a re-schedulable error. The message remains in its current folder.
 103.187 +
 103.188 +@internalComponent
 103.189 +*/
 103.190 +	ESmsMtmCommandSendScheduledCopy,
 103.191 +
 103.192 +/**
 103.193 +Not supported by the SMS MTM.
 103.194 +
 103.195 +@internalComponent
 103.196 +*/
 103.197 +	ESmsMtmCommandSendScheduledMove,
 103.198 +
 103.199 +/**
 103.200 +Reads the SMS messages on the phone store and creates a copy of those messages
 103.201 +in an invisible folder under the SMS service in the message store. 
 103.202 +
 103.203 +If successful, the iEnumerateFolder member of the operation's progress will 
 103.204 +identify the invisible folder which contains the messages read from the phone 
 103.205 +store.
 103.206 +
 103.207 +The aSelection argument must contain at least the SMS servive ID. The aParameter 
 103.208 +argument can optionally be a TPckgC containing the ID of an existing folder to
 103.209 +use for the enumeration. The contents of this folder will be replaced with the
 103.210 +current messages in the phone store.
 103.211 +
 103.212 +The operation will fail with KErrArgument if the ID in aParameter is one of the
 103.213 +following - KMsvRootIndexEntryId, KMsvLocalServiceIndexEntryId, KMsvGlobalInBoxIndexEntryId,
 103.214 +KMsvGlobalOutBoxIndexEntryId, KMsvDraftEntryId or KMsvSentEntryId.
 103.215 +
 103.216 +This command must be called before using ESmsMtmCommandCopyFromPhoneStore, 
 103.217 +ESmsMtmCommandMoveFromPhoneStore or ESmsMtmCommandDeleteFromPhoneStore. 
 103.218 +
 103.219 +Pre v7.0, this was named ESmsMtmCommandEnumerateSim.
 103.220 +
 103.221 +@see	TSmsProgress
 103.222 +*/
 103.223 +	ESmsMtmCommandEnumeratePhoneStores,
 103.224 +
 103.225 +/** 
 103.226 +Moves the messages identified in aSelection to the folder identified in aParameter 
 103.227 +(e.g. the inbox). 
 103.228 +	
 103.229 +The associated SMS messages are not deleted from the phone store.
 103.230 +
 103.231 +The first entry ID in aSelection must be the SMS service ID. All following 
 103.232 +entry IDs in the selection must then represent each message to be transferred. 
 103.233 +aParameter should contain a packaged TMsvId, which identifies the folder to 
 103.234 +which the messages in aSelection will be moved. 
 103.235 +
 103.236 +The command ESmsMtmCommandEnumeratePhoneStores must be called before using 
 103.237 +this command. 
 103.238 +
 103.239 +Pre v7.0, this was named ESmsMtmCommandCopyFromSim.
 103.240 +
 103.241 +@see	TSmsMtmCommand::ESmsMtmCommandEnumeratePhoneStores
 103.242 +*/
 103.243 +	ESmsMtmCommandCopyFromPhoneStore,  
 103.244 +
 103.245 +/**
 103.246 +Moves the messages identified in aSelection to the folder identified in aParameter 
 103.247 +(e.g. the inbox), and then deletes the messages from the phone store. 
 103.248 +
 103.249 +The first entry ID in aSelection must be the SMS service ID. All following 
 103.250 +entry IDs in the selection must then represent each message to be transferred. 
 103.251 +aParameter should contain a packaged TMsvId, which identifies the folder to 
 103.252 +which the messages in aSelection will be moved. 
 103.253 +
 103.254 +The command ESmsMtmCommandEnumeratePhoneStores must be called before using 
 103.255 +this command. 
 103.256 +
 103.257 +Pre v7.0, this was named ESmsMtmCommandMoveFromSim.
 103.258 +
 103.259 +@see	TSmsMtmCommand::ESmsMtmCommandEnumeratePhoneStores
 103.260 +*/
 103.261 +	ESmsMtmCommandMoveFromPhoneStore,  
 103.262 +
 103.263 +/**
 103.264 +Deletes the specified messages from the phone store.
 103.265 +
 103.266 +The first entry ID in aSelection must be the SMS service ID. All following 
 103.267 +entry IDs in the selection must then represent each message to be deleted. 
 103.268 +aParameter is not used.
 103.269 +
 103.270 +The command ESmsMtmCommandEnumeratePhoneStores must be called before using 
 103.271 +this command. 
 103.272 +
 103.273 +Pre v7.0, this was named ESmsMtmCommandDeleteFromSim.
 103.274 +
 103.275 +@see	TSmsMtmCommand::ESmsMtmCommandEnumeratePhoneStores
 103.276 +*/
 103.277 +	ESmsMtmCommandDeleteFromPhoneStore,  
 103.278 +
 103.279 +/**
 103.280 +Reads the SIM parameters.
 103.281 +
 103.282 +This should not be used in the CSmsClientMtm::InvokeAsyncFunctionL function. The
 103.283 +CSmsClientMtm::ReadSimParamsL function should be used to read the SIM parameters.
 103.284 +
 103.285 +@see	CSmsClientMtm::ReadSimParamsL
 103.286 +
 103.287 +@internalComponent
 103.288 +*/
 103.289 +	ESmsMtmCommandReadSimParams,
 103.290 +
 103.291 +/**
 103.292 +Writes the specified SIM parameters.
 103.293 +
 103.294 +This should not be used in the CSmsClientMtm::InvokeAsyncFunctionL function. The
 103.295 +CSmsClientMtm::WriteSimParamsL function should be used to write the SIM parameters.
 103.296 +
 103.297 +@see	CSmsClientMtm::WriteSimParamsL
 103.298 +
 103.299 +@internalComponent
 103.300 +*/
 103.301 +	ESmsMtmCommandWriteSimParams,
 103.302 +
 103.303 +/**
 103.304 +Copies the SMS messages identified in aSelection to the phone store.
 103.305 +
 103.306 +The first entry ID in aSelection must be the SMS service ID. All following 
 103.307 +entry IDs in the selection must then represent each message to be copied.
 103.308 +Single message with multiple recipients is copied onto SIM as multiple messages,
 103.309 +one message for each recipient.Copy/Move from SIM will result in multiple messages,
 103.310 +single message will not be reformed out of the mutiple messages on SIM.
 103.311 +
 103.312 +
 103.313 +Pre v7.0, this was named ESmsMtmCommandCopyToSim.
 103.314 +*/
 103.315 +	ESmsMtmCommandCopyToPhoneStore,  
 103.316 +
 103.317 +/**
 103.318 +Moves the SMS messages identified in aSelection to the phone store.
 103.319 +
 103.320 +The first entry ID in aSelection must be the SMS service ID. All following 
 103.321 +entry IDs in the selection must then represent each message to be moved.
 103.322 +SSingle message with multiple recipients is moved onto SIM as multiple messages,
 103.323 +one message for each recipient.Copy/Move from SIM will result in multiple messages,
 103.324 +single message will not be reformed out of the mutiple messages on SIM.
 103.325 +
 103.326 +
 103.327 +Pre v7.0, this was named ESmsMtmCommandMoveToSim.
 103.328 +*/
 103.329 +	ESmsMtmCommandMoveToPhoneStore
 103.330 +	};
 103.331 +
 103.332 +#endif	// __SMSCMDS_H__
   104.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   104.2 +++ b/epoc32/include/app/smtcmtm.h	Wed Mar 31 12:27:01 2010 +0100
   104.3 @@ -0,0 +1,154 @@
   104.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   104.5 +// All rights reserved.
   104.6 +// This component and the accompanying materials are made available
   104.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   104.8 +// which accompanies this distribution, and is available
   104.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  104.10 +//
  104.11 +// Initial Contributors:
  104.12 +// Nokia Corporation - initial contribution.
  104.13 +//
  104.14 +// Contributors:
  104.15 +//
  104.16 +// Description:
  104.17 +// SMTCPMTM.H
  104.18 +// Client MTM for the SMTP protocol
  104.19 +// 
  104.20 +//
  104.21 +
  104.22 +#if !defined (__SMTCMTM_H__)
  104.23 +#define __SMTCMTM_H__
  104.24 +
  104.25 +#if !defined (__E32BASE_H__)
  104.26 +#include <e32base.h>		// CActive, TFileName)
  104.27 +#endif
  104.28 +
  104.29 +#if !defined(__BADESCA_H__)
  104.30 +#include <badesca.h>
  104.31 +#endif
  104.32 +
  104.33 +#if !defined (__MSVAPI_H__)
  104.34 +#include <msvapi.h>
  104.35 +#endif
  104.36 +
  104.37 +#if !defined (__MTCLBASE_H__)
  104.38 +#include <mtclbase.h>
  104.39 +#endif
  104.40 +
  104.41 +#if !defined (__MIUTHDR_H__)
  104.42 +#include <miuthdr.h>
  104.43 +#endif
  104.44 +
  104.45 +#if !defined (__MIUTPARS_H__)
  104.46 +#include <miutpars.h>		//TImMessageField
  104.47 +#endif
  104.48 +
  104.49 +#if !defined (__MIUTMSG_H__)
  104.50 +#include <miutmsg.h>		//CImEmailMessage
  104.51 +#endif
  104.52 +
  104.53 +#if !defined (__SMTPSET_H__)
  104.54 +#include <smtpset.h>
  104.55 +#endif
  104.56 +
  104.57 +#if !defined (__SMTPCMDS_H__)
  104.58 +#include <smtpcmds.h>
  104.59 +#endif
  104.60 +
  104.61 +class CMsvEntry;
  104.62 +class CMtmDllRegistry;
  104.63 +class CRichText;
  104.64 +class TMsvEntry;
  104.65 +class CRegisteredMtmDll;
  104.66 +class CImSmtpSettings;
  104.67 +class CMsvSession;
  104.68 +class CImAttachmentWaiter;
  104.69 +
  104.70 +///////  Smtp Client MTM  /////////////////////////////////////////////////////////////////////////////
  104.71 +class CSmtpClientMtm : public CBaseMtm
  104.72 +/** SMTP client MTM interface.
  104.73 +
  104.74 +Most of the functions in this class are implementations of the virtual functions 
  104.75 +defined by the base class CBaseMtm. 
  104.76 +@publishedAll
  104.77 +@released
  104.78 +*/
  104.79 +	{
  104.80 +public:
  104.81 +	IMPORT_C static CSmtpClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
  104.82 +	~CSmtpClientMtm();
  104.83 +
  104.84 +	void SaveMessageL();
  104.85 +	void LoadMessageL();
  104.86 +
  104.87 +	IMPORT_C void StoreSettingsL();
  104.88 +	IMPORT_C void RestoreSettingsL();
  104.89 +
  104.90 +	CMsvOperation* ReplyL  (TMsvId aReplyEntryId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus);
  104.91 +	CMsvOperation* ForwardL(TMsvId aForwardEntryId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
  104.92 +
  104.93 +	TMsvPartList ValidateMessage(TMsvPartList aPartList);
  104.94 +	TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
  104.95 +
  104.96 +	// addresssee list (used by objects with no MTM knowledge)
  104.97 +	void AddAddresseeL(const TDesC& aRealAddress);
  104.98 +	void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
  104.99 +	void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress);
 104.100 +	void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress, const TDesC& aAlias);
 104.101 +	void RemoveAddressee(TInt aIndex);
 104.102 +
 104.103 +	IMPORT_C void SetSettingsL(const CImSmtpSettings& aSettings);
 104.104 +	IMPORT_C const CImSmtpSettings& Settings() const; 
 104.105 +	IMPORT_C void SetSubjectL(const TDesC& aSubject);
 104.106 +	IMPORT_C const TPtrC SubjectL() const;
 104.107 +
 104.108 +	// --- RTTI functions ---
 104.109 +	TInt QueryCapability(TUid aCapability, TInt& aResponse);
 104.110 +	void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter);
 104.111 +	CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
 104.112 +
 104.113 +	// Attachment functions to support the SendAs API
 104.114 +	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 104.115 +	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 104.116 +	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 104.117 +	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
 104.118 +	IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 104.119 +	IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
 104.120 +
 104.121 +	IMPORT_C virtual TMsvId DefaultServiceL() const;
 104.122 +	IMPORT_C virtual void RemoveDefaultServiceL();
 104.123 +	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 104.124 +	IMPORT_C void CancelAttachmentOperation();
 104.125 +
 104.126 +protected:
 104.127 +	CSmtpClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
 104.128 +	void ConstructL();
 104.129 +	
 104.130 +	void ContextEntrySwitched(); // called after the context of this instance has been changed to another entry
 104.131 +private:
 104.132 +	TBool ValidateAddress(const TPtrC& anAddress);
 104.133 +	void ResetData();
 104.134 +
 104.135 +	void RestoreEmailMessageL();
 104.136 +	void StoreEmailMessageL();
 104.137 +	void SetAddresseeListL();
 104.138 +	void GetBodyTextL(CImEmailMessage& aMessage, TMsvId aMsvId);
 104.139 +	TInt32 GetAttachmentSizeL(CImEmailMessage& aMessage, TMsvId aMsvId);
 104.140 +	TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
 104.141 +
 104.142 +private:
 104.143 +	CMsvOperationActiveSchedulerWait* iWait;
 104.144 +	CImSmtpSettings* iImSmtpSettings;
 104.145 +	CImHeader* iHeader;
 104.146 +	HBufC* iSubject;
 104.147 +
 104.148 +	TImMessageField iTImMessageField;
 104.149 +	HBufC* iEmailAddressFormatString;	// defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>")
 104.150 +	CMsvEntrySelection* iEntrySelection;
 104.151 +	CImEmailOperation*	iImEmailOperation;
 104.152 +	CImAttachmentWaiter* iAttachmentWaiter;
 104.153 +	CImEmailMessage* iEmailMessage;
 104.154 +	};
 104.155 +
 104.156 +
 104.157 +#endif // __SMTCMTM_H__
   105.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   105.2 +++ b/epoc32/include/app/smtpcmds.h	Wed Mar 31 12:27:01 2010 +0100
   105.3 @@ -0,0 +1,56 @@
   105.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   105.5 +// All rights reserved.
   105.6 +// This component and the accompanying materials are made available
   105.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   105.8 +// which accompanies this distribution, and is available
   105.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  105.10 +//
  105.11 +// Initial Contributors:
  105.12 +// Nokia Corporation - initial contribution.
  105.13 +//
  105.14 +// Contributors:
  105.15 +//
  105.16 +// Description:
  105.17 +//
  105.18 +
  105.19 +#if !defined (__SMTPCMDS_H__)
  105.20 +#define __SMTPCMDS_H__
  105.21 +
  105.22 +#if !defined (__MSVSTD_HRH__)
  105.23 +#include <msvstd.hrh>
  105.24 +#endif
  105.25 +
  105.26 +/** SMTP-specific commands that can be issued through CSmtpClientMtm::InvokeAsyncFunctionL(). 
  105.27 +@publishedAll
  105.28 +@released
  105.29 +*/
  105.30 +enum TSmtpCmds 
  105.31 +	{
  105.32 +	/** Not supported. */
  105.33 +	KSMTPMTMIsConnected = KMtmFirstFreeMtmFunctionId,
  105.34 +	/** Send messages on next connection.
  105.35 +	
  105.36 +	The first entry in aSelection specifies the SMTP service entry that is to 
  105.37 +	be used to send the email messages. aSelection may contain only one entry 
  105.38 +	ID. The SMTP MTM will append the Ids of all "ready" email messages which exist 
  105.39 +	in the outbox that match the IAP of the specified SMTP service. Whether an 
  105.40 +	email message is "ready" is determined from its TMsvEntry::SendingState() 
  105.41 +	flag.
  105.42 +	
  105.43 +	If an Internet connection has already been established by another client, 
  105.44 +	then this function may fail with KSmtpNoMsgsToSendWithActiveSettings if none 
  105.45 +	of the messages specified in aSelection match the IAP currently in use. */
  105.46 +	KSMTPMTMSendOnNextConnection,
  105.47 +	/** Creates a new message. */
  105.48 +	KSMTPMTMCreateNewEmailMessage,
  105.49 +	/** Creates a new reply message. */
  105.50 +	KSMTPMTMCreateReplyEmailMessage,
  105.51 +	/** Creates a new forwarded message. */
  105.52 +	KSMTPMTMCreateForwardEmailMessage,
  105.53 +	/** Creates a new forwarded message as an attachment. */
  105.54 +	KSMTPMTMCreateForwardAsAttachmentEmailMessage,
  105.55 +	/** Creates a new message-receipt message. */
  105.56 +	KSMTPMTMCreateReceiptEmailMessage
  105.57 +	};
  105.58 +
  105.59 +#endif
   106.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   106.2 +++ b/epoc32/include/app/smtpset.h	Wed Mar 31 12:27:01 2010 +0100
   106.3 @@ -0,0 +1,325 @@
   106.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   106.5 +// All rights reserved.
   106.6 +// This component and the accompanying materials are made available
   106.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   106.8 +// which accompanies this distribution, and is available
   106.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  106.10 +//
  106.11 +// Initial Contributors:
  106.12 +// Nokia Corporation - initial contribution.
  106.13 +//
  106.14 +// Contributors:
  106.15 +//
  106.16 +// Description:
  106.17 +//
  106.18 +
  106.19 +#if !defined (__SMTPSET_H__)
  106.20 +#define __SMTPSET_H__
  106.21 +
  106.22 + 
  106.23 +#include <msvuids.h>
  106.24 +#include <miutset.h>
  106.25 +
  106.26 +/** Default SMTP server port number.*/
  106.27 +const TUint32 KSMTPDefaultPortNumber = 25;
  106.28 +
  106.29 +/** Default/maximum addresses to include in body header of reply/forward messages */
  106.30 +const TInt KSmtpToCcIncludeLimitDefault = 0;
  106.31 +const TInt KSmtpToCcIncludeLimitMax = KMaxTInt;
  106.32 +
  106.33 +
  106.34 +/**
  106.35 +Defines options that allows the user to automatically email themselves a copy 
  106.36 +of all emails that are sent from the phone.
  106.37 +
  106.38 +@see CImSmtpSettings::SendCopyToSelf() 
  106.39 +
  106.40 +@publishedAll
  106.41 +@released
  106.42 +*/
  106.43 +enum TImSMTPSendCopyToSelf
  106.44 +	{
  106.45 +	/** Do not send a copy. */
  106.46 +	ESendNoCopy,
  106.47 +	/** Send a copy, with the user's address added to the To address list. */
  106.48 +	ESendCopyAsToRecipient,
  106.49 +	/** Send a copy, with the user's address added to the Cc: address list. */
  106.50 +	ESendCopyAsCcRecipient,
  106.51 +	/** Send a copy, with the user's address added to the Bcc: address list. */
  106.52 +	ESendCopyAsBccRecipient
  106.53 +	};
  106.54 +/**
  106.55 +Defines sending options for new email messages.
  106.56 +
  106.57 +The option has no direct effect on the SMTP MTM, although messages in the 
  106.58 +outbox which are marked as ESendMessageOnNextConnection or ESendMessageImmediately 
  106.59 +will be appended automatically to the list of messages supplied by the client 
  106.60 +when either CBaseServerMtm::CopyFromLocal() or CBaseServerMtm::MoveFromLocal() 
  106.61 +are called. 
  106.62 +
  106.63 +@publishedAll
  106.64 +@released
  106.65 +*/
  106.66 +enum TImSMTPSendMessageOption
  106.67 +	{
  106.68 +	/** Send message immediately. */
  106.69 +	ESendMessageImmediately,
  106.70 +	/** Send message when the next connection occurs. */
  106.71 +	ESendMessageOnNextConnection,
  106.72 +	/** Send message only when the user requests this. */
  106.73 +	ESendMessageOnRequest
  106.74 +	};
  106.75 +
  106.76 +/**
  106.77 +Defines status values for the SMTP MTM. 
  106.78 +
  106.79 +@publishedAll
  106.80 +@released
  106.81 +*/
  106.82 +enum TMsgImOutboxSendState
  106.83 +	{
  106.84 +	/** Idle. */
  106.85 +	EMsgOutboxProgressWaiting,
  106.86 +	/** Connecting to server. */
  106.87 +	EMsgOutboxProgressConnecting,
  106.88 +	/** Sending messages. */
  106.89 +	EMsgOutboxProgressSending,
  106.90 +	/** Sending complete. */
  106.91 +	EMsgOutboxProgressDone
  106.92 +	};
  106.93 +
  106.94 +/** Sending state for SMTP. 
  106.95 +
  106.96 +@publishedAll
  106.97 +@released
  106.98 +*/
  106.99 +enum TSmtpSessionState
 106.100 +	{
 106.101 +	/** Dialling, looking up DNS, or connecting to SMTP server. */
 106.102 +	EConnectingToSmtp,
 106.103 +	/** Waiting for the SMTP server to send welcome message. */
 106.104 +	EWaitingForReply,
 106.105 +	/** Sending HELO/EHLO command to the server. */
 106.106 +	EAuthorisingSmtp,
 106.107 +	/** Sending the STARTTLS command, if a secure connection was requested. */
 106.108 +	ESendingStarttls,
 106.109 +	/** Exchanging certificates with server, if a secure connection was requested. */
 106.110 +	ESettingSecurity,
 106.111 +	/** Sending a message to the server. */
 106.112 +	ESendingImail,
 106.113 +	/** Logging result. */
 106.114 +	ELogDataEvent,
 106.115 +	/** Disconnecting from the SMTP server. */
 106.116 +	EClosingSmtp,
 106.117 +	/** AUTH in progress. */
 106.118 +	EAuthInProgress,
 106.119 +	/** RSET in progress. */
 106.120 +	EResetSmtp
 106.121 +	};
 106.122 +
 106.123 +class TImImailFileProgress				
 106.124 +/** 
 106.125 +Status information about the SMTP message which is being sent. 
 106.126 +
 106.127 +@publishedAll
 106.128 +@released
 106.129 +*/
 106.130 +	{
 106.131 +public:
 106.132 +	/**
 106.133 +	Amount of data from the message already sent to the server in bytes.
 106.134 +	
 106.135 +	Note that the SMTP MTM encodes the text and binary data inside an email message 
 106.136 +	while it is sending the data. As a result, iBytesToSend is likely to increase 
 106.137 +	(by as much as one third) while a message is being sent. The size increase 
 106.138 +	represents all additional bytes which have been added to the RFC 822 message 
 106.139 +	to encode the data.
 106.140 +	*/
 106.141 +	TInt				iBytesSent;
 106.142 +	/** Amount of data from the message still to be sent to the server in bytes. */
 106.143 +	TInt				iBytesToSend;
 106.144 +	/** Sending state. */
 106.145 +	TSmtpSessionState	iSessionState;
 106.146 +	};
 106.147 +
 106.148 +class TImSmtpProgress
 106.149 +/**
 106.150 +Progress information for SMTP operations on the Internet Mail MTM.
 106.151 +
 106.152 +The information is obtained through calling CMsvOperation::Progress() 
 106.153 +on the operation. It is packaged into an 8-bit descriptor. 
 106.154 +
 106.155 +Messaging clients use the getter functions to get various types
 106.156 +of information about an operation's progress. The setter functions
 106.157 +are for use by the MTM.
 106.158 +
 106.159 +@publishedAll
 106.160 +@released
 106.161 +*/
 106.162 +	{
 106.163 +
 106.164 +public:
 106.165 +	IMPORT_C TMsgImOutboxSendState	Status() const; // Progress: current progress status of mail session
 106.166 +	IMPORT_C TInt MsgNo() const;		            // Progress: No. of message currently being sent; zero=1st message
 106.167 +	IMPORT_C TInt Error() const;			        // Summary: completion code from end of last session
 106.168 +	IMPORT_C TInt Sent() const;			            // Summary: No. messages sent successfully
 106.169 +	IMPORT_C TInt NotSent() const;		            // Summary: No. messages I didn't attempt to send
 106.170 +	IMPORT_C TInt FailedToSend() const;	            // Summary: No. messages attempted to send but failed
 106.171 +	IMPORT_C TInt SendTotal() const;		        // Sent() + NotSent() + FailedToSend() = SendTotal()
 106.172 +	IMPORT_C void SetError(TInt anError);
 106.173 +	IMPORT_C void SetStatus(TMsgImOutboxSendState aStatus);
 106.174 +	IMPORT_C void SetMsgNo(TInt aMsgNo);
 106.175 +	IMPORT_C void InitialiseTotal(const TInt& aTotal);
 106.176 +	IMPORT_C void UpdateSent();
 106.177 +	IMPORT_C void UpdateFailedToSend();
 106.178 +	IMPORT_C void DecrementSendTotal();
 106.179 +	IMPORT_C TMsvId	ServiceId() const;
 106.180 +	IMPORT_C void SetServiceId(TMsvId aServiceId);
 106.181 +	IMPORT_C TInt ConnectionState() const;
 106.182 +	IMPORT_C TInt ConnectionIAP() const;
 106.183 +	IMPORT_C void SetConnectionIAP(TInt aConnectionIAP);
 106.184 +
 106.185 +public:
 106.186 +	/** Status information about the message that is currently being sent (if 
 106.187 +	sending is in progress). */
 106.188 +	TImImailFileProgress			iSendFileProgress;
 106.189 +
 106.190 +private:
 106.191 +	TMsgImOutboxSendState	iStatus;
 106.192 +	TInt					iError;
 106.193 +	TInt					iMsgNo;
 106.194 +	TInt					iSent;
 106.195 +	TInt					iNotSent;
 106.196 +	TInt					iFailedToSend;
 106.197 +	TInt					iSendTotal;
 106.198 +	TMsvId					iServiceId;
 106.199 +	};
 106.200 +
 106.201 +class CImSmtpSettings : public CImBaseEmailSettings
 106.202 +/**
 106.203 +Run-time configuration settings for an SMTP account.
 106.204 +
 106.205 +Messaging clients should use an instance of this class to specify
 106.206 +and retrieve configuration settings that are used by the SMTP service when
 106.207 +executing email operations.  
 106.208 +
 106.209 +Service settings such as the email body encoding, reply address, character set,
 106.210 +and whether to attach a signature or vCard can be specified using this class.
 106.211 +Storing and restoring from the message store is also supported.
 106.212 +
 106.213 +To use this class to change a setting:
 106.214 +
 106.215 +1) Set the current context to the SMTP service entry using CMsvStore.
 106.216 +
 106.217 +2) Create an instance of CImSmtpSettings and put it on the cleanup stack.
 106.218 +
 106.219 +3) Retrieve the existing settings by calling CImSmtpSettings::RestoreL().
 106.220 +
 106.221 +4) Specify whether to add a vCard to outbound email by calling CImSmtpSettings::SetAddVCardToEmail().
 106.222 +
 106.223 +5) Save the new settings by calling CImSmtpSettings::StoreL().
 106.224 +
 106.225 +6) Pop and destroy the CImSmtpSettings instance.
 106.226 +
 106.227 +@see CMsvStore
 106.228 +
 106.229 +@publishedAll
 106.230 +@released
 106.231 +*/
 106.232 +	{
 106.233 +public:
 106.234 +	IMPORT_C CImSmtpSettings();
 106.235 +	IMPORT_C virtual ~CImSmtpSettings();
 106.236 +	IMPORT_C void Reset();
 106.237 +	IMPORT_C const TPtrC EmailAlias() const;
 106.238 +	IMPORT_C void SetEmailAliasL(const TDesC& aEmailAlias);
 106.239 +	IMPORT_C const TPtrC EmailAddress() const;
 106.240 +	IMPORT_C void SetEmailAddressL(const TDesC& aEmailAddress);
 106.241 +	IMPORT_C const TPtrC ReplyToAddress() const;
 106.242 +	IMPORT_C void SetReplyToAddressL(const TDesC& aReplyToAddress);
 106.243 +	IMPORT_C const TPtrC ReceiptAddress() const;
 106.244 +	IMPORT_C void SetReceiptAddressL(const TDesC& aReceiptAddress);
 106.245 +	IMPORT_C TMsgOutboxBodyEncoding BodyEncoding() const;
 106.246 +	IMPORT_C void SetBodyEncoding(TMsgOutboxBodyEncoding aBodyEncoding);
 106.247 +	IMPORT_C const TUid DefaultMsgCharSet() const;
 106.248 +	IMPORT_C void SetDefaultMsgCharSet(TUid aDefaultMsgCharSet);
 106.249 +	IMPORT_C TBool AddVCardToEmail() const;
 106.250 +	IMPORT_C void SetAddVCardToEmail(TBool aFlag);
 106.251 +	IMPORT_C TBool AddSignatureToEmail() const;
 106.252 +	IMPORT_C void SetAddSignatureToEmail(TBool aFlag);
 106.253 +	IMPORT_C TBool RequestReceipts() const;
 106.254 +	IMPORT_C void SetRequestReceipts(TBool aFlag);
 106.255 +	IMPORT_C TImSMTPSendCopyToSelf SendCopyToSelf() const;
 106.256 +	IMPORT_C void SetSendCopyToSelf(TImSMTPSendCopyToSelf aSendCopyToSelf);
 106.257 +	IMPORT_C TImSMTPSendMessageOption SendMessageOption() const;
 106.258 +	IMPORT_C void SetSendMessageOption(TImSMTPSendMessageOption aSendMessageOption);
 106.259 +	IMPORT_C CImSmtpSettings& CopyL(const CImSmtpSettings& aCImSmtpSettings);
 106.260 +	IMPORT_C TBool operator==(const CImSmtpSettings& aCImSmtpSettings) const;
 106.261 +	IMPORT_C const TPtrC8 LoginName() const;
 106.262 +	IMPORT_C void SetLoginNameL(const TDesC8&);
 106.263 +	IMPORT_C const TPtrC8 Password() const;
 106.264 +	IMPORT_C void SetPasswordL(const TDesC8&);
 106.265 +	IMPORT_C TBool SMTPAuth() const;
 106.266 +	IMPORT_C void SetSMTPAuth(TBool aFlag);
 106.267 +	IMPORT_C TBool InboxLoginDetails() const;
 106.268 +	IMPORT_C void SetInboxLoginDetails(TBool aFlag);
 106.269 +	IMPORT_C TInt ToCcIncludeLimit() const;
 106.270 +	IMPORT_C void SetToCcIncludeLimitL(TInt aLimit);
 106.271 +	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
 106.272 +	IMPORT_C TPtrC8 TlsSslDomain() const;
 106.273 +
 106.274 +private:
 106.275 +	class TImSmtpSettingsExtension
 106.276 +		{
 106.277 +	public:
 106.278 +		inline TImSmtpSettingsExtension();
 106.279 +	public:
 106.280 +		HBufC*	iReceiptAddress;
 106.281 +		HBufC8* iLoginName;
 106.282 +		HBufC8* iPassword;
 106.283 +		HBufC8*	iTlsSslDomain;
 106.284 +		TInt	iToCcIncludeLimit;
 106.285 +		};
 106.286 +
 106.287 +	inline TImSmtpSettingsExtension* Extension() const;
 106.288 +	inline void CheckExtensionExistsL();
 106.289 +
 106.290 +private:
 106.291 +	enum TImSMTPEmailSettings
 106.292 +		{
 106.293 +		KSmtpSettingsClearFlag				= 0x00000000,
 106.294 +		KSmtpBaseEmailSettingsLastUsedFlag	= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag,	//0x00000002
 106.295 +		KSmtpAddVCardToEmailFlag			= KSmtpBaseEmailSettingsLastUsedFlag << 1,	//0x00000004
 106.296 +		KSmtpAddSignatureToEmailFlag		= KSmtpAddVCardToEmailFlag << 1,			//0x00000008
 106.297 +		KSmtpRequestReceipts				= KSmtpAddSignatureToEmailFlag << 1,		//0x00000010
 106.298 +		KSmtpSmtpAuthFlag					= KSmtpRequestReceipts << 1,				//0x00000020
 106.299 +		KSmtpInboxLoginDetails				= KSmtpSmtpAuthFlag << 1,					//0x00000040
 106.300 +		KSmtpEmailSettingsLastUsedFlag		= KSmtpInboxLoginDetails					//0x00000040
 106.301 +		};
 106.302 +
 106.303 +	HBufC*						iEmailAlias;
 106.304 +	HBufC*						iEmailAddress;
 106.305 +	HBufC*						iReplyToAddress;
 106.306 +	TImSmtpSettingsExtension*	iExtension; // renamed iReceiptAddress
 106.307 +	TMsgOutboxBodyEncoding		iBodyEncoding;
 106.308 +	TUid						iDefaultMsgCharSet;
 106.309 +	TImSMTPSendCopyToSelf		iSendCopyToSelf;
 106.310 +	TImSMTPSendMessageOption	iSendMessageOption;
 106.311 +	};
 106.312 +	
 106.313 +inline CImSmtpSettings::TImSmtpSettingsExtension* CImSmtpSettings::Extension() const
 106.314 +	{
 106.315 +	return iExtension;
 106.316 +	}
 106.317 +
 106.318 +inline void CImSmtpSettings::CheckExtensionExistsL()
 106.319 +	{
 106.320 +	if (!iExtension)
 106.321 +		iExtension=new (ELeave) CImSmtpSettings::TImSmtpSettingsExtension;
 106.322 +	}
 106.323 +
 106.324 +inline CImSmtpSettings::TImSmtpSettingsExtension::TImSmtpSettingsExtension() : iReceiptAddress(NULL),iLoginName(NULL),iPassword(NULL),iTlsSslDomain(NULL),iToCcIncludeLimit(KSmtpToCcIncludeLimitDefault)
 106.325 +	{
 106.326 +	}
 106.327 +
 106.328 +#endif    // #define __SMTPSET_H__
   107.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   107.2 +++ b/epoc32/include/app/smut.h	Wed Mar 31 12:27:01 2010 +0100
   107.3 @@ -0,0 +1,154 @@
   107.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   107.5 +// All rights reserved.
   107.6 +// This component and the accompanying materials are made available
   107.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   107.8 +// which accompanies this distribution, and is available
   107.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  107.10 +//
  107.11 +// Initial Contributors:
  107.12 +// Nokia Corporation - initial contribution.
  107.13 +//
  107.14 +// Contributors:
  107.15 +//
  107.16 +// Description:
  107.17 +//
  107.18 +
  107.19 +#ifndef __SMUT_H__
  107.20 +#define __SMUT_H__
  107.21 +
  107.22 +#include <msvstd.h>
  107.23 +#include <msvids.h>
  107.24 +#include <barsc.h>
  107.25 +
  107.26 +class CSmsMessage;
  107.27 +class CContactItemField;
  107.28 +class TResourceReader;
  107.29 +class CMsvSession;
  107.30 +class CMsvServerEntry;
  107.31 +class CMsvEntry;
  107.32 +class CSmsSettings;
  107.33 +
  107.34 +/**
  107.35 +The SMS MTM UID.
  107.36 +
  107.37 +Used to identify the MTMs used for handling SMS messages.
  107.38 +
  107.39 +@publishedAll
  107.40 +@released
  107.41 +*/
  107.42 +const TUid KUidMsgTypeSMS			= {0x1000102C};
  107.43 +
  107.44 +/**
  107.45 +The default maximum length used when extracting a description for an SMS message.
  107.46 +
  107.47 +Used as default value of aMaxLength in TSmsUtilities::GetDescription. This
  107.48 +function is used to extract a string to used as a suitable description field in
  107.49 +the message index for a particular SMS message.
  107.50 +
  107.51 +The CSmsSettings provides accessors to get and set the preferred maximum
  107.52 +description length.
  107.53 +
  107.54 +@deprecated
  107.55 +This should not really be used outside of the SMS client MTM. The value provided
  107.56 +by the CSmsSettings class should be used.
  107.57 +
  107.58 +@see	CSmsSettings::GetDescriptionLength
  107.59 +*/
  107.60 +const TInt KSmsDescriptionLength	= 32;
  107.61 +
  107.62 +/**
  107.63 +The default maximum length used when extracting the sender/recipiant details for
  107.64 +an SMS message.
  107.65 +
  107.66 +Used as default value of aMaxLength in TSmsUtilities::GetDetails. This function
  107.67 +is used to extract a string to used as the details field in the message index
  107.68 +for a particular SMS message.
  107.69 +
  107.70 +@deprecated
  107.71 +This should really be used at all.
  107.72 +*/
  107.73 +const TInt KSmsDetailsLength		= 32;
  107.74 +
  107.75 +_LIT(KSmsResourceFile, "\\resource\\messaging\\SMSS.RSC");
  107.76 +
  107.77 +/**
  107.78 +SMS Messaging utility functions.
  107.79 +
  107.80 +@publishedAll
  107.81 +@released
  107.82 +*/
  107.83 +class TSmsUtilities
  107.84 +	{
  107.85 +public:
  107.86 +
  107.87 +/**
  107.88 +Special SMS Message Indication Type.
  107.89 +
  107.90 +A special SMS message indication is used to notify of waiting services, for
  107.91 +instance a voicemail message.
  107.92 +
  107.93 +The TSmsUtilitiesSpecialMessageType enum represents the flags for the known
  107.94 +indication types.
  107.95 +*/
  107.96 +	enum TSmsUtilitiesSpecialMessageType
  107.97 +		{
  107.98 +/**
  107.99 +Voice message waiting.
 107.100 +*/
 107.101 +		EVoiceMessageWaiting = 0,
 107.102 +/**
 107.103 +Fax message waiting.
 107.104 +*/
 107.105 +		EFaxMessageWaiting,
 107.106 +/**
 107.107 +E-mail message waiting.
 107.108 +*/
 107.109 +		EEmailMessageWaiting,
 107.110 +/**
 107.111 +Other message-type waiting (see 3GPP TS 23.038 [9] for definition of "other").
 107.112 +*/
 107.113 +		EOtherMessageWaiting,
 107.114 +/**
 107.115 +Mask used to obtain the mesasge indication type from the SMS data.
 107.116 +*/
 107.117 +		ESpecialMessageTypeMask = 0x7F
 107.118 +		};
 107.119 +
 107.120 +	/**
 107.121 +	@internalComponent
 107.122 +	@removed
 107.123 +	*/
 107.124 +	IMPORT_C void Dummy_Export_1();
 107.125 +	/**
 107.126 +	@internalComponent
 107.127 +	@removed
 107.128 +	*/
 107.129 +	IMPORT_C void Dummy_Export_2();
 107.130 +
 107.131 +	IMPORT_C static void ServiceIdL(CMsvServerEntry& aEntry, TMsvId& aFirstId, TUid aMtm = KUidMsgTypeSMS, CMsvEntrySelection* aServiceIds = NULL);
 107.132 +	IMPORT_C static void ServiceIdL(CMsvEntry& aEntry, TMsvId& aFirstId, TUid aMtm = KUidMsgTypeSMS, CMsvEntrySelection* aServiceIds = NULL);
 107.133 +	IMPORT_C static void ServiceIdL(CMsvSession& aSession, TMsvId& aFirstId, TUid aMtm = KUidMsgTypeSMS, CMsvEntrySelection* aServiceIds = NULL); //more efficient version of the previous one
 107.134 +
 107.135 +	IMPORT_C static void PopulateMsgEntry(TMsvEntry& aEntry, const CSmsMessage& aMessage, TMsvId aServiceId, TUid aMtm = KUidMsgTypeSMS);
 107.136 +	IMPORT_C static void PopulateMsgEntry(TMsvEntry& aEntry, const CSmsMessage& aMessage, TMsvId aServiceId, const CSmsSettings& aSettings, TUid aMtm = KUidMsgTypeSMS);
 107.137 +
 107.138 +	IMPORT_C static TInt GetDetails(RFs& aFs, const CSmsMessage& aMessage, TDes& aDetails, TInt aMaxLength = KSmsDetailsLength);
 107.139 +	IMPORT_C static TInt GetDetails(RFs& aFs, const TDesC& aFromAddress, TDes& aDetails, TInt aMaxLength = KSmsDetailsLength);
 107.140 +	IMPORT_C static TInt GetDescription(const CSmsMessage& aMessage, TDes& aDescription, TInt aMaxLength = KSmsDescriptionLength);
 107.141 +
 107.142 +	IMPORT_C static RResourceFile OpenResourceFileL(RFs& aFs);
 107.143 +	IMPORT_C static void ReadResourceStringL(RResourceFile aResourceFile, TInt aResourceId, TDes& aString);
 107.144 +
 107.145 +private:
 107.146 +	static void CompareEntryL(const TMsvEntry& aEntry, TUid aMtm, TMsvId& aFirstId, CMsvEntrySelection* aServiceIds);
 107.147 +	static void GetName(CContactItemField& aField, TUid aFieldType, TDes& aName);
 107.148 +	static void DoGetDetailsL(RFs& aFs, const TDesC& aFromAddress, TDes& aDetails, TInt aMaxLength);
 107.149 +	static void Replace(const TDesC& aOld, const TDesC& aNew, TDes& aString);
 107.150 +
 107.151 +	static TBool DoGetDescriptionL(const CSmsMessage& aMessage, TDes& aDescription, TInt aMaxLength);
 107.152 +	static void ExtractDescriptionFromMessage(const CSmsMessage& aMessage, TDes& aDescription, TInt aMaxLength);
 107.153 +
 107.154 +	static TBool ValidGsmNumber(const TDesC& aTelephone);
 107.155 +	};
 107.156 +
 107.157 +#endif	// __SMUT_H__
   108.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   108.2 +++ b/epoc32/include/app/smuthdr.h	Wed Mar 31 12:27:01 2010 +0100
   108.3 @@ -0,0 +1,270 @@
   108.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   108.5 +// All rights reserved.
   108.6 +// This component and the accompanying materials are made available
   108.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   108.8 +// which accompanies this distribution, and is available
   108.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  108.10 +//
  108.11 +// Initial Contributors:
  108.12 +// Nokia Corporation - initial contribution.
  108.13 +//
  108.14 +// Contributors:
  108.15 +//
  108.16 +// Description:
  108.17 +//
  108.18 +
  108.19 +#ifndef __SMUTHDR_H__
  108.20 +#define __SMUTHDR_H__
  108.21 +
  108.22 +#include <e32base.h>
  108.23 +#include <gsmubuf.h>
  108.24 +#include <bif.h>
  108.25 +#include <gsmupdu.h>
  108.26 +#include <msvstd.h>
  108.27 +#include <smutset.h>
  108.28 +
  108.29 +class RMsvReadStream;
  108.30 +class RMsvWriteStream;
  108.31 +class CMsvStore;
  108.32 +class CSmsEmailFields;
  108.33 +
  108.34 +/** 
  108.35 +The SMS MTM encapsulation of an SMS message.
  108.36 +
  108.37 +This class allows a messaging client to access the lower-level message encapsulation 
  108.38 +used by the SMS stack.
  108.39 +
  108.40 +It also provides functionality to restore and store an SMS message from/to the
  108.41 +message store.
  108.42 +
  108.43 +An SMS message is encapsulated in a Protocol Data Unit (PDU). In GSM there are 
  108.44 +six types of SMS message PDU. In the descriptions below, SC means Service Center 
  108.45 +and MS means Mobile Station (the phone).
  108.46 +
  108.47 +1. SMS-DELIVER - sent from SC to MS
  108.48 +
  108.49 +2. SMS-DELIVER-REPORT - sent from MS to SC
  108.50 +
  108.51 +3. SMS-SUBMIT - sent from MS to SC
  108.52 +
  108.53 +4. SMS-SUBMIT-REPORT - sent from SC to MS
  108.54 +
  108.55 +5. SMS-STATUS-REPORT - sent from SC to MS
  108.56 +
  108.57 +6. SMS-COMMAND - sent from MS to SC
  108.58 +
  108.59 +@publishedAll
  108.60 +@released
  108.61 +*/
  108.62 +class CSmsHeader : public CBase
  108.63 +	{
  108.64 +public:
  108.65 +
  108.66 +	IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText);
  108.67 +	IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText,RFs& aFs);
  108.68 +	IMPORT_C static CSmsHeader* NewL(CSmsMessage* aMessage);
  108.69 +	IMPORT_C ~CSmsHeader();
  108.70 +
  108.71 +	inline CSmsPDU::TSmsPDUType Type() const;
  108.72 +
  108.73 +	inline CSmsSubmit& Submit();
  108.74 +	inline const CSmsSubmit& Submit() const;
  108.75 +	inline CSmsDeliver& Deliver();
  108.76 +	inline const CSmsDeliver& Deliver() const;
  108.77 +	inline CSmsCommand& Command();
  108.78 +	inline const CSmsCommand& Command() const;
  108.79 +	inline CSmsStatusReport& StatusReport();
  108.80 +	inline const CSmsStatusReport& StatusReport() const;
  108.81 +	
  108.82 +	inline CSmsMessage& Message();
  108.83 +	inline const CSmsMessage& Message() const;
  108.84 +
  108.85 +	inline TBool ReplyPathProvided() const;
  108.86 +	inline void SetReplyPathProvided(TBool aReplyPathProvided);
  108.87 +
  108.88 +	inline TBioMsgIdType BioMsgIdType() const;
  108.89 +	inline void SetBioMsgIdType(TBioMsgIdType aBioMsgIdType = EBioMsgIdNbs);
  108.90 +	
  108.91 +	inline TPtrC ServiceCenterAddress() const;
  108.92 +	inline void SetServiceCenterAddressL(const TDesC& aAddress);
  108.93 +
  108.94 +	IMPORT_C void SetSmsSettingsL(const CSmsMessageSettings& aSmsSettings);
  108.95 +	IMPORT_C void GetSmsSettingsL(CSmsMessageSettings& aSmsSettings) const;
  108.96 +
  108.97 +	inline const CArrayPtrFlat<CSmsNumber>& Recipients() const;
  108.98 +	inline CArrayPtrFlat<CSmsNumber>& Recipients();
  108.99 +
 108.100 +	inline void SetFromAddressL(const TDesC& aAddress);
 108.101 +	inline TPtrC FromAddress() const;
 108.102 +	
 108.103 +	TPtrC ReplyAddressL() const;
 108.104 +	
 108.105 +	IMPORT_C void SetEmailFieldsL(const CSmsEmailFields& aEmailFields);
 108.106 +	void SetReplyEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aReplySubjectFormat);
 108.107 +	void SetForwardEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aForwardSubjectFormat);
 108.108 +	IMPORT_C const CSmsEmailFields& EmailFields() const;
 108.109 +
 108.110 +	IMPORT_C void InternalizeL( RMsvReadStream& aStream);
 108.111 +	IMPORT_C void ExternalizeL( RMsvWriteStream& aStream) const;
 108.112 +
 108.113 +	IMPORT_C void RestoreL(CMsvStore& aStore);
 108.114 +	IMPORT_C void StoreL(CMsvStore& aStore) const;
 108.115 +
 108.116 +	IMPORT_C  TBool ContainsSmsHeaderL(const CMsvStore& aStore); 
 108.117 +	
 108.118 +private:
 108.119 +	CSmsHeader(CSmsMessage* aSmsMessage = NULL);
 108.120 +	void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText);
 108.121 +	void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText, RFs& aFs);
 108.122 +	void ConstructL();
 108.123 +
 108.124 +	enum TSmsHeaderFlags
 108.125 +		{
 108.126 +		ESmsHeaderNoFlags			= 0x00,
 108.127 +		ESmsHeaderReplyPathProvided = 0x01,
 108.128 +		ESmsHeaderCanConcatenate	= 0x02
 108.129 +		};
 108.130 +
 108.131 +	TBool CanConcatenate() const;
 108.132 +	void SetCanConcatenate(TBool aCanConcatenate);
 108.133 +	
 108.134 +	void SetEmailReplyForwardSubjectL(CSmsEmailFields* aEmailFields, const TDesC& aSubject, const TDesC& aSubjectFormat);
 108.135 +	
 108.136 +private:
 108.137 +	CArrayPtrFlat<CSmsNumber> iRecipients;
 108.138 +	CSmsMessage* iMessage;
 108.139 +	TUint32 iFlags;
 108.140 +	RFs iFs;
 108.141 +
 108.142 +	// iBioMsgIdType is only used during sending and will be ignored if the 
 108.143 +	// TMsvEntry.iBioType == 0. The default is EBioMsgIdNbs.
 108.144 +	TBioMsgIdType iBioMsgIdType;
 108.145 +	CSmsEmailFields*	iEmailFields;
 108.146 +	TBool			iCloseFs;
 108.147 +	};
 108.148 +	
 108.149 +/**
 108.150 +A specialisation of the message server index class for SMS message entries.
 108.151 +
 108.152 +It provides accessers for SMS message specific data, for instance the class type
 108.153 +of the SMS message.
 108.154 +
 108.155 +@publishedPartner
 108.156 +@released
 108.157 +*/
 108.158 +class TMsvSmsEntry : public TMsvEntry
 108.159 +	{
 108.160 +public:
 108.161 +
 108.162 +/**
 108.163 +Defines a set flags used to access message entry data specific to an SMS message.
 108.164 +
 108.165 +@internalTechnology
 108.166 +@released
 108.167 +
 108.168 +*/
 108.169 +	enum TMsvSmsEntryFlags
 108.170 +		{
 108.171 +/**
 108.172 +Clears the entire set of SMS flags.
 108.173 +*/
 108.174 +		EMsvSmsEntryClearFlag				= 0x00000000,
 108.175 +/**
 108.176 +Mask for the protocol identifier data.
 108.177 +*/
 108.178 +		EMsvSmsEntryProtocolIdentifier		= 0x000000FF,
 108.179 +/**
 108.180 +Mask for the User Prompt Indicator flag.
 108.181 +*/
 108.182 +		EMsvSmsEntryUserPromptIndicator 	= 0x00000100,
 108.183 +/**
 108.184 +Mask for the SMS class data.
 108.185 +*/
 108.186 +		EMsvSmsEntryClass					= 0x00000E00,
 108.187 +/**
 108.188 +Mask for the flag indicating whether the class data has been defined.
 108.189 +*/
 108.190 +		EMsvSmsEntryClassDefined			= 0x00001000,
 108.191 +/**
 108.192 +Mask for the flag indicating whether the message ID is valid. 
 108.193 +*/
 108.194 +		EMsvSmsMessageValid					= 0x00002000,
 108.195 +/**
 108.196 +Mask for the delivery acknowledgement information.
 108.197 +*/
 108.198 +		EMsvSmsEntryDeliveryAckSummary		= 0x0001C000,
 108.199 +/**
 108.200 +Parameter defining the number of bits to be shifted in order for the SMS class
 108.201 +data to be at the LSB of the data block.
 108.202 +*/
 108.203 +		EMsvSmsEntryClassShift				= 9,
 108.204 +/**
 108.205 +Parameter defining the number of bits to be shifted in order for the delivery
 108.206 +acknowlwdgement information to be at the LSB of the data block.
 108.207 +*/
 108.208 +		EMsvSmsEntryDeliveryAckSummaryShift	= 14
 108.209 +		};
 108.210 +
 108.211 +/**
 108.212 +Defines the summary acknowledgement information.
 108.213 +
 108.214 +This information indicates whether the SMS message is not supplying a summary 
 108.215 +for an acknowledgement, is still expecting acknowledgments or it has received 
 108.216 +all expected acknowledgements.
 108.217 +
 108.218 +If all acknowledgements have been received the summary indicates whether all 
 108.219 +the recipients have successfully acknowledged the message, all failed or there
 108.220 +was a mixture of successful and failed acknowledgements from the recipients. 
 108.221 +*/
 108.222 +	enum TMsvSmsEntryAckSummary
 108.223 +		{
 108.224 +/**
 108.225 +No summary information is being formed.
 108.226 +*/
 108.227 +		ENoAckSummary			= 0,
 108.228 +/**
 108.229 +The message is waiting for acknowledgements to be received for all recipients
 108.230 +of this message. Some recipients may have received their acknowledgements but
 108.231 +there are still some recipients that have not.
 108.232 +*/
 108.233 +		EPendingAcks,
 108.234 +/**
 108.235 +The summary indicates that the message was successfully acknowledged by all recipients.
 108.236 +*/
 108.237 +		EAllSuccessful,
 108.238 +/**
 108.239 +The summary indicates that the message failed to be acknowledged by all recipients.
 108.240 +*/
 108.241 +		EAllFailed,
 108.242 +/**
 108.243 +The summary indicates a mixture of successful and failed acknowledgements from 
 108.244 +the recipients of the message. All recipients of this message have received 
 108.245 +their acknowledgements.
 108.246 +*/
 108.247 +		EMixed
 108.248 +		};
 108.249 +
 108.250 +public:
 108.251 +	inline TMsvSmsEntry();
 108.252 +	inline TMsvSmsEntry(const TMsvEntry& aEntry);
 108.253 +
 108.254 +	inline void SetUserPromptIndicator(TBool aUPI);
 108.255 +	inline TBool UserPromptIndicator() const;
 108.256 +
 108.257 +	inline TUint8 ProtocolIdentifier() const;
 108.258 +	inline void SetProtocolIdentifier(TSmsProtocolIdentifier aPID);
 108.259 +	inline void SetProtocolIdentifier(TUint8 aPID);
 108.260 +
 108.261 +	inline TBool Class(TSmsDataCodingScheme::TSmsClass& aClass) const;
 108.262 +	inline void SetClass(TBool aClassDefined,TSmsDataCodingScheme::TSmsClass aClass = TSmsDataCodingScheme::ESmsClass0);
 108.263 +
 108.264 +	IMPORT_C TMsvSmsEntryAckSummary AckSummary(TSmsAckType aAckType) const;
 108.265 +	IMPORT_C void SetAckSummary(TSmsAckType aAckType, TMsvSmsEntryAckSummary aAckSummary);
 108.266 +
 108.267 +	IMPORT_C TBool MessageId(TInt32& aMessageId) const;
 108.268 +	IMPORT_C void SetMessageId(TInt32 aMessageId, TBool aIsValid);
 108.269 +	};
 108.270 +
 108.271 +#include <smuthdr.inl>
 108.272 +
 108.273 +#endif	// __SMUTHDR_H__
   109.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   109.2 +++ b/epoc32/include/app/smutset.h	Wed Mar 31 12:27:01 2010 +0100
   109.3 @@ -0,0 +1,752 @@
   109.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   109.5 +// All rights reserved.
   109.6 +// This component and the accompanying materials are made available
   109.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   109.8 +// which accompanies this distribution, and is available
   109.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  109.10 +//
  109.11 +// Initial Contributors:
  109.12 +// Nokia Corporation - initial contribution.
  109.13 +//
  109.14 +// Contributors:
  109.15 +//
  109.16 +// Description:
  109.17 +//
  109.18 +
  109.19 +#ifndef __SMUTSET_H__
  109.20 +#define __SMUTSET_H__
  109.21 +
  109.22 + 
  109.23 +
  109.24 +
  109.25 +#include <gsmumsg.h>
  109.26 +#include <msvrcpt.h>
  109.27 +#include <msvstore.h>
  109.28 +#include <logwrap.h>
  109.29 +
  109.30 +class CSmsServiceCenter;
  109.31 +class CSmsEmailFields;
  109.32 +
  109.33 +// Both the recipient's number  and SC number (TP-Destination-Address and RP-Destination-Address) 
  109.34 +// can be 12 octets which means that there can be 21 characters (including + sign) in the number string. 
  109.35 +
  109.36 +/**
  109.37 +The maximum length of recipient's number.
  109.38 +
  109.39 +The number returned by CSmsNumber::Address() and CSmsServiceCenter::Address() is limited this maximum length.
  109.40 +
  109.41 +@see	CSmsNumber::Address
  109.42 +@see	CSmsServiceCenter::Address
  109.43 +
  109.44 +@publishedAll
  109.45 +@released
  109.46 +*/
  109.47 +const TInt KSmcmSmsNumberMaxNumberLength = 21;
  109.48 +
  109.49 +/**
  109.50 +The maximum length of recipient's name.
  109.51 +
  109.52 +The number returned by CSmsNumber::Name() and CSmsServiceCenter::Name() is limited this maximum length.
  109.53 +
  109.54 +@see	CSmsNumber::Name
  109.55 +@see	CSmsServiceCenter::Name
  109.56 +
  109.57 +@publishedAll
  109.58 +@released
  109.59 +*/
  109.60 +const TInt KSmcmSmsNumberMaxNameLength = 256;
  109.61 +
  109.62 +/** 
  109.63 +Defines the possible forms in which an SMS message should be delivered to the 
  109.64 +recipient by the service centre.
  109.65 +
  109.66 +The specified format may or may not actually be supported by the service centre. 
  109.67 +Note that the format of the recipient address(es) may need to be different 
  109.68 +to a normal telephone number if the conversion is set to any other value than 
  109.69 +ESmsConvPIDNone, ESmsConvFax, ESmsConvPaging or ESmsConvErmes. 
  109.70 +
  109.71 +@publishedAll
  109.72 +@released
  109.73 +*/
  109.74 +enum TSmsPIDConversion
  109.75 +		{
  109.76 +/**
  109.77 +No conversion (i.e. use SMS itself). 
  109.78 +*/
  109.79 +		ESmsConvPIDNone	= TSmsProtocolIdentifier::ESmsNoTelematicDevice,
  109.80 +/** 
  109.81 +Convert to fax. 
  109.82 +*/
  109.83 +		ESmsConvFax		= TSmsProtocolIdentifier::ESmsGroup3TeleFax,
  109.84 +/** 
  109.85 +Convert to X.400. 
  109.86 +*/
  109.87 +		ESmsConvX400	= TSmsProtocolIdentifier::ESmsX400MessageHandlingSystem,
  109.88 +/** 
  109.89 +Convert to pager message. 
  109.90 +*/
  109.91 +		ESmsConvPaging	= TSmsProtocolIdentifier::ESmsNationalPagingSystem,
  109.92 +/** 
  109.93 +Convert to Internet email. 
  109.94 +*/
  109.95 +		ESmsConvMail	= TSmsProtocolIdentifier::ESmsInternetElectronicMail,
  109.96 +/** 
  109.97 +Convert to ERMES paging. 
  109.98 +*/
  109.99 +		ESmsConvErmes	= TSmsProtocolIdentifier::ESmsERMES,
 109.100 +/**
 109.101 +Convert to sppech. 
 109.102 +*/
 109.103 +		ESmsConvSpeech	= TSmsProtocolIdentifier::ESmsVoiceTelephone
 109.104 +		};
 109.105 +
 109.106 +/**
 109.107 +Defines the set of possible validity periods for mobile originated messages.
 109.108 +
 109.109 +Mobile originated messages have a PDU type of SMS-SUBMIT.
 109.110 +
 109.111 +@publishedAll
 109.112 +@released
 109.113 +*/
 109.114 +enum TSmcmValidityPeriod
 109.115 +	{
 109.116 +/**
 109.117 +Validity period of an hour.
 109.118 +*/
 109.119 +	ESmsVPHour			= TSmsValidityPeriod::EHalfHourUnitInMinutes*2,
 109.120 +/**
 109.121 +Validity period of six hours.
 109.122 +*/
 109.123 +	ESmsVPSixHours		= TSmsValidityPeriod::EHalfHourUnitInMinutes*12,
 109.124 +/**
 109.125 +Validity period of 24 hours.
 109.126 +*/
 109.127 +	ESmsVP24Hours		= TSmsValidityPeriod::EOneDayUnitInMinutes,
 109.128 +/**
 109.129 +Validity period of a week.
 109.130 +*/
 109.131 +	ESmsVPWeek			= TSmsValidityPeriod::EOneWeekUnitInMinutes,
 109.132 +/**
 109.133 +The maximum validity period - currently set as 63 weeks.
 109.134 +*/
 109.135 +	ESmsVPMaximum		= TSmsValidityPeriod::EOneWeekUnitInMinutes*63,
 109.136 +/**
 109.137 +An enum that specifies that a validity period is not supported.
 109.138 +*/
 109.139 +	ESmsVPNotSupported	= KErrNotSupported,
 109.140 +/**
 109.141 +The default validy period - currently set to a week.
 109.142 +*/
 109.143 +	ESmsVPDefault		= ESmsVPWeek
 109.144 +	}; 
 109.145 +
 109.146 +/** 
 109.147 +Defines options for the preferred default sending schedule type of a new message
 109.148 +created using the SMS client MTM.
 109.149 +
 109.150 +The option has no direct effect on the SMS MTM. When it is sending an SMS
 109.151 +message it automatically appends other SMS messages in the outbox whose send
 109.152 +states are marked as KMsvSendStatewaiting or KMsvSendSateUnknown.
 109.153 +
 109.154 +Therefore it is the responsibility of the messaging client to set the correct
 109.155 +send state of new SMS messages correctly given the preferred sending schedule.
 109.156 +
 109.157 +@publishedAll
 109.158 +@released
 109.159 +*/
 109.160 +enum TSmsDelivery
 109.161 +	{
 109.162 +/** 
 109.163 +Send message immediately. The message send state should be set to KMsvSendStateWaiting. 
 109.164 +*/
 109.165 +	ESmsDeliveryImmediately,
 109.166 +/** 
 109.167 +Send message when client requests. The message send state should be set to KMsvSendStateUponRequest.
 109.168 +*/
 109.169 +	ESmsDeliveryUponRequest,
 109.170 +/**
 109.171 +Send message at scheduled time. The message send state should be set to KMsvSendStateScheduled.
 109.172 +*/
 109.173 +	ESmsDeliveryScheduled
 109.174 +	};
 109.175 +
 109.176 +/**
 109.177 +Defines the flags and masks for some of the message settings.
 109.178 +
 109.179 +The settings classes CSmsMessageSettings and CSmsSettings use these flags to 
 109.180 +store the specified information.
 109.181 +
 109.182 +@internalComponent
 109.183 +@released
 109.184 +*/
 109.185 +enum TSmsSettingsFlags
 109.186 +	{
 109.187 +/**
 109.188 +Mask that resets the flags.
 109.189 +*/
 109.190 +	ESmsSettingsNoFlags					=0,
 109.191 +/**
 109.192 +Flag that indicates if messages can be concatenated.
 109.193 +
 109.194 +If true, the UI should pass a long message in one piece to the MTM. If false, 
 109.195 +it should split the message manually into 140 byte parts. The value of this 
 109.196 +flag does not affect the behaviour of the SMS MTM.
 109.197 +*/
 109.198 +	ESmsSettingsCanConcatenate			=0x00000001,
 109.199 +/**
 109.200 +Flag that indicates whether the original message should be included in relpy
 109.201 +messages.
 109.202 +
 109.203 +If true, the received message should be quoted at the beginning of the reply 
 109.204 +message. If false, reply messages should be initially empty.
 109.205 +*/
 109.206 +	ESmsSettingsReplyQuoted				=0x00000002,
 109.207 +/**
 109.208 +Flag that indicates whether duplicate messages should be rejected.
 109.209 +*/
 109.210 +	ESmsSettingsRejectDuplicate			=0x00000004,
 109.211 +/**
 109.212 +Flag that indicates if a status report (TP-SRR in GSM spec 03.40) should be 
 109.213 +requested from the Service Centre.
 109.214 +*/
 109.215 +	ESmsSettingsDeliveryReport			=0x00000008,
 109.216 +/**
 109.217 +Flag that indicates if the reply path (Service Centre address) should be included
 109.218 +in the delivered message (TP-RP in GSM spec 03.40).
 109.219 +*/
 109.220 +	ESmsSettingsReplyPathRequested		=0x00000010,
 109.221 +/**  
 109.222 +Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment
 109.223 +should be requested from the Service Centre.
 109.224 +*/
 109.225 +	ESmsSettingsLastSegmentDeliveryReport	=0x00000020	,
 109.226 +	
 109.227 +/**
 109.228 +Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment 
 109.229 +is not requested from the Service Centre.
 109.230 +*/
 109.231 +	ENoSmsSettingsLastSegmentDeliveryReport	=0x00000040,
 109.232 +/**
 109.233 +Flag that indicates that the service center time stamp should be used for the date
 109.234 +field in any TMsvEntry that corresponds to a SMS message.
 109.235 +*/
 109.236 +	ESmsSettingsUseServiceCenterTimeStamp =0x00000080,
 109.237 +/**
 109.238 +Mask for the set of flags defined.
 109.239 +*/
 109.240 +	ESmsSettingsMask                    =0x000000FF,
 109.241 +	};
 109.242 +
 109.243 +
 109.244 +/**
 109.245 +Defines the types of acknowledgements that can be received from recipients.
 109.246 +*/
 109.247 +enum TSmsAckType
 109.248 +	{
 109.249 +/**
 109.250 +Acknowlwdgement of delivery to a recipient.
 109.251 +*/
 109.252 +	ESmsAckTypeDelivery		=0	
 109.253 +	};
 109.254 +
 109.255 +/** 
 109.256 +Progress information for SMS MTM operations.
 109.257 +
 109.258 +This information is returned by CMsvOperation::ProgressL() in a TSmsProgressBuf 
 109.259 +package.
 109.260 +
 109.261 +@see	CMsvOperation::ProgressL
 109.262 +
 109.263 +@publishedAll
 109.264 +@released
 109.265 +*/
 109.266 +class TSmsProgress 
 109.267 +	{
 109.268 +public:
 109.269 +/** 
 109.270 +Defines type of operation for which progress information is being given.
 109.271 +
 109.272 +These types correspond to the commands defined in TSmsMtmCommand.
 109.273 +
 109.274 +@see	TSmsMtmCommand
 109.275 +*/
 109.276 +	enum TSmsProgressType
 109.277 +		{
 109.278 +/** 
 109.279 +The default operation type - no operation.
 109.280 +*/
 109.281 +		ESmsProgressTypeDefault,
 109.282 +/** 
 109.283 +Reading SIM parameters.
 109.284 +		
 109.285 +Pre v7.0, this was named ESmsProgressTypeReadingServiceCenterAddress.
 109.286 +*/
 109.287 +		ESmsProgressTypeReadSimParams,
 109.288 +/**
 109.289 +Writing SIM parameters.
 109.290 +		
 109.291 +Pre v7.0 this was named ESmsProgressTypeWritingServiceCenterAddress. 
 109.292 +*/
 109.293 +		ESmsProgressTypeWriteSimParams,
 109.294 +/**
 109.295 +Sending messages.
 109.296 +*/
 109.297 +		ESmsProgressTypeSending,
 109.298 +/**
 109.299 +Scheduling sending messages.
 109.300 +*/
 109.301 +		ESmsProgressTypeScheduling,
 109.302 +/**
 109.303 +Enumerating phone stores.
 109.304 +		
 109.305 +Pre v7.0, this was named ESmsProgressTypeEnumeratingSim.
 109.306 +*/
 109.307 +		ESmsProgressTypeEnumeratingPhoneStores, 
 109.308 +/**
 109.309 +Copying messages from phone stores.
 109.310 +		
 109.311 +Pre v7.0, this was named ESmsProgressTypeCopyFromSim.
 109.312 +*/
 109.313 +		ESmsProgressTypeCopyFromPhoneStore, 
 109.314 +/**
 109.315 +Moving messages from phone stores.
 109.316 +		
 109.317 +Pre v7.0, this was named ESmsProgressTypeMoveFromSim.
 109.318 +*/
 109.319 +		ESmsProgressTypeMoveFromPhoneStore, 
 109.320 +/**
 109.321 +Deleting messages from phone stores.
 109.322 +		
 109.323 +Pre v7.0, this was named ESmsProgressTypeDeleteFromSim.
 109.324 +*/
 109.325 +		ESmsProgressTypeDeleteFromPhoneStore, 
 109.326 +/**
 109.327 +Removing all messages from the task scheduler list.
 109.328 +*/
 109.329 +		ESmsProgressTypeDeleteSchedule,
 109.330 +/**
 109.331 +Checking the current scheduled status of the messages.
 109.332 +*/
 109.333 +		ESmsProgressTypeCheckSchedule,
 109.334 +/**
 109.335 +Recursively deleting messages.
 109.336 +*/
 109.337 +		ESmsProgressTypeDeleteAll,
 109.338 +/**
 109.339 +Copying messages to a phone store.
 109.340 +		
 109.341 +Pre v7.0, this was named ESmsProgressTypeCopyToSim.
 109.342 +*/
 109.343 +		ESmsProgressTypeCopyToPhoneStore,  
 109.344 +/**
 109.345 +Moving messages to a phone store.
 109.346 +		
 109.347 +Pre v7.0, this was named ESmsProgressTypeMoveToSim.
 109.348 +*/
 109.349 +		ESmsProgressTypeMoveToPhoneStore,
 109.350 +/**
 109.351 +Moving message entries.
 109.352 +
 109.353 +This is the second part of ESmsProgressTypeMoveFromPhoneStore. The first part
 109.354 +deletes the messages from the phone storageSIM. This second part moves the 
 109.355 +messages from the folder that represents the phone storage to the specified
 109.356 +destination.
 109.357 +*/
 109.358 +		ESmsProgressTypeMovingEntries
 109.359 +		};
 109.360 +	
 109.361 +	inline TSmsProgress(TSmsProgressType aType = ESmsProgressTypeDefault);
 109.362 +
 109.363 +public:
 109.364 +	
 109.365 +/** 
 109.366 +The error code.
 109.367 +*/
 109.368 +	TInt iError; 
 109.369 +/** 
 109.370 +The type of operation. 
 109.371 +
 109.372 +@see	TSmsProgress::TSmsProgressType
 109.373 +*/
 109.374 +	TSmsProgressType iType;
 109.375 +/** 
 109.376 +The state of the operation.
 109.377 +*/
 109.378 +	TInt iState;
 109.379 +/** 
 109.380 +The number of recipients processed so far for the current message.
 109.381 +*/
 109.382 +	TInt iRcpDone;
 109.383 +/**
 109.384 +The total number of recipients in the current message.
 109.385 +*/
 109.386 +	TInt iRcpCount;
 109.387 +/** 
 109.388 +The nmber of messages processed so far for the current operation.
 109.389 +*/
 109.390 +	TInt iMsgDone;
 109.391 +/**
 109.392 +The total number of messages for the current operation.
 109.393 +*/
 109.394 +	TInt iMsgCount; 
 109.395 +/** 
 109.396 +The Service Centre address.
 109.397 +	
 109.398 +This is set by the command ESmsMtmCommandReadServiceCenter.
 109.399 +
 109.400 +@removed
 109.401 +This is no longer used since v7.0.
 109.402 +*/
 109.403 +	TBuf<14> iServiceCenterAddress;
 109.404 +/** 
 109.405 +The invisible folder that contains the messages read from the SIM by the command
 109.406 +ESmsMtmCommandEnumeratePhoneStores.
 109.407 +*/
 109.408 +	TMsvId iEnumerateFolder;
 109.409 +	};
 109.410 +
 109.411 +/** 
 109.412 +Package buffer for TSmsProgress. 
 109.413 +
 109.414 +@see	TSmsProgress
 109.415 +
 109.416 +@publishedAll
 109.417 +@released
 109.418 +*/
 109.419 +typedef TPckgBuf<TSmsProgress> TSmsProgressBuf;
 109.420 +
 109.421 +
 109.422 +/**
 109.423 +The SMS settings that are relevant on a per message basis.
 109.424 +
 109.425 +Each SMS message has its own settings. Initially they have a default set of 
 109.426 +values derived from the SMS service settings. They can be changed on an
 109.427 +individual message basis. For instance, a messaging application may allow a
 109.428 +user to specify/not specify status reports individually for each message.
 109.429 +
 109.430 +These settings are only relevant to mobile originated messages - those of 
 109.431 +SMS-SUBMIT type.
 109.432 +
 109.433 +@publishedAll
 109.434 +@released
 109.435 +*/
 109.436 +class CSmsMessageSettings : public CBase
 109.437 +	{
 109.438 +public:
 109.439 +	IMPORT_C virtual void InternalizeL(RReadStream& aReadStream);
 109.440 +	IMPORT_C virtual void ExternalizeL(RWriteStream& aWriteStream) const;
 109.441 +
 109.442 +	inline const TTimeIntervalMinutes& ValidityPeriod() const;
 109.443 +	inline void SetValidityPeriod(TTimeIntervalMinutes);
 109.444 +
 109.445 +	inline void SetValidityPeriodFormat(TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat);
 109.446 +	inline const TSmsFirstOctet::TSmsValidityPeriodFormat ValidityPeriodFormat() const;
 109.447 +
 109.448 +	inline TBool RejectDuplicate() const;
 109.449 +	inline void SetRejectDuplicate(TBool);
 109.450 +
 109.451 +	inline TBool DeliveryReport() const;
 109.452 +	inline void SetDeliveryReport(TBool);
 109.453 +
 109.454 +	inline TBool ReplyPath() const;
 109.455 +	inline void SetReplyPath(TBool);
 109.456 +
 109.457 +	inline TSmsPIDConversion MessageConversion() const;
 109.458 +	inline void SetMessageConversion(TSmsPIDConversion);
 109.459 +
 109.460 +	inline TBool CanConcatenate() const;
 109.461 +	inline void SetCanConcatenate(TBool);
 109.462 +
 109.463 +	inline enum TSmsDataCodingScheme::TSmsAlphabet CharacterSet() const;
 109.464 +	inline void SetCharacterSet(TSmsDataCodingScheme::TSmsAlphabet);
 109.465 +
 109.466 +    IMPORT_C virtual void CopyL(const CSmsMessageSettings& aSettings);
 109.467 +
 109.468 +	TUint32 MessageFlags() const;
 109.469 +	void SetMessageFlags(TUint32 aMsgFlags);
 109.470 +	inline TBool LastSegmentDeliveryReport() const;
 109.471 +	inline void SetLastSegmentDeliveryReport(TBool);
 109.472 +
 109.473 +	inline void SetUseServiceCenterTimeStampForDate(TBool aUseServiceCenterTimestamp);
 109.474 +	inline TBool UseServiceCenterTimeStampForDate() const;
 109.475 +
 109.476 +protected:
 109.477 +
 109.478 +	CSmsMessageSettings();
 109.479 +
 109.480 +private:
 109.481 +
 109.482 +	TUint32 iMsgFlags;
 109.483 +	TSmsPIDConversion iMessageConversion;
 109.484 +	TSmsDataCodingScheme::TSmsAlphabet iAlphabet;
 109.485 +	TTimeIntervalMinutes iValidityPeriod;
 109.486 +	TSmsFirstOctet::TSmsValidityPeriodFormat iValidityPeriodFormat;
 109.487 +	};
 109.488 +
 109.489 +/** 
 109.490 +The SMS Service settings.
 109.491 +
 109.492 +An SMS service entry stores an object of this type in its message store. These
 109.493 +settings define the default settings for mobile originated messages (SMS-SUBMIT
 109.494 +type messages). They also provide some global settings that are applied to all
 109.495 +messages, both outward going and received messages.
 109.496 +
 109.497 +The SMS service also uses this class to store the set of avilable Servive Centre
 109.498 +numbers. The default Service Centre is defined from this set.
 109.499 +
 109.500 +@publishedAll
 109.501 +@released
 109.502 +*/
 109.503 +class CSmsSettings : public CSmsMessageSettings
 109.504 +	{
 109.505 +public:
 109.506 +
 109.507 +/**
 109.508 +Defines the ways in which status reports that are received by the watcher may
 109.509 +be handled.
 109.510 +
 109.511 +This can be applied to both SMS-STATUS-REPORT type messages and Special Messages
 109.512 +(e.g. Voice Mail Indication messages).
 109.513 +*/
 109.514 +	enum TSmsReportHandling
 109.515 +		{
 109.516 +/** 
 109.517 +The reports are put in the inbox and made invisible. 
 109.518 +*/
 109.519 +		EMoveReportToInboxInvisible,
 109.520 +/** 
 109.521 +The reports are put in the inbox and made visible.
 109.522 +*/
 109.523 +		EMoveReportToInboxVisible,
 109.524 +/**
 109.525 +The reports are deleted.
 109.526 +*/
 109.527 +		EDiscardReport,
 109.528 +/** 
 109.529 +Not supported.
 109.530 +*/
 109.531 +		EDoNotWatchForReport,
 109.532 +/**
 109.533 +Reports are put in the inbox and made invisible. The status report 
 109.534 +is matched against the sent mesasge and its summary info updated.
 109.535 +*/
 109.536 +		EMoveReportToInboxInvisibleAndMatch,
 109.537 +/**
 109.538 +Reports are put in the inbox and made visible. The status report 
 109.539 +is matched against the sent mesasge and its summary info updated.
 109.540 +*/
 109.541 +		EMoveReportToInboxVisibleAndMatch,
 109.542 +/**
 109.543 +Reports are deleted. The status report is matched against the sent
 109.544 +mesasge and its summary info updated.
 109.545 +*/
 109.546 +		EDiscardReportAndMatch
 109.547 +		};
 109.548 +
 109.549 +/** 
 109.550 +Sets whether the service settings should be used to update the communications 
 109.551 +database. 
 109.552 +
 109.553 +If the update is specified, it is done when the Service settings are stored into
 109.554 +the message store.
 109.555 +*/
 109.556 +	enum TSmsSettingsCommDbAction
 109.557 +		{
 109.558 +/** 
 109.559 +The comms database should not be updated.
 109.560 +*/
 109.561 +		ENone,
 109.562 +/** 
 109.563 +Use the Service settings to update the comms datebase.
 109.564 +*/
 109.565 +		EStoreToCommDb
 109.566 +		};
 109.567 +
 109.568 +/** Defines the SMS bearer.
 109.569 +Modes: GSM */
 109.570 +enum TMobileSmsBearer
 109.571 +	{
 109.572 +	/** SMS messages will only be sent over a packet-switched (GPRS) network. */
 109.573 +		ESmsBearerPacketOnly,
 109.574 +	/** SMS messages will only be sent over a circuit-switched (GSM) network. */
 109.575 +		ESmsBearerCircuitOnly,
 109.576 +	/** SMS messages will be sent over the packet-switched (GPRS) network if possible, 
 109.577 +	otherwise over circuit-switched (GSM) network. */
 109.578 +		ESmsBearerPacketPreferred,
 109.579 +	/** SMS messages will be sent over the circuit-switched (GSM) network if possible, 
 109.580 +	otherwise over packet-switched (GPRS) network. */
 109.581 +		ESmsBearerCircuitPreferred
 109.582 +	};
 109.583 +
 109.584 +public:
 109.585 +
 109.586 +	IMPORT_C static CSmsSettings* NewL();
 109.587 +	IMPORT_C static CSmsSettings* NewLC();
 109.588 +	IMPORT_C virtual ~CSmsSettings();
 109.589 +
 109.590 +	IMPORT_C TInt ServiceCenterCount() const;
 109.591 +	IMPORT_C CSmsServiceCenter& GetServiceCenter(TInt aIndex) const;
 109.592 +	IMPORT_C void AddServiceCenterL(const TDesC& aName,const TDesC& aNumber);
 109.593 +	IMPORT_C void RemoveServiceCenter(TInt aIndex);
 109.594 +	IMPORT_C TInt DefaultServiceCenter() const;
 109.595 +	IMPORT_C void SetDefaultServiceCenter(TInt aDefaultSC);
 109.596 +	inline TSmsDelivery Delivery() const;
 109.597 +	inline void SetDelivery(TSmsDelivery);
 109.598 +
 109.599 +	inline TBool ReplyQuoted() const;
 109.600 +	inline void SetReplyQuoted(TBool);
 109.601 +
 109.602 +    IMPORT_C void CopyL(const CSmsSettings& aSmsSettings);
 109.603 +
 109.604 +	inline TSmsReportHandling StatusReportHandling() const;
 109.605 +	inline void SetStatusReportHandling(TSmsReportHandling aStatusReportHandling);
 109.606 +	inline TSmsReportHandling SpecialMessageHandling() const;
 109.607 +	inline void SetSpecialMessageHandling(TSmsReportHandling aSpecialMessageHandling);
 109.608 +
 109.609 +	inline void SetCommDbAction(TSmsSettingsCommDbAction aCommDbAction);
 109.610 +	inline TSmsSettingsCommDbAction CommDbAction() const;
 109.611 +
 109.612 +	inline void SetSmsBearerAction(TSmsSettingsCommDbAction aSmsBearerAction);
 109.613 +	inline TSmsSettingsCommDbAction SmsBearerAction() const;
 109.614 +
 109.615 +	inline void SetSmsBearer(TMobileSmsBearer aSmsBearer);
 109.616 +	inline TMobileSmsBearer SmsBearer() const;
 109.617 +
 109.618 +	inline void SetClass2Folder(TMsvId aId);
 109.619 +	inline TMsvId Class2Folder() const;
 109.620 +
 109.621 +	inline void SetDescriptionLength(TInt aLength);
 109.622 +	inline TInt DescriptionLength() const;
 109.623 +
 109.624 +	TUint32 SettingsFlags() const;
 109.625 +	void SetSettingsFlags(TUint32 aSetFlags);
 109.626 +
 109.627 +	void RemoveSCAddresses();
 109.628 +	void StoreToCommDbL() const;
 109.629 +
 109.630 +private:
 109.631 +
 109.632 +	CSmsSettings();
 109.633 +	void ConstructL();
 109.634 +
 109.635 +private:
 109.636 +
 109.637 +	TUint32 iSetFlags;
 109.638 +	CArrayPtrFlat<CSmsServiceCenter> *iServiceCenters;
 109.639 +	TSmsDelivery iDelivery;
 109.640 +	TInt iDefaultSC;
 109.641 +	TSmsReportHandling iStatusReportHandling;
 109.642 +	TSmsReportHandling iSpecialMessageHandling;
 109.643 +	TSmsSettingsCommDbAction iCommDbAction;
 109.644 +	TSmsSettingsCommDbAction iSmsBearerAction;
 109.645 +	TMobileSmsBearer iSmsBearer;
 109.646 +	TMsvId iClass2Folder;
 109.647 +	TInt iDescriptionLength;
 109.648 +	};
 109.649 +
 109.650 +/** 
 109.651 +Recipient information for an SMS message.
 109.652 +
 109.653 +A SMS-SUBMIT message may have several recipients
 109.654 +
 109.655 +@publishedAll
 109.656 +@released
 109.657 +*/
 109.658 +class CSmsNumber : public CMsvRecipient 
 109.659 +	{
 109.660 +public:
 109.661 +
 109.662 +/**
 109.663 +Defines the status of an acknowledgement for a recipient.
 109.664 +*/
 109.665 +	enum TSmsAckStatus
 109.666 +		{
 109.667 +/**
 109.668 +An acknowledgement for this recipient has not been requested.
 109.669 +*/
 109.670 +		ENoAckRequested		= 0,
 109.671 +/**
 109.672 +The delivery status for this recipient has been requested, but the status report
 109.673 +has not yet been received.
 109.674 +*/
 109.675 +		EPendingAck,
 109.676 +/**
 109.677 +A successful acknowledgement for this recipient has been received.
 109.678 +*/
 109.679 +		EAckSuccessful,
 109.680 +/**
 109.681 +A failed acknowledgement for this recipient has been received.
 109.682 +*/
 109.683 +		EAckError
 109.684 +		};
 109.685 +
 109.686 +public:
 109.687 +
 109.688 +	IMPORT_C static CSmsNumber* NewL();
 109.689 +	IMPORT_C static CSmsNumber* NewL(const CSmsNumber& aSmsNumber);
 109.690 +	IMPORT_C virtual ~CSmsNumber();
 109.691 +
 109.692 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 109.693 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 109.694 +
 109.695 +	IMPORT_C TPtrC Address() const;
 109.696 +	IMPORT_C void SetAddressL(const TDesC& aAddress);
 109.697 +	void SetEmailAddressL(const TDesC& aAddress, CSmsEmailFields* aEmailFields, const TDesC& aAlias);
 109.698 +
 109.699 +	IMPORT_C TPtrC Name() const;
 109.700 +	IMPORT_C void SetNameL(const TDesC& aName);
 109.701 +
 109.702 +	inline TLogId LogId() const;
 109.703 +	inline void SetLogId(TLogId aLogId);
 109.704 +
 109.705 +	IMPORT_C CSmsNumber& CopyL(const CSmsNumber& aSmsNumber);
 109.706 +
 109.707 +	IMPORT_C TSmsAckStatus AckStatus(TSmsAckType aAckType) const;
 109.708 +	IMPORT_C void SetAckStatus(TSmsAckType aAckType, TSmsAckStatus aAckStatus);
 109.709 +	
 109.710 +private:
 109.711 +
 109.712 +	CSmsNumber();
 109.713 +	TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
 109.714 +
 109.715 +private:
 109.716 +
 109.717 +	HBufC* iNumber;
 109.718 +	HBufC* iName;
 109.719 +	TLogId iLogId;
 109.720 +	TSmsAckStatus iDeliveryStatus;
 109.721 +	};
 109.722 +
 109.723 +/** 
 109.724 +Used to store Service Centre numbers and their associated name.
 109.725 +
 109.726 +@publishedAll
 109.727 +@released
 109.728 +*/
 109.729 +class CSmsServiceCenter : public CBase
 109.730 +	{
 109.731 +public:
 109.732 +	IMPORT_C static CSmsServiceCenter* NewL();
 109.733 +	IMPORT_C static CSmsServiceCenter* NewL(const CSmsServiceCenter& aSmsSC);
 109.734 +	IMPORT_C ~CSmsServiceCenter();
 109.735 +
 109.736 +	IMPORT_C TPtrC Address() const;
 109.737 +	IMPORT_C void SetAddressL(const TDesC& aAddress);
 109.738 +
 109.739 +	IMPORT_C TPtrC Name() const;
 109.740 +	IMPORT_C void SetNameL(const TDesC& aName);
 109.741 +	
 109.742 +	IMPORT_C CSmsServiceCenter& CopyL(const CSmsServiceCenter& aSmsSc);
 109.743 +
 109.744 +private:
 109.745 +	CSmsServiceCenter();
 109.746 +	TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
 109.747 +	
 109.748 +private:
 109.749 +	HBufC* iNumber;
 109.750 +	HBufC* iName;
 109.751 +	};
 109.752 +
 109.753 +#include <smutset.inl>
 109.754 +
 109.755 +#endif // __SMUTSET_H__
   110.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   110.2 +++ b/epoc32/include/app/smutsimparam.h	Wed Mar 31 12:27:01 2010 +0100
   110.3 @@ -0,0 +1,147 @@
   110.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   110.5 +// All rights reserved.
   110.6 +// This component and the accompanying materials are made available
   110.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   110.8 +// which accompanies this distribution, and is available
   110.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  110.10 +//
  110.11 +// Initial Contributors:
  110.12 +// Nokia Corporation - initial contribution.
  110.13 +//
  110.14 +// Contributors:
  110.15 +//
  110.16 +// Description:
  110.17 +//
  110.18 +
  110.19 +#ifndef __SMUTSIMPARAM_H__
  110.20 +#define __SMUTSIMPARAM_H__
  110.21 +
  110.22 +#include <msvapi.h>
  110.23 +#include <smcmmain.h>
  110.24 +
  110.25 +/**
  110.26 +The UID for the stream into which the SIM parameters are stored.
  110.27 +
  110.28 +@internalComponent
  110.29 +@deprecated
  110.30 +Should be moved to the cpp file for this class.
  110.31 +*/
  110.32 +const TUid KUidMsvSimSmsParams = {0x100081BC};
  110.33 +
  110.34 +class CMobilePhoneSmspList;
  110.35 +class TSmsProgress;
  110.36 +
  110.37 +/**
  110.38 +A packaged TInt value.
  110.39 +
  110.40 +This is used by CSmsSimParamOperation.
  110.41 +
  110.42 +@see CSmsSimParamOperation::ProgressL()
  110.43 +
  110.44 +@internalComponent
  110.45 +@released
  110.46 +*/
  110.47 +typedef TPckgBuf<TInt> TIntBuf;
  110.48 +
  110.49 +/**
  110.50 +Encapsulates an operation to read/write an array of SMS parameters from a SIM.
  110.51 +
  110.52 +An operation of this type if returned by the SMS client MTM for the read and
  110.53 +write SIM paramter operations.
  110.54 +
  110.55 +These operations are generated from calling the SMS client MTM APIs 
  110.56 +CSmsClientMtm::ReadSimParamsL and CSmsClientMtm::WriteSimParamsL. The 
  110.57 +CSmsClientMtm::InvokeAsyncFunctionL API should not be used for these operations.
  110.58 +
  110.59 +@see	CSmsClientMtm::ReadSimParamsL
  110.60 +@see	CSmsClientMtm::WriteSimParamsL
  110.61 +
  110.62 +@publishedAll
  110.63 +@released
  110.64 +*/
  110.65 +class CSmsSimParamOperation : public CMsvOperation
  110.66 +	{
  110.67 +public:
  110.68 +
  110.69 +	static CSmsSimParamOperation* ReadSimParamsL(TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  110.70 +	static CSmsSimParamOperation* WriteSimParamsL(const CMobilePhoneSmspList& aList, TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  110.71 +	virtual ~CSmsSimParamOperation();
  110.72 +
  110.73 +	inline const CMobilePhoneSmspList& SmspList() const;
  110.74 +
  110.75 +	IMPORT_C CMobilePhoneSmspList* ServiceCentersLC() const;
  110.76 +	IMPORT_C const TDesC8& ProgressL();
  110.77 +
  110.78 +	IMPORT_C static void RestoreSimParamsL(CMsvStore& aStore, CMobilePhoneSmspList& aList);
  110.79 +	IMPORT_C static void StoreSimParamsL(CMsvStore& aStore, const CMobilePhoneSmspList& aList);
  110.80 +
  110.81 +private:	// methods from CActive
  110.82 +
  110.83 +	virtual void RunL();
  110.84 +	virtual void DoCancel();
  110.85 +	virtual TInt RunError(TInt aError);
  110.86 +
  110.87 +private:
  110.88 +
  110.89 +	CSmsSimParamOperation(TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  110.90 +
  110.91 +	void DoReadSimParamsL();
  110.92 +	void DoRunReadSimParamsL(/*TSmsProgress aProgress*/);
  110.93 +	void DoWriteSimParamsL(const CMobilePhoneSmspList& aList);
  110.94 +
  110.95 +	void TransferCommandL(TInt aCommandId);
  110.96 +	void Complete();
  110.97 +
  110.98 +private:
  110.99 +
 110.100 +/**
 110.101 +This defines the state machine.
 110.102 +*/
 110.103 +	enum TReadSimParamsState
 110.104 +		{
 110.105 +/**
 110.106 +Specifies waiting state
 110.107 +*/
 110.108 +		EStateWaiting,
 110.109 +/**
 110.110 +Specifies reading state
 110.111 +*/
 110.112 +		EStateReadingSimParams,	 
 110.113 +/**
 110.114 +Specifies writing state
 110.115 +*/
 110.116 +		EStateWritingSimParams
 110.117 +		} iState;
 110.118 +
 110.119 +/**
 110.120 +A list containing the SMS parameters
 110.121 +*/
 110.122 +	CMobilePhoneSmspList* iSimParams;	
 110.123 +	TInt iError;
 110.124 +	TIntBuf iProgressBuf;
 110.125 +	CMsvOperation* iOperation;
 110.126 +	};
 110.127 +
 110.128 +/**
 110.129 +Gets the list of SMS parameters on the SIM, after a successfully completed 
 110.130 +read operation.
 110.131 +
 110.132 +If the operation has not successfully completed, this function returns an 
 110.133 +empty list.
 110.134 +
 110.135 +This function should ot be used with a write SIM parameters operation.
 110.136 +
 110.137 +@return
 110.138 +The list of SMS parameters read from the SIM.
 110.139 +
 110.140 +@panic	SMCM	3
 110.141 +This operation was not reading the SIM parameters. The operation was not returned
 110.142 +from CSmsClientMtm::ReadSimParamsL (debug only).
 110.143 +*/
 110.144 +inline const CMobilePhoneSmspList& CSmsSimParamOperation::SmspList() const
 110.145 +	{
 110.146 +	__ASSERT_DEBUG(iState == EStateReadingSimParams, Panic(ESmscPanicUnexpectedCommand));
 110.147 +	return *iSimParams;
 110.148 +	}
 110.149 +
 110.150 +#endif // __SMUTSIMPARAM_H__
   111.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   111.2 +++ b/epoc32/include/app/vcal.h	Wed Mar 31 12:27:01 2010 +0100
   111.3 @@ -0,0 +1,269 @@
   111.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   111.5 +// All rights reserved.
   111.6 +// This component and the accompanying materials are made available
   111.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   111.8 +// which accompanies this distribution, and is available
   111.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  111.10 +//
  111.11 +// Initial Contributors:
  111.12 +// Nokia Corporation - initial contribution.
  111.13 +//
  111.14 +// Contributors:
  111.15 +//
  111.16 +// Description:
  111.17 +//
  111.18 + 
  111.19 +#if !defined(__VCAL_H__)
  111.20 +#define __VCAL_H__
  111.21 +
  111.22 +#if !defined(__VERSIT_H__)
  111.23 +#include <versit.h>
  111.24 +#endif
  111.25 +
  111.26 +#if !defined(__VRECUR_H__)
  111.27 +#include <vrecur.h>
  111.28 +#endif
  111.29 +
  111.30 +_LIT(KVersitTokenVCalVersionNo, "1.0");
  111.31 +
  111.32 +//
  111.33 +// CParserVCal
  111.34 +//
  111.35 +class CParserVCal : public CVersitParser
  111.36 +/** A vCalendar parser.
  111.37 +
  111.38 +Adds support for parsing vToDos and vEvents, and associated alarms 
  111.39 +(see CParserPropertyValueAlarm) to the functionality of CVersitParser.
  111.40 +
  111.41 +Adds a constructor and overrides CVersitParser::InternalizeL() for streams, 
  111.42 +ExternalizeL() for streams, RecognizeToken(), RecognizeEntityName() and MakeEntityL().
  111.43 +
  111.44 +The vCalendar data is read from or written to a stream or file, using the 
  111.45 +InternalizeL() and ExternalizeL() functions. Most users of this class will 
  111.46 +only need to use these functions.
  111.47 +
  111.48 +Note: if you are sequentially creating and destroying multiple 
  111.49 +parsers, a major performance improvement may be achieved by using thread local 
  111.50 +storage to store an instance of CVersitUnicodeUtils which persists and can be 
  111.51 +used by all of the parsers.
  111.52 +
  111.53 +See CVersitTlsData for more information. 
  111.54 +
  111.55 +@publishedAll
  111.56 +@released
  111.57 +*/
  111.58 +	{
  111.59 +public:
  111.60 +	IMPORT_C static CParserVCal* NewL();
  111.61 +public: // from CVersitParser
  111.62 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  111.63 +	IMPORT_C void ExternalizeL(RWriteStream& aStream);
  111.64 +protected: // from CVersitParser
  111.65 +	IMPORT_C CVersitParser* MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
  111.66 +public: // from CVersitParser
  111.67 +	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
  111.68 +	IMPORT_C TInt RecognizeEntityName() const;
  111.69 +private:
  111.70 +	CParserVCal();
  111.71 +private: // from CVersitParser
  111.72 +	IMPORT_C virtual void Reserved1();
  111.73 +	IMPORT_C virtual void Reserved2();
  111.74 +	};
  111.75 +
  111.76 +//
  111.77 +// CVersitAlarm
  111.78 +//
  111.79 +class CVersitAlarm : public CBase
  111.80 +/** An alarm for a vEvent or a vTodo. 
  111.81 +
  111.82 +Specifies the date/time for the alarm, the amount of time the alarm will be 
  111.83 +snoozed (optional), the number of times that the alarm will repeat, the binary 
  111.84 +data of the sound to be played when the alarm runs (optional), and some text 
  111.85 +to associate with the alarm (optional).
  111.86 +
  111.87 +An object of this class is owned by the CParserPropertyValueAlarm class.
  111.88 +
  111.89 +This class supports the following types of alarm:
  111.90 +
  111.91 +- Audible Alarm
  111.92 +
  111.93 +- Display Alarm (displays message on the screen) 
  111.94 +
  111.95 +- Procedure Alarm (calls a procedure)
  111.96 +
  111.97 +- Mail Alarm (sends an email). 
  111.98 +
  111.99 +@publishedAll
 111.100 +@released
 111.101 +*/
 111.102 +	{
 111.103 +public:
 111.104 +	IMPORT_C static CVersitAlarm* NewL(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount, const TDesC& aAudioContent, const TDesC& aNote);
 111.105 +	IMPORT_C ~CVersitAlarm();
 111.106 +private:
 111.107 +	CVersitAlarm(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount);
 111.108 +	void ConstructL(const TDesC& aAudioContent, const TDesC& aNote);
 111.109 +public:	
 111.110 +	/** The date/time for the alarm. */
 111.111 +	TVersitDateTime* iRunTime;
 111.112 +	/** The amount of time the alarm will be snoozed (optional). */
 111.113 +	TTime* iSnoozeTime;
 111.114 +	/** The number of times that the alarm will repeat. */
 111.115 +	TInt iRepeatCount;
 111.116 +	/** The binary data describing the sound to play for an AALARM (optional), or 
 111.117 +	the string which specifies the address to send the e-mail to, for an MALARM. */
 111.118 +	HBufC* iAudioContent;
 111.119 +	/** The mesage to display on the screen for a DALARM (optional), or 
 111.120 +	the body of the e-mail to be sent for an MALARM, or the name of the procedure 
 111.121 +	to call for a PALARM. */
 111.122 +	HBufC* iNote;//Empty except for MAlarm
 111.123 +	};
 111.124 +	
 111.125 +class CVersitExtendedAlarm : public CBase
 111.126 +/** An extended alarm for a vEvent or a vTodo. 
 111.127 +
 111.128 +Specifies the date/time for the alarm, the amount of time the alarm will be 
 111.129 +snoozed (optional), the number of times that the alarm will repeat, and the 
 111.130 +action for the alarm.
 111.131 +An object of this class is owned by the CParserPropertyValueAlarm class.
 111.132 +
 111.133 +This class supports the following types of alarm:
 111.134 +- X-EPOCALARM 
 111.135 +
 111.136 +@publishedPartner
 111.137 +@released
 111.138 +*/
 111.139 +	{
 111.140 +public:
 111.141 +
 111.142 +	/** Extended Alarm's disposition types.
 111.143 +	*/
 111.144 +	enum TDisposition
 111.145 +		{
 111.146 +		/** URL disposition
 111.147 +		*/
 111.148 +		EDispositionUrl = 0,
 111.149 +		/** Inline disposition
 111.150 +		*/
 111.151 +		EDispositionInline = 1,
 111.152 +		/** Unknown disposition
 111.153 +		*/
 111.154 +		EDispositionUnknown = 15
 111.155 +		};
 111.156 +	
 111.157 +	IMPORT_C static CVersitExtendedAlarm* NewL(const TDesC8& aContent,const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aDisposition);
 111.158 +	IMPORT_C ~CVersitExtendedAlarm();
 111.159 +private:
 111.160 +	CVersitExtendedAlarm();
 111.161 +	void ConstructL(const TDesC8& aContent, const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aContentDisposition);
 111.162 +public:	
 111.163 +	/** The data describing the action for the alarm.*/
 111.164 +	HBufC8* iContent;
 111.165 +	/** The MIME type of the data describing the action for the alarm.*/
 111.166 +	HBufC8* iMimeType;
 111.167 +	/** The disposition of the data for the alarm action (i.e whether it is inline or an URI).*/
 111.168 +	CVersitExtendedAlarm::TDisposition iDisposition;
 111.169 +	};
 111.170 +
 111.171 +//
 111.172 +// CParserVCalEntity
 111.173 +//
 111.174 +class CParserVCalEntity : public CRecurrenceParser
 111.175 +/** A parser for vCalendar sub-entities.
 111.176 +
 111.177 +A vCalendar sub-entity is a vEvent or vToDo contained in a vCalendar. vEvents 
 111.178 +and vToDos are derived from CRecurrenceParser, which provides recurrence functionality. 
 111.179 +
 111.180 +vEvents and vTodos may have alarm properties (see CParserPropertyValueAlarm). 
 111.181 +
 111.182 +@publishedAll
 111.183 +@released
 111.184 +*/
 111.185 +	{
 111.186 +public:
 111.187 +	IMPORT_C static CParserVCalEntity* NewL();
 111.188 +	IMPORT_C ~CParserVCalEntity();
 111.189 +public: // from CVersitParser
 111.190 +	IMPORT_C void ExternalizeL(RWriteStream& aStream);
 111.191 +protected: // from CVersitParser
 111.192 +	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
 111.193 +	IMPORT_C CVersitAlarm* MakePropertyValueAlarmL(TPtr16 aAlarmValue);
 111.194 +	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(TPtr16 aAlarmValue);
 111.195 +	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(CBufSeg& aAlarmValue);
 111.196 +	IMPORT_C CVersitExtendedAlarm::TDisposition DecodeDisposition(const TDesC8& aContentDispositionToken) const;
 111.197 +	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
 111.198 +private:
 111.199 +	CParserVCalEntity();
 111.200 +private: // from CVersitParser
 111.201 +	IMPORT_C virtual void Reserved1();
 111.202 +	IMPORT_C virtual void Reserved2();
 111.203 +	};
 111.204 +
 111.205 +
 111.206 +//
 111.207 +// CParserPropertyValueAlarm
 111.208 +//
 111.209 +class CParserPropertyValueAlarm : public CParserTimePropertyValue
 111.210 +/** An alarm property value parser for a vCalendar entity.
 111.211 +
 111.212 +An alarm can be associated with a vEvent or a vTodo. The value for the alarm 
 111.213 +is stored as a CVersitAlarm.
 111.214 +
 111.215 +Note: The UID for an alarm property value is KVCalPropertyAlarmUid. 
 111.216 +
 111.217 +@publishedAll
 111.218 +@released
 111.219 +*/
 111.220 +	{
 111.221 +public:
 111.222 +	IMPORT_C CParserPropertyValueAlarm(CVersitAlarm* aValue);
 111.223 +	IMPORT_C CParserPropertyValueAlarm();
 111.224 +	IMPORT_C ~CParserPropertyValueAlarm();
 111.225 +	inline CVersitAlarm* Value() const;
 111.226 +public: // from CParserTimePropertyValue
 111.227 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 111.228 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
 111.229 +public: // from CParserPropertyValue
 111.230 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
 111.231 +	IMPORT_C TBool IsAsciiCharacterSetSufficient();
 111.232 +private:
 111.233 +	CVersitAlarm* iValue;
 111.234 +	};
 111.235 +
 111.236 +
 111.237 +//
 111.238 +// CParserPropertyValueExtendedAlarm
 111.239 +//
 111.240 +class CParserPropertyValueExtendedAlarm : public CParserTimePropertyValue
 111.241 +/** An extended alarm property value parser for a vCalendar entity.
 111.242 +
 111.243 +An alarm action can be attached with a vEvent or a vTodo. The value for the alarm 
 111.244 +action is stored as a CVersitExtendedAlarm object. 
 111.245 +
 111.246 +Note: The UID for an extended alarm property value is KVCalPropertyExtendedAlarmUid. 
 111.247 +
 111.248 +@publishedAll
 111.249 +@released
 111.250 +*/
 111.251 +	{
 111.252 +public:
 111.253 +	IMPORT_C CParserPropertyValueExtendedAlarm(CVersitExtendedAlarm* aValue);
 111.254 +	IMPORT_C ~CParserPropertyValueExtendedAlarm();
 111.255 +	inline CVersitExtendedAlarm* Value() const;
 111.256 +public: // from CParserTimePropertyValue
 111.257 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 111.258 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
 111.259 +public: // from CParserPropertyValue
 111.260 +	IMPORT_C void ExternalizeL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
 111.261 +	IMPORT_C TBool IsAsciiCharacterSetSufficient();
 111.262 +private:
 111.263 +	void ExternalizeUrlL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
 111.264 +	void ExternalizeInlineL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
 111.265 +	
 111.266 +private:
 111.267 +	CVersitExtendedAlarm* iValue;
 111.268 +	};
 111.269 +
 111.270 +#include <vcal.inl>
 111.271 +
 111.272 +#endif
   112.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   112.2 +++ b/epoc32/include/app/vcal.inl	Wed Mar 31 12:27:01 2010 +0100
   112.3 @@ -0,0 +1,31 @@
   112.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   112.5 +// All rights reserved.
   112.6 +// This component and the accompanying materials are made available
   112.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   112.8 +// which accompanies this distribution, and is available
   112.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  112.10 +//
  112.11 +// Initial Contributors:
  112.12 +// Nokia Corporation - initial contribution.
  112.13 +//
  112.14 +// Contributors:
  112.15 +//
  112.16 +// Description:
  112.17 +// CParserPropertyValueAlarm
  112.18 +// 
  112.19 +//
  112.20 +
  112.21 +inline CVersitAlarm* CParserPropertyValueAlarm::Value() const
  112.22 +/** Gets a pointer to the alarm property value.
  112.23 +
  112.24 +@return Pointer to the alarm property value. */
  112.25 +	{return iValue;}
  112.26 +
  112.27 +//
  112.28 +// CParserPropertyValueExtendedAlarm
  112.29 +//
  112.30 +inline CVersitExtendedAlarm* CParserPropertyValueExtendedAlarm::Value() const
  112.31 +/** Gets a pointer to the extended alarm property value.
  112.32 +
  112.33 +@return Pointer to the extended alarm property value. */
  112.34 +	{return iValue;}
   113.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   113.2 +++ b/epoc32/include/app/vcard.h	Wed Mar 31 12:27:01 2010 +0100
   113.3 @@ -0,0 +1,183 @@
   113.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   113.5 +// All rights reserved.
   113.6 +// This component and the accompanying materials are made available
   113.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   113.8 +// which accompanies this distribution, and is available
   113.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  113.10 +//
  113.11 +// Initial Contributors:
  113.12 +// Nokia Corporation - initial contribution.
  113.13 +//
  113.14 +// Contributors:
  113.15 +//
  113.16 +// Description:
  113.17 +//
  113.18 + 
  113.19 +#ifndef __VCARD_H__
  113.20 +#define __VCARD_H__
  113.21 +
  113.22 +#ifndef __VERSIT_H__
  113.23 +#include <versit.h>
  113.24 +#endif
  113.25 +
  113.26 +#include <vobserv.h>
  113.27 +
  113.28 +_LIT(KVersitTokenVCardVersionNo, "2.1");
  113.29 +
  113.30 +class CVCard3ParserPlugIn;
  113.31 +
  113.32 +//
  113.33 +// CParserVCard
  113.34 +//
  113.35 +class CParserVCard : public CVersitParser
  113.36 +/** A vCard parser. 
  113.37 +
  113.38 +Adds support for property groups (see CParserGroupedProperty) and agents 
  113.39 +(see CParserPropertyValueAgent) to the functionality of CVersitParser. 
  113.40 +
  113.41 +Provides a constructor and overrides CVersitParser::InternalizeL(),   
  113.42 +ExternalizeL(), RecognizeToken(), ConvertAllPropertyDateTimesToMachineLocalL(), 
  113.43 +ParsePropertyL() and MakePropertyValueL().
  113.44 +
  113.45 +The vCard data is read from or written to a stream or file, using the InternalizeL() 
  113.46 +and ExternalizeL() functions. Most users of this class will only need to use 
  113.47 +these functions.
  113.48 +
  113.49 +If you are sequentially creating and destroying multiple parsers, a major performance 
  113.50 +improvement may be achieved by using thread local storage to store an instance of 
  113.51 +CVersitUnicodeUtils which persists and can be used by all of the parsers.
  113.52 +
  113.53 +See CVersitTlsData for more information. 
  113.54 +@publishedAll
  113.55 +@released
  113.56 +*/
  113.57 +	{
  113.58 +public:
  113.59 +	IMPORT_C static CParserVCard* NewL();
  113.60 +	IMPORT_C CArrayPtr<CParserProperty>* GroupOfPropertiesL(const TDesC8& aName) const;
  113.61 +public: //from CVersitParser
  113.62 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  113.63 +	IMPORT_C void ExternalizeL(RWriteStream& aStream);
  113.64 +	IMPORT_C void ConvertAllPropertyDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
  113.65 +protected:
  113.66 +	IMPORT_C virtual CParserPropertyValue* MakePropertyValueAgentL(TPtr16 aValue);
  113.67 +	IMPORT_C CDesC8Array* GetGroupNamesL(TPtr8& aGroupsAndName);
  113.68 +protected: // from CVersitParser
  113.69 +	IMPORT_C void ParsePropertyL();
  113.70 +	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
  113.71 +    IMPORT_C CParserPropertyValue* MakePropertyValueSoundL(HBufC16*& aValue);
  113.72 +public: //from CVersitParser
  113.73 +	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
  113.74 +	IMPORT_C void ConvertDateTimesToMachineLocalAndDeleteTZL();
  113.75 +protected:
  113.76 +	CParserVCard();
  113.77 +private: // from CVersitParser
  113.78 +	IMPORT_C virtual void Reserved1();
  113.79 +	IMPORT_C virtual void Reserved2();
  113.80 +	};
  113.81 +
  113.82 +NONSHARABLE_CLASS(CParserVCard3) : public CParserVCard
  113.83 +/** A vCard 3.0 parser. 
  113.84 +
  113.85 +Overrides CParserVCard::InternalizeL(). Internalizing of vCard 3.0
  113.86 +objects is not supported
  113.87 +
  113.88 +@internalTechnology
  113.89 +@prototype
  113.90 +*/
  113.91 +	{
  113.92 +public:
  113.93 +	IMPORT_C static CParserVCard3* NewL();
  113.94 +	~CParserVCard3();
  113.95 +	
  113.96 +public: //from CParserVCard
  113.97 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  113.98 +	
  113.99 +private:
 113.100 +	CParserVCard3();
 113.101 +	void ConstructL();
 113.102 +	void CreateParserPlugInL();
 113.103 +
 113.104 +private:
 113.105 +	CVCard3ParserPlugIn* iPlugInImpl;
 113.106 +	};
 113.107 +	
 113.108 +//
 113.109 +// CParserGroupedProperty
 113.110 +//
 113.111 +class CParserGroupedProperty : public CParserProperty
 113.112 +/** A grouped property.
 113.113 +
 113.114 +This is a vCard property which may be a member of one or more property groups. 
 113.115 +It owns an array of descriptors, each of which identifies a group 
 113.116 +to which the property belongs.
 113.117 +
 113.118 +An example of how grouped properties may be useful is for a person with two 
 113.119 +homes. Each home has an address and telephone number, both of which are to 
 113.120 +be stored on the vCard. The address and telephone number are grouped for each 
 113.121 +home. A prefix for the address and telephone number properties is provided: 
 113.122 +one for each home. Each prefix is stored as a property group.
 113.123 +
 113.124 +When the property is externalised, the identities of all the groups to which 
 113.125 +the property belongs (i.e. the prefixes) are written to the stream before 
 113.126 +CParserProperty::ExternalizeL() is called.
 113.127 +
 113.128 +The class also provides a function which can be used to test whether 
 113.129 +the property is a member of a given group.
 113.130 +
 113.131 +Note that the vCard parser stores all properties using this class; if the 
 113.132 +vCard property is not grouped then the array of property groups is empty. 
 113.133 +Conversely, the vCalender parser does not have property groups, and so stores 
 113.134 +all properties using the CParserProperty base class. 
 113.135 +@publishedAll
 113.136 +@released
 113.137 +*/
 113.138 +	{
 113.139 +public:
 113.140 +	IMPORT_C static CParserGroupedProperty* NewL(CParserPropertyValue& aPropertyValue, const TDesC8& aName, CDesC8Array* aArrayOfGroups, CArrayPtr<CParserParam>* aArrayOfParams);
 113.141 +	IMPORT_C CParserGroupedProperty(CDesC8Array* aArrayOfGroups, CArrayPtr<CParserParam>* aArrayOfParams);
 113.142 +	IMPORT_C ~CParserGroupedProperty();
 113.143 +	IMPORT_C TBool Group(const TDesC8& aGroup) const;
 113.144 +	inline void SetGroups(CDesC8Array* aArrayOfGroups);
 113.145 +	inline const CDesC8Array* Groups();
 113.146 +public: //from CParserProperty
 113.147 +	IMPORT_C TBool SupportsInterface(const TUid& aInterfaceUid) const;
 113.148 +	IMPORT_C void ExternalizeL(RWriteStream& aStream, CVersitParser* aVersitParser = NULL);
 113.149 +protected:
 113.150 +	CParserGroupedProperty(CParserPropertyValue& aPropertyValue, CDesC8Array* aArrayOfGroups, CArrayPtr<CParserParam>* aArrayOfParams);
 113.151 +private: //from CParserProperty
 113.152 +	IMPORT_C virtual void Reserved();
 113.153 +protected:
 113.154 +	CDesC8Array* iArrayOfGroups;
 113.155 +	};
 113.156 +
 113.157 +//
 113.158 +// CParserPropertyValueAgent
 113.159 +//
 113.160 +class CParserPropertyValueAgent : public CParserPropertyValue
 113.161 +/** An agent property value parser. 
 113.162 +
 113.163 +An agent property value contains information about a person who is not the 
 113.164 +main subject of the vCard. It is implemented as a vCard nested within another 
 113.165 +vCard. The agent's vCard is held in the property value of the parent vCard.
 113.166 +
 113.167 +The UID for an agent property value is KVCardPropertyAgentUid. 
 113.168 +@publishedAll
 113.169 +@released
 113.170 +*/
 113.171 +	{
 113.172 +public:
 113.173 +	IMPORT_C CParserPropertyValueAgent(CParserVCard* aValue);
 113.174 +	IMPORT_C ~CParserPropertyValueAgent();
 113.175 +	inline CParserVCard* Value() const;
 113.176 +
 113.177 +public: // from CParserPropertyValue
 113.178 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt /*aLengthOutput*/);
 113.179 +protected:
 113.180 +	CParserVCard* iValue;
 113.181 +private:
 113.182 +	};
 113.183 +
 113.184 +#include <vcard.inl>
 113.185 +
 113.186 +#endif
   114.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   114.2 +++ b/epoc32/include/app/vcard.inl	Wed Mar 31 12:27:01 2010 +0100
   114.3 @@ -0,0 +1,36 @@
   114.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   114.5 +// All rights reserved.
   114.6 +// This component and the accompanying materials are made available
   114.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   114.8 +// which accompanies this distribution, and is available
   114.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  114.10 +//
  114.11 +// Initial Contributors:
  114.12 +// Nokia Corporation - initial contribution.
  114.13 +//
  114.14 +// Contributors:
  114.15 +//
  114.16 +// Description:
  114.17 +// CParserPropertyValueAgent
  114.18 +// 
  114.19 +//
  114.20 +
  114.21 +inline CParserVCard* CParserPropertyValueAgent::Value() const
  114.22 +/** Gets the agent object owned by the property value.
  114.23 +
  114.24 +@return A pointer to the agent property value. */
  114.25 +	{return iValue;}
  114.26 +
  114.27 +inline void CParserGroupedProperty::SetGroups(CDesC8Array* aArrayOfGroups)
  114.28 +/** Sets the list of groups to which the property belongs, replacing any existing 
  114.29 +list.
  114.30 +
  114.31 +@param aArrayOfGroups Array of descriptors; each of which specifies 
  114.32 +a group name. The grouped property takes ownership of the array. */
  114.33 +	{iArrayOfGroups=aArrayOfGroups;}
  114.34 +
  114.35 +inline const CDesC8Array* CParserGroupedProperty::Groups()
  114.36 +/** Gets the groups to which the property belongs.
  114.37 +
  114.38 +@return Pointer to an array of descriptors. Each one specifies a group name. */
  114.39 +	{return iArrayOfGroups;}
   115.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   115.2 +++ b/epoc32/include/app/versit.h	Wed Mar 31 12:27:01 2010 +0100
   115.3 @@ -0,0 +1,485 @@
   115.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   115.5 +// All rights reserved.
   115.6 +// This component and the accompanying materials are made available
   115.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   115.8 +// which accompanies this distribution, and is available
   115.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  115.10 +//
  115.11 +// Initial Contributors:
  115.12 +// Nokia Corporation - initial contribution.
  115.13 +//
  115.14 +// Contributors:
  115.15 +//
  115.16 +// Description:
  115.17 +//
  115.18 +
  115.19 +#ifndef __VERSIT_H__
  115.20 +#define __VERSIT_H__
  115.21 +
  115.22 +// System includes
  115.23 +#include <e32base.h>
  115.24 +#include <badesca.h>
  115.25 +#include <s32file.h>
  115.26 +
  115.27 +// User includes
  115.28 +#include <vuid.h>
  115.29 +#include <vtoken.h>
  115.30 +#include <vprop.h>
  115.31 +#include <versittls.h>
  115.32 +
  115.33 +// Classes referenced
  115.34 +class RFile;
  115.35 +class TVersitDateTime;
  115.36 +class MVersitObserver;
  115.37 +class MVersitPlugIn;
  115.38 +
  115.39 +// Panic enumeration
  115.40 +/** Versit panic numbers. The Versit panic numbers have a category of "Versit-Parser". 
  115.41 +@internalComponent
  115.42 +@released
  115.43 +*/
  115.44 +enum TVersitParserPanic
  115.45 +	{
  115.46 +	ECurrentTokenNotFound,		//Unused
  115.47 +	EUnicodeUtilsNotFound,		//Unused
  115.48 +	ENoPropertyValue,		//Unused
  115.49 +	/** A CWeekDayArray contains an invalid value (not between EMonday 
  115.50 +	and ESunday inclusive). */
  115.51 +	ENoWeekdayFound,
  115.52 +	/** The number of a week within a month is invalid. */
  115.53 +	EWeekNoOverTen,
  115.54 +	/** The repeat type for a recurrence rule property value is not one of the values 
  115.55 +	specified in CVersitRecurrence::TType. */
  115.56 +	ENoRecognizedRepeatType,
  115.57 +	EVersitPanicEscapedTextAlreadyExists,		//Unused
  115.58 +	/** 8-bit encoding is proposed as the default for a parser but may not be appropriate. */
  115.59 +	EVersitPanicCannotSetEightBitEncoding,
  115.60 +	/** 8-bit encoding is encountered or proposed where it is not expected. */
  115.61 +	EVersitPanicUnexpectedEightBitEncoding,
  115.62 +	/** A parser was not specified when externalising a property. */
  115.63 +	EVersitPanicNeedToSpecifyParser,
  115.64 +	/** The additional storage slot for the given property has already been used */
  115.65 +	EVersitPanicAdditionalStorageSlotAlreadyInUse,
  115.66 +	/** Attempting to assign a NULL value to an additional storage slot  */
  115.67 +	EVersitPanicNullValueAssignedToAdditionalStorageSlot,
  115.68 +	//
  115.69 +	EVersitPanicLast
  115.70 +	};
  115.71 +
  115.72 +/**
  115.73 +Used as key into additional storage within tls object, for CVersitTLSContainer
  115.74 +Value should not conflict with genuine compiler generated pointer values
  115.75 +*/
  115.76 +const static TInt* const KTLSVars = reinterpret_cast<TInt*>(1);
  115.77 +
  115.78 +GLREF_C void DestroyHBufC(TAny* aHBufC);
  115.79 +IMPORT_C void Panic(TVersitParserPanic aPanic);
  115.80 +
  115.81 +
  115.82 +/** Extension mechanism for CLineReader
  115.83 +This is an internal class and is only for use by CLineReader
  115.84 +@internalComponent
  115.85 +@released
  115.86 +*/
  115.87 +class CLineReaderExtension : public CBase
  115.88 +	{
  115.89 +	friend class CLineReader;
  115.90 +private:
  115.91 +	CLineReaderExtension();
  115.92 +	static CLineReaderExtension* NewL();
  115.93 +private:
  115.94 +	TUint8 iBuf[1024];
  115.95 +	TInt iOffset;
  115.96 +	TInt iSize;
  115.97 +	};
  115.98 +
  115.99 +class CLineReader : public CBase
 115.100 +/** Line reader for a vCalendar or vCard parser.
 115.101 +
 115.102 +Reads in a line at a time for the parser. 
 115.103 +
 115.104 +Also allows the first character of the next line to be checked to see if it 
 115.105 +is a space, which can indicate that the line is wrapped. This enables the 
 115.106 +reading of multi-line property values.
 115.107 +
 115.108 +Used by CVersitParser to internalise streams. 
 115.109 +@publishedAll
 115.110 +@released
 115.111 +*/
 115.112 +	{
 115.113 +public:
 115.114 +	/** Defines the initial line size of, and the size of expansions to, the buffer 
 115.115 +	which stores the line being read. */
 115.116 +	enum
 115.117 +		{
 115.118 +		/** The initial size of the buffer (pointed to by iBuf). */
 115.119 +		EInitialLineSize=96,
 115.120 +		/** The size by which the buffer (pointed to by iBuf) 
 115.121 +		is expanded when it has run out of room. */
 115.122 +		EExpandSize=16,
 115.123 +		};
 115.124 +	/** Defines values which describe the content of a line that has been read.
 115.125 +
 115.126 +	This is the return value from the function ReadLine(). */
 115.127 +	enum
 115.128 +		{
 115.129 +		/** The line has content (not white space). */
 115.130 +		ELineHasContent=0,
 115.131 +		/** The line has white space only. */
 115.132 +		ELineIsWhiteSpace=1,		//Doesn't include next case
 115.133 +		/** The line has no content, and so is just a carriage return and line 
 115.134 +		feed ("/r/n"). */
 115.135 +		ELineIsCRLFOnly=2,
 115.136 +		};
 115.137 +public:
 115.138 +	IMPORT_C static CLineReader* NewL(RReadStream& aStream);
 115.139 +	IMPORT_C ~CLineReader();
 115.140 +	IMPORT_C virtual TBool ReadLineL(TInt aPos,TInt& aErr);
 115.141 +	IMPORT_C TBool AppendLineIfSpaceNextL();
 115.142 +	IMPORT_C TBool IsSpaceNextL();
 115.143 +	IMPORT_C TInt AppendSpaceL();
 115.144 +	inline void SetPlugIn(MVersitPlugIn* aPlugIn);
 115.145 +	inline void SetSkipWhiteSpaceAtStart(TBool aDoSkip);
 115.146 +protected:
 115.147 +	inline CLineReader(RReadStream& aStream) :iReadStream(&aStream), iBufPtr(NULL,0), iFirstCharNextLine(-1) {}
 115.148 +	IMPORT_C void ConstructL();
 115.149 +	IMPORT_C void ExpandBufferL(TInt aCurrentSize);
 115.150 +	IMPORT_C TUint8 ReadChar(TInt& aErr);
 115.151 +private:
 115.152 +	IMPORT_C virtual void Reserved();
 115.153 +public:
 115.154 +	/** A pointer to an RReadStream object, the ReadUint8L() function of which is used 
 115.155 +	to read single characters from the stream.
 115.156 +	
 115.157 +	This is passed into the NewL() function upon construction. */
 115.158 +	RReadStream* iReadStream;
 115.159 +	/** A pointer to a buffer which stores data read from the stream.
 115.160 +	
 115.161 +	Its size on construction is EInitialLineSize, and it is expanded by EExpandSize 
 115.162 +	when necessary.
 115.163 +	
 115.164 +	A copy of this value should not be stored, since the buffer location may change 
 115.165 +	if the buffer is expanded.
 115.166 +	
 115.167 +	Data in the buffer is not lost when the buffer is expanded, but is copied 
 115.168 +	to the new location. */
 115.169 +	TPtr8 iBufPtr;
 115.170 +protected:
 115.171 +	HBufC8* iLineBuf;
 115.172 +	TInt iFirstCharNextLine;
 115.173 +private:
 115.174 +	MVersitPlugIn* iPlugIn;
 115.175 +	TBool iSkipWhiteSpaceAtStart;
 115.176 +	CLineReaderExtension* iExtension;
 115.177 +	};
 115.178 +
 115.179 +class CVersitParser : public CBase
 115.180 +/** A generic Versit parser. 
 115.181 +
 115.182 +Provides generic functions which implement behaviour common to both vCalendar 
 115.183 +and vCard parsers. For instance:
 115.184 +
 115.185 +- InternalizeL() and ExternalizeL() functions, for writing and reading 
 115.186 +data from a stream or file.
 115.187 +
 115.188 +- adding/retrieving properties and sub-entities to/from an existing entity. 
 115.189 +
 115.190 +- encoding and character set conversion capabilities.
 115.191 +
 115.192 +Although this is not an abstract class, in practice you would create and use 
 115.193 +objects of a derived class instead (CParserVCal or CParserVCard), as these 
 115.194 +provide additional functionality needed for parsing vCalendars and vCards.
 115.195 +
 115.196 +Note: a flag used in the class constructor indicates whether the entity needs 
 115.197 +a version property. The version property will be inserted at the start of 
 115.198 +the array of properties for the entity, and specifies the version of the vCard/vCalendar 
 115.199 +specification used by the data of this particular vCard/vCalendar. The versions 
 115.200 +that are currently supported are vCard v2.1 and vCalendar v1.0.
 115.201 +
 115.202 +A typical vCard looks like this:
 115.203 +
 115.204 +BEGIN VCARD
 115.205 +
 115.206 +VERSION 2.1 ...
 115.207 +
 115.208 +END VCARD
 115.209 +
 115.210 +Note: if you are sequentially creating and destroying multiple 
 115.211 +parsers, a major performance improvement may be achieved 
 115.212 +by using thread local storage to store an instance of CVersitUnicodeUtils 
 115.213 +which persists and can be used by all of the parsers.
 115.214 +
 115.215 +See CVersitTlsData for more details. 
 115.216 +@publishedAll
 115.217 +@released
 115.218 +*/
 115.219 +	{
 115.220 +	friend class CParserProperty;
 115.221 +public:
 115.222 +	IMPORT_C CVersitParser(TUint aFlags);
 115.223 +	IMPORT_C void ConstructL();
 115.224 +	IMPORT_C ~CVersitParser();
 115.225 +	IMPORT_C void								InternalizeL(RFile& aInputFile,TInt& aBytesThroughFile);
 115.226 +	IMPORT_C virtual void						InternalizeL(RReadStream& aStream);
 115.227 +	IMPORT_C virtual void						InternalizeL(HBufC* aEntityName,CLineReader* aLineReader);
 115.228 +	IMPORT_C void								ExternalizeL(RFile& aOutputFile);
 115.229 +	IMPORT_C virtual void						ExternalizeL(RWriteStream& aStream);
 115.230 +	IMPORT_C void								AddEntityL(CVersitParser* aEntity);
 115.231 +	IMPORT_C void								AddPropertyL(CParserProperty* aProperty,TBool aInternalizing=EFalse);
 115.232 +	IMPORT_C CArrayPtr<CVersitParser>*			EntityL(const TDesC& aEntityName,TBool aTakeOwnership=ETrue);
 115.233 +	IMPORT_C CArrayPtr<CVersitParser>*			ArrayOfEntities(TBool aTakeOwnership=ETrue);
 115.234 +	IMPORT_C CArrayPtr<CParserProperty>*		PropertyL(const TDesC8& aPropertyName,const TUid& aPropertyUid,TBool aTakeOwnership=ETrue) const;
 115.235 +	IMPORT_C CArrayPtr<CParserProperty>*		ArrayOfProperties(TBool aTakeOwnership=ETrue);
 115.236 +	IMPORT_C virtual void						ConvertAllPropertyDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 115.237 +	IMPORT_C void								AdjustAllPropertyDateTimesToMachineLocalL();
 115.238 +	IMPORT_C static TBool						IsValidParameterValue(TInt& aPos,const TDesC& aParamValue);
 115.239 +	IMPORT_C void								SetEntityNameL(const TDesC& aEntityName);
 115.240 +	IMPORT_C TPtrC								EntityName() const;
 115.241 +	IMPORT_C static TBool						IsValidLabel(const TDesC& aLabel, TInt& aPos);
 115.242 +	IMPORT_C static TInt						Val(const TDesC& aString, TInt& aNumber);
 115.243 +	IMPORT_C void								SetCharacterConverter(Versit::TEncodingAndCharset& encodingAndCharset);
 115.244 +
 115.245 +	//
 115.246 +	// Set/Get the default settings for the [en|de]coding process
 115.247 +	//
 115.248 +	IMPORT_C Versit::TVersitEncoding			DefaultEncoding() const;
 115.249 +	IMPORT_C void								SetDefaultEncoding(const Versit::TVersitEncoding aEncoding);
 115.250 +	IMPORT_C Versit::TVersitCharSet				DefaultCharSet() const;
 115.251 +	IMPORT_C TUint								DefaultCharSetId() const;
 115.252 +	IMPORT_C void								SetDefaultCharSet(const Versit::TVersitCharSet aCharSet);
 115.253 +	IMPORT_C void								SetDefaultCharSetId(TUint aCharSetId);
 115.254 +	IMPORT_C void								SetAutoDetect(TBool aOn,const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* aAutoDetectCharSets=NULL);
 115.255 +
 115.256 +	//
 115.257 +	// Set/Get Observers and PlugIn's
 115.258 +	//
 115.259 +	inline void									SetObserver(MVersitObserver* aObserver);
 115.260 +	inline MVersitObserver*						Observer();
 115.261 +	inline void									SetPlugIn(MVersitPlugIn* aPlugIn);
 115.262 +	inline MVersitPlugIn*						PlugIn();
 115.263 +
 115.264 +public:
 115.265 +
 115.266 +	IMPORT_C TInt LoadBinaryValuesFromFilesL();
 115.267 +	IMPORT_C TInt LoadBinaryValuesFromFilesL(RFs& aFileSession);
 115.268 +	IMPORT_C TInt SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath);
 115.269 +	IMPORT_C TInt SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath,RFs& aFileSession);
 115.270 +public:
 115.271 +	/** White space character codes: used while analysing the syntax of the received 
 115.272 +	data and while externalising data. 
 115.273 +	@publishedAll
 115.274 +	@released 
 115.275 +	*/
 115.276 +	enum TCharCodes
 115.277 +		{
 115.278 +		/** ' ' */
 115.279 +		ESpace				= ' ',
 115.280 +		/** 9 */
 115.281 +		EHTab				= 9,
 115.282 +		/** 10 */
 115.283 +		ELineFeed			= 10,
 115.284 +		/** 13 */
 115.285 +		ECarriageReturn		= 13
 115.286 +		};
 115.287 +	/** Flags that can be specified on construction. 
 115.288 +	@publishedAll
 115.289 +	@released 
 115.290 +	*/
 115.291 +	enum TVersitParserFlags
 115.292 +		{
 115.293 +		/** This entity does not need a version property. */
 115.294 +		ENoVersionProperty	= 0,
 115.295 +		/** This entity should have a version property. */
 115.296 +		ESupportsVersion	= 0x01,
 115.297 +		//Gaps since other flags have been used in past
 115.298 +		EImportSyncML		= 0x1000,	//Importing from a SyncML server
 115.299 +		/** Indicates whether the parser should use auto-detection of character sets when 
 115.300 +		one has not been explicitly specified. */
 115.301 +		EUseAutoDetection	= 0x4000,
 115.302 +		//versit Internal use only
 115.303 +		/** The current property has specified a character set. */
 115.304 +		ECharSetIdentified	= 0x8000,
 115.305 +		/** If the charset is not explicitly specified, the default charset will be used instead of US-ASCII as required
 115.306 +		by the Versit specification . */
 115.307 +		EUseDefaultCharSetForAllProperties = 0x2000		
 115.308 +		};
 115.309 +
 115.310 +	//
 115.311 +	// Unicode support conversion functions
 115.312 +	//
 115.313 +	IMPORT_C static TInt						ConvertFromUnicodeToISOL(TDes8& aIso, const TDesC16& aUnicode, CCnvCharacterSetConverter* aConverter);
 115.314 +	IMPORT_C TVersitDateTime*					DecodeDateTimeL(TDes& aToken) const;
 115.315 +
 115.316 +protected:
 115.317 +	IMPORT_C TInt								ConvertToUnicodeFromISOL(TDes16& aUnicode, const TDesC8& aIso, TUint aCharacterSet);
 115.318 +
 115.319 +	//
 115.320 +	// Parsing high level functions
 115.321 +	//
 115.322 +	IMPORT_C void								ParsePropertiesL();
 115.323 +	IMPORT_C void								ParseBeginL();
 115.324 +	IMPORT_C void								ParseEndL();
 115.325 +	void										ParseEndL(HBufC16& aEntityName);
 115.326 +	IMPORT_C TBool								ParseEntityL();
 115.327 +	IMPORT_C virtual void						ParsePropertyL();
 115.328 +	IMPORT_C CArrayPtr<CParserParam>*			ReadLineAndDecodeParamsLC(TInt& aValueStart,TInt& aNameLen);
 115.329 +	IMPORT_C void								MakePropertyL(TPtr8& aPropName,TInt aValueStart);
 115.330 +	IMPORT_C CArrayPtr<CParserParam>*			GetPropertyParamsLC(TPtr8 aParams);
 115.331 +	IMPORT_C void								ParseParamL(CArrayPtr<CParserParam>* aArray,TPtr8 aParam);
 115.332 +	IMPORT_C void								AnalysesEncodingCharset(CArrayPtr<CParserParam>* aArrayOfParams);
 115.333 +	IMPORT_C void								ReadMultiLineValueL(TPtr8& aValue,TInt aValueStart,TBool aBinaryData);
 115.334 +	inline TPtr8&								BufPtr();
 115.335 +
 115.336 +	//
 115.337 +	// Append standard versit tokens to streams
 115.338 +	//
 115.339 +	IMPORT_C void								AppendBeginL();
 115.340 +	IMPORT_C void								AppendEndL();
 115.341 +	void										AppendEntityNameL();
 115.342 +	IMPORT_C void								DoAddPropertyL(CParserProperty* aProperty);
 115.343 +
 115.344 +	//
 115.345 +	// Dispatcher functions to create entities/properties based upon a Versit identifying Uid
 115.346 +	//
 115.347 +	IMPORT_C virtual CVersitParser*				MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
 115.348 +	CParserPropertyValueHBufC*					MakeDefaultPropertyValueL(HBufC16*& aValue);
 115.349 +	IMPORT_C virtual CParserPropertyValue*		MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
 115.350 +	IMPORT_C HBufC*								DecodePropertyValueL(const TDesC8& aValue);
 115.351 +	IMPORT_C void								DecodePropertyValueL(const TDesC8& aValue,const TUid& aEncodingUid);
 115.352 +	HBufC*										ConvertToUnicodeL(const TDesC8& aValue);
 115.353 +	IMPORT_C CDesCArray*						MakePropertyValueCDesCArrayL(TPtr16 aStringValue);
 115.354 +	IMPORT_C CArrayPtr<TVersitDateTime>*		MakePropertyValueMultiDateTimeL(TPtr16 aDateTimeGroup);
 115.355 +	IMPORT_C CVersitDaylight*					MakePropertyValueDaylightL(TPtr16 aDaylightValue);
 115.356 +	IMPORT_C TBool								FindFirstField(TPtr16& aField,TPtr16& aRemaining, TBool aTrimSpace=ETrue);
 115.357 +	IMPORT_C void								FindRemainingField(TPtr16& aField,TPtr16& aRemaining);
 115.358 +
 115.359 +	//
 115.360 +	// Helper methods to decode versit dates, times, and time periods
 115.361 +	//
 115.362 +	IMPORT_C TTimeIntervalSeconds				DecodeTimeZoneL(const TDesC& aToken) const;
 115.363 +	IMPORT_C TTime*								DecodeTimePeriodL(const TDesC& aToken) const;
 115.364 +	IMPORT_C TInt								GetNumberL(const TDesC& aToken,TInt& aNumChars) const;
 115.365 +
 115.366 +public:
 115.367 +	IMPORT_C virtual TUid						RecognizeToken(const TDesC8& aToken) const;
 115.368 +	IMPORT_C virtual TInt						RecognizeEntityName() const;
 115.369 +	//
 115.370 +	// Cleanup support methods
 115.371 +	//
 115.372 +	IMPORT_C static void						ResetAndDestroyArrayOfParams(TAny* aObject);
 115.373 +	IMPORT_C static void						ResetAndDestroyArrayOfProperties(TAny* aObject);
 115.374 +	IMPORT_C static void						ResetAndDestroyArrayOfEntities(TAny* aObject);
 115.375 +	IMPORT_C static void						ResetAndDestroyArrayOfDateTimes(TAny* aObject);
 115.376 +
 115.377 +	inline void									SetFlags(TUint aFlags);
 115.378 +
 115.379 +	
 115.380 +
 115.381 +protected:
 115.382 +	//
 115.383 +	// Enquiry functions
 115.384 +	//
 115.385 +	static TBool								IsPunctuationToken(TUint aChar);
 115.386 +	inline TBool								SupportsVersion() const;
 115.387 +	inline void									SetSupportsVersion();
 115.388 +	inline void									ClearSupportsVersion();
 115.389 +
 115.390 +	//
 115.391 +	// Set the settings for the [en|de]coding of the current property
 115.392 +	//
 115.393 +	IMPORT_C void								RestoreLineCodingDetailsToDefault();
 115.394 +	IMPORT_C void								SetLineEncoding(Versit::TVersitEncoding aLineEncoding);
 115.395 +	IMPORT_C void								SetLineEncoding(TUint aVersitEncodingUid);
 115.396 +	IMPORT_C void								SetLineCharacterSet(Versit::TVersitCharSet aLineCharSet);
 115.397 +	IMPORT_C void								SetLineCharacterSetId(TUint aLineCharSetId);
 115.398 +	IMPORT_C void								SetLineCoding(Versit::TVersitCharSet aLineCharSet, Versit::TVersitEncoding aLineEncoding);
 115.399 +
 115.400 +	//
 115.401 +	// Return the settings for the current property
 115.402 +	//
 115.403 +	IMPORT_C Versit::TVersitEncoding			LineEncoding() const;
 115.404 +	IMPORT_C Versit::TVersitCharSet				LineCharSet() const;
 115.405 +	IMPORT_C TUint								LineEncodingId() const;
 115.406 +	IMPORT_C TUint								LineCharSetId() const;
 115.407 +
 115.408 +	inline CVersitUnicodeUtils&					UnicodeUtils();
 115.409 +
 115.410 +public:
 115.411 +	//
 115.412 +	// Static utility functions to aid with the Unicode conversion process
 115.413 +	//
 115.414 +	static TUint								MapVersitCharsetToCharConvCharset(Versit::TVersitCharSet aVersitSet);
 115.415 +	static TUint								MapVersitEncodingToConArcUid(Versit::TVersitEncoding aVersitEncoding);
 115.416 +
 115.417 +private:
 115.418 +	void										SetLineCharsetDetailsToDefault();
 115.419 +	void										SetLineEncodingDetailsToDefault();
 115.420 +
 115.421 +private:	//To fix TimeZone SyncML bug
 115.422 +	void										ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 115.423 +	void										ConvertUTCDateTimeToMachineLocal(TVersitDateTime* aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 115.424 +	//void										AddTimeZonePropertyL();
 115.425 +
 115.426 +protected:
 115.427 +	struct TParserCodingDetails
 115.428 +		{
 115.429 +		Versit::TVersitEncoding		iEncoding;
 115.430 +		TUint						iEncodingUid;
 115.431 +		Versit::TVersitCharSet		iCharSet;
 115.432 +		TUint						iCharSetUid;
 115.433 +		};
 115.434 +
 115.435 +protected:
 115.436 +	// Default settings & internal flags
 115.437 +	TInt							iFlags;
 115.438 +	TParserCodingDetails			iDefaultCodingDetails;
 115.439 +	TParserCodingDetails			iCurrentPropertyCodingDetails;
 115.440 +	TBuf<KVersitMaxVersionLength>	iDefaultVersion;
 115.441 +	const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iAutoDetectCharSets;
 115.442 +
 115.443 +	// Member data relating to the current item being parsed
 115.444 +	HBufC*							iEntityName;
 115.445 +	CArrayPtr<CVersitParser>*		iArrayOfEntities;
 115.446 +	CArrayPtr<CParserProperty>*		iArrayOfProperties;
 115.447 +	CParserProperty*				iCurrentProperty;
 115.448 +	CLineReader*					iOwnedLineReader;
 115.449 +	CLineReader*					iLineReader;
 115.450 +	HBufC8*							iDecodedValue;
 115.451 +	CBufSeg*						iLargeDataBuf;
 115.452 +
 115.453 +	// In memory buffers
 115.454 +	RWriteStream*					iWriteStream;
 115.455 +
 115.456 +	// General utility class
 115.457 +	CVersitTlsData*					iStaticUtils;
 115.458 +
 115.459 +	// Plug-in classes
 115.460 +	MVersitObserver*				iObserver;
 115.461 +	MVersitPlugIn*					iPlugIn;
 115.462 +
 115.463 +private:
 115.464 +	void DoInternalizeL();
 115.465 +	IMPORT_C virtual void Reserved1();
 115.466 +	IMPORT_C virtual void Reserved2();
 115.467 +private:
 115.468 +	TInt iParseBegin;
 115.469 +	TInt iReserved2;
 115.470 +	};
 115.471 +
 115.472 +NONSHARABLE_CLASS( CVersitTLSContainer ): public CBase	
 115.473 +/**
 115.474 +Wrapper class for static variables to be stored in TLS
 115.475 +@internalComponent
 115.476 +@released
 115.477 +*/
 115.478 +	{
 115.479 +public:
 115.480 +	static CVersitTLSContainer *NewLC(const TInt aSize);
 115.481 +	~CVersitTLSContainer();
 115.482 +public:
 115.483 +	HBufC * iShiftJisEscape;//Store shift-jis escape charcter, as generated by relevant charconv plugin	
 115.484 +	};
 115.485 +
 115.486 +#include <versit.inl>
 115.487 +
 115.488 +#endif
   116.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   116.2 +++ b/epoc32/include/app/versit.inl	Wed Mar 31 12:27:01 2010 +0100
   116.3 @@ -0,0 +1,112 @@
   116.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   116.5 +// All rights reserved.
   116.6 +// This component and the accompanying materials are made available
   116.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   116.8 +// which accompanies this distribution, and is available
   116.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  116.10 +//
  116.11 +// Initial Contributors:
  116.12 +// Nokia Corporation - initial contribution.
  116.13 +//
  116.14 +// Contributors:
  116.15 +//
  116.16 +// Description:
  116.17 +// CVersitParser
  116.18 +// 
  116.19 +//
  116.20 +
  116.21 +inline void CLineReader::SetPlugIn(MVersitPlugIn* aPlugIn)
  116.22 +/** Sets the plug-in.
  116.23 +
  116.24 +Allows implemented functions of the MVersitPlugIn class to be used in specifying 
  116.25 +options for adding and deleting spaces to/from the buffer. 
  116.26 +
  116.27 +Specifically, the plug-in is used to determine whether an additional space should 
  116.28 +be added when appending a line to the buffer (by default a space will be added), 
  116.29 +and whether the white space at the start of a line should form part of the data 
  116.30 +(by default it will not form part of the data).
  116.31 +
  116.32 +Using a plug-in is optional. 
  116.33 +
  116.34 +@param aPlugIn A pointer to an MVersitPlugIn instance. */
  116.35 +	{iPlugIn=aPlugIn;}
  116.36 +
  116.37 +inline void CLineReader::SetSkipWhiteSpaceAtStart(TBool aDoSkip)
  116.38 +	{iSkipWhiteSpaceAtStart=aDoSkip;}
  116.39 +
  116.40 +
  116.41 +//
  116.42 +// CVersitParser
  116.43 +//
  116.44 +
  116.45 +inline void CVersitParser::SetObserver(MVersitObserver* aObserver)
  116.46 +/** Sets the Versit observer.
  116.47 +
  116.48 +@param aObserver A pointer to the observer. */
  116.49 +	{iObserver=aObserver;}
  116.50 +
  116.51 +inline MVersitObserver* CVersitParser::Observer()
  116.52 +/** Gets a pointer to the Versit observer.
  116.53 +
  116.54 +@return A pointer to the observer. */
  116.55 +	{return iObserver;}
  116.56 +
  116.57 +inline void CVersitParser::SetPlugIn(MVersitPlugIn* aPlugIn)
  116.58 +/** Sets the Versit plug-in.
  116.59 +
  116.60 +If there is one, the Versit plug-in needs to be set before any properties are 
  116.61 +added to the parser. This is done for you when internalising (using InternalizeL()) 
  116.62 +or adding properties (using AddPropertyL()).
  116.63 +
  116.64 +@param aPlugIn A pointer to the plug in. */
  116.65 +	{iPlugIn=aPlugIn;}
  116.66 +
  116.67 +inline MVersitPlugIn* CVersitParser::PlugIn()
  116.68 +/** Gets a pointer to the Versit plug-in.
  116.69 +
  116.70 +@return A pointer to the plug-in. */
  116.71 +	{return iPlugIn;}
  116.72 +
  116.73 +/* Gets a pointer to the read buffer owned by the CLineReader.
  116.74 + *
  116.75 + * @return Pointer to the read buffer. */
  116.76 +inline TPtr8& CVersitParser::BufPtr()
  116.77 +	{return iLineReader->iBufPtr;}
  116.78 +
  116.79 +/*
  116.80 + * Check the iFlags to see if <code>ESupportsVersion</code> is set
  116.81 + *
  116.82 + * @return    " TBool "
  116.83 + *            <code>ETrue</code> if the parser supports the version property
  116.84 + *            <code>EFalse</code> otherwise
  116.85 + */
  116.86 +inline TBool CVersitParser::SupportsVersion() const
  116.87 +	{return iFlags & ESupportsVersion;}
  116.88 +
  116.89 +/*
  116.90 + * Sets the iFlags to <code>ESupportsVersion</code>
  116.91 + */
  116.92 +inline void CVersitParser::SetSupportsVersion()
  116.93 +	{iFlags |= ESupportsVersion;}
  116.94 +
  116.95 +/*
  116.96 + * Clear the bit of <code>ESupportsVersion</code> in iFlags'
  116.97 + */
  116.98 +inline void CVersitParser::ClearSupportsVersion()
  116.99 +	{iFlags &= ~ESupportsVersion;}
 116.100 +
 116.101 +/*
 116.102 + * Set Flags
 116.103 + */
 116.104 +inline void CVersitParser::SetFlags(TUint aFlags)
 116.105 +	{iFlags |= aFlags;}
 116.106 +
 116.107 +/*
 116.108 + * Gets a reference to <code>CVersitUnicodeUtils</code>
 116.109 + * which is used for charset conversion 
 116.110 + *
 116.111 + * @return    " CVersitUnicodeUtils&"
 116.112 + *            reference to <code>CVersitUnicodeUtils</code>
 116.113 + */
 116.114 +inline CVersitUnicodeUtils& CVersitParser::UnicodeUtils()
 116.115 +	{ return iStaticUtils->UnicodeUtils(); }
   117.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   117.2 +++ b/epoc32/include/app/versittls.h	Wed Mar 31 12:27:01 2010 +0100
   117.3 @@ -0,0 +1,110 @@
   117.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   117.5 +// All rights reserved.
   117.6 +// This component and the accompanying materials are made available
   117.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   117.8 +// which accompanies this distribution, and is available
   117.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  117.10 +//
  117.11 +// Initial Contributors:
  117.12 +// Nokia Corporation - initial contribution.
  117.13 +//
  117.14 +// Contributors:
  117.15 +//
  117.16 +// Description:
  117.17 +//
  117.18 +
  117.19 +#ifndef __VERSITTLS_H__
  117.20 +#define __VERSITTLS_H__
  117.21 +
  117.22 +// System includes
  117.23 +#include <e32base.h>
  117.24 +#include <charconv.h>
  117.25 +
  117.26 +#include <vutil.h>
  117.27 +
  117.28 +class CVersitTimer;
  117.29 +class CVersitAdditionalStorage;
  117.30 +
  117.31 +class CVersitTlsData : public CBase
  117.32 +/** Versit thread local storage.
  117.33 +
  117.34 +This class provides a performance improvement by allowing a CVersitUnicodeUtils 
  117.35 +instance to be shared between parsers operating in the same thread, so that 
  117.36 +a new instance does not have to be created for each parser. A pointer to the 
  117.37 +unicode utilities object is held in thread local storage: a single word (32bits) 
  117.38 +of data. Each unicode utilities object is managed by an instance of this class.
  117.39 +
  117.40 +Every time a parser is created, CVersitParser::ConstructL() calls the 
  117.41 +CVersitTlsData constructor, and when the parser is destroyed the CVersitTlsData 
  117.42 +destructor is called. If a CVersitTlsData object exists, the constructor 
  117.43 +returns a pointer to it, otherwise a new one is constructed. The CVersitTlsData 
  117.44 +object is only destroyed when no more parsers refer to it: a count is kept, 
  117.45 +which is incremented every time the constructor is called and decremented each 
  117.46 +time the destructor is called, and the object is only destroyed when the count 
  117.47 +reaches zero.
  117.48 +
  117.49 +This class provides an additional major performance improvement 
  117.50 +if you are sequentially constructing and destructing multiple parsers. 
  117.51 +By default, when the count of parsers reaches zero, the thread local 
  117.52 +storage object is destroyed (even if the thread has not finished). However, 
  117.53 +by using the technique described below, the thread local storage object, and therefore 
  117.54 +the unicode utilities object, can be made to persist, significantly reducing 
  117.55 +the overhead of sequentially constructing and destructing parsers.
  117.56 +
  117.57 +The constructor needs to be called an extra time before creating any parsers, 
  117.58 +and the destructor needs to be called an extra time once the parsers have 
  117.59 +been destroyed. This has the effect of adding one to the reference count so 
  117.60 +that during all the parser construction and deletion the count never hits 
  117.61 +zero, which would trigger the TLS object's destruction.
  117.62 +
  117.63 +This can be implemented as follows:
  117.64 +
  117.65 +1. Create a thread local storage data class instance as follows: 
  117.66 +@code
  117.67 +CVersitTlsData* versitTLS = CVersitTlsData::VersitTlsDataL(); 
  117.68 +@endcode
  117.69 +
  117.70 +2. Create and delete the parsers. 
  117.71 +
  117.72 +3. Delete the Thread Local Storage Data class instance: 
  117.73 +@code
  117.74 +delete versitTLS; 
  117.75 +@endcode 
  117.76 +@publishedAll
  117.77 +@released
  117.78 +*/
  117.79 +	{
  117.80 +	friend class CVersitTimer;
  117.81 +
  117.82 +public:
  117.83 +	IMPORT_C static CVersitTlsData& VersitTlsDataL();
  117.84 +	IMPORT_C static void CloseVersitTlsData();
  117.85 +	IMPORT_C void VersitTlsDataClose();
  117.86 +
  117.87 +public:
  117.88 +	inline CVersitUnicodeUtils& UnicodeUtils() 
  117.89 +	/** Returns a pointer to the current Unicode utilities object.
  117.90 +	
  117.91 +	@return A pointer to the current Unicode utilities object. */
  117.92 +		{ return *iUnicodeUtils; }
  117.93 +
  117.94 +    inline CVersitAdditionalStorage& AdditionalStorage()
  117.95 +	/** Returns a pointer to the additional property storage object.
  117.96 +	
  117.97 +	@return A pointer to the additional property storage. */
  117.98 +        {
  117.99 +        return *iAdditionalStorage;
 117.100 +        }
 117.101 +
 117.102 +private:
 117.103 +	static CVersitTlsData* NewL();
 117.104 +	void ConstructL();
 117.105 +	~CVersitTlsData();
 117.106 +
 117.107 +private:
 117.108 +	TInt iRefCount;
 117.109 +	CVersitUnicodeUtils* iUnicodeUtils;
 117.110 +    CVersitAdditionalStorage* iAdditionalStorage;
 117.111 +	};
 117.112 +
 117.113 +#endif
   118.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   118.2 +++ b/epoc32/include/app/vobserv.h	Wed Mar 31 12:27:01 2010 +0100
   118.3 @@ -0,0 +1,257 @@
   118.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   118.5 +// All rights reserved.
   118.6 +// This component and the accompanying materials are made available
   118.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   118.8 +// which accompanies this distribution, and is available
   118.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  118.10 +//
  118.11 +// Initial Contributors:
  118.12 +// Nokia Corporation - initial contribution.
  118.13 +//
  118.14 +// Contributors:
  118.15 +//
  118.16 +// Description:
  118.17 +//
  118.18 +
  118.19 +#ifndef __VOBSERV_H__
  118.20 +#define __VOBSERV_H__
  118.21 +
  118.22 +#ifndef __E32DEF_H__
  118.23 +#include <e32def.h>
  118.24 +#endif
  118.25 +#ifndef __E32STD_H__
  118.26 +#include <e32std.h>
  118.27 +#endif
  118.28 +#ifndef __E32DES16_H__
  118.29 +#include <e32des16.h>
  118.30 +#endif
  118.31 +#ifndef __S32STRM_H__
  118.32 +#include <s32strm.h>
  118.33 +#endif
  118.34 +#ifndef __VUTIL_H__
  118.35 +#include <vutil.h>
  118.36 +#endif
  118.37 +
  118.38 +class CVersitParser;
  118.39 +
  118.40 +class MVersitObserver
  118.41 +/** A Versit parser observer.
  118.42 +
  118.43 +This is a plug-in class and contains only pure virtual functions.
  118.44 +
  118.45 +An implementator of this class can find out the version number of an entity 
  118.46 +being parsed. The version number specifies the version of the vCard/vCalendar 
  118.47 +specification used by the data of the vCard/vCalendar. This is for use in 
  118.48 +conjunction with the MVersitPlugin class, which adjusts the parser's behaviour 
  118.49 +according to the vCard/vCalendar version.
  118.50 +
  118.51 +An implementator of this class can also respond to the creation of a new parser 
  118.52 +for an embedded sub-entity. This is so that the observer can set the MVersitPlugin, 
  118.53 +as well as itself, for each new parser that is created.
  118.54 +
  118.55 +An observer is set up for a Versit parser using CVersitParser::SetObserver(). 
  118.56 +@publishedAll
  118.57 +@released
  118.58 +*/
  118.59 +	{
  118.60 +public:
  118.61 +	/** Called when the version property (a property of the name KVersitTokenVERSION) 
  118.62 +	of an entity is parsed during internalisation of a stream, if the Versit parser 
  118.63 +	has an observer.
  118.64 +	
  118.65 +	An implementation of this function can determine the version of an entity 
  118.66 +	being parsed.
  118.67 +	
  118.68 +	Called by CVersitParser::ParsePropertiesL().
  118.69 +	
  118.70 +	@param aParser A pointer to the parser object that detected the version.
  118.71 +	@param aVersion A unicode string containing the version number detected. */
  118.72 +	virtual void VersionSet(CVersitParser* aParser,const TDesC16& aVersion)=0;
  118.73 +	/** Called when a new Versit parser is created to parse an embedded object, 
  118.74 +	specifically a vEvent, a vTodo or an agent, if the Versit parser has an observer.
  118.75 +	
  118.76 +	@param aParser The newly created Versit entity. */
  118.77 +	virtual void NewParser(CVersitParser* aParser)=0;
  118.78 +private:
  118.79 +	IMPORT_C virtual void Reserved1();
  118.80 +	IMPORT_C virtual void Reserved2();
  118.81 +	};
  118.82 +
  118.83 +class MVersitPlugIn
  118.84 +/** A Versit parser plug-in.
  118.85 +
  118.86 +This is a plug-in class and contains only pure virtual functions.
  118.87 +
  118.88 +An implementator of this class can override some of the low level behaviour 
  118.89 +of a Versit parser. For instance, options are provided to determine behaviour 
  118.90 +during line wrapping and unwrapping.
  118.91 +
  118.92 +The use of this plug-in is optional, and when there is no plug-in the parser 
  118.93 +object will use default behaviour. However, vCard v3.0 has some differences 
  118.94 +to vCard v2.1, such as for line wrapping and unwrapping. Symbian OS supports 
  118.95 +vCard v2.1 in its default behaviour. Therefore this plug-in can be used to 
  118.96 +provide compatibility with vCard v3.0. 
  118.97 +@publishedAll
  118.98 +@released
  118.99 +*/
 118.100 +	{
 118.101 +public:
 118.102 +	/** Tests whether a space is to be added when merging (unwrapping) two lines 
 118.103 +	while internalising a stream. 
 118.104 +	
 118.105 +	If there is no plug-in then a space will be added.
 118.106 +	
 118.107 +	Used by the CLineReader class.
 118.108 +	
 118.109 +	@return ETrue if a space is to be added and EFalse if not. */
 118.110 +	virtual TBool AddSpace()=0;				//Unwrapping lines
 118.111 +	/** Tests whether white space at the start of a line, apart from the first space, 
 118.112 +	forms part of the data when internalising a stream.
 118.113 +	
 118.114 +	Note that the first space is always ignored and never included.
 118.115 +	
 118.116 +	If there is no plug-in then the rest of the white space at the start of a 
 118.117 +	line (tabs and spaces) is skipped and does not form part of the data when 
 118.118 +	internalising a stream.
 118.119 +	
 118.120 +	Used by the CLineReader class.
 118.121 +	
 118.122 +	@return EFalse if the spaces are to be part of the data and ETrue if not. */
 118.123 +	virtual TBool DeleteAllSpaces()=0;		//Unwrapping lines
 118.124 +	/** Tests how the end of Base64 data (data encoded using Versit::EBase64Encoding) 
 118.125 +	should be detected when internalising a stream. 
 118.126 +	
 118.127 +	To determine the end of Base64 data, either a blank line can be used, or a line 
 118.128 +	without a space at the start.
 118.129 +	
 118.130 +	If there is no plug-in then a blank line will be looked for. 
 118.131 +	
 118.132 +	Used by the CVersitParser class.
 118.133 +	
 118.134 +	@return ETrue if a blank line should be used and EFalse if a line without 
 118.135 +	a space at the start should be used. */
 118.136 +	virtual TBool NeedsBlankLine()=0;		//Unwrapping Base64 data
 118.137 +	/** Allows the removal of escape characters from a property value when internalising 
 118.138 +	from a stream.
 118.139 +	
 118.140 +	Versit deals with the escaping of semi-colons and the escape character itself 
 118.141 +	(that is, the Yen character for Shift-JIS or a backslash for other character 
 118.142 +	sets) without the help of a plug-in. Other characters, such as commas and 
 118.143 +	carriage returns, can be escaped and un-escaped using the plug-in's AddEscaping() 
 118.144 +	and RemoveEscaping().
 118.145 +	
 118.146 +	This function is needed as escaping is done differently in vCard v3.0: firstly, 
 118.147 +	commas are used as syntactical characters and so need to be escaped when they 
 118.148 +	are just part of the text; secondly, \\r\\n in plain (un-encoded) text is used 
 118.149 +	to mean a CRLF, whereas v2.1 forces you to use Quoted Printble encoding if 
 118.150 +	there is a CRLF in the data.
 118.151 +	
 118.152 +	Note that, although the string passed into this function can be changed, it 
 118.153 +	must not be made longer.
 118.154 +	
 118.155 +	Used by the CVersitParser class.
 118.156 +	
 118.157 +	@param aText The property value text from which escape characters are to be 
 118.158 +	removed. */
 118.159 +	virtual void RemoveEscaping(TPtr16& aText)=0;
 118.160 +	/** Allows the addition of escape characters to a property value when externalising 
 118.161 +	to a stream. 
 118.162 +	
 118.163 +	Versit deals with the escaping of semi-colons and the escape character itself 
 118.164 +	(that is, the Yen character for Shift-JIS or a backslash for other character 
 118.165 +	sets) without the help of a plug-in. Other characters, such as commas and 
 118.166 +	carriage returns, can be escaped and un-escaped using the plug-in's RemoveEscaping() 
 118.167 +	and AddEscaping().
 118.168 +	
 118.169 +	This function is needed as escaping is done differently in vCard v3.0: firstly, 
 118.170 +	commas are used as syntactical characters and so need to be escaped when they 
 118.171 +	are just part of the text; secondly, \\r\\n in plain (un-encoded) text is used 
 118.172 +	to mean a CRLF, whereas v2.1 forces you to use Quoted Printble encoding if 
 118.173 +	there is a CRLF in the data.
 118.174 +	
 118.175 +	If the string passed into this function needs to be made longer, then this 
 118.176 +	should be done with the following command, otherwise the cleanup stack will 
 118.177 +	eventually panic:
 118.178 +	
 118.179 +	@code
 118.180 +	aText=aText->ReAllocL(newSize); 
 118.181 +	@endcode
 118.182 +	
 118.183 +	Used by the CParserPropertyValue class.
 118.184 +	
 118.185 +	@param aText The property value text to which escape characters are to be 
 118.186 +	added. */
 118.187 +	virtual void AddEscaping(HBufC16*& aText)=0;
 118.188 +	/** Determines how an unencoded property value should be wrapped when externalising 
 118.189 +	to a stream.
 118.190 +	
 118.191 +	If there is no plug-in then line wrapping will follow vCal v1.0 and vCard 
 118.192 +	v2.1 wrapping rules. In this case, the text is split into lines with a maximum 
 118.193 +	length of KMaxExternalizedTokenLength (70) characters, and two spaces are inserted 
 118.194 +	at the beginning of each new line.
 118.195 +	
 118.196 +	Used by the CParserPropertyValue class.
 118.197 +	
 118.198 +	@param aStream The stream to write the text to.
 118.199 +	@param aCurrentLineLength The number of characters already written to the current 
 118.200 +	line, which needs to be taken into account when calculating where the next 
 118.201 +	line break should occur. This value should be updated before returning.
 118.202 +	@param aText The property value text to write to the stream, in the correct 
 118.203 +	character set and encoded as necessary.
 118.204 +	@return ETrue if the property value is wrapped using the method defined in 
 118.205 +	this (overloaded) function. EFalse if the property value text is not wrapped 
 118.206 +	by this function (in which case the default wrapping rules are implemented). */
 118.207 +	virtual TBool WrapLine(RWriteStream& aStream,TInt& aCurrentLineLength,const TPtr8& aText)=0;
 118.208 +	/** Determines how property values are encoded when externalising a property to 
 118.209 +	a stream.
 118.210 +	
 118.211 +	This function is called for each property in turn and can specify how encoding 
 118.212 +	should be implemented for the value of that property.
 118.213 +	
 118.214 +	If there is no plug-in, or this function returns EFalse, then the default 
 118.215 +	rules are used to determine how each property value is encoded.
 118.216 +	
 118.217 +	Used by the CVersitParser plug-in when externalising a property.
 118.218 +	
 118.219 +	@param aEncoding On return, specifies the encoding type used.
 118.220 +	@param aRequiresEncoding ETrue if encoding is required. This is the case if 
 118.221 +	either the default encoding is not Versit::ENoEncoding, or if the property 
 118.222 +	value contains characters that cannot be written out directly (e.g. equals, 
 118.223 +	CR, LF, tab or non-ASCII characters).
 118.224 +	@param aDefaultEncoding The default encoding specifed by the user of the parser.
 118.225 +	@param aPropertyUid The property UID of the property being externalised. These are 
 118.226 +	defined in vuid.h.
 118.227 +	@param aPropertyCharsetId The character set UID of the character set being 
 118.228 +	used to output the property.
 118.229 +	@return ETrue if the encoding type to be used is defined in this (overloaded) 
 118.230 +	function. EFalse if this function does not determine the encoding type (in 
 118.231 +	which case Versit's default method is used to decide the encoding type). */
 118.232 +	virtual TBool EncodingType(Versit::TVersitEncoding& aEncoding,TBool aRequiresEncoding,Versit::TVersitEncoding aDefaultEncoding
 118.233 +																						,TUid aPropertyUid,TUint aPropertyCharsetId)=0;
 118.234 +	/** Returns the encoding name to be used for a specified encoding type when externalising 
 118.235 +	a property to a stream, or allows the default name to be used.
 118.236 +	
 118.237 +	Can override the default name Versit would select if there was no plug-in ("BASE64", 
 118.238 +	"QUOTED-PRINTABLE", "8-BIT").
 118.239 +	
 118.240 +	The default names are selected using VersitUtils::IANAEncodingName().
 118.241 +	
 118.242 +	Used by the CVersitParser class when externalising a property.
 118.243 +	
 118.244 +	@param aEncoding The encoding type the name is required for.
 118.245 +	@return The name to use for the encoding type, or a zero length descriptor 
 118.246 +	if the default name should be used. */
 118.247 +	virtual const TDesC8& EncodingName(Versit::TVersitEncoding aEncoding)=0;
 118.248 +	
 118.249 +	/** Returns a pointer to a specified interface extension - to allow future extension
 118.250 +	of this class without breaking binary compatibility
 118.251 +
 118.252 +	@param aInterfaceUid Identifier of the interface to be retrieved
 118.253 +	@param aInterface A reference to a pointer that retrieves the specified interface.
 118.254 +	*/
 118.255 +	IMPORT_C virtual void GetInterface(TUid aInterfaceUid, TAny*& aInterface);
 118.256 +private:
 118.257 +	IMPORT_C virtual void Reserved2();
 118.258 +	};
 118.259 +
 118.260 +#endif
   119.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   119.2 +++ b/epoc32/include/app/vprop.h	Wed Mar 31 12:27:01 2010 +0100
   119.3 @@ -0,0 +1,697 @@
   119.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   119.5 +// All rights reserved.
   119.6 +// This component and the accompanying materials are made available
   119.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   119.8 +// which accompanies this distribution, and is available
   119.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  119.10 +//
  119.11 +// Initial Contributors:
  119.12 +// Nokia Corporation - initial contribution.
  119.13 +//
  119.14 +// Contributors:
  119.15 +//
  119.16 +// Description:
  119.17 +//
  119.18 +
  119.19 +#ifndef __VPROP_H__
  119.20 +#define __VPROP_H__
  119.21 +
  119.22 +#ifndef __E32BASE_H__
  119.23 +#include <e32base.h>
  119.24 +#endif
  119.25 +
  119.26 +#ifndef __BADESCA_H__
  119.27 +#include <badesca.h>
  119.28 +#endif
  119.29 +
  119.30 +#ifndef __S32STRM_H__
  119.31 +#include <s32strm.h>
  119.32 +#endif
  119.33 +
  119.34 +#ifndef __E32MATH_H__
  119.35 +#include <e32math.h>
  119.36 +#endif
  119.37 +
  119.38 +
  119.39 +#ifndef __VUID_H__
  119.40 +#include <vuid.h>
  119.41 +#endif
  119.42 +
  119.43 +#ifndef __VTOKEN_H__
  119.44 +#include <vtoken.h>
  119.45 +#endif
  119.46 +
  119.47 +#ifndef __VUTIL_H__
  119.48 +#include <vutil.h>
  119.49 +#endif
  119.50 +
  119.51 +#ifndef __S32FILE_H__
  119.52 +#include <s32file.h>
  119.53 +#endif
  119.54 +// 
  119.55 +
  119.56 +class CParserProperty;
  119.57 +class CVersitParser;
  119.58 +class MVersitPlugIn;
  119.59 +class CParserPropertyValueCDesCArray;
  119.60 +
  119.61 +const TInt KRandomnumberlen = 5;
  119.62 +const TInt KMaxGeneratedfilenamelen =16; 
  119.63 +//
  119.64 +// CParserParam
  119.65 +//
  119.66 +
  119.67 +class CParserParam : public CBase
  119.68 +/** A Versit property parameter. 
  119.69 +
  119.70 +A property parameter consists of a name and optionally a value, both in descriptor 
  119.71 +form. Parser properties (class CParserProperty) may own one or more property 
  119.72 +parameters.
  119.73 +
  119.74 +Note:
  119.75 +
  119.76 +The private parameter name and value members are stored as narrow (8-bit) 
  119.77 +rather than 16-bit Unicode descriptors.
  119.78 +
  119.79 +However, certain member functions take or return a Unicode value, 
  119.80 +for the purpose of backwards compatibility. In this case a simple conversion 
  119.81 +takes place: this ignores the top 8 bits (for Unicode -> Narrow) or adds zero 
  119.82 +for the top 8-bits (for Narrow->Unicode). 
  119.83 +@publishedAll
  119.84 +@released
  119.85 +*/
  119.86 +	{
  119.87 +public:
  119.88 +	IMPORT_C static CParserParam* NewL(const TDesC8& aName, const TDesC8& aValue);
  119.89 +	IMPORT_C static CParserParam* NewL(const TDesC8& aName, const TDesC& aValue);
  119.90 +	IMPORT_C ~CParserParam();
  119.91 +	IMPORT_C void SetValueL(const TDesC8& aValue);
  119.92 +	IMPORT_C void SetValueL(HBufC8* aValue);
  119.93 +	IMPORT_C TInt ExternalizeL(RWriteStream& aStream) const;
  119.94 +	IMPORT_C TPtrC8 Name() const;
  119.95 +	IMPORT_C TPtrC8 Value() const;
  119.96 +	IMPORT_C HBufC* ValueL() const;
  119.97 +	IMPORT_C TInt ExternalizeL(RWriteStream& aStream, TInt& aLengthOutput, CVersitParser* aVersitParser) const;
  119.98 +private:
  119.99 +	CParserParam(HBufC8* aName, HBufC8* aValue);
 119.100 +private:
 119.101 +	HBufC8* iParamName;
 119.102 +	HBufC8* iValue;
 119.103 +	};
 119.104 +
 119.105 +//
 119.106 +// TVersitDateTime
 119.107 +//
 119.108 +
 119.109 +class TVersitDateTime
 119.110 +/** Defines a Versit date and time.
 119.111 +
 119.112 +This class is used throughout Versit to represent the date and time. It uses 
 119.113 +a TDateTime object to store the date/time value and records whether this value 
 119.114 +is local to the machine which originated the vCard, local to the machine on 
 119.115 +which the code is running, or universal time (UTC).
 119.116 +
 119.117 +The Year(), Month() and Day() member functions of class TDateTime may be used 
 119.118 +to extract the date and time components from the TVersitDateTime::iDateTime. 
 119.119 +@publishedAll
 119.120 +@released */
 119.121 +	{
 119.122 +public:
 119.123 +	/** Relative time flags. */
 119.124 +	enum TRelativeTime
 119.125 +		{
 119.126 +		/** Time is stored in UTC. */
 119.127 +		EIsUTC,
 119.128 +		/** Time is local to the machine which originated the vCard. */
 119.129 +		EIsVCardLocal,
 119.130 +		/** Time is local to the machine on which the code is running. */
 119.131 +		EIsMachineLocal,
 119.132 +		/** Unused. */
 119.133 +		EIsCorrect
 119.134 +		};
 119.135 +	IMPORT_C TVersitDateTime(const TDateTime& aDateTime,TRelativeTime aRelativeTime);
 119.136 +
 119.137 +	/** Date/time flags. 
 119.138 +	@publishedAll
 119.139 +	@deprecated since 9.1*/
 119.140 +	enum TVersitDateTimeFlags 
 119.141 +		{
 119.142 +		EExportNullFlag=0,
 119.143 +		/** Indicates whether the relative time is to be externalized along with the date/time 
 119.144 +		value.
 119.145 +	
 119.146 +		The flag is set to 'EExportNullFlag' by default.
 119.147 +	
 119.148 +		This is only implemented (by CParserTimePropertyValue::EncodeVersitDateTimeL()) 
 119.149 +		if the date/time is universal. When the flag is set, the externalised value 
 119.150 +		is followed by the token, KVersitTokenUniversalTime. */
 119.151 +		EExportTimeZoneDesignator=0x01,
 119.152 +		EExportLeaveAsLocalTime=0x02
 119.153 +		};
 119.154 +	/**
 119.155 +	@deprecated since 9.1
 119.156 +	*/
 119.157 +	inline void SetFlag(TVersitDateTimeFlags aFlag) { iFlags |= aFlag; }
 119.158 +	/**
 119.159 +	@deprecated since 9.1
 119.160 +	*/
 119.161 +	inline TBool IsFlagSet(TVersitDateTimeFlags aFlag) const { return iFlags & aFlag; }
 119.162 +	/**
 119.163 +	@deprecated since 9.1
 119.164 +	*/
 119.165 +	inline void ClearFlag(TVersitDateTimeFlags aFlag) { iFlags &= ~aFlag; }
 119.166 +public:
 119.167 +	/** The date/time value. */
 119.168 +	TDateTime iDateTime;
 119.169 +	/** Specifies whether the time value is local to the machine which originated the 
 119.170 +	vCard, local to the machine on which the code is running, or universal. */
 119.171 +	TRelativeTime iRelativeTime;
 119.172 +private:
 119.173 +	TInt iFlags;
 119.174 +	};
 119.175 +
 119.176 +//
 119.177 +// CParserPropertyValue
 119.178 +//
 119.179 +class CParserPropertyValue : public CBase
 119.180 +/** Abstract base class for all property values. 
 119.181 +
 119.182 +Defines a pure virtual ExternalizeL() function which should write out the 
 119.183 +property value to a stream.
 119.184 +
 119.185 +The type of derived class is returned by the Uid() function; the UID value is 
 119.186 +specified on construction.
 119.187 +
 119.188 +The other functions relate to the character set, encoding format and plug-in 
 119.189 +used during externalising. 
 119.190 +@publishedAll
 119.191 +@released
 119.192 +*/
 119.193 +	{
 119.194 +public:
 119.195 +	/** Externalises the property value to a write stream. 
 119.196 +	
 119.197 +	Implementations of this function are invoked by the parser's ExternalizeL() 
 119.198 +	function.
 119.199 +	
 119.200 +	@param aStream Stream to which the property value is externalised.
 119.201 +	@param aEncodingCharset The character set and encoding information.
 119.202 +	@param aLengthOutput The amount of text that has been outputted so far on the 
 119.203 +	line (for the property name), which may need to be taken into account when 
 119.204 +	calculating if and where any line break should occur. */
 119.205 +	virtual void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput)=0;
 119.206 +	IMPORT_C virtual TBool IsAsciiCharacterSetSufficient();
 119.207 +	IMPORT_C virtual void EncodeL(CBufBase* aTarget,const TDesC8& aSource,const TUid& aEncoding) const;
 119.208 +	IMPORT_C virtual TBool SupportsInterface(const TUid& /*aInterfaceUid*/) const;
 119.209 +	inline TUid Uid() const;
 119.210 +	inline void SetPlugIn(MVersitPlugIn* aPlugIn);
 119.211 +protected:
 119.212 +	IMPORT_C CParserPropertyValue(const TUid& aPropertyValueUid);
 119.213 +	IMPORT_C void FoldEncodeAndWriteValueToStreamL(RWriteStream& aStream, const TDesC& aValue
 119.214 +														,const Versit::TEncodingAndCharset& aEncodingCharset,TInt& aLengthOutput) const;
 119.215 +	IMPORT_C void FoldEncodeAndWriteValueToStreamL(RWriteStream& aStream, const CDesCArray* aValueArray
 119.216 +														,const Versit::TEncodingAndCharset& aEncodingCharset,TInt& aLengthOutput) const;
 119.217 +	IMPORT_C void FoldAndWriteValueToStreamL(RWriteStream& aStream, const TDesC& aValue
 119.218 +														,const Versit::TEncodingAndCharset& aEncodingCharset,TInt& aLengthOutput) const;
 119.219 +	IMPORT_C static void Append(TDes16& aTarget,TDesC8& aSource);
 119.220 +protected:
 119.221 +    inline MVersitPlugIn* PlugIn();
 119.222 +
 119.223 +private:
 119.224 +	TUid iPropertyValueTypeUid;
 119.225 +	MVersitPlugIn* iPlugIn;
 119.226 +	};
 119.227 +
 119.228 +//
 119.229 +// CParserTimePropertyValue
 119.230 +//
 119.231 +
 119.232 +class CVersitDaylight;
 119.233 +
 119.234 +class CParserTimePropertyValue : public CParserPropertyValue
 119.235 +/** Abstract base class for all of the date/time property value classes.
 119.236 +
 119.237 +Provides date/time conversion functions between machine-local and universal 
 119.238 +time. 
 119.239 +
 119.240 +The date/time property value classes are CParserPropertyValueAlarm, 
 119.241 +CParserPropertyValueDate, CParserPropertyValueDateTime, 
 119.242 +CParserPropertyValueMultiDateTime, CParserPropertyValueDaylight and 
 119.243 +CParserPropertyValueRecurrence. 
 119.244 +@publishedAll
 119.245 +@released
 119.246 +*/
 119.247 +	{
 119.248 +public:
 119.249 +	/** This is implemented, where applicable, to convert date/time 
 119.250 +	values into universal time.
 119.251 +	
 119.252 +	The date/time is checked against the daylight saving information provided 
 119.253 +	in aDaylight. If it falls inside the daylight saving period then the daylight 
 119.254 +	saving offset is subtracted from the time to convert it to universal time. 
 119.255 +	Otherwise aIncrement is added to the date/time of the alarm to convert it 
 119.256 +	to universal time.
 119.257 +	
 119.258 +	Note that the daylight savings offset will adjust the time both for the daylight 
 119.259 +	saving and for the time zone.
 119.260 +	
 119.261 +	The function has no effect if it date/times are already stored in universal 
 119.262 +	time.
 119.263 +	
 119.264 +	If aDaylight is a NULL pointer then aIncrement is used.
 119.265 +	
 119.266 +	@param aIncrement A time interval in seconds which represents the time zone's 
 119.267 +	offset from universal time. 
 119.268 +	@param aDaylight Pointer to the specification for daylight saving. If the alarm's 
 119.269 +	time value is within the period for daylight saving, the value is modified 
 119.270 +	by the daylight saving offset (which accounts for both the time zone and daylight 
 119.271 +	saving rule). 
 119.272 +	@deprecated since 9.1
 119.273 +	*/
 119.274 +	IMPORT_C virtual void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight)=0;
 119.275 +	/** Pure virtual function which is implemented, where applicable, to convert the 
 119.276 +	date/time property value into machine-local time. 
 119.277 +	
 119.278 +	This process involves adjusting the date/time value by the offset in aIncrement.
 119.279 +	
 119.280 +	The function has no effect if the value is already stored as machine-local 
 119.281 +	time.
 119.282 +	
 119.283 +	The universal date/times are assumed to have been corrected for any daylight saving 
 119.284 +	rule in effect.
 119.285 +	
 119.286 +	@param aIncrement A time interval which represents the number of seconds which 
 119.287 +	is to be added to the date/time value. This should normally be the universal 
 119.288 +	time offset for the machine's locale. 
 119.289 +	@deprecated since 9.1 */
 119.290 +	IMPORT_C virtual void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement)=0;
 119.291 +	static void ConvertDateTime(TDateTime& aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight,TBool aTo);
 119.292 +public: //from CParserPropertyValue
 119.293 +	IMPORT_C virtual TBool SupportsInterface(const TUid& aInterfaceUid) const;
 119.294 +protected:
 119.295 +	IMPORT_C CParserTimePropertyValue(const TUid& aPropertyValueUid);
 119.296 +	IMPORT_C void ConvertDateTime(TDateTime* aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 119.297 +	IMPORT_C void EncodeVersitDateTimeL(TDes8& aBuf,const TVersitDateTime& aDateTime,TBool aEncodeTime=ETrue) const;
 119.298 +	IMPORT_C void EncodeTimePeriodL(TDes8& aBuf,const TTime& aTimePeriod) const;
 119.299 +	};
 119.300 +
 119.301 +//
 119.302 +//  CParserPropertyValueHBufC
 119.303 +//
 119.304 +class CParserPropertyValueHBufC : public CParserPropertyValue
 119.305 +/** A heap descriptor property value parser.
 119.306 +
 119.307 +Many properties are stored using this class. Examples are vCard e-mails and 
 119.308 +vCalendar locations.
 119.309 +
 119.310 +The UID for a heap descriptor property value is KVersitPropertyHBufCUid. 
 119.311 +@publishedAll
 119.312 +@released
 119.313 +*/
 119.314 +	{
 119.315 +public:
 119.316 +	IMPORT_C static CParserPropertyValueHBufC* NewL(const TDesC& aValue);
 119.317 +	IMPORT_C CParserPropertyValueHBufC(HBufC16* aValue);
 119.318 +	IMPORT_C ~CParserPropertyValueHBufC();
 119.319 +	IMPORT_C TPtrC Value() const;
 119.320 +	IMPORT_C HBufC* TakeValueOwnership();
 119.321 +    IMPORT_C CParserPropertyValueCDesCArray* TreatAsArrayPropertyLC(const CParserProperty& aOwningProperty) const;
 119.322 +public: // from CParserPropertyValue
 119.323 +	IMPORT_C TBool IsAsciiCharacterSetSufficient();
 119.324 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
 119.325 +private:
 119.326 +	CParserPropertyValueHBufC();
 119.327 +	void ConstructL(const TDesC& aValue);
 119.328 +protected:
 119.329 +	HBufC* iValue;
 119.330 +	};
 119.331 +
 119.332 +//
 119.333 +//  CParserPropertyValueBinary
 119.334 +//
 119.335 +
 119.336 +class CParserPropertyValueBinary : public CParserPropertyValue
 119.337 +/** A binary property value parser.
 119.338 +
 119.339 +It is used to store logos, photos, alarm content and binary attachment as binary values.
 119.340 +
 119.341 +The UID for a binary property value is KVersitPropertyBinaryUid. 
 119.342 +@publishedAll
 119.343 +@released
 119.344 +*/
 119.345 +	{
 119.346 +public:
 119.347 +	IMPORT_C static CParserPropertyValueBinary* NewL(const TDesC8& aValue);
 119.348 +	IMPORT_C static CParserPropertyValueBinary* NewLC(const TDesC8& aValue);
 119.349 +
 119.350 +	inline CParserPropertyValueBinary(CBufSeg& aValue);
 119.351 +	IMPORT_C ~CParserPropertyValueBinary();
 119.352 +	IMPORT_C const CBufSeg* Value() const;
 119.353 +public: // from CParserPropertyValue
 119.354 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
 119.355 +protected:
 119.356 +	inline CParserPropertyValueBinary();
 119.357 +	void ConstructL(const TDesC8& aValue);
 119.358 +	void ExternalizeL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput, RReadStream& aReadStream);
 119.359 +
 119.360 +protected:
 119.361 +	CBufSeg* iValue;
 119.362 +	};//
 119.363 +	
 119.364 +NONSHARABLE_CLASS(CParserPropertyValueBinaryFile) : public CParserPropertyValueBinary
 119.365 +/** A file property value parser.
 119.366 +
 119.367 +It is used to store a file handle so that the binary data can be read through the handle when exporting.
 119.368 +It is not used when importing.
 119.369 +The UID for a binary property value is KVersitPropertyBinaryUid. 
 119.370 +@publishedPartner
 119.371 +@prototype
 119.372 +*/
 119.373 +	{
 119.374 +public:
 119.375 +	IMPORT_C static CParserPropertyValueBinaryFile* NewL(const RFile& aFileHandle);
 119.376 +	IMPORT_C ~CParserPropertyValueBinaryFile();
 119.377 +public: // from CParserPropertyValue
 119.378 +	void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
 119.379 +
 119.380 +private:
 119.381 +	void ConstructL(const RFile& aFileHandle);
 119.382 +private:
 119.383 +	RFileReadStream iFileStream;
 119.384 +	};
 119.385 +
 119.386 +//  CParserPropertyValueCDesCArray
 119.387 +//
 119.388 +class CParserPropertyValueCDesCArray : public CParserPropertyValue
 119.389 +/** A property value parser which stores an array of descriptors.
 119.390 +
 119.391 +Can be used by both vCards and vCalendars, for example to store a postal address 
 119.392 +or information about an organisation.
 119.393 +
 119.394 +The UID for a descriptor array property value is KVersitPropertyCDesCArrayUid. 
 119.395 +@publishedAll
 119.396 +@released
 119.397 +*/
 119.398 +	{
 119.399 +public:
 119.400 +	IMPORT_C CParserPropertyValueCDesCArray(CDesCArray* aValue);
 119.401 +	IMPORT_C ~CParserPropertyValueCDesCArray();
 119.402 +	inline CDesCArray* Value() const;
 119.403 +	IMPORT_C TBool IsPresent(const TDesC& aValue) const;
 119.404 +public: // from CParserPropertyValue
 119.405 +	IMPORT_C TBool IsAsciiCharacterSetSufficient();
 119.406 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
 119.407 +protected:
 119.408 +	CDesCArray* iValue;
 119.409 +	};
 119.410 +
 119.411 +//
 119.412 +// CParserPropertyValueTimeZone
 119.413 +//
 119.414 +
 119.415 +class CParserPropertyValueTimeZone: public CParserPropertyValue
 119.416 +/** A time zone property value parser.
 119.417 +
 119.418 +Stores and externalises a property value which represents the time zone information 
 119.419 +for a vCard or vCalendar. 
 119.420 +
 119.421 +The time zone is specified as the universal time offset. This is a time interval 
 119.422 +which is a positive or negative number of seconds from universal time. Time 
 119.423 +zones east of universal time have positive numbers. Time zones west of universal 
 119.424 +time have negative numbers.
 119.425 +
 119.426 +The UID for a time zone property value is KVersitPropertyTimeZoneUid. 
 119.427 +@publishedAll
 119.428 +@released
 119.429 +*/
 119.430 +	{
 119.431 +public:
 119.432 +	static void EncodeTimeZone(TDes8& aBuf,TTimeIntervalSeconds iValue);
 119.433 +	IMPORT_C CParserPropertyValueTimeZone(TTimeIntervalSeconds aValue);
 119.434 +	inline TTimeIntervalSeconds Value() const;
 119.435 +public: // from CParserPropertyValue
 119.436 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
 119.437 +protected:
 119.438 +	TTimeIntervalSeconds iValue;
 119.439 +	};
 119.440 +
 119.441 +//
 119.442 +// CVersitDaylight
 119.443 +//
 119.444 +class CVersitDaylight : public CBase
 119.445 +/** Universal time offset information, including the daylight savings offset. 
 119.446 +
 119.447 +This class deals with the daylight saving offset: a one hour offset that occurs 
 119.448 +in many countries during part of the year. This offset needs to be taken into 
 119.449 +account when converting Versit times (TVersitDateTimes) between universal 
 119.450 +and machine-local times.
 119.451 +
 119.452 +This class stores information about the offset, including its length in seconds, 
 119.453 +when it takes effect and the standard time designations.
 119.454 +
 119.455 +Note that the universal offset (iOffset) is the sum of the daylight saving 
 119.456 +offset and any time zone offset, as it is the absolute offset from GMT.
 119.457 +
 119.458 +An instance of this class is owned by the CParserPropertyValueDaylight class. 
 119.459 +@publishedAll
 119.460 +@released
 119.461 +*/
 119.462 +	{
 119.463 +public:
 119.464 +	IMPORT_C static CVersitDaylight* NewL(TBool aSavings, TTimeIntervalSeconds aOffset, TVersitDateTime* aStartTime, TVersitDateTime* aEndTime, const TDesC& aStandardDesignation, const TDesC& aDaylightDesignation);
 119.465 +	IMPORT_C ~CVersitDaylight();
 119.466 +private:
 119.467 +	CVersitDaylight(TBool aSavings, TTimeIntervalSeconds aOffset, TVersitDateTime* aStartTime, TVersitDateTime* aEndTime);
 119.468 +	void ConstructL(const TDesC& aStandardDesignation, const TDesC& aDaylightDesignation);
 119.469 +public:
 119.470 +	/** A sort key than can be used when sorting an array of properties by start date/time. */
 119.471 +	TInt64 iStartTimeSortKey;
 119.472 +	/** The daylight savings flag: this is ETrue if daylight saving is in effect 
 119.473 +	in the locale and EFalse if not. */
 119.474 +	TBool iSavings;
 119.475 +	/** The absolute offset from GMT, which is the sum of the time zone and daylight 
 119.476 +	saving offsets (in seconds). */
 119.477 +	TTimeIntervalSeconds iOffset;
 119.478 +	/** The date/time at which the period for daylight saving begins. */
 119.479 +	TVersitDateTime* iStartTime;
 119.480 +	/** The date/time at which the period for daylight saving ends. */
 119.481 +	TVersitDateTime* iEndTime;
 119.482 +	/** The standard time designation, e.g. GMT, EST. */
 119.483 +	HBufC* iStandardDesignation;
 119.484 +	/** The daylight saving time designation, e.g. BST, EDT. */
 119.485 +	HBufC* iDaylightDesignation;
 119.486 +	};
 119.487 +
 119.488 +//
 119.489 +// CParserPropertyValueDaylight
 119.490 +//
 119.491 +class CParserPropertyValueDaylight : public CParserTimePropertyValue
 119.492 +/** A property value parser which contains the daylight savings rule for a vCalendar.
 119.493 +
 119.494 +The property value is stored using an instance of the CVersitDaylight class.
 119.495 +
 119.496 +The UID for a daylight savings rule property value is KVersitPropertyDaylightUid. 
 119.497 +@publishedAll
 119.498 +@released
 119.499 +*/
 119.500 +	{
 119.501 +public:
 119.502 +	IMPORT_C CParserPropertyValueDaylight(CVersitDaylight* aValue);
 119.503 +	IMPORT_C ~CParserPropertyValueDaylight();
 119.504 +	inline CVersitDaylight* Value() const;
 119.505 +public: // from CParserTimePropertyValue
 119.506 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 119.507 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
 119.508 +public: // from CParserPropertyValue
 119.509 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
 119.510 +private:
 119.511 +	CVersitDaylight* iValue;
 119.512 +	};
 119.513 +
 119.514 +//
 119.515 +//  CParserPropertyValueDateTime
 119.516 +//
 119.517 +class CParserPropertyValueDateTime : public CParserTimePropertyValue
 119.518 +/** A date/time property value parser. 
 119.519 +
 119.520 +The date/time value is contained in a TVersitDateTime object.
 119.521 +
 119.522 +The UID for a date/time property value is KVersitPropertyDateTimeUid. 
 119.523 +@publishedAll
 119.524 +@released
 119.525 +*/
 119.526 +	{
 119.527 +public:
 119.528 +	IMPORT_C CParserPropertyValueDateTime(TVersitDateTime* aValue);
 119.529 +	IMPORT_C ~CParserPropertyValueDateTime();
 119.530 +	inline TVersitDateTime* Value() const;
 119.531 +public: // from CParserTimePropertyValue
 119.532 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 119.533 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
 119.534 +public: // from CParserPropertyValue
 119.535 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt /*aLengthOutput*/);
 119.536 +protected:
 119.537 +	TVersitDateTime* iValue;
 119.538 +	};
 119.539 +
 119.540 +//
 119.541 +//  CParserPropertyValueDate
 119.542 +//
 119.543 +class CParserPropertyValueDate : public CParserTimePropertyValue
 119.544 +/** A date property value parser.
 119.545 +
 119.546 +The date value is contained in a TVersitDateTime object. 
 119.547 +
 119.548 +The UID for a date property value is KVersitPropertyDateUid. 
 119.549 +@publishedAll
 119.550 +@released
 119.551 +*/
 119.552 +	{
 119.553 +public:
 119.554 +	IMPORT_C CParserPropertyValueDate(TVersitDateTime* aValue);
 119.555 +	IMPORT_C ~CParserPropertyValueDate();
 119.556 +	inline TVersitDateTime* Value() const;
 119.557 +public: // from CParserTimePropertyValue
 119.558 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& /*aIncrement*/,const CVersitDaylight* /*aDaylight*/);
 119.559 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& /*aIncrement*/);
 119.560 +public: // from CParserPropertyValue
 119.561 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
 119.562 +private:
 119.563 +	TVersitDateTime* iValue;
 119.564 +	};
 119.565 +
 119.566 +//
 119.567 +//  CParserPropertyValueMultiDateTime
 119.568 +//
 119.569 +class CParserPropertyValueMultiDateTime : public CParserTimePropertyValue
 119.570 +/** A property value parser which stores a list of date/time values using an array 
 119.571 +of TVersitDateTime objects.
 119.572 +
 119.573 +The UID for a multiple date/time property value is KVersitPropertyMultiDateTimeUid. 
 119.574 +@publishedAll
 119.575 +@released
 119.576 +*/
 119.577 +	{
 119.578 +public:
 119.579 +	IMPORT_C CParserPropertyValueMultiDateTime(CArrayPtr<TVersitDateTime>* aValue);
 119.580 +	IMPORT_C ~CParserPropertyValueMultiDateTime();
 119.581 +	inline CArrayPtr<TVersitDateTime>* Value() const;
 119.582 +public: // from CParserTimePropertyValue
 119.583 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 119.584 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
 119.585 +public: // from CParserPropertyValue
 119.586 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt aLengthOutput);
 119.587 +protected:
 119.588 +	CArrayPtr<TVersitDateTime>* iValue;
 119.589 +	};
 119.590 +
 119.591 +//
 119.592 +//  CParserPropertyValueInt
 119.593 +//
 119.594 +class CParserPropertyValueInt : public CParserPropertyValue
 119.595 +/** An integer property value parser.
 119.596 +
 119.597 +This stores a property value as a signed integer. For example, an employee 
 119.598 +ID number might be stored using this class.
 119.599 +
 119.600 +The UID for an integer property value is KVersitPropertyIntUid. 
 119.601 +@publishedAll
 119.602 +@released
 119.603 +*/
 119.604 +	{
 119.605 +public:
 119.606 +	IMPORT_C CParserPropertyValueInt(TInt aValue);
 119.607 +	inline TInt Value() const;
 119.608 +public: // from CParserPropertyValue
 119.609 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
 119.610 +protected:
 119.611 +	TInt iValue;
 119.612 +	};
 119.613 +
 119.614 +//
 119.615 +//	CParserProperty
 119.616 +//
 119.617 +
 119.618 +class CParserProperty : public CBase
 119.619 +/** A vCard or vCalendar property.
 119.620 +
 119.621 +A property consists of a name, an optional value and one or more optional 
 119.622 +parameters.
 119.623 +
 119.624 +The name, value and parameters are initialised on construction.
 119.625 +
 119.626 +Versit properties have the general form:
 119.627 +
 119.628 +Property Name (; Property Parameter Name(=Property Parameter Value)* : Property 
 119.629 +Value)
 119.630 +
 119.631 +where items in brackets are optional and * indicates that the item may be 
 119.632 +repeated. 
 119.633 +
 119.634 +For instance, TEL; HOME; ENCODING=QUOTED-PRINTABLE; CHARSET=US-ASCII : 01234 567890
 119.635 +
 119.636 +Here, TEL is the property name; HOME, ENCODING and CHARSET are property parameter 
 119.637 +names; QUOTED-PRINTABLE and US-ASCII are property parameter values. The component 
 119.638 +following the colon is the property value.
 119.639 +
 119.640 +Properties also have a name UID, which set during internalisation of a property 
 119.641 +and used only during internalisation. It is set by SetNameUid() and is used 
 119.642 +to allow number comparisons during internalisation. This provides a faster 
 119.643 +alternative to string comparisons when checking a property to see if it is 
 119.644 +a significant one (e.g. a begin or binary property). This is the only use 
 119.645 +of the name UID: it is not used during externalisation of a property.
 119.646 +
 119.647 +Note that grouped properties are supported by the derived class, CParserGroupedProperty. 
 119.648 +The vCalender parser does not have property groups, and so stores all properties 
 119.649 +using this base class, whereas the vCard parser stores all properties using 
 119.650 +CParserGroupedProperty. 
 119.651 +@publishedAll
 119.652 +@released
 119.653 +*/
 119.654 +	{
 119.655 +public:
 119.656 +	IMPORT_C static					CParserProperty* NewL(CParserPropertyValue& aPropertyValue, const TDesC8& aName, CArrayPtr<CParserParam>* aArrayOfParams);
 119.657 +	IMPORT_C CParserProperty(CArrayPtr<CParserParam>* aArrayOfParams);
 119.658 +	IMPORT_C ~CParserProperty();
 119.659 +	IMPORT_C virtual void			ExternalizeL(RWriteStream& aStream, CVersitParser* aVersitParser = NULL);
 119.660 +	IMPORT_C CParserParam*			Param(const TDesC8& aParamName) const; // note params can only appear once
 119.661 +	IMPORT_C void					AddParamL(CParserParam* aParam);
 119.662 +	IMPORT_C void					DeleteParam(TDesC8& aParamName);
 119.663 +	IMPORT_C void					SetNameL(const TDesC8& aName);
 119.664 +	IMPORT_C virtual TBool			SupportsInterface(const TUid& /*aInterfaceUid*/) const;
 119.665 +	IMPORT_C TPtrC8					Name() const;
 119.666 +	inline void						SetValue(CParserPropertyValue* aPropertyValue);
 119.667 +	inline CParserPropertyValue*	Value() const;
 119.668 +	inline TUid						Uid() const;
 119.669 +	inline void						SetNameUid(TUid aUid);
 119.670 +	inline TUid						NameUid() const;
 119.671 +	inline void						SetParamArray(CArrayPtr<CParserParam>* aArrayOfParams);
 119.672 +
 119.673 +	
 119.674 +	IMPORT_C TBool LoadBinaryValuesFromFilesL(RFs& aFileSession);
 119.675 +	IMPORT_C TBool SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath,RFs& aFileSession);
 119.676 +protected:
 119.677 +	IMPORT_C CParserProperty(CParserPropertyValue& aPropertyValue, CArrayPtr<CParserParam>* aArrayOfParams);
 119.678 +	IMPORT_C static void			ConstructSelfL(CParserProperty& aSelf,const TDesC8& aName);
 119.679 +
 119.680 +public:
 119.681 +	IMPORT_C CArrayPtr<CParserParam>* ParamArray()const;
 119.682 +
 119.683 +protected:
 119.684 +	CParserPropertyValue*			iPropertyValue;
 119.685 +	HBufC8*							iPropertyName;
 119.686 +	TUid							iPropertyNameUid;
 119.687 +	CArrayPtr<CParserParam>*		iArrayOfParams;
 119.688 +
 119.689 +private:
 119.690 +	friend class CVersitParser;
 119.691 +	inline HBufC8*&					NameBuf();
 119.692 +	IMPORT_C virtual void			Reserved();
 119.693 +	void ReadBinaryDataL(const CBufSeg* aBufseg_ptr,HBufC8** aBuffer);
 119.694 +	void GenerateNameAndCreateFileL(RFs& aFileSession,TPtr8 aPropertyName,RFile& aFile,TDes& aFileName);
 119.695 +	
 119.696 +	};
 119.697 +
 119.698 +#include <vprop.inl>
 119.699 +
 119.700 +#endif
   120.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   120.2 +++ b/epoc32/include/app/vprop.inl	Wed Mar 31 12:27:01 2010 +0100
   120.3 @@ -0,0 +1,181 @@
   120.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   120.5 +// All rights reserved.
   120.6 +// This component and the accompanying materials are made available
   120.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   120.8 +// which accompanies this distribution, and is available
   120.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  120.10 +//
  120.11 +// Initial Contributors:
  120.12 +// Nokia Corporation - initial contribution.
  120.13 +//
  120.14 +// Contributors:
  120.15 +//
  120.16 +// Description:
  120.17 +// CParserPropertyValue
  120.18 +// 
  120.19 +//
  120.20 +
  120.21 +inline TUid CParserPropertyValue::Uid() const
  120.22 +/** Returns the property value's UID.
  120.23 +
  120.24 +This UID identifies the property value's type and is specified on construction. 
  120.25 +The values are defined in vuid.h.
  120.26 +
  120.27 +@return The property value's UID. */
  120.28 +	{return iPropertyValueTypeUid;}
  120.29 +
  120.30 +inline void CParserPropertyValue::SetPlugIn(MVersitPlugIn* aPlugIn)
  120.31 +/** Assigns a Versit plug-in to the property value.
  120.32 +
  120.33 +Allows functions of the MVersitPlugIn class to be used when writing to a stream.
  120.34 +
  120.35 +If a plug-in is in use then this function needs to be called with each property value 
  120.36 +before it is externalised. However, this will be done for you if you add a property 
  120.37 +using the function CVersitParser::AddPropertyL(). 
  120.38 +
  120.39 +@param aPlugIn A pointer to an MVersitPlugIn instance. */
  120.40 +	{iPlugIn=aPlugIn;}
  120.41 +
  120.42 +inline MVersitPlugIn* CParserPropertyValue::PlugIn()
  120.43 +/** Gets a pointer to the Versit plug-in
  120.44 +
  120.45 +@return A pointer to the plug-in. */
  120.46 +	{return iPlugIn;}
  120.47 +
  120.48 +//
  120.49 +//  CParserPropertyValueCDesCArray
  120.50 +//
  120.51 +inline CParserPropertyValueBinary::CParserPropertyValueBinary() :CParserPropertyValue(TUid::Uid(KVersitPropertyBinaryUid))
  120.52 +/** Constructs a binary property value. 
  120.53 +
  120.54 +Sets the property value UID to KVersitPropertyBinaryUid. */
  120.55 +	{}
  120.56 +
  120.57 +inline CParserPropertyValueBinary::CParserPropertyValueBinary(CBufSeg& aValue) :CParserPropertyValue(TUid::Uid(KVersitPropertyBinaryUid)), iValue(&aValue)
  120.58 +/** Constructs a binary property value. 
  120.59 +
  120.60 +Sets the property value to aValue and the property value UID to KVersitPropertyBinaryUid.
  120.61 +
  120.62 +@param aValue The property value. */
  120.63 +	{}
  120.64 +
  120.65 +//
  120.66 +//  CParserPropertyValueCDesCArray
  120.67 +//
  120.68 +inline CDesCArray* CParserPropertyValueCDesCArray::Value() const
  120.69 +/** Gets the property value.
  120.70 +
  120.71 +@return Pointer to the array of descriptors owned by the property value object. */
  120.72 +	{return iValue;}
  120.73 +
  120.74 +//
  120.75 +// CParserPropertyValueTimeZone
  120.76 +//
  120.77 +inline TTimeIntervalSeconds CParserPropertyValueTimeZone::Value() const
  120.78 +/** Gets the time zone property value.
  120.79 +
  120.80 +@return A time interval (in seconds) which represents the offset from universal 
  120.81 +time. */
  120.82 +	{return iValue;}
  120.83 +
  120.84 +//
  120.85 +// CParserPropertyValueDaylight
  120.86 +//
  120.87 +inline CVersitDaylight* CParserPropertyValueDaylight::Value() const
  120.88 +/** Gets the daylight saving property value.
  120.89 +
  120.90 +@return Pointer to the daylight saving specification. */
  120.91 +	{return iValue;}
  120.92 +
  120.93 +//
  120.94 +//  CParserPropertyValueDateTime
  120.95 +//
  120.96 +inline TVersitDateTime* CParserPropertyValueDateTime::Value() const
  120.97 +/** Gets a pointer to the date/time property value.
  120.98 +
  120.99 +@return Pointer to the date/time property value. */
 120.100 +	{return iValue;}
 120.101 +
 120.102 +//
 120.103 +//  CParserPropertyValueDate
 120.104 +//
 120.105 +inline TVersitDateTime* CParserPropertyValueDate::Value() const
 120.106 +/** Gets a pointer to the date property value.
 120.107 +
 120.108 +@return Pointer to the date property value. */
 120.109 +	{return iValue;}
 120.110 +
 120.111 +//
 120.112 +//  CParserPropertyValueMultiDateTime
 120.113 +//
 120.114 +inline CArrayPtr<TVersitDateTime>* CParserPropertyValueMultiDateTime::Value() const
 120.115 +/** Gets a pointer to the object's list of date/time property values.
 120.116 +
 120.117 +@return Pointer to the array of date/time property values. */
 120.118 +	{return iValue;}
 120.119 +
 120.120 +//
 120.121 +//  CParserPropertyValueInt
 120.122 +//
 120.123 +inline TInt CParserPropertyValueInt::Value() const
 120.124 +/** Gets the signed integer property value.
 120.125 +
 120.126 +@return The signed integer property value. */
 120.127 +	{return iValue;}
 120.128 +
 120.129 +//
 120.130 +//	CParserProperty
 120.131 +//
 120.132 +inline void CParserProperty::SetValue(CParserPropertyValue* aPropertyValue)
 120.133 +/** Sets the property value.
 120.134 +
 120.135 +The property takes ownership of the property value.
 120.136 +
 120.137 +@param aPropertyValue A pointer to the property value to be set. */
 120.138 +	{iPropertyValue=aPropertyValue;}
 120.139 +
 120.140 +inline CParserPropertyValue* CParserProperty::Value() const
 120.141 +/** Gets a pointer to the property value.
 120.142 +
 120.143 +Ownership of the property value is not transferred by this function.
 120.144 +
 120.145 +@return Pointer to generic parser property value. */
 120.146 +	{return iPropertyValue;}
 120.147 +
 120.148 +inline TUid CParserProperty::Uid() const
 120.149 +/** Gets the UID of the property value.
 120.150 +
 120.151 +@return UID of the property value. */
 120.152 +	{return iPropertyValue->Uid();}
 120.153 +
 120.154 +/*
 120.155 + * Gets the name of the property.
 120.156 + *
 120.157 + * @return    " HBufC8*& "
 120.158 + *            Pointer to the property name.
 120.159 + */
 120.160 +inline HBufC8*& CParserProperty::NameBuf()
 120.161 +	{return iPropertyName;}
 120.162 +
 120.163 +inline void CParserProperty::SetNameUid(TUid aUid)
 120.164 +/** Sets a property name UID.
 120.165 +
 120.166 +This function is called by CVersitParser::AddProperty() when internalising, 
 120.167 +and will not normally be used directly.
 120.168 +
 120.169 +@param aUid A property name UID. */
 120.170 +	{iPropertyNameUid=aUid;}
 120.171 +
 120.172 +inline TUid CParserProperty::NameUid() const
 120.173 +/** Gets the property name UID.
 120.174 +
 120.175 +@return UID of the property name. */
 120.176 +	{return iPropertyNameUid;}
 120.177 +
 120.178 +inline void CParserProperty::SetParamArray(CArrayPtr<CParserParam>* aArrayOfParams)
 120.179 +/** Sets the array of property parameters. 
 120.180 +
 120.181 +The property takes ownership of aArrayOfParams
 120.182 +
 120.183 +@param aArrayOfParams Array of property parameters. */
 120.184 +	{iArrayOfParams=aArrayOfParams;}
   121.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   121.2 +++ b/epoc32/include/app/vrecur.h	Wed Mar 31 12:27:01 2010 +0100
   121.3 @@ -0,0 +1,355 @@
   121.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   121.5 +// All rights reserved.
   121.6 +// This component and the accompanying materials are made available
   121.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   121.8 +// which accompanies this distribution, and is available
   121.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  121.10 +//
  121.11 +// Initial Contributors:
  121.12 +// Nokia Corporation - initial contribution.
  121.13 +//
  121.14 +// Contributors:
  121.15 +//
  121.16 +// Description:
  121.17 +//
  121.18 + 
  121.19 +#ifndef __VRECUR_H__
  121.20 +#define __VRECUR_H__
  121.21 +
  121.22 +#include <versit.h>
  121.23 +
  121.24 +//
  121.25 +// CWeekDayArray
  121.26 +//
  121.27 +
  121.28 +class CWeekDayArray : public CBase
  121.29 +/** Defines an array of the days in the week on which a 'weekly' 
  121.30 +or 'monthly by position' repeat event occurs. 
  121.31 +@publishedAll
  121.32 +@released
  121.33 +*/
  121.34 +	{
  121.35 +public:
  121.36 +	IMPORT_C CWeekDayArray();
  121.37 +	IMPORT_C ~CWeekDayArray();
  121.38 +	IMPORT_C void ExternalizeL(RWriteStream& aStream);
  121.39 +public:	
  121.40 +	/** The array of days in the week. */
  121.41 +	CArrayFix<TDay>* iArray;
  121.42 +	};
  121.43 +
  121.44 +//
  121.45 +// CVersitRecurrence
  121.46 +//
  121.47 +class CVersitRecurrence : public CBase
  121.48 +/** Abstract base class for all recurrence property value classes.
  121.49 +
  121.50 +A pointer to a derived recurrence property value class instance is owned by 
  121.51 +the CParserPropertyValueRecurrence class.
  121.52 +
  121.53 +Implementations of this class define when an event is to repeat. 
  121.54 +@publishedAll
  121.55 +@released
  121.56 +*/
  121.57 +	{
  121.58 +public:
  121.59 +	IMPORT_C CVersitRecurrence(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate);
  121.60 +	IMPORT_C ~CVersitRecurrence();
  121.61 +	/** Externalises an occurrence list to aStream.
  121.62 +	
  121.63 +	@param aStream The stream to which the occurrence list is to be externalised. */
  121.64 +	virtual void ExternalizeOccurrenceListsL(RWriteStream& aStream) const=0;
  121.65 +	/** Repeat type. 
  121.66 +	@publishedAll
  121.67 +	@released */
  121.68 +	enum TType
  121.69 +		{
  121.70 +		/** Daily repeat. */
  121.71 +		EDaily=1,
  121.72 +		/** Weekly repeat. */
  121.73 +		EWeekly,
  121.74 +		/** Monthly repeat, by relative position within the month. */
  121.75 +		EMonthlyByPos,
  121.76 +		/** Monthly repeat, by day number within the month. */
  121.77 +		EMonthlyByDay,
  121.78 +		/** Yearly repeat, by specific months within the year. */
  121.79 +		EYearlyByMonth,
  121.80 +		/** Yearly repeat, by specific days within the year. */
  121.81 +		EYearlyByDay
  121.82 +		};
  121.83 +public:
  121.84 +	/** The type of repeat (daily, weekly etc.). */
  121.85 +	TType iRepeatType;
  121.86 +	/** The interval between repeats: a number of days, weeks, months or years, depending 
  121.87 +	on the repeat type. */
  121.88 +	TInt iInterval;
  121.89 +	/** The duration in days, weeks, months or years (depending on the repeat type) 
  121.90 +	for the repeat.
  121.91 +	
  121.92 +	A value of zero indicates the repeat should continue forever. */
  121.93 +	TInt iDuration;
  121.94 +	/** Specification for the date at which the repeat will end. If a duration and 
  121.95 +	an end date are both specified, the end date takes precedence. */
  121.96 +	TVersitDateTime* iEndDate;
  121.97 +	};
  121.98 +
  121.99 +//
 121.100 +// CVersitRecurrenceDaily
 121.101 +//
 121.102 +class CVersitRecurrenceDaily : public CVersitRecurrence
 121.103 +/** Defines when a 'daily' recurrence is to be repeated.
 121.104 +
 121.105 +Used by a repeating event (a vCalendar event or to-do) to define when it is 
 121.106 +to occur. The days on which the event occurs are identified by the number 
 121.107 +of days between repeats, e.g. every third day.
 121.108 +
 121.109 +A pointer to this object may be owned by a CParserPropertyValueRecurrence 
 121.110 +object. 
 121.111 +@publishedAll
 121.112 +@released
 121.113 +*/
 121.114 +	{
 121.115 +public:
 121.116 +	IMPORT_C CVersitRecurrenceDaily(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate);
 121.117 +public: //from CVersitRecurrence
 121.118 +	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& /*aStream*/) const;
 121.119 +	};
 121.120 +
 121.121 +//
 121.122 +//	CVersitRecurrenceWeekly
 121.123 +//
 121.124 +class CVersitRecurrenceWeekly : public CVersitRecurrence
 121.125 +/** Defines a list of days when a 'weekly' recurrence is to be 
 121.126 +repeated.
 121.127 +
 121.128 +Used by a repeating event (a vCalendar event or to-do) to define when it is 
 121.129 +to occur. The days on which the event occurs are identified by the number 
 121.130 +of weeks between repeats and the day(s) of the week on which the event occurs, 
 121.131 +e.g. on Monday every other week.
 121.132 +
 121.133 +A pointer to this object may be owned by a CParserPropertyValueRecurrence 
 121.134 +object. 
 121.135 +@publishedAll
 121.136 +@released
 121.137 +*/
 121.138 +	{
 121.139 +public:
 121.140 +	IMPORT_C CVersitRecurrenceWeekly(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CWeekDayArray* aArrayOfWeekDayOccurrences);
 121.141 +	IMPORT_C ~CVersitRecurrenceWeekly();
 121.142 +public: //from CVersitRecurrence
 121.143 +	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
 121.144 +public:
 121.145 +	CWeekDayArray* iArrayOfWeekDayOccurrences;		//Mon-Sun
 121.146 +	};
 121.147 +
 121.148 +//
 121.149 +// CVersitRecurrenceMonthlyByPos
 121.150 +//
 121.151 +class CVersitRecurrenceMonthlyByPos : public CVersitRecurrence
 121.152 +/** Defines a list of days when a 'monthly by position' recurrence 
 121.153 +is to be repeated.
 121.154 +
 121.155 +Used by a repeating event (a vCalendar event or to-do) to define when it is 
 121.156 +to occur.
 121.157 +
 121.158 +The days on which the event occurs are identified by their relative position 
 121.159 +within the month, for example the second Monday or the last Friday.
 121.160 +
 121.161 +A pointer to this object may be owned by a CParserPropertyValueRecurrence 
 121.162 +object
 121.163 +
 121.164 +Note: The CMonthPosition class, defined within this class, is used to 
 121.165 +define the positions of days within the month. 
 121.166 +@publishedAll
 121.167 +@released
 121.168 +*/
 121.169 +	{
 121.170 +public:
 121.171 +	class CMonthPosition : public CBase
 121.172 +	/** Defines a week within the month, using the numeric occurrence of the week 
 121.173 +	(between 1 and 5 inclusive) counting from either the start or end of the month, 
 121.174 +	and defines an array of days within this week. 
 121.175 +	@publishedAll
 121.176 +	@released
 121.177 +	*/
 121.178 +		{
 121.179 +	public:
 121.180 +		IMPORT_C ~CMonthPosition();
 121.181 +	public:
 121.182 +		/** Flags that define whether the week number is counted from the start or end of the month. 
 121.183 +		@publishedAll
 121.184 +		@released */
 121.185 +		enum TSign 
 121.186 +				{
 121.187 +				/** Indicates that the iWeekNo member specifies a number counting forwards 
 121.188 +				from the start of the month. */
 121.189 +				EWeeksFromStartOfMonth,
 121.190 +				/** Indicates that the iWeekNo member specifies a number counting backwards from 
 121.191 +				the end of the month. */
 121.192 +				EWeeksFromEndOfMonth
 121.193 +				};
 121.194 +	public:
 121.195 +		/** Indicates whether the week number iWeekNo is counted from the start or the 
 121.196 +		end of the month. A plus sign denotes from the start of the month and a minus 
 121.197 +		sign denotes from the end. */
 121.198 +		TSign iSign;
 121.199 +		/** A week number within the month, between 1 and 5 inclusive. */
 121.200 +		TInt iWeekNo;
 121.201 +		/** Pointer to an array of week days. */
 121.202 +		CWeekDayArray* iArrayOfWeekDays;
 121.203 +		};
 121.204 +	IMPORT_C CVersitRecurrenceMonthlyByPos(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CArrayPtrFlat<CMonthPosition>* aMonthPositions);
 121.205 +	IMPORT_C ~CVersitRecurrenceMonthlyByPos();
 121.206 +public: //framework
 121.207 +	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
 121.208 +public:
 121.209 +	/** Array of 'month positions' which define the days on which the event occurs. */
 121.210 +	CArrayPtrFlat<CMonthPosition>* iMonthPositions;
 121.211 +	};
 121.212 +
 121.213 +//
 121.214 +// CVersitRecurrenceMonthlyByDay
 121.215 +//
 121.216 +class CVersitRecurrenceMonthlyByDay : public CVersitRecurrence
 121.217 +/** Defines a list of days when a 'monthly by day' recurrence 
 121.218 +is to repeat.
 121.219 +
 121.220 +Used by a repeating event (a vCalendar event or to-do) to define when it is 
 121.221 +to occur.
 121.222 +
 121.223 +The days on which the event occurs are identified by a number, counting 
 121.224 +either from the start or the end of the month.
 121.225 +
 121.226 +A pointer to this object may be owned by a CParserPropertyValueRecurrence 
 121.227 +object. 
 121.228 +@publishedAll
 121.229 +@released
 121.230 +*/
 121.231 +	{
 121.232 +public:
 121.233 +	IMPORT_C CVersitRecurrenceMonthlyByDay(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,	CArrayFix<TInt>* aArrayOfOccurrencesInDaysFromStartOfMonth
 121.234 +		,CArrayFix<TInt>* aArrayOfOccurrencesInDaysFromEndOfMonth,TBool aLastDay);
 121.235 +	IMPORT_C ~CVersitRecurrenceMonthlyByDay();
 121.236 +public: //framework
 121.237 +	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
 121.238 +public:
 121.239 +	/** Array of days, counting from the start of the month, on which the event occurs. */
 121.240 +	CArrayFix<TInt>* iArrayOfOccurrencesInDaysFromStartOfMonth; //1-31
 121.241 +	/** Array of days, counting from the end of the month, on which the event occurs. */
 121.242 +	CArrayFix<TInt>* iArrayOfOccurrencesInDaysFromEndOfMonth; //1-31
 121.243 +	/** Identifies whether the event occurs on the last day of the month. */
 121.244 +	TBool iLastDay;
 121.245 +	};
 121.246 +
 121.247 +//
 121.248 +// CVersitRecurrenceYearlyByMonth
 121.249 +//
 121.250 +class CVersitRecurrenceYearlyByMonth : public CVersitRecurrence
 121.251 +/** Defines a list of months when a 'yearly by month' recurrence 
 121.252 +is to repeat.
 121.253 +
 121.254 +Used by a repeating event (a vCalendar event or to-do) to define the months  
 121.255 +in which it is to occur. The months on which the event occurs are identified 
 121.256 +by their number in the year (between 1 and 12 inclusive).
 121.257 +
 121.258 +A pointer to this object may be owned by a CParserPropertyValueRecurrence 
 121.259 +object. 
 121.260 +@publishedAll
 121.261 +@released
 121.262 +*/
 121.263 +	{
 121.264 +public:
 121.265 +	IMPORT_C CVersitRecurrenceYearlyByMonth(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CArrayFix<TMonth>* aArrayOfMonthsInYearOccurrences);
 121.266 +	IMPORT_C ~CVersitRecurrenceYearlyByMonth();
 121.267 +public: //framework
 121.268 +	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
 121.269 +public:
 121.270 +	/** Pointer to an array of month values. */
 121.271 +	CArrayFix<TMonth>* iArrayOfMonthsInYearOccurrences; //Jan-Dec
 121.272 +	};
 121.273 +
 121.274 +//
 121.275 +// CVersitRecurrenceYearlyByDay
 121.276 +//
 121.277 +class CVersitRecurrenceYearlyByDay : public CVersitRecurrence
 121.278 +/** Defines a list of days when a 'yearly by day' recurrence is 
 121.279 +to be repeated.
 121.280 +
 121.281 +Used by a repeating event (a vCalendar event or to-do) to define when it is 
 121.282 +to occur.
 121.283 +
 121.284 +The days on which the repeat occurs are identified by their day number in 
 121.285 +the year (between 1 and 366 inclusive).
 121.286 +
 121.287 +A pointer to this object may be owned by a CParserPropertyValueRecurrence 
 121.288 +object. 
 121.289 +@publishedAll
 121.290 +@released
 121.291 +*/
 121.292 +	{
 121.293 +public:
 121.294 +	IMPORT_C CVersitRecurrenceYearlyByDay(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CArrayFix<TInt>* aArrayOfDaysInYearOccurrences);
 121.295 +	IMPORT_C ~CVersitRecurrenceYearlyByDay();
 121.296 +public: //framework
 121.297 +	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
 121.298 +public:
 121.299 +	/** Pointer to an array of integers between 1 and 366 inclusive. 
 121.300 +	
 121.301 +	Each integer represents a day on which the repeat event occurs. */
 121.302 +	CArrayFix<TInt>* iArrayOfDaysInYearOccurrences; 
 121.303 +	};
 121.304 +
 121.305 +//
 121.306 +// CParserPropertyValueRecurrence
 121.307 +//
 121.308 +class CParserPropertyValueRecurrence : public CParserTimePropertyValue
 121.309 +/** A recurrence property value parser.
 121.310 +
 121.311 +This is used to store and retrieve the recurrence information for a repeating 
 121.312 +vEvent or vTodo. This information is stored as a CVersitRecurrence object.
 121.313 +
 121.314 +The UID for a recurrence property value is KVCalPropertyRecurrenceUid. 
 121.315 +@publishedAll
 121.316 +@released
 121.317 +*/
 121.318 +	{
 121.319 +public:
 121.320 +	IMPORT_C CParserPropertyValueRecurrence(CVersitRecurrence* aValue);
 121.321 +	IMPORT_C ~CParserPropertyValueRecurrence();
 121.322 +	inline CVersitRecurrence* Value() const;
 121.323 +public: // from CParserTimePropertyValue
 121.324 +	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 121.325 +	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
 121.326 +public: // from CParserPropertyValue
 121.327 +	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt /*aLengthOutput*/);
 121.328 +protected:
 121.329 +	CVersitRecurrence* iValue;
 121.330 +	};
 121.331 +
 121.332 +//
 121.333 +// CRecurrenceParser
 121.334 +//
 121.335 +class CRecurrenceParser : public CVersitParser
 121.336 +/** Base class used in the derivation of CParserVCalEntity.
 121.337 +
 121.338 +Provides recurrence functionality for vEvents and vToDos in vCalendars. 
 121.339 +@publishedAll
 121.340 +@released
 121.341 +*/
 121.342 +	{
 121.343 +public:
 121.344 +	IMPORT_C CRecurrenceParser(TBool aHasVersion);
 121.345 +	IMPORT_C CParserPropertyValue* MakePropertyValueRecurrenceL(TDes& aRecurringEntity);
 121.346 +private:	
 121.347 +	static void ResetAndDestroyArrayOfMonthPositions(TAny* aObject);	
 121.348 +	void GetFrequencyAndIntervalL(CVersitRecurrence::TType& aFrequency,TInt& aInterval, const TDesC& aRecurrenceType);
 121.349 +	CVersitRecurrence* GetFrequencyModifiersL(const CVersitRecurrence::TType& aRepeatType,TInt aInterval, const TDesC& aListDates);
 121.350 +	CWeekDayArray* GetListOfWeekDayOccurrencesL(const TDesC& aListDays);
 121.351 +private: // from CVersitParser
 121.352 +	IMPORT_C virtual void Reserved1();
 121.353 +	IMPORT_C virtual void Reserved2();
 121.354 +	};
 121.355 +
 121.356 +#include <vrecur.inl>
 121.357 +
 121.358 +#endif
   122.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   122.2 +++ b/epoc32/include/app/vrecur.inl	Wed Mar 31 12:27:01 2010 +0100
   122.3 @@ -0,0 +1,22 @@
   122.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   122.5 +// All rights reserved.
   122.6 +// This component and the accompanying materials are made available
   122.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   122.8 +// which accompanies this distribution, and is available
   122.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  122.10 +//
  122.11 +// Initial Contributors:
  122.12 +// Nokia Corporation - initial contribution.
  122.13 +//
  122.14 +// Contributors:
  122.15 +//
  122.16 +// Description:
  122.17 +// CParserPropertyValueRecurrence
  122.18 +// 
  122.19 +//
  122.20 +
  122.21 +inline CVersitRecurrence* CParserPropertyValueRecurrence::Value() const
  122.22 +/** Gets the recurrence value.
  122.23 +
  122.24 +@return A pointer to the recurrence value. */
  122.25 +	{return iValue;}
   123.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   123.2 +++ b/epoc32/include/app/vstaticutils.h	Wed Mar 31 12:27:01 2010 +0100
   123.3 @@ -0,0 +1,86 @@
   123.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   123.5 +// All rights reserved.
   123.6 +// This component and the accompanying materials are made available
   123.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   123.8 +// which accompanies this distribution, and is available
   123.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  123.10 +//
  123.11 +// Initial Contributors:
  123.12 +// Nokia Corporation - initial contribution.
  123.13 +//
  123.14 +// Contributors:
  123.15 +//
  123.16 +// Description:
  123.17 +//
  123.18 +
  123.19 +#ifndef __VSTATICUTILS_H__
  123.20 +#define __VSTATICUTILS_H__
  123.21 +
  123.22 +// System includes
  123.23 +#include <e32base.h>
  123.24 +
  123.25 +// User includes
  123.26 +#include <versit.h>
  123.27 +
  123.28 +// Classes referenced
  123.29 +class CVersitAdditionalPropertyStorage;
  123.30 +
  123.31 +class VersitUtils
  123.32 +/** A utility class which provides functions for handling character set conversions, 
  123.33 +and for the parsing of character strings. 
  123.34 +@publishedAll
  123.35 +@released
  123.36 +*/
  123.37 +	{
  123.38 +public:
  123.39 +	IMPORT_C static TBool EightBitEncoding(Versit::TVersitCharSet aCharSet);
  123.40 +	IMPORT_C static TBool EightBitEncoding(TUint aCharSetId);
  123.41 +	IMPORT_C static TUid ConArcEncodingUid(Versit::TVersitEncoding aEncoding);
  123.42 +	IMPORT_C static const TDesC8& IANACharacterSetName(Versit::TVersitCharSet aCharSet);
  123.43 +	IMPORT_C static const TDesC8& IANAEncodingName(Versit::TVersitEncoding aEncoding);
  123.44 +	IMPORT_C static TUid CharConvCharSetUid(Versit::TVersitCharSet aVersitSet);
  123.45 +	static Versit::TVersitCharSet CharSet(TUint aCharConvCharSetUid);
  123.46 +	IMPORT_C static TBool DescriptorContainsOnlySevenBitCharacters(const TDesC& aText);
  123.47 +	IMPORT_C static TBool RequiresEncoding(const TDesC& aText);
  123.48 +	IMPORT_C static void UncodeToNarrowL(const TDesC& aUnicode, TDes8& aNarrow, const Versit::TEncodingAndCharset& aEncodingCharset);
  123.49 +	IMPORT_C static void AddEscapedString(TDes& aDestination,const TDesC& aTextToEscape,Versit::TVersitCharSet aCharSet);
  123.50 +	IMPORT_C static void AddEscapedString(TDes& aDestination,const TDesC& aTextToEscape,TUint aCharSetId);
  123.51 +	IMPORT_C static void ConArcEncodeL(RReadStream& aSource, CBufBase& aTarget, TUid aConArcEncodingUid);
  123.52 +	IMPORT_C static void WrapLinesL(CBufBase& aBuffer, TInt aMaxLineLength);
  123.53 +	IMPORT_C static TBool CheckAndIgnoreCustomErrorL(TInt aError); 
  123.54 +	IMPORT_C static void RemoveEscapeChars(TPtr8& aText);
  123.55 +	IMPORT_C static void RemoveEscapeChars(HBufC16& aText);
  123.56 +	IMPORT_C static void RemoveEscapeChars(HBufC16& aText, TUint aCharSetUid);
  123.57 +	IMPORT_C static void RemoveEscapeChars(TPtr16& aText, TUint aCharSetUid);
  123.58 +	IMPORT_C static TBool IsNoneWhiteSpaceChar(const TDesC8& aString);
  123.59 +	IMPORT_C static void StripWhiteSpace(TPtr8& aString);
  123.60 +	IMPORT_C static void StripWhiteSpace(TPtr16& aString);
  123.61 +	static inline TBool IsWhiteSpace(TUint aChar);
  123.62 +	static inline TBool IsBeginOrEnd(TUid aUid);
  123.63 +	IMPORT_C static TBool IsNoneWhiteSpaceWideChar(const TDesC16& aString);
  123.64 +    IMPORT_C static CDesCArray* ParseForArrayPropertiesL(TPtr16 aStringValue, TUint aLineCharacterSetId);
  123.65 +    //
  123.66 +    IMPORT_C static void AllocateAdditionalPropertyStorageL(CVersitTlsData& aTlsData, CParserProperty& aProperty, TPtr16& aStringValue, TUint aLineCharacterSetId);
  123.67 +    IMPORT_C static void FreeAdditionalPropertyStorageL(const CParserProperty& aProperty);
  123.68 +    IMPORT_C static CParserPropertyValue* AdditionalPropertyValueFromStorageL(const CParserProperty& aProperty);
  123.69 +
  123.70 +private:
  123.71 +	static void AddEscapedString(TBool aIsShiftJis,TDes& aDestination,const TDesC& aTextToEscape);
  123.72 +	static const TDesC &VersitUtils::EscapeChar(TBool aIsShiftJis);
  123.73 +	};
  123.74 +
  123.75 +inline TBool VersitUtils::IsWhiteSpace(TUint aChar)
  123.76 +/** Tests whether the specified character is white space 
  123.77 +(either a tab or a space character).
  123.78 +
  123.79 +@param aChar The character to test.
  123.80 +@return ETrue if the character is white space, otherwise EFalse. */
  123.81 +	{return (aChar==CVersitParser::ESpace || aChar==CVersitParser::EHTab);}
  123.82 +inline TBool VersitUtils::IsBeginOrEnd(TUid aUid)
  123.83 +/** Tests whether the specified UID is the Versit Begin or End UID (KVersitTokenBeginUid 
  123.84 +or KVersitTokenEndUid).
  123.85 +
  123.86 +@param aUid The UID to test.
  123.87 +@return ETrue if the UID is the Begin or End UID, otherwise EFalse. */
  123.88 +	{return (aUid.iUid==KVersitTokenBeginUid || aUid.iUid==KVersitTokenEndUid);}
  123.89 +#endif
   124.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   124.2 +++ b/epoc32/include/app/vtoken.h	Wed Mar 31 12:27:01 2010 +0100
   124.3 @@ -0,0 +1,366 @@
   124.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   124.5 +// All rights reserved.
   124.6 +// This component and the accompanying materials are made available
   124.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   124.8 +// which accompanies this distribution, and is available
   124.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  124.10 +//
  124.11 +// Initial Contributors:
  124.12 +// Nokia Corporation - initial contribution.
  124.13 +//
  124.14 +// Contributors:
  124.15 +//
  124.16 +// Description:
  124.17 +//
  124.18 +
  124.19 +
  124.20 +
  124.21 +/**
  124.22 + @file
  124.23 + @publishedAll
  124.24 + @released 
  124.25 +*/
  124.26 + 
  124.27 +#ifndef __VTOKEN_H__
  124.28 +#define __VTOKEN_H__
  124.29 +
  124.30 +#include <e32base.h>
  124.31 +
  124.32 +#define KMaxExternalizedTokenLength			70
  124.33 +#define KMinLineLengthToWriteTo				1
  124.34 +
  124.35 +/** A colon string. */
  124.36 +_LIT8(KVersitTokenColon,					":");
  124.37 +/** A Unicode colon string. */
  124.38 +_LIT(KVersitTokenColonUnicode,				":");
  124.39 +/** A semi-colon string. */
  124.40 +_LIT8(KVersitTokenSemiColon,				";");
  124.41 +/** A Unicode semi-colon string. */
  124.42 +_LIT(KVersitTokenSemiColonUnicode,			";");
  124.43 +/** A backslash string (escaped). */
  124.44 +_LIT8(KVersitBackSlash,						"\\");
  124.45 +/** An escaped semi-colon string. */
  124.46 +_LIT8(KVersitEscapedSemiColon,				"\\;");
  124.47 +/** An escaped Unicode semi-colon string. */
  124.48 +_LIT(KVersitEscapedSemiColonUnicode,		"\\;");
  124.49 +/** An equals sign string. */
  124.50 +_LIT8(KVersitTokenEquals,					"=");
  124.51 +/** A full stop string. */
  124.52 +_LIT8(KVersitTokenPeriod,					".");
  124.53 +/** A space string. */
  124.54 +_LIT8(KVersitTokenSpace,					" ");
  124.55 +/** A minus sign string. */
  124.56 +_LIT8(KVersitTokenMinus,					"-");
  124.57 +/** A plus sign string. */
  124.58 +_LIT8(KVersitTokenPlus,						"+");
  124.59 +/** A line break string. */
  124.60 +_LIT8(KVersitLineBreak,						"\r\n  ");
  124.61 +/** The string used at the start of a time interval string. */
  124.62 +_LIT8(KVersitTimePeriodBegin,				"P");
  124.63 +/** The string appended to the number of years when encoding a time interval. */
  124.64 +_LIT8(KVersitTimePeriodYear,				"Y");
  124.65 +/** The string appended to the number of months when encoding a time interval. */
  124.66 +_LIT8(KVersitTimePeriodMonth,				"M");
  124.67 +/** Not used. */
  124.68 +_LIT8(KVersitTimePeriodWeek,				"W");		//unused
  124.69 +/** The string appended to the number of days when encoding a time interval. */
  124.70 +_LIT8(KVersitTimePeriodDay,					"D");
  124.71 +/** The string added before the time of day when encoding a Versit date/time.
  124.72 +
  124.73 +Also the string added before the time of day when encoding a time interval. */
  124.74 +_LIT8(KVersitTimePeriodTime,				"T");
  124.75 +/** The string appended to the hour value when encoding a time interval. */
  124.76 +_LIT8(KVersitTimePeriodHour,				"H");
  124.77 +/** The string appended to the minutes value when encoding a time interval. */
  124.78 +_LIT8(KVersitTimePeriodMinute,				"M");
  124.79 +/** The string appended to the seconds value when encoding a time interval. */
  124.80 +_LIT8(KVersitTimePeriodSecond,				"S");
  124.81 +/**  The string appended to a date/time when encoding a Versit 
  124.82 +date/time, if the value is in universal time. */
  124.83 +_LIT8(KVersitTokenUniversalTime,			"Z");
  124.84 +
  124.85 +/** A colon character. */
  124.86 +const TUint KVersitTokenColonVal			=':';
  124.87 +/** A semi-colon character. */
  124.88 +const TUint KVersitTokenSemiColonVal		=';';
  124.89 +/** A backslash character. */
  124.90 +const TUint KVersitTokenBackslashVal		='\\';
  124.91 +/** An equals sign character. */
  124.92 +const TUint KVersitTokenEqualsVal			='=';
  124.93 +/** A full stop character. */
  124.94 +const TUint KVersitTokenPeriodVal			='.';
  124.95 +/** A comma character. */
  124.96 +const TUint KVersitTokenCommaVal			=',';
  124.97 +/** A left square bracket character. */
  124.98 +const TUint KVersitTokenLSquareBracketVal	='[';
  124.99 +/** A right square bracket character. */
 124.100 +const TUint KVersitTokenRSquareBracketVal	=']';
 124.101 +/** A minus sign character. */
 124.102 +const TUint KVersitTokenMinusVal			='-';
 124.103 +/** A plus sign character. */
 124.104 +const TUint KVersitTokenPlusVal				='+';
 124.105 +/** A Yen character: the escape character for the 'ShiftJis' character set. */
 124.106 +const TUint KVersitTokenYenVal				=0xa5;
 124.107 +/** The character at the beginning of a time interval string. */
 124.108 +const TUint KVersitTimePeriodBeginVal		='P';
 124.109 +/** The character following the number of years in a time interval string. */
 124.110 +const TUint KVersitTimePeriodYearVal		='Y';
 124.111 +/** The character following the number of months in a time interval string. */
 124.112 +const TUint KVersitTimePeriodMonthVal		='M';
 124.113 +/** The character following the number of weeks in a time interval string. */
 124.114 +const TUint KVersitTimePeriodWeekVal		='W';
 124.115 +/** The character following the number of days in a time interval string. */
 124.116 +const TUint KVersitTimePeriodDayVal			='D';
 124.117 +/** The character preceding a length of day (hours,minutes and seconds) in a time 
 124.118 +interval string.
 124.119 +
 124.120 +Also the character preceding the time of day in a date/time string. */
 124.121 +const TUint KVersitTimePeriodTimeVal		='T';
 124.122 +/** The character following the number of hours in a time interval string. */
 124.123 +const TUint KVersitTimePeriodHourVal		='H';
 124.124 +/** The character following the number of minutes in a time interval string. */
 124.125 +const TUint KVersitTimePeriodMinuteVal		='M';
 124.126 +/** The character following the number of seconds in a time interval string. */
 124.127 +const TUint KVersitTimePeriodSecondVal		='S';
 124.128 +/** The character at the end of a universal date/time string. */
 124.129 +const TUint KVersitTokenUniversalTimeVal	='Z';
 124.130 +/** The character at the start of a daily recurring entity string. */
 124.131 +const TUint KVersitRecurrenceDailyVal		='D';
 124.132 +/** The character at the start of a weekly recurring entity string. */
 124.133 +const TUint KVersitRecurrenceWeeklyVal		='W';
 124.134 +/** The character which precedes the number of recurrences, when specified, in 
 124.135 +a recurring entity. */
 124.136 +const TUint KVersitRecurrenceNumberOfVal	='#';
 124.137 +/** The string at the beginning of a 'monthly by position' recurring entity 
 124.138 +(see CVersitRecurrenceMonthlyByPos). Used when internalising. */
 124.139 +_LIT(KVersitRecurrenceMonthlyByPos,		"MP");
 124.140 +/** Not used. */
 124.141 +_LIT(KVersitRecurrenceMonthlyByDay,		"MD");
 124.142 +/** Not used. */
 124.143 +_LIT(KVersitRecurrenceYearlyByMonth,		"YM");
 124.144 +/** The string at the beginning of a 'yearly by day' recurring entity, 
 124.145 +(see CVersitRecurrenceYearlyByDay). Used when internalising. */
 124.146 +_LIT(KVersitRecurrenceYearlyByDay,			"YD");
 124.147 +/** A string in the date list (if a date list is defined) of an entity 
 124.148 +that recurs either weekly or 'monthly by position' on Mondays. Used when 
 124.149 +internalising. */
 124.150 +_LIT(KVersitRecurrenceMonday,				"MO");
 124.151 +/** A string in the date list (if a date list is defined) of an entity 
 124.152 +that recurs either weekly or 'monthly by position' on Tuesdays. Used when internalising. */
 124.153 +_LIT(KVersitRecurrenceTuesday,				"TU");
 124.154 +/** A string in the date list (if a date list is defined) of an entity 
 124.155 +that recurs either weekly or 'monthly by position' on Wednesdays. Used when internalising. */
 124.156 +_LIT(KVersitRecurrenceWednesday,			"WE");
 124.157 +/** A string in the date list (if a date list is defined) of an entity that 
 124.158 +recurs either weekly or 'monthly by position' on Thursdays. Used when internalising. */
 124.159 +_LIT(KVersitRecurrenceThursday,				"TH");
 124.160 +/** A string in the date list (if a date list is defined) of an entity that 
 124.161 +recurs either weekly or 'monthly by position' on Fridays. Used when internalising. */
 124.162 +_LIT(KVersitRecurrenceFriday,				"FR");
 124.163 +/** A string in the date list (if a date list is defined) of an entity that 
 124.164 +recurs either weekly or 'monthly by position' on Saturdays. Used when internalising. */
 124.165 +_LIT(KVersitRecurrenceSaturday,				"SA");
 124.166 +/** A string in the date list (if a date list is defined) of an entity that 
 124.167 +recurs either weekly or 'monthly by position' on Sundays. Used when internalising. */
 124.168 +_LIT(KVersitRecurrenceSunday,				"SU");
 124.169 +/** The string appended to the 'occurrence list' section of an entity that 
 124.170 +recurs on the last day of the month. Used when internalising. */
 124.171 +_LIT(KVersitRecurrenceLastDay,				"LD");
 124.172 +
 124.173 +/** The string used at the start of a daily recurring entity. */
 124.174 +_LIT8(KVersitRecurrenceDaily,				"D");
 124.175 +/** The string used at the start of a weekly recurring entity. */
 124.176 +_LIT8(KVersitRecurrenceWeekly,				"W");
 124.177 +/** The string appended just before the number of occurrences, when encoding a recurring 
 124.178 +entity as a descriptor. */
 124.179 +_LIT8(KVersitRecurrenceNumberOf,			"#");
 124.180 +/** The string used at the start of a 'monthly by position' recurring entity, 
 124.181 +(see CVersitRecurrenceMonthlyByPos). Used when externalising. */
 124.182 +_LIT8(KVersitRecurrenceMonthlyByPos8,		"MP");
 124.183 +/** Not used. */
 124.184 +_LIT8(KVersitRecurrenceMonthlyByDay8,		"MD");
 124.185 +/** Not used. */
 124.186 +_LIT8(KVersitRecurrenceYearlyByMonth8,		"YM");
 124.187 +/** The string used at the start of a 'yearly by day' recurring entity, 
 124.188 +(see CVersitRecurrenceYearlyByDay). Used when externalising. */
 124.189 +_LIT8(KVersitRecurrenceYearlyByDay8,			"YD");
 124.190 +/** The string appended to the 'occurrence list' section of an entity that recurs on Mondays. 
 124.191 +Used when externalising. */
 124.192 +_LIT8(KVersitRecurrenceMonday8,				"MO");
 124.193 +/** The string appended to the 'occurrence list' section of an entity that recurs on Tuesdays. 
 124.194 +Used when externalising. */
 124.195 +_LIT8(KVersitRecurrenceTuesday8,				"TU");
 124.196 +/** The string appended to the 'occurrence list' section of an entity that recurs on Wednesdays. 
 124.197 +Used when externalising. */
 124.198 +_LIT8(KVersitRecurrenceWednesday8,			"WE");
 124.199 +/** The string appended to the 'occurrence list' section of an entity that recurs on Thursdays. 
 124.200 +Used when externalising. */
 124.201 +_LIT8(KVersitRecurrenceThursday8,				"TH");
 124.202 +/** The string appended to the 'occurrence list' section of an entity that recurs on Fridays. 
 124.203 +Used when externalising. */
 124.204 +_LIT8(KVersitRecurrenceFriday8,				"FR");
 124.205 +/** The string appended to the 'occurrence list' section of an entity that recurs on Saturdays. 
 124.206 +Used when externalising. */
 124.207 +_LIT8(KVersitRecurrenceSaturday8,				"SA");
 124.208 +/** The string appended to the 'occurrence list' section of an entity that recurs on Sundays. 
 124.209 +Used when externalising. */
 124.210 +_LIT8(KVersitRecurrenceSunday8,				"SU");
 124.211 +/** The string appended to the 'occurrence list' section of an entity that recurs on the last day of 
 124.212 +the month. Used when externalising. */
 124.213 +_LIT8(KVersitRecurrenceLastDay8,				"LD");
 124.214 +/** The string at the start of an entity encoded in a stream. 
 124.215 +
 124.216 +This is implemented as the name of a property, but this property is not stored in the entity's array 
 124.217 +of properties. */
 124.218 +_LIT8(KVersitTokenBEGIN,					"BEGIN");
 124.219 +/** The string at the start of an agent vCard entity encoded in a stream. 
 124.220 +
 124.221 +The reason for needing a Unicode version, is that the agent vCard is held in a 
 124.222 +property value in the parent vCard, and all property values are converted 
 124.223 +to Unicode when they are internalised, in order to make them character set-independent. 
 124.224 +
 124.225 +This is implemented as the name of a property, but this property is not stored in the 
 124.226 +entity's array of properties. */
 124.227 +_LIT(KVersitVarTokenBEGIN,					"BEGIN");
 124.228 +/** The string which follows the body of data of a vCard/vCalendar encoded in a stream. 
 124.229 +It is followed only by the entity name. 
 124.230 +
 124.231 +This is implemented as the name of a property, but this property is not stored in the 
 124.232 +entity's array of properties. */
 124.233 +_LIT8(KVersitTokenEND,						"END");
 124.234 +/** A carriage return and line feed */
 124.235 +_LIT8(KVersitTokenCRLF,						"\r\n"); // carriage return, line feed
 124.236 +/** A boolean true value. Not used. */
 124.237 +_LIT8(KVersitTokenTRUE,						"TRUE");
 124.238 +/** A boolean true value. */
 124.239 +_LIT(KVersitVarTokenTRUE,					"TRUE");
 124.240 +/** A boolean false value. Not used. */
 124.241 +_LIT8(KVersitTokenFALSE,					"FALSE");
 124.242 +/** A boolean false value. */
 124.243 +_LIT(KVersitVarTokenFALSE,					"FALSE");
 124.244 +/** The symbol added to the beginning of an unrecognised property name while 
 124.245 +internalising from a stream. */
 124.246 +_LIT8(KVersitTokenXDashEPOC,				"X-EPOC");
 124.247 +_LIT8(KVersitTokenXDash,					"X-");
 124.248 +/** An empty string. */
 124.249 +_LIT8(KVersitTokenEmptyNarrow,				"");
 124.250 +/** An empty string. */
 124.251 +_LIT(KVersitTokenEmpty,						"");
 124.252 +
 124.253 +//The following names should not be used, versit now uses CharConv character set names.
 124.254 +// params
 124.255 +_LIT8(KVersitTokenENCODING,					"ENCODING");
 124.256 +_LIT8(KVersitTokenBASE64,					"BASE64");
 124.257 +_LIT8(KVersitTokenQUOTEDPRINTABLE,			"QUOTED-PRINTABLE");
 124.258 +_LIT8(KVersitToken8BIT,						"8-BIT");
 124.259 +_LIT8(KVersitTokenCHARSET,					"CHARSET");
 124.260 +_LIT8(KVersitTokenUTF8,						"UTF-8");
 124.261 +_LIT8(KVersitTokenUTF7,						"UTF-7");
 124.262 +_LIT8(KVersitTokenISO1,						"ISO-8859-1");
 124.263 +_LIT8(KVersitTokenISO2,						"ISO-8859-2");
 124.264 +_LIT8(KVersitTokenISO4,						"ISO-8859-4");
 124.265 +_LIT8(KVersitTokenISO5,						"ISO-8859-5");
 124.266 +_LIT8(KVersitTokenISO7,						"ISO-8859-7");
 124.267 +_LIT8(KVersitTokenISO9,						"ISO-8859-9");
 124.268 +_LIT8(KVersitTokenTYPE,						"TYPE");	//used for photo format type 
 124.269 +
 124.270 +// parameters for the X-EPOCALARM 
 124.271 +_LIT8(KVersitTokenVALUE,					"VALUE");
 124.272 +_LIT8(KVersitTokenCONTENTTYPE,				"X-CONTENTTYPE");
 124.273 +_LIT8(KVersitTokenINLINE, 					"INLINE");
 124.274 +_LIT8(KVersitTokenBINARY, 					"BINARY");
 124.275 +
 124.276 +// additional character sets
 124.277 +_LIT8(KVersitTokenISO3,						"ISO-8859-3");
 124.278 +_LIT8(KVersitTokenISO10,					"ISO-8859-10");
 124.279 +_LIT8(KVersitTokenShiftJIS,					"SHIFT_JIS");
 124.280 +_LIT8(KVersitTokenGB2312,					"GB 2312-80");		//This and the following contain the wrong name.
 124.281 +_LIT8(KVersitTokenGBK,						"GBK");
 124.282 +_LIT8(KVersitTokenBIG5,						"BIG5 level 1 and 2");
 124.283 +_LIT8(KVersitTokenISO2022JP,				"ISO 2022-JP");
 124.284 +_LIT8(KVersitTokenEUCJP,					"EUC-JP");
 124.285 +_LIT8(KVersitTokenJIS,						"JIS");
 124.286 +
 124.287 +
 124.288 +// entities
 124.289 +_LIT8(KVersitTokenVCALENDAR,				"VCALENDAR");
 124.290 +_LIT8(KVersitTokenVCARD,					"VCARD");
 124.291 +_LIT(KVersitVarTokenVCALENDAR,				"VCALENDAR");
 124.292 +_LIT(KVersitVarTokenVCARD,					"VCARD");
 124.293 +_LIT(KVersitVarTokenVEVENT,					"VEVENT");
 124.294 +_LIT(KVersitVarTokenVTODO,					"VTODO");
 124.295 +
 124.296 +// properties
 124.297 +_LIT8(KVersitTokenXALARM,					"X-EPOCALARM");
 124.298 +_LIT8(KVersitTokenAALARM,					"AALARM");
 124.299 +_LIT8(KVersitTokenDALARM,					"DALARM");
 124.300 +_LIT8(KVersitTokenPALARM,					"PALARM");
 124.301 +_LIT8(KVersitTokenMALARM,					"MALARM");
 124.302 +_LIT8(KVersitTokenDAYLIGHT,					"DAYLIGHT");
 124.303 +_LIT(KVersitVarTokenDAYLIGHT,				"DAYLIGHT");
 124.304 +_LIT8(KVersitTokenVERSION,					"VERSION");
 124.305 +_LIT8(KVersitTokenCATEGORIES,				"CATEGORIES");
 124.306 +_LIT8(KVersitTokenRESOURCES,				"RESOURCES");
 124.307 +_LIT8(KVersitTokenDCREATED,					"DCREATED");
 124.308 +_LIT8(KVersitTokenDTSTART,					"DTSTART");
 124.309 +_LIT8(KVersitTokenDTEND,					"DTEND");
 124.310 +_LIT8(KVersitTokenLASTMODIFIED,				"LAST-MODIFIED");
 124.311 +_LIT8(KVersitTokenCOMPLETED,				"COMPLETED");
 124.312 +_LIT8(KVersitTokenDUE,						"DUE");
 124.313 +_LIT8(KVersitTokenEXDATE,					"EXDATE");
 124.314 +_LIT8(KVersitTokenEXRULE,					"EXRULE");
 124.315 +_LIT8(KVersitTokenRDATE,					"RDATE");
 124.316 +_LIT8(KVersitTokenRRULE,					"RRULE");
 124.317 +_LIT8(KVersitTokenRNUM,						"RNUM");
 124.318 +_LIT8(KVersitTokenPRIORITY,					"PRIORITY");
 124.319 +_LIT8(KVersitTokenSEQUENCE,					"SEQUENCE");
 124.320 +_LIT8(KVersitTokenTRANSP,					"TRANSP");
 124.321 +_LIT8(KVersitTokenBDAY,						"BDAY");
 124.322 +_LIT8(KVersitTokenAGENT,					"AGENT");
 124.323 +_LIT8(KVersitTokenLABEL,					"LABEL");
 124.324 +_LIT8(KVersitTokenPHOTO,					"PHOTO");
 124.325 +_LIT8(KVersitTokenEMAIL,					"EMAIL");
 124.326 +_LIT8(KVersitTokenINTERNET,					"INTERNET");
 124.327 +_LIT8(KVersitTokenTITLE,					"TITLE");
 124.328 +_LIT8(KVersitTokenROLE,						"ROLE");
 124.329 +_LIT8(KVersitTokenLOGO,						"LOGO");
 124.330 +_LIT8(KVersitTokenNOTE,						"NOTE");
 124.331 +_LIT8(KVersitTokenSOUND,					"SOUND");
 124.332 +_LIT8(KVersitTokenMAILER,					"MAILER");
 124.333 +_LIT8(KVersitTokenPRODID,					"PRODID");
 124.334 +_LIT8(KVersitTokenATTACH,					"ATTACH");
 124.335 +_LIT8(KVersitTokenATTENDEE,					"ATTENDEE");
 124.336 +_LIT8(KVersitTokenCLASS,					"CLASS");
 124.337 +_LIT8(KVersitTokenDESCRIPTION,				"DESCRIPTION");
 124.338 +_LIT8(KVersitTokenLOCATION,					"LOCATION");
 124.339 +_LIT8(KVersitTokenRELATEDTO,				"RELATED-TO");
 124.340 +_LIT8(KVersitTokenSTATUS,					"STATUS");
 124.341 +_LIT8(KVersitTokenSUMMARY,					"SUMMARY");
 124.342 +_LIT8(KVersitTokenN,						"N");
 124.343 +_LIT8(KVersitTokenTZ,						"TZ");
 124.344 +_LIT8(KVersitTokenADR,						"ADR");
 124.345 +_LIT8(KVersitTokenORG,						"ORG");
 124.346 +_LIT8(KVersitTokenREV,						"REV");
 124.347 +_LIT8(KVersitTokenFN,						"FN");
 124.348 +_LIT8(KVersitTokenTEL,						"TEL");
 124.349 +_LIT8(KVersitTokenURL,						"URL");
 124.350 +_LIT8(KVersitTokenGEO,						"GEO");
 124.351 +_LIT8(KVersitTokenUID,						"UID");
 124.352 +_LIT8(KVersitTokenKEY,						"KEY");
 124.353 +_LIT8(KVersitTokenSECONDNAME,				"X-EPOCSECONDNAME");
 124.354 +_LIT8(KVersitTokenXMETHOD,					"X-METHOD");        // For Group Scheduling
 124.355 +_LIT8(KVersitTokenXRECURRENCEID,			"X-RECURRENCE-ID"); // For Group Scheduling
 124.356 +_LIT8(KVersitTokenXLOCALUID,				"X-SYMBIAN-LUID");
 124.357 +_LIT8(KVersitTokenXDTSTAMP,					"X-SYMBIAN-DTSTAMP");
 124.358 +_LIT(KVersitVarTokenINTERNET,				"INTERNET");		//Used by Jave Phone and not by versit
 124.359 +_LIT8(KVersitTokenAssistant,				"X-ASSISTANT");
 124.360 +_LIT8(KVersitTokenAssistantTel,				"X-ASSISTANT-TEL");
 124.361 +_LIT8(KVersitTokenAnniversary,				"X-ANNIVERSARY");
 124.362 +_LIT8(KVersitTokenSpouse,					"X-SPOUSE");
 124.363 +_LIT8(KVersitTokenChildren,					"X-CHILDREN");
 124.364 +_LIT8(KVersitTokenClass,					"X-CLASS");
 124.365 +_LIT8(KVersitAttachLabel, 					"X-NAME");
 124.366 +_LIT8(KVersitAttachMimeType, 				"X-FMTTYPE");
 124.367 +_LIT8(KVersitXUserIntType, 				    "X-SYMBIAN-USERINT");
 124.368 +
 124.369 +#endif
   125.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   125.2 +++ b/epoc32/include/app/vuid.h	Wed Mar 31 12:27:01 2010 +0100
   125.3 @@ -0,0 +1,156 @@
   125.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   125.5 +// All rights reserved.
   125.6 +// This component and the accompanying materials are made available
   125.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   125.8 +// which accompanies this distribution, and is available
   125.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  125.10 +//
  125.11 +// Initial Contributors:
  125.12 +// Nokia Corporation - initial contribution.
  125.13 +//
  125.14 +// Contributors:
  125.15 +//
  125.16 +// Description:
  125.17 +//
  125.18 +
  125.19 +
  125.20 +
  125.21 +/**
  125.22 + @file
  125.23 + @publishedAll
  125.24 + @released 
  125.25 +*/
  125.26 +
  125.27 +#ifndef __VUID_H__
  125.28 +#define __VUID_H__
  125.29 +
  125.30 +/** The default size for 8-bit buffers used in Versit. */
  125.31 +#define KVersitDefaultBufferSize 32
  125.32 +/** The maximum length for a Versit date/time buffer. */
  125.33 +#define KVersitMaxDateTimeLength 16
  125.34 +/** Not used. */
  125.35 +#define KVersitMaxVersionLength 16
  125.36 +_LIT8(KVersitQuestionMark, "?");
  125.37 +
  125.38 +//
  125.39 +// Uid's
  125.40 +// 268440459-268440508 have been allocated to Versit initially
  125.41 +//
  125.42 +
  125.43 +/** The UID for a KVersitTokenBEGIN property.
  125.44 +
  125.45 +Used in vCards and vCalendars. */
  125.46 +#define KVersitTokenBeginUid							268440459
  125.47 +/** The UID for a KVersitTokenEND property.
  125.48 +
  125.49 +Used in vCards and vCalendars. */
  125.50 +#define KVersitTokenEndUid								268440460
  125.51 +/** The UID for a property with an unrecognised name. */
  125.52 +#define KVersitTokenUnknownUid							268440461
  125.53 +/** The UID for a version property.
  125.54 +
  125.55 +Used in vCards and vCalendars. */
  125.56 +#define KVersitTokenVersionUid							270490587
  125.57 +/** The UID for an agent property.
  125.58 +
  125.59 +Used in vCards. */
  125.60 +#define KVCardPropertyAgentUid							268440471
  125.61 +/** The UID for a SOUND property.
  125.62 +
  125.63 +Used in vCards. */
  125.64 +#define KVCardPropertySoundUid							270537213
  125.65 +/** The UID for an alarm property.
  125.66 +
  125.67 +Used in vCalendars and associated with a vEvent or vToDo. */
  125.68 +#define KVCalPropertyAlarmUid							268440472
  125.69 +/** The UID for a vEvent entity. */
  125.70 +#define KVCalEntityUidVEvent							268440473
  125.71 +/** The UID for a vTodo entity. */
  125.72 +#define KVCalEntityUidVTodo								268440474
  125.73 +/** A grouped property UID. This is used to determine whether a property 
  125.74 +is grouped. */
  125.75 +#define KVersitGroupedPropertyUid						268440475
  125.76 +/** The UID for a time zone property.
  125.77 +
  125.78 +Used in vCards and vCalendars. */
  125.79 +#define KVersitPropertyTimeZoneUid						268440476
  125.80 +/** The UID for a date property. */
  125.81 +#define KVersitPropertyDateUid							268440477
  125.82 +/** A time property UID. */
  125.83 +#define KVersitTimePropertyUid							268440478
  125.84 +
  125.85 +/** The UID for an rich (extended) alarm property.
  125.86 +
  125.87 +Used in vCalendars and associated with a vEvent or vToDo. */
  125.88 +#define KVCalPropertyExtendedAlarmUid					268440479
  125.89 +
  125.90 +
  125.91 +
  125.92 +/** Used by the contacts database to identify a vCard. */
  125.93 +#define KVersitEntityUidVCard							268440483		//Used by cntmodel and not by versit
  125.94 +/** The UID for a recurrence property. */
  125.95 +#define KVCalPropertyRecurrenceUid						268440484
  125.96 +/** The UID for a daylight savings property. */
  125.97 +#define KVersitPropertyDaylightUid						268440485
  125.98 +/** The UID for a character set property parameter. */
  125.99 +#define KVersitParamCharsetUid							268440488
 125.100 +
 125.101 +/** The UID for a quoted printable to text converter. */
 125.102 +#define KQuotedPrintableToTextConverter					268441637
 125.103 +/** The UID for a text to quoted printable converter. */
 125.104 +#define KTextToQuotedPrintableConverter					268441638
 125.105 +/** The UID for a base 64 to text converter. */
 125.106 +#define KBase64ToTextConverter							268440005
 125.107 +/** The UID for a text to base 64 converter. */
 125.108 +#define KTextToBase64Converter							268437281 
 125.109 +
 125.110 +/** The UID for a character encoding property parameter. */
 125.111 +#define KVersitParamEncodingUid							268440463
 125.112 +/** The UID for a QUOTED-PRINTABLE property parameter. */
 125.113 +#define KVersitParamEncodingQuotedPrintableUid			268440464
 125.114 +/** The UID for a BASE64 property parameter. */
 125.115 +#define KVersitParamEncodingBase64Uid					268440465
 125.116 +
 125.117 +
 125.118 +/*
 125.119 + * These are versit data-type uids for property values. They
 125.120 + * are versit-internal.
 125.121 + */
 125.122 +
 125.123 +/** The UID for a heap descriptor property. */
 125.124 +#define KVersitPropertyHBufCUid							268440466
 125.125 +/** The UID for a binary property.
 125.126 +
 125.127 +Used in vCards for logos and photos. */
 125.128 +#define KVersitPropertyBinaryUid						268470833
 125.129 +/** The UID for a descriptor array property.
 125.130 +
 125.131 +Used in vCards and vCalendars. */
 125.132 +#define KVersitPropertyCDesCArrayUid					268440467
 125.133 +/** The UID for a multiple date/time property.
 125.134 +
 125.135 +Used in vCalendars. */
 125.136 +#define KVersitPropertyMultiDateTimeUid					268440468
 125.137 +/** The UID for a date/time property.
 125.138 +
 125.139 +Used in vCards and vCalendars. */
 125.140 +#define KVersitPropertyDateTimeUid						268440469
 125.141 +/** The UID for an integer property.
 125.142 +
 125.143 +Used in vCalendars, e.g. for priorities and sequences. */
 125.144 +#define KVersitPropertyIntUid							268440470
 125.145 +
 125.146 +
 125.147 +/*
 125.148 + * The following is a list of UIDs that were used by versit but are not now
 125.149 + */
 125.150 +//UID's for tokens
 125.151 +//268440462
 125.152 +//UID's used for character sets
 125.153 +//268440489, 268440499-506, 268457255-6, 268457654-8, 268478097
 125.154 +//UID's used for Quoted Printable with a character set
 125.155 +//268440486, 268440490-8, 268457253-4, 268457801-5
 125.156 +//UID's used for Base64 with a character set
 125.157 +//268440480-82, 268440487, 268440508, 268456960, 268457257-62, 268470904-6, 268479493
 125.158 +
 125.159 +#endif
   126.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   126.2 +++ b/epoc32/include/app/vutil.h	Wed Mar 31 12:27:01 2010 +0100
   126.3 @@ -0,0 +1,189 @@
   126.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   126.5 +// All rights reserved.
   126.6 +// This component and the accompanying materials are made available
   126.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   126.8 +// which accompanies this distribution, and is available
   126.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  126.10 +//
  126.11 +// Initial Contributors:
  126.12 +// Nokia Corporation - initial contribution.
  126.13 +//
  126.14 +// Contributors:
  126.15 +//
  126.16 +// Description:
  126.17 +//
  126.18 +
  126.19 +#ifndef __VUTIL_H__
  126.20 +#define __VUTIL_H__
  126.21 +
  126.22 +// System includes
  126.23 +#ifndef __E32BASE_H__
  126.24 +#include <e32base.h>
  126.25 +#endif
  126.26 +#ifndef __F32FILE_H__
  126.27 +#include <f32file.h>
  126.28 +#endif
  126.29 +#ifndef __CHARCONV_H__
  126.30 +#include <charconv.h>
  126.31 +#endif
  126.32 +
  126.33 +
  126.34 +class Versit
  126.35 +/** Provides Versit-specific encoding and character set identifiers. 
  126.36 +@publishedAll
  126.37 +@released
  126.38 +*/
  126.39 +	{
  126.40 +public:
  126.41 +	/** Versit-specific encoding identifiers. 
  126.42 +	@publishedAll
  126.43 +	@released
  126.44 +	*/
  126.45 +	enum TVersitEncoding
  126.46 +		{
  126.47 +		/** No encoding. */
  126.48 +		ENoEncoding,
  126.49 +		/** Quoted Printable encoding. */
  126.50 +		EQuotedPrintableEncoding,
  126.51 +		/** Base 64 encoding. */
  126.52 +		EBase64Encoding,
  126.53 +
  126.54 +		// Used internally - not to be used by versit clients
  126.55 +		/** Eight bit encoding. */
  126.56 +		EEightBitEncoding
  126.57 +		};
  126.58 +
  126.59 +	/** Versit-specific character set identifiers. These are used in the Versit API 
  126.60 +	to represent foreign (non-Unicode) character sets for vCard and vCalendar 
  126.61 +	properties. 
  126.62 +	@publishedAll
  126.63 +	@released */
  126.64 +	enum TVersitCharSet
  126.65 +		{
  126.66 +		/** Unknown character set. */
  126.67 +		EUnknownCharSet,
  126.68 +		/** ASCII (7-bit).*/
  126.69 +		EUSAsciiCharSet,	
  126.70 +		/** UTF-8 Unicode transformation format. */
  126.71 +		EUTF8CharSet,
  126.72 +		/** UTF-7 Unicode transformation format. */
  126.73 +		EUTF7CharSet,
  126.74 +		/** ISO 8859-1 (8-bit). */
  126.75 +		EISO88591CharSet,
  126.76 +		/** ISO 8859-2 (8-bit). */
  126.77 +		EISO88592CharSet,
  126.78 +		/** ISO 8859-4 (8-bit). */
  126.79 +		EISO88594CharSet,
  126.80 +		/** ISO 8859-5 (8-bit). */
  126.81 +		EISO88595CharSet,
  126.82 +		/** ISO 8859-7 (8-bit). */
  126.83 +		EISO88597CharSet,
  126.84 +		/** ISO 8859-9 (8-bit). */
  126.85 +		EISO88599CharSet,
  126.86 +		/** ISO 8859-3 (8-bit). */
  126.87 +		EISO88593CharSet,
  126.88 +		/** ISO 8859-10 (8-bit). */
  126.89 +		EISO885910CharSet,
  126.90 +		/** GB 2312. */
  126.91 +		EGB231280CharSet,
  126.92 +		/** GBK. */
  126.93 +		EGBKCharSet,
  126.94 +		/** Big 5. */
  126.95 +		EBIG5CharSet,
  126.96 +		/** ISO-2022-JP. */
  126.97 +		EISO2022JPCharSet,
  126.98 +		/** EUC-JP. */
  126.99 +		EEUCJPCharSet,
 126.100 +		/** Shift JIS. */
 126.101 +		EShiftJISCharSet,
 126.102 +		/** JIS. */
 126.103 +		EJISCharSet,
 126.104 +		/** Must be first character set. */
 126.105 +		EFirstCharSet=EUSAsciiCharSet,
 126.106 +		/** Must be last character set. */
 126.107 +		ELastCharSet=EJISCharSet
 126.108 +		};
 126.109 +
 126.110 +	class TEncodingAndCharset
 126.111 +	/** Specifies an encoding, a character set and a character set converter. 
 126.112 +	@publishedAll
 126.113 +	@released */
 126.114 +		{
 126.115 +	public:
 126.116 +		inline TEncodingAndCharset(TVersitEncoding aEncoding,TUint aCharSetId) :iEncoding(aEncoding), iCharSetId(aCharSetId) 
 126.117 +		/** The C++ constructor initialises the encoding and character set.
 126.118 +	
 126.119 +		@param aEncoding An encoding.
 126.120 +		@param aCharSetId A character set. */
 126.121 +			{}
 126.122 +	public:
 126.123 +		/** An encoding. */
 126.124 +		TVersitEncoding iEncoding;
 126.125 +		/** A character set. */
 126.126 +		TUint iCharSetId;
 126.127 +		/** A character set converter. */
 126.128 +		CCnvCharacterSetConverter* iConverter;
 126.129 +		};
 126.130 +	};
 126.131 +
 126.132 +class CVersitUnicodeUtils : public CBase
 126.133 +/** Versit Unicode utilities class. 
 126.134 +
 126.135 +This enables conversion between Unicode and ISO character sets. 
 126.136 +@publishedAll
 126.137 +@released
 126.138 +*/
 126.139 +	{
 126.140 +public:
 126.141 +	IMPORT_C ~CVersitUnicodeUtils();
 126.142 +	IMPORT_C HBufC8* NarrowL(const TDesC& aDesC);
 126.143 +	IMPORT_C HBufC8* NarrowLC(const TDesC& aDesC);
 126.144 +	IMPORT_C HBufC* WidenL(const TDesC8& aDesC8);
 126.145 +	IMPORT_C HBufC* WidenLC(const TDesC8& aDesC8);
 126.146 +	IMPORT_C void CreateConverterL();
 126.147 +	CCnvCharacterSetConverter::TAvailability SetCurrentCharSetL(TUint aCharacterSet);
 126.148 +
 126.149 +public:
 126.150 +	inline CCnvCharacterSetConverter& CharacterSetConverter() const;
 126.151 +	inline TUint ConvertStandardNameL(const TDesC8& aStandardNameOfCharacterSet);
 126.152 +	inline HBufC8* StandardNameL(TUint aCharSetId);
 126.153 +	TUint AutoDetectCharSetL(const TDesC8& aSample,const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* aAutoDetectCharSets);
 126.154 +
 126.155 +private:
 126.156 +	RFs iFsSession;
 126.157 +	CCnvCharacterSetConverter* iUnicodeConverter;
 126.158 +	TBool iFsConnected;
 126.159 +	TUint iCurrentConverterCharSet;
 126.160 +	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iCharSetsAvailable;
 126.161 +	};
 126.162 +
 126.163 +
 126.164 +inline CCnvCharacterSetConverter& CVersitUnicodeUtils::CharacterSetConverter() const
 126.165 +/** Returns the character set converter created in CreateConverterL().
 126.166 +	
 126.167 +@return A character set converter. */
 126.168 +	{
 126.169 +	return *iUnicodeConverter;
 126.170 +	}
 126.171 +inline TUint CVersitUnicodeUtils::ConvertStandardNameL(const TDesC8& aStandardNameOfCharacterSet)
 126.172 +/** Returns the Symbian OS UID for a character set from its Internet-standard 
 126.173 +name.
 126.174 +	
 126.175 +@param aStandardNameOfCharacterSet Internet-standard name of a character set 
 126.176 +encoded in 8-bit ASCII.
 126.177 +@return The Symbian OS UID of the specified character set. If the name is not 
 126.178 +known, zero is returned. */
 126.179 +	{
 126.180 +	return iUnicodeConverter->ConvertStandardNameOfCharacterSetToIdentifierL(aStandardNameOfCharacterSet,iFsSession);
 126.181 +	}
 126.182 +inline HBufC8* CVersitUnicodeUtils::StandardNameL(TUint aCharSetId)
 126.183 +/** Returns the Internet-standard name of a character set, from its Symbian OS UID. 
 126.184 +
 126.185 +@param aCharSetId The Symbian OS UID of a character set.
 126.186 +@return The Internet-standard name or MIME name of the specified character 
 126.187 +set, or NULL if the UID is not known. The name is encoded in 8-bit ASCII. */
 126.188 +	{
 126.189 +	return iUnicodeConverter->ConvertCharacterSetIdentifierToStandardNameL(aCharSetId,iFsSession);
 126.190 +	}
 126.191 +
 126.192 +#endif
   127.1 --- a/epoc32/include/apparc.h	Tue Mar 16 16:12:26 2010 +0000
   127.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   127.3 @@ -1,608 +0,0 @@
   127.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   127.5 -// All rights reserved.
   127.6 -// This component and the accompanying materials are made available
   127.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   127.8 -// which accompanies this distribution, and is available
   127.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  127.10 -//
  127.11 -// Initial Contributors:
  127.12 -// Nokia Corporation - initial contribution.
  127.13 -//
  127.14 -// Contributors:
  127.15 -//
  127.16 -// Description:
  127.17 -//
  127.18 -
  127.19 -#ifndef __APPARC_H__
  127.20 -#define __APPARC_H__
  127.21 -
  127.22 -#if !defined(__E32STD_H__)
  127.23 -#include <e32std.h>
  127.24 -#endif
  127.25 -#if !defined(__E32BASE_H__)
  127.26 -#include <e32base.h>
  127.27 -#endif
  127.28 -#if !defined(__F32FILE_H__)
  127.29 -#include <f32file.h>
  127.30 -#endif
  127.31 -#if !defined(__GDI_H__)
  127.32 -#include <gdi.h>
  127.33 -#endif
  127.34 -#if !defined(__APADEF_H__)
  127.35 -#include <apadef.h>
  127.36 -#endif
  127.37 -#if !defined(__APAID_H__)
  127.38 -#include <apaid.h>
  127.39 -#endif
  127.40 -
  127.41 -// classes defined:
  127.42 -class CApaApplication;
  127.43 -class CApaDocument;
  127.44 -class CApaProcess;
  127.45 -class MApaEmbeddedDocObserver;
  127.46 -//
  127.47 -// classes referenced:
  127.48 -class CApaDll;
  127.49 -class CApaExe;
  127.50 -class RFile;
  127.51 -class RReadStream;
  127.52 -class RWriteStream;
  127.53 -class CFileStore;
  127.54 -class CPersistentStore;
  127.55 -class CStreamDictionary;
  127.56 -class CDictionaryStore;
  127.57 -class TApaAppHolderInfo;
  127.58 -class CImplementationInformation;
  127.59 -class TApaApplicationFactory;
  127.60 -class CApaAppHolder;
  127.61 -class CApaAppServer;
  127.62 -
  127.63 -/** Creates an application interface object.
  127.64 -
  127.65 -Provides the basic roles of an application class as a factory that
  127.66 -creates concrete document objects, and supplies utility functions 
  127.67 -not specific to any particular instance of a document.
  127.68 -
  127.69 -@publishedAll
  127.70 -@released
  127.71 -*/
  127.72 -typedef CApaApplication* (*CreateCApaApplication)();
  127.73 -
  127.74 -
  127.75 -// CApaApplication
  127.76 -
  127.77 -class CApaApplication : public CBase
  127.78 -// base class for applications; allows creation of documents & file stores + display of app icon and name.
  127.79 -/** Defines the basic behaviour for applications.
  127.80 -
  127.81 -The class defines the basic twin roles of an application class as a factory 
  127.82 -that creates concrete document objects, and as a supplier of utility functions 
  127.83 -not specific to any particular instance of a document. For example, returning 
  127.84 -an application's caption, or accessing its .ini file.
  127.85 -
  127.86 -The class is derived from by the UI framework and is further derived from 
  127.87 -by the UI application.
  127.88 -
  127.89 -@publishedAll 
  127.90 -@released 
  127.91 -@see CEikApplication */
  127.92 -	{
  127.93 -public:
  127.94 -	/** Completes construction of this application object.
  127.95 -	
  127.96 -	The function is called after an instance of a derived class has been successfully 
  127.97 -	created using the ordinal 1 function of the application DLL.
  127.98 -	
  127.99 -	After calling this function, an application can create document objects.
 127.100 -	
 127.101 -	An implementation of this function is supplied by the UI framework.
 127.102 -	
 127.103 -	@see CEikApplication */
 127.104 -	virtual void PreDocConstructL()=0; // call once before creating document
 127.105 -	
 127.106 -	/** Creates a document object.
 127.107 -	
 127.108 -	The function is called by the application process when a new document is required. 
 127.109 -	The application process adds the new document to its list of documents.
 127.110 -	
 127.111 -	An implementation of this function is supplied by the UI framework.
 127.112 -	
 127.113 -	@param aProcess A pointer to the process associated with the application.
 127.114 -	@return A pointer to the newly created document.
 127.115 -	@see CApaProcess::AddNewDocumentL() */
 127.116 -	virtual CApaDocument* CreateDocumentL(CApaProcess* aProcess)=0;
 127.117 -	
 127.118 -	/** Gets the application specific UID.
 127.119 -	
 127.120 -	The UID is used to differentiate between UI applications.
 127.121 -	
 127.122 -	An implementation of this function must be supplied by the UI application.
 127.123 -	
 127.124 -	@return The application specific UID. */
 127.125 -	virtual TUid AppDllUid()const=0;
 127.126 -	
 127.127 -	//
 127.128 -	// utility functions
 127.129 -	IMPORT_C static TInt GenerateFileName(RFs& aFs,TFileName& aRootName);
 127.130 -	IMPORT_C CDictionaryStore* OpenIniFileL(RFs& aFs)const;
 127.131 -	
 127.132 -	/** Opens the .ini file associated with the application, constructs the dictionary 
 127.133 -	store object, returns a pointer to it and puts the pointer onto the cleanupstack.
 127.134 -	
 127.135 -	The .ini file must be created, if it does not already exist.
 127.136 -	
 127.137 -	An implementation of this function is supplied by the UI framework.
 127.138 -	
 127.139 -	@param aFs Handle to a file server session 
 127.140 -	@return A pointer to the dictionary store object that represents the application's 
 127.141 -	.ini file. 
 127.142 -	@see CEikApplication */
 127.143 -	virtual CDictionaryStore* OpenIniFileLC(RFs& aFs)const=0;
 127.144 -	//
 127.145 -	// enquiry functions
 127.146 -	IMPORT_C virtual TFileName AppFullName()const; // returns the full path and name of the app
 127.147 -	/** Returns the capabilities of the application.
 127.148 -	
 127.149 -	Application capability information is represented by an instance of a TApaAppCapability 
 127.150 -	object wrapped in a packaged modifiable buffer descriptor.
 127.151 -	
 127.152 -	The function is called from a number of places within the application framework.
 127.153 -	
 127.154 -	An implementation of this function is supplied by the UI framework.
 127.155 -	
 127.156 -	@param aInfo A packaged modifiable buffer descriptor (a TPckgBuf), encapsulating 
 127.157 -	a TApaAppCapability object. 
 127.158 -	@see CEikApplication
 127.159 -	@see TApaAppCapability
 127.160 -	@see TPckgBuf */
 127.161 -	virtual void Capability(TDes8& aInfo)const=0;
 127.162 -	//
 127.163 -	// accessor function
 127.164 -	IMPORT_C TFileName DllName()const;
 127.165 -	
 127.166 -	IMPORT_C ~CApaApplication();
 127.167 -
 127.168 -	// formerly a reserved virtual, Reserved_1()
 127.169 -	IMPORT_C virtual void NewAppServerL(CApaAppServer*& aAppServer);
 127.170 -protected:
 127.171 -	IMPORT_C CApaApplication();
 127.172 -	
 127.173 -	IMPORT_C virtual void CApaApplication_Reserved1();
 127.174 -	IMPORT_C virtual void CApaApplication_Reserved2();
 127.175 -
 127.176 -private:
 127.177 -	CApaAppHolder* iAppHolder;  // the CApaAppHolder that owns me
 127.178 -	TUid iDtorKey;	//	TInt iSpare;
 127.179 -	friend class CApaAppHolder;
 127.180 -	friend class CApaProcess;
 127.181 -	friend class TApaApplicationFactory; // so that it can access iDtorKey
 127.182 -	
 127.183 -private:
 127.184 -	TInt iCApaApplication_Reserved1;
 127.185 -	};
 127.186 -
 127.187 -class CApaDocument : public CBase
 127.188 -// base class for documents; allows insertion of glass doors.
 127.189 -/** Defines basic behaviour for documents.
 127.190 -
 127.191 -This is the base class for all documents. A document contains the data associated 
 127.192 -with the application's content.
 127.193 -
 127.194 -The class is derived from by the UI framework and is further derived from 
 127.195 -by the UI application.
 127.196 -
 127.197 -@publishedAll 
 127.198 -@released
 127.199 -@see CEikDocument */
 127.200 -	{
 127.201 -public:
 127.202 -	class TCapability
 127.203 -	/** CApaDocument capabilities.*/
 127.204 -		{
 127.205 -	public:
 127.206 -		IMPORT_C TCapability();
 127.207 -		//
 127.208 -		inline TBool CanDrawGlass()const;
 127.209 -		inline TBool CanPrint()const;
 127.210 -		inline void SetCanDrawGlass();
 127.211 -		inline void SetCanPrint();
 127.212 -		//
 127.213 -	private:
 127.214 -		enum {
 127.215 -			ECanDrawGlass	=0x01,
 127.216 -			ECanPrint		=0x02
 127.217 -			};
 127.218 -	private:
 127.219 -		TUint iCapability;
 127.220 -		TInt TCapability_Reserved1;
 127.221 -		};
 127.222 -	//
 127.223 -public:
 127.224 -	// document instantiation functions
 127.225 -	/** Initialises a new, empty, document with a default setup.
 127.226 -	
 127.227 -	This can be the main document or an embedded document. The function is called 
 127.228 -	by the UI framework when it creates a default document file.
 127.229 -	
 127.230 -	An implementation of this function must be supplied by the UI application.
 127.231 -	
 127.232 -	If initialisation fails, the document must be left in the same state as it 
 127.233 -	was before the function was called. */
 127.234 -	virtual void NewDocumentL()=0; // builds a new embedded or main document without loading from a store (may create the content from eg code or a template file).
 127.235 -	
 127.236 -	/** Creates and fully initialises a new filestore and stores the document into it, 
 127.237 -	replacing any existing file of the same name.
 127.238 -	
 127.239 -	The function should put the pointer to the filestore object onto the cleanup 
 127.240 -	stack.
 127.241 -	
 127.242 -	An implementation of this function is supplied by the UI framework.
 127.243 -	
 127.244 -	@param aFs Handle to a file server session. 
 127.245 -	@param aFileName The full path name of the file to be created. 
 127.246 -	@return A pointer to the newly constructed file store. 
 127.247 -	@see CEikDocument */
 127.248 -	virtual CFileStore* CreateFileStoreLC(RFs& aFs,const TDesC& aFileName)=0; // creates a file for a document and stores itself to that store (store should be put on cleanup stack).
 127.249 -	//
 127.250 -	// interaction functions
 127.251 -	IMPORT_C virtual CPicture* GlassPictureL(); // Does nothing by default, override to return handle to glass picture.
 127.252 -	
 127.253 -	/** Starts an editing session on an embedded document.
 127.254 -	
 127.255 -	The function should cause the application's UI to be created and the document 
 127.256 -	to be fully restored for editing.
 127.257 -	
 127.258 -	An implementation of this function is supplied by the UI framework.
 127.259 -	
 127.260 -	@param aContainer This document's observer.
 127.261 -	@param aReadOnly True, the document should be opened in read-only mode and 
 127.262 -	should not persist any changes made to the content. False, the document can 
 127.263 -	be opened in read/write mode; this is the default. 
 127.264 -	@see CEikDocument */
 127.265 -	virtual void EditL(MApaEmbeddedDocObserver* aContainer,TBool aReadOnly=EFalse)=0; // Edit the document in the context of the container's environment. If aContainer is null, edit as the main document
 127.266 -	
 127.267 -	/** Prints the document without a need for it to be open for editing.
 127.268 -	
 127.269 -	Typically, this is called from a shell or a file manager type application 
 127.270 -	that wants to print the document without opening it fully.
 127.271 -	
 127.272 -	An empty implementation of this function is supplied by the UI framework.
 127.273 -	
 127.274 -	The UI application can provide its own implementation.
 127.275 -	
 127.276 -	@param aSourceStore A reference to the store containing the document. 
 127.277 -	@see CEikDocument */
 127.278 -	virtual void PrintL(const CStreamStore& aSourceStore)=0; // default print parameters, assume print context supplied by environment
 127.279 -	//
 127.280 -	// persistence functions
 127.281 -
 127.282 -	/** Stores the document to the current file, commits the changes, and marks the 
 127.283 -	document status as unchanged.
 127.284 -	
 127.285 -	Typically, the function is called by the application when it implements a 
 127.286 -	"Save" type menu option in its User Interface.
 127.287 -	
 127.288 -	An implementation of this function is supplied by the UI framework. This is 
 127.289 -	adequate for direct file store applications. Applications using a permanent 
 127.290 -	file store model, need to provide their own implementation.
 127.291 -	
 127.292 -	If the function leaves, an implementation should ensure that any changes made 
 127.293 -	to the file are rolled back, leaving the file in the state it was in before 
 127.294 -	the function was called.
 127.295 -	
 127.296 -	@see CEikDocument */
 127.297 -	virtual void SaveL()=0; // save the doc to the file in the custody of iAppProcess. This fn should be called by any "Save" menu option. store->Commit() should be called within it.	
 127.298 -	/** Stores the document's content and state to the specified store, recording the 
 127.299 -	identity of any headstreams created in the specified stream dictionary.
 127.300 -	
 127.301 -	The store must be fully constructed before this function is called.
 127.302 -	
 127.303 -	An empty implementation of this function is supplied by the UI framework. 
 127.304 -	UI applications that need to persist any data must provide their own implementation.
 127.305 -	
 127.306 -	If the function leaves, an implementation should ensure that the store and 
 127.307 -	the stream dictionary are returned to the state they were in before the function 
 127.308 -	was called.
 127.309 -	
 127.310 -	@param aStore The store into which document data is to be stored. 
 127.311 -	@param aStreamDic The stream dictionary into which stream IDs and associated 
 127.312 -	UIDs are to be recorded. 
 127.313 -	@see CEikDocument */
 127.314 -	virtual void StoreL(CStreamStore& aStore,CStreamDictionary& aStreamDic) const=0; // store to aStore, lodging the headstream in aStreamDic
 127.315 -	
 127.316 -	/** Restores the document's content and state from data persisted in the specified 
 127.317 -	store.
 127.318 -	
 127.319 -	An empty implementation of this function is supplied by the UI framework. 
 127.320 -	UI applications that need to restore data must provide their own implementation.
 127.321 -	
 127.322 -	If the function leaves, an implementation should ensure that the store and 
 127.323 -	the stream dictionary are returned to the state they were in before the function 
 127.324 -	was called.
 127.325 -	
 127.326 -	@param aStore The store from which document data is to be restored. 
 127.327 -	@param aStreamDic The stream dictionary containing stream IDs and associated 
 127.328 -	UIDs. 
 127.329 -	@see CEikDocument */
 127.330 -	virtual void RestoreL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic)=0; // restore from aStore using aStreamDic
 127.331 -	
 127.332 -	/** Restores the document to the extent that it does not need the store
 127.333 -	further.
 127.334 -
 127.335 -	A document only keeps a pointer to a store if it implements deferred
 127.336 -	loading. This also tells the document that any store pointer that it
 127.337 -	might have is just about to become invalid.
 127.338 -	
 127.339 -	An empty implementation of this function is supplied by the UI framework. 
 127.340 -	UI applications that support deferred loading or embedding should provide an
 127.341 -	implementation.
 127.342 -	
 127.343 -	If a document supports embedding, then it should
 127.344 -	propagate the DetachFromStoreL() call on to all embedded objects that
 127.345 -	it contains.
 127.346 -	
 127.347 -	If the function leaves, the operation should be aborted
 127.348 -	because the document has not successfully detached from the store.
 127.349 -	Continuing with the operation may leave the document in an unsafe
 127.350 -	state or cause user data to be lost.
 127.351 -
 127.352 -	@param aDegree The degree of detachment required. */
 127.353 -	virtual void DetachFromStoreL(CPicture::TDetach /*aDegree*/=CPicture::EDetachFull) {} // supply an implementation if you support deferred loading or embedding
 127.354 -
 127.355 -	IMPORT_C virtual void ExternalizeL(RWriteStream& aStream)const;
 127.356 -	//
 127.357 -	// enquiry functions
 127.358 -	
 127.359 -	/** Tests whether the document is empty.
 127.360 -	
 127.361 -	The UI framework provides a default implementation which always returns a 
 127.362 -	true value.
 127.363 -	
 127.364 -	The UI application can provide its own implementation. Typically, any application 
 127.365 -	that has editable content should supply an implementation that acts according 
 127.366 -	to the state of that content. Applications without associated document data 
 127.367 -	need not supply an implementation.
 127.368 -	
 127.369 -	@return True if the document is empty, false otherwise. 
 127.370 -	@see CEikDocument */
 127.371 -	virtual TBool IsEmpty()const=0; // return ETrue if the document is empty
 127.372 -	IMPORT_C virtual void ValidatePasswordL()const; // return EFalse if there *is* a password *and* the user doesn't get it right, ETrue otherwise (ie they get it right or there isn't one). Returns ETrue by default
 127.373 -	
 127.374 -	IMPORT_C virtual TCapability Capability()const; // returns "cant do anything" by default
 127.375 -	inline CApaApplication* Application()const;
 127.376 -	inline CApaProcess* Process()const;
 127.377 -	
 127.378 -	/** Tests whether the document has changed since it was last persisted.
 127.379 -	
 127.380 -	An implementation of this function is supplied by the UI framework and need 
 127.381 -	not be changed by the UI application.
 127.382 -	
 127.383 -	@return True, if the document has changed since the last time that it was 
 127.384 -	persisted, false, otherwise.
 127.385 -	@see CEikDocument */
 127.386 -	virtual TBool HasChanged()const =0;
 127.387 -	//
 127.388 -	IMPORT_C virtual ~CApaDocument();
 127.389 -protected:
 127.390 -	IMPORT_C CApaDocument();
 127.391 -	IMPORT_C CApaDocument(CApaApplication& aApp,CApaProcess& aProcess);
 127.392 -private:
 127.393 -	IMPORT_C virtual void OpenFileL(CFileStore*& aFileStore, RFile& aFile); // was previously Reserved_1
 127.394 -	// Reserved virtual functions...
 127.395 -	IMPORT_C virtual void Reserved_2();
 127.396 -protected:
 127.397 -	MApaEmbeddedDocObserver* iContainer; // null unless this is an embedded object currently being edited
 127.398 -private:
 127.399 -	CApaApplication* iApplication; // the doc's associated application
 127.400 -	CApaProcess* iApaProcess;
 127.401 -	TInt iSpare;
 127.402 -	};
 127.403 -
 127.404 -
 127.405 -
 127.406 -class TApaApplicationFactory
 127.407 -/** Encapsulates the functionality of creating an application, whether it be via a factory function
 127.408 -or an ECOM plugin. Instances of this class can usually be created implicitly when required as
 127.409 -function parameters - just specify the function pointer, ECOM plugin UID or CImplementationInformation
 127.410 -reference.
 127.411 -
 127.412 -@publishedAll
 127.413 -@released
 127.414 -@see CApaProcess
 127.415 -@see EikStart */
 127.416 -	{
 127.417 -public:
 127.418 -	typedef CApaApplication* (*TFunction)();
 127.419 -public:
 127.420 -	IMPORT_C TApaApplicationFactory();
 127.421 -	IMPORT_C TApaApplicationFactory(TFunction aFunction);
 127.422 -	IMPORT_C TApaApplicationFactory(const CImplementationInformation& aEmbeddedApplicationInformation);
 127.423 -	IMPORT_C TApaApplicationFactory(TUid aEmbeddedApplicationUid);
 127.424 -	CApaApplication* CreateApplicationL() const;
 127.425 -	HBufC* AppFileNameL() const;
 127.426 -	TUid AppFileUid() const;
 127.427 -private:
 127.428 -	enum TType
 127.429 -		{
 127.430 -		ETypeFunction,							// if iType is this, iData is a TFunction
 127.431 -		ETypeEmbeddedApplicationInformation,	// if iType is this, iData is an ECOM CImplementationInformation
 127.432 -		ETypeEmbeddedApplicationUid				// if iType is this, iData is an ECOM implementation TUid
 127.433 -		};
 127.434 -private:
 127.435 -	static CApaApplication* CreateEmbeddedApplicationL(TUid aUid);
 127.436 -	static HBufC* EmbeddedApplicationDisplayNameLC(TUid aUid);
 127.437 -	static HBufC* FullAppFileNameL(const TDesC& aAppName);
 127.438 -	static void CleanupImplementationArray(TAny* aImplementationArray);
 127.439 -private:
 127.440 -	TType iType;
 127.441 -	TUint iData;
 127.442 -	mutable CApaApplication* iApplication; // used to be iSpare1
 127.443 -	TInt iSpare2;
 127.444 -	};
 127.445 -
 127.446 -class CApaParentProcessMonitor;
 127.447 -
 127.448 -class CApaProcess : public CBase
 127.449 -/** Maintains a list of documents and all of the potentially shared resources used 
 127.450 -by documents.
 127.451 -
 127.452 -This includes the application DLLs. The class also supplies utility functions 
 127.453 -that provide the basic structure for persisted document files.
 127.454 -
 127.455 -The class deals with the loading of application DLLs and manages the creation 
 127.456 -and destruction of application (CApaApplication) objects and document (CApaDocument) 
 127.457 -objects.
 127.458 -
 127.459 -The class is derived from by the UI framework and further derivation by the 
 127.460 -UI application is not necessary unless it needs to add extra utility functions 
 127.461 -for the use of applications.
 127.462 -
 127.463 -@publishedAll
 127.464 -@released
 127.465 -@see CApaApplication
 127.466 -@see CApaDocument */
 127.467 -	{
 127.468 -public:
 127.469 -	IMPORT_C static CApaProcess* NewL(const RFs& aFs);
 127.470 -	IMPORT_C void ResetL();
 127.471 -	//
 127.472 -	// static utility functions
 127.473 -	IMPORT_C static CStreamDictionary* ReadRootStreamLC(RFs& aFs,CFileStore*& aStore,const TDesC& aDocFullFileName,TUint aFileMode); // opens aDocFileName as aStore and returns the stream dictionary contained in its root stream on the cleanup stack
 127.474 -	IMPORT_C static CStreamDictionary* ReadRootStreamLC(CFileStore*& aStore, const RFile& aFile);
 127.475 -	IMPORT_C static void WriteRootStreamL(CPersistentStore& aStore,CStreamDictionary& aStreamDic,const CApaApplication& aApp);
 127.476 -	IMPORT_C static void WriteRootStreamL(CPersistentStore& aStore,CStreamDictionary& aStreamDic,const TApaAppIdentifier& aAppId);
 127.477 -	IMPORT_C static TApaAppIdentifier ReadAppIdentifierL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic);
 127.478 -	IMPORT_C static void WriteAppIdentifierL(CStreamStore& aStore,CStreamDictionary& aStreamDic,const TApaAppIdentifier& aAppId);
 127.479 -	//
 127.480 -	// document management
 127.481 -	IMPORT_C CApaDocument* AddNewDocumentL(TApaApplicationFactory aApplicationFactory);
 127.482 -	IMPORT_C CApaDocument* OpenNewDocumentL(CFileStore*& aStore,CStreamDictionary*& aStreamDic,const TDesC& aDocFullFileName,TUint aFileMode); // Open a file and restore the contained document
 127.483 -	IMPORT_C void DestroyDocument(CApaDocument* aDoc); // Removes a doc (identified by the object) from the list and destroys it. Also removes the app and closes the AppDll if appropriate.
 127.484 -	//
 127.485 -	// setter functions
 127.486 -	IMPORT_C void SetMainDocument(CApaDocument* aDocument);
 127.487 -	IMPORT_C void SetMainDocFileName(const TDesC& aMainDocFileName); // panics if the descriptor is too long
 127.488 -	IMPORT_C void SetMainDocFileNameL(const TDesC& aMainDocFileName);
 127.489 -	//
 127.490 -	// accessor functions
 127.491 -	IMPORT_C TPtrC MainDocFileName()const;
 127.492 -	inline RFs& FsSession()const;
 127.493 -	inline CApaDocument* MainDocument()const;
 127.494 -	//
 127.495 -	IMPORT_C ~CApaProcess();
 127.496 -protected:
 127.497 -	IMPORT_C CApaProcess();
 127.498 -	IMPORT_C CApaProcess(const RFs& aFs);
 127.499 -	IMPORT_C void ConstructL();
 127.500 -	IMPORT_C void ConstructL(TProcessId aParentProcessId);
 127.501 -
 127.502 -	IMPORT_C virtual void CApaProcess_Reserved1();
 127.503 -	IMPORT_C virtual void CApaProcess_Reserved2();
 127.504 -public:
 127.505 -	static TInt IdleRemoveApplications(TAny* aThis);
 127.506 -	void RemoveMarkedApplications();
 127.507 -private:
 127.508 -	CApaDll* AddAppDllL(const TDesC& aDllFullPath);
 127.509 -	CApaExe* AddAppExeL(TApaApplicationFactory aApplicationFactory);
 127.510 -	void RemoveApp(CApaAppHolder* aAppHolder);
 127.511 -	CApaDocument* CreateDocL(CApaApplication* aApp);
 127.512 -	CApaAppHolder* FindAppInListL(const TDesC& aAppFileName,TUid aUid)const; // returns NULL if not in list
 127.513 -	void DeleteAllDocs();
 127.514 -	void MarkApplicationForRemoval(const CApaApplication* aApp);
 127.515 -	static void DoReadRootStreamL(CStreamDictionary& aStreamDictionary, const CFileStore& aStore);
 127.516 -private:
 127.517 -	CArrayFixFlat<TApaAppHolderInfo>* iAppList; // array of apps in use
 127.518 -	CArrayFixFlat<CApaDocument*>* iDocList; // array of documents (1 main + n embedded)
 127.519 -	CApaDocument* iMainDoc;
 127.520 -	HBufC* iMainDocFileName;
 127.521 -	RFs iFsSession; // file server session for doc store
 127.522 -	CIdle* iApplicationRemover;
 127.523 -	CApaParentProcessMonitor* iMonitor;
 127.524 -	TInt iCApaProcess_Reserved1;
 127.525 -	};
 127.526 -
 127.527 -
 127.528 -class MApaEmbeddedDocObserver
 127.529 -/** An interface class for handling the completion of the editing of an embedded 
 127.530 -document.
 127.531 -
 127.532 -@publishedAll 
 127.533 -@released
 127.534 -@see CApaDocument::EditL() */
 127.535 -	{
 127.536 -public:
 127.537 -	/** Defines the state of the embedded document on completion of editing. */
 127.538 -	enum TExitMode {
 127.539 -		/** Changes to the embedded document must be saved. */
 127.540 -		EKeepChanges,
 127.541 -		/** Reverts back to the saved version of the embedded document, i.e. reloads the 
 127.542 -		whole document. */
 127.543 -		ERevertToSaved,
 127.544 -		/** No changes have been made to the embedded document. */
 127.545 -		ENoChanges,
 127.546 -		/** The embedded document is empty. */
 127.547 -		EEmpty
 127.548 -		};
 127.549 -public:
 127.550 -	/** Implements the required behaviour when the editing of an embedded document completes.
 127.551 -	
 127.552 -	@param aMode Indicates the state of the document. */
 127.553 -	virtual void NotifyExit(TExitMode aMode)=0; // called on completion of editing of an embedded document
 127.554 -protected:
 127.555 -	IMPORT_C MApaEmbeddedDocObserver();
 127.556 -private:
 127.557 -	IMPORT_C virtual void MApaEmbeddedDocObserver_Reserved1();
 127.558 -	IMPORT_C virtual void MApaEmbeddedDocObserver_Reserved2();
 127.559 -private:
 127.560 -	TInt iMApaEmbeddedDocObserver_Reserved1;
 127.561 -	};
 127.562 -
 127.563 -
 127.564 -//// inlines ////
 127.565 -inline CApaApplication* CApaDocument::Application()const
 127.566 -/** Returns a pointer to the application that created the document.
 127.567 -
 127.568 -@return A pointer to the document's associated application. */
 127.569 -	{ return iApplication; }
 127.570 -
 127.571 -inline CApaProcess* CApaDocument::Process()const
 127.572 -/** Returns a pointer to the application process associated with this document.
 127.573 -
 127.574 -@return A pointer to the application process associated with this document. */
 127.575 -	{ return iApaProcess; }
 127.576 -
 127.577 -inline TBool CApaDocument::TCapability::CanDrawGlass()const
 127.578 -/** Tests whether the document supports being embedded as a glass door.
 127.579 -
 127.580 -@return True if embedding as a glass door is supported; false otherwise. */
 127.581 -	{ return iCapability&ECanDrawGlass; }
 127.582 -
 127.583 -inline TBool CApaDocument::TCapability::CanPrint()const
 127.584 -/** Tests whether the document supports being printed without using the full application 
 127.585 -UI.
 127.586 -
 127.587 -@return True, if printing is supported; false, otherwise. */
 127.588 -	{ return iCapability&ECanPrint; }
 127.589 -
 127.590 -inline void CApaDocument::TCapability::SetCanDrawGlass()
 127.591 -/** Sets the document as being capable of being embedded as a glass door. */
 127.592 -	{ iCapability = iCapability|ECanDrawGlass; }
 127.593 -
 127.594 -inline void CApaDocument::TCapability::SetCanPrint()
 127.595 -/** Sets the document as being capable of being printed without using the full application 
 127.596 -UI. */
 127.597 -	{ iCapability = iCapability|ECanPrint; }
 127.598 -
 127.599 -inline RFs& CApaProcess::FsSession()const
 127.600 -/** Returns a handle to the file server session used by this application process.
 127.601 -
 127.602 -@return The file server session. */
 127.603 -	{ return (RFs&)iFsSession; } //lint !e1536 Exposing low access member - Kept for backward BC
 127.604 -
 127.605 -inline CApaDocument* CApaProcess::MainDocument()const
 127.606 -/** Returns a pointer to the main document.
 127.607 -
 127.608 -@return A pointer to the main document. */
 127.609 -	{ return iMainDoc; }
 127.610 -	
 127.611 -#endif
   128.1 --- a/epoc32/include/asaltdefs.h	Tue Mar 16 16:12:26 2010 +0000
   128.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   128.3 @@ -1,247 +0,0 @@
   128.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   128.5 -// All rights reserved.
   128.6 -// This component and the accompanying materials are made available
   128.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   128.8 -// which accompanies this distribution, and is available
   128.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  128.10 -//
  128.11 -// Initial Contributors:
  128.12 -// Nokia Corporation - initial contribution.
  128.13 -//
  128.14 -// Contributors:
  128.15 -//
  128.16 -// Description:
  128.17 -//
  128.18 -
  128.19 -#ifndef __ASALTDEFS_H__
  128.20 -#define __ASALTDEFS_H__
  128.21 -
  128.22 -/** @file
  128.23 -@publishedAll
  128.24 -@released
  128.25 -*/
  128.26 -// System includes
  128.27 -#include <e32std.h>
  128.28 -#include <babitflags.h>
  128.29 -
  128.30 -/** 
  128.31 - Flags used to indicate the States for enum TASAltStateFlags
  128.32 - */
  128.33 -typedef TBitFlags TASAltClientServerStateFlags;
  128.34 -
  128.35 -/** 
  128.36 - Major Version used while connecting to the Alarm Alert Server
  128.37 - */
  128.38 -const TInt KASAltVersionMajor = 3;
  128.39 -
  128.40 -/** 
  128.41 - Minor Version used while connecting to the Alarm Alert Server
  128.42 - */
  128.43 -const TInt KASAltVersionMinor = 0;
  128.44 -
  128.45 -/** 
  128.46 - Build Version used while connecting to the Alarm Alert Server
  128.47 - */
  128.48 -const TInt KASAltVersionBuild = 0;
  128.49 -
  128.50 -/** 
  128.51 - Number of message Slots
  128.52 - */
  128.53 -const TInt KAlmMessageSlots	= 5;
  128.54 -
  128.55 -/** 
  128.56 - The individual op codes which the Alert Server and Alarm Server
  128.57 - handshake using
  128.58 - */
  128.59 -enum TASAltOpCode
  128.60 -    {
  128.61 -	/**
  128.62 -	 Notify the alarm server (asynchronously) when the Alert Server
  128.63 -	 wishes to perform some action.
  128.64 -	 */
  128.65 -    EASAltOpCodeNotify = 0,
  128.66 -
  128.67 -	/**
  128.68 -	 Cancel an earlier notification
  128.69 -	 */
  128.70 -    EASAltOpCodeNotifyCancel,
  128.71 -
  128.72 -	/**
  128.73 -	 Change the visibility of the Alert Server UI furniture
  128.74 -	 */
  128.75 -	EASAltOpCodeVisible,
  128.76 -
  128.77 -	/**
  128.78 -	 Update the Alert Server flags
  128.79 -	 */
  128.80 -    EASAltOpCodeSetState,
  128.81 -
  128.82 -	/**
  128.83 -	 Inform the Alert Server of the currently notifying alarm
  128.84 -	 */
  128.85 -    EASAltOpCodeSetAlarm,
  128.86 -
  128.87 -	/**
  128.88 -	 Inform the Alert Server that the currently alerting alarm
  128.89 -	 has been snoozed.
  128.90 -	 */
  128.91 -	EASAltOpCodeSetDeferTime,
  128.92 -
  128.93 -	/**
  128.94 -	 Retrieve the time from the Alert Server when a quiet period 
  128.95 -	 should be terminated
  128.96 -	 */
  128.97 -	EASAltOpCodeGetUserTime,
  128.98 -
  128.99 -	/**
 128.100 -	 Create an outstanding request with the Alert Server. Used
 128.101 -	 as a mechanism to obtain Alert Server thread death notifications.
 128.102 -	 */
 128.103 -	EASAltOpCodeLogon,
 128.104 -
 128.105 -	/**
 128.106 -	 Ask the Alert Server to start playing the specified alarm sound
 128.107 -	 */
 128.108 -	EASAltOpCodeStartPlayingSound,
 128.109 -
 128.110 -	/**
 128.111 -	 Ask the Alert Server to stop playing any sound
 128.112 -	 */
 128.113 -	EASAltOpCodeStopPlayingSound
 128.114 -
 128.115 -	/**
 128.116 -	Ask the  Alert Server to change vissibility for all alarms
 128.117 -	*/
 128.118 -	, EASAltOpCodeVisibleAll,
 128.119 -	
 128.120 -	/**
 128.121 -	Ask the  Alert Server to update states for all alarms
 128.122 -	*/
 128.123 -	EASAltOpCodeSetStateAll,
 128.124 -	
 128.125 -	/**
 128.126 -	Ask the  Alert Server to stop playing all sounds.
 128.127 -	*/
 128.128 -	EASAltOpCodeStopPlayingSoundAll,
 128.129 -	
 128.130 -	/**
 128.131 -	Ask the  Alert Server to delete alarm with provided Id
 128.132 -	*/
 128.133 -	EASAltOpCodeDeleteAlarm,
 128.134 -
 128.135 -	/**
 128.136 -	 Retrieve the time from the Alert Server when a quiet period 
 128.137 -	 should be terminated
 128.138 -	 */
 128.139 -
 128.140 -	EASAltOpCodeGetEndQuietTime,
 128.141 -
 128.142 -	/**
 128.143 -	Ask the Alarm Server to get number of simultaneously supported alarms
 128.144 -	*/
 128.145 -	EASAltOpCodeGetMaxAlarms,
 128.146 -	
 128.147 -	/**
 128.148 -	Ask the  Alert Server to delete all alarms
 128.149 -	*/
 128.150 -	EASAltOpCodeDeleteAlarmAll,
 128.151 -			
 128.152 -	EASAltOpCodeLast
 128.153 -	
 128.154 -	
 128.155 -    };
 128.156 -
 128.157 -/**
 128.158 - All communication from the Alert Server to the Alarm Server
 128.159 - occurs via a single outstanding TRequesStatus which is handled
 128.160 - by the Alarm Server (as an active object). This enumeration
 128.161 - describes the type of action that the Alarm Server should take in
 128.162 - response to a request from the Alert Server.
 128.163 - */
 128.164 -enum TASAltAlertServerResponse
 128.165 -	{
 128.166 -	/**
 128.167 -	 The Alert Server wishes the Alarm Server to
 128.168 -	 silence all alarms.
 128.169 -	 */
 128.170 -	EASAltAlertServerResponseSilence = 0,
 128.171 -
 128.172 -	/**
 128.173 -	 The Alert Server wishes the Alarm Server to
 128.174 -	 enter a global quiet period.
 128.175 -	 */
 128.176 -	EASAltAlertServerResponseQuietPeriod,
 128.177 -
 128.178 -	/**
 128.179 -	 The Alert Server wishes the Alarm Server to
 128.180 -	 acknowledge (clear) the currently notifying alarm.
 128.181 -	 */
 128.182 -	EASAltAlertServerResponseClear,
 128.183 -
 128.184 -	/**
 128.185 -	 The Alert Server wishes the Alarm Server to
 128.186 -	 acknowledge (clear) the currently notifying alarm
 128.187 -	 and all others that are awaiting notification.
 128.188 -	 */
 128.189 -	EASAltAlertServerResponseClearAll,
 128.190 -
 128.191 -	/**
 128.192 -	 The Alert Server wishes the Alarm Server to
 128.193 -	  snooze the currently notifying alarm.
 128.194 -	 */
 128.195 -	EASAltAlertServerResponseSnooze,
 128.196 -
 128.197 -	/**
 128.198 -	 The Alert Server wishes the Alarm Server to
 128.199 -	 temporarily pause all sound (i.e stop sending sound
 128.200 -	 play events to the Alert Server).
 128.201 -	 */
 128.202 -	EASAltAlertServerResponsePauseSound
 128.203 -	};
 128.204 -
 128.205 -/**
 128.206 - Flags for TASAltClientServerStateFlags
 128.207 - */
 128.208 -enum TASAltStateFlags
 128.209 -	{
 128.210 -	/**
 128.211 -	 The Alert Server should not play any sound
 128.212 -	 */
 128.213 -	EASAltStateFlagsSilentRunning = 1,
 128.214 -
 128.215 -	/**
 128.216 -	 The Alarm Server is currently within a quiet period
 128.217 -	 */
 128.218 -	EASAltStateFlagsInQuietPeriod = 2,
 128.219 -
 128.220 -	/**
 128.221 -	 The Alarm Server currently has more than one alarm
 128.222 -	 ready to notify.
 128.223 -	 */
 128.224 -	EASAltStateFlagsMoreThanOneDueAlarm	= 3,
 128.225 -
 128.226 -	/**
 128.227 -	 There wasn't sufficient memory within the Alarm
 128.228 -	 Server to allocate room for a snoozed alarm. I'm
 128.229 -	 note convinced we need this anymore
 128.230 -	 */
 128.231 -	EASAltStateFlagsNoMemoryForSnoozeAlarm = 4,
 128.232 -
 128.233 -	/**
 128.234 -	 There isn't any sound filename for the current
 128.235 -	 alarm.
 128.236 -	 */
 128.237 -	EASAltStateFlagsAlarmHasNoSoundFileName	= 5,
 128.238 -
 128.239 -	/**
 128.240 -	 This isn't used by the Alert Server.
 128.241 -	 */
 128.242 -	EASAltStateFlagsSoundIsPaused = 6
 128.243 -
 128.244 -	};
 128.245 -
 128.246 -// Literal constants
 128.247 -_LIT(KAlarmAlertServerName, "!AlarmAlertServer");
 128.248 -
 128.249 -
 128.250 -#endif
   129.1 --- a/epoc32/include/ascliclientutils.h	Tue Mar 16 16:12:26 2010 +0000
   129.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   129.3 @@ -1,78 +0,0 @@
   129.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   129.5 -// All rights reserved.
   129.6 -// This component and the accompanying materials are made available
   129.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   129.8 -// which accompanies this distribution, and is available
   129.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  129.10 -//
  129.11 -// Initial Contributors:
  129.12 -// Nokia Corporation - initial contribution.
  129.13 -//
  129.14 -// Contributors:
  129.15 -//
  129.16 -// Description:
  129.17 -//
  129.18 -
  129.19 -#ifndef __ASCLICLIENTUTILS_H__
  129.20 -#define __ASCLICLIENTUTILS_H__
  129.21 -
  129.22 -// System includes
  129.23 -#include <e32base.h>
  129.24 -
  129.25 -
  129.26 -///////////////////////////////////////////////////////////////////////////////////////
  129.27 -// ----> AlarmClientUtils (header)
  129.28 -///////////////////////////////////////////////////////////////////////////////////////
  129.29 -class AlarmClientUtils
  129.30 -/**
  129.31 -@publishedAll
  129.32 -@released
  129.33 -*/
  129.34 -	{
  129.35 -///////////////////////////////////////////////////////////////////////////////////////
  129.36 -public:										// ENUMERATIONS
  129.37 -///////////////////////////////////////////////////////////////////////////////////////
  129.38 -	/** Panic numbers associated with the ALMSRVCLI panic category. */
  129.39 -	enum TAlarmClientPanic
  129.40 -		{
  129.41 -		EAlarmClientPanicArgument			= 0,
  129.42 -		EAlarmClientPanicCancel				= 1,
  129.43 -		EAlarmClientPanicSessionClose		= 2,
  129.44 -		EAlarmClientPanicSetAlarm			= 3,
  129.45 -		EAlarmClientPanicGetAlarm			= 4,
  129.46 -		EAlarmClientPanicInvalidAlarmID		= 5,
  129.47 -		EAlarmClientPanicAlarmInfo			= 6,
  129.48 -		EAlarmClientPanicSound				= 7,
  129.49 -		EAlarmClientPanicOwner				= 8,
  129.50 -		EAlarmClientPanicVerify				= 9,
  129.51 -		EAlarmClientPanicAlarmDay			= 10,
  129.52 -		EAlarmClientPanicNumber				= 11,
  129.53 -		EAlarmClientPanicNoArray			= 12,
  129.54 -		EAlarmClientPanicNotificationCancel	= 13,
  129.55 -		//
  129.56 -		EAlarmClientPanicLast
  129.57 -		};
  129.58 -	/** Panic numbers associated with the ALMSRVCLIFAULT panic category. */
  129.59 -	enum TAlarmClientFault
  129.60 -		{
  129.61 -		EAlarmClientFaultLogic				= 0,
  129.62 -		EAlarmClientFaultData				= 1,
  129.63 -		EAlarmClientFaultCouldNotLoadServer	= 2,
  129.64 -		//
  129.65 -		EAlarmClientFaultDebugFuncError		= 3,
  129.66 -		//
  129.67 -		EAlarmClientFaultLast
  129.68 -		};
  129.69 -
  129.70 -///////////////////////////////////////////////////////////////////////////////////////
  129.71 -public:										// INTERNAL CONSTRUCT
  129.72 -///////////////////////////////////////////////////////////////////////////////////////
  129.73 -
  129.74 -	static void								Panic(TAlarmClientPanic aPanic);
  129.75 -
  129.76 -	static void								Fault(TAlarmClientFault aFault);
  129.77 -
  129.78 -	IMPORT_C static TInt					StartAlarmServer();
  129.79 -	};
  129.80 -
  129.81 -#endif
   130.1 --- a/epoc32/include/asclidefinitions.h	Tue Mar 16 16:12:26 2010 +0000
   130.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   130.3 @@ -1,55 +0,0 @@
   130.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   130.5 -// All rights reserved.
   130.6 -// This component and the accompanying materials are made available
   130.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   130.8 -// which accompanies this distribution, and is available
   130.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  130.10 -//
  130.11 -// Initial Contributors:
  130.12 -// Nokia Corporation - initial contribution.
  130.13 -//
  130.14 -// Contributors:
  130.15 -//
  130.16 -// Description:
  130.17 -//
  130.18 -
  130.19 -#ifndef __ASCLIDEFINITIONS_H__
  130.20 -#define __ASCLIDEFINITIONS_H__
  130.21 -
  130.22 -// System includes
  130.23 -#include <e32base.h>
  130.24 -
  130.25 -// User includes
  130.26 -
  130.27 -// Type definitions
  130.28 -
  130.29 -// Constants
  130.30 -
  130.31 -// Enumerations
  130.32 -
  130.33 -
  130.34 -///////////////////////////////////////////////////////////////////////////////////////
  130.35 -// ----> ASCliDefinitions (header)
  130.36 -///////////////////////////////////////////////////////////////////////////////////////
  130.37 -class ASCliDefinitions
  130.38 -/** This is a utility class that retrieves the name and version number of the alarm 
  130.39 -server. 
  130.40 -@publishedAll
  130.41 -@released
  130.42 -*/
  130.43 -	{
  130.44 -///////////////////////////////////////////////////////////////////////////////////////
  130.45 -public:										// STATIC ACCESS METHODS
  130.46 -///////////////////////////////////////////////////////////////////////////////////////
  130.47 -
  130.48 -	IMPORT_C static const TDesC&			ServerAndThreadName();
  130.49 -
  130.50 -	static const TDesC&						ServerImageName();
  130.51 -
  130.52 -	static TUidType							ServerUidType();
  130.53 -
  130.54 -	static TVersion							Version();
  130.55 -
  130.56 -	};
  130.57 -
  130.58 -#endif
   131.1 --- a/epoc32/include/asclisession.h	Tue Mar 16 16:12:26 2010 +0000
   131.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   131.3 @@ -1,206 +0,0 @@
   131.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   131.5 -// All rights reserved.
   131.6 -// This component and the accompanying materials are made available
   131.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   131.8 -// which accompanies this distribution, and is available
   131.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  131.10 -//
  131.11 -// Initial Contributors:
  131.12 -// Nokia Corporation - initial contribution.
  131.13 -//
  131.14 -// Contributors:
  131.15 -//
  131.16 -// Description:
  131.17 -//
  131.18 -
  131.19 -#ifndef __ASCLISESSION_H__
  131.20 -#define __ASCLISESSION_H__
  131.21 -
  131.22 -// System includes
  131.23 -#include <e32base.h>
  131.24 -
  131.25 -// User includes
  131.26 -#include <asshddefs.h>
  131.27 -
  131.28 -// Classes referenced
  131.29 -class TASShdAlarm;
  131.30 -class TASCliSoundPlayDefinition;
  131.31 -
  131.32 -
  131.33 -class RASCliSession : public RSessionBase
  131.34 -/** The client-side interface to the Symbian OS alarm server. 
  131.35 -@publishedAll
  131.36 -@released
  131.37 -*/
  131.38 -	{
  131.39 -///////////////////////////////////////////////////////////////////////////////////////
  131.40 -public:										// CONNECT TO SERVER & VERSIONING
  131.41 -///////////////////////////////////////////////////////////////////////////////////////
  131.42 -
  131.43 -	IMPORT_C RASCliSession();
  131.44 -
  131.45 -	IMPORT_C TInt							Connect();
  131.46 -
  131.47 -	IMPORT_C TVersion						Version() const;
  131.48 -
  131.49 -///////////////////////////////////////////////////////////////////////////////////////
  131.50 -public:										// ALARM SPECIFIC FUNCTIONALITY
  131.51 -///////////////////////////////////////////////////////////////////////////////////////
  131.52 -
  131.53 -	IMPORT_C TInt							AlarmAdd(TASShdAlarm& aAlarm) const;
  131.54 -
  131.55 -	IMPORT_C TInt							AlarmAdd(TASShdAlarm& aAlarm, const TDesC8& aData) const;
  131.56 -
  131.57 -	IMPORT_C void							AlarmAddWithNotification(TRequestStatus& aStatus, TASShdAlarm& aAlarm);
  131.58 -
  131.59 -	IMPORT_C void							AlarmAddWithNotification(TRequestStatus& aStatus, TASShdAlarm& aAlarm, const TDesC8& aData);
  131.60 -
  131.61 -	IMPORT_C void							AlarmNotificationCancelAndDequeue(TAlarmId aAlarmId) const;
  131.62 -
  131.63 -	IMPORT_C TInt							GetAlarmDetails(TAlarmId aAlarmId, TASShdAlarm& aAlarm) const;
  131.64 -	
  131.65 -	IMPORT_C TInt							AlarmDelete(TAlarmId aAlarmId) const;
  131.66 -
  131.67 -	IMPORT_C TInt							GetAlarmCategory(TAlarmId aAlarmId, TAlarmCategory& aCategory) const;
  131.68 -
  131.69 -	IMPORT_C TInt							GetAlarmOwner(TAlarmId aAlarmId, TFullName& aThreadName) const;
  131.70 -
  131.71 -	IMPORT_C TInt							SetAlarmStatus(TAlarmId aAlarmId, TAlarmStatus aStatus) const;
  131.72 -
  131.73 -	IMPORT_C TInt							GetAlarmStatus(TAlarmId aAlarmId, TAlarmStatus& aStatus) const;
  131.74 -
  131.75 -	IMPORT_C TInt							SetAlarmDayOrTimed(TAlarmId aAlarmId, TAlarmDayOrTimed aDayOrTimed) const;
  131.76 -
  131.77 -	IMPORT_C TInt							GetAlarmDayOrTimed(TAlarmId aAlarmId, TAlarmDayOrTimed& aDayOrTimed) const;
  131.78 -
  131.79 -	IMPORT_C TInt							SetAlarmCharacteristics(TAlarmId aAlarmId, TAlarmCharacteristicsFlags aCharacteristics) const;
  131.80 -
  131.81 -	IMPORT_C TInt							GetAlarmCharacteristics(TAlarmId aAlarmId, TAlarmCharacteristicsFlags& aCharacteristics) const;
  131.82 -
  131.83 -	IMPORT_C TInt							SetClientData(const TASShdAlarm& aAlarm);
  131.84 -
  131.85 -	IMPORT_C TInt							SetAlarmDays(TAlarmId aAlarmId, TUint8 aAlarmDays) const;
  131.86 -    IMPORT_C TInt							GetAlarmDays(TAlarmId aAlarmId, TUint8& aAlarmDays) const;
  131.87 -    IMPORT_C TInt							SetContinuous(TAlarmId aAlarmId, TBool aContinuous) const;
  131.88 -    IMPORT_C TInt							GetContinuous(TAlarmId aAlarmId, TBool& aContinuous) const;
  131.89 -	
  131.90 -///////////////////////////////////////////////////////////////////////////////////////
  131.91 -public:										// ALARM DATA FUNCTIONALITY
  131.92 -///////////////////////////////////////////////////////////////////////////////////////
  131.93 -
  131.94 -	IMPORT_C TInt							AlarmDataAttachL(TAlarmId aAlarmId, const TDesC8& aData) const;
  131.95 -
  131.96 -	IMPORT_C TInt							AlarmDataDetach(TAlarmId aAlarmId) const;
  131.97 -
  131.98 -	inline	 TInt							AlarmDataDetatch(TAlarmId aAlarmId) const;
  131.99 -
 131.100 -	IMPORT_C TInt							AlarmDataSize(TAlarmId aAlarmId) const;
 131.101 -
 131.102 -	IMPORT_C TInt							GetAlarmData(TAlarmId aAlarmId, TDes8& aSink) const;
 131.103 -
 131.104 -	IMPORT_C TInt							GetAlarmData(TAlarmId aAlarmId, HBufC8*& aSink) const;
 131.105 -
 131.106 -///////////////////////////////////////////////////////////////////////////////////////
 131.107 -public:										// CATEGORY-SPECIFIC FUNCTIONALITY
 131.108 -///////////////////////////////////////////////////////////////////////////////////////
 131.109 -
 131.110 -	IMPORT_C TInt							SetAlarmStatusByCategory(TAlarmCategory aCategory, TAlarmStatus aStatus) const;
 131.111 -
 131.112 -	IMPORT_C TInt							GetAlarmCountForCategory(TAlarmCategory aCategory) const;
 131.113 -
 131.114 -	IMPORT_C TInt							AlarmDeleteAllByCategory(TAlarmCategory aCategory, TBool aDeleteOnlyOrphanedAlarmsInCategory) const;
 131.115 -
 131.116 -	IMPORT_C TInt							AlarmDeleteByCategory(TAlarmCategory aCategory, TDeleteType aWhatToDelete) const;
 131.117 -
 131.118 -	IMPORT_C void							GetAvailableCategoryListL(RArray<TAlarmCategory>& aCategories) const;
 131.119 -
 131.120 -	IMPORT_C void							GetAlarmIdListForCategoryL(TAlarmCategory aCategory, RArray<TAlarmId>& aAlarmIds) const;
 131.121 -
 131.122 -///////////////////////////////////////////////////////////////////////////////////////
 131.123 -public:										// MISC FUNCTIONALITY
 131.124 -///////////////////////////////////////////////////////////////////////////////////////
 131.125 -
 131.126 -	IMPORT_C TInt							AlarmCountByState(TAlarmState aState) const;
 131.127 -
 131.128 -	IMPORT_C void							GetAlarmIdListByStateL(TAlarmState aState, RArray<TAlarmId>& aAlarmIds) const;
 131.129 -
 131.130 -	IMPORT_C void							GetAlarmIdListL(RArray<TAlarmId>& aAlarmIds) const;
 131.131 -
 131.132 -	IMPORT_C TInt							GetNextDueAlarmId(TAlarmId& aAlarmId) const;
 131.133 -
 131.134 -	IMPORT_C TInt							NumberOfAlarmsActiveInQueue() const;
 131.135 -
 131.136 -///////////////////////////////////////////////////////////////////////////////////////
 131.137 -public:										// SOUND CONTROL
 131.138 -///////////////////////////////////////////////////////////////////////////////////////
 131.139 -
 131.140 -	IMPORT_C TInt							SetAlarmSoundState(TAlarmGlobalSoundState aState) const;
 131.141 -
 131.142 -	IMPORT_C TInt							GetAlarmSoundState(TAlarmGlobalSoundState& aState) const;
 131.143 -
 131.144 -	IMPORT_C TInt							SetAlarmSoundsSilentUntil(const TTime& aLocalTime) const;
 131.145 -
 131.146 -	IMPORT_C TInt							SetAlarmSoundsSilentFor(TTimeIntervalMinutes aTimeToRemainSilentFor) const;
 131.147 -
 131.148 -	IMPORT_C TInt							GetAlarmSoundsSilentUntil(TTime& aLocalTime) const;
 131.149 -
 131.150 -	IMPORT_C TInt							CancelAlarmSilence() const;
 131.151 -
 131.152 -	IMPORT_C TBool							AlarmSoundsTemporarilySilenced() const;
 131.153 -
 131.154 -	IMPORT_C void							SetAlarmPlayIntervalsL(const CArrayFix<TASCliSoundPlayDefinition>& aIntervals) const;
 131.155 -
 131.156 -	IMPORT_C void							GetAlarmPlayIntervalsL(CArrayFix<TASCliSoundPlayDefinition>& aIntervals) const;
 131.157 -
 131.158 -///////////////////////////////////////////////////////////////////////////////////////
 131.159 -public:										// CHANGE NOTIFICATION
 131.160 -///////////////////////////////////////////////////////////////////////////////////////
 131.161 -
 131.162 -	IMPORT_C void							NotifyChange(TRequestStatus& aStatus, TAlarmId& aAlarmId);
 131.163 -
 131.164 -	IMPORT_C void							NotifyChangeCancel() const;
 131.165 -
 131.166 -///////////////////////////////////////////////////////////////////////////////////////
 131.167 -public:										// DEBUG ONLY
 131.168 -///////////////////////////////////////////////////////////////////////////////////////
 131.169 -
 131.170 -	IMPORT_C void							__DbgShutDownServer() const;
 131.171 -
 131.172 -	IMPORT_C void							__DbgFailAlloc(TInt aCount) const;
 131.173 -
 131.174 -	IMPORT_C void							__DbgPreventUserNotify(TBool aShouldStop) const;
 131.175 -
 131.176 -	IMPORT_C TInt							__DbgSnoozeAlarm(TAlarmId aAlarmId, const TTime& aNewTime) const;
 131.177 -	
 131.178 -	IMPORT_C TInt 							__DbgSetEnvChgHandling(TBool aFlag) const;
 131.179 -///////////////////////////////////////////////////////////////////////////////////////
 131.180 -private:									// MEMBER DATA
 131.181 -///////////////////////////////////////////////////////////////////////////////////////
 131.182 -
 131.183 -	void									FetchAlarmIdsFromBufferL(RArray<TAlarmId>& aAlarmIds, TInt aBufferSize) const;
 131.184 -
 131.185 -	CBufBase*								FetchTransferBufferLC(TInt aBufferSize) const;
 131.186 -
 131.187 -	void									DoAlarmAddWithNotification(TRequestStatus& aStatus, TASShdAlarm& aAlarm, const TDesC8& aData);
 131.188 -	TInt									DoAlarmAdd(TASShdAlarm& aAlarm, const TDesC8& aData) const;
 131.189 -
 131.190 -///////////////////////////////////////////////////////////////////////////////////////
 131.191 -private:									// MEMBER DATA
 131.192 -///////////////////////////////////////////////////////////////////////////////////////
 131.193 -
 131.194 -	TPtr8									iPackage;
 131.195 -	TPtr8									iAlarmIdPointer;
 131.196 -	};
 131.197 -
 131.198 -///////////////////////////////////////////////////////////////////////////////////////
 131.199 -// ----> RASCliSession (inlines)
 131.200 -///////////////////////////////////////////////////////////////////////////////////////
 131.201 -inline TInt RASCliSession::AlarmDataDetatch(TAlarmId aAlarmId) const
 131.202 -/** @deprecated 8.0
 131.203 -
 131.204 -RASCliSession::AlarmDataDetach() should be used instead */
 131.205 -	{
 131.206 -	return AlarmDataDetach(aAlarmId);
 131.207 -	};
 131.208 -
 131.209 -#endif
   132.1 --- a/epoc32/include/asclisoundplay.h	Tue Mar 16 16:12:26 2010 +0000
   132.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   132.3 @@ -1,110 +0,0 @@
   132.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   132.5 -// All rights reserved.
   132.6 -// This component and the accompanying materials are made available
   132.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   132.8 -// which accompanies this distribution, and is available
   132.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  132.10 -//
  132.11 -// Initial Contributors:
  132.12 -// Nokia Corporation - initial contribution.
  132.13 -//
  132.14 -// Contributors:
  132.15 -//
  132.16 -// Description:
  132.17 -//
  132.18 -
  132.19 -#ifndef __ASCLISOUNDPLAY_H__
  132.20 -#define __ASCLISOUNDPLAY_H__
  132.21 -
  132.22 -// System includes
  132.23 -#include <e32base.h>
  132.24 -
  132.25 -// User includes
  132.26 -#include <asshddefs.h>
  132.27 -
  132.28 -// Type definitions
  132.29 -
  132.30 -// Constants
  132.31 -
  132.32 -// Enumerations
  132.33 -
  132.34 -
  132.35 -///////////////////////////////////////////////////////////////////////////////////////
  132.36 -// ----> TASCliSoundPlayDefinition (header)
  132.37 -///////////////////////////////////////////////////////////////////////////////////////
  132.38 -class TASCliSoundPlayDefinition
  132.39 -/** Defines when alarm sounds are to be played, and for how long. 
  132.40 -
  132.41 -Alarm sounds are played according to intervals that consist of a duration 
  132.42 -and an offset. 
  132.43 -
  132.44 -The duration is the number of seconds that the alarm sound plays. 
  132.45 -
  132.46 -The offset is the number of minutes after the alarm expires that the alarm 
  132.47 -sound plays. 
  132.48 -
  132.49 -The sound play definition is set using class RASCliSession. 
  132.50 -@publishedAll
  132.51 -@released
  132.52 -*/
  132.53 -	{
  132.54 -///////////////////////////////////////////////////////////////////////////////////////
  132.55 -public:										// CONSTRUCT
  132.56 -///////////////////////////////////////////////////////////////////////////////////////
  132.57 -
  132.58 -	inline TASCliSoundPlayDefinition();
  132.59 -
  132.60 -	inline TASCliSoundPlayDefinition(TTimeIntervalMinutes aOffset, TTimeIntervalSeconds aDuration);
  132.61 -
  132.62 -////////////////////////////////////////////////////////////////////////////////////////
  132.63 -public:										// ACCESS
  132.64 -///////////////////////////////////////////////////////////////////////////////////////
  132.65 -
  132.66 -	inline TTimeIntervalMinutes	Offset() const 
  132.67 -	/** Retrieves the offset.
  132.68 -	
  132.69 -	@return The offset in minutes. */
  132.70 -		{ return iOffset; }
  132.71 -
  132.72 -	inline TTimeIntervalSeconds	Duration() const 
  132.73 -	/** Retrieves the duration.
  132.74 -	
  132.75 -	@return The duration in seconds. */
  132.76 -		{ return iDuration; }
  132.77 -
  132.78 -//////////////////////////////////////////////////////////////////////////////////////
  132.79 -private:									// MEMBER DATA
  132.80 -///////////////////////////////////////////////////////////////////////////////////////
  132.81 -
  132.82 -	/*
  132.83 -	 * From the time an alarm is first displayed
  132.84 -	 */
  132.85 -	TTimeIntervalMinutes					iOffset;
  132.86 -
  132.87 -	/*
  132.88 -	 * How long the alarm playing lasts
  132.89 -	 */
  132.90 -	TTimeIntervalSeconds					iDuration;
  132.91 -	};
  132.92 -
  132.93 -
  132.94 -
  132.95 -
  132.96 -///////////////////////////////////////////////////////////////////////////////////////
  132.97 -// ----> TASCliSoundPlayDefinition (inlines)
  132.98 -///////////////////////////////////////////////////////////////////////////////////////
  132.99 -inline TASCliSoundPlayDefinition::TASCliSoundPlayDefinition()
 132.100 -:	iOffset(KDefaultSoundPlayOffsetInSeconds), iDuration(KDefaultSoundPlayDurationInSeconds)
 132.101 -/** Default constructor. 
 132.102 -
 132.103 -The default offset is zero, and the default duration is 30 seconds. */
 132.104 -	{}
 132.105 -inline TASCliSoundPlayDefinition::TASCliSoundPlayDefinition(TTimeIntervalMinutes aOffset, TTimeIntervalSeconds aDuration)
 132.106 -:	iOffset(aOffset), iDuration(aDuration)
 132.107 -/** Constructor that initializes the offset and duration to specified values.
 132.108 -	
 132.109 -@param aOffset Time in minutes for the offset. 
 132.110 -@param aDuration Time in seconds for the duration. */
 132.111 -	{}
 132.112 -
 132.113 -#endif
   133.1 --- a/epoc32/include/asshdalarm.h	Tue Mar 16 16:12:26 2010 +0000
   133.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   133.3 @@ -1,546 +0,0 @@
   133.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   133.5 -// All rights reserved.
   133.6 -// This component and the accompanying materials are made available
   133.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   133.8 -// which accompanies this distribution, and is available
   133.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  133.10 -//
  133.11 -// Initial Contributors:
  133.12 -// Nokia Corporation - initial contribution.
  133.13 -//
  133.14 -// Contributors:
  133.15 -//
  133.16 -// Description:
  133.17 -//
  133.18 -
  133.19 -#ifndef __ASSHDALARM_H__
  133.20 -#define __ASSHDALARM_H__
  133.21 -
  133.22 -
  133.23 -// System includes
  133.24 -#include <e32base.h>
  133.25 -#include <s32strm.h>
  133.26 -
  133.27 -// User includes
  133.28 -#include <asshddefs.h>
  133.29 -
  133.30 -///////////////////////////////////////////////////////////////////////////////////////
  133.31 -// ----> TASShdAlarm (header)
  133.32 -///////////////////////////////////////////////////////////////////////////////////////
  133.33 -
  133.34 -/** The Alarm publish and subscribe category
  133.35 -@publishedPartner
  133.36 -@released
  133.37 -*/
  133.38 -const TUid KAlarmServerPubSubCategory = { 0x101f5027 };
  133.39 -
  133.40 -/** Used for subcribing missed alarms or time zone changes
  133.41 -@publishedPartner
  133.42 -@released
  133.43 -*/
  133.44 -const TUint KMissingAlarmPubSubKey = 100;
  133.45 -
  133.46 -/** The publish and subscribe data for KMissingAlarmPubSubKey
  133.47 -@publishedPartner
  133.48 -@released
  133.49 -*/
  133.50 -struct TMissedAlarmPubSubData
  133.51 -	{
  133.52 -	/** The value indicating the changes. 
  133.53 -	1 - Time zone has been changes but there are no missed alarms
  133.54 -	2 - Some alarms have been missed after system time or time zone has changed.
  133.55 -	*/
  133.56 -	TUint8 iValue;
  133.57 -	
  133.58 -	/** The time that system time change took place, in universal (UTC) time */
  133.59 -	TTime iTimeOfChangeUtc;
  133.60 -	};
  133.61 -
  133.62 -/** Used for subscribing to data used when searching for instances in Calendar
  133.63 -@publishedPartner
  133.64 -@released
  133.65 -*/
  133.66 -const TUint KSkippedAlarmInstancesPubSubKey = 101;
  133.67 -
  133.68 -/** The publish and subscribe data for KMissingAlarmInstancesPubSubKey
  133.69 -@publishedPartner
  133.70 -@released
  133.71 -*/
  133.72 -struct TASShdAlarmedInstanceParams
  133.73 -	{
  133.74 -	/** The start of the time range in local time. */ 
  133.75 -	TTime iLocalStartTime;
  133.76 -
  133.77 -	/** The end of the time range in local time. */
  133.78 -	TTime iLocalEndTime;
  133.79 -	
  133.80 -	/** The alarm time types to include. */
  133.81 -	TASShdAlarmTimeType iTimeType;
  133.82 -	};
  133.83 -
  133.84 -
  133.85 -class TASShdAlarm
  133.86 -/** A client-side alarm object. 
  133.87 -
  133.88 -It contains all of the information needed to create an alarm in 
  133.89 -the Alarm Server. 
  133.90 -@publishedAll
  133.91 -@released
  133.92 -*/
  133.93 -	{
  133.94 -///////////////////////////////////////////////////////////////////////////////////////
  133.95 -public:										// CONSTRUCT
  133.96 -///////////////////////////////////////////////////////////////////////////////////////
  133.97 -
  133.98 -	IMPORT_C TASShdAlarm();
  133.99 -
 133.100 -///////////////////////////////////////////////////////////////////////////////////////
 133.101 -public:										// INTERNALIZE / EXTERNALIZE
 133.102 -///////////////////////////////////////////////////////////////////////////////////////
 133.103 -
 133.104 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 133.105 -
 133.106 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 133.107 -
 133.108 -///////////////////////////////////////////////////////////////////////////////////////
 133.109 -public:										// READ-ONLY ACCESS
 133.110 -///////////////////////////////////////////////////////////////////////////////////////
 133.111 -
 133.112 -	inline TAlarmStatus	Status() const				
 133.113 -	/** Returns the alarm status. 
 133.114 -	
 133.115 -	@return Alarm status. */
 133.116 -		{ return iStatus; }
 133.117 -
 133.118 -	inline TAlarmState State() const
 133.119 -	/** Returns the alarm state. 
 133.120 -	
 133.121 -	@return Alarm state. */
 133.122 -		{ return iState; }
 133.123 -
 133.124 -	inline TBool HasAssociatedData() const;
 133.125 -
 133.126 -	inline TBool HasOwningSession() const;
 133.127 -
 133.128 -	inline TBool HasBecomeOrphaned() const;
 133.129 -	
 133.130 -///////////////////////////////////////////////////////////////////////////////////////
 133.131 -public:										// READ-ONLY & MODIFIABLE
 133.132 -///////////////////////////////////////////////////////////////////////////////////////
 133.133 -
 133.134 -	IMPORT_C void Reset();
 133.135 -
 133.136 -	inline TAlarmId& Id()
 133.137 -	/** Returns a writable version of the alarm's unique identifier. 
 133.138 -	
 133.139 -	@return Reference to the unique identifier. */
 133.140 -		{ return iAlarmId; }
 133.141 -
 133.142 -	inline TAlarmId	Id() const
 133.143 -	/** Return the alarm's unique identifier. 
 133.144 -	
 133.145 -	@return The unique identifier. */
 133.146 -		{ return iAlarmId; }
 133.147 -		
 133.148 -//The Secure ID is only used in the secured platform
 133.149 -		
 133.150 -	// adds a SID to the alarms private field
 133.151 -	inline void SetSid(const TSecureId& aSecureID) 
 133.152 -		{iTASShdAlarmSID = aSecureID;}
 133.153 -
 133.154 -	//	returns the SID of the alarm's creator
 133.155 -	inline TSecureId GetSid() const 
 133.156 -		{return iTASShdAlarmSID;}
 133.157 -
 133.158 -	inline TTime& NextDueTime()
 133.159 -	/** Returns a writable version of the next time the alarm is scheduled to expire. 
 133.160 -	
 133.161 -	@return Next expiry time. */
 133.162 -		{ return iNextDueTime; }
 133.163 -
 133.164 -	inline const TTime&	NextDueTime() const
 133.165 -	/** Returns the next time that the alarm is scheduled to expire. 
 133.166 -	
 133.167 -	@return Next expiry time. */
 133.168 -		{ return iNextDueTime; }
 133.169 -
 133.170 -	inline TTime& OriginalExpiryTime()
 133.171 -	/** Returns a writable version of the alarm's original expiry time. 
 133.172 -	
 133.173 -	@return Original expiry time. */
 133.174 -		{ return iOriginalExpiryTime; }
 133.175 -
 133.176 -	inline const TTime& OriginalExpiryTime() const
 133.177 -	/** Returns the alarm's original expiry time. 
 133.178 -	
 133.179 -	The original expiry time is the same as the next due time, unless the alarm 
 133.180 -	has been snoozed. In that case, the original expiry time is the time when 
 133.181 -	the alarm first expired, and the next due time is when it is to re-awaken 
 133.182 -	after the snooze. 
 133.183 -	
 133.184 -	@return Original expiry time. */
 133.185 -		{ return iOriginalExpiryTime; }
 133.186 -
 133.187 -	inline TAlarmCategory& Category()
 133.188 -	/** Returns a writable version of the alarm's category. 
 133.189 -	
 133.190 -	Clients can use the category to tag each alarm with a specific code. This 
 133.191 -	allows clients to identify all related alarms, such as all alarms associated 
 133.192 -	with a particular application or application engine. 
 133.193 -	
 133.194 -	@return Alarm category. */
 133.195 -		{ return iCategory; }
 133.196 -
 133.197 -	inline TAlarmCategory Category() const 
 133.198 -	/** Return this alarm's category. 
 133.199 -	
 133.200 -	@return Alarm category. */
 133.201 -		{ return iCategory; }
 133.202 -
 133.203 -	inline TAlarmCharacteristicsFlags& Characteristics() 
 133.204 -	/** Returns a writable version of the alarm's characteristics. 
 133.205 -	
 133.206 -	@return Alarm characteristics bit flags. */
 133.207 -		{ return iCharacteristics; }
 133.208 -
 133.209 -	inline TAlarmCharacteristicsFlags Characteristics() const 
 133.210 -	/** Returns the alarm's characteristics 
 133.211 -	
 133.212 -	@return Alarm characteristics bit flags. */
 133.213 -		{ return iCharacteristics; }
 133.214 -
 133.215 -	inline TAlarmRepeatDefinition& RepeatDefinition() 
 133.216 -	/** Returns a writable version of the alarm's repeat definition. 
 133.217 -	
 133.218 -	The repeat definition controls the alarm's behaviour after it has expired. 
 133.219 -	For example, you can set the repeat definition so that the server automatically 
 133.220 -	queues the alarm to expire again in exactly 24 hours time.
 133.221 -	
 133.222 -	@return Alarm repeat definition. */
 133.223 -		{ return iRepeatDefinition; }
 133.224 -
 133.225 -	inline TAlarmRepeatDefinition RepeatDefinition() const 
 133.226 -	/** Returns the repeat definition for the alarm. 
 133.227 -	
 133.228 -	@return The alarm's repeat definition. */
 133.229 -		{ return iRepeatDefinition; }
 133.230 -
 133.231 -	inline TAlarmMessage& Message()	
 133.232 -	/** Returns a writable version of the alarm's message. 
 133.233 -	
 133.234 -	The message is usually displayed in the application UI 
 133.235 -	when the alarm expires.
 133.236 -	
 133.237 -	@return Reference to the alarm's associated message. */
 133.238 -		{ return iMessage; }
 133.239 -
 133.240 -	inline const TAlarmMessage& Message() const 
 133.241 -	/** Returns the alarm's message. 
 133.242 -	
 133.243 -	The message is usually displayed in the application UI when the alarm expires. 
 133.244 -	
 133.245 -	@return Reference to the alarm's associated message. */
 133.246 -		{ return iMessage; }
 133.247 -
 133.248 -	inline TAlarmSoundName& SoundName() 
 133.249 -	/** Return a writable version of the alarm sound's filename. 
 133.250 -	
 133.251 -	@return Reference to the alarm's sound filename. */
 133.252 -		{ return iSoundName; }
 133.253 -
 133.254 -	inline const TAlarmSoundName& SoundName() const	
 133.255 -	/** Returns the alarm's sound filename. 
 133.256 -	
 133.257 -	@return Sound filename. */
 133.258 -		{ return iSoundName; }
 133.259 -		
 133.260 -	inline TAlarmDayOrTimed DayOrTimed() const
 133.261 -	/** Returns the alarm session type. 
 133.262 -	
 133.263 -	@return Alarm session type. */
 133.264 -		{ return iDayOrTimed; }
 133.265 -
 133.266 -		
 133.267 -	inline TAlarmDayOrTimed&	DayOrTimed()	
 133.268 -	/** Returns a writable version of the alarm type, i.e. day, timed
 133.269 -	
 133.270 -	@return iDayOrTimed. */	
 133.271 -	{ return iDayOrTimed; }
 133.272 -
 133.273 -   
 133.274 -	IMPORT_C void SetUtcNextDueTime(TTime aUtcTime);
 133.275 -	
 133.276 -	IMPORT_C void SetDeQueueIfDueTimeInPast();
 133.277 -	
 133.278 -	IMPORT_C TInt SetAlarmDays(TUint8 aAlarmDays);
 133.279 -	IMPORT_C TUint8 AlarmDays() const;
 133.280 -	IMPORT_C void SetContinuous(TBool aContinuous);
 133.281 -	IMPORT_C TBool Continuous();
 133.282 -	
 133.283 -///////////////////////////////////////////////////////////////////////////////////////
 133.284 -public:										// CLIENT DATA ACCESS
 133.285 -///////////////////////////////////////////////////////////////////////////////////////
 133.286 -
 133.287 -	inline TBitFlags16& ClientFlags()
 133.288 -	/** Returns a writable version of the alarm's client flags. 
 133.289 -	
 133.290 -	The client flags may be used for any client-specific data - 
 133.291 -	the alarm server does not use them.
 133.292 -
 133.293 -	@return Reference to the alarm's bit flags. */
 133.294 -		{ return iClientFlags; }
 133.295 -
 133.296 -	inline TBitFlags16 ClientFlags() const 
 133.297 -	/** Returns this alarm's client flags. 
 133.298 -	
 133.299 -	@return Reference to the alarm's bit flags. */
 133.300 -		{ return iClientFlags; }
 133.301 -
 133.302 -	inline TInt	ClientData1() const 
 133.303 -	/** Returns the client data from slot 1 for this alarm. 
 133.304 -	
 133.305 -	@return The first client-specific integer. */
 133.306 -		{ return iClientData1; }
 133.307 -
 133.308 -	inline TInt& ClientData1() 
 133.309 -	/** Returns a writable version of the client data from slot 1 for this alarm. 
 133.310 -	
 133.311 -	@return Reference to the first client-specific integer. */
 133.312 -		{ return iClientData1; }
 133.313 -
 133.314 -	inline TInt ClientData2() const
 133.315 -	/** Returns the client data from slot 2 for this alarm. 
 133.316 -	
 133.317 -	@return The second client-specific integer. */
 133.318 -		{ return iClientData2; }
 133.319 -
 133.320 -	inline TInt& ClientData2() 
 133.321 -	/** Returns the client data from slot 2 for this alarm. 
 133.322 -	
 133.323 -	@return The second client-specific integer. */
 133.324 -		{ return iClientData2; }
 133.325 -		
 133.326 -	inline TBool IsFloating() const
 133.327 -	/** Tests whether the alarm is floating. 
 133.328 -
 133.329 -	Floating alarms expire at a given wall-clock time regardless of the current locale and
 133.330 -	whether any daylight saving time rules are in force.
 133.331 -		
 133.332 -	@return True if the alarm is floating.
 133.333 -	*/
 133.334 -	{ return iCharacteristics.IsClear(EAlarmCharacteristicsIsFixed); }
 133.335 -	
 133.336 -
 133.337 -
 133.338 -
 133.339 -
 133.340 -///////////////////////////////////////////////////////////////////////////////////////
 133.341 -protected:									// INTERNAL FLAGS
 133.342 -///////////////////////////////////////////////////////////////////////////////////////
 133.343 -
 133.344 -	/*
 133.345 -	 * @internalAll
 133.346 -	 */
 133.347 -	enum TASShdAlarmFlags
 133.348 -		{
 133.349 -
 133.350 -		/*
 133.351 -		 * @internalAll
 133.352 -		 */
 133.353 -		EASShdAlarmFlagsHasAssociatedData	= 0,
 133.354 -
 133.355 -		/*
 133.356 -		 * @internalAll
 133.357 -		 */
 133.358 -		EASShdAlarmFlagsHasOwningSession	= 1,
 133.359 -
 133.360 -		/*
 133.361 -		 * @internalAll
 133.362 -		 */
 133.363 -		EASShdAlarmFlagsHasBecomeOrphaned	= 2,
 133.364 -		
 133.365 -		/*
 133.366 -		 * @internalAll Set if alarm is disabled manually so that can not be enabled when
 133.367 -		 * locale changes.
 133.368 -		 */
 133.369 -		EASShdAlarmFlagsPermanentDisabled	= 4
 133.370 -
 133.371 -		};
 133.372 -
 133.373 -private:
 133.374 -	/*
 133.375 -	 * @internalComponent
 133.376 -	 */
 133.377 -	enum TASShdAlarmFlags2
 133.378 -		{
 133.379 -		EASShdAlarmFlag2Wakeup				= 0,
 133.380 -		};
 133.381 -
 133.382 -	enum TASShdAlarmFlags2AlarmRepeatExtensions
 133.383 -		{
 133.384 -		EASShdAlarmFlag2AlarmDayMonday		= 1,
 133.385 -		EASShdAlarmFlag2AlarmDayTuesday		= 2,
 133.386 -		EASShdAlarmFlag2AlarmDayWednesday	= 3,
 133.387 -		EASShdAlarmFlag2AlarmDayThursday	= 4,
 133.388 -		EASShdAlarmFlag2AlarmDayFriday		= 5,
 133.389 -		EASShdAlarmFlag2AlarmDaySaturday	= 6,
 133.390 -		EASShdAlarmFlag2AlarmDaySunday		= 7,
 133.391 -		EASShdAlarmFlag2Continuous			= 8
 133.392 -		};
 133.393 -
 133.394 -		
 133.395 -///////////////////////////////////////////////////////////////////////////////////////
 133.396 -protected:									// MEMBER DATA
 133.397 -///////////////////////////////////////////////////////////////////////////////////////
 133.398 -
 133.399 -	/*
 133.400 -	 * Various flags - used internally by the alarm object
 133.401 -	 */
 133.402 -	TBitFlags8 iFlags;
 133.403 -
 133.404 -	/*
 133.405 -	 * This represents the desired behaviour for a given alarm.
 133.406 -	 * The Alarm Server uses this information to control the
 133.407 -	 * behaviour of the alarm.
 133.408 -	 *
 133.409 -	 * @see TAlarmCharacteristics
 133.410 -	 */
 133.411 -	TAlarmCharacteristicsFlags iCharacteristics;
 133.412 -
 133.413 -	/*
 133.414 -	 * The unique identifier assoicated with each alarm maintained
 133.415 -	 * by the alarm world server.
 133.416 -	 */
 133.417 -	TAlarmId iAlarmId;
 133.418 -	
 133.419 -	/*
 133.420 -	 * The status of this alarm (e.g. enabled, disabled)
 133.421 -	 */
 133.422 -	TAlarmStatus iStatus;
 133.423 -
 133.424 -	/*
 133.425 -	 * The state of this alarm (e.g. queued, notifying, notified, snoozed etc)
 133.426 -	 */
 133.427 -	TAlarmState	iState;
 133.428 -
 133.429 -	/*
 133.430 -	 * The type of this alarm (e.g. day, timed)
 133.431 -	 */
 133.432 -	TAlarmDayOrTimed iDayOrTimed;
 133.433 -
 133.434 -	/*
 133.435 -	 * Controls how the alarm repeats after it has expired. Note that
 133.436 -	 * session alarms are not allowed to repeat (they must be "once
 133.437 -	 * only").
 133.438 -	 */
 133.439 -	TAlarmRepeatDefinition iRepeatDefinition;
 133.440 -
 133.441 -	/*
 133.442 -	 * This UID is supplied by the client and is used to indicate
 133.443 -	 * the category that this alarm is part of. The Alarm Server
 133.444 -	 * is category-agnostic, that is, this information is for
 133.445 -	 * the client's use only
 133.446 -	 */
 133.447 -	TAlarmCategory iCategory;
 133.448 -
 133.449 -	/*
 133.450 -	 * The date and time at which this alarm is next due. For alarms
 133.451 -	 * that haven't been snoozed, then this is the original due time.
 133.452 -	 *
 133.453 -	 * For alarms that have been snoozed, this is the time at which
 133.454 -	 * the alarm will reawaken.
 133.455 -	 */
 133.456 -	TTime iNextDueTime;
 133.457 -
 133.458 -	/*
 133.459 -	 * This attribute is only used in the instance whereby an alarm
 133.460 -	 * is snoozed. It represents the time at which the alarm first 
 133.461 -	 * expired.
 133.462 -	 */
 133.463 -	TTime iOriginalExpiryTime;
 133.464 -
 133.465 -	/*
 133.466 -	 * The message associated with this alarm, typically used
 133.467 -	 * in an application UI to inform the user as to the reason
 133.468 -	 * for the alarm.
 133.469 -	 */
 133.470 -	TAlarmMessage iMessage;
 133.471 -
 133.472 -	/*
 133.473 -	 * A descriptor which holds the name of the sound file which
 133.474 -	 * should be played when the alarm expires.
 133.475 -	 */
 133.476 -	TAlarmSoundName iSoundName;
 133.477 -
 133.478 -///////////////////////////////////////////////////////////////////////////////////////
 133.479 -protected:									// CLIENT SPECIFIC DATA
 133.480 -///////////////////////////////////////////////////////////////////////////////////////
 133.481 -
 133.482 -	/*
 133.483 -	 * Flags for use by any particular client. These will
 133.484 -	 * only be relevant to a client who can interpret them.
 133.485 -	 */
 133.486 -	TBitFlags16 iClientFlags;
 133.487 -
 133.488 -	/*
 133.489 -	 * For arbitrary client data 1
 133.490 -	 */
 133.491 -	TInt iClientData1;
 133.492 -
 133.493 -	/*
 133.494 -	 * For arbitrary client data 2
 133.495 -	 */
 133.496 -	TInt iClientData2;
 133.497 -
 133.498 -///////////////////////////////////////////////////////////////////////////////////////
 133.499 -private:									// BC PROOFING
 133.500 -///////////////////////////////////////////////////////////////////////////////////////
 133.501 -	TSecureId iTASShdAlarmSID;
 133.502 -	/*
 133.503 -	 * Various flags - used internally by the alarm object
 133.504 -	 */
 133.505 -	TBitFlags16 iFlags2;
 133.506 -	TUint16 iTASShdAlarm_2;
 133.507 -	TAny* iTASShdAlarm_3;
 133.508 -	};
 133.509 -
 133.510 -
 133.511 -///////////////////////////////////////////////////////////////////////////////////////
 133.512 -// ----> TASShdAlarm (inline)
 133.513 -///////////////////////////////////////////////////////////////////////////////////////
 133.514 -
 133.515 -
 133.516 -/** Tests whether the alarm has any associated data. 
 133.517 -	
 133.518 -@return True if the alarm has associated data. */
 133.519 -inline TBool TASShdAlarm::HasAssociatedData() const
 133.520 -
 133.521 -	{
 133.522 -	return iFlags.IsSet(EASShdAlarmFlagsHasAssociatedData);
 133.523 -	}
 133.524 -
 133.525 -
 133.526 -/** Tests whether the alarm has an active owning session.
 133.527 -
 133.528 -@return True if the alarm has an active owning session. */
 133.529 -inline TBool TASShdAlarm::HasOwningSession() const
 133.530 -
 133.531 -	{
 133.532 -	return iFlags.IsSet(EASShdAlarmFlagsHasOwningSession);
 133.533 -	}
 133.534 -
 133.535 -inline TBool TASShdAlarm::HasBecomeOrphaned() const
 133.536 -/** Tests whether the alarm is orphaned. 
 133.537 -
 133.538 -An alarm is ophaned if it used to have an owning session, but no longer does. 
 133.539 -If an alarm is owned by a session, it is removed from the queue when the session 
 133.540 -disconnects. However, orphaned alarms stay in the queue.
 133.541 -	
 133.542 -@return True if the alarm has becomed orphaned. */
 133.543 -	{
 133.544 -	return iFlags.IsSet(EASShdAlarmFlagsHasBecomeOrphaned);
 133.545 -	}
 133.546 -
 133.547 -
 133.548 -
 133.549 -#endif // #ifndef __ASSHDALARM_H__
   134.1 --- a/epoc32/include/asshdbitflags.h	Tue Mar 16 16:12:26 2010 +0000
   134.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   134.3 @@ -1,16 +0,0 @@
   134.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   134.5 -// All rights reserved.
   134.6 -// This component and the accompanying materials are made available
   134.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   134.8 -// which accompanies this distribution, and is available
   134.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  134.10 -//
  134.11 -// Initial Contributors:
  134.12 -// Nokia Corporation - initial contribution.
  134.13 -//
  134.14 -// Contributors:
  134.15 -//
  134.16 -// Description:
  134.17 -//
  134.18 -
  134.19 -#include <babitflags.h>
   135.1 --- a/epoc32/include/asshddefs.h	Tue Mar 16 16:12:26 2010 +0000
   135.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   135.3 @@ -1,414 +0,0 @@
   135.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   135.5 -// All rights reserved.
   135.6 -// This component and the accompanying materials are made available
   135.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   135.8 -// which accompanies this distribution, and is available
   135.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  135.10 -//
  135.11 -// Initial Contributors:
  135.12 -// Nokia Corporation - initial contribution.
  135.13 -//
  135.14 -// Contributors:
  135.15 -//
  135.16 -// Description:
  135.17 -//
  135.18 -
  135.19 -#ifndef __ASSHDDEFS_H__
  135.20 -#define __ASSHDDEFS_H__
  135.21 -
  135.22 -/** @file
  135.23 -@publishedAll
  135.24 -@released */
  135.25 -
  135.26 -// System includes
  135.27 -#include <e32std.h>
  135.28 -#include <babitflags.h>
  135.29 -
  135.30 -// Constants
  135.31 -
  135.32 -/** Maximum length of an alarm message. The message is usually displayed by the 
  135.33 -alarm UI. */
  135.34 -const TInt KMaxAlarmMessageLength = 0x80;
  135.35 -/** Maximum length of the filename of the sound played when an alarm expires. */
  135.36 -const TInt KMaxAlarmSoundNameLength = KMaxFileName;
  135.37 -
  135.38 -// Type definitions
  135.39 -/** A unique identifier allocated to each new alarm by the alarm server, so that 
  135.40 -the client can identify them. By default, KNullAlarmId. */
  135.41 -typedef TInt TAlarmId;
  135.42 -/** A unique identifier that can optionally be used by clients to group 
  135.43 -alarms into categories, for instance alarms associated with a particular application 
  135.44 -or application engine. The alarm server ignores the category. It is relevant 
  135.45 -to the client alone. */
  135.46 -typedef TUid TAlarmCategory;
  135.47 -//
  135.48 -/** Flags that define an alarm's characteristics.
  135.49 -
  135.50 -@see TAlarmCharacteristics */
  135.51 -typedef TBitFlags8 TAlarmCharacteristicsFlags;
  135.52 -//
  135.53 -
  135.54 -/** A type to identify what kind of alarms should be deleted when using the API
  135.55 -RASCliSession::AlarmDeleteByCategory()
  135.56 -@see TTDeleteTypeEnum */
  135.57 -typedef TInt TDeleteType;
  135.58 - 
  135.59 -/** Stores the text message associated with an alarm. */
  135.60 -typedef TBuf<KMaxAlarmMessageLength> TAlarmMessage;
  135.61 -/** Stores the name of a sound file which is played when an alarm activates. */
  135.62 -typedef TBuf<KMaxAlarmSoundNameLength> TAlarmSoundName;
  135.63 -//
  135.64 -/** Defines a null alarm identifier. */
  135.65 -const TAlarmId KNullAlarmId	= 0;
  135.66 -//
  135.67 -/** Defines the length in seconds of an alarm sound offset. */
  135.68 -const TInt KDefaultSoundPlayOffsetInSeconds	= 0;
  135.69 -/** Defines the length in seconds of an alarm sound duration. */
  135.70 -const TInt KDefaultSoundPlayDurationInSeconds = 30;
  135.71 -
  135.72 -// Constants
  135.73 -/** A category that can be assigned to identify clock alarms to the client. The 
  135.74 -server does not distinguish between alarm types. */
  135.75 -const TAlarmCategory KASCliCategoryClock		= { 0x101F5030 };
  135.76 -
  135.77 -/** Defines whether an alarm is enabled or disabled: 
  135.78 -
  135.79 -An enabled alarm activates at a specified time. 
  135.80 -
  135.81 -A disabled alarm remains in the alarm server queue but is not active. 
  135.82 -
  135.83 -You can get or set an alarm's status using the RASCliSession class. */
  135.84 -enum TAlarmStatus
  135.85 -	{
  135.86 -	/** The alarm is currently enabled. */
  135.87 -	EAlarmStatusEnabled = 0,
  135.88 -
  135.89 -	/** The alarm is currently disabled, and will not expire. */
  135.90 -	EAlarmStatusDisabled,
  135.91 -	};
  135.92 -
  135.93 -/** Represents an alarm's state. Alarms can have only one state. */
  135.94 -enum TAlarmState
  135.95 -	{
  135.96 -	/** The alarm state is not currently known by the alarm server. */
  135.97 -	EAlarmStateInPreparation = -1,
  135.98 -
  135.99 -	/** The alarm is waiting for its expiry time to be reached. */
 135.100 -	EAlarmStateQueued = 0,
 135.101 -
 135.102 -	/** The alarm is snoozed. When the snooze period is over, the alarm expires again. */
 135.103 -	EAlarmStateSnoozed,
 135.104 -
 135.105 -	/** The alarm is waiting to be notified. 
 135.106 -	
 135.107 -	This state occurs when an alarm expires while another is being notified. When 
 135.108 -	this happens, the alarm being notified changes state to EAlarmStateWaitingToNotify. 
 135.109 -	This means that if it is set to be the next alarm to be notified, notification 
 135.110 -	will happen after the newly expired alarm has been notified and dismissed. */
 135.111 -	EAlarmStateWaitingToNotify,
 135.112 -
 135.113 -	/** The alarm is currently notifying. */
 135.114 -	EAlarmStateNotifying,
 135.115 -
 135.116 -	/** The alarm has already notified and has been dismissed. Any alarm which remains 
 135.117 -	in this state is dead. */
 135.118 -	EAlarmStateNotified
 135.119 -	};
 135.120 -
 135.121 -/** Defines an alarm session type as timed or untimed. This property is ignored by 
 135.122 -the alarm server, and is for use by the client only. */
 135.123 -enum TAlarmDayOrTimed
 135.124 -	{
 135.125 -	/** Timed alarm type (default). This alarm belongs to a timed event. This is an event 
 135.126 -	with a defined start and finish time. The alarm notification 
 135.127 -	time is specified as an offset from the event's start time, so that when the 
 135.128 -	event time changes, so does the alarm time. */
 135.129 -	EASShdAlarmTypeTimed = 0,
 135.130 -
 135.131 -	/** Day alarm type. This alarm belongs to untimed events; these do not have 
 135.132 -	a defined start and finish time, but have an activation time. */
 135.133 -	EASShdAlarmTypeDay
 135.134 -	};
 135.135 -
 135.136 -/** Defines the sound state of the global alarm server . */
 135.137 -enum TAlarmGlobalSoundState
 135.138 -	{
 135.139 -	/** When an alarm expires, the alarm sound is played. */
 135.140 -	EAlarmGlobalSoundStateOn = 0,
 135.141 -
 135.142 -	/** When an alarm expires, no sound plays. */
 135.143 -	EAlarmGlobalSoundStateOff
 135.144 -	};
 135.145 -
 135.146 -/** Defines how an alarm is to be repeated. */
 135.147 -enum TAlarmRepeatDefinition
 135.148 -	{
 135.149 -	/** The alarm expires only once, and is then deleted from the alarm server. By 
 135.150 -	default, all alarms behave this way. 
 135.151 -	
 135.152 -	Standard repeat-once alarms are date relative, that is, they occur on a fixed 
 135.153 -	date and point in time. 
 135.154 -	
 135.155 -	If the user changes the system date or time so that the new time is in the 
 135.156 -	future, and the new time is after the previously calculated expiry time:
 135.157 -	
 135.158 -	By less than 12 hours, the alarm expires immediately. 
 135.159 -	
 135.160 -	By more than 12 horus, the alarm is silently discarded. 
 135.161 -	
 135.162 -	If the user changes the system date or time so that the new time is before 
 135.163 -	the next calculated expiry time, the alarm type continues to be a
 135.164 -	"Repeat once" alarm*/
 135.165 -	EAlarmRepeatDefintionRepeatOnce	= 0,
 135.166 -
 135.167 -	/** When initially scheduling the alarm, the date is always within the 
 135.168 -	next 24 hours. For example:
 135.169 -	
 135.170 -	The current time is 15:00, and the alarm time specified is 14:00. The 
 135.171 -	alarm expires tomorrow at 14:00. 
 135.172 -	
 135.173 -	The current time is 15:00, and the alarm time specified is 16:00. The 
 135.174 -	alarm expires today at 16:00. 
 135.175 -	
 135.176 -	If the alarm is missed, i.e. because the alarm server is inactive, then 
 135.177 -	the alarm changes its type from "Repeat in the next 24 Hours" to "Repeat once".
 135.178 -	
 135.179 -	If the user changes the system date or time so that the new time is in the 
 135.180 -	future, and the new time is after the previously calculated expiry time:
 135.181 -	
 135.182 -	By less than 12 hours, the alarm expires immediately. 
 135.183 -	
 135.184 -	By more than 12 horus, the alarm is silently discarded. 
 135.185 -	
 135.186 -	If the user changes the system date or time so that the new time is 
 135.187 -	before the next calculated expiry time:
 135.188 -
 135.189 -	By less than 12 hours, no change in alarm type, and the alarm 
 135.190 -	remains queued.
 135.191 -
 135.192 -	By greater than 12 hours, the alarm changes its type from 
 135.193 -	"Repeat in the next 24 Hours" to "Repeat once".	Subsequent changes in system 
 135.194 -	time result in the behaviour described by the EAlarmRepeatDefintionRepeatOnce 
 135.195 -	characteristic. */
 135.196 -	EAlarmRepeatDefintionRepeatNext24Hours,
 135.197 -
 135.198 -	/** The alarm repeats every day at the same time. If the user changes the system 
 135.199 -	date or time, this alarm behaves in the same way as a "Repeat once" alarm, 
 135.200 -	except that the alarm is not deleted, but rescheduled for the next available 
 135.201 -	time. 
 135.202 -	
 135.203 -	If the user changes the system date or time to a point in the past, there 
 135.204 -	are no phantom alarm expiries. */
 135.205 -	EAlarmRepeatDefintionRepeatDaily,
 135.206 -
 135.207 -	/** The alarm repeats every work day at the same time. If the user changes the 
 135.208 -	system date or time, this alarm behaves in the same way as a "Repeat once" 
 135.209 -	alarm, except that the alarm is not deleted, but rescheduled for the next 
 135.210 -	available time. 
 135.211 -	
 135.212 -	If the user changes the system date or time to a point in the past, there 
 135.213 -	are no phantom alarm expiries. */
 135.214 -	EAlarmRepeatDefintionRepeatWorkday,
 135.215 -
 135.216 -	/** The alarm repeats every week, on the same day at the same time. If the user 
 135.217 -	changes the system date or time, this alarm behaves in the same way as a "Repeat 
 135.218 -	once" alarm, except that the alarm is not deleted, but rescheduled for the 
 135.219 -	next available time.
 135.220 -	
 135.221 -	If the user changes the system date or time to a point in the past, there 
 135.222 -	are no phantom alarm expiries. */
 135.223 -	EAlarmRepeatDefintionRepeatWeekly,
 135.224 -
 135.225 -	/** The alarm repeats every specified day at the same time. If the user
 135.226 -	changes the system date or time, this alarm behaves in the same way as a
 135.227 -	"repeat once" alarm, except that the alarm is not deleted, but rescheduled
 135.228 -	for the next available time.
 135.229 -	 
 135.230 -    If the user changes the system date or time to a point in the past, there
 135.231 -    are no phantom alarm expiries.*/ 
 135.232 -	EAlarmRepeatDefinitionRepeatDailyOnGivenDays
 135.233 -	};
 135.234 -
 135.235 -/** Defines various alarm characteristics. */
 135.236 -enum TAlarmCharacteristics
 135.237 -	{
 135.238 -	/** Sets an alarm to be session-only. This alarm only exists as long as a session 
 135.239 -	is maintained with the alarm server. Session alarms are removed from the alarm 
 135.240 -	queue when the originating session disconnects from the server. By default, 
 135.241 -	all alarms are persistent and remain so, even after the initiating session 
 135.242 -	has disconnected. */
 135.243 -	EAlarmCharacteristicsSessionSpecific = 0,
 135.244 -
 135.245 -	/** Do not display a screen. By default, all alarms result in a suitable screen 
 135.246 -	being displayed, depending on the device. Use this flag to disable this default 
 135.247 -	behaviour. */
 135.248 -	EAlarmCharacteristicsDoNotNotifyAlarmAlertServer = 1,
 135.249 -
 135.250 -	/** Sets an alarm to be floating - floating alarms expire at the current local time,
 135.251 -	regardless of the current locale or DST rules.*/
 135.252 -	EAlarmCharacteristicsIsFixed = 2,
 135.253 -	
 135.254 -	/** Do not notify if its due time is in the past.*/
 135.255 -	EAlarmCharacteristicsDeQueueIfDueTimeInPast = 3,
 135.256 -	//
 135.257 -	EAlarmCharacteristicsLast
 135.258 -	};
 135.259 -
 135.260 -/** This enumeration defines the events that can be reported by the alarm server. 
 135.261 -
 135.262 -These events are channelled to the client using the RASCliSession::NotifyChange() 
 135.263 -method. 
 135.264 -
 135.265 -@see TAlarmState */
 135.266 -enum TAlarmChangeEvent
 135.267 -	{
 135.268 -	/** An alarm has changed state. 
 135.269 -	
 135.270 -	@see TAlarmState */
 135.271 -	EAlarmChangeEventState = 1,
 135.272 -
 135.273 -	/** An alarm has changed status. 
 135.274 -	
 135.275 -	@see TAlarmStatus */
 135.276 -	EAlarmChangeEventStatus = 2,
 135.277 -
 135.278 -	/** An alarm has changed characteristics. 
 135.279 -	
 135.280 -	@see TAlarmCharacteristics */
 135.281 -	EAlarmChangeEventCharacteristics = 3,
 135.282 -
 135.283 -	/** An alarm has been deleted from the queue of alarms. */
 135.284 -	EAlarmChangeEventAlarmDeletion = 4,
 135.285 -
 135.286 -	/** An alarm has been added to the queue of alarms. */
 135.287 -	EAlarmChangeEventAlarmAddition = 5,
 135.288 -
 135.289 -	/** An alarm has expired. */
 135.290 -	EAlarmChangeEventTimerExpired = 6,
 135.291 -
 135.292 -	/** The sound for an alarm has just started playing. */
 135.293 -	EAlarmChangeEventSoundPlaying = 7,
 135.294 -
 135.295 -	/** The sound for an alarm has just stopped playing. */
 135.296 -	EAlarmChangeEventSoundStopped = 8,
 135.297 -
 135.298 -	/** The sound intervals associated with sound timing have changed. */
 135.299 -	EAlarmChangeEventPlayIntervalsChanged = 9,
 135.300 -
 135.301 -	/** The global sound state (on/off) has changed. */
 135.302 -	EAlarmChangeEventGlobalSoundStateChanged = 10,
 135.303 -
 135.304 -	/** The next alarm at the head of the alarm queue has changed. */
 135.305 -	EAlarmChangeEventHeadQueueItemChanged = 11,
 135.306 -
 135.307 -	/** The system date or time has changed, or the days defined as workdays have changed. */
 135.308 -	EAlarmChangeEventSystemDateTimeChanged = 12,
 135.309 -
 135.310 -	/** The alarm alert server has been instructed to show the 'alarm expired' display. */
 135.311 -	EAlarmChangeEventAlarmUIVisible = 13,
 135.312 -
 135.313 -	/** The alarm alert server has been instructed to hide the 'alarm expired' display. */
 135.314 -	EAlarmChangeEventAlarmUIInvisible = 14,
 135.315 -
 135.316 -	/** Alarm sounds have been temporarily silenced, the current alarm has been paused 
 135.317 -	or re-enabled. */
 135.318 -	EAlarmChangeEventSoundSilence = 15,
 135.319 -
 135.320 -	/** The data associated with an alarm has changed. */
 135.321 -	EAlarmChangeEventAlarmData = 16,
 135.322 -
 135.323 -	/** A restore from backup of the alarm server has started. Alarms cannot be added/deleted 
 135.324 -	until this has finished.  */
 135.325 -	EAlarmChangeEventRestoreStarted = 17,
 135.326 -
 135.327 -	/** A restore from backup of the alarm server has failed. Alarms can be added/deleted again. */
 135.328 -	EAlarmChangeEventRestoreFailed = 18,
 135.329 -
 135.330 -	/** A restore from backup of the alarm server has completed. The alarm queue has changed. */
 135.331 -	EAlarmChangeEventRestoreCompleted = 19,
 135.332 -
 135.333 -	/** Last change event (anchor). This is always at the end of the list. */
 135.334 -	EAlarmChangeEventLast,
 135.335 -	
 135.336 -	/** An undefined alarm event has occurred. */
 135.337 -	EAlarmChangeEventUndefined = 0
 135.338 -	};
 135.339 -
 135.340 -/** Identifies server-initiated panics relating to the client session. */
 135.341 -enum TAlarmServerInitiatedClientPanic
 135.342 -	{
 135.343 -	/** This panic occurs when the client requests a copy of any data attached to an 
 135.344 -	alarm, but does not supply enough buffer space to contain the data. */
 135.345 -	EAlarmServerInitiatedClientPanicInsufficientRoomForAlarmData = 0,
 135.346 -
 135.347 -	/** This panic usually occurs when a client method tries to write to a descriptor 
 135.348 -	(sometimes asynchronously), and the client-supplied descriptor is not valid. */
 135.349 -	EAlarmServerInitiatedClientPanicBadDescriptor = 1,
 135.350 -
 135.351 -	/** This panic occurs when a client already has an outstanding notification request, 
 135.352 -	but attempts to request another. */
 135.353 -	EAlarmServerInitiatedClientPanicChangeNotificationAlreadyOutstanding = 2,
 135.354 -
 135.355 -	/** This panic occurs when a client tries to perform an invalid operation. */
 135.356 -	EAlarmServerInitiatedClientPanicInvalidOperation = 3,
 135.357 -
 135.358 -	/** This panic occurs when a request to add an alarm contains a null alarm identiifer. 
 135.359 -	In the case of alarms with notifications, the client should pre-allocate the 
 135.360 -	alarm identifier before requesting the notification. */
 135.361 -	EAlarmServerInitiatedClientPanicBadPreAllocatedAlarmId = 4
 135.362 -
 135.363 -	};
 135.364 -
 135.365 -/** Identifies what kind of alarms the client wants to delete. */
 135.366 -enum TDeleteTypeEnum
 135.367 -	{
 135.368 -	/** All type of alarms. */
 135.369 -	EAllAlarms = 0,
 135.370 -	/** Alarms future of the current time */
 135.371 -	EFuture = 1,
 135.372 -	/** Alarms in the past of the current time but notifying, or waiting to notify, or snoozed by, the user  */
 135.373 -	EActive = 2,
 135.374 -	/** alarms that has been dismissed by the user  */
 135.375 -	EExpired = 4
 135.376 -	};
 135.377 -
 135.378 -/**
 135.379 -This enumeration indicates which days of the week an alarm with a repeat
 135.380 -definition of EAlarmRepeatDefinitionRepeatDailyOnGivenDays activates on.  Days
 135.381 -are combined using the bitwise OR operator.
 135.382 -
 135.383 -@prototype
 135.384 -*/
 135.385 -enum TAlarmDays
 135.386 -    {
 135.387 -    /** Alarm is active on Monday. */
 135.388 -    EAlarmDayMonday    = 0x01,
 135.389 -    /** Alarm is active on Tuesday. */
 135.390 -    EAlarmDayTuesday   = 0x02,
 135.391 -    /** Alarm is active on Wednesday. */
 135.392 -    EAlarmDayWednesday = 0x04,
 135.393 -    /** Alarm is active on Thursday. */
 135.394 -    EAlarmDayThursday  = 0x08,
 135.395 -    /** Alarm is active on Friday. */
 135.396 -    EAlarmDayFriday    = 0x10,
 135.397 -    /** Alarm is active on Saturday. */
 135.398 -    EAlarmDaySaturday  = 0x20,
 135.399 -    /** Alarm is active on Sunday. */
 135.400 -    EAlarmDaySunday    = 0x40
 135.401 -    };
 135.402 -
 135.403 -/** Identifies the type of alarm which was missed.  A UTC offset change will only
 135.404 -affect floating alarms whereas a system time change may affect either floating
 135.405 -or fixed alarms.
 135.406 -@see TASShdAlarmedInstanceParams
 135.407 -@see CASSrvAlarmQueue::MEnvChangeHandleEvent
 135.408 -*/
 135.409 -enum TASShdAlarmTimeType
 135.410 -	{
 135.411 -	/** Floating time alarm. */
 135.412 -	EFloating,
 135.413 -	/** Floating or fixed time alarm. */
 135.414 -	EFloatingOrFixed
 135.415 -	};
 135.416 -
 135.417 -#endif
   136.1 --- a/epoc32/include/attrlut.h	Tue Mar 16 16:12:26 2010 +0000
   136.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   136.3 @@ -1,79 +0,0 @@
   136.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   136.5 -// All rights reserved.
   136.6 -// This component and the accompanying materials are made available
   136.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   136.8 -// which accompanies this distribution, and is available
   136.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  136.10 -//
  136.11 -// Initial Contributors:
  136.12 -// Nokia Corporation - initial contribution.
  136.13 -//
  136.14 -// Contributors:
  136.15 -//
  136.16 -// Description:
  136.17 -// Attribute Look-Up-Table header
  136.18 -// The Attribute Lookup Table maintains a global set of unique IDs to be defined for document
  136.19 -// node attributes and language tags. It does this by generating a unique ID for any descriptor
  136.20 -// passed to it. This descriptor is in fact a pointer to a copy of the string. Once a string
  136.21 -// has been seen once, any further references to it will map back to the same ID (pointer)
  136.22 -// value.
  136.23 -// 
  136.24 -//
  136.25 -
  136.26 -#if !defined(__CWAPENGINE_LUT_H__)
  136.27 -#define __CWAPENGINE_LUT_H__
  136.28 -
  136.29 -#include <e32base.h>
  136.30 -
  136.31 -class RTest;
  136.32 -class CAttributeLookupTableNode;
  136.33 -
  136.34 -//##ModelId=3B666BC70189
  136.35 -
  136.36 -class CAttributeLookupTable : public CBase
  136.37 -/** Provides an attribute lookup table, which maintains a global set of unique IDs to be defined 
  136.38 -	for document node attributes and language tags. 
  136.39 -
  136.40 -	It does this by generating a unique (in the scope of the lookup table object) ID for any string 
  136.41 -	passed to it. Once a string has been seen once, any further references to it will map back to the 
  136.42 -	same ID value. 
  136.43 -
  136.44 -	@publishedAll
  136.45 -	@released
  136.46 -*/
  136.47 -{
  136.48 -public:
  136.49 -	//##ModelId=3B666BC701E3
  136.50 -	IMPORT_C ~CAttributeLookupTable();
  136.51 -	//##ModelId=3B666BC701DC
  136.52 -	IMPORT_C static CAttributeLookupTable* CAttributeLookupTable::NewL();
  136.53 -	//##ModelId=3B666BC701DA
  136.54 -	IMPORT_C const HBufC* Des2IDL( const TDesC& ); // map descriptor to ID
  136.55 -	//##ModelId=3B666BC701D3
  136.56 -	IMPORT_C const HBufC* KeyExists( const TDesC& ); // check to see if the given descriptor already exists
  136.57 -	//##ModelId=3B666BC701D2
  136.58 -	IMPORT_C void Reset(); // clear the table
  136.59 -
  136.60 -	// debug hook
  136.61 -	typedef enum{
  136.62 -		EPrint,
  136.63 -		EPrintWholeTable
  136.64 -	} TDebugSelectorType;
  136.65 -	//##ModelId=3B666BC701C6
  136.66 -	IMPORT_C void Debug( TDebugSelectorType aSelector, TAny* aParam1, TAny* aParam2 );
  136.67 -
  136.68 -private:
  136.69 -	//##ModelId=3B666BC701C5
  136.70 -	CAttributeLookupTable();
  136.71 -	//##ModelId=3B666BC701BF
  136.72 -	void ConstructL();
  136.73 -	//##ModelId=3B666BC701BD
  136.74 -	CAttributeLookupTableNode* FindDes( const TDesC& );
  136.75 -	//##ModelId=3B666BC701BB
  136.76 -	TUint Hash( const TDesC& );
  136.77 -	//##ModelId=3B666BC701A9
  136.78 -	CArrayPtrFlat<CArrayPtrSeg<CAttributeLookupTableNode> >* iList;
  136.79 -};
  136.80 -
  136.81 -
  136.82 -#endif // __CWAPENGINE_LUT_H__
   137.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   137.2 +++ b/epoc32/include/bafl/sysutil.h	Wed Mar 31 12:27:01 2010 +0100
   137.3 @@ -0,0 +1,210 @@
   137.4 +/*
   137.5 +* Copyright (c) 2000-2006 Nokia Corporation and/or its subsidiary(-ies). 
   137.6 +* All rights reserved.
   137.7 +* This component and the accompanying materials are made available
   137.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   137.9 +* which accompanies this distribution, and is available
  137.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  137.11 +*
  137.12 +* Initial Contributors:
  137.13 +* Nokia Corporation - initial contribution.
  137.14 +*
  137.15 +* Contributors:
  137.16 +*
  137.17 +* Description:  SysUtil API provides functions for applications to retrieve
  137.18 +*                SW and language package versions and check whether there is
  137.19 +*                free space on a disk drive.
  137.20 +*
  137.21 +*/
  137.22 +
  137.23 +
  137.24 +#ifndef SYSUTIL_H
  137.25 +#define SYSUTIL_H
  137.26 +
  137.27 +#include <e32base.h>
  137.28 +
  137.29 +/**
  137.30 +* Helper constant to allocate buffers for GetSWVersion, GetLangSWVersion,
  137.31 +* GetLangVersion.
  137.32 +*/
  137.33 +const TInt KSysUtilVersionTextLength = 64;
  137.34 +
  137.35 +class RFs;
  137.36 +
  137.37 +/**
  137.38 + *  SysUtil provides various utility methods for applications.
  137.39 + *
  137.40 + *  SysUtil API provides functions for applications to retrieve SW and language
  137.41 + *  package versions and check whether there is free space on a disk drive.
  137.42 + *
  137.43 + *  @lib sysutil.lib
  137.44 + *  @since S60 v2.0
  137.45 + */
  137.46 +class SysUtil
  137.47 +    {
  137.48 +
  137.49 +public:
  137.50 +
  137.51 +    /**
  137.52 +     * Obtains the software version string.
  137.53 +     *
  137.54 +     * @since S60 v2.0
  137.55 +     *
  137.56 +     * Usage example:
  137.57 +     * @code
  137.58 +     * TBuf<KSysUtilVersionTextLength> version;
  137.59 +     * if ( SysUtil::GetSWVersion( version ) == KErrNone )
  137.60 +     *     {
  137.61 +     *     // Use the version string.
  137.62 +     *     ...
  137.63 +     *     }
  137.64 +     * @endcode
  137.65 +     *
  137.66 +     * @param aValue On return, contains the software version string.
  137.67 +     *               The buffer should have space for KSysUtilVersionTextLength
  137.68 +     *               characters.
  137.69 +     *
  137.70 +     * @return KErrNone on success, or one of the Symbian error codes if reading
  137.71 +     *         the version string fails.
  137.72 +     */
  137.73 +    IMPORT_C static TInt GetSWVersion( TDes& aValue );
  137.74 +
  137.75 +    /**
  137.76 +     * Returns software version which the currently installed language package
  137.77 +     * is compatible with.
  137.78 +     *
  137.79 +     * @since S60 v2.0
  137.80 +     *
  137.81 +     * @param aValue On return, contains the version string.
  137.82 +     *               The buffer should have space for KSysUtilVersionTextLength
  137.83 +     *               characters.
  137.84 +     *
  137.85 +     * @return KErrNone on success, or one of the Symbian error codes if reading
  137.86 +     *         the version string fails.
  137.87 +     */
  137.88 +    IMPORT_C static TInt GetLangSWVersion( TDes& aValue );
  137.89 +
  137.90 +    /**
  137.91 +     * Obtains the version of the currently installed language package.
  137.92 +     *
  137.93 +     * @since S60 v2.0
  137.94 +     *
  137.95 +     * @param aValue On return, contains the language package version string.
  137.96 +     *               The buffer should have space for KSysUtilVersionTextLength
  137.97 +     *               characters.
  137.98 +     *
  137.99 +     * @return KErrNone on success, or one of the Symbian error codes if reading
 137.100 +     *         the version string fails.
 137.101 +     */
 137.102 +    IMPORT_C static TInt GetLangVersion( TDes& aValue );
 137.103 +
 137.104 +    /**
 137.105 +     * Checks if free FFS (internal flash file system) storage space is or will
 137.106 +     * fall below critical level. Static configuration value stored in Central
 137.107 +     * Repository is used to determine the critical level for the FFS drive.
 137.108 +     *
 137.109 +     * @since S60 v2.0
 137.110 +     *
 137.111 +     * @param aFs File server session. Must be given if available, e.g. from
 137.112 +     *            EIKON environment. If NULL, this method will create a
 137.113 +     *            temporary session, which causes the method to consume more
 137.114 +     *            time and system resources.
 137.115 +     * @param aBytesToWrite Number of bytes the caller is about to write to
 137.116 +     *                      FFS. If value 0 is given, this method checks
 137.117 +     *                      if the current FFS space is already below critical
 137.118 +     *                      level.
 137.119 +     *
 137.120 +     * @return ETrue if FFS space would go below critical level after writing
 137.121 +     *         aBytesToWrite more data, EFalse otherwise.
 137.122 +     *
 137.123 +     * @leave Leaves with one of the Symbian error codes if checking the FFS
 137.124 +     *        space fails, for instance if there is not enough free memory to
 137.125 +     *        create a temporary connection to file server.
 137.126 +     */
 137.127 +    IMPORT_C static TBool FFSSpaceBelowCriticalLevelL(
 137.128 +        RFs* aFs,
 137.129 +        TInt aBytesToWrite = 0 );
 137.130 +
 137.131 +
 137.132 +    /**
 137.133 +     * Checks if free MMC storage space is or will fall below critical
 137.134 +     * level. Static configuration value stored in Central Repository is
 137.135 +     * used to determine the critical level for the MMC drive.
 137.136 +     * PathInfo API is used to determine the drive letter for the MMC drive.
 137.137 +     *
 137.138 +     * @since S60 v2.0
 137.139 +     *
 137.140 +     * @param aFs File server session. Must be given if available, e.g. from
 137.141 +     *            EIKON environment. If NULL, this method will create a
 137.142 +     *            temporary session, which causes the method to consume more
 137.143 +     *            time and system resources.
 137.144 +     * @param aBytesToWrite Number of bytes the caller is about to write to
 137.145 +     *                      MMC. If value 0 is given, this method checks
 137.146 +     *                      if the current MMC space is already below critical
 137.147 +     *                      level.
 137.148 +     *
 137.149 +     * @return ETrue if MMC space would go below critical level after writing
 137.150 +     *         aBytesToWrite more data, EFalse otherwise.
 137.151 +     *         EFalse if the system has no MMC drive support.
 137.152 +     *
 137.153 +     * @leave Leaves with one of the Symbian error codes if checking the MMC
 137.154 +     *        space fails, for instance if the MMC drive contains no media or
 137.155 +     *        there is not enough free memory to create a temporary connection to
 137.156 +     *        file server.
 137.157 +     */
 137.158 +    IMPORT_C static TBool MMCSpaceBelowCriticalLevelL(
 137.159 +        RFs* aFs,
 137.160 +        TInt aBytesToWrite = 0 );
 137.161 +
 137.162 +    /**
 137.163 +     * Checks if free disk drive storage space is or will fall below critical
 137.164 +     * level. Static configuration values stored in Central Repository are
 137.165 +     * used to determine a critical level for each drive.
 137.166 +     *
 137.167 +     * Usage example:
 137.168 +     * @code
 137.169 +     * TInt dataSize = 500;
 137.170 +     * if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFsSession, dataSize, EDriveC ) )
 137.171 +     *     {
 137.172 +     *     // Can not write the data, there's not enough free space on disk.
 137.173 +     *     ...
 137.174 +     *     }
 137.175 +     * else
 137.176 +     *     {
 137.177 +     *     // It's ok to actually write the data.
 137.178 +     *     ...
 137.179 +     *     }
 137.180 +     * @endcode
 137.181 +     *
 137.182 +     * @since S60 v2.0
 137.183 +     *
 137.184 +     * @param aFs File server session. Must be given if available, e.g. from
 137.185 +     *            EIKON environment. If NULL, this method will create a
 137.186 +     *            temporary session, which causes the method to consume more
 137.187 +     *            time and system resources.
 137.188 +     * @param aBytesToWrite Number of bytes the caller is about to write to
 137.189 +     *                      disk. If value 0 is given, this method checks
 137.190 +     *                      if the current disk space is already below critical
 137.191 +     *                      level.
 137.192 +     * @param aDrive Identifies the disk drive to be checked. Numeric values
 137.193 +     *               for identifying disk drives are defined in TDriveNumber
 137.194 +     *               enumeration.
 137.195 +     *
 137.196 +     * @see TDriveNumber in f32file.h.
 137.197 +     *
 137.198 +     * @return ETrue if disk space would go below critical level after writing
 137.199 +     *         aBytesToWrite more data, EFalse otherwise.
 137.200 +     *
 137.201 +     * @leave Leaves with one of the Symbian error codes if checking the disk
 137.202 +     *        space fails, for instance if the drive contains no media or there
 137.203 +     *        is not enough free memory to create a temporary connection to
 137.204 +     *        file server.
 137.205 +     */
 137.206 +    IMPORT_C static TBool DiskSpaceBelowCriticalLevelL(
 137.207 +        RFs* aFs,
 137.208 +        TInt aBytesToWrite,
 137.209 +        TInt aDrive );
 137.210 +
 137.211 +    };
 137.212 +
 137.213 +#endif // SYSUTIL_H
   138.1 --- a/epoc32/include/basicanimation.h	Tue Mar 16 16:12:26 2010 +0000
   138.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   138.3 @@ -1,135 +0,0 @@
   138.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   138.5 -// All rights reserved.
   138.6 -// This component and the accompanying materials are made available
   138.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   138.8 -// which accompanies this distribution, and is available
   138.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  138.10 -//
  138.11 -// Initial Contributors:
  138.12 -// Nokia Corporation - initial contribution.
  138.13 -//
  138.14 -// Contributors:
  138.15 -//
  138.16 -// Description:
  138.17 -//
  138.18 -
  138.19 -#ifndef __BASICANIMATION_H__
  138.20 -#define __BASICANIMATION_H__
  138.21 -
  138.22 -#include <animation.h>
  138.23 -#include <w32std.h>
  138.24 -
  138.25 -class RWsSession;
  138.26 -class RWindow;
  138.27 -class CWindowGc;
  138.28 -class CFbsBitmap;
  138.29 -class CFbsBitmapDevice;
  138.30 -class CFbsBitGc;
  138.31 -class CAnimationDataProvider;
  138.32 -class CAnimator;
  138.33 -class TAnimationConfig;
  138.34 -class CAnimationTls;
  138.35 -class CAnimationTicker;
  138.36 -class CBasicAnimationExt;
  138.37 -class CCoeControl;
  138.38 -
  138.39 -/**
  138.40 -Implementation of CAnimation for purely client side animations.
  138.41 -
  138.42 -A basic animation accepts a data provider during construction, loads the
  138.43 -appropriate animator plugin, and implements the interface defined in
  138.44 -CAnimation.
  138.45 -
  138.46 -A basic animation must be associated with an RWindow.  Redraw events will be
  138.47 -received by the client application whenever the animation needs to draw a new
  138.48 -frame, and it is the applications responsibility to call Draw() while handling
  138.49 -these events.  It is also the client applications responsibility to handle
  138.50 -visibility events and place the animation on hold when it isn't visible. This
  138.51 -saves on CPU usage and ultimately prolongs battery life.
  138.52 -
  138.53 -@see CAnimationDataProvider
  138.54 -@publishedAll
  138.55 -@released
  138.56 -*/
  138.57 -class CBasicAnimation : public CAnimation, public MAnimationDrawer, public MAnimationDataProviderObserver
  138.58 -	{
  138.59 -private:
  138.60 -	enum TFlags
  138.61 -		{
  138.62 -		EAnimationInitialised	=	0x0001,
  138.63 -		};
  138.64 -public:
  138.65 -	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWs, RWindow& aWindow, MAnimationObserver* aObserver = 0);
  138.66 -	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWs, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver = 0);
  138.67 -	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver, const CCoeControl* aHost);
  138.68 -	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, const TDesC8& aDataType, MAnimationObserver* aObserver, const CCoeControl* aHost);
  138.69 -	IMPORT_C ~CBasicAnimation();
  138.70 -	
  138.71 -	IMPORT_C void Draw(CWindowGc& aGc) const;
  138.72 -	
  138.73 -	/** Provides an CAnimationDataProvider interface to the client application.
  138.74 -	@return iDataProvider A CAnimationDataProvider */
  138.75 -	inline CAnimationDataProvider* DataProvider() { return iDataProvider; }
  138.76 -
  138.77 -	/** Returns the current drawing position.
  138.78 -	@return ipoint const Tpoint& */
  138.79 -	inline const TPoint& Position() const { return iPoint; }
  138.80 -	
  138.81 -	/** Gets the size of the smallest bounding rectangle that will be required to render the animation.
  138.82 -
  138.83 -	This function is called when the animator is ready to begin animating. The animator cannot be started 
  138.84 -	until it has called this function.  
  138.85 -	@return iSize The size of the smallest bounding rectangle */
  138.86 -	inline const TSize& Size() const { return iSize; }
  138.87 -	// From CAnimation:
  138.88 -	virtual void Start(const TAnimationConfig& aConfig);
  138.89 -	virtual void Stop();
  138.90 -	virtual void Pause();
  138.91 -	virtual void Resume();
  138.92 -	virtual void Hold();
  138.93 -	virtual void Unhold();
  138.94 -	virtual void SetPosition(const TPoint& aPoint);
  138.95 -	virtual void Freeze();
  138.96 -	virtual void Unfreeze();
  138.97 -public:
  138.98 -	IMPORT_C void SetHostL(const CCoeControl* aHost);
  138.99 -protected:
 138.100 -	CBasicAnimation(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession* aWs, RWindow* aWindow, MAnimationObserver* aObserver);
 138.101 -	CBasicAnimation();
 138.102 -	CBasicAnimation(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver);
 138.103 -	void ConstructL(const TDesC8& aDataType);
 138.104 -	IMPORT_C virtual void CBasicAnimation_Reserved1();
 138.105 -	IMPORT_C virtual void CBasicAnimation_Reserved2();
 138.106 -	void ConstructL(const TDesC8& aDataType,const CCoeControl* aHost);
 138.107 -private:
 138.108 -	CBasicAnimation(const CBasicAnimation&); // no implementation
 138.109 -	CBasicAnimation& operator=(const CBasicAnimation&);		 // no implementation
 138.110 -	// from MAnimationDataProviderObserver
 138.111 -	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize);
 138.112 -	// From MAnimatorDrawer
 138.113 -	virtual void AnimatorDraw();
 138.114 -	virtual void AnimatorInitialisedL(const TSize& aSize);
 138.115 -	virtual void AnimatorResetL();
 138.116 -	virtual const TPtrC8 AnimatorDataType() const;
 138.117 -	virtual CAnimationTicker& AnimatorTicker();
 138.118 -private:
 138.119 -	CBasicAnimationExt* iBasicAnimationExt;
 138.120 -	MAnimationObserver* iObserver;
 138.121 -	CAnimationDataProvider* iDataProvider;
 138.122 -	CAnimationTls* iTls;
 138.123 -	TPoint iPoint;
 138.124 -	RWsSession* iWs;
 138.125 -	RWindow* iWindow;
 138.126 -	HBufC8* iDataType;
 138.127 -	TInt iFreezeCount;
 138.128 -	TInt iFlags;
 138.129 -	TSize iSize;	
 138.130 -	CAnimator* iAnimator;
 138.131 -	CFbsBitmap* iBitmap;
 138.132 -	CFbsBitmap* iMask;
 138.133 -	CFbsBitmapDevice* iBitmapDevice;
 138.134 -	CFbsBitmapDevice* iMaskDevice;
 138.135 -	CFbsBitGc* iRenderGc;
 138.136 -	};
 138.137 -
 138.138 -#endif
   139.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   139.2 +++ b/epoc32/include/beagle/iolines.h	Wed Mar 31 12:27:01 2010 +0100
   139.3 @@ -0,0 +1,132 @@
   139.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   139.5 +// All rights reserved.
   139.6 +// This component and the accompanying materials are made available
   139.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   139.8 +// which accompanies this distribution, and is available
   139.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  139.10 +//
  139.11 +// Initial Contributors:
  139.12 +// Nokia Corporation - initial contribution.
  139.13 +//
  139.14 +// Contributors:
  139.15 +//
  139.16 +// Description:
  139.17 +// template\template_variant\inc\iolines.h
  139.18 +// Variant layer header for Template Platform
  139.19 +// 
  139.20 +//
  139.21 +
  139.22 +
  139.23 +
  139.24 +#ifndef __V32TEMPLATEV1_H__
  139.25 +#define __V32TEMPLATEV1_H__
  139.26 +#include <e32cmn.h>
  139.27 +#include <kpower.h>
  139.28 +
  139.29 +//----------------------------------------------------------------------------
  139.30 +// Variant-specific constants: use #define if constant dependencies are not
  139.31 +// declared within this file (this breaks the dependency on other header files)
  139.32 +//----------------------------------------------------------------------------
  139.33 +
  139.34 +// Examples of what goes in here include:
  139.35 +//
  139.36 +// - General-purpose I/O allocation such as 
  139.37 +//	 #define KtVariantGpio32KHzClkOut		KHtGpioPort1
  139.38 +//	 #define KtVariantGpioRClkOut			KHtGpioPort0
  139.39 +//
  139.40 +//	 #define KmVariantPinDirectionIn Sleep	0
  139.41 +//
  139.42 +// - Memory constants (type, geometry, wait states, etc) such as:
  139.43 +//	 #define KwVariantRom0Type				TTemplate::ERomTypeBurst4Rom
  139.44 +//	 #define KwVariantRom0Width				TTemplate::ERomWidth32
  139.45 +//	 const TUint KwVariantRom0WaitNs		= 150;
  139.46 +//	 const TUint KwVariantRom0PageNs		= 30;
  139.47 +//	 const TUint KwVariantRom0RecoverNs		= 55;
  139.48 +//
  139.49 +// - Specific Peripherals (Keyboard, LCD, CODECS, Serial Ports) such as 
  139.50 +//	 const TUint KwVariantKeyColLshift		= 7;
  139.51 +//	 #define KwVariantLcdBpp				TTemplate::ELcd8BitsPerPixel
  139.52 +//   const TUint KwVariantLcdMaxColors		= 4096;
  139.53 +//   const TUint KwVariantCodecMaxVolume	= 0;
  139.54 +//
  139.55 +// - Off-chip hardware control blocks (addresses, register make-up)
  139.56 +//
  139.57 +// - Interrupts (second-level Interrupt controller base address, register make-up):
  139.58 +//   (EXAMPLE ONLY:)
  139.59 +const TUint32 KHwVariantPhysBase		=	0x40000000;
  139.60 +const TUint32 KHoVariantRegSpacing		=	0x200;
  139.61 +
  139.62 +const TUint32 KHoBaseIntCont			=	0x0B*KHoVariantRegSpacing;
  139.63 +
  139.64 +const TUint32 KHoIntContEnable			=	0x00;		// offsets from KHwVariantPhysBase+KHoBaseIntCont
  139.65 +const TUint32 KHoIntContPending			=	0x04;
  139.66 +// other Variant and external blocks Base adrress offsets to KHwVariantPhysBase
  139.67 +
  139.68 +
  139.69 +// TO DO: (optional)
  139.70 +//
  139.71 +// Enumerate here all Variant (2nd level)  interrupt sources. It could be a good idea to enumerate them in a way that 
  139.72 +// facilitates operating on the corresponding interrupt controller registers (e.g using their value as a shift count)
  139.73 +//
  139.74 +//   (EXAMPLE ONLY:)
  139.75 +enum TTemplateInterruptId
  139.76 +	{
  139.77 +	// the top-level bit is set to distinguish from first level (ASSP) Interrupts
  139.78 +	EXIntIdA=0x80000000,
  139.79 +	EXIntIdB=0x80000001,
  139.80 +	// ...
  139.81 +	EXIntIdZ=0x80000019,
  139.82 +
  139.83 +	ENumXInts=0x1A
  139.84 +	};
  139.85 +
  139.86 +//
  139.87 +// TO DO: (optional)
  139.88 +//
  139.89 +// Define here some commonly used Variant (2nd level) interrupts
  139.90 +//
  139.91 +//   (EXAMPLE ONLY:)
  139.92 +const TInt KIntIdKeyboard=EXIntIdB;
  139.93 +
  139.94 +class Variant
  139.95 +    {
  139.96 +	// below is a selection of functions usually implemented  at this level. This do not constitute a mandatory
  139.97 +	// set and it might not be relevant for your hardware...
  139.98 +public:
  139.99 +	/**
 139.100 +	 * initialisation
 139.101 +	 */
 139.102 +	static void Init3();
 139.103 +	/**
 139.104 +	 * Returns the Linear Base address of the Variant Hardware
 139.105 +	 */
 139.106 +	IMPORT_C static TUint BaseLinAddress();
 139.107 +	/**
 139.108 +	 * When invoked, turns off all power supplies
 139.109 +	 */
 139.110 +	IMPORT_C static void PowerReset();
 139.111 +	/**
 139.112 +	 * When invoked, it marks the Serial port used for outputting debug strings as requiring re-initialisation
 139.113 +	 * As in, for example, the serial port was used by a device driver or the system is coming back from Standby
 139.114 +	 */
 139.115 +	IMPORT_C static void MarkDebugPortOff();
 139.116 +	/**
 139.117 +	 * When invoked, initialises the Serial Port hardware for the serial port used to output Debug strings
 139.118 +	 * Called by Template::DebugInit()
 139.119 +	 */
 139.120 +	IMPORT_C static void UartInit();
 139.121 +	/**
 139.122 +	 * When invoked, read the state of on-board switches
 139.123 +	 * @return A bitmask with the state of on-board switches
 139.124 +	 */
 139.125 +	IMPORT_C static TUint Switches();
 139.126 +	// other functions to access hardware not covered by specific device-drivres, which may be called from drivers
 139.127 +	// or platform-specifc code
 139.128 +	// ...
 139.129 +public:
 139.130 +	static TUint32 iBaseAddress;
 139.131 +	// (optional): May need to have a follower variable to store the value of a read only register initialised at boot time
 139.132 +	// static TUint aFollower;
 139.133 +    };
 139.134 +
 139.135 +#endif
   140.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   140.2 +++ b/epoc32/include/beagle/mconf.h	Wed Mar 31 12:27:01 2010 +0100
   140.3 @@ -0,0 +1,55 @@
   140.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   140.5 +// All rights reserved.
   140.6 +// This component and the accompanying materials are made available
   140.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   140.8 +// which accompanies this distribution, and is available
   140.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  140.10 +//
  140.11 +// Initial Contributors:
  140.12 +// Nokia Corporation - initial contribution.
  140.13 +//
  140.14 +// Contributors:
  140.15 +//
  140.16 +// Description:
  140.17 +// template\template_variant\inc\mconf.h
  140.18 +// Template Persistent Machine Configuration
  140.19 +// 
  140.20 +//
  140.21 +
  140.22 +
  140.23 +
  140.24 +#ifndef __MCONF_H__
  140.25 +#define __MCONF_H__
  140.26 +#include <kernel.h>
  140.27 +
  140.28 +class TDigitizerCalibrateValues
  140.29 +    {
  140.30 +public:
  140.31 +    TInt iR11;
  140.32 +    TInt iR12;
  140.33 +    TInt iR21;
  140.34 +    TInt iR22;
  140.35 +    TInt iTx;
  140.36 +    TInt iTy;
  140.37 +    };
  140.38 +
  140.39 +class TTemplateMachineConfig : public TMachineConfig
  140.40 +	{
  140.41 +public:
  140.42 +	TSoundInfoV1 iSoundInfo;
  140.43 +    TOnOffInfoV1 iOnOffInfo;
  140.44 +	TTimeK iMainBatteryInsertionTime;
  140.45 +    Int64 iMainBatteryInUseMicroSeconds;
  140.46 +	Int64 iExternalPowerInUseMicroSeconds;
  140.47 +	Int64 iMainBatteryMilliAmpTicks;
  140.48 +	TDigitizerCalibrateValues iCalibration;
  140.49 +	TDigitizerCalibrateValues iCalibrationSaved;
  140.50 +	TDigitizerCalibrateValues iCalibrationFactory;
  140.51 +	};
  140.52 +
  140.53 +typedef TTemplateMachineConfig TActualMachineConfig;
  140.54 +
  140.55 +inline TActualMachineConfig& TheActualMachineConfig()
  140.56 +	{return (TActualMachineConfig&)Kern::MachineConfig();}
  140.57 +
  140.58 +#endif
   141.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   141.2 +++ b/epoc32/include/beagle/variantmediadef.h	Wed Mar 31 12:27:01 2010 +0100
   141.3 @@ -0,0 +1,57 @@
   141.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   141.5 +// All rights reserved.
   141.6 +// This component and the accompanying materials are made available
   141.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   141.8 +// which accompanies this distribution, and is available
   141.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  141.10 +//
  141.11 +// Initial Contributors:
  141.12 +// Nokia Corporation - initial contribution.
  141.13 +//
  141.14 +// Contributors:
  141.15 +//
  141.16 +// Description:
  141.17 +// wins\inc\variantmediadef.h
  141.18 +// Media definitions for the Wins Variant.
  141.19 +// Each Media Driver requires the following definitions
  141.20 +// DRIVECOUNT - The total number of local drive object to be assigned to the Media Driver (1-KMaxLocalDrives)
  141.21 +// DRIVELIST - A list of the local drive numbers (each separated with a comma) to be assigned to the Media Driver.
  141.22 +// Each in the range 0 - (KMaxLocalDrives-1). Total number of drive numbers must equal the value
  141.23 +// of DRIVECOUNT.
  141.24 +// NUMMEDIA - The total number of media objects to be assigned to the Media Driver.
  141.25 +// DRIVENAME - A name for the drive group.
  141.26 +// For the complete set of media definitions
  141.27 +// - The total number of local drive objects assigned should not exceed KMaxLocalDrives.
  141.28 +// - Each Media Driver should be assigned a unique set of drive numbers - no conflicts between Media Drivers.
  141.29 +// - The total number of media objects assigned should not exceed KMaxLocalDrives.
  141.30 +// 
  141.31 +//
  141.32 + 
  141.33 +#ifndef __VARIANTMEDIADEF_H__
  141.34 +#define __VARIANTMEDIADEF_H__
  141.35 +
  141.36 +// Variant parameters for IRAM Media Driver (MEDINT.PDD)
  141.37 +#define IRAM_DRIVECOUNT 1
  141.38 +#define IRAM_DRIVELIST 0
  141.39 +#define IRAM_NUMMEDIA 1	
  141.40 +#define IRAM_DRIVENAME "IRam"
  141.41 +
  141.42 +// Variant parameters for LFFS Media Driver (MEDLFS.PDD)
  141.43 +#define LFFS_DRIVECOUNT 1
  141.44 +#define LFFS_DRIVELIST 8
  141.45 +#define LFFS_NUMMEDIA 1	
  141.46 +#define LFFS_DRIVENAME "Flash"
  141.47 +
  141.48 +// Variant parameters for the MMC Controller (EPBUSMMC.DLL)
  141.49 +#define MMC0_DRIVECOUNT 4
  141.50 +#define MMC0_DRIVELIST 1,2,3,4
  141.51 +#define MMC0_NUMMEDIA 4	
  141.52 +#define MMC0_DRIVENAME "MultiMediaCard0"
  141.53 +
  141.54 +// Variant parameters for NAND flash media driver (mednand.pdd)
  141.55 +#define NAND_DRIVECOUNT 3
  141.56 +#define NAND_DRIVELIST 5,6,9
  141.57 +#define NAND_NUMMEDIA 1
  141.58 +#define NAND_DRIVENAME "Nand"
  141.59 +
  141.60 +#endif
   142.1 --- a/epoc32/include/bif.h	Tue Mar 16 16:12:26 2010 +0000
   142.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   142.3 @@ -1,171 +0,0 @@
   142.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   142.5 -// All rights reserved.
   142.6 -// This component and the accompanying materials are made available
   142.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   142.8 -// which accompanies this distribution, and is available
   142.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  142.10 -//
  142.11 -// Initial Contributors:
  142.12 -// Nokia Corporation - initial contribution.
  142.13 -//
  142.14 -// Contributors:
  142.15 -//
  142.16 -// Description:
  142.17 -//
  142.18 -
  142.19 -#ifndef __BIF_H__
  142.20 -#define __BIF_H__
  142.21 -
  142.22 -#include <apmrec.h>
  142.23 -
  142.24 -class CBifEntry;
  142.25 -
  142.26 -//
  142.27 -// Constants
  142.28 -/** 2nd UID of BIF file stores. */
  142.29 -const TUid KUidBioInfoFile={0x10005233};		// unicode Uid, used as 2nd Uid of file store
  142.30 -/** Indicates that when opening the message no application should be launched. */
  142.31 -const TUid KUidBioUseNoApp={0x00000000};			
  142.32 -/** Indicates that when opened the message is to be viewed by the default application. */
  142.33 -const TUid KUidBioUseDefaultApp={0x100052b2};		
  142.34 -/** Maximum length of BIO_INFO_FILE description field. */
  142.35 -const TInt KMaxBioDescription=128;
  142.36 -/** Maximum length of ID text field. */
  142.37 -const TInt KMaxBioIdText=128;
  142.38 -/** Unused from v7.0.
  142.39 -
  142.40 -Previously, it specified the maximum length of a command line to BIFTOOL. */
  142.41 -const TInt KMaxBioCommandLine=256;
  142.42 -/** Maximum length of BIO_INFO_FILE file_extension field. */
  142.43 -const TInt KMaxBioFileExtension=10;
  142.44 -
  142.45 -//
  142.46 -// Data types
  142.47 -/** Buffer to hold a BIF ID identifier text field. */
  142.48 -typedef TBuf<KMaxBioIdText> TBioMsgIdText;
  142.49 -/** Unused from v7.0.
  142.50 -
  142.51 -Previously, it held a command line to BIFTOOL. */
  142.52 -typedef TBuf<KMaxBioCommandLine> TBioCommand;
  142.53 -
  142.54 -/** Identifies bearers for the BIF ID type field.
  142.55 -
  142.56 -It is the C++ equivalent of the resource enum ID_TYPE. */
  142.57 -enum TBioMsgIdType 
  142.58 -	{
  142.59 -	/** Unknown.
  142.60 -	
  142.61 -	Item will not be used in matching. */
  142.62 -	EBioMsgIdUnknown,
  142.63 -
  142.64 -	/** MIME type.
  142.65 -	
  142.66 -	Specifies that a bearer that transports MIME messages (e.g. e-mail) should 
  142.67 -	match the MIME type against the ID text field. */
  142.68 -	EBioMsgIdIana,
  142.69 -
  142.70 -	/** Narrow band (SMS).
  142.71 -	
  142.72 -	Specifies that the SMS bearer should match messages against the ID port field. */
  142.73 -	EBioMsgIdNbs,
  142.74 -
  142.75 -	/** WAP WDP.
  142.76 -	
  142.77 -	Specifies that the WAP bearer should match messages against the ID port field. */
  142.78 -	EBioMsgIdWap,
  142.79 -
  142.80 -	/** WAP secure WDP.
  142.81 -	
  142.82 -	Specifies that the WAP bearer should match messages against the ID port field. */
  142.83 -	EBioMsgIdWapSecure,
  142.84 -
  142.85 -	/** WAP WSP.
  142.86 -	
  142.87 -	Specifies that the WAP bearer should match messages against the ID port field. */
  142.88 -	EBioMsgIdWsp,
  142.89 -
  142.90 -	/** WAP secure WSP.
  142.91 -	
  142.92 -	Specifies that the WAP bearer should match messages against the ID port field. */
  142.93 -	EBioMsgIdWspSecure
  142.94 -	};
  142.95 -
  142.96 -/** Encapsulates an ID from a BIF (BIO_INFO_FILE). 
  142.97 -@internalTechnology
  142.98 -@released
  142.99 -*/
 142.100 -class TBioMsgId 
 142.101 -	{
 142.102 -public:
 142.103 -	/** Identifies the bearer that should use this resource to match messages. */
 142.104 -	TBioMsgIdType iType;
 142.105 -	/** Confidence level. */
 142.106 -	CApaDataRecognizerType::TRecognitionConfidence iConfidence;			// from APMREC.H
 142.107 -	/** Text field that can be used to match the message to this BIO type. */
 142.108 -	TBioMsgIdText iText;
 142.109 -	/** Receiving port number that can be used to match the message to this BIO type. */
 142.110 -	TUint16 iPort;
 142.111 -	/** Expected receiving character set of messages. */
 142.112 -	TUid iCharacterSet;
 142.113 -	/** This is available for 3rd party use for BIO message type identity specific 
 142.114 -	data. */
 142.115 -	TInt16 iGeneralIdData;
 142.116 -	};
 142.117 -	
 142.118 -// NOTE - this is included here cos the CBioInfoFile requires some of the enums 
 142.119 -// defined above.
 142.120 -#include "bifbase.h"			// for CBioInfoFile
 142.121 -
 142.122 -/** BIO information file (BIF) reader. 
 142.123 -
 142.124 -Allows reading (all but the icons) from an existing BIF file.
 142.125 -
 142.126 -@publishedAll
 142.127 -@released
 142.128 -*/
 142.129 -class CBioInfoFileReader : public CBioInfoFile
 142.130 -	{
 142.131 -public:
 142.132 -	//
 142.133 -	// Construction/destruction
 142.134 -	IMPORT_C static CBioInfoFileReader* NewLC(RFs& aFs,const TDesC& aFileName,TUid aMsgTypeUid=KNullUid);
 142.135 -	IMPORT_C static CBioInfoFileReader* NewL(RFs& aFs,const TDesC& aFileName,TUid aMsgTypeUid=KNullUid);
 142.136 -	IMPORT_C virtual ~CBioInfoFileReader();
 142.137 -
 142.138 -	//
 142.139 -	// Data getters
 142.140 -	IMPORT_C TUid MessageTypeUid() const;
 142.141 -	IMPORT_C const TPtrC MessageParserName() const;
 142.142 -	IMPORT_C TUid MessageAppUid() const;
 142.143 -	IMPORT_C TUid MessageAppCtrlUid() const;
 142.144 -	IMPORT_C const TPtrC MessageAppCtrlName() const;
 142.145 -	IMPORT_C TInt16 GeneralData1() const;
 142.146 -	IMPORT_C TInt16 GeneralData2() const;
 142.147 -	IMPORT_C TInt16 GeneralData3() const;
 142.148 -	IMPORT_C const TPtrC Description() const;			
 142.149 -	IMPORT_C const TPtrC FileExtension() const;			
 142.150 -
 142.151 -	IMPORT_C const TPtrC IconsFilename() const;			
 142.152 -	IMPORT_C const CArrayFixFlat<TInt16>* ZoomLevelsLC() const;
 142.153 -	IMPORT_C TInt ZoomLevelsCount() const;			
 142.154 -
 142.155 -	IMPORT_C const CArrayFixFlat<TBioMsgId>* IdsLC() const;
 142.156 -	
 142.157 -	IMPORT_C const CBifEntry& BifEntry() const;
 142.158 -
 142.159 -private:
 142.160 -	CBioInfoFileReader(RFs& aFs);
 142.161 -	void ConstructL(const TDesC& aFileName, TUid aMsgTypeUid);
 142.162 -
 142.163 -private:
 142.164 -	void InternalizeL(RReadStream& aStream);
 142.165 -	void LoadResourceL(TUid aMsgTypeUid);
 142.166 -	void LoadDataL(TUid aMsgTypeUid);
 142.167 -	TBool IsResFileL() const;
 142.168 -	TBool IsDatFile(const TUidType& aUidType) const;
 142.169 -    //
 142.170 -    HBufC*		iFileName;
 142.171 -    CBifEntry*	iEntry;
 142.172 -	};
 142.173 -
 142.174 -#endif // __BIF_H__
   143.1 --- a/epoc32/include/biodb.h	Tue Mar 16 16:12:26 2010 +0000
   143.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   143.3 @@ -1,221 +0,0 @@
   143.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   143.5 -// All rights reserved.
   143.6 -// This component and the accompanying materials are made available
   143.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   143.8 -// which accompanies this distribution, and is available
   143.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  143.10 -//
  143.11 -// Initial Contributors:
  143.12 -// Nokia Corporation - initial contribution.
  143.13 -//
  143.14 -// Contributors:
  143.15 -//
  143.16 -// Description:
  143.17 -//
  143.18 -
  143.19 -#ifndef __BIODB_H__
  143.20 -#define __BIODB_H__
  143.21 -
  143.22 -#include <bif.h>				// the bif reader
  143.23 -#include <f32file.h>
  143.24 -
  143.25 -class CBifEntry;
  143.26 -
  143.27 -/** UID of the BIODB.DLL. */
  143.28 -const TUid KUidBioDBDll ={0x10005542};	
  143.29 -
  143.30 -/** Buffer to hold BIF identification text. */
  143.31 -typedef TBuf<KMaxBioIdText> TBioMsgIdText;
  143.32 -
  143.33 -/** BIO information file (BIF) database.
  143.34 -
  143.35 -This class reads the installed BIF files and allows information from them 
  143.36 -to be easily extracted.
  143.37 -
  143.38 -@see BIO_INFO_FILE 
  143.39 -@publishedAll
  143.40 -@released
  143.41 -*/
  143.42 -class CBIODatabase : public CBase
  143.43 -	{
  143.44 -public:
  143.45 -	/** Search methods. */
  143.46 -	enum TSearchList
  143.47 -		{
  143.48 -		/** Begin search from the start. */
  143.49 -		EStart, 
  143.50 -		/** Begin search from the last index position. */
  143.51 -		ENext
  143.52 -		};
  143.53 -public:
  143.54 -	IMPORT_C static CBIODatabase* NewLC(RFs& afileSystem);
  143.55 -	IMPORT_C static CBIODatabase* NewL(RFs& afileSystem);
  143.56 -	IMPORT_C ~CBIODatabase();
  143.57 -
  143.58 -public:
  143.59 -	// BIF files contain all the information that needs to be registered
  143.60 -	// for each BIO Message type
  143.61 -
  143.62 -	// Completely refresh the database will all the BIF Files in the
  143.63 -	// default directory
  143.64 -	IMPORT_C void AddAllBifsL(RFs& afileSystem);
  143.65 -
  143.66 -	// Add one bifFile using the file name, then using Neil's handy 
  143.67 -	// class to read it
  143.68 -	// This will add the Parser
  143.69 -	IMPORT_C void AddBifL(CBioInfoFileReader* aBifReader);
  143.70 -	IMPORT_C void RemoveBifL(TUid aMsgID);
  143.71 -	IMPORT_C void RemoveBifL(TInt aIndex);
  143.72 -
  143.73 -	// BIO Messages are determined to of a BIO type if we have the BIO
  143.74 -	// Parser identified by a WAP/NBS port, IANA MIME type or a Pattern
  143.75 -	IMPORT_C TInt BIOCount();
  143.76 -
  143.77 -	// Get the BioEntry at this index
  143.78 -	// Return Index if found, NULL if not
  143.79 -	IMPORT_C const CArrayFix<TBioMsgId>* BIOEntryLC(TInt index);
  143.80 -	
  143.81 -
  143.82 -	// Get the whole bif file class
  143.83 -	IMPORT_C const CBioInfoFileReader& BifReader(TInt aIndex) const;
  143.84 -     
  143.85 -	// Get the BIO Entry based on what type it is, pos indicates where to start looking 
  143.86 -	// after, and will get updated to current pos
  143.87 -	IMPORT_C const CArrayFix<TBioMsgId>* BioEntryByTypeLC(
  143.88 -								TSearchList aSearchType,
  143.89 -								TBioMsgIdType portType, 
  143.90 -								TInt& rIndex);
  143.91 -
  143.92 -	IMPORT_C void GetBioIndexWithMsgIDL(TUid aMsgID, TInt& rIndex);
  143.93 -
  143.94 -	// Get the BioMessageID for the Index
  143.95 -	IMPORT_C void GetBioMsgID(TInt aIndex, TUid& rMsgID);
  143.96 -
  143.97 -	// Get the BioParserName for the Index
  143.98 -	IMPORT_C const TPtrC GetBioParserName(TInt aIndex);
  143.99 -	
 143.100 -	// Get the BioParserName for the BioMessageID
 143.101 -	IMPORT_C const TPtrC GetBioParserNameL(TUid aMsgID);
 143.102 -	
 143.103 -	// Get the ControlID for the Index
 143.104 -	IMPORT_C void GetBioControlID(TInt aIndex, TUid& rControlID);
 143.105 -	
 143.106 -	// Get the ControlID for the BioMessageID
 143.107 -	IMPORT_C void GetBioControlIDL(TUid aMsgID, TUid& rControlID);
 143.108 -	
 143.109 -	IMPORT_C const TPtrC GetBioControlName(TInt aIndex);
 143.110 -	IMPORT_C const TPtrC GetBioControlNameL(TUid aMsgID);
 143.111 -	
 143.112 -	// Get the String Extension for the BioMessageID
 143.113 -	IMPORT_C const TPtrC GetFileExtL(TUid aMsgID);
 143.114 -
 143.115 -	IMPORT_C void GetDefaultSendBearerL(TUid aBioUID, TBioMsgId& rBioMsgIdentifier);
 143.116 -	IMPORT_C void GetDefaultSendBearerTypeL(TUid aBioUID, TBioMsgIdType& rPortType);
 143.117 -	IMPORT_C void GetDefaultSendBearerByTypeL(TUid aBioUID, TBioMsgIdType aPortType, TBioMsgId& rBioMsgIdentifier);
 143.118 -
 143.119 -	// BIO Messages are determined to of a BIO type if we have the BIO
 143.120 -	// Parser identified by a WAP/NBS port, IANA MIME type or a Pattern
 143.121 -	// Return an Index
 143.122 -
 143.123 -	// Get the Port# or Identifying string for sending
 143.124 -	IMPORT_C void GetPortNumberL(TUid aMsgID, TBioMsgIdType aPortType, TInt& aPortNumber);
 143.125 -	IMPORT_C void GetIdentifierTextL(TUid aMsgID, TBioMsgIdType aPortType, TBioMsgIdText& aText);
 143.126 -
 143.127 -	// Test to see if this is a BioMessage
 143.128 -	// Pass in the type ... if its NBS or IANA pass in the string pattern
 143.129 -	//						if its WAP or SecureWap, pass in the port number
 143.130 -	// return kErrNone if success, kErrNotFound if it fails
 143.131 -	IMPORT_C TInt IsBioMessageL(TBioMsgIdType aPortType, const TDesC& aPattern, TUint16 aPort, TUid& rBioMsgUID);
 143.132 -
 143.133 -	IMPORT_C TInt IsBioMessageL(TBioMsgId bioMessageData, TUid& rBioMsgUID);
 143.134 -
 143.135 -private:
 143.136 -	CBIODatabase();
 143.137 -	void ConstructL(RFs& afileSystem);
 143.138 -
 143.139 -private:
 143.140 -	//Utilities
 143.141 -	void GetTransportIDL(TInt aIndex, TBioMsgIdType aPortType, TBioMsgId& aBioMsgID);
 143.142 -	TBool IsLanguageFileL(const TDesC& aFileName, TInt& aExtLength) const;
 143.143 -	// If Persistence is required...
 143.144 -	// void InternalizeL(RReadStream& aStream);		
 143.145 -	// void ExternalizeL(RWriteStream& aStream) const;	
 143.146 -	
 143.147 -private:
 143.148 -	CArrayPtrFlat<CBioInfoFileReader>* iBifReaders;
 143.149 -
 143.150 -};
 143.151 -
 143.152 -/** Callback interface implemented by classes to receive notifications of BIF files 
 143.153 -changes from CBifChangeObserver. 
 143.154 -
 143.155 -@publishedPartner
 143.156 -@released
 143.157 -*/
 143.158 -class MBifChangeObserver 
 143.159 -	{
 143.160 -public:
 143.161 -	/** BIF change events. */
 143.162 -	enum TBifChangeEvent
 143.163 -		{
 143.164 -		/** Unknown change. */
 143.165 -		EBifChangeUnknown = 0,
 143.166 -		/** BIF added. */
 143.167 -		EBifAdded,
 143.168 -		/** BIF deleted. */
 143.169 -		EBifDeleted,
 143.170 -		/** BIF changed. */
 143.171 -		EBifChanged
 143.172 -		};
 143.173 -
 143.174 -public: 
 143.175 -	/** Called when a BIF change occurs.
 143.176 -	
 143.177 -	@param aEvent Change event type
 143.178 -	@param aBioID BIO message type of changed BIF */
 143.179 -	virtual void HandleBifChangeL(TBifChangeEvent aEvent, TUid aBioID)=0;
 143.180 -	};
 143.181 -
 143.182 -/** Active object that watches for changes made to the installed BIF files. 
 143.183 -
 143.184 -@publishedPartner
 143.185 -@released
 143.186 -*/
 143.187 -class CBifChangeObserver : public CActive
 143.188 -	{
 143.189 -public: 
 143.190 -	IMPORT_C static CBifChangeObserver* NewL(MBifChangeObserver& aObserver, RFs& aFs);
 143.191 -	IMPORT_C void Start();
 143.192 -	~CBifChangeObserver();
 143.193 -	
 143.194 -	static void CleanupBifArray(TAny* aBifArray);
 143.195 -
 143.196 -private:
 143.197 -	// from CActive
 143.198 -	virtual void RunL();
 143.199 -	virtual void DoCancel();
 143.200 -
 143.201 -private:
 143.202 -	CBifChangeObserver(MBifChangeObserver& aObserver, RFs& aFs);
 143.203 -	void ConstructL();
 143.204 -	
 143.205 -	void NotifyObserverL();
 143.206 -	void WaitForFileNotification();
 143.207 -	void DoRunL();
 143.208 -	void CopyEntriesL(const CDir& aDir, CArrayFixFlat<TEntry>& aEntries);
 143.209 -	TBool CompareReaders(const CBioInfoFileReader& aReader1, const CBioInfoFileReader& aReader2) const;
 143.210 -	
 143.211 -	TInt FindEntry(const CBifEntry& aBifEntry, const RPointerArray<CBifEntry>& aEntries, TInt& aIndex) const;
 143.212 -	
 143.213 -private:
 143.214 -	MBifChangeObserver&	iChangeObserver;
 143.215 -	RFs&			iFs;
 143.216 -
 143.217 -	RPointerArray<CBifEntry> iEntries;
 143.218 -
 143.219 -	CBIODatabase*	iBioDB;
 143.220 -	RTimer	iTimer;
 143.221 -	TInt iRetryCount;
 143.222 -	};
 143.223 -
 143.224 -#endif	// __BIODB_H__
   144.1 --- a/epoc32/include/biouids.h	Tue Mar 16 16:12:26 2010 +0000
   144.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   144.3 @@ -1,132 +0,0 @@
   144.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   144.5 -// All rights reserved.
   144.6 -// This component and the accompanying materials are made available
   144.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   144.8 -// which accompanies this distribution, and is available
   144.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  144.10 -//
  144.11 -// Initial Contributors:
  144.12 -// Nokia Corporation - initial contribution.
  144.13 -//
  144.14 -// Contributors:
  144.15 -//
  144.16 -// Description:
  144.17 -// BIOUUIDS.H
  144.18 -// Contains the TUid defines for the Bio Messaging 
  144.19 -// 
  144.20 -//
  144.21 -
  144.22 -
  144.23 -
  144.24 -/**
  144.25 - @file
  144.26 - @publishedAll
  144.27 - @released
  144.28 -*/
  144.29 -
  144.30 -#if !defined(__BIOUTILS_H__)
  144.31 -#define __BIOUTILS_H__
  144.32 -
  144.33 -//forward declarations
  144.34 -/**
  144.35 -* @publishedAll
  144.36 -* @released
  144.37 -*/
  144.38 -class TUid;
  144.39 -/**
  144.40 -*UID of the Smart Message Parser DLL.
  144.41 -* @publishedPartner
  144.42 -* @released
  144.43 -*/
  144.44 -const TUid KUidSmartMessageParserDll    = { 0x10001251};
  144.45 -/**
  144.46 -* BIO specific error/panic code base. 
  144.47 -* @publishedPartner
  144.48 -* @released
  144.49 -*/
  144.50 -const TInt KBIOMessageBaseError				= -505;
  144.51 -/**
  144.52 -* BIO message not found error. 
  144.53 -* @publishedPartner
  144.54 -* @released
  144.55 -*/
  144.56 -const TInt KBIOMessageNotFound				= KBIOMessageBaseError;
  144.57 -/**
  144.58 -* BIO server MTM already active error. 
  144.59 -* @publishedPartner
  144.60 -* @released
  144.61 -*/
  144.62 -const TInt KBIOMessageSvrMtmNotInactive		= KBIOMessageBaseError-1;
  144.63 -/**
  144.64 -* No BIO parser error. 
  144.65 -* @publishedPartner
  144.66 -* @released
  144.67 -*/
  144.68 -const TInt KBIOMessageNoParserCreated		= KBIOMessageBaseError-2;  
  144.69 -/** 
  144.70 -* BIO parser in use error. 
  144.71 -* @publishedPartner
  144.72 -* @released
  144.73 -*/
  144.74 -const TInt KBIOMessageParserDllStillInUse	= KBIOMessageBaseError-3;  
  144.75 -/**    
  144.76 -* BIO operation already active error. 
  144.77 -* @publishedPartner
  144.78 -* @released
  144.79 -*/
  144.80 -const TInt KBIOMessageOperationNotInactive	= KBIOMessageBaseError-4;
  144.81 -/**
  144.82 -* BIO server MTM operation not supported. 
  144.83 -* @publishedPartner
  144.84 -* @released
  144.85 -*/
  144.86 -const TInt KBIOMessageSvrNotSupported		= KBIOMessageBaseError-5;
  144.87 -/**
  144.88 -* Unused. 
  144.89 -* @internalComponent
  144.90 -* @removed
  144.91 -*/
  144.92 -const TUid KUidMsvNbsEditor={0x10001264};
  144.93 -
  144.94 -//  New BIO Messaging TUids
  144.95 -/**
  144.96 -* Stream ID used for storing parsed BIO data.
  144.97 -* @internalAll
  144.98 -* @released
  144.99 -*/
 144.100 -const TUid KUidMsvBIODataStream			= {0x10005268}; // stream used for storing parsed data
 144.101 -
 144.102 -//  BIO Mtm components
 144.103 -
 144.104 -/**
 144.105 -* BIO message type UID. 
 144.106 -* @publishedAll
 144.107 -* @released
 144.108 -*/
 144.109 -const TUid KUidBIOMessageTypeMtm		= {0x10001262};
 144.110 -/**
 144.111 -* BIO client MTM UID. 
 144.112 -* @internalTechnology
 144.113 -* @released
 144.114 -*/
 144.115 -const TUid KUidBIOMessageClientMtmDll	= {0x1000125A}; //previously NBSC, now BIOC
 144.116 -/**
 144.117 -* BIO server MTM UID. 
 144.118 -* @internalTechnology
 144.119 -* @released
 144.120 -*/
 144.121 -const TUid KUidBIOMessageServerMtmDll	= {0x1000125C}; //previously NBSS, now BIOS
 144.122 -/**
 144.123 -* BIO UI MTM UID. 
 144.124 -* @internalTechnology
 144.125 -* @released
 144.126 -*/
 144.127 -const TUid KUidBIOMessageUiLayerMtmDll	= {0x10001265}; //previously NBUM, now BIUM
 144.128 -/**
 144.129 -* BIO message viewer UID. 
 144.130 -* @internalTechnology
 144.131 -* @released
 144.132 -*/
 144.133 -const TUid KUidBIOMessageViewerApp		= {0x10001264}; //previously NBED,now BIED
 144.134 -
 144.135 -#endif *__BIOUTILS_H__
   145.1 --- a/epoc32/include/bmpancli.h	Tue Mar 16 16:12:26 2010 +0000
   145.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   145.3 @@ -1,179 +0,0 @@
   145.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   145.5 -// All rights reserved.
   145.6 -// This component and the accompanying materials are made available
   145.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   145.8 -// which accompanies this distribution, and is available
   145.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  145.10 -//
  145.11 -// Initial Contributors:
  145.12 -// Nokia Corporation - initial contribution.
  145.13 -//
  145.14 -// Contributors:
  145.15 -//
  145.16 -// Description:
  145.17 -//
  145.18 -
  145.19 -
  145.20 -#if !defined(__BMPANCLI_H__)
  145.21 -#define __BMPANCLI_H__
  145.22 -
  145.23 -#include <e32base.h>
  145.24 -#include <w32std.h>
  145.25 -#include <fbs.h>
  145.26 -
  145.27 -//
  145.28 -// CFrameData
  145.29 -//
  145.30 -
  145.31 -
  145.32 -/** 
  145.33 -Encapsulates the information required for one frame of an animation. 
  145.34 -
  145.35 -Each animation frame includes a bitmap that is displayed in a specified position 
  145.36 -for a specified length of time. You can optionally include a mask that either 
  145.37 -hides part of the bitmap, or makes part of the bitmap transparent so that the 
  145.38 -background can be seen.
  145.39 -
  145.40 -You will probably need to define several frames for a complete animation. 
  145.41 -When you have defined the frames you require, use CBitmapAnimClientData to 
  145.42 -construct the animation itself. 
  145.43 -
  145.44 -@publishedAll
  145.45 -@released 
  145.46 -*/
  145.47 -class CBitmapFrameData : public CBase
  145.48 -	{
  145.49 -public:
  145.50 -	IMPORT_C ~CBitmapFrameData();
  145.51 -	IMPORT_C static CBitmapFrameData* NewL();
  145.52 -	IMPORT_C static CBitmapFrameData* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask=NULL);
  145.53 -	IMPORT_C static CBitmapFrameData* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIntervalInMilliSeconds, TPoint aPosition);
  145.54 -//
  145.55 -	IMPORT_C void SetBitmap(CFbsBitmap* aBitmap);
  145.56 -	IMPORT_C void SetMask(CFbsBitmap* aMask);
  145.57 -	IMPORT_C void SetPosition(TPoint aPosition);
  145.58 -	IMPORT_C void SetInterval(TInt aIntervalInMilliSeconds);
  145.59 -	IMPORT_C void SetBitmapsOwnedExternally(TBool aOwnedExternally);
  145.60 -//
  145.61 -	IMPORT_C CFbsBitmap* Bitmap() const;
  145.62 -	IMPORT_C CFbsBitmap* Mask() const;
  145.63 -	IMPORT_C TInt IntervalInMilliSeconds() const;
  145.64 -	IMPORT_C TPoint Position() const;
  145.65 -	IMPORT_C TBool BitmapsOwnedExternally() const;
  145.66 -private:
  145.67 -	CBitmapFrameData();
  145.68 -private:
  145.69 -	CFbsBitmap* iBitmap;
  145.70 -	CFbsBitmap* iMaskBitmap;
  145.71 -	TBool iBitmapsOwnedExternally;
  145.72 -	TInt iIntervalInMilliSeconds;
  145.73 -	TPoint iPosition;
  145.74 -	};
  145.75 -
  145.76 -
  145.77 -//
  145.78 -// CBitmapAnimClientData
  145.79 -//
  145.80 -
  145.81 -
  145.82 -/** 
  145.83 -Encapsulates one or more animation frames into an entire animation.
  145.84 -
  145.85 -In addition to specifying the frames you wish to include in your animation, 
  145.86 -you can also specify:
  145.87 -
  145.88 -- whether the animation will flash
  145.89 -
  145.90 -- whether the animation is played once, or continuously
  145.91 -
  145.92 -- the background frame that is drawn to clear each frame in the animation
  145.93 -
  145.94 -You can also specify a default frame interval that is used for all frames 
  145.95 -in an animation. If the interval is already set for any of the individual 
  145.96 -frames, that takes precedence.
  145.97 -
  145.98 -When you have defined your animation, use RBitmapAnim to play the animation. 
  145.99 -
 145.100 -@publishedAll 
 145.101 -@released 
 145.102 -*/
 145.103 -class CBitmapAnimClientData : public CBase
 145.104 -	{
 145.105 -public:
 145.106 -	/** Animation play mode flags. 
 145.107 -
 145.108 -	The animation can be played in any of the ways described below. */
 145.109 -	enum TPlayMode
 145.110 -		{
 145.111 -		/** Plays the animation once, from the first frame to the last one. */
 145.112 -		EPlay		= 0x00,
 145.113 -		/** Plays the animation from the first frame to the last one continuously. */
 145.114 -		ECycle		= 0x01,
 145.115 -		/** Plays the animation from the first frame to the last one then from the last 
 145.116 -		frame to the first continuously. */
 145.117 -		EBounce		= 0x02
 145.118 -		};
 145.119 -public:
 145.120 -	IMPORT_C static CBitmapAnimClientData* NewL();
 145.121 -	IMPORT_C ~CBitmapAnimClientData();
 145.122 -//
 145.123 -	IMPORT_C void AppendFrameL(CBitmapFrameData* aFrame);
 145.124 -	IMPORT_C void ResetFrameArray();
 145.125 -	IMPORT_C void SetBackgroundFrame(CBitmapFrameData* aBackgroundFrame);
 145.126 -	IMPORT_C void SetFlash(TBool aFlash);
 145.127 -	IMPORT_C void SetFrameInterval(TInt aFrameIntervalInMilliSeconds);
 145.128 -	IMPORT_C void SetPlayMode(TPlayMode aPlayMode);
 145.129 -//
 145.130 -	IMPORT_C CBitmapFrameData* BackgroundFrame() const;
 145.131 -	IMPORT_C TBool Flash() const;
 145.132 -	IMPORT_C const CArrayPtrFlat<CBitmapFrameData>& FrameArray() const;
 145.133 -	IMPORT_C TInt FrameIntervalInMilliSeconds() const;
 145.134 -	IMPORT_C TPlayMode PlayMode() const;
 145.135 -//
 145.136 -	IMPORT_C TInt DurationInMilliSeconds() const;
 145.137 -	IMPORT_C TSize Size() const;
 145.138 -private:
 145.139 -	CBitmapAnimClientData();
 145.140 -private:
 145.141 -	TBool iFlash;
 145.142 -	TPlayMode iPlayMode;
 145.143 -	TInt iFrameIntervalInMilliSeconds;
 145.144 -	CArrayPtrFlat<CBitmapFrameData> iFrameArray;
 145.145 -	CBitmapFrameData* iBackgroundFrame;
 145.146 -	};
 145.147 -
 145.148 -
 145.149 -
 145.150 -/** 
 145.151 -Enables a client to package animation data, and send it to the window server 
 145.152 -for display.
 145.153 -
 145.154 -Before using RBitmapAnim, a client must instantiate an RAnimDll. This provides 
 145.155 -a reference to the window server DLL that runs the animation specified through 
 145.156 -the RBitmapAnim() object. To complete construction, call ConstructL(). 
 145.157 -
 145.158 -@publishedAll 
 145.159 -@released 
 145.160 -*/
 145.161 -class RBitmapAnim : public RAnim
 145.162 -	{
 145.163 -public:
 145.164 -	IMPORT_C RBitmapAnim(RAnimDll& aAnimDll);
 145.165 -	IMPORT_C void ConstructL(const RWindowBase& aWindow);
 145.166 -	IMPORT_C void DisplayFrameL(TInt aIndex);
 145.167 -	IMPORT_C void SetBitmapAnimDataL(const CBitmapAnimClientData& aBitmapAnimData);
 145.168 -	IMPORT_C void SetFlashL(TBool aFlash);
 145.169 -	IMPORT_C void SetFrameIntervalL(TInt aFrameIntervalInMilliSeconds);
 145.170 -	IMPORT_C void SetPlayModeL(CBitmapAnimClientData::TPlayMode aPlayMode);
 145.171 -	IMPORT_C void StartL();
 145.172 -	IMPORT_C void StopL();
 145.173 -	IMPORT_C void SetNumberOfCyclesL(TInt aNumberOfCycles);
 145.174 -	IMPORT_C void SetPositionL(TPoint aPosition);
 145.175 -private:
 145.176 -	void SetAttributesL(const CBitmapAnimClientData& aBitmapAnimData);
 145.177 -	void SetBackgroundFrameL(const CBitmapFrameData& aFrame);
 145.178 -	void SetFrameArrayL(const CArrayPtrFlat<CBitmapFrameData>& aFrameArray);
 145.179 -	void SetFrameL(const CBitmapFrameData& aFrame, TInt aOpCode);
 145.180 -	};
 145.181 -
 145.182 -#endif
   146.1 --- a/epoc32/include/bmpanconsts.h	Tue Mar 16 16:12:26 2010 +0000
   146.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   146.3 @@ -1,42 +0,0 @@
   146.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   146.5 -// All rights reserved.
   146.6 -// This component and the accompanying materials are made available
   146.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   146.8 -// which accompanies this distribution, and is available
   146.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  146.10 -//
  146.11 -// Initial Contributors:
  146.12 -// Nokia Corporation - initial contribution.
  146.13 -//
  146.14 -// Contributors:
  146.15 -//
  146.16 -// Description:
  146.17 -//
  146.18 -
  146.19 -
  146.20 -#if !defined(__BMPANCONSTS_H__)
  146.21 -#define __BMPANCONSTS_H__
  146.22 -
  146.23 -/**
  146.24 -TBitmapAnimCommand
  146.25 -
  146.26 -@internalComponent
  146.27 -*/
  146.28 -enum TBitmapAnimCommand
  146.29 -	{
  146.30 -	EBitmapAnimCommandSetBackgroundFrame,
  146.31 -	EBitmapAnimCommandSetDataFrame,
  146.32 -	EBitmapAnimCommandSetFlash,
  146.33 -	EBitmapAnimCommandSetFrameIndex,
  146.34 -	EBitmapAnimCommandSetFrameInterval,
  146.35 -	EBitmapAnimCommandSetNumberOfCycles,
  146.36 -	EBitmapAnimCommandSetPlayMode,
  146.37 -	EBitmapAnimCommandSetPosition,
  146.38 -	EBitmapAnimCommandStartAnimation,
  146.39 -	EBitmapAnimCommandStopAnimation,	
  146.40 -	EBitmapAnimCommandStartAnimationAndKeepLastFrame,
  146.41 -	EBitmapAnimCommandResetFrameArray,
  146.42 -	EBitmapAnimCommandClearDataFrames
  146.43 -	};
  146.44 -
  146.45 -#endif
   147.1 --- a/epoc32/include/bmpansrv.h	Tue Mar 16 16:12:26 2010 +0000
   147.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   147.3 @@ -1,328 +0,0 @@
   147.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   147.5 -// All rights reserved.
   147.6 -// This component and the accompanying materials are made available
   147.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   147.8 -// which accompanies this distribution, and is available
   147.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  147.10 -//
  147.11 -// Initial Contributors:
  147.12 -// Nokia Corporation - initial contribution.
  147.13 -//
  147.14 -// Contributors:
  147.15 -//
  147.16 -// Description:
  147.17 -//
  147.18 -
  147.19 -
  147.20 -
  147.21 -/**
  147.22 - @file
  147.23 - @internalComponent 
  147.24 -*/
  147.25 -
  147.26 -#if !defined(__BMPANSRV_H__)
  147.27 -#define __BMPANSRV_H__
  147.28 -
  147.29 -#include <e32std.h>
  147.30 -#include <w32adll.h>
  147.31 -#include <bmpanconsts.h>
  147.32 -#include "bmpancli.h"
  147.33 -#include <e32math.h>
  147.34 -
  147.35 -
  147.36 -
  147.37 -enum TBitmapAnimServerPanic
  147.38 -	{
  147.39 -	EAnimationServerPanicIndexOutOfRange,
  147.40 -	EAnimationServerPanicFrameIntervalNegative
  147.41 -	};
  147.42 -
  147.43 -// For packaging the new animation position offset
  147.44 -struct SBitmapAnimNewPosition
  147.45 -	{
  147.46 -	TPoint iPosition;
  147.47 -	};
  147.48 -
  147.49 -// For packaging the new animation index
  147.50 -struct SBitmapAnimIndexFrame
  147.51 -	{
  147.52 -	TInt iIndex;
  147.53 -	};
  147.54 -
  147.55 -// For packaging the number of cycles
  147.56 -struct SBitmapAnimNumberOfCycles
  147.57 -	{
  147.58 -	TInt iCycles;
  147.59 -	};
  147.60 -
  147.61 -
  147.62 -
  147.63 -/**
  147.64 - TFrameData
  147.65 -
  147.66 - This class is used for packaging the data of one frame.
  147.67 -*/
  147.68 -class TFrameData
  147.69 -	{
  147.70 -public:
  147.71 -	TInt iBitmapHandle;
  147.72 -	TInt iMaskBitmapHandle;
  147.73 -	TPoint iPosition;
  147.74 -	TInt iIntervalInMilliSeconds;			// the time is expressed in ms
  147.75 -	};
  147.76 -
  147.77 -
  147.78 -
  147.79 -/**
  147.80 - TBmpAnimAttributes
  147.81 -
  147.82 - This class is used for packaging the attriutes of the animation.
  147.83 -*/
  147.84 -class TBmpAnimAttributes
  147.85 -	{
  147.86 -public:
  147.87 -	TBool iFlash;
  147.88 -	TInt iFrameIntervalInMilliSeconds;
  147.89 -	CBitmapAnimClientData::TPlayMode iPlayMode;
  147.90 -	};
  147.91 -
  147.92 -
  147.93 -
  147.94 -
  147.95 -/**
  147.96 - class MBitmapAnimTimerObserver
  147.97 -*/
  147.98 -class MBitmapAnimTimerObserver
  147.99 -	{
 147.100 -public:
 147.101 -	virtual void DisplayNextFrameL()=0;
 147.102 -	};
 147.103 -
 147.104 -
 147.105 -
 147.106 -/**
 147.107 - class CBitmapAnimTimer
 147.108 -
 147.109 - This class is used to determine when to swap the current frame with the next one.
 147.110 -*/
 147.111 -class CBitmapAnimTimer : public CTimer
 147.112 -	{
 147.113 -public:
 147.114 -	~CBitmapAnimTimer();
 147.115 -	static CBitmapAnimTimer* NewL(MBitmapAnimTimerObserver* aObserver);
 147.116 -	void RunL();
 147.117 -private:
 147.118 -	CBitmapAnimTimer(MBitmapAnimTimerObserver* aObserver);
 147.119 -	void ConstructL();
 147.120 -private:
 147.121 -	MBitmapAnimTimerObserver* iAnimate;
 147.122 -	};
 147.123 -
 147.124 -
 147.125 -
 147.126 -/**
 147.127 - class MBitmapAnimFlashTimerObserver
 147.128 -*/
 147.129 -
 147.130 -class MBitmapAnimFlashTimerObserver
 147.131 -	{
 147.132 -public:
 147.133 -	virtual void FlashFrame(TBool aFlash)=0;
 147.134 -	};
 147.135 -
 147.136 -
 147.137 -
 147.138 -/**
 147.139 - class CBitmapAnimFlashTimer
 147.140 -*/
 147.141 -
 147.142 -class CBitmapAnimFlashTimer : public CTimer
 147.143 -	{
 147.144 -public:
 147.145 -	~CBitmapAnimFlashTimer();
 147.146 -	static CBitmapAnimFlashTimer* NewL(MBitmapAnimFlashTimerObserver* aObserver);
 147.147 -	void DoCancel();
 147.148 -	void RunL();
 147.149 -private:
 147.150 -	CBitmapAnimFlashTimer(MBitmapAnimFlashTimerObserver* aObserver);
 147.151 -	void ConstructL();
 147.152 -private:
 147.153 -	MBitmapAnimFlashTimerObserver* iAnimate;
 147.154 -	TBool iFlash;
 147.155 -	};
 147.156 -
 147.157 -
 147.158 -
 147.159 -/**
 147.160 - class CBitmapAnimFrameData
 147.161 -
 147.162 - This class encapsulates the information of one frame.
 147.163 -*/
 147.164 -
 147.165 -class CBitmapAnimFrameData : public CBase
 147.166 -	{
 147.167 -public:
 147.168 -	static CBitmapAnimFrameData* NewL();
 147.169 -	static CBitmapAnimFrameData* NewLC();
 147.170 -	~CBitmapAnimFrameData();
 147.171 -	void FillFrameDataL(const TFrameData& aFrameDataArg);
 147.172 -	void CheckAndCreateBitmapsL();
 147.173 -	
 147.174 -private:
 147.175 -	CBitmapAnimFrameData();
 147.176 -	void InitialiseMembers();
 147.177 -	
 147.178 -public:
 147.179 -	CFbsBitmap* iBitmap;
 147.180 -	CFbsBitmap* iMaskBitmap;
 147.181 -	TPoint iPosition;
 147.182 -	TTimeIntervalMicroSeconds32 iInterval;
 147.183 -	};
 147.184 -
 147.185 -
 147.186 -
 147.187 -/**
 147.188 - class CBitmapAnim
 147.189 -
 147.190 - This class encapsulates the enire animation: attributes and frames.
 147.191 -*/
 147.192 -
 147.193 -class CBitmapAnim : public CFreeTimerWindowAnim, MBitmapAnimTimerObserver//, MBitmapAnimFlashTimerObserver
 147.194 -	{
 147.195 -public:
 147.196 -	~CBitmapAnim();
 147.197 -	static CBitmapAnim* NewL();
 147.198 -private:
 147.199 -	CBitmapAnim();
 147.200 -private:
 147.201 -	enum TAnimateFlags
 147.202 -		{
 147.203 -//	State
 147.204 -		ERunning				= 0x0001,
 147.205 -		EFlashing				= 0x0002,
 147.206 -		EFrozen					= 0x0004,
 147.207 -//	Play mode
 147.208 -		EPlayModeCycle			= 0x0010,
 147.209 -		EPlayModeBounce			= 0x0020,
 147.210 -		EPlayForwards			= 0x0040,
 147.211 -		EPlayBackwards			= 0x0080,
 147.212 -//	General
 147.213 -		EFlash									= 0x0100,
 147.214 -		EBackgroundBitmapProvided				= 0x0200,
 147.215 -		EWindowContentsInitialized				= 0x0400,
 147.216 -		ENoBitmapWindowRestoring				= 0x0800,
 147.217 -		EChangedBackgroundFramePending			= 0x1000,
 147.218 -		EBackgroundShouldIncludeWindowContents	= 0x2000,
 147.219 -		EDisplayLastFrameWhenFinished			= 0x4000,
 147.220 -		EBackgroundMaskProvided					= 0x8000
 147.221 -		};
 147.222 -
 147.223 -private: //Pure Virtual function from CAnim
 147.224 -	virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
 147.225 -	virtual void Command(TInt aOpcode, TAny* aArgs);
 147.226 -	virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
 147.227 -	virtual void Animate(TDateTime* aDateTime);
 147.228 -	virtual void Redraw();
 147.229 -	virtual void FocusChanged(TBool aState);
 147.230 -private: //Pure Virtual function from MEventHandler
 147.231 -	virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
 147.232 -private: //Pure Virtual function from MBitmapAnimTimerObserver
 147.233 -	virtual void DisplayNextFrameL();
 147.234 -private: //Pure Virtual function from MBitmapAnimFlashTimerObserver
 147.235 -	virtual void FlashFrame(TBool aFlash);
 147.236 -private:
 147.237 -	void AppendFrameL(const TFrameData& aFrameData);
 147.238 -	inline TInt Count() const;
 147.239 -	void DisplayFrame(TInt aPreviousIndex=-1);
 147.240 -	void DrawBitmap(TInt aPreviousIndex=-1, TBool aRedraw=EFalse);
 147.241 -	inline TBool IsFrameDisplayable() const;
 147.242 -	inline TBool IsRunning() const;
 147.243 -	inline TBool IsFrozen() const;
 147.244 -	void ResetAnimation();
 147.245 -	void ClearFrame(TInt aIndex);
 147.246 -	void ClearFrameNow(TInt aIndex);
 147.247 -	void RenderFrameBackground(TInt aIndex);
 147.248 -	TRect CalcFrameRect(TInt aIndex);
 147.249 -	void SetBackgroundFrameL(TFrameData aFrameDataArg);
 147.250 -	void SetFlash(TBmpAnimAttributes aFlash);
 147.251 -	void SetFrameInterval(TBmpAnimAttributes aFrameInterval);
 147.252 -	TInt SetIndexFrame(SBitmapAnimIndexFrame aIndexFrame);
 147.253 -	void SetNumberOfCycles(SBitmapAnimNumberOfCycles aNumberOfCycles);
 147.254 -	void SetPlayMode(TBmpAnimAttributes aPlayMode);
 147.255 -	void SetPosition(SBitmapAnimNewPosition aNewPosition);
 147.256 -	void StartAnimationL();
 147.257 -	void StopAnimation();
 147.258 -	void StoreWindowContentsToBackgroundBitmapL(const TRegion* aRegion);
 147.259 -	void UpdateCurrentIndex();
 147.260 -	inline TRect WindowRect() const;
 147.261 -	CFbsBitmap* CreateRestoringBitmapL(TPoint& aPosition, TInt aPreviousIndex);
 147.262 -	void UpdateBackgroundBitmapIfNeeded(const TRegion* aRegion, TRect aBackgroundBitmapScreenRect);
 147.263 -	static TBool FrameNeedsRedrawing(const TRegion* aRedrawRegion, TRect aFrameScreenRect);
 147.264 -	void ResetFrameArray();
 147.265 -	void ClearFrameData();
 147.266 -	TBool CanDrawNextFrameWithoutErasingPreviousFrameL(TInt aPreviousIndex);
 147.267 -	TBool CompareBitmapsL(CFbsBitmap* aBmp1, CFbsBitmap* aBmp2);
 147.268 -	
 147.269 -private:
 147.270 -	RPointerArray<CBitmapAnimFrameData> iBitmapAnimFrameDataArray;
 147.271 -	CBitmapAnimTimer* iAnimTimer;
 147.272 -	CBitmapAnimFlashTimer* iFlashTimer;
 147.273 -	CBitmapAnimFrameData* iBackgroundFrame;
 147.274 -	CFbsBitmap*  iBackgroundBitmap;
 147.275 -	CFbsBitmapDevice* iBackgroundbitmapDevice;
 147.276 -	CFbsBitGc* iBackgroundbitmapGc;
 147.277 -
 147.278 -//
 147.279 -	TInt iDummy;
 147.280 -	TInt iFlags;
 147.281 -	TInt iIndex;
 147.282 -	TInt iNumberOfCycles;
 147.283 -	TPoint iPosition;
 147.284 -	TInt iWindowConfig;
 147.285 -	TTimeIntervalMicroSeconds32 iFrameInterval;
 147.286 -//
 147.287 -	CFbsBitGc* iRestoringGc;	
 147.288 -	};
 147.289 -
 147.290 -// Returns the number of frames store in the frame array.
 147.291 -inline TInt CBitmapAnim::Count() const
 147.292 -	{ return iBitmapAnimFrameDataArray.Count(); }
 147.293 -
 147.294 -// Returns ETrue every time the index frame is valid, otherwise it returns EFalse.
 147.295 -inline TBool CBitmapAnim::IsFrameDisplayable() const
 147.296 -	{ return ( (iIndex >= 0) && iBitmapAnimFrameDataArray[iIndex]->iBitmap ); }
 147.297 -
 147.298 -// Returns ETrue if the animation is running, otherwise it returns EFalse.
 147.299 -inline TBool CBitmapAnim::IsRunning() const
 147.300 -	{ return iFlags&ERunning; }
 147.301 -
 147.302 -//Returns ETrue if the animation is frozen (app is not in the foreground)
 147.303 -inline TBool CBitmapAnim::IsFrozen() const
 147.304 -{ return iFlags&EFrozen; }
 147.305 -
 147.306 -// Returns the available window rect.
 147.307 -inline TRect CBitmapAnim::WindowRect() const
 147.308 -	{ return TRect(TPoint(0, 0), iWindowFunctions->WindowSize()); }
 147.309 -
 147.310 -
 147.311 -
 147.312 -
 147.313 -/**
 147.314 - CBitmapAnimDll class
 147.315 -*/
 147.316 -
 147.317 -class CBitmapAnimDll : public CAnimDll
 147.318 -	{
 147.319 -public:
 147.320 -	CBitmapAnimDll();
 147.321 -	virtual CAnim* CreateInstanceL(TInt aType);
 147.322 -	};
 147.323 -
 147.324 -
 147.325 -/**
 147.326 - global functions
 147.327 -*/
 147.328 -GLREF_C void Panic(TBitmapAnimServerPanic aReason);
 147.329 -
 147.330 -
 147.331 -#endif
   148.1 --- a/epoc32/include/bsp.h	Tue Mar 16 16:12:26 2010 +0000
   148.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   148.3 @@ -1,254 +0,0 @@
   148.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   148.5 -// All rights reserved.
   148.6 -// This component and the accompanying materials are made available
   148.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   148.8 -// which accompanies this distribution, and is available
   148.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  148.10 -//
  148.11 -// Initial Contributors:
  148.12 -// Nokia Corporation - initial contribution.
  148.13 -//
  148.14 -// Contributors:
  148.15 -//
  148.16 -// Description:
  148.17 -// BSP.H (Base Script Parser)
  148.18 -// Abstract class for different Parsers.
  148.19 -// 
  148.20 -//
  148.21 -
  148.22 -
  148.23 -#if !defined(__BSP_H__)
  148.24 -#define __BSP_H__
  148.25 -
  148.26 -#if !defined(__MTCLREG_H__)
  148.27 -#include <mtclreg.h>
  148.28 -#endif
  148.29 -
  148.30 -#if !defined(__MTCLBASE_H__)
  148.31 -#include <mtclbase.h>
  148.32 -#endif
  148.33 -
  148.34 -#include <e32base.h>
  148.35 -#if !defined(__S32STRM_H__)
  148.36 -#include <s32strm.h>
  148.37 -#endif
  148.38 -
  148.39 -#include <msvstd.h>
  148.40 -// CRichText etc. includes
  148.41 -#include <txtrich.h>
  148.42 -#include <txtfmlyr.h>
  148.43 -
  148.44 -#include <bif.h>
  148.45 -
  148.46 -
  148.47 -
  148.48 -// Symbols:
  148.49 -/** Space character. */
  148.50 -#define KCharSpace          ' '
  148.51 -/** Tab character. */
  148.52 -#define KCharTab            '\t'
  148.53 -/** Line feed character. */
  148.54 -#define KCharLineFeed       '\n'
  148.55 -
  148.56 -
  148.57 -// Define some generic error codes:
  148.58 -/** BIO error code base. */
  148.59 -const TInt KBspBaseError					= (-500);
  148.60 -
  148.61 -/** Invalid BIO message error code. */
  148.62 -const TInt KBspInvalidMessage				= (KBspBaseError);
  148.63 -/** Invalid smart message token error code. */
  148.64 -const TInt KBspSmartMessageInvalidToken		= (KBspBaseError-1);
  148.65 -/** No smart message parser defined error code. */
  148.66 -const TInt KBspSmartMessageNoParserDefined	= (KBspBaseError-2);
  148.67 -
  148.68 -// Parsed field class for use by parsers.
  148.69 -class CParsedField : public CBase
  148.70 -/** Represents a single token-value pair for a given field in a BIO/smart message 
  148.71 -grammar. 
  148.72 -@publishedAll
  148.73 -@released
  148.74 -*/
  148.75 -{
  148.76 -public:
  148.77 -	IMPORT_C CParsedField();
  148.78 -	IMPORT_C ~CParsedField();
  148.79 -
  148.80 -	IMPORT_C TPtrC FieldName() const;
  148.81 -	IMPORT_C void SetFieldNameL( const TDesC& aFieldName);
  148.82 -	IMPORT_C TPtrC FieldValue() const;
  148.83 -	IMPORT_C void SetFieldValueL( const TDesC& aFieldValue);
  148.84 -	IMPORT_C TBool MandatoryField() const;
  148.85 -	IMPORT_C void SetMandatoryField(TBool aMandatoryField);
  148.86 -
  148.87 -	IMPORT_C void InternalizeL(RReadStream& aStream);
  148.88 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  148.89 -private:
  148.90 -	void Reset();
  148.91 -private:
  148.92 -	HBufC* iFieldName;
  148.93 -	HBufC* iFieldValue;
  148.94 -	TBool  iMandatoryField;
  148.95 -};
  148.96 -
  148.97 -// Forward declarations:
  148.98 -class CMsvServerEntry;
  148.99 -class CMsvEntry;
 148.100 -class CRegisteredParserDll;
 148.101 -class RMsvReadStream;
 148.102 -class RMsvWriteStream;
 148.103 -class CMsvStore;
 148.104 -class CSmsMessage;
 148.105 -
 148.106 -
 148.107 -
 148.108 -/** Base class for BIO message parsers V2.
 148.109 -
 148.110 -Concrete derived classes are implemented in parser DLL's to parse particular 
 148.111 -types of BIO message.
 148.112 -
 148.113 -On receiving an appropriate command (see TBioOperation), the BIO server MTM 
 148.114 -loads the appropriate parser and passes the message body to it for interpretation. 
 148.115 -In fact, the parser interface expects the parser to divide its operation into 
 148.116 -two stages: 
 148.117 -
 148.118 -1. parsing: which involves extracting information from the raw message body and 
 148.119 -storing it in a structured format. The parsing stage can also alter the message 
 148.120 -body, and create files in the directory associated with the message (e.g. 
 148.121 -parsing a ring tones message will generate a ring tone file).
 148.122 -
 148.123 -2. processing: which involves using the extracted information to achieve the 
 148.124 -purpose of the BIO message (e.g. setting some phone configuration setttings).
 148.125 -
 148.126 -This separation allows, for example, a UI to display the parsed information 
 148.127 -to the user for confirmation, before it is acted upon. For some parsers, however, 
 148.128 -this two stage division is not sensible, in which case they implement only 
 148.129 -the first.
 148.130 -
 148.131 -The base class provides a pointer iSettings to reference the raw message data, 
 148.132 -and an array of token-value pairs, iParsedFieldArray, for storing parsed information 
 148.133 -(if this is appropriate). 
 148.134 -@publishedAll
 148.135 -@released
 148.136 -*/
 148.137 -class CBaseScriptParser2: public CActive
 148.138 -	{
 148.139 -public:
 148.140 -	IMPORT_C CBaseScriptParser2(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);
 148.141 -	IMPORT_C ~CBaseScriptParser2();
 148.142 -
 148.143 -	/** Called by the BIO server MTM to asynchronously parse message body data.
 148.144 -	
 148.145 -	When parsing is complete, the function should indicate this by setting the 
 148.146 -	message's index field iMtmData3 to 1.
 148.147 -	
 148.148 -	The function should leave if the buffer cannot be parsed successfully.
 148.149 -	
 148.150 -	@param aStatus Asynchronous status word
 148.151 -	@param aSms Buffer to parse */
 148.152 -	virtual void ParseL(TRequestStatus& aStatus, const TDesC& aSms)=0; //parses sms data into CParsedField
 148.153 -	/** Called by the BIO server MTM to asynchronously process the parsed data.
 148.154 -	
 148.155 -	The function takes appropriate parser-specific action on the results of a 
 148.156 -	previous call to ParseL().
 148.157 -	
 148.158 -	When processing is complete, the function should indicate this by setting 
 148.159 -	the message's index field iMtmData3 to 2.
 148.160 -	
 148.161 -	The function should leave if processing is not successful.
 148.162 -	
 148.163 -	@param aStatus Asynchronous status word */
 148.164 -	virtual void ProcessL(TRequestStatus& aStatus)=0; //stores parsed data into streams and data base
 148.165 -
 148.166 -	IMPORT_C TUid ParserUid();
 148.167 -	IMPORT_C void RestoreL(CMsvStore& aMessageStore);
 148.168 -	IMPORT_C void StoreL(CMsvStore& aMsvStore) const;
 148.169 -	IMPORT_C void RestoreL(const TFileName& aFileName);
 148.170 -	IMPORT_C void StoreL(const TFileName& aFileName) const;
 148.171 -	IMPORT_C void ResetL();
 148.172 -	
 148.173 -protected:
 148.174 -//	Parsing:
 148.175 -	IMPORT_C void UnfoldMessageL();
 148.176 -
 148.177 -//	Streaming operations:
 148.178 -	void InternalizeL(RMsvReadStream& aStream);
 148.179 -	void ExternalizeL(RMsvWriteStream& aStream) const;
 148.180 -
 148.181 -protected:
 148.182 -	/** Object that loaded the parser. It contains a reference counter of the use of 
 148.183 -	the parser. */
 148.184 -	CRegisteredParserDll&		iRegisteredParserDll;
 148.185 -	/** The message entry the parser should parse. */
 148.186 -	CMsvEntry&					iEntry;
 148.187 -	/** Connected file server handle. */
 148.188 -	RFs&						iFs;
 148.189 -
 148.190 -	/** Lexer intended for Smart Message use.
 148.191 -	
 148.192 -	This is not used by the base class. */
 148.193 -	TLex						iSms;
 148.194 -	/** Array of token-value pairs.
 148.195 -	
 148.196 -	Derived classes can use this for storing parsed information (if this is appropriate). */
 148.197 -	CArrayPtrSeg<CParsedField>* iParsedFieldArray;
 148.198 -
 148.199 -	/** Flag intended for Smart Message use.
 148.200 -	
 148.201 -	This is not used by the base class. */
 148.202 -	TBool						iSmsParsed;
 148.203 -	/** ID of iEntry. */
 148.204 -	TMsvId						iEntryId;
 148.205 -	
 148.206 -	/** Pointer to message data.
 148.207 -	
 148.208 -	This is not set by the base class. */
 148.209 -	HBufC*						iSettings;
 148.210 -	/** Pointer to SMS data (intended for Smart Message use).
 148.211 -	
 148.212 -	This is not set by the base class. */
 148.213 -    HBufC*						iSmsBuf;                // Local copy of buffer passed to ParseL()
 148.214 -	/** Temporary pointer used by RestoreL(). */
 148.215 -	HBufC8*						iReadBuffer;			// used to restore data from file
 148.216 -	};
 148.217 -
 148.218 - 
 148.219 -/** BIO data location flag values.
 148.220 -
 148.221 -@see TMsvBIOEntry */
 148.222 -enum TMsvBIODataLocation
 148.223 -	{
 148.224 -	/** Unknown. */
 148.225 -	EUnknown,
 148.226 -	/** Parser wrote data into the body text. */
 148.227 -	EBodyText,		// parser wrote data back into richText
 148.228 -	/** Parser wrote data into the parsed fields data stream. */
 148.229 -	EBIODataStream,	// parser wrote data into KUIDMsvBioStream
 148.230 -	/** Parser wrote data into an attachment file. */
 148.231 -	EFile			// parser wrote data into attachment file
 148.232 -	};
 148.233 -
 148.234 -
 148.235 -/** Bearer Independent Object entry.
 148.236 -Specialises the TMsvEntry message entry class to store additional BIO message-specific 
 148.237 -information. 
 148.238 -@internalTechnology
 148.239 -@released
 148.240 -*/
 148.241 -class TMsvBIOEntry : public TMsvEntry
 148.242 -	{
 148.243 -public:
 148.244 -	/** Constructor. */
 148.245 -	TMsvBIOEntry() : TMsvEntry() {};
 148.246 -	void SetBIOParserUid(const TUid aId);
 148.247 -	const TUid BIOParserUid() const;
 148.248 -	void SetLocationOfData(const TMsvBIODataLocation aLocation);
 148.249 -	const TMsvBIODataLocation LocationOfData() const;
 148.250 -
 148.251 -private:
 148.252 -	TMsvBIODataLocation	iLocationOfData;
 148.253 -	};
 148.254 -
 148.255 -#include <bsp.inl>
 148.256 -
 148.257 -#endif
   149.1 --- a/epoc32/include/btmsgtypeuid.h	Tue Mar 16 16:12:26 2010 +0000
   149.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   149.3 @@ -1,36 +0,0 @@
   149.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   149.5 -// All rights reserved.
   149.6 -// This component and the accompanying materials are made available
   149.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   149.8 -// which accompanies this distribution, and is available
   149.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  149.10 -//
  149.11 -// Initial Contributors:
  149.12 -// Nokia Corporation - initial contribution.
  149.13 -//
  149.14 -// Contributors:
  149.15 -//
  149.16 -// Description:
  149.17 -// $Workfile: btmsgtypeuid.h $
  149.18 -// $Author: Stevep $
  149.19 -// $Revision: 8 $
  149.20 -// $Date: 17/12/01 12:02 $
  149.21 -// 
  149.22 -//
  149.23 -
  149.24 -
  149.25 -
  149.26 -/**
  149.27 - @file
  149.28 - @publishedAll
  149.29 - @released
  149.30 -*/
  149.31 -
  149.32 -#if !defined (__BTMSGTYPEUID_H__)
  149.33 -#define __BTMSGTYPEUID_H__
  149.34 -
  149.35 -const TInt32 KUidMsgTypeBtTInt32 = 0x10009ED5;
  149.36 -const TUid KUidMsgTypeBt = {KUidMsgTypeBtTInt32};
  149.37 -const TInt32 KUidBtTechnologyGroup = 0x10009ED6; //used for BtMtm registration details ("\\system\\mtm\\IrMtm.dat")
  149.38 -
  149.39 -#endif // __BTMSGTYPEUID_H__
   150.1 --- a/epoc32/include/cacheman.h	Tue Mar 16 16:12:26 2010 +0000
   150.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   150.3 @@ -1,295 +0,0 @@
   150.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   150.5 -// All rights reserved.
   150.6 -// This component and the accompanying materials are made available
   150.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   150.8 -// which accompanies this distribution, and is available
   150.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  150.10 -//
  150.11 -// Initial Contributors:
  150.12 -// Nokia Corporation - initial contribution.
  150.13 -//
  150.14 -// Contributors:
  150.15 -//
  150.16 -// Description:
  150.17 -//
  150.18 -
  150.19 -#if !defined (__CACHEMAN_H__)
  150.20 -#define __CACHEMAN_H__
  150.21 -
  150.22 -#include <mentact.h>
  150.23 -#include <msvstd.h>
  150.24 -#include <msvapi.h>
  150.25 -
  150.26 -_LIT(KMiutWildCard, "*.*");
  150.27 -
  150.28 -class CImFinder : public CMsgActive
  150.29 -/**
  150.30 -@internalComponent
  150.31 -@released
  150.32 -*/
  150.33 -	{
  150.34 -public:
  150.35 -	IMPORT_C void FindFirstL(TMsvId aRootEntry, TRequestStatus &aStatus);
  150.36 -	IMPORT_C ~CImFinder();
  150.37 -	IMPORT_C virtual void FindNextL(TRequestStatus &aStatus);
  150.38 -	void FindFirstL(const CMsvEntrySelection& aInitialSelection, TRequestStatus &aStatus);
  150.39 -
  150.40 -	class CImEntryStack : public CBase
  150.41 -		{
  150.42 -	public:
  150.43 -		static CImEntryStack* NewL();
  150.44 -		~CImEntryStack();
  150.45 -		inline void PushL(TMsvId aId);
  150.46 -		inline TMsvId PopL();
  150.47 -		inline TBool Empty() const;
  150.48 -		inline void Reset();
  150.49 -
  150.50 -	private:
  150.51 -		void ConstructL();
  150.52 -
  150.53 -		CMsvEntrySelection* iFolders;
  150.54 -		};
  150.55 -
  150.56 -protected:
  150.57 -	void ConstructL();
  150.58 -	CImFinder(CMsvEntry& aEntry);
  150.59 -
  150.60 -private:
  150.61 -	void DoRunL();
  150.62 -
  150.63 -	virtual void AddChildEntriesL() = 0;
  150.64 -	virtual TBool IsRequiredEntryType(TUid aEntryType) const = 0;
  150.65 -
  150.66 -protected:
  150.67 -	CImEntryStack* iEntryStack;
  150.68 -	CMsvEntry& iCurrentEntry;
  150.69 -
  150.70 -private:
  150.71 -	enum TImmfState
  150.72 -		{
  150.73 -		EImmfEntryFound,
  150.74 -		EImmfFindingEntry,
  150.75 -		EImmfNothingFound
  150.76 -		};
  150.77 -
  150.78 -	TImmfState iState;
  150.79 -	};
  150.80 -
  150.81 -
  150.82 -class CImMessageFinder : public CImFinder
  150.83 -/**
  150.84 -@internalComponent
  150.85 -@released
  150.86 -*/
  150.87 -	{
  150.88 -public:
  150.89 -	IMPORT_C static CImMessageFinder* NewL(CMsvEntry& aEntry);
  150.90 -	IMPORT_C static CImMessageFinder* NewLC(CMsvEntry& aEntry);
  150.91 -	
  150.92 -protected:
  150.93 -	virtual void AddChildEntriesL();
  150.94 -	virtual TBool IsRequiredEntryType(TUid aEntryType) const;
  150.95 -
  150.96 -	CImMessageFinder(CMsvEntry& aEntry);
  150.97 -	};
  150.98 -
  150.99 -
 150.100 -class CImEntryFinder : public CImFinder
 150.101 -/**
 150.102 -@internalComponent
 150.103 -@released
 150.104 -*/
 150.105 -	{
 150.106 -public:
 150.107 -	IMPORT_C static CImEntryFinder* NewL(CMsvEntry& aEntry);
 150.108 -	IMPORT_C static CImEntryFinder* NewLC(CMsvEntry& aEntry);
 150.109 -	
 150.110 -protected:
 150.111 -	virtual void AddChildEntriesL();
 150.112 -	virtual TBool IsRequiredEntryType(TUid aEntryType) const;
 150.113 -
 150.114 -	CImEntryFinder(CMsvEntry& aEntry);
 150.115 -	};
 150.116 -
 150.117 -
 150.118 -class CImMessageCounter : public CImFinder
 150.119 -/**
 150.120 -@internalComponent
 150.121 -@released
 150.122 -*/
 150.123 -	{
 150.124 -public:
 150.125 -	IMPORT_C static CImMessageCounter* NewL(CMsvEntry& aEntry);
 150.126 -	IMPORT_C static CImMessageCounter* NewLC(CMsvEntry& aEntry);
 150.127 -	IMPORT_C TInt Count();
 150.128 -	
 150.129 -protected:
 150.130 -	virtual void AddChildEntriesL();
 150.131 -	virtual TBool IsRequiredEntryType(TUid aEntryType) const;
 150.132 -
 150.133 -	CImMessageCounter(CMsvEntry& aEntry);
 150.134 -
 150.135 -private:
 150.136 -	TInt iCount;
 150.137 -	};
 150.138 -
 150.139 -
 150.140 -class CImPruneMessage : public CMsgActive
 150.141 -/** Deletes the body text and attachment data from an individually specified message. 
 150.142 -
 150.143 -Example uses of this class are:
 150.144 -
 150.145 -1. to cleanup after a populating operation has failed
 150.146 -
 150.147 -2. to remove body text and attachment data from remote messages, while preserving 
 150.148 -the message structure 
 150.149 -@publishedPartner 
 150.150 -@released
 150.151 -*/
 150.152 -	{
 150.153 -public:
 150.154 -	IMPORT_C static CImPruneMessage* NewL(CMsvEntry& aEntry, RFs& aFs);
 150.155 -	IMPORT_C static CImPruneMessage* NewLC(CMsvEntry& aEntry, RFs& aFs);
 150.156 -
 150.157 -	IMPORT_C void StartL(TMsvId aMessageEntry, TRequestStatus &aStatus);
 150.158 -	~CImPruneMessage();
 150.159 -	
 150.160 -private:
 150.161 -	CImPruneMessage(CMsvEntry& aEntry, RFs& aFs);
 150.162 -	void ConstructL();
 150.163 -	void DoRunL();
 150.164 -	void DoComplete(TInt& );
 150.165 -	void DoCancel();
 150.166 -	void PruneEntryL();
 150.167 -	void ResetStoreL();
 150.168 -
 150.169 -private:
 150.170 -	enum TImPruningState
 150.171 -		{
 150.172 -		EImPruneUpdatingEntry,
 150.173 -		EImPruneUpdatingFirstEntry,
 150.174 -		EImPruneFindingEntry,
 150.175 -		EImPruneFindFirstEntry,
 150.176 -		EImPruneFindNextEntry
 150.177 -		};
 150.178 -
 150.179 -	TImPruningState iState;
 150.180 -
 150.181 -	CMsvEntry& iCurrentEntry;
 150.182 -	RFs& iFs;
 150.183 -	CImEntryFinder* iEntryFinder;
 150.184 -	CFileMan* iFileManager;
 150.185 -	TMsvId iRootEntryId;
 150.186 -	CMsvOperation* iChangeOperation;
 150.187 -	CMsvStore* iStore;
 150.188 -	};
 150.189 -
 150.190 -struct TImCacheManagerProgress
 150.191 -/** Holds progress of a cache management cleanup operation.
 150.192 -
 150.193 -@see CImCacheManager::ProgressL() 
 150.194 -@publishedAll
 150.195 -@released
 150.196 -*/
 150.197 -	{
 150.198 -public:
 150.199 -	/** Total number of messages to process.
 150.200 -	
 150.201 -	Note that, immediately after a CImCacheManager object is started, the progress 
 150.202 -	operation may return 1 for iTotalMessages and 0 for iMessagesProcessed, regardless 
 150.203 -	of the total number of messages. This is because the counter for the iTotalMessages 
 150.204 -	operates asynchronously and may not have counted all of the messages at that 
 150.205 -	time. */
 150.206 -	TInt iTotalMessages;
 150.207 -	/** Number of messages processed so far. */
 150.208 -	TInt iMessagesProcessed;
 150.209 -	};
 150.210 -
 150.211 -class CImCacheManager : public CMsvOperation
 150.212 -/** Provides management of the local cache of messages in remote mailboxes.
 150.213 -
 150.214 -A mailbox that is being used in disconnected mode allows the user access to 
 150.215 -message data by opening the message directly from the remote mailbox. If the 
 150.216 -required message has been downloaded previously, then it will not necessarily 
 150.217 -need to be downloaded again. This functionality is achieved by preserving 
 150.218 -the message data locally, under the remote service entry. The preserved message 
 150.219 -data acts as a cache to allow the user access to the message without the need 
 150.220 -for it to be downloaded every time. 
 150.221 -
 150.222 -The cache management functionality is required to reduce the amount of memory 
 150.223 -that is consumed by the message cache. CImCacheManager provides a mechanism 
 150.224 -for asynchronously traversing a message tree and for removing text and attachment 
 150.225 -data from messages. Deleting more message data will free up more memory but 
 150.226 -there is a higher chance that a user will need to download a message for a 
 150.227 -second time. 
 150.228 -
 150.229 -CImCacheManager is an abstract base class, which can be specialised to implement 
 150.230 -a filter (Filter()) that decides if data for a message shoulded be deleted: 
 150.231 -for example, deletion could be restricted to 'all read messages over a week 
 150.232 -old,' or, 'all read messages, over 20K in size which are also over a day old.' 
 150.233 -@publishedAll
 150.234 -@released
 150.235 -*/
 150.236 -	{
 150.237 -public:
 150.238 -	IMPORT_C void StartL(TMsvId aRootEntry, TRequestStatus &aStatus);
 150.239 -	IMPORT_C void StartL(const CMsvEntrySelection& aSelection, TRequestStatus &aStatus);
 150.240 -	IMPORT_C ~CImCacheManager();
 150.241 -	IMPORT_C const TDesC8& ProgressL();
 150.242 -	IMPORT_C void DoCancel();
 150.243 -
 150.244 -protected:
 150.245 -	IMPORT_C void ConstructL();
 150.246 -	IMPORT_C CImCacheManager(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus);
 150.247 -
 150.248 -	IMPORT_C void RunL();
 150.249 -
 150.250 -private:
 150.251 -	// Override this function to filter the currently selected message (iCurrentEntry).
 150.252 -	// Return TRUE if the current entry is to be pruned.
 150.253 -	/** Tests if cache cleanup should be performed on a message entry.
 150.254 -	
 150.255 -	After StartL() has been called, this is called once for each message entry. 
 150.256 -	It should return true if the body text and attachment data belonging to the 
 150.257 -	current message, as held in iCurrentEntry, should be deleted, or false if 
 150.258 -	the message should be left unchanged.
 150.259 -	
 150.260 -	This function must be implemented in any classes derived from CImCacheManager.
 150.261 -	
 150.262 -	@return True to clean the entry, false to leave it unchanged */
 150.263 -	virtual TBool Filter() const = 0;
 150.264 -
 150.265 -	void DoRunL();
 150.266 -
 150.267 -	// Remove the store from the currently selected entry
 150.268 -	inline void PruneMessageL();
 150.269 -	
 150.270 -protected:
 150.271 -	/** Message entry currently being processed. */
 150.272 -	CMsvEntry* iCurrentEntry;
 150.273 -
 150.274 -private:
 150.275 -	CMsvSession& iSession;
 150.276 -	CImMessageFinder* iMessageFinder;
 150.277 -	CImMessageCounter* iMessageCounter;
 150.278 -	CMsvOperation* iDeleteOperation;
 150.279 -
 150.280 -	TImCacheManagerProgress iProgress;
 150.281 -	TRequestStatus* iReport;
 150.282 -
 150.283 -	enum TImcmState
 150.284 -		{
 150.285 -		EImcmLookingForMessage,
 150.286 -		EImcmPruningMessages,
 150.287 -		EImcmCountingMessages,
 150.288 -		EImcmSkippingPrune
 150.289 -		};
 150.290 -
 150.291 -	TMsvId iRootEntry;
 150.292 -	TImcmState iState;
 150.293 -	TPckgBuf<TImCacheManagerProgress> iProgressBuf;
 150.294 -
 150.295 -	CMsvEntrySelection* iMessagesToPrune;
 150.296 -	};
 150.297 -
 150.298 -#endif
   151.1 --- a/epoc32/include/calalarm.h	Tue Mar 16 16:12:26 2010 +0000
   151.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   151.3 @@ -1,58 +0,0 @@
   151.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   151.5 -// All rights reserved.
   151.6 -// This component and the accompanying materials are made available
   151.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   151.8 -// which accompanies this distribution, and is available
   151.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  151.10 -//
  151.11 -// Initial Contributors:
  151.12 -// Nokia Corporation - initial contribution.
  151.13 -//
  151.14 -// Contributors:
  151.15 -//
  151.16 -// Description:
  151.17 -//
  151.18 -
  151.19 -#ifndef __CALALARM_H__
  151.20 -#define __CALALARM_H__
  151.21 -
  151.22 -#include <calcontent.h>
  151.23 -
  151.24 -/** Alarm category Id for Calendar alarms
  151.25 -@publishedAll
  151.26 -@released
  151.27 -*/
  151.28 -const TUid KUidAgendaModelAlarmCategory = { 0x101F4A70 };
  151.29 -
  151.30 -NONSHARABLE_CLASS(CCalAlarm) : public CBase
  151.31 -/** Class representing an alarm. contains associated data extensions
  151.32 -
  151.33 -This can be assigned to a calendar entry.
  151.34 -
  151.35 -@publishedAll
  151.36 -@released
  151.37 -*/
  151.38 -	{
  151.39 -public:
  151.40 -	IMPORT_C static CCalAlarm* NewL();
  151.41 -	IMPORT_C ~CCalAlarm();
  151.42 -	IMPORT_C void SetTimeOffset(TTimeIntervalMinutes aOffset);
  151.43 -	IMPORT_C TTimeIntervalMinutes TimeOffset() const;
  151.44 -	IMPORT_C void SetAlarmSoundNameL(const TDesC& aAlarmSoundName);
  151.45 -	IMPORT_C const TDesC& AlarmSoundNameL() const;
  151.46 -	IMPORT_C void SetAlarmAction(CCalContent* aAlarmAction);
  151.47 -	IMPORT_C CCalContent* AlarmAction() const;
  151.48 -
  151.49 -private:
  151.50 -	CCalAlarm();
  151.51 -
  151.52 -private:
  151.53 -	TTimeIntervalMinutes iOffset;
  151.54 -	HBufC* iAlarmName;
  151.55 -	// the associated data for rich alarm action
  151.56 -	CCalContent* iAlarmAction;
  151.57 -	};
  151.58 -
  151.59 -
  151.60 -#endif // __CALALARM_H__
  151.61 - 
   152.1 --- a/epoc32/include/calcategory.h	Tue Mar 16 16:12:26 2010 +0000
   152.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   152.3 @@ -1,96 +0,0 @@
   152.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   152.5 -// All rights reserved.
   152.6 -// This component and the accompanying materials are made available
   152.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   152.8 -// which accompanies this distribution, and is available
   152.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  152.10 -//
  152.11 -// Initial Contributors:
  152.12 -// Nokia Corporation - initial contribution.
  152.13 -//
  152.14 -// Contributors:
  152.15 -//
  152.16 -// Description:
  152.17 -//
  152.18 -
  152.19 -#ifndef __CALCATEGORY_H__
  152.20 -#define __CALCATEGORY_H__
  152.21 -
  152.22 -#include <e32base.h>
  152.23 -
  152.24 -class CCalCategoryImpl;
  152.25 -
  152.26 -/** Calendar categories can be associated with a calendar entry.
  152.27 -
  152.28 -There are 12 built in category types defined by TCalCategoryType. Additionally,
  152.29 -it is possible to define extended category types which are held as a descriptor
  152.30 -of any length.
  152.31 -
  152.32 -Any number of categories can be specified for an entry. CCalEntry provides member 
  152.33 -functions for adding, deleting and fetching categories for an entry. 
  152.34 -
  152.35 -CCalCategoryManager functions enable the client to add\\delete\\fetch categories 
  152.36 -from a Calendar session and to get a list of entries filtered by their category. 
  152.37 -@publishedAll
  152.38 -@released
  152.39 -*/
  152.40 -NONSHARABLE_CLASS(CCalCategory) : public CBase
  152.41 -    {
  152.42 -public:
  152.43 -	/** Calendar category type.
  152.44 -	@publishedAll
  152.45 -	@released
  152.46 -	*/
  152.47 -	enum TCalCategoryType 
  152.48 -		{
  152.49 -		/** Appointment */
  152.50 -		ECalAppointment,
  152.51 -		/** Business */
  152.52 -		ECalBusiness,
  152.53 -		/** Education */
  152.54 -		ECalEducation,	
  152.55 -		/** Holiday */
  152.56 -		ECalHoliday,
  152.57 -		/** Meeting */
  152.58 -		ECalMeeting,
  152.59 -		/** All other types */
  152.60 -		ECalMiscellaneous, 
  152.61 -		/** Personal */
  152.62 -		ECalPersonal,
  152.63 -		/** Phone call */
  152.64 -		ECalPhoneCall,
  152.65 -		/** Sick day */
  152.66 -		ECalSickDay,
  152.67 -		/** Special occasion */
  152.68 -		ECalSpecialOccasion,
  152.69 -		/** Travel */
  152.70 -		ECalTravel,
  152.71 -		/** Vacation */
  152.72 -		ECalVacation,
  152.73 -		/** Extended */
  152.74 -		ECalExtended
  152.75 -		};
  152.76 -
  152.77 -public:
  152.78 -	IMPORT_C static CCalCategory* NewL(TCalCategoryType aCategory);
  152.79 -	IMPORT_C static CCalCategory* NewL(const TDesC& aExtendedName);
  152.80 -	IMPORT_C ~CCalCategory();
  152.81 -
  152.82 -	IMPORT_C TCalCategoryType Category() const;
  152.83 -	IMPORT_C const TDesC& ExtendedCategoryName() const;
  152.84 -	
  152.85 -public:	
  152.86 -	CCalCategoryImpl* Impl() const;
  152.87 -	static CCalCategory* NewL(CCalCategoryImpl* aImpl);
  152.88 -
  152.89 -private:
  152.90 -	CCalCategory();
  152.91 -	CCalCategory(CCalCategoryImpl* aImpl);
  152.92 -	void ConstructL(TCalCategoryType aCategory);
  152.93 -	void ConstructL(const TDesC& aExtendedName);
  152.94 -
  152.95 -private: // member data
  152.96 -	CCalCategoryImpl* iCalCategoryImpl;
  152.97 -	};
  152.98 -	
  152.99 -#endif // __CALCATEGORY_H__
   153.1 --- a/epoc32/include/calcategorymanager.h	Tue Mar 16 16:12:26 2010 +0000
   153.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   153.3 @@ -1,59 +0,0 @@
   153.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   153.5 -// All rights reserved.
   153.6 -// This component and the accompanying materials are made available
   153.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   153.8 -// which accompanies this distribution, and is available
   153.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  153.10 -//
  153.11 -// Initial Contributors:
  153.12 -// Nokia Corporation - initial contribution.
  153.13 -//
  153.14 -// Contributors:
  153.15 -//
  153.16 -// Description:
  153.17 -//
  153.18 -
  153.19 -#ifndef __CALCATEGORYMANAGER_H__
  153.20 -#define __CALCATEGORYMANAGER_H__
  153.21 -
  153.22 -#include <e32base.h>
  153.23 -
  153.24 -class MCalProgressCallBack;
  153.25 -class CCalCategory;
  153.26 -class CCalEntry;
  153.27 -class CCalCategoryManagerImpl;
  153.28 -class CCalSession;
  153.29 -
  153.30 -/** A category manager used to manipulate the categories held by the Calendar store. 
  153.31 -
  153.32 -There are 12 built-in category types which are specified by CCalCategory::TCalCategoryType. 
  153.33 -In addition, clients can create as many of their own categories as they like by giving a name to the category.
  153.34 -This class is used along with the class CCalCategory to manipulate the categories in the file, for instance to 
  153.35 -add, delete and get a list of entries filtered by their category. 
  153.36 -
  153.37 -@publishedAll
  153.38 -@released
  153.39 -*/
  153.40 -NONSHARABLE_CLASS(CCalCategoryManager) : public CBase
  153.41 -    {
  153.42 -public:
  153.43 -
  153.44 -	IMPORT_C static CCalCategoryManager* NewL(CCalSession& aSession);
  153.45 -	IMPORT_C ~CCalCategoryManager();
  153.46 -
  153.47 -	IMPORT_C TInt CategoryCountL() const;
  153.48 -	IMPORT_C CCalCategory* CategoryL(TInt aIndex) const;
  153.49 -	IMPORT_C void AddCategoryL(const CCalCategory& aCategory);
  153.50 -	IMPORT_C void FilterCategoryL(const CCalCategory& aCategory, RPointerArray<CCalEntry>& aEntries, MCalProgressCallBack& aProgressCallBack);
  153.51 -	IMPORT_C void FilterCategoryL(const CCalCategory& aCategory, RPointerArray<CCalEntry>& aEntries);
  153.52 -	IMPORT_C void DeleteCategoryL(const CCalCategory& aCategory, MCalProgressCallBack& aProgressCallBack);
  153.53 -	
  153.54 -private:
  153.55 -	CCalCategoryManager();
  153.56 -	void ConstructL(CCalSession& aSession);
  153.57 -
  153.58 -private:
  153.59 -	CCalCategoryManagerImpl* iCCalCategoryManagerImpl;
  153.60 -	};
  153.61 -	
  153.62 -#endif // __CALCATEGORYMANAGER_H__
   154.1 --- a/epoc32/include/calchangecallback.h	Tue Mar 16 16:12:26 2010 +0000
   154.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   154.3 @@ -1,172 +0,0 @@
   154.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   154.5 -// All rights reserved.
   154.6 -// This component and the accompanying materials are made available
   154.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   154.8 -// which accompanies this distribution, and is available
   154.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  154.10 -//
  154.11 -// Initial Contributors:
  154.12 -// Nokia Corporation - initial contribution.
  154.13 -//
  154.14 -// Contributors:
  154.15 -//
  154.16 -// Description:
  154.17 -//
  154.18 -
  154.19 -#ifndef __CALCHANGECALLBACK_H__
  154.20 -#define __CALCHANGECALLBACK_H__
  154.21 -
  154.22 -#include <calcommon.h>
  154.23 -
  154.24 -class TCalChangeEntry;
  154.25 -
  154.26 -class MCalChangeCallBack
  154.27 -/** A call back class for observing changes in the model view.
  154.28 -
  154.29 -A client will not be notified of a change if it is the source of
  154.30 -the change.
  154.31 -
  154.32 -@publishedAll
  154.33 -@deprecated
  154.34 -*/
  154.35 -	{
  154.36 -public:
  154.37 -	/** Instance view change type
  154.38 -	@publishedAll
  154.39 -	@deprecated
  154.40 -	*/
  154.41 -	enum TChangeType
  154.42 -		{
  154.43 -		/**	Entries are added */
  154.44 -		EChangeAdd,
  154.45 -		/** Entries are deleted */
  154.46 -		EChangeDelete,
  154.47 -		/** Entries are modified */
  154.48 -		EChangeModify,
  154.49 -		/** Undefined entries */
  154.50 -		EChangeUndefined,
  154.51 -		/** Entries cause overflow error */
  154.52 -		EChangeOverflowError
  154.53 -		};
  154.54 -
  154.55 -	/** Instance view entry type
  154.56 -	@publishedAll
  154.57 -	@deprecated
  154.58 -	*/
  154.59 -	enum TChangeEntryType
  154.60 -		{
  154.61 -		/** Entry type is todo */
  154.62 -		EChangeEntryTodo,
  154.63 -		/** Entry type is event */
  154.64 -		EChangeEntryEvent,
  154.65 -		/** All entry types */
  154.66 -		EChangeEntryAll
  154.67 -		};
  154.68 -	/** A call back function for change notification
  154.69 -	@param aChangeEntryType Filters notifications to only notify about entries of this type (event/todo/all).
  154.70 -
  154.71 -	*/
  154.72 -	virtual void CalChangeNotification(TChangeEntryType aChangeEntryType) = 0;
  154.73 -	};
  154.74 -
  154.75 -/** A call back class for observing changes in the model view.
  154.76 -
  154.77 -The call back returns an array containing information about at least
  154.78 -one change to the database. The information includes the type of change
  154.79 -and the identity of the item being changed.
  154.80 -
  154.81 -A client will not be notified of a change if it is the source of
  154.82 -the change.
  154.83 -
  154.84 -@publishedAll
  154.85 -@released
  154.86 -*/
  154.87 -class MCalChangeCallBack2
  154.88 -	{
  154.89 -public:
  154.90 -	/** Instance view change type
  154.91 -	@publishedAll
  154.92 -	@released
  154.93 -	*/
  154.94 -	enum TChangeType
  154.95 -		{
  154.96 -		/**	Entries are added */
  154.97 -		EChangeAdd,
  154.98 -		/** Entries are deleted */
  154.99 -		EChangeDelete,
 154.100 -		/** Entries are modified */
 154.101 -		EChangeModify,
 154.102 -		/** Undefined entries */
 154.103 -		EChangeUndefined
 154.104 -		};
 154.105 -
 154.106 -	/** Instance view entry type
 154.107 -	@publishedAll
 154.108 -	@released
 154.109 -	*/
 154.110 -	enum TChangeEntryType
 154.111 -		{
 154.112 -		/** Entry type is todo */
 154.113 -		EChangeEntryTodo,
 154.114 -		/** Entry type is event */
 154.115 -		EChangeEntryEvent,
 154.116 -		/** All entry types */
 154.117 -		EChangeEntryAll
 154.118 -		};
 154.119 -	/** A call back function for change notification
 154.120 -	@param aChangeItems  List of changes since the last notification.
 154.121 -
 154.122 -	*/
 154.123 -	virtual void CalChangeNotification(RArray<TCalChangeEntry>& aChangeItems) = 0;
 154.124 -	};
 154.125 -
 154.126 -/** Struct for storing change notification data.
 154.127 -This contains the calendar local ID, the type of change and the entry type.
 154.128 -
 154.129 -The iChangeType will only be set to EChangeEntryTodo or EChangeEntryEvent
 154.130 -values. EChangeEntryAll is provided for callback registration only.
 154.131 -
 154.132 -If iChangeType is EChangeUndefined or EChangeOverflowError, iEntryId and
 154.133 -iEntryType are undefined and should not be used by clients.
 154.134 -
 154.135 -@publishedAll
 154.136 -@released
 154.137 -*/
 154.138 -struct TCalChangeEntry
 154.139 -	{
 154.140 -	/** Local UID of the entry */
 154.141 -	TCalLocalUid iEntryId;
 154.142 -	/** Type of change to the entry */
 154.143 -	MCalChangeCallBack2::TChangeType iChangeType;
 154.144 -	/** Type of entry */
 154.145 -	MCalChangeCallBack2::TChangeEntryType iEntryType;
 154.146 -	};
 154.147 -
 154.148 -/** Class to encapsulate call back registration parameters.
 154.149 -
 154.150 -The type of entries, the date range and whether undated todos are included
 154.151 -can be specified.
 154.152 -
 154.153 -@publishedAll
 154.154 -@released
 154.155 -*/
 154.156 -class CCalChangeNotificationFilter
 154.157 -	{
 154.158 -public:
 154.159 -	IMPORT_C static CCalChangeNotificationFilter* NewL(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange);
 154.160 -	IMPORT_C ~CCalChangeNotificationFilter();
 154.161 -
 154.162 -	MCalChangeCallBack2::TChangeEntryType ChangeEntryType() const;
 154.163 -	TCalTime StartTime() const;
 154.164 -	TCalTime EndTime() const;
 154.165 -	TBool IncludeUndatedTodos() const;
 154.166 -
 154.167 -private:
 154.168 -	CCalChangeNotificationFilter(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange);
 154.169 -
 154.170 -	MCalChangeCallBack2::TChangeEntryType iChangeEntryType;
 154.171 -	CalCommon::TCalTimeRange iTimeRange;
 154.172 -	TBool iIncludeUndatedTodos;
 154.173 -	};
 154.174 -
 154.175 -#endif // __CALCHANGECALLBACK_H__
   155.1 --- a/epoc32/include/calcommon.h	Tue Mar 16 16:12:26 2010 +0000
   155.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   155.3 @@ -1,230 +0,0 @@
   155.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   155.5 -// All rights reserved.
   155.6 -// This component and the accompanying materials are made available
   155.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   155.8 -// which accompanies this distribution, and is available
   155.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  155.10 -//
  155.11 -// Initial Contributors:
  155.12 -// Nokia Corporation - initial contribution.
  155.13 -//
  155.14 -// Contributors:
  155.15 -//
  155.16 -// Description:
  155.17 -//
  155.18 -
  155.19 -#ifndef __CALCOMMON_H__
  155.20 -#define __CALCOMMON_H__
  155.21 -
  155.22 -#include <caltime.h>
  155.23 -
  155.24 -/** This system-wide #define is for version 2 of the Calendar component. 
  155.25 -V1 is the CalInterimAPI. V2 is the refactored Calendar component which includes 
  155.26 -support for Attachments, GEO, TRANSP, instance iterator, extended text searching.
  155.27 -@publishedAll
  155.28 -@released
  155.29 -*/
  155.30 -#define SYMBIAN_CALENDAR_V2
  155.31 -
  155.32 -/** Calendar local entry ID. 
  155.33 -This entry ID is assigned by the calendar server when an entry is created. 
  155.34 -It will remain unchanged for the lifetime of that entry.
  155.35 -@publishedAll
  155.36 -@released
  155.37 -*/
  155.38 -typedef TUint32 TCalLocalUid;
  155.39 -
  155.40 -/** Calendar file ID.
  155.41 -@publishedAll
  155.42 -@released
  155.43 -*/
  155.44 -typedef TInt64 TCalFileId;
  155.45 -
  155.46 -/** Utility class containing common calendar-related enums.
  155.47 -
  155.48 -@publishedAll
  155.49 -@released
  155.50 -*/
  155.51 -class CalCommon
  155.52 -	{
  155.53 -public:
  155.54 -
  155.55 -	/** Entry filter used in the entry view and instance view, filter flags are defined by TCalViewFilterFlags
  155.56 -	@publishedAll
  155.57 -	@released
  155.58 -	*/
  155.59 -	typedef TUint TCalViewFilter;
  155.60 -	
  155.61 -	/** Entry filter flags used in the entry view and instance view. 
  155.62 -	@publishedAll
  155.63 -	@released
  155.64 -	*/
  155.65 -	enum TCalViewFilterFlags	
  155.66 -		{
  155.67 -		/** Include appointments. */
  155.68 -		EIncludeAppts=0x01,				
  155.69 -		/** Include reminders. */	
  155.70 -		EIncludeReminder=0x02,				
  155.71 -		/** Include all-day events. */
  155.72 -		EIncludeEvents=0x04,				
  155.73 -		/** Include anniversaries. */
  155.74 -		EIncludeAnnivs=0x08,				
  155.75 -		/** Include completed todos. */
  155.76 -		EIncludeCompletedTodos=0x10,					
  155.77 -		/** Include incompleted todos. */
  155.78 -		EIncludeIncompletedTodos=0x20,	
  155.79 -		/** Remove non-alarmed entries. This flag cannot be used by itself. */
  155.80 -		EIncludeAlarmedOnly=0x40,
  155.81 -		/** Include next only instance of a repeat entry. */
  155.82 -		EIncludeRptsNextInstanceOnly=0x80,
  155.83 -		
  155.84 -		/** By default all instances which overlap the time range are found. Use the EInstanceStartTimeWithinRange
  155.85 -		flag to only include instances whose start time is inside the search time range. 
  155.86 -		
  155.87 -		Note that setting both the EInstanceStartTimeWithinRange and EInstanceEndTimeWithinRange flags will 
  155.88 -		only include instances which are completely within the search time range. */
  155.89 -		EInstanceStartTimeWithinRange=0x100,
  155.90 -
  155.91 -		/** By default all instances which overlap the time range are found. Use the EInstanceEndTimeWithinRange
  155.92 -		flag to only include instances whose end time is inside the search time range. 
  155.93 -		
  155.94 -		Note that setting both the EInstanceStartTimeWithinRange and EInstanceEndTimeWithinRange flags will 
  155.95 -		only include instances which are completely within the search time range.
  155.96 -		*/
  155.97 -		EInstanceEndTimeWithinRange=0x200,
  155.98 -		
  155.99 -		/** By default all instances which adjoin the search range are found. Use the EExcludeInstanceAdjoiningRange
 155.100 -		flag to exclude instances that are outside, but adjoin the search range.
 155.101 -		
 155.102 -		Instances that are outside, but adjoin the search start or end time are excluded.
 155.103 -		Instances that both start and end on the search start time are included.
 155.104 -		Instances that both start and end on the search end time are excluded.
 155.105 -		*/
 155.106 -		EExcludeInstanceAdjoiningRange=0x400,
 155.107 -		
 155.108 -		/** Include all entries (appointments, day events, reminders, anniversaries and todos). */
 155.109 -		EIncludeAll=EIncludeAppts|EIncludeReminder|EIncludeEvents|EIncludeAnnivs|
 155.110 -		EIncludeCompletedTodos|EIncludeIncompletedTodos,
 155.111 -		};
 155.112 -		
 155.113 -	/** The range of instances referred to in a recurrence ID or instance view. 
 155.114 -	@publishedAll
 155.115 -	@released
 155.116 -	*/
 155.117 -	enum TRecurrenceRange
 155.118 -		{
 155.119 -		/** Only this instance is referenced. 
 155.120 -		If the user set EThisOnly when a repeating child entry is created and stored to the file, only the parent instance
 155.121 -		referred to by the child's recurrence ID will be replaced. */
 155.122 -		EThisOnly,
 155.123 -		/** This and all other instances are referenced. */
 155.124 -		EThisAndAll,
 155.125 -		/** This and all future instances are referenced. */
 155.126 -		EThisAndFuture,
 155.127 -		/** This and all previous instances are referenced. */
 155.128 -		EThisAndPrior
 155.129 -		};
 155.130 -		
 155.131 -	
 155.132 -	/** Search filter for use in the CCalInstanceView::FindInstanceL() function.
 155.133 -	Note that a folded text search is used if exact text search is not specified.
 155.134 -	The summary text field is always searched. It is possible to specify additional text fields to be 
 155.135 -	searched as well.
 155.136 -	@publishedAll
 155.137 -	@released
 155.138 -	*/
 155.139 -	enum TCalSearchBehaviour
 155.140 -		{
 155.141 -		/** Search for folded text. */
 155.142 -		EFoldedTextSearch=0x0,
 155.143 -
 155.144 -		/** Search for the exact text. */
 155.145 -		EExactTextSearch=0x1,
 155.146 -		
 155.147 -		/** Search location during a text search. 
 155.148 -		@publishedPartner
 155.149 -		@released
 155.150 -		*/
 155.151 -		ESearchEntryLocation=0x2,
 155.152 -		
 155.153 -		/** Search description during a text search. 
 155.154 -		@publishedPartner
 155.155 -		@released
 155.156 -		*/
 155.157 -		ESearchEntryDescription=0x4,
 155.158 -		
 155.159 -		/** Search attendee addresses during a text search.
 155.160 -		@publishedPartner
 155.161 -		@released
 155.162 -		*/
 155.163 -		ESearchAttendeeAddress=0x8,
 155.164 -		
 155.165 -		/** Search attendee sent by addresses during a text search.
 155.166 -		@publishedPartner
 155.167 -		@released
 155.168 -		*/
 155.169 -		ESearchAttendeeSentByAddress=0x10,
 155.170 -		
 155.171 -		/** Search attendee common names during a text search. 
 155.172 -		@publishedPartner
 155.173 -		@released
 155.174 -		*/
 155.175 -		ESearchAttendeeCommonName=0x20,
 155.176 -		
 155.177 -		/** Search organizer's address during a text search. 
 155.178 -		@publishedPartner
 155.179 -		@released
 155.180 -		*/
 155.181 -		ESearchOrganizerAddress=0x40,
 155.182 -		
 155.183 -		/** Search organizer's sent by address during a text search. 
 155.184 -		@publishedPartner
 155.185 -		@released
 155.186 -		*/
 155.187 -		ESearchOrganizerSentByAddress=0x80,
 155.188 -		
 155.189 -		/** Search organizer's common name during a text search. 
 155.190 -		@publishedPartner
 155.191 -		@released
 155.192 -		*/
 155.193 -		ESearchOrganizerCommonName=0x100,
 155.194 -		
 155.195 -		/** Include all possible text fields during a text search. */
 155.196 -		ESearchAllTextFields=ESearchEntryLocation|ESearchEntryDescription|
 155.197 -			ESearchAttendeeAddress|ESearchAttendeeSentByAddress|ESearchAttendeeCommonName|
 155.198 -			ESearchOrganizerAddress|ESearchOrganizerSentByAddress|ESearchOrganizerCommonName,
 155.199 -		};
 155.200 -		
 155.201 -	/** Class to implement a time range in the Instance view and Entry view.
 155.202 -	@publishedAll
 155.203 -	@released
 155.204 -	*/	
 155.205 -	class TCalTimeRange
 155.206 -		{
 155.207 -	public:
 155.208 -		IMPORT_C TCalTimeRange(TCalTime aStartTime, TCalTime aEndTime);		
 155.209 -			
 155.210 -		IMPORT_C TCalTime StartTime() const;
 155.211 -		IMPORT_C TCalTime EndTime() const;
 155.212 -		
 155.213 -	private:
 155.214 -		TCalTime iStartTime;
 155.215 -		TCalTime iEndTime;
 155.216 -		};
 155.217 -		
 155.218 -	/** Enumeration returned when opening a file to indicate whether the file is the current version, 
 155.219 -	needs converting, or is unsupported.
 155.220 -	@publishedPartner
 155.221 -	@released
 155.222 -	*/
 155.223 -	enum TCalFileVersionSupport
 155.224 -		{
 155.225 -		/** The file is the current version and can be loaded immediately. */
 155.226 -		EFileIsCurrentVersion,
 155.227 -		/** The file is an older version and will be converted when it is used. */
 155.228 -		EFileNeedsConverting,
 155.229 -		/** The file is an old version that is not supported. */
 155.230 -		EUnsupportedFileVersion
 155.231 -		};
 155.232 -	};
 155.233 -#endif // __CALCOMMON_H__
   156.1 --- a/epoc32/include/calcontent.h	Tue Mar 16 16:12:26 2010 +0000
   156.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   156.3 @@ -1,77 +0,0 @@
   156.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   156.5 -// All rights reserved.
   156.6 -// This component and the accompanying materials are made available
   156.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   156.8 -// which accompanies this distribution, and is available
   156.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  156.10 -//
  156.11 -// Initial Contributors:
  156.12 -// Nokia Corporation - initial contribution.
  156.13 -//
  156.14 -// Contributors:
  156.15 -//
  156.16 -// Description:
  156.17 -//
  156.18 -
  156.19 -#ifndef __CALCONTENT_H__
  156.20 -#define __CALCONTENT_H__
  156.21 -
  156.22 -#include <e32base.h>
  156.23 -
  156.24 -class RReadStream;
  156.25 -class RWriteStream;
  156.26 -class CAgnContent;
  156.27 -
  156.28 -NONSHARABLE_CLASS(CCalContent) : public CBase
  156.29 -/**
  156.30 -This class holds in memory 8-bit data of any type, or a link to 8-bit
  156.31 -data such as a URI.  The MIME type of the data may also be held to help
  156.32 -callers determine the appropriate application to launch the content.
  156.33 -
  156.34 -Because the data is held in memory, callers should only use this class
  156.35 -to store small amounts of data or a URI to some content elsewhere.
  156.36 -
  156.37 -This class can be used to set an alarm action using
  156.38 -CCalAlarm::SetAlarmAction() (such as a link to an internet
  156.39 -radio station, or a small animated icon).
  156.40 -
  156.41 -@see CCalAlarm
  156.42 -@capability None
  156.43 -@publishedAll
  156.44 -@released
  156.45 -*/
  156.46 -	{
  156.47 -public:
  156.48 -	/** Disposition of the data which maybe used while setting an alarm. The data can be a link or inline.
  156.49 -	@publishedPartner
  156.50 -	@released
  156.51 -	*/
  156.52 -	enum TDisposition
  156.53 -		{
  156.54 -		/** URL disposition */
  156.55 -		EDispositionUrl = 0,
  156.56 -		/** Inline disposition */
  156.57 -		EDispositionInline = 1,
  156.58 -		/** Unknown disposition */
  156.59 -		EDispositionUnknown = 15
  156.60 -		};
  156.61 -
  156.62 -	IMPORT_C static CCalContent* NewL();
  156.63 -	IMPORT_C ~CCalContent();
  156.64 -	IMPORT_C void SetContentL(TDesC8* aSmallContent, TDesC8* aContentMIMEType, CCalContent::TDisposition aContentDisposition);
  156.65 -	IMPORT_C const TDesC8& Content() const;
  156.66 -	IMPORT_C const TDesC8& MimeType() const;
  156.67 -	IMPORT_C TDisposition Disposition() const;
  156.68 -	CAgnContent* Impl() const;
  156.69 -	void SetImpl(CAgnContent* aImpl);
  156.70 -
  156.71 -private:
  156.72 -	CCalContent();
  156.73 -	void ConstructL();
  156.74 -
  156.75 -private:
  156.76 -	CAgnContent* iImpl;
  156.77 -	};
  156.78 -
  156.79 -
  156.80 -#endif // __CALCONTENT_H__
   157.1 --- a/epoc32/include/caldataexchange.h	Tue Mar 16 16:12:26 2010 +0000
   157.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   157.3 @@ -1,89 +0,0 @@
   157.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   157.5 -// All rights reserved.
   157.6 -// This component and the accompanying materials are made available
   157.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   157.8 -// which accompanies this distribution, and is available
   157.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  157.10 -//
  157.11 -// Initial Contributors:
  157.12 -// Nokia Corporation - initial contribution.
  157.13 -//
  157.14 -// Contributors:
  157.15 -//
  157.16 -// Description:
  157.17 -//
  157.18 -
  157.19 -#ifndef __CCALDATAEXCHANGE_H__ 
  157.20 -#define __CCALDATAEXCHANGE_H__
  157.21 -
  157.22 -#include <calentry.h>
  157.23 -
  157.24 -class CCalDataExchangeImpl;
  157.25 -class CCalSession;
  157.26 -class RWriteStream;
  157.27 -
  157.28 -/** The default number of entries to import or export between callbacks.
  157.29 -@publishedAll
  157.30 -@released
  157.31 -*/
  157.32 -const TInt KDefaultNumberOfEntriesToHandle = 10;
  157.33 -
  157.34 -/** A call back class to show the progress of long-running operations.
  157.35 -
  157.36 -When a long-running operation is carried out, this class is used to signal its progress, 
  157.37 -and when the function is complete.
  157.38 -
  157.39 -@publishedAll
  157.40 -@released
  157.41 -*/
  157.42 -class MCalDataExchangeCallBack
  157.43 -	{
  157.44 -public:
  157.45 -	/** Progress callback. 
  157.46 -
  157.47 -	This calls the observing class with the percentage complete of the current operation.
  157.48 -	This also propagates any error to the observing class.
  157.49 -
  157.50 -	@param aPercentageCompleted The percentage complete. */
  157.51 -	virtual void Progress(TInt aPercentageCompleted) = 0;
  157.52 -
  157.53 -	/** Progress callback.
  157.54 -
  157.55 -	This calls the observing class when the current operation is finished. */
  157.56 -	virtual void Completed() = 0;
  157.57 -	
  157.58 -	/* Retrieve the number of entries to handle at once. 
  157.59 -	@return The number of entries to handle at once.
  157.60 -	*/
  157.61 -	virtual TInt NumberOfEntriesToHandleAtOnce() { return KDefaultNumberOfEntriesToHandle; };
  157.62 -	};
  157.63 -
  157.64 -/** 
  157.65 -This class provides functionality for importing and exporting vCal entries.
  157.66 -@publishedAll
  157.67 -@released
  157.68 -*/
  157.69 -NONSHARABLE_CLASS(CCalDataExchange) : public CBase
  157.70 -	{
  157.71 -public:
  157.72 -	IMPORT_C static CCalDataExchange* NewL(CCalSession& aSession);
  157.73 -	IMPORT_C ~CCalDataExchange();
  157.74 -	
  157.75 -	IMPORT_C void ImportL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray);
  157.76 -	IMPORT_C void ImportL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray, TInt aFlags);
  157.77 -	IMPORT_C void ExportL(TUid aDataFormat, RWriteStream& aWriteStream, RPointerArray<CCalEntry>& aCalEntryArray);	
  157.78 -	
  157.79 -	IMPORT_C void ImportL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray, TInt aFlags, TInt aNumEntries);
  157.80 -
  157.81 -	IMPORT_C void ImportAsyncL(TUid aDataFormat, RReadStream& aReadStream, RPointerArray<CCalEntry>& aCalEntryArray, MCalDataExchangeCallBack& aObserver, TInt aFlags);
  157.82 -	IMPORT_C void ExportAsyncL(TUid aDataFormat, RWriteStream& aWriteStream, RPointerArray<CCalEntry>& aCalEntryArray, MCalDataExchangeCallBack& aObserver);
  157.83 -	
  157.84 -private:
  157.85 -	CCalDataExchange();
  157.86 -	void ConstructL(CCalSession& aSession);
  157.87 -	
  157.88 -private:
  157.89 -	CCalDataExchangeImpl* iImpl;
  157.90 -	};
  157.91 -
  157.92 -#endif // __CCALDATAEXCHANGE_H__
   158.1 --- a/epoc32/include/caldataformat.h	Tue Mar 16 16:12:26 2010 +0000
   158.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   158.3 @@ -1,40 +0,0 @@
   158.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   158.5 -// All rights reserved.
   158.6 -// This component and the accompanying materials are made available
   158.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   158.8 -// which accompanies this distribution, and is available
   158.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  158.10 -//
  158.11 -// Initial Contributors:
  158.12 -// Nokia Corporation - initial contribution.
  158.13 -//
  158.14 -// Contributors:
  158.15 -//
  158.16 -// Description:
  158.17 -//
  158.18 -
  158.19 -#ifndef __CCALDATAFORMAT_H__ 
  158.20 -#define __CCALDATAFORMAT_H__ 
  158.21 -
  158.22 -#include <e32cmn.h>
  158.23 -
  158.24 -/** 
  158.25 -@file
  158.26 -@publishedAll
  158.27 -@released */ 
  158.28 -
  158.29 -/** The UID for a VCal 1.0 data parser
  158.30 -Used in vCalendar Import. */
  158.31 -const TUid KUidVCalendar = {0x1020DB7B};
  158.32 -
  158.33 -
  158.34 -/** These flags control the behaviour of the data exchange parser.*/
  158.35 -/** This flag overrides the default character set when parsing 
  158.36 -vCalendar 1.0 files to Shift-JIS */
  158.37 -const TUint32 KCalDataExchangeDefaultShiftJIS = 0x00000001; 
  158.38 -
  158.39 -/** This flag ensures that the STATUS property of an imported vCalendar
  158.40 -will map to the CCalEntry::TStatus value with exactly the same name. */
  158.41 -const TUint32 KCalDataExchangeImportStatusAsVCalendar = 0x00000002; 
  158.42 -
  158.43 -#endif // __CCALDATAFORMAT_H__ 
   159.1 --- a/epoc32/include/calendarconverter.h	Tue Mar 16 16:12:26 2010 +0000
   159.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   159.3 @@ -1,89 +0,0 @@
   159.4 -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   159.5 -// All rights reserved.
   159.6 -// This component and the accompanying materials are made available
   159.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   159.8 -// which accompanies this distribution, and is available
   159.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  159.10 -//
  159.11 -// Initial Contributors:
  159.12 -// Nokia Corporation - initial contribution.
  159.13 -//
  159.14 -// Contributors:
  159.15 -//
  159.16 -// Description:
  159.17 -//
  159.18 -
  159.19 -#ifndef __CALENDARCONVERTER_H__
  159.20 -#define __CALENDARCONVERTER_H__
  159.21 -
  159.22 -#include <e32std.h>
  159.23 -#include <e32base.h>
  159.24 -
  159.25 -class TChineseDate  
  159.26 -/** Chinese date.
  159.27 -
  159.28 -Its public member data is the year cycle, the year (1-60), the month (1-12), whether or 
  159.29 -not the month is a leap month, and the day in the month (1-29 or 30). 
  159.30 -@publishedAll
  159.31 -@released */
  159.32 -	{
  159.33 -public:
  159.34 -	IMPORT_C TChineseDate();
  159.35 -	IMPORT_C TBool operator==(const TChineseDate& aDate) const;
  159.36 -public:
  159.37 -	/** The year cycle. */
  159.38 -	TInt iCycle;
  159.39 -	/** The year (1-60). */
  159.40 -	TInt iYear;
  159.41 -	/** The month (1-12). */
  159.42 -	TInt iMonth;
  159.43 -	/** Whether or not the month is a leap month. */
  159.44 -	TBool iLeapMonth;
  159.45 -	/** The day in the month (1-29 or 30). */
  159.46 -	TInt iDay;
  159.47 -	};
  159.48 -
  159.49 -
  159.50 -class CChineseCalendarConverter : public CBase
  159.51 -/** Converts between TDateTime and TChineseDate formats in both directions. Chinese dates 
  159.52 -are calculated using the -2636 epoch. This is equivalent to 2637 BCE (Before Common Era). 
  159.53 -@publishedAll
  159.54 -@released */
  159.55 -	{
  159.56 -public:
  159.57 -	IMPORT_C static CChineseCalendarConverter* NewL();
  159.58 -
  159.59 -	/** Creates a Chinese date from a TDateTime value.
  159.60 -	
  159.61 -	@param aDateTime The date/time value to convert.
  159.62 -	@param aChineseDate On return, contains the Chinese date. If the supplied date 
  159.63 -	is invalid, this contains KErrArgument. */
  159.64 -	virtual void DateTimeToChineseL(const TDateTime& aDateTime, TChineseDate& aChineseDate)=0;
  159.65 -
  159.66 -	/** Creates a TDateTime value from a Chinese date.
  159.67 -	
  159.68 -	@param aChineseDate A date in Chinese format.
  159.69 -	@param aDateTime On return, contains a date value. If the supplied date is 
  159.70 -	invalid, this contains KErrArgument. */
  159.71 -	virtual void ChineseToDateTimeL(const TChineseDate& aChineseDate, TDateTime& aDateTime)=0;
  159.72 -
  159.73 -	/** Returns the range of dates, in standard date format, acceptable to the Chinese 
  159.74 -	calendar converter. 
  159.75 -	
  159.76 -	@param aLower On return, contains the lower limit of the converter.
  159.77 -	@param aUpper On return, contains the upper limit of the converter. */
  159.78 -	virtual void DateRange(TDateTime& aLower, TDateTime& aUpper)=0;
  159.79 -
  159.80 -	/** Returns the range of dates, in Chinese date format, acceptable to the Chinese 
  159.81 -	calendar converter.
  159.82 -	
  159.83 -	@param aLower On return, contains the lower limit of the converter.
  159.84 -	@param aUpper On return, contains the upper limit of the converter. */
  159.85 -	virtual void DateRange(TChineseDate& aLower, TChineseDate& aUpper)=0;
  159.86 -	/** Returns the result of the last calendar conversion as a Julian date. 
  159.87 -	
  159.88 -	@return The Julian date. */
  159.89 -	virtual TReal JulianDate() __SOFTFP =0;
  159.90 -	};
  159.91 -
  159.92 -#endif
   160.1 --- a/epoc32/include/calentry.h	Tue Mar 16 16:12:26 2010 +0000
   160.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   160.3 @@ -1,349 +0,0 @@
   160.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   160.5 -// All rights reserved.
   160.6 -// This component and the accompanying materials are made available
   160.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   160.8 -// which accompanies this distribution, and is available
   160.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  160.10 -//
  160.11 -// Initial Contributors:
  160.12 -// Nokia Corporation - initial contribution.
  160.13 -//
  160.14 -// Contributors:
  160.15 -//
  160.16 -// Description:
  160.17 -//
  160.18 -
  160.19 -#ifndef __CALENTRY_H__
  160.20 -#define __CALENTRY_H__
  160.21 -
  160.22 -#include <calcommon.h>
  160.23 -
  160.24 -const TReal KCalGEOMinLatitude = -90;
  160.25 -const TReal KCalGEOMaxLatitude  = 90;
  160.26 -const TReal KCalGEOMinLongitude = -180;
  160.27 -const TReal KCalGEOMaxLongitude  = 180;
  160.28 -
  160.29 -const TUint KCalGEOMaxDecimalPlaces = 6;
  160.30 -
  160.31 -class CCalAlarm;
  160.32 -class CCalAttachment;
  160.33 -class CCalAttendee;
  160.34 -class CCalCategory;
  160.35 -class CCalEntryImpl;
  160.36 -class CCalGeoValue;
  160.37 -class CCalUser;
  160.38 -class CTzRules;
  160.39 -class TCalRRule;
  160.40 -class CCalEntryIdImpl;
  160.41 -
  160.42 -/** Class representing a calendar entry. This can be an appointment, to-do
  160.43 -item, reminder, event or anniversary.
  160.44 -
  160.45 -CCalEntry contains information about a calendar entry, including
  160.46 -a repeat definition, synchronisation information, and group scheduling data.
  160.47 -
  160.48 -A repeating calendar entry has more than one occurrence. Instances are
  160.49 -represented by the CCalInstance class.
  160.50 -
  160.51 -Synchronisation information includes a record of the date/time the entry was
  160.52 -last modified. This can be found by calling the LastModifiedDateL() function.
  160.53 -
  160.54 -@publishedAll
  160.55 -@released
  160.56 -*/
  160.57 -NONSHARABLE_CLASS(CCalEntry) : public CBase
  160.58 -	{
  160.59 -public:
  160.60 -	/** Defines the type of the calendar entry.
  160.61 -	@publishedAll
  160.62 -	@released
  160.63 -	*/
  160.64 -	enum TType
  160.65 -		{
  160.66 -		/** An appointment, which has a start time and end time. */
  160.67 -		EAppt,
  160.68 -		/** A to-do, which can have a start time and end time (the end time is the due date), or can be undated. */
  160.69 -		ETodo,
  160.70 -		/** An event, which has a start time and end time. */
  160.71 -		EEvent,
  160.72 -		/** A reminder, which has a start time only. */
  160.73 -		EReminder,
  160.74 -		/** An anniversary, which has a start time and end time. */
  160.75 -		EAnniv
  160.76 -		};
  160.77 -
  160.78 -	/** Defines the possible status values of the entry.
  160.79 -	There are values here to support both iCalendar (RFC 2445) and vCalendar v1.0 STATUS properties.
  160.80 -	Enumerated values for vCalendar v1.0 contain the prefix 'EVCal'.
  160.81 -	@publishedAll
  160.82 -	@released
  160.83 -	*/
  160.84 -	enum TStatus
  160.85 -		{
  160.86 -		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event is tentative. */
  160.87 -		ETentative,
  160.88 -		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event has been confirmed. */
  160.89 -		EConfirmed,
  160.90 -		/** Used to support iCalendar (RFC 2445). The event has been cancelled. */
  160.91 -		ECancelled,
  160.92 -		/** Used to support iCalendar (RFC 2445). The to-do entry needs action. */
  160.93 -		ETodoNeedsAction,
  160.94 -		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The to-do entry has been completed. */
  160.95 -		ETodoCompleted,
  160.96 -		/** Used to support iCalendar (RFC 2445). The to-do entry is in progress. */
  160.97 -		ETodoInProcess,
  160.98 -		/** No status is set. */
  160.99 -		ENullStatus,
 160.100 -		
 160.101 -		/** Used to support vCalendar 1.0. The entry has been accepted. */
 160.102 -		EVCalAccepted,
 160.103 -		/** Used to support vCalendar 1.0. The entry needs action. */
 160.104 -		EVCalNeedsAction, 
 160.105 -		/** Used to support vCalendar 1.0. The entry has been sent. */
 160.106 -		EVCalSent, 
 160.107 -		/** Used to support vCalendar 1.0. The entry has been declined. */
 160.108 -		EVCalDeclined,
 160.109 -		/** Used to support vCalendar 1.0. The entry has been delegated. */
 160.110 -		EVCalDelegated,
 160.111 -		};
 160.112 -
 160.113 -	/** Replication status.
 160.114 -	@publishedAll
 160.115 -	@released
 160.116 -	*/
 160.117 -	enum TReplicationStatus
 160.118 -		{
 160.119 -		/** No restriction on access. */
 160.120 -		EOpen,
 160.121 -		/** Data is private (no access). */
 160.122 -		EPrivate,
 160.123 -		/** Data is confidential (restricted access). */
 160.124 -		ERestricted
 160.125 -		};
 160.126 -
 160.127 -	/** The method property of a Group Scheduling entry.
 160.128 -	@publishedAll
 160.129 -	@released
 160.130 -	*/
 160.131 -	enum TMethod
 160.132 -		{
 160.133 -		/** The RFC2445-defined method value 'None'. */
 160.134 -		EMethodNone,
 160.135 -		/** The RFC2445-defined method value 'Publish'. */
 160.136 -		EMethodPublish,
 160.137 -		/** The RFC2445-defined method value 'Request'. */
 160.138 -		EMethodRequest,
 160.139 -		/** The RFC2445-defined method value 'Reply'. */
 160.140 -		EMethodReply,
 160.141 -		/** The RFC2445-defined method value 'Add'. */
 160.142 -		EMethodAdd,
 160.143 -		/** The RFC2445-defined method value 'Cancel'. */
 160.144 -		EMethodCancel,
 160.145 -		/** The RFC2445-defined method value 'Refresh'. */
 160.146 -		EMethodRefresh,
 160.147 -		/** The RFC2445-defined method value 'Counter'. */
 160.148 -		EMethodCounter,
 160.149 -		/** The RFC2445-defined method value 'DeclineCounter'. */
 160.150 -		EMethodDeclineCounter
 160.151 -		};
 160.152 -
 160.153 -	/** Specify which entry details are to be copied in CCalEntry::CopyFromL functions.
 160.154 -	@publishedAll
 160.155 -	@released
 160.156 -	*/
 160.157 -	enum TCopyType
 160.158 -		{
 160.159 -		/** Copy the ID of the entry */
 160.160 -		ECopyAll,
 160.161 -		/** Dont copy ID of the entry */
 160.162 -		EDontCopyId
 160.163 -		};
 160.164 -
 160.165 -	/** The busy status of an entry and corresponds to the TRANSP property in the iCalendar (RFC 2445) and vCalendar specifications.
 160.166 -	In the vCalendar specification, the TRANSP property can be any positive integer value. 0 is opaque and blocks time, 1 
 160.167 -	is transparent and doesn't block time. Any higher values have an implementation-specific meaning.
 160.168 -	In the iCalendar specification (RFC 2445), the TRANSP property can be either OPAQUE (blocks time) or TRANSPARENT (doesn't block time).
 160.169 -	@publishedPartner
 160.170 -	@prototype
 160.171 -	*/
 160.172 -	enum TTransp
 160.173 -		{
 160.174 -		/** The entry blocks time. */
 160.175 -		ETranspBusy,
 160.176 -		/** The entry doesn't block time. */
 160.177 -		ETranspFree,
 160.178 -		/** The entry is tentative and blocks time. */
 160.179 -		ETranspTentative,
 160.180 -		/** The entry is an out-of-office calendar event and blocks time. */
 160.181 -		ETranspOutOfOffice,
 160.182 -		};
 160.183 -
 160.184 -	// Construction / Destruction
 160.185 -	IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum);
 160.186 -	IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum,
 160.187 -					const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange);
 160.188 -
 160.189 -	IMPORT_C ~CCalEntry();
 160.190 -
 160.191 -	// Date and Time
 160.192 -	IMPORT_C TCalTime StartTimeL() const;
 160.193 -	IMPORT_C TCalTime EndTimeL() const;
 160.194 -	IMPORT_C void SetStartAndEndTimeL(const TCalTime& aStartTime, const TCalTime& aEndTime);
 160.195 -
 160.196 -	IMPORT_C void SetLastModifiedDateL();
 160.197 -	IMPORT_C void SetLastModifiedDateL(const TCalTime& aModifiedTime);
 160.198 -	IMPORT_C TCalTime LastModifiedDateL() const;
 160.199 -
 160.200 -	IMPORT_C void SetDTStampL(const TCalTime& aTime);
 160.201 -	IMPORT_C TCalTime DTStampL() const;
 160.202 -
 160.203 -	IMPORT_C TCalTime CompletedTimeL() const;
 160.204 -	IMPORT_C void SetCompletedL(TBool aCompleted, const TCalTime& aTime);
 160.205 -
 160.206 -	// Repeat rules / RDate / ExDate Methods
 160.207 -	IMPORT_C void SetRRuleL(const TCalRRule& aRule);
 160.208 -	IMPORT_C TBool GetRRuleL(TCalRRule& aRule) const;
 160.209 -
 160.210 -	IMPORT_C void SetRDatesL(const RArray<TCalTime>& aRDateList);
 160.211 -	IMPORT_C void GetRDatesL(RArray<TCalTime>& aRDateList) const;
 160.212 -
 160.213 -	IMPORT_C void SetExceptionDatesL(const RArray<TCalTime>& aExDateList);
 160.214 -	IMPORT_C void GetExceptionDatesL(RArray<TCalTime>& aExDateList) const;
 160.215 -
 160.216 -	IMPORT_C void ClearRepeatingPropertiesL();
 160.217 -	
 160.218 -	// Entry alarm
 160.219 -	IMPORT_C void SetAlarmL(CCalAlarm* aAlarm);
 160.220 -	IMPORT_C CCalAlarm* AlarmL() const;
 160.221 -
 160.222 -	// Comparison
 160.223 -	IMPORT_C TBool CompareL(const CCalEntry& aEntry) const;
 160.224 -
 160.225 - 	// Copy
 160.226 - 	IMPORT_C void CopyFromL(const CCalEntry& aOther);
 160.227 -	IMPORT_C void CopyFromL(const CCalEntry& aOther, TCopyType aCopyType);
 160.228 -
 160.229 -	// Text Fields
 160.230 -	IMPORT_C void SetSummaryL(const TDesC& aSummary);
 160.231 -	IMPORT_C const TDesC& SummaryL() const;
 160.232 -	IMPORT_C void SetDescriptionL(const TDesC& aDescription);
 160.233 -	IMPORT_C const TDesC& DescriptionL() const;
 160.234 -	IMPORT_C void SetLocationL(const TDesC& aLocation);
 160.235 -	IMPORT_C const TDesC& LocationL() const;
 160.236 -
 160.237 -	// Category list
 160.238 -	IMPORT_C void AddCategoryL(CCalCategory* aCategory);
 160.239 -	IMPORT_C void DeleteCategoryL(TInt aIndex);
 160.240 -	IMPORT_C const RPointerArray<CCalCategory>& CategoryListL();
 160.241 -
 160.242 -	//	Attendee Methods
 160.243 -	IMPORT_C void AddAttendeeL(CCalAttendee* aAttendee);
 160.244 -	IMPORT_C void DeleteAttendeeL(TInt aIndex);
 160.245 -	IMPORT_C RPointerArray<CCalAttendee>& AttendeesL() const;
 160.246 -	IMPORT_C void SetOrganizerL(CCalUser* aUser);
 160.247 -	IMPORT_C CCalUser* OrganizerL() const;
 160.248 -	IMPORT_C void SetPhoneOwnerL(const CCalUser* aOwner);
 160.249 -	IMPORT_C CCalUser* PhoneOwnerL() const;
 160.250 -
 160.251 -	// Attachments
 160.252 -	IMPORT_C void AddAttachmentL(CCalAttachment& aAttachment);
 160.253 -	IMPORT_C void DeleteAttachmentL(const CCalAttachment& aAttachment);
 160.254 -	IMPORT_C CCalAttachment* AttachmentL(TInt aIndex) const;
 160.255 -	IMPORT_C TInt AttachmentCountL() const;
 160.256 -	// Other Attributes
 160.257 -	IMPORT_C TType EntryTypeL() const;
 160.258 -	IMPORT_C void SetStatusL(TStatus aStatus);
 160.259 -	IMPORT_C TStatus StatusL() const;
 160.260 -
 160.261 -	IMPORT_C void SetReplicationStatusL(TReplicationStatus aReplicationStatus);
 160.262 -	IMPORT_C TReplicationStatus ReplicationStatusL() const;
 160.263 -
 160.264 -	IMPORT_C void SetPriorityL(TUint aPriority);
 160.265 -	IMPORT_C TUint PriorityL() const;
 160.266 -
 160.267 -	IMPORT_C void SetMethodL(TMethod aMethod);
 160.268 -	IMPORT_C TMethod MethodL() const;
 160.269 -	IMPORT_C void SetSequenceNumberL(TInt aSeq);
 160.270 -	IMPORT_C TInt SequenceNumberL() const;
 160.271 -	IMPORT_C const TDesC8& UidL() const;
 160.272 -	IMPORT_C TCalTime RecurrenceIdL() const;
 160.273 -	IMPORT_C CalCommon::TRecurrenceRange RecurrenceRangeL() const;
 160.274 -
 160.275 -	IMPORT_C CTzRules* TzRulesL() const;
 160.276 -	IMPORT_C void SetTzRulesL(const CTzRules& aTzRule);
 160.277 -	IMPORT_C void SetTzRulesL();
 160.278 -
 160.279 -	IMPORT_C void SetLocalUidL(TCalLocalUid aLocalId);
 160.280 -	IMPORT_C TCalLocalUid LocalUidL() const;
 160.281 -
 160.282 -	IMPORT_C TTransp TimeTransparencyL() const;
 160.283 -	IMPORT_C void SetTimeTransparencyL(TTransp aBusyStatus);
 160.284 -
 160.285 -	IMPORT_C CCalGeoValue* GeoValueL() const;
 160.286 -	IMPORT_C void SetGeoValueL(const CCalGeoValue& aGeoValue);
 160.287 -	IMPORT_C void ClearGeoValueL();
 160.288 -
 160.289 -	// Internal APIs (Used by Java)
 160.290 -	IMPORT_C TCalTime NextInstanceForLocalUIDL(const TCalTime& aTime) const;
 160.291 -	IMPORT_C TCalTime PreviousInstanceForLocalUIDL(const TCalTime& aTime) const;
 160.292 -	
 160.293 -	IMPORT_C TCalTime FindRptUntilTimeL(TInt aCount);
 160.294 -
 160.295 -	
 160.296 -public:
 160.297 -	// Internal APIs
 160.298 -	static CCalEntry* NewL(CCalEntryImpl* aImpl);
 160.299 -	CCalEntryImpl* Impl() const;
 160.300 -	
 160.301 -private:
 160.302 -	void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum, const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange);
 160.303 -	void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum);
 160.304 -	void ConstructL(CCalEntryImpl* aImpl);
 160.305 -
 160.306 -private: // member data
 160.307 -	CCalEntryImpl* iImpl;
 160.308 -	};
 160.309 -
 160.310 -
 160.311 -/** Class representing a uniquely identifiable calendar entry in a calendar file.
 160.312 -
 160.313 -@publishedAll
 160.314 -@released
 160.315 -*/
 160.316 -NONSHARABLE_CLASS(CCalEntryId) : public CBase
 160.317 -	{
 160.318 -public:
 160.319 -	IMPORT_C static CCalEntryId* NewL(TDesC8* aFlatData);
 160.320 -	IMPORT_C ~CCalEntryId();
 160.321 -	IMPORT_C TPtrC8 IdL();
 160.322 -	IMPORT_C TPtrC StoreFileNameL();
 160.323 -	IMPORT_C TCalTime RecurrenceIdL();
 160.324 -	IMPORT_C TCalTime InstanceTimeL() const;
 160.325 -	IMPORT_C TCalLocalUid LocalUidL() const;
 160.326 -private:
 160.327 -	CCalEntryId();
 160.328 -private:
 160.329 -	CCalEntryIdImpl* iImpl;
 160.330 -	};
 160.331 -
 160.332 -
 160.333 -/** Class representing the geographical location of a calendar entry.
 160.334 -This corresponds to the GEO property as defined in vCalendar / iCalendar (RFC 2445). It contains a latitude and a longitude.
 160.335 -@publishedPartner
 160.336 -@prototype
 160.337 -*/
 160.338 -NONSHARABLE_CLASS(CCalGeoValue) : public CBase
 160.339 -	{
 160.340 -public:
 160.341 -	IMPORT_C static CCalGeoValue* NewL();
 160.342 -	IMPORT_C ~CCalGeoValue();
 160.343 -	IMPORT_C void SetLatLongL(const TReal& aLatitude, const TReal& aLongitude);
 160.344 -	IMPORT_C TBool GetLatLong(TReal& aLatitude, TReal& aLongitude) const;
 160.345 -private:
 160.346 -	CCalGeoValue();
 160.347 -private:
 160.348 -	TReal iLatitude;
 160.349 -	TReal iLongitude;
 160.350 -	};
 160.351 -
 160.352 -#endif // __CALENTRY_H__
   161.1 --- a/epoc32/include/calentryview.h	Tue Mar 16 16:12:26 2010 +0000
   161.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   161.3 @@ -1,65 +0,0 @@
   161.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   161.5 -// All rights reserved.
   161.6 -// This component and the accompanying materials are made available
   161.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   161.8 -// which accompanies this distribution, and is available
   161.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  161.10 -//
  161.11 -// Initial Contributors:
  161.12 -// Nokia Corporation - initial contribution.
  161.13 -//
  161.14 -// Contributors:
  161.15 -//
  161.16 -// Description:
  161.17 -//
  161.18 -
  161.19 -#ifndef __CALENTRYVIEW_H__
  161.20 -#define __CALENTRYVIEW_H__
  161.21 -
  161.22 -#include <badesca.h>
  161.23 -#include <calentry.h>
  161.24 -
  161.25 -class MCalProgressCallBack;
  161.26 -class CCalSession;
  161.27 -class CCalEntryViewImpl;
  161.28 -
  161.29 -/** View class for accessing calendar entries.
  161.30 -
  161.31 -Once a session to a calendar file has been created, a view to the session
  161.32 -can be created.
  161.33 -
  161.34 -This view can be used to fetch, store and delete entries.
  161.35 -
  161.36 -@publishedAll
  161.37 -@released
  161.38 -*/
  161.39 -NONSHARABLE_CLASS(CCalEntryView) : public CBase
  161.40 -    {
  161.41 -public:
  161.42 -		
  161.43 -	IMPORT_C static CCalEntryView* NewL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack);
  161.44 -	IMPORT_C static CCalEntryView* NewL(CCalSession& aSession);
  161.45 -
  161.46 -	IMPORT_C ~CCalEntryView();
  161.47 -	
  161.48 -	IMPORT_C void FetchL(const TDesC8& aUid, RPointerArray<CCalEntry>& aCalEntryArray) const;
  161.49 -	IMPORT_C CCalEntry* FetchL(TCalLocalUid aId) const;
  161.50 -	
  161.51 -	IMPORT_C void GetIdsModifiedSinceDateL(const TCalTime& aTime, RArray<TCalLocalUid>& aIds) const;
  161.52 -	
  161.53 -	IMPORT_C void StoreL(const RPointerArray<CCalEntry>& aCalEntryList, TInt& aNumSuccessfulEntry);
  161.54 -	IMPORT_C void UpdateL(const RPointerArray<CCalEntry>& aCalEntryList, TInt& aNumSuccessfulEntry);
  161.55 -	
  161.56 -	IMPORT_C void DeleteL(const CDesC8Array& aUidList);
  161.57 -	IMPORT_C void DeleteL(const CCalEntry& aCalEntry);
  161.58 -	IMPORT_C void DeleteL(const CalCommon::TCalTimeRange& aCalTimeRange, CalCommon::TCalViewFilter aFilter, MCalProgressCallBack& aProgressCallBack);
  161.59 -	IMPORT_C void DeleteL(const RArray<TCalLocalUid>& aIds, TInt& aNumSuccessfulDeleted);
  161.60 -
  161.61 -private:
  161.62 -	CCalEntryView();
  161.63 -	void ConstructL(CCalSession& aSession, MCalProgressCallBack* aProgressCallBack);
  161.64 -private:
  161.65 -	CCalEntryViewImpl* iImpl;
  161.66 -	};
  161.67 -	
  161.68 -#endif // __CALENTRYVIEW_H__
   162.1 --- a/epoc32/include/calinstance.h	Tue Mar 16 16:12:26 2010 +0000
   162.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   162.3 @@ -1,54 +0,0 @@
   162.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   162.5 -// All rights reserved.
   162.6 -// This component and the accompanying materials are made available
   162.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   162.8 -// which accompanies this distribution, and is available
   162.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  162.10 -//
  162.11 -// Initial Contributors:
  162.12 -// Nokia Corporation - initial contribution.
  162.13 -//
  162.14 -// Contributors:
  162.15 -//
  162.16 -// Description:
  162.17 -//
  162.18 -
  162.19 -#ifndef __CALINSTANCE_H__
  162.20 -#define __CALINSTANCE_H__
  162.21 -
  162.22 -#include <caltime.h>
  162.23 -
  162.24 -class CCalEntry;
  162.25 -class CCalInstanceImpl;
  162.26 -
  162.27 -/** Class representing an instance of a calendar entry.
  162.28 -
  162.29 -A calendar entry (CCalEntry) can have any number of instances. 
  162.30 -A non-repeating entry will only have one instance.
  162.31 -Any further instances will appear if the entry has recurrence data.
  162.32 -
  162.33 -The time of an instance is the start time of that instance of the entry.
  162.34 -
  162.35 -@publishedAll
  162.36 -@released
  162.37 -*/
  162.38 -NONSHARABLE_CLASS(CCalInstance) : public CBase
  162.39 -	{
  162.40 -public:
  162.41 -	static CCalInstance* NewL(CCalEntry* aEntry, const TCalTime& iTime);
  162.42 -	IMPORT_C ~CCalInstance();
  162.43 -	
  162.44 -	IMPORT_C CCalEntry& Entry() const;
  162.45 -	IMPORT_C TCalTime Time() const;
  162.46 -	IMPORT_C TCalTime StartTimeL() const;
  162.47 -	IMPORT_C TCalTime EndTimeL() const;
  162.48 -
  162.49 -private:
  162.50 -	CCalInstance();
  162.51 -	void ConstructL(CCalEntry* aEntry, const TCalTime& aTime);
  162.52 -	
  162.53 -private:
  162.54 -	CCalInstanceImpl* iImpl;
  162.55 -	};
  162.56 -
  162.57 -#endif // __CALINSTANCE_H__
   163.1 --- a/epoc32/include/calinstanceview.h	Tue Mar 16 16:12:26 2010 +0000
   163.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   163.3 @@ -1,129 +0,0 @@
   163.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   163.5 -// All rights reserved.
   163.6 -// This component and the accompanying materials are made available
   163.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   163.8 -// which accompanies this distribution, and is available
   163.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  163.10 -//
  163.11 -// Initial Contributors:
  163.12 -// Nokia Corporation - initial contribution.
  163.13 -//
  163.14 -// Contributors:
  163.15 -//
  163.16 -// Description:
  163.17 -//
  163.18 -
  163.19 -#ifndef __CALINSTANCEVIEW_H__
  163.20 -#define __CALINSTANCEVIEW_H__
  163.21 -
  163.22 -#include <calentry.h>
  163.23 -#include <calentryview.h>
  163.24 -#include <calinstanceiterator.h>
  163.25 -
  163.26 -class CCalFindInstanceSettings;
  163.27 -class CCalInstance;
  163.28 -class CCalInstanceIterator;
  163.29 -class CCalInstanceViewImpl;
  163.30 -class CCalSession;
  163.31 -class MCalProgressCallBack;
  163.32 -class TCalTime;
  163.33 -class CCalLiteEntry;
  163.34 -class TAgnInstanceId;
  163.35 -struct TASShdAlarmedInstanceParams;
  163.36 -
  163.37 -/** View class for accessing instances of calendar entries.
  163.38 -
  163.39 -Once a session to a calendar file has been created, a view to the session
  163.40 -can be created.
  163.41 -
  163.42 -An instance is a calendar entry, a repeated instance of a calendar entry, 
  163.43 -or an RDate added to an entry.
  163.44 -
  163.45 -This view can be used to search for instances and also to delete instances.
  163.46 -
  163.47 -@publishedAll
  163.48 -@released
  163.49 -*/
  163.50 -NONSHARABLE_CLASS(CCalInstanceView) : public CBase
  163.51 -    {	
  163.52 -public:
  163.53 -
  163.54 -	/** Parameter struct for storing search data.
  163.55 -	This contains a descriptor to store search text and an enum to describe the text search behaviour.
  163.56 -
  163.57 -	@publishedAll
  163.58 -	@released
  163.59 -	*/
  163.60 -	class TCalSearchParams
  163.61 -		{
  163.62 -	public:
  163.63 -		IMPORT_C TCalSearchParams(const TDesC& aText, CalCommon::TCalSearchBehaviour aBehaviour);
  163.64 -		IMPORT_C const TDesC& Text() const;
  163.65 -		IMPORT_C CalCommon::TCalSearchBehaviour Behaviour() const;
  163.66 -	
  163.67 -	private:
  163.68 -		TPtrC iSearchText;
  163.69 -		CalCommon::TCalSearchBehaviour iSearchBehaviour;
  163.70 -		};
  163.71 -		
  163.72 -	IMPORT_C static CCalInstanceView* NewL(CCalSession& aSession, MCalProgressCallBack& aProgressCallBack);
  163.73 -	IMPORT_C static CCalInstanceView* NewL(CCalSession& aSession);
  163.74 -	IMPORT_C ~CCalInstanceView();
  163.75 -	
  163.76 -	IMPORT_C void FindInstanceL(RPointerArray<CCalInstance>& aInstanceList, 
  163.77 -					   			CalCommon::TCalViewFilter aCalViewFilter, 
  163.78 -					   			const CalCommon::TCalTimeRange& aTimeRange) const;
  163.79 -	
  163.80 -	IMPORT_C void FindInstanceL(RPointerArray<CCalInstance>& aMatchedInstanceList,
  163.81 -								CalCommon::TCalViewFilter aCalViewFilter, 
  163.82 -								const CalCommon::TCalTimeRange& aTimeRange, 
  163.83 -								const TCalSearchParams& aSearchParams) const;
  163.84 -					   
  163.85 -	IMPORT_C CCalInstanceIterator* FindInstanceL(const CCalFindInstanceSettings& aSettings) const;
  163.86 -
  163.87 -    IMPORT_C void FindAlarmedInstanceL(RPointerArray<CCalInstance>& aAlarmedInstanceList,    
  163.88 -    								   TASShdAlarmedInstanceParams aAlarmedInstanceParams) const;	
  163.89 -	
  163.90 -	IMPORT_C void DeleteL(CCalInstance* aInstance, CalCommon::TRecurrenceRange aWhichInstances);
  163.91 -								
  163.92 -	IMPORT_C TCalTime NextInstanceL(CalCommon::TCalViewFilter aCalViewFilter, const TCalTime& aStartDate) const;
  163.93 -	IMPORT_C TCalTime PreviousInstanceL(CalCommon::TCalViewFilter aCalViewFilter, const TCalTime& aStartDate) const;
  163.94 -	
  163.95 -private:
  163.96 -	CCalInstanceView();
  163.97 -	void ConstructL(CCalSession& aSession, MCalProgressCallBack* aProgressCallBack);
  163.98 -	
  163.99 -private: 
 163.100 -	CCalInstanceViewImpl* iImpl;
 163.101 -	};
 163.102 -
 163.103 -/** Class for specifying the search criteria for use in @see CCalInstanceView::FindInstanceL.
 163.104 -
 163.105 -@publishedPartner
 163.106 -@released
 163.107 -*/
 163.108 -NONSHARABLE_CLASS(CCalFindInstanceSettings) : public CBase
 163.109 -	{
 163.110 -public:
 163.111 -	IMPORT_C static CCalFindInstanceSettings* NewL(CalCommon::TCalViewFilter aFilter, const CalCommon::TCalTimeRange& aTimeRange);
 163.112 -	IMPORT_C ~CCalFindInstanceSettings();
 163.113 -
 163.114 -	IMPORT_C void SetFilter(CalCommon::TCalViewFilter aFilter);
 163.115 -	IMPORT_C void SetTimeRange(const CalCommon::TCalTimeRange& aTimeRange);
 163.116 -	IMPORT_C void SetTextSearchL(const CCalInstanceView::TCalSearchParams& aSearchParams);
 163.117 -	
 163.118 -	CalCommon::TCalSearchBehaviour Behaviour() const;
 163.119 -	CalCommon::TCalViewFilter Filter() const;
 163.120 -	const CalCommon::TCalTimeRange TimeRange() const;
 163.121 -	const TDesC& Text() const;
 163.122 -private:
 163.123 -	CCalFindInstanceSettings(CalCommon::TCalViewFilter aFilter, const CalCommon::TCalTimeRange& aTimeRange);
 163.124 -
 163.125 -private:
 163.126 -	CalCommon::TCalTimeRange		iTimeRange;
 163.127 -	CalCommon::TCalViewFilter		iFilter;
 163.128 -	HBufC*							iSearchText;
 163.129 -	CalCommon::TCalSearchBehaviour	iSearchBehaviour;
 163.130 -	};
 163.131 -	
 163.132 -#endif // __CALINSTANCEVIEW_H__
   164.1 --- a/epoc32/include/calinterimapipanic.h	Tue Mar 16 16:12:26 2010 +0000
   164.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   164.3 @@ -1,104 +0,0 @@
   164.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   164.5 -// All rights reserved.
   164.6 -// This component and the accompanying materials are made available
   164.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   164.8 -// which accompanies this distribution, and is available
   164.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  164.10 -//
  164.11 -// Initial Contributors:
  164.12 -// Nokia Corporation - initial contribution.
  164.13 -//
  164.14 -// Contributors:
  164.15 -//
  164.16 -// Description:
  164.17 -//
  164.18 -
  164.19 -/**
  164.20 - @file
  164.21 - @publishedAll
  164.22 - @released
  164.23 -*/
  164.24 -
  164.25 -#ifndef __CALINTERIMAPIPANIC_H__
  164.26 -#define __CALINTERIMAPIPANIC_H__
  164.27 -
  164.28 - /**
  164.29 -Panics raised from CallinterimAPI
  164.30 - */
  164.31 -enum TCalInterimApiPanicCode
  164.32 -	{
  164.33 -
  164.34 -	/**
  164.35 -	Trying to create a CCalCategory object and a wrong type is passed.
  164.36 -	*/
  164.37 -	EInvalidCategoryParameter		= 0,
  164.38 -
  164.39 -	/**
  164.40 -	Attempt to pass wrong type of TChangeEntryType.
  164.41 -	*/
  164.42 -	EInvalidChangeEntryType			= 1,
  164.43 -
  164.44 -	/**
  164.45 -	Trying to fetch an undefined TStatus/TCalStatus of an Entry.
  164.46 -	*/
  164.47 -	EInvalidEntryStatus				= 2,
  164.48 -
  164.49 -	/**
  164.50 -	The TType of an Entry dosen't match the standard types
  164.51 -	*/
  164.52 -	EInvalidEntryType				= 3,
  164.53 -
  164.54 -	/**
  164.55 -	Atttempt to create an object using NULL object of type CCalEntry.
  164.56 -	*/
  164.57 -	EInstanceCreatedFromNullEntry	= 4,
  164.58 -
  164.59 -	/**
  164.60 -	Passed invalid Recurrence Range.
  164.61 -	*/
  164.62 -	EInvalidRecurrenceRangeParameter= 5,
  164.63 -
  164.64 -	/**
  164.65 -	Attempt to pass a NULL object of type CCalInstance.
  164.66 -	*/
  164.67 -	ENullInstanceParameter			= 6,
  164.68 -
  164.69 -	/**
  164.70 -	Wrong CCalEntry TType passed to API
  164.71 -	*/
  164.72 -	EInvalidEntryTypeParameter		= 7,
  164.73 -
  164.74 -	/**
  164.75 -	Attempt to create an invalid repeat rule.
  164.76 -	*/
  164.77 -	ERepeatRuleBitFailure			= 8,
  164.78 -
  164.79 -	/**
  164.80 -	Attempt to pass incorrect TCalRRule TType.
  164.81 -	*/
  164.82 -	EInvalidRepeatRuleType			= 9,
  164.83 -		
  164.84 -	/**
  164.85 -    Trying to set a repeat rule while one has already been set.
  164.86 -	*/
  164.87 -	ERepeatRuleTypeAlreadySet		= 10,
  164.88 -
  164.89 -	/**
  164.90 -	Raised by the Class CCalSession's destructor if all the opened references
  164.91 -	have not been closed before destruction of CCalSession object.
  164.92 -	*/
  164.93 -	ESessionHasOpenReferences		= 11,
  164.94 -
  164.95 -	/**
  164.96 -	The type of CCalAttachment is unknown.
  164.97 -	*/
  164.98 -	EInvalidAttachmentType			= 12,
  164.99 -	
 164.100 -	/**
 164.101 -	The instance iterator index is corrupt.
 164.102 -	*/
 164.103 -	EInstanceIteratorIndexCorrupt	= 13
 164.104 -	
 164.105 -	};
 164.106 -
 164.107 -#endif 
   165.1 --- a/epoc32/include/caliterator.h	Tue Mar 16 16:12:26 2010 +0000
   165.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   165.3 @@ -1,54 +0,0 @@
   165.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   165.5 -// All rights reserved.
   165.6 -// This component and the accompanying materials are made available
   165.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   165.8 -// which accompanies this distribution, and is available
   165.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  165.10 -//
  165.11 -// Initial Contributors:
  165.12 -// Nokia Corporation - initial contribution.
  165.13 -//
  165.14 -// Contributors:
  165.15 -//
  165.16 -// Description:
  165.17 -//
  165.18 -
  165.19 -#ifndef __CALITER_H__
  165.20 -#define __CALITER_H__
  165.21 -
  165.22 -
  165.23 -#include <e32base.h>
  165.24 -
  165.25 -class CCalSession;
  165.26 -class CCalIteratorImpl;
  165.27 -
  165.28 -/** 
  165.29 -An iterator for iterating though all the entries in the calendar store.
  165.30 -
  165.31 -This may be used by a synchronisation application to iterate all entries in the file to find entries that
  165.32 -have been added\\deleted between two synchronisations. 
  165.33 -
  165.34 -The application must not create the entry view or instance view while iterating through the entries. 
  165.35 -
  165.36 -@publishedAll
  165.37 -@released
  165.38 -*/
  165.39 -NONSHARABLE_CLASS(CCalIter) : public CBase
  165.40 -
  165.41 -    {
  165.42 -public:
  165.43 -	IMPORT_C static CCalIter* NewL(CCalSession& aSession);
  165.44 -	IMPORT_C ~CCalIter();
  165.45 -
  165.46 -	IMPORT_C const TDesC8& FirstL();
  165.47 -	IMPORT_C const TDesC8& NextL();
  165.48 -
  165.49 -private:
  165.50 -	CCalIter();
  165.51 -	void ConstructL(CCalSession& aSession);
  165.52 -
  165.53 -private:
  165.54 -	CCalIteratorImpl* iCalIteratorImpl;
  165.55 -	};
  165.56 -	
  165.57 -#endif // __CALITER_H__
   166.1 --- a/epoc32/include/calnotification.h	Tue Mar 16 16:12:26 2010 +0000
   166.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   166.3 @@ -1,50 +0,0 @@
   166.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   166.5 -// All rights reserved.
   166.6 -// This component and the accompanying materials are made available
   166.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   166.8 -// which accompanies this distribution, and is available
   166.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  166.10 -//
  166.11 -// Initial Contributors:
  166.12 -// Nokia Corporation - initial contribution.
  166.13 -//
  166.14 -// Contributors:
  166.15 -//
  166.16 -// Description:
  166.17 -//
  166.18 -
  166.19 -#ifndef __CALNOTIFICATION_H__
  166.20 -#define __CALNOTIFICATION_H__
  166.21 -
  166.22 -/** The calendar publish and subscribe category
  166.23 -@publishedAll
  166.24 -
  166.25 -@released
  166.26 -*/
  166.27 -const TUid KCalPubSubCategory = { 0x10003a5b };
  166.28 -
  166.29 -/** Used for subcribing to either todos or event changes
  166.30 -@publishedAll
  166.31 -@released
  166.32 -*/
  166.33 -enum TCalPubSubValues
  166.34 -	{
  166.35 -	/** subscribe to todo notifications */
  166.36 -	ECalPubSubTodoNotification,
  166.37 -	/** subscribe to event notifications */
  166.38 -	ECalPubSubEventNotification,
  166.39 -	};
  166.40 -	
  166.41 -/** The publish and subscribe data 
  166.42 -@publishedAll
  166.43 -@released
  166.44 -*/
  166.45 -struct TCalPubSubData
  166.46 -	{
  166.47 -	/** The time that the calendar change took place, in universal (UTC) time */
  166.48 -	TTime iTimeOfChangeUtc;
  166.49 -	/** The filename hashed into a 4-byte integer. CalInterimAPI provides a method to find the filename from this value. */
  166.50 -	TUint32 iFileNameHash;
  166.51 -	};
  166.52 -
  166.53 -#endif // __CALNOTIFICATION_H__
   167.1 --- a/epoc32/include/calprogresscallback.h	Tue Mar 16 16:12:26 2010 +0000
   167.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   167.3 @@ -1,54 +0,0 @@
   167.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   167.5 -// All rights reserved.
   167.6 -// This component and the accompanying materials are made available
   167.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   167.8 -// which accompanies this distribution, and is available
   167.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  167.10 -//
  167.11 -// Initial Contributors:
  167.12 -// Nokia Corporation - initial contribution.
  167.13 -//
  167.14 -// Contributors:
  167.15 -//
  167.16 -// Description:
  167.17 -//
  167.18 -
  167.19 -#ifndef __CALPROGRESSCALLBACK_H__
  167.20 -#define __CALPROGRESSCALLBACK_H__
  167.21 -
  167.22 -class MCalProgressCallBack
  167.23 -/** A call back class to show the progress of long-running operations. 
  167.24 -
  167.25 -When a long-running operation is carried out on the instance view or the entry 
  167.26 -view, this class is used to signal its progress, and when the function is complete.
  167.27 -
  167.28 -@publishedAll
  167.29 -@released
  167.30 -*/
  167.31 -	{
  167.32 -public:
  167.33 -
  167.34 -	/** Progress callback.
  167.35 -	
  167.36 -	This calls the observing class with the percentage complete of the current operation.
  167.37 -	
  167.38 -	@param aPercentageCompleted The percentage complete. */
  167.39 -	virtual void Progress(TInt aPercentageCompleted) = 0;
  167.40 -	
  167.41 -	/** Progress callback.
  167.42 -	
  167.43 -	This calls the observing class when the current operation is finished.
  167.44 -	
  167.45 -	@param aError The error if the operation failed, or KErrNone if successful. */
  167.46 -	virtual void Completed(TInt aError) = 0;
  167.47 -	
  167.48 -	/** 
  167.49 -    Asks the observing class whether progress callbacks are required. This
  167.50 -    is called once only to check if callbacks are enabled.
  167.51 -	
  167.52 -	@return If the observing class returns EFalse, then the Progress() function will not be called. 
  167.53 -    */
  167.54 -	virtual TBool NotifyProgress() = 0;
  167.55 -	};
  167.56 -	
  167.57 -#endif // __CALPROGRESSCALLBACK_H__
   168.1 --- a/epoc32/include/calrrule.h	Tue Mar 16 16:12:26 2010 +0000
   168.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   168.3 @@ -1,151 +0,0 @@
   168.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   168.5 -// All rights reserved.
   168.6 -// This component and the accompanying materials are made available
   168.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   168.8 -// which accompanies this distribution, and is available
   168.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  168.10 -//
  168.11 -// Initial Contributors:
  168.12 -// Nokia Corporation - initial contribution.
  168.13 -//
  168.14 -// Contributors:
  168.15 -//
  168.16 -// Description:
  168.17 -//
  168.18 -
  168.19 -#ifndef __CALRRULE_H__
  168.20 -#define __CALRRULE_H__
  168.21 -
  168.22 -#include <caltime.h>
  168.23 -
  168.24 -/** Class representing iCal repeat types.
  168.25 -
  168.26 -This supports the following standard iCal properties:
  168.27 -- FREQ (rule type), 
  168.28 -- DTSTART (start date), 
  168.29 -- UNTIL (end date), 
  168.30 -- COUNT (number of instances),
  168.31 -- INTERVAL (interval between instances), 
  168.32 -- BYDAY, 
  168.33 -- BYMONTHDAY, 
  168.34 -- BYYEARDAY, 
  168.35 -- WKST (start day of week).
  168.36 -
  168.37 -Note that the repeat rule type (FREQ) must be set before any of the following 
  168.38 -properties can be set, since their behaviour is dependent on the rule type:
  168.39 -BYDAY, BYMONTHDAY, BYYEARDAY
  168.40 -
  168.41 -The WKST parameter is only significant in weekly repeat rules with an interval of 
  168.42 -greater than 1.
  168.43 -
  168.44 -The repeat rule type may not be changed once it has been set.
  168.45 -
  168.46 -If the start date of the entry does not match an instance of its repeat rule then 
  168.47 -the entry's start date will be moved forward to the first matching instance. For example,
  168.48 -if the rule repeats every Wednesday but the start date of the entry is Monday, then the 
  168.49 -start date will be changed to the Wednesday.
  168.50 -
  168.51 -@publishedAll
  168.52 -@released
  168.53 -*/
  168.54 -NONSHARABLE_CLASS(TCalRRule)
  168.55 -	{
  168.56 -public:
  168.57 -	/** Types of repeat rule. 
  168.58 -	
  168.59 -	@publishedAll
  168.60 -	@released
  168.61 -	*/	
  168.62 -	enum TType 
  168.63 -		{
  168.64 -		/** The type has not yet been defined. */
  168.65 -		EInvalid=0,
  168.66 -		/** Rule which repeats based on a number of days. */
  168.67 -		EDaily,
  168.68 -		/** Rule which repeats based on a number of weeks. */
  168.69 -		EWeekly,
  168.70 -		/** Rule which repeats based on a number of months. */
  168.71 -		EMonthly,
  168.72 -		/** Rule which repeats based on a number of years. */
  168.73 -		EYearly,
  168.74 -		};
  168.75 -		
  168.76 -	/** Class to represent a weekday within a month.
  168.77 -	
  168.78 -	Valid values of iWeekInMonth are 1, 2, 3, 4 for the 1st, 2nd, 3rd and 4th week of 
  168.79 -	the month, or -1 for the last week of the month.
  168.80 -
  168.81 -	For example:
  168.82 -	The 3rd Wednesday would have iDay = EWednesday and iWeekInMonth = 3.
  168.83 -	The last Sunday would have iDay = ESunday and iWeekInMonth = -1.
  168.84 -	
  168.85 -	@publishedAll
  168.86 -	@released
  168.87 -	*/
  168.88 -	class TDayOfMonth
  168.89 -		{
  168.90 -	public:
  168.91 -		IMPORT_C TDayOfMonth(TDay aDay, TInt8 aWeekInMonth);
  168.92 -		IMPORT_C TDay Day() const;
  168.93 -		IMPORT_C TInt8 WeekInMonth() const;
  168.94 -	private:
  168.95 -		TDay iDay;
  168.96 -		TInt8 iWeekInMonth;
  168.97 -		};
  168.98 -	
  168.99 -	IMPORT_C TCalRRule();
 168.100 -	IMPORT_C TCalRRule(TType aType);
 168.101 -	
 168.102 -	IMPORT_C void SetType(TType aType);
 168.103 -	IMPORT_C TType Type() const;
 168.104 -	
 168.105 -	IMPORT_C void SetDtStart(const TCalTime& aTime);
 168.106 -	IMPORT_C TCalTime DtStart() const;
 168.107 -		
 168.108 -	IMPORT_C void SetUntil(const TCalTime& aTime);
 168.109 -	IMPORT_C TCalTime Until() const;
 168.110 -	
 168.111 -	IMPORT_C void SetCount(TUint aCount);
 168.112 -	IMPORT_C TUint Count() const;
 168.113 -	
 168.114 -	IMPORT_C void SetInterval(TInt aInterval);
 168.115 -	IMPORT_C TInt Interval() const;
 168.116 -	
 168.117 -	IMPORT_C void SetByDay(const RArray<TDay>& aDays); 
 168.118 -	IMPORT_C void GetByDayL(RArray<TDay>& aDays) const;
 168.119 -	
 168.120 -	IMPORT_C void SetByDay(const RArray<TDayOfMonth>& aDays); 
 168.121 -	IMPORT_C void GetByDayL(RArray<TDayOfMonth>& aDays) const;
 168.122 -
 168.123 -	IMPORT_C void SetByMonthDay(const RArray<TInt>& aMonthDays);
 168.124 -	IMPORT_C void GetByMonthDayL(RArray<TInt>& aMonthDays) const;
 168.125 -
 168.126 -	IMPORT_C void SetByMonth(const RArray<TMonth> aMonths);
 168.127 -	IMPORT_C void GetByMonthL(RArray<TMonth>& aMonths) const;
 168.128 -
 168.129 -	IMPORT_C void SetWkSt(TDay aDay);
 168.130 -	IMPORT_C TDay WkSt() const;
 168.131 -
 168.132 -	void SetUntilAndCount(const TCalTime& aTime, TUint aCount);
 168.133 -
 168.134 -private:
 168.135 -	void InitialiseData();
 168.136 -
 168.137 -	TUint MapToBitsWeekdays(TDay aDay);
 168.138 -	
 168.139 -	TBool GetNthBit(TUint aNum) const;
 168.140 -	void SetNthBit(TUint aNum);
 168.141 -		
 168.142 -private:
 168.143 -	TUint64	iBuffer; 	// stores BYDAY/BYMONTHDAY
 168.144 -	TCalTime iDtStart;
 168.145 -	TCalTime iUntil;
 168.146 -	TInt32  iReserved;
 168.147 -	TInt32  iReserved2;
 168.148 -	TInt	iCount;
 168.149 -	TDay	iWkSt;
 168.150 -	TType	iType;
 168.151 -	TUint8	iInterval;
 168.152 -	};
 168.153 -
 168.154 -#endif // __CALRRULE_H__
   169.1 --- a/epoc32/include/calsession.h	Tue Mar 16 16:12:26 2010 +0000
   169.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   169.3 @@ -1,106 +0,0 @@
   169.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   169.5 -// All rights reserved.
   169.6 -// This component and the accompanying materials are made available
   169.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   169.8 -// which accompanies this distribution, and is available
   169.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  169.10 -//
  169.11 -// Initial Contributors:
  169.12 -// Nokia Corporation - initial contribution.
  169.13 -//
  169.14 -// Contributors:
  169.15 -//
  169.16 -// Description:
  169.17 -//
  169.18 -
  169.19 -#ifndef __CALSESSION_H__
  169.20 -#define __CALSESSION_H__
  169.21 -
  169.22 -#include <badesca.h>
  169.23 -
  169.24 -#include <calchangecallback.h>
  169.25 -#include <calnotification.h>
  169.26 -
  169.27 -class CCalSessionImpl;
  169.28 -class MCalChangeCallBack2;
  169.29 -
  169.30 -/** A handle to the calendar file.
  169.31 -
  169.32 -When the client instantiates a CCalSession, it will connect to the calendar server. 
  169.33 -In turn, the client can use its APIs, for instance to create or open a calendar file.
  169.34 -
  169.35 -The agenda data in the file can be accessed as entries. To access the entries, clients should
  169.36 -use class CCalEntryView or CCalInstanceView to process the entry data. However, both view classes 
  169.37 -require the handle to the file which is represented by this class.
  169.38 -
  169.39 -A calendar file can be opened on any writable drive. Note that if the file is opened 
  169.40 -on a removable media and that media is removed, operations will leave with KErrNotReady.
  169.41 -This error can also happen when trying to access file attachments on removed media.
  169.42 -When this error occurs, the user should close the CCalSession and re-open it once the media 
  169.43 -has been replaced. 
  169.44 -It is recommended that when using a calendar file on removable media, the user should watch for when 
  169.45 -the media is removed / replaced using the RFs::NotifyChange API.
  169.46 -
  169.47 -The session object must not be destroyed until all the objects which where created by referencing it 
  169.48 -have been destroyed.
  169.49 -
  169.50 -@publishedAll
  169.51 -@released
  169.52 -*/
  169.53 -NONSHARABLE_CLASS(CCalSession) : public CBase
  169.54 -    {
  169.55 -public:
  169.56 -	IMPORT_C static CCalSession* NewL();
  169.57 -	IMPORT_C ~CCalSession();
  169.58 -
  169.59 -	IMPORT_C void CreateCalFileL(const TDesC&  aFileName) const;
  169.60 -	IMPORT_C void OpenL(const TDesC& aFileName) const;
  169.61 -	IMPORT_C void OpenL(const TDesC& aFileName, CalCommon::TCalFileVersionSupport& aFileSupportStatus) const;
  169.62 -	IMPORT_C const TDesC& DefaultFileNameL() const; 
  169.63 -	IMPORT_C void DeleteCalFileL(const TDesC& aFileName) const;
  169.64 -	IMPORT_C CDesCArray* ListCalFilesL() const;
  169.65 -
  169.66 -	IMPORT_C void StartChangeNotification(MCalChangeCallBack2& aCallBack, const CCalChangeNotificationFilter& aFilter);
  169.67 -	IMPORT_C void StopChangeNotification();
  169.68 -	IMPORT_C void DisableChangeBroadcast();
  169.69 -	IMPORT_C void EnableChangeBroadcast();
  169.70 -	
  169.71 -	IMPORT_C void EnablePubSubNotificationsL();
  169.72 -	IMPORT_C void DisablePubSubNotificationsL();
  169.73 -	
  169.74 -	IMPORT_C void FileIdL(TCalFileId& aCalFileId) const;
  169.75 -	IMPORT_C void GetFileNameL(TCalPubSubData aPubSubData, TDes& aFileName) const;
  169.76 -	IMPORT_C TBool IsFileNameL(TCalPubSubData aPubSubData, const TDesC& aFileName) const;
  169.77 -	IMPORT_C TBool IsOpenedFileL(TCalPubSubData aPubSubData) const;
  169.78 -
  169.79 -	// debug only
  169.80 -/**
  169.81 -@publishedPartner
  169.82 -@released
  169.83 -*/
  169.84 -	IMPORT_C void _DebugSetHeapFailL(RAllocator::TAllocFail aFail, TInt aRate);
  169.85 -
  169.86 -/**
  169.87 -@publishedPartner
  169.88 -@released
  169.89 -*/
  169.90 -	IMPORT_C TInt _DebugRequestAllocatedCellsL();
  169.91 -
  169.92 -	// deprecated
  169.93 -	IMPORT_C void StartChangeNotification(MCalChangeCallBack* aCallBack, MCalChangeCallBack::TChangeEntryType aChangeEntryType,	TBool aIncludeUndatedTodos,	TTime aFilterStartTime,	TTime aFilterEndTime);
  169.94 -	
  169.95 -	IMPORT_C void __dbgClearTzClientCacheL(TBool aRestartCaching);
  169.96 -
  169.97 -	IMPORT_C TInt _DebugRequestAllocatedHeapSizeL();
  169.98 -	
  169.99 -public:
 169.100 -	CCalSessionImpl& Impl() const;
 169.101 -	  
 169.102 -private:
 169.103 -	CCalSession();
 169.104 -	void ConstructL();
 169.105 -private:
 169.106 -	CCalSessionImpl* iImpl;
 169.107 -	};
 169.108 -	
 169.109 -#endif // __CALSESSION_H__
   170.1 --- a/epoc32/include/caltime.h	Tue Mar 16 16:12:26 2010 +0000
   170.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   170.3 @@ -1,68 +0,0 @@
   170.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   170.5 -// All rights reserved.
   170.6 -// This component and the accompanying materials are made available
   170.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   170.8 -// which accompanies this distribution, and is available
   170.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  170.10 -//
  170.11 -// Initial Contributors:
  170.12 -// Nokia Corporation - initial contribution.
  170.13 -//
  170.14 -// Contributors:
  170.15 -//
  170.16 -// Description:
  170.17 -//
  170.18 -
  170.19 -#ifndef __CALTIME_H__
  170.20 -#define __CALTIME_H__
  170.21 -
  170.22 -#include <e32base.h>
  170.23 -
  170.24 -/** Represents a date/time, as used in the Calendar API.
  170.25 -
  170.26 -This stores a single TTime, which may be set in UTC or local or floating local 
  170.27 -time, and can be retrieved in either UTC or system local time.
  170.28 -
  170.29 -There are references to null time throughout the Interim API - this means Time::NullTTime().
  170.30 -
  170.31 -@publishedAll
  170.32 -@released
  170.33 -*/
  170.34 -NONSHARABLE_CLASS(TCalTime)
  170.35 -	{
  170.36 -public:
  170.37 -
  170.38 -	/** The time mode for a calendar time
  170.39 -	@publishedAll
  170.40 -	@released
  170.41 -	*/
  170.42 -	enum TTimeMode
  170.43 -		{
  170.44 -		/** Floating time. */
  170.45 -		EFloating,
  170.46 -		/** Fixed time in UTC format. */
  170.47 -		EFixedUtc,
  170.48 -		/** Fixed time in local time with time zone reference format. */
  170.49 -		EFixedTimeZone
  170.50 -		};
  170.51 -
  170.52 -public:
  170.53 -	IMPORT_C TCalTime();
  170.54 -	
  170.55 -	IMPORT_C void SetTimeLocalFloatingL(const TTime& aLocalTime);
  170.56 -	IMPORT_C void SetTimeUtcL(const TTime& aUtcTime);
  170.57 -	IMPORT_C void SetTimeLocalL(const TTime& aLocalTime);
  170.58 -	IMPORT_C TTimeMode TimeMode() const; 
  170.59 -	IMPORT_C TTime TimeUtcL() const;
  170.60 -	IMPORT_C TTime TimeLocalL() const;
  170.61 -	
  170.62 -	IMPORT_C static TTime MaxTime();
  170.63 -	IMPORT_C static TTime MinTime();
  170.64 -private:
  170.65 -	TTime	iTime;
  170.66 -	TUint8	iTimeMode;  
  170.67 -	TInt8	iReserved1;
  170.68 -	TInt16 	iReserved2;
  170.69 -	};
  170.70 -	
  170.71 -#endif // __CALTIME_H__
   171.1 --- a/epoc32/include/caluser.h	Tue Mar 16 16:12:26 2010 +0000
   171.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   171.3 @@ -1,163 +0,0 @@
   171.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   171.5 -// All rights reserved.
   171.6 -// This component and the accompanying materials are made available
   171.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   171.8 -// which accompanies this distribution, and is available
   171.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  171.10 -//
  171.11 -// Initial Contributors:
  171.12 -// Nokia Corporation - initial contribution.
  171.13 -//
  171.14 -// Contributors:
  171.15 -//
  171.16 -// Description:
  171.17 -//
  171.18 -
  171.19 -#ifndef __CALUSER_H__
  171.20 -#define __CALUSER_H__
  171.21 -
  171.22 -#include <e32base.h>
  171.23 -
  171.24 -class CCalUserImpl;
  171.25 -
  171.26 -/** Class representing a calendar user.
  171.27 -
  171.28 -A calendar user is the base class representation of a meeting participant.
  171.29 -It contains attributes common to all calendar users.
  171.30 -
  171.31 -Contains methods to store and retrieve a user's ADDRESS, SENT-BY and CN
  171.32 -fields.
  171.33 -
  171.34 -@publishedAll
  171.35 -@released
  171.36 -*/
  171.37 -NONSHARABLE_CLASS(CCalUser) : public CBase
  171.38 -	{
  171.39 -public:
  171.40 -	IMPORT_C static CCalUser* NewL(const TDesC& aAddress);
  171.41 -	IMPORT_C static CCalUser* NewL(const TDesC& aAddress, const TDesC& aSentBy);
  171.42 -	IMPORT_C ~CCalUser();
  171.43 -
  171.44 -	IMPORT_C void SetCommonNameL(const TDesC& aCommonName);
  171.45 -	IMPORT_C const TDesC& Address() const;
  171.46 -	IMPORT_C const TDesC& CommonName() const;
  171.47 -	IMPORT_C const TDesC& SentBy() const;
  171.48 -public:
  171.49 -	static CCalUser* NewL(CCalUserImpl* aImpl);
  171.50 -
  171.51 -	CCalUserImpl* Impl() const;
  171.52 -protected:
  171.53 -	CCalUser();
  171.54 -	CCalUser(CCalUserImpl* aImpl);
  171.55 -	void ConstructL(const TDesC& aAddress);
  171.56 -	void ConstructL(const TDesC& aAddress, const TDesC& aSentBy);
  171.57 -protected:
  171.58 -/** Handle to CCalUser implementation */
  171.59 -	CCalUserImpl*	iImpl;
  171.60 -	};
  171.61 -
  171.62 -
  171.63 -/** Class representing an attendee of an event.
  171.64 -
  171.65 -CCalAttendee is a specialization of the CCalUser class.
  171.66 -
  171.67 -This class contains extra methods to store and retrieve an Attendee's
  171.68 -ROLE, PART-STAT, and RSVP fields.
  171.69 -
  171.70 -@publishedAll
  171.71 -@released
  171.72 -*/
  171.73 -NONSHARABLE_CLASS(CCalAttendee) : public CCalUser
  171.74 -	{
  171.75 -public:
  171.76 -	/** Attendee's role. 
  171.77 -	@publishedAll
  171.78 -	@released
  171.79 -	*/
  171.80 -	enum TCalRole
  171.81 -		{
  171.82 -		/** A required participant of the event. */
  171.83 -		EReqParticipant=0,
  171.84 -		/** An optional participant of the event. */
  171.85 -		EOptParticipant,
  171.86 -		/** A non-participant of the event. */
  171.87 -		ENonParticipant,
  171.88 -		/** This participant will chair the event. */
  171.89 -		EChair,
  171.90 -		
  171.91 -		/** Indicates an attendee at the event or todo. This value is supported in vCalendar only. */
  171.92 -		EVCalAttendee,
  171.93 -		/** Indicates a delegate of another attendee. This value is supported in vCalendar only. */
  171.94 -		EVCalDelegate,
  171.95 -		/** Indicates owner of the event or todo (not the same as phone owner). This value is supported in vCalendar only. */
  171.96 -		EVCalOwner,
  171.97 -		};
  171.98 -
  171.99 -	/** Attendee's status
 171.100 -	@publishedAll
 171.101 -	@released
 171.102 -	*/
 171.103 -	enum TCalStatus
 171.104 -		{
 171.105 -		/** Action is required by attendee. */
 171.106 -		ENeedsAction=0,
 171.107 -		/** Attendee has accepted request. */
 171.108 -		EAccepted,
 171.109 -		/** Attendee has tentatively accepted the request. */
 171.110 -		ETentative,
 171.111 -		/** Attendee's presence is confirmed. */
 171.112 -		EConfirmed,
 171.113 -		/** Attendee has declined request. */
 171.114 -		EDeclined,
 171.115 -		/** The required action has been completed by attendee. */
 171.116 -		ECompleted,
 171.117 -		/** Attendee has delegated the request to another person. */
 171.118 -		EDelegated,
 171.119 -		/**	A to-do action in the process of being completed. */
 171.120 -		EInProcess,
 171.121 -		
 171.122 -		/** An entry has been sent. This value is supported in vCalendar only. */
 171.123 -		EVCalSent,
 171.124 -		/** An entry has been received. This value is supported in vCalendar only. */
 171.125 -		EVCalXReceived,
 171.126 -		};
 171.127 -	
 171.128 -	/** Attendee's expected participation response.
 171.129 -	This property is supported in vCalendar only. It is not a property of iCalendar.
 171.130 -	@publishedAll
 171.131 -	@released
 171.132 -	*/
 171.133 -	enum TVCalExpect
 171.134 -		{
 171.135 -		/** Indicates request is for your information. */
 171.136 -		EVCalFyi,
 171.137 -		/** Indicates presence is definitely required. */
 171.138 -		EVCalRequire,
 171.139 -		/** Indicates presence is being requested. */
 171.140 -		EVCalRequest, 
 171.141 -		/** Indicates an immediate response needed. */
 171.142 -		EVCalImmediate 
 171.143 -		};
 171.144 -
 171.145 -public:
 171.146 -	IMPORT_C static CCalAttendee* NewL(const TDesC& aAddress);
 171.147 -	IMPORT_C static CCalAttendee* NewL(const TDesC& aAddress, const TDesC& aSentBy);
 171.148 -
 171.149 -	IMPORT_C void SetRoleL(TCalRole aRole);
 171.150 -	IMPORT_C void SetStatusL(TCalStatus aStatus);
 171.151 -	IMPORT_C void SetResponseRequested(TBool aRsvp);
 171.152 -	IMPORT_C void SetVCalExpect(TVCalExpect aExpected);
 171.153 -
 171.154 -	IMPORT_C TCalRole RoleL() const;
 171.155 -	IMPORT_C TCalStatus StatusL() const;
 171.156 -	IMPORT_C TBool ResponseRequested() const;
 171.157 -	IMPORT_C TVCalExpect VCalExpect() const;
 171.158 -public:
 171.159 -	static CCalAttendee* NewL(CCalUserImpl* aImpl);
 171.160 -private:
 171.161 -	CCalAttendee();
 171.162 -	CCalAttendee(CCalUserImpl* aImpl);
 171.163 -	};
 171.164 -
 171.165 -
 171.166 -#endif // __CALUSER_H__
   172.1 --- a/epoc32/include/cbioasyncwaiter.h	Tue Mar 16 16:12:26 2010 +0000
   172.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   172.3 @@ -1,52 +0,0 @@
   172.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   172.5 -// All rights reserved.
   172.6 -// This component and the accompanying materials are made available
   172.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   172.8 -// which accompanies this distribution, and is available
   172.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  172.10 -//
  172.11 -// Initial Contributors:
  172.12 -// Nokia Corporation - initial contribution.
  172.13 -//
  172.14 -// Contributors:
  172.15 -//
  172.16 -// Description:
  172.17 -//
  172.18 -
  172.19 -#ifndef __CBIOASYNCWAITER_H__
  172.20 -#define __CBIOASYNCWAITER_H__
  172.21 -
  172.22 -#include <e32base.h>
  172.23 -
  172.24 -/**
  172.25 -Utility class for waiting for asychronous requests.
  172.26 -
  172.27 -This class allows asynchronous requests to be made from synchronous
  172.28 -objects. This object is used by passing its iStatus to an asynchronous
  172.29 -request and then calling Start(). The result of the request can be 
  172.30 -obtained by calling the Result() method.
  172.31 -
  172.32 -@publishedAll
  172.33 -@released
  172.34 -*/
  172.35 -class CBioAsyncWaiter : public CActive
  172.36 -	{
  172.37 -public:
  172.38 -	IMPORT_C static CBioAsyncWaiter* NewLC();
  172.39 -	IMPORT_C ~CBioAsyncWaiter();
  172.40 -	
  172.41 -	IMPORT_C void StartAndWait();
  172.42 -	IMPORT_C TInt Result() const;
  172.43 -	
  172.44 -private:
  172.45 -	CBioAsyncWaiter();
  172.46 -	
  172.47 -	// from CActive
  172.48 -	virtual void RunL();
  172.49 -	virtual void DoCancel();
  172.50 -	
  172.51 -private:
  172.52 -	TInt iError;
  172.53 -	};
  172.54 -
  172.55 -#endif // __CBIOASYNCWAITER_H__
   173.1 --- a/epoc32/include/cbnfnode.h	Tue Mar 16 16:12:26 2010 +0000
   173.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   173.3 @@ -1,63 +0,0 @@
   173.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   173.5 -// All rights reserved.
   173.6 -// This component and the accompanying materials are made available
   173.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   173.8 -// which accompanies this distribution, and is available
   173.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  173.10 -//
  173.11 -// Initial Contributors:
  173.12 -// Nokia Corporation - initial contribution.
  173.13 -//
  173.14 -// Contributors:
  173.15 -//
  173.16 -// Description:
  173.17 -// BNF node header
  173.18 -// 
  173.19 -//
  173.20 -
  173.21 -#ifndef __CBNFNODE_H__
  173.22 -#define __CBNFNODE_H__
  173.23 -
  173.24 -#include <e32base.h>
  173.25 -#include <cnode.h>
  173.26 -
  173.27 -/** Declares that the "type" for node attributes is stored as a string. */
  173.28 -typedef const TDesC* CBNFNodeAttributeType;
  173.29 -
  173.30 -#define _SHAREDSTRING(X) IMPORT_C static CBNFNodeAttributeType K##X();
  173.31 -#define _SHAREDSTRINGBODY(X) EXPORT_C CBNFNodeAttributeType CBNFNode::K##X() \
  173.32 -    { \
  173.33 -    _LIT(K##X, #X); \
  173.34 -    return &(K##X); \
  173.35 -    }
  173.36 -
  173.37 -
  173.38 -class CBNFNode : public CTypedNode<TInt, const TDesC*> 
  173.39 -/** Backus-Naur Form (BNF) node that forms part of a BNF tree (CBNFParser).
  173.40 -
  173.41 -Node types are stored as TInts, and attribute types as descriptors.
  173.42 -@publishedAll
  173.43 -@released
  173.44 -*/
  173.45 -{
  173.46 -public:
  173.47 -	//##ModelId=3B666BC70146
  173.48 -	IMPORT_C ~CBNFNode();
  173.49 -
  173.50 -	//##ModelId=3B666BC70144
  173.51 -	IMPORT_C static CBNFNode* NewL(TInt aType);
  173.52 -
  173.53 -    _SHAREDSTRING(PreRuleCallback)
  173.54 -    _SHAREDSTRING(PostRuleCallback)
  173.55 -    _SHAREDSTRING(Reference)
  173.56 -    _SHAREDSTRING(RangeStart)
  173.57 -    _SHAREDSTRING(RangeEnd)
  173.58 -    _SHAREDSTRING(NMoreCount)
  173.59 -    _SHAREDSTRING(NMoreMinimum)
  173.60 -    _SHAREDSTRING(NMoreMaximum)
  173.61 -
  173.62 -protected:
  173.63 -    IMPORT_C CBNFNode(TInt aType);
  173.64 -};
  173.65 -
  173.66 -#endif // __CBNFNODE_H__
   174.1 --- a/epoc32/include/cbnfparser.h	Tue Mar 16 16:12:26 2010 +0000
   174.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   174.3 @@ -1,557 +0,0 @@
   174.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   174.5 -// All rights reserved.
   174.6 -// This component and the accompanying materials are made available
   174.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   174.8 -// which accompanies this distribution, and is available
   174.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  174.10 -//
  174.11 -// Initial Contributors:
  174.12 -// Nokia Corporation - initial contribution.
  174.13 -//
  174.14 -// Contributors:
  174.15 -//
  174.16 -// Description:
  174.17 -// This class provides a mechanism to use a BNF tree to parse an input stream.
  174.18 -// The notation of the EBNF is based upon that described in the XML1.0 specification.
  174.19 -// The BNF tree form used is a variation on Extended BNF and has the following rule types,
  174.20 -// where the input stream must:
  174.21 -// , Exact - match exactly with the provided string.
  174.22 -// , Range - next character must be in the specified range.
  174.23 -// , Select - next character must exist in the selected string.
  174.24 -// If the select string starts with ^ it is a NOT Select.
  174.25 -// , And - match all of the given sub rules
  174.26 -// , Or - match one of the given sub rules
  174.27 -// , NMore - match N or more times the the SINGLE subrule.
  174.28 -// , Optional - match 0/1 times to the SINGLE subrule.
  174.29 -// , Without - match the first subrule but NOT the second.
  174.30 -// , Reference - match the referred to rule.
  174.31 -// The iterative parser not only validates an input stream against the 
  174.32 -// BNF grammer but allows pre/post actions to be performed during the parsing.
  174.33 -// Partial parsing is also allowed in that the input stream does not have to
  174.34 -// completed before parsing can begin. As soon as data is added the parser
  174.35 -// attempts to parse it.
  174.36 -// Numerous methods are provided to assist in the building of the BNF Tree this parser uses.
  174.37 -// To use this class:
  174.38 -// Create a derivation and implement the virtual method TreeL() to creat a BNF rule tree
  174.39 -// (the assistance methods NewBNF/NewRule etc should be used) - see DTDModel 
  174.40 -// To use your new parser invoke Reset and pass input data using the ProcessData method.
  174.41 -// 
  174.42 -//
  174.43 -
  174.44 -#ifndef __CBNFPARSER_H__
  174.45 -#define __CBNFPARSER_H__
  174.46 -
  174.47 -#include <e32std.h>
  174.48 -#include <mdataproviderobserver.h>
  174.49 -#include <cstack.h>
  174.50 -#include <cfragmentedstring.h>
  174.51 -#include <cbnfnode.h>
  174.52 -
  174.53 -//
  174.54 -// forward class declarations
  174.55 -//
  174.56 -class CAttributeLookupTable;
  174.57 -
  174.58 -
  174.59 -// Rule Tree node type definitions
  174.60 -/** Defines types of node in a BNF tree (CBNFParser).
  174.61 -
  174.62 -Except for ERoot, EIncomplete, EReference, and ELastParserNodeType, the 
  174.63 -types define different types of rule that the input stream must meet to 
  174.64 -satisfy the grammar. */
  174.65 -enum TParserNodeTypes
  174.66 -	{
  174.67 -	/** Root node. */
  174.68 -	ERoot, 
  174.69 -	/** Incomplete node. */
  174.70 -	EIncomplete, 
  174.71 -	/** Exact rule: match exactly with the provided string. */
  174.72 -	EExact, 
  174.73 -	/** Range rule: next character must be in the specified range.
  174.74 -
  174.75 -	The start of the range is specified by a CBNFNode::KRangeStart() 
  174.76 -	attribute; the end by a CBNFNode::KRangeEnd() attribute. */
  174.77 -	ERange, 
  174.78 -	/** Select rule: next character must exist in the selected string.
  174.79 -
  174.80 -	If the select string starts with ^, it is a NOT Select. */
  174.81 -	ESelect, 
  174.82 -	/** And rule: match all of the given sub-rules.
  174.83 -
  174.84 -	Sub-rules are defined by the child nodes of the AND rule node. */
  174.85 -	EAnd, 
  174.86 -	/** Or rule: match one of the given sub-rules.
  174.87 -
  174.88 -	Sub-rules are defined by the child nodes of the OR rule node. */
  174.89 -	EOr, 
  174.90 -	/** NMore rule: match a single subrule N or more times.
  174.91 -
  174.92 -	A minimum is specified by a CBNFNode::KNMoreMinimum() attribute; a maximum by 
  174.93 -	a CBNFNode::KNMoreMaximum() attribute; an exact figure by a CBNFNode::KNMoreCount() attribute. */
  174.94 -	ENMore, 
  174.95 -	/** Optional rule: match a single sub-rule 0/1 times.
  174.96 -
  174.97 -	A sub-rule is defined by the child node of the Optional rule node. */
  174.98 -	EOptional, 
  174.99 -	/** Without rule: match the first sub-rule but not the second.
 174.100 -
 174.101 -	Sub-rules are defined by the child nodes of the Without rule node. */
 174.102 -	EWithout, 
 174.103 -	/** Reference rule: match the referred to rule.
 174.104 -
 174.105 -	The target rule name is identified by a CBNFNode::KReference() attribute. */
 174.106 -	EReference, 
 174.107 -	/** Indicates final node type. */
 174.108 -	ELastParserNodeType	
 174.109 -	};
 174.110 -
 174.111 -// Parser states
 174.112 -// 
 174.113 -// When a  the state is EActive. 
 174.114 -// Setting the parser state to something else in a pre-/post-rule callback function
 174.115 -// causes the parser to exit on next loop in ParseL. If the state is set to EStopped
 174.116 -// we have finished the parser operation (e.g. in event of an error), in state EPaused
 174.117 -// we are likely to resume the parser operation after some external operations.
 174.118 -/** CBNFParser parser states. */
 174.119 -enum TParseState
 174.120 -	{
 174.121 -	/** Parser has stopped. */
 174.122 -	EStopped, 
 174.123 -	/** Rarser is running. */
 174.124 -	EActive, 
 174.125 -	/** Parser has paused: e.g. waiting for further input to continue. */
 174.126 -	EPaused
 174.127 -	};
 174.128 -
 174.129 -
 174.130 -
 174.131 -class CBNFParser : public CBase, public MDataProviderObserver
 174.132 -/** Base class for parsers that use a BNF tree to parse an input stream.
 174.133 -
 174.134 -The BNF tree form used is a variation on Extended BNF described in the XML1.0 
 174.135 -specification. The general form of the tree is as follows:
 174.136 -
 174.137 -Each node in the tree defines a rule that the input stream must meet to satisfy the grammar.
 174.138 -
 174.139 -1. a node type is set to the rule type, as defined in TParserNodeTypes
 174.140 -
 174.141 -2. node data stores any string required by the rule: e.g. for a comparison rule, the string 
 174.142 -	to match against
 174.143 -
 174.144 -3. the parser allows callback functions to be called either before or after the rule is processed.
 174.145 -	 If these are present, they are stored as attributes of the node.
 174.146 -
 174.147 -4. some rules allow sub-rules: for example, the AND rule expects a number of sub-rules, all 
 174.148 -	of which must be successful if the AND rule itself is to succeed. Each sub-rule is 
 174.149 -	represented as a child node of the parent rule. Sub-rules in turn can have sub-rules.
 174.150 -
 174.151 -5. reference rule nodes are also allowed: these do not define themselves rules, but direct the 
 174.152 -	parser to another rule. They can link rules to each other and so build rule sequences more 
 174.153 -	complex than a simple tree.
 174.154 -
 174.155 -All the top-level rules are stored as attributes of the root node. The attribute type is a string
 174.156 - that names the rule; the attribute value is a pointer to the node that implements the rule.
 174.157 -
 174.158 -The class supplies functions that encapsulate adding rules appropriately to the tree. The parser 
 174.159 -provider creates a derived class that implements the virtual method TreeL() that uses these 
 174.160 -functions to create a BNF rule tree.
 174.161 -
 174.162 -The user of the parser initialises the parser with ResetL(), and then passes input data to the 
 174.163 -parser using ProcessData(). The parser supports partial parsing: the input stream does not have 
 174.164 -to completed before parsing can begin. As soon as data is added, the parser attempts to parse it.
 174.165 -
 174.166 -	@publishedAll
 174.167 -	@released
 174.168 -
 174.169 -*/
 174.170 -	{
 174.171 -protected:
 174.172 -	/** Defines a type to handle a stack of rules. */
 174.173 -	typedef CStack<CBNFNode, EFalse> CRuleStack;
 174.174 -
 174.175 -	/** Type definition for a callback function pointer
 174.176 -		Callback functions need to get a reference to the parser as parameter
 174.177 -		and they need to be static. */
 174.178 -	typedef void (TRuleCallback)(CBNFParser&);
 174.179 -
 174.180 -public:
 174.181 -	// Constructor for a new parser instance
 174.182 -	//
 174.183 -	// Input:
 174.184 -	// aLUT - reference to attribute lookuptable; used to store all the stuff in the parser rule tree
 174.185 -	//
 174.186 -	//##ModelId=3B6669EA00F8
 174.187 -	IMPORT_C static CBNFParser* NewL(CAttributeLookupTable& aLUT);
 174.188 -
 174.189 -	//##ModelId=3B6669EA00F7
 174.190 -	IMPORT_C virtual ~CBNFParser();
 174.191 -
 174.192 -	// Prepare the parser to take in fresh stream of data.
 174.193 -	// THIS METHOD MUST BE CALLED BEFORE DATA CAN BE PROCESSED BY THE PARSER!!
 174.194 -	// Calls TreeL in order to create the parsing rule tree if no tree already
 174.195 -	// exists.
 174.196 -	//##ModelId=3B6669EA00EF
 174.197 -	IMPORT_C virtual void ResetL();
 174.198 -
 174.199 -	/** Checks if the input stream was completely processed
 174.200 -	@return ETrue if all of the data was processed, EFalse if the data didn't match to the parsing rules
 174.201 -	*/
 174.202 -	//##ModelId=3B6669EA00EE
 174.203 -	TBool Valid() const { return iStringComplete && (iString.Length() == 0); }
 174.204 -
 174.205 -	/** Concatenates the rest of the input stream (which hasn't yet been processed)
 174.206 -	into a single string. The ownership of the string is given to the caller.
 174.207 -	@return String containing the remaining data to be parsed. OWNERSHIP PASSED TO CALLED. */
 174.208 -	//##ModelId=3B6669EA00ED
 174.209 -	HBufC* StringL() const { return iString.StringL(); }
 174.210 -
 174.211 -	/** Gets a pointer to the rule node currently being processed.
 174.212 -	@return Rule node */
 174.213 -	//##ModelId=3B6669EA00E3
 174.214 -	CBNFNode* CurrentRule() { return iCurrentRule; }
 174.215 -
 174.216 -	// Set reference to an attribute lookup table
 174.217 -	//##ModelId=3B6669EA00C5
 174.218 -	void SetAttributeLookupTable(CAttributeLookupTable& aAttributeLookupTable);
 174.219 -
 174.220 -	// methods to allow the input stream to be marked so that the callbacks
 174.221 -	// can determine those parts which successfully matched
 174.222 -
 174.223 -	/** Set a mark to the current position of the input stream. 
 174.224 -
 174.225 -	The mark acts as a tag in the stream currently being processed.
 174.226 -	As we process further along the stream after adding the mark, we can perform
 174.227 -	a rollback to the most previously set mark and start processing again (e.g. OR rule
 174.228 -	works this way). The string fragments won't be consumed (deleted) until
 174.229 -	all the marks on a fragment (and fragments before that) are deleted. */
 174.230 -	//##ModelId=3B6669EA00BC
 174.231 -	void Mark() { iString.Mark(); }; // **Mark can leave**
 174.232 -
 174.233 -	/** Get string between the "cursor position" and the latest mark on the stream.
 174.234 -	
 174.235 -	@return Pointer to the string from the previous mark on to the current position
 174.236 -			of processed string. OWNERSHIP OF THE STRING GIVEN TO THE CALLER. */
 174.237 -	//##ModelId=3B6669EA00BB
 174.238 -	HBufC* MarkedL() { return iString.MarkedL(); };
 174.239 -
 174.240 -	/** Gets the marked string with a string added before the mached string.
 174.241 -	@see MarkedL()
 174.242 -	@return A string cosisting of aInitialText appended with the marked string.
 174.243 -	          OWNERSHIP OF THE CONSTRUCTED STRING IS GIVEN TO THE CALLER. */
 174.244 -	//##ModelId=3B6669EA009E
 174.245 -	HBufC* MarkedWithInitialTextL(const TDesC& aInitialText) { return iString.MarkedWithInitialTextL(aInitialText); };
 174.246 -
 174.247 -	/** Removes the latest mark. All the marks are stored in a stack and this removes
 174.248 -	the topmost mark.*/
 174.249 -	//##ModelId=3B6669EA009D
 174.250 -	void DeleteMark() { iString.DeleteMark(); };
 174.251 -
 174.252 -	// methods to determine it the used rule actually matched (typically used in post callbacks)
 174.253 -	/** Tests if the used rule matched.
 174.254 -
 174.255 -	This is typically used in post-rule callbacks.
 174.256 -
 174.257 -	@return True if the used rule matched; otherwise false
 174.258 -	*/
 174.259 -	//##ModelId=3B6669EA0094
 174.260 -	TBool RuleMatched() const { return iSubRuleMatched; };
 174.261 -	/** Tests if an Optional node sub-rule matched.
 174.262 -
 174.263 -	@return True if the sub- rule matched; otherwise false
 174.264 -	*/
 174.265 -	//##ModelId=3B6669EA0093
 174.266 -	TBool OptionalMatched() const { return iOptionalMatched; };
 174.267 -
 174.268 -	// Create new rule tree root node.
 174.269 -	// This method creates a new single instance of CBNFNode, which shall act as the root
 174.270 -	// node of the rule tree, which implements the BNF rules for parsing the input stream.
 174.271 -	// All the other rules are attached as attributes to this node.
 174.272 -	// The root node should have single child node, which should be a reference to the
 174.273 -	// "logical root" of the rule tree. This can be done be attaching the logical root
 174.274 -	// rule as a component to the root rule.
 174.275 -	//##ModelId=3B6669EA0089
 174.276 -	IMPORT_C CBNFNode* NewBNFL();
 174.277 -
 174.278 -	// Add a new rule to a rule tree.
 174.279 -	//
 174.280 -	// Input:
 174.281 -	//	aRootRule - Pointer to the root bnf node (created with NewBNFL() ).
 174.282 -	//	aRuleName - Reference to a string identifying this rule. The string is used
 174.283 -	//				to make references to this rule from other rule's subtrees.
 174.284 -	//	aData	  - Pointer to a data string; used with EExact and ESelect type rules
 174.285 -	//              to match actual text strings.
 174.286 -	//	aPreRule  - Function pointer to a prerule function that gets called _BEFORE_
 174.287 -	//				we start processing this rule and its children (i.e. the rule subtree)
 174.288 -	//	aPostRule - Function pointer to a postrule function which is called _AFTER_
 174.289 -	//              we have processed this rule (i.e. when we return up from the subtree
 174.290 -	//              and this rule is finished).
 174.291 -	//
 174.292 -	// Return:
 174.293 -	//	CBNFNode& - Reference to the newly created rule node in the rule tree
 174.294 -	//
 174.295 -	//##ModelId=3B6669E90326
 174.296 -	IMPORT_C CBNFNode& NewRuleL(CBNFNode* aRootRule, 
 174.297 -					const TDesC& aRuleName, 
 174.298 -					TParserNodeTypes aRuleType, 
 174.299 -					HBufC* aData, 
 174.300 -					TRuleCallback* aPreRule, 
 174.301 -					TRuleCallback* aPostRule);
 174.302 -
 174.303 -	// Overridden version of the NewRuleL. Takes reference to the data instead of owning it.
 174.304 -	//##ModelId=3B6669E903D1
 174.305 -	IMPORT_C CBNFNode& NewRuleL(CBNFNode* aRootRule, 
 174.306 -					const TDesC& aRuleName, 
 174.307 -					TParserNodeTypes aRuleType, 
 174.308 -					const TDesC& aData, 
 174.309 -					TRuleCallback* aPreRule, 
 174.310 -					TRuleCallback* aPostRule);
 174.311 -
 174.312 -	// construct a new rule component not attached to a rule.
 174.313 -	//##ModelId=3B6669E9018C
 174.314 -	IMPORT_C CBNFNode* NewComponentL(TParserNodeTypes aRuleType, const TDesC& aData);
 174.315 -	//##ModelId=3B6669E901B4
 174.316 -	IMPORT_C CBNFNode* NewComponentL(TParserNodeTypes aRuleType, HBufC* aData = NULL, TRuleCallback* aPreRule = NULL, TRuleCallback* aPostRule = NULL);
 174.317 -
 174.318 -	// create a reference component to the rule of the given name
 174.319 -	// which is not attached to any rule.
 174.320 -	//##ModelId=3B6669E90204
 174.321 -	IMPORT_C CBNFNode* NewComponentL(CBNFNode* aRootRule, const TDesC& aRuleName);
 174.322 -
 174.323 -	// Methods to create a new subrule to the given parent rule.
 174.324 -	// These methods can be used to build the subtrees to the "main rules" attached to the root node.
 174.325 -	//
 174.326 -	// Input:
 174.327 -	//	aParentRule - The rule for which the new rule shall be added as a child
 174.328 -	//  aRuleType - Type of the new rule
 174.329 -	//  aData - Data for the rule; the string to match for an EExact rule, the selection character set for ESelect
 174.330 -	//
 174.331 -	//	aPreRule - Pre rule callback function pointer
 174.332 -	//  aPostRule - Post rule callback function pointer
 174.333 -	// Return:
 174.334 -	//	CBNFNode& - reference to the new rule
 174.335 -	//
 174.336 -	//##ModelId=3B6669E9022C
 174.337 -	IMPORT_C CBNFNode& NewComponentL(CBNFNode &aParentRule, TParserNodeTypes aRuleType, const TDesC& aData);
 174.338 -	//##ModelId=3B6669E90268
 174.339 -	IMPORT_C CBNFNode& NewComponentL(CBNFNode &aParentRule, TParserNodeTypes aRuleType, HBufC* aData = NULL, TRuleCallback* aPreRule = NULL, TRuleCallback* aPostRule = NULL);
 174.340 -	
 174.341 -	// Create a reference to another rule and attach this reference as a child of the given parent.
 174.342 -	// Creates a child node of type EReference for the parent. This reference node
 174.343 -	// hold the pointer to the rule we are refering to.
 174.344 -	// Using references we can link rules to each other and build complex rule trees
 174.345 -	// even though they don't physically form a complete tree.
 174.346 -	// Notice, that the rule we are refering to does not necessarily need to exist, yet!
 174.347 -	//
 174.348 -	// Input:
 174.349 -	//	aRootRule - The Root node to the rule tree (created with NewBNFL). This is needed to
 174.350 -	//				find the rule we are refering to with the string.
 174.351 -	//	aParentRule - The parent rule of the newly created reference 
 174.352 -	//	aRuleName - The "id string" of the rule we are refering to.
 174.353 -	//##ModelId=3B6669E902CC
 174.354 -	IMPORT_C CBNFNode& NewComponentL(CBNFNode* aRootRule, CBNFNode &aParentRule, const TDesC& aRuleName);
 174.355 -	
 174.356 -	// add additional attributes to components of rules (i.e. range values)
 174.357 -	//##ModelId=3B6669E900F6
 174.358 -	IMPORT_C void AddComponentAttributeL(CBNFNode& aRule, CBNFNodeAttributeType aAttribute, TInt aInt);
 174.359 -	
 174.360 -	// re-implementations of MDataProviderObserver methods
 174.361 -	//##ModelId=3B6669E900D8
 174.362 -	IMPORT_C virtual void ProcessDataL(HBufC8& aData);
 174.363 -	//##ModelId=3B6669E900AF
 174.364 -	IMPORT_C virtual void SetStatus(TInt aStatus = KErrNone);
 174.365 -	//##ModelId=3B6669E90069
 174.366 -	IMPORT_C virtual void SetDocumentTypeL(const TDesC&);
 174.367 -	//##ModelId=3B6669E90087
 174.368 -	IMPORT_C virtual void SetDocumentTypeL(const TDesC&, const TDesC&);
 174.369 -	//##ModelId=3B6669E90055
 174.370 -	IMPORT_C virtual void SetDataExpected(TInt);
 174.371 -	//##ModelId=3B6669E90041
 174.372 -	IMPORT_C virtual void SetBaseUriL(const TDesC* aBaseUri);
 174.373 -	//##ModelId=3B6669E90038
 174.374 -	IMPORT_C virtual void MDataProviderObserverReserved1();
 174.375 -	//##ModelId=3B6669E90037
 174.376 -	IMPORT_C virtual void MDataProviderObserverReserved2();
 174.377 -
 174.378 -	// Tell the parser, that we all the data has been passed in.
 174.379 -	// This method attempts to parse what ever is left of the input stream if it wasn't
 174.380 -	// already finished.
 174.381 -	//##ModelId=3B6669E9002E
 174.382 -	IMPORT_C void CommitL();
 174.383 -
 174.384 -	/** Get the current state of the parser. 
 174.385 -	@return Parser state */
 174.386 -	//##ModelId=3B6669E9002D
 174.387 -	TParseState State() const {return(iParsing);};
 174.388 -
 174.389 -protected:
 174.390 -	IMPORT_C CBNFParser(CAttributeLookupTable& aLUT);
 174.391 -
 174.392 -	// Each of the following functions is a handler method for a specific type of a rule
 174.393 -	// node. For example, ReferenceL handles reference nodes etc.
 174.394 -	// These methods are called by PerformRuleL.
 174.395 -	//
 174.396 -	// Input:
 174.397 -	//	aRule - reference to the rule being processed
 174.398 -	//	aMatched - reference to a CFragmentedString::TStringMatch variable, which holds
 174.399 -	//             the information if the string or character we previously were trying to
 174.400 -	//             match actually matched.
 174.401 -	// Return:
 174.402 -	//	TBool - We return ETrue if we have completed processing this node. If the processing
 174.403 -	//          still continues we return EFalse. For example, an EAnd rule would return
 174.404 -	//          ETrue if all of its chidren had matched or if a rule didn't match. In the first
 174.405 -	//          case the EAnd rule would have turned out to be true (aMatched = EMatched) since
 174.406 -	//          all of its children were true, but in the latter case we can stop processing the
 174.407 -	//          EAnd rule, since a subrule to the And didn't match and this means that the And
 174.408 -	//          expression can not be true. Either way, the processing of the And ends and we
 174.409 -	//          may return ETrue;
 174.410 -	//
 174.411 -	//##ModelId=3B6669E90005
 174.412 -    IMPORT_C virtual TBool ReferenceL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.413 -	//##ModelId=3B6669E803BB
 174.414 -    IMPORT_C virtual TBool ExactL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.415 -	//##ModelId=3B6669E80389
 174.416 -    IMPORT_C virtual TBool RangeL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.417 -	//##ModelId=3B6669E80343
 174.418 -    IMPORT_C virtual TBool SelectL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.419 -	//##ModelId=3B6669E80311
 174.420 -    IMPORT_C virtual TBool WithoutL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.421 -	//##ModelId=3B6669E802D5
 174.422 -    IMPORT_C virtual TBool AndL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.423 -	//##ModelId=3B6669E80299
 174.424 -    IMPORT_C virtual TBool OrL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.425 -	//##ModelId=3B6669E80271
 174.426 -    IMPORT_C virtual TBool OptionalL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.427 -	//##ModelId=3B6669E8023F
 174.428 -    IMPORT_C virtual TBool NMoreL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.429 -
 174.430 -	// A method to add a callback to a rule
 174.431 -	//
 174.432 -	// Input:
 174.433 -	//	aRule - The rule to which the callback is to be added
 174.434 -	//	aCallbackID - Either CBNFNode::KPreRuleCallback() or CBNFNode::KPostRuleCallback()
 174.435 -	//                Defines the type of the callback function (i.e. is it to be called before
 174.436 -	//                or after the rule has been processed).
 174.437 -	//	aCallback - The callback function pointer
 174.438 -	//
 174.439 -	//##ModelId=3B6669E80203
 174.440 -    IMPORT_C virtual void AddRuleCallbackL(CBNFNode& aRule, const TDesC* aCallbackID, TRuleCallback* aCallback);
 174.441 -	//##ModelId=3B6669E801EF
 174.442 -    IMPORT_C virtual void ExecutePreRuleCallbackL(CBNFNode& aRule);
 174.443 -	//##ModelId=3B6669E801D1
 174.444 -    IMPORT_C virtual void ExecutePostRuleCallbackL(CBNFNode& aRule);
 174.445 -
 174.446 -	// the method TreeL() should be reimplemented to generate a BNF rule tree and return
 174.447 -	// ownership of it. This is the rule tree which will be to parse the input stream.
 174.448 -	// See XmlPars.cpp or DTDMDL.cpp for example.
 174.449 -	//##ModelId=3B6669E801D0
 174.450 -	IMPORT_C virtual CBNFNode* TreeL();
 174.451 -
 174.452 -	// methods which are invoked when the parser encounters a conditional
 174.453 -	// point in the BNF grammar (i.e. And/Or)
 174.454 -	//##ModelId=3B6669E801B2
 174.455 -    IMPORT_C virtual void StartConditional(TParserNodeTypes aRuleType);
 174.456 -	//##ModelId=3B6669E80180
 174.457 -	IMPORT_C virtual void EndConditional(TParserNodeTypes aRuleType, TBool aSuccess);
 174.458 -
 174.459 -	// A callback function to insert a mark to the current position of the stream
 174.460 -	// being processed. Adding mark is a very common callback operation befor starting
 174.461 -	// to process a rule, hence the method is provided by the parser.
 174.462 -	//##ModelId=3B6669E8016C
 174.463 -	IMPORT_C static void MarkCallback(CBNFParser& aParser);
 174.464 -
 174.465 -	// returns the LUT used by this parser.
 174.466 -	//##ModelId=3B6669E80163
 174.467 -	IMPORT_C CAttributeLookupTable& AttributeLUT() const;
 174.468 -
 174.469 -	// method which does the actual iterative parsing
 174.470 -	//##ModelId=3B6669E80162
 174.471 -	IMPORT_C TBool ParseL();
 174.472 -
 174.473 -	// A rule to handle a node in the rule tree. This method just calls the appropriate
 174.474 -	// handler method according to the rule type.
 174.475 -	//##ModelId=3B6669E8013A
 174.476 -    IMPORT_C virtual TBool PerformRuleL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 174.477 -
 174.478 -	//##ModelId=3B6669E8011C
 174.479 -	/** Sets the parser state.
 174.480 -
 174.481 -	@param aState Parser state
 174.482 -	*/
 174.483 -	void SetState(TParseState aState) {iParsing=aState;};
 174.484 -
 174.485 -protected:
 174.486 -	/** Storage object for all the attributes and identifiers in a tree */
 174.487 -	//##ModelId=3B6669E80108
 174.488 -	CAttributeLookupTable& iLUT;	
 174.489 -
 174.490 -	/** An utility object which stores all the buffers passed into the parser
 174.491 -	and represents them as if they would form a single, continuous string.
 174.492 -	This class also performs the actual physical matching/selection of the strings
 174.493 -	and holds the marks set onto the string.*/
 174.494 -	//##ModelId=3B6669E800EA
 174.495 -	CFragmentedString iString;
 174.496 -	/** Flag indicating if the input stream has been completely processed. */ 
 174.497 -	//##ModelId=3B6669E800D6
 174.498 -	TBool iStringComplete; // more input stream has completed
 174.499 -
 174.500 -	/** The BNF tree the parser is using to parse the input stream.*/
 174.501 -	//##ModelId=3B6669E800C2
 174.502 -	CBNFNode* iTree;        // the BNF tree we are using to parse the input stream
 174.503 -
 174.504 -	/** A stack of rules from iTree which are waiting to be completed.
 174.505 -	The stack basically holds the path along the rule tree. */
 174.506 -	//##ModelId=3B6669E800AE
 174.507 -	CRuleStack iRuleStack;  
 174.508 -	/** The BNF rule that is currently being processed. */
 174.509 -	//##ModelId=3B6669E80090
 174.510 -	CBNFNode* iCurrentRule; // the BNF rule we are currently using
 174.511 -
 174.512 -	// when returning to a rule in the rulestack this indicates 
 174.513 -	// if the child rule matched correctly
 174.514 -	/** Flag that indicates when returning to a rule in the rulestack if the child rule matched correctly. */
 174.515 -	//##ModelId=3B6669E8007C
 174.516 -	TBool iSubRuleMatched;
 174.517 -	/** Flag that indicates when returning to a rule in the rulestack if an optional rule matched correctly. */
 174.518 -	//##ModelId=3B6669E8006A
 174.519 -	TBool iOptionalMatched;
 174.520 -
 174.521 -	/** The child rule we are returning from (if any). 
 174.522 -	If this is NULL we are new to this BNF rule.*/
 174.523 -	//##ModelId=3B6669E80054
 174.524 -	CBNFNode* iSubRule;     
 174.525 -
 174.526 -	/** Parser state. */
 174.527 -	//##ModelId=3B6669E8004A
 174.528 -	TParseState iParsing;
 174.529 -	/** Input stream matched rule flag. */
 174.530 -	//##ModelId=3B6669E80038
 174.531 -    CFragmentedString::TStringMatch iMatched;
 174.532 -
 174.533 -	// Storage pointers for strings identifying certain attributes on the rule nodes
 174.534 -	/** Stores attribute identifier for reference string attributes. */
 174.535 -	//##ModelId=3B6669E8002C
 174.536 -	const TDesC* iReferenceString;
 174.537 -	/** Stores attribute identifier for range start attributes. */
 174.538 -	//##ModelId=3B6669E8001A
 174.539 -	const TDesC* iRangeStart;
 174.540 -	/** Stores attribute identifier for range end attributes. */
 174.541 -	//##ModelId=3B6669E80010
 174.542 -	const TDesC* iRangeEnd;
 174.543 -	/** Stores attribute identifier for nmore minimum attributes. */
 174.544 -	//##ModelId=3B6669E80006
 174.545 -	const TDesC* iMoreMinimum;
 174.546 -	/** Stores attribute identifier for nmore count attributes. */
 174.547 -	//##ModelId=3B6669E703DA
 174.548 -	const TDesC* iMoreCount;
 174.549 -	/** Stores attribute identifier for nmore maximum attributes. */
 174.550 -	//##ModelId=3B6669E703D0
 174.551 -	const TDesC* iMoreMaximum;
 174.552 -	/** Stores attribute identifier for pre-rule callback attributes. */
 174.553 -	//##ModelId=3B6669E703C6
 174.554 -	const TDesC* iPreRuleCallback;
 174.555 -	/** Stores attribute identifier for post-rule callback attributes. */
 174.556 -	//##ModelId=3B6669E703BC
 174.557 -	const TDesC* iPostRuleCallback;
 174.558 -	};
 174.559 -
 174.560 -#endif
   175.1 --- a/epoc32/include/cdtdmodel.h	Tue Mar 16 16:12:26 2010 +0000
   175.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   175.3 @@ -1,237 +0,0 @@
   175.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   175.5 -// All rights reserved.
   175.6 -// This component and the accompanying materials are made available
   175.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   175.8 -// which accompanies this distribution, and is available
   175.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  175.10 -//
  175.11 -// Initial Contributors:
  175.12 -// Nokia Corporation - initial contribution.
  175.13 -//
  175.14 -// Contributors:
  175.15 -//
  175.16 -// Description:
  175.17 -// contains the parser specialisation (BNF grammar) for a DTD parser.
  175.18 -// See CBNFParser for function details
  175.19 -// 
  175.20 -//
  175.21 -
  175.22 -#ifndef __CDTDMODEL_H__
  175.23 -#define __CDTDMODEL_H__
  175.24 -
  175.25 -#include <cbnfnode.h>
  175.26 -#include <cbnfparser.h>
  175.27 -#include <crulemarkedstack.h>
  175.28 -
  175.29 -//##ModelId=3B666BCB001C
  175.30 -
  175.31 -
  175.32 -
  175.33 -class CDTDModel : public CBNFParser
  175.34 -/** Creates a tree that represents a specified DTD.
  175.35 -
  175.36 -To use it:
  175.37 -
  175.38 -1. call the base class function ProcessDataL() with the filename of the DTD, and call CommitL()
  175.39 -
  175.40 -2. call GeneratedTree() to get the tree
  175.41 -
  175.42 -	@publishedAll
  175.43 -	@released
  175.44 -*/
  175.45 -	{
  175.46 -public:
  175.47 -    class CDTDElementAttribute : public CBase
  175.48 -	/** Represents an attribute of a DTD element. */
  175.49 -		{
  175.50 -	public:
  175.51 -		/** DTD element attribute value types. */
  175.52 -		enum KValueType
  175.53 -			{
  175.54 -			/** Attribute supplies a default. */
  175.55 -			EDefault, 
  175.56 -			/** Attribute is #REQUIRED. */
  175.57 -			ERequired, 
  175.58 -			/** Attribute is #IMPLIED. */
  175.59 -			EImplied, 
  175.60 -			/** Attribute is #FIXED. */
  175.61 -			EFixed, 
  175.62 -			/** Attribute is a reference. */
  175.63 -			EReference
  175.64 -			};
  175.65 -
  175.66 -	public:
  175.67 -		/** Destructor.
  175.68 -		*/
  175.69 -		virtual ~CDTDElementAttribute() 
  175.70 -			{ 
  175.71 -			delete iType; 
  175.72 -			delete iValue; 
  175.73 -			}
  175.74 -
  175.75 -	public:
  175.76 -		/** Node that specifies the attribute type. */
  175.77 -		CBNFNode*	iType;
  175.78 -		/** Node that specifies the attribute value. */
  175.79 -        CBNFNode*	iValue;
  175.80 -		/** Attribute value type. */
  175.81 -        KValueType	iValueType;
  175.82 -		};
  175.83 -
  175.84 -
  175.85 -	enum TRuleMarks 
  175.86 -		{
  175.87 -		ERuleStartMark = 1, 
  175.88 -		EConditionalMark, 
  175.89 -		EGroupMark 
  175.90 -		};
  175.91 -
  175.92 -	//##ModelId=3B666BCB0321
  175.93 -	IMPORT_C static CDTDModel* NewL(CAttributeLookupTable& aLUT);
  175.94 -	//##ModelId=3B666BCB0320
  175.95 -	IMPORT_C virtual ~CDTDModel();
  175.96 -
  175.97 -	// This method MUST be invoked before data can be processed by the parser.
  175.98 -	//##ModelId=3B666BCB031F
  175.99 -	IMPORT_C virtual void ResetL();
 175.100 -
 175.101 -	//##ModelId=3B666BCB0315
 175.102 -	IMPORT_C CBNFNode* GeneratedTree();
 175.103 -
 175.104 -	// Building method for a hard coded WML1.1 DTD tree
 175.105 -	// Input:
 175.106 -	//		aPackageRoot - A root node to which the generated tree is attached
 175.107 -	//
 175.108 -	//##ModelId=3B666BCB030B
 175.109 -	IMPORT_C void BuildWml11DTDL(CBNFNode& aPackageRootNode);
 175.110 -
 175.111 -protected:
 175.112 -    IMPORT_C CDTDModel(CAttributeLookupTable& aLUT);	
 175.113 -
 175.114 -	// construct our BNF rule tree
 175.115 -	//##ModelId=3B666BCB0302
 175.116 -	IMPORT_C virtual CBNFNode* TreeL();
 175.117 -	
 175.118 -	// to control our internal state on conditional rules.
 175.119 -	//##ModelId=3B666BCB02F7
 175.120 -	IMPORT_C virtual void StartConditional(TParserNodeTypes aRuleType); 
 175.121 -	//##ModelId=3B666BCB02E3
 175.122 -	IMPORT_C virtual void EndConditional(TParserNodeTypes aRuleType, TBool aSuccess);
 175.123 -
 175.124 -	// rule callbacks to build the DTD Tree
 175.125 -	//##ModelId=3B666BCB02D9
 175.126 -	static void PreRulesL(CBNFParser& aParser);
 175.127 -	//##ModelId=3B666BCB02CF
 175.128 -	static void PostRulesL(CBNFParser& aParser);
 175.129 -	//##ModelId=3B666BCB02C5
 175.130 -	static void PreElementDeclL(CBNFParser& aParser);
 175.131 -	//##ModelId=3B666BCB02B1
 175.132 -	static void PostElementDeclL(CBNFParser& aParser);
 175.133 -	//##ModelId=3B666BCB02A7
 175.134 -	static void PreEntityDeclL(CBNFParser& aParser);
 175.135 -	//##ModelId=3B666BCB0294
 175.136 -	static void PostEntityDeclL(CBNFParser& aParser);
 175.137 -	//##ModelId=3B666BCB0289
 175.138 -	static void PreAttlistLineL(CBNFParser& aParser);
 175.139 -	//##ModelId=3B666BCB027F
 175.140 -	static void PostAttlistLineL(CBNFParser& aParser);
 175.141 -	//##ModelId=3B666BCB0275
 175.142 -	static void PostAttlistReferenceL(CBNFParser& aParser);
 175.143 -	//##ModelId=3B666BCB026B
 175.144 -	static void PreAttValueL(CBNFParser& aParser);
 175.145 -	//##ModelId=3B666BCB0261
 175.146 -	static void PostAttValueL(CBNFParser& aParser);
 175.147 -	//##ModelId=3B666BCB024E
 175.148 -	static void PostRequiredL(CBNFParser& aParser);
 175.149 -	//##ModelId=3B666BCB0243
 175.150 -	static void PostFixedL(CBNFParser& aParser);
 175.151 -	//##ModelId=3B666BCB0239
 175.152 -	static void PostImpliedL(CBNFParser& aParser);
 175.153 -	//##ModelId=3B666BCB022F
 175.154 -	static void PostAndL(CBNFParser& aParser);
 175.155 -	//##ModelId=3B666BCB0225
 175.156 -	static void PostOrL(CBNFParser& aParser);
 175.157 -	//##ModelId=3B666BCB021B
 175.158 -	static void PreGroupL(CBNFParser& aParser);
 175.159 -	//##ModelId=3B666BCB0208
 175.160 -	static void PostGroupL(CBNFParser& aParser);
 175.161 -	//##ModelId=3B666BCB01FD
 175.162 -	static void PostMatch0PlusL(CBNFParser& aParser);
 175.163 -	//##ModelId=3B666BCB01F3
 175.164 -	static void PostMatch1PlusL(CBNFParser& aParser);
 175.165 -	//##ModelId=3B666BCB01E9
 175.166 -	static void PostOptionalL(CBNFParser& aParser);
 175.167 -	//##ModelId=3B666BCB01DF
 175.168 -	static void PostIdentifierL(CBNFParser& aParser);
 175.169 -	//##ModelId=3B666BCB01CC
 175.170 -	static void PostEntityDeclNameL(CBNFParser& aParser);
 175.171 -	//##ModelId=3B666BCB01C1
 175.172 -	static void PostElementDeclNameL(CBNFParser& aParser);
 175.173 -	//##ModelId=3B666BCB01B7
 175.174 -	static void PostAttlistDeclNameL(CBNFParser& aParser);
 175.175 -	//##ModelId=3B666BCB01AD
 175.176 -	static void PostAttfieldNameL(CBNFParser& aParser);
 175.177 -	//##ModelId=3B666BCB01A3
 175.178 -	static void PostReferenceNameL(CBNFParser& aParser);
 175.179 -	//##ModelId=3B666BCB0199
 175.180 -	static void PostStringL(CBNFParser& aParser);
 175.181 -	//##ModelId=3B666BCB0186
 175.182 -	static void PostValidHexCharL(CBNFParser& aParser);
 175.183 -	//##ModelId=3B666BCB017B
 175.184 -	static void PostValidDecCharL(CBNFParser& aParser);
 175.185 -	//##ModelId=3B666BCB0171
 175.186 -	static void PrePEDeclL(CBNFParser& aParser);
 175.187 -	//##ModelId=3B666BCB0167
 175.188 -	static void PostPEDeclL(CBNFParser& aParser);
 175.189 -	//##ModelId=3B666BCB015D
 175.190 -	static void PostGEDeclL(CBNFParser& aParser);
 175.191 -	//##ModelId=3B666BCB0153
 175.192 -	static void PreGEContentL(CBNFParser& aParser);
 175.193 -	//##ModelId=3B666BCB0149
 175.194 -	static void PostGEContentL(CBNFParser& aParser);	
 175.195 -
 175.196 -	// utility functions
 175.197 -	//##ModelId=3B666BCB0135
 175.198 -	static void PostValidCharL(CBNFParser& aParser, TRadix aRadix);
 175.199 -	//##ModelId=3B666BCB0117
 175.200 -	static void PostRuleL(CBNFParser& aParser, TParserNodeTypes aType, const TDesC* aAttribute);
 175.201 -
 175.202 -	//##ModelId=3B666BCB0104
 175.203 -	void CharRefReplacement(TPtr& aString);
 175.204 -
 175.205 -	//##ModelId=3B666BCB0103
 175.206 -	void DoClear();
 175.207 -
 175.208 -	// Help methods for the hardcoded WML 1.1 tree
 175.209 -	//##ModelId=3B666BCB00DB
 175.210 -	void AddNewAttributeL(CBNFNode& aNode, const TDesC* aAttributeId, const TDesC& aAttributeType, CDTDElementAttribute::KValueType aAttributeValueType, CBNFNode* aRootNode);
 175.211 -	//##ModelId=3B666BCB00BD
 175.212 -	void AddNewReferenceAttributeL(CBNFNode& aNode, const TDesC& aAttributeType, CBNFNode* aRootNode);
 175.213 -	//##ModelId=3B666BCB0095
 175.214 -	void AddNewAttributeWithValueL(CBNFNode& aNode, const TDesC* aAttributeId, const TDesC& aAttributeType, const TDesC& aAttributeDefaultValue, CBNFNode* aRootNode);
 175.215 -
 175.216 -
 175.217 -protected:
 175.218 -    typedef CRuleMarkedStack<ETrue> COwnerRuleMarkedStack;
 175.219 -
 175.220 -protected:
 175.221 -	//##ModelId=3B666BCB008B
 175.222 -	TBool					iInPEDecl;	
 175.223 -	//##ModelId=3B666BCB0078
 175.224 -	TBool					iCharRefCheck;
 175.225 -	//##ModelId=3B666BCB006E
 175.226 -	HBufC*					iGEContent;
 175.227 -
 175.228 -	//##ModelId=3B666BCB0064
 175.229 -	HBufC*					iNewAttfieldName;
 175.230 -	//##ModelId=3B666BCB005A
 175.231 -	CDTDElementAttribute*	iNewElementAttribute;
 175.232 -	//##ModelId=3B666BCB0046
 175.233 -	CBNFNode*				iNewRule;
 175.234 -	//##ModelId=3B666BCB003C
 175.235 -	CBNFNode*				iNewTree;
 175.236 -	//##ModelId=3B666BCB0030
 175.237 -	COwnerRuleMarkedStack	iNewRuleStack;
 175.238 -	};
 175.239 -
 175.240 -#endif // __CDTDMODEL_H__
   176.1 --- a/epoc32/include/cemailaccounts.h	Tue Mar 16 16:12:26 2010 +0000
   176.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   176.3 @@ -1,628 +0,0 @@
   176.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   176.5 -// All rights reserved.
   176.6 -// This component and the accompanying materials are made available
   176.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   176.8 -// which accompanies this distribution, and is available
   176.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  176.10 -//
  176.11 -// Initial Contributors:
  176.12 -// Nokia Corporation - initial contribution.
  176.13 -//
  176.14 -// Contributors:
  176.15 -//
  176.16 -// Description:
  176.17 -//
  176.18 -
  176.19 -#ifndef __CEMAILACCOUNTS_H__
  176.20 -#define __CEMAILACCOUNTS_H__
  176.21 -
  176.22 -
  176.23 -#include <e32std.h>
  176.24 -#include <e32base.h>
  176.25 -#include <msvapi.h>
  176.26 -
  176.27 -
  176.28 -class CImIAPPreferences;
  176.29 -class CImPop3Settings;
  176.30 -class CImImap4Settings;
  176.31 -class CImSmtpSettings;
  176.32 -class CRepository;
  176.33 -class CImapSyncDownloadRules;
  176.34 -class CImapTransportBufferSizes;
  176.35 -class CImSmtpMobilitySettings;
  176.36 -
  176.37 -/**
  176.38 -Maximum size of email account name
  176.39 -
  176.40 -@publishedAll
  176.41 -@released
  176.42 -*/
  176.43 -const TInt KEmailAccountNameSize = 256;
  176.44 -
  176.45 -/**
  176.46 -Maximum number of entries allowed in the IAP list for a SMTP mobility account
  176.47 -
  176.48 -@publishedPartner
  176.49 -@released
  176.50 -*/
  176.51 -const TInt KMaxSmtpMobilityAccountIAPListEntries = 32;
  176.52 -
  176.53 -/**
  176.54 -Identifier number for a POP email account.
  176.55 -
  176.56 -@publishedAll
  176.57 -@released
  176.58 -@see TPopAccount
  176.59 -*/
  176.60 -typedef TInt TPopAccountId;
  176.61 -
  176.62 -/**
  176.63 -Identifier number for an IMAP email account.
  176.64 -
  176.65 -@publishedAll
  176.66 -@released
  176.67 -@see TImapAccount
  176.68 -*/
  176.69 -typedef TInt TImapAccountId;
  176.70 -
  176.71 -/**
  176.72 -Identifier number for an SMTP email account.
  176.73 -
  176.74 -@publishedAll
  176.75 -@released
  176.76 -@see TSmtpAccount
  176.77 -*/
  176.78 -typedef TInt TSmtpAccountId;
  176.79 -
  176.80 -/**
  176.81 -Identifier number for an SMTP moblity account.
  176.82 -
  176.83 -@publishedPartner
  176.84 -@released
  176.85 -*/
  176.86 -typedef TInt TSmtpMobilityAccountId;
  176.87 -
  176.88 -/**
  176.89 -Array of IAP values
  176.90 -
  176.91 -@publishedPartner
  176.92 -@released
  176.93 -*/
  176.94 -typedef RArray<TUint32> RArrayIAP;
  176.95 -
  176.96 -/**
  176.97 -Null or undefined SMTP account identifier
  176.98 -
  176.99 -@publishedPartner
 176.100 -@released
 176.101 -*/
 176.102 -const TSmtpAccountId KNullSmtpAccountId = 0;
 176.103 -
 176.104 -/**
 176.105 -POP account ID.
 176.106 -
 176.107 -Objects of this type identify POP email accounts. 
 176.108 -They are obtained when a POP account is created 
 176.109 -(CEmailAccounts::CreatePopAccountL()), or by 
 176.110 -querying for what POP accounts exist 
 176.111 -(CEmailAccounts::GetPopAccountL() and CEmailAccounts::GetPopAccountsL()).
 176.112 -
 176.113 -The object is then used as a handle to the account when getting
 176.114 -the account settings, using CEmailAccounts::LoadPopSettingsL() and 
 176.115 -CEmailAccounts::LoadPopIapSettingsL().
 176.116 -
 176.117 -@publishedAll
 176.118 -@released
 176.119 -*/
 176.120 -class TPopAccount
 176.121 -	{
 176.122 -public:
 176.123 -	/** POP account identifier number. 
 176.124 -	
 176.125 -	Each POP account stored on the phone has a different
 176.126 -	identifier number to distinguish it from other accounts.
 176.127 -	*/
 176.128 -	TPopAccountId iPopAccountId;
 176.129 -
 176.130 -	/** POP account name. */
 176.131 -	TBuf<KEmailAccountNameSize> iPopAccountName;
 176.132 -
 176.133 -	/** Entry ID of the POP service for this account. */
 176.134 -	TMsvId iPopService;
 176.135 -
 176.136 -	/** Entry ID of the related SMTP service for this account. 
 176.137 -		
 176.138 -	This is set if an SMTP service has been created, using 
 176.139 -	CEmailAccounts::CreateSmtpAccountL(), that specifies that 
 176.140 -	it is related to this account. An SMTP service (which provides
 176.141 -	email sending functionality) is used in conjunction with 
 176.142 -	a POP or IMAP service (which provide email retrieval).
 176.143 -	*/
 176.144 -	TMsvId iSmtpService;
 176.145 -	};
 176.146 -
 176.147 -/**
 176.148 -IMAP account ID.
 176.149 -
 176.150 -Objects of this type identify IMAP email accounts. 
 176.151 -They are obtained when a IMAP account is created 
 176.152 -(CEmailAccounts::CreateImapAccountL()), or by 
 176.153 -querying for what IMAP accounts exist 
 176.154 -(CEmailAccounts::GetImapAccountL() and CEmailAccounts::GetImapAccountsL()).
 176.155 -
 176.156 -The object is then used as a handle to the account when getting
 176.157 -the account settings, using CEmailAccounts::LoadImapSettingsL() and 
 176.158 -CEmailAccounts::LoadImapIapSettingsL().
 176.159 -
 176.160 -@publishedAll
 176.161 -@released
 176.162 -*/
 176.163 -class TImapAccount
 176.164 -	{
 176.165 -public:
 176.166 -	/** IMAP account identifier number.
 176.167 -	
 176.168 -	Each IMAP account stored on the phone has a different
 176.169 -	identifier number to distinguish it from other accounts.
 176.170 -	*/
 176.171 -	TImapAccountId iImapAccountId;
 176.172 -
 176.173 -	/** IMAP account name */
 176.174 -	TBuf<KEmailAccountNameSize> iImapAccountName;
 176.175 -
 176.176 -	/** Entry ID of the IMAP service for this account. */
 176.177 -	TMsvId iImapService;
 176.178 -
 176.179 -	/** Entry ID of the related SMTP service for this account. 
 176.180 -		
 176.181 -	This is set if an SMTP service has been created, using 
 176.182 -	CEmailAccounts::CreateSmtpAccountL(), that specifies that 
 176.183 -	it is related to this account. An SMTP service (which provides
 176.184 -	email sending functionality) is used in conjunction with 
 176.185 -	a POP or IMAP service (which provide email retrieval).
 176.186 -	*/
 176.187 -	TMsvId iSmtpService;
 176.188 -	};
 176.189 -
 176.190 -/**
 176.191 -SMTP account ID.
 176.192 -
 176.193 -Objects of this type identify SMTP email accounts. 
 176.194 -They are obtained when a SMTP account is created 
 176.195 -(CEmailAccounts::CreateSmtpAccountL()), or by 
 176.196 -querying for what SMTP accounts exist 
 176.197 -(CEmailAccounts::GetSmtpAccountL() and CEmailAccounts::GetISmtpAccountsL()).
 176.198 -
 176.199 -The object is then used as a handle to the account when getting
 176.200 -the account settings, using CEmailAccounts::LoadSmtpSettingsL() and 
 176.201 -CEmailAccounts::LoadSmtpIapSettingsL().
 176.202 -
 176.203 -@publishedAll
 176.204 -@released
 176.205 -*/
 176.206 -class TSmtpAccount
 176.207 -	{
 176.208 -public:
 176.209 -	/** SMTP account identifier number. */
 176.210 -	TSmtpAccountId iSmtpAccountId;
 176.211 -
 176.212 -	/** SMTP account name */
 176.213 -	TBuf<KEmailAccountNameSize> iSmtpAccountName;
 176.214 -
 176.215 -	/** Entry ID of the SMTP service for this account. */
 176.216 -	TMsvId iSmtpService;
 176.217 -
 176.218 -	/** Entry ID of the related POP or IMAP service for this account. 
 176.219 -		
 176.220 -	An SMTP service (which provides	email sending functionality) is 
 176.221 -	used in conjunction with a POP or IMAP service (which provide email retrieval).
 176.222 -	*/
 176.223 -	TMsvId iRelatedService;
 176.224 -	};
 176.225 -
 176.226 -/**
 176.227 -@publishedPartner
 176.228 -@released
 176.229 -*/
 176.230 -class TSmtpMobilityAccount
 176.231 -	{
 176.232 -public:
 176.233 -	/** SMTP mobility account identifier */
 176.234 -	TSmtpMobilityAccountId iAccountId;
 176.235 -
 176.236 -	/** SMTP mobility account name */
 176.237 -	TBuf<KEmailAccountNameSize> iName;
 176.238 -
 176.239 -	/** Parent SMTP account identifier */
 176.240 -	TSmtpAccountId iParentSmtpAccountId;
 176.241 -
 176.242 -	/** Linked SMTP account identifier. Identifies the SMTP account whose
 176.243 -	    settings will be used by this mobility account. If the mobility account
 176.244 -	    is using its own settings, this will be set to KNullSmtpAccountId. */
 176.245 -	TSmtpAccountId iLinkedSmtpAccountId;
 176.246 -	};
 176.247 -
 176.248 -/**
 176.249 -Creates, loads, saves and deletes email (IMAP, POP, and SMTP) accounts. 
 176.250 -
 176.251 -An account encapsulates:
 176.252 -
 176.253 -- Settings for a messaging service. There is a different type of 
 176.254 -  settings class for each of the email protocols (CImPop3Settings, 
 176.255 -  CImImap4Settings, CImSmtpSettings).
 176.256 -- IAP (Internet account) settings for accessing the service.
 176.257 -
 176.258 -The class has a family of functions for each protocol to create, get,
 176.259 -and delete accounts:
 176.260 -
 176.261 -- Create\<protocol\>AccountL 
 176.262 -- Get\<protocol\>AccountL 
 176.263 -- Get\<protocol\>AccountsL 
 176.264 -- Delete\<protocol\>AccountL 
 176.265 -
 176.266 -where \<protocol\> is either POP, IMAP, or SMTP. 
 176.267 -The Create and Get functions don't directly return settings 
 176.268 -objects, but only account identifiers. 
 176.269 -
 176.270 -Account identifiers are passed to the following functions 
 176.271 -to save and load the service and IAP settings for that account:
 176.272 -
 176.273 -- Load\<protocol\>SettingsL
 176.274 -- Save\<protocol\>SettingsL 
 176.275 -- Load\<protocol\>IapSettingsL 
 176.276 -- Save\<protocol\>IapSettingsL 
 176.277 -
 176.278 -For SMTP only, there is a concept of a default account (as a client
 176.279 -program may want to send an email, and not care which account is used.)
 176.280 -SetDefaultSmtpAccountL(), DefaultSmtpAccountL() and DeleteDefaultSmtpAccountL() 
 176.281 -are used to handle this.
 176.282 -
 176.283 -Note that an account is associated with a service entry in the message store,
 176.284 -but account information itself is stored in the central repository.
 176.285 -
 176.286 -@publishedAll
 176.287 -@released
 176.288 -*/
 176.289 -class CEmailAccounts : public CBase, public MMsvSessionObserver
 176.290 -	{
 176.291 -public:
 176.292 -
 176.293 -	IMPORT_C static CEmailAccounts* NewL();
 176.294 -	IMPORT_C static CEmailAccounts* NewLC();
 176.295 -	IMPORT_C virtual ~CEmailAccounts();
 176.296 -
 176.297 -	IMPORT_C TPopAccount CreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings,
 176.298 -		const CImIAPPreferences& aPopIAP, TBool aReadOnly);
 176.299 -
 176.300 -	IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
 176.301 -		const CImIAPPreferences& aImapIAP, TBool aReadOnly);
 176.302 -
 176.303 -	IMPORT_C TSmtpAccount CreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings,
 176.304 -		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
 176.305 -
 176.306 -	IMPORT_C TSmtpAccount CreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings,
 176.307 -		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
 176.308 -
 176.309 -	IMPORT_C TSmtpAccount CreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, 
 176.310 -		const CImIAPPreferences& aSmtpIAP, TBool aReadOnly);
 176.311 -
 176.312 -	IMPORT_C void GetPopAccountsL(RArray<TPopAccount>& aAccounts);
 176.313 -	IMPORT_C void GetPopAccountL(TMsvId aServiceId, TPopAccount& aAccount); 
 176.314 -	IMPORT_C void DeletePopAccountL(const TPopAccount& aAccount);
 176.315 -
 176.316 -	IMPORT_C void GetImapAccountsL(RArray<TImapAccount>& aAccounts);
 176.317 -	IMPORT_C void GetImapAccountL(TMsvId aServiceId, TImapAccount& aAccount); 
 176.318 -	IMPORT_C void DeleteImapAccountL(const TImapAccount& aAccount);
 176.319 -
 176.320 -	IMPORT_C void GetSmtpAccountsL(RArray<TSmtpAccount>& aAccounts);
 176.321 -	IMPORT_C void GetSmtpAccountL(TMsvId aServiceId, TSmtpAccount& aAccount); 
 176.322 -	IMPORT_C void DeleteSmtpAccountL(const TSmtpAccount& aAccount);
 176.323 -	IMPORT_C void DeleteDefaultSmtpAccountL();
 176.324 -
 176.325 -	IMPORT_C void PopulateDefaultPopSettingsL(CImPop3Settings& aPopSettings,
 176.326 -	CImIAPPreferences& aPopIap);
 176.327 -
 176.328 -	IMPORT_C void PopulateDefaultImapSettingsL(CImImap4Settings& aImapSettings,
 176.329 -	CImIAPPreferences& aImapIap);
 176.330 -
 176.331 -	IMPORT_C void PopulateDefaultSmtpSettingsL(CImSmtpSettings& aSmtpSettings,
 176.332 -	CImIAPPreferences& aSmtpIap);
 176.333 -
 176.334 -	IMPORT_C TInt DefaultSmtpAccountL(TSmtpAccount& aAccount);
 176.335 -	IMPORT_C void SetDefaultSmtpAccountL(const TSmtpAccount& aAccount);
 176.336 -
 176.337 -	IMPORT_C void LoadPopSettingsL(const TPopAccount& aAccount, CImPop3Settings& aPopSettings);
 176.338 -	IMPORT_C void LoadPopIapSettingsL(const TPopAccount& aAccount, CImIAPPreferences& aIAP);
 176.339 -
 176.340 -	IMPORT_C void LoadImapSettingsL(const TImapAccount& aAccount, CImImap4Settings& aImapSettings);
 176.341 -	IMPORT_C void LoadImapIapSettingsL(const TImapAccount& aAccount, CImIAPPreferences& aIAP);
 176.342 -
 176.343 -	IMPORT_C void LoadSmtpSettingsL(const TSmtpAccount& aAccount, CImSmtpSettings& aSmtpSettings);
 176.344 -	IMPORT_C void LoadSmtpIapSettingsL(const TSmtpAccount& aAccount, CImIAPPreferences& aIAP);
 176.345 -
 176.346 -	IMPORT_C void SavePopSettingsL(const TPopAccount& aAccount, const CImPop3Settings& aPopSettings);
 176.347 -	IMPORT_C void SavePopIapSettingsL(const TPopAccount& aAccount, const CImIAPPreferences& aIAP);
 176.348 -
 176.349 -	IMPORT_C void SaveImapSettingsL(const TImapAccount& aAccount, const CImImap4Settings& aImapSettings);
 176.350 -
 176.351 -	IMPORT_C void SaveImapIapSettingsL(const TImapAccount& aAccount, const CImIAPPreferences& aIAP);
 176.352 -
 176.353 -	IMPORT_C void SaveSmtpSettingsL(const TSmtpAccount& aAccount, const CImSmtpSettings& aSmtpSettings);
 176.354 -	IMPORT_C void SaveSmtpIapSettingsL(const TSmtpAccount& aAccount, const CImIAPPreferences& aIAP);
 176.355 -
 176.356 -	IMPORT_C TBool IsAccountReadOnlyL(const TPopAccount& aAccount);
 176.357 -	IMPORT_C TBool IsAccountReadOnlyL(const TImapAccount& aAccount);
 176.358 -	IMPORT_C TBool IsAccountReadOnlyL(const TSmtpAccount& aAccount);
 176.359 -
 176.360 -	// Published partner routines
 176.361 -	IMPORT_C TImapAccount CreateImapAccountL(const TDesC& aAccountName,
 176.362 -		const CImImap4Settings& aImapSettings, const CImIAPPreferences& aImapIAP,
 176.363 -		const CImapSyncDownloadRules& aSyncDownloadRules, TBool aReadOnly);
 176.364 -	IMPORT_C void LoadImapSyncDownloadRulesL(const TImapAccount& aAccount, CImapSyncDownloadRules& aRules);
 176.365 -	IMPORT_C void LoadImapTransportBufferSizesL(CImapTransportBufferSizes& aBufferSizes);
 176.366 -	IMPORT_C void SaveImapSyncDownloadRulesL(const TImapAccount& aAccount, const CImapSyncDownloadRules& aRules);
 176.367 -	IMPORT_C void SaveImapTransportBufferSizesL(const CImapTransportBufferSizes& aBufferSizes);
 176.368 -	IMPORT_C void DeleteImapTransportBufferSizesL();
 176.369 -
 176.370 -	IMPORT_C void GetSmtpAccountL(TSmtpAccountId aAccountId, TSmtpAccount& aAccount);
 176.371 -
 176.372 -	IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const CImSmtpMobilitySettings& aSettings, TBool aReadOnly);
 176.373 -	IMPORT_C TSmtpMobilityAccount CreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const TSmtpAccount& aSmtpAccount, const TSmtpAccount& aLinkedSmtpAccount, TBool aReadOnly);
 176.374 -	IMPORT_C void GetSmtpMobilityAccountsL(const TSmtpAccount& aSmtpAccount, RArray<TSmtpMobilityAccount>& aAccounts);
 176.375 -	IMPORT_C void DeleteSmtpMobilityAccountL(const TSmtpMobilityAccount& aAccount);
 176.376 -
 176.377 -	IMPORT_C void PopulateDefaultSmtpMobilitySettingsL(CImSmtpMobilitySettings& aSettings);
 176.378 -	IMPORT_C void LoadSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, CImSmtpMobilitySettings& aSettings);
 176.379 -	IMPORT_C void SaveSmtpMobilitySettingsL(const TSmtpMobilityAccount& aAccount, const CImSmtpMobilitySettings& aSettings);
 176.380 -
 176.381 -	IMPORT_C void LoadSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, RArrayIAP& aIapList);
 176.382 -	IMPORT_C void SaveSmtpMobilityAccountIapListL(const TSmtpMobilityAccount& aAccount, const RArrayIAP& aIapList);
 176.383 -
 176.384 -	IMPORT_C TBool IsAccountReadOnlyL(const TSmtpMobilityAccount& aAccount);
 176.385 -
 176.386 -	// Internal routines
 176.387 -	IMPORT_C void GetSmtpMobilityAccountsL(RArray<TSmtpMobilityAccount>& aAccounts);
 176.388 -	IMPORT_C TBool LoadSmtpMobilitySettingsL(TSmtpAccountId& aSmtpAccountId, TUint32 aIap, CImSmtpMobilitySettings& aSettings);
 176.389 -
 176.390 -private:
 176.391 -	CEmailAccounts();
 176.392 -	void HandleSessionEventL(TMsvSessionEvent , TAny* , TAny* , TAny* );
 176.393 -	CMsvSession& SessionL();
 176.394 -	CRepository& PopRepositoryL();
 176.395 -	CRepository& ImapRepositoryL();
 176.396 -	CRepository& SmtpRepositoryL();
 176.397 -
 176.398 -	TMsvId CreateEmailServiceL(CMsvEntry& aMsvEntry, const TDesC& aAccountName, TUid aMTMType, TBool aVisible);
 176.399 -	void SetRelatedIdL(CMsvEntry& aMsvEntry, TMsvId aId, TMsvId aRelatedId);
 176.400 -	void SetEntryDetailsL(TMsvId aId, const TDesC& aAccountName);
 176.401 -	void UnSetInPreparationFlagsL(CMsvEntry& aMsvEntry, TMsvId aId, TInt aAccountId);
 176.402 -	void DeleteServiceEntryL(CMsvEntry& aMsvEntry, TMsvId aId);
 176.403 -
 176.404 -	TUint GetNextEmptyAccountSlotL(CRepository& aRepository);
 176.405 -	TUint32 FindEmailAccountL(TMsvId aService, CRepository& aRepository);
 176.406 -
 176.407 -	void LoadIAPPrefSettingsL(TUint32 aAccountId, CImIAPPreferences& aIAP, CRepository& aRepository);
 176.408 -	void DoLoadPopSettingsL(TUint32 aAccountId, CImPop3Settings& aPopSettings);
 176.409 -	void DoLoadImapSettingsL(TUint32 aAccountId, CImImap4Settings& aImapSettings);
 176.410 -	void DoLoadSmtpSettingsL(TUint32 aAccountId, CImSmtpSettings& aSmtpSettings);
 176.411 -
 176.412 -	void SaveIAPPrefSettingsL(TUint32 aAccountId, const CImIAPPreferences& aIAP, CRepository& aRepository);
 176.413 -	void DoSavePopSettingsL(TUint32 aAccountId, const CImPop3Settings& aPopSettings);
 176.414 -	void DoSaveSmtpSettingsL(TUint32 aAccountId, const CImSmtpSettings& aSmtpSettings);
 176.415 -	void DoSaveImapSettingsL(TUint32 aAccountId, const CImImap4Settings& aImapSettings);	
 176.416 -	void DoSaveImapSyncDownloadRulesL(TUint32 aAccountId, const CImapSyncDownloadRules& aRules, CRepository& aRepository);
 176.417 -
 176.418 -	TImapAccount CreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
 176.419 -		const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TBool aReadOnly);
 176.420 -
 176.421 -	TUint32 DoCreatePopAccountL(const TDesC& aAccountName, const CImPop3Settings& aPopSettings, 
 176.422 -		const CImIAPPreferences& aPopIAP, TMsvId aPopService, TMsvId aRelatedService, TBool aReadOnly);
 176.423 -	TUint32 DoCreateImapAccountL(const TDesC& aAccountName, const CImImap4Settings& aImapSettings,
 176.424 -		const CImIAPPreferences& aImapIAP, const CImapSyncDownloadRules* aSyncDownloadRules, TMsvId aImapService,
 176.425 -		TMsvId aRelatedService, TBool aReadOnly);
 176.426 -	TUint32 DoCreateSmtpAccountL(TPopAccount& aPopAccount, const CImSmtpSettings& aSmtpSettings, 
 176.427 -		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aPopAccountId, TBool aReadOnly);
 176.428 -	TUint32 DoCreateSmtpAccountL(TImapAccount& aImapAccount, const CImSmtpSettings& aSmtpSettings, 
 176.429 -		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, CMsvEntry& aMsvEntry, TUint32& aImapAccountId, TBool aReadOnly);
 176.430 -	TUint32 DoCreateSmtpAccountL(const TDesC& aAccountName, const CImSmtpSettings& aSmtpSettings, 
 176.431 -		const CImIAPPreferences& aSmtpIAP, TMsvId aSmtpService, TMsvId aRelatedService, TBool aReadOnly);	
 176.432 -
 176.433 -	void DeleteIAPPrefSettingsL(TUint32 aAccountId, CRepository& aRepository);
 176.434 -	void DeletePopSettings(TUint32 aAccountId, CRepository& aRepository);
 176.435 -	void DeleteSmtpSettings(TUint32 aAccountId, CRepository& aRepository);
 176.436 -	void DeleteImapSettings(TUint32 aAccountId, CRepository& aRepository);
 176.437 -	void DeleteImapSyncDownloadRulesL(TUint32 aAccountId, CRepository& aRepository);
 176.438 -
 176.439 -	void GetEmailServicesL(CMsvEntrySelection& aServices, TUid aMTMType, CMsvEntry& aMsvEntry);
 176.440 -
 176.441 -	TBool IsAsciiPrintable(const TDesC16& aText);
 176.442 -	TBool IsAsciiPrintable(const TDesC8& aText);
 176.443 -	TBool IsUnicodePrintable(const TDesC16& aText);
 176.444 -
 176.445 -	TSmtpMobilityAccount DoCreateSmtpMobilityAccountL(const TDesC& aAccountName, const RArrayIAP& aIapList, const CImSmtpMobilitySettings& aSettings, const TSmtpAccount& aSmtpAccount, TSmtpAccountId aLinkedSmtpAccountId, TBool aReadOnly);
 176.446 -	void AddMobilityAccountToSmtpAccountL(const TSmtpAccount& aSmtpAccount, const RArrayIAP& aIapList, TUint32 aMobAccRepId, CRepository& aRepository);
 176.447 -	void AddLinkToMobilityAccountL(TSmtpAccountId aLinkedSmtpAccountId, TUint32 aMobAccRepId, CRepository& aRepository);
 176.448 -	TInt FindIapListEntryInSmtpMobilityAccountListL(const RArrayIAP& aIapList, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries, TInt aIgnorePos);
 176.449 -	TInt FindAccountIdInSmtpMobilityAccountListL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId, TInt aNumEntries);
 176.450 -	void GetSmtpAccountInfoForMobilityAccountL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32& aSmtpAccRepId, TInt& aPos);
 176.451 -	void DeleteAllOwnedMobilityAccountsL(TUint32 aSmtpAccRepId, CRepository& aRepository);
 176.452 -	void DeleteAllLinkedMobilityAccountsL(TUint32 aLinkedSmtpAccRepId, CRepository& aRepository);
 176.453 -	void DeleteSmtpMobilityAccountListEntryL(TUint32 aMobAccRepId, CRepository& aRepository, TUint32 aSmtpAccRepId);
 176.454 -	void DeleteSmtpMobilityAccountFromLinkedSmtpAccountL(TUint32 aMobAccRepId, CRepository& aRepository);
 176.455 -	TBool IsSmtpTypeAccountReadOnlyL(TUint32 aAccRepId);
 176.456 -	TBool IsSmtpMobilityAccount(CRepository& aRepository, TUint32 aAccRepId);
 176.457 -
 176.458 -private:
 176.459 -	enum TEmailSettingTypes
 176.460 -		{
 176.461 -		// Partial CenRep Id for service settings
 176.462 -		EServiceSettingType 			= 0x00000000,
 176.463 -		// Partial CenRep Id for IAP Prefs
 176.464 -		EIAPPrefSettingType				= 0x00010000,
 176.465 -		// CenRep mask for email accounts
 176.466 -		EAccountMask 					= 0x800FFFFF			
 176.467 -		};
 176.468 -	
 176.469 -	enum TPOPServiceSettingsCenRepId
 176.470 -		{
 176.471 -		EPOPServiceId					= 0x00000000,
 176.472 -		EPOPAccountNameId				= 0x00000001,
 176.473 -		EPOPRelatedSMTPServiceId		= 0x00000002,
 176.474 -		EPOPSettingsVersionId			= 0x00000003, 
 176.475 -		EPOPServerAddressId				= 0x00000004,
 176.476 -		EPOPPortNumberId			   	= 0x00000005,     	
 176.477 -		EPOPFlagsId						= 0x00000006,
 176.478 -		EPOPLoginNameId					= 0x00000007,
 176.479 -		EPOPPasswordId					= 0x00000008,
 176.480 -		EPOPMaxEmailSizeId				= 0x00000009,
 176.481 -		EPOPGetEmailOptionsId			= 0x0000000A,
 176.482 -		EPOPInboxSynchronisationLimitId	= 0x0000000B,
 176.483 -		EPOPPopulationLimitId			= 0x0000000C,
 176.484 -		EPOPReadOnlyAccountId			= 0x0000000D,
 176.485 -		EPOPTlsSslDomainId				= 0x0000000F
 176.486 -		};
 176.487 -
 176.488 -	enum TIMAPServiceSettingsCenRepId
 176.489 -		{
 176.490 -		EIMAPServiceId					= 0x00000000,
 176.491 -		EIMAPAccountNameId				= 0x00000001,
 176.492 -		EIMAPRelatedSMTPServiceId		= 0x00000002,
 176.493 -		EIMAPSettingsVersionId			= 0x00000003, 
 176.494 -		EIMAPServerAddressId			= 0x00000004,
 176.495 -		EIMAPPortNumberId			   	= 0x00000005,     	
 176.496 -		EIMAPFlagsId					= 0x00000006,
 176.497 -		EIMAPLoginNameId				= 0x00000007,
 176.498 -		EIMAPPasswordId					= 0x00000008,
 176.499 -		EIMAPFolderPathId				= 0x00000009,
 176.500 -		EIMAPPathSeparatorId			= 0x0000000A,
 176.501 -		EIMAPSynchronisationStrategyId	= 0x0000000B,
 176.502 -		EIMAPSubscriptionStrategyId		= 0x0000000C,
 176.503 -		EIMAPMaxEmailSizeId				= 0x0000000D,
 176.504 -		EIMAPGetMailOptionsId			= 0x0000000E,
 176.505 -		EIMAPInboxSynchronisationLimitId= 0x0000000F,
 176.506 -		EIMAPMailboxSynchronisationLimitId= 0x00000010,
 176.507 -		EIMAPTlsSslDomainId				= 0x00000012,		
 176.508 -		EIMAPSyncRateId					= 0x00000020,
 176.509 -		EIMAPFetchSizeId				= 0x00000030,
 176.510 -		EIMAPIdleTimeoutId				= 0x00000040,
 176.511 -		EPartialMailOptionsId			= 0x00000050,
 176.512 -		EBodyTextSizeLimitId			= 0x00000060,		
 176.513 -		EAttachmentSizeLimitId			= 0x00000070,
 176.514 -		EIMAPSearchStringId				= 0x00000080,
 176.515 -		EIMAPReadOnlyAccountId			= 0x00000090,
 176.516 -		// 0x00001000 - 0x00002FFF reserved for sync download rules
 176.517 -		// 0x00010000 - 0x00014FFF reserved for IAP/SNAP preferences
 176.518 -		};
 176.519 -
 176.520 -	enum TIMAPSyncDownloadRulesCenRepInfo
 176.521 -		{
 176.522 -		EIMAPSyncDownloadRulesVersionId = 0x00001000,
 176.523 -		EIMAPNumInboxSyncDownloadRulesId = 0x00001001,
 176.524 -		EIMAPNumFolderSyncDownloadRulesId = 0x00001002,
 176.525 -
 176.526 -		EIMAPInboxSyncDownloadRulesBearerTypesId = 0x00001010,
 176.527 -		EIMAPInboxSyncDownloadRulesMailOptionsId = 0x00001011,
 176.528 -		EIMAPInboxSyncDownloadRulesTotalSizeLimitId = 0x00001012,
 176.529 -		EIMAPInboxSyncDownloadRulesBodyTextSizeLimitId = 0x00001013,
 176.530 -		EIMAPInboxSyncDownloadRulesAttachmentSizeLimitId = 0x00001014,
 176.531 -		EIMAPInboxSyncDownloadRulesGetMailBodyPartsId = 0x00001015,
 176.532 -		EIMAPInboxSyncDownloadRulesMaxEmailSizeId = 0x00001016,
 176.533 -
 176.534 -		EIMAPFolderSyncDownloadRulesBearerTypesId = 0x00001030,
 176.535 -		EIMAPFolderSyncDownloadRulesMailOptionsId = 0x00001031,
 176.536 -		EIMAPFolderSyncDownloadRulesTotalSizeLimitId = 0x00001032,
 176.537 -		EIMAPFolderSyncDownloadRulesBodyTextSizeLimitId = 0x00001033,
 176.538 -		EIMAPFolderSyncDownloadRulesAttachmentSizeLimitId = 0x00001034,
 176.539 -		EIMAPFolderSyncDownloadRulesGetMailBodyPartsId = 0x00001035,
 176.540 -		EIMAPFolderSyncDownloadRulesMaxEmailSizeId = 0x00001036,
 176.541 -
 176.542 -		// Offset between sets of rules
 176.543 -		EIMAPSyncDownloadRulesOffset = 0x40
 176.544 -		};
 176.545 -
 176.546 -	enum TIAPPreferencesCenRepId
 176.547 -		{
 176.548 -		// single settings		
 176.549 -		EIAPPrefVersion 				= 0x00010000,
 176.550 -		EIAPChoicesCount 				= 0x00010001,
 176.551 -		
 176.552 -		// List of settings
 176.553 -		EIAPListIDs						= 0x00011000,
 176.554 -		EIAPListDialogPrefs				= 0x00012000,
 176.555 -		// EIAPSnapId placed here is a deviation from Design doc. Remove comment after a decision is made
 176.556 -		EIAPSnapId						= 0x00014000 // The same value is to be used in all account types
 176.557 -		};
 176.558 -
 176.559 -	enum TIMAPTransportBufferSizesCenRepInfo
 176.560 -		{
 176.561 -		EIMAPTransportBufferSizesVersionId = 0x80000100,
 176.562 -		EIMAPNumTransportBufferSizesId = 0x80000101,
 176.563 -
 176.564 -		EIMAPTransportBufferSizesBearerTypesId = 0x80000110,
 176.565 -		EIMAPTransportBufferSizesFetchRequestSizeId = 0x80000111,
 176.566 -		EIMAPTransportBufferSizesMaxOutstandingFetchResponsesId = 0x80000112,
 176.567 -	
 176.568 -		// Offset between entries
 176.569 -		EIMAPTransportBufferSizesOffset = 0x20
 176.570 -		};
 176.571 -
 176.572 -	enum TSMTPServiceSettingsCenRepId
 176.573 -		{
 176.574 -		ESMTPServiceId					= 0x00000000,
 176.575 -		ESMTPAccountNameId				= 0x00000001,		
 176.576 -		ESMTPSettingsVersionId			= 0x00000002,
 176.577 -		ESMTPServerAddressId			= 0x00000003, 
 176.578 -		ESMTPPortNumberId				= 0x00000004, 
 176.579 -		ESMTPFlagsId				   	= 0x00000005,     	
 176.580 -		ESMTPEmailAliasId				= 0x00000006, 
 176.581 -		ESMTPEmailAddressId				= 0x00000007,
 176.582 -		ESMTPReplyToAddressId			= 0x00000008,
 176.583 -		ESMTPReceiptAddressId			= 0x00000009,
 176.584 -		ESMTPBodyEncodingId				= 0x0000000A,
 176.585 -		ESMTPDefaultMsgCharSetId		= 0x0000000B,
 176.586 -		ESMTPSendCopyToSelfId			= 0x0000000C,
 176.587 -		ESMTPSendMessageOptionId		= 0x0000000D,
 176.588 -		ESMTPLoginNameId				= 0x0000000E,
 176.589 -		ESMTPPasswordId					= 0x0000000F,
 176.590 -		ESMTPRelatedServiceId			= 0x00000010,
 176.591 -		ESMTPIncludeToCcId				= 0x00000011,
 176.592 -		ESMTPReadOnlyAccountId			= 0x00000012,
 176.593 -		ESMTPParentAccountId			= 0x00000013,
 176.594 -		ESMTPTlsSslDomainId				= 0x00000014,
 176.595 -		ESMTPLinkedAccountId			= 0x00000015
 176.596 -		};
 176.597 -
 176.598 -	enum TSMTPLinkedMobilityAccountListCenRepInfo
 176.599 -		{
 176.600 -		ESMTPLinkedMobilityAccountListVersionId = 0x00015000,
 176.601 -		ESMTPLinkedMobilityAccountListNumEntriesId = 0x00015001,
 176.602 -		ESMTPLinkedMobilityAccountListEntryId = 0x00015010,
 176.603 -
 176.604 -		// Maximum number of list entries
 176.605 -		ESMTPLinkedMobilityAccountListMaxEntries = 2048
 176.606 -		};
 176.607 -
 176.608 -	enum TSMTPMobilityAccountListCenRepInfo
 176.609 -		{
 176.610 -		ESMTPMobilityAccountListVersionId = 0x00016000,
 176.611 -		ESMTPMobilityAccountListNumEntriesId = 0x00016001,
 176.612 -
 176.613 -		ESMTPMobilityAccountListAccountId = 0x00016010,
 176.614 -		ESMTPMobilityAccountListNumIapsId = 0x00016011,
 176.615 -		ESMTPMobilityAccountListIapId = 0x00016020,
 176.616 -
 176.617 -		// Offset between entries
 176.618 -		ESMTPMobilityAccountListOffset = 0x40,
 176.619 -
 176.620 -		// Maximum number of list entries
 176.621 -		ESMTPMobilityAccountMaxEntries = 32
 176.622 -		};
 176.623 -
 176.624 -private:
 176.625 -	CMsvSession* iMsvSession;
 176.626 -	CRepository* iPOPRepository;
 176.627 -	CRepository* iSMTPRepository;
 176.628 -	CRepository* iIMAPRepository;	
 176.629 -	};
 176.630 -
 176.631 -#endif // __CEMAILACCOUNTS_H__
   177.1 --- a/epoc32/include/cfragmentedstring.h	Tue Mar 16 16:12:26 2010 +0000
   177.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   177.3 @@ -1,178 +0,0 @@
   177.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   177.5 -// All rights reserved.
   177.6 -// This component and the accompanying materials are made available
   177.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   177.8 -// which accompanies this distribution, and is available
   177.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  177.10 -//
  177.11 -// Initial Contributors:
  177.12 -// Nokia Corporation - initial contribution.
  177.13 -//
  177.14 -// Contributors:
  177.15 -//
  177.16 -// Description:
  177.17 -// A string class implementation which allows quick addition of partial strings
  177.18 -// (no copying) by using an internal array of fragmented strings.
  177.19 -// The class allows comprehensive character based matching functionality 
  177.20 -// along with infinite depth marking.
  177.21 -// 
  177.22 -//
  177.23 -
  177.24 -#ifndef __CFRAGMENTEDSTRING_H__
  177.25 -#define __CFRAGMENTEDSTRING_H__
  177.26 -
  177.27 -// includes
  177.28 -#include <e32base.h>
  177.29 -#include <cstack.h>
  177.30 -
  177.31 -
  177.32 -//
  177.33 -// CFragmentedString
  177.34 -
  177.35 -//##ModelId=3B666BC6034A
  177.36 -
  177.37 -
  177.38 -
  177.39 -class CFragmentedString : protected CArrayPtrFlat<HBufC>
  177.40 -/**  
  177.41 -Utility that allows a single string to be built from an array of consecutive sub-strings.
  177.42 -
  177.43 -The sub-strings can be inserted by reference or copied.
  177.44 -
  177.45 -The object maintains information that points to a current position within the string. A typical 
  177.46 -use is to test the contents of the string using one of the Match...() functions, and then use 
  177.47 -ConsumeMatched() to advance past the matched area.
  177.48 -
  177.49 -The class also supports inserting an unlimited number of marks in the string, and performing 
  177.50 -operations relative to the head (i.e. last inserted) mark. 
  177.51 -    @publishedAll
  177.52 -    @released
  177.53 -*/
  177.54 -	{
  177.55 -protected:
  177.56 -	class TStringMark
  177.57 -	/** A mark at a string position. */
  177.58 -		{
  177.59 -	public:
  177.60 -		/** Constructor.
  177.61 -
  177.62 -		@param aIndex Array index of the marked sub-string
  177.63 -		@param aCharacter Character position within the sub-string for the mark
  177.64 -		*/
  177.65 -		TStringMark(TInt aIndex, TInt aCharacter)
  177.66 -		: iMarkIndex(aIndex), iMarkCharacter(aCharacter)
  177.67 -		{
  177.68 -		}
  177.69 -
  177.70 -	public:
  177.71 -		/** Array index of the marked sub-string. */
  177.72 -		TInt iMarkIndex;
  177.73 -		/** Character position within the sub-string for the mark. */
  177.74 -		TInt iMarkCharacter;
  177.75 -		};
  177.76 -	/** A stack of string position marks. */
  177.77 -	typedef CStack<TStringMark, ETrue> CMarkStack;
  177.78 -
  177.79 -public:
  177.80 -	/** Defines possible results of a string matching operation for this class. */
  177.81 -	enum TStringMatch 
  177.82 -		{ 
  177.83 -		/** There was no match. */
  177.84 -		ENoMatch, 
  177.85 -		/** There was a complete match. */
  177.86 -		EMatch,
  177.87 -		/** String contained insufficient data to perform the match operation.
  177.88 -
  177.89 -		This can mean that the start of the target string was matched, but the string 
  177.90 -		being searched ended before a complete match was found. */
  177.91 -		EInsufficientData
  177.92 -		};
  177.93 -
  177.94 -public:
  177.95 -	IMPORT_C CFragmentedString();
  177.96 -	//##ModelId=3B666BC700AD
  177.97 -	IMPORT_C ~CFragmentedString();
  177.98 -
  177.99 -	//##ModelId=3B666BC70099
 177.100 -	IMPORT_C void AddStringL(HBufC* aString); // this version is more efficient
 177.101 -	//##ModelId=3B666BC700A3
 177.102 -	IMPORT_C void AddStringL(const TDesC& aString);
 177.103 -	
 177.104 -	//##ModelId=3B666BC70090
 177.105 -	IMPORT_C TInt Length() const;
 177.106 -	//##ModelId=3B666BC70071
 177.107 -	IMPORT_C HBufC* StringL() const;
 177.108 -	//##ModelId=3B666BC70068
 177.109 -	IMPORT_C HBufC* ContentL() const;
 177.110 -	//##ModelId=3B666BC70067
 177.111 -	IMPORT_C void Reset();
 177.112 -
 177.113 -	//##ModelId=3B666BC7005D
 177.114 -	IMPORT_C TStringMatch Match(const TDesC& aString);
 177.115 -	//##ModelId=3B666BC70049
 177.116 -	IMPORT_C TStringMatch MatchRange(const TUint aLower, const TUint aUpper);
 177.117 -	//##ModelId=3B666BC7003F
 177.118 -	IMPORT_C TStringMatch MatchSelect(const TDesC& aSelection);
 177.119 -	//##ModelId=3B666BC70037
 177.120 -	IMPORT_C TStringMatch MatchNotSelect(const TDesC& aSelection);
 177.121 -	//##ModelId=3B666BC70036
 177.122 -	IMPORT_C void ConsumeMatched();
 177.123 -
 177.124 -	//##ModelId=3B666BC70035
 177.125 -	IMPORT_C HBufC* MarkedL();
 177.126 -	//##ModelId=3B666BC7002B
 177.127 -	IMPORT_C HBufC* MarkedWithInitialTextL(const TDesC& aInitialText);
 177.128 -	//##ModelId=3B666BC70022
 177.129 -	IMPORT_C void Mark(); // Mark can leave
 177.130 -	//##ModelId=3B666BC70021
 177.131 -	IMPORT_C void DeleteMark();
 177.132 -	//##ModelId=3B666BC70018
 177.133 -	IMPORT_C void ResetToMark();
 177.134 -
 177.135 -	//##ModelId=3B666BC7000E
 177.136 -	IMPORT_C void ReplaceMarkedL(HBufC* aString);
 177.137 -	//##ModelId=3B666BC70005
 177.138 -	IMPORT_C void ReplaceMarkedAndSkipL(HBufC* aString);
 177.139 -	//##ModelId=3B666BC70003
 177.140 -	IMPORT_C void InsertStringL(HBufC* aString);
 177.141 -
 177.142 -protected:
 177.143 -	//##ModelId=3B666BC603E1
 177.144 -	IMPORT_C void DeleteToMark(const TStringMark& aStringMark);
 177.145 -	//##ModelId=3B666BC603C4
 177.146 -	IMPORT_C void InsertStringToL(HBufC* aString, TInt aStringIndex, TInt aLengthIntoString);
 177.147 -	//##ModelId=3B666BC70072
 177.148 -	HBufC* StringL(TInt aStartIndex, TInt aStartCharacter, TInt aEndIndex, TInt aEndCharacter, const TDesC* aInitialText=NULL) const;
 177.149 -	//##ModelId=3B666BC603C3
 177.150 -	void StartMatch();
 177.151 -	//##ModelId=3B666BC603B8
 177.152 -	CFragmentedString::TStringMatch DoMatchSelect(const TDesC& aSelection, TBool aInSelection);
 177.153 -	//##ModelId=3B666BC603AE
 177.154 -	TBool FindNextMatchChar(TUint& aChar);
 177.155 -
 177.156 -protected:
 177.157 -	//##ModelId=3B666BC603A4
 177.158 -	/** Result of the last match operation. */
 177.159 -	TStringMatch iMatched;
 177.160 -
 177.161 -	/** Array index of the sub-string found in the last match operation. */
 177.162 -	//##ModelId=3B666BC6039A
 177.163 -	TInt iMatchedToIndex;
 177.164 -	/** Current character position within the iMatchedToIndex sub-string found in the last match operation. */
 177.165 -	//##ModelId=3B666BC60390
 177.166 -	TInt iMatchedToCharacter;
 177.167 -	/** Array index of the current sub-string. */
 177.168 -	//##ModelId=3B666BC60386
 177.169 -	TInt iCurrentIndex;
 177.170 -	/** Current character position within the current sub-string. */
 177.171 -	//##ModelId=3B666BC6037C
 177.172 -	TInt iCurrentCharacter;
 177.173 -	/** Stack of marks in the string.
 177.174 -
 177.175 -	Mark() pushes a mark on the stack; DeleteMark() pops one off.
 177.176 -	*/
 177.177 -	//##ModelId=3B666BC60372
 177.178 -	CMarkStack iMarkStack;
 177.179 -	};
 177.180 -
 177.181 -#endif // __CFRAGMENTEDSTRING_H__
   178.1 --- a/epoc32/include/chttpformencoder.h	Tue Mar 16 16:12:26 2010 +0000
   178.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   178.3 @@ -1,100 +0,0 @@
   178.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   178.5 -// All rights reserved.
   178.6 -// This component and the accompanying materials are made available
   178.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   178.8 -// which accompanies this distribution, and is available
   178.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  178.10 -//
  178.11 -// Initial Contributors:
  178.12 -// Nokia Corporation - initial contribution.
  178.13 -//
  178.14 -// Contributors:
  178.15 -//
  178.16 -// Description:
  178.17 -//
  178.18 -
  178.19 -
  178.20 -
  178.21 -/**
  178.22 - @file CHTTPFormEncoder.h
  178.23 - @warning : This file contains Rose Model ID comments - please do not delete
  178.24 -*/
  178.25 -
  178.26 -#ifndef __CHTTPFORMENCODER__
  178.27 -#define __CHTTPFORMENCODER__
  178.28 -
  178.29 -// System includes
  178.30 -#include <http/mhttpdatasupplier.h>
  178.31 -
  178.32 -//##ModelId=3C4C187902EB
  178.33 -class CHTTPFormEncoder : public CBase, public MHTTPDataSupplier
  178.34 -/** 
  178.35 -A data supplier class that is used to build up data that is to be encoded to application/x-www-form-urlencoded.
  178.36 -
  178.37 -A client will create an instance of this class and add name/value pairs. They then use this as the data supplier for the 
  178.38 -body of an http request that is a forms submission.  
  178.39 -
  178.40 -The name and value must both be supplied in the correct character encoding that you want to send to the server. This then 
  178.41 -gets url encoded.
  178.42 -@publishedAll
  178.43 -@released
  178.44 -*/
  178.45 -	{
  178.46 -public:
  178.47 -	//##ModelId=3C4C18790347
  178.48 -	IMPORT_C static CHTTPFormEncoder* NewL();
  178.49 -	//##ModelId=3C4C18790346
  178.50 -	IMPORT_C  ~CHTTPFormEncoder();
  178.51 -
  178.52 -	// from MHTTPDataSupplier
  178.53 -	//##ModelId=3C4C1879033D
  178.54 -	virtual TBool GetNextDataPart(TPtrC8& aDataPart);
  178.55 -	//##ModelId=3C4C1879033C
  178.56 -	virtual void ReleaseData();
  178.57 -	//##ModelId=3C4C1879033B
  178.58 -	virtual TInt OverallDataSize();
  178.59 -	//
  178.60 -	//##ModelId=3C4C18790335
  178.61 -	virtual TInt Reset();
  178.62 -
  178.63 -	/** Adds a field to the data.
  178.64 -	A field consists a name and value pair
  178.65 -	@param aFieldName A name. This must not be empty
  178.66 -	@param aFieldValue A value. This may be an empty descriptor
  178.67 -	@leave KErrNoMemory There was not enough memory
  178.68 -	@leave KErrArgument aFieldName was empty
  178.69 -	@panic Will panic if called after the first data has been supplied or OverallDataSize has been called
  178.70 -	*/
  178.71 -	//##ModelId=3C4C18790332
  178.72 -	IMPORT_C void AddFieldL(const TDesC8& aFieldName, const TDesC8& aFieldValue);
  178.73 -	
  178.74 -	
  178.75 -private:
  178.76 -	//##ModelId=3C4C18790331
  178.77 -	CHTTPFormEncoder();
  178.78 -	//##ModelId=3C4C1879032A
  178.79 -	void ConstructL();
  178.80 -	
  178.81 -	//##ModelId=3C4C18790328
  178.82 -	TBool IsAlphaNumeric(TUint8 aChar);
  178.83 -	//##ModelId=3C4C1879031F
  178.84 -	void AppendSpecialChar(TUint8 aChar);
  178.85 -	//##ModelId=3C4C1879031D
  178.86 -	void AppendData(const TDesC8& aData);
  178.87 -
  178.88 -private:
  178.89 -	enum THTTPFormEncoderState
  178.90 -		{
  178.91 -		EAllowAppendData, // when first constructed 
  178.92 -		ESuppliedSize,
  178.93 -		ESupplyingData,    // GetDataChunk has been called but ReleaseData has not
  178.94 -		EDataReleased
  178.95 -		};
  178.96 -
  178.97 -	//##ModelId=3C4C18790315
  178.98 -	THTTPFormEncoderState iState;
  178.99 -	//##ModelId=3C4C1879030D
 178.100 -	HBufC8* iData;		// data is ALWAYS kept in the form-url-encoded format
 178.101 -	};
 178.102 -
 178.103 -#endif // __CHTTPFORMENCODER__
   179.1 --- a/epoc32/include/chttpresponse.h	Tue Mar 16 16:12:26 2010 +0000
   179.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   179.3 @@ -1,363 +0,0 @@
   179.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   179.5 -// All rights reserved.
   179.6 -// This component and the accompanying materials are made available
   179.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   179.8 -// which accompanies this distribution, and is available
   179.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  179.10 -//
  179.11 -// Initial Contributors:
  179.12 -// Nokia Corporation - initial contribution.
  179.13 -//
  179.14 -// Contributors:
  179.15 -//
  179.16 -// Description:
  179.17 -// Purpose:  This file provides the definition of the CHTTPResponse class.
  179.18 -// The HTTP Response class encodes HTTP response headers only. It
  179.19 -// contains the methods used to transcode from WSP->HTTP fields
  179.20 -// 
  179.21 -//
  179.22 -
  179.23 -#ifndef __CHTTPRESPONSE_H__
  179.24 -#define __CHTTPRESPONSE_H__
  179.25 -
  179.26 -// System includes
  179.27 -//
  179.28 -#include <e32base.h>
  179.29 -#include <logdef.h>
  179.30 -#include <httpstd.h>
  179.31 -#include <thttpfields.h>
  179.32 -
  179.33 -
  179.34 -// Forward class declarations
  179.35 -//
  179.36 -class CPushMessage;
  179.37 -
  179.38 -// Class definition for CHTTPResponse
  179.39 -//
  179.40 -//##ModelId=3B712B9A0231
  179.41 -class CHTTPResponse : public CBase
  179.42 -/**
  179.43 -@publishedAll
  179.44 -@deprecated
  179.45 -*/
  179.46 -    {
  179.47 -public:	// Methods
  179.48 -
  179.49 -	// Factory method to construct this class.
  179.50 -	//
  179.51 -	// Rtn: a new CHTTPResponse object, by ptr. Ownership is transferred to the
  179.52 -	//      caller.
  179.53 -	//
  179.54 -	//##ModelId=3B712B9B000A
  179.55 -	IMPORT_C static CHTTPResponse* NewL();
  179.56 -
  179.57 -	// Destructor for this class. Removes this object and releases memory held
  179.58 -	// by it
  179.59 -	//
  179.60 -	//##ModelId=3B712B9B0000
  179.61 -	IMPORT_C virtual ~CHTTPResponse();
  179.62 -
  179.63 -	// Clean out the fields buffer
  179.64 -	//
  179.65 -	//##ModelId=3B712B9A03D6
  179.66 -	IMPORT_C void Reset();
  179.67 -
  179.68 -	// Set the fields buffer with the response received from the WAP Stack
  179.69 -	//
  179.70 -	// In:
  179.71 -	//  aResponse - an 8-bit descriptor field containing the origin server's
  179.72 -	//				WSP-encoded response header. Ownership is transferred to
  179.73 -	//				this class.
  179.74 -	//
  179.75 -	//##ModelId=3B712B9A03D4
  179.76 -	IMPORT_C void AddResponse(HBufC8* aResponse);
  179.77 -
  179.78 -	// Accessor to the HTTP response fields buffer
  179.79 -	//
  179.80 -	// Rtn: a reference to the response. Ownership is _NOT_ transferred
  179.81 -	//
  179.82 -	// NOTE THIS SHOULD RETURN CONST - BUT CAN'T BE CHANGED SINCE IT WOULD
  179.83 -	// BREAK BC.
  179.84 -	//##ModelId=3B712B9A03CA
  179.85 -	IMPORT_C HBufC8& Response() const;
  179.86 -
  179.87 - 	// Accessor to the HTTP status code (e.g. 400, 300, 200, 500)
  179.88 -	//
  179.89 -	// Rtn: the status code - series number only.
  179.90 -	//
  179.91 -	//##ModelId=3B712B9A03C1
  179.92 -	IMPORT_C THttpStatusCode StatusCode() const;
  179.93 -
  179.94 - 	// Accessor to the HTTP detailed status code (e.g. 404, 304, 200, 501)
  179.95 -	//
  179.96 -	// Rtn: the status code - series and specific code value
  179.97 -	//
  179.98 -	//##ModelId=3B712B9A03C0
  179.99 -	IMPORT_C THttpStatusCode DetailedStatusCode() const;
 179.100 -
 179.101 -	// Accessor to set the HTTP response status.
 179.102 -	//
 179.103 -	// In:
 179.104 -	//  aCode - the WSP-encoded status code
 179.105 -	//
 179.106 -	//##ModelId=3B712B9A03B6
 179.107 -	IMPORT_C void SetStatusCode(TInt aCode);
 179.108 -
 179.109 -	// Method to find a named field, that returns null terminated 
 179.110 -	// WSP text strings.
 179.111 -	//
 179.112 -	// In:
 179.113 -	//  aField		- the field type
 179.114 -	//  aStartIndex	- the index to search from (defaults to the buffer start)
 179.115 -	//
 179.116 -	// Out:
 179.117 -	//  aDesc - a pointer-type descriptor into the response buffer at the
 179.118 -	//			position where the field was located. The caller must NOT
 179.119 -	//			modify the descriptor contents
 179.120 -	//
 179.121 -	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 179.122 -	//
 179.123 -	//##ModelId=3B712B9A0390
 179.124 -	IMPORT_C TBool FindField(THttpHeaderField aField
 179.125 -                             , TPtrC8& aDesc
 179.126 -                             , TInt aStartIndex = 0) const;
 179.127 -
 179.128 -	// Method to find a named field, that returns 8-bit octet data (binary
 179.129 -	// or strings - not stipulated which).
 179.130 -	//
 179.131 -	// In:
 179.132 -	//  aField		- the field type
 179.133 -	//  aStartIndex	- the index to search from (defaults to the buffer start)
 179.134 -	//
 179.135 -	// Out:
 179.136 -	//  aDesc - a pointer-type descriptor into the response buffer at the
 179.137 -	//			position where the field was located. The caller must NOT
 179.138 -	//			modify the descriptor contents
 179.139 -	//
 179.140 -	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 179.141 -	//
 179.142 -	//##ModelId=3B712B9A0384
 179.143 -	IMPORT_C TBool FindBinaryDescField(THttpHeaderField aField 
 179.144 -							, TPtrC8& aDesc
 179.145 -							, TInt aStartIndex = 0) const;
 179.146 -
 179.147 -	// Method to find a named field, that returns an EPOC date/time structure.
 179.148 -	//
 179.149 -	// In:
 179.150 -	//  aField		- the field type
 179.151 -	//  aStartIndex	- the index to search from (defaults to the buffer start)
 179.152 -	//
 179.153 -	// Out:
 179.154 -	//  aTime - a structure containing the time (and date) found in the header
 179.155 -	//
 179.156 -	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 179.157 -	//
 179.158 -	//##ModelId=3B712B9A03A2
 179.159 -	IMPORT_C TBool FindField(THttpHeaderField aField
 179.160 -                             , TTime& aTime
 179.161 -                             , TInt aStartIndex = 0) const;
 179.162 -
 179.163 -	// Method to find a named field within the Cache Control header
 179.164 -	//
 179.165 -	// In:
 179.166 -	//  aField		- the field type
 179.167 -	//
 179.168 -	// Out:
 179.169 -	//
 179.170 -	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 179.171 -	//
 179.172 -	//##ModelId=3B712B9A0370
 179.173 -	IMPORT_C TInt FindCacheControlFieldValue(TCacheControlFieldValue aField) const;
 179.174 -
 179.175 -	// Method to find a named field within the Cache Control header, 
 179.176 -	// that returns an EPOC date/time structure.
 179.177 -	//
 179.178 -	// In:
 179.179 -	//  aField		- the field type
 179.180 -	//
 179.181 -	// Out:
 179.182 -	//  aTime - a structure containing the time (and date) found in the header field
 179.183 -	//
 179.184 -	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 179.185 -	//
 179.186 -	//##ModelId=3B712B9A035C
 179.187 -	IMPORT_C TBool ExtractCacheControlTime(TCacheControlFieldValue aField, TTime& aTime) const;
 179.188 -
 179.189 -	// Method to search for the content type encoded in the response header
 179.190 -	//
 179.191 -	// Out:
 179.192 -	//  aDesc - a pointer-type descriptor into the appropriate element of an
 179.193 -	//			array prefilled with all the content types that have WSP
 179.194 -	//			encodings. e.g. "text/vnd.wap.wml".  The contents of the
 179.195 -	//			descriptor must NOT be modified.
 179.196 -	//
 179.197 -	//##ModelId=3B712B9A0348
 179.198 -	IMPORT_C void ContentType(TPtrC8& aDesc) const;
 179.199 -
 179.200 -	// Method to search for the realm encoded in the response header, when the
 179.201 -	// response challenges the client for HTTP authentication (code 401)
 179.202 -	//
 179.203 -	// Out:
 179.204 -	//  aDesc - a pointer-type descriptor into the response header buffer
 179.205 -	//			positioned at the realm string within the challenge. The
 179.206 -	//			contents of the descriptor must NOT be modified.
 179.207 -	//
 179.208 -	// Rtn: TBool - set to ETrue if a www-authenticate realm was found, EFalse
 179.209 -	//				otherwise
 179.210 -	//
 179.211 -	//##ModelId=3B712B9A033F
 179.212 -	IMPORT_C TBool FindRealm(TPtrC8& aRealm) const;
 179.213 -
 179.214 -	// Method to search for the character set encoded in the Content-Type
 179.215 -	// field ofthe response header
 179.216 -	//
 179.217 -	// Out:
 179.218 -	//  aDesc - a pointer-type descriptor into the appropriate element of an
 179.219 -	//			array prefilled with all the character sets that have WSP
 179.220 -	//			encodings. e.g. "utf-8".  The contents of the descriptor must
 179.221 -	//			NOT be modified.
 179.222 -	//
 179.223 -	// Rtn: TBool - set to ETrue if a character set was found, EFalse if not
 179.224 -	//
 179.225 -	//##ModelId=3B712B9A032A
 179.226 -	IMPORT_C TBool CharSet(TPtrC8& aDesc) const;
 179.227 -
 179.228 -protected: // Methods
 179.229 -
 179.230 -	// Normal constructor - do non-allocating creation of this class
 179.231 -	//
 179.232 -    IMPORT_C CHTTPResponse();
 179.233 -
 179.234 -	// Second phase construction - any allocation for this class must take place
 179.235 -	// here. Sets up the resources required by an HTTP Response.
 179.236 -	//
 179.237 -	//##ModelId=3B712B9A0322
 179.238 -	IMPORT_C void ConstructL();
 179.239 -
 179.240 -	//friend class declaration - only need the following function
 179.241 -	friend class CPushMessage;
 179.242 -	// Method to locate a named field in the response header, starting at the
 179.243 -	// specified index position.
 179.244 -	//
 179.245 -	// In:
 179.246 -	//  aField		- the header field type
 179.247 -	//  aStartIndex - the (optional) position in the header to start searching
 179.248 -	//
 179.249 -	// Rtn: TInt - the index position of the required field _value_ (not the
 179.250 -	//             field name), or KErrNotFound otherwise.
 179.251 -	//
 179.252 -	//##ModelId=3B712B9A030D
 179.253 -	IMPORT_C TInt LocateField(THttpHeaderField aField, TInt aStartIndex = 0) const; 
 179.254 -
 179.255 -	// Perform a look-up of content type given a WSP encoding value, used as
 179.256 -	// an index.
 179.257 -	//
 179.258 -	// In:
 179.259 -	//  aIndex - the WSP encoding value
 179.260 -	//
 179.261 -	// Rtn: const TText8* - the required content type text - NOT to be changed
 179.262 -	//
 179.263 -	//##ModelId=3B712B9A0352
 179.264 -	IMPORT_C const TText8* ContentType(TInt aContentTypeCode) const;
 179.265 -
 179.266 - 	// Perform a look-up of character set given a WSP encoding value, used as
 179.267 -	// an index.
 179.268 -	//
 179.269 -	// In:
 179.270 -	//  aCharsetCode - the index into the content types table/
 179.271 -	//
 179.272 -	// Rtn: const TText8* - the required 8-bit character set text - NOT to be
 179.273 -	//						changed by the caller
 179.274 -	//
 179.275 -	//##ModelId=3B712B9A0334
 179.276 -	IMPORT_C const TText8* CharSet(TInt aCharsetCode) const;
 179.277 -
 179.278 -private: // Attributes
 179.279 -
 179.280 -	// The 8-bit buffer used to store the HTTP response fields
 179.281 -	//
 179.282 -	//##ModelId=3B712B9A02AA
 179.283 -    HBufC8* iResponse;
 179.284 -
 179.285 -	// The HTTP Status code (coarse - ie. series only, e.g. 100, 200 etc.)
 179.286 -	//
 179.287 -	//##ModelId=3B712B9A0296
 179.288 -    THttpStatusCode iStatusCode;
 179.289 -
 179.290 -	// The detailed HTTP Status code (within series, e.g. 102, 204, 401 etc.)
 179.291 -	//
 179.292 -	//##ModelId=3B712B9A0282
 179.293 -    THttpStatusCode iDetailedStatusCode;
 179.294 -
 179.295 -	// Declare the CLogClient pointer
 179.296 -   	__DECLARE_LOG
 179.297 -
 179.298 -private: // Methods
 179.299 -
 179.300 -	// Do a conversion from 32-bit UIntVar encoding into 32-bit integer
 179.301 -	//
 179.302 -	TInt ParseUIntVar(const TDesC8& aBuffer, TInt& aVal) const;
 179.303 -
 179.304 -	// Extract a WSP encoded MultiOctet Integer encoding into 32-bit integer
 179.305 -	//
 179.306 -	// In:
 179.307 -	//  aSource	- the source Multi-Octet integer
 179.308 -	//
 179.309 -	// Out:
 179.310 -	//  aInt		- the 32-bit resulting integer
 179.311 -	//
 179.312 -	//##ModelId=3B712B9A02F8
 179.313 -	void ExtractMultiOctetInteger(TInt& aInt, const TPtrC8& aSource) const;
 179.314 -
 179.315 -	// Method to find a named field within the Cache Control header
 179.316 -	//
 179.317 -	// In:
 179.318 -	//  aSource		- the descriptor containing the date value
 179.319 -	//	aFrom		- The position in the descriptor to start from
 179.320 -	//
 179.321 -	// Out:
 179.322 -	//  aTime - a structure containing the time (and date) found in the descriptor
 179.323 -	//
 179.324 -	//##ModelId=3B712B9A02E4
 179.325 -	void ExtractFieldDateValue(const TPtrC8& aSource, TInt aFrom, TTime& aTime) const;
 179.326 -
 179.327 -	// Method to find a named field within the Cache Control header
 179.328 -	//
 179.329 -	// In:
 179.330 -	//  aField		- the field type
 179.331 -	//
 179.332 -	// Out:
 179.333 -	//	the found aCacheControl string
 179.334 -	//
 179.335 -	// Rtn: TInt - set to KErrNotFound if the field was not found,
 179.336 -	//		otherwise the position in the cache control descriptor that the field was found
 179.337 -	//
 179.338 -	//##ModelId=3B712B9A0372
 179.339 -	TInt FindCacheControlFieldValue(TCacheControlFieldValue aField,TPtrC8& aCacheControl) const;
 179.340 -
 179.341 -	//##ModelId=3B712B9A02DA
 179.342 -    void Panic(THttpPanicCode aPanicCode) const;
 179.343 -
 179.344 -	// Spare methods for future BC. Const- and non-const versions to assist
 179.345 -	// the caller in preserving const-ness. IMPORT_C ensures they reserve a
 179.346 -	// slot in the vtbl, which is essential to preseve future BC.
 179.347 -	//
 179.348 -	//##ModelId=3B712B9A02D0
 179.349 -	IMPORT_C virtual TAny* Extend_CHTTPResponse(TAny* aArgs);
 179.350 -	//##ModelId=3B712B9A02C6
 179.351 -	IMPORT_C virtual TAny* Extend_CHTTPResponse_const(TAny* aArgs) const;
 179.352 -
 179.353 -#if defined _DEBUG
 179.354 -	// Debug method definition to allow class invariant testing
 179.355 -	// Called by the standard macro __TEST_INVARIANT
 179.356 -	//
 179.357 -	//##ModelId=3B712B9A02BD
 179.358 -	void __DbgTestInvariant() const;
 179.359 -
 179.360 -	//##ModelId=3B712B9A02B2
 179.361 -	void DumpToLog(const TDesC8& aData) const;
 179.362 -#endif
 179.363 -
 179.364 -	};
 179.365 -
 179.366 -#endif // __CHTTPRESPONSE_H__
   180.1 --- a/epoc32/include/cimattachmentwaiter.h	Tue Mar 16 16:12:26 2010 +0000
   180.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   180.3 @@ -1,50 +0,0 @@
   180.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   180.5 -// All rights reserved.
   180.6 -// This component and the accompanying materials are made available
   180.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   180.8 -// which accompanies this distribution, and is available
   180.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  180.10 -//
  180.11 -// Initial Contributors:
  180.12 -// Nokia Corporation - initial contribution.
  180.13 -//
  180.14 -// Contributors:
  180.15 -//
  180.16 -// Description:
  180.17 -//
  180.18 -
  180.19 -#ifndef __CIMATTACHMENTWAITER_H__
  180.20 -#define __CIMATTACHMENTWAITER_H__
  180.21 -
  180.22 -#include <e32base.h>
  180.23 -
  180.24 -class CImEmailMessage;
  180.25 -
  180.26 -/**
  180.27 -An Waiter object used to wait for an attachment to be added to an email message.
  180.28 -
  180.29 -@publishedAll
  180.30 -@released
  180.31 -*/
  180.32 -class CImAttachmentWaiter : public CActive
  180.33 -	{
  180.34 -public:
  180.35 -	IMPORT_C static CImAttachmentWaiter* NewL();
  180.36 -	IMPORT_C ~CImAttachmentWaiter();
  180.37 -	IMPORT_C void StartWaitingL(TRequestStatus& aStatus, CImEmailMessage* aMailMessage, TBool aDeleteMessage = ETrue);
  180.38 -	
  180.39 -private:
  180.40 -	CImAttachmentWaiter();
  180.41 -	void Reset();
  180.42 -	
  180.43 -	// from CActive
  180.44 -	void RunL();
  180.45 -	void DoCancel();
  180.46 -	
  180.47 -private:
  180.48 -	TRequestStatus* iReportStatus;
  180.49 -	CImEmailMessage* iMailMessage;
  180.50 -	TBool iDeleteMessage;
  180.51 -	};
  180.52 -
  180.53 -#endif // __CIMATTACHMENTWAITER_H__
   181.1 --- a/epoc32/include/cimplainbodytext.h	Tue Mar 16 16:12:26 2010 +0000
   181.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   181.3 @@ -1,100 +0,0 @@
   181.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   181.5 -// All rights reserved.
   181.6 -// This component and the accompanying materials are made available
   181.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   181.8 -// which accompanies this distribution, and is available
   181.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  181.10 -//
  181.11 -// Initial Contributors:
  181.12 -// Nokia Corporation - initial contribution.
  181.13 -//
  181.14 -// Contributors:
  181.15 -//
  181.16 -// Description:
  181.17 -//
  181.18 -
  181.19 -#ifndef _CIMPLAINBODYTEXT_H_
  181.20 -#define _CIMPLAINBODYTEXT_H_
  181.21 -
  181.22 -class CImEmailMessage;
  181.23 -class CImStoreMessagePart;
  181.24 -class CMsgActive;
  181.25 -/**
  181.26 -This class is a wrapper over CMsvPlainBodyText class of message server.
  181.27 -The pointer to this class can be obtained by calling OpenPlainBodyTextForReadL 
  181.28 -or OpenPlainBodyTextForWriteL API of the CImEmailMessage class.
  181.29 -This can be used to store/restore a email message created by using the 
  181.30 -CImEmailOperation class.
  181.31 -
  181.32 -@see CImEmailMessage, CImEmailOperation
  181.33 -@publishedAll
  181.34 -@released
  181.35 -*/
  181.36 -
  181.37 -class CImPlainBodyText: public CMsgActive
  181.38 -	{
  181.39 -public:
  181.40 -	static CImPlainBodyText* NewL(CImEmailMessage& aEmailMessage, CMsvEntry& aMsvEntry, CImEmailMessage::TImEmailEntryType aEntryType, TInt aChunkLength, TBool aEditMode);
  181.41 -	IMPORT_C ~CImPlainBodyText();
  181.42 -	
  181.43 -	IMPORT_C void StoreChunkL(const TDesC8& aChunk, TRequestStatus& aStatus);
  181.44 -	IMPORT_C void StoreChunkL(const TDesC8& aChunk);
  181.45 -	
  181.46 -	IMPORT_C void StoreChunkL(const TDesC16& aChunk, TRequestStatus& aStatus);
  181.47 -	IMPORT_C void StoreChunkL(const TDesC16& aChunk);
  181.48 -		
  181.49 -	IMPORT_C void StoreRichTextAsPlainTextL(CRichText& aRichText);
  181.50 -	
  181.51 -	IMPORT_C void CommitL(TRequestStatus& aStatus);
  181.52 -	IMPORT_C void CommitL(TRequestStatus& aStatus, CImMimeHeader& aMimeHeader);
  181.53 -	
  181.54 -	IMPORT_C void NextChunkL(TDes8& aChunk, TRequestStatus& aStatus);
  181.55 -	IMPORT_C void NextChunkL(TDes8& aChunk);
  181.56 -	
  181.57 -	IMPORT_C void NextChunkL(TDes16& aChunk, TRequestStatus& aStatus);		
  181.58 -	IMPORT_C void NextChunkL(TDes16& aChunk);
  181.59 -	
  181.60 -	IMPORT_C void PreviousChunkL(TDes8& aChunk, TRequestStatus& aStatus);
  181.61 -	IMPORT_C void PreviousChunkL(TDes8& aChunk);
  181.62 -		
  181.63 -	IMPORT_C void PreviousChunkL(TDes16& aChunk, TRequestStatus& aStatus);
  181.64 -	IMPORT_C void PreviousChunkL(TDes16& aChunk);
  181.65 -	
  181.66 -private:
  181.67 -	CImPlainBodyText(CImEmailMessage& aEmailMessage, CMsvEntry& aMsvEntry);
  181.68 -	void ConstructL(TInt aChunkLength, CImEmailMessage::TImEmailEntryType aEntryType, TBool aEditMode);
  181.69 -	void DoRunL(); // From CMsgActive
  181.70 -	void DoCancel(); 
  181.71 -private:
  181.72 -	CImEmailMessage& 		iEmailMessage;
  181.73 -	CImStoreMessagePart* 	iStoreMessagePart;
  181.74 -	/** The CMsvEntry associated with the message being stored/restored.*/
  181.75 -	CMsvEntry& 				iMsvEntry;
  181.76 -	/** The array of  framework/server class to store/restore body text in chunks.*/
  181.77 -	RPointerArray<CMsvPlainBodyText> iPlainTextArray;
  181.78 -	/** The id of the message. */
  181.79 -	TMsvId 					iMessageId;
  181.80 -	/** The Store associated with the message being stored/restored.*/
  181.81 -	CMsvStore* 				iStore;
  181.82 -	/** For indexing the plaintext array */
  181.83 -	TInt 					iIndex;
  181.84 -	/** The 16-bit pointer to a chunk that will be populated with data when asynchronous
  181.85 -		16-bit versions of NextChunkL / PreviousChunkL returns.*/
  181.86 -	TDes16*					iChunk16;
  181.87 -	/** The 8-bit pointer to a chunk that will be populated with data when asynchronous
  181.88 -		8-bit versions of NextChunkL / PreviousChunkL returns.*/
  181.89 -	TDes8*					iChunk8;
  181.90 -	
  181.91 -	/** Enum indicating which asynchronous chunk retrieving method resulted in a 
  181.92 -	   	call to DoRunl.*/
  181.93 -	enum TChunkRetrievalState 
  181.94 -		{
  181.95 -		EIdleState,
  181.96 -		ENextChunk8Bit,
  181.97 -		ENextChunk16Bit,
  181.98 -		EPreviousChunk8Bit,
  181.99 -		EPreviousChunk16Bit,
 181.100 -		} iChunkRetrievalState;
 181.101 -	};
 181.102 -
 181.103 -#endif //_CIMPLAINBODYTEXT_H_
   182.1 --- a/epoc32/include/clock.h	Tue Mar 16 16:12:26 2010 +0000
   182.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   182.3 @@ -1,389 +0,0 @@
   182.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   182.5 -// All rights reserved.
   182.6 -// This component and the accompanying materials are made available
   182.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   182.8 -// which accompanies this distribution, and is available
   182.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  182.10 -//
  182.11 -// Initial Contributors:
  182.12 -// Nokia Corporation - initial contribution.
  182.13 -//
  182.14 -// Contributors:
  182.15 -//
  182.16 -// Description:
  182.17 -//
  182.18 -
  182.19 -#if !defined(__CLOCK_H__)
  182.20 -#define __CLOCK_H__
  182.21 -
  182.22 -#if !defined(__E32STD_H__)
  182.23 -#include <e32std.h>
  182.24 -#endif
  182.25 -
  182.26 -#if !defined(__E32BASE_H__)
  182.27 -#include <e32base.h>
  182.28 -#endif
  182.29 -
  182.30 -#if !defined(__W32STD_H__)
  182.31 -#include <w32std.h>
  182.32 -#endif
  182.33 -
  182.34 -//
  182.35 -// miscellaneous typedefs
  182.36 -//
  182.37 -/** @internalComponent */
  182.38 -typedef TBuf8<1024> TConstructorBuf8; // implementation class
  182.39 -
  182.40 -//
  182.41 -// miscellaneous enums
  182.42 -//
  182.43 -
  182.44 -/** @internalComponent */
  182.45 -enum TDisplayType // implementation class
  182.46 -	{
  182.47 -	EDisplayDigital,
  182.48 -	EDisplayAnalog
  182.49 -	};
  182.50 -
  182.51 -/** @internalComponent */
  182.52 -enum TAnalogDisplayHandFeatureType // implementation class
  182.53 -	{
  182.54 -	EAnalogDisplayHandFeatureLine,
  182.55 -	EAnalogDisplayHandFeaturePolyLine,
  182.56 -	EAnalogDisplayHandFeatureCircle
  182.57 -	};
  182.58 -
  182.59 -/** Horizontal alignment options for text in a digital clock's display.
  182.60 -
  182.61 -@see TDigitalDisplayTextSection 
  182.62 -@publishedAll
  182.63 -@released */
  182.64 -enum TDigitalDisplayHorizontalTextAlignment
  182.65 -	{
  182.66 -	/** Left align text. */
  182.67 -	EDigitalDisplayHorizontalTextAlignmentLeft,
  182.68 -	/** Centre align text. */
  182.69 -	EDigitalDisplayHorizontalTextAlignmentCenter,
  182.70 -	/** Right align text. */
  182.71 -	EDigitalDisplayHorizontalTextAlignmentRight
  182.72 -	};
  182.73 -
  182.74 -/** Vertical alignment options for text in a digital clock's display.
  182.75 -
  182.76 -@see TDigitalDisplayTextSection 
  182.77 -@publishedAll
  182.78 -@released */
  182.79 -enum TDigitalDisplayVerticalTextAlignment
  182.80 -	{
  182.81 -	/** Top align text. */
  182.82 -	EDigitalDisplayVerticalTextAlignmentTop,
  182.83 -	/** Centre align text, including the character descent. */
  182.84 -	EDigitalDisplayVerticalTextAlignmentCenterInclDescent,
  182.85 -	/** Centre align text, excluding the character descent. */
  182.86 -	EDigitalDisplayVerticalTextAlignmentCenterExclDescent,
  182.87 -	/** Bottom align text, including the character descent. */
  182.88 -	EDigitalDisplayVerticalTextAlignmentBottomInclDescent,
  182.89 -	/** Bottom align text, excluding the character descent. */
  182.90 -	EDigitalDisplayVerticalTextAlignmentBottomExclDescent
  182.91 -	};
  182.92 -
  182.93 -/** Special characters that can be used in a digital clock display.
  182.94 -
  182.95 -@see TDigitalDisplayTextSection 
  182.96 -@publishedAll
  182.97 -@released */
  182.98 -enum TDigitalDisplayLayoutChar
  182.99 -	{
 182.100 -	/** A flashing block to delimit different sections of the display.
 182.101 -	 */
 182.102 -	/** A flashing block to delimit different sections of the display. */
 182.103 -	EDigitalDisplayLayoutCharFlashingBlockDelimiter=1
 182.104 -	};
 182.105 -
 182.106 -//
 182.107 -/** Different types of hand for an analogue clock. 
 182.108 -
 182.109 -@publishedAll
 182.110 -@released */
 182.111 -enum TAnalogDisplayHandType
 182.112 -	{
 182.113 -	/** A hand that performs one revolution every 12 hours. */
 182.114 -	EAnalogDisplayHandOneRevPer12Hours,
 182.115 -	/** A hand that performs one revolution every hour. */
 182.116 -	EAnalogDisplayHandOneRevPerHour,
 182.117 -	/** A hand that performs one revolution every minute. */
 182.118 -	EAnalogDisplayHandOneRevPerMinute
 182.119 -	};
 182.120 -
 182.121 -//
 182.122 -// miscellaneous structs
 182.123 -//
 182.124 -
 182.125 -struct STimeDeviceShadow
 182.126 -/** Determines how shadows are added to the clock display. 
 182.127 -
 182.128 -@publishedAll
 182.129 -@released */
 182.130 -	{
 182.131 -	/** True if shadows should be displayed, else false. */
 182.132 -	TBool iIsOn;
 182.133 -	/** Colour of the shadows. */
 182.134 -	TRgb iColor;
 182.135 -	/** Offset of shadows from foreground. */
 182.136 -	TPoint iOffset;
 182.137 -	};
 182.138 -
 182.139 -struct SAnalogDisplayAmPm
 182.140 -/** Defines the display parameters of the AM/PM display for an analogue clock.
 182.141 -
 182.142 -@see RAnalogClock 
 182.143 -@publishedAll
 182.144 -@released */
 182.145 -	{
 182.146 -	/** Position relative to the clock face. */
 182.147 -	TPoint iPositionRelativeToFace;
 182.148 -	/** Size. */
 182.149 -	TSize iSize;
 182.150 -	/** Shadow settings. */
 182.151 -	STimeDeviceShadow iShadow;
 182.152 -	/** Background colour. */
 182.153 -	TRgb iBackgroundColor;
 182.154 -	/** Handle to the font to use. This can be obtained using CFbsFont::Handle().
 182.155 -	
 182.156 -	@see CFbsFont::Handle() */
 182.157 -	TInt iFontHandle;
 182.158 -	/** Colour for text. */
 182.159 -	TRgb iTextColor;
 182.160 -	};
 182.161 -
 182.162 -//
 182.163 -// display-addition classes
 182.164 -//
 182.165 -
 182.166 -
 182.167 -class TDisplayAddition
 182.168 -/** This class is used in the derivation of TAnalogDisplayHand and TDigitalDisplayTextSection. 
 182.169 -
 182.170 -@internalComponent */
 182.171 -	{
 182.172 -public:
 182.173 -	const TDesC8& Buf() const;
 182.174 -protected:
 182.175 -	TConstructorBuf8 iBuf;
 182.176 -	};
 182.177 -
 182.178 -//
 182.179 -
 182.180 -class TDigitalDisplayTextSection : public TDisplayAddition
 182.181 -/** A text section for a digital clock.
 182.182 -
 182.183 -@see RDigitalClock 
 182.184 -@publishedAll 
 182.185 -@released */
 182.186 -	{
 182.187 -public:
 182.188 -	IMPORT_C TDigitalDisplayTextSection(TInt aFontHandle, TRgb aTextColor, TDigitalDisplayHorizontalTextAlignment aHorizontalAlignment,
 182.189 -																TDigitalDisplayVerticalTextAlignment aVerticalAlignment,
 182.190 -																TInt aHorizontalMargin, TInt aVerticalMargin, const TDesC& aFormat);
 182.191 -																// N.B. the font passed in to aFontHandle cannot be destroyed until the
 182.192 -																// RDigitalClock has been completely constructed, including all necessary
 182.193 -																// calls to RDigitalClock::AddTextSectionL()
 182.194 -	};
 182.195 -
 182.196 -//
 182.197 -
 182.198 -class TAnalogDisplayHand : public TDisplayAddition
 182.199 -/** A hand for an analogue clock.
 182.200 -
 182.201 -A hand is a vector drawing made from a number of features (lines, circles, 
 182.202 -polylines). These are specified with the hand assumed to be in the 12 o'clock 
 182.203 -position, with TPoint(0,0) being the center of the clock.
 182.204 -
 182.205 -@see RAnalogClock 
 182.206 -@publishedAll 
 182.207 -@released */
 182.208 -	{
 182.209 -public:
 182.210 -	IMPORT_C TAnalogDisplayHand(TAnalogDisplayHandType aType);
 182.211 -	IMPORT_C void AddLine(CGraphicsContext::TPenStyle aPenStyle, TRgb aPenColor, const TSize& aPenSize,
 182.212 -																const TPoint& aStartPoint, const TPoint& aEndPoint);
 182.213 -	IMPORT_C void AddPolyLine(CGraphicsContext::TPenStyle aPenStyle, TRgb aPenColor, const TSize& aPenSize,
 182.214 -																CGraphicsContext::TBrushStyle aBrushStyle, TRgb aBrushColor,
 182.215 -																TBool aClosed, const CArrayFix<TPoint>* aPointList); // aPointList is not destroyed
 182.216 -	IMPORT_C void AddCircle(CGraphicsContext::TPenStyle aPenStyle, TRgb aPenColor, const TSize& aPenSize,
 182.217 -																CGraphicsContext::TBrushStyle aBrushStyle, TRgb aBrushColor,
 182.218 -																const TPoint& aCircleCenter, TInt aRadius);	
 182.219 -	inline TInt NumFeatures() const 
 182.220 -	/** Gets the number of features added to the hand. */
 182.221 -		{return *iNumFeaturesPtr;}
 182.222 -private:
 182.223 -	void AppendType(TAnalogDisplayHandFeatureType aType);
 182.224 -private:
 182.225 -	TInt* iNumFeaturesPtr;
 182.226 -	};
 182.227 -
 182.228 -//
 182.229 -// utility class
 182.230 -//
 182.231 -
 182.232 -class RAnimWithUtils : public RAnim
 182.233 -/** Utility class to support clock animation. 
 182.234 -
 182.235 -@publishedAll
 182.236 -@released
 182.237 -*/
 182.238 -	{
 182.239 -protected:
 182.240 -	RAnimWithUtils(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 182.241 -	void AppendToConstructorBufL(const TDesC8& aData);
 182.242 -	void SendConstructorBufIfCompleteL(TInt aAnimatedObjectType);
 182.243 -	void SendConstructorBufL(TInt aAnimatedObjectType);
 182.244 -	TBool ConstructorBufExists() const;
 182.245 -	TBool ConstructorBufAlreadySent() const;
 182.246 -	TConstructorBuf8& ConstructorBuf() const;
 182.247 -	void SetNumAdditionsStillExpected(TInt aNumAdditionsStillExpected);
 182.248 -public:
 182.249 -	IMPORT_C virtual void Close();
 182.250 -private:
 182.251 -	TConstructorBuf8* iConstructorBuf; // on the heap as it is only required for construction
 182.252 -	TBool iConstructorBufAlreadySent;
 182.253 -	const RWindowBase& iWindow;
 182.254 -	TInt iNumAdditionsStillExpected;
 182.255 -	};
 182.256 -
 182.257 -//
 182.258 -// time-device abstract classes
 182.259 -//
 182.260 -
 182.261 -
 182.262 -class RTimeDevice : public RAnimWithUtils
 182.263 -/** Sets display parameters for clocks.
 182.264 - 
 182.265 -@publishedAll
 182.266 -@released
 182.267 -*/
 182.268 -	{
 182.269 -protected:
 182.270 -	RTimeDevice(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 182.271 -	void AppendDisplayTypeL(TDisplayType aType);
 182.272 -	void AppendDigitalDisplayConstructorArgsL(const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins, const STimeDeviceShadow& aShadow,
 182.273 -																TRgb aBackgroundColor, TInt aNumTextSections);
 182.274 -	void AppendAnalogDisplayConstructorArgsL(const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins, const STimeDeviceShadow& aShadow,
 182.275 -																TInt aFaceHandle, TInt aFaceMaskHandle, TInt aNumHands, const SAnalogDisplayAmPm* aAmPm);
 182.276 -public:
 182.277 -	IMPORT_C void SetVisible(TBool aVisible); // can only be called after full construction - by default clocks are invisible
 182.278 -	IMPORT_C void SetPositionAndSize(const TPoint& aPosition, const TSize& aSize); // can only be called after full construction
 182.279 -	IMPORT_C void SetPosition(const TPoint& aPosition); // can only be called after full construction
 182.280 -	IMPORT_C void SetSize(const TSize& aSize); // can only be called after full construction
 182.281 -	IMPORT_C void UpdateDisplay(); // can only be called after full construction
 182.282 -	IMPORT_C void Draw(); // can only be called after full construction
 182.283 -	};
 182.284 -
 182.285 -//
 182.286 -
 182.287 -class RClock : public RTimeDevice
 182.288 -/** Sets the time for clocks.
 182.289 -
 182.290 -@publishedAll
 182.291 -@released */
 182.292 -	{
 182.293 -protected:
 182.294 -	RClock(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 182.295 -	void AppendClockConstructorArgsL(TTimeIntervalSeconds aUniversalTimeOffset);
 182.296 -public:
 182.297 -	IMPORT_C void SetUniversalTimeOffset(TTimeIntervalSeconds aUniversalTimeOffset); // can only be called after full construction
 182.298 -	};
 182.299 -
 182.300 -//
 182.301 -// time-device concrete classes
 182.302 -//
 182.303 -
 182.304 -class RDigitalClock : public RClock
 182.305 -/** A digital clock.
 182.306 -
 182.307 -A digital clock is composed of one or more text sections, which define
 182.308 -how the time information is displayed.
 182.309 -
 182.310 -@publishedAll 
 182.311 -@released */
 182.312 -	{
 182.313 -public:
 182.314 -	IMPORT_C RDigitalClock(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 182.315 -	IMPORT_C void ConstructL(TTimeIntervalSeconds aUniversalTimeOffset, const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins,
 182.316 -																const STimeDeviceShadow& aShadow, TRgb aBackgroundColor, TInt aNumTextSections);
 182.317 -	IMPORT_C void AddTextSectionL(const TDigitalDisplayTextSection& aTextSection);
 182.318 -	IMPORT_C void SetBackgroundColor(TRgb aBackgroundColor, TRgb aShadowColor); // can only be called after full construction
 182.319 -	IMPORT_C void SetTextColor(TRgb aTextColor);
 182.320 -
 182.321 -	};
 182.322 -
 182.323 -//
 182.324 -
 182.325 -
 182.326 -class RAnalogClock : public RClock
 182.327 -/** An analogue clock.
 182.328 -
 182.329 -@see CFbsBitmap::Handle() 
 182.330 -@publishedAll 
 182.331 -@released */
 182.332 -
 182.333 -	{
 182.334 -public:
 182.335 -	IMPORT_C RAnalogClock(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 182.336 -	IMPORT_C void ConstructL(TTimeIntervalSeconds aUniversalTimeOffset, const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins,
 182.337 -																const STimeDeviceShadow& aShadow, TInt aFaceHandle, TInt aFaceMaskHandle, TInt aNumHands, const SAnalogDisplayAmPm* aAmPm=NULL);
 182.338 -																// N.B. the bitmap(s) passed in to aFaceHandle and aFaceMaskHandle in these
 182.339 -																// ConstructL functions cannot be destroyed until the RAnalogClock has been
 182.340 -																// completely constructed, including all necessary calls to
 182.341 -																// RAnalogClock::AddHandL() - aFaceMaskHandle may be 0
 182.342 -	IMPORT_C void AddHandL(const TAnalogDisplayHand& aHand);
 182.343 -	IMPORT_C void SetBackgroundColor(TRgb aBackgroundColor, TRgb aShadowColor); // can only be called after full construction
 182.344 -	IMPORT_C void SetTextColor(TRgb aTextColor);
 182.345 -	IMPORT_C void SetPenColor(const TRgb aPenColor);
 182.346 -	IMPORT_C void SetBrushColor(const TRgb aBrushColor);
 182.347 -	};
 182.348 -
 182.349 -//
 182.350 -// message-window class
 182.351 -//
 182.352 -
 182.353 -
 182.354 -class RMessageWindow : public RAnimWithUtils
 182.355 -/** A configurable window that appears for a brief time to display a message to 
 182.356 -the user and then disappears.
 182.357 -
 182.358 -This is the basic class that is used by classes such as CEikonEnv and CEikMsgWin 
 182.359 -to provide information and message windows. Such higher-level classes would 
 182.360 -normally be used by client applications rather than RMessageWindow. This class 
 182.361 -can be used though to implement specialist new classes. 
 182.362 -
 182.363 -Note that this class is in the same library as the Clock API for implementation 
 182.364 -reasons only.
 182.365 -
 182.366 -@see CEikMsgWin
 182.367 -@see CEikonEnv 
 182.368 -@publishedAll 
 182.369 -@released */
 182.370 -	{
 182.371 -public:
 182.372 -	/** Defines the maximum length of text in the message. */
 182.373 -	enum
 182.374 -		{
 182.375 -		/** Maximum length of text in the message. */
 182.376 -		EMaxTextLength=80
 182.377 -		};
 182.378 -public:
 182.379 -	IMPORT_C RMessageWindow(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 182.380 -	IMPORT_C void ConstructL(TInt aBaselineOffset, TInt aFontHandle, TRgb aBackgroundColor, TRgb aTextColor);
 182.381 -	IMPORT_C void ConstructL(TInt aBaselineOffset, TInt aFontHandle, TRgb aBackgroundColor, TRgb aTextColor, TRgb aBorderColor);
 182.382 -	IMPORT_C void StartDisplay(TBool aFlash, TTimeIntervalMicroSeconds32 aInitialDelay, const TDesC& aText);
 182.383 -	IMPORT_C void StartDisplay(TBool aFlash, TTimeIntervalMicroSeconds32 aInitialDelay, TTimeIntervalMicroSeconds32 aDuration, const TDesC& aText);
 182.384 -	IMPORT_C void CancelDisplay();
 182.385 -	IMPORT_C void GetBorders(TMargins& aBorders);
 182.386 -	IMPORT_C void SetBackgroundColor(TRgb aBackgroundColor);
 182.387 -	IMPORT_C void SetTextColor(TRgb aTextColor);
 182.388 -	IMPORT_C void SetBorderColor(TRgb aBorderColor);
 182.389 -	IMPORT_C void SetPlinthColors(TRgb aTl,TRgb aBr);
 182.390 -	};
 182.391 -
 182.392 -#endif
   183.1 --- a/epoc32/include/cmarkedstack.h	Tue Mar 16 16:12:26 2010 +0000
   183.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   183.3 @@ -1,84 +0,0 @@
   183.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   183.5 -// All rights reserved.
   183.6 -// This component and the accompanying materials are made available
   183.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   183.8 -// which accompanies this distribution, and is available
   183.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  183.10 -//
  183.11 -// Initial Contributors:
  183.12 -// Nokia Corporation - initial contribution.
  183.13 -//
  183.14 -// Contributors:
  183.15 -//
  183.16 -// Description:
  183.17 -// Template class to implement a marked stack. Conatins a stack itself of marks 
  183.18 -// providing basic marking functionality.
  183.19 -// 
  183.20 -//
  183.21 -
  183.22 -#ifndef __CMARKEDSTACK_H__
  183.23 -#define __CMARKEDSTACK_H__
  183.24 -
  183.25 -// includes
  183.26 -#include <e32base.h>
  183.27 -#include <cstack.h>
  183.28 -
  183.29 -//##ModelId=3B666BCD0001
  183.30 -
  183.31 -template <class T, TBool Owner>
  183.32 -class CMarkedStack : public CStack<T, Owner>
  183.33 -/** Provides a templated stack that allows items in the stack to be marked.
  183.34 -
  183.35 -The class allows each mark to have an associated TInt value, which allows different 
  183.36 -types of mark to be used on the same stack.
  183.37 -
  183.38 -Template parameter T specifies the type of object on the stack. Owner should be set to 
  183.39 -ETrue if the object's destructor should delete the objects on the stack.
  183.40 -    @publishedAll
  183.41 -    @released
  183.42 - 
  183.43 -*/
  183.44 -{
  183.45 -protected:
  183.46 -class TMarkPoint
  183.47 -/** Represents a mark.
  183.48 - */
  183.49 -{
  183.50 -public:
  183.51 -	/** Represents a mark. */	
  183.52 -	TMarkPoint(TInt aMarkType
  183.53 -		   , TInt aIndex)
  183.54 -	  : iMarkType(aMarkType)
  183.55 -	  , iStackIndex(aIndex)
  183.56 -	{}
  183.57 -	/** Mark type. */
  183.58 -	TInt iMarkType;
  183.59 -	/** Index of the marked stack item. */
  183.60 -	TInt iStackIndex;
  183.61 -};
  183.62 -/** Defines a stack of marks. */
  183.63 -typedef CStack<TMarkPoint, ETrue> CMarks;
  183.64 -public:
  183.65 -	//##ModelId=3B666BCD0048
  183.66 -	inline virtual ~CMarkedStack();
  183.67 -
  183.68 -	//##ModelId=3B666BCD0041
  183.69 -	inline void MarkL(TInt aMarkType);
  183.70 -	//##ModelId=3B666BCD003F
  183.71 -	inline TInt RemoveMark(TInt aMarkType);
  183.72 -	//##ModelId=3B666BCD003D
  183.73 -	inline void DeleteToMark(TInt aMarkType);
  183.74 -	//##ModelId=3B666BCD0033
  183.75 -	inline void ResetToMark(TInt aMarkType);
  183.76 -protected:
  183.77 -	/** A stack of marks.
  183.78 -
  183.79 -	Items are added and removed from this stack by MarkL(), RemoveMark() etc.
  183.80 -	*/
  183.81 -	//##ModelId=3B666BCD002D
  183.82 -	CMarks iMarks;
  183.83 -};
  183.84 -
  183.85 -#include <cmarkedstack.inl>
  183.86 -
  183.87 -#endif // __CMARKEDSTACK_H__
   184.1 --- a/epoc32/include/cmmsaccounts.h	Tue Mar 16 16:12:26 2010 +0000
   184.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   184.3 @@ -1,127 +0,0 @@
   184.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   184.5 -// All rights reserved.
   184.6 -// This component and the accompanying materials are made available
   184.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   184.8 -// which accompanies this distribution, and is available
   184.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  184.10 -//
  184.11 -// Initial Contributors:
  184.12 -// Nokia Corporation - initial contribution.
  184.13 -//
  184.14 -// Contributors:
  184.15 -//
  184.16 -// Description:
  184.17 -//
  184.18 -
  184.19 -#ifndef __CMMSACCOUNT_H__
  184.20 -#define __CMMSACCOUNT_H__
  184.21 -
  184.22 -
  184.23 -#include <e32base.h>
  184.24 -
  184.25 -class CRepository;
  184.26 -class CMmsSettings;
  184.27 -class TMmsAccountId;
  184.28 -class MMmsSettingsObserver;
  184.29 -
  184.30 -
  184.31 -/** 
  184.32 -The maximum account name size
  184.33 -
  184.34 -@publishedAll
  184.35 -@released
  184.36 -*/
  184.37 -const TInt KMmsAccountNameSize = 256;
  184.38 -
  184.39 -     
  184.40 -
  184.41 -/** 
  184.42 -MMS account ID 
  184.43 -
  184.44 -@publishedAll
  184.45 -@released
  184.46 -*/
  184.47 -class TMmsAccountId 
  184.48 - 	{
  184.49 -public:
  184.50 -	/** MMS account Id */
  184.51 -   	TInt iMmsAccountId;
  184.52 -
  184.53 -	/** MMS account Name */     
  184.54 -   	TBuf<KMmsAccountNameSize> iMmsAccountName;
  184.55 -   	};
  184.56 -
  184.57 -
  184.58 -/**
  184.59 -Stores MMS settings.
  184.60 -
  184.61 -@publishedAll
  184.62 -@released
  184.63 -*/
  184.64 -class CMmsAccounts : public CActive
  184.65 - 	{
  184.66 -public:
  184.67 -  	IMPORT_C static CMmsAccounts* NewL( );
  184.68 -   	IMPORT_C static CMmsAccounts* NewLC( );
  184.69 -    IMPORT_C virtual ~CMmsAccounts();
  184.70 - 
  184.71 -    // Observer functions
  184.72 -    IMPORT_C void AddObserverL(MMmsSettingsObserver & aObserver);
  184.73 -    IMPORT_C void RemoveObserver(MMmsSettingsObserver & aObserver);
  184.74 -
  184.75 -    IMPORT_C TMmsAccountId CreateMMSAccountL(const TDesC& aAccountName, const CMmsSettings& aSettings);
  184.76 -  	IMPORT_C TInt MaxMMSAccounts();
  184.77 -               
  184.78 -    IMPORT_C void GetMMSAccountsL(RArray<TMmsAccountId>& aAccountIds) const;
  184.79 -    IMPORT_C void DeleteMMSAccountL(const TMmsAccountId& aAccountId);
  184.80 -     
  184.81 -    IMPORT_C void LoadSettingsL(const TMmsAccountId& aAccountId, CMmsSettings& aSettings);          
  184.82 -    IMPORT_C void PopulateDefaultSettingsL(CMmsSettings& aSettings);
  184.83 -
  184.84 -    IMPORT_C void SaveSettingsL(const TMmsAccountId& aAccountId, const CMmsSettings& aSettings) const;
  184.85 -
  184.86 -    IMPORT_C TMmsAccountId DefaultMMSAccountL( ) const;
  184.87 -    IMPORT_C void SetDefaultMMSAccountL(const TMmsAccountId& aAccount);
  184.88 -
  184.89 -private:
  184.90 -    CMmsAccounts();
  184.91 -	void ConstructL();
  184.92 -	void DoLoadSettingsL(TUint32 aAccountId, CMmsSettings& aSettings);
  184.93 -	void DoSaveSettingsL(TUint32 aAccountId, const CMmsSettings& aSettings, const TDesC& aAccountName) const;
  184.94 -
  184.95 -    void DoCancel( );
  184.96 -    void RunL( );
  184.97 -
  184.98 -	TUint GetNextEmptyAccountSlotL();
  184.99 -
 184.100 -private:
 184.101 -	enum TMmsSettingsCenRepId
 184.102 -		{
 184.103 -		EMmsAccountName				= 0x00000000,
 184.104 -		EMmsSettingsVersion			= 0x00000001,
 184.105 -		EMmsApplicationID			= 0x00000002,
 184.106 -		EMmsAddress					= 0x00000003,
 184.107 -		EMmsCreationMode			= 0x00000004,
 184.108 -		EMmsSettingsFlags			= 0x00000005,
 184.109 -		EMmsProxyCount				= 0x00000006,
 184.110 -		EMmsNapIdCount				= 0x00000007,		
 184.111 -		EMmsAutomaticDownload		= 0x00000008,
 184.112 -		EMmsValidityPeriod			= 0x00000009,
 184.113 -		EMmsMaxDownloadSize			= 0x0000000A,
 184.114 -		EMmsMaxDownloadRetries		= 0x0000000B,
 184.115 -		EMmsDownloadRetryInterval	= 0x0000000C,
 184.116 -		EMmsMaxSendMsgSize			= 0x0000000D,
 184.117 -		EMmsDeviceContentClass		= 0x0000000E,
 184.118 -		EMmsMaxImageHeight			= 0x0000000F,
 184.119 -		EMmsMaxImageWidth			= 0x00000010,
 184.120 -		
 184.121 -		EMmsProxyList				= 0x00001000,
 184.122 -		EMmsNapIdList				= 0x00002000,
 184.123 -		};
 184.124 -
 184.125 -private:
 184.126 -   	CRepository* iRepository;
 184.127 -    RPointerArray<MMmsSettingsObserver> iObservers;
 184.128 -    };     
 184.129 -     
 184.130 -#endif // __CMMSACCOUNT_H__
   185.1 --- a/epoc32/include/cmmssettings.h	Tue Mar 16 16:12:26 2010 +0000
   185.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   185.3 @@ -1,200 +0,0 @@
   185.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   185.5 -// All rights reserved.
   185.6 -// This component and the accompanying materials are made available
   185.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   185.8 -// which accompanies this distribution, and is available
   185.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  185.10 -//
  185.11 -// Initial Contributors:
  185.12 -// Nokia Corporation - initial contribution.
  185.13 -//
  185.14 -// Contributors:
  185.15 -//
  185.16 -// Description:
  185.17 -//
  185.18 -
  185.19 -#ifndef __CMMSSETTINGS_H__
  185.20 -#define __CMMSSETTINGS_H__
  185.21 -
  185.22 -
  185.23 -#include <e32base.h>
  185.24 -
  185.25 -
  185.26 -class CRepository;
  185.27 -
  185.28 -
  185.29 -/**
  185.30 -Automatic Download Options.
  185.31 -
  185.32 -@publishedAll
  185.33 -@released
  185.34 -*/
  185.35 -enum TAutomaticDownloadOptions
  185.36 - 	{
  185.37 - 	/** Automatic Download Option Off */
  185.38 -	EAutomaticDownloadOff = 0,
  185.39 - 	/** Automatic Download Option On */
  185.40 -	EAutomaticDownloadOn,
  185.41 -	/** Automatic Download Only When Roaming */
  185.42 -	EAutomaticDownloadOnlyWhenRoaming
  185.43 -	};
  185.44 -
  185.45 -
  185.46 -/**
  185.47 -Creation Mode Options.
  185.48 -
  185.49 -@publishedAll
  185.50 -@released
  185.51 -*/
  185.52 -enum TCreationMode
  185.53 - 	{
  185.54 -	/** Creation Mode Free */
  185.55 -	ECreationModeFree = 0,
  185.56 -	/** Creation Mode Warning */
  185.57 -	ECreationModeWarning,
  185.58 -	/** Creation Mode Restricted */
  185.59 -	ECreationModeRestricted
  185.60 -	};
  185.61 -
  185.62 -
  185.63 -/**
  185.64 -Run-time MMS configuration settings.
  185.65 -
  185.66 -Messaging clients should use an instance of this class to specify
  185.67 -and retrieve configuration settings.
  185.68 -
  185.69 -This class should be used with CMmsAccounts to store and restore settings.
  185.70 -
  185.71 -@see CMmsAccounts
  185.72 -
  185.73 -@publishedAll
  185.74 -@released
  185.75 -*/
  185.76 -class CMmsSettings : public CBase
  185.77 -     {
  185.78 -public:
  185.79 -	IMPORT_C static CMmsSettings* NewL( );
  185.80 -	IMPORT_C static CMmsSettings* NewLC( );
  185.81 -    IMPORT_C ~CMmsSettings( );
  185.82 -    IMPORT_C void CopyL(const CMmsSettings& aMmsSettings);    
  185.83 -
  185.84 -    IMPORT_C TInt ApplicationID( ) const;
  185.85 -	IMPORT_C void SetApplicationID(const TInt aAppID);
  185.86 -
  185.87 -	IMPORT_C TPtrC Address( ) const;
  185.88 -   	IMPORT_C void SetAddressL(const TDesC& aAddress);
  185.89 -	
  185.90 -	IMPORT_C TCreationMode CreationMode( ) const;
  185.91 -   	IMPORT_C void SetCreationModeL(TCreationMode aCreationMode);
  185.92 -
  185.93 -    IMPORT_C TInt ProxyCount( ) const;
  185.94 -    IMPORT_C TUid GetProxy(TInt aIndex) const;
  185.95 -    IMPORT_C void AddProxyL(const TUid aProxy);
  185.96 -    IMPORT_C void RemoveProxy(TInt aIndex);
  185.97 -
  185.98 -    IMPORT_C TInt NapIdCount( ) const;
  185.99 -    IMPORT_C TUid GetNapId (TInt aIndex) const;
 185.100 -    IMPORT_C void AddNapIdL(const TUid aNapId);
 185.101 -    IMPORT_C void RemoveNapId(TInt aIndex);
 185.102 -
 185.103 -    IMPORT_C TBool DisplayNotification( ) const;
 185.104 -    IMPORT_C void SetDisplayNotification(TBool aFlag);
 185.105 -
 185.106 -    IMPORT_C TAutomaticDownloadOptions AutomaticDownload( ) const;
 185.107 -    IMPORT_C void SetAutomaticDownload(TAutomaticDownloadOptions aDownloadOptions);
 185.108 -
 185.109 -    IMPORT_C TBool CreationModeReadOnly( ) const;
 185.110 -    IMPORT_C void SetCreationModeReadOnly(TBool aFlag);
 185.111 -
 185.112 -    IMPORT_C TInt ValidityPeriod( ) const;
 185.113 -    IMPORT_C void SetValidityPeriod(const TInt aValidityPeriod);
 185.114 -
 185.115 -    IMPORT_C TInt MaxDownloadSize( ) const;
 185.116 -    IMPORT_C void SetMaxDownloadSize (const TInt aSize);
 185.117 -
 185.118 -    IMPORT_C TBool Priority( ) const;
 185.119 -    IMPORT_C void SetPriority (TBool aFlag);
 185.120 -
 185.121 -    IMPORT_C TBool HideNumber( ) const;
 185.122 -    IMPORT_C void SetHideNumber(TBool aFlag);
 185.123 -
 185.124 -    IMPORT_C TBool ReadReport( ) const;
 185.125 -    IMPORT_C void SetReadReport(TBool aFlag);
 185.126 -
 185.127 -    IMPORT_C TBool DeliveryReport( ) const;
 185.128 -    IMPORT_C void SetDeliveryReport(TBool aFlag);
 185.129 -
 185.130 -    IMPORT_C TBool ReplyWithHistory( ) const;
 185.131 -    IMPORT_C void SetReplyWithHistory (TBool aFlag);
 185.132 -
 185.133 -    IMPORT_C TBool AllowDeliveryNotification( ) const;
 185.134 -    IMPORT_C void SetAllowDeliveryNotification(TBool aFlag);
 185.135 -
 185.136 -    IMPORT_C TBool FilterAdvertisements( ) const;
 185.137 -    IMPORT_C void SetFilterAdvertisements(TBool aFlag);
 185.138 -
 185.139 -    IMPORT_C TInt MaxDownloadRetries( ) const;
 185.140 -    IMPORT_C void SetMaxDownloadRetries(const TInt aRetries);
 185.141 -
 185.142 -    IMPORT_C TInt DownloadRetryInterval( ) const;
 185.143 -    IMPORT_C void SetDownloadRetryInterval(const TInt aInterval);
 185.144 -
 185.145 -    IMPORT_C TInt MaxSendMsgSize( ) const;
 185.146 -    IMPORT_C void SetMaxSendMsgSize (const TInt aSize);
 185.147 -
 185.148 -    IMPORT_C TBool FullScreenPreview( ) const;
 185.149 -    IMPORT_C void SetFullScreenPreview(TBool aFlag);
 185.150 -
 185.151 -    IMPORT_C TInt DeviceContentClass( ) const;
 185.152 -    IMPORT_C void SetDeviceContentClass(const TInt aClass);
 185.153 -
 185.154 -    IMPORT_C TInt MaxImageHeight( ) const;
 185.155 -    IMPORT_C void SetMaxImageHeight(const TInt aHeight);
 185.156 -
 185.157 -    IMPORT_C TInt MaxImageWidth( ) const;
 185.158 -    IMPORT_C void SetMaxImageWidth(const TInt aWidth);   
 185.159 -    
 185.160 -	void RemoveAllProxies();
 185.161 -	void RemoveAllNapIds();
 185.162 -	
 185.163 -	TUint32 MmsSettingsFlags() const;
 185.164 -	void SetMmsSettingsFlags(TUint32 aFlags);
 185.165 -	    
 185.166 -private:
 185.167 -    CMmsSettings();
 185.168 -
 185.169 -	enum TMmsSettingsFlags
 185.170 -		{
 185.171 -		ESmsSettingsNoFlags					= 0x00000000,
 185.172 -		ESmsSettingsDisplayNotification		= 0x00000002,
 185.173 -		ESmsSettingsCreationModeReadOnly	= 0x00000004,
 185.174 -		ESmsSettingsPriority				= 0x00000008,
 185.175 -		ESmsSettingsHideNumber				= 0x00000010,
 185.176 -		ESmsSettingsReadReport				= 0x00000020,
 185.177 -		ESmsSettingsDeliveryReport			= 0x00000040,
 185.178 -		ESmsSettingsReplyWithHistory		= 0x00000080,
 185.179 -		ESmsSettingsAllowDeliveryNotification	= 0x00000100,
 185.180 -		ESmsSettingsFilterAdvertisements	= 0x00000200,
 185.181 -		ESmsSettingsFullScreenPreview		= 0x00000400
 185.182 -		};
 185.183 -
 185.184 -private:
 185.185 -
 185.186 -	TUint32 iMmsSettingsFlags;
 185.187 -	TInt iApplicationId;
 185.188 -	HBufC* iAddress;
 185.189 -	TCreationMode iCreationMode;
 185.190 -	RArray<TUid> iProxy;
 185.191 -	RArray<TUid> iNapId;
 185.192 -	TAutomaticDownloadOptions iAutomaticDownloadOptions;
 185.193 -	TInt iValidityPeriod;
 185.194 -	TInt iMaxDownloadSize;
 185.195 -	TInt iMaxDownloadRetries;
 185.196 -	TInt iDownloadRetryInterval;
 185.197 -	TInt iMaxSendMsgSize;
 185.198 -	TInt iDeviceContentClass;
 185.199 -	TInt iMaxImageHeight;
 185.200 -	TInt iMaxImageWidth;
 185.201 -   	};
 185.202 -   	
 185.203 -#endif // __CSMSACCOUNT_H__
   186.1 --- a/epoc32/include/cmsvattachment.h	Tue Mar 16 16:12:26 2010 +0000
   186.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   186.3 @@ -1,158 +0,0 @@
   186.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   186.5 -// All rights reserved.
   186.6 -// This component and the accompanying materials are made available
   186.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   186.8 -// which accompanies this distribution, and is available
   186.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  186.10 -//
  186.11 -// Initial Contributors:
  186.12 -// Nokia Corporation - initial contribution.
  186.13 -//
  186.14 -// Contributors:
  186.15 -//
  186.16 -// Description:
  186.17 -//
  186.18 -
  186.19 -#ifndef __CMSVATTACHMENT_H__
  186.20 -#define __CMSVATTACHMENT_H__
  186.21 -
  186.22 -#include <e32base.h>
  186.23 -#include <msvstd.h>
  186.24 -
  186.25 -/**
  186.26 -Attachment Id for uniquely identifying attachments. 
  186.27 -
  186.28 -This is unique on a per message entry basis.
  186.29 -
  186.30 -@publishedAll
  186.31 -@released
  186.32 -*/
  186.33 -typedef TUint TMsvAttachmentId;
  186.34 -
  186.35 -/**
  186.36 -DRM Mime type
  186.37 -
  186.38 -@publishedPartner
  186.39 -@released
  186.40 -*/
  186.41 -_LIT8(KEpocMimeTypeDrm,"X-Epoc/DRM.Receipt");
  186.42 -
  186.43 -class CMsvAttributeManager;
  186.44 -
  186.45 -/**
  186.46 -Represents a single attachment and information about the attachment.
  186.47 -
  186.48 -This object is used to represent all types of attachments (file, linked file or message 
  186.49 -entry). Note that some APIs may not be valid for particular attachment types. This is
  186.50 -described under each method. It is the responsibility of the client to ensure that the
  186.51 -data about the attachment is set such as its mime-type or size.
  186.52 -
  186.53 -@publishedAll
  186.54 -@released
  186.55 -*/
  186.56 -class CMsvAttachment : public CBase
  186.57 -	{
  186.58 -public:
  186.59 -	/**
  186.60 -	Enum to define the different types of attachments supported by messaging.
  186.61 -	*/
  186.62 -	enum TMsvAttachmentType
  186.63 -		{
  186.64 -		/**
  186.65 -		File attachment. This is a file attachment that is copied into the message store.
  186.66 -		*/
  186.67 -		EMsvFile = 0,
  186.68 -		/**
  186.69 -		Linked file attachment. This is an attachment that is linked to using its file path,
  186.70 -		this is not copied into the message store.
  186.71 -		*/
  186.72 -		EMsvLinkedFile,
  186.73 -		/**
  186.74 -		Message entry attachment. This is a message entry that is registered as an attachment.
  186.75 -		*/
  186.76 -		EMsvMessageEntry
  186.77 -		};
  186.78 -	
  186.79 -public:
  186.80 -	IMPORT_C static CMsvAttachment* NewL(TMsvAttachmentType aType);
  186.81 -	IMPORT_C static CMsvAttachment* NewL(TMsvAttachmentType aType, TInt aSize, HBufC8* aMimeType, HBufC* aAttachmentName);
  186.82 -	
  186.83 -	IMPORT_C static CMsvAttachment* NewL(const CMsvAttachment& aAttachment);
  186.84 -	
  186.85 -	IMPORT_C ~CMsvAttachment();
  186.86 -	
  186.87 -	IMPORT_C TMsvAttachmentId Id() const;
  186.88 -	IMPORT_C void SetId(TMsvAttachmentId aId);
  186.89 -	
  186.90 -	IMPORT_C TMsvAttachmentType Type() const;
  186.91 -	
  186.92 -	IMPORT_C TMsvId EntryAttachmentId() const;
  186.93 -	void SetEntryAttachmentId(TMsvId aEntryId);
  186.94 -	
  186.95 -	IMPORT_C const TDesC& AttachmentName() const;
  186.96 -	IMPORT_C void SetAttachmentNameL(const TDesC& aAttachmentName);
  186.97 -	
  186.98 -	IMPORT_C const TDesC& FilePath() const;
  186.99 -	void SetFilePathL(const TDesC& aFilePath);
 186.100 -	
 186.101 -	IMPORT_C TInt Size() const;
 186.102 -	IMPORT_C void SetSize(TInt aSize);
 186.103 -	
 186.104 -	IMPORT_C const TDesC8& MimeType() const;
 186.105 -	IMPORT_C void SetMimeTypeL(const TDesC8& aMimeType);
 186.106 -		
 186.107 -	IMPORT_C TBool Complete() const;
 186.108 -	IMPORT_C void SetComplete(TBool aComplete);
 186.109 -	
 186.110 -	IMPORT_C void SetDesC8AttributeL(TUid aAttributeId, const TDesC8& aAttribute);
 186.111 -	IMPORT_C TInt GetDesC8Attribute(TUid aAttributeId, TPtrC8& aAttribute) const;
 186.112 -	IMPORT_C void RemoveDesC8Attribute(TUid aAttributeId);
 186.113 -	
 186.114 -	IMPORT_C void SetIntAttributeL(TUid aAttributeId, TInt aAttribute);
 186.115 -	IMPORT_C TInt GetIntAttribute(TUid aAttributeId, TInt& aAttribute) const;
 186.116 -	IMPORT_C void RemoveIntAttribute(TUid aAttributeId);
 186.117 -	
 186.118 -	void InternalizeL(RReadStream& aStream);
 186.119 -	void ExternalizeL(RWriteStream& aStream) const;
 186.120 -	
 186.121 -	TBool IsPathRequired() const;
 186.122 -	
 186.123 -private:
 186.124 -	CMsvAttachment(TMsvAttachmentType aType);
 186.125 -	CMsvAttachment(TMsvAttachmentType aType, TInt aSize, HBufC8* aMimeType, HBufC* aAttachmentName);
 186.126 -	void ConstructL();
 186.127 -	void ConstructL(const CMsvAttachment& aAttachment);
 186.128 -	
 186.129 -private:
 186.130 -	/** The unique attachment Id. This is unique per message entry and is auto-assigned. */
 186.131 -	TMsvAttachmentId iId;
 186.132 -	
 186.133 -	/** The attachment type. */
 186.134 -	TMsvAttachmentType iType;
 186.135 -	
 186.136 -	/** Size of the attachment in bytes. */
 186.137 -	TInt iSize;
 186.138 -	
 186.139 -	/** Descriptor indicating the mime type of the attachment. */
 186.140 -	HBufC8* iMimeType;
 186.141 -			
 186.142 -	/** The full file path and file name of attachment files and linked files. */
 186.143 -	HBufC* iFilePath;
 186.144 -		
 186.145 -	/** The message entry Id of the entry attachment. */
 186.146 -	TMsvId iEntryId;
 186.147 -	
 186.148 -	/** Name of the attachment to identify to the attachment. */
 186.149 -	HBufC* iAttachmentName;
 186.150 -	
 186.151 -	/** Attachment entry completeness flag. */
 186.152 -	TBool iComplete;
 186.153 -	
 186.154 -	/** Attribute manager for handling the attributes for this attachment. */
 186.155 -	CMsvAttributeManager* iAttributeManager;
 186.156 -	
 186.157 -	/** Flag to indicate whether a path needs to be added. */
 186.158 -	TBool iNeedsPath;
 186.159 -	};
 186.160 -
 186.161 -#endif // __CMSVATTACHMENT_H__
   187.1 --- a/epoc32/include/cmsvmimeheaders.h	Tue Mar 16 16:12:26 2010 +0000
   187.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   187.3 @@ -1,180 +0,0 @@
   187.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   187.5 -// All rights reserved.
   187.6 -// This component and the accompanying materials are made available
   187.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   187.8 -// which accompanies this distribution, and is available
   187.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  187.10 -//
  187.11 -// Initial Contributors:
  187.12 -// Nokia Corporation - initial contribution.
  187.13 -//
  187.14 -// Contributors:
  187.15 -//
  187.16 -// Description:
  187.17 -//
  187.18 -
  187.19 -#ifndef __CMSVMIMEHEADERS_H__
  187.20 -#define __CMSVMIMEHEADERS_H__
  187.21 -
  187.22 -#include <e32base.h>
  187.23 -
  187.24 -class CDesC8ArrayFlat;
  187.25 -class CMsvAttachment;
  187.26 -class CDesC8Array;
  187.27 -
  187.28 -/**
  187.29 -String literal for Base64 encoding.
  187.30 -@publishedAll
  187.31 -@released
  187.32 -*/
  187.33 -_LIT8(KMsvBase64String, "Base64");
  187.34 -
  187.35 -/**
  187.36 -String literal for Quoted-Printable encoding.
  187.37 -@publishedAll
  187.38 -@released
  187.39 -*/
  187.40 -_LIT8(KMsvQPString, "quoted-printable");
  187.41 -
  187.42 -/**
  187.43 -String literal for 7 bit encoding.
  187.44 -@publishedAll
  187.45 -@released
  187.46 -*/
  187.47 -_LIT8(KMsv7BitString, "7bit");
  187.48 -
  187.49 -/**
  187.50 -String literal for 8 bit encoding.
  187.51 -@publishedAll
  187.52 -@released
  187.53 -*/
  187.54 -_LIT8(KMsv8BitString, "8bit");
  187.55 -
  187.56 -/**
  187.57 -String literal for binary encoding.
  187.58 -@publishedAll
  187.59 -@released
  187.60 -*/
  187.61 -_LIT8(KMsvBinaryString, "binary");
  187.62 -
  187.63 -/**
  187.64 -String literal for UU encoding.
  187.65 -@publishedAll
  187.66 -@released
  187.67 -*/
  187.68 -_LIT8(KMsvUUString, "uuencode");
  187.69 -
  187.70 -/**
  187.71 -Utility class to represent commonly used Mime Headers. This object represents a number
  187.72 -of common Mime Headers into a single class. It is intended that this class is used to
  187.73 -represent the Mime Headers for an attachment represented by the CMsvAttachment class when
  187.74 -using the Attachment API. The Mime header data can be associated with an attachment and 
  187.75 -stored and restored using the StoreL and RestoreL methods.
  187.76 -@publishedAll
  187.77 -@released
  187.78 -*/
  187.79 -class CMsvMimeHeaders : public CBase
  187.80 -	{
  187.81 -public:
  187.82 -
  187.83 -/** Messaging encoding types. 
  187.84 -@publishedAll
  187.85 -@released
  187.86 -*/
  187.87 -enum TMsvEncodingType 
  187.88 -	{
  187.89 -	/** Unknown. */
  187.90 -	EEncodingTypeUnknown,
  187.91 -	/** None. */
  187.92 -	EEncodingTypeNone,
  187.93 -	/** 7-bit. */
  187.94 -	EEncodingType7Bit,
  187.95 -	/** 8-bit. */
  187.96 -	EEncodingType8Bit,		// ie lines still <1000 chars and terminated by CRLF
  187.97 -	/** Binary. */
  187.98 -	EEncodingTypeBinary,	// ie any length of data, not terminated by CRLF
  187.99 -	/** QP. */
 187.100 -	EEncodingTypeQP,
 187.101 -	/** Base64. */
 187.102 -	EEncodingTypeBASE64,
 187.103 -	/** UU. */
 187.104 -	EEncodingTypeUU
 187.105 -	};
 187.106 -	
 187.107 -public:
 187.108 -	IMPORT_C static CMsvMimeHeaders* NewL();
 187.109 -	IMPORT_C static CMsvMimeHeaders* NewLC();
 187.110 -	IMPORT_C ~CMsvMimeHeaders();
 187.111 -	
 187.112 -	IMPORT_C void StoreL(CMsvAttachment& aAttachment) const;
 187.113 -	IMPORT_C void RestoreL(CMsvAttachment& aAttachment);
 187.114 -	
 187.115 -	IMPORT_C void SetContentDescriptionL(const TDesC8& aContentDescription);
 187.116 -	IMPORT_C const TDesC8& ContentDescription() const;
 187.117 -	
 187.118 -	IMPORT_C void SetContentBaseL(const TDesC8& aContentBase);
 187.119 -	IMPORT_C const TDesC8& ContentBase() const;
 187.120 -	
 187.121 -	IMPORT_C void SetContentLocationL(const TDesC16& aContentLocation);
 187.122 -	IMPORT_C const TDesC16& ContentLocation() const;
 187.123 -	
 187.124 -	IMPORT_C void SetContentIdL(const TDesC8& aContentId);
 187.125 -	IMPORT_C const TDesC8& ContentId() const;
 187.126 -	
 187.127 -	IMPORT_C void SetContentTypeL(const TDesC8& aContentType);
 187.128 -	IMPORT_C const TDesC8& ContentType() const;
 187.129 -	
 187.130 -	IMPORT_C void SetContentSubTypeL(const TDesC8& aSubContentType);
 187.131 -	IMPORT_C const TDesC8& ContentSubType() const;
 187.132 -	
 187.133 -	IMPORT_C void SetContentDispositionL(const TDesC8& aContentDisposition);
 187.134 -	IMPORT_C const TDesC8& ContentDisposition() const;
 187.135 -	
 187.136 -	IMPORT_C CDesC8Array& ContentTypeParams();
 187.137 -	IMPORT_C CDesC8Array& ContentDispositionParams();
 187.138 -	IMPORT_C CDesC8Array& XTypeParams();
 187.139 -	
 187.140 -	IMPORT_C const CDesC8Array& ContentTypeParams() const;
 187.141 -	IMPORT_C const CDesC8Array& ContentDispositionParams() const;
 187.142 -	IMPORT_C const CDesC8Array& XTypeParams() const;
 187.143 -	
 187.144 -	IMPORT_C void SetMimeCharset(TUint aMimeCharset);
 187.145 -	IMPORT_C TUint MimeCharset() const;
 187.146 -	
 187.147 -	IMPORT_C void SetSuggestedFilenameL(const TDesC16& aSuggestedFilename);
 187.148 -	IMPORT_C const TDesC16& SuggestedFilename() const;
 187.149 -	
 187.150 -	IMPORT_C void SetRelativePathL(const TDesC8& aRelativePath);
 187.151 -	IMPORT_C const TDesC8& RelativePath() const;
 187.152 -	
 187.153 -	IMPORT_C void SetContentTransferEncoding(const TDesC8& aEncodingType);
 187.154 -	IMPORT_C TMsvEncodingType ContentTransferEncoding() const;
 187.155 -	IMPORT_C TMsvEncodingType ContentTransferEncoding(TPtrC8& aEncodingType) const;
 187.156 -	IMPORT_C const TPtrC8 GetContentTypeValue(const TDesC8& aContentTypeParameter) const;
 187.157 -
 187.158 -	IMPORT_C void Reset();
 187.159 -	IMPORT_C TInt Size() const;
 187.160 -	IMPORT_C TBool ContainsMimeHeaders(const CMsvAttachment& aAttachment);
 187.161 -	
 187.162 -private:
 187.163 -	CMsvMimeHeaders();
 187.164 -	void ConstructL();
 187.165 -	
 187.166 -private:
 187.167 -	HBufC8* iContentDescription;
 187.168 -	HBufC8* iContentBase;
 187.169 -	HBufC16* iContentLocation;
 187.170 -	HBufC8* iContentId;
 187.171 -	HBufC8* iContentType;
 187.172 -	HBufC8* iContentSubType;
 187.173 -	HBufC8* iContentDisposition;
 187.174 -	CDesC8ArrayFlat* iContentTypeParams;            // zero or more "parameter"
 187.175 -	CDesC8ArrayFlat* iContentDispositionParams;     // zero or more "parameters"
 187.176 -	CDesC8ArrayFlat* iXTypeParams;                  // zero or more X-Type "parameters"
 187.177 -	TUint iMimeCharset;
 187.178 -	HBufC16* iSuggestedFilename;
 187.179 -	HBufC8* iRelativePath;
 187.180 -	TMsvEncodingType iContentTransferEncoding;
 187.181 -	};
 187.182 -
 187.183 -#endif // __CMSVMIMEHEADERS_H__
   188.1 --- a/epoc32/include/cmsvplainbodytext.h	Tue Mar 16 16:12:26 2010 +0000
   188.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   188.3 @@ -1,156 +0,0 @@
   188.4 -// CMSVPLAINBODYTEXT.H
   188.5 -
   188.6 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   188.7 -// All rights reserved.
   188.8 -// This component and the accompanying materials are made available
   188.9 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  188.10 -// which accompanies this distribution, and is available
  188.11 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  188.12 -//
  188.13 -// Initial Contributors:
  188.14 -// Nokia Corporation - initial contribution.
  188.15 -//
  188.16 -// Contributors:
  188.17 -//
  188.18 -// Description:
  188.19 -//
  188.20 -
  188.21 -#ifndef __CMSVPLAINBODYTEXT_H__
  188.22 -#define __CMSVPLAINBODYTEXT_H__
  188.23 -
  188.24 -
  188.25 -#include <msvstore.h>
  188.26 -#include <mentact.h>
  188.27 -#include <charconv.h>
  188.28 -
  188.29 -class CMsvStore;
  188.30 -class CRichText;
  188.31 -class CParaFormatLayer;
  188.32 -class CCharFormatLayer;
  188.33 -class CCnvCharacterSetConverter;
  188.34 -
  188.35 -/**
  188.36 -This class encapsulates plainbody text information for storage within the
  188.37 -Message Store.It also populates a CRichText object with the 8 bit data
  188.38 -decoded to the specified character set.If a character set is not specified,
  188.39 -then the default character set is used.
  188.40 -
  188.41 -@publishedAll
  188.42 -@released
  188.43 -*/
  188.44 -class CMsvPlainBodyText : public CMsgActive
  188.45 -	{
  188.46 -public:
  188.47 -	static CMsvPlainBodyText* NewL(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId, TMsvId aMessageId, RFs& aFs);
  188.48 -	static CMsvPlainBodyText* NewL(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TMsvId aMessageId, RFs& aFs, TInt aChunkLength);
  188.49 -
  188.50 -	IMPORT_C ~CMsvPlainBodyText();
  188.51 -
  188.52 -	IMPORT_C void StoreChunkL(const TDesC8& aChunk, TRequestStatus& aStatus);
  188.53 -	IMPORT_C void StoreChunkL(const TDesC8& aChunk);
  188.54 -
  188.55 -	IMPORT_C void StoreChunkL(const TDesC16& aChunk, TRequestStatus& aStatus);
  188.56 -	IMPORT_C void StoreChunkL(const TDesC16& aChunk);
  188.57 -
  188.58 -	IMPORT_C void StoreRichTextAsPlainTextL(CRichText& aRichText);
  188.59 -
  188.60 -	IMPORT_C void CommitL();
  188.61 -
  188.62 -	IMPORT_C void NextChunkL(TDes8& aChunk, TRequestStatus& aStatus);
  188.63 -	IMPORT_C void NextChunkL(TDes8& aChunk);
  188.64 -
  188.65 -	IMPORT_C void NextChunkL(TDes16& aChunk, TRequestStatus& aStatus);
  188.66 -	IMPORT_C void NextChunkL(TDes16& aChunk);
  188.67 -
  188.68 -	IMPORT_C void PreviousChunkL(TDes8& aChunk, TRequestStatus& aStatus);
  188.69 -	IMPORT_C void PreviousChunkL(TDes8& aChunk);
  188.70 -
  188.71 -	IMPORT_C void PreviousChunkL(TDes16& aChunk, TRequestStatus& aStatus);
  188.72 -	IMPORT_C void PreviousChunkL(TDes16& aChunk);
  188.73 -
  188.74 -
  188.75 -	IMPORT_C void SetCharacterSetL(const TUint aCharset);
  188.76 -	IMPORT_C TUint CharacterSet();
  188.77 -	IMPORT_C TUint DefaultCharacterSet();
  188.78 -
  188.79 - 	IMPORT_C TInt Size();
  188.80 -
  188.81 -private:
  188.82 -	CMsvPlainBodyText(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId, TMsvId aMessageId, RFs& aFs);
  188.83 -	void ConstructWriteL();
  188.84 -
  188.85 -	CMsvPlainBodyText(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore,TMsvId aMessageId, RFs& aFs,TInt aChunkLength);
  188.86 -	void ConstructReadL();
  188.87 -
  188.88 -	void PrepareToConvertL();
  188.89 -	void ConvertChunkToUnicodeForStoreL(const TDesC8& aChunk);
  188.90 -	TInt ConvertChunkToUnicodeForRestoreL();
  188.91 -	void ExtractNextChunkFromRichText(TDes16& aChunk);
  188.92 -	void ExtractPreviousChunkFromRichText(TDes16& aChunk);
  188.93 -	void RevertL();
  188.94 -	void DoRunL();
  188.95 -	void DoComplete();
  188.96 -	void DoCancel();
  188.97 -
  188.98 -private:
  188.99 -	/** To access APIs related to RFile operations.*/
 188.100 -	MMsvStoreManager& 			  iMsvStoreManager;
 188.101 -	CMsvStore& 					  iStore;
 188.102 -	/** Indicates whether to store text as 8 bit or 16 bit.*/
 188.103 -	TBool 						  iIs8Bit;
 188.104 -	/** The charset of the body text*/
 188.105 -	TUint 						  iCharsetId;
 188.106 - 	TUint 					 	  iDefaultCharsetId;
 188.107 -
 188.108 - 	/** The RFile Path.*/
 188.109 -	HBufC*	 					  iFilePath;
 188.110 -  	TMsvId 						  iMessageId;
 188.111 -	RFs& 						  iFSession;
 188.112 -
 188.113 -	/** The RFile to which body text is written.*/
 188.114 -	RFile 						  iFile;
 188.115 -	/** Character converter for 8 to 16 bit conversion.*/
 188.116 -	CCnvCharacterSetConverter* 	  iConverter;
 188.117 -	CRichText* 					  iRichText;
 188.118 -	CParaFormatLayer* 			  iParaLayer;
 188.119 -	CCharFormatLayer* 			  iCharLayer;
 188.120 -	TInt 						  iReadChunkLength;
 188.121 -	/** Temporary buffer created to Store chunk while it is being written aynchronously.*/
 188.122 -	RBuf16	 					  iTempChunk16;
 188.123 -	/** Buffer used to read data from RFile.*/
 188.124 -	RBuf8 						  iRfileReadBuf8;
 188.125 -	/** Pointer to 8-bit buffer that needs to be written to RFile.*/
 188.126 -	TPtrC8 						  iRfileWritePtr8;
 188.127 -	/** The position from where to extract data in CRichText*/
 188.128 -	TInt 						  iPos;
 188.129 -	/** Contains the size of the chunk that will be read or write in the RFile*/
 188.130 -	TInt 					 	  iChunkMaxLength;
 188.131 -	/** Contains the remaining unconverted Unicode Data*/
 188.132 -	HBufC8* 					  iRemainingUnConvertedData;
 188.133 -	/** Array that stores the start positions of each chunk,in Rfile*/
 188.134 -	RArray<TInt> 			 	  iStartPosOfEachChunkInFile;
 188.135 -	/** Contains the start position of the next chunk*/
 188.136 -	TInt 						  iStartPosOfNextChunk;
 188.137 -	/** Contains the remaining converted Unicode Data*/
 188.138 -	RBuf16						  iRemainingConvertedData;
 188.139 -	/** Pointer to a 16 bit chunk that is being read from the store.*/
 188.140 -	TDes16*	 					  iChunk16;
 188.141 -	/** Pointer to a 8 bit chunk that is being read from the store.*/
 188.142 -	TDes8* 						  iChunk8;
 188.143 -	/** Indicates whether the Rfile is commited or not.*/
 188.144 -	TBool 						  iIsCommitted;
 188.145 -
 188.146 -	/** Indicates whether the chunk being read is last.*/
 188.147 -	TBool 						  iIsLastChunk;
 188.148 -	/** Indicates whether call to DoRunl was initiated by PreviousChunkL method.*/
 188.149 -	TBool 						  iPrevChunk;
 188.150 -	/** Indicates whether call to DoRunl was initiated by 8 bit PreviousChunkL and NextChunkL methods.*/
 188.151 -	TBool 						  iRetrieving8bit;
 188.152 -	/** Enum indicating if RFile is being written or read */
 188.153 -	enum {EMsvFileReading, EMsvFileWriting} iMsvFileStatus;
 188.154 -	CCnvCharacterSetConverter::TAvailability iAvailable;
 188.155 -	//Containes current position of the Rfile
 188.156 -	TInt 						 iCurrentFilePos;
 188.157 -	};
 188.158 -
 188.159 -#endif//__CMSVPLAINBODYTEXT_H__
   189.1 --- a/epoc32/include/cmsvrecipientlist.h	Tue Mar 16 16:12:26 2010 +0000
   189.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   189.3 @@ -1,70 +0,0 @@
   189.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   189.5 -// All rights reserved.
   189.6 -// This component and the accompanying materials are made available
   189.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   189.8 -// which accompanies this distribution, and is available
   189.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  189.10 -//
  189.11 -// Initial Contributors:
  189.12 -// Nokia Corporation - initial contribution.
  189.13 -//
  189.14 -// Contributors:
  189.15 -//
  189.16 -// Description:
  189.17 -//
  189.18 -
  189.19 -#ifndef __CMSVRECIPIENTLIST_H__
  189.20 -#define __CMSVRECIPIENTLIST_H__
  189.21 -
  189.22 -#include <e32base.h>
  189.23 -#include <badesca.h>
  189.24 -
  189.25 -
  189.26 -
  189.27 -// must be 4 bytes so that RArray works.
  189.28 -typedef TUint32 TMsvRecipientType;
  189.29 -
  189.30 -/**
  189.31 -@publishedAll
  189.32 -@released
  189.33 -*/
  189.34 -enum TMsvRecipientTypeValues
  189.35 -	{
  189.36 -	EMsvRecipientTo = 0,
  189.37 -	EMsvRecipientCc,
  189.38 -	EMsvRecipientBcc,
  189.39 -	};
  189.40 -
  189.41 -/**
  189.42 -@publishedAll
  189.43 -@released
  189.44 -*/
  189.45 -class CMsvRecipientList : public CBase
  189.46 -	{
  189.47 -public:
  189.48 -	static CMsvRecipientList* NewL();
  189.49 -	static CMsvRecipientList* NewLC();
  189.50 -	virtual ~CMsvRecipientList();
  189.51 -	//
  189.52 -	IMPORT_C void Reset();
  189.53 -	IMPORT_C TInt Count() const;
  189.54 -	//
  189.55 -	IMPORT_C void AppendL(const TDesC& aPtr);
  189.56 -	IMPORT_C void AppendL(TMsvRecipientType aValue, const TDesC& aPtr);
  189.57 -	//
  189.58 -	IMPORT_C void Delete(TInt aPos);
  189.59 -	IMPORT_C void Delete(TInt aPos, TInt aCount);
  189.60 -	//
  189.61 -	IMPORT_C TMsvRecipientType Type(TInt aPos) const;
  189.62 -	IMPORT_C const TDesC& operator[](TInt aIndex) const;
  189.63 -	//
  189.64 -	IMPORT_C const MDesCArray& RecipientList() const;
  189.65 -private:
  189.66 -	CMsvRecipientList();
  189.67 -	void ConstructL();
  189.68 -private:
  189.69 -	RArray<TMsvRecipientType> iRecipientType;
  189.70 -	CDesCArrayFlat*	iRecipients;
  189.71 -	};
  189.72 -
  189.73 -#endif //__CMSVRECIPIENTLIST_H__
   190.1 --- a/epoc32/include/cmsvtechnologytypedefaultmtmsettings.h	Tue Mar 16 16:12:26 2010 +0000
   190.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   190.3 @@ -1,67 +0,0 @@
   190.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   190.5 -// All rights reserved.
   190.6 -// This component and the accompanying materials are made available
   190.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   190.8 -// which accompanies this distribution, and is available
   190.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  190.10 -//
  190.11 -// Initial Contributors:
  190.12 -// Nokia Corporation - initial contribution.
  190.13 -//
  190.14 -// Contributors:
  190.15 -//
  190.16 -// Description:
  190.17 -//
  190.18 -
  190.19 -#ifndef __CMSVTECHNOLOGYTYPEDEFAULTMTMSETTINGS_H__
  190.20 -#define __CMSVTECHNOLOGYTYPEDEFAULTMTMSETTINGS_H__
  190.21 -
  190.22 -#include <e32base.h>
  190.23 -#include <e32cmn.h>
  190.24 -
  190.25 -class RFs;
  190.26 -class CRepository;
  190.27 -
  190.28 -
  190.29 -/**
  190.30 -Stores default MTM settings for a technology type to the Central Repository.
  190.31 -
  190.32 -@publishedAll
  190.33 -@released
  190.34 -*/
  190.35 -class CMsvTechnologyTypeDefaultMtmSettings : public CBase
  190.36 -	{
  190.37 -private:
  190.38 -	struct TMsvTechnologyTypeDefaultMtmInfo
  190.39 -		{
  190.40 -		TUid iTechnologyTypeUid;
  190.41 -		TUid iMtmUid;
  190.42 -		};
  190.43 -
  190.44 -public:
  190.45 -	IMPORT_C static CMsvTechnologyTypeDefaultMtmSettings* NewL( RFs& aFs );
  190.46 -	IMPORT_C ~CMsvTechnologyTypeDefaultMtmSettings( );
  190.47 -	
  190.48 -	IMPORT_C TInt DefaultMtm( TUid aTechnologyTypeUid, TUid& aMtmUid ) const;
  190.49 -	IMPORT_C void SetDefaultMtmL( TUid aTechnologyTypeUid, TUid aMtmUid );
  190.50 -	IMPORT_C TInt RemoveDefaultMtm( TUid aTechnologyTypeUid );
  190.51 -	
  190.52 -	// Stores and Restores data in the central repository
  190.53 -	IMPORT_C void LoadSettingsL( );
  190.54 -	IMPORT_C void SaveSettingsL( );
  190.55 -
  190.56 -private:
  190.57 -	CMsvTechnologyTypeDefaultMtmSettings( RFs& aFs );
  190.58 -	void ConstructL();
  190.59 -	void CheckIfMtmIsPartOfTechnologyTypeGroupL( const TUid aTechnologyTypeUid,
  190.60 -												 const TUid aMtmUid, const TUid aMtmTypeUid ) const;
  190.61 -	TInt FindDefaultMtm( const TUid aTechnologyTypeUid, 
  190.62 -						 TMsvTechnologyTypeDefaultMtmInfo& aTechnologyTypeDefaultMtmInfo ) const;
  190.63 -
  190.64 -private:
  190.65 -	CRepository* iRepository;
  190.66 -	RArray<TMsvTechnologyTypeDefaultMtmInfo> iTechnologyTypeDefaultMtmArray;
  190.67 -	RArray<TUid> iRemovedTechnologyTypes;
  190.68 -	RFs& iFs;
  190.69 -	};
  190.70 -#endif //__CMSVTECHNOLOGYTYPEDEFAULTMTMSETTINGS_H__
   191.1 --- a/epoc32/include/cnftool.rh	Tue Mar 16 16:12:26 2010 +0000
   191.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   191.3 @@ -1,33 +0,0 @@
   191.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   191.5 -// All rights reserved.
   191.6 -// This component and the accompanying materials are made available
   191.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   191.8 -// which accompanies this distribution, and is available
   191.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  191.10 -//
  191.11 -// Initial Contributors:
  191.12 -// Nokia Corporation - initial contribution.
  191.13 -//
  191.14 -// Contributors:
  191.15 -//
  191.16 -// Description:
  191.17 -// HEADER INFO
  191.18 -// 
  191.19 -//
  191.20 -
  191.21 -STRUCT CNF_FILE
  191.22 -/** Describes the converter DLL.
  191.23 -
  191.24 -@publishedAll 
  191.25 -@deprecated */
  191.26 -	{
  191.27 -	/** Future use, do not use */
  191.28 -	LLINK extension = 0;
  191.29 -	/** The DLL's UID3. */
  191.30 -	LONG dll_uid;
  191.31 -	/**  An array of CONVERTER_DATA resources describing the converters in the DLL.
  191.32 -	Target type: CONVERTER_DATA	*/
  191.33 -	LEN WORD STRUCT converter_list[]; // Converter_data
  191.34 -	}
  191.35 -
  191.36 -#include <conplugin.rh>
   192.1 --- a/epoc32/include/cnode.h	Tue Mar 16 16:12:26 2010 +0000
   192.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   192.3 @@ -1,456 +0,0 @@
   192.4 -/// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   192.5 -/// All rights reserved.
   192.6 -/// This component and the accompanying materials are made available
   192.7 -/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   192.8 -/// which accompanies this distribution, and is available
   192.9 -/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  192.10 -///
  192.11 -/// Initial Contributors:
  192.12 -/// Nokia Corporation - initial contribution.
  192.13 -///
  192.14 -/// Contributors:
  192.15 -///
  192.16 -/// Description:
  192.17 -/// All rights reserved.
  192.18 -/// This component and the accompanying materials are made available
  192.19 -/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  192.20 -/// which accompanies this distribution, and is available
  192.21 -/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  192.22 -/// Initial Contributors:
  192.23 -/// Nokia Corporation - initial contribution.
  192.24 -/// Contributors:
  192.25 -/// This contains the definitions of CDataDelete, CDataNoDelete, CIntAttribute, CNode, and CTypedNode.
  192.26 -/// CDataNoDelete is a base class to CDataDelete and are essentially a wrapper around an HBufC16.
  192.27 -/// The node owns the data that is added to it and therefore is responsible for deleting all its data,
  192.28 -/// hence theses two classes allow a user to have non deletable data. Internally to the node it is also 
  192.29 -/// sometimes necessary to change the data into either deletable or non-deletable data api's are provided
  192.30 -/// for this.
  192.31 -/// CIntAttribute is wrapper around a TInt, this is provided as the nodes attribute value is a CBase* however
  192.32 -/// it might be desirable to store integer's in here. Attribute value is owned by the node therefore the node is
  192.33 -/// responsible for deleting it.
  192.34 -/// CNode is the basis for constructing a tree. It consists of an array of child nodes, node type, a parent node,
  192.35 -/// an array of attributes, and a data member. Internally the data member is defined as CDataNoDelete however
  192.36 -/// to the user all the exported api's take an HBufC16*. Data is owned by the node and is destroyed by the node,
  192.37 -/// However in certain circumstances this is not desirable hence the api's to make the data non-deletable. The
  192.38 -/// node type is defined as a TAny* however normal usage would use the templated node - CTypedNode. The node type
  192.39 -/// is used to identify groups of nodes. The attribute array is fairy simple and consists of AttributeType and 
  192.40 -/// AttributeValue. AttributeType can be defined by using the templated class and should be a 32bit value. AttributeValue
  192.41 -/// can be any object derived from CBase and the node takes ownership therefore the node delete's it.
  192.42 -/// Basic usage should be to use the templated class in order to make use of the templated types (TNodeType,TAttributeType).
  192.43 -/// Create a node for example:
  192.44 -/// CTypedNode<CNode*, const TDesC*> *tree = CTypedNode<CNode*, const TDesC*>::NewL(0,0);
  192.45 -/// add a new child:
  192.46 -/// CNODE *TestChildNode1 = tree->AppendNodeL(aTempNodeForNodeType);
  192.47 -/// add some data:
  192.48 -/// TestChildNode1->SetDataL(aHBufC16);
  192.49 -/// add an attribute:
  192.50 -/// TestChildNode1->->AddAttributeL(aTAttributeType,aCBasePointerAttributeValue);
  192.51 -/// Explanation of individual api's is documented below.
  192.52 -///
  192.53 -
  192.54 -
  192.55 - 
  192.56 -
  192.57 -#ifndef __CNODE_H__
  192.58 -#define __CNODE_H__
  192.59 -
  192.60 -#include <e32base.h>
  192.61 -#include <f32file.h>
  192.62 -
  192.63 -
  192.64 -/**
  192.65 -	@file
  192.66 -	@publishedAll
  192.67 -	@released
  192.68 -*/
  192.69 -
  192.70 -//Granularity of arrays
  192.71 -const TInt KGranularity = 5;
  192.72 -
  192.73 -//enum of panic reasons
  192.74 -enum TNodePanic
  192.75 -	{
  192.76 -	ENodeBadArgument,
  192.77 -	ENodeNoChildren,
  192.78 -	ENoData,
  192.79 -	EAttributeFailure
  192.80 -	};
  192.81 -
  192.82 -//node panic function
  192.83 -inline void Panic(TNodePanic aPanic);
  192.84 -
  192.85 -//Wrapper around an HBufC16 doesn't delete data
  192.86 -//##ModelId=3B666BCC0303
  192.87 -class CDataNoDelete : public CBase
  192.88 -/** Provides a wrapper around an HBufC16: the buffer is not deleted when the object is deleted.
  192.89 -*/
  192.90 -	{
  192.91 -public:
  192.92 -	//##ModelId=3B666BCC032D
  192.93 -	CDataNoDelete(HBufC16* aData);
  192.94 -	//##ModelId=3B666BCC032C
  192.95 -	virtual ~CDataNoDelete();
  192.96 -	//##ModelId=3B666BCC0324
  192.97 -	HBufC16* SetData(HBufC16* aData);
  192.98 -	//##ModelId=3B666BCC0322
  192.99 -	virtual void ResetDataPointer(HBufC16* aData);
 192.100 -	//##ModelId=3B666BCC0321
 192.101 -	HBufC16* Data();
 192.102 -
 192.103 -protected:
 192.104 -	/** The wrapped buffer. */
 192.105 -	//##ModelId=3B666BCC0319
 192.106 -	HBufC16* iData;
 192.107 -	};
 192.108 -
 192.109 -//Wrapper around an HBufC16 does delete data
 192.110 -//##ModelId=3B666BCC0399
 192.111 -class CDataDelete : public CDataNoDelete
 192.112 -/** Provides a wrapper around an HBufC16: the buffer is deleted when the 
 192.113 -object is deleted.
 192.114 -*/
 192.115 -	{
 192.116 -public:
 192.117 -	//##ModelId=3B666BCC03B7
 192.118 -	CDataDelete(HBufC16* aData);
 192.119 -	//##ModelId=3B666BCC03B0
 192.120 -	virtual ~CDataDelete();
 192.121 -	//##ModelId=3B666BCC03AE
 192.122 -	virtual void ResetDataPointer(HBufC16* aData);
 192.123 -	};
 192.124 -
 192.125 -//Wrapper around an HBufC16 does delete data (FileName)
 192.126 -// After Removing referenced File 
 192.127 -//##ModelId=3B666BC7026F
 192.128 -class CFileDataDelete : public CDataNoDelete
 192.129 -/** Provides a wrapper around a filename: the referenced file is deleted when the object is deleted.
 192.130 -*/
 192.131 -	{
 192.132 -public:
 192.133 -	//##ModelId=3B666BC7028F
 192.134 -	CFileDataDelete(HBufC16* aData);
 192.135 -	//##ModelId=3B666BC7028E
 192.136 -	virtual ~CFileDataDelete();
 192.137 -	//##ModelId=3B666BC70285
 192.138 -	virtual void ResetDataPointer(HBufC16* aData);
 192.139 -private:
 192.140 -	//##ModelId=3B666BC70284
 192.141 -	void RemoveFile();
 192.142 -	};
 192.143 -
 192.144 -//Wrapper around a TInt used for attribute values in order to allow the node to call a dtor
 192.145 -//##ModelId=3B666BC6023E
 192.146 -class CIntAttribute : public CBase
 192.147 -/** Provides an object wrapper around a TInt value. */
 192.148 -	{
 192.149 -public:
 192.150 -	//##ModelId=3B666BC6025B
 192.151 -	inline CIntAttribute(TInt aInteger);		
 192.152 -	//##ModelId=3B666BC6025A
 192.153 -	inline TInt Int() const;
 192.154 -private:
 192.155 -	//##ModelId=3B666BC60264
 192.156 -	CIntAttribute();
 192.157 -	//##ModelId=3B666BC60253
 192.158 -	TInt iInteger;
 192.159 -	};
 192.160 -
 192.161 -//
 192.162 -// Node class
 192.163 -// Normal usage would be to use CTypedNode in order to use specific templated types
 192.164 -//
 192.165 -
 192.166 -//##ModelId=3B666BCD02D2
 192.167 -class CNode : public CBase 
 192.168 -	{
 192.169 -public:
 192.170 -	//##ModelId=3B666BCE0139
 192.171 -	IMPORT_C ~CNode();
 192.172 -
 192.173 -	//NewL parameters aType to indentify the type of node, CNode* to set the parent of this node
 192.174 -	//##ModelId=3B666BCE0125
 192.175 -	IMPORT_C static CNode* NewL(TAny* aType,CNode* aParent);
 192.176 -
 192.177 -	//Deletes a child node which is passed in as a parameter
 192.178 -	//##ModelId=3B666BCE011C
 192.179 -	IMPORT_C void DeleteChildNode(CNode* aNode);
 192.180 -
 192.181 -	//Deletes all the child nodes haging of this node
 192.182 -	//##ModelId=3B666BCE011B
 192.183 -	IMPORT_C void DeleteAllChildNodes();
 192.184 -
 192.185 -	//Creates a new node and adds it to the childlist, reference to new node is returned. Can leave if it can't allocate memory for a new node
 192.186 -	//Type of node is the parameter
 192.187 -	//##ModelId=3B666BCE0108
 192.188 -	IMPORT_C CNode& AppendNodeL(TAny* aType = 0);
 192.189 -
 192.190 -	//Appends a node which is passed in as a parameter to this node, so its added to the childlist
 192.191 -	//##ModelId=3B666BCE00FD
 192.192 -	IMPORT_C void AppendNodeToThisNodeL(CNode* aNode);
 192.193 -
 192.194 -	//Sets the data in the node to the parameter that is passed in. It's deletable and the node will delete it in dtor
 192.195 -	//Push aDataNowNodeOwns onto the CleanupStack before calling then pop off on return
 192.196 -	//##ModelId=3B666BCE00F3
 192.197 -	IMPORT_C void SetDataL(HBufC16* aDataNowNodeOwns);
 192.198 -
 192.199 -	//returns the data stored in the node, which is returned as an HBufC16*
 192.200 -	//##ModelId=3B666BCE00EB
 192.201 -	IMPORT_C HBufC16* Data() const;
 192.202 -
 192.203 -	//WARNING this function can leave as it deletes the wrapper object and then creates
 192.204 -	//a new non deletable wrapper object and sets the data pointer inside the new object
 192.205 -	//IF THIS LEAVES YOU WILL LOSE YOUR DATA
 192.206 -	//##ModelId=3B666BCE00EA
 192.207 -	IMPORT_C void SetDataNoDeleteL();
 192.208 -
 192.209 -	//WARNING this function can leave as it deletes the wrapper object and then creates
 192.210 -	//a new deletable wrapper object then sets the pointer in the new object
 192.211 -	//##ModelId=3B666BCE00E9
 192.212 -	IMPORT_C void ClearSetDataNoDeleteL();
 192.213 -
 192.214 -	// Sets the data in the node to the FileName parameter that is passed in. 
 192.215 -	// It's deletable and the node will delete it, and the file it refers to in dtor
 192.216 -	// Push aDataLocationNowNodeOwns onto the CleanupStack before calling then pop off on return
 192.217 -	//##ModelId=3B666BCE00DF
 192.218 -	IMPORT_C void SetFileDataL(HBufC16* aFileDataLocationNowNodeOwns);
 192.219 -
 192.220 -	//Resets the data pointer to point to aData parameter will delete the data that is owned by the node
 192.221 -	//##ModelId=3B666BCE00D5
 192.222 -	IMPORT_C void ResetDataPointer(HBufC16* aData);
 192.223 -
 192.224 -	//returns a reference to the absolute root of the tree
 192.225 -	//##ModelId=3B666BCE00CB
 192.226 -	IMPORT_C const CNode& Root() const;
 192.227 -
 192.228 -	//returns a child node which is stored in the array of children. The child node is accessed by the index that is the parameter.
 192.229 -	//##ModelId=3B666BCE00C1
 192.230 -	IMPORT_C CNode* Child(TInt aByIndex) const;
 192.231 -
 192.232 -	//Returns either the first child of this node if the parameter is NULL. Or it returns the next chld in the array after
 192.233 -	//the child passed in as a parameter
 192.234 -	//##ModelId=3B666BCE00AE
 192.235 -	IMPORT_C CNode* NextChild(const CNode* aNode = NULL) const;
 192.236 -
 192.237 -	//returns the previous child to the child passed in as a parameter. The node parameter is a reference because its the child previous
 192.238 -	//to the node passed in which obviously must exist
 192.239 -	//##ModelId=3B666BCE00A4
 192.240 -	IMPORT_C CNode* PrevChild(const CNode& aNode) const;
 192.241 -
 192.242 -	//Returns the parent of this node
 192.243 -	//##ModelId=3B666BCE00A3
 192.244 -	IMPORT_C CNode* Parent() const;
 192.245 -
 192.246 -	//WARNING this function can leave as it calls AppendNodeToThisNode. The aParent parameter is the node to which you would like to make
 192.247 -	//the parent of 'this' node.
 192.248 -	//It removes itself from the childlist of it's current parent
 192.249 -	//##ModelId=3B666BCE0099
 192.250 -	IMPORT_C void ReparentL(CNode* aParent);
 192.251 -
 192.252 -	//Returns the next sibling which means in effect that it asks for the next child of its parent.
 192.253 -	//Sibling means brother or sister.
 192.254 -	//##ModelId=3B666BCE0090
 192.255 -	IMPORT_C CNode* NextSibling() const;
 192.256 -
 192.257 -	//Returns the previous sibling which means in effect that it asks for the previous child of its parent.
 192.258 -	//Sibling means brother or sister.
 192.259 -	//##ModelId=3B666BCE008F
 192.260 -	IMPORT_C CNode* PrevSibling() const;
 192.261 -
 192.262 -	//returns the number of children that this node has
 192.263 -	//##ModelId=3B666BCE0085
 192.264 -	IMPORT_C TInt NumberImmediateChildren() const;
 192.265 -
 192.266 -	//Deletes the attribute of which is of aAttributeType (the parameter)
 192.267 -	//WARNING Attribute values of nodes will be deleted as the node owns them if you don't want it deleted then use a wrapper
 192.268 -	//##ModelId=3B666BCE007C
 192.269 -	IMPORT_C void DeleteAttribute(TAny* aAttributeType);
 192.270 -
 192.271 -	//Deletes all the attributes of this node
 192.272 -	//WARNING Attribute values of nodes will be deleted as the node owns them if you don't want it deleted then use a wrapper
 192.273 -	//##ModelId=3B666BCE007B
 192.274 -	IMPORT_C void DeleteAllAttributes();
 192.275 -
 192.276 -	//remove an attribute without deleting it, this is done by simply setting the attributeValue pointer to NULL
 192.277 -	//WARNING you are now responsiblefor the destruction of this attribute value
 192.278 -	//##ModelId=3B666BCE0071
 192.279 -	IMPORT_C void RemoveAttributeNoDelete(TAny* aAttributeType);
 192.280 -
 192.281 -	// Returns the number of attributes that this node has
 192.282 -	//##ModelId=3B666BCE0067
 192.283 -	IMPORT_C TInt AttributeCount() const;
 192.284 -
 192.285 -	//Returns the type of attribute (AttributeType) at a given index...NOT the attributeValue
 192.286 -	//##ModelId=3B666BCE005D
 192.287 -	IMPORT_C TAny* AttributeTypeByIndex(TInt aIndex) const; 
 192.288 -
 192.289 -	//Returns the value of an attribute (AttributeValue) at a given index...NOT the attributeType
 192.290 -	//##ModelId=3B666BCE003F
 192.291 -	IMPORT_C CBase* AttributeByIndex(TInt aIndex) const;
 192.292 -	//##ModelId=3B666BCE0049
 192.293 -	IMPORT_C CBase* AttributeByIndex(TInt aIndex,TAny*& aType) const;
 192.294 -
 192.295 -	//Adds an attribute, parameters are the type of attribute and its value
 192.296 -	//WARNING node takes ownership of aAttributeValue
 192.297 -	////Push aAttributeValue onto the CleanupStack before calling then pop off on return
 192.298 -	//##ModelId=3B666BCE002B
 192.299 -	IMPORT_C void AddAttributeL(TAny* AttributeType, CBase* aAttributeValue);
 192.300 -
 192.301 -	//Adds data to the node and also adds an attribute, parameters are the Data to be added, the type of attribute and its value
 192.302 -	//WARNING node takes ownership of aData and aAttributeValue
 192.303 -	////Push aAttributeValue and aData onto the CleanupStack before calling then pop off on return
 192.304 -	//##ModelId=3B666BCE000D
 192.305 -	IMPORT_C void AddDataAndAttributeL(HBufC16 *aData, TAny* AttributeType, CBase* aAttributeValue);
 192.306 -
 192.307 -	//Returns an attribute value for the given AttributeType(the parameter)
 192.308 -	//##ModelId=3B666BCE0003
 192.309 -	IMPORT_C CBase* Attribute(TAny* AttributeType) const;
 192.310 -
 192.311 -	//Returns TRUE if the attribute of the given type exists
 192.312 -	//##ModelId=3B666BCD03E1
 192.313 -	IMPORT_C TBool AttributeExists(TAny* aAttributeType) const;
 192.314 -
 192.315 -	//Returns the node type
 192.316 -	//##ModelId=3B666BCD03D7
 192.317 -	IMPORT_C TAny* Type() const;
 192.318 -
 192.319 -	//Sets the node type to be aType (the parameter)
 192.320 -	//##ModelId=3B666BCD03CD
 192.321 -	IMPORT_C void SetType(TAny* aType);
 192.322 -
 192.323 -
 192.324 -protected:
 192.325 -	//ctor
 192.326 -	//##ModelId=3B666BCD03B9
 192.327 -	CNode(TAny* aType, CNode* aParent);
 192.328 -
 192.329 -	//internal finds a child which is passed in as a parameter
 192.330 -	//##ModelId=3B666BCD03AF
 192.331 -	TInt FindChild(const CNode* aNode) const;
 192.332 -
 192.333 -	//##ModelId=3B666BCD03A7
 192.334 -	HBufC16* SetupDeletableOrNonDeleteableDataLC();
 192.335 -	//##ModelId=3B666BCD03A6
 192.336 -	void AdjustBasePointers();
 192.337 -private:
 192.338 -	// Reserved for future expansion
 192.339 -	//##ModelId=3B666BCD039B
 192.340 -	virtual void Reserved1();			
 192.341 -	//##ModelId=3B666BCD03A5
 192.342 -	virtual void Reserved1() const;
 192.343 -
 192.344 -protected:
 192.345 -	//the Type of Node
 192.346 -	//##ModelId=3B666BCD0392
 192.347 -	TAny* iType;
 192.348 -
 192.349 -	//This Nodes parent
 192.350 -	//##ModelId=3B666BCD037E
 192.351 -	CNode *iParent;
 192.352 -
 192.353 -	// stores attribute type and value. iTypes must be Flat array
 192.354 -	//##ModelId=3B666BCD0372
 192.355 -	CArrayPtrFlat<CBase> iValues;
 192.356 -	//##ModelId=3B666BCD034C
 192.357 -	CArrayPtrFlat<TAny> iTypes;
 192.358 -
 192.359 -	//##ModelId=3B666BCD0324
 192.360 -	TInt32* iTypesBasePtr;
 192.361 -	//##ModelId=3B666BCD0310
 192.362 -	CDataNoDelete* iDataValue;
 192.363 -//
 192.364 -	//An array of child nodes
 192.365 -	//##ModelId=3B666BCD02FC
 192.366 -	CArrayPtr<CNode> *iChildList;
 192.367 -private:
 192.368 -	//##ModelId=3B666BCD02DF
 192.369 -	TAny*	iReserved;						// Reserved for future expansion
 192.370 -	};
 192.371 -
 192.372 -
 192.373 -//CTypedNode is derived from CNode and is a thin template. TNodeType you should define as a 32 bit value
 192.374 -//TAttributeType should be defined as a 32 bit value
 192.375 -//FOR EXPLANATION OF API'S SEE ABOVE 
 192.376 -//##ModelId=3B666BCC01A4
 192.377 -template <class TNodeType, class TAttributeType>
 192.378 -class CTypedNode : public CNode 
 192.379 -/** Template class for a node in a node tree.
 192.380 -
 192.381 -The node type is set to the template parameter TNodeType and the attribute type to 
 192.382 -TAttributeType. These parameters should be pointers to the type required to store 
 192.383 -the type value: e.g. for a string, a const TDesC*.
 192.384 -
 192.385 -The class is thin template over CNode. */
 192.386 -	{
 192.387 -public:
 192.388 -	//##ModelId=3B666BCC024A
 192.389 -	inline static CTypedNode* NewL(TNodeType aType,CNode* aParent);
 192.390 -	//##ModelId=3B666BCC0248
 192.391 -	inline void DeleteChildNode(CNode* aNode);
 192.392 -	//##ModelId=3B666BCC0247
 192.393 -	inline void DeleteAllChildNodes();
 192.394 -	//##ModelId=3B666BCC0245
 192.395 -	inline CTypedNode<TNodeType,TAttributeType>& AppendNodeL(TNodeType aType);
 192.396 -	//##ModelId=3B666BCC023B
 192.397 -	inline void AppendNodeToThisNodeL(CNode* aNode);
 192.398 -	//##ModelId=3B666BCC0228
 192.399 -	inline void SetDataL(HBufC16* aDataNowNodeOwns);
 192.400 -	//##ModelId=3B666BCC0227
 192.401 -	inline void SetDataNoDeleteL();
 192.402 -	//##ModelId=3B666BCC0221
 192.403 -	inline void ClearSetDataNoDeleteL();
 192.404 -	//##ModelId=3B666BCC021F
 192.405 -	inline void SetFileDataL(HBufC16* aFileDataLocationNowNodeOwns);
 192.406 -	//##ModelId=3B666BCC021D
 192.407 -	inline void ResetDataPointer(HBufC16* aData);
 192.408 -	//##ModelId=3B666BCC0215
 192.409 -	inline HBufC16* Data() const;
 192.410 -	//##ModelId=3B666BCC0214
 192.411 -	inline const CTypedNode& Root() const;
 192.412 -	//##ModelId=3B666BCC020B
 192.413 -	inline CTypedNode* Child(TInt aByIndex) const;
 192.414 -	//##ModelId=3B666BCC0209
 192.415 -	inline CTypedNode* NextChild(const CNode* aNode = NULL) const;
 192.416 -	//##ModelId=3B666BCC0201
 192.417 -	inline CTypedNode* PrevChild( const CNode& aNode) const;
 192.418 -	//##ModelId=3B666BCC0200
 192.419 -	inline CTypedNode* Parent() const;
 192.420 -	//##ModelId=3B666BCC01FE
 192.421 -	inline void ReparentL(CNode* aParent);
 192.422 -	//##ModelId=3B666BCC01F5
 192.423 -	inline CTypedNode* NextSibling() const;
 192.424 -	//##ModelId=3B666BCC01F4
 192.425 -	inline CTypedNode* PrevSibling() const;
 192.426 -	//##ModelId=3B666BCC01EE
 192.427 -	inline TInt NumberImmediateChildren() const;
 192.428 -	//##ModelId=3B666BCC01EC
 192.429 -	inline void DeleteAttribute(TAttributeType aAttributeType);
 192.430 -	//##ModelId=3B666BCC01EB
 192.431 -	inline void DeleteAllAttributes();
 192.432 -	//##ModelId=3B666BCC01E5
 192.433 -	inline void RemoveAttributeNoDelete(TAttributeType aAttributeType);
 192.434 -	//##ModelId=3B666BCC01E4
 192.435 -	inline TInt AttributeCount() const; // Returns the number of attributes
 192.436 -	//##ModelId=3B666BCC01E2
 192.437 -	inline TAttributeType AttributeTypeByIndex(TInt aIndex) const; 
 192.438 -	//##ModelId=3B666BCC01DC
 192.439 -	inline CBase* AttributeByIndex(TInt aIndex) const; 
 192.440 -	//##ModelId=3B666BCC01DE
 192.441 -	inline CBase* AttributeByIndex(TInt aIndex,TAttributeType& aType) const; 
 192.442 -	//##ModelId=3B666BCC01D9
 192.443 -	inline void AddAttributeL(TAttributeType aAttributeType, CBase* aAttributeValue);
 192.444 -	//##ModelId=3B666BCC01D0
 192.445 -	inline void AddDataAndAttributeL(HBufC16 *aData, TAttributeType aAttributeType, CBase* aAttributeValue);
 192.446 -	//##ModelId=3B666BCC01CE
 192.447 -	inline CBase* Attribute(TAttributeType aAttributeType) const;
 192.448 -	//##ModelId=3B666BCC01CC
 192.449 -	inline TBool AttributeExists(TAttributeType aAttributeType) const;
 192.450 -	//##ModelId=3B666BCC01C9
 192.451 -	inline TNodeType Type() const;
 192.452 -	//##ModelId=3B666BCC01C7
 192.453 -	inline void SetType(TNodeType aType);
 192.454 -protected:
 192.455 -	//##ModelId=3B666BCC01C4
 192.456 -	CTypedNode(TNodeType aType, CNode* aParent);
 192.457 -	};
 192.458 -#include <cnode.inl>
 192.459 -#endif
   193.1 --- a/epoc32/include/cnodeleteattribute.h	Tue Mar 16 16:12:26 2010 +0000
   193.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   193.3 @@ -1,46 +0,0 @@
   193.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   193.5 -// All rights reserved.
   193.6 -// This component and the accompanying materials are made available
   193.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   193.8 -// which accompanies this distribution, and is available
   193.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  193.10 -//
  193.11 -// Initial Contributors:
  193.12 -// Nokia Corporation - initial contribution.
  193.13 -//
  193.14 -// Contributors:
  193.15 -//
  193.16 -// Description:
  193.17 -//
  193.18 -
  193.19 -#ifndef __CNODELETEATTRIBUTE_H__
  193.20 -#define __CNODELETEATTRIBUTE_H__
  193.21 -
  193.22 -// System includes
  193.23 -//
  193.24 -#include <e32base.h>
  193.25 -
  193.26 -
  193.27 -
  193.28 -template <class T>
  193.29 -class CNoDeleteAttributeT : public CBase
  193.30 -/**
  193.31 -    @publishedAll
  193.32 -    @released
  193.33 -*/
  193.34 -	{
  193.35 -public:
  193.36 -
  193.37 -	CNoDeleteAttributeT(T aAttribute) : iAttribute(aAttribute) {};
  193.38 -	~CNoDeleteAttributeT() {};
  193.39 -
  193.40 -	T Attribute() { return iAttribute; }
  193.41 -	void SetAttribute(T aAttribute) { iAttribute = aAttribute; }
  193.42 -
  193.43 -protected:
  193.44 -
  193.45 -	T iAttribute;
  193.46 -
  193.47 -	};
  193.48 -
  193.49 -#endif	// __CNODELETEATTRIBUTE_H__
   194.1 --- a/epoc32/include/cntdb.h	Tue Mar 16 16:12:26 2010 +0000
   194.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   194.3 @@ -1,1427 +0,0 @@
   194.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   194.5 -// All rights reserved.
   194.6 -// This component and the accompanying materials are made available
   194.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   194.8 -// which accompanies this distribution, and is available
   194.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  194.10 -//
  194.11 -// Initial Contributors:
  194.12 -// Nokia Corporation - initial contribution.
  194.13 -//
  194.14 -// Contributors:
  194.15 -//
  194.16 -// Description:
  194.17 -//
  194.18 -
  194.19 -#ifndef __CNTDB_H__
  194.20 -#define __CNTDB_H__
  194.21 -
  194.22 -// System includes
  194.23 -#include <e32base.h>
  194.24 -#include <cntdef.h>
  194.25 -#include <cntdbobs.h>
  194.26 -#include <cntsync.h>
  194.27 -#include <s32file.h>
  194.28 -#include <badesca.h>
  194.29 -#include <versit.h>
  194.30 -#include <collate.h>
  194.31 -
  194.32 -#include <ecom/ecom.h>
  194.33 -
  194.34 -// Classes referenced
  194.35 -//
  194.36 -class CContactViewDef;
  194.37 -class CFoundMatches;
  194.38 -class CContactTextDef;
  194.39 -class CContactItem;
  194.40 -class CContactItemViewDef;
  194.41 -class CContactItemFieldSet;
  194.42 -class CContactItemFieldDef;
  194.43 -class CContactActiveCompress;
  194.44 -class CContactActiveRecover;
  194.45 -class CContactDatabase;
  194.46 -class CContactTables;
  194.47 -class CCntFilter;
  194.48 -class CContentType;
  194.49 -class CContactItemField;
  194.50 -class CIdleFinder;
  194.51 -class CContactClientSession;
  194.52 -class CPrivConverter;
  194.53 -class RCntModel;
  194.54 -class CProxyFactory;
  194.55 -class CCntTemplateCache;
  194.56 -class CSortArray;
  194.57 -class CCntIdleSorter;
  194.58 -class MLplPersistenceLayerFactory;
  194.59 -class CContactOpenOperation;
  194.60 -class CDataBaseChangeObserver;
  194.61 -class CContactConverter;
  194.62 -
  194.63 -// Constants
  194.64 -const TInt KMaxContactTextSeperator=4;
  194.65 -const TInt KTextFieldMinimalLength=64;
  194.66 -const TInt KMaxCustomFilterableFields=4;
  194.67 -
  194.68 -const TInt KMajorVersion=1;
  194.69 -const TInt KMinorVersion=0;
  194.70 -const TInt KBuildNumber=40;
  194.71 -
  194.72 -
  194.73 -//
  194.74 -// Classes used for compact
  194.75 -//
  194.76 -
  194.77 -class MContactStorageObserver
  194.78 -/**
  194.79 -Mixin used to observe low disk events
  194.80 -
  194.81 -@publishedAll
  194.82 -@released
  194.83 -*/
  194.84 -	{
  194.85 -public:
  194.86 -	virtual void HandleDiskSpaceEvent(TInt aDrive) = 0;
  194.87 -	};
  194.88 -
  194.89 -class MContactUiCompactObserver
  194.90 -/** Mixin used to observe contact database compaction status
  194.91 -@publishedAll
  194.92 -@released
  194.93 -*/
  194.94 -	{
  194.95 -public:
  194.96 -	virtual void Step(TInt aStep)=0;
  194.97 -	virtual void HandleError(TInt aError)=0;
  194.98 -	};
  194.99 -
 194.100 -class MContactUiActive
 194.101 -/**  Mixin used to register the observer.
 194.102 -@publishedAll
 194.103 -@released
 194.104 -*/
 194.105 -	{
 194.106 -public:
 194.107 -	virtual void Cancel()=0;
 194.108 -	virtual void SetObserver(MContactUiCompactObserver *aObserver)=0;
 194.109 -	virtual TInt StepsTogo() const=0;
 194.110 -	virtual TInt Step()=0;
 194.111 -	virtual TInt Error() const=0;
 194.112 -private:
 194.113 -	IMPORT_C virtual void MContactUiActive_Reserved1();
 194.114 -	};
 194.115 -
 194.116 -class CContactActiveBase : public CBase, public MContactUiActive
 194.117 -/**
 194.118 -@internalTechnology
 194.119 -*/
 194.120 -	{
 194.121 -public:
 194.122 -	~CContactActiveBase();
 194.123 -	void SetObserver(MContactUiCompactObserver *aObserver);
 194.124 -	void Cancel();
 194.125 -	TInt StepsTogo() const;
 194.126 -	TInt Step();
 194.127 -	TInt Error() const;
 194.128 -	void SetContactDatabase(CContactDatabase* aContactDatabase);
 194.129 -	void SetFileManager(RCntModel& aCntSvr);
 194.130 -	
 194.131 -#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__ 	
 194.132 -protected:
 194.133 -	void ConstructL();
 194.134 -	static TInt CompactCallBack(TAny *aThis);
 194.135 -protected:
 194.136 -	MContactUiCompactObserver *iObserver;
 194.137 -	RCntModel* iCntSvr; 
 194.138 -	CIdle *iIdle;
 194.139 -	TInt iStep;
 194.140 -	TInt iError;
 194.141 -	CContactDatabase* iContactDatabase;
 194.142 -#endif	
 194.143 -	};
 194.144 -	
 194.145 -class CContactActiveCompress : public CContactActiveBase
 194.146 -/**
 194.147 -@publishedAll
 194.148 -@released
 194.149 -*/
 194.150 -	{
 194.151 -public:
 194.152 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
 194.153 -    void ConstructL(RDbNamedDatabase /* &aDataBase */) {};
 194.154 -#endif	
 194.155 -	};
 194.156 -
 194.157 -class CContactActiveRecover : public CContactActiveBase
 194.158 -/**
 194.159 -@publishedAll
 194.160 -@released
 194.161 -*/
 194.162 -	{
 194.163 -public:
 194.164 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
 194.165 -    void ConstructL(RDbNamedDatabase /* &aDataBase */) {};
 194.166 -#endif	
 194.167 -	};
 194.168 -
 194.169 -
 194.170 -
 194.171 -
 194.172 -class TContactTextDefItem
 194.173 -/** An item in a text definition.
 194.174 -
 194.175 -A TContactTextDefItem has a field type and an optional separator string
 194.176 -with a maximum length of 4 characters.
 194.177 -
 194.178 -@see CContactTextDef
 194.179 -@publishedAll
 194.180 -@released
 194.181 -*/
 194.182 -	{
 194.183 -public:
 194.184 -	IMPORT_C TContactTextDefItem();
 194.185 -	IMPORT_C TContactTextDefItem(TFieldType aFieldType);
 194.186 -	IMPORT_C TContactTextDefItem(TFieldType aFieldType, const TDesC &aSeperator);
 194.187 -public:
 194.188 -	/** The field type. */
 194.189 -	TFieldType iFieldType;
 194.190 -	/** The string used to separate the fields in the text definition. */
 194.191 -	TBuf<KMaxContactTextSeperator> iSeperator;
 194.192 -	};
 194.193 -
 194.194 -class CContactTextDef : public CArrayFixFlat<TContactTextDefItem>
 194.195 -/** Defines a way of grouping fields to form a string which represents
 194.196 -a contact item.
 194.197 -
 194.198 -A text definition is implemented as an array of text definition items
 194.199 -(TContactTextDefItems).
 194.200 -
 194.201 -For example, CContactDatabase::ReadContactTextDefL() uses a text definition to
 194.202 -build up a string from a contact item. When creating the string, it searches
 194.203 -the item for fields whose type matches one of the fields specified in the text
 194.204 -definition. The contents of the first matching field of each type found in the
 194.205 -item are read into the string. These strings may be separated using a field
 194.206 -separator, which is also specified in the text definition. A separator is not
 194.207 -appended to the last field used to make up the string. It is only inserted when
 194.208 -there is a following non-empty field.
 194.209 -
 194.210 -Additionally, the text definition may also contain a fallback field
 194.211 -type. This is used when none of the fields specified in the text
 194.212 -definition contain any text. If the item's fallback field contains no text
 194.213 -either, or if the fallback field type's value is KUidContactFieldNone, the
 194.214 -text is read from the first non-empty field in the item.
 194.215 -
 194.216 -A contact database can have a default text definition which is set using CContactDatabase::SetTextDefinitionL().
 194.217 -This may be overridden using the variants of CContactDatabase::ReadContactTextDefL()
 194.218 -which take a CContactTextDef* argument.
 194.219 -
 194.220 -CContactTextDef is derived from CArrayFixFlat<TContactTextDefItem>, so all
 194.221 -relevant functions can be used, e.g. to add and remove elements.
 194.222 -
 194.223 -@publishedAll
 194.224 -@released
 194.225 -*/
 194.226 -	{
 194.227 -	friend class CContactDatabase;
 194.228 -	friend class CContactTables;
 194.229 -public:
 194.230 -	CContactTextDef();
 194.231 -	IMPORT_C static CContactTextDef* NewL();
 194.232 -	IMPORT_C static CContactTextDef* NewLC();
 194.233 -	static CContactTextDef* NewLC(RReadStream& aStream);
 194.234 -	IMPORT_C void SetFallbackField(TFieldType iFieldType);
 194.235 -	IMPORT_C TFieldType FallbackField() const;
 194.236 -	IMPORT_C TBool ExactMatchOnly();
 194.237 -	IMPORT_C void SetExactMatchOnly(TBool aExactMatchOnly);
 194.238 -	void ExternalizeL(RWriteStream& aStream) const;
 194.239 -	void InternalizeL(RReadStream& aStream);	
 194.240 -private:
 194.241 -	TFieldType iFallbackFieldType;
 194.242 -	TBool iExactMatchOnly;//Default to EFalse cause ReadInTextDef to only match the chosen fields and not attempt a matchall
 194.243 -	};
 194.244 -
 194.245 -class CContactItemViewDef : public CBase
 194.246 -/** A view definition for a contact item.
 194.247 -
 194.248 -When reading or opening a contact item using the CContactDatabase class,
 194.249 -a view definition may be specified to indicate which field data should be
 194.250 -retrieved. See for instance CContactDatabase::ReadContactL().
 194.251 -
 194.252 -A view definition for a contact item contains an array of field types, a use
 194.253 -(CContactItemViewDef::TUse) and a mode (CContactItemViewDef::TMode). The use
 194.254 -indicates whether the field types contained in the view definition should
 194.255 -be included in or excluded from the view. The mode indicates whether fields
 194.256 -with the hidden attribute should be included or excluded.
 194.257 -
 194.258 -@publishedAll
 194.259 -@released
 194.260 -*/
 194.261 -	{
 194.262 -public:
 194.263 -	/** Include or exclude specified fields. */
 194.264 -	enum TUse
 194.265 -			{
 194.266 -			/** Include specified fields in the view. */
 194.267 -			EIncludeFields,
 194.268 -			/** Exclude specified fields from the view. */
 194.269 -			EMaskFields
 194.270 -			};
 194.271 -	/** Include or exclude hidden fields.*/
 194.272 -	enum TMode
 194.273 -			{
 194.274 -			/** Include hidden fields in the view. */
 194.275 -			EIncludeHiddenFields,
 194.276 -			/** Exclude hidden fields from the view. */
 194.277 -			EMaskHiddenFields
 194.278 -			};
 194.279 -public:
 194.280 -	IMPORT_C static CContactItemViewDef* NewL(TUse aUse, TMode aMode);
 194.281 -	IMPORT_C static CContactItemViewDef* NewLC(TUse aUse, TMode aMode);
 194.282 -	static CContactItemViewDef* NewLC(RReadStream& aStream);
 194.283 -    inline TUid operator[](TInt aIndex) const;
 194.284 -    IMPORT_C TInt Find(const CContentType &aContentType) const;
 194.285 -    IMPORT_C TInt Find(TFieldType aFieldType) const;
 194.286 -    inline TInt Count() const;
 194.287 -    inline void Reset();
 194.288 -	IMPORT_C void AddL(TFieldType aFieldType);
 194.289 -	IMPORT_C void Remove(TFieldType aFieldType);
 194.290 -	IMPORT_C void Remove(TInt aIndex);
 194.291 -	inline TUse Use() const;
 194.292 -	inline void SetUse(TUse aUse);
 194.293 -	inline TMode Mode() const;
 194.294 -	inline void SetMode(TMode aMode);
 194.295 -	IMPORT_C TBool Contains(const CContactItem& aItem);
 194.296 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 194.297 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 194.298 -	IMPORT_C TBool MatchesAll() const;
 194.299 -private:
 194.300 -	CContactItemViewDef(TUse aUse,TMode aMode);
 194.301 -private:
 194.302 -    CArrayFixFlat<TUid> iFieldTypes;
 194.303 -	TUse iUse;
 194.304 -	TMode iMode;
 194.305 -	};
 194.306 -
 194.307 -class CContactViewDef : public CBase
 194.308 -/** Specifies a subset of fields to be loaded when reading a contact item.
 194.309 -
 194.310 -A default view definition is owned by the contact database.
 194.311 -It is set using CContactDatabase::SetViewDefinitionL() and is used in calls
 194.312 -to CContactDatabase::ReadContactL(), ReadContactLC() and ReadContactAndAgentL()
 194.313 -when no view definition is specified.
 194.314 -
 194.315 -The view definition owns the item view definition (see the CContactItemViewDef
 194.316 -class), which stores the view definition's field types, use and mode.
 194.317 -
 194.318 -The following functions declared in class CContactViewDef have not been
 194.319 -implemented:- Groups(), AddL().
 194.320 -
 194.321 -@publishedAll
 194.322 -@released
 194.323 -*/
 194.324 -	{
 194.325 -public:
 194.326 -	IMPORT_C static CContactViewDef* NewL();
 194.327 -	IMPORT_C static CContactViewDef* NewLC();
 194.328 -	IMPORT_C static CContactViewDef* NewL(CContactItemViewDef* aItemDef);
 194.329 -	IMPORT_C static CContactViewDef* NewLC(CContactItemViewDef* aItemDef);
 194.330 -	static CContactViewDef* NewLC(RReadStream& aStream);
 194.331 -	IMPORT_C ~CContactViewDef();
 194.332 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 194.333 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 194.334 -	IMPORT_C CContactItemViewDef& ItemDef() const;
 194.335 -	/** This function is not implemented    */
 194.336 -	IMPORT_C CContactIdArray& Groups() const;
 194.337 -	/** This function is not implemented. 
 194.338 -	@param aFieldType The field type to append to the array of field types. */
 194.339 -	inline void AddL(TFieldType aFieldType);
 194.340 -private:
 194.341 -	CContactViewDef();
 194.342 -	void ConstructL(CContactItemViewDef* aItemDef);
 194.343 -private:
 194.344 -	CContactItemViewDef* iItemDef;
 194.345 -//	CContactIdArray* iGroupIds; // unused for now
 194.346 -	};
 194.347 -
 194.348 -class TContactIter
 194.349 -/** Iterates through the sorted contact items in a contact database.
 194.350 -
 194.351 -A value of KNullContactId is returned by the iterator if a requested item cannot
 194.352 -be found.
 194.353 -
 194.354 -@publishedAll
 194.355 -@released
 194.356 -*/
 194.357 -	{
 194.358 -public:
 194.359 -	IMPORT_C TContactIter(CContactDatabase &aDatabase);
 194.360 -	IMPORT_C TContactItemId FirstL();
 194.361 -	IMPORT_C TContactItemId NextL();
 194.362 -	IMPORT_C TContactItemId PreviousL();
 194.363 -	IMPORT_C TContactItemId LastL();
 194.364 -	IMPORT_C void GotoL(TContactItemId aContactId);
 194.365 -	IMPORT_C void Reset();
 194.366 -private:
 194.367 -	void GotoIndexL(TInt aPos);
 194.368 -private:
 194.369 -	CContactDatabase &iDatabase;
 194.370 -	TContactItemId iCursorId;
 194.371 -	};
 194.372 -
 194.373 -class MIdleFindObserver
 194.374 -/** The interface for an asynchronous find observer.
 194.375 -
 194.376 -An object which implements this interface is passed to the asynchronous find
 194.377 -functions defined in class CContactDatabase, (FindAsyncL() and FindInTextDefAsyncL()).
 194.378 -The observer would typically notify the user of the progress of the operation.
 194.379 -
 194.380 -@publishedAll
 194.381 -@released
 194.382 -*/
 194.383 -	{
 194.384 -public:
 194.385 -	/** Asynchronous find observer callback.
 194.386 -
 194.387 -	If an observer is supplied to CContactDatabase::FindAsyncL()
 194.388 -	or FindInTextDefAsyncL(), this callback function is called by CIdle::RunL()
 194.389 -	when nothing of a higher priority can be scheduled. It is called for every
 194.390 -	16 items searched to give the application a chance to update its search status.
 194.391 -
 194.392 -	An implementation might test for and handle errors and retrieve information
 194.393 -	about the progress of the search. This information may be retrieved using
 194.394 -	functions provided by the CIdleFinder class. */
 194.395 -	virtual void IdleFindCallback()=0;
 194.396 -	};
 194.397 -
 194.398 -struct SFindInTextDefWordParser
 194.399 -/** Search string parser struct.
 194.400 -
 194.401 -An object of this type is used in the callback parser function passed to
 194.402 -CContactDatabase::FindInTextDefLC(). The parser function must walk
 194.403 -through and parse iSearchString, adding any words found to iWordArray.
 194.404 -
 194.405 -@publishedAll
 194.406 -@released
 194.407 -*/
 194.408 -	{
 194.409 -public:
 194.410 -	inline SFindInTextDefWordParser(const TDesC *aSearchString, CDesCArray *aWordArray) : iSearchString(aSearchString), iWordArray(aWordArray)
 194.411 -	/** Initialises the search string and the word array.
 194.412 -
 194.413 -	@param aSearchString Pointer to the input string to be parsed.
 194.414 -	@param aWordArray Pointer to the array to which words parsed from the input
 194.415 -	string should be added. */
 194.416 -		{};
 194.417 -public:
 194.418 -	/** Pointer to the input string to be parsed. */
 194.419 -	const TDesC *iSearchString;
 194.420 -	/** Pointer to the array to which words parsed from the input string should be
 194.421 -	added. */
 194.422 -	CDesCArray *iWordArray;
 194.423 -	};
 194.424 -
 194.425 -class CIdleFinder : public CIdle
 194.426 -/** Provides information about the progress of an asynchronous contact database search,
 194.427 -and can be used to get the results of the search.
 194.428 -
 194.429 -An instance of this class is returned by calls to CContactDatabase::FindAsyncL()
 194.430 -and CContactDatabase::FindInTextDefAsyncL().
 194.431 -
 194.432 -@publishedAll
 194.433 -@released
 194.434 -*/
 194.435 -	{
 194.436 -public:
 194.437 -	~CIdleFinder();
 194.438 -	IMPORT_C TBool IsComplete() const;
 194.439 -	IMPORT_C CContactIdArray *TakeContactIds();
 194.440 -	IMPORT_C TInt Error() const;
 194.441 -	TInt RunError(TInt aError);
 194.442 -private:
 194.443 -	friend class CContactDatabase;
 194.444 -	static CIdleFinder *NewL(CContactDatabase &aContactDatabase, const TDesC& aText, const CContactItemFieldDef *aFieldDef, MIdleFindObserver *aObserver);
 194.445 -	static CIdleFinder *NewL(CContactDatabase &aContactDatabase, const MDesCArray* aFindWords,const CContactTextDef* aTextDef, MIdleFindObserver *aObserver, const TCallBack &aWordParserCallback);
 194.446 -	void DoCancel();
 194.447 -	void Start();
 194.448 -	static TInt CallbackL(TAny *aSelf);
 194.449 -	void ConstructL(const TDesC *aText, const MDesCArray* aFindWords, const TCallBack *aWordParserCallback);
 194.450 -	TBool ScanForMatchL(const TDesC &aFieldText,const TDesC &aFindText, CFoundMatches *aFoundMatches) const;
 194.451 -	TBool CheckFindL(TContactItemId aContactId) const;
 194.452 -	TBool CheckFindL() const;
 194.453 -	CIdleFinder(CContactDatabase &aContactDatabase, const CContactItemFieldDef *aFieldDef, const CContactTextDef* aTextDef, MIdleFindObserver *aObserver);
 194.454 -	TBool doFindL();
 194.455 -
 194.456 -	enum TAsyncFindState
 194.457 -		{
 194.458 -		EFindInBlobFinished				=0x00000001,
 194.459 -		EFindInIdentityFinished			=0x00000002,
 194.460 -		EFindInEmailFinished			=0x00000004,
 194.461 -		EFindInTextDefFinished			=0x00000008
 194.462 -		};
 194.463 -private:
 194.464 -	CContactDatabase *iContactDatabase;
 194.465 -	CContactIdArray *iIdsFound;
 194.466 -	TBool iOwnsIds;
 194.467 -	CDesCArray*		iFindWords;
 194.468 -	TInt iReserved1;
 194.469 -	TInt iReserved2;
 194.470 -	TInt iReserved3;
 194.471 -	const CContactItemFieldDef* iFieldDef;
 194.472 -	const CContactTextDef* iTextDef;
 194.473 -	MIdleFindObserver *iObserver;
 194.474 -	TInt iError;
 194.475 -	TCallBack iWordParserCallback;
 194.476 -	TInt iReserved4;
 194.477 -	TInt iReserved5;
 194.478 -	TInt iReserved6;
 194.479 -	TInt iReserved7; //was 	TDbColNo
 194.480 -	TInt iReserved8; //was 	RDbView
 194.481 -	TInt iReserved9; //was 	RDbView
 194.482 -	TInt iReserved10; //was CIdentityTableColSet*
 194.483 -	};
 194.484 -
 194.485 -class MContactDbPrivObserver
 194.486 -/** Provides notification of database changes to clients. 
 194.487 -* Provides information about database change event details and the type of changed event.
 194.488 -@publishedAll
 194.489 -@released
 194.490 -*/
 194.491 -	{
 194.492 -public:
 194.493 -
 194.494 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
 194.495 -	virtual void HandleDatabaseEventL(RDbNotifier::TEvent)=0;
 194.496 -#endif	
 194.497 -	virtual void HandleDatabaseEventL(const TContactDbObserverEvent &aEvent)=0;
 194.498 -	};
 194.499 -
 194.500 -
 194.501 -class MContactSortObserver
 194.502 -/**
 194.503 -@publishedAll
 194.504 -@deprecated
 194.505 -*/
 194.506 -	{
 194.507 -public:
 194.508 -    /**
 194.509 -    @deprecated
 194.510 -    */
 194.511 -	virtual void HandleSortEventL(TInt aContactsSorted, TInt aContactsTotal)=0;
 194.512 -	};
 194.513 -
 194.514 -class MConverterCallBack
 194.515 -/**
 194.516 -Interface class for providing Intra-Contact Properties during a PBAP specific contacts export.
 194.517 -@prototype
 194.518 -@internalTechnology
 194.519 -*/
 194.520 -{
 194.521 -	public:
 194.522 -	/**
 194.523 -	PBAP clients are supposed to provide any information regarding the contact item represented by aContactId.
 194.524 -	This information should be in form of standard vCard property, all such properties should be appended to the array aPropertyList.
 194.525 -	*/
 194.526 -	virtual	void AddIntraContactPropertiesL(const TContactItemId& aContactId, CArrayPtr<CParserProperty>* aPropertyList) = 0;
 194.527 -};
 194.528 -
 194.529 -enum TVCardVersion
 194.530 -/**
 194.531 -Specifies type of export of contact items.
 194.532 -PBAP clients should use EPBAPVCard21 and EPBAPVCard30.
 194.533 -@prototype
 194.534 -@internalTechnology
 194.535 -*/
 194.536 -	{
 194.537 -	EVCardUDEF = -1,
 194.538 -	EVCard21 = 0,
 194.539 -	EVCard30,
 194.540 -	EPBAPVCard21,
 194.541 -	EPBAPVCard30
 194.542 -	};
 194.543 -
 194.544 -class CContactDatabase : public CBase, public MContactDbPrivObserver, public MContactStorageObserver
 194.545 -/** A database of contact items.
 194.546 -
 194.547 -Contact items can be added to and removed from the database and items in the
 194.548 -database can be opened or read. To edit an item, it must first be opened.
 194.549 -Changes to the item can then be committed using CommitContactL()
 194.550 -(committing can only take place to an open item).
 194.551 -
 194.552 -If the available disk space is less than 128 kilobytes then changes to the
 194.553 -contact database cannot be started, and methods such as CreateL() or CommitContactL()
 194.554 -will leave with a KErrDiskFull error. Less obviously OpenL() can also fail with
 194.555 -KErrDiskFull when trying to update the system template.
 194.556 -
 194.557 -Each item has an access count. An item cannot be fully deleted unless its
 194.558 -access count is zero. This is to prevent items which have been
 194.559 -synchronised with another contacts application from being deleted.
 194.560 -Also, if the item is a template, it cannot be deleted if other items are based
 194.561 -on it.
 194.562 -
 194.563 -More than one contact database can exist on a phone, but there is a
 194.564 -default contact database. Its filename is contacts.cdb. It
 194.565 -can be moved between drives.
 194.566 -
 194.567 -CContactDatabase implements searching and sorting and also provides
 194.568 -separate phone number matching functions. These provide a fast way of indexing
 194.569 -and looking up phone numbers, e.g. for looking up caller IDs on incoming
 194.570 -calls.
 194.571 -
 194.572 -The database owns speed dial information. This is a mapping between a single
 194.573 -digit integer and a telephone number. There may be up to 9 speed dial telephone
 194.574 -numbers; each of them belongs to a contact item in the database. If a
 194.575 -contact item is deleted, its speed dial mapping is removed.
 194.576 -
 194.577 -The following functions defined in class CContactDatabase are not
 194.578 -supported. If called, they leave with KErrNotSupported.
 194.579 -
 194.580 -- ReplacePrefL()
 194.581 -
 194.582 -- ReadPrefL()
 194.583 -
 194.584 -- CreatePrefL()
 194.585 -
 194.586 -@publishedAll
 194.587 -@released
 194.588 -*/
 194.589 -	{
 194.590 -	friend class TContactIter;
 194.591 -	friend class CIdleFinder;
 194.592 -	friend class CCntIdleSorter;
 194.593 -	friend class CContactLocalView;
 194.594 -	friend class CContactOpenOperation;
 194.595 -	friend class RContactRemoteView;
 194.596 -	friend class CViewIteratorProxyManager;
 194.597 -	friend class CCollectionProxy;
 194.598 -	friend class CContactActiveBase;
 194.599 -public:
 194.600 -	class TSortPref
 194.601 -	/** Specifies the field type and order preferences used for sorting items in the
 194.602 -	contacts database.
 194.603 -
 194.604 -	The contents of the first field in a contact item matching the field type
 194.605 -	is used as the data to sort on. The order can either be ascending or descending.
 194.606 -
 194.607 -	@see CContactDatabase::SortL()
 194.608 -	@see CContactDatabase::SortArrayL()
 194.609 -	@publishedAll
 194.610 -	@deprecated
 194.611 -	*/
 194.612 -		{
 194.613 -	public:
 194.614 -		/** The sort order. */
 194.615 -		enum TOrder
 194.616 -			{
 194.617 -			/** Ascending sort order. */
 194.618 -			EAsc,
 194.619 -			/** Descending sort order. */
 194.620 -			EDesc
 194.621 -			};
 194.622 -	public:
 194.623 -		inline TSortPref();
 194.624 -		inline TSortPref(TFieldType aFieldType,TOrder aOrder=EAsc);
 194.625 -		IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 194.626 -		IMPORT_C void InternalizeL(RReadStream& aStream);
 194.627 -	public:
 194.628 -		/** Specifies whether the sort should be ascending or descending. */
 194.629 -		TOrder iOrder;
 194.630 -		/** The first field matching this field type is used for the text to sort on. */
 194.631 -		TFieldType iFieldType;
 194.632 -		};
 194.633 -
 194.634 -	/** Import and export format flags. Contacts can be imported into
 194.635 -	or exported from the contact database as vCards.
 194.636 -
 194.637 -	The following options are available during import and export.
 194.638 -
 194.639 -	@deprecated This enum is deprecated. It has been replaced by the TOptions enum in
 194.640 -	the plugin convertor class CContactVCardConverter, so that each plugin converter
 194.641 -	can define its own options. */
 194.642 -	enum TOptions
 194.643 -  		{
 194.644 -  		EDefault=0x0000,
 194.645 -		/** Handle Symbian's extended vCard format options. */
 194.646 -		EIncludeX =0x0001,
 194.647 -		/** Support non-standard extensions requried by Symbian PC connectivity software
 194.648 -		and Microsoft, amongst others. */
 194.649 -  		ETTFormat =0x0002,
 194.650 -		/** Don't export the contact ID (for exporting only). */
 194.651 -		EExcludeUid=0x0004,
 194.652 -		/** Decrease the contact's access count when importing and exporting. */
 194.653 -		EDecreaseAccessCount=0x0008,
 194.654 -		/** Only import the first contact in the read stream (for importing only). */
 194.655 -		EImportSingleContact=0x0010,
 194.656 -		/** Increase the contact's access count when importing and exporting. */
 194.657 -		EIncreaseAccessCount=0x0020,
 194.658 -		/** Sets a contact item to the local time when importing. */
 194.659 -		ELocalTime=0x0040,
 194.660 -		/** Allows you to set a template to a contact item that does not exist. */
 194.661 -		ENullTemplateId=0x0080,
 194.662 -		/** For use by implementor of converter plug-in. */
 194.663 -		EConverterDefined1=0x0100,
 194.664 -		/** For use by implementor of converter plug-in. */
 194.665 -		EConverterDefined2=0x0200,
 194.666 -		/** For use by implementor of converter plug-in. */
 194.667 -		EConverterDefined3=0x0400,
 194.668 -		/** For use by implementor of converter plug-in. */
 194.669 -		EConverterDefined4=0x0800,
 194.670 -		/** For use by implementor of converter plug-in. */
 194.671 -		EConverterDefined5=0x1000,
 194.672 -		/** For use by implementor of converter plug-in. */
 194.673 -		EConverterDefined6=0x2000,
 194.674 -		/** For use by implementor of converter plug-in. */
 194.675 -		EConverterDefined7=0x4000,
 194.676 -		/** For use by implementor of converter plug-in. */
 194.677 -		EConverterDefined8=0x8000,
 194.678 -		/** Reserved for use by Symbian. */
 194.679 -		EConverterReserved1=0x00010000, 
 194.680 -		/** Reserved for use by Symbian. */
 194.681 -		EConverterReserved2=0x00020000, 
 194.682 -		/** Reserved for use by Symbian. */
 194.683 -		EConverterReserved3=0x00040000, 
 194.684 -		/** Reserved for use by Symbian. */
 194.685 -		EConverterReserved4=0x00080000, 
 194.686 -		/** Reserved for use by Symbian. */
 194.687 -		EConverterReserved5=0x00100000, 
 194.688 -		/** Reserved for use by Symbian. */
 194.689 -		EConverterReserved6=0x00200000, 
 194.690 -		/** Reserved for use by Symbian. */
 194.691 -		EConverterReserved7=0x00400000, 
 194.692 -		/** Reserved for use by Symbian. */
 194.693 -		EConverterReserved8=0x00800000, 
 194.694 -		/** Reserved for use by Symbian. */
 194.695 -		EConverterReserved9=0x01000000, 
 194.696 -		/** Reserved for use by Symbian. */
 194.697 -		EConverterReserved10=0x02000000, 
 194.698 -		/** Reserved for use by Symbian. */
 194.699 -		EConverterReserved11=0x04000000, 
 194.700 -		/** Reserved for use by Symbian. */
 194.701 -		EConverterReserved12=0x08000000, 
 194.702 -		/** Reserved for use by Symbian. */
 194.703 -		EConverterReserved13=0x10000000, 
 194.704 -		/** Reserved for use by Symbian. */
 194.705 -		EConverterReserved14=0x20000000, 
 194.706 -		/** Reserved for use by Symbian. */
 194.707 -		EConverterReserved15=0x40000000, 
 194.708 -		/** Reserved for use by Symbian. */
 194.709 -		EConverterReserved16=0x80000000 
 194.710 -  		};
 194.711 -	/** Specifies whether the database can be accessed from single or multiple threads. */
 194.712 -	enum TThreadAccess
 194.713 -		{
 194.714 -		/** Allows access to the contacts database from a single thread only. */
 194.715 -		ESingleThread,
 194.716 -		/** Allows for a multi-threaded program to access the contact database from multiple
 194.717 -		threads but note that the contacts model provides no synchronisation support
 194.718 -		for such use. */
 194.719 -		EMultiThread
 194.720 -		};
 194.721 -/**
 194.722 -@internalComponent
 194.723 -*/
 194.724 -	enum TSortDataSource
 194.725 -		{
 194.726 -		ENoOrder,
 194.727 -		EUsesIdentityTableOnly,
 194.728 -		EUsesAllTables,
 194.729 -		EIdentityTableNotUsed //Not used
 194.730 -		};
 194.731 -public:
 194.732 -	IMPORT_C static CContactDatabase* OpenL(TThreadAccess aAccess=ESingleThread);
 194.733 -	IMPORT_C static CContactDatabase* OpenL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
 194.734 -	IMPORT_C static CContactDatabase* CreateL(TThreadAccess aAccess=ESingleThread);
 194.735 -	IMPORT_C static CContactDatabase* CreateL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
 194.736 -	IMPORT_C static CContactDatabase* ReplaceL(TThreadAccess aAccess=ESingleThread);
 194.737 -	IMPORT_C static CContactDatabase* ReplaceL(const TDesC& aFileName,TThreadAccess aAccess=ESingleThread);
 194.738 -	// asynchronous Open
 194.739 -	IMPORT_C static CContactOpenOperation* Open(TRequestStatus& aStatus, TThreadAccess aAccess=ESingleThread);
 194.740 -	IMPORT_C static CContactOpenOperation* Open(const TDesC& aFileName, TRequestStatus& aStatus, TThreadAccess aAccess=ESingleThread);
 194.741 -	IMPORT_C static TBool DatabaseDrive(TDriveUnit &aDriveUnit);
 194.742 -	inline static TInt NullUidValue();
 194.743 -	IMPORT_C static void SetDatabaseDriveL(TDriveUnit aDriveUnit, TBool aCopy=ETrue);
 194.744 -	IMPORT_C static void GetDefaultNameL(TDes &aDes);
 194.745 -	IMPORT_C static void DeleteDefaultFileL();
 194.746 -	// database file mangement
 194.747 -	IMPORT_C static void DeleteDatabaseL(const TDesC& aFileName);
 194.748 -	IMPORT_C static CDesCArray* ListDatabasesL();
 194.749 -	IMPORT_C static CDesCArray* ListDatabasesL(TDriveUnit aDriveUnit);
 194.750 -	IMPORT_C static TBool DefaultContactDatabaseExistsL();
 194.751 -	IMPORT_C static TBool ContactDatabaseExistsL(const TDesC& aFileName);
 194.752 -	IMPORT_C ~CContactDatabase();
 194.753 -
 194.754 -	IMPORT_C void SetViewDefinitionL(CContactViewDef* aView);
 194.755 -	IMPORT_C void SetTextDefinitionL(CContactTextDef* aView);
 194.756 -	IMPORT_C const CContactTextDef* TextDefinition() const;
 194.757 -	IMPORT_C TInt CountL();
 194.758 -	IMPORT_C void SetDbViewContactType(const TUid aUid);
 194.759 -	IMPORT_C TUid GetDbViewContactType() const;
 194.760 -
 194.761 -
 194.762 -	IMPORT_C TContactItemId AddNewContactL(CContactItem& aContact);
 194.763 -
 194.764 -	IMPORT_C CContactItem* CreateContactGroupL(TBool aInTransaction=EFalse);
 194.765 -	IMPORT_C CContactItem* CreateContactGroupLC(TBool aInTransaction=EFalse);
 194.766 -	IMPORT_C CContactItem* CreateContactGroupL(const TDesC& aGroupLabel,TBool aInTransaction=EFalse);
 194.767 -	IMPORT_C CContactItem* CreateContactGroupLC(const TDesC& aGroupLabel,TBool aInTransaction=EFalse);
 194.768 -	IMPORT_C CContactItem* CreateContactCardTemplateL(const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
 194.769 -	IMPORT_C CContactItem* CreateContactCardTemplateLC(const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
 194.770 -	IMPORT_C CContactItem* CreateContactCardTemplateL(const CContactItem* aTemplate,const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
 194.771 -	IMPORT_C CContactItem* CreateContactCardTemplateLC(const CContactItem* aTemplate,const TDesC& aTemplateLabel,TBool aInTransaction=EFalse);
 194.772 -
 194.773 -	IMPORT_C CContactIdArray* GetCardTemplateIdListL() const;
 194.774 -	IMPORT_C CContactIdArray* GetGroupIdListL() const;
 194.775 -	IMPORT_C void AddContactToGroupL(TContactItemId aItemId, TContactItemId aGroupId);
 194.776 -	IMPORT_C void AddContactToGroupL(CContactItem& aItem, CContactItem& aGroup);
 194.777 -	IMPORT_C void AddContactToGroupL(TContactItemId aItemId, TContactItemId aGroupId,TBool aInTransaction);
 194.778 -	IMPORT_C void RemoveContactFromGroupL(CContactItem& aItem, CContactItem& aGroup);
 194.779 -	IMPORT_C void RemoveContactFromGroupL(TContactItemId aItemId, TContactItemId aGroupId);
 194.780 -	inline TInt GroupCount() const;
 194.781 -	inline TInt TemplateCount() const;
 194.782 -
 194.783 -	// speed dial functions
 194.784 -	IMPORT_C void SetFieldAsSpeedDialL(CContactItem& aItem, TInt aFieldIndex, TInt aSpeedDialPosition);
 194.785 -	IMPORT_C TContactItemId GetSpeedDialFieldL(TInt aSpeedDialPosition, TDes& aPhoneNumber);
 194.786 -	IMPORT_C void RemoveSpeedDialFieldL(TContactItemId aContactId, TInt aSpeedDialPosition);
 194.787 -
 194.788 -	// reading contacts from the db
 194.789 -	IMPORT_C CContactItem* ReadMinimalContactL(TContactItemId aContactId);
 194.790 -	IMPORT_C CContactItem* ReadMinimalContactLC(TContactItemId aContactId);
 194.791 -	IMPORT_C CContactItem* ReadContactL(TContactItemId aContactId);
 194.792 -	IMPORT_C CArrayPtr<CContactItem>* ReadContactAndAgentL(TContactItemId aContactId);
 194.793 -	IMPORT_C CContactItem* ReadContactL(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
 194.794 -	IMPORT_C CContactItem* ReadContactLC(TContactItemId aContactId);
 194.795 -	IMPORT_C CContactItem* ReadContactLC(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
 194.796 -	IMPORT_C void ReadContactTextDefL(const CContactItem &aItem, TDes &aResult);
 194.797 -	IMPORT_C void ReadContactTextDefL(const CContactItem &aItem, TDes &aResult,CContactTextDef* aTextDef);
 194.798 -	IMPORT_C void ReadContactTextDefL(TContactItemId aContactId, TDes &aResult);
 194.799 -	IMPORT_C void ReadContactTextDefL(TContactItemId aContactId, TDes &aResult,CContactTextDef* aTextDef);
 194.800 -	IMPORT_C CContactItem* OpenContactL(TContactItemId aContactId);
 194.801 -	IMPORT_C CContactItem* OpenContactL(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
 194.802 -	IMPORT_C CContactItem* OpenContactLX(TContactItemId aContactId);
 194.803 -	IMPORT_C CContactItem* OpenContactLX(TContactItemId aContactId,const CContactItemViewDef& aViewDef);
 194.804 -	IMPORT_C void CloseContactL(TContactItemId aContactId);
 194.805 -	IMPORT_C void CommitContactL(const CContactItem& aContact);
 194.806 -	IMPORT_C void DeleteContactL(TContactItemId aContactId);
 194.807 -	IMPORT_C void DeleteContactsL(const CContactIdArray& aContactIds);
 194.808 -  	IMPORT_C CArrayPtr<CContactItem>* ImportContactsL(const TUid& aFormat,RReadStream& aReadStream,TBool& aImportSuccessful,TInt aOption);
 194.809 -  	IMPORT_C void ExportSelectedContactsL(const TUid& aFormat,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOption,TBool aExportPrivateFields=ETrue);
 194.810 -  	IMPORT_C void ExportSelectedContactsL(const TUid& aFormat,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOption,const Versit::TVersitCharSet aCharSet, TBool aExportPrivateFields=ETrue);
 194.811 -	IMPORT_C void CompactL();
 194.812 -
 194.813 -	IMPORT_C CContactIdArray* FindLC(const TDesC& aText,const CContactItemFieldDef *aFieldDef);
 194.814 -	IMPORT_C CIdleFinder* FindAsyncL(const TDesC& aText,const CContactItemFieldDef *aFieldDef, MIdleFindObserver *aObserver);
 194.815 -	IMPORT_C CContactIdArray* FindInTextDefLC(const MDesCArray& aFindWords, const TCallBack &aWordParserCallback);
 194.816 -	IMPORT_C CContactIdArray* FindInTextDefLC(const MDesCArray& aFindWords,CContactTextDef* aTextDef, const TCallBack &aWordParserCallback);
 194.817 -	IMPORT_C CIdleFinder* FindInTextDefAsyncL(const MDesCArray& aFindWords, MIdleFindObserver *aObserver, const TCallBack &aWordParserCallback);
 194.818 -	IMPORT_C CIdleFinder* FindInTextDefAsyncL(const MDesCArray& aFindWords,const CContactTextDef* aTextDef, MIdleFindObserver *aObserver, const TCallBack &aWordParserCallback);
 194.819 -	IMPORT_C CContactIdArray* SortArrayL(const CContactIdArray* aIdArray, const CArrayFix<TSortPref>* aSortOrder);
 194.820 -	IMPORT_C CContactIdArray* SortArrayLC(const CContactIdArray* aIdArray, const CArrayFix<TSortPref>* aSortOrder);
 194.821 -	IMPORT_C void SortByTypeL(CArrayFix<TSortPref>* aSortOrder);
 194.822 -	IMPORT_C void SortL(CArrayFix<TSortPref>* aSortOrder);
 194.823 -	IMPORT_C void SortAsyncL(CArrayFix<TSortPref>* aSortOrder, TRequestStatus& aStatus);
 194.824 -	IMPORT_C void CancelAsyncSort();
 194.825 -	IMPORT_C void SortAsyncL(CArrayFix<TSortPref>* aSortOrder, TRequestStatus& aStatus, MContactSortObserver& aObserver);
 194.826 -
 194.827 -	IMPORT_C void SetOperationTimeOutL(const TInt aMicroSeconds) const;
 194.828 -  	IMPORT_C TPtrC FileUid();
 194.829 -	IMPORT_C CContactActiveCompress* CreateCompressorLC();
 194.830 -	IMPORT_C CContactActiveRecover* CreateRecoverLC();
 194.831 -	IMPORT_C void RecoverL();
 194.832 -	IMPORT_C TBool IsDamaged() const;
 194.833 -	IMPORT_C TBool CompressRequired();
 194.834 -	IMPORT_C void CloseTables();
 194.835 -	IMPORT_C void OpenTablesL();
 194.836 -
 194.837 -	//New Phone Matching function, takes a number as a TDesc& and will match from the right of the string
 194.838 -	//by the the number defined
 194.839 -	IMPORT_C CContactIdArray* MatchPhoneNumberL(const TDesC& aNumber, TInt aMatchLengthFromRight);
 194.840 -
 194.841 -
 194.842 -	IMPORT_C const CContactIdArray* SortedItemsL();
 194.843 -	IMPORT_C TContactItemId TemplateId() const;
 194.844 -	IMPORT_C CContactItem* CreateOwnCardLC();
 194.845 -	IMPORT_C CContactItem* CreateOwnCardL();
 194.846 -	IMPORT_C TContactItemId OwnCardId() const;
 194.847 -	IMPORT_C void SetOwnCardL(const CContactItem& aContact);
 194.848 -
 194.849 -//	Preferred Template
 194.850 -	IMPORT_C TContactItemId PrefTemplateId() const;
 194.851 -	IMPORT_C void SetPrefTemplateL(const CContactItem& aContact);
 194.852 -
 194.853 -//	Current item
 194.854 -	IMPORT_C void SetCurrentItem(const TContactItemId aContactId);
 194.855 -	IMPORT_C TContactItemId GetCurrentItem() const;
 194.856 -
 194.857 -//	Connectivity
 194.858 -	IMPORT_C void SetDateFormatTextL(const TDesC& aFormat);
 194.859 -	IMPORT_C void FilterDatabaseL(CCntFilter& aFilter);
 194.860 -	IMPORT_C CContactIdArray* ContactsChangedSinceL(const TTime& aTime);
 194.861 -	IMPORT_C TContactSyncId SetLastSyncDateL(const TTime& aSyncDate);
 194.862 -	IMPORT_C void SetLastSyncDateL(TContactSyncId aSyncId, const TTime& aSyncDate);
 194.863 -	IMPORT_C void GetLastSyncDateL(TContactSyncId aSyncId, TTime& aSyncDate);
 194.864 -
 194.865 -	IMPORT_C TInt FileSize() const;
 194.866 -	IMPORT_C TInt WastedSpaceInBytes() const;
 194.867 -	IMPORT_C TUint ConnectionId() const;
 194.868 -	IMPORT_C const CContentType &TemplateContentType(const CContactItemField &aField) const;
 194.869 -	IMPORT_C TVersion Version() const;
 194.870 -	IMPORT_C TInt64 MachineId() const;
 194.871 -	IMPORT_C TContactItemId ICCTemplateIdL();
 194.872 -	IMPORT_C TContactItemId ICCTemplateIdL(TUid aPhonebookUid);
 194.873 -	IMPORT_C TContactItemId PhonebookGroupIdL();
 194.874 -
 194.875 -public:	// For test code only
 194.876 -	IMPORT_C void DamageDatabaseL(TInt aSecretCode);	// Don't use this, you don't really want to damage your database do you?
 194.877 -	IMPORT_C void OverrideMachineUniqueId(TInt64 aMachineUniqueId);
 194.878 -	IMPORT_C TInt CntServerResourceCount();
 194.879 -	IMPORT_C void SetCntServerHeapFailure(TInt aTAllocFailType,TInt aRate);
 194.880 -	IMPORT_C CContactIdArray* DeletedContactsLC();
 194.881 -	IMPORT_C void ResetServerSpeedDialsL();
 194.882 -
 194.883 -public:	// For cnt server only
 194.884 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
 194.885 -			 void HandleDatabaseEventL(RDbNotifier::TEvent) {};
 194.886 -#endif
 194.887 -	IMPORT_C void HandleDatabaseEventL(const TContactDbObserverEvent &aEvent);
 194.888 -	IMPORT_C TInt GetCurrentDatabase(TDes& aDatabase) const;
 194.889 -	IMPORT_C TInt SetCurrentDatabase(const TDesC& aDatabase) const;
 194.890 -
 194.891 -	IMPORT_C void StoreSortOrderL();
 194.892 -	IMPORT_C void RestoreSortOrderL();
 194.893 -	IMPORT_C const CArrayFix<TSortPref>* SortOrder() const;
 194.894 -	//Contact Hint Field Access
 194.895 -
 194.896 -	/** Contact view filter flags.
 194.897 -
 194.898 -	These flags define the bits that can be set in filtered views (CContactFilteredView)
 194.899 -	and in the filter passed to CContactDatabase::ContactMatchesHintFieldL() for
 194.900 -	comparing against contact view items (CViewContact).
 194.901 -
 194.902 -	If the item's bit field and the view's filter have the same settings for the
 194.903 -	CContactDatabase::EHome and CContactDatabase::EWork flags and any of the other
 194.904 -	flags are set in both, a match occurs and the item is included in the view.
 194.905 -
 194.906 -	Filters only apply to non-hidden contact fields with content. */
 194.907 -	enum TContactViewFilter
 194.908 -		{
 194.909 -		/** The view is unfiltered; it includes all contact items. */
 194.910 -		EUnfiltered	=0x00000000,
 194.911 -		/** The filter includes items that have an email address. */
 194.912 -		EMailable	=0x00000001,
 194.913 -		/** The filter includes items that have a mobile telephone number. */
 194.914 -		ESmsable	=0x00000002,
 194.915 -		/** The filter includes items that have a landline telephone number. */
 194.916 -		ELandLine	=0x00000004,
 194.917 -		/** The filter includes items that have a fax number. */
 194.918 -		EFaxable	=0x00000008,
 194.919 -		/** The filter includes items that are phonable. (All items with any of the above
 194.920 -		three flags set also have this flag set). */
 194.921 -		EPhonable   =0x00000010,
 194.922 -		/** The filter excludes items without a work telephone number or email address. */
 194.923 -		EWork		=0x00000020,
 194.924 -		/** The filter excludes items without a home telephone number or email address. */
 194.925 -		EHome		=0x00000040,
 194.926 -		/** The filter includes items that have a non-empty ring tone field (a ring tone
 194.927 -		that is associated with the  item). */
 194.928 -		ERingTone	=0x00000080,
 194.929 -		/** The filter includes items that have a non-empty voice dial field (a voice
 194.930 -		recording associated with a telephone number field in the  item). */
 194.931 -		EVoiceDial	=0x00000100,
 194.932 -		/** The filter includes items that have any non empty instant messaging address field. */
 194.933 -		EIMAddress  =0x00000200,
 194.934 -		/** The filter includes items that have a non empty Wireless Village ID field.
 194.935 -		An item with this flag set will also have the EIMAddress flag set. */
 194.936 -		EWirelessVillage = 0x00000400,
 194.937 -		/** Reserved filters for future use. */
 194.938 -		ECustomFilter1	 = 0x00000800,
 194.939 -		/** Reserved filters for future use. */
 194.940 -		ECustomFilter2	 = 0x00001000,
 194.941 -		/** Reserved filters for future use. */
 194.942 -		ECustomFilter3	 = 0x00002000,
 194.943 -		/** Reserved filters for future use. */
 194.944 -		ECustomFilter4	 = 0x00004000
 194.945 -		};
 194.946 -
 194.947 -	IMPORT_C TBool ContactMatchesHintFieldL(TInt aBitWiseFilter,TContactItemId aContactId);
 194.948 -public: // for vCard converter only
 194.949 -	IMPORT_C void DatabaseBeginLC(TBool aIsInTransaction);
 194.950 -	IMPORT_C void DatabaseCommitLP(TBool aIsInTransaction);
 194.951 -  	IMPORT_C CContactItem *UpdateContactLC(TContactItemId aContactId,CContactItem* aNewContact);
 194.952 -	IMPORT_C TContactItemId doAddNewContactL(CContactItem& aContact,TBool aIsTemplate,TBool aIsInTransaction);
 194.953 -	IMPORT_C void doCommitContactL(const CContactItem& aContact,TBool aIsInTransaction, TBool aSendChangedEvent);
 194.954 -	IMPORT_C TContactItemId ContactIdByGuidL(const TDesC& aGuid);
 194.955 -	IMPORT_C void doDeleteContactL(TContactItemId aContactId, TBool aIsInTransaction, TBool aSendChangedEvent, TBool aDecAccessCount=EFalse);
 194.956 -	IMPORT_C CContactItemViewDef* AllFieldsView();
 194.957 -public: // For Symbian use only
 194.958 -	IMPORT_C void DatabaseBeginL(TBool aIsInTransaction);
 194.959 -	IMPORT_C void DatabaseCommitL(TBool aIsInTransaction);
 194.960 -	IMPORT_C void DatabaseRollback();
 194.961 -	IMPORT_C void SetSortedItemsList(CContactIdArray* aSortedItems, CArrayFix<TSortPref>* aSortOrder);
 194.962 -	IMPORT_C CContactIdArray* UnfiledContactsL();
 194.963 -	IMPORT_C static void RecreateSystemTemplateL(const TDesC& aFileName);
 194.964 -public:	// For Contacts Lock Server use only
 194.965 -	IMPORT_C static CContactDatabase* LockServerConnectL(const TDesC& aFileName);
 194.966 -	IMPORT_C static CContactDatabase* LockServerConnectL(const TDesC& aFileName, TInt aOperation);
 194.967 -	IMPORT_C TInt LockServerCallBackL(TUint aServerOperation);
 194.968 -	IMPORT_C void LockServerCleanup();
 194.969 -public:
 194.970 -	IMPORT_C void ExportSelectedContactsL(const TUid& aFormat, const CContactIdArray& aSelectedContactIds, RWriteStream& aWriteStream, TInt aOption, const TInt64 aContactFieldFilter, MConverterCallBack* aCallback, const TVCardVersion aVersion, const TBool aExportTel, Versit::TVersitCharSet aCharSet = Versit::EUTF8CharSet, TBool aExportPrivateFields = ETrue);
 194.971 -private:
 194.972 -	//for cntiter
 194.973 -	TInt ContactPosL(TContactItemId aContactId); 
 194.974 -	TInt DoGotoL(TContactItemId aContactId);
 194.975 -	
 194.976 -	void DoReadContactTextDefL(const CContactItemFieldSet* aFieldSet,TDes& aResult,CContactTextDef* aTextDef);
 194.977 -	CContactItem* OpenNoMergeLCX(TContactItemId aContactId);
 194.978 -
 194.979 -	void FetchGroupAndTemplateListsL();
 194.980 -
 194.981 -public:
 194.982 -	void CancelNotifyRequestL();
 194.983 -	TBool IsICCSynchronisedL();
 194.984 -
 194.985 -	//for LocalView
 194.986 -	void AddObserverL(MContactDbObserver& aChangeNotifier);
 194.987 -	void RemoveObserver(const MContactDbObserver& aChangeNotifier);
 194.988 -
 194.989 -	void OpenDatabaseAsyncL(TRequestStatus& aStatus, const TDesC& aFileName = KNullDesC);
 194.990 -	static void CleanupLastLockedContact(TAny *aDatabase);
 194.991 -
 194.992 -private:
 194.993 -	CContactConverter& CContactDatabase::ConverterL(const TUid& aFormat);
 194.994 -	CContactConverter& CContactDatabase::ConverterL(const TUid& aFormat, const TInt64 aContactFieldFilter, MConverterCallBack* aCallback, const TVCardVersion aVersion,const TBool aExportTel);
 194.995 -	static void CleanupDatabaseRollback(TAny *aDatabase);
 194.996 -
 194.997 -	CContactIdArray* SortLC(const CArrayFix<TSortPref>* aSortOrder, const CContactIdArray* aIdArray);
 194.998 -	TBool CheckType(TUid aUid) const;
 194.999 -	void SortDuplicatesL(const CArrayFix<TSortPref>& aSortOrder,CSortArray& aList,TInt aPos);
194.1000 -	void SortDuplicatesL(const CArrayFix<TSortPref>& aSortOrder,CSortArray& aList,
194.1001 -								TInt aIndex,TInt aStartPos,TInt aEndPos);
194.1002 -	TBool AddContactToSortListL(TContactItemId aReqId, TContactItemId& aActualId,CBase* aItems, TUid& aFieldType, TBool aHasSortOrder);
194.1003 -	void RemoveFromSortArray(TContactItemId aContactId);
194.1004 -	void HandleDbObserverEventGroupDeletedL(const TContactItemId aContactId);
194.1005 -	void RemoveFromGroupIds(const TContactItemId aContactId);
194.1006 -
194.1007 -public:
194.1008 -	static void CleanupTableCancel(TAny *aTable);
194.1009 -/** A text buffer of KTextFieldMinimalLength used during sorting and searching of contacts  */
194.1010 -	typedef TBuf<KTextFieldMinimalLength> TTextFieldMinimal;
194.1011 -	static TUid SpeedDialFieldUidFromSpeedDialPosition(TInt aSpeedDialPosition);
194.1012 -	void HandleDiskSpaceEvent(TInt aDrive);
194.1013 -
194.1014 -	/** State of database connection
194.1015 -	*/
194.1016 -	enum TDbConnState
194.1017 -		{
194.1018 -		/** Database is open, connection is available for use. */
194.1019 -		EDbConnectionOpen = 0,
194.1020 -		/** Initial state. */
194.1021 -		EDbConnectionNotReady,
194.1022 -		/** Asynchronous Open failed. */
194.1023 -		EDbConnectionFailed,
194.1024 -		/** A Rollback has occurred and a Recover is required now. */
194.1025 -		EDbConnectionRecoverRequired,
194.1026 -		/** Write access is locked during backup. */
194.1027 -		EDbConnectionWriteLockedForBackup,
194.1028 -		/** The database has been closed whilst a Restore is in progress. */
194.1029 -		EDbConnectionClosedForRestore,
194.1030 -		/** Restore is in progress need to close after current transaction. */
194.1031 -		EDbConnectionNeedToCloseForRestore,
194.1032 -		};
194.1033 -	/** Currently unused    */
194.1034 -	enum TDirection {EAsc,EDesc}; //unused
194.1035 -	void SetDbConnectionState(TDbConnState aDbConnectionState);
194.1036 -private:
194.1037 -	void CheckDbConnForWriteL() const;
194.1038 -	void CheckDbConnForReadL() const;
194.1039 -	void CheckDbConnForRecoverL() const;
194.1040 -	void CheckTemplateField(CContactItem& aCnt);
194.1041 -	static void ValidateDatabaseNameL(const TParse& aParseName);
194.1042 -	void StartAsyncActivityL();
194.1043 -	void EndAsyncActivityL();
194.1044 -	TBool DatabaseReadyL() const;
194.1045 -	enum TSvrSessionType //unused
194.1046 -		{  
194.1047 -		// Server Session is persistent, for Open(L), CreateL or ReplaceL
194.1048 -		ESvrSessionPersistent,
194.1049 -		// Server Session is temporary, for a simple static API
194.1050 -		ESvrSessionTemporary,
194.1051 -		// Session is from the Contacts Lock Server
194.1052 -		ESvrSessionFromLockServer,
194.1053 -		};
194.1054 -private: // objec construction/destruction
194.1055 -
194.1056 -	CContactDatabase();
194.1057 -	static CContactDatabase* NewLC();
194.1058 -	void ConstructL();
194.1059 -	void CreateViewDefL();
194.1060 -	MLplPersistenceLayerFactory* FactoryL();
194.1061 -
194.1062 -private:
194.1063 -	CContactItem* doCreateContactGroupLC(const TDesC& aGroupLabel = KNullDesC);
194.1064 -	void AddCntToOpenedGroupL(TContactItemId aItemId, CContactItem& aGroup);
194.1065 -	void ReadTemplateIds();
194.1066 -	void AddToTemplateListL(const TContactItemId aNewTemplateId);
194.1067 -	void RemoveFromTemplateList(const TContactItemId aOldTemplateId);
194.1068 -	TBool SystemTemplateFieldsValid(const CContactItem& aContact);
194.1069 -	void RespondToEventL(const TContactDbObserverEventType aEventType, const TContactItemId aContactId);
194.1070 -	void HandleDbObserverEventGroupOrContactChangedL(const TContactItemId aContactId);
194.1071 -	void HandleDbObserverEventGroupOrContactAddedL(const TContactDbObserverEventType aEventType, const TContactItemId aContactId);
194.1072 -   	TBool CheckSortError(TInt aError);
194.1073 -   	TInt NextExistingL(TInt aIndex);
194.1074 -   	TInt PreviousExistingL(TInt aIndex);
194.1075 -   	void ReSortL(CArrayFix<TSortPref>* aSortOrder);
194.1076 -   	void InsertInSortArray(const CContactItem& aContact);
194.1077 -   	void MoveInSortArray(const CContactItem& aContact);
194.1078 -   	void InsertInSortArrayL(const CContactItem& aContact);
194.1079 -   	void MoveInSortArrayL(const CContactItem& aContact);
194.1080 -	TInt NewSortIndexL(const CContactItem& aContact,TInt aStartPos,TInt aEndPos);
194.1081 -	TInt CompareSortFieldsL(const CContactItem& aContact);
194.1082 -   	void ConstructTableUsageFlagsFromSortOrderL(TInt& aFlags);
194.1083 -   	void LoadSyncPluginL();
194.1084 -   	void DeleteContactSendEventActionL(TContactItemId aContactId, TCntSendEventAction aActionType);
194.1085 -
194.1086 -private:
194.1087 -	// Member variables
194.1088 -	RCntModel*					iCntSvr;			//was RDbNamedDatabase iDatabase;
194.1089 -	CProxyFactory*				iProxyFactory;		//was RDbs iDbsSession;
194.1090 -	TDbConnState				iDbConnectionState;	//was CContactClientSession* iContactClientSession;
194.1091 -	CDataBaseChangeObserver*	iDataBaseObserver;	//was CPrivateDbChangeNotifier* iDbChangeNotifier;
194.1092 -	CCntIdleSorter*				iIdleSorter;		//was CPrivateSvrSessionManager* iServerSessionManager;
194.1093 -	CPrivConverter*				iConv;				//was TContactItemId iLastLockedContactId;
194.1094 -	TBool						iTablesOpen;		//was TContactItemId iTemplateId;
194.1095 -	CContactItemViewDef*		iAllFieldsView;		//was TContactItemId iOwnCardId;
194.1096 -	TUid						iDbViewContactType;	//used to select which contact type to sort / search on
194.1097 -	
194.1098 -	//These two members are accessed via the inline functions!
194.1099 -	CContactIdArray* iCardTemplateIds;
194.1100 -	CContactIdArray* iGroupIds;
194.1101 -
194.1102 -	CCntTemplateCache* iTemplateCache; //was CContactTables* iItemTable;
194.1103 -	CContactTextDef* iTextDef;		//remains
194.1104 -	CContactIdArray* iSortedItems;	//remains
194.1105 -	CContactViewDef* iView;			//remains
194.1106 -	
194.1107 -	// Used in SetLastSyncDateL() and GetLastSyncDateL()
194.1108 -	TTime iSyncDate;	//was TInt64 iMachineUniqueId;
194.1109 -	TCollationMethod iCollateMethod; //remains: used for sorting contacts
194.1110 -
194.1111 -	TInt iAsyncActivityCount;
194.1112 -	CContactSynchroniser* iContactSynchroniser; //a handle to the synchroniser plugin
194.1113 -	CArrayFix<TSortPref>* iSortOrder; // holds a sort order passed into SortL(), as in cntmodelv1, 
194.1114 -									  // for delayed deletion to maintain backwards compatibility
194.1115 -	};
194.1116 -
194.1117 -
194.1118 -class CContactChangeNotifier : public CBase
194.1119 -/** Receives events reporting changes to a contact database.
194.1120 -
194.1121 -After the change notifier has been created, it notifies the specified
194.1122 -observer whenever a change takes place to the database.
194.1123 -
194.1124 -@publishedAll
194.1125 -@released
194.1126 -*/
194.1127 -	{
194.1128 -public:
194.1129 -	IMPORT_C ~CContactChangeNotifier();
194.1130 -	IMPORT_C static CContactChangeNotifier* NewL(CContactDatabase& aDatabase, MContactDbObserver *aObserver);
194.1131 -private:
194.1132 -	CContactChangeNotifier(CContactDatabase& aDatabase, MContactDbObserver *aObserver);
194.1133 -	void ConstructL();
194.1134 -private:
194.1135 -	CContactDatabase &iDatabase;
194.1136 -	MContactDbObserver* iObserver;
194.1137 -	};
194.1138 -
194.1139 -
194.1140 -/** The UID of the default vCard converter implemented by an ECom plugin. */
194.1141 -#define KUidEComCntVCardConverterDefaultImplementation  0x102035F9
194.1142 -/** The UID of the default vCard converter plugin implementation. This
194.1143 -implementation is independent of the plugin framework used. */
194.1144 -#define KUidVCardConvDefaultImpl 	KUidEComCntVCardConverterDefaultImplementation
194.1145 -
194.1146 -/** The UID of the vCard converter ECom plugin interface. */
194.1147 -const TUid KUidEcomCntVCardConverterInterface = {0x102035F7};
194.1148 -
194.1149 -/** The UID of the phone number parser ECom plugin interface. */
194.1150 -const TUid KUidEcomCntPhoneNumberParserInterface = {0x102035FA};
194.1151 -
194.1152 -/** The UID of PBAP vCard Converter plugin Implementation.
194.1153 -@prototype
194.1154 -@internalTechnology
194.1155 -*/
194.1156 -#define KUidPBAPVCardConvImpl 0xA00015C1
194.1157 -
194.1158 -class TPluginParameters
194.1159 -/**
194.1160 -Class used to pack the extra arguments required for a PBAP conveter,
194.1161 -PBAP client provides these arguments using overloaded CContactDatabase::ExportSelectedContacts.
194.1162 -@prototype
194.1163 -@internalComponent
194.1164 -*/
194.1165 -{
194.1166 -public:
194.1167 -	TPluginParameters(TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel);
194.1168 -	TInt64 GetFilter()const;
194.1169 -	MConverterCallBack* GetCallback()const;
194.1170 -	TVCardVersion GetExportVersion()const;
194.1171 -	TBool IsExportTel()const;
194.1172 -private:
194.1173 -	TInt64 iFilter;
194.1174 -	MConverterCallBack* iCallback;
194.1175 -	TVCardVersion iVersion;
194.1176 -	TBool iExportTel;
194.1177 -};
194.1178 -
194.1179 -inline TBool TPluginParameters::IsExportTel()const
194.1180 -	{
194.1181 -	return iExportTel;
194.1182 -	}
194.1183 -inline TInt64 TPluginParameters::GetFilter()const
194.1184 -	{
194.1185 -	return iFilter;
194.1186 -	}
194.1187 -
194.1188 -inline MConverterCallBack* TPluginParameters::GetCallback()const
194.1189 -	{
194.1190 -	return iCallback;
194.1191 -	}
194.1192 -
194.1193 -inline TVCardVersion TPluginParameters::GetExportVersion()const
194.1194 -	{
194.1195 -	return iVersion;
194.1196 -	}
194.1197 -
194.1198 -inline	TPluginParameters::TPluginParameters(TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel):iFilter(aContactFieldFilter), iCallback(aCallback), iVersion(aVersion), iExportTel(aExportTel)
194.1199 -	{
194.1200 -	}
194.1201 -
194.1202 -class CContactConverter : public CBase
194.1203 -/** Provides functionality to import and export vCards.
194.1204 -One or more vCards can be imported from a read stream (the vCards are converted 
194.1205 -into contact items and added to the database). Also, contact items can be exported as vCards.
194.1206 -
194.1207 -@publishedPartner
194.1208 -@released
194.1209 -*/
194.1210 -	{
194.1211 -public:
194.1212 -	virtual CArrayPtr<CContactItem>*  ImportL(CContactDatabase& aDb,RReadStream& aReadStream,TBool& aImportSuccessful,TInt aOptions,TBool aImportSingle)=0;
194.1213 -	virtual void ExportL(CContactDatabase& aDb,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOptions,const Versit::TVersitCharSet aCharSet,TBool aExportPrivateFields, TInt aCommitNumber=10)=0;
194.1214 -	};
194.1215 -
194.1216 -
194.1217 -class CContactEcomConverter : public CContactConverter
194.1218 -/**
194.1219 -It provides Ecom Framework based facilities to resolve and load the appropriate implementations at run-time.
194.1220 -The framework supplies a default resolver for selecting appropriate implementations.
194.1221 -@publishedPartner
194.1222 -@released
194.1223 -*/
194.1224 -	{
194.1225 -public:
194.1226 -	static CContactEcomConverter* NewL(TUid aImplementationUid);
194.1227 -	static CContactEcomConverter* NewL(TUid aImplementationUid, TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel);
194.1228 -	inline virtual ~CContactEcomConverter();
194.1229 -private:
194.1230 -	TUid iDtor_ID_Key;
194.1231 -	};
194.1232 -
194.1233 -inline CContactEcomConverter* CContactEcomConverter::NewL(TUid aImplementationUid)
194.1234 -/** Allocates and instantiates an interface implementation to satisfy the specified interface.
194.1235 -@param aImplementationUid Denotes the type of implemetation that needs to be loaded.
194.1236 -@return A pointer to a newly allocated and initialised object of type CContactEcomConverter.   */
194.1237 -	
194.1238 -{
194.1239 -	TAny* ptr = REComSession::CreateImplementationL(aImplementationUid,
194.1240 -													_FOFF(CContactEcomConverter,
194.1241 -														  iDtor_ID_Key));
194.1242 -	return reinterpret_cast<CContactEcomConverter*>(ptr);
194.1243 -}
194.1244 -
194.1245 -inline CContactEcomConverter* CContactEcomConverter::NewL(TUid aImplementationUid, TInt64 aContactFieldFilter, MConverterCallBack* aCallback, TVCardVersion aVersion, TBool aExportTel)
194.1246 -/** Allocates and instantiates an interface implementation for PBAP export.
194.1247 -@param aImplementationUid Denotes the type of implemetation that needs to be loaded.
194.1248 -@param aContactFieldFilter Specifies contact fields to be exported.
194.1249 -@param aCallback Callback to client for providing intra-contact properties.
194.1250 -@param aVersion Denotes the vCard version for contact export.
194.1251 -@return A pointer to a newly allocated and initialised object of type CContactEcomConverter.   */
194.1252 -	
194.1253 -{	
194.1254 -	TPluginParameters partr(aContactFieldFilter,aCallback,aVersion,aExportTel);
194.1255 -	
194.1256 -	TAny* ptr = REComSession::CreateImplementationL(aImplementationUid,
194.1257 -													_FOFF(CContactEcomConverter,
194.1258 -													  iDtor_ID_Key), &partr);
194.1259 -	return reinterpret_cast<CContactEcomConverter*>(ptr);
194.1260 -}
194.1261 -
194.1262 -inline CContactEcomConverter::~CContactEcomConverter()
194.1263 -/** The destruction of the interface implementation referred to by iDtor_ID_Key */
194.1264 -	{
194.1265 -	REComSession::DestroyedImplementation(iDtor_ID_Key);
194.1266 -	}
194.1267 -
194.1268 -
194.1269 -class CContactPhoneNumberParser : public CBase
194.1270 -/** Provides functionality to extract the real phone number from a contact's phone number field.
194.1271 -@publishedPartner
194.1272 -@released
194.1273 -*/
194.1274 -	{
194.1275 -public:
194.1276 -	virtual void ExtractRawNumber(const TDesC& aTextualNumber, TDes& aRawNumber)=0;
194.1277 -	};
194.1278 -
194.1279 -
194.1280 -class CContactEcomPhoneNumberParser : public CContactPhoneNumberParser
194.1281 -/** It provides Ecom Framework based facilities to resolve and load the appropriate implementations at run-time.
194.1282 -The framework supplies a default resolver for selecting appropriate implementations.
194.1283 -@publishedPartner
194.1284 -@released
194.1285 -*/
194.1286 -	{
194.1287 -public:
194.1288 -	static CContactEcomPhoneNumberParser* NewL(TUid aImplementationUid);
194.1289 -	inline virtual ~CContactEcomPhoneNumberParser();
194.1290 -private:
194.1291 -	TUid iDtor_ID_Key;
194.1292 -	};
194.1293 -
194.1294 -inline CContactEcomPhoneNumberParser* CContactEcomPhoneNumberParser::NewL(TUid aImplementationUid)
194.1295 -/** Allocates and Instantiates an interface implementation to satisfy the specified interface. 
194.1296 -@param aImplementationUid denotes the type of implemetation that need to be loaded.
194.1297 -@return A pointer to a newly allocated and initialised object of type CContactEcomPhoneNumberParser.   */
194.1298 -	{
194.1299 -	TAny* ptr = REComSession::CreateImplementationL(aImplementationUid,
194.1300 -													_FOFF(CContactEcomPhoneNumberParser,
194.1301 -														  iDtor_ID_Key));
194.1302 -	return reinterpret_cast<CContactEcomPhoneNumberParser*>(ptr);
194.1303 -	}
194.1304 -
194.1305 -inline CContactEcomPhoneNumberParser::~CContactEcomPhoneNumberParser()
194.1306 -/** The destruction of the interface implementation referred to by iDtor_ID_Key */
194.1307 -	{
194.1308 -	REComSession::DestroyedImplementation(iDtor_ID_Key);
194.1309 -	}
194.1310 -
194.1311 -
194.1312 -inline TInt CContactDatabase::TemplateCount() const
194.1313 -/** Gets the number of contact card templates that exist in the database.
194.1314 -This does not include the system template.
194.1315 -@deprecated
194.1316 -@return The number of contact card templates that exist in the database. */
194.1317 -	{ return iCardTemplateIds->Count(); }
194.1318 -
194.1319 -inline TInt CContactDatabase::GroupCount() const
194.1320 -/** Gets the number of groups that exist in the database.
194.1321 -@deprecated
194.1322 -@return The number of groups that exist in the database. */
194.1323 -	{ return iGroupIds->Count(); }
194.1324 -
194.1325 -inline TInt CContactDatabase::NullUidValue()
194.1326 -/** Gets the NULL contact ID value.
194.1327 -
194.1328 -@return KNullContactId. */
194.1329 -	{ return KNullContactId; }
194.1330 -
194.1331 -inline TUid CContactItemViewDef::operator[](TInt aIndex) const
194.1332 -/** Gets the field type located at a specified index position within the field type array.
194.1333 -
194.1334 -@param aIndex The position of the field type in the array, relative to zero. It
194.1335 -must be non-negative and less than the number of objects in the array otherwise the
194.1336 -function raises a panic.
194.1337 -@return The field type located at index aIndex within the array (this is equivalent to a
194.1338 -TFieldType). */
194.1339 -    { return iFieldTypes[aIndex]; }
194.1340 -
194.1341 -inline TInt CContactItemViewDef::Count() const
194.1342 -/** Gets the number of field types in the view definition.
194.1343 -
194.1344 -@return The number of field types in the view definition. */
194.1345 -    { return iFieldTypes.Count(); }
194.1346 -
194.1347 -inline void CContactItemViewDef::Reset()
194.1348 -/** Deletes all field types from the view definition's field type array. */
194.1349 -    { iFieldTypes.Reset(); }
194.1350 -
194.1351 -inline CContactItemViewDef::TUse CContactItemViewDef::Use() const
194.1352 -/** Gets the view definition's use.
194.1353 -
194.1354 -@return The current TUse setting. */
194.1355 -	{ return iUse; }
194.1356 -
194.1357 -inline void CContactItemViewDef::SetUse(CContactItemViewDef::TUse aUse)
194.1358 -/** Sets the view definition's use.
194.1359 -
194.1360 -@param aUse The new TUse setting. */
194.1361 -	{ iUse=aUse; }
194.1362 -
194.1363 -inline CContactItemViewDef::TMode CContactItemViewDef::Mode() const
194.1364 -/** Gets the view definition's mode.
194.1365 -
194.1366 -@return The current TMode setting. */
194.1367 -	{ return iMode; }
194.1368 -
194.1369 -inline void CContactItemViewDef::SetMode(CContactItemViewDef::TMode aMode)
194.1370 -/** Sets the view definition's mode.
194.1371 -
194.1372 -@param aMode The new TMode setting. */
194.1373 -	{ iMode=aMode; }
194.1374 -
194.1375 -inline CContactDatabase::TSortPref::TSortPref()
194.1376 -	: iOrder(EAsc), iFieldType(KNullUid)
194.1377 -/** Constructs a TSortPref object. The order is initialised to EAsc and the field
194.1378 -type to KNullUid.
194.1379 -@deprecated
194.1380 -*/
194.1381 -	{}
194.1382 -
194.1383 -inline CContactDatabase::TSortPref::TSortPref(TFieldType aFieldType,TOrder aOrder)
194.1384 -	: iOrder(aOrder), iFieldType(aFieldType)
194.1385 -/** Constructs the TSortPref object with a field type and an order.
194.1386 -@param aFieldType Specifies the field type to sort on.
194.1387 -@param aOrder Specifies the sort order.
194.1388 -@deprecated
194.1389 -*/
194.1390 -	{}
194.1391 -
194.1392 -
194.1393 -/** A class that manages the asynchronous open operation for a CContactDatabase.
194.1394 -
194.1395 -The object can be deleted before the asynchronous open completes. This will set
194.1396 -the state of the client supplied TRequestStatus to KErrCancel.
194.1397 -
194.1398 -When the client supplied TRequestStatus is completed with KErrNone the TakeDatabase()
194.1399 -method is called to pass ownership of the open database to the client.
194.1400 -
194.1401 -@publishedAll
194.1402 -@released
194.1403 -
194.1404 -@see CContactDatabase::OpenL()
194.1405 -*/
194.1406 -class CContactOpenOperation : private CActive
194.1407 -	{
194.1408 -public:
194.1409 -	IMPORT_C CContactDatabase* TakeDatabase();
194.1410 -	IMPORT_C ~CContactOpenOperation();
194.1411 -
194.1412 -	static CContactOpenOperation* NewL(TRequestStatus& aPtrStatus);
194.1413 -	static CContactOpenOperation* NewL(const TDesC& aFileName, TRequestStatus& aPtrStatus);
194.1414 -
194.1415 -private:
194.1416 -	// from CActive (for BC reasons)
194.1417 -	void RunL();
194.1418 -	TInt RunError(TInt aError);
194.1419 -	void DoCancel();
194.1420 -
194.1421 -	CContactOpenOperation (TRequestStatus& aClientStatus);
194.1422 -	void ConstructL		  (const TDesC& aFileName = KNullDesC);
194.1423 -
194.1424 -private:
194.1425 -	TRequestStatus*  	iClientStatus;
194.1426 -	CContactDatabase*	iContactDatabase;
194.1427 -	};
194.1428 -
194.1429 -
194.1430 -#endif //__CNTDB_H__
   195.1 --- a/epoc32/include/cntdbobs.h	Tue Mar 16 16:12:26 2010 +0000
   195.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   195.3 @@ -1,150 +0,0 @@
   195.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   195.5 -// All rights reserved.
   195.6 -// This component and the accompanying materials are made available
   195.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   195.8 -// which accompanies this distribution, and is available
   195.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  195.10 -//
  195.11 -// Initial Contributors:
  195.12 -// Nokia Corporation - initial contribution.
  195.13 -//
  195.14 -// Contributors:
  195.15 -//
  195.16 -// Description:
  195.17 -//
  195.18 -
  195.19 -#if !defined(__CNTDBOBS_H__)
  195.20 -#define __CNTDBOBS_H__
  195.21 -
  195.22 -#if !defined(__E32DEF_H__)
  195.23 -#include <e32def.h>
  195.24 -#endif
  195.25 -
  195.26 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ ) && !defined __D32DBMS_H__ 
  195.27 -#include <d32dbms.h>
  195.28 -#else
  195.29 -#include <s32std.h>
  195.30 -#include <f32file.h>
  195.31 -#endif 
  195.32 -
  195.33 -#include <cntdef.h> //for tcontactitemid 
  195.34 -
  195.35 -/** Change event type. For events which update, delete or add a contact item, the 
  195.36 -ID of the item affected is provided in the TContactDbObserverEvent struct.
  195.37 -@publishedAll
  195.38 -@released
  195.39 - */
  195.40 -enum TContactDbObserverEventType
  195.41 -	{
  195.42 -	/** Null event type. */
  195.43 -	EContactDbObserverEventNull,
  195.44 -	/** Not currently used. */
  195.45 -	EContactDbObserverEventUnused,
  195.46 -	/** A contact item (not a template, group or own card) has been changed. */
  195.47 -	EContactDbObserverEventContactChanged,
  195.48 -	/** A contact item (not a template, group or own card) has been deleted. */
  195.49 -	EContactDbObserverEventContactDeleted,
  195.50 -	/** A contact item (not a template or group) has been added. */
  195.51 -	EContactDbObserverEventContactAdded,
  195.52 -	/** Unknown change event type. */
  195.53 -	EContactDbObserverEventUnknownChanges,
  195.54 -	/** Recover from a damaged database. */
  195.55 -	EContactDbObserverEventRecover,
  195.56 -	/** Rollback from a change to the database. */
  195.57 -	EContactDbObserverEventRollback,
  195.58 -	/** Database tables closed. */
  195.59 -	EContactDbObserverEventTablesClosed,
  195.60 -	/** Database tables opened. */
  195.61 -	EContactDbObserverEventTablesOpened,
  195.62 -	/** A contact card template has changed. */
  195.63 -	EContactDbObserverEventTemplateChanged,
  195.64 -	/** A contact card template has been deleted. */
  195.65 -	EContactDbObserverEventTemplateDeleted, 
  195.66 -	/** A contact card template has been added. */
  195.67 -	EContactDbObserverEventTemplateAdded,
  195.68 -	/** The database's current item has been deleted. */
  195.69 -	EContactDbObserverEventCurrentItemDeleted,
  195.70 -	/** The database's current item has changed. */
  195.71 -	EContactDbObserverEventCurrentItemChanged,
  195.72 -	/** The database's own card has changed. */
  195.73 -	EContactDbObserverEventOwnCardChanged,
  195.74 -	/** The database's preferred template has been set. (See CContactDatabase::SetPrefTemplateL()). */
  195.75 -	EContactDbObserverEventPreferredTemplateChanged,
  195.76 -	/** An own card has been deleted from the database. */
  195.77 -	EContactDbObserverEventOwnCardDeleted,
  195.78 -	/** A contact item group has been added. */
  195.79 -	EContactDbObserverEventGroupAdded,
  195.80 -	/** A contact item group has been updated. */
  195.81 -	EContactDbObserverEventGroupChanged,
  195.82 -	/** A contact item group has been deleted from the database. */
  195.83 -	EContactDbObserverEventGroupDeleted,
  195.84 -	/** The current database has changed. */
  195.85 -	EContactDbObserverEventCurrentDatabaseChanged,
  195.86 -	/** The phone number assigned to one of the speed dial positions 
  195.87 -	has been replaced, removed or modified.*/
  195.88 -	EContactDbObserverEventSpeedDialsChanged, 
  195.89 -	/** Not currently used. */
  195.90 -	EContactDbObserverEventSortOrderChanged,
  195.91 -	/** Contacts DB about to be backed up  */
  195.92 -	EContactDbObserverEventBackupBeginning,
  195.93 -	/** Contacts DB about to be restored */
  195.94 -	EContactDbObserverEventRestoreBeginning,
  195.95 -	/** The backup/restore operation has completed. */
  195.96 -	EContactDbObserverEventBackupRestoreCompleted,
  195.97 -	/** The restore operation has completed but the database could not be opened. */
  195.98 -	EContactDbObserverEventRestoreBadDatabase,
  195.99 -	/** Database has been compressed. */
 195.100 -	EContactDbObserverEventCompress
 195.101 -	};
 195.102 -
 195.103 -struct TContactDbObserverEvent
 195.104 -/** Contact database change event details. These include the type of change event 
 195.105 -and the ID of the contact item affected by the change, if relevant.
 195.106 -
 195.107 -An object of this type is passed to a contact database's change observer, 
 195.108 -see MContactDbObserver::HandleDatabaseEventL(). 
 195.109 -@publishedAll
 195.110 -@released
 195.111 -*/
 195.112 -	{
 195.113 -	/** The change event type. */
 195.114 -	TContactDbObserverEventType iType;
 195.115 -	/** The ID of the contact item affected. */
 195.116 -	TContactItemId iContactId;
 195.117 -	/** Identifies which connection to the contacts server generated the event. Use 
 195.118 -	CContactDatabase::ConnectionId() to get the ID of the current connection.
 195.119 -	
 195.120 -	Set to zero if the event has no meaningful connection ID. */
 195.121 -	TUint iConnectionId;
 195.122 -	};
 195.123 -
 195.124 -class MContactDbObserver
 195.125 -/** The interface for an observer that handles changes to a contact database.
 195.126 -
 195.127 -It specifies a single pure virtual function which should be implemented by 
 195.128 -the observer class to test the type of the change event (see the TContactDbObserverEventType 
 195.129 -enum) and handle it.
 195.130 -
 195.131 -There is no need for the observer class to explicitly test for all possible 
 195.132 -event types - the event is for information only and event types which are of no interest 
 195.133 -to the observer class can safely be ignored.
 195.134 -
 195.135 -The change event type (TContactDbObserverEventType) may be augmented 
 195.136 -in future releases with additional values.
 195.137 -
 195.138 -A contact database observer pointer is passed to the NewL() function for the 
 195.139 -CContactChangeNotifier class. 
 195.140 -@publishedAll
 195.141 -@released
 195.142 -*/
 195.143 -	{
 195.144 -public:
 195.145 -	/** Tests the contact database observer event type and handles it. The ID of a 
 195.146 -	contact affected by the change event, if relevant, can be retrieved via TContactDbObserverEvent::iContactId.
 195.147 -	
 195.148 -	@param aEvent Provides information about the change event. */
 195.149 -	virtual void HandleDatabaseEventL(TContactDbObserverEvent aEvent)=0;
 195.150 -	};
 195.151 -
 195.152 -
 195.153 -#endif
   196.1 --- a/epoc32/include/cntdef.h	Tue Mar 16 16:12:26 2010 +0000
   196.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   196.3 @@ -1,1402 +0,0 @@
   196.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   196.5 -// All rights reserved.
   196.6 -// This component and the accompanying materials are made available
   196.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   196.8 -// which accompanies this distribution, and is available
   196.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  196.10 -//
  196.11 -// Initial Contributors:
  196.12 -// Nokia Corporation - initial contribution.
  196.13 -//
  196.14 -// Contributors:
  196.15 -//
  196.16 -// Description:
  196.17 -//
  196.18 -
  196.19 -#ifndef __CNTDEF_H__
  196.20 -#define __CNTDEF_H__
  196.21 -
  196.22 -#include <e32base.h>
  196.23 -
  196.24 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
  196.25 -#include <d32dbms.h>
  196.26 -#else
  196.27 -#include <s32std.h>
  196.28 -#include <f32file.h>
  196.29 -#endif
  196.30 -
  196.31 -#include <cntdef.hrh>
  196.32 -
  196.33 -
  196.34 -// Constants
  196.35 -
  196.36 -/**
  196.37 -@internalTechnology
  196.38 -@released
  196.39 -*/
  196.40 -const TInt KSpeedDialPhoneLength = 64;
  196.41 -
  196.42 -/**
  196.43 -@internalTechnology
  196.44 -@released
  196.45 -*/
  196.46 -const TInt KCntMinSpeedDialIndex = 1;
  196.47 -
  196.48 -/**
  196.49 -@internalTechnology
  196.50 -@released
  196.51 -*/
  196.52 -const TInt KCntMaxSpeedDialIndex = 9;
  196.53 -
  196.54 -/**
  196.55 -Phone Match Length
  196.56 -@internalTechnology
  196.57 -@released
  196.58 -*/
  196.59 -const TInt KMaxPhoneMatchLength = 15;
  196.60 -
  196.61 -/**
  196.62 -@internalTechnology
  196.63 -@released
  196.64 -*/
  196.65 -const TInt KLowerSevenDigits = 7;
  196.66 -
  196.67 -/**
  196.68 -Used for firstname, lastname, companyname, secondname and their
  196.69 -associated pronunciation fields and e-mail address
  196.70 -@internalTechnology
  196.71 -@released
  196.72 -*/
  196.73 -const TInt KCntMaxTextFieldLength=255;
  196.74 -
  196.75 -// Type definitions
  196.76 -
  196.77 -/**
  196.78 -@internalTechnology
  196.79 -@released
  196.80 -*/
  196.81 -typedef TBuf<KSpeedDialPhoneLength> TSpeedDialPhoneNumber;
  196.82 -
  196.83 -/** Contact item ID. These are used to uniquely identify contact items within a
  196.84 -contacts database. Contact items include contact cards, contact card templates,
  196.85 -contact card groups and own cards. Contact item IDs are also used to uniquely
  196.86 -identify agents.
  196.87 -@publishedAll
  196.88 -@released
  196.89 -*/
  196.90 -typedef TInt32 TContactItemId;
  196.91 -
  196.92 -/** A UID which identifies a contact item field's type. The possible values are
  196.93 -defined as UIDs in cntdef.h.
  196.94 -@publishedAll
  196.95 -@released
  196.96 -*/
  196.97 -typedef TUid TFieldType;
  196.98 -
  196.99 -/** A contact item field's storage type.
 196.100 -
 196.101 -This is an unsigned integer value which identifies the type of data stored
 196.102 -in a contact item field. The possible values are defined in cntdef.hrh as:
 196.103 -
 196.104 -- KStorageTypeText (used by CContactTextFields)
 196.105 -
 196.106 -- KStorageTypeStore (used by CContactStoreFields)
 196.107 -
 196.108 -- KStorageTypeContactItemId (used by CContactAgentFields)
 196.109 -
 196.110 -- KStorageTypeDateTime (used by CContactDateFields)
 196.111 -
 196.112 -Note that numeric fields are not supported. Numbers (e.g. telephone
 196.113 -numbers) are stored in the database using text fields.
 196.114 -@publishedAll
 196.115 -@released
 196.116 -*/
 196.117 -typedef TUint TStorageType;
 196.118 -
 196.119 -/** Machine identifier.
 196.120 -
 196.121 -This is used when synchronising the contact database to identify the
 196.122 -machine with which the database has been synchronised.
 196.123 -@see CContactDatabase::SetLastSyncDateL()
 196.124 -@see CContactDatabase::GetLastSyncDateL().
 196.125 -@publishedAll
 196.126 -@released
 196.127 -*/
 196.128 -typedef TInt32 TContactSyncId;
 196.129 -
 196.130 -/** Stores the value of KUidContactsDbFile as an integer.
 196.131 -@publishedAll
 196.132 -@released
 196.133 -*/
 196.134 -const TInt KUidContactsDbFileValue=0x100065FF;
 196.135 -/**
 196.136 -The third UID of the contacts database file, c:\\system\\data\\contacts.cdb.
 196.137 -This should be used by file recogniser implementations.
 196.138 -@publishedAll
 196.139 -@released
 196.140 -*/
 196.141 -const TUid KUidContactsDbFile={KUidContactsDbFileValue};
 196.142 -
 196.143 -
 196.144 -/** NULL contact item ID. Indicates that no contact item is present.
 196.145 -@publishedAll
 196.146 -@released
 196.147 -*/
 196.148 -const TContactItemId KNullContactId=-1;
 196.149 -/**
 196.150 -The ID of the system template.
 196.151 -@publishedAll
 196.152 -@released
 196.153 -*/
 196.154 -const TContactItemId KGoldenTemplateId=0;
 196.155 -
 196.156 -/** Identifies a vCard that has been pasted from the clipboard into the Contacts application.
 196.157 -@publishedAll
 196.158 -@released
 196.159 -*/
 196.160 -const TUid KClipboardUidTypeVCard={0x100038f6};
 196.161 -
 196.162 -/** Identifies a contact card (CContactCard).
 196.163 -@publishedAll
 196.164 -@released
 196.165 -*/
 196.166 -const TUid KUidContactCard={KUidContactCardValue};
 196.167 -/** Identifies a contact group (CContactGroup).
 196.168 -@publishedAll
 196.169 -@released
 196.170 -*/
 196.171 -const TUid KUidContactGroup={KUidContactGroupValue};
 196.172 -/** Identifies the system template (CContactTemplate).
 196.173 -@publishedAll
 196.174 -@released
 196.175 -*/
 196.176 -const TUid KUidContactTemplate={KUidContactTemplateValue};
 196.177 -/** Identifies an own card (CContactOwnCard).
 196.178 -@publishedAll
 196.179 -@released
 196.180 -*/
 196.181 -const TUid KUidContactOwnCard={KUidContactOwnCardValue}; 
 196.182 -/** Identifies a non-system template (CContactCardTemplate). 
 196.183 -@publishedAll
 196.184 -@released
 196.185 -*/
 196.186 -const TUid KUidContactCardTemplate={KUidContactCardTemplateValue};
 196.187 -/** The UID that identifies ICC entries. These are a special type of
 196.188 -contact item that are stored in the SIM (ICC) card on the phone.
 196.189 -
 196.190 -@publishedAll
 196.191 -@released
 196.192 -*/
 196.193 -const TUid KUidContactICCEntry={KUidContactICCEntryValue};
 196.194 -
 196.195 -/** Identifies any CContactItem-derived class (all of the above).
 196.196 -@publishedAll
 196.197 -@released
 196.198 -*/
 196.199 -const TUid KUidContactItem={0x10005673};
 196.200 -/** This identifies the CContactCard and CContactGroup classes.
 196.201 -It is used internally by the contacts model.
 196.202 -@publishedAll
 196.203 -@released
 196.204 -*/
 196.205 -const TUid KUidContactCardOrGroup={0x10005F71};
 196.206 -
 196.207 -
 196.208 -/*
 196.209 - * Speed-dial UIDs.
 196.210 - * These are used to indicate the speed-dial position for a particular field.
 196.211 - * They are added to the content type of a phone number field set as a
 196.212 - * speed-dial using CContactDatabase::SetFieldAsSpeedDialL().
 196.213 - */
 196.214 -/** Field maps to the first speed dial position.
 196.215 -@publishedAll
 196.216 -@released
 196.217 -*/
 196.218 -const TUid KUidSpeedDialOne={KUidSpeedDialOneValue};
 196.219 -/** Field maps to the second speed dial position.
 196.220 -@publishedAll
 196.221 -@released
 196.222 -*/
 196.223 -const TUid KUidSpeedDialTwo={KUidSpeedDialTwoValue};
 196.224 -/** Field maps to the third speed dial position.
 196.225 -@publishedAll
 196.226 -@released
 196.227 -*/
 196.228 -const TUid KUidSpeedDialThree={KUidSpeedDialThreeValue};
 196.229 -/** Field maps to the fourth speed dial position.
 196.230 -@publishedAll
 196.231 -@released
 196.232 -*/
 196.233 -const TUid KUidSpeedDialFour={KUidSpeedDialFourValue};
 196.234 -/** Field maps to the fifth speed dial position.
 196.235 -@publishedAll
 196.236 -@released
 196.237 -*/
 196.238 -const TUid KUidSpeedDialFive={KUidSpeedDialFiveValue};
 196.239 -/** Field maps to the sixth speed dial position.
 196.240 -@publishedAll
 196.241 -@released
 196.242 -*/
 196.243 -const TUid KUidSpeedDialSix={KUidSpeedDialSixValue};
 196.244 -/** Field maps to the seventh speed dial position.
 196.245 -@publishedAll
 196.246 -@released
 196.247 -*/
 196.248 -const TUid KUidSpeedDialSeven={KUidSpeedDialSevenValue};
 196.249 -/** Field maps to the eighth speed dial position.
 196.250 -@publishedAll
 196.251 -@released
 196.252 -*/
 196.253 -const TUid KUidSpeedDialEight={KUidSpeedDialEightValue};
 196.254 -/** Field maps to the ninth speed dial position.
 196.255 -@publishedAll
 196.256 -@released
 196.257 -*/
 196.258 -const TUid KUidSpeedDialNine={KUidSpeedDialNineValue};
 196.259 -
 196.260 -/*
 196.261 - * Contact field type UIDs.
 196.262 - */
 196.263 -/** Address field.
 196.264 -@publishedAll
 196.265 -@released
 196.266 -*/
 196.267 -const TUid KUidContactFieldAddress={KUidContactFieldAddressValue};
 196.268 -/** Post office box field.
 196.269 -@publishedAll
 196.270 -@released
 196.271 -*/
 196.272 -const TUid KUidContactFieldPostOffice={KUidContactFieldPostOfficeValue};
 196.273 -/** Extended address field.
 196.274 -@publishedAll
 196.275 -@released
 196.276 -*/
 196.277 -const TUid KUidContactFieldExtendedAddress={KUidContactFieldExtendedAddressValue};
 196.278 -/** Locality field.
 196.279 -@publishedAll
 196.280 -@released
 196.281 -*/
 196.282 -const TUid KUidContactFieldLocality={KUidContactFieldLocalityValue};
 196.283 -/** Region field.
 196.284 -@publishedAll
 196.285 -@released
 196.286 -*/
 196.287 -const TUid KUidContactFieldRegion={KUidContactFieldRegionValue};
 196.288 -/** Post code field.
 196.289 -@publishedAll
 196.290 -@released
 196.291 -*/
 196.292 -const TUid KUidContactFieldPostcode={KUidContactFieldPostCodeValue};
 196.293 -/** Country field.
 196.294 -@publishedAll
 196.295 -@released
 196.296 -*/
 196.297 -const TUid KUidContactFieldCountry={KUidContactFieldCountryValue};
 196.298 -
 196.299 -/** Company name field.
 196.300 -@publishedAll
 196.301 -@released
 196.302 -*/
 196.303 -const TUid KUidContactFieldCompanyName={KUidContactFieldCompanyNameValue};
 196.304 -/** Company name pronunciation field.
 196.305 -@publishedAll
 196.306 -@released
 196.307 -*/
 196.308 -const TUid KUidContactFieldCompanyNamePronunciation={KUidContactFieldCompanyNamePronunciationValue};
 196.309 -/** Phone number field.
 196.310 -@publishedAll
 196.311 -@released
 196.312 -*/
 196.313 -const TUid KUidContactFieldPhoneNumber={KUidContactFieldPhoneNumberValue};
 196.314 -/** Given name field.
 196.315 -@publishedAll
 196.316 -@released
 196.317 -*/
 196.318 -const TUid KUidContactFieldGivenName={KUidContactFieldGivenNameValue};
 196.319 -/** Family name field.
 196.320 -@publishedAll
 196.321 -@released
 196.322 -*/
 196.323 -const TUid KUidContactFieldFamilyName={KUidContactFieldFamilyNameValue};
 196.324 -/** Given name pronunciation field.
 196.325 -@publishedAll
 196.326 -@released
 196.327 -*/
 196.328 -const TUid KUidContactFieldGivenNamePronunciation={KUidContactFieldGivenNamePronunciationValue};
 196.329 -/** Family name pronunciation field.
 196.330 -@publishedAll
 196.331 -@released
 196.332 -*/
 196.333 -const TUid KUidContactFieldFamilyNamePronunciation={KUidContactFieldFamilyNamePronunciationValue};
 196.334 -/** Middle name field.
 196.335 -@publishedAll
 196.336 -@released
 196.337 -*/
 196.338 -const TUid KUidContactFieldAdditionalName={KUidContactFieldAdditionalNameValue};
 196.339 -/** Name suffix field.
 196.340 -@publishedAll
 196.341 -@released
 196.342 -*/
 196.343 -const TUid KUidContactFieldSuffixName={KUidContactFieldSuffixNameValue};
 196.344 -/** Name prefix field.
 196.345 -@publishedAll
 196.346 -@released
 196.347 -*/
 196.348 -const TUid KUidContactFieldPrefixName={KUidContactFieldPrefixNameValue};
 196.349 -/** Hidden field.
 196.350 -@publishedAll
 196.351 -@released
 196.352 -*/
 196.353 -const TUid KUidContactFieldHidden={KUidContactFieldHiddenValue};
 196.354 -/** Hidden field.
 196.355 -@publishedAll
 196.356 -@released
 196.357 -*/
 196.358 -const TUid KUidContactFieldDefinedText={KUidContactFieldDefinedTextValue};
 196.359 -/** Email address field.
 196.360 -@publishedAll
 196.361 -@released
 196.362 -*/
 196.363 -const TUid KUidContactFieldEMail={KUidContactFieldEMailValue};
 196.364 -/** Telephone number used for a messaging service.
 196.365 -@publishedAll
 196.366 -@released
 196.367 -*/
 196.368 -const TUid KUidContactFieldMsg={KUidContactFieldMsgValue};
 196.369 -/** Telephone number used for SMS messages.
 196.370 -@publishedAll
 196.371 -@released
 196.372 -*/
 196.373 -const TUid KUidContactFieldSms={KUidContactFieldSmsValue};
 196.374 -/** Fax number field.
 196.375 -@publishedAll
 196.376 -@released
 196.377 -*/
 196.378 -const TUid KUidContactFieldFax={KUidContactFieldFaxValue};
 196.379 -/** Comment field.
 196.380 -@publishedAll
 196.381 -@released
 196.382 -*/
 196.383 -const TUid KUidContactFieldNote={KUidContactFieldNoteValue};
 196.384 -/** Comment field.
 196.385 -@publishedAll
 196.386 -@released
 196.387 -*/
 196.388 -const TUid KUidContactStorageInline={KUidContactFieldStorageInlineValue};
 196.389 -/** Birthday field.
 196.390 -@publishedAll
 196.391 -@released
 196.392 -*/
 196.393 -const TUid KUidContactFieldBirthday={KUidContactFieldBirthdayValue};
 196.394 -/** URL field.
 196.395 -@publishedAll
 196.396 -@released
 196.397 -*/
 196.398 -const TUid KUidContactFieldUrl={KUidContactFieldUrlValue};
 196.399 -/** Template label field (a label which is used to refer to a template, for instance "work
 196.400 -template", "personal template").
 196.401 -@publishedAll
 196.402 -@released
 196.403 -*/
 196.404 -const TUid KUidContactFieldTemplateLabel={KUidContactFieldTemplateLabelValue};
 196.405 -/** A picture field, for instance a logo or a photo.
 196.406 -@publishedAll
 196.407 -@released
 196.408 -*/
 196.409 -const TUid KUidContactFieldPicture={KUidContactFieldPictureValue};
 196.410 -/** Used internally by the contacts model.
 196.411 -@publishedAll
 196.412 -@released
 196.413 -*/
 196.414 -const TUid KUidContactFieldDTMF={KUidContactFieldDTMFValue};
 196.415 -/** Identifies a ring tone field. This is a ring tone that is associated with a contact item.
 196.416 -@publishedAll
 196.417 -@released
 196.418 -*/
 196.419 -const TUid KUidContactFieldRingTone={KUidContactFieldRingToneValue};
 196.420 -/** Identifies a job title field.
 196.421 -@publishedAll
 196.422 -@released
 196.423 -*/
 196.424 -const TUid KUidContactFieldJobTitle={KUidContactFieldJobTitleValue};
 196.425 -/** Identifies an instant messaging address field.
 196.426 -@publishedAll
 196.427 -@released
 196.428 -*/
 196.429 -const TUid KUidContactFieldIMAddress = { KUidContactFieldIMAddressValue };
 196.430 -/** Identifies a USIM second name field. This field is provided to
 196.431 -store an additional representation of the contact's name, such as a
 196.432 -nickname or a different representation. An example could be a Japanese
 196.433 -contact which has a romanised name and an alternative representation using
 196.434 -kanji (pictogram) characters.
 196.435 -@publishedAll
 196.436 -@released
 196.437 -*/
 196.438 -const TUid KUidContactFieldSecondName = { KUidContactFieldSecondNameValue };
 196.439 -/** Identifies a SIP identity field.
 196.440 -@publishedAll
 196.441 -@released
 196.442 -*/
 196.443 -const TUid KUidContactFieldSIPID = { KUidContactFieldSIPIDValue };
 196.444 -/** Identifies a Assistant field.
 196.445 -@publishedAll
 196.446 -@released
 196.447 -*/
 196.448 -const TUid KUidContactFieldAssistant = { KUidContactFieldAssistantValue };
 196.449 -/** Identifies an Anniversary field.
 196.450 -@publishedAll
 196.451 -@released
 196.452 -*/
 196.453 -const TUid KUidContactFieldAnniversary = { KUidContactFieldAnniversaryValue };
 196.454 -/** Identifies a Spouse field.
 196.455 -@publishedAll
 196.456 -@released
 196.457 -*/
 196.458 -const TUid KUidContactFieldSpouse = { KUidContactFieldSpouseValue };
 196.459 -/** Identifies a Children field.
 196.460 -@publishedAll
 196.461 -@released
 196.462 -*/
 196.463 -const TUid KUidContactFieldChildren = { KUidContactFieldChildrenValue };
 196.464 -/** Identifies a Class field.
 196.465 -@publishedAll
 196.466 -@released
 196.467 -*/
 196.468 -const TUid KUidContactFieldClass = { KUidContactFieldClassValue };
 196.469 -/** Identifies a Department field.
 196.470 -@publishedAll
 196.471 -@released
 196.472 -*/
 196.473 -const TUid KUidContactFieldDepartmentName = { KUidContactFieldDepartmentNameValue };
 196.474 -/*
 196.475 -* CContactICCEntry (Telephony specific) UIDs.
 196.476 - */
 196.477 -/** Identifies an ICC slot contact field in the contact item.
 196.478 -@publishedAll
 196.479 -@released
 196.480 -*/
 196.481 -const TUid KUidContactFieldICCSlot={KUidContactFieldICCSlotValue};
 196.482 -/** Identifies an ICC Phonebook contact field in the contact item.
 196.483 -@publishedAll
 196.484 -@released
 196.485 -*/
 196.486 -const TUid KUidContactFieldICCPhonebook={KUidContactFieldICCPhonebookValue};
 196.487 -/** Identifies an ICC Group contact field in the contact item.
 196.488 -@publishedAll
 196.489 -@released
 196.490 -*/
 196.491 -const TUid KUidContactFieldICCGroup={KUidContactFieldICCGroupValue};
 196.492 -
 196.493 -/** Identifies a voice dial field. This is a voice recording associated with a telephone number
 196.494 -field in the item.
 196.495 -@publishedAll
 196.496 -@released
 196.497 -*/
 196.498 -const TUid KUidContactsVoiceDialField={KUidContactsVoiceDialFieldValue};
 196.499 -
 196.500 -/** Indicates no field present.
 196.501 -@publishedAll
 196.502 -@released
 196.503 -*/
 196.504 -const TUid KUidContactFieldNone={KUidContactFieldNoneValue};
 196.505 -/** Used in field type matching to indicate that all field types match.
 196.506 -@publishedAll
 196.507 -@released
 196.508 -*/
 196.509 -const TInt32 KUidContactFieldMatchAllValue=0x110FFF22;
 196.510 -const TUid KUidContactFieldMatchAll={KUidContactFieldMatchAllValue};
 196.511 -
 196.512 -/*
 196.513 - * Contact field type vCard mappings.
 196.514 - * The vCard mapping describes how the field should be handled by the
 196.515 - * vCard import/export code.
 196.516 - */
 196.517 -/** Field type maps to the Post office box field in an ADR vCard property value.
 196.518 -@publishedAll
 196.519 -@released
 196.520 -*/
 196.521 -const TUid KUidContactFieldVCardMapPOSTOFFICE={KIntContactFieldVCardMapPOSTOFFICE};
 196.522 -/** Field type maps to the Extended address field in an ADR vCard property value.
 196.523 -@publishedAll
 196.524 -@released
 196.525 -*/
 196.526 -const TUid KUidContactFieldVCardMapEXTENDEDADR={KIntContactFieldVCardMapEXTENDEDADR};
 196.527 -/** Field type maps to vCard property ADR.
 196.528 -@publishedAll
 196.529 -@released
 196.530 -*/
 196.531 -const TUid KUidContactFieldVCardMapADR={KIntContactFieldVCardMapADR};
 196.532 -/** Field type maps to the Locality field in an ADR vCard property value.
 196.533 -@publishedAll
 196.534 -@released
 196.535 -*/
 196.536 -const TUid KUidContactFieldVCardMapLOCALITY={KIntContactFieldVCardMapLOCALITY};
 196.537 -/** Field type maps to the Region field in an ADR vCard property value.
 196.538 -@publishedAll
 196.539 -@released
 196.540 -*/
 196.541 -const TUid KUidContactFieldVCardMapREGION={KIntContactFieldVCardMapREGION};
 196.542 -/** Field type maps to the Postcode field in an ADR vCard property value.
 196.543 -@publishedAll
 196.544 -@released
 196.545 -*/
 196.546 -const TUid KUidContactFieldVCardMapPOSTCODE={KIntContactFieldVCardMapPOSTCODE};
 196.547 -/** Field type maps to the Country field in an ADR vCard property value.
 196.548 -@publishedAll
 196.549 -@released
 196.550 -*/
 196.551 -const TUid KUidContactFieldVCardMapCOUNTRY={KIntContactFieldVCardMapCOUNTRY};
 196.552 -
 196.553 -/** Field type maps to vCard property AGENT.
 196.554 -@publishedAll
 196.555 -@released
 196.556 -*/
 196.557 -const TUid KUidContactFieldVCardMapAGENT={KIntContactFieldVCardMapAGENT};
 196.558 -/** Field type maps to vCard property BDAY.
 196.559 -@publishedAll
 196.560 -@released
 196.561 -*/
 196.562 -const TUid KUidContactFieldVCardMapBDAY={KIntContactFieldVCardMapBDAY};
 196.563 -/** Field type maps to vCard property EMAIL.
 196.564 -@publishedAll
 196.565 -@released
 196.566 -*/
 196.567 -const TUid KUidContactFieldVCardMapEMAILINTERNET={KIntContactFieldVCardMapEMAILINTERNET};
 196.568 -/** Field type maps to vCard property GEO.
 196.569 -@publishedAll
 196.570 -@released
 196.571 -*/
 196.572 -const TUid KUidContactFieldVCardMapGEO={KIntContactFieldVCardMapGEO};
 196.573 -/** Field type maps to vCard property LABEL.
 196.574 -@publishedAll
 196.575 -@released
 196.576 -*/
 196.577 -const TUid KUidContactFieldVCardMapLABEL={KIntContactFieldVCardMapLABEL};
 196.578 -/** Field type maps to vCard property LOGO.
 196.579 -@publishedAll
 196.580 -@released
 196.581 -*/
 196.582 -const TUid KUidContactFieldVCardMapLOGO={KIntContactFieldVCardMapLOGO};
 196.583 -/** Field type maps to vCard property MAILER.
 196.584 -@publishedAll
 196.585 -@released
 196.586 -*/
 196.587 -const TUid KUidContactFieldVCardMapMAILER={KIntContactFieldVCardMapMAILER};
 196.588 -/** Field type maps to vCard property NOTE.
 196.589 -@publishedAll
 196.590 -@released
 196.591 -*/
 196.592 -const TUid KUidContactFieldVCardMapNOTE={KIntContactFieldVCardMapNOTE};
 196.593 -/** Field type maps to vCard property ORG.
 196.594 -@publishedAll
 196.595 -@released
 196.596 -*/
 196.597 -const TUid KUidContactFieldVCardMapORG={KIntContactFieldVCardMapORG};
 196.598 -/** Field type maps to vCard X-IRMC-ORG parameter of property SOUND.
 196.599 -@publishedAll
 196.600 -@released
 196.601 -*/
 196.602 -const TUid KUidContactFieldVCardMapORGPronunciation={KIntContactFieldVCardMapORGPronunciation};
 196.603 -/** Field type maps to vCard property PHOTO.
 196.604 -@publishedAll
 196.605 -@released
 196.606 -*/
 196.607 -const TUid KUidContactFieldVCardMapPHOTO={KIntContactFieldVCardMapPHOTO};
 196.608 -/** Field type maps to vCard property ROLE.
 196.609 -@publishedAll
 196.610 -@released
 196.611 -*/
 196.612 -const TUid KUidContactFieldVCardMapROLE={KIntContactFieldVCardMapROLE};
 196.613 -/** Field type maps to vCard property SOUND.
 196.614 -@publishedAll
 196.615 -@released
 196.616 -*/
 196.617 -const TUid KUidContactFieldVCardMapSOUND={KIntContactFieldVCardMapSOUND};
 196.618 -/** Field type maps to vCard property TEL.
 196.619 -@publishedAll
 196.620 -@released
 196.621 -*/
 196.622 -const TUid KUidContactFieldVCardMapTEL={KIntContactFieldVCardMapTEL};
 196.623 -/** Field type maps to vCard property parameter FAX.
 196.624 -@publishedAll
 196.625 -@released
 196.626 -*/
 196.627 -const TUid KUidContactFieldVCardMapTELFAX={KIntContactFieldVCardMapTELFAX};
 196.628 -/** Field type maps to vCard property TITLE.
 196.629 -@publishedAll
 196.630 -@released
 196.631 -*/
 196.632 -const TUid KUidContactFieldVCardMapTITLE={KIntContactFieldVCardMapTITLE};
 196.633 -/** Field type maps to vCard property URL.
 196.634 -@publishedAll
 196.635 -@released
 196.636 -*/
 196.637 -const TUid KUidContactFieldVCardMapURL={KIntContactFieldVCardMapURL};
 196.638 -/** Field maps to the vCard property N (name). Must be used in conjunction with
 196.639 -a name-related field type (e.g. KUidContactFieldGivenName) to form the given
 196.640 -name field mapping.
 196.641 -@publishedAll
 196.642 -@released
 196.643 -*/
 196.644 -const TUid KUidContactFieldVCardMapUnusedN={KIntContactFieldVCardMapUnusedN};
 196.645 -/** Field type maps to vCard property FN (the display name).
 196.646 -@publishedAll
 196.647 -@released
 196.648 -*/
 196.649 -const TUid KUidContactFieldVCardMapUnusedFN={KIntContactFieldVCardMapUnusedFN};
 196.650 -/** Mapping between the vCard property and field type is not required.
 196.651 -@publishedAll
 196.652 -@released
 196.653 -*/
 196.654 -const TUid KUidContactFieldVCardMapNotRequired={KIntContactFieldVCardMapNotRequired};
 196.655 -/** Unknown mapping between a field type and a vCard extension property.
 196.656 -@publishedAll
 196.657 -@released
 196.658 -*/
 196.659 -const TUid KUidContactFieldVCardMapUnknownXDash={KIntContactFieldVCardMapUnknownXDash};
 196.660 -/** Unknown mapping between field type and non-extension vCard property.
 196.661 -@publishedAll
 196.662 -@released
 196.663 -*/
 196.664 -const TUid KUidContactFieldVCardMapUnknown={KIntContactFieldVCardMapUnknown};
 196.665 -/** Field type maps to vCard property UID.
 196.666 -@publishedAll
 196.667 -@released
 196.668 -*/
 196.669 -const TUid KUidContactFieldVCardMapUID={KIntContactFieldVCardMapUID};
 196.670 -/** Field type maps to vCard property parameter WORK.
 196.671 -@publishedAll
 196.672 -@released
 196.673 -*/
 196.674 -const TUid KUidContactFieldVCardMapWORK={KIntContactFieldVCardMapWORK};
 196.675 -/** Field type maps to vCard property parameter HOME.
 196.676 -@publishedAll
 196.677 -@released
 196.678 -*/
 196.679 -const TUid KUidContactFieldVCardMapHOME={KIntContactFieldVCardMapHOME};
 196.680 -/** Field type maps to vCard property parameter MSG.
 196.681 -@publishedAll
 196.682 -@released
 196.683 -*/
 196.684 -const TUid KUidContactFieldVCardMapMSG={KIntContactFieldVCardMapMSG};
 196.685 -/** Field type maps to vCard property parameter VOICE.
 196.686 -@publishedAll
 196.687 -@released
 196.688 -*/
 196.689 -const TUid KUidContactFieldVCardMapVOICE={KIntContactFieldVCardMapVOICE};
 196.690 -/** Field type maps to vCard property parameter FAX.
 196.691 -@publishedAll
 196.692 -@released
 196.693 -*/
 196.694 -const TUid KUidContactFieldVCardMapFAX={KIntContactFieldVCardMapFAX};
 196.695 -/** Field type maps to vCard property parameter PREF.
 196.696 -@publishedAll
 196.697 -@released
 196.698 -*/
 196.699 -const TUid KUidContactFieldVCardMapPREF={KIntContactFieldVCardMapPREF};
 196.700 -/** Field type maps to vCard property parameter CELL.
 196.701 -@publishedAll
 196.702 -@released
 196.703 -*/
 196.704 -const TUid KUidContactFieldVCardMapCELL={KIntContactFieldVCardMapCELL};
 196.705 -/** Field type maps to vCard property parameter PAGER.
 196.706 -@publishedAll
 196.707 -@released
 196.708 -*/
 196.709 -const TUid KUidContactFieldVCardMapPAGER={KIntContactFieldVCardMapPAGER};
 196.710 -/** Field type maps to vCard property parameter BBS.
 196.711 -@publishedAll
 196.712 -@released
 196.713 -*/
 196.714 -const TUid KUidContactFieldVCardMapBBS={KIntContactFieldVCardMapBBS};
 196.715 -/** Field type maps to vCard property parameter MODEM.
 196.716 -@publishedAll
 196.717 -@released
 196.718 -*/
 196.719 -const TUid KUidContactFieldVCardMapMODEM={KIntContactFieldVCardMapMODEM};
 196.720 -/** Field type maps to vCard property parameter CAR.
 196.721 -@publishedAll
 196.722 -@released
 196.723 -*/
 196.724 -const TUid KUidContactFieldVCardMapCAR={KIntContactFieldVCardMapCAR};
 196.725 -/** Field type maps to vCard property parameter ISDN.
 196.726 -@publishedAll
 196.727 -@released
 196.728 -*/
 196.729 -const TUid KUidContactFieldVCardMapISDN={KIntContactFieldVCardMapISDN};
 196.730 -/** Field type maps to vCard property parameter VIDEO.
 196.731 -@publishedAll
 196.732 -@released
 196.733 -*/
 196.734 -const TUid KUidContactFieldVCardMapVIDEO={KIntContactFieldVCardMapVIDEO};
 196.735 -/** Field type maps to vCard property parameter DOM.
 196.736 -@publishedAll
 196.737 -@released
 196.738 -*/
 196.739 -const TUid KUidContactFieldVCardMapDOM={KIntContactFieldVCardMapDOM};
 196.740 -/** Field type maps to vCard property parameter INTL.
 196.741 -@publishedAll
 196.742 -@released
 196.743 -*/
 196.744 -const TUid KUidContactFieldVCardMapINTL={KIntContactFieldVCardMapINTL};
 196.745 -/** Field type maps to vCard property parameter POSTAL.
 196.746 -@publishedAll
 196.747 -@released
 196.748 -*/
 196.749 -const TUid KUidContactFieldVCardMapPOSTAL={KIntContactFieldVCardMapPOSTAL};
 196.750 -/** Field type maps to vCard property parameter PARCEL.
 196.751 -@publishedAll
 196.752 -@released
 196.753 -*/
 196.754 -const TUid KUidContactFieldVCardMapPARCEL={KIntContactFieldVCardMapPARCEL};
 196.755 -/** Field type maps to vCard property parameter value GIF.
 196.756 -@publishedAll
 196.757 -@released
 196.758 -*/
 196.759 -const TUid KUidContactFieldVCardMapGIF={KIntContactFieldVCardMapGIF};
 196.760 -/** Field type maps to vCard property parameter value CGM.
 196.761 -@publishedAll
 196.762 -@released
 196.763 -*/
 196.764 -const TUid KUidContactFieldVCardMapCGM={KIntContactFieldVCardMapCGM};
 196.765 -/** Field type maps to vCard property parameter value WMF.
 196.766 -@publishedAll
 196.767 -@released
 196.768 -*/
 196.769 -const TUid KUidContactFieldVCardMapWMF={KIntContactFieldVCardMapWMF};
 196.770 -/** Field type maps to vCard property parameter value BMP.
 196.771 -@publishedAll
 196.772 -@released
 196.773 -*/
 196.774 -const TUid KUidContactFieldVCardMapBMP={KIntContactFieldVCardMapBMP};
 196.775 -/** Field type maps to vCard property parameter value MET.
 196.776 -@publishedAll
 196.777 -@released
 196.778 -*/
 196.779 -const TUid KUidContactFieldVCardMapMET={KIntContactFieldVCardMapMET};
 196.780 -/** Field type maps to vCard property parameter value PMB.
 196.781 -@publishedAll
 196.782 -@released
 196.783 -*/
 196.784 -const TUid KUidContactFieldVCardMapPMB={KIntContactFieldVCardMapPMB};
 196.785 -/** Field type maps to vCard property parameter value DIB.
 196.786 -@publishedAll
 196.787 -@released
 196.788 -*/
 196.789 -const TUid KUidContactFieldVCardMapDIB={KIntContactFieldVCardMapDIB};
 196.790 -/** Field type maps to vCard property parameter value PICT.
 196.791 -@publishedAll
 196.792 -@released
 196.793 -*/
 196.794 -const TUid KUidContactFieldVCardMapPICT={KIntContactFieldVCardMapPICT};
 196.795 -/** Field type maps to vCard property parameter value TIFF.
 196.796 -@publishedAll
 196.797 -@released
 196.798 -*/
 196.799 -const TUid KUidContactFieldVCardMapTIFF={KIntContactFieldVCardMapTIFF};
 196.800 -/** Field type maps to vCard property parameter value PDF.
 196.801 -@publishedAll
 196.802 -@released
 196.803 -*/
 196.804 -const TUid KUidContactFieldVCardMapPDF={KIntContactFieldVCardMapPDF};
 196.805 -/** Field type maps to vCard property parameter value PS.
 196.806 -@publishedAll
 196.807 -@released
 196.808 -*/
 196.809 -const TUid KUidContactFieldVCardMapPS={KIntContactFieldVCardMapPS};
 196.810 -/** Field type maps to vCard property parameter value JPEG.
 196.811 -@publishedAll
 196.812 -@released
 196.813 -*/
 196.814 -const TUid KUidContactFieldVCardMapJPEG={KIntContactFieldVCardMapJPEG};
 196.815 -/** Field type maps to vCard property parameter value MPEG.
 196.816 -@publishedAll
 196.817 -@released
 196.818 -*/
 196.819 -const TUid KUidContactFieldVCardMapMPEG={KIntContactFieldVCardMapMPEG};
 196.820 -/** Field type maps to vCard property parameter value MPEG2.
 196.821 -@publishedAll
 196.822 -@released
 196.823 -*/
 196.824 -const TUid KUidContactFieldVCardMapMPEG2={KIntContactFieldVCardMapMPEG2};
 196.825 -/** Field type maps to vCard property parameter value AVI.
 196.826 -@publishedAll
 196.827 -@released
 196.828 -*/
 196.829 -const TUid KUidContactFieldVCardMapAVI={KIntContactFieldVCardMapAVI};
 196.830 -/** Field type maps to vCard property parameter value QTIME.
 196.831 -@publishedAll
 196.832 -@released
 196.833 -*/
 196.834 -const TUid KUidContactFieldVCardMapQTIME={KIntContactFieldVCardMapQTIME};
 196.835 -/** Field type maps to vCard property TZ.
 196.836 -@publishedAll
 196.837 -@released
 196.838 -*/
 196.839 -const TUid KUidContactFieldVCardMapTZ={KIntContactFieldVCardMapTZ};
 196.840 -/** Field type maps to vCard property KEY.
 196.841 -@publishedAll
 196.842 -@released
 196.843 -*/
 196.844 -const TUid KUidContactFieldVCardMapKEY={KIntContactFieldVCardMapKEY};
 196.845 -/** Field type maps to vCard property parameter value X509.
 196.846 -@publishedAll
 196.847 -@released
 196.848 -*/
 196.849 -const TUid KUidContactFieldVCardMapX509={KIntContactFieldVCardMapX509};
 196.850 -/** Field type maps to vCard property parameter value PGP.
 196.851 -@publishedAll
 196.852 -@released
 196.853 -*/
 196.854 -const TUid KUidContactFieldVCardMapPGP={KIntContactFieldVCardMapPGP};
 196.855 -/** Used internally by the contacts model.
 196.856 -@publishedAll
 196.857 -@released
 196.858 -*/
 196.859 -const TUid KUidContactFieldVCardMapSMIME={KIntContactFieldVCardMapSMIME};
 196.860 -/** The field contains a Wireless Village instant messaging ID.
 196.861 -@publishedAll
 196.862 -@released
 196.863 -*/
 196.864 -const TUid KUidContactFieldVCardMapWV={KIntContactFieldVCardMapWV};
 196.865 -/** Field type mapping of a vCard property to contacts Second Name Field
 196.866 -@publishedAll
 196.867 -@released
 196.868 -*/
 196.869 -const TUid KUidContactFieldVCardMapSECONDNAME={KIntContactFieldVCardMapSECONDNAME};
 196.870 -/** Field type mapping of a vCard property to contacts SIP Identity Field.
 196.871 -@publishedAll
 196.872 -@released
 196.873 -*/
 196.874 -const TUid KUidContactFieldVCardMapSIPID={KIntContactFieldVCardMapSIPID};
 196.875 -/** Field type maps to vCard extension property parameter value POC
 196.876 -(Push to Talk Over Cellular).
 196.877 -@publishedAll
 196.878 -@released
 196.879 -*/
 196.880 -const TUid KUidContactFieldVCardMapPOC={KIntContactFieldVCardMapPOC};
 196.881 -/** Field type maps to vCard extension property parameter value SWIS
 196.882 -("See What I See").
 196.883 -@publishedAll
 196.884 -@released
 196.885 -*/
 196.886 -const TUid KUidContactFieldVCardMapSWIS={KIntContactFieldVCardMapSWIS};
 196.887 -/** Field type maps to vCard extension property parameter value VOIP
 196.888 -(Voice Over IP).
 196.889 -@publishedAll
 196.890 -@released
 196.891 -*/
 196.892 -const TUid KUidContactFieldVCardMapVOIP={KIntContactFieldVCardMapVOIP};
 196.893 -/** Field type maps to vCard extension property parameter value Assistant
 196.894 -@publishedAll
 196.895 -@released
 196.896 -*/
 196.897 -const TUid KUidContactFieldVCardMapAssistant={KIntContactFieldVCardMapAssistant};
 196.898 -/** Field type maps to vCard extension property parameter value AssistantTel
 196.899 -@publishedAll
 196.900 -@released
 196.901 -*/
 196.902 -const TUid KUidContactFieldVCardMapAssistantTel={KIntContactFieldVCardMapAssistantTel};
 196.903 -/** Field type maps to vCard extension property parameter value Anniversary
 196.904 -@publishedAll
 196.905 -@released
 196.906 -*/
 196.907 -const TUid KUidContactFieldVCardMapAnniversary={KIntContactFieldVCardMapAnniversary};
 196.908 -/** Field type maps to vCard extension property parameter value Spouse
 196.909 -@publishedAll
 196.910 -@released
 196.911 -*/
 196.912 -const TUid KUidContactFieldVCardMapSpouse={KIntContactFieldVCardMapSpouse};
 196.913 -/** Field type maps to vCard extension property parameter value Children
 196.914 -@publishedAll
 196.915 -@released
 196.916 -*/
 196.917 -const TUid KUidContactFieldVCardMapChildren={KIntContactFieldVCardMapChildren};
 196.918 -/** Field type maps to vCard extension property parameter value Class
 196.919 -@publishedAll
 196.920 -@released
 196.921 -*/
 196.922 -const TUid KUidContactFieldVCardMapClass={KIntContactFieldVCardMapClass};
 196.923 -/** Field type maps to vCard extension property parameter value Department
 196.924 -@publishedAll
 196.925 -@released
 196.926 -*/
 196.927 -const TUid KUidContactFieldVCardMapDepartment={KIntContactFieldVCardMapDepartment};
 196.928 -
 196.929 -/** Name of the TYPE property parameter, for which the values are work, home etc. 
 196.930 -@publishedAll
 196.931 -@released
 196.932 -*/
 196.933 -_LIT(KVersitParamType,"TYPE");
 196.934 -/** Name of the WORK property parameter.
 196.935 -@publishedAll
 196.936 -@released
 196.937 -*/
 196.938 -_LIT(KVersitParamWork,"WORK");
 196.939 -/** Name of the HOME property parameter.
 196.940 -@publishedAll
 196.941 -@released
 196.942 -*/
 196.943 -_LIT(KVersitParamHome,"HOME");
 196.944 -/** Name of the MSG property parameter.
 196.945 -@publishedAll
 196.946 -@released
 196.947 -*/
 196.948 -_LIT(KVersitParamMsg,"MSG");
 196.949 -/** Name of the VOICE property parameter.
 196.950 -@publishedAll
 196.951 -@released
 196.952 -*/
 196.953 -_LIT(KVersitParamVoice,"VOICE");
 196.954 -/** Name of the FAX property parameter.
 196.955 -@publishedAll
 196.956 -@released
 196.957 -*/
 196.958 -_LIT(KVersitParamFax,"FAX");
 196.959 -/** Name of the PREF property parameter.
 196.960 -@publishedAll
 196.961 -@released
 196.962 -*/
 196.963 -_LIT(KVersitParamPref,"PREF");
 196.964 -/** Name of the CELL property parameter.
 196.965 -@publishedAll
 196.966 -@released
 196.967 -*/
 196.968 -_LIT(KVersitParamCell,"CELL");
 196.969 -/** Name of the PAGER property parameter.
 196.970 -@publishedAll
 196.971 -@released
 196.972 -*/
 196.973 -_LIT(KVersitParamPager,"PAGER");
 196.974 -/** Name of the BBS property parameter.
 196.975 -@publishedAll
 196.976 -@released
 196.977 -*/
 196.978 -_LIT(KVersitParamBbs,"BBS");
 196.979 -/** Name of the MODEM property parameter.
 196.980 -@publishedAll
 196.981 -@released
 196.982 -*/
 196.983 -_LIT(KVersitParamModem,"MODEM");
 196.984 -/** Name of the CAR property parameter.
 196.985 -@publishedAll
 196.986 -@released
 196.987 -*/
 196.988 -_LIT(KVersitParamCar,"CAR");
 196.989 -/** Name of the ISDN property parameter.
 196.990 -@publishedAll
 196.991 -@released
 196.992 -*/
 196.993 -_LIT(KVersitParamIsdn,"ISDN");
 196.994 -/** Name of the VIDEO property parameter.
 196.995 -@publishedAll
 196.996 -@released
 196.997 -*/
 196.998 -_LIT(KVersitParamVideo,"VIDEO");
 196.999 -/** Name of the DOM property parameter.
196.1000 -@publishedAll
196.1001 -@released
196.1002 -*/
196.1003 -_LIT(KVersitParamDom,"DOM");
196.1004 -/** Name of the GIF property parameter.
196.1005 -@publishedAll
196.1006 -@released
196.1007 -*/
196.1008 -_LIT(KVersitParamGif,"GIF");
196.1009 -/** Name of the CGM property parameter.
196.1010 -@publishedAll
196.1011 -@released
196.1012 -*/
196.1013 -_LIT(KVersitParamCgm,"CGM");
196.1014 -/** Name of the WMF property parameter.
196.1015 -@publishedAll
196.1016 -@released
196.1017 -*/
196.1018 -_LIT(KVersitParamWmf,"WMF");
196.1019 -/** Name of the BMP property parameter.
196.1020 -@publishedAll
196.1021 -@released
196.1022 -*/
196.1023 -_LIT(KVersitParamBmp,"BMP");
196.1024 -/** Name of the MET property parameter.
196.1025 -@publishedAll
196.1026 -@released
196.1027 -*/
196.1028 -_LIT(KVersitParamMet,"MET");
196.1029 -/** Name of the PMB property parameter.
196.1030 -@publishedAll
196.1031 -@released
196.1032 -*/
196.1033 -_LIT(KVersitParamPmb,"PMB");
196.1034 -/** Name of the DIB property parameter.
196.1035 -@publishedAll
196.1036 -@released
196.1037 -*/
196.1038 -_LIT(KVersitParamDib,"DIB");
196.1039 -/** Name of the PICT property parameter.
196.1040 -@publishedAll
196.1041 -@released
196.1042 -*/
196.1043 -_LIT(KVersitParamPict,"PICT");
196.1044 -/** Name of the TIFF property parameter.
196.1045 -@publishedAll
196.1046 -@released
196.1047 -*/
196.1048 -_LIT(KVersitParamTiff,"TIFF");
196.1049 -/** Name of the PDF property parameter.
196.1050 -@publishedAll
196.1051 -@released
196.1052 -*/
196.1053 -_LIT(KVersitParamPdf,"PDF");
196.1054 -/** Name of the PS property parameter.
196.1055 -@publishedAll
196.1056 -@released
196.1057 -*/
196.1058 -_LIT(KVersitParamPs,"PS");
196.1059 -/** Name of the JPEG property parameter.
196.1060 -@publishedAll
196.1061 -@released
196.1062 -*/
196.1063 -_LIT(KVersitParamJpeg,"JPEG");
196.1064 -/** Name of the MPEG property parameter.
196.1065 -@publishedAll
196.1066 -@released
196.1067 -*/
196.1068 -_LIT(KVersitParamMpeg,"MPEG");
196.1069 -/** Name of the MPEG2 property parameter.
196.1070 -@publishedAll
196.1071 -@released
196.1072 -*/
196.1073 -_LIT(KVersitParamMpeg2,"MPEG2");
196.1074 -/** Name of the AVI property parameter.
196.1075 -@publishedAll
196.1076 -@released
196.1077 -*/
196.1078 -_LIT(KVersitParamAvi,"AVI");
196.1079 -/** Name of the QTIME property parameter.
196.1080 -@publishedAll
196.1081 -@released
196.1082 -*/
196.1083 -_LIT(KVersitParamQtime,"QTIME");
196.1084 -/** Name of the X509 property parameter.
196.1085 -@publishedAll
196.1086 -@released
196.1087 -*/
196.1088 -_LIT(KVersitParamX509,"X509");
196.1089 -/** Name of the PGP property parameter.
196.1090 -@publishedAll
196.1091 -@released
196.1092 -*/
196.1093 -_LIT(KVersitParamPGP,"PGP");
196.1094 -
196.1095 -/** 8 bit name of the TYPE property parameter.
196.1096 -@publishedAll
196.1097 -@released
196.1098 -*/
196.1099 -_LIT8(KVersitParam8Type,"TYPE");
196.1100 -/** 8 bit name of the WORK property parameter.
196.1101 -@publishedAll
196.1102 -@released
196.1103 -*/
196.1104 -_LIT8(KVersitParam8Work,"WORK");
196.1105 -/** 8 bit name of the HOME property parameter.
196.1106 -@publishedAll
196.1107 -@released
196.1108 -*/
196.1109 -_LIT8(KVersitParam8Home,"HOME");
196.1110 -/** 8 bit name of the MSG property parameter.
196.1111 -@publishedAll
196.1112 -@released
196.1113 -*/
196.1114 -_LIT8(KVersitParam8Msg,"MSG");
196.1115 -/** 8 bit name of the VOICE property parameter.
196.1116 -@publishedAll
196.1117 -@released
196.1118 -*/
196.1119 -_LIT8(KVersitParam8Voice,"VOICE");
196.1120 -/** 8 bit name of the FAX property parameter.
196.1121 -@publishedAll
196.1122 -@released
196.1123 -*/
196.1124 -_LIT8(KVersitParam8Fax,"FAX");
196.1125 -/** 8 bit name of the PREF property parameter.
196.1126 -@publishedAll
196.1127 -@released
196.1128 -*/
196.1129 -_LIT8(KVersitParam8Pref,"PREF");
196.1130 -/** 8 bit name of the CELL property parameter.
196.1131 -@publishedAll
196.1132 -@released
196.1133 -*/
196.1134 -_LIT8(KVersitParam8Cell,"CELL");
196.1135 -/** 8 bit name of the PAGER property parameter.
196.1136 -@publishedAll
196.1137 -@released
196.1138 -*/
196.1139 -_LIT8(KVersitParam8Pager,"PAGER");
196.1140 -/** 8 bit name of the BBS property parameter.
196.1141 -@publishedAll
196.1142 -@released
196.1143 -*/
196.1144 -_LIT8(KVersitParam8Bbs,"BBS");
196.1145 -/** 8 bit name of the MODEM property parameter.
196.1146 -@publishedAll
196.1147 -@released
196.1148 -*/
196.1149 -_LIT8(KVersitParam8Modem,"MODEM");
196.1150 -/** 8 bit name of the CAR property parameter.
196.1151 -@publishedAll
196.1152 -@released
196.1153 -*/
196.1154 -_LIT8(KVersitParam8Car,"CAR");
196.1155 -/** 8 bit name of the ISDN property parameter.
196.1156 -@publishedAll
196.1157 -@released
196.1158 -*/
196.1159 -_LIT8(KVersitParam8Isdn,"ISDN");
196.1160 -/** 8 bit name of the VIDEO property parameter.
196.1161 -@publishedAll
196.1162 -@released
196.1163 -*/
196.1164 -_LIT8(KVersitParam8Video,"VIDEO");
196.1165 -/** 8 bit name of the DOM property parameter.
196.1166 -@publishedAll
196.1167 -@released
196.1168 -*/
196.1169 -_LIT8(KVersitParam8Dom,"DOM");
196.1170 -/** 8 bit name of the GIF property parameter.
196.1171 -@publishedAll
196.1172 -@released
196.1173 -*/
196.1174 -_LIT8(KVersitParam8Gif,"GIF");
196.1175 -/** 8 bit name of the CGM property parameter.
196.1176 -@publishedAll
196.1177 -@released
196.1178 -*/
196.1179 -_LIT8(KVersitParam8Cgm,"CGM");
196.1180 -/** 8 bit name of the WMF property parameter.
196.1181 -@publishedAll
196.1182 -@released
196.1183 -*/
196.1184 -_LIT8(KVersitParam8Wmf,"WMF");
196.1185 -/** 8 bit name of the BMP property parameter.
196.1186 -@publishedAll
196.1187 -@released
196.1188 -*/
196.1189 -_LIT8(KVersitParam8Bmp,"BMP");
196.1190 -/** 8 bit name of the MET property parameter.
196.1191 -@publishedAll
196.1192 -@released
196.1193 -*/
196.1194 -_LIT8(KVersitParam8Met,"MET");
196.1195 -/** 8 bit name of the PMB property parameter.
196.1196 -@publishedAll
196.1197 -@released
196.1198 -*/
196.1199 -_LIT8(KVersitParam8Pmb,"PMB");
196.1200 -/** 8 bit name of the DIB property parameter.
196.1201 -@publishedAll
196.1202 -@released
196.1203 -*/
196.1204 -_LIT8(KVersitParam8Dib,"DIB");
196.1205 -/** 8 bit name of the PICT property parameter.
196.1206 -@publishedAll
196.1207 -@released
196.1208 -*/
196.1209 -_LIT8(KVersitParam8Pict,"PICT");
196.1210 -/** 8 bit name of the TIFF property parameter.
196.1211 -@publishedAll
196.1212 -@released
196.1213 -*/
196.1214 -_LIT8(KVersitParam8Tiff,"TIFF");
196.1215 -/** 8 bit name of the PDF property parameter.
196.1216 -@publishedAll
196.1217 -@released
196.1218 -*/
196.1219 -_LIT8(KVersitParam8Pdf,"PDF");
196.1220 -/** 8 bit name of the PS property parameter.
196.1221 -@publishedAll
196.1222 -@released
196.1223 -*/
196.1224 -_LIT8(KVersitParam8Ps,"PS");
196.1225 -/** 8 bit name of the JPEG property parameter.
196.1226 -@publishedAll
196.1227 -@released
196.1228 -*/
196.1229 -_LIT8(KVersitParam8Jpeg,"JPEG");
196.1230 -/** 8 bit name of the MPEG property parameter.
196.1231 -@publishedAll
196.1232 -@released
196.1233 -*/
196.1234 -_LIT8(KVersitParam8Mpeg,"MPEG");
196.1235 -/** 8 bit name of the MPEG2 property parameter.
196.1236 -@publishedAll
196.1237 -@released
196.1238 -*/
196.1239 -_LIT8(KVersitParam8Mpeg2,"MPEG2");
196.1240 -/** 8 bit name of the AVI property parameter.
196.1241 -@publishedAll
196.1242 -@released
196.1243 -*/
196.1244 -_LIT8(KVersitParam8Avi,"AVI");
196.1245 -/** 8 bit name of the QTIME property parameter.
196.1246 -@publishedAll
196.1247 -@released
196.1248 -*/
196.1249 -_LIT8(KVersitParam8Qtime,"QTIME");
196.1250 -/** 8 bit name of the X509 property parameter.
196.1251 -@publishedAll
196.1252 -@released
196.1253 -*/
196.1254 -_LIT8(KVersitParam8X509,"X509");
196.1255 -/** 8 bit name of the PGP property parameter.
196.1256 -@publishedAll
196.1257 -@released
196.1258 -*/
196.1259 -_LIT8(KVersitParam8PGP,"PGP");
196.1260 -
196.1261 -/**
196.1262 -8 bit name of the X-IRMC-N property parameter (family or given
196.1263 -name pronunciation).
196.1264 -@publishedAll
196.1265 -@released
196.1266 -*/
196.1267 -_LIT8(KVersitParam8NamePrn,"X-IRMC-N");
196.1268 -/**
196.1269 -8 bit name of the X-IRMC-ORG property parameter (company
196.1270 -name pronunciation).
196.1271 -@publishedAll
196.1272 -@released
196.1273 -*/
196.1274 -_LIT8(KVersitParam8CompanyPrn,"X-IRMC-ORG");
196.1275 -/**
196.1276 -8 bit name of the X-IRMC- property parameter (pronunciation field prefix).
196.1277 -@publishedAll
196.1278 -@released
196.1279 -*/
196.1280 -_LIT8(KVersitParam8PronunciationPrefix,"X-IRMC-");
196.1281 -
196.1282 -
196.1283 -
196.1284 -class CContactIdArray : public CBase
196.1285 -/** Array of contact item IDs (TContactItemIds).
196.1286 -
196.1287 -Instances of this class are used in several contact database functions,
196.1288 -for instance CContactDatabase::DeleteContactsL().
196.1289 -@publishedAll
196.1290 -@released
196.1291 -*/
196.1292 -	{
196.1293 -public:
196.1294 -	IMPORT_C static CContactIdArray* NewL();
196.1295 -	IMPORT_C static CContactIdArray* NewLC();
196.1296 -	IMPORT_C static CContactIdArray* NewL(const CContactIdArray* aArray);
196.1297 -	IMPORT_C static CContactIdArray* NewLC(const CContactIdArray* aArray);
196.1298 -	static CContactIdArray* NewLC(RReadStream& aStream);
196.1299 -	IMPORT_C ~CContactIdArray();
196.1300 -	inline const TContactItemId& operator[](TInt aIndex) const;
196.1301 -	inline TContactItemId& operator[](TInt aIndex);
196.1302 -	inline TInt Count() const;
196.1303 -	inline void Reset();
196.1304 -	IMPORT_C TInt Find(TContactItemId aId) const;
196.1305 -	IMPORT_C void AddL(TContactItemId aId);
196.1306 -
196.1307 -	inline void Remove(TInt aIndex);
196.1308 -	inline void Remove(TInt aIndex,TInt aCount);
196.1309 -	inline void InsertL(TInt aIndex,TContactItemId aId);
196.1310 -	IMPORT_C void MoveL(TInt aOldIndex,TInt aNewIndex);
196.1311 -	IMPORT_C void ReverseOrder();
196.1312 -	IMPORT_C void InternalizeL(RReadStream& aStream);
196.1313 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
196.1314 -public:  // intended for internal Contacts Model usage only
196.1315 -	void Sort();
196.1316 -private:
196.1317 -	CContactIdArray();
196.1318 -	void ConstructL();
196.1319 -	void CloneL(const CContactIdArray* aArray);
196.1320 -private:
196.1321 -	CArrayFixFlat<TContactItemId> *iIds;
196.1322 -	};
196.1323 -inline const TContactItemId& CContactIdArray::operator[](TInt aIndex) const
196.1324 -/** Gets the indexed TContactItemId.
196.1325 -
196.1326 -@param aIndex The position of the contact ID within the array, relative to zero.
196.1327 -This must be non-negative and less than the number of objects in the array
196.1328 -otherwise the operator raises a panic.
196.1329 -@return A reference to a const element of the array. */
196.1330 -	{ return (*iIds)[aIndex]; }
196.1331 -
196.1332 -inline TContactItemId& CContactIdArray::operator[](TInt aIndex)
196.1333 -/** Gets the indexed TContactItemId.
196.1334 -
196.1335 -@param aIndex The position of the contact ID within the array, relative to zero.
196.1336 -This must be non-negative and less than the number of objects in the array
196.1337 -otherwise the operator raises a panic.
196.1338 -@return A reference to a non-const element of the array. */
196.1339 -	{ return (*iIds)[aIndex]; }
196.1340 -
196.1341 -inline TInt CContactIdArray::Count() const
196.1342 -/** Gets the number of contact IDs in the array.
196.1343 -
196.1344 -@return The number of contact IDs in the array. */
196.1345 -	{ return iIds->Count(); }
196.1346 -
196.1347 -inline void CContactIdArray::Reset()
196.1348 -/** Removes all contact IDs from the array. */
196.1349 -	{ iIds->Reset(); }
196.1350 -
196.1351 -inline void CContactIdArray::Remove(TInt aIndex)
196.1352 -/** Removes the indexed contact ID from the array.
196.1353 -
196.1354 -The index value must not be negative and must not be greater than the number
196.1355 -of elements in the array, otherwise the function raises a panic.
196.1356 -
196.1357 -@param aIndex The index of the contact ID to remove. */
196.1358 -	{ iIds->Delete(aIndex); }
196.1359 -
196.1360 -inline void CContactIdArray::Remove(TInt aIndex,TInt aCount)
196.1361 -/** Removes a block of contact IDs from the array.
196.1362 -
196.1363 -This function raises a panic if any of the following are true:-
196.1364 -
196.1365 -- aCount is negative
196.1366 -
196.1367 -- aIndex is negative or is greater than the number of elements currently in
196.1368 -the array
196.1369 -
196.1370 -- the sum of aIndex and aCount is greater than the number of elements currently
196.1371 -in the array
196.1372 -
196.1373 -@param aIndex The index of the first contact ID to remove.
196.1374 -@param aCount The number of contiguous contact IDs to delete from the array.
196.1375 -If this is not specified, a value of one is assumed. */
196.1376 -	{ iIds->Delete(aIndex,aCount); }
196.1377 -
196.1378 -inline void CContactIdArray::InsertL(TInt aIndex,TContactItemId aId)
196.1379 -/** Inserts a contact ID into the array.
196.1380 -
196.1381 -The index must be valid or a panic occurs.
196.1382 -
196.1383 -The function may attempt to expand the array buffer. If there is insufficient
196.1384 -memory available, the function leaves. The leave code is one of the system
196.1385 -error codes. If the function leaves, the array is left in the state it was
196.1386 -in before the call.
196.1387 -
196.1388 -@param aIndex The index at which to insert the contact ID.
196.1389 -@param aId The contact ID to insert. */
196.1390 -	{ iIds->InsertL(aIndex,aId); }
196.1391 -	
196.1392 -
196.1393 -/** Shows supported event action types that are used when deleting
196.1394 -a contact or an array of contacts
196.1395 -@internalTechnology
196.1396 -@released
196.1397 -*/
196.1398 -enum TCntSendEventAction
196.1399 -	{
196.1400 -	EDeferEvent              = 0,
196.1401 -	ESendEvent               = 1,
196.1402 -	ESendUnknownChangesEvent = 2,
196.1403 -	};
196.1404 -
196.1405 -#endif
   197.1 --- a/epoc32/include/cntfield.h	Tue Mar 16 16:12:26 2010 +0000
   197.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   197.3 @@ -1,642 +0,0 @@
   197.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   197.5 -// All rights reserved.
   197.6 -// This component and the accompanying materials are made available
   197.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   197.8 -// which accompanies this distribution, and is available
   197.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  197.10 -//
  197.11 -// Initial Contributors:
  197.12 -// Nokia Corporation - initial contribution.
  197.13 -//
  197.14 -// Contributors:
  197.15 -//
  197.16 -// Description:
  197.17 -// Persistence layer exports
  197.18 -// 
  197.19 -//
  197.20 -
  197.21 -
  197.22 -
  197.23 -#if !defined(__CNTFIELD_H__)
  197.24 -#define __CNTFIELD_H__
  197.25 -
  197.26 -#include <cntdef.h>
  197.27 -
  197.28 -
  197.29 -
  197.30 -const TInt KNullFieldId=-1;
  197.31 -
  197.32 -//const TInt KIntContactFieldHint???=0x01;
  197.33 -const TInt KIntContactHintIsPhone=0x02;
  197.34 -const TInt KIntContactHintIsMsg=0x04;
  197.35 -const TInt KIntContactHintIsCompanyName=0x08;
  197.36 -const TInt KIntContactHintIsFamilyName=0x10;
  197.37 -const TInt KIntContactHintIsGivenName=0x20;
  197.38 -const TInt KIntContactHintIsAddress=0x40;
  197.39 -const TInt KIntContactHintIsAdditionalName=0x80;
  197.40 -const TInt KIntContactHintIsSuffixName=0x100;
  197.41 -const TInt KIntContactHintIsPrefixName=0x200;
  197.42 -const TInt KIntContactHintStorageInline=0x400;
  197.43 -const TInt KIntContactHintIsEmail=0x4000;
  197.44 -const TInt KIntContactHintIsPronunciation=0x800;
  197.45 -const TInt KIntContactHintIsCompanyNamePronunciation=KIntContactHintIsPronunciation|KIntContactHintIsCompanyName;
  197.46 -const TInt KIntContactHintIsGivenNamePronunciation=KIntContactHintIsPronunciation|KIntContactHintIsGivenName;
  197.47 -const TInt KIntContactHintIsFamilyNamePronunciation=KIntContactHintIsPronunciation|KIntContactHintIsFamilyName;
  197.48 -
  197.49 -const TInt KHintTypeMask = 0x1FFFFF;
  197.50 -
  197.51 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
  197.52 -const TInt KHintAdditionalMask    = 0x7F000000; //Number of additional type ids.
  197.53 -const TInt KHintVCardMappingMask  = 0x80000000; //bit flag to show if there is a vCard mapping uid.
  197.54 -const TInt KHintTemplateFieldMask = 0x7FFFFFFF; //Template field mask in low hint value.
  197.55 -
  197.56 -const TInt KHintAdditionalMaskShift = 24;
  197.57 -
  197.58 -#else //_SYMBIAN_USE_SQLITE__
  197.59 -
  197.60 -const TInt KHintAdditionalMask = 0x200000;
  197.61 -const TInt KHintIdMask = 0xFFC00000;
  197.62 -
  197.63 -#endif //_SYMBIAN_USE_SQLITE__
  197.64 -
  197.65 -
  197.66 -class RWriteStream;
  197.67 -class RReadStream;
  197.68 -class CContactFieldStorage;
  197.69 -class CContactTextField;
  197.70 -class CContactStoreField;
  197.71 -class CContactAgentField;
  197.72 -class CContactDateField;
  197.73 -class TFieldHeader;
  197.74 -class CContactItemField;
  197.75 -class CContactItemFieldDef;
  197.76 -class CContactItemFieldSet;
  197.77 -class CContactItem;
  197.78 -
  197.79 -class CContentType : public CBase
  197.80 -/** The content type for a contact item field. 
  197.81 -
  197.82 -The content type identifies the field's type and the vCard property which 
  197.83 -the field maps to. It is owned by the field. Field types are defined as UIDs 
  197.84 -in cntdef.h.
  197.85 -
  197.86 -The vCard mapping is optional. It should be specified if the field type alone 
  197.87 -is not enough to identify the mapping. The possible values for the vCard 
  197.88 -mapping are defined as UIDs in cntdef.h.
  197.89 -
  197.90 -Each field is uniquely identified by the combination of UIDs contained in 
  197.91 -the content type. 
  197.92 -@publishedAll
  197.93 -@released
  197.94 -*/
  197.95 -    {
  197.96 -public:
  197.97 -    IMPORT_C ~CContentType();
  197.98 -	IMPORT_C static CContentType* NewL();
  197.99 -	IMPORT_C static CContentType* NewL(TFieldType aFieldType,TUid aMapping=KNullUid);
 197.100 -	IMPORT_C static CContentType* NewL(const CContentType &aContentType);
 197.101 -	static CContentType* NewLC(RReadStream& aStream);
 197.102 -	IMPORT_C void SetMapping(TUid aMapping);
 197.103 -	IMPORT_C void AddFieldTypeL(TFieldType aFieldType);
 197.104 -	IMPORT_C void RemoveFieldType(TFieldType aFieldType);
 197.105 -    IMPORT_C TFieldType FieldType(TInt aIndex) const;
 197.106 -    IMPORT_C TInt FieldTypeCount() const;
 197.107 -    IMPORT_C TUid Mapping() const;
 197.108 -	IMPORT_C TBool ContainsFieldType(TFieldType aFieldType) const;
 197.109 -	IMPORT_C TBool SupportsMultipleLines() const;
 197.110 -	IMPORT_C TBool operator==(const CContentType &aType) const;
 197.111 -	IMPORT_C TBool IsEqualForSyncUpdate(const CContentType& aType) const;
 197.112 -	IMPORT_C TBool IsEqual(const CContentType& aType) const;
 197.113 -	void Reset(); 
 197.114 -	void InternalizeAdditionalUidsL(TInt aCount,RReadStream& aStream);
 197.115 -	void ExternalizeL(RWriteStream& aStream) const;
 197.116 -	void InternalizeL(RReadStream& aStream);		
 197.117 -private:
 197.118 -    CContentType();
 197.119 -	CContentType(TUid aMapping);
 197.120 -	void ConstructL();
 197.121 -	void CloneL(const CContentType &aContentType);
 197.122 -private:
 197.123 -    TUid iMapping;
 197.124 -	CArrayFix<TUid>* iFieldTypes;
 197.125 -    };
 197.126 -
 197.127 -class CContactItemField : public CBase
 197.128 -/** A field in a contact item.
 197.129 -
 197.130 -Fields are grouped into a field set (CContactItemFieldSet), which is owned by 
 197.131 -the contact item.
 197.132 -
 197.133 -The contact item field stores the field data. The data may be text, a date/time 
 197.134 -value, or an agent, as indicated by the storage type (TStorageType). The storage 
 197.135 -type is also owned by the field. Note that numeric field data is not supported. 
 197.136 -All numbers, for instance telephone or fax numbers are stored as text.
 197.137 -
 197.138 -Fields also have a content type, attributes and a label. The label is a string 
 197.139 -which identifies the field to a user e.g. First name, Last name.
 197.140 -
 197.141 -The following attributes are supported: 
 197.142 -
 197.143 -- hidden: the field is not displayed if the view definition masks hidden 
 197.144 -fields
 197.145 -
 197.146 -- disabled: the field cannot be deleted from the original template and thus 
 197.147 -is marked as disabled
 197.148 -
 197.149 -- read only: the field cannot be written to
 197.150 -
 197.151 -- synchronise: used by Connectivity applications; set by default for all 
 197.152 -contact item fields
 197.153 -
 197.154 -- user added: the field was added by the user and was not taken from the 
 197.155 -template
 197.156 -
 197.157 -- template: indicates that the field is part of a template. Template fields 
 197.158 -differ from other fields in that they are persisted when they do not contain 
 197.159 -any data.
 197.160 -
 197.161 -- speed dial: the field contains a telephone number which maps to one of 
 197.162 -the nine possible speed dial positions.
 197.163 -
 197.164 -These attributes can be set using member functions of this class, but they 
 197.165 -are normally set automatically by other functions, for instance when 
 197.166 -setting a speed dial field, CContactDatabase automatically sets the field's 
 197.167 -speed dial attribute. 
 197.168 -@publishedAll
 197.169 -@released
 197.170 -*/
 197.171 -	{
 197.172 -private:
 197.173 -	friend class TFieldHeader;
 197.174 -	friend class CContactItemFieldSet;
 197.175 -	friend class CContactDatabase;      
 197.176 -	friend class CContactTables;
 197.177 -	friend class RPplContactTable;
 197.178 -	friend class CPackagerTests;
 197.179 -	class THint
 197.180 -	/**
 197.181 -	@internalComponent
 197.182 -	@released
 197.183 -	*/
 197.184 -		{
 197.185 -	public:
 197.186 -		THint();
 197.187 -		THint(TInt aValue);
 197.188 -		TBool operator==(const THint& aHint) const;
 197.189 -		TBool operator!=(const THint& aHint) const;
 197.190 -		TInt  HintType() const;
 197.191 -		inline void SetIsMatchAll();
 197.192 -		inline void SetIsPhone();
 197.193 -		inline void SetIsMsg();
 197.194 -		inline void SetIsCompanyName();
 197.195 -		inline void SetIsFamilyName();
 197.196 -		inline void SetIsGivenName();
 197.197 -		inline void SetIsCompanyNamePronunciation();
 197.198 -		inline void SetIsFamilyNamePronunciation();
 197.199 -		inline void SetIsGivenNamePronunciation();
 197.200 -		inline void SetIsAddress();
 197.201 -		inline void SetIsAdditionalName();
 197.202 -		inline void SetIsSuffixName();
 197.203 -		inline void SetIsPrefixName();
 197.204 -		inline void SetStorageIsInline();
 197.205 -		inline void SetIsEmail();
 197.206 -		inline TBool IsMatchAll() const;
 197.207 -		inline TBool IsDefault() const;
 197.208 -		inline TBool IsPhone() const;
 197.209 -		inline TBool IsMsg() const;
 197.210 -		inline TBool IsCompanyName() const;
 197.211 -		inline TBool IsFamilyName() const;
 197.212 -		inline TBool IsGivenName() const;
 197.213 -		inline TBool IsCompanyNamePronunciation() const;
 197.214 -		inline TBool IsFamilyNamePronunciation() const;
 197.215 -		inline TBool IsGivenNamePronunciation() const;
 197.216 -		inline TBool IsAddress() const;
 197.217 -		inline TBool IsAdditionalName() const;
 197.218 -		inline TBool IsSuffixName() const;
 197.219 -		inline TBool IsPrefixName() const;
 197.220 -		inline TBool IsStorageInline() const;
 197.221 -		inline TBool IsEmail() const;
 197.222 -		inline TBool Contains(const THint& aHint) const;
 197.223 -		
 197.224 -#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__
 197.225 -		inline void SetHasAdditionalUids();
 197.226 -		TBool HasAdditionalUids() const;
 197.227 -		
 197.228 -		TInt FieldId() const;
 197.229 -		void SetFieldId(TInt aId);
 197.230 -		
 197.231 -#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
 197.232 -        TInt  TemplateFieldId() const;
 197.233 -        void  SetTemplateFieldId(TInt aTemplateFieldId);
 197.234 -        
 197.235 -        inline void SetHasVCardMappingUid();
 197.236 -        inline TBool HasVCardMappingUid() const;
 197.237 -        
 197.238 -        inline TInt  AdditionalUidsNum() const;
 197.239 -        inline void  SetAdditionalUidsNum(TInt aNumber);
 197.240 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__		
 197.241 -	public:
 197.242 -		TInt iHintValue;
 197.243 -
 197.244 -		};
 197.245 -		
 197.246 -public:
 197.247 -	IMPORT_C static CContactItemField* NewLC();
 197.248 -	IMPORT_C static CContactItemField* NewL(TStorageType aType);
 197.249 -	IMPORT_C static CContactItemField* NewLC(TStorageType aType);
 197.250 -	IMPORT_C static CContactItemField* NewL(TStorageType aType, TFieldType aFieldType);
 197.251 -	IMPORT_C static CContactItemField* NewLC(TStorageType aType, TFieldType aFieldType);
 197.252 -	IMPORT_C static CContactItemField* NewL(const CContactItemField &aField);
 197.253 -	IMPORT_C static CContactItemField* NewLC(const CContactItemField &aField);
 197.254 -	IMPORT_C static CContactItemField* NewL(TStorageType aType, const CContentType &aContentType);
 197.255 -	IMPORT_C static CContactItemField* NewLC(TStorageType aType, const CContentType &aContentType);
 197.256 -	IMPORT_C ~CContactItemField();
 197.257 -
 197.258 -	IMPORT_C TStorageType StorageType() const;
 197.259 -	IMPORT_C const CContentType &ContentType() const;
 197.260 -	inline TBool IsHidden() const;
 197.261 -	inline TBool IsReadOnly() const;
 197.262 -	inline TBool IsDisabled() const;
 197.263 -	inline TBool IsTemplate() const;
 197.264 -	inline TBool IsPrivate() const;
 197.265 -	inline TBool IsSpeedDial() const;
 197.266 -	inline TBool DoSynchronize() const;
 197.267 -	inline TBool OverRidesLabel() const;
 197.268 -	inline TBool HasExtraStream() const;
 197.269 -	inline TBool UsesTemplateTypes() const;
 197.270 -	inline TBool LabelUnspecified() const;
 197.271 -	inline TBool UserAddedField() const;
 197.272 -	inline TBool IsCustomFilterable() const;
 197.273 -	IMPORT_C void SetHintType(TInt aType);
 197.274 -	IMPORT_C TPtrC Label() const;
 197.275 -	IMPORT_C void ResetStore();
 197.276 -	IMPORT_C CContactFieldStorage* Storage() const;
 197.277 -	IMPORT_C CContactTextField * TextStorage() const;
 197.278 -	IMPORT_C CContactStoreField * StoreStorage() const;
 197.279 -	IMPORT_C CContactAgentField * AgentStorage() const;
 197.280 -	IMPORT_C CContactDateField * DateTimeStorage() const;
 197.281 -	IMPORT_C void AddFieldTypeL(TFieldType aFieldType);
 197.282 -	IMPORT_C void RemoveFieldType(TFieldType aFieldType);
 197.283 -	IMPORT_C void SetMapping(TUid aMapping);
 197.284 -	IMPORT_C void SetHidden(TBool aHidden);
 197.285 -	IMPORT_C void SetReadOnly(TBool aReadOnly);
 197.286 -	IMPORT_C void SetSynchronize(TBool aSynchronize);
 197.287 -	IMPORT_C void SetDisabled(TBool aDisabled);
 197.288 -	IMPORT_C void SetLabelL(const TDesC& aLabel);
 197.289 -	IMPORT_C void SetLabel(HBufC* aLabel);
 197.290 -	IMPORT_C void SetUserAddedField(TBool aUserAddedField);
 197.291 -	IMPORT_C void SetTemplateField(TBool aTemplateField);
 197.292 -	IMPORT_C void SetPrivate(TBool aTemplateField);
 197.293 -	IMPORT_C void SetSpeedDial(TBool aSpeedDialField);
 197.294 -	IMPORT_C void SetId(TInt aId);
 197.295 -	IMPORT_C TInt Id() const;
 197.296 -	IMPORT_C TUint UserFlags() const;
 197.297 -	IMPORT_C void SetUserFlags(TUint aFlags);
 197.298 -	IMPORT_C static TBool IsValidLabel(const TDesC& aLabel,TInt& aInvalidPos);
 197.299 -	IMPORT_C TBool IsTemplateLabelField() const;
 197.300 -	IMPORT_C void GetFieldText(TDes &aText) const;
 197.301 -	IMPORT_C void RestoreHeaderL(RReadStream& aStream, const CContactItemFieldSet *aSystemTemplateFields);
 197.302 -	IMPORT_C TStreamId RestoreFieldTypesL(RReadStream &aRootStream, const CContactItemFieldSet *aSystemTemplateFields);
 197.303 -	IMPORT_C void RestoreTextL(HBufC *aTextStream,TInt aTextFieldIndex);
 197.304 -	IMPORT_C TBool RestoreIfMatchL(RReadStream& aStream,const CContactItemFieldDef *aFieldDef, const CContactItemFieldSet *aSystemTemplateFields,HBufC *aTextStream,TInt aTextIndex);
 197.305 -
 197.306 -public:
 197.307 -	IMPORT_C void SetCustomFilterable(EContactFieldFlags aContactFilterType);
 197.308 -	IMPORT_C void Reset();
 197.309 -	void SetUsesTemplateTypes(TBool aUsesTemplateTypes);
 197.310 -	void SetOverRidesLabel(TBool aValue);
 197.311 -	TInt TemplateFieldId() const;
 197.312 -	void SetDeleted(TBool aDeleted);
 197.313 -	inline TBool IsDeleted() const;
 197.314 -	void CopyStorageL(const CContactItemField &aField);
 197.315 -	void UpdateFieldFlags(const CContactItemFieldSet& aTemplateFieldSet);
 197.316 -	void PopulateStoreL(RStoreWriteStream& aRootStream, TInt aCount, CArrayFix<TFieldHeader>& aFieldHeaderArray) const;
 197.317 -	void PrepareFieldAsTemplateL(CContactItemFieldSet& aSystemTemplateFieldSet);
 197.318 -	IMPORT_C TBool HasCustomFilter(EContactFieldFlags& contactFieldFlag) const;
 197.319 -	TBool RestoreIfMatchL(RReadStream& aStream,TFieldType aFieldType, const CContactItemFieldSet *aSystemTemplateFields,HBufC *aTextStream,TInt aTextIndex);
 197.320 -	void ExternalizeL(RWriteStream& aStream) const;
 197.321 -	void InternalizeL(RReadStream& aStream);		
 197.322 -	
 197.323 -protected:
 197.324 -	void UsesTemplateData(TInt aTemplateFieldId);
 197.325 -private:
 197.326 -	void UsesTemplateLabel();
 197.327 -	void SetLabelUnspecified(TBool aUnspecified);
 197.328 -	const CContentType &TemplateContentType(const CContactItemFieldSet &aSystemTemplateFields) const;
 197.329 -	TFieldHeader StoreL(RWriteStream& aTextStream,CStreamStore& aBlobStore,TInt aTextFieldIndex);
 197.330 -	TStreamId StoreAdditionalUidsL(CStreamStore& aStore,TStreamId aId, CArrayFixFlat<TUid> *aAdditionalFields);
 197.331 -  	TStreamId StoreDataL(CStreamStore& aStore);
 197.332 -
 197.333 -   	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
 197.334 -    void RestoreDataL(CStreamStore& aStore,TStreamId aId);
 197.335 -	
 197.336 - 	TStreamId RestoreHintL(CStreamStore& aStore,RReadStream& aStream);
 197.337 -	TBool AddFieldToHint(TFieldType aFieldType, CContactItemField::THint &aHint) const;
 197.338 -	void MapHintsToFieldTypesL(THint aHint);
 197.339 -	CContactItemField();
 197.340 -	CContactItemField(TStorageType aType);
 197.341 -	void CloneL(const CContactItemField &aField);
 197.342 -	void ConstructStorageL();
 197.343 -private:
 197.344 -	enum {EUserMaskShift=4};
 197.345 -	enum // er5 hard coded enum most of which have been used but not documented ;o(
 197.346 -		{
 197.347 -		EHidden				=0x00000001,
 197.348 -		EReadOnly			=0x00000002,
 197.349 -		ESynchronize		=0x00000004,
 197.350 -		EDisabled			=0x00000008,
 197.351 -		/* 0x00000010,-> 0x00000080 are used for 
 197.352 -			the user defined attribs / categories like work /
 197.353 -			Personal / Other / None - used in er5 UI */
 197.354 -		EUserMask			=0x000000F0,
 197.355 -		ETemplateMask		=EUserMask|ESynchronize|EReadOnly|EHidden,
 197.356 -		EOverRidesLabel		=0x00000100,
 197.357 -		EUsesTemplateData	=0x00000200,
 197.358 -		EUserAddedField		=0x00000400,
 197.359 -		ETemplate			=0x00000800,
 197.360 -		/* 0x00001000,-> 0x0000F000 are used for 
 197.361 -			the storage type of the contact field */
 197.362 -		ELabelUnspecified	=0x40000000,
 197.363 -		EDeleted			=0x80000000
 197.364 -		};
 197.365 -	enum 
 197.366 -		// new extended enum to allow cntmodel to have
 197.367 -		// more attributes per field
 197.368 -		{
 197.369 -		EPrivate			=0x00000001,
 197.370 -		ESpeedDial			=0x00000002,
 197.371 -		EUserDefinedFilter	=0x00000004,
 197.372 -		EUserDefinedFilter1 =0x00000008,
 197.373 -		EUserDefinedFilter2	=0x00000010,
 197.374 -		EUserDefinedFilter3	=0x00000020,
 197.375 -		EUserDefinedFilter4	=0x00000040
 197.376 -		};
 197.377 -	
 197.378 -private:
 197.379 -	CContentType *iContentType;
 197.380 -	TStorageType iStorageType;
 197.381 -	HBufC* iLabel;
 197.382 -	TInt iId;
 197.383 -	TUint32 iAttributes;
 197.384 -	TUint32 iExtendedAttributes;
 197.385 -	CContactFieldStorage* iStorage;
 197.386 -	TInt iTemplateFieldId;
 197.387 -	};
 197.388 -
 197.389 -class CContactItemFieldDef : public CArrayFixFlat<TUid>
 197.390 -/** A field definition. 
 197.391 -
 197.392 -This is an array of field types. Field definitions are used by 
 197.393 -CContactDatabase to specify a subset of fields when searching.
 197.394 -
 197.395 -The CContactItemFieldDef class is derived from CArrayFixFlat<TUid> so all 
 197.396 -relevant functions can be used, e.g. to add and remove elements. It adds no 
 197.397 -functions other than a constructor. 
 197.398 -@publishedAll
 197.399 -@released
 197.400 -*/
 197.401 -	{
 197.402 -public:
 197.403 -	inline CContactItemFieldDef() : CArrayFixFlat<TUid>(8) 
 197.404 -	/** Constructs the CContactItemFieldDef object, with an array granularity of 8. */
 197.405 -		{};
 197.406 -	};
 197.407 -
 197.408 -class TContactFieldAtts
 197.409 -/**
 197.410 -@internalComponent
 197.411 -@released
 197.412 -*/
 197.413 -	{
 197.414 -public:
 197.415 -	inline TContactFieldAtts() : iStorage(0)
 197.416 -		{};
 197.417 -
 197.418 -	void SetAttribs(TUint32 aAttribs);
 197.419 -	void SetExtendedAttribs(TUint32 aExtendedAttribs);
 197.420 -	void SetType(TStorageType aType);
 197.421 -	TUint32 Attribs() const;
 197.422 -	TUint32 ExtendedAttribs() const;
 197.423 -	TStorageType Type() const;
 197.424 -	void InternalizeL(RReadStream& aStream);
 197.425 -	void ExternalizeL(RWriteStream& aStream) const;
 197.426 -
 197.427 -#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__	
 197.428 -	TInt Count() const;
 197.429 -	void SetCount(TInt aCount);
 197.430 -	TInt TemplateFieldId() const;
 197.431 -	void SetTemplateFieldId(TInt aId);
 197.432 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
 197.433 -
 197.434 -		
 197.435 -private:
 197.436 -	TUint32 iStorage;
 197.437 -	
 197.438 -#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__	
 197.439 -	TUint32 iExtendedAttribs;
 197.440 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
 197.441 -	};
 197.442 -
 197.443 -
 197.444 -class TFieldHeader
 197.445 -/**
 197.446 -@internalComponent
 197.447 -@released
 197.448 -*/
 197.449 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
 197.450 -
 197.451 -	{
 197.452 -public:
 197.453 -    TFieldHeader();
 197.454 -	TFieldHeader(TContactFieldAtts aAtts, TUint32 aFieldUid, TStreamId aId);
 197.455 -	
 197.456 -	inline TContactFieldAtts FieldAtts() const;
 197.457 -	inline void SetFieldAtts(TContactFieldAtts aAtts);
 197.458 -	
 197.459 -	inline TInt FieldId() const;
 197.460 -    inline void SetFieldId(TInt aId);
 197.461 -    
 197.462 -    inline TStreamId StreamId() const;
 197.463 -    inline void SetStreamId(TStreamId aId);
 197.464 -    
 197.465 -private:
 197.466 -	TContactFieldAtts iAtts;
 197.467 -    TInt      iFieldUid;
 197.468 -	TStreamId iStreamId;
 197.469 -	};
 197.470 -
 197.471 -#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
 197.472 -
 197.473 -	{
 197.474 -public:
 197.475 -	inline TFieldHeader(TStreamId aId,TContactFieldAtts aAtts);
 197.476 -	
 197.477 -public:
 197.478 -	TStreamId iStreamId;
 197.479 -	TContactFieldAtts iAtts;
 197.480 -	};
 197.481 -
 197.482 -inline TFieldHeader::TFieldHeader(TStreamId aId,TContactFieldAtts aAtts)
 197.483 -	{ iStreamId=aId; iAtts=aAtts; }
 197.484 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
 197.485 -
 197.486 -inline TBool CContactItemField::IsHidden() const
 197.487 -/** Gets the value of the field's hidden attribute.
 197.488 -
 197.489 -@return ETrue if hidden attribute is set, EFalse if not set. */
 197.490 -    { return iAttributes&EHidden; }
 197.491 -
 197.492 -inline TBool CContactItemField::IsReadOnly() const
 197.493 -/** Gets the value of the field's read only attribute.
 197.494 -
 197.495 -@return ETrue if read only attribute set, EFalse if not set. */
 197.496 -    { return iAttributes&EReadOnly; }
 197.497 -
 197.498 -inline TBool CContactItemField::IsDisabled() const
 197.499 -/** Gets the value of the field's disabled attribute.
 197.500 -
 197.501 -@return ETrue if disabled attribute set, EFalse if not set. */
 197.502 -	{ return iAttributes&EDisabled; }
 197.503 -
 197.504 -inline TBool CContactItemField::IsTemplate() const
 197.505 -/** Tests whether the field is in a template, as set by SetTemplateField().
 197.506 -
 197.507 -@return ETrue if field is a template field. EFalse if not. */
 197.508 -	{ return iAttributes&ETemplate; }
 197.509 -
 197.510 -inline TBool CContactItemField::IsPrivate() const
 197.511 -/** Tests whether the field's private attribute is set.
 197.512 -
 197.513 -@return True if the field's private attribute is set, false if not. */
 197.514 -	{ return iExtendedAttributes&EPrivate; }
 197.515 -
 197.516 -inline TBool CContactItemField::IsSpeedDial() const
 197.517 -/** Tests whether the field is a speed dial field.
 197.518 -
 197.519 -@return True if the field is a speed dial field, false if not. */
 197.520 -	{ return iExtendedAttributes&ESpeedDial; }
 197.521 -
 197.522 -inline TBool CContactItemField::DoSynchronize() const
 197.523 -/** Gets the value of the field's synchronise attribute.
 197.524 -
 197.525 -@return ETrue if synchronise attribute is set, EFalse if not set. */
 197.526 -    { return iAttributes&ESynchronize; }
 197.527 -
 197.528 -inline TBool CContactItemField::IsDeleted() const
 197.529 -/** Gets the value of the field's deleted  attribute.
 197.530 -
 197.531 -@return ETrue if the field is deleted, otherwise EFalse.                            */
 197.532 -	{ return iAttributes&EDeleted; }
 197.533 -
 197.534 -inline void CContactItemField::THint::SetIsPhone()
 197.535 -	{iHintValue|=KIntContactHintIsPhone;}
 197.536 -inline void CContactItemField::THint::SetIsMsg()
 197.537 -	{iHintValue|=KIntContactHintIsMsg;}
 197.538 -// turn off Pronunciation bit too?
 197.539 -inline void CContactItemField::THint::SetIsCompanyName()
 197.540 -	{iHintValue|=KIntContactHintIsCompanyName;}
 197.541 -inline void CContactItemField::THint::SetIsFamilyName()
 197.542 -	{iHintValue|=KIntContactHintIsFamilyName;}
 197.543 -inline void CContactItemField::THint::SetIsGivenName()
 197.544 -	{iHintValue|=KIntContactHintIsGivenName;}
 197.545 -inline void CContactItemField::THint::SetIsCompanyNamePronunciation()
 197.546 -	{iHintValue|=KIntContactHintIsCompanyName|KIntContactHintIsPronunciation;}
 197.547 -inline void CContactItemField::THint::SetIsFamilyNamePronunciation()
 197.548 -	{iHintValue|=KIntContactHintIsFamilyName|KIntContactHintIsPronunciation;}
 197.549 -inline void CContactItemField::THint::SetIsGivenNamePronunciation()
 197.550 -	{iHintValue|=KIntContactHintIsGivenName|KIntContactHintIsPronunciation;}
 197.551 -inline void CContactItemField::THint::SetIsAddress()
 197.552 -	{iHintValue|=KIntContactHintIsAddress;}
 197.553 -inline void CContactItemField::THint::SetIsAdditionalName()
 197.554 -	{iHintValue|=KIntContactHintIsAdditionalName;}
 197.555 -inline void CContactItemField::THint::SetIsSuffixName()
 197.556 -	{iHintValue|=KIntContactHintIsSuffixName;}
 197.557 -inline void CContactItemField::THint::SetIsPrefixName()
 197.558 -	{iHintValue|=KIntContactHintIsPrefixName;}
 197.559 -inline void CContactItemField::THint::SetStorageIsInline()
 197.560 -	{iHintValue|=KIntContactHintStorageInline;}
 197.561 -inline void CContactItemField::THint::SetIsEmail()
 197.562 -	{iHintValue|=KIntContactHintIsEmail;}
 197.563 -inline TBool CContactItemField::THint::IsPhone() const
 197.564 -	{return (iHintValue&KIntContactHintIsPhone);}
 197.565 -inline TBool CContactItemField::THint::IsMsg() const
 197.566 -	{return (iHintValue&KIntContactHintIsMsg);}
 197.567 -inline TBool CContactItemField::THint::IsCompanyName() const
 197.568 -	{return ((iHintValue&KIntContactHintIsCompanyNamePronunciation) == KIntContactHintIsCompanyName);}
 197.569 -inline TBool CContactItemField::THint::IsFamilyName() const
 197.570 -	{return ((iHintValue&KIntContactHintIsFamilyNamePronunciation)==KIntContactHintIsFamilyName);}
 197.571 -inline TBool CContactItemField::THint::IsGivenName() const
 197.572 -	{return ((iHintValue&KIntContactHintIsGivenNamePronunciation)==KIntContactHintIsGivenName);}
 197.573 -inline TBool CContactItemField::THint::IsCompanyNamePronunciation() const
 197.574 -	{return ((iHintValue&KIntContactHintIsCompanyNamePronunciation) == KIntContactHintIsCompanyNamePronunciation);}
 197.575 -inline TBool CContactItemField::THint::IsFamilyNamePronunciation() const
 197.576 -	{return ((iHintValue&KIntContactHintIsFamilyNamePronunciation)==KIntContactHintIsFamilyNamePronunciation);}
 197.577 -inline TBool CContactItemField::THint::IsGivenNamePronunciation() const
 197.578 -	{return ((iHintValue&KIntContactHintIsGivenNamePronunciation)==KIntContactHintIsGivenNamePronunciation);}
 197.579 -inline TBool CContactItemField::THint::IsAddress() const
 197.580 -	{return (iHintValue&KIntContactHintIsAddress);}
 197.581 -inline TBool CContactItemField::THint::IsAdditionalName() const
 197.582 -	{return (iHintValue&KIntContactHintIsAdditionalName);}
 197.583 -inline TBool CContactItemField::THint::IsSuffixName() const
 197.584 -	{return (iHintValue&KIntContactHintIsSuffixName);}
 197.585 -inline TBool CContactItemField::THint::IsPrefixName() const
 197.586 -	{return (iHintValue&KIntContactHintIsPrefixName);}
 197.587 -inline TBool CContactItemField::THint::IsStorageInline() const
 197.588 -	{return (iHintValue&KIntContactHintStorageInline);}
 197.589 -inline TBool CContactItemField::THint::IsEmail() const
 197.590 -	{return (iHintValue&KIntContactHintIsEmail);}
 197.591 -	
 197.592 -#ifndef __SYMBIAN_CNTMODEL_USE_SQLITE__	
 197.593 -inline void CContactItemField::THint::SetHasAdditionalUids()
 197.594 -	{iHintValue|=KHintAdditionalMask;}
 197.595 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__ 
 197.596 -inline TBool CContactItemField::THint::Contains(const THint& aHint) const
 197.597 -	{return (iHintValue&aHint.iHintValue);}
 197.598 -
 197.599 -inline TBool CContactItemField::OverRidesLabel() const
 197.600 -/** Tests whether the field's label (as set by SetLabel()) overrides the label 
 197.601 -specified in the field's template.
 197.602 -
 197.603 -@return True if the field's label overrides the label specified in the template; 
 197.604 -false if not. */
 197.605 -	{return iAttributes&EOverRidesLabel;}
 197.606 -
 197.607 -inline TBool CContactItemField::HasExtraStream() const
 197.608 -/** Tests whether the field needs an extra stream to store information not contained 
 197.609 -in the template. This is the case if the field's content type is not based 
 197.610 -on a template, or if the field has a label which overrides the label specified 
 197.611 -in the template.
 197.612 -
 197.613 -@return True if the field uses an extra stream; false if not. */
 197.614 -	{return(!(iAttributes&EUsesTemplateData) || iAttributes&EOverRidesLabel);}
 197.615 -
 197.616 -inline TBool CContactItemField::UsesTemplateTypes() const
 197.617 -/** Tests whether or not the field's content type is based on a template.
 197.618 -
 197.619 -@return True if the field's content type is based on a template; false if not. */
 197.620 -	{return iAttributes&EUsesTemplateData;}
 197.621 -
 197.622 -inline TBool CContactItemField::LabelUnspecified() const
 197.623 -/** Tests whether the field's label has been set, either by a call to SetLabel() 
 197.624 -or by inheriting a label specified in the template.
 197.625 -
 197.626 -@return True if the field's label has been set, false if not. */
 197.627 -	{return iAttributes&ELabelUnspecified;}
 197.628 -
 197.629 -inline TBool CContactItemField::UserAddedField() const
 197.630 -/** Gets the value of the user added field attribute.
 197.631 -
 197.632 -@return ETrue if the user added attribute is set, EFalse if not. */
 197.633 -	{return iAttributes&EUserAddedField;}
 197.634 -
 197.635 -inline TBool CContactItemField::IsCustomFilterable() const
 197.636 -/** Tests the value of the user defined filter attribute.
 197.637 -
 197.638 -@return ETrue if the user defined filter attribute is set, EFalse if not. */
 197.639 -	{
 197.640 -	return (iExtendedAttributes&EUserDefinedFilter || iExtendedAttributes&EUserDefinedFilter1 ||
 197.641 -	       iExtendedAttributes&EUserDefinedFilter2 || iExtendedAttributes&EUserDefinedFilter3 
 197.642 -	       || iExtendedAttributes&EUserDefinedFilter4);
 197.643 -	}
 197.644 -	
 197.645 -#endif
   198.1 --- a/epoc32/include/cntfilt.h	Tue Mar 16 16:12:26 2010 +0000
   198.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   198.3 @@ -1,214 +0,0 @@
   198.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   198.5 -// All rights reserved.
   198.6 -// This component and the accompanying materials are made available
   198.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   198.8 -// which accompanies this distribution, and is available
   198.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  198.10 -//
  198.11 -// Initial Contributors:
  198.12 -// Nokia Corporation - initial contribution.
  198.13 -//
  198.14 -// Contributors:
  198.15 -//
  198.16 -// Description:
  198.17 -//
  198.18 -
  198.19 -#ifndef __CNTFILT_H__
  198.20 -#define __CNTFILT_H__
  198.21 -
  198.22 -#include <e32base.h>
  198.23 -
  198.24 -#if !( defined __SYMBIAN_CNTMODEL_HIDE_DBMS__ && defined __SYMBIAN_CNTMODEL_USE_SQLITE__ )
  198.25 -#include <d32dbms.h>
  198.26 -#endif
  198.27 -
  198.28 -#include <cntdb.h>
  198.29 -
  198.30 -class CCntFilter : public CBase
  198.31 -/** A contact database filter.
  198.32 -
  198.33 -This is used to get a subset of the items in a contact database. 
  198.34 -There are three criteria used when filtering a database:
  198.35 -
  198.36 -- the contact item's state
  198.37 -
  198.38 -- the date/time the contact item was created/last modified/deleted
  198.39 -
  198.40 -- the contact item's type
  198.41 -
  198.42 -The state can be one of: deleted, modified or created (since 
  198.43 -a specified date/time). The filter can be set to include contact items of 
  198.44 -only one state, or it can be set to include contact items of all states, using 
  198.45 -the TInclude enumeration. 
  198.46 -
  198.47 -The date/time value is used in combination with the contact item's state.
  198.48 -
  198.49 -The contact item's type is one of contact card, contact card group, contact 
  198.50 -card template, or own card. Any combination of contact types may be specified 
  198.51 -in the filter, in addition to the contact item's state.
  198.52 -
  198.53 -After the filter has been set up, it should be passed to the function 
  198.54 -CContactDatabase::FilterDatabaseL(). 
  198.55 -@publishedAll
  198.56 -@released
  198.57 -*/
  198.58 -	{
  198.59 -	friend class CPackagerTests; //Comparison test
  198.60 -public:	
  198.61 -	/** Flags to identify which contact items should be included in the filter.
  198.62 -
  198.63 -	Only one of the following values can be set in the filter at a time. However 
  198.64 -	the client may select to filter contacts in all states using EIncludeAllContacts. */
  198.65 -	enum TInclude 
  198.66 -		{ 
  198.67 -		/** Contact items in all states should be included. */
  198.68 -		EIncludeAllContacts,
  198.69 -		/** Only contact items which have been added since the date/time should be included. */
  198.70 -		EIncludeNewContacts,
  198.71 -		/** Only contact items which have been modified since the date/time should be included. */
  198.72 -		EIncludeModifiedContacts,
  198.73 -		/** Only contact items which have been deleted since the date/time should be included. */
  198.74 -		EIncludeDeletedContacts	
  198.75 -		};
  198.76 -	/** Contact item types.*/
  198.77 -	enum TContactType
  198.78 -		{
  198.79 -		/** All contact item types should be included. */
  198.80 -		EIncludeAllTypes = 0x01,
  198.81 -		/** Contact cards should be included in the filter. */
  198.82 -		EContactCards = 0x02,
  198.83 -		/** Contact card groups should be included in the filter. */
  198.84 -		EContactGroups = 0x04, 
  198.85 -		/** Contact card templates should be included in the filter. */
  198.86 -		EContactTemplates = 0x08,
  198.87 -		/** Own cards should be included in the filter. */
  198.88 -		EContactOwnCard = 0x10 
  198.89 -		};
  198.90 -
  198.91 -	IMPORT_C static CCntFilter* NewL();
  198.92 -	IMPORT_C static CCntFilter* NewLC();
  198.93 -	IMPORT_C static CCntFilter* NewL(const CCntFilter* aFilter);
  198.94 -	IMPORT_C static CCntFilter* NewLC(const CCntFilter* aFilter);
  198.95 -	static CCntFilter* NewLC(RReadStream& aStream);
  198.96 -	IMPORT_C ~CCntFilter();
  198.97 -public:
  198.98 -	/** A pointer to an array which stores the filtered list of contact IDs. */
  198.99 -	CContactIdArray* iIds;
 198.100 -//
 198.101 -	IMPORT_C void SetIncludeModifiedContacts(TBool aIncludeModified); 
 198.102 -	IMPORT_C void SetIncludeNewContacts(TBool aIncludeNew); 
 198.103 -	IMPORT_C void SetIncludeDeletedContacts(TBool aIncludeDeleted);
 198.104 -//
 198.105 -	IMPORT_C TBool TestContactFilterType(TUid aTypeUid);
 198.106 -	IMPORT_C void SetContactFilterTypeALL(TBool aFilterAllContacts);
 198.107 -	IMPORT_C void SetContactFilterTypeCard(TBool aFilterCards);
 198.108 -	IMPORT_C void SetContactFilterTypeGroup(TBool aFilterGroups);
 198.109 -	IMPORT_C void SetContactFilterTypeTemplate(TBool aFilterTemplates);
 198.110 -	IMPORT_C void SetContactFilterTypeOwnCard(TBool aFilterOwnCard);
 198.111 -	void ExternalizeL(RWriteStream& aStream) const;
 198.112 -	void InternalizeL(RReadStream& aStream);	
 198.113 -//
 198.114 -	inline TBool ContactFilterTypeALL() const;
 198.115 -	inline TBool ContactFilterTypeCard() const;
 198.116 -	inline TBool ContactFilterTypeGroup() const;
 198.117 -	inline TBool ContactFilterTypeOwnCard() const;
 198.118 -	inline TBool ContactFilterTypeTemplate() const;
 198.119 -//
 198.120 -	inline TBool IncludeModifiedContacts();
 198.121 -	inline TBool IncludeNewContacts();
 198.122 -	inline TBool IncludeDeletedContacts();
 198.123 -//
 198.124 -	inline TTime GetFilterDateTime();
 198.125 -	inline void SetFilterDateTime(TTime aTime);
 198.126 -//
 198.127 -	IMPORT_C void Reset();
 198.128 -//
 198.129 -/**	
 198.130 -    Intended usage: Reserved to preserve future BC  */ 
 198.131 -	IMPORT_C void Reserved1();
 198.132 -/**	
 198.133 -    Intended usage: Reserved to preserve future BC  */
 198.134 -  	IMPORT_C void Reserved2();
 198.135 -
 198.136 -private:
 198.137 -	TTime            iSinceDateTime;
 198.138 -	TInclude		 iInclude;
 198.139 -	TInt32			 iContactType;
 198.140 -	TAny*	         iReserved1;
 198.141 -	TAny*			 iReserved2;
 198.142 -	CCntFilter();
 198.143 -	CCntFilter(const CCntFilter* aFilter);
 198.144 -	};
 198.145 -
 198.146 -
 198.147 -inline TBool CCntFilter::IncludeModifiedContacts()
 198.148 -/** Tests whether the filter includes only contacts modified since the filter's 
 198.149 -date/time.
 198.150 -
 198.151 -@return ETrue if the filter only includes modified contacts. EFalse if not. */
 198.152 -	{return iInclude == EIncludeModifiedContacts;};
 198.153 -
 198.154 -inline TBool CCntFilter::IncludeNewContacts()
 198.155 -/** Tests whether the filter includes only contacts created since the filter's 
 198.156 -date/time.
 198.157 -
 198.158 -@return ETrue if the filter only includes new contacts. EFalse if not. */
 198.159 -	{return iInclude == EIncludeNewContacts;};
 198.160 -
 198.161 -inline TBool CCntFilter::IncludeDeletedContacts()
 198.162 -/** Tests whether the filter includes only contacts deleted since the filter's 
 198.163 -date/time.
 198.164 -
 198.165 -@return ETrue if the filter only includes deleted contacts. EFalse if not. */
 198.166 -	{return iInclude == EIncludeDeletedContacts;};
 198.167 -
 198.168 -inline TTime CCntFilter::GetFilterDateTime()
 198.169 -/** Gets the date and time used by the filter, as set by SetFilterDateTime().
 198.170 -
 198.171 -@return The filter's date and time value. */
 198.172 -	{return iSinceDateTime;};
 198.173 -
 198.174 -inline void CCntFilter::SetFilterDateTime(TTime aTime)
 198.175 -/** Sets the date and time used by the filter in combination with the TInclude 
 198.176 -value to test contact items against.
 198.177 -
 198.178 -@param aTime The new date and time value. */
 198.179 -	{iSinceDateTime = aTime;};
 198.180 -
 198.181 -// CONTACT TYPE
 198.182 -inline TBool CCntFilter::ContactFilterTypeALL() const
 198.183 -/** Tests whether all contact item types are included in the filter, as set by 
 198.184 -SetContactFilterTypeALL().
 198.185 -
 198.186 -@return ETrue if all contact item types are included in the filter, EFalse 
 198.187 -if not. */
 198.188 -	{return iContactType & EIncludeAllTypes;}
 198.189 -
 198.190 -inline TBool CCntFilter::ContactFilterTypeCard() const
 198.191 -/** Tests whether contact cards are included in the filter, as set by SetContactFilterTypeCard().
 198.192 -
 198.193 -@return ETrue if contact cards are included in the filter, EFalse if not. */
 198.194 -	{return iContactType & EContactCards;}
 198.195 -
 198.196 -inline TBool CCntFilter::ContactFilterTypeGroup() const
 198.197 -/** Tests whether contact card groups are included in the filter, as set by SetContactFilterTypeGroup().
 198.198 -
 198.199 -@return ETrue if contact card groups are included in the filter, EFalse if 
 198.200 -not. */
 198.201 -	{return iContactType & EContactGroups;}
 198.202 -
 198.203 -inline TBool CCntFilter::ContactFilterTypeOwnCard() const
 198.204 -/** Tests whether own cards are included in the filter, as set by SetContactFilterTypeOwnCard().
 198.205 -
 198.206 -@return ETrue if own cards are included in the filter, EFalse if not. */
 198.207 -	{return iContactType & EContactOwnCard;}
 198.208 -
 198.209 -inline TBool CCntFilter::ContactFilterTypeTemplate() const
 198.210 -/** Tests whether contact card templates are included in the filter, as set by 
 198.211 -SetContactFilterTypeTemplate().
 198.212 -
 198.213 -@return ETrue if contact card templates are included in the filter, EFalse 
 198.214 -if not. */
 198.215 -	{return iContactType & EContactTemplates;}
 198.216 -
 198.217 -#endif
   199.1 --- a/epoc32/include/cntfldst.h	Tue Mar 16 16:12:26 2010 +0000
   199.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   199.3 @@ -1,191 +0,0 @@
   199.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   199.5 -// All rights reserved.
   199.6 -// This component and the accompanying materials are made available
   199.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   199.8 -// which accompanies this distribution, and is available
   199.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  199.10 -//
  199.11 -// Initial Contributors:
  199.12 -// Nokia Corporation - initial contribution.
  199.13 -//
  199.14 -// Contributors:
  199.15 -//
  199.16 -// Description:
  199.17 -//
  199.18 -
  199.19 -#if !defined(__CNTFLDST_H__)
  199.20 -#define __CNTFLDST_H__
  199.21 -
  199.22 -#if !defined(__E32BASE_H__)
  199.23 -#include <e32base.h>
  199.24 -#endif
  199.25 -
  199.26 -#if !defined(__BAMDESCA_H__)
  199.27 -#include <bamdesca.h>
  199.28 -#endif
  199.29 -
  199.30 -#if !defined(__S32STD_H__)
  199.31 -#include <s32std.h>
  199.32 -#endif
  199.33 -
  199.34 -#if !defined(__CNTDEF_H__)
  199.35 -#include <cntdef.h>
  199.36 -#endif
  199.37 -#define KTextStreamSeparator 0x00
  199.38 -
  199.39 -
  199.40 -
  199.41 -class CStreamStore;
  199.42 -
  199.43 -class CContactFieldStorage : public CBase
  199.44 -/** Abstract base class for the different types of contact field data storage. 
  199.45 -
  199.46 -CContactTextField, CContactStoreField, CContactAgentField, CContactDateField 
  199.47 -and CContactNumberField are all derived from this class.
  199.48 -
  199.49 -A pointer to the base class can be obtained by calling CContactItemField::Storage(). 
  199.50 -Pointers to the derived classes can be retrieved by calling CContactItemField::TextStorage(), 
  199.51 -CContactItemField::StoreStorage() etc. 
  199.52 -@publishedAll
  199.53 -@released
  199.54 -*/
  199.55 -	{
  199.56 -public:
  199.57 -	/** Internalises the field data.
  199.58 -	
  199.59 -	@param aStream Stream from which the the contents of the field should be internalised. */
  199.60 -    virtual void InternalizeL( RReadStream& aStream)=0;
  199.61 -	/** Externalises the field data.
  199.62 -	
  199.63 -	@param aStream Write stream to which the contents of the field should be externalised. */
  199.64 -    virtual void ExternalizeL(RWriteStream& aStream) const=0;
  199.65 -	/** Stores the field data.
  199.66 -	
  199.67 -	@param aStore Reference to the stream store to which the field data is written.
  199.68 -	@return The ID of the stream store. */
  199.69 -	virtual TStreamId StoreL(CStreamStore& aStore) const=0;
  199.70 -	/** Restores the field data.
  199.71 -	
  199.72 -	@param aStore Reference to the store from which the object is to be restored.
  199.73 -	@param aStream Reference to the stream which should be passed to InternalizeL(). */
  199.74 -	virtual void RestoreL(CStreamStore& aStore,RReadStream& aStream)=0;
  199.75 -	/** Tests whether the field storage contains data.
  199.76 -	
  199.77 -	@return True if the field storage contains data, false if not. */
  199.78 -	virtual TBool IsFull() const=0;
  199.79 -private:
  199.80 -	IMPORT_C virtual void CContactFieldStorage_Reserved1();
  199.81 -	TAny* CContactFieldStorage_Reserved;
  199.82 -	};
  199.83 -
  199.84 -class CContactTextField : public CContactFieldStorage
  199.85 -/** Provides access to the text stored in a contact item field. 
  199.86 -
  199.87 -An object of this class can be retrieved using CContactItemField::TextStorage(). 
  199.88 -@publishedAll
  199.89 -@released
  199.90 -*/
  199.91 -	{
  199.92 -public:
  199.93 -	IMPORT_C ~CContactTextField();
  199.94 -public: 
  199.95 -	void InternalizeL(HBufC *aTextStream,TInt aTextFieldIndex);
  199.96 -	void InternalizeL(RReadStream& aStream);
  199.97 -	void ExternalizeL(RWriteStream& aStream) const;
  199.98 -    void ExternalizeL(RWriteStream& aStream,TBool aIsInlineBlob,TInt aTextFieldIndex) const;
  199.99 -	TStreamId StoreL(CStreamStore& aStore) const;
 199.100 -	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
 199.101 -	IMPORT_C void SetTextL(const TDesC& aText);
 199.102 -	IMPORT_C void SetText(HBufC *aHbuf);
 199.103 -	IMPORT_C void SetTextArray(MDesCArray* anArray);
 199.104 -	IMPORT_C TPtrC Text() const;
 199.105 -	TBool IsFull() const;
 199.106 -	IMPORT_C TPtrC StandardTextLC() const;
 199.107 -	IMPORT_C void SetStandardTextL(const TDesC& aText);
 199.108 -	IMPORT_C void SetStandardTextArray(MDesCArray* anArray);
 199.109 -private:
 199.110 -	HBufC *EncodeL(const TDesC& aText,TUid aConversion) const;
 199.111 -	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
 199.112 -private:
 199.113 -	HBufC* iText;
 199.114 -	};
 199.115 -
 199.116 -class CContactStoreField : public CContactFieldStorage
 199.117 -/** Provides access to the binary field data stored in an 8-bit descriptor. 
 199.118 -
 199.119 -An object of this class can be retrieved using CContactItemField::StoreStorage(). 
 199.120 -@publishedAll
 199.121 -@released
 199.122 -*/
 199.123 -	{
 199.124 -public:
 199.125 -	~CContactStoreField();
 199.126 -	TStreamId StoreL(CStreamStore& aStore) const;
 199.127 -	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
 199.128 -	IMPORT_C void SetThingL(const TDesC8& aDes);
 199.129 -	IMPORT_C void SetThingL(const HBufC8& aDes);
 199.130 -	IMPORT_C void SetThingL(const CBufBase* aBuf);
 199.131 -	IMPORT_C HBufC8* Thing() const; 
 199.132 -	void InternalizeL(RReadStream& aStream);
 199.133 -    void ExternalizeL(RWriteStream& aStream) const;
 199.134 -	TBool IsFull() const;
 199.135 -private:
 199.136 -	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
 199.137 -private:
 199.138 -	HBufC8* iThing;
 199.139 -	};
 199.140 -
 199.141 -class CContactAgentField : public CContactFieldStorage
 199.142 -/** Provides access to an agent ID. 
 199.143 -
 199.144 -An agent is a field in a contact item which contains another person's 
 199.145 -contact details. It corresponds to the agent property in the vCard 
 199.146 -specification (version 2.1). The agent is identified by an agent ID 
 199.147 -(a TContactItemId).
 199.148 -
 199.149 -An object of this class can be retrieved using CContactItemField::AgentStorage(). 
 199.150 -@publishedAll
 199.151 -@released
 199.152 -*/
 199.153 -	{
 199.154 -public:
 199.155 -	TStreamId StoreL(CStreamStore& aStore) const;
 199.156 -	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
 199.157 -	IMPORT_C void SetAgentId(TContactItemId aId);
 199.158 -	IMPORT_C TContactItemId Value() const;
 199.159 -	void InternalizeL( RReadStream& aStream);
 199.160 -    void ExternalizeL(RWriteStream& aStream) const;
 199.161 -	TBool IsFull() const;
 199.162 -private:
 199.163 -	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
 199.164 -private:
 199.165 -	TContactItemId iAgentId;
 199.166 -	};
 199.167 -
 199.168 -class CContactDateField : public CContactFieldStorage
 199.169 -/** Provides access to the date/time value stored in a contact item field. 
 199.170 -
 199.171 -An object of this class can be retrieved using CContactItemField::DateTimeStorage(). 
 199.172 -@publishedAll
 199.173 -@released
 199.174 -*/
 199.175 -	{
 199.176 -public:
 199.177 -	CContactDateField();
 199.178 -	TStreamId StoreL(CStreamStore& aStore) const;
 199.179 -	void RestoreL(CStreamStore& aStore,RReadStream& aStream);
 199.180 -	IMPORT_C void SetTime(TTime aTime);
 199.181 -	IMPORT_C void SetTime(TDateTime aDateTime);
 199.182 -	IMPORT_C TTime Time() const;
 199.183 -	void InternalizeL( RReadStream& aStream);
 199.184 -    void ExternalizeL(RWriteStream& aStream) const;
 199.185 -	TBool IsFull() const;
 199.186 -private:
 199.187 -	IMPORT_C /*virtual*/ void CContactFieldStorage_Reserved1();
 199.188 -private:
 199.189 -	TTime iTime;
 199.190 -	};
 199.191 -
 199.192 -
 199.193 -
 199.194 -#endif
   200.1 --- a/epoc32/include/cntitem.h	Tue Mar 16 16:12:26 2010 +0000
   200.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   200.3 @@ -1,559 +0,0 @@
   200.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   200.5 -// All rights reserved.
   200.6 -// This component and the accompanying materials are made available
   200.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   200.8 -// which accompanies this distribution, and is available
   200.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  200.10 -//
  200.11 -// Initial Contributors:
  200.12 -// Nokia Corporation - initial contribution.
  200.13 -//
  200.14 -// Contributors:
  200.15 -//
  200.16 -// Description:
  200.17 -// Persistence layer exports
  200.18 -// 
  200.19 -//
  200.20 -
  200.21 -#if !defined(__CNTITEM_H__)
  200.22 -#define __CNTITEM_H__
  200.23 -
  200.24 -#if !defined(__E32BASE_H__)
  200.25 -#include <e32base.h>
  200.26 -#endif
  200.27 -
  200.28 -#if !defined(__CNTDEF_H__)
  200.29 -#include <cntdef.h>
  200.30 -#endif
  200.31 -
  200.32 -#if !defined(__CNTFIELD_H__)
  200.33 -#include <cntfield.h>
  200.34 -#endif
  200.35 -
  200.36 -#include <cntdb.h>
  200.37 -
  200.38 -
  200.39 -const TInt KUidStringLength =244;
  200.40 -#define KUidStringSeparator '-'
  200.41 -class CContactItemField;
  200.42 -#define KContactMaxFieldNumber 32
  200.43 -class CContactItemViewDef;
  200.44 -class CContactItem;
  200.45 -
  200.46 -const TInt KContactFieldSetSearchAll=-1;
  200.47 -class CContactItemFieldSet : public CBase
  200.48 -/** A contact item's field set. The field set owns an array of contact item fields 
  200.49 -(CContactItemFields). The field set is owned by a contact item, and can be 
  200.50 -retrieved using CContactItem::CardFields(). Use functions in class 
  200.51 -CContactItem to add and remove fields to/from the field set.
  200.52 -
  200.53 -A field set can contain more than one field of the same type, but this is 
  200.54 -not advisable as it may cause problems when synchronising the contacts database. 
  200.55 -@publishedAll
  200.56 -@released
  200.57 -*/
  200.58 -	{
  200.59 -	friend class CContactItemField;
  200.60 -	friend class CContactDatabase;
  200.61 -	friend class CContactTables;
  200.62 -	friend class RPplContactTable;
  200.63 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
  200.64 -    friend class TCntPersistenceUtility;
  200.65 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
  200.66 -public:
  200.67 -	IMPORT_C static CContactItemFieldSet* NewL();
  200.68 -	IMPORT_C static CContactItemFieldSet* NewLC();
  200.69 -	IMPORT_C ~CContactItemFieldSet();
  200.70 -	inline const CContactItemField& operator[](TInt aIndex) const;
  200.71 -	inline CContactItemField& operator[](TInt aIndex);
  200.72 -	inline TInt Find(TFieldType aFieldType) const; // will only find the first such occurence
  200.73 -	inline TInt Find(TFieldType aFieldType,TUid aMapping) const;
  200.74 -	IMPORT_C TInt FindNext(TFieldType aFieldType,TInt aStartPos=KContactFieldSetSearchAll) const;
  200.75 -	IMPORT_C TInt FindNext(TFieldType aFieldType,TUid aMapping,TInt aStartPos=KContactFieldSetSearchAll) const;
  200.76 -	inline TInt Count() const;
  200.77 -	inline void Reset();
  200.78 -	IMPORT_C void UpdateFieldL(const CContactItemField& aField, TInt aMatchCount);
  200.79 -	IMPORT_C void UpdateFieldSyncL(const CContactItemField& aField, TInt aMatchCount);
  200.80 -	IMPORT_C CContactItemFieldSet& AddL(CContactItemField& aField);
  200.81 -	IMPORT_C void Remove(TInt aIndex);
  200.82 -	IMPORT_C void InsertL(TInt aIndex,CContactItemField& aField);
  200.83 -	IMPORT_C void Move(TInt aFrom, TInt aTo);
  200.84 -	IMPORT_C TStreamId StoreL(CStreamStore& aStore,RWriteStream& aTextStream,CStreamStore& aBlobStore);
  200.85 -	TStreamId StoreL(CStreamStore& aStore,RWriteStream& aTextStream,CStreamStore& aBlobStore,CContactTables* aTables);
  200.86 -	IMPORT_C void RestoreL(CStreamStore& aStore, TStreamId anId,CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,RReadStream& aReadStream);
  200.87 -	IMPORT_C void RestoreL(CStreamStore& aStore, TStreamId anId,CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,const CContactItem* aTemplate, HBufC* aTextBuf);
  200.88 -	TInt FieldText(TFieldType aFieldType, TDes &aText, TInt aStartPosition) const;
  200.89 -	CArrayFix<TFieldHeader>* ConstructFieldHeaderArrayLC(RWriteStream& aTextStream, CStreamStore& aBlobStore);
  200.90 -	TInt FieldTypeCount(const CContactItemFieldSet& aSystemTemplateFields, TInt aStartIndex, const CContactItemField& aField) const;
  200.91 -	TBool ContainsFieldTypeMapping(const CContentType& aBaseFieldContentType, const TFieldType& aContactFieldType) const;
  200.92 -	void ExternalizeL(RWriteStream& aStream) const;
  200.93 -	void InternalizeL(RReadStream& aStream);	
  200.94 -private:
  200.95 -	CContactItemFieldSet();
  200.96 -	void ConstructL();
  200.97 -	void SetFieldId(CContactItemField& aField);
  200.98 -	const CContactItemField* FindById(TInt aId) const;
  200.99 -	IMPORT_C TStreamId StoreL(CStreamStore& aStore,const CContactItem* aTemplate,RWriteStream& aStream,CStreamStore& aBlobStore,CContactTables* aTables);
 200.100 -	void RestoreL(CStreamStore& aStore, TStreamId anId, CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,const CContactItem* aTemplate,RReadStream& aReadStream,CContactTables* aContactsTable, RArray<TInt>* aEmailIdArray);
 200.101 -	void RestoreAndAddTemplateL(CStreamStore& aStore, TStreamId aId,CStreamStore* aBlobStore,const CContactItemViewDef& aViewDef,const CContactItem* aTemplate, RReadStream& aReadStream,CContactTables* aContactsTable,RArray<TInt>* aEmailIdArray);
 200.102 -	TInt MatchTemplateField(const CContentType& aContentType,TUint aUserFlags,TBool &aExactMatch) const;
 200.103 -	static HBufC* LoadTextStreamLC(RReadStream& aStream);
 200.104 -	void NonZeroFieldText(TFieldType aFieldType, TDes &aText) const;
 200.105 -
 200.106 -private:
 200.107 -	CArrayPtr<CContactItemField>* iFields;
 200.108 -	};
 200.109 -
 200.110 -class CContactDatabase;
 200.111 -class RCntModel;
 200.112 -class CContactItem : public CBase
 200.113 -/** The abstract base class for contact cards, templates and groups. All contact 
 200.114 -items are identified by a contact ID, (TContactItemId), have a last modified 
 200.115 -date/time and own one or more fields (the field set). Contact items also 
 200.116 -have an access count and attributes (e.g. hidden). Note that fields in a contact 
 200.117 -item also have attributes. Attribute values specified in the contact item 
 200.118 -override those in the contained fields. The access count is a record of the 
 200.119 -number of objects referencing a contact item. A contact item cannot be fully 
 200.120 -deleted until its access count is zero. 
 200.121 -@publishedAll
 200.122 -@released
 200.123 -*/
 200.124 -	{
 200.125 -	friend class CContactCardTemplate;
 200.126 -	friend class CContactItemPlusGroup;
 200.127 -	friend class CContactCard;
 200.128 -	friend class CContactTemplate;
 200.129 -	friend class CContactGroup;
 200.130 -	friend class CContactOwnCard;
 200.131 -	friend class CVCardToContactsAppConverter;
 200.132 -	friend class CContactICCEntry;
 200.133 -	friend class RPplContactTable;
 200.134 -	friend class RPplIdentityTable;
 200.135 -	friend class RPplPreferencesTable;
 200.136 -	friend class CPackagerTests; //Comparison test
 200.137 -	friend class CPackagerCntComparator;
 200.138 -	friend class CContactDatabase;
 200.139 -	friend class CPplContactItemManager;
 200.140 -public:
 200.141 -	IMPORT_C ~CContactItem();
 200.142 -	/** Gets the contact item's type.
 200.143 -	
 200.144 -	@return The contact item's type. */
 200.145 -	virtual TUid Type() const=0;
 200.146 -	static CContactItem* NewLC(RReadStream& aStream);
 200.147 -	IMPORT_C static CContactItem* NewLC(TUid aType);	
 200.148 -	IMPORT_C TContactItemId Id() const;
 200.149 -	IMPORT_C TContactItemId TemplateRefId() const;
 200.150 -	IMPORT_C TTime LastModified() const;
 200.151 -	IMPORT_C void SetLastModified(const TTime& aLastModified);
 200.152 -	IMPORT_C void AddFieldL(CContactItemField& aField);
 200.153 -	IMPORT_C void RemoveField(TInt aFieldPos);
 200.154 -	IMPORT_C void InsertFieldL(CContactItemField& aField,TInt aFieldPos);
 200.155 -	IMPORT_C CContactItemFieldSet& CardFields() const;
 200.156 -	IMPORT_C void SetHidden(TBool aHidden);
 200.157 -	IMPORT_C void SetSystem(TBool aSystem);    	
 200.158 -	IMPORT_C TBool IsHidden();
 200.159 -	IMPORT_C TBool IsSystem();    	
 200.160 -	IMPORT_C void UpdateFieldSet(CContactItemFieldSet* aNewFieldSet);
 200.161 -	IMPORT_C void SetDeleted(TBool aDeleted);
 200.162 -	IMPORT_C TBool IsDeleted() const;
 200.163 -	IMPORT_C void SetTemplateRefId(TContactItemId aUid);
 200.164 -	TContactItemId Agent();
 200.165 -	inline TBool IsDeletable();
 200.166 -	inline void IncAccessCount();
 200.167 -	inline void DecAccessCount();
 200.168 -	inline TInt AccessCount() const;
 200.169 -	IMPORT_C void SetUidStringL(TDesC& aString);
 200.170 -	IMPORT_C TPtrC UidStringL(TInt64 aMachineUniqueId) const;
 200.171 -	TStreamId PopulateStoreL(CStreamStore& aStore, CArrayFix<TFieldHeader>& aFieldHeaderArray) const;
 200.172 -	void AddLabelFieldL();
 200.173 -	IMPORT_C void RestoreTemplateFieldsL(const CContactItemFieldSet& aSystemTemplateFields, const CContactItemFieldSet& aTemplateFields, const CContactItemViewDef& aViewDef);
 200.174 -	void ClearFieldContent();
 200.175 -	inline TPtrC Guid();
 200.176 -	virtual void ExternalizeL(RWriteStream& aStream) const;
 200.177 -	virtual void InternalizeL(RReadStream& aStream);	
 200.178 -
 200.179 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__		
 200.180 -	IMPORT_C void SetId(TContactItemId aId);
 200.181 -	IMPORT_C TUint32 Attributes() const;
 200.182 -	IMPORT_C void SetAttributes(TUint32 aAttributes);
 200.183 -	IMPORT_C void SetAccessCount(TUint32 aAccessCount);
 200.184 -	IMPORT_C void SetCreationDate(const TTime& aTime);
 200.185 -#endif
 200.186 -
 200.187 -public:
 200.188 -	/** Contact item's attribute flags 
 200.189 -		
 200.190 -	These flags can be used to set the various attributes of a contact item. */ 
 200.191 -	enum 
 200.192 -	{
 200.193 -	/** To set the contact item's system attribute. */ 
 200.194 -	ESystem=0x01, 
 200.195 -	/** To set the contact item's hidden attribute. */  
 200.196 -	EHidden=0x02, 
 200.197 -	/** To set the contact item's hidden attribute. */  
 200.198 -	ECompressedGuid=0x04, 
 200.199 -	/** To set the contact item's Is deleted attribute. */ 
 200.200 -	EDeleted=0x08 
 200.201 -	};
 200.202 -protected:
 200.203 -private:
 200.204 -	CContactItem();
 200.205 -	void ConstructL();
 200.206 -	void ConstructL(const CContactItem *aTemplate);
 200.207 -	void MakeUidStringL(TInt64 aMachineUniqueId);
 200.208 -	IMPORT_C void SetHasCompressedGuid(TBool aCompressed);
 200.209 -	TBool GuidIsCompressed() const;
 200.210 -	TInt NumberOfFieldsToStore() const;
 200.211 -
 200.212 -private:
 200.213 -	CContactItemFieldSet* iFieldSet;
 200.214 -	TUint32 iAttributes;
 200.215 -	TContactItemId iId;
 200.216 -	TContactItemId iTemplateRefId;
 200.217 -	TTime iLastModified;
 200.218 -	TTime iCreationDate;
 200.219 -	TUint32 iAccessCount;
 200.220 -	HBufC* iGuid;
 200.221 -	friend class CContactDatabase;
 200.222 -	};
 200.223 -
 200.224 -class CContactItemPlusGroup : public CContactItem
 200.225 -/** Abstract base class for CContactGroup, CContactCard and CContactOwnCard.
 200.226 -
 200.227 -The purpose of this class is to avoid duplication of group functionality 
 200.228 -in its derived classes. 
 200.229 -@publishedAll
 200.230 -@released
 200.231 -*/
 200.232 -	{
 200.233 -public:
 200.234 -	IMPORT_C const CContactIdArray* GroupsJoined() const;
 200.235 -	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
 200.236 -protected:
 200.237 -	CContactItemPlusGroup();
 200.238 -	IMPORT_C ~CContactItemPlusGroup();
 200.239 -public:
 200.240 -	virtual void ExternalizeL(RWriteStream& aStream) const;
 200.241 -	virtual void InternalizeL(RReadStream& aStream);	
 200.242 -
 200.243 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__	
 200.244 -	IMPORT_C void ResetGroups();
 200.245 -	IMPORT_C void SetGroups(CContactIdArray* aGroups);
 200.246 -#endif
 200.247 -
 200.248 -private:
 200.249 -	CContactIdArray* iGroups;
 200.250 -	friend class CContactDatabase;
 200.251 -	friend class RPplLookupGroupsTable;
 200.252 -	friend class RPplGroupMembershipTable;
 200.253 -	};
 200.254 -
 200.255 -class CContactGroup : public CContactItemPlusGroup
 200.256 -/** A contact group.
 200.257 -
 200.258 -A contact group is a contact item which holds a set of associated contact 
 200.259 -item IDs. The members of the group may be contact cards, own cards, or even 
 200.260 -other groups. The group has a label which identifies the group to users, e.g. 
 200.261 -"family", or "colleagues". The type of a contact group is KUidContactGroup, 
 200.262 -as returned by Type().
 200.263 -
 200.264 -Objects of this class are constructed using CContactDatabase::CreateContactGroupL() 
 200.265 -or CreateContactGroupLC(). These functions create the group, optionally with 
 200.266 -a label, add it to the database, and return a pointer to it.
 200.267 -
 200.268 -To create an association between a card and a group, use CContactDatabase::AddContactToGroupL() 
 200.269 -and to remove the association, use RemoveContactFromGroupL(). To find out 
 200.270 -which groups a card belongs to, use CContactCard::GroupsJoinedLC() or CContactOwnCard::GroupsJoinedLC().
 200.271 -
 200.272 -The function CContactDatabase::GetGroupIdListL() may be used to retrieve a 
 200.273 -list of IDs for all groups in the database. 
 200.274 -@publishedAll
 200.275 -@released
 200.276 -*/
 200.277 -	{
 200.278 -public:
 200.279 -	IMPORT_C static CContactGroup* NewL();
 200.280 -	IMPORT_C static CContactGroup* NewLC();
 200.281 -	IMPORT_C ~CContactGroup();
 200.282 -public: // from CContactItem
 200.283 -	IMPORT_C TUid Type() const;
 200.284 -public:
 200.285 -	// default sorted item array is ascending
 200.286 -	IMPORT_C CContactIdArray* ItemsContainedLC() const;
 200.287 -	IMPORT_C const CContactIdArray* ItemsContained() const;
 200.288 -	IMPORT_C TBool IsSystem() const;
 200.289 -	IMPORT_C void SetSystem(TBool aSystem);
 200.290 -	IMPORT_C TBool ContainsItem(TContactItemId aContactId);
 200.291 -	IMPORT_C void SetGroupLabelL(const TDesC& aLabel);
 200.292 -	IMPORT_C TPtrC GetGroupLabelL();
 200.293 -	IMPORT_C TBool HasItemLabelField();
 200.294 -	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
 200.295 -// 
 200.296 -	//IMPORT_C void ReservedFunction1();
 200.297 -	IMPORT_C void AddContactL(TContactItemId aContactId);
 200.298 -	//IMPORT_C void ReservedFunction2();
 200.299 -	IMPORT_C void RemoveContactL(TContactItemId aContactId);
 200.300 -	virtual void ExternalizeL(RWriteStream& aStream) const;
 200.301 -	virtual void InternalizeL(RReadStream& aStream);
 200.302 -
 200.303 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__		
 200.304 -	IMPORT_C void ResetItems();
 200.305 -	IMPORT_C void SetItems(CContactIdArray* aItems);	
 200.306 -#endif
 200.307 -
 200.308 -private:
 200.309 -	CContactGroup();
 200.310 -private:
 200.311 -	CContactIdArray* iItems;
 200.312 -	friend class CContactDatabase;
 200.313 -	friend class RPplGroupMembershipTable;
 200.314 -	};
 200.315 -
 200.316 -class CContactCardTemplate : public CContactItem
 200.317 -/** A contact card template.
 200.318 -
 200.319 -This is a contact item containing a set of fields on which new contact items can 
 200.320 -be based. Templates have a label which is a string which identifies the template 
 200.321 -to a user. For instance, 'work template' could indicate a template used 
 200.322 -to create contact cards in the style of a work colleague. Contact card templates 
 200.323 -have a type of KUidContactCardTemplate, as returned by Type().
 200.324 -
 200.325 -Objects of this class cannot be constructed directly because its constructors 
 200.326 -are protected. Instead, use either CContactDatabase::CreateContactCardTemplateL() 
 200.327 -or CreateContactCardTemplateLC(). These functions create a contact card template, 
 200.328 -add it to the database, and return a pointer to it.
 200.329 -
 200.330 -The function CContactDatabase::GetCardTemplateIdListL() gets a list of the 
 200.331 -IDs of all contact card templates in the database. 
 200.332 -@publishedAll
 200.333 -@released
 200.334 -*/
 200.335 -	{
 200.336 -	friend class CContactDatabase;
 200.337 -	friend class CContactTables;
 200.338 -	friend class RPplContactTable;
 200.339 -	friend class CContactItem;
 200.340 -public:
 200.341 -	IMPORT_C void SetTemplateLabelL(const TDesC& aLabel);
 200.342 -	IMPORT_C TPtrC GetTemplateLabelL();
 200.343 -protected:
 200.344 -	IMPORT_C static CContactCardTemplate* NewL();
 200.345 -	IMPORT_C static CContactCardTemplate* NewLC();
 200.346 -	IMPORT_C static CContactCardTemplate* NewL(const CContactItem *aTemplate);
 200.347 -	IMPORT_C static CContactCardTemplate* NewLC(const CContactItem *aTemplate);
 200.348 -	IMPORT_C TBool HasItemLabelField();
 200.349 -// 
 200.350 -/**         
 200.351 -    Intended usage: Reserved to preserve future BC         */
 200.352 -	IMPORT_C void ReservedFunction1();
 200.353 -/**          
 200.354 -    Intended usage: Reserved to preserve future BC         */
 200.355 -	IMPORT_C void ReservedFunction2();
 200.356 -
 200.357 -protected: // from CContactItem
 200.358 -	IMPORT_C TUid Type() const;
 200.359 -private:
 200.360 -	CContactCardTemplate();
 200.361 -	};
 200.362 -
 200.363 -class CContactCard : public CContactItemPlusGroup
 200.364 -/** A contact card. 
 200.365 -
 200.366 -Implements the Type() function declared in class CContactItem. 
 200.367 -Contact cards may optionally be constructed from a template. 
 200.368 -@publishedAll
 200.369 -@released
 200.370 -*/
 200.371 -	{
 200.372 -public:
 200.373 -	IMPORT_C ~CContactCard();
 200.374 -	IMPORT_C static CContactCard* NewL();
 200.375 -	IMPORT_C static CContactCard* NewLC();
 200.376 -	IMPORT_C static CContactCard* NewL(const CContactItem *aTemplate);
 200.377 -	IMPORT_C static CContactCard* NewLC(const CContactItem *aTemplate);
 200.378 -public: // from CContactItem
 200.379 -	IMPORT_C TUid Type() const;
 200.380 -public:
 200.381 -	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
 200.382 -private:
 200.383 -	CContactCard();
 200.384 -private:
 200.385 -	friend class CContactDatabase;
 200.386 -	};
 200.387 -
 200.388 -class CContactOwnCard : public CContactItemPlusGroup
 200.389 -/** Own card. 
 200.390 -
 200.391 -An own card is a contact card which contains information about the device's 
 200.392 -owner. This can be sent to another compatible electronic device as a vCard. 
 200.393 -The contact database recognises a single own card, referred to as the 
 200.394 -current own card; its ID is returned by CContactDatabase::OwnCardId(). Like 
 200.395 -a contact card, an own card can be a member of one or more contact card groups. 
 200.396 -The own card type is identified by a UID of KUidContactOwnCard.
 200.397 -
 200.398 -Own cards can be constructed using either CContactDatabase::CreateOwnCardLC() 
 200.399 -or CreateOwnCardL(). These functions create an own card, based on the system 
 200.400 -template, add it to the database, set it as the database's current own card 
 200.401 -and return a pointer to it. To change the database's current own card, use 
 200.402 -CContactDatabase::SetOwnCardL(). 
 200.403 -@publishedAll
 200.404 -@released
 200.405 -*/
 200.406 -	{
 200.407 -public:
 200.408 -	IMPORT_C ~CContactOwnCard();
 200.409 -	IMPORT_C static CContactOwnCard* NewL();
 200.410 -	IMPORT_C static CContactOwnCard* NewLC();
 200.411 -	IMPORT_C static CContactOwnCard* NewL(const CContactItem *aTemplate);
 200.412 -	IMPORT_C static CContactOwnCard* NewLC(const CContactItem *aTemplate);
 200.413 -public: // from CContactItem
 200.414 -	IMPORT_C TUid Type() const;
 200.415 -public:
 200.416 -	IMPORT_C CContactIdArray* GroupsJoinedLC() const;
 200.417 -private:
 200.418 -	CContactOwnCard();
 200.419 -private:
 200.420 -	friend class CContactDatabase;
 200.421 -	};
 200.422 -
 200.423 -class CContactTemplate : public CContactItem
 200.424 -/** A contact item template. 
 200.425 -
 200.426 -This is a contact item which is used to seed the initial field set for 
 200.427 -other contact items.
 200.428 -
 200.429 -Non-system (i.e. user-defined) templates are implemented 
 200.430 -by the CContactCardTemplate class. CContactCardTemplate should be 
 200.431 -used in preference to CContactTemplate. 
 200.432 -@publishedAll
 200.433 -@released
 200.434 -*/
 200.435 -	{
 200.436 -public:
 200.437 -	IMPORT_C static CContactTemplate* NewL();
 200.438 -	IMPORT_C static CContactTemplate* NewLC();
 200.439 -	IMPORT_C static CContactTemplate* NewL(const CContactItem *aTemplate);
 200.440 -	IMPORT_C static CContactTemplate* NewLC(const CContactItem *aTemplate);
 200.441 -public: // from CContactItem
 200.442 -	IMPORT_C TUid Type() const;
 200.443 -private:
 200.444 -	CContactTemplate();
 200.445 -	};
 200.446 -
 200.447 -
 200.448 -class CContactICCEntry : public CContactItemPlusGroup
 200.449 -/** A contact ICC entry. 
 200.450 -@publishedAll
 200.451 -@released
 200.452 -*/
 200.453 -	{
 200.454 -public:
 200.455 -	IMPORT_C ~CContactICCEntry();
 200.456 -	IMPORT_C static CContactICCEntry* NewL(const CContactItem& aTemplate);
 200.457 -	static CContactICCEntry* NewL();
 200.458 -public: //from CContactItem
 200.459 -	TUid Type() const;
 200.460 -private:
 200.461 -	CContactICCEntry();
 200.462 -	};
 200.463 -
 200.464 -
 200.465 -class ContactGuid
 200.466 -/** A globally unique identifier enquiry utility.
 200.467 -
 200.468 -Each contact item has a unique identifier, stored as a descriptor. It is 
 200.469 -referred to as the 'UID string'. This is a combination of the unique 
 200.470 -identifier of the database in which the contact item was created, the 
 200.471 -contact item ID and the date/time of the contact item's creation. ContactGuid 
 200.472 -provides a single static exported function to enquire whether an item was 
 200.473 -created in a specified database. 
 200.474 -@publishedAll
 200.475 -@released
 200.476 -*/
 200.477 -	{
 200.478 -public:
 200.479 -	IMPORT_C static TContactItemId IsLocalContactUidString(const TDesC& aString, TInt64 aMachineUniqueId);
 200.480 -	IMPORT_C static TBool GetCreationDate(TDes& aString, TInt64 aMachineUniqueId);
 200.481 -	static HBufC* CreateGuidLC(const TDesC& aCreationDate,TContactItemId aId, TInt64 aMachineUniqueId);
 200.482 -	static HBufC* CreateGuidLC(const TTime& aCreationDate,TContactItemId aId, TInt64 aMachineUniqueId);
 200.483 -	static HBufC* CreateGuidLC(TContactItemId aId, TInt64 aMachineUniqueId);
 200.484 -	};
 200.485 -
 200.486 -inline const CContactItemField& CContactItemFieldSet::operator[](TInt aIndex) const
 200.487 -/** Gets the field located at a specified position in the field set. 
 200.488 -
 200.489 -@param aIndex The position of the field in the field set. This is relative to zero. 
 200.490 -It must be non-negative and less than the number of objects in the array, otherwise 
 200.491 -the operator raises a panic.
 200.492 -
 200.493 -@return A const reference to an element in the array. */
 200.494 -	{ return *(*iFields)[aIndex]; }
 200.495 -
 200.496 -inline CContactItemField& CContactItemFieldSet::operator[](TInt aIndex)
 200.497 -/** Gets the field located at a specified position in the field set. 
 200.498 -
 200.499 -@param aIndex The position of the field in the field set. This is relative to zero. 
 200.500 -It must be non-negative and less than the number of objects in the array, otherwise 
 200.501 -the operator raises a panic.
 200.502 -
 200.503 -@return A non-const reference to an element in the array. */
 200.504 -	{ return *(*iFields)[aIndex]; }
 200.505 -
 200.506 -inline TInt CContactItemFieldSet::Find(TFieldType aFieldType) const
 200.507 -/** Finds the first field in the field set with the specified field type.
 200.508 -
 200.509 -@param aFieldType The field type of interest.
 200.510 -@return If found, the index of the field within the field set, or KErrNotFound 
 200.511 -if not found. */
 200.512 -	{ return FindNext(aFieldType,KContactFieldSetSearchAll); }
 200.513 -
 200.514 -inline TInt CContactItemFieldSet::Find(TFieldType aFieldType,TUid aMapping) const
 200.515 -/** Finds the first field in the field set containing both the content type mapping 
 200.516 -and the field type specified.
 200.517 -
 200.518 -@param aFieldType The field type of interest.
 200.519 -@param aMapping The content type mapping of interest.
 200.520 -@return If found, the index of the field within the field set, or KErrNotFound 
 200.521 -if not found. */
 200.522 -	{ return FindNext(aFieldType,aMapping,KContactFieldSetSearchAll); }
 200.523 -
 200.524 -inline TInt CContactItemFieldSet::Count() const
 200.525 -/** Gets the number of fields in the field set.
 200.526 -
 200.527 -@return The number of fields in the field set. */
 200.528 -	{ return iFields->Count(); }
 200.529 -
 200.530 -inline void CContactItemFieldSet::Reset()
 200.531 -/** Deletes all fields in the field set. */
 200.532 -	{ iFields->ResetAndDestroy(); }
 200.533 -
 200.534 -inline TBool CContactItem::IsDeletable()
 200.535 -/** Tests whether the contact item is deletable. 
 200.536 -
 200.537 -This is true if the item's access count is zero.
 200.538 -
 200.539 -@return ETrue if deletable, EFalse if not deletable. */
 200.540 -	{return (iAccessCount == 0);}
 200.541 -
 200.542 -inline void CContactItem::IncAccessCount()
 200.543 -/** Increments the contact item's access count. */
 200.544 -	{iAccessCount++;}
 200.545 -
 200.546 -inline void CContactItem::DecAccessCount()
 200.547 -/** Decrements the contact item's access count. */
 200.548 -	{if(iAccessCount) iAccessCount--;}
 200.549 -
 200.550 -inline TInt CContactItem::AccessCount() const
 200.551 -/** Gets the contact item's access count.
 200.552 -
 200.553 -@return The item's access count. */
 200.554 -	{return(iAccessCount);}
 200.555 -
 200.556 -inline TPtrC CContactItem::Guid() 
 200.557 -/** Accessor function for Contact Guid. 
 200.558 - * This is used to cache contact items that are added during a sync.
 200.559 - @return Guid    */
 200.560 - { return iGuid ? *iGuid : TPtrC(KNullDesC); }
 200.561 -
 200.562 -#endif
   201.1 --- a/epoc32/include/cntsync.h	Tue Mar 16 16:12:26 2010 +0000
   201.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   201.3 @@ -1,135 +0,0 @@
   201.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   201.5 -// All rights reserved.
   201.6 -// This component and the accompanying materials are made available
   201.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   201.8 -// which accompanies this distribution, and is available
   201.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  201.10 -//
  201.11 -// Initial Contributors:
  201.12 -// Nokia Corporation - initial contribution.
  201.13 -//
  201.14 -// Contributors:
  201.15 -//
  201.16 -// Description:
  201.17 -//
  201.18 -
  201.19 -#ifndef __CNTSYNC_H__
  201.20 -#define __CNTSYNC_H__
  201.21 -
  201.22 -
  201.23 -#include <e32base.h>
  201.24 -#include <cntdef.h>
  201.25 -
  201.26 -class CContactICCEntry;
  201.27 -class MContactSynchroniser
  201.28 -/** 
  201.29 -Abstract interface for a contacts phonebook synchroniser.
  201.30 -
  201.31 -It should be inherited by classes which implement the phonebook 
  201.32 -synchroniser API. The plug-in should have a second UID of 
  201.33 -0x101F4A6E (KUidContactSynchroniserDll).
  201.34 -
  201.35 -@internalAll
  201.36 -*/
  201.37 -	{
  201.38 -public:
  201.39 -	/**
  201.40 -	@internalAll
  201.41 -	*/
  201.42 -	enum TValidateOperation
  201.43 -		{
  201.44 -		ERead,		/** Check a cached ICC contact can be read */
  201.45 -		ESearch,	/** Check a cached ICC contact can be searched */
  201.46 -		EEdit		/** Check a cached ICC contact can be edited */
  201.47 -		};
  201.48 -public:
  201.49 -	/*
  201.50 -	A CContactICCEntry is wanted for read/search or edit.
  201.51 -	*/
  201.52 -	virtual TInt ValidateContact(TValidateOperation aOp, TContactItemId aId) = 0;
  201.53 -	/*
  201.54 -	A CContactICCEntry has being added/edited.
  201.55 -	*/
  201.56 -	virtual TInt ValidateWriteContact(CContactICCEntry& aContactItem) = 0;
  201.57 -	/*
  201.58 -	A CContactICCEntry is being deleted from the database.
  201.59 -	*/
  201.60 -	virtual TInt DeleteContact(TContactItemId aId) = 0;
  201.61 -	/*
  201.62 -	Release resources used by Phonebook Synchroniser. Called prior to unloading plug-in.
  201.63 -	*/
  201.64 -	virtual void Release() = 0;
  201.65 -	/*
  201.66 -	A new CContactICCEntry has been added to the database. 
  201.67 -	(Called after ValidateWriteContact() and database write has completed.)
  201.68 -	*/
  201.69 -	virtual void UpdatePostWriteL(const CContactICCEntry& aContactItem) = 0;
  201.70 -
  201.71 -	/*
  201.72 -	Id of template contact for specified phonebook
  201.73 -	*/
  201.74 -	virtual TContactItemId ICCTemplateIdL(TUid aPhonebookUid) = 0;
  201.75 -
  201.76 -	/*
  201.77 -	Id of contact group for specified phonebook
  201.78 -	*/
  201.79 -	virtual TContactItemId GroupIdL(TUid aPhonebookUid) = 0;
  201.80 -
  201.81 -	/*
  201.82 -	Request notifiction of Synchronisation state changes for specified phonebook
  201.83 -	*/
  201.84 -	virtual void NotifySyncStateChange(TRequestStatus& aStatus, TUid aPhonebookUid) = 0;
  201.85 -	/*
  201.86 -	Cancel notification of Synchronisation state changes for specified phonebook
  201.87 -	*/
  201.88 -	virtual void CancelNotifyRequest(TUid aPhonebookUid) = 0;
  201.89 -	/*
  201.90 -	Test Synchronisation state changes for specified phonebook
  201.91 -	*/
  201.92 -	virtual TBool IsSynchronisedL(TUid aPhonebookUid) = 0;
  201.93 -
  201.94 -	/*
  201.95 -	List of Phonebooks supported by Phonebook Synchroniser that may be present on the ICC.
  201.96 -	*/
  201.97 -	virtual TInt PhonebookList(RArray<TUid>& aPhonebookList) = 0;
  201.98 -
  201.99 -private:
 201.100 -	IMPORT_C virtual void MContactSynchroniser_Reserved_1();
 201.101 -	};
 201.102 -	
 201.103 -
 201.104 -/** The UID for the default phone book synchroniser ECom plugin interface
 201.105 -*/
 201.106 -const TUid KUidEcomCntPhBkSyncInterface = {0x102035FD};
 201.107 -	
 201.108 -class CContactSynchroniser : public CBase, public MContactSynchroniser
 201.109 -/** 
 201.110 -Abstract interface for a ECom contacts phonebook synchroniser plugin
 201.111 -
 201.112 -It should be inherited by classes which implement the phonebook 
 201.113 -synchroniser API in a platform secured environment. The ECom plug-in interface uid is 
 201.114 -KUidEcomCntPhBkSyncInterface
 201.115 -@internalAll
 201.116 -*/
 201.117 -	{
 201.118 -public:
 201.119 -	// From MContactSynchroniser
 201.120 -	virtual TInt ValidateContact(TValidateOperation aOp, TContactItemId aId) = 0;
 201.121 -	virtual TInt ValidateWriteContact(CContactICCEntry& aContactItem) = 0;
 201.122 -	virtual TInt DeleteContact(TContactItemId aId) = 0;
 201.123 -	virtual void Release() = 0;
 201.124 -	virtual void UpdatePostWriteL(const CContactICCEntry& aContactItem) = 0;
 201.125 -	virtual TContactItemId ICCTemplateIdL(TUid aPhonebookUid) = 0;
 201.126 -	virtual TContactItemId GroupIdL(TUid aPhonebookUid) = 0;
 201.127 -	virtual void NotifySyncStateChange(TRequestStatus& aStatus, TUid aPhonebookUid) = 0;
 201.128 -	virtual void CancelNotifyRequest(TUid aPhonebookUid) = 0;
 201.129 -	virtual TBool IsSynchronisedL(TUid aPhonebookUid) = 0;
 201.130 -	virtual TInt PhonebookList(RArray<TUid>& aPhonebookList) = 0;
 201.131 -public:
 201.132 -	static CContactSynchroniser* NewL();
 201.133 -	IMPORT_C virtual ~CContactSynchroniser();
 201.134 -private:
 201.135 -	TUid iDtor_ID_Key;
 201.136 -	};
 201.137 -
 201.138 -#endif
   202.1 --- a/epoc32/include/cntvcard.h	Tue Mar 16 16:12:26 2010 +0000
   202.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   202.3 @@ -1,131 +0,0 @@
   202.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   202.5 -// All rights reserved.
   202.6 -// This component and the accompanying materials are made available
   202.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   202.8 -// which accompanies this distribution, and is available
   202.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  202.10 -//
  202.11 -// Initial Contributors:
  202.12 -// Nokia Corporation - initial contribution.
  202.13 -//
  202.14 -// Contributors:
  202.15 -//
  202.16 -// Description:
  202.17 -//
  202.18 -
  202.19 -#ifndef __CNTVCARD_H__
  202.20 -#define __CNTVCARD_H__
  202.21 -
  202.22 -// System includes
  202.23 -#include <cntdb.h>
  202.24 -#include <vcard.h>
  202.25 -
  202.26 -// Classes referenced
  202.27 -class CVCardAddress;
  202.28 -class CVCardItemAndLabel;
  202.29 -class CVCardToContactsAppConverter;
  202.30 -
  202.31 -// Enumerations
  202.32 -/**
  202.33 -@internalComponent
  202.34 -@released
  202.35 -*/
  202.36 -enum TCntVCardImportType
  202.37 -	{
  202.38 -	ECntVCardImportTypeFirstSync,
  202.39 -	ECntVCardImportTypeMerge
  202.40 -	};
  202.41 -		
  202.42 -class CContactVCardConverter : public CContactEcomConverter
  202.43 -/**
  202.44 -Plug-in vCard to CContactItem converter.
  202.45 -@publishedAll
  202.46 -@released
  202.47 -*/
  202.48 -	{
  202.49 -public:
  202.50 -	// Ideally each converter should be able to define its own flags relevant 
  202.51 -	// to its own mode of operation. Due to the legacy design (defining flags 
  202.52 -	// in CContactDatabase) they have to be redeclared here. Long term we hope 
  202.53 -	// to deprecate the CContactDatabase flags and rely on those declared in 
  202.54 -	// the converter implementation.
  202.55 -	/** Import and export format flags. Contacts can be imported into
  202.56 -	or exported from the contact database as vCards.
  202.57 -
  202.58 -	The following options are available during import and export.
  202.59 -               
  202.60 -	@publishedAll
  202.61 -	@released
  202.62 -	*/
  202.63 -	enum TOptions 
  202.64 -	   	{
  202.65 -  		EDefault = CContactDatabase::EDefault,
  202.66 -        /** Handle Symbian's extended vCard format options. */
  202.67 -		EIncludeX = CContactDatabase::EIncludeX,
  202.68 -		/** Support non-standard extensions requried by Symbian PC connectivity software
  202.69 -		and Microsoft, amongst others. */
  202.70 -  		ETTFormat = CContactDatabase::ETTFormat ,
  202.71 -		/** Don't export the contact ID (for exporting only). */
  202.72 -		EExcludeUid = CContactDatabase::EExcludeUid,
  202.73 -		/** Decrease the contact's access count when importing and exporting. */
  202.74 -		EDecreaseAccessCount = CContactDatabase::EDecreaseAccessCount,
  202.75 -		/** Only import the first contact in the read stream (for importing only). */
  202.76 -		EImportSingleContact = CContactDatabase::EImportSingleContact,
  202.77 -		/** Increase the contact's access count when importing and exporting. */
  202.78 -		EIncreaseAccessCount = CContactDatabase::EIncreaseAccessCount,
  202.79 -		/** Sets a contact item to the local time when importing. */
  202.80 -		ELocalTime = CContactDatabase::ELocalTime,
  202.81 -		/** Allows to set a template to a contact item that does not exist. */
  202.82 -		ENullTemplateId = CContactDatabase::ENullTemplateId,
  202.83 -		/** Allows to set white spaces as value for an empty field.  */
  202.84 -		EConnectWhitespace=0x0100,		// Used to correctly manage the TimeIS protocol for syncing.
  202.85 -		/**
  202.86 -		During import ignore the UID property value of the vCard.  By ignoring
  202.87 -		the UID the client is indicating that it knows that the contact does not
  202.88 -		already exist in the database (i.e. the contact is being added rather
  202.89 -		than being updated).  Within the CContactVCardConverter::ImportL()
  202.90 -		method no attempt to search for the UID in the database will be made.
  202.91 -		For a series of addition of vCards with UIDs use of this option will
  202.92 -		give a performance improvement since the search for the UID in the
  202.93 -		Contacts database can become very costly as the number of contacts
  202.94 -		grows.
  202.95 -		*/
  202.96 -		EIgnoreUid = CContactDatabase::EConverterReserved1,		
  202.97 -		/**
  202.98 -		During import, if it is determined that the contact item being imported 
  202.99 -		already exists in the database then the contact item in the database will 
 202.100 -		be deleted before being replaced by the vCard being imported. This option
 202.101 -		should be used when the client does not want a merge type behaviour for
 202.102 -		existing contact items. This option will typically be used in a sync use case
 202.103 -		where the vCard data that the client is provided with has already been through a process 
 202.104 -		of conflict resolution and so the existing contact item should be replaced not merged.
 202.105 -		*/		
 202.106 -		EReplaceIfExists = CContactDatabase::EConverterReserved2,
 202.107 -  		};
 202.108 -  		
 202.109 -	/**
 202.110 -	@internalComponent
 202.111 -	@released
 202.112 -	*/
 202.113 -	enum TVersitPropertyType
 202.114 -		{
 202.115 -		EPropertyValueSingle,
 202.116 -		EPropertyValueComposite,
 202.117 -		EPropertyValueHandlingNotImplemented
 202.118 -		};
 202.119 -public: // from CContactConverter
 202.120 -	static CContactVCardConverter* NewL();
 202.121 -	CArrayPtr<CContactItem>* ImportL(CContactDatabase& aDb,RReadStream& aReadStream,TBool& aImportSuccessful,TInt aOptions,TBool aImportSingle);
 202.122 -	void ExportL(CContactDatabase& aDb,const CContactIdArray& aSelectedContactIds,RWriteStream& aWriteStream,TInt aOptions,const Versit::TVersitCharSet aCharSet, TBool aExportPrivateFields, TInt aCommitNumber);
 202.123 -public: // Utility
 202.124 -	static TBool ContainsExportableData(const TDesC& aText);
 202.125 -	static TBool ContainsImportableData(const TDesC& aText, TVersitPropertyType aType, TCntVCardImportType aImportType);
 202.126 -private:
 202.127 -	static TBool ContainsData(const TDesC& aText);
 202.128 -	void doImportL(CVCardToContactsAppConverter& aConverter, CParserVCard& aVCard, CContactDatabase& aDb, TInt aOption, TBool aIncAccessCount, TBool aDecAccessCount, TBool& aImportSuccessful, CArrayPtr<CContactItem>* aContactItems, TBool aIsInTransaction, TContactItemId aIdForUpdate);
 202.129 -	TContactItemId IsVCardMergeNeededL(CVCardToContactsAppConverter& aConverter, CParserVCard& aVCard, CContactDatabase& aDb, TInt aOption);
 202.130 -	void ModifyAccessCountL(CContactItem& aContact,  TBool aIncAccessCount, TBool aDecAccessCount);
 202.131 -	void HandleAgentsInVCardL(CVCardToContactsAppConverter& aConverter, CArrayPtr<CParserProperty>* aAgentProperties, CContactItem& aContact, CContactDatabase& aDb, TInt aOption, TBool aIncAccessCount, TBool aDecAccessCount, CArrayPtr<CContactItem>* aContactItemArray, TBool aMerge);
 202.132 - 	};
 202.133 -
 202.134 -#endif
   203.1 --- a/epoc32/include/cntview.h	Tue Mar 16 16:12:26 2010 +0000
   203.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   203.3 @@ -1,480 +0,0 @@
   203.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   203.5 -// All rights reserved.
   203.6 -// This component and the accompanying materials are made available
   203.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   203.8 -// which accompanies this distribution, and is available
   203.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  203.10 -//
  203.11 -// Initial Contributors:
  203.12 -// Nokia Corporation - initial contribution.
  203.13 -//
  203.14 -// Contributors:
  203.15 -//
  203.16 -// Description:
  203.17 -//
  203.18 -
  203.19 -#ifndef __CNTVIEW_H__
  203.20 -#define __CNTVIEW_H__
  203.21 -
  203.22 -#include <cntviewbase.h>
  203.23 -
  203.24 -/** The maximum length of the string used by contact sub view ranges to find the 
  203.25 -item at the upper or lower limit of the range.
  203.26 -
  203.27 -In practice, only the first character in the string is used and this value 
  203.28 -is ignored. */
  203.29 -const TInt KMaxBoundaryMatchLength=8;
  203.30 -
  203.31 -class CContactGroupView: public CContactViewBase, public MContactViewObserver
  203.32 -/** Provides a view of a group of contact items.
  203.33 -
  203.34 -The view uses an underlying view. For items to appear in the group view, they 
  203.35 -must exist in the underlying view.
  203.36 -
  203.37 -The TGroupType enumeration defines whether the view displays items that belong 
  203.38 -to the group, items that do not belong to the group, or items that do not 
  203.39 -belong to any group.
  203.40 -
  203.41 -The group view observes its underlying view so that it is kept up to date 
  203.42 -if the contents of the underlying view change.
  203.43 -
  203.44 -The group can be identified by a contact item ID or by a label, e.g. "family", 
  203.45 -or "colleagues".
  203.46 -
  203.47 -@see CContactGroup 
  203.48 -@publishedAll
  203.49 -@released
  203.50 -*/
  203.51 -	{
  203.52 -friend class CGroupViewTester;
  203.53 -public:
  203.54 -	/** Defines the types of contact group view. */
  203.55 -	enum TGroupType
  203.56 -		{
  203.57 -		/** The view contains contact items in the group. */
  203.58 -		EShowContactsInGroup,
  203.59 -		/** The view contains contact items not in the group. */
  203.60 -		EShowContactsNotInGroup,
  203.61 -		/** The view contains contact items not in any group. */
  203.62 -		EShowContactsNotInAnyGroup
  203.63 -		};
  203.64 -public:
  203.65 -	IMPORT_C static CContactGroupView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver,const TContactItemId aGroupId,const TGroupType aGroupType);
  203.66 -	IMPORT_C static CContactGroupView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver, const TDesC& aGroupName,const TGroupType aGroupType);
  203.67 -
  203.68 -	// Factory constructor for version 2 behaviour
  203.69 -	IMPORT_C static CContactGroupView* NewL(CContactViewBase& aView,const CContactDatabase& aDb, MContactViewObserver& aObserver,const TContactItemId aGroupId,const TGroupType aGroupType);
  203.70 -	// Factory constructor for version 2 behaviour
  203.71 -	IMPORT_C static CContactGroupView* NewL(CContactViewBase& aView,const CContactDatabase& aDb, MContactViewObserver& aObserver, const TDesC& aGroupName,const TGroupType aGroupType);	
  203.72 -	//All CContactViewBase derived classes in public headers,
  203.73 -	//should mandatorily implement this reserved function.	
  203.74 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
  203.75 -	~CContactGroupView();
  203.76 -public: // From CContactViewBase
  203.77 -	TContactItemId AtL(TInt aIndex) const;
  203.78 -	TInt CountL() const;
  203.79 -	TInt FindL(TContactItemId aId) const;
  203.80 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
  203.81 -	const CViewContact& ContactAtL(TInt aIndex) const;
  203.82 -	TContactViewPreferences ContactViewPreferences();
  203.83 -	const RContactViewSortOrder& SortOrderL() const;
  203.84 -protected:
  203.85 -	IMPORT_C virtual void UpdateGroupViewL();
  203.86 -private: // From MContactViewObserver.
  203.87 -	void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
  203.88 -private: 
  203.89 -	void ConstructL(MContactViewObserver& aObserver,TContactItemId aGroupId);
  203.90 -	void UpdateForContactsInGroupL();
  203.91 -	void UpdateForContactsNotInThisGroupL();
  203.92 -	void UpdateForUnfiledContactsL();
  203.93 -	void UpdateForContactListL(const CContactIdArray* aArray);
  203.94 -	TContactItemId GetGroupIdbyNameL(const TDesC& aGroupName);
  203.95 -	TBool HandleRemoveEventL(TContactViewEvent& aEvent);
  203.96 -	TBool HandleAddEventL(TContactViewEvent& aEvent);
  203.97 -	TBool HandleAddEventForUnfiledContactsL(const TContactViewEvent& aEvent );
  203.98 -	static TInt CompareMappingsL(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
  203.99 -	TInt static CompareIndexesAllowingDuplicates(const TContactIdWithMapping& aFirst, const TContactIdWithMapping& aSecond);
 203.100 -private:
 203.101 -	CContactGroupView(const CContactDatabase& aDb,CContactViewBase& aView,TGroupType aGroupType);
 203.102 -	void UpdateMappingsL();
 203.103 -	void NotifyRemovedMembersL(const CContactIdArray* aArray);
 203.104 -private:
 203.105 -	RArray<TContactIdWithMapping> iGroupContacts;
 203.106 -	TContactItemId iGroupId;
 203.107 -	CContactViewBase& iView;
 203.108 -	TGroupType iGroupType;
 203.109 -	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
 203.110 -	};
 203.111 -
 203.112 -
 203.113 -class CContactFindView: public CContactViewBase, public MContactViewObserver
 203.114 -/** Provides a view of an existing CContactViewBase-derived object, populated using 
 203.115 -search criteria.
 203.116 -
 203.117 -The find view only contains contact items from the underlying view that match 
 203.118 -the search criteria.
 203.119 -
 203.120 -The find view observes its underlying view so that it is kept up to date if 
 203.121 -the contents of the underlying view change.
 203.122 -
 203.123 -The search criteria (one or more words) are held in an MDesCArray object. 
 203.124 -The fields involved in the search are those that have been used to sort the 
 203.125 -underlying view. 
 203.126 -@publishedAll
 203.127 -@released
 203.128 -*/
 203.129 -	{
 203.130 -public:
 203.131 -	IMPORT_C static CContactFindView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver,MDesCArray* aFindWords);
 203.132 -	IMPORT_C static CContactFindView* NewL(const CContactDatabase& aDb,CContactViewBase& aView,MContactViewObserver& aObserver,MDesCArray* aFindWords, TSearchType aSearchType);
 203.133 -	
 203.134 -	// Factory constructor for version 2 behaviour
 203.135 -	IMPORT_C static CContactFindView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,MDesCArray* aFindWords);
 203.136 -	// Factory constructor for version 2 behaviour
 203.137 -	IMPORT_C static CContactFindView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,MDesCArray* aFindWords, TSearchType aSearchType);
 203.138 -
 203.139 -	~CContactFindView();
 203.140 -public: // From CContactViewBase
 203.141 -	TContactItemId AtL(TInt aIndex) const;
 203.142 -	TInt CountL() const;
 203.143 -	TInt FindL(TContactItemId aId) const;
 203.144 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 203.145 -	const CViewContact& ContactAtL(TInt aIndex) const;
 203.146 -	TContactViewPreferences ContactViewPreferences();
 203.147 -	const RContactViewSortOrder& SortOrderL() const;
 203.148 -protected:
 203.149 -	IMPORT_C virtual void UpdateFindViewL();
 203.150 -public:
 203.151 -	IMPORT_C void RefineFindViewL(MDesCArray* aFindWords);
 203.152 -	//All CContactViewBase derived classes in public headers,
 203.153 -	//should mandatorily implement this reserved function.	
 203.154 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 203.155 -private: // From MContactViewObserver.
 203.156 -	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
 203.157 -private: 
 203.158 -	void ConstructL(MContactViewObserver& aObserver,MDesCArray* aFindWords);
 203.159 -	void DeleteFindContacts();
 203.160 -	void TightenFindViewCriteriaL();
 203.161 -	void HandleRemoveEventL(TContactViewEvent& aEvent);
 203.162 -	void HandleAddEventL(TContactViewEvent& aEvent);
 203.163 -	void CopyNewFindWordsL(MDesCArray* aFindWords);
 203.164 -	void DestroyFindWordsArray();
 203.165 -	TInt InsertContact(const CViewContact* aNewContact);
 203.166 -private:
 203.167 -	CContactFindView(const CContactDatabase& aDb,CContactViewBase& aView, TSearchType aSearchType);
 203.168 -private:
 203.169 -	RPointerArray<CViewContact> iFindContacts;
 203.170 -	CPtrCArray* iFindWords;
 203.171 -	CContactViewBase& iView;
 203.172 -	const TSearchType iSearchType;
 203.173 -	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
 203.174 -	};
 203.175 -
 203.176 -
 203.177 -class CContactFilteredView : public CContactViewBase, public MContactViewObserver
 203.178 -/** Provides a filtered view over an existing CContactViewBase derived object.
 203.179 -
 203.180 -For example, it might provide a view containing only contacts that have an 
 203.181 -email address. For efficiency reasons there are a limited set of filters available 
 203.182 -(defined in CContactDatabase::TContactViewFilter).
 203.183 -
 203.184 -The filtered view observes its underlying view so that it is kept up to date 
 203.185 -if the contents of the underlying view change. It will, in turn, notify its 
 203.186 -observers.
 203.187 -
 203.188 -Filters only apply to non-hidden contact fields with content. 
 203.189 -@publishedAll
 203.190 -@released
 203.191 -*/
 203.192 -	{
 203.193 -public:
 203.194 -	IMPORT_C static CContactFilteredView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,CContactViewBase& aView,TInt aFilter);
 203.195 -	// Factory constructor for version 2 behaviour
 203.196 -	IMPORT_C static CContactFilteredView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,TInt aFilter);
 203.197 -
 203.198 -	//All CContactViewBase derived classes in public headers,
 203.199 -	//should mandatorily implement this reserved function.	
 203.200 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 203.201 -	~CContactFilteredView();
 203.202 -public: // From CContactViewBase.
 203.203 -	TContactItemId AtL(TInt aIndex) const;
 203.204 -	TInt CountL() const;
 203.205 -	TInt FindL(TContactItemId aId) const;
 203.206 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 203.207 -	const CViewContact& ContactAtL(TInt aIndex) const;
 203.208 -	TContactViewPreferences ContactViewPreferences();
 203.209 -	const RContactViewSortOrder& SortOrderL() const;
 203.210 -	virtual void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts);
 203.211 -	virtual void ContactsMatchingPrefixL(const MDesCArray& aFindWords, RPointerArray<CViewContact>& aMatchedContacts);
 203.212 -private: // From MContactViewObserver.
 203.213 -	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
 203.214 -private:
 203.215 -	CContactFilteredView(const CContactDatabase& aDb,TInt aFilter,CContactViewBase& aView);
 203.216 -	void ConstructL(MContactViewObserver& aObserver);
 203.217 -	void CreateFilteredIdArray();
 203.218 -	void UpdateFilteredIdArrayL(TContactViewEvent& aEvent, TBool& aViewModified);
 203.219 -	void HandleAddEventL(TContactViewEvent& aEvent, TBool& aViewModified);
 203.220 -	void HandleRemoveEventL(TContactViewEvent& aEvent, TBool& aViewModified);
 203.221 -	TInt BinaryInsertL(TContactIdWithMapping aId);
 203.222 -	static TInt FilterCallBack(TAny* aSelf);
 203.223 -	static TBool CompareMappings(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
 203.224 -	void FilterResultsArray(RPointerArray<CViewContact>& aMatchedContacts);
 203.225 -	TInt DoFilterIncrementL();
 203.226 -	void UpdateMappingsL();
 203.227 -private:
 203.228 -	const TInt iFilter;
 203.229 -	CContactViewBase& iView;
 203.230 -	RArray<TContactIdWithMapping> iFilteredIdArray;
 203.231 -	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
 203.232 -	};
 203.233 -
 203.234 -
 203.235 -class CContactViewRangeBase : public CBase
 203.236 -/** The abstract base class for all contact view range classes.
 203.237 -
 203.238 -Range classes are used by contact sub views to specify the upper and lower 
 203.239 -range boundaries and for searching their underlying view.
 203.240 -
 203.241 -@see CContactSubView 
 203.242 -@publishedAll
 203.243 -@released
 203.244 -*/
 203.245 -	{
 203.246 -public:
 203.247 -	/** Defines the range criteria. */
 203.248 -	enum TCriteria
 203.249 -		{
 203.250 -		/** Less than. */
 203.251 -		ELessThan,
 203.252 -		/** Less than or equal to. */
 203.253 -		ELessThanOrEqualTo,
 203.254 -		/** Greater than. */
 203.255 -		EGreaterThan,
 203.256 -		/** Greater than or equal to. */
 203.257 -		EGreaterThanOrEqualTo
 203.258 -		};
 203.259 -public:
 203.260 -	~CContactViewRangeBase();
 203.261 -	inline TInt LowIndex() const;
 203.262 -	inline TInt HighIndex() const;
 203.263 -	/** Sets the iLow and iHigh members. */
 203.264 -	virtual void SetL()=0;
 203.265 -	IMPORT_C TBool IndicesValid() const;
 203.266 -protected:
 203.267 -	CContactViewRangeBase(const CContactViewBase& aView);
 203.268 -	void ConstructL();
 203.269 -	TInt FindIndexL(const TDesC& aMatch,TCriteria aCriteria) const;
 203.270 -	TBool MatchesCriteriaL(TCriteria aCriteria,const TDesC& aMatch,TInt aIndex) const;
 203.271 -	void ValidateIndices();
 203.272 -protected:
 203.273 -	/** The sub view's underlying view. */
 203.274 -	const CContactViewBase& iView;
 203.275 -	/** The index into the sub view's underlying view of the item at the lower limit 
 203.276 -	of the range. */
 203.277 -	TInt iLow;
 203.278 -	/** The index into the sub view's underlying view of the item at the upper limit 
 203.279 -	of the range. */
 203.280 -	TInt iHigh;
 203.281 -	//ChrisD: contain by value not ptr
 203.282 -	/** The collation method used to sort the strings.
 203.283 -	
 203.284 -	By default, this is the standard collation method for the current locale. */
 203.285 -	TCollationMethod* iCollateMethod;
 203.286 -	};
 203.287 -
 203.288 -
 203.289 -class CContactViewRange : public CContactViewRangeBase
 203.290 -/** A sub view range with both a lower and upper limit.
 203.291 -
 203.292 -This is used by sub views when lower and upper boundary criteria are specified.
 203.293 -
 203.294 -@see CContactSubView 
 203.295 -@publishedAll
 203.296 -@released
 203.297 -*/
 203.298 -	{
 203.299 -public:
 203.300 -	~CContactViewRange();
 203.301 -	IMPORT_C static CContactViewRange* NewL(const CContactViewBase& aView,const TDesC& aLowMatch,TCriteria aLowCriteria,const TDesC& aHighMatch,TCriteria aHighCriteria);
 203.302 -private: // From CContactViewRangeBase.
 203.303 -	void SetL();
 203.304 -private:
 203.305 -	CContactViewRange(const CContactViewBase& aView,const TDesC& aLowMatch,TCriteria aLowCriteria,const TDesC& aHighMatch,TCriteria aHighCriteria);
 203.306 -	void ConstructL();
 203.307 -private:
 203.308 -	TBuf<KMaxBoundaryMatchLength> iLowMatch;
 203.309 -	TCriteria iLowCriteria;
 203.310 -	TBuf<KMaxBoundaryMatchLength> iHighMatch;
 203.311 -	TCriteria iHighCriteria;
 203.312 -	};
 203.313 -
 203.314 -
 203.315 -class CContactViewLowRange : public CContactViewRangeBase
 203.316 -/** A sub view range with an upper limit only.
 203.317 -
 203.318 -This is used by sub views when the range criteria are CContactViewRangeBase::ELessThan 
 203.319 -or CContactViewRangeBase::ELessThanOrEqualTo.
 203.320 -
 203.321 -@see CContactSubView 
 203.322 -@publishedAll
 203.323 -@released
 203.324 -*/
 203.325 -	{
 203.326 -public:
 203.327 -	IMPORT_C static CContactViewLowRange* NewL(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
 203.328 -private: // From CContactViewRangeBase.
 203.329 -	void SetL();
 203.330 -private:
 203.331 -	CContactViewLowRange(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
 203.332 -//ChrisD: why private d'tor
 203.333 -	~CContactViewLowRange();
 203.334 -private:
 203.335 -	TBuf<KMaxBoundaryMatchLength> iMatch;
 203.336 -	TCriteria iCriteria;
 203.337 -	};
 203.338 -
 203.339 -
 203.340 -class CContactViewHighRange : public CContactViewRangeBase
 203.341 -/** A sub view range with a lower limit only.
 203.342 -
 203.343 -This is used by sub views when the range criteria are CContactViewRangeBase::EGreaterThan 
 203.344 -or CContactViewRangeBase::EGreaterThanOrEqualTo.
 203.345 -
 203.346 -@see CContactSubView 
 203.347 -@publishedAll
 203.348 -@released
 203.349 -*/
 203.350 -	{
 203.351 -public:
 203.352 -	IMPORT_C static CContactViewHighRange* NewL(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
 203.353 -private: // From CContactViewRangeBase.
 203.354 -	void SetL();
 203.355 -private:
 203.356 -	CContactViewHighRange(const CContactViewBase& aView,const TDesC& aMatch,TCriteria aCriteria);
 203.357 -//ChrisD: why private d'tor
 203.358 -	~CContactViewHighRange();
 203.359 -private:
 203.360 -	TBuf<KMaxBoundaryMatchLength> iMatch;
 203.361 -	TCriteria iCriteria;
 203.362 -	};
 203.363 -
 203.364 -
 203.365 -class CContactSubView : public CContactViewBase, public MContactViewObserver
 203.366 -/** Provides a view of a range of contact items from a potentially larger underlying 
 203.367 -view (another CContactViewBase-derived object).
 203.368 -
 203.369 -All contact items between a lower and upper boundary in the underlying view 
 203.370 -are included in the sub view. For example, the sub view might contain all 
 203.371 -items whose name begins with a character between 'd' and 'f'.
 203.372 -
 203.373 -The sub view observes its underlying view so that as the underlying view changes, 
 203.374 -the sub view is kept up to date. 
 203.375 -@publishedAll
 203.376 -@released
 203.377 -*/
 203.378 -	{
 203.379 -public:
 203.380 -	IMPORT_C static CContactSubView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,CContactViewBase& aView,const TDesC& aBoundary);//>= > is infinity <= < =0;
 203.381 -	IMPORT_C static CContactSubView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,CContactViewBase& aView,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
 203.382 -	
 203.383 -	// Factory constructor for version 2 behaviour
 203.384 -	IMPORT_C static CContactSubView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,const TDesC& aBoundary);//>= > is infinity <= < =0;
 203.385 -	// Factory constructor for version 2 behaviour
 203.386 -	IMPORT_C static CContactSubView* NewL(CContactViewBase& aView,const CContactDatabase& aDb,MContactViewObserver& aObserver,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
 203.387 -
 203.388 -	//All CContactViewBase derived classes in public headers,
 203.389 -	//should mandatorily implement this reserved function.	
 203.390 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 203.391 -public: // From CContactViewBase.
 203.392 -	TContactItemId AtL(TInt aIndex) const;
 203.393 -	TInt CountL() const;
 203.394 -	TInt FindL(TContactItemId aId) const;
 203.395 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 203.396 -	const CViewContact& ContactAtL(TInt aIndex) const;
 203.397 -	TContactViewPreferences ContactViewPreferences();
 203.398 -	const RContactViewSortOrder& SortOrderL() const;
 203.399 -private: // From MContactViewObserver.
 203.400 -	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
 203.401 -private:
 203.402 -//ChrisD: why private d'tor
 203.403 -	~CContactSubView();
 203.404 -	CContactSubView(const CContactDatabase& aDb,CContactViewBase& aView);
 203.405 -	CContactSubView(const CContactDatabase& aDb,const CContactSubView& aView);
 203.406 -	void CommonConstructL(MContactViewObserver& aObserver);
 203.407 -	void ConstructL(MContactViewObserver& aObserver,const TDesC& aBoundary);
 203.408 -	void ConstructL(MContactViewObserver& aObserver,const CContactSubView& aView);
 203.409 -	void ConstructL(MContactViewObserver& aObserver,const CContactSubView& aView,const TDesC& aBoundary);
 203.410 -	void ConstructL(MContactViewObserver& aObserver,const TDesC& aLowBoundary,const TDesC& aHighBoundary);
 203.411 -	CContactViewRangeBase::TCriteria DecodeBoundary(TDes& aBoundary) const;
 203.412 -	TInt MapToUnderlyingViewIndex(TInt aSubViewIndex) const;
 203.413 -	TInt MapToSubViewIndex(TInt aUnderlyingViewIndex) const;
 203.414 -private:
 203.415 -	CContactViewBase& iView;
 203.416 -	CContactViewRangeBase* iRange;
 203.417 -	TUint iClassVersion; //version class - used for TContactViewEvent dispatching
 203.418 -	};
 203.419 -
 203.420 -
 203.421 -class CContactConcatenatedView : public CContactViewBase, public MContactViewObserver
 203.422 -/** Concatenates multiple contact views into a single contiguous view.
 203.423 -
 203.424 -The component views are ordered according to their order in the array passed 
 203.425 -into the NewL(). 
 203.426 -@publishedAll
 203.427 -@released
 203.428 -*/
 203.429 -	{
 203.430 -public:
 203.431 -	IMPORT_C static CContactConcatenatedView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,RPointerArray<CContactViewBase>& aComponentViews);
 203.432 -	//All CContactViewBase derived classes in public headers,
 203.433 -	//should mandatorily implement this reserved function.	
 203.434 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 203.435 -public: // From CContactViewBase.
 203.436 -	TContactItemId AtL(TInt aIndex) const;
 203.437 -	TInt CountL() const;
 203.438 -	TInt FindL(TContactItemId aId) const;
 203.439 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 203.440 -	const CViewContact& ContactAtL(TInt aIndex) const;
 203.441 -	TContactViewPreferences ContactViewPreferences();
 203.442 -	const RContactViewSortOrder& SortOrderL() const;
 203.443 -private: // From MContactViewObserver.
 203.444 -	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent);
 203.445 -private:
 203.446 -	struct TComponentView
 203.447 -		{
 203.448 -		TComponentView(CContactViewBase& aView,TState aState);
 203.449 -		CContactViewBase& iView;
 203.450 -		TState iState;
 203.451 -		};
 203.452 -private:
 203.453 -	~CContactConcatenatedView();
 203.454 -	CContactConcatenatedView(const CContactDatabase& aDb);
 203.455 -	void ConstructL(MContactViewObserver& aObserver,RPointerArray<CContactViewBase>& aComponentViews);
 203.456 -	void CopyComponentViewsL(RPointerArray<CContactViewBase>& aComponentViews);
 203.457 -	void OpenComponentViewsL();
 203.458 -	void CloseComponentViews();
 203.459 -	TBool ComponentViewsReady();
 203.460 -	void SetComponentViewReady(const CContactViewBase& aView);
 203.461 -	TInt OffsetL(const CContactViewBase& aView);
 203.462 -	static TBool ComponentViewsEqual(const TComponentView& aFirst,const TComponentView& aSecond);
 203.463 -	TInt FindComponentView(const CContactViewBase& aView);
 203.464 -private:
 203.465 -	RArray<TComponentView> iComponentView;
 203.466 -	};
 203.467 -
 203.468 -
 203.469 -inline TInt CContactViewRangeBase::LowIndex() const 
 203.470 -/** Gets the index into the sub view's underlying view of the item at the bottom 
 203.471 -of the range.
 203.472 -
 203.473 -@return The index of the item at the bottom of the range. */
 203.474 -	{ return iLow; }
 203.475 -
 203.476 -inline TInt CContactViewRangeBase::HighIndex() const 
 203.477 -/** Gets the index into the sub view's underlying view of the item at the top of 
 203.478 -the range.
 203.479 -	
 203.480 -@return The index of the item at the top of the range. */
 203.481 -	{ return iHigh; }
 203.482 -
 203.483 -#endif
   204.1 --- a/epoc32/include/cntviewbase.h	Tue Mar 16 16:12:26 2010 +0000
   204.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   204.3 @@ -1,908 +0,0 @@
   204.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   204.5 -// All rights reserved.
   204.6 -// This component and the accompanying materials are made available
   204.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   204.8 -// which accompanies this distribution, and is available
   204.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  204.10 -//
  204.11 -// Initial Contributors:
  204.12 -// Nokia Corporation - initial contribution.
  204.13 -//
  204.14 -// Contributors:
  204.15 -//
  204.16 -// Description:
  204.17 -//
  204.18 -
  204.19 -#ifndef __CNTVIEWBASE_H__
  204.20 -#define __CNTVIEWBASE_H__
  204.21 -
  204.22 -// System includes
  204.23 -#include <e32std.h>
  204.24 -#include <s32mem.h>
  204.25 -
  204.26 -#include <cntdb.h>
  204.27 -
  204.28 -// Classes referenced
  204.29 -class CViewContactExtension;
  204.30 -class CContactViewBase;
  204.31 -class CContactRemoteViewNotifier;
  204.32 -class CIdleContactSorter;
  204.33 -class CContactViewFindConfigInterface;
  204.34 -class CViewContactSortPlugin;
  204.35 -class TSortPluginViewParams;
  204.36 -
  204.37 -/** View preferences for sorted contact views.
  204.38 -
  204.39 -This is used to specify the types of contact item that should be sorted and 
  204.40 -included in the view and the behaviour for items that cannot be sorted because 
  204.41 -they do not have content in any of the fields specified in the view's sort 
  204.42 -order.
  204.43 -
  204.44 -The default behaviour is to include contact cards only and to sort contact 
  204.45 -cards without content in any of the sort order fields using the first available 
  204.46 -field containing any text.
  204.47 -
  204.48 -The view preferences for all concrete contact view classes can be retrieved 
  204.49 -using their implementation of CContactViewBase::ContactViewPreferences(). 
  204.50 -The view preferences are set during construction of a CContactLocalView. 
  204.51 -
  204.52 -@publishedAll
  204.53 -@released
  204.54 -*/
  204.55 -enum TContactViewPreferences
  204.56 -	{
  204.57 -	/** Only contact cards (of type KUidContactCard or KUidContactOwnCard) are included 
  204.58 -	in the view. This is the default. */
  204.59 -	EContactsOnly					=0x00000000,
  204.60 -	/** Only contact groups (of type KUidContactGroup) are included in the view. */
  204.61 -	EGroupsOnly						=0x00000001, 
  204.62 -	/** Contact groups and contact cards (of type KUidContactGroup, KUidContactCard 
  204.63 -	or KUidContactOwnCard) are included in the view. */
  204.64 -	EContactAndGroups				=0x00000002, 
  204.65 -	/** Excludes contact items from the view which don't have content in any of the 
  204.66 -	fields specified in the sort order. */
  204.67 -	EIgnoreUnSorted					=0x00000004, 
  204.68 -	/** Includes contacts in the view which don't have content in any of the fields 
  204.69 -	specified in the sort order. These contacts are placed in an unsorted contact 
  204.70 -	list which is located before the sorted list. */
  204.71 -	EUnSortedAtBeginning			=0x00000008, 
  204.72 -	/** Includes contacts in the view which don't have content in any of the fields 
  204.73 -	specified in the sort order. These contacts are placed in an unsorted contact 
  204.74 -	list which is located after the sorted list. */
  204.75 -	EUnSortedAtEnd					=0x00000010, 
  204.76 -	/** Fields containing a single white space only are treated as empty, and therefore 
  204.77 -	unsortable. */
  204.78 -	ESingleWhiteSpaceIsEmptyField	=0x00000020,
  204.79 -	/** Only ICC entries (of type KUidContactICCEntry) are included in the view. */
  204.80 -	EICCEntriesOnly					=0x00000040, 
  204.81 -	/** Only contact cards and ICC entries (of type KUidContactCard, KUidContactOwnCard 
  204.82 -	or KUidContactICCEntry) are included in the view. */
  204.83 -	EICCEntriesAndContacts			=0x00000080  
  204.84 -	};
  204.85 -
  204.86 -
  204.87 -class TContactViewEvent
  204.88 -/** Identifies a contact view event.
  204.89 -
  204.90 -Sent by contact views when notifying their observers of an event.
  204.91 -
  204.92 -@see MContactViewObserver::HandleContactViewEvent() 
  204.93 -@publishedAll
  204.94 -@released
  204.95 -*/
  204.96 -	{
  204.97 -public:
  204.98 -	/** Identifies the event's type. */
  204.99 -	enum TEventType
 204.100 -		{
 204.101 -		/** The observed view's state has changed from EReady to either ENotReady or EInitializing, 
 204.102 -		so is not available for use. */
 204.103 -		EUnavailable,
 204.104 -		/** The observed view's state has changed from ENotReady or EInitializing to EReady 
 204.105 -		so is available for use. */
 204.106 -		EReady,
 204.107 -		/** The observed view's sort order has changed, so observer views need to update 
 204.108 -		themselves. */
 204.109 -		ESortOrderChanged,
 204.110 -		/** An error occurred when sorting the observed view or when appending an observer 
 204.111 -		to its observer array. 
 204.112 -	
 204.113 -		The error code is provided in iInt. */
 204.114 -		ESortError,
 204.115 -		/** An error occurred in the contacts server.
 204.116 -	
 204.117 -		The error code is provided in iInt. */
 204.118 -		EServerError,
 204.119 -		/** An error occurred when setting the range for a CContactSubView.
 204.120 -	
 204.121 -		The error code is provided in iInt. */
 204.122 -		EIndexingError,
 204.123 -		/** An item has been added to the observed view. 
 204.124 -	
 204.125 -		The ID of the added item is provided in iContactId and the index into the 
 204.126 -		observed view of the added item is provided in iInt. 
 204.127 -		Exception from this are the first version of CContactFindView, CContactSubView and
 204.128 -		CContactGroupView classes.
 204.129 -		For these classes, iInt has KErrNone value */
 204.130 -
 204.131 -		EItemAdded,
 204.132 -		/** An item has been removed from the observed view. 
 204.133 -	
 204.134 -		The ID of the removed item is provided in iContactId and the index into the 
 204.135 -		observed view of the item is provided in iInt. 
 204.136 -		Exception from this are the first version of CContactFindView and CContactSubView classes.
 204.137 -		For these classes, iInt has KErrNone value */
 204.138 -
 204.139 -		EItemRemoved,
 204.140 -		/** A change has occurred in a contact group, for instance a contact item has been 
 204.141 -		moved into or out of the group.
 204.142 -	
 204.143 -		The ID of the group affected is provided in iContactId. */
 204.144 -		EGroupChanged
 204.145 -		};
 204.146 -public:
 204.147 -	inline TContactViewEvent();
 204.148 -	inline TContactViewEvent(TEventType aEventType,TInt aInt = KErrUnknown,TContactItemId aContactId = KErrUnknown); 
 204.149 -public:
 204.150 -	/** The type of event. */
 204.151 -	TEventType iEventType;
 204.152 -	/** The error code (where relevant) or the index of the contact item added to/removed 
 204.153 -	from the underlying view. */
 204.154 -	TInt iInt; 
 204.155 -	/** The ID of the contact item that has been added or removed or the group ID, where 
 204.156 -	relevant. */
 204.157 -	TContactItemId iContactId;//ContactId that has been added / removed if relevant.
 204.158 -	};
 204.159 -
 204.160 -
 204.161 -struct TContactIdWithMapping
 204.162 -/** A struct used internally by filtered and group views to pair a contact item 
 204.163 -ID and its index into the underlying view. 
 204.164 -@publishedAll
 204.165 -@released
 204.166 -*/
 204.167 -	{
 204.168 -	/** The contact item's ID. */
 204.169 -	TContactItemId iId;
 204.170 -	/** The index of the item into the view's underlying view. */
 204.171 -	TInt iMapping;
 204.172 -	};
 204.173 -
 204.174 -
 204.175 -class MContactViewObserver
 204.176 -/** The interface for a contact view observer.
 204.177 -
 204.178 -Objects that need to observe a contact view should implement this interface. 
 204.179 -The view observer should be passed to the observed view's OpenL() or Open() 
 204.180 -function. This adds the observer to the view's observer array: a view can 
 204.181 -have more than one observer. The observers receive notifications when the 
 204.182 -observed view becomes ready for use and when changes occur in it.
 204.183 -
 204.184 -Many contact view classes implement this interface to observe an underlying 
 204.185 -view. They in turn send notification to any objects observing them.
 204.186 -
 204.187 -@see CContactViewBase::NotifyObservers()
 204.188 -@see CContactViewBase::NotifyObserverAsync() 
 204.189 -@publishedAll
 204.190 -@released
 204.191 -*/
 204.192 -	{
 204.193 -public:
 204.194 -	/** Handles an event in an observed contact view.
 204.195 -	
 204.196 -	@param aView The contact view causing the notification.
 204.197 -	@param aEvent The event. */
 204.198 -	virtual void HandleContactViewEvent(const CContactViewBase& aView,const TContactViewEvent& aEvent)=0;
 204.199 -	};
 204.200 -
 204.201 -
 204.202 -class RContactViewSortOrder
 204.203 -/** Specifies the sort order for a contact view.
 204.204 -
 204.205 -It is implemented as an array of TFieldType UIDs, which define the fields 
 204.206 -whose contents are used to sort on, and their order.
 204.207 -
 204.208 -The sort order for all concrete contact view classes can be retrieved using 
 204.209 -their implementation of CContactViewBase::SortOrderL(). The sort order is 
 204.210 -set during construction of local and remote views. 
 204.211 -@publishedAll
 204.212 -@released
 204.213 -*/
 204.214 -	{
 204.215 -public:
 204.216 -	IMPORT_C RContactViewSortOrder();
 204.217 -	IMPORT_C void Close();
 204.218 -	IMPORT_C void CopyL(const RContactViewSortOrder& aSortOrder);
 204.219 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 204.220 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 204.221 -	IMPORT_C TInt ExternalizedSize() const;
 204.222 -	IMPORT_C TBool operator==(const RContactViewSortOrder& aSortOrder) const;
 204.223 -	inline void AppendL(TFieldType aField);
 204.224 -	inline TFieldType operator[](TInt aIndex) const;
 204.225 -	inline TInt Count() const; 
 204.226 -private:
 204.227 -	RArray<TFieldType> iFields;
 204.228 -	TInt iSpare;
 204.229 -	TInt32 iSpare2;
 204.230 -	TInt32 iSpare3;
 204.231 -	};
 204.232 -
 204.233 -
 204.234 -/**
 204.235 -Wrapper around RArray, to container TTextFieldMinimal buffers.
 204.236 -
 204.237 -Features: minimum size 1, easy resize of array, persistent last counted total.
 204.238 -
 204.239 -@internalComponent
 204.240 -@released
 204.241 -*/
 204.242 -class RFieldBufferArray : public RArray<CContactDatabase::TTextFieldMinimal>
 204.243 -    {
 204.244 -public:
 204.245 -	explicit RFieldBufferArray();
 204.246 -
 204.247 -	void ResizeL(TInt aNewSize);
 204.248 -	void ZeroAll();
 204.249 -	TInt NewTotal();
 204.250 -	TInt LastTotal() const;
 204.251 -
 204.252 -private:
 204.253 -	TInt iTotalLength;
 204.254 -    };
 204.255 -
 204.256 -
 204.257 -
 204.258 -class CViewContact : public CBase
 204.259 -/** The representation of a contact item used in contact views.
 204.260 -
 204.261 -It stores the contact item ID and other information. This includes a buffer 
 204.262 -holding the contents of all the item's fields, an array of indexes into the 
 204.263 -buffer indicating the start position of each field and a hint bit field (a 
 204.264 -combination of CContactDatabase::TContactViewFilter values) which is used 
 204.265 -in filtered views.
 204.266 -
 204.267 -The fields are defined by the view's sort order (RContactViewSortOrder). 
 204.268 -@publishedAll
 204.269 -@released
 204.270 -*/
 204.271 -	{
 204.272 -public:
 204.273 -	/** Defines whether the contact view item is a contact group. */
 204.274 -	enum TViewContactType
 204.275 -		{
 204.276 -		/** The contact view item is not a contact group. */
 204.277 -		EContactItem,
 204.278 -		/** The contact view item is a contact group (CContactGroup). */
 204.279 -		EGroup
 204.280 -		};
 204.281 -	IMPORT_C CViewContact(TContactItemId aId);
 204.282 -	IMPORT_C static CViewContact* NewL(const CViewContact& aContact);
 204.283 -	IMPORT_C static CViewContact* NewLC(TContactItemId aId);
 204.284 -	IMPORT_C static CViewContact* NewL(TContactItemId aId, TInt aLength);
 204.285 -	static CViewContact* NewLC(RReadStream& aStream);
 204.286 -	
 204.287 -	IMPORT_C ~CViewContact();
 204.288 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 204.289 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 204.290 -	IMPORT_C TInt ExternalizedSize() const;
 204.291 -	IMPORT_C TInt FieldCount() const;
 204.292 -	IMPORT_C TPtrC Field(TInt aPosition) const;
 204.293 -	IMPORT_C TBool ContactMatchesFilter(TInt aFilter) const;
 204.294 -	IMPORT_C void AddFieldL(const TDesC& aField);
 204.295 -	IMPORT_C TBool IsSortable() const;
 204.296 -	IMPORT_C void SetFirstFieldForBlankContactL(const TDesC& aFirstField);
 204.297 -	IMPORT_C void Reset();
 204.298 -	IMPORT_C TInt ContactHint() const;
 204.299 -	IMPORT_C void SetContactHint(TInt aHint);
 204.300 -	IMPORT_C TUid ContactTypeUid() const;
 204.301 -	IMPORT_C void SetContactTypeUid(TUid aUid);
 204.302 -
 204.303 -	inline TContactItemId Id() const;
 204.304 -	inline TViewContactType ContactType() const;
 204.305 -public:
 204.306 -	inline void SetId(TContactItemId aId);
 204.307 -	inline void SetContactType(CViewContact::TViewContactType aContactType);
 204.308 -	static TBool HintFieldMatchesFilter(TInt aHintField, TInt aFilter);
 204.309 -	TPtrC FindFirstPopulatedField(TInt aOffset, TInt& aFoundPosition) const;
 204.310 -	
 204.311 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__	
 204.312 -    IMPORT_C void  ChangeToLightweightObject();
 204.313 -    TBool IsLightweightObject() const;	
 204.314 -    void  CopyL(const CViewContact& aContact);
 204.315 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
 204.316 -
 204.317 -private: 
 204.318 -	void ConstructL(TInt aLength = 0);
 204.319 -	void ConstructL(const CViewContact& aContact);
 204.320 -	friend class CContactViewBase;
 204.321 -private:
 204.322 -	TContactItemId iId;
 204.323 -	TViewContactType iContactType;
 204.324 -	CViewContactExtension* iExtension;
 204.325 -	RArray<TInt> iTextIndexes;
 204.326 -	};
 204.327 -
 204.328 -
 204.329 -/*
 204.330 - * A view can be named or un-named. An un-named view has a fixed sort order - the 
 204.331 - * only way to change this is by closing the object and creating a new one with a 
 204.332 - * different order. Named views may have their sort order changed. When this is 
 204.333 - * done, first all observers will be informed that the view is 'unavailable'. This
 204.334 - * notification will be followed by 'sort order changed' and 'ready'. Only once 
 204.335 - * the 'ready' notification has been received may the view be used again.
 204.336 - */
 204.337 -class CContactViewBase : public CBase
 204.338 -/** The abstract base class for all contact view classes.
 204.339 -
 204.340 -All contact views operate asynchronously, so users of the view must observe 
 204.341 -it, by implementing the MContactViewObserver interface. Immediately after 
 204.342 -construction, views are not in a usable state (the underlying data may be 
 204.343 -being sorted, for instance). Only after the user has received a TContactViewEvent::EReady 
 204.344 -event may the view be used.
 204.345 -
 204.346 -View observers are also notified when changes occur, for instance when the 
 204.347 -view's state changes (see TState), when an error occurs, or when an item is 
 204.348 -added or removed. 
 204.349 -@publishedAll
 204.350 -@released
 204.351 -*/
 204.352 -	{
 204.353 -public:
 204.354 -	class CContactViewBaseExtension : public CBase
 204.355 -	/** An extension class that holds member data added in v7.0s.
 204.356 -
 204.357 -	It was created for binary compatibility purposes. 
 204.358 -	@internalComponent
 204.359 -	@released */
 204.360 -		{
 204.361 -		public:
 204.362 -			static CContactViewBaseExtension* NewL();
 204.363 -			~CContactViewBaseExtension();
 204.364 -
 204.365 -		private:
 204.366 -			CContactViewBaseExtension();
 204.367 -			void ConstructL();
 204.368 -
 204.369 -		public:
 204.370 -			/** A standard error code that is passed to view observers by NotifyObservers() 
 204.371 -			(unless its value is KErrNone). */
 204.372 -			TInt iError;
 204.373 -			/** The UID of the view's find configuration plug-in.
 204.374 -	
 204.375 -			On construction, this is initialised to KNullUid.
 204.376 -	
 204.377 -			The plug-in is loaded when ContactsMatchingCriteriaL(), ContactsMatchingPrefixL() 
 204.378 -			or MatchesCriteriaL() is called. */
 204.379 -			TUid iFindPluginUid;
 204.380 -			/** The UID of the view's sort plug-in. */
 204.381 -			TUid iSortPluginUid;
 204.382 -		private:
 204.383 -			CContactViewFindConfigInterface*	iFindPluginImpl;
 204.384 -			CViewContactSortPlugin*				iSortPluginImpl;
 204.385 -			TCollationMethod					iCollationMethod;
 204.386 -			friend class CContactViewBase;
 204.387 -		};
 204.388 -	class TVirtualFunction1Params
 204.389 -	/** Holds the two parameters passed to the helper method GetContactIdsL() from 
 204.390 -	the reserved function CContactViewBase_Reserved_1(). It has an inline constructor 
 204.391 -	to initialise the data members. 
 204.392 -	@publishedAll
 204.393 -	@released */
 204.394 -		{
 204.395 -		public:
 204.396 -		   /** Inline constructor to initialize member data
 204.397 -			  @param aIndexes Pointer to an array of indexes in a view
 204.398 -	          @param aIdArray Pointer to array of contact IDs  */
 204.399 -			inline TVirtualFunction1Params(const CArrayFix<TInt>* aIndexes, CContactIdArray* aIdArray) :iIndexes(aIndexes), iIdArray(aIdArray){};
 204.400 -			/** Pointer to an array of indexes in a view  */
 204.401 -			const CArrayFix<TInt>* iIndexes;
 204.402 -			/** Pointer to array of contact IDs  */
 204.403 -			CContactIdArray* iIdArray;
 204.404 -		};
 204.405 -	class TVirtualFunction2Params
 204.406 -	/** Holds the two parameters passed to the method GetContactsMatchingFilterL() 
 204.407 -	from the reserved function CContactViewBase_Reserved_1(). It has an inline 
 204.408 -	constructor to initialise the data members.
 204.409 -	*/
 204.410 -		{
 204.411 -		public:
 204.412 -		   /** Inline constructor to initialize member data.
 204.413 -			  @param aFilter Filter for the contacts
 204.414 -	          @param aMatchingContacts Contacts matching a particular criterion  */
 204.415 -			inline TVirtualFunction2Params(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts) : iFilter(aFilter), iMatchingContacts(aMatchingContacts){};
 204.416 -		public:
 204.417 -			/** Filter for the contacts. */
 204.418 -			TInt iFilter;
 204.419 -			/** List of contacts matching the criteria. */
 204.420 -			RArray<TContactIdWithMapping>& iMatchingContacts;
 204.421 -		};
 204.422 -	class TVirtualFunction3Params
 204.423 -	/** Holds the two parameters passed to the method InsertContactInView() from the 
 204.424 -	reserved function CContactViewBase_Reserved_1(). It has an inline 
 204.425 -	constructor to initialise the data members.
 204.426 -
 204.427 -	@internalAll */
 204.428 -		{
 204.429 -		public:
 204.430 -			inline TVirtualFunction3Params(RPointerArray<CViewContact>& aContacts, const CViewContact* aNewContact) :iContacts(aContacts), iNewContact(aNewContact){};
 204.431 -			RPointerArray<CViewContact>&	iContacts;
 204.432 -			const CViewContact*				iNewContact;
 204.433 -		};
 204.434 -	/** Search type.
 204.435 -
 204.436 -	This controls whether a search term can occur anywhere in a contact item field, 
 204.437 -	or just at the beginning of the field. */
 204.438 -	enum TSearchType
 204.439 -		{
 204.440 -		/** The search uses full wildcard matching so that the search string can occur anywhere 
 204.441 -		in the item's fields. */
 204.442 -		EFullSearch,
 204.443 -		/** The search uses partial wildcard matching so that the search string can only 
 204.444 -		occur at the beginning of the item's fields. */
 204.445 -		EPrefixSearch
 204.446 -		};
 204.447 -	/** Identifies the functions that have been added to CContactViewBase, or that 
 204.448 -	may be added in the future. This identifier is passed to the reserved virtual 
 204.449 -	function CContactViewBase_Reserved_1() and enables the addition of new virtual 
 204.450 -	methods without breaking binary compatibility. */
 204.451 -	enum TFunction
 204.452 -		{
 204.453 -		/** Identifies the function CContactViewBase::GetContactIdsL(). */
 204.454 -		ECContactViewBaseVirtualFunction1,
 204.455 -		/** Identifies the function CContactViewBase::GetContactsMatchingFilterL(). */
 204.456 -		ECContactViewBaseVirtualFunction2,
 204.457 -		// communication with Sort Plug-in
 204.458 -		/** Identifies the function CContactViewBase::InsertContactInView(). */
 204.459 -		ECContactViewBaseVirtualFunction3,
 204.460 -		};
 204.461 -protected:
 204.462 -	/** Defines the contact view states. */
 204.463 -	enum TState
 204.464 -		{
 204.465 -		/** The view is initialising.
 204.466 -	
 204.467 -		This is the view's state immediately after construction or after a significant change 
 204.468 -		(e.g CurrentDatabaseChanged or UnknownChanges),	indicating that it can't be used yet. */
 204.469 -		EInitializing,
 204.470 -		/** The view is ready to be used. */
 204.471 -		EReady,
 204.472 -		/** The view is not ready to be used, for instance immediately after the sort order 
 204.473 -		has changed, or after an error has occurred. */
 204.474 -		ENotReady
 204.475 -		};
 204.476 -public:
 204.477 -	IMPORT_C void OpenL(MContactViewObserver& aObserver);
 204.478 -	IMPORT_C TInt Open(MContactViewObserver& aObserver);
 204.479 -	IMPORT_C TBool Close(const MContactViewObserver& aObserver);
 204.480 -	/** Returns the contact item ID at the specified index into the view.
 204.481 -	
 204.482 -	@capability ReadUserData
 204.483 -	@param aIndex Index of the contact item ID into the view.
 204.484 -	@return The contact item ID. */
 204.485 -	virtual TContactItemId AtL(TInt aIndex) const=0; 
 204.486 -	/** Returns the contact item at the specified index into the view.
 204.487 -	
 204.488 -	@capability ReadUserData
 204.489 -	@param aIndex Index of the contact item into the view.
 204.490 -	@return The contact item. */
 204.491 -	virtual const CViewContact& ContactAtL(TInt aIndex) const =0;
 204.492 -	/** Returns the number of contact items in the view.
 204.493 -		
 204.494 -	@capability ReadUserData
 204.495 -	@return The number of contact items in the view. */
 204.496 -	virtual TInt CountL() const=0;
 204.497 -	/** Returns the index into the view of the specified contact item.
 204.498 -	
 204.499 -	@capability ReadUserData
 204.500 -	@param aId The contact item ID to search for.
 204.501 -	@return The index into the view of the contact item ID, or KErrNotFound if 
 204.502 -	no matching ID can be found. */
 204.503 -	virtual TInt FindL(TContactItemId aId) const=0;
 204.504 -	/** Returns a descriptor containing the contents of all fields for an item in the view.
 204.505 -	
 204.506 -	The field separator is used to separate the contents of each field. It is 
 204.507 -	not appended to the last field.
 204.508 -	
 204.509 -	@capability ReadUserData
 204.510 -	@param aIndex The index of the contact item into the view.
 204.511 -	@param aSeparator The string to use to separate the fields.
 204.512 -	@return Pointer to the contact item descriptor. */
 204.513 -	virtual HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const=0;
 204.514 -	IMPORT_C virtual void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts);
 204.515 -	/** Gets the view preferences.
 204.516 -	
 204.517 -	@capability ReadUserData
 204.518 -	@return The view preferences. */
 204.519 -	virtual TContactViewPreferences ContactViewPreferences()=0;
 204.520 -	/** Gets the view's sort order.
 204.521 -	
 204.522 -	@capability ReadUserData
 204.523 -	@return The sort order. */
 204.524 -	virtual const RContactViewSortOrder& SortOrderL() const = 0;
 204.525 -	IMPORT_C virtual void ContactsMatchingPrefixL(const MDesCArray& aFindWords, RPointerArray<CViewContact>& aMatchedContacts);
 204.526 -	//This is a reserved virtual exported function that is used for BC proofing against present 
 204.527 -	//and future additions of new exported virtual functions. Existing exported virtual methods 
 204.528 -	//that broke BC are now non-virtual exported helper functions called from this method. 
 204.529 -	//All derived classes of CContactViewBase that are public must mandatorily 
 204.530 -	//implement this reserved exported virtual method.
 204.531 -	IMPORT_C virtual TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 204.532 -	//New exported method to set the ECOM plug-in to be used
 204.533 -	IMPORT_C void SetViewFindConfigPlugin(TUid aUid);
 204.534 -	IMPORT_C TUid GetViewFindConfigPlugin();
 204.535 -	IMPORT_C virtual void GetContactIdsL(const CArrayFix<TInt>& aIndexes, CContactIdArray& aContactIds);
 204.536 -	IMPORT_C TInt Error() const; 
 204.537 -	IMPORT_C TUid GetViewSortPluginImplUid() const;
 204.538 -
 204.539 -protected:
 204.540 -	IMPORT_C ~CContactViewBase();
 204.541 -	IMPORT_C void ConstructL();
 204.542 -
 204.543 -	IMPORT_C CContactViewBase(const CContactDatabase& aDb);
 204.544 -	IMPORT_C void NotifyObservers(const TContactViewEvent& aEvent);
 204.545 -	IMPORT_C TInt NotifyObserverAsync(MContactViewObserver& aObserver,const TContactViewEvent& aEvent);
 204.546 -	IMPORT_C static TBool IdsMatch(const CViewContact& aFirst,const CViewContact& aSecond);
 204.547 -	IMPORT_C HBufC* FieldsWithSeparatorLC(const RPointerArray<CViewContact>& aContacts,TInt aIndex,const TDesC& aSeparator) const;
 204.548 -	//Find helper functions
 204.549 -	IMPORT_C virtual TBool MatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords);
 204.550 -	IMPORT_C static TBool MatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords, TSearchType aSearchType);
 204.551 -	IMPORT_C static TBool MatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords, TSearchType aSearchType,CContactViewBase::CContactViewBaseExtension* aExtension);
 204.552 -	IMPORT_C static TBool IdsEqual(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
 204.553 -	IMPORT_C static TBool IndexesEqual(const TContactIdWithMapping& aFirst,const TContactIdWithMapping& aSecond);
 204.554 -	IMPORT_C static TInt CompareFieldsL(const CViewContact& aFirst, const CViewContact& aSecond);
 204.555 -	// View Sort Plugin changes
 204.556 -	IMPORT_C static TInt CompareContactIds(const CViewContact& aFirst, const CViewContact& aSecond);
 204.557 -	IMPORT_C static TBool ContactIsSortable(const CViewContact& aContact);
 204.558 -	IMPORT_C TInt CompareContactsAndIdsL(const CViewContact& aFirst, const CViewContact& aSecond) const;
 204.559 -protected:	// these are needed by CContactLocalView only
 204.560 -	TInt InsertContactInView(RPointerArray<CViewContact>& aContacts, const CViewContact* aNewContact, TBool aSortByIdOnly, TInt* aIndex) const;
 204.561 -	TBool IsContactSortable(const CViewContact& aContact, TContactViewPreferences& aViewPreferences) const;
 204.562 -	CViewContactSortPlugin* SortPluginImpl() const;
 204.563 -	TUid FindSortPluginImplL (const TDesC8& aSortPluginName,TBool aWildCard=EFalse) const;
 204.564 -	TUid FindDefaultViewSortPluginImplL () const;
 204.565 -	void LoadViewSortPluginL (TUid aSortPluginUid,TContactViewPreferences& aViewPreferences);
 204.566 -
 204.567 -private:
 204.568 -	static TInt AsyncNotifyCallBack(TAny* aSelf);
 204.569 -	static CDesCArrayFlat* CreateFindWordArrayLC(const MDesCArray& aFindWords, TSearchType aSearchType);
 204.570 -	static TBool ContactMatchesCriteriaL(const CViewContact& aContact,const MDesCArray& aFindWords,CContactViewBase::CContactViewBaseExtension* aExtension);
 204.571 -	void MatchContactsL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts, TSearchType aSearchType);
 204.572 -	static TInt CompareFieldsWithCollationLevel(const CViewContact& aFirst, const CViewContact& aSecond, 
 204.573 -												TInt aCollationLevel, TCollationMethod* aCollateMethod);
 204.574 -	TInt GetErrorValueFromExtensionClass();	
 204.575 -	void GetContactsMatchingFilterL(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts);	
 204.576 -	TInt TextCompareFieldsL(const CViewContact& aFirst, const CViewContact& aSecond) const;
 204.577 -
 204.578 -
 204.579 -private:
 204.580 -	struct TObserverAndEvent
 204.581 -		{
 204.582 -		TContactViewEvent iAsyncEvent;
 204.583 -		MContactViewObserver* iObserverToNotify;
 204.584 -		};
 204.585 -protected:
 204.586 -	// Reference to CContactDatabase class.
 204.587 -	const CContactDatabase& iDb;
 204.588 -    // Different Contacts view states.
 204.589 -	TState iState;
 204.590 -	// The pointer to the ContactViewBase BC extension class.
 204.591 -	CContactViewBaseExtension* iExtension; 
 204.592 -private:
 204.593 -	RPointerArray<MContactViewObserver> iObserverArray;
 204.594 -	CIdle* iAsyncNotifier;
 204.595 -	RArray<TObserverAndEvent> iOutstandingNotifications;
 204.596 -	};
 204.597 -
 204.598 -inline TInt CContactViewBase::GetErrorValueFromExtensionClass()
 204.599 -	{
 204.600 -	return iExtension->iError;
 204.601 -	}
 204.602 -	
 204.603 -class MLplPersistenceLayerFactory;
 204.604 -
 204.605 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
 204.606 -
 204.607 -class CViewContactManager;
 204.608 -
 204.609 -#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
 204.610 -
 204.611 -class CViewIterator;
 204.612 -
 204.613 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__
 204.614 -
 204.615 -class CContactLocalView : public CContactViewBase, public MContactDbObserver
 204.616 -/** An instantiable base class for contact views.
 204.617 -
 204.618 -The data associated with a local view is allocated within the client's memory 
 204.619 -space; CContactRemoteView should be used in preference if the view is likely 
 204.620 -to be shared between multiple clients. It is kept up to date by receiving 
 204.621 -change events from the underlying CContactDatabase object which it observes. 
 204.622 -The view preferences and sort order are specified on construction. 
 204.623 -@publishedAll
 204.624 -@released
 204.625 -*/
 204.626 -	{
 204.627 -public:
 204.628 -	IMPORT_C static CContactLocalView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
 204.629 -	IMPORT_C static CContactLocalView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
 204.630 -		const TDesC8& aSortPluginName);
 204.631 -	IMPORT_C static CContactLocalView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
 204.632 -		MLplPersistenceLayerFactory* aFactory,const TDesC8& aSortPluginName);
 204.633 -
 204.634 -	IMPORT_C const RContactViewSortOrder& SortOrder() const;
 204.635 -public: // From CContactViewBase.
 204.636 -	TContactItemId AtL(TInt aIndex) const;
 204.637 -	TInt CountL() const;
 204.638 -	TInt FindL(TContactItemId aId) const;
 204.639 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 204.640 -	const CViewContact&  ContactAtL(TInt aIndex) const;
 204.641 -	TContactViewPreferences ContactViewPreferences();
 204.642 -	const RContactViewSortOrder& SortOrderL() const;
 204.643 -	void NotifySortError(TInt aError);
 204.644 -	//All derived classes of CContactViewBase that are public should mandatorily 
 204.645 -	//implement this reserved exported virtual method.
 204.646 -	IMPORT_C TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 204.647 -protected:
 204.648 -	IMPORT_C ~CContactLocalView();
 204.649 -	IMPORT_C CContactLocalView(const CContactDatabase& aDb,TContactViewPreferences aContactTypes);
 204.650 -	CContactLocalView(const CContactDatabase& aDb,TContactViewPreferences aContactTypes,MLplPersistenceLayerFactory* aIterFactory);
 204.651 -	IMPORT_C void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder);
 204.652 -	void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder, const TBool aUseNamedPlugin, const TDesC8& aSortPluginName);
 204.653 -	IMPORT_C virtual void SortL(const RContactViewSortOrder& aSortOrder);
 204.654 -	IMPORT_C virtual TInt InsertL(TContactItemId aId);
 204.655 -	IMPORT_C virtual TInt RemoveL(TContactItemId aId);
 204.656 -protected:
 204.657 -	void SetState(TState aState);
 204.658 -private: // From MContactDbObserver.
 204.659 -	virtual void HandleDatabaseEventL(TContactDbObserverEvent aEvent);
 204.660 -	
 204.661 -private:
 204.662 -
 204.663 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
 204.664 -	void SortComplete(TInt aSortErr);	
 204.665 -	void SetSortOrderL(const RContactViewSortOrder& aSortOrder);
 204.666 -	void SortL();
 204.667 -	void SafeResort();
 204.668 -	friend class CViewContactManager;
 204.669 -#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
 204.670 -	TInt SortCallBack();
 204.671 -	TInt DoReadIncrementL();
 204.672 -	void ResetSortL();
 204.673 -	void InitialiseSortL(const RContactViewSortOrder& aSortOrder, TBool aChangingSortOrder);
 204.674 -	void SortL();
 204.675 -	void SafeResort();
 204.676 -	void ContactsArraySortL();
 204.677 -	TBool ContactCorrectType(TUid aType,TContactViewPreferences aTypeToInclude);
 204.678 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
 204.679 -
 204.680 -private: // Metheds for event handling
 204.681 -	void HandleOutstandingEvents();
 204.682 -	void HandleOutstandingEventL();
 204.683 -	friend class CIdleContactSorter;
 204.684 -protected:
 204.685 -	/** The sort order. 
 204.686 -	This is set during construction or when SortL() is called. */
 204.687 -	RContactViewSortOrder iSortOrder ;
 204.688 -private:
 204.689 -	IMPORT_C virtual void CContactLocalView_Reserved_1();
 204.690 -	IMPORT_C virtual void CContactLocalView_Reserved_2();
 204.691 -
 204.692 -private:
 204.693 -	MLplPersistenceLayerFactory*	iFactory;
 204.694 -	RPointerArray<CViewContact>	iContacts;
 204.695 -	RPointerArray<CViewContact>	iUnSortedContacts;
 204.696 -	RArray<TContactDbObserverEvent> iOutstandingEvents;
 204.697 -	CIdleContactSorter* iAsyncSorter;
 204.698 -	
 204.699 -#ifdef __SYMBIAN_CNTMODEL_USE_SQLITE__
 204.700 -	CViewContactManager* iViewCntMgr;
 204.701 -#else //__SYMBIAN_CNTMODEL_USE_SQLITE__
 204.702 -	CViewIterator*		iViewIterator;
 204.703 -#endif //__SYMBIAN_CNTMODEL_USE_SQLITE__	
 204.704 -
 204.705 -	CContactTextDef*	iTextDef;
 204.706 -	TContactViewPreferences iViewPreferences;
 204.707 -	TBool iSpare0;
 204.708 -	TInt iSpare;
 204.709 -	};
 204.710 -
 204.711 -class RContactRemoteView : public RSubSessionBase
 204.712 -/** This class is used internally by remote contact views as the handle to the 
 204.713 -server side view object.
 204.714 -
 204.715 -@see CContactRemoteViewBase 
 204.716 -@internalComponent
 204.717 -@released
 204.718 -*/
 204.719 -	{
 204.720 -public:
 204.721 -	void OpenL(const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,const TUid& aSortPluginImplUid,const TDesC8& aSortPluginName);
 204.722 -	void OpenL(const CContactDatabase& aDb,const TDesC& aName,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,const TUid& aSortPluginImplUid,const TDesC8& aSortPluginName);
 204.723 -	void Close();
 204.724 -public: // From CContactViewBase
 204.725 -	TContactItemId AtL(TInt aIndex) const;
 204.726 -	CViewContact*  ContactAtL(TInt aIndex);
 204.727 -	TInt CountL() const;
 204.728 -	TInt FindL(TContactItemId aId) const;
 204.729 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 204.730 -	const RContactViewSortOrder& SortOrderL();
 204.731 -public:	
 204.732 -	void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts, TBool aPrefixSearch,TUid aUid);
 204.733 -	void ChangeSortOrderL(const RContactViewSortOrder& aSortOrder);
 204.734 -	void GetSortOrderL(RContactViewSortOrder& aSortOrder);
 204.735 -	TContactViewPreferences ContactViewPreferencesL();
 204.736 -
 204.737 -	void RequestViewEvent(TPckgBuf<TContactViewEvent>& aEvent,TRequestStatus& aStatus);
 204.738 -	TInt CancelRequestViewEvent();
 204.739 -	void GetContactIdsL(const CArrayFix<TInt>& aIndexes, CContactIdArray& aContactIds);
 204.740 -	void GetContactsMatchingFilterL(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts);
 204.741 -	TUid GetViewSortPluginImplUidL() const;
 204.742 -private:
 204.743 -	HBufC8* PackageSortOrderLC(const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes) const;
 204.744 -	HBufC8* PackageSortOrderAndPluginDetailsLC(const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,const TUid& aSortPluginImplUid,const TDesC8& aSortPluginName) const;
 204.745 -private:
 204.746 -	CViewContact* iContact;
 204.747 -	RContactViewSortOrder iSortOrder ;
 204.748 -	};
 204.749 -
 204.750 -
 204.751 -NONSHARABLE_CLASS(CContactRemoteViewBase) : public CContactViewBase
 204.752 -/** Base class for all remote contact view classes.
 204.753 -
 204.754 -It implements all the pure virtual functions in CContactViewBase and additionally 
 204.755 -it handles remote view notifications. The data associated with remote views 
 204.756 -is allocated within the memory space of the contacts server. This means that 
 204.757 -multiple clients can share the same server side view object, thereby reducing 
 204.758 -the overhead associated with initial sorting of the view data and keeping 
 204.759 -it in sync with the underlying data. Remote views should therefore be used 
 204.760 -when the same view is likely to be needed by more than one client. 
 204.761 -@internalComponent
 204.762 -@released
 204.763 -*/
 204.764 -	{
 204.765 -public: // From CContactViewBase.
 204.766 -	TContactItemId AtL(TInt aIndex) const;
 204.767 -	TInt CountL() const;
 204.768 -	TInt FindL(TContactItemId aId) const;
 204.769 -	HBufC* AllFieldsLC(TInt aIndex,const TDesC& aSeparator) const;
 204.770 -	const CViewContact&  ContactAtL(TInt aIndex) const;
 204.771 -	TContactViewPreferences ContactViewPreferences();
 204.772 -	void ContactsMatchingCriteriaL(const MDesCArray& aFindWords,RPointerArray<CViewContact>& aMatchedContacts);
 204.773 -	void ContactsMatchingPrefixL(const MDesCArray& aFindWords, RPointerArray<CViewContact>& aMatchedContacts);
 204.774 -	const RContactViewSortOrder& SortOrderL() const;
 204.775 -	//All derived classes of CContactViewBase that are public should mandatorily 
 204.776 -	//implement this reserved exported virtual method.
 204.777 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 204.778 -	//This function was virtual in a previous release, if you still need to use it
 204.779 -	//in a virtual way then you can call it via the Reserved function.
 204.780 -	//The functionality of this function ,however,remains the same.
 204.781 -	void GetContactIdsL(const CArrayFix<TInt>& aIndexes, CContactIdArray& aContactIds);
 204.782 -	void GetContactsMatchingFilterL(TInt aFilter, RArray<TContactIdWithMapping>& aMatchingContacts);
 204.783 -protected:
 204.784 -	~CContactRemoteViewBase();
 204.785 -	CContactRemoteViewBase(const CContactDatabase& aDb);
 204.786 -	void ConstructL(MContactViewObserver& aObserver);
 204.787 -private:
 204.788 -	static TInt NotifierCallBack(TAny* aSelf);
 204.789 -	void HandleContactViewEvent(const TContactViewEvent& aEvent);
 204.790 -protected:
 204.791 -	/** A handle to the server side view. */
 204.792 -	RContactRemoteView iView;
 204.793 -private:
 204.794 -	CContactRemoteViewNotifier* iNotifier;
 204.795 -	/** Cached copy of the count of the local view in the contacts server. 
 204.796 -		If this is KCachedItemCountInvalid then next time CountL is called
 204.797 -		the current count is retrieved from the contacts server. */
 204.798 -	mutable TInt iCount;
 204.799 -	};
 204.800 -
 204.801 -
 204.802 -class CContactRemoteView : public CContactRemoteViewBase
 204.803 -/** An instantiable remote contact view class.
 204.804 -
 204.805 -Remote views are associated with a CContactLocalView object held in the contacts 
 204.806 -server. They provide an efficient means for multiple clients to share the 
 204.807 -same underlying view.
 204.808 -
 204.809 -The view preferences and sort order are specified on construction. 
 204.810 -@publishedAll
 204.811 -@released
 204.812 -*/
 204.813 -	{
 204.814 -public:
 204.815 -	IMPORT_C static CContactRemoteView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
 204.816 -	IMPORT_C static CContactRemoteView* NewL(MContactViewObserver& aObserver,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
 204.817 -		const TDesC8& aSortPluginName);
 204.818 -	IMPORT_C void GetSortOrderL(RContactViewSortOrder& aSortOrder);
 204.819 -	//All derived classes of CContactViewBase that are public should mandatorily 
 204.820 -	//implement this reserved exported virtual method.
 204.821 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 204.822 -protected:
 204.823 -	~CContactRemoteView();
 204.824 -	CContactRemoteView(const CContactDatabase& aDb);
 204.825 -private:
 204.826 -	void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
 204.827 -	void ConstructL(MContactViewObserver& aObserver,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypesconst, const TDesC8& aSortPluginName);
 204.828 -	};
 204.829 -
 204.830 -
 204.831 -class CContactNamedRemoteView : public CContactRemoteView
 204.832 -/** A named remote contact view.
 204.833 -
 204.834 -This class enables multiple clients to share a named server side view. It 
 204.835 -also provides a function to change the sort order. If the sort order is changed, 
 204.836 -a notification is sent to all users of the named view. 
 204.837 -@publishedAll
 204.838 -@released
 204.839 -*/
 204.840 -	{
 204.841 -public:
 204.842 -	IMPORT_C static CContactNamedRemoteView* NewL(MContactViewObserver& aObserver,const TDesC& aName,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
 204.843 -	IMPORT_C static CContactNamedRemoteView* NewL(MContactViewObserver& aObserver,const TDesC& aName,const CContactDatabase& aDb,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes,
 204.844 -		const TDesC8& aSortPluginName);
 204.845 -	IMPORT_C void ChangeSortOrderL(const RContactViewSortOrder& aSortOrder);
 204.846 -	//All derived classes of CContactViewBase that are public should mandatorily 
 204.847 -	//implement this reserved exported virtual method.
 204.848 -	TAny* CContactViewBase_Reserved_1(TFunction aFunction,TAny* aParams);
 204.849 -private:
 204.850 -	~CContactNamedRemoteView();
 204.851 -	CContactNamedRemoteView(const CContactDatabase& aDb);
 204.852 -	void ConstructL(MContactViewObserver& aObserver,const TDesC& aName,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes);
 204.853 -	void ConstructL(MContactViewObserver& aObserver,const TDesC& aName,const RContactViewSortOrder& aSortOrder,TContactViewPreferences aContactTypes, const TDesC8& aSortPluginName);
 204.854 -	};
 204.855 -
 204.856 -inline TContactViewEvent::TContactViewEvent() 
 204.857 -/** Empty default constructor. */
 204.858 -	{};
 204.859 -
 204.860 -inline TContactViewEvent::TContactViewEvent(TEventType aEventType,TInt aInt,TContactItemId aContactId) : iEventType(aEventType),iInt(aInt),iContactId(aContactId) 
 204.861 -/** Constructor with an event type and an optional error code and contact item ID.
 204.862 -
 204.863 -@param aEventType The event type.
 204.864 -@param aInt Optional standard error code.
 204.865 -@param aContactId Optional contact item ID. */
 204.866 -	{};
 204.867 -
 204.868 -inline void RContactViewSortOrder::AppendL(TFieldType aField) 
 204.869 -/** Appends a field type to the sort order object.
 204.870 -
 204.871 -@param aField The field type to append. */
 204.872 -	{ User::LeaveIfError(iFields.Append(aField)); }
 204.873 -
 204.874 -inline TFieldType RContactViewSortOrder::operator[](TInt aIndex) const 
 204.875 -/** Gets an indexed field type.
 204.876 -
 204.877 -@param aIndex Index of the required field type. A panic occurs if this is 
 204.878 -invalid.
 204.879 -@return The field type located at the indexed position in the array. */
 204.880 -	{ return iFields[aIndex]; }
 204.881 -
 204.882 -inline TInt RContactViewSortOrder::Count() const 
 204.883 -/** Gets the number of field types in the sort order array.
 204.884 -
 204.885 -@return The number of field types in the array. */
 204.886 -	{ return iFields.Count(); }
 204.887 -
 204.888 -inline TContactItemId CViewContact::Id() const 
 204.889 -/** Gets the view item's ID.
 204.890 -
 204.891 -@return The view item's ID. */
 204.892 -	{return iId;}
 204.893 -
 204.894 -inline CViewContact::TViewContactType CViewContact::ContactType() const 
 204.895 -/** Gets the view item's type.
 204.896 -
 204.897 -@return The view item's type. */
 204.898 -	{return iContactType;}
 204.899 -
 204.900 -inline void CViewContact::SetId(TContactItemId aId) 
 204.901 -/** Sets the view item's ID.
 204.902 -
 204.903 -@param aId The contact item ID. */
 204.904 -	{iId=aId;}
 204.905 -
 204.906 -inline void CViewContact::SetContactType(CViewContact::TViewContactType aContactType) 
 204.907 -/** Sets the view item's type.
 204.908 -
 204.909 -@param aContactType The view item's type. */
 204.910 -	{iContactType=aContactType;}
 204.911 -#endif
   205.1 --- a/epoc32/include/cobexsendoperation.h	Tue Mar 16 16:12:26 2010 +0000
   205.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   205.3 @@ -1,36 +0,0 @@
   205.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   205.5 -// All rights reserved.
   205.6 -// This component and the accompanying materials are made available
   205.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   205.8 -// which accompanies this distribution, and is available
   205.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  205.10 -//
  205.11 -// Initial Contributors:
  205.12 -// Nokia Corporation - initial contribution.
  205.13 -//
  205.14 -// Contributors:
  205.15 -//
  205.16 -// Description:
  205.17 -//
  205.18 -
  205.19 -
  205.20 -#ifndef __COBEXSENDOPERATION_H__
  205.21 -#define __COBEXSENDOPERATION_H__
  205.22 -
  205.23 -
  205.24 -#include <msvapi.h>
  205.25 -
  205.26 -
  205.27 -class CObexSendOperation : public CMsvSendOperation
  205.28 -/**
  205.29 -@internalComponent
  205.30 -*/
  205.31 -	{
  205.32 -public:
  205.33 -	IMPORT_C CObexSendOperation(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  205.34 -	// from CMsvSendOperation		
  205.35 -	IMPORT_C virtual const TDesC8& TranslateProgress(const TDesC8& aProgress);
  205.36 -	};
  205.37 -
  205.38 -
  205.39 -#endif // __COBEXSENDOPERATION_H__
   206.1 --- a/epoc32/include/coeaui.h	Tue Mar 16 16:12:26 2010 +0000
   206.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   206.3 @@ -1,245 +0,0 @@
   206.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   206.5 -// All rights reserved.
   206.6 -// This component and the accompanying materials are made available
   206.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   206.8 -// which accompanies this distribution, and is available
   206.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  206.10 -//
  206.11 -// Initial Contributors:
  206.12 -// Nokia Corporation - initial contribution.
  206.13 -//
  206.14 -// Contributors:
  206.15 -//
  206.16 -// Description:
  206.17 -//
  206.18 -
  206.19 -#ifndef __COEAUI_H__
  206.20 -#define __COEAUI_H__
  206.21 -
  206.22 -#include <e32std.h>
  206.23 -#include <e32base.h>
  206.24 -#include <w32std.h>
  206.25 -#include <vwsdef.h>
  206.26 -#include <coedef.h>
  206.27 -#include <coehelp.h>
  206.28 -#include <coeview.h>
  206.29 -#include <coeinput.h>
  206.30 -
  206.31 -class CCoeEnv;
  206.32 -class CCoeControl;
  206.33 -
  206.34 -/**
  206.35 -Creates a FEP interface object.
  206.36 -
  206.37 -@publishedAll
  206.38 -@released
  206.39 -*/
  206.40 -typedef CCoeFep* (*TCoeFepFactoryFunctionL)(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll, const CCoeFepParameters& aFepParameters);
  206.41 -
  206.42 -/**
  206.43 -Calls the second ordinal function of the FEP for which the settings dialog is to be executed.
  206.44 -
  206.45 -@publishedAll
  206.46 -@released
  206.47 -*/
  206.48 -typedef void (*TCoeSynchronouslyExecuteFepSettingsDialogFunctionL)(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll);
  206.49 -
  206.50 -/** Stack priority flags.
  206.51 -  
  206.52 -Controls with higher priorities get offered key events before controls	
  206.53 -with lower priorities.	  
  206.54 -		
  206.55 -@publishedAll 
  206.56 -@released */
  206.57 -enum
  206.58 -	{
  206.59 -	/** 0 */
  206.60 -	ECoeStackPriorityDefault=0,
  206.61 -	/** 10 */
  206.62 -	ECoeStackPriorityMenu=10,
  206.63 -	/** 50 */
  206.64 -	ECoeStackPriorityDialog=50,
  206.65 -	/** 60 */
  206.66 -	ECoeStackPriorityCba=60,
  206.67 -	/** 200 */
  206.68 -	ECoeStackPriorityAlert=200,
  206.69 -	/** 240 */
  206.70 -	ECoeStackPrioritySoftkey=240,
  206.71 -	/** 250 */
  206.72 -	ECoeStackPriorityFep=250,
  206.73 -	/** 300 */
  206.74 -	ECoeStackPriorityEnvironmentFilter=300
  206.75 -	};
  206.76 -
  206.77 -
  206.78 -/** Control stack flags.
  206.79 -
  206.80 -Each control on the stack has a set of these flags which can be used 
  206.81 -to refuse to accept key events and to refuse requests for focus.
  206.82 -
  206.83 -@publishedAll 
  206.84 -@released */
  206.85 -enum
  206.86 -	{
  206.87 -	/** The default value */
  206.88 -	ECoeStackFlagStandard			= 0,	
  206.89 -	/** The control does not accept key events. */
  206.90 -	ECoeStackFlagRefusesAllKeys		= 0x01,
  206.91 -	/** The control does not accept keyboard focus. */
  206.92 -	ECoeStackFlagRefusesFocus		= 0x02,
  206.93 -	/** The control is owned and deleted by the stack. */
  206.94 -	ECoeStackFlagOwnershipTransfered= 0x04,	
  206.95 -	/** The control is also added to the stack of any embedded app UI. For 
  206.96 -	example, an alert dialog added through CEikonEnv will be 
  206.97 -	shared on the stack of all embedded app UIs that may appear in the 
  206.98 -	application. */
  206.99 -	ECoeStackFlagSharable			= 0x08
 206.100 -	};
 206.101 -
 206.102 -class CCoeControlStack;
 206.103 -class CCoeViewManager;
 206.104 -
 206.105 -/** Application user interface (app UI) base class. 
 206.106 -
 206.107 -The app UI's responsibilities include owning the application's control stack and views, 
 206.108 -handling user commands, (see the derived class CEikAppUi), and handling events sent by 
 206.109 -the OS to the application, for instance being brought to the foreground.
 206.110 -
 206.111 -The UI framework class CEikAppUi is derived from this class. UIs may derive 
 206.112 -further to add their own UI-specific features to the app UI; each application must 
 206.113 -derive its own concrete app UI class from this.
 206.114 -
 206.115 -@publishedAll 
 206.116 -@released */
 206.117 -class CCoeAppUi : public CBase
 206.118 -	{
 206.119 -public:
 206.120 -	// Construction and destruction
 206.121 -	IMPORT_C CCoeAppUi();
 206.122 -	IMPORT_C ~CCoeAppUi();
 206.123 -	IMPORT_C void ConstructL(CCoeAppUi* aPrevious=NULL);
 206.124 -	// Control stack
 206.125 -	IMPORT_C void AddToStackL(const MCoeView& aView,CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard);
 206.126 -	IMPORT_C void AddToStackL(CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard);
 206.127 -	IMPORT_C void RemoveFromStack(CCoeControl* aControl);
 206.128 -	IMPORT_C void HandleStackChanged();
 206.129 -	IMPORT_C void HandleStackedControlsResourceChange(TInt aType);
 206.130 -	IMPORT_C void UpdateStackedControlFlags(CCoeControl* aControl,TInt aFlags,TInt aMask);
 206.131 -	// Help context
 206.132 -	IMPORT_C CArrayFix<TCoeHelpContext>* AppHelpContextL() const;
 206.133 -	// Text input
 206.134 -	IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const;
 206.135 -	// Control focus
 206.136 -	IMPORT_C CCoeControl* TopFocusedControl() const;
 206.137 -	// Utility
 206.138 -	IMPORT_C TBool IsDisplayingMenuOrDialog() const; 
 206.139 -	IMPORT_C TBool IsDisplayingDialog() const; 
 206.140 -	IMPORT_C TBool IsDisplayingControlBetweenPriorities(TInt aLowerPriority, TInt aHigherPriority) const;
 206.141 -	// View registration
 206.142 -	IMPORT_C void RegisterViewL(MCoeView& aView);
 206.143 -	IMPORT_C void DeregisterView(const MCoeView& aView);
 206.144 -	IMPORT_C void SetDefaultViewL(const MCoeView& aView);
 206.145 -	IMPORT_C TInt GetDefaultViewId(TVwsViewId& aViewId) const;
 206.146 -	// Pseudo-view registration
 206.147 -	IMPORT_C void CheckInitializeViewsL(TUid aAppUid);
 206.148 -	IMPORT_C void RegisterApplicationViewL(TUid aAppUid);
 206.149 -	IMPORT_C void DeregisterApplicationView();
 206.150 -	// View construction
 206.151 -	IMPORT_C TBool IsViewConstructed(const TVwsViewId& aViewId) const;
 206.152 -	// View activation
 206.153 -	IMPORT_C void ActivateViewL(const TVwsViewId& aViewId);
 206.154 -	IMPORT_C void ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 206.155 -	IMPORT_C void ActivateTopViewL();
 206.156 -	IMPORT_C void CreateActivateViewEventL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 206.157 -	IMPORT_C void DeactivateActiveViewIfOwnerMatchL();
 206.158 -	IMPORT_C void DeactivateActiveViewL();
 206.159 -	IMPORT_C TInt GetActiveViewId(TVwsViewId& aViewId) const;	
 206.160 -	// View registration 
 206.161 -	IMPORT_C void AddViewObserverL(MCoeViewObserver* aViewObserver);
 206.162 -	IMPORT_C void RemoveViewObserver(MCoeViewObserver* aViewObserver);
 206.163 -	// View activation observer
 206.164 -	IMPORT_C void AddViewActivationObserverL(MCoeViewActivationObserver* aViewActivationObserver);
 206.165 -	IMPORT_C void RemoveViewActivationObserver(MCoeViewActivationObserver* aViewActivationObserver);
 206.166 -	IMPORT_C void NotifyNextActivation(const TVwsViewId& aViewId, MCoeViewActivationObserver& aViewActivationObserver);
 206.167 -	IMPORT_C void NotifyNextActivation(MCoeViewActivationObserver& aViewActivationObserver);
 206.168 -	IMPORT_C TBool CheckSourceOfViewSwitchL(const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic=NULL) const;
 206.169 -	// View decativation observer
 206.170 -	IMPORT_C void AddViewDeactivationObserverL(MCoeViewDeactivationObserver* aViewDeactivationObserver);
 206.171 -	IMPORT_C void RemoveViewDeactivationObserver(MCoeViewDeactivationObserver* aViewDeactivationObserver);
 206.172 -	IMPORT_C void NotifyNextDeactivation(const TVwsViewId& aViewId, MCoeViewDeactivationObserver& aViewDeactivationObserver);
 206.173 -	IMPORT_C void NotifyNextDeactivation(MCoeViewDeactivationObserver& aViewDeactivationObserver);
 206.174 -	// View session configuration
 206.175 -	IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable);
 206.176 -	IMPORT_C void UpdateViewServerBackgroundColor(const TRgb& aBgColor);
 206.177 -
 206.178 -	// New APIs
 206.179 -	IMPORT_C void SetCustomControl(TInt aCustomControl);
 206.180 -	IMPORT_C TInt GetTopViewId(TVwsViewId& aViewId) const;
 206.181 -	IMPORT_C void SetWindowGroupOrdinal(TInt aWindowGroupOrdinal);
 206.182 -
 206.183 -public: // Internal
 206.184 -	IMPORT_C void SetApplicationViewAsDefaultL(); // internalTechnology
 206.185 - 	IMPORT_C void SetSystemDefaultViewL(const TVwsViewId& aViewId,TInt aMode); // internalTechnology
 206.186 - 	IMPORT_C void SetSystemDefaultViewL(const TVwsViewId& aViewId); // internalTechnology
 206.187 - 	IMPORT_C void GetSystemDefaultViewL(TVwsViewId& aViewId); // internalTechnology
 206.188 -	IMPORT_C virtual void HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination);
 206.189 -	IMPORT_C virtual void PrepareToExit();
 206.190 -protected: // Internal
 206.191 -	IMPORT_C virtual void HandleScreenDeviceChangedL();
 206.192 -private: // Internal
 206.193 -	IMPORT_C virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
 206.194 -	IMPORT_C virtual void HandleForegroundEventL(TBool aForeground);
 206.195 -	IMPORT_C virtual void HandleSwitchOnEventL(CCoeControl* aDestination);
 206.196 -	IMPORT_C virtual void HandleSystemEventL(const TWsEvent& aEvent);
 206.197 -	IMPORT_C virtual void HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent);
 206.198 -	IMPORT_C virtual void SetAndDrawFocus(TBool aFocus);
 206.199 -	IMPORT_C virtual CArrayFix<TCoeHelpContext>* HelpContextL() const;
 206.200 -public: // Internal
 206.201 -	IMPORT_C virtual TBool FrameworkCallsRendezvous() const;
 206.202 -public: // Internal 
 206.203 -	IMPORT_C void WriteInternalStateOfStackedControlsL(RWriteStream& aWriteStream) const; // internalTechnology
 206.204 -public: // Deprecated. Do not use!
 206.205 -	IMPORT_C void RegisterViewAndAddStackL(MCoeView& aView);	// deprecated
 206.206 -	IMPORT_C void DeregisterViewAndRemoveStack(const MCoeView& aView);	// deprecated
 206.207 -	IMPORT_C void RemoveFromViewStack(const MCoeView& aView,CCoeControl* aControl);	// deprecated
 206.208 -	IMPORT_C void UpdateViewStackedControlFlags(const MCoeView& aView,CCoeControl* aControl,TInt aFlags,TInt aMask);	// deprecated
 206.209 -	IMPORT_C void AddToViewStackL(const MCoeView& aView,CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard);	// deprecated
 206.210 -public: // not exported
 206.211 -	TBool IsControlOnStack(CCoeControl* aControl) const;
 206.212 -	void SetCurrentControlStackGroupId(TInt aGroupId);
 206.213 -	void NotifyFontChange(const CCoeFontProvider& aFontProvider); 
 206.214 -	void RefetchPixelMappingL();
 206.215 -private:
 206.216 -	enum TRemoveCondition
 206.217 -		{
 206.218 -		ERemoveUnconditionally,
 206.219 -		ERemoveOnlyIfSharable
 206.220 -		};
 206.221 -private:// Internal
 206.222 -	IMPORT_C virtual void CCoeAppUi_Reserved_2();
 206.223 -private:
 206.224 -	CCoeControl* TopFocusableControl() const;
 206.225 -	TInt FindPos(CCoeControlStack* aStack,CCoeControl* aControl) const;
 206.226 -	void SetFocusToControl(CCoeControl* aControl,TBool aFocus);
 206.227 -	void DoAddToStackL(CCoeControlStack* aStack,CCoeControl* aControl,TInt aPriority,TInt aStackingFlags);
 206.228 -	void DoAddToStackL(CCoeControlStack* aStack,CCoeControl* aControl,TInt aPriority,TInt aStackingFlags, TInt aGroupId);
 206.229 -	void DoRemoveFromStack(CCoeControlStack* aStack,CCoeControl* aControl,TRemoveCondition aRemoveCondition=ERemoveUnconditionally);
 206.230 -	void DoUpdateStackedControlFlags(CCoeControlStack* aStack,CCoeControl* aControl,TInt aFlags,TInt aMask);
 206.231 -public:
 206.232 -/**Monitor function for passing all windows events to registered monitor observers for optional inspection*/
 206.233 -	void MonitorWsEvent(const TWsEvent& aEvent);
 206.234 -private:
 206.235 -	class CExtra;
 206.236 -	friend class CExtra;
 206.237 -	friend class CTestDriver;
 206.238 -protected:
 206.239 -	CCoeEnv* iCoeEnv;
 206.240 -private:
 206.241 -	CCoeViewManager* iViewManager;
 206.242 -	CCoeControlStack* iStack;
 206.243 -	CExtra* iExtra;
 206.244 -	TInt iCCoeAppUi_Reserved1;
 206.245 -	};
 206.246 -
 206.247 -
 206.248 -#endif // __COEAUI_H__
   207.1 --- a/epoc32/include/coeccntx.h	Tue Mar 16 16:12:26 2010 +0000
   207.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   207.3 @@ -1,119 +0,0 @@
   207.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   207.5 -// All rights reserved.
   207.6 -// This component and the accompanying materials are made available
   207.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   207.8 -// which accompanies this distribution, and is available
   207.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  207.10 -//
  207.11 -// Initial Contributors:
  207.12 -// Nokia Corporation - initial contribution.
  207.13 -//
  207.14 -// Contributors:
  207.15 -//
  207.16 -// Description:
  207.17 -//
  207.18 -
  207.19 -#ifndef __COECCNTX_H__
  207.20 -#define __COECCNTX_H__
  207.21 -
  207.22 -#include <e32std.h>
  207.23 -#include <e32base.h>
  207.24 -#include <w32std.h>
  207.25 -
  207.26 -/** Interface to allow sharing of graphics settings between controls. 
  207.27 -
  207.28 -The interface provides functions to set the graphics context of a control 
  207.29 -before drawing. If a control has its iContext member set, the UI Control Framework 
  207.30 -calls functions defined by this interface when a control is about to be drawn. 
  207.31 -Developers must implement PrepareContext(), which is called by the framework, 
  207.32 -to initialise the control's window with the required graphics settings.
  207.33 -
  207.34 -To use control contexts, a control should inherit from an MCoeControlContext-derived 
  207.35 -class. To share the context between controls, this control should then be 
  207.36 -set as the context for all controls that wish to share it. This is done by 
  207.37 -setting the iContext member of each of the controls, using CCoeControl::SetControlContext() 
  207.38 -and CCoeControl::CopyControlContextFrom(). 
  207.39 -
  207.40 -@publishedAll 
  207.41 -@released */
  207.42 -class MCoeControlContext
  207.43 -	{
  207.44 -public:
  207.45 -	IMPORT_C virtual void ActivateContext(CWindowGc& aGc,RDrawableWindow& aWindow) const;
  207.46 -	IMPORT_C virtual void ResetContext(CWindowGc& aGc) const;
  207.47 -	IMPORT_C virtual void PrepareContext(CWindowGc& aGc) const;
  207.48 -protected:
  207.49 -	IMPORT_C MCoeControlContext();
  207.50 -	
  207.51 -private:
  207.52 -	IMPORT_C virtual void MCoeControlContext_Reserved1();	
  207.53 -	IMPORT_C virtual void MCoeControlContext_Reserved2();
  207.54 -	
  207.55 -private:
  207.56 -	TInt iMCoeControlContext_Reserved1;
  207.57 -	};
  207.58 -
  207.59 -/** Brush and pen graphics context. 
  207.60 -
  207.61 -This class allows an MCoeControlContext to be instantiated and used to set 
  207.62 -brush and pen properties before drawing a control. 
  207.63 -
  207.64 -@publishedAll 
  207.65 -@released */
  207.66 -class CCoeBrushAndPenContext : public CBase, public MCoeControlContext
  207.67 -	{
  207.68 -public:
  207.69 -	IMPORT_C static CCoeBrushAndPenContext* NewL();
  207.70 -	//
  207.71 -	IMPORT_C void SetBrushStyle(CWindowGc::TBrushStyle aBrushStyle);
  207.72 -	IMPORT_C void SetBrushColor(TRgb aColor);
  207.73 -	IMPORT_C void SetBrushBitmap(const CFbsBitmap& aBitmap);
  207.74 -	IMPORT_C void SetPenColor(TRgb aColor);
  207.75 -	//
  207.76 -	IMPORT_C CWindowGc::TBrushStyle BrushStyle() const;
  207.77 -	IMPORT_C TRgb BrushColor() const;
  207.78 -	IMPORT_C const CFbsBitmap& BrushBitmap() const;
  207.79 -	IMPORT_C TRgb PenColor() const;
  207.80 -protected: // from MCoeControlContext
  207.81 -	IMPORT_C void PrepareContext(CWindowGc& aGc) const;
  207.82 -private:
  207.83 -	CCoeBrushAndPenContext();
  207.84 -private:
  207.85 -	CWindowGc::TBrushStyle iBrushStyle;
  207.86 -	TRgb iBrushColor;
  207.87 -	const CFbsBitmap* iBitmap;
  207.88 -	TRgb iPenColor;
  207.89 -	};
  207.90 -
  207.91 -
  207.92 -/** Protocol for sharing brush settings used in graphics operations. 
  207.93 -
  207.94 -It can be used to set brush and pen properties before drawing a control.
  207.95 -
  207.96 -The mixin provides a default implementation of a control context. It implements 
  207.97 -PrepareContext() to initialise brush settings used in graphics operations. 
  207.98 -Its data members are public so that the brush style, brush colour and brush 
  207.99 -pattern can be set by application code.
 207.100 -
 207.101 -@publishedAll
 207.102 -@deprecated */
 207.103 -class MCoeControlBrushContext : public MCoeControlContext
 207.104 -	{
 207.105 -public:
 207.106 -	/** Cause vtable & typeinfo to be exported */
 207.107 -	IMPORT_C MCoeControlBrushContext();
 207.108 -protected: // from MCoeControlContext
 207.109 -	IMPORT_C void PrepareContext(CWindowGc& aGc) const;
 207.110 -public:
 207.111 -	/** Brush style. (Not required if iBitmap is set.) */
 207.112 -	CWindowGc::TBrushStyle iBrushStyle;
 207.113 -	/** Brush colour. (Not required if iBitmap is set.) */
 207.114 -	TRgb iBrushColor;
 207.115 -	/** Brush pattern. */
 207.116 -	const CFbsBitmap* iBitmap;
 207.117 -
 207.118 -private:
 207.119 -	TInt iMCoeControlBrushContext_Reserved1;
 207.120 -	};
 207.121 -
 207.122 -#endif
   208.1 --- a/epoc32/include/coecntrl.h	Tue Mar 16 16:12:26 2010 +0000
   208.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   208.3 @@ -1,418 +0,0 @@
   208.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   208.5 -// All rights reserved.
   208.6 -// This component and the accompanying materials are made available
   208.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   208.8 -// which accompanies this distribution, and is available
   208.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  208.10 -//
  208.11 -// Initial Contributors:
  208.12 -// Nokia Corporation - initial contribution.
  208.13 -//
  208.14 -// Contributors:
  208.15 -//
  208.16 -// Description:
  208.17 -//
  208.18 -
  208.19 -#ifndef __COECNTRL_H__
  208.20 -#define __COECNTRL_H__
  208.21 -
  208.22 -#include <e32std.h>
  208.23 -#include <e32base.h>
  208.24 -#include <w32std.h>
  208.25 -#include <gulalign.h>
  208.26 -#include <coedef.h>
  208.27 -#include <coecobs.h>
  208.28 -#include <coehelp.h>
  208.29 -#include <coeinput.h>
  208.30 -#include <coemop.h>
  208.31 -#include <coemain.h>
  208.32 -#include <coefont.h>
  208.33 -#include <coetextdrawer.h>
  208.34 -#include <coecontrolarray.h>
  208.35 -
  208.36 -#include <coecoloruse.h>	// class TCoeColorUse
  208.37 -
  208.38 -class TResourceReader;
  208.39 -class CCoeEnv;
  208.40 -class MCoeControlContext;
  208.41 -class RCoeDynamicDataStorage;
  208.42 -
  208.43 -class MCoeLayoutManager;
  208.44 -class TCoeZoomWithType; 
  208.45 -class CCoeFontProvider;
  208.46 -
  208.47 -// forward declarations.	
  208.48 -class CCoeControl;
  208.49 -class CCoeTextDrawerBase;
  208.50 -
  208.51 -/** Interface to be used if a control elects to be a background drawer.
  208.52 -
  208.53 -Parent controls can elect to take responsibility for drawing the background for their child
  208.54 -controls. To achieve this, they should aggregate an object that implements this interface.
  208.55 -CCoeControl::SetBackground() accepts the object and sets it as the background drawer
  208.56 -
  208.57 -@see CCoeControl::EnableWindowTransparency()
  208.58 -@publishedAll
  208.59 -@released
  208.60 -*/
  208.61 -class MCoeControlBackground
  208.62 -	{
  208.63 -public:
  208.64 -	/** Draw the background for a given control.
  208.65 -	The text drawer that shall be used to draw text on the specific background can be 
  208.66 -	fetched through the GetTextDrawer() method. 
  208.67 -
  208.68 -	@param aGc Graphics context used for drawing
  208.69 -	@param aControl The control being drawn (may be a child of the drawer)
  208.70 -	@param aRect The area to be redrawn
  208.71 -
  208.72 -	@publishedAll
  208.73 -	@released
  208.74 -	*/
  208.75 -	virtual void Draw(CWindowGc& aGc, const CCoeControl& aControl, const TRect& aRect) const = 0;
  208.76 -	/**
  208.77 -	This function retrieves the text drawer associated with the background.
  208.78 -	@param aTextDrawer The text drawer associated with the background. This may be null. The default implementation
  208.79 -	always sets this to 0.
  208.80 -	@param aDrawingControl The control that is requesting the text drawer.
  208.81 -	*/
  208.82 -	IMPORT_C virtual void GetTextDrawer(CCoeTextDrawerBase*& aTextDrawer, const CCoeControl* aDrawingControl) const;
  208.83 -protected:
  208.84 -	IMPORT_C MCoeControlBackground();
  208.85 -private:  
  208.86 -  	IMPORT_C virtual void MCoeControlBackground_Reserved1();
  208.87 -  	IMPORT_C virtual void MCoeControlBackground_Reserved2();
  208.88 -  	IMPORT_C virtual void MCoeControlBackground_Reserved3();
  208.89 -  	IMPORT_C virtual void MCoeControlBackground_Reserved4();
  208.90 -  	IMPORT_C virtual void MCoeControlBackground_Reserved5();
  208.91 -private:
  208.92 -	TInt iMCoeControlBackground_Reserved1();
  208.93 -	};
  208.94 -
  208.95 -/** Abstract interface for defining a control's hit region.
  208.96 -
  208.97 -This could be implemented by a CCoeControl-derived class to 
  208.98 -define hit region checking. The object is installed by calling CCoeControl::SetHitTest().
  208.99 -
 208.100 -The hit region is the area inside the control's rectangle in which pointer events are handled.
 208.101 -It can be any shape, not necessarily rectangular.
 208.102 -
 208.103 -@publishedAll
 208.104 -@released
 208.105 -*/
 208.106 -class MCoeControlHitTest
 208.107 -	{
 208.108 -public:	
 208.109 -	/** Tests whether a pointer event occurred inside the control's hit region.
 208.110 -	This function is called by CCoeControl::HandlePointerEventL().
 208.111 -
 208.112 -	@param aPoint The position of the pointer event.
 208.113 -	@return ETrue if the specified point lies inside the hit region, EFalse if not.
 208.114 -
 208.115 -	@publishedAll
 208.116 -	@released
 208.117 -	*/
 208.118 -	virtual TBool HitRegionContains(const TPoint& aPoint, const CCoeControl& aControl) const = 0;
 208.119 -protected:
 208.120 -	IMPORT_C MCoeControlHitTest();
 208.121 -private:
 208.122 -	IMPORT_C virtual void MCoeControlHitTest_Reserved1();
 208.123 -	IMPORT_C virtual void MCoeControlHitTest_Reserved2();
 208.124 -private: 
 208.125 -    TInt iMCoeControlHitTest_Reserved1;
 208.126 -	};
 208.127 -
 208.128 -
 208.129 -/** 
 208.130 -Control base class from which all other controls are derived. 
 208.131 -
 208.132 -@publishedAll
 208.133 -@released 
 208.134 -*/
 208.135 -class CCoeControl : public CBase, public MObjectProvider
 208.136 -	{
 208.137 -public:
 208.138 -    enum TZoomType 
 208.139 -        { 
 208.140 -        EAbsoluteZoom,        // absolute 
 208.141 -        ERelativeZoom         // relative to parent's zoom 
 208.142 -        }; 
 208.143 -public:    
 208.144 -    // Construction and destruction    
 208.145 -	IMPORT_C CCoeControl();
 208.146 -	IMPORT_C CCoeControl(CCoeEnv* aCoeEnv);
 208.147 -	IMPORT_C ~CCoeControl();
 208.148 -	IMPORT_C TBool ComponentArrayExists() const;
 208.149 -public: // Virtuals (see more related non-virtuals further down)
 208.150 -	// Key input
 208.151 -	IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
 208.152 -	// Visual state
 208.153 -	IMPORT_C virtual void MakeVisible(TBool aVisible);
 208.154 -	IMPORT_C virtual void SetDimmed(TBool aDimmed);
 208.155 -	// Construction
 208.156 -	IMPORT_C virtual void SetContainerWindowL(const CCoeControl& aContainer);
 208.157 -	IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aReader);
 208.158 -	IMPORT_C virtual void ActivateL();
 208.159 -	// Focus
 208.160 -	IMPORT_C virtual void PrepareForFocusLossL();
 208.161 -	IMPORT_C virtual void PrepareForFocusGainL();
 208.162 -	// Control proximity
 208.163 -	IMPORT_C virtual void SetAdjacent(TInt aAdjacent);
 208.164 -	IMPORT_C virtual void SetNeighbor(CCoeControl* aNeighbor);
 208.165 -	IMPORT_C virtual TBool HasBorder() const;	// deprecated from 9.2
 208.166 -	// Control size
 208.167 -	IMPORT_C virtual TSize MinimumSize();
 208.168 -	// Resource change handling
 208.169 -	IMPORT_C virtual void HandleResourceChange(TInt aType);
 208.170 -	// Logical color use (for Java)
 208.171 -	IMPORT_C virtual void GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const;
 208.172 -	// User help
 208.173 -	IMPORT_C virtual void GetHelpContext(TCoeHelpContext& aContext) const;
 208.174 -	// Text input
 208.175 -	IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const;
 208.176 -public:	
 208.177 -	// Environment
 208.178 -	inline CCoeEnv* ControlEnv() const;
 208.179 -	// Container window
 208.180 -	IMPORT_C RDrawableWindow* DrawableWindow() const;
 208.181 -	IMPORT_C TBool OwnsWindow() const;
 208.182 -	IMPORT_C TBool IsBackedUp() const;
 208.183 -	IMPORT_C void SetContainerWindowL(RWindow& aWindow); 			// deprecated from 9.2
 208.184 -	IMPORT_C void SetContainerWindowL(RBackedUpWindow& aWindow);	// deprecated from 9.2
 208.185 -	// Control parent
 208.186 -	IMPORT_C CCoeControl* Parent();
 208.187 -	IMPORT_C const CCoeControl* Parent() const;
 208.188 -	IMPORT_C virtual TInt SetParent(CCoeControl* aParent);
 208.189 -	// Size and position
 208.190 -	IMPORT_C TRect Rect() const;
 208.191 -	IMPORT_C void SetRect(const TRect& aRect);
 208.192 -	IMPORT_C void SetExtent(const TPoint& aPosition,const TSize& aSize);
 208.193 -	IMPORT_C void SetExtentToWholeScreen();
 208.194 -	IMPORT_C TSize Size() const;
 208.195 -	IMPORT_C void SetSize(const TSize& aSize);
 208.196 -	IMPORT_C TPoint Position() const;
 208.197 -	IMPORT_C TPoint PositionRelativeToScreen() const;
 208.198 -	IMPORT_C void SetPosition(const TPoint& aPosition);
 208.199 -	IMPORT_C TInt MaximumWidth() const;
 208.200 -	IMPORT_C TInt SetMaximumWidth(TInt aMaxWidth);
 208.201 -	// Layout	
 208.202 -	IMPORT_C MCoeLayoutManager* LayoutManager() const;
 208.203 -	IMPORT_C virtual void SetLayoutManagerL(MCoeLayoutManager* aLayout);
 208.204 -	IMPORT_C virtual TBool RequestRelayout(const CCoeControl* aChildControl);
 208.205 -	// Visibility
 208.206 -	IMPORT_C TBool IsVisible() const;
 208.207 -	IMPORT_C void SetComponentsToInheritVisibility(TBool aInherit=ETrue);
 208.208 -	// Dimmed
 208.209 -	IMPORT_C TBool IsDimmed() const;
 208.210 -	// State observer
 208.211 -	IMPORT_C void SetObserver(MCoeControlObserver* aObserver);
 208.212 -	IMPORT_C MCoeControlObserver* Observer() const;
 208.213 -	// Focus
 208.214 -	IMPORT_C TBool IsFocused() const;
 208.215 -	IMPORT_C void SetFocus(TBool aFocus,TDrawNow aDrawNow=ENoDrawNow);
 208.216 -	IMPORT_C void SetNonFocusing();
 208.217 -	IMPORT_C void SetFocusing(TBool aFocusing);
 208.218 -	IMPORT_C TBool IsNonFocusing() const;
 208.219 -	// Drawing (see also Draw() below)
 208.220 -	IMPORT_C void DrawNow() const;
 208.221 -	IMPORT_C void DrawNow(const TRect &aRect) const;
 208.222 -	IMPORT_C void DrawDeferred() const;
 208.223 -	IMPORT_C CWindowGc& SystemGc() const;
 208.224 -	IMPORT_C TInt SetCustomGc(CWindowGc* aGraphicsContext);
 208.225 -	IMPORT_C CWindowGc* CustomGc() const;	
 208.226 -	// Control context (background color etc). Deprecated (use MCoeControlBackground)
 208.227 -	IMPORT_C void SetControlContext(MCoeControlContext* aContext);		// deprecated from 9.2
 208.228 -	IMPORT_C void CopyControlContextFrom(const CCoeControl* aControl);	// deprecated from 9.2
 208.229 -	IMPORT_C MCoeControlContext* ControlContext() const;				// deprecated from 9.2
 208.230 -	// Pointer events
 208.231 -	IMPORT_C void SetPointerCapture(TBool aCapture=ETrue);
 208.232 -	IMPORT_C void ClaimPointerGrab(TBool aSendUpEvent=ETrue);
 208.233 -	IMPORT_C void IgnoreEventsUntilNextPointerUp();
 208.234 -	IMPORT_C void SetGloballyCapturing(TBool aGlobal);
 208.235 -	// Pointer hit test
 208.236 -	IMPORT_C TInt SetHitTest(const MCoeControlHitTest* aHitTestControl);
 208.237 -	IMPORT_C const MCoeControlHitTest* HitTest() const;
 208.238 -	// Logical colors
 208.239 -	IMPORT_C void OverrideColorL(TInt aLogicalColor,TRgb aColor);
 208.240 -	IMPORT_C TBool GetColor(TInt aLogicalColor,TRgb& aColor) const;
 208.241 -	// Control background
 208.242 -	IMPORT_C void DrawBackground(const TRect& aRect) const;
 208.243 -	IMPORT_C void DrawForeground(const TRect& aRect) const;
 208.244 -	IMPORT_C const MCoeControlBackground* Background() const;
 208.245 -	IMPORT_C const MCoeControlBackground* FindBackground() const;
 208.246 -	IMPORT_C void SetBackground(const MCoeControlBackground* aBackground);
 208.247 -	// Zooming
 208.248 -	IMPORT_C void SetZoomFactorL(TInt aZoomFactor, TZoomType aZoomType = ERelativeZoom);
 208.249 -   	IMPORT_C TZoomFactor AccumulatedZoom() const;
 208.250 -   	IMPORT_C const TCoeZoomWithType* ZoomWithType() const;
 208.251 -  	// Font provider (see ScreenFont() below)
 208.252 -    IMPORT_C const CCoeFontProvider& FindFontProvider() const;
 208.253 -	IMPORT_C void SetFontProviderL(const CCoeFontProvider& aFontProvider);
 208.254 -	// Text baseline (virtuals)
 208.255 -	IMPORT_C virtual TInt TextBaselineOffset(const TSize& aSize) const;
 208.256 -	IMPORT_C virtual void SetTextBaselineSpacing(TInt aSpacing);
 208.257 -	// Input capabilities
 208.258 -	IMPORT_C TCoeInputCapabilities RecursivelyMergedInputCapabilities() const;
 208.259 -	// Interface access
 208.260 -	IMPORT_C void SetMopParent(MObjectProvider* aParent);
 208.261 -	// Instance identification
 208.262 -	IMPORT_C TInt UniqueHandle() const;
 208.263 -	IMPORT_C TInt SetUniqueHandle(TInt aUniqueHandle); 
 208.264 -public: // Pointer events (virtuals)
 208.265 -	IMPORT_C virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
 208.266 -protected: // Virtuals. Override to handle these events.
 208.267 -	IMPORT_C virtual void HandlePointerBufferReadyL();	// See HandlePointerEventL()
 208.268 -	// Change of focus
 208.269 -	IMPORT_C virtual void FocusChanged(TDrawNow aDrawNow);
 208.270 -	// Change of size and position
 208.271 -	IMPORT_C virtual void SizeChanged();
 208.272 -	IMPORT_C virtual void PositionChanged();
 208.273 -public:
 208.274 -	// Component control access
 208.275 -	IMPORT_C virtual TInt CountComponentControls() const;
 208.276 -	IMPORT_C virtual CCoeControl* ComponentControl(TInt aIndex) const;
 208.277 -	IMPORT_C TInt Index(const CCoeControl* aControl) const;
 208.278 -protected:
 208.279 -	// Control state	
 208.280 -	IMPORT_C TBool IsActivated() const;
 208.281 -	IMPORT_C TBool IsBeingDestroyed() const;
 208.282 -	// Component ownership
 208.283 -	IMPORT_C void InitComponentArrayL();
 208.284 -	IMPORT_C CCoeControlArray& Components();
 208.285 -	IMPORT_C const CCoeControlArray& Components() const;
 208.286 -	// Container window
 208.287 -	IMPORT_C RWindow& Window() const;
 208.288 -	IMPORT_C RBackedUpWindow& BackedUpWindow() const;
 208.289 -	IMPORT_C void CloseWindow();
 208.290 -	IMPORT_C void CreateWindowL();
 208.291 -	IMPORT_C void CreateWindowL(const CCoeControl* aParent);
 208.292 -	IMPORT_C void CreateWindowL(RWindowTreeNode& aParent);
 208.293 -	IMPORT_C void CreateWindowL(RWindowGroup* aParent);
 208.294 -	IMPORT_C void CreateBackedUpWindowL(RWindowTreeNode& aParent);
 208.295 -	IMPORT_C void CreateBackedUpWindowL(RWindowTreeNode& aParent,TDisplayMode aDisplayMode);
 208.296 -	IMPORT_C void EnableWindowTransparency();
 208.297 -	// Size and position
 208.298 -	IMPORT_C void SetCornerAndSize(TGulAlignment aCorner,const TSize& aSize);
 208.299 -	IMPORT_C void SetSizeWithoutNotification(const TSize& aSize);
 208.300 -	// Font access
 208.301 -	IMPORT_C const CFont& ScreenFont(const TCoeFont& aFont) const;
 208.302 -	// Text drawer
 208.303 -	IMPORT_C CCoeTextDrawerBase& TextDrawer(TInt aKey = KErrNotFound) const; 
 208.304 -	// Pointer events
 208.305 -	IMPORT_C void EnableDragEvents();
 208.306 -	IMPORT_C void HandleRedrawEvent(const TRect& aRect) const;
 208.307 -	IMPORT_C void SetAllowStrayPointers();
 208.308 -	IMPORT_C CCoeControl* GrabbingComponent() const;
 208.309 -	IMPORT_C TBool CapturesPointer() const;
 208.310 -	// Drawing	
 208.311 -	IMPORT_C TBool IsReadyToDraw() const;
 208.312 -	IMPORT_C TBool IsBlank() const;
 208.313 -	IMPORT_C void SetBlank();
 208.314 -	IMPORT_C void SetCanDrawOutsideRect();
 208.315 -	IMPORT_C void ActivateGc() const;
 208.316 -	IMPORT_C void DeactivateGc() const;
 208.317 -	IMPORT_C void ResetGc() const;
 208.318 -	// State events
 208.319 -	IMPORT_C void ReportEventL(MCoeControlObserver::TCoeEvent aEvent);
 208.320 -	// Resource changes	
 208.321 -	IMPORT_C void HandleComponentControlsResourceChange(TInt aType);
 208.322 -	// Copy Constructor and Assignment Operator
 208.323 -	inline CCoeControl(const CCoeControl& aControl);
 208.324 -	inline CCoeControl& operator=(const CCoeControl& aControl);
 208.325 -protected:	
 208.326 -	friend class CCoeControlArray;   
 208.327 -	IMPORT_C virtual void HandleControlArrayEventL(CCoeControlArray::TEvent aEvent, const CCoeControlArray* aArray, CCoeControl* aControl, TInt aControlId);
 208.328 -private: // reserved
 208.329 -	IMPORT_C virtual void Reserved_CCoeControl_10();
 208.330 -	IMPORT_C virtual void Reserved_CCoeControl_11();
 208.331 -	IMPORT_C virtual void Reserved_CCoeControl_12();
 208.332 -	IMPORT_C virtual void Reserved_CCoeControl_13();
 208.333 -private:
 208.334 -	IMPORT_C virtual void GetTextDrawer(CCoeTextDrawerBase*& aTextDrawer, const CCoeControl* aDrawingControl, TInt aKey) const;
 208.335 -private: // reserved
 208.336 -	IMPORT_C virtual void Reserved_CCoeControl_8();
 208.337 -	IMPORT_C virtual void Reserved_CCoeControl_9();
 208.338 -protected: // from MObjectProvider
 208.339 -	IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
 208.340 -private: // from MObjectProvider
 208.341 -	IMPORT_C MObjectProvider* MopNext();
 208.342 -private: 
 208.343 -	// Drawing (override this to draw)
 208.344 -	IMPORT_C virtual void Draw(const TRect& aRect) const;
 208.345 -protected: 
 208.346 -	// Debugging
 208.347 -	IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
 208.348 -private: // reserved
 208.349 -	IMPORT_C virtual void Reserved_2();
 208.350 -public: // but not exported
 208.351 -	void ProcessPointerEventL(const TPointerEvent& aPointerEvent);
 208.352 -	void ProcessPointerBufferReadyL();
 208.353 -	void RecursivelyMergeInputCapabilities(TCoeInputCapabilities& aInputCapabilities) const;
 208.354 -	void WriteInternalStateNowL(RWriteStream& aWriteStream) const;
 208.355 -    void NotifyFontChange(const CCoeFontProvider* aFontProvider);
 208.356 -    void RemoveFromParent();
 208.357 -    void RefetchPixelMappingL();
 208.358 -public: // deprecated
 208.359 -	inline TInt SetGc(CWindowGc* aGraphicsContext) const;
 208.360 -	inline CWindowGc* GetGc() const;
 208.361 -private:
 208.362 -	friend class CCoeRedrawer;
 208.363 -	void DrawComponents(const TRect& aRect) const;	
 208.364 -	void DrawWindowOwningComponentsNow() const;
 208.365 -	void DrawWindowOwningComponentsNow(const TRect &aRect) const;	
 208.366 -	void SetGrabbed(TBool aGrabbed);
 208.367 -	TBool IsGrabbed() const;
 208.368 -	void DoMakeVisible(TBool aVisible);
 208.369 -	void CheckPointerEventPurge() const;
 208.370 -	void RecursivelyMergeTextDrawers(CCoeTextDrawerBase*& aTextDrawer, const CCoeControl* aDrawingControl, TInt aKey) const;
 208.371 -	CCoeControl* WindowOwningParent();
 208.372 -	const CCoeControl* WindowOwningParent() const { return const_cast<CCoeControl*>(this)->WindowOwningParent(); }
 208.373 -	const CCoeControl* SearchParent(const CCoeControl* aParentToFind) const;
 208.374 -	TInt SetZoomWithType(TCoeZoomWithType* aZoomWithType);
 208.375 -	TCoeZoomWithType* GetZoomWithType() const;
 208.376 -	TInt SetFontProvider(const CCoeFontProvider* aFontProvider);
 208.377 -	const CCoeFontProvider* GetFontProvider() const;
 208.378 -	TInt FindColor(TInt aLogicalColor) const;
 208.379 -	void ActivateGcRecursive() const;
 208.380 -	void DeactivateGcRecursive() const;
 208.381 -	void ReportControlStateChange(MCoeControlStateObserver::TCoeState aType);
 208.382 -public:	
 208.383 -	IMPORT_C void EnableReportControlStateChange(TBool aState);
 208.384 -
 208.385 -protected:
 208.386 -	CCoeEnv* iCoeEnv;
 208.387 -	MCoeControlContext* iContext;	// deprecated
 208.388 -	TPoint iPosition;
 208.389 -	TSize iSize;
 208.390 -private:
 208.391 -	TInt iFlags;
 208.392 -	RDrawableWindow* iWin;
 208.393 -	RCoeDynamicDataStorage* iData;
 208.394 -	MObjectProvider* iMopParent;
 208.395 -	};
 208.396 -
 208.397 -
 208.398 -/** 
 208.399 -Gets the control environment object for this control.
 208.400 -
 208.401 -@return The control's control environment object. 
 208.402 -*/
 208.403 -inline CCoeEnv* CCoeControl::ControlEnv() const
 208.404 -	{ return(iCoeEnv); }
 208.405 -
 208.406 -/**
 208.407 -Deprecated. See CCoeControl::SetCustomGc().
 208.408 -@deprecated
 208.409 -*/
 208.410 -inline TInt CCoeControl::SetGc(CWindowGc* aGraphicsContext) const
 208.411 -	{ return const_cast<CCoeControl*>(this)->SetCustomGc(aGraphicsContext); }
 208.412 -	
 208.413 -/**
 208.414 -Deprecated. See CCoeControl::CustomGc().
 208.415 -@deprecated
 208.416 -*/
 208.417 -inline CWindowGc* CCoeControl::GetGc() const
 208.418 -	{ return CustomGc(); }
 208.419 -
 208.420 -
 208.421 -#endif	// __COECNTRL_H__
   209.1 --- a/epoc32/include/coecobs.h	Tue Mar 16 16:12:26 2010 +0000
   209.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   209.3 @@ -1,117 +0,0 @@
   209.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   209.5 -// All rights reserved.
   209.6 -// This component and the accompanying materials are made available
   209.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   209.8 -// which accompanies this distribution, and is available
   209.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  209.10 -//
  209.11 -// Initial Contributors:
  209.12 -// Nokia Corporation - initial contribution.
  209.13 -//
  209.14 -// Contributors:
  209.15 -//
  209.16 -// Description:
  209.17 -//
  209.18 -
  209.19 -#ifndef __COECOBS_H__
  209.20 -#define __COECOBS_H__
  209.21 -
  209.22 -#include <e32base.h>
  209.23 -#include <coemop.h>
  209.24 -
  209.25 -class CCoeControl;
  209.26 -
  209.27 -class MCoeControlObserver
  209.28 -/** Interface for a control to send events to its observer control. 
  209.29 -
  209.30 -@publishedAll 
  209.31 -@released */
  209.32 -	{
  209.33 -public:
  209.34 -	/** Observer event types. */
  209.35 -	enum TCoeEvent
  209.36 -		{
  209.37 -		/** Request exit. 
  209.38 -		This event is used to indicate exit from a mode when 
  209.39 -		the user has completed an operation 'successfully'. For example, this 
  209.40 -		event might be sent when the user has a choice list open and presses 
  209.41 -		enter to select an item. The UI Control Framework does not use this 
  209.42 -		event itself. */
  209.43 -		EEventRequestExit,
  209.44 -		/** Request cancel.
  209.45 -		This event is used to indicate exit from a mode when the user has cancelled 
  209.46 -		the operation that caused entry into the mode originally. For example, this 
  209.47 -		event might be sent when the user presses escape to close the list and leave 
  209.48 -		the choice as it was. The UI Control Framework does not use this event itself. */
  209.49 -		EEventRequestCancel,
  209.50 -		/** Request focus.
  209.51 -		This event is notified by the UI Control Framework during pointer down event 
  209.52 -		processing after EEventPrepareFocusTransition is handled. */
  209.53 -		EEventRequestFocus,
  209.54 -		/** Prepare focus transition.
  209.55 -		This event is notified by the UI Control Framework during pointer down event 
  209.56 -		processing if the control does not yet have, but could get, focus. */
  209.57 -		EEventPrepareFocusTransition,
  209.58 -		/** State changed.
  209.59 -		This event can be used by a control to report that some piece of internal 
  209.60 -		data has changed, and hence that any observer should be notified accordingly. 
  209.61 -		The UI Control Framework does not use this value itself. */
  209.62 -		EEventStateChanged,
  209.63 -		/** Interaction refused.
  209.64 -		This event is notified by the UI Control Framework during pointer down event 
  209.65 -		processing if the control is dimmed (disabled). */
  209.66 -		EEventInteractionRefused
  209.67 -		};
  209.68 -public:
  209.69 -	/** Handles an event from an observed control.
  209.70 -	
  209.71 -	This function is called when a control for which this control is the observer 
  209.72 -	calls CCoeControl::ReportEventL(). It should be implemented by the observer 
  209.73 -	control, and should handle all events sent by controls it observes.
  209.74 -	
  209.75 -	@param aControl The control that sent the event.
  209.76 -	@param aEventType The event type. */
  209.77 -	virtual void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)=0;
  209.78 -protected:
  209.79 -    IMPORT_C MCoeControlObserver();
  209.80 -    
  209.81 -private:
  209.82 -    IMPORT_C virtual void MCoeControlObserver_Reserved1();
  209.83 -    IMPORT_C virtual void MCoeControlObserver_Reserved2();
  209.84 -    
  209.85 -private:
  209.86 -    TInt iMCoeControlObserver_Reserved1;
  209.87 -	};
  209.88 -
  209.89 -class MCoeControlStateObserver
  209.90 -/** This class defines an interface which will given notification of when a CCoeControl
  209.91 -changes its visibility or dimmed state.
  209.92 -
  209.93 -@publishedAll
  209.94 -@released */
  209.95 -	{
  209.96 -	friend class CCoeControl;
  209.97 -public:
  209.98 -	/** The MObjectProvider framework should use this UID to know when to return a concrete instance of this interface. */
  209.99 -	DECLARE_TYPE_ID(0x10285A45)
 209.100 -	enum TCoeState
 209.101 -		{
 209.102 -		/** This enum is used to say that the control has changed its Dimmed state */
 209.103 -		EStateDimmed,
 209.104 -		/** This enum is used to say that the control has changed its Visibility state */
 209.105 -		EStateVisibility
 209.106 -		};
 209.107 -private:
 209.108 -	/**
 209.109 -	If an object implementing this interface has been attached to the MObjectProvider
 209.110 -	hierarchy in which a CCoeControl is a member, any call to the CCoeControl's
 209.111 -	SetDimmed() or MakeVisible() (that results in an actual state change) will trigger
 209.112 -	a call to this interface.
 209.113 -
 209.114 -	@param aControl	A pointer to the control that has changed.
 209.115 -	@param aState	An enum from TCoeState to say how the control has changed.
 209.116 -	@return 		A system wide error code, currently ignored but may not be in future.*/
 209.117 -	virtual TInt HandleControlStateChange(CCoeControl* aControl,TCoeState aState)=0;
 209.118 -	};
 209.119 -
 209.120 -#endif	// __COECOBS_H__
   210.1 --- a/epoc32/include/coecoloruse.h	Tue Mar 16 16:12:26 2010 +0000
   210.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   210.3 @@ -1,122 +0,0 @@
   210.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   210.5 -// All rights reserved.
   210.6 -// This component and the accompanying materials are made available
   210.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   210.8 -// which accompanies this distribution, and is available
   210.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  210.10 -//
  210.11 -// Initial Contributors:
  210.12 -// Nokia Corporation - initial contribution.
  210.13 -//
  210.14 -// Contributors:
  210.15 -//
  210.16 -// Description:
  210.17 -//
  210.18 -
  210.19 -#ifndef __COECOLORUSE_H__
  210.20 -#define __COECOLORUSE_H__
  210.21 -
  210.22 -#include <e32std.h>
  210.23 -
  210.24 -/** Logical colour used when drawing in controls.
  210.25 -
  210.26 -This class pairs a logical colour value with an explanation of how it is used 
  210.27 -when drawing a control. The explanation is in terms of categories of use, e.g. 
  210.28 -in the TGround category, the colour can used for either the foreground or 
  210.29 -background. 
  210.30 -
  210.31 -@publishedAll 
  210.32 -@released */
  210.33 -class TCoeColorUse
  210.34 -    {
  210.35 -public:
  210.36 -	/** Foreground and background category flags */
  210.37 -	enum TGround
  210.38 -		{
  210.39 -		/** The logical colour is used to draw the control when it is in the foreground. */
  210.40 -		EFore=0x01,
  210.41 -		/** The logical colour is used to draw the control when it is in the background. */
  210.42 -		EBack=0x02
  210.43 -		};
  210.44 -
  210.45 -	/** Flags that control the area in which colour is used. */
  210.46 -	enum TAreas
  210.47 -		{
  210.48 -		/** The logical colour is used to draw a control's contents. */
  210.49 -		EContents=0x10,
  210.50 -		/** The logical colour is used to draw a control's highlighted contents. */
  210.51 -		EHighlights=0x20,
  210.52 -		/** The logical colour is used to draw a control's surrounds. */
  210.53 -		ESurrounds=0x40,
  210.54 -		/** The logical colour is used to draw a control's borders. */
  210.55 -		EBorders=0x80
  210.56 -		};
  210.57 -
  210.58 -	/** Focus category flags */
  210.59 -	enum TFocus
  210.60 -		{
  210.61 -		/** The logical colour is used to draw the control when active and either focused 
  210.62 -		or unfocused. */
  210.63 -		EActive=0x100,
  210.64 -		/** The logical colour is used to draw the control when dimmed and either focused 
  210.65 -		or unfocused. */
  210.66 -		EDimmed=0x200,
  210.67 -		/** The logical colour is used to draw the control when it is shadowed. */
  210.68 -		EShadowed=0x400,	
  210.69 -		/** The logical colour is used to draw the control when focused and pressed. */
  210.70 -		EPressed=0x800
  210.71 -		};
  210.72 -
  210.73 -	/** State category flags */
  210.74 -	enum TState
  210.75 -		{
  210.76 -		/** The logical colour is used to draw the control in the normal state. */
  210.77 -		ENormal=0x1000,
  210.78 -		/** The logical colour is used to draw the control in the set state. */
  210.79 -		ESet=0x2000,
  210.80 -		/** The logical colour is used to draw the control in the checked state. */
  210.81 -		EChecked=0x4000
  210.82 -		};
  210.83 -
  210.84 -	/** Tone flags */
  210.85 -	enum TTones
  210.86 -		{
  210.87 -		/** The logical colour is used to draw the control in neutral tones. */
  210.88 -		ENeutral=0x10000,
  210.89 -		/** The logical colour is used to draw the control in light tones. */
  210.90 -		ELight=0x20000,
  210.91 -		/** The logical colour is used to draw the control in midlight tones. */
  210.92 -		EMidLight=0x40000,
  210.93 -		/** The logical colour is used to draw the control in mid tones. */
  210.94 -		EMid=0x80000,
  210.95 -		/** The logical colour is used to draw the control in dark tones. */
  210.96 -		EDark=0x100000
  210.97 -		};
  210.98 -public:
  210.99 -	IMPORT_C TCoeColorUse();
 210.100 -	//
 210.101 -	IMPORT_C void SetUse(TInt aUse);
 210.102 -	IMPORT_C void SetLogicalColor(TInt aLogicalColor);
 210.103 -	IMPORT_C TInt LogicalColor() const;
 210.104 -	IMPORT_C TInt Use() const;
 210.105 -	//
 210.106 -	IMPORT_C TBool IsForeground() const;
 210.107 -	IMPORT_C TBool IsBackground() const;
 210.108 -	//
 210.109 -	IMPORT_C TBool IsContents() const;
 210.110 -	IMPORT_C TBool IsHighlights() const;
 210.111 -	IMPORT_C TBool IsSurrounds() const;
 210.112 -	IMPORT_C TBool IsBorders() const;
 210.113 -	IMPORT_C TBool IsActive() const;
 210.114 -	IMPORT_C TBool IsDimmed() const;
 210.115 -	IMPORT_C TBool IsPressed() const;
 210.116 -	IMPORT_C TBool IsNormal() const;
 210.117 -	IMPORT_C TBool IsSet() const;
 210.118 -private:
 210.119 -    TInt iLogicalColor;
 210.120 -	TInt iUse;
 210.121 -	TInt iTCoeColorUse_Reserved1;
 210.122 -    };
 210.123 -
 210.124 -
 210.125 -#endif // __COECOLORUSE_H__
   211.1 --- a/epoc32/include/coecontrolarray.h	Tue Mar 16 16:12:26 2010 +0000
   211.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   211.3 @@ -1,183 +0,0 @@
   211.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   211.5 -// All rights reserved.
   211.6 -// This component and the accompanying materials are made available
   211.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   211.8 -// which accompanies this distribution, and is available
   211.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  211.10 -//
  211.11 -// Initial Contributors:
  211.12 -// Nokia Corporation - initial contribution.
  211.13 -//
  211.14 -// Contributors:
  211.15 -//
  211.16 -// Description:
  211.17 -//
  211.18 -
  211.19 -
  211.20 -#ifndef __COECONTROLARRAY_H__
  211.21 -#define __COECONTROLARRAY_H__
  211.22 -
  211.23 -#include <e32base.h>	// class CBase
  211.24 -
  211.25 -class CCoeControl;
  211.26 -
  211.27 -/** Default id for controls that have no associated id. This is equal
  211.28 -to KErrNotFound
  211.29 -@publishedAll 
  211.30 -@released 
  211.31 -*/
  211.32 -const TInt KCoeNoControlId = KErrNotFound;
  211.33 -
  211.34 -/** Class that encapsulates a control and the identifier for that control.
  211.35 -
  211.36 -Controls in a CCoeControlArray can be associated with an id. This class encapsulates the control and its id.
  211.37 -
  211.38 -@publishedAll 
  211.39 -@released */
  211.40 -class TCoeControlWithId
  211.41 -	{
  211.42 -public:
  211.43 -	TCoeControlWithId(TInt aControlId, CCoeControl* aControl = NULL);
  211.44 -public:
  211.45 -	/** The control */
  211.46 -	CCoeControl* iControl;
  211.47 -	/** The id of the control */
  211.48 -	TInt iId;
  211.49 -	};
  211.50 -
  211.51 -/** Class that represents an array of controls.
  211.52 -
  211.53 -The CCoeControlArray class is used to store the child controls of a container control.
  211.54 -The method CCoeControl::InitComponentArrayL() must be used to create the array and the method
  211.55 -CCoeControlArray& CCoeControl::Components() can be used to get this array.
  211.56 -
  211.57 -@publishedAll 
  211.58 -@released */
  211.59 -class CCoeControlArray : public CBase
  211.60 -	{
  211.61 -public:
  211.62 -	/** This class is an iterator for the CCoeControlArray class.
  211.63 -	@publishedAll 
  211.64 -	@released 
  211.65 -	*/
  211.66 -	class TCursor	// robust iterator
  211.67 -		{
  211.68 -	public:	
  211.69 -		template<typename T> T* Control();
  211.70 -		template<typename T> const T* Control() const;
  211.71 -		IMPORT_C TBool Prev();
  211.72 -		IMPORT_C TBool Next();
  211.73 -		IMPORT_C TBool IsValid() const;
  211.74 -		
  211.75 -		IMPORT_C TBool operator==(const TCursor& aCursor) const;
  211.76 -		IMPORT_C TBool operator!=(const TCursor& aCursor) const;
  211.77 -	public:
  211.78 -		TCursor(const CCoeControlArray& aArray, TInt aIndex);
  211.79 -		TInt Index() const;
  211.80 -	private:
  211.81 -		IMPORT_C CCoeControl* Ctrl() const;	
  211.82 -		void UpdateMemento() const;
  211.83 -		void UpdateIndex() const;
  211.84 -	private:
  211.85 -		const CCoeControlArray* iArray;
  211.86 -		mutable TInt iIndex;
  211.87 -		mutable TCoeControlWithId iMemento;
  211.88 -		};
  211.89 -public:
  211.90 -	IMPORT_C static CCoeControlArray* NewL(CCoeControl& aOwner);
  211.91 -	IMPORT_C ~CCoeControlArray();
  211.92 -	IMPORT_C TInt Count() const;
  211.93 -	IMPORT_C void Reset();
  211.94 -	IMPORT_C void ResetAndDestroy();
  211.95 -	IMPORT_C void SortById();
  211.96 -	
  211.97 -	IMPORT_C TBool ControlsOwnedExternally() const;
  211.98 -	IMPORT_C void SetControlsOwnedExternally(TBool aOwnedExternally);
  211.99 -			
 211.100 -	IMPORT_C TBool IsArrayLocked() const;
 211.101 -	IMPORT_C void SetArrayLocked();
 211.102 -	
 211.103 -	template<typename T> T* ControlById(TInt aControlId);
 211.104 -	template<typename T> const T* ControlById(TInt aControlId) const;
 211.105 -		
 211.106 -	IMPORT_C TCursor Begin() const;
 211.107 -	IMPORT_C TCursor End() const;
 211.108 -	IMPORT_C TCursor Find(const CCoeControl* aControl) const;
 211.109 -	IMPORT_C TCursor Find(TInt aControlId) const;
 211.110 -
 211.111 -	IMPORT_C TCursor AppendLC(CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
 211.112 -	IMPORT_C TCursor InsertAfterLC(TInt aInsertAfterId, CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
 211.113 -	IMPORT_C TCursor InsertLC(TCursor& aInsertAt, CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
 211.114 -	
 211.115 -	IMPORT_C TInt Remove(const CCoeControl* aControl);
 211.116 -	IMPORT_C CCoeControl* Remove(TCursor aRemoveAt);
 211.117 -	IMPORT_C CCoeControl* RemoveById(TInt aControlId);
 211.118 -public:	
 211.119 -	IMPORT_C TInt Replace(CCoeControl* aOriginalControl, CCoeControl* aNewControl);
 211.120 -	
 211.121 -public:	// internal use only
 211.122 -	IMPORT_C TCoeControlWithId At(TInt aIndex);
 211.123 -	IMPORT_C const TCoeControlWithId At(TInt aIndex) const;
 211.124 -	IMPORT_C TInt Id(const CCoeControl& aControl) const;
 211.125 -	IMPORT_C void Sort(TLinearOrder< TCoeControlWithId > aOrder);
 211.126 -public:
 211.127 -	/** Defines the possible events related to a change to the contents
 211.128 -	of the array. */
 211.129 -	enum TEvent
 211.130 -		{
 211.131 -		/** A control has been added to the array */
 211.132 -		EControlAdded,	
 211.133 -		/** A control has been removed from the array */
 211.134 -		EControlRemoved
 211.135 -		};
 211.136 -
 211.137 -private:
 211.138 -	IMPORT_C CCoeControlArray(CCoeControl& aOwner);
 211.139 -	TInt IndexById(TInt aControlId) const;
 211.140 -	IMPORT_C CCoeControl* CtrlById(TInt aControlId) const;
 211.141 -
 211.142 -private:
 211.143 -	CCoeControl& iOwner;
 211.144 -	TInt iFlags;
 211.145 -	RArray<TCoeControlWithId> iControls;
 211.146 -	};
 211.147 -
 211.148 -/**	Gets the control.
 211.149 -@return The control at the current cursor position. 
 211.150 -*/
 211.151 -template<typename T>
 211.152 -T* CCoeControlArray::TCursor::Control()
 211.153 -	{
 211.154 -	return static_cast<T*>(Ctrl());
 211.155 -	}
 211.156 -
 211.157 -/**	Gets the control.
 211.158 -@return The control at the current cursor position. 
 211.159 -*/
 211.160 -template<typename T>
 211.161 -const T* CCoeControlArray::TCursor::Control() const
 211.162 -	{
 211.163 -	return static_cast<T*>(Ctrl());
 211.164 -	}
 211.165 -
 211.166 -/** Gets the control with the given id.
 211.167 -@param aControlId The id of the desired control.
 211.168 -@return The control with the given id.
 211.169 -*/
 211.170 -template<typename T>
 211.171 -T* CCoeControlArray::ControlById(TInt aControlId)
 211.172 -	{
 211.173 -	return static_cast<T*>(CtrlById(aControlId));
 211.174 -	}
 211.175 -
 211.176 -/** Gets the control with the given id.
 211.177 -@param aControlId The id of the desired control.
 211.178 -@return The control with the given id.
 211.179 -*/
 211.180 -template<typename T>
 211.181 -const T* CCoeControlArray::ControlById(TInt aControlId) const
 211.182 -	{
 211.183 -	return static_cast<T*>(CtrlById(aControlId));
 211.184 -	}
 211.185 -
 211.186 -#endif //__COECONTROLARRAY_H__
   212.1 --- a/epoc32/include/coedef.h	Tue Mar 16 16:12:26 2010 +0000
   212.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   212.3 @@ -1,138 +0,0 @@
   212.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   212.5 -// All rights reserved.
   212.6 -// This component and the accompanying materials are made available
   212.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   212.8 -// which accompanies this distribution, and is available
   212.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  212.10 -//
  212.11 -// Initial Contributors:
  212.12 -// Nokia Corporation - initial contribution.
  212.13 -//
  212.14 -// Contributors:
  212.15 -//
  212.16 -// Description:
  212.17 -//
  212.18 -
  212.19 -#ifndef __COEDEF_H__
  212.20 -#define __COEDEF_H__
  212.21 -
  212.22 -#include <e32std.h> 
  212.23 -#include <guldef.h> // only requried for limited source compatability with releases prior to 250
  212.24 -
  212.25 -const TInt KCoeCustomColorsArrayValue=0x100057C2;
  212.26 -const TInt KCoeColorGray4=0x19bd6002;
  212.27 -const TInt KCoeColorColor16=0x19bd6003;
  212.28 -const TInt ECoeResourceSignatureValue=4;
  212.29 -
  212.30 -/** Event handling flags. 
  212.31 -
  212.32 -These should be returned by CCoeControl::OfferKeyEventL() to indicate whether 
  212.33 -or not a key event was processed by the control. 
  212.34 -
  212.35 -@publishedAll
  212.36 -@released */
  212.37 -enum TKeyResponse
  212.38 -	{
  212.39 -	/** The key event was not handled. */
  212.40 -	EKeyWasNotConsumed,
  212.41 -	/** The key event was handled. */
  212.42 -	EKeyWasConsumed
  212.43 -	};
  212.44 -
  212.45 -/** Control redraw flags. 
  212.46 -
  212.47 -Passed to CCoeControl::SetFocus() to indicate the requirements for control 
  212.48 -redrawing. 
  212.49 -
  212.50 -@publishedAll
  212.51 -@released */
  212.52 -enum TDrawNow
  212.53 -	{
  212.54 -	/** Redraw of the control is not required immediately. */
  212.55 -	ENoDrawNow,
  212.56 -	/** Redraw control immediately. */
  212.57 -	EDrawNow
  212.58 -	};
  212.59 -
  212.60 -/** Window priority values. 
  212.61 -
  212.62 -These are passed in the aOrdinalPriority argument to RWindowTreeNode::SetOrdinalPosition(). 
  212.63 -
  212.64 -@publishedAll
  212.65 -@released */
  212.66 -enum TCoeWinPriority
  212.67 -	{
  212.68 -	/** -1000 */
  212.69 -	ECoeWinPriorityNeverAtFront		=-1000,
  212.70 -	/** -750 */
  212.71 -	ECoeWinPriorityLow				=-750,
  212.72 -	/** 0 */
  212.73 -	ECoeWinPriorityNormal			=0,
  212.74 -	/** 500 */
  212.75 -	ECoeWinPriorityMedium			=500,
  212.76 -	/** 750 */
  212.77 -	ECoeWinPriorityHigh				=750,
  212.78 -	/** 900 */
  212.79 -	ECoeWinPriorityFep				=900,
  212.80 -	/** 1000 */
  212.81 -	ECoeWinPriorityAlwaysAtFront	=1000
  212.82 -	};
  212.83 -
  212.84 -/** The message UID sent when a colour scheme change event occurs.
  212.85 -
  212.86 -@internalTechnology */
  212.87 -const TInt KUidValueCoeColorSchemeChangeEvent	=0x100056C4;
  212.88 -const TInt KUidValueCoeZoomChangeEvent          =0x100057C3;
  212.89 -const TInt KUidValueCoeFontChangeEvent          =0x100057C4;
  212.90 -
  212.91 -/** @internalTechnology */
  212.92 -const TUint KUidFepFrameworkRepository=0x10272618;
  212.93 -
  212.94 -/** @internalTechnology */
  212.95 -enum // key-masks and keys for the "KUidFepFrameworkRepository" repository
  212.96 -	{
  212.97 -	ERepositoryKeyMask_DefaultSetting	=0x00001000,
  212.98 -	ERepositoryKeyMask_DynamicSetting	=0x00002000,
  212.99 -
 212.100 -	ERepositoryKeyMask_FepId			=0x00000001,
 212.101 -	ERepositoryKeyMask_OnState			=0x00000002,
 212.102 -	ERepositoryKeyMask_OnKeyData		=0x00000004,
 212.103 -	ERepositoryKeyMask_OffKeyData		=0x00000008,
 212.104 -
 212.105 -	ERepositoryKey_DefaultFepId			=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_FepId,
 212.106 -	ERepositoryKey_DefaultOnState		=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_OnState,
 212.107 -	ERepositoryKey_DefaultOnKeyData		=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_OnKeyData,
 212.108 -	ERepositoryKey_DefaultOffKeyData	=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_OffKeyData,
 212.109 -
 212.110 -	ERepositoryKey_DynamicFepId			=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_FepId,
 212.111 -	ERepositoryKey_DynamicOnState		=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_OnState,
 212.112 -	ERepositoryKey_DynamicOnKeyData		=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_OnKeyData,
 212.113 -	ERepositoryKey_DynamicOffKeyData	=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_OffKeyData
 212.114 -	};
 212.115 -
 212.116 -/** @internalTechnology */
 212.117 -#if defined(_DEBUG)
 212.118 -#define __DEBUG_CHECK_HEAP_INTEGRITY User::Heap().Check()
 212.119 -#else
 212.120 -#define __DEBUG_CHECK_HEAP_INTEGRITY
 212.121 -#endif
 212.122 -
 212.123 -/** Control key modifier.
 212.124 -
 212.125 -Key codes get changed when the Ctrl key modifier is pressed at the same time as the key . 
 212.126 -The CTRL macro is used to shift the key character appropriately.
 212.127 -
 212.128 -Note: this is not an inline function since that can't be used as the case of a switch 
 212.129 -statement.
 212.130 - 
 212.131 -@publishedAll
 212.132 -@released */
 212.133 -#define CTRL(x) ((x)-'a'+1)
 212.134 -
 212.135 -/** Constant that represents all standard keyboard modifier keys.
 212.136 -
 212.137 -@publishedAll
 212.138 -@released */
 212.139 -#define EAllStdModifiers (EModifierFunc|EModifierCtrl|EModifierShift)
 212.140 -
 212.141 -#endif	// __COEDEF_H__
   213.1 --- a/epoc32/include/coeerror.h	Tue Mar 16 16:12:26 2010 +0000
   213.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   213.3 @@ -1,58 +0,0 @@
   213.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   213.5 -// All rights reserved.
   213.6 -// This component and the accompanying materials are made available
   213.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   213.8 -// which accompanies this distribution, and is available
   213.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  213.10 -//
  213.11 -// Initial Contributors:
  213.12 -// Nokia Corporation - initial contribution.
  213.13 -//
  213.14 -// Contributors:
  213.15 -//
  213.16 -// Description:
  213.17 -//
  213.18 -
  213.19 -#ifndef __COEERROR_H__
  213.20 -#define __COEERROR_H__
  213.21 -
  213.22 -/**
  213.23 -@internalTechnology
  213.24 -*/
  213.25 -#define KUidConeDllValue16 0x10003a41
  213.26 -
  213.27 -/**
  213.28 -@internalTechnology
  213.29 -*/
  213.30 -const TUid KUidConeDll16={KUidConeDllValue16};
  213.31 -
  213.32 -
  213.33 -#if defined(_UNICODE)
  213.34 -/**
  213.35 -@internalTechnology
  213.36 -*/
  213.37 -#define KUidConeDllValue KUidConeDllValue16
  213.38 -/**
  213.39 -@internalTechnology
  213.40 -*/
  213.41 -const TUid KUidConeDll={KUidConeDllValue};
  213.42 -#else
  213.43 -#define KUidConeDllValue KUidConeDllValue8
  213.44 -const TUid KUidConeDll={KUidConeDllValue};
  213.45 -#endif
  213.46 -
  213.47 -
  213.48 -/** UI Control Framework errors.
  213.49 -
  213.50 -@publishedAll
  213.51 -@deprecated */
  213.52 -enum
  213.53 -	{
  213.54 -	/** Not used. */
  213.55 -	KErrCoeResourceFileDuplicateOffset,
  213.56 -	/** Read fail. CCoeEnv::ReadResource() sets this as the
  213.57 -	active scheduler's extended error number if the read fails.	*/
  213.58 -	KErrCoeFailedToReadFromProgDisk
  213.59 -	};
  213.60 -
  213.61 -#endif	// __COEERROR_H__
   214.1 --- a/epoc32/include/coefepff.h	Tue Mar 16 16:12:26 2010 +0000
   214.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   214.3 @@ -1,71 +0,0 @@
   214.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   214.5 -// All rights reserved.
   214.6 -// This component and the accompanying materials are made available
   214.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   214.8 -// which accompanies this distribution, and is available
   214.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  214.10 -//
  214.11 -// Initial Contributors:
  214.12 -// Nokia Corporation - initial contribution.
  214.13 -//
  214.14 -// Contributors:
  214.15 -//
  214.16 -// Description:
  214.17 -//
  214.18 -
  214.19 -#ifndef __COEFEPFF_H__
  214.20 -#define __COEFEPFF_H__
  214.21 -
  214.22 -#include <e32std.h>
  214.23 -
  214.24 -class CCoeFepParameters;
  214.25 -class CCoeFep;
  214.26 -
  214.27 -/** FEP factory function which must be exported by every FEP.
  214.28 -
  214.29 -The function is called by the UI Control Framework when it loads the
  214.30 -FEP. It returns a fully constructed object of a CCoeFep-derived class, 
  214.31 -and passes ownership of that object to the caller.
  214.32 -
  214.33 -The function can leave with any of the system-wide error codes,
  214.34 -for instance KErrNoMemory.
  214.35 -
  214.36 -@publishedAll
  214.37 -@released
  214.38 -@param aConeEnvironment A reference to the application's control environment. 
  214.39 -@param aFullFileNameOfDll The full file name of the FEP's top-level DLL, i.e. 
  214.40 -something like "z:\system\fep\TFEP1.FEP". A FEP could use this parameter to 
  214.41 -work out the location of its resource file.
  214.42 -@param aFepParameters FEP parameters. These should simply be passed to 
  214.43 -CCoeFep::BaseConstructL().
  214.44 -@return A pointer to the newly created object belonging to a 
  214.45 -CCoeFep-derived class. */
  214.46 -IMPORT_C CCoeFep* NewFepL(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll, const CCoeFepParameters& aFepParameters);
  214.47 -
  214.48 -/** Runs the FEP settings dialog.
  214.49 -
  214.50 -The function is called by the FEPs control panel plug-in in order 
  214.51 -to run the settings dialog for the FEP. It must be exported by 
  214.52 -every FEP.
  214.53 -
  214.54 -The function can leave with any of the system-wide error codes,
  214.55 -for instance KErrNoMemory.
  214.56 -
  214.57 -Note: the FEP may or may not be loaded when this function is called.
  214.58 -
  214.59 -@publishedAll
  214.60 -@released
  214.61 -@param aConeEnvironment A reference to the application's control environment.
  214.62 -@param aFullFileNameOfDll The full file name of the FEP's top-level DLL, i.e.
  214.63 -something like "z:\system\fep\TFEP1.FEP". */
  214.64 -IMPORT_C void SynchronouslyExecuteSettingsDialogL(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll);
  214.65 -IMPORT_C void Reserved_1();
  214.66 -IMPORT_C void Reserved_2();
  214.67 -IMPORT_C void Reserved_3();
  214.68 -IMPORT_C void Reserved_4();
  214.69 -IMPORT_C void Reserved_5();
  214.70 -IMPORT_C void Reserved_6();
  214.71 -IMPORT_C void Reserved_7();
  214.72 -IMPORT_C void Reserved_8();
  214.73 -
  214.74 -#endif	// __COEFEPFF_H__
   215.1 --- a/epoc32/include/coefont.h	Tue Mar 16 16:12:26 2010 +0000
   215.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   215.3 @@ -1,81 +0,0 @@
   215.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   215.5 -// All rights reserved.
   215.6 -// This component and the accompanying materials are made available
   215.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   215.8 -// which accompanies this distribution, and is available
   215.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  215.10 -//
  215.11 -// Initial Contributors:
  215.12 -// Nokia Corporation - initial contribution.
  215.13 -//
  215.14 -// Contributors:
  215.15 -//
  215.16 -// Description:
  215.17 -//
  215.18 -
  215.19 -#ifndef __COEFONT_H__
  215.20 -#define __COEFONT_H__
  215.21 -
  215.22 -#include <e32def.h>
  215.23 -#include <gdi.h>
  215.24 -
  215.25 -/** A class to simplify font usage
  215.26 -
  215.27 -@publishedAll
  215.28 -@released
  215.29 -*/
  215.30 -class TCoeFont 
  215.31 -	{ 
  215.32 -public: 
  215.33 -	enum TFlags 
  215.34 -		{ 
  215.35 -		ENoFlags = 0x00, 
  215.36 -		ENonZooming = 0x01 
  215.37 -		}; 
  215.38 -
  215.39 -	enum TLogicalSize 
  215.40 -		{ 
  215.41 -		EExtraSmall = 0, 
  215.42 -		ESmall, 
  215.43 -		EMedium, 
  215.44 -		ELarge, 
  215.45 -		EExtraLarge,
  215.46 -		EUndefinedSize = -1
  215.47 -		};         
  215.48 -
  215.49 -	enum TStyle 
  215.50 -		{ 
  215.51 -		EPlain = 0x00, 
  215.52 -		EItalic = 0x01, 
  215.53 -		EBold = 0x02, 
  215.54 -		ESuper = 0x04, 
  215.55 -		ESub = 0x08 
  215.56 -		}; 
  215.57 -
  215.58 -public:
  215.59 -	IMPORT_C TCoeFont(TLogicalSize aSize, TInt aStyle, TInt aFlags = ENoFlags); 
  215.60 -	IMPORT_C TCoeFont(TInt aHeightInPixels, TInt aStyle, TInt aFlags = ENoFlags); 
  215.61 -	IMPORT_C TCoeFont(const TCoeFont& aFont);
  215.62 -	IMPORT_C TCoeFont(); 
  215.63 -	IMPORT_C static TCoeFont NormalFont(TInt aFlags = ENoFlags);	// Medium, Plain 
  215.64 -	IMPORT_C static TCoeFont LegendFont(TInt aFlags = ENoFlags);	// Medium, Bold 
  215.65 -	IMPORT_C static TCoeFont AnnotationFont(TInt aFlags = ENoFlags);// Small, Plain 
  215.66 -	IMPORT_C static TCoeFont TitleFont(TInt aFlags = ENoFlags);		// Large, Bold 
  215.67 -public: // properties         
  215.68 -	IMPORT_C TLogicalSize LogicalSize() const; 
  215.69 -	IMPORT_C TInt HeightInPixels() const; 
  215.70 -	IMPORT_C TFontStyle Style() const; 
  215.71 -	IMPORT_C TBool IsNonZooming() const; 
  215.72 -public:         
  215.73 -	static TInt Compare(const TCoeFont& aFirst, const TCoeFont& aSecond); 
  215.74 -private: 
  215.75 -	TLogicalSize iLogicalSize; 
  215.76 -	TInt8 iHeightInPixels; 
  215.77 -	TInt8 iStyle; 
  215.78 -	TInt8 iFlags; 
  215.79 -	TTypeface iTypeface;	// Member unused at the moment but included for possible future extension
  215.80 -private:         
  215.81 -	TInt iSpare; 
  215.82 -	}; 
  215.83 -
  215.84 -#endif	// __COEFONT_H__
   216.1 --- a/epoc32/include/coefontprovider.h	Tue Mar 16 16:12:26 2010 +0000
   216.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   216.3 @@ -1,68 +0,0 @@
   216.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   216.5 -// All rights reserved.
   216.6 -// This component and the accompanying materials are made available
   216.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   216.8 -// which accompanies this distribution, and is available
   216.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  216.10 -//
  216.11 -// Initial Contributors:
  216.12 -// Nokia Corporation - initial contribution.
  216.13 -//
  216.14 -// Contributors:
  216.15 -//
  216.16 -// Description:
  216.17 -//
  216.18 -
  216.19 -#ifndef __COEFONTPROVIDER_H__
  216.20 -#define __COEFONTPROVIDER_H__
  216.21 -
  216.22 -#include <e32base.h>
  216.23 -#include <e32def.h>
  216.24 -#include <coefont.h>
  216.25 -#include <coemain.h>
  216.26 -#include <coeaui.h>
  216.27 -#include <coecntss.h>
  216.28 -
  216.29 -/** A helper object designed to make obtaining a font easier, taking into account
  216.30 -zoom factors.
  216.31 -
  216.32 -@publishedAll
  216.33 -@released
  216.34 -*/
  216.35 -class CCoeFontProvider : public CBase 
  216.36 -        { 
  216.37 -public:        // life 
  216.38 -        IMPORT_C static CCoeFontProvider* NewL(); 
  216.39 -        IMPORT_C static CCoeFontProvider* NewL(const TDesC& aTypefaceName); 
  216.40 -        ~CCoeFontProvider(); 
  216.41 -public:        // methods 
  216.42 -        IMPORT_C const CFont& Font(const TCoeFont& aFont, const TZoomFactor& aZoomFactor) const; 
  216.43 -public:        // properties                 
  216.44 -        IMPORT_C void SetTypeface(const TTypeface aTypeface); 
  216.45 -        IMPORT_C void UseSystemTypeface(); 
  216.46 -        IMPORT_C TTypeface Typeface() const;
  216.47 -public:			//but not exported
  216.48 -		void RefetchPixelMappingL();
  216.49 -
  216.50 -private: 
  216.51 -        CCoeFontProvider(const TDesC& aTypefaceName); 
  216.52 -        void ConstructL(); 
  216.53 -        void ReleaseAllFonts(); 
  216.54 -private: 
  216.55 -        class TFont 
  216.56 -                { 
  216.57 -        public: 
  216.58 -                TFont(const TCoeFont& aFontSpec, TInt aZoomFactor, const CFont* aFont = NULL); 
  216.59 -                static TInt Compare(const TFont& aFirst, const TFont& aSecond); 
  216.60 -        public: 
  216.61 -                const TCoeFont iCoeFont; 
  216.62 -                const TInt iZoomFactor; 
  216.63 -                const CFont* iFont; 
  216.64 -                }; 
  216.65 -private: 
  216.66 -        mutable RArray<TFont> iFonts; 
  216.67 -        TTypeface iTypeface; 
  216.68 -        RArray<TInt> iLogicalToPixelSizes; 
  216.69 -        }; 
  216.70 -
  216.71 -#endif	// __COEFONTPROVIDER_H__
   217.1 --- a/epoc32/include/coehelp.h	Tue Mar 16 16:12:26 2010 +0000
   217.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   217.3 @@ -1,55 +0,0 @@
   217.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   217.5 -// All rights reserved.
   217.6 -// This component and the accompanying materials are made available
   217.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   217.8 -// which accompanies this distribution, and is available
   217.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  217.10 -//
  217.11 -// Initial Contributors:
  217.12 -// Nokia Corporation - initial contribution.
  217.13 -//
  217.14 -// Contributors:
  217.15 -//
  217.16 -// Description:
  217.17 -//
  217.18 -
  217.19 -#ifndef __COEHELP_H__
  217.20 -#define __COEHELP_H__
  217.21 -
  217.22 -#include <e32std.h>
  217.23 -
  217.24 -/** Holds the name of the help context.
  217.25 -
  217.26 -@publishedAll
  217.27 -@released */
  217.28 -typedef TBuf<30> TCoeContextName;
  217.29 -
  217.30 -
  217.31 -class TCoeHelpContext
  217.32 -/** Help context.
  217.33 -
  217.34 -This class contains the information required to link the control and the appropriate 
  217.35 -context sensitive help topic. This information includes the UID of the help 
  217.36 -file and the literal descriptor for the appropriate help topic context.
  217.37 -
  217.38 -@see CCoeControl::GetHelpContext() 
  217.39 -@publishedAll
  217.40 -@released */
  217.41 -	{
  217.42 -public:
  217.43 -	IMPORT_C TCoeHelpContext();
  217.44 -	IMPORT_C TCoeHelpContext(TUid aMajor,const TDesC& aContext);
  217.45 -	IMPORT_C TBool IsNull() const;
  217.46 -	IMPORT_C TBool operator==(const TCoeHelpContext& aContext) const;
  217.47 -	IMPORT_C TBool operator!=(const TCoeHelpContext& aContext) const;
  217.48 -public:
  217.49 -	/** The UID of the context sensitive help file containing the topic information. */
  217.50 -	TUid iMajor;
  217.51 -	/** The name of the help context. This is the literal descriptor generated from 
  217.52 -	a context string by the context sensitive help compiler. */
  217.53 -	TCoeContextName iContext;
  217.54 -private:
  217.55 -    TInt iTCoeHelpContext_Reserved1;
  217.56 -	};
  217.57 -
  217.58 -#endif	// __COEHELP_H__
   218.1 --- a/epoc32/include/coeinput.h	Tue Mar 16 16:12:26 2010 +0000
   218.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   218.3 @@ -1,115 +0,0 @@
   218.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   218.5 -// All rights reserved.
   218.6 -// This component and the accompanying materials are made available
   218.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   218.8 -// which accompanies this distribution, and is available
   218.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  218.10 -//
  218.11 -// Initial Contributors:
  218.12 -// Nokia Corporation - initial contribution.
  218.13 -//
  218.14 -// Contributors:
  218.15 -//
  218.16 -// Description:
  218.17 -//
  218.18 -
  218.19 -#ifndef __COEINPUT_H__
  218.20 -#define __COEINPUT_H__
  218.21 -
  218.22 -#include <e32std.h>
  218.23 -
  218.24 -// classes defined in FEPBASE, declared here
  218.25 -class MCoeFepAwareTextEditor;
  218.26 -class MCoeCaptionRetrieverForFep;
  218.27 -
  218.28 -class MObjectProvider;
  218.29 -
  218.30 -class TCoeInputCapabilities
  218.31 -/** Describes which forms of text input are consumed by a control or view.
  218.32 -
  218.33 -@publishedAll 
  218.34 -@released */
  218.35 -	{
  218.36 -public:
  218.37 -	/** Text input capability flags. These are used to define the text input 
  218.38 -	capabilities of a control or view. */
  218.39 -	enum
  218.40 -		{
  218.41 -		/** No text input capabilities supported. */
  218.42 -		ENone							=0,
  218.43 -		/** Supports positive western integers. */
  218.44 -		EWesternNumericIntegerPositive	=0x00000001,
  218.45 -		/** Supports negative western integers. */
  218.46 -		EWesternNumericIntegerNegative	=0x00000002,
  218.47 -		/** Supports real numbers. */
  218.48 -		EWesternNumericReal				=0x00000004,
  218.49 -		/** Supports the western alphabets. */
  218.50 -		EWesternAlphabetic				=0x00000008,
  218.51 -		/** Supports Hiragana. */
  218.52 -		EJapaneseHiragana				=0x00000010,
  218.53 -		/** Supports half width Katakana. */
  218.54 -		EJapaneseKatakanaHalfWidth		=0x00000020,
  218.55 -		/** Supports full width Katakana. */
  218.56 -		EJapaneseKatakanaFullWidth		=0x00000040,
  218.57 -		/** Supports dialable characters */
  218.58 -		EDialableCharacters				=0x00000080,
  218.59 -		/** Supports secret text. This is text in which characters appear 
  218.60 -		as asterisks. */
  218.61 -		ESecretText						=0x00000100,
  218.62 -		/** Supports auto sentence case.
  218.63 -		This is text in which first word in a sentence begins with an uppercase letter, 
  218.64 -		with all other letters and words in lowercase. */
  218.65 -		EAutoSentenceCase				=0x00000200,
  218.66 -		/** Supports non-predictive input. */
  218.67 -		ENonPredictive					=0x00000400,
  218.68 -		/** Supports all types of text. */
  218.69 -		EAllText						=0x01000000,
  218.70 -		/** Supports navigation keys. These include arrow keys, page-up,
  218.71 -		page-down, home, end, tab, etc. */
  218.72 -		ENavigation						=0x02000000
  218.73 -		};
  218.74 -	class MCoeFepSpecificExtensions; // to be defined by concrete FEPs, declared here
  218.75 -public:
  218.76 -	// all these functions are exported (rather than inline) so that binary compatibility becomes easier to maintain
  218.77 -	IMPORT_C TCoeInputCapabilities();
  218.78 -	IMPORT_C TCoeInputCapabilities(TUint aCapabilities);
  218.79 -	IMPORT_C TCoeInputCapabilities(TUint aCapabilities, MCoeFepAwareTextEditor* aFepAwareTextEditor, MCoeCaptionRetrieverForFep* aCaptionRetrieverForFep);
  218.80 -	IMPORT_C TCoeInputCapabilities(TUint aCapabilities, MCoeFepAwareTextEditor* aFepAwareTextEditor, MCoeCaptionRetrieverForFep* aCaptionRetrieverForFep, TUid aFepUid, MCoeFepSpecificExtensions* aFepSpecificExtensions);
  218.81 -	IMPORT_C TCoeInputCapabilities(const TCoeInputCapabilities& aAnother); // defined so that iSpareForFutureUse is not copied
  218.82 -	IMPORT_C TCoeInputCapabilities& operator=(const TCoeInputCapabilities& aAnother); // defined so that iSpareForFutureUse is not copied
  218.83 -	IMPORT_C TBool operator==(const TCoeInputCapabilities& aAnother) const; // defined so that iSpareForFutureUse is not tested
  218.84 -	IMPORT_C TBool operator!=(const TCoeInputCapabilities& aAnother) const; // defined so that iSpareForFutureUse is not tested
  218.85 -	IMPORT_C void MergeWith(const TCoeInputCapabilities& aAnother);
  218.86 -	IMPORT_C void SetCapabilities(TUint aCapabilities);
  218.87 -	IMPORT_C TUint Capabilities() const;
  218.88 -	IMPORT_C TBool IsNone() const;
  218.89 -	IMPORT_C TBool SupportsWesternNumericIntegerPositive() const;
  218.90 -	IMPORT_C TBool SupportsWesternNumericIntegerNegative() const;
  218.91 -	IMPORT_C TBool SupportsWesternNumericReal() const;
  218.92 -	IMPORT_C TBool SupportsWesternAlphabetic() const;
  218.93 -	IMPORT_C TBool SupportsJapaneseHiragana() const;
  218.94 -	IMPORT_C TBool SupportsJapaneseKatakanaHalfWidth() const;
  218.95 -	IMPORT_C TBool SupportsJapaneseKatakanaFullWidth() const;
  218.96 -	IMPORT_C TBool SupportsDialableCharacters() const;
  218.97 -	IMPORT_C TBool SupportsSecretText() const;
  218.98 -	IMPORT_C TBool SupportsAutoSentenceCase() const;
  218.99 -	IMPORT_C TBool SupportsNonPredictive() const;
 218.100 -	IMPORT_C TBool SupportsAllText() const;
 218.101 -	IMPORT_C TBool SupportsNavigation() const;
 218.102 -	IMPORT_C MCoeFepAwareTextEditor* FepAwareTextEditor() const;
 218.103 -	IMPORT_C MCoeCaptionRetrieverForFep* CaptionRetrieverForFep() const;
 218.104 -	IMPORT_C MCoeFepSpecificExtensions* FepSpecificExtensions(TUid aFepUid) const;
 218.105 -    IMPORT_C MObjectProvider* ObjectProvider() const;
 218.106 -    IMPORT_C void SetObjectProvider(MObjectProvider* aObjectProvider);
 218.107 -
 218.108 -private:
 218.109 -	TUint iCapabilities;
 218.110 -	MCoeFepAwareTextEditor* iFepAwareTextEditor;
 218.111 -	MCoeCaptionRetrieverForFep* iCaptionRetrieverForFep;
 218.112 -	TUint iFepUid;
 218.113 -	MCoeFepSpecificExtensions* iFepSpecificExtensions;
 218.114 -    MObjectProvider* iObjectProvider;
 218.115 -    TAny* iSpareForFutureUse[5];
 218.116 -	};
 218.117 -
 218.118 -#endif	// __COEINPUT_H__
   219.1 --- a/epoc32/include/coelayoutman.h	Tue Mar 16 16:12:26 2010 +0000
   219.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   219.3 @@ -1,171 +0,0 @@
   219.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   219.5 -// All rights reserved.
   219.6 -// This component and the accompanying materials are made available
   219.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   219.8 -// which accompanies this distribution, and is available
   219.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  219.10 -//
  219.11 -// Initial Contributors:
  219.12 -// Nokia Corporation - initial contribution.
  219.13 -//
  219.14 -// Contributors:
  219.15 -//
  219.16 -// Description:
  219.17 -// CoeLayoutManager.H
  219.18 -// 
  219.19 -//
  219.20 -
  219.21 -#ifndef __COELAYOUTMANAGER_H__
  219.22 -#define __COELAYOUTMANAGER_H__
  219.23 -
  219.24 -#include <e32base.h>
  219.25 -
  219.26 -class CCoeControl;
  219.27 -
  219.28 -
  219.29 -/**
  219.30 -Base class for layout managers.
  219.31 -
  219.32 -A layout manager can be attached to one, or many (depending on the concrete layout
  219.33 -manager), compound controls. The layout manager handles the layout of the components
  219.34 -of the attached compound controls, and calculates the attached compound controls' 
  219.35 -minimum size. 
  219.36 -
  219.37 -@publishedAll
  219.38 -@released
  219.39 -*/
  219.40 -class MCoeLayoutManager
  219.41 -	{
  219.42 -protected:
  219.43 -	IMPORT_C MCoeLayoutManager();
  219.44 -	
  219.45 -public:
  219.46 -
  219.47 -	/** Determines if it is possible to attach another control to the layout manager.
  219.48 -	@return <code>ETrue</code> if possible, otherwise <code>EFalse</code>
  219.49 -	*/
  219.50 -	virtual TBool CanAttach() const = 0;
  219.51 -
  219.52 -	/** Attaches <code>aCompoundControl</code> to the layout manager.
  219.53 -	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
  219.54 -	calls this function.
  219.55 -	Once a compound control is attached to a layout manager, the layout manager owns itself.
  219.56 -	@see Detach()
  219.57 -	@see CCoeControl::SetLayoutManagerL()
  219.58 -	@param aCompoundControl The compound control.
  219.59 -	*/
  219.60 -	virtual void AttachL(CCoeControl& aCompoundControl) = 0;
  219.61 -
  219.62 -	/** Detaches <code>aCompoundControl</code> from the layout manager.
  219.63 -	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
  219.64 -	calls this function when you switch layout managers on a control. It is also called
  219.65 -	from <code>CCoeControl::~CCoeControl</code>
  219.66 -	When the last attached compound control detaches, the layout manager deletes itself.
  219.67 -	@see CCoeControl::SetLayoutManagerL()
  219.68 -	@param aCompoundControl The compound control.
  219.69 -	*/
  219.70 -	virtual void Detach(CCoeControl& aCompoundControl) = 0;
  219.71 -
  219.72 -	/** Calculates the minimum size of <code>aCompoundControl</code>
  219.73 -	Is normally not called manually since <code>CCoeControl::MinimumSize()</code>
  219.74 -	calls this function in the default implementation on controls with layout managers.
  219.75 -
  219.76 -	To calculate the minimum size is almost as time consuming as performing an actual layout
  219.77 -	and should be used with caution. The minimum size depends on <code>aCompoundControl</code>'s
  219.78 -	maximum width.
  219.79 -	@see CCoeControl::MaximumWidth()
  219.80 -	@param aCompoundControl The compound control
  219.81 -	@return The minimum size
  219.82 -	*/
  219.83 -	virtual TSize CalcMinimumSize(const CCoeControl& aCompoundControl) const = 0;
  219.84 -
  219.85 -	/** Performs the layout of the attached controls
  219.86 -	Is normally not called manually since <code>CCoeControl::SizeChanged()</code>
  219.87 -	calls this function in the default implementation on controls with layout managers.
  219.88 -
  219.89 -	The layout is generally performed by calling the component controls'
  219.90 -	<code>SetMaximumWidth()</code>, followed by <code>MinimumSize()</code>, and then the
  219.91 -	layout manager tries to place the component controls according to their minimum
  219.92 -	sizes and the settings.
  219.93 -
  219.94 -	@see CCoeControl::SetMaximumWidth()
  219.95 -	@see CCoeControl::MinimumSize()
  219.96 -	*/
  219.97 -	virtual void PerformLayout() = 0;
  219.98 -
  219.99 -	/** Gets the offset to the first text baseline relative to the top of the control.
 219.100 -	
 219.101 -	@param aCompoundControl The control
 219.102 -	@param aSize The size of the control
 219.103 -	@return The baseline
 219.104 -	@see CCoeControl::TextBaselineOffset()
 219.105 -	*/
 219.106 -	virtual TInt CalcTextBaselineOffset(const CCoeControl& aCompoundControl, const TSize& aSize) const = 0;
 219.107 -
 219.108 -	/** Sets the spacing between text baselines.
 219.109 -
 219.110 -	@param aBaselineSpacing The new value for the baseline
 219.111 -	@see CCoeControl::SetTextBaseLineSpacing()
 219.112 -	*/
 219.113 -	virtual void SetTextBaselineSpacing(TInt aBaselineSpacing) = 0;
 219.114 -	
 219.115 -	/** Returns the baseline spacing.
 219.116 -	@return The baseline value.
 219.117 -	*/
 219.118 -	virtual TInt TextBaselineSpacing() const = 0;
 219.119 -
 219.120 -	/** Handles when a component control is added to an attached compound control
 219.121 -	Is normally not called manually since <code>CCoeControlArray::InsertLC()</code>
 219.122 -	calls this function for controls with layout managers.
 219.123 -	Is used by layout managers to prepare to layout one more component control.
 219.124 -	@see CCoeControlArray::InsertLC()
 219.125 -	@param aCompoundControl The compound control.
 219.126 -	@param aAddedControl The added control
 219.127 -	*/
 219.128 -	virtual void HandleAddedControlL(const CCoeControl& aCompoundControl, const CCoeControl& aAddedControl) = 0;
 219.129 -	
 219.130 -	/** Handles when a component control is removed from an attached compound control
 219.131 -	Is normally not called manually since <code>CCoeControlArray::Remove()</code>
 219.132 -	calls this function for controls with layout managers.
 219.133 -	Is used by layout managers to remove all settings and similar that are specific for
 219.134 -	<code>aRemovedControl</code>.
 219.135 -	@see CCoeControlArray::Remove()
 219.136 -	@param aCompoundControl The compound control.
 219.137 -	@param aRemovedControl The removed control
 219.138 -	*/
 219.139 -	virtual void HandleRemovedControl(const CCoeControl& aCompoundControl, const CCoeControl& aRemovedControl) = 0;
 219.140 -
 219.141 -	/** Handles when a component control is replaced by another component control
 219.142 -	in an attached compound control
 219.143 -	
 219.144 -	Is not called by <code>CCoeControl</code>.
 219.145 -	Is used by layout managers to move settings and similar that are specified for 
 219.146 -	<code>aOldControl</code> to <code>aNewControl</code>
 219.147 -	If this function is called, neither <code>HandleAddedControlL</code> nor 
 219.148 -	<code>HandleRemovedControl</code> is allowed to be called.
 219.149 -	@param aOldControl The old component control
 219.150 -	@param aNewControl The new component control
 219.151 -	@return <code>KErrNone</code> if no error. <code>KErrNotFound</code> if the
 219.152 -	layout manager cannot find <code>aOldControl</code>
 219.153 -	*/
 219.154 -	virtual TInt HandleControlReplaced(const CCoeControl& aOldControl, const CCoeControl& aNewControl) = 0;
 219.155 -
 219.156 -	
 219.157 -private:
 219.158 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_1();
 219.159 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_2();
 219.160 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_3();
 219.161 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_4();
 219.162 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_5();
 219.163 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_6();
 219.164 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_7();
 219.165 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_8();
 219.166 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_9();
 219.167 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_10();
 219.168 -	IMPORT_C virtual void Reserved_MCoeLayoutManager_11();
 219.169 -private:
 219.170 -	TInt iMCoeLayoutManager_Reserved1;
 219.171 -	};
 219.172 -
 219.173 -
 219.174 -#endif	// __COELAYOUTMANAGER_H__
   220.1 --- a/epoc32/include/coemain.h	Tue Mar 16 16:12:26 2010 +0000
   220.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   220.3 @@ -1,558 +0,0 @@
   220.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   220.5 -// All rights reserved.
   220.6 -// This component and the accompanying materials are made available
   220.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   220.8 -// which accompanies this distribution, and is available
   220.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  220.10 -//
  220.11 -// Initial Contributors:
  220.12 -// Nokia Corporation - initial contribution.
  220.13 -//
  220.14 -// Contributors:
  220.15 -//
  220.16 -// Description:
  220.17 -//
  220.18 -
  220.19 -#ifndef __COEMAIN_H__
  220.20 -#define __COEMAIN_H__
  220.21 -
  220.22 -#include <e32base.h>
  220.23 -#include <w32std.h>
  220.24 -#include <barsc.h>
  220.25 -#include <badesca.h>
  220.26 -#include <basched.h>
  220.27 -#include <coemop.h>
  220.28 -#include <coetextdrawer.h>
  220.29 -
  220.30 -#if defined(USE_IH_RAISE_EVENT)
  220.31 -#include <systemmonitor/raiseevent.h>
  220.32 -#include <test/testinstrumentation.h>
  220.33 -#endif
  220.34 -
  220.35 -class CVwsSessionWrapper;
  220.36 -class MVwsSessionWrapperObserver;
  220.37 -class TCoeInputCapabilities; // forward declaration of class defined in COEINPUT.H
  220.38 -class CCoeAppUi;
  220.39 -class CCoeEnv;
  220.40 -class TResourceReader;
  220.41 -class RGenericPointerArray;
  220.42 -class CCoeFep; // must derive from CBase
  220.43 -class CCoeFontProvider;
  220.44 -class CCoeEnvExtra;
  220.45 -class CCoeStatic;
  220.46 -
  220.47 -
  220.48 -/** UI Control framework active object priorities. 
  220.49 -These are in addition to the values contained in the TPriority enum in class CActive.
  220.50 -
  220.51 -@publishedAll
  220.52 -@released */
  220.53 -enum TActivePriority
  220.54 -	{
  220.55 -	/** 300 */
  220.56 -	EActivePriorityClockTimer=300,
  220.57 -	/** 200 */
  220.58 -	EActivePriorityIpcEventsHigh=200,
  220.59 -	/** 150 */
  220.60 -	EActivePriorityFepLoader=150,
  220.61 -	/** 100 */
  220.62 -	EActivePriorityWsEvents=100,
  220.63 -	/** 50 */
  220.64 -	EActivePriorityRedrawEvents=50,
  220.65 -	/** 0 */
  220.66 -	EActivePriorityDefault=0,
  220.67 -	/** 10 */
  220.68 -	EActivePriorityLogonA=-10
  220.69 -	};
  220.70 -
  220.71 -
  220.72 -/** Interface providing notification when there is a change in the currently 
  220.73 -loaded FEP. 
  220.74 -
  220.75 -This happens either on application start-up, or as a result of a different 
  220.76 -front end processor having been installed.
  220.77 -
  220.78 -Anyone requiring this notification should derive from this class and implement 
  220.79 -its pure virtual function. Derived classes also need to call CCoeEnv::AddObserverOfLoadedFepL() 
  220.80 -during construction, and CCoeEnv::RemoveObserverOfLoadedFep() in their destructor. 
  220.81 -
  220.82 -@publishedAll
  220.83 -@released */
  220.84 -class MCoeObserverOfLoadedFep
  220.85 -	{
  220.86 -public:
  220.87 -	/** Handles a change in the loaded FEP. 
  220.88 -	
  220.89 -	The function is called if a new FEP is loaded, or if the current one is unloaded. */
  220.90 -	virtual void HandleChangeInLoadedFep()=0;
  220.91 -protected:
  220.92 -	IMPORT_C MCoeObserverOfLoadedFep();
  220.93 -	
  220.94 -private:
  220.95 -	IMPORT_C virtual void MCoeObserverOfLoadedFep_Reserved_1();
  220.96 -	IMPORT_C virtual void MCoeObserverOfLoadedFep_Reserved_2();
  220.97 -private:
  220.98 - 	TInt iMCoeObserverOfLoadedFep_Reserved1;
  220.99 -	};
 220.100 -
 220.101 -
 220.102 -/** Interface providing notification if any control gains or loses focus or is 
 220.103 -destroyed. 
 220.104 -
 220.105 -The FEP framework uses this class to observe when a target control changes 
 220.106 -for reasons unrelated to the FEP.
 220.107 -
 220.108 -Anything that needs such notification should derive from this class and implement 
 220.109 -its two pure virtual functions. 
 220.110 -
 220.111 -In addition, derived classes need to call CCoeEnv::AddFocusObserverL() during 
 220.112 -construction, and CCoeEnv::RemoveFocusObserver() in their destructors. 
 220.113 -
 220.114 -@publishedAll
 220.115 -@released 
 220.116 -@see CCoeFep */
 220.117 -class MCoeFocusObserver
 220.118 -	{
 220.119 -public:
 220.120 -	/** Handles changes in focus. The function is called if any control gains or loses 
 220.121 -	focus. */
 220.122 -	virtual void HandleChangeInFocus()=0;
 220.123 -	/** Handles the destruction of any control. It is called by the framework if any 
 220.124 -	control is destroyed. */
 220.125 -	virtual void HandleDestructionOfFocusedItem()=0;
 220.126 -protected:
 220.127 -	IMPORT_C MCoeFocusObserver();
 220.128 -private:
 220.129 -	IMPORT_C virtual void MCoeFocusObserver_Reserved_1();
 220.130 -	IMPORT_C virtual void MCoeFocusObserver_Reserved_2();
 220.131 -private:
 220.132 -	TInt iMCoeFocusObserver_Reserved1;
 220.133 -	};
 220.134 -
 220.135 -/** An interface which enables message windows to observe resource changes.
 220.136 -
 220.137 -Resource change observers should be added to the control environment using 
 220.138 -CCoeEnv::AddResourceChangeObserverL(). 
 220.139 -
 220.140 -@publishedAll 
 220.141 -@released */
 220.142 -class MCoeResourceChangeObserver
 220.143 -	{
 220.144 -public:
 220.145 -	/** Handles a change to the application's resources. */
 220.146 -	virtual void HandleResourceChange()=0;
 220.147 -protected:
 220.148 -	IMPORT_C MCoeResourceChangeObserver();
 220.149 -private:
 220.150 -	IMPORT_C virtual void MCoeResourceChangeObserver_Reserved_1();
 220.151 -	IMPORT_C virtual void MCoeResourceChangeObserver_Reserved_2();
 220.152 -private:
 220.153 -	TInt iMCoeResourceChangeObserver_Reserved1;
 220.154 -	};
 220.155 -
 220.156 -/** Interface providing notification of foreground/background changes. 
 220.157 -
 220.158 -The FEP framework class, CCoeFep, derives from MCoeForegroundObserver, which 
 220.159 -enables FEPs to receive notification when the target application (which receives 
 220.160 -the FEP's output) goes into the foreground or background.
 220.161 -
 220.162 -Anything that needs this notification should derive from this class and override 
 220.163 -its two pure virtual functions.
 220.164 -
 220.165 -In addition, derived classes also need to call CCoeEnv::AddForegroundObserverL() 
 220.166 -during construction, and CCoeEnv::RemoveForegroundObserver() in their destructors. 
 220.167 -
 220.168 -@publishedAll
 220.169 -@released 
 220.170 -@see CCoeFep */
 220.171 -class MCoeForegroundObserver
 220.172 -	{
 220.173 -public:
 220.174 -	/** Handles the application coming to the foreground. */
 220.175 -	virtual void HandleGainingForeground()=0;
 220.176 -	/** Handles the application going into the background. */
 220.177 -	virtual void HandleLosingForeground()=0;
 220.178 -protected:
 220.179 -	IMPORT_C MCoeForegroundObserver();
 220.180 -private:
 220.181 -	IMPORT_C virtual void MCoeForegroundObserver_Reserved_1();
 220.182 -	IMPORT_C virtual void MCoeForegroundObserver_Reserved_2();
 220.183 -private:
 220.184 -	TInt iMCoeForegroundObserver_Reserved1;
 220.185 -	};
 220.186 -
 220.187 -
 220.188 -/** Interface for handling incoming window server messages.
 220.189 -
 220.190 -This interface is used to enable FEPs to keep their settings synchronised 
 220.191 -across all running instances.
 220.192 -
 220.193 -Anything that needs to be notified of messages that get sent by the window server's 
 220.194 -message-sending service should derive from this class and override its pure 
 220.195 -virtual function. 
 220.196 -
 220.197 -In addition, derived classes also need to call CCoeEnv::AddMessageObserverL() 
 220.198 -during construction and CCoeEnv::RemoveMessageObserver() in their destructors. 
 220.199 -
 220.200 -@publishedAll 
 220.201 -@released */
 220.202 -class MCoeMessageObserver
 220.203 -	{
 220.204 -public:
 220.205 -	/** Message response flags. */
 220.206 -	enum TMessageResponse
 220.207 -		{
 220.208 -		/** Message not handled. */
 220.209 -		EMessageNotHandled,
 220.210 -		/** Message handled. */
 220.211 -		EMessageHandled
 220.212 -		};
 220.213 -public:
 220.214 -	/** Handles window server messages. 
 220.215 -	
 220.216 -	Implementations should return EMessageHandled if they are able to handle the 
 220.217 -	message, or EMessageNotHandled if the message is not appropriate to this observer.
 220.218 -	
 220.219 -	@param aClientHandleOfTargetWindowGroup The window group that the message 
 220.220 -	was sent to. Many implementations will not need this information.
 220.221 -	@param aMessageUid The message UID.
 220.222 -	@param aMessageParameters The message parameters.
 220.223 -	@return Indicates whether the message was handled or not handled 
 220.224 -	by the function. */
 220.225 -	virtual TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters)=0;
 220.226 -protected:
 220.227 -	IMPORT_C MCoeMessageObserver();
 220.228 -private:
 220.229 -	IMPORT_C virtual void MCoeMessageObserver_Reserved_1();
 220.230 -	IMPORT_C virtual void MCoeMessageObserver_Reserved_2();
 220.231 -	};
 220.232 -
 220.233 -/** Mix-in interface for handling window visibility messages. 	
 220.234 -
 220.235 -@publishedAll
 220.236 -@released */
 220.237 -class MCoeMessageMonitorObserver
 220.238 -	{
 220.239 -public:
 220.240 -	/** Received windows messages for monitoring. 
 220.241 -	@param aEvent The windows server event data.*/
 220.242 -	virtual void MonitorWsMessage(const TWsEvent& aEvent)=0;
 220.243 -private:
 220.244 -	IMPORT_C virtual void MCoeMessageMonitorObserver_Reserved_1();
 220.245 -	IMPORT_C virtual void MCoeMessageMonitorObserver_Reserved_2();
 220.246 -	};
 220.247 -
 220.248 -// classes defined in FEPBASE, declared here
 220.249 -class MCoeFepObserver;
 220.250 -
 220.251 -/** 
 220.252 -@publishedAll
 220.253 -@released
 220.254 -*/
 220.255 -typedef void (*TCoeFepObserverFunction)(MCoeFepObserver& aFepObserver);
 220.256 -
 220.257 -/**
 220.258 -@publishedAll 
 220.259 -@released 
 220.260 -*/
 220.261 -class CCoeFepParameters : public CBase
 220.262 -	{
 220.263 -public:
 220.264 -	static CCoeFepParameters* NewLC();
 220.265 -private:
 220.266 -	inline CCoeFepParameters() {}
 220.267 -	};
 220.268 -
 220.269 -
 220.270 -/** Implements the active scheduler presupposed by the control environment.
 220.271 -
 220.272 -@publishedPartner
 220.273 -@deprecated
 220.274 -*/
 220.275 -class CCoeScheduler : public CBaActiveScheduler
 220.276 -	{
 220.277 -public:
 220.278 -	IMPORT_C CCoeScheduler(CCoeEnv* aCoeEnv);
 220.279 -	IMPORT_C virtual void WaitForAnyRequest();
 220.280 -	IMPORT_C virtual void DisplayError(TInt aError) const;
 220.281 -	/** Gets the control environment.
 220.282 -	
 220.283 -	@return A pointer to the control environment. */
 220.284 -	inline CCoeEnv* CoeEnv() {return iCoeEnv;}
 220.285 -	TBool Flush() const; // not to be called from outside CONE
 220.286 -	void SetFlush(TBool aFlush); // not to be called from outside CONE
 220.287 -private:
 220.288 -	// from CBaActiveScheduler
 220.289 -	IMPORT_C virtual void Reserved_1();
 220.290 -	IMPORT_C virtual void Reserved_2();
 220.291 -private:
 220.292 -	CCoeEnv* iCoeEnv;
 220.293 -	TBool iFlush;
 220.294 -	};
 220.295 -
 220.296 -
 220.297 -
 220.298 -/** Control environment.
 220.299 -
 220.300 -CCoeEnv provides an active environment for creating controls. It implements 
 220.301 -active objects and an active scheduler, which provide access to the window 
 220.302 -server, simplifying the API for application programs. It also provides utility 
 220.303 -functions that are useful to many applications.
 220.304 -
 220.305 -When a standard event occurs, the active scheduler calls CCoeEnv::RunL(). 
 220.306 -When a redraw event occurs, it calls CCoeRedrawer::RunL(). Priority key events 
 220.307 -must be accessed using the Window Server API directly.
 220.308 -
 220.309 -Note: standard events are all events except redraw events and priority key events. 
 220.310 -
 220.311 -@publishedAll
 220.312 -@released */
 220.313 -class CCoeEnv : public CActive, public MObjectProvider
 220.314 -	{
 220.315 -public:
 220.316 -	// Properties
 220.317 -	IMPORT_C static TVersion Version();
 220.318 -	IMPORT_C static CCoeEnv* Static();
 220.319 -	// Construction and destruction
 220.320 -	IMPORT_C CCoeEnv();
 220.321 -	IMPORT_C ~CCoeEnv();
 220.322 -	IMPORT_C void ConstructL();
 220.323 -	IMPORT_C void ConstructL(TBool aInitialFocusState);
 220.324 -	IMPORT_C void ConstructL(TBool aInitialFocusState, TInt aDefaultScreenNumber);
 220.325 -	IMPORT_C void ConstructL(TBool aInitialFocusState, TInt aDefaultScreenNumber, TInt aWindowGroupID);
 220.326 -	IMPORT_C CCoeAppUi* SetAppUi(CCoeAppUi* aAppUi);
 220.327 -	IMPORT_C void ExecuteD();
 220.328 -	IMPORT_C void Execute();
 220.329 -	IMPORT_C void RunL();
 220.330 -	IMPORT_C void DoCancel();
 220.331 -	IMPORT_C void PrepareToExit();
 220.332 -	IMPORT_C virtual void DestroyEnvironment();
 220.333 -	IMPORT_C void DisableExitChecks(TBool aDisable);
 220.334 -	IMPORT_C virtual void HandleError(TInt aError);
 220.335 -	// System resources
 220.336 -	inline CCoeAppUi* AppUi() const;
 220.337 -	inline RFs& FsSession() const;
 220.338 -	inline RWsSession& WsSession() const;
 220.339 -	inline RWindowGroup& RootWin() const;
 220.340 -	inline CWsScreenDevice* ScreenDevice() const;
 220.341 -	inline CWindowGc& SystemGc() const;
 220.342 -	inline const CFont* NormalFont() const;
 220.343 -	inline const TWsEvent& LastEvent() const;
 220.344 -	inline TBool IsSchedulerRunning() const;
 220.345 -	// Graphics
 220.346 -	IMPORT_C CWindowGc* CreateGcL();
 220.347 -	IMPORT_C CWindowGc* SwapSystemGc(CWindowGc* aGc);
 220.348 -	IMPORT_C void Flush(TTimeIntervalMicroSeconds32 aDelay=0);
 220.349 -	IMPORT_C void SuppressNextFlush();
 220.350 -	IMPORT_C TBool IsWservEventPending() const;
 220.351 -	IMPORT_C TBool IsRedrawEventPending() const;
 220.352 -	// Fonts (legacy API)
 220.353 -	IMPORT_C CFbsFont* CreateDeviceFontL(CGraphicsDevice* aDevice,const TFontSpec& aFontSpec);
 220.354 -	IMPORT_C CFbsFont* CreateScreenFontL(const TFontSpec& aFontSpec);
 220.355 -	IMPORT_C void ReleaseScreenFont(CFont* aFont) const;
 220.356 -	// Font provider
 220.357 -	IMPORT_C const CCoeFontProvider& DefaultFontProvider() const; 
 220.358 -	// Text drawer
 220.359 -	IMPORT_C CCoeTextDrawerBase& DefaultTextDrawer() const;
 220.360 -	// Zooming
 220.361 -	IMPORT_C TZoomFactor ZoomFactor() const;
 220.362 -	IMPORT_C void SetZoomFactor(const TZoomFactor& aZoomFactor);
 220.363 -	// Resource reading	
 220.364 -	IMPORT_C TInt AddResourceFileL(const TDesC& aFileName);
 220.365 -	IMPORT_C void DeleteResourceFile(TInt aOffset);
 220.366 -	IMPORT_C TBool IsResourceAvailableL(TInt aResourceId) const;
 220.367 -	IMPORT_C void CreateResourceReaderLC(TResourceReader& aReader,TInt aResourceId) const;
 220.368 -	inline void ReadResource(TDes& aDes,TInt aResourceId) const; 
 220.369 -	inline void ReadResourceL(TDes& aDes,TInt aResourceId) const; 
 220.370 -	inline HBufC* AllocReadResourceL(TInt aResourceId) const;
 220.371 -	inline HBufC* AllocReadResourceLC(TInt aResourceId) const;
 220.372 -	inline CDesCArrayFlat* ReadDesCArrayResourceL(TInt aResourceId);
 220.373 -	IMPORT_C void ReadResourceAsDes8(TDes8& aDes,TInt aResourceId) const; /** @deprecated 7.0*/
 220.374 -	IMPORT_C void ReadResourceAsDes8L(TDes8& aDes,TInt aResourceId) const;
 220.375 -	IMPORT_C HBufC8* AllocReadResourceAsDes8L(TInt aResourceId) const;
 220.376 -	IMPORT_C HBufC8* AllocReadResourceAsDes8LC(TInt aResourceId) const;
 220.377 -	IMPORT_C CDesC8ArrayFlat* ReadDesC8ArrayResourceL(TInt aResourceId);
 220.378 -	IMPORT_C void ReadResourceAsDes16(TDes16& aDes,TInt aResourceId) const; /** @deprecated 7.0*/
 220.379 -	IMPORT_C void ReadResourceAsDes16L(TDes16& aDes,TInt aResourceId) const; 
 220.380 -	IMPORT_C HBufC16* AllocReadResourceAsDes16L(TInt aResourceId) const;
 220.381 -	IMPORT_C HBufC16* AllocReadResourceAsDes16LC(TInt aResourceId) const;
 220.382 -	IMPORT_C CDesC16ArrayFlat* ReadDesC16ArrayResourceL(TInt aResourceId);
 220.383 -	IMPORT_C void Format128(TDes& aDes,TInt aResourceId,...);
 220.384 -	IMPORT_C void Format256(TDes& aDes,TInt aResourceId,...);
 220.385 -	// Error handling
 220.386 -	IMPORT_C void LeaveWithErrorText(const TDesC& aMsg,const TDesC* aContextText=NULL);
 220.387 -	// Key handling
 220.388 -	IMPORT_C void SimulateKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
 220.389 -	// FEP handling
 220.390 -	IMPORT_C void AddObserverOfLoadedFepL(MCoeObserverOfLoadedFep& aObserverOfLoadedFep);
 220.391 -	IMPORT_C void RemoveObserverOfLoadedFep(MCoeObserverOfLoadedFep& aObserverOfLoadedFep);
 220.392 -	IMPORT_C void AddFepObserverL(MCoeFepObserver& aFepObserver);
 220.393 -	IMPORT_C void RemoveFepObserver(MCoeFepObserver& aFepObserver);
 220.394 -	IMPORT_C void ForEachFepObserverCall(TCoeFepObserverFunction aFepObserverFunction);
 220.395 -	void EnsureCorrectFepIsLoadedL();
 220.396 -	void EnsureSpecifiedFepIsLoadedL(TUid aFepUid);
 220.397 -	IMPORT_C void InstallFepL(TUid aFepUid);
 220.398 -	IMPORT_C void InstallFepL(TUid aFepUid, const TBool aLeave);
 220.399 -	IMPORT_C void AvailableFepsL(RArray<TUid>& aUids, CDesCArray* aDisplayNames);
 220.400 -	IMPORT_C void ExecuteFepSettingsDialogL(TUid aFepUid);
 220.401 -	IMPORT_C CCoeFep* Fep() const;
 220.402 -	IMPORT_C TUid FepUid() const;
 220.403 -	IMPORT_C void InputCapabilitiesChanged();
 220.404 -	// Control focus handling
 220.405 -	IMPORT_C void AddFocusObserverL(MCoeFocusObserver& aFocusObserver);
 220.406 -	IMPORT_C void RemoveFocusObserver(MCoeFocusObserver& aFocusObserver);
 220.407 -	IMPORT_C void SyncNotifyFocusObserversOfChangeInFocus();
 220.408 -	void NotifyFocusObserversOfDestructionOfFocusedItem();
 220.409 -	// Application focus (foreground) handling
 220.410 -	IMPORT_C void BringOwnerToFront();
 220.411 -	IMPORT_C void AddForegroundObserverL(MCoeForegroundObserver& aForegroundObserver);
 220.412 -	IMPORT_C void RemoveForegroundObserver(MCoeForegroundObserver& aForegroundObserver);
 220.413 -	void NotifyForegroundObserversOfGainingForeground();
 220.414 -	void NotifyForegroundObserversOfLosingForeground();
 220.415 -	// Resource change handling
 220.416 -	IMPORT_C void AddResourceChangeObserverL(MCoeResourceChangeObserver& aResourceChangeObserver); 
 220.417 -	IMPORT_C void RemoveResourceChangeObserver(MCoeResourceChangeObserver& aResourceChangeObserver); 
 220.418 -	void NotifyResourceObserversOfChangeInResource(); 
 220.419 -	// Window server message handling
 220.420 -	IMPORT_C void AddMessageObserverL(MCoeMessageObserver& aMessageObserver);
 220.421 -	IMPORT_C void RemoveMessageObserver(MCoeMessageObserver& aMessageObserver);
 220.422 -	IMPORT_C void AddMessageMonitorObserverL(MCoeMessageMonitorObserver& aMessageMonitorObserver); 
 220.423 -	IMPORT_C void RemoveMessageMonitorObserver(MCoeMessageMonitorObserver& aMessageMonitorObserver); 
 220.424 -	void NotifyMessageMonitorObserversOfEvent(const TWsEvent& aEvent); 	
 220.425 -	// Singleton access
 220.426 -	IMPORT_C static CCoeStatic* Static(TUid aUid);
 220.427 -	IMPORT_C CCoeStatic* FindStatic(TUid aUid);
 220.428 -#if defined(SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS)
 220.429 -	//multiple screens
 220.430 - 	IMPORT_C CWsScreenDevice* ScreenDevice(TInt aScreenNumber) const;
 220.431 - 	IMPORT_C RWindowGroup* RootWin(TInt aScreenNumber) const;
 220.432 -#endif 	
 220.433 -public: // *** Do not use! API liable to change ***
 220.434 -	TInt AppStartupInstrumentationEventIdBase();
 220.435 -public: // Internal to Symbian
 220.436 -	IMPORT_C void GetMessageNotifyingObserversLC(TUint32 aClientHandleOfTargetWindowGroup, TUid& aMessageUid, TPtr8& aMessageParameters, const TWsEvent& aMessageEvent);
 220.437 -	IMPORT_C TBool DisableShutdownChecks() const;
 220.438 -protected: // Internal to Symbian
 220.439 -	IMPORT_C void SetAppStartupInstrumentationEventIdBaseL(TInt aAppStartupInstrumentationEventIdBase);
 220.440 -	IMPORT_C void DestroyEnvironmentStatic();
 220.441 -	IMPORT_C void DestroyEnvironmentEnd();
 220.442 -	IMPORT_C TInt CoeEnvConstructorError() const;
 220.443 -private: // reserved virtual function space
 220.444 -	IMPORT_C virtual void Reserved_1();
 220.445 -	IMPORT_C virtual void Reserved_2();
 220.446 -private: // from CActive
 220.447 -	IMPORT_C TInt RunError(TInt aError);
 220.448 -protected:	// from MObjectProvider
 220.449 -	IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId); 
 220.450 -protected:
 220.451 -	IMPORT_C virtual void DestroyScreen();
 220.452 -	inline TDes& ErrorText();
 220.453 -	inline TDes& ErrorContextText();
 220.454 -public: // but not exported
 220.455 -	void ReadEvent();
 220.456 -	CVwsSessionWrapper* InitViewServerSessionL(MVwsSessionWrapperObserver& aObserver);
 220.457 -	void AddStatic(CCoeStatic* aStatic);
 220.458 -	void QueueNotificationToFocusObserversOfChangeInFocus();
 220.459 -	TInt FocusObserverNotificationIdentifier() const;
 220.460 -	TBool FocusObserverNotificationIsStillPending(TInt aFocusObserverNotificationIdentifier) const;
 220.461 -	void RefetchPixelMappingL();
 220.462 -	TBool ControlStateChange();
 220.463 -private:
 220.464 -	void CreateActiveSchedulerL();
 220.465 -	void ConnectToFileServerL();
 220.466 -	void ConnectToWindowServerL();
 220.467 -	void InitScreenL( TInt aDefaultScreenNumber );
 220.468 -	void InitRootWindowL(TBool aInitialFocusState, TInt aWindowGroupID=0);
 220.469 -	void InitSystemGcL();
 220.470 -	IMPORT_C virtual void InitSystemFontsL();
 220.471 -	IMPORT_C virtual TInt ResourceFileVersionNumber() const;
 220.472 -	RResourceFile& ResourceFileForId(TInt aResourceId) const;
 220.473 -	void DestroyAllResourceFiles();
 220.474 -	void AddObserverL(TAny* aObserver, RGenericPointerArray& aArray);
 220.475 -	void RemoveObserver(TAny* aObserver, RGenericPointerArray& aArray);
 220.476 -	void UpdateStatic(CCoeAppUi* aNewAppUi);
 220.477 -	void SetInitialHandleCount();
 220.478 -	TUint InitialHandleCount() const;
 220.479 -	RResourceFile* DoResourceFileForIdL(TInt aResourceId) const;
 220.480 -#if defined(SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS)
 220.481 -	void PopulateArrayOfScreenItemsL();
 220.482 -	void DeleteArrayOfScreensItems();
 220.483 -#endif	
 220.484 -protected:
 220.485 -	CCoeAppUi* iAppUi;
 220.486 -	RFs iFsSession;
 220.487 -	RWsSession iWsSession;
 220.488 -	RWindowGroup iRootWin;
 220.489 -	CWindowGc* iSystemGc;
 220.490 -	const CFont* iNormalFont;
 220.491 -	CWsScreenDevice* iScreen;
 220.492 -	TWsEvent iLastEvent;
 220.493 -	CArrayFix<RResourceFile>* iResourceFileArray;
 220.494 -private:
 220.495 -	enum TFlags // used in the bottom 16 bits only of iEnvFlags
 220.496 -		{
 220.497 -		ENoShutdownChecks			=0x0001,
 220.498 -		EExtraPointerIsErrorCode	=0x0002,
 220.499 -		ESchedulerIsRunning			=0x0004
 220.500 -		};
 220.501 -private:
 220.502 -	TDes* iErrorText;
 220.503 -	TDes* iErrorContextText;
 220.504 -	CCoeEnvExtra* iExtra;
 220.505 -	CTrapCleanup* iCleanup;
 220.506 -	TUint iEnvFlags;
 220.507 -	};
 220.508 -
 220.509 -/** Base class for creating singleton objects that will be stored by CCoeEnv.
 220.510 -
 220.511 -Each object must have a unique TUid.
 220.512 -
 220.513 -Symbian OS does not provide writeable global static data. Singleton objects 
 220.514 -provide its equivalent in thread local storage, which is supported.
 220.515 -
 220.516 -This behaviour is useful for objects in which only one copy is ever needed 
 220.517 -in the thread or application, e.g. in alert windows. 
 220.518 -
 220.519 -@publishedAll 
 220.520 -@released */
 220.521 -class CCoeStatic : public CBase
 220.522 -	{
 220.523 -public:
 220.524 -	/** Scope of access to the singleton object. */
 220.525 -	enum TScope
 220.526 -		{
 220.527 -		/** Access from the entire thread. */
 220.528 -		EThread,
 220.529 -		/** Access from an appUi in that thread. */
 220.530 -		EApp,
 220.531 -		};
 220.532 -	/** The default destruction priority if none is specified in the constructor */
 220.533 -	enum {EDefaultDestructionPriority=100};
 220.534 -public:
 220.535 -	IMPORT_C ~CCoeStatic();
 220.536 -protected:
 220.537 -	IMPORT_C CCoeStatic();
 220.538 -	IMPORT_C CCoeStatic(TUid aUid,TScope=EThread);
 220.539 -	IMPORT_C CCoeStatic(TUid aUid,TInt aDestructionPriority,TScope aScope=EThread);
 220.540 -private:
 220.541 -	IMPORT_C virtual void CCoeStatic_Reserved1();
 220.542 -	IMPORT_C virtual void CCoeStatic_Reserved2();
 220.543 -private:
 220.544 -	void DoConstruction(const TUid& aUid,TInt aDestructionPriority,TScope aScope);
 220.545 -	void SetCsAppUi(CCoeAppUi* aAppUi);
 220.546 -	CCoeAppUi* CsAppUi() const;
 220.547 -	TScope CsScope() const;
 220.548 -	inline TInt DestructionPriority() const {return iCsLink.iPriority;}
 220.549 -private:
 220.550 -	TPriQueLink iCsLink;
 220.551 -	TUid iCsUid;
 220.552 -	TUint iCsAppUiAndScope;
 220.553 -	TInt iCCoeStatic_Reserved1;
 220.554 -private:
 220.555 -	friend class CCoeEnv;
 220.556 -	friend class CCoeEnvExtra;
 220.557 -	};
 220.558 -
 220.559 -#include <coemain.inl>
 220.560 -
 220.561 -#endif	// __COEMAIN_H__
   221.1 --- a/epoc32/include/coemain.inl	Tue Mar 16 16:12:26 2010 +0000
   221.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   221.3 @@ -1,186 +0,0 @@
   221.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   221.5 -// All rights reserved.
   221.6 -// This component and the accompanying materials are made available
   221.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   221.8 -// which accompanies this distribution, and is available
   221.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  221.10 -//
  221.11 -// Initial Contributors:
  221.12 -// Nokia Corporation - initial contribution.
  221.13 -//
  221.14 -// Contributors:
  221.15 -//
  221.16 -// Description:
  221.17 -//
  221.18 -
  221.19 -
  221.20 -
  221.21 -/**
  221.22 - Gets the most recent standard event that was received by the application.
  221.23 - 
  221.24 - Note: standard events are all events except redraw events and priority key events.
  221.25 - 
  221.26 - @return The last event. 
  221.27 -*/
  221.28 -inline const TWsEvent& CCoeEnv::LastEvent() const
  221.29 -	{ return(iLastEvent); }
  221.30 -
  221.31 -/** Gets the application UI owned by this application.
  221.32 -
  221.33 -@return Pointer to the app UI owned by the application. */
  221.34 -inline CCoeAppUi* CCoeEnv::AppUi() const
  221.35 -	{ return(iAppUi); }
  221.36 -
  221.37 -/** Gets the file server session owned by this CCoeEnv. 
  221.38 -
  221.39 -This session is normally only used for accessing the application's resource 
  221.40 -file.
  221.41 -
  221.42 -@return The file server session owned by this CCoeEnv. */
  221.43 -inline RFs& CCoeEnv::FsSession() const
  221.44 -	{ return((RFs&)iFsSession); }
  221.45 -
  221.46 -/** Gets the window server session owned by the application. 
  221.47 -
  221.48 -This provides access to window server functions not directly accessible via 
  221.49 -the UI control framework.
  221.50 -
  221.51 -@return The window server session opened by the application. */
  221.52 -inline RWsSession& CCoeEnv::WsSession() const
  221.53 -	{ return((RWsSession&)iWsSession); }
  221.54 -
  221.55 -/** Gets the application's window group.
  221.56 -
  221.57 -Note: a window group is an invisible window which acts as the parent window for 
  221.58 -all other windows in an application. Typically, each application has one window 
  221.59 -group. In the window server, window groups are also the unit of keyboard focus.
  221.60 -
  221.61 -@return The application's window group. */inline RWindowGroup& CCoeEnv::RootWin() const
  221.62 -	{ return((RWindowGroup&)iRootWin); }
  221.63 -
  221.64 -/** Gets the system graphics context. 
  221.65 -
  221.66 -This is the graphics context typically used for drawing controls, but an 
  221.67 -alternative graphics context can be created if required using CreateGcL().
  221.68 -
  221.69 -@return The system graphics context. */
  221.70 -inline CWindowGc& CCoeEnv::SystemGc() const
  221.71 -	{ return((CWindowGc&)*iSystemGc); }
  221.72 -
  221.73 -/** Gets the normal environment font. 
  221.74 -
  221.75 -This is the font created during construction of the control environment.
  221.76 -
  221.77 -@return Pointer to the normal environment font.
  221.78 -@see InitSystemFontsL() */
  221.79 -inline const CFont* CCoeEnv::NormalFont() const
  221.80 -	{ return(iNormalFont); }
  221.81 -
  221.82 -/** Gets the default screen device owned by this CCoeEnv. 
  221.83 -
  221.84 -This is typically used as the standard screen device for the CCoeEnv's application.
  221.85 -
  221.86 -@return The default screen device owned by this CCoeEnv. */
  221.87 -inline CWsScreenDevice* CCoeEnv::ScreenDevice() const
  221.88 -	{ return(iScreen); }
  221.89 -
  221.90 -/** Gets the current error message text.
  221.91 -
  221.92 -@return The current error message text. */
  221.93 -inline TDes& CCoeEnv::ErrorText() 
  221.94 -	{ return *iErrorText; }
  221.95 -
  221.96 -/** Gets the current error context text.
  221.97 -
  221.98 -@return The current error context text. */
  221.99 -inline TDes& CCoeEnv::ErrorContextText() 
 221.100 -	{ return *iErrorContextText; }
 221.101 -
 221.102 -#if defined(_UNICODE)
 221.103 -/** Reads a resource into a descriptor. 
 221.104 -
 221.105 -The descriptor must be long enough to contain the entire resource. No memory 
 221.106 -is allocated by this function. If the read fails, the function sets an error 
 221.107 -condition and performs any cleanup required. The error condition causes the 
 221.108 -GUI to launch an alert window.
 221.109 -
 221.110 -Deprecated - Use CCoeEnv::ReadResourceL() instead.
 221.111 -
 221.112 -@deprecated 
 221.113 -@param aDes On return, contains the resource data.
 221.114 -@param aResourceId The numeric ID of the resource to be read.
 221.115 -@see RResourceFile::ReadL()
 221.116 -@see KErrCoeFailedToReadFromProgDisk */
 221.117 -inline void CCoeEnv::ReadResource(TDes& aDes,TInt aResourceId) const
 221.118 -	{ ReadResourceAsDes16(aDes,aResourceId); }
 221.119 -
 221.120 -/** Reads a resource into a descriptor.
 221.121 -
 221.122 -The descriptor must be long enough to contain the entire resource. 
 221.123 -No memory is allocated by this function.
 221.124 -
 221.125 -@param aDes On return, contains the resource data.
 221.126 -@param aResourceId The numeric ID of the resource to be read.
 221.127 -@return Pointer to a heap descriptor containing the resource. */
 221.128 -inline void CCoeEnv::ReadResourceL(TDes& aDes,TInt aResourceId) const
 221.129 -	{ ReadResourceAsDes16L(aDes,aResourceId); }
 221.130 -
 221.131 -/** Reads a resource into a heap descriptor, allocating memory for it. 
 221.132 -
 221.133 -Note: the calling program must destroy the heap descriptor when it is no longer 
 221.134 -needed.
 221.135 -
 221.136 -@param aResourceId The numeric ID of the resource to be read.
 221.137 -@return Pointer to a heap descriptor containing the resource data.
 221.138 -@see RResourceFile::AllocReadL() */
 221.139 -inline  HBufC* CCoeEnv::AllocReadResourceL(TInt aResourceId) const
 221.140 -	{ return AllocReadResourceAsDes16L(aResourceId); }
 221.141 -
 221.142 -/** Reads a specified resource into a heap descriptor, allocating memory for it, 
 221.143 -and pushing the descriptor onto the cleanup stack. 
 221.144 -
 221.145 -The calling program should pop and destroy the heap descriptor when it is 
 221.146 -no longer needed.
 221.147 -
 221.148 -@param aResourceId The numeric ID of the resource to be read.
 221.149 -@return Pointer to a heap descriptor containing the resource data.
 221.150 -@see RResourceFile::AllocReadLC() */
 221.151 -inline HBufC* CCoeEnv::AllocReadResourceLC(TInt aResourceId) const
 221.152 -	{ return AllocReadResourceAsDes16LC(aResourceId); }
 221.153 -
 221.154 -/** Reads a resource into a Unicode descriptor array.
 221.155 -
 221.156 -@param aResourceId The numeric ID of the resource to be read.
 221.157 -@return A pointer to the descriptor array containing the resource data.
 221.158 -@see TResourceReader::ReadDesCArrayL() */
 221.159 -inline CDesCArrayFlat* CCoeEnv::ReadDesCArrayResourceL(TInt aResourceId)
 221.160 -	{ return ReadDesC16ArrayResourceL(aResourceId); }
 221.161 -#else  // not UNICODE
 221.162 -
 221.163 -/** Deprecated - use CCoeEnv::ReadResourceL() instead.
 221.164 -
 221.165 -@deprecated */
 221.166 -inline void CCoeEnv::ReadResource(TDes& aDes,TInt aResourceId) const
 221.167 -	{ ReadResourceAsDes8(aDes,aResourceId); }
 221.168 -
 221.169 -inline void CCoeEnv::ReadResourceL(TDes& aDes,TInt aResourceId) const
 221.170 -	{ ReadResourceAsDes8L(aDes,aResourceId); }
 221.171 -inline  HBufC* CCoeEnv::AllocReadResourceL(TInt aResourceId) const
 221.172 -	{ return AllocReadResourceAsDes8L(aResourceId); }
 221.173 -inline HBufC* CCoeEnv::AllocReadResourceLC(TInt aResourceId) const
 221.174 -	{ return AllocReadResourceAsDes8LC(aResourceId); }
 221.175 -inline CDesCArrayFlat* CCoeEnv::ReadDesCArrayResourceL(TInt aResourceId)
 221.176 -	{ return ReadDesC8ArrayResourceL(aResourceId); }
 221.177 -#endif // UNICODE
 221.178 -
 221.179 -//
 221.180 -// Tests if the Active Scheduler is started in the CCoeEnv::ExecuteD
 221.181 -//
 221.182 -// @return   "TBool"
 221.183 -//            <code>ETrue</code> if Active Scheduler is started in
 221.184 -//								 CCoeEnv::ExecuteD()	
 221.185 -//            <code>EFalse</code> if Active Scheduler is not started in
 221.186 -//								  CCoeEnv::ExecuteD()	
 221.187 -//            
 221.188 -inline TBool CCoeEnv::IsSchedulerRunning() const
 221.189 -	{return iEnvFlags&ESchedulerIsRunning;}
   222.1 --- a/epoc32/include/coemop.h	Tue Mar 16 16:12:26 2010 +0000
   222.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   222.3 @@ -1,180 +0,0 @@
   222.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   222.5 -// All rights reserved.
   222.6 -// This component and the accompanying materials are made available
   222.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   222.8 -// which accompanies this distribution, and is available
   222.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  222.10 -//
  222.11 -// Initial Contributors:
  222.12 -// Nokia Corporation - initial contribution.
  222.13 -//
  222.14 -// Contributors:
  222.15 -//
  222.16 -// Description:
  222.17 -//
  222.18 -
  222.19 -#ifndef __COEMOP_H__
  222.20 -#define __COEMOP_H__
  222.21 -
  222.22 -#include <e32std.h>
  222.23 -
  222.24 -/** Declares an object type, ETypeId, for a class, in order to allow the object 
  222.25 -provider mechanism to locate and provide objects from the class.
  222.26 -
  222.27 -@publishedAll
  222.28 -@released
  222.29 -@see MObjectProvider */
  222.30 -#define DECLARE_TYPE_ID(id) enum { ETypeId = id };
  222.31 -
  222.32 -//
  222.33 -// Used to wrap object type IDs in a standardised manner. Object type IDs must be asserted 
  222.34 -// in an ETypeId member data property by any types of object which 
  222.35 -// are capable of being retrieved by the MObjectProvider interface
  222.36 -//
  222.37 -class TTypeUid : public TUid
  222.38 -/** Part of the object provider mechanism, this class encapsulates the Uid that 
  222.39 -identifies the type of object that an object provider is to get.
  222.40 -
  222.41 -The class is also used to encapsulate a pointer to the object that the object 
  222.42 -provider has found.
  222.43 -
  222.44 -An object that is intended to be capable of being retrieved by the object 
  222.45 -provider mechanism must include enum {ETypeId = 0xabcdefgh}; in its class 
  222.46 -definition, where 0xabcdefgh is the Uid value. The macro DECLARE_TYPE_ID can 
  222.47 -be used to do this.
  222.48 -
  222.49 -An instance of this class is passed to the MObjectProvider::MopSupplyObject() 
  222.50 -function implemented by an object provider. A TTypeUid::Ptr is also returned 
  222.51 -by this function.
  222.52 -
  222.53 -@publishedAll
  222.54 -@released
  222.55 -@see MObjectProvider */
  222.56 -	{
  222.57 -public:
  222.58 -	class Ptr
  222.59 -	/** Encapsulates a pointer to an object fetched by an object provider.
  222.60 -
  222.61 -	The class has no public constructor. TTypeUid::MakePtr() or TTypeUid::Null() 
  222.62 -	must be used to construct instances of this class. */
  222.63 -		{
  222.64 -		friend class TTypeUid;
  222.65 -	private:
  222.66 -		explicit inline Ptr(TAny* aPtr)
  222.67 -			: iPtr(aPtr)
  222.68 -			{}
  222.69 -	public:
  222.70 -		inline TAny* Pointer() const
  222.71 -		/** Retrieves the pointer to an object which is encapsulated by the Ptr.
  222.72 -	
  222.73 -		@return A pointer to an object. */
  222.74 -			{return iPtr;}
  222.75 -	private:
  222.76 -		TAny* iPtr;
  222.77 -		};
  222.78 -public:
  222.79 -	inline TTypeUid(TInt aUid)
  222.80 -	/** Constructor that takes a Uid value.
  222.81 -	
  222.82 -	@param aUid The Uid value that defines the type of object that an object provider 
  222.83 -	is to get. */
  222.84 -		{ iUid = aUid; }
  222.85 -	inline static Ptr Null()
  222.86 -	/** Constructs a Ptr which encapsulates a NULL pointer.
  222.87 -	
  222.88 -	@return The constructed Ptr object */
  222.89 -		{ return Ptr(NULL); }
  222.90 -	template <class T> inline Ptr MakePtr(T* aT) const
  222.91 -	/** Constructs a Ptr which encapsulates the specified object pointer.
  222.92 -	
  222.93 -	@param aT A pointer to the object which is to be encapsulated.
  222.94 -	@return The constructed Ptr object */
  222.95 -		{ __ASSERT_DEBUG(iUid == T::ETypeId,User::Invariant()); return Ptr(aT); }
  222.96 -	};
  222.97 -
  222.98 -
  222.99 -class MObjectProvider
 222.100 -/** An interface that allows an object to be part of a network of object providers.
 222.101 -
 222.102 -The object provider mechanism can be used to find and access objects of a 
 222.103 -given type, where the type is defined by a TTypeUid object. Object providers 
 222.104 -may be arranged in a hierarchy, i.e. an object provider may have a parent-child 
 222.105 -relationship with another object provider.
 222.106 -
 222.107 -An object provider must provide an implementation for the MopSupplyObject() 
 222.108 -function and can choose to provide an implementation for the MopNext() function. 
 222.109 -Typically, it will also have functionality to define who its parent is.
 222.110 -
 222.111 -CCoeControl is an example of a class that implements this interface. Top level 
 222.112 -controls must have the view or app UI set as their object provider. This is 
 222.113 -done by calling CCoeControl::SetMopParent() on the view or the app UI. The 
 222.114 -view or app UI does this by calling the top level control's CCoeControl::SetMopParent() 
 222.115 -function. 
 222.116 -
 222.117 -@publishedAll 
 222.118 -@released */
 222.119 -	{
 222.120 -public:
 222.121 -	template<class T>
 222.122 -	T* MopGetObject(T*& aPtr) 
 222.123 -	/** Gets an object of the type defined by the template parameter.
 222.124 -	
 222.125 -	The object may be supplied directly by this object provider, or by other object 
 222.126 -	providers higher up the hierarchy.
 222.127 -	
 222.128 -	@param aPtr A reference to a pointer to an object of a type that is to be 
 222.129 -	retrieved.
 222.130 -	@return A pointer to an object of the type required, or NULL if none can be 
 222.131 -	found. */
 222.132 -		{ return (aPtr=(T*)MopGetById(T::ETypeId)); }
 222.133 -		
 222.134 -	
 222.135 -	template<class T>	
 222.136 -	T*  MopGetObjectNoChaining(T*& aPtr)
 222.137 -	/** Gets an object of the type defined by the template parameter.
 222.138 -	
 222.139 -	The object will be supplied directly by this object provider, or NULL 
 222.140 -	will be returned, this function does not recurse through the object chain.
 222.141 -		
 222.142 -	@param aPtr A reference to a pointer to an object of a type that is to be 
 222.143 -	retrieved.
 222.144 -	@return A pointer to an object of the type required, or NULL if none can be 
 222.145 -	found. */
 222.146 -		{ return (aPtr=(T*)MopGetByIdNoChaining(T::ETypeId)); }
 222.147 -	
 222.148 -	/**
 222.149 -	@publishedAll 
 222.150 -	@released */
 222.151 -	MObjectProvider* FindParent(MObjectProvider* aMopToFind);
 222.152 -	
 222.153 -private: // must be overridden
 222.154 -	/** Gets an object whose type is encapsulated by the specified TTypeUid object.
 222.155 -
 222.156 -	@param aId Encapsulates the Uid that identifies the type of object required.
 222.157 -	@return Encapsulates the pointer to the object provided. 
 222.158 -	Note that the encapsulated pointer may be NULL.
 222.159 -
 222.160 -	@publishedAll 
 222.161 -	@released */
 222.162 -	virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId) = 0;
 222.163 -
 222.164 -protected:
 222.165 -	IMPORT_C MObjectProvider();
 222.166 -
 222.167 -private: // may be overridden to continue chain of responsibility
 222.168 -	/**
 222.169 -	@publishedAll 
 222.170 -	@released */
 222.171 -	IMPORT_C virtual MObjectProvider* MopNext();
 222.172 -	IMPORT_C virtual void MObjectProvider_Reserved1();
 222.173 -	IMPORT_C virtual void MObjectProvider_Reserved2();
 222.174 -
 222.175 -private: 
 222.176 -	IMPORT_C TAny* MopGetById(TTypeUid aId);
 222.177 -	IMPORT_C TAny* MopGetByIdNoChaining(TTypeUid aId);
 222.178 -	
 222.179 -private:
 222.180 -	TInt iMObjectProvider_Reserved1;
 222.181 -	};
 222.182 -
 222.183 -#endif	// __COEMOP_H__
   223.1 --- a/epoc32/include/coesndpy.h	Tue Mar 16 16:12:26 2010 +0000
   223.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   223.3 @@ -1,96 +0,0 @@
   223.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   223.5 -// All rights reserved.
   223.6 -// This component and the accompanying materials are made available
   223.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   223.8 -// which accompanies this distribution, and is available
   223.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  223.10 -//
  223.11 -// Initial Contributors:
  223.12 -// Nokia Corporation - initial contribution.
  223.13 -//
  223.14 -// Contributors:
  223.15 -//
  223.16 -// Description:
  223.17 -//
  223.18 -
  223.19 -#ifndef __COESNDPY_H__
  223.20 -#define __COESNDPY_H__
  223.21 -
  223.22 -#include <e32std.h>
  223.23 -
  223.24 -class TBaSystemSoundType;
  223.25 -class CCoeSoundPlayerManager;
  223.26 -
  223.27 -
  223.28 -/** Utility class for simple sound playing.
  223.29 -
  223.30 -Must be used in the same thread as an active UI Control Framework environment 
  223.31 -(CCoeEnv). 
  223.32 -
  223.33 -This class plays the sound specified by a TBaSystemSoundType object. The 
  223.34 -caller can request the sound to be repeated, and the time between repeats. 
  223.35 -If the exact sound cannot be found on a particular device, a match only by 
  223.36 -category (first UID) is used. No sound will play if a match is not found.
  223.37 -
  223.38 -@publishedAll
  223.39 -@released */
  223.40 -class CoeSoundPlayer
  223.41 -	{
  223.42 -public:
  223.43 -	enum { ENoRepeat=1, ERepeatForever=KMaxTInt};
  223.44 -public:
  223.45 -	inline static void PlaySound(const TBaSystemSoundType& aType);
  223.46 -	inline static void PlaySound(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap);
  223.47 -	inline static void PlaySoundNow(const TBaSystemSoundType& aType);
  223.48 -	inline static void PlaySoundNow(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap);
  223.49 -	IMPORT_C static void CancelSound(const TBaSystemSoundType& aType);
  223.50 -private:
  223.51 -	IMPORT_C static void PlaySound(const TBaSystemSoundType& aType,TInt aPlayCount,
  223.52 -											TTimeIntervalMicroSeconds32 aGap,TBool aInterrupt);
  223.53 -	static CCoeSoundPlayerManager* ManagerL();
  223.54 -	};
  223.55 -
  223.56 -
  223.57 -
  223.58 -
  223.59 -
  223.60 -/** Plays the specified sound. 
  223.61 -
  223.62 -This function only interrupts another, currently playing, sound if the new 
  223.63 -sound has a higher priority than the currently playing sound. If you wish 
  223.64 -to interrupt any currently playing sound and play a new one, use PlaySoundNow() 
  223.65 -instead of PlaySound().
  223.66 -
  223.67 -@param aType The sound to play.*/
  223.68 -inline void CoeSoundPlayer::PlaySound(const TBaSystemSoundType& aType)
  223.69 -	{CoeSoundPlayer::PlaySound(aType,ENoRepeat,TTimeIntervalMicroSeconds32(0),EFalse);}
  223.70 -
  223.71 -/** Plays the specified sound for the specifed number of times with the specified 
  223.72 -interval. 
  223.73 -
  223.74 -This function only interrupts another, currently playing, sound if the new sound 
  223.75 -has a higher priority than the current one. If you wish to interrupt 
  223.76 -any currently playing sound and play a new one, use PlaySoundNow() instead of PlaySound().
  223.77 -
  223.78 -@param aType The sound to play. 
  223.79 -@param aPlayCount The number of times the sound is played.
  223.80 -@param aGap The interval in microseconds between each time the sound is played. */
  223.81 -inline void CoeSoundPlayer::PlaySound(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap)
  223.82 -	{CoeSoundPlayer::PlaySound(aType,aPlayCount,aGap,EFalse);}
  223.83 -
  223.84 -/** Plays the specified sound, interrupting any other sound that is currently playing.
  223.85 -
  223.86 -@param aType The sound to play. */
  223.87 -inline void CoeSoundPlayer::PlaySoundNow(const TBaSystemSoundType& aType)
  223.88 -	{CoeSoundPlayer::PlaySound(aType,ENoRepeat,TTimeIntervalMicroSeconds32(0),ETrue);}
  223.89 -
  223.90 -/** Plays the specified sound the specifed number of times with the 
  223.91 -specified interval, interrupting any other sound that is currently playing.
  223.92 -
  223.93 -@param aType The sound to play.
  223.94 -@param aPlayCount The number of times the sound is played.
  223.95 -@param aGap The interval in microseconds between each time the sound is played. */
  223.96 -inline void CoeSoundPlayer::PlaySoundNow(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap)
  223.97 -	{CoeSoundPlayer::PlaySound(aType,aPlayCount,aGap,ETrue);}
  223.98 -
  223.99 -#endif	// __COESNDPY_H__
   224.1 --- a/epoc32/include/coetextdrawer.h	Tue Mar 16 16:12:26 2010 +0000
   224.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   224.3 @@ -1,324 +0,0 @@
   224.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   224.5 -// All rights reserved.
   224.6 -// This component and the accompanying materials are made available
   224.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   224.8 -// which accompanies this distribution, and is available
   224.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  224.10 -//
  224.11 -// Initial Contributors:
  224.12 -// Nokia Corporation - initial contribution.
  224.13 -//
  224.14 -// Contributors:
  224.15 -//
  224.16 -// Description:
  224.17 -//
  224.18 -
  224.19 -#ifndef __COETEXTDRAWER_H__
  224.20 -#define __COETEXTDRAWER_H__
  224.21 -
  224.22 -#include <gulutil.h>	 
  224.23 -#include <gulalign.h>	 
  224.24 -#include <biditext.h>
  224.25 -#include <coemop.h>
  224.26 -
  224.27 -//
  224.28 -// TEXT DRAWER CODE
  224.29 -//
  224.30 -
  224.31 -// forward declarations
  224.32 -class CCoeTextDrawerBase;
  224.33 -class TCoeTextTypeAdaptor;
  224.34 -
  224.35 -/**
  224.36 -This class serves as a smart-pointer handle to a CCoeTextDrawerBase-derived object, used for drawing
  224.37 -user interface text. Through the use of the CCoeControl's TextDrawer() and GetTextDrawer() methods, a
  224.38 -container control can control the text style and color used by its child controls. For example, a button
  224.39 -class can override its GetTextDrawer() method to set the text color used by its text label child control 
  224.40 -depending on the buttons state (e.g. unpressed, pressed, or dimmed).
  224.41 -
  224.42 -The XCoeTextDrawer object manages the life of the heap allocated CCoeTextDrawerBase (deleting it or 
  224.43 -resetting it depending on whether the object is reusable or not).
  224.44 -
  224.45 -XCoeTextDrawer objects shall be allocated on the stack in the control's Draw() method and initialized 
  224.46 -with a heap allocated CCoeTextDrawerBase object fetched from the control's skin, or from its parent or 
  224.47 -background through the CCoeControl::TextDrawer() method. 
  224.48 -
  224.49 -Never create a CCoeTextDrawer-derived object inside your CCoeControl::Draw() method, as this is not 
  224.50 -guaranteed to work in low-memory situations. Non-reusable text drawers must only be created in your
  224.51 -control's GetTextDrawer() method, as this provides error handling in case the text drawer could not be 
  224.52 -created.
  224.53 -
  224.54 -Hence, typical use from inside a CCoeControl's Draw() method:
  224.55 -<code>
  224.56 -XCoeTextDrawer textDrawer(TextDrawer());
  224.57 -textDrawer.SetAlignment(EHLeftVCenter);
  224.58 -textDrawer.SetMargins(iTextMargins);
  224.59 -textDrawer.DrawText(SystemGc(), *iText, iTextRect, ScreenFont(TCoeFont::NormalFont()));
  224.60 -</code>
  224.61 -
  224.62 -@publishedAll
  224.63 -@released
  224.64 -*/
  224.65 -class XCoeTextDrawer
  224.66 -	{
  224.67 -public:
  224.68 -	IMPORT_C XCoeTextDrawer(CCoeTextDrawerBase& aTextDrawer);
  224.69 -	IMPORT_C ~XCoeTextDrawer();
  224.70 -	
  224.71 -	IMPORT_C void operator=(CCoeTextDrawerBase& aTextDrawer);
  224.72 -
  224.73 -	IMPORT_C void DrawText(CGraphicsContext& aGc, const TBidiText& aText, const TRect& aTextRect, const CFont& aFont) const;
  224.74 -	IMPORT_C void DrawDisplayOrderedText(CGraphicsContext& aGc, const TDesC& aText, const TRect& aTextRect, const CFont& aFont) const;
  224.75 -	
  224.76 -	IMPORT_C void DrawTextVertical(CGraphicsContext& aGc, const TBidiText& aText, const TRect& aTextRect, const CFont& aFont, TBool aUp = ETrue) const;
  224.77 -	IMPORT_C void DrawDisplayOrderedTextVertical(CGraphicsContext& aGc, const TDesC& aText, const TRect& aTextRect, const CFont& aFont, TBool aUp = ETrue) const;
  224.78 -	
  224.79 -	IMPORT_C TRect ClipRect() const;
  224.80 -	IMPORT_C void SetClipRect(const TRect& aClipRect);
  224.81 -
  224.82 -	inline TRgb TextColor() const;
  224.83 -	inline void SetTextColor(TRgb aColor);
  224.84 -	
  224.85 -	inline TGulAlignment Alignment() const;
  224.86 -	inline void SetAlignment(const TGulAlignment& aAlignment);
  224.87 -	
  224.88 -	inline TMargins8 Margins() const;
  224.89 -	inline void SetMargins(const TMargins8& aMargins);
  224.90 -	
  224.91 -	inline TInt LineGapInPixels() const;
  224.92 -	inline void SetLineGapInPixels(TInt aLineGapInPixels);	
  224.93 -public: 
  224.94 -	IMPORT_C CCoeTextDrawerBase *operator ->();		// deprecated	
  224.95 -private:
  224.96 -	XCoeTextDrawer(const XCoeTextDrawer& aTextDrawer);  
  224.97 -private:	
  224.98 -	CCoeTextDrawerBase* iTextDrawer;
  224.99 -	TRect iClipRect;
 224.100 -	};
 224.101 -
 224.102 -
 224.103 -// forward declaration
 224.104 -class CCoeTextDrawerBaseExt;
 224.105 -
 224.106 -/**
 224.107 -This is the base class for all text drawers implementing different text effects (for example 
 224.108 -shadow or glowing/outlined text). The object can be created and deleted each time it's used, 
 224.109 -or Reset() and reused if it IsReusable(). The latter is recommended.
 224.110 -
 224.111 -Note that the pure virtual DrawText() method is private. This ensures that the object is used 
 224.112 -through the XCoeTextDrawer class (which manages its life). 
 224.113 -
 224.114 -Note also that the accessor and set methods should be used via the owning XCoeTextDrawer object,
 224.115 -and that the MObjectProvider mechanism can be used to identify the actual text drawer implementation.
 224.116 -
 224.117 -@publishedAll
 224.118 -@released
 224.119 -*/
 224.120 -class CCoeTextDrawerBase : public CBase, public MObjectProvider
 224.121 -	{
 224.122 -	friend class XCoeTextDrawer;   
 224.123 -public:
 224.124 -	IMPORT_C ~CCoeTextDrawerBase();
 224.125 -	IMPORT_C virtual void Reset();
 224.126 -
 224.127 -	/**
 224.128 -	This method returns the main color used by the CCoeTextDrawer to draw text.
 224.129 -	@return The color used to draw text.
 224.130 -	*/
 224.131 -	virtual TRgb TextColor() const = 0;
 224.132 -	/**
 224.133 -	This method sets the main color to use to draw text.
 224.134 -	@param aColor The color to use to draw text.
 224.135 -	*/
 224.136 -	virtual void SetTextColor(TRgb aColor) = 0;
 224.137 - 
 224.138 -	IMPORT_C TGulAlignment Alignment() const;
 224.139 -	IMPORT_C void SetAlignment(const TGulAlignment& aAlignment);
 224.140 -	
 224.141 -	IMPORT_C TMargins8 Margins() const;
 224.142 -	IMPORT_C void SetMargins(const TMargins8& aMargins);
 224.143 -	
 224.144 -	IMPORT_C TInt LineGapInPixels() const;
 224.145 -	IMPORT_C void SetLineGapInPixels(TInt aLineGapInPixels);
 224.146 -public:	// public methods only for use by the owner/creator of the CCoeTextDrawerBase-derived object
 224.147 - 	IMPORT_C TBool IsReusable() const;
 224.148 -	IMPORT_C void SetReusable(TBool aIsReusable);
 224.149 -	
 224.150 -	IMPORT_C void SetAppLanguage(TLanguage aAppLang);
 224.151 -protected:
 224.152 - 	IMPORT_C CCoeTextDrawerBase();
 224.153 -	IMPORT_C TInt Construct();
 224.154 -	IMPORT_C TGulHAlignment ActualHorizontalAlignment(const TCoeTextTypeAdaptor& aText) const;
 224.155 -private:  
 224.156 -	/**
 224.157 -	Any actual text drawer must implement this method to draw the text passed as argument.
 224.158 -	The implementation must draw the text inside the text rectangle, cropped to the clipping
 224.159 -	rectangle, and with the given margins and alignment taken into account.
 224.160 -	
 224.161 -	Note that the actual horizontal alignment shall depend on the script directionality. 
 224.162 -	Calling	ActualHorizontalAlignment() will return the horizontal alignment where left and 
 224.163 -	right has been swapped for right-to-left scripts.
 224.164 -	*/
 224.165 -	virtual void DrawText(CGraphicsContext& aGc, const TCoeTextTypeAdaptor& aText, const CFont& aFont, 
 224.166 -							const TRect& aTextRect, const TRect& aClipRect) const = 0;
 224.167 -public:
 224.168 -	IMPORT_C virtual TMargins8 EffectMargins();
 224.169 -private:
 224.170 -	/**
 224.171 -	Draws the text vertically inside the text rectangle, cropped to the clipping
 224.172 -	rectangle, and with the given margins and alignment taken into account.
 224.173 -	If aUp is ETrue, text is rotated 90 degrees anti-clockwise; EFalse, text is rotated 90 degrees clockwise.
 224.174 -	
 224.175 -	Note that the actual horizontal alignment shall depend on the script directionality. 
 224.176 -	Calling	ActualHorizontalAlignment() will return the horizontal alignment where left and 
 224.177 -	right has been swapped for right-to-left scripts.
 224.178 -	Also note that the margines are relative to the orientation of the text.
 224.179 -	*/
 224.180 -	IMPORT_C virtual void DrawTextVertical(CGraphicsContext& aGc, const TCoeTextTypeAdaptor& aText, const CFont& aFont, 
 224.181 -							const TRect& aTextRect, const TRect& aClipRect, TBool aUp) const;
 224.182 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved3();
 224.183 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved4();
 224.184 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved5();
 224.185 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved6();
 224.186 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved7();
 224.187 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved8();
 224.188 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved9();
 224.189 -	IMPORT_C virtual void CCoeTextDrawerBase_Reserved10();
 224.190 - private:
 224.191 -	TBool iIsReusable;	 
 224.192 -	TGulAlignment iAlignment;
 224.193 -	TMargins8 iMargins;
 224.194 -	TInt iLineGap;
 224.195 -	CCoeTextDrawerBaseExt* iExtension;
 224.196 -	};
 224.197 -
 224.198 -
 224.199 -/**
 224.200 -This class allows the XCoeTextDrawer to draw text that is in the form of a TBidiText 
 224.201 -object as well as pre-reordered new-line separated plain text descriptors. (The descriptor 
 224.202 -text is especially useful when using the XCoeTextDrawer together with the FORM component). 
 224.203 -
 224.204 -This removes the need to implement two versions of the DrawText() method.
 224.205 -
 224.206 -@publishedAll
 224.207 -@released
 224.208 -*/
 224.209 -class TCoeTextTypeAdaptor
 224.210 -	{
 224.211 -public:
 224.212 -	IMPORT_C TCoeTextTypeAdaptor(const TDesC& aText);		// text lines separated with '\n'
 224.213 -	IMPORT_C TCoeTextTypeAdaptor(const TBidiText& aText);	// TBidiText object
 224.214 -	IMPORT_C TInt NumberOfLines() const;
 224.215 -	IMPORT_C TPtrC LineOfText(TInt aLineNumber, TInt& aWidthInPixels, const CFont& aFont) const;	
 224.216 -	IMPORT_C TBool HasRightToLeftDirectionality() const;
 224.217 -private:
 224.218 -	enum TTextType
 224.219 -		{
 224.220 -		ENewlineSeparated,
 224.221 -		EBidiText
 224.222 -		};
 224.223 -	const TAny* iText;
 224.224 -	TTextType iTextType;
 224.225 -	};
 224.226 -
 224.227 -
 224.228 -/**	
 224.229 -This is a basic text drawer without any text effects. The default text drawer that can be 
 224.230 -used if no other (device specific) text drawers has been added to the system. 
 224.231 -
 224.232 -@publishedAll
 224.233 -@released
 224.234 -*/
 224.235 -class CCoePlainTextDrawer : public CCoeTextDrawerBase
 224.236 -	{
 224.237 -public:
 224.238 -	DECLARE_TYPE_ID(0x1020831A)
 224.239 -public:
 224.240 -	IMPORT_C static CCoePlainTextDrawer* New(TRgb aTextColor);
 224.241 -	
 224.242 -	IMPORT_C TRgb TextColor() const;
 224.243 -	IMPORT_C void SetTextColor(TRgb aTextColor);
 224.244 -protected: // from MObjectProvider
 224.245 -	IMPORT_C virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
 224.246 -private:  
 224.247 -	void DrawText(CGraphicsContext& aGc, const TCoeTextTypeAdaptor& aText, const CFont& aFont, 
 224.248 -					const TRect& aTextRect, const TRect& aClipRect) const;
 224.249 -	void Reset();	
 224.250 -	CCoePlainTextDrawer(TRgb aTextColor);
 224.251 -	TInt Construct();	//lint !e1511 Suppress member hides non-virtual member
 224.252 -private:	
 224.253 -	TRgb iTextColor;
 224.254 -	};
 224.255 -	
 224.256 -
 224.257 -
 224.258 -// Inlines		
 224.259 -
 224.260 -/**
 224.261 -This method returns the main color used by by DrawText() and DrawDisplayOrderedText().
 224.262 -@return The color used to draw text.
 224.263 -*/
 224.264 -TRgb XCoeTextDrawer::TextColor() const
 224.265 -	{ return iTextDrawer->TextColor(); }
 224.266 -	
 224.267 -/**
 224.268 -This method sets the main color to use by DrawText() and DrawDisplayOrderedText() to draw text.
 224.269 -@param aColor The color to use to draw text.
 224.270 -*/
 224.271 -void XCoeTextDrawer::SetTextColor(TRgb aColor)
 224.272 -	{ iTextDrawer->SetTextColor(aColor); }
 224.273 -
 224.274 -/**
 224.275 -Returns the text alignment that will be used by DrawText() and DrawDisplayOrderedText().
 224.276 -Note that left and right alignment will be swapped for right-to-left scripts, unless
 224.277 -the alignment has been set to be absolute (see TGulAlignment).
 224.278 -
 224.279 -@return TGulAlignment value of iAlignment data member
 224.280 -*/
 224.281 -TGulAlignment XCoeTextDrawer::Alignment() const
 224.282 -	{ return iTextDrawer->Alignment(); }
 224.283 -
 224.284 -/**
 224.285 -Set the text alignment that will be used by DrawText() and DrawDisplayOrderedText().
 224.286 -Note that left and right alignment will be swapped for right-to-left scripts, unless
 224.287 -the alignment has been set to be absolute (see TGulAlignment).
 224.288 -
 224.289 -@param aAlignment TGulAlignment value.  
 224.290 -*/		
 224.291 -void XCoeTextDrawer::SetAlignment(const TGulAlignment& aAlignment)
 224.292 -	{ iTextDrawer->SetAlignment(aAlignment); }
 224.293 -
 224.294 -/**
 224.295 -Returns the text margins that will be used by DrawText() and DrawDisplayOrderedText().
 224.296 -Note that text effects may intrude on the margin.
 224.297 -
 224.298 -@return The margins between the text rect and the actual text, in pixels.
 224.299 -*/	
 224.300 -TMargins8 XCoeTextDrawer::Margins() const
 224.301 -	{ return iTextDrawer->Margins(); }
 224.302 -
 224.303 -/**
 224.304 -Set the text margins that will be used by DrawText() and DrawDisplayOrderedText().
 224.305 -Note that text effects may intrude on the margin, and that margins are always relative to the text orientation. 
 224.306 -
 224.307 -@param aMargins The margins between the text rect and the actual text, in pixels.
 224.308 -*/		
 224.309 -void XCoeTextDrawer::SetMargins(const TMargins8& aMargins)
 224.310 -	{ iTextDrawer->SetMargins(aMargins); }
 224.311 -	
 224.312 -/**
 224.313 -Returns the gap (in pixels) between lines of text. Default gap is 1 (one) pixel.
 224.314 -@return The gap between lines of text, in pixels.
 224.315 -*/	
 224.316 -TInt XCoeTextDrawer::LineGapInPixels() const
 224.317 -	{ return iTextDrawer->LineGapInPixels(); }
 224.318 -	
 224.319 -/**
 224.320 -Set the gap (in pixels) between lines of text. Default gap is 1 (one) pixel.
 224.321 -@param aLineGapInPixels The gap between lines of text, in pixels.
 224.322 -*/			
 224.323 -void XCoeTextDrawer::SetLineGapInPixels(TInt aLineGapInPixels)
 224.324 -	{ iTextDrawer->SetLineGapInPixels(aLineGapInPixels); }
 224.325 -
 224.326 -		
 224.327 -#endif	// __COETEXTDRAWER_H__
   225.1 --- a/epoc32/include/coeutils.h	Tue Mar 16 16:12:26 2010 +0000
   225.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   225.3 @@ -1,102 +0,0 @@
   225.4 -// COEUTILS.H
   225.5 -
   225.6 -/*
   225.7 -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   225.8 -* All rights reserved.
   225.9 -* This component and the accompanying materials are made available
  225.10 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  225.11 -* which accompanies this distribution, and is available
  225.12 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  225.13 -*
  225.14 -* Initial Contributors:
  225.15 -* Nokia Corporation - initial contribution.
  225.16 -*
  225.17 -* Contributors:
  225.18 -*
  225.19 -* Description:
  225.20 -*
  225.21 -*/
  225.22 -
  225.23 -
  225.24 -
  225.25 -#ifndef __COEUTILS_H__
  225.26 -#define __COEUTILS_H__
  225.27 -
  225.28 -#include <e32std.h>
  225.29 -class CCoeEnv;
  225.30 -
  225.31 -/** Provides file and path utility functions.
  225.32 -
  225.33 -@publishedAll
  225.34 -@released */
  225.35 -class ConeUtils
  225.36 -	{
  225.37 -public:
  225.38 -	IMPORT_C static TBool FileExists(const TDesC& aFileName);
  225.39 -	IMPORT_C static void EnsurePathExistsL(const TPtrC& aFileName);
  225.40 -	};
  225.41 -
  225.42 -
  225.43 -/** 
  225.44 -Class encapsulates methods for opening and closing localised resource files
  225.45 -in the CONE environment. The actual reading of resources from an opened 
  225.46 -resource file is done using various CCoeEnv provided resource-reading 
  225.47 -methods. The Cone Resource Loader API consists of the RCoeResourceLoader class.
  225.48 -
  225.49 -Only one resource at a time may be opened by one RCoeResourceLoader instance. 
  225.50 -You can use several RCoeResourceLoader instances for accessing several 
  225.51 -resources simultaneously or use one instance and close the previous resource
  225.52 -before opening a new one.
  225.53 -
  225.54 -The implementation uses BaflUtils::NearestLanguageFile to search for
  225.55 -a localised resource in proper search order.
  225.56 - 
  225.57 -Usage example:  
  225.58 -
  225.59 -@code
  225.60 -#include <coeutils.h>  
  225.61 -
  225.62 -// Get CCoeEnv instance
  225.63 -CEikonEnv* eikEnv = CEikonEnv::Static();
  225.64 -// Initialize loader
  225.65 -RCoeResourceLoader rLoader(eikEnv);
  225.66 -
  225.67 -// Push resource loader to cleanup stack, so that it will always be properly 
  225.68 -// closed when popped.
  225.69 -CleanupClosePushL(rLoader);
  225.70 -
  225.71 -// Open resource file
  225.72 -_LIT( KSampleResourceFileName, "Z:\\System\\Apps\\sample\\sample.rsc" );
  225.73 -TFileName fileName(KSampleResourceFileName);
  225.74 -rLoader.OpenL(fileName);
  225.75 -
  225.76 -// Read a resource   
  225.77 -iSomeArray = eikEnv->ReadDesC16ArrayResourceL(R_SOME_RESOURCE);
  225.78 -
  225.79 -// Pop and destroy rLoader from stack. 
  225.80 -// This also calls the rLoader close function after CleanupClosePushL is used.
  225.81 -CleanupStack::PopAndDestroy(); // rLoader
  225.82 -@endcode
  225.83 -
  225.84 -@publishedAll
  225.85 -@released */
  225.86 -NONSHARABLE_CLASS(RCoeResourceLoader)
  225.87 -    {
  225.88 -public:
  225.89 -    IMPORT_C RCoeResourceLoader(CCoeEnv& aEnv);
  225.90 -    IMPORT_C TInt Open(TFileName& aFileName);
  225.91 -    IMPORT_C void OpenL(TFileName& aFileName);
  225.92 -    IMPORT_C void Close();
  225.93 -private:
  225.94 -    // Prohibit copy constructor and assigment operator because not deriving from CBase.
  225.95 -    RCoeResourceLoader();
  225.96 -    RCoeResourceLoader(const RCoeResourceLoader&);
  225.97 -    RCoeResourceLoader& operator= (const RCoeResourceLoader&);
  225.98 -private:
  225.99 -    // Needed for closing
 225.100 -    CCoeEnv& iEnv; 
 225.101 -    TInt iResourceFileOffset;
 225.102 -    };
 225.103 -
 225.104 -
 225.105 -#endif	// __COEUTILS_H__
   226.1 --- a/epoc32/include/coeview.h	Tue Mar 16 16:12:26 2010 +0000
   226.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   226.3 @@ -1,174 +0,0 @@
   226.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   226.5 -// All rights reserved.
   226.6 -// This component and the accompanying materials are made available
   226.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   226.8 -// which accompanies this distribution, and is available
   226.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  226.10 -//
  226.11 -// Initial Contributors:
  226.12 -// Nokia Corporation - initial contribution.
  226.13 -//
  226.14 -// Contributors:
  226.15 -//
  226.16 -// Description:
  226.17 -//
  226.18 -
  226.19 -#ifndef __COEVIEW_H__
  226.20 -#define __COEVIEW_H__
  226.21 -
  226.22 -#include <vwsdef.h>
  226.23 -#include <coemain.h> // for CCoeStatic
  226.24 -
  226.25 -class CCoeAppUi;
  226.26 -
  226.27 -/** Specifies an interface for views. 
  226.28 -
  226.29 -This class should be implemented by all application views. 
  226.30 -
  226.31 -@publishedAll
  226.32 -@released */
  226.33 -class MCoeView
  226.34 -	{
  226.35 -public:	
  226.36 -	/** Returns a TVwsViewId uniquely identifying the view.
  226.37 -	
  226.38 -	@return Represents a view in the server. */
  226.39 -	virtual TVwsViewId ViewId() const=0;
  226.40 -private:
  226.41 -	/** Takes any action required when a view is activated. Reimplemented versions 
  226.42 -	should read the contents of aCustomMessage for any message type identified 
  226.43 -	by aCustomMessageId that the view understands.
  226.44 -	
  226.45 -	The ID of the previously active view aPrevViewId is supplied so that the activated 
  226.46 -	view can subsequently switch back to the caller if required.
  226.47 -	
  226.48 -	@param aPrevViewId The UID of the previously active view.
  226.49 -	@param aCustomMessageId Message type.
  226.50 -	@param aCustomMessage Message contents. 
  226.51 -
  226.52 -	@publishedAll
  226.53 -	@released */
  226.54 -	virtual void ViewActivatedL(const TVwsViewId& aPrevViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage)=0;
  226.55 -	/** Takes any action that is required following deactivation of the view. 
  226.56 -	
  226.57 -	This reduces the work required of the window server.
  226.58 -
  226.59 -	@publishedAll
  226.60 -	@released */
  226.61 -	virtual void ViewDeactivated()=0;
  226.62 -
  226.63 -protected:
  226.64 -	IMPORT_C MCoeView();
  226.65 -	IMPORT_C virtual TVwsViewIdAndMessage ViewScreenDeviceChangedL();
  226.66 -private:
  226.67 -	IMPORT_C virtual void ViewConstructL();
  226.68 -protected:
  226.69 -	IMPORT_C virtual TBool ViewScreenModeCompatible(TInt aScreenMode); // was MCoeView_Reserved_1()
  226.70 -private:
  226.71 -	friend class CCoeViewManager;
  226.72 -	IMPORT_C virtual void PrepareForViewActivation();
  226.73 -	IMPORT_C virtual void MCoeView_Reserved_2();
  226.74 -	IMPORT_C virtual void MCoeView_Reserved_3();
  226.75 -private:
  226.76 -	TInt iMCoeView_Reserved1;
  226.77 -	};
  226.78 -
  226.79 -/** An interface through which view deactivations can be
  226.80 -notified to an observer.
  226.81 -
  226.82 -Dialogs and other floating windows such as virtual keyboards which should be dismissed
  226.83 -when a view is deactivated can implement this interface and take any action required.
  226.84 -
  226.85 -@publishedAll
  226.86 -@released */
  226.87 -class MCoeViewDeactivationObserver
  226.88 -	{
  226.89 -public:
  226.90 -	//
  226.91 -	// Handles the deactivation of the view identified by aViewIdToBeDeactivated before the newly activated
  226.92 -	// view with id aNewlyActivatedViewId is marked as current.
  226.93 -	//
  226.94 -	virtual void HandleViewDeactivation(const TVwsViewId& aViewIdToBeDeactivated,const TVwsViewId& aNewlyActivatedViewId)=0;
  226.95 -protected:
  226.96 -	IMPORT_C MCoeViewDeactivationObserver();
  226.97 -private:
  226.98 -	IMPORT_C virtual void MCoeViewDeactivationObserver_Reserved_1();
  226.99 -	IMPORT_C virtual void MCoeViewDeactivationObserver_Reserved_2();
 226.100 -private:
 226.101 -	TInt iMCoeViewDeactivationObserver_Reserved1;
 226.102 -	};
 226.103 -
 226.104 -/** An interface through which view activations can be notified to an observer.
 226.105 -
 226.106 -@publishedPartner
 226.107 -@released
 226.108 -*/
 226.109 -class MCoeViewActivationObserver
 226.110 -	{
 226.111 -public:
 226.112 -	//
 226.113 -	// Handles the activation of the view aNewlyActivatedViewId before the old view aViewIdToBeDeactivated is
 226.114 -	// to be deactivated.
 226.115 -	//
 226.116 -	virtual void HandleViewActivation(const TVwsViewId& aNewlyActivatedViewId,const TVwsViewId& aViewIdToBeDeactivated)=0;
 226.117 -protected:
 226.118 -	IMPORT_C MCoeViewActivationObserver();
 226.119 -private:
 226.120 -	IMPORT_C virtual void MCoeViewActivationObserver_Reserved_1();
 226.121 -	IMPORT_C virtual void MCoeViewActivationObserver_Reserved_2();
 226.122 -private:
 226.123 -	TInt iMCoeViewActivationObserver_Reserved1;
 226.124 -	};
 226.125 -
 226.126 -
 226.127 -/** An interface through which view events can be notified to an observer.
 226.128 -
 226.129 -@publishedPartner
 226.130 -@released */
 226.131 -class MCoeViewObserver
 226.132 -	{
 226.133 -public:
 226.134 -	virtual void HandleViewEventL(const TVwsViewEvent& aEvent)=0;
 226.135 -protected:
 226.136 -	IMPORT_C MCoeViewObserver();
 226.137 -private:
 226.138 -	IMPORT_C virtual void MCoeViewObserver_Reserved1();
 226.139 -	IMPORT_C virtual void MCoeViewObserver_Reserved2();
 226.140 -private:
 226.141 -	TInt iMCoeViewObserver_Reserved1;
 226.142 -	};
 226.143 -
 226.144 -
 226.145 -//
 226.146 -// Handles any screen device changes that occur while a view is active 
 226.147 -//
 226.148 -/** A default screen device change handler. 
 226.149 -
 226.150 -This class is used to activate a default view when a screen "flip" occurs, 
 226.151 -if the currently active view does not implement MCoeView::ViewScreenDeviceChangedL().
 226.152 -
 226.153 -@publishedAll 
 226.154 -@released
 226.155 -@see MCoeView::ViewScreenDeviceChangedL() */
 226.156 -class CCoeScreenDeviceChangeDefaultHandler : public CCoeStatic
 226.157 -	{
 226.158 -public:
 226.159 -	IMPORT_C ~CCoeScreenDeviceChangeDefaultHandler();
 226.160 -	IMPORT_C static CCoeScreenDeviceChangeDefaultHandler* Self();
 226.161 -protected:
 226.162 -	IMPORT_C CCoeScreenDeviceChangeDefaultHandler();
 226.163 -	IMPORT_C CCoeScreenDeviceChangeDefaultHandler(TInt aDestructionPriority);
 226.164 -private:
 226.165 -	IMPORT_C virtual void CCoeStatic_Reserved1();
 226.166 -	IMPORT_C virtual void CCoeStatic_Reserved2();
 226.167 -	IMPORT_C virtual void CCoeScreenDeviceChangeDefaultHandler_Reserved1();
 226.168 -	IMPORT_C virtual void CCoeScreenDeviceChangeDefaultHandler_Reserved2();
 226.169 -public:
 226.170 -	virtual void HandleScreenDeviceChangedL()=0;
 226.171 -	virtual TVwsViewIdAndMessage DefaultViewOnScreenDeviceChanged()=0;
 226.172 -private:
 226.173 -	TInt iCCoeScreenDeviceChangeDefaultHandler;
 226.174 -	};
 226.175 -
 226.176 -
 226.177 -#endif	// __COEVIEW_H__
   227.1 --- a/epoc32/include/comms-infras/cftransportmacro.h	Tue Mar 16 16:12:26 2010 +0000
   227.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   227.3 @@ -1,26 +0,0 @@
   227.4 -// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   227.5 -// All rights reserved.
   227.6 -// This component and the accompanying materials are made available
   227.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   227.8 -// which accompanies this distribution, and is available
   227.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  227.10 -//
  227.11 -// Initial Contributors:
  227.12 -// Nokia Corporation - initial contribution.
  227.13 -//
  227.14 -// Contributors:
  227.15 -//
  227.16 -// Description:
  227.17 -// Comms-infras\Elements\cftransportmacro.h
  227.18 -// This header file is exported to \EPOC32\include\comms-infras
  227.19 -// 
  227.20 -//
  227.21 -
  227.22 -#ifndef CFTRANSPORTMACRO_H
  227.23 -#define CFTRANSPORTMACRO_H
  227.24 -
  227.25 -#if (defined SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY) || (defined SYMBIAN_C32_SERCOMMS_V2)
  227.26 -	#define SYMBIAN_NETWORKING_CFTRANSPORT
  227.27 -#endif
  227.28 -
  227.29 -#endif // CFTRANSPORTMACRO_H
   228.1 --- a/epoc32/include/comms-infras/metadata.inl	Tue Mar 16 16:12:26 2010 +0000
   228.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   228.3 @@ -1,53 +0,0 @@
   228.4 -/**
   228.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   228.6 -* All rights reserved.
   228.7 -* This component and the accompanying materials are made available
   228.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   228.9 -* which accompanies this distribution, and is available
  228.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  228.11 -*
  228.12 -* Initial Contributors:
  228.13 -* Nokia Corporation - initial contribution.
  228.14 -*
  228.15 -* Contributors:
  228.16 -*
  228.17 -* Description:
  228.18 -*
  228.19 -*/
  228.20 -
  228.21 -
  228.22 -
  228.23 -
  228.24 -
  228.25 -/**
  228.26 - @file MetaData.inl
  228.27 - @internalTechnology
  228.28 -*/
  228.29 -
  228.30 -#ifndef __METADATA_INL__
  228.31 -#define __METADATA_INL__
  228.32 -
  228.33 -namespace Meta
  228.34 -{
  228.35 -
  228.36 -
  228.37 -STypeId::STypeId()
  228.38 -/**
  228.39 - * Constructor
  228.40 - */
  228.41 -	{
  228.42 -	iUid.iUid = 0;
  228.43 -	iType = 0;
  228.44 -	}
  228.45 -
  228.46 -STypeId::STypeId(TUint32 aUid, TUint32 aTypeId)
  228.47 -/**
  228.48 - * Constructor
  228.49 - */
  228.50 -	{
  228.51 -	iUid.iUid = aUid;
  228.52 -	iType = aTypeId;
  228.53 -	}
  228.54 -
  228.55 -}	// namespace Meta
  228.56 -#endif	// __METADATA_INL__
   229.1 --- a/epoc32/include/conarc.h	Tue Mar 16 16:12:26 2010 +0000
   229.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   229.3 @@ -1,305 +0,0 @@
   229.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   229.5 -// All rights reserved.
   229.6 -// This component and the accompanying materials are made available
   229.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   229.8 -// which accompanies this distribution, and is available
   229.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  229.10 -//
  229.11 -// Initial Contributors:
  229.12 -// Nokia Corporation - initial contribution.
  229.13 -//
  229.14 -// Contributors:
  229.15 -//
  229.16 -// Description:
  229.17 -//
  229.18 -
  229.19 -#if !defined(__CONARC_H__)
  229.20 -#define __CONARC_H__
  229.21 -
  229.22 -#if !defined(__E32BASE_H__)
  229.23 -#include <e32base.h>
  229.24 -#endif
  229.25 -#if !defined(__APMSTD_H__)
  229.26 -#include <apmstd.h>
  229.27 -#endif
  229.28 -
  229.29 -//
  229.30 -// base interface for converters
  229.31 -//
  229.32 -
  229.33 -/**
  229.34 -@publishedAll
  229.35 -@released
  229.36 -*/
  229.37 -const TInt KUidConverterToBase64=0x10000721;
  229.38 -/**
  229.39 -@publishedAll
  229.40 -@released
  229.41 -*/
  229.42 -const TInt KUidConverterFromBase64=0x100011C5;
  229.43 -/**
  229.44 -@publishedAll
  229.45 -@released
  229.46 -*/
  229.47 -const TInt KUidPlainTextToQuotedPrintableConverter=0x10001826;
  229.48 -/**
  229.49 -@publishedAll
  229.50 -@released
  229.51 -*/
  229.52 -const TInt KUidQuotedPrintableToPlainTextConverter=0x10001825;
  229.53 -/**
  229.54 -@publishedAll
  229.55 -@released
  229.56 -*/
  229.57 -const TInt KUidETextToPlainTextConverter=
  229.58 -#if defined(ETEXT_CONVERTER_UIDS_CORRECTED)
  229.59 -	0x100040c8;
  229.60 -#else
  229.61 -	0x100040c7;
  229.62 -#endif
  229.63 - 
  229.64 -/**
  229.65 -@publishedAll
  229.66 -@released
  229.67 -*/
  229.68 -const TInt KUidPlainTextToETextConverter=
  229.69 -#if defined(ETEXT_CONVERTER_UIDS_CORRECTED)
  229.70 -	0x100040c7;
  229.71 -#else
  229.72 -	0x100040c8;
  229.73 -#endif
  229.74 - 
  229.75 -/**
  229.76 -@publishedAll
  229.77 -@released
  229.78 -*/
  229.79 -#ifdef _UNICODE
  229.80 -#define KUidConverterDll KUidConverterDll16
  229.81 -#else
  229.82 -#define KUidConverterDll KUidConverterDll8
  229.83 -#endif
  229.84 -
  229.85 -/**
  229.86 -@internalComponent
  229.87 -@deprecated
  229.88 -*/
  229.89 -const TInt KUidConverterDllValue8=0x10000C61;
  229.90 -
  229.91 -/**
  229.92 -@internalComponent
  229.93 -@deprecated
  229.94 -*/
  229.95 -const TUid KUidConverterDll8={KUidConverterDllValue8};
  229.96 -
  229.97 -/**
  229.98 -@internalComponent
  229.99 -*/
 229.100 -const TInt KUidConverterInfoFileValue=0x10000C62;
 229.101 -
 229.102 -/**
 229.103 -@publishedAll
 229.104 -@released
 229.105 -*/
 229.106 -const TUid KUidConverterInfoFile={KUidConverterInfoFileValue};
 229.107 -
 229.108 -/**
 229.109 -@internalComponent
 229.110 -*/
 229.111 -const TInt KUidConverterInfoStreamValue=0x10000CD0;
 229.112 -
 229.113 -/**
 229.114 -@internalComponent
 229.115 -*/
 229.116 -const TUid KUidConverterInfoStream={KUidConverterInfoStreamValue};
 229.117 -
 229.118 -/**
 229.119 -The UID2 of converter-type DLLs.
 229.120 -@publishedAll
 229.121 -@released
 229.122 -*/
 229.123 -const TUid KUidConverterDll16={0x10003A30};
 229.124 -
 229.125 -/**
 229.126 -The extension of converter information files.
 229.127 -@publishedAll
 229.128 -@released
 229.129 -*/
 229.130 -_LIT(KConverterInfoFileExtension,".CNF");
 229.131 -/**
 229.132 -The extension of converter DLLs.
 229.133 -@publishedAll
 229.134 -@released
 229.135 -*/
 229.136 -_LIT(KConverterDllExtension,".CNV");
 229.137 -
 229.138 -
 229.139 -class MConverterUiObserver
 229.140 -/**
 229.141 -Interface implemented by the client of a conversion operation to observe conversion 
 229.142 -progress.
 229.143 -
 229.144 -@see CConverterBase2
 229.145 -@publishedAll 
 229.146 -@released
 229.147 -*/
 229.148 -	{
 229.149 -public:
 229.150 -	/** Describes the result of a conversion operation. */
 229.151 -	enum TResult
 229.152 -		{
 229.153 -		/** Conversion succeeded. */
 229.154 -		ESuccess,
 229.155 -		/** Conversion partially succeeded. */
 229.156 -		EPartialSuccess,
 229.157 -		/** Conversion failed. */
 229.158 -		EFailure
 229.159 -		};
 229.160 -	/** Describes the actions that the converter should take. */
 229.161 -	enum TAction
 229.162 -		{
 229.163 -		/** Keep already converted data. */
 229.164 -		ERetain,
 229.165 -		/** Delete converted data. */
 229.166 -		ERemove,
 229.167 -		/** Reconvert data. */
 229.168 -		ERepeat
 229.169 -		}; 
 229.170 -public:
 229.171 -	/** Gets the maximum number of steps that the conversion operation can take. 
 229.172 -	
 229.173 -	The conversion may complete in less than this number of steps (for example 
 229.174 -	if an error occurs or the action is cancelled). 
 229.175 -	
 229.176 -	Each step is a call to CConverterBase2::DoConvert(), although during synchronous 
 229.177 -	conversions this is transparent to the client code.
 229.178 -	
 229.179 -	@param aMax Maximum number of conversion steps.
 229.180 -	@param aObject Index that identifies an embedded object when one is being converted. */
 229.181 -	virtual void MaxSteps(TInt aMax, TInt aObject)=0;
 229.182 -	/** Alerts the client to an error in conversion.
 229.183 -	
 229.184 -	@param aResult A TResult value indicating the conversion state.
 229.185 -	@param aObject Index that identifies an embedded object when one is being converted.
 229.186 -	@return A TAction value that indicates what action the converter should take. */
 229.187 -	virtual TInt Result(TInt aResult, TInt aObject)=0;
 229.188 -	/** Queries the client for a password in order to access the data.
 229.189 -	
 229.190 -	@param aClue Data with a meaning that is specific to each converter: it could for 
 229.191 -	example indicate where the password is stored.
 229.192 -	@return The password entered. */
 229.193 -	virtual HBufC* QueryPasswordL(const TDesC& aClue)=0;
 229.194 -	IMPORT_C virtual void Reserved1_Conv_Obs();
 229.195 -	};
 229.196 -
 229.197 -
 229.198 -class CConverterBase : public CBase
 229.199 -/** For Ecom Style Converters i.e.,for v9.1 and above CConverterBase2 should be used.
 229.200 -
 229.201 -Polymorphic interface for converters from one data format to another.
 229.202 -
 229.203 -Clients use this interface to access data converters. The implementator of 
 229.204 -a data converter derives a class from this in which to implement the appropriate 
 229.205 -conversion functionality.
 229.206 -
 229.207 -The interface offers conversions between files, and between objects that support 
 229.208 -the stream interfaces, e.g. stream stores.
 229.209 -
 229.210 -There are two flavours of conversion methods:
 229.211 -
 229.212 -the synchronous interfaces, ConvertL() and ConvertObjectL(), which perform 
 229.213 -the specified conversion and then return
 229.214 -
 229.215 -the asynchronous interfaces, ConvertAL() and ConvertObjectAL(), which initialise 
 229.216 -the converter object, and allow the client code to call DoConvertL() a number 
 229.217 -of times until the conversion is complete or abandoned.
 229.218 -
 229.219 -@see CConverterBase2
 229.220 -@publishedAll
 229.221 -@released  */
 229.222 -	{
 229.223 -public:
 229.224 -	/** Bitmask values that describe the capabilities of the converter. */
 229.225 -	enum TCapability
 229.226 -		{
 229.227 -		/** The converter can convert files. */
 229.228 -		EConvertsFiles=0x01,
 229.229 -		/** The converter can convert stream objects. */
 229.230 -		EConvertsObjects=0x02,
 229.231 -		/** The converter can extract embedded objects. */
 229.232 -		EConvertsExtract=0x04
 229.233 -		};
 229.234 -public:
 229.235 -	IMPORT_C virtual void ConvertL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // These default to calling the async versions in a loop
 229.236 -	IMPORT_C virtual void ConvertObjectL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL);
 229.237 -	IMPORT_C virtual void ConvertAL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 229.238 -	IMPORT_C virtual void ConvertObjectAL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 229.239 -	IMPORT_C virtual TBool DoConvertL(); // these default to leaving with KErrNotSupported
 229.240 -	/** Gets the converter's UID.
 229.241 -	
 229.242 -	@return Converter's UID */
 229.243 -	virtual TUid Uid() =0;
 229.244 -	IMPORT_C virtual TInt Capabilities(); // defaults to "everything"
 229.245 -	IMPORT_C virtual void CancelConvert(); // for any cleanup
 229.246 -	IMPORT_C virtual CConverterBase* EmbeddedObjectL(TDataType& aType);
 229.247 -	IMPORT_C virtual TBool GetEmbeddedFileName(TFileName& aFileName);
 229.248 -	IMPORT_C virtual void ExtendedInterfaceL(TUid aInterfaceUid, CBase*& aInterface); 
 229.249 -	};
 229.250 -
 229.251 -
 229.252 -class CConverterLibrary : public CBase
 229.253 -/** A converter DLL's factory for individual CConverterBase-derived objects.
 229.254 -
 229.255 -The implementor of a converter DLL should implement this class. 
 229.256 -
 229.257 -@publishedAll 
 229.258 -@deprecated */
 229.259 -	{
 229.260 -public:
 229.261 -	/** Creates and returns an instance of the converter with the specified UID.
 229.262 -	
 229.263 -	This class should not allocate any resources that are not returned to the 
 229.264 -	caller.
 229.265 -	
 229.266 -	@param aUid UID of the converter to create
 229.267 -	@return The specified converter. If the converter does not implement a converter 
 229.268 -	associated with the UID, then it should return NULL. */
 229.269 -	virtual CConverterBase* Converter(TUid aUid)=0;	// passes ownership
 229.270 -	};
 229.271 -
 229.272 -class CConverterBase2 : public CConverterBase
 229.273 -/** Base Class for Ecom Style Converters
 229.274 -The methods in CConverterBase2 are inherited from CConverterBase
 229.275 -
 229.276 -There are two flavours of conversion methods:
 229.277 -
 229.278 -the synchronous interfaces, ConvertL() and ConvertObjectL(), which perform 
 229.279 -the specified conversion and then return
 229.280 -
 229.281 -the asynchronous interfaces, ConvertAL() and ConvertObjectAL(), which initialise 
 229.282 -the converter object, and allow the client code to call DoConvertL() a number 
 229.283 -of times until the conversion is complete or abandoned.
 229.284 -
 229.285 -@publishedAll
 229.286 -@released  */
 229.287 -	{
 229.288 -public:
 229.289 -	static CConverterBase2* CreateConverterL(TUid aImplUid);
 229.290 -	IMPORT_C virtual ~CConverterBase2(); 
 229.291 -	IMPORT_C virtual void ConvertL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // These default to calling the async versions in a loop
 229.292 -	IMPORT_C virtual void ConvertObjectL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL);
 229.293 -	IMPORT_C virtual void ConvertAL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 229.294 -	IMPORT_C virtual void ConvertObjectAL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 229.295 -	IMPORT_C virtual TBool DoConvertL(); // these default to leaving with KErrNotSupported
 229.296 -	virtual  TUid Uid()=0;
 229.297 -	IMPORT_C virtual TInt Capabilities(); // defaults to "everything"
 229.298 -	IMPORT_C virtual void CancelConvert(); // for any cleanup
 229.299 -	IMPORT_C virtual CConverterBase* EmbeddedObjectL(TDataType& aType);
 229.300 -	IMPORT_C virtual TBool GetEmbeddedFileName(TFileName& aFileName);
 229.301 -	IMPORT_C virtual void ExtendedInterfaceL(TUid aInterfaceUid, CBase*& aInterface);
 229.302 -	IMPORT_C virtual void Reserved_1();
 229.303 -	IMPORT_C virtual void Reserved_2();
 229.304 -private:
 229.305 -	TUid iDestructionKey;
 229.306 -	TInt iSpare;
 229.307 -	};
 229.308 -#endif
   230.1 --- a/epoc32/include/concnf.h	Tue Mar 16 16:12:26 2010 +0000
   230.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   230.3 @@ -1,180 +0,0 @@
   230.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   230.5 -// All rights reserved.
   230.6 -// This component and the accompanying materials are made available
   230.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   230.8 -// which accompanies this distribution, and is available
   230.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  230.10 -//
  230.11 -// Initial Contributors:
  230.12 -// Nokia Corporation - initial contribution.
  230.13 -//
  230.14 -// Contributors:
  230.15 -//
  230.16 -// Description:
  230.17 -//
  230.18 -
  230.19 -#if !defined(__CONCNF_H__)
  230.20 -#define __CONCNF_H__
  230.21 -
  230.22 -#include <e32base.h>
  230.23 -#include <f32file.h>
  230.24 -#include <s32stor.h>
  230.25 -#include <apmstd.h>
  230.26 -#include <barsc.h>
  230.27 -#include <barsread.h>
  230.28 -
  230.29 -/**
  230.30 -@publishedAll 
  230.31 -@released 
  230.32 -*/
  230.33 -#define KMaxTranslation 50
  230.34 -
  230.35 -/** Buffer to contain a localised data type name. 
  230.36 -
  230.37 -@publishedAll 
  230.38 -@released */
  230.39 -typedef TBuf<KMaxTranslation> TTranslation;
  230.40 -
  230.41 -
  230.42 -class TLanguageInfo
  230.43 -/** Holds a localised name for a data type. 
  230.44 -
  230.45 -@publishedAll 
  230.46 -@released */
  230.47 -	{
  230.48 -public:
  230.49 -	TLanguageInfo();
  230.50 -	IMPORT_C TLanguageInfo(TLanguage aLanguage,TTranslation aTranslation);
  230.51 -public:
  230.52 -	void InternalizeL(RReadStream& aStream);
  230.53 -	void ExternalizeL(RWriteStream& aStream) const;
  230.54 -	TLanguage Language();
  230.55 -	TTranslation Translation();
  230.56 -	void ReadFromResource(TResourceReader& aReader);
  230.57 -public:
  230.58 -	TLanguage	iLanguage;
  230.59 -	TTranslation iTranslation;
  230.60 -	};
  230.61 -
  230.62 -class CMimeInfo : public CBase
  230.63 -/** Holds the localised names for a data type.
  230.64 -
  230.65 -@publishedAll
  230.66 -@released */
  230.67 -	{
  230.68 -public:
  230.69 -	IMPORT_C ~CMimeInfo();
  230.70 -	IMPORT_C static CMimeInfo* NewLC(TDataType& aMime);
  230.71 -	static CMimeInfo* NewL();
  230.72 -	static CMimeInfo* NewLC(const CMimeInfo* aInfo);
  230.73 -public:
  230.74 -	void InternalizeL(RReadStream& aStream);
  230.75 -	void ExternalizeL(RWriteStream& aStream) const;
  230.76 -	TDataType Mime();
  230.77 -	TTranslation Text();
  230.78 -	IMPORT_C void AddLanguageL(TLanguageInfo aLang);
  230.79 -	static CMimeInfo* NewLC(TResourceReader& aReader);
  230.80 -private:
  230.81 -	void ConstructL();
  230.82 -	void ConstructL(TResourceReader& aReader);
  230.83 -	void AddLanguageInfoL(TResourceReader& aReader);
  230.84 -private:
  230.85 -	TDataType iMime;
  230.86 -	CArrayFixFlat<TLanguageInfo> *iLanguageInfo;
  230.87 -	};
  230.88 -
  230.89 -class CCnaConverter : public CBase
  230.90 -/** Holds the inherent properties of a converter. 
  230.91 -
  230.92 -These are its UID and the data types it supports.
  230.93 -
  230.94 -Note that the setter functions affect only the current object, not the stored 
  230.95 -information for the converter.
  230.96 -
  230.97 -@publishedAll
  230.98 -@released */
  230.99 -	{
 230.100 -public:
 230.101 -	static CCnaConverter* NewLC();
 230.102 -	static CCnaConverter* NewL();
 230.103 -	IMPORT_C static CCnaConverter* NewL(TUid aUid);
 230.104 -	IMPORT_C static CCnaConverter* NewLC(TUid aUid);
 230.105 -	IMPORT_C static CCnaConverter* NewL(const CCnaConverter& aConverter);
 230.106 -	IMPORT_C static CCnaConverter* NewLC(const CCnaConverter& aConverter);
 230.107 -	IMPORT_C ~CCnaConverter();
 230.108 -	IMPORT_C void SetUid(TUid aUid);
 230.109 -	IMPORT_C TBool MimeFrom(const TDataType& aMimeType) const;
 230.110 -	IMPORT_C TBool MimeTo(const TDataType& aMimeType) const;
 230.111 -	IMPORT_C TTranslation MimeFromText(const TDataType& aMimeType) const;
 230.112 -	IMPORT_C TTranslation MimeToText(const TDataType& aMimeType) const;
 230.113 -	IMPORT_C TInt CountFrom() const;
 230.114 -	IMPORT_C TInt CountTo() const;
 230.115 -	IMPORT_C TDataType MimeFrom(TInt aIndex) const;
 230.116 -	IMPORT_C TDataType MimeTo(TInt aIndex) const;
 230.117 -	IMPORT_C TTranslation MimeFromText(TInt aIndex) const;
 230.118 -	IMPORT_C TTranslation MimeToText(TInt aIndex) const;
 230.119 -	inline TUid Uid() const;
 230.120 -	static CCnaConverter* NewL(TUid aUid,TResourceReader& aReader);	
 230.121 -private:
 230.122 -	CCnaConverter();
 230.123 -	void ConstructL();
 230.124 -	TBool FindMime(const TDataType& aMimeType, const CArrayPtrFlat<CMimeInfo>* aList) const;
 230.125 -	TTranslation FindMimeText(const TDataType& aMimeType, const CArrayPtrFlat<CMimeInfo>* aList) const;
 230.126 -	void ConstructL(TUid aUid,TResourceReader& aReader);
 230.127 -	void AddMimeDataL(TResourceReader& aReader, CArrayPtrFlat<CMimeInfo>& aMimeInfo);
 230.128 -private:
 230.129 -	TUid iUid;
 230.130 -	CArrayPtrFlat<CMimeInfo>* iMimeFrom;
 230.131 -	CArrayPtrFlat<CMimeInfo>* iMimeTo;
 230.132 -	};
 230.133 -
 230.134 -inline TUid CCnaConverter::Uid() const
 230.135 -/** Gets the converter UID.
 230.136 -
 230.137 -@return Converter UID */
 230.138 -	{return iUid;}
 230.139 -
 230.140 -class CCnaConvInfoFile2 : public CBase
 230.141 -/**
 230.142 -implementation class
 230.143 -@internalComponent
 230.144 -*/
 230.145 -	{
 230.146 -public:
 230.147 -	~CCnaConvInfoFile2();
 230.148 -	//
 230.149 -protected:
 230.150 -	void ConstructL();
 230.151 -protected:
 230.152 -	RFs iFs;
 230.153 -	RResourceFile iResourceFile;
 230.154 -	CArrayPtr<CCnaConverter>* iConverters;
 230.155 -	};
 230.156 -
 230.157 -/** Encapsulates a collection of converter properties (CCnaConverter) read from a converter 
 230.158 -information (.rsc) file.
 230.159 -
 230.160 -@publishedAll
 230.161 -@released
 230.162 -*/
 230.163 -// Each RSC file contains CCnaConverter information for each
 230.164 -// available CConverterBase2 derived class in its associated DLL.
 230.165 -
 230.166 -// In addition there may be INI files for each converter which supply run time extended
 230.167 -// CCnaConverter information such as additional mime types.
 230.168 -class CCnaConvInfoFileReader2 : public CCnaConvInfoFile2
 230.169 -	{
 230.170 -public:
 230.171 -	IMPORT_C static CCnaConvInfoFileReader2* NewLC(const TDesC& aFileName);
 230.172 -	IMPORT_C static CCnaConvInfoFileReader2* NewL(const TDesC& aFileName);
 230.173 -	IMPORT_C TInt Count();
 230.174 -	IMPORT_C CCnaConverter* AtL(TInt anIndex);
 230.175 -	//
 230.176 -	IMPORT_C void RestoreL();
 230.177 -private:
 230.178 -	CCnaConvInfoFileReader2();
 230.179 -	void RestoreConverterL(TResourceReader& aReader);
 230.180 -	void ConstructL(const TDesC& aFileName);
 230.181 -	};
 230.182 -
 230.183 -#endif
   231.1 --- a/epoc32/include/confndr.h	Tue Mar 16 16:12:26 2010 +0000
   231.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   231.3 @@ -1,16 +0,0 @@
   231.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   231.5 -// All rights reserved.
   231.6 -// This component and the accompanying materials are made available
   231.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   231.8 -// which accompanies this distribution, and is available
   231.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  231.10 -//
  231.11 -// Initial Contributors:
  231.12 -// Nokia Corporation - initial contribution.
  231.13 -//
  231.14 -// Contributors:
  231.15 -//
  231.16 -// Description:
  231.17 -// This header is useless but we still export it to maintain SC. Should be removed when possible.
  231.18 -// 
  231.19 -//
   232.1 --- a/epoc32/include/conlist.h	Tue Mar 16 16:12:26 2010 +0000
   232.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   232.3 @@ -1,116 +0,0 @@
   232.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   232.5 -// All rights reserved.
   232.6 -// This component and the accompanying materials are made available
   232.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   232.8 -// which accompanies this distribution, and is available
   232.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  232.10 -//
  232.11 -// Initial Contributors:
  232.12 -// Nokia Corporation - initial contribution.
  232.13 -//
  232.14 -// Contributors:
  232.15 -//
  232.16 -// Description:
  232.17 -//
  232.18 -
  232.19 -#if !defined(__CONLIST_H__)
  232.20 -#define __CONLIST_H__
  232.21 -
  232.22 -#if !defined(__E32BASE_H__)
  232.23 -#include <e32base.h>
  232.24 -#endif
  232.25 -
  232.26 -#if !defined(__F32FILE_H__)
  232.27 -#include <f32file.h>
  232.28 -#endif
  232.29 -
  232.30 -#if !defined(__CONARC_H__)
  232.31 -#include <conarc.h>
  232.32 -#endif
  232.33 -
  232.34 -#if !defined(__CONCNF_H__)
  232.35 -#include <concnf.h>
  232.36 -#endif
  232.37 -
  232.38 -#if !defined(__IMPLEMENTATION_INFORMATION_H__)
  232.39 -#include <ecom/implementationinformation.h>
  232.40 -#endif
  232.41 -#if !defined(__ECOM_H__)
  232.42 -#include <ecom/ecom.h>
  232.43 -#endif
  232.44 -
  232.45 -
  232.46 -/** Creates a converter dll's factory interface object.
  232.47 -
  232.48 -@publishedAll
  232.49 -@deprecated
  232.50 -*/
  232.51 -typedef CConverterLibrary* (*CreateCConverterLibrary)(); 
  232.52 -
  232.53 -struct SConverterInfo
  232.54 -/** Describes a converter, as obtained from a converter list (CCnaConverterList).
  232.55 -
  232.56 -@publishedAll
  232.57 -@released
  232.58 -@see CCnaConverterList */
  232.59 -	{
  232.60 -	/** Localised name of the data type. */
  232.61 -	TTranslation iTranslation;
  232.62 -	/** Converter UID. */
  232.63 -	TUid iUid;
  232.64 -	/** Position of the converter in the list. */
  232.65 -	TInt iIndex;
  232.66 -	};
  232.67 -
  232.68 -class CCnaConverterList : public CBase
  232.69 -/** Provides a list of available converters, allowing clients to search for and 
  232.70 -obtain converters for specific source and target data types. 
  232.71 -
  232.72 -@publishedAll
  232.73 -@released */
  232.74 -	{
  232.75 -public:
  232.76 -	IMPORT_C static CCnaConverterList* NewL();
  232.77 -	IMPORT_C static CCnaConverterList* NewLC();
  232.78 -	IMPORT_C void Release();
  232.79 -	IMPORT_C ~CCnaConverterList();
  232.80 -//
  232.81 -	IMPORT_C TInt CountL();
  232.82 -	inline TInt Count();
  232.83 -	IMPORT_C CConverterBase* NewConverterL(TUid aUid);
  232.84 -	IMPORT_C void UpdateL();
  232.85 -	IMPORT_C TUid ConvFromL(const TDataType& aMimeType); // searches for a particular converter
  232.86 -	IMPORT_C TUid ConvToL(const TDataType& aMimeType);
  232.87 -	IMPORT_C TUid ConverterL(const TDataType& aFrom,const TDataType& aTo);
  232.88 -	IMPORT_C void ConvFromListL(const TDataType& aMimeType,CArrayFix<SConverterInfo>* aSConverterInfoArray);
  232.89 -	IMPORT_C void ConvToListL(const TDataType& aMimeType,CArrayFix<SConverterInfo>* aSConverterInfoArray);
  232.90 -	IMPORT_C TInt MimeTypeFrom(TDataType& aDataType,const SConverterInfo& aConverterInfo) const;
  232.91 -	IMPORT_C TInt MimeTypeTo(TDataType& aDataType,const SConverterInfo& aConverterInfo) const;
  232.92 -private:
  232.93 -	CCnaConverterList();
  232.94 -	void ConstructL();
  232.95 -	CConverterBase* LoadConverterL(TUid aImplUid);
  232.96 -private:
  232.97 -	TBool iDoneScan;
  232.98 -	CArrayPtr<CCnaConverter>* iConverters;
  232.99 -	RImplInfoPtrArray iImplementationArray;
 232.100 -	};
 232.101 -
 232.102 -class ConverterListUtil
 232.103 -/** @internalComponent */
 232.104 -	{
 232.105 -public:
 232.106 -	static CConverterBase* UtilityConverterL(TUid aUid);
 232.107 -	static TInt CountUtilityConverters();
 232.108 -	};
 232.109 -
 232.110 -inline TInt CCnaConverterList::Count()
 232.111 -/** @deprecated
 232.112 -
 232.113 -Deprecated - Use CCnaConverterList::CountL instead. 
 232.114 -Rescan of the disk to refresh the list of converters could leave. */
 232.115 -	{
 232.116 -	return CountL();
 232.117 -	}
 232.118 -
 232.119 -#endif
   233.1 --- a/epoc32/include/conplugin.rh	Tue Mar 16 16:12:26 2010 +0000
   233.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   233.3 @@ -1,95 +0,0 @@
   233.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   233.5 -// All rights reserved.
   233.6 -// This component and the accompanying materials are made available
   233.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   233.8 -// which accompanies this distribution, and is available
   233.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  233.10 -//
  233.11 -// Initial Contributors:
  233.12 -// Nokia Corporation - initial contribution.
  233.13 -//
  233.14 -// Contributors:
  233.15 -//
  233.16 -// Description:
  233.17 -// HEADER INFO
  233.18 -// Describes the converter.
  233.19 -// 
  233.20 -//
  233.21 -
  233.22 -
  233.23 -
  233.24 -/**
  233.25 - @publishedAll 
  233.26 - @released 
  233.27 -*/
  233.28 -STRUCT CONARC_RESOURCE_FILE
  233.29 -	{
  233.30 -	/** Future use, do not use */
  233.31 -	LLINK extension = 0;
  233.32 -	//
  233.33 -	LEN WORD STRUCT converter_list[]; // Converter_data
  233.34 -	}
  233.35 -
  233.36 -STRUCT CONVERTER_DATA
  233.37 -/** Describes a converter within a converter DLL.
  233.38 -
  233.39 -@publishedAll 
  233.40 -@released */
  233.41 -	{
  233.42 -	/** Future use, do not use */
  233.43 -	LLINK extension = 0;
  233.44 -	/** The UID of the converter. */
  233.45 -	LONG conv_uid;
  233.46 -	//
  233.47 -	/** Array of MIME resources describing the data types that the converter can convert. 
  233.48 -	
  233.49 -	Target type: MIME */
  233.50 -	LEN WORD STRUCT from_list[]; // Mime Type
  233.51 -	/** Array of MIME resources describing the data types to which the converter can convert. 
  233.52 -	
  233.53 -	Target type: MIME */
  233.54 -	LEN WORD STRUCT to_list[]; // Mime Type
  233.55 -	//
  233.56 -	}
  233.57 -
  233.58 -/**
  233.59 -@publishedAll 
  233.60 -@released 
  233.61 -*/
  233.62 -#define KMaxMimeType 256
  233.63 -
  233.64 -/**
  233.65 -@publishedAll 
  233.66 -@released 
  233.67 -*/
  233.68 -#define KMaxTranslation 50
  233.69 -
  233.70 -STRUCT MIME
  233.71 -/** Describes a data type that a converter can convert to or from.
  233.72 -
  233.73 -@publishedAll 
  233.74 -@released */
  233.75 -	{
  233.76 -	/** Future use, do not use */
  233.77 -	LLINK extension = 0;
  233.78 -	/** The supported MIME type, e.g. text/html. */
  233.79 -	LTEXT8 type(KMaxMimeType);
  233.80 -	/** Array of LANG_DATA resources giving localised human-readable names for the MIME type. 
  233.81 -	
  233.82 -	Target type: LANG_DATA */
  233.83 -	LEN WORD STRUCT lang_list[] ; //lang_data
  233.84 -	}
  233.85 -
  233.86 -STRUCT LANG_DATA
  233.87 -/** A localised human-readable name for a MIME type.
  233.88 -
  233.89 -@publishedAll 
  233.90 -@released */
  233.91 -	{
  233.92 -	/** Future use, do not use */
  233.93 -	LLINK extension = 0;
  233.94 -	/** The ID of the language being used.Values should be as defined in TLanguage. */
  233.95 -	WORD lang_id;
  233.96 -	/** The human-readable name for the MIME type. */
  233.97 -	LTEXT	translation(KMaxTranslation);
  233.98 -	}
   234.1 --- a/epoc32/include/crulemarkedstack.h	Tue Mar 16 16:12:26 2010 +0000
   234.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   234.3 @@ -1,46 +0,0 @@
   234.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   234.5 -// All rights reserved.
   234.6 -// This component and the accompanying materials are made available
   234.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   234.8 -// which accompanies this distribution, and is available
   234.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  234.10 -//
  234.11 -// Initial Contributors:
  234.12 -// Nokia Corporation - initial contribution.
  234.13 -//
  234.14 -// Contributors:
  234.15 -//
  234.16 -// Description:
  234.17 -// A speciales marked stack specifically for PARSE rules.
  234.18 -// Allows a rule stack to merge rules upto a given mark type.
  234.19 -// 
  234.20 -//
  234.21 -
  234.22 -#ifndef __CRULEMARKEDSTACK_H__
  234.23 -#define __CRULEMARKEDSTACK_H__
  234.24 -
  234.25 -
  234.26 -// includes
  234.27 -#include <e32base.h>
  234.28 -#include <cmarkedstack.h>
  234.29 -#include <cbnfnode.h>
  234.30 -
  234.31 -#pragma warning (disable : 4127) // conditional expression is constant
  234.32 -
  234.33 -
  234.34 -template <TBool StackOwnsEntry>
  234.35 -class CRuleMarkedStack : public CMarkedStack<CBNFNode, StackOwnsEntry>
  234.36 -/**	
  234.37 -@publishedAll
  234.38 -@released
  234.39 -*/
  234.40 -	{
  234.41 -public:
  234.42 -	void MergeToMarkL(TInt aMarkType);
  234.43 -	};
  234.44 -
  234.45 -#include <crulemarkedstack.inl>
  234.46 -
  234.47 -#pragma warning ( default : 4127 ) // conditional expression is constant
  234.48 -
  234.49 -#endif // __CRULEMARKEDSTACK_H__
   235.1 --- a/epoc32/include/csendasaccounts.h	Tue Mar 16 16:12:26 2010 +0000
   235.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   235.3 @@ -1,75 +0,0 @@
   235.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   235.5 -// All rights reserved.
   235.6 -// This component and the accompanying materials are made available
   235.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   235.8 -// which accompanies this distribution, and is available
   235.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  235.10 -//
  235.11 -// Initial Contributors:
  235.12 -// Nokia Corporation - initial contribution.
  235.13 -//
  235.14 -// Contributors:
  235.15 -//
  235.16 -// Description:
  235.17 -//
  235.18 -
  235.19 -#ifndef __CSENDASACCOUNTS_H__
  235.20 -#define __CSENDASACCOUNTS_H__
  235.21 -
  235.22 -#include <e32base.h>
  235.23 -#include <badesca.h>
  235.24 -#include <msvstd.h>
  235.25 -
  235.26 -// Forward declarations
  235.27 -class RReadStream;
  235.28 -class RWriteStream;
  235.29 -
  235.30 -/**
  235.31 -Identifies accounts for use by SendAs.
  235.32 -
  235.33 -@publishedAll
  235.34 -@released
  235.35 -*/
  235.36 -typedef TMsvId TSendAsAccount;
  235.37 -
  235.38 -/**
  235.39 -Provides human-readable names and IDs for the list of accounts for a given
  235.40 -message type.
  235.41 -
  235.42 -@publishedAll
  235.43 -@released
  235.44 -*/
  235.45 -class CSendAsAccounts : public CBase
  235.46 -	{
  235.47 -public:
  235.48 -	IMPORT_C static CSendAsAccounts* NewL();
  235.49 -	IMPORT_C virtual ~CSendAsAccounts();
  235.50 -	
  235.51 -	IMPORT_C TUid MessageType() const;
  235.52 -	IMPORT_C void SetMessageType(TUid aMessageType);
  235.53 -
  235.54 -	IMPORT_C const MDesCArray& AccountNames() const;
  235.55 -	IMPORT_C TSendAsAccount Account(TInt aIndex) const;
  235.56 -	IMPORT_C TPtrC NameFromAccountL(const TSendAsAccount aAccount) const;
  235.57 -	IMPORT_C TSendAsAccount AccountFromNameL(const TDesC& aName) const;
  235.58 -	IMPORT_C TInt Count() const;
  235.59 -	IMPORT_C void Reset();
  235.60 -
  235.61 -	IMPORT_C void InternalizeL(RReadStream& aReadStream);
  235.62 -	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const;
  235.63 -	
  235.64 -	IMPORT_C void AppendAccountL(const TDesC& aAccountName, TSendAsAccount aAccount);
  235.65 -	IMPORT_C void RemoveAccount(TInt aIndex);
  235.66 -	IMPORT_C TInt Size() const;
  235.67 -	
  235.68 -private:
  235.69 -	CSendAsAccounts();
  235.70 -	void ConstructL();
  235.71 -	
  235.72 -private:
  235.73 -	TUid 					iMessageType;
  235.74 -	CDesCArrayFlat*			iAccountNames;
  235.75 -	RArray<TSendAsAccount>	iAccounts;
  235.76 -	};
  235.77 -
  235.78 -#endif	// __CSENDASACCOUNTS_H__
   236.1 --- a/epoc32/include/csendasmessagetypes.h	Tue Mar 16 16:12:26 2010 +0000
   236.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   236.3 @@ -1,61 +0,0 @@
   236.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   236.5 -// All rights reserved.
   236.6 -// This component and the accompanying materials are made available
   236.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   236.8 -// which accompanies this distribution, and is available
   236.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  236.10 -//
  236.11 -// Initial Contributors:
  236.12 -// Nokia Corporation - initial contribution.
  236.13 -//
  236.14 -// Contributors:
  236.15 -//
  236.16 -// Description:
  236.17 -//
  236.18 -
  236.19 -#ifndef __CSENDASMESSAGETYPES_H__
  236.20 -#define __CSENDASMESSAGETYPES_H__
  236.21 -
  236.22 -#include <e32base.h>
  236.23 -#include <badesca.h>
  236.24 -
  236.25 -// Forward declarations
  236.26 -class RReadStream;
  236.27 -class RWriteStream;
  236.28 -
  236.29 -/**
  236.30 -Provides human-readable names and UIDs for the filtered list of message types.
  236.31 -
  236.32 -@publishedAll
  236.33 -@released
  236.34 -*/
  236.35 -class CSendAsMessageTypes : public CBase
  236.36 -	{
  236.37 -public:
  236.38 -	IMPORT_C static CSendAsMessageTypes* NewL();
  236.39 -	IMPORT_C virtual ~CSendAsMessageTypes();
  236.40 -	
  236.41 -	IMPORT_C const MDesCArray& AvailableMessageTypes() const;
  236.42 -	IMPORT_C TUid MessageTypeUid(TInt aIndex) const;
  236.43 -	IMPORT_C TPtrC NameFromUidL(const TUid aUid) const;
  236.44 -	IMPORT_C TUid UidFromNameL(const TDesC& aName) const;
  236.45 -	IMPORT_C TInt Count() const;
  236.46 -	IMPORT_C void Reset();
  236.47 -
  236.48 -	IMPORT_C void InternalizeL(RReadStream& aReadStream);
  236.49 -	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const;
  236.50 -	
  236.51 -	IMPORT_C void AppendMessageTypeL(const TDesC& aMessageTypeName,	TUid aMessageTypeUid);
  236.52 -	IMPORT_C void RemoveMessageType(TInt aIndex);
  236.53 -	IMPORT_C TInt Size() const;
  236.54 -	
  236.55 -private:
  236.56 -	CSendAsMessageTypes();
  236.57 -	void ConstructL();
  236.58 -	
  236.59 -private:
  236.60 -	CDesCArrayFlat* iMessageTypeNames;
  236.61 -	RArray<TUid>	iMessageTypeUids;
  236.62 -	};
  236.63 -
  236.64 -#endif	// __CSENDASMESSAGETYPES_H__
   237.1 --- a/epoc32/include/csmsaccount.h	Tue Mar 16 16:12:26 2010 +0000
   237.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   237.3 @@ -1,96 +0,0 @@
   237.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   237.5 -// All rights reserved.
   237.6 -// This component and the accompanying materials are made available
   237.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   237.8 -// which accompanies this distribution, and is available
   237.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  237.10 -//
  237.11 -// Initial Contributors:
  237.12 -// Nokia Corporation - initial contribution.
  237.13 -//
  237.14 -// Contributors:
  237.15 -//
  237.16 -// Description:
  237.17 -//
  237.18 -
  237.19 -#ifndef __CSMSACCOUNT_H__
  237.20 -#define __CSMSACCOUNT_H__
  237.21 -
  237.22 -
  237.23 -#include <e32base.h>
  237.24 -#include <msvapi.h>
  237.25 -
  237.26 -
  237.27 -class CSmsSettings;
  237.28 -class CMsvOffPeakTimes;
  237.29 -class CMsvScheduleSettings;
  237.30 -class CMsvSendErrorActions;
  237.31 -class CMsvSysAgentActions;
  237.32 -class CRepository;
  237.33 -
  237.34 -
  237.35 -/**
  237.36 -Stores SMS service and Schedule Send settings to Central Repository. 
  237.37 -
  237.38 -@publishedAll
  237.39 -@released
  237.40 -*/
  237.41 -class CSmsAccount : public CBase, public MMsvSessionObserver
  237.42 -	{
  237.43 -public:
  237.44 -
  237.45 -	IMPORT_C static CSmsAccount* NewL();
  237.46 -	IMPORT_C static CSmsAccount* NewLC();
  237.47 -	IMPORT_C virtual ~CSmsAccount();
  237.48 -
  237.49 -	IMPORT_C void InitialiseDefaultSettingsL(CSmsSettings& aSmsSettings);
  237.50 -	IMPORT_C void InitialiseDefaultSettingsL(CMsvScheduleSettings& aScheduleSettings, CMsvOffPeakTimes& aOffPeakTimes, CMsvSendErrorActions& aErrorActions, CMsvSysAgentActions& aSysAgentActions);
  237.51 -	IMPORT_C void LoadSettingsL(CSmsSettings& aSmsSettings);
  237.52 -	IMPORT_C void LoadSettingsL(CMsvScheduleSettings& aScheduleSettings, CMsvOffPeakTimes& aOffPeakTimes, CMsvSendErrorActions& aErrorActions, CMsvSysAgentActions& aSysAgentActions);
  237.53 -    IMPORT_C void SaveSettingsL(const CSmsSettings& aSmsSettings) const;
  237.54 -	IMPORT_C void SaveSettingsL(const CMsvScheduleSettings& aScheduleSettings, const CMsvOffPeakTimes& aOffPeakTimes, const CMsvSendErrorActions& aErrorActions, const CMsvSysAgentActions& aSysAgentActions) const;
  237.55 -
  237.56 -private:
  237.57 -	CSmsAccount();
  237.58 -	void ConstructL();
  237.59 -	void HandleSessionEventL(TMsvSessionEvent , TAny* , TAny* , TAny* );
  237.60 -	CMsvSession& SessionL();	
  237.61 -	
  237.62 -	TMsvId CreateSmsServiceL();
  237.63 -	void ResetSettings();
  237.64 -
  237.65 -private:
  237.66 -	enum TSmsSettingsCenRepId
  237.67 -		{
  237.68 -		// Service Settings		
  237.69 -		ESmsServiceId					= 0x00000000,
  237.70 -		ESmsSettingsVersionId			= 0x00000001,
  237.71 -		ESmsSettingsMesssageVersionId	= 0x00000002,
  237.72 -		ESmsValidityPeriodId			= 0x00000003,
  237.73 -		ESmsValidityPeriodFormatId	   	= 0x00000004,     	
  237.74 -		ESmsAlphabetId					= 0x00000005,
  237.75 -		ESmsMsgFlagsId					= 0x00000006,
  237.76 -		ESmsMessageConversionId			= 0x00000007,
  237.77 -		ESmsFlagsId						= 0x00000008,
  237.78 -		ESmsStatusReportHandlingId		= 0x00000009,
  237.79 -		ESmsSpecialMessageHandlingId	= 0x0000000A,
  237.80 -		ESmsCommDbActionId				= 0x0000000B,
  237.81 -		ESmsDeliveryId					= 0x0000000C,
  237.82 -		ESmsDefaultSCId					= 0x0000000D,
  237.83 -		ESmsSCAddressesCountId			= 0x0000000E,
  237.84 -		ESmsBearerActionId				= 0x0000000F,
  237.85 -		ESmsBearerId					= 0x00000010,
  237.86 -		ESmsClass2FolderId				= 0x00000020,
  237.87 -		ESmsDescriptionLengthId			= 0x00000030,
  237.88 -		ESmsAccountNameId				= 0x00000040,
  237.89 -		
  237.90 -		ESmsSCAddressesPartialId		= 0x00001000,
  237.91 -		EMsgSMSTimeStampSettings		= 0x000A0020
  237.92 -		};
  237.93 -
  237.94 -private:
  237.95 -	CMsvSession* iMsvSession;
  237.96 -	CRepository* iRepository;
  237.97 -	};
  237.98 -
  237.99 -#endif // __CSMSACCOUNT_H__
   238.1 --- a/epoc32/include/csmsclass0base.h	Tue Mar 16 16:12:26 2010 +0000
   238.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   238.3 @@ -1,42 +0,0 @@
   238.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   238.5 -// All rights reserved.
   238.6 -// This component and the accompanying materials are made available
   238.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   238.8 -// which accompanies this distribution, and is available
   238.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  238.10 -//
  238.11 -// Initial Contributors:
  238.12 -// Nokia Corporation - initial contribution.
  238.13 -//
  238.14 -// Contributors:
  238.15 -//
  238.16 -// Description:
  238.17 -// Base class for Class 0 SMS plugin
  238.18 -// 
  238.19 -//
  238.20 -
  238.21 -
  238.22 -
  238.23 -/**
  238.24 - @publishedAll
  238.25 - @released
  238.26 -*/
  238.27 -
  238.28 -#ifndef __CSMSCLASS0BASE_H_
  238.29 -#define __CSMSCLASS0BASE_H_
  238.30 -
  238.31 -#include <e32base.h>
  238.32 -
  238.33 -class CSmsClass0Base : public CBase
  238.34 -	{
  238.35 -
  238.36 -public:
  238.37 -	virtual void DisplayMessageHandler(TDesC8& aSmsMessage, TBool aComplete);
  238.38 -	~CSmsClass0Base();
  238.39 -
  238.40 -protected:
  238.41 -	CSmsClass0Base();
  238.42 -	
  238.43 -	};
  238.44 -
  238.45 -#endif
   239.1 --- a/epoc32/include/csmsemailfields.h	Tue Mar 16 16:12:26 2010 +0000
   239.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   239.3 @@ -1,65 +0,0 @@
   239.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   239.5 -// All rights reserved.
   239.6 -// This component and the accompanying materials are made available
   239.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   239.8 -// which accompanies this distribution, and is available
   239.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  239.10 -//
  239.11 -// Initial Contributors:
  239.12 -// Nokia Corporation - initial contribution.
  239.13 -//
  239.14 -// Contributors:
  239.15 -//
  239.16 -// Description:
  239.17 -//
  239.18 -
  239.19 -#ifndef __CSMSEMAILFIELDS_H__
  239.20 -#define __CSMSEMAILFIELDS_H__
  239.21 -
  239.22 -#include <e32base.h>
  239.23 -#include <s32file.h>
  239.24 -#include <badesca.h>
  239.25 -
  239.26 -class CMsvStore;
  239.27 -
  239.28 -/**
  239.29 -Encapsulates the address and subject fields for Email sent over SMS.
  239.30 -
  239.31 -@publishedAll
  239.32 -@released
  239.33 -*/
  239.34 -class CSmsEmailFields : public CBase
  239.35 -	{
  239.36 -public:
  239.37 -	IMPORT_C static CSmsEmailFields* NewL();
  239.38 -	IMPORT_C static CSmsEmailFields* NewL(const CSmsEmailFields& aEmailFields);
  239.39 -	IMPORT_C virtual ~CSmsEmailFields();
  239.40 -
  239.41 -	IMPORT_C void Reset();
  239.42 -	IMPORT_C TInt Length() const;
  239.43 -	IMPORT_C TBool HasAddress() const;
  239.44 -	IMPORT_C HBufC* ComposeLC() const;
  239.45 -	TInt ParseL(const TDesC& aBuffer);
  239.46 -
  239.47 -	IMPORT_C void AddAddressL(const TDesC& aAddress);
  239.48 -	IMPORT_C void RemoveAddress(TInt aIndex);
  239.49 -	IMPORT_C const MDesCArray& Addresses() const;
  239.50 -	
  239.51 -	IMPORT_C void SetSubjectL(const TDesC& aSubject);
  239.52 -	IMPORT_C const TDesC& Subject() const;
  239.53 -	
  239.54 -	void RestoreL(CMsvStore& aStore);
  239.55 -	void StoreL(CMsvStore& aStore) const;
  239.56 -private:
  239.57 -	CSmsEmailFields();
  239.58 -	void ConstructL();
  239.59 -	void ConstructL(const CSmsEmailFields& aEmailFields);
  239.60 -
  239.61 -	void InternalizeL(RReadStream& aStream);
  239.62 -	void ExternalizeL(RWriteStream& aStream) const;
  239.63 -private:	
  239.64 -	CDesCArray*		iAddresses;
  239.65 -	HBufC*			iSubject;
  239.66 -	};
  239.67 -
  239.68 -#endif	// __CSMSEMAILFIELDS_H__
   240.1 --- a/epoc32/include/cstack.h	Tue Mar 16 16:12:26 2010 +0000
   240.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   240.3 @@ -1,54 +0,0 @@
   240.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   240.5 -// All rights reserved.
   240.6 -// This component and the accompanying materials are made available
   240.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   240.8 -// which accompanies this distribution, and is available
   240.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  240.10 -//
  240.11 -// Initial Contributors:
  240.12 -// Nokia Corporation - initial contribution.
  240.13 -//
  240.14 -// Contributors:
  240.15 -//
  240.16 -// Description:
  240.17 -// A template class to provide a classic stack like interface & functionality
  240.18 -// The entries on the stack are owned (i.e. deleted) by the stack if the 
  240.19 -// StackOwnsEntry argument is ETrue
  240.20 -// 
  240.21 -//
  240.22 -
  240.23 -#ifndef __CSTACK_H__
  240.24 -#define __CSTACK_H__
  240.25 -
  240.26 -#include <e32base.h>
  240.27 -
  240.28 -#pragma warning (disable : 4127) // conditional expression is constant
  240.29 -
  240.30 -
  240.31 -/**	
  240.32 -	@file
  240.33 -	@publishedAll
  240.34 -	@released
  240.35 -*/
  240.36 -
  240.37 -
  240.38 -template <class T, TBool StackOwnsEntry>
  240.39 -class CStack : /*protected CArrayPtrSeg<T>*/ public CArrayPtrSeg<T>
  240.40 -	{
  240.41 -public:
  240.42 -	inline CStack();
  240.43 -	inline ~CStack();
  240.44 -
  240.45 -	inline void Clear();		
  240.46 -	inline TBool IsEmpty() const;
  240.47 -	inline void PushL(T* aItem);
  240.48 -	inline T* Pop();
  240.49 -	inline T* Head() const;
  240.50 -	inline T* Last() const;		
  240.51 -	};
  240.52 -
  240.53 -#include <cstack.inl>
  240.54 -
  240.55 -#pragma warning ( default : 4127 ) // conditional expression is constant
  240.56 -
  240.57 -#endif // __CSTACK_H__
   241.1 --- a/epoc32/include/dtdnode.h	Tue Mar 16 16:12:26 2010 +0000
   241.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   241.3 @@ -1,54 +0,0 @@
   241.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   241.5 -// All rights reserved.
   241.6 -// This component and the accompanying materials are made available
   241.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   241.8 -// which accompanies this distribution, and is available
   241.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  241.10 -//
  241.11 -// Initial Contributors:
  241.12 -// Nokia Corporation - initial contribution.
  241.13 -//
  241.14 -// Contributors:
  241.15 -//
  241.16 -// Description:
  241.17 -// DTD node header
  241.18 -// 
  241.19 -//
  241.20 -
  241.21 -#if !defined(__CDTDNODE_H__)
  241.22 -#define __CDTDNODE_H__
  241.23 -
  241.24 -#include <e32base.h>
  241.25 -#include <cbnfnode.h>
  241.26 -
  241.27 -class CDTDNode : public CBNFNode
  241.28 -/**
  241.29 -Document Type Definition (DTD) node that forms part of a DTD tree.
  241.30 -@publishedAll
  241.31 -@released
  241.32 -*/
  241.33 -{
  241.34 -public:
  241.35 -	//##ModelId=3B66675300CE
  241.36 -	inline ~CDTDNode();
  241.37 -
  241.38 -	//##ModelId=3B66675300CD
  241.39 -	static inline CDTDNode* NewL();
  241.40 -	//##ModelId=3B66675300CC
  241.41 -	inline void AddCompletedAttributeL();
  241.42 -
  241.43 -	//##ModelId=3B66675300C4
  241.44 -	const TDesC* CompletedAttrID();
  241.45 -
  241.46 -	enum{ // attribute IDs start at -6000
  241.47 -		KCompletedAttrID = -6000
  241.48 -	};
  241.49 -private:
  241.50 -	//##ModelId=3B66675300C3
  241.51 -	inline CDTDNode();
  241.52 -};
  241.53 -
  241.54 -
  241.55 -#include <dtdnode.inl>
  241.56 -
  241.57 -#endif // __CDTDNODE_H__
   242.1 --- a/epoc32/include/eikamnt.h	Tue Mar 16 16:12:26 2010 +0000
   242.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   242.3 @@ -1,81 +0,0 @@
   242.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   242.5 -// All rights reserved.
   242.6 -// This component and the accompanying materials are made available
   242.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   242.8 -// which accompanies this distribution, and is available
   242.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  242.10 -//
  242.11 -// Initial Contributors:
  242.12 -// Nokia Corporation - initial contribution.
  242.13 -//
  242.14 -// Contributors:
  242.15 -//
  242.16 -// Description:
  242.17 -//
  242.18 -
  242.19 -#ifndef __EIKAMNT_H__
  242.20 -#define __EIKAMNT_H__
  242.21 -
  242.22 -#include <e32base.h>
  242.23 -
  242.24 -class CGulIcon;
  242.25 -class MEikAutoMenuObserver;
  242.26 -
  242.27 -/** A menu title that will be added to a standard resource-constructed menu bar. 
  242.28 -
  242.29 -If added to the CEikAutoMenuTitleArray stored by CEikonEnv during standard 
  242.30 -application start up, the menu pane specified will appear in all applications. 
  242.31 -The menu observer passed in is notified of any events on such menu panes in 
  242.32 -preference to the usual observer (C<MyApp>AppUi). 
  242.33 -
  242.34 -@publishedAll 
  242.35 -@released */
  242.36 -NONSHARABLE_CLASS(CEikAutoMenuTitle) : public CBase
  242.37 -	{
  242.38 -public:
  242.39 -	/** Specifies the position of a menu title in a menu. 
  242.40 -
  242.41 -	If an array of menu titles holds more than one menu title that is specified 
  242.42 -	for the start or end of a menu, the menu titles are placed in the same order 
  242.43 -	as that in which they appear in the array. This means the first menu title 
  242.44 -	specified with EStart in an array will be the first on a menu bar and the last 
  242.45 -	EEnd will be the last on a menu bar. */
  242.46 -	enum TTitlePos
  242.47 -		{
  242.48 -		/** The menu title is placed first in a menu. */
  242.49 -		EStart,
  242.50 -		/** The menu title is placed last in a menu. */
  242.51 -		EEnd
  242.52 -		};
  242.53 -	enum { ENominalTextLength=40 };
  242.54 -public:
  242.55 -	IMPORT_C static CEikAutoMenuTitle* NewLC(TTitlePos aPos, const TDesC& aText, MEikAutoMenuObserver& aMenuObserver,
  242.56 -										TInt aMenuPaneResourceId = 0, CGulIcon* aIcon = NULL);
  242.57 -	IMPORT_C ~CEikAutoMenuTitle();
  242.58 -private:
  242.59 -	CEikAutoMenuTitle(TTitlePos aPos, const TDesC& aText, MEikAutoMenuObserver& aMenuObserver,
  242.60 -						TInt aMenuPaneResourceId, CGulIcon* aIcon);
  242.61 -public:
  242.62 -	TTitlePos iPos;
  242.63 -	TBuf<ENominalTextLength> iText;
  242.64 -	MEikAutoMenuObserver& iMenuObserver;
  242.65 -	TInt iMenuPaneResourceId;
  242.66 -	CGulIcon* iIcon;
  242.67 -	};
  242.68 -
  242.69 -
  242.70 -/** Creates a standard array of CEikAutoMenuTitle objects. 
  242.71 -
  242.72 -@publishedPartner 
  242.73 -@released */
  242.74 -NONSHARABLE_CLASS(CEikAutoMenuTitleArray) : public CArrayPtrFlat<CEikAutoMenuTitle>
  242.75 -// If more than one title is specified for the start or end, they will be placed in the same order they appear
  242.76 -// in the array (so the first EStart in the array will be the first on a menu bar also but the last EEnd will
  242.77 -// be the last).
  242.78 -	{
  242.79 -public:
  242.80 -	CEikAutoMenuTitleArray();
  242.81 -	~CEikAutoMenuTitleArray();
  242.82 -	};
  242.83 -
  242.84 -#endif	// __EIKAMNT_H__
   243.1 --- a/epoc32/include/eikapp.h	Tue Mar 16 16:12:26 2010 +0000
   243.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   243.3 @@ -1,114 +0,0 @@
   243.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   243.5 -// All rights reserved.
   243.6 -// This component and the accompanying materials are made available
   243.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   243.8 -// which accompanies this distribution, and is available
   243.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  243.10 -//
  243.11 -// Initial Contributors:
  243.12 -// Nokia Corporation - initial contribution.
  243.13 -//
  243.14 -// Contributors:
  243.15 -//
  243.16 -// Description:
  243.17 -//
  243.18 -
  243.19 -#ifndef __EIKAPP_H__
  243.20 -#define __EIKAPP_H__
  243.21 -
  243.22 -#include <apparc.h>		// class CApaApplication
  243.23 -#include <apaflrec.h>
  243.24 -
  243.25 -class CCoeEnv;
  243.26 -
  243.27 -/** The base of all Uikon applications. 
  243.28 -
  243.29 -CEikApplication builds on CApaApplication, providing a basis for applications 
  243.30 -working within the framework provided by Uikon. It also contains an interface 
  243.31 -to the resource file and the document object belonging to the application.
  243.32 -
  243.33 -Each Uikon application class is derived from CEikApplication. Application 
  243.34 -writers must provide at least an implementation of the pure virtual function 
  243.35 -CreateDocumentL().
  243.36 -
  243.37 -The application's resource file can be changed from the default by overriding 
  243.38 -ResourceFileName().
  243.39 -
  243.40 -@publishedAll 
  243.41 -@released 
  243.42 -@see CEikDocument */
  243.43 -class CEikApplication : public CApaApplication
  243.44 -	{
  243.45 -public:
  243.46 -	IMPORT_C ~CEikApplication();
  243.47 -	inline TInt ResourceFileOffset() const;
  243.48 -	inline CApaProcess* Process() const;
  243.49 -	inline const TApaAppCaption& AppCaption() const;
  243.50 -	IMPORT_C virtual void GetDefaultDocumentFileName(TFileName& aDocumentName) const;
  243.51 -	IMPORT_C virtual TFileName BitmapStoreName() const;
  243.52 -public: // from CApaApplication
  243.53 -	IMPORT_C CDictionaryStore* OpenIniFileLC(RFs& aFs) const;
  243.54 -	IMPORT_C void Capability(TDes8& aInfo) const;
  243.55 -	IMPORT_C void SetToIniFileNameL(TParse& aParser) const;
  243.56 -protected: // from CApaApplication
  243.57 -	IMPORT_C void PreDocConstructL();
  243.58 -	IMPORT_C CApaDocument* CreateDocumentL(CApaProcess* aProcess);
  243.59 -	IMPORT_C void NewAppServerL(CApaAppServer*& aAppServer);
  243.60 -protected: 
  243.61 -	IMPORT_C CEikApplication();
  243.62 -	IMPORT_C void EnsureCaptionIsLocalisedL(const TDesC& aLocalisableResourceFile);
  243.63 -public: 
  243.64 -	IMPORT_C virtual TFileName ResourceFileName() const;
  243.65 -private:
  243.66 -	IMPORT_C virtual void CEikApplication_Reserved1();
  243.67 -	IMPORT_C virtual void CEikApplication_Reserved2();
  243.68 -private: 
  243.69 -	/** 
  243.70 -	@publishedAll 
  243.71 -	@released 
  243.72 -	*/
  243.73 -	virtual CApaDocument* CreateDocumentL()=0;
  243.74 -private: // internal use
  243.75 -	void InitAppNameParserWithPathAndExt(TParse& aParser, const TDesC& aPath, const TDesC& aExt) const;
  243.76 -protected:
  243.77 -	CCoeEnv* iCoeEnv;
  243.78 -	TInt iResourceFileOffset;
  243.79 -private:
  243.80 -	enum
  243.81 -		{
  243.82 -		EFlagCaptionCorrectlyLocalised =  0x00000001
  243.83 -		};	
  243.84 -private:
  243.85 -	CApaProcess* iProcess;
  243.86 -	TApaAppCaption iCaption;
  243.87 -	TApaAppCapabilityBuf* iCapabilityBuf;
  243.88 -	TUint iAppFlags;
  243.89 -	TInt iSpare;
  243.90 -	};
  243.91 -
  243.92 -/** Gets the offset value defined for this application's default resource file. 
  243.93 -
  243.94 -As the resource file offset can also be accessed through iResourceFileOffset, 
  243.95 -this function should not be needed by any apps.
  243.96 -
  243.97 -@return Offset of a resource file. */
  243.98 -inline TInt CEikApplication::ResourceFileOffset() const
  243.99 -	{ return iResourceFileOffset; }
 243.100 -
 243.101 -
 243.102 -/** Gets the managing process.
 243.103 -
 243.104 -@return A pointer to the process object managing this application's documents. */
 243.105 -inline CApaProcess* CEikApplication::Process() const
 243.106 -	{ return iProcess; }
 243.107 -
 243.108 -
 243.109 -/** Gets the caption for this application.
 243.110 -
 243.111 -Captions are displayed in the task list.
 243.112 -
 243.113 -@return Application caption. */
 243.114 -inline const TApaAppCaption& CEikApplication::AppCaption() const
 243.115 -	{ return iCaption;	}
 243.116 -
 243.117 -#endif	// __EIKAPP_H__
   244.1 --- a/epoc32/include/eikappui.h	Tue Mar 16 16:12:26 2010 +0000
   244.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   244.3 @@ -1,186 +0,0 @@
   244.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   244.5 -// All rights reserved.
   244.6 -// This component and the accompanying materials are made available
   244.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   244.8 -// which accompanies this distribution, and is available
   244.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  244.10 -//
  244.11 -// Initial Contributors:
  244.12 -// Nokia Corporation - initial contribution.
  244.13 -//
  244.14 -// Contributors:
  244.15 -//
  244.16 -// Description:
  244.17 -//
  244.18 -
  244.19 -#ifndef __EIKAPPUI_H__
  244.20 -#define __EIKAPPUI_H__
  244.21 -
  244.22 -#include <coeaui.h>
  244.23 -#include <coemain.h>
  244.24 -#include <eikmobs.h>
  244.25 -#include <apadef.h>
  244.26 -#include <vwsdef.h>
  244.27 -#include <eikdef.h>
  244.28 -#include <baerrhan.h>
  244.29 -#include <eikaufty.h>
  244.30 -#include <coemop.h>
  244.31 -
  244.32 -class CEikDocument;
  244.33 -class CEikApplication;
  244.34 -class CEikAppUiExtra;
  244.35 -class MApaEmbeddedDocObserver;
  244.36 -struct SExtendedError;
  244.37 -class CApaCommandLine;
  244.38 -
  244.39 -/** Handles application-wide aspects of the application's user interface such 
  244.40 -as the menu bar, toolbar pop-up menus, opening and closing files and exiting the 
  244.41 -application cleanly. 
  244.42 -
  244.43 -Every GUI application should use its own class derived from CEikAppUi. 
  244.44 -
  244.45 -An app UI's main role is to handle commands, in its HandleCommandL() function. 
  244.46 -These may be invoked using the menu bar, toolbar, or hotkeys; the commands 
  244.47 -that an app UI handles are specified in the application's resource file.
  244.48 -
  244.49 -In addition, the app UI normally needs to respond to other kinds of events, by 
  244.50 -providing suitable implementations of the following virtual functions, all 
  244.51 -inherited from CCoeAppUi: 
  244.52 -
  244.53 -- HandleKeyEventL(): Key events.
  244.54 -
  244.55 -- HandleForegroundEventL(): Application switched to foreground.
  244.56 -
  244.57 -- HandleSwitchOnEventL(): Machine switched on.
  244.58 -
  244.59 -- HandleSystemEventL(): System events.
  244.60 -
  244.61 -- HandleApplicationSpecificEventL(): Application-specific events.
  244.62 -
  244.63 -@publishedAll
  244.64 -@released */
  244.65 -class CEikAppUi : public CCoeAppUi, public MEikMenuObserver, public MCoeMessageObserver, public MObjectProvider
  244.66 -	{
  244.67 -public:
  244.68 -	IMPORT_C ~CEikAppUi();
  244.69 -	IMPORT_C CEikAppUi();
  244.70 -public: // new functions
  244.71 -	IMPORT_C virtual void ConstructL();
  244.72 -	IMPORT_C virtual void HandleModelChangeL();
  244.73 -	IMPORT_C TLanguage ApplicationLanguageL() const;
  244.74 -	IMPORT_C CEikApplication* Application() const;
  244.75 -	IMPORT_C CEikDocument* Document() const;
  244.76 -	IMPORT_C void SetDocument(CEikDocument* aDocument);
  244.77 -	inline CEikAppUi* ContainerAppUi() const;
  244.78 -	IMPORT_C void SetEmbeddedDocInfo(MApaEmbeddedDocObserver* aObserver, TBool aReadOnly);
  244.79 -	IMPORT_C virtual TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail);
  244.80 -	IMPORT_C virtual TBool ProcessCommandParametersL(CApaCommandLine& aCommandLine);
  244.81 -	// Application screen extent
  244.82 -	IMPORT_C TRect ClientRect() const;
  244.83 -	IMPORT_C virtual TRect ApplicationRect() const;
  244.84 -	// Menu utilities
  244.85 -	IMPORT_C void LaunchPopupMenuL(TInt aResourceId, const TPoint& aTargetPos, TPopupTargetPosType aTargetType, const CEikHotKeyTable* aHotKeyTable = NULL);
  244.86 -	IMPORT_C virtual void StopDisplayingMenuBar();
  244.87 -	// Fading effect
  244.88 -	IMPORT_C TBool FadeWhenInBackground();
  244.89 -	IMPORT_C virtual void SetFadedL(TBool aFaded);
  244.90 -	inline void SetFaded(TBool aFaded);			//mm: has no implementation
  244.91 -public: // new function
  244.92 -	IMPORT_C virtual void ReportResourceChangedToAppL(TInt aType);
  244.93 -	IMPORT_C virtual void HandleCommandL(TInt aCommand);
  244.94 -	IMPORT_C virtual void ProcessMessageL(TUid aUid, const TDesC8& aParams);
  244.95 -	IMPORT_C virtual void OpenFileL(const TDesC& aFileName);
  244.96 -	IMPORT_C virtual void CreateFileL(const TDesC& aFileName);
  244.97 -	IMPORT_C virtual TErrorHandlerResponse HandleError(TInt aError, const SExtendedError& aExtErr, TDes& aErrorText, TDes& aContextText);
  244.98 -	IMPORT_C virtual void HandleResourceChangeL(TInt aType);
  244.99 -public: // from CCoeAppUi
 244.100 -	IMPORT_C void PrepareToExit();
 244.101 -protected: // new functions
 244.102 -	// Construction
 244.103 -	IMPORT_C void BaseConstructL(TInt aAppUiFlags = 0);
 244.104 -	IMPORT_C void ReadAppInfoResourceL(TInt aResourceFileOffset = 0);
 244.105 -	IMPORT_C void CreateHotKeyControlL(TInt aResourceId);
 244.106 -	IMPORT_C TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName);
 244.107 -	// User data change management
 244.108 -	IMPORT_C void SetDocChanged();
 244.109 -	IMPORT_C void SaveAnyChangesL();
 244.110 -	IMPORT_C void SaveL();
 244.111 -	IMPORT_C virtual void Exit();
 244.112 -	// Utility
 244.113 -	IMPORT_C void ClosePopup();		//mm: deprecate?
 244.114 -protected: // from MEikMenuObserver
 244.115 -	IMPORT_C void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,TInt aModifiers,const CEikHotKeyTable* aTable);
 244.116 -protected: // from CCoeAppUi
 244.117 -	IMPORT_C void HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent);
 244.118 -	IMPORT_C void HandleForegroundEventL(TBool aForeground);
 244.119 -	IMPORT_C void HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination);
 244.120 -	IMPORT_C void HandleSystemEventL(const TWsEvent& aEvent);
 244.121 -	IMPORT_C void HandleScreenDeviceChangedL();
 244.122 -protected: // from MEikCommandObserver
 244.123 -	IMPORT_C void ProcessCommandL(TInt aCommand);
 244.124 -private: // from MEikMenuObserver
 244.125 -	IMPORT_C void SetEmphasis(CCoeControl* aMenuWindow,TBool aEmphasis);
 244.126 -protected: // from MCoeMessageObserver
 244.127 -	IMPORT_C MCoeMessageObserver::TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters);
 244.128 -protected:	// from MObjectProvider
 244.129 -	IMPORT_C virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
 244.130 -	IMPORT_C virtual MObjectProvider* MopNext();
 244.131 -private: 
 244.132 -	// Validate document file type
 244.133 -	IMPORT_C virtual TBool ValidFileType(TUid aFileUid) const;
 244.134 -private: // spare virtuals	
 244.135 -	IMPORT_C virtual void Reserved_3();
 244.136 -	IMPORT_C virtual void Reserved_4();
 244.137 -public:
 244.138 -	/** Application resource file and screen furniture flags, passed to BaseConstructL(). */
 244.139 -	enum
 244.140 -		{
 244.141 -		/** Application uses a standard resource file. */
 244.142 -		EStandardApp			= 0x00,
 244.143 -		/** Application has no resource file. */
 244.144 -		ENoAppResourceFile		= 0x01,
 244.145 -		/** Application uses a different resource file from the standard. */
 244.146 -		ENonStandardResourceFile= 0x02,
 244.147 -		/** Application uses no screen furniture. */
 244.148 -		ENoScreenFurniture		= 0x04,
 244.149 -		/** Indicates the last value in the enum. */
 244.150 -		ELastReservedEikAppUiFlag = 0x8000
 244.151 -		};
 244.152 -public:
 244.153 -	IMPORT_C void ReportResourceChangedToAppStackL(CEikAppUi* aTopApp, TInt aEventId);
 244.154 -	CEikAppUiExtra* AppUiExtra();
 244.155 -private:
 244.156 -	void CreateResourceIndependentFurnitureL();
 244.157 -	TBool ValidFileExistsL(const TDesC& aFileName);
 244.158 -protected:
 244.159 -	/** A pointer to the application's document. */
 244.160 -	CEikDocument* iDocument;
 244.161 -	/** A pointer to the containing app UI. This is NULL for non-embedded 
 244.162 -	apps. */
 244.163 -	CEikAppUi* iContainerAppUi;
 244.164 -	/** Embedded document observer. */
 244.165 -	MApaEmbeddedDocObserver* iDoorObserver;
 244.166 -	/** Indicates whether or not this is the app UI for an embedded, 
 244.167 -	read-only document. */
 244.168 -	TBool iEmbeddedAndReadOnly;
 244.169 -	TInt iFlags;
 244.170 -private:
 244.171 -	enum
 244.172 -		{
 244.173 -		EEmbedded = 0x01
 244.174 -		};
 244.175 -private:
 244.176 -	CEikAppUiExtra* iAppUiExtra;
 244.177 -	};
 244.178 -
 244.179 -
 244.180 -
 244.181 -/** Returns the app UI inside which this app UI is embedded.
 244.182 -Embedded app UIs are used for editing embedded documents.
 244.183 -
 244.184 -@return A pointer to this object's container app UI. NULL if this app 
 244.185 -UI is not embedded */
 244.186 -inline CEikAppUi* CEikAppUi::ContainerAppUi() const
 244.187 -	{ return iContainerAppUi; }
 244.188 -
 244.189 -#endif	// __EIKAPPUI_H__
   245.1 --- a/epoc32/include/eikaufty.h	Tue Mar 16 16:12:26 2010 +0000
   245.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   245.3 @@ -1,143 +0,0 @@
   245.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   245.5 -// All rights reserved.
   245.6 -// This component and the accompanying materials are made available
   245.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   245.8 -// which accompanies this distribution, and is available
   245.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  245.10 -//
  245.11 -// Initial Contributors:
  245.12 -// Nokia Corporation - initial contribution.
  245.13 -//
  245.14 -// Contributors:
  245.15 -//
  245.16 -// Description:
  245.17 -// Defines mix-in interace to break dependencey of Eikon Application UI 
  245.18 -// on controls
  245.19 -// 
  245.20 -//
  245.21 -
  245.22 -#ifndef __EIKAUFTY_H__
  245.23 -#define __EIKAUFTY_H__
  245.24 -
  245.25 -#include <f32file.h>
  245.26 -#include <e32base.h>
  245.27 -#include <eikdef.h>
  245.28 -
  245.29 -#include <coemop.h>
  245.30 -
  245.31 -class CEikHotKeyTable;
  245.32 -class CEikMenuBar;
  245.33 -class CEikMenuPane;
  245.34 -class CEikCommandButton;
  245.35 -class CEikToolBar;
  245.36 -class CEikButtonGroupContainer;
  245.37 -class CEikAppUi;
  245.38 -class CEikonEnv;
  245.39 -class CEikStatusPane;
  245.40 -
  245.41 -
  245.42 -/** This class defines a mixin interface to break the dependency of the Uikon Application 
  245.43 -User Interface on controls. 
  245.44 -
  245.45 -@publishedAll 
  245.46 -@released */
  245.47 -class MEikAppUiFactory : public MObjectProvider
  245.48 -	{
  245.49 -public:
  245.50 -	virtual void CreateResourceIndependentFurnitureL(CEikAppUi* aAppUi) =0;
  245.51 -	virtual TRect ClientRect() = 0;
  245.52 -	virtual void ReadAppInfoResourceL(TInt aResourceFileOffset,CEikAppUi* aAppUi) = 0;
  245.53 -	virtual void LaunchPopupMenuL(	TInt aResourceId,
  245.54 -									const TPoint& aTargetPos,
  245.55 -									TPopupTargetPosType aTargetType,
  245.56 -									const CEikHotKeyTable* aHotKeyTable,
  245.57 -									CEikAppUi* aAppUi) = 0;
  245.58 -
  245.59 -	virtual void DoLaunchPopupL(TInt aResourceId,const TPoint& aTargetPos, const CEikHotKeyTable* aHotKeyTable, 
  245.60 -								TPopupTargetPosType aTargetType,CEikAppUi* aAppUi) = 0;
  245.61 -
  245.62 -   	virtual void ClosePopup(CEikAppUi* aAppUi) = 0;
  245.63 -	virtual void StopDisplayingMenuBar() = 0;
  245.64 -	virtual void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,
  245.65 -									const CEikHotKeyTable* aHotKeyTable,CEikAppUi* aAppUi) = 0;
  245.66 -	virtual void CreateHotKeyControlL(TInt aResourceId, CEikAppUi* aAppUi) = 0;
  245.67 -	/** Gets a pointer to the menu bar.
  245.68 -	
  245.69 -	@return Pointer to the menu bar. */
  245.70 -	virtual CEikMenuBar* MenuBar() const = 0;
  245.71 -	/** Replaces or clears a menu bar, returning a pointer to the replaced menu bar.
  245.72 -	
  245.73 -	@param aMenu The new menu bar. This can be NULL to clear an existing menu bar. 
  245.74 -	@return Pointer to the replaced menu bar. */
  245.75 -	virtual CEikMenuBar* SwapMenuBar(CEikMenuBar* aMenu) = 0;
  245.76 -	virtual CEikMenuPane* Popup() const = 0;
  245.77 -	/** Gets a pointer to the tool bar.
  245.78 -	
  245.79 -	@return Pointer to the tool bar. */
  245.80 -	virtual CEikButtonGroupContainer* ToolBar() const = 0;
  245.81 -	/** Replaces or clears a button group, returning a pointer to the replaced button 
  245.82 -	group.
  245.83 -	
  245.84 -	@param aNewGroup The new button group. This can be NULL to clear an existing 
  245.85 -	button group. 
  245.86 -	@return Pointer to the replaced button group. */
  245.87 -	virtual CEikButtonGroupContainer* SwapButtonGroup(CEikButtonGroupContainer* aNewGroup) = 0;
  245.88 -	/** Gets a pointer to the tool band.
  245.89 -	
  245.90 -	@return Pointer to the tool band. */
  245.91 -	virtual CEikToolBar* ToolBand() const = 0;
  245.92 -	/** Gets a pointer to the title band.
  245.93 -	
  245.94 -	@return Pointer to the title band. */
  245.95 -	virtual CEikToolBar* TitleBand() const = 0;
  245.96 -	/** Gets a pointer to the status pane.
  245.97 -	
  245.98 -	@return Pointer to the status pane */
  245.99 -	virtual CEikStatusPane* StatusPane() const = 0;
 245.100 -	/** Gets a pointer to the CBA. 
 245.101 -	
 245.102 -	@return Pointer to the CBA */
 245.103 -	virtual CEikButtonGroupContainer* Cba() const = 0;
 245.104 -	inline CEikToolBar* SwapToolBand(CEikToolBar* aToolBand);
 245.105 -	inline CEikToolBar* SwapTitleBand(CEikToolBar* aTitleBand);
 245.106 -	/** Creates a standard tab button.
 245.107 -	
 245.108 -	@return Pointer to the created tab button. */
 245.109 -	virtual CEikCommandButton*  CreateStandardTabButtonL() const = 0;
 245.110 -	virtual void CreateEmbeddedL(CEikonEnv& aEikonEnv) = 0;
 245.111 -	virtual void DestroyEmbedded(CEikonEnv& aEikonEnv) = 0;
 245.112 -	virtual void HandleResourceChangeL(TInt aType) = 0;
 245.113 -protected:
 245.114 -	/** Defines the type of tool bar. */
 245.115 -	enum TToolBarType
 245.116 -		{
 245.117 -		/** Defines a band tool bar. */
 245.118 -		EBand,
 245.119 -		/** Defines a title tool bar. */
 245.120 -		ETitle
 245.121 -		};
 245.122 -private:
 245.123 -	virtual CEikToolBar* SwapToolBar(CEikToolBar* aToolBar,TToolBarType aType) = 0;
 245.124 -	};
 245.125 -
 245.126 -
 245.127 -
 245.128 -/** Replaces or clears a tool band, returning a pointer to the replaced tool band.
 245.129 -
 245.130 -@param aToolBand The new tool band. This can be NULL to clear an existing 
 245.131 -tool band. 
 245.132 -@return Pointer to the replaced tool band. */
 245.133 -inline CEikToolBar* MEikAppUiFactory::SwapToolBand(CEikToolBar* aToolBand)
 245.134 -	{return SwapToolBar(aToolBand,EBand);}
 245.135 -
 245.136 -
 245.137 -/** Replaces or clears a title band, returning a pointer to the replaced title 
 245.138 -band.
 245.139 -
 245.140 -@param aTitleBand The new title band. This can be NULL to clear an existing 
 245.141 -title band. 
 245.142 -@return Pointer to the replaced title band. */
 245.143 -inline CEikToolBar* MEikAppUiFactory::SwapTitleBand(CEikToolBar* aTitleBand)
 245.144 -	{return SwapToolBar(aTitleBand,ETitle);}
 245.145 -
 245.146 -#endif	// __EIKAUFTY_H__
   246.1 --- a/epoc32/include/eikbhelp.h	Tue Mar 16 16:12:26 2010 +0000
   246.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   246.3 @@ -1,92 +0,0 @@
   246.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   246.5 -// All rights reserved.
   246.6 -// This component and the accompanying materials are made available
   246.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   246.8 -// which accompanies this distribution, and is available
   246.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  246.10 -//
  246.11 -// Initial Contributors:
  246.12 -// Nokia Corporation - initial contribution.
  246.13 -//
  246.14 -// Contributors:
  246.15 -//
  246.16 -// Description:
  246.17 -//
  246.18 -
  246.19 -#ifndef __EIKBHELP_H__
  246.20 -#define __EIKBHELP_H__
  246.21 -
  246.22 -#include <coemain.h>
  246.23 -
  246.24 -const TUid KEikBubbleHelpUid={0x10008E48};
  246.25 -
  246.26 -class CCoeControl;
  246.27 -
  246.28 -/**
  246.29 -@publishedPartner
  246.30 -@deprecated
  246.31 -*/
  246.32 -class MEikTriggeredHelp	
  246.33 -	{
  246.34 -// The MEikTriggeredHelp class defines an interface for UI classes 
  246.35 -// to implement triggered, transient help message display.
  246.36 -public:
  246.37 -	virtual void TriggerHelp(const TDesC& aDes,const TRect& aRect,TInt aHandle)=0;
  246.38 -	virtual void CancelHelp()=0;
  246.39 -	virtual void CancelHelpTrigger()=0;
  246.40 -	virtual TBool IsDisplayingHelp(TInt aHandle)=0;
  246.41 -	virtual void Release()=0;
  246.42 -protected:
  246.43 -	IMPORT_C virtual void MEikTriggeredHelp_Reserved_1();
  246.44 -	IMPORT_C virtual void MEikTriggeredHelp_Reserved_2();
  246.45 -	};
  246.46 -
  246.47 -
  246.48 -/** Provides the static functions that control bubble help.
  246.49 -
  246.50 -Bubble help is a feature that enables short help messages to be displayed 
  246.51 -for controls in transient windows which pop up close to the control bodies. 
  246.52 -
  246.53 -@publishedAll 
  246.54 -@released */
  246.55 -class EikBubbleHelp
  246.56 -	{
  246.57 -public:
  246.58 -	IMPORT_C static void Trigger(const TDesC& aDes,const TRect& aRect,TInt aHandle=-1);
  246.59 -	IMPORT_C static void Cancel();
  246.60 -	IMPORT_C static void CancelTrigger();
  246.61 -	IMPORT_C static TBool IsDisplaying(TInt aHandle);
  246.62 -	};
  246.63 -
  246.64 -
  246.65 -/**
  246.66 -@publishedPartner
  246.67 -@deprecated
  246.68 -*/
  246.69 -class CEikBubbleHelp : public CCoeStatic
  246.70 -// The CEikBubbleHelp class implements global static storage and access to the object providing bubble help
  246.71 -// for the application.  
  246.72 -	{
  246.73 -	~CEikBubbleHelp();
  246.74 -public: 
  246.75 -	IMPORT_C static void SetTriggeredHelpL(MEikTriggeredHelp* aTriggeredHelp);
  246.76 -public:
  246.77 -	static void Trigger(const TDesC& aDes,const TRect& aRect,TInt aHandle=-1);
  246.78 -	static void Cancel();
  246.79 -	static void CancelTrigger();
  246.80 -	static TBool IsDisplaying(TInt aHandle);
  246.81 -private:
  246.82 -	inline CEikBubbleHelp();
  246.83 -	inline static CEikBubbleHelp* Self();
  246.84 -private:
  246.85 -	MEikTriggeredHelp* iHelp;
  246.86 -	};
  246.87 -
  246.88 -inline CEikBubbleHelp::CEikBubbleHelp()
  246.89 -	: CCoeStatic(KEikBubbleHelpUid)
  246.90 -	{}
  246.91 -
  246.92 -inline CEikBubbleHelp* CEikBubbleHelp::Self()
  246.93 -	{return STATIC_CAST(CEikBubbleHelp*,CCoeEnv::Static(KEikBubbleHelpUid));}
  246.94 -
  246.95 -#endif
   247.1 --- a/epoc32/include/eikcmobs.h	Tue Mar 16 16:12:26 2010 +0000
   247.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   247.3 @@ -1,64 +0,0 @@
   247.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   247.5 -// All rights reserved.
   247.6 -// This component and the accompanying materials are made available
   247.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   247.8 -// which accompanies this distribution, and is available
   247.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  247.10 -//
  247.11 -// Initial Contributors:
  247.12 -// Nokia Corporation - initial contribution.
  247.13 -//
  247.14 -// Contributors:
  247.15 -//
  247.16 -// Description:
  247.17 -//
  247.18 -
  247.19 -#ifndef __EIKCMOBS_H__
  247.20 -#define __EIKCMOBS_H__
  247.21 -
  247.22 -#include <e32def.h>
  247.23 -
  247.24 -class CCoeControl;
  247.25 -
  247.26 -/** Command observers respond to user commands, and have the secondary function 
  247.27 -of creating custom controls on request for classes such as CEikToolbar, or 
  247.28 -user-defined classes.
  247.29 -
  247.30 -An implementation of the pure virtual function ProcessCommandL() must be provided 
  247.31 -for each concrete class derived from MEikCommandObserver. CreateCustomCommandControlL() 
  247.32 -may also be re-implemented. 
  247.33 -
  247.34 -@publishedAll 
  247.35 -@released */
  247.36 -class MEikCommandObserver
  247.37 -	{
  247.38 -public:
  247.39 -	/** Processes user commands.
  247.40 -	
  247.41 -	Derived classes must provide an implementation of this function which responds 
  247.42 -	to user commands appropriately based on a user-defined ID for the command.
  247.43 -	
  247.44 -	@param aCommandId ID of the command to respond to. */
  247.45 -	virtual void ProcessCommandL(TInt aCommandId)=0;
  247.46 -	/** Glue for creating custom controls.
  247.47 -	
  247.48 -	This function can be called to create custom controls on request from their 
  247.49 -	control ID. Custom controls are user-supplied control classes.
  247.50 -	
  247.51 -	Given the ID of a custom control, this function should return a pointer to 
  247.52 -	a newly-instantiated and fully constructed control. If the ID is unrecognised, 
  247.53 -	NULL should be returned. The control returned will be owned by the caller.
  247.54 -	
  247.55 -	@param aControlType A custom control ID. 
  247.56 -	@return By default, NULL. */
  247.57 -	IMPORT_C virtual CCoeControl* CreateCustomCommandControlL(TInt aControlType);
  247.58 -protected:
  247.59 -	IMPORT_C MEikCommandObserver();
  247.60 -private:
  247.61 -	IMPORT_C virtual void MEikCommandObserver_Reserved1();
  247.62 -	IMPORT_C virtual void MEikCommandObserver_Reserved2();
  247.63 -private:
  247.64 -	TInt iMEikCommandObserver_Reserved1;
  247.65 -	};
  247.66 -
  247.67 -#endif	// __EIKCMOBS_H__
   248.1 --- a/epoc32/include/eikdef.h	Tue Mar 16 16:12:26 2010 +0000
   248.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   248.3 @@ -1,321 +0,0 @@
   248.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   248.5 -// All rights reserved.
   248.6 -// This component and the accompanying materials are made available
   248.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   248.8 -// which accompanies this distribution, and is available
   248.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  248.10 -//
  248.11 -// Initial Contributors:
  248.12 -// Nokia Corporation - initial contribution.
  248.13 -//
  248.14 -// Contributors:
  248.15 -//
  248.16 -// Description:
  248.17 -//
  248.18 -
  248.19 -#ifndef __EIKDEF_H__
  248.20 -#define __EIKDEF_H__
  248.21 -
  248.22 -#include <e32std.h>
  248.23 -#include <coedef.h>
  248.24 -
  248.25 -/** This is used in combination with a specified position to place a popout on 
  248.26 -the display. 
  248.27 -
  248.28 -The TPopupTargetPosType enum identifies which corner of the popout 
  248.29 -will be placed in the given target position. The default is the top left corner. 
  248.30 -
  248.31 -@publishedAll
  248.32 -@released */
  248.33 -enum TPopupTargetPosType
  248.34 -	{
  248.35 -	/** Places the popout with the top left corner in the specified position. */
  248.36 -	EPopupTargetTopLeft,
  248.37 -	/** Places the popout with the top right corner in the specified position. */
  248.38 -	EPopupTargetTopRight,
  248.39 -	/** Places the popout with the bottom left corner in the specified position. */
  248.40 -	EPopupTargetBottomLeft,
  248.41 -	/** Places the popout with the bottom right corner in the specified position. */
  248.42 -	EPopupTargetBottomRight
  248.43 -	};
  248.44 -
  248.45 -
  248.46 -/** Defines the printer port settings. This is used by GUI print dialogs.*/
  248.47 -enum TEikPortFlag
  248.48 -	{
  248.49 -	/** Printing is via a serial port.*/
  248.50 -	ESerialPort = 0x01,
  248.51 -	/** Printing is via a parallel port.*/
  248.52 -	EParallelPort = 0x02,
  248.53 -	/** Printing is via infra red.*/
  248.54 -	EIrdaPort = 0x04,
  248.55 -	/** Printing is to a file. */
  248.56 -	EFilePort = 0x08,
  248.57 -	/** Printing is via a PC.*/
  248.58 -	EViaPCPort = 0x10
  248.59 -	};
  248.60 -
  248.61 -/** Macro to allow easy access to the CEikonEnv instance.
  248.62 -
  248.63 -@publishedAll
  248.64 -@released
  248.65 -*/
  248.66 -#define iEikonEnv (STATIC_CAST(CEikonEnv*,iCoeEnv))
  248.67 -
  248.68 -/** Defines the border style for an editable control.
  248.69 -
  248.70 -@publishedPartner
  248.71 -@released
  248.72 -*/
  248.73 -#define KEikEditableControlBorder TGulBorder::EShallowSunken
  248.74 -
  248.75 -/** Name of the default bitmap store.
  248.76 -
  248.77 -@publishedPartner
  248.78 -@released
  248.79 -*/
  248.80 -_LIT(KEikDefaultAppBitmapStore,"*");
  248.81 -
  248.82 -/** Uid of the KEikMessageColorSchemeChange message.
  248.83 -
  248.84 -@publishedPartner
  248.85 -@released
  248.86 -*/
  248.87 -const TInt KUidValueEikColorSchemeChangeEvent	=0x10006956;
  248.88 -
  248.89 -/**
  248.90 -@internalComponent
  248.91 -*/
  248.92 -const TInt KEikCustomColorsArrayValue			=0x100057C2;
  248.93 -
  248.94 -/** Indicates that all windows should appear faded.
  248.95 -
  248.96 -@publishedAll
  248.97 -@released
  248.98 -*/
  248.99 -const TInt KEikMessageFadeAllWindows			=0x100056C2;
 248.100 -
 248.101 -/** Indicates that all windows should appear unfaded.
 248.102 -
 248.103 -@publishedAll
 248.104 -@released
 248.105 -*/
 248.106 -const TInt KEikMessageUnfadeWindows				=0x100056C3;
 248.107 -
 248.108 -/** Indicates that the colour scheme has changed.
 248.109 -
 248.110 -@publishedAll
 248.111 -@released
 248.112 -*/
 248.113 -const TInt KEikMessageColorSchemeChange			=KUidValueCoeColorSchemeChangeEvent;
 248.114 -
 248.115 -/** Indicates that the color scheme has changed.
 248.116 -
 248.117 -@publishedAll
 248.118 -@released
 248.119 -*/
 248.120 -#define KEikColorResourceChange KEikMessageColorSchemeChange // for source compatibility
 248.121 -
 248.122 -/** Indicates that the zoom level has changed.
 248.123 -
 248.124 -@publishedAll
 248.125 -@released
 248.126 -*/
 248.127 -const TInt KEikMessageZoomChange				=KUidValueCoeZoomChangeEvent;
 248.128 -
 248.129 -/** Indicates that a font has changed. Controls should ensure they are using 
 248.130 -the right font after receiving this message.
 248.131 -
 248.132 -@publishedAll
 248.133 -@released
 248.134 -*/
 248.135 -const TInt KEikMessageFontChange     = KUidValueCoeFontChangeEvent;  
 248.136 -
 248.137 -/** Indicates that the state of the virtual cursor has changed.
 248.138 -
 248.139 -@publishedAll
 248.140 -@released
 248.141 -*/
 248.142 -const TInt KEikMessageVirtualCursorStateChange	=0x10005D0A;
 248.143 -
 248.144 -/** Indicates that caps lock key has been pressed.
 248.145 -
 248.146 -@publishedAll
 248.147 -@released
 248.148 -*/
 248.149 -const TInt KEikMessageCapsLock					=0x100048F9;
 248.150 -
 248.151 -/** Indicates that the application should be ready to save any data that needs saving.
 248.152 -
 248.153 -@publishedAll
 248.154 -@released
 248.155 -*/
 248.156 -const TInt KEikMessagePrepareForSave			=0x100069FD;
 248.157 -
 248.158 -/** Indicates that the level of embedding of the application has changed.
 248.159 -
 248.160 -@publishedAll
 248.161 -@released
 248.162 -*/
 248.163 -const TInt KEikMessageEmbedLevelChange			=0x1000A4AA;
 248.164 -
 248.165 -/** Passed immediately after completion of the call to CCoeEnv::SetAppUi() 
 248.166 -when aNewAppUi has become current AppUi. This happens during the destruction of the embedded
 248.167 -AppUi.
 248.168 -
 248.169 -@publishedAll 
 248.170 -@released
 248.171 -*/
 248.172 -const TInt KEikHasBecomeCurrentAppUiWhileEmbeddedAppUiDeletes = 0x10207F75;
 248.173 -
 248.174 -/** Passed immediately before CEikAppUiFactory::CreateEmbeddedL()
 248.175 -
 248.176 -@publishedAll 
 248.177 -@released
 248.178 -*/
 248.179 -const TInt KEikNotifyPreCreateEmbeddedL = 0x10207F67;
 248.180 -
 248.181 -/** Passed immediately after CEikAppUiFactory::CreateEmbeddedL()
 248.182 -
 248.183 -@publishedAll 
 248.184 -@released
 248.185 -*/
 248.186 -const TInt KEikNotifyPostCreateEmbeddedL = 0x10207F65;
 248.187 -
 248.188 -/** Passed immediately after CCoeAppUi::ConstructL()
 248.189 -
 248.190 -@publishedAll 
 248.191 -@released
 248.192 -*/
 248.193 -const TInt KEikPostCoeAppUiConstructL = 0x10207F66;
 248.194 -
 248.195 -/**
 248.196 -@publishedAll
 248.197 -@released
 248.198 -*/
 248.199 -_LIT8(KDebugStart, "-DebugMemFail:");
 248.200 -
 248.201 -/**
 248.202 -@publishedPartner 
 248.203 -@released
 248.204 -*/
 248.205 -const TInt KEikDefaultCursorWidth=2;
 248.206 -
 248.207 -/**
 248.208 -@publishedPartner 
 248.209 -@released
 248.210 -*/
 248.211 -const TInt KTimeBetweenClicks=1000000;	 // in Microseconds	
 248.212 -
 248.213 -/**
 248.214 -@publishedPartner 
 248.215 -@released
 248.216 -*/		 
 248.217 -const TInt KDoubleClickDistance=10;
 248.218 -
 248.219 -/**
 248.220 -@publishedPartner 
 248.221 -@released
 248.222 -*/	
 248.223 -const TInt KKeyboardRepeatRate=50000;
 248.224 -
 248.225 -/**
 248.226 -@publishedPartner 
 248.227 -@released
 248.228 -*/	
 248.229 -const TInt KKeyboardRepeatInitialDelay=800000;
 248.230 -
 248.231 -/** Resource id of the query dialog.
 248.232 -@publishedPartner
 248.233 -@released
 248.234 -*/
 248.235 -const TInt KEikResIdQueryDialog	=0;
 248.236 -
 248.237 -/** Resource id of the info dialog.
 248.238 -@publishedPartner
 248.239 -@released
 248.240 -*/
 248.241 -const TInt KEikResIdInfoDialog	=1;
 248.242 -
 248.243 -/**
 248.244 -@publishedPartner 
 248.245 -@released
 248.246 -*/	
 248.247 -const TInt KEikErrorResolverMaxTextLength = 256;
 248.248 -
 248.249 -/**
 248.250 -@internalTechnology
 248.251 -*/
 248.252 -#define COMPARE_BOOLS(a,b) (((a) && (b)) || (!(a) && !(b)))
 248.253 -
 248.254 -/**
 248.255 -@internalComponent
 248.256 -*/
 248.257 -#if defined(_DEBUG)
 248.258 -#define __UHEAP_CHECK_INTEGRITY User::Heap().Check()
 248.259 -#else
 248.260 -#define __UHEAP_CHECK_INTEGRITY
 248.261 -#endif
 248.262 -
 248.263 -/**
 248.264 -@internalComponent
 248.265 -*/
 248.266 -#define PROFILE_POINT_EIKON_FIRST		32
 248.267 -
 248.268 -/**
 248.269 -@internalComponent
 248.270 -*/
 248.271 -#define PROFILE_POINT_EIKON_LAST		39
 248.272 -
 248.273 -/**
 248.274 -@internalComponent
 248.275 -*/
 248.276 -#define PROFILE_POINT_EIKON_SIMPLE		32
 248.277 -
 248.278 -/**
 248.279 -@internalComponent
 248.280 -*/
 248.281 -#define PROFILE_POINT_EIKON_DIALOG_LOAD	33
 248.282 -
 248.283 -/**
 248.284 -@internalComponent
 248.285 -*/
 248.286 -#define PROFILE_POINT_EIKON_APP_LAUNCH	34
 248.287 -
 248.288 -/**
 248.289 -@internalComponent
 248.290 -*/
 248.291 -#define PROFILE_POINT_EIKON_CLOCK		35
 248.292 -
 248.293 -/**
 248.294 -@internalComponent
 248.295 -*/
 248.296 -#define PROFILE_POINT_EIKON_CALENDER	35
 248.297 -
 248.298 -/**
 248.299 -@internalComponent
 248.300 -*/
 248.301 -#define PROFILE_POINT_EIKON_LIBS_LOAD	36
 248.302 -
 248.303 -/**
 248.304 -@internalComponent
 248.305 -*/
 248.306 -#define PROFILE_POINT_EIKON_ADD_RES		37
 248.307 -
 248.308 -/**
 248.309 -@internalComponent
 248.310 -*/
 248.311 -#define KEikEikonBitmapStore		KNullDesC
 248.312 -
 248.313 -/**
 248.314 -@internalComponent
 248.315 -*/
 248.316 -const TUid KSystemIniFileUid = {0x1000010C};
 248.317 -
 248.318 -/**
 248.319 -@internalComponent
 248.320 -*/	
 248.321 -const TInt KLastSystemWideErrCode = KErrCommsBreak;
 248.322 -
 248.323 -
 248.324 -#endif	// __EIKDEF_H__
   249.1 --- a/epoc32/include/eikdll.h	Tue Mar 16 16:12:26 2010 +0000
   249.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   249.3 @@ -1,22 +0,0 @@
   249.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   249.5 -// All rights reserved.
   249.6 -// This component and the accompanying materials are made available
   249.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   249.8 -// which accompanies this distribution, and is available
   249.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  249.10 -//
  249.11 -// Initial Contributors:
  249.12 -// Nokia Corporation - initial contribution.
  249.13 -//
  249.14 -// Contributors:
  249.15 -//
  249.16 -// Description:
  249.17 -//
  249.18 -
  249.19 -#ifndef __EIKDLL_H__
  249.20 -#define __EIKDLL_H__
  249.21 -
  249.22 -#include <e32std.h>
  249.23 -#include <apacmdln.h>
  249.24 -
  249.25 -#endif	// __EIKDLL_H__
   250.1 --- a/epoc32/include/eikdoc.h	Tue Mar 16 16:12:26 2010 +0000
   250.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   250.3 @@ -1,128 +0,0 @@
   250.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   250.5 -// All rights reserved.
   250.6 -// This component and the accompanying materials are made available
   250.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   250.8 -// which accompanies this distribution, and is available
   250.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  250.10 -//
  250.11 -// Initial Contributors:
  250.12 -// Nokia Corporation - initial contribution.
  250.13 -//
  250.14 -// Contributors:
  250.15 -//
  250.16 -// Description:
  250.17 -//
  250.18 -
  250.19 -#ifndef __EIKDOC_H__
  250.20 -#define __EIKDOC_H__
  250.21 -
  250.22 -#include <apparc.h>
  250.23 -#include <savenotf.h>
  250.24 -
  250.25 -class CEikAppUi;
  250.26 -class CEikApplication;
  250.27 -class CApaWindowGroupName;
  250.28 -
  250.29 -
  250.30 -/** The base class for all GUI applications' documents. 
  250.31 -
  250.32 -In file-based applications, the document represents the data that relates to a 
  250.33 -particular instance of the application, and should handle storing and restoring 
  250.34 -it. In all applications, whether file-based or not, the document is used to create 
  250.35 -the application UI. 
  250.36 -
  250.37 -A class derived from CEikDocument must be defined by each GUI application, and minimally 
  250.38 -it must implement CreateAppUiL(). Note that UIs may implement their own document base class, 
  250.39 -derived from CEikDocument, which applications may need to derive from instead. 
  250.40 -
  250.41 -The document is created by the application's CreateDocumentL() function.
  250.42 -
  250.43 -@publishedAll
  250.44 -@released 
  250.45 -@see CEikApplication::CreateDocumentL()
  250.46 -@see CEikAppUi */
  250.47 -class CEikDocument : public CApaDocument, public MSaveObserver
  250.48 -	{
  250.49 -public: // new functions
  250.50 -	/** Constructs the application UI.
  250.51 -	
  250.52 -	This function is called by the UI framework during application start-up. It should 
  250.53 -	only carry out first phase construction of the app UI, in other words, using new(ELeave). 
  250.54 -	It should not call the app UI's ConstructL(), because the UI framework is responsible 
  250.55 -	for this. Note also that the UI framework takes ownership of the app UI, so the 
  250.56 -	document does not need to destroy it.
  250.57 -
  250.58 -	@return A partially-constructed app UI object. */
  250.59 -	virtual CEikAppUi* CreateAppUiL()=0;
  250.60 -	IMPORT_C virtual CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs);
  250.61 -	IMPORT_C void PrepareToEditL(MApaEmbeddedDocObserver* aObserver,TBool aReadOnly);
  250.62 -	IMPORT_C void PrepareToEditL();
  250.63 -	IMPORT_C void SetAppFileMode(TUint aMode);
  250.64 -	IMPORT_C TUint AppFileMode() const;
  250.65 -	IMPORT_C virtual void UpdateTaskNameL(CApaWindowGroupName* aWgName);
  250.66 -	IMPORT_C const TApaAppCaption& AppCaption() const;
  250.67 -	IMPORT_C void SetChanged(TBool aHasChanged);
  250.68 -	IMPORT_C void SetEditStoreL(CStreamStore* aStore);
  250.69 -	void SetEditStoreWithoutAppUiNotificationL(CStreamStore* aStore);
  250.70 -	inline CStreamStore* EditStore() const;
  250.71 -	IMPORT_C ~CEikDocument();
  250.72 -public: // from MSaveObserver
  250.73 -	IMPORT_C virtual void SaveL(MSaveObserver::TSaveType aSaveType);
  250.74 -public: // from CApaDocument
  250.75 -	IMPORT_C void NewDocumentL();
  250.76 -	IMPORT_C CFileStore* CreateFileStoreLC(RFs& aFs,const TDesC& aFileName);
  250.77 -	IMPORT_C void EditL(MApaEmbeddedDocObserver* aObserver,TBool aReadOnly=EFalse);
  250.78 -	IMPORT_C void PrintL(const CStreamStore& aSourceStore);
  250.79 -	IMPORT_C void SaveL();
  250.80 -	IMPORT_C void StoreL(CStreamStore& aStore,CStreamDictionary& aStreamDic) const;
  250.81 -	IMPORT_C void RestoreL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic);
  250.82 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  250.83 -	IMPORT_C TBool IsEmpty() const;
  250.84 -	IMPORT_C TBool HasChanged() const;
  250.85 -	IMPORT_C virtual void ValidatePasswordL() const; // return EFalse if there *is* a password *and* the user doesn't get it right, ETrue otherwise (ie they get it right or there isn't one). Returns ETrue by default
  250.86 -protected:
  250.87 -	IMPORT_C CEikDocument();
  250.88 -	IMPORT_C CEikDocument(CEikApplication& aApp);
  250.89 -public:
  250.90 -	IMPORT_C virtual void OpenFileL(CFileStore*& aFileStore, RFile& aFile);
  250.91 -private:
  250.92 -	void NullAppUi();
  250.93 -	// reserved functions from CApaDocument
  250.94 -	IMPORT_C virtual void Reserved_2();
  250.95 -protected:
  250.96 -	/** A pointer to the app UI which the document is associated with. */
  250.97 -	CEikAppUi* iAppUi;
  250.98 -	/** A pointer to the file store object which is used to edit the document. */
  250.99 -	CStreamStore* iEditStore;
 250.100 -private:
 250.101 -	TBool iChanged;
 250.102 -	TUint iAppFileMode;
 250.103 -	friend class CEikAppUi;
 250.104 -	};
 250.105 -
 250.106 -/** A pointer to the application process associated with this document.
 250.107 -
 250.108 -@publishedAll
 250.109 -@released */
 250.110 -#define iEikProcess ((CEikProcess*)Process())
 250.111 -
 250.112 -/** A pointer to the application that created this document.
 250.113 -
 250.114 -@publishedAll
 250.115 -@released */
 250.116 -#define iEikApplication ((CEikApplication*)Application())
 250.117 -
 250.118 -/** The default size in twips of icons that represent embedded objects.
 250.119 -
 250.120 -@publishedPartner
 250.121 -@released */
 250.122 -#define KDefaultIconicDoorSize TSize(500,500)
 250.123 -
 250.124 -
 250.125 -/** Gets the file store object which is used to edit the document.
 250.126 -
 250.127 -@return A pointer to the file store object which is used to edit the document. */
 250.128 -inline CStreamStore* CEikDocument::EditStore() const
 250.129 -	{ return(iEditStore); }
 250.130 -
 250.131 -#endif	// __EIKDOC_H__
   251.1 --- a/epoc32/include/eikembal.h	Tue Mar 16 16:12:26 2010 +0000
   251.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   251.3 @@ -1,59 +0,0 @@
   251.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   251.5 -// All rights reserved.
   251.6 -// This component and the accompanying materials are made available
   251.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   251.8 -// which accompanies this distribution, and is available
   251.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  251.10 -//
  251.11 -// Initial Contributors:
  251.12 -// Nokia Corporation - initial contribution.
  251.13 -//
  251.14 -// Contributors:
  251.15 -//
  251.16 -// Description:
  251.17 -//
  251.18 -
  251.19 -#ifndef __EIKEMBAL_H__
  251.20 -#define __EIKEMBAL_H__
  251.21 -
  251.22 -#include <e32base.h>
  251.23 -#include <f32file.h>
  251.24 -#include <bamdesca.h>
  251.25 -#include <apadef.h>
  251.26 -#include <apaid.h>
  251.27 -
  251.28 -class CEikDocument;
  251.29 -class CApaProcess;
  251.30 -class RApaLsSession;
  251.31 -
  251.32 -
  251.33 -/** Provides a list of all embeddable applications on the device. 
  251.34 -
  251.35 -Hidden applications are omitted from the list. The list is sorted by UID.
  251.36 -
  251.37 -@see TApaAppCapability::iAppIsHidden
  251.38 -@publishedAll 
  251.39 -@released */
  251.40 -class CEikEmbeddableAppList : public CArrayFixFlat<TApaAppInfo>, public MDesCArray
  251.41 -	{
  251.42 -public:
  251.43 -	IMPORT_C CEikEmbeddableAppList();
  251.44 -	IMPORT_C ~CEikEmbeddableAppList();
  251.45 -	IMPORT_C void ConstructL();
  251.46 -	IMPORT_C void ConstructL(const TApaEmbeddabilityFilter& aFilter);
  251.47 -	IMPORT_C CEikDocument* CreateEmbeddedDocumentL(TInt aIndex,CApaProcess* aProcess);
  251.48 -private: // from MDesCArray
  251.49 -	IMPORT_C TInt MdcaCount() const;
  251.50 -	IMPORT_C TPtrC MdcaPoint(TInt aIndex) const;
  251.51 -private: // Reserved methods
  251.52 -	IMPORT_C virtual void CEikEmbeddableAppList_Reserved1();
  251.53 -	IMPORT_C virtual void CEikEmbeddableAppList_Reserved2();
  251.54 -private: // utility methods
  251.55 -	TInt GetAppListL(const TApaEmbeddabilityFilter& aFilter);
  251.56 -	TInt DoGetAppListL(RApaLsSession& aLs, const TApaEmbeddabilityFilter& aFilter);
  251.57 -	void SortAppListL();
  251.58 -private:
  251.59 -	TInt iCEikEmbeddableAppList_Reserved1;
  251.60 -	};
  251.61 -
  251.62 -#endif	// __EIKEMBAL_H__
   252.1 --- a/epoc32/include/eikenv.h	Tue Mar 16 16:12:26 2010 +0000
   252.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   252.3 @@ -1,493 +0,0 @@
   252.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   252.5 -// All rights reserved.
   252.6 -// This component and the accompanying materials are made available
   252.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   252.8 -// which accompanies this distribution, and is available
   252.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  252.10 -//
  252.11 -// Initial Contributors:
  252.12 -// Nokia Corporation - initial contribution.
  252.13 -//
  252.14 -// Contributors:
  252.15 -//
  252.16 -// Description:
  252.17 -//
  252.18 -
  252.19 -#ifndef __EIKENV_H__
  252.20 -#define __EIKENV_H__
  252.21 -
  252.22 -#include <uikon.hrh>
  252.23 -#include <coemain.h>
  252.24 -#include <coedef.h>
  252.25 -#include <eikdef.h>
  252.26 -#include <gulalign.h>
  252.27 -#include <apaflrec.h>
  252.28 -#include <apacmdln.h>
  252.29 -#include <badesca.h>
  252.30 -#include <baerrhan.h>
  252.31 -#include <gulcolor.h>
  252.32 -#include <eikdgfty.h>
  252.33 -#include <eikaufty.h>
  252.34 -#include <eiklibry.h>
  252.35 -#include <eikamnt.h>
  252.36 -#include <lafmain.h>
  252.37 -#include <eikvcurs.h>
  252.38 -#include <babitflags.h>
  252.39 -#include <eikpicturefactory.h>
  252.40 -
  252.41 -class CEikProcess;
  252.42 -class MEikInfoMsgWin;
  252.43 -class MEikBusyMsgWin;
  252.44 -class CEikAppUi;
  252.45 -class CEikHotKeyTable;
  252.46 -class CCoeControl;
  252.47 -class CParaFormatLayer;
  252.48 -class CCharFormatLayer;
  252.49 -class CCoeBrushAndPenContext;
  252.50 -class CEikCommandButton;
  252.51 -class CPrintSetup;
  252.52 -class CDictionaryStore;
  252.53 -class CApaWindowGroupName;
  252.54 -class CEikErrorIdler;
  252.55 -class CEikApplication;
  252.56 -class MEikInfoDialog;
  252.57 -class MEikAlertWin;
  252.58 -class CEikDialog;
  252.59 -class MEikDebugKeys;
  252.60 -class CEikLibrary;
  252.61 -class MEikAppUiFactory;
  252.62 -class MEikIrFactory;
  252.63 -class CGulIcon;
  252.64 -class CApaMaskedBitmap;
  252.65 -class CEikLogicalBorderProxy;
  252.66 -class CEikLafEnv;
  252.67 -class TLogicalFont;
  252.68 -class CEikPictureFactory;
  252.69 -class CEikEnvExtra;
  252.70 -class TApaApplicationFactory;
  252.71 -class CEikAppServer;
  252.72 -class CLafSystemFont;
  252.73 -class RApaLsSession;
  252.74 -
  252.75 -/**
  252.76 -@publishedAll
  252.77 -@released
  252.78 -*/
  252.79 -typedef void (*TRequestDialogFunc)();
  252.80 -
  252.81 -/**
  252.82 -@internalComponent
  252.83 -*/
  252.84 -const TUid KUikonLibraryUid = {KUidUikonLibraryValue};
  252.85 -
  252.86 -/**
  252.87 -Creates the CEikLibrary interface object by calling the first ordinal function which is mapped to NewL method.
  252.88 -
  252.89 -The function leaves with KErrBadLibraryEntryPoint if the ordinal 1 function 
  252.90 -cannot be found.
  252.91 -
  252.92 -@publishedPartner
  252.93 -@released
  252.94 -*/
  252.95 -typedef CEikLibrary* (*EikLibraryEntryPoint)();
  252.96 -
  252.97 -
  252.98 -/** An environment for creating controls and utility functions for manipulating 
  252.99 -them. 
 252.100 -
 252.101 -Every GUI application is provided with an instance of CEikonEnv 
 252.102 -by the framework, which can be accessed through either CEikonEnv::Static() 
 252.103 -or the iEikonEnv macro of CEikApplication.
 252.104 -
 252.105 -@publishedAll 
 252.106 -@released */
 252.107 -class CEikonEnv : public CCoeEnv
 252.108 -	{
 252.109 -public:
 252.110 -	enum TErrorValidity
 252.111 -		{ EErrorNumValid, EErrorNumInvalid };
 252.112 -public: 
 252.113 -	// Properties
 252.114 -	IMPORT_C static TVersion Version();
 252.115 -	inline static CEikonEnv* Static();
 252.116 -	// Construction and destruction
 252.117 -	IMPORT_C ~CEikonEnv();
 252.118 -	IMPORT_C CEikonEnv();
 252.119 -	IMPORT_C void ConstructL();
 252.120 -	IMPORT_C void ConstructL(TBool aInitialFocusState);
 252.121 -	IMPORT_C void ConstructL(TBool aInitialFocusState, TInt aWindowGroupID);
 252.122 -	IMPORT_C void ConstructAppFromCommandLineL(const TApaApplicationFactory& aApplicationFactory, const CApaCommandLine& aCommandLine);
 252.123 -	IMPORT_C void ControlStackReadyL();
 252.124 -	IMPORT_C void DestroyEnvironment();
 252.125 -	//
 252.126 -	inline CEikAppUi* EikAppUi() const;
 252.127 -	inline CEikProcess* Process() const;
 252.128 -	// Legacy font support (see new TCoeFont and CCoeControl::ScreenFont())
 252.129 -	IMPORT_C const CFont* AnnotationFont() const;
 252.130 -	IMPORT_C const CFont* TitleFont() const;
 252.131 -	IMPORT_C const CFont* LegendFont() const;
 252.132 -	IMPORT_C const CFont* SymbolFont() const;
 252.133 -	IMPORT_C const CFont* DenseFont() const;
 252.134 -	IMPORT_C const CFont* Font(const TLogicalFont& aLogicalFont) const;
 252.135 -	IMPORT_C void UpdateSystemFontsL();
 252.136 -	// System bitmaps
 252.137 -	IMPORT_C const CFbsBitmap* TexturedBitmap() const;			// deprecated
 252.138 -	IMPORT_C const CFbsBitmap* GrayBitmap() const;				// deprecated
 252.139 -	IMPORT_C const CFbsBitmap* OptionBitmap() const;			// deprecated
 252.140 -	IMPORT_C const CFbsBitmap* HighlightedOptionBitmap() const;
 252.141 -	IMPORT_C const CFbsBitmap* OptionMaskBitmap() const;		// deprecated
 252.142 -	IMPORT_C const CFbsBitmap* Bitmap(TUid aUidBmp) const;
 252.143 -public:
 252.144 -	IMPORT_C TBool ConfirmLossOfAllChangesL() const;
 252.145 -	
 252.146 -	IMPORT_C MPictureFactory* PictureFactory() const;
 252.147 -	IMPORT_C MEikPictureFactory* ExtendedPictureFactory(TUid aPictureType) const;
 252.148 -	IMPORT_C void AddPictureFactoryL(MEikPictureFactory& aFactory);
 252.149 -	IMPORT_C void RemovePictureFactory(TUid aFactoryId);
 252.150 -	// Alert dialogs
 252.151 -	IMPORT_C void AlertWin(const TDesC& aMsg);
 252.152 -	IMPORT_C void AlertWin(const TDesC& aMsg1, const TDesC& aMsg2);
 252.153 -	inline const MEikAlertWin* Alert() const;
 252.154 -	IMPORT_C void SetAlertWin(MEikAlertWin* aAlertWin);
 252.155 -	// Error handling
 252.156 -	IMPORT_C void LeaveWithInfoMsg(TInt aResourceId,...);
 252.157 -	IMPORT_C void LeaveWithErrorContext(TInt aError, const TDesC& aContextText);		// deprecated
 252.158 -	IMPORT_C void GetErrorText(TDes& aDes,TInt aError) const;
 252.159 -	IMPORT_C TErrorValidity GetErrorText(TDes& aErrorText, TInt aError, TUid aAppUid) const;
 252.160 -	IMPORT_C TErrorValidity GetErrorTextAndTitle(TDes& aErrorText, TInt aError, TDes& aTitleText) const;
 252.161 -	IMPORT_C void ResolveError(TInt aError, TUid aAppUid = KNullUid) const;
 252.162 -	IMPORT_C void NotifyIdleErrorWhileRedrawing(TInt aError);
 252.163 -	IMPORT_C void NotifyIdleError(TInt aError, TInt aContextResourceId);
 252.164 -	IMPORT_C void HandleErrorWithContext(TInt aError,TInt aContextResourceId);
 252.165 -	// Info prints
 252.166 -	IMPORT_C void InfoMsg(const TDesC& aDes);
 252.167 -	IMPORT_C void InfoMsgWithAlignment(TGulAlignment aCorner,const TDesC& aDes);
 252.168 -	IMPORT_C void InfoMsg(TInt aResourceId, ...);
 252.169 -	IMPORT_C void InfoMsg(TInt aResourceId, VA_LIST aList);
 252.170 -	IMPORT_C void InfoMsgWithAlignment(TGulAlignment aCorner, TInt aResourceId,...);
 252.171 -	IMPORT_C void InfoMsgWithAlignment(TGulAlignment aCorner, TInt aResourceId, VA_LIST aList);
 252.172 -	IMPORT_C void InfoMsgWithDuration(const TDesC& aDes, TTimeIntervalMicroSeconds32 aDuration);
 252.173 -	IMPORT_C void InfoMsgWithDuration(TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, ...);
 252.174 -	IMPORT_C void InfoMsgWithDuration(TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, VA_LIST aList);
 252.175 -	IMPORT_C void InfoMsgWithAlignmentAndDuration(TGulAlignment aCorner, const TDesC& aDes, TTimeIntervalMicroSeconds32 aDuration);
 252.176 -	IMPORT_C void InfoMsgWithAlignmentAndDuration(TGulAlignment aCorner, TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, ...);
 252.177 -	IMPORT_C void InfoMsgWithAlignmentAndDuration(TGulAlignment aCorner, TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, VA_LIST aList);
 252.178 -	IMPORT_C void InfoMsgCancel();
 252.179 -	IMPORT_C void VerboseInfoMsg(const TDesC& aDes);
 252.180 -	IMPORT_C void SetVerboseInfoReporting(TBool aVerbose);	// deprecated
 252.181 -	// Busy messages
 252.182 -	IMPORT_C void BusyMsgL(const TDesC& aDes);
 252.183 -	IMPORT_C void BusyMsgL(const TDesC& aDes, TGulAlignment aCorner);
 252.184 -	IMPORT_C void BusyMsgL(TInt aResourceId);
 252.185 -	IMPORT_C void BusyMsgL(const TDesC& aDes, TTimeIntervalMicroSeconds32 aInitialDelay);
 252.186 -	IMPORT_C void BusyMsgL(const TDesC& aDes, TGulAlignment aCorner, TTimeIntervalMicroSeconds32 aInitialDelay);
 252.187 -	IMPORT_C void BusyMsgL(TInt aResourceId, TTimeIntervalMicroSeconds32 aInitialDelay);
 252.188 -	IMPORT_C void BusyMsgCancel();
 252.189 -	// Query dialogs
 252.190 -	IMPORT_C static TBool QueryWinL(const TDesC& aFirstLine, const TDesC& aSecondLine);
 252.191 -	IMPORT_C TBool QueryWinL(TInt aFirstLineId, TInt aSecondLineId = 0) const;
 252.192 -	IMPORT_C void SetQueryDialog(MEikInfoDialog* aQueryDialog);
 252.193 -	IMPORT_C void SetRequestQueryDialogFunc(TRequestDialogFunc aQueryDialogFunc);
 252.194 -	// Info dialogs
 252.195 -	IMPORT_C static void InfoWinL(const TDesC& aFirstLine, const TDesC& aSecondLine);
 252.196 -	IMPORT_C void InfoWinL(TInt aFirstLineId, TInt aSecondLineId = 0) const;
 252.197 -	IMPORT_C void SetInfoDialog(MEikInfoDialog* aInfoDialog);
 252.198 -	IMPORT_C void SetRequestInfoDialogFunc(TRequestDialogFunc aInfoDialogFunc);
 252.199 -	IMPORT_C void AllocInfoMsg();
 252.200 -	IMPORT_C void WservAllocInfoMsg();
 252.201 -	IMPORT_C void FservAllocInfoMsg();
 252.202 -	// Sound notificatons
 252.203 -	IMPORT_C static void Beep();	// deprecated
 252.204 -	// Bitmap  utilities
 252.205 -	IMPORT_C CWsBitmap* CreateBitmapL(const TDesC& aFileName, TInt aId);
 252.206 -	IMPORT_C CWsBitmap* CreateBitmapL(const TDesC& aFileName, TInt aId, TBool aShowDlgIfErr);
 252.207 -	IMPORT_C CGulIcon* CreateIconL(const TDesC& aFileName, TInt aBitmapId, TInt aMaskId = KErrNotFound);
 252.208 -	IMPORT_C static CGulIcon* CreateIconFromMaskedBitmapL(const CApaMaskedBitmap& aApaMaskedBitmap);
 252.209 -	// Debugging
 252.210 -	IMPORT_C void SetDebugKeys(MEikDebugKeys* aDebugKeys);
 252.211 -	// Menu utilities
 252.212 -	IMPORT_C void LaunchPopupMenuL(TInt aResourceId, const TPoint& aTargetPos, TPopupTargetPosType aTargetType = EPopupTargetTopLeft, const CEikHotKeyTable* aHotKeyTable = NULL);
 252.213 -	// Graphical effects
 252.214 -	IMPORT_C static void AddWindowShadow(CCoeControl* aWinArea);
 252.215 -	IMPORT_C RAnimDll& ClockDllL();
 252.216 -	// Text formatting parameters
 252.217 -	IMPORT_C CParaFormatLayer* SystemSingleLineParaFormatLayerL();
 252.218 -	IMPORT_C CParaFormatLayer* SystemParaFormatLayerL();
 252.219 -	IMPORT_C CCharFormatLayer* SystemCharFormatLayerL();
 252.220 -	IMPORT_C static CParaFormatLayer* NewDefaultSingleLineParaFormatLayerL();
 252.221 -	IMPORT_C static CParaFormatLayer* NewDefaultParaFormatLayerL();
 252.222 -	IMPORT_C static CCharFormatLayer* NewDefaultCharFormatLayerL();
 252.223 -  	// Control stack utilities
 252.224 -	IMPORT_C void AddDialogLikeControlToStackL(CCoeControl* aControl);
 252.225 -	IMPORT_C void AddAlertDialogLikeControlToStackL(CCoeControl* aControl);
 252.226 -	IMPORT_C void RemoveFromStack(CCoeControl* aControl);
 252.227 -	IMPORT_C void AddSleepingDialogToStackL(CCoeControl* aControl);
 252.228 -	IMPORT_C void AddSleepingAlertDialogToStackL(CCoeControl* aControl);
 252.229 -	IMPORT_C void RouseSleepingDialog(CCoeControl* aControl, TBool aRoused);
 252.230 -	// Text cursors
 252.231 -	IMPORT_C void DrawCursor(const CCoeControl* aControl, const TPoint& aPosition, TInt aWidth);
 252.232 -	IMPORT_C void DrawCursor(const CCoeControl* aControl, const TPoint& aPosition, TInt aWidth, TInt aAscent, TInt aHeight);
 252.233 -	IMPORT_C void HideCursor(const CCoeControl* aControl);
 252.234 -	// Virtual pointer device cursor
 252.235 -	IMPORT_C TEikVirtualCursor& VirtualCursor();
 252.236 -	// Control of the application's ordinal position
 252.237 -	IMPORT_C void BringForwards(TBool aForwards, TInt aPriority = ECoeWinPriorityAlwaysAtFront);
 252.238 -	IMPORT_C void SetAutoForwarding(TBool aAutoBringToForeground);
 252.239 -	// 
 252.240 -	IMPORT_C TPtrC KeyPressLabel(TInt aIndex) const;	// deprecated
 252.241 -	// Printing
 252.242 -	IMPORT_C CPrintSetup* NewDefaultPrintSetupL();
 252.243 -	IMPORT_C static void GetPrinterNamesL(CPrinterModelList* aModelNameList, CDesCArray& aPrinterNameList);
 252.244 -	// Application properties
 252.245 -	IMPORT_C void UpdateTaskNameL();
 252.246 -	IMPORT_C void SetBusy(TBool aBusy);
 252.247 -	IMPORT_C TBool IsBusy() const;
 252.248 -	IMPORT_C void SetSystem(TBool aSystem);
 252.249 -	IMPORT_C TBool IsSystem() const;
 252.250 -	IMPORT_C void SetDocNameIsAFile(TBool aDocNameIsAFile);
 252.251 -	IMPORT_C TBool DocNameIsAFile() const;
 252.252 -	IMPORT_C void SetRespondsToShutdownEvent(TBool aRespondsToShutdownEvent);
 252.253 -	IMPORT_C TBool RespondsToShutdownEvent() const;
 252.254 -	IMPORT_C void SetRespondsToSwitchFilesEvent(TBool aRespondsToSwitchFilesEvent);
 252.255 -	IMPORT_C TBool RespondsToSwitchFilesEvent() const;
 252.256 -	// Task list dialog
 252.257 -	IMPORT_C void DisplayTaskList();
 252.258 -	IMPORT_C void DismissTaskList();
 252.259 -public: // Internal (for Symbian and partners only)
 252.260 -	// Dialog factories
 252.261 -	inline MEikCDlgDialogFactory* CDlgDialogFactory() const;
 252.262 -	inline MEikPrintDialogFactory* PrintDialogFactory() const;
 252.263 -	inline MEikFileDialogFactory* FileDialogFactory() const;
 252.264 -	inline MEikIrFactory* IrFactory() const;
 252.265 -	inline void SetCDlgDialogFactory(MEikCDlgDialogFactory* aDialogFactory);
 252.266 -	inline void SetPrintDialogFactory(MEikPrintDialogFactory* aDialogFactory);
 252.267 -	inline void SetFileDialogFactory(MEikFileDialogFactory* aDialogFactory);
 252.268 -	inline void SetIrFactory(MEikIrFactory* aIrFactory);
 252.269 -	CArrayFix<TCreateByTypeFunction>* ControlFactoryFuncArray() const;
 252.270 -	// Color scheme
 252.271 -	inline CColorList& ColorList() const;
 252.272 -	inline TRgb Color(TLogicalColor aLogicalColor) const;
 252.273 -	inline void SetColor(TLogicalColor aLogicalColor, TRgb aColor);
 252.274 -	IMPORT_C TRgb ControlColor(TLogicalColor aLogicalColor,const CCoeControl& aControl) const;
 252.275 -	inline CColorArray& CustomColorArray() const;
 252.276 -	IMPORT_C CColorList* CreateSystemColorListL();
 252.277 -	IMPORT_C CColorList* CreateSystemColorListL(const CColorList& aColorList);
 252.278 -	IMPORT_C void UpdateSystemColorListL(const CColorList& aColorList);
 252.279 -	IMPORT_C CColorList* PopulateColorArrayL();
 252.280 -	// Library loading and unloading
 252.281 -	IMPORT_C TInt AddLibraryL(TCreateByTypeFunction aControlFactory, TFileName* aResourceFile);
 252.282 -	inline TInt AddLibraryL(TCreateByTypeFunction aControlFactory);
 252.283 -	inline TInt AddLibraryL(TFileName* aResourceFile);
 252.284 -	IMPORT_C void RemoveLibrary(TCreateByTypeFunction aControlFactory, TInt aResourceFileOffset);
 252.285 -	inline void RemoveLibrary(TCreateByTypeFunction aControlFactory);
 252.286 -	inline void RemoveLibrary(TInt aResourceFileOffset);
 252.287 -	// Legacy UI utilities
 252.288 -	inline TChar NudgeCharMinus() const;
 252.289 -	inline TChar NudgeCharPlus() const;
 252.290 -	// Status pane
 252.291 -	inline TInt StatusPaneCoreResId() const;
 252.292 -	inline void SetStatusPaneCoreResId(TInt aStatusPaneCoreResId);
 252.293 -	// Auto menus
 252.294 -	IMPORT_C void AddAutoMenuTitleL(CEikAutoMenuTitle* aTitle);
 252.295 -	inline CEikAutoMenuTitleArray* AutoMenuTitleArray() const;
 252.296 -	// Display mode
 252.297 -	IMPORT_C TDisplayMode DefaultDisplayMode() const;
 252.298 -public: // internal
 252.299 -	IMPORT_C MLafEnv& LafEnv() const;				// deprecated
 252.300 -	inline TInt EditableControlStandardHeight() const;
 252.301 -	IMPORT_C void SendEventToEikonServer(TInt aEvent,const TAny* aPtr,TInt aLength);
 252.302 -	// Object factories
 252.303 -	IMPORT_C MEikAppUiFactory* AppUiFactory() const;
 252.304 -	IMPORT_C MEikAppUiFactory* AppUiFactory(const CEikAppUi& aAppUi) const;
 252.305 -	IMPORT_C void SetAppUiFactoryL(MEikAppUiFactory* aAppUiFactory);
 252.306 -	IMPORT_C void AddAppUiFactoryL(MEikAppUiFactory* aAppUiFactory);
 252.307 -	IMPORT_C void RemoveAppUiFactory();
 252.308 -public: // Internal. Do not use!
 252.309 -	IMPORT_C void SetExtension(CBase* aExtension);	// deprecated
 252.310 -	inline CBase* Extension() const;				// deprecated
 252.311 -	IMPORT_C void HandleError(TInt aError);
 252.312 -	IMPORT_C void WriteInternalStateOfStackedControlsL();
 252.313 -	IMPORT_C void DoGetErrorText(TDes& aDes,TInt aError) const;
 252.314 -	IMPORT_C TErrorValidity DoGetErrorTextAndTitle(TDes& aErrorText, TInt aError, TInt& aTextId, TUint& aFlags, TDes& aTitleText, TBool aIsMemoryAllocatedByErrResolver = EFalse) const;
 252.315 -	void InitSystemBitmapsL();
 252.316 -	void UpdateColorListL();
 252.317 -	void PostAppUiInitializeL();
 252.318 -	TLanguage ApplicationLanguage() const;
 252.319 -	void PostAppUiDestroy();
 252.320 -private:
 252.321 -	IMPORT_C virtual void CEikonEnv_Reserved_1();
 252.322 -	IMPORT_C virtual void CEikonEnv_Reserved_2();
 252.323 -	IMPORT_C virtual void CEikonEnv_Reserved_3();
 252.324 -	IMPORT_C virtual void CEikonEnv_Reserved_4();
 252.325 -	IMPORT_C virtual void CEikonEnv_Reserved_5();	
 252.326 -private: // framework functions
 252.327 -	IMPORT_C void DestroyScreen();
 252.328 -	IMPORT_C void InitSystemFontsL();
 252.329 -	IMPORT_C TInt ResourceFileVersionNumber() const;
 252.330 -public:
 252.331 -	IMPORT_C MEikInfoDialog* QueryDialog() const;
 252.332 -	IMPORT_C MEikInfoDialog* InfoDialog() const;
 252.333 -public:
 252.334 -	IMPORT_C CEikAppServer* AppServer() const;
 252.335 -	IMPORT_C TBool StartedAsServerApp() const;
 252.336 -protected:
 252.337 -	friend class CEikServAppUi;
 252.338 -private: // Internal
 252.339 -	void InitSystemResourceFileL();
 252.340 -	void InitPrivateResourceFileL();
 252.341 -	void InitInfoMsgL();
 252.342 -	void PrepareBusyMsgL();
 252.343 -	void InitAlertWinL();
 252.344 -	void InitDebugKeysL();
 252.345 -	TErrorHandlerResponse PrepareToHandleError(TInt aError);
 252.346 -	void DoHandleError(TErrorHandlerResponse aType);
 252.347 -	static TInt IdleErrorCallBack(TAny* aThis);
 252.348 -	void InitColorSchemeL();
 252.349 -	void LoadParserListL();
 252.350 -	void LoadLibrariesL();
 252.351 -	void CloseLibraries();
 252.352 -	TRequestDialogFunc RequestQueryDialogFunc();
 252.353 -	TRequestDialogFunc RequestInfoDialogFunc();
 252.354 -	void SetAppReady();
 252.355 -public:
 252.356 -	TBool IsEiksrvThread() const;
 252.357 -private:
 252.358 -	TBool InfoWinOrQueryWinL(TInt aFirstLineId,TInt aSecondLineId,TBool aIsQueryWin=EFalse) const;
 252.359 -	void SetCommandLineDebugMemFailL(const CApaCommandLine& aCommandLine);
 252.360 -	void StoreAppLanguageL(const RApaLsSession& aLsSession);
 252.361 -	void ErrorContextL(TInt aError,const TDesC& aContextText);
 252.362 -private:
 252.363 -	IMPORT_C virtual void CEikonEnv_Reserved_6();
 252.364 -	IMPORT_C virtual void CEikonEnv_Reserved_7();
 252.365 -	IMPORT_C virtual void CEikonEnv_Reserved_8();
 252.366 -	IMPORT_C virtual void CEikonEnv_Reserved_9();
 252.367 -	IMPORT_C virtual void CEikonEnv_Reserved_10();	
 252.368 -private:
 252.369 -	NONSHARABLE_CLASS(TEikAppUiFactory)
 252.370 -		{
 252.371 -	public:
 252.372 -		MEikAppUiFactory* iFactory;
 252.373 -		CEikAppUi* iAppUi;
 252.374 -		};
 252.375 -private:
 252.376 -	TBitFlags iEikonEnvFlags;
 252.377 -	TInt iForwardsCount;
 252.378 -	TInt iBusyCount;
 252.379 -	CEikProcess* iProcess;
 252.380 -	RAnimDll* iClockDll;
 252.381 -	CArrayPtr<CLafSystemFont>* iFontArray;
 252.382 -	MEikInfoMsgWin* iInfoMsgWin;
 252.383 -	MEikBusyMsgWin* iBusyMsgWin;
 252.384 -	MEikAlertWin* iAlertWin;
 252.385 -	TInt iSystemResourceFileOffset;
 252.386 -	HBufC8* iKeyPressLabels;
 252.387 -	CParaFormatLayer* iSingleLineParaFormatLayer;
 252.388 -	CParaFormatLayer* iParaFormatLayer;
 252.389 -	CCharFormatLayer* iCharFormatLayer;
 252.390 -	const CCoeControl* iCursorWindow;
 252.391 -	TInt iEditableControlStandardHeight;
 252.392 -	CApaWindowGroupName* iWgName;
 252.393 -	CEikErrorIdler* iErrorIdler;
 252.394 -	TInt iPrivateResourceFileOffset;
 252.395 -	CColorList* iColorList;
 252.396 -	CEikPictureFactory* iPictureFactory;
 252.397 -	TBuf<2> iNudgeChars;
 252.398 -	MEikInfoDialog* iQueryDialog;
 252.399 -	MEikInfoDialog* iInfoDialog;
 252.400 -	TRequestDialogFunc	iQueryDialogFunc;
 252.401 -	TRequestDialogFunc	iInfoDialogFunc;
 252.402 -	CArrayFix<TCreateByTypeFunction>* iControlFactoryFuncArray;
 252.403 -	CArrayFix<TInt>* iResourceFileOffsetArray;
 252.404 -	TBool iAlertWinInitialized;
 252.405 -	MEikDebugKeys* iDebugKeys;
 252.406 -	MEikCDlgDialogFactory* iCDlgDialogFactory;
 252.407 -	MEikPrintDialogFactory* iPrintDialogFactory;
 252.408 -	MEikFileDialogFactory* iFileDialogFactory;
 252.409 -	CArrayFix<TEikAppUiFactory>* iAppUiFactoryArray;
 252.410 -	MEikIrFactory* iIrFactory;
 252.411 -	CArrayPtr<CEikLibrary>* iLibraries;
 252.412 -	TInt iEmbeddedAppLevel;
 252.413 -	TInt iAutoLoadedResourceFiles;
 252.414 -	TInt iAutoLoadedControlFactories;
 252.415 -	CBase* iExtension;
 252.416 -	TInt iStatusPaneCoreResId;
 252.417 -	CEikAutoMenuTitleArray* iAutoMenuTitleArray;
 252.418 -	TEikVirtualCursor iVirtualCursor;
 252.419 -	CEikLogicalBorderProxy* iLogicalBorderProxy;
 252.420 -	CEikLafEnv* iLafEnv;
 252.421 -	CArrayPtrFlat<CFbsBitmap>* iBitmapArray;
 252.422 -	CEikEnvExtra* iEikEnvExtra; // used to be TInt iSpare1;
 252.423 -	HBufC* iOOMErrorText;		// used to be TInt iSpare2;
 252.424 -	TInt iSpare3;
 252.425 -	};
 252.426 -
 252.427 -
 252.428 -/** Interface for launching a dialog with a title and a message, for instance a 
 252.429 -query dialog.
 252.430 -
 252.431 -Dialogs implementing this interface can be passed to CEikonEnv::SetQueryDialog() 
 252.432 -or CEikonEnv::SetInfoDialog(). 
 252.433 -
 252.434 -@publishedAll
 252.435 -@released */
 252.436 -class MEikInfoDialog
 252.437 -	{
 252.438 -public:
 252.439 -	/** Initialises and executes the dialog.
 252.440 -	
 252.441 -	@param aResource The ID of the DIALOG resource that identifies the dialog's 
 252.442 -	type. For instance, a query dialog (with Yes/No buttons) or an info dialog 
 252.443 -	(with a Continue button).
 252.444 -	@param aTitle The dialog's title.
 252.445 -	@param aMsg The message to display in the dialog.
 252.446 -	@return True if the Confirm button (or equivalent) was pressed, false if the 
 252.447 -	dialog was cancelled. */
 252.448 -	virtual TBool RunDlgLD(TInt aResource, const TDesC& aTitle, const TDesC& aMsg) = 0;
 252.449 -	};
 252.450 -
 252.451 -
 252.452 -/**
 252.453 -@publishedPartner
 252.454 -@released
 252.455 -*/
 252.456 -class MEikAlertWin
 252.457 -	{
 252.458 -public:
 252.459 -	virtual void ConstructL() = 0;
 252.460 -	virtual void RunAlert(const TDesC& aTitle, const TDesC& aMsg) = 0;
 252.461 -	virtual void Release() = 0;
 252.462 -	virtual CEikDialog* AsEikDialog() = 0;
 252.463 -	inline const CEikDialog* AsEikDialog() const;
 252.464 -	IMPORT_C virtual CCoeControl* AsCoeControl();
 252.465 -	inline const CCoeControl* AsCoeControl() const;
 252.466 -private:
 252.467 -	IMPORT_C virtual void MEikAlertWin_Reserved2();
 252.468 -	IMPORT_C virtual void MEikAlertWin_Reserved3();
 252.469 -	};
 252.470 -
 252.471 -
 252.472 -/**
 252.473 -@publishedPartner 
 252.474 -@released 
 252.475 -*/
 252.476 -class MEikDebugKeys
 252.477 -	{
 252.478 -public:
 252.479 -	virtual void ConstructL() = 0;
 252.480 -	virtual void Release() = 0;
 252.481 -private:
 252.482 -	IMPORT_C virtual void MEikDebugKeys_Reserved1();
 252.483 -	IMPORT_C virtual void MEikDebugKeys_Reserved2();
 252.484 -	IMPORT_C virtual void MEikDebugKeys_Reserved3();
 252.485 -	};
 252.486 -
 252.487 -
 252.488 -IMPORT_C void InternalizeL(TEikPortFlag& aThing,RReadStream& aStream);
 252.489 -inline RWriteStream& operator<<(RWriteStream& aStream,const TEikPortFlag& aThing)
 252.490 -	{aStream.WriteUint8L(aThing);return aStream;}
 252.491 -inline RReadStream& operator>>(RReadStream& aStream,TEikPortFlag& aThing)
 252.492 -	{InternalizeL(aThing,aStream);return aStream;}
 252.493 -
 252.494 -#include <eikenv.inl>
 252.495 -
 252.496 -#endif	// __EIKENV_H__
   253.1 --- a/epoc32/include/eikenv.inl	Tue Mar 16 16:12:26 2010 +0000
   253.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   253.3 @@ -1,194 +0,0 @@
   253.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   253.5 -// All rights reserved.
   253.6 -// This component and the accompanying materials are made available
   253.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   253.8 -// which accompanies this distribution, and is available
   253.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  253.10 -//
  253.11 -// Initial Contributors:
  253.12 -// Nokia Corporation - initial contribution.
  253.13 -//
  253.14 -// Contributors:
  253.15 -//
  253.16 -// Description:
  253.17 -//
  253.18 -
  253.19 -
  253.20 -
  253.21 -/**
  253.22 - Gets the CEikonEnv maintained by the framework for the application. 
  253.23 - 
  253.24 - This function should never be run in a thread where such a static Uikon environment 
  253.25 - does not exist. Code that may run on the server side of an application server 
  253.26 - is one such case.
  253.27 - 
  253.28 - @return A static CEikonEnv. 
  253.29 - @see CCoeEnv::Static() 
  253.30 -*/
  253.31 -inline CEikonEnv* CEikonEnv::Static()
  253.32 -	{ return((CEikonEnv*)(CCoeEnv::Static())); }
  253.33 -
  253.34 -/**
  253.35 -@publishedPartner
  253.36 -@released
  253.37 -*/
  253.38 -inline TInt CEikonEnv::EditableControlStandardHeight() const
  253.39 -	{ return(iEditableControlStandardHeight); }
  253.40 -
  253.41 -/** Gets the Uikon process that manages the files of applications started in this 
  253.42 -environment.
  253.43 -
  253.44 -@return The CEikProcess object. */
  253.45 -inline CEikProcess* CEikonEnv::Process() const
  253.46 -	{ return(iProcess); }
  253.47 -
  253.48 -/** Gets the application UI of the application using this CEikonEnv.
  253.49 -
  253.50 -@return Pointer to the CEikAppUi. */
  253.51 -inline CEikAppUi* CEikonEnv::EikAppUi() const
  253.52 -	{ return((CEikAppUi*)iAppUi); }
  253.53 -inline const MEikAlertWin* CEikonEnv::Alert() const
  253.54 -	{ return(iAlertWin); }
  253.55 -
  253.56 -/** Gets the minus nudge character, this could be the left arrow for example. 
  253.57 -
  253.58 -@return Minus nudge character. */
  253.59 -inline TChar CEikonEnv::NudgeCharMinus() const
  253.60 -	{return(iNudgeChars[0]);}
  253.61 -
  253.62 -/** Gets the plus nudge character, this could be the right arrow for example.
  253.63 -
  253.64 -@return Plus nudge character. */
  253.65 -inline TChar CEikonEnv::NudgeCharPlus() const
  253.66 -	{return(iNudgeChars[1]);}
  253.67 -
  253.68 -/** Gets the physical (TRgb) colour which corresponds to a logical colour.
  253.69 -
  253.70 -@param aLogicalColor A logical colour value. 
  253.71 -@return The physical colour which corresponds to aLogicalColor. */
  253.72 -inline TRgb CEikonEnv::Color(TLogicalColor aLogicalColor) const
  253.73 -	{return ColorList().Color(aLogicalColor); }
  253.74 -
  253.75 -/** Gets the custom colour array.
  253.76 -
  253.77 -@return The custom colour array. */
  253.78 -inline CColorArray& CEikonEnv::CustomColorArray() const
  253.79 -	{return *(ColorList().ColorArray(TUid::Uid(KEikCustomColorsArrayValue)));}
  253.80 -
  253.81 -/** Gets the application's colour list. 
  253.82 -
  253.83 -The colour list provides member functions to retrieve and modify colours 
  253.84 -in the list, and to append new arrays of colours to the colour list.
  253.85 -
  253.86 -@return The application's colour list */
  253.87 -inline CColorList& CEikonEnv::ColorList() const
  253.88 -	{__ASSERT_DEBUG(iColorList,User::Invariant()); return *iColorList; }
  253.89 -
  253.90 -/** Sets a mapping in the application's colour list between the logical and physical 
  253.91 -colours specified.
  253.92 -
  253.93 -@param aLogicalColor A logical colour value. 
  253.94 -@param aColor A physical colour value. */
  253.95 -inline void CEikonEnv::SetColor(TLogicalColor aLogicalColor, TRgb aColor)
  253.96 -	{ ColorList().SetColor(aLogicalColor, aColor); }
  253.97 -
  253.98 -/**
  253.99 -@publishedPartner
 253.100 -@released
 253.101 -*/
 253.102 -inline void CEikonEnv::SetCDlgDialogFactory(MEikCDlgDialogFactory* aDialogFactory)
 253.103 -	{iCDlgDialogFactory=aDialogFactory;}
 253.104 -
 253.105 -/**
 253.106 -@publishedPartner
 253.107 -@released
 253.108 -*/
 253.109 -inline void CEikonEnv::SetPrintDialogFactory(MEikPrintDialogFactory* aDialogFactory)
 253.110 -	{iPrintDialogFactory=aDialogFactory;}
 253.111 -
 253.112 -/**
 253.113 -@publishedPartner
 253.114 -@released
 253.115 -*/
 253.116 -inline void CEikonEnv::SetFileDialogFactory(MEikFileDialogFactory* aDialogFactory)
 253.117 -	{iFileDialogFactory=aDialogFactory;}
 253.118 -
 253.119 -/**
 253.120 -@publishedPartner
 253.121 -@released
 253.122 -*/
 253.123 -inline void CEikonEnv::SetIrFactory(MEikIrFactory* aIrFactory)
 253.124 -	{iIrFactory=aIrFactory;}
 253.125 -
 253.126 -/**
 253.127 -@publishedPartner
 253.128 -@released
 253.129 -*/
 253.130 -inline MEikCDlgDialogFactory* CEikonEnv::CDlgDialogFactory() const
 253.131 -	{return iCDlgDialogFactory;}
 253.132 -
 253.133 -/**
 253.134 -@publishedPartner
 253.135 -@released
 253.136 -*/
 253.137 -inline MEikPrintDialogFactory* CEikonEnv::PrintDialogFactory() const
 253.138 -	{return iPrintDialogFactory;}
 253.139 -
 253.140 -/**
 253.141 -@publishedPartner
 253.142 -@released
 253.143 -*/
 253.144 -inline MEikFileDialogFactory* CEikonEnv::FileDialogFactory() const
 253.145 -	{return iFileDialogFactory;}
 253.146 -
 253.147 -/**
 253.148 -@publishedPartner
 253.149 -@released
 253.150 -*/
 253.151 -inline MEikIrFactory* CEikonEnv::IrFactory() const
 253.152 -	{return iIrFactory;}
 253.153 -
 253.154 -
 253.155 -inline TInt CEikonEnv::AddLibraryL(TCreateByTypeFunction aControlFactory)
 253.156 -	{return(AddLibraryL(aControlFactory, NULL));}
 253.157 -inline TInt CEikonEnv::AddLibraryL(TFileName* aResourceFile)
 253.158 -	{return(AddLibraryL(NULL, aResourceFile));}
 253.159 -inline void CEikonEnv::RemoveLibrary(TCreateByTypeFunction aControlFactory)
 253.160 -	{RemoveLibrary(aControlFactory, NULL);}
 253.161 -inline void CEikonEnv::RemoveLibrary(TInt aResourceFileOffset)
 253.162 -	{RemoveLibrary(NULL, aResourceFileOffset);}
 253.163 -
 253.164 -
 253.165 -/**
 253.166 -@publishedPartner
 253.167 -@deprecated
 253.168 -*/
 253.169 -inline CBase* CEikonEnv::Extension() const
 253.170 -	{return iExtension;}
 253.171 -
 253.172 -/**
 253.173 -@publishedPartner
 253.174 -@released
 253.175 -*/
 253.176 -inline TInt CEikonEnv::StatusPaneCoreResId() const
 253.177 -	{return iStatusPaneCoreResId;}
 253.178 -
 253.179 -/**
 253.180 -@publishedPartner
 253.181 -@released
 253.182 -*/
 253.183 -inline void CEikonEnv::SetStatusPaneCoreResId(TInt aStatusPaneCoreResId)
 253.184 -	{iStatusPaneCoreResId=aStatusPaneCoreResId;}
 253.185 -
 253.186 -/**
 253.187 -@publishedPartner
 253.188 -@released
 253.189 -*/
 253.190 -inline CEikAutoMenuTitleArray* CEikonEnv::AutoMenuTitleArray() const
 253.191 -	{return iAutoMenuTitleArray;}
 253.192 -
 253.193 -inline const CEikDialog* MEikAlertWin::AsEikDialog() const
 253.194 -	{return (const CEikDialog*)const_cast<MEikAlertWin*>(this)->AsEikDialog();}
 253.195 -
 253.196 -inline const CCoeControl* MEikAlertWin::AsCoeControl() const
 253.197 -	{return (const CCoeControl*)const_cast<MEikAlertWin*>(this)->AsCoeControl();}
   254.1 --- a/epoc32/include/eikfctry.h	Tue Mar 16 16:12:26 2010 +0000
   254.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   254.3 @@ -1,70 +0,0 @@
   254.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   254.5 -// All rights reserved.
   254.6 -// This component and the accompanying materials are made available
   254.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   254.8 -// which accompanies this distribution, and is available
   254.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  254.10 -//
  254.11 -// Initial Contributors:
  254.12 -// Nokia Corporation - initial contribution.
  254.13 -//
  254.14 -// Contributors:
  254.15 -//
  254.16 -// Description:
  254.17 -//
  254.18 -
  254.19 -#ifndef __EIKFCTRY_H__
  254.20 -#define __EIKFCTRY_H__
  254.21 -
  254.22 -#include <e32def.h>
  254.23 -
  254.24 -class CCoeControl;
  254.25 -
  254.26 -/** Flags to determine the control status.
  254.27 -
  254.28 -@publishedPartner
  254.29 -@released
  254.30 -*/
  254.31 -enum
  254.32 -	{
  254.33 -	/** Flag to determine whether a control has ears. Ears are triangular buttons
  254.34 -	for moving forwards or backwards through the list. */
  254.35 -	EEikControlHasEars=0x01,
  254.36 -	/** Flag to determine whether the control is unable to receive keyboard focus. */
  254.37 -	EEikControlIsNonFocusing=0x02,
  254.38 -	/** Flag to determine whether the control is higher than a normal control. */
  254.39 -	EEikControlHasExtraAscent=0x04,
  254.40 -	/** Flag to determine if a control should be placed directly
  254.41 -	 in the view/dialog or if it should be placed in a pop-out control. */
  254.42 -	EEikControlIsNonEditInPlace=0x08
  254.43 -	};
  254.44 -
  254.45 -/** Structure to hold the control specific information. It is used by 
  254.46 -EikControlFactory.
  254.47 -
  254.48 -@see EikControlFactory
  254.49 -@publishedAll
  254.50 -@released
  254.51 -*/
  254.52 -struct SEikControlInfo
  254.53 -    {
  254.54 -    CCoeControl* iControl;
  254.55 -	TInt iTrailerTextId;
  254.56 -    TInt iFlags;
  254.57 -    };
  254.58 -
  254.59 -
  254.60 -/** Abstract factory that creates controls by type. 
  254.61 -
  254.62 -This class provides a unified way to create controls according to the 
  254.63 -specified control integer ID. 
  254.64 -
  254.65 -@publishedAll 
  254.66 -@released */
  254.67 -class EikControlFactory
  254.68 -	{
  254.69 -public:
  254.70 -    IMPORT_C static SEikControlInfo CreateByTypeL(TInt aControlType);
  254.71 -	};
  254.72 -
  254.73 -#endif	// __EIKFCTRY_H__
   255.1 --- a/epoc32/include/eikfutil.h	Tue Mar 16 16:12:26 2010 +0000
   255.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   255.3 @@ -1,315 +0,0 @@
   255.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   255.5 -// All rights reserved.
   255.6 -// This component and the accompanying materials are made available
   255.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   255.8 -// which accompanies this distribution, and is available
   255.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  255.10 -//
  255.11 -// Initial Contributors:
  255.12 -// Nokia Corporation - initial contribution.
  255.13 -//
  255.14 -// Contributors:
  255.15 -//
  255.16 -// Description:
  255.17 -//
  255.18 -
  255.19 -#ifndef __EIKFUTIL_H__
  255.20 -#define __EIKFUTIL_H__
  255.21 -
  255.22 -#include <e32std.h>
  255.23 -#include <f32file.h>
  255.24 -#include <badesca.h>
  255.25 -#include <bautils.h>
  255.26 -#include <eikenv.h>
  255.27 -
  255.28 -class CFont;
  255.29 -class CBaflFileSortTable;
  255.30 -class TResourceReader;
  255.31 -
  255.32 -
  255.33 -/** Provides a set of drive, path and file utility functions.
  255.34 -
  255.35 -This class is essentially a thin layer over the BaflUtils class.
  255.36 -
  255.37 -@publishedAll 
  255.38 -@released */
  255.39 -NONSHARABLE_CLASS(EikFileUtils)
  255.40 -	{ 
  255.41 -public:
  255.42 -	inline static TBool PathExists(const TDesC& aPath);
  255.43 -	inline static TInt IsFolder(const TDesC& aFullName, TBool& aIsFolder);
  255.44 -	inline static TBool FolderExists(const TDesC& aFolderName);
  255.45 -	inline static TFileName FolderNameFromFullName(const TDesC& aFullName);
  255.46 -	inline static TFileName DriveAndPathFromFullName(const TDesC& aFullName);
  255.47 -	inline static TFileName RootFolderPath(const TBuf<1> aDriveLetter);
  255.48 -	inline static void AbbreviateFileName(const TFileName& aOriginalFileName, TDes& aAbbreviatedFileName);
  255.49 -	IMPORT_C static TFileName AbbreviatePath(TDesC& aPathName, const CFont& aFont, TInt aMaxWidthInPixels);
  255.50 -	inline static TBool UidTypeMatches(const TUidType& aFileUid, const TUidType& aMatchUid);
  255.51 -	inline static TInt Parse(const TDesC& aName);
  255.52 -	IMPORT_C static TFileName ValidateFolderNameTypedByUserL(const TDesC& aFolderNameTypedByUser, const TDesC& aCurrentPath);
  255.53 -	inline static TInt CopyFile(const TDesC& aSourceFullName, const TDesC& aTargetFullName, TUint aSwitch = CFileMan::EOverWrite);
  255.54 -	inline static TInt RenameFile(const TDesC& aOldFullName, const TDesC& aNewFullName, TUint aSwitch = CFileMan::EOverWrite);
  255.55 -	inline static TInt DeleteFile(const TDesC& aSourceFullName, TUint aSwitch=0);
  255.56 -	inline static TInt CheckWhetherFullNameRefersToFolder(const TDesC& aFullName, TBool& aIsFolder);
  255.57 -	inline static TInt MostSignificantPartOfFullName(const TDesC& aFullName, TFileName& aMostSignificantPart);
  255.58 -	inline static TInt CheckFolder(const TDesC& aFolderName);
  255.59 -	inline static TInt DiskIsReadOnly(const TDesC& aFullName, TBool& aIsReadOnly);
  255.60 -	inline static void UpdateDiskListL(const RFs& aFs,CDesCArray& aArray,TBool aIncludeRom,TDriveNumber aDriveNumber);
  255.61 -	inline static void RemoveSystemDirectory(CDir& aDir);
  255.62 -	inline static TBool IsFirstDriveForSocket(TDriveUnit aDriveUnit);
  255.63 -	inline static TInt SortByTable(CDir& aDir,CBaflFileSortTable* aTable);
  255.64 -private:
  255.65 -	EikFileUtils();
  255.66 -	};
  255.67 -
  255.68 -
  255.69 -/** Tests whether a path exists.
  255.70 -
  255.71 -@param aPath The path to check. 
  255.72 -@return ETrue if the path exists, EFalse otherwise. */
  255.73 -inline TBool EikFileUtils::PathExists(const TDesC& aPath)
  255.74 -	{	return BaflUtils::PathExists(CEikonEnv::Static()->FsSession(),aPath);	}
  255.75 -
  255.76 -/** Tests whether aFullName is a folder.
  255.77 -
  255.78 -@param aFullName The drive and path to test. 
  255.79 -@param aIsFolder On return, indicates whether aFullName is a folder. 
  255.80 -@return KErrNone if successful otherwise another of the system-wide error codes. */
  255.81 -inline TInt EikFileUtils::IsFolder(const TDesC& aFullName, TBool& aIsFolder)
  255.82 -	{	return BaflUtils::IsFolder(CEikonEnv::Static()->FsSession(), aFullName,aIsFolder);	}
  255.83 -
  255.84 -/** Tests whether a specified folder exists. 
  255.85 -
  255.86 -This returns a boolean value indicating whether the folder exists: see also 
  255.87 -CheckFolder() which returns an error code instead.
  255.88 -
  255.89 -@param aFolderName The folder's path.
  255.90 -@return ETrue if the folder exists, EFalse if not. */
  255.91 -inline TBool EikFileUtils::FolderExists(const TDesC& aFolderName)
  255.92 -	{	return BaflUtils::FolderExists(CEikonEnv::Static()->FsSession(), aFolderName);	}
  255.93 -
  255.94 -/** Gets a folder name from a path and file name.
  255.95 -
  255.96 -@param aFullName The full path and file name from which the folder will be 
  255.97 -obtained. 
  255.98 -@return Folder name */
  255.99 -inline TFileName EikFileUtils::FolderNameFromFullName(const TDesC& aFullName)
 255.100 -	{	return BaflUtils::FolderNameFromFullName(aFullName);	}
 255.101 -
 255.102 -/** Parses the specified full path and file name to obtain the drive and path.
 255.103 -
 255.104 -@param aFullName The full path and file name from which the drive and path 
 255.105 -will be obtained. 
 255.106 -@return The drive and path. */
 255.107 -inline TFileName EikFileUtils::DriveAndPathFromFullName(const TDesC& aFullName)
 255.108 -	{ 	return BaflUtils::DriveAndPathFromFullName(aFullName);	}
 255.109 -
 255.110 -/** Gets the root folder for the specified drive.
 255.111 -
 255.112 -@param aDriveLetter The drive letter, C for example. 
 255.113 -@return The root folder for the drive, C:\ for example. */
 255.114 -inline TFileName EikFileUtils::RootFolderPath(const TBuf<1> aDriveLetter)
 255.115 -	{	return BaflUtils::RootFolderPath(aDriveLetter);	}
 255.116 -
 255.117 -/** Abbreviates a file name.
 255.118 -
 255.119 -If aOriginalFileName is less than the maximum length of aAbbreviatedFileName, 
 255.120 -then the name is simply copied to aAbbreviatedFileName.
 255.121 -
 255.122 -If this is not the case, then the left-most characters of aOriginalFileName are 
 255.123 -copied to aAbbreviatedFileName, up to aAbbreviatedFileName's maximum length-1 and 
 255.124 -aAbbreviatedFileName's first character is set to be an ellipsis.
 255.125 -
 255.126 -For example, if c:\\home\\letters\\abcdef is the original file name and aAbbreviatedFileName 
 255.127 -allows only 7 characters, the abbreviated file name will be ...abcdef. 
 255.128 -This can be used to display a file or folder name in an error or progress 
 255.129 -dialog.
 255.130 -
 255.131 -@param aOriginalFileName Original file name. 
 255.132 -@param aAbbreviatedFileName On return, the abbreviated file name. */
 255.133 -inline void EikFileUtils::AbbreviateFileName(const TFileName& aOriginalFileName, TDes& aAbbreviatedFileName)
 255.134 -	{	BaflUtils::AbbreviateFileName(aOriginalFileName,aAbbreviatedFileName);	}
 255.135 -
 255.136 -/** Tests whether two UID types match.
 255.137 -
 255.138 -A match is made if each UID in aMatchUid is either identical to the corresponding 
 255.139 -one in aFileUid, or is KNullUid.
 255.140 -
 255.141 -@param aFileUid The UID type to match. 
 255.142 -@param aMatchUid The UID type to match against. 
 255.143 -@return ETrue if the UIDs match, EFalse if not. */
 255.144 -inline TBool EikFileUtils::UidTypeMatches(const TUidType& aFileUid, const TUidType& aMatchUid)
 255.145 -	{	return BaflUtils::UidTypeMatches(aFileUid,aMatchUid);	}
 255.146 -
 255.147 -/** Tests whether a specified file name can be parsed.
 255.148 -
 255.149 -@param aName The file name to parse.
 255.150 -@return KErrNone if the filename can be parsed, otherwise one 
 255.151 -of the system-wide error codes. 
 255.152 -@see TParse */
 255.153 -inline TInt EikFileUtils::Parse(const TDesC& aName)
 255.154 -	{	return BaflUtils::Parse(aName);	}
 255.155 -
 255.156 -/** Copies the specified file.
 255.157 -
 255.158 -Notes:
 255.159 -
 255.160 -- files can be copied across drives
 255.161 -
 255.162 -- open files can be copied only if they have been opened using the EFileShareReadersOnly 
 255.163 -file share mode
 255.164 -
 255.165 -- the source file's attributes are preserved in the target file
 255.166 -
 255.167 -@param aSourceFullName Path indicating the file(s) to be copied. Any path 
 255.168 -components which are not specified here will be taken from the session path. 
 255.169 -@param aTargetFullName Path indicating the directory into which the file(s) 
 255.170 -are to be copied. 
 255.171 -@param aSwitch Optional switch to allow overwriting files with the same name 
 255.172 -in the target directory, or recursion. By default, this function operates with 
 255.173 -overwriting and non-recursively. Switch options are defined using the enum TSwitch. 
 255.174 -If recursive operation is set, any intermediate directories are created. If no overwriting 
 255.175 -is set, any files with the same name are not overwritten, and an error is returned 
 255.176 -for that file.
 255.177 -@return KErrNone if the copy is successful, otherwise another of the system-wide 
 255.178 -error codes. */
 255.179 -inline TInt EikFileUtils::CopyFile(const TDesC& aSourceFullName, const TDesC& aTargetFullName, TUint aSwitch)
 255.180 -	{	return BaflUtils::CopyFile(CEikonEnv::Static()->FsSession(),aSourceFullName,aTargetFullName,aSwitch);	}
 255.181 -
 255.182 -/** Renames one or more files or directories. 
 255.183 -
 255.184 -This can also be used to move files by specifying different destination and 
 255.185 -source directories, but note that the destination and source directories must be 
 255.186 -on the same drive.
 255.187 -
 255.188 -If moving files, you can set aSwitch so that any files with the same name 
 255.189 -that exist in the target directory are overwritten. If aSwitch is set for 
 255.190 -no overwriting, any files with the same name are not overwritten, and an error 
 255.191 -(KErrAlreadyExists) is returned for that file.
 255.192 -
 255.193 -This function can only operate non-recursively, so that only the matching 
 255.194 -files located in the single directory specified by aOldFullName may be renamed.
 255.195 -
 255.196 -Read-only, system and hidden files may be renamed or moved, and the source 
 255.197 -file's attributes are preserved in the target file, but attempting to rename 
 255.198 -or move an open file will return an error for that file.
 255.199 -
 255.200 -@param aOldFullName Path specifying the file or directory to be renamed. 
 255.201 -@param aNewFullName Path specifying the new name for the file or directory. 
 255.202 -Any directories specified in this path which do not exist will be created. 
 255.203 -@param aSwitch Optional, sets whether files are overwritten on the target. 
 255.204 -@return KErrNone if successful otherwise another of the system-wide error codes. */
 255.205 -inline TInt EikFileUtils::RenameFile(const TDesC& aOldFullName, const TDesC& aNewFullName, TUint aSwitch)
 255.206 -	{	return BaflUtils::RenameFile(CEikonEnv::Static()->FsSession(),aOldFullName,aNewFullName,aSwitch);	}
 255.207 -
 255.208 -/** Deletes one or more files.
 255.209 -
 255.210 -This function may operate recursively or non-recursively. When operating non-recursively, 
 255.211 -only the matching files located in the directory specified in aSourceFullName 
 255.212 -are affected. When operating recursively, all matching files in the directory 
 255.213 -hierarchy below the directory specified in aSourceFullName are deleted.
 255.214 -
 255.215 -Attempting to delete read-only or open files returns an error.
 255.216 -
 255.217 -@param aSourceFullName Path indicating the file(s) to be deleted. This can 
 255.218 -either be a full path, or a path relative to the session path. Use wildcards 
 255.219 -to specify more than one file. 
 255.220 -@param aSwitch Determines whether this function operates recursively. By default, 
 255.221 -this function operates non-recursively. 
 255.222 -@return KErrNone if aSourceFullName is successfully deleted, otherwise another 
 255.223 -of the system-wide error codes. */
 255.224 -inline TInt EikFileUtils::DeleteFile(const TDesC& aSourceFullName, TUint aSwitch)
 255.225 -	{	return BaflUtils::DeleteFile(CEikonEnv::Static()->FsSession(), aSourceFullName,aSwitch);	}
 255.226 -
 255.227 -/** Tests whether a file specification is a valid folder name.
 255.228 -
 255.229 -@param aFullName The string to check. 
 255.230 -@param aIsFolder True if aFullName is a valid folder name, otherwise false.
 255.231 -@return KErrNone if successful, otherwise another of the system-wide error codes 
 255.232 -(probably because aFullName cannot be parsed). */
 255.233 -inline TInt EikFileUtils::CheckWhetherFullNameRefersToFolder(const TDesC& aFullName, TBool& aIsFolder)
 255.234 -	{	return BaflUtils::CheckWhetherFullNameRefersToFolder(aFullName,aIsFolder);	}
 255.235 -
 255.236 -/** Gets the folder name if the specified item is a valid folder name, otherwise gets the file name.
 255.237 -
 255.238 -@param aFullName Item to parse. 
 255.239 -@param aMostSignificantPart On return, the folder or file name.
 255.240 -@return KErrNone if successful otherwise another of the system-wide error codes. */
 255.241 -inline TInt EikFileUtils::MostSignificantPartOfFullName(const TDesC& aFullName, TFileName& aMostSignificantPart)
 255.242 -	{	return BaflUtils::MostSignificantPartOfFullName(aFullName,aMostSignificantPart);	}
 255.243 -
 255.244 -/** Tests whether the specified folder exists and can be opened.
 255.245 -
 255.246 -This returns an error code if the folder does not exist: see also FolderExists() 
 255.247 -which returns a boolean value.
 255.248 -
 255.249 -@param aFolderName The folder's name and path. 
 255.250 -@return KErrNone if aFolderName exists, otherwise another of the system-wide 
 255.251 -error codes. */
 255.252 -inline TInt EikFileUtils::CheckFolder(const TDesC& aFolderName)
 255.253 -	{	return BaflUtils::CheckFolder(CEikonEnv::Static()->FsSession(),aFolderName);	}
 255.254 -
 255.255 -/** Tests whether the specified drive is read-only.
 255.256 -
 255.257 -@param aFullName File name, including drive. 
 255.258 -@param aIsReadOnly On return, true if the drive is read-only, otherwise false. 
 255.259 -@return KErrNone if successful otherwise another of the system-wide error codes. */
 255.260 -inline TInt EikFileUtils::DiskIsReadOnly(const TDesC& aFullName, TBool& aIsReadOnly)	
 255.261 -	{	return BaflUtils::DiskIsReadOnly(CEikonEnv::Static()->FsSession(),aFullName,aIsReadOnly);	}
 255.262 -
 255.263 -/** Gets a list of all drives present on the system.
 255.264 -
 255.265 -The file server is interrogated for a list of the drive letters for all available 
 255.266 -drives. The drive letter that corresponds to aDriveNumber is added to the list 
 255.267 -regardless of whether it is present, or is corrupt. Also, the C: drive and the 
 255.268 -primary partitions on removable media slots are forced onto the list, even if 
 255.269 -corrupt or not present.
 255.270 -
 255.271 -@param aFs A connected session with the file server. 
 255.272 -@param aArray On return, contains the drive letters that correspond to the available 
 255.273 -drives. The drive letters are uppercase and are in alphabetical order. 
 255.274 -@param aIncludeRom ETrue if the ROM is included as a drive, EFalse otherwise. 
 255.275 -@param aDriveNumber The drive to force into the list, e.g. the drive in the default 
 255.276 -path. */
 255.277 -inline void EikFileUtils::UpdateDiskListL(const RFs& aFs,CDesCArray& aArray,TBool aIncludeRom,TDriveNumber aDriveNumber)
 255.278 -	{	BaflUtils::UpdateDiskListL(aFs,aArray,aIncludeRom,aDriveNumber);	}
 255.279 -
 255.280 -/** Removes the System directory from a list of directory entries.
 255.281 -
 255.282 -@param aDir Array of directory entries. */
 255.283 -inline void EikFileUtils::RemoveSystemDirectory(CDir& aDir)
 255.284 -	{	BaflUtils::RemoveSystemDirectory(aDir);	}
 255.285 -
 255.286 -/** Tests whether the specified drive corresponds to the primary partition 
 255.287 -in a removable media slot.
 255.288 -
 255.289 -Note that the function assumes that the D: drive corresponds to the primary 
 255.290 -partition on socket 0, and that the E: drive corresponds to the primary 
 255.291 -partition on socket 1 (a socket is a slot for removable media). This mapping 
 255.292 -may not always be the case because it is set up in the variant layer of Symbian 
 255.293 -OS. 
 255.294 -
 255.295 -@param aDriveUnit The drive to check. 
 255.296 -@return True if the drive is the primary partition in a removable media 
 255.297 -slot. True is also returned if the drive is C:. False is returned otherwise. */
 255.298 -inline TBool EikFileUtils::IsFirstDriveForSocket(TDriveUnit aDriveUnit)
 255.299 -	{	return BaflUtils::IsFirstDriveForSocket(aDriveUnit);	}
 255.300 -
 255.301 -/** Sorts files by UID.
 255.302 -
 255.303 -The caller supplies a table which specifies the order in which files are to be sorted. 
 255.304 -The files whose UID3 is the first UID in the table appear first. The files whose UID3 
 255.305 -is the UID specified second appear next, and so on. Files whose UID3 is not specified 
 255.306 -in the table, and directories, appear at the end of the list, with directories preceding 
 255.307 -the files, and with files sorted in ascending order of UID3.
 255.308 -
 255.309 -This function is used for customising how lists of application files are sorted.
 255.310 -
 255.311 -@param aDir The array of files and directories to sort. 
 255.312 -@param aTable A sort order table containing the UIDs to use in the sort. 
 255.313 -@return KErrNone if successful otherwise another of the system-wide error codes. */
 255.314 -inline TInt EikFileUtils::SortByTable(CDir& aDir,CBaflFileSortTable* aTable)
 255.315 -	{	return BaflUtils::SortByTable(aDir,aTable);	}
 255.316 -
 255.317 -
 255.318 -#endif	// __EIKFUTIL_H__
   256.1 --- a/epoc32/include/eikmobs.h	Tue Mar 16 16:12:26 2010 +0000
   256.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   256.3 @@ -1,125 +0,0 @@
   256.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   256.5 -// All rights reserved.
   256.6 -// This component and the accompanying materials are made available
   256.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   256.8 -// which accompanies this distribution, and is available
   256.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  256.10 -//
  256.11 -// Initial Contributors:
  256.12 -// Nokia Corporation - initial contribution.
  256.13 -//
  256.14 -// Contributors:
  256.15 -//
  256.16 -// Description:
  256.17 -//
  256.18 -
  256.19 -#ifndef __EIKMOBS_H__
  256.20 -#define __EIKMOBS_H__
  256.21 -
  256.22 -#include <eikcmobs.h>
  256.23 -#include <w32std.h>
  256.24 -#include <coedef.h>
  256.25 -
  256.26 -class CCoeControl;
  256.27 -class CEikMenuPane;
  256.28 -class CEikMenuBar;
  256.29 -class CEikHotKeyTable;
  256.30 -class TPoint;
  256.31 -
  256.32 -/** Menu observer interface.
  256.33 -
  256.34 -Menu observers cooperate with menu bars and menu panes, initialising them 
  256.35 -before display and responding to menu events appropriately. CEikAppUi implements 
  256.36 -MEikMenuObserver, so these functions may be implemented on an application's 
  256.37 -App UI.
  256.38 -
  256.39 -@publishedAll
  256.40 -@released */
  256.41 -class MEikMenuObserver : public MEikCommandObserver
  256.42 -	{
  256.43 -public:
  256.44 -	/** Menu types */
  256.45 -	enum TMenuType
  256.46 -		{
  256.47 -		/** Menu pane. */
  256.48 -		EMenuPane,
  256.49 -		/** Menu bar. */
  256.50 -		EMenuBar
  256.51 -		};
  256.52 -public:
  256.53 -	IMPORT_C virtual void HandleAttemptDimmedSelectionL(TInt aCommandId);
  256.54 -	IMPORT_C virtual TBool CheckHotKeyNotDimmedL(TInt aCommandId);
  256.55 -	IMPORT_C virtual void RestoreMenuL(CCoeControl* aMenuControl,TInt aResourceId,TMenuType aType);
  256.56 -	IMPORT_C virtual void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
  256.57 -	IMPORT_C virtual void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar);
  256.58 -	IMPORT_C virtual void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,TInt aModifiers,const CEikHotKeyTable* aTable);
  256.59 -	IMPORT_C virtual void OfferKeyToAppL(const TKeyEvent& aKeyEvent,TEventCode aType);
  256.60 -	/** Called by the Uikon framework to handle the emphasising or de-emphasising of 
  256.61 -	a menu window. 
  256.62 -	
  256.63 -	CEikMenuBar objects call this on their observer to emphasise 
  256.64 -	themselves when they are displayed, and de-emphasise themselves when they 
  256.65 -	stop displaying.
  256.66 -	
  256.67 -	@param aMenuControl The menu control.
  256.68 -	@param aEmphasis ETrue to emphasize the menu, EFalse otherwise. */
  256.69 -	virtual void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis)=0;
  256.70 -public:
  256.71 -	IMPORT_C virtual CCoeControl* CreateCustomCommandControlL(TInt aControlType);
  256.72 -protected:
  256.73 -	IMPORT_C MEikMenuObserver();
  256.74 -private:
  256.75 -	IMPORT_C virtual void Reserved_1_MenuObserver();
  256.76 -	IMPORT_C virtual void Reserved_2_MenuObserver();
  256.77 -private: // from MEikCommandObserver. do not override!
  256.78 -	IMPORT_C void MEikCommandObserver_Reserved1();
  256.79 -	IMPORT_C void MEikCommandObserver_Reserved2();
  256.80 -private:
  256.81 -	TInt iMEikMenuObserver_Spare1;
  256.82 -	};
  256.83 -
  256.84 -
  256.85 -/** Provides additional functionality to an auto menu title, in the form of an 
  256.86 -OfferHotKeyL() method, which is not required in the normal MEikMenuObserver.
  256.87 - 
  256.88 -Auto menu titles are used to ensure that some menu panes appear in every menu 
  256.89 -constructed for an application. 
  256.90 -
  256.91 -@publishedAll 
  256.92 -@released */
  256.93 -class MEikAutoMenuObserver : public MEikMenuObserver
  256.94 -	{
  256.95 -public:
  256.96 -	/** Offers the specified hot key to the auto menu title.
  256.97 -	
  256.98 -	Implement this function if you expect to handle any events from an auto menu. 
  256.99 -	
 256.100 -	@param aKeyEvent The key event.
 256.101 -	@param aType The type of key event.
 256.102 -	@return The auto menu title's response. */
 256.103 -	virtual TKeyResponse OfferHotKeyL(const TKeyEvent& aKeyEvent,TEventCode aType)=0;
 256.104 -public: // from MEikMenuObserver
 256.105 -	IMPORT_C void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis);
 256.106 -public: 
 256.107 -	IMPORT_C virtual void HandleAttemptDimmedSelectionL(TInt aCommandId);
 256.108 -	IMPORT_C virtual TBool CheckHotKeyNotDimmedL(TInt aCommandId);
 256.109 -	IMPORT_C virtual void RestoreMenuL(CCoeControl* aMenuControl,TInt aResourceId,TMenuType aType);
 256.110 -	IMPORT_C virtual void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
 256.111 -	IMPORT_C virtual void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar);
 256.112 -	IMPORT_C virtual void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,TInt aModifiers,const CEikHotKeyTable* aTable);
 256.113 -	IMPORT_C virtual void OfferKeyToAppL(const TKeyEvent& aKeyEvent,TEventCode aType);
 256.114 -	IMPORT_C virtual CCoeControl* CreateCustomCommandControlL(TInt aControlType);
 256.115 -protected:
 256.116 -	IMPORT_C MEikAutoMenuObserver();
 256.117 -private:
 256.118 -	IMPORT_C virtual void Reserved_1_MenuObserver();
 256.119 -	IMPORT_C virtual void Reserved_2_MenuObserver();
 256.120 -private: // from MEikCommandObserver. do not override!
 256.121 -	IMPORT_C void MEikCommandObserver_Reserved1();
 256.122 -	IMPORT_C void MEikCommandObserver_Reserved2();
 256.123 -private:
 256.124 -	TInt iMEikAutoMenuObserver_Spare1;
 256.125 -	};
 256.126 -
 256.127 -
 256.128 -#endif	// __EIKMOBS_H__
   257.1 --- a/epoc32/include/eikmsg.h	Tue Mar 16 16:12:26 2010 +0000
   257.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   257.3 @@ -1,148 +0,0 @@
   257.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   257.5 -// All rights reserved.
   257.6 -// This component and the accompanying materials are made available
   257.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   257.8 -// which accompanies this distribution, and is available
   257.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  257.10 -//
  257.11 -// Initial Contributors:
  257.12 -// Nokia Corporation - initial contribution.
  257.13 -//
  257.14 -// Contributors:
  257.15 -//
  257.16 -// Description:
  257.17 -//
  257.18 -
  257.19 -#ifndef __EIKMSG_H__
  257.20 -#define __EIKMSG_H__
  257.21 -
  257.22 -#include <clock.h>
  257.23 -#include <gulalign.h>
  257.24 -
  257.25 -#include <eikinfomsgwin.h>
  257.26 -#include <eikbusymsgwin.h>
  257.27 -
  257.28 -class CCoeControl;
  257.29 -class CEikonEnv;
  257.30 -class RWindowGroup;
  257.31 -class CEikResourceChange;
  257.32 -
  257.33 -
  257.34 -/** Base class providing functions to construct and display an information message. 
  257.35 -
  257.36 -@publishedAll
  257.37 -@released */
  257.38 -class CEikMsgWin : public CBase
  257.39 -	{
  257.40 -protected:
  257.41 -	IMPORT_C CEikMsgWin(CEikonEnv& aEikonEnv);
  257.42 -public:
  257.43 -	IMPORT_C void ConstructL(RWindowGroup& aWindowGroup);
  257.44 -	IMPORT_C virtual ~CEikMsgWin();
  257.45 -	IMPORT_C void StartDisplay(const TDesC& aText, TGulAlignment aCorner);
  257.46 -	IMPORT_C void CancelDisplay();
  257.47 -private:
  257.48 -	IMPORT_C virtual void CEikMsgWin_Reserved1();
  257.49 -	IMPORT_C virtual void CEikMsgWin_Reserved2();
  257.50 -protected:
  257.51 -	TDes& PrepareDisplay(TDes& aText, TGulAlignment aCorner);
  257.52 -private:
  257.53 -	virtual void DoStartDisplay(const TDesC& aText)=0;
  257.54 -protected:
  257.55 -	/** A CEikonEnv*, which all applications have. This is required for construction 
  257.56 -	of a CEikMsgWin as it provides access to services which the message window 
  257.57 -	needs, the window server session for example. */
  257.58 -	CEikonEnv& iEikonEnv_; // the underscore is to prevent a name clash with the iEikonEnv #define
  257.59 -	/** An empty control required for construction of a blank window. This defines 
  257.60 -	a handle back to the client side object, which is only required if you need 
  257.61 -	to later initiate client side drawing. */
  257.62 -	CCoeControl* iDummy;
  257.63 -	/** The window in which the message will be drawn. */
  257.64 -	RBlankWindow* iBlankWindow;
  257.65 -	/** An RAnim derived class, which is responsible for interacting with server side 
  257.66 -	classes to provide the message window's animation on the screen. It is constructed 
  257.67 -	by passing in the RWindowBase which it will use to draw its contents to, and 
  257.68 -	also a handle to an animation DLL, which provides the animation functionality. */
  257.69 -	RMessageWindow* iMessageWindow;
  257.70 -private:
  257.71 -	CEikResourceChange* iResourceChange;
  257.72 -	TInt iCEikMsgWin_Spare1;
  257.73 -	};
  257.74 -
  257.75 -/**
  257.76 -@publishedAll
  257.77 -@released
  257.78 -*/
  257.79 -const TInt KEikInfoMsgMaxLen=RMessageWindow::EMaxTextLength;
  257.80 -
  257.81 -/** Specifies the maximum length of the message buffer. 
  257.82 -
  257.83 -@publishedAll
  257.84 -@released */
  257.85 -typedef TBuf<KEikInfoMsgMaxLen> TEikInfoMsgBuf;
  257.86 -
  257.87 -class CEikInfoMsgWin : public CEikMsgWin, public MEikInfoMsgWin
  257.88 -/** Enables construction of an information message window. 
  257.89 -
  257.90 -@publishedAll 
  257.91 -@released */
  257.92 -	{
  257.93 -public:
  257.94 -	IMPORT_C void ConstructL(RWindowGroup& aWindowGroup, TInt aParam = 0);
  257.95 -	IMPORT_C CEikInfoMsgWin(CEikonEnv& aEikonEnv);
  257.96 -public:  //from MEikInfoMsgWin
  257.97 -	IMPORT_C void StartDisplaySpecifyingDuration(const TDesC& aText, TGulAlignment aCorner, TTimeIntervalMicroSeconds32 aDuration);	
  257.98 -	IMPORT_C void StartDisplay(const TDesC& aText, TGulAlignment aCorner);
  257.99 -	IMPORT_C void CancelDisplay();
 257.100 -	IMPORT_C void Release();
 257.101 -private:
 257.102 -	virtual void DoStartDisplay(const TDesC& aText);
 257.103 -	IMPORT_C virtual void CEikInfoMsgWin_Reserved1();
 257.104 -	IMPORT_C virtual void CEikInfoMsgWin_Reserved2();
 257.105 -private: // From CEikMsgWin. do not override!
 257.106 -	IMPORT_C void CEikMsgWin_Reserved1();
 257.107 -	IMPORT_C void CEikMsgWin_Reserved2();
 257.108 -private:
 257.109 -	TInt iCEikInfoMsgWin_Spare1;
 257.110 -	};
 257.111 -
 257.112 -
 257.113 -/**
 257.114 -@publishedAll
 257.115 -@released
 257.116 -*/
 257.117 -const TInt KEikBusyMsgMaxLen=RMessageWindow::EMaxTextLength;
 257.118 -
 257.119 -/**
 257.120 -@publishedAll
 257.121 -@released
 257.122 -*/
 257.123 -typedef TBuf<KEikBusyMsgMaxLen> TEikBusyMsgBuf;
 257.124 -
 257.125 -/** 
 257.126 -@publishedAll 
 257.127 -@released
 257.128 -*/
 257.129 -class CEikBusyMsgWin : public CEikMsgWin, public MEikBusyMsgWin
 257.130 -	{
 257.131 -public:
 257.132 -	IMPORT_C void ConstructL(RWindowGroup& aWindowGroup);
 257.133 -	IMPORT_C CEikBusyMsgWin(CEikonEnv& aEikonEnv);
 257.134 -public:   //from MEikBusyMsgWin
 257.135 -	IMPORT_C void StartDisplaySpecifyingInitialDelay(const TDesC& aText, TGulAlignment aCorner, TTimeIntervalMicroSeconds32 aInitialDelay);
 257.136 -	IMPORT_C void StartDisplay(const TDesC& aText, TGulAlignment aCorner);
 257.137 -	IMPORT_C void Release();
 257.138 -private:
 257.139 -	IMPORT_C virtual void CEikBusyMsgWin_Reserved1();
 257.140 -	IMPORT_C virtual void CEikBusyMsgWin_Reserved2();
 257.141 -private: // From CEikMsgWin. do not override!
 257.142 -	IMPORT_C void CEikMsgWin_Reserved1();
 257.143 -	IMPORT_C void CEikMsgWin_Reserved2();
 257.144 -private:
 257.145 -	virtual void DoStartDisplay(const TDesC& aText);
 257.146 -private:
 257.147 -	TTimeIntervalMicroSeconds32 iInitialDelay;
 257.148 -	TInt iCEikBusyMsgWin_Spare1;
 257.149 -	};
 257.150 -
 257.151 -#endif	// __EIKMSG_H__
   258.1 --- a/epoc32/include/eiknotapi.h	Tue Mar 16 16:12:26 2010 +0000
   258.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   258.3 @@ -1,270 +0,0 @@
   258.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   258.5 -// All rights reserved.
   258.6 -// This component and the accompanying materials are made available
   258.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   258.8 -// which accompanies this distribution, and is available
   258.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  258.10 -//
  258.11 -// Initial Contributors:
  258.12 -// Nokia Corporation - initial contribution.
  258.13 -//
  258.14 -// Contributors:
  258.15 -//
  258.16 -// Description:
  258.17 -//
  258.18 -
  258.19 -#ifndef __EIKNOTAPI_H__
  258.20 -#define __EIKNOTAPI_H__
  258.21 -
  258.22 -#include <e32std.h>
  258.23 -#include <e32base.h>
  258.24 -#include <f32file.h>
  258.25 -
  258.26 -/** Defines the second Uid value for plug in notifier DLLs. 
  258.27 -
  258.28 -@publishedAll
  258.29 -@released */
  258.30 -const TUid KUidNotifierPlugIn = {0x10005522}; 
  258.31 -const TUid KUidNotifierPlugInV2 = {0x101fdfae};
  258.32 -
  258.33 -/**
  258.34 -@publishedAll
  258.35 -@released
  258.36 -*/
  258.37 -enum TEikNotExtStatus
  258.38 -	{
  258.39 -	EEikNotExtRequestCompleted = 0,
  258.40 -	EEikNotExtRequestQueued = 1
  258.41 -	};
  258.42 -
  258.43 -/** The Uid that identifies a screen change event.
  258.44 -
  258.45 -@see MEikSrvNotifierBase2::HandleSystemEventL() 
  258.46 -@internalTechnology */
  258.47 -const TUid KUidEventScreenModeChanged = {0x101F3648};
  258.48 -
  258.49 -/** A set of flags that define the capabilities of the notifier.
  258.50 -
  258.51 -Capabilities are returned by calling MEikSrvNotifierBase2::NotifierCapabilites(). 
  258.52 -
  258.53 -@publishedAll
  258.54 -@released */
  258.55 -enum TNotifierCapabilities
  258.56 -	{
  258.57 -	/** The notifier has no special capabilities. */
  258.58 -	ENoSpecialCapabilities			= 0x00000000,
  258.59 -	/** The notifier can handle a change to the screen device. */
  258.60 -	EScreenDeviceChangeSupported	= 0x00000001,
  258.61 -	};
  258.62 -	
  258.63 -/** 
  258.64 -Interface to allow notifiers to manage their own startup/shutdown.  This class is likely to be of most
  258.65 -interest to notifiers that observe engines using publically available APIs rather than those that are run
  258.66 -via RNotifier.
  258.67 -
  258.68 -@publishedAll
  258.69 -@released 
  258.70 -*/
  258.71 -class MEikSrvNotifierManager
  258.72 -	{
  258.73 -public:
  258.74 -	virtual void StartNotifierL(TUid aNotifierUid, const TDesC8& aBuffer, TDes8& aResponse) = 0;
  258.75 -	virtual void CancelNotifier(TUid aNotifierUid) = 0;
  258.76 -	virtual void UpdateNotifierL(TUid aNotifierUid, const TDesC8& aBuffer, TDes8& aResponse) = 0;
  258.77 -protected:
  258.78 -	IMPORT_C MEikSrvNotifierManager();
  258.79 -private:
  258.80 -	IMPORT_C virtual void MEikSrvNotifierManager_Reserved1();
  258.81 -	IMPORT_C virtual void MEikSrvNotifierManager_Reserved2();
  258.82 -private:
  258.83 -	TInt iMEikSrvNotifierManager_Spare1;
  258.84 -	};
  258.85 -
  258.86 -
  258.87 -/** Interface to a plug-in server side notifier.
  258.88 -
  258.89 -Any number of MEikSrvNotifierBase2 objects can be included in a single DLL. 
  258.90 -All notifiers are loaded during device startup and are not destroyed until 
  258.91 -the Uikon server closes down.
  258.92 -
  258.93 -All notifiers run in the uikon server thread so are able to directly access 
  258.94 -server side status panes but cannot call any functions on REikAppUiSession. 
  258.95 -
  258.96 -@publishedAll
  258.97 -@released */
  258.98 -class MEikSrvNotifierBase2
  258.99 -	{
 258.100 -public:
 258.101 -	/** Defines a set of notifier priorities. The use and application of these values 
 258.102 -	is implementation-dependent. */
 258.103 -	enum TNotifierPriority
 258.104 -		{
 258.105 -		/** The highest priority value. */
 258.106 -		ENotifierPriorityAbsolute = 500,
 258.107 -		/** The second highest priority value. */
 258.108 -		ENotifierPriorityVHigh = 400,	
 258.109 -		/** The third highest priority value. */
 258.110 -		ENotifierPriorityHigh = 300,	
 258.111 -		/** The fourth highest priority value. */
 258.112 -		ENotifierPriorityLow = 200,	
 258.113 -		/** The fifth highest priority value. */
 258.114 -		ENotifierPriorityVLow = 100,	
 258.115 -		/** The lowest priority value. */
 258.116 -		ENotifierPriorityLowest = 0	
 258.117 -		};
 258.118 -public:
 258.119 -	/** Contains the notifier parameters.
 258.120 -
 258.121 -	@see TNotifierPriority */
 258.122 -	class TNotifierInfo
 258.123 -		{
 258.124 -	public:
 258.125 -		/** The Uid that identifies the notifier. */
 258.126 -		TUid iUid;
 258.127 -		/** The Uid that identifies the channel to be used by the notifier (e.g. the screen, 
 258.128 -		an LED etc) */
 258.129 -		TUid iChannel;
 258.130 -		/** The notifier priority, typically chosen from the standard set.
 258.131 -	
 258.132 -		@see TNotifierPriority */
 258.133 -		TInt iPriority;
 258.134 -		};
 258.135 -
 258.136 -public:
 258.137 -	IMPORT_C MEikSrvNotifierBase2();
 258.138 -	IMPORT_C virtual ~MEikSrvNotifierBase2();
 258.139 -public:
 258.140 -	/** Frees all resources owned by this notifier.
 258.141 -	
 258.142 -	This function is called by the notifier framework when all resources allocated 
 258.143 -	by notifiers should be freed. As a minimum, this function should delete this 
 258.144 -	object (i.e. delete this;).
 258.145 -	
 258.146 -	Note that it is important to implement this function correctly to avoid memory 
 258.147 -	leaks. */
 258.148 -	virtual void Release() = 0;
 258.149 -	/** Performs any initialisation that this notifier may require.
 258.150 -	
 258.151 -	The function is called when the notifier is loaded (when the plug-in DLL is 
 258.152 -	loaded). It is called only once.
 258.153 -	
 258.154 -	As a minimum, the function should return a TNotifierInfo instance describing 
 258.155 -	the notifier parameters. A good implementation would be to set this into a 
 258.156 -	data member, and then to return it. This is because the same information is 
 258.157 -	returned by Info().
 258.158 -	
 258.159 -	The function is safe to leave from, so it is possible, although rarely necessary, 
 258.160 -	to allocate objects as you would normally do in a ConstructL() function as 
 258.161 -	part of two-phase construction.
 258.162 -	
 258.163 -	@return Describes the parameters of the notifier. */
 258.164 -	virtual TNotifierInfo RegisterL() = 0;
 258.165 -	/** Gets the notifier parameters.
 258.166 -	
 258.167 -	This is usually the same information as returned by RegisterL() but can be 
 258.168 -	varied at run time.
 258.169 -	
 258.170 -	@return Describes the parameters of the notifier. */
 258.171 -	virtual TNotifierInfo Info() const = 0;
 258.172 -	/** Starts the notifier.
 258.173 -	
 258.174 -	This is called as a result of a client-side call to RNotifier::StartNotifier(), 
 258.175 -	which the client uses to start a notifier from which it does not expect a 
 258.176 -	response.
 258.177 -	
 258.178 -	The function is synchronous, but it should be implemented so that it completes 
 258.179 -	as soon as possible, allowing the notifier framework to enforce its priority 
 258.180 -	mechanism.
 258.181 -	
 258.182 -	It is not possible to to wait for a notifier to complete before returning 
 258.183 -	from this function unless the notifier is likely to finish implementing its 
 258.184 -	functionality immediately.
 258.185 -	
 258.186 -	@param aBuffer Data that can be passed from the client-side. The format and 
 258.187 -	meaning of any data is implementation dependent.
 258.188 -	@return A pointer descriptor representing data that may be returned. The format 
 258.189 -	and meaning of any data is implementation dependent. */
 258.190 -	virtual TPtrC8 StartL(const TDesC8& aBuffer) = 0;
 258.191 -	/** Starts the notifier.
 258.192 -	
 258.193 -	This is called as a result of a client-side call to the asynchronous function 
 258.194 -	RNotifier::StartNotifierAndGetResponse(). This means that the client is waiting, 
 258.195 -	asynchronously, for the notifier to tell the client that it has finished its 
 258.196 -	work.
 258.197 -	
 258.198 -	It is important to return from this function as soon as possible, and derived 
 258.199 -	classes may find it useful to take a copy of the reply-slot number and 
 258.200 -	the RMessage object.
 258.201 -	
 258.202 -	The implementation of a derived class must make sure that Complete() is called 
 258.203 -	on the RMessage object when the notifier is deactivated.
 258.204 -	
 258.205 -	This function may be called multiple times if more than one client starts 
 258.206 -	the notifier.
 258.207 -	
 258.208 -	@param aBuffer Data that can be passed from the client-side. The format and 
 258.209 -	meaning of any data is implementation dependent.
 258.210 -	@param aReplySlot Identifies which message argument to use for the reply.
 258.211 -    This message argument will refer to a modifiable descriptor, a TDes8 type, 
 258.212 -	into which data can be returned. The format and meaning of any returned data 
 258.213 -	is implementation dependent.
 258.214 -	@param aMessage Encapsulates a client request. */
 258.215 -	virtual void StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) = 0;
 258.216 -	
 258.217 -	/** Cancels an active notifier.
 258.218 -	
 258.219 -	This is called as a result of a client-side call to RNotifier::CancelNotifier().
 258.220 -	
 258.221 -	An implementation should free any relevant resources and complete any outstanding 
 258.222 -	messages, if relevant. */
 258.223 -	virtual void Cancel() = 0;
 258.224 -	/** Updates a currently active notifier with new data.
 258.225 -	
 258.226 -	This is called as a result of a client-side call to RNotifier::UpdateNotifier().
 258.227 -	
 258.228 -	@param aBuffer Data that can be passed from the client-side. The format and 
 258.229 -	meaning of any data is implementation dependent.
 258.230 -	@return A pointer descriptor representing data that may be returned. The format 
 258.231 -	and meaning of any data is implementation dependent. */
 258.232 -	virtual TPtrC8 UpdateL(const TDesC8& aBuffer) = 0;
 258.233 -	/** Updates a currently active notifier with new data.
 258.234 -	
 258.235 -	This is called as a result of a client-side call to the asynchronous function 
 258.236 -	RNotifier::UpdateNotifierAndGetResponse(). This means that the client is waiting, 
 258.237 -	asynchronously, for the notifier to tell the client that it has finished its 
 258.238 -	work.
 258.239 -	
 258.240 -	It is important to return from this function as soon as possible, and derived 
 258.241 -	classes may find it useful to take a copy of the reply-slot number and 
 258.242 -	the RMessage object.
 258.243 -	
 258.244 -	The implementation of a derived class must make sure that Complete() is called 
 258.245 -	on the RMessage object when the notifier is deactivated.
 258.246 -	
 258.247 -	This function may be called multiple times if more than one client updates 
 258.248 -	the notifier.
 258.249 -	
 258.250 -	@param aBuffer Data that can be passed from the client-side. The format and 
 258.251 -	meaning of any data is implementation dependent.
 258.252 -	@param aReplySlot Identifies which message argument to use for the reply.
 258.253 -    This message argument will refer to a modifiable descriptor, a TDes8 type, 
 258.254 -	into which data can be returned. The format and meaning of any returned data 
 258.255 -	is implementation dependent.
 258.256 -	@param aMessage Encapsulates a client request. */
 258.257 -	IMPORT_C virtual void UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage);
 258.258 -public:
 258.259 -	void SetManager(MEikSrvNotifierManager* aManager);
 258.260 -protected:
 258.261 -	MEikSrvNotifierManager* iManager;
 258.262 -private:
 258.263 -	IMPORT_C virtual void MEikSrvNotifierBase2_Reserved_2();
 258.264 -public:	// internal
 258.265 -	IMPORT_C virtual void HandleSystemEventL(TUid aEvent);
 258.266 -	IMPORT_C virtual TInt NotifierCapabilites();
 258.267 -private:
 258.268 -	TInt iNotBSpare;
 258.269 -	TInt iMEikSrvNotifierBase2_Spare;
 258.270 -	};
 258.271 -
 258.272 -
 258.273 -#endif	// __EIKNOTAPI_H__
   259.1 --- a/epoc32/include/eikproc.h	Tue Mar 16 16:12:26 2010 +0000
   259.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   259.3 @@ -1,73 +0,0 @@
   259.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   259.5 -// All rights reserved.
   259.6 -// This component and the accompanying materials are made available
   259.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   259.8 -// which accompanies this distribution, and is available
   259.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  259.10 -//
  259.11 -// Initial Contributors:
  259.12 -// Nokia Corporation - initial contribution.
  259.13 -//
  259.14 -// Contributors:
  259.15 -//
  259.16 -// Description:
  259.17 -//
  259.18 -
  259.19 -#ifndef __EIKPROC_H__
  259.20 -#define __EIKPROC_H__
  259.21 -
  259.22 -#include <apparc.h>
  259.23 -#include <eikdef.h>
  259.24 -
  259.25 -class CFileStore;
  259.26 -class CEikDocument;
  259.27 -
  259.28 -/** The controlling process for an application. 
  259.29 -
  259.30 -An instance of this class is created by the Uikon environment. This instance 
  259.31 -calls CApaProcess::AddNewDocumentL() to load the application DLL and 
  259.32 -construct the new application which runs in this environment. 
  259.33 -
  259.34 -It also provides services related to an application's main (non-embedded) document, 
  259.35 -including: 
  259.36 -- saving the main document to a direct file store
  259.37 -- providing the name of the most recently accessed file
  259.38 -- getting the name of the application DLL associated with a document.
  259.39 -
  259.40 -@publishedAll 
  259.41 -@released */
  259.42 -NONSHARABLE_CLASS(CEikProcess) : public CApaProcess
  259.43 -	{
  259.44 -public:
  259.45 -	/** Used as a parameter by CEikProcess::SetLastUsedFileL() and LastUsedFileL() 
  259.46 -	to indicate whether the function relates to the last opened or last created file.*/
  259.47 -	enum TLastUsedFile
  259.48 -		{
  259.49 -		/** Last opened file.*/
  259.50 -		ELastOpenFile,
  259.51 -		/** Last created file. */
  259.52 -		ELastCreatedFile
  259.53 -		};
  259.54 -public:
  259.55 -	static CEikProcess* NewL(const RFs& aFs, TProcessId aProcessId=KNullProcessId);
  259.56 -	IMPORT_C TPtrC CommandTailEnd() const;
  259.57 -	IMPORT_C TFileName MainDocFolder() const;
  259.58 -	IMPORT_C void SetLastUsedFileL(TLastUsedFile aType,const TDesC& aFileName) const;
  259.59 -	IMPORT_C TFileName LastUsedFileL(TLastUsedFile aType) const;
  259.60 -	IMPORT_C void SetMainStore(CFileStore* aMainStore);
  259.61 -	IMPORT_C CFileStore* MainStore() const;
  259.62 -	IMPORT_C void AppFromDocL(TDes& aLibraryName,const TDesC& aDocumentName) const;
  259.63 -	IMPORT_C void SaveToDirectFileStoreL(CEikDocument* aDoc,const TFileName* aNewFileName=NULL);
  259.64 -	IMPORT_C void SaveToDirectFileStoreL(CEikDocument* aDoc,const TFileName* aNewFileName,TBool aReopen,TFileName* aTempFile=NULL);
  259.65 -	IMPORT_C ~CEikProcess();
  259.66 -private:
  259.67 -	CEikProcess(const RFs& aFs);
  259.68 -	void GetLibraryNameL(TDes& aLibraryName,const CFileStore& aDocStore, const CStreamDictionary& aStreamDic) const;
  259.69 -	void OpenNewFileL(const TFileName* aNewFileName, const TParse& aNewFilePath);
  259.70 -	CDictionaryStore* OpenMainAppIniFileLC() const;
  259.71 -private:
  259.72 -	TPtrC iCommandTailEnd;
  259.73 -	CFileStore* iMainStore;
  259.74 -	};
  259.75 -
  259.76 -#endif	// __EIKPROC_H__
   260.1 --- a/epoc32/include/eikrutil.h	Tue Mar 16 16:12:26 2010 +0000
   260.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   260.3 @@ -1,85 +0,0 @@
   260.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   260.5 -// All rights reserved.
   260.6 -// This component and the accompanying materials are made available
   260.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   260.8 -// which accompanies this distribution, and is available
   260.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  260.10 -//
  260.11 -// Initial Contributors:
  260.12 -// Nokia Corporation - initial contribution.
  260.13 -//
  260.14 -// Contributors:
  260.15 -//
  260.16 -// Description:
  260.17 -//
  260.18 -
  260.19 -#ifndef __EIKRUTIL_H__
  260.20 -#define __EIKRUTIL_H__
  260.21 -
  260.22 -#include <e32std.h>
  260.23 -#include <gulutil.h>
  260.24 -
  260.25 -class CFbsFont;
  260.26 -class CEikonEnv;
  260.27 -class CWsScreenDevice;
  260.28 -class TResourceReader;
  260.29 -
  260.30 -
  260.31 -/** Provides utilities for reading standard resources. 
  260.32 -
  260.33 -@publishedAll 
  260.34 -@released */
  260.35 -NONSHARABLE_CLASS(EikResourceUtils)
  260.36 -	{
  260.37 -public:
  260.38 -	inline static CFbsFont* CreateScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
  260.39 -	IMPORT_C static CFbsFont* CreateScreenFontL(TInt aResourceId,CEikonEnv* aEnv=NULL);
  260.40 -	inline static TInt8 ReadTInt8L(TInt aResourceId,CEikonEnv* aEnv=NULL);
  260.41 -	inline static TInt16 ReadTInt16L(TInt aResourceId,CEikonEnv* aEnv=NULL);
  260.42 -	inline static TInt32 ReadTInt32L(TInt aResourceId,CEikonEnv* aEnv=NULL);
  260.43 -	IMPORT_C static CColorArray* CreateColorArrayL(TInt aResourceId,CEikonEnv* aEnv=NULL);
  260.44 -	IMPORT_C static CColorArray* CreateColorArrayLC(TInt aResourceId,CEikonEnv* aEnv=NULL);
  260.45 -private:
  260.46 -	enum TResourceTypeInt { EResourceInt8,EResourceInt16,EResourceInt32 };
  260.47 -private:
  260.48 -	IMPORT_C static TInt32 ReadResourceIntL(TInt aResourceId, CEikonEnv* aEnv, TResourceTypeInt aSize);
  260.49 -	EikResourceUtils();
  260.50 -	};
  260.51 -
  260.52 -/** Create a screen font from resource.
  260.53 -
  260.54 -Creates a font for the specified screen device by reading a font UID and font 
  260.55 -flags from the given position in a resource. Returns a pointer to the font 
  260.56 -and transfers ownership.
  260.57 -
  260.58 -@param aResourceReader The resource reader to use to read the font. 
  260.59 -@param aScreenDevice The screen device for which the font will be created. 
  260.60 -@return Screen font object. */
  260.61 -inline CFbsFont* EikResourceUtils::CreateScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice)
  260.62 -	{	return(ResourceUtils::CreateScreenFontL(aResourceReader,aScreenDevice));	}
  260.63 -
  260.64 -/** Gets the 8 bit signed integer held in a specified resource location.
  260.65 -
  260.66 -@param aResourceId The location in the resource to be read. 
  260.67 -@param aEnv The UI environment. 
  260.68 -@return The eight bits that follow the specified location in the resource. */
  260.69 -inline TInt8 EikResourceUtils::ReadTInt8L(TInt aResourceId,CEikonEnv* aEnv)
  260.70 -	{	return static_cast<TInt8>(ReadResourceIntL(aResourceId,aEnv,EResourceInt8));	}
  260.71 -
  260.72 -/** Gets the 16 bit signed integer held in a specified resource location.
  260.73 -
  260.74 -@param aResourceId The location in the resource to be read. 
  260.75 -@param aEnv The UI environment. 
  260.76 -@return The 16 bits that follow the specified location in the resource. */
  260.77 -inline TInt16 EikResourceUtils::ReadTInt16L(TInt aResourceId,CEikonEnv* aEnv)
  260.78 -	{	return static_cast<TInt16>(ReadResourceIntL(aResourceId,aEnv,EResourceInt16));	}
  260.79 -
  260.80 -/** Gets the 32 bit signed integer held in a specified resource location.
  260.81 -
  260.82 -@param aResourceId The location in the resource to be read. 
  260.83 -@param aEnv The UI environment. 
  260.84 -@return The 32 bits that follow the specified location in the resource. */
  260.85 -inline TInt32 EikResourceUtils::ReadTInt32L(TInt aResourceId,CEikonEnv* aEnv)
  260.86 -	{	return static_cast<TInt32>(ReadResourceIntL(aResourceId,aEnv,EResourceInt32));	}
  260.87 -
  260.88 -#endif	// __EIKRUTIL_H__
   261.1 --- a/epoc32/include/eikstart.h	Tue Mar 16 16:12:26 2010 +0000
   261.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   261.3 @@ -1,39 +0,0 @@
   261.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   261.5 -// All rights reserved.
   261.6 -// This component and the accompanying materials are made available
   261.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   261.8 -// which accompanies this distribution, and is available
   261.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  261.10 -//
  261.11 -// Initial Contributors:
  261.12 -// Nokia Corporation - initial contribution.
  261.13 -//
  261.14 -// Contributors:
  261.15 -//
  261.16 -// Description:
  261.17 -//
  261.18 -
  261.19 -#ifndef __EIKSTART_H__
  261.20 -#define __EIKSTART_H__
  261.21 -
  261.22 -#include <e32std.h>
  261.23 -#include <apparc.h>
  261.24 -
  261.25 -class CApaCommandLine;
  261.26 -
  261.27 -/**
  261.28 -This is the API to initialise and run the application architecture for applications built as exes.
  261.29 -It is not intended to be used for generally running applications from other code. Use RApaLsSession for that.
  261.30 -
  261.31 -@publishedAll
  261.32 -@released
  261.33 -*/
  261.34 -NONSHARABLE_CLASS(EikStart)
  261.35 -	{
  261.36 -public:
  261.37 -	IMPORT_C static TInt RunApplication(TApaApplicationFactory aApplicationFactory);
  261.38 -private:
  261.39 -	EikStart();
  261.40 -	};
  261.41 -
  261.42 -#endif	// __EIKSTART_H__
   262.1 --- a/epoc32/include/eikunder.h	Tue Mar 16 16:12:26 2010 +0000
   262.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   262.3 @@ -1,55 +0,0 @@
   262.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   262.5 -// All rights reserved.
   262.6 -// This component and the accompanying materials are made available
   262.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   262.8 -// which accompanies this distribution, and is available
   262.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  262.10 -//
  262.11 -// Initial Contributors:
  262.12 -// Nokia Corporation - initial contribution.
  262.13 -//
  262.14 -// Contributors:
  262.15 -//
  262.16 -// Description:
  262.17 -//
  262.18 -
  262.19 -#ifndef __EIKUNDER_H__
  262.20 -#define __EIKUNDER_H__
  262.21 -
  262.22 -#include <e32base.h>	// class CActive
  262.23 -
  262.24 -class RThread;
  262.25 -
  262.26 -/**
  262.27 -@publishedAll
  262.28 -@released 
  262.29 -*/
  262.30 -class MEikUndertakerObserver
  262.31 -	{
  262.32 -public:
  262.33 -	virtual void HandleThreadExitL(RThread& aThread) = 0;
  262.34 -	};
  262.35 -
  262.36 -/**
  262.37 -@publishedAll
  262.38 -@released 
  262.39 -*/
  262.40 -class CEikUndertaker : public CActive
  262.41 -	{
  262.42 -public:
  262.43 -	IMPORT_C static CEikUndertaker* NewL(MEikUndertakerObserver& aObserver);
  262.44 -	IMPORT_C ~CEikUndertaker();
  262.45 -private:
  262.46 -	CEikUndertaker(MEikUndertakerObserver& aObserver);
  262.47 -	void ConstructL();
  262.48 -	void Request();
  262.49 -private: // from CActive
  262.50 -	void DoCancel();
  262.51 -	void RunL();
  262.52 -private:
  262.53 -	MEikUndertakerObserver& iObserver;
  262.54 -	RUndertaker iUndertaker;
  262.55 -	TInt iThreadHandle;
  262.56 -	};
  262.57 -
  262.58 -#endif	// __EIKUNDER_H__
   263.1 --- a/epoc32/include/eikvcurs.h	Tue Mar 16 16:12:26 2010 +0000
   263.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   263.3 @@ -1,77 +0,0 @@
   263.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   263.5 -// All rights reserved.
   263.6 -// This component and the accompanying materials are made available
   263.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   263.8 -// which accompanies this distribution, and is available
   263.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  263.10 -//
  263.11 -// Initial Contributors:
  263.12 -// Nokia Corporation - initial contribution.
  263.13 -//
  263.14 -// Contributors:
  263.15 -//
  263.16 -// Description:
  263.17 -// class TEikVirtualCursor
  263.18 -// 
  263.19 -//
  263.20 -
  263.21 -#ifndef __EIKVCURS_H__
  263.22 -#define __EIKVCURS_H__
  263.23 -
  263.24 -#include <e32std.h>
  263.25 -#include <coemain.h>
  263.26 -
  263.27 -
  263.28 -/** Provides support for the virtual cursor's state within an application.
  263.29 -
  263.30 -There is one instance of this object per CEikonEnv. 
  263.31 -
  263.32 -@publishedAll
  263.33 -@released */
  263.34 -class TEikVirtualCursor
  263.35 -	{
  263.36 -public:
  263.37 -	/** Specifies the virtual cursor's state. 
  263.38 -
  263.39 -	The state may be on, off or suspended. The suspended state is for use by applications 
  263.40 -	that wish to temporarily disable the cursor, but do not want to switch it 
  263.41 -	off completely. For example, an editor control which when focused needs to 
  263.42 -	capture arrow keys would disable the virtual cursor when it gains focus, 
  263.43 -	and enable it when unfocused. */
  263.44 -	enum TState
  263.45 -		{
  263.46 -		/** Sets the virtual cursor off. */
  263.47 -		EOff=0,
  263.48 -		/** Sets the virtual cursor on. */
  263.49 -		EOn,
  263.50 -		/** Sets the virtual cursor as suspended. */
  263.51 -		ESuspended
  263.52 -		};
  263.53 -public:
  263.54 -	TEikVirtualCursor();
  263.55 -private: //prevent passing by value
  263.56 -	inline TEikVirtualCursor(const TEikVirtualCursor&);
  263.57 -public:
  263.58 -	IMPORT_C void SetCursorStateL(TState aState, CCoeEnv& aEnv);
  263.59 -	IMPORT_C TState CursorState(CCoeEnv& aEnv);
  263.60 -public: // but not exported
  263.61 -	void HandleAppToForeground(CCoeEnv& aEnv);
  263.62 -private:
  263.63 -	void SwitchOffEmulationAndBitmap(CCoeEnv& aEnv);
  263.64 -	void SwitchOnEmulationAndBitmap(CCoeEnv& aEnv);
  263.65 -private:
  263.66 -	TState iState;
  263.67 -	};
  263.68 -
  263.69 -
  263.70 -// inlines
  263.71 -
  263.72 -/** Constructor.
  263.73 -
  263.74 -Sets the cursor's state to ESuspended so that the call to switch off the virtual 
  263.75 -cursor will succeed when the application starts. Required due to the efficient 
  263.76 -implementation of SetCursorState(). */
  263.77 -inline TEikVirtualCursor::TEikVirtualCursor(const TEikVirtualCursor&)
  263.78 -	{}
  263.79 -
  263.80 -#endif
   264.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   264.2 +++ b/epoc32/include/elements/cftransportmacro.h	Wed Mar 31 12:27:01 2010 +0100
   264.3 @@ -0,0 +1,26 @@
   264.4 +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   264.5 +// All rights reserved.
   264.6 +// This component and the accompanying materials are made available
   264.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   264.8 +// which accompanies this distribution, and is available
   264.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  264.10 +//
  264.11 +// Initial Contributors:
  264.12 +// Nokia Corporation - initial contribution.
  264.13 +//
  264.14 +// Contributors:
  264.15 +//
  264.16 +// Description:
  264.17 +// Comms-infras\Elements\cftransportmacro.h
  264.18 +// This header file is exported to \EPOC32\include\comms-infras
  264.19 +// 
  264.20 +//
  264.21 +
  264.22 +#ifndef CFTRANSPORTMACRO_H
  264.23 +#define CFTRANSPORTMACRO_H
  264.24 +
  264.25 +#if (defined SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY) || (defined SYMBIAN_C32_SERCOMMS_V2)
  264.26 +	#define SYMBIAN_NETWORKING_CFTRANSPORT
  264.27 +#endif
  264.28 +
  264.29 +#endif // CFTRANSPORTMACRO_H
   265.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   265.2 +++ b/epoc32/include/elements/metadata.inl	Wed Mar 31 12:27:01 2010 +0100
   265.3 @@ -0,0 +1,53 @@
   265.4 +/**
   265.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   265.6 +* All rights reserved.
   265.7 +* This component and the accompanying materials are made available
   265.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   265.9 +* which accompanies this distribution, and is available
  265.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  265.11 +*
  265.12 +* Initial Contributors:
  265.13 +* Nokia Corporation - initial contribution.
  265.14 +*
  265.15 +* Contributors:
  265.16 +*
  265.17 +* Description:
  265.18 +*
  265.19 +*/
  265.20 +
  265.21 +
  265.22 +
  265.23 +
  265.24 +
  265.25 +/**
  265.26 + @file MetaData.inl
  265.27 + @internalTechnology
  265.28 +*/
  265.29 +
  265.30 +#ifndef __METADATA_INL__
  265.31 +#define __METADATA_INL__
  265.32 +
  265.33 +namespace Meta
  265.34 +{
  265.35 +
  265.36 +
  265.37 +STypeId::STypeId()
  265.38 +/**
  265.39 + * Constructor
  265.40 + */
  265.41 +	{
  265.42 +	iUid.iUid = 0;
  265.43 +	iType = 0;
  265.44 +	}
  265.45 +
  265.46 +STypeId::STypeId(TUint32 aUid, TUint32 aTypeId)
  265.47 +/**
  265.48 + * Constructor
  265.49 + */
  265.50 +	{
  265.51 +	iUid.iUid = aUid;
  265.52 +	iType = aTypeId;
  265.53 +	}
  265.54 +
  265.55 +}	// namespace Meta
  265.56 +#endif	// __METADATA_INL__
   266.1 --- a/epoc32/include/estatus.h	Tue Mar 16 16:12:26 2010 +0000
   266.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   266.3 @@ -1,42 +0,0 @@
   266.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   266.5 -// All rights reserved.
   266.6 -// This component and the accompanying materials are made available
   266.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   266.8 -// which accompanies this distribution, and is available
   266.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  266.10 -//
  266.11 -// Initial Contributors:
  266.12 -// Nokia Corporation - initial contribution.
  266.13 -//
  266.14 -// Contributors:
  266.15 -//
  266.16 -// Description:
  266.17 -// Created at: 04-Jan-99 10:35:54 AM
  266.18 -// Status enumeration for Data Collectors, Data Providers and Data Handlers.
  266.19 -// 
  266.20 -//
  266.21 -
  266.22 -
  266.23 -#if !defined(__ESTATUS_H__)
  266.24 -#define __ESTATUS_H__
  266.25 -
  266.26 -#ifndef __E32DEF_H__
  266.27 -#include <e32def.h> // for TInt
  266.28 -#endif
  266.29 -
  266.30 -// 
  266.31 -// values < 0 are error codes
  266.32 -//			0 - 100 are % processed
  266.33 -//		  > 100 are the enum values below...
  266.34 -//
  266.35 -enum TPluginStatus {	
  266.36 -					EPluginComplete=100,
  266.37 -					EPluginInitialised,
  266.38 -					EPluginWaitingForChild,
  266.39 -					EPluginProcessing,
  266.40 -					EPluginSuspend,
  266.41 -					EPluginCancelled,
  266.42 -					EConnectionChanged
  266.43 -				   };
  266.44 -
  266.45 -#endif    // __ESTATUS_H__
   267.1 --- a/epoc32/include/fepbase.h	Tue Mar 16 16:12:26 2010 +0000
   267.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   267.3 @@ -1,634 +0,0 @@
   267.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   267.5 -// All rights reserved.
   267.6 -// This component and the accompanying materials are made available
   267.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   267.8 -// which accompanies this distribution, and is available
   267.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  267.10 -//
  267.11 -// Initial Contributors:
  267.12 -// Nokia Corporation - initial contribution.
  267.13 -//
  267.14 -// Contributors:
  267.15 -//
  267.16 -// Description:
  267.17 -//
  267.18 -
  267.19 -#ifndef __FEPBASE_H__
  267.20 -#define __FEPBASE_H__
  267.21 -
  267.22 -#include <e32std.h>
  267.23 -#include <e32base.h>
  267.24 -#include <f32file.h>
  267.25 -#include <w32std.h>
  267.26 -#include <coedef.h>
  267.27 -#include <coemain.h>
  267.28 -#include <fepbutils.h>
  267.29 -#include <fepbconfig.h>
  267.30 -
  267.31 -class CCoeControl;
  267.32 -
  267.33 -
  267.34 -/** Specifies the mixin protocol for observing a FEP transaction.
  267.35 -
  267.36 -Applications which need to implement this protocol should derive from this 
  267.37 -class. The functions are not pure virtual because most applications will only 
  267.38 -need to override one of them.
  267.39 -
  267.40 -@see CCoeFep::MakeDeferredFunctionCall() 
  267.41 -@publishedAll 
  267.42 -@released */
  267.43 -class MCoeFepObserver
  267.44 -	{
  267.45 -public:
  267.46 -	// both of these functions do nothing by default - the reason that they are not pure 
  267.47 -	// virtual is that most applications will only want to override one of them
  267.48 -	IMPORT_C virtual void HandleStartOfTransactionL(); // the responsibility of FEPs to call
  267.49 -	IMPORT_C virtual void HandleCompletionOfTransactionL(); // the responsibility of FEPBASE to call - not to be called if the transaction is canceled
  267.50 -private: // reserved. do not override!	
  267.51 -	IMPORT_C virtual void MCoeFepObserver_Reserved_1();
  267.52 -	IMPORT_C virtual void MCoeFepObserver_Reserved_2();
  267.53 -	};
  267.54 -
  267.55 -/** Handles the start of a FEP transaction. 
  267.56 -
  267.57 -This is a non-member function which just calls aFepObserver.HandleStartOfTransactionL().
  267.58 -
  267.59 -It is called indirectly by a FEP to notify the application that it is starting a transaction. 
  267.60 -This is done by calling CCoeEnv::ForEachFepObserverCall() passing in 
  267.61 -FepObserverHandleStartOfTransactionL. Internally, this calls HandleStartOfTransactionL() for 
  267.62 -each MCoeFepObserver object that has been registered with the control environment.
  267.63 -
  267.64 -@param aFepObserver The FEP observer.
  267.65 -@see MCoeFepObserver::HandleStartOfTransactionL()
  267.66 -@publishedAll 
  267.67 -@released */
  267.68 -IMPORT_C void FepObserverHandleStartOfTransactionL(MCoeFepObserver& aFepObserver);
  267.69 -
  267.70 -
  267.71 -/** Abstract base class for all FEPs.
  267.72 -
  267.73 -FEP authors must derive a class from CCoeFep. The CCoeFep-derived class should 
  267.74 -implement all of its pure virtual functions including the ones which CCoeFep 
  267.75 -inherits from its base classes. For information on these functions, see the 
  267.76 -documentation of the base classes. The global NewFepL() function is used to 
  267.77 -create a fully initialised object of the derived class. 
  267.78 -
  267.79 -FEPs that need to intercept key events should own a CCoeControl-derived object. 
  267.80 -This object is referred to as the FEP control. The FEP control should 
  267.81 -be added to the control stack at a priority of ECoeStackPriorityFep, so that 
  267.82 -it receives first refusal of key events from the window server.
  267.83 -
  267.84 -In general, focus is retained by the underlying application. This has the 
  267.85 -advantage that the user can see where the output produced by the FEP will 
  267.86 -go. When focus is switched between controls, the FEP must be notified in case 
  267.87 -the input capability of the focussed control changes. For instance, the FEP 
  267.88 -needs to prevent the user composing a large amount of text only for it to 
  267.89 -be passed to a newly focussed control that cannot accept text input. CCoeFep 
  267.90 -derives from MCoeFocusObserver, which enables FEPs to receive notification 
  267.91 -when the focus for the underlying control changes. The implementation of MCoeFocusObserver's 
  267.92 -functions can call the enquiry functions of class TCoeInputCapabilities to 
  267.93 -find out what input capabilities are supported by the new target control (you 
  267.94 -need to get the TCoeInputCapabilities object from the application UI first: 
  267.95 -see CCoeAppUi::InputCapabilities()).
  267.96 -
  267.97 -@see NewFepL() 
  267.98 -@publishedAll 
  267.99 -@released */
 267.100 -class CCoeFep : public CBase, protected MFepAttributeStorer, public MCoeForegroundObserver, public MCoeFocusObserver, private MCoeMessageObserver
 267.101 -	{
 267.102 -public:
 267.103 -	/** Response to key or pointer event */
 267.104 -	enum TEventResponse
 267.105 -		{
 267.106 -		EEventWasNotConsumed,	/** < Indicates that the FEP did not process the event. */
 267.107 -		EEventWasConsumed		/** < Indicates that the FEP did process the event. */
 267.108 -		};
 267.109 -
 267.110 -	/** Enables FEPs to have some code called but not in the context of the current 
 267.111 -	call stack, hence the name "deferred".
 267.112 -
 267.113 -	For an explanation of the intended use of this class, see 
 267.114 -	CCoeFep::MakeDeferredFunctionCall(). */
 267.115 -	class MDeferredFunctionCall
 267.116 -		{
 267.117 -	public:
 267.118 -		/** This function is called from within a high-priority active object's RunL() 
 267.119 -		shortly after the active object has been queued by calling CCoeFep::MakeDeferredFunctionCall(). */
 267.120 -		virtual void ExecuteFunctionL()=0;
 267.121 -	private: // reserved. do not override!	
 267.122 -		IMPORT_C virtual void MDeferredFunctionCall_Reserved_1();
 267.123 -		IMPORT_C virtual void MDeferredFunctionCall_Reserved_2();
 267.124 -		};
 267.125 -
 267.126 -	/** FEPs send character codes to the application underneath them using SimulateKeyEventsL(). 
 267.127 -	Occasionally a FEP may wish to also specify the modifiers (e.g. Fn, Ctrl, 
 267.128 -	Shift) to be sent with that character code. In this case, they should use 
 267.129 -	the overload of CCoeFep::SimulateKeyEventsL() which takes an array of MModifiedCharacters. */
 267.130 -	class MModifiedCharacter
 267.131 -		{
 267.132 -	public:
 267.133 -		/** Returns the character code of the key combination.
 267.134 -		
 267.135 -		@return The character code of the key combination. */
 267.136 -		virtual TUint CharacterCode() const=0;
 267.137 -		/** Returns a TUint which indicates which modifiers to override, rather than using 
 267.138 -		the current state of the keyboard's modifiers.
 267.139 -	
 267.140 -		@return The modifiers to override in the key combination. */
 267.141 -		virtual TUint ModifierMask() const=0;
 267.142 -		/** Returns a TUint which indicates which of the modifiers specified in the mask 
 267.143 -		(returned by ModifierMask()) must be on and which must be off.
 267.144 -	
 267.145 -		@return Indicates which of the modifiers specified in the mask (returned by 
 267.146 -		ModifierMask()) must be on and which must be off. */
 267.147 -		virtual TUint ModifierValues() const=0;
 267.148 -	private: // reserved. do not override!	
 267.149 -		IMPORT_C virtual void MModifiedCharacter_Reserved_1();
 267.150 -		IMPORT_C virtual void MModifiedCharacter_Reserved_2();
 267.151 -		};
 267.152 -
 267.153 -public:
 267.154 -	IMPORT_C virtual ~CCoeFep();
 267.155 -	IMPORT_C TBool IsSimulatingKeyEvent() const;
 267.156 -	IMPORT_C TBool IsTurnedOnByL(const TKeyEvent& aKeyEvent) const;
 267.157 -	IMPORT_C TBool IsTurnedOffByL(const TKeyEvent& aKeyEvent) const;
 267.158 -public: // new public virtual functions
 267.159 -	/** Cancels the FEP transaction.
 267.160 -	
 267.161 -	A FEP transaction begins when an event is first intercepted by the FEP and 
 267.162 -	ends either when the processed text is committed to the application underneath, 
 267.163 -	or if it is cancelled. */
 267.164 -	virtual void CancelTransaction()=0;
 267.165 -public:
 267.166 -	IMPORT_C void OnStartingHandlingKeyEvent_WithDownUpFilterLC();
 267.167 -	IMPORT_C void OnStartingHandlingKeyEvent_NoDownUpFilterLC();
 267.168 -	IMPORT_C TKeyResponse OnFinishingHandlingKeyEvent_WithDownUpFilterL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
 267.169 -	IMPORT_C TKeyResponse OnFinishingHandlingKeyEvent_NoDownUpFilterL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
 267.170 -protected:
 267.171 -	IMPORT_C CCoeFep(CCoeEnv& aConeEnvironment);
 267.172 -	IMPORT_C void BaseConstructL(const CCoeFepParameters& aFepParameters);
 267.173 -	IMPORT_C void ReadAllAttributesL();
 267.174 -	IMPORT_C void MakeDeferredFunctionCall(MDeferredFunctionCall& aDeferredFunctionCall);
 267.175 -	IMPORT_C void SimulateKeyEventsL(const TArray<TUint>& aArrayOfCharacters);
 267.176 -	IMPORT_C void SimulateKeyEventsL(const TArray<MModifiedCharacter>& aArrayOfModifiedCharacters);
 267.177 -	IMPORT_C void WriteAttributeDataAndBroadcastL(TUid aAttributeUid);
 267.178 -	IMPORT_C void WriteAttributeDataAndBroadcastL(const TArray<TUid>& aAttributeUids);
 267.179 -	IMPORT_C TBool IsOn() const;
 267.180 -public: // not for external use
 267.181 -	void SetOnState(TBool aOnState);
 267.182 -private:
 267.183 -	class CHighPriorityActive;
 267.184 -	class CLowPriorityActive;
 267.185 -	class CCoeFepExtra;
 267.186 -private:
 267.187 -	void DoOnStartingHandlingKeyEventLC(TUint aFlagNoDownUpFilter);
 267.188 -	TKeyResponse DoOnFinishingHandlingKeyEventL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
 267.189 -	static void TurnOffKeyEventHandlingFlags(TAny* aFlags);
 267.190 -	// from MFepAttributeStorer
 267.191 -	IMPORT_C virtual void MFepAttributeStorer_Reserved_1();
 267.192 -	IMPORT_C virtual void MFepAttributeStorer_Reserved_2();
 267.193 -	// from MCoeForegroundObserver
 267.194 -	IMPORT_C virtual void MCoeForegroundObserver_Reserved_1();
 267.195 -	IMPORT_C virtual void MCoeForegroundObserver_Reserved_2();
 267.196 -	// from MCoeFocusObserver
 267.197 -	IMPORT_C virtual void MCoeFocusObserver_Reserved_1();
 267.198 -	IMPORT_C virtual void MCoeFocusObserver_Reserved_2();
 267.199 -	// from MCoeMessageObserver
 267.200 -	IMPORT_C virtual TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters);
 267.201 -	IMPORT_C virtual void MCoeMessageObserver_Reserved_1();
 267.202 -	IMPORT_C virtual void MCoeMessageObserver_Reserved_2();
 267.203 -	// new private virtual functions
 267.204 -	/** Called to notify the FEP that it has either just been turned on or just been 
 267.205 -	turned off (it can find out which by calling CCoeFep::IsOn()). 
 267.206 -	
 267.207 -	If FEPs want to change their appearance when they are off (e.g. make themselves 
 267.208 -	invisible), then they should implement this function accordingly. 
 267.209 -
 267.210 -	@publishedAll
 267.211 -	@released */
 267.212 -	virtual void IsOnHasChangedState()=0;
 267.213 -	
 267.214 -	/**
 267.215 -	@deprecated */
 267.216 -	virtual void OfferKeyEventL(TEventResponse& /*aEventResponse*/, const TKeyEvent& /*aKeyEvent*/, TEventCode /*aEventCode*/){};
 267.217 -
 267.218 -	/**
 267.219 -	@deprecated */
 267.220 -	virtual void OfferPointerEventL(TEventResponse& /*aEventResponse*/, const TPointerEvent& /*aPointerEvent*/, const CCoeControl* /*aWindowOwningControl*/){};
 267.221 -
 267.222 -	/**
 267.223 -	@deprecated */
 267.224 -	virtual void OfferPointerBufferReadyEventL(TEventResponse& /*aEventResponse*/, const CCoeControl* /*aWindowOwningControl*/){};
 267.225 -private:	// reserved. do not override!	
 267.226 -	IMPORT_C virtual void CCoeFep_Reserved_1();
 267.227 -	IMPORT_C virtual void CCoeFep_Reserved_2();
 267.228 -private:
 267.229 -	class SKeyEvent;
 267.230 -	CCoeEnv& iConeEnvironment;
 267.231 -	TUint iFlags;
 267.232 -	CHighPriorityActive* iHighPriorityActive;
 267.233 -	CCoeFepExtra* iExtra;
 267.234 -	SKeyEvent* iLastKeyEvent;
 267.235 -	TUint iSpare[13];
 267.236 -	};
 267.237 -
 267.238 -
 267.239 -/** Specifies the mixin protocol for handling pointer events in inline text. 
 267.240 -
 267.241 -This class should be overridden by front end processors which support inline editing.
 267.242 -
 267.243 -An instance of a class which implements this protocol should be passed to 
 267.244 -MCoeFepAwareTextEditor::StartFepInlineEditL(). 
 267.245 -
 267.246 -@publishedAll 
 267.247 -@released */
 267.248 -class MFepPointerEventHandlerDuringInlineEdit // to be overridden by inline-editing front-end processors
 267.249 -	{
 267.250 -public:
 267.251 -	/** This function is called when a pointer event is received within the inline 
 267.252 -	text. It may need to update the cursor position within the inline text and 
 267.253 -	do text selection in response to drag events.
 267.254 -	
 267.255 -	@param aType Pointer event types.
 267.256 -	@param aModifiers Modifier keys (SHIFT, CTRL, FN etc.).
 267.257 -	@param aPositionInInlineText The position at which the pointer event occurred, 
 267.258 -	as an offset from the start of the inline text string. */
 267.259 -	virtual void HandlePointerEventInInlineTextL(TPointerEvent::TType aType, TUint aModifiers, TInt aPositionInInlineText)=0;
 267.260 -private: // reserved. do not override!	
 267.261 -	IMPORT_C virtual void MFepPointerEventHandlerDuringInlineEdit_Reserved_1();
 267.262 -	IMPORT_C virtual void MFepPointerEventHandlerDuringInlineEdit_Reserved_2();
 267.263 -	};
 267.264 -
 267.265 -class TCharFormat;
 267.266 -class TCursorSelection;
 267.267 -class MFormCustomDraw;
 267.268 -class MFepInlineTextFormatRetriever;
 267.269 -class MCoeFepAwareTextEditor_Extension1;
 267.270 -
 267.271 -
 267.272 -/** Specifies a protocol for FEP-aware text editors.
 267.273 -
 267.274 -TCoeInputCapabilities::FepAwareTextEditor() returns a pointer to an object 
 267.275 -of this class. A NULL return value indicates that the interface is not supported 
 267.276 -by any of the currently focused controls.
 267.277 -
 267.278 -Inline editing means composing text directly in the target text editor control 
 267.279 -rather than in the FEP's edit window first. The target text editor must implement 
 267.280 -the MCoeFepAwareTextEditor interface in order to support inline text. The 
 267.281 -inline text may be differentiated from the surrounding text by the use of 
 267.282 -different formatting. These differences are removed when the inline text transaction 
 267.283 -is committed (causing the inline text to become a real part of the document). 
 267.284 -Cancelling the inline text transaction deletes the inline text and restores 
 267.285 -any previously selected text. A benefit of inline editing is that the user 
 267.286 -only has to concentrate on one area of the screen rather than two. 
 267.287 -
 267.288 -An inline editing transaction consists of the following sequence of function 
 267.289 -calls:
 267.290 -
 267.291 -- a call to StartFepInlineEditL()
 267.292 -
 267.293 -- zero, one or more calls to UpdateFepInlineTextL()
 267.294 -
 267.295 -- a call to either CommitFepInlineEditL() or CancelFepInlineEdit() 
 267.296 -
 267.297 -@publishedAll 
 267.298 -@released */
 267.299 -class MCoeFepAwareTextEditor // to be overridden by text-editors
 267.300 -	{
 267.301 -public:
 267.302 -	/** 
 267.303 -	Starts a FEP inline editing transaction. 
 267.304 -	
 267.305 -	Inserts a descriptor containing the initial inline text into the text editor. 
 267.306 -	The inline text should normally replace any selected text.
 267.307 -	
 267.308 -	The final three parameters are instances of abstract classes, so that the 
 267.309 -	caller of this function must create and instantiate classes deriving from 
 267.310 -	them. These instances must remain in existence for the entire duration of 
 267.311 -	the inline editing transaction.
 267.312 -	
 267.313 -	Inline editing should not already be taking place when this function is called.
 267.314 -	
 267.315 -	@param aInitialInlineText The inline text to insert into the text editor.
 267.316 -	@param aPositionOfInsertionPointInInlineText An insertion position within the 
 267.317 -	inline text. This is an offset from the start of the inline text.
 267.318 -	@param aCursorVisibility ETrue for visible text cursor, EFalse for invisible 
 267.319 -	text cursor in the text editor.
 267.320 -	@param aCustomDraw Pointer to a custom drawing object. May be used to do advanced 
 267.321 -	formatting of the inline text. This parameter is optional; a NULL pointer 
 267.322 -	may be specified.
 267.323 -	@param aInlineTextFormatRetriever Defines a single member function, GetFormatOfFepInlineText() 
 267.324 -	which is used by the text editor to find out the formatting to apply to the 
 267.325 -	inline text. It is also possible to apply different formatting to different 
 267.326 -	parts of the inline text.
 267.327 -	@param aPointerEventHandlerDuringInlineEdit Defines a single function, HandlePointerEventInInlineTextL() 
 267.328 -	which is called when a pointer event is received within the inline text. This 
 267.329 -	function might update the cursor position within the inline text and do text 
 267.330 -	selection. 
 267.331 -	*/
 267.332 -	virtual void StartFepInlineEditL(const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, 
 267.333 -		TBool aCursorVisibility, const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever, 
 267.334 -		MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit)=0;
 267.335 -	/** Updates the inline text. 
 267.336 -	
 267.337 -	Called when a character is added to or deleted from the inline text. 
 267.338 -	
 267.339 -	The descriptor aNewInlineText contains the entire new inline text string, 
 267.340 -	not just the new text to be combined with the old inline text.
 267.341 -	
 267.342 -	@param aNewInlineText Descriptor which holds the entire new inline text string.
 267.343 -	@param aPositionOfInsertionPointInInlineText The position of the insertion 
 267.344 -	point (i.e. the cursor) within the inline text string aNewInlineText. This 
 267.345 -	is an offset from the start of the string. */
 267.346 -	virtual void UpdateFepInlineTextL(const TDesC& aNewInlineText, TInt aPositionOfInsertionPointInInlineText)=0;
 267.347 -	/** Sets the visibility of the text cursor in the text editor.
 267.348 -	
 267.349 -	The cursor visibility is initialised using StartFepInlineEditL(). SetInlineEditingCursorVisibilityL() 
 267.350 -	is provided for FEPs which need to change the visibility of the cursor during 
 267.351 -	the inline editing transaction.
 267.352 -	
 267.353 -	@param aCursorVisibility ETrue for visible text cursor, EFalse for invisible 
 267.354 -	text cursor. */
 267.355 -	virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility)=0;
 267.356 -	IMPORT_C void CommitFepInlineEditL(CCoeEnv& aConeEnvironment);
 267.357 -	/** Cancels the inline editing transaction. 
 267.358 -	
 267.359 -	The edit window should be rolled back to the state it was in before the FEP 
 267.360 -	transaction started, i.e. any inline text in the document which has not yet 
 267.361 -	been committed should be removed. If the inline text has replaced existing text, 
 267.362 -	(e.g. a selection) the replaced text should be reinstated. */
 267.363 -	virtual void CancelFepInlineEdit()=0;
 267.364 -	// with regard to the behaviour of the following functions (except GetScreenCoordinatesForFepL), 
 267.365 -	// note that when inline editing, the contents of the editor will be such that the text constituting 
 267.366 -	// the selection immediately prior to inline editing will be replaced by the inline text 
 267.367 -	// (CancelFepInlineEdit reinstates the previous selection)
 267.368 -	/** Returns the total number of characters in the text editor.
 267.369 -	
 267.370 -	@return The total number of characters in the text editor. */
 267.371 -	virtual TInt DocumentLengthForFep() const=0;
 267.372 -	/** Returns the upper limit (if any) on the length of text that the text editor 
 267.373 -	can hold.
 267.374 -	
 267.375 -	@return The maximum number of characters that the text editor can hold. */
 267.376 -	virtual TInt DocumentMaximumLengthForFep() const=0;
 267.377 -	/** Sets the range of characters in the text editor which should be selected.
 267.378 -	
 267.379 -	@param aCursorSelection Contains the cursor and anchor positions for the selection. */
 267.380 -	virtual void SetCursorSelectionForFepL(const TCursorSelection& aCursorSelection)=0;
 267.381 -	/** Gets the range of characters in the text editor which are selected.
 267.382 -	
 267.383 -	@param aCursorSelection On return, contains the cursor and anchor positions 
 267.384 -	of the selection. */
 267.385 -	virtual void GetCursorSelectionForFep(TCursorSelection& aCursorSelection) const=0;
 267.386 -	/** Copies a portion of the text editor's text content into a descriptor.
 267.387 -	
 267.388 -	@param aEditorContent A descriptor; on return contains a copy of a portion 
 267.389 -	of the text.
 267.390 -	@param aDocumentPosition The document position in the text editor from which 
 267.391 -	to copy.
 267.392 -	@param aLengthToRetrieve The number of characters to copy. */
 267.393 -	virtual void GetEditorContentForFep(TDes& aEditorContent, TInt aDocumentPosition, TInt aLengthToRetrieve) const=0;
 267.394 -	/** Gets the character formatting which applies to the document position specified. 
 267.395 -
 267.396 -	This function allows FEPs to find out the ambient formatting so that the FEP 
 267.397 -	can choose a format for the inline text that will clearly differentiate it 
 267.398 -	from the surrounding text.
 267.399 -	
 267.400 -	@param aFormat On return, contains the character formatting which applies 
 267.401 -	to the character at aDocumentPosition.
 267.402 -	@param aDocumentPosition The document position of interest. */
 267.403 -	virtual void GetFormatForFep(TCharFormat& aFormat, TInt aDocumentPosition) const=0;
 267.404 -	/** Gets the x,y screen coordinates for the left hand side of the baseline of the 
 267.405 -	character located at a specified document position. 
 267.406 -
 267.407 -	Also gets the height (ascent + descent) and ascent of the font of the character. 
 267.408 -	This function could be used to position the FEP window as close as possible to 
 267.409 -	the insertion point in the text editor.
 267.410 -	
 267.411 -	@param aLeftSideOfBaseLine On return, contains the x,y coordinates of the 
 267.412 -	left side of the baseline of the character located at aDocumentPosition.
 267.413 -	@param aHeight On return, contains the height (ascent + descent) of the font 
 267.414 -	of the character at aDocumentPosition.
 267.415 -	@param aAscent On return, contains the ascent of the font of the character 
 267.416 -	at aDocumentPosition.
 267.417 -	@param aDocumentPosition The document position of interest. */
 267.418 -	virtual void GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, TInt aDocumentPosition) const=0;
 267.419 -	
 267.420 -	IMPORT_C MCoeFepAwareTextEditor_Extension1* Extension1();
 267.421 -private:
 267.422 -	/** Private function called by CommitFepInlineEditL(). 
 267.423 -	
 267.424 -	Implementations should commit the inline text to the document. This 
 267.425 -	ends the inline editing transaction and causes the inline text to 
 267.426 -	become a part of the document. 
 267.427 -
 267.428 -	@publishedAll
 267.429 -	@released */
 267.430 -	virtual void DoCommitFepInlineEditL()=0;
 267.431 -	IMPORT_C virtual MCoeFepAwareTextEditor_Extension1* Extension1(TBool& aSetToTrue);
 267.432 -private: // reserved. do not override!	
 267.433 -	IMPORT_C virtual void MCoeFepAwareTextEditor_Reserved_2();
 267.434 -	};
 267.435 -
 267.436 -
 267.437 -class MLayDoc;
 267.438 -
 267.439 -/**
 267.440 -MCoeFepLayDocExtension is an interface class which should be derived from by test editors to
 267.441 -provide access to the current MLayDoc object, and to set a new MLayDoc object.
 267.442 -Used directly from the FEP to decorate the inline edit text, without changing
 267.443 -the actual document text.
 267.444 -
 267.445 -@publishedAll 
 267.446 -@released  
 267.447 -*/
 267.448 -class MCoeFepLayDocExtension
 267.449 -	{
 267.450 -public:
 267.451 -	/**
 267.452 -	Retrives the current MLayDoc object from the text editor
 267.453 -	
 267.454 -	@return Pointer to a MLayDoc object.
 267.455 -	*/
 267.456 -	virtual MLayDoc* GetCurrentMLayDoc() const = 0;
 267.457 -	
 267.458 -	/**
 267.459 -	Sets a new MLayDoc object into the CTextLayout object
 267.460 -	
 267.461 -	@param aLayDoc The new layout document
 267.462 -	*/
 267.463 -	virtual void SetMLayDoc(MLayDoc* aLayDoc) = 0;
 267.464 -	
 267.465 -	/**
 267.466 -	Retrives inline edit positioning information from the editor
 267.467 -	@param 	"TInt& aPositionInDocument" 		Position of the text in the document
 267.468 -	@param 	"TInt& aCursorPositionInDocument" 	Position of the cursor in the document
 267.469 -	@param 	"TInt& aSelectionLength"			The number of characters in the selected text
 267.470 -	*/	 
 267.471 -	virtual void GetFepEditorState(TInt& aPositionInDocument, TInt& aCursorPositionInDocument, TInt& aSelectionLength) = 0;
 267.472 -
 267.473 -	/**
 267.474 -	Used to tell the editor when the size of the inline edit has changed, so
 267.475 -	the text layout can update itself. Should be called before and after the inline
 267.476 -	edit has been decorated.
 267.477 -	@param     	"TCursorSelection aSelection" 	Position of the line edit from the beginning of the text
 267.478 -    @param     	"TInt aDeletedChars" 			Number of character deleted since the last time the text was formatted.
 267.479 -	
 267.480 -	*/
 267.481 -	virtual void HandleInsertDeleteL(TCursorSelection aSelection,TInt aDeletedChars) = 0;
 267.482 -private: // reserved. do not override!	
 267.483 -	IMPORT_C virtual void MCoeFepLayDocExtension_Reserved_1();
 267.484 -	IMPORT_C virtual void MCoeFepLayDocExtension_Reserved_2();
 267.485 -	};
 267.486 -
 267.487 -
 267.488 -/** An interface class which may be derived from by text editors to enable FEPs 
 267.489 -to store state information inside the editor. 
 267.490 -To be overridden by text-editors
 267.491 -
 267.492 -The CState class, defined within the scope of MCoeFepAwareTextEditor_Extension1 
 267.493 -represents the state information. This is information specific to the control 
 267.494 -which is only of interest to the FEP.
 267.495 -
 267.496 -A class which implements this interface must implement the pure virtual functions 
 267.497 -State() and SetStateTransferingOwnershipL() , to get and set the state. The 
 267.498 -class should also implement the MCoeFepAwareTextEditor interface. It must 
 267.499 -override the private virtual MCoeFepAwareTextEditor::Extension1() to return 
 267.500 -a pointer to itself (the default implementation returns NULL). The private 
 267.501 -virtual MCoeFepAwareTextEditor::Extension1() function is called by the public, 
 267.502 -non-virtual MCoeFepAwareTextEditor::Extension1() function.
 267.503 -
 267.504 -For example, if a FEP wants to set some state information in a text editor 
 267.505 -which is about to lose focus, the FEP should first call the editor's Extension1() 
 267.506 -function. If this returns non-NULL, the FEP should call the editor's implementation 
 267.507 -of SetStateTransferingOwnershipL() , passing in an object of a class derived 
 267.508 -from CState , which holds the state information. It should also pass in a 
 267.509 -UID which uniquely identifies the FEP. Later, when focus returns to the editor, 
 267.510 -the FEP can call State() to retrieve the state information it previously set. 
 267.511 -Note that CState has several reserved functions, to enable it to be extended 
 267.512 -in future, while retaining backwards compatibility. 
 267.513 -
 267.514 -@publishedAll 
 267.515 -@released */
 267.516 -class MCoeFepAwareTextEditor_Extension1 
 267.517 -	{
 267.518 -public:
 267.519 -	class CState : public CBase
 267.520 -	/** State information for a text editor control. 
 267.521 -	This is information specific to the control which is only of interest to the 
 267.522 -	FEP which sets it. */
 267.523 -		{
 267.524 -	protected:
 267.525 -		IMPORT_C CState();
 267.526 -		IMPORT_C void BaseConstructL();
 267.527 -	public:
 267.528 -		IMPORT_C virtual ~CState();
 267.529 -	private: // reserved. do not override!	
 267.530 -		IMPORT_C virtual void CState_Reserved_1();
 267.531 -		IMPORT_C virtual void CState_Reserved_2();
 267.532 -		IMPORT_C virtual void CState_Reserved_3();
 267.533 -		IMPORT_C virtual void CState_Reserved_4();
 267.534 -	private:
 267.535 -		TAny* iSpareForFutureUse;
 267.536 -		};
 267.537 -public:
 267.538 -	/** Sets state information in the text editor.
 267.539 -	
 267.540 -	This function must only transfer ownership of the state object after it has 
 267.541 -	successfully done everything that can leave.
 267.542 -	
 267.543 -	@param aState Pointer to the state information object.
 267.544 -	@param aTypeSafetyUid A UID which uniquely identifies the FEP which is calling 
 267.545 -	this function. The text editor should store this value for use by the State() 
 267.546 -	function. */
 267.547 -	virtual void SetStateTransferingOwnershipL(CState* aState, TUid aTypeSafetyUid)=0; // this function must only transfer ownership after it has successfully done everything that can leave
 267.548 -	/** Gets the state information previously set using SetStateTransferingOwnershipL(). 
 267.549 -
 267.550 -	This function does not transfer ownership. The function should first check 
 267.551 -	that aTypeSafetyUid matches the UID value previously specified by SetStateTransferingOwnershipL(). 
 267.552 -	If it doesn't match, the function should return NULL.
 267.553 -	
 267.554 -	@param aTypeSafetyUid A UID which uniquely identifies the FEP which is calling 
 267.555 -	this function. The purpose of this is to enable the FEP to safely downcast 
 267.556 -	the CState pointer returned by this function to a pointer to a derived class 
 267.557 -	known about by the FEP.
 267.558 -	@return Pointer to the state information object. */
 267.559 -	virtual CState* State(TUid aTypeSafetyUid)=0;
 267.560 -public:
 267.561 -	/** Updates the inline text. 
 267.562 -	
 267.563 -	Called when a character is added to or deleted from the inline text. 
 267.564 -	
 267.565 -	The descriptor aNewInlineText contains the entire new inline text string, 
 267.566 -	not just the new text to be combined with the old inline text.
 267.567 -	
 267.568 -	@param aSetToTrue 		Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
 267.569 -							this is the implemented version and not the previous reserved funtion.
 267.570 -	@param aCursorSelection The position of any hilighted text.
 267.571 -	@param aNewInlineText 	Descriptor which holds the entire new inline text string.
 267.572 -	@param aPositionOfInsertionPointInInlineText 
 267.573 -	The position of the insertion point (i.e. the cursor) within the inline text string aNewInlineText. 
 267.574 -	This is an offset from the start of the string. 
 267.575 -	*/
 267.576 -	IMPORT_C virtual void StartFepInlineEditL(TBool& aSetToTrue, const TCursorSelection& aCursorSelection, 
 267.577 -		const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, TBool aCursorVisibility, 
 267.578 -		const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever, 
 267.579 -		MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit);
 267.580 -	
 267.581 -	/** Changes the cursor displayed to indicate different modes of operation. For example how text is enterered
 267.582 -	@param aSetToTrue 		Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
 267.583 -							this is the implemented version and not the previously reserved funtion.
 267.584 -	@param aTextCursor		The new cursor to be displayed.
 267.585 -	*/	
 267.586 -	IMPORT_C virtual void SetCursorType(TBool& aSetToTrue, const TTextCursor& aTextCursor);
 267.587 -	
 267.588 -	/**
 267.589 -	Retrieves the current MCoeFepLayDocExtension object from the text editor
 267.590 -	@param aSetToTrue 		Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
 267.591 -							this is the implemented version and not the previously reserved funtion.
 267.592 -	*/
 267.593 -	IMPORT_C virtual MCoeFepLayDocExtension* GetFepLayDocExtension(TBool& aSetToTrue);
 267.594 -private: // reserved. do not override!	
 267.595 -	IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_4();
 267.596 -	};
 267.597 -
 267.598 -
 267.599 -/** Retrieves a control's caption for use by a FEP. 
 267.600 -
 267.601 -An example of a caption is the non-editable text description displayed 
 267.602 -alongside each item in a dialog.
 267.603 -
 267.604 -TCoeInputCapabilities::CaptionRetrieverForFep() returns a pointer to an object 
 267.605 -of this class. A NULL return value indicates that the interface is not supported 
 267.606 -by any of the currently focused controls. If not NULL, call GetCaptionForFep(), 
 267.607 -which fills the supplied buffer with the control's caption, truncating it 
 267.608 -if the supplied buffer is too small for the whole caption. 
 267.609 -
 267.610 -@publishedAll
 267.611 -@released */
 267.612 -class MCoeCaptionRetrieverForFep // to be overridden by captioned-controls
 267.613 -	{
 267.614 -public:
 267.615 -	/** An implementation of this function should fill aCaption with the target control's 
 267.616 -	caption (or as much of the caption as will fit).
 267.617 -	
 267.618 -	For example, code similar to the following might be used (assuming that your caption is 
 267.619 -	stored internally in iCaption):
 267.620 -	
 267.621 -	@code
 267.622 -	const TInt maximumLength=aCaption.MaxLength();
 267.623 -	if (iCaption.Length()>maximumLength)
 267.624 -	    aCaption=iCaption.Left(maximumLength);
 267.625 -	else
 267.626 -	    aCaption=iCaption;
 267.627 -
 267.628 -	@endcode
 267.629 -	@param aCaption On return, this should be set to the caption of the target 
 267.630 -	control. */
 267.631 -	virtual void GetCaptionForFep(TDes& aCaption) const=0; // gets as much as will fit in aCaption
 267.632 -private: // reserved. do not override!	
 267.633 -	IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_1();
 267.634 -	IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_2();
 267.635 -	};
 267.636 -
 267.637 -#endif	// __FEPBASE_H__
   268.1 --- a/epoc32/include/fepbconfig.h	Tue Mar 16 16:12:26 2010 +0000
   268.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   268.3 @@ -1,226 +0,0 @@
   268.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   268.5 -// All rights reserved.
   268.6 -// This component and the accompanying materials are made available
   268.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   268.8 -// which accompanies this distribution, and is available
   268.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  268.10 -//
  268.11 -// Initial Contributors:
  268.12 -// Nokia Corporation - initial contribution.
  268.13 -//
  268.14 -// Contributors:
  268.15 -//
  268.16 -// Description:
  268.17 -//
  268.18 -
  268.19 -#ifndef __FEPBCONFIG_H__
  268.20 -#define __FEPBCONFIG_H__
  268.21 -
  268.22 -#include <e32base.h>
  268.23 -#include <coemain.h>	// class CCoeEnv
  268.24 -
  268.25 -class CRepository;
  268.26 -
  268.27 -/** Specifies the maximum size of a FEP attribute in bytes.
  268.28 -
  268.29 -@publishedAll
  268.30 -@released */
  268.31 -const TInt KCoeFepMaxAttribDataSize = 200;
  268.32 -
  268.33 -
  268.34 -/** On or off key data for FEPs. 
  268.35 -
  268.36 -The CCoeFep class uses instances of this class to specify the key combination which 
  268.37 -is used to turn the FEP on and off. These values are initialised during construction 
  268.38 -of the FEP (see CCoeFep::BaseConstructL()).
  268.39 -
  268.40 -The class consists of three TUints. They represent: 
  268.41 -
  268.42 -- the character code of the key combination
  268.43 -
  268.44 -- a modifier mask which indicates which modifiers are relevant to the key combination
  268.45 -
  268.46 -- the modifier values which indicate which of the modifiers specified in the 
  268.47 -modifier mask must be on and which must be off
  268.48 -
  268.49 -For example, if the key combination to turn the FEP off is Fn+Enter, where 
  268.50 -the Shift modifier must not be down (and the state of all other modifiers 
  268.51 -is irrelevant), the TFepOnOrOffKeyData object would be constructed as follows:
  268.52 -
  268.53 -@code
  268.54 -TFepOnOrOffKeyData(EKeyEnter, EModifierFunc|EModifierShift, EModifierFunc) 
  268.55 -@endcode
  268.56 -
  268.57 -Note that modifiers should not be set in the values if they are not also set 
  268.58 -in the mask. 
  268.59 -
  268.60 -@publishedAll 
  268.61 -@released */
  268.62 -class TFepOnOrOffKeyData
  268.63 -	{
  268.64 -public:
  268.65 -	inline TFepOnOrOffKeyData(TUint aCharacterCodeForFoldedMatch, TUint aModifierMask, TUint aModifierValues) :iCharacterCodeForFoldedMatch(aCharacterCodeForFoldedMatch), iModifierMask(aModifierMask), iModifierValues(aModifierValues) 
  268.66 -	/** The C++ constructor is used to construct the key data object with the character 
  268.67 -	code, the modifier mask and the modifier values.
  268.68 -	
  268.69 -	@param aCharacterCodeForFoldedMatch The character code.
  268.70 -	@param aModifierMask The modifier mask.
  268.71 -	@param aModifierValues The modifier values. */
  268.72 -		{}
  268.73 -
  268.74 -	inline TUint CharacterCodeForFoldedMatch() const 
  268.75 -	/** Gets the character code.
  268.76 -	
  268.77 -	@return The character code. */
  268.78 -		{return iCharacterCodeForFoldedMatch;}
  268.79 -	inline TUint ModifierMask() const 
  268.80 -	/** Gets the modifier mask.
  268.81 -	
  268.82 -	@return The modifier mask. */
  268.83 -		{return iModifierMask;}
  268.84 -	inline TUint ModifierValues() const 
  268.85 -	/** Gets the modifier values.
  268.86 -	
  268.87 -	@return The modifier values. */
  268.88 -		{return iModifierValues;}
  268.89 -	/**
  268.90 -	Checks if 2 TFepOnOrOffKeyData objects have the same values.
  268.91 -
  268.92 -	returns Etrue if the 2 objects have the same values, EFalse otherwise
  268.93 -	*/
  268.94 -	IMPORT_C TBool operator==(const TFepOnOrOffKeyData& aAnother) const;
  268.95 -	
  268.96 -	
  268.97 -	/**
  268.98 -	Checks if 2 TFepOnOrOffKeyData objects do not have the the same values.
  268.99 -	
 268.100 -	returns Etrue if the 2 objects have the same values, EFalse otherwise
 268.101 -	*/
 268.102 -	IMPORT_C TBool operator!=(const TFepOnOrOffKeyData& aAnother) const;
 268.103 -private:
 268.104 -	TUint iCharacterCodeForFoldedMatch;
 268.105 -	TUint iModifierMask;
 268.106 -	TUint iModifierValues;
 268.107 -	};
 268.108 -
 268.109 -class CDictionaryStore;
 268.110 -class RWriteStream;
 268.111 -class RReadStream;
 268.112 -
 268.113 -
 268.114 -/** Reads and writes generic FEP settings.
 268.115 -
 268.116 -Used by the CCoeFep class. The generic FEP settings are whether the FEP is 
 268.117 -on or off and what key combinations should turn the FEP on or off. Also used 
 268.118 -to synchronise these settings across all running instances of the FEP. These 
 268.119 -settings are generic, unlike FEP attributes which are FEP-specific. FEP attributes 
 268.120 -are stored, restored and synchronised using class MFepAttributeStorer. Generic 
 268.121 -FEP settings are changed locally using the Set...() member functions. Then, 
 268.122 -to store these as the system settings and to apply them globally, call StoreChangesAndBroadcastL().
 268.123 -
 268.124 -Class CCoeFep initialises its generic FEP settings from the global system 
 268.125 -settings during construction. Its generic FEP settings are updated when the 
 268.126 -settings are changed by a call to StoreChangesAndBroadcastL() by another running 
 268.127 -instance of the FEP. 
 268.128 -
 268.129 -@publishedAll
 268.130 -@released */
 268.131 -class CFepGenericGlobalSettings : public CBase
 268.132 -	{
 268.133 -public:
 268.134 -	IMPORT_C static CFepGenericGlobalSettings* NewL(CCoeEnv& aConeEnvironment, const TFepOnOrOffKeyData& aDefaultOnKeyData, const TFepOnOrOffKeyData& aDefaultOffKeyData, TBool aDefaultIsOn);
 268.135 -	IMPORT_C static CFepGenericGlobalSettings* NewLC(CCoeEnv& aConeEnvironment, const TFepOnOrOffKeyData& aDefaultOnKeyData, const TFepOnOrOffKeyData& aDefaultOffKeyData, TBool aDefaultIsOn);
 268.136 -	IMPORT_C static CFepGenericGlobalSettings* NewL();
 268.137 -	IMPORT_C static CFepGenericGlobalSettings* NewLC();
 268.138 -	IMPORT_C TFepOnOrOffKeyData OnKeyData() const;
 268.139 -	IMPORT_C void SetOnKeyData(const TFepOnOrOffKeyData& aOnKeyData);
 268.140 -	IMPORT_C TFepOnOrOffKeyData OffKeyData() const;
 268.141 -	IMPORT_C void SetOffKeyData(const TFepOnOrOffKeyData& aOffKeyData);
 268.142 -	IMPORT_C TBool IsOn() const;
 268.143 -	IMPORT_C void SetIsOn(TBool aIsOn);
 268.144 -	IMPORT_C void StoreChangesAndBroadcastL();
 268.145 -	IMPORT_C void RefreshL();
 268.146 -public: // not for external use
 268.147 -	IMPORT_C static void ReadOnState(CRepository& aRepository, TBool& aOnState, TInt* aError=NULL);
 268.148 -	IMPORT_C static void ReadOnOrOffKeyData(CRepository& aRepository, TFepOnOrOffKeyData& aOnOrOffKeyData, TUint32 aRepositoryKeyMask_OnOrOff, TInt* aError=NULL);
 268.149 -	IMPORT_C static void WriteOnStateAndBroadcastL(CRepository& aRepository, TBool aOnState, TUint32 aRepositoryKeyMask_DefaultOrDynamic);
 268.150 -	IMPORT_C static void WriteOnOrOffKeyDataAndBroadcastL(CRepository& aRepository, const TFepOnOrOffKeyData& aOnOrOffKeyData, TUint32 aRepositoryKey);
 268.151 -private:
 268.152 -	CFepGenericGlobalSettings();
 268.153 -	void ConstructL();
 268.154 -private:
 268.155 -	enum
 268.156 -		{
 268.157 -		EFlagIsOn				=0x00000001,
 268.158 -		// the EFlagStoreXxx flags below indicate whether this object has had any SetXxx functions called on it, which can be used to optimize what work StoreChangesAndBroadcastL has to do
 268.159 -		EFlagStoreIsOn			=0x00000002,
 268.160 -		EFlagStoreOnKeyData		=0x00000004,
 268.161 -		EFlagStoreOffKeyData	=0x00000008
 268.162 -		};
 268.163 -private:
 268.164 -	TUint iFlags;
 268.165 -	TFepOnOrOffKeyData iOnKeyData;
 268.166 -	TFepOnOrOffKeyData iOffKeyData;
 268.167 -	};
 268.168 -
 268.169 -
 268.170 -/** Protocol for storing, restoring and synchronising FEP attributes. 
 268.171 -
 268.172 -An abstract base class for CCoeFep, so FEPs must implement the pure virtual 
 268.173 -functions declared in this class.
 268.174 -
 268.175 -Rather than using a single device-wide instance of a FEP, each application 
 268.176 -has its own instance of the FEP. MFepAttributeStorer provides a framework 
 268.177 -for synchronising FEP attributes across each running instance of the same 
 268.178 -FEP. For this to happen, the FEP must implement MFepAttributeStorer::WriteAttributeDataToStreamL() 
 268.179 -and MFepAttributeStorer::ReadAttributeDataFromStreamL().
 268.180 -
 268.181 -Attributes are FEP-specific, and are identified by a UID which can be accessed 
 268.182 -using AttributeAtIndex(). An example of a FEP attribute might be whether inline 
 268.183 -editing is enabled or disabled. 
 268.184 -
 268.185 -@publishedAll 
 268.186 -@released */
 268.187 -class MFepAttributeStorer
 268.188 -	{
 268.189 -public:
 268.190 -	IMPORT_C void ReadAllAttributesL(CCoeEnv& aConeEnvironment);
 268.191 -	IMPORT_C void WriteAttributeDataAndBroadcastL(CCoeEnv& aConeEnvironment, TUid aAttributeUid);
 268.192 -	IMPORT_C void WriteAttributeDataAndBroadcastL(CCoeEnv& aConeEnvironment, const TArray<TUid>& aAttributeUids);
 268.193 -	/** Returns the total number of FEP attributes.
 268.194 -	
 268.195 -	@return The number of FEP attributes. */
 268.196 -	virtual TInt NumberOfAttributes() const=0;
 268.197 -	/** Returns the UID of the FEP attribute at the index specified.
 268.198 -	
 268.199 -	@param aIndex An array index.
 268.200 -	@return The UID of the FEP attribute at aIndex. */
 268.201 -	virtual TUid AttributeAtIndex(TInt aIndex) const=0;
 268.202 -	/** Writes the value of the attribute specified to the specified write stream.
 268.203 -	
 268.204 -	Called by MFepAttributeStorer::WriteAttributeDataAndBroadcastL() for each 
 268.205 -	attribute passed to it.
 268.206 -	
 268.207 -	@param aAttributeUid UID of the attribute to write to the stream.
 268.208 -	@param aStream The stream to which to write the attribute. */
 268.209 -	virtual void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const=0;
 268.210 -	/** Reads the value of the attribute identified by the UID specified in aAttributeUid 
 268.211 -	from the specified read stream.
 268.212 -	
 268.213 -	You should take appropriate action if the attribute has changed, e.g. 
 268.214 -	if inline editing has been disabled, you might cancel the current transaction.
 268.215 -	
 268.216 -	This function is called by MFepAttributeStorer::ReadAllAttributesL() for all 
 268.217 -	attributes. It is also called when the FEP receives a message that an attribute 
 268.218 -	has been changed by another running instance of the FEP (using WriteAttributeDataAndBroadcastL()).
 268.219 -	
 268.220 -	@param aAttributeUid Identifies the attribute whose value should be read.
 268.221 -	@param aStream Read stream from which to read the attribute's value. */
 268.222 -	virtual void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream)=0;
 268.223 -private:
 268.224 -	IMPORT_C virtual void MFepAttributeStorer_Reserved_1();
 268.225 -	IMPORT_C virtual void MFepAttributeStorer_Reserved_2();
 268.226 -	TInt NumberOfOccurrencesOfAttributeUid(TUid aAttributeUid) const;
 268.227 -	};
 268.228 -
 268.229 -#endif	// __FEPBCONFIG_H__
   269.1 --- a/epoc32/include/fepbutils.h	Tue Mar 16 16:12:26 2010 +0000
   269.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   269.3 @@ -1,137 +0,0 @@
   269.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   269.5 -// All rights reserved.
   269.6 -// This component and the accompanying materials are made available
   269.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   269.8 -// which accompanies this distribution, and is available
   269.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  269.10 -//
  269.11 -// Initial Contributors:
  269.12 -// Nokia Corporation - initial contribution.
  269.13 -//
  269.14 -// Contributors:
  269.15 -//
  269.16 -// Description:
  269.17 -//
  269.18 -
  269.19 -#ifndef __FEPBUTILS_H__
  269.20 -#define __FEPBUTILS_H__
  269.21 -
  269.22 -
  269.23 -
  269.24 -
  269.25 -/** Macro to be called by a keyboard-based FEP at the start of its CCoeControl::OfferKeyEventL()-overriding 
  269.26 -function.
  269.27 -
  269.28 -It causes key up and key down events to be consumed so that the FEP only receives 
  269.29 -standard key events (of type EEventKey, see the TEventCode enumeration). It 
  269.30 -also causes key events that turn the FEP on or off to be consumed. If the 
  269.31 -FEP is simulating key events, or is off, no key events are consumed (so that 
  269.32 -all are passed on to the underlying application) and the macro returns with 
  269.33 -EKeyWasNotConsumed.
  269.34 -
  269.35 -This should be the first thing called in the OfferKeyEventL() function. The 
  269.36 -FEP_END_KEY_EVENT_HANDLER_L macro should be used to return from the function.
  269.37 -
  269.38 -@param aFep The CCoeFep object, should not be a pointer
  269.39 -@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
  269.40 -@param aEventCode The TEventCode object from OfferKeyEventL()
  269.41 -
  269.42 -@see TEventCode 
  269.43 -@publishedAll
  269.44 -@released */
  269.45 -#define FEP_START_KEY_EVENT_HANDLER_L(aFep, aKeyEvent, aEventCode)\
  269.46 -	{\
  269.47 -	if ((aFep).IsSimulatingKeyEvent())\
  269.48 -		{\
  269.49 -		return EKeyWasNotConsumed;\
  269.50 -		}\
  269.51 -	(aFep).OnStartingHandlingKeyEvent_WithDownUpFilterLC();\
  269.52 -	if (((aEventCode)!=EEventKey))\
  269.53 -		{\
  269.54 -		return (aFep).OnFinishingHandlingKeyEvent_WithDownUpFilterL((aEventCode), (aKeyEvent), EKeyWasConsumed);\
  269.55 -		}\
  269.56 -	if (!(aFep).IsOn())\
  269.57 -		{\
  269.58 -		return (aFep).OnFinishingHandlingKeyEvent_WithDownUpFilterL((aEventCode), (aKeyEvent), EKeyWasNotConsumed);\
  269.59 -		}\
  269.60 -	}
  269.61 -
  269.62 -/** Macro to be called by a keyboard-based FEP to return from its CCoeControl::OfferKeyEventL()-overriding 
  269.63 -function.
  269.64 -
  269.65 -It should be used instead of the return statement. It should only be used 
  269.66 -if the FEP_START_KEY_EVENT_HANDLER_L macro was used at the start of the function. 
  269.67 -
  269.68 -@param aFep The CCoeFep object, should not be a pointer
  269.69 -@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
  269.70 -@param aKeyResponse Defined in EPOC32\INCLUDE\COEDEF.H 
  269.71 -					If set to EKeyWasNotConsumed, allows the key event to reach the underlying application. 
  269.72 -					If set to EKeyWasConsumed, prevents the key event reaching the underlying application.
  269.73 -
  269.74 -@publishedAll
  269.75 -@released */
  269.76 -#define FEP_END_KEY_EVENT_HANDLER_L(aFep, aKeyEvent, aKeyResponse)\
  269.77 -	{\
  269.78 -	return (aFep).OnFinishingHandlingKeyEvent_WithDownUpFilterL(EEventKey, (aKeyEvent), (aKeyResponse));\
  269.79 -	}
  269.80 -
  269.81 -/** Macro to be called by a keyboard-based FEP at the start of its CCoeControl::OfferKeyEventL()-overriding 
  269.82 -function.
  269.83 -
  269.84 -It causes events that turn the FEP on or off to be consumed. This variant 
  269.85 -of the macro ignores key up and key down events so that it should be used 
  269.86 -in preference to FEP_START_KEY_EVENT_HANDLER_L in the rare cases where the 
  269.87 -FEP wishes to handle EEventKeyDown or EEventKeyUp events. If the FEP is simulating 
  269.88 -key events, or is off, no key events are consumed and OfferKeyEventL() returns 
  269.89 -with EKeyWasNotConsumed. 
  269.90 -
  269.91 -This should be the first thing called in the OfferKeyEventL() function. The 
  269.92 -FEP_END_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L macro should be used to return 
  269.93 -from the function. 
  269.94 -
  269.95 -@param aFep The CCoeFep object, should not be a pointer
  269.96 -@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
  269.97 -@param aEventCode The TEventCode object from OfferKeyEventL()
  269.98 -
  269.99 -@publishedAll
 269.100 -@released */
 269.101 -#define FEP_START_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L(aFep, aKeyEvent, aEventCode)\
 269.102 -	{\
 269.103 -	if ((aFep).IsSimulatingKeyEvent())\
 269.104 -		{\
 269.105 -		return EKeyWasNotConsumed;\
 269.106 -		}\
 269.107 -	(aFep).OnStartingHandlingKeyEvent_NoDownUpFilterLC();\
 269.108 -	if ((aEventCode)==EEventKey)\
 269.109 -		{\
 269.110 -		if (!(aFep).IsOn())\
 269.111 -			{\
 269.112 -			return (aFep).OnFinishingHandlingKeyEvent_NoDownUpFilterL((aEventCode), (aKeyEvent), EKeyWasNotConsumed);\
 269.113 -			}\
 269.114 -		}\
 269.115 -	}
 269.116 -
 269.117 -/** Macro to be called by a keyboard-based FEP to return from its CCoeControl::OfferKeyEventL()-overriding 
 269.118 -function.
 269.119 -
 269.120 -It should be used instead of the return statement. This variant of the macro 
 269.121 -should only be used if the FEP_START_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L 
 269.122 -macro was used at the start of the function. 
 269.123 -
 269.124 -@param aFep The CCoeFep object, should not be a pointer
 269.125 -@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
 269.126 -@param aEventCode The TEventCode object from OfferKeyEventL()
 269.127 -@param aKeyResponse Defined in EPOC32\INCLUDE\COEDEF. 
 269.128 -					If set to EKeyWasNotConsumed, allows the key event to reach the underlying application. 
 269.129 -					If set to EKeyWasConsumed, prevents the key event reaching the underlying application.
 269.130 -
 269.131 -@publishedAll
 269.132 -@released */
 269.133 -#define FEP_END_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L(aFep, aKeyEvent, aEventCode, aKeyResponse)\
 269.134 -	{\
 269.135 -	return (aFep).OnFinishingHandlingKeyEvent_NoDownUpFilterL((aEventCode), (aKeyEvent), (aKeyResponse));\
 269.136 -	}
 269.137 -
 269.138 -
 269.139 -
 269.140 -#endif // __FEPBUTILS_H__
   270.1 --- a/epoc32/include/fepplugin.h	Tue Mar 16 16:12:26 2010 +0000
   270.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   270.3 @@ -1,59 +0,0 @@
   270.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   270.5 -// All rights reserved.
   270.6 -// This component and the accompanying materials are made available
   270.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   270.8 -// which accompanies this distribution, and is available
   270.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  270.10 -//
  270.11 -// Initial Contributors:
  270.12 -// Nokia Corporation - initial contribution.
  270.13 -//
  270.14 -// Contributors:
  270.15 -//
  270.16 -// Description:
  270.17 -//
  270.18 -
  270.19 -#ifndef __FEPPLUGIN_H__
  270.20 -#define __FEPPLUGIN_H__
  270.21 -
  270.22 -#include <e32base.h>
  270.23 -
  270.24 -class CCoeEnv;
  270.25 -class CCoeFep;
  270.26 -class CCoeFepParameters;
  270.27 -
  270.28 -const TUid KUidFepPluginInterface = { 0x1020233F };
  270.29 -
  270.30 -/**
  270.31 -CCoeFepPlugIn
  270.32 -Abstract base class for FEP plug ins
  270.33 -@publishedAll
  270.34 -@released
  270.35 -*/
  270.36 -class CCoeFepPlugIn : public CBase
  270.37 -	{
  270.38 -public:
  270.39 -	inline static CCoeFepPlugIn* NewL(TUid aFepUid);
  270.40 -	virtual ~CCoeFepPlugIn();
  270.41 -public:
  270.42 -	/** Creates a fully constructed object of CCoeFEP.
  270.43 -
  270.44 -	@param aConeEnvironment	A reference to the application's control environment.
  270.45 -	@param aFepParameters FEP parameters.
  270.46 -	@return A pointer to the newly created object.
  270.47 -	*/
  270.48 -	virtual CCoeFep* NewFepL(CCoeEnv& aConeEnvironment, const CCoeFepParameters& aFepParameters) = 0;
  270.49 -
  270.50 -	/** Runs the FEP settings dialog. 
  270.51 -	
  270.52 -	@param aConeEnvironment A reference to the application's control environment.
  270.53 -	*/
  270.54 -	virtual void SynchronouslyExecuteSettingsDialogL(CCoeEnv& aConeEnvironment) = 0;
  270.55 -
  270.56 -private:
  270.57 -	TUid iDtorTag;
  270.58 -	};
  270.59 -
  270.60 -#include <fepplugin.inl>
  270.61 -
  270.62 -#endif	// __FEPPLUGIN_H__
   271.1 --- a/epoc32/include/fepplugin.inl	Tue Mar 16 16:12:26 2010 +0000
   271.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   271.3 @@ -1,43 +0,0 @@
   271.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   271.5 -// All rights reserved.
   271.6 -// This component and the accompanying materials are made available
   271.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   271.8 -// which accompanies this distribution, and is available
   271.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  271.10 -//
  271.11 -// Initial Contributors:
  271.12 -// Nokia Corporation - initial contribution.
  271.13 -//
  271.14 -// Contributors:
  271.15 -//
  271.16 -// Description:
  271.17 -//
  271.18 -
  271.19 -#ifndef __FEPPLUGIN_INL__
  271.20 -#define __FEPPLUGIN_INL__
  271.21 -
  271.22 -#include <ecom/ecom.h>
  271.23 -
  271.24 -/**
  271.25 -Factory function to create and return a FEP plug-in with the specified UID.
  271.26 -
  271.27 -@return				A FEP plug-in object instance corresponding to the UID provided 
  271.28 -@param				aFepUid The UID of the FEP plug-in implementation to be loaded 
  271.29 -*/
  271.30 -inline CCoeFepPlugIn* CCoeFepPlugIn::NewL(TUid aFepUid)
  271.31 -	{ // static
  271.32 -	TAny* any = REComSession::CreateImplementationL(aFepUid, _FOFF(CCoeFepPlugIn, iDtorTag));
  271.33 -	CCoeFepPlugIn* feppi = reinterpret_cast<CCoeFepPlugIn*>(any);
  271.34 -	return feppi;
  271.35 -	}
  271.36 -
  271.37 -/**
  271.38 -Destructor that destroys the FEP plug-in.
  271.39 -*/
  271.40 -inline CCoeFepPlugIn::~CCoeFepPlugIn()
  271.41 -	{
  271.42 -	REComSession::DestroyedImplementation(iDtorTag);
  271.43 -	}
  271.44 -
  271.45 -
  271.46 -#endif // __FEPPLUGIN_INL__
   272.1 --- a/epoc32/include/gles/egl.h	Tue Mar 16 16:12:26 2010 +0000
   272.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   272.3 @@ -1,52 +0,0 @@
   272.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   272.5 -// All rights reserved.
   272.6 -// This component and the accompanying materials are made available
   272.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   272.8 -// which accompanies this distribution, and is available
   272.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  272.10 -//
  272.11 -// Initial Contributors:
  272.12 -// Nokia Corporation - initial contribution.
  272.13 -//
  272.14 -// Contributors:
  272.15 -//
  272.16 -// Description:
  272.17 -// GLES/EGL.H
  272.18 -// 
  272.19 -//
  272.20 -
  272.21 -#ifndef __GLES_EGL_H_
  272.22 -#define __GLES_EGL_H_
  272.23 -
  272.24 -/**
  272.25 -@publishedPartner
  272.26 -
  272.27 -__OPENGLESHEADERS_LEGACY_EGL_1_1
  272.28 -
  272.29 -The purpose of this define is to allow the staged migration to
  272.30 -EGL 1.3 from EGL 1.1 taken from the perspective of OpenGL ES 1.X
  272.31 -
  272.32 -If __OPENGLESHEADERS_LEGACY_EGL_1_1 is defined, then GLES/egl.h and
  272.33 -GLES/egltypes.h will only provide the EGL 1.1 API; in particular no
  272.34 -symbols from a later version of EGL will be seen at a source code level.
  272.35 -This is considered to be legacy behaviour.  If
  272.36 -__OPENGLESHEADERS_LEGACY_EGL_1_1 is not defined, the GLES/egl.h
  272.37 -and GLES/egltypes.h header files will re-direct to the system-wide
  272.38 -EGL/egl.h. and EGL/egltypes.h respectively.
  272.39 -
  272.40 -The use of GLES/egl.h or GLES/egltypes.h by applications is considered
  272.41 -legacy behaviour because applications should instead use EGL/egl.h
  272.42 -or EGL/egltypes.h respectively.
  272.43 -
  272.44 -When this legacy behaviour is desired, the define should be placed in an
  272.45 -OEM-specific system-wide .hrh file.  Symbian product configurations
  272.46 -never set this legacy behaviour.
  272.47 -*/
  272.48 -#ifdef __OPENGLESHEADERS_LEGACY_EGL_1_1
  272.49 -#include <GLES/legacy_egl_1_1/egl.h>
  272.50 -#else
  272.51 -#include <EGL/egl.h>
  272.52 -#include <GLES/gl.h>
  272.53 -#endif
  272.54 -
  272.55 -#endif /* __GLES_EGL_H_ */
   273.1 --- a/epoc32/include/grdcells.h	Tue Mar 16 16:12:26 2010 +0000
   273.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   273.3 @@ -1,77 +0,0 @@
   273.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   273.5 -// All rights reserved.
   273.6 -// This component and the accompanying materials are made available
   273.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   273.8 -// which accompanies this distribution, and is available
   273.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  273.10 -//
  273.11 -// Initial Contributors:
  273.12 -// Nokia Corporation - initial contribution.
  273.13 -//
  273.14 -// Contributors:
  273.15 -//
  273.16 -// Description:
  273.17 -//
  273.18 -
  273.19 -#if !defined(__GRDCELLS_H__)
  273.20 -#define __GRDCELLS_H__
  273.21 -
  273.22 -#if !defined(__E32STD_H__)
  273.23 -#include <e32std.h>
  273.24 -#endif
  273.25 -#if !defined(__E32BASE_H__)
  273.26 -#include <e32base.h>
  273.27 -#endif
  273.28 -#if !defined(__BACELL_H__)
  273.29 -#include <bacell.h>
  273.30 -#endif
  273.31 -
  273.32 -
  273.33 -
  273.34 -class CGridCellRegion : public CBase
  273.35 -/** Defines a selected region.
  273.36 -
  273.37 -A selected region consists of one or more cell ranges, represented by TRangeRef 
  273.38 -objects, that exist within a defined boundary. The boundary is itself defined 
  273.39 -as a cell range.
  273.40 -
  273.41 -Cell ranges map cell selections, and the class provides the behaviour to manage 
  273.42 -these selections. 
  273.43 -
  273.44 -@publishedAll 
  273.45 -@released */
  273.46 -	{
  273.47 -public:
  273.48 -	IMPORT_C static CGridCellRegion* NewL(const TRangeRef& aBounds);
  273.49 -	IMPORT_C virtual ~CGridCellRegion();
  273.50 -	IMPORT_C void AddColL(TInt aCol);
  273.51 -	IMPORT_C void AddRowL(TInt aRow);
  273.52 -	IMPORT_C void AddCellRangeL(const TRangeRef& aCellRange);
  273.53 -	IMPORT_C void SetLastCellRange(const TRangeRef& aCellRange);
  273.54 -	IMPORT_C void ResizeBounds(const TCellRef& aNewToBounds);
  273.55 -	IMPORT_C void Reset();
  273.56 -	IMPORT_C TInt Count() const;
  273.57 -	IMPORT_C TBool IsCellSelected(const TCellRef &aCell) const;
  273.58 -	IMPORT_C TBool IsCellSelected(const TCellRef &aCell,TInt aIndex) const;
  273.59 -	IMPORT_C TBool IsCellSelectedLastIndex(const TCellRef &aCell) const;
  273.60 -	IMPORT_C TBool IsRowSelected(TInt aRow) const;
  273.61 -	IMPORT_C TBool IsRowSelected(TInt aRow,TInt aIndex) const;
  273.62 -	IMPORT_C TBool IsRowSelectedLastIndex(TInt aRow) const;
  273.63 -	IMPORT_C TBool IsAnyRowSelected() const;
  273.64 -	IMPORT_C TBool IsColSelected(TInt aCol) const;
  273.65 -	IMPORT_C TBool IsColSelected(TInt aCol,TInt aIndex) const;
  273.66 -	IMPORT_C TBool IsColSelectedLastIndex(TInt aCol) const;
  273.67 -	IMPORT_C TBool IsAnyColSelected() const;
  273.68 -	IMPORT_C TBool IsRangeSelected(const TRangeRef &aRange) const;
  273.69 -	IMPORT_C TBool IsRangeSelected(const TRangeRef &aRange,TInt aIndex) const;
  273.70 -	IMPORT_C TBool IsRangeSelectedLastIndex(const TRangeRef &aRange) const;
  273.71 -	IMPORT_C TRangeRef operator[](TInt aIndex) const;
  273.72 -	IMPORT_C const CArrayFix<TRangeRef>* RangeList() const;
  273.73 -private:
  273.74 -	CGridCellRegion(const TRangeRef& aBounds);
  273.75 -	void ConstructL();
  273.76 -private:
  273.77 -	TRangeRef iBounds;
  273.78 -	CArrayFix<TRangeRef>* iRangeList;
  273.79 -	};
  273.80 -#endif
   274.1 --- a/epoc32/include/grddef.h	Tue Mar 16 16:12:26 2010 +0000
   274.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   274.3 @@ -1,62 +0,0 @@
   274.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   274.5 -// All rights reserved.
   274.6 -// This component and the accompanying materials are made available
   274.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   274.8 -// which accompanies this distribution, and is available
   274.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  274.10 -//
  274.11 -// Initial Contributors:
  274.12 -// Nokia Corporation - initial contribution.
  274.13 -//
  274.14 -// Contributors:
  274.15 -//
  274.16 -// Description:
  274.17 -// Some standard definitions used in GRID
  274.18 -// 
  274.19 -//
  274.20 -
  274.21 -#if !defined(__GRDDEF_H__)
  274.22 -#define __GRDDEF_H__
  274.23 -
  274.24 -/** Defines the direction and the amount by which a 
  274.25 -cursor is to move, when performing a scrolling operation.
  274.26 -@publishedAll
  274.27 -@released
  274.28 -@see CGridLay::PageScroll()
  274.29 -@see CGridImg::MoveCursorL() */
  274.30 -enum TMoveDirectionAndAmount
  274.31 -	{
  274.32 -	/** Move up by one row. */
  274.33 -	EMoveRowUp,
  274.34 -	/** Move down by one row. */
  274.35 -	EMoveRowDown,
  274.36 -	/** Move left by one column. */
  274.37 -	EMoveColumnLeft,
  274.38 -	/** Move right by one column. */
  274.39 -	EMoveColumnRight,
  274.40 -	/** Move up by one page. */
  274.41 -	EMovePageUp,
  274.42 -	/** Move down by one page. */
  274.43 -	EMovePageDown,
  274.44 -	/** Move left by one page. */
  274.45 -	EMovePageLeft,
  274.46 -	/** Move right by one page. */
  274.47 -	EMovePageRight,
  274.48 -	/** Move to the start of the row. */
  274.49 -	EMoveRowStart,
  274.50 -	/** Move to the end of the row */
  274.51 -	EMoveRowEnd,
  274.52 -	/** Move to the home position. */
  274.53 -	EMoveHome,
  274.54 -	/** Move to the end position. */
  274.55 -	EMoveEnd,
  274.56 -	/** Do not move the cursor. */
  274.57 -	EMoveNone,
  274.58 -	/** Move to the start of the column. */
  274.59 -	EMoveColumnStart,
  274.60 -	/** Move to the end of the column. */
  274.61 -	EMoveColumnEnd
  274.62 -	};
  274.63 -
  274.64 -
  274.65 -#endif
   275.1 --- a/epoc32/include/grdprint.h	Tue Mar 16 16:12:26 2010 +0000
   275.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   275.3 @@ -1,64 +0,0 @@
   275.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   275.5 -// All rights reserved.
   275.6 -// This component and the accompanying materials are made available
   275.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   275.8 -// which accompanies this distribution, and is available
   275.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  275.10 -//
  275.11 -// Initial Contributors:
  275.12 -// Nokia Corporation - initial contribution.
  275.13 -//
  275.14 -// Contributors:
  275.15 -//
  275.16 -// Description:
  275.17 -//
  275.18 -
  275.19 -#if !defined(__GRDPRINT_H__)
  275.20 -#define __GRDPRINT_H__
  275.21 -
  275.22 -#if !defined(__E32STD_H__)
  275.23 -#include <e32std.h>
  275.24 -#endif
  275.25 -#if !defined(__E32BASE_H__)
  275.26 -#include <e32base.h>
  275.27 -#endif
  275.28 -#if !defined(__GRDSTD_H__)
  275.29 -#include <grdstd.h>
  275.30 -#endif
  275.31 -
  275.32 -
  275.33 -
  275.34 -class CGridPrinter : public CBase, public MPageRegionPrinter
  275.35 -/** Handles printing and print preview functionality for grid.
  275.36 -@publishedAll 
  275.37 -@released */
  275.38 -	{
  275.39 -public:
  275.40 -	IMPORT_C static CGridPrinter* NewL(CGridLay* aGridLay,CGridLabelImg* aPrintLabelImg,
  275.41 -		CGridCellImg* aPrintCellImg,TZoomFactor* aZoomFactor);
  275.42 -	IMPORT_C virtual ~CGridPrinter();
  275.43 -	inline void SetRealPrintingDeviceMap(const MGraphicsDeviceMap* aGraphicsDeviceMap);
  275.44 -	IMPORT_C void SetTopLeftMargin(const TPoint& aTlMarginInTwips);
  275.45 -	IMPORT_C void SetPageSizeInTwipsL(const TSize& aSizeInTwips);
  275.46 -	IMPORT_C void PaginateL();
  275.47 -	inline CGridLay& GridLay();
  275.48 -public:	// from MPageRegionPrinter
  275.49 -	IMPORT_C virtual void PrintBandL(CGraphicsDevice* aDevice,TInt aPageNo,const TBandAttributes& aBandInPixels);
  275.50 -private:
  275.51 -	CGridPrinter(CGridLabelImg* aPrintLabelImg,CGridCellImg* aPrintCellImg,TZoomFactor* aZoomFactor);
  275.52 -	void ConstructL(CGridLay* aGridLay);
  275.53 -	void SetGdMapAndPushLabelImgLC();
  275.54 -private:
  275.55 -	CGridLay* iGridLay;
  275.56 -	CGridImg* iGridImg;
  275.57 -	CGridLabelImg* iPrintLabelImg;
  275.58 -	CGridCellImg* iPrintCellImg;
  275.59 -	TZoomFactor* iZoomFactor;
  275.60 -	const MGraphicsDeviceMap* iGraphicsDeviceMap;
  275.61 -	TPoint iTlMarginInTwips;
  275.62 -	TRect iPrintablePage;
  275.63 -	TInt iScaleFactor;
  275.64 -	};
  275.65 -
  275.66 -#include <grdprint.inl>
  275.67 -#endif
   276.1 --- a/epoc32/include/grdprint.inl	Tue Mar 16 16:12:26 2010 +0000
   276.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   276.3 @@ -1,36 +0,0 @@
   276.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   276.5 -// All rights reserved.
   276.6 -// This component and the accompanying materials are made available
   276.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   276.8 -// which accompanies this distribution, and is available
   276.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  276.10 -//
  276.11 -// Initial Contributors:
  276.12 -// Nokia Corporation - initial contribution.
  276.13 -//
  276.14 -// Contributors:
  276.15 -//
  276.16 -// Description:
  276.17 -//
  276.18 -
  276.19 -inline void CGridPrinter::SetRealPrintingDeviceMap(const MGraphicsDeviceMap* aGraphicsDeviceMap)
  276.20 -/** Supplies the object that deals with the mapping between twips and device-specific 
  276.21 -units for a specific printer.
  276.22 -
  276.23 -@param aGraphicsDeviceMap The interface object for mapping between twips and 
  276.24 -device-specific units. */
  276.25 -	{
  276.26 -	iGraphicsDeviceMap=aGraphicsDeviceMap;
  276.27 -	}
  276.28 -
  276.29 -inline CGridLay& CGridPrinter::GridLay()
  276.30 -/** Gets the grid layout used by this printing object.
  276.31 -
  276.32 -Note that this is not the same object passed to CGridPrinter::NewL(). Internally, 
  276.33 -the class creates its own CGridLay object from the information supplied in the 
  276.34 -CGridLay object passed to CGridPrinter::NewL().
  276.35 -
  276.36 -@return The grid layout object. */
  276.37 -	{
  276.38 -	return *iGridLay;
  276.39 -	}
   277.1 --- a/epoc32/include/grdstd.h	Tue Mar 16 16:12:26 2010 +0000
   277.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   277.3 @@ -1,753 +0,0 @@
   277.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   277.5 -// All rights reserved.
   277.6 -// This component and the accompanying materials are made available
   277.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   277.8 -// which accompanies this distribution, and is available
   277.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  277.10 -//
  277.11 -// Initial Contributors:
  277.12 -// Nokia Corporation - initial contribution.
  277.13 -//
  277.14 -// Contributors:
  277.15 -//
  277.16 -// Description:
  277.17 -//
  277.18 -
  277.19 -#if !defined(__GRDSTD_H__)
  277.20 -#define __GRDSTD_H__
  277.21 -
  277.22 -#if !defined(__E32STD_H__)
  277.23 -#include <e32std.h>
  277.24 -#endif
  277.25 -#if !defined(__GDI_H__)
  277.26 -#include <gdi.h>
  277.27 -#endif
  277.28 -#if !defined(__GRDCELLS_H__)
  277.29 -#include <grdcells.h>
  277.30 -#endif
  277.31 -#if !defined(__GRDDEF_H__)
  277.32 -#include <grddef.h>
  277.33 -#endif
  277.34 -
  277.35 -
  277.36 -
  277.37 -class MGridTable
  277.38 -/** An interface that can be implemented to provide row and column information.
  277.39 -
  277.40 -Note that for grids that have indefinite row boundaries, an implementation 
  277.41 -is mandatory.
  277.42 -
  277.43 -A concrete implementation is passed to a CGridLay object through its CGridLay::ConstructL() 
  277.44 -functions or its CGridLay::SetGridTable() function. 
  277.45 -
  277.46 -@publishedAll 
  277.47 -@released */
  277.48 -	{
  277.49 -public:
  277.50 -	enum
  277.51 -		{
  277.52 -		/** The number of rows returned by the default implementation of RowExtent(). */
  277.53 -		EDefaultRowExtent=20,
  277.54 -		/** The number of columns returned by the default implementation of ColumnExtent(). */
  277.55 -		EDefaultColumnExtent=20
  277.56 -		};
  277.57 -public:
  277.58 -	IMPORT_C virtual TBool RequestRow(TInt aRow,TInt& aReturnRow) const;//If used should be derived from
  277.59 -	IMPORT_C virtual TInt RowExtent() const;
  277.60 -	IMPORT_C virtual TInt ColumnExtent() const;
  277.61 -	};
  277.62 -
  277.63 -
  277.64 -////////////////////////->
  277.65 -
  277.66 -class TGridColors
  277.67 -/** The grid colour specification.
  277.68 -
  277.69 -An object of this type encapsulates the colours to be used when drawing a 
  277.70 -grid cell.
  277.71 -
  277.72 -@publishedAll 
  277.73 -@released 
  277.74 -@see CGridLabelImg */
  277.75 -	{
  277.76 -public:
  277.77 -	IMPORT_C TGridColors();
  277.78 -	IMPORT_C TGridColors(TRgb aForeground, TRgb aBackground, TRgb aLines, TRgb aLabelSeparators);
  277.79 -public:
  277.80 -	/** The foreground colour. */
  277.81 -	TRgb iForeground;
  277.82 -	/** The background colour. */
  277.83 -	TRgb iBackground;
  277.84 -	/** The colour of lines. */
  277.85 -	TRgb iLines;
  277.86 -	/** The colour of label separators. */
  277.87 -	TRgb iLabelSeparators;
  277.88 -//	TRgb iEdge;
  277.89 -	};
  277.90 -////////////////////////->
  277.91 -
  277.92 -
  277.93 -class RReadStream;
  277.94 -class RWriteStream;
  277.95 -class CStreamStore;
  277.96 -class CGridImg;
  277.97 -class CSparseMap;
  277.98 -
  277.99 -
 277.100 -class CGridLay : public CBase
 277.101 -/** Handles the layout of a grid, and controls how columns, rows and selections 
 277.102 -appear. 
 277.103 -
 277.104 -@publishedAll 
 277.105 -@released */
 277.106 -	{
 277.107 -	friend class CGridImg;
 277.108 -public:
 277.109 -	/** Defines the order in which pages are printed. */
 277.110 -	enum TPageOrder
 277.111 -		{
 277.112 -		/** All pages in a horizontal line are drawn before starting on the next horizontal 
 277.113 -		line. */
 277.114 -		ERightThenDown,
 277.115 -		/** All pages in a vertical line are drawn before starting on the next vertical 
 277.116 -		line to the right. */
 277.117 -		EDownThenRight
 277.118 -		};
 277.119 -	/** Indicates whether the size of the grid should be adjusted when columns and 
 277.120 -	rows are inserted or deleted. */
 277.121 -	enum TFixGridRange
 277.122 -		{
 277.123 -		/** The grid range should not be adjusted on insertion or deletion of rows and/or columns. */
 277.124 -		EFixGridRange,
 277.125 -		/** The grid range can be adjusted on insertion or deletion of rows and/or columns. */	
 277.126 -		EAdjustGridRange
 277.127 -		};
 277.128 -public:
 277.129 -	IMPORT_C CGridLay(MGraphicsDeviceMap* aGraphicsDeviceMap);
 277.130 -	IMPORT_C void ConstructL(CGridLay* aGridLay,CGridImg* aGridImg);//Constructs Partial Copy
 277.131 -	IMPORT_C void ConstructL(const MGridTable *aGridTable,CGridImg *aGridImg,TInt aNoOfRows,TInt aNoOfCols);
 277.132 -	IMPORT_C void ConstructL(const MGridTable *aGridTable,CGridImg *aGridImg,TInt aNoOfCols);
 277.133 -	IMPORT_C virtual ~CGridLay();
 277.134 -
 277.135 -	IMPORT_C TPoint PageScroll(TMoveDirectionAndAmount aPageScroll);
 277.136 -	IMPORT_C TPoint ExposeCell(const TCellRef &aCell);
 277.137 -	IMPORT_C TPoint ExposeCellToTopLeft(const TCellRef &aCell);
 277.138 -
 277.139 -	IMPORT_C void SetGridImgL(CGridImg* aGridImg);
 277.140 -	inline void SetGridTable(const MGridTable* aGridTable);
 277.141 -	inline TRangeRef VisibleRange() const;
 277.142 -	IMPORT_C void SetVisibleRange(const TCellRef& aTopLeftCell);
 277.143 -	inline TRangeRef TitleRange() const;
 277.144 -	inline TRangeRef GridRange() const;
 277.145 -	IMPORT_C void SetGraphicsDeviceMap(MGraphicsDeviceMap* aGraphicsDeviceMap);
 277.146 -	IMPORT_C void SetGridToDefault();
 277.147 -
 277.148 -	IMPORT_C TInt ColumnWidthInTwips(TInt aCol) const;
 277.149 -	IMPORT_C void SetColumnWidthInTwipsL(TInt aCol,TInt aWidthInTwips);
 277.150 -	IMPORT_C TInt SetColumnWidthInTwipsL(TInt aStartCol,TInt aEndCol,TInt aWidthInTwips);
 277.151 -	IMPORT_C TInt DefaultColumnWidthInTwips() const;
 277.152 -	IMPORT_C void SetDefaultColumnWidthInTwips(TInt aWidthInTwips);
 277.153 -	IMPORT_C void SetColumnWidthsToDefault();
 277.154 -	IMPORT_C TInt MinColumnWidthInPixels() const;
 277.155 -	IMPORT_C void SetMinColumnWidthInPixels(TInt aWidthInPixels);
 277.156 -	IMPORT_C TInt ColumnWidthOfSelectedInTwips() const;
 277.157 -	IMPORT_C void SetColumnWidthOfSelectedInTwipsL(TInt aWidthInTwips);
 277.158 -	IMPORT_C TInt RowHeightInTwips(TInt aRow) const;
 277.159 -	IMPORT_C void SetRowHeightInTwipsL(TInt aRow,TInt aHeightInTwips);
 277.160 -	IMPORT_C TInt SetRowHeightInTwipsL(TInt aStartRow,TInt aEndRow,TInt aHeightInTwips);
 277.161 -	IMPORT_C TInt DefaultRowHeightInTwips() const;
 277.162 -	IMPORT_C void SetDefaultRowHeightInTwips(TInt aHeightInTwips);
 277.163 -	IMPORT_C void SetRowHeightsToDefault();
 277.164 -	IMPORT_C TInt MinRowHeightInPixels() const;
 277.165 -	IMPORT_C void SetMinRowHeightInPixels(TInt aHeightInPixels);
 277.166 -	IMPORT_C TInt RowHeightOfSelectedInTwips() const;
 277.167 -	IMPORT_C void SetRowHeightOfSelectedInTwipsL(TInt aHeightInTwips);
 277.168 -	IMPORT_C void RecalcPixelSparseMaps();
 277.169 -	IMPORT_C void InsertDeleteColumns(TInt aStartCol,TInt aNoOfCols,
 277.170 -		TFixGridRange aFixGridRange=EFixGridRange);
 277.171 -	IMPORT_C void InsertDeleteRows(TInt aStartRow,TInt aNoOfRows,
 277.172 -		TFixGridRange aFixGridRange=EFixGridRange);
 277.173 -
 277.174 -	inline TBool IsSideLabels() const;
 277.175 -	IMPORT_C void SetSideLabels(TBool aState);
 277.176 -	inline TBool IsTopLabels() const;
 277.177 -	IMPORT_C void SetTopLabels(TBool aState);
 277.178 -	inline TBool IsVerticalGridLines() const;
 277.179 -	IMPORT_C void SetVerticalGridLines(TBool aState);
 277.180 -	inline TBool IsHorizontalGridLines() const;
 277.181 -	IMPORT_C void SetHorizontalGridLines(TBool aState);
 277.182 -	inline TBool IsGridLabelSeparators() const;
 277.183 -	IMPORT_C void SetGridLabelSeparators(TBool aState);
 277.184 -	inline TBool IsColumnBursting() const;
 277.185 -	IMPORT_C void SetColumnBursting(TBool aState);
 277.186 -	inline TBool IsCursorVisible() const;
 277.187 -	IMPORT_C void SetCursorVisible(TBool aVisible);
 277.188 -	inline TBool IsHighlightVisible() const;
 277.189 -	IMPORT_C void SetHighlightVisible(TBool aVisible);
 277.190 -	inline TBool IsRowPermanentlySelected() const;
 277.191 -	IMPORT_C void SetRowPermanentlySelectedL(TBool aState);
 277.192 -	inline TBool IsTitleLines() const;
 277.193 -	inline TBool IsHorizontalTitleLine() const;
 277.194 -	inline TBool IsVerticalTitleLine() const;
 277.195 -	IMPORT_C void SetTitleLinesL(TBool aState);
 277.196 -	IMPORT_C void SetTitleLinesL(const TCellRef& aCellRef);
 277.197 -	IMPORT_C void ToggleTitleLinesL();
 277.198 -	inline TBool IsIndefiniteRowBoundaries() const;
 277.199 -	inline TBool IsUniformRowHeight() const;
 277.200 -	IMPORT_C void SetUniformRowHeight(TBool aState);
 277.201 -	inline TBool IsUniformColumnWidth() const;
 277.202 -	IMPORT_C void SetUniformColumnWidth(TBool aState);
 277.203 -	inline TBool IsTopLabelDragDisabled() const;
 277.204 -	IMPORT_C void SetTopLabelDragDisabled(TBool aState);
 277.205 -	inline TBool IsSideLabelDragDisabled() const;
 277.206 -	IMPORT_C void SetSideLabelDragDisabled(TBool aState);
 277.207 -	inline TBool IsPrintedLabels() const;
 277.208 -	IMPORT_C void SetPrintedLabels(TBool aState);
 277.209 -	inline TBool IsPrintedGridLines() const;
 277.210 -	IMPORT_C void SetPrintedGridLines(TBool aState);
 277.211 -	inline TBool IsEncroachingCellBorders() const;
 277.212 -	IMPORT_C void SetEncroachingCellBorders(TBool aState);
 277.213 -	inline TBool IsRowSelectionDisabled() const;
 277.214 -	IMPORT_C void SetRowSelectionDisabled(TBool aState);
 277.215 -	inline TBool IsColumnSelectionDisabled() const;
 277.216 -	IMPORT_C void SetColumnSelectionDisabled(TBool aState);
 277.217 -	inline TBool IsAutoClearGridCells() const;
 277.218 -	IMPORT_C void SetAutoClearGridCells(TBool aState);
 277.219 -	inline TBool IsPageBreakLinesHidden() const;
 277.220 -	IMPORT_C void SetPageBreakLinesHidden(TBool aState);
 277.221 -	inline TBool HasChanged() const;
 277.222 -	inline void SetHasChanged(TBool aHasChanged);
 277.223 -	inline void SetGridEdgeColor(TRgb aColor);
 277.224 -
 277.225 -	IMPORT_C TInt MinVisibleFromRow() const;
 277.226 -	IMPORT_C TInt MinVisibleFromColumn() const;
 277.227 -	IMPORT_C void ResetVisibleToRow();
 277.228 -	IMPORT_C void ResetVisibleToColumn();
 277.229 -	IMPORT_C void ResetVisibleToCell();
 277.230 -	IMPORT_C TInt RowExtent() const;
 277.231 -	IMPORT_C TInt ColumnExtent() const;
 277.232 -
 277.233 -	IMPORT_C TInt RowToYVal(TInt aRow) const;
 277.234 -	IMPORT_C TInt RowToYVal(TInt aStartRow,TInt aEndRow) const;
 277.235 -	IMPORT_C TInt VisibleRowToYVal(TInt aRow) const;
 277.236 -	IMPORT_C TInt TitleRowToYVal(TInt aTitleRow) const;
 277.237 -	IMPORT_C TInt ColumnToXVal(TInt aCol) const;
 277.238 -	IMPORT_C TInt ColumnToXVal(TInt aStartCol,TInt aEndCol) const;
 277.239 -	IMPORT_C TInt VisibleColumnToXVal(TInt aCol) const;
 277.240 -	IMPORT_C TInt TitleColumnToXVal(TInt aTitleCol) const;
 277.241 -	IMPORT_C TInt YValToRow(TInt aYVal) const;
 277.242 -	IMPORT_C TInt YValToRow(TInt aStartRow,TInt aDisp) const;
 277.243 -	IMPORT_C TInt YValToTitleRow(TInt aYVal) const;
 277.244 -	IMPORT_C TInt XValToColumn(TInt aXVal) const;
 277.245 -	IMPORT_C TInt XValToColumn(TInt aStartCol,TInt aDisp) const;
 277.246 -	IMPORT_C TInt XValToTitleColumn(TInt aXVal) const;
 277.247 -	IMPORT_C TCellRef PointToCell(const TPoint &aPoint) const;
 277.248 -	IMPORT_C TCellRef PointToCell(const TCellRef &aStartCell,const TPoint &aPointDisp) const;
 277.249 -	IMPORT_C TPoint CellToPoint(const TCellRef &aCell) const;
 277.250 -	IMPORT_C TPoint CellToPoint(const TCellRef &aStartCell,const TCellRef &aEndCell) const;
 277.251 -	IMPORT_C TPoint TitleCellToPoint(const TCellRef& aTitleCell) const;
 277.252 -	IMPORT_C TRect CellToRect(const TCellRef& aCell) const;
 277.253 -	IMPORT_C TInt YValToNearestRow(TInt aStartRow,TInt aDisp) const;
 277.254 -	IMPORT_C TInt XValToNearestColumn(TInt aStartCol,TInt aDisp) const;
 277.255 -	IMPORT_C TSize TopLeftTitleRangeSize() const;
 277.256 -
 277.257 -	IMPORT_C void PaginateL();
 277.258 -	IMPORT_C void ClearPagination();
 277.259 -	IMPORT_C void NotifyPaginationOutOfDateL();
 277.260 -	inline TBool IsPaginated() const;
 277.261 -	IMPORT_C TRangeRef PageToRange(TInt aPageNo,TPageOrder aPageOrder) const;
 277.262 -	inline void SetPrintRange(const TRangeRef& aPrintRange);
 277.263 -	IMPORT_C TInt NoOfPages() const;
 277.264 -	IMPORT_C void SetPageSizeInTwipsL(const TSize& aPageSize);
 277.265 -	inline TSize PageSizeInTwips() const;
 277.266 -	inline TBool IsAutoPagination() const;
 277.267 -	IMPORT_C void SetAutoPagination(TBool aState);
 277.268 -	IMPORT_C TBool IsHardRowPageBreak(TInt aRow) const;
 277.269 -	IMPORT_C TBool IsHardColumnPageBreak(TInt aCol) const;
 277.270 -	IMPORT_C void SetHardRowPageBreakL(TInt aRow);
 277.271 -	IMPORT_C void ClearHardRowPageBreakL(TInt aRow);
 277.272 -	IMPORT_C void SetHardColumnPageBreakL(TInt aCol);
 277.273 -	IMPORT_C void ClearHardColumnPageBreakL(TInt aCol);
 277.274 -	IMPORT_C void ClearAllHardPageBreaksL();
 277.275 -
 277.276 -	IMPORT_C void ExternalizeL(RWriteStream &aStream) const;
 277.277 -	IMPORT_C void InternalizeL(RReadStream &aStream);
 277.278 -	IMPORT_C TStreamId StoreL(CStreamStore& aStore) const;
 277.279 -	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aStreamId);
 277.280 -////////////////////////->
 277.281 -//	Setting the grid colors
 277.282 -	IMPORT_C void SetGridColors(TGridColors aColors);
 277.283 -//	Getting the grid colors
 277.284 -	IMPORT_C const TGridColors& GridColors() const;
 277.285 -////////////////////////->
 277.286 -private:
 277.287 -	void SetIndefiniteRowBoundaries(TBool aState);
 277.288 -	inline TBool IsVisibleToRowFullyVisible() const;
 277.289 -	void SetVisibleToRowFullyVisible(TBool aState);
 277.290 -	inline TBool IsVisibleToColumnFullyVisible() const;
 277.291 -	void SetVisibleToColumnFullyVisible(TBool aState);
 277.292 -	TInt ColumnWidthInPixels(TInt aCol) const;
 277.293 -	void SetColumnWidthInPixelsL(TInt aCol,TInt aWidthInPixels);
 277.294 -	void PreCheckColumnWidthChange(TInt aCol,TBool aNonZeroWidth);
 277.295 -	void PostCheckColumnWidthChange(TInt aCol,TBool aNonZeroWidth);
 277.296 -	TInt DefaultColumnWidthInPixels() const;
 277.297 -	void SetDefaultColumnWidthInPixels(TInt aWidthInPixels);
 277.298 -	TInt RowHeightInPixels(TInt aRow) const;
 277.299 -	void SetRowHeightInPixelsL(TInt aRow,TInt aHeightInPixels);
 277.300 -	void PreCheckRowHeightChange(TInt aRow,TBool aNonZeroHeight);
 277.301 -	void PostCheckRowHeightChange(TInt aRow,TBool aNonZeroHeight);
 277.302 -	TInt DefaultRowHeightInPixels() const;
 277.303 -	void SetDefaultRowHeightInPixels(TInt aHeightInPixels);
 277.304 -	TPoint CalcOffsetBetweenCells(const TCellRef& aCell1,const TCellRef& aCell2) const;
 277.305 -	TBool LimitRow(TInt& aRow) const;
 277.306 -	TBool LimitColumn(TInt &aColumn) const;
 277.307 -	void LimitRow(TInt& aRow,TInt aLowerLimit,TInt aUpperLimit) const;
 277.308 -	void LimitColumn(TInt& aCol,TInt aLowerLimit,TInt aUpperLimit) const;
 277.309 -	TBool LimitCell(TCellRef& aCell) const;
 277.310 -	void LimitRowToVisible(TInt& aRow) const;
 277.311 -	void LimitColumnToVisible(TInt& aCol) const;
 277.312 -	void LimitCellToVisible(TCellRef& aCell) const;
 277.313 -	TBool IsCellOutOfVisibleRange(const TCellRef &aCell) const;
 277.314 -	TBool IsCellOutOfGridRange(const TCellRef& aCell) const;
 277.315 -	void StepRowForward(TInt& aRow) const;
 277.316 -	void StepRowBackward(TInt& aRow) const;
 277.317 -	void StepColumnForward(TInt& aCol) const;
 277.318 -	void StepColumnBackward(TInt& aCol) const;
 277.319 -	void CalcVisibleFromRow(TInt aVisibleToRow,TInt& aNewVisibleFromRow) const;
 277.320 -	TBool CalcVisibleToRow(TInt aVisibleFromRow,TInt& aNewVisibleToRow) const;
 277.321 -	void CalcVisibleFromColumn(TInt aVisibleToCol,TInt& aNewVisibleFromCol) const;
 277.322 -	TBool CalcVisibleToColumn(TInt aVisibleFromCol,TInt& aNewVisibleToCol) const;
 277.323 -	TInt CalcVisibleFromRowAfterPageScroll(TMoveDirectionAndAmount aPageScroll) const;
 277.324 -	TInt CalcVisibleFromColumnAfterPageScroll(TMoveDirectionAndAmount aPageScroll) const;
 277.325 -	TCellRef CalcVisibleFromCellAfterPageScroll(TMoveDirectionAndAmount aPageScroll) const;
 277.326 -	TBool FindNextRowPageBreak(TInt aSearchStart,TInt& aFoundRow) const;
 277.327 -	TBool FindNextColumnPageBreak(TInt aSearchStart,TInt& aFoundCol) const;
 277.328 -	void DoMainPaginationLoopL(TInt aPageSpan,CSparseMap* aCellSpanMap,CSparseMap* aPageMap,
 277.329 -		CArrayFix<TInt>* aHardPageBreaks,TInt aStartId);
 277.330 -	TBool RequestRow(TInt aRow,TInt& aReturnRow) const;
 277.331 -
 277.332 -	void ConstructL(const MGridTable *aGridTable,CGridImg *aGridImg,const TRangeRef& aGridRange);
 277.333 -//private:
 277.334 -private:
 277.335 -	enum 
 277.336 -		{
 277.337 -		EMaxArrayChanges=256,
 277.338 -		EInitialDefaultRowHeightInTwips = 300,
 277.339 -		EInitialDefaultColumnWidthInTwips = 900
 277.340 -		};
 277.341 -	enum
 277.342 -		{
 277.343 -		EIsTopLabels = 0x1,
 277.344 -		EIsSideLabels = 0x2,
 277.345 -		EIsHorizontalGridLines =  0x4,
 277.346 -		EIsVerticalGridLines = 0x8,
 277.347 -		EIsColumnBursting = 0x10,
 277.348 -		EIsCursorVisible = 0x20,
 277.349 -		EIsRowPermanentlySelected = 0x40,
 277.350 -		EIsHorizontalTitleLine = 0x80,
 277.351 -		EIsVerticalTitleLine = 0x100,
 277.352 -		EIsIndefiniteRowBoundaries = 0x200,
 277.353 -		EIsUniformRowHeight = 0x400,
 277.354 -		EIsUniformColumnWidth = 0x800,
 277.355 -		EIsTopLabelDragDisabled = 0x1000,
 277.356 -		EIsSideLabelDragDisabled = 0x2000,
 277.357 -		EIsPaginated = 0x4000,
 277.358 -		EIsAutoPagination = 0x8000,
 277.359 -		EIsPrintedLabels = 0x10000,
 277.360 -		EIsPrintedGridLines = 0x20000,
 277.361 -		EIsVisibleToRowFullyVisible = 0x40000,
 277.362 -		EIsVisibleToColumnFullyVisible = 0x80000,
 277.363 -		EIsEncroachingCellBorders = 0x100000,
 277.364 -		EIsColumnSelectionDisabled = 0x200000,
 277.365 -		EIsRowSelectionDisabled = 0x400000,
 277.366 -		EIsAutoClearGridCells = 0x800000,
 277.367 -		EIsGridLabelSeparators = 0x1000000,
 277.368 -		EIsHighlightVisible = 0x2000000,
 277.369 -		EIsPageBreakLinesHidden = 0x4000000
 277.370 -		};
 277.371 -private:
 277.372 -	const MGridTable* iGridTable;
 277.373 -	const MGraphicsDeviceMap* iGraphicsDeviceMap;		//*
 277.374 -	CGridImg*   iGridImg;								//*
 277.375 -// persistent
 277.376 -	TRangeRef   iGridRange;								//*
 277.377 -	TRangeRef   iVisibleRange;
 277.378 -	TRangeRef   iTitleRange;
 277.379 -	CSparseMap* iColumnWidthMap;						//*
 277.380 -	CSparseMap* iRowHeightMap;							//*
 277.381 -	CSparseMap* iColumnPageMap;							//*
 277.382 -	CSparseMap* iRowPageMap;							//*
 277.383 -	CArrayFix<TInt>* iHardRowPageBreaks;
 277.384 -	CArrayFix<TInt>* iHardColumnPageBreaks;
 277.385 -	TRgb		iGridEdgeColor;
 277.386 -	TInt        iMinRowHeightInPixels;
 277.387 -	TInt        iMinColumnWidthInPixels;
 277.388 -	TSize       iPageSizeInTwips;						//*
 277.389 -	TUint32		iFlags;									//* Starred items are used in printing
 277.390 -////////////////////////->
 277.391 -	TGridColors iColors;
 277.392 -////////////////////////->
 277.393 -// End of persistent data
 277.394 -	TBool		iHasChanged;
 277.395 -	};
 277.396 -
 277.397 -
 277.398 -
 277.399 -
 277.400 -class CGridLabelImg : public CBase
 277.401 -/** Draws a grid cell's label. 
 277.402 -
 277.403 -@publishedAll 
 277.404 -@released */
 277.405 -	{
 277.406 -	friend class CGridImg;
 277.407 -public:
 277.408 -	IMPORT_C virtual ~CGridLabelImg();
 277.409 -	IMPORT_C void ConstructL();
 277.410 -	inline void SetGraphicsDeviceMap(MGraphicsDeviceMap* aGraphicsDeviceMap);
 277.411 -	inline TFontSpec FontSpec() const;
 277.412 -	IMPORT_C void ReleaseFont();
 277.413 -	IMPORT_C void NotifyGraphicsDeviceMapChangeL();
 277.414 -	inline void SetGridColors(const TGridColors& aGridColors);
 277.415 -protected:
 277.416 -	IMPORT_C CGridLabelImg(const TFontSpec& aFontSpec,MGraphicsDeviceMap* aGraphicsDeviceMap);
 277.417 -////////////////////////->
 277.418 -	IMPORT_C void DrawTopLeftLabelL(CGraphicsContext* aGc,const TRect& aRect, TRgb aColor) const;
 277.419 -////////////////////////->
 277.420 -private:
 277.421 -	/** Draws a row label.
 277.422 -	
 277.423 -	@publishedAll 
 277.424 -	@released
 277.425 -	@param aGc The graphics context to be used.
 277.426 -	@param aRow The row for which the label is to be drawn.
 277.427 -	@param aRect The rectangle in which the label is to be drawn. */
 277.428 -	virtual void DrawRowLabelL(CGraphicsContext* aGc,TInt aRow,const TRect& aRect) const=0;
 277.429 -	/** Draws a column label.
 277.430 -	
 277.431 -	@publishedAll 
 277.432 -	@released
 277.433 -	@param aGc The graphics context to be used.
 277.434 -	@param aCol The column for which the label is to be drawn.
 277.435 -	@param aRect The rectangle in which the label is to be drawn. */
 277.436 -	virtual void DrawColLabelL(CGraphicsContext* aGc,TInt aCol,const TRect& aRect) const=0;
 277.437 -	IMPORT_C virtual void DrawTopLeftLabelL(CGraphicsContext* aGc,const TRect& aRect) const;
 277.438 -	IMPORT_C virtual TInt SideLabelWidthInPixels(TInt aStartRow,TInt aEndRow) const;
 277.439 -	IMPORT_C virtual TInt TopLabelHeightInPixels() const;
 277.440 -	IMPORT_C virtual void DrawRowCursorL(CGraphicsContext* aGc,const TRect& aRect) const;
 277.441 -protected:
 277.442 -	enum
 277.443 -		{
 277.444 -		/** The default width of side labels, in twips.
 277.445 -
 277.446 -		This is used by the default implementation of SideLabelWidthInPixels(). */
 277.447 -		EDefaultSideLabelWidthInTwips=300,
 277.448 -		/** The default height of top labels, in twips.
 277.449 -		
 277.450 -		This is used by the default implementation of TopLabelHeightInPixels(). */
 277.451 -		EDefaultTopLabelHeightInTwips=300
 277.452 -		};
 277.453 -protected:
 277.454 -	/** The nearest font to that specified in the font specification. */
 277.455 -	CFont* iFont;
 277.456 -	/** The font specification in device independent terms. */
 277.457 -	TFontSpec iFontSpec;
 277.458 -	/** The graphics device map, an interface for mapping between twips and device-specific 
 277.459 -	units. */
 277.460 -	MGraphicsDeviceMap* iGraphicsDeviceMap;
 277.461 -	/** The grid colour specification. */
 277.462 -	TGridColors iGridColors;
 277.463 -private:
 277.464 -	TInt iSpare;
 277.465 -	};
 277.466 -
 277.467 -
 277.468 -class CGridCellImg : public CBase
 277.469 -/** Draws a grid cell's contents. 
 277.470 -
 277.471 -@publishedAll 
 277.472 -@released */
 277.473 -	{
 277.474 -	friend class CGridImg;
 277.475 -public:
 277.476 -	IMPORT_C virtual ~CGridCellImg();
 277.477 -	inline TInt BurstColOffset() const;
 277.478 -	inline TInt BurstLeft() const;
 277.479 -	inline TInt BurstRight() const;
 277.480 -	inline TBool IsHorizontalGridLines() const;
 277.481 -	inline TBool IsVerticalGridLines() const;
 277.482 -	inline void SetGridColors(const TGridColors& aGridColors);
 277.483 -protected:
 277.484 -	IMPORT_C CGridCellImg();
 277.485 -private:
 277.486 -	/** Draws the contents of the specified cell.
 277.487 -	
 277.488 -	@publishedAll 
 277.489 -	@released 
 277.490 -	@param aGc The graphics context to be used.
 277.491 -	@param aCell The cell whose contents are to be drawn.
 277.492 -	@param aDrawRect The rectangle in which the cell is to be drawn. 
 277.493 -	@param aClipRect The rectangle to which drawing is clipped. */
 277.494 -	virtual void DrawL(CGraphicsContext* aGc,const TCellRef& aCell,const TRect& aDrawRect,
 277.495 -		const TRect& aClipRect) const=0;
 277.496 -	IMPORT_C virtual TInt DataWidthInPixelsL(const TCellRef& aCell) const;
 277.497 -	IMPORT_C virtual TBool DoesCellContainDataL(const TCellRef& aCell) const;
 277.498 -// reserved virtual function
 277.499 -	IMPORT_C virtual void Reserved_1();
 277.500 -private:
 277.501 -	void SetBurstingData(TInt aBurstColOffset=0,TInt aBurstLeft=0,TInt aBurstRight=0);
 277.502 -private:
 277.503 -	enum { EIsHorizontalGridLines = 0x1, EIsVerticalGridLines = 0x2 };
 277.504 -protected:
 277.505 -	/** The grid colour specification. */
 277.506 -	TGridColors iGridColors;
 277.507 -private:
 277.508 -	TInt iBurstColOffset;
 277.509 -	TInt iBurstLeft;
 277.510 -	TInt iBurstRight;
 277.511 -	TUint32 iGridLineFlags;
 277.512 -	};
 277.513 -
 277.514 -
 277.515 -class MGridCursorMoveCallBack
 277.516 -/** An interface to a callback function that is intended to be called whenever 
 277.517 -there is a change to the cursor position.
 277.518 -
 277.519 -If such a callback is needed, a concrete implementation is defined, instantiated 
 277.520 -and passed to CGridImg::SetCursorMoveCallBack(). 
 277.521 -
 277.522 -@publishedAll
 277.523 -@released */
 277.524 -	{
 277.525 -public:
 277.526 -	/** Deals with the change to the cursor position.
 277.527 -	
 277.528 -	This function is called immediately before exiting the following functions: 
 277.529 -	CGridImg::SetCursorPosL(), CGridImg::SetAnchorPosL(), CGridImg::MoveCursorL(),CGridImg::ResetSelectedL(), 
 277.530 -	CGridImg::AddRangeToSelectedL(), CGridImg::AddRegionToSelectedL(), CGridImg::AddRowToSelectedL(), 
 277.531 -	CGridImg::AddColToSelectedL().
 277.532 -	
 277.533 -	The function is commonly used to do any necessary redrawing. */
 277.534 -	virtual void HandleCursorMoveL()=0;
 277.535 -	};
 277.536 -
 277.537 -class RWindow;
 277.538 -class CWindowGc;
 277.539 -
 277.540 -
 277.541 -class CGridImg : public CBase
 277.542 -/** Draws the contents of the grid. 
 277.543 -
 277.544 -@publishedAll 
 277.545 -@released 
 277.546 -*/
 277.547 -	{
 277.548 -	friend class CGridLay;
 277.549 -public:
 277.550 -	enum
 277.551 -		{
 277.552 -		/** Indicates that the selection state is to be maintained.
 277.553 -
 277.554 -		If a region of cells is selected, then this selection is to be kept.
 277.555 -		
 277.556 -		Typically, this is set by a control when a drag operation is in 
 277.557 -		progress and the shift modifier key is also pressed. */
 277.558 -		EIsWithSelect=0x0001,
 277.559 -		/** Indicates that the control modifier key has been pressed. */
 277.560 -		EIsWithControl=0x0002,
 277.561 -		/** Indicates that a drag operation is in progress.	*/
 277.562 -		EIsWithDrag=0x0004,
 277.563 -		/** Indicates that the cursor is the edge of the grid. */
 277.564 -		EIsAtBoundary=0x0008,
 277.565 -		/** Indicates that a new cell is being selected, without dragging. */
 277.566 -		EIsAbsoluteMove=0x0010,
 277.567 -		/** Indicates that a whole row is selected. */
 277.568 -		EIsRowSelected=0x0020,
 277.569 -		/** Indicates that a whole column is selected.
 277.570 -
 277.571 -		This also means that the label cell for the column is included in the selection. */
 277.572 -		EIsColumnSelected=0x0040
 277.573 -		};
 277.574 -	enum 
 277.575 -		{
 277.576 -		/** Defines a scale value of 100. 
 277.577 -		
 277.578 -		Scale factor values are divided into this value to calculate
 277.579 -		drawing points, rectangles etc. */
 277.580 -		EScaleOneToOne=100
 277.581 -		};
 277.582 -
 277.583 -	enum TSelectType
 277.584 -		{
 277.585 -		/** Indicates that an existing selected region is to be reset (i.e. emptied) before 
 277.586 -		adding a new region. */
 277.587 -		ESelectOverwrite, 
 277.588 -		/** Indicates that a new region is to be appended to any existing selected region. */
 277.589 -		ESelectAppend 
 277.590 -		};
 277.591 -public:
 277.592 -	IMPORT_C virtual ~CGridImg();
 277.593 -	IMPORT_C static CGridImg* NewL(CGraphicsDevice* aGraphicsDevice,CGridCellImg* aGridCellImg,CGridLay* aGridLay);
 277.594 -	IMPORT_C static CGridImg* NewL(CGridCellImg* aGridCellImg,CGridLay* aGridLay); //Creates Partial GridImg
 277.595 -	inline void SetGridLay(CGridLay* aGridLay);
 277.596 -	inline void SetWindow(RWindow* aWin);
 277.597 -////////////////////////->
 277.598 -	IMPORT_C void SetGridLabelImg(CGridLabelImg* aGridLabelImg);
 277.599 -////////////////////////->
 277.600 -	inline void SetCursorMoveCallBack(MGridCursorMoveCallBack* aCursorMoveCallBack);
 277.601 -	inline const CGridCellRegion* Selected() const;
 277.602 -	inline const CGridLabelImg* GridLabelImg() const;
 277.603 -
 277.604 -	IMPORT_C void ScrollL(const TPoint &aOffset);
 277.605 -	IMPORT_C void MoveCursorL(TMoveDirectionAndAmount aCursorMove,TUint aSelectState);
 277.606 -   	IMPORT_C void SetCursorWithPointerL(const TPoint& aPoint,TUint aFlagList);
 277.607 -	IMPORT_C void ResetSelectedL();
 277.608 -	IMPORT_C void AddRangeToSelectedL(const TRangeRef& aRange,TSelectType aType=ESelectOverwrite);
 277.609 -	IMPORT_C void AddRegionToSelectedL(const CArrayFix<TRangeRef>* aCellRegion,TSelectType aType=ESelectOverwrite);
 277.610 -	IMPORT_C void AddRowToSelectedL(TInt aRow,TSelectType aType=ESelectOverwrite);
 277.611 -	IMPORT_C void AddColToSelectedL(TInt aCol,TSelectType aType=ESelectOverwrite);
 277.612 -	IMPORT_C void DrawL(CGraphicsContext* aGc) const;
 277.613 -	IMPORT_C void DrawL(CGraphicsContext* aGc,const TRect& aRect) const;
 277.614 -	IMPORT_C void DrawCellL(const TCellRef& aCell) const;
 277.615 -	IMPORT_C void DrawRangeL(const TRangeRef& aRange) const;
 277.616 -	IMPORT_C void DrawSelectedL() const;
 277.617 -	IMPORT_C void DrawTitleLines() const;
 277.618 -	IMPORT_C void ClearTitleLineRegionL(const TPoint& aCrossPoint) const;
 277.619 -	IMPORT_C void PrintGridLinesAndCellsInRangeL(CGraphicsContext* aPrinterGc,const TRangeRef& aRange,
 277.620 -		TInt aScaleFactor) const;
 277.621 -
 277.622 -	inline TCellRef CursorPos() const;
 277.623 -	IMPORT_C void SetCursorPosL(const TCellRef& aCursorPos);
 277.624 -	inline TCellRef NewCursorPos() const;
 277.625 -	inline TCellRef AnchorPos() const;
 277.626 -	IMPORT_C void SetAnchorPosL(const TCellRef& aAnchorPos);
 277.627 -	inline TRect GridRect() const;
 277.628 -	IMPORT_C void SetGridRect(const TRect& aNewRect);
 277.629 -	IMPORT_C void SetPrintGridRect(const TRect& aPrintRect);
 277.630 -	inline TPoint TitlePoint() const;
 277.631 -	inline TPoint MainPoint() const;
 277.632 -	inline TRect MainRect() const;
 277.633 -	IMPORT_C void ResetReferencePoints();
 277.634 -	IMPORT_C void NotifyGridRangeResize();
 277.635 -
 277.636 -	IMPORT_C void CheckSideLabelWidthAndScrollL();
 277.637 -	IMPORT_C TInt CheckSideLabelWidth();
 277.638 -	IMPORT_C TInt SideLabelWidthInPixels() const;
 277.639 -	IMPORT_C TInt MaxSideLabelWidthInPixels() const;
 277.640 -	IMPORT_C TInt TopLabelHeightInPixels() const;
 277.641 -	IMPORT_C void FinishLabelDragL();
 277.642 -	IMPORT_C TBool StartLabelDrag(const TPoint &aPoint);
 277.643 -	IMPORT_C TBool UpdateLabelDrag(const TPoint &aPoint);
 277.644 -	IMPORT_C TBool StartLabelResize(TBool aIsColumnLabel, TInt aIndex);
 277.645 -	IMPORT_C TBool UpdateLabelResize(TInt aDelta);
 277.646 -	IMPORT_C void FinishLabelResizeL(TBool aResize);
 277.647 -private:
 277.648 -	enum TDragDim {EXDrag,EYDrag,ENoDrag};
 277.649 -	enum TRefPoint {ETitleRef,EMainRef};
 277.650 -	enum TDragDraw {EDragDrawWithBitmap,EDragDrawWithoutBitmap};
 277.651 -	enum TArrows {EBothArrows,ESecondArrowOnly};
 277.652 -	enum
 277.653 -		{
 277.654 -		EIsLabelDraggingIgnored = 0x1,
 277.655 -		EIsSidewaysScrollIgnored = 0x2
 277.656 -		};
 277.657 -private:
 277.658 -	void DrawResizingDragHiglights(const TRect& aRect);
 277.659 -	void DrawAllGridLabelsL() const;
 277.660 -	void DrawTopLeftGridLabelL() const;
 277.661 -	void DrawTopGridLabelsL(TInt aStartCol,TInt aEndCol,TRefPoint aXRef=EMainRef) const;
 277.662 -	void DrawSideGridLabelsL(TInt aStartRow,TInt aEndRow,TRefPoint aYRef=EMainRef) const;
 277.663 -	void DrawSideGridLabelIfOnScreenL(TInt aRow) const;
 277.664 -	void DrawAllGridLinesAndCellsL() const;
 277.665 -	void DrawGridLinesAndCellsInRangeL(const TRangeRef& aRange,const TRect& aClipRect,
 277.666 -		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 277.667 -	void DrawCellsToGcL(CGraphicsContext* aGc,const TRangeRef& aRange,const TRect& aClipRect,
 277.668 -		const TPoint& aStartPoint,TInt aScaleFactor=EScaleOneToOne) const;
 277.669 -	void DrawBurstingCellL(CGraphicsContext* aGc,const TCellRef& aCell,const TRect& aRect,const TRect& aClipRect,
 277.670 -		TInt aScaleFactor,TInt aBurstLeft,const TCellRef& aBurstCell) const;
 277.671 -	TInt CalcBurstLeftL(TCellRef& aBurstCell,TInt aScaleFactor) const;
 277.672 -	TInt CalcBurstRightL(const TCellRef& aCell,TInt aExcessRight,TInt aScaleFactor) const;
 277.673 -	void DrawVerticalTitleLine() const;
 277.674 -	void DrawHorizontalTitleLine() const;
 277.675 -	void BeginRedrawAndDrawL() const;
 277.676 -	void BeginRedrawAndDrawL(const TRect& aRect) const;
 277.677 -
 277.678 -	void AppendTotalHighlightRegionL(TRegion& aRegion) const;
 277.679 -	void AppendPartialHighlightRegionL(TRegion& aRegion,const TRect& aClipRect,
 277.680 -		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 277.681 -	void RemoveRowLabelFromRegionL(TInt aRow,TRegion& aRegion) const;
 277.682 -	void HighlightMinRegionL(const TRegion &aOldRegion,const TRegion &aNewRegion);
 277.683 -	void HighlightRegion(const TRegion &aRegion) const;
 277.684 -	void HighlightNewRegionFromOldL(const TRegion& aOldRegion);
 277.685 -	void DrawCursorOrRegionL(TUint aMoveFlags);
 277.686 -	void UpdateSelectedRegion(TInt aSelectCount,TUint aMoveFlags);
 277.687 -	void AddLabelToRegionL(TUint aMoveFlags);
 277.688 -	void StartSelectedRegionL(TUint aMoveFlags);
 277.689 -	TBool ScanColumnsForDrag(TInt aFromColumn,TInt aToColumn,TInt aPointerPos,TInt& aPrevious,TInt& aCurrent);
 277.690 -	TBool ScanRowsForDrag(TInt aFromRow,TInt aToRow,TInt aPointerPos,TInt& aPrevious,TInt& aCurrent);
 277.691 -	void DrawDraggingHighlight(const TRect aLine,TDragDraw aDragDraw);
 277.692 -	void DrawArrowsToInMemoryBitmap(TArrows aArrows);
 277.693 -	TPoint RelativeCellToPoint(const TCellRef& aCell,TRefPoint aXRef=EMainRef,
 277.694 -		TRefPoint aYRef=EMainRef) const;
 277.695 -	TCellRef RelativePointToCell(const TPoint& aPoint,TRefPoint aXRef=EMainRef,
 277.696 -		TRefPoint aYRef=EMainRef) const;
 277.697 -	TRect PartialCellRectL(const TCellRef& aCell,const TRect& aClipRect,
 277.698 -		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 277.699 -	TRect PartialRangeRect(const TRangeRef& aRange,const TRect& aClipRect,
 277.700 -		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 277.701 -	void CreateGc(CGraphicsContext* aGc);
 277.702 -	void DeleteGc();
 277.703 -	static void CleanupGc(TAny* aObject);
 277.704 -	void ResetGcToDefault(CGraphicsContext* aGc) const;
 277.705 -	void ScaleDown(TPoint& aPoint,TInt aScaleFactor) const;
 277.706 -	void ConstructSelectedL(const TRangeRef& aGridRange);
 277.707 -
 277.708 -	CGridImg(CGraphicsDevice* aGraphicsDevice,CGridCellImg* aGridCellImg,CGridLay* aGridLay);
 277.709 -	CGridImg(CGridCellImg* aGridCellImg,CGridLay* aGridLay);
 277.710 -	void ConstructL();
 277.711 -
 277.712 -////////////////////////->
 277.713 -	void SetGridColors(const TGridColors& aGridColors);
 277.714 -////////////////////////->
 277.715 -private:
 277.716 -	TRect		iGridRect;
 277.717 -	TPoint		iTitlePoint;
 277.718 -	TPoint		iMainPoint;
 277.719 -	TCellRef	iCursorPos;							// Persisted
 277.720 -	TCellRef 	iNewCursorPos;
 277.721 -	TCellRef	iAnchorPos;
 277.722 -
 277.723 -	CGraphicsDevice*	iGraphicsDevice;
 277.724 -	CGraphicsContext*	iGcPtr;
 277.725 -	CWindowGc*			iGc;
 277.726 -	RWindow*			iWin;
 277.727 -	CGridCellImg*		iGridCellImg;				//*
 277.728 -	CGridLabelImg*		iGridLabelImg;              //*
 277.729 -	CGridLay*			iGridLay;					//* Starred items are used in printing
 277.730 -	CGridCellRegion*		iSelected;
 277.731 -	MGridCursorMoveCallBack*	iCursorMoveCallBack;
 277.732 -	TBool		iDrawResizeLines;
 277.733 -	TInt 		iDragLabel;
 277.734 -	TInt		iCurrentDragPos;
 277.735 -	TInt		iDragDiff;
 277.736 -	TInt		iDragFlags;
 277.737 -	TDragDim	iDragDim;
 277.738 -	CFbsBitmap*	iDragBmp;
 277.739 -	TRefPoint 	iXRefPoint;
 277.740 -	TRefPoint	iYRefPoint;
 277.741 -	};
 277.742 -
 277.743 -
 277.744 -class TGridUtils
 277.745 -/** A collection of Grid utilities. 
 277.746 -
 277.747 -@publishedAll 
 277.748 -@released */
 277.749 -	{
 277.750 -public:
 277.751 -	IMPORT_C static void FillRect(CGraphicsContext* aGc,TRgb aColor,const TRect &aRect);
 277.752 -	};
 277.753 -
 277.754 -
 277.755 -#include <grdstd.inl>
 277.756 -#endif
   278.1 --- a/epoc32/include/grdstd.inl	Tue Mar 16 16:12:26 2010 +0000
   278.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   278.3 @@ -1,421 +0,0 @@
   278.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   278.5 -// All rights reserved.
   278.6 -// This component and the accompanying materials are made available
   278.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   278.8 -// which accompanies this distribution, and is available
   278.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  278.10 -//
  278.11 -// Initial Contributors:
  278.12 -// Nokia Corporation - initial contribution.
  278.13 -//
  278.14 -// Contributors:
  278.15 -//
  278.16 -// Description:
  278.17 -// CGridLay
  278.18 -// 
  278.19 -//
  278.20 -
  278.21 -inline void CGridLay::SetGridTable(const MGridTable* aGridTable)
  278.22 -/** Sets the specified grid table object.
  278.23 -
  278.24 -@param aGridTable The grid table object. */
  278.25 -	{ iGridTable = aGridTable; }
  278.26 -
  278.27 -inline TRangeRef CGridLay::VisibleRange() const
  278.28 -/** Gets the range of cells that are currently visible.
  278.29 -
  278.30 -@return The visible cell range. Note that the TRangeRef::iFrom member is the 
  278.31 -cell that is visible at the top of the window, and the TRangeRef::iTo member 
  278.32 -is the cell that is partially visible at the bottom right of the window. */
  278.33 -	{ return iVisibleRange; }
  278.34 -
  278.35 -inline TRangeRef CGridLay::TitleRange() const
  278.36 -/** Gets the range of cells that form the grid titles.
  278.37 -
  278.38 -@return The range of cells that form the grid titles. */
  278.39 -	{ return iTitleRange; }
  278.40 -
  278.41 -inline TRangeRef CGridLay::GridRange() const
  278.42 -/** Gets the range of cells that defines the grid boundary.
  278.43 -
  278.44 -@return The range of cells that defines the grid boundary. */
  278.45 -	{ return iGridRange; }
  278.46 -
  278.47 -inline TBool CGridLay::IsSideLabels() const
  278.48 -/** Tests whether side grid labels are printed.
  278.49 -
  278.50 -@return True, if the side labels are printed; false, otherwise. */
  278.51 -	{ return (iFlags&EIsSideLabels); }
  278.52 -
  278.53 -inline TBool CGridLay::IsTopLabels() const
  278.54 -/** Tests whether top labels are printed.
  278.55 -
  278.56 -@return True, if the top labels are printed; false, otherwise. */
  278.57 -	{ return (iFlags&EIsTopLabels); }
  278.58 -
  278.59 -inline TBool CGridLay::IsVerticalGridLines() const
  278.60 -/** Tests whether vertical grid lines are to be drawn.
  278.61 -
  278.62 -@return True, if vertical grid lines are to be drawn; false, otherwise. */
  278.63 -	{ return (iFlags&EIsVerticalGridLines); }
  278.64 -
  278.65 -inline TBool CGridLay::IsHorizontalGridLines() const
  278.66 -/** Tests whether horizontal grid lines are to be drawn.
  278.67 -
  278.68 -@return True, if horizontal grid lines are to be drawn; false, otherwise. */
  278.69 -	{ return (iFlags&EIsHorizontalGridLines); }
  278.70 -
  278.71 -inline TBool CGridLay::IsGridLabelSeparators() const
  278.72 -/** Tests whether label separators are to be drawn.
  278.73 -
  278.74 -@return True, if label separators are to be drawn; false, otherwise. */
  278.75 -	{ return (iFlags&EIsGridLabelSeparators); }
  278.76 -
  278.77 -inline TBool CGridLay::IsColumnBursting() const
  278.78 -/** Tests whether column bursting is permitted.
  278.79 -
  278.80 -Column bursting occurs when the contents of a cell are too wide; adjacent 
  278.81 -cells are then overwritten, provided they are empty.
  278.82 -
  278.83 -@return True, if column bursting is permitted; false, otherwise. */
  278.84 -	{ return (iFlags&EIsColumnBursting); }
  278.85 -
  278.86 -inline TBool CGridLay::IsCursorVisible() const
  278.87 -/** Tests whether the cursor is visible.
  278.88 -
  278.89 -@return True, if the cursor is visible; false, otherwise. */
  278.90 -	{ return (iFlags&EIsCursorVisible); }
  278.91 -
  278.92 -inline TBool CGridLay::IsHighlightVisible() const
  278.93 -/** Tests whether selected cells are highlighted.
  278.94 -
  278.95 -@return True, if selected cells are highlighted; false, otherwise. */
  278.96 -	{ return (iFlags&EIsHighlightVisible); }
  278.97 -
  278.98 -inline TBool CGridLay::IsRowPermanentlySelected() const
  278.99 -/** Tests whether rows are permanently selected.
 278.100 -
 278.101 -@return True, if rows are permanently selected; false, otherwise. */
 278.102 -	{ return (iFlags&EIsRowPermanentlySelected); }
 278.103 -
 278.104 -inline TBool CGridLay::IsTitleLines() const
 278.105 -/** Tests whether the grid has both horizontal and vertical title lines.
 278.106 -
 278.107 -@return True, if the grid has both a horizontal and vertical title line; false, 
 278.108 -otherwise. */
 278.109 -	{ return (iFlags&(EIsHorizontalTitleLine|EIsVerticalTitleLine)); }
 278.110 -
 278.111 -inline TBool CGridLay::IsHorizontalTitleLine() const
 278.112 -/** Tests whether the grid has a horizontal title line.
 278.113 -
 278.114 -@return True, if the grid is to have a horizontal title line; false otherwise. */
 278.115 -	{ return (iFlags&EIsHorizontalTitleLine); }
 278.116 -
 278.117 -inline TBool CGridLay::IsVerticalTitleLine() const
 278.118 -/** Tests whether the grid has a vertical title line.
 278.119 -
 278.120 -@return True, if the grid is to have a vertical title line; false otherwise. */
 278.121 -	{ return (iFlags&EIsVerticalTitleLine); }
 278.122 -
 278.123 -inline TBool CGridLay::IsIndefiniteRowBoundaries() const
 278.124 -/** Tests whether the grid has indefinite row boundaries.
 278.125 -
 278.126 -@return True, if the grid has indefinite row boundaries; false, otherwise. */
 278.127 -	{ return (iFlags&EIsIndefiniteRowBoundaries); }
 278.128 -
 278.129 -inline TBool CGridLay::IsUniformRowHeight() const
 278.130 -/** Tests whether all the rows have the same height.
 278.131 -
 278.132 -@return True, if all rows have the same height; false, otherwise. */
 278.133 -	{ return (iFlags&EIsUniformRowHeight); }
 278.134 -
 278.135 -inline TBool CGridLay::IsUniformColumnWidth() const
 278.136 -/** Tests whether all columns have the same width.
 278.137 -
 278.138 -@return True, if all columns have the same width; false, otherwise. */
 278.139 -	{ return (iFlags&EIsUniformColumnWidth); }
 278.140 -
 278.141 -inline TBool CGridLay::IsTopLabelDragDisabled() const
 278.142 -/** Tests whether a drag operation on the boundary between two columns is permitted.
 278.143 -
 278.144 -@return True, if a drag operation on a column boundary is permitted; false otherwise. */
 278.145 -	{ return (iFlags&EIsTopLabelDragDisabled); }
 278.146 -
 278.147 -inline TBool CGridLay::IsSideLabelDragDisabled() const
 278.148 -/** Tests whether a drag operation on the boundary between two rows is permitted.
 278.149 -
 278.150 -@return True, if a drag operation on a row boundary is permitted; false otherwise. */
 278.151 -	{ return (iFlags&EIsSideLabelDragDisabled); }
 278.152 -
 278.153 -inline TBool CGridLay::IsPrintedLabels() const
 278.154 -/** Tests whether labels are printed.
 278.155 -
 278.156 -@return True, if labels are printed; false, otherwise. */
 278.157 -	{ return (iFlags&EIsPrintedLabels); }
 278.158 -
 278.159 -inline TBool CGridLay::IsPrintedGridLines() const
 278.160 -/** Tests whether grid lines are printed.
 278.161 -
 278.162 -@return True, if grid lines are printed; false, otherwise. */
 278.163 -	{ return (iFlags&EIsPrintedGridLines); }
 278.164 -
 278.165 -inline TBool CGridLay::IsVisibleToRowFullyVisible() const
 278.166 -	{ return (iFlags&EIsVisibleToRowFullyVisible); }
 278.167 -
 278.168 -inline TBool CGridLay::IsVisibleToColumnFullyVisible() const
 278.169 -	{ return (iFlags&EIsVisibleToColumnFullyVisible); }
 278.170 -
 278.171 -inline TBool CGridLay::IsEncroachingCellBorders() const
 278.172 -/** Tests whether encroaching cell borders are permitted.
 278.173 -
 278.174 -Encroaching cell borders are where cell borders wider than one pixel are drawn 
 278.175 -inside the cell, as opposed to outside.
 278.176 -
 278.177 -@return True, if encroaching cells borders are permitted; false, otherwise. */
 278.178 -	{ return (iFlags&EIsEncroachingCellBorders); }
 278.179 -
 278.180 -inline TBool CGridLay::IsRowSelectionDisabled() const
 278.181 -/** Tests whether row selection is disabled.
 278.182 -
 278.183 -@return True, if row selection is disabled; false, otherwise. */
 278.184 -	{ return (iFlags&EIsRowSelectionDisabled); }
 278.185 -
 278.186 -inline TBool CGridLay::IsColumnSelectionDisabled() const
 278.187 -/** Tests whether column selection is disabled.
 278.188 -
 278.189 -@return True, if column selection is disabled; false, otherwise. */
 278.190 -	{ return (iFlags&EIsColumnSelectionDisabled); }
 278.191 -
 278.192 -inline TBool CGridLay::IsAutoClearGridCells() const
 278.193 -/** Tests whether automatic clearing of grid cells is done.
 278.194 -
 278.195 -Automatic clearing of grid cells is where all cells are cleared on redraw, 
 278.196 -in case drawing the contents doesn't guarantee to write to every pixel (the 
 278.197 -usual way of doing flicker-free redraws).
 278.198 -
 278.199 -@return True, if automatic clearing of grid cells is done; false, otherwise. */
 278.200 -	{ return (iFlags&EIsAutoClearGridCells); }
 278.201 -
 278.202 -inline TBool CGridLay::IsPageBreakLinesHidden() const
 278.203 -/** Tests whether lines marking page breaks are hidden.
 278.204 -
 278.205 -@return True, if lines marking page breaks are hidden; false, otherwise. */
 278.206 -	{ return (iFlags&EIsPageBreakLinesHidden); }
 278.207 -
 278.208 -inline TBool CGridLay::HasChanged() const
 278.209 -/** Tests whether any change has occurred to the grid layout.
 278.210 -
 278.211 -Such changes include alterations to the height of a row or the 
 278.212 -width of a column, additions or deletions of rows or columns, 
 278.213 -and changes to the visibility of grid lines.
 278.214 -Note that this list is not exhaustive.
 278.215 -
 278.216 -@return True, if the grid layout has changed; false, otherwise. */
 278.217 -	{ return iHasChanged; }
 278.218 -
 278.219 -inline void CGridLay::SetHasChanged(TBool aHasChanged)
 278.220 -/** Sets whether any change has occurred to the grid layout.
 278.221 -
 278.222 -@param aHasChanged ETrue, if any change has occurred to the grid layout; EFalse, 
 278.223 -otherwise. */
 278.224 -	{ iHasChanged=aHasChanged; }
 278.225 -
 278.226 -inline void CGridLay::SetGridEdgeColor(TRgb aColor)
 278.227 -/** Defines the colour that the edges of the grid beyond the grid range are to 
 278.228 -have.
 278.229 -
 278.230 -If not changed by this function, the default colour is white.
 278.231 -
 278.232 -@param aColor The colour value. */
 278.233 -	{ iGridEdgeColor=aColor; }
 278.234 -
 278.235 -inline TBool CGridLay::IsPaginated() const
 278.236 -/** Tests whether the grid has been paginated.
 278.237 -
 278.238 -@return True, if the grid has been paginated; false, otherwise. */
 278.239 -	{ return (iFlags&EIsPaginated); }
 278.240 -
 278.241 -inline void CGridLay::SetPrintRange(const TRangeRef& aPrintRange) 
 278.242 -/** Sets the range of cells that are visible for printing.
 278.243 -
 278.244 -@param aPrintRange The cell range. */
 278.245 -	{ iVisibleRange=aPrintRange; }
 278.246 -
 278.247 -inline TSize CGridLay::PageSizeInTwips() const
 278.248 -/** Gets the size of a page.
 278.249 -
 278.250 -@return The size of a page, in twips. */
 278.251 -	{ return iPageSizeInTwips; }
 278.252 -
 278.253 -inline TBool CGridLay::IsAutoPagination() const
 278.254 -/** Tests whether automatic pagination is in effect.
 278.255 -
 278.256 -@return True, if automatic pagination is in effect, false, otherwise. */
 278.257 -	{ return (iFlags&EIsAutoPagination); }
 278.258 -
 278.259 -// CGridLabelImg
 278.260 -
 278.261 -inline void CGridLabelImg::SetGraphicsDeviceMap(MGraphicsDeviceMap* aGraphicsDeviceMap)
 278.262 -/** Supplies a new interface object for mapping between twips and device-specific 
 278.263 -units.
 278.264 -
 278.265 -Note that the caller must call ReleaseFont() before calling this function, 
 278.266 -and must call NotifyGraphicsDeviceMapChangeL() afterwards.
 278.267 -
 278.268 -@param aGraphicsDeviceMap A new interface object for mapping between twips 
 278.269 -and device-specific units. */
 278.270 -	{
 278.271 -	iGraphicsDeviceMap=aGraphicsDeviceMap;
 278.272 -	}
 278.273 -
 278.274 -inline TFontSpec CGridLabelImg::FontSpec() const
 278.275 -/** Gets the font specification.
 278.276 -
 278.277 -@return The font specification. */
 278.278 -	{
 278.279 -	return iFontSpec;
 278.280 -	}
 278.281 -
 278.282 -inline void CGridLabelImg::SetGridColors(const TGridColors& aGridColors)
 278.283 -/** Sets the colours to be used when drawing the label.
 278.284 -
 278.285 -@param aGridColors The object containing the grid colours specification. */
 278.286 -	{
 278.287 -	iGridColors = aGridColors;
 278.288 -	}
 278.289 -
 278.290 -// CGridCellImg
 278.291 -
 278.292 -inline TInt CGridCellImg::BurstColOffset() const
 278.293 -/** Gets the bursting column offset.
 278.294 -
 278.295 -@return The burst column offset */
 278.296 -	{ return iBurstColOffset; }
 278.297 -
 278.298 -inline TInt CGridCellImg::BurstLeft() const
 278.299 -/** Gets the left hand bursting value.
 278.300 -
 278.301 -@return The burst value. */
 278.302 -	{ return iBurstLeft; }
 278.303 -
 278.304 -inline TInt CGridCellImg::BurstRight() const
 278.305 -/** Gets the right hand bursting value.
 278.306 -
 278.307 -@return The burst value */
 278.308 -	{ return iBurstRight; }
 278.309 -
 278.310 -inline TBool CGridCellImg::IsHorizontalGridLines() const
 278.311 -/** Tests whether horizontal grid lines are drawn.
 278.312 -
 278.313 -This function is set by the CGridImg object and allows classes derived from 
 278.314 -CGridCellImg to modify or restrict the area into which they draw.
 278.315 -
 278.316 -@return True, if horizontal grid lines are drawn; false, otherwise. */
 278.317 -	{ return iGridLineFlags&EIsHorizontalGridLines; }
 278.318 -
 278.319 -inline TBool CGridCellImg::IsVerticalGridLines() const
 278.320 -/** Tests whether vertical grid lines are drawn.
 278.321 -
 278.322 -This function is set by the CGridImg object and allows classes derived from 
 278.323 -CGridCellImg to modify or restrict the area into which they draw.
 278.324 -
 278.325 -@return True, if vertical grid lines are drawn; false, otherwise. */
 278.326 -	{ return iGridLineFlags&EIsVerticalGridLines; }
 278.327 -
 278.328 -inline void CGridCellImg::SetGridColors(const TGridColors& aGridColors)
 278.329 -/** Sets the colours to be used when drawing.
 278.330 -
 278.331 -@param aGridColors The object containing the grid colours specification. */
 278.332 -	{
 278.333 -	iGridColors = aGridColors;
 278.334 -	}
 278.335 -
 278.336 -// CGridImg
 278.337 -
 278.338 -inline void CGridImg::SetGridLay(CGridLay* aGridLay)
 278.339 -/** Sets the specified grid layout object.
 278.340 -
 278.341 -@param aGridLay A pointer to the object that controls the layout of rows and 
 278.342 -columns. */
 278.343 -	{ iGridLay = aGridLay; }
 278.344 -
 278.345 -inline void CGridImg::SetWindow(RWindow *aWin)
 278.346 -/** Sets the specified window.
 278.347 -
 278.348 -@param aWin A pointer to the currently active window. */
 278.349 -	{ iWin = aWin; }
 278.350 -
 278.351 -////////////////////////->
 278.352 -//inline void CGridImg::SetGridLabelImg(CGridLabelImg *aGridLabelImg)
 278.353 -//	{ iGridLabelImg =  aGridLabelImg; }
 278.354 -////////////////////////->
 278.355 -
 278.356 -inline void CGridImg::SetCursorMoveCallBack(MGridCursorMoveCallBack *aCursorMoveCallBack)
 278.357 -/** Sets the cursor moved call-back object.
 278.358 -
 278.359 -The call-back object encapsulates the implementation of a call-back function 
 278.360 -that is called whenever there is a change to the cursor position.
 278.361 -
 278.362 -@param aCursorMoveCallBack A pointer to the callback object. */
 278.363 -	{ iCursorMoveCallBack = aCursorMoveCallBack; }
 278.364 -
 278.365 -inline const CGridCellRegion* CGridImg::Selected() const
 278.366 -/** Gets the currently selected region.
 278.367 -
 278.368 -@return A pointer to the selected region object. */
 278.369 -	{ return iSelected; }
 278.370 -
 278.371 -inline const CGridLabelImg* CGridImg::GridLabelImg() const
 278.372 -/** Gets the the object that is used to draw a cell label.
 278.373 -
 278.374 -@return A pointer to the object that is used to draw a cell label. */
 278.375 -	{ return iGridLabelImg; }
 278.376 -
 278.377 -inline TCellRef CGridImg::CursorPos() const
 278.378 -/** Gets the current position of the cursor.
 278.379 -
 278.380 -@return The cell reference of the current cursor position. */
 278.381 -	{ return iCursorPos; }
 278.382 -
 278.383 -inline TCellRef CGridImg::AnchorPos() const
 278.384 -/** Gets the cursor's anchor position. 
 278.385 -
 278.386 -This is the cell reference of the position that the cursor must return to 
 278.387 -after a series of selected movements have been made.
 278.388 -
 278.389 -@return The cell reference of the cursor's anchor position. */
 278.390 -	{ return iAnchorPos; }
 278.391 -
 278.392 -inline TCellRef CGridImg::NewCursorPos() const
 278.393 -/** Gets the new position of the cursor.
 278.394 -
 278.395 -@return The cell reference of the new cursor position.
 278.396 -@see SetCursorPosL() */
 278.397 -	{ return iNewCursorPos; }
 278.398 -
 278.399 -inline TRect CGridImg::GridRect() const
 278.400 -/** Gets the rectangle containing the grid.
 278.401 -
 278.402 -@return The rectangle containing the grid. */
 278.403 -	{ return iGridRect; }
 278.404 -
 278.405 -inline TPoint CGridImg::TitlePoint() const
 278.406 -/** Gets the position of the title.
 278.407 -
 278.408 -This is the point at the top left of the grid excluding the labels.
 278.409 -
 278.410 -@return The position of the title. */
 278.411 -	{ return iTitlePoint; }
 278.412 -
 278.413 -inline TPoint CGridImg::MainPoint() const
 278.414 -// Returns the most commonly used point in the grid (usually same as TitlePoint()).
 278.415 -/** Gets the position at which the visible range starts.
 278.416 -
 278.417 -@return The position at which the visible range starts. */
 278.418 -	{ return iMainPoint; }
 278.419 -
 278.420 -inline TRect CGridImg::MainRect() const
 278.421 -/** Gets the rectangle that corresponds to the visible range.
 278.422 -
 278.423 -@return The rectangle that corresponds to the visible range. */
 278.424 -	{ return TRect(iMainPoint,iGridRect.iBr); }
   279.1 --- a/epoc32/include/gulalign.h	Tue Mar 16 16:12:26 2010 +0000
   279.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   279.3 @@ -1,153 +0,0 @@
   279.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   279.5 -// All rights reserved.
   279.6 -// This component and the accompanying materials are made available
   279.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   279.8 -// which accompanies this distribution, and is available
   279.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  279.10 -//
  279.11 -// Initial Contributors:
  279.12 -// Nokia Corporation - initial contribution.
  279.13 -//
  279.14 -// Contributors:
  279.15 -//
  279.16 -// Description:
  279.17 -//
  279.18 -
  279.19 -#ifndef __GULALIGN_H__
  279.20 -#define __GULALIGN_H__
  279.21 -
  279.22 -#include <e32std.h>
  279.23 -#include <e32base.h>
  279.24 -#include <gdi.h>
  279.25 -#include <biditext.h>	// enum TBidiText::TDirectionality
  279.26 -#include <txtfrmat.h>	// enum CParaFormat::TAlignment
  279.27 -
  279.28 -/** Horizontal layout settings for graphic objects. 
  279.29 -
  279.30 -@publishedAll
  279.31 -@released */
  279.32 -enum TGulHAlignment
  279.33 -	{
  279.34 -	/** Object is left-aligned. */
  279.35 -	EHLeft=CGraphicsContext::ELeft,
  279.36 -	/** Object is centred horizontally. */
  279.37 -	EHCenter=CGraphicsContext::ECenter,
  279.38 -	/** Object is right-aligned. */
  279.39 -	EHRight=CGraphicsContext::ERight
  279.40 -	};
  279.41 -
  279.42 -/** Vertical layout settings for graphic objects. 
  279.43 -
  279.44 -@publishedAll
  279.45 -@released */
  279.46 -enum TGulVAlignment
  279.47 -	{
  279.48 -	/** Object is aligned with the top. */
  279.49 -	EVTop=0x00,
  279.50 -	/** Object is centred vertically. */
  279.51 -	EVCenter=0x10,
  279.52 -	/** Object is aligned with the bottom. */
  279.53 -	EVBottom=0x20
  279.54 -	};
  279.55 -
  279.56 -/** Alignment settings for the layout of graphic objects. 
  279.57 -
  279.58 -@publishedAll
  279.59 -@released */
  279.60 -enum TGulAlignmentValue
  279.61 -	{
  279.62 -	/** Object is left and top aligned. */
  279.63 -	EHLeftVTop=EHLeft|EVTop,
  279.64 -	/** Object is left aligned and centred vertically. */
  279.65 -	EHLeftVCenter=EHLeft|EVCenter,
  279.66 -	/** Object is left aligned and at the bottom. */
  279.67 -	EHLeftVBottom=EHLeft|EVBottom,
  279.68 -	/** Object is centre aligned horizontally and at the top. */
  279.69 -	EHCenterVTop=EHCenter|EVTop,
  279.70 -	/** Object is centred horizontally and vertically. */
  279.71 -	EHCenterVCenter=EHCenter|EVCenter,
  279.72 -	/** Object is centred horizontally and at the bottom. */
  279.73 -	EHCenterVBottom=EHCenter|EVBottom,
  279.74 -	/** Object is right and top aligned. */
  279.75 -	EHRightVTop=EHRight|EVTop,
  279.76 -	/** Object is right aligned and centred vertically. */
  279.77 -	EHRightVCenter=EHRight|EVCenter,
  279.78 -	/** Object is right aligned and at the bottom. */
  279.79 -	EHRightVBottom=EHRight|EVBottom
  279.80 -	};
  279.81 -
  279.82 -
  279.83 -/** Provides a convenient way to describe horizontal and vertical layouts of rectangular 
  279.84 -objects and to enquire how they occupy an area given their alignment. 
  279.85 -
  279.86 -@publishedAll 
  279.87 -@released */
  279.88 -class TGulAlignment
  279.89 -	{
  279.90 -private:
  279.91 -	enum {EHMask=0x03, EHAbsoluteFlag=0x04, EVMask=0x30};
  279.92 -public:
  279.93 -	inline TGulAlignment();
  279.94 -	inline TGulAlignment(TGulAlignmentValue aValue);
  279.95 -	inline TGulAlignment(CGraphicsContext::TTextAlign aHAlign, TGulVAlignment aVAlign = EVTop);
  279.96 -	IMPORT_C operator TGulAlignmentValue() const;
  279.97 -	inline TGulVAlignment VAlignment() const;
  279.98 -	inline TGulHAlignment HAlignment() const;
  279.99 -	IMPORT_C TGulHAlignment HAlignment(TBidiText::TDirectionality aLanguageDirectionality) const;	
 279.100 -	IMPORT_C TBool HasAbsoluteHAlignment() const;
 279.101 -	IMPORT_C void SetAbsoluteHAlignment(TBool aAbsoluteHAlignment);
 279.102 -	
 279.103 -	// Returns the horizontal text alignment. 
 279.104 -	inline CGraphicsContext::TTextAlign TextAlign() const;
 279.105 -	IMPORT_C CGraphicsContext::TTextAlign TextAlign(TBidiText::TDirectionality aLanguageDirectionality) const;
 279.106 -	IMPORT_C CParaFormat::TAlignment ParaAlign() const;
 279.107 -
 279.108 -	IMPORT_C void SetVAlignment(TGulVAlignment aVAlign);
 279.109 -	IMPORT_C void SetHAlignment(TGulHAlignment aHAlign);
 279.110 -	IMPORT_C void SetHAlignment(CGraphicsContext::TTextAlign aHAlign);
 279.111 -	IMPORT_C void SetHAlignment(CParaFormat::TAlignment aHAlign);
 279.112 -	IMPORT_C TPoint InnerTopLeft(const TRect& aOuter, const TSize& aInnerSize) const;
 279.113 -	IMPORT_C TPoint InnerTopLeft(const TRect& aOuter, const TSize& aInnerSize, TBidiText::TDirectionality aLanguageDirectionality) const;
 279.114 -	IMPORT_C TRect InnerRect(const TRect& aOuter, const TSize& aInnerSize) const;
 279.115 -	IMPORT_C TRect InnerRect(const TRect& aOuter, const TSize& aInnerSize, TBidiText::TDirectionality aLanguageDirectionality) const;
 279.116 -private:
 279.117 -	TInt iValue;
 279.118 -	};
 279.119 -
 279.120 -/** Default constructor. */
 279.121 -inline TGulAlignment::TGulAlignment()
 279.122 -	{};
 279.123 -
 279.124 -/** Constructor initialising the object with an alignment value.
 279.125 -@param aValue The alignment value. */
 279.126 -inline TGulAlignment::TGulAlignment(TGulAlignmentValue aValue)
 279.127 -	{iValue=aValue;}
 279.128 -	
 279.129 -/** Constructor initialising the object with an alignment value.
 279.130 -@param aHAlign The horizontal alignment value. 
 279.131 -@param aVAlign The vertical alignment value. */
 279.132 -inline TGulAlignment::TGulAlignment(CGraphicsContext::TTextAlign aHAlign, TGulVAlignment aVAlign)
 279.133 -	{ iValue = static_cast<TGulAlignmentValue>(((TGulHAlignment)aHAlign) |aVAlign); }
 279.134 -		
 279.135 -/** Gets the vertical alignment. 
 279.136 -@return Vertical alignment. */
 279.137 -inline TGulVAlignment TGulAlignment::VAlignment() const
 279.138 -	{return((TGulVAlignment)(iValue&EVMask));}
 279.139 -
 279.140 -/** Gets the absolute horizontal alignment. 
 279.141 -
 279.142 -Note that this is the alignment in absolute terms. I.e. left and right 
 279.143 -alignment will not be swapped depending on language directionality.
 279.144 -@return Horizontal alignment. */
 279.145 -inline TGulHAlignment TGulAlignment::HAlignment() const
 279.146 -	{return((TGulHAlignment)(iValue&EHMask));}
 279.147 -
 279.148 -/** Gets the absolute horizontal text alignment.
 279.149 -
 279.150 -Note that this is the alignment in absolute terms. I.e. left and right 
 279.151 -alignment will not be swapped depending on language directionality.
 279.152 -@return The horizontal text alignment. */
 279.153 -inline CGraphicsContext::TTextAlign TGulAlignment::TextAlign() const
 279.154 -	{return((CGraphicsContext::TTextAlign)(HAlignment()));}
 279.155 -
 279.156 -#endif	// __GULALIGN_H__
   280.1 --- a/epoc32/include/gulbordr.h	Tue Mar 16 16:12:26 2010 +0000
   280.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   280.3 @@ -1,348 +0,0 @@
   280.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   280.5 -// All rights reserved.
   280.6 -// This component and the accompanying materials are made available
   280.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   280.8 -// which accompanies this distribution, and is available
   280.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  280.10 -//
  280.11 -// Initial Contributors:
  280.12 -// Nokia Corporation - initial contribution.
  280.13 -//
  280.14 -// Contributors:
  280.15 -//
  280.16 -// Description:
  280.17 -//
  280.18 -
  280.19 -#if !defined(__GULBORDR_H__)
  280.20 -#define __GULBORDR_H__
  280.21 -
  280.22 -#if !defined(__E32DEF_H__)
  280.23 -#include <e32def.h>
  280.24 -#endif
  280.25 -
  280.26 -#if !defined(__GULDEF_H__)
  280.27 -#include <guldef.h>
  280.28 -#endif
  280.29 -
  280.30 -#if !defined(__GDI_H__)
  280.31 -#include <gdi.h>
  280.32 -#endif
  280.33 -
  280.34 -
  280.35 -class TGulBorder
  280.36 -/** Draws a border around a control.
  280.37 -
  280.38 -The rectangular areas enclosed by borders are typically working areas of the 
  280.39 -graphics context so the class supplies a number of methods which describe 
  280.40 -how it occupies the area.
  280.41 -
  280.42 -A distinction between descriptive and logical borders is made. For descriptive 
  280.43 -borders the appearance of the border is known and fixed. The type of border 
  280.44 -drawn is determined by flags which describe how it is to be constructed. These 
  280.45 -flags can be combined to achieve many different effects, and standard combinations 
  280.46 -have been supplied (see the TBorderType enumeration). For logical borders 
  280.47 -the use of the border is known and fixed but the appearance is not specified. 
  280.48 -The appearance and sizing functions must be supplied in custom written code. 
  280.49 -@publishedAll
  280.50 -@released*/
  280.51 -    {
  280.52 -public:
  280.53 -	class TColors
  280.54 -	/** Represents the colours used within the border and for the optional single pixel 
  280.55 -	border outlines.
  280.56 -
  280.57 -	These colours are stored using TRgb values.
  280.58 -
  280.59 -	An object of this type can be populated using ColorUtils::GetRgbDerivedBorderColors().
  280.60 -
  280.61 -	The colours used inside the border are derived from iBack, the border's background 
  280.62 -	colour, so that border colours can be lighter or darker shades of the colour 
  280.63 -	used in the main body of the control they enclose. Different combinations 
  280.64 -	of light and dark shades are used to draw opposite border sides, to achieve 
  280.65 -	a raised or sunken effect. */
  280.66 -		{
  280.67 -	public:
  280.68 -		IMPORT_C TColors();
  280.69 -	public:	
  280.70 -		/** The line colour.
  280.71 -	
  280.72 -		This is the colour used to draw the outlines on either side of the border. 
  280.73 -		Not all border types have an outline. By default, KRgbBlack. */
  280.74 -		TRgb iLine;
  280.75 -		/** The background colour for the border. 
  280.76 -	
  280.77 -		The other colours used in the border are derived from this.
  280.78 -	
  280.79 -		By default, KRgbWhite. */
  280.80 -		TRgb iBack;
  280.81 -		/** The lightest colour. 
  280.82 -	
  280.83 -		By default, KRgbWhite. */
  280.84 -		TRgb iLight;
  280.85 -		/** The mid light colour. 
  280.86 -	
  280.87 -		This colour is midway between iBack and iLight. By default, KRgbWhite. */
  280.88 -		TRgb iMidlight;
  280.89 -		/** The mid dark colour. 
  280.90 -	
  280.91 -		This colour is midway between iBack and iDark. By default, KRgbDarkGray. */
  280.92 -		TRgb iMid;
  280.93 -		/** The darkest colour.
  280.94 -	
  280.95 -		By default, KRgbDarkGray. */
  280.96 -		TRgb iDark;
  280.97 -		/** Not used. */
  280.98 -		TRgb iInternalBack;
  280.99 -		};
 280.100 -
 280.101 -public:
 280.102 -	/** Defines the border outline style. 
 280.103 -
 280.104 -	Note that not all border types have an outline. */
 280.105 -	enum TOutlineStyle
 280.106 -		{
 280.107 -		/** The border has a single pixel outline, either solid (by default) or dotted. */
 280.108 -		EWithOutline=0x01,
 280.109 -		/** The border outline is drawn using a dotted pen. */
 280.110 -		EDottedOutline=0x02
 280.111 -		};
 280.112 -
 280.113 -	/** Defines whether or not the border has a single pixel interior border. 
 280.114 -
 280.115 -	By default it does not. */
 280.116 -	enum TInlineStyle
 280.117 -		{
 280.118 -		/** The border has an interior border. */
 280.119 -		EWithInline=0x04
 280.120 -		};
 280.121 -
 280.122 -	/** Defines the 3D border style. */
 280.123 -	enum T3DStyle
 280.124 -		{
 280.125 -		/** A flat border. */
 280.126 -		EFlat=0x10,
 280.127 -		/** A 3D effect sunken border. */
 280.128 -		ESunken=0x20,
 280.129 -		/** A 3D effect raised border. */
 280.130 -		ERaised=0x40
 280.131 -		};
 280.132 -
 280.133 -	/** Defines the border's construction style. */
 280.134 -	enum TConstructionStyle
 280.135 -		{
 280.136 -		/** One step border construction. 
 280.137 -	
 280.138 -		This type of border is drawn using the mid light and mid dark colours on opposite 
 280.139 -		sides of the border. */
 280.140 -		EOneStep=0x100,
 280.141 -		/** Two step border construction.
 280.142 -	
 280.143 -		This type of border uses light and dark colours for the main border frame 
 280.144 -		(or mid light for the flat border), and an additional half frame using mid 
 280.145 -		light or mid dark colours. */
 280.146 -		ETwoStep=0x200,
 280.147 -		/** Three step border construction. 
 280.148 -	
 280.149 -		This type of border is drawn with an outer frame, a repeating one pixel band 
 280.150 -		in mid tones, and an inner frame. */
 280.151 -		EThreeStep=0x400,
 280.152 -		/** Inverted two step border construction. 
 280.153 -	
 280.154 -		This is the same as ETwoStep except that for raised and sunken borders, the 
 280.155 -		additional half frame is drawn on the opposite side to that used in ETwoStep. */
 280.156 -		EInvertedTwoStep=0x800
 280.157 -		};
 280.158 -
 280.159 -	/** Defines the number of pixels to add to the border thickness.
 280.160 -
 280.161 -	The border thickness is the central part of the border, coloured in the mid-tone 
 280.162 -	highlights and lowlights.
 280.163 -
 280.164 -	For two step-constructed borders, the additional pixels are only added to 
 280.165 -	either the top left or bottom right hand sides. */
 280.166 -	enum TThickness
 280.167 -		{
 280.168 -		/** The border has one extra pixel. */
 280.169 -		EAddOnePixel=0x1000,
 280.170 -		/** The border has two extra pixels. */
 280.171 -		EAddTwoPixels=0x2000,
 280.172 -		/** The border has four extra pixels. */
 280.173 -		EAddFourPixels=0x4000
 280.174 -		};
 280.175 -
 280.176 -	/** Defines the number of pixels that are removed to produce rounded corners. */
 280.177 -	enum TRounding
 280.178 -		{
 280.179 -		/** Border rounded by removing one extra pixel. */
 280.180 -		EAddOneRoundingPixel=0x10000,
 280.181 -		/** Border rounded by removing two extra pixels. */
 280.182 -		EAddTwoRoundingPixels=0x20000,
 280.183 -		/** Border rounded by by removing four extra pixels. */
 280.184 -		EAddFourRoundingPixels=0x40000
 280.185 -		};
 280.186 -private:
 280.187 -	enum TNull
 280.188 -		{
 280.189 -		ENoBorder=0x00
 280.190 -		};
 280.191 -
 280.192 -	enum TLegacyStyle
 280.193 -		{
 280.194 -		EShallow=EAddOnePixel,
 280.195 -		EDeep=EAddTwoPixels,
 280.196 -		EThick=EAddFourPixels,
 280.197 -		EHorizontal=0x100000,
 280.198 -		EWithOverlap=0x200000,
 280.199 -		EGray=0x400000,
 280.200 -		EBlack=0x80000
 280.201 -		};
 280.202 -
 280.203 -	enum TLogicalStyle
 280.204 -		{
 280.205 -		ELogical=0x800000
 280.206 -		};
 280.207 -public:
 280.208 -	/** For logical borders, defines whether the border encloses a window, a container 
 280.209 -	control or a control. */
 280.210 -	enum TLogicalFamily
 280.211 -		{
 280.212 -		/** Logical border around a window. */
 280.213 -		EWindowFamily=ELogical|0x1,
 280.214 -		/** Logical border around a container. */
 280.215 -		EContainerFamily=ELogical|0x2,
 280.216 -		/** Logical border around a control. */
 280.217 -		EControlFamily=ELogical|0x3
 280.218 -		};
 280.219 -public:
 280.220 -	/** Defines the descriptive border types. */
 280.221 -	enum TBorderType
 280.222 -		{
 280.223 -		/** No border. */
 280.224 -		ENone=ENoBorder,
 280.225 -		/** Border is a 1 pixel wide grey outline. */
 280.226 -		ESingleGray=EWithOutline|EGray,
 280.227 -		/** Border is a 1 pixel wide black outline. */
 280.228 -		ESingleBlack=EWithOutline|EBlack,
 280.229 -		/** Border is a 1 pixel wide dotted outline. */
 280.230 -		ESingleDotted=EWithOutline|EDottedOutline,
 280.231 -		/** A 3D raised border, with 1 pixel thickness. */
 280.232 -		EShallowRaised=ERaised|EOneStep|EAddOnePixel,
 280.233 -		/** A 3D sunken border, with 1 pixel thickness. */
 280.234 -		EShallowSunken=ESunken|EOneStep|EAddOnePixel,
 280.235 -		/** A 3D raised border, with outline, and 2 pixel thickness. */
 280.236 -		EDeepRaised=EWithOutline|ERaised|EOneStep|EAddTwoPixels,
 280.237 -		/** The same as EDeepRaised. */
 280.238 -		EDeepRaisedWithOutline=EWithOutline|ERaised|EOneStep|EAddTwoPixels,
 280.239 -		/** A 3D sunken border, with outline, and 2 pixel thickness. */
 280.240 -		EDeepSunken=EWithOutline|ESunken|EOneStep|EAddTwoPixels,
 280.241 -		/** The same as EDeepSunken. */
 280.242 -		EDeepSunkenWithOutline=EWithOutline|ESunken|EOneStep|EAddTwoPixels,
 280.243 -		/** A 3D raised border, with outline, and 3 pixel thickness. */
 280.244 -		EThickDeepRaisedWithOutline=EWithOutline|ERaised|EOneStep|EAddOnePixel|EAddTwoPixels, 
 280.245 -		/** A 3D raised border, with 2 pixels thickness and no outline on the left and 
 280.246 -		right hand sides. */
 280.247 -		EVerticalBar=ERaised|EOneStep|EAddTwoPixels|EWithOverlap,
 280.248 -		/** A 3D raised border, with 2 pixels thickness and no outline on the top and bottom. */
 280.249 -		EHorizontalBar=ERaised|EOneStep|EAddTwoPixels|EHorizontal|EWithOverlap
 280.250 -		};
 280.251 -
 280.252 -	/** Defines the logical border types. */
 280.253 -	enum TLogicalType
 280.254 -		{
 280.255 -		// Window family
 280.256 -		/** Raised border around a window. */
 280.257 -		EWindow=EWindowFamily|ERaised,
 280.258 -		// Container family
 280.259 -		/** Flat border around a container. */
 280.260 -		EFlatContainer=EContainerFamily|EFlat,
 280.261 -		/** Raised border around a container. */
 280.262 -		ERaisedContainer=EContainerFamily|ERaised,
 280.263 -		/** Sunken border around a container. */
 280.264 -		ESunkenContainer=EContainerFamily|ESunken,
 280.265 -		// Control Family
 280.266 -		/** Flat border around a control. */
 280.267 -		EFlatControl=EControlFamily|EFlat,
 280.268 -		/** Raised border around a control. */
 280.269 -		ERaisedControl=EControlFamily|ERaised,
 280.270 -		/** Sunken border around a control. */
 280.271 -		ESunkenControl=EControlFamily|ESunken,
 280.272 -		/** Raised border around a control with focus. */
 280.273 -		EFocusedRaisedControl=EControlFamily|ERaised|0x100,
 280.274 -		/** Sunken border around a control with focus. */
 280.275 -		EFocusedSunkenControl=EControlFamily|ESunken|0x100
 280.276 -		};
 280.277 -
 280.278 -public:
 280.279 -    IMPORT_C TGulBorder();
 280.280 -    IMPORT_C TGulBorder(TBorderType aType);
 280.281 -    IMPORT_C TGulBorder(TBorderType aType,TGulAdjacent aAdjacent);
 280.282 -	IMPORT_C TGulBorder(TInt aType);
 280.283 -    IMPORT_C TGulBorder(TInt aType,TGulAdjacent aAdjacent);
 280.284 -	IMPORT_C void Draw(CGraphicsContext& aGc,const TRect& aRect,const TColors& aBorderColors) const;
 280.285 -   	IMPORT_C void Draw(CGraphicsContext& aGc,const TRect& aRect) const;
 280.286 -	IMPORT_C TRect InnerRect(const TRect& aOuterRect) const;
 280.287 -   	IMPORT_C TRect OuterRect(const TRect& aInnerRect) const;
 280.288 -	IMPORT_C void SetType(TInt aType);
 280.289 -	IMPORT_C void SetAdjacent(TInt aAdjacent);
 280.290 -	IMPORT_C TSize SizeDelta() const;
 280.291 -   	IMPORT_C TMargins Margins() const;
 280.292 -	IMPORT_C TBool HasBorder() const;
 280.293 -	IMPORT_C TInt Adjacent() const;	
 280.294 -	IMPORT_C TInt Type() const;
 280.295 -public:	// Internal to Symbian
 280.296 -	IMPORT_C TInt Thickness() const;
 280.297 -	IMPORT_C TInt Rounding() const;
 280.298 -private:
 280.299 -	TBool IsSunken() const;
 280.300 -	TInt Depth() const;
 280.301 -	void DrawOutline(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor) const;
 280.302 -	void DrawRectOutline(CGraphicsContext& aGc,const TRect& aRect) const;
 280.303 -	void DrawInline(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor) const;
 280.304 -	TMargins OutlineMargins() const;
 280.305 -	TMargins BorderMargins() const;
 280.306 -	TMargins InlineMargins() const;
 280.307 -	TRect OutlineInnerRect(const TRect& aOuterRect) const;
 280.308 -	TRect BorderInnerRect(const TRect& aOuterRect) const;
 280.309 -	TInt BorderRounding() const;
 280.310 -	TInt InlineRounding() const;
 280.311 -	void DrawOneStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aMidlight,TRgb aMid) const;
 280.312 -	void DrawTwoStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const;
 280.313 -	void DrawInvertedTwoStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const;
 280.314 -	void DrawThreeStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aBack,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const;
 280.315 -	void DrawTopLeft(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor,const TInt aRounding) const;
 280.316 -	void DrawRoundedTopLeft(CGraphicsContext& aGc,const TRect& aRect,const TInt aRounding) const;
 280.317 -	void DrawBottomRight(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor,const TInt aRounding) const;
 280.318 -	void DrawRoundedBottomRight(CGraphicsContext& aGc,const TRect& aRect,const TInt aRounding) const;
 280.319 -	void DrawRoundedCorner(CGraphicsContext& aGc,const TPoint& aStart,const TInt aRoundedLength, const TBool aUp, const TBool aRight) const;
 280.320 -	TInt RoundingMargin(const TInt aRoundedLength) const;
 280.321 -	inline TInt InternalType() const;
 280.322 -	void TranslateLegacyTypes();
 280.323 -private:
 280.324 -    TInt iType;
 280.325 -    };
 280.326 -
 280.327 -/**
 280.328 -The MGulLogicalBorder class specifices an interface for logical borders.
 280.329 -
 280.330 -@internalTechnology*/
 280.331 -class MGulLogicalBorder
 280.332 -	{
 280.333 -public:
 280.334 -	virtual void Draw(const TGulBorder& aBorder,CGraphicsContext& aGc, const TRect& aRect, const TGulBorder::TColors& aBorderColors) const=0;
 280.335 -	virtual TMargins Margins(const TGulBorder& aBorder) const=0;
 280.336 -private:
 280.337 -	IMPORT_C virtual void MGulLogicalBorderReserved();
 280.338 -	};
 280.339 -
 280.340 -/**
 280.341 -The GulTls class sets and gets the thread local storage for EGul.
 280.342 - 
 280.343 -@internalTechnology*/
 280.344 -class GulTls
 280.345 -	{
 280.346 -public:
 280.347 -	IMPORT_C static void SetLogicalBorder(MGulLogicalBorder* aLogicalBorder);
 280.348 -	IMPORT_C static const MGulLogicalBorder* LogicalBorder();
 280.349 -	};
 280.350 -
 280.351 -#endif
   281.1 --- a/epoc32/include/gulcolor.h	Tue Mar 16 16:12:26 2010 +0000
   281.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   281.3 @@ -1,274 +0,0 @@
   281.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   281.5 -// All rights reserved.
   281.6 -// This component and the accompanying materials are made available
   281.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   281.8 -// which accompanies this distribution, and is available
   281.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  281.10 -//
  281.11 -// Initial Contributors:
  281.12 -// Nokia Corporation - initial contribution.
  281.13 -//
  281.14 -// Contributors:
  281.15 -//
  281.16 -// Description:
  281.17 -//
  281.18 -
  281.19 -#if !defined(__GULCOLOR_H__)
  281.20 -#define __GULCOLOR_H__
  281.21 -
  281.22 -#if !defined(__W32STD_H__)
  281.23 -#include <w32std.h>
  281.24 -#endif
  281.25 -
  281.26 -#if !defined(__E32BASE_H__)
  281.27 -#include <e32base.h>
  281.28 -#endif
  281.29 -
  281.30 -#if !defined(__GDI_H__)
  281.31 -#include <gdi.h>
  281.32 -#endif
  281.33 -
  281.34 -/** Logical colours.
  281.35 -
  281.36 -Logical colours are used to specify the colour scheme for the controls in 
  281.37 -an application.
  281.38 -
  281.39 -Many controls have one logical colour for text and another logical colour 
  281.40 -for the background. Some logical colours have a dimmed variant for when the 
  281.41 -control becomes inactive or disabled. Highlighted and pressed variants exist 
  281.42 -for controls that support selection or which can be pressed. 
  281.43 -
  281.44 -@publishedAll
  281.45 -@released */
  281.46 -enum TLogicalColor
  281.47 -	{
  281.48 -	// Windows
  281.49 -	/** The colour of a window's background. */
  281.50 -	EColorWindowBackground,
  281.51 -	/** The colour of text in a window. */
  281.52 -	EColorWindowText,
  281.53 -	// Controls
  281.54 -	/** The colour of the background contents of a control. */
  281.55 -	EColorControlBackground,
  281.56 -	/** The colour of the text inside a control. */
  281.57 -	EColorControlText, 
  281.58 -	/** The background colour of a control's border. */
  281.59 -	EColorControlSurroundBackground,
  281.60 -	/** The colour of text in a control's border. */
  281.61 -	EColorControlSurroundText,
  281.62 -	/** The colour of a control's background when highlighted for selection. */
  281.63 -	EColorControlHighlightBackground, 
  281.64 -	/** The colour of the text in a control when highlighted for selection. */
  281.65 -	EColorControlHighlightText,
  281.66 -	/** The colour of a control's background when dimmed. */
  281.67 -	EColorControlDimmedBackground, 
  281.68 -	/** The colour of the text in a control when dimmed. */
  281.69 -	EColorControlDimmedText,
  281.70 -	/** The colour of a control's background when dimmed and highlighted for selection. */
  281.71 -	EColorControlDimmedHighlightBackground,
  281.72 -	/** The colour of the text in a control when dimmed and highlighted for selection. */
  281.73 -	EColorControlDimmedHighlightText,
  281.74 -	// Dialogs
  281.75 -	/** The colour of a dialog's background. */
  281.76 -	EColorDialogBackground,
  281.77 -	/** The colour of text inside a dialog. */
  281.78 -	EColorDialogText,
  281.79 -	/** A dialog title's background colour. */
  281.80 -	EColorDialogTitle,
  281.81 -	/** A dialog title's background colour when pressed. */
  281.82 -	EColorDialogTitlePressed,
  281.83 -	/** The text colour in a dialog's title. */
  281.84 -	EColorDialogTitleText,
  281.85 -	/** The text colour in a dialog's title when pressed. */
  281.86 -	EColorDialogTitleTextPressed,
  281.87 -	// Menus
  281.88 -	/** The colour of the menubar's background. */
  281.89 -	EColorMenubarBackground,
  281.90 -	/** The colour of text in the menubar. */
  281.91 -	EColorMenubarText,
  281.92 -	/** The colour of the menubar title's background. */
  281.93 -	EColorMenubarTitleBackground,
  281.94 -	/** The colour of text in the menubar title. */
  281.95 -	EColorMenubarTitleText,
  281.96 -	/** The colour of the menu pane background. */
  281.97 -	EColorMenuPaneBackground,
  281.98 -	/** The colour of text in the menu pane. */
  281.99 -	EColorMenuPaneText,
 281.100 -	/** The colour of the menu pane background when highlighted for selection. */
 281.101 -	EColorMenuPaneHighlight,
 281.102 -	/** The colour of text in the menu pane when highlighted for selection. */
 281.103 -	EColorMenuPaneTextHighlight,
 281.104 -	/** The colour of the menu pane background when dimmed and highlighted. */
 281.105 -	EColorMenuPaneDimmedHighlight,
 281.106 -	/** The colour of text in the menu pane when dimmed. */
 281.107 -	EColorMenuPaneDimmedText,
 281.108 -	/** The colour of text in the menu pane when dimmed and highlighted for selection. */
 281.109 -	EColorMenuPaneDimmedTextHighlight,
 281.110 -	// Command buttons
 281.111 -	/** The colour of the button background, when the button is in the unset state. */
 281.112 -	EColorButtonFaceClear,
 281.113 -	/** The colour of the button background when the button is in the set state. */
 281.114 -	EColorButtonFaceSet,
 281.115 -	/** The colour of the button background when the button is in the set state and 
 281.116 -	is pressed. */
 281.117 -	EColorButtonFaceSetPressed,
 281.118 -	/** The colour of the button background when the button is in the unset state and 
 281.119 -	is pressed. */
 281.120 -	EColorButtonFaceClearPressed,
 281.121 -	/** The colour of the button text. */
 281.122 -	EColorButtonText,
 281.123 -	/** The colour of the button text when the button is pressed. */
 281.124 -	EColorButtonTextPressed,
 281.125 -	/** The colour of the button text when the button is dimmed. */
 281.126 -	EColorButtonTextDimmed,		
 281.127 -	// Message windows
 281.128 -	/** The colour of the message window foreground. */
 281.129 -	EColorMsgWinForeground,
 281.130 -	EColorMsgWinBackground,
 281.131 -	// Scrollbars
 281.132 -	/** The colour of the scroll bar border. */
 281.133 -	EColorScrollBarBorder,
 281.134 -	EColorScrollBarShaft,
 281.135 -	/** The colour of the scroll bar shaft background when dimmed. */
 281.136 -	EColorScrollBarShaftDimmed,
 281.137 -	/** The colour of the scroll bar shaft background when pressed. */
 281.138 -	EColorScrollBarShaftPressed,
 281.139 -	/** The colour of the background for scroll bars with no thumb and no shaft. */
 281.140 -	EColorScrollBarNoShaftOrThumb,
 281.141 -	/** The colour of scroll bar buttons. */
 281.142 -	EColorScrollButtonIcon,
 281.143 -	/** The colour of scroll bar buttons when pressed. */
 281.144 -	EColorScrollButtonIconPressed,
 281.145 -	/** The colour of scroll bar buttons when dimmed. */
 281.146 -	EColorScrollButtonIconDimmed,
 281.147 -	/** The colour of a scroll bar thumb's background. */
 281.148 -	EColorScrollButtonThumbBackground,
 281.149 -	/** The colour of a scroll bar thumb's background when pressed. */
 281.150 -	EColorScrollButtonThumbBackgroundPressed,
 281.151 -	/** The colour of a scroll bar thumb's background when dimmed. */
 281.152 -	EColorScrollThumbDimmed,
 281.153 -	/** The colour of a scroll bar thumb's edge. */
 281.154 -	EColorScrollThumbEdge,
 281.155 -	// Toolbars
 281.156 -	/** The colour of a toolbar's background. */
 281.157 -	EColorToolbarBackground,
 281.158 -	/** The colour of the text in a toolbar. */
 281.159 -	EColorToolbarText,
 281.160 -	// Status pane
 281.161 -	/** The colour of a status pane's background. */
 281.162 -	EColorStatusPaneBackground,
 281.163 -	/** The colour of the text in a status pane. */
 281.164 -	EColorStatusPaneText,
 281.165 -	// Labels
 281.166 -	/** The colour of the text in a label. */
 281.167 -	EColorLabelText,
 281.168 -	/** The colour of emphasised text in a label. */
 281.169 -	EColorLabelTextEmphasis,
 281.170 -	/** The colour of the text in a label when dimmed. */
 281.171 -	EColorLabelDimmedText,
 281.172 -	/** The colour of the label background when highlighted and dimmed. */
 281.173 -	EColorLabelHighlightPartialEmphasis,
 281.174 -	/** The colour of the label background when highlighted. */
 281.175 -	EColorLabelHighlightFullEmphasis,
 281.176 -	/** The number of logical colours */
 281.177 -	EColorNumberOfLogicalColors
 281.178 -	};
 281.179 -
 281.180 -class RReadStream;
 281.181 -class RWriteStream;
 281.182 -class CColorArray;
 281.183 -
 281.184 -// not available before Release 005
 281.185 -
 281.186 -class CColorList : public CBase
 281.187 -/** A palette that maps logical colours (TLogicalColor) to physical (TRgb) values. It 
 281.188 -also supports independent sections for applications: a section is identified by an 
 281.189 -application UID, and the mappings are held as a colour array (CColorArray). 
 281.190 -
 281.191 -A colour list also supports mapping for both four-grey and 256-colour schemes; the 
 281.192 -256-colour scheme will be used and will look good if the screen mode supports 16 or 
 281.193 -more colours. Otherwise, the four-grey scheme will be used. 
 281.194 -
 281.195 -@publishedAll 
 281.196 -@released */
 281.197 -	{
 281.198 -public:
 281.199 -	IMPORT_C static CColorList* NewL(CArrayFix<TRgb>* aColors);
 281.200 -	IMPORT_C ~CColorList();
 281.201 -	// Accessors
 281.202 -	IMPORT_C TRgb Color(TLogicalColor aColor) const;
 281.203 -	IMPORT_C TInt Count() const;
 281.204 -	IMPORT_C TRgb Color(TUid aApp,TInt aColor) const;
 281.205 -	IMPORT_C CColorArray* ColorArray(TUid aApp) const;
 281.206 -	IMPORT_C TBool ContainsColorArray(TUid aApp) const;
 281.207 -	// Manipulators
 281.208 -	IMPORT_C void SetColor(TLogicalColor aLogicalColor,TRgb aColor);
 281.209 -	IMPORT_C void AddColorArrayL(TUid aApp,CColorArray* aArray); // takes ownership
 281.210 -	IMPORT_C void DeleteColorArray(TUid aApp);
 281.211 -public:
 281.212 -	IMPORT_C static CColorList* NewLC();
 281.213 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 281.214 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 281.215 -	IMPORT_C void MergeL(const CColorList& aList);
 281.216 -private:
 281.217 -	CColorList(CArrayFix<TRgb>* aColors);
 281.218 -	TInt Find(TUid aApp) const;
 281.219 -private:
 281.220 -	class TAppColorList
 281.221 -		{
 281.222 -	public:
 281.223 -		inline TAppColorList(TUid aApp,CColorArray* aColorArray);
 281.224 -	public:
 281.225 -		TUid iApp;
 281.226 -		CColorArray* iColorArray;
 281.227 -		};
 281.228 -private:
 281.229 -	CArrayFix<TRgb>* iEikColors;
 281.230 -	CArrayFix<TAppColorList>* iAppColors;
 281.231 -	};
 281.232 -
 281.233 -// not available before Release 005
 281.234 -
 281.235 -class CColorArray : public CBase
 281.236 -/** A dynamic array of mappings between logical and physical colours (TRgb values).
 281.237 -
 281.238 -@publishedAll 
 281.239 -@released */
 281.240 -	{
 281.241 -public:
 281.242 -	IMPORT_C static CColorArray* NewL();
 281.243 -	IMPORT_C static CColorArray* NewLC();
 281.244 -	IMPORT_C ~CColorArray();
 281.245 -	IMPORT_C TRgb Color(TInt aLogicalColor) const;
 281.246 -	IMPORT_C void SetColor(TInt aLogicalColor,TRgb aColor);
 281.247 -	IMPORT_C TBool Contains(TInt aLogicalColor) const;
 281.248 -	IMPORT_C TInt Count() const;
 281.249 -	IMPORT_C void Reset();
 281.250 -	IMPORT_C void AddL(TInt aLogicalColor,TRgb aColor);
 281.251 -	IMPORT_C void Remove(TInt aLogicalColor);
 281.252 -public:
 281.253 -	static CColorArray* NewLC(const CColorArray& aArray);
 281.254 -public:
 281.255 -	void InternalizeL(RReadStream& aStream);
 281.256 -	void ExternalizeL(RWriteStream& aStream) const;
 281.257 -private:
 281.258 -	CColorArray();
 281.259 -	void ConstructL();
 281.260 -	TInt Find(TInt aLogicalColor) const;
 281.261 -private:
 281.262 -	class TColor
 281.263 -		{
 281.264 -	public:
 281.265 -		inline TColor();
 281.266 -		inline TColor(TRgb aColor,TInt aLogicalColor);
 281.267 -	public:
 281.268 -		void InternalizeL(RReadStream& aStream);
 281.269 -		void ExternalizeL(RWriteStream& aStream) const;
 281.270 -	public:
 281.271 -		TRgb iColor;
 281.272 -		TInt iLogicalColor;
 281.273 -		};
 281.274 -	CArrayFixFlat<TColor> iColors;
 281.275 -	};
 281.276 -
 281.277 -#endif
   282.1 --- a/epoc32/include/guldef.h	Tue Mar 16 16:12:26 2010 +0000
   282.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   282.3 @@ -1,79 +0,0 @@
   282.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   282.5 -// All rights reserved.
   282.6 -// This component and the accompanying materials are made available
   282.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   282.8 -// which accompanies this distribution, and is available
   282.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  282.10 -//
  282.11 -// Initial Contributors:
  282.12 -// Nokia Corporation - initial contribution.
  282.13 -//
  282.14 -// Contributors:
  282.15 -//
  282.16 -// Description:
  282.17 -//
  282.18 -
  282.19 -#if !defined(__GULDEF_H__)
  282.20 -#define __GULDEF_H__
  282.21 -
  282.22 -/** The sides on which borders can be adjacent. 
  282.23 -
  282.24 -@publishedAll
  282.25 -@released */
  282.26 -enum TGulAdjacent
  282.27 -	{
  282.28 -	/** Indicates that rectangle borders are not adjacent. */
  282.29 -	EGulAdjNone		=0x00,
  282.30 -	/** Adjacent at the top. */
  282.31 -	EGulAdjTop		=0x01,
  282.32 -	/** Adjacent at the bottom. */
  282.33 -	EGulAdjBottom	=0x02,
  282.34 -	/** Adjacent at the left. */
  282.35 -	EGulAdjLeft		=0x04,
  282.36 -	/** Adjacent at the right. */
  282.37 -	EGulAdjRight	=0x08
  282.38 -	};
  282.39 -	
  282.40 -/** Symbian light grey.
  282.41 -
  282.42 -@publishedAll
  282.43 -@released */
  282.44 -#define KRgbDitheredLightGray 	TRgb(204,204,204)
  282.45 -
  282.46 -/** Symbian dithered grey.
  282.47 -
  282.48 -@publishedAll
  282.49 -@released */
  282.50 -#define KRgb1in4DitheredGray 	TRgb(238,238,238)
  282.51 -
  282.52 -/** Symbian green.
  282.53 -
  282.54 -@publishedAll
  282.55 -@released */
  282.56 -#define KRgbSymbianGreen 		TRgb(0,153,153)
  282.57 -
  282.58 -/** Symbian light green.
  282.59 -
  282.60 -@publishedAll
  282.61 -@released */
  282.62 -#define KRgbSymbianGreenLight	TRgb(0,183,183)
  282.63 -
  282.64 -/** Symbian blue.
  282.65 -
  282.66 -@publishedAll
  282.67 -@released */
  282.68 -#define KRgbSymbianBlue 		TRgb(0,102,153)
  282.69 -
  282.70 -/** Symbian dark blue.
  282.71 -
  282.72 -@publishedAll
  282.73 -@released */
  282.74 -#define KRgbSymbianBlueDark		TRgb(0,72,123)
  282.75 -
  282.76 -/** Symbian orange.
  282.77 -
  282.78 -@publishedAll
  282.79 -@released */
  282.80 -#define KRgbSymbianOrange		TRgb(255,218,155)
  282.81 -
  282.82 -#endif
   283.1 --- a/epoc32/include/gulfont.h	Tue Mar 16 16:12:26 2010 +0000
   283.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   283.3 @@ -1,125 +0,0 @@
   283.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   283.5 -// All rights reserved.
   283.6 -// This component and the accompanying materials are made available
   283.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   283.8 -// which accompanies this distribution, and is available
   283.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  283.10 -//
  283.11 -// Initial Contributors:
  283.12 -// Nokia Corporation - initial contribution.
  283.13 -//
  283.14 -// Contributors:
  283.15 -//
  283.16 -// Description:
  283.17 -//
  283.18 -
  283.19 -#if !defined(__GULFONT_H__)
  283.20 -#define __GULFONT_H__
  283.21 -
  283.22 -#include <gdi.h>
  283.23 -#include <w32std.h>
  283.24 -
  283.25 -class TResourceReader;
  283.26 -
  283.27 -class TLogicalFont
  283.28 -/** Packages the attributes of a logical font.
  283.29 -
  283.30 -These attributes include a UID (iFontId) and a category (iCategory), either 
  283.31 -of which can be used to identify a required system font. The possible values 
  283.32 -for the UID are defined in the UI variant's look and feel layer, so are not 
  283.33 -the same as the UID values that may be used to create a physical font.
  283.34 -
  283.35 -An object of this class can be passed by any application to CEikonEnv::Font(), 
  283.36 -to return the closest matching system font (a CFont-derived object). 
  283.37 -
  283.38 -@publishedAll 
  283.39 -@released */
  283.40 -	{
  283.41 -public:
  283.42 -	/** Logical font categories.
  283.43 -	
  283.44 -	The font category specifies the type of font that is required. It can be specified 
  283.45 -	as an alternative to the logical font UID. The physical fonts associated with 
  283.46 -	these categories are specified in the LAF layer, so are UI variant-specific. */
  283.47 -	enum TFontCategory
  283.48 -		{
  283.49 -		/** The normal system font. */
  283.50 -		EView,
  283.51 -		/** The font used in buttons. */
  283.52 -		EButton,
  283.53 -		/** The font used for annotations. This is smaller than the normal font. 
  283.54 -		For instance, it is used to draw the page number in some applications. */
  283.55 -		EAnnotation,
  283.56 -		/** The font used for titles. */
  283.57 -		ETitle
  283.58 -		};
  283.59 -	/** Font styles. */
  283.60 -	enum TFontStyle
  283.61 -		{
  283.62 -		/** Normal style. */
  283.63 -		ENormal,
  283.64 -		/** Bold. */
  283.65 -		EBold,
  283.66 -		/** Italics. */
  283.67 -		EItalic,
  283.68 -		/** Bold and italics. */
  283.69 -		EBoldItalic,
  283.70 -		/** Superscript. */
  283.71 -		ESuperscript,
  283.72 -		/** Subscript. */
  283.73 -		ESubscript,
  283.74 -		/** Light. This is the opposite of bold, i.e. a smaller than normal pen size is 
  283.75 -		used to draw it. */
  283.76 -		ELight,
  283.77 -		/** Custom font. */
  283.78 -		ECustom
  283.79 -		};
  283.80 -public:
  283.81 -	IMPORT_C TLogicalFont();
  283.82 -	IMPORT_C TLogicalFont(TUid aId);
  283.83 -	IMPORT_C TLogicalFont(TFontCategory aCategory,TFontStyle aStyle,const TZoomFactor& aZoomFactor);
  283.84 -	IMPORT_C TLogicalFont(TUid aId,TFontCategory aCategory,TFontStyle aStyle,const TZoomFactor& aZoomFactor);
  283.85 -public:
  283.86 -	/** The logical font ID. */
  283.87 -	TUid iFontId;
  283.88 -	/** The logical font category. */
  283.89 -	TFontCategory iCategory;
  283.90 -	/** The font style. */
  283.91 -	TFontStyle iStyle;
  283.92 -	/** The zoom factor. */
  283.93 -	TZoomFactor iZoomFactor;
  283.94 -	};
  283.95 -
  283.96 -
  283.97 -class CCleanupStackableFont : public CBase
  283.98 -/** Wraps a font (CFbsFont) object that can be pushed onto the cleanup stack.
  283.99 -
 283.100 -By default, the cleanup stack only handles CBase-derived classes, and untyped 
 283.101 -(TAny*) objects that can be cleaned up by a simple memory free call. Fonts 
 283.102 -must also be released, which this class handles automatically in its destructor.
 283.103 -
 283.104 -The font is initialised from a resource file, and can be identified by name 
 283.105 -or UID.
 283.106 -
 283.107 -@publishedAll 
 283.108 -@released 
 283.109 -@see CFbsFont */
 283.110 -	{
 283.111 -public:
 283.112 -	IMPORT_C static CCleanupStackableFont* NewL(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 283.113 -	IMPORT_C static CCleanupStackableFont* NewLC(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 283.114 -	IMPORT_C static CCleanupStackableFont* NewByNameL(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 283.115 -	IMPORT_C static CCleanupStackableFont* NewByNameLC(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 283.116 -	IMPORT_C virtual ~CCleanupStackableFont();
 283.117 -public:
 283.118 -	IMPORT_C CFbsFont& Font() const;
 283.119 -	IMPORT_C CFbsFont* TakeOwnershipOfFont();
 283.120 -private:
 283.121 -	CCleanupStackableFont(CWsScreenDevice& aScreenDevice);
 283.122 -	static CCleanupStackableFont* NewLC(TBool aByUid,TResourceReader& aReader, CWsScreenDevice& aScreenDevice);
 283.123 -private:
 283.124 -	CWsScreenDevice& iScreenDevice;
 283.125 -	CFbsFont* iFont;
 283.126 -	};
 283.127 -
 283.128 -#endif
   284.1 --- a/epoc32/include/gulicon.h	Tue Mar 16 16:12:26 2010 +0000
   284.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   284.3 @@ -1,53 +0,0 @@
   284.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   284.5 -// All rights reserved.
   284.6 -// This component and the accompanying materials are made available
   284.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   284.8 -// which accompanies this distribution, and is available
   284.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  284.10 -//
  284.11 -// Initial Contributors:
  284.12 -// Nokia Corporation - initial contribution.
  284.13 -//
  284.14 -// Contributors:
  284.15 -//
  284.16 -// Description:
  284.17 -//
  284.18 -
  284.19 -
  284.20 -#if !defined(__GULICON_H__)
  284.21 -#define __GULICON_H__  
  284.22 -
  284.23 -#if !defined(__E32BASE_H__)
  284.24 -#include <e32base.h>
  284.25 -#endif
  284.26 -
  284.27 -class CFbsBitmap;
  284.28 -
  284.29 -class CGulIcon : public CBase
  284.30 -/** Packages two bitmaps, one each for an icon image and its mask. 
  284.31 -
  284.32 -@publishedAll
  284.33 -@released */
  284.34 -	{
  284.35 -public:
  284.36 -	IMPORT_C static CGulIcon* NewLC();
  284.37 -	IMPORT_C static CGulIcon* NewL();
  284.38 -	IMPORT_C static CGulIcon* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask=NULL);
  284.39 -	//
  284.40 -	IMPORT_C void SetBitmap(CFbsBitmap* aBitmap);
  284.41 -	IMPORT_C void SetMask(CFbsBitmap* aMask);
  284.42 -	IMPORT_C CFbsBitmap* Bitmap() const;
  284.43 -	IMPORT_C CFbsBitmap* Mask() const;
  284.44 -	IMPORT_C void SetBitmapsOwnedExternally(TBool aOwnedExternally);
  284.45 -	IMPORT_C TBool BitmapsOwnedExternally() const;
  284.46 -	//
  284.47 -	IMPORT_C ~CGulIcon();
  284.48 -private:
  284.49 -	CGulIcon();
  284.50 -private:
  284.51 -	CFbsBitmap* iBitmap;
  284.52 -	CFbsBitmap* iMask;
  284.53 -	TBool iBitmapsOwnedExternally;
  284.54 -	};
  284.55 -
  284.56 -#endif
   285.1 --- a/epoc32/include/gulutil.h	Tue Mar 16 16:12:26 2010 +0000
   285.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   285.3 @@ -1,370 +0,0 @@
   285.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   285.5 -// All rights reserved.
   285.6 -// This component and the accompanying materials are made available
   285.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   285.8 -// which accompanies this distribution, and is available
   285.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  285.10 -//
  285.11 -// Initial Contributors:
  285.12 -// Nokia Corporation - initial contribution.
  285.13 -//
  285.14 -// Contributors:
  285.15 -//
  285.16 -// Description:
  285.17 -//
  285.18 -
  285.19 -#if !defined(__GULUTIL_H__)
  285.20 -#define __GULUTIL_H__
  285.21 -
  285.22 -#include <e32std.h>
  285.23 -#include <badesca.h>
  285.24 -#include <gdi.h>
  285.25 -#include <gulbordr.h>
  285.26 -#include <gulftflg.hrh>
  285.27 -
  285.28 -/** 
  285.29 -@publishedAll 
  285.30 -@released 
  285.31 -*/
  285.32 -const TUint KTextUtilClipEndChar=0x2026;
  285.33 -
  285.34 -/**
  285.35 -@publishedAll 
  285.36 -@released 
  285.37 -*/
  285.38 -const TUint KColumnListSeparator='\t';
  285.39 -
  285.40 -class CFont;
  285.41 -class CFbsFont;
  285.42 -class CWsScreenDevice;
  285.43 -class TResourceReader;
  285.44 -class CColorArray;
  285.45 -class CGraphicsDevice;
  285.46 -class RWsSession;
  285.47 -class CColorList;
  285.48 -template <class T> class CArrayFix;
  285.49 -
  285.50 -
  285.51 -class TMargins8
  285.52 -/** A set of margins stored as 8 bit integer values which can represent 
  285.53 -either pixels or twips between -128 and +127.
  285.54 -
  285.55 -@publishedAll 
  285.56 -@released */
  285.57 -	{
  285.58 -public :
  285.59 -	/** Left margin in twips or pixels. */
  285.60 -	TInt8 iLeft;
  285.61 -	/** Right margin in twips or pixels. */
  285.62 -	TInt8 iRight;
  285.63 -	/** Top margin in twips or pixels. */
  285.64 -	TInt8 iTop;
  285.65 -	/** Bottom margin in twips or pixels. */
  285.66 -	TInt8 iBottom;
  285.67 -public :
  285.68 -	IMPORT_C TMargins8();
  285.69 -	IMPORT_C TMargins8(TInt8 aLeft, TInt8 aTop, TInt8 aRight, TInt8 aBottom);
  285.70 -	IMPORT_C void SetAllValuesTo(TInt aCommonValue);
  285.71 -    IMPORT_C TRect InnerRect(const TRect& aOuterRect) const;
  285.72 -    IMPORT_C TRect OuterRect(const TRect& aInnerRect) const;
  285.73 -	IMPORT_C TSize SizeDelta() const;
  285.74 -	};
  285.75 -
  285.76 -
  285.77 -class DrawUtils
  285.78 -/** Provides static functions for drawing text in a rectangle. 
  285.79 -
  285.80 -@publishedAll 
  285.81 -@released */
  285.82 -	{
  285.83 -public:
  285.84 -	IMPORT_C static void DrawText(CGraphicsContext& aGc,const TDesC& aString,const TRect& aBox,TInt aBaseLineOffset,
  285.85 -									CGraphicsContext::TTextAlign aHoriz,TInt aMargin,const CFont* aFont);
  285.86 -    IMPORT_C static void DrawBetweenRects(CGraphicsContext& aGc,const TRect& aOuterRect,const TRect& aInnerRect);
  285.87 -    IMPORT_C static void ClearBetweenRects(CGraphicsContext& aGc,const TRect& aOuterRect,const TRect& aInnerRect);
  285.88 -	};
  285.89 -
  285.90 -
  285.91 -class TextUtils
  285.92 -/** Provides static functions for truncating and aligning text strings. 
  285.93 -
  285.94 -@publishedAll 
  285.95 -@released */
  285.96 -	{
  285.97 -public:
  285.98 -	IMPORT_C static void ClipToFit(TDes& aBuffer,const CFont& aFont,TInt aMaxWidthInPixels,TChar aAlternativeEnd=KTextUtilClipEndChar);
  285.99 -	IMPORT_C static TInt ColumnText(TPtrC& aColumnText,TInt aColumn,const TDesC* aSourceText,TChar aColumnSeparator=KColumnListSeparator);
 285.100 -	IMPORT_C static void TruncateToNumChars(TDes& aBuffer, TInt numChars);
 285.101 -	};
 285.102 -
 285.103 -class FontUtils
 285.104 -/** Provides static functions for getting information about the fonts supported by a graphics 
 285.105 -device. 
 285.106 -
 285.107 -@publishedAll 
 285.108 -@released */
 285.109 -	{
 285.110 -public:
 285.111 -	IMPORT_C static void GetAvailableFontsL(const CGraphicsDevice& aDevice,CDesCArray& aFontNameList,
 285.112 -											TInt aFonts=EGulNoSymbolFonts);
 285.113 -	IMPORT_C static TInt TypefaceAttributes(const CGraphicsDevice& aDevice,const TDesC& aTypefaceName);
 285.114 -	IMPORT_C static TInt GetAvailableHeightsInTwipsL(const CGraphicsDevice& aDevice,const TDesC& aTypefaceName,
 285.115 -													CArrayFix<TInt>& aHeightList);
 285.116 -	IMPORT_C static TInt GetAvailableHeightsInTwipsAndPointsL(const CGraphicsDevice& aDevice,const TDesC& aTypefaceName,
 285.117 -															CArrayFix<TInt>& aTwipsList,CDesCArray& aPointsList);
 285.118 -	IMPORT_C static TInt PointsFromTwips(TInt aTwips);
 285.119 -	IMPORT_C static TInt TwipsFromPoints(TInt aPoints);
 285.120 -	IMPORT_C static TInt TwipsFromPoints(const TDesC& aPoints);
 285.121 -	IMPORT_C static TInt IndexOfNearestHeight(CArrayFix<TInt>& aTwipsList,TInt aHeight);
 285.122 -	};
 285.123 -
 285.124 -
 285.125 -class ResourceUtils
 285.126 -/** Provides static functions for resource reading.
 285.127 -
 285.128 -All functions use pre-initialised resource reader objects to read information 
 285.129 -from resource files.
 285.130 -
 285.131 -@publishedAll 
 285.132 -@released 
 285.133 -@see CCoeEnv::CreateResourceReaderLC() */
 285.134 -	{
 285.135 -public:
 285.136 -	IMPORT_C static CFbsFont* CreateNamedScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
 285.137 -	IMPORT_C static CFbsFont* CreateNamedScreenFontInPixelsL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
 285.138 -	IMPORT_C static CFbsFont* CreateScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
 285.139 -	inline static TInt8 ReadTInt8L(TResourceReader& aReader);
 285.140 -	inline static TInt16 ReadTInt16L(TResourceReader& aReader);
 285.141 -	inline static TInt32 ReadTInt32L(TResourceReader& aReader);
 285.142 -	IMPORT_C static void PopulateColorArrayL(CColorArray& aColors,TResourceReader& aReader);
 285.143 -private:
 285.144 -	enum TResourceTypeInt { EResourceInt8,EResourceInt16,EResourceInt32 };
 285.145 -private:
 285.146 -	IMPORT_C static TInt32 ReadResourceIntL(TResourceReader& aReader,TResourceTypeInt aSize);
 285.147 -	};
 285.148 -
 285.149 -class ColorUtils
 285.150 -/** Provides static functions for manipulating colours.
 285.151 -
 285.152 -@publishedAll 
 285.153 -@released 
 285.154 -@see TDisplayMode */
 285.155 -	{
 285.156 -public:
 285.157 -	/** The orientation of a bitmap. */
 285.158 -    enum TBitmapOrientation
 285.159 -	    {
 285.160 -		/** The bitmap is vertical. */
 285.161 -	    EBitmapOrientationVertical,
 285.162 -		/** The bitmap is horizontal. */
 285.163 -	    EBitmapOrientationHorizontal
 285.164 -	    };
 285.165 -public:
 285.166 -	IMPORT_C static TRgb ColorAdjust(TRgb aColor,TInt aPercentage);
 285.167 -    IMPORT_C static void CreateGradientBitmapL(CFbsBitmap& aBitmap, const RWsSession& aWs, TInt aBreadth,
 285.168 -                                       TBitmapOrientation aOrientation, TRgb aStartColor, TRgb aEndColor);
 285.169 -	IMPORT_C static CColorList* CreateSystemColorListL(RFs& aFs);
 285.170 -	IMPORT_C static CColorList* CreateSystemColorListL(RFs& aFs,const CColorList& aColorList);
 285.171 -	IMPORT_C static void UpdateSystemColorListL(RFs& aFs,CColorList& aColorList);
 285.172 -	IMPORT_C static void GetRgbDerivedBorderColors(TGulBorder::TColors& aBorderColors,TRgb aBackgroundColor,TDisplayMode aMode);
 285.173 -	IMPORT_C static TRgb RgbDarkerColor(TRgb aRgb,TDisplayMode aMode);
 285.174 -	IMPORT_C static TRgb RgbMidDarkerColor(TRgb aRgb,TDisplayMode aMode);
 285.175 -	IMPORT_C static TRgb RgbLighterColor(TRgb aRgb,TDisplayMode aMode);
 285.176 -	};
 285.177 -
 285.178 -
 285.179 -class TFindWidthOfWidestTextItem
 285.180 -/** Finds the width in pixels of the widest item in a range of indexed text items.
 285.181 -
 285.182 -This is the base class for several classes used to get the maximum width for 
 285.183 -date and time components.
 285.184 -
 285.185 -Derived classes should override the pure virtual methods to supply an appropriate 
 285.186 -range of items. 
 285.187 -
 285.188 -@publishedAll 
 285.189 -@released */
 285.190 -	{
 285.191 -protected:
 285.192 -	/** Default constructor. */
 285.193 -	inline TFindWidthOfWidestTextItem() {}
 285.194 -public:
 285.195 -	IMPORT_C TInt MaximumWidthInPixels(const CFont& aFont) const;
 285.196 -private:
 285.197 -	/** Gets the first and last index in the range of items.
 285.198 -	
 285.199 -	@param aFirstIndex On return, the first index.
 285.200 -	@param aLastIndex On return, the last index. 
 285.201 -	@publishedAll
 285.202 -	@released */
 285.203 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const=0;
 285.204 -	/** Gets the text item at the specfied index.
 285.205 -	
 285.206 -	@param aText On return, the indexed text item.
 285.207 -	@param aIndex The index. 
 285.208 -	@publishedAll 
 285.209 -	@released */
 285.210 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const=0;
 285.211 -	};
 285.212 -
 285.213 -
 285.214 -class TFindWidthOfWidestDigit : public TFindWidthOfWidestTextItem
 285.215 -/** Finds the width in pixels of the widest digit, when displayed in a specified 
 285.216 -font.
 285.217 -
 285.218 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.219 -specifying the font. 
 285.220 -
 285.221 -@publishedAll
 285.222 -@released */
 285.223 -	{
 285.224 -public:
 285.225 -	IMPORT_C TFindWidthOfWidestDigit();
 285.226 -private:
 285.227 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.228 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.229 -	};
 285.230 -
 285.231 -class TFindWidthOfWidestDigitType : public TFindWidthOfWidestTextItem
 285.232 -/**
 285.233 -@publishedAll
 285.234 -@released
 285.235 -*/
 285.236 -	{
 285.237 -public:
 285.238 -	IMPORT_C TFindWidthOfWidestDigitType(TDigitType aDigitType);
 285.239 -private:
 285.240 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.241 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.242 -
 285.243 -private:
 285.244 -	TDigitType iDigitType;
 285.245 -	};
 285.246 -
 285.247 -class TFindWidthOfWidestAmPmName : public TFindWidthOfWidestTextItem
 285.248 -/** Finds the width in pixels of the widest Am or Pm text, when displayed in a specified 
 285.249 -font.
 285.250 -
 285.251 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.252 -specifying the font.
 285.253 -
 285.254 -@publishedAll
 285.255 -@released 
 285.256 -@see TAmPmName */
 285.257 -	{
 285.258 -public:
 285.259 -	IMPORT_C TFindWidthOfWidestAmPmName();
 285.260 -private:
 285.261 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.262 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.263 -	};
 285.264 -
 285.265 -class TFindWidthOfWidestAbbreviatedDayName : public TFindWidthOfWidestTextItem
 285.266 -/** Finds the width in pixels of the widest abbreviated day name (for instance Mon, Tue) 
 285.267 -when displayed in a specified font.
 285.268 -
 285.269 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.270 -specifying the font.
 285.271 -
 285.272 -@publishedAll
 285.273 -@released 
 285.274 -@see TDayNameAbb */
 285.275 -	{
 285.276 -public:
 285.277 -	IMPORT_C TFindWidthOfWidestAbbreviatedDayName();
 285.278 -private:
 285.279 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.280 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.281 -	};
 285.282 -
 285.283 -
 285.284 -class TFindWidthOfWidestDayName : public TFindWidthOfWidestTextItem
 285.285 -/** Finds the width in pixels of the widest day name, when displayed in a specified 
 285.286 -font.
 285.287 -
 285.288 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.289 -specifying the font. 
 285.290 -
 285.291 -@publishedAll 
 285.292 -@released */
 285.293 -	{
 285.294 -public:
 285.295 -	IMPORT_C TFindWidthOfWidestDayName();
 285.296 -private:
 285.297 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.298 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.299 -	};
 285.300 -
 285.301 -
 285.302 -class TFindWidthOfWidestAbbreviatedMonthName : public TFindWidthOfWidestTextItem
 285.303 -/** Finds the width in pixels of the widest abbreviated month name (for instance Jan, Feb), 
 285.304 -when displayed in a specified font.
 285.305 -
 285.306 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.307 -specifying the font. 
 285.308 -
 285.309 -@publishedAll 
 285.310 -@released */
 285.311 -	{
 285.312 -public:
 285.313 -	IMPORT_C TFindWidthOfWidestAbbreviatedMonthName();
 285.314 -private:
 285.315 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.316 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.317 -	};
 285.318 -
 285.319 -class TFindWidthOfWidestMonthName : public TFindWidthOfWidestTextItem
 285.320 -/** Finds the width in pixels of the widest month name, when displayed in a specified 
 285.321 -font.
 285.322 -
 285.323 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.324 -specifying the font. 
 285.325 -
 285.326 -@publishedAll 
 285.327 -@released */
 285.328 -	{
 285.329 -public:
 285.330 -	IMPORT_C TFindWidthOfWidestMonthName();
 285.331 -private:
 285.332 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.333 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.334 -	};
 285.335 -
 285.336 -class TFindWidthOfWidestDateSuffix : public TFindWidthOfWidestTextItem
 285.337 -/** Finds the width in pixels of the widest date suffix (for instance st, nd), 
 285.338 -when displayed in a specified font.
 285.339 -
 285.340 -After construction, call MaximumWidthInPixels(), defined in the base class, 
 285.341 -specifying the font. 
 285.342 -
 285.343 -@publishedAll 
 285.344 -@released */
 285.345 -	{
 285.346 -public:
 285.347 -	IMPORT_C TFindWidthOfWidestDateSuffix();
 285.348 -private:
 285.349 -	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 285.350 -	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 285.351 -	};
 285.352 -
 285.353 -//	class ResourceUtils
 285.354 -inline TInt8 ResourceUtils::ReadTInt8L(TResourceReader& aReader)
 285.355 -/** Reads an 8 bit signed integer from a resource.
 285.356 -
 285.357 -@param aReader Resource reader to use to read the integer.
 285.358 -@return The 8 bit signed integer. */
 285.359 -	{ return((TInt8)ReadResourceIntL(aReader,EResourceInt8)); }
 285.360 -inline TInt16 ResourceUtils::ReadTInt16L(TResourceReader& aReader)
 285.361 -/** Reads a 16 bit signed integer from a resource.
 285.362 -
 285.363 -@param aReader Resource reader to use to read the integer.
 285.364 -@return The 16 bit signed integer. */
 285.365 -	{ return((TInt16)ReadResourceIntL(aReader,EResourceInt16)); }
 285.366 -inline TInt32 ResourceUtils::ReadTInt32L(TResourceReader& aReader)
 285.367 -/** Reads a 32 bit signed integer from a resource.
 285.368 -
 285.369 -@param aReader Resource reader to use to read the integer.
 285.370 -@return The 32 bit signed integer. */
 285.371 -	{ return((TInt32)ReadResourceIntL(aReader,EResourceInt32)); }
 285.372 -
 285.373 -#endif
   286.1 --- a/epoc32/include/hlplch.h	Tue Mar 16 16:12:26 2010 +0000
   286.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   286.3 @@ -1,98 +0,0 @@
   286.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   286.5 -// All rights reserved.
   286.6 -// This component and the accompanying materials are made available
   286.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   286.8 -// which accompanies this distribution, and is available
   286.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  286.10 -//
  286.11 -// Initial Contributors:
  286.12 -// Nokia Corporation - initial contribution.
  286.13 -//
  286.14 -// Contributors:
  286.15 -//
  286.16 -// Description:
  286.17 -// Help Launcher module
  286.18 -// 
  286.19 -//
  286.20 -
  286.21 -#ifndef __HLPLCH_H__
  286.22 -#define __HLPLCH_H__
  286.23 -
  286.24 -#if !defined(__APGTASK_H__)
  286.25 -#include <apgtask.h>
  286.26 -#endif
  286.27 -
  286.28 -#if !defined(__EIKDLL_H__)
  286.29 -#include <eikdll.h>
  286.30 -#endif
  286.31 -
  286.32 -#if !defined(__WSERV_H__)
  286.33 -#include <w32std.h>
  286.34 -#endif
  286.35 -
  286.36 -#if !defined(__COEHELP_H__)
  286.37 -#include <coehelp.h>
  286.38 -#endif
  286.39 -
  286.40 -/** Help application UID. 
  286.41 -@internalComponent
  286.42 -@released
  286.43 -*/
  286.44 -const TUid KHlpAppUid={ 0x10005234 };
  286.45 -
  286.46 -/** UID of window message to send to application. 
  286.47 -@internalComponent
  286.48 -@released
  286.49 -*/
  286.50 -const TUid KHlpAppWsMsg={ 0x100055c7 };
  286.51 -
  286.52 -/** Maximum length of command line to launch application. 
  286.53 -@internalComponent
  286.54 -@released
  286.55 -*/
  286.56 -const TInt KMaxCmdLineLength = 512;
  286.57 -
  286.58 -// resource file name
  286.59 -_LIT(KHelpLauncherResource, "z:\\resource\\apps\\lch.rsc");
  286.60 -
  286.61 -class CHlpCmdLine : public CBase
  286.62 -/**
  286.63 -@internalComponent
  286.64 -@released
  286.65 -*/
  286.66 -	{
  286.67 -public:
  286.68 -	static CHlpCmdLine* NewL(CArrayFix<TCoeHelpContext>* aContextList);
  286.69 -	static CHlpCmdLine* NewLC(CArrayFix<TCoeHelpContext>* aContextList);
  286.70 -	~CHlpCmdLine();
  286.71 -public:
  286.72 -	TPtr8 CmdLineL();
  286.73 -private:
  286.74 -	void BuildCmdLineL();
  286.75 -	void AddContextL(TCoeHelpContext& aContext);
  286.76 -private:
  286.77 -	void ConstructL();
  286.78 -	CHlpCmdLine(CArrayFix<TCoeHelpContext>* aContextList);
  286.79 -private:
  286.80 -	CArrayFix<TCoeHelpContext>* iContextList;
  286.81 -	CBufFlat* iCmdLine;
  286.82 -	};
  286.83 -
  286.84 -class HlpLauncher
  286.85 -/** Launches the help application.
  286.86 -
  286.87 -It assumes that such an application is at z:\\Sys\\Bin\\CsHelp.exe
  286.88 -
  286.89 -@publishedAll
  286.90 -@released
  286.91 -*/
  286.92 -	{
  286.93 -public:
  286.94 -	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession, CArrayFix<TCoeHelpContext>* aContextList);
  286.95 -	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession, TUid aUid);
  286.96 -	IMPORT_C	static void LaunchHelpApplicationL(RWsSession& aWsSession);
  286.97 -private:
  286.98 -	static void DoLaunchHelpApplicationL(RWsSession& aWsSession, const TDesC8& aCmdLine);
  286.99 -	};
 286.100 -
 286.101 -#endif
   287.1 --- a/epoc32/include/hlpmodel.h	Tue Mar 16 16:12:26 2010 +0000
   287.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   287.3 @@ -1,557 +0,0 @@
   287.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   287.5 -// All rights reserved.
   287.6 -// This component and the accompanying materials are made available
   287.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   287.8 -// which accompanies this distribution, and is available
   287.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  287.10 -//
  287.11 -// Initial Contributors:
  287.12 -// Nokia Corporation - initial contribution.
  287.13 -//
  287.14 -// Contributors:
  287.15 -//
  287.16 -// Description:
  287.17 -//
  287.18 -
  287.19 -#ifndef __HLPMODEL_H
  287.20 -#define __HLPMODEL_H
  287.21 -
  287.22 -// System includes
  287.23 -#include <e32std.h>
  287.24 -#include <badesca.h>	// For MDesCArray
  287.25 -#include <txtmrtsr.h>	// For MRichTextStoreResolver
  287.26 -#include <gdi.h>		// For MPictureFactory
  287.27 -#include <d32dbms.h>
  287.28 -
  287.29 -// Help model includes
  287.30 -#include "hlpconstants.h"
  287.31 -
  287.32 -// Classes referenced
  287.33 -class CRichText;
  287.34 -class CHlpDatabase;
  287.35 -class CHlpFileEntry;
  287.36 -class CHlpSQLSearch;
  287.37 -class TCoeHelpContext;
  287.38 -class CParaFormatLayer;
  287.39 -class CCharFormatLayer;
  287.40 -class CHlpPicture;
  287.41 -
  287.42 -// Typedefs
  287.43 -/**
  287.44 -@internalComponent
  287.45 -@released
  287.46 -*/
  287.47 -typedef CArrayPtrFlat<CHlpDatabase> CHlpDatabases;
  287.48 -
  287.49 -/**
  287.50 -@internalComponent
  287.51 -@released
  287.52 -*/
  287.53 -typedef CArrayPtrFlat<CHlpFileEntry> CHlpFileList;
  287.54 -
  287.55 -
  287.56 -class MHlpModelObserver
  287.57 -/** Client callback inteface to receive events from the help model. 
  287.58 -@publishedAll
  287.59 -@released
  287.60 -*/
  287.61 -	{
  287.62 -public:
  287.63 -	/** Receives a help model event.
  287.64 -	
  287.65 -	@param aEvent Help model event. Events are listed in the enums that begin 
  287.66 -	ECategoryListAvailable, and ENoRecordsFound. */
  287.67 -	virtual void HandleModelEventL(TInt aEvent) = 0;
  287.68 -	};
  287.69 -
  287.70 -//
  287.71 -// Internal API to handle events reported by the search engine
  287.72 -//
  287.73 -class MHlpDbObserver
  287.74 -/**
  287.75 -@internalComponent
  287.76 -@released
  287.77 -*/
  287.78 -	{
  287.79 -public: // TInt aEvent should be a named enum
  287.80 -	virtual void HandleDbEventL(TInt aEvent) = 0;
  287.81 -	};
  287.82 -
  287.83 -//
  287.84 -// Search types (these should be named, but SC cannot be broken until v7.0
  287.85 -//
  287.86 -/** Defines the search types for use with CHlpModel::SearchL(). */
  287.87 -enum
  287.88 -	{
  287.89 -	/** Gets a list of index entries for all help files.
  287.90 -
  287.91 -	Success is indicated by an EIndexListAvailable event; failure by EIndexListNoneFound. 
  287.92 -	The list can be retrieved using CHlpModel::LoadListL(). */
  287.93 -	EIndexList,
  287.94 -	/** Gets a list of categories for all help files.
  287.95 -
  287.96 -	Success is indicated by an ECategoryListAvailable event; failure by ECategoryListNoneFound. 
  287.97 -	The list can be retrieved using CHlpModel::CategoryListL(). */
  287.98 -	ECategoryList,
  287.99 -	/** Gets a list of topics for a specified category.
 287.100 -
 287.101 -	Success is indicated by an ETopicListAvailable event; failure by ETopicListNoneFound. 
 287.102 -	The list can be retrieved using CHlpModel::LoadListL(). */
 287.103 -	ETopicListForCategory,
 287.104 -	/** Gets a list of topics for a specified category UID.
 287.105 -
 287.106 -	Success is indicated by an ETopicListAvailable event; failure by ETopicListNoneFound. 
 287.107 -	The list can be retrieved using CHlpModel::LoadListL(). */
 287.108 -	ETopicListForCategoryUID,
 287.109 -	/** Searches for a topic with the specified help context.
 287.110 -
 287.111 -	A successful search generates an ETopicAvailable event. The topic can then be retrieved 
 287.112 -	using CHlpModel::LoadTopicL(). An unsuccessful search generates an ETopicNotFound event. */
 287.113 -	EContextSearch,
 287.114 -	/** Searches for index entries for the specified help item.
 287.115 -
 287.116 -	A successful search generates an ETopicListAvailable event. The list can then be retrieved 
 287.117 -	using CHlpModel::LoadListL(). An unsuccessful search generates an ETopicListNoneFound event. */
 287.118 -	EIndexSearch,
 287.119 -	/** Searches the topic titles for the specified text.
 287.120 -
 287.121 -	A successful search generates an ESearchListAvailable event. The list can then be 
 287.122 -	retrieved using CHlpModel::LoadListL(). An unsuccessful search generates an 
 287.123 -	ESearchListNoneFound event. */
 287.124 -	EQuickSearch,
 287.125 -	/** Searches the full text of topics for the specified text.
 287.126 -
 287.127 -	A successful search generates an ESearchListAvailable event. The list can then be 
 287.128 -	retrieved using CHlpModel::LoadListL(). An unsuccessful search generates an 
 287.129 -	ESearchListNoneFound event. */
 287.130 -	EFullTextSearch,
 287.131 -	/** Searches for a topic with the specified ID.
 287.132 -
 287.133 -	A successful search generates an ETopicAvailable event. The topic can then be 
 287.134 -	retrieved using CHlpModel::LoadTopicL(). An unsuccessful search generates an 
 287.135 -	ETopicNotFound event. */
 287.136 -	ETopicIdSearch
 287.137 -	};
 287.138 -
 287.139 -//
 287.140 -// Search progress responses (this should be scoped as members of MHlpModelObserver
 287.141 -// and should also be named, but SC cannot be broken until v7.0
 287.142 -//
 287.143 -enum
 287.144 -	{
 287.145 -	ENoRecordsFound,
 287.146 -	ESearchInProgress,
 287.147 -	ESearchComplete
 287.148 -	};
 287.149 -
 287.150 -//
 287.151 -// Search progress responses (ditto for naming and scoping)
 287.152 -//
 287.153 -/** Help model search result events*/
 287.154 -enum
 287.155 -	{
 287.156 -	/** The search returned a category list.
 287.157 -
 287.158 -	The list can be retrieved using CHlpModel::CategoryListL(). */
 287.159 -	ECategoryListAvailable,	
 287.160 -	/** The search did not return a category list. */
 287.161 -	ECategoryListNoneFound,
 287.162 -	/** The search returned a results list.
 287.163 -
 287.164 -	The list can be retrieved using CHlpModel::LoadListL(). */
 287.165 -	ESearchListAvailable,
 287.166 -	/** The search did not return a results list. */
 287.167 -	ESearchListNoneFound,
 287.168 -	/** The search returned a topic list.
 287.169 -
 287.170 -	The list can be retrieved using CHlpModel::LoadListL(). */
 287.171 -	ETopicListAvailable,		// Category expansion
 287.172 -	/** The search did not return a topic list. */
 287.173 -	ETopicListNoneFound,
 287.174 -	/** The search returned an index item list.
 287.175 -
 287.176 -	The list can be retrieved using CHlpModel::LoadListL(). */
 287.177 -	EIndexListAvailable,
 287.178 -	/** The search did not return an index item list. */
 287.179 -	EIndexListNoneFound,
 287.180 -	/** The search returned a topic list from an index phrase search.
 287.181 -
 287.182 -	The list can be retrieved using CHlpModel::LoadListL(). */
 287.183 -	EIndexSearchListAvailable,
 287.184 -	/** The search did not return a topic list from an index phrase search. */
 287.185 -	EIndexSearchListNoneFound,
 287.186 -	/** The search returned a topic.
 287.187 -
 287.188 -	The topic can be retrieved using CHlpModel::LoadTopicL(). */
 287.189 -	ETopicAvailable,
 287.190 -	/** The search did not return a topic. */
 287.191 -	ETopicNotFound,
 287.192 -	/** The search is in progress. */
 287.193 -	EModelSearchInProgress,
 287.194 -	/** The search has been cancelled. */
 287.195 -	EHlpSearchCancelled
 287.196 -	};
 287.197 -
 287.198 -/** Defines help model zoom sizes. */
 287.199 -enum THlpZoomState
 287.200 -	{
 287.201 -	/** Small zoom. */
 287.202 -	EHlpZoomStateSmall = 0,
 287.203 -	/** Medium zoom. */
 287.204 -	EHlpZoomStateMedium = 1,
 287.205 -	/** Large zoom. */
 287.206 -	EHlpZoomStateLarge = 2
 287.207 -	};
 287.208 -
 287.209 -// Constants
 287.210 -const TInt KHlpModelDefaultNumberOfImagesForV6Point2Files = 1;
 287.211 -const TInt KHlpModelMaximumNumberOfImagesForV6Point2Files = 3;
 287.212 -//
 287.213 -/** Default zoom factor for small zoom size. */
 287.214 -const TInt KHlpModelZoomFactorSmall = 750;
 287.215 -/** Default zoom factor for medium zoom size. */
 287.216 -const TInt KHlpModelZoomFactorMedium = 1000;
 287.217 -/** Default zoom factor for large zoom size. */
 287.218 -const TInt KHlpModelZoomFactorLarge = 1250;
 287.219 -//
 287.220 -/** Default zoom factor for medium zoom size as real number. */
 287.221 -const TReal KHlpModelDefaultZoomFactorAsRealNumber = 1000.0;
 287.222 -
 287.223 -
 287.224 -class CHlpItem : public CBase
 287.225 -/** Encapsulates an individual item in a help file.
 287.226 -
 287.227 -Note that item IDs are assigned in increasing numerical order by the help 
 287.228 -compiler and are not unique. Categories and help files are however specified 
 287.229 -by UID, and so are unique. 
 287.230 -@publishedAll
 287.231 -@released
 287.232 -*/
 287.233 -	{
 287.234 -public:
 287.235 -	static CHlpItem* NewL(const TDesC& aTitle, TUint32 aId, TUid aCategoryId, TUid aHelpFileUid);
 287.236 -	static CHlpItem* NewLC(const TDesC& aTitle, TUint32 aId, TUid aCategoryId, TUid aHelpFileUid);
 287.237 -	static CHlpItem* NewLC(const TDesC& aTitle, TUint32 aId, TUid aHelpFileUid);
 287.238 -	IMPORT_C ~CHlpItem();
 287.239 -
 287.240 -public: // Access
 287.241 -	inline TUid CategoryUid() const 
 287.242 -	/** Gets the item's category ID.
 287.243 -	
 287.244 -	@return Category ID */
 287.245 -		{ return iCategoryUid; }
 287.246 -	inline TUid HelpFileUid() const 
 287.247 -	/** Gets the item's help file UID.
 287.248 -	
 287.249 -	@return Help file UID */
 287.250 -		{ return iHelpFileUid; }
 287.251 -	inline TUint32 Id() const 
 287.252 -	/** Gets the item's ID.
 287.253 -	
 287.254 -	@return Item's ID */
 287.255 -		{ return iId; }
 287.256 -	inline const TDesC& Title() const 
 287.257 -	/** Gets the item's title.
 287.258 -	
 287.259 -	@return Item's title */
 287.260 -		{ return *iTitle; }
 287.261 -
 287.262 -public: // These should not be public, but I can't break SC (these were inherited from
 287.263 -		// the previous author.
 287.264 -	/** Item's title */
 287.265 -	HBufC* iTitle;
 287.266 -	/** Item's ID */
 287.267 -	TUint32 iId;
 287.268 -
 287.269 -private:
 287.270 -	friend class CHlpList; // Needed for searching
 287.271 -	CHlpItem(TUint32 aId);
 287.272 -	CHlpItem(TUint32 aId, TUid aHelpFileUid);
 287.273 -	CHlpItem(TUint32 aId, TUid aCategoryId, TUid aHelpFileUid);
 287.274 -	void ConstructL(const TDesC& aTitle);
 287.275 -
 287.276 -private: // Meta data required for correct restoration of topics
 287.277 -	TUid iCategoryUid;
 287.278 -	TUid iHelpFileUid;
 287.279 -	};
 287.280 -
 287.281 -
 287.282 -
 287.283 -///////////////////////////////////////////////////////////////////////////////////////
 287.284 -// ----> MHlpTitleArray 
 287.285 -///////////////////////////////////////////////////////////////////////////////////////
 287.286 -class MHlpTitleArray : public MDesCArray
 287.287 -/** Interface to get a topic ID from an array index. 
 287.288 -@publishedAll
 287.289 -@released
 287.290 -*/
 287.291 -	{
 287.292 -public:
 287.293 -	/** Gets a topic ID for the specified index.
 287.294 -	
 287.295 -	@param aIndex Index of item to get
 287.296 -	@return Topic ID */
 287.297 -	virtual TUint32 At(TInt aIndex) const = 0;
 287.298 -	};
 287.299 -
 287.300 -
 287.301 -
 287.302 -///////////////////////////////////////////////////////////////////////////////////////
 287.303 -// ----> CHlpList 
 287.304 -///////////////////////////////////////////////////////////////////////////////////////
 287.305 -class CHlpList : public CBase, public MHlpTitleArray
 287.306 -/** A list of help items (CHlpItem objects). 
 287.307 -@publishedAll
 287.308 -@released
 287.309 -*/
 287.310 -	{
 287.311 -public: // Static construct / destruct
 287.312 -	IMPORT_C static CHlpList* NewL();
 287.313 -	IMPORT_C static CHlpList* NewLC();
 287.314 -	IMPORT_C ~CHlpList();
 287.315 -
 287.316 -public: // From MDesCArray
 287.317 -	IMPORT_C TInt MdcaCount() const;
 287.318 -	IMPORT_C TPtrC MdcaPoint(TInt aIndex) const;
 287.319 -
 287.320 -public:
 287.321 -	// 'At' returns topic Id, but this function is next to useless because you can't
 287.322 -	// uniquely identify a help topic by topic id alone. You need to know 3 things:-
 287.323 -	// a) topic id, 2) category id, 3) help file uid. This information is all
 287.324 -	// encapsulated in CHlpItem so help app authors should use 'Item' instead.
 287.325 -	IMPORT_C TUint32 At(TInt aIndex) const;
 287.326 -	IMPORT_C CHlpItem* Item(TInt aIndex) const;
 287.327 -	IMPORT_C TInt Find(TUint32 aId);
 287.328 -	IMPORT_C void Reset();
 287.329 -	IMPORT_C void AppendL(CHlpItem* aItem);
 287.330 -
 287.331 -private: // 2nd phase constructor
 287.332 -	void ConstructL();
 287.333 -
 287.334 -private:
 287.335 -	// This is the array of help items that were located as a result of
 287.336 -	// performing a search.
 287.337 -	CArrayPtr<CHlpItem>* iList;
 287.338 -	};
 287.339 -
 287.340 -
 287.341 -
 287.342 -///////////////////////////////////////////////////////////////////////////////////////
 287.343 -// ----> CHlpTopic 
 287.344 -///////////////////////////////////////////////////////////////////////////////////////
 287.345 -class CHlpTopic : public CBase
 287.346 -/** Encapsulates a help topic.
 287.347 -
 287.348 -A help topic has text, a title, a category, and paragraph and character formatting. 
 287.349 -@publishedAll
 287.350 -@released
 287.351 -*/
 287.352 -	{
 287.353 -public:
 287.354 -	IMPORT_C static CHlpTopic* NewL();
 287.355 -	IMPORT_C static CHlpTopic* NewLC();
 287.356 -	IMPORT_C ~CHlpTopic();
 287.357 -
 287.358 -public: 
 287.359 -	// This function will not behave as expected in the case where it is used to 
 287.360 -	// restore rich text that includes pictures. Instead, only the text and markup
 287.361 -	// will be restored. Help App authors should use 'CHlpModel::LoadTopic' instead.
 287.362 -	// I can't remove this as it would break S&BC.
 287.363 -	IMPORT_C void RestoreL(RDbView* aView);
 287.364 -	
 287.365 -	IMPORT_C CRichText* TopicText();
 287.366 -	IMPORT_C TDesC& TopicTitle();
 287.367 -	IMPORT_C TDesC& Category();
 287.368 -
 287.369 -	inline CParaFormatLayer* ParaFormatLayer() const 
 287.370 -	/** Gets the topic paragraph formatting.
 287.371 -	
 287.372 -	@return Topic paragraph formatting */
 287.373 -		{ return iGlobalParaFormatLayer; }
 287.374 -	inline CCharFormatLayer* CharFormatLayer() const 
 287.375 -	/** Gets the topic character formatting.
 287.376 -	
 287.377 -	@return Topic character formatting */
 287.378 -		{ return iGlobalCharFormatLayer; }
 287.379 -
 287.380 -private:
 287.381 -	void ConstructL();
 287.382 -
 287.383 -private:
 287.384 -	friend class CHlpModel;
 287.385 -
 287.386 -	TUint32 iTopicId;
 287.387 -	TBuf<KMaxTitleColumn> iTopicTitle;
 287.388 -	TBuf<KMaxTitleColumn> iCategory;
 287.389 -
 287.390 -	CRichText* iTopicText;
 287.391 -	CParaFormatLayer* iGlobalParaFormatLayer;  
 287.392 -	CCharFormatLayer* iGlobalCharFormatLayer; 
 287.393 -	};
 287.394 -
 287.395 -
 287.396 -
 287.397 -
 287.398 -///////////////////////////////////////////////////////////////////////////////////////
 287.399 -// ----> CHlpModel 
 287.400 -///////////////////////////////////////////////////////////////////////////////////////
 287.401 -class CHlpModel : public CBase, public MHlpDbObserver, public MPictureFactory, public MRichTextStoreResolver
 287.402 -/** Help model interface.
 287.403 -
 287.404 -It provides functions to search help files in various ways.
 287.405 -
 287.406 -The interface implements MHlpDbObserver for help database events, and MRichTextStoreResolver 
 287.407 -and MPictureFactory to obtain pictures from rich text stores. 
 287.408 -@publishedAll
 287.409 -@released
 287.410 -*/
 287.411 -	{
 287.412 -public: // Construct / destruct
 287.413 -	IMPORT_C static CHlpModel* NewL(RFs& aFs, MHlpModelObserver* aObserver);
 287.414 -	IMPORT_C static CHlpModel* NewLC(RFs& aFs, MHlpModelObserver* aObserver);
 287.415 -	IMPORT_C ~CHlpModel();
 287.416 -
 287.417 -public:	// Opens all the help files in \System\Help
 287.418 -	IMPORT_C void OpenL();
 287.419 -	IMPORT_C void CloseL();
 287.420 -
 287.421 -public: // Opens specific help files
 287.422 -	IMPORT_C void OpenFileL(const TDesC& aFileName);
 287.423 -	IMPORT_C void CloseFileL(const TDesC& aFileName);
 287.424 -
 287.425 -public: // Specialized searching
 287.426 -	IMPORT_C void ContextSearchL(TCoeHelpContext& aContext);
 287.427 -	IMPORT_C void CategoryUIDSearchL(TUid aCategoryUID);
 287.428 -	IMPORT_C void TopicSearchL(const CHlpItem& aHelpItem);
 287.429 -	IMPORT_C void IndexSearchL(const CHlpItem& aHelpItem);
 287.430 -
 287.431 -		// Generic searching
 287.432 -	IMPORT_C void SearchL(TInt aType, TUint32 aId);
 287.433 -	IMPORT_C void SearchL(TInt aType, HBufC* aCriterion=NULL);
 287.434 -	IMPORT_C void SearchL(TInt aType, const TDesC& aCriterion);
 287.435 -
 287.436 -public: // Cancel EFullTextSearch types - will return KErrArgument if not the correct type
 287.437 -	IMPORT_C TInt CancelSearch();
 287.438 -
 287.439 -public: // Assumes that the search has already been performed and that the view is valid
 287.440 -	IMPORT_C void LoadTopicL(CRichText& aRichText, TDes& aTitle);
 287.441 -	IMPORT_C void LoadTopicL(CRichText& aRichText);
 287.442 -	IMPORT_C void LoadTopicL(CHlpTopic* aTopic);
 287.443 -	IMPORT_C void LoadListL(CHlpList* aList);
 287.444 -	IMPORT_C void CategoryListL(CDesCArray* aList);
 287.445 -
 287.446 -public:	
 287.447 -	IMPORT_C void SetZoomSizeL(THlpZoomState aState = EHlpZoomStateMedium);
 287.448 -	IMPORT_C THlpZoomState ZoomSize() const;
 287.449 -	IMPORT_C void SetZoomFactors(THlpZoomState aZoomState, TInt aFactor);
 287.450 -	TInt CurrentZoomFactor() const;
 287.451 -	void RemoveHelpPicture(CHlpPicture* aHelpPicture);
 287.452 -
 287.453 -public: // FROM MPictureFactory
 287.454 -	void NewPictureL(TPictureHeader& aHdr, const CStreamStore& aDeferredPictureStore) const;
 287.455 -
 287.456 -public: // FROM MRichTextStoreResolver
 287.457 -	IMPORT_C const CStreamStore& StreamStoreL(TInt aPos) const;
 287.458 -
 287.459 -public:
 287.460 -	// Check to see if any of the databases have matching meta data
 287.461 -	IMPORT_C TInt MatchUidL(TUid aUid);
 287.462 -
 287.463 -	// Replace the current observer with another
 287.464 -	IMPORT_C void SetObserver(MHlpModelObserver* aObserver);
 287.465 -
 287.466 -public:
 287.467 -	void NotifyHelpModelDestructionToPictures();
 287.468 -
 287.469 -private: // Internal search API
 287.470 -	void DoSearchL(TInt aType, const TDesC& aCriterion);
 287.471 -	void DoNextSearchL();
 287.472 -	void ResetReadyForSearch();
 287.473 -	void ResetViews();
 287.474 -	void SetCriterionL(const TDesC& aCriterion);
 287.475 -
 287.476 -private: // Event management
 287.477 -	void HandleDbEventL(TInt aEvent);
 287.478 -	void ReportEventToObserverL(TInt aEvent);
 287.479 -
 287.480 -private: // Misc internal functions
 287.481 -	inline CHlpDatabase* CurrentDatabase() const;
 287.482 -	inline TInt DatabaseCount() const;
 287.483 -	inline void SetSearchType(TInt aSearchType);
 287.484 -	inline TInt CurrentSearchType() const;
 287.485 -	RDbView* CurrentView() const;
 287.486 -	TBool DiskPresent(TInt aDrive) const;
 287.487 -	CHlpFileList* BuildListForDriveLC(TDriveUnit aDrive, RFs& aFsSession) const;
 287.488 -	static void ResetAndDestroyArrayOfCHlpFileEntry(TAny* aObject);
 287.489 -
 287.490 -private:
 287.491 -	CHlpModel(RFs& aFs, MHlpModelObserver& aObserver);
 287.492 -	void ConstructL();
 287.493 -
 287.494 -private: // Member data
 287.495 -	RFs& iFsSession;
 287.496 -	
 287.497 -	// This is required in order to restore rich text pictures from the database
 287.498 -	CStreamStore* iCurrentRichTextStore;
 287.499 -	
 287.500 -	// Creates our SQL string based upon the search type and criteria
 287.501 -	CHlpSQLSearch* iSearch;
 287.502 -
 287.503 -	// An array of all the help files currently available
 287.504 -	CHlpDatabases* iDatabases;
 287.505 -
 287.506 -	// Receives help model notifications as various actions are performed
 287.507 -	MHlpModelObserver* iObserver;
 287.508 -
 287.509 -	// Were any matching results found for this search
 287.510 -	TBool iFound;
 287.511 -
 287.512 -	// What was being searched for
 287.513 -	HBufC* iCriterion;
 287.514 -
 287.515 -	// What type of search was being performed
 287.516 -	TInt iSearchType;
 287.517 -
 287.518 -	// Which database are we currently searching
 287.519 -	TInt iCurrentDb;
 287.520 -
 287.521 -	// Transient category Uid used when creating category lists
 287.522 -	TUid iTransientCategoryUid;
 287.523 -
 287.524 -	// What zoom size is used
 287.525 -	THlpZoomState iZoomSize;
 287.526 -
 287.527 -	// Array to hold the bitmaps that are currently used in the help rich text
 287.528 -	CArrayPtr<CHlpPicture>* iPictures;
 287.529 -
 287.530 -	// Array to hold the zoom factors that correspond to each zoom size
 287.531 -	CArrayFix<TInt>* iZoomFactors;
 287.532 -	};
 287.533 -
 287.534 -
 287.535 -
 287.536 -
 287.537 -
 287.538 -///////////////////////////////////////////////////////////////////////////////////////
 287.539 -// ----> CHlpModel (inlines)
 287.540 -///////////////////////////////////////////////////////////////////////////////////////
 287.541 -inline TInt CHlpModel::DatabaseCount() const
 287.542 -	{
 287.543 -	return iDatabases->Count();
 287.544 -	}
 287.545 -inline void CHlpModel::SetSearchType(TInt aSearchType)
 287.546 -	{
 287.547 -	iSearchType = aSearchType;
 287.548 -	}
 287.549 -inline CHlpDatabase* CHlpModel::CurrentDatabase() const
 287.550 -	{
 287.551 -	return iDatabases->At(iCurrentDb);
 287.552 -	}
 287.553 -inline TInt CHlpModel::CurrentSearchType() const
 287.554 -	{
 287.555 -	return iSearchType;
 287.556 -	}
 287.557 -
 287.558 -
 287.559 -
 287.560 -#endif
   288.1 --- a/epoc32/include/hlpzoom.h	Tue Mar 16 16:12:26 2010 +0000
   288.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   288.3 @@ -1,83 +0,0 @@
   288.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   288.5 -// All rights reserved.
   288.6 -// This component and the accompanying materials are made available
   288.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   288.8 -// which accompanies this distribution, and is available
   288.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  288.10 -//
  288.11 -// Initial Contributors:
  288.12 -// Nokia Corporation - initial contribution.
  288.13 -//
  288.14 -// Contributors:
  288.15 -//
  288.16 -// Description:
  288.17 -//
  288.18 -
  288.19 -#ifndef __HLPZOOM_H__
  288.20 -#define __HLPZOOM_H__
  288.21 -
  288.22 -// System includes
  288.23 -#include <e32std.h>
  288.24 -
  288.25 -// Classes referenced
  288.26 -class MGraphicsDeviceMap;
  288.27 -
  288.28 -
  288.29 -///////////////////////////////////////////////////////////////////////////////////////
  288.30 -// ----> MHlpZoomStateManager (header)
  288.31 -///////////////////////////////////////////////////////////////////////////////////////
  288.32 -class MHlpZoomStateManager
  288.33 -/**
  288.34 -@internalComponent
  288.35 -@released
  288.36 -*/
  288.37 -	{
  288.38 -public: // Zoom state
  288.39 -	enum THlpZoomState
  288.40 -		{
  288.41 -		EHlpZoomStateSmall = -1,
  288.42 -		EHlpZoomStateNormal = 0,
  288.43 -		EHlpZoomStateLarge = 1
  288.44 -		};
  288.45 -
  288.46 -public: // From MHlpZoomStateManager
  288.47 -	virtual void SetZoomState(THlpZoomState aState) = 0;
  288.48 -	virtual THlpZoomState ZoomState() const = 0;
  288.49 -
  288.50 -public: // From MHlpZoomStateManager
  288.51 -	virtual MGraphicsDeviceMap& ZoomDeviceMap() const = 0;
  288.52 -	virtual TInt ZoomFactorValueForZoomState(THlpZoomState aState) const = 0;
  288.53 -	};
  288.54 -
  288.55 -
  288.56 -
  288.57 -///////////////////////////////////////////////////////////////////////////////////////
  288.58 -// ----> MHlpZoomStateObserver (header)
  288.59 -///////////////////////////////////////////////////////////////////////////////////////
  288.60 -class MHlpZoomStateObserver
  288.61 -/**
  288.62 -@internalComponent
  288.63 -@released
  288.64 -*/
  288.65 -	{
  288.66 -public: // From MHlpZoomStateObserver
  288.67 -	virtual void HandleZoomStateChangedL(MHlpZoomStateManager::THlpZoomState aZoomState) = 0;
  288.68 -	};
  288.69 -
  288.70 -
  288.71 -
  288.72 -///////////////////////////////////////////////////////////////////////////////////////
  288.73 -// ----> MHlpZoomStateChangeNotifier (header)
  288.74 -///////////////////////////////////////////////////////////////////////////////////////
  288.75 -class MHlpZoomStateChangeNotifier : public MHlpZoomStateManager
  288.76 -/**
  288.77 -@internalComponent
  288.78 -@released
  288.79 -*/
  288.80 -	{
  288.81 -public: // From MHlpZoomStateChangeNotifier
  288.82 -	virtual void RegisterForZoomStateChangeNotificationsL(MHlpZoomStateObserver& aObserver) = 0;
  288.83 -	virtual void RegisterForZoomStateChangeNotificationsCancel(MHlpZoomStateObserver& aObserver) = 0;
  288.84 -	};
  288.85 -
  288.86 -#endif
   289.1 --- a/epoc32/include/http.h	Tue Mar 16 16:12:26 2010 +0000
   289.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   289.3 @@ -1,52 +0,0 @@
   289.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   289.5 -// All rights reserved.
   289.6 -// This component and the accompanying materials are made available
   289.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   289.8 -// which accompanies this distribution, and is available
   289.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  289.10 -//
  289.11 -// Initial Contributors:
  289.12 -// Nokia Corporation - initial contribution.
  289.13 -//
  289.14 -// Contributors:
  289.15 -//
  289.16 -// Description:
  289.17 -//
  289.18 -
  289.19 -
  289.20 -
  289.21 -/**
  289.22 - @file http.h
  289.23 - @warning : This file contains Rose Model ID comments - please do not delete
  289.24 - @publishedAll
  289.25 - @released
  289.26 -*/
  289.27 -
  289.28 -#ifndef __HTTP_H__
  289.29 -#define __HTTP_H__ 
  289.30 -
  289.31 -// System includes
  289.32 -#include <httpstringconstants.h>
  289.33 -#include <http/mhttpdatasupplier.h>
  289.34 -#include <http/mhttpfilter.h>
  289.35 -#include <http/mhttpfilterbase.h>
  289.36 -#include <http/mhttptransactioncallback.h>
  289.37 -#include <http/rhttpconnectioninfo.h>
  289.38 -#include <http/rhttpfiltercollection.h>
  289.39 -#include <http/rhttpheaders.h>
  289.40 -#include <http/rhttpmessage.h>
  289.41 -#include <http/rhttppropertyset.h>
  289.42 -#include <http/rhttprequest.h>
  289.43 -#include <http/rhttpresponse.h>
  289.44 -#include <http/rhttpsession.h>
  289.45 -#include <http/rhttptransaction.h>
  289.46 -#include <http/rhttptransactionpropertyset.h>
  289.47 -#include <http/thttpevent.h>
  289.48 -#include <http/thttpfilterhandle.h>
  289.49 -#include <http/thttpfilteriterator.h>
  289.50 -#include <http/thttpfilterregistration.h>
  289.51 -#include <http/thttphdrfielditer.h>
  289.52 -#include <http/thttphdrval.h>
  289.53 -#include <httperr.h>
  289.54 -
  289.55 -#endif // __HTTP_H__
   290.1 --- a/epoc32/include/http/cauthenticationfilterinterface.h	Tue Mar 16 16:12:26 2010 +0000
   290.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   290.3 @@ -1,93 +0,0 @@
   290.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   290.5 -// All rights reserved.
   290.6 -// This component and the accompanying materials are made available
   290.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   290.8 -// which accompanies this distribution, and is available
   290.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  290.10 -//
  290.11 -// Initial Contributors:
  290.12 -// Nokia Corporation - initial contribution.
  290.13 -//
  290.14 -// Contributors:
  290.15 -//
  290.16 -// Description:
  290.17 -//
  290.18 -
  290.19 -
  290.20 -
  290.21 -/**
  290.22 - @file CAuthenticationFilterInterface.h
  290.23 - @warning : This file contains Rose Model ID comments - please do not delete
  290.24 -*/
  290.25 -
  290.26 -#ifndef	__CAUTHENTICATIONFILTERINTERFACE_H__
  290.27 -#define	__CAUTHENTICATIONFILTERINTERFACE_H__
  290.28 -
  290.29 -// System includes
  290.30 -#include <e32base.h>
  290.31 -#include <ecom/ecom.h>
  290.32 -#include <http/rhttpsession.h>
  290.33 -
  290.34 -// Forward declarations
  290.35 -class MHTTPAuthenticationCallback;
  290.36 -
  290.37 -
  290.38 -class CAuthenticationFilterInterface : public CBase
  290.39 -/**
  290.40 -The ECOM interface definition for an HTTP authentication filter.  Implementations
  290.41 -of an authentication filter must inherit this class.
  290.42 -@publishedAll
  290.43 -@released
  290.44 -*/
  290.45 -	{
  290.46 -public: // Methods
  290.47 -	/**
  290.48 -	@fn				InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback)
  290.49 -	Intended Usage:	This method is used to install the authentication filter to the filter queue.
  290.50 -					The returned pointer is not owned as the filters must be self-destroying when
  290.51 -					they are unloaded.
  290.52 -	@param			aSession A handle to the transport session
  290.53 -	@param			aCallback A pointer to the object implementing the callback function
  290.54 -	@return			Pointer to the newly installed plugin
  290.55 -	@pre 			The session had already been setup
  290.56 -	@post			The filter(s) have been installed
  290.57 -	*/
  290.58 -	inline static void InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback);
  290.59 -
  290.60 -	/**
  290.61 -	@fn				~CAuthenticationFilterInterface()
  290.62 -	Intended Usage:	Virtual destructor
  290.63 -	@pre 			The object identified by the destructor key in iEcomDtorID exists
  290.64 -	@post			The object is destroyed
  290.65 -	*/
  290.66 -	inline ~CAuthenticationFilterInterface();
  290.67 -
  290.68 -public:
  290.69 -	struct TAuthenticationParams
  290.70 -		{
  290.71 -		RHTTPSession* iSession;
  290.72 -		MHTTPAuthenticationCallback* iCallback;
  290.73 -		};
  290.74 -
  290.75 -private: // Attributes
  290.76 -	/// The ECom destructor key identifier
  290.77 -	TUid iEcomDtorID;
  290.78 -	};
  290.79 -
  290.80 -//----------------------------------------------------------------------------------------
  290.81 -
  290.82 -inline void CAuthenticationFilterInterface::InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback)
  290.83 -	{
  290.84 -	const TUid KUidAuthenticationFilter = {0x101F447C};
  290.85 -	TAuthenticationParams authParams;
  290.86 -	authParams.iSession = &aSession;
  290.87 -	authParams.iCallback = aCallback;
  290.88 -	REComSession::CreateImplementationL(KUidAuthenticationFilter, _FOFF(CAuthenticationFilterInterface,iEcomDtorID), &authParams);
  290.89 -	}
  290.90 -
  290.91 -inline CAuthenticationFilterInterface::~CAuthenticationFilterInterface()
  290.92 -	{
  290.93 -	REComSession::DestroyedImplementation(iEcomDtorID);
  290.94 -	}
  290.95 -
  290.96 -#endif // __CAUTHENTICATIONFILTERINTERFACE_H__
   291.1 --- a/epoc32/include/http/cecomfilter.h	Tue Mar 16 16:12:26 2010 +0000
   291.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   291.3 @@ -1,120 +0,0 @@
   291.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   291.5 -// All rights reserved.
   291.6 -// This component and the accompanying materials are made available
   291.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   291.8 -// which accompanies this distribution, and is available
   291.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  291.10 -//
  291.11 -// Initial Contributors:
  291.12 -// Nokia Corporation - initial contribution.
  291.13 -//
  291.14 -// Contributors:
  291.15 -//
  291.16 -// Description:
  291.17 -//
  291.18 -
  291.19 -
  291.20 -
  291.21 -/**
  291.22 - @file CEComFilter.h
  291.23 - @warning : This file contains Rose Model ID comments - please do not delete
  291.24 -*/
  291.25 -
  291.26 -#ifndef	__CECOMFILTER_H__
  291.27 -#define	__CECOMFILTER_H__
  291.28 -
  291.29 -// System includes
  291.30 -#include <e32base.h>
  291.31 -#include <ecom/ecom.h>
  291.32 -#include <http/rhttpsession.h>
  291.33 -
  291.34 -/**
  291.35 -The ECom filter interface UID
  291.36 -@publishedAll
  291.37 -@released
  291.38 -*/
  291.39 -const TUid KUidFilterPluginInterface = {0x101F446D}; 
  291.40 -
  291.41 -
  291.42 -//##ModelId=3C4C0F400280
  291.43 -class CEComFilter : public CBase
  291.44 -/**
  291.45 -This class serves as the base class for ECom filter plugins. It provides minimal functionality
  291.46 -to simply install and destroy filters specified by their UID or data type. The RHTTPSession
  291.47 -passed in is passed onto the filter as a TAny* pointer and therefore must be casted back to
  291.48 -an RHTTPSession pointer by the filter.
  291.49 -@publishedAll
  291.50 -@released
  291.51 -*/
  291.52 -	{
  291.53 -public: // Methods
  291.54 -	/**
  291.55 -	@fn				InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid)
  291.56 -	Intended Usage:	This method is used to install filters to the filter queue. The implementation
  291.57 -					UID of the filter plugin is passed to identify the plugin that is required.
  291.58 -					The returned pointer is not owned as the filters must be self-destroying when
  291.59 -					they are unloaded.
  291.60 -	@param			aSession A handle to the transport session
  291.61 -	@param			aEComFilterUid The implementation UID of the plugin
  291.62 -	@return			Pointer to the newly installed plugin
  291.63 -	@pre 			The session had already been setup
  291.64 -	@post			The filter(s) have been installed
  291.65 -	*/
  291.66 -	//##ModelId=3C4C0F4002A8
  291.67 -	inline static CEComFilter* InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid);
  291.68 -
  291.69 -	/**
  291.70 -	@fn				InstallFilterL(RHTTPSession aSession, const TDesC8& aEComFilterDataType)
  291.71 -	Intended Usage:	This method is used to install filters to the filter queue. The implementation
  291.72 -					UID of the filter plugin is passed to identify the plugin that is required.
  291.73 -					The returned pointer is not owned as the filters must be self-destroying when
  291.74 -					they are unloaded.
  291.75 -	@param			aSession A handle to the transport session
  291.76 -	@param			aEComFilterDataType A descriptor containing the datatype of the filter to load
  291.77 -	@return			Pointer to the newly installed plugin
  291.78 -	@pre 			The session had already been setup
  291.79 -	@post			The filter(s) have been installed
  291.80 -	*/
  291.81 -	//##ModelId=3C4C0F4002AB
  291.82 -	inline static CEComFilter* InstallFilterL(RHTTPSession aSession, const TDesC8& aEComFilterDataType);
  291.83 -
  291.84 -	/**
  291.85 -	@fn				~CEComFilter()
  291.86 -	Intended Usage:	Virtual destructor
  291.87 -	@pre 			The object identified by the destructor key in iEcomDtorID exists
  291.88 -	@post			The object is destroyed
  291.89 -	*/
  291.90 -	//##ModelId=3C4C0F40029E
  291.91 -	inline ~CEComFilter();
  291.92 -
  291.93 -private: // Attributes
  291.94 -	/// The ECom destructor key identifier
  291.95 -	//##ModelId=3C4C0F400297
  291.96 -	TUid iEcomDtorID;
  291.97 -	};
  291.98 -
  291.99 -//----------------------------------------------------------------------------------------
 291.100 -
 291.101 -inline CEComFilter* CEComFilter::InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid)
 291.102 -	{
 291.103 -	TAny* filterPlugin = REComSession::CreateImplementationL(aEComFilterUid, _FOFF(CEComFilter,iEcomDtorID), &aSession);
 291.104 -	return REINTERPRET_CAST(CEComFilter*, filterPlugin);
 291.105 -	}
 291.106 -
 291.107 -inline CEComFilter* CEComFilter::InstallFilterL(RHTTPSession aSession,const TDesC8& aEComFilterDataType)
 291.108 -	{
 291.109 -	TEComResolverParams resolverParams;
 291.110 -	resolverParams.SetDataType(aEComFilterDataType);
 291.111 -	// This will leave if the plugin is not found
 291.112 -	TAny* filterPlugin = REComSession::CreateImplementationL(KUidFilterPluginInterface, 
 291.113 -											_FOFF(CEComFilter,iEcomDtorID), 
 291.114 -											&aSession, resolverParams);
 291.115 -	return REINTERPRET_CAST(CEComFilter*, filterPlugin);
 291.116 -	}
 291.117 -
 291.118 -inline CEComFilter::~CEComFilter()
 291.119 -	{
 291.120 -	REComSession::DestroyedImplementation(iEcomDtorID);
 291.121 -	}
 291.122 -
 291.123 -#endif // __CECOMFILTER_H__
   292.1 --- a/epoc32/include/http/framework/cheadercodec.h	Tue Mar 16 16:12:26 2010 +0000
   292.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   292.3 @@ -1,318 +0,0 @@
   292.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   292.5 -// All rights reserved.
   292.6 -// This component and the accompanying materials are made available
   292.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   292.8 -// which accompanies this distribution, and is available
   292.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  292.10 -//
  292.11 -// Initial Contributors:
  292.12 -// Nokia Corporation - initial contribution.
  292.13 -//
  292.14 -// Contributors:
  292.15 -//
  292.16 -// Description:
  292.17 -//
  292.18 -
  292.19 -
  292.20 -
  292.21 -/**
  292.22 - @file CHeaderCodec.h
  292.23 - @warning : This file contains Rose Model ID comments - please do not delete
  292.24 -*/
  292.25 -
  292.26 -#ifndef __CHEADERCODEC_H__
  292.27 -#define __CHEADERCODEC_H__
  292.28 -
  292.29 -// System includes
  292.30 -#include <e32base.h>
  292.31 -#include <http/framework/rheaderfield.h>
  292.32 -
  292.33 -// Forward declarations
  292.34 -class CHeaderWriter;
  292.35 -class CHeaderReader;
  292.36 -
  292.37 -
  292.38 -//##ModelId=3C4C18850126
  292.39 -class CHeaderCodec : public CBase
  292.40 -/**
  292.41 -An abstract HTTP header codec.  
  292.42 -
  292.43 -Each instance of a concrete subclass of CHeaderCodec is associated with, and owned
  292.44 -by, a specific	CProtocolHandler.  It provides on-demand encoding/decoding of
  292.45 -HTTP header data, between the generic format used by clients/filters to formulate
  292.46 -requests and interpret responses, and the raw format used by
  292.47 -the transport handlers (and origin servers/gateways/etc.)
  292.48 -
  292.49 -The CHeaderCodec has an associated instance of a sub-class of each of
  292.50 -CHeaderReader and CHeaderWriter.  It delegates the actual encoding and
  292.51 -decoding function to these instances.
  292.52 -
  292.53 -Header codecs provide a mechanism for extensibility whereby if one codec can't
  292.54 -decode (or encode) a given header, it locates a codec that can, and then delegates
  292.55 -the task to that codec instead.
  292.56 -@publishedAll
  292.57 -@released
  292.58 -*/
  292.59 -	{
  292.60 -public: // methods
  292.61 -
  292.62 -/** 
  292.63 -	Intended Usage:	Destructor - cleans up and releases resources to the system.
  292.64 -*/
  292.65 -	//##ModelId=3C4C18850194
  292.66 -	IMPORT_C virtual ~CHeaderCodec();
  292.67 -
  292.68 -/**
  292.69 -	Encode the supplied header field.  This method uses the associated
  292.70 -	concrete CHeaderWriter object to do a conversion of the field into
  292.71 -	raw form from the generic internal representation.
  292.72 -
  292.73 -	@param aHeader (in) A proxy for the header field to be encoded
  292.74 -	@leave KErrNotSupported if a codec that supports encoding this header
  292.75 -		   cannot be found
  292.76 -*/
  292.77 -	//##ModelId=3C4C1885018C
  292.78 -	IMPORT_C void EncodeHeaderL(RHeaderField& aHeader) const;
  292.79 -
  292.80 -/**
  292.81 -	Decode the supplied header field.  This method uses the associated
  292.82 -	concrete CHeaderReader object to do a conversion of the field into
  292.83 -	the generic internal representation from the raw form.
  292.84 -
  292.85 -	@param aHeader (in) A proxy for the header field to be decoded
  292.86 -	
  292.87 -	@leave KErrNotSupported if a codec that supports decoding this header
  292.88 -   		   cannot be found
  292.89 -
  292.90 -*/
  292.91 -	//##ModelId=3C4C1885018A
  292.92 -	IMPORT_C void DecodeHeaderL(RHeaderField& aHeader) const;
  292.93 -
  292.94 -/**
  292.95 -	Intended Usage: Concrete header codec classes must implement this method to
  292.96 -	indicate to the framework whether their concrete CHeaderWriter is
  292.97 -	capable of encoding the named header field.
  292.98 -	@param aHeaderField	(in) A proxy for the header field to be encoded
  292.99 -	@return A flag indicating ETrue if the field can be encoded.
 292.100 -*/
 292.101 -	//##ModelId=3C4C18850181
 292.102 -	virtual TBool CanEncode(RStringF aHeaderField) const = 0;
 292.103 -
 292.104 -/**
 292.105 -	Intended Usage: Concrete header codec classes must implement this method to
 292.106 -					indicate to the framework whether their concrete CHeaderReader is
 292.107 -					capable of decoding the named header field.
 292.108 -	@param			aHeaderField		(in) A proxy for the header field to be encoded
 292.109 -	@return			A flag indicating ETrue if the field can be decoded.
 292.110 - */
 292.111 -	//##ModelId=3C4C18850178
 292.112 -	virtual TBool CanDecode(RStringF aHeaderField) const = 0;
 292.113 -
 292.114 -/**
 292.115 -	Intended Usage: Concrete header codecs must be implement this method if they wish to
 292.116 -					delegate the encoding/decoding of particular header fields to a
 292.117 -					different codec.  
 292.118 -					This would be done if the codec doesn't have the ability itself to
 292.119 -					do the encode/decode but can locate an alternative that does. This 
 292.120 -					function may leave with a Standard Symbian OS error code. eg. KErrNoMemory
 292.121 -
 292.122 -					The caller takes ownership of the returned codec.
 292.123 -	@param aHeaderField (in) A proxy for the header field to be encoded
 292.124 -	@return A pointer to the new CHeaderCodec, or NULL if one couldn't be found.
 292.125 -	@leave KErrNoMemory, Not enough memory to create object.	
 292.126 -*/
 292.127 -	//##ModelId=3C4C18850176
 292.128 -	virtual CHeaderCodec* FindDelegateCodecL(RStringF aHeaderField) const = 0;
 292.129 -
 292.130 -protected: // methods
 292.131 -
 292.132 -/**
 292.133 -	Default constructor.
 292.134 - */
 292.135 -	//##ModelId=3A914DF20273
 292.136 -	IMPORT_C CHeaderCodec();
 292.137 -
 292.138 -/**
 292.139 -	Second phase construction in which any necessary allocation is done
 292.140 -	Implementations of this interface may leave with standard erros like KErrNoMemory if there is
 292.141 -	insufficient memory for allocation in the second phase.
 292.142 - */
 292.143 -	//##ModelId=3C4C1885016E
 292.144 -	IMPORT_C void ConstructL();
 292.145 -
 292.146 -protected: // attributes
 292.147 -
 292.148 -	/** The owned header writer object that does actual encoding of header fields.
 292.149 -	*/
 292.150 -	//##ModelId=3C4C18850164
 292.151 -	CHeaderWriter* iWriter;
 292.152 -
 292.153 -	/** The owned header reader object that does actual decoding of header fields.
 292.154 -	*/
 292.155 -	//##ModelId=3C4C1885015A
 292.156 -	CHeaderReader* iReader;
 292.157 -
 292.158 -private: // methods
 292.159 -
 292.160 -/**	
 292.161 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 292.162 - */
 292.163 -	//##ModelId=3C4C1885016D
 292.164 -	inline virtual void Reserved1();
 292.165 -
 292.166 -/**	
 292.167 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 292.168 - */
 292.169 -	//##ModelId=3C4C1885016C
 292.170 -	inline virtual void Reserved2();
 292.171 -
 292.172 -private: // attributes
 292.173 -
 292.174 -	/** The most recently-obtained delegate codec
 292.175 -	*/
 292.176 -	//##ModelId=3C4C18850150
 292.177 -	mutable CHeaderCodec* iDelegateCodec;
 292.178 -	};
 292.179 -
 292.180 -
 292.181 -//##ModelId=3C4C188601D1
 292.182 -class CHeaderWriter : public CBase
 292.183 -/**
 292.184 -An abstract HTTP header encoder.  CHeaderWriter provides an interface used by its
 292.185 -owning codec to do conversion of header data from the generic internal header
 292.186 -representation to the raw representation used for a particular protocol/transport.
 292.187 -Specific sub-classes of CHeaderWriter are associated with specific protocol handlers.
 292.188 -@publishedAll
 292.189 -@released
 292.190 -*/
 292.191 -	{
 292.192 -public: // methods
 292.193 -
 292.194 -/** 
 292.195 -	Intended Usage:	Destructor - cleans up and release resources to the system.
 292.196 -*/
 292.197 -	//##ModelId=3C4C188601FC
 292.198 -	IMPORT_C virtual ~CHeaderWriter();
 292.199 -
 292.200 -/**
 292.201 -	Intended Usage:	Encodes the supplied header field.  This method does a conversion
 292.202 -					of the field into raw form from the generic internal representation.
 292.203 -
 292.204 -					Implementations of this interface may leave with any of KErrNotSupported, KErrHttpEncodeDoWWWAuthenticate,
 292.205 -					KErrHttpEncodeAuthorization, KErrHttpEncodeDoAge, KErrHttpEncodeDoVary, KErrHttpEncodeDoContentLanguage.
 292.206 -
 292.207 -					Specific header writer sub-classes must implement this method.
 292.208 -	@param			aHeader		(in) A proxy for the header field to be encoded
 292.209 - */
 292.210 -	//##ModelId=3C4C188601FA
 292.211 -	virtual void EncodeHeaderL(RHeaderField& aHeader) = 0;
 292.212 -
 292.213 -protected: // methods
 292.214 -
 292.215 -/**
 292.216 -	Default constructor.
 292.217 - */
 292.218 -	IMPORT_C CHeaderWriter();
 292.219 -
 292.220 -/**
 292.221 -	Second phase construction in which any necessary allocation is done
 292.222 -	Implementations of this interface may leave with standard errors like KErrNoMemory.
 292.223 - */
 292.224 -	//##ModelId=3C4C188601F9
 292.225 -	IMPORT_C void ConstructL();
 292.226 -
 292.227 -private: // methods
 292.228 -
 292.229 -/**	
 292.230 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 292.231 - */
 292.232 -	//##ModelId=3C4C188601F1
 292.233 -	inline virtual void Reserved1();
 292.234 -
 292.235 -/**	
 292.236 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 292.237 - */
 292.238 -	//##ModelId=3C4C188601F0
 292.239 -	inline virtual void Reserved2();
 292.240 -	};
 292.241 -
 292.242 -
 292.243 -//##ModelId=3C4C188602FE
 292.244 -class CHeaderReader : public CBase
 292.245 -/**
 292.246 -An abstract HTTP header decoder.  CHeaderReader provides an interface used by its
 292.247 -owning codec to do conversion of header data from the raw representation used for
 292.248 -a particular protocol/transport to the generic internal header representation.
 292.249 -Specific sub-classes of CHeaderWriter are associated with specific protocol
 292.250 -handlers.
 292.251 -@publishedAll
 292.252 -@released
 292.253 -*/
 292.254 -	{
 292.255 -public: // methods
 292.256 -
 292.257 -/** 
 292.258 -	Intended Usage:	Destructor - cleans up and release resources to the system.
 292.259 -*/
 292.260 -	//##ModelId=3C4C1886031E
 292.261 -	IMPORT_C virtual ~CHeaderReader();
 292.262 -
 292.263 -/**
 292.264 -	Intended Usage:	Decodes the supplied header field.  This method does a conversion
 292.265 -	of the field from the generic internal representation into raw form.
 292.266 -
 292.267 -	Specific header reader sub-classes must implement this method.
 292.268 -
 292.269 -	Implementations of this interface may leave with any of KErrHttpDecodeAccept, KErrHttpDecodeAcceptCharset, 
 292.270 -	KErrHttpDecodeAcceptLanguage, KErrHttpDecodeAcceptEncoding, KErrNotSupported.
 292.271 -
 292.272 -	@param aHeader (in) A proxy for the header field to be decoded
 292.273 -	
 292.274 -*/
 292.275 -	//##ModelId=3C4C1886031C
 292.276 -	virtual void DecodeHeaderL(RHeaderField& aHeader) = 0;
 292.277 -
 292.278 -protected: // methods
 292.279 -
 292.280 -/**
 292.281 -	Default constructor.
 292.282 - */
 292.283 -	IMPORT_C CHeaderReader();
 292.284 -
 292.285 -/**
 292.286 -	Second phase construction in which any necessary allocation is done
 292.287 -	Implementations of this interface may leave with standard errors like KErrNoMemory.
 292.288 - */
 292.289 -	//##ModelId=3C4C18860315
 292.290 -	IMPORT_C void ConstructL();
 292.291 -
 292.292 -private: // methods
 292.293 -
 292.294 -/**	
 292.295 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 292.296 - */
 292.297 -	//##ModelId=3C4C18860314
 292.298 -	inline virtual void Reserved1();
 292.299 -
 292.300 -/**	
 292.301 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 292.302 - */
 292.303 -	//##ModelId=3C4C18860313
 292.304 -	inline virtual void Reserved2();
 292.305 -	};
 292.306 -
 292.307 -
 292.308 -inline void CHeaderCodec::Reserved1()
 292.309 -	{}
 292.310 -inline void CHeaderCodec::Reserved2()
 292.311 -	{}
 292.312 -inline void CHeaderWriter::Reserved1()
 292.313 -	{}
 292.314 -inline void CHeaderWriter::Reserved2()
 292.315 -	{}
 292.316 -inline void CHeaderReader::Reserved1()
 292.317 -	{}
 292.318 -inline void CHeaderReader::Reserved2()
 292.319 -	{}
 292.320 -
 292.321 -#endif /* __CHEADERCODEC_H__ */
   293.1 --- a/epoc32/include/http/framework/cprotocolhandler.h	Tue Mar 16 16:12:26 2010 +0000
   293.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   293.3 @@ -1,555 +0,0 @@
   293.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   293.5 -// All rights reserved.
   293.6 -// This component and the accompanying materials are made available
   293.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   293.8 -// which accompanies this distribution, and is available
   293.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  293.10 -//
  293.11 -// Initial Contributors:
  293.12 -// Nokia Corporation - initial contribution.
  293.13 -//
  293.14 -// Contributors:
  293.15 -//
  293.16 -// Description:
  293.17 -// please do not delete
  293.18 -// 
  293.19 -//
  293.20 -
  293.21 -
  293.22 -
  293.23 -/**
  293.24 - @file CProtocolHandler.h
  293.25 - @warning : This file contains Rose Model ID comments 
  293.26 -*/
  293.27 -
  293.28 -#ifndef __CPROTOCOLHANDLER_H__
  293.29 -#define __CPROTOCOLHANDLER_H__
  293.30 -
  293.31 -// System includes
  293.32 -#include <e32base.h>
  293.33 -#include <http/framework/httplogger.h>
  293.34 -#include <http/mhttpfilter.h>
  293.35 -#include <http/rhttpsession.h>
  293.36 -
  293.37 -// Forward declarations
  293.38 -class CHeaderCodec;
  293.39 -class CProtTransaction;
  293.40 -class CSecurityPolicy;
  293.41 -class MProtHandlerInterface;
  293.42 -
  293.43 -/**
  293.44 -The ECom protocol handler plugin interface UID.
  293.45 -@publishedAll
  293.46 -@released
  293.47 -*/
  293.48 -const TUid KUidProtocolHandlerPluginInterface = {0x1000A449};
  293.49 -
  293.50 -// 
  293.51 -/**
  293.52 -Defined active object priorities for the Protocol Handler
  293.53 -@publishedAll
  293.54 -@released
  293.55 -*/
  293.56 -const TInt KProtocolHandlerActivePriority = CActive::EPriorityStandard;
  293.57 -/**
  293.58 -Defined active object priorities for the Transaction
  293.59 -@publishedAll
  293.60 -@released
  293.61 -*/
  293.62 -const TInt KTransactionActivePriority = KProtocolHandlerActivePriority+1;
  293.63 -
  293.64 -
  293.65 -//##ModelId=3C4C186A02A3
  293.66 -class CProtocolHandler : public CActive, public MHTTPFilter
  293.67 -/**
  293.68 -An abstract protocol handler.  Protocol handlers are required to
  293.69 -act as the bridge between abstract representations of sessions, transactions and
  293.70 -headers (the client side of the HTTP architecture) and specific comms transports
  293.71 -(the network side of the architecture).
  293.72 -
  293.73 -Each instance of a concrete subclass of CProtocolHandler is associated
  293.74 -with a specific	client session, and hence with a particular choice of proxy type,
  293.75 -and by implication, transport type.  It is designed to appear like a filter in
  293.76 -order to be placed at the end of a session's filter queue.  This allows it to 
  293.77 -receive transaction-related events in the same way that any other filter
  293.78 -(or indeed, the client) does.  An active object, it may implement a queuing
  293.79 -system for submitted transactions, according to the chosen internal service
  293.80 -model.
  293.81 -
  293.82 -In order to divide the abstract functionality associated with handling the HTTP
  293.83 -protocol handler from the specifics needed for a particular choice of transport,
  293.84 -this class defines a number of pure virtual methods which allow it to defer
  293.85 -transport-specific choices or mechamisms.  These are mainly concerned with the
  293.86 -service model (ie. allocation of transactions to objects that can handle them), the
  293.87 -codec model (ie. on-demand encoding/decoding of	HTTP header data) and general
  293.88 -housekeeping (eg. instantiation and cleanup of objects at particular points in
  293.89 -a transaction lifecycle).
  293.90 -@publishedAll
  293.91 -@released
  293.92 -*/
  293.93 -	{
  293.94 -public:	// Methods
  293.95 -
  293.96 -/**	
  293.97 -	Standard factory constructor. This is the ECOM interface class from
  293.98 -	which concrete protocol handlers are derived. The method queries
  293.99 -	ECOM for the protocol handler plugin that matches the protocol
 293.100 -	description passed in.
 293.101 -	@param			aProtocol	(in) The name of the protocol required.
 293.102 -	@param			aSession	(in) The HTTP session on which this protocol handler
 293.103 -									 will be installed.
 293.104 -	@leave			KErrNoMemory if there was not enough memory to create the object.
 293.105 -*/
 293.106 -	//##ModelId=3C4C186B007E
 293.107 -	static CProtocolHandler* NewL(const TDesC8& aProtocol, RHTTPSession aSession);
 293.108 -
 293.109 -/**	
 293.110 -	Intended Usage:	Class destructor.
 293.111 -*/
 293.112 -	//##ModelId=3C4C186B0075
 293.113 -	IMPORT_C virtual ~CProtocolHandler();
 293.114 -
 293.115 -/**	
 293.116 -	Obtain the protocol handler's header codec.
 293.117 -	@return			The header codec owned by this protocol handler, or NULL if one
 293.118 -					has not yet been created.
 293.119 -	@see CHeaderCodec
 293.120 -*/
 293.121 -	//##ModelId=3C4C186B0074
 293.122 -	IMPORT_C CHeaderCodec* Codec() const;
 293.123 -
 293.124 -
 293.125 -/** 
 293.126 -	Get the Server Certificate for the current session.
 293.127 -	@return	The certificate information or NULL if it is not available
 293.128 -*/
 293.129 -	IMPORT_C const CCertificate* SessionServerCert();
 293.130 -
 293.131 -/** 
 293.132 -	Get the Server Certificate for the specified transaction.
 293.133 -	@param	aTransaction The transaction for which the certificate is requested
 293.134 -	@return	The certificate information or NULL if it is not available
 293.135 -*/
 293.136 -	IMPORT_C const CCertificate* TransactionServerCert( RHTTPTransaction aTransaction);
 293.137 -
 293.138 -public:	// Methods to be implemented in specific protocol handlers
 293.139 -
 293.140 -/** 
 293.141 -	Intended Usage:	Get the Server Certificate for the current session.
 293.142 -	@param	aServerCert A TCertInfo which will be filled with the certificate information
 293.143 -	@return	An error code.  KErrNone if aServerCert has been completed, otherwise one of 
 293.144 -	the system wide error codes
 293.145 -*/
 293.146 -	virtual TInt SessionServerCert(TCertInfo& aServerCert) = 0;
 293.147 -
 293.148 -/** 
 293.149 -	Intended Usage:	Get the Server Certificate for the specified transaction.
 293.150 -	@param	aServerCert A TCertInfo which will be filled with the certificate information
 293.151 -	@param	aTransaction The transaction for which the certificate is requested
 293.152 -	@return	An error code.  KErrNone if aServerCert has been completed, otherwise one of 
 293.153 -			the system wide error codes
 293.154 -*/
 293.155 -	virtual TInt TransactionServerCert(TCertInfo& aServerCert, RHTTPTransaction aTransaction) = 0;
 293.156 -
 293.157 -public:	// Methods from MHTTPFilterBase
 293.158 -	
 293.159 -/**
 293.160 -	Intended Usage:	Called when the filter's registration conditions are satisfied for events that
 293.161 -	occur on a transaction. Any Leaves must be handled by the appropriate MHFRunError.
 293.162 -	Note that this function is not allowed to leave if called with certain events. 
 293.163 -	@see THTTPEvent
 293.164 -	@param aTransaction The transaction that the event has occurred on.
 293.165 -	@param aEvent aEvent The event that has occurred.
 293.166 -	@leave Standard Symbian OS error codes. e.g. KErrNoMemory.
 293.167 -	@see MHTTPFilterBase	
 293.168 -*/
 293.169 -	//##ModelId=3C4C186B0061
 293.170 -	IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
 293.171 -
 293.172 -/**
 293.173 -	Intended Usage:	Called when the filters registration conditions are satisfied for events that occur
 293.174 -	on the session. Any leaves must be handled by the appropriate MHFRunError.
 293.175 -	@param aEvent The session event that has occured.
 293.176 -	@leave KErrNoMemory if an attempt to allocate memory has failed
 293.177 -	@leave KErrHttpCantResetRequestBody if the request body needed to be rewound by the client
 293.178 -		   but it doesn't support this
 293.179 -	@see MHTTPFilterBase
 293.180 -*/
 293.181 -	//##ModelId=3C4C186B0057
 293.182 -	IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent);
 293.183 -
 293.184 -/**
 293.185 -	Intended Usage:	Called when RunL leaves from a transaction event. This works in the same
 293.186 -	way as CActve::RunError; return KErrNone if you have handled the error.
 293.187 -	If you don't completely handle the error, a panic will occur.
 293.188 -	@param aError The leave code that RunL left with.
 293.189 -	@param aTransaction The transaction that was being processed.
 293.190 -	@param aEvent The Event that was being processed.
 293.191 -	@return KErrNone if the error has been cancelled or the code
 293.192 -			of the continuing error otherwise.
 293.193 -	@see MHTTPFilterBase
 293.194 -*/
 293.195 -	//##ModelId=3C4C186B0043
 293.196 -	IMPORT_C virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
 293.197 -
 293.198 -/**
 293.199 -	Intended Usage:	Called when MHFRunL leaves from a session event. This works in the same
 293.200 -	way as CActve::RunError. If you don't completely handle the error, a panic will occur.
 293.201 -	@param aError The leave code that RunL left with.
 293.202 -	@param aEvent The Event that was being processed.
 293.203 -	@return KErrNone if the error has been cancelled or the code
 293.204 -			of the continuing error otherwise.	
 293.205 -	@see MHTTPFilterBase
 293.206 -*/
 293.207 -	//##ModelId=3C4C186B0038	
 293.208 -	IMPORT_C virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent);
 293.209 -
 293.210 -public:	// Methods from MHTTPFilter
 293.211 -
 293.212 -/** 
 293.213 -	Intended Usage:	Called when the filter is being removed from a session's filter queue.
 293.214 -	@param aSession The session it's being removed from
 293.215 -	@param aHandle The filter handle. Complex filters may need to 
 293.216 -				   refer to this to keep track of which particular registration is
 293.217 -				   being unloaded.
 293.218 -	@see MHTTFilter
 293.219 -*/
 293.220 -	//##ModelId=3C4C186B0025
 293.221 -	IMPORT_C virtual void MHFUnload(RHTTPSession aSession, THTTPFilterHandle aHandle);
 293.222 -
 293.223 -/** 
 293.224 -	Intended Usage:	Called when the filter is being added to the session's filter queue.
 293.225 -	@param aSession The session it's being added to.
 293.226 -	@param aHandle The filter handle. Complex filters may need to keep
 293.227 -				   track of this, for instance if generating events in response to
 293.228 -				   external stimuli
 293.229 -	@see MHTTFilter
 293.230 - */
 293.231 -	//##ModelId=3C4C186B001A
 293.232 -	IMPORT_C virtual void MHFLoad(RHTTPSession aSession, THTTPFilterHandle aHandle);
 293.233 -
 293.234 -protected: // callbacks/methods for sub-classes
 293.235 -
 293.236 -/**	
 293.237 -	Callback method for concrete protocol handler sub-classes to
 293.238 -	inform the base protocol handler that a transaction has completed.
 293.239 -	The concrete protocol handler must call this method in order to
 293.240 -	supply a completion event that will be sent to the client.
 293.241 -	In addition, the method allows the base protocol handler to do some
 293.242 -	queue management.
 293.243 -	@param			aTrans			(in) the completed transaction
 293.244 -	@param			aEventStatus	(in) an event to be sent back to the client along
 293.245 -										 the filter queue
 293.246 -	@leave			THTTPPanic::EInvalidFilterHandle if unable to send event.
 293.247 - */
 293.248 -	//##ModelId=3C4C186B0010
 293.249 -	IMPORT_C void TransactionCompletedL(RHTTPTransaction aTrans, THTTPEvent aEventStatus);
 293.250 -
 293.251 -/**	
 293.252 -	Obtain the number of currently active transactions
 293.253 -	@return			The number of currently active transactions
 293.254 - */
 293.255 -	//##ModelId=3C4C186B0006
 293.256 -	IMPORT_C TInt NumActiveTransactions() const;
 293.257 -
 293.258 -/**	
 293.259 -	Callback method for concrete protocol handler sub-classes to
 293.260 -	inform the base protocol handler that a transaction has failed
 293.261 -	utterly. (i.e. the sub-class used aTrans.Fail().) The base protocol
 293.262 -	handler sets the transaction state to be cancelled.
 293.263 -	@param			aTrans			(in) the completed transaction
 293.264 - */
 293.265 -	//##ModelId=3C4C186A03E5
 293.266 -	IMPORT_C void TransactionFailed(RHTTPTransaction aTrans);
 293.267 -
 293.268 -/**	
 293.269 -	Completes this active object - allows the protocol handler to
 293.270 -	reevaluate the queue of pending transactions and service new ones
 293.271 -	if possible.
 293.272 - */
 293.273 -	//##ModelId=3C4C186A03E4
 293.274 -	IMPORT_C void CompleteSelf();
 293.275 -
 293.276 -/**	
 293.277 -	Searches the array of CProtTransaction objects to if the
 293.278 -	aTransaction object is wrapped by one of them. If one is found aProtTransaction is set to it
 293.279 -	@param aTransaction	The transaction to search for.
 293.280 -	@param aProtTransaction	Reference to a CProtTransaction which will be set to the
 293.281 -		   CProtTransaction which wraps the RHTTPTransaction.
 293.282 -	@return If a CProtTransaction object is found, a positive value is
 293.283 -			returned that is the index to that object in the array. If 
 293.284 -			no object is found, KErrNotFound is returned.
 293.285 - */
 293.286 -	IMPORT_C TInt FindTransaction(RHTTPTransaction aTransaction, const CProtTransaction*& aProtTransaction) const;
 293.287 -
 293.288 -private: // methods to be implemented in specific protocol handlers
 293.289 -
 293.290 -/**	Intended usage:	Creates the specific type of codec required for a specific type
 293.291 -					of protocol handler.
 293.292 -					
 293.293 -					This must be implemented by a concrete protocol handler sub-class.
 293.294 - */
 293.295 -	//##ModelId=3C4C186A03DC
 293.296 -	virtual void CreateCodecL() = 0;
 293.297 -
 293.298 -/**	Intended Usage:	Creates a representation of a client transaction to be used in the
 293.299 -					protocol handler.  Since the protocol handler deals with the low-
 293.300 -					level data for a transaction as sent over a particular transport,
 293.301 -					an appropriate CProtTransaction-derived class is used that owns a
 293.302 -					CRxData and a CTxData to handle the low-level data.
 293.303 -					
 293.304 -					This must be implemented by a concrete protocol handler sub-class.
 293.305 -	@leave			KErrNoMemory if there was not enough memory to create the object.
 293.306 -					create the object.
 293.307 -	@param			aTransaction	The RHTTPTransaction object associated with
 293.308 -									this CProtTransaction object.
 293.309 -	@return			A pointer to a created CProtTransaction-derived class.
 293.310 -	@see			CRxData
 293.311 -	@see			CTxData
 293.312 - */
 293.313 -	//##ModelId=3C4C186A03DA
 293.314 -	virtual CProtTransaction* CreateProtTransactionL(RHTTPTransaction aTransaction) = 0;
 293.315 -
 293.316 -/**	Intended Usage:	Attempt to service the transaction.  This implies that the concrete
 293.317 -					protocol handler will allocate some transport resources to the
 293.318 -					transaction - which could fail if the protocol handler has hit an
 293.319 -					internal limit of resources or bandwidth.
 293.320 -					Implementations of this interface may leave with any of KErrHttpInvalidUri,
 293.321 -					KErrGeneral, KErrNoMemory
 293.322 -					
 293.323 -					This must be implemented by a concrete protocol handler sub-class.
 293.324 -	@param			aTrans	The pending protocol transaction object which is to be
 293.325 -							serviced.
 293.326 -	@return			A flag that indicates if the transaction can be serviced immediately.
 293.327 - */
 293.328 -	//##ModelId=3C4C186A03D0
 293.329 -	virtual TBool ServiceL(CProtTransaction& aTrans) = 0;
 293.330 -
 293.331 -/**	Intended Usage:	Called when the RHTTPTransaction object corresponding to aTrans has
 293.332 -					been closed by the client. This allows the concrete protocol handler
 293.333 -					to do any cleanup required for this particular transaction.
 293.334 -
 293.335 -					Ownership of the CProtTransaction object is transferred back to the
 293.336 -					concrete protocol handler, which then has deletion responsibility
 293.337 -					for it.  By the time this function has been called, the base
 293.338 -					protocol handler will have dequeued the transaction.
 293.339 -					
 293.340 -					The client's RHTTPTransaction will be closed when this function
 293.341 -					returns,  so it is not possible to send events to the client during
 293.342 -					the function's execution.
 293.343 -					
 293.344 -					This must be implemented by a concrete protocol handler sub-class.
 293.345 -	@param			aTrans		(in) A pointer to the transaction about to be closed.
 293.346 - */
 293.347 -	//##ModelId=3C4C186A03C6
 293.348 -	virtual void ClosedTransactionHook(CProtTransaction* aTrans) = 0;
 293.349 -
 293.350 -/**	Intended Usage:	Called when the RHTTPTransaction object corresponding to aTrans has
 293.351 -					been cancelled by the client or an intermediate filter. This allows
 293.352 -					the concrete protocol handler to do any cleanup and to perform the
 293.353 -					necessary actions for cancellation on its transport layer.
 293.354 -					
 293.355 -					This must be implemented by a concrete protocol handler sub-class.
 293.356 -	@param			aTrans		(in) A reference to the transaction being cancelled.
 293.357 - */
 293.358 -	//##ModelId=3C4C186A03B3
 293.359 -	virtual void CancelTransactionHook(CProtTransaction& aTransaction) = 0;
 293.360 -
 293.361 -/**	Intended Usage:	Called to notify the concrete protocol handler that new request
 293.362 -					body data is available for transmission.
 293.363 -					
 293.364 -					This must be implemented by a concrete protocol handler sub-class.
 293.365 -	@param			aTrans		(in) A reference to the transaction whose request body
 293.366 -									 has new data available.
 293.367 - */
 293.368 -	//##ModelId=3C4C186A03A8
 293.369 -	virtual void NotifyNewRequestBodyPart(CProtTransaction& aTransaction) = 0;
 293.370 -
 293.371 -protected: // Methods inherited from CActive
 293.372 -
 293.373 -/**	Intended Usage:	Do some processing when a previous asynchronous request made by
 293.374 -					this object has completed.
 293.375 - */
 293.376 -	//##ModelId=3C4C186A0377
 293.377 -	IMPORT_C virtual void RunL();
 293.378 -
 293.379 -/**	Intended Usage:	Do any cleanup required should RunL leave
 293.380 -	@param			aError		(in) The error code that RunL left with
 293.381 -	@return			A final error code - KErrNone if the error was handled by this
 293.382 -					method.
 293.383 - */
 293.384 -	//##ModelId=3C4C186A036E
 293.385 -	IMPORT_C virtual TInt RunError(TInt aError);
 293.386 -
 293.387 -/**	Intended Usage:	Cancel outstanding asynchronous requests that this object has made
 293.388 - */
 293.389 -	//##ModelId=3C4C186A036D
 293.390 -	IMPORT_C virtual void DoCancel();
 293.391 -
 293.392 -protected:	// Methods
 293.393 -
 293.394 -/**	
 293.395 -	Constructs a protocol handler associated with the supplied HTTP
 293.396 -	client session.
 293.397 -	@param			aSession	(in) The session on which the new protocol handler will
 293.398 -									 be installed.
 293.399 - */
 293.400 -	IMPORT_C CProtocolHandler(RHTTPSession aSession);
 293.401 -
 293.402 -/**	
 293.403 -	Second phase construction in which any necessary allocation is done
 293.404 -	Implementations of this interface may leave with KErrNoMemory
 293.405 -	@param aSession The HTTP session on which this protocol handler
 293.406 -		   will be installed.
 293.407 - */
 293.408 -	//##ModelId=3C4C186A036C
 293.409 -	IMPORT_C void ConstructL(RHTTPSession aSession);
 293.410 -
 293.411 -protected: // Attributes
 293.412 -
 293.413 -	/** The session to which this protocol handler is dedicated
 293.414 -	*/
 293.415 -	//##ModelId=3C4C186A033C
 293.416 -	RHTTPSession iSession;
 293.417 -
 293.418 -	/** The codec used for this protocol handler (to be specialised in subclasses)
 293.419 -	*/
 293.420 -	//##ModelId=3C4C186A032F
 293.421 -	CHeaderCodec* iCodec;
 293.422 -
 293.423 -	/** HTTP logger handle (debug only)
 293.424 -	*/
 293.425 -	__DECLARE_LOG
 293.426 -
 293.427 -	/** An interface providing the security policy. This may be NULL if there is no security policy plugin */
 293.428 -	//##ModelId=3C4C186A031D
 293.429 -	CSecurityPolicy* iSecurityPolicy;	
 293.430 -
 293.431 -private: // Methods
 293.432 -
 293.433 -/**	
 293.434 -	Called after a client RHTTPTransaction::SubmitL(), this method
 293.435 -	enqueues the supplied client transaction.  It checks to see if there
 293.436 -	already exists a CProtTransaction for this transaction. If there is
 293.437 -	and its state is ECancelled, then the associated request data is
 293.438 -	reset and the state changed to EPending. A CompleteSelf() is issued.
 293.439 -	In the case of an existing CProtTransaction that has not been
 293.440 -	cancelled, the submit event is ignored. If no CProtTransaction
 293.441 -	object existed, then one is created for the transaction and a
 293.442 -	CompleteSelf() is issued.
 293.443 -	@leave			KErrHttpCantResetRequestBody if the request body data cannot
 293.444 -					be reset. KErrNoMemory if a new CProtTransaction cannot be
 293.445 -					created or added to the transaction queue.
 293.446 -	@param			aTransaction	The submitted transaction.
 293.447 -	@pre 			None
 293.448 -	@post			If there is a new pending CProtTransaction object the protocol
 293.449 -					handler will have been self-completed (i.e. the RunL will be 
 293.450 -					called).
 293.451 - */
 293.452 -	//##ModelId=3C4C186A0362
 293.453 -	void SubmitTransactionL(RHTTPTransaction aTransaction);
 293.454 -
 293.455 -/**	
 293.456 -	Sets the state of the CProtTransaction object for this 
 293.457 -	transaction to ECancelled, and resets the object. This
 293.458 -	object can be reused if the transaction is resubmitted.
 293.459 -	@param			RHTTPTransaction aTrans
 293.460 -	@pre 			A CProtTransaction object exists for this transaction.
 293.461 -	@post			The state of the CProtTransaction object is set to ECancelled 
 293.462 -					and it has been reset.
 293.463 - */
 293.464 -	//##ModelId=3C4C186A0359
 293.465 -	void HandleCancelTransaction(RHTTPTransaction aTrans);
 293.466 -
 293.467 -/**	
 293.468 -	Removes the CProtTransaction object for the transaction
 293.469 -	from the queue of CProtTransaction objects.
 293.470 -	@param			RHTTPTransaction aTrans
 293.471 -	@pre 			A CProtTransaction object exists for this transaction.
 293.472 -	@post			The CProtTransaction object has been removed from the queue.
 293.473 - */
 293.474 -	//##ModelId=3C4C186A034F
 293.475 -	void HandleClosedTransaction(RHTTPTransaction aTrans);
 293.476 -
 293.477 -/**	
 293.478 -	Searches the array of CProtTransaction objects to if the
 293.479 -	aTransaction object is wrapped by one of them.
 293.480 -	@param			aTransaction	The transaction to search for.
 293.481 -	@return			If a CProtTransaction object is found, a positive value is
 293.482 -					returned that is the index to that object in the array. If 
 293.483 -					no object is found, KErrNotFound is returned.
 293.484 - */
 293.485 -	//##ModelId=3C4C186A0346
 293.486 -	TInt FindTransaction(RHTTPTransaction aTransaction) const;
 293.487 -
 293.488 -protected:
 293.489 -/**	
 293.490 -	Intended Usage: This is a mechanism for allowing future change to CProtocolHandler API 
 293.491 -	without breaking BC.
 293.492 -	@param aInterfaceId		the UID of the API function being called.
 293.493 -	@param aInterfacePtr	reference to pointer to actual function implementation (in the derived class)
 293.494 - */
 293.495 -	inline virtual void GetInterfaceL(TUid aInterfaceId, MProtHandlerInterface*& aInterfacePtr);
 293.496 -
 293.497 -public:
 293.498 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 293.499 - */
 293.500 -	//##ModelId=3C4C186A0344
 293.501 -	inline virtual void Reserved2();
 293.502 -
 293.503 -
 293.504 -private: // Attributes
 293.505 -
 293.506 -	/** A list of transactions. Each transaction has a list state, e.g. pending,
 293.507 -		active, etc.
 293.508 -	*/
 293.509 -	//##ModelId=3C4C186A0313
 293.510 -	RPointerArray<CProtTransaction>		iTransactions;
 293.511 -
 293.512 -	/**	The transaction which is currently being serviced - used in RunError so 
 293.513 -		we know which transaction caused RunL to leave.
 293.514 -	*/
 293.515 -	//##ModelId=3C4C186A02FF
 293.516 -	RHTTPTransaction					iCurrentTransaction;
 293.517 -
 293.518 -	/** The destructor key UID indentification required by ECom
 293.519 -	*/
 293.520 -	//##ModelId=3C4C186A02F5
 293.521 -	TUid iDtor_ID_Key;
 293.522 -	};
 293.523 -
 293.524 -
 293.525 -	
 293.526 -/**
 293.527 -Interface for adding to ProtocolHandler API
 293.528 -@publishedAll
 293.529 -@released
 293.530 -*/
 293.531 -
 293.532 -const TInt KProtHandlerSessionServerCertUid		= 0x1028180D;
 293.533 -const TInt KProtHandlerTransactionServerCertUid	= 0x1028180E;
 293.534 -
 293.535 -class MProtHandlerInterface
 293.536 -	{
 293.537 -public:
 293.538 -	/** 
 293.539 -	Intended Usage: Get the Server Certificate for the current session.
 293.540 -	@return	The certificate information or NULL if it is not available
 293.541 -	*/
 293.542 -	virtual const CCertificate*  SessionServerCert() = 0;
 293.543 -
 293.544 -	/** 
 293.545 -	Intended Usage: Get the Server Certificate for the specified transaction.
 293.546 -	@param	aTransaction The transaction for which the certificate is requested
 293.547 -	@return	The certificate information or NULL if it is not available
 293.548 -	*/
 293.549 -	virtual const CCertificate* TransactionServerCert( RHTTPTransaction aTransaction) = 0;
 293.550 -	};
 293.551 -
 293.552 -inline void CProtocolHandler::GetInterfaceL(TUid, MProtHandlerInterface*&)
 293.553 -	{}
 293.554 -
 293.555 -inline void CProtocolHandler::Reserved2()
 293.556 -	{}
 293.557 -
 293.558 -#endif // __CPROTOCOLHANDLER_H__
   294.1 --- a/epoc32/include/http/framework/cprottransaction.h	Tue Mar 16 16:12:26 2010 +0000
   294.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   294.3 @@ -1,210 +0,0 @@
   294.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   294.5 -// All rights reserved.
   294.6 -// This component and the accompanying materials are made available
   294.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   294.8 -// which accompanies this distribution, and is available
   294.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  294.10 -//
  294.11 -// Initial Contributors:
  294.12 -// Nokia Corporation - initial contribution.
  294.13 -//
  294.14 -// Contributors:
  294.15 -//
  294.16 -// Description:
  294.17 -//
  294.18 -
  294.19 -
  294.20 -
  294.21 -/**
  294.22 - @file CProtTransaction.h 
  294.23 - @warning : This file contains Rose Model ID comments - please do not delete
  294.24 -*/
  294.25 -
  294.26 -#ifndef __CPROTTRANSACTION_H__
  294.27 -#define __CPROTTRANSACTION_H__
  294.28 -
  294.29 -// System includes
  294.30 -#include <e32base.h>
  294.31 -#include <http/rhttptransaction.h>
  294.32 -
  294.33 -// Forward declarations
  294.34 -class CTxData;
  294.35 -class CRxData;
  294.36 -class MRxDataObserver;
  294.37 -
  294.38 -
  294.39 -//##ModelId=3B1E52B30382
  294.40 -class CProtTransaction : public CBase
  294.41 -/** 
  294.42 -A representation of a transaction used by protocol handlers.
  294.43 -This class is lower-level than the RHTTPTransaction class,
  294.44 -since it owns objects that represent the request and response data as
  294.45 -transmitted and received over a transport medium.
  294.46 -@publishedAll
  294.47 -@released
  294.48 -*/
  294.49 -	{
  294.50 -public:	// Enums
  294.51 -
  294.52 -/** The TTransactionState type defines the states of a transaction.
  294.53 -*/
  294.54 -	enum TTransactionState
  294.55 -		{
  294.56 -		/** Specifies that the transaction is pending servicing.
  294.57 -		*/
  294.58 -		EPending		= 0,
  294.59 -		/** Specifies that the transaction is being serviced - active.
  294.60 -		*/
  294.61 -		EActive,
  294.62 -		/** Specifies that the transaction has been cancelled.
  294.63 -		*/
  294.64 -		ECancelled,
  294.65 -		/** Specifies that the transaction has completed.
  294.66 -		*/
  294.67 -		ECompleted
  294.68 -		};
  294.69 -
  294.70 -public:
  294.71 -
  294.72 -/** 
  294.73 -	Intended Usage:	Destructor - cleans up and releases resources to the system
  294.74 -*/
  294.75 -	//##ModelId=3B1E52B40031
  294.76 -	IMPORT_C virtual ~CProtTransaction();
  294.77 -
  294.78 -public: // accessors
  294.79 -
  294.80 -/**	
  294.81 -	Provides the state of the transaction, e.g. pending, 
  294.82 -	active, etc.
  294.83 -	@return			A enum specifying the state of the transaction.
  294.84 -*/
  294.85 -	//##ModelId=3C4C37E50306
  294.86 -	TTransactionState TransactionState() const;
  294.87 -
  294.88 -/**	
  294.89 -	Sets the state of the transaction.
  294.90 -	@param			aState	The state that the transaction is in.
  294.91 -	@post			The state of the transaction has been updated.
  294.92 -*/
  294.93 -	//##ModelId=3C4C37E502D4
  294.94 -	void SetTransactionState(TTransactionState aState);
  294.95 -
  294.96 -/**	
  294.97 -	Resets the Rx data object. The Rx data object must be 
  294.98 -	created again to be used.
  294.99 -	@post			The Rx data objects has been reset.
 294.100 -*/
 294.101 -	//##ModelId=3C4C37E502CA
 294.102 -	IMPORT_C void ResetRxData();
 294.103 -
 294.104 -/**	
 294.105 -	Resets the Tx data object. The Tx data object must be 
 294.106 -	created again to be used.
 294.107 -	@post			The Tx data objects has been reset.
 294.108 -*/
 294.109 -	//##ModelId=3C4C37E502C0
 294.110 -	IMPORT_C void ResetTxData();
 294.111 -
 294.112 -/**	
 294.113 -	Obtain the API-level transaction to which this object
 294.114 -	corresponds to.
 294.115 -	@return			The API-level transaction that this object corresponds to.
 294.116 -*/
 294.117 -	//##ModelId=3B1E52B40013
 294.118 -	IMPORT_C RHTTPTransaction Transaction() const;
 294.119 -
 294.120 -/**	
 294.121 -	Obtain the Transmit Data portion of the transaction.
 294.122 -	@return			A reference to the Tx data object of the transaction.
 294.123 -*/
 294.124 -	//##ModelId=3B1E52B40012
 294.125 -	IMPORT_C CTxData& TxData() const;
 294.126 -
 294.127 -/**	
 294.128 -	Obtain the Receive Data portion of the transaction.
 294.129 -	@return			A reference to the Rx data object of the transaction.
 294.130 -*/
 294.131 -	//##ModelId=3B1E52B40009
 294.132 -	IMPORT_C CRxData& RxData() const;
 294.133 -
 294.134 -public:	// Methods to be implemented by derived classes
 294.135 -
 294.136 -/**	
 294.137 -	Intended Usage:	Creates the appropriate CTxData object.
 294.138 -	@leave			KErrNoMemory if there is not enough memory available to 
 294.139 -					create the object.
 294.140 -*/
 294.141 -	//##ModelId=3C4C37E502AC
 294.142 -	virtual void CreateTxDataL() =0;
 294.143 -
 294.144 -/**	
 294.145 -	Intended Usage:	Creates the appropriate CRxData object.
 294.146 -	@leave			KErrNoMemory if there is not enough memory available to 
 294.147 -					create the object.
 294.148 -	@param			aObserver	A reference to the observer for the Rx data object.
 294.149 -*/
 294.150 -	//##ModelId=3C4C37E50284
 294.151 -	virtual void CreateRxDataL(MRxDataObserver& aObserver) =0;
 294.152 -
 294.153 -protected: // Methods
 294.154 -
 294.155 -/** 
 294.156 -	Default constructor	
 294.157 -*/
 294.158 -	//##ModelId=3B1E52B303E6
 294.159 -	CProtTransaction();
 294.160 -
 294.161 -/** 
 294.162 -	Normal constructor, of a CProtTransaction that corresponds to the
 294.163 -	supplied client transaction handle.
 294.164 -	@param			aTrans	(in) The client transaction handle.
 294.165 -*/
 294.166 -	//##ModelId=3B1E52B303E7
 294.167 -	IMPORT_C CProtTransaction(RHTTPTransaction aTrans);
 294.168 -
 294.169 -protected:	// Attributes
 294.170 -
 294.171 -	/** The client transaction
 294.172 -	*/
 294.173 -	//##ModelId=3B1E52B303D4
 294.174 -	RHTTPTransaction iTrans;
 294.175 -
 294.176 -	/** The transmission data
 294.177 -	*/
 294.178 -	//##ModelId=3B1E52B303CA
 294.179 -	CTxData* iTxData;
 294.180 -
 294.181 -	/** The received data
 294.182 -	*/
 294.183 -	//##ModelId=3B1E52B303C0
 294.184 -	CRxData* iRxData;
 294.185 -
 294.186 -	/** Transaction state indicator.
 294.187 -	*/
 294.188 -	//##ModelId=3C4C37E50247
 294.189 -	TTransactionState	iTransactionState;
 294.190 -
 294.191 -private: // methods
 294.192 -
 294.193 -/**	
 294.194 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 294.195 - */
 294.196 -	//##ModelId=3C4C37E5026F
 294.197 -	inline virtual void Reserved1();
 294.198 -
 294.199 -/**	
 294.200 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 294.201 - */
 294.202 -	//##ModelId=3C4C37E50251
 294.203 -	inline virtual void Reserved2();
 294.204 -	};
 294.205 -
 294.206 -
 294.207 -inline void CProtTransaction::Reserved1()
 294.208 -	{}
 294.209 -inline void CProtTransaction::Reserved2()
 294.210 -	{}
 294.211 -
 294.212 -
 294.213 -#endif // __CPROTTRANSACTION_H__
   295.1 --- a/epoc32/include/http/framework/crxdata.h	Tue Mar 16 16:12:26 2010 +0000
   295.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   295.3 @@ -1,127 +0,0 @@
   295.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   295.5 -// All rights reserved.
   295.6 -// This component and the accompanying materials are made available
   295.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   295.8 -// which accompanies this distribution, and is available
   295.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  295.10 -//
  295.11 -// Initial Contributors:
  295.12 -// Nokia Corporation - initial contribution.
  295.13 -//
  295.14 -// Contributors:
  295.15 -//
  295.16 -// Description:
  295.17 -//
  295.18 -
  295.19 -
  295.20 -
  295.21 -/**
  295.22 - @file CRxData.h
  295.23 - @warning : This file contains Rose Model ID comments - please do not delete
  295.24 -*/
  295.25 -
  295.26 -#ifndef __CRXDATA_H__
  295.27 -#define __CRXDATA_H__
  295.28 -
  295.29 -// System includes
  295.30 -#include <e32base.h>
  295.31 -#include <http/framework/cprottransaction.h>
  295.32 -#include <http/mhttpdatasupplier.h>
  295.33 -#include <http/rhttpsession.h> // this include is needed to ensure that the <rhttp.inl> is compiled by gcc...
  295.34 -
  295.35 -// Forward declarations
  295.36 -class MRxDataObserver;
  295.37 -
  295.38 -
  295.39 -//##ModelId=3B1E52AB0087
  295.40 -class CRxData : public CBase, public MHTTPDataSupplier
  295.41 -/**
  295.42 -An abstract base class for the decoding of response data received by a
  295.43 -protocol handler.
  295.44 -@publishedAll
  295.45 -@released
  295.46 -*/
  295.47 -	{
  295.48 -public:
  295.49 -
  295.50 -/** Intended Usage:	Destructor - cleans up and releases resources to the system	
  295.51 -*/
  295.52 -	IMPORT_C
  295.53 -	//##ModelId=3B1E52AB00ED
  295.54 -	virtual ~CRxData();
  295.55 -
  295.56 -/** Intended Usage:	Obtain the protocol transaction whose request part is represented
  295.57 -					as encoded data by this object.
  295.58 -	@return The protocol transaction object
  295.59 -*/
  295.60 -	IMPORT_C
  295.61 -	//##ModelId=3B1E52AB00EC
  295.62 -	CProtTransaction& ProtTrans();
  295.63 -
  295.64 -public:
  295.65 -
  295.66 -/** Intended Usage:	Resets the received data object to its initial state following
  295.67 -					construction.  This method must be implemented for specific sub-
  295.68 -					classes of received data.
  295.69 -	@post			The object is reset.
  295.70 -*/
  295.71 -	//##ModelId=3BA60048014B
  295.72 -	virtual void ResetRxData() = 0;
  295.73 -
  295.74 -protected:
  295.75 -
  295.76 -/** Intended Usage:	Default constructor	- creates an Rx data object not associated
  295.77 -					with any protocol transaction.
  295.78 -*/
  295.79 -	IMPORT_C
  295.80 -	//##ModelId=3A914E5F008F
  295.81 -	CRxData();
  295.82 -
  295.83 -/** Intended Usage:	Normal constructor, of a CRxData that corresponds to the supplied
  295.84 -					protocol transaction, and which sends status updates to the supplied
  295.85 -					observer interface,
  295.86 -	@param			aProtTrans			(in) The transaction for which this object
  295.87 -											 represents the transmitted data.
  295.88 -	@param			aObserver			(in) The object's observer.
  295.89 -*/
  295.90 -	IMPORT_C CRxData(CProtTransaction& aProtTrans, MRxDataObserver& aObserver);
  295.91 -
  295.92 -/** Intended Usage:	Second phase construction, default
  295.93 -*/
  295.94 -	IMPORT_C
  295.95 -	//##ModelId=3B1E52AB00BA
  295.96 -	void ConstructL();
  295.97 -
  295.98 -protected:
  295.99 -
 295.100 -	/** The protocol transaction for which this object represents the encoded received data
 295.101 -	*/
 295.102 -	//##ModelId=3B1E52AB00B2
 295.103 -	CProtTransaction* iProtTrans;
 295.104 -
 295.105 -	/** This object's observer, to whom we forward status information
 295.106 -	*/
 295.107 -	//##ModelId=3B1E7738028B
 295.108 -	MRxDataObserver* iObserver;
 295.109 -
 295.110 -private: // methods
 295.111 -
 295.112 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 295.113 - */
 295.114 -	//##ModelId=3C4C37DA0007
 295.115 -	inline virtual void Reserved1();
 295.116 -
 295.117 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 295.118 - */
 295.119 -	//##ModelId=3C4C37D903DB
 295.120 -	inline virtual void Reserved2();
 295.121 -	};
 295.122 -
 295.123 -
 295.124 -inline void CRxData::Reserved1()
 295.125 -	{}
 295.126 -inline void CRxData::Reserved2()
 295.127 -	{}
 295.128 -
 295.129 -
 295.130 -#endif // __CRXDATA_H__ 
   296.1 --- a/epoc32/include/http/framework/csecuritypolicy.h	Tue Mar 16 16:12:26 2010 +0000
   296.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   296.3 @@ -1,173 +0,0 @@
   296.4 -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   296.5 -// All rights reserved.
   296.6 -// This component and the accompanying materials are made available
   296.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   296.8 -// which accompanies this distribution, and is available
   296.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  296.10 -//
  296.11 -// Initial Contributors:
  296.12 -// Nokia Corporation - initial contribution.
  296.13 -//
  296.14 -// Contributors:
  296.15 -//
  296.16 -// Description:
  296.17 -//
  296.18 -
  296.19 -
  296.20 -
  296.21 -/**
  296.22 - @file csecuritypolicy.h
  296.23 - @warning : This file may contain Rose Model ID comments - please do not delete
  296.24 -*/
  296.25 -
  296.26 -#ifndef __CSECURITYPOLICY_H__
  296.27 -#define __CSECURITYPOLICY_H__
  296.28 -
  296.29 -// System includes
  296.30 -#include <e32base.h>
  296.31 -#include <ecom/ecom.h>
  296.32 -#include <stringpool.h>
  296.33 -#include <ssl.h>
  296.34 -#include <wsp/wsptypes.h>
  296.35 -
  296.36 -
  296.37 -//##ModelId=3C4C37E401CE
  296.38 -class MSecurityPolicy
  296.39 -/**
  296.40 -The Security Policy Interface.  This interface class must be the base 
  296.41 -class of a security policy plug-in.
  296.42 -@publishedAll
  296.43 -@released
  296.44 -*/
  296.45 -	{
  296.46 -public:
  296.47 -
  296.48 -/** Intended Usage:	Ask the client to accept or reject a certificate. Not
  296.49 -					applicable to TLS, as the SSL layer does this itself.
  296.50 -					The call is asynchronous, returning the result via the TRequestStatus.
  296.51 -	@param			aServerCert		(in) A structure containing the certificate details.
  296.52 -	@param			aStatus			(out) A status flag used to indicate errors. A value of 0 is used to indicate
  296.53 -									that the cert is untrusted and 1 that it is trusted
  296.54 -*/
  296.55 -	//##ModelId=3C4C37E4020B
  296.56 -	virtual void ValidateUntrustedServerCert(TCertInfo& aServerCert, TRequestStatus& aStatus) const = 0;
  296.57 -
  296.58 -/** Intended Usage:	Cancel a previous request to ask the client to accept or reject
  296.59 -					an untrusted WTLS server certificate.
  296.60 -*/
  296.61 -	//##ModelId=3C4C37E4020A
  296.62 -	virtual void CancelValidateUntrustedServerCert() = 0;
  296.63 -
  296.64 -
  296.65 -/** Intended Usage:	Obtain an array of WTLS cipher suites.  Not applicable to TLS clients.
  296.66 -	@return			An array of cipher suites, consisting of paired bulk encryption
  296.67 -					algorithms and MAC algorithms.  The array must be ordered with
  296.68 -					strongest cipher suites at the start.
  296.69 -*/
  296.70 -	//##ModelId=3C4C37E40201
  296.71 -	virtual const RArray<TWtlsCipherSuite>& GetWtlsCipherSuites() =0;
  296.72 -
  296.73 -/** Intended Usage:	Obtain a list of TLS cipher suites.  Not applicable to WTLS
  296.74 -					clients.
  296.75 -	@return			An descriptor containing a list of the TLS cipher suites. Each cipher suite is a 2 byte pair
  296.76 -*/
  296.77 -	//##ModelId=3C4C37E40200
  296.78 -	virtual const TDesC8& GetTlsCipherSuites() = 0;
  296.79 -
  296.80 -/** Intended Usage:	Obtain the WTLS key exchange suites.  Not applicable
  296.81 -					to TLS clients.
  296.82 -	@return			An array of the WTLS key exchange suites.  The array must be ordered
  296.83 -					with authenticating key exchange suites at the start followed by
  296.84 -					anonymous key exchange suites if desired.  Within each group of keys
  296.85 -					longer keys should precede shorter ones.
  296.86 -*/
  296.87 -	//##ModelId=3C4C37E401FA
  296.88 -	virtual const RArray<TWtlsKeyExchangeSuite>& GetWtlsKeyExchangeSuites() = 0;
  296.89 -
  296.90 -/** Intended Usage:	Obtain arbitrary, named security policy properties, in a generic
  296.91 -					'stringified' form.
  296.92 -	@param			aPropertyName	(in) The policy property name.
  296.93 -	@param			aPropertyValue	(out) The property value. Parsing of the value is
  296.94 -									left to the caller. The caller must close the
  296.95 -									RString.
  296.96 -	@return			An error code: KErrNone if the property exists or KErrNotFound if
  296.97 -					it doesn't.
  296.98 -*/
  296.99 -	//##ModelId=3C4C37E401F7
 296.100 -	virtual TInt GetNamedPolicyProperty(RStringF aPropertyName, RString& aPropertyValue) = 0;
 296.101 -
 296.102 -protected:
 296.103 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 296.104 - */
 296.105 -	//##ModelId=3C4C37E401F6
 296.106 -	virtual void Reserved1() =0;
 296.107 -
 296.108 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 296.109 - */
 296.110 -	//##ModelId=3C4C37E401EC
 296.111 -	virtual void Reserved2() =0;
 296.112 -	};
 296.113 -
 296.114 -//##ModelId=3C4C37C50300
 296.115 -class CSecurityPolicy : public CBase, public MSecurityPolicy
 296.116 -/** 
 296.117 -The Security Policy Plug-in API.  This ECOM interface class must be implemented
 296.118 -by each instance of a security policy plug-in.
 296.119 -@publishedAll
 296.120 -@released
 296.121 -*/
 296.122 -	{
 296.123 -public: // methods
 296.124 -
 296.125 -/** Intended Usage:	Factory construction - instantiates the plug-in.
 296.126 -	@param			aStringPool		(in) An open string pool reference that can be used by the plugin.
 296.127 -	@return			The constructed plug-in.
 296.128 -*/
 296.129 -	//##ModelId=3C4C37C503C8
 296.130 -	inline static CSecurityPolicy* NewL(RStringPool aStringPool);
 296.131 -
 296.132 -/** Intended Usage:	Class destructor.
 296.133 -*/
 296.134 -	//##ModelId=3C4C37C503BE
 296.135 -	inline virtual ~CSecurityPolicy();
 296.136 -
 296.137 -
 296.138 -protected: // methods
 296.139 -
 296.140 -/** Intended Usage:	Normal constructor. Creates an instance of the plug-in base.
 296.141 -	@param			aStrPool		(in) An open string pool reference that can be used by the plugin.
 296.142 -	@return			The constructed plug-in base.
 296.143 -*/
 296.144 -	//##ModelId=3C4C37C503B5
 296.145 -	inline CSecurityPolicy(RStringPool aStrPool);
 296.146 -
 296.147 -
 296.148 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 296.149 - */
 296.150 -	//##ModelId=3C4C37C503B4
 296.151 -	inline virtual void Reserved1();
 296.152 -
 296.153 -/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 296.154 - */
 296.155 -	//##ModelId=3C4C37C503AD
 296.156 -	inline virtual void Reserved2();
 296.157 -
 296.158 -protected: // attributes
 296.159 -
 296.160 -	/** The stringpool reference
 296.161 -	*/
 296.162 -	//##ModelId=3C4C37C503AA
 296.163 -	RStringPool iStrPool;
 296.164 -
 296.165 -private: // attributes
 296.166 -
 296.167 -	/** D'tor Key identification required for ECOM
 296.168 -		@internalAll
 296.169 -	*/
 296.170 -	//##ModelId=3C4C37C50396
 296.171 -	TUid iDtor_ID_Key;
 296.172 -	};
 296.173 -
 296.174 -#include <http/framework/csecuritypolicy.inl>
 296.175 -
 296.176 -#endif // __CSECURITYPOLICY_H__
   297.1 --- a/epoc32/include/http/framework/csecuritypolicy.inl	Tue Mar 16 16:12:26 2010 +0000
   297.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   297.3 @@ -1,65 +0,0 @@
   297.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   297.5 -// All rights reserved.
   297.6 -// This component and the accompanying materials are made available
   297.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   297.8 -// which accompanies this distribution, and is available
   297.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  297.10 -//
  297.11 -// Initial Contributors:
  297.12 -// Nokia Corporation - initial contribution.
  297.13 -//
  297.14 -// Contributors:
  297.15 -//
  297.16 -// Description:
  297.17 -//
  297.18 -
  297.19 -
  297.20 -
  297.21 -/**
  297.22 - @file CSecurityPolicy.inl
  297.23 - @warning : This file contains Rose Model ID comments - please do not delete
  297.24 -*/
  297.25 -
  297.26 -#ifndef __CSECURITYPOLICY_INL__
  297.27 -#define __CSECURITYPOLICY_INL__
  297.28 -
  297.29 -
  297.30 -inline CSecurityPolicy* CSecurityPolicy::NewL(RStringPool aStringPool)
  297.31 -	{
  297.32 -	_LIT8(KDataTypeName, "security-policy");
  297.33 -
  297.34 -	// CSecurityPolicy ECOM Interface UID = 101F4485
  297.35 -	const TUid KUidSecPolInterface = {0x101F4485};
  297.36 -
  297.37 -	// Set up the parameters which allow ECOM's resolver to pick the right implementation
  297.38 -	TEComResolverParams resParams;
  297.39 -	resParams.SetDataType(KDataTypeName());
  297.40 -
  297.41 -	// Get the instantiation.  Allow ECOM to use the default resolver.  Pass in the init params.
  297.42 -	TAny* ptr = REComSession::CreateImplementationL(KUidSecPolInterface,
  297.43 -								 _FOFF(CSecurityPolicy, iDtor_ID_Key),
  297.44 -								 &aStringPool,
  297.45 -								 resParams);
  297.46 -
  297.47 -	return REINTERPRET_CAST(CSecurityPolicy*, ptr);
  297.48 -	}
  297.49 -
  297.50 -inline CSecurityPolicy::~CSecurityPolicy()
  297.51 -	{
  297.52 -	REComSession::DestroyedImplementation(iDtor_ID_Key);
  297.53 -	}
  297.54 -
  297.55 -inline CSecurityPolicy::CSecurityPolicy(RStringPool aStrPool)
  297.56 -	: iStrPool(aStrPool)
  297.57 -	{
  297.58 -	}
  297.59 -
  297.60 -
  297.61 -
  297.62 -inline void CSecurityPolicy::Reserved1()
  297.63 -	{}
  297.64 -inline void CSecurityPolicy::Reserved2()
  297.65 -	{}
  297.66 -
  297.67 -
  297.68 -#endif // __CSECURITYPOLICY_INL__
   298.1 --- a/epoc32/include/http/framework/ctxdata.h	Tue Mar 16 16:12:26 2010 +0000
   298.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   298.3 @@ -1,115 +0,0 @@
   298.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   298.5 -// All rights reserved.
   298.6 -// This component and the accompanying materials are made available
   298.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   298.8 -// which accompanies this distribution, and is available
   298.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  298.10 -//
  298.11 -// Initial Contributors:
  298.12 -// Nokia Corporation - initial contribution.
  298.13 -//
  298.14 -// Contributors:
  298.15 -//
  298.16 -// Description:
  298.17 -//
  298.18 -
  298.19 -
  298.20 -
  298.21 -/**
  298.22 - @file CTxData.h
  298.23 - @warning : This file contains Rose Model ID comments - please do not delete
  298.24 -*/
  298.25 -
  298.26 -#ifndef __CTXDATA_H__
  298.27 -#define __CTXDATA_H__
  298.28 -
  298.29 -// System includes
  298.30 -#include <e32base.h>
  298.31 -#include <http/framework/cprottransaction.h>
  298.32 -#include <http/mhttpdatasupplier.h>
  298.33 -#include <http/rhttpsession.h> // this include is needed to ensure that the <rhttp.inl> is compiled by gcc...
  298.34 -
  298.35 -
  298.36 -//##ModelId=3B1E52A8001F
  298.37 -class CTxData : public CBase, public MHTTPDataSupplier
  298.38 -/**
  298.39 -An abstract base class for the encoding of request data to be transmitted by a
  298.40 -protocol handler.
  298.41 -@publishedAll
  298.42 -@released
  298.43 -*/
  298.44 -	{
  298.45 -public: // methods
  298.46 -
  298.47 -/** @fn				~CTxData()
  298.48 -	Intended Usage:	Destructor - cleans up and releases resources to the system	
  298.49 -*/
  298.50 -	IMPORT_C
  298.51 -	//##ModelId=3B1E52A80051
  298.52 -	virtual ~CTxData();
  298.53 -
  298.54 -/** @fn				CProtTransaction& ProtTrans()
  298.55 -	Intended Usage:	Obtain the protocol transaction whose request part is represented
  298.56 -					as encoded data by this object.
  298.57 -	@return The protocol transaction object
  298.58 -*/
  298.59 -	IMPORT_C
  298.60 -	//##ModelId=3B1E52A80049
  298.61 -	CProtTransaction& ProtTrans();
  298.62 -
  298.63 -protected:
  298.64 -
  298.65 -/** @fn				CTxData()
  298.66 -	Intended Usage:	Default constructor	- creates a Tx data object not associated
  298.67 -					with any protocol transaction.
  298.68 -*/
  298.69 -	IMPORT_C
  298.70 -	//##ModelId=3A925A44019E
  298.71 -	CTxData();
  298.72 -	
  298.73 -/** @fn				CTxData(CProtTransaction& aProtTransaction)
  298.74 -	Intended Usage:	Normal constructor, of a CTxData that corresponds to the supplied
  298.75 -					protocol transaction.
  298.76 -	@param			aProtTransaction	(in) The transaction for which this object
  298.77 -											 represents the transmitted data.
  298.78 -*/
  298.79 -	IMPORT_C CTxData(CProtTransaction& aProtTransaction);
  298.80 -
  298.81 -/** @fn				ConstructL()
  298.82 -	Intended Usage:	Second phase construction, default
  298.83 -*/
  298.84 -	IMPORT_C
  298.85 -	//##ModelId=3B1E52A8003D
  298.86 -	void ConstructL();
  298.87 -
  298.88 -protected: // attributes
  298.89 -
  298.90 -	/** The HTTP transaction from whose request this OTA transmission data is built.
  298.91 -		Note that the transaction is not owned by this object.
  298.92 -	*/
  298.93 -	//##ModelId=3B1E52A80035
  298.94 -	CProtTransaction* iProtTrans;
  298.95 -
  298.96 -private: // methods
  298.97 -
  298.98 -/**	@fn				Reserved1()
  298.99 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 298.100 - */
 298.101 -	//##ModelId=3C4C37D6010F
 298.102 -	inline virtual void Reserved1();
 298.103 -
 298.104 -/**	@fn				Reserved2()
 298.105 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 298.106 - */
 298.107 -	//##ModelId=3C4C37D600FB
 298.108 -	inline virtual void Reserved2();
 298.109 -	};
 298.110 -
 298.111 -
 298.112 -inline void CTxData::Reserved1()
 298.113 -	{}
 298.114 -inline void CTxData::Reserved2()
 298.115 -	{}
 298.116 -
 298.117 -
 298.118 -#endif // __CTXDATA_H__
   299.1 --- a/epoc32/include/http/framework/mrxdataobserver.h	Tue Mar 16 16:12:26 2010 +0000
   299.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   299.3 @@ -1,73 +0,0 @@
   299.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   299.5 -// All rights reserved.
   299.6 -// This component and the accompanying materials are made available
   299.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   299.8 -// which accompanies this distribution, and is available
   299.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  299.10 -//
  299.11 -// Initial Contributors:
  299.12 -// Nokia Corporation - initial contribution.
  299.13 -//
  299.14 -// Contributors:
  299.15 -//
  299.16 -// Description:
  299.17 -//
  299.18 -
  299.19 -
  299.20 -
  299.21 -/**
  299.22 - @file MRxDataObserver.h
  299.23 - @warning : This file contains Rose Model ID comments - please do not delete
  299.24 -*/
  299.25 -
  299.26 -#ifndef	__MRXDATAOBSERVER_H__
  299.27 -#define __MRXDATAOBSERVER_H__
  299.28 -
  299.29 -// System includes
  299.30 -#include <e32std.h>
  299.31 -
  299.32 -// Forward declarations
  299.33 -class CRxData;
  299.34 -
  299.35 -
  299.36 -//##ModelId=3A914E570296
  299.37 -class MRxDataObserver
  299.38 -/**
  299.39 -An interface to be implemented by classes that wish to receive status information
  299.40 -from an implementation of the CRxData class.
  299.41 -@publishedAll
  299.42 -@released
  299.43 -*/
  299.44 -	{
  299.45 -public:
  299.46 -/** @fn				void SetStatusL(CRxData& aRxData, TInt aStatus)
  299.47 -	Intended Usage:	Receive a status message from the object that processes received
  299.48 -					data in a protocol handler.
  299.49 -	@param			aRxData		The object which is processing the data.
  299.50 -	@param			aStatus		The status (or error) code.
  299.51 -*/
  299.52 -	//##ModelId=3B1E6B5800E5
  299.53 -	virtual void SetStatusL(CRxData& aRxData, TInt aStatus) =0;
  299.54 -
  299.55 -private: // methods
  299.56 -
  299.57 -/**	@fn				Reserved1()
  299.58 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
  299.59 - */
  299.60 -	//##ModelId=3C4C37CE035D
  299.61 -	inline virtual void MRDO_Reserved1();
  299.62 -
  299.63 -/**	@fn				Reserved2()
  299.64 -	Intended Usage:	Reserve a slot in the v-table to preserve future BC
  299.65 - */
  299.66 -	//##ModelId=3C4C37CE0349
  299.67 -	inline virtual void MRDO_Reserved2();
  299.68 -	};
  299.69 -
  299.70 -
  299.71 -inline void MRxDataObserver::MRDO_Reserved1()
  299.72 -	{}
  299.73 -inline void MRxDataObserver::MRDO_Reserved2()
  299.74 -	{}
  299.75 -
  299.76 -#endif // __MRXDATAOBSERVER_H__
   300.1 --- a/epoc32/include/http/framework/rheaderfield.h	Tue Mar 16 16:12:26 2010 +0000
   300.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   300.3 @@ -1,110 +0,0 @@
   300.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   300.5 -// All rights reserved.
   300.6 -// This component and the accompanying materials are made available
   300.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   300.8 -// which accompanies this distribution, and is available
   300.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  300.10 -//
  300.11 -// Initial Contributors:
  300.12 -// Nokia Corporation - initial contribution.
  300.13 -//
  300.14 -// Contributors:
  300.15 -//
  300.16 -// Description:
  300.17 -//
  300.18 -
  300.19 -
  300.20 -
  300.21 -/**
  300.22 - @file RHeaderField.h
  300.23 - @warning : This file contains Rose Model ID comments - please do not delete
  300.24 -*/
  300.25 -
  300.26 -#ifndef __RHEADERFIELD_H__
  300.27 -#define __RHEADERFIELD_H__
  300.28 -
  300.29 -// System includes
  300.30 -#include <e32base.h>
  300.31 -#include <http/thttphdrval.h>
  300.32 -#include <http/rhttppropertyset.h>
  300.33 -#include <http/rhttpheaders.h>
  300.34 -
  300.35 -// Forward declarations
  300.36 -class CHeaderField;
  300.37 -class THeaderFieldPartIter;
  300.38 -
  300.39 -
  300.40 -/**
  300.41 -The default chunk size for Raw data should be set to the average length of a header field when encoded in
  300.42 -plaintext.
  300.43 -@publishedAll
  300.44 -@released
  300.45 -*/
  300.46 -const TInt KDefaultRawChunkSize= 32;
  300.47 -
  300.48 -
  300.49 -//##ModelId=3B1E52A50396
  300.50 -class RHeaderField
  300.51 -/**
  300.52 -An proxy object for a single field in an HTTP header.  The class is used by
  300.53 -implementations of CHeaderCodec in order to manipulate the header at the part and
  300.54 -parameter level, or to obtain raw data, during a header encode/decode operation.
  300.55 -@publishedAll
  300.56 -@released
  300.57 -*/
  300.58 -	{
  300.59 -public: // methods
  300.60 -
  300.61 -	//##ModelId=3BA6004002BC
  300.62 -	RHeaderField(CHeaderField& aHeaderField);
  300.63 -
  300.64 -	IMPORT_C
  300.65 -	//##ModelId=3B1E52A503C0
  300.66 -	RStringF Name() const;
  300.67 -
  300.68 -	IMPORT_C
  300.69 -	//##ModelId=3B1E52A503BF
  300.70 -	THeaderFieldPartIter PartsL();
  300.71 -
  300.72 -	IMPORT_C
  300.73 -	//##ModelId=3B1E52A503B9
  300.74 -	void RawDataL(TPtrC8& aRawData);
  300.75 -
  300.76 -	IMPORT_C
  300.77 -	//##ModelId=3BA6004002B2
  300.78 -	RHTTPHeaders Collection();
  300.79 -
  300.80 -	IMPORT_C
  300.81 -	//##ModelId=3B1E52A503B6
  300.82 -	void SetPartL(CHeaderFieldPart* aPart, TInt aIndex);
  300.83 -
  300.84 -	IMPORT_C
  300.85 -	//##ModelId=3B1E52A503B4
  300.86 -	void BeginRawDataL(TInt aChunkSize = KDefaultRawChunkSize);
  300.87 -
  300.88 -	IMPORT_C
  300.89 -	//##ModelId=3B1E52A503AB
  300.90 -	void WriteRawDataL(const TDesC8& aData);
  300.91 -
  300.92 -	IMPORT_C
  300.93 -	//##ModelId=3B1E52A503AD
  300.94 -	void WriteRawDataL(TChar aData);
  300.95 -
  300.96 -	IMPORT_C
  300.97 -	//##ModelId=3B1E52A503AA
  300.98 -	void CommitRawData();
  300.99 -
 300.100 -private: // attributes
 300.101 -
 300.102 -	/** The internal representation of this header field
 300.103 -	*/
 300.104 -	//##ModelId=3B1E52A503A2
 300.105 -	CHeaderField& iHeaderField;
 300.106 -};
 300.107 -
 300.108 -inline RHeaderField::RHeaderField(CHeaderField& aHeaderField)
 300.109 -	: iHeaderField(aHeaderField)
 300.110 -	{
 300.111 -	}
 300.112 -
 300.113 -#endif // __CHEADERFIELD_H__
   301.1 --- a/epoc32/include/http/mhttpauthenticationcallback.h	Tue Mar 16 16:12:26 2010 +0000
   301.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   301.3 @@ -1,87 +0,0 @@
   301.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   301.5 -// All rights reserved.
   301.6 -// This component and the accompanying materials are made available
   301.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   301.8 -// which accompanies this distribution, and is available
   301.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  301.10 -//
  301.11 -// Initial Contributors:
  301.12 -// Nokia Corporation - initial contribution.
  301.13 -//
  301.14 -// Contributors:
  301.15 -//
  301.16 -// Description:
  301.17 -//
  301.18 -
  301.19 -
  301.20 -
  301.21 -/**
  301.22 - @file MHTTPAuthenticationCallback.h
  301.23 - @warning : This file contains Rose Model ID comments - please do not delete
  301.24 -*/
  301.25 -
  301.26 -#ifndef	__MHTTPAUTHENTICATIONCALLBACK_H__
  301.27 -#define	__MHTTPAUTHENTICATIONCALLBACK_H__ 
  301.28 -
  301.29 -// System includes
  301.30 -#include <uri8.h>
  301.31 -#include <stringpool.h>
  301.32 -#include <http/rhttpsession.h>
  301.33 -#include <http/cauthenticationfilterinterface.h>
  301.34 -
  301.35 -
  301.36 -//##ModelId=3B1E52A50151
  301.37 -class MHTTPAuthenticationCallback
  301.38 -/** 
  301.39 -The mixin that needs to be implemented if authentication is to be
  301.40 -supported. This supplies the username and password when they are
  301.41 -needed for authentication.
  301.42 -To use, subclass off this class and implement GetCredentialsL. To install
  301.43 -the class into a session, call InstallAuthenticationL.
  301.44 -@publishedAll
  301.45 -@released
  301.46 -*/
  301.47 -	{
  301.48 - public:
  301.49 -	/** Gets some credentials. Note that the first 3 parameters are
  301.50 -		informational and many clients may not have a use for
  301.51 -		them. Clients may want to display some or all of these
  301.52 -		parameters to the user, so that the user knows who they are
  301.53 -		giving their credentials to, and how securely they will be
  301.54 -		transmitted.
  301.55 -		@param aURI The URI being requested
  301.56 -		@param aRealm The realm being requested
  301.57 -		@param aAuthenticationType The type of authentication (basic or digest)
  301.58 -		@param aUsername The username is returned in this parameter. 
  301.59 -		The caller will close the returned string.
  301.60 -		@param aPassword The password is returned in this parameter
  301.61 -		The caller will close the returned string.
  301.62 -		@return True if credentials have been obtained. 
  301.63 -		@leave Anything. If this function leaves the transaction will be 
  301.64 -		failed. 
  301.65 -	*/
  301.66 -	//##ModelId=3B1E52A5015D
  301.67 -	virtual TBool GetCredentialsL(const TUriC8& aURI, RString aRealm, 
  301.68 -								  RStringF aAuthenticationType,
  301.69 -								  RString& aUsername, 
  301.70 -								  RString& aPassword) = 0;
  301.71 -
  301.72 -	/** Installs the callback into the session.
  301.73 -		Typicaly called from the implementation class's ConstructL().
  301.74 -		@pre The session is opened, but no transactions have been created on it
  301.75 -		@post The session supports authentication, and uses this API to
  301.76 -		get its credentials.
  301.77 -		@param aSession the session to install the filter into.
  301.78 -		@leave KErrNoMemory There was not enough memory.
  301.79 -	 */
  301.80 -	//##ModelId=3B1E52A5015B
  301.81 -	inline void InstallAuthenticationL(RHTTPSession aSession);
  301.82 -	};
  301.83 -
  301.84 -inline void MHTTPAuthenticationCallback::InstallAuthenticationL(RHTTPSession aSession)
  301.85 -	{
  301.86 -	CAuthenticationFilterInterface::InstallFilterL(aSession, this);
  301.87 -	}
  301.88 -
  301.89 -
  301.90 -#endif //	__MHTTPAUTHENTICATIONCALLBACK_H__
   302.1 --- a/epoc32/include/http/mhttpdatasupplier.h	Tue Mar 16 16:12:26 2010 +0000
   302.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   302.3 @@ -1,135 +0,0 @@
   302.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   302.5 -// All rights reserved.
   302.6 -// This component and the accompanying materials are made available
   302.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   302.8 -// which accompanies this distribution, and is available
   302.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  302.10 -//
  302.11 -// Initial Contributors:
  302.12 -// Nokia Corporation - initial contribution.
  302.13 -//
  302.14 -// Contributors:
  302.15 -//
  302.16 -// Description:
  302.17 -//
  302.18 -
  302.19 -
  302.20 -
  302.21 -/**
  302.22 - @file MHTTPDataSupplier.h
  302.23 - @warning : This file contains Rose Model ID comments - please do not delete
  302.24 -*/
  302.25 -
  302.26 -#ifndef	__MHTTPDATASUPPLIER_H__
  302.27 -#define	__MHTTPDATASUPPLIER_H__
  302.28 -
  302.29 -// System includes
  302.30 -#include <e32base.h>
  302.31 -
  302.32 -
  302.33 -//##ModelId=3C4C187903E5
  302.34 -class MHTTPDataSupplier
  302.35 -/** 
  302.36 -A data supplier - This class is used to deliver the response data
  302.37 -to the client, and is also used by the client to supply request
  302.38 -body data to HTTP in POST transactions. Data is supplied in a
  302.39 -number of parts. When a part is available it can be retreived
  302.40 -with GetNextDataPart. The returned descriptor will remain valid until
  302.41 -ReleaseData is called. 
  302.42 -
  302.43 -To use this class to supply POST data, you have a number of
  302.44 -options. If the post data needs to be URL Form encoded, you should
  302.45 -use CHTTPFormEncoder, which will do the encoding and interface to
  302.46 -the MHTTPDataSupplier for you. If you have all the data available,
  302.47 -return its length in OverallDataSize, and pass back all the data
  302.48 -from GetNextDataPart, returning ETrue to indicate that this is the
  302.49 -last part. 
  302.50 -
  302.51 -If you don't want to form all the data at once, but know how much
  302.52 -you'll eventualy have, return the total length from
  302.53 -OverallDataSize. When GetNextDataPart is first called, return the
  302.54 -first part. If GetNextDataPart is called again before ReleaseData,
  302.55 -you should still return the first part. Only when ReleaseData is
  302.56 -called should you move to the second part. If you don't know the
  302.57 -total size of the data, the procedure is the same but you should
  302.58 -return KErrNotFound from OverallDataSize.
  302.59 -
  302.60 -When the next part is available, clients should call
  302.61 -RHTTPTransaction::NotifyNewRequestBodyPartL to inform HTTP that
  302.62 -the new data is available. They can do this from ReleaseData if
  302.63 -more data is instantly available, or in some applications they may
  302.64 -need to call it some time later when the next part has been
  302.65 -assembled.
  302.66 -
  302.67 -Filter writers should note that the MHTTPDataSupplier interface is
  302.68 -designed to be used by 1 client, as 1 component needs to know when
  302.69 -to call ReleaseData(). However, filters can be written to
  302.70 -transform the data in some way. For instance, a filter could be
  302.71 -written to automaticaly handle a particular content encoding. When
  302.72 -this filter first receives a GotResponseBodyData, it should take a
  302.73 -copy of the response's body and replace the body with a
  302.74 -MHTTPDataSupplier supplied by the filter. The filter should then
  302.75 -receive the data from HTTP via the saved data supplier and give it
  302.76 -to the client via its own data supplier.
  302.77 -@publishedAll
  302.78 -@released
  302.79 -*/
  302.80 -	{
  302.81 - public:
  302.82 -	/** Obtain a data part from the supplier.  The data is guaranteed
  302.83 -		to survive until a call is made to ReleaseData().
  302.84 -		@param aDataPart - the data part
  302.85 -		@return ETrue if this is the last part. EFalse otherwise */
  302.86 -	//##ModelId=3C4C187A0026
  302.87 -	 virtual TBool GetNextDataPart(TPtrC8& aDataPart) = 0;
  302.88 -
  302.89 -	/** Release the current data part being held at the data
  302.90 -		supplier.  This call indicates to the supplier that the part
  302.91 -		is no longer needed, and another one can be supplied, if
  302.92 -		appropriate.  */
  302.93 -	//##ModelId=3C4C187A0025
  302.94 -	virtual void ReleaseData() = 0;
  302.95 -
  302.96 -	/** Obtain the overall size of the data being supplied, if known
  302.97 -		to the supplier.  Where a body of data is supplied in several
  302.98 -		parts this size will be the sum of all the part sizes. If
  302.99 -		the size is not known, KErrNotFound is returned; in this case
 302.100 -		the client must use the return code of GetNextDataPart to find
 302.101 -		out when the data is complete.
 302.102 -
 302.103 -		@return A size in bytes, or KErrNotFound if the size is not known.  */
 302.104 -	//##ModelId=3C4C187A001D
 302.105 -	virtual TInt OverallDataSize() = 0;
 302.106 -
 302.107 -	/** Reset the data supplier.  This indicates to the data supplier that it should
 302.108 -		return to the first part of the data.  This could be used in a situation where
 302.109 -		the data consumer has encountered an error and needs the data to be supplied
 302.110 -		afresh.  Even if the last part has been supplied (i.e. GetNextDataPart has
 302.111 -		returned ETrue), the data supplier should reset to the first part.
 302.112 -	
 302.113 -		If the supplier cannot reset it should return an error code; otherwise it should
 302.114 -		return KErrNone, where the reset will be assumed to have succeeded*/
 302.115 -	//##ModelId=3C4C187A001C
 302.116 -	virtual TInt Reset() = 0;
 302.117 -
 302.118 -private:
 302.119 -	// Some reserved methods for future expansion (e.g. better support
 302.120 -	// for ZCD)
 302.121 -	//##ModelId=3C4C187A001B
 302.122 -	inline virtual void MHDS_Reserved1();
 302.123 -	//##ModelId=3C4C187A0012
 302.124 -	inline virtual void MHDS_Reserved2();
 302.125 -	//##ModelId=3C4C187A0011
 302.126 -	inline virtual void MHDS_Reserved3();
 302.127 -	};
 302.128 -
 302.129 -inline void MHTTPDataSupplier::MHDS_Reserved1()
 302.130 -	{}
 302.131 -
 302.132 -inline void MHTTPDataSupplier::MHDS_Reserved2()
 302.133 -	{}
 302.134 -
 302.135 -inline void MHTTPDataSupplier::MHDS_Reserved3()
 302.136 -	{}
 302.137 -
 302.138 -#endif // __MHTTPDATASUPPLIER_H__ 
   303.1 --- a/epoc32/include/http/mhttpfilter.h	Tue Mar 16 16:12:26 2010 +0000
   303.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   303.3 @@ -1,95 +0,0 @@
   303.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   303.5 -// All rights reserved.
   303.6 -// This component and the accompanying materials are made available
   303.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   303.8 -// which accompanies this distribution, and is available
   303.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  303.10 -//
  303.11 -// Initial Contributors:
  303.12 -// Nokia Corporation - initial contribution.
  303.13 -//
  303.14 -// Contributors:
  303.15 -//
  303.16 -// Description:
  303.17 -//
  303.18 -
  303.19 -
  303.20 -
  303.21 -/**
  303.22 - @file MHTTPFilter.h
  303.23 - @warning : This file contains Rose Model ID comments - please do not delete
  303.24 -*/
  303.25 -
  303.26 -#ifndef __MHTTPFILTER_H__
  303.27 -#define __MHTTPFILTER_H__
  303.28 -
  303.29 -// System includes
  303.30 -#include <e32std.h>
  303.31 -#include <http/mhttpfilterbase.h>
  303.32 -#include <http/rhttpsession.h>
  303.33 -#include <http/thttpfilterhandle.h>
  303.34 -
  303.35 -
  303.36 -//##ModelId=3C4C187D03E1
  303.37 -class MHTTPFilter : public MHTTPFilterBase
  303.38 -/** 
  303.39 -A HTTP filter 
  303.40 -@publishedAll
  303.41 -@released
  303.42 -*/
  303.43 -	{
  303.44 - public:
  303.45 -	/** Called when the filter is being removed from a session's filter queue.
  303.46 -		@param aSession The session it's being removed from
  303.47 -		@param aHandle The filter handle. Complex filters may need to 
  303.48 -		refer to this to keep track of which particular registration is
  303.49 -		being unloaded.
  303.50 -	*/
  303.51 -	//##ModelId=3C4C187E0011
  303.52 -	IMPORT_C virtual void MHFUnload(RHTTPSession aSession, 
  303.53 -									THTTPFilterHandle aHandle);
  303.54 -
  303.55 -	/** Called when the filter is being added to the session's filter queue.
  303.56 -		@param aSession The session it's being added to.
  303.57 -		@param aHandle The filter handle. Complex filters may need to keep
  303.58 -		track of this, for instance if generating events in response to
  303.59 -		external stimuli
  303.60 -	*/
  303.61 -	//##ModelId=3C4C187E000E
  303.62 -	IMPORT_C virtual void MHFLoad(RHTTPSession aSession,
  303.63 -								  THTTPFilterHandle aHandle);
  303.64 - public:
  303.65 -	/** 
  303.66 -		@enum TPositions
  303.67 -		Default filter positions
  303.68 -	 */
  303.69 -	enum TPositions
  303.70 -		{
  303.71 -		/** The Protocol Handler :- At the base of the filter chain
  303.72 -			and nearest to the transport layer */
  303.73 -		EProtocolHandler	= 0,
  303.74 -		// Filters that should be downstream of any status-code related processing
  303.75 -		/** Filters to handle caching behaviours.*/
  303.76 -		ECache				= 100,
  303.77 -		/** Filters to handle particular status codes.
  303.78 -			e.g.Redirection and authentication. */
  303.79 -		EStatusCodeHandler	= 200,
  303.80 -		/**	The UAProf filter. */
  303.81 -		EUAProf				= 250,
  303.82 -		/** The cookie filter, and other filters that don't need to be
  303.83 -			concerned with resubmitting of transactions due to things
  303.84 -			like redirection. */
  303.85 -		ECookies			= 300,
  303.86 -		/** The validation filter and any other final tidy up or
  303.87 -            initial preprocessing of transactions*/
  303.88 -		ETidyUp = 400,
  303.89 -		/** Client filters that assume all standard behaviour is
  303.90 -            already there.*/
  303.91 -		EClientFilters		= 500,
  303.92 -		/** The client :- At the head of the filter chain : 
  303.93 -			No position above this must be used. */
  303.94 -		EClient				= 1000
  303.95 -		};
  303.96 -	}; 
  303.97 -
  303.98 -#endif // __MHTTPFILTER_H__
   304.1 --- a/epoc32/include/http/mhttpfilterbase.h	Tue Mar 16 16:12:26 2010 +0000
   304.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   304.3 @@ -1,88 +0,0 @@
   304.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   304.5 -// All rights reserved.
   304.6 -// This component and the accompanying materials are made available
   304.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   304.8 -// which accompanies this distribution, and is available
   304.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  304.10 -//
  304.11 -// Initial Contributors:
  304.12 -// Nokia Corporation - initial contribution.
  304.13 -//
  304.14 -// Contributors:
  304.15 -//
  304.16 -// Description:
  304.17 -//
  304.18 -
  304.19 -
  304.20 -
  304.21 -/**
  304.22 - @file MHTTPFilterBase.h
  304.23 - @warning : This file contains Rose Model ID comments - please do not delete
  304.24 -*/
  304.25 -
  304.26 -#ifndef	__MHTTPFILTERBASE_H__
  304.27 -#define	__MHTTPFILTERBASE_H__ 
  304.28 -
  304.29 -// System includes
  304.30 -#include <e32std.h>
  304.31 -
  304.32 -// Forward declarations
  304.33 -class RHTTPTransaction;
  304.34 -class THTTPEvent;
  304.35 -class THTTPSessionEvent;
  304.36 -
  304.37 -
  304.38 -//##ModelId=3A914DF9034F
  304.39 -class MHTTPFilterBase
  304.40 -/** 
  304.41 -A HTTP Filter. This is the base class for normal filters
  304.42 -(MHTTPFilter) which adds an unload function, and
  304.43 -MHTTPTransactionCallback, which doesn't add an unload function.  
  304.44 -@publishedAll
  304.45 -@released
  304.46 -*/
  304.47 -	{
  304.48 -public:
  304.49 -	/** Called when the filter's registration conditions are satisfied for events that
  304.50 -		occur on a transaction. Any Leaves must be handled by the appropriate MHFRunError.
  304.51 -		Note that this function is not allowed to leave if called with
  304.52 -		certain events. @see THTTPEvent
  304.53 -		@param aTransaction The transaction that the event has occurred on.
  304.54 -		@param aEvent The event that has occurred.
  304.55 -	*/
  304.56 -	//##ModelId=3A914DF9035D
  304.57 -	IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
  304.58 -
  304.59 -	/** Called when the filters registration conditions are satisfied for events that occur
  304.60 -		on the session. Any leaves must be handled by the appropriate MHFRunError.
  304.61 -		@param aEvent The session event that has occured.
  304.62 -	*/
  304.63 -	//##ModelId=3C4C37D401C1
  304.64 -	IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent);
  304.65 -
  304.66 -	/** Called when RunL leaves from a transaction event. This works in the same
  304.67 -		way as CActve::RunError; return KErrNone if you have handled the error.
  304.68 -		If you don't completely handle the error, a panic will occur.
  304.69 -		@param aError The leave code that RunL left with.
  304.70 -		@param aTransaction The transaction that was being processed.
  304.71 -		@param aEvent The Event that was being processed.
  304.72 -		@return KErrNone if the error has been cancelled or the code
  304.73 -		of the continuing error otherwise.
  304.74 -	*/
  304.75 -	//##ModelId=3A914DF90359
  304.76 -	IMPORT_C virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
  304.77 -
  304.78 -	/** Called when MHFRunL leaves from a session event. This works in the same
  304.79 -		way as CActve::RunError
  304.80 -		If you don't completely handle the error, a panic will occur.
  304.81 -		@param aError The leave code that RunL left with.
  304.82 -		@param aEvent The Event that was being processed.
  304.83 -		@return KErrNone if the error has been cancelled or the code
  304.84 -		of the continuing error otherwise.	
  304.85 -	*/
  304.86 -	//##ModelId=3C4C37D302C4
  304.87 -	IMPORT_C virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent);
  304.88 - 	};
  304.89 -
  304.90 -
  304.91 -#endif //	 __MHTTPFILTERBASE_H__
   305.1 --- a/epoc32/include/http/mhttpfiltercreationcallback.h	Tue Mar 16 16:12:26 2010 +0000
   305.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   305.3 @@ -1,57 +0,0 @@
   305.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   305.5 -// All rights reserved.
   305.6 -// This component and the accompanying materials are made available
   305.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   305.8 -// which accompanies this distribution, and is available
   305.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  305.10 -//
  305.11 -// Initial Contributors:
  305.12 -// Nokia Corporation - initial contribution.
  305.13 -//
  305.14 -// Contributors:
  305.15 -//
  305.16 -// Description:
  305.17 -//
  305.18 -
  305.19 -
  305.20 -
  305.21 -/**
  305.22 - @file MHTTPFilterCreationCallback.h
  305.23 - @warning : This file contains Rose Model ID comments - please do not delete
  305.24 -*/
  305.25 -
  305.26 -#ifndef __MHTTPFILTERCREATIONCALLBACK_H__
  305.27 -#define __MHTTPFILTERCREATIONCALLBACK_H__
  305.28 -
  305.29 -// Forward declarations
  305.30 -class TFilterConfigurationIterator;
  305.31 -
  305.32 -
  305.33 -//##ModelId=3C4C0F450132
  305.34 -class MHTTPFilterCreationCallback
  305.35 -/**
  305.36 -This class serves as a pure virtual interface required as a session callback to the client
  305.37 -when the client requires to configure the filters that are installed. The session calls the
  305.38 -method in the interface when the construction of the session is complete. The callback passes
  305.39 -an object of CFilterConfigurationIterator that allows the client to configure the filters that
  305.40 -are installed.
  305.41 -@publishedAll
  305.42 -@released
  305.43 -*/
  305.44 -	{
  305.45 -public: // Methods
  305.46 -	/**
  305.47 -	@fn				ConfigureSessionFiltersL(TFilterConfigurationIterator* aFilterConfigIter) = 0
  305.48 -	Intended Usage:	Pure virtual that is called by the session when the session construction
  305.49 -					is complete. This passes a CFilterConfigurationIterator back to the client
  305.50 -					which allows the client to install or install selected filters.
  305.51 -	@param			aFilterConfigIter Pointer to the filter configuration iterator. Ownership of
  305.52 -					CFilterConfigurationIterator remains with the session and is not transfered
  305.53 -	@pre 			The session has been constructed
  305.54 -	@post			The filters that are installed are have been configured by the client
  305.55 -	*/
  305.56 -	//##ModelId=3C4C0F450150
  305.57 -	virtual void ConfigureSessionFiltersL(TFilterConfigurationIterator* aFilterConfigIter) = 0;
  305.58 -	};
  305.59 -
  305.60 -#endif // __MHTTPFILTERCREATIONCALLBACK_H__
   306.1 --- a/epoc32/include/http/mhttpsessioneventcallback.h	Tue Mar 16 16:12:26 2010 +0000
   306.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   306.3 @@ -1,62 +0,0 @@
   306.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   306.5 -// All rights reserved.
   306.6 -// This component and the accompanying materials are made available
   306.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   306.8 -// which accompanies this distribution, and is available
   306.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  306.10 -//
  306.11 -// Initial Contributors:
  306.12 -// Nokia Corporation - initial contribution.
  306.13 -//
  306.14 -// Contributors:
  306.15 -//
  306.16 -// Description:
  306.17 -//
  306.18 -
  306.19 -
  306.20 -
  306.21 -/**
  306.22 - @file MHTTPSessionEventCallback.h
  306.23 - @warning : This file contains Rose Model ID comments - please do not delete
  306.24 -*/
  306.25 -
  306.26 -#ifndef	__MHTTPSESSIONEVENTCALLBACK_H__
  306.27 -#define	__MHTTPSESSIONEVENTCALLBACK_H__
  306.28 -
  306.29 -// System includes
  306.30 -#include <e32std.h>
  306.31 -#include <http/rhttptransaction.h>
  306.32 -#include <http/thttpevent.h>
  306.33 -
  306.34 -
  306.35 -//##ModelId=3C4C0F460242
  306.36 -class MHTTPSessionEventCallback
  306.37 -/**
  306.38 -The per-session callback for receiving session event callbacks.
  306.39 -@publishedAll
  306.40 -@released
  306.41 -*/
  306.42 -    {
  306.43 -public:	// Methods
  306.44 -
  306.45 -	/** Called when the filters registration conditions are satisfied for events that occur
  306.46 -		on the session. Any leaves must be handled by the appropriate MHFRunError.
  306.47 -		@param aEvent The session event that has occured.
  306.48 -	*/
  306.49 -	//##ModelId=3C4C0F460262
  306.50 -	virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent) =0;
  306.51 -
  306.52 -	/** Called when MHFRunL leaves from a session event. This works in the same
  306.53 -		way as CActve::RunError
  306.54 -		If you don't completely handle the error, a panic will occur.
  306.55 -		@param aError The leave code that RunL left with.
  306.56 -		@param aEvent The Event that was being processed.
  306.57 -		@return KErrNone if the error has been cancelled or the code
  306.58 -		of the continuing error otherwise.	
  306.59 -	*/
  306.60 -	//##ModelId=3C4C0F460256
  306.61 -	virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent) =0;
  306.62 -    };
  306.63 -
  306.64 -
  306.65 -#endif //	__MHTTPSESSIONEVENTCALLBACK_H__
   307.1 --- a/epoc32/include/http/mhttptransactioncallback.h	Tue Mar 16 16:12:26 2010 +0000
   307.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   307.3 @@ -1,67 +0,0 @@
   307.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   307.5 -// All rights reserved.
   307.6 -// This component and the accompanying materials are made available
   307.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   307.8 -// which accompanies this distribution, and is available
   307.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  307.10 -//
  307.11 -// Initial Contributors:
  307.12 -// Nokia Corporation - initial contribution.
  307.13 -//
  307.14 -// Contributors:
  307.15 -//
  307.16 -// Description:
  307.17 -//
  307.18 -
  307.19 -
  307.20 -
  307.21 -/**
  307.22 - @file MHTTPTransactionCallback.h
  307.23 - @warning : This file contains Rose Model ID comments - please do not delete
  307.24 -*/
  307.25 -
  307.26 -#ifndef	__MHTTPTRANSACTIONCALLBACK_H__
  307.27 -#define __MHTTPTRANSACTIONCALLBACK_H__
  307.28 -
  307.29 -// System includes
  307.30 -#include <e32std.h>
  307.31 -#include <http/rhttptransaction.h>
  307.32 -#include <http/thttpevent.h>
  307.33 -
  307.34 -
  307.35 -//##ModelId=3C4C1886022B
  307.36 -class MHTTPTransactionCallback
  307.37 -/** 
  307.38 -The per-transaction callback for receiving HTTP events.
  307.39 -@publishedAll
  307.40 -@released
  307.41 -*/
  307.42 -	{
  307.43 -public:	// Methods
  307.44 -
  307.45 -	/** Called when the filter's registration conditions are satisfied for events that
  307.46 -		occur on a transaction.
  307.47 -		Note that this function is not allowed to leave if called with
  307.48 -		certain events. @see THTTPEvent
  307.49 -		@param aTransaction The transaction that the event has occurred on.
  307.50 -		@param aEvent The event that has occurred.
  307.51 -		@leave Any Leaves must be handled by the appropriate MHFRunError.
  307.52 -	*/
  307.53 -	//##ModelId=3C4C1886024C
  307.54 -	virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent) =0;
  307.55 -
  307.56 -	/** Called when RunL leaves from a transaction event. This works in the same
  307.57 -		way as CActve::RunError; return KErrNone if you have handled the error.
  307.58 -		If you don't completely handle the error, a panic will occur.
  307.59 -		@param aError The leave code that RunL left with.
  307.60 -		@param aTransaction The transaction that was being processed.
  307.61 -		@param aEvent The Event that was being processed.
  307.62 -		@return KErrNone if the error has been cancelled or the code
  307.63 -		of the continuing error otherwise.
  307.64 -	*/
  307.65 -	//##ModelId=3C4C1886023F
  307.66 -	virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent) =0;
  307.67 -
  307.68 -	}; 
  307.69 -
  307.70 -#endif //	__MHTTPTRANSACTIONCALLBACK_H__
   308.1 --- a/epoc32/include/http/rhttpconnectioninfo.h	Tue Mar 16 16:12:26 2010 +0000
   308.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   308.3 @@ -1,119 +0,0 @@
   308.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   308.5 -// All rights reserved.
   308.6 -// This component and the accompanying materials are made available
   308.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   308.8 -// which accompanies this distribution, and is available
   308.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  308.10 -//
  308.11 -// Initial Contributors:
  308.12 -// Nokia Corporation - initial contribution.
  308.13 -//
  308.14 -// Contributors:
  308.15 -//
  308.16 -// Description:
  308.17 -//
  308.18 -
  308.19 -
  308.20 -
  308.21 -/**
  308.22 - @file RHTTPConnectionInfo.h
  308.23 - @warning : This file contains Rose Model ID comments - please do not delete
  308.24 -*/
  308.25 -
  308.26 -#ifndef	__RHTTPCONNECTIONINFO_H__
  308.27 -#define	__RHTTPCONNECTIONINFO_H__ 
  308.28 -
  308.29 -// System includes 
  308.30 -#include <e32std.h>
  308.31 -#include <stringpool.h>
  308.32 -#include <http/rhttppropertyset.h>
  308.33 -
  308.34 -//##ModelId=3C4C187A01CA
  308.35 -class RHTTPConnectionInfo : public RHTTPPropertySet
  308.36 -/**
  308.37 -The RHTTPConnectionInfo is used for setting/getting 
  308.38 -values used for setting up a connection over a protocol.  All methods are inherited
  308.39 -directly from RHTTPPropertySet.
  308.40 -
  308.41 -To lookup/change any of the following properties, use 
  308.42 -RHTTPPropertySet::Property(...) and RHTTPPropertySet::SetPropertyL(...) 
  308.43 -
  308.44 -To remove properties, use RHTTPPropertySet::RemoveProperty(...) for a named property,
  308.45 -or RHTTPPropertySet::RemoveAllProperties() for all.
  308.46 -
  308.47 -The following values are currently defined. Note that new values
  308.48 -could be added by individual filters. In general, properties
  308.49 -should be defined before the first transaction is created; filters
  308.50 -are not obliged to check with the connection info if the values
  308.51 -have changed after this point.
  308.52 -
  308.53 -HTTP::EProxyUsage (default HTTP::EDoNotUseProxy) (HTTP::EDoNotUseProxy | HTTP::EUseProxy)
  308.54 -
  308.55 -HTTP::EProxyAddress (A Uri for the Proxy server. Should include the port number
  308.56 -if it is not the default of 8080)
  308.57 -
  308.58 -HTTP::EMaxNumTransportHandlers (default 4)
  308.59 -
  308.60 -HTTP::EMaxNumTransPerTranspHndlr (default 5)
  308.61 -
  308.62 -HTTP::EHTTPVersion	(default HTTP::EHttp11) (HTTP::EHttp11 | HTTP::EHttp10)
  308.63 -
  308.64 -HTTP::EProtocol (default, and currently only defined value is HTTP::EHTTP)
  308.65 -
  308.66 -HTTP::EHttpBatching (default HTTP::EDoNotEnableBatching) (HTTP::EDoNotEnableBatching | HTTP::EEnableBatching)
  308.67 -
  308.68 -HTTP::EBatchingBufferSize (default 1400)
  308.69 -
  308.70 -HTTP Client can create a connection and set its own preferences, instead of using the 
  308.71 -default connection preferences specified in COMMS Database. In such cases, the client 
  308.72 -is responsible for creating the RSocketServ session and RConnection using
  308.73 -RSocketServ::Connect(..) and RConnection::Open(..). 	   
  308.74 -Client must also start the connection using RConnection::Start(..) and pass the 
  308.75 -connection preferences to the function using TConnPref.
  308.76 -The following session properties should then be set by the client.
  308.77 -
  308.78 -HTTP::EHttpSocketServ (Handle to RSocketServ session, which is the value obtained 
  308.79 -                       by calling RSocketServ::Handle())
  308.80 -
  308.81 -HTTP::EHttpSocketConnection (Reference to the RConnection object, obtained from 
  308.82 -                             reinterpret_cast(TInt, &connection))
  308.83 -
  308.84 -The HTTP Client can also specify what action should be take if during a secure 
  308.85 -handshakes the server cert cannot be trusted. The choice is for the handshake
  308.86 -to automatically cancelled or for a dialog to be raised and the user given the
  308.87 -option of continuing with the handshake or cancelling it. The following session
  308.88 -property should be used to specify the behaviour.
  308.89 -
  308.90 -HTTP::ESecureDialog (default HTTP::EDialogPrompt) (HTTP::EDialogPrompt | EDialogNoPrompt)
  308.91 -
  308.92 -The HTTP Client can specify the socket shutdown mode when the session is closing. At the time
  308.93 -of closing the session, any outstanding transactions on open sockets can specify that the
  308.94 -socket shutdown mode be set to immediate. The following property can be used to enable this
  308.95 -behaviour.
  308.96 -
  308.97 -HTTP::ESocketShutdownMode (default HTTP::ESocketShutdownNormal) (HTTP::ESocketShutdownNormal | HTTP::ESocketShutdownImmediate
  308.98 -
  308.99 -The HTTP Client can limit the number of transactions that it will send down one connection when
 308.100 -using pipelining. The following value should be set to an integer. When set any outstanding transaction
 308.101 -that exceed this number will either be sent separately down a different connection or will
 308.102 -be queued until a space becomes available.
 308.103 -
 308.104 -HTTP::EMaxNumTransactionsToPipeline (default KMaxTInt) (Integer)
 308.105 -
 308.106 -The session ID is an optional non-negative integer which is attached to the session and any sockets 
 308.107 -it creates. The session ID will be set on any sockets created by using RSocket::SetOpt() with
 308.108 -the level KSOLHttpSessionInfo and the name KSOHttpSessionId (defined in httpsocketconstants.h).
 308.109 -The session ID can be retrieved in a Flow Hook by implementing MIp6Hook::SetFlowOption() to 
 308.110 -look for the aforementioned option level and name. 
 308.111 -@see MIp6Hook
 308.112 -
 308.113 -HTTP::ESessionId (no default) (Integer)
 308.114 -
 308.115 -
 308.116 -@publishedAll
 308.117 -@released
 308.118 -*/
 308.119 -	{
 308.120 -	};
 308.121 -
 308.122 -#endif // __RHTTPCONNECTIONINFO_H__
   309.1 --- a/epoc32/include/http/rhttpfiltercollection.h	Tue Mar 16 16:12:26 2010 +0000
   309.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   309.3 @@ -1,91 +0,0 @@
   309.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   309.5 -// All rights reserved.
   309.6 -// This component and the accompanying materials are made available
   309.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   309.8 -// which accompanies this distribution, and is available
   309.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  309.10 -//
  309.11 -// Initial Contributors:
  309.12 -// Nokia Corporation - initial contribution.
  309.13 -//
  309.14 -// Contributors:
  309.15 -//
  309.16 -// Description:
  309.17 -//
  309.18 -
  309.19 -
  309.20 -
  309.21 -/**
  309.22 - @file RHTTPFilterCollection.h
  309.23 - @warning : This file contains Rose Model ID comments - please do not delete
  309.24 -*/
  309.25 -
  309.26 -#ifndef	__RHTTPFILTERCOLLECTION_H__
  309.27 -#define	__RHTTPFILTERCOLLECTION_H__ 
  309.28 -
  309.29 -// System includes
  309.30 -#include <e32std.h>
  309.31 -#include <http/thttpevent.h>
  309.32 -#include <stringpool.h>
  309.33 -
  309.34 -// Forward declarations
  309.35 -class CHTTPSession;
  309.36 -class RHTTPSession;
  309.37 -class MHTTPFilter;
  309.38 -class THTTPFilterIterator;
  309.39 -
  309.40 -
  309.41 -//##ModelId=3C4C187C02B3
  309.42 -class RHTTPFilterCollection
  309.43 -/** 
  309.44 -A Handle on the filter collection in a session. It provides
  309.45 -facilities for adding and deleting filters and for querying what
  309.46 -filters are installed. 
  309.47 -@publishedAll
  309.48 -@released
  309.49 -@see RHTTPSession::FilterCollection 
  309.50 -@see MHTTPFilter::TPositions
  309.51 -*/
  309.52 -	{
  309.53 - public:
  309.54 -	//##ModelId=3C4C187C02F9
  309.55 -	inline RHTTPFilterCollection();
  309.56 -
  309.57 -	//##ModelId=3C4C187C02E5
  309.58 -	IMPORT_C void AddFilterL(MHTTPFilter& aFilter, THTTPEvent aEvent,
  309.59 -							 RStringF aHeader, TInt aStatusCode, 
  309.60 - 							 TInt aPosition, RStringF aName);
  309.61 -
  309.62 -
  309.63 -	//##ModelId=3C4C187C02F1
  309.64 -	IMPORT_C void AddFilterL(MHTTPFilter& aFilter, THTTPEvent aEvent, 
  309.65 - 							 TInt aPosition, RStringF aName);
  309.66 -
  309.67 -	//##ModelId=3C4C187C02DF
  309.68 -	IMPORT_C TBool CanChangeFilters() const;
  309.69 -
  309.70 -	//##ModelId=3C4C187C02DD
  309.71 -	IMPORT_C void RemoveFilter(RStringF aFilter);
  309.72 -
  309.73 -	//##ModelId=3C4C187C02DB
  309.74 -	IMPORT_C THTTPFilterIterator Query(RStringF aName = RStringF());
  309.75 -
  309.76 -	//##ModelId=3C4C187C02D1
  309.77 -	inline RHTTPSession Session() const;
  309.78 -
  309.79 - private:
  309.80 -	friend class CHTTPSession;
  309.81 -	friend class RHTTPSession;
  309.82 -
  309.83 -	//##ModelId=3C4C187C02C9
  309.84 -	CHTTPSession* iImplementation;
  309.85 -	};
  309.86 -
  309.87 -/** Constructor
  309.88 -  */
  309.89 -inline RHTTPFilterCollection::RHTTPFilterCollection()
  309.90 -		: iImplementation(NULL)
  309.91 -	{
  309.92 -	}
  309.93 -
  309.94 -#endif //	__RHTTPFILTERCOLLECTION_H__
   310.1 --- a/epoc32/include/http/rhttpheaders.h	Tue Mar 16 16:12:26 2010 +0000
   310.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   310.3 @@ -1,214 +0,0 @@
   310.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   310.5 -// All rights reserved.
   310.6 -// This component and the accompanying materials are made available
   310.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   310.8 -// which accompanies this distribution, and is available
   310.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  310.10 -//
  310.11 -// Initial Contributors:
  310.12 -// Nokia Corporation - initial contribution.
  310.13 -//
  310.14 -// Contributors:
  310.15 -//
  310.16 -// Description:
  310.17 -//
  310.18 -
  310.19 -
  310.20 -
  310.21 -/**
  310.22 - @file RHTTPHeaders.h
  310.23 - @warning : This file contains Rose Model ID comments - please do not delete
  310.24 -*/
  310.25 -
  310.26 -#ifndef	__RHTTPHEADERS_H__
  310.27 -#define	__RHTTPHEADERS_H__
  310.28 -
  310.29 -// System includes
  310.30 -#include <http/thttphdrfielditer.h>
  310.31 -#include <http/thttphdrval.h>
  310.32 -
  310.33 -
  310.34 -//##ModelId=3C4C1880001A
  310.35 -class RHTTPHeaders
  310.36 -/** 
  310.37 -The collection of headers (or more correctly, header fields)
  310.38 -associated with a message. Header (fields) can be created, read and
  310.39 -modified. They may be composed of several parts (by repeated
  310.40 -invocations of API methods, see below) and may be assigned one or
  310.41 -more parameters.  Individual field parts and parameters take
  310.42 -values described using THTTPHdrVal.
  310.43 -@publishedAll
  310.44 -@released
  310.45 -@see RHTTPMessage
  310.46 -@see THTTPHdrVal
  310.47 -*/
  310.48 -	{
  310.49 - public:
  310.50 -	/** Default constructor
  310.51 -	*/
  310.52 -	//##ModelId=3C4C18800088
  310.53 -	inline RHTTPHeaders();
  310.54 -
  310.55 -	/**Getter methods
  310.56 -		Methods for reading data.
  310.57 -	*/
  310.58 -	//@{
  310.59 -	/** Obtain the number of parts in the named header field's value,
  310.60 -		Simple headers are created with a single part following one
  310.61 -		call to SetFieldL. Subsequent calls to SetFieldL create
  310.62 -		additional parts if the field exists already.
  310.63 -		@leave KErrNoMemory
  310.64 -		@param aFieldName The header name
  310.65 -		@return The number of parts, or zero if the field does not exist.  */
  310.66 -	//##ModelId=3C4C18800081
  310.67 -	IMPORT_C TInt FieldPartsL(RStringF aFieldName) const;
  310.68 -
  310.69 -	/** Obtain the named header field's value. The index
  310.70 -		of a part within the field must be specified. Parts are indexed
  310.71 -		from 0 and fields with only one part return the entire field for index 0
  310.72 -		@param aFieldName The header name
  310.73 -		@param aPartIdx The index of the part
  310.74 -		@param aHeaderValue The header field value
  310.75 -		@return An error condition. Returns KErrNotFound if there is not  a field with the 
  310.76 -				specifed field name
  310.77 -	*/
  310.78 -	//##ModelId=3C4C18800079
  310.79 -	IMPORT_C TInt GetField(RStringF aFieldName, 
  310.80 -								  TInt aPartIdx, THTTPHdrVal& aHeaderValue) const;
  310.81 -
  310.82 -	/** Obtain an Raw representation of the named header
  310.83 -		field's value.  Note that general client use of this method is
  310.84 -		strongly discouraged since it exposes the Raw representation of particular headers.  
  310.85 -		However it may be needed for some cases where received headers could not be
  310.86 -		decoded by HTTP.  It will normally be used internally when
  310.87 -		preparing header data to be transmitted with a request.
  310.88 -		Note that this API may not return the field values for all the headers.
  310.89 -		@param aFieldName The field name, e.g, 'Content-Type'
  310.90 -		@param aRawFieldData The field's data content, in an appropriate Raw form 
  310.91 -		@return An error condition. Returns KErrNotFound if there is not  a field with the 
  310.92 -				specifed field name
  310.93 -	*/
  310.94 -	//##ModelId=3C4C18800076
  310.95 -	IMPORT_C TInt GetRawField(RStringF aFieldName, 
  310.96 -							   TPtrC8& aRawFieldData) const;
  310.97 -
  310.98 -	/** Obtain the value of a named parameter, associated with the
  310.99 -		named header field.  An optional index to a part within the
 310.100 -		header field may be supplied, if not it is assumed that it is
 310.101 -		the first part.
 310.102 -		@param aFieldName The header name
 310.103 -		@param aParamName The parameter name
 310.104 -		@param aReturn The returned value. Note that this
 310.105 -		must be Copy()d by the caller, if it wants to keep the value.
 310.106 -		@param aPartIdx The optional index of the part
 310.107 -		@return An error condition. Returns KErrNotFound if there is not  a field with the 
 310.108 -				specifed field name  */
 310.109 -	//##ModelId=3C4C1880006C
 310.110 -	IMPORT_C TInt GetParam(RStringF aFieldName, 
 310.111 -								  RStringF aParamName, 
 310.112 -								  THTTPHdrVal& aReturn,
 310.113 -								  TInt aPartIdx = 0) const;
 310.114 -
 310.115 -	/** Access the fields within this header collection, via an
 310.116 -		iterator.  Each application of the iterator returns the name
 310.117 -		of the next field type.  This may then be accessed via
 310.118 -		RHTTPHeaders methods.
 310.119 -		@return The iterator.  */
 310.120 -	//##ModelId=3C4C1880006B
 310.121 -	IMPORT_C THTTPHdrFieldIter Fields() const;
 310.122 -	//@}
 310.123 -
 310.124 -	/** Setter Methods
 310.125 -		Methods for writing data.
 310.126 -	*/
 310.127 -	//@{
 310.128 -	/** Set a named field in the header.  On the first instance that
 310.129 -		this API method is used for a given field name, the first will
 310.130 -		be created.  On subsequent calls, the same field will be
 310.131 -		extended to have several parts, with a new part created to
 310.132 -		hold the supplied value.
 310.133 -		@param aFieldName The field name, e.g, 'Content-Type'
 310.134 -		@param aFieldValue The field value, e.g. 'text/html' */
 310.135 -	//##ModelId=3C4C18800060
 310.136 -	IMPORT_C void SetFieldL(RStringF aFieldName, THTTPHdrVal aFieldValue);
 310.137 -
 310.138 -	/** Set a named field in the header, and associate with it the
 310.139 -		supplied parameter. If the field doesn't already exist it will
 310.140 -		be created along with a parameter; if it does exist, then a
 310.141 -		new part will be created along with the parameter.
 310.142 -		@param aFieldName The field name, e.g. 'Accept'
 310.143 -		@param aFieldValue The field value. e.g. 'text/plain'
 310.144 -		@param aParamName The parameter name, e.g. 'q'
 310.145 -		@param aParamValue The parameter value, e.g. '0.3' */
 310.146 -	//##ModelId=3C4C18800063
 310.147 -	IMPORT_C void SetFieldL(RStringF aFieldName, THTTPHdrVal aFieldValue,
 310.148 -							RStringF aParamName, THTTPHdrVal aParamValue);
 310.149 -
 310.150 -	/** Set a parameter in an existing header. 
 310.151 -		@param aFieldName The field name, e.g. 'Accept'
 310.152 -		@param aPartIdx The part of the header to add the parameter to
 310.153 -		@param aParamName The parameter name, e.g. 'q'
 310.154 -		@param aParamValue The parameter value, e.g. '0.3'
 310.155 -		@leave KErrNotFoud if the field, or the part within the field doesn't exist
 310.156 -	*/
 310.157 -	//##ModelId=3C4C18800058
 310.158 -	IMPORT_C void SetParamL(RStringF aFieldName, RStringF aParamName, THTTPHdrVal aParamValue, TInt aPartIdx);
 310.159 -
 310.160 -	/** Set a named field in the header to contain the supplied Raw header
 310.161 -		data. If the header already exists then a LF and the new data will be added to the existing data. This is used to
 310.162 -		indicate that there are multiple instances of this header
 310.163 -
 310.164 -
 310.165 -		Note that general client use of this method is strongly
 310.166 -		discouraged since it exposes the raw representation of particular headers.  
 310.167 -		However it may be needed for some cases where headers to be transmitted have no encoding known
 310.168 -		to HTTP.  It will normally be used internally when receiving data from a service provider.
 310.169 -		@param aFieldName The field name, e.g, 'Content-Type'
 310.170 -		@param aRawFieldData The field's data content, in a raw form
 310.171 -		@param aFieldSeparator The header field separator
 310.172 -	*/
 310.173 -	//##ModelId=3C4C1880004F
 310.174 -	IMPORT_C void SetRawFieldL(RStringF aFieldName, 
 310.175 -							   const TDesC8& aRawFieldData,
 310.176 -							   const TDesC8& aFieldSeparator);
 310.177 -
 310.178 -	/** Remove, entirely, the named header field from the header
 310.179 -		collection. All its parts and associated parameters (where
 310.180 -		they exist) are also removed.
 310.181 -		@param aFieldName The field name.
 310.182 -		@return KErrNone if the removal is successful; KErrNotFound if
 310.183 -		the field didn't exist within the headers.  */
 310.184 -	//##ModelId=3C4C1880004D
 310.185 -	IMPORT_C TInt RemoveField(RStringF aFieldName);
 310.186 -
 310.187 -	/** Remove a single part of a header field. Just the part and any associated paramters are removed. If this 
 310.188 -		results in no parts being present in the header then it will also be removed
 310.189 -		@param aFieldName The header name
 310.190 -		@param aIndex The particular part of the field to be removed
 310.191 -		@return KErrNone if the removal is sucessful; KErrNotFound if the header didn't exist. No exception is raised if 
 310.192 -		the particular value is not found as part of that header */
 310.193 -	//##ModelId=3C4C18800043
 310.194 -	IMPORT_C TInt RemoveFieldPart(RStringF aFieldName, TInt aIndex);
 310.195 -
 310.196 -	/** Remove all the fields of this header collection
 310.197 -	*/
 310.198 -	//##ModelId=3C4C18800042
 310.199 -	IMPORT_C void RemoveAllFields();
 310.200 -
 310.201 -	//@}
 310.202 -
 310.203 -
 310.204 -private:
 310.205 -	friend class CHeaders;
 310.206 -	//##ModelId=3C4C1880003A
 310.207 -	CHeaders* iImplementation;
 310.208 -	};
 310.209 -
 310.210 -
 310.211 -inline RHTTPHeaders::RHTTPHeaders()
 310.212 -		: iImplementation(NULL)
 310.213 -	{
 310.214 -	}
 310.215 -
 310.216 -
 310.217 -#endif  // __RHTTPHEADERS_H__
   311.1 --- a/epoc32/include/http/rhttpmessage.h	Tue Mar 16 16:12:26 2010 +0000
   311.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   311.3 @@ -1,93 +0,0 @@
   311.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   311.5 -// All rights reserved.
   311.6 -// This component and the accompanying materials are made available
   311.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   311.8 -// which accompanies this distribution, and is available
   311.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  311.10 -//
  311.11 -// Initial Contributors:
  311.12 -// Nokia Corporation - initial contribution.
  311.13 -//
  311.14 -// Contributors:
  311.15 -//
  311.16 -// Description:
  311.17 -//
  311.18 -
  311.19 -
  311.20 -
  311.21 -/**
  311.22 - @file RHTTPMessage.h
  311.23 - @warning : This file contains Rose Model ID comments - please do not delete
  311.24 -*/
  311.25 -
  311.26 -#ifndef __RHTTPMESSAGE_H__
  311.27 -#define __RHTTPMESSAGE_H__
  311.28 -
  311.29 -// Forward declarations
  311.30 -class RHTTPHeaders;
  311.31 -class MHTTPDataSupplier;
  311.32 -class CMessage;
  311.33 -
  311.34 -
  311.35 -//##ModelId=3A375D1F0377
  311.36 -class RHTTPMessage 
  311.37 -/** 
  311.38 -An abstract HTTP message. In RFC2616, an HTTP message is defined as having a
  311.39 -header and an optional body.  This class is specialised for HTTP requests and
  311.40 -responses.
  311.41 -@publishedAll
  311.42 -@released
  311.43 -*/
  311.44 -	{
  311.45 - public:
  311.46 -	/// Default (uninitialised) constructor.
  311.47 -	//##ModelId=3A375DD60140
  311.48 -	inline RHTTPMessage();
  311.49 -
  311.50 -	/** Returns the header collection for the message */
  311.51 -	//##ModelId=3A375DDE0368
  311.52 -	IMPORT_C RHTTPHeaders GetHeaderCollection();
  311.53 -
  311.54 -	/** Sets the messages body, replacing any existing body. The body
  311.55 -        is supplied as a MHTTPDataSupplier, which will then return the
  311.56 -        data in 1 or more chunks on request.  
  311.57 -		@param aBody The data supplier that will supply the body.  */
  311.58 -	//##ModelId=3A375DE0019E
  311.59 -	IMPORT_C void SetBody(MHTTPDataSupplier& aBody);
  311.60 -
  311.61 -	/** Removes the body */
  311.62 -	//##ModelId=3B1E66FF004E
  311.63 -	IMPORT_C void RemoveBody();
  311.64 -
  311.65 -	/** Determine whether this message has any associated body data.
  311.66 -		@return ETrue if there is some body data, EFalse if not.
  311.67 -	*/
  311.68 -	//##ModelId=3A914DFF01E5
  311.69 -	IMPORT_C TBool HasBody() const;
  311.70 -
  311.71 -	/** Gets the body. The body is supplied as a MHTTPDataSupplier,
  311.72 -        which can be used to return the current data chunk, and to
  311.73 -        acknowledge when that chunk has been consumed by the client.
  311.74 -
  311.75 -		Note that the client can assume the body object will remain
  311.76 -		unchanged from when it receives the first data until the end
  311.77 -		of the transaction.
  311.78 -
  311.79 -		@return A data supplier that provides access to a body
  311.80 -		data chunk. NULL if the body has not been set, or has been removed */
  311.81 -	//##ModelId=3A375DE40190
  311.82 -	IMPORT_C MHTTPDataSupplier* Body() const;
  311.83 -
  311.84 - protected:
  311.85 -	//##ModelId=3A914DFF01C7
  311.86 -	CMessage* iImplementation;
  311.87 -};
  311.88 -
  311.89 -
  311.90 -inline RHTTPMessage::RHTTPMessage()
  311.91 -		: iImplementation(NULL)
  311.92 -	{
  311.93 -	};
  311.94 -
  311.95 -
  311.96 -#endif // __RHTTPMESSAGE_H__ 
   312.1 --- a/epoc32/include/http/rhttppropertyset.h	Tue Mar 16 16:12:26 2010 +0000
   312.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   312.3 @@ -1,86 +0,0 @@
   312.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   312.5 -// All rights reserved.
   312.6 -// This component and the accompanying materials are made available
   312.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   312.8 -// which accompanies this distribution, and is available
   312.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  312.10 -//
  312.11 -// Initial Contributors:
  312.12 -// Nokia Corporation - initial contribution.
  312.13 -//
  312.14 -// Contributors:
  312.15 -//
  312.16 -// Description:
  312.17 -//
  312.18 -
  312.19 -
  312.20 -
  312.21 -/**
  312.22 - @file RHTTPPropertySet.h
  312.23 - @warning : This file contains Rose Model ID comments - please do not delete
  312.24 -*/
  312.25 -
  312.26 -#ifndef __RHTTPPROPERTYSET_H__
  312.27 -#define __RHTTPPROPERTYSET_H__ 
  312.28 -
  312.29 -// System includes
  312.30 -#include <http/thttphdrval.h> 
  312.31 -
  312.32 -// Forward declarations
  312.33 -class CHeaderFieldPart;
  312.34 -
  312.35 -
  312.36 -//##ModelId=3C4C188201EA
  312.37 -class RHTTPPropertySet
  312.38 -/** 
  312.39 -A set of named THTTPHdrVal objects. Used for storing arbitrary
  312.40 -collections of information.  
  312.41 -@publishedAll
  312.42 -@released
  312.43 -*/
  312.44 -	{
  312.45 - public:
  312.46 -	/** Default (uninitialised) constructor. An object constructed in this way
  312.47 -		means 'use text-mode HTTP with default settings'
  312.48 -	 */
  312.49 -	//##ModelId=3A63217800E0
  312.50 -	IMPORT_C RHTTPPropertySet();
  312.51 -	
  312.52 -	/** Returns a property.
  312.53 -		@param aPropertyName The name of the property.
  312.54 -		@param aVal The returned value of the property (if defined)
  312.55 -		@return ETrue if the property exists
  312.56 -	*/
  312.57 -	//##ModelId=3C4C1882021F
  312.58 -	IMPORT_C TBool Property(RStringF aPropertyName, THTTPHdrVal& aVal) const;
  312.59 -
  312.60 -	/** Sets or creates a property. 
  312.61 -		@param aPropertyName The name of the property
  312.62 -		@param aValue The new value of the property
  312.63 -		@leave KErrNoMemory There was not enough memory.
  312.64 -	 */
  312.65 -	//##ModelId=3C4C1882021C
  312.66 -	IMPORT_C void SetPropertyL(RStringF aPropertyName, THTTPHdrVal aValue);
  312.67 -
  312.68 -	/** Removes a named property. 
  312.69 -		@param aPropertyName The name of the property
  312.70 -	 */
  312.71 -	//##ModelId=3C4C18820213
  312.72 -	IMPORT_C void RemoveProperty(RStringF aPropertyName);
  312.73 -
  312.74 -	/** Removes all properties
  312.75 -	 */
  312.76 -	//##ModelId=3C4C18820212
  312.77 -	IMPORT_C void RemoveAllProperties();
  312.78 -
  312.79 - protected:
  312.80 -	//##ModelId=3C4C18820208
  312.81 -	CHeaderFieldPart* iImplementation;
  312.82 -
  312.83 -	friend class CHeaderFieldPart;
  312.84 -	friend class CHTTPSession;
  312.85 -	};
  312.86 -
  312.87 -
  312.88 -
  312.89 -#endif //	__RHTTPPROPERTYSET_H__ 
   313.1 --- a/epoc32/include/http/rhttprequest.h	Tue Mar 16 16:12:26 2010 +0000
   313.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   313.3 @@ -1,77 +0,0 @@
   313.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   313.5 -// All rights reserved.
   313.6 -// This component and the accompanying materials are made available
   313.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   313.8 -// which accompanies this distribution, and is available
   313.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  313.10 -//
  313.11 -// Initial Contributors:
  313.12 -// Nokia Corporation - initial contribution.
  313.13 -//
  313.14 -// Contributors:
  313.15 -//
  313.16 -// Description:
  313.17 -//
  313.18 -
  313.19 -
  313.20 -
  313.21 -/**
  313.22 - @file RHTTPRequest.h
  313.23 - @warning : This file contains Rose Model ID comments - please do not delete
  313.24 -*/
  313.25 -
  313.26 -#ifndef __RHTTPREQUEST_H__
  313.27 -#define __RHTTPREQUEST_H__ 
  313.28 -
  313.29 -// System includes
  313.30 -#include <uri8.h>
  313.31 -#include <stringpool.h>
  313.32 -#include <http/rhttpmessage.h>
  313.33 -
  313.34 -
  313.35 -//##ModelId=3C4C186E0191
  313.36 -class RHTTPRequest : public RHTTPMessage
  313.37 -/** 
  313.38 -An HTTP Request.  This class extends the abstract HTTP Message to add an HTTP
  313.39 -method to be invoked on the resource at the remote HTTP server, and the URL that
  313.40 -identifies that resource.
  313.41 -@publishedAll
  313.42 -@released
  313.43 -*/
  313.44 -	{
  313.45 - public:
  313.46 -	/** Get Methods
  313.47 -		Methods for reading information from the response.
  313.48 -	*/
  313.49 -	//@{
  313.50 -	/// Gets the method name
  313.51 -	/// @return The method to be used in the HTTP request.
  313.52 -	//##ModelId=3C4C186E01B3
  313.53 -	IMPORT_C RStringF Method() const;
  313.54 -	/// Gets the URI
  313.55 -	/// @return The URI to be used in the HTTP request.
  313.56 -	//##ModelId=3C4C186E01B2
  313.57 -	IMPORT_C const TUriC8& URI() const;
  313.58 -	//@}
  313.59 -	/**Set Methods
  313.60 -		
  313.61 -		Methods for setting information. These methods will not be of
  313.62 -		use to the client; they are intended for the use of advanced
  313.63 -		filters
  313.64 -	*/
  313.65 -	//@{
  313.66 -	/// Sets the method name
  313.67 -	/// @param aMethod The method name to be used in the HTTP request.
  313.68 -	//##ModelId=3C4C186E01B0
  313.69 -	IMPORT_C void  SetMethod(RStringF aMethod);
  313.70 -	/// Sets the URI
  313.71 -	/// @param aURI The URI to be used in the HTTP request.
  313.72 -	//##ModelId=3C4C186E01A6
  313.73 -	IMPORT_C void SetURIL(const TUriC8& aURI);
  313.74 -	//@}
  313.75 -
  313.76 -	friend class CRequest;
  313.77 -	};
  313.78 -
  313.79 -
  313.80 -#endif //	__RHTTPREQUEST_H__  
   314.1 --- a/epoc32/include/http/rhttpresponse.h	Tue Mar 16 16:12:26 2010 +0000
   314.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   314.3 @@ -1,85 +0,0 @@
   314.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   314.5 -// All rights reserved.
   314.6 -// This component and the accompanying materials are made available
   314.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   314.8 -// which accompanies this distribution, and is available
   314.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  314.10 -//
  314.11 -// Initial Contributors:
  314.12 -// Nokia Corporation - initial contribution.
  314.13 -//
  314.14 -// Contributors:
  314.15 -//
  314.16 -// Description:
  314.17 -//
  314.18 -
  314.19 -
  314.20 -
  314.21 -/**
  314.22 - @file RHTTPResponse.h
  314.23 - @warning : This file contains Rose Model ID comments - please do not delete
  314.24 -*/
  314.25 -
  314.26 -#ifndef __RHTTPRESPONSE_H__
  314.27 -#define __RHTTPRESPONSE_H__
  314.28 -
  314.29 -// System includes
  314.30 -#include <e32std.h>
  314.31 -#include <http/rhttpmessage.h>
  314.32 -#include <stringpool.h>
  314.33 -
  314.34 -
  314.35 -//##ModelId=3A375D1203B5
  314.36 -class RHTTPResponse : public RHTTPMessage
  314.37 -/** 
  314.38 -An HTTP Response.  This class extends the abstract HTTP Message to add an HTTP
  314.39 -version, a status code and status text.
  314.40 -@publishedAll
  314.41 -@released
  314.42 -*/
  314.43 -	{
  314.44 -public:
  314.45 -	/**Get Methods
  314.46 -		Methods for reading information from the response.
  314.47 -	*/
  314.48 -	//@{
  314.49 -	/** 
  314.50 -		Returns the status code
  314.51 -	*/
  314.52 -	//##ModelId=3A914DF801B3
  314.53 -	IMPORT_C TInt StatusCode() const;
  314.54 -	/** Returns the status text, that is the text after the number on
  314.55 -        the first line of the response. */
  314.56 -	//##ModelId=3A914DF80195
  314.57 -	IMPORT_C RStringF StatusText() const;
  314.58 -	/**
  314.59 -		Returns the version of HTTP used by the server
  314.60 -	*/
  314.61 -	//##ModelId=3A914DF80163
  314.62 -	IMPORT_C TVersion Version() const;
  314.63 -	//@}
  314.64 -	/** Set Methods 
  314.65 -
  314.66 -		Methods for setting information. These methods will not be of
  314.67 -		use to the client; they are intended for the use of advanced
  314.68 -		filters
  314.69 -	*/
  314.70 -	//@{
  314.71 -	/** Sets the status code.
  314.72 -	 */
  314.73 -	//##ModelId=3A3765310382
  314.74 -	IMPORT_C void SetStatusCode(TInt aStatus);
  314.75 -	/// Sets the status string
  314.76 -	//##ModelId=3A914DF8019F
  314.77 -	IMPORT_C void SetStatusText(RStringF aStatusString);
  314.78 -	/// Sets the HTTP version
  314.79 -	//##ModelId=3A914DF8016D
  314.80 -	IMPORT_C void SetVersion(TVersion aVersion);
  314.81 -	//@}
  314.82 -
  314.83 -	friend class CResponse;
  314.84 -	};
  314.85 -
  314.86 -
  314.87 -
  314.88 -#endif // __RHTTPRESPONSE_H__
   315.1 --- a/epoc32/include/http/rhttpsession.h	Tue Mar 16 16:12:26 2010 +0000
   315.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   315.3 @@ -1,300 +0,0 @@
   315.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   315.5 -// All rights reserved.
   315.6 -// This component and the accompanying materials are made available
   315.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   315.8 -// which accompanies this distribution, and is available
   315.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  315.10 -//
  315.11 -// Initial Contributors:
  315.12 -// Nokia Corporation - initial contribution.
  315.13 -//
  315.14 -// Contributors:
  315.15 -//
  315.16 -// Description:
  315.17 -//
  315.18 -
  315.19 -
  315.20 -
  315.21 -/**
  315.22 - @file RHTTPSession.h
  315.23 - @warning : This file contains Rose Model ID comments - please do not delete
  315.24 -*/
  315.25 -
  315.26 -#ifndef __RHTTPSESSION_H__
  315.27 -#define __RHTTPSESSION_H__ 
  315.28 -
  315.29 -// System includes
  315.30 -#include <e32std.h>
  315.31 -#include <uri8.h>
  315.32 -#include <http/rhttpconnectioninfo.h>
  315.33 -#include <http/rhttpfiltercollection.h>
  315.34 -#include <http/rhttptransaction.h>
  315.35 -#include <http/mhttpdataoptimiser.h>
  315.36 -
  315.37 -// Forward declarations
  315.38 -class MHTTPTransactionCallback;
  315.39 -class CHTTPSession;
  315.40 -class MHTTPSessionEventCallback;
  315.41 -class MHTTPFilterCreationCallback;
  315.42 -class TCertInfo;
  315.43 -class CCertificate;
  315.44 -
  315.45 -/**
  315.46 -Constant to represent any HTTP Status code when registering filters.
  315.47 -@publishedAll
  315.48 -@released
  315.49 -*/
  315.50 -const TInt KAnyStatusCode = -1;
  315.51 -
  315.52 -
  315.53 -//##ModelId=3C4C187B0280
  315.54 -class RHTTPSession 
  315.55 -/** 
  315.56 -A session handle. A session is a set of HTTP transactions using
  315.57 -the same connection settings (e.g. proxy) and the same set of filters.
  315.58 -    Multi-homing support provided by HTTP framework enables clients to
  315.59 -    specify Connection preferences through the session property 
  315.60 -    EHttpSocketConnection.
  315.61 -
  315.62 -Note that RHTTPSession (and consequently the whole of HTTP)
  315.63 -depends on the active scheduler; a scheduler must be installed
  315.64 -when the session is opened and it must be running if a transaction
  315.65 -is actually to do anything.
  315.66 -@publishedAll
  315.67 -@released
  315.68 -@see RHTTPTransaction
  315.69 -*/
  315.70 -	{
  315.71 - public:
  315.72 -	/** Constructor.
  315.73 -		@post The session is closed. (It must be opened with OpenL)
  315.74 -		@see OpenL */
  315.75 -	//##ModelId=3C4C187B02EF
  315.76 -	inline RHTTPSession();
  315.77 -
  315.78 -	/** Sets the session event callback.
  315.79 -		Until it is set all incoming session events are consumed
  315.80 -	*/
  315.81 -	//##ModelId=3C4C187B02EA
  315.82 -	IMPORT_C void SetSessionEventCallback(MHTTPSessionEventCallback* aSessionEventCallback);
  315.83 -
  315.84 -	/** Send an session event
  315.85 -		@param aEvent. The session event to sent.
  315.86 -	*/
  315.87 -	//##ModelId=3C4C187B02E6
  315.88 -	IMPORT_C void SendSessionEventL(THTTPSessionEvent aStatus, THTTPSessionEvent::TDirection aDirection, 
  315.89 -							 THTTPFilterHandle aStart = THTTPFilterHandle::EClient);
  315.90 -
  315.91 -	/** Fail the session event
  315.92 -	*/
  315.93 -	IMPORT_C void FailSessionEvent(THTTPFilterHandle aStart = THTTPFilterHandle::EClient);
  315.94 -
  315.95 -	//##ModelId=3A49F701013F
  315.96 -	/** Opens the session using the default protocol HTTP/TCP. 
  315.97 -		This function leaves with an apropriate code if the open failed.
  315.98 -		@pre The session is closed. An active scheduler is installed.
  315.99 -		@post The session is open.
 315.100 -	*/
 315.101 -	//##ModelId=3C4C187B02DA
 315.102 - 	IMPORT_C void OpenL();
 315.103 -
 315.104 -	/** Opens the session using the protocol indicated by the parameter passed in.
 315.105 -		This function leaves with an apropriate code if the open failed.
 315.106 -		@param aProtocol The protocol required
 315.107 -		@pre The session is closed. An active scheduler is installed.
 315.108 -		@post The session is open.
 315.109 -	*/
 315.110 -	//##ModelId=3C4C187B02DB
 315.111 -	IMPORT_C void OpenL(const TDesC8& aProtocol);
 315.112 -
 315.113 -	/** Opens the session using the protocol indicated by the parameter passed in.
 315.114 -		This method should be used if configuring the installed filters is required.
 315.115 -		Once construction if the session is complete the callback method passed in is
 315.116 -		called passing in a TFilterConfigurationIterator to allow the filters that
 315.117 -		are installed to be configured.
 315.118 -		This function leaves with an apropriate code if the open failed.
 315.119 -		@param aProtocol The protocol required
 315.120 -		@param aSessionCallback The pointer to the object providing the call back method
 315.121 -		@pre The session is closed. An active scheduler is installed.
 315.122 -		@post The session is open.
 315.123 -	*/
 315.124 -	//##ModelId=3C4C187B02DD
 315.125 -	IMPORT_C void OpenL(const TDesC8& aProtocol, MHTTPFilterCreationCallback* aSessionCallback);
 315.126 -
 315.127 -	/**	This is a static methods that lists all the available protocols by adding the 
 315.128 -		prorocol descriptors to the descriptor array passed in. Any existing data in the
 315.129 -		descriptor array passed in is deleted.
 315.130 -		This function leaves if the descriptor array can not be updated with the appropriate
 315.131 -		array code.
 315.132 -		@param aProtocolArray A pointer array to heap based descriptors. The data in this
 315.133 -		array will be deleted and filled with descriptors containing the available protocols
 315.134 -		@see OpenL
 315.135 -	*/
 315.136 -	//##ModelId=3C4C187B02D4
 315.137 -	IMPORT_C static void ListAvailableProtocolsL(RPointerArray<HBufC8>& aProtocolArray);
 315.138 -
 315.139 -	/** Creates a transaction. 
 315.140 -		@pre The session is open
 315.141 -		@param aURI The URI that the request will be sent to.
 315.142 -		@param aCallback A callback for all status events relating to
 315.143 -		this transaction.
 315.144 -		@param aMethod The HTTP method to use (default: GET)
 315.145 -		@leave KErrNoMemory There was not enough memory.
 315.146 -	*/
 315.147 -	//##ModelId=3C4C187B02D0
 315.148 -	IMPORT_C RHTTPTransaction OpenTransactionL(const TUriC8& aURI, 
 315.149 -									  MHTTPTransactionCallback& aCallback, 
 315.150 -									  RStringF aMethod = RStringF());
 315.151 -
 315.152 -	/** Closes the session. All transactions will be stopped and closed 
 315.153 -		@post The session and all open transactions in it are closed.
 315.154 -	 */
 315.155 -	//##ModelId=3C4C187B02C8
 315.156 -	IMPORT_C void Close();
 315.157 -
 315.158 -
 315.159 -	//##ModelId=3C4C187B02C7
 315.160 -	IMPORT_C  static const TStringTable& GetTable();
 315.161 -
 315.162 -	/** Accessor for the HTTP string pool. 
 315.163 -		@return A handle for the string pool used in HTTP.
 315.164 -	 */
 315.165 -	//##ModelId=3C4C187B02C6
 315.166 -	IMPORT_C RStringPool StringPool() const;
 315.167 -
 315.168 -	/** Accessor for the connection info for this session, and which
 315.169 -		is used for all transactions in the session. Note that by and
 315.170 -		large, the connection info should be set up before the first
 315.171 -		transaction is created.  @return A handle to the connection
 315.172 -		inf.  */
 315.173 -	//##ModelId=3C4C187B02BE
 315.174 -	IMPORT_C RHTTPConnectionInfo ConnectionInfo() const;
 315.175 -
 315.176 -	/** Accessor for the filter collection. Note that the filter
 315.177 -        collection can't be edited after the first transaction has
 315.178 -        been created. */
 315.179 -	//##ModelId=3C4C187B02BD
 315.180 -	inline RHTTPFilterCollection FilterCollection() const;
 315.181 -
 315.182 -
 315.183 -	/** Accessor for the session headers. These are headers that will get added to each request
 315.184 -		They only become part of the transaction headers when a transaction is submitted and they will not 
 315.185 -		replace headers that already exist in the transaction request 
 315.186 -	*/
 315.187 -	//##ModelId=3C4C187B02BC
 315.188 -	IMPORT_C RHTTPHeaders RequestSessionHeadersL();
 315.189 -
 315.190 -
 315.191 -	/** Accessor for the response session headers. These are headers that will get added to each response if the 
 315.192 -	corresponding header doesn't already exist
 315.193 -	*/
 315.194 -	//##ModelId=3C4C187B02B6
 315.195 -	IMPORT_C RHTTPHeaders ResponseSessionHeadersL();
 315.196 -
 315.197 -	/** Equality operator.
 315.198 -		@param aTrans The session to compare this one to.
 315.199 -	*/
 315.200 -	//##ModelId=3C4C187B02B4
 315.201 -	TBool operator==(RHTTPSession aTrans) const;
 315.202 -	/** Inequality operator
 315.203 -		@param aTrans The session to compare this one to.
 315.204 -	*/
 315.205 -
 315.206 -	//##ModelId=3C4C187B02B2
 315.207 -	TBool operator!=(RHTTPSession aTrans) const;
 315.208 -
 315.209 -	/** Obtain the server certificate information for this session.  This function
 315.210 -		should only be used for WSP, for text-mode use RHttpTransaction::ServerCert.
 315.211 -		@see RHttpTransaction::ServerCert
 315.212 -		@param	aServerCert A client supplied object into which the certificate
 315.213 -		information will be placed.
 315.214 -		@return KErrNone if certificate has been completed, KErrNotSupported if
 315.215 -		this function is called for text-mode.
 315.216 -		@deprecated v9.2 onwards - maintained for compatibility with v9.1 and before
 315.217 -					TCertInfo has been deprecated since v9.2. CCertificate may be used as an alternative.
 315.218 -	*/
 315.219 -	//##ModelId=3C4C187B02AA
 315.220 -	IMPORT_C TInt ServerCert(TCertInfo& aServerCert);
 315.221 -
 315.222 -
 315.223 -	/** Obtain the server certificate information for this session.  This function
 315.224 -		should only be used for WSP. HTTP should use RHttpTransaction::ServerCert.
 315.225 -		@see RHttpSession::ServerCert
 315.226 -		@internalAll
 315.227 -		@prototype
 315.228 -		@return	a CCertificate pointer to an CWTLSCertificate object.
 315.229 -		Calling code can safely cast to CWTLSCertificate if using  "WSP/WSP".
 315.230 -		NULL returned if certificate information not found.
 315.231 -	*/
 315.232 -	IMPORT_C const CCertificate* RHTTPSession::ServerCert();
 315.233 -
 315.234 -	/** Connect this WSP session. This function does nothing when called for text-mode.
 315.235 -	*/
 315.236 -	//##ModelId=3C4C187B02A9
 315.237 -	IMPORT_C void ConnectL();
 315.238 -
 315.239 -	/** Disconnect this WSP session. This function does nothing when called for text-mode.
 315.240 -	*/
 315.241 -	//##ModelId=3C4C187B02A8
 315.242 -	IMPORT_C void DisconnectL();
 315.243 -	
 315.244 -	/**Set the default Proxy for Http Session. This function reads default proxy information,if available, from CommsDat
 315.245 -	and uses it for the current Session.
 315.246 -	@internalAll
 315.247 -	*/
 315.248 -	IMPORT_C void SetupDefaultProxyFromCommsDatL();
 315.249 -
 315.250 -	/**Sets the HTTP data optimiser for the session.
 315.251 -	@param aHttpOptimiser An object of the implementation of interface, MHttpDataOptimiser, supplied by the client.
 315.252 -	@publishedPartner
 315.253 -	*/
 315.254 -	IMPORT_C void SetupHttpDataOptimiser (MHttpDataOptimiser& aHttpOptimiser);
 315.255 - 
 315.256 - 	/**Returns the object of the MHttpDataOptimiser implementation class.
 315.257 -	@internalTechnology
 315.258 -	*/
 315.259 - 	IMPORT_C MHttpDataOptimiser* HttpDataOptimiser ();
 315.260 -
 315.261 -private:
 315.262 -	friend class RHTTPFilterCollection;
 315.263 -	friend class CHTTPSession;
 315.264 -
 315.265 -	//##ModelId=3C4C187B0296
 315.266 -	CHTTPSession* iImplementation;
 315.267 -};
 315.268 -
 315.269 -inline RHTTPSession::RHTTPSession()
 315.270 -		: iImplementation(0)
 315.271 -	{
 315.272 -	}
 315.273 -
 315.274 -
 315.275 -inline RHTTPFilterCollection RHTTPSession::FilterCollection() const
 315.276 -	{
 315.277 -	RHTTPFilterCollection c;
 315.278 -	c.iImplementation = iImplementation;
 315.279 -	return c;
 315.280 -	}
 315.281 -
 315.282 -inline TBool RHTTPSession::operator==(RHTTPSession aTrans) const
 315.283 -	{
 315.284 -	return (iImplementation == aTrans.iImplementation);
 315.285 -	};
 315.286 -inline TBool RHTTPSession::operator!=(RHTTPSession aTrans) const
 315.287 -	{
 315.288 -	return !(*this == aTrans);
 315.289 -	};
 315.290 -
 315.291 -
 315.292 -
 315.293 -inline RHTTPSession RHTTPFilterCollection::Session() const
 315.294 -	{
 315.295 -	RHTTPSession s;
 315.296 -	s.iImplementation = iImplementation;
 315.297 -	return s;
 315.298 -	}
 315.299 -
 315.300 -
 315.301 -
 315.302 -
 315.303 -#endif // __RHTTPSESSION_H__
   316.1 --- a/epoc32/include/http/rhttptransaction.h	Tue Mar 16 16:12:26 2010 +0000
   316.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   316.3 @@ -1,225 +0,0 @@
   316.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   316.5 -// All rights reserved.
   316.6 -// This component and the accompanying materials are made available
   316.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   316.8 -// which accompanies this distribution, and is available
   316.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  316.10 -//
  316.11 -// Initial Contributors:
  316.12 -// Nokia Corporation - initial contribution.
  316.13 -//
  316.14 -// Contributors:
  316.15 -//
  316.16 -// Description:
  316.17 -//
  316.18 -
  316.19 -
  316.20 -
  316.21 -/**
  316.22 - @file RHTTPTransaction.h
  316.23 - @warning : This file contains Rose Model ID comments - please do not delete
  316.24 -*/
  316.25 -
  316.26 -#ifndef __RHTTPTRANSACTION_H__
  316.27 -#define __RHTTPTRANSACTION_H__ 
  316.28 -
  316.29 -// System includes
  316.30 -#include <http/thttpevent.h>
  316.31 -#include <http/rhttpresponse.h>
  316.32 -#include <http/rhttprequest.h>
  316.33 -#include <http/rhttptransactionpropertyset.h>
  316.34 -#include <http/thttpfilterhandle.h>
  316.35 -#include <http/mhttpdataoptimiser.h>
  316.36 -
  316.37 -// Forward declarations
  316.38 -class CHTTPTransaction;
  316.39 -class CTransaction;
  316.40 -class MHTTPTransactionCallback;
  316.41 -class RHTTPSession;
  316.42 -class TCertInfo;
  316.43 -class CCertificate;
  316.44 -
  316.45 -
  316.46 -//##ModelId=3C4C18860091
  316.47 -class RHTTPTransaction 
  316.48 -/**
  316.49 -A HTTP Transaction. This encapsulates 1 HTTP request and
  316.50 -response. A Transaction is associated with a session, and must be
  316.51 -created using the session's CreateTransactionL method.
  316.52 -@publishedAll
  316.53 -@released
  316.54 -@see RHTTPSession
  316.55 -@see RHTTPSession::CreateTransactionL
  316.56 -*/
  316.57 -	{
  316.58 - public:
  316.59 -	/** 
  316.60 -		Default (uninitialised) constructor
  316.61 -	*/
  316.62 -	//##ModelId=3C4C188600F5
  316.63 -	inline RHTTPTransaction();
  316.64 -
  316.65 -	/** Submits a transaction. Once all the headers and other details
  316.66 -		have been set up, this call actualy causes the request to be
  316.67 -		made.
  316.68 -		@leave KErrNoMemory There was not enough memory.
  316.69 -	*/
  316.70 -	//##ModelId=3C4C188600ED
  316.71 -	IMPORT_C void SubmitL(THTTPFilterHandle aStart = 
  316.72 -						  THTTPFilterHandle::EClient);
  316.73 -
  316.74 -	/** Notify HTTP of the availability of more request body data,
  316.75 -		when submitting body data in several parts.
  316.76 -		
  316.77 -		@param aStart The filter supplying the new data. This will almost always be the client (default value)
  316.78 -		@leave KErrNoMemory There was not enough memory.
  316.79 -	*/
  316.80 -	//##ModelId=3C4C188600EB
  316.81 -	IMPORT_C void NotifyNewRequestBodyPartL(THTTPFilterHandle aStart = 
  316.82 -											 THTTPFilterHandle::EClient);
  316.83 -
  316.84 -	/** Sends a status message to all relevant filters. This function
  316.85 -		is predominantly used by filters, rather than by the client.
  316.86 -		@param aStatus The status message to send.  
  316.87 -		@param aDirection The direction down the filter queue that this event 
  316.88 -		will be propogated.
  316.89 -		@leave KErrNoMemory There was not enough memory.
  316.90 -	*/
  316.91 -	//##ModelId=3C4C188600E2
  316.92 -	IMPORT_C void SendEventL(THTTPEvent aStatus, 
  316.93 -							 THTTPEvent::TDirection aDirection, 
  316.94 -							 THTTPFilterHandle aStart);
  316.95 -
  316.96 -	/** Gets the response. Note that the returned response may not be
  316.97 -		valid if it hasn't been created yet.
  316.98 -		@see RHTTPMessage::IsValid()
  316.99 -	*/
 316.100 -//##ModelId=3C4C188600E1
 316.101 -	IMPORT_C RHTTPResponse Response() const;
 316.102 -
 316.103 -	/// Gets the request.
 316.104 -	//##ModelId=3C4C188600DA
 316.105 -	IMPORT_C RHTTPRequest Request() const;
 316.106 -
 316.107 -	/// Returns the session associated with the transaction.
 316.108 -	//##ModelId=3C4C188600D9
 316.109 -	IMPORT_C RHTTPSession Session() const;
 316.110 -
 316.111 -	/** Returns the transaction's property set. This is used by filters
 316.112 -		to store transaction-specific information, and by clients to
 316.113 -		specify things like reload or no cache behaviour.
 316.114 -	*/
 316.115 -	//##ModelId=3C4C188600D8
 316.116 -	IMPORT_C RHTTPTransactionPropertySet PropertySet() const;
 316.117 -
 316.118 -	/** Cancels the transaction.
 316.119 -	
 316.120 -		@param aStart The entity that is initiating the cancel (defaults
 316.121 -		to the client). See THTTPFilterHandle for the values this can take.
 316.122 -	*/
 316.123 -	//##ModelId=3C4C188600CF
 316.124 -	IMPORT_C void Cancel(THTTPFilterHandle aStart = 
 316.125 -						 THTTPFilterHandle::EClient);
 316.126 -
 316.127 -	/** Closes the transaction and frees all owned resources.
 316.128 -		Transactions must be opened using RHTTPSession::OpenTransactionL.
 316.129 -		It is also closed when you close the session.
 316.130 -	 */
 316.131 -	//##ModelId=3C4C188600CE
 316.132 -	IMPORT_C void Close();
 316.133 -
 316.134 -	/** This function should be called by filters when they have
 316.135 -	 failed due to running out of memory. It cancels the transaction
 316.136 -	 and sends the synchronous events EUnrecoverableError and EFailed
 316.137 -	 to the client to inform it of the failure. For instance in a
 316.138 -	 filter that attempts to send an event to the client from a
 316.139 -	 MHFRunError to inform the client of a failure, if the call to
 316.140 -	 SendEventL leaves, Fail() may be used to 'give up'. */
 316.141 -	//##ModelId=3C4C188600C7
 316.142 -	IMPORT_C void Fail(THTTPFilterHandle aStart = 
 316.143 -					   THTTPFilterHandle::ECurrentFilter);
 316.144 -
 316.145 -	/** Equality operator to check if this transaction is the same as that one.
 316.146 -		@param aTrans The transaction to compare this one to.
 316.147 -	*/
 316.148 -	//##ModelId=3C4C188600C5
 316.149 -	TBool operator==(RHTTPTransaction aTrans) const;
 316.150 -	/** Inequality operator
 316.151 -		@param aTrans The transaction to compare this one to.
 316.152 -	*/
 316.153 -	//##ModelId=3C4C188600C3
 316.154 -	TBool operator!=(RHTTPTransaction aTrans) const;
 316.155 -	/** Obtain this transaction's ID, which is unique within its
 316.156 -		session.  This is mostly used for producing a
 316.157 -		slightly-meaningful way of identifying transactions in logging
 316.158 -		code.
 316.159 -		@return The transaction ID.  
 316.160 -	*/
 316.161 -	//##ModelId=3C4C188600BB
 316.162 -	IMPORT_C TInt Id() const;
 316.163 -
 316.164 -	/** Obtain the server certificate information for this transaction.  This function
 316.165 -		should only be used for text-mode, for WSP use RHttpSession::ServerCert.
 316.166 -		@see RHttpSession::ServerCert
 316.167 -		@param	aServerCert A client supplied object into which the certificate
 316.168 -		information will be placed.
 316.169 -		@return KErrNone if certificate has been completed, KErrNotSupported if
 316.170 -		this function is called for WSP.
 316.171 -		@deprecated v9.2 onwards - maintained for compatibility with v9.1 and before
 316.172 -					TCertInfo has been deprecated since v9.2. CCertificate may be used as an alternative.
 316.173 -	*/
 316.174 -	//##ModelId=3C4C188600B9
 316.175 -	IMPORT_C TInt ServerCert(TCertInfo& aServerCert);
 316.176 -
 316.177 -	/** Obtain the server certificate information for this transaction.  This function
 316.178 -		should only be used for HTTP. WSP should use RHttpSession::ServerCert.
 316.179 -		@see RHttpSession::ServerCert
 316.180 -		@internalAll
 316.181 -		@prototype
 316.182 -		@return	a CCertificate pointer to an CX509Certificate object.
 316.183 -		Calling code can safely cast to CX509Certificate if using  "HTTP/TCP".
 316.184 -		NULL returned if certificate information not found.
 316.185 -	*/
 316.186 -	IMPORT_C const CCertificate* ServerCert();
 316.187 -	
 316.188 -	/** Obtain the cipher suite information for this transaction.
 316.189 -		@return RString containing the cipher suite as per RFC2246.
 316.190 -	*/
 316.191 -	IMPORT_C RString CipherSuite();
 316.192 -	
 316.193 -	/**Sets the HTTP data optimiser for the transaction.
 316.194 -	@param aHttpOptimiser An object of the implementation of interface, MHttpDataOptimiser, supplied by the client.
 316.195 -	@publishedPartner
 316.196 -	*/
 316.197 - 	IMPORT_C void SetupHttpDataOptimiser (MHttpDataOptimiser& aHttpOptimiser);
 316.198 - 
 316.199 - 	/**Returns the object of the MHttpDataOptimiser implementation class.
 316.200 -	@internalTechnology
 316.201 -	*/
 316.202 - 	IMPORT_C MHttpDataOptimiser* HttpDataOptimiser ();
 316.203 -
 316.204 -private:
 316.205 -	friend class RHTTPSession;
 316.206 -	friend class CTransaction;
 316.207 -
 316.208 - private:
 316.209 -	//##ModelId=3C4C188600A7
 316.210 -	CTransaction* iImplementation;
 316.211 -	}; 
 316.212 -
 316.213 -inline TBool RHTTPTransaction::operator==(RHTTPTransaction aTrans) const
 316.214 -	{
 316.215 -	return (iImplementation == aTrans.iImplementation);
 316.216 -	};
 316.217 -inline TBool RHTTPTransaction::operator!=(RHTTPTransaction aTrans) const
 316.218 -	{
 316.219 -	return !(*this == aTrans);
 316.220 -	};
 316.221 -
 316.222 -inline RHTTPTransaction::RHTTPTransaction()
 316.223 -		: iImplementation(NULL)
 316.224 -	{
 316.225 -	}
 316.226 -
 316.227 -
 316.228 -#endif // __RHTTPTRANSACTION_H__
   317.1 --- a/epoc32/include/http/rhttptransactionpropertyset.h	Tue Mar 16 16:12:26 2010 +0000
   317.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   317.3 @@ -1,61 +0,0 @@
   317.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   317.5 -// All rights reserved.
   317.6 -// This component and the accompanying materials are made available
   317.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   317.8 -// which accompanies this distribution, and is available
   317.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  317.10 -//
  317.11 -// Initial Contributors:
  317.12 -// Nokia Corporation - initial contribution.
  317.13 -//
  317.14 -// Contributors:
  317.15 -//
  317.16 -// Description:
  317.17 -//
  317.18 -
  317.19 -
  317.20 -
  317.21 -/**
  317.22 - @file RHTTPTransactionPropertySet.h
  317.23 - @warning : This file contains Rose Model ID comments - please do not delete
  317.24 -*/
  317.25 -
  317.26 -#ifndef __RHTTPTRANSACTIONPROPERTYSET_H__
  317.27 -#define __RHTTPTRANSACTIONPROPERTYSET_H__ 
  317.28 -
  317.29 -// System includes
  317.30 -#include <http/rhttppropertyset.h>
  317.31 -
  317.32 -
  317.33 -//##ModelId=3B1E670402C2
  317.34 -class RHTTPTransactionPropertySet : public RHTTPPropertySet
  317.35 -/** 
  317.36 -The set of properties of a transaction. This is used by filters to
  317.37 -store per-transaction information, and is also used by the client
  317.38 -to specify transaction properties (such as no caching, reload and
  317.39 -so on) 
  317.40 -
  317.41 -Transaction properties always take precendence over session properties.
  317.42 -
  317.43 -To lookup/change any of the following properties, use 
  317.44 -RHTTPPropertySet::Property(...) and RHTTPPropertySet::SetPropertyL(...) 
  317.45 -
  317.46 -To remove properties, use RHTTPPropertySet::RemoveProperty(...) for a named property,
  317.47 -or RHTTPPropertySet::RemoveAllProperties() for all.
  317.48 -
  317.49 -
  317.50 -The following values are currently defined.
  317.51 -
  317.52 -HTTP::EProxyUsage (HTTP::EDoNotUseProxy | HTTP::EUseProxy)
  317.53 -
  317.54 -HTTP::EProxyAddress (A Uri for the Proxy server. Should include the port number
  317.55 -if it is not the default of 8080)
  317.56 -
  317.57 -HTTP::EHttpPipelining (default HTTP::EEnablePipelining) (HTTP::EEnablePipelining | HTTP::EDisablePipelining)
  317.58 -@publishedAll
  317.59 -@released
  317.60 -*/
  317.61 -	{
  317.62 -	};
  317.63 -
  317.64 -#endif //	__RHTTPTRANSACTIONPROPERTYSET_H__ 
   318.1 --- a/epoc32/include/http/tfilterconfigurationiter.h	Tue Mar 16 16:12:26 2010 +0000
   318.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   318.3 @@ -1,201 +0,0 @@
   318.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   318.5 -// All rights reserved.
   318.6 -// This component and the accompanying materials are made available
   318.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   318.8 -// which accompanies this distribution, and is available
   318.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  318.10 -//
  318.11 -// Initial Contributors:
  318.12 -// Nokia Corporation - initial contribution.
  318.13 -//
  318.14 -// Contributors:
  318.15 -//
  318.16 -// Description:
  318.17 -//
  318.18 -
  318.19 -
  318.20 -
  318.21 -/**
  318.22 - @file TFilterConfigurationIter.h
  318.23 - @warning : This file contains Rose Model ID comments - please do not delete
  318.24 -*/
  318.25 -
  318.26 -#ifndef __TFILTERCONFIGURATIONITER_H__
  318.27 -#define __TFILTERCONFIGURATIONITER_H__
  318.28 -
  318.29 -// System includes
  318.30 -#include <e32std.h>
  318.31 -
  318.32 -// User includes
  318.33 -#include <http/tfilterinformation.h>
  318.34 -
  318.35 -// Forward declarations
  318.36 -class CHTTPSession;
  318.37 -class TSessionFilterInfo;
  318.38 -class CFilterConfigurationIterator_UnitTestContext;
  318.39 -
  318.40 -
  318.41 -//##ModelId=3C4C0F45009C
  318.42 -class TFilterConfigurationIterator
  318.43 -/**
  318.44 -This class can only be created and destroyed by the session. It is supplied to the
  318.45 -client, if the client wishes to configure the filter that are installed or install
  318.46 -filters that must be installed explicitly. The API of the class allows the client to
  318.47 -navigate, install, uninstall and query the filter list. The filters visible in this
  318.48 -list are only the implicit and explicit filters declared as plugins. This iterator MUST
  318.49 -be initialised using the First() method and the return error code checked before any
  318.50 -other operations are called.
  318.51 -@publishedAll
  318.52 -@released
  318.53 -*/
  318.54 -	{
  318.55 -public: // Methods
  318.56 -	/**
  318.57 -	@fn				First()
  318.58 -	Intended Usage:	This method sets the current filter to the first filter in the list.
  318.59 -					This method must be used initially to set the
  318.60 -					current filter and the returned error code must be noted prior to
  318.61 -					using any of the methods that query or modify the current filter.
  318.62 -	@return			KErrNone if the first filter is found, KErrNotFound if the filter 
  318.63 -					can't be found or no filters exist
  318.64 -	@pre 			Object is constructed
  318.65 -	@post			Current filter is set to the first filter in the list
  318.66 -	*/
  318.67 -	//##ModelId=3C4C0F45010C
  318.68 -	IMPORT_C TInt First();
  318.69 -
  318.70 -	/**
  318.71 -	@fn				Next()
  318.72 -	Intended Usage:	This method sets the current filter to the next filter in the list.
  318.73 -	@return			KErrNone if the next filter is found, KErrNotFound if the filter 
  318.74 -					can't be found, or no filters exist, or the current filter is at the
  318.75 -					end of the list.
  318.76 -	@pre 			Object is constructed
  318.77 -	@post			Current filter is set to the next filter in the list
  318.78 -	*/
  318.79 -	//##ModelId=3C4C0F45010B
  318.80 -	IMPORT_C TInt Next();
  318.81 -
  318.82 -	/**
  318.83 -	@fn				AtStart()
  318.84 -	Intended Usage: This method indicates whether the current filter is the first filter in
  318.85 -					the list. This method will panic if the iterator has not been initialised
  318.86 -					using the First() method.
  318.87 -	@return			ETrue if the current filter is the first in the list
  318.88 -	@pre 			The iterator has been initialised using the First() method
  318.89 -	*/
  318.90 -	//##ModelId=3C4C0F45010A
  318.91 -	IMPORT_C TBool AtStart();
  318.92 -
  318.93 -	/**
  318.94 -	@fn				AtEnd()
  318.95 -	Intended Usage: This method indicates whether the current filter is the last filter in
  318.96 -					the list. This method will panic if the iterator has not been initialised
  318.97 -					using the First() method.
  318.98 -	@return			ETrue if the current filter is the last in the list
  318.99 -	@pre 			The iterator has been initialised using the First() method
 318.100 -	*/
 318.101 -	//##ModelId=3C4C0F450101
 318.102 -	IMPORT_C TBool AtEnd();
 318.103 -
 318.104 -	/**
 318.105 -	@fn				FindByDataType(const TDesC8& aDataType)
 318.106 -	Intended Usage:	This method find the first filter in the list that has a matching data
 318.107 -					type that is passed in. The method will set the current filter to the
 318.108 -					filter that matches the data type or if not found the current filter
 318.109 -					will not change. This method will always begin its search
 318.110 -					from the beginning of the list.
 318.111 -	@param			aDataType An 8-bit descriptor containing the data type to match the 
 318.112 -					filter plug-in with
 318.113 -	@return			KErrNone is the filter plug-in is found, KErrNotFound if not found
 318.114 -	@pre 			Object is constructed
 318.115 -	@post			The current filter is set to the filter that matches the data type
 318.116 -	*/
 318.117 -	//##ModelId=3C4C0F4500F8
 318.118 -	IMPORT_C TInt FindByDataType(const TDesC8& aDataType);
 318.119 -
 318.120 -	/**
 318.121 -	@fn				CurrentFilterInformation() const
 318.122 -	Intended Usage:	This method will return the information of the current filter. The
 318.123 -					information is provided in a TFilterInformation structure containing the
 318.124 -					following information:
 318.125 -					1) Display name
 318.126 -					2) Data type
 318.127 -					3) Version
 318.128 -					4) UID
 318.129 -					5) Category
 318.130 -					6) Install status
 318.131 -					This method will panic if the iterator has not been initialised using the
 318.132 -					First() method
 318.133 -	@return			A struct containing the current filter information
 318.134 -	@pre 			The iterator has been initialised using the First() method
 318.135 -	@see			TFilterInformation
 318.136 -	*/
 318.137 -	//##ModelId=3C4C0F4500F7
 318.138 -	IMPORT_C const TFilterInformation CurrentFilterInformation() const;
 318.139 -
 318.140 -	/**
 318.141 -	@fn				InstallCurrentFilter() const
 318.142 -	Intended Usage:	This method will install the current filter. This method will panic if a
 318.143 -					current filter is not set.
 318.144 -	@return			KErrNone if the filter installed, KErrAlreadyExists if the filter has
 318.145 -					already been installed, KErrNotFound if the filter cannot be found,
 318.146 -					KErrNotConnected if the ECom plug-in architecture is not connected,
 318.147 -					KErrNoMemory is the filter is not installed due to low memory, or any
 318.148 -					other system-wide error codes.
 318.149 -	@pre 			A current filter has been set and is not already installed
 318.150 -	@post			The filter is installed
 318.151 -	*/
 318.152 -	//##ModelId=3C4C0F4500F6
 318.153 -	IMPORT_C TInt InstallCurrentFilter() const;
 318.154 -
 318.155 -	/**
 318.156 -	@fn				UninstallCurrentFilter() const
 318.157 -	Intended Usage:	This method will uninstall the current filter. This method will panic if
 318.158 -					a current filter is not set.
 318.159 -	@return			KErrNone is the filter uninstalled correctly, KErrNotFound if the filter
 318.160 -					has not already been installed
 318.161 -	@pre 			A current filter has been set and has already been installed
 318.162 -	@post			The filter is uninstalled
 318.163 -	*/
 318.164 -	//##ModelId=3C4C0F4500EF
 318.165 -	IMPORT_C TInt UninstallCurrentFilter() const;
 318.166 -
 318.167 -private: // Methods
 318.168 -	// Friend class
 318.169 -	friend class CHTTPSession;
 318.170 -
 318.171 -	// Friend class for testing purposes
 318.172 -	friend class CFilterConfigurationIterator_UnitTestContext;
 318.173 -
 318.174 -	// Standard default constructor, this is private as it is designed so that only
 318.175 -	// the CHTTPSession object that create it.
 318.176 -	//##ModelId=3C4C0F4500ED
 318.177 -	TFilterConfigurationIterator(CHTTPSession* aSession);
 318.178 -
 318.179 -	// Standard destructor, this is private as it is designed so that only the
 318.180 -	// CHTTPSession object can delete it.
 318.181 -	//##ModelId=3C4C0F4500EC
 318.182 -	~TFilterConfigurationIterator();
 318.183 -
 318.184 -private: // Attributes
 318.185 -	// Pointer to the session implementation. This is not owned.
 318.186 -	//##ModelId=3C4C0F4500DA
 318.187 -	CHTTPSession* iSession;
 318.188 -
 318.189 -	// Pointer array containing all the information for all the filter plugins
 318.190 -	// discovered by ECom. The list is stored and owned by the session. This is
 318.191 -	// not owned.
 318.192 -	//##ModelId=3C4C0F4500D0
 318.193 -	RPointerArray<TSessionFilterInfo>& iFilterInfoList;
 318.194 -
 318.195 -	// Value conatining the index of the current filter in the list
 318.196 -	//##ModelId=3C4C0F4500C6
 318.197 -	TInt iCurrentFilterIndex;
 318.198 -
 318.199 -	// Value containing the number filters in the list
 318.200 -	//##ModelId=3C4C0F4500BC
 318.201 -	TInt iFilterCount;
 318.202 -	};
 318.203 -
 318.204 -#endif // __TFILTERCONFIGURATIONITER_H__
   319.1 --- a/epoc32/include/http/tfilterinformation.h	Tue Mar 16 16:12:26 2010 +0000
   319.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   319.3 @@ -1,115 +0,0 @@
   319.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   319.5 -// All rights reserved.
   319.6 -// This component and the accompanying materials are made available
   319.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   319.8 -// which accompanies this distribution, and is available
   319.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  319.10 -//
  319.11 -// Initial Contributors:
  319.12 -// Nokia Corporation - initial contribution.
  319.13 -//
  319.14 -// Contributors:
  319.15 -//
  319.16 -// Description:
  319.17 -//
  319.18 -
  319.19 -
  319.20 -
  319.21 -/**
  319.22 - @file TFilterInformation.h
  319.23 - @warning : This file contains Rose Model ID comments - please do not delete
  319.24 -*/
  319.25 -
  319.26 -#ifndef __TFILTERINFORMATION_H__
  319.27 -#define __TFILTERINFORMATION_H__
  319.28 -
  319.29 -
  319.30 -//##ModelId=3C4C37DF0343
  319.31 -struct TFilterInformation
  319.32 -/**
  319.33 -This structure is used by the TFilterConfigurationIterator to hold the information of the
  319.34 -current filter. This structure simply contains public members containing the following
  319.35 -information, the display name, data type, version, UID, category and install status.
  319.36 -@publishedAll
  319.37 -@released
  319.38 -@see			TFilterConfigurationIterator
  319.39 -*/
  319.40 -	{
  319.41 -public:
  319.42 -	/**
  319.43 -	Public enum defining the filter categories available to the client.
  319.44 -	*/
  319.45 -	enum TFilterCategory
  319.46 -		{
  319.47 -		EImplicitFilter,
  319.48 -		EExplicitFilter
  319.49 -		};
  319.50 -
  319.51 -	/** 
  319.52 -		Contains a constant reference to the descriptor containing the filter's display name 
  319.53 -	*/
  319.54 -	//##ModelId=3C4C37DF03A7
  319.55 -	const TDesC& iDisplayName;
  319.56 -
  319.57 -	/** 
  319.58 -		Contains a constant reference to the descriptor containing the filter's data type 
  319.59 -	*/
  319.60 -	//##ModelId=3C4C37DF039D
  319.61 -	const TDesC8& iDataType;
  319.62 -
  319.63 -	/**
  319.64 -		The filter's version number
  319.65 -	*/
  319.66 -	//##ModelId=3C4C37DF038B
  319.67 -	TInt iVersion;
  319.68 -
  319.69 -	/** 
  319.70 -		The filter's plugin UID
  319.71 -	*/
  319.72 -	//##ModelId=3C4C37DF0381
  319.73 -	TUid iFilterUid;
  319.74 -
  319.75 -	/**
  319.76 -		The filter's category
  319.77 -	*/
  319.78 -	//##ModelId=3C4C37DF0375
  319.79 -	TFilterCategory iFilterCategory;
  319.80 -
  319.81 -	/** 
  319.82 -		The install status of the filter. Contains ETrue if installed, otherwise EFalse 
  319.83 -	*/
  319.84 -	//##ModelId=3C4C37DF036B
  319.85 -	TBool iInstallStatus;
  319.86 -
  319.87 -	/**
  319.88 -	Default constructor that simply initialises the data members.
  319.89 -	@param			aDisplayName Reference to descriptor containing the display name
  319.90 -	@param			aDataType Reference to descriptor containing the data type
  319.91 -	@param			aVersion Integer of the version number
  319.92 -	@param			aFilterUid The UID of the filter plugin
  319.93 -	@param			aFilterCategory The category of the filter
  319.94 -	@param			aInstallStatus The install status of the filter plugin. Contains ETrue
  319.95 -					if installed or EFalse otherwise.
  319.96 -	@pre			None
  319.97 -	@post			Object is fully constructed and initialised
  319.98 -	*/
  319.99 -	//##ModelId=3C4C37DF03B1
 319.100 -	inline TFilterInformation(const TDesC& aDisplayName, const TDesC8& aDataType,
 319.101 -					   TInt aVersion, TUid aFilterUid,
 319.102 -					   TFilterCategory aFilterCategory, TBool aInstallStatus);
 319.103 -	};
 319.104 -
 319.105 -// Inline constructor, initialises data members
 319.106 -inline TFilterInformation::TFilterInformation(const TDesC& aDisplayName, const TDesC8& aDataType,
 319.107 -											  TInt aVersion, TUid aFilterUid,
 319.108 -											  TFilterCategory aFilterCategory, TBool aInstallStatus)
 319.109 -	:iDisplayName(aDisplayName),
 319.110 -	iDataType(aDataType),
 319.111 -	iVersion(aVersion),
 319.112 -	iFilterUid(aFilterUid),
 319.113 -	iFilterCategory(aFilterCategory),
 319.114 -	iInstallStatus(aInstallStatus)
 319.115 -	{
 319.116 -	}
 319.117 -
 319.118 -#endif // __TFILTERINFORMATION_H__
   320.1 --- a/epoc32/include/http/thttpevent.h	Tue Mar 16 16:12:26 2010 +0000
   320.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   320.3 @@ -1,485 +0,0 @@
   320.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   320.5 -// All rights reserved.
   320.6 -// This component and the accompanying materials are made available
   320.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   320.8 -// which accompanies this distribution, and is available
   320.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  320.10 -//
  320.11 -// Initial Contributors:
  320.12 -// Nokia Corporation - initial contribution.
  320.13 -//
  320.14 -// Contributors:
  320.15 -//
  320.16 -// Description:
  320.17 -//
  320.18 -
  320.19 -
  320.20 -
  320.21 -/**
  320.22 - @file THTTPEvent.h
  320.23 - @warning : This file contains Rose Model ID comments - please do not delete
  320.24 -*/
  320.25 -
  320.26 -#ifndef	__THTTPEVENT_H__
  320.27 -#define	__THTTPEVENT_H__
  320.28 -
  320.29 -// System includes
  320.30 -#include <e32std.h>
  320.31 -
  320.32 -/**
  320.33 -The HTTP UID. This UID is used for all events defined here.
  320.34 -@publishedAll
  320.35 -@released
  320.36 -*/
  320.37 -const TUint KHTTPUid				= 0x1000A441;
  320.38 -
  320.39 -/**
  320.40 -Wildcard Matching UID. When specified as part of an event then the UID event
  320.41 -part of the match will be ignored.
  320.42 -@publishedAll
  320.43 -@released
  320.44 -*/
  320.45 -const TUint KHTTPMatchAnyEventUid	=  0x1000A44C;
  320.46 -
  320.47 -/**
  320.48 -The base status code for transaction events. Any number above this but below
  320.49 -KSessionEventBaseStatus is a transaction event.
  320.50 -@publishedAll
  320.51 -@released
  320.52 -*/
  320.53 -const TInt KTransactionEventBaseStatus		= 0;
  320.54 -
  320.55 -/**
  320.56 -The base status code for transaction warning events.
  320.57 -@publishedAll
  320.58 -@released
  320.59 -*/
  320.60 -const TInt KTransactionWarningBaseStatus	= 10000;
  320.61 -
  320.62 -/**
  320.63 -The base status code for session events. Any number above this is a session 
  320.64 -event.
  320.65 -@publishedAll
  320.66 -@released
  320.67 -*/
  320.68 -const TInt KSessionEventBaseStatus			= 100000;
  320.69 -
  320.70 -/**
  320.71 -The base status code for session warning events.
  320.72 -@publishedAll
  320.73 -@released
  320.74 -*/
  320.75 -const TInt KSessionWarningBaseStatus		= 110000;
  320.76 -
  320.77 -
  320.78 -//##ModelId=3C4C18740294
  320.79 -class THTTPEvent
  320.80 -/**
  320.81 -A HTTP status message. Status messages consist of a UID and a
  320.82 -status code within that UID. Extension dlls that needs to create
  320.83 -new status messages should use their own UID and create status codes
  320.84 -within that UID.
  320.85 -@publishedAll
  320.86 -@released
  320.87 -*/
  320.88 -	{
  320.89 -public:	
  320.90 -
  320.91 -	/** The TStandardEvent type is used to specify a family of event types. Any
  320.92 -		negative event number is used to convey error codes. All events are 
  320.93 -		incoming (originate with the origin server) unless otherwise indicated. 
  320.94 -		Outgoing messages will not be seen by the MHTTPTransactionCallback's 
  320.95 -		MHFRunL.
  320.96 -	 */
  320.97 -	enum TStandardEvent
  320.98 -		{
  320.99 -		/** Used when registering filter to indicate the filter is instrested 
 320.100 -			in ALL events, both transaction and session events.
 320.101 -		 */
 320.102 -		EAll					= KRequestPending + 1,
 320.103 -		/** Used when registering filters to indicate the filter is interested
 320.104 -			in any transaction event, from any direction.
 320.105 -		 */
 320.106 -		EAnyTransactionEvent	= KRequestPending,
 320.107 -		/** Used when registering filters to indicate the filter is interested 
 320.108 -			in any session event.
 320.109 -		 */
 320.110 -		EAnySessionEvent		= KSessionEventBaseStatus
 320.111 -		};
 320.112 -
 320.113 -	/** The TTransactionEvents type defines the events that correspond to 
 320.114 -		transactions. Outgoing events originate from the client or from filters.
 320.115 -		The clients do not send these explicitly since the API methods of 
 320.116 -		RHTTPTransaction do it on their behalf. Incoming events originate from 
 320.117 -		the protocol handler or from filters, and clients should handle these.
 320.118 -		The ESucceeded and EFailed events are mutually exclusive, but one will
 320.119 -		always be sent to the client as the final event for a transaction.
 320.120 -	 */
 320.121 -	enum TTransactionEvent
 320.122 -		{
 320.123 -		/** The transaction is being submitted. An outgoing event.
 320.124 -		*/
 320.125 -		ESubmit						= KTransactionEventBaseStatus,
 320.126 -		/** The transaction is being cancelled. An outgoing event. 
 320.127 -		*/
 320.128 -		ECancel						= KTransactionEventBaseStatus + 1,
 320.129 -		/** A new part of request body data is available for transmission. An
 320.130 -			outgoing event
 320.131 -		*/
 320.132 -		ENotifyNewRequestBodyPart	= KTransactionEventBaseStatus + 2,
 320.133 -		/** The transaction is being closed. An outgoing event. 
 320.134 -		*/
 320.135 -		EClosed						= KTransactionEventBaseStatus + 3,
 320.136 -		/** All the response headers have been received. An incoming event. 
 320.137 -		*/
 320.138 -		EGotResponseHeaders			= KTransactionEventBaseStatus + 4, 
 320.139 -		/** Some (more) body data has been received (in the HTTP response). An 
 320.140 -			incoming event.
 320.141 -		*/
 320.142 -		EGotResponseBodyData		= KTransactionEventBaseStatus + 5,
 320.143 -		/** The transaction's response is complete. An incoming event. 
 320.144 -		*/
 320.145 -		EResponseComplete			= KTransactionEventBaseStatus + 6,
 320.146 -		/** Some trailer headers have been received. An incoming event.
 320.147 -		*/
 320.148 -		EGotResponseTrailerHeaders	= KTransactionEventBaseStatus + 7,
 320.149 -		/** The transaction has succeeded. An incoming event.
 320.150 -		*/
 320.151 -		ESucceeded					= KTransactionEventBaseStatus + 8,
 320.152 -		/** The transaction has failed. This is a 'catch-all' for communicating
 320.153 -			failures, and more details of the failure should have been notified
 320.154 -			in previous messages or status codes. If the client could process 
 320.155 -			these then it is possible that it should not consider the transaction
 320.156 -			a failure. For instance a browser that displays the body of 404 
 320.157 -			responses to the user would not consider a 404 response to be a 
 320.158 -			failure, as it would display it just like a 200 response even though
 320.159 -			a 404 will be flagged as a 'failure'. An incoming event.
 320.160 -		*/
 320.161 -		EFailed						= KTransactionEventBaseStatus + 9, 
 320.162 -		/** Generated from RHTTPTransaction::Fail(). A filter has failed in a 
 320.163 -			way that prevents it from using the normal event mechanism to inform
 320.164 -			the client of the error. This probably means it's run out of memory.
 320.165 -			An incoming event.
 320.166 -		*/
 320.167 -		EUnrecoverableError			= KTransactionEventBaseStatus + 10,
 320.168 -		/** An event that indicates that there is too much request data to be 
 320.169 -			sent. The transaction will subsequently be cancelled. An incoming 
 320.170 -			event.
 320.171 -		*/
 320.172 -		ETooMuchRequestData			= KTransactionEventBaseStatus + 11,
 320.173 -
 320.174 -		
 320.175 -		/** If the returned status code for a transaciton is either 301, 302 or 307
 320.176 -            and the requested method is NOT a GET or HEAD, then the filter sends the 
 320.177 -            client an event ERedirectRequiresConfirmation as stated in RFC2616.
 320.178 -
 320.179 -            On receiving this event, the transaction is already setup with the redirected URI
 320.180 -            and the client is required to make the decision to whether to submit the 
 320.181 -            transaction or close the transaction.
 320.182 -
 320.183 -            If the requested method is GET or HEAD the transaction is automatically 
 320.184 -            redirected and this event is not used.
 320.185 -        */
 320.186 -		ERedirectRequiresConfirmation = KTransactionEventBaseStatus + 12,
 320.187 -
 320.188 -		/** A transaction has been specified to use a proxy and the request
 320.189 -			requires a tunnel to be establised to the origin server.
 320.190 -		*/
 320.191 -		ENeedTunnel					= KTransactionEventBaseStatus + 13,
 320.192 -		
 320.193 -		/** The client wishes to view the current cipher suite.
 320.194 -		*/
 320.195 -		EGetCipherSuite				= KTransactionEventBaseStatus + 14,
 320.196 -		
 320.197 -		/** The transaction's request is complete. An incoming event. 
 320.198 -		*/
 320.199 -		ERequestComplete			= KTransactionEventBaseStatus + 15,
 320.200 -		
 320.201 -		/**An event to signal that 100 Continue response has been received.
 320.202 -		*/
 320.203 -		EReceived100Continue		= KTransactionEventBaseStatus + 16,
 320.204 -		
 320.205 -		/**An event to cancel the wait for a 100-Continue event.
 320.206 -		*/
 320.207 -		ECancelWaitFor100Continue	= KTransactionEventBaseStatus + 17,
 320.208 -
 320.209 -		/**An event of Send Timeout for a Request.
 320.210 -		*/
 320.211 -		ESendTimeOut	= KTransactionEventBaseStatus + 18,
 320.212 -
 320.213 -		/**An event of Receive Timeout for a Response.
 320.214 -		*/
 320.215 -		EReceiveTimeOut	= KTransactionEventBaseStatus + 19
 320.216 -
 320.217 -		};
 320.218 -
 320.219 -	/** The TDirection type defines the direction of an event. An outgoing event
 320.220 -		originates from the client or from filters. The clients do not send these
 320.221 -		explicitly since the API methods of RHTTPTransaction or RHTTPSession do 
 320.222 -		it on their behalf. Incoming events originate from the protocol handler 
 320.223 -		or from filters, and clients should handle these.
 320.224 -	*/
 320.225 -	enum TDirection
 320.226 -		{
 320.227 -		/** An event originating with the client (e.g. start transaction).
 320.228 -		*/
 320.229 -		EOutgoing,
 320.230 -		/** An event originating with the server (e.g. something received). 
 320.231 -		*/
 320.232 -		EIncoming
 320.233 -		};
 320.234 -
 320.235 -	/** The TTransactionWarning type indicates that something in a transaction 
 320.236 -		may be incorrect but the transaction may continue. It may also indicate 
 320.237 -		that something (e.g. a filter) may have performed an action that has 
 320.238 -		changed the transaction and that the client should be informed of this.
 320.239 -	*/
 320.240 -	enum TTransactionWarning
 320.241 -		{
 320.242 -		/** An event indicating that the transaction has been redirected and the
 320.243 -			original origin server indicated that it was a permanent redirection.
 320.244 -			The URI for the transaction is now the redirected location. A 
 320.245 -			permanent redirection may require further client behavior if the 
 320.246 -			request came from a stored URI. This is to avoid further redirections 
 320.247 -			on subsequent requests for this resource.
 320.248 -		*/
 320.249 -		ERedirectedPermanently			= KTransactionWarningBaseStatus,
 320.250 -		/** An event indicating that the transaction has been redirected and the
 320.251 -			original server indicated that it was a temporary redirection. 
 320.252 -		*/
 320.253 -		ERedirectedTemporarily			= KTransactionWarningBaseStatus + 1,
 320.254 -		/** An event generated by the Protocol Handler when it receives a Content-
 320.255 -			Length value that does not match the actual length of the body data.
 320.256 -		*/
 320.257 -		EMoreDataReceivedThanExpected	= KTransactionWarningBaseStatus + 2
 320.258 -		};
 320.259 -
 320.260 -public:	// Methods
 320.261 -
 320.262 -	/** Constructor
 320.263 -		@param aStatus	The status value.
 320.264 -		@param aUID		The UID.
 320.265 -	*/
 320.266 -	//##ModelId=3C4C187402FB
 320.267 -	inline THTTPEvent(TInt aStatus, TUint aUID = KHTTPUid);
 320.268 -
 320.269 -	/** Constructor (using a standard event and the HTTP UID)
 320.270 -		@param aStatus	The standard event to use.
 320.271 -	*/
 320.272 -	//##ModelId=3C4C18740304
 320.273 -	inline THTTPEvent(TStandardEvent aStatus = EAnyTransactionEvent);
 320.274 -
 320.275 -	/** Constructor (using a transaction event and the HTTP UID)
 320.276 -		@param aStatus	The transaction event to use.
 320.277 -	*/
 320.278 -	//##ModelId=3C4C1874030C
 320.279 -	inline THTTPEvent(TTransactionEvent aStatus);
 320.280 -
 320.281 -	/** Assigns a standard event code to an event object
 320.282 -		@param aStatus	The standard event.
 320.283 -		@return The HTTP event object.
 320.284 -	*/
 320.285 -	//##ModelId=3C4C187402EF
 320.286 -	inline THTTPEvent& operator=(TStandardEvent aStatus);
 320.287 -
 320.288 -	/** Assigns a transaction event code to an event object
 320.289 -		@param aStatus	The transaction event.
 320.290 -		@return The HTTP event object.
 320.291 -	*/
 320.292 -	//##ModelId=3C4C187402F1
 320.293 -	inline THTTPEvent& operator=(TTransactionEvent aStatus);
 320.294 -
 320.295 -	/** Equality operator
 320.296 -		@param The HTTP event object to compare.
 320.297 -		@return ETrue if the HTTP event objects are equal. 
 320.298 -	*/
 320.299 -	//##ModelId=3C4C187402DA
 320.300 -	inline TBool operator==(THTTPEvent aThat) const;
 320.301 -
 320.302 -	/** Inequality operator
 320.303 -		@param The HTTP event object to compare.
 320.304 -		@return ETrue if the HTTP event objects are not equal. 
 320.305 -	*/
 320.306 -	//##ModelId=3C4C187402BD
 320.307 -	inline TBool operator!=(THTTPEvent aThat) const;
 320.308 -
 320.309 -	/** Equality operator (compares with a standard event)
 320.310 -		@param The standard event object to compare.
 320.311 -		@return ETrue if the standard event objects are equal.
 320.312 -	*/
 320.313 -	//##ModelId=3C4C187402DC
 320.314 -	inline TBool operator==(TStandardEvent aStatus) const;
 320.315 -
 320.316 -	/** Inequality operator (compares with a standard event)
 320.317 -		@param The standard event object to compare.
 320.318 -		@return ETrue if the standard event objects are not equal. 
 320.319 -	*/
 320.320 -	//##ModelId=3C4C187402C7
 320.321 -	inline TBool operator!=(TStandardEvent aStatus) const;
 320.322 -
 320.323 -	/** Equality operator (compares with a transaction event)
 320.324 -		@param The transaction event object to compare.
 320.325 -		@return ETrue if the transaction event objects are equal. 
 320.326 -	*/
 320.327 -	//##ModelId=3C4C187402E4
 320.328 -	inline TBool operator==(TTransactionEvent aStatus) const;
 320.329 -
 320.330 -	/** Inequality operator (compares with a transaction event)
 320.331 -		@param The transaction event object to compare.
 320.332 -		@return ETrue if the transaction event objects are not equal. 
 320.333 -	*/
 320.334 -	//##ModelId=3C4C187402D0
 320.335 -	inline TBool operator!=(TTransactionEvent aStatus) const;
 320.336 -	
 320.337 -	/** @return ETrue if the event is a session event
 320.338 -	*/
 320.339 -	//##ModelId=3C4C187402BC
 320.340 -	inline TBool IsSessionEvent() const;
 320.341 -
 320.342 -public:	// Attributes
 320.343 -
 320.344 -	/** The status value.
 320.345 -	 */
 320.346 -	//##ModelId=3C4C187402B4
 320.347 -	TInt iStatus;
 320.348 -
 320.349 -	/** The UID.
 320.350 -	 */
 320.351 -	//##ModelId=3C4C187402AA
 320.352 -	TUint iUID;
 320.353 -
 320.354 -protected: // Attributes
 320.355 -	/** Flag to indicate whether the event is a session event
 320.356 -	*/
 320.357 -	TBool iIsSessionEventFlag;
 320.358 -
 320.359 -	};
 320.360 -
 320.361 -
 320.362 -class THTTPSessionEvent : public THTTPEvent
 320.363 -/**
 320.364 -A HTTP session status message. Status messages consist of a UID and a
 320.365 -status code within that UID. Extension dlls that needs to create
 320.366 -new status messages should use their own UID and create status codes
 320.367 -within that UID.
 320.368 -@publishedAll
 320.369 -@released
 320.370 -*/
 320.371 -	{
 320.372 -public: // Enumerations
 320.373 -	/** The TSessionEvents type defines the evenst that correspond to the 
 320.374 -		of a session entity. Outgoing events originate from the client or from
 320.375 -		filters. Incoming events originate from the protocol handler or from 
 320.376 -		filters, and clients should handle these. 
 320.377 -	*/
 320.378 -	enum TSessionEvent
 320.379 -		{
 320.380 -		/** A session connection should be initiated. An outgoing event.
 320.381 -		*/
 320.382 -		EConnect							= KSessionEventBaseStatus,
 320.383 -		/** The session should be disconnected. An outgoing event.
 320.384 -		 */
 320.385 -		EDisconnect							= KSessionEventBaseStatus + 1,
 320.386 -		/** The session has been successfully connected. None of the client 
 320.387 -			requested capabilities were denied or reduced by the proxy. An 
 320.388 -			incoming event.
 320.389 -		*/
 320.390 -		EConnectedOK						= KSessionEventBaseStatus + 2,
 320.391 -		/** The session has been connected, but with one or more of the client 
 320.392 -			requested capabilities denied or reduced by the proxy. An incoming 
 320.393 -			event.
 320.394 -		*/
 320.395 -		EConnectedWithReducedCapabilities	= KSessionEventBaseStatus + 3,
 320.396 -		/** The session has been disconnected. This either confirms an earlier 
 320.397 -			EDisconnect event or indicates a forced disconnection by the proxy. 
 320.398 -			An incoming event.
 320.399 -		*/
 320.400 -		EDisconnected						= KSessionEventBaseStatus + 4,
 320.401 -		/** The authentication handshake succeeded with the automatic validation
 320.402 -			of the (proxy) server certificate.
 320.403 -		 */
 320.404 -		EAuthenticatedOK					= KSessionEventBaseStatus + 5,
 320.405 -		/** The authentication handshake failed.
 320.406 -		*/
 320.407 -		EAuthenticationFailure				= KSessionEventBaseStatus + 6,
 320.408 -		/** The connection attempt to the proxy timed out.
 320.409 -		*/
 320.410 -		EConnectionTimedOut					= KSessionEventBaseStatus + 7
 320.411 -		};
 320.412 -	
 320.413 -	/**
 320.414 -		HTTP session warning events.
 320.415 -	 */
 320.416 -	enum TSessionWarning
 320.417 -		{
 320.418 -		/** The client has requested a transaction event that requires a session
 320.419 -			to be connected or the connection to be initiated, but neither is
 320.420 -			currently true. The transaction event will be left pending until the
 320.421 -			session is connected. An incoming event.
 320.422 -		*/
 320.423 -		ENotConnected						= KSessionWarningBaseStatus,
 320.424 -		/** The proxy has sent some information that is not related to a 
 320.425 -			transaction and has no effect on the state of the session. The 
 320.426 -			information from the proxy is in the EProxyExceptionInfo property.
 320.427 -		*/
 320.428 -		EExceptionInfo						= KSessionWarningBaseStatus + 1,
 320.429 -		/** The client connection request was (permanently) redirected to a new
 320.430 -			WAP proxy address. The client should check the EWspProxyAddress 
 320.431 -			property for the new address. The client's access-point database can
 320.432 -			then be updated with this address. No notification is given of a 
 320.433 -			temporary redirection.
 320.434 -		*/
 320.435 -		ERedirected							= KSessionWarningBaseStatus + 2,
 320.436 -		/** The client has requested a session event that is not valid whilst
 320.437 -			the WSP session is trying to establish a connection.
 320.438 -		*/
 320.439 -		EAlreadyConnecting					= KSessionWarningBaseStatus + 3,
 320.440 -		/** The client has requested a session event that is not valid whilst
 320.441 -			the WSP session is in the Connected state.
 320.442 -		*/
 320.443 -		EAlreadyConnected					= KSessionWarningBaseStatus + 4,
 320.444 -		/** The client has requested a session event that is not valid whilst
 320.445 -			the WSP session is trying to close the connection.
 320.446 -		*/
 320.447 -		EAlreadyDisconnecting				= KSessionWarningBaseStatus + 5,
 320.448 -		/** The client has requested a session event that is not valid whilst
 320.449 -			the WSP session is in the Null (or disconnected) state.
 320.450 -		*/
 320.451 -		EAlreadyDisconnected				= KSessionWarningBaseStatus + 6
 320.452 -		};
 320.453 -
 320.454 -public:
 320.455 -	/** Constructor
 320.456 -		@param aStatus	The status value.
 320.457 -		@param aUID		The UID.
 320.458 -	*/
 320.459 -	inline THTTPSessionEvent(TInt aStatus, TUint aUID = KHTTPUid);
 320.460 -
 320.461 -	/** Constructor (using a standard event and the HTTP UID)
 320.462 -		@param aStatus	The standard event to use.
 320.463 -	*/
 320.464 -	inline THTTPSessionEvent(TStandardEvent aStatus = EAnySessionEvent);
 320.465 -
 320.466 -	/** Constructor (using a session event and the HTTP UID)
 320.467 -		@param aStatus	The session event to use.
 320.468 -	*/
 320.469 -	inline THTTPSessionEvent(TSessionEvent aStatus);
 320.470 -
 320.471 -	/** Assigns a session event code to an event object
 320.472 -		@param aStatus	The session event.
 320.473 -	*/
 320.474 -	//##ModelId=3C4C187402F9
 320.475 -	inline THTTPSessionEvent& operator=(TSessionEvent aStatus);
 320.476 -
 320.477 -	/// Equality operator (compares with a session event)
 320.478 -	//##ModelId=3C4C187402E6
 320.479 -	inline TBool operator==(TSessionEvent aStatus) const;
 320.480 -
 320.481 -	/// Inequality operator (compares with a session event)
 320.482 -	//##ModelId=3C4C187402D2
 320.483 -	inline TBool operator!=(TSessionEvent aStatus) const;
 320.484 -	};
 320.485 -
 320.486 -#include <http/thttpevent.inl>
 320.487 -
 320.488 -#endif // __THTTPEVENT_H__
   321.1 --- a/epoc32/include/http/thttpevent.inl	Tue Mar 16 16:12:26 2010 +0000
   321.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   321.3 @@ -1,114 +0,0 @@
   321.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   321.5 -// All rights reserved.
   321.6 -// This component and the accompanying materials are made available
   321.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   321.8 -// which accompanies this distribution, and is available
   321.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  321.10 -//
  321.11 -// Initial Contributors:
  321.12 -// Nokia Corporation - initial contribution.
  321.13 -//
  321.14 -// Contributors:
  321.15 -//
  321.16 -// Description:
  321.17 -//
  321.18 -
  321.19 -
  321.20 -inline THTTPEvent::THTTPEvent(TInt aStatus, TUint aUID)
  321.21 -: iStatus(aStatus), iUID(aUID), iIsSessionEventFlag(EFalse)
  321.22 -	{
  321.23 -	}
  321.24 -
  321.25 -inline THTTPEvent::THTTPEvent(TStandardEvent aStatus)
  321.26 -: iStatus(aStatus), iUID(KHTTPUid), iIsSessionEventFlag(EFalse)
  321.27 -	{
  321.28 -	}
  321.29 -
  321.30 -inline THTTPEvent::THTTPEvent(TTransactionEvent aStatus)
  321.31 -: iStatus(aStatus), iUID(KHTTPUid), iIsSessionEventFlag(EFalse)
  321.32 -	{
  321.33 -	}
  321.34 -
  321.35 -inline THTTPEvent& THTTPEvent::operator=(TStandardEvent aStatus)
  321.36 -	{
  321.37 -	iUID = KHTTPUid;
  321.38 -	iStatus = aStatus;
  321.39 -	return *this;
  321.40 -	}
  321.41 -
  321.42 -inline THTTPEvent& THTTPEvent::operator=(TTransactionEvent aStatus)
  321.43 -	{
  321.44 -	iUID = KHTTPUid;
  321.45 -	iStatus = aStatus;
  321.46 -	return *this;
  321.47 -	}
  321.48 -
  321.49 -inline TBool THTTPEvent::operator==(THTTPEvent aThat) const
  321.50 -	{
  321.51 -	return (iStatus == aThat.iStatus && iUID == aThat.iUID);
  321.52 -	}
  321.53 -
  321.54 -inline TBool THTTPEvent::operator!=(THTTPEvent aThat) const
  321.55 -	{
  321.56 -	return !(*this == aThat);
  321.57 -	}
  321.58 -
  321.59 -inline TBool THTTPEvent::operator==(TStandardEvent aStatus) const
  321.60 -	{
  321.61 -	return (iStatus == aStatus && iUID == KHTTPUid);
  321.62 -	}
  321.63 -
  321.64 -inline TBool THTTPEvent::operator!=(TStandardEvent aStatus) const
  321.65 -	{
  321.66 -	return !(*this == aStatus);
  321.67 -	}
  321.68 -
  321.69 -inline TBool THTTPEvent::operator==(TTransactionEvent aStatus) const
  321.70 -	{
  321.71 -	return (iStatus == aStatus && iUID == KHTTPUid);
  321.72 -	}
  321.73 -
  321.74 -inline TBool THTTPEvent::operator!=(TTransactionEvent aStatus) const
  321.75 -	{
  321.76 -	return !(*this == aStatus);
  321.77 -	}
  321.78 -
  321.79 -inline TBool THTTPEvent::IsSessionEvent() const
  321.80 -	{
  321.81 -	return iIsSessionEventFlag;
  321.82 -	}
  321.83 -
  321.84 -inline THTTPSessionEvent::THTTPSessionEvent(TInt aStatus, TUint aUID)
  321.85 -: THTTPEvent(aStatus, aUID)
  321.86 -	{
  321.87 -	iIsSessionEventFlag = ETrue;
  321.88 -	}
  321.89 -
  321.90 -inline THTTPSessionEvent::THTTPSessionEvent(TStandardEvent aStatus)
  321.91 -: THTTPEvent(aStatus)
  321.92 -	{
  321.93 -	iIsSessionEventFlag = ETrue;
  321.94 -	}
  321.95 -
  321.96 -inline THTTPSessionEvent::THTTPSessionEvent(TSessionEvent aStatus)
  321.97 -: THTTPEvent(aStatus)
  321.98 -	{
  321.99 -	iIsSessionEventFlag = ETrue;
 321.100 -	}
 321.101 -
 321.102 -inline THTTPSessionEvent& THTTPSessionEvent::operator=(TSessionEvent aStatus)
 321.103 -	{
 321.104 -	iUID = KHTTPUid;
 321.105 -	iStatus = aStatus;
 321.106 -	return *this;
 321.107 -	}
 321.108 -
 321.109 -inline TBool THTTPSessionEvent::operator==(TSessionEvent aStatus) const
 321.110 -	{
 321.111 -	return (iStatus == aStatus && iUID == KHTTPUid);
 321.112 -	}
 321.113 -
 321.114 -inline TBool THTTPSessionEvent::operator!=(TSessionEvent aStatus) const
 321.115 -	{
 321.116 -	return !(*this == aStatus);
 321.117 -	}
   322.1 --- a/epoc32/include/http/thttpfilterhandle.h	Tue Mar 16 16:12:26 2010 +0000
   322.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   322.3 @@ -1,88 +0,0 @@
   322.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   322.5 -// All rights reserved.
   322.6 -// This component and the accompanying materials are made available
   322.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   322.8 -// which accompanies this distribution, and is available
   322.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  322.10 -//
  322.11 -// Initial Contributors:
  322.12 -// Nokia Corporation - initial contribution.
  322.13 -//
  322.14 -// Contributors:
  322.15 -//
  322.16 -// Description:
  322.17 -//
  322.18 -
  322.19 -
  322.20 -
  322.21 -/**
  322.22 - @file THTTPFilterHandle.h
  322.23 - @warning : This file contains Rose Model ID comments - please do not delete
  322.24 -*/
  322.25 -
  322.26 -#ifndef	__THTTPFILTERHANDLE_H__
  322.27 -#define	__THTTPFILTERHANDLE_H__
  322.28 -
  322.29 -// System includes
  322.30 -#include <e32std.h>
  322.31 -
  322.32 -
  322.33 -//##ModelId=3A914DF50317
  322.34 -class THTTPFilterHandle
  322.35 -/** 
  322.36 -A Filter registration handle. This identifies a particular filter
  322.37 -registration, and is passed to the filter in MHFLoad. It is used
  322.38 -to identify filters for deletion and for locating the start point
  322.39 -for sending events. It is an opaque class; all you need to be able
  322.40 -to do with it is to compare them for equality.
  322.41 -@publishedAll
  322.42 -@released
  322.43 -*/
  322.44 -	{
  322.45 - public:
  322.46 -	/* Note. These are negative as values for particular filters use
  322.47 -       positive values.*/
  322.48 -	/** Alisases for the client, and the filters you're most likely to want
  322.49 -		to refer to.
  322.50 -	*/
  322.51 -	enum TStandardValues
  322.52 -		{
  322.53 -		EUndefined = 0, ///< Undefined default value.
  322.54 -		EClient = -1, ///< Placeholder for the client.
  322.55 -		EProtocolHandler = -2, ///< Constant value for the protocol handler.
  322.56 -		/// When sending an event from a MHFRunL, indicates the current filter.
  322.57 -		ECurrentFilter = -3 
  322.58 -		};
  322.59 - public:
  322.60 -	//##ModelId=3A914DF50336
  322.61 -	inline THTTPFilterHandle(TStandardValues aVal = EUndefined);
  322.62 -	//##ModelId=3A914DF5032D
  322.63 -	inline TBool operator==(THTTPFilterHandle aThat) const;
  322.64 -	//##ModelId=3A914DF5032B
  322.65 -	inline TBool operator!=(THTTPFilterHandle aThat) const;
  322.66 - private:
  322.67 -	//##ModelId=3A914DF50323
  322.68 -	TInt iValue;
  322.69 -	friend class RHTTPSession;
  322.70 -	friend class RHTTPFilterCollection;
  322.71 -	friend class CHTTPSession;
  322.72 -	friend class CTransaction;
  322.73 -	};  
  322.74 -
  322.75 -inline THTTPFilterHandle::THTTPFilterHandle(TStandardValues aVal)
  322.76 -		: iValue(aVal)
  322.77 -	{
  322.78 -	}
  322.79 -
  322.80 -inline TBool THTTPFilterHandle::operator==(THTTPFilterHandle aThat) const
  322.81 -	{
  322.82 -	return iValue == aThat.iValue;
  322.83 -	}
  322.84 -
  322.85 -inline TBool THTTPFilterHandle::operator!=(THTTPFilterHandle aThat) const
  322.86 -	{
  322.87 -	return !(*this == aThat);
  322.88 -	}
  322.89 -
  322.90 -
  322.91 -#endif // __THTTPFILTERHANDLE_H__
   323.1 --- a/epoc32/include/http/thttpfilteriterator.h	Tue Mar 16 16:12:26 2010 +0000
   323.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   323.3 @@ -1,115 +0,0 @@
   323.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   323.5 -// All rights reserved.
   323.6 -// This component and the accompanying materials are made available
   323.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   323.8 -// which accompanies this distribution, and is available
   323.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  323.10 -//
  323.11 -// Initial Contributors:
  323.12 -// Nokia Corporation - initial contribution.
  323.13 -//
  323.14 -// Contributors:
  323.15 -//
  323.16 -// Description:
  323.17 -//
  323.18 -
  323.19 -
  323.20 -
  323.21 -/**
  323.22 - @file THTTPFilterIterator.h
  323.23 - @warning : This file contains Rose Model ID comments - please do not delete
  323.24 -*/
  323.25 -
  323.26 -#ifndef	__THTTPFILTERITERATOR_H__
  323.27 -#define	__THTTPFILTERITERATOR_H__ 
  323.28 -
  323.29 -// System includes
  323.30 -#include <e32std.h>
  323.31 -#include <stringpool.h>
  323.32 -#include <http/thttpfilterregistration.h>
  323.33 -
  323.34 -// Forward declarations
  323.35 -class CHTTPSession;
  323.36 -
  323.37 -
  323.38 -//##ModelId=3C4C187A0152
  323.39 -class THTTPFilterIterator 
  323.40 -/** 
  323.41 -An iterator for RHTTPFilterCollection. The iterator can iterate
  323.42 -over a subset of the filters in the collection, depending on how it
  323.43 -was created. See RHTTPFilterCollection::Query for more details. In
  323.44 -the documentation here, 'the collection' always refers to the
  323.45 -filters that this iterator can see.
  323.46 -@publishedAll
  323.47 -@released
  323.48 -*/
  323.49 -	{
  323.50 - public:
  323.51 -	/** Non-initialised constructor. Note, to get an initialised one
  323.52 -        that actualy points to a filter collection, use
  323.53 -        RHTTPFilterCollection::Query */
  323.54 -	//##ModelId=3C4C187A01A2
  323.55 -	inline THTTPFilterIterator();
  323.56 -
  323.57 -	/** Moves the iterator to the first member of the collection */
  323.58 -	//##ModelId=3C4C187A019A
  323.59 -	inline void First();
  323.60 -
  323.61 -	/** Returns ETrue if the iterator is at the end of the collection */
  323.62 -	//##ModelId=3C4C187A0199
  323.63 -	IMPORT_C TBool AtEnd() const;
  323.64 -
  323.65 -	/** Moves on to the next item in the collection */
  323.66 -	//##ModelId=3C4C187A0198
  323.67 -	IMPORT_C THTTPFilterIterator& operator++();
  323.68 -
  323.69 -	/** Returns the filter that the iterator is pointing at */
  323.70 -	//##ModelId=3C4C187A0190
  323.71 -	IMPORT_C const THTTPFilterRegistration& operator()() const;
  323.72 -
  323.73 -	/** Returns the filter that the iterator is pointing at */
  323.74 -	//##ModelId=3C4C187A018F
  323.75 -	inline const THTTPFilterRegistration& operator*() const;
  323.76 -
  323.77 -	/** Returns the filter that the iterator is pointing at */
  323.78 -	//##ModelId=3C4C187A018E
  323.79 -	inline const THTTPFilterRegistration& operator->() const;
  323.80 -
  323.81 - private:
  323.82 -	friend class RHTTPFilterCollection;
  323.83 -
  323.84 -	//##ModelId=3C4C187A017C
  323.85 -	CHTTPSession* iImplementation;
  323.86 -
  323.87 -	//##ModelId=3C4C187A0172
  323.88 -	TInt iPos;
  323.89 -
  323.90 -	//##ModelId=3C4C187A0168
  323.91 -	RStringTokenF iName;
  323.92 -	};
  323.93 -
  323.94 -
  323.95 -inline THTTPFilterIterator::THTTPFilterIterator()
  323.96 -		: iImplementation(NULL), iPos(0)
  323.97 -	{
  323.98 -	}
  323.99 -
 323.100 -inline void THTTPFilterIterator::First()
 323.101 -	{
 323.102 -	iPos = -1;
 323.103 -	operator++();
 323.104 -	}
 323.105 -
 323.106 -inline const THTTPFilterRegistration& THTTPFilterIterator::operator*() const
 323.107 -	{
 323.108 -	return operator()();
 323.109 -	}
 323.110 -
 323.111 -inline const THTTPFilterRegistration& THTTPFilterIterator::operator->() const
 323.112 -	{
 323.113 -	return operator()();
 323.114 -	}
 323.115 -
 323.116 -
 323.117 -
 323.118 -#endif //	__THTTPFILTERITERATOR_H__
   324.1 --- a/epoc32/include/http/thttpfilterregistration.h	Tue Mar 16 16:12:26 2010 +0000
   324.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   324.3 @@ -1,102 +0,0 @@
   324.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   324.5 -// All rights reserved.
   324.6 -// This component and the accompanying materials are made available
   324.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   324.8 -// which accompanies this distribution, and is available
   324.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  324.10 -//
  324.11 -// Initial Contributors:
  324.12 -// Nokia Corporation - initial contribution.
  324.13 -//
  324.14 -// Contributors:
  324.15 -//
  324.16 -// Description:
  324.17 -//
  324.18 -
  324.19 -
  324.20 -
  324.21 -/**
  324.22 - @file THTTPFilterRegistration.h
  324.23 - @warning : This file contains Rose Model ID comments - please do not delete
  324.24 -*/
  324.25 -
  324.26 -#ifndef __THTTPFILTERREGISTRATION_H__
  324.27 -#define __THTTPFILTERREGISTRATION_H__ 
  324.28 -
  324.29 -// System includes
  324.30 -#include <e32std.h>
  324.31 -#include <stringpool.h>
  324.32 -#include <http/thttpevent.h>
  324.33 -
  324.34 -// Forward declarations
  324.35 -class MHTTPFilter;
  324.36 -
  324.37 -
  324.38 -//##ModelId=3C4C187D0188
  324.39 -class THTTPFilterRegistration
  324.40 -/** 
  324.41 -A registration of a filter in the filter queue
  324.42 -@publishedAll
  324.43 -@released
  324.44 -*/
  324.45 -	{
  324.46 - public:
  324.47 -	/// Default constructor
  324.48 -	//##ModelId=3C4C187D020B
  324.49 -	THTTPFilterRegistration();
  324.50 -	/// Constructor
  324.51 -	//##ModelId=3C4C187D0214
  324.52 -	THTTPFilterRegistration(MHTTPFilter& aFilter, THTTPEvent aEvent,
  324.53 -						RStringTokenF aHeader, TInt aStatusCode, 
  324.54 -						TInt aPosition, RStringTokenF aName, TInt aHandle);
  324.55 -	/// Equality operator
  324.56 -	//##ModelId=3C4C187D0201
  324.57 -	TBool operator==(THTTPFilterRegistration& aThat);
  324.58 -	/// Inequality operator
  324.59 -	//##ModelId=3C4C187D01F9
  324.60 -	TBool operator!=(THTTPFilterRegistration& aThat);
  324.61 -
  324.62 - public:
  324.63 -	/// The position
  324.64 -	//##ModelId=3C4C187D01F6
  324.65 -	TInt				iPosition; // This MUST be first!
  324.66 -	/// The filter
  324.67 -	//##ModelId=3C4C187D01E4
  324.68 -	MHTTPFilter*		iFilter;
  324.69 -	/// The event it's interested in (or any)
  324.70 -	//##ModelId=3C4C187D01D8
  324.71 -	THTTPEvent			iEvent;
  324.72 -	/// The header it's interested in (or any)
  324.73 -	//##ModelId=3C4C187D01C6
  324.74 -	RStringTokenF	iHeader;
  324.75 -	/// The status it's interested in (or any)
  324.76 -	//##ModelId=3C4C187D01BC
  324.77 -	TInt				iStatus;
  324.78 -	/// The name of the filter
  324.79 -	//##ModelId=3C4C187D01B2
  324.80 -	RStringTokenF    iName;
  324.81 -	/// The handle of the filter
  324.82 -	//##ModelId=3C4C187D01A8
  324.83 -	TInt                iHandle;
  324.84 -	};
  324.85 -
  324.86 -inline THTTPFilterRegistration::THTTPFilterRegistration()
  324.87 -		: iEvent(THTTPEvent::EAll)
  324.88 -	{
  324.89 -	}
  324.90 -
  324.91 -inline THTTPFilterRegistration::THTTPFilterRegistration(MHTTPFilter& aFilter, 
  324.92 -														THTTPEvent aEvent,
  324.93 -														RStringTokenF aHeader,
  324.94 -														TInt aStatusCode, 
  324.95 -														TInt aPosition,
  324.96 -														RStringTokenF aName,
  324.97 -														TInt aHandle)
  324.98 -		:iPosition(aPosition), iFilter(&aFilter), iEvent(aEvent),
  324.99 -	iHeader(aHeader), iStatus(aStatusCode) , iName(aName), iHandle(aHandle)
 324.100 -	{
 324.101 -	}
 324.102 -
 324.103 -
 324.104 -
 324.105 -#endif // __THTTPFILTERREGISTRATION_H__
   325.1 --- a/epoc32/include/http/thttphdrfielditer.h	Tue Mar 16 16:12:26 2010 +0000
   325.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   325.3 @@ -1,106 +0,0 @@
   325.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   325.5 -// All rights reserved.
   325.6 -// This component and the accompanying materials are made available
   325.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   325.8 -// which accompanies this distribution, and is available
   325.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  325.10 -//
  325.11 -// Initial Contributors:
  325.12 -// Nokia Corporation - initial contribution.
  325.13 -//
  325.14 -// Contributors:
  325.15 -//
  325.16 -// Description:
  325.17 -//
  325.18 -
  325.19 -
  325.20 -
  325.21 -/**
  325.22 - @file THTTPHdrFieldIter.h
  325.23 - @warning : This file contains Rose Model ID comments - please do not delete
  325.24 -*/
  325.25 -
  325.26 -#ifndef __THTTPHDRFIELDITER_H__
  325.27 -#define __THTTPHDRFIELDITER_H__
  325.28 -
  325.29 -// System includes
  325.30 -#include <e32std.h>
  325.31 -#include <stringpool.h>
  325.32 -
  325.33 -// Forward declarations
  325.34 -class CHeaders;
  325.35 -
  325.36 -
  325.37 -//##ModelId=3A914DFD005C
  325.38 -class THTTPHdrFieldIter
  325.39 -/** 
  325.40 -Iterator class to iterate the fields within a RHTTPHeaders. 
  325.41 -@publishedAll
  325.42 -@released
  325.43 -*/
  325.44 -	{
  325.45 -public:
  325.46 -	/** Construct an iterator for the fields of the supplied header collection.
  325.47 -		@param aHeaders The header collection whose fields we want to iterate
  325.48 -	*/
  325.49 -	//##ModelId=3A914DFD0087
  325.50 -	THTTPHdrFieldIter(const CHeaders* aHeaders);
  325.51 -	/** Class destructor
  325.52 -	*/
  325.53 -	//##ModelId=3A914DFD0086
  325.54 -	IMPORT_C ~THTTPHdrFieldIter();
  325.55 -
  325.56 -	/** Reset iterator to point at the first field in the header collection
  325.57 -	*/
  325.58 -	//##ModelId=3A914DFD0085
  325.59 -	IMPORT_C void First();
  325.60 -
  325.61 -	/** Check if the iterator is at the end of the collection. If so,
  325.62 -	    further calls to operator() will return NULL.
  325.63 -		@return True if the iterator has reached the end of the header
  325.64 -		fields 
  325.65 -	*/
  325.66 -	//##ModelId=3A914DFD0084
  325.67 -	IMPORT_C TBool AtEnd() const;
  325.68 -
  325.69 -	/** Advance the iterator to the next field.
  325.70 -		@return True if the iterator still points at a valid part
  325.71 -		after advancing.
  325.72 -	*/
  325.73 -	//##ModelId=3A914DFD007E
  325.74 -	IMPORT_C void operator++();
  325.75 -
  325.76 -	/** Obtain the name of the header field currently pointed at by
  325.77 -		the iterator.
  325.78 -		@return The field name; or <empty string> if the iterator has
  325.79 -		gone off the end of the header collection 
  325.80 -	*/
  325.81 -	//##ModelId=3A914DFD007D
  325.82 -	IMPORT_C RStringTokenF operator()();
  325.83 -
  325.84 -private:
  325.85 -
  325.86 -	/** Check the iterator state for invalidity following deletions in the collection
  325.87 -	*/
  325.88 -	//##ModelId=3BA613240002
  325.89 -	void CheckInvalidation();
  325.90 -
  325.91 -	/** The headers whose fields we are iterating.
  325.92 -	*/
  325.93 -	//##ModelId=3A914DFD007A
  325.94 -	const CHeaders* iHeaders;
  325.95 -	/** The index of the field in the header that is currently pointed
  325.96 -		at by the iterator
  325.97 -	*/
  325.98 -	//##ModelId=3A914DFD0072
  325.99 -	TInt iPosIdx;
 325.100 -	};
 325.101 -
 325.102 -inline THTTPHdrFieldIter::THTTPHdrFieldIter(const CHeaders* aHeaders)
 325.103 -	: iHeaders(aHeaders)
 325.104 -	{
 325.105 -	First();
 325.106 -	}
 325.107 -
 325.108 -
 325.109 -#endif // __THTTPHDRFIELDITER_H__
   326.1 --- a/epoc32/include/http/thttphdrval.h	Tue Mar 16 16:12:26 2010 +0000
   326.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   326.3 @@ -1,280 +0,0 @@
   326.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   326.5 -// All rights reserved.
   326.6 -// This component and the accompanying materials are made available
   326.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   326.8 -// which accompanies this distribution, and is available
   326.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  326.10 -//
  326.11 -// Initial Contributors:
  326.12 -// Nokia Corporation - initial contribution.
  326.13 -//
  326.14 -// Contributors:
  326.15 -//
  326.16 -// Description:
  326.17 -//
  326.18 -
  326.19 -
  326.20 -
  326.21 -/**
  326.22 - @file THTTPHdrVal.h
  326.23 - @warning : This file contains Rose Model ID comments - please do not delete
  326.24 -*/
  326.25 -
  326.26 -#ifndef	__THTTPHDRVAL_H__
  326.27 -#define	__THTTPHDRVAL_H__
  326.28 -
  326.29 -// System includes
  326.30 -#include <e32std.h>
  326.31 -#include <stringpool.h>
  326.32 -
  326.33 -
  326.34 -//##ModelId=3C4C187E027A
  326.35 -class THTTPHdrVal
  326.36 -/** 
  326.37 -A representation of a value found in an HTTP header field. Three
  326.38 -fundamental types are used in HTTP - integers, strings (which may
  326.39 -be free text, 'enumeration values', URIs, etc. or date/times.
  326.40 -
  326.41 -The class allows any of the three values to be held and the current
  326.42 -value (as well as its type) to be determined.
  326.43 -
  326.44 -THTTPHdrVal instances are used to assign values to header fields, their
  326.45 -parts and their associated parameters.
  326.46 -@publishedAll
  326.47 -@released
  326.48 -@see RHTTPHeaders
  326.49 -*/
  326.50 -	{
  326.51 -public:
  326.52 -	/**
  326.53 -		@enum THTTPValType
  326.54 -	 */
  326.55 -	typedef enum {
  326.56 -	KTIntVal = 0x00,  /**< the value is an integer*/
  326.57 -	KStrVal  = 0x01,  /**< the value is a case-sensitive string*/
  326.58 -	KDateVal = 0x02,   /**< the value is a date/time*/
  326.59 -	KStrFVal = 0x03,   /**< the value is a case-insensitive string*/
  326.60 -	KNoType =  0x04    /**< no value has yet been set*/
  326.61 -	} THTTPValType;
  326.62 -
  326.63 -public: // classes
  326.64 -
  326.65 -	// A converter for 'q' parameter values; apparently real numbers in the HTTP RFC but here passed as fixed point
  326.66 -//##ModelId=3B1E66F2024E
  326.67 -	class TQConv
  326.68 -		{
  326.69 -	public:
  326.70 -		/// Construct from a real number representation of 'q'
  326.71 -	//##ModelId=3B1E66F20282
  326.72 -		TQConv(TReal aQ);
  326.73 -
  326.74 -		/// Construct from a fixed-point representation of 'q'
  326.75 -	//##ModelId=3B1E66F2028C
  326.76 -		TQConv(TInt aQ);
  326.77 -
  326.78 -		/// Integer cast operator to get the fixed-point representation
  326.79 -	//##ModelId=3B1E66F20281
  326.80 -		operator TInt() const;
  326.81 -
  326.82 -		/// TReal cast operator to get the real number representation
  326.83 -	//##ModelId=3B1E66F20280
  326.84 -		operator TReal() const;
  326.85 -	private:
  326.86 -		/// The real number q-value
  326.87 -	//##ModelId=3B1E66F2027A
  326.88 -		TReal iQ;
  326.89 -		/// The integer fixed-point q-value representation
  326.90 -	//##ModelId=3B1E66F2026E
  326.91 -		TInt iFQ;
  326.92 -		};
  326.93 -
  326.94 -public:
  326.95 -	/** Default constructor	
  326.96 -		Used when constructing an empty header value that is to be filled in by
  326.97 -		a call to a function. e.g. RHTTPHeaders::GetField
  326.98 -	*/
  326.99 -	IMPORT_C THTTPHdrVal();
 326.100 -
 326.101 -	/** Constructor for an integer field value
 326.102 -		@param aIntVal The integer value
 326.103 -	*/
 326.104 -	IMPORT_C THTTPHdrVal(TInt aIntVal);
 326.105 -
 326.106 -	/** Constructor for an string value
 326.107 -		@param aStrVal The string value
 326.108 -	*/
 326.109 -	IMPORT_C THTTPHdrVal(RStringF aStrVal);
 326.110 -	/** Constructor for an string value
 326.111 -		@param aStrVal The string value
 326.112 -	*/
 326.113 -	IMPORT_C THTTPHdrVal(RString aStrVal);
 326.114 -
 326.115 -	/** Constructor for an date/time value
 326.116 -		@param aDateVal The date/time value
 326.117 -	*/
 326.118 -	IMPORT_C THTTPHdrVal(TDateTime aDateVal);
 326.119 -
 326.120 -	/** Obtain a copy of this header value.  This is critical when the header contains a string, since
 326.121 -		a new string reference must be created
 326.122 -		@return The copied header value
 326.123 -	*/
 326.124 -	//##ModelId=3C4C187E02F3
 326.125 -	IMPORT_C THTTPHdrVal Copy() const;
 326.126 -
 326.127 -	/** Determine the type of this header field value
 326.128 -		@return A THTTPValType enumeration describing the value's type
 326.129 -	*/
 326.130 -	//##ModelId=3C4C187E02F2
 326.131 -	IMPORT_C THTTPValType Type() const;
 326.132 -
 326.133 -	/** Obtain the (integer) value held within
 326.134 -		Panics if the value is of the wring type
 326.135 -		@pre Requires that the object was previously set to hold a TInt
 326.136 -		@return An integer value
 326.137 -	*/
 326.138 -	//##ModelId=3C4C187E02EA
 326.139 -	IMPORT_C TInt Int() const;
 326.140 -
 326.141 -	/** Cast operator to obtain the HTTP value as an integer.  
 326.142 -		Note this doesn't convert from a different form to integer!
 326.143 -		Panics if the value is of the wrong type
 326.144 -		@pre Requires that the object was previously set to hold a TInt
 326.145 -	*/
 326.146 -	//##ModelId=3C4C187E02E9
 326.147 -	inline operator TInt() const;
 326.148 -
 326.149 -    /** Obtain the (string) value held within
 326.150 -		Panics if the value is of the wring type
 326.151 -		@pre Requires that the object was previously set to hold a string
 326.152 -		@return A string
 326.153 -	*/
 326.154 -	//##ModelId=3C4C187E02E8
 326.155 -	IMPORT_C RStringF StrF() const;
 326.156 -	//##ModelId=3C4C187E02E0
 326.157 -	IMPORT_C RString Str() const;
 326.158 -
 326.159 -	/** Cast operator to obtain the HTTP value as a string.  
 326.160 -		Note this doesn't convert from a different form to string!
 326.161 -		Panics if the value is of the wring type
 326.162 -		@pre Requires that the object was previously set to hold a string
 326.163 -	*/
 326.164 -	//##ModelId=3C4C187E02DF
 326.165 -	inline operator RStringF() const;
 326.166 -	/** Cast operator to obtain the HTTP value as a string.  
 326.167 -		Note this doesn't convert from a different form to string!
 326.168 -		Panics if the value is of the wring type
 326.169 -		@pre Requires that the object was previously set to hold a string
 326.170 -	*/
 326.171 -	//##ModelId=3C4C187E02DE
 326.172 -	inline operator RString() const;
 326.173 -
 326.174 -	/** Obtain the (date/time) value held within.
 326.175 -		Panics if the value is of the wrong type
 326.176 -		@pre Requires that the object was previously set to hold a TDateTime
 326.177 -		@return An date/time value
 326.178 -	*/
 326.179 -	//##ModelId=3C4C187E02D6
 326.180 -	IMPORT_C TDateTime DateTime() const;
 326.181 -
 326.182 -	/** Cast operator to obtain the HTTP value as an date/time.  
 326.183 -		Note this doesn't convert from a different form to date!
 326.184 -		Panics if the value is of the wring type
 326.185 -		@pre Requires that the object was previously set to hold a TDateTime
 326.186 -	*/
 326.187 -	//##ModelId=3C4C187E02D5
 326.188 -	inline operator TDateTime() const;
 326.189 -
 326.190 -	/** Set the header value to be the supplied integer. 
 326.191 -		@warning Any previous value, or its type, are lost.
 326.192 -		@param aIntVal The integer value
 326.193 -	*/
 326.194 -	//##ModelId=3C4C187E02CC
 326.195 -	IMPORT_C void SetInt(TInt aIntVal);
 326.196 -
 326.197 -	/** Set the header value to be the supplied string. 
 326.198 -		@warning Any previous value, or its type, are lost.
 326.199 -		@param aStrVal The string value
 326.200 -	*/
 326.201 -	//##ModelId=3C4C187E02CA
 326.202 -	IMPORT_C void SetStrF(RStringF aStrVal);
 326.203 -	/** Set the header value to be the supplied string. Any previous
 326.204 -		value, or its type, are lost.
 326.205 -		@param aStrVal The string value */
 326.206 -	//##ModelId=3C4C187E02C2
 326.207 -	IMPORT_C void SetStr(RString aStrVal);
 326.208 -
 326.209 -	/** Set the header value to be the supplied date/time. Any previous value, or its type, are lost.
 326.210 -		@param aDateVal The date/time value
 326.211 -	*/
 326.212 -	//##ModelId=3C4C187E02C0
 326.213 -	IMPORT_C void SetDateTime(TDateTime aDateVal);
 326.214 -
 326.215 -	/** Comparison operator.  Does a comparison based on the current type.
 326.216 -		@param aVal The header value to compare. */
 326.217 -	//##ModelId=3C4C187E02B8
 326.218 -	IMPORT_C TBool operator==(THTTPHdrVal aVal) const;
 326.219 -
 326.220 -	/** Comparison operator.  Does a comparison based on the current type.
 326.221 -		@param aVal The string to compare. */
 326.222 -	//##ModelId=3C4C187E02B6
 326.223 -	IMPORT_C TBool operator!=(THTTPHdrVal aVal) const;
 326.224 -
 326.225 -private:
 326.226 -	/** 
 326.227 -		The current type
 326.228 -	*/
 326.229 -	//##ModelId=3C4C187E02AC
 326.230 -	THTTPValType iType;
 326.231 -
 326.232 -	/** 
 326.233 -		The value 
 326.234 -	*/
 326.235 -	//##ModelId=3C4C187E02A4
 326.236 -	TInt iVal;
 326.237 -	//##ModelId=3C4C187E029A
 326.238 -	TInt iMoreSpace;
 326.239 -	};
 326.240 -
 326.241 -inline THTTPHdrVal::TQConv::TQConv(TReal aQ)
 326.242 -	: iQ(aQ), iFQ((TInt)(iQ*1000))
 326.243 -	{
 326.244 -	}
 326.245 -
 326.246 -inline THTTPHdrVal::TQConv::TQConv(TInt aFQ)
 326.247 -	: iQ((TReal)(aFQ/1000.)), iFQ(aFQ)
 326.248 -	{
 326.249 -	}
 326.250 -
 326.251 -inline THTTPHdrVal::TQConv::operator TInt() const
 326.252 -	{
 326.253 -	return iFQ;
 326.254 -	}
 326.255 -
 326.256 -inline THTTPHdrVal::TQConv::operator TReal() const
 326.257 -	{
 326.258 -	return iQ;
 326.259 -	}
 326.260 -
 326.261 -inline THTTPHdrVal::operator TInt() const
 326.262 -	{
 326.263 -	return Int();
 326.264 -	}
 326.265 -
 326.266 -inline THTTPHdrVal::operator RStringF() const
 326.267 -	{
 326.268 -	return StrF();
 326.269 -	}
 326.270 -
 326.271 -inline THTTPHdrVal::operator RString() const
 326.272 -	{
 326.273 -	return Str();
 326.274 -	}
 326.275 -
 326.276 -inline THTTPHdrVal::operator TDateTime() const
 326.277 -	{
 326.278 -	return DateTime();
 326.279 -	}
 326.280 -
 326.281 -
 326.282 -
 326.283 -#endif // __THTTPHDRVAL_H__
   327.1 --- a/epoc32/include/httperr.h	Tue Mar 16 16:12:26 2010 +0000
   327.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   327.3 @@ -1,882 +0,0 @@
   327.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   327.5 -// All rights reserved.
   327.6 -// This component and the accompanying materials are made available
   327.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   327.8 -// which accompanies this distribution, and is available
   327.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  327.10 -//
  327.11 -// Initial Contributors:
  327.12 -// Nokia Corporation - initial contribution.
  327.13 -//
  327.14 -// Contributors:
  327.15 -//
  327.16 -// Description:
  327.17 -//
  327.18 -
  327.19 -
  327.20 -
  327.21 -/**
  327.22 - @file httperr.h
  327.23 - @warning : This file contains Rose Model ID comments - please do not delete
  327.24 -*/
  327.25 -
  327.26 -#ifndef __HTTPERR_H__
  327.27 -#define __HTTPERR_H__
  327.28 -
  327.29 -// System includes
  327.30 -#include <e32std.h>
  327.31 -
  327.32 -//##ModelId=3C4C18750141
  327.33 -class HTTPStatus
  327.34 -/** 
  327.35 -The complete set of HTTP Status codes, as defined in RFC2616.
  327.36 -@publishedAll
  327.37 -@released
  327.38 -*/
  327.39 -	{
  327.40 -public:
  327.41 -	enum 
  327.42 -		{
  327.43 -		/** 'Informational' range of codes 1xx 
  327.44 -		*/ 
  327.45 -		/** Continue.
  327.46 -		*/
  327.47 -		EContinue						= 100, 
  327.48 -		/** Switching Protocols.
  327.49 -		*/
  327.50 -		ESwitchingProtocols				= 101,  
  327.51 -		/** 'Successful' range of codes 2xx 
  327.52 -		*/
  327.53 -		/** Ok.
  327.54 -		*/
  327.55 -		EOk								= 200,
  327.56 -		/** Created.
  327.57 -		*/
  327.58 -		ECreated						= 201,  
  327.59 -		/** The entry has been accepted.
  327.60 -		*/
  327.61 -		EAccepted						= 202,
  327.62 -		/** Non-Authoritative Information.
  327.63 -		*/
  327.64 -		ENonAuthoritativeInfo			= 203,
  327.65 -		/** No Content.
  327.66 -		*/
  327.67 -		ENoContent						= 204,
  327.68 -		/** Reset Content.
  327.69 -		*/
  327.70 -		EResetContent					= 205, 
  327.71 -		/** Partial Content.
  327.72 -		*/
  327.73 -		EPartialContent					= 206,
  327.74 -		/** 'Redirection' range of codes 3xx 
  327.75 -		*/
  327.76 -		/** Multiple Choices.
  327.77 -		*/
  327.78 -		EMultipleChoices				= 300, 
  327.79 -		/** Moved Permanently.
  327.80 -		*/
  327.81 -		EMovedPermanently				= 301,
  327.82 -		/** Found.
  327.83 -		Note, this is deprecated in HTTP/1.1 - 307 will be used instead
  327.84 -		*/
  327.85 -		EFound							= 302,  
  327.86 -		/** See Other.
  327.87 -		*/
  327.88 -		ESeeOther						= 303,
  327.89 -		/** Not Modified.
  327.90 -		*/
  327.91 -		ENotModified					= 304,
  327.92 -		/** Use Proxy.
  327.93 -		*/
  327.94 -		EUseProxy						= 305,
  327.95 -		/** Unused.
  327.96 -		*/
  327.97 -		EUnused							= 306,
  327.98 -		/** Temporary Redirect.
  327.99 -		*/
 327.100 -		ETemporaryRedirect				= 307,
 327.101 -		/** 'Client Error' range of codes 4xx 
 327.102 -		*/
 327.103 -		/** Bad Request.
 327.104 -		*/
 327.105 -		EBadRequest						= 400,
 327.106 -		/** Unauthorized.
 327.107 -		*/
 327.108 -		EUnauthorized					= 401,
 327.109 -		/** Payment Required. Note, this is reserved in HTTP/1.1
 327.110 -		*/
 327.111 -		EPaymentRequired				= 402, 
 327.112 -		/** Forbidden.
 327.113 -		*/
 327.114 -		EForbidden						= 403,
 327.115 -		/** Not Found.
 327.116 -		*/
 327.117 -		ENotFound						= 404,
 327.118 -		/** Method Not Allowed.
 327.119 -		*/
 327.120 -		EMethodNotAllowed				= 405,
 327.121 -		/** Not Acceptable.
 327.122 -		*/
 327.123 -		ENotAcceptable					= 406,
 327.124 -		/** Proxy Authentication Required.
 327.125 -		*/
 327.126 -		EProxyAuthenticationRequired	= 407,
 327.127 -		/** Request Timeout.
 327.128 -		*/
 327.129 -		ERequestTimeout					= 408,
 327.130 -		/** Conflict.
 327.131 -		*/
 327.132 -		EConflict						= 409,
 327.133 -		/** Gone.
 327.134 -		*/
 327.135 -		EGone							= 410,
 327.136 -		/** Length Required.
 327.137 -		*/
 327.138 -		ELengthRequired					= 411,
 327.139 -		/** Precondition Failed.
 327.140 -		*/
 327.141 -		EPreconditionFailed				= 412,
 327.142 -		/** Request Entity Too Large. 
 327.143 -		*/
 327.144 -		ERequestEntityTooLarge			= 413,
 327.145 -		/** Request-URI Too Long.
 327.146 -		*/
 327.147 -		ERequestURITooLong				= 414,
 327.148 -		/** Unsupported Media Type.
 327.149 -		*/
 327.150 -		EUnsupportedMediaType			= 415,
 327.151 -		/** Requested Range Not Satisfiable.
 327.152 -		*/
 327.153 -		ERequestedRangeNotSatisfiable	= 416,
 327.154 -		/** Expectation Failed.
 327.155 -		*/
 327.156 -		EExpectationFailed				= 417,
 327.157 -		/** 'Server Error' range of codes 5xx 
 327.158 -		*/
 327.159 -		/** Internal Server Error.
 327.160 -		*/
 327.161 -		EInternalServerError			= 500,
 327.162 -		/** Not Implemented.
 327.163 -		*/
 327.164 -		ENotImplemented					= 501,
 327.165 -		/** Bad Gateway.
 327.166 -		*/
 327.167 -		EBadGateway						= 502,
 327.168 -		/** Service Unavailable.
 327.169 -		*/
 327.170 -		EServiceUnavailable				= 503, 
 327.171 -		/** Gateway Timeout.
 327.172 -		*/
 327.173 -		EGatewayTimeout					= 504,
 327.174 -		/** HTTP Version Not Supported.
 327.175 -		*/
 327.176 -		EHTTPVersionNotSupported		= 505
 327.177 -		};
 327.178 -
 327.179 -		/** Is the supplied status code in the 1xx Informational range?
 327.180 -		@param aStatus Is the supplied status code in the 1xx Informational range?
 327.181 -		@return ETrue if the specified status code is in the 1xx Informational range.
 327.182 -		##ModelId=3C4C18750162
 327.183 -		*/
 327.184 -		inline static TBool IsInformational(TInt aStatus);
 327.185 -		
 327.186 -		
 327.187 -		/** Is the supplied status code in the 2xx Successful range?
 327.188 -		@param aStatus Is the supplied status code in the 2xx Successful range?
 327.189 -		@return ETrue if the specified status code is in the 2xx Successful range
 327.190 -		##ModelId=3C4C18750160
 327.191 -		*/
 327.192 -		inline static TBool IsSuccessful(TInt aStatus);
 327.193 -
 327.194 -		/** Is the supplied status code in the 3xx Redirection range? 
 327.195 -		@param aStatus Is the supplied status code in the 3xx Redirection range?
 327.196 -		@return	ETrue if the specified status code is in the 3xx Redirection range.
 327.197 -		##ModelId=3C4C18750159
 327.198 -		*/
 327.199 -		inline static TBool IsRedirection(TInt aStatus);
 327.200 -
 327.201 -		/** Is the supplied status code in the 4xx Client Error range? 
 327.202 -		@param aStatus Is the supplied status code in the 4xx Client Error range?
 327.203 -		@return ETrue if the specified status code is in the 4xx Client Error range.
 327.204 -		##ModelId=3C4C18750157
 327.205 -		*/
 327.206 -		inline static TBool IsClientError(TInt aStatus);
 327.207 -
 327.208 -		/** Is the supplied status code in the 5xx Server Error range? 
 327.209 -		@param aStatus Is the supplied status code in the 5xx Server Error range?
 327.210 -		@return ETrue if the specified status code is in the 5xx Server Error range.
 327.211 -		##ModelId=3C4C18750155
 327.212 -		*/
 327.213 -		inline static TBool IsServerError(TInt aStatus);
 327.214 -	};
 327.215 -
 327.216 -//
 327.217 -// HTTP Panic codes
 327.218 -//
 327.219 -
 327.220 -#include <e32base.h>
 327.221 -
 327.222 -// HTTPPanic::Panic(HTTPPanic:: )
 327.223 -
 327.224 -//##ModelId=3C4C18740352
 327.225 -class HTTPPanic
 327.226 -/**
 327.227 -HTTP panic codes
 327.228 -@publishedAll
 327.229 -@released
 327.230 -*/
 327.231 -	{
 327.232 -public:
 327.233 -	enum THTTPPanic
 327.234 -		{
 327.235 -		/** RHTTPSession session is already open. ( Panic HTTP-CORE 0 )
 327.236 -		*/
 327.237 -		ESessionAlreadyOpen,
 327.238 -		/** Specified field is missing. ( Panic HTTP-CORE 1 )
 327.239 -		*/
 327.240 -		EHeaderFieldMissing,
 327.241 -		/** Unused. ( Panic HTTP-CORE 2 )
 327.242 -		*/
 327.243 -		EHeaderParamMissing,
 327.244 -		/** Unused. ( Panic HTTP-CORE 2 )
 327.245 -		*/
 327.246 -		EHeaderInvalidPart,
 327.247 -		/** Mismatch between header's type and its attempted use. ( Panic HTTP-CORE 4 )
 327.248 -		*/
 327.249 -		EHeaderInvalidType,
 327.250 -		/** Unused. ( Panic HTTP-CORE 5 )
 327.251 -		*/
 327.252 -		ETransactionEventOutstanding,
 327.253 -		/** A transaction error occurred, and the MHFRunError() in use didn't handle it. ( Panic HTTP-CORE 6 )
 327.254 -		*/
 327.255 -		ETransactionUnhandledError,
 327.256 -		/** Attempted to add a filter while there is a transaction outstanding. ( Panic HTTP-CORE 6 )
 327.257 -		*/
 327.258 -		EAddingFilterWithOutstandingTransactions,
 327.259 -		/** Attempted to add a filter at a position not between the protocol handler and the client. ( Panic HTTP-CORE 8 )
 327.260 -		*/
 327.261 -		EFilterInvalidPosition,
 327.262 -		/** CHTTPEncoder object destroyed without its data being released. ( Panic HTTP-CORE 9 )
 327.263 -		*/
 327.264 -		EHTTPFormDataUnreleased,
 327.265 -		/** CHTTPEncoder object at the wrong state for adding data. ( Panic HTTP-CORE 10 ) 
 327.266 -		*/
 327.267 -		EHTTPFormSupplyingData,
 327.268 -		/** Unused. ( Panic HTTP-CORE 11 )
 327.269 -		*/
 327.270 -		EValidationFilterFailure,
 327.271 -		/** Invalid request data. ( Panic HTTP-CORE 12 )
 327.272 -		*/
 327.273 -		EInvalidTxData,
 327.274 -		/** Invalid response data. ( Panic HTTP-CORE 13 )
 327.275 -		*/
 327.276 -		EInvalidRxData,
 327.277 -		/** Unused. ( Panic HTTP-CORE 14 )
 327.278 -		*/
 327.279 -		ENoTransportHandlerSet,
 327.280 -		/** Unused. ( Panic HTTP-CORE 15 )
 327.281 -		*/
 327.282 -		EAuthenticationFilterBadState,
 327.283 -		/** An invalid filter handle was specified. ( Panic HTTP-CORE 16 )
 327.284 -		*/
 327.285 -		EInvalidFilterHandle
 327.286 -		};
 327.287 -
 327.288 -	//##ModelId=3C4C18740366
 327.289 -	static void Panic(THTTPPanic aPanic);
 327.290 -	};
 327.291 -
 327.292 -// HTTP external errors/leave codes. Add new sub-ranges at the end; do not insert between the sub-ranges that
 327.293 -// are already here.  This is to allow a client to reasonably check for errors between two adjacent range
 327.294 -// base values rather than check for individual codes.
 327.295 -
 327.296 -/**
 327.297 -Base value for the HTTP error code range (-7200 to -7399)
 327.298 -@publishedAll
 327.299 -@released
 327.300 -*/
 327.301 -const TInt KHttpErrorBase = -7200;
 327.302 -
 327.303 -//
 327.304 -// Text mode HTTP protocol handler
 327.305 -//
 327.306 -
 327.307 -/**
 327.308 -Codec encoding errors for HTTP headers
 327.309 -@publishedAll
 327.310 -@released
 327.311 -*/
 327.312 -const TInt KHttpHeaderEncodeErrorBase = KHttpErrorBase;
 327.313 -
 327.314 -/**
 327.315 -Error making a default encoding of unrecognised headers
 327.316 -@publishedAll
 327.317 -@released
 327.318 -*/
 327.319 -const TInt KErrHttpEncodeDefault			= KHttpHeaderEncodeErrorBase;
 327.320 -/**
 327.321 -Error encoding the Accept field
 327.322 -@publishedAll
 327.323 -@released
 327.324 -*/
 327.325 -const TInt KErrHttpEncodeAccept				= KHttpHeaderEncodeErrorBase - 1; 
 327.326 -/**
 327.327 -Error encoding the Accept-Charset field
 327.328 -@publishedAll
 327.329 -@released
 327.330 -*/
 327.331 -const TInt KErrHttpEncodeAcceptCharset		= KHttpHeaderEncodeErrorBase - 2; 
 327.332 -/**
 327.333 -Error encoding a q-value parameter
 327.334 -@publishedAll
 327.335 -@released
 327.336 -*/
 327.337 -const TInt KErrHttpEncodeQValue				= KHttpHeaderEncodeErrorBase - 3; 
 327.338 -/**
 327.339 -Error encoding the Authorization field
 327.340 -@publishedAll
 327.341 -@released
 327.342 -*/
 327.343 -const TInt KErrHttpEncodeAuthorization		= KHttpHeaderEncodeErrorBase - 4; 
 327.344 -/**
 327.345 -Error encoding Basic credentials
 327.346 -@publishedAll
 327.347 -@released
 327.348 -*/
 327.349 -const TInt KErrHttpEncodeBasicAuth			= KHttpHeaderEncodeErrorBase - 5; 
 327.350 -/**
 327.351 -Error encoding Digest credentials
 327.352 -@publishedAll
 327.353 -@released
 327.354 -*/
 327.355 -const TInt KErrHttpEncodeDigestAuth			= KHttpHeaderEncodeErrorBase - 6; 
 327.356 -/**
 327.357 -Error encoding the Connection field
 327.358 -@publishedAll
 327.359 -@released
 327.360 -*/
 327.361 -const TInt KErrHttpEncodeConnection			= KHttpHeaderEncodeErrorBase - 7; 
 327.362 -/**
 327.363 -Error encoding the Content-Length field
 327.364 -@publishedAll
 327.365 -@released
 327.366 -*/
 327.367 -const TInt KErrHttpEncodeContentLength		= KHttpHeaderEncodeErrorBase - 8; 
 327.368 -/**
 327.369 -Error encoding the Content-Type field
 327.370 -@publishedAll
 327.371 -@released
 327.372 -*/
 327.373 -const TInt KErrHttpEncodeContentType		= KHttpHeaderEncodeErrorBase - 9; 
 327.374 -/**
 327.375 -Error encoding the Host field
 327.376 -@publishedAll
 327.377 -@released
 327.378 -*/
 327.379 -const TInt KErrHttpEncodeHost				= KHttpHeaderEncodeErrorBase - 10;
 327.380 -/**
 327.381 -Error encoding the Host field's port parameter
 327.382 -@publishedAll
 327.383 -@released
 327.384 -*/
 327.385 -const TInt KErrHttpEncodeHostPort			= KHttpHeaderEncodeErrorBase - 11;
 327.386 -/**
 327.387 -Error encoding the Transfer-Encoding field
 327.388 -@publishedAll
 327.389 -@released
 327.390 -*/
 327.391 -const TInt KErrHttpEncodeTransferEncoding	= KHttpHeaderEncodeErrorBase - 12;
 327.392 -/**
 327.393 -Error encoding the User-Agent field
 327.394 -@publishedAll
 327.395 -@released
 327.396 -*/
 327.397 -const TInt KErrHttpEncodeUserAgent			= KHttpHeaderEncodeErrorBase - 13;
 327.398 -/**
 327.399 -Error encoding the Date field
 327.400 -@publishedAll
 327.401 -@released
 327.402 -*/
 327.403 -const TInt KErrHttpEncodeDate				= KHttpHeaderEncodeErrorBase - 14;
 327.404 -/**
 327.405 -Error encoding the Cookie field 
 327.406 -@publishedAll
 327.407 -@released
 327.408 -*/
 327.409 -const TInt KErrHttpEncodeCookie				= KHttpHeaderEncodeErrorBase - 15;
 327.410 -/**
 327.411 -Error encoding the Cache-Control field
 327.412 -@publishedAll
 327.413 -@released
 327.414 -*/
 327.415 -const TInt KErrHttpEncodeCacheControl		= KHttpHeaderEncodeErrorBase - 16; 
 327.416 -/**
 327.417 -Error encoding the Pragma field 
 327.418 -@publishedAll
 327.419 -@released
 327.420 -*/
 327.421 -const TInt KErrHttpEncodePragma				= KHttpHeaderEncodeErrorBase - 17;
 327.422 -/**
 327.423 -Error encoding the if match field
 327.424 -@publishedAll
 327.425 -@released
 327.426 -*/
 327.427 -const TInt KErrHttpEncodeIfMatch			= KHttpHeaderEncodeErrorBase - 18; 
 327.428 -/**
 327.429 -Error encoding the if none match field 
 327.430 -@publishedAll
 327.431 -@released
 327.432 -*/
 327.433 -const TInt KErrHttpEncodeIfNoneMatch		= KHttpHeaderEncodeErrorBase - 19;
 327.434 -/**
 327.435 -Error encoding the if modified since field 
 327.436 -@publishedAll
 327.437 -@released
 327.438 -*/
 327.439 -const TInt KErrHttpEncodeIfModifiedSince	= KHttpHeaderEncodeErrorBase - 20;
 327.440 -/**
 327.441 -Error encoding the if unmodified since field 
 327.442 -@publishedAll
 327.443 -@released
 327.444 -*/
 327.445 -const TInt KErrHttpEncodeIfUnmodifiedSince	= KHttpHeaderEncodeErrorBase - 21;
 327.446 -/**
 327.447 -Error encoding the Cookie2 field 
 327.448 -@publishedAll
 327.449 -@released
 327.450 -*/
 327.451 -const TInt KErrHttpEncodeCookie2			= KHttpHeaderEncodeErrorBase - 22;
 327.452 -/**
 327.453 -Error encoding the Content-Language field
 327.454 -@publishedAll
 327.455 -@released
 327.456 -*/
 327.457 -const TInt KErrHttpEncodeContentLanguage	= KHttpHeaderEncodeErrorBase - 23;
 327.458 -/**
 327.459 -Error encoding the WWWAuthenticate field
 327.460 -@publishedAll
 327.461 -@released
 327.462 -*/
 327.463 -const TInt KErrHttpEncodeDoWWWAuthenticate	= KHttpHeaderEncodeErrorBase - 24;
 327.464 -/**
 327.465 -Error encoding the Age field
 327.466 -@publishedAll
 327.467 -@released
 327.468 -*/
 327.469 -const TInt KErrHttpEncodeDoAge				= KHttpHeaderEncodeErrorBase - 25;
 327.470 -/**
 327.471 -Error encoding the Vary field
 327.472 -@publishedAll
 327.473 -@released
 327.474 -*/
 327.475 -const TInt KErrHttpEncodeDoVary				= KHttpHeaderEncodeErrorBase - 26;
 327.476 -/**
 327.477 -Error encoding the Content-Language field
 327.478 -@publishedAll
 327.479 -@released
 327.480 -*/
 327.481 -const TInt KErrHttpEncodeDoContentLanguage	= KHttpHeaderEncodeErrorBase - 27;
 327.482 -/**
 327.483 -Error encoding the Content-Encoding field
 327.484 -@publishedAll
 327.485 -@released
 327.486 -*/
 327.487 -const TInt KErrHttpEncodeContentEncoding	= KHttpHeaderEncodeErrorBase - 28;
 327.488 -/**
 327.489 -Error encoding the Content-Location field
 327.490 -@publishedAll
 327.491 -@released
 327.492 -*/
 327.493 -const TInt KErrHttpEncodeContentLocation	= KHttpHeaderEncodeErrorBase - 29;
 327.494 -/**
 327.495 -Error encoding the Content-MD5 field
 327.496 -@publishedAll
 327.497 -@released
 327.498 -*/
 327.499 -const TInt KErrHttpEncodeContentMD5			= KHttpHeaderEncodeErrorBase - 30;
 327.500 -/**
 327.501 -Error encoding the Accept-Encoding field
 327.502 -@publishedAll
 327.503 -@released
 327.504 -*/
 327.505 -const TInt KErrHttpEncodeAcceptLanguage		= KHttpHeaderEncodeErrorBase - 31;
 327.506 -/**
 327.507 -Error encoding the Accept-Language field
 327.508 -@publishedAll
 327.509 -@released
 327.510 -*/
 327.511 -const TInt KErrHttpEncodeAcceptEncoding		= KHttpHeaderEncodeErrorBase - 32;
 327.512 -/**
 327.513 -Error encoding the TE field
 327.514 -@publishedAll
 327.515 -@released
 327.516 -*/
 327.517 -const TInt KErrHttpEncodeTE					= KHttpHeaderEncodeErrorBase - 33;
 327.518 -/**
 327.519 -Error encoding the Upgrade field
 327.520 -@publishedAll
 327.521 -@released
 327.522 -*/
 327.523 -const TInt KErrHttpEncodeUpgrade			= KHttpHeaderEncodeErrorBase - 34;
 327.524 -
 327.525 -/**
 327.526 -Codec decoding errors for values found in HTTP headers
 327.527 -@publishedAll
 327.528 -@released
 327.529 -*/
 327.530 -const TInt KHttpValueDecodeErrorBase = KHttpErrorBase - 60;
 327.531 -
 327.532 -/**
 327.533 -General formatting error for date values
 327.534 -@publishedAll
 327.535 -@released
 327.536 -*/
 327.537 -const TInt KErrHttpDecodeMalformedDate		= KHttpValueDecodeErrorBase;	 
 327.538 -/**
 327.539 -Malformed year
 327.540 -@publishedAll
 327.541 -@released
 327.542 -*/
 327.543 -const TInt KErrHttpDecodeMalformedYear 		= KHttpValueDecodeErrorBase - 1; 
 327.544 -/**
 327.545 -Malformed short month name
 327.546 -@publishedAll
 327.547 -@released
 327.548 -*/
 327.549 -const TInt KErrHttpDecodeMalformedMonth		= KHttpValueDecodeErrorBase - 2; 
 327.550 -/**
 327.551 -Malformed number of day in month
 327.552 -@publishedAll
 327.553 -@released
 327.554 -*/
 327.555 -const TInt KErrHttpDecodeMalformedDay		= KHttpValueDecodeErrorBase - 3; 
 327.556 -/**
 327.557 -Malformed short day name
 327.558 -@publishedAll
 327.559 -@released
 327.560 -*/
 327.561 -const TInt KErrHttpDecodeMalformedWkDay		= KHttpValueDecodeErrorBase - 4; 
 327.562 -/**
 327.563 -Malformed long day name
 327.564 -@publishedAll
 327.565 -@released
 327.566 -*/
 327.567 -const TInt KErrHttpDecodeMalformedWeekDay	= KHttpValueDecodeErrorBase - 5; 
 327.568 -/**
 327.569 -Malformed integer value
 327.570 -@publishedAll
 327.571 -@released
 327.572 -*/
 327.573 -const TInt KErrHttpDecodeMalformedInteger	= KHttpValueDecodeErrorBase - 6; 
 327.574 -/**
 327.575 -Malformed quoted string
 327.576 -@publishedAll
 327.577 -@released
 327.578 -*/
 327.579 -const TInt KErrHttpDecodeMalformedQuotedStr	= KHttpValueDecodeErrorBase - 7; 
 327.580 -
 327.581 -/**
 327.582 -Codec decoding errors for HTTP headers
 327.583 -@publishedAll
 327.584 -@released
 327.585 -*/
 327.586 -const TInt KHttpHeaderDecodeErrorBase = KHttpErrorBase - 70;
 327.587 -
 327.588 -/**
 327.589 -Error decoding the Accept field
 327.590 -@publishedAll
 327.591 -@released
 327.592 -*/
 327.593 -const TInt KErrHttpDecodeAccept				= KHttpHeaderDecodeErrorBase;
 327.594 -/**
 327.595 -Error decoding the Connection field
 327.596 -@publishedAll
 327.597 -@released
 327.598 -*/
 327.599 -const TInt KErrHttpDecodeConnection			= KHttpHeaderDecodeErrorBase - 1;
 327.600 -/**
 327.601 -Error decoding the Content-Length field
 327.602 -@publishedAll
 327.603 -@released
 327.604 -*/
 327.605 -const TInt KErrHttpDecodeContentLength		= KHttpHeaderDecodeErrorBase - 2;
 327.606 -/**
 327.607 -Error decoding the Content-Type field
 327.608 -@publishedAll
 327.609 -@released
 327.610 -*/
 327.611 -const TInt KErrHttpDecodeContentType		= KHttpHeaderDecodeErrorBase - 3;
 327.612 -/**
 327.613 -Error decoding the Transfer-Encoding field
 327.614 -@publishedAll
 327.615 -@released
 327.616 -*/
 327.617 -const TInt KErrHttpDecodeTransferEncoding	= KHttpHeaderDecodeErrorBase - 4;
 327.618 -/**
 327.619 -Error decoding the WWWAuthenticate field
 327.620 -@publishedAll
 327.621 -@released
 327.622 -*/
 327.623 -const TInt KErrHttpDecodeWWWAuthenticate	= KHttpHeaderDecodeErrorBase - 5;
 327.624 -/**
 327.625 -The WWWAuthenticate field contained an unrecognised authentication scheme
 327.626 -@publishedAll
 327.627 -@released
 327.628 -*/
 327.629 -const TInt KErrHttpDecodeUnknownAuthScheme	= KHttpHeaderDecodeErrorBase - 6;
 327.630 -/**
 327.631 -Error decoding a Basic WWWAuthenticate challenge
 327.632 -@publishedAll
 327.633 -@released
 327.634 -*/
 327.635 -const TInt KErrHttpDecodeBasicAuth			= KHttpHeaderDecodeErrorBase - 7;
 327.636 -/**
 327.637 -Error decoding a Digest WWWAuthenticate challenge
 327.638 -@publishedAll
 327.639 -@released
 327.640 -*/
 327.641 -const TInt KErrHttpDecodeDigestAuth			= KHttpHeaderDecodeErrorBase - 8;
 327.642 -/**
 327.643 -Error decoding a Set-Cookie field
 327.644 -@publishedAll
 327.645 -@released
 327.646 -*/
 327.647 -const TInt KErrHttpDecodeCookie				= KHttpHeaderDecodeErrorBase - 9;
 327.648 -/**
 327.649 -Error decoding the Authorization field
 327.650 -@publishedAll
 327.651 -@released
 327.652 -*/
 327.653 -const TInt KErrHttpDecodeAuthorization		= KHttpHeaderDecodeErrorBase - 10;
 327.654 -/**
 327.655 -Error decoding the Accept-Charset field
 327.656 -@publishedAll
 327.657 -@released
 327.658 -*/
 327.659 -const TInt KErrHttpDecodeAcceptCharset		= KHttpHeaderDecodeErrorBase - 11;
 327.660 -/**
 327.661 -Error decoding the Accept-Language field
 327.662 -@publishedAll
 327.663 -@released
 327.664 -*/
 327.665 -const TInt KErrHttpDecodeAcceptLanguage		= KHttpHeaderDecodeErrorBase - 12;
 327.666 -/**
 327.667 -Error decoding the Accept-Encoding field
 327.668 -@publishedAll
 327.669 -@released
 327.670 -*/
 327.671 -const TInt KErrHttpDecodeAcceptEncoding		= KHttpHeaderDecodeErrorBase - 13;
 327.672 -/**
 327.673 -Error decoding the TE field
 327.674 -@publishedAll
 327.675 -@released
 327.676 -*/
 327.677 -const TInt KErrHttpDecodeTE					= KHttpHeaderEncodeErrorBase - 14;
 327.678 -/**
 327.679 -Error decoding the Expect field
 327.680 -@publishedAll
 327.681 -@released
 327.682 -*/
 327.683 -const TInt KErrHttpDecodeExpect				= KHttpHeaderEncodeErrorBase - 15;
 327.684 -/**
 327.685 -Error decoding the Content-Disposition field
 327.686 -@publishedAll
 327.687 -@released
 327.688 -*/
 327.689 -const TInt KErrHttpDecodeContentDisposition	= KHttpHeaderDecodeErrorBase - 14;
 327.690 -/**
 327.691 -Response errors. These represent specific failure cases
 327.692 -@publishedAll
 327.693 -@released
 327.694 -*/
 327.695 -const TInt KErrHttpResponseFailureBase = KHttpErrorBase - 100;
 327.696 -
 327.697 -/**
 327.698 -A uri redirected too many times, possibly indicating a circular redirection
 327.699 -@publishedAll
 327.700 -@released
 327.701 -*/
 327.702 -const TInt KErrHttpRedirectExceededLimit		= KErrHttpResponseFailureBase;	  
 327.703 -/**
 327.704 -A server responded that the uri must be fetched via a proxy
 327.705 -@publishedAll
 327.706 -@released
 327.707 -*/
 327.708 -const TInt KErrHttpRedirectUseProxy				= KErrHttpResponseFailureBase - 1;
 327.709 -/**
 327.710 -A server sent a redirection response that did not include a Location header
 327.711 -@publishedAll
 327.712 -@released
 327.713 -*/
 327.714 -const TInt KErrHttpRedirectNoLocationField		= KErrHttpResponseFailureBase - 2;
 327.715 -/**
 327.716 -An error occured in parsing which left the parser in a unknown state
 327.717 -@publishedAll
 327.718 -@released
 327.719 -*/
 327.720 -const TInt KErrHttpUnknownParseState			= KErrHttpResponseFailureBase - 3;
 327.721 -
 327.722 -/**
 327.723 -Request building errors: cause the Validation Filter to make a transaction fail and terminate 
 327.724 -@publishedAll
 327.725 -@released
 327.726 -*/
 327.727 -const TInt KErrHttpReqBuildErrorBase = KHttpErrorBase - 130;
 327.728 -
 327.729 -/**
 327.730 -A body is provided with a method that doesn't allow bodys to be transmitted
 327.731 -@publishedAll
 327.732 -@released
 327.733 -*/
 327.734 -const TInt KErrHttpRequestHasBody					= KErrHttpReqBuildErrorBase;	
 327.735 -/**
 327.736 -A body is missing from a method that requires it
 327.737 -@publishedAll
 327.738 -@released
 327.739 -*/
 327.740 -const TInt KErrHttpRequestBodyMissing				= KErrHttpReqBuildErrorBase - 1;			
 327.741 -/**
 327.742 -Should contain The Max-Forward header
 327.743 -@publishedAll
 327.744 -@released
 327.745 -*/
 327.746 -const TInt KErrHttpTraceReqWithoutMaxForwardHeader	= KErrHttpReqBuildErrorBase - 2;
 327.747 -/**
 327.748 -Body must NOT be sent chunked if using HTTP/1.0
 327.749 -@publishedAll
 327.750 -@released
 327.751 -*/
 327.752 -const TInt KErrHttpPostReqBodyWithoutSizeOnHTTP10	= KErrHttpReqBuildErrorBase - 3;
 327.753 -/**
 327.754 -Request contained a response header or a entity header but no body
 327.755 -@publishedAll
 327.756 -@released
 327.757 -*/
 327.758 -const TInt KErrHttpInvalidHeaderInRequest	  		= KErrHttpReqBuildErrorBase - 4;
 327.759 -/**
 327.760 -Missing but required header errors
 327.761 -@publishedAll
 327.762 -@released
 327.763 -*/
 327.764 -
 327.765 -const TInt KErrHttpMissingHeaderBase = KHttpErrorBase - 160;
 327.766 -/**
 327.767 -A body was provided in the request but no Content-Type header was set
 327.768 -@publishedAll
 327.769 -@released
 327.770 -*/
 327.771 -
 327.772 -const TInt KErrHttpEntityHeaderMissingContentType		= KErrHttpMissingHeaderBase;	
 327.773 -/**
 327.774 -The request URI was relative, but no Host header was set to indicate a server to connect to
 327.775 -@publishedAll
 327.776 -@released
 327.777 -*/
 327.778 -const TInt KErrHttpGeneralHeaderMissingHost				= KErrHttpMissingHeaderBase - 1;
 327.779 -/**
 327.780 -Protocol handler errors
 327.781 -@publishedAll
 327.782 -@released
 327.783 -*/
 327.784 -const TInt KErrHttpProtocolHandlerBase = KHttpErrorBase - 170;
 327.785 -/**
 327.786 -The request body needed to be rewound but the client but it doesn't support 
 327.787 -@publishedAll
 327.788 -@released
 327.789 -*/
 327.790 -const TInt KErrHttpCantResetRequestBody				= KErrHttpProtocolHandlerBase;
 327.791 -/**
 327.792 -The Protocol handler is not initialised
 327.793 -@publishedAll
 327.794 -@released
 327.795 -*/
 327.796 -const TInt KErrHttpProtTransactionNotInitialised	= KErrHttpProtocolHandlerBase -1;
 327.797 -/**
 327.798 -Unable to establish a tunnel.
 327.799 -@publishedAll
 327.800 -@released
 327.801 -*/
 327.802 -const TInt KErrHttpCannotEstablishTunnel			= KErrHttpProtocolHandlerBase -2;
 327.803 -/**
 327.804 -Invalid URI
 327.805 -@publishedAll
 327.806 -@released
 327.807 -*/
 327.808 -const TInt KErrHttpInvalidUri						= KErrHttpProtocolHandlerBase -3;
 327.809 -/**
 327.810 -Protocol handler experienced a non-pipelining error
 327.811 -@publishedAll
 327.812 -@released
 327.813 -*/
 327.814 -const TInt KErrHttpNonPipeliningError				= KErrHttpProtocolHandlerBase -4;
 327.815 -/**
 327.816 -Protocol handler experienced a pipelining error
 327.817 -@publishedAll
 327.818 -@released
 327.819 -*/
 327.820 -const TInt KErrHttpPipeliningError					= KErrHttpProtocolHandlerBase -5;
 327.821 -
 327.822 -/**
 327.823 -The request has been not sent for the transaction and connection has been disconnected. 
 327.824 -This error will be propagated to the client only, if the HTTP:ENotifyOnDisconnect property 
 327.825 -is set with a value HTTP::EEnableDisconnectNotification
 327.826 -
 327.827 -@publishedAll
 327.828 -@released
 327.829 -*/
 327.830 -const TInt KErrHttpRequestNotSent 					= KErrHttpProtocolHandlerBase -6;
 327.831 -
 327.832 -/**
 327.833 -The response has been not received for the transaction and connection has been disconnected. 
 327.834 -This error will be propagated to the client only, if the HTTP:ENotifyOnDisconnect property is 
 327.835 -set with a value HTTP::EEnableDisconnectNotification
 327.836 -
 327.837 -@publishedAll
 327.838 -@released
 327.839 -*/
 327.840 -const TInt KErrHttpResponseNotReceived				= KErrHttpProtocolHandlerBase -7;
 327.841 -
 327.842 -/**
 327.843 -Partial response has been received and connection has been disconnected. This error will be 
 327.844 -propagated to the client only, if the HTTP:ENotifyOnDisconnect property is set with a value
 327.845 -HTTP::EEnableDisconnectNotification
 327.846 -
 327.847 -@publishedAll
 327.848 -@released
 327.849 -*/
 327.850 -const TInt KErrHttpPartialResponseReceived			= KErrHttpProtocolHandlerBase -8;
 327.851 -
 327.852 -/**
 327.853 -ClientApplication wants to fail the transaction that was in process by the HTTPMessageParser
 327.854 -@publishedAll
 327.855 -@released
 327.856 -*/
 327.857 -const TInt KErrHttpOptimiserFailsTrans				= KErrHttpProtocolHandlerBase -9;
 327.858 -
 327.859 -// end of error codes - maximum error value is -7399 - must not be exceeded!
 327.860 -// Inline methods from HTTPStatus
 327.861 -
 327.862 -inline TBool HTTPStatus::IsInformational(TInt aStatus)
 327.863 -	{ 
 327.864 -	return ((aStatus >= HTTPStatus::EContinue) && (aStatus < HTTPStatus::EOk));
 327.865 -	}
 327.866 -inline TBool HTTPStatus::IsSuccessful(TInt aStatus)
 327.867 -	{ 
 327.868 -	return ((aStatus >= HTTPStatus::EOk) && (aStatus < HTTPStatus::EMultipleChoices));
 327.869 -	}
 327.870 -inline TBool HTTPStatus::IsRedirection(TInt aStatus)
 327.871 -	{
 327.872 -	return ((aStatus >= HTTPStatus::EMultipleChoices) && (aStatus < HTTPStatus::EBadRequest));
 327.873 -	}
 327.874 -inline TBool HTTPStatus::IsClientError(TInt aStatus)
 327.875 -	{
 327.876 -	return ((aStatus >= HTTPStatus::EBadRequest) && (aStatus < HTTPStatus::EInternalServerError));
 327.877 -	}
 327.878 -inline TBool HTTPStatus::IsServerError(TInt aStatus)
 327.879 -	{
 327.880 -	return (aStatus >= HTTPStatus::EInternalServerError);
 327.881 -	}
 327.882 -
 327.883 -
 327.884 -
 327.885 -#endif // __HTTPERR_H__
   328.1 --- a/epoc32/include/httpstd.h	Tue Mar 16 16:12:26 2010 +0000
   328.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   328.3 @@ -1,96 +0,0 @@
   328.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   328.5 -// All rights reserved.
   328.6 -// This component and the accompanying materials are made available
   328.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   328.8 -// which accompanies this distribution, and is available
   328.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  328.10 -//
  328.11 -// Initial Contributors:
  328.12 -// Nokia Corporation - initial contribution.
  328.13 -//
  328.14 -// Contributors:
  328.15 -//
  328.16 -// Description:
  328.17 -// Purpose:  This file sets the values for HTTP's return/error codes and
  328.18 -// panic codes.
  328.19 -// 
  328.20 -//
  328.21 -
  328.22 -#if !defined(__HTTPSTD_H__)
  328.23 -#define __HTTPSTD_H__
  328.24 -
  328.25 -// System includes
  328.26 -//
  328.27 -#if !defined(__E32STD_H__)
  328.28 -#include <e32std.h>
  328.29 -#endif
  328.30 -#if !defined(__WAPENGSTD_H__)
  328.31 -#include <wapengstd.h>
  328.32 -#endif
  328.33 -
  328.34 -enum
  328.35 -/**
  328.36 -Base values of code ranges
  328.37 -@publishedAll
  328.38 -@deprecated
  328.39 -*/{
  328.40 -	EHttpRetCodeBase     = -20000,
  328.41 -	EHttpPanicCodeBase   = EHttpRetCodeBase - 200
  328.42 -	};
  328.43 -
  328.44 -typedef enum 
  328.45 -/**
  328.46 -Return/leave codes for HTTPUTIL and HTTP plugins
  328.47 -@publishedAll
  328.48 -@deprecated
  328.49 -*/
  328.50 -	{
  328.51 -	// Informational (+ve) status codes
  328.52 -	EHttp_401_Unauthorized		  = KHttpPluginStatusBase + 401,// occurs when HTTP authentication is used, username/password dialogs raised as a response. Need to consider how UI deals with authentication failures here.
  328.53 -	EHttpAuthenticationAborted	  = KHttpPluginStatusBase + 11,// The user cancelled the password box
  328.54 -	EHttpAuthenticationFailed	  = KHttpPluginStatusBase + 10,// The user's password was rejected by the origin server
  328.55 -	EHttpNoError				  = KErrNone,			  // No error
  328.56 -	// Error (-ve) status codes
  328.57 -	EHttpGeneralError			  = EHttpRetCodeBase,	  // Unspecified error condition
  328.58 -	EHttpCannotFindServer		  = EHttpRetCodeBase - 1, // URL specified a non-existent or inaccessible domain
  328.59 -	EHttpCannotFindPlugin		  = EHttpRetCodeBase - 2, // Plug-in server failed to create an HTTP plugin
  328.60 -	EHttpUnsupportedMethod		  = EHttpRetCodeBase - 3, // An HTTP method was specified that is not supported
  328.61 -	EHttpWapAPReadFailure		  = EHttpRetCodeBase - 4, // An error occurred when reading the WAP AP from CommsDB
  328.62 -	EHttpNetDialSetupFailed		  = EHttpRetCodeBase - 5, // Failed to configure Net Dial
  328.63 -	EHttpWtlsConfigFailed		  = EHttpRetCodeBase - 6, // Failed to configure the WTLS layer of the WAP Stack
  328.64 -	EHttpWtlsBadServerCert		  = EHttpRetCodeBase - 7, // WTLS rejected the certificate obtained from the WAP GW
  328.65 -	EHttpWtlsServerCertRejected	  = EHttpRetCodeBase - 8, // The user rejected the certificate from the WAP GW
  328.66 -	EHttpWtlsCipherRejected		  = EHttpRetCodeBase - 9, // The user rejected the cipher strength negotiated in WTLS
  328.67 -	EHttpGatewayCannotBeReached	  = EHttpRetCodeBase - 10,// A session could not be established with the WAP Gateway
  328.68 -	EHttpGatewayTransactionAbort  = EHttpRetCodeBase - 11,// A transaction was aborted by the gateway or the stack
  328.69 -	EHttpGatewaySessionDisconnect = EHttpRetCodeBase - 12,// The session was disconnected by the WAP Gateway
  328.70 -	EHttpCancellationAbort		  = EHttpRetCodeBase - 13,// Error code for leave when cancellation has occured during RunL()
  328.71 -	EHttpReceivingErrorDeck		  = EHttpRetCodeBase - 14 // Could not find document, so receiving an error deck
  328.72 -	} THttpReturnCode;
  328.73 -
  328.74 -// Note that HTTP Status codes series 40x and 50x are error conditions. They
  328.75 -// will be added to the EHttpRetCodeBase to send to the HTTP Data Provider
  328.76 -// observer. e.g. HTTP/404 will become EHttpRetCodeBase-404 = -20404.  The
  328.77 -// exception to this rule is HTTP/401, which gets fully handled in HTTP and
  328.78 -// so is treated above as an informational status message.
  328.79 -
  328.80 -typedef enum 
  328.81 -/**
  328.82 -Panic codes for HTTPUTIL and HTTP plugins
  328.83 -@publishedAll
  328.84 -@deprecated
  328.85 -*/
  328.86 -    {
  328.87 -	EHttpGeneralPanic				= EHttpPanicCodeBase,		// Unspecified panic condition
  328.88 -    EHttpDialInNotSupported			= EHttpPanicCodeBase - 1,	// The WAP Access Point specified a dial-in ISP!
  328.89 -	EHttpWapAccessPointInfoChanged	= EHttpPanicCodeBase - 2,	// The WAP AP info changed between initial read and
  328.90 -																// the subsequent NetDial override (debug only)
  328.91 -	EHttpCommDBContainsBadData		= EHttpPanicCodeBase - 3,	// Comms DB contains garbled/inconsistent WAP AP data
  328.92 -	EHttpConnectionLessNotSupported	= EHttpPanicCodeBase - 4,	// Comms DB specified a CL mode, which isn't available (yet)
  328.93 -	EHttpNoHandlerAvailable			= EHttpPanicCodeBase - 5,	// Very bad situation for HTTP Methods
  328.94 -	EHttpResourceFileLoadFailed		= EHttpPanicCodeBase - 6,	// Resource file missing or corrupt
  328.95 -	EHttpReservedForFutureExpansion	= EHttpPanicCodeBase - 7	// Feature not available - reserved for BC only
  328.96 -    } THttpPanicCode;
  328.97 -
  328.98 -
  328.99 -#endif // __HTTPSTD_H__
   329.1 --- a/epoc32/include/iapprefs.h	Tue Mar 16 16:12:26 2010 +0000
   329.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   329.3 @@ -1,132 +0,0 @@
   329.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   329.5 -// All rights reserved.
   329.6 -// This component and the accompanying materials are made available
   329.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   329.8 -// which accompanies this distribution, and is available
   329.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  329.10 -//
  329.11 -// Initial Contributors:
  329.12 -// Nokia Corporation - initial contribution.
  329.13 -//
  329.14 -// Contributors:
  329.15 -//
  329.16 -// Description:
  329.17 -//
  329.18 -
  329.19 -#ifndef IAPPrefs__
  329.20 -#define IAPPrefs__
  329.21 -
  329.22 - 
  329.23 -
  329.24 -
  329.25 -#include <e32base.h>
  329.26 -#include <msvapi.h>
  329.27 -#include <msvuids.h>
  329.28 -#include <cdbcols.h>
  329.29 -
  329.30 -// Note: Version 1 = EPOC6.1
  329.31 -//		 Version 2 = EPOC6.2 / Hurricane
  329.32 -const TInt KImIAPPreferencesVersion = 2;	// identify which version of this class has been stored
  329.33 -
  329.34 -// for builds which don't define it.
  329.35 -/*
  329.36 -enum TCommDbDialogPref
  329.37 -	{
  329.38 -	ECommDbDialogPrefUnknown =0,
  329.39 -	ECommDbDialogPrefPrompt,
  329.40 -	ECommDbDialogPrefWarn,
  329.41 -	ECommDbDialogPrefDoNotPrompt
  329.42 -	};
  329.43 -*/
  329.44 -
  329.45 -class TImIAPChoice
  329.46 -/** Sets the connection dialog preference to be used with a particular IAP used 
  329.47 -for an internet mail service.
  329.48 -
  329.49 -The connection control component (GenConn) allows various options for whether 
  329.50 -or not the user should be should be prompted with a dialog at connect time. 
  329.51 -For example, a connection using the first choice GPRS IAP might not show a 
  329.52 -dialog, but a second choice connection using GSM might bring up a warning. 
  329.53 -@publishedAll
  329.54 -@released
  329.55 -*/
  329.56 -	{
  329.57 -	public:
  329.58 -	/** The IAP identifier, as specified in the CommDb record for the IAP. */
  329.59 -	TUint32	iIAP;
  329.60 -	/** Preference for what type of dialog is shown before a connection is made using 
  329.61 -	the specified IAP. */
  329.62 -	TCommDbDialogPref iDialogPref;
  329.63 -	};
  329.64 -
  329.65 -class CImIAPPreferences : public CBase
  329.66 -/** Encapsulates preferences relating to IAPs for an email service.
  329.67 -
  329.68 -An IAP defines all of the variable factors that determine how an Internet 
  329.69 -connection is made. These variable factors can include the bearer (CDMA, GSM 
  329.70 -or GPRS), dial-in number. network login names and passwords. 
  329.71 -
  329.72 -The Comms Database is capable of storing details of several IAPs, which can 
  329.73 -then be used to initiate different types of connection. The database also 
  329.74 -stores the preference order of the IAPs: this defines which IAP should be 
  329.75 -used as the first choice, and also an optional second choice to be used if 
  329.76 -the first choice is not available.
  329.77 -
  329.78 -The CImIAPPreferences class associates a first choice, and optionally a second 
  329.79 -choice IAP to use with a particular email service. The preference object is 
  329.80 -stored in the service entry's message store.
  329.81 -
  329.82 -For SMTP, if no object has been stored in the service, then the SMTP client 
  329.83 -will attempt to use any default Internet settings in the Comms Database, or 
  329.84 -will use the existing Internet connection if one does already exist. Note 
  329.85 -that SMTP sessions will normally fail to send any email messages if the SMTP 
  329.86 -session is not created using an IAP which the SMTP server does not accept.
  329.87 -
  329.88 -Note that in Symbian OS v6.0 a single IAP was associated with an email service 
  329.89 -entry through the iMtmData1 field. 
  329.90 -@publishedAll
  329.91 -@released
  329.92 -*/
  329.93 -	{
  329.94 -	public:
  329.95 -		IMPORT_C static CImIAPPreferences* NewLC();
  329.96 -		IMPORT_C TInt Version() const;
  329.97 -		IMPORT_C TInt NumberOfIAPs() const;
  329.98 -		IMPORT_C TImIAPChoice IAPPreference(TInt aPreference) const;
  329.99 -		IMPORT_C void AddIAPL(TImIAPChoice aIap, TInt aIndex=0);
 329.100 -		IMPORT_C void RemoveIAPL(TInt aPreferenceNumber);
 329.101 -		IMPORT_C TInt FindIAPL(TUint32 aIAP, TInt &aLocation) const;
 329.102 -		IMPORT_C void ReplaceIAPL(TInt aPreferenceNumber,TImIAPChoice aIap);
 329.103 -		IMPORT_C ~CImIAPPreferences();
 329.104 -		IMPORT_C TBool SNAPDefined() const;
 329.105 -		IMPORT_C TUint32 SNAPPreference() const;
 329.106 -		IMPORT_C void SetSNAPL(TUint32 aSnap);
 329.107 -		IMPORT_C void RemoveSNAP();
 329.108 -		
 329.109 -		void Reset();
 329.110 -		
 329.111 -		// class constants
 329.112 -		/**
 329.113 -		@deprecated 
 329.114 -		*/
 329.115 -		enum 
 329.116 -			{
 329.117 -			KSanityCheckOldWins = 0xEFBEADDE,
 329.118 -			KSanityCheck = 0xDEADBEEF
 329.119 -			};
 329.120 -		/** ID of the stream used to store IAP preference information in a 
 329.121 -		message store. */
 329.122 -		const static TUid KUidMsgFileInternetAccessPreferences;
 329.123 -	private:
 329.124 -		CArrayFixFlat<TImIAPChoice>* iChoices;
 329.125 -		TInt iVersion;
 329.126 -		TUint32 iSnapId;
 329.127 -	private:
 329.128 -		CImIAPPreferences();
 329.129 -		CImIAPPreferences(CImIAPPreferences& aOther); // not implemented
 329.130 -		int operator=(CImIAPPreferences& aOther); // not implemented
 329.131 -		void ConstructL();
 329.132 -		void Panic(int err) const;
 329.133 -	};
 329.134 -
 329.135 -#endif
   330.1 --- a/epoc32/include/icl/imageprocessor.h	Tue Mar 16 16:12:26 2010 +0000
   330.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   330.3 @@ -1,526 +0,0 @@
   330.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   330.5 -// All rights reserved.
   330.6 -// This component and the accompanying materials are made available
   330.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   330.8 -// which accompanies this distribution, and is available
   330.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  330.10 -//
  330.11 -// Initial Contributors:
  330.12 -// Nokia Corporation - initial contribution.
  330.13 -//
  330.14 -// Contributors:
  330.15 -//
  330.16 -// Description:
  330.17 -//
  330.18 -
  330.19 -#ifndef ___IMAGEPROCESSOR_H__
  330.20 -#define ___IMAGEPROCESSOR_H__
  330.21 -
  330.22 -#include <gdi.h>
  330.23 -#include <fbs.h>
  330.24 -
  330.25 -/**
  330.26 -@internalTechnology
  330.27 -*/
  330.28 -enum TImageBitmapUtilPanic
  330.29 -	{
  330.30 -	ECorrupt
  330.31 -	};
  330.32 -
  330.33 -/**
  330.34 -@publishedAll
  330.35 -@released
  330.36 -
  330.37 -Interface to colour conversion classes for various display modes.
  330.38 -Manages the mapping between RGB/Greyscale values and the index
  330.39 -into the color palette for the given display mode.
  330.40 -*/
  330.41 -class TColorConvertor
  330.42 -	{
  330.43 -public:
  330.44 -	IMPORT_C static	TColorConvertor* NewL(TDisplayMode aDisplayMode);
  330.45 -
  330.46 -	/**
  330.47 -	Returns the colour index corresponding to the supplied RGB value.
  330.48 -	Operates in the context of the current display mode.
  330.49 -
  330.50 -	This is a virtual function that each derived class must implement.
  330.51 -
  330.52 -	@param  aColor
  330.53 -	        The colour in RGB format.
  330.54 -	
  330.55 -	@return The colour index.
  330.56 -	*/
  330.57 -	virtual TInt ColorIndex(TRgb aColor) const = 0;
  330.58 -
  330.59 -	/**
  330.60 -	Returns the RGB value corresponding to the supplied colour index.
  330.61 -	Operates in the context of the current display mode.
  330.62 -
  330.63 -	This is a virtual function that each derived class must implement.
  330.64 -
  330.65 -	@param  aColorIndex
  330.66 -	        The colour in RGB format.
  330.67 -
  330.68 -	@return The RGB value.
  330.69 -	*/
  330.70 -	virtual TRgb Color(TInt aColorIndex) const = 0;
  330.71 -
  330.72 -	/**
  330.73 -	Gets an array of colour indices from a corresponding array of RGB values.
  330.74 -	Operates in the context of the current display mode.
  330.75 -
  330.76 -	This is a virtual function that each derived class must implement.
  330.77 -
  330.78 -	@param  aIndexBuffer
  330.79 -	        A pointer to the first element in destination array.
  330.80 -	@param  aColorBuffer
  330.81 -	        A pointer to the first element in the source array.
  330.82 -	@param  aCount
  330.83 -	        The number of elements to get.
  330.84 -	*/
  330.85 -	virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const = 0;
  330.86 -
  330.87 -	inline static TInt RgbToMonochrome(TRgb aRgb);
  330.88 -	};
  330.89 -
  330.90 -
  330.91 -/**
  330.92 -@publishedAll
  330.93 -@released
  330.94 -
  330.95 -Bitmap utility class.
  330.96 -*/
  330.97 -class TImageBitmapUtil
  330.98 -	{
  330.99 -public:
 330.100 -	IMPORT_C TImageBitmapUtil();
 330.101 -	IMPORT_C void Begin();
 330.102 -	IMPORT_C TBool Begin(const TPoint& aPosition);
 330.103 -	IMPORT_C void End();
 330.104 -	IMPORT_C void SetBitmapL(CFbsBitmap* aBitmap);
 330.105 -	IMPORT_C void SetPixel(TUint32 aPixelIndex);
 330.106 -	IMPORT_C void SetPixels(TUint32* aPixelIndex,TInt aNumberOfPixels);
 330.107 -	IMPORT_C TBool SetPos(const TPoint& aPosition);
 330.108 -	
 330.109 -private:
 330.110 -	union TDataPointer
 330.111 -		{
 330.112 -		TUint32* iWordPos;
 330.113 -		TUint8* iBytePos;
 330.114 -		};
 330.115 -private:
 330.116 -	CFbsBitmap* iBitmap;
 330.117 -	TSize iSize;
 330.118 -	TPoint iPosition;
 330.119 -	TDataPointer iData;
 330.120 -	TDataPointer iBase;
 330.121 -	TInt iBpp;
 330.122 -	TInt iBppShift;
 330.123 -	TInt iPixelShift;
 330.124 -	TInt iPixelsPerWord;
 330.125 -	TInt iBitShift;
 330.126 -	TInt iScanlineWordLength;
 330.127 -	TUint32 iMask;
 330.128 -	TBool iWordAccess;
 330.129 -	};
 330.130 -
 330.131 -
 330.132 -class CImageProcessor;
 330.133 -class CImageProcessorExtension;
 330.134 -
 330.135 -/**
 330.136 -@publishedAll
 330.137 -@released
 330.138 -
 330.139 -Utility class providing static factory functions for creating instances of
 330.140 -CImageProcessor derived classes.
 330.141 -*/
 330.142 -class ImageProcessorUtility
 330.143 -	{
 330.144 -public:
 330.145 -	IMPORT_C static TInt ReductionFactor(const TSize& aOriginalSize,const TSize& aReducedSize);
 330.146 -	IMPORT_C static CImageProcessor* NewImageProcessorL(const CFbsBitmap& aBitmap,const TSize& aImageSize,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
 330.147 -	IMPORT_C static CImageProcessor* NewImageProcessorL(const CFbsBitmap& aBitmap,TInt aReductionFactor,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
 330.148 -	IMPORT_C static CImageProcessorExtension* ImageProcessorUtility::NewImageProcessorExtensionL(const CFbsBitmap& aBitmap,TInt aReductionFactor,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
 330.149 -	
 330.150 -private:
 330.151 -	TBool static UseErrorDiffuser(const TDisplayMode& aBitmapDisplayMode, const TDisplayMode& aImageDisplayMode);
 330.152 -	TBool static IsMonochrome(const TDisplayMode& aBitmapDisplayMode, const TDisplayMode& aImageDisplayMode);
 330.153 -	};
 330.154 -
 330.155 -
 330.156 -
 330.157 -/**
 330.158 -@publishedAll
 330.159 -@released
 330.160 -
 330.161 -Interface to image processing classes.
 330.162 -*/
 330.163 -class CImageProcessor : public CBase
 330.164 -	{
 330.165 -public:
 330.166 -	// Setup
 330.167 -
 330.168 -	/**
 330.169 -	Initialises internal data structures prior to conversion.
 330.170 -
 330.171 -	This is a virtual function that each derived class must implement.
 330.172 -
 330.173 -	@param  aBitmap
 330.174 -	        A reference to a fully constucted bitmap with the required
 330.175 -	        display mode and size.
 330.176 -	@param  aImageRect
 330.177 -	        The region of the image to convert.
 330.178 -	*/
 330.179 -	virtual void PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect) = 0;
 330.180 -
 330.181 -	/**
 330.182 -	Initialises internal data structures prior to the manipulation of the specified pixel block.
 330.183 -
 330.184 -	This overloaded version allows specification of a block size
 330.185 -	for those formats which support blocked pixel data eg. JPEG
 330.186 -
 330.187 -	This is a virtual function that each derived class must implement.
 330.188 -
 330.189 -	@param  aBitmap
 330.190 -	        A reference to a fully constucted bitmap with the required
 330.191 -	        display mode and size.
 330.192 -	@param  aImageRect
 330.193 -	        The region of the image to convert.
 330.194 -	@param  aRgbBlockSize
 330.195 -	        The size of the block to use.
 330.196 -	*/
 330.197 -	virtual void PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize& aRgbBlockSize) = 0;
 330.198 -
 330.199 -	/**
 330.200 -	Sets the number of pixels by which to increment the current position in
 330.201 -	the Y-axis. This is used when rendering images supporting interlacing.
 330.202 -	eg GIF
 330.203 -
 330.204 -	This is a virtual function that each derived class must implement.
 330.205 -
 330.206 -	@param  aYInc
 330.207 -	        The number of pixels.
 330.208 -	*/
 330.209 -	virtual void SetYPosIncrement(TInt aYInc) = 0;
 330.210 -
 330.211 -	/**
 330.212 -	Sets the number times the current line should be repeated. The lines
 330.213 -	are repeated in the same direction as set by SetYPosIncrement(). This
 330.214 -	is used to fill blank lines when rendering interlaced images. eg GIF.
 330.215 -	@param aLineRepeat The number of times the current line should be repeated
 330.216 -	*/
 330.217 -	virtual void SetLineRepeat(TInt aLineRepeat) = 0;
 330.218 -
 330.219 -	/**
 330.220 -	Sets the pixel padding to the value specified by aNumberOfPixels.
 330.221 -
 330.222 -	This is a virtual function that each derived class must implement.
 330.223 -
 330.224 -	@param  aNumberOfPixels
 330.225 -	        The number of pixels to use for padding.
 330.226 -	*/
 330.227 -	virtual void SetPixelPadding(TInt aNumberOfPixels) = 0;
 330.228 -
 330.229 -	// Color pixel writing
 330.230 -
 330.231 -	/**
 330.232 -	Sets the pixel at the current position to aColor.
 330.233 -
 330.234 -	This is a virtual function that each derived class must implement.
 330.235 -	
 330.236 -	@post    
 330.237 -	The current position is updated.
 330.238 -
 330.239 -	@param  aColor
 330.240 -	        The RGB value to set the current pixel to.
 330.241 -
 330.242 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.243 -            otherwise EFalse.
 330.244 -    */
 330.245 -	virtual TBool SetPixel(TRgb aColor) = 0;
 330.246 -
 330.247 -	/**
 330.248 -	Sets aCount number of pixels to the value given by aColor, starting at
 330.249 -	the current position.
 330.250 -
 330.251 -	This is a virtual function that each derived class must implement.
 330.252 -
 330.253 -	@post    
 330.254 -	On success, the current position is updated.
 330.255 -
 330.256 -	@param  aColor
 330.257 -	        The RGB value to set the pixels to.
 330.258 -	@param  aCount
 330.259 -	        The number of pixels to set.
 330.260 -
 330.261 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.262 -	        otherwise EFalse.
 330.263 -	*/
 330.264 -	virtual TBool SetPixelRun(TRgb aColor,TInt aCount) = 0;
 330.265 -
 330.266 -	/**
 330.267 -	Updates the bitmap with colour information from the array of colour values.
 330.268 -
 330.269 -	Uses the array of colour values supplied by aColorBuffer, whose length
 330.270 -	is specified by aBufferLength, to update successive pixels with values in the
 330.271 -	buffer, starting at the current	position.
 330.272 -
 330.273 -	This is a virtual function that each derived class must implement.
 330.274 -	
 330.275 -	@post   
 330.276 -	The current position is updated.
 330.277 -
 330.278 -	@param  aColorBuffer
 330.279 -	        A pointer to the first element in the array.
 330.280 -	@param  aBufferLength
 330.281 -	        The number of elements in the array.
 330.282 -
 330.283 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.284 -	        otherwise EFalse.
 330.285 -	*/
 330.286 -	virtual TBool SetPixels(TRgb* aColorBuffer,TInt aBufferLength) = 0;
 330.287 -
 330.288 -    /**
 330.289 -    Sets the current pixel block using the data supplied in aColorBuffer.
 330.290 -
 330.291 -	Note:
 330.292 -	For use with image types that support blocking of pixels eg JPEG.
 330.293 -
 330.294 -	This is a virtual function that each derived class must implement.
 330.295 -
 330.296 -	@param  aColorBuffer
 330.297 -	        A pointer to a buffer representing a block of pixel color values.
 330.298 -
 330.299 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.300 -	        otherwise EFalse.
 330.301 -	*/
 330.302 -	virtual TBool SetPixelBlock(TRgb* aColorBuffer) = 0;
 330.303 -
 330.304 -	// Monochrome pixel writing
 330.305 -
 330.306 -	/**
 330.307 -	Sets the pixel at the current position to aGray256.
 330.308 -
 330.309 -	This is a virtual function that each derived class must implement.
 330.310 -
 330.311 -    @post   
 330.312 -	The current position is updated.
 330.313 -
 330.314 -	@param  aGray256
 330.315 -	        The greyscale value to set the current pixel to.
 330.316 -
 330.317 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.318 -	        otherwise EFalse.
 330.319 -	*/
 330.320 -	virtual TBool SetMonoPixel(TInt aGray256) = 0;
 330.321 -
 330.322 -	/**
 330.323 -	Sets the number of pixels specified by aCount to the value given by aGray256, starting at
 330.324 -	the current position.
 330.325 -
 330.326 -	This is a virtual function that each derived class must implement.
 330.327 -	
 330.328 -	@post   
 330.329 -	The current position is updated.
 330.330 -
 330.331 -	@param  aGray256
 330.332 -	        The greyscale value to set the pixels to.
 330.333 -	@param  aCount
 330.334 -	        The number of pixels to set.
 330.335 -
 330.336 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.337 -	        otherwise EFalse.
 330.338 -	*/
 330.339 -	virtual TBool SetMonoPixelRun(TInt aGray256,TInt aCount) = 0;
 330.340 -
 330.341 -	/**
 330.342 -	Updates the bitmap with greyscale information from the array of greyscale values.
 330.343 -
 330.344 -	The array of values supplied by aGray256Buffer, whose length
 330.345 -	is specified in aBufferLength, is used to update successive pixels with the
 330.346 -	greyscales values.
 330.347 -
 330.348 -	This is a virtual function that each derived class must implement.
 330.349 -
 330.350 -	@post
 330.351 -	The current position is updated.
 330.352 -
 330.353 -	@param  aGray256Buffer
 330.354 -	        A pointer to the first element in the array of greyscale values.
 330.355 -	@param  aBufferLength
 330.356 -	        The number of elements in the array.
 330.357 -
 330.358 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.359 -	        otherwise EFalse.
 330.360 -	*/
 330.361 -	virtual TBool SetMonoPixels(TUint32* aGray256Buffer,TInt aBufferLength) = 0;
 330.362 -
 330.363 -    /**
 330.364 -    Sets a specified number of pixels to the specified greyscale value.
 330.365 -
 330.366 -	For image types which support blocking of pixels eg JPEG, the current
 330.367 -	pixel block is set using the data supplied in aGray256Buffer.
 330.368 -
 330.369 -	This is a virtual function that each derived class must implement.
 330.370 -
 330.371 -	@param  aGray256Buffer
 330.372 -	        A pointer to a buffer representing a block of pixel color values.
 330.373 -
 330.374 -	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.375 -	        otherwise EFalse.
 330.376 -	*/
 330.377 -	virtual TBool SetMonoPixelBlock(TUint32* aGray256Buffer) = 0;
 330.378 -
 330.379 -	// Processor flow control
 330.380 -
 330.381 -	/**
 330.382 -	Sets the current position in the bitmap to aPosition.
 330.383 -
 330.384 -	This is a virtual function that each derived class must implement.
 330.385 -
 330.386 -	@param  aPosition
 330.387 -	        A reference to TPoint object defining the position to move to.
 330.388 -
 330.389 -	@return	A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.390 -	        otherwise EFalse.
 330.391 -	*/
 330.392 -	virtual TBool SetPos(const TPoint& aPosition) = 0;
 330.393 -
 330.394 -	/**
 330.395 -	Commits the changes made to the current bitmap by flushing the buffer.
 330.396 -
 330.397 -	This is a virtual function that each derived class must implement.
 330.398 -
 330.399 -	@post
 330.400 -	The current position is updated.
 330.401 -
 330.402 -	@return	A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 330.403 -	        otherwise EFalse.
 330.404 -    */
 330.405 -	virtual TBool FlushPixels() = 0;
 330.406 -	
 330.407 -private:
 330.408 -	// Future proofing
 330.409 -	IMPORT_C virtual void ReservedVirtual1();
 330.410 -	IMPORT_C virtual void ReservedVirtual2();
 330.411 -	IMPORT_C virtual void ReservedVirtual3();
 330.412 -	IMPORT_C virtual void ReservedVirtual4();
 330.413 -	};
 330.414 -
 330.415 -/**
 330.416 -@publishedAll
 330.417 -@released
 330.418 -
 330.419 -Flag used to determine the type of transformation which is the result of 
 330.420 -single or multiple transformation operations requested via calls to
 330.421 -COperationExtension::AddOperationL.
 330.422 -
 330.423 -8 unique orientations:
 330.424 -
 330.425 -@code
 330.426 -normal  90      180     270
 330.427 -00 10   01 00   11 01   10 11
 330.428 -01 11   11 10   10 00   00 01
 330.429 -
 330.430 -V flip  90      180     270
 330.431 -10 00   11 10   =Hflip  =Hflip+90
 330.432 -11 01   01 00
 330.433 -
 330.434 -H flip  90      180     270
 330.435 -01 11   00 01   =Vflip  =Vflip+90
 330.436 -00 10   10 11
 330.437 -@endcode
 330.438 -
 330.439 -@see COperationExtension::AddOperationL
 330.440 -*/
 330.441 -enum TTransformOptions
 330.442 -	{
 330.443 -	/** Normal Decode
 330.444 -	*/
 330.445 -	EDecodeNormal = 0x11011000,
 330.446 -
 330.447 -	/** Rotate 90 degrees.
 330.448 -	*/
 330.449 -	EDecodeRotate90	= 0x10110001,
 330.450 -
 330.451 -	/** Rotate 180 degrees.
 330.452 -	*/
 330.453 -	EDecodeRotate180 = 0x00100111,
 330.454 -
 330.455 -	/** Rotate 270 degrees.
 330.456 -	*/
 330.457 -	EDecodeRotate270 = 0x01001110,
 330.458 -	
 330.459 -	/** Horizontal flip.
 330.460 -	*/
 330.461 -	EDecodeHorizontalFlip = 0x10001101,
 330.462 -	
 330.463 -	/** Horizontal flip and rotate 90 degrees.
 330.464 -	*/
 330.465 -	EDecodeHorizontalFlipRotate90 = 0x11100100,
 330.466 -
 330.467 -	/** Vertical flip.
 330.468 -	*/
 330.469 -	EDecodeVerticalFlip	= 0x01110010,
 330.470 -
 330.471 -	/** Vertical flip and rotate 90 degrees.
 330.472 -	*/
 330.473 -	EDecodeVerticalFlipRotate90 = 0x00011011
 330.474 -	};
 330.475 -
 330.476 -
 330.477 -/**
 330.478 -@publishedAll
 330.479 -@released
 330.480 -
 330.481 -Class that provides support for Framework Extensions.
 330.482 -
 330.483 -@see CImageProcessor
 330.484 -@see CImageReadCodec
 330.485 -@see CImageDecoderPlugin
 330.486 -*/
 330.487 -class CImageProcessorExtension : public CImageProcessor
 330.488 -	{
 330.489 -public:
 330.490 -	IMPORT_C virtual ~CImageProcessorExtension();
 330.491 -	IMPORT_C void SetClippingRect(const TRect& aRect);
 330.492 -	IMPORT_C void SetScaling(TInt aScalingCoeff);
 330.493 -	IMPORT_C void SetScaling(const TSize& aDesiredSize);
 330.494 -	IMPORT_C void SetOperation(TTransformOptions aOperation);
 330.495 -	IMPORT_C void SetInitialScanlineSkipPadding(TInt aNumberOfScanlines);
 330.496 -
 330.497 -protected:
 330.498 -	IMPORT_C CImageProcessorExtension();
 330.499 -
 330.500 -protected:
 330.501 -	/** Clipping rectangle */
 330.502 -	TRect iClippingRect;
 330.503 -	/** Scaling coefficient */
 330.504 -	TInt iScalingCoeff;
 330.505 -	/** Desired size after scaling */
 330.506 -	TSize iDesiredSize;
 330.507 -	/** Operations to apply to image */
 330.508 -	TTransformOptions iOperation;
 330.509 -	/** Position in destination at which start rendering */
 330.510 -	TPoint iStartPosition;
 330.511 -	/** Position in destination at which rendering is complete */
 330.512 -	TPoint iEndPosition;
 330.513 -	/** An initial one-off number of scanlines to be skipped */
 330.514 -	TInt iNumberOfScanlinesToSkip;
 330.515 -	};
 330.516 -   
 330.517 -inline TInt TColorConvertor::RgbToMonochrome(TRgb aRgb)
 330.518 -	{
 330.519 -	TInt value = aRgb.Internal();
 330.520 -	TInt r = value&0xFF0000;
 330.521 -	TInt g = value&0xFF00;
 330.522 -	value  = (value&0xFF)<<16;	// blue<<16
 330.523 -	value += r<<1;     		// + (red<<16)*2
 330.524 -	value += g<<(16+2-8);	// + (green<<16)*4
 330.525 -	value += g<<(16+0-8);	// + (green<<16)
 330.526 -	return value>>(16+3);	// total/8
 330.527 -	}
 330.528 -
 330.529 -#endif //___IMAGEPROCESSOR_H__
   331.1 --- a/epoc32/include/iclanimationdataprovider.h	Tue Mar 16 16:12:26 2010 +0000
   331.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   331.3 @@ -1,69 +0,0 @@
   331.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   331.5 -// All rights reserved.
   331.6 -// This component and the accompanying materials are made available
   331.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   331.8 -// which accompanies this distribution, and is available
   331.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  331.10 -//
  331.11 -// Initial Contributors:
  331.12 -// Nokia Corporation - initial contribution.
  331.13 -//
  331.14 -// Contributors:
  331.15 -//
  331.16 -// Description:
  331.17 -//
  331.18 -
  331.19 -#ifndef __ICLANIMATIONDATAPROVIDER_H__
  331.20 -#define __ICLANIMATIONDATAPROVIDER_H__
  331.21 -
  331.22 -#include <animationdataprovider.h>
  331.23 -
  331.24 -#include <e32std.h>
  331.25 -#include <animationframe.h>
  331.26 -#include <animationmixins.h>
  331.27 -
  331.28 -_LIT8(KBitmapAnimationDataType, "bitmap");
  331.29 -
  331.30 -class CICLAnimationDataLoader;
  331.31 -
  331.32 -/**
  331.33 -Data provider for frame based animations.
  331.34 -
  331.35 -This data provider expects to be provided with a file which can be interpreted
  331.36 -as an animation using the Image Conversion Library (ICL).  An example would be
  331.37 -an animated GIF.  The default data type for this provider is "bitmap".
  331.38 -
  331.39 -@see CBitmapAnimator
  331.40 -@publishedAll
  331.41 -@released
  331.42 -*/
  331.43 -class CICLAnimationDataProvider : public CAnimationDataProvider, public MICLAnimationDataLoaderObserver
  331.44 -	{
  331.45 -public:
  331.46 -    IMPORT_C CICLAnimationDataProvider();
  331.47 -    IMPORT_C ~CICLAnimationDataProvider();
  331.48 -    IMPORT_C void SetFileL(RFs & aFs, const TFileName& aFileName);
  331.49 -    IMPORT_C TPtrC8 DataType();
  331.50 -    virtual void StartL();
  331.51 -protected:
  331.52 -	IMPORT_C virtual void CICLAnimationDataProvider_Reserved1();
  331.53 -	IMPORT_C virtual void CICLAnimationDataProvider_Reserved2();
  331.54 -	// From CAnimationDataProvider
  331.55 -	IMPORT_C virtual void CAnimationDataProvider_Reserved1();
  331.56 -	IMPORT_C virtual void CAnimationDataProvider_Reserved2();
  331.57 -private:
  331.58 -	TInt iCICLAnimationDataProvider_Reserved;
  331.59 -private:
  331.60 -    CAnimationFrame::THandles CurrentFrame() const;
  331.61 -    void DecodeImageL();
  331.62 -    void DataDeliveryL();
  331.63 -    void Reset();
  331.64 -    // From MICLAnimationDataLoaderObserver
  331.65 -    virtual void DataLoaderEventL(TDataLoaderEvent aEvent, TInt aError);
  331.66 -private: 
  331.67 -	CICLAnimationDataLoader* iDataLoader;
  331.68 -	CAnimationFrame* iCurrentFrame;
  331.69 -	TInt iFlags;
  331.70 -	};
  331.71 -
  331.72 -#endif //__ICLANIMATIONDATAPROVIDER_H__
   332.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   332.2 +++ b/epoc32/include/imageprocessor/imageprocessor.h	Wed Mar 31 12:27:01 2010 +0100
   332.3 @@ -0,0 +1,526 @@
   332.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   332.5 +// All rights reserved.
   332.6 +// This component and the accompanying materials are made available
   332.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   332.8 +// which accompanies this distribution, and is available
   332.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  332.10 +//
  332.11 +// Initial Contributors:
  332.12 +// Nokia Corporation - initial contribution.
  332.13 +//
  332.14 +// Contributors:
  332.15 +//
  332.16 +// Description:
  332.17 +//
  332.18 +
  332.19 +#ifndef ___IMAGEPROCESSOR_H__
  332.20 +#define ___IMAGEPROCESSOR_H__
  332.21 +
  332.22 +#include <gdi.h>
  332.23 +#include <fbs.h>
  332.24 +
  332.25 +/**
  332.26 +@internalTechnology
  332.27 +*/
  332.28 +enum TImageBitmapUtilPanic
  332.29 +	{
  332.30 +	ECorrupt
  332.31 +	};
  332.32 +
  332.33 +/**
  332.34 +@publishedAll
  332.35 +@released
  332.36 +
  332.37 +Interface to colour conversion classes for various display modes.
  332.38 +Manages the mapping between RGB/Greyscale values and the index
  332.39 +into the color palette for the given display mode.
  332.40 +*/
  332.41 +class TColorConvertor
  332.42 +	{
  332.43 +public:
  332.44 +	IMPORT_C static	TColorConvertor* NewL(TDisplayMode aDisplayMode);
  332.45 +
  332.46 +	/**
  332.47 +	Returns the colour index corresponding to the supplied RGB value.
  332.48 +	Operates in the context of the current display mode.
  332.49 +
  332.50 +	This is a virtual function that each derived class must implement.
  332.51 +
  332.52 +	@param  aColor
  332.53 +	        The colour in RGB format.
  332.54 +	
  332.55 +	@return The colour index.
  332.56 +	*/
  332.57 +	virtual TInt ColorIndex(TRgb aColor) const = 0;
  332.58 +
  332.59 +	/**
  332.60 +	Returns the RGB value corresponding to the supplied colour index.
  332.61 +	Operates in the context of the current display mode.
  332.62 +
  332.63 +	This is a virtual function that each derived class must implement.
  332.64 +
  332.65 +	@param  aColorIndex
  332.66 +	        The colour in RGB format.
  332.67 +
  332.68 +	@return The RGB value.
  332.69 +	*/
  332.70 +	virtual TRgb Color(TInt aColorIndex) const = 0;
  332.71 +
  332.72 +	/**
  332.73 +	Gets an array of colour indices from a corresponding array of RGB values.
  332.74 +	Operates in the context of the current display mode.
  332.75 +
  332.76 +	This is a virtual function that each derived class must implement.
  332.77 +
  332.78 +	@param  aIndexBuffer
  332.79 +	        A pointer to the first element in destination array.
  332.80 +	@param  aColorBuffer
  332.81 +	        A pointer to the first element in the source array.
  332.82 +	@param  aCount
  332.83 +	        The number of elements to get.
  332.84 +	*/
  332.85 +	virtual void ColorToIndex(TInt* aIndexBuffer,TRgb* aColorBuffer,TInt aCount) const = 0;
  332.86 +
  332.87 +	inline static TInt RgbToMonochrome(TRgb aRgb);
  332.88 +	};
  332.89 +
  332.90 +
  332.91 +/**
  332.92 +@publishedAll
  332.93 +@released
  332.94 +
  332.95 +Bitmap utility class.
  332.96 +*/
  332.97 +class TImageBitmapUtil
  332.98 +	{
  332.99 +public:
 332.100 +	IMPORT_C TImageBitmapUtil();
 332.101 +	IMPORT_C void Begin();
 332.102 +	IMPORT_C TBool Begin(const TPoint& aPosition);
 332.103 +	IMPORT_C void End();
 332.104 +	IMPORT_C void SetBitmapL(CFbsBitmap* aBitmap);
 332.105 +	IMPORT_C void SetPixel(TUint32 aPixelIndex);
 332.106 +	IMPORT_C void SetPixels(TUint32* aPixelIndex,TInt aNumberOfPixels);
 332.107 +	IMPORT_C TBool SetPos(const TPoint& aPosition);
 332.108 +	
 332.109 +private:
 332.110 +	union TDataPointer
 332.111 +		{
 332.112 +		TUint32* iWordPos;
 332.113 +		TUint8* iBytePos;
 332.114 +		};
 332.115 +private:
 332.116 +	CFbsBitmap* iBitmap;
 332.117 +	TSize iSize;
 332.118 +	TPoint iPosition;
 332.119 +	TDataPointer iData;
 332.120 +	TDataPointer iBase;
 332.121 +	TInt iBpp;
 332.122 +	TInt iBppShift;
 332.123 +	TInt iPixelShift;
 332.124 +	TInt iPixelsPerWord;
 332.125 +	TInt iBitShift;
 332.126 +	TInt iScanlineWordLength;
 332.127 +	TUint32 iMask;
 332.128 +	TBool iWordAccess;
 332.129 +	};
 332.130 +
 332.131 +
 332.132 +class CImageProcessor;
 332.133 +class CImageProcessorExtension;
 332.134 +
 332.135 +/**
 332.136 +@publishedAll
 332.137 +@released
 332.138 +
 332.139 +Utility class providing static factory functions for creating instances of
 332.140 +CImageProcessor derived classes.
 332.141 +*/
 332.142 +class ImageProcessorUtility
 332.143 +	{
 332.144 +public:
 332.145 +	IMPORT_C static TInt ReductionFactor(const TSize& aOriginalSize,const TSize& aReducedSize);
 332.146 +	IMPORT_C static CImageProcessor* NewImageProcessorL(const CFbsBitmap& aBitmap,const TSize& aImageSize,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
 332.147 +	IMPORT_C static CImageProcessor* NewImageProcessorL(const CFbsBitmap& aBitmap,TInt aReductionFactor,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
 332.148 +	IMPORT_C static CImageProcessorExtension* ImageProcessorUtility::NewImageProcessorExtensionL(const CFbsBitmap& aBitmap,TInt aReductionFactor,TDisplayMode aImageDisplayMode, TBool aDisableErrorDiffusion);
 332.149 +	
 332.150 +private:
 332.151 +	TBool static UseErrorDiffuser(const TDisplayMode& aBitmapDisplayMode, const TDisplayMode& aImageDisplayMode);
 332.152 +	TBool static IsMonochrome(const TDisplayMode& aBitmapDisplayMode, const TDisplayMode& aImageDisplayMode);
 332.153 +	};
 332.154 +
 332.155 +
 332.156 +
 332.157 +/**
 332.158 +@publishedAll
 332.159 +@released
 332.160 +
 332.161 +Interface to image processing classes.
 332.162 +*/
 332.163 +class CImageProcessor : public CBase
 332.164 +	{
 332.165 +public:
 332.166 +	// Setup
 332.167 +
 332.168 +	/**
 332.169 +	Initialises internal data structures prior to conversion.
 332.170 +
 332.171 +	This is a virtual function that each derived class must implement.
 332.172 +
 332.173 +	@param  aBitmap
 332.174 +	        A reference to a fully constucted bitmap with the required
 332.175 +	        display mode and size.
 332.176 +	@param  aImageRect
 332.177 +	        The region of the image to convert.
 332.178 +	*/
 332.179 +	virtual void PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect) = 0;
 332.180 +
 332.181 +	/**
 332.182 +	Initialises internal data structures prior to the manipulation of the specified pixel block.
 332.183 +
 332.184 +	This overloaded version allows specification of a block size
 332.185 +	for those formats which support blocked pixel data eg. JPEG
 332.186 +
 332.187 +	This is a virtual function that each derived class must implement.
 332.188 +
 332.189 +	@param  aBitmap
 332.190 +	        A reference to a fully constucted bitmap with the required
 332.191 +	        display mode and size.
 332.192 +	@param  aImageRect
 332.193 +	        The region of the image to convert.
 332.194 +	@param  aRgbBlockSize
 332.195 +	        The size of the block to use.
 332.196 +	*/
 332.197 +	virtual void PrepareL(CFbsBitmap& aBitmap,const TRect& aImageRect,const TSize& aRgbBlockSize) = 0;
 332.198 +
 332.199 +	/**
 332.200 +	Sets the number of pixels by which to increment the current position in
 332.201 +	the Y-axis. This is used when rendering images supporting interlacing.
 332.202 +	eg GIF
 332.203 +
 332.204 +	This is a virtual function that each derived class must implement.
 332.205 +
 332.206 +	@param  aYInc
 332.207 +	        The number of pixels.
 332.208 +	*/
 332.209 +	virtual void SetYPosIncrement(TInt aYInc) = 0;
 332.210 +
 332.211 +	/**
 332.212 +	Sets the number times the current line should be repeated. The lines
 332.213 +	are repeated in the same direction as set by SetYPosIncrement(). This
 332.214 +	is used to fill blank lines when rendering interlaced images. eg GIF.
 332.215 +	@param aLineRepeat The number of times the current line should be repeated
 332.216 +	*/
 332.217 +	virtual void SetLineRepeat(TInt aLineRepeat) = 0;
 332.218 +
 332.219 +	/**
 332.220 +	Sets the pixel padding to the value specified by aNumberOfPixels.
 332.221 +
 332.222 +	This is a virtual function that each derived class must implement.
 332.223 +
 332.224 +	@param  aNumberOfPixels
 332.225 +	        The number of pixels to use for padding.
 332.226 +	*/
 332.227 +	virtual void SetPixelPadding(TInt aNumberOfPixels) = 0;
 332.228 +
 332.229 +	// Color pixel writing
 332.230 +
 332.231 +	/**
 332.232 +	Sets the pixel at the current position to aColor.
 332.233 +
 332.234 +	This is a virtual function that each derived class must implement.
 332.235 +	
 332.236 +	@post    
 332.237 +	The current position is updated.
 332.238 +
 332.239 +	@param  aColor
 332.240 +	        The RGB value to set the current pixel to.
 332.241 +
 332.242 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.243 +            otherwise EFalse.
 332.244 +    */
 332.245 +	virtual TBool SetPixel(TRgb aColor) = 0;
 332.246 +
 332.247 +	/**
 332.248 +	Sets aCount number of pixels to the value given by aColor, starting at
 332.249 +	the current position.
 332.250 +
 332.251 +	This is a virtual function that each derived class must implement.
 332.252 +
 332.253 +	@post    
 332.254 +	On success, the current position is updated.
 332.255 +
 332.256 +	@param  aColor
 332.257 +	        The RGB value to set the pixels to.
 332.258 +	@param  aCount
 332.259 +	        The number of pixels to set.
 332.260 +
 332.261 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.262 +	        otherwise EFalse.
 332.263 +	*/
 332.264 +	virtual TBool SetPixelRun(TRgb aColor,TInt aCount) = 0;
 332.265 +
 332.266 +	/**
 332.267 +	Updates the bitmap with colour information from the array of colour values.
 332.268 +
 332.269 +	Uses the array of colour values supplied by aColorBuffer, whose length
 332.270 +	is specified by aBufferLength, to update successive pixels with values in the
 332.271 +	buffer, starting at the current	position.
 332.272 +
 332.273 +	This is a virtual function that each derived class must implement.
 332.274 +	
 332.275 +	@post   
 332.276 +	The current position is updated.
 332.277 +
 332.278 +	@param  aColorBuffer
 332.279 +	        A pointer to the first element in the array.
 332.280 +	@param  aBufferLength
 332.281 +	        The number of elements in the array.
 332.282 +
 332.283 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.284 +	        otherwise EFalse.
 332.285 +	*/
 332.286 +	virtual TBool SetPixels(TRgb* aColorBuffer,TInt aBufferLength) = 0;
 332.287 +
 332.288 +    /**
 332.289 +    Sets the current pixel block using the data supplied in aColorBuffer.
 332.290 +
 332.291 +	Note:
 332.292 +	For use with image types that support blocking of pixels eg JPEG.
 332.293 +
 332.294 +	This is a virtual function that each derived class must implement.
 332.295 +
 332.296 +	@param  aColorBuffer
 332.297 +	        A pointer to a buffer representing a block of pixel color values.
 332.298 +
 332.299 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.300 +	        otherwise EFalse.
 332.301 +	*/
 332.302 +	virtual TBool SetPixelBlock(TRgb* aColorBuffer) = 0;
 332.303 +
 332.304 +	// Monochrome pixel writing
 332.305 +
 332.306 +	/**
 332.307 +	Sets the pixel at the current position to aGray256.
 332.308 +
 332.309 +	This is a virtual function that each derived class must implement.
 332.310 +
 332.311 +    @post   
 332.312 +	The current position is updated.
 332.313 +
 332.314 +	@param  aGray256
 332.315 +	        The greyscale value to set the current pixel to.
 332.316 +
 332.317 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.318 +	        otherwise EFalse.
 332.319 +	*/
 332.320 +	virtual TBool SetMonoPixel(TInt aGray256) = 0;
 332.321 +
 332.322 +	/**
 332.323 +	Sets the number of pixels specified by aCount to the value given by aGray256, starting at
 332.324 +	the current position.
 332.325 +
 332.326 +	This is a virtual function that each derived class must implement.
 332.327 +	
 332.328 +	@post   
 332.329 +	The current position is updated.
 332.330 +
 332.331 +	@param  aGray256
 332.332 +	        The greyscale value to set the pixels to.
 332.333 +	@param  aCount
 332.334 +	        The number of pixels to set.
 332.335 +
 332.336 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.337 +	        otherwise EFalse.
 332.338 +	*/
 332.339 +	virtual TBool SetMonoPixelRun(TInt aGray256,TInt aCount) = 0;
 332.340 +
 332.341 +	/**
 332.342 +	Updates the bitmap with greyscale information from the array of greyscale values.
 332.343 +
 332.344 +	The array of values supplied by aGray256Buffer, whose length
 332.345 +	is specified in aBufferLength, is used to update successive pixels with the
 332.346 +	greyscales values.
 332.347 +
 332.348 +	This is a virtual function that each derived class must implement.
 332.349 +
 332.350 +	@post
 332.351 +	The current position is updated.
 332.352 +
 332.353 +	@param  aGray256Buffer
 332.354 +	        A pointer to the first element in the array of greyscale values.
 332.355 +	@param  aBufferLength
 332.356 +	        The number of elements in the array.
 332.357 +
 332.358 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.359 +	        otherwise EFalse.
 332.360 +	*/
 332.361 +	virtual TBool SetMonoPixels(TUint32* aGray256Buffer,TInt aBufferLength) = 0;
 332.362 +
 332.363 +    /**
 332.364 +    Sets a specified number of pixels to the specified greyscale value.
 332.365 +
 332.366 +	For image types which support blocking of pixels eg JPEG, the current
 332.367 +	pixel block is set using the data supplied in aGray256Buffer.
 332.368 +
 332.369 +	This is a virtual function that each derived class must implement.
 332.370 +
 332.371 +	@param  aGray256Buffer
 332.372 +	        A pointer to a buffer representing a block of pixel color values.
 332.373 +
 332.374 +	@return A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.375 +	        otherwise EFalse.
 332.376 +	*/
 332.377 +	virtual TBool SetMonoPixelBlock(TUint32* aGray256Buffer) = 0;
 332.378 +
 332.379 +	// Processor flow control
 332.380 +
 332.381 +	/**
 332.382 +	Sets the current position in the bitmap to aPosition.
 332.383 +
 332.384 +	This is a virtual function that each derived class must implement.
 332.385 +
 332.386 +	@param  aPosition
 332.387 +	        A reference to TPoint object defining the position to move to.
 332.388 +
 332.389 +	@return	A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.390 +	        otherwise EFalse.
 332.391 +	*/
 332.392 +	virtual TBool SetPos(const TPoint& aPosition) = 0;
 332.393 +
 332.394 +	/**
 332.395 +	Commits the changes made to the current bitmap by flushing the buffer.
 332.396 +
 332.397 +	This is a virtual function that each derived class must implement.
 332.398 +
 332.399 +	@post
 332.400 +	The current position is updated.
 332.401 +
 332.402 +	@return	A boolean indicating if the operation was successful. ETrue if the operation succeeded, 
 332.403 +	        otherwise EFalse.
 332.404 +    */
 332.405 +	virtual TBool FlushPixels() = 0;
 332.406 +	
 332.407 +private:
 332.408 +	// Future proofing
 332.409 +	IMPORT_C virtual void ReservedVirtual1();
 332.410 +	IMPORT_C virtual void ReservedVirtual2();
 332.411 +	IMPORT_C virtual void ReservedVirtual3();
 332.412 +	IMPORT_C virtual void ReservedVirtual4();
 332.413 +	};
 332.414 +
 332.415 +/**
 332.416 +@publishedAll
 332.417 +@released
 332.418 +
 332.419 +Flag used to determine the type of transformation which is the result of 
 332.420 +single or multiple transformation operations requested via calls to
 332.421 +COperationExtension::AddOperationL.
 332.422 +
 332.423 +8 unique orientations:
 332.424 +
 332.425 +@code
 332.426 +normal  90      180     270
 332.427 +00 10   01 00   11 01   10 11
 332.428 +01 11   11 10   10 00   00 01
 332.429 +
 332.430 +V flip  90      180     270
 332.431 +10 00   11 10   =Hflip  =Hflip+90
 332.432 +11 01   01 00
 332.433 +
 332.434 +H flip  90      180     270
 332.435 +01 11   00 01   =Vflip  =Vflip+90
 332.436 +00 10   10 11
 332.437 +@endcode
 332.438 +
 332.439 +@see COperationExtension::AddOperationL
 332.440 +*/
 332.441 +enum TTransformOptions
 332.442 +	{
 332.443 +	/** Normal Decode
 332.444 +	*/
 332.445 +	EDecodeNormal = 0x11011000,
 332.446 +
 332.447 +	/** Rotate 90 degrees.
 332.448 +	*/
 332.449 +	EDecodeRotate90	= 0x10110001,
 332.450 +
 332.451 +	/** Rotate 180 degrees.
 332.452 +	*/
 332.453 +	EDecodeRotate180 = 0x00100111,
 332.454 +
 332.455 +	/** Rotate 270 degrees.
 332.456 +	*/
 332.457 +	EDecodeRotate270 = 0x01001110,
 332.458 +	
 332.459 +	/** Horizontal flip.
 332.460 +	*/
 332.461 +	EDecodeHorizontalFlip = 0x10001101,
 332.462 +	
 332.463 +	/** Horizontal flip and rotate 90 degrees.
 332.464 +	*/
 332.465 +	EDecodeHorizontalFlipRotate90 = 0x11100100,
 332.466 +
 332.467 +	/** Vertical flip.
 332.468 +	*/
 332.469 +	EDecodeVerticalFlip	= 0x01110010,
 332.470 +
 332.471 +	/** Vertical flip and rotate 90 degrees.
 332.472 +	*/
 332.473 +	EDecodeVerticalFlipRotate90 = 0x00011011
 332.474 +	};
 332.475 +
 332.476 +
 332.477 +/**
 332.478 +@publishedAll
 332.479 +@released
 332.480 +
 332.481 +Class that provides support for Framework Extensions.
 332.482 +
 332.483 +@see CImageProcessor
 332.484 +@see CImageReadCodec
 332.485 +@see CImageDecoderPlugin
 332.486 +*/
 332.487 +class CImageProcessorExtension : public CImageProcessor
 332.488 +	{
 332.489 +public:
 332.490 +	IMPORT_C virtual ~CImageProcessorExtension();
 332.491 +	IMPORT_C void SetClippingRect(const TRect& aRect);
 332.492 +	IMPORT_C void SetScaling(TInt aScalingCoeff);
 332.493 +	IMPORT_C void SetScaling(const TSize& aDesiredSize);
 332.494 +	IMPORT_C void SetOperation(TTransformOptions aOperation);
 332.495 +	IMPORT_C void SetInitialScanlineSkipPadding(TInt aNumberOfScanlines);
 332.496 +
 332.497 +protected:
 332.498 +	IMPORT_C CImageProcessorExtension();
 332.499 +
 332.500 +protected:
 332.501 +	/** Clipping rectangle */
 332.502 +	TRect iClippingRect;
 332.503 +	/** Scaling coefficient */
 332.504 +	TInt iScalingCoeff;
 332.505 +	/** Desired size after scaling */
 332.506 +	TSize iDesiredSize;
 332.507 +	/** Operations to apply to image */
 332.508 +	TTransformOptions iOperation;
 332.509 +	/** Position in destination at which start rendering */
 332.510 +	TPoint iStartPosition;
 332.511 +	/** Position in destination at which rendering is complete */
 332.512 +	TPoint iEndPosition;
 332.513 +	/** An initial one-off number of scanlines to be skipped */
 332.514 +	TInt iNumberOfScanlinesToSkip;
 332.515 +	};
 332.516 +   
 332.517 +inline TInt TColorConvertor::RgbToMonochrome(TRgb aRgb)
 332.518 +	{
 332.519 +	TInt value = aRgb.Internal();
 332.520 +	TInt r = value&0xFF0000;
 332.521 +	TInt g = value&0xFF00;
 332.522 +	value  = (value&0xFF)<<16;	// blue<<16
 332.523 +	value += r<<1;     		// + (red<<16)*2
 332.524 +	value += g<<(16+2-8);	// + (green<<16)*4
 332.525 +	value += g<<(16+0-8);	// + (green<<16)
 332.526 +	return value>>(16+3);	// total/8
 332.527 +	}
 332.528 +
 332.529 +#endif //___IMAGEPROCESSOR_H__
   333.1 --- a/epoc32/include/imapcmds.h	Tue Mar 16 16:12:26 2010 +0000
   333.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   333.3 @@ -1,1082 +0,0 @@
   333.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   333.5 -// All rights reserved.
   333.6 -// This component and the accompanying materials are made available
   333.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   333.8 -// which accompanies this distribution, and is available
   333.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  333.10 -//
  333.11 -// Initial Contributors:
  333.12 -// Nokia Corporation - initial contribution.
  333.13 -//
  333.14 -// Contributors:
  333.15 -//
  333.16 -// Description:
  333.17 -//
  333.18 -
  333.19 -#if !defined (__IMAPCMDS_H__)
  333.20 -#define __IMAPCMDS_H__
  333.21 -
  333.22 -#if !defined (__MSVSTD_HRH__)
  333.23 -#include <msvstd.hrh>
  333.24 -#endif
  333.25 -
  333.26 -class TImap4RenameFolder
  333.27 -/** Buffer for an IMAP folder name. 
  333.28 -
  333.29 -@see KIMAP4MTMRenameFolder
  333.30 -
  333.31 -@publishedAll
  333.32 -@released
  333.33 -*/
  333.34 -	{
  333.35 -public:
  333.36 -	/** IMAP folder name. */
  333.37 -	TBuf<128> iNewName;
  333.38 -	};
  333.39 -
  333.40 -/** IMAP4-specific commands that can be issued through either 
  333.41 -CImap4ClientMtm::InvokeAsyncFunctionL() or, in a few cases, 
  333.42 -CImap4ClientMtm::InvokeSyncFunctionL().
  333.43 - 
  333.44 -These functions take an input message selection parameter 
  333.45 -(@c const CMsvEntrySelection& @c aSelection) and an input/output buffer parameter 
  333.46 -(TDes8& @c aParameter). The use of these parameters is command specific, and is 
  333.47 -described for each command below.
  333.48 -
  333.49 -The commands fall into a number of categories: 
  333.50 -
  333.51 -- Connect and logon to remote server:
  333.52 -  - #KIMAP4MTMConnect
  333.53 -  - #KIMAP4MTMDisconnect
  333.54 -- Synchronise headers:
  333.55 -  - #KIMAP4MTMCancelBackgroundSynchronise
  333.56 -  - #KIMAP4MTMConnectAndSyncCompleteAfterConnect
  333.57 -  - #KIMAP4MTMConnectAndSyncCompleteAfterDisconnect
  333.58 -  - #KIMAP4MTMConnectAndSyncCompleteAfterFullSync
  333.59 -  - #KIMAP4MTMConnectAndSynchronise
  333.60 -  - #KIMAP4MTMFolderFullSync
  333.61 -  - #KIMAP4MTMFullSync
  333.62 -  - #KIMAP4MTMInboxNewSync
  333.63 -  - #KIMAP4MTMSynchronise
  333.64 -  - #KIMAP4MTMWaitForBackground
  333.65 -- Subscribe to mailboxes:
  333.66 -  - #KIMAP4MTMLocalSubscribe
  333.67 -  - #KIMAP4MTMLocalUnsubscribe
  333.68 -- Populate messages:
  333.69 -  - #KIMAP4MTMPopulate
  333.70 -  - #KIMAP4MTMPopulateAllMailWhenAlreadyConnected
  333.71 -  - #KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected
  333.72 -  - #KIMAP4MTMPopulateNewMailWhenAlreadyConnected
  333.73 -  - #KIMAP4MTMConnectAndPopulateAllMailAndDisconnect
  333.74 -  - #KIMAP4MTMConnectAndPopulateAllMailAndStayOnline
  333.75 -  - #KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect
  333.76 -  - #KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline
  333.77 -  - #KIMAP4MTMConnectAndPopulateNewMailAndDisconnect
  333.78 -  - #KIMAP4MTMConnectAndPopulateNewMailAndStayOnline
  333.79 -- Copy messages:
  333.80 -  - #KIMAP4MTMCopyAllMailWhenAlreadyConnected
  333.81 -  - #KIMAP4MTMCopyMailSelectionWhenAlreadyConnected
  333.82 -  - #KIMAP4MTMCopyNewMailWhenAlreadyConnected
  333.83 -  - #KIMAP4MTMConnectAndCopyAllMailAndDisconnect
  333.84 -  - #KIMAP4MTMConnectAndCopyAllMailAndStayOnline
  333.85 -  - #KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect
  333.86 -  - #KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline
  333.87 -  - #KIMAP4MTMConnectAndCopyNewMailAndDisconnect
  333.88 -  - #KIMAP4MTMConnectAndCopyNewMailAndStayOnline
  333.89 -- Move messages:
  333.90 -  - #KIMAP4MTMMoveAllMailWhenAlreadyConnected
  333.91 -  - #KIMAP4MTMMoveMailSelectionWhenAlreadyConnected
  333.92 -  - #KIMAP4MTMMoveNewMailWhenAlreadyConnected
  333.93 -  - #KIMAP4MTMConnectAndMoveAllMailAndDisconnect
  333.94 -  - #KIMAP4MTMConnectAndMoveAllMailAndStayOnline
  333.95 -  - #KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect
  333.96 -  - #KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline
  333.97 -  - #KIMAP4MTMConnectAndMoveNewMailAndDisconnect
  333.98 -  - #KIMAP4MTMConnectAndMoveNewMailAndStayOnline
  333.99 -- Create messages:
 333.100 -  - #KIMAP4MTMCreateForwardAsAttachmentEmailMessage
 333.101 -  - #KIMAP4MTMCreateForwardEmailMessage
 333.102 -  - #KIMAP4MTMCreateNewEmailMessage
 333.103 -  - #KIMAP4MTMCreateReceiptEmailMessage
 333.104 -  - #KIMAP4MTMCreateReplyEmailMessage
 333.105 -  .
 333.106 -  Note that CImEmailOperation is usually a more convenient way
 333.107 -  to create messages.
 333.108 -- Query state:
 333.109 -  - #KIMAP4MTMBusy
 333.110 -  - #KIMAP4MTMIsConnected
 333.111 -- Offline operations:
 333.112 -  - #KIMAP4MTMCancelOffLineOperations
 333.113 -  - #KIMAP4MTMUndeleteAll
 333.114 -- Miscellaneous:
 333.115 -  - #KIMAP4MTMEndBatch
 333.116 -  - #KIMAP4MTMRenameFolder
 333.117 -  - #KIMAP4MTMSelect
 333.118 -  - #KIMAP4MTMStartBatch
 333.119 -
 333.120 -Note that when @c iServiceSelection is referred to in code examples for some
 333.121 -commands, this is assumed to be a CMsvEntrySelection that  
 333.122 -contain the entry ID of an IMAP service. 
 333.123 -
 333.124 -@see CImap4ClientMtm::InvokeAsyncFunctionL() 
 333.125 -@see CImap4ClientMtm::InvokeSyncFunctionL()
 333.126 -
 333.127 -@publishedAll
 333.128 -@released
 333.129 -*/	
 333.130 -enum TImap4Cmds {
 333.131 -	/** Tests if a specified service is connected.
 333.132 -	
 333.133 -	This command is synchronous, and used from @c InvokeSyncFunctionL().
 333.134 -	
 333.135 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.136 -	to test.
 333.137 -	 
 333.138 -	@c aParameter: a packaged TInt. On return, this is set to  
 333.139 -	KErrNone if the service is connected or KErrDisconnected if not. 
 333.140 -	
 333.141 -	Example:
 333.142 -	@code
 333.143 -	TPckgBuf<TInt> parameter;
 333.144 -	iClientMtm->InvokeSyncFunctionL(KIMAP4MTMIsConnected, *iServiceSelection, parameter);
 333.145 -	if (parameter()==KErrNone)
 333.146 -		{
 333.147 -		_LIT(KConnStatus, "\n\n Connected to the service");
 333.148 -		iConsole->Printf(KConnStatus);
 333.149 -		}	
 333.150 -	@endcode
 333.151 -	*/
 333.152 -	KIMAP4MTMIsConnected = KMtmFirstFreeMtmFunctionId,
 333.153 -	
 333.154 -	/** Connects to the specified IMAP service.
 333.155 -
 333.156 -	This makes a network connection and logs on the IMAP server specified 
 333.157 -	in the settings for the service. 
 333.158 -	
 333.159 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.160 -	to connect to.
 333.161 -	 
 333.162 -	@c aParameter: packages a pointer to an implementation of the connection observer 
 333.163 -	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
 333.164 -	to notify the client of the stages of connection.
 333.165 -	
 333.166 -	Completion: KErrBusy if the device is already connected to the specified server.
 333.167 -
 333.168 -	Example:
 333.169 -	@code
 333.170 -	TBuf8<1> parameter;
 333.171 -	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnect, *iServiceSelection, parameter, iStatus);    
 333.172 -	@endcode	
 333.173 -	*/
 333.174 -	KIMAP4MTMConnect,
 333.175 -	
 333.176 -	/** Connects to the specified IMAP service, and starts a background synchronisation.
 333.177 -
 333.178 -	The call completes when the connection occurs and the synchronisation starts. See
 333.179 -	CImap4ClientMtm for a description of a background synchronisation.
 333.180 -	
 333.181 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.182 -	to connect to.
 333.183 -	 
 333.184 -	@c aParameter: packages a pointer to an implementation of the connection observer 
 333.185 -	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
 333.186 -	to notify the client of the stages of connection and synchronisation.
 333.187 -	
 333.188 -	Completion: KErrBusy if the device is already connected to the specified server. 
 333.189 -	
 333.190 -	Example:
 333.191 -	@code
 333.192 -	TPckg<MMsvImapConnectionObserver*> parameter(this);	
 333.193 -  iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMConnectAndSynchronise, *iServiceSelection, parameter, iStatus);
 333.194 -	@endcode
 333.195 -	*/
 333.196 -	KIMAP4MTMConnectAndSynchronise,
 333.197 -	
 333.198 -	/** Cancels a background synchronisation in progress.
 333.199 -		
 333.200 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.201 -	being synchronised.
 333.202 -	 
 333.203 -	@c aParameter: unused.
 333.204 -	
 333.205 -	Completion: KErrCancel if a synchronisation was cancelled; KErrNone if no
 333.206 -	synchronisation was taking place.   
 333.207 -
 333.208 -	Example:
 333.209 -	@code
 333.210 -	TBuf8<1> parameter;
 333.211 -  iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMCancelBackgroundSynchronise, *iServiceSelection, parameter, iStatus);	
 333.212 -	@endcode			
 333.213 -	*/
 333.214 -	KIMAP4MTMCancelBackgroundSynchronise,
 333.215 -	
 333.216 -	/** Ensures that the IMAP server will remain loaded ready for more commands. 
 333.217 -	
 333.218 -	If this is not set, then the Message Server can unload the IMAP server MTM
 333.219 -	after a service is disconnected. It is more efficient if it stays loaded
 333.220 -	if further use of the MTM is expected.
 333.221 -	
 333.222 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.223 -	 
 333.224 -	@c aParameter: unused.
 333.225 -	
 333.226 -	Completion: KErrNone.
 333.227 -	*/
 333.228 -	KIMAP4MTMStartBatch,
 333.229 -	
 333.230 -	/** Ends the effect of KIMAP4MTMStartBatch. 
 333.231 -
 333.232 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.233 -	 
 333.234 -	@c aParameter: unused.
 333.235 -	
 333.236 -	Completion: KErrNone.	
 333.237 -	*/
 333.238 -	KIMAP4MTMEndBatch,
 333.239 -	
 333.240 -	/** Tests if the server is busy.
 333.241 -
 333.242 -	It can be used from either CImap4ClientMtm::InvokeAsyncFunctionL() or 
 333.243 -	CImap4ClientMtm::InvokeSyncFunctionL().
 333.244 -	
 333.245 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.246 -	 
 333.247 -	@c aParameter: if the command is called from InvokeSyncFunctionL(), then on return a packaged
 333.248 -	TInt holding the result.
 333.249 -		
 333.250 -	Completion: This completes with either KErrNone (neither session is busy) or KErrServerBusy 
 333.251 -	otherwise. 
 333.252 -	*/
 333.253 -	KIMAP4MTMBusy,
 333.254 -	
 333.255 -	/** Issues an IMAP SELECT command on the specified mailbox. 
 333.256 -
 333.257 -	This is used to select an mailbox for the KIMAP4MTMSynchronise command.	
 333.258 -	
 333.259 -	Pre-condition: a connected service.
 333.260 -	
 333.261 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
 333.262 -	to select.
 333.263 -	 
 333.264 -	@c aParameter: Unused.
 333.265 -		
 333.266 -	Completion: KErrDisconnected if not connected. 
 333.267 -	*/
 333.268 -	KIMAP4MTMSelect,
 333.269 -	
 333.270 -	/** Synchronises the current folder that is selected on the remote server.
 333.271 -
 333.272 -	Note that after a connection is made, the Inbox folder is selected by default.
 333.273 -	
 333.274 -	Pre-condition: a connected service.
 333.275 -
 333.276 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.277 -	 
 333.278 -	@c aParameter: unused.
 333.279 -	
 333.280 -	Completion: KErrDisconnected if not connected. 	
 333.281 -	*/
 333.282 -	KIMAP4MTMSynchronise,
 333.283 -	
 333.284 -	/** Synchronises the connected service's folder tree with the folders on the remote IMAP server.
 333.285 -
 333.286 -	This creates and deletes folder entries in the message store under the remote service as needed,
 333.287 -	to match the mailboxes that exist on the remote server. Note that this step is done as part of 
 333.288 -	the normal service synchronisation operation.
 333.289 -		
 333.290 -	Pre-condition: a connected service.
 333.291 -
 333.292 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.293 -	 
 333.294 -	@c aParameter: unused.
 333.295 -
 333.296 -	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
 333.297 -	background synchronisation is already in progress. 	
 333.298 -	*/
 333.299 -	KIMAP4MTMSyncTree,
 333.300 -	
 333.301 -	/** Not supported. */
 333.302 -	KIMAP4MTMReserved10,						// SyncSubscription
 333.303 -	
 333.304 -	/** Synchronises the specified service. 
 333.305 -
 333.306 -	This is a foreground synchronisation, and completes when the synchronisation is done.
 333.307 -	
 333.308 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.309 -	to synchronise.
 333.310 -	
 333.311 -	@c aParameter: unused.
 333.312 -	
 333.313 -	Pre-condition: a connected service.
 333.314 -	
 333.315 -	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
 333.316 -	background synchronisation is already in progress.
 333.317 -	*/
 333.318 -	KIMAP4MTMFullSync,
 333.319 -	
 333.320 -	/** Cancels any operations in progress and sends logout messages to server.
 333.321 -
 333.322 -	If CImImap4Settings::SetDeleteEmailsWhenDisconnecting() is set,
 333.323 -	any messages marked as deleted while offline are deleted before logout.
 333.324 -
 333.325 -	Pre-condition: a connected service.
 333.326 -
 333.327 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.328 -	 
 333.329 -	@c aParameter: unused.
 333.330 -
 333.331 -	Completion: KErrDisconnected if not connected.
 333.332 -	*/
 333.333 -	KIMAP4MTMDisconnect,
 333.334 -
 333.335 -	/** Sets the local subscription flag on a specified folder. 
 333.336 -
 333.337 -	This sets the local subscription flag on the folder's index entry 
 333.338 -	(see TMsvEmailEntry::SetLocalSubscription()), and saves the changed entry 
 333.339 -	to the index.
 333.340 -	
 333.341 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
 333.342 -	to subscribe to.
 333.343 -	 
 333.344 -	@c aParameter: unused.
 333.345 -	
 333.346 -	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
 333.347 -	*/
 333.348 -	KIMAP4MTMLocalSubscribe,
 333.349 -
 333.350 -	/** Clears the local subscription flag on the specified folder.
 333.351 -	
 333.352 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder 
 333.353 -	to unsubscribe from.
 333.354 -	 
 333.355 -	@c aParameter: unused.
 333.356 -
 333.357 -	Completion: KErrNotSupported if the entry is not a folder; KErrNone on success.   
 333.358 -	*/
 333.359 -	KIMAP4MTMLocalUnsubscribe,
 333.360 -    
 333.361 -	/** Not supported. */
 333.362 -	KIMAP4MTMReserved15,						// MakeRemoteMailboxesInvisible
 333.363 -	/** Not supported. */
 333.364 -	KIMAP4MTMReserved16,						// MakeRemoteMailboxesVisible
 333.365 -	
 333.366 -	/** Synchronises any messages received by the remote server Inbox since the
 333.367 -	last synchronisation operation.
 333.368 -
 333.369 -	Messages that have been deleted from the remote Inbox are not deleted from
 333.370 -	the mirror.
 333.371 -
 333.372 -	Pre-condition: a connected service.
 333.373 -
 333.374 -	@c aSelection: @c aSelection[0] should contain the TMsvId of the IMAP4service.
 333.375 -	 
 333.376 -	@c aParameter: unused.
 333.377 -
 333.378 -	Completion: KErrDisconnected if not connected; KErrServerBusy if a 
 333.379 -	background synchronisation is already in progress.
 333.380 -	*/
 333.381 -	KIMAP4MTMInboxNewSync,
 333.382 -	
 333.383 -	/** Selects and synchronises the specified folder. 
 333.384 -	
 333.385 -	Pre-condition: a connected service.
 333.386 -
 333.387 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to synchronise.
 333.388 -	 
 333.389 -	@c aParameter: unused.
 333.390 -
 333.391 -	Completion: KErrDisconnected if not connected.
 333.392 -	*/
 333.393 -	KIMAP4MTMFolderFullSync,
 333.394 -	
 333.395 -	/** Completes only when a background synchronisation has finished. 
 333.396 -		
 333.397 -	This turns a background synchronisation into a foreground synchronisation.
 333.398 -
 333.399 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.400 -	being synchronised.
 333.401 -	 
 333.402 -	@c aParameter: unused.
 333.403 -	
 333.404 -	Completion: KErrNone when no background synchronisation is in progress.   
 333.405 -	
 333.406 -	Example:
 333.407 -	@code
 333.408 -	TBuf8<1> parameter;
 333.409 -	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMWaitForBackground, *iServiceSelection, parameter, iStatus);	
 333.410 -	@endcode
 333.411 -	*/
 333.412 -	KIMAP4MTMWaitForBackground,
 333.413 -	
 333.414 -	/** Renames a specified folder.
 333.415 -	
 333.416 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder to rename. 
 333.417 -	 
 333.418 -	@c aParameter: the new name for the folder. This should be a packaged TImap4RenameFolder object.
 333.419 -
 333.420 -	Pre-conditions: a connected service.
 333.421 -			
 333.422 -	Completion: KErrDisconnected if there is no connected service. 
 333.423 -	
 333.424 -	Example:
 333.425 -	@code
 333.426 -	// rename folder, assumed to be identified in *selection[0], to "newname".
 333.427 -	_LIT(KNewName, "newname");
 333.428 -	TImap4RenameFolder newName;
 333.429 -	newName.iNewName = KNewName;	
 333.430 -	TPckg<TImap4RenameFolder> name(newName);
 333.431 -	iOperation = iClientMtm->InvokeAsyncFunctionL(KIMAP4MTMRenameFolder, *selection, name, iStatus);	
 333.432 -	@endcode
 333.433 -	 */
 333.434 -	KIMAP4MTMRenameFolder,
 333.435 -		
 333.436 -	/** Undoes any offline delete operations pending on the specified entries.
 333.437 -		
 333.438 -	@c aSelection: Entries on which to cancel offline delete operations. 
 333.439 -	 
 333.440 -	@c aParameter: Unused.
 333.441 -
 333.442 -	Completion: KErrNone.
 333.443 -	*/
 333.444 -	KIMAP4MTMUndeleteAll,
 333.445 -	
 333.446 -	/** Cancels any offline operations pending on the specified entries.
 333.447 -	
 333.448 -	If any item is a folder, then it cancels all operations queued on any item 
 333.449 -	in that folder. If an IMAP4 service ID is given, then it cancels any Copy() 
 333.450 -	or MoveFromLocal() operations that are queued. A message can not have its 
 333.451 -	pending operations cancelled individually. 
 333.452 -	
 333.453 -	@c aSelection: Entries on which to cancel offline operations. 
 333.454 -	 
 333.455 -	@c aParameter: Unused.
 333.456 -
 333.457 -	Completion: KErrNone.	
 333.458 -	*/
 333.459 -	KIMAP4MTMCancelOffLineOperations,
 333.460 -
 333.461 -	/** Fetches the specified messages from the remote server to the mirror. 
 333.462 -		
 333.463 -	@c aSelection: Messages to fetch.
 333.464 -
 333.465 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.466 -	specifying the message parts to fetch and size limits on what is fetched.
 333.467 -
 333.468 -	*/
 333.469 -	KIMAP4MTMPopulate,
 333.470 -
 333.471 -	/** Not supported. */
 333.472 -	KIMAP4MTMSyncSubscription,
 333.473 -
 333.474 -	/** Connect and synchronise the specified service, and complete after connection. 
 333.475 -	
 333.476 -	The operation completes when the connection part completes. The synchronisation
 333.477 -	is done in the background. 
 333.478 -	
 333.479 -	The command	has the same functionality as KIMAP4MTMConnectAndSynchronise.  
 333.480 -
 333.481 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.482 -	to connect to.
 333.483 -	 
 333.484 -	@c aParameter: packages a pointer to an implementation of the connection observer 
 333.485 -	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
 333.486 -	to notify the client of the stages of connection and synchronisation.
 333.487 -	
 333.488 -	Completion: KErrBusy if a connected session already exists. 	
 333.489 -	*/
 333.490 -	KIMAP4MTMConnectAndSyncCompleteAfterConnect,
 333.491 -	
 333.492 -	/** Connect and synchronise the specified service, and complete after synchronisation. 
 333.493 -	
 333.494 -	This is similar to KIMAP4MTMConnectAndSynchronise, except that the operation
 333.495 -	does not complete until synchronisation is complete.  
 333.496 -	
 333.497 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service 
 333.498 -	to connect to.
 333.499 -	 
 333.500 -	@c aParameter: packages a pointer to an implementation of the connection observer 
 333.501 -	interface, MMsvImapConnectionObserver. Callbacks are made to this interface
 333.502 -	to notify the client of the stages of connection and synchronisation.
 333.503 -	
 333.504 -	Completion: KErrBusy if a connected session already exists. 	
 333.505 -	*/
 333.506 -	KIMAP4MTMConnectAndSyncCompleteAfterFullSync,
 333.507 -	
 333.508 -	/** Connect and synchronise the specified service, and complete after disconnection.
 333.509 -	
 333.510 -	Unlike the other synchronisation commands, this command does not complete
 333.511 -	after either connection or synchronisation. Instead, after the initial synchronisation
 333.512 -	is complete, it periodically resynchronises the Inbox until the service is disconnected.
 333.513 -	CImImap4Settings::SyncRate() sets the refresh period. 
 333.514 -	
 333.515 -	Disconnection can occur because the network connection is closed, either through 
 333.516 -	user action, or because a networking timeout occurs on the socket. 
 333.517 -	
 333.518 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service
 333.519 -	to connect to.
 333.520 -
 333.521 -	@c aParameter: packages a pointer to an implementation of the connection
 333.522 -	observer interface, MMsvImapConnectionObserver. Callbacks are made to this
 333.523 -	interface to notify the client of the stages of connection and
 333.524 -	synchronisation.
 333.525 -
 333.526 -	Completion: KErrBusy if a connected session already exists.
 333.527 -	*/
 333.528 -	KIMAP4MTMConnectAndSyncCompleteAfterDisconnect,
 333.529 -	
 333.530 -	/** Not supported. */
 333.531 -	KIMAP4MTMCancelSendOnNextConnection,
 333.532 -	
 333.533 -	/** Copy any new messages from a specified folder to another folder,
 333.534 -	assuming a new connection does not need to be made.
 333.535 -
 333.536 -	This is used after message headers have been synchronised. Any messages marked
 333.537 -	as new are populated in the mirror, and then copied to the specified destination folder.
 333.538 -
 333.539 -	Pre-condition: a connected service.
 333.540 -
 333.541 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.542 -	@c aSelection[1] should contain the entry ID of the folder from which
 333.543 -	to copy the entries.
 333.544 -
 333.545 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.546 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.547 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.548 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.549 -	the entire message is always fetched.
 333.550 -
 333.551 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.552 -	information is a null descriptor.	
 333.553 -	*/
 333.554 -	KIMAP4MTMCopyNewMailWhenAlreadyConnected,
 333.555 -	
 333.556 -	/** Connect to a specified service, copy any new messages from 
 333.557 -	a specified folder into another folder, and stay connected. 
 333.558 -	
 333.559 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.560 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.561 -	the messages to copy.
 333.562 -
 333.563 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.564 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.565 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.566 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.567 -	the entire message is always fetched.
 333.568 -
 333.569 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.570 -	information is a null descriptor.			
 333.571 -	*/
 333.572 -	KIMAP4MTMConnectAndCopyNewMailAndStayOnline,
 333.573 -	
 333.574 -	/** Connect to a specified service, copy any new messages from 
 333.575 -	a specified folder into another folder, and disconnect afterwards. 
 333.576 -	
 333.577 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.578 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.579 -	the messages to copy.
 333.580 -
 333.581 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.582 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.583 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.584 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.585 -	the entire message is always fetched.
 333.586 -
 333.587 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.588 -	information is a null descriptor.			
 333.589 -	*/
 333.590 -	KIMAP4MTMConnectAndCopyNewMailAndDisconnect,
 333.591 -		
 333.592 -	/** Move any new messages from a specified folder to another folder,
 333.593 -	assuming a new connection does not need to be made.
 333.594 -
 333.595 -	This is used after message headers have been synchronised. Any messages marked
 333.596 -	as new are populated in the mirror, and then moved to the specified destination folder.
 333.597 -
 333.598 -	Pre-condition: a connected service.
 333.599 -
 333.600 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.601 -	@c aSelection[1] should contain the entry ID of the folder from which
 333.602 -	to move the entries.
 333.603 -
 333.604 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.605 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.606 -	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.607 -	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.608 -	the entire message is always fetched.
 333.609 -
 333.610 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.611 -	information is a null descriptor.	
 333.612 -	*/
 333.613 -	KIMAP4MTMMoveNewMailWhenAlreadyConnected,
 333.614 -
 333.615 -	/** Connect to a specified service, move any new messages from 
 333.616 -	a specified folder into another folder, and stay connected. 
 333.617 -	
 333.618 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.619 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.620 -	the messages to move.
 333.621 -
 333.622 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.623 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.624 -	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.625 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.626 -	the entire message is always fetched.
 333.627 -
 333.628 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.629 -	information is a null descriptor.			
 333.630 -	*/
 333.631 -	KIMAP4MTMConnectAndMoveNewMailAndStayOnline,
 333.632 -	
 333.633 -	/** Connect to a specified service, move any new messages from 
 333.634 -	a specified folder into another folder, and disconnect afterwards. 
 333.635 -	
 333.636 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.637 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.638 -	the messages to move.
 333.639 -
 333.640 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.641 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.642 -	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.643 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.644 -	the entire message is always fetched.
 333.645 -
 333.646 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.647 -	information is a null descriptor.			
 333.648 -	*/
 333.649 -	KIMAP4MTMConnectAndMoveNewMailAndDisconnect,
 333.650 -
 333.651 -	/** Copy the specified messages to another folder, assuming a new connection
 333.652 -	does not need to be made.
 333.653 -
 333.654 -	The specified messages are populated in the mirror, and then copied to
 333.655 -	the specified destination folder.
 333.656 -
 333.657 -	Pre-condition: a connected service.
 333.658 -
 333.659 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.660 -	followed by the IDs of the messages to copy.	
 333.661 -
 333.662 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.663 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.664 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.665 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.666 -	the entire message is always fetched.
 333.667 -
 333.668 -	Completion: note if there are no entries to copy, then KErrNone, and progress
 333.669 -	information is a null descriptor.
 333.670 -	*/
 333.671 -	KIMAP4MTMCopyMailSelectionWhenAlreadyConnected,
 333.672 -
 333.673 -	/** Connect to a specified service, copy the specified messages to another 
 333.674 -	folder, and stay connected.
 333.675 -
 333.676 -	The specified messages are populated in the mirror, and then copied to
 333.677 -	the specified destination folder.
 333.678 -
 333.679 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.680 -	followed by the IDs of the messages to copy.	
 333.681 -
 333.682 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.683 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.684 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.685 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.686 -	the entire message is always fetched.
 333.687 -
 333.688 -	Completion: note if there are no entries to copy, then KErrNone, and progress
 333.689 -	information is a null descriptor.
 333.690 -	*/
 333.691 -	KIMAP4MTMConnectAndCopyMailSelectionAndStayOnline,
 333.692 -
 333.693 -	/** Connect to a specified service, copy the specified messages to another 
 333.694 -	folder, and disconnect afterwards.
 333.695 -
 333.696 -	The specified messages are populated in the mirror, and then copied to
 333.697 -	the specified destination folder.
 333.698 -
 333.699 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.700 -	followed by the IDs of the messages to copy.	
 333.701 -
 333.702 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.703 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.704 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.705 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.706 -	the entire message is always fetched.
 333.707 -
 333.708 -	Completion: note if there are no entries to copy, then KErrNone, and progress
 333.709 -	information is a null descriptor.
 333.710 -	*/
 333.711 -	KIMAP4MTMConnectAndCopyMailSelectionAndDisconnect,
 333.712 -
 333.713 -	/** Move the specified messages to another folder, assuming a new connection 
 333.714 -	does not need to be made. 
 333.715 -
 333.716 -	Pre-condition: a connected service.
 333.717 -
 333.718 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.719 -	followed by the IDs of the messages to move.	
 333.720 -
 333.721 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.722 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.723 -	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.724 -	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.725 -	the entire message is always fetched.
 333.726 -
 333.727 -	Completion: note if there are no entries to move, then KErrNone, and progress
 333.728 -	information is a null descriptor.	
 333.729 -	*/
 333.730 -	KIMAP4MTMMoveMailSelectionWhenAlreadyConnected,
 333.731 -	
 333.732 -	/** Connect to a specified service, move the specified messages to another 
 333.733 -	folder, and stay connected.
 333.734 -
 333.735 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.736 -	followed by the IDs of the messages to move.	
 333.737 -
 333.738 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.739 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.740 -	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.741 -	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.742 -	the entire message is always fetched.
 333.743 -
 333.744 -	Completion: note if there are no entries to move, then KErrNone, and progress
 333.745 -	information is a null descriptor.	
 333.746 -	*/
 333.747 -	KIMAP4MTMConnectAndMoveMailSelectionAndStayOnline,
 333.748 -
 333.749 -	/** Connect to a specified service, move the specified messages to another 
 333.750 -	folder, and disconnect afterwards.
 333.751 -
 333.752 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.753 -	followed by the IDs of the messages to move.	
 333.754 -
 333.755 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.756 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.757 -	move the messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.758 -	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.759 -	the entire message is always fetched.
 333.760 -
 333.761 -	Completion: note if there are no entries to move, then KErrNone, and progress
 333.762 -	information is a null descriptor.	
 333.763 -	*/
 333.764 -	KIMAP4MTMConnectAndMoveMailSelectionAndDisconnect,
 333.765 -
 333.766 -	/** Copy all messages from the current service, assuming a new connection does 
 333.767 -	not need to be made. 
 333.768 -
 333.769 -	Pre-condition: a connected service.
 333.770 -
 333.771 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.772 -	@c aSelection[1] should contain the entry ID of the folder from which
 333.773 -	to copy the entries.
 333.774 -
 333.775 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.776 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.777 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.778 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.779 -	the entire message is always fetched.
 333.780 -
 333.781 -	Completion: note if there are no entries to copy, then KErrNone, and progress
 333.782 -	information is a null descriptor.	
 333.783 -	*/
 333.784 -	KIMAP4MTMCopyAllMailWhenAlreadyConnected,
 333.785 -
 333.786 -	/** Connect to a specified service, copy all messages from the current service, 
 333.787 -	and stay connected. 
 333.788 -
 333.789 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.790 -	@c aSelection[1] should contain the entry ID of the folder from which
 333.791 -	to copy the entries.
 333.792 -
 333.793 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.794 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.795 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.796 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.797 -	the entire message is always fetched.
 333.798 -
 333.799 -	Completion: note if there are no entries to copy, then KErrNone, and progress
 333.800 -	information is a null descriptor.	
 333.801 -	*/
 333.802 -	KIMAP4MTMConnectAndCopyAllMailAndStayOnline,
 333.803 -
 333.804 -	/** Connect to a specified service, copy all messages from the current service, 
 333.805 -	and disconnect afterwards. 
 333.806 -
 333.807 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.808 -	@c aSelection[1] should contain the entry ID of the folder from which
 333.809 -	to copy the entries.
 333.810 -
 333.811 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.812 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.813 -	copy the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.814 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.815 -	the entire message is always fetched.
 333.816 -
 333.817 -	Completion: note if there are no entries to copy, then KErrNone, and progress
 333.818 -	information is a null descriptor.	
 333.819 -	*/
 333.820 -	KIMAP4MTMConnectAndCopyAllMailAndDisconnect,
 333.821 -
 333.822 -	/** Move all messages from the specified folder, assuming a new connection does 
 333.823 -	not need to be made. 
 333.824 -
 333.825 -	Pre-condition: a connected service.
 333.826 -
 333.827 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.828 -	@c aSelection[1] should contain the entry ID of the folder from which
 333.829 -	to move the entries.
 333.830 -
 333.831 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.832 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.833 -	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.834 -	are not moved. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.835 -	the entire message is always fetched.
 333.836 -
 333.837 -	Completion: note if there are no entries to move, then KErrNone, and progress
 333.838 -	information is a null descriptor.	
 333.839 -	*/
 333.840 -	KIMAP4MTMMoveAllMailWhenAlreadyConnected,
 333.841 -
 333.842 -	/** Connect to a specified service, move all messages from 
 333.843 -	a specified folder into another folder, and stay connected. 
 333.844 -	
 333.845 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.846 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.847 -	the messages to move.
 333.848 -
 333.849 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.850 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.851 -	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.852 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.853 -	the entire message is always fetched.
 333.854 -
 333.855 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.856 -	information is a null descriptor.			
 333.857 -	*/	
 333.858 -	KIMAP4MTMConnectAndMoveAllMailAndStayOnline,
 333.859 -	
 333.860 -	/** Connect to a specified service, move all messages from 
 333.861 -	a specified folder into another folder, and disconnect afterwards. 
 333.862 -	
 333.863 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.864 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.865 -	the messages to move.
 333.866 -
 333.867 -	@c aParameter: packaged TImImap4GetMailInfo object.
 333.868 -	TImImap4GetMailInfo::iDestinationFolder specifies the folder into which to
 333.869 -	move the new messages. Messages with a size greater than TImImap4GetMailInfo::iMaxEmailSize 
 333.870 -	are not copied. TImImap4GetMailInfo::iGetMailBodyParts is ignored:
 333.871 -	the entire message is always fetched.
 333.872 -
 333.873 -	Completion: note if there are no new entries, then KErrNone, and progress
 333.874 -	information is a null descriptor.			
 333.875 -	*/	
 333.876 -	KIMAP4MTMConnectAndMoveAllMailAndDisconnect,
 333.877 -
 333.878 -	/** Populate the specified messages, assuming a new connection does not need to be made. 
 333.879 -
 333.880 -	Pre-condition: a connected service.
 333.881 -
 333.882 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.883 -	followed by the IDs of the messages to populate.
 333.884 -	
 333.885 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.886 -	specifying the message parts to fetch and size limits on what is fetched.
 333.887 -
 333.888 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.889 -	information is a null descriptor.		
 333.890 -	*/
 333.891 -	KIMAP4MTMPopulateMailSelectionWhenAlreadyConnected,
 333.892 -
 333.893 -	/** Connect to a specified service, populate the specified messages, 
 333.894 -	and stay connected.
 333.895 -
 333.896 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.897 -	followed by the IDs of the messages to populate.
 333.898 -	
 333.899 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.900 -	specifying the message parts to fetch and size limits on what is fetched.
 333.901 -
 333.902 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.903 -	information is a null descriptor.		
 333.904 -	*/
 333.905 -	KIMAP4MTMConnectAndPopulateMailSelectionAndStayOnline,
 333.906 -	
 333.907 -	/** Connect to a specified service, populate the specified messages, 
 333.908 -	and disconnect afterwards.
 333.909 -
 333.910 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service,
 333.911 -	followed by the IDs of the messages to populate.
 333.912 -	
 333.913 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.914 -	specifying the message parts to fetch and size limits on what is fetched.
 333.915 -
 333.916 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.917 -	information is a null descriptor.		
 333.918 -	*/
 333.919 -	KIMAP4MTMConnectAndPopulateMailSelectionAndDisconnect,
 333.920 -
 333.921 -	/** Populate the new messages in a specified folder, assuming a new connection does 
 333.922 -	not need to be made. 
 333.923 -	
 333.924 -	Pre-condition: a connected service.
 333.925 -
 333.926 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.927 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.928 -	the messages to populate.
 333.929 -
 333.930 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.931 -	specifying the message parts to fetch and size limits on what is fetched.
 333.932 -
 333.933 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.934 -	information is a null descriptor.			
 333.935 -	*/
 333.936 -	KIMAP4MTMPopulateNewMailWhenAlreadyConnected,
 333.937 -
 333.938 -	/** Populate all messages in a specified folder, assuming a new connection does 
 333.939 -	not need to be made. 
 333.940 -
 333.941 -	Pre-condition: a connected service.
 333.942 -
 333.943 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.944 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.945 -	the messages to populate.
 333.946 -	
 333.947 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.948 -	specifying the message parts to fetch and size limits on what is fetched.
 333.949 -
 333.950 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.951 -	information is a null descriptor.		
 333.952 -	*/
 333.953 -	KIMAP4MTMPopulateAllMailWhenAlreadyConnected,
 333.954 -
 333.955 -	/** Connect to a specified service, populate the new messages in a specified 
 333.956 -	folder, and stay connected. 
 333.957 -	
 333.958 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.959 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.960 -	the messages to populate.
 333.961 -
 333.962 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.963 -	specifying the message parts to fetch and size limits on what is fetched.
 333.964 -
 333.965 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.966 -	information is a null descriptor.			
 333.967 -	*/
 333.968 -	KIMAP4MTMConnectAndPopulateNewMailAndStayOnline,
 333.969 -	
 333.970 -	/** Connect to a specified service, populate the new messages in a specified 
 333.971 -	folder, and disconnect afterwards. 
 333.972 -	
 333.973 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.974 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.975 -	the messages to populate.
 333.976 -
 333.977 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.978 -	specifying the message parts to fetch and size limits on what is fetched.
 333.979 -
 333.980 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.981 -	information is a null descriptor.			
 333.982 -	*/
 333.983 -	KIMAP4MTMConnectAndPopulateNewMailAndDisconnect,
 333.984 -
 333.985 -	/** Connect to a specified service, populate all messages in a specified 
 333.986 -	folder, and stay connected. 
 333.987 -
 333.988 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
 333.989 -	@c aSelection[1] should contain the entry ID of the folder containing
 333.990 -	the messages to populate.
 333.991 -	
 333.992 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
 333.993 -	specifying the message parts to fetch and size limits on what is fetched.
 333.994 -
 333.995 -	Completion: note if there are no entries to populate, then KErrNone, and progress
 333.996 -	information is a null descriptor.	
 333.997 -	*/
 333.998 -	KIMAP4MTMConnectAndPopulateAllMailAndStayOnline,
 333.999 -	
333.1000 -	/** Connect to a specified service, populate all messages in a specified 
333.1001 -	folder, and disconnect afterwards. 
333.1002 -
333.1003 -	@c aSelection: @c aSelection[0] should contain the entry ID of the service;
333.1004 -	@c aSelection[1] should contain the entry ID of the folder containing
333.1005 -	the messages to populate.
333.1006 -	
333.1007 -	@c aParameter: A packaged TImImap4GetPartialMailInfo or TImImap4GetMailInfo
333.1008 -	specifying the message parts to fetch and size limits on what is fetched.
333.1009 -
333.1010 -	Completion: note if there are no entries to populate, then KErrNone, and progress
333.1011 -	information is a null descriptor.	
333.1012 -	*/
333.1013 -	KIMAP4MTMConnectAndPopulateAllMailAndDisconnect,
333.1014 -
333.1015 -	/** Creates a new email message. 
333.1016 -
333.1017 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
333.1018 -	which to create the message.
333.1019 -	 
333.1020 -	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
333.1021 -	message creation flags and message type.
333.1022 -	
333.1023 -	The operation object returned is a CImEmailOperation. Final progress information 
333.1024 -	from this contains the ID of the newly created message.
333.1025 -	*/
333.1026 -	KIMAP4MTMCreateNewEmailMessage,
333.1027 -	
333.1028 -	/** Creates a new reply message. 
333.1029 -
333.1030 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
333.1031 -	which to create the message; @c aSelection[1] should contain the entry ID 
333.1032 -	of the message to which to create a reply.
333.1033 -	 
333.1034 -	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
333.1035 -	message creation flags and message type.
333.1036 -	
333.1037 -	The operation object returned is a CImEmailOperation. Final progress information 
333.1038 -	from this contains the ID of the newly created message.
333.1039 -	*/
333.1040 -	KIMAP4MTMCreateReplyEmailMessage,
333.1041 -		
333.1042 -	/** Creates a new forwarded message.
333.1043 -	
333.1044 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
333.1045 -	which to create the message; @c aSelection[1] should contain the entry ID 
333.1046 -	of the message to forward.
333.1047 -	 
333.1048 -	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
333.1049 -	message creation flags and message type.
333.1050 -	
333.1051 -	The operation object returned is a CImEmailOperation. Final progress information 
333.1052 -	from this contains the ID of the newly created message.
333.1053 -	*/
333.1054 -	KIMAP4MTMCreateForwardEmailMessage,
333.1055 -
333.1056 -	/** Creates a new forwarded message, with the original message as an attachment.
333.1057 -	
333.1058 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
333.1059 -	which to create the message; @c aSelection[1] should contain the entry ID 
333.1060 -	of the message to forward.
333.1061 -	 
333.1062 -	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
333.1063 -	message creation flags and message type.
333.1064 -	
333.1065 -	The operation object returned is a CImEmailOperation. Final progress information 
333.1066 -	from this contains the ID of the newly created message.
333.1067 -	*/
333.1068 -	KIMAP4MTMCreateForwardAsAttachmentEmailMessage,
333.1069 -
333.1070 -	/** Creates a new message-receipt message.
333.1071 -	
333.1072 -	@c aSelection: @c aSelection[0] should contain the entry ID of the folder in 
333.1073 -	which to create the message; @c aSelection[1] should contain the entry ID 
333.1074 -	of the original message for which the receipt is required.
333.1075 -	 
333.1076 -	@c aParameter: a packaged TImCreateMessageOptions (see miutmsg.h) object, specifying
333.1077 -	message creation flags and message type.
333.1078 -	
333.1079 -	The operation object returned is a CImEmailOperation. Final progress information 
333.1080 -	from this contains the ID of the newly created message.
333.1081 -	*/
333.1082 -	KIMAP4MTMCreateReceiptEmailMessage
333.1083 -};
333.1084 -
333.1085 -#endif
   334.1 --- a/epoc32/include/imapconnectionobserver.h	Tue Mar 16 16:12:26 2010 +0000
   334.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   334.3 @@ -1,67 +0,0 @@
   334.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   334.5 -// All rights reserved.
   334.6 -// This component and the accompanying materials are made available
   334.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   334.8 -// which accompanies this distribution, and is available
   334.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  334.10 -//
  334.11 -// Initial Contributors:
  334.12 -// Nokia Corporation - initial contribution.
  334.13 -//
  334.14 -// Contributors:
  334.15 -//
  334.16 -// Description:
  334.17 -//
  334.18 -
  334.19 -#if !defined(__IMAPCONNECTIONOBSERVER_H__)
  334.20 -#define __IMAPCONNECTIONOBSERVER_H__
  334.21 -
  334.22 -/** IMAP4 connection observer events.
  334.23 -
  334.24 -@see MMsvImapConnectionObserver 
  334.25 -@publishedAll
  334.26 -@released
  334.27 -*/
  334.28 -enum TImapConnectionEvent
  334.29 -	{
  334.30 -	/** Connecting to server. */
  334.31 -	EConnectingToServer,
  334.32 -	/** Synchronising folder list. */
  334.33 -	ESynchronisingFolderList,
  334.34 -	/** Synchronising inbox. */
  334.35 -	ESynchronisingInbox,
  334.36 -	/** Synchronising folders. */
  334.37 -	ESynchronisingFolders,
  334.38 -	/** Synchronisation complete. */
  334.39 -	ESynchronisationComplete,
  334.40 -	/** Disconnecting. */
  334.41 -	EDisconnecting,
  334.42 -	/** Connection completed. */
  334.43 -	EConnectionCompleted
  334.44 -	};
  334.45 -
  334.46 -//	Mix-in class to allow observation of the stages of an IMAP operation
  334.47 -//
  334.48 -class MMsvImapConnectionObserver
  334.49 -/** Abstract base class used for IMAP4 connection observation. 
  334.50 -
  334.51 -A derived class to handle IMAP4 connection events should override the HandleImapConnectionEvent() 
  334.52 -member function. 
  334.53 -
  334.54 -Objects that implement this interface are passed as a packaged parameter 
  334.55 -to CImap4ClientMtm::InvokeAsyncFunctionL() when a connection command is issued.
  334.56 - 
  334.57 -@publishedAll
  334.58 -@released
  334.59 -
  334.60 -@see TImap4Cmds
  334.61 -*/
  334.62 -	{
  334.63 -public:
  334.64 -	/** Called when a connection event occurs.
  334.65 -	
  334.66 -	@param aConnectionState Connection event */
  334.67 -	virtual void HandleImapConnectionEvent(TImapConnectionEvent aConnectionState)=0;
  334.68 -	};
  334.69 -
  334.70 -#endif
   335.1 --- a/epoc32/include/imapset.h	Tue Mar 16 16:12:26 2010 +0000
   335.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   335.3 @@ -1,708 +0,0 @@
   335.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   335.5 -// All rights reserved.
   335.6 -// This component and the accompanying materials are made available
   335.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   335.8 -// which accompanies this distribution, and is available
   335.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  335.10 -//
  335.11 -// Initial Contributors:
  335.12 -// Nokia Corporation - initial contribution.
  335.13 -//
  335.14 -// Contributors:
  335.15 -//
  335.16 -// Description:
  335.17 -//
  335.18 -
  335.19 -#ifndef __IMAPSET_H__
  335.20 -#define __IMAPSET_H__
  335.21 -
  335.22 - 
  335.23 -
  335.24 -
  335.25 -#include <msvuids.h>
  335.26 -#include <miutset.h>
  335.27 -
  335.28 -class TBearerTypes;
  335.29 -class TImImap4GetPartialMailInfo;
  335.30 -
  335.31 -/** Default IMAP4 server port number. */
  335.32 -const TUint32 KIMAPDefaultPortNumber = 143;
  335.33 -
  335.34 -/** Default inbox refresh rate in seconds. */
  335.35 -const TInt KImapDefaultInboxSyncRate = 300;
  335.36 -
  335.37 -/** Default idle timeout in seconds. */
  335.38 -const TInt KImapDefaultIdleTimeout = 1740;
  335.39 -
  335.40 -/** Default fetch size in bytes. */
  335.41 -const TUint KImapDefaultFetchSizeBytes = 20480;
  335.42 -
  335.43 -
  335.44 -
  335.45 -/** @deprecated */
  335.46 -const TInt32 KImImapSynchroniseAll = -1;
  335.47 -
  335.48 -/** @deprecated */
  335.49 -const TInt32 KImImapSynchroniseNone	= 0;
  335.50 -
  335.51 -
  335.52 -/**
  335.53 -Describes the folder subscription synchronisation strategy.
  335.54 -
  335.55 -This specifies whether the local or remote folder subscription flags, or a
  335.56 -combination of both, are used to determine which mailboxes are synchronised.
  335.57 -For an overview of the synchronisation process, see CImap4ClientMtm.
  335.58 -
  335.59 -@see CImImap4Settings::SetSynchronise()
  335.60 -@see CImImap4Settings::Synchronise()
  335.61 -
  335.62 -@publishedAll
  335.63 -@released
  335.64 -*/
  335.65 -enum TFolderSyncType
  335.66 -	{
  335.67 -	/** Folders that are marked for subscription either locally or remotely are synchronised. */
  335.68 -	EUseCombination=0,
  335.69 -	/** Only folders marked for subscription locally are synchronised. */
  335.70 -	EUseLocal,
  335.71 -	/** Only folders marked for subscription remotely are synchronised. */
  335.72 -	EUseRemote
  335.73 -	};
  335.74 -
  335.75 -
  335.76 -/**
  335.77 -Specifies methods of synchronising IMAP4 subscription information with a server. 
  335.78 -
  335.79 -Subscription settings that have been set on folders on the local device, and 
  335.80 -subscription settings that have been set on the corresponding mailboxes on the 
  335.81 -remote server can be synchronised, as part of the synchronisation process
  335.82 -(see the overview for CImap4ClientMtm).
  335.83 -
  335.84 -@see CImImap4Settings::SetSubscribe()
  335.85 -@see CImImap4Settings::Subscribe()
  335.86 -
  335.87 -@publishedAll
  335.88 -@released
  335.89 -*/
  335.90 -enum TFolderSubscribeType
  335.91 -	{
  335.92 -	/** Do not alter local or remote subscription information. */
  335.93 -	EUpdateNeither=0,
  335.94 -	/** Update local copy of subscription information when it is received from the 
  335.95 -	remote IMAP4 server at the beginning of the mail session. */
  335.96 -	EUpdateLocal,
  335.97 -	/** Update remote copy of subscription information so that it matches the local 
  335.98 -	subscription information. */
  335.99 -	EUpdateRemote,
 335.100 -	/** Merge local and remote subscription information, store updated information 
 335.101 -	on the remote server and store merged data on the local message store. */
 335.102 -	EUpdateBoth
 335.103 -	};
 335.104 -
 335.105 -
 335.106 -/**
 335.107 -Defines which components of a message to fetch when copying or moving from
 335.108 -a server. 
 335.109 -
 335.110 -@see CImImap4Settings::SetGetMailOptions()
 335.111 -@see CImImap4Settings::GetMailOptions()
 335.112 -
 335.113 -@publishedAll
 335.114 -@released
 335.115 -*/
 335.116 -enum TImap4GetMailOptions
 335.117 -	{
 335.118 -	/** Get message headers. */
 335.119 -	EGetImap4EmailHeaders,
 335.120 -	/** Get message body. */
 335.121 -	EGetImap4EmailBodyText,
 335.122 -	/** Get message body and attachments. */
 335.123 -	EGetImap4EmailBodyTextAndAttachments,
 335.124 -	/** Get message attachments. */
 335.125 -	EGetImap4EmailAttachments,
 335.126 -	/** Get message body, including non-plain or non-HTML alternative text parts (or attachments). */
 335.127 -	EGetImap4EmailBodyAlternativeText
 335.128 -	};
 335.129 -
 335.130 -/**
 335.131 -Defines which components of a message should be fetched partially when 
 335.132 -fetching the message from a server.
 335.133 -
 335.134 -@see
 335.135 -CImImap4Settings
 335.136 -
 335.137 -@publishedAll
 335.138 -@released
 335.139 -*/
 335.140 -enum TImImap4PartialMailOptions
 335.141 -	{
 335.142 -	/** No size limits, full message to be fetched.*/
 335.143 -	ENoSizeLimits,
 335.144 -	/** Get body text only. 
 335.145 -	Gets text/plain part only if text/plain part size + text/html part size
 335.146 -	is greater than body text size limit.
 335.147 -	Gets text/plain part and text/html part if text/plain part size + text/html part size
 335.148 -	is less than body text size limit of the message.*/
 335.149 -	EBodyTextOnly,
 335.150 -	/** Gets all the attachments less than attachment size limit.*/
 335.151 -	EAttachmentsOnly,
 335.152 -	/**  Gets the body text less than or equal to body text size limit and attachments 
 335.153 -	less than or equal to attachment size limit.*/
 335.154 -	EBodyTextAndAttachments,
 335.155 -	/** Gets the body text less than total size limit and also attachments whose size 
 335.156 -	is within total size limit minus fetched body parts.*/
 335.157 -	ECumulative,
 335.158 -	/** Gets the body text less than total size limit and all non-HTML text attachments whose size
 335.159 -	is within total size limit minus fetched body parts.*/	
 335.160 -	EBodyAlternativeText
 335.161 -	}; 
 335.162 -
 335.163 -/**
 335.164 -Flags to indicate what type of IMAP4 progress information is being returned. 
 335.165 -
 335.166 -@publishedAll
 335.167 -@released
 335.168 -*/
 335.169 -enum TImap4ProgressType
 335.170 -	{
 335.171 -	/** Progress information is an TImap4GenericProgress object. */
 335.172 -	EImap4GenericProgressType,
 335.173 -	/** Progress information is an TImap4SyncProgress object. */
 335.174 -	EImap4SyncProgressType
 335.175 -	};
 335.176 -
 335.177 -
 335.178 -class TImap4GenericProgress
 335.179 -/**
 335.180 -Progress information for an IMAP4 get operation.
 335.181 -
 335.182 -For the 'get mail when already connected' operations, the progress state can 
 335.183 -be obtained from TImap4GenericProgress::iState. In the case of the 'connect 
 335.184 -and get mail and disconnect' and 'connect and get mail and stay online', the 
 335.185 -actual progress defined in TImap4GenericProgress::iState will be of the form 
 335.186 -of 'Copy New Mail', 'Populating Message Selection' etc. The sub-operation 
 335.187 -state can then be obtained in the form of 'Connecting', 'Fetching', 'Disconnecting' 
 335.188 -etc. from TImap4GenericProgress::iImap4SubStateProgress.
 335.189 -
 335.190 -@see
 335.191 -CImImap4GetMail 
 335.192 -
 335.193 -@publishedAll
 335.194 -@released
 335.195 -*/
 335.196 -	{
 335.197 -public:
 335.198 -	IMPORT_C TInt ConnectionState() const;
 335.199 -	IMPORT_C TInt ConnectionIAP() const;
 335.200 -
 335.201 -public:
 335.202 -	/** Operation type. */
 335.203 -	enum TImap4GenericProgressOp
 335.204 -		{
 335.205 -	/** Connect operation. */
 335.206 -		EConnect,
 335.207 -	/** Disconnect operation. */
 335.208 -		EDisconnect, 
 335.209 -	/** Sync operation. */
 335.210 -		ESync,
 335.211 -	/** Select operation. */
 335.212 -		ESelect,		
 335.213 -	/** Copy messages to local operation. */
 335.214 -		ECopyToLocal,
 335.215 -	/** Copy messages within remote server operation. */
 335.216 -		ECopyWithinService,
 335.217 -	/** Copy messages from local operation. */
 335.218 -		ECopyFromLocal,
 335.219 -	/** Move messages to local operation. */
 335.220 -		EMoveToLocal,
 335.221 -	/** Move messages within remote server operation. */
 335.222 -		EMoveWithinService,
 335.223 -	/** Move messages from local operation. */
 335.224 -		EMoveFromLocal,
 335.225 -	/** Message population operation. */
 335.226 -		EPopulate,		
 335.227 -	/** Delete operation. */
 335.228 -		EDelete,		
 335.229 -	/** Offline delete operation. */
 335.230 -		EOffLineDelete,
 335.231 -	/** Offline undelete operation. */
 335.232 -		EOffLineUndelete,
 335.233 -	/** Offline delete operation. */
 335.234 -		EOffLineCopyToLocal,
 335.235 -	/** Offline move messages to local operation. */
 335.236 -		EOffLineMoveToLocal,
 335.237 -	/** Offline copy messages from local operation. */
 335.238 -		EOffLineCopyFromLocal,
 335.239 -	/** Offline move messages from local operation. */
 335.240 -		EOffLineMoveFromLocal,
 335.241 -	/** Offline copy messages within remote server operation. */
 335.242 -		EOffLineCopyWithinService,
 335.243 -	/** Offline move messages within remote server operation. */
 335.244 -		EOffLineMoveWithinService,
 335.245 -	/** Offline message population operation. */
 335.246 -		EOffLinePopulate
 335.247 -		};
 335.248 -
 335.249 -	/** Operation state information. */
 335.250 -	enum TImap4GenericProgressState
 335.251 -		{
 335.252 -	/** Disconnected. */
 335.253 -		EDisconnected,
 335.254 -	/** Connecting. */
 335.255 -		EConnecting,
 335.256 -	/** Idle. */
 335.257 -		EIdle,
 335.258 -	/** Selecting the folder to use. */
 335.259 -		ESelecting,
 335.260 -	/** Fetching messages to mirror server. */
 335.261 -		EFetching,
 335.262 -	/** Appending local messages to remote server. */
 335.263 -		EAppending,
 335.264 -	/** Copying local messages to local or within service. */
 335.265 -		ECopying,
 335.266 -	/** Deleting an item, including expunging a folder. */
 335.267 -		EDeleting,
 335.268 -	/** Synchronising folder after an operation. */
 335.269 -		ESyncing,
 335.270 -	/** Disconnecting. */
 335.271 -		EDisconnecting,
 335.272 -	/** Sync already in progress. */
 335.273 -		EBusy,
 335.274 -	/** CImImap4GetMail move operation in progress. */
 335.275 -		EMoving,
 335.276 -	/** CImImap4GetMail copy new mail operation in progress. */
 335.277 -		ECopyNewMail,
 335.278 -	/** CImImap4GetMail move new mail operation in progress. */
 335.279 -		EMoveNewMail,
 335.280 -	/** CImImap4GetMail copy selected messages operation in progress. */
 335.281 -		ECopyMailSelection,
 335.282 -	/** CImImap4GetMail move selected messages operation in progress. */
 335.283 -		EMoveMailSelection,
 335.284 -	/** CImImap4GetMail copy all messages operation in progress. */
 335.285 -		ECopyAllMail,
 335.286 -	/** CImImap4GetMail move all messages operation in progress. */
 335.287 -		EMoveAllMail,
 335.288 -	/** CImImap4GetMail populate new messages operation in progress. */
 335.289 -		EPopulateNewMail,
 335.290 -	/** CImImap4GetMail populate all messages operation in progress. */
 335.291 -		EPopulateAllMail,
 335.292 -	/** CImImap4GetMail populate selected messages operation in progress. */
 335.293 -		EPopulateMailSelection
 335.294 -		};
 335.295 -
 335.296 -	/** Progress information type: always EImap4GenericProgressType. */
 335.297 -	TImap4ProgressType iType;
 335.298 -	/** Operation type. */
 335.299 -	TImap4GenericProgressOp iOperation;
 335.300 -	/** 
 335.301 -	The progress state.
 335.302 -	
 335.303 -	For 'connect and get mail and disconnect' and 'connect and get mail and stay 
 335.304 -	online' type operations, additional sub-operation state can be obtained from 
 335.305 -	iImap4SubStateProgress.
 335.306 -	*/
 335.307 -	TImap4GenericProgressState iState; 
 335.308 -	/** 
 335.309 -	The progress sub-state.
 335.310 -	
 335.311 -	This only applies to 'connect and get mail and disconnect' and 'connect and 
 335.312 -	get mail and stay online' type operations.
 335.313 -	*/
 335.314 -	TImap4GenericProgressState iImap4SubStateProgress;
 335.315 -	/** In the EConnecting state, this field holds the connection iap value, 
 335.316 -	otherwise it holds the number of messages still to be processed. */
 335.317 -	TInt		iMsgsToDo;
 335.318 -	/** In the EConnecting state, this field holds the connection stage value, 
 335.319 -	otherwise it holds the number of messages processed. */
 335.320 -	TInt		iMsgsDone;
 335.321 -	/** Number of message parts still to be processed. */
 335.322 -	TInt		iPartsToDo;
 335.323 -	/** Number of message parts processed. */
 335.324 -	TInt		iPartsDone;
 335.325 -	/** Number of bytes (for a multipart fetch) still to be processed. */
 335.326 -	TInt		iBytesToDo;
 335.327 -	/** Number of bytes (for a multipart fetch) processed. */
 335.328 -	TInt		iBytesDone;
 335.329 -	/** Error code. */
 335.330 -	TInt		iErrorCode;
 335.331 -	/** Message ID returned from the operation. */
 335.332 -	TMsvId		iReturnedMsvId;
 335.333 -	/** The total size of messages to be downloaded (bytes). */
 335.334 -	TInt		iTotalSize;
 335.335 -	};
 335.336 -
 335.337 -
 335.338 -class TImap4SyncProgress
 335.339 -/**
 335.340 -IMAP4 synchronisation progress information. 
 335.341 -
 335.342 -The client may then use an object of this type created by the server MTM to 
 335.343 -track synchronisation progress.
 335.344 -
 335.345 -@publishedAll
 335.346 -@released
 335.347 -*/
 335.348 -	{
 335.349 -public:
 335.350 -	/** Synchronisation state. */
 335.351 -	enum TImap4SyncProgressState
 335.352 -		{
 335.353 -	/** Idle. */
 335.354 -		EIdle,
 335.355 -	/** Busy. */
 335.356 -		EBusy,
 335.357 -	/** Connecting. */
 335.358 -		EConnecting,
 335.359 -	/** Disconnecting. */
 335.360 -		EDisconnecting,
 335.361 -	/** Synchronising inbox. */
 335.362 -		ESyncInbox,
 335.363 -	/** Synchronising folder tree. */
 335.364 -		ESyncFolderTree,
 335.365 -	/** Checking remote subscription. */
 335.366 -		ECheckRemoteSubscription,
 335.367 -	/** Updating remote subscription. */
 335.368 -		EUpdateRemoteSubscription,
 335.369 -	/** Synchronising other information. */
 335.370 -		ESyncOther,
 335.371 -	/** Deleting. */
 335.372 -		EDeleting,
 335.373 -	/** Processing pending operations. */
 335.374 -		EProcessingPendingOps
 335.375 -		};
 335.376 -
 335.377 -	/** Progress information type: always EImapSyncProgressType. */
 335.378 -	TImap4ProgressType iType;		
 335.379 -	/** Synchronisation state. */
 335.380 -	TImap4SyncProgressState iState;	//	Where is the sync up to?
 335.381 -	/** 
 335.382 -	"Folders to do" count for synchronisation. 
 335.383 -	This is meaningful during the #ESyncOther and #EDeleting 
 335.384 -	synchronisation stages.
 335.385 -	*/
 335.386 -	TInt		iFoldersToDo;
 335.387 -	/**
 335.388 -	"Folders done" count for synchronisation. 
 335.389 -	This is meaningful during the #ESyncOther and #EDeleting 
 335.390 -	synchronisation stages.
 335.391 -	*/
 335.392 -	TInt		iFoldersDone;
 335.393 -	/** 
 335.394 -	"Message to do" count for synchronisation.
 335.395 -	This is meaningful during the #ESyncInbox, #ESyncOther and #EProcessingPendingOps
 335.396 -	synchronisation stages.
 335.397 -	*/
 335.398 -	TInt		iMsgsToDo;
 335.399 -	/**
 335.400 -	"Message done" count for synchronisation.
 335.401 -	This is meaningful during the #ESyncInbox, #ESyncOther and #EProcessingPendingOps
 335.402 -	synchronisation stages.
 335.403 -	*/
 335.404 -	TInt		iMsgsDone;
 335.405 -	/**
 335.406 -	Number of headers fetched during synchronisation.
 335.407 -	*/
 335.408 -	TInt		iHeadersFetched;
 335.409 -	/**
 335.410 -	Number of folders orphaned during synchronisation.
 335.411 -	
 335.412 -	An orphaned folder is a local folder which existed 
 335.413 -	under the service, but which did not exist
 335.414 -	on the remote server when synchronisation was done.	
 335.415 -	*/
 335.416 -	TInt		iOrphanedFolders;
 335.417 -	/**
 335.418 -	Number of new folders during synchronisation.
 335.419 -	*/
 335.420 -	TInt		iNewFolders;
 335.421 -	/**
 335.422 -	Number of orphaned messages during synchronisation.
 335.423 -
 335.424 -	An orphaned message is one which existed locally 
 335.425 -	under the service, but which did not exist
 335.426 -	on the remote server when synchronisation was done.	
 335.427 -	*/
 335.428 -	TInt		iOrphanedMessages;
 335.429 -	/**
 335.430 -	Number of remote messages tagged for deletion.
 335.431 -	
 335.432 -	In IMAP, messages can be flagged as deleted, before 
 335.433 -	they are later permanently removed.
 335.434 -	*/
 335.435 -	TInt		iRemoteMessagesDeleteTagged;
 335.436 -	/** Number of messages fetched during synchronisation. 
 335.437 -	
 335.438 -	In the current implementation, this is always 0. Use
 335.439 -	iHeadersFetched to get the number of headers fetched.	
 335.440 -	*/
 335.441 -	TInt		iMessagesFetchedOK;
 335.442 -	/** Number of message parts fetched during synchronisation. 
 335.443 -	
 335.444 -	In the current implementation, this is always 0.
 335.445 -	*/
 335.446 -	TInt		iMessagePartsFetchedOK;
 335.447 -	/** Number of message parts not found during synchronisation. 
 335.448 -	
 335.449 -	In the current implementation, this is always 0.
 335.450 -	*/
 335.451 -	TInt		iMessagePartsNotFound;
 335.452 -	/** Number of folders not found during synchronisation. 
 335.453 -	
 335.454 -	This can occur if the remote server returns an error when 
 335.455 -	a client attempts to select a folder during synchronisation. 
 335.456 -	*/
 335.457 -	TInt		iFoldersNotFound;
 335.458 -	/** Any error-code that the client needs to be informed of. */
 335.459 -	TInt		iErrorCode;
 335.460 -	};
 335.461 -
 335.462 -class TImap4CompoundProgress
 335.463 -/**
 335.464 -IMAP operation progress information.
 335.465 -
 335.466 -The class supplies both the two IMAP progress types, generic and synchronisation.
 335.467 -
 335.468 -The IMAP4 server MTM owns two IMAP4 sessions that are used independently of 
 335.469 -each other to perform 'background' and 'foreground' operations. In a typical 
 335.470 -situation, the user may be downloading the body parts of a message (populating) 
 335.471 -in the foreground whilst in the background a full synchronisation may be underway. 
 335.472 -In this scenario, the generic progress will give an indication of the 'foreground' 
 335.473 -activity and the synchronisation progress will give an indication of the 'background' 
 335.474 -progress. The synchronisation progress component of the compound progress 
 335.475 -will always show the synchronisation progress irrespective of whether the 
 335.476 -synchronisation is running in the foreground or the background. 
 335.477 -
 335.478 -@publishedAll
 335.479 -@released
 335.480 -*/
 335.481 -	{
 335.482 -public:
 335.483 -	/** Generic progress. */
 335.484 -	TImap4GenericProgress	iGenericProgress;
 335.485 -	/** Synchronisation progress. */
 335.486 -	TImap4SyncProgress		iSyncProgress;
 335.487 -	};
 335.488 -
 335.489 -
 335.490 -class CImImap4Settings : public CImBaseEmailSettings
 335.491 -/**
 335.492 -Settings for connection to and use of an IMAP4 mail server and its mailboxes.
 335.493 -
 335.494 -Messaging clients should use an instance of this class to specify and retrieve
 335.495 -configuration settings that are used by an IMAP4 service when executing email
 335.496 -operations.
 335.497 -
 335.498 -Service settings include:
 335.499 -
 335.500 -- server log on settings (user name and password)
 335.501 -- message header synchronisation strategy and synchronisation limits
 335.502 -- message getting options, such as maximum size. Note that these options 
 335.503 -  are not used by the IMAP MTM. They can be used by client applications to 
 335.504 -  store user preferences, and be used by the client when issuing get commands.
 335.505 -- miscelleanous settings, including whether IMAP IDLE should be used
 335.506 -
 335.507 -CImImap4Settings objects are created and accessed through
 335.508 -CEmailAccounts. CEmailAccounts can also be used to get the 
 335.509 -connection settings, such as the ISP to use, used to access an IMAP server.
 335.510 -
 335.511 -Settings for a service are associated with a service-type entry in the Message 
 335.512 -Server'smessage store. However the settings are not actually stored in the 
 335.513 -message store, but in the device's Central Repository data store. 
 335.514 -
 335.515 -@see CEmailAccounts
 335.516 -
 335.517 -@publishedAll
 335.518 -@released
 335.519 -*/
 335.520 -	{
 335.521 -public:
 335.522 -	IMPORT_C CImImap4Settings();
 335.523 -	IMPORT_C virtual ~CImImap4Settings();
 335.524 -	IMPORT_C void Reset();
 335.525 -	IMPORT_C const TPtrC8 LoginName() const;
 335.526 -	IMPORT_C void SetLoginNameL(const TDesC8& aLoginName);
 335.527 -	IMPORT_C const TPtrC8 Password() const;
 335.528 -	IMPORT_C void SetPasswordL(const TDesC8& aPassword);
 335.529 -	IMPORT_C const TPtrC8 FolderPath() const;
 335.530 -	IMPORT_C void SetFolderPathL(const TDesC8& aFolderPath);
 335.531 -	IMPORT_C const TPtrC8 SearchString() const;
 335.532 -	IMPORT_C void SetSearchStringL(const TDesC8& aSearchString);
 335.533 -	IMPORT_C TText8 PathSeparator() const;
 335.534 -	IMPORT_C void SetPathSeparator(const TText8 aPathSeparator);
 335.535 -	IMPORT_C TBool DisconnectedUserMode() const;
 335.536 -	IMPORT_C void SetDisconnectedUserMode(TBool aFlag);
 335.537 -	IMPORT_C void SetSynchronise(const TFolderSyncType aType);
 335.538 -	IMPORT_C TFolderSyncType Synchronise() const;
 335.539 -	IMPORT_C void SetSubscribe(const TFolderSubscribeType aType);
 335.540 -	IMPORT_C TFolderSubscribeType Subscribe() const;
 335.541 -	IMPORT_C TBool AutoSendOnConnect() const;
 335.542 -	IMPORT_C void SetAutoSendOnConnect(TBool aFlag);
 335.543 -	IMPORT_C TUint MaxEmailSize() const;
 335.544 -	IMPORT_C void SetMaxEmailSize(const TUint aMaxEmailSize);
 335.545 -	IMPORT_C TBool DeleteEmailsWhenDisconnecting() const;
 335.546 -	IMPORT_C void SetDeleteEmailsWhenDisconnecting(TBool aFlag);
 335.547 -	IMPORT_C TBool AcknowledgeReceipts() const;
 335.548 -	IMPORT_C void SetAcknowledgeReceipts(TBool aFlag);
 335.549 -	IMPORT_C TImap4GetMailOptions GetMailOptions() const;
 335.550 -	IMPORT_C void SetGetMailOptions(TImap4GetMailOptions aGetMailOptions);
 335.551 -	IMPORT_C CImImap4Settings& CopyL(const CImImap4Settings& aCImImap4Settings);
 335.552 -	IMPORT_C TBool operator==(const CImImap4Settings& aCImImap4Settings) const;
 335.553 -	IMPORT_C TInt32 InboxSynchronisationLimit() const;
 335.554 -	IMPORT_C void SetInboxSynchronisationLimit(const TInt32 aInboxSyncLimit);
 335.555 -	IMPORT_C TInt32 MailboxSynchronisationLimit() const;
 335.556 -	IMPORT_C void SetMailboxSynchronisationLimit(const TInt32 aMailboxSyncLimit);
 335.557 -	IMPORT_C TBool UpdatingSeenFlags() const;
 335.558 -	IMPORT_C void SetUpdatingSeenFlags(TBool aFlag);
 335.559 -	IMPORT_C TInt SyncRate() const;
 335.560 -	IMPORT_C void SetSyncRateL(TInt aSyncRate);
 335.561 -	IMPORT_C TUint FetchSize() const;
 335.562 -	IMPORT_C void SetFetchSizeL(TUint aFetchSizeBytes);
 335.563 -	IMPORT_C TBool ImapIdle() const;
 335.564 -	IMPORT_C void SetImapIdle(TBool aFlag);
 335.565 -	IMPORT_C TInt ImapIdleTimeout() const;
 335.566 -	IMPORT_C void SetImapIdleTimeoutL(TInt aIdleTimeout);
 335.567 -	IMPORT_C TImImap4PartialMailOptions PartialMailOptions() const;
 335.568 -	IMPORT_C void SetPartialMailOptionsL(TImImap4PartialMailOptions aPartialMailOptions); 
 335.569 -	IMPORT_C TInt32 BodyTextSizeLimit() const;
 335.570 -	IMPORT_C void SetBodyTextSizeLimitL(TInt32 aBodyTextSizeLimit);
 335.571 -	IMPORT_C TInt32 AttachmentSizeLimit() const;
 335.572 -	IMPORT_C void SetAttachmentSizeLimitL(TInt32 aAttachmentSizeLimit);
 335.573 -	IMPORT_C TBool UseExpunge() const;
 335.574 -	IMPORT_C void SetUseExpunge(TBool aFlag);
 335.575 -	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
 335.576 -	IMPORT_C TPtrC8 TlsSslDomain() const;
 335.577 -	IMPORT_C void SetUseSyncDownloadRules(TBool aFlag);
 335.578 -	IMPORT_C TBool UseSyncDownloadRules();
 335.579 -	IMPORT_C void SetFolderSyncDisabled(TBool aFlag);
 335.580 -	IMPORT_C TBool FolderSyncDisabled();
 335.581 -
 335.582 -private:
 335.583 -	class TImImap4SettingsExtension
 335.584 -		{
 335.585 -	public:
 335.586 -		inline TImImap4SettingsExtension();
 335.587 -	public:
 335.588 -		HBufC8* iLoginName;
 335.589 -		HBufC8* iPassword;
 335.590 -		HBufC8* iFolderPath;
 335.591 -		HBufC8*	iSearchString;
 335.592 -		HBufC8* iTlsSslDomain;
 335.593 -		TInt	iSyncRate;
 335.594 -		TInt	iImapIdleTimeout;
 335.595 -		TUint	iFetchSizeBytes;
 335.596 -		TImImap4PartialMailOptions	iPartialMailOptions;
 335.597 -		TInt32	iBodyTextSizeLimit;
 335.598 -		TInt32	iAttachmentSizeLimit;
 335.599 -		};
 335.600 -	
 335.601 -	inline TImImap4SettingsExtension* Extension() const;
 335.602 -	inline void CheckExtensionExistsL();
 335.603 -
 335.604 -	enum TImImap4EmailSettings
 335.605 -		{
 335.606 -		KImap4EmailSettingsClearFlag				= 0x00000000,
 335.607 -		KImap4BaseEmailSettingsLastUsedFlag			= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag, //0x00000002
 335.608 -		KImap4EmailDisconnectedModeFlag				= KImap4BaseEmailSettingsLastUsedFlag << 1, //0x00000004
 335.609 -		KImap4EmailAutoSendFlag						= KImap4EmailDisconnectedModeFlag << 1, //0x00000008
 335.610 -		KImap4EmailDeleteEmailsWhenDisconnecting	= KImap4EmailAutoSendFlag << 1, //0x00000010
 335.611 -		KImap4EmailAcknowledgeReceipts				= KImap4EmailDeleteEmailsWhenDisconnecting << 1, //0x00000020
 335.612 -		KImap4EmailUpdatingSeenFlags				= KImap4EmailAcknowledgeReceipts << 1, //0x00000040
 335.613 -		KImap4EmailIdleFlag							= KImap4EmailUpdatingSeenFlags << 1, //0x00000080
 335.614 -		KImap4EmailExpungeFlag						= KImap4EmailIdleFlag << 1,
 335.615 -		KImap4EmailUseSyncDownloadRules				= KImap4EmailExpungeFlag << 1, //0x00000200
 335.616 -		KImap4EmailSettingsFolderSyncDisabled		= KImap4EmailUseSyncDownloadRules << 1, //0x00000400
 335.617 -		KImap4EmailSettingsLastUsedFlag				= KImap4EmailSettingsFolderSyncDisabled
 335.618 -		};
 335.619 -
 335.620 -	TImImap4SettingsExtension*	iExtension; // renamed iReceiptAddress
 335.621 -
 335.622 -	TInt32  iInboxSyncLimit;
 335.623 -	TInt32  iMailboxSyncLimit;
 335.624 -
 335.625 -	TText8  iPathSeparator;
 335.626 -	TFolderSyncType iSynchroniseStrategy;
 335.627 -	TFolderSubscribeType iSubscriptionStrategy;
 335.628 -	TUint32	iMaxEmailSize;
 335.629 -	TImap4GetMailOptions iGetMailOptions;
 335.630 -	};
 335.631 -
 335.632 -
 335.633 -class TImImap4GetMailInfo
 335.634 -/**
 335.635 -Specifies options used when retrieving messages with IMAP.
 335.636 -
 335.637 -An TImImap4GetMailInfo is passed as a packaged parameter 
 335.638 -to CImap4ClientMtm::InvokeAsyncFunctionL() when a message
 335.639 -getting command is issued.
 335.640 -
 335.641 -Options include the maximum message size, and what 
 335.642 -message parts are required.  
 335.643 -
 335.644 -@see CImImap4GetMail
 335.645 -@see TImap4Cmds
 335.646 -
 335.647 -@publishedAll
 335.648 -@released
 335.649 -*/
 335.650 -	{
 335.651 -public:
 335.652 -	/** The maximum message size (bytes). 
 335.653 -	Messages of greater size are not fetched. */
 335.654 -	TInt32					iMaxEmailSize;
 335.655 -	/** The required message parts. */
 335.656 -	TImap4GetMailOptions	iGetMailBodyParts;
 335.657 -	/** The destination folder ID, specifying the
 335.658 -	target folder when messages are copied or moved. */
 335.659 -	TMsvId					iDestinationFolder;
 335.660 -	};
 335.661 -
 335.662 -/**
 335.663 -Specifies message criteria that are used as a filter when retrieving messages partially.
 335.664 -
 335.665 -Options include the maximum size for the whole message,
 335.666 -the maximum size for the body of the message,
 335.667 -the maximum size for the attachments with the message, and 
 335.668 -the message parts required.
 335.669 -
 335.670 -An TImImap4GetPartialMailInfo is passed as a packaged parameter 
 335.671 -to CImap4ClientMtm::InvokeAsyncFunctionL() when a message
 335.672 -populate command is issued.
 335.673 -
 335.674 -@see
 335.675 -CImImap4GetMail
 335.676 -
 335.677 -@publishedAll
 335.678 -@released
 335.679 -*/
 335.680 -
 335.681 -class TImImap4GetPartialMailInfo : public TImImap4GetMailInfo
 335.682 -	{
 335.683 -public:
 335.684 -	/** The maximum size limit for the total message (bytes). */
 335.685 -	TInt32		iTotalSizeLimit;
 335.686 -	/** The maximum size limit for body of the message (bytes). */
 335.687 -	TInt32		iBodyTextSizeLimit;
 335.688 -	/** The maximum size limit for the attachments  (bytes). */
 335.689 -	TInt32		iAttachmentSizeLimit;
 335.690 -	/** The required message parts. */
 335.691 -	TImImap4PartialMailOptions	iPartialMailOptions;
 335.692 -	};
 335.693 -	
 335.694 -inline CImImap4Settings::TImImap4SettingsExtension* CImImap4Settings::Extension() const
 335.695 -	{
 335.696 -	return iExtension;
 335.697 -	}
 335.698 -
 335.699 -inline void CImImap4Settings::CheckExtensionExistsL()
 335.700 -	{
 335.701 -	if (!iExtension)
 335.702 -		iExtension=new (ELeave) CImImap4Settings::TImImap4SettingsExtension;
 335.703 -	}
 335.704 -inline CImImap4Settings::TImImap4SettingsExtension::TImImap4SettingsExtension() 
 335.705 -: iLoginName(NULL) ,iPassword(NULL) ,iFolderPath(NULL),iSearchString(NULL),iTlsSslDomain(NULL), iSyncRate(KImapDefaultInboxSyncRate), iImapIdleTimeout(KImapDefaultIdleTimeout), iFetchSizeBytes(KImapDefaultFetchSizeBytes),
 335.706 -	iPartialMailOptions(ENoSizeLimits),iBodyTextSizeLimit(KMaxTInt),iAttachmentSizeLimit(KMaxTInt)
 335.707 -	{
 335.708 -	}
 335.709 -
 335.710 -
 335.711 -#endif // __IMAPSET_H__
   336.1 --- a/epoc32/include/imcmmain.h	Tue Mar 16 16:12:26 2010 +0000
   336.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   336.3 @@ -1,41 +0,0 @@
   336.4 -
   336.5 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   336.6 -// All rights reserved.
   336.7 -// This component and the accompanying materials are made available
   336.8 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   336.9 -// which accompanies this distribution, and is available
  336.10 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  336.11 -//
  336.12 -// Initial Contributors:
  336.13 -// Nokia Corporation - initial contribution.
  336.14 -//
  336.15 -// Contributors:
  336.16 -//
  336.17 -// Description:
  336.18 -//
  336.19 -
  336.20 -
  336.21 -
  336.22 -/**
  336.23 - @file
  336.24 - @publishedAll
  336.25 - @release
  336.26 -*/
  336.27 -
  336.28 -#if !defined (__IMCMMAIN_H__)
  336.29 -#define __IMCMMAIN_H__
  336.30 -
  336.31 -#if !defined (__E32STD_H__)
  336.32 -#include <e32std.h>
  336.33 -#endif
  336.34 -
  336.35 -#if !defined (__BARSC_H__)
  336.36 -#include <barsc.h>		// RResourceFile
  336.37 -#endif
  336.38 -
  336.39 -
  336.40 -GLREF_C void OpenResourceFileL(RResourceFile& aFile, RFs& anFs);
  336.41 -GLDEF_C void CloseResourceFile( TAny* aResourceFile );
  336.42 -
  336.43 -
  336.44 -#endif
   337.1 --- a/epoc32/include/imcvcodc.h	Tue Mar 16 16:12:26 2010 +0000
   337.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   337.3 @@ -1,360 +0,0 @@
   337.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   337.5 -// All rights reserved.
   337.6 -// This component and the accompanying materials are made available
   337.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   337.8 -// which accompanies this distribution, and is available
   337.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  337.10 -//
  337.11 -// Initial Contributors:
  337.12 -// Nokia Corporation - initial contribution.
  337.13 -//
  337.14 -// Contributors:
  337.15 -//
  337.16 -// Description:
  337.17 -//
  337.18 -
  337.19 -
  337.20 -#if !defined(__IMCVCODC_H__)
  337.21 -#define __IMCVCODC_H__
  337.22 -
  337.23 -#include <s32buf.h>
  337.24 -#include <s32stor.h>
  337.25 -#include <txtrich.h>
  337.26 -#include <miutatch.h>
  337.27 -#include <miutconv.h>
  337.28 -#include <miuthdr.h>
  337.29 -#include <mentact.h>		// CMsgActive
  337.30 -
  337.31 -#include <imcvdata.h>
  337.32 -#include <imcvtext.h>
  337.33 -#include <imutdll.h>
  337.34 -
  337.35 -#define KBase64 _L("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=")
  337.36 -#define KCharFormat _L("%c")
  337.37 -
  337.38 - // Maximum length allowed for an 'encoded-word' rfc2047
  337.39 -const TInt KEncodedWordMaxLength = 75;
  337.40 -
  337.41 -// All encoding information except data and charset name length. =?B?=?    => 7
  337.42 -const TInt KMaxEncodedInformationLength = 7;
  337.43 -
  337.44 -// Length of the field name, eg "Subject: ". This may change as other fields are processed.  
  337.45 -const TInt KMaxHeaderFieldNameLength = 12;
  337.46 -
  337.47 -const TInt KImCvFinished=(-1);
  337.48 -const TInt KImCvAdvance=(1);
  337.49 -
  337.50 -
  337.51 -// error states involved in sending attachments etc.
  337.52 -/**
  337.53 -@internalComponent
  337.54 -@deprecated
  337.55 -*/
  337.56 -enum TIattErrorCode
  337.57 -	{
  337.58 -	KImAttNoError = 0,
  337.59 -	KImAttFinished = 1
  337.60 -	};
  337.61 -
  337.62 -
  337.63 -/**
  337.64 -@internalComponent
  337.65 -@released
  337.66 -*/
  337.67 -enum TImBodyConvAlgorithm
  337.68 -	{
  337.69 -	ENoAlgorithm,
  337.70 -	EQPEncode,
  337.71 -	EQPDecode,
  337.72 -	EBase64Encode,
  337.73 -	EBase64Decode,
  337.74 -	EUUEncode,
  337.75 -	EUUDecode
  337.76 -	};
  337.77 -	
  337.78 -// Used in CImSendConvert
  337.79 -/**
  337.80 -@internalComponent
  337.81 -@deprecated
  337.82 -*/
  337.83 -enum TImSendEncoding 
  337.84 -	{ 
  337.85 -	ESendNoAlgorithm,
  337.86 -	ESendMimeAlgorithm
  337.87 -	};	
  337.88 -
  337.89 -struct SAttachmentInfo
  337.90 -/**
  337.91 -@internalComponent
  337.92 -@released
  337.93 -*/
  337.94 -	{
  337.95 -	TInt iSize;
  337.96 -	TFileName iName;
  337.97 -	TFileName iPath;
  337.98 -	TBool iComplete;
  337.99 -	};
 337.100 -
 337.101 -// Shared implementation code	
 337.102 -//----------------------------------------------------------------------------------------
 337.103 -class TImCodec
 337.104 -//----------------------------------------------------------------------------------------
 337.105 -/**
 337.106 -@internalAll
 337.107 -@released
 337.108 -*/
 337.109 -	{
 337.110 -protected:
 337.111 -	// base64 and UU coding defines.
 337.112 -	enum EMaskValues{ ESixBitMask = 0x3F, EEightBitMask = 0xFF };
 337.113 -	enum EMaskShiftValues{ ESix = 6, EFour = 4, ETwo = 2, EZero = 0 };
 337.114 -
 337.115 -public:
 337.116 -	virtual TInt Encode( const TDesC8& aSrcString, TDes8& rDestString)=0 ;
 337.117 -	virtual TBool Decode( const TDesC8& aInputLine, TDes8& rOutputLine)=0;
 337.118 -
 337.119 -protected:
 337.120 -	// TImCodec();
 337.121 -	inline TBool IsDigit( TChar aChar );
 337.122 -	};
 337.123 -
 337.124 -
 337.125 -// Interface for sending file data.
 337.126 -//----------------------------------------------------------------------------------------
 337.127 -class TImFileCodec : public TImCodec
 337.128 -//----------------------------------------------------------------------------------------
 337.129 -/**
 337.130 -@internalAll
 337.131 -@released
 337.132 -*/
 337.133 -	{
 337.134 -public:
 337.135 -	virtual TInt PrefixNextLineL( TDes8& rOutputLine, const TFileName& aName, TInt& rPaddingCount );
 337.136 -	virtual TInt PostfixNextLine( TDes8& rOutputLine, TInt& rPaddingCount );
 337.137 -	virtual void Initialise();
 337.138 -
 337.139 -protected:
 337.140 -	TInt iPrefixState;
 337.141 -	TInt iPostfixState;
 337.142 -	};	
 337.143 -
 337.144 -// Dummy, just copies
 337.145 -//----------------------------------------------------------------------------------------
 337.146 -class TImCodecNull :  public TImFileCodec
 337.147 -//----------------------------------------------------------------------------------------
 337.148 -/**
 337.149 -@internalComponent
 337.150 -@released
 337.151 -*/
 337.152 -	{
 337.153 -public:
 337.154 -	TInt Encode( const TDesC8& aSrcString, TDes8& rDestString);
 337.155 -	TBool Decode( const TDesC8& aInputLine, TDes8& rOutputLine);
 337.156 -	};
 337.157 -	
 337.158 -// Quoted-printable encoding/decoding
 337.159 -
 337.160 -//----------------------------------------------------------------------------------------
 337.161 -class TImCodecQP : public TImFileCodec
 337.162 -//----------------------------------------------------------------------------------------
 337.163 -/**
 337.164 -@internalAll
 337.165 -@released
 337.166 -*/
 337.167 -	{
 337.168 -public:
 337.169 -	IMPORT_C TImCodecQP();
 337.170 -	IMPORT_C TInt Encode( const TDesC8& aSrcString, TDes8& rDestString);
 337.171 -	IMPORT_C TBool Decode( const TDesC8& aInputLine, TDes8& rOutputLine);
 337.172 -
 337.173 -	// Not to be used anymore..
 337.174 -	IMPORT_C TInt EncodeRichText( const TDesC8& aInputLine, TDes8& rOutputLine);
 337.175 -	IMPORT_C TInt DecodeRichText( const TDesC8& aSrcString, TDes& rDestString );
 337.176 -
 337.177 -	// Functions which allow flexiblity. Can replace the '=' char or add characters..
 337.178 -	// to what is defined as 'plain.
 337.179 -	inline void AddPlainChar(const TDesC8&  aCharList );
 337.180 -	inline void AddEncodeChar(const TDesC8&  aCharList );
 337.181 -	inline void SetQPChar( TUint8 aChar);
 337.182 -
 337.183 -	inline TUint8 ReplacementChar( TChar aControlChar );
 337.184 -	inline TBool IsPlain( TChar aChar );
 337.185 -
 337.186 -private:
 337.187 -	TBool SmartBreak( TInt written, const TDesC8& pSource );
 337.188 -	inline TBool IsBreakable( TChar aChar);
 337.189 -	inline void AddSoftLineBreak(TDes8& aPtr, TInt& aPadding, TInt& aWritten);
 337.190 -	inline void AddSoftLineBreak(const TUint8* apEnd, TUint8* aPtr, TInt& aPadding, TInt& aWritten);
 337.191 -
 337.192 -private:
 337.193 -	TUint8 iQPCharacter;
 337.194 -	TPtrC8 iPlainCharList;  
 337.195 -	TPtrC8 iEncodeCharList;  
 337.196 -
 337.197 -	TInt iPaddingCount;
 337.198 -	};
 337.199 -
 337.200 -
 337.201 -
 337.202 -// Base64 coding/decoding
 337.203 -
 337.204 -//----------------------------------------------------------------------------------------
 337.205 -class TImCodecB64 : public TImFileCodec
 337.206 -//----------------------------------------------------------------------------------------
 337.207 -/**
 337.208 -@publishedAll
 337.209 -@released
 337.210 -*/
 337.211 -	{
 337.212 -private:
 337.213 -	// base64 coding defines
 337.214 -	enum{ EPadChar = 64 };
 337.215 -
 337.216 -public:
 337.217 -	IMPORT_C TImCodecB64();
 337.218 -	IMPORT_C TInt Encode( const TDesC8& aSrcString, TDes8& rDestString);
 337.219 -	IMPORT_C TBool Decode( const TDesC8& aSrcString, TDes8& rDestString);
 337.220 - 	IMPORT_C void  Initialise();
 337.221 -
 337.222 -protected:
 337.223 -	TInt DoEncode(const TDesC8& aSrcString, TDes8& rDestString, TBool aInsertLineBreaks);
 337.224 -
 337.225 -private:
 337.226 -	TInt iShiftStored;
 337.227 -	TInt iMaskShiftStored;
 337.228 -	};
 337.229 -
 337.230 -class TImCodecB64WithLineBreaks : public TImCodecB64
 337.231 -/**
 337.232 -@internalComponent
 337.233 -@released
 337.234 -*/
 337.235 -	{
 337.236 -public:
 337.237 -	TInt Encode(const TDesC8& aSrcString, TDes8& rDestString);
 337.238 -	};
 337.239 -
 337.240 -
 337.241 -// UU coding/decoding
 337.242 -
 337.243 -//----------------------------------------------------------------------------------------
 337.244 -class TImCodecUU : public TImFileCodec
 337.245 -//----------------------------------------------------------------------------------------
 337.246 -/**
 337.247 -@publishedAll
 337.248 -@released
 337.249 -*/
 337.250 -	{
 337.251 -private:
 337.252 -	// UU coding defines
 337.253 -
 337.254 -	enum{ ESpace = 32, EBackQuote = 96 };
 337.255 -
 337.256 -	enum TImBodyPostfix
 337.257 -		{
 337.258 -		EInvertedComma = 0,
 337.259 -		EEndString,
 337.260 -		EEndOfPostfix
 337.261 -		};
 337.262 -
 337.263 -public:
 337.264 -	IMPORT_C TImCodecUU();
 337.265 -	IMPORT_C TInt Encode( const TDesC8& aSrcString, TDes8& rDestString );
 337.266 -	IMPORT_C TBool Decode( const TDesC8& aSrcString, TDes8& rDestString );
 337.267 -	TInt PrefixNextLineL( TDes8& rOutputLine, const TFileName& aName, TInt& rPaddingCount );
 337.268 -	TInt PostfixNextLine( TDes8& rOutputLine, TInt& rPaddingCount );
 337.269 -private:
 337.270 -	void AppendFilenameL( TDes8& rOutputLine, const TFileName& aName );
 337.271 -	
 337.272 -	};
 337.273 -
 337.274 -
 337.275 -
 337.276 -
 337.277 -// For converting a text string to/from encoded form
 337.278 -// Note: 'Word' here has special meaning derived from the one defined in rfc2047.
 337.279 -// It refers to one encoding instance.
 337.280 -
 337.281 -//----------------------------------------------------------------------------------------
 337.282 -class CImConvertHeader : public CBase
 337.283 -//----------------------------------------------------------------------------------------
 337.284 -/**
 337.285 -@internalTechnology
 337.286 -@released
 337.287 -*/
 337.288 -	{
 337.289 -public:
 337.290 -	IMPORT_C static CImConvertHeader* NewL(CImConvertCharconv& aConverter);
 337.291 -	~CImConvertHeader();
 337.292 -
 337.293 -	IMPORT_C void SetMessageType(TBool aIsMIME); 
 337.294 -	IMPORT_C void DecodeAllHeaderFieldsL(CImHeader& rHeader); 
 337.295 -
 337.296 -	// Functions for decoding & converting descriptors
 337.297 -
 337.298 -	IMPORT_C void DecodeNonMIMEHeaderFieldL(const TDesC8& aBufIn, TDes& aBufOut); 
 337.299 -	IMPORT_C void DecodeHeaderFieldL(const TDesC8& aBufIn, TDes& aBufOut); 
 337.300 -	IMPORT_C void DecodeHeaderFieldL(const TDesC16& aBufIn, TDes& aBufOut); 
 337.301 -	IMPORT_C void ConvertHeaderFieldL(const TDesC16& aBufIn, RBuf8& aBufOut, TBool aIsAddressField); 
 337.302 -	
 337.303 -	// Header needed for retrieving encoding information, used in Send code.
 337.304 -    IMPORT_C void EncodeHeaderFieldL(const TDesC& aBufIn, RBuf8& aBufOut, 
 337.305 -            CArrayFix<TImHeaderEncodingInfo>* aInfoArray, TInt aState, TInt aArrayVal = 0);
 337.306 -
 337.307 -	IMPORT_C void EncodeHeaderFieldL(const TDesC& aBufIn, RBuf8& aBufOut,  
 337.308 -		                             const TUint aCharset, const TImHeaderEncodingInfo::TEncodingType aType, TBool aIsAddressField);
 337.309 -	
 337.310 -	IMPORT_C TBool FindEncodedWord(TPtrC8& aData, TInt& aInit,TInt& rStart, TInt& rEnd);
 337.311 -
 337.312 -	void Append(TDes& aBuffer, const TDesC8& aAddition);
 337.313 -	inline CImConvertCharconv& CharConv();
 337.314 -
 337.315 -	IMPORT_C TUint OverrideCharset() const;
 337.316 -	IMPORT_C void SetOverrideCharset(TUint aCharset);
 337.317 -
 337.318 -private:
 337.319 -	void ConstructL();
 337.320 -	CImConvertHeader(CImConvertCharconv&);
 337.321 -	// Functions dealing only with single 'encoded-word's
 337.322 -	void GetCharsetAndEncodeDataL(const TDesC& aBufIn, RBuf8& aBufOut, TImHeaderEncodingInfo& aInfo);
 337.323 -	void EncodeWordL(const TDesC& aBufIn, RBuf8& aBufOut, TImHeaderEncodingInfo& aInfo,
 337.324 -						const TDesC8& aCharsetName, RBuf8& aEncodedWord);
 337.325 -
 337.326 -	TBool DecodeWordL(const TDesC8& aBufIn, TDes& aBufOut, TInt rRemainder); 
 337.327 -	void DecodeRecipientListL( CDesCArray& aArray);
 337.328 -	void DecodeFieldL(const TDesC& aField);
 337.329 -
 337.330 -	TBool DoCharsetConversionL(const TDesC& aDataToConvert, RBuf8& aEncodedWord);
 337.331 -
 337.332 -	void DoEncodingL(RBuf8& aEncodedWord, TImHeaderEncodingInfo& aInfo);
 337.333 -
 337.334 -	TInt AddEncodedWordInfoL(const TDesC8& aEncodedWord, RBuf8& aBufOut, 
 337.335 -							 TImHeaderEncodingInfo& aInfo, const TDesC8& aCharsetName);
 337.336 -
 337.337 -	TBool IsAscii( TUint aChar ) const;
 337.338 -	TBool ExtractTextToEncode(const TDesC& aBufIn, TInt& rStart, TInt& rEnd, TBool aIsAddressField);
 337.339 -	void Insert(TDes8& aBuffer, const TDesC16& aInsert);
 337.340 -
 337.341 -private:
 337.342 -	TImHeaderEncodingInfo iEncodingInfo;
 337.343 -	CImConvertCharconv& iCharConv;
 337.344 -
 337.345 -	// Get access to QP/ Base64 encoding/decoding functions
 337.346 -	TImCodecB64	 iB64Codec;
 337.347 -	TImCodecQP	 iQPCodec;
 337.348 -
 337.349 -	// Need in the narrow build, to check if possible to convert to/from
 337.350 -	// the machines character set.
 337.351 -	TUint iCharacterSetId; 
 337.352 -
 337.353 -	CImHeader* iHeader;	
 337.354 -
 337.355 -	// Converted static variables used in EncodeWordL()
 337.356 -	TBool	isMIMEMessageHeader;
 337.357 -	TUint   iOverrideCharset;
 337.358 -	};
 337.359 -
 337.360 -
 337.361 -#include <imcvcodc.inl>
 337.362 -
 337.363 -#endif
   338.1 --- a/epoc32/include/impcmtm.h	Tue Mar 16 16:12:26 2010 +0000
   338.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   338.3 @@ -1,416 +0,0 @@
   338.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   338.5 -// All rights reserved.
   338.6 -// This component and the accompanying materials are made available
   338.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   338.8 -// which accompanies this distribution, and is available
   338.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  338.10 -//
  338.11 -// Initial Contributors:
  338.12 -// Nokia Corporation - initial contribution.
  338.13 -//
  338.14 -// Contributors:
  338.15 -//
  338.16 -// Description:
  338.17 -// Client MTM for the IMAP4 protocol
  338.18 -// 
  338.19 -//
  338.20 -
  338.21 -
  338.22 -#if !defined (__IMPCMTM_H__)
  338.23 -#define __IMPCMTM_H__
  338.24 -
  338.25 -#if !defined (__MTCLBASE_H_)
  338.26 -#include <mtclbase.h>
  338.27 -#endif
  338.28 -
  338.29 -#if !defined (__MIUTHDR_H_)
  338.30 -#include <miuthdr.h>
  338.31 -#endif
  338.32 -
  338.33 -#if !defined (__MIUTPARS_H__)
  338.34 -#include <miutpars.h>		//TImMessageField
  338.35 -#endif
  338.36 -
  338.37 -#if !defined (__IMAPSET_H__)
  338.38 -#include <imapset.h>
  338.39 -#endif
  338.40 -
  338.41 -#if !defined (__IMAPCMDS_H__)
  338.42 -#include <imapcmds.h>
  338.43 -#endif
  338.44 -
  338.45 -#if !defined(__OFFOP_H__)
  338.46 -#include <offop.h>
  338.47 -#endif
  338.48 -
  338.49 -#if !defined(__MIUTMSG_H__)
  338.50 -#include <miutmsg.h>
  338.51 -#endif
  338.52 -
  338.53 -
  338.54 -
  338.55 -// Forward declarations.
  338.56 -class CImap4ClientSessionObserver;
  338.57 -class CImImap4GetMail;
  338.58 -class CImEmailAutoSend;
  338.59 -
  338.60 -/////////////////////////////////////////////////////////////////////////////
  338.61 -// Imap4 Client MTM  
  338.62 -class CImap4ClientMtm : public CBaseMtm, public MImUndoOffLineOperation
  338.63 -
  338.64 -/** IMAP4 client MTM interface, providing access to the email services using the IMAP4 
  338.65 -protocol.
  338.66 -
  338.67 -The class provides support for:
  338.68 -
  338.69 -- connecting to remote IMAP4 mail servers
  338.70 -- synchronising message headers with mailboxes on these servers
  338.71 -- getting message bodies and attachments
  338.72 -- copying and moving messages
  338.73 -- creating messages that forward or reply to IMAP4 messages
  338.74 -- server notification of new messages using IMAP IDLE
  338.75 -- queueing operations requested when there is no connection to a mail server, to be 
  338.76 -performed when a connection is made (offline operations).
  338.77 -
  338.78 -Note that CImap4ClientMtm does not support many of the generic functions defined by 
  338.79 -the @c CBaseMtm base class. In particular:
  338.80 -
  338.81 -- Message address information, body, subjects, and attachments are not manipulated 
  338.82 -through CImap4ClientMtm. Consequently, SaveMessageL() has an empty 
  338.83 -implementation, and is not used. Message access and manipulation is instead done 
  338.84 -through CImEmailMessage, which understands the email specific message formats, 
  338.85 -including MHTML (RFC 2557). The RFC 822 email header, which includes subject and 
  338.86 -address information, is encapsulated in a CImHeader object, which can be obtained from 
  338.87 -a CImEmailMessage object. IMAP also has its own specific flags, such as draft, 
  338.88 -answered, and deleted: this can be accessed through TMsvEmailEntry, which extends the 
  338.89 -message server's generic TMsvEntry to add email-specific information.
  338.90 -
  338.91 -- The idea of a default service used by base class functions DefaultServiceL(), 
  338.92 -ChangeDefaultServiceL(), and RemoveDefaultServiceL() is not supported.
  338.93 -
  338.94 -IMAP specific commands are issued through the InvokeAsyncFunctionL() function, with 
  338.95 -the commands defined in the #TImap4Cmds enumeration. Details of particular commands 
  338.96 -are given in the documentation for that enumeration, but the following describes some of 
  338.97 -the key concepts required to use those commands. Note that usually these commands do 
  338.98 -not correspond directly to the IMAP protocol commands described in RFC 3501. Instead, 
  338.99 -they are at a higher level, to simplify the logic required for an email client program. 
 338.100 -
 338.101 ---------------------------------------
 338.102 -
 338.103 -Connection and services
 338.104 -
 338.105 -Settings for connection to and use of an IMAP4 mail server and its mailboxes are 
 338.106 -encapsulated in an CImImap4Settings object, created and accessed through 
 338.107 -CEmailAccounts. Preferences for the network connection (e.g. the ISP to use) to be made 
 338.108 -to access an IMAP server are also accessed through CEmailAccounts.
 338.109 -
 338.110 -The settings are associated with a service-type entry in the Message Server's message 
 338.111 -store. Message and folder type entries under the service entry store a local copy of the 
 338.112 -mailboxes and messages that are present on an IMAP server. For this reason, the service 
 338.113 -is sometimes referred to as the local mirror of an IMAP server.
 338.114 -
 338.115 -By default, it is assumed that the user has a primary mailbox on the server called INBOX, 
 338.116 -though this can be changed if necessary using CImImap4Settings::SetFolderPathL(). (To 
 338.117 -avoid confusion, the term "Inbox" used in the IMAP MTM documentation refers to this 
 338.118 -mailbox, rather than the Message Server's standard local Inbox folder.)
 338.119 -
 338.120 -The settings store the user's log-in details required to access the IMAP server, and other 
 338.121 -settings not related to connection, but which affect the behaviour of commands, such as 
 338.122 -synchronisation, made to the service.
 338.123 -
 338.124 ---------------------------------------
 338.125 -
 338.126 -Synchronisation
 338.127 -
 338.128 -The IMAP4 MTM provides the means to synchronise message headers on a remote 
 338.129 -IMAP mailboxes with the messages headers on the phone. Note that synchronisation only 
 338.130 -refers to message headers. Once headers are synchronised, populate operations (i.e. 
 338.131 -getting the message bodies) can be done.
 338.132 -
 338.133 -The basic steps involved in a full synchronisation are:
 338.134 -
 338.135 -- The headers of messages in the Inbox are synchronised. 
 338.136 -- The local list of folders is synchronised with those existing on the remote IMAP service. 
 338.137 -Depending on the service settings, the local or remote settings of subscribed mailboxes 
 338.138 -may be updated (see below for more information). 
 338.139 -- The headers of messages in subscribed folders are synchronised. 
 338.140 -
 338.141 -Queued offline operations (see below) pending on the Inbox or subscribed folders are 
 338.142 -performed prior to the relevant folder being synchronised.
 338.143 -
 338.144 -Synchronisations can be performed in the background or the foreground. A foreground 
 338.145 -synchronisation means no other requests, such as message fetching, can be made to the 
 338.146 -MTM, until the synchronisation is complete. A background synchronisation allows some 
 338.147 -types of command to be given while it is in progress. Commands that write to the remote 
 338.148 -server are not allowed however while a background synchronisation is in progress. A 
 338.149 -client is informed of the state of a background synchronisation through the 
 338.150 -MMsvImapConnectionObserver callback interface.
 338.151 -
 338.152 -Synchronisations commands are made through  
 338.153 -CImap4ClientMtm::InvokeAsyncFunctionL(). There a variety of commands available 
 338.154 -that give different options for compounding synchronisation
 338.155 -with other commands, such as connection, and synchronising only particular folders. See 
 338.156 -TImap4Cmds for details. Progress information for synchronisation commands can be 
 338.157 -obtained from the CMsvOperation object returned by the InvokeAsyncFunctionL(). 
 338.158 -Synchronisation progress information is encapsulated in a TImap4SyncProgress object.
 338.159 -
 338.160 -Settings that affect how a synchronisation is performed include:
 338.161 -
 338.162 -- Subscriptions: when an IMAP service had been synchronised, the Messaging server will 
 338.163 -contain entries for all folders on the remote server. These entries will be marked invisible 
 338.164 -within the TMsvEntry for the folder, implying that they should be invisible to the user. 
 338.165 -Messages in these folders are not synchronised unless the folder has been subscribed to. 
 338.166 -Note a folder subscription can be set either locally (i.e. just on the phone), using 
 338.167 -the #KIMAP4MTMLocalSubscribe command, or remotely (on the server), possibly through email 
 338.168 -clients on other devices. A service can be set to synchronise folders using either or both 
 338.169 -of these types of subscription (CImImap4Settings::SetSynchronise()). Local and remote 
 338.170 -subscriptions can themselves be synchronised in various ways (CImImap4Settings::SetSuscribe()).
 338.171 -
 338.172 -- Filters: a filter prevents certain e-mail messages from being synchronised onto the 
 338.173 -device when a client requests a synchronisation. Filters can include anything permitted by 
 338.174 -the IMAP Search command, including date, size, content, and message flags.
 338.175 -
 338.176 -- Limits: service settings can limit the number of emails synchronised to the inbox 
 338.177 -(CImImap4Settings::SetInboxSynchronisationLimit()), and to other folders 
 338.178 -(CImImap4Settings::SetMailboxSynchronisationLimit()).
 338.179 -
 338.180 -- Sync rate: one of the synchronisation commands 
 338.181 -(KIMAP4MTMConnectAndSyncCompleteAfterDisconnect) periodically resynchronises 
 338.182 -the Inbox until the service is disconnected. CImImap4Settings::SyncRate() sets the 
 338.183 -refresh period.
 338.184 -
 338.185 ---------------------------------------
 338.186 -
 338.187 -Getting and copying messages
 338.188 -
 338.189 -After messages headers have been synchronised, message bodies and attachments can be 
 338.190 -fetched from the remote email server. Getting message parts and saving them in the 
 338.191 -mirror service is calling populating them.
 338.192 -
 338.193 -Commands for these actions can be made through  
 338.194 -CImap4ClientMtm::InvokeAsyncFunctionL(). There are a large number of commands, 
 338.195 -for different combinations of these options:
 338.196 -
 338.197 -- action type: whether to just populate messages, or to also copy or move them to a local 
 338.198 -folder 
 338.199 -- message selection: whether to get all, new, or selected messages
 338.200 -- connection: whether to make a new connection or assume an existing connection
 338.201 -- disconnect: whether to disconnect or stay online after operation is complete
 338.202 -
 338.203 -For the populate type commands, further options can be set that control the message 
 338.204 -getting behaviour.  Basic options control, encapsulated in TImImap4GetMailInfo, specify 
 338.205 -whether body text and/or attachments are fetched, and a maximum message size. There 
 338.206 -are also options, encapsulated in TImImap4GetPartialMailInfo, that allow size limits to 
 338.207 -be separately specified for body text and/or attachments. If the the body is larger than the 
 338.208 -limit, then the body is partially downloaded up to the limit. Only attachments smaller 
 338.209 -than the specified size are downloaded. A partially downloaded message can later be 
 338.210 -fully downloaded.
 338.211 -
 338.212 -For the copy or move type commands,  a TImImap4GetMailInfo parameter is supplied, in 
 338.213 -order to specify the destination folder for the messages, and a maximum message size. 
 338.214 -
 338.215 -Progress information for getting commands can be obtained from the CMsvOperation 
 338.216 -object returned by the InvokeAsyncFunctionL(). Progress information is encapsulated in 
 338.217 -a TImap4GenericProgress object.
 338.218 -
 338.219 -Fetching and then copying or moving specified messages can also be performed by using 
 338.220 -the standard Messaging Framework @c CMsvEntry::CopyL() and @c 
 338.221 -CMsvEntry::MoveL() functions on entries under the remote service. If these functions are 
 338.222 -used, then the entire message is fetched without size limits.
 338.223 -
 338.224 -CMsvEntry functions can also be used to:
 338.225 -
 338.226 -- create a folder on a remote server
 338.227 -- delete messages
 338.228 -- copy or move messages from a local folder into a remote folder
 338.229 -- copy or move messages between remote folders
 338.230 -
 338.231 -Note that changing an existing entry through CMsvEntry is not supported. An MTM-
 338.232 -specific command #KIMAP4MTMRenameFolder is instead provided to rename a remote 
 338.233 -folder.
 338.234 -
 338.235 -The page "CMsvEntry functions for IMAP4 message entries", linked to in the "See also" 
 338.236 -section below, provides more details on using CMsvEntry.
 338.237 -
 338.238 ---------------------------------------
 338.239 -
 338.240 -Offline operations
 338.241 -
 338.242 -Some operations can only be performed while online, while other commands may 
 338.243 -be stored while offline for processing when next connected. An attempt to perform a 
 338.244 -command while offline that requires the MTM to be connected results in immediate 
 338.245 -completion with the error code KErrDisconnected.
 338.246 -
 338.247 -Permitted offline operations include:
 338.248 -
 338.249 -- copy
 338.250 -- move
 338.251 -- delete
 338.252 -
 338.253 -Queued offline operations are usually performed when a connection is made, prior to the  
 338.254 -relevant folder being synchronised. Delete operations can alternatively be set to be done 
 338.255 -on disconnection using the service setting 
 338.256 -CImImap4Settings::SetDeleteEmailsWhenDisconnecting().
 338.257 -
 338.258 -Note that:
 338.259 -- Offline operations are only permitted if the service setting SetDisconnectedUserMode() 
 338.260 -is true.
 338.261 -- It is possible to undo pending offline operations using the commands 
 338.262 -#KIMAP4MTMCancelOffLineOperations and #KIMAP4MTMUndeleteAll.
 338.263 -
 338.264 ---------------------------------------
 338.265 -
 338.266 -IMAP IDLE support
 338.267 -
 338.268 -IMAP IDLE (RFC 2177) is an optional expansion of the IMAP email accessing protocol 
 338.269 -that allows the server to send updates to the client that messages have been created or 
 338.270 -deleted in real time. The IDLE command is sent from the client to the server when the 
 338.271 -client is ready to accept unsolicited mailbox update messages. Whether the client requests 
 338.272 -the server to provide IDLE support is set in the CImImap4Settings::SetImapIdle() service 
 338.273 -setting. When the IMAP MTM receives such a notification, it synchronises the changed 
 338.274 -folder. Email clients can be notified of such changes by setting a MMsvEntryObserver 
 338.275 -observer on a folder.
 338.276 -
 338.277 -@publishedAll
 338.278 -@released
 338.279 -*/
 338.280 -	{
 338.281 -public:
 338.282 -   	IMPORT_C static CImap4ClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aSession);
 338.283 -	
 338.284 -	~CImap4ClientMtm();
 338.285 -	void HandleEntryEvent(TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 338.286 -	void StoreL(); // uses a CMsvStore from the Session
 338.287 -	void RestoreL();
 338.288 -	CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
 338.289 -	CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
 338.290 -	TUint ValidateMessage(TUint aPartList);
 338.291 -	TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
 338.292 -	void SaveMessageL(); 
 338.293 -	void LoadMessageL();
 338.294 -	IMPORT_C void StoreSettingsL();	// uses a CMsvStore from the session
 338.295 -	IMPORT_C void RestoreSettingsL();
 338.296 -
 338.297 -	// --- RTTI functions ---
 338.298 -	TInt QueryCapability(TUid aCapability, TInt& aResponse);
 338.299 -	void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
 338.300 -	CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
 338.301 -	// Addressees have no meaning in the text mtm.
 338.302 -	void AddAddresseeL(const TDesC& aRealAddress);
 338.303 -	void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
 338.304 -	void RemoveAddressee(TInt aIndex);
 338.305 -
 338.306 -	// Attachment functions to support the SendAs API
 338.307 -
 338.308 -	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 338.309 -	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 338.310 -	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 338.311 -	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
 338.312 -	IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 338.313 -	IMPORT_C void CreateMessageL(TMsvId aServiceId);
 338.314 -	
 338.315 -	IMPORT_C virtual TMsvId DefaultServiceL() const;
 338.316 -	IMPORT_C virtual void RemoveDefaultServiceL();
 338.317 -	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 338.318 -
 338.319 -public: // Returning a list of all the offline operations for a service entry.
 338.320 -    IMPORT_C CImOperationQueueList* QueueListL(CMsvEntry& aServiceEntry);
 338.321 -public:  // Wrapper to settings
 338.322 -    IMPORT_C const CImImap4Settings& Imap4Settings() const;
 338.323 -    IMPORT_C void SetImap4SettingsL(const CImImap4Settings& aSettings);
 338.324 -public: // inherited from MUndoOffLine
 338.325 -    virtual void UndoOffLineChangesL(const CImOffLineOperation& aDeleted, TMsvId aFolderId); 
 338.326 -protected:
 338.327 -	CImap4ClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aSession);
 338.328 -	void ConstructL();
 338.329 -	void ContextEntrySwitched(); // called after the context of this instance has been changed to another entry
 338.330 -
 338.331 -private:
 338.332 -	TBool ValidateAddress(const TPtrC& anAddress);
 338.333 -	void SendOnNextConnectionL();
 338.334 -	TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
 338.335 -	void FilterAllOrNewMailsL(TInt aFunctionId,const CMsvEntrySelection& aSelection,TDes8& aParameter);
 338.336 -	void FilterMailSelectionL(const CMsvEntrySelection& aSelection,TDes8& aParameter);
 338.337 -	CMsvOperation* CopyMoveOrPopulateL(TInt aFunctionId,TDes8& aParameter,TRequestStatus& aCompletionStatus);
 338.338 -	void ConvertToPartialPopulate(TDes8& aParameter);
 338.339 -	// To check whether a partial fetch or full fetch of message has to be done.
 338.340 -	TBool IsPartialPopulate(TDes8& aParameter);
 338.341 -
 338.342 -private:
 338.343 -	CImImap4Settings iImImap4Settings;
 338.344 -	TImMessageField iTImMessageField;
 338.345 -	CImap4ClientSessionObserver* iImap4ClientSessionObserver;
 338.346 -	HBufC* iEmailAddressFormatString;	// defines format of email address used by "Send as" API eg _L("/"%S/" <%S>")
 338.347 -	CImHeader* iHeader;
 338.348 -	CMsvEntrySelection* iMsvEntrySelection;
 338.349 -	CImImap4GetMail*	iImIMAP4GetMail;
 338.350 -	CImEmailOperation*	iImEmailOperation;
 338.351 -	TPckgBuf<TImImap4GetPartialMailInfo>	iImap4GetPartialMailInfo;
 338.352 -	};
 338.353 -
 338.354 -class CImImap4GetMail : public CMsvOperation
 338.355 -/** Encapsulates an operation to copy, move, and populate (i.e. download the full 
 338.356 -message body) IMAP4 emails from the remote inbox to any local folder.
 338.357 -
 338.358 -Note that the same operations are available by calling CImap4ClientMtm::InvokeAsyncFunctionL() 
 338.359 -with a suitable command. 
 338.360 -
 338.361 -@publishedAll
 338.362 -@released
 338.363 -*/
 338.364 -	{
 338.365 -public:
 338.366 -	IMPORT_C CMsvOperation* GetMailL(TInt aFunctionId, CImap4ClientMtm& aImap4ClientMtm, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aImap4GetMailInfo, TRequestStatus& aObserverRequestStatus);
 338.367 -	~CImImap4GetMail();
 338.368 -	void DoCancel();
 338.369 -	void RunL();
 338.370 -	const TDesC8& ProgressL();
 338.371 -	const TDesC8& FinalProgress();
 338.372 -private:
 338.373 -	CImImap4GetMail(CMsvSession& aMsvSession, CImap4ClientMtm& aImap4ClientMtm, TRequestStatus& aObserverRequestStatus);
 338.374 -	void ConstructL(TInt aFunctionId, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aImap4GetMailInfo);
 338.375 -	void SelectNextStateL();					// selects next state to go to
 338.376 -	void ChangeStateL();					// initiates the next state operation
 338.377 -	void SelectAndChangeToNextStateL();
 338.378 -	void RequestComplete(TInt aError);
 338.379 -	void Complete();
 338.380 -	void ConnectToMailboxL();
 338.381 -	void CopyMoveNewMessagesL(TBool aCopy);
 338.382 -	void CopyMoveMessageSelectionL(TBool aCopy);
 338.383 -	void CopyMoveAllMessagesL(TBool aCopy);
 338.384 -	void PopulateNewMessagesL();
 338.385 -	void PopulateAllMessagesL();
 338.386 -	void PopulateMessageSelectionL();
 338.387 -	void DisconnectFromMailboxL();
 338.388 -	void ResetProgress();
 338.389 -	void StoreProgressL();
 338.390 -private:
 338.391 -	enum TImImap4GetMailState
 338.392 -		{
 338.393 -		EConnectToMailbox,
 338.394 -		ECopyNewMessages,
 338.395 -		EMoveNewMessages,
 338.396 -		EPopulateNewMessages,
 338.397 -		ECopyMessageSelection,
 338.398 -		EMoveMessageSelection,
 338.399 -		EPopulateMessageSelection,
 338.400 -		ECopyAllMessages,
 338.401 -		EMoveAllMessages,
 338.402 -		EPopulateAllMessages,
 338.403 -		EDisconnectFromMailbox,
 338.404 -		EFinished
 338.405 -		};
 338.406 -	
 338.407 -	CImap4ClientMtm&				iImap4ClientMtm;
 338.408 -	CMsvEntrySelection*				iMsvEntrySelection;
 338.409 -	CMsvOperation*					iMsvOperation;
 338.410 -
 338.411 -	TImap4GenericProgress			iProgress;
 338.412 -	TImap4GenericProgress			iErrorProgress;
 338.413 -	TImImap4GetMailState			iState;
 338.414 -	TInt							iCommand;
 338.415 -	TPckgBuf<TImap4GenericProgress>	iProgressBuf;
 338.416 -	TPckgBuf<TImImap4GetPartialMailInfo>	iImap4GetPartialMailInfo;
 338.417 -	};
 338.418 -
 338.419 -#endif // __IMPCMTM_H__
   339.1 --- a/epoc32/include/imsk.h	Tue Mar 16 16:12:26 2010 +0000
   339.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   339.3 @@ -1,605 +0,0 @@
   339.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   339.5 -// All rights reserved.
   339.6 -// This component and the accompanying materials are made available
   339.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   339.8 -// which accompanies this distribution, and is available
   339.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  339.10 -//
  339.11 -// Initial Contributors:
  339.12 -// Nokia Corporation - initial contribution.
  339.13 -//
  339.14 -// Contributors:
  339.15 -//
  339.16 -// Description:
  339.17 -// This file contains the API definition for the class CImTextServerSession.
  339.18 -// This class creates sockets and is responsible for transmitting data between client and the server 
  339.19 -// 
  339.20 -//
  339.21 -
  339.22 -
  339.23 -
  339.24 -/**
  339.25 - @file
  339.26 -*/
  339.27 -
  339.28 -
  339.29 -#ifndef __IMSK_H__
  339.30 -#define __IMSK_H__
  339.31 -
  339.32 -#include <e32base.h>
  339.33 -#include <es_sock.h>
  339.34 -#include <in_sock.h>
  339.35 -#include <f32file.h>
  339.36 -#include <mentact.h>
  339.37 -#include <miutlog.h>
  339.38 -#include <miut_err.h>
  339.39 -#include <miuthdr.h>
  339.40 -
  339.41 -#ifdef _DEBUG
  339.42 -#define __IMSK_SIMULATION
  339.43 -#endif
  339.44 -
  339.45 -// Enable Scripting in Debug Builds only
  339.46 -#ifdef _DEBUG
  339.47 -#define __IMSK_SCRIPTING
  339.48 -#endif
  339.49 -
  339.50 -const TInt EActivePriorityHigh = 1;
  339.51 -const TInt KCarriageLineFeedLength=2;
  339.52 -/** Max numeric IP address len = "0:0:0:0:0:0:194.217.242.23" = 45 chars */
  339.53 -const TInt KImskIPAddressLen=45;				// Max numeric IP address len = "255.255.255.255" = 15 chars
  339.54 -
  339.55 -/** Maximum buffer size of the received data 
  339.56 -@internalTechnology
  339.57 -@released
  339.58 -*/
  339.59 -typedef TBuf8<KImMailMaxBufferSize> TImMailBuffer;
  339.60 -
  339.61 -/** received buffer data line type
  339.62 -@internalTechnology
  339.63 -@released
  339.64 -*/
  339.65 -enum TImLineType
  339.66 -	{ 
  339.67 -	ECRLFTerminated, 
  339.68 -	EBufferTooSmall, 
  339.69 -	EReceiveBufferFull,
  339.70 -	EReceiveBufferEmpty
  339.71 -	};
  339.72 -
  339.73 -
  339.74 -class CImLog;
  339.75 -class CImTextServerScript;
  339.76 -class CImIAPPreferences;
  339.77 -class CImConnect;
  339.78 -class CSecureSocket;
  339.79 -class CImSocketIdleTimer;
  339.80 -
  339.81 -/**
  339.82 -Creates/opens socket and sends and receives data.
  339.83 -
  339.84 -@publishedAll
  339.85 -@released	
  339.86 -*/
  339.87 -class CImTextServerSession : public CMsgActive
  339.88 -	{
  339.89 -public:
  339.90 -	enum TImOperationMode{
  339.91 -		EImServerMode,
  339.92 -		EImClientMode
  339.93 -		};
  339.94 -
  339.95 -/**
  339.96 -	//cat				Construction
  339.97 -	@fn				NewL()
  339.98 -	Intended Usage	:	Static factory constructor. Uses two phase construction and 
  339.99 -						leaves nothing on the CleanupStack.
 339.100 -	@since			6.0
 339.101 -	@leave			KErrNoMemory.
 339.102 -	@return			A pointer to the newly created CImTextServerSession object. 
 339.103 -	@pre 			None
 339.104 -	@post			A fully constructed and initialised CImTextServerSession object.
 339.105 -	
 339.106 - */
 339.107 -	IMPORT_C static CImTextServerSession *NewL();
 339.108 -
 339.109 -	/**
 339.110 -	@internalTechnology
 339.111 -	@released
 339.112 -	*/
 339.113 -	IMPORT_C static CImTextServerSession* NewL(RSocketServ& aSocketServ, CImConnect& aConnect);
 339.114 -
 339.115 -/**
 339.116 -	//cat				Construction
 339.117 -	@fn				NewL(TInt aSendIdleTime, TInt aReceiveIdleTime)
 339.118 -	Intended Usage	:	Static factory constructor. Uses two phase construction and 
 339.119 -						leaves nothing on the CleanupStack.
 339.120 -	@since			7.0s
 339.121 -	@param			aSendIdleTime is the time for which the idle timer runs (for a send)
 339.122 -	@param			aReceiveIdleTime is the time for which the idle timer runs (for a recieve)
 339.123 -	@leave			KErrNoMemory.
 339.124 -	@return			A pointer to the newly created CImTextServerSession object. 
 339.125 -	@pre 				None
 339.126 -	@post				A fully constructed and initialised CImTextServerSession object.
 339.127 - */
 339.128 -	IMPORT_C static CImTextServerSession* NewL(TInt aSendIdleTime, TInt aReceiveIdleTime);
 339.129 -
 339.130 -	/**
 339.131 -	@internalTechnology
 339.132 -	@released
 339.133 -	*/
 339.134 -	IMPORT_C static CImTextServerSession* NewL(TInt aSendIdleTime, TInt aReceiveIdleTime, RSocketServ& aSocketServ, CImConnect& aConnect);
 339.135 -
 339.136 -/**
 339.137 -	//cat				Destruction
 339.138 -	@fn				~CImTextServerSession()
 339.139 -	Intended Usage	:	Destructor.
 339.140 -	@since			6.0	
 339.141 - */
 339.142 -	~CImTextServerSession();
 339.143 -
 339.144 -/**
 339.145 -	@fn				QueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue)
 339.146 -	Intended Usage	:	Queue a connect assuming the socket is successfully opened.
 339.147 -	Error Condition	:	KErrNoMemory
 339.148 -	@since			6.0
 339.149 -	@param			aStatus	Asynchronous completion status
 339.150 -	@param			anAddressDesc is the IP address		
 339.151 -	@param			aIAPPreferences is the IAP connection preference to be used		
 339.152 -	@param			aPortNum is the port number eg. 143, 25, 110.
 339.153 -	@param			aEnableTimeout Not used		
 339.154 -	@pre 			None
 339.155 -	@post			connection is ready to send and receive data.
 339.156 - */
 339.157 -	IMPORT_C void QueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue);
 339.158 -
 339.159 -	IMPORT_C void QueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, const TDesC8& aSSLDomainName);
 339.160 -
 339.161 -/**
 339.162 -	@fn				SSLQueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue)
 339.163 -	Intended Usage	:	Queue a wrapped SSL connect on an socket assuming the socket is successfully opened.
 339.164 -	Error Condition	:	KErrNoMemory, EImskSocketOpen
 339.165 -	@since			7.0s
 339.166 -	@param			aStatus	Asynchronous completion status
 339.167 -	@param			anAddressDesc is the IP address		
 339.168 -	@param			aIAPPreferences is the IAP connection preference to be used		
 339.169 -	@param			aPortNum is the port number eg. 993, 465, 995.
 339.170 -	@param			aEnableTimeout Not used		
 339.171 -	@pre 			None
 339.172 -	@post			connection is ready to send and receive data.
 339.173 - */
 339.174 -	IMPORT_C void SSLQueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue);
 339.175 -
 339.176 -	IMPORT_C void SSLQueueConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, const TDesC8& aSSLDomainName);
 339.177 -
 339.178 -/**
 339.179 -	@fn				Disconnect()
 339.180 -	Intended Usage	:	To disconnect and close socket connection.
 339.181 -	Error Condition	:	None
 339.182 -	@since			6.0
 339.183 -	@pre 			None
 339.184 -	@post			connection is closed.
 339.185 -  */
 339.186 -	IMPORT_C void Disconnect();
 339.187 -	IMPORT_C void Disconnect(TRequestStatus &aStatus);
 339.188 -	void TimeOut();
 339.189 -
 339.190 -
 339.191 -	IMPORT_C const TDesC& LocalName();
 339.192 -/**
 339.193 -	This method should be called before Send/SendQueueReceive() 
 339.194 -	TLS command is sent.
 339.195 -	@fn				SetSSLTLSResponseL(const TDesC8& aDesc)
 339.196 -	Intended Usage	:	To use for secure connection.
 339.197 -	Error Condition	:	KErrNoMemory
 339.198 -	@since			6.2
 339.199 -	@param			aDesc is the positive response the MTM expects from the connected
 339.200 -					server for TLS command. e.g.  OK, +OK, 220 etc..		
 339.201 -	@pre 			aDesc cannot be zero length
 339.202 -	@leave			EImskNoTLSResponseString
 339.203 -	@post			iTLSResponse is filled with aDesc contents
 339.204 -
 339.205 -  */
 339.206 -	IMPORT_C void SetSSLTLSResponseL(const TDesC8& aDesc);
 339.207 -
 339.208 -/**
 339.209 -	@fn				Send(TRequestStatus &aStatus, const TDesC8& aDesc)
 339.210 -	Intended Usage	:	To send data.
 339.211 -	Error Condition	:	None
 339.212 -	@since			6.0
 339.213 -	@param			aStatus	Asynchronous completion status
 339.214 -	@param			aDesc is the aData to be sent
 339.215 -	@post			None
 339.216 -
 339.217 -  */
 339.218 -
 339.219 -	//sends
 339.220 -	IMPORT_C void Send(TRequestStatus &aStatus, const TDesC8& aDesc);
 339.221 -	IMPORT_C void SendWithTimeout(TRequestStatus& aStatus, TInt aIdleTime, const TDesC8& aDesc); 
 339.222 -	IMPORT_C void SendQueueReceiveWithTimeout(TRequestStatus& aStatus, TInt aIdleTime, const TDesC8& aDesc); 
 339.223 -	IMPORT_C void Send(TRequestStatus &aStatus, TRefByValue<const TDesC8> aFmt,...);
 339.224 -/**
 339.225 -	@fn				SendQueueReceive(TRequestStatus &aStatus, const TDesC8& aDesc)
 339.226 -	Intended Usage	:	To send data and queue a receive.
 339.227 -	Error Condition	:	None
 339.228 -	@since			6.0
 339.229 -	@param			aStatus	Asynchronous completion status	
 339.230 -	@param			aDesc is the aData to be sent
 339.231 -	@post			Sends the data and queues a receive.
 339.232 -	GetCurrentTextLine should be called after this method to read received data
 339.233 -	*/
 339.234 -	IMPORT_C void SendQueueReceive(TRequestStatus &aStatus, const TDesC8& aDesc);
 339.235 -	IMPORT_C void SendQueueReceive(TRequestStatus &aStatus, TRefByValue<const TDesC8> aFmt,...);
 339.236 -
 339.237 -    //receives
 339.238 -/**
 339.239 -	Returns first full line of data received from socket to user
 339.240 -	@fn				GetCurrentTextLine(TDes8& aDesc)
 339.241 -	Intended Usage	:	To return received data.
 339.242 -	Error Condition	:	None
 339.243 -	@since			6.0
 339.244 -	@param			aDesc will be filled with received buffer
 339.245 -	@post			returns the received buffer in the form of aDesc
 339.246 -	@return			EReceiveBufferEmpty when received data is empty
 339.247 -					EBufferTooSmall when aDesc length is smaller than received data
 339.248 -					ECRLFTerminated when received data is complete (full line)
 339.249 -					EReceiveBufferFull when received data length is more than aDesc length
 339.250 -	GetCurrentTextLine should be called after Send methods
 339.251 -	*/
 339.252 -	IMPORT_C TImLineType GetCurrentTextLine(TDes8& aDesc);
 339.253 -/**
 339.254 -	User queues a new request from the socket (unless there's a full line of data in buffer
 339.255 -	then signal user and there's no need to make a receive request)
 339.256 -	@fn				QueueReceiveNextTextLine(TRequestStatus &aStatus)
 339.257 -	Intended Usage	:	User queues a new request from the socket.
 339.258 -	Error Condition	:	None
 339.259 -	@since			6.0
 339.260 -	@param			aStatus for asynchronous request
 339.261 -	
 339.262 -	*/
 339.263 -	IMPORT_C void QueueReceiveNextTextLine(TRequestStatus &aStatus);
 339.264 -/**
 339.265 -	@fn				ReceiveBinaryData(TRequestStatus &aStatus, TDes8& aDes,TInt aLen)
 339.266 -	Intended Usage	:	Users queue a request for received data
 339.267 -	Error Condition	:	None
 339.268 -	@since			6.0
 339.269 -	@param			aStatus	Asynchronous completion status	
 339.270 -	@param			aDes is the aData to be received
 339.271 -	@param			aLen is the length of the data the user wants to read
 339.272 -	@post			aDes will be filled with received data of aLen.
 339.273 -	ReceiveBinaryData should be called after Send.
 339.274 -	*/
 339.275 -	IMPORT_C void ReceiveBinaryData(TRequestStatus &aStatus, TDes8& aDes,TInt aLen);
 339.276 -
 339.277 -	IMPORT_C void LogText(const TDesC8& aString);						// write string into log file
 339.278 -	IMPORT_C void LogError(const TDesC8& aString,const TInt aError);		// write string and integer into log file
 339.279 -
 339.280 -/**
 339.281 -	@fn				GetIAPValue(TUint32 &aIAP)
 339.282 -	Intended Usage	:	Returns the IAP we are connecting/connected with in aIAP or returns an error code
 339.283 -	@since			6.0
 339.284 -	@param			aIAP will be the current IAP 
 339.285 -	@post			aIAP will be filled with current IAP connected.
 339.286 -	@return			will return genconn errors if any
 339.287 -	*/
 339.288 -
 339.289 -	IMPORT_C TInt GetIAPValue(TUint32 &aIAP);
 339.290 -/**
 339.291 -	@fn				GetRConnectionName(TName &aName)
 339.292 -	Intended Usage	:	Returns the name of the RConnection.
 339.293 -	@since			9.1
 339.294 -	@param			aName Buffer in which the name is returned. 
 339.295 -	@post			aName will be filled with current name of the RConnection.
 339.296 -	@return			KErrNone if successful, or another of the system-wide error codes.
 339.297 -	*/
 339.298 -
 339.299 -	IMPORT_C TInt GetRConnectionName(TName &aName);
 339.300 -
 339.301 -/** Returns the bearer type we are connected to with in aBearer or returns an error code */
 339.302 -	IMPORT_C TInt GetIAPBearer(TUint32 &aBearer);
 339.303 -
 339.304 -/**
 339.305 -	@internalTechnology
 339.306 -
 339.307 -	@fn				GetLastSocketActivityTimeout(TUint32& aTimeout)
 339.308 -	Intended Usage	:	Returns the last socket activity timeout value
 339.309 -	@since			9.1
 339.310 -	@param			aTimeout is a return argument containing the timeout if it was found
 339.311 -	@post				aTimeout will be filled with the timeout value
 339.312 -	@return			Returns KErrNone, KErrNotFound or KErrBadHandle
 339.313 -	*/
 339.314 -	IMPORT_C TInt GetLastSocketActivityTimeout(TUint32& aTimeout);
 339.315 -
 339.316 -/**
 339.317 -	@fn				GetSocketServ()
 339.318 -	Intended Usage	:	Returns the Socket Server
 339.319 -	@since			8.0
 339.320 -	@return			Socket Server
 339.321 -	*/
 339.322 -	RSocketServ& GetSocketServ();
 339.323 -
 339.324 -/**
 339.325 -	@fn				GetConnectionStage()
 339.326 -	Intended Usage	:	Gets the stage of the connection process obtained from RConnection
 339.327 -	@since			7.0s
 339.328 -	@return			The current connection stage from RConnection or a system-wide error code.
 339.329 -
 339.330 -	*/
 339.331 -	IMPORT_C TInt GetConnectionStage();
 339.332 -
 339.333 -/**
 339.334 -	@fn				SocketIdle()
 339.335 -	Intended Usage	:	disconnects the socket and notifies the observer when the socket has been idle
 339.336 -						for some time
 339.337 -	@since			7.0s
 339.338 - */
 339.339 -	void SocketIdle();
 339.340 -
 339.341 -/**
 339.342 -	@fn				SetPrimaryTextServerSession(CImTextServerSession& aPrimaryTextServerSession)
 339.343 -	Intended Usage	:	Users set only on the secondary session 
 339.344 -	@since			9.2
 339.345 -	@param			aPrimaryTextServerSession is PrimarySession's TextServerSession
 339.346 -	@pre 			None
 339.347 -	@post			Going to be use on the secondary session
 339.348 -*/
 339.349 -	IMPORT_C void SetPrimaryTextServerSession(CImTextServerSession* aPrimaryTextServerSession);
 339.350 -
 339.351 -/**
 339.352 -	@fn				GetCImConnect()
 339.353 -	Intended Usage	:	Returns the CImConnect object
 339.354 -	@since			9.2
 339.355 -	@return			CImConnect 
 339.356 -	@post			Going to be use on the secondary session
 339.357 -    */
 339.358 -	CImConnect* GetCImConnect();
 339.359 -	
 339.360 -// Depreciated functions - do not use.
 339.361 -	IMPORT_C void QueueConnect(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, TBool aEnableTimeout = ETrue);
 339.362 -	IMPORT_C void QueueConnect(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TInt aType, TBool aEnableTimeout = ETrue);
 339.363 -	IMPORT_C void QueueConnect(TRequestStatus& aStatus,const TDesC& anAddressDesc, TInt aPortNum, TCallBack aDisconnectFunction,const TUint32 aIntraddress,TInt aType, TBool aEnableTimeout = ETrue);
 339.364 -	IMPORT_C void QueueConnect(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum,const TUint32 aIAPaddress, TInt aType, TBool aEnableTimeout = ETrue);
 339.365 -	IMPORT_C void QueueConnect(TRequestStatus& aStatus,const TDesC& anAddressDesc, TInt aPortNum, TCallBack aDisconnectFunction, TBool aEnableTimeout = ETrue);
 339.366 -	IMPORT_C void QueueConnect(TRequestStatus& aStatus,const TDesC& anAddressDesc, TInt aPortNum, TCallBack aDisconnectFunction, const CImIAPPreferences& aIAPPreferences,TInt aType, TBool aEnableTimeout = ETrue);
 339.367 -	IMPORT_C TInt Send(const TDesC8& aDesc);
 339.368 -	IMPORT_C TInt Send(TRefByValue<const TDesC8> aFmt,...);
 339.369 -	IMPORT_C TInt SendReceive(const TDesC8& aDesc);
 339.370 -	IMPORT_C TInt Receive(TDes8& rDes);
 339.371 -	IMPORT_C void Receive(TRequestStatus &aStatus, TDes8& rDes);
 339.372 -	IMPORT_C static CImTextServerSession *NewLC (TImOperationMode aMode, RSocketServ &aServerServ);
 339.373 -	IMPORT_C static CImTextServerSession *NewL(RSocketServ &aServerServ);
 339.374 -	//Do not call SetSecurity.  Call SetSSLTLSResponseL
 339.375 -	IMPORT_C TInt SetSecurity(TBool aSecurityOn, TBool aUnattendedMode = FALSE);
 339.376 -	IMPORT_C void PerformLogging(TBool aLogging);
 339.377 -
 339.378 -private:
 339.379 -/**
 339.380 -	//cat			Construction and Destruction
 339.381 -	@fn				CImTextServerSession()
 339.382 -	Intended Usage	:	Constructor. First phase of two-phase construction method. Does 
 339.383 -						non-allocating construction.
 339.384 -	@since			6.0
 339.385 -	
 339.386 - */
 339.387 -	CImTextServerSession();
 339.388 -
 339.389 -	CImTextServerSession(RSocketServ& aSocketServ, CImConnect& aConnect);
 339.390 -/**
 339.391 -	//cat				Construction
 339.392 -	@fn				CImTextServerSession(TInt aSendIdleTime, TInt aReceiveIdleTime)
 339.393 -	Intended Usage	:	Constructor. First phase of two-phase construction method. Does 
 339.394 -						non-allocating construction.
 339.395 -	@since			7.0s
 339.396 -	@param			aSendIdleTime is the time for which the idle timer runs (for a send)
 339.397 -	@param			aReceiveIdleTime  is the time for which the idle timer runs (for a receive)
 339.398 - */
 339.399 -	CImTextServerSession(TInt aSendIdleTime, TInt aReceiveIdleTime);
 339.400 -
 339.401 -	CImTextServerSession(TInt aSendIdleTime, TInt aReceiveIdleTime, RSocketServ& aSocketServ, CImConnect& aConnect);
 339.402 -
 339.403 -/**
 339.404 -	//cat			Construction and Destruction.
 339.405 -	@fn				ConstructL()
 339.406 -	Intended Usage	:	Second phase of two-phase construction method. Does any 
 339.407 -						allocations required to fully construct the object.
 339.408 -	@since			6.0
 339.409 -	@leave			KErrNoMemory.
 339.410 -	@pre 			First phase of construction is complete
 339.411 -	@post			The object is fully constructed and initialised.	
 339.412 - */
 339.413 -	void ConstructL();
 339.414 -
 339.415 -	TInt Open();
 339.416 -	void Close();
 339.417 -
 339.418 -	void CreateLogFile(TInt aPortNum);
 339.419 -	void OpenScriptFile(TInt aPortNum);
 339.420 -
 339.421 -	void DoRunL();
 339.422 -	void DoComplete(TInt& aStatusValue);						// Cleanup code
 339.423 -	void DoCancel();
 339.424 -
 339.425 -	// these called from DoRunL;
 339.426 -	void SocketConnect();
 339.427 -	void DoConnectedToSocketL();
 339.428 -	void DoQueueConnect();
 339.429 -
 339.430 -	void RealReceive(TDes8& aDesc);
 339.431 -	void RealSend(const TDesC8& aDesc);
 339.432 -/** 
 339.433 -	@fn				ParseSSLTLSResponseL()
 339.434 -	Intended Usage	:	session will compare the response(for TLS command)
 339.435 -						with the MTMs response 						
 339.436 -	@since			6.2
 339.437 -	@leave			KImskSSLTLSNegotiateFailed if the response doesn't match 
 339.438 -	@post			CSecureSocket object is created
 339.439 -	*/
 339.440 -	void ParseSSLTLSResponseL();
 339.441 -
 339.442 -/** 
 339.443 -	@fn				CreateSecureSocketL()
 339.444 -	Intended Usage	:	to use secure socket connection 						
 339.445 -	@since			6.2
 339.446 -	@leave			None 
 339.447 -	@post			CSecureSocket object is created and iSecurityState is set to EImSecurityStateOn;
 339.448 -	*/
 339.449 -	void CreateSecureSocketL();
 339.450 -
 339.451 -/**
 339.452 -	@fn				QueueGenericConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, TBool aEnableTimeout = ETrue)
 339.453 -	Intended Usage	:	Queue a standard or wrapped SSL connect on an socket assuming the socket is successfully opened.  Called by SSLQueueConnectL and QueueConnectL
 339.454 -	Error Condition	:	KErrNoMemory, EImskSocketOpen
 339.455 -	@since			7.0s
 339.456 -	@param			aStatus	Asynchronous completion status	
 339.457 -	@param			anAddressDesc is the IP address		
 339.458 -	@param			aIAPPreferences is the IAP connection preference to be used		
 339.459 -	@param			aPortNum is the port number eg. 143, 993
 339.460 -	@param			aSSLDomainName SSL domain name to use for secure sockets
 339.461 -	@pre 			None
 339.462 -	@post			connection is ready to send and receive data.
 339.463 - */
 339.464 -	void QueueGenericConnectL(TRequestStatus &aStatus,const TDesC& anAddressDesc, TInt aPortNum, const CImIAPPreferences& aIAPPreferences, const TDesC8& aSSLDomainName);
 339.465 -
 339.466 -#if defined(__IMSK_SIMULATION)
 339.467 -	void ReadNextPeriod();
 339.468 -	TUint32 GetTokenValue(TInt aTokenLen, const TPtrC8& aBuffer);
 339.469 -	TBool IsSuspended();	
 339.470 -	TBool SuspendPeriodSet();
 339.471 -	void ResetSuspendPeriod();
 339.472 -	void SetAfterTimer();
 339.473 -	TInt ReadConfigNum(const TDesC& aName);
 339.474 -#endif
 339.475 -
 339.476 -	enum TImSocketState
 339.477 -		{
 339.478 -		EImClosed, 
 339.479 -		EImResolve, 
 339.480 -		EImConnect,   
 339.481 -		EImSendReceive,
 339.482 -		EImDialUsingOverride,
 339.483 -		EImTLSHandShakeStarted,
 339.484 -		EImSendReceiveTimedOut
 339.485 -		};
 339.486 -
 339.487 -	enum TImSendReceiveState
 339.488 -		{ 
 339.489 -		EImInactive, 
 339.490 -		EImSending,
 339.491 -		EImReceiving, 
 339.492 -		EImReceivingBinaryData,
 339.493 -		EImSendingQueueReceive,
 339.494 -		EImSuspended,          //used when we are in a simulated GPRS suspend.
 339.495 -		};
 339.496 -
 339.497 -	enum TImSecurityState
 339.498 -		{
 339.499 -		EImSecurityStateOff,
 339.500 -		EImSecurityStateOn,
 339.501 -		EImSecurityStateFailed
 339.502 -		};
 339.503 -private:
 339.504 -	/** handle to the socket */
 339.505 -	RSocket							iSocket;
 339.506 -	/** handle to RSocketServ */
 339.507 -	RSocketServ						iServ;
 339.508 -	/** handle to Hostresolver */
 339.509 -	RHostResolver					iHostResolver;
 339.510 -	/** handle to secure socket for SSL/TLS connection */
 339.511 -	CSecureSocket*					iSecureSocket;
 339.512 -
 339.513 -	TUint32 iCurrentIAPcache;
 339.514 -	/** Used to find if IAP is cached */
 339.515 -	TBool							iIAPCached;  // true if the above value can be used.
 339.516 -	/** result of the host resolver */
 339.517 -	TNameEntry						iHostent;
 339.518 -	/** port number e.g. 25 for SMTP, 143 for IMAP and 110 for POP */
 339.519 -	TInt							iPortNum;
 339.520 -	/**  server address */
 339.521 -	TPtrC							iAddressDesc;
 339.522 -	/** data returned by the socket */
 339.523 -	TImMailBuffer					iReceive;
 339.524 -	TSockXfrLength					iLen;
 339.525 -	TImSocketState					iState;
 339.526 -	TImSendReceiveState				iSendReceive;
 339.527 -
 339.528 -	HBufC8*							iBuffer;
 339.529 -	TImLineType						iCurrentLineType;
 339.530 -
 339.531 -	/** to log connection data  */
 339.532 -	CImLog*							iLog;
 339.533 -	/** IP address name */
 339.534 -	TBuf<KImskIPAddressLen>			iLocalName;
 339.535 -	/** secure state i.e to use Secure socket */
 339.536 -
 339.537 -	TImSecurityState				iSecurityState;
 339.538 -	const CImIAPPreferences*		iIAPPreferences;
 339.539 -
 339.540 -	CImConnect*						iConnect;
 339.541 -
 339.542 -	TDes8*							iReceiveData; // buffer we just recieved data into
 339.543 -
 339.544 -
 339.545 -	HBufC8*							iSentData;
 339.546 -	/** response for different mail protocols like 220,+OK, OK, BAD */
 339.547 -	HBufC8*							iTLSResponse; //response for different mail protocols like 220,+OK, OK, BAD
 339.548 -	/** internal flag to read tls response */
 339.549 -	TBool							iReadTLSResponse;
 339.550 -	TBool							iPerformLogging;
 339.551 -	TBool							iWrappedSocket;
 339.552 -
 339.553 -	CImSocketIdleTimer*				iSocketIdleTimer;
 339.554 -	TTimeIntervalMicroSeconds32		iSendIdleTime;
 339.555 -	TTimeIntervalMicroSeconds32		iReceiveIdleTime;
 339.556 -
 339.557 -	/** A shorter idle timeout, used when a fast response is expected */
 339.558 -	TTimeIntervalMicroSeconds32		iSendShortIdleTime;
 339.559 -	TTimeIntervalMicroSeconds32		iReceiveShortIdleTime;
 339.560 -
 339.561 -
 339.562 -#ifdef __IMSK_SCRIPTING
 339.563 -	CImTextServerScript*			iScript;
 339.564 -#endif
 339.565 -
 339.566 -#if defined(__IMSK_SIMULATION)
 339.567 -
 339.568 -	RFs								iFs;
 339.569 -
 339.570 -
 339.571 -	TUint32							iScriptedIAP; // value to return for iap when scripting
 339.572 -	TUint32							iBearerIAP; // value to return for bearer when scripting
 339.573 -
 339.574 -
 339.575 -	TImSendReceiveState             iSuspendedState;
 339.576 -	
 339.577 -	RTimer							iSuspendTimer;
 339.578 -
 339.579 -	RFile							iGprsFile;
 339.580 -
 339.581 -	TBool							iGprsConfigExists;
 339.582 -
 339.583 -	TInt							iCfgFilePos;	
 339.584 -
 339.585 -	TTime							iLastSuspend;	// time last suspension took place
 339.586 -													// in universal time
 339.587 -
 339.588 -	TTimeIntervalSeconds 			iStart;		// number of seconds since last delay
 339.589 -												// before the following delay occurs.
 339.590 -												// if 0 no suspend is required.
 339.591 -	TTimeIntervalSeconds 			iDuration;	// how long to delay. If 0 no suspend is
 339.592 -												// required
 339.593 -	TBool							iRepeat;	// repeat the above delay for an 
 339.594 -												// infinite period
 339.595 -
 339.596 -	HBufC8*							iSendData; // suspended data 
 339.597 -#endif // __IMSK_SIMULATION
 339.598 -	
 339.599 -	CImTextServerSession*			iPrimaryTextServerSession; //Only going to be set on the secondary session
 339.600 -	
 339.601 -	TBool iClientOwnsConnection;
 339.602 -
 339.603 -	/** SSL domain name for secure sockets */
 339.604 -	HBufC8* iSSLDomainName;
 339.605 -	TBool							iSocketIdleTimeSet;          // iSocketIdleTimeSet=ETrue, if smtp server did not responds within 10 seconds after sending "."
 339.606 -	};
 339.607 -
 339.608 -#endif
   340.1 --- a/epoc32/include/ineturi.h	Tue Mar 16 16:12:26 2010 +0000
   340.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   340.3 @@ -1,72 +0,0 @@
   340.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   340.5 -// All rights reserved.
   340.6 -// This component and the accompanying materials are made available
   340.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   340.8 -// which accompanies this distribution, and is available
   340.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  340.10 -//
  340.11 -// Initial Contributors:
  340.12 -// Nokia Corporation - initial contribution.
  340.13 -//
  340.14 -// Contributors:
  340.15 -//
  340.16 -// Description:
  340.17 -// Class for storing URI and its properties.
  340.18 -// 
  340.19 -//
  340.20 -
  340.21 -
  340.22 -
  340.23 -/**
  340.24 - @file
  340.25 - @publishedAll
  340.26 - @released
  340.27 -*/
  340.28 -
  340.29 -#ifndef __INETURI_H__
  340.30 -#define __INETURI_H__
  340.31 -
  340.32 -
  340.33 -class CInetUriImpl;
  340.34 -class CInetUriProperties;
  340.35 -class CUri8;
  340.36 -
  340.37 -using namespace InetUriList;
  340.38 -
  340.39 -/**
  340.40 -RInetUri represents a handle to the URI and its associated URI properties. A URI must always be associated with 
  340.41 -a service type and a list type. Service type defines the purpose for which the URI is added (for example, 
  340.42 -Browser, WAP Push, Push EMail, and so on), and the list type defines the permission associated with the URI 
  340.43 -(for example, whitelist or blacklist).
  340.44 -
  340.45 -@publishedAll
  340.46 -@released
  340.47 -*/
  340.48 -class RInetUri
  340.49 -	{
  340.50 -public:	
  340.51 -	friend class CInetUriListImpl;
  340.52 -	
  340.53 -	IMPORT_C RInetUri ();
  340.54 -
  340.55 -	IMPORT_C void CreateL ( const TDesC8& aUri,  TServiceType aServiceType, TListType aListType );
  340.56 -	IMPORT_C void Close ();
  340.57 -	
  340.58 -	IMPORT_C TServiceType ServiceType () const;
  340.59 -	IMPORT_C TPermission Permission () const;
  340.60 -	IMPORT_C TListType ListType () const;	
  340.61 -	IMPORT_C const TDesC8& FavouriteName () const;
  340.62 -	IMPORT_C const CUri8& Uri () const;
  340.63 -		
  340.64 -	IMPORT_C void SetListType ( TListType aListType );
  340.65 -	IMPORT_C void SetFavouriteNameL ( const TDesC8& aFavouriteName );	
  340.66 -	
  340.67 -private:
  340.68 -	// Used internally. Not intended for external use
  340.69 -	CInetUriImpl& Impl () const;
  340.70 -	void Attach ( CInetUriImpl& aInetUri );
  340.71 -private:
  340.72 -	CInetUriImpl* iInetUriImpl; // // The internal URI object that this handle is connected to
  340.73 -	};
  340.74 -
  340.75 -#endif //__INETURI_H__
   341.1 --- a/epoc32/include/ineturilist.h	Tue Mar 16 16:12:26 2010 +0000
   341.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   341.3 @@ -1,113 +0,0 @@
   341.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   341.5 -// All rights reserved.
   341.6 -// This component and the accompanying materials are made available
   341.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   341.8 -// which accompanies this distribution, and is available
   341.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  341.10 -//
  341.11 -// Initial Contributors:
  341.12 -// Nokia Corporation - initial contribution.
  341.13 -//
  341.14 -// Contributors:
  341.15 -//
  341.16 -// Description:
  341.17 -// Class for opening and manipulating the internet uri list.
  341.18 -// 
  341.19 -//
  341.20 -
  341.21 -
  341.22 -
  341.23 -/**
  341.24 - @file
  341.25 - @publishedAll
  341.26 - @released
  341.27 -*/
  341.28 -
  341.29 -#ifndef __INETURILIST_H__
  341.30 -#define __INETURILIST_H__
  341.31 -
  341.32 -#include <ineturilistdef.h>
  341.33 -#include <ineturi.h>
  341.34 -#include <uri8.h>
  341.35 -#include <babitflags.h>
  341.36 -
  341.37 -class CInetUriListImpl;
  341.38 -
  341.39 -
  341.40 -
  341.41 -
  341.42 -/**
  341.43 -This class defines the interface that can be implemented by an application to receive the
  341.44 -query results. 
  341.45 -
  341.46 -@publishedAll
  341.47 -@released
  341.48 -*/
  341.49 -class MQueryResultsCallback
  341.50 -	{
  341.51 -	public:
  341.52 -	/**
  341.53 -	The callback function that will be called when there is at least one query result.
  341.54 -	
  341.55 -	@param aUri The Inet URI object. Ownership will be passed. The application should close the 
  341.56 -				object handle.
  341.57 -	@return ETrue - More query results, if any, should follow.
  341.58 -			EFalse - No more query result is required and querying will be stopped.
  341.59 -	*/
  341.60 -	virtual TBool OnQueryResultsL ( RInetUri aUri ) =0;
  341.61 -	};
  341.62 -
  341.63 -
  341.64 -/**
  341.65 -This class defines the interface that can be implemented by an application that wishes to do
  341.66 -protocol and scheme-based normalisation of the URI before query operation.
  341.67 -
  341.68 -@publishedAll
  341.69 -@released
  341.70 -*/
  341.71 -class MUriCustomiser
  341.72 -	{
  341.73 -	public:
  341.74 -	/**
  341.75 -	The callback function that will be called to perform scheme and protocol-based normalisation.
  341.76 -	The URI will be syntax normalised before calling this function.
  341.77 -	
  341.78 -	@param aUri The syntax normalised URI.
  341.79 -	@return Final normalised URI, which is syntax and protocol/scheme based.
  341.80 -	*/
  341.81 -	virtual CUri8* OnUriCustomisationL ( const TUriC8& aUri ) =0;	
  341.82 -	};
  341.83 -
  341.84 -
  341.85 -
  341.86 -/**
  341.87 -RInetUriList represents a handle to the list as a whole. Opening the handle will initiate a connection the
  341.88 -URI List server. This class is responsible for adding, removing, updating, or retrieving the URI and
  341.89 -its associated properties.
  341.90 -
  341.91 -@publishedAll
  341.92 -@released
  341.93 -*/
  341.94 -class RInetUriList
  341.95 -	{
  341.96 -public:
  341.97 -	IMPORT_C RInetUriList ();
  341.98 -
  341.99 -	IMPORT_C void OpenL ();
 341.100 -	IMPORT_C void Close ();
 341.101 -	
 341.102 -	IMPORT_C void AddL ( const RInetUri& aInetUri );
 341.103 -	IMPORT_C void RemoveL ( const RInetUri& aInetUri );
 341.104 -	IMPORT_C void UpdateL ( const RInetUri& aInetUri );
 341.105 -	
 341.106 -	IMPORT_C RInetUri OpenInetUriL ( const TDesC8& aUri, InetUriList::TServiceType aServiceType );
 341.107 -	IMPORT_C TInt Count ( InetUriList::TServiceType aServiceType, InetUriList::TListType aListType );
 341.108 -	
 341.109 -	IMPORT_C TInt GetListType ( const TDesC8& aUri, InetUriList::TServiceType aServiceType, InetUriList::TListType& aListType );
 341.110 -	
 341.111 -	IMPORT_C void QueryUriL ( const TQueryArgs& aArgs, MQueryResultsCallback* aQueryCallback, MUriCustomiser* aUriOptimiser =NULL );
 341.112 -private:
 341.113 -	CInetUriListImpl* iInetUriListImpl; // // The internal list object that this handle is connected to
 341.114 -	};
 341.115 -
 341.116 -#endif //__INETURILIST_H__
   342.1 --- a/epoc32/include/ineturilistdef.h	Tue Mar 16 16:12:26 2010 +0000
   342.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   342.3 @@ -1,333 +0,0 @@
   342.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   342.5 -// All rights reserved.
   342.6 -// This component and the accompanying materials are made available
   342.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   342.8 -// which accompanies this distribution, and is available
   342.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  342.10 -//
  342.11 -// Initial Contributors:
  342.12 -// Nokia Corporation - initial contribution.
  342.13 -//
  342.14 -// Contributors:
  342.15 -//
  342.16 -// Description:
  342.17 -// Place holder for common constants, type definitions and enums.
  342.18 -//
  342.19 -
  342.20 -
  342.21 -
  342.22 -/**
  342.23 - @file
  342.24 - @publishedAll
  342.25 - @released
  342.26 -*/
  342.27 -
  342.28 -#ifndef __INETURILISTDEF_H__
  342.29 -#define __INETURILISTDEF_H__
  342.30 -
  342.31 -#include <e32base.h>
  342.32 -
  342.33 -/**
  342.34 -@publishedAll
  342.35 -@released
  342.36 -*/
  342.37 -namespace InetUriList
  342.38 -	{
  342.39 -	/**
  342.40 -	Types of supported service type.
  342.41 -	
  342.42 -	@publishedAll
  342.43 -	@released
  342.44 -	*/		
  342.45 -	enum TServiceType
  342.46 -		{
  342.47 -		/** Browser */
  342.48 -		EBrowser =0x01, 
  342.49 -		/** WapPush */
  342.50 -		EWapPush =0x02,
  342.51 -		/** PushEMail */ 
  342.52 -		EPushEMail =0x03,
  342.53 -		/** DevProv */
  342.54 -		EDevProv =0x04,
  342.55 -		/** VOIP */
  342.56 -		EVoip =0x05
  342.57 -		};
  342.58 -
  342.59 -	/**
  342.60 -	Types of supported list type.
  342.61 -
  342.62 -	@publishedAll
  342.63 -	@released
  342.64 -	*/	
  342.65 -	 enum TListType
  342.66 -		{
  342.67 -		/** BlackList **/
  342.68 -		EBlackList =0x01,
  342.69 -		/** WhiteList **/
  342.70 -		EWhiteList =0x02
  342.71 -		};
  342.72 -	
  342.73 -	/**
  342.74 -	Types of permission.
  342.75 -
  342.76 -	@publishedAll
  342.77 -	@released
  342.78 -	*/	
  342.79 -	enum TPermission
  342.80 -		{
  342.81 -		/** ReadOnly **/
  342.82 -		EReadOnly =0x01,
  342.83 -		/** ReadWrite **/ 
  342.84 -		EReadWrite =0x02
  342.85 -		};
  342.86 -	
  342.87 -	/**
  342.88 -	Types of matches.
  342.89 -	
  342.90 -	@publishedAll
  342.91 -	@released
  342.92 -	*/
  342.93 -	enum TURIMatch
  342.94 -		{
  342.95 -		/** Exact match **/	
  342.96 -		EExact =0x01,
  342.97 -		/** Domain match **/
  342.98 -		EDomain =0x02,
  342.99 -		/** Exact path match **/
 342.100 -		EExactPath =0x03,
 342.101 -		/** partial prefix path match **/
 342.102 -		EPartialPrefixPath =0x04,
 342.103 -		/** Partial suffix path match **/
 342.104 -		EPartialSuffixPath =0x05
 342.105 -		};
 342.106 -		
 342.107 -	/**
 342.108 -	Error codes error numbers -7650 to -7699 have been reserved for InetUriList.
 342.109 -	*/
 342.110 -	static const TInt KErrorBase 			= -7650;	
 342.111 -	/**
 342.112 -	URI already exists in database.
 342.113 -	*/
 342.114 -	static const TInt KErrUriAlreadyExists 			= KErrorBase;
 342.115 -	/**
 342.116 -	URI not found in database. 
 342.117 -	*/
 342.118 -	static const TInt KErrUriNotFound	 			= KErrorBase - 1;
 342.119 -	/** 
 342.120 -	Addition of URI failed. 
 342.121 -	*/
 342.122 -	static const TInt KErrUriAddFailed				= KErrorBase - 2;
 342.123 -	/** 
 342.124 -	Removal of URI failed.
 342.125 -	*/
 342.126 -	static const TInt KErrUriRemoveFailed			= KErrorBase - 3;
 342.127 -	/** 
 342.128 -	Updation of URI properties failed.
 342.129 -	*/
 342.130 -	static const TInt KErrUriUpdateFailed			= KErrorBase - 4;
 342.131 -	/** 
 342.132 -	URI is read only.
 342.133 -	*/
 342.134 -	static const TInt KErrUriReadOnly				= KErrorBase - 5;
 342.135 -	/** 
 342.136 -	Service type of URI is missing.
 342.137 -	*/
 342.138 -	static const TInt KErrServiceTypeNotPresent 	= KErrorBase - 6;	
 342.139 -	/** 
 342.140 -	Handle is not open.
 342.141 -	*/
 342.142 -	static const TInt KErrNotOpen				 	= KErrorBase - 7;	
 342.143 -	/**
 342.144 -	Invalid stream handle
 342.145 -	*/
 342.146 -	static const TInt KErrInvalidStreamHandle 		= KErrorBase - 8;
 342.147 -	
 342.148 -	/** 
 342.149 -	Panic text if handle is not open.
 342.150 -	*/
 342.151 -	_LIT(KInetUriListErrHandleNotOpen,		"Handle not open");
 342.152 -
 342.153 -	}
 342.154 -
 342.155 -/**
 342.156 -This class defines the argument parameters for the query operation. It is possible to 
 342.157 -set the arguments in various combinations. The argument types can be ServiceType, 
 342.158 -ListType, URI in TDesC8 form, and URIMatch.
 342.159 -
 342.160 -@publishedAll
 342.161 -@released
 342.162 -*/
 342.163 -class TQueryArgs
 342.164 -	{
 342.165 -	public:
 342.166 -		/**
 342.167 -		The argument types.
 342.168 -		
 342.169 -		@internalComponent
 342.170 -		*/
 342.171 -		enum TArgType
 342.172 -			{
 342.173 -			EUri = 1,
 342.174 -			EServiceType,
 342.175 -			EListType,
 342.176 -			EURIMatch
 342.177 -			};
 342.178 -		/**
 342.179 -		Bit width of the type.
 342.180 -		
 342.181 -		@internalComponent
 342.182 -		*/
 342.183 -		enum 
 342.184 -			{
 342.185 -			KBitsPerType = 3			
 342.186 -			};
 342.187 -		
 342.188 -		/**
 342.189 -		Default constructor
 342.190 -		*/
 342.191 -		inline TQueryArgs ()
 342.192 -			:iFlags ( 0 )
 342.193 -			{}
 342.194 -
 342.195 -
 342.196 -		/**
 342.197 -		A templated constructor that constructs the query argument.
 342.198 -		It takes one argument.
 342.199 -		*/
 342.200 -		template < class T0 >
 342.201 -		explicit inline TQueryArgs ( T0 a0 )
 342.202 -			{
 342.203 -			Assign ( a0 );
 342.204 -			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
 342.205 -			}
 342.206 -
 342.207 -		/**
 342.208 -		A templated constructor that constructs the query argument.
 342.209 -		It takes two arguments.
 342.210 -		*/
 342.211 -		template < class T0, class T1 >
 342.212 -		inline TQueryArgs ( T0 a0, T1 a1 )
 342.213 -			{
 342.214 -			Assign ( a0 );
 342.215 -			Assign ( a1 );
 342.216 -			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
 342.217 -					(Type(a1)<<(( Type(a1))*KBitsPerType));
 342.218 -			}
 342.219 -
 342.220 -		/**
 342.221 -		A templated constructor that constructs the query argument.
 342.222 -		It takes three arguments.
 342.223 -		*/
 342.224 -		template < class T0, class T1, class T2 >
 342.225 -		inline TQueryArgs ( T0 a0, T1 a1, T2 a2 )
 342.226 -			{
 342.227 -			Assign ( a0 );
 342.228 -			Assign ( a1 );
 342.229 -			Assign ( a2 );
 342.230 -			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
 342.231 -					(Type(a1)<<(Type(a1)*KBitsPerType)) |
 342.232 -					(Type(a2)<<(Type(a2)*KBitsPerType));
 342.233 -			}
 342.234 -
 342.235 -		/**
 342.236 -		A templated constructor that constructs the query argument.
 342.237 -		It takes four arguments.
 342.238 -		*/
 342.239 -		template < class T0, class T1, class T2, class T3 >
 342.240 -		inline TQueryArgs ( T0 a0, T1 a1, T2 a2, T3 a3 )
 342.241 -			{
 342.242 -			Assign ( a0 );
 342.243 -			Assign ( a1 );
 342.244 -			Assign ( a2 );
 342.245 -			Assign ( a3 );				
 342.246 -			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
 342.247 -					(Type(a1)<<(Type(a1)*KBitsPerType)) |
 342.248 -					(Type(a2)<<(Type(a2)*KBitsPerType)) |
 342.249 -					(Type(a3)<<(Type(a3)*KBitsPerType));
 342.250 -			}
 342.251 -		
 342.252 -
 342.253 -		/**
 342.254 -		Checks whether the flag is set for the given argument type.
 342.255 -				
 342.256 -		@internalComponent
 342.257 -		*/
 342.258 -		TBool IsSet ( TArgType aType ) const
 342.259 -			{
 342.260 -			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
 342.261 -			return iFlags & ( aType << ( aType  * KBitsPerType ) );
 342.262 -			}
 342.263 -		
 342.264 -		/**
 342.265 -		Returns the argument if set, otherwise returns KErrNotFound.
 342.266 -		
 342.267 -		@internalComponent
 342.268 -		*/		
 342.269 -		TInt Get ( TArgType aType ) const
 342.270 -			{
 342.271 -			if ( IsSet ( aType ) )
 342.272 -				return iArgs[aType - 1];
 342.273 -			return KErrNotFound;			
 342.274 -			}
 342.275 -		
 342.276 -		/**
 342.277 -		Maximum number of arguments. Currently set as 4.
 342.278 -		
 342.279 -		@internalComponent
 342.280 -		*/
 342.281 -		enum
 342.282 -			{
 342.283 -			KMaxArguments = 4
 342.284 -			};
 342.285 -					
 342.286 -	private:
 342.287 -
 342.288 -		/**
 342.289 -		@internalComponent
 342.290 -		*/			
 342.291 -		TArgType Type ( const TDesC8* )
 342.292 -			{
 342.293 -			return EUri;				
 342.294 -			}
 342.295 -			
 342.296 -		TArgType Type ( InetUriList::TServiceType )
 342.297 -			{
 342.298 -			return EServiceType;				
 342.299 -			}
 342.300 -
 342.301 -		TArgType Type ( InetUriList::TListType )
 342.302 -			{
 342.303 -			return EListType;				
 342.304 -			}
 342.305 -
 342.306 -		TArgType Type ( InetUriList::TURIMatch )
 342.307 -			{
 342.308 -			return EURIMatch;				
 342.309 -			}
 342.310 -		
 342.311 -		void Assign ( const TDesC8* aValue )
 342.312 -			{
 342.313 -			iArgs[Type(aValue)-1] = (TInt)aValue;
 342.314 -			}
 342.315 -			
 342.316 -		void Assign ( InetUriList::TServiceType aValue )
 342.317 -			{
 342.318 -			iArgs[Type(aValue)-1] = aValue;
 342.319 -			}
 342.320 -			
 342.321 -		void Assign ( InetUriList::TListType aValue )
 342.322 -			{
 342.323 -			iArgs[Type(aValue)-1] = aValue;
 342.324 -			}
 342.325 -			
 342.326 -		void Assign ( InetUriList::TURIMatch aValue )
 342.327 -			{
 342.328 -			iArgs[Type(aValue)-1] = aValue;
 342.329 -			}
 342.330 -			
 342.331 -	private:	
 342.332 -		TInt iArgs [KMaxArguments];
 342.333 -		TInt iFlags;			
 342.334 -	};
 342.335 -
 342.336 -#endif // __INETURILISTDEF_H__
   343.1 --- a/epoc32/include/ipaddr.h	Tue Mar 16 16:12:26 2010 +0000
   343.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   343.3 @@ -1,63 +0,0 @@
   343.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   343.5 -// All rights reserved.
   343.6 -// This component and the accompanying materials are made available
   343.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   343.8 -// which accompanies this distribution, and is available
   343.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  343.10 -//
  343.11 -// Initial Contributors:
  343.12 -// Nokia Corporation - initial contribution.
  343.13 -//
  343.14 -// Contributors:
  343.15 -//
  343.16 -// Description:
  343.17 -//
  343.18 -
  343.19 -#ifndef CIPADDRESS___
  343.20 -#define CIPADDRESS___
  343.21 -
  343.22 -#include <in_sock.h>
  343.23 -
  343.24 -/** Size of CIpAddress buffer. */
  343.25 -const TInt KIpAddressSize = 39; // large enough for full IPv6 address = 39 (8 * 4 + 7)
  343.26 -
  343.27 -class CIpAddress : public CBase
  343.28 -/** Utility class to hold an IP address as a string on the heap.
  343.29 -
  343.30 -This can be useful for parsers that have IP address fields. 
  343.31 -@publishedAll
  343.32 -@released
  343.33 -*/
  343.34 -	{
  343.35 -	public:
  343.36 -		IMPORT_C static CIpAddress*	NewL(const TDesC& aAddr);
  343.37 -		IMPORT_C static CIpAddress*	NewLC(const TDesC& aAddr);
  343.38 -		inline static CIpAddress*	NewL();
  343.39 -		inline static CIpAddress*	NewLC();
  343.40 -		IMPORT_C 					~CIpAddress();
  343.41 -		IMPORT_C void				SetAddrL(const TDesC& aAddr);
  343.42 -		IMPORT_C const TDesC&		Addr() const;
  343.43 -	private:
  343.44 -		CIpAddress();
  343.45 -	private:
  343.46 -		HBufC*				iAddr;
  343.47 -	};
  343.48 -
  343.49 -inline CIpAddress* CIpAddress::NewL()
  343.50 -/** Allocates and constructs a new empty IP address object.
  343.51 -
  343.52 -@return New IP address object */
  343.53 -	{
  343.54 -	return NewL(KNullDesC);
  343.55 -	}
  343.56 -
  343.57 -inline CIpAddress* CIpAddress::NewLC()
  343.58 -/** Allocates and constructs a new empty IP address object, leaving the object 
  343.59 -on the cleanup stack.
  343.60 -
  343.61 -@return New IP address object */
  343.62 -	{
  343.63 -	return NewLC(KNullDesC);
  343.64 -	}
  343.65 -
  343.66 -#endif
   344.1 --- a/epoc32/include/irmsgtypeuid.h	Tue Mar 16 16:12:26 2010 +0000
   344.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   344.3 @@ -1,40 +0,0 @@
   344.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   344.5 -// All rights reserved.
   344.6 -// This component and the accompanying materials are made available
   344.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   344.8 -// which accompanies this distribution, and is available
   344.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  344.10 -//
  344.11 -// Initial Contributors:
  344.12 -// Nokia Corporation - initial contribution.
  344.13 -//
  344.14 -// Contributors:
  344.15 -//
  344.16 -// Description:
  344.17 -// $Workfile: irmsgtypeuid.h $
  344.18 -// $Author: Stevep $
  344.19 -// $Revision: 4 $
  344.20 -// $Date: 4/12/01 9:45 $
  344.21 -// 
  344.22 -//
  344.23 -
  344.24 -
  344.25 -
  344.26 -/**
  344.27 - @file
  344.28 - @publishedAll
  344.29 - @released
  344.30 -*/
  344.31 -
  344.32 -#if !defined (__IRMSGTYPEUID_H__)
  344.33 -#define __IRMSGTYPEUID_H__
  344.34 -
  344.35 -const TInt32 KUidMsgTypeIrTInt32 = 0x100053A4;
  344.36 -// This is defined in irobutil.h, which we don't control.
  344.37 -// const TUid KUidMsgTypeIr = {KUidMsgTypeIrTInt32};
  344.38 -
  344.39 -const TInt32 KUidMsgTypeIr			 =	0x100053A4;
  344.40 -
  344.41 -const TUid KUidMsgTypeIrUID = {KUidMsgTypeIr};	// we will revert this when we persuade PAN to make the other one a real TUid.
  344.42 -
  344.43 -#endif // __IRMSGTYPEUID_H__
   345.1 --- a/epoc32/include/irmtmcmds.h	Tue Mar 16 16:12:26 2010 +0000
   345.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   345.3 @@ -1,34 +0,0 @@
   345.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   345.5 -// All rights reserved.
   345.6 -// This component and the accompanying materials are made available
   345.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   345.8 -// which accompanies this distribution, and is available
   345.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  345.10 -//
  345.11 -// Initial Contributors:
  345.12 -// Nokia Corporation - initial contribution.
  345.13 -//
  345.14 -// Contributors:
  345.15 -//
  345.16 -// Description:
  345.17 -// $Workfile: irmtmcmds.h $
  345.18 -// $Author: Stevep $
  345.19 -// $Revision: 3 $
  345.20 -// $Date: 20/11/01 11:19 $
  345.21 -// 
  345.22 -//
  345.23 -
  345.24 -
  345.25 -
  345.26 -/**
  345.27 - @file
  345.28 - @publishedAll
  345.29 - @released
  345.30 -*/
  345.31 -
  345.32 -
  345.33 -#if !defined (__IRMTMCMDS_H__)
  345.34 -#define __IRMTMCMDS_H__
  345.35 -
  345.36 -
  345.37 -#endif	//__IRMTMCMDS_H__
   346.1 --- a/epoc32/include/logdef.h	Tue Mar 16 16:12:26 2010 +0000
   346.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   346.3 @@ -1,135 +0,0 @@
   346.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   346.5 -// All rights reserved.
   346.6 -// This component and the accompanying materials are made available
   346.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   346.8 -// which accompanies this distribution, and is available
   346.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  346.10 -//
  346.11 -// Initial Contributors:
  346.12 -// Nokia Corporation - initial contribution.
  346.13 -//
  346.14 -// Contributors:
  346.15 -//
  346.16 -// Description:
  346.17 -// Define Logging Service Constants, Macros and Definitions 
  346.18 -// intended for inclusion into any source file
  346.19 -// which define classes wishing to use log server services.
  346.20 -// 
  346.21 -//
  346.22 -
  346.23 -#if !defined(__LOGDEF_H__)
  346.24 -#define __LOGDEF_H__
  346.25 -
  346.26 -#if !defined(__E32BASE_H__)
  346.27 -#include <e32base.h>
  346.28 -#endif
  346.29 -
  346.30 -#if !defined(__ANSICOMP_H__)
  346.31 -#include <ansicomp.h>	// Enforce ANSI compliance upon Microsoft Compilers
  346.32 -#endif
  346.33 -
  346.34 -// This define removed for sanity and performance sake.  To enable logging in
  346.35 -// your component, redefine the __LOGGING macro in your own .cpp files, prior to
  346.36 -// the #include of this file.
  346.37 -// #define __LOGGING 1
  346.38 -
  346.39 -/**
  346.40 -Define a constant to control the maximum length of a log message
  346.41 -@publishedAll
  346.42 -@deprecated
  346.43 -*/
  346.44 -const TInt KMaxLogEntrySize = KMaxFileName;
  346.45 -
  346.46 -// Logging definitions
  346.47 -#if defined (__LOGGING) && 	defined (_DEBUG)		
  346.48 -
  346.49 -// Logging activity is enabled
  346.50 -#if !defined(__CLOG_H__)
  346.51 -#include "clog.h"
  346.52 -#endif
  346.53 -
  346.54 -	// Define an error message for failed open calls
  346.55 -	_LIT(KLogOpenFailed,"No log available");
  346.56 -
  346.57 -	// Define a set of macros to control logging activity
  346.58 -	// The log server client pointer
  346.59 -	#define __DECLARE_LOG					CLogClient* iLogPtr;
  346.60 -
  346.61 -	// Open a connection to the log server for appended log messages
  346.62 -	#define __OPEN_LOG(aLogName)			{iLogPtr = NULL; TRAPD(logError,(iLogPtr = CLogClient::NewL(aLogName,EFalse))); if(logError !=KErrNone) __QINFO(KLogOpenFailed);}
  346.63 -	// Open a connection to the log server for log messages to go to a clean log
  346.64 -	#define __OPEN_CLEANLOG(aLogName)		{iLogPtr = NULL; TRAPD(logError,(iLogPtr = CLogClient::NewL(aLogName,ETrue))); if(logError !=KErrNone) __QINFO(KLogOpenFailed);}
  346.65 -	// Close the connection to the log server
  346.66 -	#define __CLOSE_LOG						{delete iLogPtr; iLogPtr = NULL;}
  346.67 -	// Push and pop the log onto the cleanup stack
  346.68 -	#define __PUSHLOGL						{CleanupStack::PushL(iLogPtr);}
  346.69 -	#define __POPLOG						{CleanupStack::Pop();}
  346.70 -	
  346.71 -	// Log a simple message
  346.72 -	#define __LOG(aText)					{if(iLogPtr != NULL) iLogPtr->Log(aText,CLogClient::ELogLight);}
  346.73 -	// Log a message with single parameter formatting.
  346.74 -	#define __LOG1(aText,aV1)				{if(iLogPtr != NULL) iLogPtr->Log(CLogClient::ELogLight,aText,aV1);}
  346.75 -
  346.76 -	#if defined (__PROFILING__)
  346.77 -	// Define additional macros for logging profiling information
  346.78 -		#define __PROFILELOG(aText)			{if(iLogPtr != NULL) iLogPtr->Log(aText,CLogClient::ELogProfile);}
  346.79 -		#define __PROFILELOG1(aText,aV1)	{if(iLogPtr != NULL) iLogPtr->Log(CLogClient::ELogProfile,aText,aV1);}
  346.80 -	#else
  346.81 -	// Empty macros for non-profiling builds
  346.82 -		#define __PROFILELOG(aText);
  346.83 -		#define __PROFILELOG1(aText,aV1);
  346.84 -	#endif
  346.85 -
  346.86 -	// A log method entry macro
  346.87 -	#define __LOG_ENTER(aText)			{if(iLogPtr != NULL) iLogPtr->LogEnter(aText,CLogClient::ELogProfile); }
  346.88 -	// A log method exit macro
  346.89 -	#define __LOG_RETURN				{if(iLogPtr != NULL) iLogPtr->LogReturn(); }
  346.90 -	// Log a simple message at a particular level of detail
  346.91 -	#define __LOGX(aLevel,aText)		{if(iLogPtr != NULL) iLogPtr->Log(aText,aLevel);}
  346.92 -	// Log a simple message at a particular level of detail with single parameter formatting.
  346.93 -	#define __LOGX1(aLevel,aText,aV1)	{if(iLogPtr != NULL) iLogPtr->Log(aLevel,aText,aV1);}
  346.94 -	// Log a simple message at trace level of detail
  346.95 -	#define __TRACELOG(aText)			{if(iLogPtr != NULL) iLogPtr->Log(aText,CLogClient::ELogTrace); }
  346.96 -	// Log a simple message at trace level of detail with single parameter formatting.
  346.97 -	#define __TRACELOG1(aText,aV1)		{if(iLogPtr != NULL) iLogPtr->Log(CLogClient::ELogTrace,aText,aV1);}
  346.98 -	// Show a simple message within the info window.
  346.99 -	#define __QINFO(aText)				{User::InfoPrint(aText);} 
 346.100 -	// Configuration of logging server behaviour
 346.101 -	// Turn on the RDebug::Print() when logging (Default setting)
 346.102 -	#define __ENABLE_LOGRDEBUG()		{if(iLogPtr != NULL) iLogPtr->RDebugConfig(ETrue);} 
 346.103 -	// Turn off the RDebug::Print() when logging
 346.104 -	#define __DISABLE_LOGRDEBUG()		{if(iLogPtr != NULL) iLogPtr->RDebugConfig(EFalse);} 
 346.105 -
 346.106 -#else
 346.107 -  #if !defined (_DEBUG)
 346.108 -	// In Release builds we want no macro definition whatsoever
 346.109 -	#define __DECLARE_LOG
 346.110 -
 346.111 -  #else	// In debug builds...
 346.112 -	// Empty macros for non-logging builds, except for __DECLARE_LOG - we want to ensure the
 346.113 -	// object sizes of classes are identical when headers are included in classes with a mixture
 346.114 -	// of __LOGGING turned on and off, to avoid nasty run-time linking errors.
 346.115 -	#define __DECLARE_LOG				void* iLogPtrNotInUse;
 346.116 -  #endif
 346.117 -	#define __OPEN_LOG(aLogName)
 346.118 -	#define __OPEN_CLEANLOG(aLogName)
 346.119 -	#define __CLOSE_LOG
 346.120 -	#define __PUSHLOGL
 346.121 -	#define __POPLOG
 346.122 -	#define __LOG_ENTER(aText)
 346.123 -	#define __LOG_RETURN 
 346.124 -	#define __LOG(aText)
 346.125 -	#define __LOG1(aText,aV1)
 346.126 -	#define __LOGX(aLevel,aText)
 346.127 -	#define __LOGX1(aLevel,aText,aV1)
 346.128 -	#define __PROFILELOG(aText)
 346.129 -	#define __PROFILELOG1(aText,aV1)
 346.130 -	#define __TRACELOG(aText)
 346.131 -	#define __TRACELOG1(aText,aV1)
 346.132 -	#define __QINFO(aText)
 346.133 -	#define __ENABLE_LOGRDEBUG()
 346.134 -	#define __DISABLE_LOGRDEBUG()
 346.135 -
 346.136 -#endif	// __LOGGING
 346.137 -
 346.138 -#endif	// __LOGDEF_H__
   347.1 --- a/epoc32/include/mdataproviderobserver.h	Tue Mar 16 16:12:26 2010 +0000
   347.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   347.3 @@ -1,117 +0,0 @@
   347.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   347.5 -// All rights reserved.
   347.6 -// This component and the accompanying materials are made available
   347.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   347.8 -// which accompanies this distribution, and is available
   347.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  347.10 -//
  347.11 -// Initial Contributors:
  347.12 -// Nokia Corporation - initial contribution.
  347.13 -//
  347.14 -// Contributors:
  347.15 -//
  347.16 -// Description:
  347.17 -// Definition of the data provider observer abstract class
  347.18 -// It is anticipated that this class will be used as a mixin for
  347.19 -// those objects which wish to provide services for an MDataProvider
  347.20 -// plugin.
  347.21 -// 
  347.22 -//
  347.23 -
  347.24 -
  347.25 -#ifndef __MDATAPROVIDEROBSERVER_H__
  347.26 -#define __MDATAPROVIDEROBSERVER_H__
  347.27 -
  347.28 -// System includes
  347.29 -//
  347.30 -#include <e32std.h>
  347.31 -
  347.32 -//##ModelId=3B712B2B01C2
  347.33 -class MDataProviderObserver
  347.34 -/**
  347.35 -MDataProviderObserver provides a virtual interface for any class to observe
  347.36 -any MDataProvider, and provide data receiving services. 
  347.37 -@publishedAll
  347.38 -@deprecated
  347.39 -*/
  347.40 -	{
  347.41 -public:	// Methods
  347.42 -
  347.43 -/**
  347.44 -	Intended Usage	:	Called by the data provider to request processing of 
  347.45 -	the data within the buffer.
  347.46 -	@since			6.0
  347.47 -	@param			aBuffer	A reference to the buffer with the data to process
  347.48 - */
  347.49 -	//##ModelId=3B712B2B0209
  347.50 -	virtual void ProcessDataL(HBufC8& aBuffer) = 0;
  347.51 -
  347.52 -/**
  347.53 -	Intended Usage	:	Called by the data provider to report its status to 
  347.54 -	its observer. A status code which is either a standard error condition, 
  347.55 -	(i.e. < 0), a percentage complete value, ( 0 > aStatus < 100), OR a 
  347.56 -	TPluginStatus value.
  347.57 -	@since			6.0
  347.58 -	@param			aStatusCode	The status of the data provider
  347.59 - */
  347.60 -	//##ModelId=3B712B2B0203
  347.61 -	virtual void SetStatus(TInt aStatusCode = KErrNone) = 0;
  347.62 -
  347.63 -/**
  347.64 -	Intended Usage	:	The request to construct a CDataHandler to process data 
  347.65 -	of aDataType, where aDataType is a string to match against some plugins 
  347.66 -	declared data handling ability.
  347.67 -	@since			6.0
  347.68 -	@param			aDataType A reference to a descriptor with the data type
  347.69 - */
  347.70 -	//##ModelId=3B712B2B01FE
  347.71 -	virtual void SetDocumentTypeL(const TDesC& aDataType) = 0;
  347.72 -
  347.73 -/**
  347.74 -	Intended Usage	:	The request to construct a CDataHandler for aDataType with
  347.75 -	non default document encoding where aDataType is a string to match against 
  347.76 -	some plugins declared data handling ability.
  347.77 -	@since			6.0
  347.78 -	@param			aDataType		A reference to a descriptor with the data type
  347.79 -	@param			aContentType	A reference to a descriptor with the content type
  347.80 - */
  347.81 -	//##ModelId=3B712B2B0200
  347.82 -	virtual void SetDocumentTypeL(const TDesC& aDataType, const TDesC& aContentType) = 0;
  347.83 -
  347.84 -/**
  347.85 -	Intended Usage	:	The report of how many bytes of data is expected to be 
  347.86 -	passed to ProcessDataL, enabling %age reporting capabilities.
  347.87 -	@since			6.0
  347.88 -	@param			aAmountExpected	An integer value of the expected amount
  347.89 - */
  347.90 -	//##ModelId=3B712B2B01EC
  347.91 -	virtual void SetDataExpected(TInt aAmountExpected) = 0;
  347.92 -
  347.93 -/**
  347.94 -	Intended Usage	:	Set the URI that the DataProvider considers the base 
  347.95 -	URI for the current data.
  347.96 -	@since			6.0
  347.97 -	@param			aBaseUri	A const pointer to the uri
  347.98 - */
  347.99 -	//##ModelId=3B712B2B01EA
 347.100 -	virtual void SetBaseUriL(const TDesC* aBaseUri) = 0;
 347.101 -
 347.102 -private:
 347.103 -
 347.104 -/**
 347.105 -	Intended Usage	:	Reserved for future expansion.
 347.106 -	@since			6.0
 347.107 - */
 347.108 -	//##ModelId=3B712B2B01E1
 347.109 -	virtual void MDataProviderObserverReserved1() =0;
 347.110 -
 347.111 -/**
 347.112 -	Intended Usage	:	Reserved for future expansion.
 347.113 -	@since			6.0
 347.114 - */
 347.115 -	//##ModelId=3B712B2B01E0
 347.116 -	virtual void MDataProviderObserverReserved2() =0;
 347.117 -
 347.118 -	};  // MDataProviderObserver
 347.119 -
 347.120 -#endif    // __MDATAPROVIDEROBSERVER_H__
   348.1 --- a/epoc32/include/mdptx.h	Tue Mar 16 16:12:26 2010 +0000
   348.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   348.3 @@ -1,56 +0,0 @@
   348.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   348.5 -// All rights reserved.
   348.6 -// This component and the accompanying materials are made available
   348.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   348.8 -// which accompanies this distribution, and is available
   348.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  348.10 -//
  348.11 -// Initial Contributors:
  348.12 -// Nokia Corporation - initial contribution.
  348.13 -//
  348.14 -// Contributors:
  348.15 -//
  348.16 -// Description:
  348.17 -// Data generator for data transmission, used by URL Handler when transmitting data
  348.18 -// 
  348.19 -//
  348.20 -
  348.21 -#if !defined(__MDPTX_H__)
  348.22 -#define __MDPTX_H__
  348.23 -
  348.24 -#include <e32base.h>
  348.25 -
  348.26 -/**	
  348.27 -	@publishedAll
  348.28 -	@released
  348.29 -*/
  348.30 -class MDataProviderTransmissionData
  348.31 -	{
  348.32 -public:
  348.33 -	// This should return the data that the url handler should transmit.
  348.34 -	// This call will be repeated until datasize amounts of data has been
  348.35 -	// transmitted
  348.36 -	virtual const TDesC8& DataL()=0;
  348.37 -
  348.38 -	// Returns the size of the amount of data that needs to be transmitted.
  348.39 -	virtual TInt DataSize()=0;
  348.40 -
  348.41 -	// This returns the name of the data, this will depend on the type of
  348.42 -	// data transmission,
  348.43 -	virtual const TDesC& DataNameL()=0;
  348.44 -
  348.45 -	// This should return the refering url or NULL;
  348.46 -	virtual const TDesC& RefererUrlL()=0;
  348.47 -	
  348.48 -	// This returns the accepted charset.
  348.49 -	virtual const TDesC& AcceptedCharsetL()=0;
  348.50 -
  348.51 -	// This returns the accepted mimetype
  348.52 -	virtual const TDesC& AcceptedMimetypes()=0;
  348.53 -
  348.54 -private:
  348.55 -	//	Reserved for future expansion
  348.56 -	IMPORT_C virtual void MDataProviderTransmissionData_Reserved1()=0;
  348.57 -	};
  348.58 -
  348.59 -#endif    // __MDPTX_H__
   349.1 --- a/epoc32/include/mframeworksp.h	Tue Mar 16 16:12:26 2010 +0000
   349.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   349.3 @@ -1,94 +0,0 @@
   349.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   349.5 -// All rights reserved.
   349.6 -// This component and the accompanying materials are made available
   349.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   349.8 -// which accompanies this distribution, and is available
   349.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  349.10 -//
  349.11 -// Initial Contributors:
  349.12 -// Nokia Corporation - initial contribution.
  349.13 -//
  349.14 -// Contributors:
  349.15 -//
  349.16 -// Description:
  349.17 -// MMFrameworkSP.h
  349.18 -// 
  349.19 -//
  349.20 -
  349.21 -#ifndef __MFRAMEWORKSP_H__
  349.22 -#define __MFRAMEWORKSP_H__
  349.23 -
  349.24 -// System includes
  349.25 -//
  349.26 -#include <e32def.h>
  349.27 -
  349.28 -// Forward class declarations
  349.29 -//
  349.30 -class MWAPEngineObserver;
  349.31 -class CXmlTaskCoordinator;
  349.32 -class CLocalContext;
  349.33 -class CWapGCtxClient;
  349.34 -class CAttributeLookupTable;
  349.35 -class MWtaiPublicObserver;
  349.36 -
  349.37 -//##ModelId=3B666FA40394
  349.38 -class MFrameworkSP
  349.39 -/**
  349.40 -@publishedAll
  349.41 -@deprecated
  349.42 -*/
  349.43 -	{
  349.44 -public:
  349.45 -
  349.46 -/**
  349.47 -	Intended Usage	:	Return a pointer to the engine observer (pointer 
  349.48 -	because it could be NULL).
  349.49 -	@since			6.0
  349.50 -	@return			A pointer to the MWAPEngineObsever object.
  349.51 - */
  349.52 -	//##ModelId=3B666FA403C7
  349.53 -	virtual MWAPEngineObserver* Observer() =0;
  349.54 -
  349.55 -/**
  349.56 -	Intended Usage	:	Gets the Task Coordinator.
  349.57 -	@since			6.0
  349.58 -	@return			A reference to the Task Coordinater.
  349.59 - */
  349.60 -	//##ModelId=3B666FA403C6
  349.61 -	virtual CXmlTaskCoordinator& TaskCoordinator() =0;
  349.62 -	
  349.63 -/**
  349.64 -	Intended Usage	:	Gets WAP Local Context.
  349.65 -	@since			6.0
  349.66 -	@return			A reference to the WAP Local Context. 
  349.67 - */
  349.68 -	//##ModelId=3B666FA403BE
  349.69 -	virtual CLocalContext& LocalContext() =0;
  349.70 -
  349.71 -/**
  349.72 -	Intended Usage	:	Gets WAP Global Context.
  349.73 -	@since			6.0
  349.74 -	@return			A reference to the WAP Global Context. 
  349.75 - */
  349.76 -	//##ModelId=3B666FA403BD
  349.77 -	virtual CWapGCtxClient& GlobalContext() =0;
  349.78 -
  349.79 -/**
  349.80 -	Intended Usage	:	Gets the Attribute Look Up Table.
  349.81 -	@since			6.0
  349.82 -	@return			A reference to the Attribute Look Up Table.
  349.83 - */
  349.84 -	//##ModelId=3B666FA403BC
  349.85 -	virtual CAttributeLookupTable& AttributeLookup() =0;
  349.86 -
  349.87 -/**
  349.88 -	Intended Usage	:	
  349.89 -	@since			6.0
  349.90 -	@return			A reference to the WtaiPublic observer 
  349.91 - */
  349.92 -	//##ModelId=3B666FA403B2
  349.93 -	virtual MWtaiPublicObserver& WtaiPublicObserver() =0;
  349.94 -
  349.95 -	};
  349.96 -
  349.97 -#endif	// __MFRAMEWORKSP_H__
   350.1 --- a/epoc32/include/miut_err.h	Tue Mar 16 16:12:26 2010 +0000
   350.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   350.3 @@ -1,521 +0,0 @@
   350.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   350.5 -// All rights reserved.
   350.6 -// This component and the accompanying materials are made available
   350.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   350.8 -// which accompanies this distribution, and is available
   350.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  350.10 -//
  350.11 -// Initial Contributors:
  350.12 -// Nokia Corporation - initial contribution.
  350.13 -//
  350.14 -// Contributors:
  350.15 -//
  350.16 -// Description:
  350.17 -//
  350.18 -
  350.19 -#ifndef __MIUT_ERR_H__
  350.20 -#define __MIUT_ERR_H__
  350.21 -
  350.22 -// Minimum value for an MTM-specific error
  350.23 -/**
  350.24 -@publishedAll
  350.25 -@released
  350.26 -*/
  350.27 -const TInt KMiutErrorBase						= (-170);
  350.28 -
  350.29 -// POP3-specific error codes
  350.30 -
  350.31 -/**
  350.32 -@publishedAll
  350.33 -@released
  350.34 -*/
  350.35 -const TInt KPop3ErrorBase						= KMiutErrorBase;
  350.36 -
  350.37 -/**
  350.38 -@publishedAll
  350.39 -@released
  350.40 -*/
  350.41 -const TInt KPop3CannotConnect					= KPop3ErrorBase;
  350.42 -
  350.43 -/**
  350.44 -@publishedAll
  350.45 -@released
  350.46 -*/
  350.47 -const TInt KPop3InvalidUser						= KPop3ErrorBase-1;
  350.48 -
  350.49 -/**
  350.50 -@publishedAll
  350.51 -@released
  350.52 -*/
  350.53 -const TInt KPop3InvalidLogin					= KPop3ErrorBase-2;
  350.54 -
  350.55 -/**
  350.56 -@publishedAll
  350.57 -@released
  350.58 -*/
  350.59 -const TInt KPop3CannotCreateApopLogonString		= KPop3ErrorBase-3;
  350.60 -
  350.61 -/**
  350.62 -@publishedAll
  350.63 -@released
  350.64 -*/
  350.65 -const TInt KPop3ProblemWithRemotePopServer		= KPop3ErrorBase-4;
  350.66 -
  350.67 -/**
  350.68 -@publishedAll
  350.69 -@released
  350.70 -*/
  350.71 -const TInt KPop3CannotOpenServiceEntry			= KPop3ErrorBase-5;
  350.72 -
  350.73 -/**
  350.74 -@publishedAll
  350.75 -@released
  350.76 -*/
  350.77 -const TInt KPop3CannotSetRequiredFolderContext	= KPop3ErrorBase-6;
  350.78 -
  350.79 -/**
  350.80 -@publishedAll
  350.81 -@released
  350.82 -*/
  350.83 -const TInt KPop3InvalidApopLogin				= KPop3ErrorBase-7;
  350.84 -
  350.85 -/**
  350.86 -@publishedAll
  350.87 -@released
  350.88 -*/
  350.89 -const TInt KPopTopError							= (-179);
  350.90 -
  350.91 -// IMSK-specific error code
  350.92 -/**
  350.93 -@publishedAll
  350.94 -@released
  350.95 -*/
  350.96 -const TInt KImskBaseError						= (-180);
  350.97 -
  350.98 -/**
  350.99 -@publishedAll
 350.100 -@released
 350.101 -*/
 350.102 -const TInt KImskErrorDNSNotFound				= KImskBaseError;
 350.103 -
 350.104 -/**
 350.105 -@publishedAll
 350.106 -@released
 350.107 -*/
 350.108 -const TInt KImskErrorControlPanelLocked			= KImskBaseError-1;
 350.109 -
 350.110 -/**
 350.111 -@publishedAll
 350.112 -@released
 350.113 -*/
 350.114 -const TInt KImskErrorISPOrIAPRecordNotFound		= KImskBaseError-2;
 350.115 -
 350.116 -/**
 350.117 -@publishedAll
 350.118 -@released
 350.119 -*/
 350.120 -const TInt KImskErrorActiveSettingIsDifferent	= KImskBaseError-3;
 350.121 -
 350.122 -/**
 350.123 -@publishedAll
 350.124 -@released
 350.125 -*/
 350.126 -const TInt KImskSecuritySettingsFailed			= KImskBaseError-4;
 350.127 -
 350.128 -/**
 350.129 -@publishedAll
 350.130 -@released
 350.131 -*/
 350.132 -const TInt KImskSSLTLSNegotiateFailed			= KImskBaseError-5;
 350.133 -
 350.134 -/**
 350.135 -@publishedAll
 350.136 -@released
 350.137 -*/
 350.138 -const TInt KImskTopError						= (-190);
 350.139 -
 350.140 -// error codes -190 to -199 are used by Sockets
 350.141 -
 350.142 -// IMAP-specific error codes
 350.143 -/**
 350.144 -@publishedAll
 350.145 -@released
 350.146 -*/
 350.147 -const TInt KImapBaseError						= (-200);
 350.148 -
 350.149 -/**
 350.150 -@publishedAll
 350.151 -@released
 350.152 -*/
 350.153 -const TInt KErrImapConnectFail					= KImapBaseError;
 350.154 -
 350.155 -/**
 350.156 -@publishedAll
 350.157 -@released
 350.158 -*/
 350.159 -const TInt KErrImapServerFail					= KImapBaseError-1;
 350.160 -
 350.161 -/**
 350.162 -@publishedAll
 350.163 -@released
 350.164 -*/
 350.165 -const TInt KErrImapServerParse					= KImapBaseError-2;
 350.166 -
 350.167 -/**
 350.168 -@publishedAll
 350.169 -@released
 350.170 -*/
 350.171 -const TInt KErrImapServerBusy					= KImapBaseError-3;
 350.172 -
 350.173 -/**
 350.174 -@publishedAll
 350.175 -@released
 350.176 -*/
 350.177 -const TInt KErrImapServerVersion				= KImapBaseError-4;
 350.178 -
 350.179 -/**
 350.180 -@publishedAll
 350.181 -@released
 350.182 -*/
 350.183 -const TInt KErrImapSendFail						= KImapBaseError-5;
 350.184 -
 350.185 -/**
 350.186 -@publishedAll
 350.187 -@released
 350.188 -*/
 350.189 -const TInt KErrImapBadLogon						= KImapBaseError-6;
 350.190 -
 350.191 -/**
 350.192 -@publishedAll
 350.193 -@released
 350.194 -*/
 350.195 -const TInt KErrImapSelectFail					= KImapBaseError-7;
 350.196 -
 350.197 -/**
 350.198 -@publishedAll
 350.199 -@released
 350.200 -*/
 350.201 -const TInt KErrImapWrongFolder					= KImapBaseError-8;
 350.202 -
 350.203 -/**
 350.204 -@publishedAll
 350.205 -@released
 350.206 -*/
 350.207 -const TInt KErrImapServerNoSecurity				= KImapBaseError-9;
 350.208 -
 350.209 -/**
 350.210 -@publishedAll
 350.211 -@released
 350.212 -*/
 350.213 -const TInt KErrImapServerLoginDisabled			= KImapBaseError-10;
 350.214 -
 350.215 -/**
 350.216 -@publishedAll
 350.217 -@released
 350.218 -*/
 350.219 -const TInt KErrImapTLSNegotiateFailed  			= KImapBaseError-11;
 350.220 -
 350.221 -/**
 350.222 -@publishedAll
 350.223 -@released
 350.224 -*/
 350.225 -const TInt KErrImapCantDeleteFolder  			= KImapBaseError-12;
 350.226 -
 350.227 -/**
 350.228 -@publishedAll
 350.229 -@released
 350.230 -*/
 350.231 -const TInt KErrImapInvalidServerResponse  		= KImapBaseError-13;
 350.232 -
 350.233 -/**
 350.234 -@publishedAll
 350.235 -@released
 350.236 -*/
 350.237 -//This POP error declared in IMAP error range, 
 350.238 -//since there is no scope to declare the error within pop range. 
 350.239 -const TInt KErrPop3ServerAlreadyConnected 		= KImapBaseError-14;
 350.240 -
 350.241 -/**
 350.242 -@publishedAll
 350.243 -@released
 350.244 -*/
 350.245 -const TInt KImapTopError						= (-219);
 350.246 -
 350.247 -// DMSS-specific error codes
 350.248 -/**
 350.249 -@publishedAll
 350.250 -@released
 350.251 -*/
 350.252 -const TInt KDmssBaseError						= (-220);
 350.253 -
 350.254 -/**
 350.255 -@publishedAll
 350.256 -@released
 350.257 -*/
 350.258 -const TInt KDmssUnknownErr						= (KDmssBaseError-1);
 350.259 -
 350.260 -/**
 350.261 -@publishedAll
 350.262 -@released
 350.263 -*/
 350.264 -const TInt KDmssMailboxUnavailableErr			= (KDmssBaseError-2);
 350.265 -
 350.266 -/**
 350.267 -@publishedAll
 350.268 -@released
 350.269 -*/
 350.270 -const TInt KDmssActionAbortedErr				= (KDmssBaseError-3);
 350.271 -
 350.272 -/**
 350.273 -@publishedAll
 350.274 -@released
 350.275 -*/
 350.276 -const TInt KDmssActionNotTakenErr				= (KDmssBaseError-4);
 350.277 -
 350.278 -/**
 350.279 -@publishedAll
 350.280 -@released
 350.281 -*/
 350.282 -const TInt KDmssCmdUnrecognisedErr				= (KDmssBaseError-5);
 350.283 -
 350.284 -/**
 350.285 -@publishedAll
 350.286 -@released
 350.287 -*/
 350.288 -const TInt KDmssSyntaxErrorErr					= (KDmssBaseError-6);
 350.289 -
 350.290 -/**
 350.291 -@publishedAll
 350.292 -@released
 350.293 -*/
 350.294 -const TInt KDmssCmdNotImplementedErr			= (KDmssBaseError-7);
 350.295 -
 350.296 -/**
 350.297 -@publishedAll
 350.298 -@released
 350.299 -*/
 350.300 -const TInt KDmssBadSequenceErr					= (KDmssBaseError-8);
 350.301 -
 350.302 -/**
 350.303 -@publishedAll
 350.304 -@released
 350.305 -*/
 350.306 -const TInt KDmssParamNotImplementedErr			= (KDmssBaseError-9);
 350.307 -
 350.308 -/**
 350.309 -@publishedAll
 350.310 -@released
 350.311 -*/
 350.312 -const TInt KDmssMailboxNoAccessErr				= (KDmssBaseError-10);
 350.313 -
 350.314 -/**
 350.315 -@publishedAll
 350.316 -@released
 350.317 -*/
 350.318 -const TInt KDmssExceededStorageErr				= (KDmssBaseError-11);
 350.319 -
 350.320 -/**
 350.321 -@publishedAll
 350.322 -@released
 350.323 -*/
 350.324 -const TInt KDmssMailboxNameErr					= (KDmssBaseError-12);
 350.325 -
 350.326 -/**
 350.327 -@publishedAll
 350.328 -@released
 350.329 -*/
 350.330 -const TInt KDmssTransactionFailedErr			= (KDmssBaseError-13);
 350.331 -
 350.332 -/**
 350.333 -@publishedAll
 350.334 -@released
 350.335 -*/
 350.336 -const TInt KDmssTimeOutErr						= (KDmssBaseError-14);
 350.337 -
 350.338 -/**
 350.339 -@publishedAll
 350.340 -@released
 350.341 -*/
 350.342 -const TInt KDmssTopError						= (-239);
 350.343 -
 350.344 -// SMTP client-specific error codes
 350.345 -/**
 350.346 -@publishedAll
 350.347 -@released
 350.348 -*/
 350.349 -const TInt KSmtpBaseError						= (-240);
 350.350 -
 350.351 -/**
 350.352 -@publishedAll
 350.353 -@released
 350.354 -*/
 350.355 -const TInt KSmtpNoMailFromErr					=  KSmtpBaseError;
 350.356 -
 350.357 -/**
 350.358 -@publishedAll
 350.359 -@released
 350.360 -*/
 350.361 -const TInt KSmtpUnknownErr						= (KSmtpBaseError-1);
 350.362 -
 350.363 -/**
 350.364 -@publishedAll
 350.365 -@released
 350.366 -*/
 350.367 -const TInt KSmtpBadMailFromAddress				= (KSmtpBaseError-2);
 350.368 -
 350.369 -/**
 350.370 -@publishedAll
 350.371 -@released
 350.372 -*/
 350.373 -const TInt KSmtpBadRcptToAddress				= (KSmtpBaseError-3);
 350.374 -
 350.375 -/**
 350.376 -@publishedAll
 350.377 -@released
 350.378 -*/
 350.379 -const TInt KSmtpLoginRefused					= (KSmtpBaseError-4);
 350.380 -
 350.381 -/**
 350.382 -@publishedAll
 350.383 -@released
 350.384 -*/
 350.385 -const TInt KSmtpNoMsgsToSendWithActiveSettings	= (KSmtpBaseError-5);
 350.386 -
 350.387 -/**
 350.388 -@publishedAll
 350.389 -@released
 350.390 -*/
 350.391 -const TInt KErrSmtpTLSNegotiateFailed 			= (KSmtpBaseError-6);
 350.392 -
 350.393 -/**
 350.394 -@publishedAll
 350.395 -@released
 350.396 -*/
 350.397 -const TInt KErrSmtpBufferOverFlow 			    = (KSmtpBaseError-7);
 350.398 -
 350.399 -/**
 350.400 -@publishedAll
 350.401 -@released
 350.402 -*/
 350.403 -const TInt KSmtpTopError					    = (-249);
 350.404 - 
 350.405 -// IMCM error codes
 350.406 -/**
 350.407 -@publishedAll
 350.408 -@released
 350.409 -*/
 350.410 -const TInt KImcmBaseError						= (-250);
 350.411 -
 350.412 -/**
 350.413 -@publishedAll
 350.414 -@released
 350.415 -*/
 350.416 -const TInt KImcmHTMLPartNotPopulated			=  KImcmBaseError;
 350.417 -
 350.418 -/**
 350.419 -@publishedAll
 350.420 -@released
 350.421 -*/
 350.422 -const TInt KImcmInvalidMessageStructure			= (KImcmBaseError-1);
 350.423 -
 350.424 -// POPS error codes
 350.425 -/**
 350.426 -@publishedAll
 350.427 -@released
 350.428 -*/
 350.429 -const TInt KPop3BaseError						= (-260);
 350.430 -
 350.431 -/**
 350.432 -@publishedAll
 350.433 -@released
 350.434 -*/
 350.435 -const TInt KErrPop3TLSNegotiateFailed			=  KPop3BaseError;
 350.436 -
 350.437 -/**
 350.438 -@internalComponent
 350.439 -@released
 350.440 -*/
 350.441 -enum TImcmPanic
 350.442 -	{
 350.443 -	EOffOpNoBodyText = 0,
 350.444 -	EOffOpBadMtmTypeUid = 1,
 350.445 -	EOffOpNoCMsvEntrySet = 2,
 350.446 -	EOffOpEntryShouldBeFolder = 3,
 350.447 -	EOffOpTwoSameLinesNotAllowed = 4,
 350.448 -	EOffOpNoMemory = 5,
 350.449 -	EOffOpInvalidConstruction = 6,
 350.450 -	EOffOpListOutOfSync = 7,
 350.451 -	EOffOpNoMtmParameters = 8,
 350.452 -	EMiutBadStreamVersion = 9,
 350.453 -	EEntryIsNotMessage = 10,
 350.454 -	EMiutArrayHasOddNumberOfElements = 11,		// ie there should be even number of entries in array
 350.455 -	EMiutLocalServiceIdSet = 12,				// iServiceId should not be set to Local
 350.456 -	EPopcMTMNoBodyText = 13,
 350.457 -	EPopcMTMBadMtmTypeUid = 14,
 350.458 -	EPopcMTMNoCMsvEntrySet = 15,
 350.459 -	EPopcMTMOperationNULL = 16,
 350.460 -	EPopcMTMNotAServiceEntry = 17,
 350.461 -	EPopcUnknownNewEmailType = 18,
 350.462 -	EPopcUnknownSyncFunction = 19,
 350.463 -	ESmtcMTMNoBodyText = 20,
 350.464 -	ESmtcMTMBadMtmTypeUid = 21,
 350.465 -	ESmtcMTMNoCMsvEntrySet = 22,
 350.466 -	ESmtcMTMOperationNULL = 23,
 350.467 -	ESmtcMTMNotAServiceEntry = 24,
 350.468 -	ESmtcUnknownNewEmailType = 25,
 350.469 -	ESmtcUnknownSyncFunction = 26,
 350.470 -	ESmtcMTMStoringBadEntryType = 27,
 350.471 -	ESmtcMTMRestoringBadEntryType = 28,
 350.472 -	ESmtcMTMNotAMessageEntry = 29,
 350.473 -	EMiutActiveInFinalProgress = 30,
 350.474 -	EImpcNoBodyText = 31,
 350.475 -	EImpcBadMtmTypeUid = 32,
 350.476 -	EImpcNoCMsvEntrySet = 33,
 350.477 -	EImpcEntryShouldBeFolder = 34,
 350.478 -	EImpcTwoSameLinesNotAllowed = 35,
 350.479 -	EImpcNoMemory = 36,
 350.480 -	EImpcInvalidConstruction = 37,
 350.481 -	EImpcBadServiceEntry = 38,
 350.482 -	EImpcNoBaseMtm = 39,
 350.483 -	EImpcNoAddresseeList = 40,
 350.484 -	EImpcInvalidProgress = 41,
 350.485 -	EImpcNotSupported = 42,
 350.486 -	EImpcMTMNotAMessageEntry = 43,
 350.487 -	EImpcMTMNotAServiceEntry = 44,
 350.488 -	EImcmMessageEntryHasMoreThanOneFolder = 45,
 350.489 -	EImcmUnknownState = 46,
 350.490 -	EImcmFinalProgressFailed = 47,
 350.491 -	EImcmNoEikonEnvironment = 48,
 350.492 -	EImcmSetVersionNotSupported = 49,
 350.493 -	EImcmSystemDefaultCharsetNotSupported = 50,
 350.494 - 	EImcmHtmlConverterNotFound = 51,
 350.495 -	EImcmUnknownMtm = 52,
 350.496 -	EImEmailOpUnknownAttachmentType = 53,
 350.497 -	EImcmNonIdleRetrievalState = 54,
 350.498 -	EImcmIdleRetrievalState = 55,
 350.499 -	EImcmSyncDownloadRulesInvalidPos1 = 56,
 350.500 -	EImcmSyncDownloadRulesInvalidPos2 = 57,
 350.501 -	EImcmSyncDownloadRulesInvalidPos3 = 58,
 350.502 -	EImcmSyncDownloadRulesInvalidBearerTypes1 = 59,
 350.503 -	EImcmSyncDownloadRulesInvalidBearerTypes2 = 60,
 350.504 -	EImcmSyncDownloadRulesInvalidBearerTypes3 = 61,
 350.505 -	EImcmTransportBufferSizesInvalidPos1 = 62,
 350.506 -	EImcmTransportBufferSizesInvalidPos2 = 63,
 350.507 -	EImcmTransportBufferSizesInvalidPos3 = 64,
 350.508 -	EImcmTransportBufferSizesInvalidBearerTypes1 = 65,
 350.509 -	EImcmTransportBufferSizesInvalidBearerTypes2 = 66,
 350.510 -	EImcmTransportBufferSizesInvalidBearerTypes3 = 67,
 350.511 -	EImcmTransportBufferSizesInvalidFetchRequestSize = 68,
 350.512 -	EImcmTransportBufferSizesInvalidMaxOutstandingFetchResponses = 69,
 350.513 -	EImcmMobilityAccountsListInvalidPos1 = 70,
 350.514 -	EImcmMobilityAccountsListInvalidPos2 = 71,
 350.515 -	EImcmMobilityAccountsListInvalidPos3 = 72,
 350.516 -	EImcmMobilityAccountsListInvalidIAPListCount = 73
 350.517 -	};
 350.518 -
 350.519 -/**
 350.520 -@internalComponent
 350.521 -*/
 350.522 -GLREF_C void gPanic(TImcmPanic aPanic);
 350.523 -
 350.524 -#endif // __MIUT_ERR_H__
   351.1 --- a/epoc32/include/miutatch.h	Tue Mar 16 16:12:26 2010 +0000
   351.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   351.3 @@ -1,94 +0,0 @@
   351.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   351.5 -// All rights reserved.
   351.6 -// This component and the accompanying materials are made available
   351.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   351.8 -// which accompanies this distribution, and is available
   351.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  351.10 -//
  351.11 -// Initial Contributors:
  351.12 -// Nokia Corporation - initial contribution.
  351.13 -//
  351.14 -// Contributors:
  351.15 -//
  351.16 -// Description:
  351.17 -//
  351.18 -
  351.19 -#if !defined (__MIUTATCH_H__)
  351.20 -#define __MIUTATCH_H__
  351.21 -
  351.22 -
  351.23 -#if !defined (__S32FILE_H__)
  351.24 -#include <s32file.h>
  351.25 -#endif
  351.26 -
  351.27 -const TInt KDataLineBufferLength = 4096;
  351.28 -_LIT(KImcvAttachFormatStr, "%S(%d)%S");
  351.29 -
  351.30 -/**
  351.31 -@internalTechnology
  351.32 -@released
  351.33 -*/
  351.34 -enum TImAttachmentFileState
  351.35 -	{ 
  351.36 -	EFileNotOpen, 
  351.37 -	EFileIsOpen, 
  351.38 -	EFileIsClosed,		
  351.39 -	EFileIsCorrupt,		// UU data being decoded is corrupt
  351.40 -	EFileIsIncomplete,	// file write failed
  351.41 -	EFileFailedToOpen,	// can't open attach file
  351.42 -	EFileTopIncomplete	// File is incomplete due to top
  351.43 -	};
  351.44 -
  351.45 -class TImAttachmentFile		// utility class to handle file operations with Email attachments
  351.46 -/**
  351.47 -@internalAll
  351.48 -@released
  351.49 -*/
  351.50 -    {
  351.51 -public:
  351.52 - 	enum TImFileOpenMode
  351.53 -		{
  351.54 -		/**
  351.55 -		File opened for read mode
  351.56 -		*/
  351.57 -		EImFileRead = 0,
  351.58 -		/**
  351.59 -		File opened for write mode
  351.60 -		*/
  351.61 -		EImFileWrite,
  351.62 -		};   
  351.63 -public:
  351.64 -    IMPORT_C TImAttachmentFile(RFs& aFileSession);  // constructor
  351.65 -    IMPORT_C ~TImAttachmentFile();  // destructor
  351.66 -
  351.67 -    IMPORT_C TInt MakeDir (const TDesC& aDirPath);
  351.68 -    IMPORT_C TInt OpenFile (const TDesC& aDirPath ,const TDesC& aFileName );
  351.69 -    IMPORT_C TInt CreateFile (const TDesC& aDirPath ,const TDesC& aFileName );
  351.70 -    IMPORT_C TInt ReadFile (TDes8& rBuffer, TInt aNumBytes );
  351.71 -    IMPORT_C TInt WriteFile (const TDesC8& aBuffer);
  351.72 -    IMPORT_C TInt WriteFile (const TDesC16& aBuffer);
  351.73 -    IMPORT_C TInt CloseFile();
  351.74 -	IMPORT_C TInt DeleteAttachment(const TDesC& aDirPath,const TDesC& aFileName);
  351.75 -	
  351.76 -	IMPORT_C void SetFileHandle(RFile& aFile,TImFileOpenMode aFileMode);
  351.77 -						
  351.78 -	TInt AppendValidFile(const TDesC& aDirPath, const TDesC& aFileName, TFileName& rFullFilePath);
  351.79 -private:
  351.80 -	void Reset();
  351.81 -	TInt WriteFile ();
  351.82 -    TInt ReadFile ();
  351.83 -	TInt FlushFile();
  351.84 -	TPtrC8 SelectFileData(TInt& abufLen, TInt& aDataLen);
  351.85 -
  351.86 -private:
  351.87 -    RFs&		    iFileSession;
  351.88 -	RFile			iFile;
  351.89 -	TFileText		iFileText;
  351.90 -	TFileName		iFullFilePath;
  351.91 -	TBuf8<KDataLineBufferLength>		iDataLine;
  351.92 -	TBool			iWritingToFile;
  351.93 -	TInt			iSpaceOnCache;
  351.94 -	TInt			iPositionInCache;
  351.95 -    };
  351.96 -
  351.97 -#endif
   352.1 --- a/epoc32/include/miutconv.h	Tue Mar 16 16:12:26 2010 +0000
   352.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   352.3 @@ -1,206 +0,0 @@
   352.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   352.5 -// All rights reserved.
   352.6 -// This component and the accompanying materials are made available
   352.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   352.8 -// which accompanies this distribution, and is available
   352.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  352.10 -//
  352.11 -// Initial Contributors:
  352.12 -// Nokia Corporation - initial contribution.
  352.13 -//
  352.14 -// Contributors:
  352.15 -//
  352.16 -// Description:
  352.17 -//
  352.18 -
  352.19 -#ifndef __MIUTCONV_H__
  352.20 -#define __MIUTCONV_H__
  352.21 -
  352.22 -#include <e32base.h>
  352.23 -
  352.24 -
  352.25 -#if !defined (__CHARCONV_H_)
  352.26 -#include <charconv.h>
  352.27 -#endif
  352.28 -
  352.29 -#if !defined (__MIUTHDR_H__)
  352.30 -#include <miuthdr.h>		
  352.31 -#endif
  352.32 -
  352.33 -#if !defined (__UTF_H_)
  352.34 -#include <utf.h>
  352.35 -#endif
  352.36 -
  352.37 -// IMail-specific stream type within an IMail file store for TImEmailTransformingInfo
  352.38 -//
  352.39 -const TUint KUidMsvCharsetNone				= {0x10003C7F};		// 268450943
  352.40 -const TUid KUidMsgFileTransformingInfo		= {0x100094A5};		// 268473509
  352.41 -const TUid KUidMsgEmailGeneralCenRep		= {0x10285A25};		// 271079973
  352.42 -
  352.43 -// No longer used as the charset information retrieved from resource file.
  352.44 -// Might possibly needed in the future ? maybe
  352.45 -// const TUid KUidMiutSystemDefaultCharset		= {0x10009418};		// 268473368
  352.46 -// const TUid KUidMiutOverrideCharset			= {0x10009419};		// 268473369
  352.47 -
  352.48 -_LIT8(KMiutUndisplayableChar, "?");
  352.49 -
  352.50 -/** SMTP send methods. 
  352.51 -@publishedAll
  352.52 -@released
  352.53 -*/
  352.54 -enum TImSendMethod
  352.55 -	{ 
  352.56 -	/** Simple email. */
  352.57 -	ESendAsSimpleEmail,
  352.58 -	/** MIME email. */
  352.59 -	ESendAsMimeEmail
  352.60 -	};	
  352.61 -
  352.62 -
  352.63 -// Information to be used when sending an email message.
  352.64 -// Relating to how parts are encoded and converted.
  352.65 -//
  352.66 -class TImEmailTransformingInfo
  352.67 -/** Encapsulates character conversion and encoding settings for sending SMTP email.
  352.68 -
  352.69 -The default outcomes for header, body, HTML, and attachment parts respectively 
  352.70 -for each of the listed categories are given below:
  352.71 -
  352.72 -Plain Charset: ISO-8859-1,ISO-8859-1,N/A,N/A
  352.73 -
  352.74 -Plain Encoding:None,None,N/A,UU
  352.75 -
  352.76 -MIME Charset:UTF8,UTF8,UTF8*,N/A
  352.77 -
  352.78 -MIME Encoding:B,QP,Base64,Base64
  352.79 -
  352.80 -*: the UTF8 value set in the header field, but no conversion is done. The 
  352.81 -HTML converter converts to UTF8. 
  352.82 -@publishedAll
  352.83 -@released
  352.84 -*/
  352.85 -	{
  352.86 -public:
  352.87 -    IMPORT_C TImEmailTransformingInfo& operator=(const TImEmailTransformingInfo& aInfo);
  352.88 -    IMPORT_C TBool operator==(const TImEmailTransformingInfo& aInfo);
  352.89 -	
  352.90 -	// streaming operations
  352.91 -	IMPORT_C void ExternalizeL( RWriteStream& aWriteStream ) const;
  352.92 -	IMPORT_C void InternalizeL( RReadStream& aReadStream );
  352.93 -	IMPORT_C void StoreL( CMsvStore& aStore ) const;
  352.94 -	IMPORT_C void RestoreL( CMsvStore& aStore );
  352.95 -
  352.96 -	// Setting functions
  352.97 -	IMPORT_C void SetToDefault(const TImSendMethod aMethod);
  352.98 -	IMPORT_C void SetSendMethod(const TImSendMethod aMethod);
  352.99 -	IMPORT_C TImSendMethod SendMethod() const;
 352.100 -
 352.101 -	IMPORT_C void SetHeaderEncodingQ();
 352.102 -	IMPORT_C void SetHeaderEncodingB();
 352.103 -	IMPORT_C void SetBodyTextEncoding(TImEncodingType aType);
 352.104 -	IMPORT_C void SetHTMLEncoding(TImEncodingType aType);
 352.105 -	IMPORT_C void SetAttachmentEncoding(TImEncodingType aType);
 352.106 -	
 352.107 -	IMPORT_C void SetHeaderAndBodyCharset(TUint aCharset);
 352.108 -	IMPORT_C void SetHeaderCharset(TUint aCharset);
 352.109 -	IMPORT_C void SetBodyTextCharset(TUint aCharset);
 352.110 -	IMPORT_C void SetHTMLCharset(TUint aCharset);
 352.111 -
 352.112 -	// Accessor functions
 352.113 -	IMPORT_C TImEncodingType HeaderEncoding() const;
 352.114 -	IMPORT_C TImEncodingType BodyTextEncoding() const;
 352.115 -	IMPORT_C TImEncodingType HTMLEncoding() const;
 352.116 -	IMPORT_C TImEncodingType AttachmentEncoding() const;
 352.117 -	
 352.118 -	IMPORT_C TUint HeaderCharset() const;
 352.119 -	IMPORT_C TUint BodyTextCharset() const;
 352.120 -	IMPORT_C TUint HTMLCharset() const;
 352.121 -
 352.122 -private:
 352.123 -	void SetHeaderEncoding(TImEncodingType aType);
 352.124 -
 352.125 -private:
 352.126 -	TImEncodingType	iHeaderEncoding;	
 352.127 -	TImEncodingType	iBodyEncoding;	
 352.128 -	TImEncodingType	iHTMLEncoding;	
 352.129 -	TImEncodingType	iAttachmentEncoding;	
 352.130 -
 352.131 -	TUint	iHeaderCharset;	
 352.132 -	TUint	iBodyCharset;	
 352.133 -	TUint	iHTMLCharset;	
 352.134 -	TUint	iTextAttachmentCharset;	
 352.135 -
 352.136 -	TImSendMethod iSendMethod;
 352.137 -	};
 352.138 -
 352.139 -
 352.140 -// Default Sending Charset/Encoding Values
 352.141 -const TImEncodingType KDefaultMIMEHeaderEncoding	=	EEncodingTypeBASE64;		// MIME
 352.142 -const TImEncodingType KDefaultMIMEBodyTextEncoding	=	EEncodingTypeQP;
 352.143 -const TImEncodingType KDefaultMIMEHTMLEncoding		=	EEncodingTypeBASE64;
 352.144 -const TImEncodingType KDefaultMIMEAttachmentEncoding=	EEncodingTypeBASE64;
 352.145 -
 352.146 -#define KDefaultPlainCharset		KCharacterSetIdentifierIso88591
 352.147 -
 352.148 -const TImEncodingType	KDefaultPlainHeaderEncoding		=	EEncodingTypeNone;	// Non-MIME or Plain
 352.149 -const TImEncodingType	KDefaultPlainBodyTextEncoding	=	EEncodingTypeNone;
 352.150 -const TImEncodingType KDefaultPlainAttachmentEncoding	=	EEncodingTypeUU;
 352.151 -
 352.152 -
 352.153 -
 352.154 -
 352.155 -// Wrapper class for CHARCONV.
 352.156 -// 'Our' charset dependant on build, UNICODE or CodePage 1252.
 352.157 -//
 352.158 -class CImConvertCharconv : public CBase
 352.159 -/**
 352.160 -@internalTechnology
 352.161 -@released
 352.162 -*/
 352.163 -	{
 352.164 -public:	
 352.165 -	IMPORT_C static CImConvertCharconv* NewL(CCnvCharacterSetConverter& aConverter, RFs& anFs);
 352.166 -	~CImConvertCharconv();
 352.167 -
 352.168 -	// MUST call prepare function first.
 352.169 -	IMPORT_C TInt ConvertToOurCharsetL( const TDesC8& aBufIn, TDes& rBufOut, 
 352.170 -										TInt& rNumUnconvertedChars, 
 352.171 -										TInt& rIndexOfFirstUnconvertedChar);
 352.172 -	IMPORT_C TInt ConvertFromOurCharsetL(const TDesC& aBufIn, TDes8& rBufOut, 
 352.173 -										 TInt& rNumUnconvertedChars,
 352.174 -										 TInt& rIndexOfFirstUnconvertedChar);
 352.175 -
 352.176 -	// MUST be called prior to calling above two functions.
 352.177 -	IMPORT_C TInt PrepareToConvertToFromOurCharsetL(const TUint aUid);
 352.178 -
 352.179 -	IMPORT_C TUint GetMimeCharsetUidL(const TDesC8& aBufIn) const;
 352.180 -	IMPORT_C HBufC8* GetMimeCharsetTextStringL(const TUint& aUid) const;
 352.181 -	IMPORT_C TUint DefaultCharset() const;
 352.182 -	IMPORT_C TUint SystemDefaultCharset() const;
 352.183 -
 352.184 -	static TInt StraightCopy( const TDesC8& aBufIn, TDes& rBufOut);
 352.185 -	static TInt StraightCopy( const TDesC& aBufIn, TDes8& rBufOut);
 352.186 -private:
 352.187 -	void ConstructL();
 352.188 -	CImConvertCharconv(CCnvCharacterSetConverter& aConverter, RFs& anFs);
 352.189 -	TBool CharsetAvailable(const TUint aUid);
 352.190 -	void SetSystemDefaultCharsetL();
 352.191 -
 352.192 -	TInt GetSystemCharsetFromCenRepL(TDes8& aMimeCharSet);
 352.193 -
 352.194 -	enum TEmailGeneralSettingsCenRepId
 352.195 -		{
 352.196 -		EEmailGeneralCharSetId				= 0x00000000
 352.197 -		};
 352.198 -
 352.199 -private:
 352.200 -	CCnvCharacterSetConverter& iConverter;
 352.201 -	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iCharsetsAvailable; 
 352.202 -
 352.203 -	RFs& iFs;
 352.204 -	TUint iCharsetUid;
 352.205 -	TUint iSystemDefaultCharset;		// Value obtained from .ini file
 352.206 -	TInt  iCharconvState;
 352.207 -	};
 352.208 -
 352.209 -#endif
   353.1 --- a/epoc32/include/miutdef.h	Tue Mar 16 16:12:26 2010 +0000
   353.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   353.3 @@ -1,56 +0,0 @@
   353.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   353.5 -// All rights reserved.
   353.6 -// This component and the accompanying materials are made available
   353.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   353.8 -// which accompanies this distribution, and is available
   353.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  353.10 -//
  353.11 -// Initial Contributors:
  353.12 -// Nokia Corporation - initial contribution.
  353.13 -//
  353.14 -// Contributors:
  353.15 -//
  353.16 -// Description:
  353.17 -// This header file defines the bit flags that may be used to instruct
  353.18 -// the CImMessageOperation class how to construct a new Email message
  353.19 -// 
  353.20 -//
  353.21 -
  353.22 -#if !defined (__MIUTDEF_H__)
  353.23 -#define __MIUTDEF_H__
  353.24 -
  353.25 -/** Type for email creation flags used in the @c aMsvEmailTypeList parameter of CImEmailOperation 
  353.26 -functions.
  353.27 -
  353.28 -@see KMsvEmailTypeListMHTMLMessage
  353.29 -@see KMsvEmailTypeListInvisibleMessage
  353.30 -@see KMsvEmailTypeListMessageInPreparation 
  353.31 -@publishedAll
  353.32 -@released
  353.33 -*/
  353.34 -typedef TUint TMsvEmailTypeList;
  353.35 -
  353.36 -/** Flags that a new message should be of MHTML type. 
  353.37 -
  353.38 -If this is not set, a plain-text message is created. 
  353.39 -
  353.40 -@publishedAll
  353.41 -@released
  353.42 -@see TMsvEmailTypeList
  353.43 -*/
  353.44 -const TMsvEmailTypeList KMsvEmailTypeListMHTMLMessage				= 0x00000001;	// if not set Email is a "normal" (i.e. non-MHTML) Email message
  353.45 -/** Flags that a new message should be invisible.
  353.46 -@publishedAll
  353.47 -@released
  353.48 -@see TMsvEmailTypeList
  353.49 -*/
  353.50 -const TMsvEmailTypeList KMsvEmailTypeListInvisibleMessage			= 0x00000002;	// if set, message stays invisible on completion
  353.51 -
  353.52 -/** Flags that a new message should have the "in preparation" flag set. 
  353.53 -@publishedAll
  353.54 -@released
  353.55 -@see TMsvEmailTypeList
  353.56 -*/
  353.57 -const TMsvEmailTypeList KMsvEmailTypeListMessageInPreparation		= 0x00000004;	// if set, message stays marked "In preparation" on completion
  353.58 -
  353.59 -#endif //MIUTDEF.H
   354.1 --- a/epoc32/include/miuthdr.h	Tue Mar 16 16:12:26 2010 +0000
   354.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   354.3 @@ -1,849 +0,0 @@
   354.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   354.5 -// All rights reserved.
   354.6 -// This component and the accompanying materials are made available
   354.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   354.8 -// which accompanies this distribution, and is available
   354.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  354.10 -//
  354.11 -// Initial Contributors:
  354.12 -// Nokia Corporation - initial contribution.
  354.13 -//
  354.14 -// Contributors:
  354.15 -//
  354.16 -// Description:
  354.17 -//
  354.18 -
  354.19 -#ifndef __MIUTHDR_H__
  354.20 -#define __MIUTHDR_H__
  354.21 -
  354.22 -#include <s32strm.h>
  354.23 -#include <badesca.h>
  354.24 -#include <pop3cmds.h>
  354.25 -#include <msvstd.h>
  354.26 -#include <msvids.h>			// KMsvNullIndexEntryId
  354.27 -#include <miutstd.hrh>			// KUidMsvEmailTextEntryValue
  354.28 -
  354.29 -// IMail-specific stream type within an IMail file store for CImHeader
  354.30 -const TUid KUidMsgFileMimeHeader	= {0x1000160F};		// 268441103 decimal
  354.31 -// IMail-specific stream type within an IMail file store for CImMimeHeader
  354.32 -const TUid KUidMsgFileIMailHeader	= {0x100001D8};		// 268435928 decimal
  354.33 -
  354.34 -// Identifies which version of CImHeader has been stored in stream
  354.35 -const TUint16 KImHeaderVersion = 2; 
  354.36 -
  354.37 -const TUid KUidMsvEmailTextEntry			= {KUidMsvEmailTextEntryValue};
  354.38 -const TUid KUidMsvEmailHtmlEntry			= {KUidMsvEmailHtmlEntryValue};
  354.39 -const TUid KUidMsvEmailExternalBodyEntry	= {KUidMsvEmailExternalBodyEntryValue};
  354.40 -const TUid KUidMsvEmailRtfEntry				= {KUidMsvEmailRtfEntryValue};
  354.41 -
  354.42 -
  354.43 -_LIT8(KMiutDateFormat, " %S, %2d %S %04d %02d:%02d:%02d ");
  354.44 -_LIT8(KMiutMonthNames, "JanFebMarAprMayJunJulAugSepOctNovDec");
  354.45 -_LIT8(KMiutDayNames, "MonTueWedThuFriSatSun");
  354.46 -_LIT8(KMiutTimeZoneNeg, "-%02d%02d");
  354.47 -_LIT8(KMiutTimeZonePos, "+%02d%02d");
  354.48 -
  354.49 -_LIT8(KMiutBase64String, "Base64");
  354.50 -_LIT8(KMiutQPString, "quoted-printable");
  354.51 -_LIT8(KMiut7BitString, "7bit");
  354.52 -_LIT8(KMiut8BitString, "8bit");
  354.53 -_LIT8(KMiutBinaryString, "binary");
  354.54 -_LIT8(KMiutUUString, "uuencode");
  354.55 -
  354.56 -_LIT8(KMiutWildcardBase64, "*base64*");
  354.57 -_LIT8(KMiutWildcardQP, "*quoted-printable*");
  354.58 -_LIT8(KMiutWildcard7Bit, "*7bit*");
  354.59 -_LIT8(KMiutWildcard8Bit, "*8bit*");
  354.60 -_LIT8(KMiutWildcardBinary, "*binary*");
  354.61 -_LIT8(KMiutWildcardUU, "*uu*");
  354.62 -
  354.63 -#define KMiutEmptyString KNullDesC
  354.64 -
  354.65 -_LIT(KMiutFormatString, "%S");
  354.66 -_LIT(KImEngineResourceFile, "\\resource\\messaging\\imcm.rsc");
  354.67 -
  354.68 -const TInt KMiutDateStringLength	= 32;
  354.69 -const TInt KCenturyThreshold		= 100;
  354.70 -const TInt KCenturyOffset			= 70;
  354.71 -const TInt KThisCentury				= 1900;	// as defined in 1998
  354.72 -const TInt KNextCentury				= 2000;
  354.73 -
  354.74 -class CMsvStore;
  354.75 -class TMsvEntry;
  354.76 -class RMsvReadStream;
  354.77 -class RMsvWriteStream;
  354.78 -class CImConvertHeader;
  354.79 -class CImEncodedHeader;
  354.80 -
  354.81 -void CopyArrayL(const CDesCArray& aSource, CDesCArray& aDestination);
  354.82 -
  354.83 -// Maximum size for descriptors stored in HBufC members of CImHeader = 1000 chars
  354.84 -const TInt KMaxImHeaderStringLength = 1000;
  354.85 -const TInt KMaxImMimeFieldLength	= 1000;
  354.86 -const TInt KImMailMaxBufferSize		= 1000;	// 1000 is defined by the SMTP spec as max space
  354.87 -const TInt KSmtpMaxBufferExcludingCRLF = 979; // Line length limit is 1000 chars per line including CRLF (RFC2822, Section 2.1.1)
  354.88 -                                              // 1000 chars including "Field name: "+"Field body"+CRLF (here "Resent-Message-ID: " is largest field)
  354.89 -
  354.90 -
  354.91 -/** Defines how emails will be encoded when they are sent.
  354.92 -
  354.93 -MIME standards are defined in RFC 2045, RFC 2046 and RFC 2047. 
  354.94 -@publishedAll
  354.95 -@released
  354.96 -*/
  354.97 -enum TMsgOutboxBodyEncoding
  354.98 -	{
  354.99 -	/** Emails are sent with the default encoding, which is as for EMsgOutboxMIME. */
 354.100 -	EMsgOutboxDefault,
 354.101 -	/** Emails are sent as plain text RFC822 messages. 
 354.102 -	
 354.103 -	Attachments are encoded using UUEncoding algorithm. This method would not 
 354.104 -	normally be used unless the sender was sure that the receiving mail clients 
 354.105 -	don't support MIME. */
 354.106 -	EMsgOutboxNoAlgorithm,
 354.107 -	/** Text is encoded using quoted-printable encoding, and all attachments are encoded 
 354.108 -	using BASE64 encoding.
 354.109 -	
 354.110 -	This is the default setting for this option. */
 354.111 -	EMsgOutboxMIME,
 354.112 -	/** Text parts of the message are sent as MIME TEXT/HTML parts, and are encoded 
 354.113 -	using UTF-8 encoding system. 
 354.114 -	
 354.115 -	All attachments are encoded using BASE64 encoding. Receiving mail clients 
 354.116 -	that do no support MHTML mail will display the HTML message text to the user 
 354.117 -	including all HTML tags, etc. */
 354.118 -	EMsgOutboxMHTMLAsMIME,
 354.119 -	/** Each text part of the message is sent as two alternative MIME parts.
 354.120 -	
 354.121 -	The first part is sent as plain text using quoted-printable encoding, the 
 354.122 -	second part is sent as a TEXT/HTML part which is encoded using UTF-8 encoding 
 354.123 -	system. All attachments are encoded using BASE64 encoding. This is the standard 
 354.124 -	encoding method if the user wishes to send MHTML mail. */
 354.125 -	EMsgOutboxMHTMLAlternativeAsMIME
 354.126 -	};
 354.127 -
 354.128 -/** Messaging encoding types. 
 354.129 -@publishedAll
 354.130 -@released
 354.131 -*/
 354.132 -enum TImEncodingType 
 354.133 -	{
 354.134 -	/** Unknown. */
 354.135 -	EEncodingTypeUnknown,
 354.136 -	/** None. */
 354.137 -	EEncodingTypeNone,
 354.138 -	/** 7-bit. */
 354.139 -	EEncodingType7Bit,
 354.140 -	/** 8-bit. */
 354.141 -	EEncodingType8Bit,		// ie lines still <1000 chars and terminated by CRLF
 354.142 -	/** Binary. */
 354.143 -	EEncodingTypeBinary,	// ie any length of data, not terminated by CRLF
 354.144 -	/** QP. */
 354.145 -	EEncodingTypeQP,
 354.146 -	/** Base64. */
 354.147 -	EEncodingTypeBASE64,
 354.148 -	/** UU. */
 354.149 -	EEncodingTypeUU
 354.150 -	};
 354.151 -
 354.152 -
 354.153 -// Class used for storing extracting information (to/from header)..
 354.154 -// regarding the encoding in an incoming email message header.
 354.155 -//----------------------------------------------------------------------------------------
 354.156 -class TImHeaderEncodingInfo
 354.157 -//----------------------------------------------------------------------------------------
 354.158 -/** Stores encoding data found in message headers. 
 354.159 -@publishedAll
 354.160 -@released
 354.161 -*/
 354.162 -	{
 354.163 -public:
 354.164 -	/** Message field types. */
 354.165 -	enum TFieldList 
 354.166 -		{ 
 354.167 -		EFrom, 		/**< "From" field. */
 354.168 -		EReplyTo, 	/**< "Reply To" field. */
 354.169 -		ETo, 		/**< "To" field. */
 354.170 -		ECc, 		/**< "Cc" field. */
 354.171 -		EBcc, 		/**< "Bcc" field. */
 354.172 -		ESubject	/**< Subject field. */
 354.173 -		};
 354.174 -	/** Encoding types. */
 354.175 -	enum TEncodingType 
 354.176 -		{ 
 354.177 -		EBase64, 		/**< Base64. */
 354.178 -		EQP, 			/**< QP. */
 354.179 -		ENoEncoding, 	/**< No encoding */
 354.180 -		EUU				/**< UU. */
 354.181 -		};
 354.182 -
 354.183 -public:
 354.184 -	IMPORT_C TImHeaderEncodingInfo();
 354.185 -	IMPORT_C TImHeaderEncodingInfo(const TImHeaderEncodingInfo& aFrom);
 354.186 -
 354.187 -	IMPORT_C void ExternalizeL( RWriteStream& aWriteStream ) const;
 354.188 -	IMPORT_C void InternalizeL( RReadStream& aReadStream );
 354.189 -
 354.190 -	inline void SetField(const TFieldList aField);
 354.191 -	inline TFieldList Field() const;
 354.192 -
 354.193 -	inline void SetOffset(const TInt aOffset);
 354.194 -	inline TInt Offset() const;
 354.195 -
 354.196 -	inline void SetLength(const TInt aLength);
 354.197 -	inline TInt Length() const;
 354.198 -
 354.199 -	inline void SetCharsetUid(const TUint aUid);
 354.200 -	inline TUint CharsetUid() const;
 354.201 -
 354.202 -	inline void SetEncodingType(const TDesC8& aChar);
 354.203 -	inline void SetEncodingType(const TEncodingType aType);
 354.204 -	inline  TEncodingType EncodingType() const;
 354.205 -
 354.206 -	inline void SetArrayValue(const TInt aValue);
 354.207 -	inline  TInt ArrayValue() const;
 354.208 -
 354.209 -	inline void SetAddSpace(const TBool atrueFalse);
 354.210 -	inline  TBool AddSpace() const;
 354.211 -
 354.212 -	inline void SetEncodedLength(const TInt aLength);
 354.213 -	inline TInt EncodedLength() const;
 354.214 -
 354.215 -private:
 354.216 -	TFieldList		iField; 
 354.217 -	TUint16			iOffset;
 354.218 -	TUint16			iLength;
 354.219 -	TEncodingType	iType;
 354.220 -	TUint16			iArrayValue;
 354.221 -	TBool	iAddSpace; // A space char needs adding between two adjoining 'encoded-words'
 354.222 -	TUint8	iEncodedLength; // This can be used to determine space needed for buffer.
 354.223 -	TUint	iCharsetUid; 
 354.224 -
 354.225 -	};
 354.226 -
 354.227 -
 354.228 -//------------------------------------------------------------------------------
 354.229 -
 354.230 -
 354.231 -class CImHeader : public CBase
 354.232 -/** Encapsulates an Internet Mail (RFC822) header.
 354.233 -
 354.234 -Note that the class contains some obsolete functions that take a narrow descriptor: 
 354.235 -always use the equivalent wide descriptor function instead. 
 354.236 -@publishedAll
 354.237 -@released
 354.238 -*/
 354.239 -	{
 354.240 -public:
 354.241 -/** Flags used to determine where to obtain the ReplyTo address for the header 
 354.242 -field of that name. */
 354.243 -	enum TReplyTo 
 354.244 -		{ 
 354.245 -	/** Get address from originator. */
 354.246 -		EOriginator, 
 354.247 -	/** Get address from sender. */
 354.248 -		ESender, 
 354.249 -	/** Get address from all sources. */
 354.250 -		EAll,
 354.251 -	/** Get address from recipients. */
 354.252 -		ERecipients
 354.253 -		};
 354.254 -
 354.255 -	IMPORT_C static CImHeader* NewLC();
 354.256 -	IMPORT_C ~CImHeader();
 354.257 -	IMPORT_C void Reset();
 354.258 -
 354.259 -	// streaming operations
 354.260 -	IMPORT_C void InternalizeL(RMsvReadStream& aReadStream);
 354.261 -	IMPORT_C void ExternalizeL(RMsvWriteStream& aWriteStream) const;
 354.262 -	IMPORT_C void RestoreL(CMsvStore& aMessageStore);
 354.263 -	IMPORT_C void StoreL  (CMsvStore& aMessageStore) const;
 354.264 -	IMPORT_C void StoreWithoutCommitL(CMsvStore& aMessageStore) const;
 354.265 -
 354.266 -	// the bulk of the member functions are accessors & mutators so we can use
 354.267 -	// objects of the class as data repositories during the data-marshalling stage
 354.268 -	// of getting imail headers to/from the internet
 354.269 -	IMPORT_C const TPtrC Subject() const;
 354.270 -	IMPORT_C void SetSubjectL(const TDesC8& aSubject);
 354.271 -
 354.272 -	// Internet message ID
 354.273 -	IMPORT_C const TPtrC8 ImMsgId() const;
 354.274 -	/** Sets the "MessageId" header field.
 354.275 -	
 354.276 -	@param aImMsgIdL Field value */
 354.277 -	IMPORT_C void SetImMsgIdL(const TDesC8& aImMsgIdL);
 354.278 -
 354.279 -	IMPORT_C const TPtrC From() const;
 354.280 -	IMPORT_C void SetFromL(const TDesC8& aFrom);
 354.281 -
 354.282 -	IMPORT_C const TPtrC ReplyTo() const;
 354.283 -	IMPORT_C void SetReplyToL(const TDesC8& aReplyTo);
 354.284 -
 354.285 -	IMPORT_C const TPtrC ReceiptAddress() const;
 354.286 -	/** Sets the "Receipt" header field. 
 354.287 -	
 354.288 -	@param aReceiptAddress Field value */
 354.289 -	IMPORT_C void SetReceiptAddressL(const TDesC8& aReceiptAddress);
 354.290 -
 354.291 -	IMPORT_C TUint Charset() const;
 354.292 -	IMPORT_C void SetCharset(const TUint aCharset);
 354.293 -
 354.294 -#if defined (_UNICODE)
 354.295 -	IMPORT_C void SetFromL(const TDesC16& aFrom);
 354.296 -	IMPORT_C void SetReplyToL(const TDesC16& aReplyTo);
 354.297 -	/** Sets the "Receipt" header field. 
 354.298 -	
 354.299 -	@param aReceiptAddress Field value */
 354.300 -	IMPORT_C void SetReceiptAddressL(const TDesC16& aReceiptAddress);
 354.301 -	IMPORT_C void SetSubjectL(const TDesC16& aSubject);
 354.302 -#endif
 354.303 -
 354.304 -	IMPORT_C TInt DataSize();
 354.305 -
 354.306 -	inline const TUint RemoteSize() const;
 354.307 -	inline void SetRemoteSize(TUint aSize);
 354.308 -
 354.309 -	inline const TUint16 Version() const;
 354.310 -	inline void SetVersion(TUint16 aVersion);
 354.311 -
 354.312 -	// give const access to the recipient lists
 354.313 -	inline const CDesCArray& ToRecipients () const;
 354.314 -	inline const CDesCArray& CcRecipients () const;
 354.315 -	inline const CDesCArray& BccRecipients() const;
 354.316 -	
 354.317 -	// give non-const access to the recipient lists
 354.318 -	inline CDesCArray& ToRecipients () ;
 354.319 -	inline CDesCArray& CcRecipients () ;
 354.320 -	inline CDesCArray& BccRecipients() ;
 354.321 -
 354.322 -	inline CArrayFix<TImHeaderEncodingInfo>& EncodingInfo() ;
 354.323 -	inline const CArrayFix<TImHeaderEncodingInfo>& EncodingInfo() const;
 354.324 -
 354.325 -	IMPORT_C void AddEncodingInfoL(TImHeaderEncodingInfo& aInfo);
 354.326 -
 354.327 -//-------------------------------------------------------------------------------------
 354.328 -//----------------------Used for forwarding/replying to an email ----------------------
 354.329 -
 354.330 -	IMPORT_C const TPtrC8 ResentMsgId() const;
 354.331 -	IMPORT_C void SetResentMsgIdL( const TDesC8& );
 354.332 -
 354.333 -	IMPORT_C const TPtrC ResentFrom() const;
 354.334 -	IMPORT_C void SetResentFromL( const TDesC& );
 354.335 -
 354.336 -	// give const access to the recipient lists
 354.337 -	inline const CDesCArray& ResentToRecipients () const;
 354.338 -	inline const CDesCArray& ResentCcRecipients () const;
 354.339 -	inline const CDesCArray& ResentBccRecipients() const;
 354.340 -
 354.341 -	// give non-const access to the recipient lists
 354.342 -	inline CDesCArray& ResentToRecipients ();
 354.343 -	inline CDesCArray& ResentCcRecipients ();
 354.344 -	inline CDesCArray& ResentBccRecipients();
 354.345 -
 354.346 -	IMPORT_C const TPtrC8 InReplyTo() const;
 354.347 -	IMPORT_C void SetInReplyToL(const TDesC8&);
 354.348 -
 354.349 -	IMPORT_C TInt CreateForwardL(CImHeader&, TDesC&);
 354.350 -	IMPORT_C TInt CreateReplyL(CImHeader&, TReplyTo, TDesC&);
 354.351 -	IMPORT_C void CreateReceiptL(CImHeader&, TDesC&);
 354.352 -
 354.353 -//-------------------------------------------------------------------------------------
 354.354 -//-------------------------------------------------------------------------------------
 354.355 -
 354.356 -	// Body Encoding (charset) stored on a per message basis
 354.357 -	IMPORT_C TMsgOutboxBodyEncoding BodyEncoding() const;
 354.358 -	IMPORT_C void SetBodyEncoding(TMsgOutboxBodyEncoding aMessageBodyEncoding);
 354.359 -
 354.360 -	IMPORT_C void ReDecodeL(RFs& aFS);
 354.361 -	IMPORT_C TUint OverrideCharset() const;
 354.362 -	IMPORT_C void SetOverrideCharset(TUint aCharset);
 354.363 -	IMPORT_C void SaveEncodedHeadersL();
 354.364 -
 354.365 -private:
 354.366 -	CImHeader();
 354.367 -	void ConstructL();
 354.368 -	
 354.369 -	// these four functions keep the line count down as there are several instances
 354.370 -	// of streaming in/out HBufC objects.
 354.371 -	void ReadRecipientsL ( RReadStream&, CDesCArray* );
 354.372 -	void WriteRecipientsL( RWriteStream&, const CDesCArray* ) const;
 354.373 -	void FormatSubjectL(CImHeader&, TDesC&);
 354.374 -
 354.375 -	//finds the duplicate recipients in To and Cc list
 354.376 -	TBool IsRecipientPresent(CImHeader& aCImHeader, TPtrC16 newRecipient);
 354.377 -
 354.378 -private:
 354.379 -	TUint16 iVersion;
 354.380 -
 354.381 -	HBufC16* iFrom;
 354.382 -	HBufC* iSubject;
 354.383 -	HBufC8* iImMsgId;
 354.384 -	HBufC16* iReplyTo;
 354.385 -	HBufC16* iReceipt;
 354.386 -
 354.387 -	CDesCArray* iTo;
 354.388 -	CDesCArray* iCc;
 354.389 -	CDesCArray* iBcc;
 354.390 -	TUint iRemoteSize;
 354.391 -
 354.392 -//-------------------------------------------------------------------------------------
 354.393 -//----------------------Used for forwarding/replying to an email ----------------------
 354.394 -
 354.395 -	HBufC* iResentFrom;
 354.396 -	HBufC8* iResentMsgId;
 354.397 - 	CDesCArray* iResentTo;
 354.398 -	CDesCArray* iResentCc;
 354.399 -	CDesCArray* iResentBcc;
 354.400 -	HBufC8* iInReplyTo;
 354.401 -
 354.402 -//-------------------------------------------------------------------------------------
 354.403 -//-------------------------------------------------------------------------------------
 354.404 -	CArrayFix<TImHeaderEncodingInfo>* iEncodingInfo;
 354.405 -	TMsgOutboxBodyEncoding			iBodyEncoding;
 354.406 -	// The character set to be when sending message.
 354.407 -	// Overrides the charset passed in from the settings.
 354.408 -	TUint							i822HeaderCharset; 
 354.409 -
 354.410 -	CImEncodedHeader* iEncodedHeader;
 354.411 -	};
 354.412 -
 354.413 -class TImRfc822DateField
 354.414 -/**
 354.415 -@internalTechnology
 354.416 -@released
 354.417 -*/
 354.418 -	{
 354.419 -public:
 354.420 -	IMPORT_C TInt ParseDateField(const TDesC8& aRfc822DateField, TTime& rTime);
 354.421 -	IMPORT_C void SetDate(const TTime& aTimeDate, TDes8& rOutputLine);	// NB assumes that "Date: " string has already been inserted into  rOutputLine
 354.422 -
 354.423 -private:
 354.424 -	TBool GetMonth( const TDesC8& name, TMonth& month );
 354.425 -	TBool GetTimezone( const TDesC8& name, TInt& minsOffset );
 354.426 -	};
 354.427 -
 354.428 -
 354.429 -/** Folder type flags.
 354.430 -
 354.431 -The flags correspond to the MIME multipart subtype. 
 354.432 -@publishedAll
 354.433 -@released
 354.434 -*/
 354.435 -enum TImEmailFolderType
 354.436 -	{
 354.437 -	/** Unknown. */
 354.438 -	EFolderTypeUnknown,
 354.439 -	/** Related. */
 354.440 -	EFolderTypeRelated,
 354.441 -	/** Mixed. */
 354.442 -	EFolderTypeMixed,
 354.443 -	/** Parallel. */
 354.444 -	EFolderTypeParallel,
 354.445 -	/** Alternative. */
 354.446 -	EFolderTypeAlternative,
 354.447 -	/** Digest. */
 354.448 -	EFolderTypeDigest,
 354.449 -	/** RFC822. */
 354.450 -	EFolderTypeRFC822,
 354.451 -	/** Partial. */
 354.452 -	EFolderTypePartial,
 354.453 -	/** Directory. */
 354.454 -	EFolderTypeDirectory,
 354.455 -	/** External. */
 354.456 -	EFolderTypeExternal
 354.457 -	};
 354.458 -
 354.459 -/** Describes the types of off-line email operations than can occur.
 354.460 -
 354.461 -@see TMsvEmailEntry::DisconnectedOperation() 
 354.462 -@publishedAll
 354.463 -@released
 354.464 -*/
 354.465 -enum TImDisconnectedOperationType
 354.466 -	{
 354.467 -	/** No operation. */
 354.468 -	ENoDisconnectedOperations,
 354.469 -	/** Create operation. */
 354.470 -	EDisconnectedCreateOperation,
 354.471 -	/** Delete operation. */
 354.472 -	EDisconnectedDeleteOperation,
 354.473 -	/** Change operation. */
 354.474 -	EDisconnectedChangeOperation,
 354.475 -	/** "Copy to" operation. */
 354.476 -	EDisconnectedCopyToOperation,
 354.477 -	/** "Copy from" operation. */
 354.478 -	EDisconnectedCopyFromOperation,
 354.479 -	/** "Copy within service" operation. */
 354.480 -	EDisconnectedCopyWithinServiceOperation,
 354.481 -	/** "Move to" operation. */
 354.482 -	EDisconnectedMoveToOperation,
 354.483 -	/** "Move from" operation. */
 354.484 -	EDisconnectedMoveFromOperation,
 354.485 -	/** "Move within service" operation. */
 354.486 -	EDisconnectedMoveWithinServiceOperation,
 354.487 -	/** Special operation. */
 354.488 -	EDisconnectedSpecialOperation,
 354.489 -	/** Unknown operation. */
 354.490 -	EDisconnectedUnknownOperation,
 354.491 -	/** Multiple operations. */
 354.492 -	EDisconnectedMultipleOperation
 354.493 -	};
 354.494 -
 354.495 -// Remote folder message count limited to TUint16 by using lower 16 bits of "iMtmData3".
 354.496 -// Note: The upper 16 bits of "iMtmData3" are not currently used by "TMsvEmailEntry".
 354.497 -const TUint KMsvRemoteFolderEntriesMask =		0x0000FFFF;
 354.498 -
 354.499 -class TMsvEmailEntry : public TMsvEntry
 354.500 -/** Provides storage for and access to extra email specific information for a message.
 354.501 -
 354.502 -To get a TMsvEmailEntry, get the entry's TMsvEntry, e.g. using
 354.503 -@c CMsvEntry::Entry(), and use the constructor that takes a TMsvEntry parameter.
 354.504 -
 354.505 -Many of the flags are only used by IMAP4 entries. These can be grouped as follows:
 354.506 -
 354.507 -- IMAP-specific flags, as defined by the IMAP protocol (see RFC3501, 2.3.2. Flags Message Attribute)
 354.508 -  - GetIMAP4Flags() and SetIMAP4Flags() handle all the flags as a group
 354.509 -  - \\Seen flag: SetSeenIMAP4Flag(), SeenIMAP4Flag(). 
 354.510 -  - \\Answered flag: SetAnsweredIMAP4Flag(), AnsweredIMAP4Flag()
 354.511 -  - \\Flagged flag: SetFlaggedIMAP4Flag(), FlaggedIMAP4Flag()
 354.512 -  - \\Deleted flag: SetDeletedIMAP4Flag(), DeletedIMAP4Flag() 
 354.513 -  - \\Draft flag: SetDraftIMAP4Flag(), DraftIMAP4Flag() 
 354.514 -  - \\Recent flag: SetRecentIMAP4Flag(), RecentIMAP4Flag()
 354.515 -- Folder subscriptions and other folder-related flags: 
 354.516 -  - SetMailbox(), Mailbox(), 
 354.517 -  - SetSubscribed(), Subscribed(), 
 354.518 -  - SetLocalSubscription(), LocalSubscription()
 354.519 -  - SetRemoteFolderEntries(), RemoteFolderEntries()  
 354.520 -- Disconnected operation information:
 354.521 -  - SetDisconnectedOperation(), DisconnectedOperation().
 354.522 -- Partial download flags: these flags allow a client to test if a message or its body has
 354.523 -  been partially downloaded (see TImImap4GetPartialMailInfo)   
 354.524 -  - SetPartialDownloaded(), PartialDownloaded() 
 354.525 -  - SetBodyTextComplete(), BodyTextComplete()
 354.526 -- UID information: IMAP messages have a unique identifier number (see 
 354.527 -  RFC3501, 2.3.1.1. Unique Identifier (UID) Message Attribute)
 354.528 -  - SetValidUID(), ValidUID()
 354.529 -  - SetUID(), UID().
 354.530 -  
 354.531 -The following flags are set only by the IMAP MTM. They indicate if the 
 354.532 -message contains a vCard, vCalendar (http://www.imc.org), or iCalendar (RFC 2445) attachment.
 354.533 -
 354.534 -- VCard(), SetVCard()
 354.535 -- VCalendar(), SetVCalendar() 
 354.536 -- ICalendar(), SetICalendar()
 354.537 -
 354.538 -The following flags apply to all email protocols:
 354.539 -
 354.540 -- Receipt requested: Receipt(), SetReceipt()
 354.541 -- MHTML content: MHTMLEmail(), SetMHTMLEmail()
 354.542 -
 354.543 -Note that the email specific data is stored in the reserved data members @c iMtmData1, 
 354.544 -@c iMtmData2 and @c iMtmData3 of the TMsvEntry base class. These public data members 
 354.545 -must not be directly altered by clients.
 354.546 -
 354.547 -@publishedAll
 354.548 -@released
 354.549 -@see CImap4ClientMtm
 354.550 -*/
 354.551 -	{
 354.552 -public: // Public member functions
 354.553 -	IMPORT_C TMsvEmailEntry();	// default constructor
 354.554 -	IMPORT_C TMsvEmailEntry(const TMsvEntry& aGenericEntry); 
 354.555 -
 354.556 -	IMPORT_C TBool operator==(const TMsvEntry& aEntry) const;
 354.557 -	IMPORT_C TBool operator==(const TMsvEmailEntry& aEntry) const;
 354.558 -
 354.559 -	IMPORT_C void GetIMAP4Flags(TBool& rUnread,TBool& rSeen,TBool& rAnswered,TBool& rFlagged,TBool& rDeleted,TBool& rDraft,TBool& rRecent);
 354.560 -	IMPORT_C void SetIMAP4Flags(TBool aUnread,TBool aSeen,TBool aAnswered,TBool aFlagged,TBool aDeleted,TBool aDraft,TBool aRecent);
 354.561 -
 354.562 -	IMPORT_C void SetMessageFolderType(TImEmailFolderType aFolderType);
 354.563 -	IMPORT_C TImEmailFolderType MessageFolderType() const;
 354.564 -
 354.565 -	IMPORT_C void SetDisconnectedOperation(TImDisconnectedOperationType aDisconnectedOperationType);
 354.566 -	IMPORT_C TImDisconnectedOperationType DisconnectedOperation() const;
 354.567 -
 354.568 -	IMPORT_C void SetPartialDownloaded(TBool aPartialDownloaded);
 354.569 -	IMPORT_C TBool PartialDownloaded() const;
 354.570 -
 354.571 -	//
 354.572 -	inline void SetEncrypted(TBool aEncrypt);
 354.573 -	inline TBool Encrypted() const;
 354.574 -	//
 354.575 -	inline void SetSigned(TBool aSignature);
 354.576 -	inline TBool Signed() const;
 354.577 -	//
 354.578 -	inline TBool VCard() const;
 354.579 -	inline void SetVCard(TBool aVCard);
 354.580 -	//
 354.581 -	inline TBool VCalendar() const;
 354.582 -	inline void SetVCalendar(TBool aVCal);
 354.583 -	//
 354.584 -	inline TBool ICalendar() const;
 354.585 -	inline void SetICalendar(TBool aICal);
 354.586 -	//
 354.587 -	inline TBool Receipt() const;
 354.588 -	inline void SetReceipt(TBool aReceipt);
 354.589 -
 354.590 -	inline TBool MHTMLEmail() const;
 354.591 -	inline void SetMHTMLEmail(TBool aMhtml);
 354.592 -
 354.593 -	inline TBool BodyTextComplete() const;
 354.594 -	inline void SetBodyTextComplete(TBool aFlag);
 354.595 -
 354.596 -	//
 354.597 -	// IMAP4-specific flags
 354.598 -	//
 354.599 -	inline void SetUnreadIMAP4Flag(TBool aUnread);
 354.600 -	inline TBool UnreadIMAP4Flag() const;
 354.601 -	//
 354.602 -	inline void SetSeenIMAP4Flag(TBool aSeen);
 354.603 -	inline TBool SeenIMAP4Flag() const;
 354.604 -	//
 354.605 -	inline void SetAnsweredIMAP4Flag(TBool aAnswered);
 354.606 -	inline TBool AnsweredIMAP4Flag() const;
 354.607 -	//
 354.608 -	inline void SetFlaggedIMAP4Flag(TBool aFlagged);
 354.609 -	inline TBool FlaggedIMAP4Flag() const;
 354.610 -	//
 354.611 -	inline void SetDeletedIMAP4Flag(TBool aDeleted);
 354.612 -	inline TBool DeletedIMAP4Flag() const;
 354.613 -	//
 354.614 -	inline void SetDraftIMAP4Flag(TBool aDraft);
 354.615 -	inline TBool DraftIMAP4Flag() const;
 354.616 -	//
 354.617 -	inline void SetRecentIMAP4Flag(TBool aRecent);
 354.618 -	inline TBool RecentIMAP4Flag() const;
 354.619 -	//
 354.620 -	inline void SetMailbox(TBool aMailbox);
 354.621 -	inline TBool Mailbox() const;
 354.622 -	//
 354.623 -	inline TBool Orphan() const;
 354.624 -
 354.625 -	inline void SetOrphan(TBool aOrphan);
 354.626 -	//
 354.627 -	inline void SetValidUID(TBool aValid);
 354.628 -	inline TBool ValidUID() const;
 354.629 -	//
 354.630 -	inline void SetSubscribed(TBool aSubscribed);
 354.631 -	inline TBool Subscribed() const;
 354.632 -	//
 354.633 -	inline void SetLocalSubscription(TBool aLocal);		// i.e. is subscription local, or remote
 354.634 -	inline TBool LocalSubscription() const;
 354.635 -	//
 354.636 -	inline void SetUID(TUint32 aUid);
 354.637 -	inline TUint32 UID() const;
 354.638 -	//
 354.639 -	inline TInt RemoteFolderEntries() const;
 354.640 -	inline void SetRemoteFolderEntries(TInt aEntries);
 354.641 -
 354.642 -private:
 354.643 -	enum TMsvEmailEntryFlags
 354.644 -		{	
 354.645 -		KMsvEmailEntryClearFlag				=0x00,
 354.646 -		// Flags set on Message entries...
 354.647 -		KMsvEmailEntryEncryptedFlag			=0x00000001,
 354.648 -		KMsvEmailEntrySignedFlag			=0x00000002,
 354.649 -		KMsvEmailEntryReceiptFlag			=0x00000004,
 354.650 -		KMsvEmailEntryOrphanFlag			=0x00000008,
 354.651 -
 354.652 -		// VCard and VCalendar entries may be set on folders or attachments
 354.653 -		KMsvEmailEntryVCardFlag				=0x00000010,
 354.654 -		KMsvEmailEntryVCalendarFlag			=0x00000020,
 354.655 -
 354.656 -		// Message contains HTML data
 354.657 -		// (Note: HTML and not only MHTML)
 354.658 -		KMsvEmailEntryMHTMLFlag				= 0x00000040,
 354.659 -		KMsvEmailEntryBodyTextCompleteFlag	= 0x00000080,
 354.660 -
 354.661 -		KMsvEmailEntryNoDisconnectedOperations					= 0x00000000,
 354.662 -		KMsvEmailEntryDisconnectedCreateOperation				= 0x00000100,
 354.663 -		KMsvEmailEntryDisconnectedDeleteOperation				= 0x00000200,
 354.664 -		KMsvEmailEntryDisconnectedChangeOperation				= 0x00000300,
 354.665 -		KMsvEmailEntryDisconnectedCopyToOperation				= 0x00000400,
 354.666 -		KMsvEmailEntryDisconnectedCopyFromOperation				= 0x00000500,
 354.667 -		KMsvEmailEntryDisconnectedCopyWithinServiceOperation	= 0x00000600,
 354.668 -		KMsvEmailEntryDisconnectedMoveToOperation				= 0x00000700,
 354.669 -		KMsvEmailEntryDisconnectedMoveFromOperation				= 0x00000800,
 354.670 -		KMsvEmailEntryDisconnectedMoveWithinServiceOperation	= 0x00000900,
 354.671 -		KMsvEmailEntryDisconnectedSpecialOperation				= 0x00000A00,
 354.672 -		KMsvEmailEntryDisconnectedUnknownOperation				= 0x00000B00,
 354.673 -		KMsvEmailEntryDisconnectedMultipleOperation				= 0x00000C00,
 354.674 -		KMsvEmailEntryDisconnectedOperation						= 0x00000F00,
 354.675 -
 354.676 -		// IMAP4-specific masks. Can be re-used by non-IMAP4 entries (eg POP3, SMTP)
 354.677 -		KMsvEmailEntryIMAP4SubscribedFlag	=0x00001000,
 354.678 -		KMsvEmailEntryIMAP4UnreadFlag		=0x00002000,
 354.679 -		KMsvEmailEntryIMAP4SeenFlag			=0x00004000,
 354.680 -		KMsvEmailEntryIMAP4AnsweredFlag		=0x00008000,	
 354.681 -		KMsvEmailEntryIMAP4FlaggedFlag		=0x00010000,	
 354.682 -		KMsvEmailEntryIMAP4DeletedFlag		=0x00020000,	
 354.683 -		KMsvEmailEntryIMAP4DraftFlag		=0x00040000,	
 354.684 -		KMsvEmailEntryIMAP4RecentFlag		=0x00080000,	
 354.685 -		KMsvEmailEntryIMAP4ValidUIDFlag		=0x00100000,
 354.686 -		KMsvEmailEntryIMAP4MailboxFlag		=0x00200000,
 354.687 -		KMsvEmailEntryIMAP4LocalSubFlag		=0x00400000,
 354.688 -
 354.689 -		// MIME "multipart" types assigned to folders. 
 354.690 -		KMsvMimeFolderUnknownMask			=0x00000000,
 354.691 -		KMsvMimeFolderRelatedMask			=0x01000000,
 354.692 -		KMsvMimeFolderMixedMask				=0x02000000,
 354.693 -		KMsvMimeFolderAlternativeMask		=0x03000000,
 354.694 -		KMsvMimeFolderParallelMask			=0x04000000,
 354.695 -		KMsvMimeFolderDigestMask			=0x05000000,
 354.696 -
 354.697 -		// MIME message types
 354.698 -		KMsvMimeFolderRFC822Mask			=0x06000000,
 354.699 -		KMsvMimeFolderPartialMask			=0x07000000,
 354.700 -		KMsvMimeFolderDirectoryMask			=0x08000000,	// for VCard, VCalendar types
 354.701 -		KMsvMimeFolderExternalMask			=0x09000000,
 354.702 -		KMsvMimeFolderMask					=0x0F000000,
 354.703 -		
 354.704 -		// Can be used by POP3 and IMAP4 MTMs.
 354.705 -		KMsvEmailEntryPartialDownloadFlag	=0x10000000,
 354.706 -		
 354.707 -		KMsvEmailEntryICalendarFlag			=0x20000000
 354.708 -		};
 354.709 -
 354.710 -	};
 354.711 -
 354.712 -const TUint16 KImMimeHeaderVersion = 2; // identify which version of this class has been stored
 354.713 -
 354.714 -class CImMimeHeader : public CBase
 354.715 -/** Stores a MIME email header. 
 354.716 -@publishedAll
 354.717 -@released
 354.718 -*/
 354.719 -	{
 354.720 -public:
 354.721 -	IMPORT_C static CImMimeHeader* NewLC();
 354.722 -	IMPORT_C static CImMimeHeader* NewL();
 354.723 -	IMPORT_C ~CImMimeHeader();
 354.724 -	IMPORT_C void Reset();
 354.725 -	IMPORT_C TInt Size();	// number of header fields stored in object
 354.726 -
 354.727 -	// streaming operations
 354.728 -	IMPORT_C void InternalizeL( RMsvReadStream& aReadStream );
 354.729 -	IMPORT_C void ExternalizeL( RMsvWriteStream& aWriteStream ) const;
 354.730 -	IMPORT_C void RestoreL( CMsvStore& aMessageStore );
 354.731 -	IMPORT_C void StoreL  ( CMsvStore& aMessageStore ) const;
 354.732 -	IMPORT_C void StoreWithoutCommitL(CMsvStore& aMessageStore) const;
 354.733 -
 354.734 -	/** Sets the Content-Type field value (e.g. "text" in Content-Type:text/plain). 
 354.735 -	
 354.736 -	The value is MIME defined and should always be 8-bit. 
 354.737 -	
 354.738 -	@param aPath Field value */
 354.739 -	IMPORT_C void SetContentTypeL(const TDesC8& aPath);
 354.740 -	IMPORT_C const TPtrC8 ContentType() const;
 354.741 -
 354.742 -	/** Sets the Content-Type subtype field value (e.g. "plain" in Content-Type:text/plain). 
 354.743 -	
 354.744 -	
 354.745 -	The value is MIME defined and should always be 8-bit. 
 354.746 -	
 354.747 -	@param aPath Field value */
 354.748 -	IMPORT_C void SetContentSubTypeL(const TDesC8& aPath);
 354.749 -	IMPORT_C const TPtrC8 ContentSubType() const;
 354.750 -
 354.751 -	/** Sets the Content-Disposition field value (either inline or attachment). 
 354.752 -	
 354.753 -	The value is MIME defined and should always be 8-bit. 
 354.754 -	
 354.755 -	@param aPath Field value */
 354.756 -	IMPORT_C void SetContentDispositionL(const TDesC8& aPath);
 354.757 -	IMPORT_C const TPtrC8 ContentDisposition() const;
 354.758 -
 354.759 -	/** Sets the Content-Description field value.
 354.760 -	
 354.761 -	The value is MIME defined and should always be 8-bit. 
 354.762 -	
 354.763 -	@param aPath Field value */
 354.764 -	IMPORT_C void SetContentDescriptionL(const TDesC8& aPath);
 354.765 -	IMPORT_C const TPtrC8 ContentDescription() const;
 354.766 -
 354.767 -	/** Sets the Content-Base field value.
 354.768 -	
 354.769 -	@param aPath Field value */
 354.770 -	IMPORT_C void SetContentBaseL(const TDesC8& aPath);
 354.771 -	IMPORT_C const TPtrC8 ContentBase() const;
 354.772 -
 354.773 -	/** Sets the Content-ID field value.
 354.774 -	
 354.775 -	@param aPath Field value */
 354.776 -	IMPORT_C void SetContentIDL(const TDesC8& aPath);
 354.777 -	IMPORT_C const TPtrC8 ContentID() const;
 354.778 -
 354.779 -	/** Sets the Content-Location field value.
 354.780 -	
 354.781 -	@param aPath Field value */
 354.782 -	IMPORT_C void SetContentLocationL(const TDesC16& aPath);
 354.783 -	IMPORT_C const TPtrC16 ContentLocation() const;
 354.784 -
 354.785 -	// IMAP-specific info describing relative location of entry w.r.t. parent Email message
 354.786 -	/** Sets IMAP-specific information for the relative location of the entry to the 
 354.787 -	parent email message.
 354.788 -	
 354.789 -	@param aPath Relative location */
 354.790 -	IMPORT_C void SetRelativePathL(const TDesC8& aPath);
 354.791 -	IMPORT_C const TPtrC8 RelativePath() const;
 354.792 -
 354.793 -	/** Sets the Content-Transfer-Encoding field value.
 354.794 -	
 354.795 -	@param aType Field value */
 354.796 -	IMPORT_C void SetContentTransferEncodingL(const TDesC8& aType);
 354.797 -	IMPORT_C TImEncodingType ContentTransferEncoding() const;
 354.798 -	IMPORT_C TImEncodingType ContentTransferEncoding(TDes8& rType) const;
 354.799 -	IMPORT_C const TPtrC8 GetContentTypeValue(const TDesC8& aContentTypeParameter) const;
 354.800 -
 354.801 -	// inlines to access arrays
 354.802 -	inline const CDesC8Array& ContentTypeParams() const;
 354.803 -	inline const CDesC8Array& ContentDispositionParams() const;
 354.804 -	inline const CDesC8Array& XTypeParams() const;
 354.805 -
 354.806 -	inline CDesC8Array& ContentTypeParams();
 354.807 -	inline CDesC8Array& ContentDispositionParams();
 354.808 -	inline CDesC8Array& XTypeParams();		// anything else that is in the header, but not recognised
 354.809 -
 354.810 -	inline const TUint16 Version() const;
 354.811 -	inline void SetVersion( TUint16 aVersion );
 354.812 -
 354.813 -	IMPORT_C void SetMimeCharset(const TUint aCharset);
 354.814 -	IMPORT_C TUint MimeCharset() const;
 354.815 -
 354.816 -private:
 354.817 -	CImMimeHeader();
 354.818 -	void ConstructL();
 354.819 -	TBool ArrayEntryExists(CDesCArray& aArray, TInt aField);
 354.820 -
 354.821 -private:
 354.822 -	TUint16 iVersion;
 354.823 -	HBufC8* iRelativePath;
 354.824 -	HBufC8* iContentDescription;
 354.825 -
 354.826 -	TImEncodingType iContentTransferEncoding;
 354.827 -
 354.828 -	// MHTML parameters
 354.829 -	HBufC8* iContentBase;
 354.830 -	HBufC16* iContentLocation;
 354.831 -	HBufC8* iContentID;
 354.832 -	//
 354.833 -	HBufC8* iContentType;
 354.834 -	HBufC8* iContentSubType;
 354.835 -	HBufC8* iContentDisposition;
 354.836 -	//
 354.837 -	CDesC8Array* iContentTypeParams;			// zero or more "parameter"
 354.838 -	CDesC8Array* iContentDispositionParams;		// zero or more "parameters"
 354.839 -	CDesC8Array* iXTypeParams;					// zero or more X-Type "parameters"
 354.840 -	//
 354.841 -	TBuf<20> iContentTransferEncodingBuffer;	// must be big enough to store "quoted-printable" string
 354.842 -
 354.843 -	// The uid value is always used in preference to the stored string.
 354.844 -	// Only when the uid is not set is the string used when sending.
 354.845 -	TUint iMimeCharset;	
 354.846 -	};
 354.847 -
 354.848 -
 354.849 -
 354.850 -#include <miuthdr.inl>
 354.851 -
 354.852 -#endif // #defined __MIUTHDR_H__
   355.1 --- a/epoc32/include/miutmsg.h	Tue Mar 16 16:12:26 2010 +0000
   355.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   355.3 @@ -1,950 +0,0 @@
   355.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   355.5 -// All rights reserved.
   355.6 -// This component and the accompanying materials are made available
   355.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   355.8 -// which accompanies this distribution, and is available
   355.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  355.10 -//
  355.11 -// Initial Contributors:
  355.12 -// Nokia Corporation - initial contribution.
  355.13 -//
  355.14 -// Contributors:
  355.15 -//
  355.16 -// Description:
  355.17 -//
  355.18 -
  355.19 -#ifndef __MIUTMSG_H__
  355.20 -#define __MIUTMSG_H__
  355.21 -
  355.22 -#include <msvstd.h>
  355.23 -#include <msvapi.h>			// TMsvEntry, CMsvOperation etc
  355.24 -#include <mentact.h>		// CMsgActive
  355.25 -#include <miuthdr.h>		// CImHeader, CImMimeHeader
  355.26 -#include <txtrich.h>		// CRichText etc
  355.27 -#include <miutdef.h>		// CImHeader, CImMimeHeader
  355.28 -#include <mtmdef.h>
  355.29 -#include <miutatch.h>
  355.30 -#include <smtpset.h>
  355.31 -#include <miutpars.h>		// TImMessageField
  355.32 -
  355.33 -#include <barsc.h>		// RResourceFile
  355.34 -#include <conarc.h>
  355.35 -#include <conlist.h>
  355.36 -
  355.37 -#include <txtmrtsr.h>
  355.38 -
  355.39 -
  355.40 -
  355.41 -//#include <mmsvattachmentmanager.h>
  355.42 -#include <s32mem.h>
  355.43 -
  355.44 -//Content-Transfer-Encoding: types
  355.45 -_LIT8(KMimeQuotedPrintable, " quoted-printable");
  355.46 -_LIT8(KMimeApplOctet, " application/octet-stream");
  355.47 -_LIT8(KMime7Bit, " 7-bit");
  355.48 -_LIT8(KMimeBase64, " base64");
  355.49 -_LIT8(KMimeMime, "MIME*");
  355.50 -// Content-Disposition: types
  355.51 -_LIT8(KMimeInline, "inline");
  355.52 -_LIT8(KMimeAttachment, "attachment");
  355.53 -// Content-Type: types
  355.54 -_LIT8(KMimeMultipart, "multipart");
  355.55 -_LIT8(KMimeText, "text");
  355.56 -_LIT8(KMimeImage, "image");
  355.57 -_LIT8(KMimeAudio, "audio");
  355.58 -_LIT8(KMimeVideo, "video");
  355.59 -_LIT8(KMimeApplication, "application");
  355.60 -_LIT8(KMimeMessage, "message");
  355.61 -// Content-Type: Multipart types
  355.62 -_LIT8(KMimeMixed, "mixed");
  355.63 -_LIT8(KMimeRelated, "related");
  355.64 -_LIT8(KMimeAlternative, "alternative");
  355.65 -_LIT8(KMimeEncrypted, "encrypted");
  355.66 -_LIT8(KMimeParallel, "parallel");
  355.67 -_LIT8(KMimeDigest, "digest");
  355.68 -_LIT8(KMimeSigned, "signed");
  355.69 -// Content-Type: Text types
  355.70 -_LIT8(KMimeHtml, "html");
  355.71 -_LIT8(KMimePlain, "plain");
  355.72 -_LIT8(KMimeDirectory, "directory");
  355.73 -// Content-Type: Message types
  355.74 -_LIT8(KMimePartial, "partial");
  355.75 -_LIT8(KMimeExternal, "external-body");
  355.76 -_LIT8(KMimeRfc822, "rfc822");
  355.77 -// Content-Type: Directory types
  355.78 -_LIT8(KMimeProfile, "profile");
  355.79 -_LIT(KMimeVCardExtension, ".vcf");
  355.80 -_LIT8(KMimeVCalender, "vcalendar");
  355.81 -// Content-Type: Image, Audio, Video, Application types
  355.82 -_LIT8(KMimeBmp, "bmp");
  355.83 -_LIT8(KMimeGif, "gif");
  355.84 -_LIT8(KMimeJpeg, "jpeg");
  355.85 -_LIT8(KMimeTiff, "tiff");
  355.86 -_LIT8(KMimeWav, "wav");
  355.87 -_LIT8(KMimeZip, "x-gzip");
  355.88 -_LIT(KMimeHtmlExtension, ".html");
  355.89 -_LIT(KMiutMsgDefaultHtmlFileName, "attachment.html");
  355.90 -const TUid KUidMimeHeaders = {0x10204281};
  355.91 -
  355.92 -class CImHtmlConverter;
  355.93 -
  355.94 -class CImAttachmentManager;
  355.95 -class CMsvMimeHeaders;
  355.96 -class CMsvPlainBodyText;
  355.97 -class CImPlainBodyText;
  355.98 -
  355.99 -class TImCreateMessageOptions
 355.100 -/**
 355.101 -@internalComponent
 355.102 -@released
 355.103 -*/
 355.104 -	{
 355.105 -public:
 355.106 -	TMsvPartList		iMsvPartList;
 355.107 -	TMsvEmailTypeList	iMsvEmailTypeList;
 355.108 -	TUid				iMessageType;
 355.109 -	};
 355.110 -
 355.111 -// Mixin provides interface to Browser control to resolve MHTML URIs.
 355.112 -
 355.113 -class MImURITranslator
 355.114 -/** Translates a URI in an MHTML message into a message body part file name.
 355.115 -
 355.116 -MHTML messages may contain multiple HTML body parts. Each of these body parts 
 355.117 -is able to reference another body part within the same multipart structure, 
 355.118 -or a body part within a parent multipart structure [RFC2110]. These references 
 355.119 -are called URI's.
 355.120 -
 355.121 -When an MHTML message is parsed by the message engine, the HTML body of each 
 355.122 -part is stored as a binary file. This interface provides a means of finding 
 355.123 -the file name of the body part that corresponds to a given a URI.
 355.124 -
 355.125 -The URI resolving process has the potential to become time consuming, therefore 
 355.126 -it is broken into two steps:
 355.127 -
 355.128 -Resolve asynchronously the relative URI into an absolute URI. The message 
 355.129 -body parts are recursively searched in order to find an absolute base for 
 355.130 -the relative URI [RFC2110, RFC1808]. 
 355.131 -
 355.132 -Once a relative URI has been resolved in to an absolute URI, then the message 
 355.133 -is searched for a body part that corresponds to it [RFC2110].
 355.134 -
 355.135 -If no matching body part can be found, then the absolute URI is returned to 
 355.136 -the caller in place of the filename. This absolute URI should be used to search 
 355.137 -for the required data externally, for example by using HTTP.
 355.138 -
 355.139 -@see CImEmailMessage 
 355.140 -@publishedAll
 355.141 -@released
 355.142 -*/
 355.143 -	{
 355.144 -public:
 355.145 -	/** Starts an asynchronous operation to resolve a specified URI.
 355.146 -	
 355.147 -	@param aMessageId The ID of the body part containing the URI which is to be 
 355.148 -	resolved. CImEmailMessage::FindFirstHTMLPageL() can be used to find the aMessageId 
 355.149 -	parameter for the first HTML page in a message.
 355.150 -	@param rBase The base parameter from the HTML part that contains the URI to 
 355.151 -	be resolved. If there is no base parameter in the HTML, then an empty descriptor 
 355.152 -	should be passed in.
 355.153 -	@param rURI The URI to be resolved.
 355.154 -	@param aStatus Asynchronous status word */
 355.155 -	virtual void FindUniversalResourceIdentifierL(TMsvId aMessageId, const TDesC& rBase, const TDesC& rURI, TRequestStatus &aStatus) = 0;
 355.156 -
 355.157 -	/** Gets the results after a search.
 355.158 -	
 355.159 -	@param aLinkedEntryId On return, the message ID of the linked body part, providing 
 355.160 -	one is found. Note that you should keep a record of the returned message ID 
 355.161 -	as it is required for resolving any URI's that may be found in the linked 
 355.162 -	body part.
 355.163 -	@param aFileFound On return, true if a linked body part has been found. It 
 355.164 -	is set to false otherwise.
 355.165 -	@return If successful, the filename that corresponds to the URI, or the absolute 
 355.166 -	URI if no matching file can be found. If failed, NULL. */
 355.167 -	virtual HBufC* GetUniversalResourceIdentifierL(TMsvId& aLinkedEntryId, TBool& aFileFound) const = 0;
 355.168 -
 355.169 -	/** Starts an asynchronous operation to resolve a specified URI.
 355.170 -	
 355.171 -	@param aMessageId The ID of the body part containing the URI which is to be 
 355.172 -	resolved. CImEmailMessage::FindFirstHTMLPageFileHandleL() can be used to find the aMessageId 
 355.173 -	parameter for the first HTML page in a message.
 355.174 -	@param aBase The base parameter from the HTML part that contains the URI to 
 355.175 -	be resolved. If there is no base parameter in the HTML, then an empty descriptor 
 355.176 -	should be passed in.
 355.177 -	@param aURI The URI to be resolved.
 355.178 -	@param aStatus Asynchronous status word */
 355.179 -	virtual void FindUniversalResourceIdentifierFileHandleL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus) = 0;
 355.180 -	
 355.181 -	/** Gets the results after a search.
 355.182 -	
 355.183 -	@param aLinkedEntryId On return, the message ID of the linked body part, providing 
 355.184 -	one is found. Note that you should keep a record of the returned message ID 
 355.185 -	as it is required for resolving any URI's that may be found in the linked 
 355.186 -	body part.
 355.187 -	
 355.188 -	@param aFile On return, the file handle corresponding to the URI if successful.
 355.189 -	If not successful, then this is not valid.
 355.190 -	
 355.191 -	@return KErrNone if successful and therefore aFile contains the filehandle 
 355.192 -	that corresponds to the URI. An error code if unsuccessful and therefore 
 355.193 -	aFile is not valid. */
 355.194 -	virtual TInt GetUniversalResourceIdentifierFileHandle(TMsvId& aLinkedEntryId, RFile& aFile) const = 0;
 355.195 -	};
 355.196 -
 355.197 -
 355.198 -
 355.199 -
 355.200 -class CImMhtmlUriResolver;
 355.201 -class CImRemoveMessagePart;
 355.202 -class CImStoreMessagePart;
 355.203 -class CImMimeHeader;
 355.204 -
 355.205 -class CImEmailMessage : public CMsgActive , public MImURITranslator
 355.206 -/**
 355.207 -This class can be used to manipulate new emails that
 355.208 -have been created using CImEmailOperation when composing a message.
 355.209 -
 355.210 -Use an instance of this class to add attachments, MHTML parts, body
 355.211 -text, and existing messages to a new message before it is to be sent.
 355.212 -
 355.213 -This class can also be used to retrieve the body text, list of attachments,
 355.214 -and embedded messages from emails that have been downloaded and stored within
 355.215 -the message store.
 355.216 -
 355.217 -If the store_8bit_body_text flag in imcm.rss is enabled, an instance of this class
 355.218 -can be used to retrieve the original body text character set for a particular message.
 355.219 -It can also be used to override the original body text character set so it will
 355.220 -be decoded in a new character set next time it is viewed. 
 355.221 -
 355.222 -@see CImEmailOperation
 355.223 -
 355.224 -@publishedAll
 355.225 -@released
 355.226 -*/
 355.227 -	{
 355.228 -public:
 355.229 -	/** Flags that specify to process on any messages embedded in this message. */
 355.230 -	enum TImEmailEntryType
 355.231 -		{
 355.232 -	/** Do not process embedded messages. */
 355.233 -		EThisMessageOnly,
 355.234 -	/** Process embedded messages. */
 355.235 -		EThisMessageAndEmbeddedMessages  // i.e messages with in a message
 355.236 -		};
 355.237 -	/** Flags to specify types of attachment. */
 355.238 -	enum TImAttachmentType
 355.239 -		{
 355.240 -	/** All attachments. */
 355.241 -		EAllAttachments=0,	// all attachment files contained within this message (but not inside messages within this message)
 355.242 -	/** VCards. */
 355.243 -		EVCards,
 355.244 -	/** VCalendars. */
 355.245 -		EVCalendars,
 355.246 -	/** VCards, VCalendars and ICalendars. */
 355.247 -		EVEntries,			// ie VCards, VCalendars or ICalendars (or all three)
 355.248 -	/** Encrypted. */
 355.249 -		EEncrypted,
 355.250 -	/** Signed. */
 355.251 -		ESigned,
 355.252 -	/** Secure. */
 355.253 -		ESecure,			// ie Encrypted or signed (or both)
 355.254 -	/** ICalendars. */
 355.255 -		EICalendars
 355.256 -		//.. add new items here
 355.257 -		};
 355.258 -public:
 355.259 -	IMPORT_C static CImEmailMessage* NewL(CMsvEntry& aEntry);
 355.260 -	IMPORT_C static CImEmailMessage* NewLC(CMsvEntry& aEntry);
 355.261 -	IMPORT_C ~CImEmailMessage();
 355.262 -
 355.263 -	IMPORT_C void GetAttachmentsListL(TRequestStatus& aStatus, TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
 355.264 -	IMPORT_C void GetAttachmentsListL(TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
 355.265 -	void DoGetAttachmentsListL(TMsvId aMessageId, TImAttachmentType aAttachmentType,TImEmailEntryType aEntryType);
 355.266 -
 355.267 -	IMPORT_C void FindFirstHTMLPageL(TMsvId aMessageId, TRequestStatus& aStatus);
 355.268 -
 355.269 -	IMPORT_C const CMsvEntrySelection& Selection() const;	// return selection
 355.270 -	IMPORT_C const TDesC8& ProgressL() const;
 355.271 -
 355.272 -	IMPORT_C void GetBodyTextL(TRequestStatus& aStatus, TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer,CCharFormatLayer& aCharLayer);
 355.273 -	IMPORT_C void GetBodyTextL(TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer,CCharFormatLayer& aCharLayer);
 355.274 -	void DoGetBodyTextInitL(TMsvId aMessageId, TImEmailEntryType aEntryType, CRichText& aRichText,CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
 355.275 -
 355.276 -	IMPORT_C void GetBodyTextEntryIdL(TRequestStatus& aStatus, TMsvId aMessageId, TImEmailEntryType aEntryType);
 355.277 -	IMPORT_C void GetBodyTextEntryIdL(TMsvId aMessageId, TImEmailEntryType aEntryType);
 355.278 -
 355.279 -	IMPORT_C CImPlainBodyText* OpenPlainBodyTextForWriteL();
 355.280 -	
 355.281 -	IMPORT_C CImPlainBodyText* OpenPlainBodyTextForReadL(TImEmailEntryType aEntryType, TInt aChunkLength);
 355.282 -	
 355.283 -	IMPORT_C virtual void FindUniversalResourceIdentifierL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus);
 355.284 -	IMPORT_C virtual HBufC* GetUniversalResourceIdentifierL(TMsvId& aLinkedEntryId, TBool& aFileFound) const;
 355.285 -	IMPORT_C void FindUniversalResourceIdentifierFileHandleL(TMsvId aMessageId, const TDesC& aBase, const TDesC& aURI, TRequestStatus &aStatus);
 355.286 -	IMPORT_C void FindFirstHTMLPageFileHandleL(TMsvId aMessageId, TRequestStatus& aStatus);
 355.287 -	IMPORT_C virtual TInt GetUniversalResourceIdentifierFileHandle(TMsvId& aLinkedEntryId, RFile& aFile) const;
 355.288 -	IMPORT_C MMsvAttachmentManager& AttachmentManager() const;
 355.289 -	void AddAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
 355.290 -	void AddAttachmentL(RFile& aFileHandle, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
 355.291 -	void AddLinkedAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
 355.292 -	void AddEntryAsAttachmentL(TMsvId aAttachmentEntryId, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
 355.293 -	const RPointerArray<CMsvAttachment>& AttachmentInfoSelection() const;
 355.294 -	void RemoveAttachmentL(TMsvAttachmentId aAttachmentId,TRequestStatus& aStatus) ;
 355.295 -	void RemoveAttachedMessageL(TMsvAttachmentId aAttachmentId,TRequestStatus& aStatus) ;
 355.296 -	void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
 355.297 -	void CheckEntryAndResetStoreMessageL(TMsvId aMessageId);
 355.298 -	void CheckEntryAndResetRemoveMessageL(TMsvId aMessageId);
 355.299 -	void DoSetActive(TRequestStatus& aStatus);
 355.300 -	CImMimeHeader* ConvertToImMimeHeadersL(CMsvMimeHeaders* aMimeHeaders);
 355.301 -	CMsvMimeHeaders* ConvertToMsvMimeHeadersL(CImMimeHeader* aMimeHeader);
 355.302 -	void AppendEntryAttachmentInfoL();
 355.303 -	IMPORT_C void AddRelatedPartL(TMsvId aMessageId, const TDesC& aAttachmentFullName, TRequestStatus& aStatus, TMsvId aRelatedPartId, const TDesC8& aContentId);
 355.304 -	IMPORT_C void StoreBodyTextL(TMsvId aMessageId, CRichText& aRichText, TRequestStatus& aStatus);
 355.305 -	IMPORT_C void StoreBodyTextL(TMsvId aMessageId, CRichText& aRichText, TRequestStatus& aStatus, TBool aUsePlainTextStorage);
 355.306 -	IMPORT_C void GetMessageDigestEntriesL(TRequestStatus& aStatus, TMsvId aMessageId);	
 355.307 -	IMPORT_C void GetCharacterSetL(TMsvId aMessageId, TUint& aCharacterSetId, TBool& aOverride);
 355.308 -	IMPORT_C void SetCharacterSetL(TMsvId aMessageId, TUint aCharacterSetId);
 355.309 -	IMPORT_C void StoreBodyTextWithMimeHeaderL(TMsvId aMessageId, CRichText& aRichText, const CImMimeHeader& aMimeHeader, TRequestStatus& aStatus);
 355.310 -
 355.311 -	TMsvId EmailEntryId();
 355.312 -
 355.313 -private:
 355.314 -	void DoRunL();
 355.315 -	void DoCancel();
 355.316 -	CImEmailMessage(CMsvEntry& aEntry);
 355.317 -	void ConstructL();
 355.318 -	void DoComplete(TInt&);
 355.319 -	void DoStateL();
 355.320 -
 355.321 -	void Start(TRequestStatus& aStatus);
 355.322 -	void StartL();
 355.323 -
 355.324 -	void Reset();
 355.325 -	void ChangeMessageContextL();
 355.326 -	void CompareChildrenAndPopulateSelL();
 355.327 -	void AttachmentInfoL();
 355.328 -	void AssembleBodyTextL();
 355.329 -	void CheckAndInitialiseL(TMsvId aMessageId);
 355.330 -	
 355.331 -	void AppendAttachmentL();
 355.332 -	TBool MessageDigestEntry();
 355.333 -	TBool HandleDifferentFolderTypesL();
 355.334 -	void GetTextForAlternateFolderL();
 355.335 -	void GetTextForRelatedFolderL();
 355.336 -	void GetAttachmentsForRelatedFolderL();
 355.337 -	TBool GetBodyTextCharacterSetL();
 355.338 -	TUint GetOverrideCharacterSetL();
 355.339 -	TInt FindFilename(const CImMimeHeader& aMimeInfo, TPtrC8& aFilename);
 355.340 -	void FindFilenameDecodeL(
 355.341 -		const CImMimeHeader& aMimeInfo, TFileName& aFileName, TUint aCharset);	
 355.342 -	void AppendAttachmentNameL();
 355.343 -	void SetBodyTextCharacterSetL(TMsvId aEntryId, TUint8 aNewCharacterSetId);
 355.344 -	void FindFirstBodyTextPartL(TMsvId aEntryId, TBool& found);
 355.345 -
 355.346 -	CImMimeHeader* FindAttachmentMimeHeaderL();
 355.347 -	TMsvEntry FindIdEntryL(TMsvId aMessageId);
 355.348 -
 355.349 -	void DoGetBodyTextEntryIdL(TMsvId aMessageId, TImEmailEntryType aEntryType);
 355.350 -
 355.351 -
 355.352 -	enum TImEmailMessageStates
 355.353 -		{
 355.354 -		EIdle=0,
 355.355 -		ETextForThisMsg,
 355.356 -		ETextForMsgDigest,
 355.357 -		ETextEntryIdForThisMsg,
 355.358 -		ETextEntryIdMsgDigest,
 355.359 -		ETextForThisMsgGetCharacterSet,
 355.360 -		EAttachmentsForThisMsg,
 355.361 -		EAttachmentsForMsgDigest,
 355.362 -		EMsgDigestEntries,
 355.363 -		EResolveURI,
 355.364 -		EStoreMessagePart,
 355.365 -		ERemoveMessagePart,
 355.366 -		EFinished
 355.367 -		};
 355.368 -	CMsvEntry& iClientEntry;
 355.369 -	CMsvEntrySelection* iCompleteSel;
 355.370 -	CMsvEntrySelection* iResultSel;
 355.371 -
 355.372 -	CRichText* iRichText;
 355.373 -	CParaFormatLayer* iParaLayer;
 355.374 -	CCharFormatLayer* iCharLayer;
 355.375 -	TMsvId iParentMsgId;			// the Id passed into Getxxx() function representing the 'parent' message ID
 355.376 -	TImEmailMessageStates iState;
 355.377 -	TImAttachmentType iAttachmentType;
 355.378 -	TMsvEmailEntry iEntry;
 355.379 -	CImMhtmlUriResolver* iUriResolver;
 355.380 -	TBool iUriFileFound;
 355.381 -	CImStoreMessagePart* iStoreMessagePart;
 355.382 -	CImRemoveMessagePart* iRemoveMessagePart;
 355.383 -	TPckgBuf<TMsvId>	iProgress;
 355.384 -	TImEmailEntryType iEntryType;
 355.385 -	TBool iIsAMHTMLmessage;
 355.386 -	TUint iCharacterSetId;
 355.387 -	RFs iFs;
 355.388 -	CDesCArray* iAttachmentNameList;
 355.389 -	CImAttachmentManager* 			iAttachmentManager;
 355.390 -	CMsvStore* 						iStore;
 355.391 -	
 355.392 -	// This is the entry Id using which the CImEmailMessage was created.
 355.393 -	// store this , so that when the  message id to which attachment is 
 355.394 -	// retrieved then the CIMEmailMessage is reset with this Id.
 355.395 -	TMsvId							iEmailEntryId;
 355.396 -	enum TImAttachmentStates
 355.397 -		{
 355.398 -		ENoAttachment=0,
 355.399 -		EAddAttachment,
 355.400 -		EDeleteAttachment,
 355.401 -		ECreateAttachment
 355.402 -		};	
 355.403 -	TInt		iAttachmentState;
 355.404 -	
 355.405 -	};
 355.406 -
 355.407 -class CImRemoveMessagePart : public CMsvOperation
 355.408 -/**
 355.409 -@internalComponent
 355.410 -@released
 355.411 -*/
 355.412 -	{
 355.413 -public:
 355.414 -	static CImRemoveMessagePart* DeleteAttachmentL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TMsvId aAttachmentId);
 355.415 -	static CImRemoveMessagePart* DeleteAttachedMessageL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TMsvId aAttachedMessageId);
 355.416 -	~CImRemoveMessagePart();
 355.417 -	const TDesC8& FinalProgress();
 355.418 -	void DoCancel();
 355.419 -	void RunL();
 355.420 -	const TDesC8& ProgressL();		// returns NULL until operation completed - then returns MessageId
 355.421 -	TMsvId RemovedAttachmentId();	
 355.422 -private:
 355.423 -	CImRemoveMessagePart(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId);
 355.424 -	void ConstructL(TMsvId aAttachmentId);
 355.425 -	void ErrorRecovery(TInt aError);
 355.426 -	void SelectNextStateL();					// selects next state to go to
 355.427 -	void ChangeStateL();					// initiates the next state operation
 355.428 -	void SelectAndChangeToNextStateL();
 355.429 -	void RequestComplete(TInt aError);
 355.430 -	void Recover();							// leave message in a 'good' state
 355.431 -
 355.432 -	void CheckAttachmentParentTypeL();
 355.433 -	void MoveOtherEntryToParentOfFolderL();
 355.434 -	void DeleteAttachmentEntryL();
 355.435 -	void DeleteFolderEntryL();
 355.436 -	void CompleteRemoveMessagePartL();
 355.437 -private:
 355.438 -	enum TImRemoveMessagePartState
 355.439 -		{
 355.440 -		ECheckAttachmentParentType,
 355.441 -		EMoveOtherEntryToParentOfFolder,
 355.442 -		EDeleteAttachmentEntry,
 355.443 -		EDeleteFolderEntry,
 355.444 -		ECompleteRemoveMessagePart,
 355.445 -		EFinished
 355.446 -		};
 355.447 -	CMsvEntry&			iMsvEntry;
 355.448 -	CMsvOperation*		iMsvOperation;
 355.449 -
 355.450 -	CMsvEntrySelection*	iMessageEntrySelection;
 355.451 -	CImEmailMessage*	iEmailMessage;
 355.452 -
 355.453 -	TInt				iState;
 355.454 -	TPckgBuf<TMsvId>	iDataMember;
 355.455 -	TMsvId				iMessageId;
 355.456 -	TMsvId				iFolderToDeleteId;
 355.457 -	TInt				iAttachmentSize;
 355.458 -	TMsvId				iAttachmentId;
 355.459 -	TMsvId				iEntryToMoveId;
 355.460 -	};
 355.461 -
 355.462 -class CImStoreMessagePart : public CMsvOperation
 355.463 -/**
 355.464 -@internalComponent
 355.465 -@released
 355.466 -*/
 355.467 -	{
 355.468 -public:
 355.469 -	static CImStoreMessagePart* AddAttachmentL(TMsvId aMessageId, const TDesC& aFilePath, CMsvEntry& aMsvEntry,CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus );
 355.470 -	static CImStoreMessagePart* AddEntryAsAttachmentL(TMsvId aMessageId,TMsvId aAttachmentMessageId, CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus);
 355.471 -	static CImStoreMessagePart* AddAttachmentL(TMsvId aMessageId,RFile& aFile, CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
 355.472 -	static CImStoreMessagePart* AddLinkedAttachmentL(TMsvId aMessageId,const TDesC& aFilePath, CMsvEntry& aMsvEntry,CMsvAttachment* aAttachmentInfo,TRequestStatus& aStatus );	
 355.473 -	static CImStoreMessagePart* CreateAttachmentL(TMsvId aMessageId,const TDesC& aFileName, RFile& aAttachmentFile,CMsvEntry& aMsvEntry, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus);
 355.474 -	static CImStoreMessagePart* AddRelatedPartL(TRequestStatus &aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, const TDesC& aAttachmentFullName, TMsvId aRelatedPartId, const TDesC8& aContentId);
 355.475 -	static CImStoreMessagePart* StoreBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CRichText& aRichText, TBool aUsePlainTextStorage = EFalse);
 355.476 -	static CImStoreMessagePart* StoreBodyTextWithMimeHeaderL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CRichText& aRichText, const CImMimeHeader& aMimeHeader, TBool aUsePlainTextStorage = EFalse);
 355.477 -	static CImStoreMessagePart* StorePlainBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TBool aUsePlainTextStorage = ETrue);
 355.478 -	static CImStoreMessagePart* StorePlainBodyTextL(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, CImMimeHeader& aMimeHeader, TBool aUsePlainTextStorage = ETrue);
 355.479 -	~CImStoreMessagePart();
 355.480 -	const TDesC8& FinalProgress();
 355.481 -	void DoCancel();
 355.482 -	void RunL();
 355.483 -	const TDesC8& ProgressL();
 355.484 -private:
 355.485 -	enum TImMessagePart
 355.486 -		{
 355.487 -		EMessagePartAttachment,
 355.488 -		EMessagePartBody,
 355.489 -		EMessagePartMessageAttachment
 355.490 -		};
 355.491 -	void ConstructL(RFile& aFile);
 355.492 -	void ConstructL(RFile& aFile,const TDesC& aAttachmentName);
 355.493 -	void ConstructL(const TDesC& aAttachmentFullName, const TDesC8& aContentId);
 355.494 -	void ConstructAttachmentInfo(CMsvAttachment* aAttachmentInfo,TInt aAttachmentCreationState);
 355.495 -	CImStoreMessagePart(TRequestStatus& aStatus, CMsvEntry& aMsvEntry, TMsvId aMessageId, TBool aUsePlainTextStorage = EFalse);
 355.496 -	
 355.497 -	void ConstructL();
 355.498 -	void ConstructL(const TDesC& aAttachmentFullName);
 355.499 -	void ConstructL(TMsvId aAttachmentMessageId);
 355.500 -	void ConstructL(const TDesC& aAttachmentFullName, TMsvId aRelatedPartId, const TDesC8& aContentId);
 355.501 -	void ConstructL(CRichText& aRichText);
 355.502 -	void ConstructL(CRichText& aRichText, const CImMimeHeader& aMimeHeader);
 355.503 -	void ConstructL(CImMimeHeader& aMimeHeader);
 355.504 -	void ConstructL(TImMessagePart aMessagePart);
 355.505 -	void ErrorRecovery(TInt error);
 355.506 -	void SelectNextStateL();				// selects next state to go to
 355.507 -	void ChangeStateL();					// initiates the next state operation
 355.508 -	void SelectAndChangeToNextStateL();
 355.509 -	void RequestComplete(TInt aError);
 355.510 -	void Recover();
 355.511 -
 355.512 -	TBool HTMLMessage() const;
 355.513 -	void SetHTMLMessage(TBool aFlag);
 355.514 -	TBool MultipartMixedExists() const;
 355.515 -	void SetMultipartMixedExists(TBool aFlag);
 355.516 -	TBool MultipartMixedCreated() const;
 355.517 -	void SetMultipartMixedCreated(TBool aFlag);
 355.518 -	TBool MultipartAlternativeExists() const;
 355.519 -	void SetMultipartAlternativeExists(TBool aFlag);
 355.520 -	TBool MultipartAlternativeCreated() const;
 355.521 -	void SetMultipartAlternativeCreated(TBool aFlag);
 355.522 -	TBool MultipartRelatedExists() const;
 355.523 -	void SetMultipartRelatedExists(TBool aFlag);
 355.524 -	TBool MultipartRelatedCreated() const;
 355.525 -	void SetMultipartRelatedCreated(TBool aFlag);
 355.526 -	TBool TextPartExists() const;
 355.527 -	void SetTextPartExists(TBool aFlag);
 355.528 -	TBool TextPartCreated() const;
 355.529 -	void SetTextPartCreated(TBool aFlag);
 355.530 - 	TBool AttachmentEntryCreated() const;
 355.531 -	void SetAttachmentEntryCreated(TBool aFlag);
 355.532 -
 355.533 -	void FindMultipartRelatedFolderL();
 355.534 -	void CheckForSubfolderL();
 355.535 -	void CreateAttachmentEntryL();
 355.536 -	void CopyOrigMessageToMessageL();
 355.537 -	void CreateMultipartMixedFolderEntryL();
 355.538 -	void CreateMultipartAlternativeFolderEntryL();
 355.539 -	void CreateMultipartRelatedFolderEntryL();
 355.540 -	void MoveOriginalMessageEntryChildrenToNewFolderL();
 355.541 -	void CreateTextEntryL();
 355.542 -	void StoreRichTextL();
 355.543 -	void CompleteStoreMessagePartL();
 355.544 -	void CreateHTMLEntryL();
 355.545 -	void PrepareToStoreHTMLEntryTextL();
 355.546 -	void StoreHTMLEntryTextL();
 355.547 -	void RemoveHTMLEntryL();
 355.548 -	void MoveTextEntryToAltFolderL();
 355.549 -	TPtrC GetDefaultAttachmentName();
 355.550 -	void OpenAndReadResourceFileL();
 355.551 -	void StoreMimeHeaderL();
 355.552 -	TBool CreateAttachmentMimeHeaderL(CImMimeHeader& aMimeHeader, const TDesC& aDetails);
 355.553 -	void CreateFolderMimeHeaderL(CImMimeHeader& aMimeHeader);
 355.554 -	void CreateMessageMimeHeaderL(CImMimeHeader& aMimeHeader);
 355.555 -	void AddAttachmentL();
 355.556 -	void AddAttachmentUsingFileHandleL();
 355.557 -	void AddLinkedAttachmentL();
 355.558 -	void AddEntryAsAttachmentL();	
 355.559 -	void CreateAttachmentL();
 355.560 -	void DoAttachmentStoreL();
 355.561 -	TInt CheckMimeInAttachmentInfoL(CMsvMimeHeaders& aMsvMimeHeaders);
 355.562 -	CImMimeHeader* ProcessAttachmentMimeHeadersL();
 355.563 -	void SetEntryDetailsL(TMsvEntry& aEntry);
 355.564 -	void StorePlainTextL();
 355.565 -private:
 355.566 -	enum TImStoreMessagePartState
 355.567 -		{
 355.568 -		EFindMultipartRelatedFolder,
 355.569 -		ECheckForSubfolder,
 355.570 -		ECreateAttachmentEntry,
 355.571 -		EStoreAttachment,
 355.572 -		ECopyOrigMessageToMessage,
 355.573 -		ECreateMultipartMixedFolderEntry,
 355.574 -		ECreateMultipartRelatedFolderEntry,
 355.575 -		ECreateMultipartAlternativeFolderEntry,
 355.576 -		EMoveOriginalMessageEntryChildrenToNewFolder,
 355.577 -		ECreateTextEntry,
 355.578 -		EStoreRichText,
 355.579 -		ERemoveHTMLEntry,
 355.580 -		EMoveTextToAlternativeFolder,
 355.581 -		ECreateHTMLEntry,
 355.582 -		EPrepareToStoreHTMLEntryText,
 355.583 -		EStoreHTMLEntryText,
 355.584 -		ECompleteStoreMessage,
 355.585 -		EFinished
 355.586 -		,EStoreHTMLTextInEntry,
 355.587 -		EAddEntryAttachment	
 355.588 -		};
 355.589 -
 355.590 -	enum TImStoreMessagePartFlags
 355.591 -		{
 355.592 -		KStoreMessagePartClearFlag							= 0x00000000,
 355.593 -		KStoreMessagePartHTMLMessage						= 0x00000001,
 355.594 -		KStoreMessagePartMultipartMixedExists				= 0x00000002,
 355.595 -		KStoreMessagePartMultipartMixedCreated				= 0x00000004,
 355.596 -		KStoreMessagePartMultipartAlternativeExists			= 0x00000008,
 355.597 -		KStoreMessagePartMultipartAlternativeCreated		= 0x00000010,
 355.598 -		KStoreMessagePartTextPartExists						= 0x00000020,
 355.599 -		KStoreMessagePartTextPartCreated					= 0x00000040,
 355.600 -		KStoreMessagePartAttachmentEntryCreated				= 0x00000080,
 355.601 -		KStoreMessagePartOrigMessageEntryChildrenCopied		= 0x00000100,
 355.602 -		KStoreMessagePartOrigMessageEntryChildrenDeleted	= 0x00000200,
 355.603 -		KStoreMessagePartMultipartRelatedExists				= 0x00000400,
 355.604 -		KStoreMessagePartMultipartRelatedCreated			= 0x00000800
 355.605 -		};
 355.606 -	CMsvEntry&			iMsvEntry;
 355.607 -	CMsvOperation*		iMsvOperation;
 355.608 -	
 355.609 -	CRichText*			iRichTextToStore; // I don't own this object!
 355.610 -	CImMimeHeader*		iMimeHeaderOfBodyText;
 355.611 -	CRichText*			iRichText;
 355.612 -	CFileMan*			iFileMan;
 355.613 -	CMsvEntrySelection* iMessageEntrySelection;
 355.614 -
 355.615 -	TInt				iState;
 355.616 -	TPckgBuf<TMsvId>	iDataMember;
 355.617 -	TMsvId				iMessageId;
 355.618 -	TImMessagePart		iMessagePart;
 355.619 -	TMsvId				iMixFolderId;
 355.620 -	TMsvId				iAltFolderId;
 355.621 -	TMsvId				iRelFolderId;
 355.622 -	HBufC*				iAttachmentFullName;
 355.623 -	TInt				iAttachmentSize;
 355.624 -	TMsvId				iAttachmentId;
 355.625 -	TMsvId				iTextId;
 355.626 -	TMsvId				iHtmlId;
 355.627 -	TMsvId				iRelatedPartId;
 355.628 -	TMsvId				iAttachmentMessageId;
 355.629 -	TUint32				iFlags;
 355.630 -	HBufC8*				iContentId;
 355.631 -	CImEmailMessage*	iEmailMessage;
 355.632 -
 355.633 -	// Used when converting rich text to html
 355.634 -	CParaFormatLayer*	iParaLayer;
 355.635 -	CCharFormatLayer*	iCharLayer;
 355.636 -	CImHtmlConverter* 	iHtmlConverter;
 355.637 -	TBool iFinishedConvertingHTML;
 355.638 -	CMsvAttachment*		iAttachmentInfo;
 355.639 -	CMsvStore* 			iStore;
 355.640 -	TInt 				iAttachmentCreateState;
 355.641 -	TBool				iIsAddByFileHandle;
 355.642 -	RFile*				iFileHandle;
 355.643 -	RFile               iFile;
 355.644 -	// Indicates whether to store message body as CRichText or plaintext.
 355.645 -	TBool 				iUsePlainTextStorage;
 355.646 -	// Size of the plain text body.
 355.647 -	TInt				iSizeOfBody;
 355.648 -	// Size of the Fwd'ed/ReplyTo plaintext body part.
 355.649 -	TInt				iSizeFwdReplyBody;
 355.650 -	// The error value returned when CRichText is populated with message body text.
 355.651 -	TInt 				iRestoreErr;
 355.652 -	enum TImAttachmentCreation
 355.653 -		{
 355.654 -		EAddAttachment,
 355.655 -		EAddAttachmentUsingFileHandle,
 355.656 -		EAddLinkedAttachment,
 355.657 -		EAddEntryAsAttachment,
 355.658 -		ECreateAttachment
 355.659 -		};
 355.660 -	};
 355.661 -
 355.662 -class CImEmailOperation : public CMsvOperation
 355.663 -/** Provides simple email messages creation functions, including creation of new 
 355.664 -messages, replies, forwarded messages, and receipts.
 355.665 -
 355.666 -Both plain-text and HTML messages, with or without attachments, can be created. 
 355.667 -@publishedAll
 355.668 -@released
 355.669 -*/
 355.670 -	{
 355.671 -public:
 355.672 -	IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.673 -	IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
 355.674 -	
 355.675 -	IMPORT_C static CImEmailOperation* CreateNewL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority , TBool aUsePlainTextStorage);
 355.676 -	
 355.677 -	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.678 -	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.679 -	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority);
 355.680 -	IMPORT_C static CImEmailOperation* CreateReplyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
 355.681 -	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.682 -	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.683 -	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
 355.684 -	IMPORT_C static CImEmailOperation* CreateForwardL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
 355.685 -	IMPORT_C static CImEmailOperation* CreateForwardAsAttachmentL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.686 -	IMPORT_C static CImEmailOperation* CreateForwardAsAttachmentL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aSmtpServiceId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority = EPriorityStandard);
 355.687 -	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TDesC& aFormatString, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.688 -	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.689 -	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority);
 355.690 -	IMPORT_C static CImEmailOperation* CreateReceiptL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
 355.691 -	IMPORT_C ~CImEmailOperation();
 355.692 -	IMPORT_C const TDesC8& FinalProgress();
 355.693 -	void DoCancel();
 355.694 -	void RunL();
 355.695 -	const TDesC8& ProgressL();
 355.696 -
 355.697 -	static CImEmailOperation* CreateCopyL(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aMessageId, TMsvId aDestination, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType);
 355.698 -
 355.699 -private:
 355.700 -	enum TImEmailOperation 
 355.701 -		{
 355.702 -		ENew					= 0,
 355.703 -		EReply					= 1,
 355.704 -		EForward				= 2,
 355.705 -		EReceipt				= 3,
 355.706 -		EDeletingBadEmail		= 4,
 355.707 -		ECopy					= 5,
 355.708 -		EAttachOriginal			= 0x80,
 355.709 -		EForwardAsAttachment    = EForward | EAttachOriginal,
 355.710 -		EReplyAsAttachment		= EReply | EAttachOriginal
 355.711 -		};
 355.712 -
 355.713 -private:
 355.714 -	CImEmailOperation(TRequestStatus& aObserverRequestStatus, CMsvSession& aMsvSession, TMsvId aDestination, TMsvId aSmtpServiceId, TMsvPartList aPartList, const TMsvEmailTypeList& aMsvEmailTypeList, TUid aMsgType, TInt aPriority, TBool aUsePlainTextStorage);
 355.715 -	void ConstructL(TMsvId aMessageId, const TDesC& aFormatString, TImEmailOperation aOperation);
 355.716 -	void ConstructL(TMsvId aMessageId, TImEmailOperation aOperation);
 355.717 -	void ConstructL(TImEmailOperation aOperation);
 355.718 -	void OpenAndReadResourceFileL();
 355.719 -	void SetSmtpServiceFromDefaultsL();
 355.720 -	void SetSmtpServiceFromOriginalMessageL();
 355.721 -	void ErrorRecovery(TInt error);
 355.722 -	void SelectNextStateL();
 355.723 -	void ProcessStateL();
 355.724 -	void SelectAndProcessNextStateL();
 355.725 -	void RequestComplete(TInt aError);
 355.726 -	void CreateNewHeaderL();
 355.727 -	void GetBodyTextL();
 355.728 -	TInt RemoveIncompleteAttachments();
 355.729 -	void CreateEntryDetails(TMsvEmailEntry& aMsvEmailEntry);
 355.730 -	void CreateNewMessageL(TMsvId aDestinationId);
 355.731 -	void CreateMultipartMixedFolderEntryL();
 355.732 -	void CreateTextEntryL(TMsvId aFolderId);
 355.733 -	void StoreBodyL();
 355.734 -	void StorePlainBodyL();
 355.735 -	void CheckForSignatureOrVCardL();
 355.736 -	void CreateAttachmentEntryL();
 355.737 -	void StoreAttachmentL();
 355.738 -	void CreateMultipartAlternativeFolderEntryL();
 355.739 -	void AppendHtmlAttachmentL();
 355.740 -	void AttachOriginalMessageToNewMessageL();
 355.741 -	void CompleteEmailOperationL();
 355.742 -	void CreateHTMLEntryL();
 355.743 -	void PrepareToStoreHTMLEntryTextL();
 355.744 -	void StoreHTMLEntryTextL();
 355.745 -	void CreateVCardAttachmentL();
 355.746 -	void AddVCardAttachmentL();
 355.747 -	void AddMessageAsAttachmentL();
 355.748 -	TPtrC GetDefaultAttachmentName();
 355.749 -	void RestoreSmtpSettingsL();
 355.750 -	TMsvId ServiceId();
 355.751 -	TBool NeedMultipartMixedFolder() const;
 355.752 -	void ReadDefaultHtmlAttachmentNameL(TDes& aFileName);
 355.753 -	void CreateDefaultAttachmentL();
 355.754 -	void AddMessageAttachmentInfoL(TMsvId aAttachmentMessageId);
 355.755 -	void ResetStoreL();
 355.756 -	void CreateAddressListStringL(HBufC*& aListBuffer, const CDesCArray& aAddressArray);
 355.757 -	void RestoreOriginalHeaderL();
 355.758 -	void SetBodyHeaderFormatL();
 355.759 -	static void ClosePlainBodyTextArray(TAny* aPtr);
 355.760 -	void StorePlainTextL();
 355.761 -	TInt GetPlainBodyTextSizeL();
 355.762 -	
 355.763 -private:
 355.764 -	enum TImEmailOperationState
 355.765 -		{
 355.766 -		ECreateNewHeader,
 355.767 -		EGetBodyText,
 355.768 -		EGetAttachmentList,
 355.769 -		EGetMessageDigest,
 355.770 -		ECreateNewMessageEntry,
 355.771 -		ECheckMultipartMixedFolderRequired,
 355.772 -		ECreateMultipartMixedFolderEntry,
 355.773 -		ECheckMultipartAlternativeFolderRequired,
 355.774 -		ECreateMultipartAlternativeFolderEntry,
 355.775 -		ECheckTextEntryRequired,
 355.776 -		ECreateTextEntry,
 355.777 -		EStoreBody,
 355.778 -		ECheckVCardRequired,
 355.779 -		ECreateVCardAttachment,
 355.780 -		EAddVCardAttachment,
 355.781 -		ECheckHTMLEntryRequired,
 355.782 -		ECreateHTMLEntry,
 355.783 -		EPrepareToStoreHTMLEntryText,
 355.784 -		EStoreHTMLEntryText,
 355.785 -		ECheckAttachOriginalMessageRequired,
 355.786 -		EAttachOriginalMessage,
 355.787 -		ECheckHTMLPageRequired,
 355.788 -		EFindHTMLPage,
 355.789 -		ECopyHTMLPartToAttachment,
 355.790 -		ECheckAttachmentsRequired,
 355.791 -		ECreateAttachmentEntry,
 355.792 -		EStoreAttachment,
 355.793 -		ECheckEmbeddedMessagesRequired,
 355.794 -		EAddEmbeddedMessagesAsAttachments,
 355.795 -		ECompleteEmailOperation,
 355.796 -		EFinished
 355.797 -		,ECreateDefaultHtmlAttachment,
 355.798 -		EStoreHTMLTextInEntry,
 355.799 -		EAddMessageAttachmentInfo
 355.800 -		};
 355.801 -
 355.802 -	// Flags specifying format of body header information to include
 355.803 -	// in reply and forwarded email addresses
 355.804 -	enum TImBodyHeaderFormat
 355.805 -		{
 355.806 -		ENoToCcInfo=0,
 355.807 -		EToOnly,
 355.808 -		ECcOnly,
 355.809 -		EToAndCc
 355.810 -		};
 355.811 -	
 355.812 -	CMsvEntry* iMsvEntry;
 355.813 -	CMsvOperation* iMsvOperation;
 355.814 -	
 355.815 -	CImHeader* iNewHeader;
 355.816 -	CParaFormatLayer* iParaLayer;
 355.817 -	CCharFormatLayer* iCharLayer;
 355.818 -	CRichText* iRichText;
 355.819 -	CImEmailMessage* iEmailMessage;
 355.820 -	HBufC* iFormatString;
 355.821 -	CFileMan* iFileMan;
 355.822 -	CImSmtpSettings* iSmtpSettings;
 355.823 -	TInt iState;
 355.824 -	TImEmailOperation iOperation;
 355.825 -	TMsvId iDestinationId;
 355.826 -	TMsvId iMultipartMixedId;
 355.827 -	TMsvId iMultipartAlternativeId;
 355.828 -	TMsvId iOrigMessageId;
 355.829 -	TMsvId iNewMessageId;
 355.830 -	TMsvId iSmtpServiceId;
 355.831 -	TMsvId iAttachedMessageId;
 355.832 -	TUid iMsgType;
 355.833 -	TMsvPartList iPartList;
 355.834 -	TMsvEmailTypeList iMsvEmailTypeList;
 355.835 -	TInt iAttachmentCount;
 355.836 -	TInt iTotalAttachments;
 355.837 -	TPckgBuf<TMsvId> iDataMember;
 355.838 -	HBufC* iBodyHeaderFormatString;
 355.839 -	HBufC* iBodyHeaderDateTimeFormatString;
 355.840 -	HBufC* iBodyHeaderToString;
 355.841 -	HBufC* iBodyHeaderCcString;
 355.842 -	HBufC* iBodyHeader;
 355.843 -	HBufC* iUserEmailAddress;
 355.844 -	TInt iRichTextSize;
 355.845 -	TInt iVCardAndHtmlSize;
 355.846 -	TBool iOrigMessageHtml;
 355.847 -	TBool iHtmlNoTextAlt;
 355.848 -	TInt iEmbeddedMessagesToProcess;
 355.849 -	TImMessageField iMessageField;
 355.850 -
 355.851 -	// for MIME messages:
 355.852 -	TBool iCreateHtmlMessage;
 355.853 -	TBool iMultipartMixedFolderCreated;
 355.854 -	TBool iMultipartAlternativeFolderCreated;
 355.855 -	TMsvId iTextId;
 355.856 -	TMsvId iHtmlId;
 355.857 -	TMsvId iVcardId;
 355.858 -
 355.859 -	// Used when converting rich text to html
 355.860 -	CImHtmlConverter* iHtmlConverter;
 355.861 -	TBool iFinishedConvertingHTML;
 355.862 -
 355.863 -	// Relating to adding Signature and/or Vcard to an email
 355.864 -	TBool iNeedToAddVCardAttachment;
 355.865 -	HBufC* iDefaultVCardNameFormatString;
 355.866 -	TStreamId iVcardStoreId;
 355.867 -	CStreamStore* iVcardStore;
 355.868 -	CRichText* iSignatureText;
 355.869 -	TFileName iFileName;
 355.870 -	TImAttachmentFile iAttachmentFile;
 355.871 -
 355.872 -	// PCMail
 355.873 -	TMsvId iPCMailServiceId;
 355.874 -	RPointerArray<CMsvAttachment>	iAttachmentInfoList;
 355.875 -	// set this anytime during the object life cycle attachment manager was used
 355.876 -	TBool iAttachmentMgrUsed;
 355.877 -	CMsvStore* iStore;
 355.878 -	RFile iFile;
 355.879 -
 355.880 -	TImBodyHeaderFormat iBodyHeaderFormat;
 355.881 -	CImHeader* iOriginalHeader;
 355.882 -	/** Indicates if the body text entry is plain text */
 355.883 -	TBool  iUsePlainTextStorage;
 355.884 -	// The error value returned when CRichText is populated with message body text.
 355.885 -	TInt iRestoreErr;
 355.886 -	};
 355.887 -
 355.888 -
 355.889 -class CImHtmlConverter : public CBase
 355.890 -/**
 355.891 -@internalComponent
 355.892 -@released
 355.893 -*/
 355.894 -	{
 355.895 -public:
 355.896 -	static CImHtmlConverter* CImHtmlConverter::NewL(CMsvEntry& aMsvEntry, 
 355.897 -								   CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
 355.898 -	~CImHtmlConverter();
 355.899 -	void PrepareToStoreHTMLEntryTextL(TMsvId& aHtmlId, const TMsvId aTextId);
 355.900 -	void ResetStoreL();
 355.901 -	void ResetStoreWithoutCommit();
 355.902 -	TBool StoreHTMLEntryTextAL(TRequestStatus& aStatus);
 355.903 -	CMsvOperation* ChangeHTMLTextInEnrtyL(TRequestStatus& aStatus);
 355.904 -	
 355.905 -	void ReadDefaultAttachmentNameL( RResourceFile& resourceFile);
 355.906 -	TInt Size() const;
 355.907 -
 355.908 -private:
 355.909 -	CImHtmlConverter(CMsvEntry&	aMsvEntry, CParaFormatLayer& aParaLayer, CCharFormatLayer& aCharLayer);
 355.910 -	TFileName HtmlFilename(CMsvEntry& aEntry, TPtrC aFileName);
 355.911 -	TPtrC GetDefaultAttachmentName();
 355.912 -	void ConstructL();
 355.913 -
 355.914 -private:
 355.915 -	CMsvEntry&			iMsvEntry;
 355.916 -	CParaFormatLayer&	iParaLayer;
 355.917 -	CCharFormatLayer&	iCharLayer;
 355.918 -
 355.919 -	CConverterBase*		iToHTMLConverter;
 355.920 -	CCnaConverterList*	iConverterList;
 355.921 -
 355.922 -	TMsvId				iTextId;
 355.923 -	TMsvId				iHtmlId;
 355.924 -	TInt				iSize;
 355.925 -	HBufC*				iDefaultAttachmentName;
 355.926 -	CRichText*			iRichText;
 355.927 -	RDesReadStream 		iSourceStream;
 355.928 -	RFileWriteStream	iTargetStream;
 355.929 -	CMsvStore*			iStore;
 355.930 -	RFile 				iFile;
 355.931 -	};
 355.932 -
 355.933 -class CImStoreResolver : public CBase, public MRichTextStoreResolver
 355.934 -/**
 355.935 -@internalComponent
 355.936 -@released
 355.937 -*/
 355.938 -	{
 355.939 -public:
 355.940 -	CImStoreResolver(CStreamStore* aStore);
 355.941 -	~CImStoreResolver();
 355.942 -	//
 355.943 -private:
 355.944 -	const CStreamStore& StreamStoreL(TInt aPos)const;
 355.945 -	//
 355.946 -private:
 355.947 -	CStreamStore* iStore;
 355.948 -	};
 355.949 -
 355.950 -
 355.951 -
 355.952 -
 355.953 -#endif // __MIUTMSG_H__
   356.1 --- a/epoc32/include/miutpars.h	Tue Mar 16 16:12:26 2010 +0000
   356.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   356.3 @@ -1,98 +0,0 @@
   356.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   356.5 -// All rights reserved.
   356.6 -// This component and the accompanying materials are made available
   356.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   356.8 -// which accompanies this distribution, and is available
   356.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  356.10 -//
  356.11 -// Initial Contributors:
  356.12 -// Nokia Corporation - initial contribution.
  356.13 -//
  356.14 -// Contributors:
  356.15 -//
  356.16 -// Description:
  356.17 -//
  356.18 -
  356.19 -#if !defined (__MIUTPARS_H__)
  356.20 -#define __MIUTPARS_H__
  356.21 -
  356.22 -#include <e32base.h>
  356.23 -
  356.24 -// comment out line below to switch ON Internet message checking
  356.25 -//#define __NO_EMAIL_ADDRESS_CHECKING__
  356.26 -
  356.27 -class TImMessageField
  356.28 -/** Parses email message header fields for valid Internet email addresses, 
  356.29 -comments and aliases.
  356.30 -
  356.31 -A comment is a string surrounded by parentheses, as defined in RFC822, 3.1.4. 
  356.32 -
  356.33 -An alias is defined as any substring which appears to the left of a legal email address:  
  356.34 -for example, the string "this is an alias" in "this is an alias <an.email@address.com>".  
  356.35 -
  356.36 -For email addresses, the string being parsed: 
  356.37 -1) must contain an @ character, surrounded by valid address characters; 
  356.38 -2) may not contain more than one address or @ character; 
  356.39 -3) may contain aliases and comments.
  356.40 -
  356.41 -Note the following about the implementation of this class:
  356.42 -
  356.43 -1. Functions that test subject lines, ValidSubjectLine(),  and alias names, ValidAliasName(), were 
  356.44 -initially written to test that the strings did not contain characters outside a limited 
  356.45 -ASCII range. Unicode characters are now allowed, so these functions now always return true.
  356.46 -
  356.47 -2. Of the four overloads of GetValidInternetEmailAddressFromString(), only the first has a meaningful
  356.48 -implementation. 
  356.49 -
  356.50 -@publishedAll
  356.51 -@released
  356.52 -*/
  356.53 -	{
  356.54 -public:
  356.55 -	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress);
  356.56 -	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress, TInt& rFirstBadCharPos);	
  356.57 -	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
  356.58 -	IMPORT_C TBool ValidInternetEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar, TInt& rFirstBadCharPos);
  356.59 -
  356.60 -	IMPORT_C TBool ValidInternetEmailAddressChar(const TChar& aChar);	
  356.61 -
  356.62 -	IMPORT_C TBool ValidSubjectLine(const TDesC16& aSubjectLine);
  356.63 -	IMPORT_C TBool ValidSubjectLine(const TDesC16& aSubjectLine, TInt& rFirstBadCharPos);
  356.64 -	
  356.65 -	IMPORT_C TBool ValidSubjectLineChar(const TChar& aChar);
  356.66 -	
  356.67 -	IMPORT_C TBool ValidAliasName(const TDesC16& aAliasName);
  356.68 -	IMPORT_C TBool ValidAliasName(const TDesC16& aAliasName, TInt& rFirstBadCharPos);
  356.69 -
  356.70 -	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress);
  356.71 -	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress, TInt& rError);
  356.72 -	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
  356.73 -	IMPORT_C TPtrC16 GetValidInternetEmailAddressFromString(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar, TInt& rError);
  356.74 -
  356.75 -	IMPORT_C TPtrC16 GetValidAlias(const TDesC16& aAddress);
  356.76 -	IMPORT_C TPtrC16 GetValidAlias(const TDesC16& aAddress, TInt& rError);
  356.77 -
  356.78 -	IMPORT_C TPtrC16 GetValidComment(const TDesC16& aAddress);
  356.79 -	IMPORT_C TPtrC16 GetValidComment(const TDesC16& aAddress, TInt& rError);
  356.80 -	TBool TruncateAddressString(const TDesC16& aDesc, TInt aLimit, TInt& aLastChar);
  356.81 -private:
  356.82 -	TBool isValidEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
  356.83 -	TBool isLegalEmailAddress(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
  356.84 -	TBool isSurroundedByRoundBrackets(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar);
  356.85 -	TBool isSurroundedByAngledBrackets(const TDesC16& aAddress, TInt& rFirstChar, TInt& rLastChar, TInt aAtPos);
  356.86 -	TBool isEnclosedSubString(const TDesC16& anAddress, const TChar& aLeftBracket, const TChar& aRightBracket,TInt& aLeftPos, TInt& aRightPos);
  356.87 -    TBool isValidString(const TDesC16& anAddress, TInt& aFirstBadCharPos);
  356.88 -	TBool isValidChar(const TChar& aChar);
  356.89 -    TBool isValidEmailString(const TDesC16& anAddress, TInt& aFirstBadCharPos);
  356.90 -	TBool isValidEmailChar(const TChar& aChar);
  356.91 -	TBool LocateSubString(const TDesC16& anAddress, const TInt atPos, TInt& rFirstChar, TInt& rLastChar);	
  356.92 -	TBool hasAngledBrackets(const TDesC16& anAddress);
  356.93 -	TBool isValid_ISO88591String(const TDesC16& aString,TInt& aPos);
  356.94 -	TBool isValidRoutedEmailAddress(const TDesC16& anAddress);
  356.95 -	TBool isValidDomainNameChar(const TChar& aChar);
  356.96 -	TBool isValidMailboxChar(const TChar& aChar);
  356.97 -	TBool isDotChar(const TChar& aChar);
  356.98 -	};
  356.99 -
 356.100 -
 356.101 -#endif // !defined __MIUTPARS_H__
   357.1 --- a/epoc32/include/miutset.h	Tue Mar 16 16:12:26 2010 +0000
   357.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   357.3 @@ -1,92 +0,0 @@
   357.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   357.5 -// All rights reserved.
   357.6 -// This component and the accompanying materials are made available
   357.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   357.8 -// which accompanies this distribution, and is available
   357.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  357.10 -//
  357.11 -// Initial Contributors:
  357.12 -// Nokia Corporation - initial contribution.
  357.13 -//
  357.14 -// Contributors:
  357.15 -//
  357.16 -// Description:
  357.17 -//
  357.18 -
  357.19 -#if !defined (__MIUTSET_H__)
  357.20 -#define __MIUTSET_H__
  357.21 -
  357.22 - 
  357.23 -
  357.24 -#include <msvuids.h>
  357.25 -#include <miuthdr.h>
  357.26 -
  357.27 -const TInt KMaxSettingStringLength = 1024;
  357.28 -
  357.29 -/** UID of an SMTP message type. */
  357.30 -const TUid KUidMsgTypeSMTP			= {0x10001028};	// 268439592
  357.31 -/** UID of a POP3 message type. */
  357.32 -const TUid KUidMsgTypePOP3			= {0x10001029};	// 268439593
  357.33 -/** UID of an IMAP4 message type. */
  357.34 -const TUid KUidMsgTypeIMAP4			= {0x1000102A};	// 268439594
  357.35 -
  357.36 -/**
  357.37 -@deprecated
  357.38 -*/
  357.39 -const TUid KUidMsgTypeSMTPServer	= {0x10003923};	// 268450083
  357.40 -
  357.41 -
  357.42 -class CImBaseEmailSettings : public CBase
  357.43 -/**
  357.44 -Parent class for CImPop3Settings, CImImap4Settings, CImSmtpSettings.
  357.45 -
  357.46 -This class should not be instantiated directly. It implements common email
  357.47 -settings such as the hostname or IP address of the server, port number,
  357.48 -and whether or not to use SSL.
  357.49 -
  357.50 -@see CImPop3Settings
  357.51 -@see CImImap4Settings
  357.52 -@see CImSmtpSettings
  357.53 -
  357.54 -@publishedAll
  357.55 -@released
  357.56 -*/
  357.57 -	{
  357.58 -public:
  357.59 -	IMPORT_C CImBaseEmailSettings();
  357.60 -	IMPORT_C virtual ~CImBaseEmailSettings();
  357.61 -	IMPORT_C void Reset();
  357.62 -	IMPORT_C const TPtrC ServerAddress() const;
  357.63 -	IMPORT_C void SetServerAddressL(const TDesC& aServerAddress);
  357.64 -	IMPORT_C TUint Port() const;
  357.65 -	IMPORT_C void SetPort(const TUint aPortNumber);
  357.66 -	IMPORT_C TBool SecureSockets() const;
  357.67 -	IMPORT_C void SetSecureSockets(TBool aFlag);
  357.68 -	IMPORT_C TBool SSLWrapper() const;
  357.69 -	IMPORT_C void SetSSLWrapper(TBool aFlag);
  357.70 -	IMPORT_C CImBaseEmailSettings& CopyL(const CImBaseEmailSettings& aCImBaseEmailSettings);
  357.71 -	IMPORT_C TBool operator==(const CImBaseEmailSettings& aCImBaseEmailSettings) const;
  357.72 -	IMPORT_C void SetBearerMobility(TBool aFlag);
  357.73 -	IMPORT_C TBool BearerMobility() const;
  357.74 -
  357.75 -	TUint32 SettingsFlags() const;
  357.76 -	void SetSettingsFlags(TUint32 aSetFlags);
  357.77 -
  357.78 -protected:
  357.79 -	enum TImBaseEmailSettings
  357.80 -		{
  357.81 -		EBaseEmailSettingsClearFlag			= 0x00000000,
  357.82 -		EBaseEmailSettingsSecureSockets		= 0x00000001,
  357.83 -		EBaseEmailSettingsSSLWrappedSockets	= EBaseEmailSettingsSecureSockets << 1,  //0x00000002,
  357.84 -		EBaseEmailSettingsLastUsedFlag		= EBaseEmailSettingsSSLWrappedSockets,  //0x00000002
  357.85 -		EBaseEmailSettingsBearerMobFlag		= 0x80000000
  357.86 -		};
  357.87 -	TUint32 iPortNumber;	// the port the TCP/IP connection be made on
  357.88 -
  357.89 -	TUint32 iFlags;			// space for flags info (now and for future)
  357.90 -
  357.91 -private:
  357.92 -	HBufC* iServerAddress;	// remote server's IP address
  357.93 -	};
  357.94 -
  357.95 -#endif
   358.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   358.2 +++ b/epoc32/include/mmf/plugin/mmfformatimplementationuids.hrh	Wed Mar 31 12:27:01 2010 +0100
   358.3 @@ -0,0 +1,33 @@
   358.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   358.5 +// All rights reserved.
   358.6 +// This component and the accompanying materials are made available
   358.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   358.8 +// which accompanies this distribution, and is available
   358.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  358.10 +//
  358.11 +// Initial Contributors:
  358.12 +// Nokia Corporation - initial contribution.
  358.13 +//
  358.14 +// Contributors:
  358.15 +//
  358.16 +// Description:
  358.17 +//
  358.18 +
  358.19 +#ifndef __MMF_FORMATIMPLEMENTATIONUIDS_HRH__
  358.20 +#define __MMF_FORMATIMPLEMENTATIONUIDS_HRH__
  358.21 +
  358.22 +
  358.23 +// These are the ECOM Implementation UIDs for the Formats supplied in Symbian plugins.
  358.24 +
  358.25 +#define KMmfUidFormatWAVRead   0x101F55E1
  358.26 +#define KMmfUidFormatWAVWrite   0x101F55E2
  358.27 +#define KMmfUidFormatRAWRead   0x101F5C16
  358.28 +#define KMmfUidFormatRAWWrite   0x101F5C17
  358.29 +#define KMmfUidFormatAURead   0x101F5C12
  358.30 +#define KMmfUidFormatAUWrite   0x101F5C13
  358.31 +
  358.32 +#define KAdvancedUidFormatAMRRead	0x101FAF65
  358.33 +#define KAdvancedUidFormatAMRWrite	0x101FAF66
  358.34 +
  358.35 +
  358.36 +#endif
   359.1 --- a/epoc32/include/mmfformatimplementationuids.hrh	Tue Mar 16 16:12:26 2010 +0000
   359.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   359.3 @@ -1,33 +0,0 @@
   359.4 -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   359.5 -// All rights reserved.
   359.6 -// This component and the accompanying materials are made available
   359.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   359.8 -// which accompanies this distribution, and is available
   359.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  359.10 -//
  359.11 -// Initial Contributors:
  359.12 -// Nokia Corporation - initial contribution.
  359.13 -//
  359.14 -// Contributors:
  359.15 -//
  359.16 -// Description:
  359.17 -//
  359.18 -
  359.19 -#ifndef __MMF_FORMATIMPLEMENTATIONUIDS_HRH__
  359.20 -#define __MMF_FORMATIMPLEMENTATIONUIDS_HRH__
  359.21 -
  359.22 -
  359.23 -// These are the ECOM Implementation UIDs for the Formats supplied in Symbian plugins.
  359.24 -
  359.25 -#define KMmfUidFormatWAVRead   0x101F55E1
  359.26 -#define KMmfUidFormatWAVWrite   0x101F55E2
  359.27 -#define KMmfUidFormatRAWRead   0x101F5C16
  359.28 -#define KMmfUidFormatRAWWrite   0x101F5C17
  359.29 -#define KMmfUidFormatAURead   0x101F5C12
  359.30 -#define KMmfUidFormatAUWrite   0x101F5C13
  359.31 -
  359.32 -#define KAdvancedUidFormatAMRRead	0x101FAF65
  359.33 -#define KAdvancedUidFormatAMRWrite	0x101FAF66
  359.34 -
  359.35 -
  359.36 -#endif
   360.1 --- a/epoc32/include/mmmssettingsobserver.h	Tue Mar 16 16:12:26 2010 +0000
   360.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   360.3 @@ -1,56 +0,0 @@
   360.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   360.5 -// All rights reserved.
   360.6 -// This component and the accompanying materials are made available
   360.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   360.8 -// which accompanies this distribution, and is available
   360.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  360.10 -//
  360.11 -// Initial Contributors:
  360.12 -// Nokia Corporation - initial contribution.
  360.13 -//
  360.14 -// Contributors:
  360.15 -//
  360.16 -// Description:
  360.17 -//
  360.18 -
  360.19 -#ifndef __MMMSSETTINGSOBSERVER_H__
  360.20 -#define __MMMSSETTINGSOBSERVER_H__
  360.21 -
  360.22 -
  360.23 -#include <e32base.h>
  360.24 -
  360.25 -
  360.26 -
  360.27 -/** 
  360.28 -Provides the interface for notification of changes that occur in the Central Repository. 
  360.29 -
  360.30 -@see CMmsAccounts::AddObserverL()
  360.31 -@see CMmsAccounts::RemoveObserver() 
  360.32 -
  360.33 -@publishedAll
  360.34 -@released
  360.35 -*/
  360.36 -class MMmsSettingsObserver
  360.37 - 	{
  360.38 -public:
  360.39 -	/** 
  360.40 -	Settings event.
  360.41 -	*/
  360.42 -    enum TMmsSettingsEvent 
  360.43 -  		{ 
  360.44 - 		/** 
  360.45 -		Settings have been updated.
  360.46 -		*/ 		
  360.47 -       	ESettingsUpdated     
  360.48 -       	};
  360.49 -public: 
  360.50 -	/** 
  360.51 -	Indicates that a settings event has occurred. 
  360.52 -	
  360.53 -	@param	aEvent
  360.54 -	The Settings Event
  360.55 -	*/
  360.56 -  	virtual void HandleNotify(TMmsSettingsEvent aEvent) = 0;
  360.57 -   	};
  360.58 -          
  360.59 -#endif // __MMMSSETTINGSOBSERVER_H__
   361.1 --- a/epoc32/include/mmsvattachmentmanager.h	Tue Mar 16 16:12:26 2010 +0000
   361.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   361.3 @@ -1,300 +0,0 @@
   361.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   361.5 -// All rights reserved.
   361.6 -// This component and the accompanying materials are made available
   361.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   361.8 -// which accompanies this distribution, and is available
   361.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  361.10 -//
  361.11 -// Initial Contributors:
  361.12 -// Nokia Corporation - initial contribution.
  361.13 -//
  361.14 -// Contributors:
  361.15 -//
  361.16 -// Description:
  361.17 -//
  361.18 -
  361.19 -#ifndef __MMSVATTACHMENTMANAGER_H__
  361.20 -#define __MMSVATTACHMENTMANAGER_H__
  361.21 -
  361.22 -#include <e32base.h>
  361.23 -#include <msvstd.h>
  361.24 -#include <cmsvattachment.h>
  361.25 -
  361.26 -class MMsvAttachmentManager
  361.27 -/**
  361.28 -Defines the attachment management interface.
  361.29 -
  361.30 -This class is a pure virtual interface class that defines the APIs to be used for
  361.31 -attachment management in the Messaging Framework. It is expected that the clients of
  361.32 -this interface will be MTMs implementations that require attachment management.
  361.33 -
  361.34 -The API allows is based around the use of the CMsvAttachment object that represents
  361.35 -any type of attachment that is supported by the Messaging Framework. The CMsvAttachment
  361.36 -object provides users with various attributes about the attachment without having to
  361.37 -actually load or retrieve the attachment.
  361.38 -
  361.39 -This attachment manager API supports the following different types of attachments:
  361.40 -1 - File attachments, file based attachments that are copied or created in the message 
  361.41 -	store.
  361.42 -2 - Linked file attachments, file based attachments that are not copied and are simply 
  361.43 -	linked to the file location on disk.
  361.44 -3 - Message entry attachments, existing message entries that can be registered as
  361.45 -	attachments of another message entry.
  361.46 -
  361.47 -For file based attachments, this API also supports the retrieval of the files as
  361.48 -open read-only file handles.
  361.49 -
  361.50 -All functionality that requires the attachment manager to be in edit mode have been
  361.51 -defined as asynchronous. The attachment manager does not allow multiple asynchronous
  361.52 -requests to be made at the same time.
  361.53 -
  361.54 -@see CMsvAttachment
  361.55 -@publishedAll
  361.56 -@released
  361.57 -*/
  361.58 -	{
  361.59 -public:	
  361.60 -	/**
  361.61 -	Adds an attachment to the message store by file path.
  361.62 -	
  361.63 -	The attachment file must be located in a public area. The file path must also be a
  361.64 -	full path specification. The file is copied into the message store.
  361.65 -	
  361.66 -	@param aFilePath The absolute file path of the attachment file.
  361.67 -	@param aAttachmentInfo The attachment info associated with the file.
  361.68 -	  If the routine does not leave, then ownership will be transferred to the
  361.69 -	  attachment manager. If the routine does leave then ownership will not have
  361.70 -	  been transfered and the caller is responsible for cleanup.
  361.71 -	@param aStatus The client's request status to complete when the operation has completed.
  361.72 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
  361.73 -	*/
  361.74 -	virtual void AddAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
  361.75 -		
  361.76 -	/**
  361.77 -	Adds an attachment to the message store by file handle.
  361.78 -	
  361.79 -	This is used to add an attachment from an open file handle such as when adding a file
  361.80 -	from the caller's private area. The file is copied into the message store. The message
  361.81 -	server is responsible for closing the file handle once copied.
  361.82 -	
  361.83 -	@param aFileHandle An open file handle for the attachment file. Ownership is transferred. The caller must close the file handle.
  361.84 -	@param aAttachmentInfo The attachment info associated with the file.
  361.85 -	  If the routine does not leave, then ownership will be transferred to the
  361.86 -	  attachment manager. If the routine does leave then ownership will not have
  361.87 -	  been transfered and the caller is responsible for cleanup.
  361.88 -	@param aStatus The client's request status to complete.
  361.89 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
  361.90 -	*/
  361.91 -	virtual void AddAttachmentL(RFile& aFileHandle, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
  361.92 -	
  361.93 -	/**
  361.94 -	Adds an attachment as a linked file attachment.
  361.95 -	
  361.96 -	The attachment is added as a link by its file path. The attachment is not copied to the
  361.97 -	message store. The attachment is linked and therefore must be in a public location.
  361.98 -	
  361.99 -	It is possible to change a linked attachment file after it has been attached to a message
 361.100 -	entry. No integrity checking is carried out. This is left to individual MTMs or implementors
 361.101 -	of this interface to decide if any checking is required such as checking if the size has changed.
 361.102 -	
 361.103 -	@param aFilePath The absolute file path of the linked attachment file.
 361.104 -	@param aAttachmentInfo The attachment info associated with the file.
 361.105 -	  If the routine does not leave, then ownership will be transferred to the
 361.106 -	  attachment manager. If the routine does leave then ownership will not have
 361.107 -	  been transfered and the caller is responsible for cleanup.
 361.108 -	@param aStatus The client's request status to complete.
 361.109 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.110 -	*/
 361.111 -	virtual void AddLinkedAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 361.112 -	
 361.113 -	/**
 361.114 -	Adds a message entry as an attachment.
 361.115 -	
 361.116 -	The message entry is registered as an attachment of the	current message entry. The attachment
 361.117 -	message entry is not copied.
 361.118 -	
 361.119 -	@param aEntryId The message Id of the entry to register as an attachment.
 361.120 -	@param aAttachmentInfo The attachment info associated with the file.
 361.121 -	  If the routine does not leave, then ownership will be transferred to the
 361.122 -	  attachment manager. If the routine does leave then ownership will not have
 361.123 -	  been transfered and the caller is responsible for cleanup.
 361.124 -	@param aStatus The client's request status to complete.
 361.125 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.126 -	*/
 361.127 -	virtual void AddEntryAsAttachmentL(TMsvId aEntryId, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 361.128 -	
 361.129 -	/**
 361.130 -	Creates a new empty attachment file.
 361.131 -	
 361.132 -	The caller is returned an open writable file handle to an empty attachment file in the message
 361.133 -	store. The caller must pass in an uninitialised file handle. The file handle cannot be used
 361.134 -	until the asynchronous request completes successfully. If the request is sucessful the file handle
 361.135 -	is open and must close by the caller once the data has been written to it.
 361.136 -	
 361.137 -	@param aFileName The filename to assign to the newly create attachment file.
 361.138 -	@param aAttachmentFile An uninitialised file handle. This is opened and can be written to if the
 361.139 -		   request is successful. Ownership is transferred . The caller must close the file handle.
 361.140 -	@param aAttachmentInfo The attachment info associated with the file.
 361.141 -	  If the routine does not leave, then ownership will be transferred to the
 361.142 -	  attachment manager. If the routine does leave then ownership will not have
 361.143 -	  been transfered and the caller is responsible for cleanup.
 361.144 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.145 -	*/
 361.146 -	virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 361.147 -	
 361.148 -	
 361.149 -	/**
 361.150 -	Renames the physical filename of an attachment.
 361.151 -		
 361.152 -	@param aIndex The array index position of the attachment to be renamed.
 361.153 -	@param aNewName The new name of the attachment.
 361.154 -	@param aStatus The client's request status to complete.
 361.155 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.156 -	@leave KErrAlreadyExists If the supplied attachment filename already exists.
 361.157 -	*/	
 361.158 -	virtual void RenameAttachmentL(TInt aIndex, const TDesC& aNewName, TRequestStatus& aStatus) = 0;
 361.159 -
 361.160 -	
 361.161 -	/**
 361.162 -	Counts the number of attachments.
 361.163 -	
 361.164 -	Returns the number of attachments associated with the message entry. This includes all the
 361.165 -	attachments that have not been commited yet.
 361.166 -	@return The number of attachments.
 361.167 -	*/
 361.168 -	virtual TInt AttachmentCount() const = 0;
 361.169 -	
 361.170 -	/**
 361.171 -	Returns an attachment info object.
 361.172 -	
 361.173 -	This object contains attributes and information about the attachment without having actually
 361.174 -	retrieving the actual attachment. The caller assumes ownership of the returned object.
 361.175 -	
 361.176 -	@param aIndex The array index position of the attachment.
 361.177 -	@return The attachment info for the attachment. Ownership is passed to caller,
 361.178 -	*/
 361.179 -	virtual CMsvAttachment* GetAttachmentInfoL(TInt aIndex) = 0;
 361.180 -	
 361.181 -	/**
 361.182 -	Returns an attachment info object.
 361.183 -	
 361.184 -	This object contains attributes and information about the attachment without having actually
 361.185 -	retrieving the actual attachment. The caller assumes ownership of the returned object.
 361.186 -	
 361.187 -	@param aId The attachment Id of the attachment.
 361.188 -	@return The attachment info for the attachment. Ownership is passed to caller,
 361.189 -	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 361.190 -	*/
 361.191 -	virtual CMsvAttachment* GetAttachmentInfoL(TMsvAttachmentId aId) = 0;
 361.192 -
 361.193 -	/**
 361.194 -	Modifies the attachment info for a particular attachment.
 361.195 -	
 361.196 -	This allows callers to modify an existing attachment info object for a particular attachment.
 361.197 -	The attachment info object passed in replaces the existing attachment info object and takes
 361.198 -	ownership for the object passed in. It is expected that callers will use GetAttachmentInfoL 
 361.199 -	to get the object, make some changes and pass it back into this method.
 361.200 -	
 361.201 -	@param aAttachmentInfo The attachment info associated with the file.
 361.202 -	  If the routine does not leave, then ownership will be transferred to the
 361.203 -	  attachment manager. If the routine does leave then ownership will not have
 361.204 -	  been transfered and the caller is responsible for cleanup.
 361.205 -	@param aStatus The client's request status to complete.
 361.206 -	@leave KErrNotFound If the attachment that is trying to be modified cannot be found.
 361.207 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.208 -	*/
 361.209 -	virtual void ModifyAttachmentInfoL(CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 361.210 -
 361.211 -	/**
 361.212 -	Returns an open file handle for the attachment file.
 361.213 -	
 361.214 -	Returns a read-only open file handle for the attachment file. This only applies to file based
 361.215 -	attachments ie. file attachment and linked file attachments. The caller is responsible for
 361.216 -	closing the returned file handle.
 361.217 -	
 361.218 -	@param aIndex The array index position of the attachment.
 361.219 -	@return A read-only open file handle for the attachment file. Caller must close the handle.
 361.220 -	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 361.221 -	*/
 361.222 -	virtual RFile GetAttachmentFileL(TInt aIndex) = 0;
 361.223 -	
 361.224 -	/**
 361.225 -	Returns an open file handle for the attachment file.
 361.226 -	
 361.227 -	Returns a read-only open file handle for the attachment file. This only applies to file based
 361.228 -	attachments ie. file attachment and linked file attachments. The caller is responsible for
 361.229 -	closing the returned file handle.
 361.230 -	
 361.231 -	@param aIndex The array index position of the attachment.
 361.232 -	@return A read-only open file handle for the attachment file. Caller must close the handle.
 361.233 -	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 361.234 -	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 361.235 -	*/
 361.236 -	virtual RFile GetAttachmentFileL(TMsvAttachmentId aId) = 0;
 361.237 -	
 361.238 -	/**
 361.239 -	Returns an open writable file handle for the attachment file.
 361.240 -	
 361.241 -	Returns a writable open file handle for the attachment file. This only applies to file based
 361.242 -	attachments ie. file attachment and linked file attachments. The caller is responsible for
 361.243 -	closing the returned file handle.
 361.244 -	
 361.245 -	@param aIndex The array index position of the attachment.
 361.246 -	@return A writable open file handle for the attachment file. Caller must close the handle.
 361.247 -	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 361.248 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.249 -	@internalComponent
 361.250 -	*/
 361.251 -	virtual RFile GetAttachmentFileForWriteL(TInt aIndex) = 0;
 361.252 -	
 361.253 -	/**
 361.254 -	Returns an open writable file handle for the attachment file.
 361.255 -	
 361.256 -	Returns a writable open file handle for the attachment file. This only applies to file based
 361.257 -	attachments ie. file attachment and linked file attachments. The caller is responsible for
 361.258 -	closing the returned file handle.
 361.259 -	
 361.260 -	@param aIndex The array index position of the attachment.
 361.261 -	@return A writable open file handle for the attachment file. Caller must close the handle.
 361.262 -	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 361.263 -	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 361.264 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.265 -	@internalComponent
 361.266 -	*/
 361.267 -	virtual RFile GetAttachmentFileForWriteL(TMsvAttachmentId aId) = 0;
 361.268 -	
 361.269 -	/**
 361.270 -	Removes the attachment from the message entry.
 361.271 -	
 361.272 -	This changes the array index values of all the attachments after the removed one.
 361.273 -	Attachment files stored in the message store are deleted. Linked files and message entry 
 361.274 -	attachments are not deleted, this is left to the caller to do if required.
 361.275 -	
 361.276 -	@param aParam The array index position of the attachment to be removed.
 361.277 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.278 -	*/
 361.279 -	virtual void RemoveAttachmentL(TInt aIndex, TRequestStatus& aStatus) = 0;
 361.280 -	
 361.281 -	/**
 361.282 -	Removes the attachment from the message entry.
 361.283 -	
 361.284 -	This changes the array index values of all the attachments after the removed one.
 361.285 -	Attachment files stored in the message store are deleted. Linked files and message entry 
 361.286 -	attachments are not deleted, this is left to the caller to do if required.
 361.287 -	
 361.288 -	@param aParam The array index position of the attachment to be removed.
 361.289 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
 361.290 -	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 361.291 -	*/
 361.292 -	virtual void RemoveAttachmentL(TMsvAttachmentId aId, TRequestStatus& aStatus) = 0;
 361.293 -	
 361.294 -	/**
 361.295 -	Cancels the last asynchronous operation that was requested.
 361.296 -	
 361.297 -	Allows callers to cancel the last asynchronous operation. This will have no effect
 361.298 -	if an asynchronous is not waiting to complete.
 361.299 -	*/
 361.300 -	virtual void CancelRequest() = 0;
 361.301 -	};
 361.302 -
 361.303 -#endif // __MMSVATTACHMENTMANAGER_H__
   362.1 --- a/epoc32/include/mmsvattachmentmanagersync.h	Tue Mar 16 16:12:26 2010 +0000
   362.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   362.3 @@ -1,94 +0,0 @@
   362.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   362.5 -// All rights reserved.
   362.6 -// This component and the accompanying materials are made available
   362.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   362.8 -// which accompanies this distribution, and is available
   362.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  362.10 -//
  362.11 -// Initial Contributors:
  362.12 -// Nokia Corporation - initial contribution.
  362.13 -//
  362.14 -// Contributors:
  362.15 -//
  362.16 -// Description:
  362.17 -//
  362.18 -
  362.19 -#ifndef __MMSVATTACHMENTMANAGERSYNC_H__
  362.20 -#define __MMSVATTACHMENTMANAGERSYNC_H__
  362.21 -
  362.22 -#include <e32base.h>
  362.23 -#include <msvstd.h>
  362.24 -#include <cmsvattachment.h>
  362.25 -
  362.26 -class MMsvAttachmentManagerSync
  362.27 -/**
  362.28 -Defines the attachment management extensions interface.
  362.29 -
  362.30 -This class is a pure virtual interface class that defines the APIs to be used for
  362.31 -by MTMs and implementors of MMsvAttachmentManager.
  362.32 -
  362.33 -This API extends the MMsvAttachmentManager with synchronous calls for deleting
  362.34 -and creating attachments. 
  362.35 -
  362.36 -@see CMsvAttachment
  362.37 -@publishedAll
  362.38 -@released
  362.39 -*/
  362.40 -	{
  362.41 -public:	
  362.42 -	/**
  362.43 -	Creates a new empty attachment file.
  362.44 -	
  362.45 -	The caller is returned an open writable file handle to an empty attachment file in the message
  362.46 -	store. The caller must pass in an uninitialised file handle. If the request is sucessful the file handle
  362.47 -	is open and must close by the caller once the data has been written to it.
  362.48 -	
  362.49 -	@param aFileName The filename to assign to the newly create attachment file.
  362.50 -	@param aAttachmentFile An uninitialised file handle. This is opened and can be written to if the
  362.51 -		   request is successful. The ownership is transferred . The caller must close the file handle.
  362.52 -	@param aAttachmentInfo The attachment info associated with the file.
  362.53 -	  If the routine does not leave, then ownership will be transferred to the
  362.54 -	  attachment manager. If the routine does leave then ownership will not have
  362.55 -	  been transfered and the caller is responsible for cleanup.
  362.56 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
  362.57 -	*/
  362.58 -	virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo) = 0;
  362.59 -
  362.60 -
  362.61 -
  362.62 -	/**
  362.63 -	Renames the physical filename of an attachment.
  362.64 -	
  362.65 -	@param aIndex The array index position of the attachment to be renamed.
  362.66 -	@param aNewName The new name of the attachment.
  362.67 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
  362.68 -	@leave KErrAlreadyExists If the supplied attachment filename already exists.
  362.69 -	*/
  362.70 -	virtual void RenameAttachmentL(TInt aIndex, const TDesC& aNewName) = 0;
  362.71 -
  362.72 -	
  362.73 -	/**
  362.74 -	Removes the attachment from the message entry.
  362.75 -	
  362.76 -	This changes the array index values of all the attachments after the removed one.
  362.77 -	Attachment files stored in the message store are deleted. Linked files and message entry 
  362.78 -	attachments are not deleted, this is left to the caller to do if required.
  362.79 -	
  362.80 -	@param aParam The array index position of the attachment to be removed.
  362.81 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
  362.82 -	*/
  362.83 -	virtual void RemoveAttachmentL(TInt aIndex) = 0;
  362.84 -	
  362.85 -	/**
  362.86 -	Modify existing attachment
  362.87 -	@param aAttachmentInfo The attachment info associated with the file.
  362.88 -	  If the routine does not leave, then ownership will be transferred to the
  362.89 -	  attachment manager. If the routine does leave then ownership will not have
  362.90 -	  been transfered and the caller is responsible for cleanup.
  362.91 -	@leave KErrAccessDenied If attachment manager is in read-only mode.
  362.92 -	*/
  362.93 -	virtual void ModifyAttachmentInfoL(CMsvAttachment* aAttachmentInfo) = 0;
  362.94 -	
  362.95 -	};
  362.96 -
  362.97 -#endif // __MMSVATTACHMENTMANAGERSYNC_H__
   363.1 --- a/epoc32/include/mobexnotify.h	Tue Mar 16 16:12:26 2010 +0000
   363.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   363.3 @@ -1,41 +0,0 @@
   363.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   363.5 -// All rights reserved.
   363.6 -// This component and the accompanying materials are made available
   363.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   363.8 -// which accompanies this distribution, and is available
   363.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  363.10 -//
  363.11 -// Initial Contributors:
  363.12 -// Nokia Corporation - initial contribution.
  363.13 -//
  363.14 -// Contributors:
  363.15 -//
  363.16 -// Description:
  363.17 -//
  363.18 -
  363.19 -#ifndef __MOBEXNOTIFY_H__
  363.20 -#define __MOBEXNOTIFY_H__
  363.21 -
  363.22 -#include <e32std.h>
  363.23 -
  363.24 -class CObexPacket;
  363.25 -
  363.26 -/**
  363.27 -@internalComponent
  363.28 -
  363.29 -Provides the call back interface for anything owned by CObex.
  363.30 -Note:  This is an internal class which is not intended for use outside of
  363.31 -the Transport<->Obex interface.  Even where access rules allow it, external
  363.32 -users should not call these functions as their implementation may change.
  363.33 -*/
  363.34 -NONSHARABLE_CLASS(MObexNotify)
  363.35 -
  363.36 -	{
  363.37 -	public:
  363.38 -		virtual void Process(CObexPacket &aPacket) =0;
  363.39 -		virtual void Error(TInt aError) =0;
  363.40 -		virtual void TransportUp() =0;			// Call back to start the obex session
  363.41 -		virtual void TransportDown(TBool aForceTransportDeletion) =0;
  363.42 -	};
  363.43 -
  363.44 -#endif // __MOBEXNOTIFY_H__
   364.1 --- a/epoc32/include/msvapi.h	Tue Mar 16 16:12:26 2010 +0000
   364.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   364.3 @@ -1,1002 +0,0 @@
   364.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   364.5 -// All rights reserved.
   364.6 -// This component and the accompanying materials are made available
   364.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   364.8 -// which accompanies this distribution, and is available
   364.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  364.10 -//
  364.11 -// Initial Contributors:
  364.12 -// Nokia Corporation - initial contribution.
  364.13 -//
  364.14 -// Contributors:
  364.15 -//
  364.16 -// Description:
  364.17 -//
  364.18 -
  364.19 -#ifdef _DEBUG
  364.20 -#undef _NO_SESSION_LOGGING_
  364.21 -#endif
  364.22 -
  364.23 -#ifndef __MSVAPI_H__
  364.24 -#define __MSVAPI_H__
  364.25 -
  364.26 -#include <e32base.h>
  364.27 -#include <s32file.h>
  364.28 -
  364.29 -#ifdef _MSVAPI_DONT_INCLUDE_FLOGGER_
  364.30 -	#ifndef _NO_SESSION_LOGGING_
  364.31 -		#define _NO_SESSION_LOGGING_
  364.32 -	#endif
  364.33 -#else
  364.34 -	#include <flogger.h>
  364.35 -#endif
  364.36 -
  364.37 -#include <msvstd.h>
  364.38 -#include <msvstore.h>
  364.39 -#include <msvipc.h>
  364.40 -#include <msvarray.h>
  364.41 -#include <mclient.h>
  364.42 -
  364.43 -// Forward declarations
  364.44 -class CMsvSession;
  364.45 -class CMsvEntry;
  364.46 -class CBaseMtm;
  364.47 -class CMsvClientEntry;
  364.48 -class CMsvEntryArray;
  364.49 -class CMsvServer;
  364.50 -class CMsvServerEntry;
  364.51 -
  364.52 -// Remove these to remove client logging
  364.53 -//#define _NO_SESSION_LOGGING_
  364.54 -#define _NO_SESSION_LOGGING_SERIAL_
  364.55 -
  364.56 -// Single export used to start the message server
  364.57 -IMPORT_C TInt StartMessageServer(TAny*);
  364.58 -
  364.59 -// Create Message Server and return a server entry owned by caller
  364.60 -// This is all that is required to test server Mtm's
  364.61 -IMPORT_C CServer2* CreateMessageServerL(CMsvServerEntry*& aServerEntry);
  364.62 -
  364.63 -//**********************************
  364.64 -// CMsvOperation
  364.65 -//**********************************
  364.66 -//
  364.67 -// Abstract base class for operations controlling asynchronous functions
  364.68 -//
  364.69 -
  364.70 -class CMsvOperation : public CActive
  364.71 -/** Defines an interface for use by objects which control asynchronous commands 
  364.72 -in the messaging system. 
  364.73 -
  364.74 -Such objects are returned by CMsvEntry and User Interface MTM functions that 
  364.75 -complete asynchronously. The interface allows clients to:
  364.76 -
  364.77 -1. get progress information about the operation
  364.78 -
  364.79 -2. cancel the operation
  364.80 -
  364.81 -3. be signalled asynchronously when the operation completes; a client passes 
  364.82 -in a TRequestStatus of a suitable active object for this purpose
  364.83 -
  364.84 -The client only needs to understand the CMsvOperation interface, not the concrete 
  364.85 -implementation used. 
  364.86 -
  364.87 -Writing derived classes:
  364.88 -
  364.89 -As the base class interface for User Interface MTMs, CBaseUiMtm, defines functions 
  364.90 -that return CMsvOperation objects for control of asynchronous operations, 
  364.91 -implementers of these MTM components are required to provide suitable derived 
  364.92 -classes. For example, if CBaseUiMtm::EditL() is implemented to provide message 
  364.93 -editing, a CMsvOperation -derived class would be provided that completes when 
  364.94 -the editing operation is complete.
  364.95 -
  364.96 -Concrete derived classes must provide implementations of the pure virtual 
  364.97 -DoCancel() and RunL() functions defined by CActive. DoCancel() should be provided 
  364.98 -in the normal way to cancel the operation. RunL() should, in addition to any 
  364.99 -other required functionality, always end by signalling the client that the 
 364.100 -operation is complete with a suitable completion code. 
 364.101 -
 364.102 -@publishedAll
 364.103 -@released
 364.104 -*/
 364.105 -	{
 364.106 -public:
 364.107 -	IMPORT_C CMsvOperation(CMsvSession& aMsvSession, TInt aPriority, TRequestStatus& aObserverRequestStatus);
 364.108 -	IMPORT_C ~CMsvOperation();
 364.109 -	/** Gets information on the progress of the operation. 
 364.110 -	
 364.111 -	All operations on local entries share the same progress information format, 
 364.112 -	which defined by TMsvLocalOperationProgress. 
 364.113 -	
 364.114 -	For MTM-specific operations, progress information can be extracted by calling 
 364.115 -	CBaseUiMtm::GetProgress() or displayed by CBaseUiMtm::DisplayProgressSummary() 
 364.116 -	on the appropriate User Interface MTM.
 364.117 -	
 364.118 -	Requirements:
 364.119 -	
 364.120 -	Derived classes should implement this function so that the client can check 
 364.121 -	on the progress of the operation. The function should share an understanding 
 364.122 -	of the format of the buffer with the implementations of CBaseUiMtm::GetProgress() 
 364.123 -	and CBaseUiMtm::DisplayProgressSummary() in the User Interface MTM. The arguments 
 364.124 -	of CBaseUiMtm::GetProgress() show some information that should be included 
 364.125 -	where appropriate.
 364.126 -	
 364.127 -	@leave KErrNotReady The operation has not yet been started: it has been queued 
 364.128 -	for execution in the Message Server 
 364.129 -	@return Descriptor holding progress information. The maximum buffer size should 
 364.130 -	be KMsvProgressBufferLength (defined in msvipc.h). */
 364.131 -	virtual const TDesC8& ProgressL()=0;
 364.132 -	IMPORT_C virtual const TDesC8& FinalProgress();
 364.133 -	IMPORT_C TInt SystemProgress(TMsvSystemProgress& aOutSysProg);
 364.134 -	IMPORT_C virtual TUid Mtm() const;
 364.135 -	//
 364.136 -	inline TMsvOp Id() const;
 364.137 -	inline TMsvId Service() const;
 364.138 -	//
 364.139 -protected:
 364.140 -	IMPORT_C TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1);
 364.141 -
 364.142 -protected:
 364.143 -	/** The ID of the service that is associated with this operation. 
 364.144 -	
 364.145 -	Usually, the derived class constructor will contain a suitable argument to 
 364.146 -	allow the caller to set this.
 364.147 -	
 364.148 -	@see Service() */
 364.149 -	TMsvId iService;
 364.150 -	/** The UID of the MTM associated with the operation. 
 364.151 -	
 364.152 -	The appropriate value should be set by the derived class constructor.
 364.153 -	
 364.154 -	@see Mtm() */
 364.155 -	TUid iMtm;
 364.156 -	/** Request status of the operation observer. 
 364.157 -	
 364.158 -	This is the aObserverRequestStatus passed in the constructor. */
 364.159 -	TRequestStatus& iObserverRequestStatus;
 364.160 -	/** Message Server session used by object. This is set by the constructor. */
 364.161 -	CMsvSession& iMsvSession;
 364.162 -	
 364.163 -private:
 364.164 -	TMsvOp iId;
 364.165 -	};
 364.166 -
 364.167 -
 364.168 -//**********************************
 364.169 -// CMsvOperationWait
 364.170 -//**********************************
 364.171 -//
 364.172 -// Allows a synchronous wait on a operation
 364.173 -//
 364.174 -
 364.175 -class CMsvOperationWait: public CActive
 364.176 -/** Utility class used to wait until an asynchronous messaging operation
 364.177 -has completed. 
 364.178 -
 364.179 -Note that CMsvOperationActiveSchedulerWait is simpler to use, and should be used in 
 364.180 -preference to this class.
 364.181 -
 364.182 -To use the class:
 364.183 -
 364.184 -1. Create a new CMsvOperationWait object
 364.185 -
 364.186 -2. Call the messaging function that returns the asynchronous operation. 
 364.187 -The operation observer parameter should be the iStatus word of the CMsvOperationWait 
 364.188 -object. This means that the CMsvOperationWait object will be signalled when
 364.189 -the operation completes.
 364.190 -
 364.191 -3. Call the CMsvOperationWait object's Start() function. This sets the object
 364.192 -to be active.
 364.193 -
 364.194 -4. Call CActiveScheduler::Start(). This starts a nested active scheduler. The 
 364.195 -program will then wait until this active scheduler is stopped. The CMsvOperationWait 
 364.196 -object stops the scheduler when the operation completes, allowing the program to 
 364.197 -continue. 
 364.198 -
 364.199 -These steps cause the program to wait until the operation completes.
 364.200 -
 364.201 -@code
 364.202 -     CMsvOperationWait* waiter=CMsvOperationWait::NewLC();
 364.203 -     CMsvOperation* op = function_returning_opLC(waiter->iStatus);
 364.204 -     waiter->Start();
 364.205 -     CActiveScheduler::Start();
 364.206 -     CleanupStack::PopAndDestroy(2); // op, waiter
 364.207 -@endcode
 364.208 -
 364.209 -@see CActiveScheduler
 364.210 -@publishedAll
 364.211 -@released
 364.212 -*/
 364.213 -	{
 364.214 -public:
 364.215 -	IMPORT_C static CMsvOperationWait* NewLC(TInt aPriority=EPriorityStandard);
 364.216 -	IMPORT_C ~CMsvOperationWait();
 364.217 -	IMPORT_C void Start();
 364.218 -protected:
 364.219 -	CMsvOperationWait(TInt aPriority);
 364.220 -	void RunL();
 364.221 -	void DoCancel();
 364.222 -	};
 364.223 -
 364.224 -
 364.225 -//**********************************
 364.226 -// CMsvOperationActiveSchedulerWait
 364.227 -//**********************************
 364.228 -//
 364.229 -// Allows a synchronous wait on a operation using CActiveSchedulerWait class
 364.230 -// This class should be used in preference to CMsvOperationWait
 364.231 -// DOES NOT require an explicit call to CActiveScheduler::Start()--CMsvOperationActiveSchedulerWait::Start()
 364.232 -// effectively encapsulates this functionality
 364.233 -//
 364.234 -
 364.235 -class CMsvOperationActiveSchedulerWait: public CActive
 364.236 -/** Utility class used to wait until an asynchronous messaging operation
 364.237 -has completed. 
 364.238 -
 364.239 -To use the class:
 364.240 -
 364.241 -1. Create a new CMsvOperationActiveSchedulerWait object
 364.242 -
 364.243 -2. Call the messaging function that returns the asynchronous operation. 
 364.244 -The operation observer parameter should be the iStatus word of the CMsvOperationActiveSchedulerWait 
 364.245 -object. This means that the CMsvOperationActiveSchedulerWait object will be signalled when
 364.246 -the operation completes.
 364.247 -
 364.248 -3. Call the CMsvOperationActiveSchedulerWait object's Start() function. This sets the object
 364.249 -to be active.
 364.250 -
 364.251 -These steps cause the program to wait until the operation completes.
 364.252 -
 364.253 -@code
 364.254 -     CMsvOperationActiveSchedulerWait* waiter=CMsvOperationActiveSchedulerWait::NewLC();
 364.255 -     CMsvOperation* op = function_returning_opLC(waiter->iStatus);
 364.256 -     waiter->Start();
 364.257 -
 364.258 -     CleanupStack::PopAndDestroy(2); // op, waiter
 364.259 -@endcode
 364.260 -
 364.261 -@publishedAll
 364.262 -@released
 364.263 -*/
 364.264 -	{
 364.265 -public:
 364.266 -	IMPORT_C static CMsvOperationActiveSchedulerWait* NewLC(TInt aPriority=EPriorityStandard);
 364.267 -	IMPORT_C ~CMsvOperationActiveSchedulerWait();
 364.268 -	IMPORT_C void Start();
 364.269 -private:
 364.270 -	CMsvOperationActiveSchedulerWait(TInt aPriority);
 364.271 -	void RunL();
 364.272 -	void DoCancel();
 364.273 -private:
 364.274 -	CActiveSchedulerWait iActiveSchedulerWait;
 364.275 -	};
 364.276 -
 364.277 -//**********************************
 364.278 -// CMsvCompletedOperation
 364.279 -//**********************************
 364.280 -//
 364.281 -// An operation which is already completed on construction
 364.282 -//
 364.283 -
 364.284 -class CMsvCompletedOperation : public CMsvOperation
 364.285 -/** Utility to create a messaging operation object for an operation that has already 
 364.286 -completed. 
 364.287 -
 364.288 -This utility is useful, for example, for writers of MTMs, where the API requires that an 
 364.289 -asynchronous operation is returned, but where in reality, the operation has performed
 364.290 -synchronously. It allows the program to construct an operation object for which 
 364.291 -the operation is already completed, with the progress information and error code set.   
 364.292 -
 364.293 -@publishedAll
 364.294 -@released
 364.295 -*/
 364.296 -	{
 364.297 -public:
 364.298 -	IMPORT_C static CMsvCompletedOperation* NewL(CMsvSession& aMsvSession, TUid aMtm, const TDesC8& aProgress, TMsvId aService, TRequestStatus& aObserverRequestStatus, TInt aErr=KErrNone);
 364.299 -	IMPORT_C ~CMsvCompletedOperation();
 364.300 -	//
 364.301 -	const TDesC8& ProgressL();
 364.302 -	const TDesC8& FinalProgress();
 364.303 -private:
 364.304 -	CMsvCompletedOperation(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus);
 364.305 -	void ConstructL(TUid aMtm, TInt aError, const TDesC8& aProgress, TMsvId aService);
 364.306 -	// from CActive
 364.307 -	void DoCancel();
 364.308 -	void RunL();
 364.309 -	//
 364.310 -private:
 364.311 -	HBufC8* iProgress;
 364.312 -	};
 364.313 -
 364.314 -//**********************************
 364.315 -// CMsvSendOperation
 364.316 -//**********************************
 364.317 -//
 364.318 -// A send operation which returns a standard progress (used by SendAs2)
 364.319 -//
 364.320 -
 364.321 -/** Utility to create an operation containing a sending operation which may be used
 364.322 -to retrieve a standard progress structure.
 364.323 -
 364.324 -This class is intended to be derived from. The derived class must define the TranslateProgress()
 364.325 -member function. This function is responsible for translating the native progress of the given
 364.326 -mtm into the standard progress structure, CMsvSendOperation::TSendOperationProgress.
 364.327 -
 364.328 -@publishedAll
 364.329 -@released
 364.330 -*/
 364.331 -class CMsvSendOperation : public CMsvOperation
 364.332 -	{
 364.333 -public:
 364.334 -	/** Send progress state.
 364.335 -
 364.336 -	@see TSendOperationProgress
 364.337 -	*/
 364.338 -	enum TSendOperationState
 364.339 -		{
 364.340 -		ESendStateInPreparation,
 364.341 -		ESendStateWaitingToSend,
 364.342 -		ESendStateConnecting,
 364.343 -		ESendStateSending,
 364.344 -		ESendStateDone,
 364.345 -		ESendStateFailed
 364.346 -		};
 364.347 -	/** Send progress.
 364.348 -	
 364.349 -	Structure holding send progress. For mtms unable to provide detailed progress 
 364.350 -	information, iProgressMax and iProgress must be zeroed. This will then allow
 364.351 -	the client to check for this case and display a busy status dialog as opposed to
 364.352 -	a progress dialog. If the mtm is capable of detailed progress, iProgressMax 
 364.353 -	should be set to the total number of units to be sent and iProgress the number
 364.354 -	of units sent.
 364.355 -
 364.356 -	@see TSendOperationState
 364.357 -	*/
 364.358 -	class TSendOperationProgress
 364.359 -		{
 364.360 -	public:
 364.361 -		TSendOperationState iState;
 364.362 -		TInt 				iError;
 364.363 -		TInt 				iProgressMax;
 364.364 -		TInt 				iProgress;	
 364.365 -		};
 364.366 -
 364.367 -public:
 364.368 -	IMPORT_C virtual ~CMsvSendOperation();
 364.369 -	// methods from CMsvOperation
 364.370 -	IMPORT_C virtual const TDesC8& ProgressL();
 364.371 -	IMPORT_C virtual const TDesC8& FinalProgress();
 364.372 -	IMPORT_C void Start(CMsvOperation* aOperation);
 364.373 -protected:
 364.374 -	IMPORT_C CMsvSendOperation(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
 364.375 -private:	// methods from CActive
 364.376 -	IMPORT_C virtual void DoCancel();
 364.377 -	IMPORT_C virtual void RunL();
 364.378 -private:
 364.379 -	/** Translates the progress from sending operation's progress into TSendOperationProgress. 
 364.380 -	
 364.381 -	This member function must be defined by derived classes. Must not leave.
 364.382 -	@see TSendOperationProgress 
 364.383 -	@return Descriptor holding progress information.
 364.384 -	*/
 364.385 -	virtual const TDesC8& TranslateProgress(const TDesC8& aProgress)=0;
 364.386 -	void Complete(TInt anError);
 364.387 -protected:
 364.388 -	/** The progress that is associated with this operation. 
 364.389 -
 364.390 -	The TranslateProgress defined by derived classes must populate and return
 364.391 -	this progress structure.
 364.392 -	@see TranslateProgress() 
 364.393 -	@see TSendOperationProgress */
 364.394 -	TPckgBuf<TSendOperationProgress> iProgress;
 364.395 -	/** The sending operation. 
 364.396 -	
 364.397 -	Assigned when ConstructL is called
 364.398 -	*/
 364.399 -	CMsvOperation* iOperation;
 364.400 -	};
 364.401 -	
 364.402 -/** Package buffer for a TSendOperationProgress
 364.403 -*/
 364.404 -typedef TPckgBuf<CMsvSendOperation::TSendOperationProgress> TMsvSendOperationProgress;
 364.405 -
 364.406 -
 364.407 -//**********************************
 364.408 -// MMsvSessionObserver
 364.409 -//**********************************
 364.410 -//
 364.411 -// 
 364.412 -//
 364.413 -
 364.414 -class MMsvSessionObserver
 364.415 -/** Provides the interface for notification of events from a Message Server session. 
 364.416 -
 364.417 -
 364.418 -The types of event are given in the enumeration TMsvSessionEvent. Clients 
 364.419 -must provide an object that implements the interface, and set it to be notified 
 364.420 -through CMsvSession::OpenSyncL() or CMsvSession::OpenASyncL(). Additional 
 364.421 -observers can also be added and removed through CMsvSession.
 364.422 -
 364.423 -@see CMsvSession::AddObserverL()
 364.424 -@see CMsvSession::RemoveObserver() 
 364.425 -@publishedAll
 364.426 -@released
 364.427 -*/
 364.428 -	{
 364.429 -public:
 364.430 -	/** Session event type.
 364.431 -
 364.432 -	@see EMsvMediaUnavailable
 364.433 -	@see TDriveNumber 
 364.434 -	*/
 364.435 -	enum TMsvSessionEvent 
 364.436 -							{ 
 364.437 -	/** One or more entries have been created.
 364.438 -	
 364.439 -	aArg1 is a CMsvEntrySelection of the new entries. aArg2 is the TMsvId of the 
 364.440 -	parent entry. */
 364.441 -							EMsvEntriesCreated,
 364.442 -	/** One or more index entries have been changed. 
 364.443 -	
 364.444 -	aArg1 is a CMsvEntrySelection of the index entries. aArg2 is the TMsvId of 
 364.445 -	the parent entry. */
 364.446 -							EMsvEntriesChanged,
 364.447 -	/** One or more entries have been deleted.
 364.448 -	
 364.449 -	aArg1 is a CMsvEntrySelection containing the IDs of the deleted entries. aArg2 
 364.450 -	is the TMsvId of the parent entry. */
 364.451 -							EMsvEntriesDeleted,
 364.452 -	/** One or more entries have been moved.
 364.453 -	
 364.454 -	aArg1 is a CMsvEntrySelection containing the IDs of the moved entries. aArg2 
 364.455 -	is the TMsvId of the new parent. aArg3 is the TMsvId of the old parent entry. */
 364.456 -							EMsvEntriesMoved,
 364.457 -	/** A new MTM has been installed. 
 364.458 -	
 364.459 -	aArg2 points to a TUid for the new MTM. */
 364.460 -							EMsvMtmGroupInstalled,
 364.461 -	/** A MTM has been uninstalled. 
 364.462 -	
 364.463 -	aArg2 points to a TUid of the removed MTM. */
 364.464 -							EMsvMtmGroupDeInstalled,
 364.465 -	/** Something has happening in the server, but this client was unable to retrieve 
 364.466 -	the information.
 364.467 -	
 364.468 -	aArg1 points to the error code. */
 364.469 -							EMsvGeneralError,
 364.470 -	/** The client should immediately close the session with the Message Server. */
 364.471 -							EMsvCloseSession,
 364.472 -	/** Received after a client has used CMsvSession::OpenAsyncL() to create a session. 
 364.473 -	
 364.474 -	
 364.475 -	The session can now be used. */
 364.476 -							EMsvServerReady,
 364.477 -	/** Received after a client has used CMsvSession::OpenAsyncL() to create a session. 
 364.478 -	
 364.479 -	
 364.480 -	The server could not be started, and aArg1 points to the error code. */
 364.481 -							EMsvServerFailedToStart,
 364.482 -	/** The Message Server index had been corrupted and had to be rebuilt. 
 364.483 -	
 364.484 -	All local entries are recovered, but all remote entries have been lost. */
 364.485 -							EMsvCorruptedIndexRebuilt,
 364.486 -	/** The Message Server has been terminated. 
 364.487 -	
 364.488 -	All clients must close their sessions immediately. */
 364.489 -							EMsvServerTerminated,
 364.490 -	/** The Message Server has automatically changed the index location to use the 
 364.491 -	internal disk.
 364.492 -	
 364.493 -	aArg1 is a TDriveNumber value that identifies the drive used by the Message 
 364.494 -	Server to hold the index prior to the change. 
 364.495 -	
 364.496 -	aArg2 is also a TDriveNumber value; it identifies the new drive that the Message 
 364.497 -	Server is using.
 364.498 -	
 364.499 -	CMsvEntry contexts either refresh themselves or mark themselves invalid.
 364.500 -	
 364.501 -	@see EMsvMediaUnavailable
 364.502 -	@see TDriveNumber */
 364.503 -							EMsvMediaChanged, // I assume the following four are in sequential order
 364.504 -	/** The media (disk) containing the Message Server index has been removed. 
 364.505 -	
 364.506 -	aArg1 is a TDriveNumber value that identifies the drive that is no longer 
 364.507 -	available.
 364.508 -	
 364.509 -	Future requests may fail with KMsvMediaUnavailable. A EMsvMediaChanged event 
 364.510 -	may be received in the future, as the Message Server switches back to the 
 364.511 -	internal drive. */
 364.512 -							EMsvMediaUnavailable,
 364.513 -	/** The disk containing the Message Store is available again.
 364.514 -	
 364.515 -	aArg1 is a TDriveNumber value that identifies the drive that is being used.
 364.516 -	
 364.517 -	The Message Server can now operate as normal. No client action is necessary. */
 364.518 -							EMsvMediaAvailable,
 364.519 -	/** An incorrect disk is inserted. 
 364.520 -	
 364.521 -	aArg1 is a TDriveNumber value that identifies the drive in which the incorrect 
 364.522 -	disk has been inserted.
 364.523 -	
 364.524 -	Some requests may fail with KMsvMediaIncorrect. Clients may get an EMsvMediaChanged 
 364.525 -	event in the future telling them that the Message Server has switched back 
 364.526 -	to the internal drive. */
 364.527 -							EMsvMediaIncorrect,
 364.528 -	/** The Message Server has started to rebuild its index after it has been corrupted.
 364.529 -	
 364.530 -	@see EMsvCorruptedIndexRebuilt */
 364.531 -							EMsvCorruptedIndexRebuilding
 364.532 -							};
 364.533 -public: 
 364.534 -	/** Indicates an event has occurred. 
 364.535 -	
 364.536 -	The type of event is indicated by the value of aEvent. The interpretation 
 364.537 -	of the TAny arguments depends on this type. 
 364.538 -	
 364.539 -	For most event types, the action that is taken, for example, updating the 
 364.540 -	display, is client-specific. All clients though should respond to EMsvCloseSession 
 364.541 -	and EMsvServerTerminated events. 
 364.542 -	
 364.543 -	@param aEvent Indicates the event type. 
 364.544 -	@param aArg1 Event type-specific argument value 
 364.545 -	@param aArg2 Event type-specific argument value 
 364.546 -	@param aArg3 Event type-specific argument value */
 364.547 -	virtual void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)=0;
 364.548 -	};
 364.549 -
 364.550 -//**********************************
 364.551 -// CMsvSession
 364.552 -//**********************************
 364.553 -//
 364.554 -// 
 364.555 -//
 364.556 -
 364.557 -class TCapabilitySet;
 364.558 -
 364.559 -const TInt KMsvSessionObserverGranularity=4;  //???
 364.560 -
 364.561 -class CMsvSession: public CActive
 364.562 -/** Represents a channel of communication between a client thread (Client-side 
 364.563 -MTM, User Interface MTM, or message client application) and the Message Server 
 364.564 -thread. 
 364.565 -
 364.566 -The class provides the means by which clients are notified when important 
 364.567 -Message Server events occur.
 364.568 -
 364.569 -Note the following significant groups of functions:
 364.570 -
 364.571 -Creation functions: a message client application must use OpenSyncL() or OpenASyncL() 
 364.572 -to create a session object, before it can instantiate any MTM or CMsvEntry 
 364.573 -object. Only a single session should be created within a thread. As Client-side 
 364.574 -MTM, User Interface MTM, and CMsvEntry objects are created in the client thread, 
 364.575 -these use the client session, and do not create their own. Note that to close 
 364.576 -a session, delete all objects relying on that session, and then the session 
 364.577 -object itself.
 364.578 -
 364.579 -Cleanup functions: CMsvSession provides the ability to handle the cleanup 
 364.580 -of entries in the event of a leave occurring, in a very similar manner to 
 364.581 -the standard cleanup stack. The difference is that, on a leave, any entries 
 364.582 -that are on the entry cleanup stack are removed from the Message Server. The 
 364.583 -implementation uses the standard cleanup stack, so entry push and pop functions 
 364.584 -should be used in the same order as all other types of push and pop. The functions 
 364.585 -can be used both by MTM implementations and message client applications. 
 364.586 -@publishedAll
 364.587 -@released
 364.588 -*/
 364.589 -	{
 364.590 -public: 
 364.591 -	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver);
 364.592 -	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver);
 364.593 -	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver);
 364.594 -	
 364.595 -	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver, RFs& aFs);
 364.596 -	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver, RFs& aFs);
 364.597 -	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver, RFs& aFs);
 364.598 -	
 364.599 -	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver, TInt aPriority);
 364.600 -	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver, TInt aPriority);
 364.601 -	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver, TInt aPriority);
 364.602 -	
 364.603 -	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);
 364.604 -	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);
 364.605 -	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);	
 364.606 -	
 364.607 -	~CMsvSession();
 364.608 -	// --- Observer functions ---
 364.609 -	IMPORT_C void AddObserverL(MMsvSessionObserver& aObserver);
 364.610 -	IMPORT_C void RemoveObserver(MMsvSessionObserver& aObserver);
 364.611 -	IMPORT_C TInt SetReceiveEntryEvents(TBool aReceive);
 364.612 -	// --- Utility functions ---
 364.613 -	IMPORT_C CMsvEntry* GetEntryL(TMsvId aEntId);
 364.614 -	IMPORT_C TInt GetEntry(TMsvId aId, TMsvId& aService, TMsvEntry& aEntry);
 364.615 -	
 364.616 -	IMPORT_C CMsvOperation* TransferCommandL(const CMsvEntrySelection& aSelection, TInt aCommandId, const TDesC8& aParameter, TRequestStatus& aStatus);
 364.617 -	IMPORT_C void TransferCommandL(const CMsvEntrySelection& aSelection, TInt aCommandId, const TDesC8& aParameter, TDes8& aProgress);
 364.618 -	IMPORT_C void IncPcSyncCountL(const CMsvEntrySelection& aSelection);
 364.619 -	IMPORT_C void DecPcSyncCountL(const CMsvEntrySelection& aSelection);
 364.620 -	IMPORT_C void GetChildIdsL(TMsvId aId, const CMsvEntryFilter& aFilter, CMsvEntrySelection& aSelection);
 364.621 -	IMPORT_C void ChangeAttributesL(const CMsvEntrySelection& aSelection, TUint aSetAttributes, TUint aClearAttributes);
 364.622 -	IMPORT_C CMsvOperation* ChangeDriveL(TInt aDrive, TRequestStatus& aStatus);
 364.623 -	IMPORT_C TInt OutstandingOperationsL();
 364.624 -	IMPORT_C CMsvOperation* CopyStoreL(const TDriveUnit& aDrive, TRequestStatus& aStatus);
 364.625 -	IMPORT_C CMsvOperation* DeleteStoreL(const TDriveUnit& aDrive, TRequestStatus& aStatus);
 364.626 -	// --- cleanup functions
 364.627 -	IMPORT_C static void CleanupEntry(TAny* aPtr);
 364.628 -	IMPORT_C void CleanupEntryPushL(TMsvId aId);
 364.629 -	IMPORT_C void CleanupEntryPop(TInt aCount=1);
 364.630 -
 364.631 -	IMPORT_C void RemoveEntry(TMsvId aId);
 364.632 -	/// MTM functions
 364.633 -	IMPORT_C TInt InstallMtmGroup(const TDesC& aFullName);
 364.634 -	IMPORT_C TInt DeInstallMtmGroup(const TDesC& aFullName); 
 364.635 -	
 364.636 -	IMPORT_C TInt StopService(TMsvId aServiceId);
 364.637 -	IMPORT_C TBool ServiceActive(TMsvId aServiceId);
 364.638 -	IMPORT_C TInt ServiceProgress(TMsvId aServiceId, TDes8& aProgress);
 364.639 -	
 364.640 -	IMPORT_C void CloseMessageServer();
 364.641 -	IMPORT_C RFs& FileSession();
 364.642 -	
 364.643 -	IMPORT_C void GetMtmRequiredCapabilitiesL(TUid aMtmTypeUid, TCapabilitySet& aCapSet) const;
 364.644 -	MMsvStoreManager& StoreManager();
 364.645 -
 364.646 -	IMPORT_C TBool GetAndClearIndexCorruptFlagL();
 364.647 -	IMPORT_C TDriveUnit CurrentDriveL();
 364.648 -	IMPORT_C TBool DriveContainsStoreL(TDriveUnit aDrive);
 364.649 -	IMPORT_C TBool MessageStoreDrivePresentL();
 364.650 -
 364.651 -	IMPORT_C TInt ServiceAccessPointId(TMsvId aServiceId, TUint32& aAccessPointId);
 364.652 -
 364.653 -protected:
 364.654 -	CMsvSession(MMsvSessionObserver& aObserver);
 364.655 -	CMsvSession(MMsvSessionObserver& aObserver, RFs& aFs);
 364.656 -	CMsvSession(MMsvSessionObserver& aObserver, TInt aPriority);
 364.657 -	CMsvSession(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);
 364.658 -	
 364.659 -	void ConstructL(TBool aSyncOpening);
 364.660 -	void ConstructAsObserverL();
 364.661 -	//
 364.662 -	IMPORT_C TInt OperationId();
 364.663 -	IMPORT_C RMsvServerSession& Session();
 364.664 -
 364.665 -	void CheckDrive();
 364.666 -	//
 364.667 -	// from CActive
 364.668 -	void RunL();
 364.669 -	void DoCancel();
 364.670 -	TInt RunError(TInt aError);
 364.671 -	//
 364.672 -private:
 364.673 -	void NotifyAllObserversL(MMsvSessionObserver::TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 364.674 -	void CleanupEntryDelete();
 364.675 -  	void DoRunL(TMsvNotifBuffer& aBuffer);
 364.676 - 	void HandleNotifyL();
 364.677 - 	void DoHandleNotifyL(TMsvNotifBuffer& aBuffer);
 364.678 -	void GetMessageFolderL();
 364.679 -	//	
 364.680 -private:
 364.681 -	TInt iOperationId;
 364.682 -	RFs	iFs;
 364.683 -	RMsvServerSession iSession;
 364.684 -	TMsvNotifBuffer iChange;	
 364.685 -	MMsvSessionObserver&	iMainObserver;
 364.686 -	CArrayPtrFlat<MMsvSessionObserver>* iObservers;
 364.687 -	CMsvEntrySelection* iCleanupList;
 364.688 -	TInt iSyncStart;
 364.689 -	HBufC* iMessageFolder;
 364.690 -	TDriveNumber iDrive;
 364.691 -	CMsvEntrySelection* iNotifSelection;
 364.692 -	TPckgBuf<TUint32> iSequenceBuf;
 364.693 -	TUint32 iNotifySequence;
 364.694 -	TBool iReceiveEntryEvents;
 364.695 -	/** Specifies whether to use the shared file server session */	
 364.696 -	TBool iUseSharedFs;
 364.697 -	//
 364.698 -#ifndef _NO_SESSION_LOGGING_
 364.699 -	void CreateSessionLogL();
 364.700 -	void Log(TRefByValue<const TDesC> aFmt, ...);
 364.701 -
 364.702 -	// must be the last data member in the class to preserve BC.
 364.703 -	mutable RFileLogger iLog;
 364.704 -#endif
 364.705 -	//
 364.706 -friend class CSendAs;
 364.707 -friend class CMsvEntry;
 364.708 -friend class CMsvOperation;
 364.709 -friend class CMsvEntryOperation;
 364.710 -friend class CObserverRegistry;
 364.711 -	//
 364.712 -	};
 364.713 -
 364.714 -
 364.715 -
 364.716 -
 364.717 -//**********************************
 364.718 -// MMsvEntryObserver
 364.719 -//**********************************
 364.720 -//
 364.721 -// 
 364.722 -//
 364.723 -
 364.724 -class MMsvEntryObserver
 364.725 -/** Provides the interface for notification of events associated with an entry. 
 364.726 -
 364.727 -The types of event are given in the enumeration TMsvEntryEvent. Clients can 
 364.728 -provide an object that implements the interface, and set it to be notified 
 364.729 -through CMsvEntry::AddObserverL(). 
 364.730 -@publishedAll
 364.731 -@released
 364.732 -*/
 364.733 -	{
 364.734 -public:
 364.735 -	/** Defines entry event types. 
 364.736 -@publishedAll
 364.737 -@released
 364.738 -*/
 364.739 -	enum TMsvEntryEvent 
 364.740 -							{	
 364.741 -	/** The entry has been changed, either as a result of a CMsvEntry::ChangeL() or 
 364.742 -	by another client. */
 364.743 -							EMsvEntryChanged,
 364.744 -	/** New children have been created. aArg1 points to a CMsvEntrySelection contain 
 364.745 -	the ID of the new children. */
 364.746 -							EMsvNewChildren,
 364.747 -	/** Children have been deleted. aArg1 points to a CMsvEntrySelection contain the 
 364.748 -	ID of the deleted children. */
 364.749 -							EMsvDeletedChildren,
 364.750 -	/** One or more of the children have been changed. aArg1 points to a CMsvEntrySelection 
 364.751 -	containing the IDs of the changed children. */
 364.752 -							EMsvChildrenChanged,
 364.753 -	/** The entry has been deleted by another client. The context is now invalid. */
 364.754 -							EMsvEntryDeleted,
 364.755 -	/** The context has become invalid. The entry has been changed, but the CMsvEntry 
 364.756 -	was unable to update the context. The context will only become valid by a 
 364.757 -	successful CMsvEntry::SetEntryL() call. aArg1 points to a TInt containing 
 364.758 -	the error code for the invalid context. */
 364.759 -							EMsvContextInvalid,
 364.760 -	/** Some new children have been created, but CMsvEntry was unable to retrieve the 
 364.761 -	data from the Message Server. The children will be correct only after a successful 
 364.762 -	call to CMsvEntry::SetEntryL(). */
 364.763 -							EMsvChildrenMissing,
 364.764 -	/** An error has occurred such that the status of the children is unknown and probably 
 364.765 -	invalid. aArg1 points to a TInt containing the error code for the invalid 
 364.766 -	context */
 364.767 -							EMsvChildrenInvalid,
 364.768 -	/** The current entry has been moved by another client. The CMsvEntry has already 
 364.769 -	been updated to reflect the new parent. */
 364.770 -							EMsvEntryMoved};
 364.771 -public: 
 364.772 -	/** Indicates when called by a CMsvEntry object that an event has occurred.
 364.773 -	
 364.774 -	The type of event is indicated by the value of aEvent. The interpretation of the aArg1-3 values depends on this type. 
 364.775 -	For most event types, the action that is taken, for example, updating the display, is client-specific. Most clients will 
 364.776 -	need to handle events that make the current context invalid: EMsvContextInvalid and EMsvEntryDeleted.
 364.777 -
 364.778 -	An implementation can leave if an error occurs. The leave is not trapped by the framework, so 
 364.779 -	the error code may be displayed to the user.
 364.780 -
 364.781 -	@param aEvent Indicates the event type.
 364.782 -	@param aArg1 Event-specific argument value
 364.783 -	@param aArg2 Event-specific argument value
 364.784 -	@param aArg3 Event-specific argument value
 364.785 -	*/
 364.786 -	virtual void HandleEntryEventL(TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)=0;
 364.787 -	};
 364.788 -
 364.789 -
 364.790 -
 364.791 -//**********************************
 364.792 -// CMsvEntry
 364.793 -//**********************************
 364.794 -//
 364.795 -// 
 364.796 -//
 364.797 -
 364.798 -class CMsvEntry: public CBase, public MMsvSessionObserver, public MMsvStoreObserver
 364.799 -/** Accesses and acts upon a particular Message Server entry. The current entry 
 364.800 -that a CMsvEntry object relates is referred to as its context. 
 364.801 -
 364.802 -It may be helpful to consider CMsvEntry functions in two broad groups. The 
 364.803 -first provides means to access the various types of storage associated with 
 364.804 -an entry. The second provides a means to discover and access other entries 
 364.805 -that the entry owns (its children). 
 364.806 -
 364.807 -Message client applications, Client-side MTMs, and User Interface MTMs all 
 364.808 -commonly use CMsvEntry objects. CMsvEntry objects though represent a lower 
 364.809 -level of access to an entry than that provided by a Client-side MTM or User 
 364.810 -Interface MTM. In particular, any MTM-specific functionality, such as address 
 364.811 -lists or subject fields, must be accessed by a message client application 
 364.812 -through an MTM inteface.
 364.813 -
 364.814 -A CMsvEntry object is relatively expensive in RAM usage, as it caches its 
 364.815 -children, updating them as necessary when notified of changes. They should 
 364.816 -therefore be created sparingly.
 364.817 -
 364.818 -Note that Server-side MTMs do not use this class, but a similar one, CMsvServerEntry.
 364.819 - 
 364.820 -@publishedAll
 364.821 -@released
 364.822 -*/
 364.823 -	{
 364.824 -public: // Public member functions
 364.825 -	IMPORT_C static CMsvEntry* NewL(CMsvSession& aMsvSession, TMsvId aMsvId, const TMsvSelectionOrdering& aOrdering);
 364.826 -	IMPORT_C ~CMsvEntry();
 364.827 -	//
 364.828 -	// --- Observer functions ---
 364.829 -	IMPORT_C void AddObserverL(MMsvEntryObserver& aObserver);
 364.830 -	IMPORT_C void RemoveObserver(MMsvEntryObserver& aObserver);
 364.831 -	//
 364.832 -	// --- Accessor for associated session ---
 364.833 -	inline CMsvSession& Session(); 
 364.834 -	//
 364.835 -	// --- Accessors the associated message store ---
 364.836 -	IMPORT_C CMsvStore* ReadStoreL();
 364.837 -	IMPORT_C CMsvStore* EditStoreL();
 364.838 -	//
 364.839 -	// --- Synchronous Current Entry functions ---
 364.840 -	inline TMsvId EntryId() const; 
 364.841 -	inline const TMsvEntry& Entry() const; 
 364.842 -	inline const TMsvSelectionOrdering& SortType() const;
 364.843 -	inline TMsvId OwningService() const;
 364.844 -	IMPORT_C void SetSortTypeL(const TMsvSelectionOrdering& aOrdering);
 364.845 -	IMPORT_C void SetMtmListL(const CArrayFix<TUid>& aMtmList);
 364.846 -	IMPORT_C void SetEntryL(TMsvId aId);
 364.847 -	IMPORT_C void ChangeL(const TMsvEntry& aEntry);
 364.848 -	IMPORT_C void ChangeL(const TMsvEntry& aEntry, TSecureId aOwnerId);
 364.849 -	
 364.850 -
 364.851 -	//
 364.852 -	// --- Asynchronous Current Entry functions ---
 364.853 -	IMPORT_C CMsvOperation* ChangeL(const TMsvEntry& aEntry, TRequestStatus& aStatus);
 364.854 -	IMPORT_C CMsvOperation* ChangeL(const TMsvEntry& aEntry, TSecureId aOwnerId, TRequestStatus& aStatus);
 364.855 -	//
 364.856 -	// --- Asynchronous Child Entry functions ---
 364.857 -	IMPORT_C CMsvOperation* CreateL(const TMsvEntry& aEntry, TRequestStatus& aStatus);
 364.858 -	IMPORT_C CMsvOperation* CreateL(const TMsvEntry& aEntry, TSecureId aOwnerId, TRequestStatus& aStatus);
 364.859 -	IMPORT_C CMsvOperation* DeleteL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);
 364.860 -	IMPORT_C CMsvOperation* DeleteL(TMsvId aMsvId, TRequestStatus& aStatus);
 364.861 -	IMPORT_C CMsvOperation* CopyL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);
 364.862 -	IMPORT_C CMsvOperation* CopyL(TMsvId aMsvId, TMsvId aTargetId, TRequestStatus& aStatus);
 364.863 -	IMPORT_C CMsvOperation* MoveL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);
 364.864 -	IMPORT_C CMsvOperation* MoveL(TMsvId aMsvId, TMsvId aTargetId, TRequestStatus& aStatus);
 364.865 -	//
 364.866 -	// --- Synchronous Child Entry functions ---
 364.867 -	IMPORT_C CMsvEntrySelection* ChildrenL() const;
 364.868 -	IMPORT_C CMsvEntrySelection* ChildrenWithServiceL(TMsvId aServiceId) const;
 364.869 -	IMPORT_C CMsvEntrySelection* ChildrenWithMtmL(TUid aMtm) const;
 364.870 -	IMPORT_C CMsvEntrySelection* ChildrenWithTypeL(TUid aType) const;
 364.871 -	inline TInt Count() const;
 364.872 -	IMPORT_C const TMsvEntry& ChildDataL(TMsvId aId) const;
 364.873 -	IMPORT_C const TMsvEntry& operator[](TInt aIndex) const;
 364.874 -	IMPORT_C CMsvEntry* ChildEntryL(TMsvId aId) const;
 364.875 -	IMPORT_C void MoveL(TMsvId aMsvId, TMsvId aTargetId);
 364.876 -	IMPORT_C void MoveL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TMsvLocalOperationProgress& aProgress);
 364.877 -	IMPORT_C void CopyL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TMsvLocalOperationProgress& aProgress);
 364.878 -	IMPORT_C void CopyL(TMsvId aMsvId, TMsvId aTargetId);
 364.879 -
 364.880 -
 364.881 -	IMPORT_C void CreateL(TMsvEntry& aEntry);
 364.882 -	IMPORT_C void CreateL(TMsvEntry& aEntry, TSecureId aOwnerId);
 364.883 -	IMPORT_C void DeleteL(TMsvId aId);
 364.884 -	IMPORT_C void DeleteL(const CMsvEntrySelection& aSelection, TMsvLocalOperationProgress& aProgress);
 364.885 -	IMPORT_C void ChangeAttributesL(const CMsvEntrySelection& aSelection, TUint aSetAttributes, TUint aClearAttributes);
 364.886 -	//
 364.887 -	// from MMsvSessionObserver
 364.888 -	void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 364.889 -	// From MMsvStoreObserver
 364.890 -	void HandleStoreEvent(TMsvStoreEvent aEvent, TMsvId aId);
 364.891 -
 364.892 -
 364.893 -	IMPORT_C TBool HasStoreL() const;
 364.894 -	//
 364.895 - 	/** @internalTechnology */
 364.896 - 	IMPORT_C void SetEntryNoCheckL(TMsvId aId);
 364.897 -	//	
 364.898 -private: // Private members
 364.899 -	CMsvEntry(CMsvSession& aMsvSession, const TMsvSelectionOrdering& aOrdering);
 364.900 -	void ConstructL(TMsvId aMsvId);
 364.901 -	//
 364.902 -	void NotifyAllObserversL(MMsvEntryObserver::TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 364.903 -	void ContextChangedL(MMsvEntryObserver::TMsvEntryEvent aEvent);
 364.904 -	void NewChildrenL(const CMsvEntrySelection& aSelection);
 364.905 -	CMsvEntrySelection* DoGetNewChildrenL(const CMsvEntrySelection& aSelection);
 364.906 -	void DeletedChildrenL(const CMsvEntrySelection& aSelection);
 364.907 -	void ChildrenChangedL(const CMsvEntrySelection& aSelection);
 364.908 -	void CheckNewGrandchildrenL(TMsvId aId);
 364.909 -	void CheckDeletedGrandchildrenL(TMsvId aId);
 364.910 -	void NotifyChildChangedL(TMsvId aId);
 364.911 -	CMsvEntrySelection* DoMakeSelectionL(TMsvId aId);
 364.912 -	void CheckIfContextMovedL(const CMsvEntrySelection& aSelection);
 364.913 -	//
 364.914 -	TBool IsAChild(TMsvId aId) const;
 364.915 -	TBool AreChildren(const CMsvEntrySelection& aSelection) const;
 364.916 -	//
 364.917 -	CMsvOperation* DoDeleteL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);
 364.918 -	CMsvClientEntry* DoGetEntryLC(TMsvId aId, TMsvId& aOwningService);
 364.919 -	void DoGetChildrenL();
 364.920 -	CMsvEntryArray* GetNewSortedListL(const TMsvSelectionOrdering& aOrdering, const CArrayFix<TUid>& aMtmList);
 364.921 -	void DoSortTypeL(CMsvClientEntry* aContext);
 364.922 -	void ReplaceChildL(TInt pos, const TMsvEntry& aEntry);
 364.923 -	void DeleteChild(TInt aPosition);
 364.924 -	void HandleMediaChangeL();
 364.925 -
 364.926 -	TInt MoveOneL(TMsvId aMsvId, TMsvId aTargetId);
 364.927 -	TInt CopyOneL(TMsvId aMsvId, TMsvId aTargetId);
 364.928 -	TInt DeleteOneL(TMsvId aMsvId);
 364.929 -	//
 364.930 -private:
 364.931 -	enum TEntryState {	EValid,
 364.932 -						EInvalidChangingContext,
 364.933 -						EInvalidDeletedContext,
 364.934 -						EInvalidOldContext,
 364.935 -						EInvalidMissingChildren};
 364.936 -	//
 364.937 -#ifndef _NO_SESSION_LOGGING_
 364.938 -	void Log(TRefByValue<const TDesC> aFmt, ...);
 364.939 -#endif
 364.940 -	//
 364.941 -private:
 364.942 -	TBool iOberserverAdded;
 364.943 -	TEntryState	iState;
 364.944 -	CMsvSession& iMsvSession;
 364.945 -	TMsvSelectionOrdering iOrdering;
 364.946 -	const TMsvEntry* iEntryPtr;
 364.947 -	CArrayPtrFlat<MMsvEntryObserver>* iObservers;
 364.948 -	CArrayPtrFlat<CMsvClientEntry>* iEntries;
 364.949 -	CMsvEntryArray* iSortedChildren;
 364.950 -	CMsvStore* iStore;
 364.951 -	CArrayFixFlat<TUid>* iMtmList;
 364.952 -	TMsvId iOwningService;
 364.953 -	TUint32 iNotifySequence;
 364.954 -	};
 364.955 -
 364.956 -//**********************************
 364.957 -// MessageServer
 364.958 -//**********************************
 364.959 -//
 364.960 -// 
 364.961 -//
 364.962 -
 364.963 -class MessageServer
 364.964 -/** Provides various static information functions relating to the Message Server.
 364.965 -
 364.966 -@see TDriveNumber 
 364.967 -@publishedAll
 364.968 -@released
 364.969 -*/
 364.970 -	{
 364.971 -public:
 364.972 -	IMPORT_C static TVersion Version();
 364.973 -	IMPORT_C static TMsvId NullUidValue();
 364.974 -	//
 364.975 -	IMPORT_C static TBool DriveContainsStore(RFs& aFs, TInt aDrive);
 364.976 -	IMPORT_C static TInt CurrentDriveL(RFs& aFs);
 364.977 -	IMPORT_C static TBool IsMessageStoreDrivePresentL(RFs& aFs);
 364.978 -	};
 364.979 -
 364.980 -//**********************************
 364.981 -// MtmClientUtils
 364.982 -//**********************************
 364.983 -//
 364.984 -// 
 364.985 -//
 364.986 -
 364.987 -class McliUtils
 364.988 -/** Utility class to simplify getting progress information from a messaging operation object.
 364.989 -
 364.990 -The functions get and unpack the progress information buffers from an operation object.
 364.991 -
 364.992 -@publishedAll
 364.993 -@released
 364.994 -*/
 364.995 -    {
 364.996 -public:
 364.997 -    IMPORT_C static TMsvLocalOperationProgress GetLocalProgressL(CMsvOperation& aOperation);
 364.998 -    IMPORT_C static TMsvLocalOperationProgress GetFinalLocalProgress(CMsvOperation& aOperation);
 364.999 -    IMPORT_C static TInt GetProgressErrorL(CMsvOperation& aOperation);
364.1000 -    IMPORT_C static TMsvId GetProgressIdL(CMsvOperation& aOperation);
364.1001 -	};
364.1002 -
364.1003 -#include <msvapi.inl>
364.1004 -
364.1005 -#endif // __MSVAPI_H__
   365.1 --- a/epoc32/include/msventry.h	Tue Mar 16 16:12:26 2010 +0000
   365.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   365.3 @@ -1,182 +0,0 @@
   365.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   365.5 -// All rights reserved.
   365.6 -// This component and the accompanying materials are made available
   365.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   365.8 -// which accompanies this distribution, and is available
   365.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  365.10 -//
  365.11 -// Initial Contributors:
  365.12 -// Nokia Corporation - initial contribution.
  365.13 -//
  365.14 -// Contributors:
  365.15 -//
  365.16 -// Description:
  365.17 -//
  365.18 -
  365.19 -#ifndef __MSVENTRY_H__
  365.20 -#define __MSVENTRY_H__
  365.21 -
  365.22 -
  365.23 -
  365.24 -#if !defined(__E32BASE_H__)
  365.25 -#include <e32base.h>
  365.26 -#endif
  365.27 -
  365.28 -#if !defined(__MSVSTORE_H__)
  365.29 -#include <msvstore.h>
  365.30 -#endif
  365.31 -
  365.32 -//////////////////////////////////////
  365.33 -// Forward declarations
  365.34 -class CMsvStore;
  365.35 -class CMsvCopyMoveEntriesBase;
  365.36 -class CMsvServer;
  365.37 -
  365.38 -//**********************************
  365.39 -// CMsvServerEntry
  365.40 -//**********************************
  365.41 -//
  365.42 -//
  365.43 -//
  365.44 -
  365.45 -class CMsvServerEntry : public CActive, public MMsvStoreObserver
  365.46 -/** Accesses and acts upon a particular Message Server entry. 
  365.47 -
  365.48 -It provides similar 
  365.49 -functionality to that which CMsvEntry gives to client-side programs. The current 
  365.50 -entry that a CMsvServerEntry object relates is similarly referred to as its 
  365.51 -context. 
  365.52 -
  365.53 -A difference to note is that CMsvEntry functions, when used on a remote context, 
  365.54 -can result in requests to Server-side MTMs to change data on a remote server, 
  365.55 -as well as the local Message Server index. Naturally, as CMsvServerEntry is 
  365.56 -designed to be used by Server-side MTMs themselves, its comparable functions 
  365.57 -only alter the Message Server index.
  365.58 -
  365.59 -A CBaseServerMTM-derived object gets an initial CMsvServerEntry on construction. 
  365.60 -It can get further CMsvServerEntry objects by calling NewEntryL(). The context 
  365.61 -can be changed by SetEntry().
  365.62 -
  365.63 -The context is locked, preventing it being accessed by other MTMs. The lock 
  365.64 -is released when the object is deleted, or the context changes.
  365.65 -
  365.66 -As with CMsvEntry, CBaseServerMTM functions can be divided into two broad 
  365.67 -groups. The first provides means to access the various types of storage associated 
  365.68 -with an entry. The second provides a means to discover and access other entries 
  365.69 -that the entry owns (its children).  
  365.70 -@publishedAll
  365.71 -@released
  365.72 -*/
  365.73 -	{
  365.74 -public:
  365.75 -	IMPORT_C static CMsvServerEntry* NewL(CMsvServer& aServer, TMsvId aId);
  365.76 -	~CMsvServerEntry();
  365.77 -	//
  365.78 -	// Set and get the current context
  365.79 -	IMPORT_C TInt SetEntry(TMsvId aId);
  365.80 -	inline const TMsvEntry& Entry() const;
  365.81 -	IMPORT_C TMsvId OwningService() const;
  365.82 -	//
  365.83 -	// current entry only functions
  365.84 -	IMPORT_C TInt ChangeEntry(const TMsvEntry& aEntry, TSecureId aOwnerId);
  365.85 -	IMPORT_C TInt ChangeEntry(const TMsvEntry& aEntry);
  365.86 -	
  365.87 -
  365.88 -	//
  365.89 -	// child entry only functions
  365.90 -	IMPORT_C TInt CreateEntry(TMsvEntry& aEntry);
  365.91 -	IMPORT_C TInt CreateEntry(TMsvEntry& aEntry, TSecureId aOwnerId);
  365.92 -	IMPORT_C TInt CreateEntry(TMsvEntry& aEntry, TSecureId aOwnerId, TBool aBulk);
  365.93 -	IMPORT_C TInt DeleteEntry(TMsvId aId);
  365.94 -	IMPORT_C TInt DeleteEntries(CMsvEntrySelection& aSelection);
  365.95 -	IMPORT_C TInt MoveEntryWithinService(TMsvId aId, TMsvId aDestination);
  365.96 -	IMPORT_C TInt MoveEntriesWithinService(CMsvEntrySelection& aSelection, TMsvId aDestination);
  365.97 -	IMPORT_C TInt ChangeAttributes(const CMsvEntrySelection& aSelection, TUint aSetAttributes, TUint aClearAttributes);
  365.98 -	IMPORT_C void MoveEntryL(TMsvId aId, TMsvId aDestination, TRequestStatus& aObserverStatus);
  365.99 -	IMPORT_C void MoveEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aObserverStatus);
 365.100 -	IMPORT_C void CopyEntryL(TMsvId aId, TMsvId aDestination, TRequestStatus& aObserverStatus);
 365.101 -	IMPORT_C void CopyEntryL(TMsvId aId, TMsvId aDestination, TMsvId& aCompletedEntry, TRequestStatus& aObserverStatus);
 365.102 -	IMPORT_C void CopyEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aObserverStatus);
 365.103 -	IMPORT_C void CopyEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, CMsvEntrySelection& aCompletedSelection, TRequestStatus& aObserverStatus);
 365.104 -	IMPORT_C TInt GetEntryFromId(TMsvId aId,TMsvEntry*& aEntry);
 365.105 -	//
 365.106 -	// read and write the store associated with the context
 365.107 -	IMPORT_C CMsvStore* ReadStoreL();
 365.108 -	IMPORT_C CMsvStore* EditStoreL();
 365.109 -	//
 365.110 -	// List the children of the context 
 365.111 -	inline const TMsvSelectionOrdering& Sort();
 365.112 -	inline void SetSort(TMsvSelectionOrdering& aOrdering);
 365.113 -	inline void SetMtm(TUid aMtm);
 365.114 -	IMPORT_C TInt GetChildren(CMsvEntrySelection& aSelection);
 365.115 -	//
 365.116 -	IMPORT_C TInt GetChildrenWithService(TMsvId aServiceId, CMsvEntrySelection& aSelection);
 365.117 -	IMPORT_C TInt GetChildrenWithMtm(TUid aMtm, CMsvEntrySelection& aSelection);
 365.118 -	IMPORT_C TInt GetChildrenWithType(TUid aType, CMsvEntrySelection& aSelection);
 365.119 -	//
 365.120 -	// Spawns a new CMsvServerEntry object
 365.121 -	IMPORT_C CMsvServerEntry* NewEntryL(TMsvId aId);
 365.122 -	// 
 365.123 -	// from MMsvStoreObserver
 365.124 -	void HandleStoreEvent(MMsvStoreObserver::TMsvStoreEvent aEvent, TMsvId aId);
 365.125 -	//
 365.126 -	//
 365.127 -
 365.128 -	IMPORT_C TBool HasStoreL() const;
 365.129 -	//
 365.130 -	IMPORT_C RFs& FileSession();
 365.131 -	//
 365.132 -	// Methods for creating and changing entries in bulk
 365.133 -	// (e.g. during email header downloading)
 365.134 -	IMPORT_C TInt CreateEntryBulk(TMsvEntry& aEntry, TSecureId aOwnerId);
 365.135 -
 365.136 -	IMPORT_C TInt CreateEntryBulk(TMsvEntry& aEntry);
 365.137 -
 365.138 -	IMPORT_C TInt ChangeEntryBulk(const TMsvEntry& aEntry, TSecureId aOwnerId);
 365.139 -	IMPORT_C TInt ChangeEntryBulk(const TMsvEntry& aEntry);
 365.140 -	
 365.141 -	IMPORT_C void CompleteBulk();
 365.142 -
 365.143 -protected:
 365.144 -	CMsvServerEntry(CMsvServer& aIndex);
 365.145 -	void ConstructL(TMsvId aId);
 365.146 -	//
 365.147 -	void RunL();
 365.148 -	void DoCancel();
 365.149 -	//
 365.150 -private:
 365.151 -	TInt IncreaseBufferSizes(TInt aNewDescriptionSize, TInt aNewDetailsSize);
 365.152 -	TBool AreChildren(const CMsvEntrySelection& aSelection) const;
 365.153 -	TBool IsAChild(TMsvId aId) const;
 365.154 -	void DoMoveEntryL(TMsvId aId, TMsvId aDestination);
 365.155 -	void DoDeleteEntryL(TMsvId aId, CMsvEntrySelection*& aDeleted, CMsvEntrySelection*& aMoved);
 365.156 -	void DoDeleteEntriesL(CMsvEntrySelection& aSelection, CMsvEntrySelection*& aDeleted, CMsvEntrySelection*& aMoved);
 365.157 -	void DoMoveEntriesL(CMsvEntrySelection& aSelection, TMsvId aDestination, CMsvEntrySelection*& aMoved);
 365.158 -	TInt DoGetChildren(TMsvId aServiceId, TUid aMtm, TUid aType, CMsvEntrySelection& aSelection);
 365.159 -	void DoGetChildrenL(TMsvId aServiceId, TUid aMtm, TUid aType, CMsvEntrySelection& aSelection);
 365.160 -	void DoCopyEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aObserverStatus);
 365.161 -	TInt DoChangeEntry(const TMsvEntry& aEntry, TSecureId aOwnerId, TBool aForcedUpdate, TBool aBulk);
 365.162 -
 365.163 -	//
 365.164 -private:
 365.165 -	TBool iLockedStore;
 365.166 -	TMsvSelectionOrdering iOrdering;
 365.167 -	TMsvEntry iEntry;
 365.168 -	HBufC* iDescription;
 365.169 -	HBufC* iDetails;
 365.170 -	CMsvServer& iServer;
 365.171 -	CMsvStore* iStore;
 365.172 -	TUid iMtm;
 365.173 -	CMsvCopyMoveEntriesBase* iCopyMove;
 365.174 -	TMsvId iSource;
 365.175 -	enum { EMsvIdle, EMsvMoving, EMsvCopying } iEntryState;
 365.176 -	TRequestStatus* iObserverStatus;
 365.177 -	CMsvEntrySelection* iCompletedSelection;
 365.178 -	TMsvId* iCompletedEntryId;
 365.179 -	TSecureId	iContextOwnerId;
 365.180 -	};
 365.181 -
 365.182 -
 365.183 -#include <msventry.inl>
 365.184 -
 365.185 -#endif // __MSVENTRY_H__
   366.1 --- a/epoc32/include/msventryscheduledata.h	Tue Mar 16 16:12:26 2010 +0000
   366.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   366.3 @@ -1,101 +0,0 @@
   366.4 -/// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   366.5 -/// All rights reserved.
   366.6 -/// This component and the accompanying materials are made available
   366.7 -/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   366.8 -/// which accompanies this distribution, and is available
   366.9 -/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  366.10 -///
  366.11 -/// Initial Contributors:
  366.12 -/// Nokia Corporation - initial contribution.
  366.13 -///
  366.14 -/// Contributors:
  366.15 -///
  366.16 -/// Description:
  366.17 -/// All rights reserved.
  366.18 -/// This component and the accompanying materials are made available
  366.19 -/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  366.20 -/// which accompanies this distribution, and is available
  366.21 -/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  366.22 -/// Initial Contributors:
  366.23 -/// Nokia Corporation - initial contribution.
  366.24 -/// Contributors:
  366.25 -///
  366.26 -
  366.27 -#ifndef MSV_ENTRY_SCHEDULE_DATA_H_
  366.28 -#define MSV_ENTRY_SCHEDULE_DATA_H_
  366.29 -
  366.30 -/////////////////////////////////////////////////////////////////////////////
  366.31 -//
  366.32 -//	Includes
  366.33 -//
  366.34 -/////////////////////////////////////////////////////////////////////////////
  366.35 -
  366.36 -#include <msvstore.h>
  366.37 -#include <schinfo.h>
  366.38 -#include <csch_cli.h>
  366.39 -#include <schtask.h>
  366.40 -
  366.41 -/////////////////////////////////////////////////////////////////////////////
  366.42 -//
  366.43 -//	Constants
  366.44 -//
  366.45 -/////////////////////////////////////////////////////////////////////////////
  366.46 -
  366.47 -const TUid KUidMsvFileScheduleData			= {0x100056A2};	//Used by TMsvEntryScheduleData
  366.48 -const TInt16 KMsvEntryScheduleDataVersion	= 1;
  366.49 -
  366.50 -/////////////////////////////////////////////////////////////////////////////
  366.51 -//
  366.52 -//	TMsvEntryScheduleData Declaration
  366.53 -//
  366.54 -/////////////////////////////////////////////////////////////////////////////
  366.55 -
  366.56 -/**
  366.57 -Stores message-specific data related to scheduling.
  366.58 -
  366.59 -The data is not required by the Client/UI side. This data is stored in a 
  366.60 -stream associated with the TMsvEntry. 
  366.61 -
  366.62 -@publishedAll
  366.63 -@released
  366.64 -*/
  366.65 -
  366.66 -class TMsvEntryScheduleData
  366.67 -	{
  366.68 -public:
  366.69 -	IMPORT_C TMsvEntryScheduleData();
  366.70 -
  366.71 -	IMPORT_C void RestoreL(CMsvStore& aStore);
  366.72 -	IMPORT_C void StoreL(CMsvStore& aStore) const;
  366.73 -	IMPORT_C void RemoveL(CMsvStore& aStore) const;
  366.74 -
  366.75 -	IMPORT_C void Reset();
  366.76 -	IMPORT_C TBool IsReset() const;
  366.77 -
  366.78 -	IMPORT_C TInt Retries() const;
  366.79 -	IMPORT_C void IncreaseRetries();
  366.80 -	IMPORT_C void ResetRetries();
  366.81 -
  366.82 -	/**
  366.83 -	The Task ID returned by the Task Scheduler when the message is 
  366.84 -	scheduled.
  366.85 -	*/
  366.86 -	TInt				iTaskId;
  366.87 -	
  366.88 -	/**
  366.89 -	The TSchedulerItemRef returned by the Task Scheduler when the schedule 
  366.90 -	on which the message is scheduled is created.
  366.91 -	*/
  366.92 -	TSchedulerItemRef	iRef;
  366.93 -
  366.94 -protected:
  366.95 -	/** The number of retries that have been made to send this message. */
  366.96 -	TInt				iRetryCount;
  366.97 -	/** Structure version. */
  366.98 -	TInt16				iVersion;
  366.99 -
 366.100 -	void ExternalizeL(RWriteStream& aWriteStream) const;
 366.101 -	void InternalizeL(RReadStream& aReadStream);
 366.102 -	};
 366.103 -
 366.104 -#endif
   367.1 --- a/epoc32/include/msvfind.h	Tue Mar 16 16:12:26 2010 +0000
   367.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   367.3 @@ -1,192 +0,0 @@
   367.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   367.5 -// All rights reserved.
   367.6 -// This component and the accompanying materials are made available
   367.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   367.8 -// which accompanies this distribution, and is available
   367.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  367.10 -//
  367.11 -// Initial Contributors:
  367.12 -// Nokia Corporation - initial contribution.
  367.13 -//
  367.14 -// Contributors:
  367.15 -//
  367.16 -// Description:
  367.17 -//
  367.18 -
  367.19 -#if !defined(__MSVFIND_H__)
  367.20 -#define __MSVFIND_H__
  367.21 -
  367.22 -#if !defined(__MSVAPI_H__)
  367.23 -#include <msvapi.h>
  367.24 -#endif
  367.25 -
  367.26 -#if !defined __MTCLBASE_H__
  367.27 -#include <mtclbase.h>
  367.28 -#endif
  367.29 -
  367.30 -#if !defined(__MTMDEF_H__)
  367.31 -#include <mtmdef.h>
  367.32 -#endif
  367.33 -
  367.34 -//**********************************
  367.35 -// TMsvFindResult
  367.36 -//**********************************
  367.37 -//
  367.38 -// Contains the result of a find operation for a particular entry
  367.39 -//
  367.40 -
  367.41 -class TMsvFindResult
  367.42 -/** A single result from a text search operation. The class encapsulates information 
  367.43 -which:
  367.44 -
  367.45 -1. identifies the message in which the search text is found
  367.46 -
  367.47 -2. identifies the parts of the message that contain the search text. 
  367.48 -@publishedAll
  367.49 -@released
  367.50 -*/
  367.51 -	{
  367.52 -public:
  367.53 -	IMPORT_C TMsvFindResult();
  367.54 -	IMPORT_C TMsvFindResult(TMsvPartList aPartList, TMsvId aId);
  367.55 -	//
  367.56 -public:
  367.57 -	/** The parts of the message that contain the search text. */
  367.58 -	TMsvPartList iPartList;
  367.59 -	/** The entry Id of the message that contains the search text. */
  367.60 -	TMsvId iId;
  367.61 -	};
  367.62 -
  367.63 -//**********************************
  367.64 -// CMsvFindResultSelection
  367.65 -//**********************************
  367.66 -//
  367.67 -// A list of find operation results with an accessor to find  
  367.68 -// the position for a particular entry
  367.69 -//
  367.70 -
  367.71 -class CMsvFindResultSelection : public CArrayFixFlat<TMsvFindResult>
  367.72 -/** Collection of results from a text search operation. The collection is organized 
  367.73 -as an array. 
  367.74 -@publishedAll
  367.75 -@released
  367.76 -*/
  367.77 -	{
  367.78 -public:
  367.79 -	IMPORT_C CMsvFindResultSelection();
  367.80 -	//
  367.81 -public:
  367.82 -	IMPORT_C CMsvFindResultSelection* CopyL()  const;
  367.83 -	IMPORT_C CMsvFindResultSelection* CopyLC() const;
  367.84 -	IMPORT_C TInt Find(TMsvId aId) const;
  367.85 -	};
  367.86 -
  367.87 -//**********************************
  367.88 -// TMsvFindOperationProgress
  367.89 -//**********************************
  367.90 -//
  367.91 -// Find operation progress
  367.92 -//
  367.93 -
  367.94 -class TMsvFindOperationProgress
  367.95 -/** Encapsulates progress information for a text search operation. The class has 
  367.96 -public data members. 
  367.97 -@publishedAll
  367.98 -@released
  367.99 -*/
 367.100 -	{
 367.101 -public:
 367.102 -	IMPORT_C TMsvFindOperationProgress();
 367.103 -	//
 367.104 -public:
 367.105 -	/** KErrNone if the search operation completed successfully otherwise one of the 
 367.106 -	system-wide error codes.
 367.107 -	
 367.108 -	This has no meaning while the search operation is in progress. */
 367.109 -	TInt iError;
 367.110 -	/** The number of messages already searched. */
 367.111 -	TInt iCompleted;
 367.112 -	/** The number of messages remaining to be searched.
 367.113 -	
 367.114 -	If the search operation is for text within a specified root, folder or service, 
 367.115 -	then this value is zero until the total number of messages has been determined. */
 367.116 -	TInt iRemaining;
 367.117 -	/** The entry Id identifying the message currently being searched */
 367.118 -	TMsvId iCurrentId;
 367.119 -	};
 367.120 -
 367.121 -class CClientMtmRegistry;
 367.122 -class CMsvChildMessages;
 367.123 -
 367.124 -//**********************************
 367.125 -// CMsvFindOperation
 367.126 -//**********************************
 367.127 -//
 367.128 -// The find operation. Created by calling the relevant static function
 367.129 -// The results for all of these are added to the CMsvFindResultSelection which
 367.130 -// can be accessed via the accessor function GetFindResult
 367.131 -//
 367.132 -
 367.133 -class CMsvFindOperation : public CMsvOperation
 367.134 -/** Encapsulates a text search operation.
 367.135 -
 367.136 -The class offers an interface for locating messages which contain specified 
 367.137 -text. Messages may contain data created for, or received from, any of the 
 367.138 -transport protocols that are supported by the Messaging Architecture (e.g. 
 367.139 -Email, FAX and SMS).
 367.140 -
 367.141 -Clients create a new instance for each search operation to be performed. They 
 367.142 -are also responsible for destroying the instance once a search operation is 
 367.143 -complete.
 367.144 -
 367.145 -Clients can derive from this class, typically to implement their own version 
 367.146 -of the function IsValid(). 
 367.147 -@publishedAll
 367.148 -@released
 367.149 -*/
 367.150 -	{
 367.151 -public:
 367.152 -	IMPORT_C static CMsvFindOperation* FindInChildrenL(CMsvSession& aSession, const TDesC& aTextToFind, TMsvId aParentId, TMsvPartList aPartList, TRequestStatus& aObserverRequestStatus);
 367.153 -	IMPORT_C static CMsvFindOperation* FindInSelectionL(CMsvSession& aSession, const TDesC& aTextToFind, const CMsvEntrySelection& aSelection, TMsvPartList aPartList, TRequestStatus& aObserverRequestStatus);
 367.154 -	IMPORT_C ~CMsvFindOperation();
 367.155 -	//
 367.156 -	IMPORT_C const TDesC8& ProgressL();
 367.157 -	IMPORT_C const TDesC8& FinalProgress();
 367.158 -	//
 367.159 -	inline const CMsvFindResultSelection& GetFindResult() const;
 367.160 -	//
 367.161 -protected:
 367.162 -	IMPORT_C CMsvFindOperation(CMsvSession& aSession, const TDesC& aTextToFind, TMsvPartList aPartList, TRequestStatus& aObserverRequestStatus);
 367.163 -	IMPORT_C void ConstructFindInChildrenL(TMsvId aId);
 367.164 -	IMPORT_C void ConstructFindInSelectionL(const CMsvEntrySelection& aSelection);
 367.165 -	//
 367.166 -private:
 367.167 -	void ConstructL();
 367.168 -	//
 367.169 -	IMPORT_C void DoCancel();
 367.170 -	IMPORT_C void RunL();
 367.171 -	//
 367.172 -	void DoRunL();
 367.173 -	void FindL();
 367.174 -	void Complete(TInt aStatus);
 367.175 -	void StartL();
 367.176 -	//
 367.177 -	virtual TBool IsValid(const TMsvEntry& aEntry) const;
 367.178 -	//
 367.179 -private:
 367.180 -	enum { EMsvFindingText, EMsvExpandingFolders } iState;
 367.181 -	TBuf<KMsvMaxFindTextLength> iTextToFind;
 367.182 -	TMsvPartList iPartList;
 367.183 -	CMsvFindResultSelection* iFindResultSel;
 367.184 -	TPckgBuf<TMsvFindOperationProgress> iProgress;
 367.185 -	CMsvEntrySelection* iSelection;
 367.186 -	CClientMtmRegistry* iClientRegistry;
 367.187 -	CArrayPtrFlat<CBaseMtm>* iMtmArray;
 367.188 -	CMsvChildMessages* iChildMessages;
 367.189 -	TMsvId iCurrentId;
 367.190 -	TMsvEntry iEntry;
 367.191 -	};
 367.192 -
 367.193 -#include <msvfind.inl>
 367.194 -
 367.195 -#endif
   368.1 --- a/epoc32/include/msvftext.h	Tue Mar 16 16:12:26 2010 +0000
   368.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   368.3 @@ -1,79 +0,0 @@
   368.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   368.5 -// All rights reserved.
   368.6 -// This component and the accompanying materials are made available
   368.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   368.8 -// which accompanies this distribution, and is available
   368.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  368.10 -//
  368.11 -// Initial Contributors:
  368.12 -// Nokia Corporation - initial contribution.
  368.13 -//
  368.14 -// Contributors:
  368.15 -//
  368.16 -// Description:
  368.17 -//
  368.18 -
  368.19 -#ifndef __MSVFTEXT_H__
  368.20 -#define __MSVFTEXT_H__
  368.21 -
  368.22 -#include <e32base.h>
  368.23 -
  368.24 -#include <mentact.h>
  368.25 -#include <mtclbase.h>
  368.26 -#include <mtmdef.h>
  368.27 -
  368.28 -class CRichText;
  368.29 -
  368.30 -class CMsvFindText : public CMsgActive
  368.31 -/** A utility class which searches through given plain text or rich text for a 
  368.32 -specified text string.
  368.33 -
  368.34 -The class is an active object and searching can be done synchronously or asynchronously. 
  368.35 -An instance of this class can be re-used to perform multiple searches for 
  368.36 -text. 
  368.37 -@publishedAll
  368.38 -@released
  368.39 -*/
  368.40 -	{
  368.41 -public:
  368.42 -	IMPORT_C static CMsvFindText* NewLC(TInt aPriority = EPriorityStandard);
  368.43 -	IMPORT_C static CMsvFindText* NewL(TInt aPriority = EPriorityStandard);
  368.44 -	IMPORT_C ~CMsvFindText();
  368.45 -	//
  368.46 -	IMPORT_C void FindTextL(const TDesC& aFind, const TDesC& aSource, TMsvPartList aFlags, TRequestStatus& aStatus);
  368.47 -	IMPORT_C void FindRichTextL(const TDesC& aFind, const CRichText& aSource, TMsvPartList aFlags, TRequestStatus& aStatus);
  368.48 -	//
  368.49 -	IMPORT_C TBool FindTextL(const TDesC& aFind, const TDesC& aSource, TMsvPartList aFlags);
  368.50 -	IMPORT_C TBool FindRichTextL(const TDesC& aFind, const CRichText& aSource, TMsvPartList aFlags);
  368.51 -	//
  368.52 -	inline TBool FoundText() const;
  368.53 -	//
  368.54 -private:
  368.55 -	CMsvFindText(TInt aPriority);
  368.56 -	//
  368.57 -	void InitialiseL(const TDesC& aFind, const TDesC* aPlainSource, const CRichText* aRichSource, TMsvPartList aFlags);
  368.58 -	void DoFindAsyncL(TRequestStatus& aStatus);
  368.59 -	void DoComplete(TInt&);
  368.60 -	TBool DoFindSyncL();
  368.61 -	TBool DoFindStepL();
  368.62 -	TBool DoFindTextL();
  368.63 -	void DoRunL();
  368.64 -	void Check();
  368.65 -	//
  368.66 -private:
  368.67 -	HBufC* iBuf;
  368.68 -	HBufC* iFind;
  368.69 -	TInt iSourcePos;
  368.70 -	TInt iMaxRead;
  368.71 -	TInt iSourceLen;
  368.72 -	const CRichText* iRichText;
  368.73 -	const TDesC* iPlainText;
  368.74 -	TMsvPartList iFlags;
  368.75 -	TChar iPreChar;
  368.76 -	TChar iPostChar;
  368.77 -	TBool iFoundText;
  368.78 -	};
  368.79 -
  368.80 -#include <msvftext.inl>
  368.81 -
  368.82 -#endif
   369.1 --- a/epoc32/include/msvids.h	Tue Mar 16 16:12:26 2010 +0000
   369.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   369.3 @@ -1,170 +0,0 @@
   369.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   369.5 -// All rights reserved.
   369.6 -// This component and the accompanying materials are made available
   369.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   369.8 -// which accompanies this distribution, and is available
   369.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  369.10 -//
  369.11 -// Initial Contributors:
  369.12 -// Nokia Corporation - initial contribution.
  369.13 -//
  369.14 -// Contributors:
  369.15 -//
  369.16 -// Description:
  369.17 -//
  369.18 -
  369.19 -
  369.20 -
  369.21 -/**
  369.22 - @file
  369.23 - @publishedAll
  369.24 - @released
  369.25 -*/
  369.26 -
  369.27 -#if !defined(__MSVIDS_H__)
  369.28 -#define __MSVIDS_H__
  369.29 -#if !defined(__MSVSTD_HRH__)
  369.30 -#include <msvstd.hrh>
  369.31 -#endif
  369.32 -#if !defined(__MSVSTD_H__)
  369.33 -#include <msvstd.h>
  369.34 -#endif
  369.35 -
  369.36 -// Predefined entry ids - values #defined in MSVSTD.HRH
  369.37 -
  369.38 -/**
  369.39 -A NULL ID. 
  369.40 -This is typically used to indicate that the ID has not yet been set. It can 
  369.41 -also be used to "park" a CMsvServerEntry so that it doesn't lock an index 
  369.42 -entry.
  369.43 -@publishedAll
  369.44 -@released
  369.45 -@see TMsvId
  369.46 -@see KMsvNullIndexEntryIdValue
  369.47 -*/
  369.48 -const TMsvId KMsvNullIndexEntryId=KMsvNullIndexEntryIdValue;//0
  369.49 -
  369.50 -/**
  369.51 -Temporary ID used for testing purpose
  369.52 -@internalAll
  369.53 -@released
  369.54 -@see TMsvId
  369.55 -@see KMsvTempIndexEntryIdValue
  369.56 -*/
  369.57 -const TMsvId KMsvTempIndexEntryId=KMsvTempIndexEntryIdValue;//1
  369.58 -
  369.59 -/**
  369.60 -ID of root entry of entire index
  369.61 -@publishedAll
  369.62 -@released
  369.63 -@see TMsvId
  369.64 -@see KMsvRootIndexEntryIdValue
  369.65 -*/
  369.66 -const TMsvId KMsvRootIndexEntryId=KMsvRootIndexEntryIdValue;//0x1000
  369.67 -
  369.68 -/**
  369.69 -ID of local service (containing the standard folders)
  369.70 -@publishedAll
  369.71 -@released
  369.72 -@see TMsvId
  369.73 -@see KMsvLocalServiceIndexEntryIdValue
  369.74 -*/
  369.75 -const TMsvId KMsvLocalServiceIndexEntryId=KMsvLocalServiceIndexEntryIdValue;//0x1001
  369.76 -
  369.77 -/**
  369.78 -ID of Inbox folder 
  369.79 -@publishedAll
  369.80 -@released
  369.81 -@see TMsvId
  369.82 -@see KMsvGlobalInBoxIndexEntryIdValue
  369.83 -*/
  369.84 -const TMsvId KMsvGlobalInBoxIndexEntryId=KMsvGlobalInBoxIndexEntryIdValue;//0x1002
  369.85 -
  369.86 -/**
  369.87 -ID of Outbox folder
  369.88 -@publishedAll
  369.89 -@released
  369.90 -@see TMsvId
  369.91 -@see KMsvGlobalOutBoxIndexEntryIdValue
  369.92 -*/
  369.93 -const TMsvId KMsvGlobalOutBoxIndexEntryId=KMsvGlobalOutBoxIndexEntryIdValue;//0x1003
  369.94 -
  369.95 -/**
  369.96 -ID of Draft folder
  369.97 -@publishedAll
  369.98 -@released
  369.99 -@see TMsvId
 369.100 -@see KMsvDraftEntryIdValue
 369.101 -*/
 369.102 -const TMsvId KMsvDraftEntryId=KMsvDraftEntryIdValue; //0x1004
 369.103 -
 369.104 -/**
 369.105 -ID of Sent folder
 369.106 -@publishedAll
 369.107 -@released
 369.108 -@see TMsvId
 369.109 -@see KMsvSentEntryIdValue
 369.110 -*/
 369.111 -const TMsvId KMsvSentEntryId=KMsvSentEntryIdValue; //0x1005
 369.112 -
 369.113 -/**
 369.114 -ID of Deleted folder - Invisible folder
 369.115 -@publishedAll
 369.116 -@released
 369.117 -@see TMsvId
 369.118 -@see KMsvDeletedEntryFolderEntryIdValue
 369.119 -*/
 369.120 -const TMsvId KMsvDeletedEntryFolderEntryId=KMsvDeletedEntryFolderEntryIdValue;//0x1006
 369.121 -
 369.122 -/**
 369.123 -ID used to indicate Unknown/Invalid Service entry folder
 369.124 -@publishedAll
 369.125 -@released
 369.126 -@see TMsvId
 369.127 -@see KMsvUnkownServiceIndexEntryIdValue
 369.128 -*/
 369.129 -const TMsvId KMsvUnknownServiceIndexEntryId=KMsvUnkownServiceIndexEntryIdValue; //0x1007
 369.130 -
 369.131 -/**
 369.132 -@internalAll
 369.133 -@released
 369.134 -@see TMsvId
 369.135 -*/
 369.136 -const TMsvId KFirstFreeEntryId=0x100000;
 369.137 -
 369.138 -/**
 369.139 -Uid for POPService
 369.140 -@publishedAll
 369.141 -@released
 369.142 -*/
 369.143 -const TUid KUidPOPService = {0x2000BB68};
 369.144 -
 369.145 -/**
 369.146 -Uid for IMAPService
 369.147 -@publishedAll
 369.148 -@released
 369.149 -*/
 369.150 -const TUid KUidIMAPService = {0x2000BB69};
 369.151 -
 369.152 -/**
 369.153 -Uid for SMTPService
 369.154 -@publishedAll
 369.155 -@released
 369.156 -*/
 369.157 -const TUid KUidSMTPService = {0x2000BB6A};
 369.158 -
 369.159 -/**
 369.160 -Uid for SendAs2Service
 369.161 -@publishedAll
 369.162 -@released
 369.163 -*/
 369.164 -const TUid KUidSendAs2Service = {0x2000BB6B};
 369.165 -
 369.166 -/**
 369.167 -Uid for SMSService
 369.168 -@publishedAll
 369.169 -@released
 369.170 -*/
 369.171 -const TUid KUidSMSService = {0x2000BB6C};
 369.172 -
 369.173 -#endif
   370.1 --- a/epoc32/include/msvoffpeaktime.h	Tue Mar 16 16:12:26 2010 +0000
   370.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   370.3 @@ -1,103 +0,0 @@
   370.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   370.5 -// All rights reserved.
   370.6 -// This component and the accompanying materials are made available
   370.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   370.8 -// which accompanies this distribution, and is available
   370.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  370.10 -//
  370.11 -// Initial Contributors:
  370.12 -// Nokia Corporation - initial contribution.
  370.13 -//
  370.14 -// Contributors:
  370.15 -//
  370.16 -// Description:
  370.17 -//
  370.18 -
  370.19 -#ifndef __MSVOFFPEAKTIME_H__
  370.20 -#define __MSVOFFPEAKTIME_H__
  370.21 -
  370.22 - 
  370.23 -
  370.24 -
  370.25 -/////////////////////////////////////////////////////////////////////////////
  370.26 -//
  370.27 -//	Constants
  370.28 -//
  370.29 -/////////////////////////////////////////////////////////////////////////////
  370.30 -
  370.31 -
  370.32 -/////////////////////////////////////////////////////////////////////////////
  370.33 -//
  370.34 -//	TMsvOffPeakTime Declaration
  370.35 -//
  370.36 -/////////////////////////////////////////////////////////////////////////////
  370.37 -
  370.38 -/**
  370.39 -Defines an off-peak period for message sending.
  370.40 -
  370.41 -An off-peak period is specified as a start time and a duration. 
  370.42 -
  370.43 -@publishedAll
  370.44 -@released
  370.45 -*/
  370.46 -
  370.47 -class TMsvOffPeakTime
  370.48 -	{
  370.49 -public:
  370.50 -	IMPORT_C TMsvOffPeakTime();
  370.51 -	IMPORT_C TMsvOffPeakTime(const TDay aDay, const TInt aHour, const TInt aMinute, const TTimeIntervalMinutes aValidityPeriod);
  370.52 -
  370.53 -
  370.54 -	IMPORT_C void Reset();
  370.55 -
  370.56 -	IMPORT_C TDay Day() const;
  370.57 -	IMPORT_C void SetDay(const TDay aDay);
  370.58 -
  370.59 -	IMPORT_C TInt Hour() const;
  370.60 -	IMPORT_C void SetHour(const TInt aHour);
  370.61 -
  370.62 -	IMPORT_C TInt Minute() const;
  370.63 -	IMPORT_C void SetMinute(const TInt aMinute);
  370.64 -
  370.65 -	IMPORT_C const TTimeIntervalMinutes ValidityPeriod() const;
  370.66 -	IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes aValidityPeriod);
  370.67 -
  370.68 -	IMPORT_C const TTime NextTimeInclusive(const TTime& aFromTime) const;
  370.69 -
  370.70 -private:
  370.71 -	TDay iDay;
  370.72 -	TInt8 iHour;							//Start hour
  370.73 -	TInt8 iMinute;							//Start minute
  370.74 -	TTimeIntervalMinutes iValidityPeriod;	//Validity period. Must be less than 24 hours
  370.75 -	};
  370.76 -
  370.77 -/////////////////////////////////////////////////////////////////////////////
  370.78 -//
  370.79 -//	CMsvOffPeakTimes Declaration
  370.80 -//
  370.81 -/////////////////////////////////////////////////////////////////////////////
  370.82 -
  370.83 -/**
  370.84 -Array of off-peak time data.
  370.85 -
  370.86 -This represents all the off-peak time periods in each week. 
  370.87 -
  370.88 -@publishedAll
  370.89 -@released
  370.90 -*/
  370.91 -
  370.92 -class CMsvOffPeakTimes : public CArrayFixFlat<TMsvOffPeakTime>
  370.93 -	{
  370.94 -public:
  370.95 -	IMPORT_C CMsvOffPeakTimes();
  370.96 -
  370.97 -
  370.98 -	IMPORT_C TInt GetNextOffPeakTime(const TTime& aFromTime, TMsvOffPeakTime& aNext, TTime& aNextTime) const;
  370.99 -
 370.100 -protected:
 370.101 -
 370.102 -
 370.103 -private:
 370.104 -	};
 370.105 -
 370.106 -#endif	// __MSVOFFPEAKTIME_H__
   371.1 --- a/epoc32/include/msvrcpt.h	Tue Mar 16 16:12:26 2010 +0000
   371.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   371.3 @@ -1,69 +0,0 @@
   371.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   371.5 -// All rights reserved.
   371.6 -// This component and the accompanying materials are made available
   371.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   371.8 -// which accompanies this distribution, and is available
   371.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  371.10 -//
  371.11 -// Initial Contributors:
  371.12 -// Nokia Corporation - initial contribution.
  371.13 -//
  371.14 -// Contributors:
  371.15 -//
  371.16 -// Description:
  371.17 -//
  371.18 -
  371.19 -#if !defined(__MSVRCPT_H__)
  371.20 -#define __MSVRCPT_H__
  371.21 -
  371.22 -class RWriteStream;
  371.23 -
  371.24 -//**********************************
  371.25 -// CMsvRecipient
  371.26 -//**********************************
  371.27 -//
  371.28 -// Base class for  multiple recipients
  371.29 -//
  371.30 -
  371.31 -class CMsvRecipient : public CBase
  371.32 -/** Base class for information relating to a message recipient. 
  371.33 -@publishedAll
  371.34 -@released
  371.35 -*/
  371.36 -	{
  371.37 -public:
  371.38 -	/** Message sending status for a recipient. 
  371.39 -@publishedAll
  371.40 -@released
  371.41 -*/
  371.42 -	enum TRecipientStatus 
  371.43 -							{	
  371.44 -	/** Message is not sent. */
  371.45 -							ENotYetSent=0,
  371.46 -	/** Message has been sent. */
  371.47 -							ESentSuccessfully=1,
  371.48 -	/** Message sending failed. */
  371.49 -				 			EFailedToSend=2};
  371.50 -	IMPORT_C virtual void InternalizeL(RReadStream& aStream);
  371.51 -	IMPORT_C virtual void ExternalizeL(RWriteStream& aStream) const;
  371.52 -	inline TRecipientStatus Status() const;
  371.53 -	inline void SetStatus(TRecipientStatus aStatus);
  371.54 -	inline TInt Error() const;
  371.55 -	inline void SetError(TInt aError);
  371.56 -	inline const TTime& Time() const;
  371.57 -	inline TTime& Time();
  371.58 -	inline TInt Retries() const;
  371.59 -	inline void IncreaseRetries();
  371.60 -	inline void ResetRetries();
  371.61 -protected:
  371.62 -	IMPORT_C CMsvRecipient();
  371.63 -private:
  371.64 -	TRecipientStatus iStatus;
  371.65 -	TInt   iError;
  371.66 -	TInt   iRetries;
  371.67 -	TTime	 iTime;
  371.68 -	};
  371.69 -
  371.70 -#include <msvrcpt.inl>
  371.71 -
  371.72 -#endif
   372.1 --- a/epoc32/include/msvreg.h	Tue Mar 16 16:12:26 2010 +0000
   372.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   372.3 @@ -1,275 +0,0 @@
   372.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   372.5 -// All rights reserved.
   372.6 -// This component and the accompanying materials are made available
   372.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   372.8 -// which accompanies this distribution, and is available
   372.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  372.10 -//
  372.11 -// Initial Contributors:
  372.12 -// Nokia Corporation - initial contribution.
  372.13 -//
  372.14 -// Contributors:
  372.15 -//
  372.16 -// Description:
  372.17 -//
  372.18 -
  372.19 -#if !defined(__MSVREG_H__)
  372.20 -#define __MSVREG_H__
  372.21 -#if !defined(__E32BASE_H__)
  372.22 -#include <e32base.h>
  372.23 -#endif
  372.24 -#if !defined(__F32FILE_H__)
  372.25 -#include <f32file.h>
  372.26 -#endif
  372.27 -
  372.28 -
  372.29 -
  372.30 -/**
  372.31 -@internalComponent
  372.32 -@released
  372.33 -*/
  372.34 -enum TMtsrDllIndex    //  Used in CMtmGroupData
  372.35 -	{
  372.36 -	EMtsrServerComponentIndex,
  372.37 -	EMtsrClientComponentIndex,
  372.38 -	EMtsrUiComponentIndex,
  372.39 -	EMtsrUiDataComponentIndex
  372.40 -	};
  372.41 -
  372.42 -const TInt KHumanReadableNameLength=50;
  372.43 -typedef TBuf<KHumanReadableNameLength> THumanReadableName;   //  could be used client side
  372.44 -
  372.45 -#define KMsvDefaultTimeoutMicroSeconds32 30000000
  372.46 -
  372.47 -// forward declarations
  372.48 -class RWriteStream;
  372.49 -class RReadStream;
  372.50 -class RFs;
  372.51 -
  372.52 -
  372.53 -class CMtmDllInfo : public CBase
  372.54 -/** Encapsulates the registration data for a single concrete MTM component. 
  372.55 -
  372.56 -It is used in the creation of registration data for an MTM group. Typically, 
  372.57 -an application gathers a number of CMtmDllInfo objects into an CMtmDllInfoArray. 
  372.58 - 
  372.59 -@publishedAll
  372.60 -@released
  372.61 -*/
  372.62 -	{
  372.63 -public:
  372.64 -	IMPORT_C static CMtmDllInfo* NewL(const TDesC& aHumanReadableName,const TUidType& aUidType,const TDesC& aFilename,TInt aEntryPointOrdinalNumber,const TVersion aVersion);
  372.65 -	IMPORT_C static CMtmDllInfo* NewL(const CMtmDllInfo& aMtmDllInfo);
  372.66 -	IMPORT_C static CMtmDllInfo* NewL(RReadStream& aStream);
  372.67 -	IMPORT_C ~CMtmDllInfo();
  372.68 -	IMPORT_C void SetHumanReadableNameL(const TDesC& aHumanReadableName);
  372.69 -	inline TPtrC HumanReadableName() const;
  372.70 -	IMPORT_C void InternalizeL(RReadStream& aStream);
  372.71 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;  // not used but as it is exported it has been kept
  372.72 -	IMPORT_C TBool operator==(const CMtmDllInfo& aMtmDllInfo) const; 
  372.73 -	void SetMessagingCapability(TBool aCapability);
  372.74 -	void SetSendBodyCapability(TBool aCapability);
  372.75 -	void SetCapabilitiesAvailable(TBool aBool);
  372.76 -	IMPORT_C TBool MessagingCapability() const;
  372.77 -	IMPORT_C TBool SendBodyCapability() const;
  372.78 -	IMPORT_C TBool CapabilitiesAvailable() const;
  372.79 -	TPtrC FileName() const;
  372.80 -private:
  372.81 -	CMtmDllInfo();
  372.82 -	CMtmDllInfo(const TUidType& aUidType,TInt aEntryPointOrdinalNumber,const TVersion aVersion);
  372.83 -	CMtmDllInfo(const CMtmDllInfo& aMtmDllInfo);
  372.84 -	void ConstructL(const TDesC& aHumanReadableName, const TDesC& aFilename);
  372.85 -private:
  372.86 -	HBufC* iHumanReadableName;         //  Should be less than KHumanReadableNameLength
  372.87 -public:
  372.88 -	/** Group of UIDs for the MTM. See NewL() for details. */
  372.89 -	TUidType iUidType;                 //  Three uids
  372.90 -	/** Ordinal of factory function for the MTM component */
  372.91 -	TInt iEntryPointOrdinalNumber;
  372.92 -	/** Version information for the MTM component */
  372.93 -	TVersion iVersion;
  372.94 -
  372.95 -	/** Flag that indicates if the MTM can send messages */
  372.96 -	TBool iMessagingCapability;
  372.97 -	/** Flag that indicates if the MTM can handle body text */
  372.98 -	TBool iSendBodyCapability;
  372.99 -	/** Flag that indicates if settings have been made for the 
 372.100 -	MessagingCapability() and SendBodyCapability() flags */	
 372.101 -	TBool iCapabilitiesAvailable;
 372.102 -private:
 372.103 -	HBufC* iFilename;
 372.104 -	};
 372.105 -
 372.106 -
 372.107 -class CMtmDllInfoArray : public CArrayPtrFlat<CMtmDllInfo>
 372.108 -/** Collects the registration data for concrete MTM components, as encapsulated 
 372.109 -in CMtmDllInfo objects, into an array.
 372.110 -
 372.111 -Basic array functionality is provided by the base class CArrayPtrFlat<CMtmDllInfo>.
 372.112 -
 372.113 -It is used in the creation of registration data for an MTM group: see CMtmGroupData. 
 372.114 -
 372.115 -@publishedAll
 372.116 -@released
 372.117 -*/
 372.118 -	{
 372.119 -public:
 372.120 -	IMPORT_C CMtmDllInfoArray();
 372.121 -	IMPORT_C ~CMtmDllInfoArray();
 372.122 -	IMPORT_C void AddMtmDllInfoL(CMtmDllInfo* aMtmDllInfo);
 372.123 -	};
 372.124 -
 372.125 -class TCapabilitySet;
 372.126 -
 372.127 -class CMtmGroupData : public CBase
 372.128 -/** Encapsulates the registration data for an MTM group. 
 372.129 -
 372.130 -It is used to access and write the registration data file for an MTM group.
 372.131 - 
 372.132 -@publishedAll
 372.133 -@released
 372.134 -*/
 372.135 -	{
 372.136 -public:
 372.137 -	IMPORT_C static CMtmGroupData* NewL(TUid aMtmTypeUid, TUid aTechnologyTypeUid,CMtmDllInfoArray* aMtmDllInfoArray, const TCapabilitySet& aMtmRequiredCaps);
 372.138 -	IMPORT_C static CMtmGroupData* NewL(const CMtmGroupData& aMtmGroupData);
 372.139 -	IMPORT_C static CMtmGroupData* NewL(RReadStream& aStream);
 372.140 -	IMPORT_C ~CMtmGroupData();
 372.141 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 372.142 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;  // not used but as it is exported it has been kept
 372.143 -	inline TUid MtmTypeUid() const;
 372.144 -	inline TUid TechnologyTypeUid() const;
 372.145 -	IMPORT_C const CMtmDllInfoArray& MtmDllInfoArray() const;
 372.146 -	IMPORT_C const TCapabilitySet& GetMtmRequiredCapabilities() const;
 372.147 -	IMPORT_C TBool operator==(const CMtmGroupData& aMtmGroupData) const;
 372.148 -private:
 372.149 -	CMtmGroupData(TUid aMtmTypeUid, TUid aTechnologyTypeUid, CMtmDllInfoArray* aMtmDllInfoArray, const TCapabilitySet& aMtmRequiredCaps);
 372.150 -	void ConstructL(const CMtmGroupData& aMtmGroupData);
 372.151 -	void ConstructL();
 372.152 -	void AppendMtmDllInfoArrayL(const CMtmDllInfoArray& aMtmDllInfoArray);
 372.153 -	CMtmDllInfoArray& MtmDllInfoArrayPrivate();
 372.154 -	CMtmGroupData(TUid aMtmTypeUid=KNullUid,TUid aTechnologyTypeUid=KNullUid);
 372.155 -	void AppendMtmDllInfoL(CMtmDllInfo* aMtmDllInfo);  // Leaves if second uid wrong
 372.156 -private:
 372.157 -	TUid iMtmTypeUid;
 372.158 -	TUid iTechnologyTypeUid;
 372.159 -	CMtmDllInfoArray* iMtmDllInfoArray;
 372.160 -	TCapabilitySet iMtmRequiredCaps;
 372.161 -	};
 372.162 -
 372.163 -
 372.164 -class MRegisteredMtmDllObserver
 372.165 -/** 
 372.166 -@internalComponent
 372.167 -@released
 372.168 -*/
 372.169 -	{
 372.170 -public:
 372.171 -	virtual TInt UseMtmGroup(TUid aMtmTypeUid)=0;
 372.172 -	virtual TInt ReleaseMtmGroup(TUid aMtmTypeUid)=0;
 372.173 -	};
 372.174 -
 372.175 -
 372.176 -//  Real non-derivable class
 372.177 -
 372.178 -class CRegisteredMtmDll : public CTimer
 372.179 -/** Allows an MTM object to access registry information about itself.
 372.180 - 
 372.181 -@publishedAll
 372.182 -@released
 372.183 -*/
 372.184 -	{
 372.185 -public:
 372.186 -	IMPORT_C static CRegisteredMtmDll* NewL(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const CMtmDllInfo& aMtmDllInfo,const TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver);
 372.187 -	IMPORT_C ~CRegisteredMtmDll();
 372.188 -
 372.189 -	inline TUid MtmTypeUid() const;
 372.190 -	inline TUid TechnologyTypeUid() const;
 372.191 -	inline const CMtmDllInfo& MtmDllInfo() const;
 372.192 -
 372.193 -	inline TInt MtmDllRefCount() const;
 372.194 -
 372.195 -	IMPORT_C TInt GetLibrary(RFs& aFs,RLibrary& aMtmDllLibrary);   // Increments reference count if successful or returns error 
 372.196 -	IMPORT_C void ReleaseLibrary();                       // Decrements access count
 372.197 -	                                                      // Should be called from destructor of any objects created from the library 
 372.198 -private:
 372.199 -	CRegisteredMtmDll(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver);
 372.200 -	void ConstructL(const CMtmDllInfo& aMtmDllInfo);
 372.201 -	void LoadLibraryL(RFs& aFs);   
 372.202 -
 372.203 -	void RunL();
 372.204 -
 372.205 -private:
 372.206 -	TUid iMtmTypeUid;
 372.207 -	TUid iTechnologyTypeUid;
 372.208 -	CMtmDllInfo* iMtmDllInfo;
 372.209 -	RLibrary iMtmDllLibrary;
 372.210 -	TInt iMtmDllRefCount;
 372.211 -	TTimeIntervalMicroSeconds32 iTimeoutMicroSeconds32;
 372.212 -	MRegisteredMtmDllObserver& iRegisteredMtmDllObserver;
 372.213 -	};
 372.214 -
 372.215 -
 372.216 -
 372.217 -class CRegisteredMtmDllArray : public CArrayPtrFlat<CRegisteredMtmDll>
 372.218 -/**
 372.219 -@internalComponent
 372.220 -@released
 372.221 -*/
 372.222 -	{
 372.223 -public:
 372.224 -	IMPORT_C CRegisteredMtmDllArray();
 372.225 -	IMPORT_C ~CRegisteredMtmDllArray();
 372.226 -	IMPORT_C void AddRegisteredMtmDllL(CRegisteredMtmDll* aRegisteredMtmDll);
 372.227 -	};
 372.228 -
 372.229 -//  Base class
 372.230 -
 372.231 -class CMtmDllRegistry : public CBase
 372.232 -/** Accesses the various MTM component registries. 
 372.233 -
 372.234 -The derived classes used by 
 372.235 -clients are CClientMtmRegistry, CMtmUiDataRegistry, and CMtmUiRegistry. It 
 372.236 -provides functions to discover the MTMs registered in such a registry. The 
 372.237 -registered MTMs can be regarded as existing in a list: you can use NumRegisteredMtmDlls() 
 372.238 -to get the number in the list, and MtmTypeUid() to index into it.
 372.239 - 
 372.240 -@internalComponent
 372.241 -@released
 372.242 -*/
 372.243 -	{
 372.244 -public:
 372.245 -	IMPORT_C ~CMtmDllRegistry();
 372.246 -
 372.247 -	inline TInt NumRegisteredMtmDlls() const;
 372.248 -	IMPORT_C TUid MtmTypeUid(TInt anIndex) const;                                
 372.249 -
 372.250 -	inline TBool IsPresent(TUid aMtmTypeUid) const;
 372.251 -	IMPORT_C TUid TechnologyTypeUid(TUid aMtmTypeUid) const;
 372.252 -	IMPORT_C const CMtmDllInfo& RegisteredMtmDllInfo(TUid aMtmTypeUid) const;                                
 372.253 -	IMPORT_C TBool IsInUse(TUid aMtmTypeUid) const;        // returns true if specified DLL in use 
 372.254 -	IMPORT_C TBool IsInUse() const;                        // returns true if any DLL in use 
 372.255 -
 372.256 -protected:
 372.257 -	IMPORT_C CMtmDllRegistry(RFs& aFs,TUid aMtmDllTypeUid,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=KMsvDefaultTimeoutMicroSeconds32); 
 372.258 -
 372.259 -	IMPORT_C TInt MtmTypeUidToIndex(TUid anMtmTypeUid) const;
 372.260 -
 372.261 -	IMPORT_C TInt AddRegisteredMtmDll(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const CMtmDllInfo& aMtmDllInfo,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver); // returns error
 372.262 -	IMPORT_C void RemoveRegisteredMtmDll(TUid aMtmTypeUid);         
 372.263 -	IMPORT_C void RemoveAllRegisteredMtmDlls();                     
 372.264 -
 372.265 -private:
 372.266 -	void DoAddRegisteredMtmDllL(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const CMtmDllInfo& aMtmDllInfo,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver); // returns error
 372.267 -
 372.268 -protected:
 372.269 -	RFs& iFs;
 372.270 -	TUid iMtmDllTypeUid;  //  Second Uid in all Dlls
 372.271 -	CRegisteredMtmDllArray iRegisteredMtmDllArray;  // Inline CArray, OK because no NewL();
 372.272 -	TTimeIntervalMicroSeconds32 iTimeoutMicroSeconds32;
 372.273 -	};
 372.274 -
 372.275 -
 372.276 -#include <msvreg.inl>
 372.277 -
 372.278 -#endif
   373.1 --- a/epoc32/include/msvruids.h	Tue Mar 16 16:12:26 2010 +0000
   373.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   373.3 @@ -1,99 +0,0 @@
   373.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   373.5 -// All rights reserved.
   373.6 -// This component and the accompanying materials are made available
   373.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   373.8 -// which accompanies this distribution, and is available
   373.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  373.10 -//
  373.11 -// Initial Contributors:
  373.12 -// Nokia Corporation - initial contribution.
  373.13 -//
  373.14 -// Contributors:
  373.15 -//
  373.16 -// Description:
  373.17 -//
  373.18 -
  373.19 -
  373.20 -
  373.21 -/**
  373.22 - @file
  373.23 - @publishedAll
  373.24 - @released
  373.25 -*/
  373.26 -#if !defined(__MSVREGUD_H__)
  373.27 -#define __MSVREGUD_H__
  373.28 -
  373.29 -#include <e32base.h>
  373.30 -#include <msvstd.hrh>
  373.31 -
  373.32 -/**
  373.33 -* @internalAll
  373.34 -* @released
  373.35 -*/
  373.36 -const TInt KMsvNumMtmDllTypes=4;
  373.37 -/**
  373.38 -* @internalAll
  373.39 -* @released
  373.40 -*/
  373.41 -const TUid KUidMsvDataComponent     ={0x10003C69};
  373.42 -// Server-side MTM 
  373.43 -/**
  373.44 -* @publishedAll
  373.45 -* @released
  373.46 -*/
  373.47 -const TUid KUidMtmServerComponent	={KUidMtmServerComponentVal};
  373.48 -// Client-side MTM 
  373.49 -/**
  373.50 -* @publishedAll
  373.51 -* @released
  373.52 -*/
  373.53 -const TUid KUidMtmClientComponent	={KUidMtmClientComponentVal};
  373.54 -// User Interface MTM
  373.55 -/**
  373.56 -* @internalAll
  373.57 -* @released
  373.58 -*/
  373.59 -const TUid KUidMtmUiComponent		={KUidMtmUiComponentVal};
  373.60 -// UI Data MTM 
  373.61 -/**
  373.62 -* @internalAll
  373.63 -* @released
  373.64 -*/
  373.65 -const TUid KUidMtmUiDataComponent	={KUidMtmUiDataComponentVal};
  373.66 -/**
  373.67 -* @internalTechnology
  373.68 -* @released
  373.69 -*/
  373.70 -const TUid KMsvDllType1Uid={0x10003C62}; 
  373.71 -/**
  373.72 -* @internalTechnology
  373.73 -* @released
  373.74 -*/
  373.75 -const TUid KMsvDllType2Uid={0x10003C63};
  373.76 -/**
  373.77 -* @internalTechnology
  373.78 -* @released
  373.79 -*/
  373.80 -const TUid KMsvDllType3Uid={0x10003C64};
  373.81 -/**
  373.82 -* @internalTechnology
  373.83 -* @released
  373.84 -*/
  373.85 -const TUid KMsvDllType4Uid={0x10003C65};
  373.86 -/**
  373.87 -* @internalTechnology
  373.88 -* @released
  373.89 -*/
  373.90 -const TUid KMsvDllType5Uid={0x10003C66};
  373.91 -/**
  373.92 -* @internalTechnology
  373.93 -* @released
  373.94 -*/
  373.95 -const TUid KMsvDllType6Uid={0x10003C67};
  373.96 -/**
  373.97 -* @internalComponent
  373.98 -* @released
  373.99 -*/
 373.100 -const TUid KUidMtmMultipleComponent	={0x10004845}; 
 373.101 -
 373.102 -#endif
   374.1 --- a/epoc32/include/msvscheduledentry.h	Tue Mar 16 16:12:26 2010 +0000
   374.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   374.3 @@ -1,158 +0,0 @@
   374.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   374.5 -// All rights reserved.
   374.6 -// This component and the accompanying materials are made available
   374.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   374.8 -// which accompanies this distribution, and is available
   374.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  374.10 -//
  374.11 -// Initial Contributors:
  374.12 -// Nokia Corporation - initial contribution.
  374.13 -//
  374.14 -// Contributors:
  374.15 -//
  374.16 -// Description:
  374.17 -//
  374.18 -
  374.19 -#ifndef __MSVSCHEDULEDENTRY_H__
  374.20 -#define __MSVSCHEDULEDENTRY_H__
  374.21 -
  374.22 -#include <msvsenderroraction.h>
  374.23 -#include <msventryscheduledata.h>
  374.24 -
  374.25 -/**
  374.26 -Abstract base class which stores the schedule data and recipients of a message. 
  374.27 -
  374.28 -CMsvScheduledEntry does not force the Server MTM to store the message 
  374.29 -recipients in a certain way. However, it is recommended that the Server MTM 
  374.30 -derive its recipients class from CMsvRecipient, because the class already has 
  374.31 -support for the number of retries to send a message to a recipient. 
  374.32 -
  374.33 -CMsvScheduledEntry stores the TMsvEntry to which it relates to provide quick 
  374.34 -access to the scheduling-related index data without needing calls to 
  374.35 -CMsvServerEntry::SetEntry(). 
  374.36 -However, CMsvScheduledEntry does not provide access to all the members of 
  374.37 -the TMsvEntry. This is to stop the user of the CMsvScheduledEntry from 
  374.38 -accessing the descriptor members of the TMsvEntry while the server entry is 
  374.39 -not set to the TMsvEntry. 
  374.40 -
  374.41 -@publishedAll
  374.42 -@released
  374.43 -*/
  374.44 -
  374.45 -class CMsvScheduledEntry : public CBase
  374.46 -	{
  374.47 -public:
  374.48 -	/**
  374.49 -	Tests if any of the recipients of this message can still be sent to.
  374.50 -	
  374.51 -	@param aErrorActions
  374.52 -	Error-actions
  374.53 -	
  374.54 -	@param aAction 
  374.55 -	Default error-action
  374.56 -	
  374.57 -	@return True if at least one of the recipients has not been sent 
  374.58 -	the message.
  374.59 -	*/
  374.60 -	virtual TBool CanSendToAnyRecipients(const CMsvSendErrorActions& aErrorActions, TMsvSendErrorAction& aAction) = 0;
  374.61 -
  374.62 -	/**
  374.63 -	Tests if any of the recipients of this message can still be sent to.
  374.64 -	
  374.65 -	@param aAction
  374.66 -	Default error-action
  374.67 -	
  374.68 -	@return True if at least one of the recipients has not been sent 
  374.69 -	the message.
  374.70 -	*/
  374.71 -	virtual TBool CanSendToAnyRecipients(const TMsvSendErrorAction& aAction) = 0;
  374.72 -	
  374.73 -	/**
  374.74 -	Sets all the recipients' retries to zero.
  374.75 -	*/
  374.76 -	virtual void RecipientsResetRetries() = 0;
  374.77 -	
  374.78 -	/**
  374.79 -	Increases all the recipients' retries by one.
  374.80 -	*/
  374.81 -	virtual void RecipientsIncreaseRetries() = 0;
  374.82 -	
  374.83 -	/**
  374.84 -	Sets all the recipients' flags to sending failed.
  374.85 -	*/
  374.86 -	virtual void RecipientsSetFailed() = 0;
  374.87 -	
  374.88 -	/**
  374.89 -	Tests if all recipients of the message have been sent successfully. 
  374.90 -	
  374.91 -	@return True if all recipients have been sent successfully.
  374.92 -	*/
  374.93 -	virtual TBool RecipientsAllSent() const = 0;
  374.94 -
  374.95 -	IMPORT_C virtual void StoreL(CMsvStore& aStore) const;
  374.96 -	IMPORT_C virtual void RestoreL(CMsvStore& aStore);
  374.97 -
  374.98 -	/**
  374.99 -	Stores the recipients.
 374.100 -	
 374.101 -	@param aStore
 374.102 -	Store to write to.
 374.103 -	*/
 374.104 -	virtual void RecipientsStoreL(CMsvStore& aStore) const = 0;
 374.105 -	
 374.106 -	/**
 374.107 -	Restores the recipients.
 374.108 -	
 374.109 -	@param aStore
 374.110 -	Store to read from.
 374.111 -	*/
 374.112 -	virtual void RecipientsRestoreL(CMsvStore& aStore) = 0;
 374.113 -
 374.114 -	inline const TTime& ScheduleDate() const;
 374.115 -	inline void SetScheduleDate(const TTime& aDate);
 374.116 -
 374.117 -	inline const TBool Scheduled() const;
 374.118 -	inline void SetScheduled(const TBool aScheduled);
 374.119 -
 374.120 -	inline const TInt SendingState() const;
 374.121 -	inline void SetSendingState(TInt aState);
 374.122 -
 374.123 -	inline const TInt Error() const;
 374.124 -	inline const TMsvId Id() const;
 374.125 -	inline const TBool OffPeak() const;
 374.126 -
 374.127 -	inline void SetFailed(const TBool aFail);
 374.128 -	inline const TBool Failed() const;
 374.129 -	
 374.130 -	IMPORT_C TBool PendingConditions() const;
 374.131 -	IMPORT_C void SetPendingConditions(TBool aPendingConditions);
 374.132 -
 374.133 -	inline const TUid Mtm() const;
 374.134 -
 374.135 -	IMPORT_C void Entry(TMsvEntry& aEntry) const;
 374.136 -
 374.137 -protected:
 374.138 -
 374.139 -	IMPORT_C CMsvScheduledEntry(const TMsvEntry& aEntry);
 374.140 -
 374.141 -public:
 374.142 -
 374.143 -	/** Message schedule data. */
 374.144 -	TMsvEntryScheduleData iData;
 374.145 -
 374.146 -private:
 374.147 -
 374.148 -	TMsvEntry iEntry;
 374.149 -	};
 374.150 -
 374.151 -/**
 374.152 -Dynamic array of CMsvScheduledEntry objects. 
 374.153 -
 374.154 -@publishedAll
 374.155 -@released
 374.156 -*/
 374.157 -typedef CArrayPtrFlat<CMsvScheduledEntry> CMsvScheduledEntries;
 374.158 -
 374.159 -#include <msvscheduledentry.inl>
 374.160 -
 374.161 -#endif
   375.1 --- a/epoc32/include/msvschedulepackage.h	Tue Mar 16 16:12:26 2010 +0000
   375.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   375.3 @@ -1,83 +0,0 @@
   375.4 -/// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   375.5 -/// All rights reserved.
   375.6 -/// This component and the accompanying materials are made available
   375.7 -/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   375.8 -/// which accompanies this distribution, and is available
   375.9 -/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  375.10 -///
  375.11 -/// Initial Contributors:
  375.12 -/// Nokia Corporation - initial contribution.
  375.13 -///
  375.14 -/// Contributors:
  375.15 -///
  375.16 -/// Description:
  375.17 -/// All rights reserved.
  375.18 -/// This component and the accompanying materials are made available
  375.19 -/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  375.20 -/// which accompanies this distribution, and is available
  375.21 -/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  375.22 -/// Initial Contributors:
  375.23 -/// Nokia Corporation - initial contribution.
  375.24 -/// Contributors:
  375.25 -///
  375.26 -
  375.27 -#ifndef MSV_SCHEDULE_PACKAGE_H_
  375.28 -#define MSV_SCHEDULE_PACKAGE_H_
  375.29 -
  375.30 -/////////////////////////////////////////////////////////////////////////////
  375.31 -//
  375.32 -//	TMsvSchedulePackage Declaration
  375.33 -//
  375.34 -/////////////////////////////////////////////////////////////////////////////
  375.35 -
  375.36 -const TInt KMaxParameterLength = 256;
  375.37 -
  375.38 -class TTaskInfo;
  375.39 -
  375.40 -
  375.41 -/**
  375.42 -Packaged message scheduling information. 
  375.43 -
  375.44 -@publishedAll
  375.45 -@released
  375.46 -*/
  375.47 -
  375.48 -class TMsvSchedulePackage
  375.49 -	{
  375.50 -public:
  375.51 -	IMPORT_C TMsvSchedulePackage();
  375.52 -	
  375.53 -	IMPORT_C void PackLC(TTaskInfo& aTask, HBufC*& aDes) const;
  375.54 -	IMPORT_C void UnpackL(const TTaskInfo& aTask, const TDesC& aDes);
  375.55 -
  375.56 -private:
  375.57 -
  375.58 -	HBufC* PackLC() const;
  375.59 -	void UnpackL(const TDesC& aDes);
  375.60 -
  375.61 -	void ExternalizeL(RWriteStream&) const;
  375.62 -	void InternalizeL(RReadStream&);
  375.63 -
  375.64 -	TPtrC Convert(const TDesC8& aDes) const;
  375.65 -	TPtrC8 Convert(const TDesC16& aDes) const;
  375.66 -
  375.67 -public:
  375.68 -
  375.69 -	/** Message ID. */
  375.70 -	TMsvId iId;
  375.71 -
  375.72 -	/** Command ID to be passed to CMsvSession::TransferCommandL() when it is
  375.73 -	time to send the messages. */
  375.74 -	TInt iCommandId;
  375.75 -
  375.76 -	/** Intervals at which the scheduler should check the sending operation's
  375.77 -	progress. */
  375.78 -	TTimeIntervalMicroSeconds32 iPollProgress;
  375.79 -
  375.80 -	/** Server MTM specific binary data to be passed to 
  375.81 -	CMsvSession::TransferCommandL() when it is time to send the messages. */
  375.82 -	TBuf8<KMaxParameterLength> iParameter;
  375.83 -
  375.84 -	};
  375.85 -
  375.86 -#endif
   376.1 --- a/epoc32/include/msvschedulesend.h	Tue Mar 16 16:12:26 2010 +0000
   376.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   376.3 @@ -1,192 +0,0 @@
   376.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   376.5 -// All rights reserved.
   376.6 -// This component and the accompanying materials are made available
   376.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   376.8 -// which accompanies this distribution, and is available
   376.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  376.10 -//
  376.11 -// Initial Contributors:
  376.12 -// Nokia Corporation - initial contribution.
  376.13 -//
  376.14 -// Contributors:
  376.15 -//
  376.16 -// Description:
  376.17 -//
  376.18 -
  376.19 -#ifndef __MSVSCHEDULESEND_H__
  376.20 -#define __MSVSCHEDULESEND_H__
  376.21 -
  376.22 -#ifdef _DEBUG
  376.23 -#undef _MSG_NO_LOGGING
  376.24 -#endif
  376.25 -
  376.26 - 
  376.27 -
  376.28 -
  376.29 -#include <e32base.h>
  376.30 -#include <msvstd.h>
  376.31 -#include <csch_cli.h>
  376.32 -#include <msvschedulepackage.h>
  376.33 -#include <msvscheduledentry.h>
  376.34 -
  376.35 -class CMsvEntrySelection;
  376.36 -class TMsvSchedulePackage;
  376.37 -class TMsvSendErrorAction;
  376.38 -class CMsvStore;
  376.39 -class TMsvEntry;
  376.40 -class CMsvOffPeakTimes;
  376.41 -class CMsvScheduleSettings;
  376.42 -class CMsvSendErrorActions;
  376.43 -class CMsvSysAgentActions;
  376.44 -class TMsvSchedulePackage;
  376.45 -class TMsvEntryScheduleData;
  376.46 -class CMsvServerEntry;
  376.47 -class CRepository;
  376.48 -
  376.49 -const TUid KUidMsvScheduledSendingDLL	= {0x100056A0};
  376.50 -const TInt KMsvSchsendArrayGrowth		= 10;
  376.51 -
  376.52 -#ifdef _MSG_NO_LOGGING
  376.53 -#define SCHSENDLOG(a)
  376.54 -#else
  376.55 -_LIT(KSchSendLogDir, "schsend");
  376.56 -_LIT(KSchSendLogFile,"SchSend.txt");
  376.57 -#define SCHSENDLOG(a) a
  376.58 -#endif
  376.59 -
  376.60 -/** 
  376.61 -Provides a Server MTM's interface to the Task Scheduler for messaging 
  376.62 -scheduling.
  376.63 -
  376.64 -Server MTM's must provide a derived class that implements GetMessageL() to 
  376.65 -provide a factory for MTM-specific scheduling CMsvScheduledEntry-based objects. 
  376.66 -
  376.67 -@publishedAll
  376.68 -@released
  376.69 -*/
  376.70 -class CMsvScheduleSend : public CBase
  376.71 -	{
  376.72 -public:
  376.73 -	IMPORT_C ~CMsvScheduleSend();
  376.74 -
  376.75 -	IMPORT_C void ScheduleL(const CMsvEntrySelection& aSelection, const TMsvSchedulePackage& aPackage);
  376.76 -
  376.77 -	IMPORT_C void ReScheduleL(const CMsvEntrySelection& aSelection, const TMsvSchedulePackage& aPackage, const TMsvSendErrorAction* aErrorAction = NULL);
  376.78 -
  376.79 -	IMPORT_C void CheckScheduleL(const CMsvEntrySelection& aSelection);
  376.80 -	IMPORT_C void DeleteScheduleL(const CMsvEntrySelection& aSelection);
  376.81 -
  376.82 -	IMPORT_C void SendingCompleteL(TMsvEntry& aEntry, const TBool aChangeEntry = EFalse);
  376.83 -	IMPORT_C void SendingCompleteL(const CMsvEntrySelection& aSelection);
  376.84 -
  376.85 -
  376.86 -	inline CMsvOffPeakTimes& OffPeakTimes() const;
  376.87 -	inline CMsvScheduleSettings& ScheduleSettings() const;
  376.88 -	inline CMsvSendErrorActions& SendErrorActions() const;
  376.89 -	inline CMsvSysAgentActions& AgentActions() const;
  376.90 -
  376.91 -	IMPORT_C static void CreateScheduleL(RScheduler& aScheduler, const CMsvScheduleSettings& aSettings, const TTime& aStartTime, const TTimeIntervalMinutes& aValidityPeriod, TSchedulerItemRef& aRef);
  376.92 -	IMPORT_C static void CreateScheduleL(RScheduler& aScheduler, const CArrayFixFlat<TTaskSchedulerCondition>& aConditions, const TTime& aTimeout, TSchedulerItemRef& aRef);
  376.93 -	IMPORT_C static void FindScheduleL(RScheduler& aScheduler, const TTime& aStartTime, TSchedulerItemRef& aRef);
  376.94 -	IMPORT_C static void FindScheduleL(RScheduler& aScheduler, const CArrayFixFlat<TTaskSchedulerCondition>& aConditions, const TTime& aTimeout, TSchedulerItemRef& aRef);
  376.95 -	IMPORT_C static void RoundUpToMinute(TTime& aTime);
  376.96 -	IMPORT_C static void ScheduleEntryL(RScheduler& aScheduler, const TSchedulerItemRef& aRef, const TMsvSchedulePackage& aPackage, TTaskInfo& aInfo);
  376.97 -	IMPORT_C static void UpdateEntryAfterSchedule(const TSchedulerItemRef& aRef, const TTaskInfo& aInfo, const TTime& aTime, TInt aFinalState, TMsvEntry& aEntry, TMsvEntryScheduleData& aData);
  376.98 -	IMPORT_C static void ConnectAndRegisterL(RScheduler& aScheduler, const CMsvScheduleSettings& aSettings);
  376.99 -
 376.100 -	IMPORT_C void LoadScheduleSettingsL(CRepository& aRepository);
 376.101 -
 376.102 -protected:
 376.103 -
 376.104 -	IMPORT_C CMsvScheduleSend(CMsvServerEntry& aServerEntry);
 376.105 -	IMPORT_C virtual void ConstructL();
 376.106 -
 376.107 -/**
 376.108 -Gets the schedule data and recipients of a message.
 376.109 -
 376.110 -Recipient information is MTM-specific, so the server MTM must provide a 
 376.111 -derived class that implements CMsvScheduledEntry, and return objects of 
 376.112 -that type from this function.
 376.113 -
 376.114 -@param	aId 
 376.115 -The message ID.
 376.116 -
 376.117 -@return 
 376.118 -The message's schedule data.
 376.119 -*/
 376.120 -	virtual CMsvScheduledEntry* GetMessageL(const TMsvId aId) const = 0;
 376.121 -
 376.122 -private:
 376.123 -
 376.124 -	enum
 376.125 -		{
 376.126 -		EDefaultTaskPriority	= 1, //used when scheduling a task in the task scheduler
 376.127 -		EDefaultTaskRepeat		= 0	 //used when scheduling a task in the task scheduler
 376.128 -		};
 376.129 -	
 376.130 -	void SendingCompleteL(CMsvScheduledEntry& aScheduledEntry, const TBool aChangeEntry);
 376.131 -
 376.132 -	TBool GetNextRetry(CMsvScheduledEntry& aMessage, const TMsvSendErrorAction& aErrorAction, TTimeIntervalSeconds& aInterval) const;
 376.133 -
 376.134 -	void DoScheduleL(CMsvScheduledEntries& aSchEntries, const TInt aFinalState, const TTime& aTime, TBool aPendingConditions);
 376.135 -	void DoReScheduleL(CMsvScheduledEntries& aSchEntries);
 376.136 -	
 376.137 -	void GetMessagesL(const CMsvEntrySelection& aSelection);
 376.138 -
 376.139 -	void ConnectAndRegisterL();
 376.140 -
 376.141 -	void ScheduleEntryL(CMsvScheduledEntry& aMessage, const TInt aFinalState, const TTime& aStartTime, const TSchedulerItemRef& aRef, TBool aPendingConditions);
 376.142 -
 376.143 -	void GetOffPeakL(TTime aFromTime, TTime& aStartTime, TTimeIntervalMinutes& aValidityPeriod) const;
 376.144 -	
 376.145 -	void DeleteScheduleForEntryL(CMsvScheduledEntry& aMessage);
 376.146 -	void ResetScheduleInfoForEntryL(CMsvScheduledEntry& aMessage, const TBool aChangeEntry);
 376.147 -	void SortByDateAndPendingConditionsL(CMsvScheduledEntries& aScheduledEntries);
 376.148 -	void CreateScheduleL(const TTime& aStartTime, const TTimeIntervalMinutes& aValidityPeriod, const CArrayFixFlat<TTaskSchedulerCondition>& aSchConditions, TBool aPendingConditions, TSchedulerItemRef& aRef);
 376.149 -	void FindScheduleL(const TTime& aTime, const CArrayFixFlat<TTaskSchedulerCondition>& aSchConditions, TBool aPendingConditions, TSchedulerItemRef& aRef);
 376.150 -
 376.151 -	void PopulateScheduleConditionsL(CArrayFixFlat<TTaskSchedulerCondition>& aSchConditions);
 376.152 -	TBool SetMessageStartTime(CMsvScheduledEntry& aMessage, const TTime& aFromTime, const TMsvSendErrorAction* aErrorAction = NULL);
 376.153 -
 376.154 -	TBool TaskAndMessageMatchL(const CMsvScheduledEntry& aMessage);
 376.155 -	TMsvId GetMessageIdForTaskL(TInt aTaskId);
 376.156 -#ifndef _MSG_NO_LOGGING
 376.157 -	void FLog(TRefByValue<const TDesC> aFormat, ...);
 376.158 -	void FLog(TRefByValue<const TDesC8> aFormat, ...);
 376.159 -#endif
 376.160 -
 376.161 -protected:
 376.162 -
 376.163 -	/** The Server MTM specific scheduled message sending settings. */
 376.164 -	CMsvScheduleSettings*	iSettings;
 376.165 -	/** The Server MTM specific off peak time periods. */
 376.166 -	CMsvOffPeakTimes*		iOffPeakTimes;
 376.167 -	/** The Server MTM specific actions to take when particular errors occur during 
 376.168 -	message sending. */
 376.169 -	CMsvSendErrorActions*	iErrorActions;
 376.170 -	/** The System Agent conditions that must be satisfied before a sending attempt. */
 376.171 -	CMsvSysAgentActions*	iAgentActions;
 376.172 -
 376.173 -	/** Indicates if this has been registered with the Task Scheduler. 
 376.174 -	
 376.175 -	Initially set to EFalse. */
 376.176 -	TBool					iRegistered;	
 376.177 -	/** Provides an interface to the Task Scheduler. */
 376.178 -	RScheduler				iScheduler;	
 376.179 -	/** The CMsvServerEntry of the server MTM. */
 376.180 -	CMsvServerEntry&		iServerEntry;
 376.181 -	/** Scheduling options. */
 376.182 -	TMsvSchedulePackage		iPackage;
 376.183 -
 376.184 -	/** Array of message schedule data. */
 376.185 -	CMsvScheduledEntries*	iSchEntries;
 376.186 -
 376.187 -	/** Array of schedule entry data. */
 376.188 -	CArrayFixFlat<TScheduleEntryInfo2>* iSchEntryInfo;
 376.189 -	/** Array of schedule task data. */
 376.190 -	CArrayFixFlat<TTaskInfo>* iSchTaskInfo;
 376.191 -	};
 376.192 -
 376.193 -#include <msvschedulesend.inl>
 376.194 -
 376.195 -#endif
   377.1 --- a/epoc32/include/msvschedulesettings.h	Tue Mar 16 16:12:26 2010 +0000
   377.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   377.3 @@ -1,118 +0,0 @@
   377.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   377.5 -// All rights reserved.
   377.6 -// This component and the accompanying materials are made available
   377.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   377.8 -// which accompanies this distribution, and is available
   377.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  377.10 -//
  377.11 -// Initial Contributors:
  377.12 -// Nokia Corporation - initial contribution.
  377.13 -//
  377.14 -// Contributors:
  377.15 -//
  377.16 -// Description:
  377.17 -//
  377.18 -
  377.19 -#ifndef __MSVSCHEDULESETTINGS_H__
  377.20 -#define __MSVSCHEDULESETTINGS_H__
  377.21 -
  377.22 - 
  377.23 -
  377.24 -
  377.25 -#include <msvrcpt.h>
  377.26 -#include <schinfo.h>
  377.27 -#include <msvsenderroraction.h>
  377.28 -
  377.29 -
  377.30 -
  377.31 -
  377.32 -
  377.33 -/**
  377.34 -Stores the MTM-specific (general) settings for scheduling messages on the
  377.35 -Task Scheduler. 
  377.36 -
  377.37 -These settings include the latency (minimum amount of time between now and when
  377.38 -the message is scheduled for), the intervals (short, long or variable) to wait 
  377.39 -for before attempting to re-send the message and the timout value for messages
  377.40 -pending conditions to be met.
  377.41 -
  377.42 -The other MTM scheduling releated settings are stored in CMsvOffPeakTimes 
  377.43 -and CMsvSendErrorActions. 
  377.44 -
  377.45 -@publishedAll
  377.46 -@released
  377.47 -*/
  377.48 -
  377.49 -class CMsvScheduleSettings : public CBase
  377.50 -	{
  377.51 -public:
  377.52 -
  377.53 -	IMPORT_C static CMsvScheduleSettings* NewL();
  377.54 -	IMPORT_C static CMsvScheduleSettings* NewLC();	
  377.55 -	IMPORT_C ~CMsvScheduleSettings();
  377.56 -
  377.57 -
  377.58 -	IMPORT_C void Reset();
  377.59 -
  377.60 -
  377.61 -	IMPORT_C void SetPriority(const TInt aPriority);
  377.62 -	IMPORT_C TInt Priority() const;
  377.63 -
  377.64 -	IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes& aValidityPeriod);
  377.65 -	IMPORT_C const TTimeIntervalMinutes& ValidityPeriod() const;
  377.66 -
  377.67 -	IMPORT_C void SetIntervalType(const TIntervalType aIntervalType);
  377.68 -	IMPORT_C TIntervalType IntervalType() const;
  377.69 -
  377.70 -	IMPORT_C void SetLongInterval(const TTimeIntervalSeconds& aInterval);
  377.71 -	IMPORT_C const TTimeIntervalSeconds& LongInterval() const;
  377.72 -	
  377.73 -	IMPORT_C void SetShortInterval(const TTimeIntervalSeconds& aInterval);
  377.74 -	IMPORT_C const TTimeIntervalSeconds& ShortInterval() const;
  377.75 -
  377.76 -	IMPORT_C const CArrayFixFlat<TTimeIntervalSeconds>& VariableIntervals() const;
  377.77 -	IMPORT_C void SetVariableIntervalsL(const CArrayFixFlat<TTimeIntervalSeconds>& aIntervals);
  377.78 -
  377.79 -	IMPORT_C const TTimeIntervalMicroSeconds32& Latency() const;
  377.80 -	IMPORT_C void SetLatency(const TTimeIntervalMicroSeconds32& aLatency);
  377.81 -	
  377.82 -	IMPORT_C void SetPendingConditionsTimeout(const TTimeIntervalMinutes& aTimeout);
  377.83 -	IMPORT_C const TTimeIntervalMinutes& PendingConditionsTimeout() const;
  377.84 -
  377.85 -	/** Default scheduler settings values. */
  377.86 -	enum
  377.87 -		{
  377.88 -		/** Default priority. */
  377.89 -		EDefaultPriority		= 27,
  377.90 -		/** Default validity period: 10080 Minutes in 1 week. */
  377.91 -		EDefaultValidityPeriod	= 10080,
  377.92 -		/** Default interval type: EYearly */	
  377.93 -		EDefaultIntervalType	= 3,
  377.94 -		/** Default short retry interval. */		
  377.95 -		EDefaultShortInterval	= 5,
  377.96 -		/** Default long retry interval. */
  377.97 -		EDefaultLongInterval	= 120,
  377.98 -		/** Default latency. */
  377.99 -		EDefaultLatency			= 1500000,
 377.100 -		/** Default timeout. Zero minutes - no timeout. */
 377.101 -		EDefaultPendingConditionsTimeout	= 0
 377.102 -		};
 377.103 -
 377.104 -private:
 377.105 -	CMsvScheduleSettings();
 377.106 -
 377.107 -	void ConstructL();
 377.108 -
 377.109 -
 377.110 -	TInt					iPriority;		//Priority of the schedules on the task scheduler
 377.111 -	TTimeIntervalMinutes	iValidityPeriod;//Validity period of message on the task scheduler
 377.112 -	TIntervalType			iIntervalType;	//See TIntervalType declaration and Task Scheduler user documentation
 377.113 -	TTimeIntervalMicroSeconds32 iLatency;		//Minimum amount of time between now and when the message is scheduled for. Cannot be negative.
 377.114 -	TTimeIntervalMinutes	iPendingConditionsTimeout;
 377.115 -
 377.116 -	TTimeIntervalSeconds iLongInterval;
 377.117 -	TTimeIntervalSeconds iShortInterval;
 377.118 -	CArrayFixFlat<TTimeIntervalSeconds>* iVariableIntervals;
 377.119 -	};
 377.120 -
 377.121 -#endif	// __MSVSCHEDULESETTINGS_H__
   378.1 --- a/epoc32/include/msvsenderroraction.h	Tue Mar 16 16:12:26 2010 +0000
   378.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   378.3 @@ -1,146 +0,0 @@
   378.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   378.5 -// All rights reserved.
   378.6 -// This component and the accompanying materials are made available
   378.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   378.8 -// which accompanies this distribution, and is available
   378.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  378.10 -//
  378.11 -// Initial Contributors:
  378.12 -// Nokia Corporation - initial contribution.
  378.13 -//
  378.14 -// Contributors:
  378.15 -//
  378.16 -// Description:
  378.17 -//
  378.18 -
  378.19 -#ifndef __MSVSENDERRORACTION_H__
  378.20 -#define __MSVSENDERRORACTION_H__
  378.21 -
  378.22 - 
  378.23 -
  378.24 -
  378.25 -/////////////////////////////////////////////////////////////////////////////
  378.26 -//
  378.27 -//	Includes
  378.28 -//
  378.29 -/////////////////////////////////////////////////////////////////////////////
  378.30 -
  378.31 -#include <schsend.hrh>
  378.32 -#include <barsread.h>
  378.33 -#include <msvstore.h>
  378.34 -
  378.35 -/////////////////////////////////////////////////////////////////////////////
  378.36 -//
  378.37 -//	Constants
  378.38 -//
  378.39 -/////////////////////////////////////////////////////////////////////////////
  378.40 -
  378.41 -
  378.42 -/////////////////////////////////////////////////////////////////////////////
  378.43 -//
  378.44 -//	TMsvSendErrorAction Declaration
  378.45 -//
  378.46 -/////////////////////////////////////////////////////////////////////////////
  378.47 -
  378.48 -/**
  378.49 -Encapsulates the action to take for a particular error. 
  378.50 -
  378.51 -An error may occur when the Server MTM is attempting to send a message or 
  378.52 -messages. If the Server MTM supports scheduling, then, depending on the error 
  378.53 -or conditions, the Server MTM may want to re-schedule the message on the Task 
  378.54 -Scheduler to send at a later time. CMsvScheduleSend::ReScheduleL() 
  378.55 -(in combination with CMsvSendErrorActions) uses the TMsvSendErrorAction 
  378.56 -to determine whether to re-schedule the message. 
  378.57 -
  378.58 -@publishedAll
  378.59 -@released
  378.60 -*/
  378.61 -
  378.62 -class TMsvSendErrorAction
  378.63 -	{
  378.64 -public:
  378.65 -	IMPORT_C TMsvSendErrorAction();
  378.66 -
  378.67 -	IMPORT_C void Reset();
  378.68 -
  378.69 -	IMPORT_C void SetMaxRetries(const TInt16 aMaxRetries);
  378.70 -	IMPORT_C TInt16 MaxRetries() const;
  378.71 -
  378.72 -	/** The error. */
  378.73 -	TInt					iError;
  378.74 -
  378.75 -	/** The action to take if this error occurs. */
  378.76 -	TMsvSendAction			iAction;
  378.77 -
  378.78 -	/** The number of attempts to make at sending a message if this error occurs. 
  378.79 -	
  378.80 -	If iRetries equals ESendRetriesInfinite, then sending will be attempted until 
  378.81 -	successful (or the user intervenes). This member is ignored if iAction equals 
  378.82 -	ESendActionFail. */
  378.83 -	TMsvSendRetries			iRetries;
  378.84 -
  378.85 -	/** Retry behaviour.
  378.86 -	
  378.87 -	This member is used by CMsvSendErrorActions to determine when to resend the 
  378.88 -	message. This member is ignored if iAction equals ESendActionFail. */
  378.89 -	TMsvSendRetrySpacing	iRetrySpacing;
  378.90 -
  378.91 -private:
  378.92 -	TInt16	iMaxRetries;
  378.93 -	};
  378.94 -
  378.95 -
  378.96 -/////////////////////////////////////////////////////////////////////////////
  378.97 -//
  378.98 -// CMsvSendErrorActions
  378.99 -//
 378.100 -/////////////////////////////////////////////////////////////////////////////
 378.101 -
 378.102 -/**
 378.103 -This class determines what action to take if an error occurs while the Server 
 378.104 -MTM is sending a message (or messages).
 378.105 -
 378.106 -It encapsulates an array of TMsvSendErrorAction objects, which it uses to 
 378.107 -determine the action to take for a particular error. If the error is not 
 378.108 -found in the array, then CMsvSendErrorActions uses its default 
 378.109 -TMsvSendErrorAction object. 
 378.110 -
 378.111 -@publishedAll
 378.112 -@released
 378.113 -*/
 378.114 -
 378.115 -class CMsvSendErrorActions : public CBase
 378.116 -	{
 378.117 -public:
 378.118 -	IMPORT_C static CMsvSendErrorActions* NewL();
 378.119 -	IMPORT_C static CMsvSendErrorActions* NewLC();	
 378.120 -	IMPORT_C ~CMsvSendErrorActions();
 378.121 -
 378.122 -	IMPORT_C void AddSendErrorActionL(const TMsvSendErrorAction& aErrorAction);
 378.123 -	IMPORT_C TInt RemoveSendErrorAction(const TInt aError);
 378.124 -	IMPORT_C TInt GetSendErrorAction(const TInt aError, TMsvSendErrorAction& aErrorAction) const;
 378.125 -	
 378.126 -	IMPORT_C void Reset();
 378.127 -
 378.128 -	IMPORT_C void RestoreFromResourceL(TResourceReader& aReader);
 378.129 -
 378.130 -	IMPORT_C void SetErrorsL(const CArrayFixFlat<TMsvSendErrorAction>& aErrors);
 378.131 -	IMPORT_C const CArrayFixFlat<TMsvSendErrorAction>& Errors() const;
 378.132 -
 378.133 -	IMPORT_C const TMsvSendErrorAction& Default() const;
 378.134 -	IMPORT_C void SetDefault(const TMsvSendErrorAction& aAction);
 378.135 -
 378.136 -private:
 378.137 -	CMsvSendErrorActions();
 378.138 -	void ConstructL();
 378.139 -	void RestoreErrorActionL(TResourceReader& aReader, TInt aActionCount, const TBool aDefault);
 378.140 -
 378.141 -
 378.142 -	TInt Find(const TInt aError, TInt& aIndex) const;
 378.143 -
 378.144 -	
 378.145 -	CArrayFixFlat<TMsvSendErrorAction>* iErrors;
 378.146 -	TMsvSendErrorAction iDefault;
 378.147 -	};
 378.148 -
 378.149 -#endif	// __MSVSENDERRORACTION_H__
   379.1 --- a/epoc32/include/msvstd.h	Tue Mar 16 16:12:26 2010 +0000
   379.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   379.3 @@ -1,616 +0,0 @@
   379.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   379.5 -// All rights reserved.
   379.6 -// This component and the accompanying materials are made available
   379.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   379.8 -// which accompanies this distribution, and is available
   379.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  379.10 -//
  379.11 -// Initial Contributors:
  379.12 -// Nokia Corporation - initial contribution.
  379.13 -//
  379.14 -// Contributors:
  379.15 -//
  379.16 -// Description:
  379.17 -//
  379.18 -
  379.19 -#ifndef __MSVSTD_H__
  379.20 -#define __MSVSTD_H__
  379.21 -
  379.22 - 
  379.23 -
  379.24 -
  379.25 -#include <e32base.h>
  379.26 -#include <s32file.h>
  379.27 -
  379.28 -/**
  379.29 -Specifies an entry in the Message Server index.
  379.30 -@publishedAll
  379.31 -@released
  379.32 -@see #KMsvNullIndexEntryId
  379.33 -@see #KMsvTempIndexEntryId
  379.34 -@see #KMsvRootIndexEntryId
  379.35 -@see #KMsvLocalServiceIndexEntryId
  379.36 -@see #KMsvGlobalInBoxIndexEntryId
  379.37 -@see #KMsvGlobalOutBoxIndexEntryId
  379.38 -@see #KMsvDraftEntryId
  379.39 -@see #KMsvSentEntryId
  379.40 -@see #KMsvDeletedEntryFolderEntryId
  379.41 -@see #KMsvUnknownServiceIndexEntryId
  379.42 -*/
  379.43 -typedef TInt32 TMsvId;
  379.44 -
  379.45 -/** Identifies an asynchronous messaging operation. 
  379.46 -
  379.47 -This ID is unique within a 
  379.48 -Message Server session. The ID of an operation can be obtained from CMsvOperation::Id(). */
  379.49 -typedef TInt32 TMsvOp;
  379.50 -
  379.51 -/** Supplies the standard values for the message priority index entry field. 
  379.52 -@publishedAll
  379.53 -@released
  379.54 -*/
  379.55 -enum TMsvPriority {	
  379.56 -	/** High message priority */
  379.57 -					EMsvHighPriority,
  379.58 -	/** Medium message priority */
  379.59 -					EMsvMediumPriority,
  379.60 -	/** Low message priority */
  379.61 -					EMsvLowPriority};	
  379.62 -
  379.63 -class CRichText;
  379.64 -class CMsvStore;
  379.65 -class CMsvEntry;
  379.66 -class CMsvMove;
  379.67 -class CMsvServer;
  379.68 -class CMsvServerEntry;
  379.69 -
  379.70 -_LIT(KMsvDefaultFolder, "\\Private\\1000484b\\Mail\\");
  379.71 -_LIT(KMsvDefaultIndexFile, "\\Private\\1000484b\\Mail\\Index");
  379.72 -_LIT(KMsvDefaultFolder2, "\\Private\\1000484b\\Mail2\\");
  379.73 -_LIT(KMsvDefaultIndexFile2, "\\Private\\1000484b\\Mail2\\Index");
  379.74 -_LIT(KMsvDirectoryExt, "_S\\");
  379.75 -_LIT(KMsvBinaryFolderExt, "_F\\");
  379.76 -
  379.77 -const TInt KFileNameFixedWidth=8;
  379.78 -const TInt KMaxSubjectSkipStringLength=8; // For subject based email thread sorting
  379.79 -_LIT(KSendAsRenderedImage, "Image");
  379.80 -
  379.81 -// Server name and moving semaphore
  379.82 -_LIT(KMsvServerName, "!MsvServer");
  379.83 -_LIT(KMsvMovingSemaphore, "MsvMovingSemaphore");
  379.84 -
  379.85 -_LIT_SECURE_ID(KMsvServerId, 0x1000484B);
  379.86 -
  379.87 -
  379.88 -/** Represents an entry in the Message Server index.
  379.89 -
  379.90 -MTM implementations and message client applications use it to access and manipulate 
  379.91 -index entry values. Note that a TMsvEntry is effectively a local cache of 
  379.92 -the index entry, and changes to it are not automatically written into the 
  379.93 -index. To commit changes to the Message Server, you need to call CMsvEntry::ChangeL() 
  379.94 -(or CMsvServerEntry::ChangeEntry()).
  379.95 -
  379.96 -To avoid repetition, the functions and data members are simply listed here, 
  379.97 -without detailed explanation of the fields. The public data members can be 
  379.98 -used to get and set the values of some index entry fields. 
  379.99 -@publishedAll
 379.100 -@released
 379.101 -*/
 379.102 -class TMsvEntry
 379.103 -	{
 379.104 -public: 
 379.105 -	IMPORT_C TMsvEntry(); 
 379.106 -	IMPORT_C TMsvEntry(const TMsvEntry& aEntry);
 379.107 -	IMPORT_C TMsvEntry& operator=(const TMsvEntry& aEntry);
 379.108 -	IMPORT_C TBool operator==(const TMsvEntry& aEntry) const;
 379.109 -	IMPORT_C TBool PermanentDataUnchanged(const TMsvEntry& aEntry) const;
 379.110 -	//
 379.111 -	IMPORT_C TMsvPriority Priority() const;
 379.112 -	IMPORT_C void SetPriority(TMsvPriority aPriority);
 379.113 -	// 
 379.114 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 379.115 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 379.116 -	// Read only for clients
 379.117 -	inline TMsvId Id() const;
 379.118 -	inline TMsvId Parent() const;
 379.119 -	inline TBool Owner() const;
 379.120 -	inline TBool Deleted() const;
 379.121 -	// Read & write for clients
 379.122 -	inline TBool Complete() const;
 379.123 -	inline void SetComplete(TBool aComplete);
 379.124 -	inline TBool New() const;
 379.125 -	inline void SetNew(TBool aNew);
 379.126 -	inline TBool Unread() const;
 379.127 -	inline void SetUnread(TBool aUnread);
 379.128 -	inline TBool Failed() const;
 379.129 -	inline void SetFailed(TBool aFailed);
 379.130 -	inline TBool Operation() const;
 379.131 -	inline void SetOperation(TBool aOperation);
 379.132 -	inline TBool Visible() const;
 379.133 -	inline void SetVisible(TBool aVisble);
 379.134 -	inline TBool MultipleRecipients() const;
 379.135 -	inline void SetMultipleRecipients(TBool aMultipleRecipient);
 379.136 -	inline TBool ReadOnly() const;
 379.137 -	inline void SetReadOnly(TBool aReadOnly);
 379.138 -	inline TBool StandardFolder() const;
 379.139 -	inline void SetStandardFolder(TBool aStanardFolder);
 379.140 -	inline TBool Attachment() const;
 379.141 -	inline void SetAttachment(TBool aAttachmentFlag);
 379.142 -	inline TBool Connected() const;
 379.143 -	inline void SetConnected(TBool aConnected);
 379.144 -	inline TBool InPreparation() const;
 379.145 -	inline void SetInPreparation(TBool aInPreparation);
 379.146 -	//
 379.147 -	inline TInt PcSyncCount() const;
 379.148 -	inline void DecPcSyncCount();
 379.149 -	inline void IncPcSyncCount();
 379.150 -	//
 379.151 -	inline TBool OffPeak() const;
 379.152 -	inline void SetOffPeak(TBool aOffPeak);
 379.153 -	inline TBool Scheduled() const;
 379.154 -	inline void SetScheduled(TBool aScheduled);
 379.155 -	inline TUint SendingState() const;
 379.156 -	inline void SetSendingState(TUint aSendingState);
 379.157 -	inline TBool PendingDelete() const;
 379.158 -	inline void SetPendingDelete(TBool aPendingDelete);
 379.159 -	
 379.160 -	/** This method sets bit 24 of iMtmData1, if you are using this bit elsewhere don't call this method.*/
 379.161 -	inline void SetDeleteProtected(TBool aDeleteProtected);
 379.162 -	inline TBool DeleteProtected() const;
 379.163 -	/** This method sets bit 31 of iMtmData1, if you are using this bit elsewhere don't call this method.*/
 379.164 -	inline void SetForwarded(TBool aForwarded);
 379.165 -	inline TBool Forwarded() const;
 379.166 -	/** This method sets bit 32 of iMtmData1, if you are using this bit elsewhere don't call this method.*/
 379.167 -	inline void SetLocallyDeleted(TBool aLocallyDeleted);
 379.168 -	inline TBool LocallyDeleted() const;
 379.169 -	
 379.170 -	IMPORT_C TBool PendingConditions() const;
 379.171 -	IMPORT_C void SetPendingConditions(TBool aPendingConditions);
 379.172 -	//
 379.173 -	IMPORT_C TInt32 MtmData1() const;
 379.174 -	IMPORT_C TInt32 MtmData2() const;
 379.175 -	IMPORT_C TInt32 MtmData3() const;
 379.176 -	
 379.177 -	/** 
 379.178 -	@internalTechnology
 379.179 -	*/
 379.180 -	IMPORT_C void SetMtmData1(TInt32 aMtmData);
 379.181 -	/** 
 379.182 -	@internalTechnology
 379.183 -	*/
 379.184 -	IMPORT_C void SetMtmData2(TInt32 aMtmData);
 379.185 -	/** 
 379.186 -	@internalTechnology
 379.187 -	*/
 379.188 -	IMPORT_C void SetMtmData3(TInt32 aMtmData);
 379.189 -	//
 379.190 -protected:
 379.191 -	// only the server will be able to set the following
 379.192 -	inline void SetId(TMsvId aId);
 379.193 -	inline void SetParent(TMsvId aId);
 379.194 -	inline void SetOwner(TBool aAttachment);
 379.195 -	inline void SetDeleted(TBool aDeletedFlag);
 379.196 -	//
 379.197 -	inline TUint PersistedFlags() const;
 379.198 -	inline TUint TemporaryFlags() const;
 379.199 -	//
 379.200 -private:
 379.201 -	void Copy(const TMsvEntry& aEntry);
 379.202 -	//
 379.203 -private:
 379.204 -	TMsvId iId;
 379.205 -	TMsvId iParentId;  
 379.206 -	TInt32 iData;         
 379.207 -	TInt32 iPcSyncCount;
 379.208 -	TInt32 iReserved; // reserved for future proofing
 379.209 -public: 
 379.210 -	/** Service ID. */
 379.211 -	TMsvId iServiceId; 
 379.212 -	/** Related folder ID. */
 379.213 -	TMsvId iRelatedId; 
 379.214 -	/** Entry type */
 379.215 -	TUid   iType;        
 379.216 -	/** MTM */
 379.217 -	TUid   iMtm;     
 379.218 -	/** Time */
 379.219 -	TTime  iDate;       
 379.220 -	/** Size */
 379.221 -	TInt32 iSize;      
 379.222 -	/** Error */
 379.223 -	TInt32 iError;
 379.224 -	/** BIO message type */
 379.225 -	TInt32 iBioType;
 379.226 -	// following three can be used by MTM
 379.227 -	/** MTM data 1: this can be used for any purpose by an MTM. This member must 
 379.228 -	only be accessed through the predefined set and get functions. If you must 
 379.229 -	write data to a bit that has no meaning in the predefined derived classes 
 379.230 -	then you must derive your own class from TMsvEntry.
 379.231 -	*/
 379.232 -	TInt32 iMtmData1; 
 379.233 -	/** MTM data 2: this can be used for any purpose by an MTM. This member must 
 379.234 -	only be accessed through the predefined set and get functions. If you must 
 379.235 -	write data to a bit that has no meaning in the predefined derived classes 
 379.236 -	then you must derive your own class from TMsvEntry.
 379.237 -	*/
 379.238 -	TInt32 iMtmData2; 
 379.239 -	/** MTM data 3: this can be used for any purpose by an MTM. This member must 
 379.240 -	only be accessed through the predefined set and get functions. If you must 
 379.241 -	write data to a bit that has no meaning in the predefined derived classes 
 379.242 -	then you must derive your own class from TMsvEntry.
 379.243 -	*/
 379.244 -	TInt32 iMtmData3; 
 379.245 -public:
 379.246 -	// The TPtrC must be kept at end of class to simplify comparisons and initialisation
 379.247 -	/** Description */
 379.248 -	TPtrC iDescription;
 379.249 -	/** Details */
 379.250 -	TPtrC iDetails;    
 379.251 -	//
 379.252 -	//
 379.253 -private:
 379.254 -	//
 379.255 -friend class CMsvEntry;
 379.256 -friend class CMsvServer;
 379.257 -friend class CMsvServerEntry;
 379.258 -friend class CMsvClientEntry;
 379.259 -friend class CMsvServerSession;
 379.260 -friend class TMsvServerEntry; 
 379.261 -friend class CMsvServerIndex;
 379.262 -friend class RMsvServerSession;
 379.263 -friend class CMsvLocalCopyOperation;
 379.264 -friend class CMsvMove;
 379.265 -friend class CMsvIndexRebuild;
 379.266 -friend class CMsvCopyEntry;
 379.267 -friend class CMsvDelete;
 379.268 -friend class CMsvIndexContext;
 379.269 -friend class CMsvEntryArray;
 379.270 -	//
 379.271 -private:
 379.272 -	//
 379.273 -enum {	KMsvEntryPriorityMask=			0x00000003,
 379.274 -		KMsvEntryHighPriority=			0x00000002,
 379.275 -		KMsvEntryMediumPriority=		0x00000001,
 379.276 -		KMsvEntryLowPriority=			0x00000000,
 379.277 -		KMsvEntryClearFlag=				0x00000000,
 379.278 -		KMsvOffPeakFlag=				0x00000004,
 379.279 -		KMsvEntryNotCompleteFlag=		0x00000008,
 379.280 -		KMsvEntryNewFlag=				0x00000010,
 379.281 -		KMsvEntryUnreadFlag=			0x00000020,
 379.282 -		KMsvEntryFailedFlag=			0x00000040,
 379.283 -		KMsvEntryOperationFlag=			0x00000080,
 379.284 -		KMsvEntryOwnerFlag=				0x00000100,
 379.285 -		KMsvEntryInvisibleFlag=			0x00000200,
 379.286 -		KMsvEntryMultipleRecipientFlag=	0x00000400,
 379.287 -		KMsvScheduledFlag=				0x00000800,
 379.288 -		KMsvEntryReadOnlyFlag=			0x00001000,
 379.289 -		KMsvEntryDeletedFlag=			0x00002000,
 379.290 -		KMsvEntryStandardFolderFlag=	0x00004000,
 379.291 -		KMsvEntryAttachmentFlag=		0x00008000,
 379.292 -		KMsvEntryInPreparationFlag=		0x00010000,
 379.293 -		KMsvSendingStateFlags=			0x001E0000, // Note: Sending state is shifted KMsvSendingStateShift places left
 379.294 -		KMsvEntryPersistedFlags=		0x00FFFFFF,
 379.295 -		KMsvEntryPendingConditionsFlag=	0x00800000,		
 379.296 -		KMsvEntryTemporaryFlags=		0xFF000000,
 379.297 -		KMsvEntryConnectedFlag=			0x01000000,
 379.298 -		KMsvEntryPendingDeleteFlag=		0x02000000};
 379.299 -	};
 379.300 -enum 
 379.301 -	{
 379.302 -		KMsvEntryDeleteProtected=		0x800000,
 379.303 -		KMsvEntryForwarded=				0x40000000,
 379.304 -		KMsvEntryLocallyDeleted=		0x80000000
 379.305 -	};
 379.306 -
 379.307 -const TUint KMsvSendingStateShift=0x11; // Places to shift sending state
 379.308 -
 379.309 -/** Defines sending state flags. 
 379.310 -@publishedAll
 379.311 -@released
 379.312 -*/
 379.313 -enum TMsvSendState
 379.314 -	{
 379.315 -	/** State unknown. */
 379.316 -	KMsvSendStateUnknown		= 0x0,
 379.317 -	/** Message will be sent on request. */
 379.318 -	KMsvSendStateUponRequest	= 0x1,
 379.319 -	/** Waiting to be sent.
 379.320 -	
 379.321 -	Messages in the outbox with this state can be sent automatically by the relevant 
 379.322 -	MTM once an appropriate connection is established. */
 379.323 -	KMsvSendStateWaiting		= 0x2,
 379.324 -	/** Sending in progress. */
 379.325 -	KMsvSendStateSending		= 0x3,
 379.326 -	/** Sending scheduled. */
 379.327 -	KMsvSendStateScheduled		= 0x4,
 379.328 -	/** Resending. */
 379.329 -	KMsvSendStateResend			= 0x5,
 379.330 -	/** Sending suspended. */
 379.331 -	KMsvSendStateSuspended		= 0x6,
 379.332 -	/** Sending failed. */
 379.333 -	KMsvSendStateFailed			= 0x7,
 379.334 -	/** Sending complete. */
 379.335 -	KMsvSendStateSent			= 0x8,
 379.336 -	/** Not applicable. */
 379.337 -	KMsvSendStateNotApplicable	= 0x9
 379.338 -	};
 379.339 -
 379.340 -const TUint KMsvSendStateLast = KMsvSendStateNotApplicable;
 379.341 -const TUint KMsvSendStateMax = 0x0F;
 379.342 -
 379.343 -/** Supplies values for bitmasks that allows the rapid setting or clearing of a 
 379.344 -number of TMsvEntry fields.
 379.345 -
 379.346 -The fields that can be manipulated are:
 379.347 -
 379.348 -1. PC synchronisation
 379.349 -
 379.350 -2. Visibility flag
 379.351 -
 379.352 -3. Read flag
 379.353 -
 379.354 -4. In-preparation flag
 379.355 -
 379.356 -5. Connected flag
 379.357 -
 379.358 -6. Pending deletion flag.
 379.359 -
 379.360 -7. New flag
 379.361 -
 379.362 -@see TMsvEntry
 379.363 -@see CMsvSession::ChangeAttributesL()
 379.364 -@see CMsvServerEntry::ChangeAttributes() 
 379.365 -@publishedAll
 379.366 -@released
 379.367 -*/
 379.368 -enum TMsvAttribute    { 
 379.369 -	/** PC synchronisation field. */
 379.370 -						KMsvPcSyncCountAttribute	=0x00000001,
 379.371 -	/** Visibility flag field. */
 379.372 -						KMsvVisibilityAttribute		=0x00000200,
 379.373 -	/** Read flag field. */
 379.374 -						KMsvUnreadAttribute			=0x00000020,
 379.375 -	/** In-preparation field. */
 379.376 -						KMsvInPreparationAttribute	=0x00010000,
 379.377 -	/** Connected flag field. */
 379.378 -						KMsvConnectedAttribute		=0x01000000,
 379.379 -	/** Pending deletion flag. */
 379.380 -						KMsvPendingDeleteAttribute	=0x02000000,
 379.381 -	/** New flag field. */
 379.382 -						KMsvNewAttribute			=0x00000010};
 379.383 -
 379.384 -/** Defines the sort order options for a TMsvSelectionOrdering object. Options 
 379.385 -are set through TMsvSelectionOrdering::SetSorting().
 379.386 -
 379.387 -@see TMsvSelectionOrdering 
 379.388 -@publishedAll
 379.389 -@released
 379.390 -*/
 379.391 -enum TMsvSorting 
 379.392 -	{
 379.393 -	/** Don't sort */
 379.394 -	EMsvSortByNone=0,				// Don't sort
 379.395 -	/** Date (earliest-latest) */
 379.396 -	EMsvSortByDate,					// Date (earliest-latest)
 379.397 -	/** Date (latest-earliest) */
 379.398 -	EMsvSortByDateReverse,			// Date (latest-earliest)
 379.399 -	/** Size (smallest-largest) */
 379.400 -	EMsvSortBySize,					// Size (smallest-largest)
 379.401 -	/** Size (largest-smallest) */
 379.402 -	EMsvSortBySizeReverse,			// Size (largest-smallest)
 379.403 -	/** To/From (A-Z folded) */
 379.404 -	EMsvSortByDetails,				// ToFrom (A-Z collated)
 379.405 -	/** To/From (Z-A folded) */
 379.406 -	EMsvSortByDetailsReverse,		// ToFrom (Z-A collated)
 379.407 -	/** Description (A-Z folded) */
 379.408 -	EMsvSortByDescription,			// Description (A-Z collated)
 379.409 -	/** Description (Z-A folded) */
 379.410 -	EMsvSortByDescriptionReverse,	// Description (Z-A collated)
 379.411 -	/** Sort by message ID. */
 379.412 -	EMsvSortById,			        // Id (lowest-highest)
 379.413 -	/** Sort in reverse order by message ID. */
 379.414 -	EMsvSortByIdReverse	            // Id (highest-lowest)
 379.415 -	};
 379.416 -
 379.417 -/** Defines grouping order options for a TMsvEntrySelection object. Grouping options 
 379.418 -can be combined in a bitmask and set through the TMsvEntrySelection constructor 
 379.419 -@publishedAll
 379.420 -@released
 379.421 -*/
 379.422 -enum TMsvGrouping
 379.423 -	{
 379.424 -	/** No grouping */
 379.425 -	KMsvNoGrouping=0,				// No grouping
 379.426 -	/** Group by entry type, in order, services, folders, messages, attachments */
 379.427 -	KMsvGroupByType=0x2,			// Folder, Message, Attachment
 379.428 -	/** Place standard folders first, in the order they were created */
 379.429 -	KMsvGroupByStandardFolders=0x6,	// Standrad folders first (must have sorting by type set aswell)
 379.430 -	/** Group by message priority, in order, high, medium, then low */
 379.431 -	KMsvGroupByPriority=0x8,		// High, Mediem, Low
 379.432 -	/** Group by MTM, either in the order set by CMsvEntry::SetMtmListL() or by MTM 
 379.433 -	Uid value */
 379.434 -	KMsvGroupByMtm=0x10,			// By increasing uid value
 379.435 -	};
 379.436 -
 379.437 -/** Defines the sorting and grouping rules used to prepare a selection of entries.
 379.438 - 
 379.439 -It is used in the interfaces of CMsvEntry and CMsvServerEntry to set the ordering 
 379.440 -of an entry's children.
 379.441 -
 379.442 -Firstly, the entries will be grouped, if the appropriate grouping option is 
 379.443 -set, by:
 379.444 -
 379.445 -1. Standard folders: any entries marked as standard folders are placed first, 
 379.446 -in the order they were created.
 379.447 -
 379.448 -2. Entry type: in the order services, folders, messages, attachments, unknown
 379.449 -
 379.450 -3. Priority: in the order high, medium, then low
 379.451 -
 379.452 -4. MTM: either in the MTM order set by CMsvEntry::SetMtmListL() or just in MTM 
 379.453 -Uid value
 379.454 -
 379.455 -Grouping options are simply Boolean flags that can be set on or off by functions 
 379.456 -of this class.
 379.457 -
 379.458 -Secondly, the order of entries within these groups is defined by a sorting 
 379.459 -order option.
 379.460 -
 379.461 -@see CMsvEntry
 379.462 -@see CMsvServerEntry 
 379.463 -@publishedAll
 379.464 -@released
 379.465 -*/
 379.466 -class TMsvSelectionOrdering
 379.467 -	{
 379.468 -public:
 379.469 -	IMPORT_C TMsvSelectionOrdering();
 379.470 -	IMPORT_C TMsvSelectionOrdering(TInt aGroupingKey, TMsvSorting aSorting, TBool aShowInvisible=EFalse);
 379.471 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 379.472 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 379.473 -	IMPORT_C TBool operator==(const TMsvSelectionOrdering& aOrdering) const;
 379.474 -	IMPORT_C void SetSubjectSkipString(const TDesC& aSubjectSkipString);
 379.475 -	IMPORT_C const TDesC& SubjectSkipString() const;
 379.476 -
 379.477 -	//
 379.478 -	inline TMsvSorting Sorting() const;
 379.479 -	inline TBool GroupByType() const;
 379.480 -	inline TBool GroupStandardFolders() const;
 379.481 -	inline TBool GroupByPriority() const;
 379.482 -	inline TBool GroupByMtm() const;
 379.483 -	inline TBool ShowInvisibleEntries() const;
 379.484 -	inline TBool GroupingOn() const;
 379.485 -	// 
 379.486 -	inline void SetGroupByType(TBool aFlag);
 379.487 -	inline void SetGroupStandardFolders(TBool aFlag);
 379.488 -	inline void SetGroupByPriority(TBool aFlag);
 379.489 -	inline void SetGroupByMtm(TBool aFlag);
 379.490 -	inline void SetShowInvisibleEntries(TBool aFlag);
 379.491 -	inline void SetSorting(TMsvSorting aSortType);
 379.492 -
 379.493 -	//
 379.494 -	//
 379.495 -private:
 379.496 -
 379.497 -	enum TMsvGroupingPrivate
 379.498 -		{
 379.499 -		KMsvInvisibleFlag=0x1,
 379.500 -		KMsvStandardFolders=0x4,
 379.501 -		KMsvAllGroupingFlags=0x1e
 379.502 -		};
 379.503 -	TInt iGrouping;
 379.504 -	TMsvSorting iSortType;
 379.505 - 	TBuf<KMaxSubjectSkipStringLength>	iSubjectSkipString;
 379.506 -	};
 379.507 -
 379.508 -const TInt KMsvInvisibleFlag=1;
 379.509 -
 379.510 -/** Encapsulates an array of entry IDs. 
 379.511 -
 379.512 -An object of this type is commonly passed to a function to indicate the set 
 379.513 -of entries on which the function should operate. The array base class (CArrayFixFlat<TMsvId>) 
 379.514 -provide methods to access, sort, and manipulate members of the array.
 379.515 - 
 379.516 -@publishedAll
 379.517 -@released
 379.518 -*/
 379.519 -class CMsvEntrySelection : public CArrayFixFlat<TMsvId>
 379.520 -	{ 
 379.521 -public: 
 379.522 -	IMPORT_C CMsvEntrySelection();
 379.523 -	IMPORT_C CMsvEntrySelection* CopyL()  const;
 379.524 -	IMPORT_C CMsvEntrySelection* CopyLC() const;
 379.525 -	IMPORT_C TInt Find(TMsvId aId) const;
 379.526 -	};
 379.527 -
 379.528 -/** Specifies a default service for a MTM.
 379.529 -
 379.530 -@publishedAll
 379.531 -@released
 379.532 -*/
 379.533 -class TMsvDefaultService
 379.534 -	{
 379.535 -public:
 379.536 -	/** MTM for which the default service is specified. */
 379.537 -	TUid iMtm;
 379.538 -	/** ID of the default service. */
 379.539 -	TMsvId iService;
 379.540 -	};
 379.541 -
 379.542 -
 379.543 -
 379.544 -/** Used to query the Message Server for entries that match the specification defined 
 379.545 -in the filter. 
 379.546 -
 379.547 -It allows a query to be performed on service, MTM, type and last change date. 
 379.548 -The filter also enables the specification of the order in which the entries 
 379.549 -are returned. 
 379.550 -
 379.551 -@see CMsvSession::GetChildIdsL() 
 379.552 -@publishedAll
 379.553 -@released
 379.554 -*/
 379.555 -class CMsvEntryFilter : public CBase
 379.556 -	{
 379.557 -public:
 379.558 -	IMPORT_C static CMsvEntryFilter* NewLC();
 379.559 -	IMPORT_C static CMsvEntryFilter* NewL();
 379.560 -	//
 379.561 -public:
 379.562 -	inline TMsvId Service() const;
 379.563 -	inline void SetService(TMsvId aServiceId);
 379.564 -	//
 379.565 -	inline TUid Mtm() const;
 379.566 -	inline void SetMtm(TUid aMtm);
 379.567 -	//
 379.568 -	inline TUid Type() const;
 379.569 -	inline void SetType(TUid aType);
 379.570 -	//
 379.571 -	inline const TTime& LastChangeDate() const;
 379.572 -	inline void SetLastChangeDate(const TTime& aLastChange);
 379.573 -	//
 379.574 -	inline const TMsvSelectionOrdering& Order() const;
 379.575 -	inline void SetOrder(const TMsvSelectionOrdering& aOrder);
 379.576 -	//
 379.577 -	inline TUid SortMtm() const;
 379.578 -	inline void SetSortMtm(TUid aSortMtm);
 379.579 -	//
 379.580 -private:
 379.581 -	CMsvEntryFilter();
 379.582 -	//
 379.583 -private:
 379.584 -	TMsvId iServiceId;
 379.585 -	TUid iMtm;
 379.586 -	TUid iType;
 379.587 -	TTime iLastChange;
 379.588 -	TMsvSelectionOrdering iOrdering;
 379.589 -	TUid iSortMtm;
 379.590 -	};
 379.591 -
 379.592 -// Error resolver leave codes -7000 to -7127
 379.593 -/** Defines error codes that relate to the Message Server.
 379.594 -
 379.595 -@see MMsvEntryObserver::EMsvContextInvalid 
 379.596 -@publishedAll
 379.597 -@released
 379.598 -*/
 379.599 -enum TMsvResolverLeave
 379.600 -	{
 379.601 -	/** There is no disk in the drive containing the Message Server index. */
 379.602 -	KMsvMediaUnavailable = -7000,
 379.603 -	/** There is a disk in the drive containing the Message Server index, but it is 
 379.604 -	the wrong one. */
 379.605 -	KMsvMediaIncorrect = -7001,
 379.606 -	/** A CMsvEntry context is no longer valid because the location of the Message Server's 
 379.607 -	index has changed.
 379.608 -	
 379.609 -	Such contexts will need refreshing by the client.
 379.610 -	
 379.611 -	@see MMsvEntryObserver::EMsvContextInvalid */
 379.612 -	KMsvMediaChanged = -7002,
 379.613 -	KMsvIndexBackup      = -7003,
 379.614 -	KMsvIndexRestore     = -7004
 379.615 -	};
 379.616 -
 379.617 -#include <msvstd.inl>
 379.618 -
 379.619 -#endif
   380.1 --- a/epoc32/include/msvstore.h	Tue Mar 16 16:12:26 2010 +0000
   380.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   380.3 @@ -1,246 +0,0 @@
   380.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   380.5 -// All rights reserved.
   380.6 -// This component and the accompanying materials are made available
   380.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   380.8 -// which accompanies this distribution, and is available
   380.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  380.10 -//
  380.11 -// Initial Contributors:
  380.12 -// Nokia Corporation - initial contribution.
  380.13 -//
  380.14 -// Contributors:
  380.15 -//
  380.16 -// Description:
  380.17 -//
  380.18 -
  380.19 -#if !defined(__MSVSTORE_H__)
  380.20 -#define __MSVSTORE_H__
  380.21 -
  380.22 -#include <e32base.h>
  380.23 -#include <s32file.h>
  380.24 -#include <msvstd.h>
  380.25 -
  380.26 -class CMsvCachedStore;
  380.27 -class CMsvBodyText;
  380.28 -class CMsvAttachment;
  380.29 -
  380.30 -//**********************************
  380.31 -// MMsvStoreObserver
  380.32 -//**********************************
  380.33 -//
  380.34 -// 
  380.35 -//
  380.36 -
  380.37 -class MMsvStoreObserver
  380.38 -/** Observer interface to get events relating to a message store.
  380.39 -
  380.40 -This is used in the derivation of CMsvServerEntry and CMsvEntry.
  380.41 -
  380.42 -@publishedAll
  380.43 -@released
  380.44 -*/
  380.45 -	{
  380.46 -public:
  380.47 -/**
  380.48 -Defines message store event types.
  380.49 -
  380.50 -@publishedAll
  380.51 -@released
  380.52 -*/
  380.53 -	enum TMsvStoreEvent {	/** A read-only message store was closed. */
  380.54 -							EMsvReadStoreClosed,	// read only CMsvStore closed
  380.55 -							/** An editable message store was closed. */
  380.56 -							EMsvEditStoreClosed		// edit only CMsvStore closed
  380.57 -							};	
  380.58 -public:
  380.59 -	/** Receives a message store event.
  380.60 -
  380.61 -	@param aEvent Event type
  380.62 -	@param aId ID of the message to which the event relates
  380.63 -	*/
  380.64 -	virtual void HandleStoreEvent(TMsvStoreEvent aEvent, TMsvId aId)=0;
  380.65 -	};
  380.66 -
  380.67 -
  380.68 -//**********************************
  380.69 -// CMsvStore
  380.70 -//**********************************
  380.71 -//
  380.72 -// The entry structure that the client uses
  380.73 -//
  380.74 -
  380.75 -/*
  380.76 -Uid which are not needed to be known outside CMsvStore
  380.77 -@internalComponent
  380.78 -@deprecated
  380.79 -*/
  380.80 -const TUid KMsvEntryRichTextBody={0x10000F70};
  380.81 -
  380.82 -
  380.83 -/**
  380.84 -UId for the 16-bit chunk storage mechanism.
  380.85 -@internalTechnology
  380.86 -@prototype
  380.87 -*/
  380.88 -const TUid KMsvPlainBodyText16={0x10000F90};
  380.89 -
  380.90 -/**
  380.91 -UId for the 8-bit chunk storage mechanism.
  380.92 -@internalTechnology
  380.93 -@prototype
  380.94 -*/
  380.95 -const TUid KMsvPlainBodyText8={0x10000F80};
  380.96 -
  380.97 -class MMsvAttachmentManager;
  380.98 -class MMsvAttachmentManagerSync;
  380.99 -class CMsvAttachmentManager;
 380.100 -class MMsvStoreManager;
 380.101 -class CMsvPlainBodyText;
 380.102 -class CMsvStore : public CBase
 380.103 -/** Provides an interface over the message store that is associated with a message 
 380.104 -entry. It is similar to the dictionary store in supporting the concept of 
 380.105 -streams referenced by UID. 
 380.106 -
 380.107 -This class is intended for use by MTM implementations. Message client applications 
 380.108 -access the store through the higher-level functions provided by Client-side 
 380.109 -and User Interface MTMs.
 380.110 -
 380.111 -A CMsvStore object is created by a CMsvEntry object and passed to a client 
 380.112 -process. The client process then becomes responsible for deleting the CMsvStore 
 380.113 -object. The store can be opened in two modes, read or edit, and only one CMsvStore 
 380.114 -object can have edit access to a store. 
 380.115 -
 380.116 -CMsvStore provides functions for general manipulation of the store, and for 
 380.117 -accessing the standard body text stream. RMsvReadStream and RMsvWriteStream 
 380.118 -must be used to access other streams. 
 380.119 -@publishedAll
 380.120 -@released
 380.121 -*/
 380.122 -	{
 380.123 -public:
 380.124 -	IMPORT_C ~CMsvStore();
 380.125 -	//
 380.126 -	IMPORT_C void StoreBodyTextL(const CRichText& aRichTextBody);
 380.127 -	
 380.128 -	IMPORT_C void RestoreBodyTextL(CRichText& aRichTextBody);
 380.129 -	IMPORT_C void RestoreBodyTextL(CRichText& aRichTextBody, TUint aCharsetOverride);
 380.130 -	
 380.131 -	IMPORT_C void DeleteBodyTextL();
 380.132 -	IMPORT_C TBool HasBodyTextL() const;
 380.133 -	//
 380.134 -	IMPORT_C void DeleteL(); // deletes the message store
 380.135 -	IMPORT_C TInt SizeL(); // the size of the store
 380.136 -	//
 380.137 -	// The following give the Dictionary store interface
 380.138 -	IMPORT_C TBool IsNullL() const;
 380.139 -	IMPORT_C TBool IsPresentL(TUid aUid) const;
 380.140 -	IMPORT_C void Remove(TUid aUid);
 380.141 -	IMPORT_C void RemoveL(TUid aUid);
 380.142 -	IMPORT_C void Revert();
 380.143 -	IMPORT_C void RevertL();
 380.144 -	IMPORT_C TInt Commit(); 
 380.145 -	IMPORT_C void CommitL();
 380.146 -	
 380.147 -	// Attachment Management
 380.148 -	IMPORT_C MMsvAttachmentManager& AttachmentManagerL();
 380.149 -	IMPORT_C MMsvAttachmentManagerSync& AttachmentManagerExtensionsL();
 380.150 -	
 380.151 -	// APIs to get the CMsvPlainBodyText interface.
 380.152 -	IMPORT_C CMsvPlainBodyText* InitialisePlainBodyTextForWriteL(TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId);
 380.153 -	IMPORT_C CMsvPlainBodyText* InitialisePlainBodyTextForReadL(TInt aChunkLength);
 380.154 -
 380.155 -	/**
 380.156 -	@internalTechnology
 380.157 -	@released
 380.158 -	*/
 380.159 -	IMPORT_C void CreateShareProtectedAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo);
 380.160 -	void Restore8BitBodyTextL(RFileReadStream& aInputStream);
 380.161 -	
 380.162 -protected:
 380.163 -
 380.164 -	IMPORT_C CMsvStore(MMsvStoreObserver& aObserver, RFs& aFs, TMsvId aId, MMsvStoreManager& aStoreManager);
 380.165 -	IMPORT_C static CMsvStore* OpenForReadL(MMsvStoreObserver& aObserver, RFs& aFs, MMsvStoreManager& aStoreManager, TMsvId aId);
 380.166 -	IMPORT_C static CMsvStore* OpenForWriteL(MMsvStoreObserver& aObserver, RFs& aFs, MMsvStoreManager& aStoreManager, TMsvId aId);
 380.167 -
 380.168 -private:
 380.169 -	
 380.170 -	
 380.171 -	void ConstructL(TBool aReadOnly);
 380.172 -	
 380.173 -	//Methods to handle plain bodytext.
 380.174 -	void RestorePlainBodyTextL(CRichText& aRichText, TUint aCharsetOverride);
 380.175 -	void GetRichTextFrom8BitL(RFile& aBodyTextFile, CRichText& aRichText, TUint aCharSet, TUint aDefaultCharSet);
 380.176 -	void GetRichTextFrom16BitL(RFile& aBodyTextFile, CRichText& aRichText);
 380.177 -	void Convert8BitToRichTextL(RFile& aBodyTextFile, CRichText& aRichText, TUint aCharSet, TUint aDefaultCharSet);
 380.178 -
 380.179 -	void Lock();
 380.180 -	inline const CMsvCachedStore& Store() const;
 380.181 -	inline CMsvCachedStore& Store();
 380.182 -private:
 380.183 -	enum {EMsvStoreUnlocked, EMsvStoreLocked} iLockStatus;
 380.184 -
 380.185 -	RFs& iFs;
 380.186 -	MMsvStoreObserver& iObserver;
 380.187 -	
 380.188 -
 380.189 -	const TMsvId iId;
 380.190 -	CMsvCachedStore* iStore;
 380.191 -	TBool iConstructed;
 380.192 -	CMsvBodyText* iBodyText;
 380.193 -	
 380.194 -	MMsvStoreManager& iStoreManager;
 380.195 -	CMsvAttachmentManager* iAttachmentManager;
 380.196 -
 380.197 -friend class CMsvEntry;
 380.198 -friend class CMsvServerEntry;
 380.199 -friend class RMsvReadStream;
 380.200 -friend class RMsvWriteStream;
 380.201 -	};
 380.202 -
 380.203 -
 380.204 -class RMsvReadStream : public RReadStream
 380.205 -/** Accesses the streams in a message store with read access. 
 380.206 -
 380.207 -Before it is used, 
 380.208 -a CMsvStore must have been opened on the message store with read or read/write 
 380.209 -access.
 380.210 -
 380.211 -This class is intended for use by MTM implementations to store MTM-specific 
 380.212 -information. Message client applications access the store through the higher-level 
 380.213 -functions provided by Client-side and User Interface MTMs.
 380.214 -
 380.215 -Most of its functionality is provided by the base class RReadStream. 
 380.216 -@publishedAll
 380.217 -@released
 380.218 -*/
 380.219 -	{
 380.220 -public:
 380.221 -	IMPORT_C void OpenL(const CMsvStore& aMsvStore, TUid aUid);
 380.222 -	IMPORT_C void OpenLC(const CMsvStore& aMsvStore,TUid aUid);
 380.223 -	void OpenLC(CMsvCachedStore& aStore,TUid aUid);
 380.224 -	};
 380.225 -
 380.226 -
 380.227 -class RMsvWriteStream : public RWriteStream
 380.228 -/** Accesses the streams in a message store with write access, or creates new streams. 
 380.229 -Before it is used, a CMsvStore must have been opened on the message store 
 380.230 -with write access.
 380.231 -
 380.232 -This class is intended for use by MTM implementations to store MTM-specific 
 380.233 -information. Message client applications access the store through the higher-level 
 380.234 -functions provided by Client-side and User Interface MTMs.
 380.235 -
 380.236 -Most of its functionality is provided by the base class RWriteStream. 
 380.237 -@publishedAll
 380.238 -@released
 380.239 -*/
 380.240 -	{
 380.241 -public:
 380.242 -	IMPORT_C void AssignLC(CMsvStore &aMsvStore, TUid aUid);
 380.243 -	IMPORT_C void AssignL(CMsvStore &aMsvStore, TUid aUid);
 380.244 -	void AssignLC(CMsvCachedStore &aStore, TUid aUid);
 380.245 -	};
 380.246 -
 380.247 -
 380.248 -
 380.249 -#endif
   381.1 --- a/epoc32/include/msvsysagentaction.h	Tue Mar 16 16:12:26 2010 +0000
   381.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   381.3 @@ -1,128 +0,0 @@
   381.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   381.5 -// All rights reserved.
   381.6 -// This component and the accompanying materials are made available
   381.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   381.8 -// which accompanies this distribution, and is available
   381.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  381.10 -//
  381.11 -// Initial Contributors:
  381.12 -// Nokia Corporation - initial contribution.
  381.13 -//
  381.14 -// Contributors:
  381.15 -//
  381.16 -// Description:
  381.17 -// MsvSysAgentCondAction.H
  381.18 -// 
  381.19 -//
  381.20 -
  381.21 -#ifndef __MSVSYSAGENTCONDACTION_H__
  381.22 -#define	__MSVSYSAGENTCONDACTION_H__
  381.23 -
  381.24 - 
  381.25 -
  381.26 -
  381.27 -#include <msvsenderroraction.h>
  381.28 -
  381.29 -/////////////////////////////////////////////////////////////////////////////
  381.30 -//
  381.31 -//	System Agent-related Class Declarations
  381.32 -//
  381.33 -/////////////////////////////////////////////////////////////////////////////
  381.34 -
  381.35 -
  381.36 -
  381.37 -/** 
  381.38 -Defines a condition which a Publish and Subscribe Uid must satisfy.
  381.39 -
  381.40 -@see RProperty
  381.41 -
  381.42 -@publishedAll
  381.43 -@released
  381.44 -*/
  381.45 -class TMsvCondition
  381.46 -	{
  381.47 -public:
  381.48 -/** 
  381.49 -An enumeration defining the type of test to be made against a Publish 
  381.50 -and Subscribe property. 
  381.51 -*/
  381.52 -	enum TMsvSchSendConditionType
  381.53 -		{
  381.54 -		/** Tests that a value is equal to a state variable value. */
  381.55 -		EMsvSchSendEquals,		
  381.56 -		/** Tests that a value is unequal to a state variable value. */
  381.57 -		EMsvSchSendNotEquals,		
  381.58 -		/** Tests that a value is greater than a state variable value. */
  381.59 -		EMsvSchSendGreaterThan,	
  381.60 -		/** Tests that a value is less than a state variable value. */
  381.61 -		EMsvSchSendLessThan		
  381.62 -		};
  381.63 -		
  381.64 -public:
  381.65 -	/** second UID of the process which set the condition*/
  381.66 -	TUid iVariable;
  381.67 -	/** Integer state of corresponding P&S variable to be tested against*/
  381.68 -	TInt iState;
  381.69 -	/** type of test to be performed */
  381.70 -	TMsvSchSendConditionType iType;
  381.71 -	};
  381.72 -	
  381.73 -
  381.74 -/**
  381.75 -Schedule Send condition must be satisfied before a message sending attempt.
  381.76 -
  381.77 -@publishedAll
  381.78 -@released
  381.79 -*/ 
  381.80 -
  381.81 -class TMsvSysAgentConditionAction
  381.82 -	{
  381.83 -public:
  381.84 -	IMPORT_C TMsvSysAgentConditionAction();
  381.85 -
  381.86 -
  381.87 -	/** Condition to meet. */
  381.88 -	TMsvCondition iCondition;
  381.89 -
  381.90 -	/** Error action to use. */
  381.91 -	TMsvSendErrorAction iErrorAction;
  381.92 -
  381.93 -	/** Default error action. */
  381.94 -	TBool iUseDefaultSysAgentAction;
  381.95 -
  381.96 -private:
  381.97 -	};
  381.98 -
  381.99 -
 381.100 -
 381.101 -/**
 381.102 -Defines an array of  schedule send conditions that must be satisfied before a message sending attempt.
 381.103 -
 381.104 -@see TMsvSysAgentConditionAction
 381.105 -
 381.106 -@publishedAll
 381.107 -@released
 381.108 -*/ 
 381.109 -
 381.110 -class CMsvSysAgentActions : public CArrayFixFlat<TMsvSysAgentConditionAction>
 381.111 -	{
 381.112 -public:
 381.113 -	IMPORT_C CMsvSysAgentActions();
 381.114 -	IMPORT_C ~CMsvSysAgentActions();
 381.115 -
 381.116 -
 381.117 -	IMPORT_C TBool ConditionsMetL(TMsvSendErrorAction& aErrorAction);
 381.118 -
 381.119 -	/** Default send error action. */
 381.120 -	TMsvSendErrorAction iDefault;
 381.121 -
 381.122 -private:
 381.123 -
 381.124 -
 381.125 -	void GetConditionVariablesL(CArrayFix<TUid>& aUids) const;
 381.126 -	TBool CheckStates(const CArrayFix<TInt>& aStates, TMsvSendErrorAction& aErrorAction) const;
 381.127 -	TBool ConditionOK(const TMsvSysAgentConditionAction& aCondAction, const TInt aState) const;
 381.128 -	
 381.129 -	};
 381.130 -
 381.131 -#endif	// __MSVSYSAGENTCONDACTION_H__
   382.1 --- a/epoc32/include/msvuids.h	Tue Mar 16 16:12:26 2010 +0000
   382.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   382.3 @@ -1,90 +0,0 @@
   382.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   382.5 -// All rights reserved.
   382.6 -// This component and the accompanying materials are made available
   382.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   382.8 -// which accompanies this distribution, and is available
   382.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  382.10 -//
  382.11 -// Initial Contributors:
  382.12 -// Nokia Corporation - initial contribution.
  382.13 -//
  382.14 -// Contributors:
  382.15 -//
  382.16 -// Description:
  382.17 -//
  382.18 -
  382.19 -
  382.20 -
  382.21 -/**
  382.22 - @file
  382.23 - @publishedAll
  382.24 - @released
  382.25 -*/
  382.26 -#if !defined(__MSVUIDS_H__)
  382.27 -#define __MSVUIDS_H__
  382.28 -#if !defined(__E32BASE_H__)
  382.29 -#include <e32base.h>
  382.30 -#endif
  382.31 -#if !defined(__MSVSTD_HRH__)
  382.32 -#include <msvstd.hrh>
  382.33 -#endif
  382.34 -
  382.35 -
  382.36 -/**
  382.37 -* Entry type Uids
  382.38 -* @publishedAll
  382.39 -* @released
  382.40 -*/
  382.41 -const TUid KUidMsvNullEntry={0};
  382.42 -/**
  382.43 -* Root entry of entire index 
  382.44 -* @publishedAll
  382.45 -* @released
  382.46 -*/
  382.47 -const TUid KUidMsvRootEntry={KUidMsvRootEntryValue};
  382.48 -// Service 
  382.49 -/**
  382.50 -* @publishedAll
  382.51 -* @released
  382.52 -*/
  382.53 -const TUid KUidMsvServiceEntry={KUidMsvServiceEntryValue};
  382.54 -// Folder 
  382.55 -/**
  382.56 -* @publishedAll
  382.57 -* @released
  382.58 -*/
  382.59 -const TUid KUidMsvFolderEntry={KUidMsvFolderEntryValue};
  382.60 -// Message
  382.61 -/**
  382.62 -* @publishedAll
  382.63 -* @released
  382.64 -*/
  382.65 -const TUid KUidMsvMessageEntry={KUidMsvMessageEntryValue};
  382.66 -// Entry 
  382.67 -/**
  382.68 -* @publishedAll
  382.69 -* @released
  382.70 -*/
  382.71 -const TUid KUidMsvAttachmentEntry={KUidMsvAttachmentEntryValue};
  382.72 -
  382.73 -// Local Service Uid
  382.74 -// An operation that affects only local entries. 
  382.75 -/**
  382.76 -* @publishedAll
  382.77 -* @released
  382.78 -*/
  382.79 -const TUid KUidMsvLocalServiceMtm={KUidMsvLocalServiceMtmValue};
  382.80 -//An operation performed by the Message Server. 
  382.81 -/**
  382.82 -* @publishedAll
  382.83 -* @released
  382.84 -*/
  382.85 -const TUid KUidMsvServerMtm={KUidMsvServerMtmValue};
  382.86 -// Key for Publish & Subscribe Disk Space Monitor  
  382.87 -/**
  382.88 -* @publishedAll
  382.89 -* @released
  382.90 -*/
  382.91 -const TInt KUidPSDiskSpaceMonitorKeyType={0x2001FC30};
  382.92 -
  382.93 -#endif
   383.1 --- a/epoc32/include/mtclbase.h	Tue Mar 16 16:12:26 2010 +0000
   383.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   383.3 @@ -1,550 +0,0 @@
   383.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   383.5 -// All rights reserved.
   383.6 -// This component and the accompanying materials are made available
   383.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   383.8 -// which accompanies this distribution, and is available
   383.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  383.10 -//
  383.11 -// Initial Contributors:
  383.12 -// Nokia Corporation - initial contribution.
  383.13 -//
  383.14 -// Contributors:
  383.15 -//
  383.16 -// Description:
  383.17 -//
  383.18 -
  383.19 -
  383.20 -#ifndef __MTCLBASE_H__
  383.21 -#define __MTCLBASE_H__
  383.22 -
  383.23 -#include <e32base.h>		
  383.24 -#include <badesca.h>
  383.25 -#include <msvapi.h>
  383.26 -
  383.27 -#include <cmsvattachment.h>
  383.28 -#include <msvstd.hrh>
  383.29 -#include <cmsvrecipientlist.h>
  383.30 -
  383.31 -/**
  383.32 -UId for 8-bit/16-bit Character set mechanism.
  383.33 -@internalTechnology
  383.34 -@prototype
  383.35 -*/
  383.36 -const TInt KUIDCharacterSet = 999; 
  383.37 -
  383.38 -class CMsvAttachmentWaiter;
  383.39 -
  383.40 -
  383.41 -/** Specifies one or more parts of a message in message-forwarding, message-reply, 
  383.42 -and message-validation functions.
  383.43 -
  383.44 -Standard message parts are defined by the constants that can be added (or 
  383.45 -bitwise-or'ed) together to specify multiple parts. Some message parts may 
  383.46 -not be meaningful for some MTMs.
  383.47 -
  383.48 -Specifies find attributes which modify the behaviour of the search text utility 
  383.49 -provided by the Global Find API. This does not apply to v5.1 nor to v5. */
  383.50 -typedef TUint TMsvPartList;
  383.51 -
  383.52 -class CParaFormatLayer;
  383.53 -class CCharFormatLayer;
  383.54 -
  383.55 -
  383.56 -/** Specifies function IDs for standard MTM functions.
  383.57 -
  383.58 -The function IDs are specified such that they do not coincide
  383.59 -with the free area defined for MTM commands.
  383.60 -
  383.61 -If MTMs also offer their own equivalents of these functions,
  383.62 -they may implement these function IDs by considering the
  383.63 -two IDs to be the same in their client MTM.
  383.64 -
  383.65 -MTMs that support SendAs must support SendMessage.
  383.66 -*/
  383.67 -enum TMtmStandardAsyncCommands
  383.68 -	{
  383.69 -	KMTMStandardFunctionsSendMessage = KMtmFirstFreeStandardMtmFunctionId
  383.70 -	};
  383.71 -
  383.72 -
  383.73 -////////////////////////////////////////////////////////
  383.74 -// Prototype of expected factory function
  383.75 -
  383.76 -typedef CBaseMtm* MtmFactoryFunctionL(CRegisteredMtmDll&, CMsvSession&);
  383.77 -
  383.78 -
  383.79 -/***********************************************
  383.80 -***********************************************/
  383.81 -class CBaseMtm : public CBase, public MMsvEntryObserver
  383.82 -/** Provides a high-level interface for accessing and manipulating a Message Server 
  383.83 -entry. 
  383.84 -
  383.85 -Message client applications use the class to access such functionality polymorphically. 
  383.86 -MTM implementers implement a derived class to provide such functionality for 
  383.87 -their message protocol. 
  383.88 -
  383.89 -The following are some significant groups of functions:
  383.90 -
  383.91 -Context functions: the SetCurrentEntryL() and SwitchCurrentEntryL() functions 
  383.92 -change the context - the entry on which later actions are performed. After 
  383.93 -creating a new Client-side MTM object, a message client application should 
  383.94 -set an initial context before using other functions. Note that: any changes 
  383.95 -made to an existing context are not automatically saved: the message client 
  383.96 -application should ensure this itself by calling SaveMessageL(); no message 
  383.97 -data for the new context is retrieved from the Message Server, to retrieve 
  383.98 -entry data, call LoadMessageL() after setting the context; calling Body() 
  383.99 -immediately after setting the context returns an empty CRichText object: this 
 383.100 -is because the private cache of context body text that the base class maintains 
 383.101 -is re-initialised to an empty value. MTM implementers should note that the 
 383.102 -virtual ContextEntrySwitched() is called from these functions to allow derived 
 383.103 -classes to also clear any caches of MTM-specific entry data.
 383.104 -
 383.105 -Store and restore entry data functions: the changes that a message client 
 383.106 -application makes to a message context through Client-side MTM functions, 
 383.107 -such as altering the body text obtained through Body(), are, for efficiency, 
 383.108 -cached in memory by a Client-side MTM. The message store and restore functions 
 383.109 -are concerned with transferring data between that cache and committed storage. 
 383.110 -Note that, unlike message contexts, message client applications are not expected 
 383.111 -to manipulate directly service contexts. Instead, the corresponding User Interface 
 383.112 -MTM will provide dialogs to allow the user to alter service settings, and 
 383.113 -call Client-side MTM functions to handle their retrieval and storage. Symbian 
 383.114 -OS v5 expects the base class functions to handle storage and retrieval for 
 383.115 -both message and service contexts, and their implementations must detect what 
 383.116 -the context is, and act accordingly. Post-v5, the API is clarified by restricting 
 383.117 -the base class functions to handle message contexts only. To handle service 
 383.118 -contexts, a Client-side MTM must define its own functions for the User Interface 
 383.119 -MTM to call.
 383.120 -
 383.121 -Store and restore body text functions: the base class maintains a private 
 383.122 -CRichText object cache to store the body text for the current context. This 
 383.123 -can be accessed for reading and writing by message client applications through 
 383.124 -Body(). StoreBodyL() and RestoreBodyL() encapsulate for implementers of derived 
 383.125 -classes the retrieval and storage of this CRichText object to a CMsvStore.
 383.126 -
 383.127 -Address list functions: the format and storage of message addresses is MTM-specific. 
 383.128 -AddresseeList(), AddAddresseeL(), and RemoveAddressee() are designed to allow 
 383.129 -clients with no MTM-specific knowledge to access address information in a 
 383.130 -generic way. The base class has a protected data member iAddresseeList, an 
 383.131 -array of descriptors, which these functions manipulate. Implementations should 
 383.132 -save the address information to the appropriate place in the message store 
 383.133 -when the message is stored.
 383.134 -
 383.135 -MTM-specific functionality: MTM components can offer protocol-specific functionality 
 383.136 -not provided by base class interface functions. MTM components define IDs 
 383.137 -that correspond to each protocol-specific operation offered, and implement 
 383.138 -the InvokeSyncFunctionL() and InvokeAsyncFunctionL() functions to allow clients 
 383.139 -to access these operations by passing in the appropriate ID. Two functions 
 383.140 -are provided to allow the MTM component to offer both synchronous and asynchronous 
 383.141 -functionality. Message client applications can dynamically add user-interface 
 383.142 -features for these operations using CBaseMtmUiData::MtmSpecificFunctions(). 
 383.143 -MTM developers should document the IDs if they wish to make the operations 
 383.144 -available to clients. 
 383.145 -@publishedAll
 383.146 -@released
 383.147 -*/
 383.148 -	{
 383.149 -public:
 383.150 -	IMPORT_C ~CBaseMtm();
 383.151 -	IMPORT_C TUid Type() const;
 383.152 -	//
 383.153 -	// context related
 383.154 -	IMPORT_C void SetCurrentEntryL(CMsvEntry* aEntry);
 383.155 -	IMPORT_C void SwitchCurrentEntryL(TMsvId aId);
 383.156 -	IMPORT_C CMsvEntry& Entry() const;
 383.157 -	IMPORT_C TBool HasContext() const;
 383.158 -	//
 383.159 -	//
 383.160 -	/** Commits cached changes to the storage controlled by the Message Server.
 383.161 -	
 383.162 -	It can only be called on message contexts. It should be called in the following circumstances:
 383.163 -	
 383.164 -	1. to preserve changes when the context is changed, or when the Client-side MTM 
 383.165 -	object is deleted 
 383.166 -	
 383.167 -	2. to enable other parts of the Messaging to access the updated entry, as required, 
 383.168 -	for example, before sending a message 
 383.169 -	
 383.170 -	Requirements:
 383.171 -	
 383.172 -	An implementation must update the store and index entry relating to the message 
 383.173 -	context. Typically, the message store should be opened for editing with CMsvEntry::EditStoreL(). 
 383.174 -	It should be updated as follows:
 383.175 -	
 383.176 -	1. body text: call StoreBodyL() to update the store's body text stream
 383.177 -	
 383.178 -	2. address list: update the appropriate MTM-specific area of the store from the 
 383.179 -	data in iAddresseeList
 383.180 -	
 383.181 -	3. subject: if supported, update the appropriate MTM-specific area of the store 
 383.182 -	from the private cache set by SetSubjectL()
 383.183 -	
 383.184 -	Changes can then be committed to the store with CMsvStore::CommitL().
 383.185 -	
 383.186 -	The index entry should also be updated to reflect changes. Possible fields 
 383.187 -	that may need updating include: Description (for subject changes); Details 
 383.188 -	and Multiple Recipients (for recipient changes); and Size. Index entry changes 
 383.189 -	are committed using CMsvEntry::ChangeL().
 383.190 -	
 383.191 -	The function should panic for non-message contexts. */
 383.192 -	virtual void SaveMessageL()=0; 
 383.193 -	/** Loads the cache with the message data for the current context.
 383.194 -	
 383.195 -	It can only be called on message contexts. 
 383.196 -	
 383.197 -	It is typically used after the context has been set with SetCurrentEntryL() 
 383.198 -	or SwitchCurrentEntryL(). CBaseMtm functions to manipulate the entry can only 
 383.199 -	be called after this function has been called.
 383.200 -	
 383.201 -	Requirements:
 383.202 -	
 383.203 -	An implementation must restore the store and index entry relating to the message 
 383.204 -	context. Typically, the message store should be opened for reading with CMsvEntry::ReadStoreL(). 
 383.205 -	It should be then be read to set the following:
 383.206 -	
 383.207 -	1. body text: call RestoreBodyL() to update the cached body text
 383.208 -	
 383.209 -	2. address list: read the appropriate MTM-specific area of the store to update 
 383.210 -	iAddresseeList
 383.211 -	
 383.212 -	3. subject: if supported, read the appropriate MTM-specific area of the store 
 383.213 -	and update the cache with SetSubjectL()
 383.214 -	
 383.215 -	The function should panic for non-message contexts. */
 383.216 -	virtual void LoadMessageL()=0;
 383.217 -	/** Validates the current message context. 
 383.218 -	
 383.219 -	The precise validation performed is specific to the MTM, but, typically, checks 
 383.220 -	that the specified message parts are well-formed. 
 383.221 -	
 383.222 -	Requirements:
 383.223 -	
 383.224 -	Implementation of this function is highly protocol-specific. A minimum step 
 383.225 -	is to check that the current context is a message.
 383.226 -	
 383.227 -	@param aPartList Indicates the message parts for which validation is requested 
 383.228 -	
 383.229 -	@return If valid, KErrNone If invalid, identifies the invalid part(s). The 
 383.230 -	error value is the bitmask of the TMsvPartList IDs for each invalid part */
 383.231 -	virtual TMsvPartList ValidateMessage(TMsvPartList aPartList)=0;
 383.232 -	/** Searches the specified message part(s) for the plain-text version of the text 
 383.233 -	to be found. 
 383.234 -	
 383.235 -	If the specified part list indicates a part that is not supported, or is not 
 383.236 -	present in the current message, the function behaves as if the specified part 
 383.237 -	exists but does not contain the required text.
 383.238 -	
 383.239 -	Requirements:
 383.240 -	
 383.241 -	The parts of the entry for which searching is allowed is implementation specific. 
 383.242 -	If no searching is supported, always return 0.
 383.243 -	
 383.244 -	@param aTextToFind The plain-text version of the text to be found. 
 383.245 -	@param aPartList Indicates the message parts which should be searched. 
 383.246 -	@return If the text was not found, or searching is unsupported, 0. If the text 
 383.247 -	was found, a bitmask of the TMsvPartList IDs for each part in which the text 
 383.248 -	was present. */
 383.249 -	virtual TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList)=0;
 383.250 -	//
 383.251 -	//
 383.252 -	/** Creates a reply message to the current message context. 
 383.253 -	
 383.254 -	Some MTMs may support inclusion of elements, specified by aPartlist, from 
 383.255 -	the original message in the reply. The parent for the new entry is specified 
 383.256 -	in aDestination. 
 383.257 -	
 383.258 -	The returned CMsvOperation object completes when creating the reply is complete. 
 383.259 -	On completion, the context is set to the reply message.
 383.260 -	
 383.261 -	Requirements:
 383.262 -	
 383.263 -	A typical implementation for this function would include the following steps: 
 383.264 -	
 383.265 -	1. create a new message in the specified destination by calling CMsvEntry::CreateL()
 383.266 -	
 383.267 -	2. set the entry index values as appropriate
 383.268 -	
 383.269 -	3. set the properties of the message as required. The normal minimum is to set 
 383.270 -	the address to the sender of the original message. An implementation may also 
 383.271 -	follow the options specified in aPartlist to set other properties, for example, 
 383.272 -	to include the original message text.
 383.273 -	
 383.274 -	4. set the context to the reply 
 383.275 -	
 383.276 -	5. return a CMsvOperation-derived object to provide asynchronous control and 
 383.277 -	monitoring of the operation
 383.278 -	
 383.279 -	If message replies are not supported, implementations should leave with KErrNotSupported.
 383.280 -	
 383.281 -	The implementation of this function may be similar to that of ForwardL(), 
 383.282 -	allowing opportunities for code sharing.
 383.283 -	
 383.284 -	@param aDestination The entry to which to assign the reply 
 383.285 -	@param aPartlist Defines the parts that are to be copied from the original 
 383.286 -	message into the reply 
 383.287 -	@param aCompletionStatus The request status to be completed when the operation 
 383.288 -	has finished 
 383.289 -	@leave KErrNotSupported The Client-side MTM does not support reply operations 
 383.290 -	@leave Other leave codes Dependent on implementation 
 383.291 -	@return If successful, this is an asynchronously completing reply operation. 
 383.292 -	If failed, this is a completed operation, with status set to the relevant 
 383.293 -	error code. */
 383.294 -	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus)=0;
 383.295 -	/** Creates a forwarded message from the current message context. 
 383.296 -	
 383.297 -	Some MTMs may 
 383.298 -	support inclusion of elements, specified by aPartlist, from the original message 
 383.299 -	in the forwarded message. The parent for the new entry is specified in aDestination. 
 383.300 -	The returned CMsvOperation object completes when editing the forwarded message 
 383.301 -	is complete. On completion, the context is set to the forwarded message.
 383.302 -	
 383.303 -	Requirements:
 383.304 -	
 383.305 -	A typical implementation for this function would include the following steps: 
 383.306 -	
 383.307 -	1. create a new message in the specified destination by calling CMsvEntry::CreateL()
 383.308 -	
 383.309 -	2. set the entry index values as appropriate
 383.310 -	
 383.311 -	3. set message content as required. The normal minimum is to include the text 
 383.312 -	of the original message. An implementation may also follow the options specified 
 383.313 -	in aPartlist to include other properties of the original message.
 383.314 -	
 383.315 -	4. set the context to the reply 
 383.316 -	
 383.317 -	5. return a CMsvOperation-derived object to provide asynchronous control and 
 383.318 -	monitoring of the operation
 383.319 -	
 383.320 -	If forwarded messages are not supported, implementations should leave with 
 383.321 -	KErrNotSupported.
 383.322 -	
 383.323 -	The implementation of this function may be similar to that of ReplyL(), allowing 
 383.324 -	opportunities for code sharing.
 383.325 -	
 383.326 -	@param aDestination The entry to which to assign the forwarded message 
 383.327 -	@param aPartList Defines the parts that are to be copied from the original 
 383.328 -	message into the forwarded message 
 383.329 -	@param aCompletionStatus The request status to be completed when the operation 
 383.330 -	has finished 
 383.331 -	@leave KErrNotSupported The Client-side MTM does not support creation of forwarded 
 383.332 -	messages 
 383.333 -	@leave Other leave codes Dependent on implementation 
 383.334 -	@return If successful, this is an asynchronously completing forward message 
 383.335 -	operation. If failed, this is a completed operation, with status set to the 
 383.336 -	relevant error code. */
 383.337 -	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus)=0;
 383.338 -	//
 383.339 -	// addresssee list (used by objects with no MTM knowledge)
 383.340 -	IMPORT_C const CMsvRecipientList& AddresseeList() const;
 383.341 -
 383.342 -	/** Adds an addressee for the current context.
 383.343 -	
 383.344 -	Addresses are not validated by checking their format by this function. Usually 
 383.345 -	that is performed by calling ValidateMessage().
 383.346 -	
 383.347 -	Requirements:
 383.348 -	
 383.349 -	Implementations should append the address to the object's address cache 
 383.350 -	in the protected iAddresseeList data member. Some implementations may also 
 383.351 -	wish to store addresses in an internal data structure appropriate for the 
 383.352 -	protocol, for example, a class holding message header information. 
 383.353 -	
 383.354 -	@param aRealAddress String representing an address to be added to the list 
 383.355 -	for the current message 
 383.356 -	@leave KErrNotSupported The message already has the maximum number of addressees 
 383.357 -	
 383.358 -	@leave Other leave codes Dependent on implementation */
 383.359 -	virtual void AddAddresseeL(const TDesC& aRealAddress)=0;
 383.360 -	/** Adds an addressee for the current context, and enables the client to specify 
 383.361 -	an alias, which may be useful for some protocols. For example, for fax, if 
 383.362 -	the address is the fax number, the alias could supply the recipient's name. 
 383.363 -	
 383.364 -	Addresses are not validated by checking their format by this function. Usually 
 383.365 -	that is performed by calling ValidateMessage().
 383.366 -	
 383.367 -	Requirements:
 383.368 -	
 383.369 -	Implementations should append the address to the object's address cache 
 383.370 -	in the protected iAddresseeList data member. Some implementations may also 
 383.371 -	wish to store addresses in an internal data structure appropriate for the 
 383.372 -	protocol, for example, a class holding message header information. 
 383.373 -	
 383.374 -	@param aRealAddress String representing an address to be added to the list 
 383.375 -	for the current message 
 383.376 -	@param aAlias Alias information 
 383.377 -	@leave KErrNotSupported The message already has the maximum number of addressees 
 383.378 -	
 383.379 -	@leave Other leave codes Dependent on implementation */
 383.380 -	virtual void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias)=0;
 383.381 -	
 383.382 -	IMPORT_C virtual void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress);
 383.383 -	IMPORT_C virtual void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress, const TDesC& aAlias);
 383.384 -	
 383.385 -	/** Removes an address from the current address list. The address is specified 
 383.386 -	by a zero-based index into the address list. If the index is not known, applications 
 383.387 -	can use AddresseeList() to retrieve the entire list to find the item.
 383.388 -	
 383.389 -	Requirements:
 383.390 -	
 383.391 -	Implementations should call iAddresseeList->Delete(aIndex) to remove the address 
 383.392 -	from in the address list protected data member.
 383.393 -	
 383.394 -	@param aIndex Index of address to be removed */
 383.395 -	virtual void RemoveAddressee(TInt aIndex)=0;
 383.396 -	//
 383.397 -	// standard data accessor/mutators
 383.398 -	IMPORT_C CRichText& Body();
 383.399 -	IMPORT_C const CRichText& Body() const;
 383.400 -	IMPORT_C virtual void SetSubjectL(const TDesC& aSubject); // default leaves with KErrNotSupported
 383.401 -	IMPORT_C virtual const TPtrC SubjectL() const; // default leaves with KErrNotSupported
 383.402 -	//
 383.403 -	// RTTI functions
 383.404 -	IMPORT_C virtual TInt QueryCapability(TUid aCapability, TInt& aResponse); // default returns KErrNotSupported
 383.405 -	/** Invokes synchronous protocol-specific operations. For asynchronous operations, 
 383.406 -	a similar function, InvokeAsyncFunctionL(), is available.
 383.407 -	
 383.408 -	aSelection and aParameter allow data to be passed to the operation. 
 383.409 -	
 383.410 -	Requirements:
 383.411 -	
 383.412 -	For functionality that requires message transport access, such as making a 
 383.413 -	connection, the implementation should pass the request onto the corresponding 
 383.414 -	Server-side MTM. This is done through calling CMsvSession::TransferCommandL(). 
 383.415 -	Implementations may also provide protocol-specific functions themselves if 
 383.416 -	this is useful.
 383.417 -	
 383.418 -	@param aFunctionId ID of the requested operation 
 383.419 -	@param aSelection Selection of message entries. This is used if the operation 
 383.420 -	requires message entries to work on. 
 383.421 -	@param aParameter Buffer containing input and output parameters. The format 
 383.422 -	of this is specific to the operation. 
 383.423 -	@leave KErrNotSupported aFunctionId is not a recognised operation ID 
 383.424 -	@leave Other leave codes Dependent on implementation */
 383.425 -	virtual void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter)=0;
 383.426 -	/** Invokes asynchronous protocol-specific operations. For synchronous operations, 
 383.427 -	a similar function, InvokeSyncFunctionL(), is available.
 383.428 -	
 383.429 -	aSelection and aParameter allow data to be passed to the operation. The TRequestStatus 
 383.430 -	and CMsvOperation objects are used as normal to control and monitor the operation.
 383.431 -	
 383.432 -	Requirements:
 383.433 -	
 383.434 -	For functionality that requires message transport access, such as making a 
 383.435 -	connection, the implementation should pass the request onto the corresponding 
 383.436 -	Server-side MTM. This is done through calling CMsvSession::TransferCommandL(). 
 383.437 -	Implementations may also provide protocol-specific functions themselves if 
 383.438 -	this is useful.
 383.439 -	
 383.440 -	InvokeAsyncFunctionL() should return a CMsvOperation-derived object to provide 
 383.441 -	asynchronous control and monitoring of the operation. If CMsvSession::TransferCommandL() 
 383.442 -	is called, this should be the CMsvOperation object returned by that function.
 383.443 -	
 383.444 -	@param aFunctionId ID of the requested operation 
 383.445 -	@param aSelection Selection of message entries. This is used if the operation 
 383.446 -	requires message entries to work on. 
 383.447 -	@param aParameter Buffer containing input and output parameters. The format 
 383.448 -	of this is specific to the operation. 
 383.449 -	@param aCompletionStatus The request status to be completed when the operation 
 383.450 -	has finished 
 383.451 -	@leave KErrNotSupported aFunctionId is not a recognised operation ID 
 383.452 -	@leave Other leave codes Dependent on implementation 
 383.453 -	@return If successful, this is an asynchronously completing operation. If failed, 
 383.454 -	this is a completed operation, with status set to the relevant error code. */
 383.455 -	virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus)=0;
 383.456 -	//
 383.457 -	IMPORT_C CMsvSession& Session();
 383.458 -
 383.459 -	// Attachment functions to support the SendAs API
 383.460 -	virtual inline void Filler1() {};
 383.461 -	virtual inline void Filler2() {};
 383.462 -	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 383.463 -	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 383.464 -	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 383.465 -	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
 383.466 -	IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 383.467 -	IMPORT_C virtual void CancelAttachmentOperation();
 383.468 -
 383.469 -	IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
 383.470 -
 383.471 -	// BIO functions to support the SendAs API
 383.472 -	// Entry().Entry().iBioType will be set by SendAs if this function does not leave.
 383.473 -	// The default implementation in CBaseMtm is to do nothing.
 383.474 -	IMPORT_C virtual void BioTypeChangedL(TUid aBioTypeUid);
 383.475 -	
 383.476 - 	IMPORT_C virtual TMsvId DefaultServiceL() const;
 383.477 - 	IMPORT_C virtual void RemoveDefaultServiceL();
 383.478 - 	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 383.479 - 	
 383.480 - 	//For setting the character encoding value, options are 7-bit, 8-bit and 16-bit Unicode.
 383.481 - 	IMPORT_C TInt SetMessageCharacterSet(TUint aCharSet);
 383.482 -
 383.483 -protected:
 383.484 -	IMPORT_C CBaseMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aSession);
 383.485 -	//
 383.486 -	IMPORT_C void StoreBodyL(CMsvStore& aStore);
 383.487 -	IMPORT_C void RestoreBodyL(CMsvStore& aStore);
 383.488 -	//
 383.489 -	/** Called by the base class functions SwitchCurrentEntryL() and SetCurrentEntryL() 
 383.490 -	when the context is changed to another entry. 
 383.491 -	
 383.492 -	Client applications do not use this function. It is relevant only to implementers 
 383.493 -	of derived classes.
 383.494 -	
 383.495 -	Requirements: 
 383.496 -	
 383.497 -	An implementation should clear:
 383.498 -	
 383.499 -	1. address data stored in iAddresseeList
 383.500 -	
 383.501 -	2. any caches of MTM-specific entry data relating to a previous context. For 
 383.502 -	example, if the implementation has a private buffer storing a message subject, 
 383.503 -	for access through Subject(), this buffer should be cleared. */
 383.504 -	virtual void ContextEntrySwitched()=0; // called after the context of this instance has been changed to another entry
 383.505 -	//
 383.506 -	IMPORT_C void HandleEntryEventL(TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 383.507 -
 383.508 -	// Method used for extension: called by non virtual methods that need 
 383.509 -	// to have a polymorphic behaviour.
 383.510 -	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 383.511 -	
 383.512 -	// From CBase
 383.513 -	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
 383.514 -
 383.515 -
 383.516 -private:
 383.517 -	void DeleteEntry();
 383.518 -	
 383.519 -	void AddFilePathAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, CMsvAttachment::TMsvAttachmentType aType, TRequestStatus& aStatus);
 383.520 -
 383.521 -protected:
 383.522 -	/** The current context. */
 383.523 -	CMsvEntry*		iMsvEntry;
 383.524 -	/** The address list for the current context. */
 383.525 -	CMsvRecipientList* iAddresseeList;
 383.526 -
 383.527 -	/** Paragraph formatting applied to the CRichText object for the body text, as 
 383.528 -	returned by Body(). This is set to an empty CParaFormatLayer instance whenever 
 383.529 -	the context is set.
 383.530 -	
 383.531 -	Implementations can modify this if they wish to apply particular formatting 
 383.532 -	to body text. */
 383.533 -	CParaFormatLayer* iParaFormatLayer;
 383.534 -	/** Character formatting applied to the CRichText object for the body text, as 
 383.535 -	returned by Body().
 383.536 -	
 383.537 -	Implementations can modify this if they wish to apply particular formatting 
 383.538 -	to body text. */
 383.539 -	CCharFormatLayer* iCharFormatLayer;
 383.540 -	
 383.541 -private:
 383.542 -	TMsvId	iEntryId;
 383.543 -	CRichText* iRichTextBody;
 383.544 -	CRegisteredMtmDll& iRegisteredMtmDll;
 383.545 -	CMsvSession& iSession;
 383.546 -	CMsvAttachmentWaiter* iAttachmentWaiter;
 383.547 -
 383.548 -	// Extra data member to allow for future extensions
 383.549 -	TAny* iExtensionData;
 383.550 -	};
 383.551 -
 383.552 -
 383.553 -#endif // __MTCLBASE_H__
   384.1 --- a/epoc32/include/mtclreg.h	Tue Mar 16 16:12:26 2010 +0000
   384.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   384.3 @@ -1,77 +0,0 @@
   384.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   384.5 -// All rights reserved.
   384.6 -// This component and the accompanying materials are made available
   384.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   384.8 -// which accompanies this distribution, and is available
   384.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  384.10 -//
  384.11 -// Initial Contributors:
  384.12 -// Nokia Corporation - initial contribution.
  384.13 -//
  384.14 -// Contributors:
  384.15 -//
  384.16 -// Description:
  384.17 -//
  384.18 -
  384.19 -
  384.20 -#if !defined __MTCLREG_H__
  384.21 -#define __MTCLREG_H__
  384.22 -
  384.23 -#include <e32base.h>		// CActive, TFileName etc.
  384.24 -#include <msvreg.h>
  384.25 -#include <msvapi.h>			// MMsvSessionObserver
  384.26 -
  384.27 -// CObserverRegistry mixes in session notification API
  384.28 -// this allows run-time update of the registries on the client-side.
  384.29 -// the server registry should inherit from CMtmDllRegistry
  384.30 -class CObserverRegistry : public CMtmDllRegistry, public MMsvSessionObserver
  384.31 -/** Base class for client, UI and UI data MTM registries.
  384.32 -
  384.33 -It implements the session observer interface to update the registry information 
  384.34 -when MTM groups are installed or uninstalled.
  384.35 -@publishedAll
  384.36 -@released
  384.37 -*/
  384.38 -	{
  384.39 -public:
  384.40 -	IMPORT_C virtual void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
  384.41 -	IMPORT_C ~CObserverRegistry();
  384.42 -
  384.43 -protected:
  384.44 -	IMPORT_C CObserverRegistry(CMsvSession& aMsvSession,TUid aDllTypeUid,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  384.45 -	IMPORT_C void ConstructL();
  384.46 -
  384.47 -protected:
  384.48 -	CMsvSession& iMsvSession;
  384.49 -	TBool iIsAdded;
  384.50 -	};
  384.51 -
  384.52 -// Client side MTM registry
  384.53 -class CClientMtmRegistry : public CObserverRegistry
  384.54 -/** Accesses the Client-side MTM registry. 
  384.55 -
  384.56 -This registry holds details of the all the Client-side MTMs currently available 
  384.57 -on the system. Message client applications use this class to get a CBaseMtm-derived 
  384.58 -object by which to access Client-side MTM functionality.
  384.59 -
  384.60 -Note that the base class CMtmDllRegistry provides functions for discovering 
  384.61 -what MTMs are present in the registry.
  384.62 - 
  384.63 -@publishedAll
  384.64 -@released
  384.65 -*/
  384.66 -	{
  384.67 -public:
  384.68 -	IMPORT_C static CClientMtmRegistry* NewL(CMsvSession& aMsvSession, TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=TTimeIntervalMicroSeconds32(30000000));
  384.69 -	IMPORT_C ~CClientMtmRegistry();
  384.70 -	IMPORT_C CBaseMtm* NewMtmL(TUid aMtmTypeUid);
  384.71 -	//
  384.72 -protected:
  384.73 -	CClientMtmRegistry(CMsvSession& aMsvSession,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  384.74 -	void ConstructL();
  384.75 -	//
  384.76 -private:
  384.77 -	CBaseMtm* DoNewMtmL(const RLibrary& aLib, CRegisteredMtmDll& aReg) const;
  384.78 -	};
  384.79 -
  384.80 -#endif // __MTCLREG_H__
   385.1 --- a/epoc32/include/mtmdef.h	Tue Mar 16 16:12:26 2010 +0000
   385.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   385.3 @@ -1,69 +0,0 @@
   385.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   385.5 -// All rights reserved.
   385.6 -// This component and the accompanying materials are made available
   385.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   385.8 -// which accompanies this distribution, and is available
   385.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  385.10 -//
  385.11 -// Initial Contributors:
  385.12 -// Nokia Corporation - initial contribution.
  385.13 -//
  385.14 -// Contributors:
  385.15 -//
  385.16 -// Description:
  385.17 -//
  385.18 -
  385.19 -
  385.20 -
  385.21 -/**
  385.22 - @file
  385.23 - @publishedAll
  385.24 - @released
  385.25 -*/
  385.26 -
  385.27 -#if !defined(__MTMDEF_H__)
  385.28 -#define __MTMDEF_H__
  385.29 -#if !defined(__MTCLBASE_H__)
  385.30 -#include <mtclbase.h>
  385.31 -#endif
  385.32 -#if !defined(__MTMDEF_HRH__)
  385.33 -#include <mtmdef.hrh>
  385.34 -#endif
  385.35 -
  385.36 -// no matching message parts
  385.37 -
  385.38 -const TMsvPartList KMsvMessagePartNone			= 0x00000000;
  385.39 -// message parts
  385.40 -
  385.41 -// Message body 
  385.42 -const TMsvPartList KMsvMessagePartBody			= 0x00000001;
  385.43 -
  385.44 -// Message recipients 
  385.45 -
  385.46 -const TMsvPartList KMsvMessagePartRecipient		= 0x00000002;
  385.47 -
  385.48 -// Message originator 
  385.49 -
  385.50 -const TMsvPartList KMsvMessagePartOriginator	= 0x00000004;
  385.51 -// Message description 
  385.52 -const TMsvPartList KMsvMessagePartDescription	= 0x00000008;
  385.53 -// Message date 
  385.54 -
  385.55 -const TMsvPartList KMsvMessagePartDate			= 0x00000010;
  385.56 -// Message attachments 
  385.57 -
  385.58 -const TMsvPartList KMsvMessagePartAttachments	= 0x00000020;
  385.59 -
  385.60 -// find attributes
  385.61 -//Flag to specify case-sensitive search. 
  385.62 -
  385.63 -const TMsvPartList KMsvFindCaseSensitive		= 0x80000000;
  385.64 -// Flag to specify search for whole words. 
  385.65 -
  385.66 -const TMsvPartList KMsvFindWholeWord			= 0x40000000;
  385.67 -
  385.68 -// Maximum length (in characters) of find text. 
  385.69 -
  385.70 -const TInt KMsvMaxFindTextLength = 500;
  385.71 -
  385.72 -#endif
   386.1 --- a/epoc32/include/mtmuibas.h	Tue Mar 16 16:12:26 2010 +0000
   386.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   386.3 @@ -1,527 +0,0 @@
   386.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   386.5 -// All rights reserved.
   386.6 -// This component and the accompanying materials are made available
   386.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   386.8 -// which accompanies this distribution, and is available
   386.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  386.10 -//
  386.11 -// Initial Contributors:
  386.12 -// Nokia Corporation - initial contribution.
  386.13 -//
  386.14 -// Contributors:
  386.15 -//
  386.16 -// Description:
  386.17 -//
  386.18 -
  386.19 -#if !defined(__MTMUIBAS_H__)
  386.20 -#define __MTMUIBAS_H__
  386.21 -
  386.22 -#if !defined(__MSVSTD_H__)
  386.23 -#include <msvstd.h>
  386.24 -#endif
  386.25 -#if !defined(__MTCLBASE_H__)
  386.26 -#include <mtclbase.h>
  386.27 -#endif
  386.28 -
  386.29 -// Forward references
  386.30 -class CMsvSession;
  386.31 -class CMsvOperation;
  386.32 -class CCoeEnv;
  386.33 -
  386.34 -///////////////////////////////////
  386.35 -// CBaseMtmUi - MTMUi base API   //
  386.36 -///////////////////////////////////
  386.37 -class CBaseMtmUi : public CBase
  386.38 -/** Provides MTM-specific user interaction, such as editing, viewing, deleting, 
  386.39 -and copying of message entries. 
  386.40 -
  386.41 -Message client applications use the class to access such functionality polymorphically. 
  386.42 -MTM implementers implement a derived class to provide such functionality for 
  386.43 -their message protocol.
  386.44 -
  386.45 -The base class is largely an interface definition: it implements little important 
  386.46 -functionality itself. For implementers, this documentation defines conditions 
  386.47 -that any implementation must fulfil, plus suggested semantics for behaviour. 
  386.48 -This still leaves many decisions in the hands of the implementer. A key design 
  386.49 -time activity is to define how the particular characteristics of the implemented 
  386.50 -protocol are best mapped to the interface. As this class is concerned with 
  386.51 -user interfaces, implementers should be sensitive to the look and feel of 
  386.52 -the target phone.
  386.53 -
  386.54 -Many functions are required to return an instance of a CMsvOperation-derived 
  386.55 -class to provide asynchronous control and monitoring to the caller of the 
  386.56 -operation being performed. 
  386.57 -
  386.58 -The following are some significant groups of functions:
  386.59 -
  386.60 -Entry manipulation functions: OpenL(), CloseL(), EditL(), and ViewL() are 
  386.61 -all available in two overloaded versions. The first version operates on the 
  386.62 -current context. The second version operates upon groups of entries specified 
  386.63 -by a CMsvEntrySelection argument. All entries must be in same folder and all 
  386.64 -of the correct MTM type. The context may change after calling these functions. 
  386.65 -Concrete User Interface MTMs can legally ignore any of the entries within 
  386.66 -the selection - many may, for example, simply open the first entry.
  386.67 -
  386.68 -Copying and moving functions: the CopyToL(), CopyFromL(), MoveToL(), and MoveFromL() 
  386.69 -functions are concerned with copying and moving entries to and from remote 
  386.70 -servers. MTMs can implement these functions to provide any user interaction 
  386.71 -needed before copying or moving can proceed, such as dialogs to confirm settings; 
  386.72 -and, any protocol-specific setup steps that can be done at this stage: for 
  386.73 -example, a fax MTM could render messages into the required image format.
  386.74 -
  386.75 -Progress information functions: DisplayProgressSummary() and GetProgress() 
  386.76 -convert MTM-specific progress information about some asynchronous operation, 
  386.77 -such as message sending, to a human-readable form. The progress information 
  386.78 -to pass into these functions is, in general, obtained from an on-going CMsvOperation 
  386.79 -by calling CMsvOperation::Progress(). The nature of any information provided 
  386.80 -is MTM-specific. 
  386.81 -
  386.82 -MTM-specific UI functions: MTM components can offer protocol-specific functionality 
  386.83 -not provided by base class interface functions. MTM components define IDs 
  386.84 -that correspond to each protocol-specific operation offered, and implement 
  386.85 -the InvokeSyncFunctionL() and InvokeAsyncFunctionL() functions to allow clients 
  386.86 -to access these operations by passing in the appropriate ID. Two functions 
  386.87 -are provided to allow the MTM component to offer both synchronous and asynchronous 
  386.88 -functionality. Message client applications can dynamically add user-interface 
  386.89 -features for these operations using CBaseMtmUiData::MtmSpecificFunctions(). 
  386.90 -MTM developers should document the IDs if they wish to make the operations 
  386.91 -available to clients. 
  386.92 -@publishedAll
  386.93 -@released
  386.94 -*/
  386.95 -	{
  386.96 -public:
  386.97 -	//  --- enums ---
  386.98 -	/** Progress information buffer length. */
  386.99 -	enum {
 386.100 -	/** Defines the maximum buffer length used in GetProgress() to hold progress information. */
 386.101 -	EProgressStringMaxLen=255};
 386.102 -	//
 386.103 -	// --- Set up functionality ---
 386.104 -	IMPORT_C void SetPreferences(TUint aFlags);
 386.105 -	IMPORT_C TUint Preferences() const;
 386.106 -	//
 386.107 -	// --- Destruction ---
 386.108 -	IMPORT_C virtual ~CBaseMtmUi();
 386.109 -	//
 386.110 -	// --- Accessor functions ---
 386.111 -	IMPORT_C TUid Type() const;
 386.112 -	IMPORT_C CBaseMtm& BaseMtm() const;
 386.113 -	//
 386.114 -	// --- Functions NOT dependent on the current context ---
 386.115 -	IMPORT_C virtual CMsvOperation* CreateL(const TMsvEntry& aEntry, CMsvEntry& aParent, TRequestStatus& aStatus);
 386.116 -	//
 386.117 -	// --- Functions dependent on the current context ---
 386.118 -	/** Opens an entry. 
 386.119 -	
 386.120 -	The behaviour that this implies is dependent on the current context:
 386.121 -	
 386.122 -	1. for message contexts, OpenL() is the equivalent of EditL(), or for read-only 
 386.123 -	messages, ViewL(). Whether opening of remote messages is allowed is MTM-specific.
 386.124 -	
 386.125 -	2. for service contexts, the function may initiate a connection to obtain the 
 386.126 -	service contents from the server, completing asynchronously
 386.127 -	
 386.128 -	3. for remote folder contexts, dependent on implementation, the function may 
 386.129 -	initiate a connection to obtain the folder contents from the server, completing 
 386.130 -	asynchronously
 386.131 -	
 386.132 -	The returned CMsvOperation object completes when opening is complete.
 386.133 -	
 386.134 -	Requirements:
 386.135 -	
 386.136 -	If opening entries is not supported, implementations should leave with KErrNotSupported. 
 386.137 -	Otherwise, implementations should:
 386.138 -	
 386.139 -	1. check aEntry.iType.iUid to ensure that they can open the requested type of 
 386.140 -	entry and leave with code KErrNotSupported if they cannot
 386.141 -	
 386.142 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.143 -	monitoring of the operation
 386.144 -	
 386.145 -	3. for remote messages, typically, copy the messages to the Inbox
 386.146 -	
 386.147 -	@param aStatus The request status to be completed when the operation has finished 
 386.148 -	
 386.149 -	@leave KErrNotSupported The User Interface MTM does not support open operations, 
 386.150 -	or opening is inappropriate to the current context 
 386.151 -	@leave Other Dependent on implementation 
 386.152 -	@return If successful, this is an asynchronously completing open operation. 
 386.153 -	If failed, this is a completed operation, with status set to the relevant 
 386.154 -	error code. */
 386.155 -	virtual CMsvOperation* OpenL(TRequestStatus& aStatus) = 0; 
 386.156 -	/** Closes an entry. The behaviour that this implies is dependent on the current 
 386.157 -	context:
 386.158 -	
 386.159 -	1. for message contexts, this usually closes any launched editors or viewers
 386.160 -	
 386.161 -	2. for folder contexts, leaves with KErrNotSupported
 386.162 -	
 386.163 -	3. for service contexts, causes closure of a connection to a server
 386.164 -	
 386.165 -	The returned CMsvOperation object completes when closing is complete.
 386.166 -	
 386.167 -	Requirements:
 386.168 -	
 386.169 -	Implementations should:
 386.170 -	
 386.171 -	1. check aEntry.iType.iUid to ensure that they can close the requested type of 
 386.172 -	entry and leave with code KErrNotSupported if they cannot
 386.173 -	
 386.174 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.175 -	monitoring of the operation
 386.176 -	
 386.177 -	@param aStatus The request status to be completed when the operation has finished 
 386.178 -	
 386.179 -	@leave KErrNotSupported The User Interface MTM does not support close operations, 
 386.180 -	or closing is inappropriate to the current context 
 386.181 -	@leave Other Dependent on implementation 
 386.182 -	@return If successful, this is an asynchronously completing close operation. 
 386.183 -	If failed, this is a completed operation, with status set to the relevant 
 386.184 -	error code. */
 386.185 -	virtual CMsvOperation* CloseL(TRequestStatus& aStatus) = 0;
 386.186 -	/** Edits an entry. 
 386.187 -	
 386.188 -	The behaviour that this implies is dependent on the current 
 386.189 -	context:
 386.190 -	
 386.191 -	1. for message contexts, this usually launches the appropriate message editor, 
 386.192 -	or returns status KErrReadOnly if the message is not editable
 386.193 -	
 386.194 -	2. for remote folder contexts, launches a settings dialog, for example to rename 
 386.195 -	the folder, completing asynchronously
 386.196 -	
 386.197 -	3. for service contexts, launches a service settings dialog, completing asynchronously
 386.198 -	
 386.199 -	The returned CMsvOperation object completes when editing is complete.
 386.200 -	
 386.201 -	Requirements:
 386.202 -	
 386.203 -	Implementations should:
 386.204 -	
 386.205 -	1. check aEntry.iType.iUid to ensure that they can edit the requested type of 
 386.206 -	entry and leave with code KErrNotSupported if they cannot
 386.207 -	
 386.208 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.209 -	monitoring of the operation
 386.210 -	
 386.211 -	3. for remote messages, typically, copy the messages to the Inbox
 386.212 -	
 386.213 -	4. follow the leave protocols described in Leave considerations below
 386.214 -	
 386.215 -	@param aStatus The request status to be completed when the operation has finished 
 386.216 -	@leave KErrNotSupported The User Interface MTM does not support edit operations, 
 386.217 -	or editing is inappropriate to the current context 
 386.218 -	@leave KErrReadOnly Context is read-only 
 386.219 -	@leave Other Dependent on implementation 
 386.220 -	@return If successful, this is an asynchronously completing edit operation. 
 386.221 -	If failed, this is a completed operation, with status set to the relevant 
 386.222 -	error code. */
 386.223 -	virtual CMsvOperation* EditL(TRequestStatus& aStatus) = 0;// Launches editor/settings dialog as appropriate  
 386.224 -	/** Views an entry. 
 386.225 -	
 386.226 -	For message contexts, this usually launches the appropriate 
 386.227 -	message viewer. Other context types leave with KErrNotSupported. The returned 
 386.228 -	CMsvOperation object completes when viewing is complete.
 386.229 -	
 386.230 -	Requirements:
 386.231 -	
 386.232 -	Implementations should:
 386.233 -	
 386.234 -	1. check aEntry.iType.iUid to ensure that they can view the requested type of 
 386.235 -	entry and leave with code KErrNotSupported if they cannot
 386.236 -	
 386.237 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.238 -	monitoring of the operation
 386.239 -	
 386.240 -	@param aStatus The request status to be completed when the operation has finished 
 386.241 -	@leave KErrNotSupported The User Interface MTM does not support view operations, 
 386.242 -	or viewing is inappropriate to the current context 
 386.243 -	@leave Other Dependent on implementation 
 386.244 -	@return If successful, this is an asynchronously completing view operation. 
 386.245 -	If failed, this is a completed operation, with status set to the relevant 
 386.246 -	error code. */
 386.247 -	virtual CMsvOperation* ViewL(TRequestStatus& aStatus) = 0;// Launches viewer/settings dialog as appropriate  
 386.248 -	//
 386.249 -	// --- Actions upon message selections ---
 386.250 -	// --- Selections must be in same folder and all of the correct MTM type ---
 386.251 -	// --- Context may change after calling these functions ---
 386.252 -	/** Opens a selection of entries. 
 386.253 -	
 386.254 -	The behaviour that this implies is dependent on the current context:
 386.255 -	
 386.256 -	1. for message contexts, OpenL() is the equivalent of EditL(), or for read-only 
 386.257 -	messages, ViewL(). Whether opening of remote messages is allowed is MTM-specific.
 386.258 -	
 386.259 -	2. for service contexts, the function may initiate a connection to obtain the 
 386.260 -	service contents from the server, completing asynchronously
 386.261 -	
 386.262 -	3. for remote folder contexts, dependent on implementation, the function may 
 386.263 -	initiate a connection to obtain the folder contents from the server, completing 
 386.264 -	asynchronously
 386.265 -	
 386.266 -	The returned CMsvOperation object completes when opening is complete.
 386.267 -	
 386.268 -	Requirements:
 386.269 -	
 386.270 -	If opening entries is not supported, implementations should leave with KErrNotSupported. 
 386.271 -	Otherwise, implementations should:
 386.272 -	
 386.273 -	1. check aEntry.iType.iUid to ensure that they can open the requested type of 
 386.274 -	entry and leave with code KErrNotSupported if they cannot
 386.275 -	
 386.276 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.277 -	monitoring of the operation
 386.278 -	
 386.279 -	3. for remote messages, typically, copy the messages to the Inbox
 386.280 -	
 386.281 -	@param aStatus The request status to be completed when the operation has finished 
 386.282 -	@param aSelection Selection of message entries 
 386.283 -	@leave KErrNotSupported The User Interface MTM does not support open operations, 
 386.284 -	or opening is inappropriate to the current context 
 386.285 -	@leave Other Dependent on implementation 
 386.286 -	@return If successful, this is an asynchronously completing open operation. 
 386.287 -	If failed, this is a completed operation, with status set to the relevant 
 386.288 -	error code. */
 386.289 -	virtual CMsvOperation* OpenL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0; 
 386.290 -	/** Closes a selection of entries. 
 386.291 -	
 386.292 -	The behaviour that this implies is dependent on the current context:
 386.293 -	
 386.294 -	1. for message contexts, this usually closes any launched editors or viewers
 386.295 -	
 386.296 -	2. for folder contexts, leaves with KErrNotSupported
 386.297 -	
 386.298 -	3. for service contexts, causes closure of a connection to a server
 386.299 -	
 386.300 -	The returned CMsvOperation object completes when closing is complete.
 386.301 -	
 386.302 -	Requirements:
 386.303 -	
 386.304 -	Implementations should:
 386.305 -	
 386.306 -	1. check aEntry.iType.iUid to ensure that they can close the requested type of 
 386.307 -	entry and leave with code KErrNotSupported if they cannot
 386.308 -	
 386.309 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.310 -	monitoring of the operation
 386.311 -	
 386.312 -	@param aStatus The request status to be completed when the operation has finished 
 386.313 -	@param aSelection Selection of message entries 
 386.314 -	@leave KErrNotSupported The User Interface MTM does not support close operations, 
 386.315 -	or closing is inappropriate to the current context 
 386.316 -	@leave Other Dependent on implementation 
 386.317 -	@return If successful, this is an asynchronously completing close operation. 
 386.318 -	If failed, this is a completed operation, with status set to the relevant 
 386.319 -	error code. */
 386.320 -	virtual CMsvOperation* CloseL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;
 386.321 -	/** Edits a selection of entries. 
 386.322 -	
 386.323 -	The behaviour that this implies is dependent on the current context:
 386.324 -	
 386.325 -	1. for message contexts, this usually launches the appropriate message editor, 
 386.326 -	or returns status KErrReadOnly if the message is not editable
 386.327 -	
 386.328 -	2. for remote folder contexts, launches a settings dialog, for example to rename 
 386.329 -	the folder, completing asynchronously
 386.330 -	
 386.331 -	3. for service contexts, launches a service settings dialog, completing asynchronously
 386.332 -	
 386.333 -	The returned CMsvOperation object completes when editing is complete.
 386.334 -	
 386.335 -	Requirements:
 386.336 -	
 386.337 -	Implementations should:
 386.338 -	
 386.339 -	1. check aEntry.iType.iUid to ensure that they can edit the requested type of 
 386.340 -	entry and leave with code KErrNotSupported if they cannot
 386.341 -	
 386.342 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.343 -	monitoring of the operation
 386.344 -	
 386.345 -	3. for remote messages, typically, copy the messages to the Inbox
 386.346 -	
 386.347 -	4. follow the leave protocols described in Leave considerations below
 386.348 -	
 386.349 -	@param aStatus The request status to be completed when the operation has finished 
 386.350 -	@param aSelection Selection of message entries 
 386.351 -	@leave KErrNotSupported The User Interface MTM does not support edit operations, 
 386.352 -	or editing is inappropriate to the current context 
 386.353 -	@leave KErrReadOnly Context is read-only 
 386.354 -	@leave Other Dependent on implementation 
 386.355 -	@return If successful, this is an asynchronously completing edit operation. 
 386.356 -	If failed, this is a completed operation, with status set to the relevant 
 386.357 -	error code. */
 386.358 -	virtual CMsvOperation* EditL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;// Launches editor/settings dialog as appropriate  
 386.359 -	/** Views a selection of entries. 
 386.360 -	
 386.361 -	For message contexts, this usually launches the appropriate 
 386.362 -	message viewer. Other context types leave with KErrNotSupported. The returned 
 386.363 -	CMsvOperation object completes when viewing is complete.
 386.364 -	
 386.365 -	Requirements:
 386.366 -	
 386.367 -	Implementations should:
 386.368 -	
 386.369 -	1. check aEntry.iType.iUid to ensure that they can view the requested type of 
 386.370 -	entry and leave with code KErrNotSupported if they cannot
 386.371 -	
 386.372 -	2. return a CMsvOperation-derived object to provide asynchronous control and 
 386.373 -	monitoring of the operation
 386.374 -	
 386.375 -	@param aStatus The request status to be completed when the operation has finished 
 386.376 -	@param aSelection Selection of message entries 
 386.377 -	@leave KErrNotSupported The User Interface MTM does not support view operations, 
 386.378 -	or viewing is inappropriate to the current context 
 386.379 -	@leave Other Dependent on implementation 
 386.380 -	@return If successful, this is an asynchronously completing view operation. 
 386.381 -	If failed, this is a completed operation, with status set to the relevant 
 386.382 -	error code. */
 386.383 -	virtual CMsvOperation* ViewL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;// Launches viewer/settings dialog as appropriate  
 386.384 -	/** Cancels the sending of specified messages.
 386.385 -	
 386.386 -	@param aStatus The request status to be completed when the operation has finished 	
 386.387 -	@param aSelection Selection of message entries 
 386.388 -	@leave KErrNotSupported The User Interface MTM does not support cancel operations, 
 386.389 -	or cancelling is inappropriate to the current context 
 386.390 -	@leave Other Dependent on implementation 
 386.391 -	@return If successful, this is an asynchronously completing cancel operation. 
 386.392 -	If failed, this is a completed operation, with status set to the relevant 
 386.393 -	error code. */
 386.394 -	virtual CMsvOperation* CancelL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;
 386.395 -	//
 386.396 -	// --- Deletion ---
 386.397 -	// --- Deletes entries from the current context, which must be a folder or service of the relevant MTM ---
 386.398 -	IMPORT_C virtual CMsvOperation* DeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Deletes selection from current context
 386.399 -	// --- Un-deletes entries from the current context, which must be a folder or service of the relevant MTM ---
 386.400 -	IMPORT_C virtual CMsvOperation* UnDeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Un-deletes selection from current context
 386.401 -	// --- Deletes service, which need not be the current context ---
 386.402 -	IMPORT_C virtual CMsvOperation* DeleteServiceL(const TMsvEntry& aService, TRequestStatus& aStatus); // default implementation simply delegates to the server
 386.403 -	//
 386.404 -	// --- Message responding ---
 386.405 -	/** Creates a reply message to the current message context, and allows the user 
 386.406 -	to edit it through a message-type specific editor. 
 386.407 -	
 386.408 -	Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the reply. 
 386.409 -	The parent for the new entry is specified in aDestination. The returned CMsvOperation 
 386.410 -	object completes when editing the reply is complete. On completion, the context 
 386.411 -	is set to the reply message.
 386.412 -	
 386.413 -	Requirements:
 386.414 -	
 386.415 -	A typical implementation for this function would include the following steps: 
 386.416 -	
 386.417 -	1. create a new reply entry by calling CBaseMtm::ReplyL()
 386.418 -	
 386.419 -	2. call EditL() allow the user to edit the reply
 386.420 -	
 386.421 -	3. return a CMsvOperation-derived object to provide asynchronous control and 
 386.422 -	monitoring of the operation
 386.423 -	
 386.424 -	If message replies are not supported, implementations should leave with KErrNotSupported.
 386.425 -	
 386.426 -	@param aDestination The entry to which to assign the reply 
 386.427 -	@param aPartlist Defines the parts which are to be copied from the original 
 386.428 -	message into the reply. See CBaseMtm::ReplyL() for details. 
 386.429 -	@param aCompletionStatus The request status to be completed when the operation 
 386.430 -	has finished 
 386.431 -	@leave KErrNotSupported The User Interface MTM does not support reply operations 
 386.432 -	@leave Other Dependent on implementation 
 386.433 -	@return If successful, this is an asynchronously completing reply operation. 
 386.434 -	If failed, this is a completed operation, with status set to the relevant 
 386.435 -	error code. */
 386.436 -	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus) = 0;
 386.437 -	/**
 386.438 -	Creates a forwarded message from the current message context, and allows the user to edit it through a message-type 
 386.439 -	specific editor. 
 386.440 -	
 386.441 -	Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the 
 386.442 -	forwarded message. The parent for the new entry is specified in aDestination. The returned CMsvOperation 
 386.443 -	object completes when editing the forwarded message is complete. On completion, the context is set to the forwarded message.
 386.444 -
 386.445 -	Requirements:
 386.446 -
 386.447 -	A typical implementation for this function would include the following steps:
 386.448 -
 386.449 -	1. create a new forwarded message entry by calling CBaseMtm::ForwardL()
 386.450 -
 386.451 -	2. call EditL() allow the user to edit the forwarded message
 386.452 -
 386.453 -	3. return a CMsvOperation-derived object to provide asynchronous control and monitoring of the operation
 386.454 -
 386.455 -	If forwarded messages are not supported, implementations should leave with KErrNotSupported.
 386.456 -
 386.457 -	@return	If successful, this is an asynchronously completing forward message operation. If failed, 
 386.458 -	this is a completed operation, with status set to the relevant error code. 	
 386.459 -	@param aDestination The entry to which to assign the forwarded message 
 386.460 -	@param aPartList Defines the parts which are to be copied from the original message into the forwarded message 
 386.461 -	@param aCompletionStatus The request status to be completed when the operation has finished 
 386.462 -	@leave KErrNotSupported The User Interface MTM does not support message forwarding operations 
 386.463 -	@leave Other Dependent on implementation 
 386.464 -	*/
 386.465 -	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus) = 0;
 386.466 -
 386.467 -	//
 386.468 -	// --- Copy and move functions ---
 386.469 -	// --- Context should be set to folder or entry of this MTM ---
 386.470 -	// --- Default implementations imply call the relevant CMsvEntry functions ---
 386.471 -	IMPORT_C virtual CMsvOperation* CopyToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to copy to
 386.472 -	IMPORT_C virtual CMsvOperation* MoveToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to move to
 386.473 -	IMPORT_C virtual CMsvOperation* CopyFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to copy from
 386.474 -	IMPORT_C virtual CMsvOperation* MoveFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to move from
 386.475 -	//
 386.476 -	// --- Interpret transfer progress ---
 386.477 -	IMPORT_C virtual TInt DisplayProgressSummary(const TDesC8& aProgress) const;// Used for display operation summary (usually completed operations). Default implementation returns KErrNotSupported. 
 386.478 -	IMPORT_C virtual TInt GetProgress(const TDesC8& aProgress, TBuf<EProgressStringMaxLen>& aReturnString, TInt& aTotalEntryCount, TInt& aEntriesDone,
 386.479 -		TInt& aCurrentEntrySize, TInt& aCurrentBytesTrans) const;// Default implementation returns KErrNotSupported
 386.480 -	//	
 386.481 -	// --- RTTI functions ---
 386.482 -	IMPORT_C virtual TInt QueryCapability(TUid aCapability, TInt& aResponse);
 386.483 -	IMPORT_C virtual void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
 386.484 -	IMPORT_C virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TRequestStatus& aCompletionStatus, 
 386.485 -		TDes8& aParameter);
 386.486 -
 386.487 -protected:
 386.488 -	// --- Construction ---
 386.489 -	IMPORT_C CBaseMtmUi(CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll);
 386.490 -	IMPORT_C virtual void ConstructL();
 386.491 -	/** Sets the full path and name of the resource file associated with the User Interface MTM. 
 386.492 -	
 386.493 -	Client applications do not use this function. It is relevant only to implementers of derived classes.
 386.494 -	
 386.495 -	Requirements:
 386.496 -	
 386.497 -	The function is called by CBaseMtmUi::ConstructL(), which then loads the resource 
 386.498 -	file.
 386.499 -	
 386.500 -	@param aFileName Filename buffer to be filled with the resource file path 
 386.501 -	and name */
 386.502 -	virtual void GetResourceFileName(TFileName& aFileName) const = 0;
 386.503 -	//
 386.504 -	// --- Utility functions ---
 386.505 -	IMPORT_C CMsvSession& Session() const;
 386.506 -
 386.507 -	// Method used for extension: called by non virtual methods that need 
 386.508 -	// to have a polymorphic behaviour.
 386.509 -	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 386.510 -
 386.511 -protected:
 386.512 -	// --- Data ---
 386.513 -	/** The CBaseMtm-derived object (Client-side MTM) that requested the User Interface 
 386.514 -	MTM. It is set by the constructor. */
 386.515 -	CBaseMtm&			iBaseMtm;
 386.516 -	/** Control environment object. It is set by the constructor. */
 386.517 -	CCoeEnv*			iCoeEnv;
 386.518 -	/** This flag records the preferences as set by SetPreferences(). */
 386.519 -	TUint				iFlags;
 386.520 -
 386.521 -private:
 386.522 -	// --- Data ---
 386.523 -	CRegisteredMtmDll&	iRegisteredMtmDll;
 386.524 -	TInt				iResourceFileOffset;
 386.525 -	// Extra data member to allow for future extensions
 386.526 -	TAny* iExtensionData;
 386.527 -	};
 386.528 -
 386.529 -
 386.530 -#endif // __MTMUIBAS_H__
   387.1 --- a/epoc32/include/mtmuids.h	Tue Mar 16 16:12:26 2010 +0000
   387.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   387.3 @@ -1,155 +0,0 @@
   387.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   387.5 -// All rights reserved.
   387.6 -// This component and the accompanying materials are made available
   387.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   387.8 -// which accompanies this distribution, and is available
   387.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  387.10 -//
  387.11 -// Initial Contributors:
  387.12 -// Nokia Corporation - initial contribution.
  387.13 -//
  387.14 -// Contributors:
  387.15 -//
  387.16 -// Description:
  387.17 -//
  387.18 -
  387.19 -
  387.20 -
  387.21 -/**
  387.22 - @file
  387.23 - @publishedAll
  387.24 - @released
  387.25 -*/
  387.26 -#if !defined(__MTMUIDS_H__)
  387.27 -#define __MTMUIDS_H__
  387.28 -#if !defined(__E32STD_H__)
  387.29 -#include <e32std.h>
  387.30 -#endif
  387.31 -#if !defined(__MTMDEF_HRH__)
  387.32 -#include <mtmdef.hrh>
  387.33 -#endif
  387.34 -
  387.35 -// capabilities (TUid)
  387.36 -/**
  387.37 -* Maximum message body size.
  387.38 -* @Return type: TInt. 
  387.39 -* @publishedAll
  387.40 -* @released
  387.41 -*/
  387.42 -const TUid KUidMtmQueryMaxBodySize={KUidMtmQueryMaxBodySizeValue};
  387.43 -/**
  387.44 -* Maximum total size of message.
  387.45 -* @publishedAll
  387.46 -* @released
  387.47 -* @Return type: TInt.
  387.48 -*/
  387.49 -const TUid KUidMtmQueryMaxTotalMsgSize={KUidMtmQueryMaxTotalMsgSizeValue};
  387.50 -/** Character widths supported by message type (returned TInt is the sum of the 
  387.51 -appropriate values KMtm7BitBody, KMtm8BitBody, KMtm16BitBody, and KMtmBinaryBody). */
  387.52 -
  387.53 -/**
  387.54 -* @publishedAll
  387.55 -* @released
  387.56 -*/
  387.57 -const TUid KUidMtmQuerySupportedBody={KUidMtmQuerySupportedBodyValue};
  387.58 -/**
  387.59 -* Are attachments supported.
  387.60 -* @No return value. 
  387.61 -* @publishedAll
  387.62 -* @released
  387.63 -*/
  387.64 -const TUid KUidMtmQuerySupportAttachments={KUidMtmQuerySupportAttachmentsValue};
  387.65 -/**
  387.66 -* Does the MTM message type have a subject field.
  387.67 -* @No return value. 
  387.68 -* @publishedAll
  387.69 -* @released
  387.70 -*/
  387.71 -const TUid KUidMtmQuerySupportSubject={KUidMtmQuerySupportSubjectValue};
  387.72 -/**
  387.73 -* Does the MTM support folders.
  387.74 -* @No return value. 
  387.75 -* @publishedAll
  387.76 -* @released
  387.77 -*/
  387.78 -const TUid KUidMtmQuerySupportsFolder={KUidMtmQuerySupportsFolderValue};
  387.79 -/**
  387.80 -* Off-line operation allowed.
  387.81 -* @No return value.
  387.82 -* @publishedAll
  387.83 -* @released
  387.84 -*/
  387.85 -const TUid KUidMtmQueryOffLineAllowed={KUidMtmQueryOffLineAllowedValue};
  387.86 -/**
  387.87 -* Send message.
  387.88 -* @No return value.
  387.89 -* @publishedAll
  387.90 -* @released
  387.91 -*/ 
  387.92 -const TUid KUidMtmQueryCanSendMsg={KUidMtmQueryCanSendMsgValue};
  387.93 -/**
  387.94 -* Receive message.
  387.95 -* @No return value. 
  387.96 -* @publishedAll
  387.97 -* @released
  387.98 -*/
  387.99 -const TUid KUidMtmQueryCanReceiveMsg={KUidMtmQueryCanReceiveMsgValue};
 387.100 -/**
 387.101 -* Maximum number of recipients (-1 indicates unlimited numbers).
 387.102 -* @Return type: TInt
 387.103 -* @publishedAll
 387.104 -* @released
 387.105 -*/
 387.106 -const TUid KUidMtmQueryMaxRecipientCount={KUidMtmQueryMaxRecipientCountValue};
 387.107 -/**
 387.108 -* When using the MTM in Send-As, does a rendered image have to be prepared (i.e.fax).
 387.109 -* @Return type: TBool. 
 387.110 -* @publishedAll
 387.111 -* @released
 387.112 -*/
 387.113 -const TUid KUidMtmQuerySendAsRequiresRenderedImage={KUidMtmQuerySendAsRequiresRenderedImageValue};
 387.114 -/**
 387.115 -* Printer driver UID for rendering the fax image.
 387.116 -* @Return type: TUid
 387.117 -* @publishedAll
 387.118 -* @released
 387.119 -*/
 387.120 -const TUid KUidMtmQuerySendAsRenderingUid={KUidMtmQuerySendAsRenderingUidValue};
 387.121 -/**
 387.122 -* UID of default message editor.
 387.123 -* @Return type: TUid. 
 387.124 -* @publishedAll
 387.125 -* @released
 387.126 -*/
 387.127 -const TUid KUidMsvMtmQueryEditorUid={KUidMsvMtmQueryEditorUidValue};
 387.128 -/**
 387.129 -* Does the MTM support BIO messages.
 387.130 -* @No return value. 
 387.131 -* @publishedAll
 387.132 -* @released
 387.133 -*/
 387.134 -const TUid KUidMsvQuerySupportsBioMsg={KUidMtmQuerySupportsBioMsgValue};
 387.135 -/**
 387.136 -* Does the MTM support scheduled sending.
 387.137 -* @No return value. 
 387.138 -* @publishedAll
 387.139 -* @released
 387.140 -*/
 387.141 -const TUid KUidMsvQuerySupportsScheduling={KUidMtmQuerySupportsSchedulingValue};
 387.142 -/**
 387.143 -* Does the MTM support the use of recipient type.
 387.144 -* @No return value. 
 387.145 -* @publishedAll
 387.146 -* @released
 387.147 -*/
 387.148 -const TUid KUidMtmQuerySupportsRecipientType={KUidMtmQuerySupportsRecipientTypeValue};
 387.149 -/**
 387.150 -* Support for Sending messages using SendAs.  
 387.151 -* If this is supported, then the MTM supports sending messages created through the SendAs API.
 387.152 -* @Return type: TBool. 
 387.153 -* @publishedAll
 387.154 -* @released
 387.155 -*/
 387.156 -const TUid KUidMtmQuerySendAsMessageSendSupport={KUidMtmQuerySendAsMessageSendSupportValue};
 387.157 -
 387.158 -#endif
   388.1 --- a/epoc32/include/mtsr.h	Tue Mar 16 16:12:26 2010 +0000
   388.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   388.3 @@ -1,504 +0,0 @@
   388.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   388.5 -// All rights reserved.
   388.6 -// This component and the accompanying materials are made available
   388.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   388.8 -// which accompanies this distribution, and is available
   388.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  388.10 -//
  388.11 -// Initial Contributors:
  388.12 -// Nokia Corporation - initial contribution.
  388.13 -//
  388.14 -// Contributors:
  388.15 -//
  388.16 -// Description:
  388.17 -//
  388.18 -
  388.19 -#ifndef __MTSR_H__
  388.20 -#define __MTSR_H__
  388.21 -
  388.22 -#include <e32base.h>
  388.23 -#include <badesca.h>
  388.24 -#include <msvstd.h>
  388.25 -#include <msvreg.h>
  388.26 -#include <tnonoperationmtmdata.h>
  388.27 -
  388.28 -// forward declarations
  388.29 -class RWriteStream;
  388.30 -class RReadStream;
  388.31 -class RFs;
  388.32 -class CDictionaryFileStore;
  388.33 -class CInstalledMtmGroup;
  388.34 -class CMsvServerEntry;
  388.35 -class TMsvSystemProgress;
  388.36 -
  388.37 -class CBaseServerMtm : public CActive
  388.38 -/** Base class for Server-side MTM components. Server-side MTMs provide all message 
  388.39 -transport functionality for a particular messaging protocol. 
  388.40 -
  388.41 -MTM implementers implement a derived class to provide such functionality for 
  388.42 -their message protocol. Writers of message client applications are never concerned 
  388.43 -with this class and its sub-classes, as these are only accessed by the Message 
  388.44 -Server. 
  388.45 -
  388.46 -Each MTM interprets the generic commands in different ways. For example, a 
  388.47 -Fax MTM would transmit a fax when asked to copy a fax from a local folder 
  388.48 -to a fax service. For the same function, an IMAP MTM would create a copy of 
  388.49 -the message on the remote server and update the message index to show the 
  388.50 -copy of the message on the remote server. An important initial design task 
  388.51 -is to the map the functions to the functionality provided by the protocol.
  388.52 -
  388.53 -Server-side MTM functions are called by the Message Server as a result of 
  388.54 -a client request that requires some remote operation with the MTM's protocol. 
  388.55 -The following steps give a simplified view of the usual sequence of events:
  388.56 -
  388.57 -1. the Message Server instantiates a Server-side MTM object through the factory 
  388.58 -function
  388.59 -
  388.60 -2. the Message Server calls the appropriate asynchronous function on the Server-side 
  388.61 -MTM interface, passing a TRequestStatus argument
  388.62 -
  388.63 -3. the Server-side MTM function typically starts whatever asynchronous communications 
  388.64 -it requires and returns
  388.65 -
  388.66 -4. the Server-side MTM is signalled when the asynchronous communications complete, 
  388.67 -and handles the result
  388.68 -
  388.69 -5. the Server-side MTM signals the Message Server, through the TRequestStatus 
  388.70 -passed earlier
  388.71 -
  388.72 -6. the Message Server deletes the Server-side MTM object
  388.73 -
  388.74 -To qualify this somewhat:
  388.75 -
  388.76 -1. it is up to the Server-side MTM implementation to decide how to translate 
  388.77 -data back and forth between the formats used by Message Server (index entry, 
  388.78 -message store, binary files), and that required by the protocol; this is another 
  388.79 -important design task 
  388.80 -
  388.81 -2. depending on the protocol being used, the communications sequence can be of 
  388.82 -considerable complexity; typically it requires division into a number of asynchronous 
  388.83 -steps
  388.84 -
  388.85 -3. for greater efficiency where further commands are shortly expected, deletion 
  388.86 -of the Server-side MTM object can be prevented
  388.87 -
  388.88 -For asynchronous requests, a Server-side MTM should always complete the TRequestStatus 
  388.89 -with KErrNone. Any errors should be returned in the progress information.
  388.90 -
  388.91 -Note the following significant groups of functions:
  388.92 -
  388.93 -1. Copy and move from remote functions: CopyToLocalL() and MoveToLocalL() are 
  388.94 -called by the Message Server to get a selection of entries from a remote location. 
  388.95 -For many protocols, this should be interpreted as message retrieval. For protocols 
  388.96 -where messages exist on a remote server, this function is typically used to 
  388.97 -download specific messages, after an initial connection has downloaded message 
  388.98 -headers. 
  388.99 -
 388.100 -2. Copy and move to remote functions: CopyFromLocalL() and MoveFromLocalL() are 
 388.101 -called by the Message Server to copy/move a selection of entries to a remote 
 388.102 -location. For many protocols, this should be interpreted as message sending. 
 388.103 -
 388.104 -3. Copy and move within remote functions: CopyWithinServiceL() and MoveWithinServiceL() 
 388.105 -are called by the Message Server to copy a selection of entries within a remote 
 388.106 -service. An example of their use might be for a user rearranging messages 
 388.107 -within remote folders. 
 388.108 -@publishedAll
 388.109 -@released
 388.110 -*/
 388.111 -	{
 388.112 -public:
 388.113 -	IMPORT_C ~CBaseServerMtm();
 388.114 -	//
 388.115 -	/** Copies a selection of entries from a remote location to a local location. This 
 388.116 -	will only be meaningful for some protocols.
 388.117 -	
 388.118 -	Requirements:
 388.119 -	
 388.120 -	Implementations should provide this function if the messaging protocol supports 
 388.121 -	retrieval of remote entries. If this is not supported, implementations should 
 388.122 -	leave with KErrNotSupported. 
 388.123 -	
 388.124 -	Implementations of this function have three fundamental steps:
 388.125 -	
 388.126 -	1. doing the transfer operation using the appropriate communications protocols 
 388.127 -	
 388.128 -	2. converting protocol-specific data into the three-part storage format (index 
 388.129 -	entry, message store, binary files) required by the Message Server
 388.130 -	
 388.131 -	3. updating entries in the Message Server
 388.132 -	
 388.133 -	@param aSelection The collection of message index entries for which the copy/moving 
 388.134 -	is required. 
 388.135 -	@param aDestination The entry ID to which the selection is to be copied 
 388.136 -	@param aStatus Asynchronous completion word for the operation 
 388.137 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.138 -	@leave Other leave codes Dependent on implementation */
 388.139 -	virtual void CopyToLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 388.140 -	/** Copies a selection of entries from a local location to a remote location. 
 388.141 -	
 388.142 -	Requirements:
 388.143 -	
 388.144 -	Implementations should provide this function if the messaging protocol supports 
 388.145 -	retrieval of remote entries. If this is not supported, implementations should 
 388.146 -	leave with KErrNotSupported. 
 388.147 -	
 388.148 -	Implementations of this function have three fundamental steps:
 388.149 -	
 388.150 -	1. reading entry data
 388.151 -	
 388.152 -	2. converting entry data from the Message Server format into that required by 
 388.153 -	the protocol
 388.154 -	
 388.155 -	3. doing the transfer operation using the appropriate communications protocols 
 388.156 -	
 388.157 -	@param aSelection The collection of message index entries for which the copy 
 388.158 -	is required 
 388.159 -	@param aDestination The entry ID of the service by which the entries should 
 388.160 -	be transferred 
 388.161 -	@param aStatus Asynchronous completion word for the operation 
 388.162 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.163 -	@leave Other leave codes Dependent on implementation */
 388.164 -	virtual void CopyFromLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 388.165 -	/** Copies a selection of entries within a remote location. 
 388.166 -	
 388.167 -	Requirements:
 388.168 -	
 388.169 -	Implementations should provide this function if the messaging protocol supports 
 388.170 -	the ability to copy entries within a remote service. If this is not supported, 
 388.171 -	implementations should leave with KErrNotSupported. 
 388.172 -	
 388.173 -	@param aSelection The collection of message index entries for which the copy 
 388.174 -	is required 
 388.175 -	@param aDestination The server entry ID to which the selection is to be copied 
 388.176 -	@param aStatus Asynchronous completion word for the operation 
 388.177 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.178 -	@leave Other leave codes Dependent on implementation */
 388.179 -	virtual void CopyWithinServiceL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 388.180 -	/** Deletes each entry in the supplied selection when called by the message Server. 
 388.181 -	If any of the entries in the selection is a parent entry, then all its children 
 388.182 -	should also be deleted, recursively to the bottom of the ownership tree.
 388.183 -	
 388.184 -	Implementations should provide this function if the messaging protocol supports 
 388.185 -	deletion of remote entries. If this is not supported, implementations should 
 388.186 -	leave with KErrNotSupported. 
 388.187 -	
 388.188 -	@param aSelection The collection of entries that are to be deleted. 
 388.189 -	@param aStatus Asynchronous completion object. 
 388.190 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.191 -	@leave Other leave codes Dependent on implementation */
 388.192 -	virtual void DeleteAllL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus)=0;
 388.193 -	/** Creates a new remote entry with relevant data when called by the Message Server.
 388.194 -	 
 388.195 -	Implementations should provide this function if the messaging protocol supports 
 388.196 -	creation of remote entries. If this is not supported, implementations should 
 388.197 -	leave with KErrNotSupported.
 388.198 -	
 388.199 -	As with ChangeL(), the Server-side MTM implementation must decide what information 
 388.200 -	in the TMsvEntry is relevant to the remote entry, and translate it appropriately 
 388.201 -	for the specific protocol. Most of the data contained in the TMsvEntry is 
 388.202 -	specific to the Message Server, and would probably have no direct correlation 
 388.203 -	with the protocol's own storage format. For example, for a folder, probably 
 388.204 -	only the name and parent are needed, so if the protocol supports creation 
 388.205 -	of remote folders, the implementation could:
 388.206 -	
 388.207 -	1. check for a folder type entry
 388.208 -	
 388.209 -	2. get the folder name and parent details from aNewEntry
 388.210 -	
 388.211 -	3. initiate a protocol-specific action to create the remote folder
 388.212 -	
 388.213 -	@param aNewEntry Data by which to create entry 
 388.214 -	@param aStatus Asynchronous completion word for the operation. 
 388.215 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.216 -	@leave Other leave codes Dependent on implementation */
 388.217 -	virtual void CreateL(TMsvEntry aNewEntry, TRequestStatus& aStatus)=0;
 388.218 -	/** Updates a remote entry with relevant data when called by the Message Server.
 388.219 -	 
 388.220 -	Implementations should provide this function if the messaging protocol supports 
 388.221 -	updating of remote entries. If this is not supported, implementations should 
 388.222 -	leave with KErrNotSupported. 
 388.223 -	
 388.224 -	The Server-side MTM implementation must decide what information in the TMsvEntry 
 388.225 -	is relevant to the remote entry, and translate it appropriately for the specific 
 388.226 -	protocol. Most of the data contained in the TMsvEntry is specific to the Symbian 
 388.227 -	OS Message Server, and would probably have no direct correlation with the 
 388.228 -	protocol's own storage format. Some entry data may however be useful. For 
 388.229 -	example, if the protocol supports remote renaming of folders, the implementation 
 388.230 -	could:
 388.231 -	
 388.232 -	1. check for a folder type entry
 388.233 -	
 388.234 -	2. extract the folder name from aNewEntry.iDetails
 388.235 -	
 388.236 -	3. check if the folder name has changed by comparing the new name with iDetails 
 388.237 -	in the index entry currently; if not, complete with KErrNone
 388.238 -	
 388.239 -	4. initiate a protocol-specific action to rename the remote folder
 388.240 -	
 388.241 -	The implementation should also always update the local Message Server index 
 388.242 -	through CMsvServerEntry::ChangeL().
 388.243 -	
 388.244 -	@param aNewEntry Data by which to update entry 
 388.245 -	@param aStatus Asynchronous completion word for the operation. 
 388.246 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.247 -	@leave Other leave codes Dependent on implementation */
 388.248 -	virtual void ChangeL(TMsvEntry aNewEntry, TRequestStatus& aStatus)=0;
 388.249 -	//
 388.250 -	/** Executes an MTM-specific operation on a selection of entries when called by 
 388.251 -	the Message Server.
 388.252 -	
 388.253 -	The call is made as a response to a client program invoking an MTM-specific 
 388.254 -	operation through CBaseMtm::InvokeSyncFunctionL()/InvokeAsyncFunctionL(). 
 388.255 -	The aSelection, aCommand, and aParameter arguments pass the values of the 
 388.256 -	original aSelection, aFunctionId, and aParameter respectively arguments from 
 388.257 -	such a call. The use (if any) of the aSelection and aParameter arguments by 
 388.258 -	the function depends on the command.
 388.259 -	
 388.260 -	@param aSelection A selection of message entries on which the command is to 
 388.261 -	be executed 
 388.262 -	@param aCommand The MTM-specific command to be carried out 
 388.263 -	@param aParameter Command-specific parameters 
 388.264 -	@param aStatus Asynchronous completion word for the operation */
 388.265 -	virtual void StartCommandL(CMsvEntrySelection& aSelection, TInt aCommand, const TDesC8& aParameter, TRequestStatus& aStatus)=0;
 388.266 -	//
 388.267 -	/** Tests if the Server-side MTM object should be deleted when called by the Message 
 388.268 -	Server
 388.269 -	
 388.270 -	It is useful to stop the MTM being deleted when more commands are expected 
 388.271 -	shortly. This would be the case, for example, after receiving a command to 
 388.272 -	go online. 
 388.273 -	
 388.274 -	If there are no more commands expected by the Server-side MTM object, then 
 388.275 -	the function should return EFalse, and the Message Server will delete it.
 388.276 -	
 388.277 -	@return ETrue: the MTM object should not be deleted EFalse: the MTM object 
 388.278 -	can be deleted */
 388.279 -	virtual TBool CommandExpected()=0;
 388.280 -	//
 388.281 -	/** This function is called by the Message Server to get progress information for 
 388.282 -	the current asynchronous operation. 
 388.283 -	
 388.284 -	The call is made as a response to a client program requesting progress information 
 388.285 -	through CMsvOperation::ProgressL(). The packing format used in the TDesC8 
 388.286 -	is MTM-specific. Only the implementation of the User Interface MTM progress 
 388.287 -	information functions need to understand the format.
 388.288 -	
 388.289 -	The progress buffer should have a maximum size of 256 bytes.
 388.290 -	
 388.291 -	@return Progress information on current asynchronous operation 
 388.292 -	@see CBaseMtmUi::DisplayProgressSummary()
 388.293 -	@see CBaseMtmUi::GetProgress() */
 388.294 -	virtual const TDesC8& Progress()=0;
 388.295 -	//
 388.296 -	/** Moves a selection of entries from a remote location to a local location. 
 388.297 -	
 388.298 -	Requirements:
 388.299 -	
 388.300 -	Implementations should provide this function if the messaging protocol supports 
 388.301 -	retrieval of remote entries. If this is not supported, implementations should 
 388.302 -	leave with KErrNotSupported. 
 388.303 -	
 388.304 -	Implementations of this function have three fundamental steps:
 388.305 -	
 388.306 -	1. doing the transfer operation using the appropriate communications protocols 
 388.307 -	
 388.308 -	2. converting protocol-specific data into the three-part storage format (index 
 388.309 -	entry, message store, binary files) required by the Message Server
 388.310 -	
 388.311 -	3. updating entries in the Message Server
 388.312 -	
 388.313 -	MoveToLocalL() should differ from CopyToLocalL() in additionally deleting 
 388.314 -	the original remote data. 
 388.315 -	
 388.316 -	@param aSelection The collection of message index entries for which the moving 
 388.317 -	is required. 
 388.318 -	@param aDestination The entry ID to which the selection is to be copied/moved 
 388.319 -	@param aStatus Asynchronous completion word for the operation 
 388.320 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.321 -	@leave Other leave codes Dependent on implementation */
 388.322 -	virtual void MoveToLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 388.323 -	/** Moves a selection of entries from a local location to a remote location. 
 388.324 -	
 388.325 -	Requirements:
 388.326 -	
 388.327 -	Implementations should provide this function if the messaging protocol supports 
 388.328 -	retrieval of remote entries. If this is not supported, implementations should 
 388.329 -	leave with KErrNotSupported. 
 388.330 -	
 388.331 -	Implementations of this function have three fundamental steps:
 388.332 -	
 388.333 -	1. reading entry data
 388.334 -	
 388.335 -	2. converting entry data from the Message Server format into that required by 
 388.336 -	the protocol
 388.337 -	
 388.338 -	3. doing the transfer operation using the appropriate communications protocols 
 388.339 -	
 388.340 -	The implementation of MoveFromLocalL() should differ from CopyFromLocalL() 
 388.341 -	in additionally deleting the original local data. 
 388.342 -	
 388.343 -	@param aSelection The collection of message index entries for which the move 
 388.344 -	is required 
 388.345 -	@param aDestination The entry ID of the service by which the entries should 
 388.346 -	be transferred 
 388.347 -	@param aStatus Asynchronous completion word for the operation 
 388.348 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.349 -	@leave Other leave codes Dependent on implementation */
 388.350 -	virtual void MoveFromLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 388.351 -	/** Moves a selection of entries within a remote location. 
 388.352 -	
 388.353 -	Requirements:
 388.354 -	
 388.355 -	Implementations should provide this function if the messaging protocol supports 
 388.356 -	the ability to move entries within a remote service. If this is not supported, 
 388.357 -	implementations should leave with KErrNotSupported. 
 388.358 -	
 388.359 -	The implementation of MoveWithinServiceL() should differ from CopyWithinServiceL() 
 388.360 -	in additionally deleting the original data. 
 388.361 -	
 388.362 -	@param aSelection The collection of message index entries for which the move 
 388.363 -	is required 
 388.364 -	@param aDestination The server entry ID to which the selection is to be moved 
 388.365 -	@param aStatus Asynchronous completion word for the operation 
 388.366 -	@leave KErrNotSupported The Server-side MTM does not support this operation 
 388.367 -	@leave Other leave codes Dependent on implementation */
 388.368 -	virtual void MoveWithinServiceL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 388.369 -
 388.370 -	IMPORT_C TInt SystemProgress(TMsvSystemProgress& aOutSysProg);
 388.371 -	TInt GetNonOperationMtmData(TNonOperationMtmDataType& aMtmDataType, TPtrC8& aResultBuffer);
 388.372 -
 388.373 -protected:
 388.374 -	IMPORT_C CBaseServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry);
 388.375 -	/** Handles the completion of any asynchronous requests that it makes. It is called 
 388.376 -	from the base class RunL() .
 388.377 -	
 388.378 -	Note that any leaves made by this function result in DoComplete() being called 
 388.379 -	with the leave code. */
 388.380 -	virtual void DoRunL()=0;
 388.381 -	/** Called by the base class RunL() if DoRunL() leaves. 
 388.382 -	
 388.383 -	It should be implemented to handle this error. For example, progress information 
 388.384 -	could be updated to reflect the problem.
 388.385 -	
 388.386 -	@param aError The leave code given by DoRunL(). */
 388.387 -	virtual void DoComplete(TInt aError)=0;
 388.388 -	//
 388.389 -	IMPORT_C TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1);
 388.390 -	//
 388.391 -private:
 388.392 -	// from CActive
 388.393 -	IMPORT_C void RunL();
 388.394 -	IMPORT_C TInt RunError(TInt aError);
 388.395 -	//
 388.396 -protected:
 388.397 -	/** The entry on which to operate. It is set in the constructor.
 388.398 -	
 388.399 -	The destructor deletes this member. */
 388.400 -	CMsvServerEntry* iServerEntry;
 388.401 -	
 388.402 -	// Method used for extension: called by non virtual methods that need 
 388.403 -	// to have a polymorphic behaviour.
 388.404 -	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 388.405 -	//
 388.406 -private:
 388.407 -	CRegisteredMtmDll& iRegisteredMtmDll;
 388.408 -
 388.409 -private:
 388.410 -	// Extra data member to allow for future extensions
 388.411 -	TAny* iExtensionData;
 388.412 -	};
 388.413 -
 388.414 -
 388.415 -class CServerMtmDllRegistry : public CMtmDllRegistry
 388.416 -/**
 388.417 -@publishedAll
 388.418 -@released
 388.419 -*/
 388.420 -	{
 388.421 -friend class CMtmRegistryControl;
 388.422 -public:
 388.423 -	IMPORT_C static CServerMtmDllRegistry* NewL(RFs& aFs,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=KMsvDefaultTimeoutMicroSeconds32);
 388.424 -	IMPORT_C ~CServerMtmDllRegistry();
 388.425 -	IMPORT_C CBaseServerMtm* NewServerMtmL(TUid aMtmTypeUid, CMsvServerEntry* aInitialEntry);
 388.426 -	//
 388.427 -protected:
 388.428 -	CServerMtmDllRegistry(RFs& aFs,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
 388.429 -	//
 388.430 -private:
 388.431 -	CBaseServerMtm* NewMtmL(const RLibrary& aLib, CMsvServerEntry* aServerEntry, CRegisteredMtmDll& aReg) const;
 388.432 -	};
 388.433 -
 388.434 -
 388.435 -class CInstalledMtmGroupArray : public CArrayPtrFlat<CInstalledMtmGroup>
 388.436 -/**
 388.437 -@internalComponent
 388.438 -@released
 388.439 -*/
 388.440 -	{
 388.441 -public:
 388.442 -	CInstalledMtmGroupArray();
 388.443 -	~CInstalledMtmGroupArray();
 388.444 -	void AddInstalledMtmGroupL(CInstalledMtmGroup* aInstalledMtmGroup);
 388.445 -	};
 388.446 -
 388.447 -//**********************************
 388.448 -// CMsvMtmCache
 388.449 -//**********************************
 388.450 -
 388.451 -
 388.452 -//**********************************
 388.453 -// CMtmRegistryControl
 388.454 -//**********************************
 388.455 -
 388.456 -class CMtmRegistryControl : public CBase, public MRegisteredMtmDllObserver
 388.457 -/**
 388.458 -@publishedAll
 388.459 -@released
 388.460 -*/
 388.461 -	{
 388.462 -public:
 388.463 -	IMPORT_C static CMtmRegistryControl* NewL(RFs& anFs,CServerMtmDllRegistry& aServerMtmDllRegistry);
 388.464 -	IMPORT_C ~CMtmRegistryControl();
 388.465 -
 388.466 -	IMPORT_C TInt InstallMtmGroup(const TDesC& aFullName,TUid& aMtmTypeUid);
 388.467 -	IMPORT_C TInt FullNameToMtmTypeUid(const TDesC& aFullName,TUid& aMtmTypeUid) const;
 388.468 -	IMPORT_C TInt DeInstallMtmGroup(TUid aMtmTypeUid);  //  returns error on storing registry
 388.469 -
 388.470 -	IMPORT_C TInt UseMtmGroup(TUid aMtmTypeUid);
 388.471 -	IMPORT_C TInt ReleaseMtmGroup(TUid aMtmTypeUid);  
 388.472 -	IMPORT_C TBool IsInUse(TUid aMtmTypeUid) const;
 388.473 -
 388.474 -	IMPORT_C TInt FillRegisteredMtmDllArray(TUid aMtmDllTypeUid,CRegisteredMtmDllArray& aRegisteredMtmDllArray,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=0);  // Fill array with Dlls whose second uid is aMtmDllTypeUid
 388.475 -	IMPORT_C CMtmGroupData* GetMtmGroupDataL(TUid aMtmTypeUid) const;  
 388.476 -	const CMtmGroupData& GetMtmGroupDataReferenceL(TUid aMtmTypeUid) const;  
 388.477 -
 388.478 -	IMPORT_C void StoreRegistryL() const;
 388.479 -	IMPORT_C void RestoreRegistryL();
 388.480 -
 388.481 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 388.482 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 388.483 -
 388.484 -private:
 388.485 -	CMtmRegistryControl(RFs& anFs,CServerMtmDllRegistry& aServerMtmDllRegistry);
 388.486 -	void ConstructL();
 388.487 -	TInt MtmTypeUidToIndex(TUid aMtmTypeUid) const;
 388.488 -	TInt UidTypeToIndex(TUidType aUidType) const;
 388.489 -	void DoInstallMtmGroupL(const TDesC& aFullName,TUid& aMtmTypeUid);
 388.490 -	CMtmGroupData* ReadDataFileStoreL(const TDesC& aFullName) const;
 388.491 -	void DoDeInstallMtmGroupL(TUid aMtmTypeUid);
 388.492 -	void DoInternalizeL(RReadStream& aStream);
 388.493 -	void AddInstalledMtmGroupL(CInstalledMtmGroup* aInstalledMtmGroup);
 388.494 -	void RemoveInstalledMtmGroup(TUid aMtmTypeUid);
 388.495 -	TBool IsResFileL(const TDesC& aFullName) const;
 388.496 -	TUid DoFindMtmTypeUidL(const TDesC& aFullName) const;
 388.497 -	
 388.498 -	CMtmGroupData *LoadMTMFileL(const TDesC& aFullName, TUid &aUid);
 388.499 -	CMtmGroupData *LoadDatFileL(const TDesC& aFullName, TUid &aUid);
 388.500 -	CMtmGroupData *LoadResFileL(const TDesC& aFullName, TUid &aUid);	
 388.501 -private:
 388.502 -	RFs& iFs;
 388.503 -	CInstalledMtmGroupArray iInstalledMtmGroupArray;
 388.504 -	CServerMtmDllRegistry& iServerMtmDllRegistry;
 388.505 -	};
 388.506 -
 388.507 -#endif	// __MTSR_H__
   389.1 --- a/epoc32/include/mtud.rh	Tue Mar 16 16:12:26 2010 +0000
   389.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   389.3 @@ -1,31 +0,0 @@
   389.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   389.5 -// All rights reserved.
   389.6 -// This component and the accompanying materials are made available
   389.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   389.8 -// which accompanies this distribution, and is available
   389.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  389.10 -//
  389.11 -// Initial Contributors:
  389.12 -// Nokia Corporation - initial contribution.
  389.13 -//
  389.14 -// Contributors:
  389.15 -//
  389.16 -// Description:
  389.17 -//
  389.18 -
  389.19 -#include <mtud.hrh>
  389.20 -
  389.21 -STRUCT MTUD_FUNCTION
  389.22 -	{
  389.23 -	LTEXT functiontext="";// Cannot be longer that 40 characters
  389.24 -	LONG  command=0;
  389.25 -	LONG  key;
  389.26 -	BYTE  keymodifiers=EMtudCtrl;
  389.27 -	LONG  flags=0;
  389.28 -	BYTE  type=0;
  389.29 -	}
  389.30 -
  389.31 -STRUCT MTUD_FUNCTION_ARRAY
  389.32 -    {
  389.33 -    STRUCT functions[];
  389.34 -    }
   390.1 --- a/epoc32/include/mtudcbas.h	Tue Mar 16 16:12:26 2010 +0000
   390.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   390.3 @@ -1,362 +0,0 @@
   390.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   390.5 -// All rights reserved.
   390.6 -// This component and the accompanying materials are made available
   390.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   390.8 -// which accompanies this distribution, and is available
   390.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  390.10 -//
  390.11 -// Initial Contributors:
  390.12 -// Nokia Corporation - initial contribution.
  390.13 -//
  390.14 -// Contributors:
  390.15 -//
  390.16 -// Description:
  390.17 -//
  390.18 -
  390.19 -#if !defined(__MTUDBAS_H__)
  390.20 -#define __MTUDBAS_H__
  390.21 -
  390.22 -#if !defined(__MSVSTD_H__)
  390.23 -#include <msvstd.h>
  390.24 -#endif
  390.25 -
  390.26 -#if !defined(__MSVREG_H__)
  390.27 -#include <msvreg.h>
  390.28 -#endif
  390.29 -
  390.30 -#if !defined(__MTCLREG_H__)
  390.31 -#include <mtclreg.h>
  390.32 -#endif
  390.33 -
  390.34 -#if !defined(__BARSREAD_H__)
  390.35 -#include <barsread.h>
  390.36 -#endif
  390.37 -
  390.38 -// Forward references
  390.39 -class CFbsBitmap;
  390.40 -class CCoeEnv;
  390.41 -
  390.42 -///////////////////////////////////////////////////
  390.43 -// CBaseMtmUiData - MTM Ui data layer base API   //
  390.44 -///////////////////////////////////////////////////
  390.45 -class CBaseMtmUiData : public CBase
  390.46 -/** Base class for UI Data MTM components. 
  390.47 -
  390.48 -CBaseMtmUiData-derived classes allow message client applications to customise 
  390.49 -dynamically their user interfaces for a particular message type. For example, 
  390.50 -if a message client application currently had a fax entry selected, then it 
  390.51 -could use the fax MTM's concrete class to get information on the menus and 
  390.52 -icons that it should display. 
  390.53 -
  390.54 -Specifically, functionality falls into the following three areas:
  390.55 -
  390.56 -1. supplying MTM-specific icons for Message Server entries
  390.57 -
  390.58 -2. supplying user interface text, e.g. for menus, for MTM-specific operations
  390.59 -
  390.60 -3. providing checks that MTM functions are suitable for use on an entry. It is 
  390.61 -intended that client applications will use these functions to select dynamically 
  390.62 -the user interface features available dependent on the entry currently selected 
  390.63 -within the application. For example, menu items that do not apply to particular 
  390.64 -entries could be greyed out. Note that OperationSupportedL() performs a similar 
  390.65 -function for MTM-specific functions. Implementations should determine if the 
  390.66 -operation is supported by checking the properties of the entry, such as its 
  390.67 -type. If the operation is not appropriate on the entry, then the aReasonResourceId 
  390.68 -argument is set to the ID of a string in the UI Data MTM's resource file 
  390.69 -that explains why not. Otherwise, aReasonResourceId is 0.
  390.70 -
  390.71 -Message client applications use the class to access such functionality polymorphically. 
  390.72 -MTM implementers implement this class to provide such functionality for their 
  390.73 -message protocol. 
  390.74 -@publishedAll
  390.75 -@released
  390.76 -*/
  390.77 -	{
  390.78 -public:
  390.79 -	// --- Types ---
  390.80 -	/** Defines an array of icon bitmaps for the UI Data MTM. 
  390.81 -	
  390.82 -	It is used in the definition of CBaseMtmUiData::iIconArrays. */
  390.83 -	typedef CArrayPtr<CFbsBitmap> CBitmapArray;
  390.84 -	//
  390.85 -	// --- Inline class ---
  390.86 -	class TMtmUiFunction
  390.87 -	/** Provides the interface for clients to access MTM-specific functions, and present 
  390.88 -	these functions to the user. A message client application can use this information to customise the UI.
  390.89 -
  390.90 -	The class encapsulates information relating to an MTM-specific operation:
  390.91 -
  390.92 -	1. human-readable name: for display on the UI
  390.93 -
  390.94 -	2. ID: used to invoke the operation through the CBaseMtmUi::InvokeSyncFunctionL()/InvokeAsyncFunctionL() functions on the associated User Interface MTM 
  390.95 -
  390.96 -	3. a suggested hot-key that the UI should support for the operation
  390.97 -
  390.98 -	4. flags that describe further operation characteristics. 
  390.99 -@publishedAll
 390.100 -@released
 390.101 -*/
 390.102 -		{
 390.103 -		friend class CBaseMtmUiData;// For access to constructor
 390.104 -	public:
 390.105 -		// --- Constants ---
 390.106 -		/** Enum to define UI Data base class constants. */
 390.107 -		enum 
 390.108 -			{
 390.109 -			/** Maximum length for operation caption. Used in defining iCaption. */
 390.110 -			ECaptionMaxLen=40
 390.111 -			};
 390.112 -
 390.113 -	public:
 390.114 -		// --- Construction ---
 390.115 -		IMPORT_C TMtmUiFunction(TResourceReader& aResourceReader);		
 390.116 -		IMPORT_C TMtmUiFunction(const TMtmUiFunction& aFunc);		
 390.117 -
 390.118 -	private:
 390.119 -		// --- Private functions ---
 390.120 -		void SetModifiersFromResourceDefinition(TInt aResourceFileModifiers);		
 390.121 -
 390.122 -	public:
 390.123 -		// --- Data ---
 390.124 -		/** String, suitable for a menu, describing the operation. */
 390.125 -		TBuf<ECaptionMaxLen>		iCaption;
 390.126 -		/** Character code for a suggested hotkey for the operation. */
 390.127 -		TInt						iPreferredHotKeyKeyCode;
 390.128 -		/** Suggested key modifiers for the hotkey.  */
 390.129 -		TInt						iPreferredHotKeyModifiers;
 390.130 -		/** The ID that can be used to invoke the operation. */
 390.131 -		TInt						iFunctionId;
 390.132 -		/** Flags setting location characteristics of the operation. */
 390.133 -		TUint8						iFunctionType;	// see MTUD.HRH
 390.134 -		/** Flags setting characteristics of the operation. */
 390.135 -		TInt						iFlags;			// see MTUD.HRH
 390.136 -		};
 390.137 -	//
 390.138 -	// --- Destruction ---
 390.139 -	IMPORT_C virtual ~CBaseMtmUiData();
 390.140 -	//
 390.141 -	// --- Accessor functions ---
 390.142 -	IMPORT_C TUid Type() const;
 390.143 -	//
 390.144 -	// --- Context icons ---
 390.145 -	/** Gets an array of bitmaps relevant to the passed context entry. 
 390.146 -	
 390.147 -	The bitmaps within the array should be representations of the same bitmap at various sizes. 
 390.148 -	
 390.149 -	The aStateFlags argument indicates the user interface state, for example, 
 390.150 -	"open", of the entry. 
 390.151 -	
 390.152 -	Requirements:
 390.153 -	
 390.154 -	Implementations should check the type of the context, using TMsvEntry::iType::iUid, 
 390.155 -	and the passed state, and return an appropriate bitmap array.
 390.156 -	
 390.157 -	@param aContext Context entry to return the icons for. 
 390.158 -	@param aStateFlags Flasgs indicating the user interface state of the entry. 
 390.159 -	@return Bitmap array for the given context.. */
 390.160 -	virtual const CBitmapArray& ContextIcon(const TMsvEntry& aContext, TInt aStateFlags) const = 0;
 390.161 -	//
 390.162 -	// --- MTM-Specific function information (e.g. for dynamically-added menu items) ---
 390.163 -	IMPORT_C const CArrayFix<TMtmUiFunction>& MtmSpecificFunctions() const;
 390.164 -	IMPORT_C TBool FunctionRecognised(TInt aFunctionId) const;
 390.165 -	//
 390.166 -	// --- Provide context-specific function information ---
 390.167 -	/** Tests if an entry can be created as a child.
 390.168 -	
 390.169 -	@param aParent The entry under which aNewEntry should be created. 
 390.170 -	@param aNewEntry The entry to which the operation applies. 
 390.171 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.172 -	@return ETrue, if the operation is appropriate on the entry; 
 390.173 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.174 -	virtual TBool CanCreateEntryL(const TMsvEntry& aParent, TMsvEntry& aNewEntry, TInt& aReasonResourceId) const = 0;
 390.175 -	/** Tests if a delete operation is supported.
 390.176 -	
 390.177 -	@param aContext The entry to which the operation applies. 
 390.178 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.179 -	@return ETrue, if the operation is appropriate on the entry; 
 390.180 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.181 -	virtual TBool CanDeleteFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.182 -	/** Tests if the entry can be undeleted.
 390.183 -	
 390.184 -	@param aContext The entry to which the operation applies. 
 390.185 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.186 -	@return ETrue, if the operation is appropriate on the entry; 
 390.187 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.188 -	IMPORT_C virtual TBool CanUnDeleteFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const;
 390.189 -	/** Tests if the service entry can be deleted.
 390.190 -	
 390.191 -	@param aService The service entry to which the operation applies. 
 390.192 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.193 -	@return ETrue, if the operation is appropriate on the entry; 
 390.194 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.195 -	virtual TBool CanDeleteServiceL(const TMsvEntry& aService, TInt& aReasonResourceId) const = 0;
 390.196 -	/** Tests if an entry can be replied to.
 390.197 -	
 390.198 -	@param aContext The entry to which the operation applies. 
 390.199 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.200 -	@return ETrue, if the operation is appropriate on the entry; 
 390.201 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.202 -	virtual TBool CanReplyToEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.203 -	/** Tests if an entry can be forwarded.
 390.204 -	
 390.205 -	@param aContext The entry to which the operation applies. 
 390.206 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.207 -	@return ETrue, if the operation is appropriate on the entry; 
 390.208 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.209 -	virtual TBool CanForwardEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.210 -	/** Tests if the entry can be edited.
 390.211 -	
 390.212 -	@param aContext The entry to which the operation applies. 
 390.213 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.214 -	@return ETrue, if the operation is appropriate on the entry; 
 390.215 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.216 -	virtual TBool CanEditEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.217 -	/** Tests if an entry can be viewed.
 390.218 -	
 390.219 -	@param aContext The entry to which the operation applies. 
 390.220 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.221 -	@return ETrue, if the operation is appropriate on the entry; 
 390.222 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.223 -	virtual TBool CanViewEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.224 -	/** Tests if an entry can be opened.
 390.225 -	
 390.226 -	@param aContext The entry to which the operation applies. 
 390.227 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.228 -	@return ETrue, if the operation is appropriate on the entry; 
 390.229 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.230 -	virtual TBool CanOpenEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.231 -	/** Tests if a close operation is supported.
 390.232 -	
 390.233 -	@param aContext The entry to which the operation applies. 
 390.234 -	@param aReasonResourceId On return, a resource string ID, or 0 if operation 
 390.235 -	is supported. 
 390.236 -	@return ETrue, if the operation is appropriate on the entry; 
 390.237 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.238 -	virtual TBool CanCloseEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.239 -	/** Tests if a copy from or move to operation is supported.
 390.240 -	
 390.241 -	@param aContext The entry to which the operation applies. 
 390.242 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.243 -	@return ETrue, if the operation is appropriate on the entry; 
 390.244 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.245 -	virtual TBool CanCopyMoveToEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.246 -	/** Tests whether a copy from or move from operation is supported.
 390.247 -	
 390.248 -	@param aContext The entry to which the operation applies. 
 390.249 -	@param aReasonResourceId On return, a resource string ID or 0. 
 390.250 -	@return ETrue, if the operation is appropriate on the entry; 
 390.251 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.252 -	virtual TBool CanCopyMoveFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.253 -	/** Tests if the current operation on the entry can be cancelled.
 390.254 -	
 390.255 -	@param aContext The entry to which the operation applies. 
 390.256 -	@param aReasonResourceId On return, a resource string ID, or 0 if operation 
 390.257 -	is supported. 
 390.258 -	@return ETrue, if the operation is appropriate on the entry; 
 390.259 -	EFalse, if the operation is NOT appropriate on the entry. */
 390.260 -	virtual TBool CanCancelL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 390.261 -	//
 390.262 -	// --- RTTI ---
 390.263 -	/** Tests if an MTM-specific operation is appropriate to the specified entry. The 
 390.264 -	operation specified must have been obtained from a call to MtmSpecificFunctions(). 
 390.265 -		
 390.266 -	It is intended that client applications will use this function to select dynamically 
 390.267 -	the MTM-specific user interface features available dependent on the entry 
 390.268 -	currently selected within the application.
 390.269 -	
 390.270 -	Requirements:
 390.271 -	
 390.272 -	Implementations should check the type of the context, using TMsvEntry::iType::iUid, 
 390.273 -	and use any other information required available from the context, to determine 
 390.274 -	if the operation is supported.
 390.275 -	
 390.276 -	@param aOperationId ID of operation to query. 
 390.277 -	@param aContext The entry to which the operation applies. 
 390.278 -	@return KErrNone: operation is appropriate to User Interface MTM and entry. 
 390.279 -	Other: if the operation is not appropriate on the entry, then this is the 
 390.280 -	ID of a string in the UI Data MTM's resource file that explains why not. */
 390.281 -	virtual TInt OperationSupportedL(TInt aOperationId, const TMsvEntry& aContext) const = 0; // returns 0 if operation *IS* supported, otherwise a resource ID for the reason text
 390.282 -	/** Queries if the MTM supports a particular capability, specified by a UID. 
 390.283 -	
 390.284 -	Requirements:
 390.285 -	
 390.286 -	Implementations should check aCapability for the standard capability values 
 390.287 -	and return a suitable response in aResponse. If aFunctionId is unknown, return 
 390.288 -	KErrNotSupported.
 390.289 -	
 390.290 -	@param aFunctionId UID of capability to be queried 
 390.291 -	@param aResponse Response value. The format of the response varies according 
 390.292 -	to the capability. 
 390.293 -	@return KErrNone: aFunctionId is a recognised value and a response is returned 
 390.294 -	KErrNotSupported: aFunctionId is not a recognised value */
 390.295 -	virtual TInt QueryCapability(TUid aFunctionId, TInt& aResponse) const = 0;
 390.296 -	/** Provides status text for the sending state of the entry.
 390.297 -	
 390.298 -	@param aContext Entry to query
 390.299 -	@return Descriptor containing status text. */
 390.300 -	virtual HBufC* StatusTextL(const TMsvEntry& aContext) const = 0;
 390.301 -
 390.302 -protected:
 390.303 -	// --- Construction ---
 390.304 -	IMPORT_C CBaseMtmUiData(CRegisteredMtmDll& aRegisteredMtmDll);
 390.305 -	IMPORT_C void ConstructL();
 390.306 -	/** Initialises bitmaps and function information. 
 390.307 -	
 390.308 -	Client applications do not use this function. It is relevant only to implementers of derived classes.
 390.309 -	
 390.310 -	Requirements:
 390.311 -	
 390.312 -	This function is called by the base class ConstructL() function. Implementations 
 390.313 -	should provide this function to:
 390.314 -	
 390.315 -	1. insert MTM-specific icon bitmap arrays into the iIconArrays array data member 
 390.316 -	
 390.317 -	2. insert MTM-specific operation information into the iMtmSpecificFunctions array 
 390.318 -	data member */
 390.319 -	virtual void PopulateArraysL() = 0; // Should populate iCapabilities, iMtmSpecificFunctions and iIconArrays
 390.320 -	/** Gets the resource file name. 
 390.321 -	
 390.322 -	Client applications do not use this function. It is relevant only to implementers of derived classes.
 390.323 -	
 390.324 -	Requirements:
 390.325 -	
 390.326 -	Each UI Data MTM can have a resource file associated with it. Implementations 
 390.327 -	should set aFilename to the full path and name of this resource file. The 
 390.328 -	function is called by CBaseMtmUiData::ConstructL(), which then loads the resource 
 390.329 -	file.
 390.330 -	
 390.331 -	@param aFileName Filename buffer to be filled with the resource file path 
 390.332 -	and name */
 390.333 -	virtual void GetResourceFileName(TFileName& aFileName) const = 0;
 390.334 -	//
 390.335 -	// --- Utility ---
 390.336 -	IMPORT_C void ReadFunctionsFromResourceFileL(TInt aResourceId);// Up to clients to call this if necessary
 390.337 -	IMPORT_C void CreateBitmapsL(TInt aNumZoomStates, const TDesC& aBitmapFile, TInt aStartBitmap, TInt aEndBitmap);
 390.338 -	CFbsBitmap* CreateBitmapL(const TDesC& aFileName, TInt aId) const;
 390.339 -
 390.340 -	// Method used for extension: called by non virtual methods that need 
 390.341 -	// to have a polymorphic behaviour.
 390.342 -	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 390.343 -
 390.344 -protected:
 390.345 -	// --- Data ---
 390.346 -	/** Control environment object. It is set by the constructor. */
 390.347 -	CCoeEnv*									iCoeEnv;
 390.348 -	/** The array that stores the arrays of icon bitmaps for the UI Data MTM. Items 
 390.349 -	are added to the array by PopulateArraysL(). */
 390.350 -	CArrayPtr<CBitmapArray>*					iIconArrays;
 390.351 -	/** The array that stores MTM-specific function information for the UI Data MTM. 
 390.352 -	Items are added to the array by ReadFunctionsFromResourceFileL(). */
 390.353 -	CArrayFix<TMtmUiFunction>*					iMtmSpecificFunctions;
 390.354 -
 390.355 -private:
 390.356 -	// --- Data ---
 390.357 -	TInt										iResourceFileOffset;
 390.358 -	CRegisteredMtmDll&							iRegisteredMtmDll;  // Required in order to call ReleaseLibrary()
 390.359 -
 390.360 -	// Extra data member to allow for future extensions
 390.361 -	TAny* iExtensionData;
 390.362 -	};
 390.363 -
 390.364 -
 390.365 -#endif // __MTUDBAS_H__
   391.1 --- a/epoc32/include/mtudreg.h	Tue Mar 16 16:12:26 2010 +0000
   391.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   391.3 @@ -1,87 +0,0 @@
   391.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   391.5 -// All rights reserved.
   391.6 -// This component and the accompanying materials are made available
   391.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   391.8 -// which accompanies this distribution, and is available
   391.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  391.10 -//
  391.11 -// Initial Contributors:
  391.12 -// Nokia Corporation - initial contribution.
  391.13 -//
  391.14 -// Contributors:
  391.15 -//
  391.16 -// Description:
  391.17 -//
  391.18 -
  391.19 -#if !defined __MTUDREG_H__
  391.20 -#define __MTUDREG_H__
  391.21 -
  391.22 -#if !defined (__MTCLREG_H__)
  391.23 -#include <mtclreg.h>
  391.24 -#endif
  391.25 -
  391.26 -class CBaseMtmUiData;
  391.27 -
  391.28 -/** UI Data MTM factory function.
  391.29 -
  391.30 -A concrete UI Data MTM must implement an exported factory function of this 
  391.31 -type. It should return an instance of the CBaseMtmUiData-derived class that 
  391.32 -provides the implementation. The factory function is called by the UI Data 
  391.33 -MTM registry when a client requests this UI Data MTM. 
  391.34 -
  391.35 -A CBaseMtmUiData-derived class typically provides a NewL() function, which 
  391.36 -the factory function calls. 
  391.37 -
  391.38 -The factory function is called by ordinal. The ordinal of the function must 
  391.39 -match that recorded in the MTM's registry information. 
  391.40 -
  391.41 -The CRegisteredMtmDll& argument passes the registration data for the MTM DLL.
  391.42 -
  391.43 -The return value is a newly-created instance of the CBaseMtmUi-derived class 
  391.44 -for the User Interface MTM.
  391.45 -
  391.46 -The factory function should leave if it cannot create the object. 
  391.47 -
  391.48 -For example, a UI Data MTM whose concrete class was CEgMtmUiData could define 
  391.49 -a suitable factory function as: 
  391.50 -
  391.51 -@code
  391.52 -EXPORT_C CBaseMtmUiData* NewEgMtmL(CRegisteredMtmDll& aRegisteredMtmDll)
  391.53 -	{
  391.54 -	return CEgMtmUiData::NewL(aRegisteredMtmDll);
  391.55 -	}
  391.56 -@endcode */
  391.57 -typedef CBaseMtmUiData* MtmUiDataFactoryFunctionL(CRegisteredMtmDll&);
  391.58 -
  391.59 -// Client side MTM UI data registry
  391.60 -
  391.61 -class CMtmUiDataRegistry : public CObserverRegistry
  391.62 -/** Accesses the UI Data MTM registry. 
  391.63 -
  391.64 -This registry holds details of the all the 
  391.65 -UI Data MTMs currently available on the system. Message client applications 
  391.66 -use this class to get a CBaseMtmUiData-derived object by which to access UI 
  391.67 -Data MTM functionality.
  391.68 -
  391.69 -Note that the base class CMtmDllRegistry provides functions for discovering 
  391.70 -what MTMs are present in the registry. 
  391.71 -@publishedAll
  391.72 -@released
  391.73 -*/
  391.74 -	{
  391.75 -public:
  391.76 -	IMPORT_C static CMtmUiDataRegistry* NewL(CMsvSession& aMsvSession,
  391.77 -		TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=TTimeIntervalMicroSeconds32(30000000));
  391.78 -	virtual ~CMtmUiDataRegistry();
  391.79 -	IMPORT_C CBaseMtmUiData* NewMtmUiDataLayerL(const TUid& aMtmTypeUid);
  391.80 -	//
  391.81 -protected:
  391.82 -	CMtmUiDataRegistry(CMsvSession& aMsvSession, TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  391.83 -	//
  391.84 -private:
  391.85 -	CBaseMtmUiData* NewMtmL(const RLibrary& aLib, CRegisteredMtmDll& aReg) const;
  391.86 -	};
  391.87 -
  391.88 -
  391.89 -
  391.90 -#endif // __MTUDREG_H__
   392.1 --- a/epoc32/include/mtuireg.h	Tue Mar 16 16:12:26 2010 +0000
   392.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   392.3 @@ -1,92 +0,0 @@
   392.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   392.5 -// All rights reserved.
   392.6 -// This component and the accompanying materials are made available
   392.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   392.8 -// which accompanies this distribution, and is available
   392.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  392.10 -//
  392.11 -// Initial Contributors:
  392.12 -// Nokia Corporation - initial contribution.
  392.13 -//
  392.14 -// Contributors:
  392.15 -//
  392.16 -// Description:
  392.17 -// MTM client-side MTMUI registry class 
  392.18 -// 
  392.19 -//
  392.20 -
  392.21 -#if !defined __MTUIREG_H__
  392.22 -#define __MTUIREG_H__
  392.23 -
  392.24 -
  392.25 -#if !defined (__E32BASE_H__)
  392.26 -#include <e32base.h>		// CActive, TFileName etc.
  392.27 -#endif
  392.28 -
  392.29 -#if !defined (__MTCLREG_H__)
  392.30 -#include <mtclreg.h>
  392.31 -#endif
  392.32 -
  392.33 -class CBaseMtmUi;
  392.34 -
  392.35 -/** UI MTM factory function.
  392.36 -
  392.37 -A concrete User Interface MTM must implement an exported factory function of 
  392.38 -this type. It should return an instance of the CBaseMtmUi-derived class that 
  392.39 -provides the implementation. The factory function is called by the User Interface 
  392.40 -MTM registry when a client requests this User Interface MTM.
  392.41 -
  392.42 -A CBaseMtmUi-derived class typically provides a NewL() function, which the 
  392.43 -factory function calls.
  392.44 -
  392.45 -The factory function is called by ordinal. The ordinal of the function must 
  392.46 -match that recorded in the MTM's registry information. 
  392.47 -
  392.48 -For example, a User Interface MTM whose concrete class was CEgMtmUi could 
  392.49 -define a suitable factory function as:
  392.50 -
  392.51 -@code
  392.52 -EXPORT_C CBaseMtmUi* NewEgMtmUiL(CBaseMtm& aMtm, CRegisteredMtmDll& aRegisteredDll)
  392.53 -	{
  392.54 -	return CEgMtmUi::NewL(aMtm, aRegisteredDll);
  392.55 -	}@endcode
  392.56 -
  392.57 -@param aBaseMtm The CBaseMtm requesting the object.
  392.58 -@param aRegisteredMtmDll Registration data for the MTM DLL.
  392.59 -@return A newly-created instance of the CBaseMtmUi-derived class 
  392.60 -for the User Interface MTM.
  392.61 -@leave Any The factory function should leave if it cannot create the object. */
  392.62 -typedef CBaseMtmUi* MtmUiFactoryFunctionL(CBaseMtm&, CRegisteredMtmDll&);
  392.63 -
  392.64 -// Client side MTM registry
  392.65 -
  392.66 -class CMtmUiRegistry : public CObserverRegistry
  392.67 -/** Accesses the User Interface MTM registry. 
  392.68 -
  392.69 -This registry holds details of the 
  392.70 -all the User Interface MTMs currently available on the system. Message client 
  392.71 -applications use this class to get a CBaseMtmUi-derived object by which to 
  392.72 -access User Interface MTM functionality.
  392.73 -
  392.74 -Note that the base class CMtmDllRegistry provides functions for discovering 
  392.75 -what MTMs are present in the registry. 
  392.76 -@publishedAll
  392.77 -@released
  392.78 -*/
  392.79 -	{
  392.80 -public:
  392.81 -	IMPORT_C static CMtmUiRegistry* NewL(CMsvSession& aMsvSession,
  392.82 -		TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=TTimeIntervalMicroSeconds32(30000000));
  392.83 -	virtual ~CMtmUiRegistry();
  392.84 -	IMPORT_C CBaseMtmUi* NewMtmUiL(CBaseMtm& aMtm);
  392.85 -	//
  392.86 -protected:
  392.87 -	CMtmUiRegistry(CMsvSession& aMsvSession, TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  392.88 -	//
  392.89 -private:
  392.90 -	CBaseMtmUi* NewMtmL(const RLibrary& aLib, CBaseMtm& aMtm, CRegisteredMtmDll& aReg) const;
  392.91 -	};
  392.92 -
  392.93 -
  392.94 -
  392.95 -#endif // __MTUIREG_H__
   393.1 --- a/epoc32/include/mturutils.h	Tue Mar 16 16:12:26 2010 +0000
   393.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   393.3 @@ -1,35 +0,0 @@
   393.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   393.5 -// All rights reserved.
   393.6 -// This component and the accompanying materials are made available
   393.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   393.8 -// which accompanies this distribution, and is available
   393.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  393.10 -//
  393.11 -// Initial Contributors:
  393.12 -// Nokia Corporation - initial contribution.
  393.13 -//
  393.14 -// Contributors:
  393.15 -//
  393.16 -// Description:
  393.17 -//
  393.18 -
  393.19 -#ifndef __MTURUTILS_H__
  393.20 -#define __MTURUTILS_H__
  393.21 -
  393.22 -#include <msvstd.h>
  393.23 -
  393.24 -class MturUtils
  393.25 -/** Utility class that is used to start an application to 
  393.26 -edit a specified message.
  393.27 -
  393.28 -@publishedAll
  393.29 -@released
  393.30 -*/
  393.31 -{
  393.32 -public:
  393.33 -	IMPORT_C static void LaunchEditorL(TMsvId aId);
  393.34 -	IMPORT_C static void LaunchEditorAndWaitL(TMsvId aId);
  393.35 -	IMPORT_C static void LaunchEditorL(TMsvId aId, RThread& aThread, TRequestStatus& aStatus);
  393.36 -};
  393.37 -
  393.38 -#endif
   394.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   394.2 +++ b/epoc32/include/mw/animation.h	Wed Mar 31 12:27:01 2010 +0100
   394.3 @@ -0,0 +1,75 @@
   394.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   394.5 +// All rights reserved.
   394.6 +// This component and the accompanying materials are made available
   394.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   394.8 +// which accompanies this distribution, and is available
   394.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  394.10 +//
  394.11 +// Initial Contributors:
  394.12 +// Nokia Corporation - initial contribution.
  394.13 +//
  394.14 +// Contributors:
  394.15 +//
  394.16 +// Description:
  394.17 +//
  394.18 +
  394.19 +#ifndef __ANIMATION_H__
  394.20 +#define __ANIMATION_H__
  394.21 +
  394.22 +#include <animationmixins.h>
  394.23 +
  394.24 +class TAnimationConfig;
  394.25 +
  394.26 +/** Pure virtual base class for animations.
  394.27 +
  394.28 +This defines an abstracted interface between a client application and an
  394.29 +animation.  Most of the implementation details are handled by an animator
  394.30 +plugin.  The source of the animation data and its interpretation are usually
  394.31 +handled by a data provider.
  394.32 +
  394.33 +@see CAnimationDataProvider
  394.34 +@see CAnimator
  394.35 +@see MAnimationObserver
  394.36 +@publishedAll
  394.37 +@released*/
  394.38 +class CAnimation : public CBase
  394.39 +	{
  394.40 +public:
  394.41 +	/** Causes the animation to start, at the first time step or logical
  394.42 +	equivalent.  If the animation is already running, it rewinds.
  394.43 +	@see TAnimationConfig
  394.44 +	@param aConfig Specifies run time attributes of the animation.*/
  394.45 +	virtual void Start(const TAnimationConfig& aConfig) = 0;
  394.46 +	/** Causes the animation to stop, and rewinds to the first frame.*/
  394.47 +	virtual void Stop() = 0;
  394.48 +	/** Causes the animation to stop, but without rewinding.*/
  394.49 +	virtual void Pause() = 0;
  394.50 +	/** Causes a paused animation to continue from where it left off.*/
  394.51 +	virtual void Resume() = 0;
  394.52 +	/** Puts an animation on hold, which is similar to pause, but keeps
  394.53 +	track of the time steps passing and catches up when resumed.  This
  394.54 +	can be used to temporarily cease processing an animation without it
  394.55 +	getting out of step with others.*/
  394.56 +	virtual void Hold() = 0;
  394.57 +	/** Resumes a held animation.*/
  394.58 +	virtual void Unhold() = 0;
  394.59 +	/** Sets the coordinates of the animation.  This generally refers
  394.60 +	to the top left corner of the total area the animation covers.
  394.61 +	@param aPoint The new coordinates of the animation (usually the top left
  394.62 +	corner)*/
  394.63 +	virtual void SetPosition(const TPoint& aPoint) = 0;
  394.64 +	/** Causes whatever ticker this animation provides to its animator to
  394.65 +	be frozen untill a corresponding call to unfreeze.
  394.66 +	
  394.67 +	You should not normally need to call this function.
  394.68 +	@see Unfreeze()*/
  394.69 +	virtual void Freeze() = 0;
  394.70 +	/** Causes whatever ticker this animation provides to its animator to
  394.71 +	be unfrozen.
  394.72 +	
  394.73 +	You should not normally need to call this function.
  394.74 +	@see Freeze()*/	
  394.75 +	virtual void Unfreeze() = 0;
  394.76 +	};
  394.77 +
  394.78 +#endif //__ANIMATION_H__
   395.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   395.2 +++ b/epoc32/include/mw/animationconfig.h	Wed Mar 31 12:27:01 2010 +0100
   395.3 @@ -0,0 +1,51 @@
   395.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   395.5 +// All rights reserved.
   395.6 +// This component and the accompanying materials are made available
   395.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   395.8 +// which accompanies this distribution, and is available
   395.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  395.10 +//
  395.11 +// Initial Contributors:
  395.12 +// Nokia Corporation - initial contribution.
  395.13 +//
  395.14 +// Contributors:
  395.15 +//
  395.16 +// Description:
  395.17 +//
  395.18 +
  395.19 +#ifndef __ANIMATIONCONFIG_H__
  395.20 +#define __ANIMATIONCONFIG_H__
  395.21 +
  395.22 +struct TAnimationConfig
  395.23 +/** These are passed to animator objects when an animation is started and
  395.24 +provide some control over the manner in which the animation runs.
  395.25 +@publishedAll
  395.26 +@released*/
  395.27 +	{
  395.28 +	enum TFlags
  395.29 +	/** Flag values used by animator objects when an animation is started that
  395.30 +	provide some control over the manner in which the animation runs. 
  395.31 +
  395.32 +	@publishedAll
  395.33 +	@released */
  395.34 + 		{
  395.35 +		/** If set, interpret the iData member as the number of times the
  395.36 +		animation should run before automatically stopping itself.*/
  395.37 +		ELoop				= 0x0001,
  395.38 +		/** If set, the animation will start as soon as it can.  By default,
  395.39 +		animations wait for the data to be completely loaded before starting.*/
  395.40 +		EStartImmediately	= 0x0010,
  395.41 +		/** If set, and ELoop is set, interpret the iData member as a number
  395.42 +		of frames to run through, instead of complete cycles.*/
  395.43 +		ECountFrames		= 0x0020,
  395.44 +		/** By default animations which stop after a number of loops return
  395.45 +		to the first frame.  If this flag is set they stop on the last frame.*/
  395.46 +		EEndOnLastFrame 	= 0x0040,
  395.47 +		};
  395.48 +	/** Set this to a combination of the values in TFlags.*/
  395.49 +	TInt iFlags;
  395.50 +	/** The meaning of this item depends on the value of the iFlags member.*/
  395.51 +	TInt iData;
  395.52 +	};
  395.53 +
  395.54 +#endif //__ANIMATIONCONFIG_H__
   396.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   396.2 +++ b/epoc32/include/mw/animationdataprovider.h	Wed Mar 31 12:27:01 2010 +0100
   396.3 @@ -0,0 +1,66 @@
   396.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   396.5 +// All rights reserved.
   396.6 +// This component and the accompanying materials are made available
   396.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   396.8 +// which accompanies this distribution, and is available
   396.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  396.10 +//
  396.11 +// Initial Contributors:
  396.12 +// Nokia Corporation - initial contribution.
  396.13 +//
  396.14 +// Contributors:
  396.15 +//
  396.16 +// Description:
  396.17 +//
  396.18 +
  396.19 +#ifndef __ANIMATIONDATAPROVIDER_H__
  396.20 +#define __ANIMATIONDATAPROVIDER_H__
  396.21 +
  396.22 +#include <e32std.h>
  396.23 +#include <animationframe.h>
  396.24 +
  396.25 +class MAnimationDataProviderObserver;
  396.26 +
  396.27 +_LIT8(KUndefinedAnimationDataType, "undefined");
  396.28 +
  396.29 +/**
  396.30 +Pure virtual base class for data providers.
  396.31 +
  396.32 +A data provider takes an animation specification (such as a file), converts
  396.33 +it (if needed) into a format recognised by an animator (such as CAnimationFrame
  396.34 +objects), and passes it to the animator, via the medium of an animation.
  396.35 +
  396.36 +Most animation types take a data provider as an argument during contruction.
  396.37 +For more detailed usage instructions, refer to the documentation of the derived
  396.38 +classes.
  396.39 +
  396.40 +@see CAnimation
  396.41 +@see MAnimationDataProviderObserver
  396.42 +@publishedAll
  396.43 +@released
  396.44 +*/
  396.45 +class CAnimationDataProvider : public CBase
  396.46 +	{
  396.47 +public:
  396.48 +    IMPORT_C void SetObserver(MAnimationDataProviderObserver* aObserver);
  396.49 +    /** Called from the animation when it is ready to begin receiving data. */
  396.50 +    virtual void StartL() = 0;
  396.51 +    /** Called from the animation to obtain the type of data to expect.
  396.52 +    @return An 8 bit identifier string*/
  396.53 +    virtual TPtrC8 DataType() = 0;
  396.54 +protected:
  396.55 +	IMPORT_C CAnimationDataProvider();
  396.56 +	IMPORT_C virtual void CAnimationDataProvider_Reserved1();
  396.57 +	IMPORT_C virtual void CAnimationDataProvider_Reserved2();
  396.58 +
  396.59 +    IMPORT_C void SendEventL(TInt aEvent);
  396.60 +    IMPORT_C void SendEventL(TInt aEvent, TInt aData);
  396.61 +    IMPORT_C void SendEventL(TInt aEvent, TAny* aData, TInt aDataSize);
  396.62 +protected: 
  396.63 +	/** Reserved for future use */
  396.64 +	TInt iCAnimationDataProvider_Reserved;
  396.65 +	/** The destination to send data to. Usually an animation class. */
  396.66 +	MAnimationDataProviderObserver* iObserver;
  396.67 +	};
  396.68 +
  396.69 +#endif // __ANIMATIONDATAPROVIDER_H__
   397.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   397.2 +++ b/epoc32/include/mw/animationevents.h	Wed Mar 31 12:27:01 2010 +0100
   397.3 @@ -0,0 +1,56 @@
   397.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   397.5 +// All rights reserved.
   397.6 +// This component and the accompanying materials are made available
   397.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   397.8 +// which accompanies this distribution, and is available
   397.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  397.10 +//
  397.11 +// Initial Contributors:
  397.12 +// Nokia Corporation - initial contribution.
  397.13 +//
  397.14 +// Contributors:
  397.15 +//
  397.16 +// Description:
  397.17 +//
  397.18 +
  397.19 +#ifndef __ANIMATIONEVENTS_H__
  397.20 +#define __ANIMATIONEVENTS_H__
  397.21 +
  397.22 +/** Generic events which all animation data providers can pass to animators.
  397.23 +
  397.24 +An implementation of CAnimation may intercept these and perform additional
  397.25 +processing if necessary.  
  397.26 +
  397.27 +Events specific to a particular data type should take values greater than
  397.28 +EAnimationReservedEvents.  Implementations of CAnimation should not intercept
  397.29 +or attempt to act on data type specific events.
  397.30 +@publishedAll
  397.31 +@released */
  397.32 +enum TAnimationEvent
  397.33 +	{
  397.34 +	/** Sent when the data itself has changed and the animator needs to be
  397.35 +	ready to	receive the new values */
  397.36 +	EAnimationDataChanged,
  397.37 +	/** Sent when an error occurs within the data provider and it is unable
  397.38 +	to complete the sending of the animation data */
  397.39 +	EAnimationDataProviderError,
  397.40 +	/** Specifies an upper limit for generic events.  Events larger than this
  397.41 +	are free to use for data type specific information */
  397.42 +	EAnimationReservedEvents = 0xFF
  397.43 +	};
  397.44 +
  397.45 +/** Events specific to the "bitmap" data type.  These events are only sent
  397.46 +by data providers dealing with bitmap frame animations, and are only understood
  397.47 +by bitmap animators.
  397.48 +@publishedAll
  397.49 +@released */
  397.50 +enum TBitmapAnimationEvent
  397.51 +	{
  397.52 +	/** This event contains data specifying the bitmaps for a new frame of
  397.53 +	animation */
  397.54 +	EBitmapAnimationNewFrame = EAnimationReservedEvents + 1,
  397.55 +	/** This event indicates that there are no more frames to send */
  397.56 +	EBitmapAnimationComplete,
  397.57 +	};
  397.58 +
  397.59 +#endif //__ANIMATIONEVENTS_H__
   398.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   398.2 +++ b/epoc32/include/mw/animationframe.h	Wed Mar 31 12:27:01 2010 +0100
   398.3 @@ -0,0 +1,92 @@
   398.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   398.5 +// All rights reserved.
   398.6 +// This component and the accompanying materials are made available
   398.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   398.8 +// which accompanies this distribution, and is available
   398.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  398.10 +//
  398.11 +// Initial Contributors:
  398.12 +// Nokia Corporation - initial contribution.
  398.13 +//
  398.14 +// Contributors:
  398.15 +//
  398.16 +// Description:
  398.17 +//
  398.18 +
  398.19 +#ifndef __ANIMATIONFRAME_H__
  398.20 +#define __ANIMATIONFRAME_H__
  398.21 +
  398.22 +#include <icl/imagedata.h>
  398.23 +
  398.24 +class CFbsBitmap;
  398.25 +
  398.26 +/**
  398.27 +Data format for individual bitmap format animation frames.
  398.28 +
  398.29 +Animators and data providers which use the "bitmap" data type use objects
  398.30 +of this type to transfer data.
  398.31 +
  398.32 +You do not need to instantiate an object of this type unless you are writing
  398.33 +a new data provider.
  398.34 +
  398.35 +@see CBitmapAnimator
  398.36 +@see CICLAnimationDataProvider
  398.37 +@publishedAll
  398.38 +@released
  398.39 +*/
  398.40 +class CAnimationFrame : public CBase
  398.41 +	{
  398.42 +public:
  398.43 +	/** Structure used for passing a CAnimationFrame safely over a
  398.44 +	client/server connection.*/
  398.45 +	struct THandles
  398.46 +		{
  398.47 +		/** A handle to the bitmap into which the decoded frame(s) are put */
  398.48 +		TInt iBitmapHandle;
  398.49 +		/**	The bitmap mask for the changed area for this frame */
  398.50 +		TInt iMaskHandle;
  398.51 +		/** General frame info provided by all plugins */
  398.52 +		TFrameInfo iFrameInfo;
  398.53 +		};
  398.54 +public:
  398.55 +	virtual ~CAnimationFrame();
  398.56 +	IMPORT_C static CAnimationFrame* NewL();
  398.57 +	IMPORT_C static CAnimationFrame* NewL(const THandles& aHandles);
  398.58 +	IMPORT_C void GetHandles(THandles & aHandles) const;
  398.59 +	IMPORT_C void SetHandlesL(const THandles & aHandles);
  398.60 +	IMPORT_C void CreateL(const TFrameInfo& aFrameInfo);
  398.61 +	/** Returns the bitmap image for the changed area for this frame
  398.62 +	@return A pointer to a CFbsBitmap */
  398.63 +	CFbsBitmap* Bitmap()				{ return iBitmap; }
  398.64 +	/** Returns the bitmap image for the changed area for this frame
  398.65 +	@return A pointer to a const CFbsBitmap */
  398.66 +	const CFbsBitmap* Bitmap() const	{ return iBitmap; }
  398.67 +	/** Returns the bitmap mask for the changed area for this frame
  398.68 +	@return A pointer to a CFbsBitmap */
  398.69 +	CFbsBitmap* Mask()					{ return iMask; }
  398.70 +	/** Returns the bitmap mask for the changed area for this frame
  398.71 +	@return A pointer to a const CFbsBitmap */
  398.72 +	const CFbsBitmap* Mask() const		{ return iMask; }
  398.73 +	/** Returns information about the frame.
  398.74 +  	@return A TFrameInfo */
  398.75 +  	TFrameInfo& FrameInfo() 			{ return iFrameInfo; }
  398.76 +  	/** Returns information about the frame.	
  398.77 +	@return A const TFrameInfo */
  398.78 +	const TFrameInfo& FrameInfo() const	{ return iFrameInfo; }
  398.79 +protected:
  398.80 +	IMPORT_C virtual void CAnimationFrame_Reserved1();
  398.81 +	IMPORT_C virtual void CAnimationFrame_Reserved2();
  398.82 +private:
  398.83 +	TInt iCAnimationFrame_Reserved;
  398.84 +private:
  398.85 +	CAnimationFrame() {};
  398.86 +	CAnimationFrame(const CAnimationFrame&); // no implementation
  398.87 +	CAnimationFrame& operator=(const CAnimationFrame&); // no implementation
  398.88 +	void ConstructL();
  398.89 +private:
  398.90 +	CFbsBitmap* iBitmap;
  398.91 +	CFbsBitmap* iMask;
  398.92 +	TFrameInfo iFrameInfo;
  398.93 +	};
  398.94 +
  398.95 +#endif //__ANIMATIONFRAME_H__
   399.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   399.2 +++ b/epoc32/include/mw/animationgroup.h	Wed Mar 31 12:27:01 2010 +0100
   399.3 @@ -0,0 +1,72 @@
   399.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   399.5 +// All rights reserved.
   399.6 +// This component and the accompanying materials are made available
   399.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   399.8 +// which accompanies this distribution, and is available
   399.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  399.10 +//
  399.11 +// Initial Contributors:
  399.12 +// Nokia Corporation - initial contribution.
  399.13 +//
  399.14 +// Contributors:
  399.15 +//
  399.16 +// Description:
  399.17 +//
  399.18 +
  399.19 +#ifndef __AnimationGroup_H__
  399.20 +#define __AnimationGroup_H__
  399.21 +
  399.22 +#include <animation.h>
  399.23 +
  399.24 +class CAnimationTls;
  399.25 +
  399.26 +/**
  399.27 +Handles groups of other animations.
  399.28 +
  399.29 +When it is appropriate to have several animations starting and stopping
  399.30 +together, add them all to an animation group and control them through that.
  399.31 +
  399.32 +In addition to making the code easier to both read and write, the animation
  399.33 +group handles synchronisation issues which can occur when issuing a sequence
  399.34 +of asynchronous requests.
  399.35 +
  399.36 +Care must be taken to remove an animation from any groups it may have been
  399.37 +added to before deleting it.
  399.38 +
  399.39 +@publishedAll
  399.40 +@released
  399.41 +*/
  399.42 +class CAnimationGroup : public CAnimation
  399.43 +	{
  399.44 +public:
  399.45 +	static CAnimationGroup* NewL();
  399.46 +	~CAnimationGroup();
  399.47 +	IMPORT_C const RPointerArray<CAnimation>& Animations() const;
  399.48 +	IMPORT_C RPointerArray<CAnimation>& Animations();
  399.49 +	// From CAnimation
  399.50 +	virtual void Start(const TAnimationConfig& aConfig);
  399.51 +	virtual void Stop();
  399.52 +	virtual void Pause();
  399.53 +	virtual void Resume();
  399.54 +	virtual void Hold();
  399.55 +	virtual void Unhold();
  399.56 +	virtual void Freeze();
  399.57 +	virtual void Unfreeze();
  399.58 +	virtual void SetPosition(const TPoint& aPoint);
  399.59 +protected:
  399.60 +	IMPORT_C virtual void CAnimationGroup_Reserved1();
  399.61 +	IMPORT_C virtual void CAnimationGroup_Reserved2();
  399.62 +private:
  399.63 +	TInt iCAnimationGroup_Reserved;
  399.64 +private:
  399.65 +	CAnimationGroup();
  399.66 +	void ConstructL();
  399.67 +	CAnimationGroup(const CAnimationGroup&); // no implementation
  399.68 +	CAnimationGroup& operator=(const CAnimationGroup&);		 // no implementation
  399.69 +private:
  399.70 +	TInt iFreezeCount;
  399.71 +	CAnimationTls* iTls;
  399.72 +	RPointerArray<CAnimation> iAnimations;
  399.73 +	};
  399.74 +
  399.75 +#endif //__AnimationGroup_H__
   400.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   400.2 +++ b/epoc32/include/mw/animationmixins.h	Wed Mar 31 12:27:01 2010 +0100
   400.3 @@ -0,0 +1,165 @@
   400.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   400.5 +// All rights reserved.
   400.6 +// This component and the accompanying materials are made available
   400.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   400.8 +// which accompanies this distribution, and is available
   400.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  400.10 +//
  400.11 +// Initial Contributors:
  400.12 +// Nokia Corporation - initial contribution.
  400.13 +//
  400.14 +// Contributors:
  400.15 +//
  400.16 +// Description:
  400.17 +//
  400.18 +
  400.19 +#ifndef __ANIMATIONMIXINS_H__
  400.20 +#define __ANIMATIONMIXINS_H__
  400.21 +
  400.22 +#include <e32base.h>
  400.23 +
  400.24 +/** Interface from a data provider to an animation
  400.25 +
  400.26 +An animation which has a data provider receives information from it via this
  400.27 +interface.
  400.28 +
  400.29 +You do not need to derive an implementation from this class unless you are
  400.30 +writing a new animation type.
  400.31 +
  400.32 +@publishedAll 
  400.33 +@released
  400.34 +@see CAnimationDataProvider
  400.35 +@see CAnimation
  400.36 +@see CAnimator*/
  400.37 +class MAnimationDataProviderObserver
  400.38 +	{
  400.39 +public:
  400.40 +	/** Receives an event from a data provider.
  400.41 +	@param aEvent The event code.
  400.42 +	@param aData Any data associated with the event. Can be NULL.
  400.43 +	@param aDataSize The size in bytes of the item pointed to by aData.*/
  400.44 +	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize) = 0;
  400.45 +protected:
  400.46 +	IMPORT_C virtual void MAnimationDataProviderObserver_Reserved1();
  400.47 +	IMPORT_C virtual void MAnimationDataProviderObserver_Reserved2();
  400.48 +	};
  400.49 +
  400.50 +class CAnimationTicker;
  400.51 +
  400.52 +/** Interface used by an animator to during the rendering process.
  400.53 +
  400.54 +A class implementing this interface is provided to an animator by an animation.
  400.55 +It may or may not be the animation itself.
  400.56 +
  400.57 +You do not need to derive an implementation from this class unless you are
  400.58 +writing a new animation type.
  400.59 +
  400.60 +@publishedAll 
  400.61 +@released
  400.62 +@see CAnimator*/
  400.63 +class MAnimationDrawer
  400.64 +	{
  400.65 +public:
  400.66 +	/** Called by the animator when it needs to draw a new frame */
  400.67 +	virtual void AnimatorDraw() = 0;
  400.68 +	/** Called by the animator when it is ready to begin running. 
  400.69 +	@param aSize The size of the smallest bounding rectangle that will be required to render the animation */
  400.70 +	virtual void AnimatorInitialisedL(const TSize& aSize) = 0;
  400.71 +	/** Called by the animator when it is no longer ready, usually in
  400.72 +	response to TAnimationEvent::EAnimationDataChanged */
  400.73 +	virtual void AnimatorResetL() = 0;
  400.74 +	/** Called by the animator plugin loading routine to determine the type
  400.75 +	of data for which an animator is required.
  400.76 +	@return An 8 bit descriptor containing the data type.*/
  400.77 +	virtual const TPtrC8 AnimatorDataType() const = 0;
  400.78 +	/** Called by the animator to obtain an AnimatorTicker, to which it will
  400.79 +	add itself whenever it is running.
  400.80 +	@return A reference to a CAnimationTicker.*/
  400.81 +	virtual CAnimationTicker& AnimatorTicker() = 0;
  400.82 +private:
  400.83 +	IMPORT_C virtual void MAnimationDrawer_Reserved1();
  400.84 +	IMPORT_C virtual void MAnimationDrawer_Reserved2();
  400.85 +	};
  400.86 +
  400.87 +class CAnimation;
  400.88 +
  400.89 +/** Interface used by an animation to report events to the client application.
  400.90 +
  400.91 +An animation can inform the client application of particular events through this
  400.92 +mechanism.  Only errors are reported in this way in v9.1, but more events may
  400.93 +be added in future.
  400.94 +
  400.95 +Use of this interface by the client application is optional.
  400.96 +
  400.97 +@publishedAll 
  400.98 +@released
  400.99 +@see CAnimation*/
 400.100 +class MAnimationObserver
 400.101 +	{
 400.102 +public:
 400.103 +	/** Represents generic events which can be sent to the observer. */
 400.104 +	enum TEvent
 400.105 +		{
 400.106 +		/** Indicates that an error has occurred in the data provider.
 400.107 +		For events of this type, aData is a pointer to a TInt error code. */
 400.108 +		EDataProviderError,
 400.109 +		/** Indicates that the animator initialised (and therefore knows it's size) */
 400.110 +		EAnimationInitialized=0x01,
 400.111 +		/** Any user defined animations introducing new events should use
 400.112 +		values greater than EReserved */
 400.113 +		EReserved=0xFFFF,
 400.114 +		};
 400.115 +public:
 400.116 +	/** Receives events from an animation.
 400.117 +	
 400.118 +	The receiver is not required to take any action atall in response to this
 400.119 +	call.  The receiver should not delete the animation whilst responding
 400.120 +	to this call.
 400.121 +	
 400.122 +	@param aSender A reference to the animation which sent the event.
 400.123 +	@param aEvent The event code.
 400.124 +	@param aData An event specific data item.*/
 400.125 +	virtual void AnimationEvent(CAnimation& aSender, TInt aEvent, TAny* aData) = 0;
 400.126 +protected:
 400.127 +	IMPORT_C virtual void MAnimationObserver_Reserved1();
 400.128 +	IMPORT_C virtual void MAnimationObserver_Reserved2();
 400.129 +	};
 400.130 +
 400.131 +/** Interface used for receiving animation ticks.
 400.132 +
 400.133 +Animators receive regular ticks, during which they perform any required processing.
 400.134 +
 400.135 +You do not need to derive an implementation from this class unless you are writing
 400.136 +a new animator type.
 400.137 +
 400.138 +@publishedAll 
 400.139 +@released
 400.140 +@see CAnimator
 400.141 +@see CAnimationTicker*/
 400.142 +class MAnimationTickee
 400.143 +	{
 400.144 +public:
 400.145 +	/** This function is called regularly by any ticker to which the tickee
 400.146 +	has been added */
 400.147 +	virtual void Tick() = 0;
 400.148 +protected:
 400.149 +	IMPORT_C virtual void MAnimationTickee_Reserved1();
 400.150 +	IMPORT_C virtual void MAnimationTickee_Reserved2();
 400.151 +	};
 400.152 +
 400.153 +/** Internal interface used by the ICL data loader to communicate with the
 400.154 +ICL data provider. Not intended for user derivation.
 400.155 +@internalComponent*/
 400.156 +class MICLAnimationDataLoaderObserver
 400.157 +	{
 400.158 +public:
 400.159 +	enum TDataLoaderEvent
 400.160 +		{
 400.161 +		EImagePartialConvert,
 400.162 +		EImageConvertComplete,
 400.163 +		};
 400.164 +public:	
 400.165 +	IMPORT_C virtual void DataLoaderEventL(TDataLoaderEvent aMessage, TInt aError) = 0;
 400.166 +	};
 400.167 +
 400.168 +#endif //__ANIMATIONMIXINS_H__
   401.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   401.2 +++ b/epoc32/include/mw/animationticker.h	Wed Mar 31 12:27:01 2010 +0100
   401.3 @@ -0,0 +1,64 @@
   401.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   401.5 +// All rights reserved.
   401.6 +// This component and the accompanying materials are made available
   401.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   401.8 +// which accompanies this distribution, and is available
   401.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  401.10 +//
  401.11 +// Initial Contributors:
  401.12 +// Nokia Corporation - initial contribution.
  401.13 +//
  401.14 +// Contributors:
  401.15 +//
  401.16 +// Description:
  401.17 +//
  401.18 +
  401.19 +#ifndef __ANIMATIONTICKER_H__
  401.20 +#define __ANIMATIONTICKER_H__
  401.21 +
  401.22 +#include <e32base.h>
  401.23 +
  401.24 +class MAnimationTickee;
  401.25 +
  401.26 +/** This provides timing information for animators.
  401.27 +
  401.28 +You do not need to instantiate an object of this type unless you are writing a
  401.29 +new animation type.
  401.30 +
  401.31 +@see MAnimationTickee
  401.32 +@see CAnimationTls
  401.33 +@publishedAll
  401.34 +@released*/
  401.35 +NONSHARABLE_CLASS(CAnimationTicker) : public CBase
  401.36 +	{
  401.37 +public:
  401.38 +    IMPORT_C static CAnimationTicker* NewL(TTimeIntervalMicroSeconds32 aTickLength = 100000);
  401.39 +    IMPORT_C ~CAnimationTicker();
  401.40 +    
  401.41 +	IMPORT_C TInt Add(MAnimationTickee* aTickee);
  401.42 +	IMPORT_C TInt Remove(MAnimationTickee* aTickee);
  401.43 +	IMPORT_C void Freeze();
  401.44 +	IMPORT_C void Unfreeze();
  401.45 +	
  401.46 +	/** This provides the resolution of the timer.
  401.47 +	@return iTickLength The resolution of the timer */
  401.48 +	inline const TTimeIntervalMicroSeconds32& TickLength() const { return iTickLength; }
  401.49 +	void OnTick();
  401.50 +protected:
  401.51 +	IMPORT_C virtual void CAnimationTicker_Reserved1();
  401.52 +	IMPORT_C virtual void CAnimationTicker_Reserved2();
  401.53 +private:
  401.54 +	TInt iCAnimationTicker_Reserved;
  401.55 +private:
  401.56 +	CAnimationTicker();
  401.57 +	void ConstructL(TTimeIntervalMicroSeconds32 aTickLength);
  401.58 +	void StartTickingL();
  401.59 +	void StopTicking();
  401.60 +private:
  401.61 +	TInt iFreeze;
  401.62 +	TTimeIntervalMicroSeconds32 iTickLength;
  401.63 +	CPeriodic* iPeriodic;
  401.64 +	RPointerArray<MAnimationTickee> iTickees;
  401.65 +	};
  401.66 +
  401.67 +#endif //__ANIMATIONTICKER_H__
   402.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   402.2 +++ b/epoc32/include/mw/animationtls.h	Wed Mar 31 12:27:01 2010 +0100
   402.3 @@ -0,0 +1,54 @@
   402.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   402.5 +// All rights reserved.
   402.6 +// This component and the accompanying materials are made available
   402.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   402.8 +// which accompanies this distribution, and is available
   402.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  402.10 +//
  402.11 +// Initial Contributors:
  402.12 +// Nokia Corporation - initial contribution.
  402.13 +//
  402.14 +// Contributors:
  402.15 +//
  402.16 +// Description:
  402.17 +//
  402.18 +
  402.19 +#ifndef __ANIMATIONTLS_H__
  402.20 +#define __ANIMATIONTLS_H__
  402.21 +
  402.22 +#include <e32base.h>
  402.23 +
  402.24 +class CAnimationTicker;
  402.25 +
  402.26 +/** This is a wrapper around the thread local storage, which simplifies its
  402.27 +use for obtaining a CAnimationTicker object that can be shared between
  402.28 +animations.  The object is reference counted, and only one will exist per
  402.29 +thread per DLL at any given time.
  402.30 +
  402.31 +You do not need to instantiate an object of this type unless you are writing a
  402.32 +new animation type.  If you are writing a new animation type it is optional.
  402.33 +
  402.34 +@see CAnimationTicker
  402.35 +@publishedAll
  402.36 +@released */
  402.37 +NONSHARABLE_CLASS(CAnimationTls) : public CBase
  402.38 +	{
  402.39 +public:
  402.40 +	IMPORT_C static CAnimationTls* NewL();
  402.41 +	IMPORT_C void Close();
  402.42 +	IMPORT_C CAnimationTicker* Ticker();
  402.43 +protected:
  402.44 +	CAnimationTls();
  402.45 +	~CAnimationTls();
  402.46 +	IMPORT_C virtual void CAnimationTls_Reserved1();
  402.47 +	IMPORT_C virtual void CAnimationTls_Reserved2();
  402.48 +protected:
  402.49 +	/** A Reference count of the object */
  402.50 +	TInt iRefCount;
  402.51 +	/** This provides timing information for animators */
  402.52 +	CAnimationTicker* iTimer;
  402.53 +private:
  402.54 +	TInt iCAnimationTls_Reserved;
  402.55 +	};
  402.56 +	
  402.57 +#endif // __ANIMATIONTLS_H__
   403.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   403.2 +++ b/epoc32/include/mw/animator.h	Wed Mar 31 12:27:01 2010 +0100
   403.3 @@ -0,0 +1,82 @@
   403.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   403.5 +// All rights reserved.
   403.6 +// This component and the accompanying materials are made available
   403.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   403.8 +// which accompanies this distribution, and is available
   403.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  403.10 +//
  403.11 +// Initial Contributors:
  403.12 +// Nokia Corporation - initial contribution.
  403.13 +//
  403.14 +// Contributors:
  403.15 +//
  403.16 +// Description:
  403.17 +//
  403.18 +
  403.19 +#ifndef __ANIMATOR_H__
  403.20 +#define __ANIMATOR_H__
  403.21 +
  403.22 +#include <e32base.h>
  403.23 +
  403.24 +const TUid KAnimatorInterfaceUid = {0x10204F59};
  403.25 +
  403.26 +class MAnimationDrawer;
  403.27 +class CBitmapContext;
  403.28 +class TAnimationConfig;
  403.29 +
  403.30 +/**
  403.31 +Pure virtual base class for animators.
  403.32 +
  403.33 +Each data type supported by the animation framework is represented by an
  403.34 +animator, which handles the data interpretation, timing and control.  Each
  403.35 +animator is provided in the form of an ECOM plugin.
  403.36 +
  403.37 +You do not need to instatiate animators in a client application.  This is
  403.38 +handled by the animation classes.
  403.39 +
  403.40 +@see CAnimation
  403.41 +@publishedAll
  403.42 +@released
  403.43 +*/
  403.44 +class CAnimator : public CBase
  403.45 +	{
  403.46 +public:
  403.47 +    // ECOM instatiation and destruction:
  403.48 +    IMPORT_C static CAnimator* NewL(MAnimationDrawer* aRenderer);
  403.49 +    IMPORT_C virtual ~CAnimator();
  403.50 +	/** Starts the animation running.
  403.51 +	@see TAnimationConfig
  403.52 +	@param aConfig Runtime settings*/
  403.53 +	virtual void Start(const TAnimationConfig& aConfig) = 0;
  403.54 +	/** Stops the animation and rewinds it.*/
  403.55 +	virtual void Stop() = 0;
  403.56 +	/** Pauses the animation.*/
  403.57 +	virtual void Pause() = 0;
  403.58 +	/** Resumes a paused animation.*/
  403.59 +	virtual void Resume() = 0;
  403.60 +	/** Puts an animation on hold. */
  403.61 +	virtual void Hold() = 0;
  403.62 +	/** Restores a held animation and brings it back into synch. */
  403.63 +	virtual void Unhold() = 0;
  403.64 +	/** Receives data from a data provider.  The mechanism by which data is
  403.65 +	actually passed depends on the animation type.
  403.66 +	
  403.67 +	@see MAnimationDataProviderObserver
  403.68 +	@param aEvent The event identifier
  403.69 +	@param aData A pointer to any data for the event
  403.70 +	@param aDataSize The length of the data in aData*/
  403.71 +	virtual void DataEventL(TInt aEvent, TAny* aData, TInt aDataSize) = 0;
  403.72 +	/** Called from the renderer and draws the animation.
  403.73 +	@param aBitmapContext The context on which the animation will be drawn*/
  403.74 +	virtual void Draw(CBitmapContext& aBitmapContext) const = 0;
  403.75 +	/** Called from the renderer and draws the mask for the animation.
  403.76 +	@param aBitmapContext The context on which the mask will be drawn*/
  403.77 +	virtual void DrawMask(CBitmapContext& aBitmapContext) const = 0;
  403.78 +protected:
  403.79 +	/** Animator ECOM Plugin identifier */
  403.80 +	TUid iDtor_ID_Key;
  403.81 +	/** Data */
  403.82 +	TInt iLoop;
  403.83 +	};
  403.84 +
  403.85 +#endif //__ANIMATOR_H__
   404.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   404.2 +++ b/epoc32/include/mw/ansicomp.h	Wed Mar 31 12:27:01 2010 +0100
   404.3 @@ -0,0 +1,29 @@
   404.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   404.5 +// All rights reserved.
   404.6 +// This component and the accompanying materials are made available
   404.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   404.8 +// which accompanies this distribution, and is available
   404.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  404.10 +//
  404.11 +// Initial Contributors:
  404.12 +// Nokia Corporation - initial contribution.
  404.13 +//
  404.14 +// Contributors:
  404.15 +//
  404.16 +// Description:
  404.17 +// Enforce ANSI compliance on Microsoft compilers in 'For loop' behaviour
  404.18 +// 
  404.19 +//
  404.20 +
  404.21 +
  404.22 +#if !defined(__ANSICOMP_H__)
  404.23 +#define __ANSICOMP_H__
  404.24 +
  404.25 +#if defined(__VC32__) && _MSC_VER>=1100
  404.26 +#pragma warning(disable : 4127)		// warning C4127 : conditional expression is constant
  404.27 +
  404.28 +#define for if(false);else for		// Enforce the definition of a loop variable to local scope
  404.29 +
  404.30 +#endif
  404.31 +
  404.32 +#endif    // __ANSICOMP_H__
   405.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   405.2 +++ b/epoc32/include/mw/apacmdln.h	Wed Mar 31 12:27:01 2010 +0100
   405.3 @@ -0,0 +1,178 @@
   405.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   405.5 +// All rights reserved.
   405.6 +// This component and the accompanying materials are made available
   405.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   405.8 +// which accompanies this distribution, and is available
   405.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  405.10 +//
  405.11 +// Initial Contributors:
  405.12 +// Nokia Corporation - initial contribution.
  405.13 +//
  405.14 +// Contributors:
  405.15 +//
  405.16 +// Description:
  405.17 +//
  405.18 +
  405.19 +#if !defined(__APACMDLN_H__)
  405.20 +#define __APACMDLN_H__
  405.21 +
  405.22 +#if !defined(__E32BASE_H__)
  405.23 +#include <e32base.h>
  405.24 +#endif
  405.25 +
  405.26 +#if !defined(__APADEF_H__)
  405.27 +#include <apadef.h>
  405.28 +#endif
  405.29 +
  405.30 +#if !defined(__F32FILE_H__)
  405.31 +#include <f32file.h>
  405.32 +#endif
  405.33 +
  405.34 +#if !defined(__S32STRM_H__)
  405.35 +#include <s32strm.h>
  405.36 +#endif
  405.37 +
  405.38 +
  405.39 +class CApaCommandLine : public CBase
  405.40 +/** Information for launching an application.
  405.41 +
  405.42 +This is often referred to as a command line and contains:
  405.43 +
  405.44 +the name of an application EXE to be launched,
  405.45 +
  405.46 +a document name,
  405.47 +
  405.48 +a command code that defines the way the application is launched
  405.49 +
  405.50 +trailing data; the structure of this depends on the application to be launched.
  405.51 +
  405.52 +The information is held in a buffer implemented by a heap descriptor. 
  405.53 +
  405.54 +@publishedAll
  405.55 +@released */
  405.56 +	{
  405.57 +public:
  405.58 +	// construction/destruction
  405.59 +	IMPORT_C static CApaCommandLine* NewL();
  405.60 +	IMPORT_C static CApaCommandLine* NewLC();
  405.61 +	IMPORT_C ~CApaCommandLine();
  405.62 +
  405.63 +	// Getting/setting the CApaCommandLine to/from process environment-slots
  405.64 +	IMPORT_C void SetProcessEnvironmentL(RProcess& aProcess) const;
  405.65 +	IMPORT_C static TInt GetCommandLineFromProcessEnvironment(CApaCommandLine*& aCommandLine);
  405.66 +
  405.67 +	// Getting/setting the CApaCommandLine to/from a server IPC-message
  405.68 +	IMPORT_C void GetIpcArgsLC(TIpcArgs& aIpcArgs) const;
  405.69 +	IMPORT_C void ConstructCmdLineFromMessageL(const RMessage2& aMessage);
  405.70 +
  405.71 +	// operations on the document name
  405.72 +	IMPORT_C void SetDocumentNameL(const TDesC& aDocName);
  405.73 +	IMPORT_C TPtrC DocumentName() const;
  405.74 +
  405.75 +	// operations on the executable name
  405.76 +	IMPORT_C void SetExecutableNameL(const TDesC& aAppName);
  405.77 +	IMPORT_C TPtrC ExecutableName() const;
  405.78 +	
  405.79 +	IMPORT_C void SetOpaqueDataL(const TDesC8& aOpaqueData);
  405.80 +	IMPORT_C TPtrC8 OpaqueData() const;
  405.81 +
  405.82 +	// operations on the tail end
  405.83 +	IMPORT_C void SetTailEndL(const TDesC8& aTailEnd);
  405.84 +	IMPORT_C TPtrC8 TailEnd() const;
  405.85 +
  405.86 +	// operations on the command
  405.87 +	IMPORT_C void SetCommandL(TApaCommand aCommand);
  405.88 +	IMPORT_C TApaCommand Command() const;
  405.89 +
  405.90 +	// operations on the parent process id
  405.91 +	IMPORT_C void SetParentProcessId(TProcessId aProcessId);
  405.92 +	IMPORT_C TProcessId ParentProcessId() const;
  405.93 +
  405.94 +	// operations on the file passed by handle
  405.95 +	IMPORT_C void SetFileByHandleL(const RFile& aFile);
  405.96 +	IMPORT_C void GetFileByHandleL(RFile& aFile) const;
  405.97 +public:
  405.98 +
  405.99 +	// operations on the server requirement/differentiator number - 0 means no server, non-zero sets the differentiator for the server name
 405.100 +	IMPORT_C void SetServerNotRequiredL();
 405.101 +	IMPORT_C void SetServerRequiredL(TUint aServerDifferentiator);
 405.102 +	IMPORT_C TUint ServerRequired() const;
 405.103 +
 405.104 +	// operations to support starting an application with a specific screen number
 405.105 +	IMPORT_C void SetDefaultScreenL(TInt aDefaultScreenNumber);
 405.106 +	IMPORT_C TInt DefaultScreen() const;
 405.107 +	IMPORT_C TBool IsDefaultScreenSet() const;
 405.108 +
 405.109 +	// Operations to support window chaining
 405.110 +	IMPORT_C void SetParentWindowGroupID(TInt aParentWindowGroupID);
 405.111 +	IMPORT_C TInt ParentWindowGroupID() const;
 405.112 +
 405.113 +	// operations to support passing memory-allocation failure settings in to applications
 405.114 +	IMPORT_C void SetDebugMemFailL(TInt aDebugMemFail);
 405.115 +	IMPORT_C TInt DebugMemFail() const;
 405.116 +
 405.117 +	// operations to support the instrumentation (i.e. profiling) of application startup
 405.118 +	IMPORT_C void SetAppStartupInstrumentationEventIdBaseL(TInt aEventIdBase);
 405.119 +	IMPORT_C TInt AppStartupInstrumentationEventIdBase() const;
 405.120 +
 405.121 +	IMPORT_C static TInt EnvironmentSlotForPublicUse(TInt aIndex);
 405.122 +
 405.123 +private:
 405.124 +	struct SOption
 405.125 +		{
 405.126 +		const TDesC* iToken;
 405.127 +		TInt* iResult;
 405.128 +		TRadix iRadix;
 405.129 +		HBufC8* iHBufC8Result;
 405.130 +		};
 405.131 +
 405.132 +private:
 405.133 +	CApaCommandLine();
 405.134 +	void SetServerDifferentiatorL(TUint aServerDifferentiator);
 405.135 +	void ExternalizeL(RWriteStream& aStream) const;
 405.136 +	void InternalizeL(RReadStream& aStream);
 405.137 +	HBufC8* StreamableAttributesLC() const;
 405.138 +	void GetCommandLineFromProcessEnvironmentL();
 405.139 +	TInt Parse(const TDesC& aCmdLine);
 405.140 +	TPtrC StripQuotes(const TDesC& aDes) const;
 405.141 +
 405.142 +private:
 405.143 +	enum
 405.144 +		{
 405.145 +		EEnvironmentSlotUnused=0,
 405.146 +
 405.147 +		EEnvironmentSlotMain=1,
 405.148 +		EEnvironmentSlotFsSession=2,
 405.149 +		EEnvironmentSlotFile=3,
 405.150 +
 405.151 +		EFirstEnvironmentSlotForPublicUse=8,
 405.152 +		ENumberOfEnvironmentSlotsForPublicUse=4
 405.153 +		};
 405.154 +
 405.155 +	enum
 405.156 +		{
 405.157 +		EIpcSlotMain=0,
 405.158 +		EIpcSlotFsSession=1,
 405.159 +		EIpcSlotFile=2
 405.160 +		};
 405.161 +public:
 405.162 +	enum
 405.163 +		{
 405.164 +		EIpcFirstFreeSlot=3
 405.165 +		};
 405.166 +private:
 405.167 +	HBufC* iDocumentName;
 405.168 +	HBufC* iExecutableName;
 405.169 +	HBufC8* iOpaqueData;
 405.170 +	HBufC8* iTailEnd;
 405.171 +	TApaCommand iCommand;
 405.172 +	TUint iServerDifferentiator;
 405.173 +	TInt iDefaultScreenNumber;
 405.174 +	TInt iParentWindowGroupID;
 405.175 +	TInt iDebugMemFail;
 405.176 +	TInt iAppStartupInstrumentationEventIdBase;
 405.177 +	RFile iFile;
 405.178 +	TProcessId iParentProcessId;
 405.179 +	};
 405.180 +
 405.181 +#endif
   406.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   406.2 +++ b/epoc32/include/mw/apadbase.h	Wed Mar 31 12:27:01 2010 +0100
   406.3 @@ -0,0 +1,127 @@
   406.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   406.5 +// All rights reserved.
   406.6 +// This component and the accompanying materials are made available
   406.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   406.8 +// which accompanies this distribution, and is available
   406.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  406.10 +//
  406.11 +// Initial Contributors:
  406.12 +// Nokia Corporation - initial contribution.
  406.13 +//
  406.14 +// Contributors:
  406.15 +//
  406.16 +// Description:
  406.17 +//
  406.18 +
  406.19 +#ifndef __APADBASE_H__
  406.20 +#define __APADBASE_H__
  406.21 +
  406.22 +#if !defined(__E32STD_H__)
  406.23 +#include <e32std.h>
  406.24 +#endif
  406.25 +#if !defined(__S32STD_H__)
  406.26 +#include <s32std.h>
  406.27 +#endif
  406.28 +#if !defined(__GDI_H__)
  406.29 +#include <gdi.h>
  406.30 +#endif
  406.31 +
  406.32 +
  406.33 +class CApaDoorBase : public CPicture
  406.34 +// Base class for a wrapper for embedded CApaDocuments
  406.35 +/** The base class for the graphic representation of an embedded document.
  406.36 +
  406.37 +An embedded document can be represented either as an icon or as a glass picture. 
  406.38 +Such a graphic representation is known as a door.
  406.39 +
  406.40 +The class is intended for derivation.
  406.41 +
  406.42 +@publishedAll 
  406.43 +@released
  406.44 +@see CApaDoor
  406.45 +@see CApaModelDoor */
  406.46 +	{
  406.47 +public:
  406.48 +	
  406.49 +	/** Defines the possible formats for the graphical representation of the embedded 
  406.50 +	document. */
  406.51 +	enum TFormat {
  406.52 +		/** The representation is an icon. */
  406.53 +		EIconic,
  406.54 +		/** The representation is a glass door. */
  406.55 +		EGlassDoor,
  406.56 +		/** The representation is a glass door but has been temporarily switched to an icon. */
  406.57 +		ETemporarilyIconic
  406.58 +		};
  406.59 +public:
  406.60 +	inline TFormat Format()const;
  406.61 +	inline TUid Source()const;
  406.62 +	inline void SetSource(TUid aSource);
  406.63 +	// Virtuals from CPicture
  406.64 +	IMPORT_C virtual TStreamId StoreL(CStreamStore& aStore) const;
  406.65 +	IMPORT_C virtual void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight); 
  406.66 +	IMPORT_C virtual void SetCropInTwips(const TMargins& aMargins); 
  406.67 +	IMPORT_C virtual TPictureCapability Capability() const;
  406.68 +	IMPORT_C virtual void GetCropInTwips(TMargins& aMargins) const; 
  406.69 +	IMPORT_C virtual TInt ScaleFactorWidth() const; 
  406.70 +	IMPORT_C virtual TInt ScaleFactorHeight() const; 
  406.71 +	IMPORT_C virtual TBool LineBreakPossible(TUint aClass,TBool aBeforePicture,TBool aHaveSpaces) const;
  406.72 +	IMPORT_C virtual TBool NativePixelSize(TSize& aPixelSize);
  406.73 +protected:
  406.74 +	IMPORT_C CApaDoorBase();
  406.75 +	IMPORT_C void ExternalizeBaseStreamL(CStreamStore& aStore,CStreamDictionary& aStreamDict)const;
  406.76 +	IMPORT_C TSize InternalizeBaseStreamL(const CStreamStore& aStore,const CStreamDictionary& aStreamDict); // returns current size in twips
  406.77 +
  406.78 +private:
  406.79 +	IMPORT_C virtual void CApaDoorBase_Reserved1();
  406.80 +	IMPORT_C virtual void CApaDoorBase_Reserved2();
  406.81 +protected:
  406.82 +
  406.83 +	/** Returns the size of the glass door, in twips.
  406.84 +	
  406.85 +	A concrete implementation of this function is provided by derived classes.
  406.86 +	
  406.87 +	@return The size of the glass door, in twips. 
  406.88 +	
  406.89 +	@publishedAll 
  406.90 +	@released */
  406.91 +	virtual TSize GlassDoorSize()const=0;
  406.92 +protected:
  406.93 +	TFormat iFormat;
  406.94 +	TUid iSource; // foreign representation of a translated door (eg MS Word doc)
  406.95 +
  406.96 +private:
  406.97 +	TInt iCApaDoorBase_Reserved1;
  406.98 +	};
  406.99 +
 406.100 +//
 406.101 +// inlines
 406.102 +//
 406.103 +
 406.104 +inline CApaDoorBase::TFormat CApaDoorBase::Format()const
 406.105 +	/** Gets the current format of the representation of the embedded document.
 406.106 +	
 406.107 +	@return The format for the representation of the embedded document. */
 406.108 +	{ return iFormat; }
 406.109 +
 406.110 +inline TUid CApaDoorBase::Source()const
 406.111 +	/** Gets the UID that identifies this door when the source originates on a non-Symbian 
 406.112 +	OS device.
 406.113 +	
 406.114 +	This is used by converters.
 406.115 +	
 406.116 +	@return The UID for the non-Symbian OS source. For a source that originates 
 406.117 +	on a Symbian OS phone, this is KNullUid. */
 406.118 +	{ return iSource; }
 406.119 +
 406.120 +inline void CApaDoorBase::SetSource(TUid aSource)
 406.121 +	/** Sets the UID that identifies this door when the source originates on a non-Symbian 
 406.122 +	OS device.
 406.123 +	
 406.124 +	This is used by converters.
 406.125 +	
 406.126 +	@param aSource The UID for the non-Symbian OS source. For a source that originates 
 406.127 +	on a Symbian OS phone, this is KNullUid. */
 406.128 +	{ iSource=aSource; }
 406.129 +
 406.130 +#endif
   407.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   407.2 +++ b/epoc32/include/mw/apadef.h	Wed Mar 31 12:27:01 2010 +0100
   407.3 @@ -0,0 +1,291 @@
   407.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   407.5 +// All rights reserved.
   407.6 +// This component and the accompanying materials are made available
   407.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   407.8 +// which accompanies this distribution, and is available
   407.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  407.10 +//
  407.11 +// Initial Contributors:
  407.12 +// Nokia Corporation - initial contribution.
  407.13 +//
  407.14 +// Contributors:
  407.15 +//
  407.16 +// Description:
  407.17 +//
  407.18 +
  407.19 +#ifndef __APADEF_H__
  407.20 +#define __APADEF_H__
  407.21 +
  407.22 +#if !defined(__E32BASE_H__)
  407.23 +#include <e32base.h>
  407.24 +#endif
  407.25 +
  407.26 +// comand line tokens
  407.27 +
  407.28 +/**
  407.29 +@internalComponent
  407.30 +*/
  407.31 +const TUint KApaCommandLetterOpen='O';
  407.32 +
  407.33 +/**
  407.34 +@internalComponent
  407.35 +*/
  407.36 +const TUint KApaCommandLetterCreate='C';
  407.37 +
  407.38 +/**
  407.39 +@internalComponent
  407.40 +*/
  407.41 +const TUint KApaCommandLetterRun='R';
  407.42 +
  407.43 +/**
  407.44 +@internalComponent
  407.45 +*/
  407.46 +const TUint KApaCommandLetterBackground='B';
  407.47 +
  407.48 +/**
  407.49 +@internalComponent
  407.50 +*/
  407.51 +const TUint KApaCommandLetterViewActivate='V';
  407.52 +
  407.53 +/**
  407.54 +@internalComponent
  407.55 +*/
  407.56 +const TUint KApaCommandLetterRunWithoutViews='W';
  407.57 +
  407.58 +/**
  407.59 +@internalComponent
  407.60 +*/
  407.61 +const TUint KApaCommandLetterBackgroundAndWithoutViews='A';
  407.62 +
  407.63 +/** Defines the command codes used to indicate the way an application is to be 
  407.64 +launched.
  407.65 +
  407.66 +@publishedAll 
  407.67 +@released
  407.68 +@see CApaCommandLine */
  407.69 +enum TApaCommand
  407.70 +	{
  407.71 +	/** The application is to open the document specified on the command line. */
  407.72 +	EApaCommandOpen,
  407.73 +	/** The application is to create the document specified on the command line. */
  407.74 +	EApaCommandCreate,
  407.75 +	/** The application is to run and open the last used document. */
  407.76 +	EApaCommandRun,
  407.77 +	/** The application is to open the last used document and to run in the background. */
  407.78 +	EApaCommandBackground,
  407.79 +	/** Reserved for future use. */
  407.80 +	EApaCommandViewActivate,
  407.81 +	/** The application is to run without views.
  407.82 +	
  407.83 +	This should NOT be used for view based applications. */
  407.84 +	EApaCommandRunWithoutViews,
  407.85 +	/** The application is to run in the background and viewless mode */
  407.86 +	EApaCommandBackgroundAndWithoutViews
  407.87 +	};
  407.88 +
  407.89 +/**
  407.90 +@publishedAll 
  407.91 +@released
  407.92 +*/
  407.93 +const TInt KApaMaxAppCaption=0x100;	// Default name is a file name, so the same limit is used
  407.94 +
  407.95 +// TApaAppCaption is the current language name of the app (for task lists, dialogs etc)
  407.96 +
  407.97 +/** Defines a modifiable buffer descriptor to contain the caption or the short caption 
  407.98 +for an application. 
  407.99 +
 407.100 +@publishedAll 
 407.101 +@released */
 407.102 +typedef TBuf<KApaMaxAppCaption> TApaAppCaption; 
 407.103 +
 407.104 +/**
 407.105 +@internalComponent
 407.106 +*/
 407.107 +const TInt KApaMaxCommandLine=0x100;	
 407.108 +
 407.109 +/**
 407.110 +@internalComponent
 407.111 +*/
 407.112 +typedef TBuf<KApaMaxCommandLine> TApaCommandLine;
 407.113 +
 407.114 +/**
 407.115 +@internalComponent
 407.116 +*/
 407.117 +const TInt KApaMaxAppFileName=0x10;	// Length of App's filename without path or extension (not it's caption)
 407.118 +
 407.119 +/**
 407.120 +@internalComponent
 407.121 +*/
 407.122 +typedef TBuf<KApaMaxAppFileName> TApaAppFileName;
 407.123 +
 407.124 +/** Maximum length of an application group name.
 407.125 +
 407.126 +@publishedAll 
 407.127 +@released
 407.128 +@see TApaAppGroupName */
 407.129 +const TInt KApaMaxAppGroupName=0x10; // Length of App's logical groupname
 407.130 +
 407.131 +/** An application group name.
 407.132 +
 407.133 +This is a name that allows applications to be categorized, for instance "Games" 
 407.134 +or "Utilities". 
 407.135 +
 407.136 +@publishedAll 
 407.137 +@released */
 407.138 +typedef TBuf<KApaMaxAppGroupName> TApaAppGroupName;
 407.139 +
 407.140 +/** The hexadecimal value of the 2nd UID that identifies a DLL as being an ASCII UI 
 407.141 +application. In .mmp files, the hexadecimal number is explicitly inserted 
 407.142 +as the first value following the UID keyword. 
 407.143 +
 407.144 +@publishedAll 
 407.145 +@deprecated */
 407.146 +const TInt KAppUidValue8 = 0x1000006c;
 407.147 +
 407.148 +/** The 2nd UID that identifies a DLL as being an ASCII UI application. 
 407.149 +
 407.150 +@publishedAll 
 407.151 +@deprecated */
 407.152 +const TUid KUidApp8={KAppUidValue8};
 407.153 +
 407.154 +/** The hexadecimal value of the 2nd UID that defines a DLL as being a Unicode 
 407.155 +UI application. In .mmp files, the hexadecimal number is explicitly inserted 
 407.156 +as the first value following the UID keyword.
 407.157 +
 407.158 +@publishedAll 
 407.159 +@released
 407.160 +@see KAppUidValue */
 407.161 +const TInt KAppUidValue16 = 0x100039CE;
 407.162 +
 407.163 +/** The 2nd UID that defines a DLL as being a Unicode UI application.
 407.164 +
 407.165 +@publishedAll 
 407.166 +@released
 407.167 +@see KUidApp */
 407.168 +const TUid KUidApp16={KAppUidValue16};
 407.169 +
 407.170 +//
 407.171 +// 2nd Uid for app doc files
 407.172 +/**
 407.173 +@publishedAll 
 407.174 +@deprecated
 407.175 +*/
 407.176 +const TUid KUidAppDllDoc8={268435565}; 
 407.177 +
 407.178 +/**
 407.179 +@publishedAll 
 407.180 +@released
 407.181 +*/
 407.182 +const TUid KUidAppDllDoc16={0x10003A12};
 407.183 +
 407.184 +/** The UID encoded in a TPictureHeader that identifies a picture as a door (for 
 407.185 +ASCII builds). 
 407.186 +
 407.187 +@publishedAll 
 407.188 +@deprecated
 407.189 +*/
 407.190 +const TUid KUidPictureTypeDoor8={268435537};
 407.191 +
 407.192 +/** The UID encoded in a TPictureHeader that identifies a picture as a door (for 
 407.193 +Unicode builds).
 407.194 +
 407.195 +@publishedAll 
 407.196 +@released
 407.197 +@see KUidPictureTypeDoor */
 407.198 +const TUid KUidPictureTypeDoor16={0x10003A33};
 407.199 +
 407.200 +//
 407.201 +// Uid's for streams in stream dictionaries
 407.202 +/**
 407.203 +@publishedAll 
 407.204 +@deprecated
 407.205 +*/
 407.206 +const TUid KUidSecurityStream8={268435661};
 407.207 +
 407.208 +/**
 407.209 +@publishedAll 
 407.210 +@released
 407.211 +*/
 407.212 +const TUid KUidSecurityStream16={0x10003A40};
 407.213 +
 407.214 +/**
 407.215 +@publishedAll 
 407.216 +@deprecated
 407.217 +*/
 407.218 +const TUid KUidAppIdentifierStream8={268435593}; // stream containing a TApaAppIdentifier
 407.219 +
 407.220 +/**
 407.221 +@publishedAll 
 407.222 +@released
 407.223 +*/
 407.224 +const TUid KUidAppIdentifierStream16={0x10003A34};
 407.225 +
 407.226 +#ifdef _UNICODE
 407.227 +/** The type-independent 2nd UID that identifies a DLL as being a UI application.
 407.228 +
 407.229 +@publishedAll 
 407.230 +@released
 407.231 +@see KUidApp16
 407.232 +@see KUidApp8 */
 407.233 +#define KUidApp KUidApp16
 407.234 +/** The type-independent hexadecimal value of the 2nd UID that identifies a DLL as 
 407.235 +being a UI application.
 407.236 +
 407.237 +@publishedAll 
 407.238 +@released
 407.239 +@see KAppUidValue16
 407.240 +@see KAppUidValue8 */
 407.241 +#define KAppUidValue KAppUidValue16 //lint !e1923 supress could become const variable
 407.242 +/**
 407.243 +@publishedAll 
 407.244 +@released
 407.245 +*/
 407.246 +#define KUidAppDllDoc KUidAppDllDoc16
 407.247 +/** The type independent UID encoded in a TPictureHeader that identifies a picture 
 407.248 +as a door.
 407.249 +
 407.250 +@publishedAll 
 407.251 +@released
 407.252 +@see KUidPictureTypeDoor16
 407.253 +@see KUidPictureTypeDoor8
 407.254 +@see TPictureHeader
 407.255 +@see TApaModelDoorFactory::NewPictureL() */
 407.256 +#define KUidPictureTypeDoor KUidPictureTypeDoor16
 407.257 +/**
 407.258 +@publishedAll 
 407.259 +@released
 407.260 +*/
 407.261 +#define KUidAppIdentifierStream KUidAppIdentifierStream16
 407.262 +/**
 407.263 +@publishedAll 
 407.264 +@released
 407.265 +*/
 407.266 +#define KUidSecurityStream KUidSecurityStream16
 407.267 +#else
 407.268 +/** The type independent 2nd UID that defines a DLL as being a UI application.
 407.269 +
 407.270 +@see KUidApp16
 407.271 +@see KUidApp8 */
 407.272 +#define KUidApp KUidApp8
 407.273 +/** The type independent hexadecimal value of the 2nd UID that defines a DLL as 
 407.274 +being a UI application.
 407.275 +
 407.276 +@see KAppUidValue16
 407.277 +@see KAppUidValue8 */
 407.278 +#define KAppUidValue KAppUidValue8
 407.279 +#define KUidAppDllDoc KUidAppDllDoc8
 407.280 +/** The type independent UID encoded in a TPictureHeader that identifies a picture 
 407.281 +as a door.
 407.282 +
 407.283 +@see KUidPictureTypeDoor16
 407.284 +@see KUidPictureTypeDoor8
 407.285 +@see TPictureHeader
 407.286 +@see TApaModelDoorFactory::NewPictureL() */
 407.287 +#define KUidPictureTypeDoor KUidPictureTypeDoor8
 407.288 +#define KUidAppIdentifierStream KUidAppIdentifierStream8
 407.289 +#define KUidSecurityStream KUidSecurityStream8
 407.290 +#endif
 407.291 +
 407.292 +const TUid KUidFileEmbeddedApplicationInterfaceUid={0x101f8c96};
 407.293 +
 407.294 +#endif
   408.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   408.2 +++ b/epoc32/include/mw/apaflrec.h	Wed Mar 31 12:27:01 2010 +0100
   408.3 @@ -0,0 +1,208 @@
   408.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   408.5 +// All rights reserved.
   408.6 +// This component and the accompanying materials are made available
   408.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   408.8 +// which accompanies this distribution, and is available
   408.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  408.10 +//
  408.11 +// Initial Contributors:
  408.12 +// Nokia Corporation - initial contribution.
  408.13 +//
  408.14 +// Contributors:
  408.15 +//
  408.16 +// Description:
  408.17 +//
  408.18 +
  408.19 +#if !defined(__APAFLREC_H__)
  408.20 +#define __APAFLREC_H__
  408.21 +
  408.22 +#if !defined(__APADEF_H__)
  408.23 +#include <apadef.h>
  408.24 +#endif
  408.25 +#if !defined(__APAID_H__)
  408.26 +#include <apaid.h>
  408.27 +#endif
  408.28 +
  408.29 +// classes defined:
  408.30 +class MApaAppStarter;
  408.31 +class CApaAppLocator;
  408.32 +class CApaFileRecognizer;
  408.33 +class CApaFileRecognizerType;
  408.34 +class CFileRecognizerExtension;
  408.35 +//
  408.36 +// classes referenced:
  408.37 +class TApaAppEntry;
  408.38 +class CApaCommandLine;
  408.39 +class RFs;
  408.40 +//
  408.41 +
  408.42 +// KUidFileRecognizer is UID[1] for app recognizer dll's (UID[2] identifies a particular identifier)
  408.43 +/**
  408.44 +@publishedAll
  408.45 +@released
  408.46 +*/
  408.47 +#ifdef _UNICODE
  408.48 +#define KUidFileRecognizer KUidFileRecognizer16
  408.49 +#else
  408.50 +#define KUidFileRecognizer KUidFileRecognizer8
  408.51 +#endif
  408.52 +
  408.53 +/**
  408.54 +@publishedAll 
  408.55 +@deprecated
  408.56 +*/
  408.57 +const TInt KFileRecognizerUidValue8=0x1000013E;
  408.58 +
  408.59 +/**
  408.60 +@publishedAll 
  408.61 +@deprecated
  408.62 +*/
  408.63 +const TUid KUidFileRecognizer8={KFileRecognizerUidValue8};
  408.64 +
  408.65 +/**
  408.66 +@publishedAll
  408.67 +@released
  408.68 +*/
  408.69 +const TUid KUidFileRecognizer16={0x10003A37};
  408.70 +//
  408.71 +
  408.72 +
  408.73 +class CApaAppLocator : public CBase
  408.74 +/**
  408.75 +@internalComponent
  408.76 +*/
  408.77 +	{
  408.78 +public:
  408.79 +	virtual TInt GetAppEntryByUid(TApaAppEntry& aAppEntry,TUid aAppUid)=0;
  408.80 +	virtual TInt GetAppCapabilityByUid(TDes8& aCapabilityBuf,TUid aAppUid)=0;
  408.81 +	};
  408.82 +
  408.83 +
  408.84 +
  408.85 +class CApaFileRecognizer : public CBase
  408.86 +/**
  408.87 +@internalComponent
  408.88 +@deprecated
  408.89 +*/
  408.90 +	{
  408.91 +public:
  408.92 +	//
  408.93 +	IMPORT_C CApaFileRecognizerType* RecognizeFileL(const TDesC& aFullFileName,const TUidType* aUidType=NULL);
  408.94 +	IMPORT_C CApaAppLocator* AppLocator() const;
  408.95 +	//
  408.96 +	IMPORT_C ~CApaFileRecognizer();
  408.97 +protected:
  408.98 +	IMPORT_C CApaFileRecognizer(RFs& aFs);
  408.99 +	IMPORT_C void AddFileRecognizerType(CApaFileRecognizerType* aFileRecognizerType);
 408.100 +	IMPORT_C TInt RemoveFileRecognizerType(const CApaFileRecognizerType* aFileRecognizerType);
 408.101 +	IMPORT_C void SetAppLocator(CApaAppLocator* aAppLocator); // should be called by child-classes eg during construction
 408.102 +	static inline void SetAppStarter(CApaFileRecognizerType* aRecognizer,MApaAppStarter* aAppStarter);
 408.103 +	IMPORT_C void DestroyRecognizerList();
 408.104 +protected:
 408.105 +	RFs& iFs;
 408.106 +	CApaAppLocator* iAppLocator;
 408.107 +private:
 408.108 +	CApaFileRecognizerType *iFileRecognizerList;
 408.109 +	};
 408.110 +
 408.111 +
 408.112 +
 408.113 +class MApaAppStarter
 408.114 +/** An interface used by the Application Architecture server to start applications.
 408.115 +
 408.116 +CEikonEnv is derived from this class.
 408.117 +
 408.118 +@publishedPartner
 408.119 +@released
 408.120 +@see CEikonEnv */
 408.121 +	{
 408.122 +public:
 408.123 +	virtual TThreadId StartAppL(const CApaCommandLine& aCommandLine)=0;
 408.124 +protected:
 408.125 +	IMPORT_C MApaAppStarter(); 
 408.126 +private:
 408.127 +	IMPORT_C virtual void MApaAppStarter_Reserved1();
 408.128 +	IMPORT_C virtual void MApaAppStarter_Reserved2();
 408.129 +private:
 408.130 +	TInt iMApaAppStarter_Reserved1;
 408.131 +	};
 408.132 +
 408.133 +
 408.134 +
 408.135 +class CApaFileRecognizerType : public CBase
 408.136 +/**
 408.137 +@publishedPartner
 408.138 +@deprecated
 408.139 +*/
 408.140 +	{
 408.141 +public:
 408.142 +	enum TRecognizedType {EProgram,EDoc,EOtherFile,ENotRecognized};
 408.143 +public:
 408.144 +	virtual TThreadId RunL(TApaCommand aCommand,const TDesC* aDocFileName,const TDesC8* aTailEnd) const=0;
 408.145 +	inline TThreadId RunL(TApaCommand aCommand, const TDesC* aDocFileName) const;
 408.146 +	inline TThreadId RunL(TApaCommand aCommand) const;
 408.147 +	inline TUid AppUid()const;
 408.148 +	inline TUid TypeUid()const;
 408.149 +	inline TRecognizedType Type()const;
 408.150 +	IMPORT_C void Capability(TDes8& aCapabilityBuf)const;
 408.151 +	IMPORT_C void Lock();
 408.152 +	IMPORT_C void Unlock();
 408.153 +protected:
 408.154 +	IMPORT_C CApaFileRecognizerType();
 408.155 +	IMPORT_C ~CApaFileRecognizerType();
 408.156 +	IMPORT_C TThreadId AppRunL(const CApaCommandLine& aCommandLine) const;
 408.157 +private:
 408.158 +	inline void SetAppStarter(MApaAppStarter* aAppStarter); // must be called before AppRunL()
 408.159 +	virtual TRecognizedType DoRecognizeFileL(RFs& aFs,TUidType aUidType)=0;
 408.160 +	TRecognizedType RecognizeFileL(RFs& aFs,const TDesC& aFullFileName,TUidType aUidType);
 408.161 +	TBool Locked()const;
 408.162 +	IMPORT_C virtual void Reserved_1();
 408.163 +public:
 408.164 +	IMPORT_C static CApaFileRecognizerType* CreateFileRecognizerL(TUid aImplUid);
 408.165 +protected:
 408.166 +	CApaFileRecognizer* iFileRecognizer;
 408.167 +	MApaAppStarter* iAppStarter;
 408.168 +	HBufC* iFullFileName;
 408.169 +	TUid iFileType; // type UID of the recognizer file (ie UID[1])
 408.170 +	TUid iAppUid; // UID of the associated app (ie UID[2])
 408.171 +	TRecognizedType iRecognizedType;
 408.172 +	TApaAppCapabilityBuf* iCapabilityBuf;
 408.173 +private:
 408.174 +	CApaFileRecognizerType* iNext;
 408.175 +	TInt iLock;
 408.176 +	CFileRecognizerExtension* iFileRecognizerExtn;
 408.177 +private:
 408.178 +	friend class CApaFileRecognizer;
 408.179 +	};
 408.180 +
 408.181 +
 408.182 +//
 408.183 +// inlines
 408.184 +//
 408.185 +
 408.186 +inline void CApaFileRecognizer::SetAppStarter(CApaFileRecognizerType* aRecognizer,MApaAppStarter* aAppStarter)
 408.187 +	{ aRecognizer->SetAppStarter(aAppStarter); }
 408.188 +
 408.189 +inline void CApaFileRecognizerType::SetAppStarter(MApaAppStarter* aAppStarter)
 408.190 +	{ iAppStarter = aAppStarter; }
 408.191 +
 408.192 +inline TUid CApaFileRecognizerType::AppUid() const
 408.193 +	{ return iAppUid; }
 408.194 +
 408.195 +inline TUid CApaFileRecognizerType::TypeUid() const
 408.196 +	{ return iFileType; }
 408.197 +
 408.198 +inline CApaFileRecognizerType::TRecognizedType CApaFileRecognizerType::Type()const
 408.199 +	{ return iRecognizedType; }
 408.200 +
 408.201 +inline TThreadId CApaFileRecognizerType::RunL(TApaCommand aCommand, const TDesC* aDocFileName) const
 408.202 +	/** Calls RunL(TApaCommand,const TDesC*,const TDesC8*) with NULL as third parameter.
 408.203 +	@see CApaFileRecognizerType::RunL(TApaCommand,const TDesC*,const TDesC8*) */
 408.204 +	{ return RunL(aCommand, aDocFileName, NULL); }
 408.205 +
 408.206 +inline TThreadId CApaFileRecognizerType::RunL(TApaCommand aCommand) const
 408.207 +	/** Calls RunL(TApaCommand,const TDesC*,const TDesC8*) with NULL as second and third parameter.
 408.208 +	@see CApaFileRecognizerType::RunL(TApaCommand,const TDesC*,const TDesC8*) */
 408.209 +	{ return RunL(aCommand, NULL, NULL); }	
 408.210 +
 408.211 +#endif
   409.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   409.2 +++ b/epoc32/include/mw/apaid.h	Wed Mar 31 12:27:01 2010 +0100
   409.3 @@ -0,0 +1,358 @@
   409.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   409.5 +// All rights reserved.
   409.6 +// This component and the accompanying materials are made available
   409.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   409.8 +// which accompanies this distribution, and is available
   409.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  409.10 +//
  409.11 +// Initial Contributors:
  409.12 +// Nokia Corporation - initial contribution.
  409.13 +//
  409.14 +// Contributors:
  409.15 +//
  409.16 +// Description:
  409.17 +//
  409.18 +
  409.19 +#ifndef __APAID_H__
  409.20 +#define __APAID_H__
  409.21 +
  409.22 +#if !defined(__E32BASE_H__)
  409.23 +#include <e32base.h>
  409.24 +#endif
  409.25 +#if !defined(__APADEF_H__)
  409.26 +#include <apadef.h>
  409.27 +#endif
  409.28 +
  409.29 +#include "apmstd.h"
  409.30 +
  409.31 +
  409.32 +// classes defined:
  409.33 +class TApaAppIdentifier;
  409.34 +class TApaAppEntry;
  409.35 +class CApaAppFinder;
  409.36 +//
  409.37 +// classes referenced:
  409.38 +class RReadStream;
  409.39 +class RWriteStream;
  409.40 +class RFs;
  409.41 +//
  409.42 +
  409.43 +
  409.44 +class TApaAppIdentifier
  409.45 +/** The identity of an application.
  409.46 +
  409.47 +An object of this type contains two pieces of information:
  409.48 +
  409.49 +The application specific UID
  409.50 +
  409.51 +The file name and extension of the application DLL
  409.52 +
  409.53 +All persisted documents associated with this application have a stream containing 
  409.54 +this information.
  409.55 +
  409.56 +@publishedAll 
  409.57 +@released
  409.58 +@see CApaProcess::ReadRootStreamLC()
  409.59 +@see CApaProcess::WriteRootStreamL()
  409.60 +@see CApaProcess::ReadAppIdentifierL()
  409.61 +@see CApaProcess::WriteAppIdentifierL() */
  409.62 +	{
  409.63 +public:
  409.64 +	IMPORT_C TApaAppIdentifier();
  409.65 +	IMPORT_C TApaAppIdentifier(TUid aAppUidType,const TFileName& aDllName);
  409.66 +	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  409.67 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  409.68 +	
  409.69 +public:
  409.70 +	/** The application-specific UID. */
  409.71 +	TUid iAppUid;
  409.72 +	/** The full path name of the application DLL. */
  409.73 +	TFileName iFullName;
  409.74 +
  409.75 +private:
  409.76 +	TInt iTApaAppIdentifier_Reserved1;
  409.77 +	};
  409.78 +
  409.79 +
  409.80 +class TApaAppEntry
  409.81 +/** An application entry.
  409.82 +
  409.83 +An object of this type contains two pieces of information:
  409.84 +
  409.85 +the full path name of the application DLL
  409.86 +
  409.87 +the UID type (or compound identifier) of the application DLL. 
  409.88 +
  409.89 +@publishedAll 
  409.90 +@released */
  409.91 +	{
  409.92 +public:
  409.93 +	IMPORT_C TApaAppEntry();
  409.94 +	IMPORT_C TApaAppEntry(const TUidType& aAppUidType,const TFileName& aDllName);
  409.95 +	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  409.96 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  409.97 +public:
  409.98 +	/** The UID type (or compound identifier) of the application DLL. */
  409.99 +	TUidType iUidType;
 409.100 +	/** The full path name of the application DLL. */
 409.101 +	TFileName iFullName;
 409.102 +private:
 409.103 +	TInt iTApaAppEntry_Reserved1;
 409.104 +	};
 409.105 +
 409.106 +
 409.107 +class TApaAppInfo
 409.108 +/** Application information.
 409.109 +
 409.110 +An object of this type contains four pieces of information:
 409.111 +
 409.112 +the application specific UID
 409.113 +
 409.114 +the full path name of the application DLL
 409.115 +
 409.116 +the application's caption
 409.117 +
 409.118 +a short caption; how this is used is up to the UI 
 409.119 +
 409.120 +@publishedAll
 409.121 +@released */
 409.122 +	{
 409.123 +public:
 409.124 +	IMPORT_C TApaAppInfo();
 409.125 +	IMPORT_C TApaAppInfo(TUid aAppUid,const TFileName& aDllName,const TApaAppCaption& aCaption);
 409.126 +	IMPORT_C TApaAppInfo(TUid aAppUid,const TFileName& aDllName,const TApaAppCaption& aCaption,const TApaAppCaption& aShortCaption);
 409.127 +	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
 409.128 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 409.129 +public:
 409.130 +	/** The application specific UID. */
 409.131 +	TUid iUid;
 409.132 +	/** The full path name of the application DLL. */
 409.133 +	TFileName iFullName;
 409.134 +	/** The caption for the application. */
 409.135 +	TApaAppCaption iCaption;
 409.136 +	/** The short caption for the application. */
 409.137 +	TApaAppCaption iShortCaption;
 409.138 +
 409.139 +private:
 409.140 +	TInt iTApaAppInfo_Reserved1;
 409.141 +	};
 409.142 +
 409.143 +
 409.144 +class TApaAppViewInfo
 409.145 +/** Contains the basic information about an application view.
 409.146 +
 409.147 +An object of this type contains two pieces of information:
 409.148 +
 409.149 +The UID that identifies the view
 409.150 +
 409.151 +The application's caption.
 409.152 +
 409.153 +Objects of this type are returned in an array populated by a call to RApaLsSession::GetAppViews().
 409.154 +
 409.155 +@publishedAll 
 409.156 +@released
 409.157 +@see CApaAppViewArray
 409.158 +@see TUid */
 409.159 +	{
 409.160 +public:
 409.161 +	IMPORT_C TApaAppViewInfo();
 409.162 +	IMPORT_C TApaAppViewInfo(TUid aViewUid,const TApaAppCaption& aViewCaption,TInt aScreenMode);
 409.163 +	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
 409.164 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 409.165 +public:
 409.166 +	/** The UID identifying the view. */
 409.167 +	TUid iUid;
 409.168 +	/** The application caption. */
 409.169 +	TApaAppCaption iViewCaption;
 409.170 +	TInt iScreenMode;
 409.171 +private:
 409.172 +	TInt iTApaAppViewInfo_Reserved1;
 409.173 +	};
 409.174 +
 409.175 +
 409.176 +/** Defines an array of TApaAppViewInfo objects contained within a flat dynamic 
 409.177 +buffer.
 409.178 +
 409.179 +An array of this type is populated with TApaAppViewInfo objects in a call 
 409.180 +to RApaLsSession::GetAppViews().
 409.181 +
 409.182 +@publishedAll 
 409.183 +@released */
 409.184 +typedef CArrayFixFlat<TApaAppViewInfo> CApaAppViewArray;
 409.185 +
 409.186 +
 409.187 +class TApaAppCapability
 409.188 +// expandable class - add new members to the end, add them to the end of int/ext also, and increment the version no.
 409.189 +// default value for all data members must be 0
 409.190 +/** Application capabilities. 
 409.191 +
 409.192 +@publishedAll
 409.193 +@released */
 409.194 +	{
 409.195 +public:
 409.196 +	IMPORT_C static void CopyCapability(TDes8& aDest,const TDesC8& aSource);
 409.197 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 409.198 +	IMPORT_C void Internalize7_0L(RReadStream& aStream);	// deprecated
 409.199 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 409.200 +private:
 409.201 +	IMPORT_C void Externalize7_0L(RWriteStream& aStream) const;	// deprecated
 409.202 +	void DoInternalizeL(RReadStream& aStream, TBool& aLaunchInBackground, TApaAppGroupName& aGroupName);
 409.203 +public:
 409.204 +	//
 409.205 +	/** Defines an application's support for embeddability. */
 409.206 +	enum TEmbeddability {
 409.207 +		/** An application cannot be embedded. */
 409.208 +		ENotEmbeddable=0,
 409.209 +		/** An application can be run embedded or standalone and can read/write embedded document-content. */
 409.210 +		EEmbeddable=1,
 409.211 +		/** An application can only be run embedded and can read/write embedded document-content. */
 409.212 +		EEmbeddableOnly=2,
 409.213 +		/** An application can be run embedded or standalone and cannot read/write embedded document-content. */
 409.214 +		EEmbeddableUiOrStandAlone=5,
 409.215 +		/** An application can only be run embedded and cannot read/write embedded document-content. */
 409.216 +		EEmbeddableUiNotStandAlone=6 };
 409.217 +	/** Defines an application's attributes as a set of bit flags. */
 409.218 +	enum TCapabilityAttribute
 409.219 +		{
 409.220 +		/** If set, the application was built as a DLL, otherwise it was built as an EXE. */
 409.221 +		EBuiltAsDll			= 0x00000001,
 409.222 +		/** If set, the application provides control panel functionality. */
 409.223 +		EControlPanelItem	= 0x00000002,
 409.224 +		/** If set, the application is not a native executable, and hence the "path" and "extension" (as well as the "name") must be provided in the app_file field of the APP_REGISTRATION_INFO resource. */
 409.225 +		ENonNative			= 0x00000004
 409.226 +		};
 409.227 +public:
 409.228 +	/** Indicates the extent to which the application can be embedded. */
 409.229 +	TEmbeddability iEmbeddability;
 409.230 +	/** Indicates whether the application is document-based and supports being asked 
 409.231 +	to create a new file. */
 409.232 +	TBool iSupportsNewFile;
 409.233 +	/** Indicates whether the existence of the application should be advertised to the 
 409.234 +	user. If this is set to ETrue, the application does not appear on the Extras 
 409.235 +	Bar (or equivalent). */
 409.236 +	TBool iAppIsHidden; // not shown in the Shell etc.
 409.237 +	/** Allows the application to be launched in the foreground (when set to EFalse) 
 409.238 +	or in the background (when set to ETrue). */
 409.239 +	TBool iLaunchInBackground;	// Series 60 extension to allow apps to be launched in the background	
 409.240 +	/** Stores the application's logical group name. */
 409.241 +	TApaAppGroupName iGroupName; // Series 60 extension to allow apps to be categorized according a logical group name, e.g. 'games'
 409.242 +	/** Indicates the application attributes. One or more values from TCapabilityAttribute may be specified. */
 409.243 +	TUint iAttributes;
 409.244 +private:
 409.245 +	enum { EVersion=4 };
 409.246 +private:
 409.247 +	TInt iTApaAppCapability_Reserved1;
 409.248 +	};
 409.249 +
 409.250 +/** Packages the TApaAppCapability class. 
 409.251 +
 409.252 +@publishedAll
 409.253 +@released */
 409.254 +typedef TPckgBuf<TApaAppCapability> TApaAppCapabilityBuf;
 409.255 +
 409.256 +
 409.257 +/** Filter used to define the subset of applications returned by RApaLsSession::GetNextApp()
 409.258 +
 409.259 +@publishedAll
 409.260 +@released
 409.261 +*/
 409.262 +class TApaEmbeddabilityFilter
 409.263 +	{
 409.264 +public:
 409.265 +	IMPORT_C TApaEmbeddabilityFilter();
 409.266 +	IMPORT_C void AddEmbeddability(TApaAppCapability::TEmbeddability aEmbeddability);
 409.267 +	IMPORT_C TBool MatchesEmbeddability(TApaAppCapability::TEmbeddability aEmbeddability) const;
 409.268 +private:
 409.269 +	TUint iEmbeddabilityFlags;
 409.270 +private:
 409.271 +	TInt iTApaEmbeddabilityFilter_Reserved1;
 409.272 +	};
 409.273 +
 409.274 +
 409.275 +class CApaAppFinder : public CBase
 409.276 +/**
 409.277 +@publishedPartner
 409.278 +@deprecated
 409.279 +*/
 409.280 +	{
 409.281 +public:
 409.282 +	virtual void FindAllAppsL()=0; // sets up a scan for all apps
 409.283 +	virtual TBool NextL(TApaAppEntry& aEntry)=0; // increments a scan for all apps
 409.284 +	virtual TFileName FindAppL(const TDesC& aFileName,TUid aFileUid)=0; // searches for a particular app - should support wildcards in aFileName
 409.285 +	//
 409.286 +	virtual TFileName DefaultAppInfoFileName()const=0; // should return the full name, path and drive of the default icon file
 409.287 +protected:
 409.288 +	IMPORT_C CApaAppFinder();
 409.289 +	
 409.290 +private:
 409.291 +	IMPORT_C virtual void CApaAppFinder_Reserved1();
 409.292 +	IMPORT_C virtual void CApaAppFinder_Reserved2();
 409.293 +	};
 409.294 +
 409.295 +/** 
 409.296 +The uid for the Open service.
 409.297 +
 409.298 +@publishedPartner
 409.299 +@released
 409.300 +*/
 409.301 +const TUid KOpenServiceUid = { 0x10208DCA };
 409.302 +
 409.303 +/** Application service information.
 409.304 +
 409.305 +Encapsulates a service UID and associated opaque data.
 409.306 +
 409.307 +An instance of this class provides information about
 409.308 +a specific implementation of the service identified by
 409.309 +the encapsulated service UID.
 409.310 +
 409.311 +@publishedPartner
 409.312 +@released
 409.313 +*/
 409.314 +class TApaAppServiceInfo
 409.315 +	{
 409.316 +public:
 409.317 +	TApaAppServiceInfo();
 409.318 +	TApaAppServiceInfo(TUid aUid, CArrayFixFlat<TDataTypeWithPriority>* aDataTypes,
 409.319 +		HBufC8* aOpaqueData);
 409.320 +	void ExternalizeL(RWriteStream& aStream) const;
 409.321 +	void InternalizeL(RReadStream& aStream);
 409.322 +	void Release();
 409.323 +	CArrayFixFlat<TDataTypeWithPriority>& DataTypes();
 409.324 +	IMPORT_C TUid Uid() const;
 409.325 +	IMPORT_C const CArrayFixFlat<TDataTypeWithPriority>& DataTypes() const;
 409.326 +	IMPORT_C const TDesC8& OpaqueData() const;
 409.327 +private:
 409.328 +	TUid iUid;
 409.329 +	CArrayFixFlat<TDataTypeWithPriority>* iDataTypes;
 409.330 +	HBufC8* iOpaqueData;
 409.331 +	TInt iTApaAppServiceInfo;
 409.332 +	};
 409.333 +
 409.334 +/** Application service information array.
 409.335 +
 409.336 +Owns an array of TApaAppServiceInfo objects.
 409.337 +
 409.338 +@see TApaAppServiceInfo
 409.339 +@publishedPartner
 409.340 +@released
 409.341 +*/
 409.342 +class CApaAppServiceInfoArray : public CBase
 409.343 +	{
 409.344 +protected:
 409.345 +	CApaAppServiceInfoArray();
 409.346 +public:
 409.347 +	/** Provides access to the encapsulated array of
 409.348 +	TApaAppServiceInfo objects.
 409.349 +
 409.350 +	@return A generic array of TApaAppServiceInfo objects. */
 409.351 +	virtual TArray<TApaAppServiceInfo> Array()=0;
 409.352 +	
 409.353 +private:
 409.354 +	IMPORT_C virtual void CApaAppServiceInfoArray_Reserved1();
 409.355 +	IMPORT_C virtual void CApaAppServiceInfoArray_Reserved2();
 409.356 +	
 409.357 +private:
 409.358 +	TInt iCApaAppServiceInfoArray_Reserved1;
 409.359 +	};
 409.360 +
 409.361 +#endif
   410.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   410.2 +++ b/epoc32/include/mw/apamdr.h	Wed Mar 31 12:27:01 2010 +0100
   410.3 @@ -0,0 +1,202 @@
   410.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   410.5 +// All rights reserved.
   410.6 +// This component and the accompanying materials are made available
   410.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   410.8 +// which accompanies this distribution, and is available
   410.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  410.10 +//
  410.11 +// Initial Contributors:
  410.12 +// Nokia Corporation - initial contribution.
  410.13 +//
  410.14 +// Contributors:
  410.15 +//
  410.16 +// Description:
  410.17 +//
  410.18 +
  410.19 +#ifndef __APAMDR_H__
  410.20 +#define __APAMDR_H__
  410.21 +
  410.22 +#if !defined(__E32STD_H__)
  410.23 +#include <e32std.h>
  410.24 +#endif
  410.25 +#if !defined(__E32BASE_H__)
  410.26 +#include <e32base.h>
  410.27 +#endif
  410.28 +#if !defined(__GDI_H__)
  410.29 +#include <gdi.h>
  410.30 +#endif
  410.31 +#if !defined(__APADBASE_H__)
  410.32 +#include <apadbase.h>
  410.33 +#endif
  410.34 +
  410.35 +// classes defined:
  410.36 +class TApaModelDoorFactory;
  410.37 +class CApaModelDoor;
  410.38 +class CApaModelHeader;
  410.39 +class MApaModelHeaderFactory;
  410.40 +//
  410.41 +// classes referenced:
  410.42 +class RReadStream;
  410.43 +class RWriteStream;
  410.44 +class CStreamStore;
  410.45 +class CStreamDictionary;
  410.46 +class CEmbeddedStore;
  410.47 +class TApaAppIdentifier;
  410.48 +//
  410.49 +
  410.50 +
  410.51 +class TApaModelDoorFactory : public MPictureFactory
  410.52 +// Recognizes KUidPictureTypeDoor and creates CApaModelDoor pictures
  410.53 +/** A factory class for instantiating and restoring an application's door using 
  410.54 +the application's model. 
  410.55 +
  410.56 +@publishedAll 
  410.57 +@released */
  410.58 +	{
  410.59 +public:
  410.60 +	IMPORT_C TApaModelDoorFactory(const MApaModelHeaderFactory* aFactory);
  410.61 +	//
  410.62 +	// from MPictureFactory
  410.63 +	IMPORT_C void NewPictureL(TPictureHeader& aPictureHeader,const CStreamStore& aPictureStore)const; // used to create CApaDoor's during document restore only 
  410.64 +private:
  410.65 +	const MApaModelHeaderFactory* iHeaderFactory;
  410.66 +	TInt iTApaModelDoorFactory_Reserved1;
  410.67 +	};
  410.68 +
  410.69 +
  410.70 +class CApaModelDoor : public CApaDoorBase
  410.71 +/** A persistent representation of a door that also acts as a wrapper around an 
  410.72 +application's model.
  410.73 +
  410.74 +The class allows embedded data to be manipulated without requiring the whole 
  410.75 +associated application. 
  410.76 +
  410.77 +@publishedAll 
  410.78 +@released */
  410.79 +	{
  410.80 +public:
  410.81 +	IMPORT_C static CApaModelDoor* NewL(CApaModelHeader* aHeader);
  410.82 +	IMPORT_C static CApaModelDoor* NewLC(CApaModelHeader* aHeader);
  410.83 +	IMPORT_C static CApaModelDoor* NewL(const CStreamStore& aStore,TStreamId aHeadStreamId,const MApaModelHeaderFactory* aFactory);
  410.84 +	//
  410.85 +	/** Gets the application model wrapper object.
  410.86 +	
  410.87 +	@return A pointer to the application model wrapper object. */
  410.88 +	inline CApaModelHeader* ModelHeader() { return iModelHeader; }
  410.89 +	
  410.90 +	/** Sets the format of the door.
  410.91 +	
  410.92 +	@param aFormat The format for the graphical representation of the embedded 
  410.93 +	document. */
  410.94 +	inline void SetFormat(TFormat aFormat) { iFormat = aFormat; }
  410.95 +	//
  410.96 +	IMPORT_C TStreamId StoreL(CStreamStore& aStore) const;
  410.97 +	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aHeadStreamId,const MApaModelHeaderFactory* aFactory);
  410.98 +	//
  410.99 +	IMPORT_C ~CApaModelDoor();
 410.100 +	//
 410.101 +	// from CPicture
 410.102 +	IMPORT_C void DetachFromStoreL(TDetach /*aDegree*/=EDetachFull); //lint !e1735 Virtual function has default parameter - Inherited from CPicture, must be fixed there
 410.103 +	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
 410.104 +	IMPORT_C void Draw(CGraphicsContext& aGc,const TPoint& aTopLeft,const TRect& aClipRect,MGraphicsDeviceMap* aMap)const; 
 410.105 +	IMPORT_C void GetOriginalSizeInTwips(TSize& aSize)const;
 410.106 +	IMPORT_C void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight); 
 410.107 +	IMPORT_C TInt ScaleFactorWidth()const; 
 410.108 +	IMPORT_C TInt ScaleFactorHeight()const;
 410.109 +	//
 410.110 +private:
 410.111 +	CApaModelDoor();
 410.112 +	CApaModelDoor(CApaModelHeader* aHeader);
 410.113 +	//
 410.114 +	static CStreamDictionary* ReadStreamDictionaryLC(const CStreamStore& aSourceStore,TStreamId aStreamId);
 410.115 +	static void CopyStoreL(const CEmbeddedStore& aSourceStore,RWriteStream& aTargetStream);
 410.116 +	void InternalizeModelL(const MApaModelHeaderFactory& aFactory);
 410.117 +	//
 410.118 +	// from CApaDoorBase
 410.119 +	TSize GlassDoorSize()const;
 410.120 +private:
 410.121 +	CApaModelHeader* iModelHeader;
 410.122 +	CEmbeddedStore* iStore;
 410.123 +	TSize iScaleFactor;
 410.124 +	CBufSeg* iStoreHost; // the host for the embedded store, if the door has been detached from its originating store
 410.125 +	};
 410.126 +
 410.127 +
 410.128 +class CApaModelHeader : public CBase
 410.129 +// Abstract wrapper for an applications model - used for file format conversion etc
 410.130 +/** An interface class that acts as a wrapper for an application model.
 410.131 +
 410.132 +This is also known as an application model header.
 410.133 +
 410.134 +The class provides the knowledge for internalizing and externalizing an application 
 410.135 +model's data. An instance of the class is used by CApaModelDoor.
 410.136 +
 410.137 +A concrete implementation of the class must be supplied by the application 
 410.138 +model (not the application UI). An instance of the class is constructed by 
 410.139 +a factory object that implements the MApaModelHeaderFactory interface; the 
 410.140 +factory object is also supplied by the application model (not the application 
 410.141 +UI).
 410.142 +
 410.143 +@publishedAll
 410.144 +@released
 410.145 +@see CApaModelDoor
 410.146 +@see TApaModelDoorFactory
 410.147 +@see MApaModelHeaderFactory */
 410.148 +	{
 410.149 +public:
 410.150 +	/** Stores the model and its components in the specified store.
 410.151 +	
 410.152 +	@param aStore The store in which the model's components are to be stored.
 410.153 +	@param aDict The stream dictionary into which stream IDs and associated UIDs 
 410.154 +	are put. */
 410.155 +	virtual void StoreL(CStreamStore& aStore,CStreamDictionary& aDict) const=0;
 410.156 +	/** Gets the identity of the application associated with the application model.
 410.157 +	
 410.158 +	@return The application identity. */
 410.159 +	virtual TApaAppIdentifier AppId()const=0;
 410.160 +	/** Restores the model to the specified degree.
 410.161 +	
 410.162 +	An implementation of this function should propagate this call to all components 
 410.163 +	of the model.
 410.164 +	
 410.165 +	@param aDegree The degree to which restoration is needed. */
 410.166 +	virtual void DetachFromStoreL(CPicture::TDetach aDegree)=0;
 410.167 +protected:
 410.168 +	IMPORT_C CApaModelHeader();
 410.169 +private:
 410.170 +	IMPORT_C virtual void Reserved_1();
 410.171 +	IMPORT_C virtual void Reserved_2();
 410.172 +private:
 410.173 +	TInt iCApaModelHeader_Reserved1;
 410.174 +	};
 410.175 +
 410.176 +
 410.177 +
 410.178 +class MApaModelHeaderFactory
 410.179 +/** An interface class that applications implement to construct an application model 
 410.180 +wrapper object, also known as the application model header.
 410.181 +
 410.182 +@publishedAll
 410.183 +@released
 410.184 +@see CApaModelHeader */
 410.185 +	{
 410.186 +public:	
 410.187 +	/** Creates and returns an application model wrapper object.
 410.188 +	
 410.189 +	@param aStore The store containing model data.
 410.190 +	@param aDict The stream dictionary. 
 410.191 +	@param aAppId The application's identity held as a stream in the application's 
 410.192 +	store
 410.193 +	@return A pointer to the new application model wrapper object. */
 410.194 +	virtual CApaModelHeader* NewHeaderL(const CStreamStore& aStore,const CStreamDictionary& aDict,const TApaAppIdentifier& aAppId)const=0;
 410.195 +protected:
 410.196 +	IMPORT_C MApaModelHeaderFactory();
 410.197 +private:
 410.198 +	IMPORT_C virtual void MApaModelHeaderFactory_Reserved1();
 410.199 +	IMPORT_C virtual void MApaModelHeaderFactory_Reserved2();
 410.200 +private:
 410.201 +	TInt iMApaModelHeaderFactory_Reserved1;
 410.202 +	};
 410.203 +
 410.204 +
 410.205 +#endif
   411.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   411.2 +++ b/epoc32/include/mw/apcaptionfile.rh	Wed Mar 31 12:27:01 2010 +0100
   411.3 @@ -0,0 +1,35 @@
   411.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   411.5 +// All rights reserved.
   411.6 +// This component and the accompanying materials are made available
   411.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   411.8 +// which accompanies this distribution, and is available
   411.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  411.10 +//
  411.11 +// Initial Contributors:
  411.12 +// Nokia Corporation - initial contribution.
  411.13 +//
  411.14 +// Contributors:
  411.15 +//
  411.16 +// Description:
  411.17 +// Contains definitions for the resource files that are input to 
  411.18 +// caption files for Series 60
  411.19 +// 
  411.20 +//
  411.21 +
  411.22 +
  411.23 +
  411.24 +
  411.25 +/**
  411.26 + @internalComponent
  411.27 +*/
  411.28 +#define KMaxCaption 256
  411.29 +
  411.30 +/**
  411.31 +@publishedAll
  411.32 +@released
  411.33 +*/
  411.34 +STRUCT CAPTION_DATA
  411.35 +	{
  411.36 +	LTEXT caption(KMaxCaption)="";
  411.37 +	LTEXT shortcaption(KMaxCaption)="";
  411.38 +	}
   412.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   412.2 +++ b/epoc32/include/mw/apgcli.h	Wed Mar 31 12:27:01 2010 +0100
   412.3 @@ -0,0 +1,309 @@
   412.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   412.5 +// All rights reserved.
   412.6 +// This component and the accompanying materials are made available
   412.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   412.8 +// which accompanies this distribution, and is available
   412.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  412.10 +//
  412.11 +// Initial Contributors:
  412.12 +// Nokia Corporation - initial contribution.
  412.13 +//
  412.14 +// Contributors:
  412.15 +//
  412.16 +// Description:
  412.17 +//
  412.18 +
  412.19 +#if !defined(__APGCLI_H__)
  412.20 +#define __APGCLI_H__
  412.21 +
  412.22 +#if !defined(__E32BASE_H__)
  412.23 +#include <e32base.h>
  412.24 +#endif
  412.25 +#if !defined(__APMSTD_H__)
  412.26 +#include <apmstd.h>
  412.27 +#endif
  412.28 +#if !defined(__APMREC_H__)
  412.29 +#include <apmrec.h>
  412.30 +#endif
  412.31 +#if !defined(__APAID_H__)
  412.32 +#include <apaid.h>
  412.33 +#endif
  412.34 +#if !defined(__BADESCA_H__)
  412.35 +#include <badesca.h>
  412.36 +#endif
  412.37 +#if !defined(__F32FILE_H__)
  412.38 +#include <f32file.h>
  412.39 +#endif
  412.40 +
  412.41 +// classes referenced
  412.42 +class CApaCommandLine;
  412.43 +class CApaMaskedBitmap;
  412.44 +class MArrayFiller;
  412.45 +class RFile;
  412.46 +
  412.47 +class CApaLsSessionExtension;
  412.48 +
  412.49 +class CDataRecognitionResultArrayEntry;
  412.50 +class CApaRegistrationResourceFileWriter;
  412.51 +class CApaLocalisableResourceFileWriter;
  412.52 +
  412.53 +/* @internalComponent
  412.54 +*/
  412.55 +IMPORT_C TUint MinApplicationStackSize();
  412.56 +
  412.57 +class CDataRecognitionResultArray : public CBase
  412.58 +/**
  412.59 +This class holds the recognition results of a recognized directory.
  412.60 +@publishedAll
  412.61 +@released
  412.62 +*/
  412.63 +	{
  412.64 +public: // exported functions
  412.65 +	IMPORT_C CDataRecognitionResultArray();
  412.66 +	IMPORT_C virtual ~CDataRecognitionResultArray();
  412.67 +	IMPORT_C const TFileName& Path() const;
  412.68 +	IMPORT_C TUint Count() const;
  412.69 +	IMPORT_C void GetDataRecognitionResultL(TDataRecognitionResult& aResult, const TUint aIndex) const;
  412.70 +	IMPORT_C void GetFileNameL(TFileName& aFileName, const TUint aIndex) const;
  412.71 +public: // dll internally
  412.72 +	TUint InternalizeL(const CBufFlat& aBuffer);
  412.73 +	void SetPath(const TFileName& aPath);
  412.74 +private:
  412.75 +	TFileName iPath;
  412.76 +	RPointerArray<CDataRecognitionResultArrayEntry> iEntries;
  412.77 +	};
  412.78 +
  412.79 +
  412.80 +
  412.81 +////////////////////////////////////
  412.82 +// RApaLsSession
  412.83 +////////////////////////////////////
  412.84 +
  412.85 +class RApaLsSession : public RSessionBase
  412.86 +/** A session with the application architecture server.
  412.87 +
  412.88 +The server provides access to a cached list of the applications on the device. 
  412.89 +
  412.90 +To use this class, clients first need to connect to the server. 
  412.91 +
  412.92 +Then, one of GetAllApps(), GetEmbeddableApps() or GetFilteredApps() needs to be called. 
  412.93 +These functions do some initialisation of server data in preparation for returning the 
  412.94 +application list (which is owned by the server).
  412.95 +
  412.96 +Then, GetNextApp() is called in a loop. The first time around, it populates the session's 
  412.97 +application list and retrieves the first application in the list. Further calls to GetNextApp() 
  412.98 +retrieve the remaining applications in the list, until RApaLsSession::ENoMoreAppsInList is 
  412.99 +returned.
 412.100 +
 412.101 +The session should be closed when it is no longer needed, before it goes out of scope.
 412.102 +
 412.103 +Various functions in RApaLsSession need to access the application list, and may return 
 412.104 +RApaLsSession::EAppListInvalid to indicate that the function was called before the initial 
 412.105 +population of the list is complete. If this occurs, you could try again after a short delay.
 412.106 +
 412.107 +This class provides many other functions, for instance launching applications, querying 
 412.108 +application-specific information, recognising data.
 412.109 +
 412.110 +@publishedAll
 412.111 +@released */
 412.112 +	{
 412.113 +	friend class CApaLsSessionExtension;
 412.114 +public:
 412.115 +	enum {
 412.116 +		/** A possible return value from GetNextApp(), to indicate that there are no more 
 412.117 +		applications in the list. */
 412.118 +		ENoMoreAppsInList=1,
 412.119 +		/** Indicates that an RApaLsSession member function was called before the session's 
 412.120 +		application list is fully populated. */
 412.121 +		EAppListInvalid
 412.122 +		};
 412.123 +	/** Defines the way an application is launched. */
 412.124 +	enum TLaunchType {
 412.125 +		/** Launches a new instance of the application. */
 412.126 +		ELaunchNewApp=1,
 412.127 +		/** Launches a new instance of the application if no existing instance of the application 
 412.128 +		is running. If an instance of the application is already running, then it 
 412.129 +		is brought to the foreground. */
 412.130 +		ESwitchFiles
 412.131 +		};
 412.132 +	
 412.133 +public:
 412.134 +	IMPORT_C RApaLsSession();
 412.135 +	//
 412.136 +	IMPORT_C TInt Connect();
 412.137 +	IMPORT_C TVersion Version() const;
 412.138 +	//
 412.139 +	IMPORT_C TInt AppCount(TInt& aCount) const; // returns error
 412.140 +	IMPORT_C TInt EmbeddableAppCount(TInt& aCount) const; // returns error
 412.141 +	//
 412.142 +	IMPORT_C TInt GetAllApps() const; // Call to initialize
 412.143 +	IMPORT_C TInt GetAllApps(TInt aScreenMode) const; // Call to initialize
 412.144 +	IMPORT_C TInt GetEmbeddableApps() const; // Call to initialize
 412.145 +	IMPORT_C TInt GetEmbeddableApps(TInt aScreenMode) const; // Call to initialize
 412.146 +	// 7.0s
 412.147 +	IMPORT_C TInt GetFilteredApps(const TApaEmbeddabilityFilter& aFilter) const; // Call to initialize
 412.148 +	IMPORT_C TInt GetFilteredApps(const TApaEmbeddabilityFilter& aFilter, TInt aScreenMode) const; // Call to initialize
 412.149 +	// 8.1
 412.150 +	IMPORT_C TInt GetFilteredApps(TUint aCapabilityAttributeMask, TUint aCapabilityAttributeValue) const; // Call to initialize
 412.151 +	IMPORT_C TInt GetFilteredApps(TUint aCapabilityAttributeMask, TUint aCapabilityAttributeValue, TInt aScreenMode) const; // Call to initialize
 412.152 +	// 9.0
 412.153 +	IMPORT_C TInt GetServerApps(TUid aServiceUid) const; // Call to initialize
 412.154 +	IMPORT_C TInt GetServerApps(TUid aServiceUid, TInt aScreenMode) const; // Call to initialize
 412.155 +	//
 412.156 +	IMPORT_C TInt GetNextApp(TApaAppInfo& aInfo) const; // call repeatedly, returns err (inc ENoMoreAppsInList,EAppListInvalid)
 412.157 +	IMPORT_C TInt GetNextApp(TApaAppInfo& aInfo,TInt aScreenMode) const; // call repeatedly, returns err (inc ENoMoreAppsInList,EAppListInvalid)
 412.158 +	//
 412.159 +	IMPORT_C TInt GetAppInfo(TApaAppInfo& aInfo,TUid aAppUid) const;
 412.160 +	IMPORT_C TInt SetAppShortCaption(const TDesC& aShortCaption, TLanguage aLanguage, TUid aAppUid);
 412.161 +	IMPORT_C TInt GetDefaultScreenNumber(TInt& aDefaultScreenNumber, TUid aAppUid) const;
 412.162 +	
 412.163 +public:
 412.164 +	IMPORT_C TInt GetAppCapability(TDes8& aCapabilityBuf,TUid aAppUid) const;
 412.165 +	IMPORT_C TInt StartApp(const CApaCommandLine& aCommandLine); // This is only recommended for non document based apps
 412.166 +	IMPORT_C TInt StartApp(const CApaCommandLine& aCommandLine,TThreadId& aThreadId);
 412.167 +	IMPORT_C TInt StartApp(const CApaCommandLine& aCommandLine,TThreadId& aThreadId,TRequestStatus* aRequestStatusForRendezvous);
 412.168 +	//
 412.169 +	IMPORT_C TInt RecognizeData(const TDesC& aName, const TDesC8& aBuffer, TDataRecognitionResult& aDataType) const;
 412.170 +	IMPORT_C TInt RecognizeData(const RFile& aFile, TDataRecognitionResult& aDataType) const;
 412.171 +	IMPORT_C TInt RecognizeSpecificData(const TDesC& aName, const TDesC8& aBuffer, const TDataType& aDataType, TBool& aResult) const;
 412.172 +	IMPORT_C TInt RecognizeSpecificData(const RFile& aFile, const TDataType& aDataType, TBool& aResult) const;
 412.173 +	//
 412.174 +	IMPORT_C TInt AppForDataType(const TDataType& aDataType, TUid& aAppUid) const;
 412.175 +	IMPORT_C TInt StartDocument(const TDesC& aFileName, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
 412.176 +	IMPORT_C TInt StartDocument(RFile& aFile, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous=NULL);
 412.177 +	IMPORT_C TInt StartDocument(const TDesC& aFileName, const TDataType& aDataType, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
 412.178 +	IMPORT_C TInt StartDocument(RFile& aFile, const TDataType& aDataType, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous=NULL);
 412.179 +	IMPORT_C TInt StartDocument(const TDesC& aFileName, TUid aAppUid, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
 412.180 +	IMPORT_C TInt StartDocument(RFile& aFile, TUid aAppUid, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous=NULL);
 412.181 +	IMPORT_C TInt CreateDocument(const TDesC& aFileName, TUid aAppUid, TThreadId& aThreadId, TLaunchType aLaunchType=ELaunchNewApp);
 412.182 +	//
 412.183 +	IMPORT_C TInt GetAppIcon(TUid aAppUid, TInt aSize, CApaMaskedBitmap& aAppBitmap) const;
 412.184 +	//
 412.185 +	IMPORT_C TInt AppForDocument(const TDesC& aFileName, TUid& aAppUid, TDataType& aDataType) const;
 412.186 +	IMPORT_C TInt AppForDocument(const RFile& aFile, TUid& aAppUid, TDataType& aDataType) const;
 412.187 +	IMPORT_C TInt IsProgram(const TDesC& aFileName, TBool& aProgram) const;
 412.188 +	IMPORT_C TInt GetAcceptedConfidence(TInt& aConfidence) const;
 412.189 +	IMPORT_C TInt SetAcceptedConfidence(TInt aConfidence);
 412.190 +	IMPORT_C TInt GetMaxDataBufSize(TInt& aBufSize) const;
 412.191 +	IMPORT_C TInt SetMaxDataBufSize(TInt aBufSize);
 412.192 +	IMPORT_C TInt GetPreferredBufSize(TInt& aPreferredBufSize) const;
 412.193 +	IMPORT_C TInt GetSupportedDataTypesL(CDataTypeArray& aDataTypes) const;
 412.194 +	//
 412.195 +	IMPORT_C TInt GetAppIconSizes(TUid aAppUid, CArrayFixFlat<TSize>& aArrayToFill) const;
 412.196 +	IMPORT_C TInt GetAppIcon(TUid aAppUid, TSize aSize, CApaMaskedBitmap& aAppBitmap) const;
 412.197 +	IMPORT_C TInt GetAppIcon(TUid aAppUid, RFile& aFile) const;
 412.198 +	//
 412.199 +	IMPORT_C TInt GetAppViews(CApaAppViewArray& aAppViews, TUid aAppUid) const;
 412.200 +	IMPORT_C TInt GetAppViewIcon(TUid aAppUid, TUid aViewUid, const TSize& aSize, CApaMaskedBitmap& aViewBitmap) const;
 412.201 +	IMPORT_C TInt GetAppOwnedFiles(CDesCArray& aAppOwnedFiles, TUid aAppUid) const;
 412.202 +	//
 412.203 +	IMPORT_C TInt NumberOfOwnDefinedIcons(TUid aAppUid, TInt& aCount) const;
 412.204 +	//
 412.205 +	IMPORT_C TInt GetAppIcon(TUid aAppUid, HBufC*& aFullFileName) const;
 412.206 +	IMPORT_C TInt GetAppViewIcon(TUid aAppUid, TUid aViewUid, HBufC*& aFullFileName) const;
 412.207 +	IMPORT_C TInt InsertDataMapping(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
 412.208 +	IMPORT_C TInt InsertDataMappingIfHigher(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid, TBool& aInserted);
 412.209 +	IMPORT_C TInt DeleteDataMapping(const TDataType& aDataType);
 412.210 +	/**
 412.211 +	@internalComponent
 412.212 +	@released
 412.213 +	*/
 412.214 +	IMPORT_C TInt InsertDataMapping(const TDataType& aDataType, TDataTypePriority aPriority, 
 412.215 +		TUid aUid, TUid aServiceUid);
 412.216 +	/**
 412.217 +	@internalComponent
 412.218 +	@released
 412.219 +	*/
 412.220 +	IMPORT_C TInt DeleteDataMapping(const TDataType& aDataType, TUid aServiceUid);
 412.221 +	/**
 412.222 +	@internalComponent
 412.223 +	@released
 412.224 +	*/
 412.225 +	IMPORT_C TInt GetAppByDataType(const TDataType& aDataType, TUid aServiceUid, TUid& aAppUid) const;
 412.226 +
 412.227 +public:
 412.228 +	//
 412.229 +	IMPORT_C CApaAppServiceInfoArray* GetAppServicesLC(TUid aAppUid) const;
 412.230 +	IMPORT_C CApaAppServiceInfoArray* GetServiceImplementationsLC(TUid aServiceUid) const;
 412.231 +	IMPORT_C CApaAppServiceInfoArray* GetServiceImplementationsLC(TUid aServiceUid, const TDataType& aDataType) const;
 412.232 +	IMPORT_C void GetAppServicesL(TUid aAppUid, CArrayFixFlat<TUid>& aServiceUids) const;
 412.233 +	IMPORT_C CApaAppServiceInfoArray* GetAppServiceOpaqueDataLC(TUid aAppUid, TUid aServiceUid) const;
 412.234 +	IMPORT_C TInt AppForDataTypeAndService(const TDataType& aDataType, TUid aServiceUid, TUid& aAppUid) const;
 412.235 +	IMPORT_C TInt AppForDocumentAndService(const TDesC& aFileName, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType) const;
 412.236 +	IMPORT_C TInt AppForDocumentAndService(const RFile& aFile, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType) const;
 412.237 +	IMPORT_C TInt ApplicationLanguage(TUid aAppUid, TLanguage& aLanguage) const;
 412.238 +	IMPORT_C void Close(); //lint !e1511 Member hides non-virtual member
 412.239 +
 412.240 +	IMPORT_C void RegisterListPopulationCompleteObserver(TRequestStatus& aStatus) const;
 412.241 +	IMPORT_C TInt CancelListPopulationCompleteObserver() const;
 412.242 +	IMPORT_C TInt MatchesSecurityPolicy(TBool& aMatches, TUid aAppUid, const TSecurityPolicy& aSecurityPolicy) const;
 412.243 +	IMPORT_C TInt RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult) const;
 412.244 +	IMPORT_C void RecognizeFilesL(const TDesC& aPath, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);
 412.245 +	IMPORT_C TInt RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult) const;
 412.246 +	IMPORT_C void RecognizeFilesL(const TDesC& aPath, const TDesC8& aDataType, CDataRecognitionResultArray& aResult, TRequestStatus& aStatus);
 412.247 +	IMPORT_C void CancelRecognizeFiles();
 412.248 +
 412.249 +	IMPORT_C void RegisterNonNativeApplicationTypeL(TUid aApplicationType, const TDesC& aNativeExecutable);
 412.250 +	IMPORT_C void DeregisterNonNativeApplicationTypeL(TUid aApplicationType);
 412.251 +	IMPORT_C void PrepareNonNativeApplicationsUpdatesL();
 412.252 +	IMPORT_C void RegisterNonNativeApplicationL(TUid aApplicationType, const TDriveUnit& aDrive, CApaRegistrationResourceFileWriter& aRegistrationResourceFile, CApaLocalisableResourceFileWriter* aLocalisableResourceFile, const RFile* aIconFile);
 412.253 +	IMPORT_C void DeregisterNonNativeApplicationL(TUid aApplication);
 412.254 +	IMPORT_C void CommitNonNativeApplicationsUpdatesL();
 412.255 +	IMPORT_C TInt RollbackNonNativeApplicationsUpdates();
 412.256 +	IMPORT_C void NotifyOnDataMappingChange(TRequestStatus& aRequestStatus);
 412.257 +	IMPORT_C void CancelNotifyOnDataMappingChange();
 412.258 +	IMPORT_C TInt GetAppType(TUid& aTypeUid, TUid aAppUid) const;
 412.259 +	
 412.260 +	IMPORT_C TInt ForceRegistration(const RPointerArray<TDesC>& aRegFiles);
 412.261 +	
 412.262 +public:
 412.263 +	// not for public use
 412.264 +	IMPORT_C static void SetFsSessionL(RFs& aFsSession);
 412.265 +	IMPORT_C static void ClearFsSession();
 412.266 +	IMPORT_C static RFs* FsSession();
 412.267 +	IMPORT_C void SetNotify(TBool aCompleteImmediatelyIfNoScanImpendingOrInProgress, TRequestStatus& aStatus);
 412.268 +	IMPORT_C void CancelNotify();
 412.269 +
 412.270 +private: // Reserved for future use
 412.271 +	IMPORT_C virtual void RApaLsSession_Reserved1();
 412.272 +	IMPORT_C virtual void RApaLsSession_Reserved2();
 412.273 +
 412.274 +public:
 412.275 +	/**
 412.276 +	@publishedPartner
 412.277 +	@released
 412.278 +	*/
 412.279 +	IMPORT_C void ForceCommitNonNativeApplicationsUpdatesL(); 
 412.280 +	
 412.281 +private:
 412.282 +	void DoGetAppOwnedFilesL(CDesCArray& aArrayToFill, TUid aAppUid) const;
 412.283 +	void DoGetAppViewsL(CApaAppViewArray& aArrayToFill, TUid aAppUid) const;
 412.284 +	void DoGetAppIconSizesL(TUid aAppUid, CArrayFixFlat<TSize>& aArrayToFill) const;
 412.285 +	TInt DoAppCount(TInt& aCount,TInt aCommand) const;
 412.286 +	void FetchArrayL(MArrayFiller& aArrayFiller,TUid aAppUid, TInt aOpcode, TInt aInitialBufSize) const;
 412.287 +	CBufBase* GetServiceBufferLC(TInt aOpcode, TUid aUid1, TUid aUid2=KNullUid) const;
 412.288 +	TInt StartAndCreate(TInt aRqst,const TDesC& aFileName, TUid aAppUid, TThreadId& aThreadId, TLaunchType aLaunchType);
 412.289 +	CBufBase* GetServiceBufferLC(TInt aOpcode, TUid aUid1, const TDataType& aDataType) const;
 412.290 +	TInt SendReceiveWithReconnect(TInt aFunction,const TIpcArgs& aIpcArgs) const;
 412.291 +	TInt TransferAndInternalizeDataL(const TDesC& aPath, const TInt aRequiredBufferSize, CDataRecognitionResultArray& aResult) const;
 412.292 +	TInt GetExecutableName(TDes& aNativeExecutableName, TDes& aLogicalExecutableName, HBufC8*& aOpaqueData, TIpcArgs& aIpcArgs, TInt aOpcode) const;
 412.293 +	TInt GetOpaqueData(HBufC8*& aOpaqueData, TInt aLengthOfOpaqueData) const;
 412.294 +	TInt StartApplicationPassingFileHandle(const TDesC& aNativeExecutableName, const TDesC& aLogicalExecutableName, const TDesC8* aOpaqueData, const RFile& aFile, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous);
 412.295 +	TInt StartApplicationPassingDocumentName(const TDesC& aNativeExecutableName, const TDesC& aLogicalExecutableName, const TDesC8* aOpaqueData, const TDesC& aDocumentName, TThreadId& aThreadId,TApaCommand aCommand, TRequestStatus* aRequestStatusForRendezvous);
 412.296 +	void StartApplicationL(const TDesC& aNativeExecutableName, const CApaCommandLine& aCommandLine, TThreadId& aThreadId, TRequestStatus* aRequestStatusForRendezvous);
 412.297 +	TInt DoAppForDocumentOptionallySpecifyingService(const TDesC& aFileName, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType, TInt aOpcode) const;
 412.298 +	TInt DoAppForDocumentOptionallySpecifyingService(const RFile& aFile, TUid aServiceUid, TUid& aAppUid, TDataType& aDataType, TInt aOpcode) const;
 412.299 +	TInt GetBufferFromFile(HBufC8*& aBuffer, const TDesC& aFileName) const;
 412.300 +	TInt DoStartApp(const CApaCommandLine& aCommandLine, TThreadId* aThreadId,TRequestStatus* aRequestStatusForRendezvous);
 412.301 +	void DoStartAppL(const CApaCommandLine& aCommandLine, TThreadId* aThreadId,TRequestStatus* aRequestStatusForRendezvous);
 412.302 +	static void GetThreadIdL(TThreadId& aThreadId, const RProcess& aProcess);
 412.303 +	static void DeletePointerToPointerToTAny(TAny* aPointerToPointerToTAny);
 412.304 +	static CBufFlat* CreateRegFilesBufferL(const RPointerArray<TDesC>& aRegFiles);
 412.305 +	static void CleanupOperation(TAny* aAny);
 412.306 +
 412.307 +private: // data
 412.308 +	CApaLsSessionExtension* iExtension; // friend!
 412.309 +	};
 412.310 +
 412.311 +
 412.312 +#endif
   413.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   413.2 +++ b/epoc32/include/mw/apgctl.h	Wed Mar 31 12:27:01 2010 +0100
   413.3 @@ -0,0 +1,160 @@
   413.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   413.5 +// All rights reserved.
   413.6 +// This component and the accompanying materials are made available
   413.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   413.8 +// which accompanies this distribution, and is available
   413.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  413.10 +//
  413.11 +// Initial Contributors:
  413.12 +// Nokia Corporation - initial contribution.
  413.13 +//
  413.14 +// Contributors:
  413.15 +//
  413.16 +// Description:
  413.17 +//
  413.18 +
  413.19 +#ifndef __APGCTL_H__
  413.20 +#define __APGCTL_H__
  413.21 +
  413.22 +#if !defined(__E32STD_H__)
  413.23 +#include <e32std.h>
  413.24 +#endif
  413.25 +#if !defined(__E32BASE_H__)
  413.26 +#include <e32base.h>
  413.27 +#endif
  413.28 +
  413.29 +// classes defined:
  413.30 +class CApaSystemControl;
  413.31 +class CApaSystemControlList;
  413.32 +//
  413.33 +// classes referenced:
  413.34 +class RFs;
  413.35 +class CApaMaskedBitmap;
  413.36 +//
  413.37 +
  413.38 +/**
  413.39 +Calls the control DLL's first ordinal function to create and run the control.
  413.40 +
  413.41 +The function leaves with KErrBadLibraryEntryPoint if the ordinal 1 function 
  413.42 +cannot be found.
  413.43 +
  413.44 +@publishedAll 
  413.45 +@released
  413.46 +*/
  413.47 +typedef TInt (*ApaRunSystemControl)(const TDesC&);
  413.48 +
  413.49 +/**
  413.50 +@publishedAll 
  413.51 +@released
  413.52 +*/
  413.53 +#ifdef _UNICODE
  413.54 +#define KUidSystemControlDll KUidSystemControlDll16
  413.55 +#else
  413.56 +#define KUidSystemControlDll KUidSystemControlDll8
  413.57 +#endif
  413.58 +
  413.59 +/**
  413.60 +@publishedAll 
  413.61 +@deprecated
  413.62 +*/
  413.63 +const TInt KSystemControlDllUidValue8=0x10000297;
  413.64 +
  413.65 +/**
  413.66 +@publishedAll
  413.67 +@deprecated
  413.68 +*/
  413.69 +const TUid KUidSystemControlDll8={KSystemControlDllUidValue8};
  413.70 +
  413.71 +/**
  413.72 +@publishedAll
  413.73 +@released
  413.74 +*/
  413.75 +const TUid KUidSystemControlDll16={0x10003A34};
  413.76 +
  413.77 +
  413.78 +class CApaSystemControl : public CBase
  413.79 +/** Wrapper to a control panel application.
  413.80 +
  413.81 +An instance of the class represents a control panel application. It is also a cache for the control's icon and caption.
  413.82 +
  413.83 +An instance of the wrapper can only be constructed by the control panel application list, which 
  413.84 +is a CApaSystemControlList object. 
  413.85 +
  413.86 +@publishedAll
  413.87 +@released */
  413.88 +	{
  413.89 +public:
  413.90 +	IMPORT_C void CreateL();
  413.91 +	IMPORT_C TUid Type()const;
  413.92 +	IMPORT_C TFileName FileName()const;
  413.93 +	IMPORT_C CApaMaskedBitmap* Icon()const; // one size of icon, 48x48?
  413.94 +	IMPORT_C TPtrC Caption()const;
  413.95 +	IMPORT_C TPtrC ShortCaption()const;
  413.96 +private:
  413.97 +	static CApaSystemControl* NewL(RFs& aFs,const TDesC& aFullPath,const TUidType aUidType);
  413.98 +	~CApaSystemControl();
  413.99 +	
 413.100 +	CApaSystemControl(RFs& aFs);
 413.101 +	void ConstructL(const TDesC& aFullPath,const TUidType aUidType);
 413.102 +private:
 413.103 +	CApaSystemControl* iNext;
 413.104 +	HBufC* iCaption;
 413.105 +	HBufC* iShortCaption;
 413.106 +	CApaMaskedBitmap* iIcon;
 413.107 +	TBool iExists; // used during updating
 413.108 +	TFileName iFullPath;
 413.109 +	TUidType iUidType;
 413.110 +	RFs& iFs;
 413.111 +	
 413.112 +	friend class CApaSystemControlList;
 413.113 +	};
 413.114 +
 413.115 +
 413.116 +
 413.117 +class CApaSystemControlList : public CBase
 413.118 +/** Provides a list of all available control panel applications present on the phone. 
 413.119 +This class is implemented as a linked list of CApaSystemControl. Updates the control panel application list by removing 
 413.120 +control panels that no longer exist, adding new control panels found to the control panel application list and replacing 
 413.121 +a control panel if found in an earlier drive.
 413.122 +
 413.123 +@see CApaSystemControl
 413.124 +@publishedPartner
 413.125 +@released
 413.126 +*/
 413.127 +	{
 413.128 +public:
 413.129 +	IMPORT_C static CApaSystemControlList* NewL(RFs& aFs);
 413.130 +	IMPORT_C ~CApaSystemControlList();
 413.131 +	
 413.132 +	IMPORT_C TInt Count()const;
 413.133 +	IMPORT_C TInt Index(TUid aType)const;
 413.134 +	IMPORT_C CApaSystemControl* Control(TInt aIndex)const;
 413.135 +	IMPORT_C CApaSystemControl* Control(TUid aType)const;
 413.136 +	
 413.137 +	IMPORT_C void UpdateL();
 413.138 +	inline TInt UpdateCount()const;
 413.139 +private:
 413.140 +	CApaSystemControlList(RFs& aFs);
 413.141 +	CApaSystemControl* PreviousControl(const CApaSystemControl* aControl) const;
 413.142 +private:
 413.143 +	TInt iUpdateCount;
 413.144 +	RFs& iFs;
 413.145 +	CApaSystemControl* iControl;
 413.146 +	};
 413.147 +
 413.148 +
 413.149 +//
 413.150 +// inlines
 413.151 +//
 413.152 +
 413.153 +
 413.154 +inline TInt CApaSystemControlList::UpdateCount()const
 413.155 +/** Gets the number of times the control panel application list has been 
 413.156 +updated (by calling UpdateL()). It returns 1 for a newly created list.
 413.157 +
 413.158 +@return The number of times the control panel application list has been changed. */
 413.159 +	{ return iUpdateCount; }
 413.160 +
 413.161 +
 413.162 +
 413.163 +#endif
   414.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   414.2 +++ b/epoc32/include/mw/apgdoor.h	Wed Mar 31 12:27:01 2010 +0100
   414.3 @@ -0,0 +1,181 @@
   414.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   414.5 +// All rights reserved.
   414.6 +// This component and the accompanying materials are made available
   414.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   414.8 +// which accompanies this distribution, and is available
   414.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  414.10 +//
  414.11 +// Initial Contributors:
  414.12 +// Nokia Corporation - initial contribution.
  414.13 +//
  414.14 +// Contributors:
  414.15 +//
  414.16 +// Description:
  414.17 +//
  414.18 +
  414.19 +#ifndef __APGDOOR_H__
  414.20 +#define __APGDOOR_H__
  414.21 +
  414.22 +#if !defined(__E32STD_H__)
  414.23 +#include <e32std.h>
  414.24 +#endif
  414.25 +#if !defined(__E32BASE_H__)
  414.26 +#include <e32base.h>
  414.27 +#endif
  414.28 +#if !defined(__S32STD_H__)
  414.29 +#include <s32std.h>
  414.30 +#endif
  414.31 +#if !defined(__GDI_H__)
  414.32 +#include <gdi.h>
  414.33 +#endif
  414.34 +#if !defined(__APPARC_H__)
  414.35 +#include <apparc.h>
  414.36 +#endif
  414.37 +#if !defined(__APADBASE_H__)
  414.38 +#include <apadbase.h>
  414.39 +#endif
  414.40 +
  414.41 +/**
  414.42 +@internalAll
  414.43 +*/
  414.44 +#ifdef _UNICODE
  414.45 +#define KUidApaDoorDocStream KUidApaDoorDocStream16
  414.46 +#else
  414.47 +#define KUidApaDoorDocStream KUidApaDoorDocStream8
  414.48 +#endif
  414.49 +
  414.50 +/**
  414.51 +@internalComponent
  414.52 +@deprecated
  414.53 +*/
  414.54 +const TUid KUidApaDoorDocStream8={0x10000144};
  414.55 +
  414.56 +/**
  414.57 +@internalComponent
  414.58 +*/
  414.59 +const TUid KUidApaDoorDocStream16={0x10003A35};
  414.60 +
  414.61 +// classes defined:
  414.62 +class CApaDoor;
  414.63 +class TApaPictureFactory;
  414.64 +//
  414.65 +// classes referenced:
  414.66 +class CEmbeddedStore;
  414.67 +//
  414.68 +
  414.69 +class CApaDoor : public CApaDoorBase
  414.70 +/** A wrapper for an embedded document that can be displayed in a user interface 
  414.71 +as an icon or a glass door. 
  414.72 +
  414.73 +@publishedAll 
  414.74 +@released */
  414.75 +	{
  414.76 +public:
  414.77 +	IMPORT_C static CApaDoor* NewLC(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); // call to create a new door in iconic format - restoration is achieved with TApaPictureFactory
  414.78 +	IMPORT_C static CApaDoor* NewL(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); // call to create a new door in iconic format - restoration is achieved with TApaPictureFactory
  414.79 +	IMPORT_C static CApaDoor* NewL(RFs& aFs, const CStreamStore& aStore,TStreamId aStreamId,CApaProcess& aProcess); // restoring constructor called by TApaPictureFactory
  414.80 +	//
  414.81 +	IMPORT_C void SetFormatToIconL();
  414.82 +	IMPORT_C void SetFormatToGlassL();
  414.83 +	IMPORT_C void SetFormatToTemporaryIconL(TBool aEnabled=ETrue);
  414.84 +	//
  414.85 +	IMPORT_C CApaDocument* DocumentL(TBool aCheckPassword=EFalse); // returns a pointer to the doc, restoring it if necessary. Checks password if required.
  414.86 +	inline TDesC* Caption()const;
  414.87 +	IMPORT_C TUid AppUidL()const;
  414.88 +	//
  414.89 +	// persistence methods
  414.90 +	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aHeadStreamId);
  414.91 +	TStreamId StoreL(CStreamStore& aStore) const;
  414.92 +	//
  414.93 +	IMPORT_C ~CApaDoor();
  414.94 +	//
  414.95 +	// from CPicture
  414.96 +	void Draw(CGraphicsContext& aGc,const TPoint& aTopLeft,const TRect& aClipRect,
  414.97 +						MGraphicsDeviceMap* aMap)const; // draws according to current iPicFormat
  414.98 +	void DetachFromStoreL(TDetach aDegree=EDetachFull); //lint !e1735 Virtual function has default parameter - Must use the same default as declared by CPicture
  414.99 +	void GetOriginalSizeInTwips(TSize& aSize)const;
 414.100 +	void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight);
 414.101 +	void SetCropInTwips(const TMargins& aMargins);
 414.102 +	TPictureCapability Capability() const;
 414.103 +	void GetCropInTwips(TMargins& aMargins) const;
 414.104 +	TInt ScaleFactorWidth() const;
 414.105 +	TInt ScaleFactorHeight() const;
 414.106 +private:
 414.107 +	CApaDoor(RFs& aFs, CApaProcess& aProcess);
 414.108 +	CApaDoor(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips);
 414.109 +	void ConstructL();
 414.110 +	//
 414.111 +	void SetIconSizeInTwips(TSize aSize); // for use of factory
 414.112 +	//
 414.113 +	void StoreDocL(CPersistentStore& aStore)const;
 414.114 +	void RestoreDocL(const CPersistentStore& aStore);
 414.115 +	void RestoreDoorStateL(const CStreamStore& aStore,const CStreamDictionary& streamDic);
 414.116 +	static CStreamDictionary* ReadStreamDictionaryLC(const CStreamStore& aStore,TStreamId aStreamId);
 414.117 +	static void CopyStoreL(const CEmbeddedStore& aSourceStore,RWriteStream& aTargetStream);
 414.118 +	void ExternalizeStateStreamL(CStreamStore& aStore,CStreamDictionary& aStreamDict)const;
 414.119 +	void InternalizeStateStreamL(const CStreamStore& aStore,const CStreamDictionary& aStreamDict,TSize aDefaultIconSize);
 414.120 +	//
 414.121 +	// required so CPicture's can be swizzled
 414.122 +	void ExternalizeL(RWriteStream& aStream)const;
 414.123 +	// from CApaDoorBase
 414.124 +	virtual TSize GlassDoorSize()const;
 414.125 +	TUid AppUidFromStreamL() const;
 414.126 +private:
 414.127 +	RFs& iFs;
 414.128 +	HBufC* iAppCaption; // name of the app used to create the embedded object
 414.129 +	CApaProcess* iApaProcess;
 414.130 +	CApaDocument* iApaDoc;
 414.131 +	CPicture* iPicture; // the current view of the door, either iconic or glass
 414.132 +	CEmbeddedStore* iStore; // store containing the doc
 414.133 +	CBufSeg* iStoreHost; // the host for the embedded store, if the door has been detached from its originating store
 414.134 +	__MUTABLE TSize iIconSizeInTwips;
 414.135 +	//
 414.136 +	friend class TApaPictureFactory;
 414.137 +	};
 414.138 +
 414.139 +
 414.140 +class TApaPictureFactory : public MPictureFactory
 414.141 +// Recognizes KUidPictureTypeDoor and creates CApaDoor pictures
 414.142 +/** A factory class for instantiating and restoring an application's door.
 414.143 +
 414.144 +A door factory object is constructed by the UI environment and can be accessed 
 414.145 +by calling CEikonEnv::PictureFactory().
 414.146 +
 414.147 +@publishedAll
 414.148 +@released 
 414.149 +@see CEikonEnv::PictureFactory()
 414.150 +@see CApaDoor */
 414.151 +	{
 414.152 +public:
 414.153 +	IMPORT_C TApaPictureFactory(CApaProcess* aAppProcess);
 414.154 +	inline void SetIconSize(TSize aIconSizeInTwips);
 414.155 +	//
 414.156 +	// from MPictureFactory
 414.157 +	IMPORT_C void NewPictureL(TPictureHeader& aPictureHeader,const CStreamStore& aPictureStore)const; // used to create CApaDoor's during document restore only 
 414.158 +protected:
 414.159 +	IMPORT_C TApaPictureFactory();
 414.160 +	
 414.161 +private:
 414.162 +	CApaProcess* iApaProcess;
 414.163 +	TSize iIconSize;
 414.164 +	TInt iSpare;
 414.165 +	};
 414.166 +
 414.167 +
 414.168 +//
 414.169 +// inlines
 414.170 +//
 414.171 +
 414.172 +inline TDesC* CApaDoor::Caption()const 
 414.173 +	/** Gets the name of the application with which the embedded document is associated.
 414.174 +	
 414.175 +	@return A pointer to a descriptor containing the name of the application. */
 414.176 +	{ return iAppCaption; }
 414.177 +
 414.178 +inline void TApaPictureFactory::SetIconSize(TSize aIconSizeInTwips)
 414.179 +	/** Sets the size of the icon.
 414.180 +	
 414.181 +	@param aIconSizeInTwips The size of the icon, in twips. */
 414.182 +	{ iIconSize = aIconSizeInTwips; }
 414.183 +
 414.184 +#endif
   415.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   415.2 +++ b/epoc32/include/mw/apgicnfl.h	Wed Mar 31 12:27:01 2010 +0100
   415.3 @@ -0,0 +1,561 @@
   415.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   415.5 +// All rights reserved.
   415.6 +// This component and the accompanying materials are made available
   415.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   415.8 +// which accompanies this distribution, and is available
   415.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  415.10 +//
  415.11 +// Initial Contributors:
  415.12 +// Nokia Corporation - initial contribution.
  415.13 +//
  415.14 +// Contributors:
  415.15 +//
  415.16 +// Description:
  415.17 +//
  415.18 +
  415.19 +#ifndef __APGICNFL_H__
  415.20 +#define __APGICNFL_H__
  415.21 +
  415.22 +#include <apadef.h>
  415.23 +#include <apaid.h>
  415.24 +#include <bitdev.h>
  415.25 +#include <apmstd.h>
  415.26 +#include <badesca.h>
  415.27 +
  415.28 +class CFbsBitmap;
  415.29 +class CPersistentStore;
  415.30 +class RReadStream;
  415.31 +class RWriteStream;
  415.32 +
  415.33 +class CApaMaskedBitmap : public CFbsBitmap
  415.34 +/** An application icon.
  415.35 +
  415.36 +This is a bitmap and a mask, managed by the Font and Bitmap server.
  415.37 +
  415.38 +An object of this type is passed to RApaLsSession::GetAppIcon() to fetch a 
  415.39 +suitable application icon.
  415.40 +
  415.41 +@publishedAll
  415.42 +@released
  415.43 +@see RApaLsSession::GetAppIcon() */
  415.44 +	{
  415.45 +public:
  415.46 +	IMPORT_C static CApaMaskedBitmap* NewLC();
  415.47 +	IMPORT_C static CApaMaskedBitmap* NewL(const CApaMaskedBitmap* aSourceIcon);
  415.48 +	//
  415.49 +	IMPORT_C CFbsBitmap* Mask() const;
  415.50 +	IMPORT_C void InternalizeL(RReadStream& aStream); 		//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
  415.51 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
  415.52 +	//
  415.53 +	IMPORT_C ~CApaMaskedBitmap();
  415.54 +	void SetRomBitmapL(TUint8* aRomPointer);				//lint !e1511 Member hides non-virtual member - CFbsBitmap not primary intended for derivation
  415.55 +	IMPORT_C void SetMaskBitmap(CFbsBitmap* aMask);
  415.56 +private:
  415.57 +	CApaMaskedBitmap();
  415.58 +	void ConstructL();
  415.59 +private:
  415.60 +	CFbsBitmap* iMask;
  415.61 +	};
  415.62 +
  415.63 +/**
  415.64 +@internalComponent
  415.65 +*/
  415.66 +class CApaResourceFileWriterBase : public CBase
  415.67 +	{
  415.68 +protected:
  415.69 +	class RBufferSink;
  415.70 +	class MDataSink
  415.71 +		{
  415.72 +	public:
  415.73 +		void WriteBufferL(const TDesC8& aBuffer);
  415.74 +		void WriteCompressedUnicodeRunL(TInt aNumberOfBytesWhenUncompressed, const TDesC8& aTextAsCompressedUnicode);
  415.75 +		void WriteInCompressedUnicodeFormatL(TInt aNumberOfBytesWhenUncompressed, const TDesC8& aData, TBool aInCompressedUnicodeRun);
  415.76 +		TInt NumberOfBytesWhenUncompressed() const;
  415.77 +		inline TBool CompressedUnicodeFormat() const {return (iBufferSinkForCompressedUnicodeFormat!=NULL);}
  415.78 +	protected:
  415.79 +		MDataSink(RBufferSink* aBufferSinkForCompressedUnicodeFormat);
  415.80 +		void FlushL(TBool aFinalFlush);
  415.81 +		void Reset(TInt& aNumberOfBytesWhenUncompressed);
  415.82 +	private:
  415.83 +		void WriteRunLengthL(TInt aRunLength);
  415.84 +	private:
  415.85 +		enum
  415.86 +			{
  415.87 +			EFlag_InCompressedUnicodeRun	=0x00000001
  415.88 +			};
  415.89 +	private:
  415.90 +		// new virtual functions
  415.91 +		virtual void DoWriteBufferL(const TDesC8& aBuffer)=0;
  415.92 +	private:
  415.93 +		TInt iNumberOfBytesWhenUncompressed;
  415.94 +		TUint iFlags;
  415.95 +		RBufferSink* iBufferSinkForCompressedUnicodeFormat; // does not own what it points to
  415.96 +		};
  415.97 +	class RBufferSink : public MDataSink
  415.98 +		{
  415.99 +	public:
 415.100 +		RBufferSink(RBufferSink* aBufferSinkForCompressedUnicodeFormat);
 415.101 +		void ConstructLC();
 415.102 +		void Close();
 415.103 +		void FlushAndGetAndResetL(TInt& aNumberOfBytesWhenUncompressed, RBuf8& aBuffer);
 415.104 +	private:
 415.105 +		// from MDataSink
 415.106 +		virtual void DoWriteBufferL(const TDesC8& aBuffer);
 415.107 +	private:
 415.108 +		RBuf8 iBuffer;
 415.109 +		};
 415.110 +protected:
 415.111 +	CApaResourceFileWriterBase();
 415.112 +	void DoGenerateFileContentsL(RBuf8& aBuffer, TUid aUid2, TUid aUid3) const;
 415.113 +	void WriteUidTypeL(MDataSink& aDataSink, TUid aUid2, TUid aUid3) const;
 415.114 +	void WriteTextL(MDataSink& aDataSink, const TDesC& aText) const;
 415.115 +	void WriteText8L(MDataSink& aDataSink, const TDesC8& aText8) const;
 415.116 +	void WriteUint8L(MDataSink& aDataSink, TUint aUint8) const;
 415.117 +	void WriteLittleEndianUint16L(MDataSink& aDataSink, TUint aUint16) const;
 415.118 +	void WriteLittleEndianUint32L(MDataSink& aDataSink, TUint aUint32) const;
 415.119 +	void WriteBufferL(MDataSink& aDataSink, const TDesC8& aBuffer) const;
 415.120 +private:
 415.121 +	static HBufC8* AsCompressedUnicodeLC(const TDesC& aUncompressedUnicode);
 415.122 +	void MainResourceInCompiledFormatLC(TInt& aMainResourceSizeInBytesWhenUncompressed, RBuf8& aBuffer, TBool aCompressedUnicodeFormat) const;
 415.123 +private:
 415.124 +	// new virtual functions
 415.125 +	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const=0;
 415.126 +	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const=0;
 415.127 +	};
 415.128 +
 415.129 +/**
 415.130 +Used to support the registration of non-native applications.
 415.131 +
 415.132 +The task of this class is to generate the resource files expected by the Apparc server. Applications 
 415.133 +that register other applications can use functions of this class to customise the generated resource files.
 415.134 +
 415.135 +@publishedPartner
 415.136 +@released
 415.137 +*/
 415.138 +class CApaRegistrationResourceFileWriter : public CApaResourceFileWriterBase
 415.139 +	{
 415.140 +public:
 415.141 +	IMPORT_C static CApaRegistrationResourceFileWriter* NewL(TUid aAppUid, const TDesC& aAppFile, TUint aAttributes);
 415.142 +	IMPORT_C virtual ~CApaRegistrationResourceFileWriter();
 415.143 +	TUid AppUid() const;
 415.144 +	void GenerateFileContentsL(RBuf8& aBuffer) const;
 415.145 +	void SetLocalisableResourceFileL(const TDesC& aLocalisableResourceFile);
 415.146 +	IMPORT_C void SetAppIsHiddenL(TBool aAppIsHidden);
 415.147 +	IMPORT_C void SetEmbeddabilityL(TApaAppCapability::TEmbeddability aEmbeddability);
 415.148 +	IMPORT_C void SetSupportsNewFileL(TBool aSupportsNewFile);
 415.149 +	IMPORT_C void SetLaunchInBackgroundL(TBool aLaunchInBackground);
 415.150 +	IMPORT_C void SetGroupNameL(const TDesC& aGroupName);
 415.151 +	IMPORT_C void SetDefaultScreenNumberL(TInt aDefaultScreenNumber);
 415.152 +	IMPORT_C void SetOpaqueDataL(const TDesC8& aOpaqueData);
 415.153 +	IMPORT_C void AddDataTypeL(TInt aPriority, const TDesC8& aType);
 415.154 +	IMPORT_C void AddFileOwnershipInfoL(const TDesC& aFileName);
 415.155 +// Not needing to be supported for the foreseeable future:
 415.156 +//	IMPORT_C void AddServiceInfoL(TUid aServiceUid, const TDesC8* aOpaqueData);
 415.157 +//	IMPORT_C void AddServiceInfoDataTypeL(TUid aServiceUid, TInt aPriority, const TDesC8& aType);
 415.158 +private:
 415.159 +	struct SDataType // DATATYPE
 415.160 +		{
 415.161 +		TInt iPriority;
 415.162 +		HBufC8* iType;
 415.163 +		};
 415.164 +	struct SFileOwnershipInfo // FILE_OWNERSHIP_INFO
 415.165 +		{
 415.166 +		HBufC* iFileName;
 415.167 +		};
 415.168 +private:
 415.169 +	CApaRegistrationResourceFileWriter(TUid aAppUid, TUint aAttributes);
 415.170 +	void ConstructL(const TDesC& aAppFile);
 415.171 +	void WriteDataTypeL(MDataSink& aDataSink, const SDataType& aDataType) const;
 415.172 +	void WriteFileOwnershipInfoL(MDataSink& aDataSink, const SFileOwnershipInfo& aFileOwnershipInfo) const;
 415.173 +	// from CApaResourceFileWriterBase
 415.174 +	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const;
 415.175 +	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const;
 415.176 +private:
 415.177 +	TUid iAppUid;
 415.178 +	HBufC* iAppFile;
 415.179 +	TUint iAttributes;
 415.180 +	HBufC* iLocalisableResourceFile;
 415.181 +	TBool iAppIsHidden;
 415.182 +	TApaAppCapability::TEmbeddability iEmbeddability;
 415.183 +	TBool iSupportsNewFile;
 415.184 +	TBool iLaunchInBackground;
 415.185 +	HBufC* iGroupName;
 415.186 +	TInt iDefaultScreenNumber;
 415.187 +	HBufC8* iOpaqueData;
 415.188 +	RArray<SDataType> iDataTypeList;
 415.189 +	RArray<SFileOwnershipInfo> iFileOwnershipList;
 415.190 +	};
 415.191 +
 415.192 +/**
 415.193 +@internalAll
 415.194 +*/
 415.195 +class CApaLocalisableResourceFileWriter : public CApaResourceFileWriterBase
 415.196 +	{
 415.197 +public:
 415.198 +	IMPORT_C static CApaLocalisableResourceFileWriter* NewL(const TDesC& aShortCaption, const TDesC& aCaption, TInt aNumberOfIcons, const TDesC& aGroupName);
 415.199 +	IMPORT_C virtual ~CApaLocalisableResourceFileWriter();
 415.200 +	void GenerateFileContentsL(RBuf8& aBuffer) const;
 415.201 +	void SetIconFileL(const TDesC& aIconFile);
 415.202 +// Not needing to be supported for the foreseeable future:
 415.203 +//	IMPORT_C void AddViewDataL(TUid aViewUid, TInt aScreenMode, const TDesC& aCaption, TInt aNumberOfIcons, const TDesC& aIconFile);
 415.204 +private:
 415.205 +	struct SCaptionAndIconInfo // CAPTION_AND_ICON_INFO
 415.206 +		{
 415.207 +		HBufC* iCaption;
 415.208 +		TInt iNumberOfIcons;
 415.209 +		HBufC* iIconFile;
 415.210 +		};
 415.211 +private:
 415.212 +	CApaLocalisableResourceFileWriter(TInt aNumberOfIcons);
 415.213 +	void ConstructL(const TDesC& aShortCaption, const TDesC& aCaption, const TDesC& aGroupName);
 415.214 +	void WriteCaptionAndIconInfoL(MDataSink& aDataSink, const SCaptionAndIconInfo& aCaptionAndIcon) const;
 415.215 +	// from CApaResourceFileWriterBase
 415.216 +	virtual void MainResourceInCompiledFormatL(MDataSink& aDataSink) const;
 415.217 +	virtual const TDesC8* SecondResourceL(TBool& aSecondResourceInCompressedUnicodeFormat) const;
 415.218 +private:
 415.219 +	HBufC* iShortCaption;
 415.220 +	SCaptionAndIconInfo iCaptionAndIcon;
 415.221 +	HBufC* iGroupName;
 415.222 +	};
 415.223 +
 415.224 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.225 +
 415.226 +class CApaAppInfoFileWriter;
 415.227 +
 415.228 +/**
 415.229 +@internalAll
 415.230 +*/
 415.231 +const TUid KUidInterimFormatFileForJavaMIDletInstaller={0x10208182};
 415.232 +
 415.233 +/**
 415.234 +@internalAll
 415.235 +*/
 415.236 +class ForJavaMIDletInstaller
 415.237 +	{
 415.238 +public:
 415.239 +	IMPORT_C static void CheckInterimFormatFileNotCorruptL(RFile& aInterimFormatFile);
 415.240 +	IMPORT_C static void GetJavaMIDletInfoL(RFs& aFs, const TDesC& aFileName,TUint32& aJavaMIDletInfo_AmsAuthId,TUint32& aJavaMIDletInfo_MIDlet);
 415.241 +	IMPORT_C static CApaAppInfoFileWriter* NewInterimFormatFileWriterLC(RFs& aFs,const TDesC& aFileName,TUid aApplicationUid,TUint32 aJavaMIDletInfo_AmsAuthId,TInt aJavaMIDletInfo_MIDlet);
 415.242 +	};
 415.243 +
 415.244 +#endif // UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER
 415.245 +
 415.246 +#if (((defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || !defined(SYMBIAN_HIDE_UI_FRAMEWORKS_V1)) && !defined(SYMBIAN_REMOVE_UI_FRAMEWORKS_V1)) || defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER))
 415.247 +
 415.248 +#if !defined(IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER)
 415.249 +// we're compiling a source file that doesn't define IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER, so give it it's default "value" of "IMPORT_C"
 415.250 +#define IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER IMPORT_C
 415.251 +#endif
 415.252 +
 415.253 +/**
 415.254 +@publishedAll
 415.255 +@deprecated
 415.256 +*/
 415.257 +#ifdef _UNICODE
 415.258 +#define KUidAppInfoFile KUidAppInfoFile16
 415.259 +#else
 415.260 +#define KUidAppInfoFile KUidAppInfoFile8
 415.261 +#endif
 415.262 +
 415.263 +/**
 415.264 +@publishedAll
 415.265 +@deprecated
 415.266 +*/
 415.267 +const TUid KUidAppInfoFile8={268435562};
 415.268 +
 415.269 +/**
 415.270 +@publishedAll
 415.271 +@deprecated
 415.272 +*/
 415.273 +const TUid KUidAppInfoFile16={0x10003A38};
 415.274 +
 415.275 +/**
 415.276 +@internalComponent
 415.277 +*/
 415.278 +const TUid KUidAppInfoFileVersion2={0x101fb032};
 415.279 +
 415.280 +/**
 415.281 +@internalComponent
 415.282 +*/
 415.283 +enum TAifVersion
 415.284 +// The order here is important, only ever APPEND to the list
 415.285 +	{
 415.286 +	EAifVersionOriginal,
 415.287 +	EAifVersionAddsDataType,
 415.288 +	EAifVersionAddsViewData,
 415.289 +	EAifVersionAddsFileOwnershipInfo
 415.290 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.291 +	,EAifVersionAddsJavaMIDletInfo
 415.292 +#endif
 415.293 +	};
 415.294 +
 415.295 +class CApaAIFCaption : public CBase
 415.296 +//
 415.297 +// Represents a caption in an AIF during reading and writing of the file.
 415.298 +/**
 415.299 +@internalComponent
 415.300 +*/
 415.301 +	{
 415.302 +public:
 415.303 +	~CApaAIFCaption();
 415.304 +	CApaAIFCaption();
 415.305 +	void ConstructL(TLanguage aLanguage,const TDesC& aCaption);
 415.306 +	static CApaAIFCaption* NewLC(TLanguage aLanguage,const TDesC& aCaption);
 415.307 +	void InternalizeL(RReadStream& aStream);
 415.308 +	void ExternalizeL(RWriteStream& aStream) const;
 415.309 +	TLanguage Language() const;
 415.310 +	TApaAppCaption Caption() const;
 415.311 +public:
 415.312 +	HBufC* iCaption;
 415.313 +	TLanguage iLanguage;
 415.314 +	};
 415.315 +
 415.316 +class CApaAIFViewData : public CBase
 415.317 +//
 415.318 +// Represents the data associated with an application view described in an AIF
 415.319 +// during reading and writing of the file.
 415.320 +// implementation class
 415.321 +/**
 415.322 +@internalComponent
 415.323 +*/
 415.324 +	{
 415.325 +public:
 415.326 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TApaAppCaption CaptionL(TLanguage aLanguage) const;
 415.327 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER CApaMaskedBitmap* IconByIndexL(TInt aIndex) const;
 415.328 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TInt NumberOfIcons() const;
 415.329 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TUid ViewUid() const;
 415.330 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TInt ScreenMode() const;
 415.331 +public:
 415.332 +	~CApaAIFViewData();
 415.333 +	static CApaAIFViewData* NewLC();
 415.334 +	static CApaAIFViewData* NewLC(const CApaAIFViewData& aSourceData);
 415.335 +	void InternalizeL(RReadStream& aStream);		
 415.336 +	void ExternalizeL(RWriteStream& aStream) const;
 415.337 +	void SetScreenMode(TInt aScreenMode);
 415.338 +	void AddCaptionL(TLanguage aLanguage,const TDesC& aCaption);
 415.339 +	void AddIconL(CApaMaskedBitmap& aIcon);
 415.340 +	void AddIconIndexL(TInt aIndex);
 415.341 +	void SetViewUid(TUid aUid);
 415.342 +	void LoadIconsL(const TDesC& aFileName, TUint aMbmOffset);
 415.343 +private:
 415.344 +	CApaAIFViewData();
 415.345 +	void ConstructL();
 415.346 +	void ConstructL(const CApaAIFViewData& aSourceData);
 415.347 +private:
 415.348 +	TInt iScreenMode;
 415.349 +	CArrayPtr<CApaMaskedBitmap>* iIconArray;
 415.350 +	CArrayPtr<CApaAIFCaption>* iCaptionArray;
 415.351 +	TUid iViewUid;
 415.352 +	CArrayFixFlat<TInt>* iIconIndexArray;		// used for AIF version 2 format
 415.353 +	};
 415.354 +
 415.355 +class CApaAppInfoFile : public CBase
 415.356 +/**
 415.357 +@internalComponent
 415.358 +*/
 415.359 +	{
 415.360 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.361 +	friend class ForJavaMIDletInstaller;
 415.362 +#endif
 415.363 +public:
 415.364 +	~CApaAppInfoFile();
 415.365 +	//
 415.366 +protected:
 415.367 +	CApaAppInfoFile(RFs& aFs);
 415.368 +	void ConstructL();
 415.369 +protected:
 415.370 +
 415.371 +	class TCaptionHeader
 415.372 +		{
 415.373 +	public:
 415.374 +		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
 415.375 +		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
 415.376 +	public:
 415.377 +		TSwizzle<HBufC> iCaption;
 415.378 +		TLanguage iLanguage;
 415.379 +		};
 415.380 +	class TIconHeader
 415.381 +		{
 415.382 +	public:
 415.383 +		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
 415.384 +		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
 415.385 +	public:
 415.386 +		TSwizzle<CApaMaskedBitmap> iIcon;	// Used for old AIF format Internalize
 415.387 +		TInt iIconSideInPixels;
 415.388 +		TSwizzle<CFbsBitmap> iIconMain;		// Used for new AIF format
 415.389 +		TSwizzle<CFbsBitmap> iIconMask;		// Used for new AIF format
 415.390 +		};
 415.391 +	class TDataTypeHeader
 415.392 +		{
 415.393 +	public:
 415.394 +		// header info only
 415.395 +		void InternalizeL(RReadStream& aStream); 			// internalizes the header info only
 415.396 +		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
 415.397 +	public:
 415.398 +		TSwizzle<TDataType> iDataType;
 415.399 +		TDataTypePriority iPriority;
 415.400 +		};
 415.401 +	class TViewDataHeader
 415.402 +		{
 415.403 +	public:
 415.404 +		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
 415.405 +		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
 415.406 +	public:
 415.407 +		TSwizzle<CApaAIFViewData> iViewData;
 415.408 +		};
 415.409 +	class TFileOwnershipInfoHeader
 415.410 +		{
 415.411 +	public:
 415.412 +		void InternalizeL(RReadStream& aStream);			// internalizes the header info only
 415.413 +		void ExternalizeL(RWriteStream& aStream) const;		// externalizes the header info only
 415.414 +	public:
 415.415 +		TSwizzle<HBufC> iOwnedFileName;
 415.416 +		};
 415.417 +protected:
 415.418 +	RFs& iFs;
 415.419 +	CPersistentStore* iStore;
 415.420 +	CArrayFix<TCaptionHeader>* iCaptionHeaderArray;
 415.421 +	CArrayFix<TIconHeader>* iIconHeaderArray;
 415.422 +	CArrayFix<TDataTypeHeader>* iDataTypeHeaderArray;
 415.423 +	CArrayFix<TViewDataHeader>* iViewDataHeaderArray;
 415.424 +	CArrayFix<TFileOwnershipInfoHeader>* iFileOwnershipInfoHeaderArray;
 415.425 +	TApaAppCapability iCapability;
 415.426 +	};
 415.427 +
 415.428 +class CApaAppInfoFileReader : public CApaAppInfoFile
 415.429 +/** Aif file reader.
 415.430 +
 415.431 +Aif files contain information about an application, including its icons and 
 415.432 +captions.
 415.433 +
 415.434 +An application can get a reader for its own aif file by calling CEikApplication::OpenAppInfoFileLC(). 
 415.435 +
 415.436 +@publishedAll
 415.437 +@deprecated */
 415.438 +	{
 415.439 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.440 +	friend class ForJavaMIDletInstaller;
 415.441 +#endif
 415.442 +public:
 415.443 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static CApaAppInfoFileReader* NewLC(RFs& aFs, const TDesC& aFileName,TUid aApplicationUid=KNullUid);
 415.444 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static CApaAppInfoFileReader* NewL(RFs& aFs, const TDesC& aFileName,TUid aApplicationUid=KNullUid);
 415.445 +	//
 415.446 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void Capability(TDes8& aInfo) const;
 415.447 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TApaAppCaption CaptionL(TLanguage aLanguage);
 415.448 +	
 415.449 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER CApaMaskedBitmap* CreateMaskedBitmapL(TInt aIconSideInPixels); // If there are no bitmaps in the file this method leaves with KErrNotFound
 415.450 +	// Not available until ER6
 415.451 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER CApaMaskedBitmap* CreateMaskedBitmapByIndexLC(TInt aIndex); // If there are no bitmaps in the file this method leaves with KErrNotFound
 415.452 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER TInt NumberOfBitmaps() const;
 415.453 +
 415.454 +	// Not available till ER5
 415.455 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void DataTypesSupportedL(CArrayFix<TDataTypeWithPriority>& aTypeList) const;
 415.456 +	//
 415.457 +
 415.458 +	// Not available till ER6.1
 415.459 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void GetViewsL(CArrayPtr<CApaAIFViewData>& aViewList) const;
 415.460 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void GetOwnedFilesL(CDesCArray& aOwnedFilesList) const;
 415.461 +	//	
 415.462 +
 415.463 +	// utility function
 415.464 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static void StretchDrawL(CFbsBitmap* aSource,CFbsBitmap* aTarget,TSize aSizeInPixels);
 415.465 +	//
 415.466 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER ~CApaAppInfoFileReader();
 415.467 +public:
 415.468 +	static void GetAifFileNameL(const TDesC& aFullName,TDes& aAifName);
 415.469 +private:
 415.470 +	CApaAppInfoFileReader(RFs& aFs);
 415.471 +	void InternalizeL(RReadStream& aStream);
 415.472 +	void ConstructL(const TDesC& aFileName,TUid aUid);
 415.473 +	void LoadAifFileVersionTwoL(const TDesC& aFileName, TUid aMostDerivedUid);
 415.474 +	void AddIconHeadersL(const TDesC& aFileName, TInt32 aFileOffset, TInt aNumIcons);
 415.475 +private:
 415.476 +	HBufC* iDefaultCaption;
 415.477 +	TUint8* iRomPointer;
 415.478 +	TInt iMbmOffset;
 415.479 +	HBufC* iAifFileName;
 415.480 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.481 +	TUint32 iJavaMIDletInfo_AmsAuthId;
 415.482 +	TInt iJavaMIDletInfo_MIDlet;
 415.483 +#endif
 415.484 +	};
 415.485 +
 415.486 +class CApaAppInfoFileWriter : public CApaAppInfoFile
 415.487 +/**
 415.488 +Aif file writer.
 415.489 +
 415.490 +This class writes application information, including icons and captions into the aif file.
 415.491 +
 415.492 +@publishedAll
 415.493 +@deprecated */
 415.494 +	{
 415.495 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.496 +	friend class ForJavaMIDletInstaller;
 415.497 +#endif
 415.498 +public:
 415.499 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static CApaAppInfoFileWriter* NewLC(RFs& aFs, const TDesC& aFileName,TUid aApplicationUid);
 415.500 +	//
 415.501 +	IMPORT_C TInt SetCapability(const TDesC8& aInfo);
 415.502 +	IMPORT_C void AddCaptionL(TLanguage aLanguage,const TDesC& aCaption);
 415.503 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddIconL(const TDesC& aIconFileName);
 415.504 +	IMPORT_C void AddIconL(CApaMaskedBitmap& aIcon);
 415.505 +	
 415.506 +	// Not available till ER5
 415.507 +	IMPORT_C void AddDataTypeL(const TDataTypeWithPriority& aTypePriority);
 415.508 +	//
 415.509 +
 415.510 +	// Not available till ER6.1
 415.511 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewL(TUid aViewUid);
 415.512 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewL(TUid aViewUid,TInt aScreenMode);
 415.513 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewCaptionL(TLanguage aLanguage,const TDesC& aCaption,TUid aViewUid);
 415.514 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddViewIconL(CApaMaskedBitmap& aIcon,TUid aViewUid);
 415.515 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void StoreViewL(TUid aViewId);
 415.516 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER void AddOwnedFileL(const TDesC& aOwnedFileName);
 415.517 +	//
 415.518 +	
 415.519 +	IMPORT_C void StoreL();
 415.520 +	//
 415.521 +	IMPORT_C ~CApaAppInfoFileWriter();
 415.522 +private:
 415.523 +	CApaAppInfoFileWriter(RFs& aFs);
 415.524 +	void ExternalizeL(RWriteStream& aStream) const;
 415.525 +	void ConstructL(const TDesC& aFileName,TUid aUid
 415.526 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.527 +					,TUid aMiddleUid=KUidAppInfoFile,TUint32 aJavaMIDletInfo_AmsAuthId=0,TInt aJavaMIDletInfo_MIDlet=0
 415.528 +#endif
 415.529 +					);
 415.530 +private:
 415.531 +	CStoreMap* iMap;
 415.532 +#if defined(UI_FRAMEWORKS_V1_REMNANT_FOR_JAVA_MIDLET_INSTALLER)
 415.533 +	TUint32 iJavaMIDletInfo_AmsAuthId;
 415.534 +	TInt iJavaMIDletInfo_MIDlet;
 415.535 +#endif
 415.536 +	};
 415.537 +
 415.538 +class CApaAppCaptionFileReader : public CBase
 415.539 +/**
 415.540 +@internalComponent
 415.541 +*/
 415.542 +	{
 415.543 +public:
 415.544 +	CApaAppCaptionFileReader(RFs& aFs,const TDesC& iAppFileName);
 415.545 +	void GetCaptionsL(TApaAppCaption& aCaption,TApaAppCaption& aShortCaption);
 415.546 +private:	
 415.547 +	RFs& iFs;
 415.548 +	TFileName iCaptionFileName;
 415.549 +	};
 415.550 +
 415.551 +class AppInfoFileUtils
 415.552 +// Internal utilities providing helper functions for non-ROM localisation
 415.553 +/**
 415.554 +@internalComponent
 415.555 +*/
 415.556 +	{
 415.557 +public: // For internal use only
 415.558 +	IMPORT_C_NOT_NEEDED_FOR_JAVA_MIDLET_INSTALLER static void GetAifFileName(const RFs& aFs,TDes& aAifName);
 415.559 +public:
 415.560 +	static void GetAifFileNameL(const RFs& aFs,const TDesC& aFullName,TDes& aAifName);
 415.561 +	};
 415.562 +#endif // #if (defined(SYMBIAN_SUPPORT_UI_FRAMEWORKS_V1) || !defined(SYMBIAN_HIDE_UI_FRAMEWORKS_V1)) && !defined(SYMBIAN_REMOVE_UI_FRAMEWORKS_V1)
 415.563 +
 415.564 +#endif
   416.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   416.2 +++ b/epoc32/include/mw/apgtask.h	Wed Mar 31 12:27:01 2010 +0100
   416.3 @@ -0,0 +1,195 @@
   416.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   416.5 +// All rights reserved.
   416.6 +// This component and the accompanying materials are made available
   416.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   416.8 +// which accompanies this distribution, and is available
   416.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  416.10 +//
  416.11 +// Initial Contributors:
  416.12 +// Nokia Corporation - initial contribution.
  416.13 +//
  416.14 +// Contributors:
  416.15 +//
  416.16 +// Description:
  416.17 +//
  416.18 +
  416.19 +#ifndef __APGTASK_H__
  416.20 +#define __APGTASK_H__
  416.21 +
  416.22 +#include <e32base.h>
  416.23 +#include <w32std.h>
  416.24 +
  416.25 +class RWsSession;
  416.26 +struct TKeyEvent;
  416.27 +
  416.28 +/** @internalTechnology */
  416.29 +static const TInt KApaSystemEventsWithPowerMgmtCapabilityStart = 100;
  416.30 +/** @internalTechnology */
  416.31 +static const TInt KApaSystemEventsWithPowerMgmtCapabilityEnd = 199;
  416.32 +
  416.33 +/** Defines the event types that a TApaTask object can send to its window group.
  416.34 +
  416.35 +The events are sent by TApaTask::SendSystemEvent() and are handled by CEikAppUi::HandleSystemEventL().
  416.36 +
  416.37 +@publishedAll
  416.38 +@released
  416.39 +@see TApaTask::SendSystemEvent()
  416.40 +@see CEikAppUi
  416.41 +@see CCoeAppUi::HandleSystemEventL() */
  416.42 +enum TApaSystemEvent
  416.43 +	{
  416.44 +	/** The task is being closed. */
  416.45 +	EApaSystemEventShutdown=1,
  416.46 +	/** Reserved for future use. */
  416.47 +	EApaSystemEventBackupStarting,
  416.48 +	/** Reserved for future use. */
  416.49 +	EApaSystemEventBackupComplete,
  416.50 +	/** The task is being brought to the foreground. */
  416.51 +	EApaSystemEventBroughtToForeground,
  416.52 +	/** Close any tasks including system tasks. 
  416.53 +	Events in the range @c KApaSystemEventsWithPowerMgmtCapabilityStart to 
  416.54 +	@c KApaSystemEventsWithPowerMgmtCapabilityEnd requires capability PowerMgmt*/
  416.55 +	EApaSystemEventSecureShutdown = KApaSystemEventsWithPowerMgmtCapabilityStart
  416.56 +	};
  416.57 +
  416.58 +#ifdef _UNICODE
  416.59 +/**
  416.60 +@publishedAll
  416.61 +@released
  416.62 +*/
  416.63 +#define KUidApaMessageSwitchOpenFile KUidApaMessageSwitchOpenFile16
  416.64 +
  416.65 +/**
  416.66 +@publishedAll
  416.67 +@released
  416.68 +*/
  416.69 +#define KUidApaMessageSwitchCreateFile KUidApaMessageSwitchCreateFile16
  416.70 +
  416.71 +/**
  416.72 +@publishedAll
  416.73 +@released
  416.74 +*/
  416.75 +#define KUidApaMessageSwitchOpenFileValue KUidApaMessageSwitchOpenFileValue16
  416.76 +
  416.77 +/**
  416.78 +@publishedAll
  416.79 +@released
  416.80 +*/
  416.81 +#define KUidApaMessageSwitchCreateFileValue KUidApaMessageSwitchCreateFileValue16
  416.82 +#else
  416.83 +#define KUidApaMessageSwitchOpenFile KUidApaMessageSwitchOpenFile8
  416.84 +#define KUidApaMessageSwitchCreateFile KUidApaMessageSwitchCreateFile8
  416.85 +#define KUidApaMessageSwitchOpenFileValue KUidApaMessageSwitchOpenFileValue8
  416.86 +#define KUidApaMessageSwitchCreateFileValue KUidApaMessageSwitchCreateFileValue8
  416.87 +#endif
  416.88 +
  416.89 +/**
  416.90 +@internalComponent
  416.91 +*/
  416.92 +const TInt KUidApaMessageSwitchOpenFileValue16=0x10003A39;
  416.93 +
  416.94 +/**
  416.95 +@internalComponent
  416.96 +*/
  416.97 +const TUid KUidApaMessageSwitchOpenFile16={KUidApaMessageSwitchOpenFileValue16};
  416.98 +
  416.99 +/**
 416.100 +@internalComponent
 416.101 +*/
 416.102 +const TInt KUidApaMessageSwitchCreateFileValue16=0x10003A3A;
 416.103 +
 416.104 +/**
 416.105 +@internalComponent
 416.106 +*/
 416.107 +const TUid KUidApaMessageSwitchCreateFile16={KUidApaMessageSwitchCreateFileValue16};
 416.108 +
 416.109 +class TApaTask
 416.110 +/** Application task.
 416.111 +
 416.112 +A task is a running application. At any one time, for any given application, 
 416.113 +there may be zero, one, or more tasks running on a device.
 416.114 +
 416.115 +A task is identified by its association with the running application's window 
 416.116 +group.
 416.117 +
 416.118 +An instance of the TApaTaskList class is used to find and access specific 
 416.119 +tasks.
 416.120 +
 416.121 +@publishedAll
 416.122 +@released
 416.123 +@see TApaTaskList
 416.124 +@see RWindowGroup
 416.125 +@see RWsSession */
 416.126 +	{
 416.127 +public:
 416.128 +
 416.129 +	IMPORT_C TApaTask(RWsSession& aWsSession);
 416.130 +	IMPORT_C void SetWgId(TInt aWgId);
 416.131 +	IMPORT_C TInt WgId() const;
 416.132 +	IMPORT_C TBool Exists() const;
 416.133 +	IMPORT_C TThreadId ThreadId() const;
 416.134 +	IMPORT_C void BringToForeground();
 416.135 +	IMPORT_C void SendToBackground();
 416.136 +	IMPORT_C void EndTask();
 416.137 +	IMPORT_C void KillTask();
 416.138 +	IMPORT_C void SendKey(TInt aKeyCode,TInt aModifiers);
 416.139 +	IMPORT_C void SendKey(const TKeyEvent& aKey);
 416.140 +	IMPORT_C void SendSystemEvent(TApaSystemEvent aEvent);
 416.141 +	IMPORT_C TInt SwitchOpenFile(const TDesC& aFilename);
 416.142 +	IMPORT_C TInt SwitchCreateFile(const TDesC& aFilename);
 416.143 +	IMPORT_C TInt SendMessage(TUid aUid, const TDesC8& aParams);
 416.144 +
 416.145 +private:
 416.146 +	TInt CheckSwitchFile() const;
 416.147 +	void SendSystemEvent(TApaSystemEvent aEvent, TEventCode aType);
 416.148 +private:
 416.149 +	RWsSession& iWsSession;
 416.150 +	TInt iWgId;
 416.151 +	TInt iTApaTask_Reserved1;
 416.152 +	};
 416.153 +
 416.154 +class TApaTaskList
 416.155 +/** Accesses tasks running on a device.
 416.156 +
 416.157 +Tasks can be identified by document, application specific UID or by caption 
 416.158 +name.
 416.159 +
 416.160 +Users of this class can also cycle through a set of tasks running a specific 
 416.161 +application, bringing each one, in turn, into the foreground.
 416.162 +
 416.163 +@publishedAll
 416.164 +@released
 416.165 +@see TApaTask */
 416.166 +	{
 416.167 +public:	
 416.168 +	/** Defines the direction in which tasks are cycled to the foreground. This is used 
 416.169 +	by the CycleTasks() function.
 416.170 +
 416.171 +	@see TApaTaskList::CycleTasks() */
 416.172 +	enum TCycleDirection
 416.173 +		{
 416.174 +		/** Cycles the task list forwards, i.e. the foreground task is moved to background, 
 416.175 +		bringing the next foremost task to the foreground. */
 416.176 +		EForwards,
 416.177 +		/** Cycles the list backwards, i.e. the task furthest from the foreground is brought 
 416.178 +		to the foreground, pushing what was the foremost task to the next ordinal 
 416.179 +		position. */
 416.180 +		EBackwards
 416.181 +		};
 416.182 +public:
 416.183 +	IMPORT_C TApaTaskList(RWsSession& aWsSession);
 416.184 +	IMPORT_C TApaTask FindApp(const TDesC& aAppName);
 416.185 +	IMPORT_C TApaTask FindDoc(const TDesC& aDocName);
 416.186 +	IMPORT_C TApaTask FindByPos(TInt aPos);
 416.187 +	IMPORT_C TApaTask FindApp(TUid aAppUid);
 416.188 +	IMPORT_C TInt CycleTasks(TUid aAppUid,TCycleDirection aDirection=EForwards);
 416.189 +
 416.190 +private:
 416.191 +	void FindByPosL(TApaTask& aTask,TInt aPos);
 416.192 +private:
 416.193 +	RWsSession& iWsSession;
 416.194 +	TInt iTApaTaskList_Reserved1;
 416.195 +	};
 416.196 +
 416.197 +
 416.198 +#endif
   417.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   417.2 +++ b/epoc32/include/mw/apgwgnam.h	Wed Mar 31 12:27:01 2010 +0100
   417.3 @@ -0,0 +1,106 @@
   417.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   417.5 +// All rights reserved.
   417.6 +// This component and the accompanying materials are made available
   417.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   417.8 +// which accompanies this distribution, and is available
   417.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  417.10 +//
  417.11 +// Initial Contributors:
  417.12 +// Nokia Corporation - initial contribution.
  417.13 +//
  417.14 +// Contributors:
  417.15 +//
  417.16 +// Description:
  417.17 +//
  417.18 +
  417.19 +#if !defined(__APGWGNAM_H__)
  417.20 +#define __APGWGNAM_H__
  417.21 +
  417.22 +#if !defined(__W32STD_H__)
  417.23 +#include <w32std.h>
  417.24 +#endif
  417.25 +
  417.26 +class CApaWindowGroupName : public CBase
  417.27 +/** Gives access to the name of a window group and the information encoded by that 
  417.28 +name.
  417.29 +
  417.30 +A window group is associated with a task, i.e. a running application. The 
  417.31 +window group's name encodes four pieces of information for that task:
  417.32 +
  417.33 +the name of the document that the task is handling,
  417.34 +
  417.35 +the task's caption,
  417.36 +
  417.37 +the application specific UID, as eight hexadecimal characters,
  417.38 +
  417.39 +status information for the task, as two hexadecimal characters.
  417.40 +
  417.41 +@publishedAll
  417.42 +@released */
  417.43 +	{
  417.44 +public:
  417.45 +	enum { EMaxLength=13+2*KMaxFileName };
  417.46 +public:
  417.47 +	IMPORT_C ~CApaWindowGroupName();
  417.48 +	IMPORT_C static CApaWindowGroupName* NewL(const RWsSession& aWsSession);
  417.49 +	IMPORT_C static CApaWindowGroupName* NewLC(const RWsSession& aWsSession);
  417.50 +	IMPORT_C static CApaWindowGroupName* NewL(const RWsSession& aWsSession, TInt aWgId);
  417.51 +	IMPORT_C static CApaWindowGroupName* NewLC(const RWsSession& aWsSession, TInt aWgId);
  417.52 +	IMPORT_C static CApaWindowGroupName* New(const RWsSession& aWsSession, HBufC* aWgName);
  417.53 +	IMPORT_C static CApaWindowGroupName* NewL(const RWsSession& aWsSession, const TDesC& aWgName);
  417.54 +	IMPORT_C static CApaWindowGroupName* NewLC(const RWsSession& aWsSession, const TDesC& aWgName);
  417.55 +	IMPORT_C void ConstructFromWgIdL(TInt aWgId);
  417.56 +	//
  417.57 +	IMPORT_C void SetWindowGroupNameL(const TDesC& aWgName);
  417.58 +	IMPORT_C void SetWindowGroupName(HBufC* aWgName);
  417.59 +	//
  417.60 +	IMPORT_C static void FindByAppUid(TUid aAppUid, RWsSession& aWsSession, TInt& aPrevWgId);
  417.61 +	IMPORT_C static void FindByCaption(const TDesC& aCaption, RWsSession& aWsSession, TInt& aPrevWgId);
  417.62 +	IMPORT_C static void FindByDocName(const TDesC& aDocName, RWsSession& aWsSession, TInt& aPrevWgId);
  417.63 +	//
  417.64 +	IMPORT_C void SetBusy(TBool aBusy);
  417.65 +	IMPORT_C TBool IsBusy() const;
  417.66 +	IMPORT_C void SetSystem(TBool aSystem);
  417.67 +	IMPORT_C TBool IsSystem() const;
  417.68 +	IMPORT_C void SetDocNameIsAFile(TBool aDocNameIsAFile);
  417.69 +	IMPORT_C TBool DocNameIsAFile() const;
  417.70 +	IMPORT_C void SetRespondsToShutdownEvent(TBool aRespondsToShutdownEvent);
  417.71 +	IMPORT_C TBool RespondsToShutdownEvent() const;
  417.72 +	IMPORT_C void SetRespondsToSwitchFilesEvent(TBool aRespondsToSwitchFilesEvent);
  417.73 +	IMPORT_C TBool RespondsToSwitchFilesEvent() const;
  417.74 +	IMPORT_C void SetHidden(TBool aIsHidden);
  417.75 +	IMPORT_C TBool Hidden() const;
  417.76 +	IMPORT_C void SetAppReady(TBool aIsReady);
  417.77 +	IMPORT_C TBool IsAppReady() const;
  417.78 +	//
  417.79 +	IMPORT_C void SetAppUid(TUid aAppUid);
  417.80 +	IMPORT_C TUid AppUid() const;
  417.81 +	//
  417.82 +	IMPORT_C void SetCaptionL(const TDesC& aCaption);
  417.83 +	IMPORT_C TPtrC Caption() const;
  417.84 +	//
  417.85 +	IMPORT_C void SetDocNameL(const TDesC& aDocName);
  417.86 +	IMPORT_C TPtrC DocName() const;
  417.87 +	//
  417.88 +	IMPORT_C TInt SetWindowGroupName(RWindowGroup& aGroupWin) const;
  417.89 +	IMPORT_C TPtrC WindowGroupName() const;
  417.90 +private: //enums
  417.91 +	enum TApaStatus { ESystem =0x01, EBusy =0x02, EDocNameNotAFile =0x04
  417.92 +					 ,EDoesNotRespondToShutdownEvent=0x08, EDoesNotRespondToSwitchFilesEvent=0x10
  417.93 +					 ,EIsHidden=0x20, EAppReady=0x40 };
  417.94 +	enum TApaDelimiter { EEndStatus=1, EEndUid, EEndCaption, ELast=EEndCaption }; // ELast must be last and same as predecessor
  417.95 +private:
  417.96 +	CApaWindowGroupName(const RWsSession& aWsSession);
  417.97 +	//
  417.98 +	void DefaultConstructL();
  417.99 +	void WriteStatusToName();
 417.100 +	void GetStatusFromName();
 417.101 +	TInt FindDelimiter(TApaDelimiter aDelim) const;
 417.102 +	void ReAllocIfNecessaryL(TInt aExtraLengthReqd);
 417.103 +private:
 417.104 +	HBufC* iBuf;
 417.105 +	TUint iStatus;
 417.106 +	const RWsSession& iWsSession;
 417.107 +	};
 417.108 +
 417.109 +#endif
   418.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   418.2 +++ b/epoc32/include/mw/apparc.h	Wed Mar 31 12:27:01 2010 +0100
   418.3 @@ -0,0 +1,608 @@
   418.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   418.5 +// All rights reserved.
   418.6 +// This component and the accompanying materials are made available
   418.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   418.8 +// which accompanies this distribution, and is available
   418.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  418.10 +//
  418.11 +// Initial Contributors:
  418.12 +// Nokia Corporation - initial contribution.
  418.13 +//
  418.14 +// Contributors:
  418.15 +//
  418.16 +// Description:
  418.17 +//
  418.18 +
  418.19 +#ifndef __APPARC_H__
  418.20 +#define __APPARC_H__
  418.21 +
  418.22 +#if !defined(__E32STD_H__)
  418.23 +#include <e32std.h>
  418.24 +#endif
  418.25 +#if !defined(__E32BASE_H__)
  418.26 +#include <e32base.h>
  418.27 +#endif
  418.28 +#if !defined(__F32FILE_H__)
  418.29 +#include <f32file.h>
  418.30 +#endif
  418.31 +#if !defined(__GDI_H__)
  418.32 +#include <gdi.h>
  418.33 +#endif
  418.34 +#if !defined(__APADEF_H__)
  418.35 +#include <apadef.h>
  418.36 +#endif
  418.37 +#if !defined(__APAID_H__)
  418.38 +#include <apaid.h>
  418.39 +#endif
  418.40 +
  418.41 +// classes defined:
  418.42 +class CApaApplication;
  418.43 +class CApaDocument;
  418.44 +class CApaProcess;
  418.45 +class MApaEmbeddedDocObserver;
  418.46 +//
  418.47 +// classes referenced:
  418.48 +class CApaDll;
  418.49 +class CApaExe;
  418.50 +class RFile;
  418.51 +class RReadStream;
  418.52 +class RWriteStream;
  418.53 +class CFileStore;
  418.54 +class CPersistentStore;
  418.55 +class CStreamDictionary;
  418.56 +class CDictionaryStore;
  418.57 +class TApaAppHolderInfo;
  418.58 +class CImplementationInformation;
  418.59 +class TApaApplicationFactory;
  418.60 +class CApaAppHolder;
  418.61 +class CApaAppServer;
  418.62 +
  418.63 +/** Creates an application interface object.
  418.64 +
  418.65 +Provides the basic roles of an application class as a factory that
  418.66 +creates concrete document objects, and supplies utility functions 
  418.67 +not specific to any particular instance of a document.
  418.68 +
  418.69 +@publishedAll
  418.70 +@released
  418.71 +*/
  418.72 +typedef CApaApplication* (*CreateCApaApplication)();
  418.73 +
  418.74 +
  418.75 +// CApaApplication
  418.76 +
  418.77 +class CApaApplication : public CBase
  418.78 +// base class for applications; allows creation of documents & file stores + display of app icon and name.
  418.79 +/** Defines the basic behaviour for applications.
  418.80 +
  418.81 +The class defines the basic twin roles of an application class as a factory 
  418.82 +that creates concrete document objects, and as a supplier of utility functions 
  418.83 +not specific to any particular instance of a document. For example, returning 
  418.84 +an application's caption, or accessing its .ini file.
  418.85 +
  418.86 +The class is derived from by the UI framework and is further derived from 
  418.87 +by the UI application.
  418.88 +
  418.89 +@publishedAll 
  418.90 +@released 
  418.91 +@see CEikApplication */
  418.92 +	{
  418.93 +public:
  418.94 +	/** Completes construction of this application object.
  418.95 +	
  418.96 +	The function is called after an instance of a derived class has been successfully 
  418.97 +	created using the ordinal 1 function of the application DLL.
  418.98 +	
  418.99 +	After calling this function, an application can create document objects.
 418.100 +	
 418.101 +	An implementation of this function is supplied by the UI framework.
 418.102 +	
 418.103 +	@see CEikApplication */
 418.104 +	virtual void PreDocConstructL()=0; // call once before creating document
 418.105 +	
 418.106 +	/** Creates a document object.
 418.107 +	
 418.108 +	The function is called by the application process when a new document is required. 
 418.109 +	The application process adds the new document to its list of documents.
 418.110 +	
 418.111 +	An implementation of this function is supplied by the UI framework.
 418.112 +	
 418.113 +	@param aProcess A pointer to the process associated with the application.
 418.114 +	@return A pointer to the newly created document.
 418.115 +	@see CApaProcess::AddNewDocumentL() */
 418.116 +	virtual CApaDocument* CreateDocumentL(CApaProcess* aProcess)=0;
 418.117 +	
 418.118 +	/** Gets the application specific UID.
 418.119 +	
 418.120 +	The UID is used to differentiate between UI applications.
 418.121 +	
 418.122 +	An implementation of this function must be supplied by the UI application.
 418.123 +	
 418.124 +	@return The application specific UID. */
 418.125 +	virtual TUid AppDllUid()const=0;
 418.126 +	
 418.127 +	//
 418.128 +	// utility functions
 418.129 +	IMPORT_C static TInt GenerateFileName(RFs& aFs,TFileName& aRootName);
 418.130 +	IMPORT_C CDictionaryStore* OpenIniFileL(RFs& aFs)const;
 418.131 +	
 418.132 +	/** Opens the .ini file associated with the application, constructs the dictionary 
 418.133 +	store object, returns a pointer to it and puts the pointer onto the cleanupstack.
 418.134 +	
 418.135 +	The .ini file must be created, if it does not already exist.
 418.136 +	
 418.137 +	An implementation of this function is supplied by the UI framework.
 418.138 +	
 418.139 +	@param aFs Handle to a file server session 
 418.140 +	@return A pointer to the dictionary store object that represents the application's 
 418.141 +	.ini file. 
 418.142 +	@see CEikApplication */
 418.143 +	virtual CDictionaryStore* OpenIniFileLC(RFs& aFs)const=0;
 418.144 +	//
 418.145 +	// enquiry functions
 418.146 +	IMPORT_C virtual TFileName AppFullName()const; // returns the full path and name of the app
 418.147 +	/** Returns the capabilities of the application.
 418.148 +	
 418.149 +	Application capability information is represented by an instance of a TApaAppCapability 
 418.150 +	object wrapped in a packaged modifiable buffer descriptor.
 418.151 +	
 418.152 +	The function is called from a number of places within the application framework.
 418.153 +	
 418.154 +	An implementation of this function is supplied by the UI framework.
 418.155 +	
 418.156 +	@param aInfo A packaged modifiable buffer descriptor (a TPckgBuf), encapsulating 
 418.157 +	a TApaAppCapability object. 
 418.158 +	@see CEikApplication
 418.159 +	@see TApaAppCapability
 418.160 +	@see TPckgBuf */
 418.161 +	virtual void Capability(TDes8& aInfo)const=0;
 418.162 +	//
 418.163 +	// accessor function
 418.164 +	IMPORT_C TFileName DllName()const;
 418.165 +	
 418.166 +	IMPORT_C ~CApaApplication();
 418.167 +
 418.168 +	// formerly a reserved virtual, Reserved_1()
 418.169 +	IMPORT_C virtual void NewAppServerL(CApaAppServer*& aAppServer);
 418.170 +protected:
 418.171 +	IMPORT_C CApaApplication();
 418.172 +	
 418.173 +	IMPORT_C virtual void CApaApplication_Reserved1();
 418.174 +	IMPORT_C virtual void CApaApplication_Reserved2();
 418.175 +
 418.176 +private:
 418.177 +	CApaAppHolder* iAppHolder;  // the CApaAppHolder that owns me
 418.178 +	TUid iDtorKey;	//	TInt iSpare;
 418.179 +	friend class CApaAppHolder;
 418.180 +	friend class CApaProcess;
 418.181 +	friend class TApaApplicationFactory; // so that it can access iDtorKey
 418.182 +	
 418.183 +private:
 418.184 +	TInt iCApaApplication_Reserved1;
 418.185 +	};
 418.186 +
 418.187 +class CApaDocument : public CBase
 418.188 +// base class for documents; allows insertion of glass doors.
 418.189 +/** Defines basic behaviour for documents.
 418.190 +
 418.191 +This is the base class for all documents. A document contains the data associated 
 418.192 +with the application's content.
 418.193 +
 418.194 +The class is derived from by the UI framework and is further derived from 
 418.195 +by the UI application.
 418.196 +
 418.197 +@publishedAll 
 418.198 +@released
 418.199 +@see CEikDocument */
 418.200 +	{
 418.201 +public:
 418.202 +	class TCapability
 418.203 +	/** CApaDocument capabilities.*/
 418.204 +		{
 418.205 +	public:
 418.206 +		IMPORT_C TCapability();
 418.207 +		//
 418.208 +		inline TBool CanDrawGlass()const;
 418.209 +		inline TBool CanPrint()const;
 418.210 +		inline void SetCanDrawGlass();
 418.211 +		inline void SetCanPrint();
 418.212 +		//
 418.213 +	private:
 418.214 +		enum {
 418.215 +			ECanDrawGlass	=0x01,
 418.216 +			ECanPrint		=0x02
 418.217 +			};
 418.218 +	private:
 418.219 +		TUint iCapability;
 418.220 +		TInt TCapability_Reserved1;
 418.221 +		};
 418.222 +	//
 418.223 +public:
 418.224 +	// document instantiation functions
 418.225 +	/** Initialises a new, empty, document with a default setup.
 418.226 +	
 418.227 +	This can be the main document or an embedded document. The function is called 
 418.228 +	by the UI framework when it creates a default document file.
 418.229 +	
 418.230 +	An implementation of this function must be supplied by the UI application.
 418.231 +	
 418.232 +	If initialisation fails, the document must be left in the same state as it 
 418.233 +	was before the function was called. */
 418.234 +	virtual void NewDocumentL()=0; // builds a new embedded or main document without loading from a store (may create the content from eg code or a template file).
 418.235 +	
 418.236 +	/** Creates and fully initialises a new filestore and stores the document into it, 
 418.237 +	replacing any existing file of the same name.
 418.238 +	
 418.239 +	The function should put the pointer to the filestore object onto the cleanup 
 418.240 +	stack.
 418.241 +	
 418.242 +	An implementation of this function is supplied by the UI framework.
 418.243 +	
 418.244 +	@param aFs Handle to a file server session. 
 418.245 +	@param aFileName The full path name of the file to be created. 
 418.246 +	@return A pointer to the newly constructed file store. 
 418.247 +	@see CEikDocument */
 418.248 +	virtual CFileStore* CreateFileStoreLC(RFs& aFs,const TDesC& aFileName)=0; // creates a file for a document and stores itself to that store (store should be put on cleanup stack).
 418.249 +	//
 418.250 +	// interaction functions
 418.251 +	IMPORT_C virtual CPicture* GlassPictureL(); // Does nothing by default, override to return handle to glass picture.
 418.252 +	
 418.253 +	/** Starts an editing session on an embedded document.
 418.254 +	
 418.255 +	The function should cause the application's UI to be created and the document 
 418.256 +	to be fully restored for editing.
 418.257 +	
 418.258 +	An implementation of this function is supplied by the UI framework.
 418.259 +	
 418.260 +	@param aContainer This document's observer.
 418.261 +	@param aReadOnly True, the document should be opened in read-only mode and 
 418.262 +	should not persist any changes made to the content. False, the document can 
 418.263 +	be opened in read/write mode; this is the default. 
 418.264 +	@see CEikDocument */
 418.265 +	virtual void EditL(MApaEmbeddedDocObserver* aContainer,TBool aReadOnly=EFalse)=0; // Edit the document in the context of the container's environment. If aContainer is null, edit as the main document
 418.266 +	
 418.267 +	/** Prints the document without a need for it to be open for editing.
 418.268 +	
 418.269 +	Typically, this is called from a shell or a file manager type application 
 418.270 +	that wants to print the document without opening it fully.
 418.271 +	
 418.272 +	An empty implementation of this function is supplied by the UI framework.
 418.273 +	
 418.274 +	The UI application can provide its own implementation.
 418.275 +	
 418.276 +	@param aSourceStore A reference to the store containing the document. 
 418.277 +	@see CEikDocument */
 418.278 +	virtual void PrintL(const CStreamStore& aSourceStore)=0; // default print parameters, assume print context supplied by environment
 418.279 +	//
 418.280 +	// persistence functions
 418.281 +
 418.282 +	/** Stores the document to the current file, commits the changes, and marks the 
 418.283 +	document status as unchanged.
 418.284 +	
 418.285 +	Typically, the function is called by the application when it implements a 
 418.286 +	"Save" type menu option in its User Interface.
 418.287 +	
 418.288 +	An implementation of this function is supplied by the UI framework. This is 
 418.289 +	adequate for direct file store applications. Applications using a permanent 
 418.290 +	file store model, need to provide their own implementation.
 418.291 +	
 418.292 +	If the function leaves, an implementation should ensure that any changes made 
 418.293 +	to the file are rolled back, leaving the file in the state it was in before 
 418.294 +	the function was called.
 418.295 +	
 418.296 +	@see CEikDocument */
 418.297 +	virtual void SaveL()=0; // save the doc to the file in the custody of iAppProcess. This fn should be called by any "Save" menu option. store->Commit() should be called within it.	
 418.298 +	/** Stores the document's content and state to the specified store, recording the 
 418.299 +	identity of any headstreams created in the specified stream dictionary.
 418.300 +	
 418.301 +	The store must be fully constructed before this function is called.
 418.302 +	
 418.303 +	An empty implementation of this function is supplied by the UI framework. 
 418.304 +	UI applications that need to persist any data must provide their own implementation.
 418.305 +	
 418.306 +	If the function leaves, an implementation should ensure that the store and 
 418.307 +	the stream dictionary are returned to the state they were in before the function 
 418.308 +	was called.
 418.309 +	
 418.310 +	@param aStore The store into which document data is to be stored. 
 418.311 +	@param aStreamDic The stream dictionary into which stream IDs and associated 
 418.312 +	UIDs are to be recorded. 
 418.313 +	@see CEikDocument */
 418.314 +	virtual void StoreL(CStreamStore& aStore,CStreamDictionary& aStreamDic) const=0; // store to aStore, lodging the headstream in aStreamDic
 418.315 +	
 418.316 +	/** Restores the document's content and state from data persisted in the specified 
 418.317 +	store.
 418.318 +	
 418.319 +	An empty implementation of this function is supplied by the UI framework. 
 418.320 +	UI applications that need to restore data must provide their own implementation.
 418.321 +	
 418.322 +	If the function leaves, an implementation should ensure that the store and 
 418.323 +	the stream dictionary are returned to the state they were in before the function 
 418.324 +	was called.
 418.325 +	
 418.326 +	@param aStore The store from which document data is to be restored. 
 418.327 +	@param aStreamDic The stream dictionary containing stream IDs and associated 
 418.328 +	UIDs. 
 418.329 +	@see CEikDocument */
 418.330 +	virtual void RestoreL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic)=0; // restore from aStore using aStreamDic
 418.331 +	
 418.332 +	/** Restores the document to the extent that it does not need the store
 418.333 +	further.
 418.334 +
 418.335 +	A document only keeps a pointer to a store if it implements deferred
 418.336 +	loading. This also tells the document that any store pointer that it
 418.337 +	might have is just about to become invalid.
 418.338 +	
 418.339 +	An empty implementation of this function is supplied by the UI framework. 
 418.340 +	UI applications that support deferred loading or embedding should provide an
 418.341 +	implementation.
 418.342 +	
 418.343 +	If a document supports embedding, then it should
 418.344 +	propagate the DetachFromStoreL() call on to all embedded objects that
 418.345 +	it contains.
 418.346 +	
 418.347 +	If the function leaves, the operation should be aborted
 418.348 +	because the document has not successfully detached from the store.
 418.349 +	Continuing with the operation may leave the document in an unsafe
 418.350 +	state or cause user data to be lost.
 418.351 +
 418.352 +	@param aDegree The degree of detachment required. */
 418.353 +	virtual void DetachFromStoreL(CPicture::TDetach /*aDegree*/=CPicture::EDetachFull) {} // supply an implementation if you support deferred loading or embedding
 418.354 +
 418.355 +	IMPORT_C virtual void ExternalizeL(RWriteStream& aStream)const;
 418.356 +	//
 418.357 +	// enquiry functions
 418.358 +	
 418.359 +	/** Tests whether the document is empty.
 418.360 +	
 418.361 +	The UI framework provides a default implementation which always returns a 
 418.362 +	true value.
 418.363 +	
 418.364 +	The UI application can provide its own implementation. Typically, any application 
 418.365 +	that has editable content should supply an implementation that acts according 
 418.366 +	to the state of that content. Applications without associated document data 
 418.367 +	need not supply an implementation.
 418.368 +	
 418.369 +	@return True if the document is empty, false otherwise. 
 418.370 +	@see CEikDocument */
 418.371 +	virtual TBool IsEmpty()const=0; // return ETrue if the document is empty
 418.372 +	IMPORT_C virtual void ValidatePasswordL()const; // return EFalse if there *is* a password *and* the user doesn't get it right, ETrue otherwise (ie they get it right or there isn't one). Returns ETrue by default
 418.373 +	
 418.374 +	IMPORT_C virtual TCapability Capability()const; // returns "cant do anything" by default
 418.375 +	inline CApaApplication* Application()const;
 418.376 +	inline CApaProcess* Process()const;
 418.377 +	
 418.378 +	/** Tests whether the document has changed since it was last persisted.
 418.379 +	
 418.380 +	An implementation of this function is supplied by the UI framework and need 
 418.381 +	not be changed by the UI application.
 418.382 +	
 418.383 +	@return True, if the document has changed since the last time that it was 
 418.384 +	persisted, false, otherwise.
 418.385 +	@see CEikDocument */
 418.386 +	virtual TBool HasChanged()const =0;
 418.387 +	//
 418.388 +	IMPORT_C virtual ~CApaDocument();
 418.389 +protected:
 418.390 +	IMPORT_C CApaDocument();
 418.391 +	IMPORT_C CApaDocument(CApaApplication& aApp,CApaProcess& aProcess);
 418.392 +private:
 418.393 +	IMPORT_C virtual void OpenFileL(CFileStore*& aFileStore, RFile& aFile); // was previously Reserved_1
 418.394 +	// Reserved virtual functions...
 418.395 +	IMPORT_C virtual void Reserved_2();
 418.396 +protected:
 418.397 +	MApaEmbeddedDocObserver* iContainer; // null unless this is an embedded object currently being edited
 418.398 +private:
 418.399 +	CApaApplication* iApplication; // the doc's associated application
 418.400 +	CApaProcess* iApaProcess;
 418.401 +	TInt iSpare;
 418.402 +	};
 418.403 +
 418.404 +
 418.405 +
 418.406 +class TApaApplicationFactory
 418.407 +/** Encapsulates the functionality of creating an application, whether it be via a factory function
 418.408 +or an ECOM plugin. Instances of this class can usually be created implicitly when required as
 418.409 +function parameters - just specify the function pointer, ECOM plugin UID or CImplementationInformation
 418.410 +reference.
 418.411 +
 418.412 +@publishedAll
 418.413 +@released
 418.414 +@see CApaProcess
 418.415 +@see EikStart */
 418.416 +	{
 418.417 +public:
 418.418 +	typedef CApaApplication* (*TFunction)();
 418.419 +public:
 418.420 +	IMPORT_C TApaApplicationFactory();
 418.421 +	IMPORT_C TApaApplicationFactory(TFunction aFunction);
 418.422 +	IMPORT_C TApaApplicationFactory(const CImplementationInformation& aEmbeddedApplicationInformation);
 418.423 +	IMPORT_C TApaApplicationFactory(TUid aEmbeddedApplicationUid);
 418.424 +	CApaApplication* CreateApplicationL() const;
 418.425 +	HBufC* AppFileNameL() const;
 418.426 +	TUid AppFileUid() const;
 418.427 +private:
 418.428 +	enum TType
 418.429 +		{
 418.430 +		ETypeFunction,							// if iType is this, iData is a TFunction
 418.431 +		ETypeEmbeddedApplicationInformation,	// if iType is this, iData is an ECOM CImplementationInformation
 418.432 +		ETypeEmbeddedApplicationUid				// if iType is this, iData is an ECOM implementation TUid
 418.433 +		};
 418.434 +private:
 418.435 +	static CApaApplication* CreateEmbeddedApplicationL(TUid aUid);
 418.436 +	static HBufC* EmbeddedApplicationDisplayNameLC(TUid aUid);
 418.437 +	static HBufC* FullAppFileNameL(const TDesC& aAppName);
 418.438 +	static void CleanupImplementationArray(TAny* aImplementationArray);
 418.439 +private:
 418.440 +	TType iType;
 418.441 +	TUint iData;
 418.442 +	mutable CApaApplication* iApplication; // used to be iSpare1
 418.443 +	TInt iSpare2;
 418.444 +	};
 418.445 +
 418.446 +class CApaParentProcessMonitor;
 418.447 +
 418.448 +class CApaProcess : public CBase
 418.449 +/** Maintains a list of documents and all of the potentially shared resources used 
 418.450 +by documents.
 418.451 +
 418.452 +This includes the application DLLs. The class also supplies utility functions 
 418.453 +that provide the basic structure for persisted document files.
 418.454 +
 418.455 +The class deals with the loading of application DLLs and manages the creation 
 418.456 +and destruction of application (CApaApplication) objects and document (CApaDocument) 
 418.457 +objects.
 418.458 +
 418.459 +The class is derived from by the UI framework and further derivation by the 
 418.460 +UI application is not necessary unless it needs to add extra utility functions 
 418.461 +for the use of applications.
 418.462 +
 418.463 +@publishedAll
 418.464 +@released
 418.465 +@see CApaApplication
 418.466 +@see CApaDocument */
 418.467 +	{
 418.468 +public:
 418.469 +	IMPORT_C static CApaProcess* NewL(const RFs& aFs);
 418.470 +	IMPORT_C void ResetL();
 418.471 +	//
 418.472 +	// static utility functions
 418.473 +	IMPORT_C static CStreamDictionary* ReadRootStreamLC(RFs& aFs,CFileStore*& aStore,const TDesC& aDocFullFileName,TUint aFileMode); // opens aDocFileName as aStore and returns the stream dictionary contained in its root stream on the cleanup stack
 418.474 +	IMPORT_C static CStreamDictionary* ReadRootStreamLC(CFileStore*& aStore, const RFile& aFile);
 418.475 +	IMPORT_C static void WriteRootStreamL(CPersistentStore& aStore,CStreamDictionary& aStreamDic,const CApaApplication& aApp);
 418.476 +	IMPORT_C static void WriteRootStreamL(CPersistentStore& aStore,CStreamDictionary& aStreamDic,const TApaAppIdentifier& aAppId);
 418.477 +	IMPORT_C static TApaAppIdentifier ReadAppIdentifierL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic);
 418.478 +	IMPORT_C static void WriteAppIdentifierL(CStreamStore& aStore,CStreamDictionary& aStreamDic,const TApaAppIdentifier& aAppId);
 418.479 +	//
 418.480 +	// document management
 418.481 +	IMPORT_C CApaDocument* AddNewDocumentL(TApaApplicationFactory aApplicationFactory);
 418.482 +	IMPORT_C CApaDocument* OpenNewDocumentL(CFileStore*& aStore,CStreamDictionary*& aStreamDic,const TDesC& aDocFullFileName,TUint aFileMode); // Open a file and restore the contained document
 418.483 +	IMPORT_C void DestroyDocument(CApaDocument* aDoc); // Removes a doc (identified by the object) from the list and destroys it. Also removes the app and closes the AppDll if appropriate.
 418.484 +	//
 418.485 +	// setter functions
 418.486 +	IMPORT_C void SetMainDocument(CApaDocument* aDocument);
 418.487 +	IMPORT_C void SetMainDocFileName(const TDesC& aMainDocFileName); // panics if the descriptor is too long
 418.488 +	IMPORT_C void SetMainDocFileNameL(const TDesC& aMainDocFileName);
 418.489 +	//
 418.490 +	// accessor functions
 418.491 +	IMPORT_C TPtrC MainDocFileName()const;
 418.492 +	inline RFs& FsSession()const;
 418.493 +	inline CApaDocument* MainDocument()const;
 418.494 +	//
 418.495 +	IMPORT_C ~CApaProcess();
 418.496 +protected:
 418.497 +	IMPORT_C CApaProcess();
 418.498 +	IMPORT_C CApaProcess(const RFs& aFs);
 418.499 +	IMPORT_C void ConstructL();
 418.500 +	IMPORT_C void ConstructL(TProcessId aParentProcessId);
 418.501 +
 418.502 +	IMPORT_C virtual void CApaProcess_Reserved1();
 418.503 +	IMPORT_C virtual void CApaProcess_Reserved2();
 418.504 +public:
 418.505 +	static TInt IdleRemoveApplications(TAny* aThis);
 418.506 +	void RemoveMarkedApplications();
 418.507 +private:
 418.508 +	CApaDll* AddAppDllL(const TDesC& aDllFullPath);
 418.509 +	CApaExe* AddAppExeL(TApaApplicationFactory aApplicationFactory);
 418.510 +	void RemoveApp(CApaAppHolder* aAppHolder);
 418.511 +	CApaDocument* CreateDocL(CApaApplication* aApp);
 418.512 +	CApaAppHolder* FindAppInListL(const TDesC& aAppFileName,TUid aUid)const; // returns NULL if not in list
 418.513 +	void DeleteAllDocs();
 418.514 +	void MarkApplicationForRemoval(const CApaApplication* aApp);
 418.515 +	static void DoReadRootStreamL(CStreamDictionary& aStreamDictionary, const CFileStore& aStore);
 418.516 +private:
 418.517 +	CArrayFixFlat<TApaAppHolderInfo>* iAppList; // array of apps in use
 418.518 +	CArrayFixFlat<CApaDocument*>* iDocList; // array of documents (1 main + n embedded)
 418.519 +	CApaDocument* iMainDoc;
 418.520 +	HBufC* iMainDocFileName;
 418.521 +	RFs iFsSession; // file server session for doc store
 418.522 +	CIdle* iApplicationRemover;
 418.523 +	CApaParentProcessMonitor* iMonitor;
 418.524 +	TInt iCApaProcess_Reserved1;
 418.525 +	};
 418.526 +
 418.527 +
 418.528 +class MApaEmbeddedDocObserver
 418.529 +/** An interface class for handling the completion of the editing of an embedded 
 418.530 +document.
 418.531 +
 418.532 +@publishedAll 
 418.533 +@released
 418.534 +@see CApaDocument::EditL() */
 418.535 +	{
 418.536 +public:
 418.537 +	/** Defines the state of the embedded document on completion of editing. */
 418.538 +	enum TExitMode {
 418.539 +		/** Changes to the embedded document must be saved. */
 418.540 +		EKeepChanges,
 418.541 +		/** Reverts back to the saved version of the embedded document, i.e. reloads the 
 418.542 +		whole document. */
 418.543 +		ERevertToSaved,
 418.544 +		/** No changes have been made to the embedded document. */
 418.545 +		ENoChanges,
 418.546 +		/** The embedded document is empty. */
 418.547 +		EEmpty
 418.548 +		};
 418.549 +public:
 418.550 +	/** Implements the required behaviour when the editing of an embedded document completes.
 418.551 +	
 418.552 +	@param aMode Indicates the state of the document. */
 418.553 +	virtual void NotifyExit(TExitMode aMode)=0; // called on completion of editing of an embedded document
 418.554 +protected:
 418.555 +	IMPORT_C MApaEmbeddedDocObserver();
 418.556 +private:
 418.557 +	IMPORT_C virtual void MApaEmbeddedDocObserver_Reserved1();
 418.558 +	IMPORT_C virtual void MApaEmbeddedDocObserver_Reserved2();
 418.559 +private:
 418.560 +	TInt iMApaEmbeddedDocObserver_Reserved1;
 418.561 +	};
 418.562 +
 418.563 +
 418.564 +//// inlines ////
 418.565 +inline CApaApplication* CApaDocument::Application()const
 418.566 +/** Returns a pointer to the application that created the document.
 418.567 +
 418.568 +@return A pointer to the document's associated application. */
 418.569 +	{ return iApplication; }
 418.570 +
 418.571 +inline CApaProcess* CApaDocument::Process()const
 418.572 +/** Returns a pointer to the application process associated with this document.
 418.573 +
 418.574 +@return A pointer to the application process associated with this document. */
 418.575 +	{ return iApaProcess; }
 418.576 +
 418.577 +inline TBool CApaDocument::TCapability::CanDrawGlass()const
 418.578 +/** Tests whether the document supports being embedded as a glass door.
 418.579 +
 418.580 +@return True if embedding as a glass door is supported; false otherwise. */
 418.581 +	{ return iCapability&ECanDrawGlass; }
 418.582 +
 418.583 +inline TBool CApaDocument::TCapability::CanPrint()const
 418.584 +/** Tests whether the document supports being printed without using the full application 
 418.585 +UI.
 418.586 +
 418.587 +@return True, if printing is supported; false, otherwise. */
 418.588 +	{ return iCapability&ECanPrint; }
 418.589 +
 418.590 +inline void CApaDocument::TCapability::SetCanDrawGlass()
 418.591 +/** Sets the document as being capable of being embedded as a glass door. */
 418.592 +	{ iCapability = iCapability|ECanDrawGlass; }
 418.593 +
 418.594 +inline void CApaDocument::TCapability::SetCanPrint()
 418.595 +/** Sets the document as being capable of being printed without using the full application 
 418.596 +UI. */
 418.597 +	{ iCapability = iCapability|ECanPrint; }
 418.598 +
 418.599 +inline RFs& CApaProcess::FsSession()const
 418.600 +/** Returns a handle to the file server session used by this application process.
 418.601 +
 418.602 +@return The file server session. */
 418.603 +	{ return (RFs&)iFsSession; } //lint !e1536 Exposing low access member - Kept for backward BC
 418.604 +
 418.605 +inline CApaDocument* CApaProcess::MainDocument()const
 418.606 +/** Returns a pointer to the main document.
 418.607 +
 418.608 +@return A pointer to the main document. */
 418.609 +	{ return iMainDoc; }
 418.610 +	
 418.611 +#endif
   419.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   419.2 +++ b/epoc32/include/mw/asaltdefs.h	Wed Mar 31 12:27:01 2010 +0100
   419.3 @@ -0,0 +1,247 @@
   419.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   419.5 +// All rights reserved.
   419.6 +// This component and the accompanying materials are made available
   419.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   419.8 +// which accompanies this distribution, and is available
   419.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  419.10 +//
  419.11 +// Initial Contributors:
  419.12 +// Nokia Corporation - initial contribution.
  419.13 +//
  419.14 +// Contributors:
  419.15 +//
  419.16 +// Description:
  419.17 +//
  419.18 +
  419.19 +#ifndef __ASALTDEFS_H__
  419.20 +#define __ASALTDEFS_H__
  419.21 +
  419.22 +/** @file
  419.23 +@publishedAll
  419.24 +@released
  419.25 +*/
  419.26 +// System includes
  419.27 +#include <e32std.h>
  419.28 +#include <babitflags.h>
  419.29 +
  419.30 +/** 
  419.31 + Flags used to indicate the States for enum TASAltStateFlags
  419.32 + */
  419.33 +typedef TBitFlags TASAltClientServerStateFlags;
  419.34 +
  419.35 +/** 
  419.36 + Major Version used while connecting to the Alarm Alert Server
  419.37 + */
  419.38 +const TInt KASAltVersionMajor = 3;
  419.39 +
  419.40 +/** 
  419.41 + Minor Version used while connecting to the Alarm Alert Server
  419.42 + */
  419.43 +const TInt KASAltVersionMinor = 0;
  419.44 +
  419.45 +/** 
  419.46 + Build Version used while connecting to the Alarm Alert Server
  419.47 + */
  419.48 +const TInt KASAltVersionBuild = 0;
  419.49 +
  419.50 +/** 
  419.51 + Number of message Slots
  419.52 + */
  419.53 +const TInt KAlmMessageSlots	= 5;
  419.54 +
  419.55 +/** 
  419.56 + The individual op codes which the Alert Server and Alarm Server
  419.57 + handshake using
  419.58 + */
  419.59 +enum TASAltOpCode
  419.60 +    {
  419.61 +	/**
  419.62 +	 Notify the alarm server (asynchronously) when the Alert Server
  419.63 +	 wishes to perform some action.
  419.64 +	 */
  419.65 +    EASAltOpCodeNotify = 0,
  419.66 +
  419.67 +	/**
  419.68 +	 Cancel an earlier notification
  419.69 +	 */
  419.70 +    EASAltOpCodeNotifyCancel,
  419.71 +
  419.72 +	/**
  419.73 +	 Change the visibility of the Alert Server UI furniture
  419.74 +	 */
  419.75 +	EASAltOpCodeVisible,
  419.76 +
  419.77 +	/**
  419.78 +	 Update the Alert Server flags
  419.79 +	 */
  419.80 +    EASAltOpCodeSetState,
  419.81 +
  419.82 +	/**
  419.83 +	 Inform the Alert Server of the currently notifying alarm
  419.84 +	 */
  419.85 +    EASAltOpCodeSetAlarm,
  419.86 +
  419.87 +	/**
  419.88 +	 Inform the Alert Server that the currently alerting alarm
  419.89 +	 has been snoozed.
  419.90 +	 */
  419.91 +	EASAltOpCodeSetDeferTime,
  419.92 +
  419.93 +	/**
  419.94 +	 Retrieve the time from the Alert Server when a quiet period 
  419.95 +	 should be terminated
  419.96 +	 */
  419.97 +	EASAltOpCodeGetUserTime,
  419.98 +
  419.99 +	/**
 419.100 +	 Create an outstanding request with the Alert Server. Used
 419.101 +	 as a mechanism to obtain Alert Server thread death notifications.
 419.102 +	 */
 419.103 +	EASAltOpCodeLogon,
 419.104 +
 419.105 +	/**
 419.106 +	 Ask the Alert Server to start playing the specified alarm sound
 419.107 +	 */
 419.108 +	EASAltOpCodeStartPlayingSound,
 419.109 +
 419.110 +	/**
 419.111 +	 Ask the Alert Server to stop playing any sound
 419.112 +	 */
 419.113 +	EASAltOpCodeStopPlayingSound
 419.114 +
 419.115 +	/**
 419.116 +	Ask the  Alert Server to change vissibility for all alarms
 419.117 +	*/
 419.118 +	, EASAltOpCodeVisibleAll,
 419.119 +	
 419.120 +	/**
 419.121 +	Ask the  Alert Server to update states for all alarms
 419.122 +	*/
 419.123 +	EASAltOpCodeSetStateAll,
 419.124 +	
 419.125 +	/**
 419.126 +	Ask the  Alert Server to stop playing all sounds.
 419.127 +	*/
 419.128 +	EASAltOpCodeStopPlayingSoundAll,
 419.129 +	
 419.130 +	/**
 419.131 +	Ask the  Alert Server to delete alarm with provided Id
 419.132 +	*/
 419.133 +	EASAltOpCodeDeleteAlarm,
 419.134 +
 419.135 +	/**
 419.136 +	 Retrieve the time from the Alert Server when a quiet period 
 419.137 +	 should be terminated
 419.138 +	 */
 419.139 +
 419.140 +	EASAltOpCodeGetEndQuietTime,
 419.141 +
 419.142 +	/**
 419.143 +	Ask the Alarm Server to get number of simultaneously supported alarms
 419.144 +	*/
 419.145 +	EASAltOpCodeGetMaxAlarms,
 419.146 +	
 419.147 +	/**
 419.148 +	Ask the  Alert Server to delete all alarms
 419.149 +	*/
 419.150 +	EASAltOpCodeDeleteAlarmAll,
 419.151 +			
 419.152 +	EASAltOpCodeLast
 419.153 +	
 419.154 +	
 419.155 +    };
 419.156 +
 419.157 +/**
 419.158 + All communication from the Alert Server to the Alarm Server
 419.159 + occurs via a single outstanding TRequesStatus which is handled
 419.160 + by the Alarm Server (as an active object). This enumeration
 419.161 + describes the type of action that the Alarm Server should take in
 419.162 + response to a request from the Alert Server.
 419.163 + */
 419.164 +enum TASAltAlertServerResponse
 419.165 +	{
 419.166 +	/**
 419.167 +	 The Alert Server wishes the Alarm Server to
 419.168 +	 silence all alarms.
 419.169 +	 */
 419.170 +	EASAltAlertServerResponseSilence = 0,
 419.171 +
 419.172 +	/**
 419.173 +	 The Alert Server wishes the Alarm Server to
 419.174 +	 enter a global quiet period.
 419.175 +	 */
 419.176 +	EASAltAlertServerResponseQuietPeriod,
 419.177 +
 419.178 +	/**
 419.179 +	 The Alert Server wishes the Alarm Server to
 419.180 +	 acknowledge (clear) the currently notifying alarm.
 419.181 +	 */
 419.182 +	EASAltAlertServerResponseClear,
 419.183 +
 419.184 +	/**
 419.185 +	 The Alert Server wishes the Alarm Server to
 419.186 +	 acknowledge (clear) the currently notifying alarm
 419.187 +	 and all others that are awaiting notification.
 419.188 +	 */
 419.189 +	EASAltAlertServerResponseClearAll,
 419.190 +
 419.191 +	/**
 419.192 +	 The Alert Server wishes the Alarm Server to
 419.193 +	  snooze the currently notifying alarm.
 419.194 +	 */
 419.195 +	EASAltAlertServerResponseSnooze,
 419.196 +
 419.197 +	/**
 419.198 +	 The Alert Server wishes the Alarm Server to
 419.199 +	 temporarily pause all sound (i.e stop sending sound
 419.200 +	 play events to the Alert Server).
 419.201 +	 */
 419.202 +	EASAltAlertServerResponsePauseSound
 419.203 +	};
 419.204 +
 419.205 +/**
 419.206 + Flags for TASAltClientServerStateFlags
 419.207 + */
 419.208 +enum TASAltStateFlags
 419.209 +	{
 419.210 +	/**
 419.211 +	 The Alert Server should not play any sound
 419.212 +	 */
 419.213 +	EASAltStateFlagsSilentRunning = 1,
 419.214 +
 419.215 +	/**
 419.216 +	 The Alarm Server is currently within a quiet period
 419.217 +	 */
 419.218 +	EASAltStateFlagsInQuietPeriod = 2,
 419.219 +
 419.220 +	/**
 419.221 +	 The Alarm Server currently has more than one alarm
 419.222 +	 ready to notify.
 419.223 +	 */
 419.224 +	EASAltStateFlagsMoreThanOneDueAlarm	= 3,
 419.225 +
 419.226 +	/**
 419.227 +	 There wasn't sufficient memory within the Alarm
 419.228 +	 Server to allocate room for a snoozed alarm. I'm
 419.229 +	 note convinced we need this anymore
 419.230 +	 */
 419.231 +	EASAltStateFlagsNoMemoryForSnoozeAlarm = 4,
 419.232 +
 419.233 +	/**
 419.234 +	 There isn't any sound filename for the current
 419.235 +	 alarm.
 419.236 +	 */
 419.237 +	EASAltStateFlagsAlarmHasNoSoundFileName	= 5,
 419.238 +
 419.239 +	/**
 419.240 +	 This isn't used by the Alert Server.
 419.241 +	 */
 419.242 +	EASAltStateFlagsSoundIsPaused = 6
 419.243 +
 419.244 +	};
 419.245 +
 419.246 +// Literal constants
 419.247 +_LIT(KAlarmAlertServerName, "!AlarmAlertServer");
 419.248 +
 419.249 +
 419.250 +#endif
   420.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   420.2 +++ b/epoc32/include/mw/ascliclientutils.h	Wed Mar 31 12:27:01 2010 +0100
   420.3 @@ -0,0 +1,78 @@
   420.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   420.5 +// All rights reserved.
   420.6 +// This component and the accompanying materials are made available
   420.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   420.8 +// which accompanies this distribution, and is available
   420.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  420.10 +//
  420.11 +// Initial Contributors:
  420.12 +// Nokia Corporation - initial contribution.
  420.13 +//
  420.14 +// Contributors:
  420.15 +//
  420.16 +// Description:
  420.17 +//
  420.18 +
  420.19 +#ifndef __ASCLICLIENTUTILS_H__
  420.20 +#define __ASCLICLIENTUTILS_H__
  420.21 +
  420.22 +// System includes
  420.23 +#include <e32base.h>
  420.24 +
  420.25 +
  420.26 +///////////////////////////////////////////////////////////////////////////////////////
  420.27 +// ----> AlarmClientUtils (header)
  420.28 +///////////////////////////////////////////////////////////////////////////////////////
  420.29 +class AlarmClientUtils
  420.30 +/**
  420.31 +@publishedAll
  420.32 +@released
  420.33 +*/
  420.34 +	{
  420.35 +///////////////////////////////////////////////////////////////////////////////////////
  420.36 +public:										// ENUMERATIONS
  420.37 +///////////////////////////////////////////////////////////////////////////////////////
  420.38 +	/** Panic numbers associated with the ALMSRVCLI panic category. */
  420.39 +	enum TAlarmClientPanic
  420.40 +		{
  420.41 +		EAlarmClientPanicArgument			= 0,
  420.42 +		EAlarmClientPanicCancel				= 1,
  420.43 +		EAlarmClientPanicSessionClose		= 2,
  420.44 +		EAlarmClientPanicSetAlarm			= 3,
  420.45 +		EAlarmClientPanicGetAlarm			= 4,
  420.46 +		EAlarmClientPanicInvalidAlarmID		= 5,
  420.47 +		EAlarmClientPanicAlarmInfo			= 6,
  420.48 +		EAlarmClientPanicSound				= 7,
  420.49 +		EAlarmClientPanicOwner				= 8,
  420.50 +		EAlarmClientPanicVerify				= 9,
  420.51 +		EAlarmClientPanicAlarmDay			= 10,
  420.52 +		EAlarmClientPanicNumber				= 11,
  420.53 +		EAlarmClientPanicNoArray			= 12,
  420.54 +		EAlarmClientPanicNotificationCancel	= 13,
  420.55 +		//
  420.56 +		EAlarmClientPanicLast
  420.57 +		};
  420.58 +	/** Panic numbers associated with the ALMSRVCLIFAULT panic category. */
  420.59 +	enum TAlarmClientFault
  420.60 +		{
  420.61 +		EAlarmClientFaultLogic				= 0,
  420.62 +		EAlarmClientFaultData				= 1,
  420.63 +		EAlarmClientFaultCouldNotLoadServer	= 2,
  420.64 +		//
  420.65 +		EAlarmClientFaultDebugFuncError		= 3,
  420.66 +		//
  420.67 +		EAlarmClientFaultLast
  420.68 +		};
  420.69 +
  420.70 +///////////////////////////////////////////////////////////////////////////////////////
  420.71 +public:										// INTERNAL CONSTRUCT
  420.72 +///////////////////////////////////////////////////////////////////////////////////////
  420.73 +
  420.74 +	static void								Panic(TAlarmClientPanic aPanic);
  420.75 +
  420.76 +	static void								Fault(TAlarmClientFault aFault);
  420.77 +
  420.78 +	IMPORT_C static TInt					StartAlarmServer();
  420.79 +	};
  420.80 +
  420.81 +#endif
   421.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   421.2 +++ b/epoc32/include/mw/asclidefinitions.h	Wed Mar 31 12:27:01 2010 +0100
   421.3 @@ -0,0 +1,55 @@
   421.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   421.5 +// All rights reserved.
   421.6 +// This component and the accompanying materials are made available
   421.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   421.8 +// which accompanies this distribution, and is available
   421.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  421.10 +//
  421.11 +// Initial Contributors:
  421.12 +// Nokia Corporation - initial contribution.
  421.13 +//
  421.14 +// Contributors:
  421.15 +//
  421.16 +// Description:
  421.17 +//
  421.18 +
  421.19 +#ifndef __ASCLIDEFINITIONS_H__
  421.20 +#define __ASCLIDEFINITIONS_H__
  421.21 +
  421.22 +// System includes
  421.23 +#include <e32base.h>
  421.24 +
  421.25 +// User includes
  421.26 +
  421.27 +// Type definitions
  421.28 +
  421.29 +// Constants
  421.30 +
  421.31 +// Enumerations
  421.32 +
  421.33 +
  421.34 +///////////////////////////////////////////////////////////////////////////////////////
  421.35 +// ----> ASCliDefinitions (header)
  421.36 +///////////////////////////////////////////////////////////////////////////////////////
  421.37 +class ASCliDefinitions
  421.38 +/** This is a utility class that retrieves the name and version number of the alarm 
  421.39 +server. 
  421.40 +@publishedAll
  421.41 +@released
  421.42 +*/
  421.43 +	{
  421.44 +///////////////////////////////////////////////////////////////////////////////////////
  421.45 +public:										// STATIC ACCESS METHODS
  421.46 +///////////////////////////////////////////////////////////////////////////////////////
  421.47 +
  421.48 +	IMPORT_C static const TDesC&			ServerAndThreadName();
  421.49 +
  421.50 +	static const TDesC&						ServerImageName();
  421.51 +
  421.52 +	static TUidType							ServerUidType();
  421.53 +
  421.54 +	static TVersion							Version();
  421.55 +
  421.56 +	};
  421.57 +
  421.58 +#endif
   422.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   422.2 +++ b/epoc32/include/mw/asclisession.h	Wed Mar 31 12:27:01 2010 +0100
   422.3 @@ -0,0 +1,206 @@
   422.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   422.5 +// All rights reserved.
   422.6 +// This component and the accompanying materials are made available
   422.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   422.8 +// which accompanies this distribution, and is available
   422.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  422.10 +//
  422.11 +// Initial Contributors:
  422.12 +// Nokia Corporation - initial contribution.
  422.13 +//
  422.14 +// Contributors:
  422.15 +//
  422.16 +// Description:
  422.17 +//
  422.18 +
  422.19 +#ifndef __ASCLISESSION_H__
  422.20 +#define __ASCLISESSION_H__
  422.21 +
  422.22 +// System includes
  422.23 +#include <e32base.h>
  422.24 +
  422.25 +// User includes
  422.26 +#include <asshddefs.h>
  422.27 +
  422.28 +// Classes referenced
  422.29 +class TASShdAlarm;
  422.30 +class TASCliSoundPlayDefinition;
  422.31 +
  422.32 +
  422.33 +class RASCliSession : public RSessionBase
  422.34 +/** The client-side interface to the Symbian OS alarm server. 
  422.35 +@publishedAll
  422.36 +@released
  422.37 +*/
  422.38 +	{
  422.39 +///////////////////////////////////////////////////////////////////////////////////////
  422.40 +public:										// CONNECT TO SERVER & VERSIONING
  422.41 +///////////////////////////////////////////////////////////////////////////////////////
  422.42 +
  422.43 +	IMPORT_C RASCliSession();
  422.44 +
  422.45 +	IMPORT_C TInt							Connect();
  422.46 +
  422.47 +	IMPORT_C TVersion						Version() const;
  422.48 +
  422.49 +///////////////////////////////////////////////////////////////////////////////////////
  422.50 +public:										// ALARM SPECIFIC FUNCTIONALITY
  422.51 +///////////////////////////////////////////////////////////////////////////////////////
  422.52 +
  422.53 +	IMPORT_C TInt							AlarmAdd(TASShdAlarm& aAlarm) const;
  422.54 +
  422.55 +	IMPORT_C TInt							AlarmAdd(TASShdAlarm& aAlarm, const TDesC8& aData) const;
  422.56 +
  422.57 +	IMPORT_C void							AlarmAddWithNotification(TRequestStatus& aStatus, TASShdAlarm& aAlarm);
  422.58 +
  422.59 +	IMPORT_C void							AlarmAddWithNotification(TRequestStatus& aStatus, TASShdAlarm& aAlarm, const TDesC8& aData);
  422.60 +
  422.61 +	IMPORT_C void							AlarmNotificationCancelAndDequeue(TAlarmId aAlarmId) const;
  422.62 +
  422.63 +	IMPORT_C TInt							GetAlarmDetails(TAlarmId aAlarmId, TASShdAlarm& aAlarm) const;
  422.64 +	
  422.65 +	IMPORT_C TInt							AlarmDelete(TAlarmId aAlarmId) const;
  422.66 +
  422.67 +	IMPORT_C TInt							GetAlarmCategory(TAlarmId aAlarmId, TAlarmCategory& aCategory) const;
  422.68 +
  422.69 +	IMPORT_C TInt							GetAlarmOwner(TAlarmId aAlarmId, TFullName& aThreadName) const;
  422.70 +
  422.71 +	IMPORT_C TInt							SetAlarmStatus(TAlarmId aAlarmId, TAlarmStatus aStatus) const;
  422.72 +
  422.73 +	IMPORT_C TInt							GetAlarmStatus(TAlarmId aAlarmId, TAlarmStatus& aStatus) const;
  422.74 +
  422.75 +	IMPORT_C TInt							SetAlarmDayOrTimed(TAlarmId aAlarmId, TAlarmDayOrTimed aDayOrTimed) const;
  422.76 +
  422.77 +	IMPORT_C TInt							GetAlarmDayOrTimed(TAlarmId aAlarmId, TAlarmDayOrTimed& aDayOrTimed) const;
  422.78 +
  422.79 +	IMPORT_C TInt							SetAlarmCharacteristics(TAlarmId aAlarmId, TAlarmCharacteristicsFlags aCharacteristics) const;
  422.80 +
  422.81 +	IMPORT_C TInt							GetAlarmCharacteristics(TAlarmId aAlarmId, TAlarmCharacteristicsFlags& aCharacteristics) const;
  422.82 +
  422.83 +	IMPORT_C TInt							SetClientData(const TASShdAlarm& aAlarm);
  422.84 +
  422.85 +	IMPORT_C TInt							SetAlarmDays(TAlarmId aAlarmId, TUint8 aAlarmDays) const;
  422.86 +    IMPORT_C TInt							GetAlarmDays(TAlarmId aAlarmId, TUint8& aAlarmDays) const;
  422.87 +    IMPORT_C TInt							SetContinuous(TAlarmId aAlarmId, TBool aContinuous) const;
  422.88 +    IMPORT_C TInt							GetContinuous(TAlarmId aAlarmId, TBool& aContinuous) const;
  422.89 +	
  422.90 +///////////////////////////////////////////////////////////////////////////////////////
  422.91 +public:										// ALARM DATA FUNCTIONALITY
  422.92 +///////////////////////////////////////////////////////////////////////////////////////
  422.93 +
  422.94 +	IMPORT_C TInt							AlarmDataAttachL(TAlarmId aAlarmId, const TDesC8& aData) const;
  422.95 +
  422.96 +	IMPORT_C TInt							AlarmDataDetach(TAlarmId aAlarmId) const;
  422.97 +
  422.98 +	inline	 TInt							AlarmDataDetatch(TAlarmId aAlarmId) const;
  422.99 +
 422.100 +	IMPORT_C TInt							AlarmDataSize(TAlarmId aAlarmId) const;
 422.101 +
 422.102 +	IMPORT_C TInt							GetAlarmData(TAlarmId aAlarmId, TDes8& aSink) const;
 422.103 +
 422.104 +	IMPORT_C TInt							GetAlarmData(TAlarmId aAlarmId, HBufC8*& aSink) const;
 422.105 +
 422.106 +///////////////////////////////////////////////////////////////////////////////////////
 422.107 +public:										// CATEGORY-SPECIFIC FUNCTIONALITY
 422.108 +///////////////////////////////////////////////////////////////////////////////////////
 422.109 +
 422.110 +	IMPORT_C TInt							SetAlarmStatusByCategory(TAlarmCategory aCategory, TAlarmStatus aStatus) const;
 422.111 +
 422.112 +	IMPORT_C TInt							GetAlarmCountForCategory(TAlarmCategory aCategory) const;
 422.113 +
 422.114 +	IMPORT_C TInt							AlarmDeleteAllByCategory(TAlarmCategory aCategory, TBool aDeleteOnlyOrphanedAlarmsInCategory) const;
 422.115 +
 422.116 +	IMPORT_C TInt							AlarmDeleteByCategory(TAlarmCategory aCategory, TDeleteType aWhatToDelete) const;
 422.117 +
 422.118 +	IMPORT_C void							GetAvailableCategoryListL(RArray<TAlarmCategory>& aCategories) const;
 422.119 +
 422.120 +	IMPORT_C void							GetAlarmIdListForCategoryL(TAlarmCategory aCategory, RArray<TAlarmId>& aAlarmIds) const;
 422.121 +
 422.122 +///////////////////////////////////////////////////////////////////////////////////////
 422.123 +public:										// MISC FUNCTIONALITY
 422.124 +///////////////////////////////////////////////////////////////////////////////////////
 422.125 +
 422.126 +	IMPORT_C TInt							AlarmCountByState(TAlarmState aState) const;
 422.127 +
 422.128 +	IMPORT_C void							GetAlarmIdListByStateL(TAlarmState aState, RArray<TAlarmId>& aAlarmIds) const;
 422.129 +
 422.130 +	IMPORT_C void							GetAlarmIdListL(RArray<TAlarmId>& aAlarmIds) const;
 422.131 +
 422.132 +	IMPORT_C TInt							GetNextDueAlarmId(TAlarmId& aAlarmId) const;
 422.133 +
 422.134 +	IMPORT_C TInt							NumberOfAlarmsActiveInQueue() const;
 422.135 +
 422.136 +///////////////////////////////////////////////////////////////////////////////////////
 422.137 +public:										// SOUND CONTROL
 422.138 +///////////////////////////////////////////////////////////////////////////////////////
 422.139 +
 422.140 +	IMPORT_C TInt							SetAlarmSoundState(TAlarmGlobalSoundState aState) const;
 422.141 +
 422.142 +	IMPORT_C TInt							GetAlarmSoundState(TAlarmGlobalSoundState& aState) const;
 422.143 +
 422.144 +	IMPORT_C TInt							SetAlarmSoundsSilentUntil(const TTime& aLocalTime) const;
 422.145 +
 422.146 +	IMPORT_C TInt							SetAlarmSoundsSilentFor(TTimeIntervalMinutes aTimeToRemainSilentFor) const;
 422.147 +
 422.148 +	IMPORT_C TInt							GetAlarmSoundsSilentUntil(TTime& aLocalTime) const;
 422.149 +
 422.150 +	IMPORT_C TInt							CancelAlarmSilence() const;
 422.151 +
 422.152 +	IMPORT_C TBool							AlarmSoundsTemporarilySilenced() const;
 422.153 +
 422.154 +	IMPORT_C void							SetAlarmPlayIntervalsL(const CArrayFix<TASCliSoundPlayDefinition>& aIntervals) const;
 422.155 +
 422.156 +	IMPORT_C void							GetAlarmPlayIntervalsL(CArrayFix<TASCliSoundPlayDefinition>& aIntervals) const;
 422.157 +
 422.158 +///////////////////////////////////////////////////////////////////////////////////////
 422.159 +public:										// CHANGE NOTIFICATION
 422.160 +///////////////////////////////////////////////////////////////////////////////////////
 422.161 +
 422.162 +	IMPORT_C void							NotifyChange(TRequestStatus& aStatus, TAlarmId& aAlarmId);
 422.163 +
 422.164 +	IMPORT_C void							NotifyChangeCancel() const;
 422.165 +
 422.166 +///////////////////////////////////////////////////////////////////////////////////////
 422.167 +public:										// DEBUG ONLY
 422.168 +///////////////////////////////////////////////////////////////////////////////////////
 422.169 +
 422.170 +	IMPORT_C void							__DbgShutDownServer() const;
 422.171 +
 422.172 +	IMPORT_C void							__DbgFailAlloc(TInt aCount) const;
 422.173 +
 422.174 +	IMPORT_C void							__DbgPreventUserNotify(TBool aShouldStop) const;
 422.175 +
 422.176 +	IMPORT_C TInt							__DbgSnoozeAlarm(TAlarmId aAlarmId, const TTime& aNewTime) const;
 422.177 +	
 422.178 +	IMPORT_C TInt 							__DbgSetEnvChgHandling(TBool aFlag) const;
 422.179 +///////////////////////////////////////////////////////////////////////////////////////
 422.180 +private:									// MEMBER DATA
 422.181 +///////////////////////////////////////////////////////////////////////////////////////
 422.182 +
 422.183 +	void									FetchAlarmIdsFromBufferL(RArray<TAlarmId>& aAlarmIds, TInt aBufferSize) const;
 422.184 +
 422.185 +	CBufBase*								FetchTransferBufferLC(TInt aBufferSize) const;
 422.186 +
 422.187 +	void									DoAlarmAddWithNotification(TRequestStatus& aStatus, TASShdAlarm& aAlarm, const TDesC8& aData);
 422.188 +	TInt									DoAlarmAdd(TASShdAlarm& aAlarm, const TDesC8& aData) const;
 422.189 +
 422.190 +///////////////////////////////////////////////////////////////////////////////////////
 422.191 +private:									// MEMBER DATA
 422.192 +///////////////////////////////////////////////////////////////////////////////////////
 422.193 +
 422.194 +	TPtr8									iPackage;
 422.195 +	TPtr8									iAlarmIdPointer;
 422.196 +	};
 422.197 +
 422.198 +///////////////////////////////////////////////////////////////////////////////////////
 422.199 +// ----> RASCliSession (inlines)
 422.200 +///////////////////////////////////////////////////////////////////////////////////////
 422.201 +inline TInt RASCliSession::AlarmDataDetatch(TAlarmId aAlarmId) const
 422.202 +/** @deprecated 8.0
 422.203 +
 422.204 +RASCliSession::AlarmDataDetach() should be used instead */
 422.205 +	{
 422.206 +	return AlarmDataDetach(aAlarmId);
 422.207 +	};
 422.208 +
 422.209 +#endif
   423.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   423.2 +++ b/epoc32/include/mw/asclisoundplay.h	Wed Mar 31 12:27:01 2010 +0100
   423.3 @@ -0,0 +1,110 @@
   423.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   423.5 +// All rights reserved.
   423.6 +// This component and the accompanying materials are made available
   423.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   423.8 +// which accompanies this distribution, and is available
   423.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  423.10 +//
  423.11 +// Initial Contributors:
  423.12 +// Nokia Corporation - initial contribution.
  423.13 +//
  423.14 +// Contributors:
  423.15 +//
  423.16 +// Description:
  423.17 +//
  423.18 +
  423.19 +#ifndef __ASCLISOUNDPLAY_H__
  423.20 +#define __ASCLISOUNDPLAY_H__
  423.21 +
  423.22 +// System includes
  423.23 +#include <e32base.h>
  423.24 +
  423.25 +// User includes
  423.26 +#include <asshddefs.h>
  423.27 +
  423.28 +// Type definitions
  423.29 +
  423.30 +// Constants
  423.31 +
  423.32 +// Enumerations
  423.33 +
  423.34 +
  423.35 +///////////////////////////////////////////////////////////////////////////////////////
  423.36 +// ----> TASCliSoundPlayDefinition (header)
  423.37 +///////////////////////////////////////////////////////////////////////////////////////
  423.38 +class TASCliSoundPlayDefinition
  423.39 +/** Defines when alarm sounds are to be played, and for how long. 
  423.40 +
  423.41 +Alarm sounds are played according to intervals that consist of a duration 
  423.42 +and an offset. 
  423.43 +
  423.44 +The duration is the number of seconds that the alarm sound plays. 
  423.45 +
  423.46 +The offset is the number of minutes after the alarm expires that the alarm 
  423.47 +sound plays. 
  423.48 +
  423.49 +The sound play definition is set using class RASCliSession. 
  423.50 +@publishedAll
  423.51 +@released
  423.52 +*/
  423.53 +	{
  423.54 +///////////////////////////////////////////////////////////////////////////////////////
  423.55 +public:										// CONSTRUCT
  423.56 +///////////////////////////////////////////////////////////////////////////////////////
  423.57 +
  423.58 +	inline TASCliSoundPlayDefinition();
  423.59 +
  423.60 +	inline TASCliSoundPlayDefinition(TTimeIntervalMinutes aOffset, TTimeIntervalSeconds aDuration);
  423.61 +
  423.62 +////////////////////////////////////////////////////////////////////////////////////////
  423.63 +public:										// ACCESS
  423.64 +///////////////////////////////////////////////////////////////////////////////////////
  423.65 +
  423.66 +	inline TTimeIntervalMinutes	Offset() const 
  423.67 +	/** Retrieves the offset.
  423.68 +	
  423.69 +	@return The offset in minutes. */
  423.70 +		{ return iOffset; }
  423.71 +
  423.72 +	inline TTimeIntervalSeconds	Duration() const 
  423.73 +	/** Retrieves the duration.
  423.74 +	
  423.75 +	@return The duration in seconds. */
  423.76 +		{ return iDuration; }
  423.77 +
  423.78 +//////////////////////////////////////////////////////////////////////////////////////
  423.79 +private:									// MEMBER DATA
  423.80 +///////////////////////////////////////////////////////////////////////////////////////
  423.81 +
  423.82 +	/*
  423.83 +	 * From the time an alarm is first displayed
  423.84 +	 */
  423.85 +	TTimeIntervalMinutes					iOffset;
  423.86 +
  423.87 +	/*
  423.88 +	 * How long the alarm playing lasts
  423.89 +	 */
  423.90 +	TTimeIntervalSeconds					iDuration;
  423.91 +	};
  423.92 +
  423.93 +
  423.94 +
  423.95 +
  423.96 +///////////////////////////////////////////////////////////////////////////////////////
  423.97 +// ----> TASCliSoundPlayDefinition (inlines)
  423.98 +///////////////////////////////////////////////////////////////////////////////////////
  423.99 +inline TASCliSoundPlayDefinition::TASCliSoundPlayDefinition()
 423.100 +:	iOffset(KDefaultSoundPlayOffsetInSeconds), iDuration(KDefaultSoundPlayDurationInSeconds)
 423.101 +/** Default constructor. 
 423.102 +
 423.103 +The default offset is zero, and the default duration is 30 seconds. */
 423.104 +	{}
 423.105 +inline TASCliSoundPlayDefinition::TASCliSoundPlayDefinition(TTimeIntervalMinutes aOffset, TTimeIntervalSeconds aDuration)
 423.106 +:	iOffset(aOffset), iDuration(aDuration)
 423.107 +/** Constructor that initializes the offset and duration to specified values.
 423.108 +	
 423.109 +@param aOffset Time in minutes for the offset. 
 423.110 +@param aDuration Time in seconds for the duration. */
 423.111 +	{}
 423.112 +
 423.113 +#endif
   424.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   424.2 +++ b/epoc32/include/mw/asshdalarm.h	Wed Mar 31 12:27:01 2010 +0100
   424.3 @@ -0,0 +1,546 @@
   424.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   424.5 +// All rights reserved.
   424.6 +// This component and the accompanying materials are made available
   424.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   424.8 +// which accompanies this distribution, and is available
   424.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  424.10 +//
  424.11 +// Initial Contributors:
  424.12 +// Nokia Corporation - initial contribution.
  424.13 +//
  424.14 +// Contributors:
  424.15 +//
  424.16 +// Description:
  424.17 +//
  424.18 +
  424.19 +#ifndef __ASSHDALARM_H__
  424.20 +#define __ASSHDALARM_H__
  424.21 +
  424.22 +
  424.23 +// System includes
  424.24 +#include <e32base.h>
  424.25 +#include <s32strm.h>
  424.26 +
  424.27 +// User includes
  424.28 +#include <asshddefs.h>
  424.29 +
  424.30 +///////////////////////////////////////////////////////////////////////////////////////
  424.31 +// ----> TASShdAlarm (header)
  424.32 +///////////////////////////////////////////////////////////////////////////////////////
  424.33 +
  424.34 +/** The Alarm publish and subscribe category
  424.35 +@publishedPartner
  424.36 +@released
  424.37 +*/
  424.38 +const TUid KAlarmServerPubSubCategory = { 0x101f5027 };
  424.39 +
  424.40 +/** Used for subcribing missed alarms or time zone changes
  424.41 +@publishedPartner
  424.42 +@released
  424.43 +*/
  424.44 +const TUint KMissingAlarmPubSubKey = 100;
  424.45 +
  424.46 +/** The publish and subscribe data for KMissingAlarmPubSubKey
  424.47 +@publishedPartner
  424.48 +@released
  424.49 +*/
  424.50 +struct TMissedAlarmPubSubData
  424.51 +	{
  424.52 +	/** The value indicating the changes. 
  424.53 +	1 - Time zone has been changes but there are no missed alarms
  424.54 +	2 - Some alarms have been missed after system time or time zone has changed.
  424.55 +	*/
  424.56 +	TUint8 iValue;
  424.57 +	
  424.58 +	/** The time that system time change took place, in universal (UTC) time */
  424.59 +	TTime iTimeOfChangeUtc;
  424.60 +	};
  424.61 +
  424.62 +/** Used for subscribing to data used when searching for instances in Calendar
  424.63 +@publishedPartner
  424.64 +@released
  424.65 +*/
  424.66 +const TUint KSkippedAlarmInstancesPubSubKey = 101;
  424.67 +
  424.68 +/** The publish and subscribe data for KMissingAlarmInstancesPubSubKey
  424.69 +@publishedPartner
  424.70 +@released
  424.71 +*/
  424.72 +struct TASShdAlarmedInstanceParams
  424.73 +	{
  424.74 +	/** The start of the time range in local time. */ 
  424.75 +	TTime iLocalStartTime;
  424.76 +
  424.77 +	/** The end of the time range in local time. */
  424.78 +	TTime iLocalEndTime;
  424.79 +	
  424.80 +	/** The alarm time types to include. */
  424.81 +	TASShdAlarmTimeType iTimeType;
  424.82 +	};
  424.83 +
  424.84 +
  424.85 +class TASShdAlarm
  424.86 +/** A client-side alarm object. 
  424.87 +
  424.88 +It contains all of the information needed to create an alarm in 
  424.89 +the Alarm Server. 
  424.90 +@publishedAll
  424.91 +@released
  424.92 +*/
  424.93 +	{
  424.94 +///////////////////////////////////////////////////////////////////////////////////////
  424.95 +public:										// CONSTRUCT
  424.96 +///////////////////////////////////////////////////////////////////////////////////////
  424.97 +
  424.98 +	IMPORT_C TASShdAlarm();
  424.99 +
 424.100 +///////////////////////////////////////////////////////////////////////////////////////
 424.101 +public:										// INTERNALIZE / EXTERNALIZE
 424.102 +///////////////////////////////////////////////////////////////////////////////////////
 424.103 +
 424.104 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 424.105 +
 424.106 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 424.107 +
 424.108 +///////////////////////////////////////////////////////////////////////////////////////
 424.109 +public:										// READ-ONLY ACCESS
 424.110 +///////////////////////////////////////////////////////////////////////////////////////
 424.111 +
 424.112 +	inline TAlarmStatus	Status() const				
 424.113 +	/** Returns the alarm status. 
 424.114 +	
 424.115 +	@return Alarm status. */
 424.116 +		{ return iStatus; }
 424.117 +
 424.118 +	inline TAlarmState State() const
 424.119 +	/** Returns the alarm state. 
 424.120 +	
 424.121 +	@return Alarm state. */
 424.122 +		{ return iState; }
 424.123 +
 424.124 +	inline TBool HasAssociatedData() const;
 424.125 +
 424.126 +	inline TBool HasOwningSession() const;
 424.127 +
 424.128 +	inline TBool HasBecomeOrphaned() const;
 424.129 +	
 424.130 +///////////////////////////////////////////////////////////////////////////////////////
 424.131 +public:										// READ-ONLY & MODIFIABLE
 424.132 +///////////////////////////////////////////////////////////////////////////////////////
 424.133 +
 424.134 +	IMPORT_C void Reset();
 424.135 +
 424.136 +	inline TAlarmId& Id()
 424.137 +	/** Returns a writable version of the alarm's unique identifier. 
 424.138 +	
 424.139 +	@return Reference to the unique identifier. */
 424.140 +		{ return iAlarmId; }
 424.141 +
 424.142 +	inline TAlarmId	Id() const
 424.143 +	/** Return the alarm's unique identifier. 
 424.144 +	
 424.145 +	@return The unique identifier. */
 424.146 +		{ return iAlarmId; }
 424.147 +		
 424.148 +//The Secure ID is only used in the secured platform
 424.149 +		
 424.150 +	// adds a SID to the alarms private field
 424.151 +	inline void SetSid(const TSecureId& aSecureID) 
 424.152 +		{iTASShdAlarmSID = aSecureID;}
 424.153 +
 424.154 +	//	returns the SID of the alarm's creator
 424.155 +	inline TSecureId GetSid() const 
 424.156 +		{return iTASShdAlarmSID;}
 424.157 +
 424.158 +	inline TTime& NextDueTime()
 424.159 +	/** Returns a writable version of the next time the alarm is scheduled to expire. 
 424.160 +	
 424.161 +	@return Next expiry time. */
 424.162 +		{ return iNextDueTime; }
 424.163 +
 424.164 +	inline const TTime&	NextDueTime() const
 424.165 +	/** Returns the next time that the alarm is scheduled to expire. 
 424.166 +	
 424.167 +	@return Next expiry time. */
 424.168 +		{ return iNextDueTime; }
 424.169 +
 424.170 +	inline TTime& OriginalExpiryTime()
 424.171 +	/** Returns a writable version of the alarm's original expiry time. 
 424.172 +	
 424.173 +	@return Original expiry time. */
 424.174 +		{ return iOriginalExpiryTime; }
 424.175 +
 424.176 +	inline const TTime& OriginalExpiryTime() const
 424.177 +	/** Returns the alarm's original expiry time. 
 424.178 +	
 424.179 +	The original expiry time is the same as the next due time, unless the alarm 
 424.180 +	has been snoozed. In that case, the original expiry time is the time when 
 424.181 +	the alarm first expired, and the next due time is when it is to re-awaken 
 424.182 +	after the snooze. 
 424.183 +	
 424.184 +	@return Original expiry time. */
 424.185 +		{ return iOriginalExpiryTime; }
 424.186 +
 424.187 +	inline TAlarmCategory& Category()
 424.188 +	/** Returns a writable version of the alarm's category. 
 424.189 +	
 424.190 +	Clients can use the category to tag each alarm with a specific code. This 
 424.191 +	allows clients to identify all related alarms, such as all alarms associated 
 424.192 +	with a particular application or application engine. 
 424.193 +	
 424.194 +	@return Alarm category. */
 424.195 +		{ return iCategory; }
 424.196 +
 424.197 +	inline TAlarmCategory Category() const 
 424.198 +	/** Return this alarm's category. 
 424.199 +	
 424.200 +	@return Alarm category. */
 424.201 +		{ return iCategory; }
 424.202 +
 424.203 +	inline TAlarmCharacteristicsFlags& Characteristics() 
 424.204 +	/** Returns a writable version of the alarm's characteristics. 
 424.205 +	
 424.206 +	@return Alarm characteristics bit flags. */
 424.207 +		{ return iCharacteristics; }
 424.208 +
 424.209 +	inline TAlarmCharacteristicsFlags Characteristics() const 
 424.210 +	/** Returns the alarm's characteristics 
 424.211 +	
 424.212 +	@return Alarm characteristics bit flags. */
 424.213 +		{ return iCharacteristics; }
 424.214 +
 424.215 +	inline TAlarmRepeatDefinition& RepeatDefinition() 
 424.216 +	/** Returns a writable version of the alarm's repeat definition. 
 424.217 +	
 424.218 +	The repeat definition controls the alarm's behaviour after it has expired. 
 424.219 +	For example, you can set the repeat definition so that the server automatically 
 424.220 +	queues the alarm to expire again in exactly 24 hours time.
 424.221 +	
 424.222 +	@return Alarm repeat definition. */
 424.223 +		{ return iRepeatDefinition; }
 424.224 +
 424.225 +	inline TAlarmRepeatDefinition RepeatDefinition() const 
 424.226 +	/** Returns the repeat definition for the alarm. 
 424.227 +	
 424.228 +	@return The alarm's repeat definition. */
 424.229 +		{ return iRepeatDefinition; }
 424.230 +
 424.231 +	inline TAlarmMessage& Message()	
 424.232 +	/** Returns a writable version of the alarm's message. 
 424.233 +	
 424.234 +	The message is usually displayed in the application UI 
 424.235 +	when the alarm expires.
 424.236 +	
 424.237 +	@return Reference to the alarm's associated message. */
 424.238 +		{ return iMessage; }
 424.239 +
 424.240 +	inline const TAlarmMessage& Message() const 
 424.241 +	/** Returns the alarm's message. 
 424.242 +	
 424.243 +	The message is usually displayed in the application UI when the alarm expires. 
 424.244 +	
 424.245 +	@return Reference to the alarm's associated message. */
 424.246 +		{ return iMessage; }
 424.247 +
 424.248 +	inline TAlarmSoundName& SoundName() 
 424.249 +	/** Return a writable version of the alarm sound's filename. 
 424.250 +	
 424.251 +	@return Reference to the alarm's sound filename. */
 424.252 +		{ return iSoundName; }
 424.253 +
 424.254 +	inline const TAlarmSoundName& SoundName() const	
 424.255 +	/** Returns the alarm's sound filename. 
 424.256 +	
 424.257 +	@return Sound filename. */
 424.258 +		{ return iSoundName; }
 424.259 +		
 424.260 +	inline TAlarmDayOrTimed DayOrTimed() const
 424.261 +	/** Returns the alarm session type. 
 424.262 +	
 424.263 +	@return Alarm session type. */
 424.264 +		{ return iDayOrTimed; }
 424.265 +
 424.266 +		
 424.267 +	inline TAlarmDayOrTimed&	DayOrTimed()	
 424.268 +	/** Returns a writable version of the alarm type, i.e. day, timed
 424.269 +	
 424.270 +	@return iDayOrTimed. */	
 424.271 +	{ return iDayOrTimed; }
 424.272 +
 424.273 +   
 424.274 +	IMPORT_C void SetUtcNextDueTime(TTime aUtcTime);
 424.275 +	
 424.276 +	IMPORT_C void SetDeQueueIfDueTimeInPast();
 424.277 +	
 424.278 +	IMPORT_C TInt SetAlarmDays(TUint8 aAlarmDays);
 424.279 +	IMPORT_C TUint8 AlarmDays() const;
 424.280 +	IMPORT_C void SetContinuous(TBool aContinuous);
 424.281 +	IMPORT_C TBool Continuous();
 424.282 +	
 424.283 +///////////////////////////////////////////////////////////////////////////////////////
 424.284 +public:										// CLIENT DATA ACCESS
 424.285 +///////////////////////////////////////////////////////////////////////////////////////
 424.286 +
 424.287 +	inline TBitFlags16& ClientFlags()
 424.288 +	/** Returns a writable version of the alarm's client flags. 
 424.289 +	
 424.290 +	The client flags may be used for any client-specific data - 
 424.291 +	the alarm server does not use them.
 424.292 +
 424.293 +	@return Reference to the alarm's bit flags. */
 424.294 +		{ return iClientFlags; }
 424.295 +
 424.296 +	inline TBitFlags16 ClientFlags() const 
 424.297 +	/** Returns this alarm's client flags. 
 424.298 +	
 424.299 +	@return Reference to the alarm's bit flags. */
 424.300 +		{ return iClientFlags; }
 424.301 +
 424.302 +	inline TInt	ClientData1() const 
 424.303 +	/** Returns the client data from slot 1 for this alarm. 
 424.304 +	
 424.305 +	@return The first client-specific integer. */
 424.306 +		{ return iClientData1; }
 424.307 +
 424.308 +	inline TInt& ClientData1() 
 424.309 +	/** Returns a writable version of the client data from slot 1 for this alarm. 
 424.310 +	
 424.311 +	@return Reference to the first client-specific integer. */
 424.312 +		{ return iClientData1; }
 424.313 +
 424.314 +	inline TInt ClientData2() const
 424.315 +	/** Returns the client data from slot 2 for this alarm. 
 424.316 +	
 424.317 +	@return The second client-specific integer. */
 424.318 +		{ return iClientData2; }
 424.319 +
 424.320 +	inline TInt& ClientData2() 
 424.321 +	/** Returns the client data from slot 2 for this alarm. 
 424.322 +	
 424.323 +	@return The second client-specific integer. */
 424.324 +		{ return iClientData2; }
 424.325 +		
 424.326 +	inline TBool IsFloating() const
 424.327 +	/** Tests whether the alarm is floating. 
 424.328 +
 424.329 +	Floating alarms expire at a given wall-clock time regardless of the current locale and
 424.330 +	whether any daylight saving time rules are in force.
 424.331 +		
 424.332 +	@return True if the alarm is floating.
 424.333 +	*/
 424.334 +	{ return iCharacteristics.IsClear(EAlarmCharacteristicsIsFixed); }
 424.335 +	
 424.336 +
 424.337 +
 424.338 +
 424.339 +
 424.340 +///////////////////////////////////////////////////////////////////////////////////////
 424.341 +protected:									// INTERNAL FLAGS
 424.342 +///////////////////////////////////////////////////////////////////////////////////////
 424.343 +
 424.344 +	/*
 424.345 +	 * @internalAll
 424.346 +	 */
 424.347 +	enum TASShdAlarmFlags
 424.348 +		{
 424.349 +
 424.350 +		/*
 424.351 +		 * @internalAll
 424.352 +		 */
 424.353 +		EASShdAlarmFlagsHasAssociatedData	= 0,
 424.354 +
 424.355 +		/*
 424.356 +		 * @internalAll
 424.357 +		 */
 424.358 +		EASShdAlarmFlagsHasOwningSession	= 1,
 424.359 +
 424.360 +		/*
 424.361 +		 * @internalAll
 424.362 +		 */
 424.363 +		EASShdAlarmFlagsHasBecomeOrphaned	= 2,
 424.364 +		
 424.365 +		/*
 424.366 +		 * @internalAll Set if alarm is disabled manually so that can not be enabled when
 424.367 +		 * locale changes.
 424.368 +		 */
 424.369 +		EASShdAlarmFlagsPermanentDisabled	= 4
 424.370 +
 424.371 +		};
 424.372 +
 424.373 +private:
 424.374 +	/*
 424.375 +	 * @internalComponent
 424.376 +	 */
 424.377 +	enum TASShdAlarmFlags2
 424.378 +		{
 424.379 +		EASShdAlarmFlag2Wakeup				= 0,
 424.380 +		};
 424.381 +
 424.382 +	enum TASShdAlarmFlags2AlarmRepeatExtensions
 424.383 +		{
 424.384 +		EASShdAlarmFlag2AlarmDayMonday		= 1,
 424.385 +		EASShdAlarmFlag2AlarmDayTuesday		= 2,
 424.386 +		EASShdAlarmFlag2AlarmDayWednesday	= 3,
 424.387 +		EASShdAlarmFlag2AlarmDayThursday	= 4,
 424.388 +		EASShdAlarmFlag2AlarmDayFriday		= 5,
 424.389 +		EASShdAlarmFlag2AlarmDaySaturday	= 6,
 424.390 +		EASShdAlarmFlag2AlarmDaySunday		= 7,
 424.391 +		EASShdAlarmFlag2Continuous			= 8
 424.392 +		};
 424.393 +
 424.394 +		
 424.395 +///////////////////////////////////////////////////////////////////////////////////////
 424.396 +protected:									// MEMBER DATA
 424.397 +///////////////////////////////////////////////////////////////////////////////////////
 424.398 +
 424.399 +	/*
 424.400 +	 * Various flags - used internally by the alarm object
 424.401 +	 */
 424.402 +	TBitFlags8 iFlags;
 424.403 +
 424.404 +	/*
 424.405 +	 * This represents the desired behaviour for a given alarm.
 424.406 +	 * The Alarm Server uses this information to control the
 424.407 +	 * behaviour of the alarm.
 424.408 +	 *
 424.409 +	 * @see TAlarmCharacteristics
 424.410 +	 */
 424.411 +	TAlarmCharacteristicsFlags iCharacteristics;
 424.412 +
 424.413 +	/*
 424.414 +	 * The unique identifier assoicated with each alarm maintained
 424.415 +	 * by the alarm world server.
 424.416 +	 */
 424.417 +	TAlarmId iAlarmId;
 424.418 +	
 424.419 +	/*
 424.420 +	 * The status of this alarm (e.g. enabled, disabled)
 424.421 +	 */
 424.422 +	TAlarmStatus iStatus;
 424.423 +
 424.424 +	/*
 424.425 +	 * The state of this alarm (e.g. queued, notifying, notified, snoozed etc)
 424.426 +	 */
 424.427 +	TAlarmState	iState;
 424.428 +
 424.429 +	/*
 424.430 +	 * The type of this alarm (e.g. day, timed)
 424.431 +	 */
 424.432 +	TAlarmDayOrTimed iDayOrTimed;
 424.433 +
 424.434 +	/*
 424.435 +	 * Controls how the alarm repeats after it has expired. Note that
 424.436 +	 * session alarms are not allowed to repeat (they must be "once
 424.437 +	 * only").
 424.438 +	 */
 424.439 +	TAlarmRepeatDefinition iRepeatDefinition;
 424.440 +
 424.441 +	/*
 424.442 +	 * This UID is supplied by the client and is used to indicate
 424.443 +	 * the category that this alarm is part of. The Alarm Server
 424.444 +	 * is category-agnostic, that is, this information is for
 424.445 +	 * the client's use only
 424.446 +	 */
 424.447 +	TAlarmCategory iCategory;
 424.448 +
 424.449 +	/*
 424.450 +	 * The date and time at which this alarm is next due. For alarms
 424.451 +	 * that haven't been snoozed, then this is the original due time.
 424.452 +	 *
 424.453 +	 * For alarms that have been snoozed, this is the time at which
 424.454 +	 * the alarm will reawaken.
 424.455 +	 */
 424.456 +	TTime iNextDueTime;
 424.457 +
 424.458 +	/*
 424.459 +	 * This attribute is only used in the instance whereby an alarm
 424.460 +	 * is snoozed. It represents the time at which the alarm first 
 424.461 +	 * expired.
 424.462 +	 */
 424.463 +	TTime iOriginalExpiryTime;
 424.464 +
 424.465 +	/*
 424.466 +	 * The message associated with this alarm, typically used
 424.467 +	 * in an application UI to inform the user as to the reason
 424.468 +	 * for the alarm.
 424.469 +	 */
 424.470 +	TAlarmMessage iMessage;
 424.471 +
 424.472 +	/*
 424.473 +	 * A descriptor which holds the name of the sound file which
 424.474 +	 * should be played when the alarm expires.
 424.475 +	 */
 424.476 +	TAlarmSoundName iSoundName;
 424.477 +
 424.478 +///////////////////////////////////////////////////////////////////////////////////////
 424.479 +protected:									// CLIENT SPECIFIC DATA
 424.480 +///////////////////////////////////////////////////////////////////////////////////////
 424.481 +
 424.482 +	/*
 424.483 +	 * Flags for use by any particular client. These will
 424.484 +	 * only be relevant to a client who can interpret them.
 424.485 +	 */
 424.486 +	TBitFlags16 iClientFlags;
 424.487 +
 424.488 +	/*
 424.489 +	 * For arbitrary client data 1
 424.490 +	 */
 424.491 +	TInt iClientData1;
 424.492 +
 424.493 +	/*
 424.494 +	 * For arbitrary client data 2
 424.495 +	 */
 424.496 +	TInt iClientData2;
 424.497 +
 424.498 +///////////////////////////////////////////////////////////////////////////////////////
 424.499 +private:									// BC PROOFING
 424.500 +///////////////////////////////////////////////////////////////////////////////////////
 424.501 +	TSecureId iTASShdAlarmSID;
 424.502 +	/*
 424.503 +	 * Various flags - used internally by the alarm object
 424.504 +	 */
 424.505 +	TBitFlags16 iFlags2;
 424.506 +	TUint16 iTASShdAlarm_2;
 424.507 +	TAny* iTASShdAlarm_3;
 424.508 +	};
 424.509 +
 424.510 +
 424.511 +///////////////////////////////////////////////////////////////////////////////////////
 424.512 +// ----> TASShdAlarm (inline)
 424.513 +///////////////////////////////////////////////////////////////////////////////////////
 424.514 +
 424.515 +
 424.516 +/** Tests whether the alarm has any associated data. 
 424.517 +	
 424.518 +@return True if the alarm has associated data. */
 424.519 +inline TBool TASShdAlarm::HasAssociatedData() const
 424.520 +
 424.521 +	{
 424.522 +	return iFlags.IsSet(EASShdAlarmFlagsHasAssociatedData);
 424.523 +	}
 424.524 +
 424.525 +
 424.526 +/** Tests whether the alarm has an active owning session.
 424.527 +
 424.528 +@return True if the alarm has an active owning session. */
 424.529 +inline TBool TASShdAlarm::HasOwningSession() const
 424.530 +
 424.531 +	{
 424.532 +	return iFlags.IsSet(EASShdAlarmFlagsHasOwningSession);
 424.533 +	}
 424.534 +
 424.535 +inline TBool TASShdAlarm::HasBecomeOrphaned() const
 424.536 +/** Tests whether the alarm is orphaned. 
 424.537 +
 424.538 +An alarm is ophaned if it used to have an owning session, but no longer does. 
 424.539 +If an alarm is owned by a session, it is removed from the queue when the session 
 424.540 +disconnects. However, orphaned alarms stay in the queue.
 424.541 +	
 424.542 +@return True if the alarm has becomed orphaned. */
 424.543 +	{
 424.544 +	return iFlags.IsSet(EASShdAlarmFlagsHasBecomeOrphaned);
 424.545 +	}
 424.546 +
 424.547 +
 424.548 +
 424.549 +#endif // #ifndef __ASSHDALARM_H__
   425.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   425.2 +++ b/epoc32/include/mw/asshdbitflags.h	Wed Mar 31 12:27:01 2010 +0100
   425.3 @@ -0,0 +1,16 @@
   425.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   425.5 +// All rights reserved.
   425.6 +// This component and the accompanying materials are made available
   425.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   425.8 +// which accompanies this distribution, and is available
   425.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  425.10 +//
  425.11 +// Initial Contributors:
  425.12 +// Nokia Corporation - initial contribution.
  425.13 +//
  425.14 +// Contributors:
  425.15 +//
  425.16 +// Description:
  425.17 +//
  425.18 +
  425.19 +#include <babitflags.h>
   426.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   426.2 +++ b/epoc32/include/mw/asshddefs.h	Wed Mar 31 12:27:01 2010 +0100
   426.3 @@ -0,0 +1,414 @@
   426.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   426.5 +// All rights reserved.
   426.6 +// This component and the accompanying materials are made available
   426.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   426.8 +// which accompanies this distribution, and is available
   426.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  426.10 +//
  426.11 +// Initial Contributors:
  426.12 +// Nokia Corporation - initial contribution.
  426.13 +//
  426.14 +// Contributors:
  426.15 +//
  426.16 +// Description:
  426.17 +//
  426.18 +
  426.19 +#ifndef __ASSHDDEFS_H__
  426.20 +#define __ASSHDDEFS_H__
  426.21 +
  426.22 +/** @file
  426.23 +@publishedAll
  426.24 +@released */
  426.25 +
  426.26 +// System includes
  426.27 +#include <e32std.h>
  426.28 +#include <babitflags.h>
  426.29 +
  426.30 +// Constants
  426.31 +
  426.32 +/** Maximum length of an alarm message. The message is usually displayed by the 
  426.33 +alarm UI. */
  426.34 +const TInt KMaxAlarmMessageLength = 0x80;
  426.35 +/** Maximum length of the filename of the sound played when an alarm expires. */
  426.36 +const TInt KMaxAlarmSoundNameLength = KMaxFileName;
  426.37 +
  426.38 +// Type definitions
  426.39 +/** A unique identifier allocated to each new alarm by the alarm server, so that 
  426.40 +the client can identify them. By default, KNullAlarmId. */
  426.41 +typedef TInt TAlarmId;
  426.42 +/** A unique identifier that can optionally be used by clients to group 
  426.43 +alarms into categories, for instance alarms associated with a particular application 
  426.44 +or application engine. The alarm server ignores the category. It is relevant 
  426.45 +to the client alone. */
  426.46 +typedef TUid TAlarmCategory;
  426.47 +//
  426.48 +/** Flags that define an alarm's characteristics.
  426.49 +
  426.50 +@see TAlarmCharacteristics */
  426.51 +typedef TBitFlags8 TAlarmCharacteristicsFlags;
  426.52 +//
  426.53 +
  426.54 +/** A type to identify what kind of alarms should be deleted when using the API
  426.55 +RASCliSession::AlarmDeleteByCategory()
  426.56 +@see TTDeleteTypeEnum */
  426.57 +typedef TInt TDeleteType;
  426.58 + 
  426.59 +/** Stores the text message associated with an alarm. */
  426.60 +typedef TBuf<KMaxAlarmMessageLength> TAlarmMessage;
  426.61 +/** Stores the name of a sound file which is played when an alarm activates. */
  426.62 +typedef TBuf<KMaxAlarmSoundNameLength> TAlarmSoundName;
  426.63 +//
  426.64 +/** Defines a null alarm identifier. */
  426.65 +const TAlarmId KNullAlarmId	= 0;
  426.66 +//
  426.67 +/** Defines the length in seconds of an alarm sound offset. */
  426.68 +const TInt KDefaultSoundPlayOffsetInSeconds	= 0;
  426.69 +/** Defines the length in seconds of an alarm sound duration. */
  426.70 +const TInt KDefaultSoundPlayDurationInSeconds = 30;
  426.71 +
  426.72 +// Constants
  426.73 +/** A category that can be assigned to identify clock alarms to the client. The 
  426.74 +server does not distinguish between alarm types. */
  426.75 +const TAlarmCategory KASCliCategoryClock		= { 0x101F5030 };
  426.76 +
  426.77 +/** Defines whether an alarm is enabled or disabled: 
  426.78 +
  426.79 +An enabled alarm activates at a specified time. 
  426.80 +
  426.81 +A disabled alarm remains in the alarm server queue but is not active. 
  426.82 +
  426.83 +You can get or set an alarm's status using the RASCliSession class. */
  426.84 +enum TAlarmStatus
  426.85 +	{
  426.86 +	/** The alarm is currently enabled. */
  426.87 +	EAlarmStatusEnabled = 0,
  426.88 +
  426.89 +	/** The alarm is currently disabled, and will not expire. */
  426.90 +	EAlarmStatusDisabled,
  426.91 +	};
  426.92 +
  426.93 +/** Represents an alarm's state. Alarms can have only one state. */
  426.94 +enum TAlarmState
  426.95 +	{
  426.96 +	/** The alarm state is not currently known by the alarm server. */
  426.97 +	EAlarmStateInPreparation = -1,
  426.98 +
  426.99 +	/** The alarm is waiting for its expiry time to be reached. */
 426.100 +	EAlarmStateQueued = 0,
 426.101 +
 426.102 +	/** The alarm is snoozed. When the snooze period is over, the alarm expires again. */
 426.103 +	EAlarmStateSnoozed,
 426.104 +
 426.105 +	/** The alarm is waiting to be notified. 
 426.106 +	
 426.107 +	This state occurs when an alarm expires while another is being notified. When 
 426.108 +	this happens, the alarm being notified changes state to EAlarmStateWaitingToNotify. 
 426.109 +	This means that if it is set to be the next alarm to be notified, notification 
 426.110 +	will happen after the newly expired alarm has been notified and dismissed. */
 426.111 +	EAlarmStateWaitingToNotify,
 426.112 +
 426.113 +	/** The alarm is currently notifying. */
 426.114 +	EAlarmStateNotifying,
 426.115 +
 426.116 +	/** The alarm has already notified and has been dismissed. Any alarm which remains 
 426.117 +	in this state is dead. */
 426.118 +	EAlarmStateNotified
 426.119 +	};
 426.120 +
 426.121 +/** Defines an alarm session type as timed or untimed. This property is ignored by 
 426.122 +the alarm server, and is for use by the client only. */
 426.123 +enum TAlarmDayOrTimed
 426.124 +	{
 426.125 +	/** Timed alarm type (default). This alarm belongs to a timed event. This is an event 
 426.126 +	with a defined start and finish time. The alarm notification 
 426.127 +	time is specified as an offset from the event's start time, so that when the 
 426.128 +	event time changes, so does the alarm time. */
 426.129 +	EASShdAlarmTypeTimed = 0,
 426.130 +
 426.131 +	/** Day alarm type. This alarm belongs to untimed events; these do not have 
 426.132 +	a defined start and finish time, but have an activation time. */
 426.133 +	EASShdAlarmTypeDay
 426.134 +	};
 426.135 +
 426.136 +/** Defines the sound state of the global alarm server . */
 426.137 +enum TAlarmGlobalSoundState
 426.138 +	{
 426.139 +	/** When an alarm expires, the alarm sound is played. */
 426.140 +	EAlarmGlobalSoundStateOn = 0,
 426.141 +
 426.142 +	/** When an alarm expires, no sound plays. */
 426.143 +	EAlarmGlobalSoundStateOff
 426.144 +	};
 426.145 +
 426.146 +/** Defines how an alarm is to be repeated. */
 426.147 +enum TAlarmRepeatDefinition
 426.148 +	{
 426.149 +	/** The alarm expires only once, and is then deleted from the alarm server. By 
 426.150 +	default, all alarms behave this way. 
 426.151 +	
 426.152 +	Standard repeat-once alarms are date relative, that is, they occur on a fixed 
 426.153 +	date and point in time. 
 426.154 +	
 426.155 +	If the user changes the system date or time so that the new time is in the 
 426.156 +	future, and the new time is after the previously calculated expiry time:
 426.157 +	
 426.158 +	By less than 12 hours, the alarm expires immediately. 
 426.159 +	
 426.160 +	By more than 12 horus, the alarm is silently discarded. 
 426.161 +	
 426.162 +	If the user changes the system date or time so that the new time is before 
 426.163 +	the next calculated expiry time, the alarm type continues to be a
 426.164 +	"Repeat once" alarm*/
 426.165 +	EAlarmRepeatDefintionRepeatOnce	= 0,
 426.166 +
 426.167 +	/** When initially scheduling the alarm, the date is always within the 
 426.168 +	next 24 hours. For example:
 426.169 +	
 426.170 +	The current time is 15:00, and the alarm time specified is 14:00. The 
 426.171 +	alarm expires tomorrow at 14:00. 
 426.172 +	
 426.173 +	The current time is 15:00, and the alarm time specified is 16:00. The 
 426.174 +	alarm expires today at 16:00. 
 426.175 +	
 426.176 +	If the alarm is missed, i.e. because the alarm server is inactive, then 
 426.177 +	the alarm changes its type from "Repeat in the next 24 Hours" to "Repeat once".
 426.178 +	
 426.179 +	If the user changes the system date or time so that the new time is in the 
 426.180 +	future, and the new time is after the previously calculated expiry time:
 426.181 +	
 426.182 +	By less than 12 hours, the alarm expires immediately. 
 426.183 +	
 426.184 +	By more than 12 horus, the alarm is silently discarded. 
 426.185 +	
 426.186 +	If the user changes the system date or time so that the new time is 
 426.187 +	before the next calculated expiry time:
 426.188 +
 426.189 +	By less than 12 hours, no change in alarm type, and the alarm 
 426.190 +	remains queued.
 426.191 +
 426.192 +	By greater than 12 hours, the alarm changes its type from 
 426.193 +	"Repeat in the next 24 Hours" to "Repeat once".	Subsequent changes in system 
 426.194 +	time result in the behaviour described by the EAlarmRepeatDefintionRepeatOnce 
 426.195 +	characteristic. */
 426.196 +	EAlarmRepeatDefintionRepeatNext24Hours,
 426.197 +
 426.198 +	/** The alarm repeats every day at the same time. If the user changes the system 
 426.199 +	date or time, this alarm behaves in the same way as a "Repeat once" alarm, 
 426.200 +	except that the alarm is not deleted, but rescheduled for the next available 
 426.201 +	time. 
 426.202 +	
 426.203 +	If the user changes the system date or time to a point in the past, there 
 426.204 +	are no phantom alarm expiries. */
 426.205 +	EAlarmRepeatDefintionRepeatDaily,
 426.206 +
 426.207 +	/** The alarm repeats every work day at the same time. If the user changes the 
 426.208 +	system date or time, this alarm behaves in the same way as a "Repeat once" 
 426.209 +	alarm, except that the alarm is not deleted, but rescheduled for the next 
 426.210 +	available time. 
 426.211 +	
 426.212 +	If the user changes the system date or time to a point in the past, there 
 426.213 +	are no phantom alarm expiries. */
 426.214 +	EAlarmRepeatDefintionRepeatWorkday,
 426.215 +
 426.216 +	/** The alarm repeats every week, on the same day at the same time. If the user 
 426.217 +	changes the system date or time, this alarm behaves in the same way as a "Repeat 
 426.218 +	once" alarm, except that the alarm is not deleted, but rescheduled for the 
 426.219 +	next available time.
 426.220 +	
 426.221 +	If the user changes the system date or time to a point in the past, there 
 426.222 +	are no phantom alarm expiries. */
 426.223 +	EAlarmRepeatDefintionRepeatWeekly,
 426.224 +
 426.225 +	/** The alarm repeats every specified day at the same time. If the user
 426.226 +	changes the system date or time, this alarm behaves in the same way as a
 426.227 +	"repeat once" alarm, except that the alarm is not deleted, but rescheduled
 426.228 +	for the next available time.
 426.229 +	 
 426.230 +    If the user changes the system date or time to a point in the past, there
 426.231 +    are no phantom alarm expiries.*/ 
 426.232 +	EAlarmRepeatDefinitionRepeatDailyOnGivenDays
 426.233 +	};
 426.234 +
 426.235 +/** Defines various alarm characteristics. */
 426.236 +enum TAlarmCharacteristics
 426.237 +	{
 426.238 +	/** Sets an alarm to be session-only. This alarm only exists as long as a session 
 426.239 +	is maintained with the alarm server. Session alarms are removed from the alarm 
 426.240 +	queue when the originating session disconnects from the server. By default, 
 426.241 +	all alarms are persistent and remain so, even after the initiating session 
 426.242 +	has disconnected. */
 426.243 +	EAlarmCharacteristicsSessionSpecific = 0,
 426.244 +
 426.245 +	/** Do not display a screen. By default, all alarms result in a suitable screen 
 426.246 +	being displayed, depending on the device. Use this flag to disable this default 
 426.247 +	behaviour. */
 426.248 +	EAlarmCharacteristicsDoNotNotifyAlarmAlertServer = 1,
 426.249 +
 426.250 +	/** Sets an alarm to be floating - floating alarms expire at the current local time,
 426.251 +	regardless of the current locale or DST rules.*/
 426.252 +	EAlarmCharacteristicsIsFixed = 2,
 426.253 +	
 426.254 +	/** Do not notify if its due time is in the past.*/
 426.255 +	EAlarmCharacteristicsDeQueueIfDueTimeInPast = 3,
 426.256 +	//
 426.257 +	EAlarmCharacteristicsLast
 426.258 +	};
 426.259 +
 426.260 +/** This enumeration defines the events that can be reported by the alarm server. 
 426.261 +
 426.262 +These events are channelled to the client using the RASCliSession::NotifyChange() 
 426.263 +method. 
 426.264 +
 426.265 +@see TAlarmState */
 426.266 +enum TAlarmChangeEvent
 426.267 +	{
 426.268 +	/** An alarm has changed state. 
 426.269 +	
 426.270 +	@see TAlarmState */
 426.271 +	EAlarmChangeEventState = 1,
 426.272 +
 426.273 +	/** An alarm has changed status. 
 426.274 +	
 426.275 +	@see TAlarmStatus */
 426.276 +	EAlarmChangeEventStatus = 2,
 426.277 +
 426.278 +	/** An alarm has changed characteristics. 
 426.279 +	
 426.280 +	@see TAlarmCharacteristics */
 426.281 +	EAlarmChangeEventCharacteristics = 3,
 426.282 +
 426.283 +	/** An alarm has been deleted from the queue of alarms. */
 426.284 +	EAlarmChangeEventAlarmDeletion = 4,
 426.285 +
 426.286 +	/** An alarm has been added to the queue of alarms. */
 426.287 +	EAlarmChangeEventAlarmAddition = 5,
 426.288 +
 426.289 +	/** An alarm has expired. */
 426.290 +	EAlarmChangeEventTimerExpired = 6,
 426.291 +
 426.292 +	/** The sound for an alarm has just started playing. */
 426.293 +	EAlarmChangeEventSoundPlaying = 7,
 426.294 +
 426.295 +	/** The sound for an alarm has just stopped playing. */
 426.296 +	EAlarmChangeEventSoundStopped = 8,
 426.297 +
 426.298 +	/** The sound intervals associated with sound timing have changed. */
 426.299 +	EAlarmChangeEventPlayIntervalsChanged = 9,
 426.300 +
 426.301 +	/** The global sound state (on/off) has changed. */
 426.302 +	EAlarmChangeEventGlobalSoundStateChanged = 10,
 426.303 +
 426.304 +	/** The next alarm at the head of the alarm queue has changed. */
 426.305 +	EAlarmChangeEventHeadQueueItemChanged = 11,
 426.306 +
 426.307 +	/** The system date or time has changed, or the days defined as workdays have changed. */
 426.308 +	EAlarmChangeEventSystemDateTimeChanged = 12,
 426.309 +
 426.310 +	/** The alarm alert server has been instructed to show the 'alarm expired' display. */
 426.311 +	EAlarmChangeEventAlarmUIVisible = 13,
 426.312 +
 426.313 +	/** The alarm alert server has been instructed to hide the 'alarm expired' display. */
 426.314 +	EAlarmChangeEventAlarmUIInvisible = 14,
 426.315 +
 426.316 +	/** Alarm sounds have been temporarily silenced, the current alarm has been paused 
 426.317 +	or re-enabled. */
 426.318 +	EAlarmChangeEventSoundSilence = 15,
 426.319 +
 426.320 +	/** The data associated with an alarm has changed. */
 426.321 +	EAlarmChangeEventAlarmData = 16,
 426.322 +
 426.323 +	/** A restore from backup of the alarm server has started. Alarms cannot be added/deleted 
 426.324 +	until this has finished.  */
 426.325 +	EAlarmChangeEventRestoreStarted = 17,
 426.326 +
 426.327 +	/** A restore from backup of the alarm server has failed. Alarms can be added/deleted again. */
 426.328 +	EAlarmChangeEventRestoreFailed = 18,
 426.329 +
 426.330 +	/** A restore from backup of the alarm server has completed. The alarm queue has changed. */
 426.331 +	EAlarmChangeEventRestoreCompleted = 19,
 426.332 +
 426.333 +	/** Last change event (anchor). This is always at the end of the list. */
 426.334 +	EAlarmChangeEventLast,
 426.335 +	
 426.336 +	/** An undefined alarm event has occurred. */
 426.337 +	EAlarmChangeEventUndefined = 0
 426.338 +	};
 426.339 +
 426.340 +/** Identifies server-initiated panics relating to the client session. */
 426.341 +enum TAlarmServerInitiatedClientPanic
 426.342 +	{
 426.343 +	/** This panic occurs when the client requests a copy of any data attached to an 
 426.344 +	alarm, but does not supply enough buffer space to contain the data. */
 426.345 +	EAlarmServerInitiatedClientPanicInsufficientRoomForAlarmData = 0,
 426.346 +
 426.347 +	/** This panic usually occurs when a client method tries to write to a descriptor 
 426.348 +	(sometimes asynchronously), and the client-supplied descriptor is not valid. */
 426.349 +	EAlarmServerInitiatedClientPanicBadDescriptor = 1,
 426.350 +
 426.351 +	/** This panic occurs when a client already has an outstanding notification request, 
 426.352 +	but attempts to request another. */
 426.353 +	EAlarmServerInitiatedClientPanicChangeNotificationAlreadyOutstanding = 2,
 426.354 +
 426.355 +	/** This panic occurs when a client tries to perform an invalid operation. */
 426.356 +	EAlarmServerInitiatedClientPanicInvalidOperation = 3,
 426.357 +
 426.358 +	/** This panic occurs when a request to add an alarm contains a null alarm identiifer. 
 426.359 +	In the case of alarms with notifications, the client should pre-allocate the 
 426.360 +	alarm identifier before requesting the notification. */
 426.361 +	EAlarmServerInitiatedClientPanicBadPreAllocatedAlarmId = 4
 426.362 +
 426.363 +	};
 426.364 +
 426.365 +/** Identifies what kind of alarms the client wants to delete. */
 426.366 +enum TDeleteTypeEnum
 426.367 +	{
 426.368 +	/** All type of alarms. */
 426.369 +	EAllAlarms = 0,
 426.370 +	/** Alarms future of the current time */
 426.371 +	EFuture = 1,
 426.372 +	/** Alarms in the past of the current time but notifying, or waiting to notify, or snoozed by, the user  */
 426.373 +	EActive = 2,
 426.374 +	/** alarms that has been dismissed by the user  */
 426.375 +	EExpired = 4
 426.376 +	};
 426.377 +
 426.378 +/**
 426.379 +This enumeration indicates which days of the week an alarm with a repeat
 426.380 +definition of EAlarmRepeatDefinitionRepeatDailyOnGivenDays activates on.  Days
 426.381 +are combined using the bitwise OR operator.
 426.382 +
 426.383 +@prototype
 426.384 +*/
 426.385 +enum TAlarmDays
 426.386 +    {
 426.387 +    /** Alarm is active on Monday. */
 426.388 +    EAlarmDayMonday    = 0x01,
 426.389 +    /** Alarm is active on Tuesday. */
 426.390 +    EAlarmDayTuesday   = 0x02,
 426.391 +    /** Alarm is active on Wednesday. */
 426.392 +    EAlarmDayWednesday = 0x04,
 426.393 +    /** Alarm is active on Thursday. */
 426.394 +    EAlarmDayThursday  = 0x08,
 426.395 +    /** Alarm is active on Friday. */
 426.396 +    EAlarmDayFriday    = 0x10,
 426.397 +    /** Alarm is active on Saturday. */
 426.398 +    EAlarmDaySaturday  = 0x20,
 426.399 +    /** Alarm is active on Sunday. */
 426.400 +    EAlarmDaySunday    = 0x40
 426.401 +    };
 426.402 +
 426.403 +/** Identifies the type of alarm which was missed.  A UTC offset change will only
 426.404 +affect floating alarms whereas a system time change may affect either floating
 426.405 +or fixed alarms.
 426.406 +@see TASShdAlarmedInstanceParams
 426.407 +@see CASSrvAlarmQueue::MEnvChangeHandleEvent
 426.408 +*/
 426.409 +enum TASShdAlarmTimeType
 426.410 +	{
 426.411 +	/** Floating time alarm. */
 426.412 +	EFloating,
 426.413 +	/** Floating or fixed time alarm. */
 426.414 +	EFloatingOrFixed
 426.415 +	};
 426.416 +
 426.417 +#endif
   427.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   427.2 +++ b/epoc32/include/mw/attrlut.h	Wed Mar 31 12:27:01 2010 +0100
   427.3 @@ -0,0 +1,79 @@
   427.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   427.5 +// All rights reserved.
   427.6 +// This component and the accompanying materials are made available
   427.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   427.8 +// which accompanies this distribution, and is available
   427.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  427.10 +//
  427.11 +// Initial Contributors:
  427.12 +// Nokia Corporation - initial contribution.
  427.13 +//
  427.14 +// Contributors:
  427.15 +//
  427.16 +// Description:
  427.17 +// Attribute Look-Up-Table header
  427.18 +// The Attribute Lookup Table maintains a global set of unique IDs to be defined for document
  427.19 +// node attributes and language tags. It does this by generating a unique ID for any descriptor
  427.20 +// passed to it. This descriptor is in fact a pointer to a copy of the string. Once a string
  427.21 +// has been seen once, any further references to it will map back to the same ID (pointer)
  427.22 +// value.
  427.23 +// 
  427.24 +//
  427.25 +
  427.26 +#if !defined(__CWAPENGINE_LUT_H__)
  427.27 +#define __CWAPENGINE_LUT_H__
  427.28 +
  427.29 +#include <e32base.h>
  427.30 +
  427.31 +class RTest;
  427.32 +class CAttributeLookupTableNode;
  427.33 +
  427.34 +//##ModelId=3B666BC70189
  427.35 +
  427.36 +class CAttributeLookupTable : public CBase
  427.37 +/** Provides an attribute lookup table, which maintains a global set of unique IDs to be defined 
  427.38 +	for document node attributes and language tags. 
  427.39 +
  427.40 +	It does this by generating a unique (in the scope of the lookup table object) ID for any string 
  427.41 +	passed to it. Once a string has been seen once, any further references to it will map back to the 
  427.42 +	same ID value. 
  427.43 +
  427.44 +	@publishedAll
  427.45 +	@released
  427.46 +*/
  427.47 +{
  427.48 +public:
  427.49 +	//##ModelId=3B666BC701E3
  427.50 +	IMPORT_C ~CAttributeLookupTable();
  427.51 +	//##ModelId=3B666BC701DC
  427.52 +	IMPORT_C static CAttributeLookupTable* CAttributeLookupTable::NewL();
  427.53 +	//##ModelId=3B666BC701DA
  427.54 +	IMPORT_C const HBufC* Des2IDL( const TDesC& ); // map descriptor to ID
  427.55 +	//##ModelId=3B666BC701D3
  427.56 +	IMPORT_C const HBufC* KeyExists( const TDesC& ); // check to see if the given descriptor already exists
  427.57 +	//##ModelId=3B666BC701D2
  427.58 +	IMPORT_C void Reset(); // clear the table
  427.59 +
  427.60 +	// debug hook
  427.61 +	typedef enum{
  427.62 +		EPrint,
  427.63 +		EPrintWholeTable
  427.64 +	} TDebugSelectorType;
  427.65 +	//##ModelId=3B666BC701C6
  427.66 +	IMPORT_C void Debug( TDebugSelectorType aSelector, TAny* aParam1, TAny* aParam2 );
  427.67 +
  427.68 +private:
  427.69 +	//##ModelId=3B666BC701C5
  427.70 +	CAttributeLookupTable();
  427.71 +	//##ModelId=3B666BC701BF
  427.72 +	void ConstructL();
  427.73 +	//##ModelId=3B666BC701BD
  427.74 +	CAttributeLookupTableNode* FindDes( const TDesC& );
  427.75 +	//##ModelId=3B666BC701BB
  427.76 +	TUint Hash( const TDesC& );
  427.77 +	//##ModelId=3B666BC701A9
  427.78 +	CArrayPtrFlat<CArrayPtrSeg<CAttributeLookupTableNode> >* iList;
  427.79 +};
  427.80 +
  427.81 +
  427.82 +#endif // __CWAPENGINE_LUT_H__
   428.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   428.2 +++ b/epoc32/include/mw/basicanimation.h	Wed Mar 31 12:27:01 2010 +0100
   428.3 @@ -0,0 +1,135 @@
   428.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   428.5 +// All rights reserved.
   428.6 +// This component and the accompanying materials are made available
   428.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   428.8 +// which accompanies this distribution, and is available
   428.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  428.10 +//
  428.11 +// Initial Contributors:
  428.12 +// Nokia Corporation - initial contribution.
  428.13 +//
  428.14 +// Contributors:
  428.15 +//
  428.16 +// Description:
  428.17 +//
  428.18 +
  428.19 +#ifndef __BASICANIMATION_H__
  428.20 +#define __BASICANIMATION_H__
  428.21 +
  428.22 +#include <animation.h>
  428.23 +#include <w32std.h>
  428.24 +
  428.25 +class RWsSession;
  428.26 +class RWindow;
  428.27 +class CWindowGc;
  428.28 +class CFbsBitmap;
  428.29 +class CFbsBitmapDevice;
  428.30 +class CFbsBitGc;
  428.31 +class CAnimationDataProvider;
  428.32 +class CAnimator;
  428.33 +class TAnimationConfig;
  428.34 +class CAnimationTls;
  428.35 +class CAnimationTicker;
  428.36 +class CBasicAnimationExt;
  428.37 +class CCoeControl;
  428.38 +
  428.39 +/**
  428.40 +Implementation of CAnimation for purely client side animations.
  428.41 +
  428.42 +A basic animation accepts a data provider during construction, loads the
  428.43 +appropriate animator plugin, and implements the interface defined in
  428.44 +CAnimation.
  428.45 +
  428.46 +A basic animation must be associated with an RWindow.  Redraw events will be
  428.47 +received by the client application whenever the animation needs to draw a new
  428.48 +frame, and it is the applications responsibility to call Draw() while handling
  428.49 +these events.  It is also the client applications responsibility to handle
  428.50 +visibility events and place the animation on hold when it isn't visible. This
  428.51 +saves on CPU usage and ultimately prolongs battery life.
  428.52 +
  428.53 +@see CAnimationDataProvider
  428.54 +@publishedAll
  428.55 +@released
  428.56 +*/
  428.57 +class CBasicAnimation : public CAnimation, public MAnimationDrawer, public MAnimationDataProviderObserver
  428.58 +	{
  428.59 +private:
  428.60 +	enum TFlags
  428.61 +		{
  428.62 +		EAnimationInitialised	=	0x0001,
  428.63 +		};
  428.64 +public:
  428.65 +	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWs, RWindow& aWindow, MAnimationObserver* aObserver = 0);
  428.66 +	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWs, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver = 0);
  428.67 +	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver, const CCoeControl* aHost);
  428.68 +	IMPORT_C static CBasicAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, const TDesC8& aDataType, MAnimationObserver* aObserver, const CCoeControl* aHost);
  428.69 +	IMPORT_C ~CBasicAnimation();
  428.70 +	
  428.71 +	IMPORT_C void Draw(CWindowGc& aGc) const;
  428.72 +	
  428.73 +	/** Provides an CAnimationDataProvider interface to the client application.
  428.74 +	@return iDataProvider A CAnimationDataProvider */
  428.75 +	inline CAnimationDataProvider* DataProvider() { return iDataProvider; }
  428.76 +
  428.77 +	/** Returns the current drawing position.
  428.78 +	@return ipoint const Tpoint& */
  428.79 +	inline const TPoint& Position() const { return iPoint; }
  428.80 +	
  428.81 +	/** Gets the size of the smallest bounding rectangle that will be required to render the animation.
  428.82 +
  428.83 +	This function is called when the animator is ready to begin animating. The animator cannot be started 
  428.84 +	until it has called this function.  
  428.85 +	@return iSize The size of the smallest bounding rectangle */
  428.86 +	inline const TSize& Size() const { return iSize; }
  428.87 +	// From CAnimation:
  428.88 +	virtual void Start(const TAnimationConfig& aConfig);
  428.89 +	virtual void Stop();
  428.90 +	virtual void Pause();
  428.91 +	virtual void Resume();
  428.92 +	virtual void Hold();
  428.93 +	virtual void Unhold();
  428.94 +	virtual void SetPosition(const TPoint& aPoint);
  428.95 +	virtual void Freeze();
  428.96 +	virtual void Unfreeze();
  428.97 +public:
  428.98 +	IMPORT_C void SetHostL(const CCoeControl* aHost);
  428.99 +protected:
 428.100 +	CBasicAnimation(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession* aWs, RWindow* aWindow, MAnimationObserver* aObserver);
 428.101 +	CBasicAnimation();
 428.102 +	CBasicAnimation(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver);
 428.103 +	void ConstructL(const TDesC8& aDataType);
 428.104 +	IMPORT_C virtual void CBasicAnimation_Reserved1();
 428.105 +	IMPORT_C virtual void CBasicAnimation_Reserved2();
 428.106 +	void ConstructL(const TDesC8& aDataType,const CCoeControl* aHost);
 428.107 +private:
 428.108 +	CBasicAnimation(const CBasicAnimation&); // no implementation
 428.109 +	CBasicAnimation& operator=(const CBasicAnimation&);		 // no implementation
 428.110 +	// from MAnimationDataProviderObserver
 428.111 +	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize);
 428.112 +	// From MAnimatorDrawer
 428.113 +	virtual void AnimatorDraw();
 428.114 +	virtual void AnimatorInitialisedL(const TSize& aSize);
 428.115 +	virtual void AnimatorResetL();
 428.116 +	virtual const TPtrC8 AnimatorDataType() const;
 428.117 +	virtual CAnimationTicker& AnimatorTicker();
 428.118 +private:
 428.119 +	CBasicAnimationExt* iBasicAnimationExt;
 428.120 +	MAnimationObserver* iObserver;
 428.121 +	CAnimationDataProvider* iDataProvider;
 428.122 +	CAnimationTls* iTls;
 428.123 +	TPoint iPoint;
 428.124 +	RWsSession* iWs;
 428.125 +	RWindow* iWindow;
 428.126 +	HBufC8* iDataType;
 428.127 +	TInt iFreezeCount;
 428.128 +	TInt iFlags;
 428.129 +	TSize iSize;	
 428.130 +	CAnimator* iAnimator;
 428.131 +	CFbsBitmap* iBitmap;
 428.132 +	CFbsBitmap* iMask;
 428.133 +	CFbsBitmapDevice* iBitmapDevice;
 428.134 +	CFbsBitmapDevice* iMaskDevice;
 428.135 +	CFbsBitGc* iRenderGc;
 428.136 +	};
 428.137 +
 428.138 +#endif
   429.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   429.2 +++ b/epoc32/include/mw/bif.h	Wed Mar 31 12:27:01 2010 +0100
   429.3 @@ -0,0 +1,171 @@
   429.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   429.5 +// All rights reserved.
   429.6 +// This component and the accompanying materials are made available
   429.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   429.8 +// which accompanies this distribution, and is available
   429.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  429.10 +//
  429.11 +// Initial Contributors:
  429.12 +// Nokia Corporation - initial contribution.
  429.13 +//
  429.14 +// Contributors:
  429.15 +//
  429.16 +// Description:
  429.17 +//
  429.18 +
  429.19 +#ifndef __BIF_H__
  429.20 +#define __BIF_H__
  429.21 +
  429.22 +#include <apmrec.h>
  429.23 +
  429.24 +class CBifEntry;
  429.25 +
  429.26 +//
  429.27 +// Constants
  429.28 +/** 2nd UID of BIF file stores. */
  429.29 +const TUid KUidBioInfoFile={0x10005233};		// unicode Uid, used as 2nd Uid of file store
  429.30 +/** Indicates that when opening the message no application should be launched. */
  429.31 +const TUid KUidBioUseNoApp={0x00000000};			
  429.32 +/** Indicates that when opened the message is to be viewed by the default application. */
  429.33 +const TUid KUidBioUseDefaultApp={0x100052b2};		
  429.34 +/** Maximum length of BIO_INFO_FILE description field. */
  429.35 +const TInt KMaxBioDescription=128;
  429.36 +/** Maximum length of ID text field. */
  429.37 +const TInt KMaxBioIdText=128;
  429.38 +/** Unused from v7.0.
  429.39 +
  429.40 +Previously, it specified the maximum length of a command line to BIFTOOL. */
  429.41 +const TInt KMaxBioCommandLine=256;
  429.42 +/** Maximum length of BIO_INFO_FILE file_extension field. */
  429.43 +const TInt KMaxBioFileExtension=10;
  429.44 +
  429.45 +//
  429.46 +// Data types
  429.47 +/** Buffer to hold a BIF ID identifier text field. */
  429.48 +typedef TBuf<KMaxBioIdText> TBioMsgIdText;
  429.49 +/** Unused from v7.0.
  429.50 +
  429.51 +Previously, it held a command line to BIFTOOL. */
  429.52 +typedef TBuf<KMaxBioCommandLine> TBioCommand;
  429.53 +
  429.54 +/** Identifies bearers for the BIF ID type field.
  429.55 +
  429.56 +It is the C++ equivalent of the resource enum ID_TYPE. */
  429.57 +enum TBioMsgIdType 
  429.58 +	{
  429.59 +	/** Unknown.
  429.60 +	
  429.61 +	Item will not be used in matching. */
  429.62 +	EBioMsgIdUnknown,
  429.63 +
  429.64 +	/** MIME type.
  429.65 +	
  429.66 +	Specifies that a bearer that transports MIME messages (e.g. e-mail) should 
  429.67 +	match the MIME type against the ID text field. */
  429.68 +	EBioMsgIdIana,
  429.69 +
  429.70 +	/** Narrow band (SMS).
  429.71 +	
  429.72 +	Specifies that the SMS bearer should match messages against the ID port field. */
  429.73 +	EBioMsgIdNbs,
  429.74 +
  429.75 +	/** WAP WDP.
  429.76 +	
  429.77 +	Specifies that the WAP bearer should match messages against the ID port field. */
  429.78 +	EBioMsgIdWap,
  429.79 +
  429.80 +	/** WAP secure WDP.
  429.81 +	
  429.82 +	Specifies that the WAP bearer should match messages against the ID port field. */
  429.83 +	EBioMsgIdWapSecure,
  429.84 +
  429.85 +	/** WAP WSP.
  429.86 +	
  429.87 +	Specifies that the WAP bearer should match messages against the ID port field. */
  429.88 +	EBioMsgIdWsp,
  429.89 +
  429.90 +	/** WAP secure WSP.
  429.91 +	
  429.92 +	Specifies that the WAP bearer should match messages against the ID port field. */
  429.93 +	EBioMsgIdWspSecure
  429.94 +	};
  429.95 +
  429.96 +/** Encapsulates an ID from a BIF (BIO_INFO_FILE). 
  429.97 +@internalTechnology
  429.98 +@released
  429.99 +*/
 429.100 +class TBioMsgId 
 429.101 +	{
 429.102 +public:
 429.103 +	/** Identifies the bearer that should use this resource to match messages. */
 429.104 +	TBioMsgIdType iType;
 429.105 +	/** Confidence level. */
 429.106 +	CApaDataRecognizerType::TRecognitionConfidence iConfidence;			// from APMREC.H
 429.107 +	/** Text field that can be used to match the message to this BIO type. */
 429.108 +	TBioMsgIdText iText;
 429.109 +	/** Receiving port number that can be used to match the message to this BIO type. */
 429.110 +	TUint16 iPort;
 429.111 +	/** Expected receiving character set of messages. */
 429.112 +	TUid iCharacterSet;
 429.113 +	/** This is available for 3rd party use for BIO message type identity specific 
 429.114 +	data. */
 429.115 +	TInt16 iGeneralIdData;
 429.116 +	};
 429.117 +	
 429.118 +// NOTE - this is included here cos the CBioInfoFile requires some of the enums 
 429.119 +// defined above.
 429.120 +#include "bifbase.h"			// for CBioInfoFile
 429.121 +
 429.122 +/** BIO information file (BIF) reader. 
 429.123 +
 429.124 +Allows reading (all but the icons) from an existing BIF file.
 429.125 +
 429.126 +@publishedAll
 429.127 +@released
 429.128 +*/
 429.129 +class CBioInfoFileReader : public CBioInfoFile
 429.130 +	{
 429.131 +public:
 429.132 +	//
 429.133 +	// Construction/destruction
 429.134 +	IMPORT_C static CBioInfoFileReader* NewLC(RFs& aFs,const TDesC& aFileName,TUid aMsgTypeUid=KNullUid);
 429.135 +	IMPORT_C static CBioInfoFileReader* NewL(RFs& aFs,const TDesC& aFileName,TUid aMsgTypeUid=KNullUid);
 429.136 +	IMPORT_C virtual ~CBioInfoFileReader();
 429.137 +
 429.138 +	//
 429.139 +	// Data getters
 429.140 +	IMPORT_C TUid MessageTypeUid() const;
 429.141 +	IMPORT_C const TPtrC MessageParserName() const;
 429.142 +	IMPORT_C TUid MessageAppUid() const;
 429.143 +	IMPORT_C TUid MessageAppCtrlUid() const;
 429.144 +	IMPORT_C const TPtrC MessageAppCtrlName() const;
 429.145 +	IMPORT_C TInt16 GeneralData1() const;
 429.146 +	IMPORT_C TInt16 GeneralData2() const;
 429.147 +	IMPORT_C TInt16 GeneralData3() const;
 429.148 +	IMPORT_C const TPtrC Description() const;			
 429.149 +	IMPORT_C const TPtrC FileExtension() const;			
 429.150 +
 429.151 +	IMPORT_C const TPtrC IconsFilename() const;			
 429.152 +	IMPORT_C const CArrayFixFlat<TInt16>* ZoomLevelsLC() const;
 429.153 +	IMPORT_C TInt ZoomLevelsCount() const;			
 429.154 +
 429.155 +	IMPORT_C const CArrayFixFlat<TBioMsgId>* IdsLC() const;
 429.156 +	
 429.157 +	IMPORT_C const CBifEntry& BifEntry() const;
 429.158 +
 429.159 +private:
 429.160 +	CBioInfoFileReader(RFs& aFs);
 429.161 +	void ConstructL(const TDesC& aFileName, TUid aMsgTypeUid);
 429.162 +
 429.163 +private:
 429.164 +	void InternalizeL(RReadStream& aStream);
 429.165 +	void LoadResourceL(TUid aMsgTypeUid);
 429.166 +	void LoadDataL(TUid aMsgTypeUid);
 429.167 +	TBool IsResFileL() const;
 429.168 +	TBool IsDatFile(const TUidType& aUidType) const;
 429.169 +    //
 429.170 +    HBufC*		iFileName;
 429.171 +    CBifEntry*	iEntry;
 429.172 +	};
 429.173 +
 429.174 +#endif // __BIF_H__
   430.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   430.2 +++ b/epoc32/include/mw/biodb.h	Wed Mar 31 12:27:01 2010 +0100
   430.3 @@ -0,0 +1,221 @@
   430.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   430.5 +// All rights reserved.
   430.6 +// This component and the accompanying materials are made available
   430.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   430.8 +// which accompanies this distribution, and is available
   430.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  430.10 +//
  430.11 +// Initial Contributors:
  430.12 +// Nokia Corporation - initial contribution.
  430.13 +//
  430.14 +// Contributors:
  430.15 +//
  430.16 +// Description:
  430.17 +//
  430.18 +
  430.19 +#ifndef __BIODB_H__
  430.20 +#define __BIODB_H__
  430.21 +
  430.22 +#include <bif.h>				// the bif reader
  430.23 +#include <f32file.h>
  430.24 +
  430.25 +class CBifEntry;
  430.26 +
  430.27 +/** UID of the BIODB.DLL. */
  430.28 +const TUid KUidBioDBDll ={0x10005542};	
  430.29 +
  430.30 +/** Buffer to hold BIF identification text. */
  430.31 +typedef TBuf<KMaxBioIdText> TBioMsgIdText;
  430.32 +
  430.33 +/** BIO information file (BIF) database.
  430.34 +
  430.35 +This class reads the installed BIF files and allows information from them 
  430.36 +to be easily extracted.
  430.37 +
  430.38 +@see BIO_INFO_FILE 
  430.39 +@publishedAll
  430.40 +@released
  430.41 +*/
  430.42 +class CBIODatabase : public CBase
  430.43 +	{
  430.44 +public:
  430.45 +	/** Search methods. */
  430.46 +	enum TSearchList
  430.47 +		{
  430.48 +		/** Begin search from the start. */
  430.49 +		EStart, 
  430.50 +		/** Begin search from the last index position. */
  430.51 +		ENext
  430.52 +		};
  430.53 +public:
  430.54 +	IMPORT_C static CBIODatabase* NewLC(RFs& afileSystem);
  430.55 +	IMPORT_C static CBIODatabase* NewL(RFs& afileSystem);
  430.56 +	IMPORT_C ~CBIODatabase();
  430.57 +
  430.58 +public:
  430.59 +	// BIF files contain all the information that needs to be registered
  430.60 +	// for each BIO Message type
  430.61 +
  430.62 +	// Completely refresh the database will all the BIF Files in the
  430.63 +	// default directory
  430.64 +	IMPORT_C void AddAllBifsL(RFs& afileSystem);
  430.65 +
  430.66 +	// Add one bifFile using the file name, then using Neil's handy 
  430.67 +	// class to read it
  430.68 +	// This will add the Parser
  430.69 +	IMPORT_C void AddBifL(CBioInfoFileReader* aBifReader);
  430.70 +	IMPORT_C void RemoveBifL(TUid aMsgID);
  430.71 +	IMPORT_C void RemoveBifL(TInt aIndex);
  430.72 +
  430.73 +	// BIO Messages are determined to of a BIO type if we have the BIO
  430.74 +	// Parser identified by a WAP/NBS port, IANA MIME type or a Pattern
  430.75 +	IMPORT_C TInt BIOCount();
  430.76 +
  430.77 +	// Get the BioEntry at this index
  430.78 +	// Return Index if found, NULL if not
  430.79 +	IMPORT_C const CArrayFix<TBioMsgId>* BIOEntryLC(TInt index);
  430.80 +	
  430.81 +
  430.82 +	// Get the whole bif file class
  430.83 +	IMPORT_C const CBioInfoFileReader& BifReader(TInt aIndex) const;
  430.84 +     
  430.85 +	// Get the BIO Entry based on what type it is, pos indicates where to start looking 
  430.86 +	// after, and will get updated to current pos
  430.87 +	IMPORT_C const CArrayFix<TBioMsgId>* BioEntryByTypeLC(
  430.88 +								TSearchList aSearchType,
  430.89 +								TBioMsgIdType portType, 
  430.90 +								TInt& rIndex);
  430.91 +
  430.92 +	IMPORT_C void GetBioIndexWithMsgIDL(TUid aMsgID, TInt& rIndex);
  430.93 +
  430.94 +	// Get the BioMessageID for the Index
  430.95 +	IMPORT_C void GetBioMsgID(TInt aIndex, TUid& rMsgID);
  430.96 +
  430.97 +	// Get the BioParserName for the Index
  430.98 +	IMPORT_C const TPtrC GetBioParserName(TInt aIndex);
  430.99 +	
 430.100 +	// Get the BioParserName for the BioMessageID
 430.101 +	IMPORT_C const TPtrC GetBioParserNameL(TUid aMsgID);
 430.102 +	
 430.103 +	// Get the ControlID for the Index
 430.104 +	IMPORT_C void GetBioControlID(TInt aIndex, TUid& rControlID);
 430.105 +	
 430.106 +	// Get the ControlID for the BioMessageID
 430.107 +	IMPORT_C void GetBioControlIDL(TUid aMsgID, TUid& rControlID);
 430.108 +	
 430.109 +	IMPORT_C const TPtrC GetBioControlName(TInt aIndex);
 430.110 +	IMPORT_C const TPtrC GetBioControlNameL(TUid aMsgID);
 430.111 +	
 430.112 +	// Get the String Extension for the BioMessageID
 430.113 +	IMPORT_C const TPtrC GetFileExtL(TUid aMsgID);
 430.114 +
 430.115 +	IMPORT_C void GetDefaultSendBearerL(TUid aBioUID, TBioMsgId& rBioMsgIdentifier);
 430.116 +	IMPORT_C void GetDefaultSendBearerTypeL(TUid aBioUID, TBioMsgIdType& rPortType);
 430.117 +	IMPORT_C void GetDefaultSendBearerByTypeL(TUid aBioUID, TBioMsgIdType aPortType, TBioMsgId& rBioMsgIdentifier);
 430.118 +
 430.119 +	// BIO Messages are determined to of a BIO type if we have the BIO
 430.120 +	// Parser identified by a WAP/NBS port, IANA MIME type or a Pattern
 430.121 +	// Return an Index
 430.122 +
 430.123 +	// Get the Port# or Identifying string for sending
 430.124 +	IMPORT_C void GetPortNumberL(TUid aMsgID, TBioMsgIdType aPortType, TInt& aPortNumber);
 430.125 +	IMPORT_C void GetIdentifierTextL(TUid aMsgID, TBioMsgIdType aPortType, TBioMsgIdText& aText);
 430.126 +
 430.127 +	// Test to see if this is a BioMessage
 430.128 +	// Pass in the type ... if its NBS or IANA pass in the string pattern
 430.129 +	//						if its WAP or SecureWap, pass in the port number
 430.130 +	// return kErrNone if success, kErrNotFound if it fails
 430.131 +	IMPORT_C TInt IsBioMessageL(TBioMsgIdType aPortType, const TDesC& aPattern, TUint16 aPort, TUid& rBioMsgUID);
 430.132 +
 430.133 +	IMPORT_C TInt IsBioMessageL(TBioMsgId bioMessageData, TUid& rBioMsgUID);
 430.134 +
 430.135 +private:
 430.136 +	CBIODatabase();
 430.137 +	void ConstructL(RFs& afileSystem);
 430.138 +
 430.139 +private:
 430.140 +	//Utilities
 430.141 +	void GetTransportIDL(TInt aIndex, TBioMsgIdType aPortType, TBioMsgId& aBioMsgID);
 430.142 +	TBool IsLanguageFileL(const TDesC& aFileName, TInt& aExtLength) const;
 430.143 +	// If Persistence is required...
 430.144 +	// void InternalizeL(RReadStream& aStream);		
 430.145 +	// void ExternalizeL(RWriteStream& aStream) const;	
 430.146 +	
 430.147 +private:
 430.148 +	CArrayPtrFlat<CBioInfoFileReader>* iBifReaders;
 430.149 +
 430.150 +};
 430.151 +
 430.152 +/** Callback interface implemented by classes to receive notifications of BIF files 
 430.153 +changes from CBifChangeObserver. 
 430.154 +
 430.155 +@publishedPartner
 430.156 +@released
 430.157 +*/
 430.158 +class MBifChangeObserver 
 430.159 +	{
 430.160 +public:
 430.161 +	/** BIF change events. */
 430.162 +	enum TBifChangeEvent
 430.163 +		{
 430.164 +		/** Unknown change. */
 430.165 +		EBifChangeUnknown = 0,
 430.166 +		/** BIF added. */
 430.167 +		EBifAdded,
 430.168 +		/** BIF deleted. */
 430.169 +		EBifDeleted,
 430.170 +		/** BIF changed. */
 430.171 +		EBifChanged
 430.172 +		};
 430.173 +
 430.174 +public: 
 430.175 +	/** Called when a BIF change occurs.
 430.176 +	
 430.177 +	@param aEvent Change event type
 430.178 +	@param aBioID BIO message type of changed BIF */
 430.179 +	virtual void HandleBifChangeL(TBifChangeEvent aEvent, TUid aBioID)=0;
 430.180 +	};
 430.181 +
 430.182 +/** Active object that watches for changes made to the installed BIF files. 
 430.183 +
 430.184 +@publishedPartner
 430.185 +@released
 430.186 +*/
 430.187 +class CBifChangeObserver : public CActive
 430.188 +	{
 430.189 +public: 
 430.190 +	IMPORT_C static CBifChangeObserver* NewL(MBifChangeObserver& aObserver, RFs& aFs);
 430.191 +	IMPORT_C void Start();
 430.192 +	~CBifChangeObserver();
 430.193 +	
 430.194 +	static void CleanupBifArray(TAny* aBifArray);
 430.195 +
 430.196 +private:
 430.197 +	// from CActive
 430.198 +	virtual void RunL();
 430.199 +	virtual void DoCancel();
 430.200 +
 430.201 +private:
 430.202 +	CBifChangeObserver(MBifChangeObserver& aObserver, RFs& aFs);
 430.203 +	void ConstructL();
 430.204 +	
 430.205 +	void NotifyObserverL();
 430.206 +	void WaitForFileNotification();
 430.207 +	void DoRunL();
 430.208 +	void CopyEntriesL(const CDir& aDir, CArrayFixFlat<TEntry>& aEntries);
 430.209 +	TBool CompareReaders(const CBioInfoFileReader& aReader1, const CBioInfoFileReader& aReader2) const;
 430.210 +	
 430.211 +	TInt FindEntry(const CBifEntry& aBifEntry, const RPointerArray<CBifEntry>& aEntries, TInt& aIndex) const;
 430.212 +	
 430.213 +private:
 430.214 +	MBifChangeObserver&	iChangeObserver;
 430.215 +	RFs&			iFs;
 430.216 +
 430.217 +	RPointerArray<CBifEntry> iEntries;
 430.218 +
 430.219 +	CBIODatabase*	iBioDB;
 430.220 +	RTimer	iTimer;
 430.221 +	TInt iRetryCount;
 430.222 +	};
 430.223 +
 430.224 +#endif	// __BIODB_H__
   431.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   431.2 +++ b/epoc32/include/mw/biouids.h	Wed Mar 31 12:27:01 2010 +0100
   431.3 @@ -0,0 +1,132 @@
   431.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   431.5 +// All rights reserved.
   431.6 +// This component and the accompanying materials are made available
   431.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   431.8 +// which accompanies this distribution, and is available
   431.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  431.10 +//
  431.11 +// Initial Contributors:
  431.12 +// Nokia Corporation - initial contribution.
  431.13 +//
  431.14 +// Contributors:
  431.15 +//
  431.16 +// Description:
  431.17 +// BIOUUIDS.H
  431.18 +// Contains the TUid defines for the Bio Messaging 
  431.19 +// 
  431.20 +//
  431.21 +
  431.22 +
  431.23 +
  431.24 +/**
  431.25 + @file
  431.26 + @publishedAll
  431.27 + @released
  431.28 +*/
  431.29 +
  431.30 +#if !defined(__BIOUTILS_H__)
  431.31 +#define __BIOUTILS_H__
  431.32 +
  431.33 +//forward declarations
  431.34 +/**
  431.35 +* @publishedAll
  431.36 +* @released
  431.37 +*/
  431.38 +class TUid;
  431.39 +/**
  431.40 +*UID of the Smart Message Parser DLL.
  431.41 +* @publishedPartner
  431.42 +* @released
  431.43 +*/
  431.44 +const TUid KUidSmartMessageParserDll    = { 0x10001251};
  431.45 +/**
  431.46 +* BIO specific error/panic code base. 
  431.47 +* @publishedPartner
  431.48 +* @released
  431.49 +*/
  431.50 +const TInt KBIOMessageBaseError				= -505;
  431.51 +/**
  431.52 +* BIO message not found error. 
  431.53 +* @publishedPartner
  431.54 +* @released
  431.55 +*/
  431.56 +const TInt KBIOMessageNotFound				= KBIOMessageBaseError;
  431.57 +/**
  431.58 +* BIO server MTM already active error. 
  431.59 +* @publishedPartner
  431.60 +* @released
  431.61 +*/
  431.62 +const TInt KBIOMessageSvrMtmNotInactive		= KBIOMessageBaseError-1;
  431.63 +/**
  431.64 +* No BIO parser error. 
  431.65 +* @publishedPartner
  431.66 +* @released
  431.67 +*/
  431.68 +const TInt KBIOMessageNoParserCreated		= KBIOMessageBaseError-2;  
  431.69 +/** 
  431.70 +* BIO parser in use error. 
  431.71 +* @publishedPartner
  431.72 +* @released
  431.73 +*/
  431.74 +const TInt KBIOMessageParserDllStillInUse	= KBIOMessageBaseError-3;  
  431.75 +/**    
  431.76 +* BIO operation already active error. 
  431.77 +* @publishedPartner
  431.78 +* @released
  431.79 +*/
  431.80 +const TInt KBIOMessageOperationNotInactive	= KBIOMessageBaseError-4;
  431.81 +/**
  431.82 +* BIO server MTM operation not supported. 
  431.83 +* @publishedPartner
  431.84 +* @released
  431.85 +*/
  431.86 +const TInt KBIOMessageSvrNotSupported		= KBIOMessageBaseError-5;
  431.87 +/**
  431.88 +* Unused. 
  431.89 +* @internalComponent
  431.90 +* @removed
  431.91 +*/
  431.92 +const TUid KUidMsvNbsEditor={0x10001264};
  431.93 +
  431.94 +//  New BIO Messaging TUids
  431.95 +/**
  431.96 +* Stream ID used for storing parsed BIO data.
  431.97 +* @internalAll
  431.98 +* @released
  431.99 +*/
 431.100 +const TUid KUidMsvBIODataStream			= {0x10005268}; // stream used for storing parsed data
 431.101 +
 431.102 +//  BIO Mtm components
 431.103 +
 431.104 +/**
 431.105 +* BIO message type UID. 
 431.106 +* @publishedAll
 431.107 +* @released
 431.108 +*/
 431.109 +const TUid KUidBIOMessageTypeMtm		= {0x10001262};
 431.110 +/**
 431.111 +* BIO client MTM UID. 
 431.112 +* @internalTechnology
 431.113 +* @released
 431.114 +*/
 431.115 +const TUid KUidBIOMessageClientMtmDll	= {0x1000125A}; //previously NBSC, now BIOC
 431.116 +/**
 431.117 +* BIO server MTM UID. 
 431.118 +* @internalTechnology
 431.119 +* @released
 431.120 +*/
 431.121 +const TUid KUidBIOMessageServerMtmDll	= {0x1000125C}; //previously NBSS, now BIOS
 431.122 +/**
 431.123 +* BIO UI MTM UID. 
 431.124 +* @internalTechnology
 431.125 +* @released
 431.126 +*/
 431.127 +const TUid KUidBIOMessageUiLayerMtmDll	= {0x10001265}; //previously NBUM, now BIUM
 431.128 +/**
 431.129 +* BIO message viewer UID. 
 431.130 +* @internalTechnology
 431.131 +* @released
 431.132 +*/
 431.133 +const TUid KUidBIOMessageViewerApp		= {0x10001264}; //previously NBED,now BIED
 431.134 +
 431.135 +#endif *__BIOUTILS_H__
   432.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   432.2 +++ b/epoc32/include/mw/bmpancli.h	Wed Mar 31 12:27:01 2010 +0100
   432.3 @@ -0,0 +1,179 @@
   432.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   432.5 +// All rights reserved.
   432.6 +// This component and the accompanying materials are made available
   432.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   432.8 +// which accompanies this distribution, and is available
   432.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  432.10 +//
  432.11 +// Initial Contributors:
  432.12 +// Nokia Corporation - initial contribution.
  432.13 +//
  432.14 +// Contributors:
  432.15 +//
  432.16 +// Description:
  432.17 +//
  432.18 +
  432.19 +
  432.20 +#if !defined(__BMPANCLI_H__)
  432.21 +#define __BMPANCLI_H__
  432.22 +
  432.23 +#include <e32base.h>
  432.24 +#include <w32std.h>
  432.25 +#include <fbs.h>
  432.26 +
  432.27 +//
  432.28 +// CFrameData
  432.29 +//
  432.30 +
  432.31 +
  432.32 +/** 
  432.33 +Encapsulates the information required for one frame of an animation. 
  432.34 +
  432.35 +Each animation frame includes a bitmap that is displayed in a specified position 
  432.36 +for a specified length of time. You can optionally include a mask that either 
  432.37 +hides part of the bitmap, or makes part of the bitmap transparent so that the 
  432.38 +background can be seen.
  432.39 +
  432.40 +You will probably need to define several frames for a complete animation. 
  432.41 +When you have defined the frames you require, use CBitmapAnimClientData to 
  432.42 +construct the animation itself. 
  432.43 +
  432.44 +@publishedAll
  432.45 +@released 
  432.46 +*/
  432.47 +class CBitmapFrameData : public CBase
  432.48 +	{
  432.49 +public:
  432.50 +	IMPORT_C ~CBitmapFrameData();
  432.51 +	IMPORT_C static CBitmapFrameData* NewL();
  432.52 +	IMPORT_C static CBitmapFrameData* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask=NULL);
  432.53 +	IMPORT_C static CBitmapFrameData* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TInt aIntervalInMilliSeconds, TPoint aPosition);
  432.54 +//
  432.55 +	IMPORT_C void SetBitmap(CFbsBitmap* aBitmap);
  432.56 +	IMPORT_C void SetMask(CFbsBitmap* aMask);
  432.57 +	IMPORT_C void SetPosition(TPoint aPosition);
  432.58 +	IMPORT_C void SetInterval(TInt aIntervalInMilliSeconds);
  432.59 +	IMPORT_C void SetBitmapsOwnedExternally(TBool aOwnedExternally);
  432.60 +//
  432.61 +	IMPORT_C CFbsBitmap* Bitmap() const;
  432.62 +	IMPORT_C CFbsBitmap* Mask() const;
  432.63 +	IMPORT_C TInt IntervalInMilliSeconds() const;
  432.64 +	IMPORT_C TPoint Position() const;
  432.65 +	IMPORT_C TBool BitmapsOwnedExternally() const;
  432.66 +private:
  432.67 +	CBitmapFrameData();
  432.68 +private:
  432.69 +	CFbsBitmap* iBitmap;
  432.70 +	CFbsBitmap* iMaskBitmap;
  432.71 +	TBool iBitmapsOwnedExternally;
  432.72 +	TInt iIntervalInMilliSeconds;
  432.73 +	TPoint iPosition;
  432.74 +	};
  432.75 +
  432.76 +
  432.77 +//
  432.78 +// CBitmapAnimClientData
  432.79 +//
  432.80 +
  432.81 +
  432.82 +/** 
  432.83 +Encapsulates one or more animation frames into an entire animation.
  432.84 +
  432.85 +In addition to specifying the frames you wish to include in your animation, 
  432.86 +you can also specify:
  432.87 +
  432.88 +- whether the animation will flash
  432.89 +
  432.90 +- whether the animation is played once, or continuously
  432.91 +
  432.92 +- the background frame that is drawn to clear each frame in the animation
  432.93 +
  432.94 +You can also specify a default frame interval that is used for all frames 
  432.95 +in an animation. If the interval is already set for any of the individual 
  432.96 +frames, that takes precedence.
  432.97 +
  432.98 +When you have defined your animation, use RBitmapAnim to play the animation. 
  432.99 +
 432.100 +@publishedAll 
 432.101 +@released 
 432.102 +*/
 432.103 +class CBitmapAnimClientData : public CBase
 432.104 +	{
 432.105 +public:
 432.106 +	/** Animation play mode flags. 
 432.107 +
 432.108 +	The animation can be played in any of the ways described below. */
 432.109 +	enum TPlayMode
 432.110 +		{
 432.111 +		/** Plays the animation once, from the first frame to the last one. */
 432.112 +		EPlay		= 0x00,
 432.113 +		/** Plays the animation from the first frame to the last one continuously. */
 432.114 +		ECycle		= 0x01,
 432.115 +		/** Plays the animation from the first frame to the last one then from the last 
 432.116 +		frame to the first continuously. */
 432.117 +		EBounce		= 0x02
 432.118 +		};
 432.119 +public:
 432.120 +	IMPORT_C static CBitmapAnimClientData* NewL();
 432.121 +	IMPORT_C ~CBitmapAnimClientData();
 432.122 +//
 432.123 +	IMPORT_C void AppendFrameL(CBitmapFrameData* aFrame);
 432.124 +	IMPORT_C void ResetFrameArray();
 432.125 +	IMPORT_C void SetBackgroundFrame(CBitmapFrameData* aBackgroundFrame);
 432.126 +	IMPORT_C void SetFlash(TBool aFlash);
 432.127 +	IMPORT_C void SetFrameInterval(TInt aFrameIntervalInMilliSeconds);
 432.128 +	IMPORT_C void SetPlayMode(TPlayMode aPlayMode);
 432.129 +//
 432.130 +	IMPORT_C CBitmapFrameData* BackgroundFrame() const;
 432.131 +	IMPORT_C TBool Flash() const;
 432.132 +	IMPORT_C const CArrayPtrFlat<CBitmapFrameData>& FrameArray() const;
 432.133 +	IMPORT_C TInt FrameIntervalInMilliSeconds() const;
 432.134 +	IMPORT_C TPlayMode PlayMode() const;
 432.135 +//
 432.136 +	IMPORT_C TInt DurationInMilliSeconds() const;
 432.137 +	IMPORT_C TSize Size() const;
 432.138 +private:
 432.139 +	CBitmapAnimClientData();
 432.140 +private:
 432.141 +	TBool iFlash;
 432.142 +	TPlayMode iPlayMode;
 432.143 +	TInt iFrameIntervalInMilliSeconds;
 432.144 +	CArrayPtrFlat<CBitmapFrameData> iFrameArray;
 432.145 +	CBitmapFrameData* iBackgroundFrame;
 432.146 +	};
 432.147 +
 432.148 +
 432.149 +
 432.150 +/** 
 432.151 +Enables a client to package animation data, and send it to the window server 
 432.152 +for display.
 432.153 +
 432.154 +Before using RBitmapAnim, a client must instantiate an RAnimDll. This provides 
 432.155 +a reference to the window server DLL that runs the animation specified through 
 432.156 +the RBitmapAnim() object. To complete construction, call ConstructL(). 
 432.157 +
 432.158 +@publishedAll 
 432.159 +@released 
 432.160 +*/
 432.161 +class RBitmapAnim : public RAnim
 432.162 +	{
 432.163 +public:
 432.164 +	IMPORT_C RBitmapAnim(RAnimDll& aAnimDll);
 432.165 +	IMPORT_C void ConstructL(const RWindowBase& aWindow);
 432.166 +	IMPORT_C void DisplayFrameL(TInt aIndex);
 432.167 +	IMPORT_C void SetBitmapAnimDataL(const CBitmapAnimClientData& aBitmapAnimData);
 432.168 +	IMPORT_C void SetFlashL(TBool aFlash);
 432.169 +	IMPORT_C void SetFrameIntervalL(TInt aFrameIntervalInMilliSeconds);
 432.170 +	IMPORT_C void SetPlayModeL(CBitmapAnimClientData::TPlayMode aPlayMode);
 432.171 +	IMPORT_C void StartL();
 432.172 +	IMPORT_C void StopL();
 432.173 +	IMPORT_C void SetNumberOfCyclesL(TInt aNumberOfCycles);
 432.174 +	IMPORT_C void SetPositionL(TPoint aPosition);
 432.175 +private:
 432.176 +	void SetAttributesL(const CBitmapAnimClientData& aBitmapAnimData);
 432.177 +	void SetBackgroundFrameL(const CBitmapFrameData& aFrame);
 432.178 +	void SetFrameArrayL(const CArrayPtrFlat<CBitmapFrameData>& aFrameArray);
 432.179 +	void SetFrameL(const CBitmapFrameData& aFrame, TInt aOpCode);
 432.180 +	};
 432.181 +
 432.182 +#endif
   433.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   433.2 +++ b/epoc32/include/mw/bmpanconsts.h	Wed Mar 31 12:27:01 2010 +0100
   433.3 @@ -0,0 +1,42 @@
   433.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   433.5 +// All rights reserved.
   433.6 +// This component and the accompanying materials are made available
   433.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   433.8 +// which accompanies this distribution, and is available
   433.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  433.10 +//
  433.11 +// Initial Contributors:
  433.12 +// Nokia Corporation - initial contribution.
  433.13 +//
  433.14 +// Contributors:
  433.15 +//
  433.16 +// Description:
  433.17 +//
  433.18 +
  433.19 +
  433.20 +#if !defined(__BMPANCONSTS_H__)
  433.21 +#define __BMPANCONSTS_H__
  433.22 +
  433.23 +/**
  433.24 +TBitmapAnimCommand
  433.25 +
  433.26 +@internalComponent
  433.27 +*/
  433.28 +enum TBitmapAnimCommand
  433.29 +	{
  433.30 +	EBitmapAnimCommandSetBackgroundFrame,
  433.31 +	EBitmapAnimCommandSetDataFrame,
  433.32 +	EBitmapAnimCommandSetFlash,
  433.33 +	EBitmapAnimCommandSetFrameIndex,
  433.34 +	EBitmapAnimCommandSetFrameInterval,
  433.35 +	EBitmapAnimCommandSetNumberOfCycles,
  433.36 +	EBitmapAnimCommandSetPlayMode,
  433.37 +	EBitmapAnimCommandSetPosition,
  433.38 +	EBitmapAnimCommandStartAnimation,
  433.39 +	EBitmapAnimCommandStopAnimation,	
  433.40 +	EBitmapAnimCommandStartAnimationAndKeepLastFrame,
  433.41 +	EBitmapAnimCommandResetFrameArray,
  433.42 +	EBitmapAnimCommandClearDataFrames
  433.43 +	};
  433.44 +
  433.45 +#endif
   434.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   434.2 +++ b/epoc32/include/mw/bmpansrv.h	Wed Mar 31 12:27:01 2010 +0100
   434.3 @@ -0,0 +1,328 @@
   434.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   434.5 +// All rights reserved.
   434.6 +// This component and the accompanying materials are made available
   434.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   434.8 +// which accompanies this distribution, and is available
   434.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  434.10 +//
  434.11 +// Initial Contributors:
  434.12 +// Nokia Corporation - initial contribution.
  434.13 +//
  434.14 +// Contributors:
  434.15 +//
  434.16 +// Description:
  434.17 +//
  434.18 +
  434.19 +
  434.20 +
  434.21 +/**
  434.22 + @file
  434.23 + @internalComponent 
  434.24 +*/
  434.25 +
  434.26 +#if !defined(__BMPANSRV_H__)
  434.27 +#define __BMPANSRV_H__
  434.28 +
  434.29 +#include <e32std.h>
  434.30 +#include <w32adll.h>
  434.31 +#include <bmpanconsts.h>
  434.32 +#include "bmpancli.h"
  434.33 +#include <e32math.h>
  434.34 +
  434.35 +
  434.36 +
  434.37 +enum TBitmapAnimServerPanic
  434.38 +	{
  434.39 +	EAnimationServerPanicIndexOutOfRange,
  434.40 +	EAnimationServerPanicFrameIntervalNegative
  434.41 +	};
  434.42 +
  434.43 +// For packaging the new animation position offset
  434.44 +struct SBitmapAnimNewPosition
  434.45 +	{
  434.46 +	TPoint iPosition;
  434.47 +	};
  434.48 +
  434.49 +// For packaging the new animation index
  434.50 +struct SBitmapAnimIndexFrame
  434.51 +	{
  434.52 +	TInt iIndex;
  434.53 +	};
  434.54 +
  434.55 +// For packaging the number of cycles
  434.56 +struct SBitmapAnimNumberOfCycles
  434.57 +	{
  434.58 +	TInt iCycles;
  434.59 +	};
  434.60 +
  434.61 +
  434.62 +
  434.63 +/**
  434.64 + TFrameData
  434.65 +
  434.66 + This class is used for packaging the data of one frame.
  434.67 +*/
  434.68 +class TFrameData
  434.69 +	{
  434.70 +public:
  434.71 +	TInt iBitmapHandle;
  434.72 +	TInt iMaskBitmapHandle;
  434.73 +	TPoint iPosition;
  434.74 +	TInt iIntervalInMilliSeconds;			// the time is expressed in ms
  434.75 +	};
  434.76 +
  434.77 +
  434.78 +
  434.79 +/**
  434.80 + TBmpAnimAttributes
  434.81 +
  434.82 + This class is used for packaging the attriutes of the animation.
  434.83 +*/
  434.84 +class TBmpAnimAttributes
  434.85 +	{
  434.86 +public:
  434.87 +	TBool iFlash;
  434.88 +	TInt iFrameIntervalInMilliSeconds;
  434.89 +	CBitmapAnimClientData::TPlayMode iPlayMode;
  434.90 +	};
  434.91 +
  434.92 +
  434.93 +
  434.94 +
  434.95 +/**
  434.96 + class MBitmapAnimTimerObserver
  434.97 +*/
  434.98 +class MBitmapAnimTimerObserver
  434.99 +	{
 434.100 +public:
 434.101 +	virtual void DisplayNextFrameL()=0;
 434.102 +	};
 434.103 +
 434.104 +
 434.105 +
 434.106 +/**
 434.107 + class CBitmapAnimTimer
 434.108 +
 434.109 + This class is used to determine when to swap the current frame with the next one.
 434.110 +*/
 434.111 +class CBitmapAnimTimer : public CTimer
 434.112 +	{
 434.113 +public:
 434.114 +	~CBitmapAnimTimer();
 434.115 +	static CBitmapAnimTimer* NewL(MBitmapAnimTimerObserver* aObserver);
 434.116 +	void RunL();
 434.117 +private:
 434.118 +	CBitmapAnimTimer(MBitmapAnimTimerObserver* aObserver);
 434.119 +	void ConstructL();
 434.120 +private:
 434.121 +	MBitmapAnimTimerObserver* iAnimate;
 434.122 +	};
 434.123 +
 434.124 +
 434.125 +
 434.126 +/**
 434.127 + class MBitmapAnimFlashTimerObserver
 434.128 +*/
 434.129 +
 434.130 +class MBitmapAnimFlashTimerObserver
 434.131 +	{
 434.132 +public:
 434.133 +	virtual void FlashFrame(TBool aFlash)=0;
 434.134 +	};
 434.135 +
 434.136 +
 434.137 +
 434.138 +/**
 434.139 + class CBitmapAnimFlashTimer
 434.140 +*/
 434.141 +
 434.142 +class CBitmapAnimFlashTimer : public CTimer
 434.143 +	{
 434.144 +public:
 434.145 +	~CBitmapAnimFlashTimer();
 434.146 +	static CBitmapAnimFlashTimer* NewL(MBitmapAnimFlashTimerObserver* aObserver);
 434.147 +	void DoCancel();
 434.148 +	void RunL();
 434.149 +private:
 434.150 +	CBitmapAnimFlashTimer(MBitmapAnimFlashTimerObserver* aObserver);
 434.151 +	void ConstructL();
 434.152 +private:
 434.153 +	MBitmapAnimFlashTimerObserver* iAnimate;
 434.154 +	TBool iFlash;
 434.155 +	};
 434.156 +
 434.157 +
 434.158 +
 434.159 +/**
 434.160 + class CBitmapAnimFrameData
 434.161 +
 434.162 + This class encapsulates the information of one frame.
 434.163 +*/
 434.164 +
 434.165 +class CBitmapAnimFrameData : public CBase
 434.166 +	{
 434.167 +public:
 434.168 +	static CBitmapAnimFrameData* NewL();
 434.169 +	static CBitmapAnimFrameData* NewLC();
 434.170 +	~CBitmapAnimFrameData();
 434.171 +	void FillFrameDataL(const TFrameData& aFrameDataArg);
 434.172 +	void CheckAndCreateBitmapsL();
 434.173 +	
 434.174 +private:
 434.175 +	CBitmapAnimFrameData();
 434.176 +	void InitialiseMembers();
 434.177 +	
 434.178 +public:
 434.179 +	CFbsBitmap* iBitmap;
 434.180 +	CFbsBitmap* iMaskBitmap;
 434.181 +	TPoint iPosition;
 434.182 +	TTimeIntervalMicroSeconds32 iInterval;
 434.183 +	};
 434.184 +
 434.185 +
 434.186 +
 434.187 +/**
 434.188 + class CBitmapAnim
 434.189 +
 434.190 + This class encapsulates the enire animation: attributes and frames.
 434.191 +*/
 434.192 +
 434.193 +class CBitmapAnim : public CFreeTimerWindowAnim, MBitmapAnimTimerObserver//, MBitmapAnimFlashTimerObserver
 434.194 +	{
 434.195 +public:
 434.196 +	~CBitmapAnim();
 434.197 +	static CBitmapAnim* NewL();
 434.198 +private:
 434.199 +	CBitmapAnim();
 434.200 +private:
 434.201 +	enum TAnimateFlags
 434.202 +		{
 434.203 +//	State
 434.204 +		ERunning				= 0x0001,
 434.205 +		EFlashing				= 0x0002,
 434.206 +		EFrozen					= 0x0004,
 434.207 +//	Play mode
 434.208 +		EPlayModeCycle			= 0x0010,
 434.209 +		EPlayModeBounce			= 0x0020,
 434.210 +		EPlayForwards			= 0x0040,
 434.211 +		EPlayBackwards			= 0x0080,
 434.212 +//	General
 434.213 +		EFlash									= 0x0100,
 434.214 +		EBackgroundBitmapProvided				= 0x0200,
 434.215 +		EWindowContentsInitialized				= 0x0400,
 434.216 +		ENoBitmapWindowRestoring				= 0x0800,
 434.217 +		EChangedBackgroundFramePending			= 0x1000,
 434.218 +		EBackgroundShouldIncludeWindowContents	= 0x2000,
 434.219 +		EDisplayLastFrameWhenFinished			= 0x4000,
 434.220 +		EBackgroundMaskProvided					= 0x8000
 434.221 +		};
 434.222 +
 434.223 +private: //Pure Virtual function from CAnim
 434.224 +	virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
 434.225 +	virtual void Command(TInt aOpcode, TAny* aArgs);
 434.226 +	virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
 434.227 +	virtual void Animate(TDateTime* aDateTime);
 434.228 +	virtual void Redraw();
 434.229 +	virtual void FocusChanged(TBool aState);
 434.230 +private: //Pure Virtual function from MEventHandler
 434.231 +	virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
 434.232 +private: //Pure Virtual function from MBitmapAnimTimerObserver
 434.233 +	virtual void DisplayNextFrameL();
 434.234 +private: //Pure Virtual function from MBitmapAnimFlashTimerObserver
 434.235 +	virtual void FlashFrame(TBool aFlash);
 434.236 +private:
 434.237 +	void AppendFrameL(const TFrameData& aFrameData);
 434.238 +	inline TInt Count() const;
 434.239 +	void DisplayFrame(TInt aPreviousIndex=-1);
 434.240 +	void DrawBitmap(TInt aPreviousIndex=-1, TBool aRedraw=EFalse);
 434.241 +	inline TBool IsFrameDisplayable() const;
 434.242 +	inline TBool IsRunning() const;
 434.243 +	inline TBool IsFrozen() const;
 434.244 +	void ResetAnimation();
 434.245 +	void ClearFrame(TInt aIndex);
 434.246 +	void ClearFrameNow(TInt aIndex);
 434.247 +	void RenderFrameBackground(TInt aIndex);
 434.248 +	TRect CalcFrameRect(TInt aIndex);
 434.249 +	void SetBackgroundFrameL(TFrameData aFrameDataArg);
 434.250 +	void SetFlash(TBmpAnimAttributes aFlash);
 434.251 +	void SetFrameInterval(TBmpAnimAttributes aFrameInterval);
 434.252 +	TInt SetIndexFrame(SBitmapAnimIndexFrame aIndexFrame);
 434.253 +	void SetNumberOfCycles(SBitmapAnimNumberOfCycles aNumberOfCycles);
 434.254 +	void SetPlayMode(TBmpAnimAttributes aPlayMode);
 434.255 +	void SetPosition(SBitmapAnimNewPosition aNewPosition);
 434.256 +	void StartAnimationL();
 434.257 +	void StopAnimation();
 434.258 +	void StoreWindowContentsToBackgroundBitmapL(const TRegion* aRegion);
 434.259 +	void UpdateCurrentIndex();
 434.260 +	inline TRect WindowRect() const;
 434.261 +	CFbsBitmap* CreateRestoringBitmapL(TPoint& aPosition, TInt aPreviousIndex);
 434.262 +	void UpdateBackgroundBitmapIfNeeded(const TRegion* aRegion, TRect aBackgroundBitmapScreenRect);
 434.263 +	static TBool FrameNeedsRedrawing(const TRegion* aRedrawRegion, TRect aFrameScreenRect);
 434.264 +	void ResetFrameArray();
 434.265 +	void ClearFrameData();
 434.266 +	TBool CanDrawNextFrameWithoutErasingPreviousFrameL(TInt aPreviousIndex);
 434.267 +	TBool CompareBitmapsL(CFbsBitmap* aBmp1, CFbsBitmap* aBmp2);
 434.268 +	
 434.269 +private:
 434.270 +	RPointerArray<CBitmapAnimFrameData> iBitmapAnimFrameDataArray;
 434.271 +	CBitmapAnimTimer* iAnimTimer;
 434.272 +	CBitmapAnimFlashTimer* iFlashTimer;
 434.273 +	CBitmapAnimFrameData* iBackgroundFrame;
 434.274 +	CFbsBitmap*  iBackgroundBitmap;
 434.275 +	CFbsBitmapDevice* iBackgroundbitmapDevice;
 434.276 +	CFbsBitGc* iBackgroundbitmapGc;
 434.277 +
 434.278 +//
 434.279 +	TInt iDummy;
 434.280 +	TInt iFlags;
 434.281 +	TInt iIndex;
 434.282 +	TInt iNumberOfCycles;
 434.283 +	TPoint iPosition;
 434.284 +	TInt iWindowConfig;
 434.285 +	TTimeIntervalMicroSeconds32 iFrameInterval;
 434.286 +//
 434.287 +	CFbsBitGc* iRestoringGc;	
 434.288 +	};
 434.289 +
 434.290 +// Returns the number of frames store in the frame array.
 434.291 +inline TInt CBitmapAnim::Count() const
 434.292 +	{ return iBitmapAnimFrameDataArray.Count(); }
 434.293 +
 434.294 +// Returns ETrue every time the index frame is valid, otherwise it returns EFalse.
 434.295 +inline TBool CBitmapAnim::IsFrameDisplayable() const
 434.296 +	{ return ( (iIndex >= 0) && iBitmapAnimFrameDataArray[iIndex]->iBitmap ); }
 434.297 +
 434.298 +// Returns ETrue if the animation is running, otherwise it returns EFalse.
 434.299 +inline TBool CBitmapAnim::IsRunning() const
 434.300 +	{ return iFlags&ERunning; }
 434.301 +
 434.302 +//Returns ETrue if the animation is frozen (app is not in the foreground)
 434.303 +inline TBool CBitmapAnim::IsFrozen() const
 434.304 +{ return iFlags&EFrozen; }
 434.305 +
 434.306 +// Returns the available window rect.
 434.307 +inline TRect CBitmapAnim::WindowRect() const
 434.308 +	{ return TRect(TPoint(0, 0), iWindowFunctions->WindowSize()); }
 434.309 +
 434.310 +
 434.311 +
 434.312 +
 434.313 +/**
 434.314 + CBitmapAnimDll class
 434.315 +*/
 434.316 +
 434.317 +class CBitmapAnimDll : public CAnimDll
 434.318 +	{
 434.319 +public:
 434.320 +	CBitmapAnimDll();
 434.321 +	virtual CAnim* CreateInstanceL(TInt aType);
 434.322 +	};
 434.323 +
 434.324 +
 434.325 +/**
 434.326 + global functions
 434.327 +*/
 434.328 +GLREF_C void Panic(TBitmapAnimServerPanic aReason);
 434.329 +
 434.330 +
 434.331 +#endif
   435.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   435.2 +++ b/epoc32/include/mw/bsp.h	Wed Mar 31 12:27:01 2010 +0100
   435.3 @@ -0,0 +1,254 @@
   435.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   435.5 +// All rights reserved.
   435.6 +// This component and the accompanying materials are made available
   435.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   435.8 +// which accompanies this distribution, and is available
   435.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  435.10 +//
  435.11 +// Initial Contributors:
  435.12 +// Nokia Corporation - initial contribution.
  435.13 +//
  435.14 +// Contributors:
  435.15 +//
  435.16 +// Description:
  435.17 +// BSP.H (Base Script Parser)
  435.18 +// Abstract class for different Parsers.
  435.19 +// 
  435.20 +//
  435.21 +
  435.22 +
  435.23 +#if !defined(__BSP_H__)
  435.24 +#define __BSP_H__
  435.25 +
  435.26 +#if !defined(__MTCLREG_H__)
  435.27 +#include <mtclreg.h>
  435.28 +#endif
  435.29 +
  435.30 +#if !defined(__MTCLBASE_H__)
  435.31 +#include <mtclbase.h>
  435.32 +#endif
  435.33 +
  435.34 +#include <e32base.h>
  435.35 +#if !defined(__S32STRM_H__)
  435.36 +#include <s32strm.h>
  435.37 +#endif
  435.38 +
  435.39 +#include <msvstd.h>
  435.40 +// CRichText etc. includes
  435.41 +#include <txtrich.h>
  435.42 +#include <txtfmlyr.h>
  435.43 +
  435.44 +#include <bif.h>
  435.45 +
  435.46 +
  435.47 +
  435.48 +// Symbols:
  435.49 +/** Space character. */
  435.50 +#define KCharSpace          ' '
  435.51 +/** Tab character. */
  435.52 +#define KCharTab            '\t'
  435.53 +/** Line feed character. */
  435.54 +#define KCharLineFeed       '\n'
  435.55 +
  435.56 +
  435.57 +// Define some generic error codes:
  435.58 +/** BIO error code base. */
  435.59 +const TInt KBspBaseError					= (-500);
  435.60 +
  435.61 +/** Invalid BIO message error code. */
  435.62 +const TInt KBspInvalidMessage				= (KBspBaseError);
  435.63 +/** Invalid smart message token error code. */
  435.64 +const TInt KBspSmartMessageInvalidToken		= (KBspBaseError-1);
  435.65 +/** No smart message parser defined error code. */
  435.66 +const TInt KBspSmartMessageNoParserDefined	= (KBspBaseError-2);
  435.67 +
  435.68 +// Parsed field class for use by parsers.
  435.69 +class CParsedField : public CBase
  435.70 +/** Represents a single token-value pair for a given field in a BIO/smart message 
  435.71 +grammar. 
  435.72 +@publishedAll
  435.73 +@released
  435.74 +*/
  435.75 +{
  435.76 +public:
  435.77 +	IMPORT_C CParsedField();
  435.78 +	IMPORT_C ~CParsedField();
  435.79 +
  435.80 +	IMPORT_C TPtrC FieldName() const;
  435.81 +	IMPORT_C void SetFieldNameL( const TDesC& aFieldName);
  435.82 +	IMPORT_C TPtrC FieldValue() const;
  435.83 +	IMPORT_C void SetFieldValueL( const TDesC& aFieldValue);
  435.84 +	IMPORT_C TBool MandatoryField() const;
  435.85 +	IMPORT_C void SetMandatoryField(TBool aMandatoryField);
  435.86 +
  435.87 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  435.88 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  435.89 +private:
  435.90 +	void Reset();
  435.91 +private:
  435.92 +	HBufC* iFieldName;
  435.93 +	HBufC* iFieldValue;
  435.94 +	TBool  iMandatoryField;
  435.95 +};
  435.96 +
  435.97 +// Forward declarations:
  435.98 +class CMsvServerEntry;
  435.99 +class CMsvEntry;
 435.100 +class CRegisteredParserDll;
 435.101 +class RMsvReadStream;
 435.102 +class RMsvWriteStream;
 435.103 +class CMsvStore;
 435.104 +class CSmsMessage;
 435.105 +
 435.106 +
 435.107 +
 435.108 +/** Base class for BIO message parsers V2.
 435.109 +
 435.110 +Concrete derived classes are implemented in parser DLL's to parse particular 
 435.111 +types of BIO message.
 435.112 +
 435.113 +On receiving an appropriate command (see TBioOperation), the BIO server MTM 
 435.114 +loads the appropriate parser and passes the message body to it for interpretation. 
 435.115 +In fact, the parser interface expects the parser to divide its operation into 
 435.116 +two stages: 
 435.117 +
 435.118 +1. parsing: which involves extracting information from the raw message body and 
 435.119 +storing it in a structured format. The parsing stage can also alter the message 
 435.120 +body, and create files in the directory associated with the message (e.g. 
 435.121 +parsing a ring tones message will generate a ring tone file).
 435.122 +
 435.123 +2. processing: which involves using the extracted information to achieve the 
 435.124 +purpose of the BIO message (e.g. setting some phone configuration setttings).
 435.125 +
 435.126 +This separation allows, for example, a UI to display the parsed information 
 435.127 +to the user for confirmation, before it is acted upon. For some parsers, however, 
 435.128 +this two stage division is not sensible, in which case they implement only 
 435.129 +the first.
 435.130 +
 435.131 +The base class provides a pointer iSettings to reference the raw message data, 
 435.132 +and an array of token-value pairs, iParsedFieldArray, for storing parsed information 
 435.133 +(if this is appropriate). 
 435.134 +@publishedAll
 435.135 +@released
 435.136 +*/
 435.137 +class CBaseScriptParser2: public CActive
 435.138 +	{
 435.139 +public:
 435.140 +	IMPORT_C CBaseScriptParser2(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);
 435.141 +	IMPORT_C ~CBaseScriptParser2();
 435.142 +
 435.143 +	/** Called by the BIO server MTM to asynchronously parse message body data.
 435.144 +	
 435.145 +	When parsing is complete, the function should indicate this by setting the 
 435.146 +	message's index field iMtmData3 to 1.
 435.147 +	
 435.148 +	The function should leave if the buffer cannot be parsed successfully.
 435.149 +	
 435.150 +	@param aStatus Asynchronous status word
 435.151 +	@param aSms Buffer to parse */
 435.152 +	virtual void ParseL(TRequestStatus& aStatus, const TDesC& aSms)=0; //parses sms data into CParsedField
 435.153 +	/** Called by the BIO server MTM to asynchronously process the parsed data.
 435.154 +	
 435.155 +	The function takes appropriate parser-specific action on the results of a 
 435.156 +	previous call to ParseL().
 435.157 +	
 435.158 +	When processing is complete, the function should indicate this by setting 
 435.159 +	the message's index field iMtmData3 to 2.
 435.160 +	
 435.161 +	The function should leave if processing is not successful.
 435.162 +	
 435.163 +	@param aStatus Asynchronous status word */
 435.164 +	virtual void ProcessL(TRequestStatus& aStatus)=0; //stores parsed data into streams and data base
 435.165 +
 435.166 +	IMPORT_C TUid ParserUid();
 435.167 +	IMPORT_C void RestoreL(CMsvStore& aMessageStore);
 435.168 +	IMPORT_C void StoreL(CMsvStore& aMsvStore) const;
 435.169 +	IMPORT_C void RestoreL(const TFileName& aFileName);
 435.170 +	IMPORT_C void StoreL(const TFileName& aFileName) const;
 435.171 +	IMPORT_C void ResetL();
 435.172 +	
 435.173 +protected:
 435.174 +//	Parsing:
 435.175 +	IMPORT_C void UnfoldMessageL();
 435.176 +
 435.177 +//	Streaming operations:
 435.178 +	void InternalizeL(RMsvReadStream& aStream);
 435.179 +	void ExternalizeL(RMsvWriteStream& aStream) const;
 435.180 +
 435.181 +protected:
 435.182 +	/** Object that loaded the parser. It contains a reference counter of the use of 
 435.183 +	the parser. */
 435.184 +	CRegisteredParserDll&		iRegisteredParserDll;
 435.185 +	/** The message entry the parser should parse. */
 435.186 +	CMsvEntry&					iEntry;
 435.187 +	/** Connected file server handle. */
 435.188 +	RFs&						iFs;
 435.189 +
 435.190 +	/** Lexer intended for Smart Message use.
 435.191 +	
 435.192 +	This is not used by the base class. */
 435.193 +	TLex						iSms;
 435.194 +	/** Array of token-value pairs.
 435.195 +	
 435.196 +	Derived classes can use this for storing parsed information (if this is appropriate). */
 435.197 +	CArrayPtrSeg<CParsedField>* iParsedFieldArray;
 435.198 +
 435.199 +	/** Flag intended for Smart Message use.
 435.200 +	
 435.201 +	This is not used by the base class. */
 435.202 +	TBool						iSmsParsed;
 435.203 +	/** ID of iEntry. */
 435.204 +	TMsvId						iEntryId;
 435.205 +	
 435.206 +	/** Pointer to message data.
 435.207 +	
 435.208 +	This is not set by the base class. */
 435.209 +	HBufC*						iSettings;
 435.210 +	/** Pointer to SMS data (intended for Smart Message use).
 435.211 +	
 435.212 +	This is not set by the base class. */
 435.213 +    HBufC*						iSmsBuf;                // Local copy of buffer passed to ParseL()
 435.214 +	/** Temporary pointer used by RestoreL(). */
 435.215 +	HBufC8*						iReadBuffer;			// used to restore data from file
 435.216 +	};
 435.217 +
 435.218 + 
 435.219 +/** BIO data location flag values.
 435.220 +
 435.221 +@see TMsvBIOEntry */
 435.222 +enum TMsvBIODataLocation
 435.223 +	{
 435.224 +	/** Unknown. */
 435.225 +	EUnknown,
 435.226 +	/** Parser wrote data into the body text. */
 435.227 +	EBodyText,		// parser wrote data back into richText
 435.228 +	/** Parser wrote data into the parsed fields data stream. */
 435.229 +	EBIODataStream,	// parser wrote data into KUIDMsvBioStream
 435.230 +	/** Parser wrote data into an attachment file. */
 435.231 +	EFile			// parser wrote data into attachment file
 435.232 +	};
 435.233 +
 435.234 +
 435.235 +/** Bearer Independent Object entry.
 435.236 +Specialises the TMsvEntry message entry class to store additional BIO message-specific 
 435.237 +information. 
 435.238 +@internalTechnology
 435.239 +@released
 435.240 +*/
 435.241 +class TMsvBIOEntry : public TMsvEntry
 435.242 +	{
 435.243 +public:
 435.244 +	/** Constructor. */
 435.245 +	TMsvBIOEntry() : TMsvEntry() {};
 435.246 +	void SetBIOParserUid(const TUid aId);
 435.247 +	const TUid BIOParserUid() const;
 435.248 +	void SetLocationOfData(const TMsvBIODataLocation aLocation);
 435.249 +	const TMsvBIODataLocation LocationOfData() const;
 435.250 +
 435.251 +private:
 435.252 +	TMsvBIODataLocation	iLocationOfData;
 435.253 +	};
 435.254 +
 435.255 +#include <bsp.inl>
 435.256 +
 435.257 +#endif
   436.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   436.2 +++ b/epoc32/include/mw/cbioasyncwaiter.h	Wed Mar 31 12:27:01 2010 +0100
   436.3 @@ -0,0 +1,52 @@
   436.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   436.5 +// All rights reserved.
   436.6 +// This component and the accompanying materials are made available
   436.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   436.8 +// which accompanies this distribution, and is available
   436.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  436.10 +//
  436.11 +// Initial Contributors:
  436.12 +// Nokia Corporation - initial contribution.
  436.13 +//
  436.14 +// Contributors:
  436.15 +//
  436.16 +// Description:
  436.17 +//
  436.18 +
  436.19 +#ifndef __CBIOASYNCWAITER_H__
  436.20 +#define __CBIOASYNCWAITER_H__
  436.21 +
  436.22 +#include <e32base.h>
  436.23 +
  436.24 +/**
  436.25 +Utility class for waiting for asychronous requests.
  436.26 +
  436.27 +This class allows asynchronous requests to be made from synchronous
  436.28 +objects. This object is used by passing its iStatus to an asynchronous
  436.29 +request and then calling Start(). The result of the request can be 
  436.30 +obtained by calling the Result() method.
  436.31 +
  436.32 +@publishedAll
  436.33 +@released
  436.34 +*/
  436.35 +class CBioAsyncWaiter : public CActive
  436.36 +	{
  436.37 +public:
  436.38 +	IMPORT_C static CBioAsyncWaiter* NewLC();
  436.39 +	IMPORT_C ~CBioAsyncWaiter();
  436.40 +	
  436.41 +	IMPORT_C void StartAndWait();
  436.42 +	IMPORT_C TInt Result() const;
  436.43 +	
  436.44 +private:
  436.45 +	CBioAsyncWaiter();
  436.46 +	
  436.47 +	// from CActive
  436.48 +	virtual void RunL();
  436.49 +	virtual void DoCancel();
  436.50 +	
  436.51 +private:
  436.52 +	TInt iError;
  436.53 +	};
  436.54 +
  436.55 +#endif // __CBIOASYNCWAITER_H__
   437.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   437.2 +++ b/epoc32/include/mw/cbnfnode.h	Wed Mar 31 12:27:01 2010 +0100
   437.3 @@ -0,0 +1,63 @@
   437.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   437.5 +// All rights reserved.
   437.6 +// This component and the accompanying materials are made available
   437.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   437.8 +// which accompanies this distribution, and is available
   437.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  437.10 +//
  437.11 +// Initial Contributors:
  437.12 +// Nokia Corporation - initial contribution.
  437.13 +//
  437.14 +// Contributors:
  437.15 +//
  437.16 +// Description:
  437.17 +// BNF node header
  437.18 +// 
  437.19 +//
  437.20 +
  437.21 +#ifndef __CBNFNODE_H__
  437.22 +#define __CBNFNODE_H__
  437.23 +
  437.24 +#include <e32base.h>
  437.25 +#include <cnode.h>
  437.26 +
  437.27 +/** Declares that the "type" for node attributes is stored as a string. */
  437.28 +typedef const TDesC* CBNFNodeAttributeType;
  437.29 +
  437.30 +#define _SHAREDSTRING(X) IMPORT_C static CBNFNodeAttributeType K##X();
  437.31 +#define _SHAREDSTRINGBODY(X) EXPORT_C CBNFNodeAttributeType CBNFNode::K##X() \
  437.32 +    { \
  437.33 +    _LIT(K##X, #X); \
  437.34 +    return &(K##X); \
  437.35 +    }
  437.36 +
  437.37 +
  437.38 +class CBNFNode : public CTypedNode<TInt, const TDesC*> 
  437.39 +/** Backus-Naur Form (BNF) node that forms part of a BNF tree (CBNFParser).
  437.40 +
  437.41 +Node types are stored as TInts, and attribute types as descriptors.
  437.42 +@publishedAll
  437.43 +@released
  437.44 +*/
  437.45 +{
  437.46 +public:
  437.47 +	//##ModelId=3B666BC70146
  437.48 +	IMPORT_C ~CBNFNode();
  437.49 +
  437.50 +	//##ModelId=3B666BC70144
  437.51 +	IMPORT_C static CBNFNode* NewL(TInt aType);
  437.52 +
  437.53 +    _SHAREDSTRING(PreRuleCallback)
  437.54 +    _SHAREDSTRING(PostRuleCallback)
  437.55 +    _SHAREDSTRING(Reference)
  437.56 +    _SHAREDSTRING(RangeStart)
  437.57 +    _SHAREDSTRING(RangeEnd)
  437.58 +    _SHAREDSTRING(NMoreCount)
  437.59 +    _SHAREDSTRING(NMoreMinimum)
  437.60 +    _SHAREDSTRING(NMoreMaximum)
  437.61 +
  437.62 +protected:
  437.63 +    IMPORT_C CBNFNode(TInt aType);
  437.64 +};
  437.65 +
  437.66 +#endif // __CBNFNODE_H__
   438.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   438.2 +++ b/epoc32/include/mw/cbnfparser.h	Wed Mar 31 12:27:01 2010 +0100
   438.3 @@ -0,0 +1,557 @@
   438.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   438.5 +// All rights reserved.
   438.6 +// This component and the accompanying materials are made available
   438.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   438.8 +// which accompanies this distribution, and is available
   438.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  438.10 +//
  438.11 +// Initial Contributors:
  438.12 +// Nokia Corporation - initial contribution.
  438.13 +//
  438.14 +// Contributors:
  438.15 +//
  438.16 +// Description:
  438.17 +// This class provides a mechanism to use a BNF tree to parse an input stream.
  438.18 +// The notation of the EBNF is based upon that described in the XML1.0 specification.
  438.19 +// The BNF tree form used is a variation on Extended BNF and has the following rule types,
  438.20 +// where the input stream must:
  438.21 +// , Exact - match exactly with the provided string.
  438.22 +// , Range - next character must be in the specified range.
  438.23 +// , Select - next character must exist in the selected string.
  438.24 +// If the select string starts with ^ it is a NOT Select.
  438.25 +// , And - match all of the given sub rules
  438.26 +// , Or - match one of the given sub rules
  438.27 +// , NMore - match N or more times the the SINGLE subrule.
  438.28 +// , Optional - match 0/1 times to the SINGLE subrule.
  438.29 +// , Without - match the first subrule but NOT the second.
  438.30 +// , Reference - match the referred to rule.
  438.31 +// The iterative parser not only validates an input stream against the 
  438.32 +// BNF grammer but allows pre/post actions to be performed during the parsing.
  438.33 +// Partial parsing is also allowed in that the input stream does not have to
  438.34 +// completed before parsing can begin. As soon as data is added the parser
  438.35 +// attempts to parse it.
  438.36 +// Numerous methods are provided to assist in the building of the BNF Tree this parser uses.
  438.37 +// To use this class:
  438.38 +// Create a derivation and implement the virtual method TreeL() to creat a BNF rule tree
  438.39 +// (the assistance methods NewBNF/NewRule etc should be used) - see DTDModel 
  438.40 +// To use your new parser invoke Reset and pass input data using the ProcessData method.
  438.41 +// 
  438.42 +//
  438.43 +
  438.44 +#ifndef __CBNFPARSER_H__
  438.45 +#define __CBNFPARSER_H__
  438.46 +
  438.47 +#include <e32std.h>
  438.48 +#include <mdataproviderobserver.h>
  438.49 +#include <cstack.h>
  438.50 +#include <cfragmentedstring.h>
  438.51 +#include <cbnfnode.h>
  438.52 +
  438.53 +//
  438.54 +// forward class declarations
  438.55 +//
  438.56 +class CAttributeLookupTable;
  438.57 +
  438.58 +
  438.59 +// Rule Tree node type definitions
  438.60 +/** Defines types of node in a BNF tree (CBNFParser).
  438.61 +
  438.62 +Except for ERoot, EIncomplete, EReference, and ELastParserNodeType, the 
  438.63 +types define different types of rule that the input stream must meet to 
  438.64 +satisfy the grammar. */
  438.65 +enum TParserNodeTypes
  438.66 +	{
  438.67 +	/** Root node. */
  438.68 +	ERoot, 
  438.69 +	/** Incomplete node. */
  438.70 +	EIncomplete, 
  438.71 +	/** Exact rule: match exactly with the provided string. */
  438.72 +	EExact, 
  438.73 +	/** Range rule: next character must be in the specified range.
  438.74 +
  438.75 +	The start of the range is specified by a CBNFNode::KRangeStart() 
  438.76 +	attribute; the end by a CBNFNode::KRangeEnd() attribute. */
  438.77 +	ERange, 
  438.78 +	/** Select rule: next character must exist in the selected string.
  438.79 +
  438.80 +	If the select string starts with ^, it is a NOT Select. */
  438.81 +	ESelect, 
  438.82 +	/** And rule: match all of the given sub-rules.
  438.83 +
  438.84 +	Sub-rules are defined by the child nodes of the AND rule node. */
  438.85 +	EAnd, 
  438.86 +	/** Or rule: match one of the given sub-rules.
  438.87 +
  438.88 +	Sub-rules are defined by the child nodes of the OR rule node. */
  438.89 +	EOr, 
  438.90 +	/** NMore rule: match a single subrule N or more times.
  438.91 +
  438.92 +	A minimum is specified by a CBNFNode::KNMoreMinimum() attribute; a maximum by 
  438.93 +	a CBNFNode::KNMoreMaximum() attribute; an exact figure by a CBNFNode::KNMoreCount() attribute. */
  438.94 +	ENMore, 
  438.95 +	/** Optional rule: match a single sub-rule 0/1 times.
  438.96 +
  438.97 +	A sub-rule is defined by the child node of the Optional rule node. */
  438.98 +	EOptional, 
  438.99 +	/** Without rule: match the first sub-rule but not the second.
 438.100 +
 438.101 +	Sub-rules are defined by the child nodes of the Without rule node. */
 438.102 +	EWithout, 
 438.103 +	/** Reference rule: match the referred to rule.
 438.104 +
 438.105 +	The target rule name is identified by a CBNFNode::KReference() attribute. */
 438.106 +	EReference, 
 438.107 +	/** Indicates final node type. */
 438.108 +	ELastParserNodeType	
 438.109 +	};
 438.110 +
 438.111 +// Parser states
 438.112 +// 
 438.113 +// When a  the state is EActive. 
 438.114 +// Setting the parser state to something else in a pre-/post-rule callback function
 438.115 +// causes the parser to exit on next loop in ParseL. If the state is set to EStopped
 438.116 +// we have finished the parser operation (e.g. in event of an error), in state EPaused
 438.117 +// we are likely to resume the parser operation after some external operations.
 438.118 +/** CBNFParser parser states. */
 438.119 +enum TParseState
 438.120 +	{
 438.121 +	/** Parser has stopped. */
 438.122 +	EStopped, 
 438.123 +	/** Rarser is running. */
 438.124 +	EActive, 
 438.125 +	/** Parser has paused: e.g. waiting for further input to continue. */
 438.126 +	EPaused
 438.127 +	};
 438.128 +
 438.129 +
 438.130 +
 438.131 +class CBNFParser : public CBase, public MDataProviderObserver
 438.132 +/** Base class for parsers that use a BNF tree to parse an input stream.
 438.133 +
 438.134 +The BNF tree form used is a variation on Extended BNF described in the XML1.0 
 438.135 +specification. The general form of the tree is as follows:
 438.136 +
 438.137 +Each node in the tree defines a rule that the input stream must meet to satisfy the grammar.
 438.138 +
 438.139 +1. a node type is set to the rule type, as defined in TParserNodeTypes
 438.140 +
 438.141 +2. node data stores any string required by the rule: e.g. for a comparison rule, the string 
 438.142 +	to match against
 438.143 +
 438.144 +3. the parser allows callback functions to be called either before or after the rule is processed.
 438.145 +	 If these are present, they are stored as attributes of the node.
 438.146 +
 438.147 +4. some rules allow sub-rules: for example, the AND rule expects a number of sub-rules, all 
 438.148 +	of which must be successful if the AND rule itself is to succeed. Each sub-rule is 
 438.149 +	represented as a child node of the parent rule. Sub-rules in turn can have sub-rules.
 438.150 +
 438.151 +5. reference rule nodes are also allowed: these do not define themselves rules, but direct the 
 438.152 +	parser to another rule. They can link rules to each other and so build rule sequences more 
 438.153 +	complex than a simple tree.
 438.154 +
 438.155 +All the top-level rules are stored as attributes of the root node. The attribute type is a string
 438.156 + that names the rule; the attribute value is a pointer to the node that implements the rule.
 438.157 +
 438.158 +The class supplies functions that encapsulate adding rules appropriately to the tree. The parser 
 438.159 +provider creates a derived class that implements the virtual method TreeL() that uses these 
 438.160 +functions to create a BNF rule tree.
 438.161 +
 438.162 +The user of the parser initialises the parser with ResetL(), and then passes input data to the 
 438.163 +parser using ProcessData(). The parser supports partial parsing: the input stream does not have 
 438.164 +to completed before parsing can begin. As soon as data is added, the parser attempts to parse it.
 438.165 +
 438.166 +	@publishedAll
 438.167 +	@released
 438.168 +
 438.169 +*/
 438.170 +	{
 438.171 +protected:
 438.172 +	/** Defines a type to handle a stack of rules. */
 438.173 +	typedef CStack<CBNFNode, EFalse> CRuleStack;
 438.174 +
 438.175 +	/** Type definition for a callback function pointer
 438.176 +		Callback functions need to get a reference to the parser as parameter
 438.177 +		and they need to be static. */
 438.178 +	typedef void (TRuleCallback)(CBNFParser&);
 438.179 +
 438.180 +public:
 438.181 +	// Constructor for a new parser instance
 438.182 +	//
 438.183 +	// Input:
 438.184 +	// aLUT - reference to attribute lookuptable; used to store all the stuff in the parser rule tree
 438.185 +	//
 438.186 +	//##ModelId=3B6669EA00F8
 438.187 +	IMPORT_C static CBNFParser* NewL(CAttributeLookupTable& aLUT);
 438.188 +
 438.189 +	//##ModelId=3B6669EA00F7
 438.190 +	IMPORT_C virtual ~CBNFParser();
 438.191 +
 438.192 +	// Prepare the parser to take in fresh stream of data.
 438.193 +	// THIS METHOD MUST BE CALLED BEFORE DATA CAN BE PROCESSED BY THE PARSER!!
 438.194 +	// Calls TreeL in order to create the parsing rule tree if no tree already
 438.195 +	// exists.
 438.196 +	//##ModelId=3B6669EA00EF
 438.197 +	IMPORT_C virtual void ResetL();
 438.198 +
 438.199 +	/** Checks if the input stream was completely processed
 438.200 +	@return ETrue if all of the data was processed, EFalse if the data didn't match to the parsing rules
 438.201 +	*/
 438.202 +	//##ModelId=3B6669EA00EE
 438.203 +	TBool Valid() const { return iStringComplete && (iString.Length() == 0); }
 438.204 +
 438.205 +	/** Concatenates the rest of the input stream (which hasn't yet been processed)
 438.206 +	into a single string. The ownership of the string is given to the caller.
 438.207 +	@return String containing the remaining data to be parsed. OWNERSHIP PASSED TO CALLED. */
 438.208 +	//##ModelId=3B6669EA00ED
 438.209 +	HBufC* StringL() const { return iString.StringL(); }
 438.210 +
 438.211 +	/** Gets a pointer to the rule node currently being processed.
 438.212 +	@return Rule node */
 438.213 +	//##ModelId=3B6669EA00E3
 438.214 +	CBNFNode* CurrentRule() { return iCurrentRule; }
 438.215 +
 438.216 +	// Set reference to an attribute lookup table
 438.217 +	//##ModelId=3B6669EA00C5
 438.218 +	void SetAttributeLookupTable(CAttributeLookupTable& aAttributeLookupTable);
 438.219 +
 438.220 +	// methods to allow the input stream to be marked so that the callbacks
 438.221 +	// can determine those parts which successfully matched
 438.222 +
 438.223 +	/** Set a mark to the current position of the input stream. 
 438.224 +
 438.225 +	The mark acts as a tag in the stream currently being processed.
 438.226 +	As we process further along the stream after adding the mark, we can perform
 438.227 +	a rollback to the most previously set mark and start processing again (e.g. OR rule
 438.228 +	works this way). The string fragments won't be consumed (deleted) until
 438.229 +	all the marks on a fragment (and fragments before that) are deleted. */
 438.230 +	//##ModelId=3B6669EA00BC
 438.231 +	void Mark() { iString.Mark(); }; // **Mark can leave**
 438.232 +
 438.233 +	/** Get string between the "cursor position" and the latest mark on the stream.
 438.234 +	
 438.235 +	@return Pointer to the string from the previous mark on to the current position
 438.236 +			of processed string. OWNERSHIP OF THE STRING GIVEN TO THE CALLER. */
 438.237 +	//##ModelId=3B6669EA00BB
 438.238 +	HBufC* MarkedL() { return iString.MarkedL(); };
 438.239 +
 438.240 +	/** Gets the marked string with a string added before the mached string.
 438.241 +	@see MarkedL()
 438.242 +	@return A string cosisting of aInitialText appended with the marked string.
 438.243 +	          OWNERSHIP OF THE CONSTRUCTED STRING IS GIVEN TO THE CALLER. */
 438.244 +	//##ModelId=3B6669EA009E
 438.245 +	HBufC* MarkedWithInitialTextL(const TDesC& aInitialText) { return iString.MarkedWithInitialTextL(aInitialText); };
 438.246 +
 438.247 +	/** Removes the latest mark. All the marks are stored in a stack and this removes
 438.248 +	the topmost mark.*/
 438.249 +	//##ModelId=3B6669EA009D
 438.250 +	void DeleteMark() { iString.DeleteMark(); };
 438.251 +
 438.252 +	// methods to determine it the used rule actually matched (typically used in post callbacks)
 438.253 +	/** Tests if the used rule matched.
 438.254 +
 438.255 +	This is typically used in post-rule callbacks.
 438.256 +
 438.257 +	@return True if the used rule matched; otherwise false
 438.258 +	*/
 438.259 +	//##ModelId=3B6669EA0094
 438.260 +	TBool RuleMatched() const { return iSubRuleMatched; };
 438.261 +	/** Tests if an Optional node sub-rule matched.
 438.262 +
 438.263 +	@return True if the sub- rule matched; otherwise false
 438.264 +	*/
 438.265 +	//##ModelId=3B6669EA0093
 438.266 +	TBool OptionalMatched() const { return iOptionalMatched; };
 438.267 +
 438.268 +	// Create new rule tree root node.
 438.269 +	// This method creates a new single instance of CBNFNode, which shall act as the root
 438.270 +	// node of the rule tree, which implements the BNF rules for parsing the input stream.
 438.271 +	// All the other rules are attached as attributes to this node.
 438.272 +	// The root node should have single child node, which should be a reference to the
 438.273 +	// "logical root" of the rule tree. This can be done be attaching the logical root
 438.274 +	// rule as a component to the root rule.
 438.275 +	//##ModelId=3B6669EA0089
 438.276 +	IMPORT_C CBNFNode* NewBNFL();
 438.277 +
 438.278 +	// Add a new rule to a rule tree.
 438.279 +	//
 438.280 +	// Input:
 438.281 +	//	aRootRule - Pointer to the root bnf node (created with NewBNFL() ).
 438.282 +	//	aRuleName - Reference to a string identifying this rule. The string is used
 438.283 +	//				to make references to this rule from other rule's subtrees.
 438.284 +	//	aData	  - Pointer to a data string; used with EExact and ESelect type rules
 438.285 +	//              to match actual text strings.
 438.286 +	//	aPreRule  - Function pointer to a prerule function that gets called _BEFORE_
 438.287 +	//				we start processing this rule and its children (i.e. the rule subtree)
 438.288 +	//	aPostRule - Function pointer to a postrule function which is called _AFTER_
 438.289 +	//              we have processed this rule (i.e. when we return up from the subtree
 438.290 +	//              and this rule is finished).
 438.291 +	//
 438.292 +	// Return:
 438.293 +	//	CBNFNode& - Reference to the newly created rule node in the rule tree
 438.294 +	//
 438.295 +	//##ModelId=3B6669E90326
 438.296 +	IMPORT_C CBNFNode& NewRuleL(CBNFNode* aRootRule, 
 438.297 +					const TDesC& aRuleName, 
 438.298 +					TParserNodeTypes aRuleType, 
 438.299 +					HBufC* aData, 
 438.300 +					TRuleCallback* aPreRule, 
 438.301 +					TRuleCallback* aPostRule);
 438.302 +
 438.303 +	// Overridden version of the NewRuleL. Takes reference to the data instead of owning it.
 438.304 +	//##ModelId=3B6669E903D1
 438.305 +	IMPORT_C CBNFNode& NewRuleL(CBNFNode* aRootRule, 
 438.306 +					const TDesC& aRuleName, 
 438.307 +					TParserNodeTypes aRuleType, 
 438.308 +					const TDesC& aData, 
 438.309 +					TRuleCallback* aPreRule, 
 438.310 +					TRuleCallback* aPostRule);
 438.311 +
 438.312 +	// construct a new rule component not attached to a rule.
 438.313 +	//##ModelId=3B6669E9018C
 438.314 +	IMPORT_C CBNFNode* NewComponentL(TParserNodeTypes aRuleType, const TDesC& aData);
 438.315 +	//##ModelId=3B6669E901B4
 438.316 +	IMPORT_C CBNFNode* NewComponentL(TParserNodeTypes aRuleType, HBufC* aData = NULL, TRuleCallback* aPreRule = NULL, TRuleCallback* aPostRule = NULL);
 438.317 +
 438.318 +	// create a reference component to the rule of the given name
 438.319 +	// which is not attached to any rule.
 438.320 +	//##ModelId=3B6669E90204
 438.321 +	IMPORT_C CBNFNode* NewComponentL(CBNFNode* aRootRule, const TDesC& aRuleName);
 438.322 +
 438.323 +	// Methods to create a new subrule to the given parent rule.
 438.324 +	// These methods can be used to build the subtrees to the "main rules" attached to the root node.
 438.325 +	//
 438.326 +	// Input:
 438.327 +	//	aParentRule - The rule for which the new rule shall be added as a child
 438.328 +	//  aRuleType - Type of the new rule
 438.329 +	//  aData - Data for the rule; the string to match for an EExact rule, the selection character set for ESelect
 438.330 +	//
 438.331 +	//	aPreRule - Pre rule callback function pointer
 438.332 +	//  aPostRule - Post rule callback function pointer
 438.333 +	// Return:
 438.334 +	//	CBNFNode& - reference to the new rule
 438.335 +	//
 438.336 +	//##ModelId=3B6669E9022C
 438.337 +	IMPORT_C CBNFNode& NewComponentL(CBNFNode &aParentRule, TParserNodeTypes aRuleType, const TDesC& aData);
 438.338 +	//##ModelId=3B6669E90268
 438.339 +	IMPORT_C CBNFNode& NewComponentL(CBNFNode &aParentRule, TParserNodeTypes aRuleType, HBufC* aData = NULL, TRuleCallback* aPreRule = NULL, TRuleCallback* aPostRule = NULL);
 438.340 +	
 438.341 +	// Create a reference to another rule and attach this reference as a child of the given parent.
 438.342 +	// Creates a child node of type EReference for the parent. This reference node
 438.343 +	// hold the pointer to the rule we are refering to.
 438.344 +	// Using references we can link rules to each other and build complex rule trees
 438.345 +	// even though they don't physically form a complete tree.
 438.346 +	// Notice, that the rule we are refering to does not necessarily need to exist, yet!
 438.347 +	//
 438.348 +	// Input:
 438.349 +	//	aRootRule - The Root node to the rule tree (created with NewBNFL). This is needed to
 438.350 +	//				find the rule we are refering to with the string.
 438.351 +	//	aParentRule - The parent rule of the newly created reference 
 438.352 +	//	aRuleName - The "id string" of the rule we are refering to.
 438.353 +	//##ModelId=3B6669E902CC
 438.354 +	IMPORT_C CBNFNode& NewComponentL(CBNFNode* aRootRule, CBNFNode &aParentRule, const TDesC& aRuleName);
 438.355 +	
 438.356 +	// add additional attributes to components of rules (i.e. range values)
 438.357 +	//##ModelId=3B6669E900F6
 438.358 +	IMPORT_C void AddComponentAttributeL(CBNFNode& aRule, CBNFNodeAttributeType aAttribute, TInt aInt);
 438.359 +	
 438.360 +	// re-implementations of MDataProviderObserver methods
 438.361 +	//##ModelId=3B6669E900D8
 438.362 +	IMPORT_C virtual void ProcessDataL(HBufC8& aData);
 438.363 +	//##ModelId=3B6669E900AF
 438.364 +	IMPORT_C virtual void SetStatus(TInt aStatus = KErrNone);
 438.365 +	//##ModelId=3B6669E90069
 438.366 +	IMPORT_C virtual void SetDocumentTypeL(const TDesC&);
 438.367 +	//##ModelId=3B6669E90087
 438.368 +	IMPORT_C virtual void SetDocumentTypeL(const TDesC&, const TDesC&);
 438.369 +	//##ModelId=3B6669E90055
 438.370 +	IMPORT_C virtual void SetDataExpected(TInt);
 438.371 +	//##ModelId=3B6669E90041
 438.372 +	IMPORT_C virtual void SetBaseUriL(const TDesC* aBaseUri);
 438.373 +	//##ModelId=3B6669E90038
 438.374 +	IMPORT_C virtual void MDataProviderObserverReserved1();
 438.375 +	//##ModelId=3B6669E90037
 438.376 +	IMPORT_C virtual void MDataProviderObserverReserved2();
 438.377 +
 438.378 +	// Tell the parser, that we all the data has been passed in.
 438.379 +	// This method attempts to parse what ever is left of the input stream if it wasn't
 438.380 +	// already finished.
 438.381 +	//##ModelId=3B6669E9002E
 438.382 +	IMPORT_C void CommitL();
 438.383 +
 438.384 +	/** Get the current state of the parser. 
 438.385 +	@return Parser state */
 438.386 +	//##ModelId=3B6669E9002D
 438.387 +	TParseState State() const {return(iParsing);};
 438.388 +
 438.389 +protected:
 438.390 +	IMPORT_C CBNFParser(CAttributeLookupTable& aLUT);
 438.391 +
 438.392 +	// Each of the following functions is a handler method for a specific type of a rule
 438.393 +	// node. For example, ReferenceL handles reference nodes etc.
 438.394 +	// These methods are called by PerformRuleL.
 438.395 +	//
 438.396 +	// Input:
 438.397 +	//	aRule - reference to the rule being processed
 438.398 +	//	aMatched - reference to a CFragmentedString::TStringMatch variable, which holds
 438.399 +	//             the information if the string or character we previously were trying to
 438.400 +	//             match actually matched.
 438.401 +	// Return:
 438.402 +	//	TBool - We return ETrue if we have completed processing this node. If the processing
 438.403 +	//          still continues we return EFalse. For example, an EAnd rule would return
 438.404 +	//          ETrue if all of its chidren had matched or if a rule didn't match. In the first
 438.405 +	//          case the EAnd rule would have turned out to be true (aMatched = EMatched) since
 438.406 +	//          all of its children were true, but in the latter case we can stop processing the
 438.407 +	//          EAnd rule, since a subrule to the And didn't match and this means that the And
 438.408 +	//          expression can not be true. Either way, the processing of the And ends and we
 438.409 +	//          may return ETrue;
 438.410 +	//
 438.411 +	//##ModelId=3B6669E90005
 438.412 +    IMPORT_C virtual TBool ReferenceL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.413 +	//##ModelId=3B6669E803BB
 438.414 +    IMPORT_C virtual TBool ExactL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.415 +	//##ModelId=3B6669E80389
 438.416 +    IMPORT_C virtual TBool RangeL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.417 +	//##ModelId=3B6669E80343
 438.418 +    IMPORT_C virtual TBool SelectL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.419 +	//##ModelId=3B6669E80311
 438.420 +    IMPORT_C virtual TBool WithoutL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.421 +	//##ModelId=3B6669E802D5
 438.422 +    IMPORT_C virtual TBool AndL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.423 +	//##ModelId=3B6669E80299
 438.424 +    IMPORT_C virtual TBool OrL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.425 +	//##ModelId=3B6669E80271
 438.426 +    IMPORT_C virtual TBool OptionalL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.427 +	//##ModelId=3B6669E8023F
 438.428 +    IMPORT_C virtual TBool NMoreL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.429 +
 438.430 +	// A method to add a callback to a rule
 438.431 +	//
 438.432 +	// Input:
 438.433 +	//	aRule - The rule to which the callback is to be added
 438.434 +	//	aCallbackID - Either CBNFNode::KPreRuleCallback() or CBNFNode::KPostRuleCallback()
 438.435 +	//                Defines the type of the callback function (i.e. is it to be called before
 438.436 +	//                or after the rule has been processed).
 438.437 +	//	aCallback - The callback function pointer
 438.438 +	//
 438.439 +	//##ModelId=3B6669E80203
 438.440 +    IMPORT_C virtual void AddRuleCallbackL(CBNFNode& aRule, const TDesC* aCallbackID, TRuleCallback* aCallback);
 438.441 +	//##ModelId=3B6669E801EF
 438.442 +    IMPORT_C virtual void ExecutePreRuleCallbackL(CBNFNode& aRule);
 438.443 +	//##ModelId=3B6669E801D1
 438.444 +    IMPORT_C virtual void ExecutePostRuleCallbackL(CBNFNode& aRule);
 438.445 +
 438.446 +	// the method TreeL() should be reimplemented to generate a BNF rule tree and return
 438.447 +	// ownership of it. This is the rule tree which will be to parse the input stream.
 438.448 +	// See XmlPars.cpp or DTDMDL.cpp for example.
 438.449 +	//##ModelId=3B6669E801D0
 438.450 +	IMPORT_C virtual CBNFNode* TreeL();
 438.451 +
 438.452 +	// methods which are invoked when the parser encounters a conditional
 438.453 +	// point in the BNF grammar (i.e. And/Or)
 438.454 +	//##ModelId=3B6669E801B2
 438.455 +    IMPORT_C virtual void StartConditional(TParserNodeTypes aRuleType);
 438.456 +	//##ModelId=3B6669E80180
 438.457 +	IMPORT_C virtual void EndConditional(TParserNodeTypes aRuleType, TBool aSuccess);
 438.458 +
 438.459 +	// A callback function to insert a mark to the current position of the stream
 438.460 +	// being processed. Adding mark is a very common callback operation befor starting
 438.461 +	// to process a rule, hence the method is provided by the parser.
 438.462 +	//##ModelId=3B6669E8016C
 438.463 +	IMPORT_C static void MarkCallback(CBNFParser& aParser);
 438.464 +
 438.465 +	// returns the LUT used by this parser.
 438.466 +	//##ModelId=3B6669E80163
 438.467 +	IMPORT_C CAttributeLookupTable& AttributeLUT() const;
 438.468 +
 438.469 +	// method which does the actual iterative parsing
 438.470 +	//##ModelId=3B6669E80162
 438.471 +	IMPORT_C TBool ParseL();
 438.472 +
 438.473 +	// A rule to handle a node in the rule tree. This method just calls the appropriate
 438.474 +	// handler method according to the rule type.
 438.475 +	//##ModelId=3B6669E8013A
 438.476 +    IMPORT_C virtual TBool PerformRuleL(CBNFNode& aRule, CFragmentedString::TStringMatch& aMatched);
 438.477 +
 438.478 +	//##ModelId=3B6669E8011C
 438.479 +	/** Sets the parser state.
 438.480 +
 438.481 +	@param aState Parser state
 438.482 +	*/
 438.483 +	void SetState(TParseState aState) {iParsing=aState;};
 438.484 +
 438.485 +protected:
 438.486 +	/** Storage object for all the attributes and identifiers in a tree */
 438.487 +	//##ModelId=3B6669E80108
 438.488 +	CAttributeLookupTable& iLUT;	
 438.489 +
 438.490 +	/** An utility object which stores all the buffers passed into the parser
 438.491 +	and represents them as if they would form a single, continuous string.
 438.492 +	This class also performs the actual physical matching/selection of the strings
 438.493 +	and holds the marks set onto the string.*/
 438.494 +	//##ModelId=3B6669E800EA
 438.495 +	CFragmentedString iString;
 438.496 +	/** Flag indicating if the input stream has been completely processed. */ 
 438.497 +	//##ModelId=3B6669E800D6
 438.498 +	TBool iStringComplete; // more input stream has completed
 438.499 +
 438.500 +	/** The BNF tree the parser is using to parse the input stream.*/
 438.501 +	//##ModelId=3B6669E800C2
 438.502 +	CBNFNode* iTree;        // the BNF tree we are using to parse the input stream
 438.503 +
 438.504 +	/** A stack of rules from iTree which are waiting to be completed.
 438.505 +	The stack basically holds the path along the rule tree. */
 438.506 +	//##ModelId=3B6669E800AE
 438.507 +	CRuleStack iRuleStack;  
 438.508 +	/** The BNF rule that is currently being processed. */
 438.509 +	//##ModelId=3B6669E80090
 438.510 +	CBNFNode* iCurrentRule; // the BNF rule we are currently using
 438.511 +
 438.512 +	// when returning to a rule in the rulestack this indicates 
 438.513 +	// if the child rule matched correctly
 438.514 +	/** Flag that indicates when returning to a rule in the rulestack if the child rule matched correctly. */
 438.515 +	//##ModelId=3B6669E8007C
 438.516 +	TBool iSubRuleMatched;
 438.517 +	/** Flag that indicates when returning to a rule in the rulestack if an optional rule matched correctly. */
 438.518 +	//##ModelId=3B6669E8006A
 438.519 +	TBool iOptionalMatched;
 438.520 +
 438.521 +	/** The child rule we are returning from (if any). 
 438.522 +	If this is NULL we are new to this BNF rule.*/
 438.523 +	//##ModelId=3B6669E80054
 438.524 +	CBNFNode* iSubRule;     
 438.525 +
 438.526 +	/** Parser state. */
 438.527 +	//##ModelId=3B6669E8004A
 438.528 +	TParseState iParsing;
 438.529 +	/** Input stream matched rule flag. */
 438.530 +	//##ModelId=3B6669E80038
 438.531 +    CFragmentedString::TStringMatch iMatched;
 438.532 +
 438.533 +	// Storage pointers for strings identifying certain attributes on the rule nodes
 438.534 +	/** Stores attribute identifier for reference string attributes. */
 438.535 +	//##ModelId=3B6669E8002C
 438.536 +	const TDesC* iReferenceString;
 438.537 +	/** Stores attribute identifier for range start attributes. */
 438.538 +	//##ModelId=3B6669E8001A
 438.539 +	const TDesC* iRangeStart;
 438.540 +	/** Stores attribute identifier for range end attributes. */
 438.541 +	//##ModelId=3B6669E80010
 438.542 +	const TDesC* iRangeEnd;
 438.543 +	/** Stores attribute identifier for nmore minimum attributes. */
 438.544 +	//##ModelId=3B6669E80006
 438.545 +	const TDesC* iMoreMinimum;
 438.546 +	/** Stores attribute identifier for nmore count attributes. */
 438.547 +	//##ModelId=3B6669E703DA
 438.548 +	const TDesC* iMoreCount;
 438.549 +	/** Stores attribute identifier for nmore maximum attributes. */
 438.550 +	//##ModelId=3B6669E703D0
 438.551 +	const TDesC* iMoreMaximum;
 438.552 +	/** Stores attribute identifier for pre-rule callback attributes. */
 438.553 +	//##ModelId=3B6669E703C6
 438.554 +	const TDesC* iPreRuleCallback;
 438.555 +	/** Stores attribute identifier for post-rule callback attributes. */
 438.556 +	//##ModelId=3B6669E703BC
 438.557 +	const TDesC* iPostRuleCallback;
 438.558 +	};
 438.559 +
 438.560 +#endif
   439.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   439.2 +++ b/epoc32/include/mw/cdtdmodel.h	Wed Mar 31 12:27:01 2010 +0100
   439.3 @@ -0,0 +1,237 @@
   439.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   439.5 +// All rights reserved.
   439.6 +// This component and the accompanying materials are made available
   439.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   439.8 +// which accompanies this distribution, and is available
   439.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  439.10 +//
  439.11 +// Initial Contributors:
  439.12 +// Nokia Corporation - initial contribution.
  439.13 +//
  439.14 +// Contributors:
  439.15 +//
  439.16 +// Description:
  439.17 +// contains the parser specialisation (BNF grammar) for a DTD parser.
  439.18 +// See CBNFParser for function details
  439.19 +// 
  439.20 +//
  439.21 +
  439.22 +#ifndef __CDTDMODEL_H__
  439.23 +#define __CDTDMODEL_H__
  439.24 +
  439.25 +#include <cbnfnode.h>
  439.26 +#include <cbnfparser.h>
  439.27 +#include <crulemarkedstack.h>
  439.28 +
  439.29 +//##ModelId=3B666BCB001C
  439.30 +
  439.31 +
  439.32 +
  439.33 +class CDTDModel : public CBNFParser
  439.34 +/** Creates a tree that represents a specified DTD.
  439.35 +
  439.36 +To use it:
  439.37 +
  439.38 +1. call the base class function ProcessDataL() with the filename of the DTD, and call CommitL()
  439.39 +
  439.40 +2. call GeneratedTree() to get the tree
  439.41 +
  439.42 +	@publishedAll
  439.43 +	@released
  439.44 +*/
  439.45 +	{
  439.46 +public:
  439.47 +    class CDTDElementAttribute : public CBase
  439.48 +	/** Represents an attribute of a DTD element. */
  439.49 +		{
  439.50 +	public:
  439.51 +		/** DTD element attribute value types. */
  439.52 +		enum KValueType
  439.53 +			{
  439.54 +			/** Attribute supplies a default. */
  439.55 +			EDefault, 
  439.56 +			/** Attribute is #REQUIRED. */
  439.57 +			ERequired, 
  439.58 +			/** Attribute is #IMPLIED. */
  439.59 +			EImplied, 
  439.60 +			/** Attribute is #FIXED. */
  439.61 +			EFixed, 
  439.62 +			/** Attribute is a reference. */
  439.63 +			EReference
  439.64 +			};
  439.65 +
  439.66 +	public:
  439.67 +		/** Destructor.
  439.68 +		*/
  439.69 +		virtual ~CDTDElementAttribute() 
  439.70 +			{ 
  439.71 +			delete iType; 
  439.72 +			delete iValue; 
  439.73 +			}
  439.74 +
  439.75 +	public:
  439.76 +		/** Node that specifies the attribute type. */
  439.77 +		CBNFNode*	iType;
  439.78 +		/** Node that specifies the attribute value. */
  439.79 +        CBNFNode*	iValue;
  439.80 +		/** Attribute value type. */
  439.81 +        KValueType	iValueType;
  439.82 +		};
  439.83 +
  439.84 +
  439.85 +	enum TRuleMarks 
  439.86 +		{
  439.87 +		ERuleStartMark = 1, 
  439.88 +		EConditionalMark, 
  439.89 +		EGroupMark 
  439.90 +		};
  439.91 +
  439.92 +	//##ModelId=3B666BCB0321
  439.93 +	IMPORT_C static CDTDModel* NewL(CAttributeLookupTable& aLUT);
  439.94 +	//##ModelId=3B666BCB0320
  439.95 +	IMPORT_C virtual ~CDTDModel();
  439.96 +
  439.97 +	// This method MUST be invoked before data can be processed by the parser.
  439.98 +	//##ModelId=3B666BCB031F
  439.99 +	IMPORT_C virtual void ResetL();
 439.100 +
 439.101 +	//##ModelId=3B666BCB0315
 439.102 +	IMPORT_C CBNFNode* GeneratedTree();
 439.103 +
 439.104 +	// Building method for a hard coded WML1.1 DTD tree
 439.105 +	// Input:
 439.106 +	//		aPackageRoot - A root node to which the generated tree is attached
 439.107 +	//
 439.108 +	//##ModelId=3B666BCB030B
 439.109 +	IMPORT_C void BuildWml11DTDL(CBNFNode& aPackageRootNode);
 439.110 +
 439.111 +protected:
 439.112 +    IMPORT_C CDTDModel(CAttributeLookupTable& aLUT);	
 439.113 +
 439.114 +	// construct our BNF rule tree
 439.115 +	//##ModelId=3B666BCB0302
 439.116 +	IMPORT_C virtual CBNFNode* TreeL();
 439.117 +	
 439.118 +	// to control our internal state on conditional rules.
 439.119 +	//##ModelId=3B666BCB02F7
 439.120 +	IMPORT_C virtual void StartConditional(TParserNodeTypes aRuleType); 
 439.121 +	//##ModelId=3B666BCB02E3
 439.122 +	IMPORT_C virtual void EndConditional(TParserNodeTypes aRuleType, TBool aSuccess);
 439.123 +
 439.124 +	// rule callbacks to build the DTD Tree
 439.125 +	//##ModelId=3B666BCB02D9
 439.126 +	static void PreRulesL(CBNFParser& aParser);
 439.127 +	//##ModelId=3B666BCB02CF
 439.128 +	static void PostRulesL(CBNFParser& aParser);
 439.129 +	//##ModelId=3B666BCB02C5
 439.130 +	static void PreElementDeclL(CBNFParser& aParser);
 439.131 +	//##ModelId=3B666BCB02B1
 439.132 +	static void PostElementDeclL(CBNFParser& aParser);
 439.133 +	//##ModelId=3B666BCB02A7
 439.134 +	static void PreEntityDeclL(CBNFParser& aParser);
 439.135 +	//##ModelId=3B666BCB0294
 439.136 +	static void PostEntityDeclL(CBNFParser& aParser);
 439.137 +	//##ModelId=3B666BCB0289
 439.138 +	static void PreAttlistLineL(CBNFParser& aParser);
 439.139 +	//##ModelId=3B666BCB027F
 439.140 +	static void PostAttlistLineL(CBNFParser& aParser);
 439.141 +	//##ModelId=3B666BCB0275
 439.142 +	static void PostAttlistReferenceL(CBNFParser& aParser);
 439.143 +	//##ModelId=3B666BCB026B
 439.144 +	static void PreAttValueL(CBNFParser& aParser);
 439.145 +	//##ModelId=3B666BCB0261
 439.146 +	static void PostAttValueL(CBNFParser& aParser);
 439.147 +	//##ModelId=3B666BCB024E
 439.148 +	static void PostRequiredL(CBNFParser& aParser);
 439.149 +	//##ModelId=3B666BCB0243
 439.150 +	static void PostFixedL(CBNFParser& aParser);
 439.151 +	//##ModelId=3B666BCB0239
 439.152 +	static void PostImpliedL(CBNFParser& aParser);
 439.153 +	//##ModelId=3B666BCB022F
 439.154 +	static void PostAndL(CBNFParser& aParser);
 439.155 +	//##ModelId=3B666BCB0225
 439.156 +	static void PostOrL(CBNFParser& aParser);
 439.157 +	//##ModelId=3B666BCB021B
 439.158 +	static void PreGroupL(CBNFParser& aParser);
 439.159 +	//##ModelId=3B666BCB0208
 439.160 +	static void PostGroupL(CBNFParser& aParser);
 439.161 +	//##ModelId=3B666BCB01FD
 439.162 +	static void PostMatch0PlusL(CBNFParser& aParser);
 439.163 +	//##ModelId=3B666BCB01F3
 439.164 +	static void PostMatch1PlusL(CBNFParser& aParser);
 439.165 +	//##ModelId=3B666BCB01E9
 439.166 +	static void PostOptionalL(CBNFParser& aParser);
 439.167 +	//##ModelId=3B666BCB01DF
 439.168 +	static void PostIdentifierL(CBNFParser& aParser);
 439.169 +	//##ModelId=3B666BCB01CC
 439.170 +	static void PostEntityDeclNameL(CBNFParser& aParser);
 439.171 +	//##ModelId=3B666BCB01C1
 439.172 +	static void PostElementDeclNameL(CBNFParser& aParser);
 439.173 +	//##ModelId=3B666BCB01B7
 439.174 +	static void PostAttlistDeclNameL(CBNFParser& aParser);
 439.175 +	//##ModelId=3B666BCB01AD
 439.176 +	static void PostAttfieldNameL(CBNFParser& aParser);
 439.177 +	//##ModelId=3B666BCB01A3
 439.178 +	static void PostReferenceNameL(CBNFParser& aParser);
 439.179 +	//##ModelId=3B666BCB0199
 439.180 +	static void PostStringL(CBNFParser& aParser);
 439.181 +	//##ModelId=3B666BCB0186
 439.182 +	static void PostValidHexCharL(CBNFParser& aParser);
 439.183 +	//##ModelId=3B666BCB017B
 439.184 +	static void PostValidDecCharL(CBNFParser& aParser);
 439.185 +	//##ModelId=3B666BCB0171
 439.186 +	static void PrePEDeclL(CBNFParser& aParser);
 439.187 +	//##ModelId=3B666BCB0167
 439.188 +	static void PostPEDeclL(CBNFParser& aParser);
 439.189 +	//##ModelId=3B666BCB015D
 439.190 +	static void PostGEDeclL(CBNFParser& aParser);
 439.191 +	//##ModelId=3B666BCB0153
 439.192 +	static void PreGEContentL(CBNFParser& aParser);
 439.193 +	//##ModelId=3B666BCB0149
 439.194 +	static void PostGEContentL(CBNFParser& aParser);	
 439.195 +
 439.196 +	// utility functions
 439.197 +	//##ModelId=3B666BCB0135
 439.198 +	static void PostValidCharL(CBNFParser& aParser, TRadix aRadix);
 439.199 +	//##ModelId=3B666BCB0117
 439.200 +	static void PostRuleL(CBNFParser& aParser, TParserNodeTypes aType, const TDesC* aAttribute);
 439.201 +
 439.202 +	//##ModelId=3B666BCB0104
 439.203 +	void CharRefReplacement(TPtr& aString);
 439.204 +
 439.205 +	//##ModelId=3B666BCB0103
 439.206 +	void DoClear();
 439.207 +
 439.208 +	// Help methods for the hardcoded WML 1.1 tree
 439.209 +	//##ModelId=3B666BCB00DB
 439.210 +	void AddNewAttributeL(CBNFNode& aNode, const TDesC* aAttributeId, const TDesC& aAttributeType, CDTDElementAttribute::KValueType aAttributeValueType, CBNFNode* aRootNode);
 439.211 +	//##ModelId=3B666BCB00BD
 439.212 +	void AddNewReferenceAttributeL(CBNFNode& aNode, const TDesC& aAttributeType, CBNFNode* aRootNode);
 439.213 +	//##ModelId=3B666BCB0095
 439.214 +	void AddNewAttributeWithValueL(CBNFNode& aNode, const TDesC* aAttributeId, const TDesC& aAttributeType, const TDesC& aAttributeDefaultValue, CBNFNode* aRootNode);
 439.215 +
 439.216 +
 439.217 +protected:
 439.218 +    typedef CRuleMarkedStack<ETrue> COwnerRuleMarkedStack;
 439.219 +
 439.220 +protected:
 439.221 +	//##ModelId=3B666BCB008B
 439.222 +	TBool					iInPEDecl;	
 439.223 +	//##ModelId=3B666BCB0078
 439.224 +	TBool					iCharRefCheck;
 439.225 +	//##ModelId=3B666BCB006E
 439.226 +	HBufC*					iGEContent;
 439.227 +
 439.228 +	//##ModelId=3B666BCB0064
 439.229 +	HBufC*					iNewAttfieldName;
 439.230 +	//##ModelId=3B666BCB005A
 439.231 +	CDTDElementAttribute*	iNewElementAttribute;
 439.232 +	//##ModelId=3B666BCB0046
 439.233 +	CBNFNode*				iNewRule;
 439.234 +	//##ModelId=3B666BCB003C
 439.235 +	CBNFNode*				iNewTree;
 439.236 +	//##ModelId=3B666BCB0030
 439.237 +	COwnerRuleMarkedStack	iNewRuleStack;
 439.238 +	};
 439.239 +
 439.240 +#endif // __CDTDMODEL_H__
   440.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   440.2 +++ b/epoc32/include/mw/cfragmentedstring.h	Wed Mar 31 12:27:01 2010 +0100
   440.3 @@ -0,0 +1,178 @@
   440.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   440.5 +// All rights reserved.
   440.6 +// This component and the accompanying materials are made available
   440.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   440.8 +// which accompanies this distribution, and is available
   440.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  440.10 +//
  440.11 +// Initial Contributors:
  440.12 +// Nokia Corporation - initial contribution.
  440.13 +//
  440.14 +// Contributors:
  440.15 +//
  440.16 +// Description:
  440.17 +// A string class implementation which allows quick addition of partial strings
  440.18 +// (no copying) by using an internal array of fragmented strings.
  440.19 +// The class allows comprehensive character based matching functionality 
  440.20 +// along with infinite depth marking.
  440.21 +// 
  440.22 +//
  440.23 +
  440.24 +#ifndef __CFRAGMENTEDSTRING_H__
  440.25 +#define __CFRAGMENTEDSTRING_H__
  440.26 +
  440.27 +// includes
  440.28 +#include <e32base.h>
  440.29 +#include <cstack.h>
  440.30 +
  440.31 +
  440.32 +//
  440.33 +// CFragmentedString
  440.34 +
  440.35 +//##ModelId=3B666BC6034A
  440.36 +
  440.37 +
  440.38 +
  440.39 +class CFragmentedString : protected CArrayPtrFlat<HBufC>
  440.40 +/**  
  440.41 +Utility that allows a single string to be built from an array of consecutive sub-strings.
  440.42 +
  440.43 +The sub-strings can be inserted by reference or copied.
  440.44 +
  440.45 +The object maintains information that points to a current position within the string. A typical 
  440.46 +use is to test the contents of the string using one of the Match...() functions, and then use 
  440.47 +ConsumeMatched() to advance past the matched area.
  440.48 +
  440.49 +The class also supports inserting an unlimited number of marks in the string, and performing 
  440.50 +operations relative to the head (i.e. last inserted) mark. 
  440.51 +    @publishedAll
  440.52 +    @released
  440.53 +*/
  440.54 +	{
  440.55 +protected:
  440.56 +	class TStringMark
  440.57 +	/** A mark at a string position. */
  440.58 +		{
  440.59 +	public:
  440.60 +		/** Constructor.
  440.61 +
  440.62 +		@param aIndex Array index of the marked sub-string
  440.63 +		@param aCharacter Character position within the sub-string for the mark
  440.64 +		*/
  440.65 +		TStringMark(TInt aIndex, TInt aCharacter)
  440.66 +		: iMarkIndex(aIndex), iMarkCharacter(aCharacter)
  440.67 +		{
  440.68 +		}
  440.69 +
  440.70 +	public:
  440.71 +		/** Array index of the marked sub-string. */
  440.72 +		TInt iMarkIndex;
  440.73 +		/** Character position within the sub-string for the mark. */
  440.74 +		TInt iMarkCharacter;
  440.75 +		};
  440.76 +	/** A stack of string position marks. */
  440.77 +	typedef CStack<TStringMark, ETrue> CMarkStack;
  440.78 +
  440.79 +public:
  440.80 +	/** Defines possible results of a string matching operation for this class. */
  440.81 +	enum TStringMatch 
  440.82 +		{ 
  440.83 +		/** There was no match. */
  440.84 +		ENoMatch, 
  440.85 +		/** There was a complete match. */
  440.86 +		EMatch,
  440.87 +		/** String contained insufficient data to perform the match operation.
  440.88 +
  440.89 +		This can mean that the start of the target string was matched, but the string 
  440.90 +		being searched ended before a complete match was found. */
  440.91 +		EInsufficientData
  440.92 +		};
  440.93 +
  440.94 +public:
  440.95 +	IMPORT_C CFragmentedString();
  440.96 +	//##ModelId=3B666BC700AD
  440.97 +	IMPORT_C ~CFragmentedString();
  440.98 +
  440.99 +	//##ModelId=3B666BC70099
 440.100 +	IMPORT_C void AddStringL(HBufC* aString); // this version is more efficient
 440.101 +	//##ModelId=3B666BC700A3
 440.102 +	IMPORT_C void AddStringL(const TDesC& aString);
 440.103 +	
 440.104 +	//##ModelId=3B666BC70090
 440.105 +	IMPORT_C TInt Length() const;
 440.106 +	//##ModelId=3B666BC70071
 440.107 +	IMPORT_C HBufC* StringL() const;
 440.108 +	//##ModelId=3B666BC70068
 440.109 +	IMPORT_C HBufC* ContentL() const;
 440.110 +	//##ModelId=3B666BC70067
 440.111 +	IMPORT_C void Reset();
 440.112 +
 440.113 +	//##ModelId=3B666BC7005D
 440.114 +	IMPORT_C TStringMatch Match(const TDesC& aString);
 440.115 +	//##ModelId=3B666BC70049
 440.116 +	IMPORT_C TStringMatch MatchRange(const TUint aLower, const TUint aUpper);
 440.117 +	//##ModelId=3B666BC7003F
 440.118 +	IMPORT_C TStringMatch MatchSelect(const TDesC& aSelection);
 440.119 +	//##ModelId=3B666BC70037
 440.120 +	IMPORT_C TStringMatch MatchNotSelect(const TDesC& aSelection);
 440.121 +	//##ModelId=3B666BC70036
 440.122 +	IMPORT_C void ConsumeMatched();
 440.123 +
 440.124 +	//##ModelId=3B666BC70035
 440.125 +	IMPORT_C HBufC* MarkedL();
 440.126 +	//##ModelId=3B666BC7002B
 440.127 +	IMPORT_C HBufC* MarkedWithInitialTextL(const TDesC& aInitialText);
 440.128 +	//##ModelId=3B666BC70022
 440.129 +	IMPORT_C void Mark(); // Mark can leave
 440.130 +	//##ModelId=3B666BC70021
 440.131 +	IMPORT_C void DeleteMark();
 440.132 +	//##ModelId=3B666BC70018
 440.133 +	IMPORT_C void ResetToMark();
 440.134 +
 440.135 +	//##ModelId=3B666BC7000E
 440.136 +	IMPORT_C void ReplaceMarkedL(HBufC* aString);
 440.137 +	//##ModelId=3B666BC70005
 440.138 +	IMPORT_C void ReplaceMarkedAndSkipL(HBufC* aString);
 440.139 +	//##ModelId=3B666BC70003
 440.140 +	IMPORT_C void InsertStringL(HBufC* aString);
 440.141 +
 440.142 +protected:
 440.143 +	//##ModelId=3B666BC603E1
 440.144 +	IMPORT_C void DeleteToMark(const TStringMark& aStringMark);
 440.145 +	//##ModelId=3B666BC603C4
 440.146 +	IMPORT_C void InsertStringToL(HBufC* aString, TInt aStringIndex, TInt aLengthIntoString);
 440.147 +	//##ModelId=3B666BC70072
 440.148 +	HBufC* StringL(TInt aStartIndex, TInt aStartCharacter, TInt aEndIndex, TInt aEndCharacter, const TDesC* aInitialText=NULL) const;
 440.149 +	//##ModelId=3B666BC603C3
 440.150 +	void StartMatch();
 440.151 +	//##ModelId=3B666BC603B8
 440.152 +	CFragmentedString::TStringMatch DoMatchSelect(const TDesC& aSelection, TBool aInSelection);
 440.153 +	//##ModelId=3B666BC603AE
 440.154 +	TBool FindNextMatchChar(TUint& aChar);
 440.155 +
 440.156 +protected:
 440.157 +	//##ModelId=3B666BC603A4
 440.158 +	/** Result of the last match operation. */
 440.159 +	TStringMatch iMatched;
 440.160 +
 440.161 +	/** Array index of the sub-string found in the last match operation. */
 440.162 +	//##ModelId=3B666BC6039A
 440.163 +	TInt iMatchedToIndex;
 440.164 +	/** Current character position within the iMatchedToIndex sub-string found in the last match operation. */
 440.165 +	//##ModelId=3B666BC60390
 440.166 +	TInt iMatchedToCharacter;
 440.167 +	/** Array index of the current sub-string. */
 440.168 +	//##ModelId=3B666BC60386
 440.169 +	TInt iCurrentIndex;
 440.170 +	/** Current character position within the current sub-string. */
 440.171 +	//##ModelId=3B666BC6037C
 440.172 +	TInt iCurrentCharacter;
 440.173 +	/** Stack of marks in the string.
 440.174 +
 440.175 +	Mark() pushes a mark on the stack; DeleteMark() pops one off.
 440.176 +	*/
 440.177 +	//##ModelId=3B666BC60372
 440.178 +	CMarkStack iMarkStack;
 440.179 +	};
 440.180 +
 440.181 +#endif // __CFRAGMENTEDSTRING_H__
   441.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   441.2 +++ b/epoc32/include/mw/chttpformencoder.h	Wed Mar 31 12:27:01 2010 +0100
   441.3 @@ -0,0 +1,100 @@
   441.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   441.5 +// All rights reserved.
   441.6 +// This component and the accompanying materials are made available
   441.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   441.8 +// which accompanies this distribution, and is available
   441.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  441.10 +//
  441.11 +// Initial Contributors:
  441.12 +// Nokia Corporation - initial contribution.
  441.13 +//
  441.14 +// Contributors:
  441.15 +//
  441.16 +// Description:
  441.17 +//
  441.18 +
  441.19 +
  441.20 +
  441.21 +/**
  441.22 + @file CHTTPFormEncoder.h
  441.23 + @warning : This file contains Rose Model ID comments - please do not delete
  441.24 +*/
  441.25 +
  441.26 +#ifndef __CHTTPFORMENCODER__
  441.27 +#define __CHTTPFORMENCODER__
  441.28 +
  441.29 +// System includes
  441.30 +#include <http/mhttpdatasupplier.h>
  441.31 +
  441.32 +//##ModelId=3C4C187902EB
  441.33 +class CHTTPFormEncoder : public CBase, public MHTTPDataSupplier
  441.34 +/** 
  441.35 +A data supplier class that is used to build up data that is to be encoded to application/x-www-form-urlencoded.
  441.36 +
  441.37 +A client will create an instance of this class and add name/value pairs. They then use this as the data supplier for the 
  441.38 +body of an http request that is a forms submission.  
  441.39 +
  441.40 +The name and value must both be supplied in the correct character encoding that you want to send to the server. This then 
  441.41 +gets url encoded.
  441.42 +@publishedAll
  441.43 +@released
  441.44 +*/
  441.45 +	{
  441.46 +public:
  441.47 +	//##ModelId=3C4C18790347
  441.48 +	IMPORT_C static CHTTPFormEncoder* NewL();
  441.49 +	//##ModelId=3C4C18790346
  441.50 +	IMPORT_C  ~CHTTPFormEncoder();
  441.51 +
  441.52 +	// from MHTTPDataSupplier
  441.53 +	//##ModelId=3C4C1879033D
  441.54 +	virtual TBool GetNextDataPart(TPtrC8& aDataPart);
  441.55 +	//##ModelId=3C4C1879033C
  441.56 +	virtual void ReleaseData();
  441.57 +	//##ModelId=3C4C1879033B
  441.58 +	virtual TInt OverallDataSize();
  441.59 +	//
  441.60 +	//##ModelId=3C4C18790335
  441.61 +	virtual TInt Reset();
  441.62 +
  441.63 +	/** Adds a field to the data.
  441.64 +	A field consists a name and value pair
  441.65 +	@param aFieldName A name. This must not be empty
  441.66 +	@param aFieldValue A value. This may be an empty descriptor
  441.67 +	@leave KErrNoMemory There was not enough memory
  441.68 +	@leave KErrArgument aFieldName was empty
  441.69 +	@panic Will panic if called after the first data has been supplied or OverallDataSize has been called
  441.70 +	*/
  441.71 +	//##ModelId=3C4C18790332
  441.72 +	IMPORT_C void AddFieldL(const TDesC8& aFieldName, const TDesC8& aFieldValue);
  441.73 +	
  441.74 +	
  441.75 +private:
  441.76 +	//##ModelId=3C4C18790331
  441.77 +	CHTTPFormEncoder();
  441.78 +	//##ModelId=3C4C1879032A
  441.79 +	void ConstructL();
  441.80 +	
  441.81 +	//##ModelId=3C4C18790328
  441.82 +	TBool IsAlphaNumeric(TUint8 aChar);
  441.83 +	//##ModelId=3C4C1879031F
  441.84 +	void AppendSpecialChar(TUint8 aChar);
  441.85 +	//##ModelId=3C4C1879031D
  441.86 +	void AppendData(const TDesC8& aData);
  441.87 +
  441.88 +private:
  441.89 +	enum THTTPFormEncoderState
  441.90 +		{
  441.91 +		EAllowAppendData, // when first constructed 
  441.92 +		ESuppliedSize,
  441.93 +		ESupplyingData,    // GetDataChunk has been called but ReleaseData has not
  441.94 +		EDataReleased
  441.95 +		};
  441.96 +
  441.97 +	//##ModelId=3C4C18790315
  441.98 +	THTTPFormEncoderState iState;
  441.99 +	//##ModelId=3C4C1879030D
 441.100 +	HBufC8* iData;		// data is ALWAYS kept in the form-url-encoded format
 441.101 +	};
 441.102 +
 441.103 +#endif // __CHTTPFORMENCODER__
   442.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   442.2 +++ b/epoc32/include/mw/chttpresponse.h	Wed Mar 31 12:27:01 2010 +0100
   442.3 @@ -0,0 +1,363 @@
   442.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   442.5 +// All rights reserved.
   442.6 +// This component and the accompanying materials are made available
   442.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   442.8 +// which accompanies this distribution, and is available
   442.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  442.10 +//
  442.11 +// Initial Contributors:
  442.12 +// Nokia Corporation - initial contribution.
  442.13 +//
  442.14 +// Contributors:
  442.15 +//
  442.16 +// Description:
  442.17 +// Purpose:  This file provides the definition of the CHTTPResponse class.
  442.18 +// The HTTP Response class encodes HTTP response headers only. It
  442.19 +// contains the methods used to transcode from WSP->HTTP fields
  442.20 +// 
  442.21 +//
  442.22 +
  442.23 +#ifndef __CHTTPRESPONSE_H__
  442.24 +#define __CHTTPRESPONSE_H__
  442.25 +
  442.26 +// System includes
  442.27 +//
  442.28 +#include <e32base.h>
  442.29 +#include <logdef.h>
  442.30 +#include <httpstd.h>
  442.31 +#include <thttpfields.h>
  442.32 +
  442.33 +
  442.34 +// Forward class declarations
  442.35 +//
  442.36 +class CPushMessage;
  442.37 +
  442.38 +// Class definition for CHTTPResponse
  442.39 +//
  442.40 +//##ModelId=3B712B9A0231
  442.41 +class CHTTPResponse : public CBase
  442.42 +/**
  442.43 +@publishedAll
  442.44 +@deprecated
  442.45 +*/
  442.46 +    {
  442.47 +public:	// Methods
  442.48 +
  442.49 +	// Factory method to construct this class.
  442.50 +	//
  442.51 +	// Rtn: a new CHTTPResponse object, by ptr. Ownership is transferred to the
  442.52 +	//      caller.
  442.53 +	//
  442.54 +	//##ModelId=3B712B9B000A
  442.55 +	IMPORT_C static CHTTPResponse* NewL();
  442.56 +
  442.57 +	// Destructor for this class. Removes this object and releases memory held
  442.58 +	// by it
  442.59 +	//
  442.60 +	//##ModelId=3B712B9B0000
  442.61 +	IMPORT_C virtual ~CHTTPResponse();
  442.62 +
  442.63 +	// Clean out the fields buffer
  442.64 +	//
  442.65 +	//##ModelId=3B712B9A03D6
  442.66 +	IMPORT_C void Reset();
  442.67 +
  442.68 +	// Set the fields buffer with the response received from the WAP Stack
  442.69 +	//
  442.70 +	// In:
  442.71 +	//  aResponse - an 8-bit descriptor field containing the origin server's
  442.72 +	//				WSP-encoded response header. Ownership is transferred to
  442.73 +	//				this class.
  442.74 +	//
  442.75 +	//##ModelId=3B712B9A03D4
  442.76 +	IMPORT_C void AddResponse(HBufC8* aResponse);
  442.77 +
  442.78 +	// Accessor to the HTTP response fields buffer
  442.79 +	//
  442.80 +	// Rtn: a reference to the response. Ownership is _NOT_ transferred
  442.81 +	//
  442.82 +	// NOTE THIS SHOULD RETURN CONST - BUT CAN'T BE CHANGED SINCE IT WOULD
  442.83 +	// BREAK BC.
  442.84 +	//##ModelId=3B712B9A03CA
  442.85 +	IMPORT_C HBufC8& Response() const;
  442.86 +
  442.87 + 	// Accessor to the HTTP status code (e.g. 400, 300, 200, 500)
  442.88 +	//
  442.89 +	// Rtn: the status code - series number only.
  442.90 +	//
  442.91 +	//##ModelId=3B712B9A03C1
  442.92 +	IMPORT_C THttpStatusCode StatusCode() const;
  442.93 +
  442.94 + 	// Accessor to the HTTP detailed status code (e.g. 404, 304, 200, 501)
  442.95 +	//
  442.96 +	// Rtn: the status code - series and specific code value
  442.97 +	//
  442.98 +	//##ModelId=3B712B9A03C0
  442.99 +	IMPORT_C THttpStatusCode DetailedStatusCode() const;
 442.100 +
 442.101 +	// Accessor to set the HTTP response status.
 442.102 +	//
 442.103 +	// In:
 442.104 +	//  aCode - the WSP-encoded status code
 442.105 +	//
 442.106 +	//##ModelId=3B712B9A03B6
 442.107 +	IMPORT_C void SetStatusCode(TInt aCode);
 442.108 +
 442.109 +	// Method to find a named field, that returns null terminated 
 442.110 +	// WSP text strings.
 442.111 +	//
 442.112 +	// In:
 442.113 +	//  aField		- the field type
 442.114 +	//  aStartIndex	- the index to search from (defaults to the buffer start)
 442.115 +	//
 442.116 +	// Out:
 442.117 +	//  aDesc - a pointer-type descriptor into the response buffer at the
 442.118 +	//			position where the field was located. The caller must NOT
 442.119 +	//			modify the descriptor contents
 442.120 +	//
 442.121 +	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 442.122 +	//
 442.123 +	//##ModelId=3B712B9A0390
 442.124 +	IMPORT_C TBool FindField(THttpHeaderField aField
 442.125 +                             , TPtrC8& aDesc
 442.126 +                             , TInt aStartIndex = 0) const;
 442.127 +
 442.128 +	// Method to find a named field, that returns 8-bit octet data (binary
 442.129 +	// or strings - not stipulated which).
 442.130 +	//
 442.131 +	// In:
 442.132 +	//  aField		- the field type
 442.133 +	//  aStartIndex	- the index to search from (defaults to the buffer start)
 442.134 +	//
 442.135 +	// Out:
 442.136 +	//  aDesc - a pointer-type descriptor into the response buffer at the
 442.137 +	//			position where the field was located. The caller must NOT
 442.138 +	//			modify the descriptor contents
 442.139 +	//
 442.140 +	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 442.141 +	//
 442.142 +	//##ModelId=3B712B9A0384
 442.143 +	IMPORT_C TBool FindBinaryDescField(THttpHeaderField aField 
 442.144 +							, TPtrC8& aDesc
 442.145 +							, TInt aStartIndex = 0) const;
 442.146 +
 442.147 +	// Method to find a named field, that returns an EPOC date/time structure.
 442.148 +	//
 442.149 +	// In:
 442.150 +	//  aField		- the field type
 442.151 +	//  aStartIndex	- the index to search from (defaults to the buffer start)
 442.152 +	//
 442.153 +	// Out:
 442.154 +	//  aTime - a structure containing the time (and date) found in the header
 442.155 +	//
 442.156 +	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 442.157 +	//
 442.158 +	//##ModelId=3B712B9A03A2
 442.159 +	IMPORT_C TBool FindField(THttpHeaderField aField
 442.160 +                             , TTime& aTime
 442.161 +                             , TInt aStartIndex = 0) const;
 442.162 +
 442.163 +	// Method to find a named field within the Cache Control header
 442.164 +	//
 442.165 +	// In:
 442.166 +	//  aField		- the field type
 442.167 +	//
 442.168 +	// Out:
 442.169 +	//
 442.170 +	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 442.171 +	//
 442.172 +	//##ModelId=3B712B9A0370
 442.173 +	IMPORT_C TInt FindCacheControlFieldValue(TCacheControlFieldValue aField) const;
 442.174 +
 442.175 +	// Method to find a named field within the Cache Control header, 
 442.176 +	// that returns an EPOC date/time structure.
 442.177 +	//
 442.178 +	// In:
 442.179 +	//  aField		- the field type
 442.180 +	//
 442.181 +	// Out:
 442.182 +	//  aTime - a structure containing the time (and date) found in the header field
 442.183 +	//
 442.184 +	// Rtn: TBool - set to ETrue if the field was found, EFalse otherwise
 442.185 +	//
 442.186 +	//##ModelId=3B712B9A035C
 442.187 +	IMPORT_C TBool ExtractCacheControlTime(TCacheControlFieldValue aField, TTime& aTime) const;
 442.188 +
 442.189 +	// Method to search for the content type encoded in the response header
 442.190 +	//
 442.191 +	// Out:
 442.192 +	//  aDesc - a pointer-type descriptor into the appropriate element of an
 442.193 +	//			array prefilled with all the content types that have WSP
 442.194 +	//			encodings. e.g. "text/vnd.wap.wml".  The contents of the
 442.195 +	//			descriptor must NOT be modified.
 442.196 +	//
 442.197 +	//##ModelId=3B712B9A0348
 442.198 +	IMPORT_C void ContentType(TPtrC8& aDesc) const;
 442.199 +
 442.200 +	// Method to search for the realm encoded in the response header, when the
 442.201 +	// response challenges the client for HTTP authentication (code 401)
 442.202 +	//
 442.203 +	// Out:
 442.204 +	//  aDesc - a pointer-type descriptor into the response header buffer
 442.205 +	//			positioned at the realm string within the challenge. The
 442.206 +	//			contents of the descriptor must NOT be modified.
 442.207 +	//
 442.208 +	// Rtn: TBool - set to ETrue if a www-authenticate realm was found, EFalse
 442.209 +	//				otherwise
 442.210 +	//
 442.211 +	//##ModelId=3B712B9A033F
 442.212 +	IMPORT_C TBool FindRealm(TPtrC8& aRealm) const;
 442.213 +
 442.214 +	// Method to search for the character set encoded in the Content-Type
 442.215 +	// field ofthe response header
 442.216 +	//
 442.217 +	// Out:
 442.218 +	//  aDesc - a pointer-type descriptor into the appropriate element of an
 442.219 +	//			array prefilled with all the character sets that have WSP
 442.220 +	//			encodings. e.g. "utf-8".  The contents of the descriptor must
 442.221 +	//			NOT be modified.
 442.222 +	//
 442.223 +	// Rtn: TBool - set to ETrue if a character set was found, EFalse if not
 442.224 +	//
 442.225 +	//##ModelId=3B712B9A032A
 442.226 +	IMPORT_C TBool CharSet(TPtrC8& aDesc) const;
 442.227 +
 442.228 +protected: // Methods
 442.229 +
 442.230 +	// Normal constructor - do non-allocating creation of this class
 442.231 +	//
 442.232 +    IMPORT_C CHTTPResponse();
 442.233 +
 442.234 +	// Second phase construction - any allocation for this class must take place
 442.235 +	// here. Sets up the resources required by an HTTP Response.
 442.236 +	//
 442.237 +	//##ModelId=3B712B9A0322
 442.238 +	IMPORT_C void ConstructL();
 442.239 +
 442.240 +	//friend class declaration - only need the following function
 442.241 +	friend class CPushMessage;
 442.242 +	// Method to locate a named field in the response header, starting at the
 442.243 +	// specified index position.
 442.244 +	//
 442.245 +	// In:
 442.246 +	//  aField		- the header field type
 442.247 +	//  aStartIndex - the (optional) position in the header to start searching
 442.248 +	//
 442.249 +	// Rtn: TInt - the index position of the required field _value_ (not the
 442.250 +	//             field name), or KErrNotFound otherwise.
 442.251 +	//
 442.252 +	//##ModelId=3B712B9A030D
 442.253 +	IMPORT_C TInt LocateField(THttpHeaderField aField, TInt aStartIndex = 0) const; 
 442.254 +
 442.255 +	// Perform a look-up of content type given a WSP encoding value, used as
 442.256 +	// an index.
 442.257 +	//
 442.258 +	// In:
 442.259 +	//  aIndex - the WSP encoding value
 442.260 +	//
 442.261 +	// Rtn: const TText8* - the required content type text - NOT to be changed
 442.262 +	//
 442.263 +	//##ModelId=3B712B9A0352
 442.264 +	IMPORT_C const TText8* ContentType(TInt aContentTypeCode) const;
 442.265 +
 442.266 + 	// Perform a look-up of character set given a WSP encoding value, used as
 442.267 +	// an index.
 442.268 +	//
 442.269 +	// In:
 442.270 +	//  aCharsetCode - the index into the content types table/
 442.271 +	//
 442.272 +	// Rtn: const TText8* - the required 8-bit character set text - NOT to be
 442.273 +	//						changed by the caller
 442.274 +	//
 442.275 +	//##ModelId=3B712B9A0334
 442.276 +	IMPORT_C const TText8* CharSet(TInt aCharsetCode) const;
 442.277 +
 442.278 +private: // Attributes
 442.279 +
 442.280 +	// The 8-bit buffer used to store the HTTP response fields
 442.281 +	//
 442.282 +	//##ModelId=3B712B9A02AA
 442.283 +    HBufC8* iResponse;
 442.284 +
 442.285 +	// The HTTP Status code (coarse - ie. series only, e.g. 100, 200 etc.)
 442.286 +	//
 442.287 +	//##ModelId=3B712B9A0296
 442.288 +    THttpStatusCode iStatusCode;
 442.289 +
 442.290 +	// The detailed HTTP Status code (within series, e.g. 102, 204, 401 etc.)
 442.291 +	//
 442.292 +	//##ModelId=3B712B9A0282
 442.293 +    THttpStatusCode iDetailedStatusCode;
 442.294 +
 442.295 +	// Declare the CLogClient pointer
 442.296 +   	__DECLARE_LOG
 442.297 +
 442.298 +private: // Methods
 442.299 +
 442.300 +	// Do a conversion from 32-bit UIntVar encoding into 32-bit integer
 442.301 +	//
 442.302 +	TInt ParseUIntVar(const TDesC8& aBuffer, TInt& aVal) const;
 442.303 +
 442.304 +	// Extract a WSP encoded MultiOctet Integer encoding into 32-bit integer
 442.305 +	//
 442.306 +	// In:
 442.307 +	//  aSource	- the source Multi-Octet integer
 442.308 +	//
 442.309 +	// Out:
 442.310 +	//  aInt		- the 32-bit resulting integer
 442.311 +	//
 442.312 +	//##ModelId=3B712B9A02F8
 442.313 +	void ExtractMultiOctetInteger(TInt& aInt, const TPtrC8& aSource) const;
 442.314 +
 442.315 +	// Method to find a named field within the Cache Control header
 442.316 +	//
 442.317 +	// In:
 442.318 +	//  aSource		- the descriptor containing the date value
 442.319 +	//	aFrom		- The position in the descriptor to start from
 442.320 +	//
 442.321 +	// Out:
 442.322 +	//  aTime - a structure containing the time (and date) found in the descriptor
 442.323 +	//
 442.324 +	//##ModelId=3B712B9A02E4
 442.325 +	void ExtractFieldDateValue(const TPtrC8& aSource, TInt aFrom, TTime& aTime) const;
 442.326 +
 442.327 +	// Method to find a named field within the Cache Control header
 442.328 +	//
 442.329 +	// In:
 442.330 +	//  aField		- the field type
 442.331 +	//
 442.332 +	// Out:
 442.333 +	//	the found aCacheControl string
 442.334 +	//
 442.335 +	// Rtn: TInt - set to KErrNotFound if the field was not found,
 442.336 +	//		otherwise the position in the cache control descriptor that the field was found
 442.337 +	//
 442.338 +	//##ModelId=3B712B9A0372
 442.339 +	TInt FindCacheControlFieldValue(TCacheControlFieldValue aField,TPtrC8& aCacheControl) const;
 442.340 +
 442.341 +	//##ModelId=3B712B9A02DA
 442.342 +    void Panic(THttpPanicCode aPanicCode) const;
 442.343 +
 442.344 +	// Spare methods for future BC. Const- and non-const versions to assist
 442.345 +	// the caller in preserving const-ness. IMPORT_C ensures they reserve a
 442.346 +	// slot in the vtbl, which is essential to preseve future BC.
 442.347 +	//
 442.348 +	//##ModelId=3B712B9A02D0
 442.349 +	IMPORT_C virtual TAny* Extend_CHTTPResponse(TAny* aArgs);
 442.350 +	//##ModelId=3B712B9A02C6
 442.351 +	IMPORT_C virtual TAny* Extend_CHTTPResponse_const(TAny* aArgs) const;
 442.352 +
 442.353 +#if defined _DEBUG
 442.354 +	// Debug method definition to allow class invariant testing
 442.355 +	// Called by the standard macro __TEST_INVARIANT
 442.356 +	//
 442.357 +	//##ModelId=3B712B9A02BD
 442.358 +	void __DbgTestInvariant() const;
 442.359 +
 442.360 +	//##ModelId=3B712B9A02B2
 442.361 +	void DumpToLog(const TDesC8& aData) const;
 442.362 +#endif
 442.363 +
 442.364 +	};
 442.365 +
 442.366 +#endif // __CHTTPRESPONSE_H__
   443.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   443.2 +++ b/epoc32/include/mw/clock.h	Wed Mar 31 12:27:01 2010 +0100
   443.3 @@ -0,0 +1,389 @@
   443.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   443.5 +// All rights reserved.
   443.6 +// This component and the accompanying materials are made available
   443.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   443.8 +// which accompanies this distribution, and is available
   443.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  443.10 +//
  443.11 +// Initial Contributors:
  443.12 +// Nokia Corporation - initial contribution.
  443.13 +//
  443.14 +// Contributors:
  443.15 +//
  443.16 +// Description:
  443.17 +//
  443.18 +
  443.19 +#if !defined(__CLOCK_H__)
  443.20 +#define __CLOCK_H__
  443.21 +
  443.22 +#if !defined(__E32STD_H__)
  443.23 +#include <e32std.h>
  443.24 +#endif
  443.25 +
  443.26 +#if !defined(__E32BASE_H__)
  443.27 +#include <e32base.h>
  443.28 +#endif
  443.29 +
  443.30 +#if !defined(__W32STD_H__)
  443.31 +#include <w32std.h>
  443.32 +#endif
  443.33 +
  443.34 +//
  443.35 +// miscellaneous typedefs
  443.36 +//
  443.37 +/** @internalComponent */
  443.38 +typedef TBuf8<1024> TConstructorBuf8; // implementation class
  443.39 +
  443.40 +//
  443.41 +// miscellaneous enums
  443.42 +//
  443.43 +
  443.44 +/** @internalComponent */
  443.45 +enum TDisplayType // implementation class
  443.46 +	{
  443.47 +	EDisplayDigital,
  443.48 +	EDisplayAnalog
  443.49 +	};
  443.50 +
  443.51 +/** @internalComponent */
  443.52 +enum TAnalogDisplayHandFeatureType // implementation class
  443.53 +	{
  443.54 +	EAnalogDisplayHandFeatureLine,
  443.55 +	EAnalogDisplayHandFeaturePolyLine,
  443.56 +	EAnalogDisplayHandFeatureCircle
  443.57 +	};
  443.58 +
  443.59 +/** Horizontal alignment options for text in a digital clock's display.
  443.60 +
  443.61 +@see TDigitalDisplayTextSection 
  443.62 +@publishedAll
  443.63 +@released */
  443.64 +enum TDigitalDisplayHorizontalTextAlignment
  443.65 +	{
  443.66 +	/** Left align text. */
  443.67 +	EDigitalDisplayHorizontalTextAlignmentLeft,
  443.68 +	/** Centre align text. */
  443.69 +	EDigitalDisplayHorizontalTextAlignmentCenter,
  443.70 +	/** Right align text. */
  443.71 +	EDigitalDisplayHorizontalTextAlignmentRight
  443.72 +	};
  443.73 +
  443.74 +/** Vertical alignment options for text in a digital clock's display.
  443.75 +
  443.76 +@see TDigitalDisplayTextSection 
  443.77 +@publishedAll
  443.78 +@released */
  443.79 +enum TDigitalDisplayVerticalTextAlignment
  443.80 +	{
  443.81 +	/** Top align text. */
  443.82 +	EDigitalDisplayVerticalTextAlignmentTop,
  443.83 +	/** Centre align text, including the character descent. */
  443.84 +	EDigitalDisplayVerticalTextAlignmentCenterInclDescent,
  443.85 +	/** Centre align text, excluding the character descent. */
  443.86 +	EDigitalDisplayVerticalTextAlignmentCenterExclDescent,
  443.87 +	/** Bottom align text, including the character descent. */
  443.88 +	EDigitalDisplayVerticalTextAlignmentBottomInclDescent,
  443.89 +	/** Bottom align text, excluding the character descent. */
  443.90 +	EDigitalDisplayVerticalTextAlignmentBottomExclDescent
  443.91 +	};
  443.92 +
  443.93 +/** Special characters that can be used in a digital clock display.
  443.94 +
  443.95 +@see TDigitalDisplayTextSection 
  443.96 +@publishedAll
  443.97 +@released */
  443.98 +enum TDigitalDisplayLayoutChar
  443.99 +	{
 443.100 +	/** A flashing block to delimit different sections of the display.
 443.101 +	 */
 443.102 +	/** A flashing block to delimit different sections of the display. */
 443.103 +	EDigitalDisplayLayoutCharFlashingBlockDelimiter=1
 443.104 +	};
 443.105 +
 443.106 +//
 443.107 +/** Different types of hand for an analogue clock. 
 443.108 +
 443.109 +@publishedAll
 443.110 +@released */
 443.111 +enum TAnalogDisplayHandType
 443.112 +	{
 443.113 +	/** A hand that performs one revolution every 12 hours. */
 443.114 +	EAnalogDisplayHandOneRevPer12Hours,
 443.115 +	/** A hand that performs one revolution every hour. */
 443.116 +	EAnalogDisplayHandOneRevPerHour,
 443.117 +	/** A hand that performs one revolution every minute. */
 443.118 +	EAnalogDisplayHandOneRevPerMinute
 443.119 +	};
 443.120 +
 443.121 +//
 443.122 +// miscellaneous structs
 443.123 +//
 443.124 +
 443.125 +struct STimeDeviceShadow
 443.126 +/** Determines how shadows are added to the clock display. 
 443.127 +
 443.128 +@publishedAll
 443.129 +@released */
 443.130 +	{
 443.131 +	/** True if shadows should be displayed, else false. */
 443.132 +	TBool iIsOn;
 443.133 +	/** Colour of the shadows. */
 443.134 +	TRgb iColor;
 443.135 +	/** Offset of shadows from foreground. */
 443.136 +	TPoint iOffset;
 443.137 +	};
 443.138 +
 443.139 +struct SAnalogDisplayAmPm
 443.140 +/** Defines the display parameters of the AM/PM display for an analogue clock.
 443.141 +
 443.142 +@see RAnalogClock 
 443.143 +@publishedAll
 443.144 +@released */
 443.145 +	{
 443.146 +	/** Position relative to the clock face. */
 443.147 +	TPoint iPositionRelativeToFace;
 443.148 +	/** Size. */
 443.149 +	TSize iSize;
 443.150 +	/** Shadow settings. */
 443.151 +	STimeDeviceShadow iShadow;
 443.152 +	/** Background colour. */
 443.153 +	TRgb iBackgroundColor;
 443.154 +	/** Handle to the font to use. This can be obtained using CFbsFont::Handle().
 443.155 +	
 443.156 +	@see CFbsFont::Handle() */
 443.157 +	TInt iFontHandle;
 443.158 +	/** Colour for text. */
 443.159 +	TRgb iTextColor;
 443.160 +	};
 443.161 +
 443.162 +//
 443.163 +// display-addition classes
 443.164 +//
 443.165 +
 443.166 +
 443.167 +class TDisplayAddition
 443.168 +/** This class is used in the derivation of TAnalogDisplayHand and TDigitalDisplayTextSection. 
 443.169 +
 443.170 +@internalComponent */
 443.171 +	{
 443.172 +public:
 443.173 +	const TDesC8& Buf() const;
 443.174 +protected:
 443.175 +	TConstructorBuf8 iBuf;
 443.176 +	};
 443.177 +
 443.178 +//
 443.179 +
 443.180 +class TDigitalDisplayTextSection : public TDisplayAddition
 443.181 +/** A text section for a digital clock.
 443.182 +
 443.183 +@see RDigitalClock 
 443.184 +@publishedAll 
 443.185 +@released */
 443.186 +	{
 443.187 +public:
 443.188 +	IMPORT_C TDigitalDisplayTextSection(TInt aFontHandle, TRgb aTextColor, TDigitalDisplayHorizontalTextAlignment aHorizontalAlignment,
 443.189 +																TDigitalDisplayVerticalTextAlignment aVerticalAlignment,
 443.190 +																TInt aHorizontalMargin, TInt aVerticalMargin, const TDesC& aFormat);
 443.191 +																// N.B. the font passed in to aFontHandle cannot be destroyed until the
 443.192 +																// RDigitalClock has been completely constructed, including all necessary
 443.193 +																// calls to RDigitalClock::AddTextSectionL()
 443.194 +	};
 443.195 +
 443.196 +//
 443.197 +
 443.198 +class TAnalogDisplayHand : public TDisplayAddition
 443.199 +/** A hand for an analogue clock.
 443.200 +
 443.201 +A hand is a vector drawing made from a number of features (lines, circles, 
 443.202 +polylines). These are specified with the hand assumed to be in the 12 o'clock 
 443.203 +position, with TPoint(0,0) being the center of the clock.
 443.204 +
 443.205 +@see RAnalogClock 
 443.206 +@publishedAll 
 443.207 +@released */
 443.208 +	{
 443.209 +public:
 443.210 +	IMPORT_C TAnalogDisplayHand(TAnalogDisplayHandType aType);
 443.211 +	IMPORT_C void AddLine(CGraphicsContext::TPenStyle aPenStyle, TRgb aPenColor, const TSize& aPenSize,
 443.212 +																const TPoint& aStartPoint, const TPoint& aEndPoint);
 443.213 +	IMPORT_C void AddPolyLine(CGraphicsContext::TPenStyle aPenStyle, TRgb aPenColor, const TSize& aPenSize,
 443.214 +																CGraphicsContext::TBrushStyle aBrushStyle, TRgb aBrushColor,
 443.215 +																TBool aClosed, const CArrayFix<TPoint>* aPointList); // aPointList is not destroyed
 443.216 +	IMPORT_C void AddCircle(CGraphicsContext::TPenStyle aPenStyle, TRgb aPenColor, const TSize& aPenSize,
 443.217 +																CGraphicsContext::TBrushStyle aBrushStyle, TRgb aBrushColor,
 443.218 +																const TPoint& aCircleCenter, TInt aRadius);	
 443.219 +	inline TInt NumFeatures() const 
 443.220 +	/** Gets the number of features added to the hand. */
 443.221 +		{return *iNumFeaturesPtr;}
 443.222 +private:
 443.223 +	void AppendType(TAnalogDisplayHandFeatureType aType);
 443.224 +private:
 443.225 +	TInt* iNumFeaturesPtr;
 443.226 +	};
 443.227 +
 443.228 +//
 443.229 +// utility class
 443.230 +//
 443.231 +
 443.232 +class RAnimWithUtils : public RAnim
 443.233 +/** Utility class to support clock animation. 
 443.234 +
 443.235 +@publishedAll
 443.236 +@released
 443.237 +*/
 443.238 +	{
 443.239 +protected:
 443.240 +	RAnimWithUtils(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 443.241 +	void AppendToConstructorBufL(const TDesC8& aData);
 443.242 +	void SendConstructorBufIfCompleteL(TInt aAnimatedObjectType);
 443.243 +	void SendConstructorBufL(TInt aAnimatedObjectType);
 443.244 +	TBool ConstructorBufExists() const;
 443.245 +	TBool ConstructorBufAlreadySent() const;
 443.246 +	TConstructorBuf8& ConstructorBuf() const;
 443.247 +	void SetNumAdditionsStillExpected(TInt aNumAdditionsStillExpected);
 443.248 +public:
 443.249 +	IMPORT_C virtual void Close();
 443.250 +private:
 443.251 +	TConstructorBuf8* iConstructorBuf; // on the heap as it is only required for construction
 443.252 +	TBool iConstructorBufAlreadySent;
 443.253 +	const RWindowBase& iWindow;
 443.254 +	TInt iNumAdditionsStillExpected;
 443.255 +	};
 443.256 +
 443.257 +//
 443.258 +// time-device abstract classes
 443.259 +//
 443.260 +
 443.261 +
 443.262 +class RTimeDevice : public RAnimWithUtils
 443.263 +/** Sets display parameters for clocks.
 443.264 + 
 443.265 +@publishedAll
 443.266 +@released
 443.267 +*/
 443.268 +	{
 443.269 +protected:
 443.270 +	RTimeDevice(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 443.271 +	void AppendDisplayTypeL(TDisplayType aType);
 443.272 +	void AppendDigitalDisplayConstructorArgsL(const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins, const STimeDeviceShadow& aShadow,
 443.273 +																TRgb aBackgroundColor, TInt aNumTextSections);
 443.274 +	void AppendAnalogDisplayConstructorArgsL(const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins, const STimeDeviceShadow& aShadow,
 443.275 +																TInt aFaceHandle, TInt aFaceMaskHandle, TInt aNumHands, const SAnalogDisplayAmPm* aAmPm);
 443.276 +public:
 443.277 +	IMPORT_C void SetVisible(TBool aVisible); // can only be called after full construction - by default clocks are invisible
 443.278 +	IMPORT_C void SetPositionAndSize(const TPoint& aPosition, const TSize& aSize); // can only be called after full construction
 443.279 +	IMPORT_C void SetPosition(const TPoint& aPosition); // can only be called after full construction
 443.280 +	IMPORT_C void SetSize(const TSize& aSize); // can only be called after full construction
 443.281 +	IMPORT_C void UpdateDisplay(); // can only be called after full construction
 443.282 +	IMPORT_C void Draw(); // can only be called after full construction
 443.283 +	};
 443.284 +
 443.285 +//
 443.286 +
 443.287 +class RClock : public RTimeDevice
 443.288 +/** Sets the time for clocks.
 443.289 +
 443.290 +@publishedAll
 443.291 +@released */
 443.292 +	{
 443.293 +protected:
 443.294 +	RClock(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 443.295 +	void AppendClockConstructorArgsL(TTimeIntervalSeconds aUniversalTimeOffset);
 443.296 +public:
 443.297 +	IMPORT_C void SetUniversalTimeOffset(TTimeIntervalSeconds aUniversalTimeOffset); // can only be called after full construction
 443.298 +	};
 443.299 +
 443.300 +//
 443.301 +// time-device concrete classes
 443.302 +//
 443.303 +
 443.304 +class RDigitalClock : public RClock
 443.305 +/** A digital clock.
 443.306 +
 443.307 +A digital clock is composed of one or more text sections, which define
 443.308 +how the time information is displayed.
 443.309 +
 443.310 +@publishedAll 
 443.311 +@released */
 443.312 +	{
 443.313 +public:
 443.314 +	IMPORT_C RDigitalClock(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 443.315 +	IMPORT_C void ConstructL(TTimeIntervalSeconds aUniversalTimeOffset, const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins,
 443.316 +																const STimeDeviceShadow& aShadow, TRgb aBackgroundColor, TInt aNumTextSections);
 443.317 +	IMPORT_C void AddTextSectionL(const TDigitalDisplayTextSection& aTextSection);
 443.318 +	IMPORT_C void SetBackgroundColor(TRgb aBackgroundColor, TRgb aShadowColor); // can only be called after full construction
 443.319 +	IMPORT_C void SetTextColor(TRgb aTextColor);
 443.320 +
 443.321 +	};
 443.322 +
 443.323 +//
 443.324 +
 443.325 +
 443.326 +class RAnalogClock : public RClock
 443.327 +/** An analogue clock.
 443.328 +
 443.329 +@see CFbsBitmap::Handle() 
 443.330 +@publishedAll 
 443.331 +@released */
 443.332 +
 443.333 +	{
 443.334 +public:
 443.335 +	IMPORT_C RAnalogClock(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 443.336 +	IMPORT_C void ConstructL(TTimeIntervalSeconds aUniversalTimeOffset, const TPoint& aPosition, const TSize& aSize, const TMargins& aMargins,
 443.337 +																const STimeDeviceShadow& aShadow, TInt aFaceHandle, TInt aFaceMaskHandle, TInt aNumHands, const SAnalogDisplayAmPm* aAmPm=NULL);
 443.338 +																// N.B. the bitmap(s) passed in to aFaceHandle and aFaceMaskHandle in these
 443.339 +																// ConstructL functions cannot be destroyed until the RAnalogClock has been
 443.340 +																// completely constructed, including all necessary calls to
 443.341 +																// RAnalogClock::AddHandL() - aFaceMaskHandle may be 0
 443.342 +	IMPORT_C void AddHandL(const TAnalogDisplayHand& aHand);
 443.343 +	IMPORT_C void SetBackgroundColor(TRgb aBackgroundColor, TRgb aShadowColor); // can only be called after full construction
 443.344 +	IMPORT_C void SetTextColor(TRgb aTextColor);
 443.345 +	IMPORT_C void SetPenColor(const TRgb aPenColor);
 443.346 +	IMPORT_C void SetBrushColor(const TRgb aBrushColor);
 443.347 +	};
 443.348 +
 443.349 +//
 443.350 +// message-window class
 443.351 +//
 443.352 +
 443.353 +
 443.354 +class RMessageWindow : public RAnimWithUtils
 443.355 +/** A configurable window that appears for a brief time to display a message to 
 443.356 +the user and then disappears.
 443.357 +
 443.358 +This is the basic class that is used by classes such as CEikonEnv and CEikMsgWin 
 443.359 +to provide information and message windows. Such higher-level classes would 
 443.360 +normally be used by client applications rather than RMessageWindow. This class 
 443.361 +can be used though to implement specialist new classes. 
 443.362 +
 443.363 +Note that this class is in the same library as the Clock API for implementation 
 443.364 +reasons only.
 443.365 +
 443.366 +@see CEikMsgWin
 443.367 +@see CEikonEnv 
 443.368 +@publishedAll 
 443.369 +@released */
 443.370 +	{
 443.371 +public:
 443.372 +	/** Defines the maximum length of text in the message. */
 443.373 +	enum
 443.374 +		{
 443.375 +		/** Maximum length of text in the message. */
 443.376 +		EMaxTextLength=80
 443.377 +		};
 443.378 +public:
 443.379 +	IMPORT_C RMessageWindow(RAnimDll& aAnimDll, const RWindowBase& aWindow);
 443.380 +	IMPORT_C void ConstructL(TInt aBaselineOffset, TInt aFontHandle, TRgb aBackgroundColor, TRgb aTextColor);
 443.381 +	IMPORT_C void ConstructL(TInt aBaselineOffset, TInt aFontHandle, TRgb aBackgroundColor, TRgb aTextColor, TRgb aBorderColor);
 443.382 +	IMPORT_C void StartDisplay(TBool aFlash, TTimeIntervalMicroSeconds32 aInitialDelay, const TDesC& aText);
 443.383 +	IMPORT_C void StartDisplay(TBool aFlash, TTimeIntervalMicroSeconds32 aInitialDelay, TTimeIntervalMicroSeconds32 aDuration, const TDesC& aText);
 443.384 +	IMPORT_C void CancelDisplay();
 443.385 +	IMPORT_C void GetBorders(TMargins& aBorders);
 443.386 +	IMPORT_C void SetBackgroundColor(TRgb aBackgroundColor);
 443.387 +	IMPORT_C void SetTextColor(TRgb aTextColor);
 443.388 +	IMPORT_C void SetBorderColor(TRgb aBorderColor);
 443.389 +	IMPORT_C void SetPlinthColors(TRgb aTl,TRgb aBr);
 443.390 +	};
 443.391 +
 443.392 +#endif
   444.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   444.2 +++ b/epoc32/include/mw/cmarkedstack.h	Wed Mar 31 12:27:01 2010 +0100
   444.3 @@ -0,0 +1,84 @@
   444.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   444.5 +// All rights reserved.
   444.6 +// This component and the accompanying materials are made available
   444.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   444.8 +// which accompanies this distribution, and is available
   444.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  444.10 +//
  444.11 +// Initial Contributors:
  444.12 +// Nokia Corporation - initial contribution.
  444.13 +//
  444.14 +// Contributors:
  444.15 +//
  444.16 +// Description:
  444.17 +// Template class to implement a marked stack. Conatins a stack itself of marks 
  444.18 +// providing basic marking functionality.
  444.19 +// 
  444.20 +//
  444.21 +
  444.22 +#ifndef __CMARKEDSTACK_H__
  444.23 +#define __CMARKEDSTACK_H__
  444.24 +
  444.25 +// includes
  444.26 +#include <e32base.h>
  444.27 +#include <cstack.h>
  444.28 +
  444.29 +//##ModelId=3B666BCD0001
  444.30 +
  444.31 +template <class T, TBool Owner>
  444.32 +class CMarkedStack : public CStack<T, Owner>
  444.33 +/** Provides a templated stack that allows items in the stack to be marked.
  444.34 +
  444.35 +The class allows each mark to have an associated TInt value, which allows different 
  444.36 +types of mark to be used on the same stack.
  444.37 +
  444.38 +Template parameter T specifies the type of object on the stack. Owner should be set to 
  444.39 +ETrue if the object's destructor should delete the objects on the stack.
  444.40 +    @publishedAll
  444.41 +    @released
  444.42 + 
  444.43 +*/
  444.44 +{
  444.45 +protected:
  444.46 +class TMarkPoint
  444.47 +/** Represents a mark.
  444.48 + */
  444.49 +{
  444.50 +public:
  444.51 +	/** Represents a mark. */	
  444.52 +	TMarkPoint(TInt aMarkType
  444.53 +		   , TInt aIndex)
  444.54 +	  : iMarkType(aMarkType)
  444.55 +	  , iStackIndex(aIndex)
  444.56 +	{}
  444.57 +	/** Mark type. */
  444.58 +	TInt iMarkType;
  444.59 +	/** Index of the marked stack item. */
  444.60 +	TInt iStackIndex;
  444.61 +};
  444.62 +/** Defines a stack of marks. */
  444.63 +typedef CStack<TMarkPoint, ETrue> CMarks;
  444.64 +public:
  444.65 +	//##ModelId=3B666BCD0048
  444.66 +	inline virtual ~CMarkedStack();
  444.67 +
  444.68 +	//##ModelId=3B666BCD0041
  444.69 +	inline void MarkL(TInt aMarkType);
  444.70 +	//##ModelId=3B666BCD003F
  444.71 +	inline TInt RemoveMark(TInt aMarkType);
  444.72 +	//##ModelId=3B666BCD003D
  444.73 +	inline void DeleteToMark(TInt aMarkType);
  444.74 +	//##ModelId=3B666BCD0033
  444.75 +	inline void ResetToMark(TInt aMarkType);
  444.76 +protected:
  444.77 +	/** A stack of marks.
  444.78 +
  444.79 +	Items are added and removed from this stack by MarkL(), RemoveMark() etc.
  444.80 +	*/
  444.81 +	//##ModelId=3B666BCD002D
  444.82 +	CMarks iMarks;
  444.83 +};
  444.84 +
  444.85 +#include <cmarkedstack.inl>
  444.86 +
  444.87 +#endif // __CMARKEDSTACK_H__
   445.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   445.2 +++ b/epoc32/include/mw/cmsvattachment.h	Wed Mar 31 12:27:01 2010 +0100
   445.3 @@ -0,0 +1,158 @@
   445.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   445.5 +// All rights reserved.
   445.6 +// This component and the accompanying materials are made available
   445.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   445.8 +// which accompanies this distribution, and is available
   445.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  445.10 +//
  445.11 +// Initial Contributors:
  445.12 +// Nokia Corporation - initial contribution.
  445.13 +//
  445.14 +// Contributors:
  445.15 +//
  445.16 +// Description:
  445.17 +//
  445.18 +
  445.19 +#ifndef __CMSVATTACHMENT_H__
  445.20 +#define __CMSVATTACHMENT_H__
  445.21 +
  445.22 +#include <e32base.h>
  445.23 +#include <msvstd.h>
  445.24 +
  445.25 +/**
  445.26 +Attachment Id for uniquely identifying attachments. 
  445.27 +
  445.28 +This is unique on a per message entry basis.
  445.29 +
  445.30 +@publishedAll
  445.31 +@released
  445.32 +*/
  445.33 +typedef TUint TMsvAttachmentId;
  445.34 +
  445.35 +/**
  445.36 +DRM Mime type
  445.37 +
  445.38 +@publishedPartner
  445.39 +@released
  445.40 +*/
  445.41 +_LIT8(KEpocMimeTypeDrm,"X-Epoc/DRM.Receipt");
  445.42 +
  445.43 +class CMsvAttributeManager;
  445.44 +
  445.45 +/**
  445.46 +Represents a single attachment and information about the attachment.
  445.47 +
  445.48 +This object is used to represent all types of attachments (file, linked file or message 
  445.49 +entry). Note that some APIs may not be valid for particular attachment types. This is
  445.50 +described under each method. It is the responsibility of the client to ensure that the
  445.51 +data about the attachment is set such as its mime-type or size.
  445.52 +
  445.53 +@publishedAll
  445.54 +@released
  445.55 +*/
  445.56 +class CMsvAttachment : public CBase
  445.57 +	{
  445.58 +public:
  445.59 +	/**
  445.60 +	Enum to define the different types of attachments supported by messaging.
  445.61 +	*/
  445.62 +	enum TMsvAttachmentType
  445.63 +		{
  445.64 +		/**
  445.65 +		File attachment. This is a file attachment that is copied into the message store.
  445.66 +		*/
  445.67 +		EMsvFile = 0,
  445.68 +		/**
  445.69 +		Linked file attachment. This is an attachment that is linked to using its file path,
  445.70 +		this is not copied into the message store.
  445.71 +		*/
  445.72 +		EMsvLinkedFile,
  445.73 +		/**
  445.74 +		Message entry attachment. This is a message entry that is registered as an attachment.
  445.75 +		*/
  445.76 +		EMsvMessageEntry
  445.77 +		};
  445.78 +	
  445.79 +public:
  445.80 +	IMPORT_C static CMsvAttachment* NewL(TMsvAttachmentType aType);
  445.81 +	IMPORT_C static CMsvAttachment* NewL(TMsvAttachmentType aType, TInt aSize, HBufC8* aMimeType, HBufC* aAttachmentName);
  445.82 +	
  445.83 +	IMPORT_C static CMsvAttachment* NewL(const CMsvAttachment& aAttachment);
  445.84 +	
  445.85 +	IMPORT_C ~CMsvAttachment();
  445.86 +	
  445.87 +	IMPORT_C TMsvAttachmentId Id() const;
  445.88 +	IMPORT_C void SetId(TMsvAttachmentId aId);
  445.89 +	
  445.90 +	IMPORT_C TMsvAttachmentType Type() const;
  445.91 +	
  445.92 +	IMPORT_C TMsvId EntryAttachmentId() const;
  445.93 +	void SetEntryAttachmentId(TMsvId aEntryId);
  445.94 +	
  445.95 +	IMPORT_C const TDesC& AttachmentName() const;
  445.96 +	IMPORT_C void SetAttachmentNameL(const TDesC& aAttachmentName);
  445.97 +	
  445.98 +	IMPORT_C const TDesC& FilePath() const;
  445.99 +	void SetFilePathL(const TDesC& aFilePath);
 445.100 +	
 445.101 +	IMPORT_C TInt Size() const;
 445.102 +	IMPORT_C void SetSize(TInt aSize);
 445.103 +	
 445.104 +	IMPORT_C const TDesC8& MimeType() const;
 445.105 +	IMPORT_C void SetMimeTypeL(const TDesC8& aMimeType);
 445.106 +		
 445.107 +	IMPORT_C TBool Complete() const;
 445.108 +	IMPORT_C void SetComplete(TBool aComplete);
 445.109 +	
 445.110 +	IMPORT_C void SetDesC8AttributeL(TUid aAttributeId, const TDesC8& aAttribute);
 445.111 +	IMPORT_C TInt GetDesC8Attribute(TUid aAttributeId, TPtrC8& aAttribute) const;
 445.112 +	IMPORT_C void RemoveDesC8Attribute(TUid aAttributeId);
 445.113 +	
 445.114 +	IMPORT_C void SetIntAttributeL(TUid aAttributeId, TInt aAttribute);
 445.115 +	IMPORT_C TInt GetIntAttribute(TUid aAttributeId, TInt& aAttribute) const;
 445.116 +	IMPORT_C void RemoveIntAttribute(TUid aAttributeId);
 445.117 +	
 445.118 +	void InternalizeL(RReadStream& aStream);
 445.119 +	void ExternalizeL(RWriteStream& aStream) const;
 445.120 +	
 445.121 +	TBool IsPathRequired() const;
 445.122 +	
 445.123 +private:
 445.124 +	CMsvAttachment(TMsvAttachmentType aType);
 445.125 +	CMsvAttachment(TMsvAttachmentType aType, TInt aSize, HBufC8* aMimeType, HBufC* aAttachmentName);
 445.126 +	void ConstructL();
 445.127 +	void ConstructL(const CMsvAttachment& aAttachment);
 445.128 +	
 445.129 +private:
 445.130 +	/** The unique attachment Id. This is unique per message entry and is auto-assigned. */
 445.131 +	TMsvAttachmentId iId;
 445.132 +	
 445.133 +	/** The attachment type. */
 445.134 +	TMsvAttachmentType iType;
 445.135 +	
 445.136 +	/** Size of the attachment in bytes. */
 445.137 +	TInt iSize;
 445.138 +	
 445.139 +	/** Descriptor indicating the mime type of the attachment. */
 445.140 +	HBufC8* iMimeType;
 445.141 +			
 445.142 +	/** The full file path and file name of attachment files and linked files. */
 445.143 +	HBufC* iFilePath;
 445.144 +		
 445.145 +	/** The message entry Id of the entry attachment. */
 445.146 +	TMsvId iEntryId;
 445.147 +	
 445.148 +	/** Name of the attachment to identify to the attachment. */
 445.149 +	HBufC* iAttachmentName;
 445.150 +	
 445.151 +	/** Attachment entry completeness flag. */
 445.152 +	TBool iComplete;
 445.153 +	
 445.154 +	/** Attribute manager for handling the attributes for this attachment. */
 445.155 +	CMsvAttributeManager* iAttributeManager;
 445.156 +	
 445.157 +	/** Flag to indicate whether a path needs to be added. */
 445.158 +	TBool iNeedsPath;
 445.159 +	};
 445.160 +
 445.161 +#endif // __CMSVATTACHMENT_H__
   446.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   446.2 +++ b/epoc32/include/mw/cmsvmimeheaders.h	Wed Mar 31 12:27:01 2010 +0100
   446.3 @@ -0,0 +1,180 @@
   446.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   446.5 +// All rights reserved.
   446.6 +// This component and the accompanying materials are made available
   446.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   446.8 +// which accompanies this distribution, and is available
   446.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  446.10 +//
  446.11 +// Initial Contributors:
  446.12 +// Nokia Corporation - initial contribution.
  446.13 +//
  446.14 +// Contributors:
  446.15 +//
  446.16 +// Description:
  446.17 +//
  446.18 +
  446.19 +#ifndef __CMSVMIMEHEADERS_H__
  446.20 +#define __CMSVMIMEHEADERS_H__
  446.21 +
  446.22 +#include <e32base.h>
  446.23 +
  446.24 +class CDesC8ArrayFlat;
  446.25 +class CMsvAttachment;
  446.26 +class CDesC8Array;
  446.27 +
  446.28 +/**
  446.29 +String literal for Base64 encoding.
  446.30 +@publishedAll
  446.31 +@released
  446.32 +*/
  446.33 +_LIT8(KMsvBase64String, "Base64");
  446.34 +
  446.35 +/**
  446.36 +String literal for Quoted-Printable encoding.
  446.37 +@publishedAll
  446.38 +@released
  446.39 +*/
  446.40 +_LIT8(KMsvQPString, "quoted-printable");
  446.41 +
  446.42 +/**
  446.43 +String literal for 7 bit encoding.
  446.44 +@publishedAll
  446.45 +@released
  446.46 +*/
  446.47 +_LIT8(KMsv7BitString, "7bit");
  446.48 +
  446.49 +/**
  446.50 +String literal for 8 bit encoding.
  446.51 +@publishedAll
  446.52 +@released
  446.53 +*/
  446.54 +_LIT8(KMsv8BitString, "8bit");
  446.55 +
  446.56 +/**
  446.57 +String literal for binary encoding.
  446.58 +@publishedAll
  446.59 +@released
  446.60 +*/
  446.61 +_LIT8(KMsvBinaryString, "binary");
  446.62 +
  446.63 +/**
  446.64 +String literal for UU encoding.
  446.65 +@publishedAll
  446.66 +@released
  446.67 +*/
  446.68 +_LIT8(KMsvUUString, "uuencode");
  446.69 +
  446.70 +/**
  446.71 +Utility class to represent commonly used Mime Headers. This object represents a number
  446.72 +of common Mime Headers into a single class. It is intended that this class is used to
  446.73 +represent the Mime Headers for an attachment represented by the CMsvAttachment class when
  446.74 +using the Attachment API. The Mime header data can be associated with an attachment and 
  446.75 +stored and restored using the StoreL and RestoreL methods.
  446.76 +@publishedAll
  446.77 +@released
  446.78 +*/
  446.79 +class CMsvMimeHeaders : public CBase
  446.80 +	{
  446.81 +public:
  446.82 +
  446.83 +/** Messaging encoding types. 
  446.84 +@publishedAll
  446.85 +@released
  446.86 +*/
  446.87 +enum TMsvEncodingType 
  446.88 +	{
  446.89 +	/** Unknown. */
  446.90 +	EEncodingTypeUnknown,
  446.91 +	/** None. */
  446.92 +	EEncodingTypeNone,
  446.93 +	/** 7-bit. */
  446.94 +	EEncodingType7Bit,
  446.95 +	/** 8-bit. */
  446.96 +	EEncodingType8Bit,		// ie lines still <1000 chars and terminated by CRLF
  446.97 +	/** Binary. */
  446.98 +	EEncodingTypeBinary,	// ie any length of data, not terminated by CRLF
  446.99 +	/** QP. */
 446.100 +	EEncodingTypeQP,
 446.101 +	/** Base64. */
 446.102 +	EEncodingTypeBASE64,
 446.103 +	/** UU. */
 446.104 +	EEncodingTypeUU
 446.105 +	};
 446.106 +	
 446.107 +public:
 446.108 +	IMPORT_C static CMsvMimeHeaders* NewL();
 446.109 +	IMPORT_C static CMsvMimeHeaders* NewLC();
 446.110 +	IMPORT_C ~CMsvMimeHeaders();
 446.111 +	
 446.112 +	IMPORT_C void StoreL(CMsvAttachment& aAttachment) const;
 446.113 +	IMPORT_C void RestoreL(CMsvAttachment& aAttachment);
 446.114 +	
 446.115 +	IMPORT_C void SetContentDescriptionL(const TDesC8& aContentDescription);
 446.116 +	IMPORT_C const TDesC8& ContentDescription() const;
 446.117 +	
 446.118 +	IMPORT_C void SetContentBaseL(const TDesC8& aContentBase);
 446.119 +	IMPORT_C const TDesC8& ContentBase() const;
 446.120 +	
 446.121 +	IMPORT_C void SetContentLocationL(const TDesC16& aContentLocation);
 446.122 +	IMPORT_C const TDesC16& ContentLocation() const;
 446.123 +	
 446.124 +	IMPORT_C void SetContentIdL(const TDesC8& aContentId);
 446.125 +	IMPORT_C const TDesC8& ContentId() const;
 446.126 +	
 446.127 +	IMPORT_C void SetContentTypeL(const TDesC8& aContentType);
 446.128 +	IMPORT_C const TDesC8& ContentType() const;
 446.129 +	
 446.130 +	IMPORT_C void SetContentSubTypeL(const TDesC8& aSubContentType);
 446.131 +	IMPORT_C const TDesC8& ContentSubType() const;
 446.132 +	
 446.133 +	IMPORT_C void SetContentDispositionL(const TDesC8& aContentDisposition);
 446.134 +	IMPORT_C const TDesC8& ContentDisposition() const;
 446.135 +	
 446.136 +	IMPORT_C CDesC8Array& ContentTypeParams();
 446.137 +	IMPORT_C CDesC8Array& ContentDispositionParams();
 446.138 +	IMPORT_C CDesC8Array& XTypeParams();
 446.139 +	
 446.140 +	IMPORT_C const CDesC8Array& ContentTypeParams() const;
 446.141 +	IMPORT_C const CDesC8Array& ContentDispositionParams() const;
 446.142 +	IMPORT_C const CDesC8Array& XTypeParams() const;
 446.143 +	
 446.144 +	IMPORT_C void SetMimeCharset(TUint aMimeCharset);
 446.145 +	IMPORT_C TUint MimeCharset() const;
 446.146 +	
 446.147 +	IMPORT_C void SetSuggestedFilenameL(const TDesC16& aSuggestedFilename);
 446.148 +	IMPORT_C const TDesC16& SuggestedFilename() const;
 446.149 +	
 446.150 +	IMPORT_C void SetRelativePathL(const TDesC8& aRelativePath);
 446.151 +	IMPORT_C const TDesC8& RelativePath() const;
 446.152 +	
 446.153 +	IMPORT_C void SetContentTransferEncoding(const TDesC8& aEncodingType);
 446.154 +	IMPORT_C TMsvEncodingType ContentTransferEncoding() const;
 446.155 +	IMPORT_C TMsvEncodingType ContentTransferEncoding(TPtrC8& aEncodingType) const;
 446.156 +	IMPORT_C const TPtrC8 GetContentTypeValue(const TDesC8& aContentTypeParameter) const;
 446.157 +
 446.158 +	IMPORT_C void Reset();
 446.159 +	IMPORT_C TInt Size() const;
 446.160 +	IMPORT_C TBool ContainsMimeHeaders(const CMsvAttachment& aAttachment);
 446.161 +	
 446.162 +private:
 446.163 +	CMsvMimeHeaders();
 446.164 +	void ConstructL();
 446.165 +	
 446.166 +private:
 446.167 +	HBufC8* iContentDescription;
 446.168 +	HBufC8* iContentBase;
 446.169 +	HBufC16* iContentLocation;
 446.170 +	HBufC8* iContentId;
 446.171 +	HBufC8* iContentType;
 446.172 +	HBufC8* iContentSubType;
 446.173 +	HBufC8* iContentDisposition;
 446.174 +	CDesC8ArrayFlat* iContentTypeParams;            // zero or more "parameter"
 446.175 +	CDesC8ArrayFlat* iContentDispositionParams;     // zero or more "parameters"
 446.176 +	CDesC8ArrayFlat* iXTypeParams;                  // zero or more X-Type "parameters"
 446.177 +	TUint iMimeCharset;
 446.178 +	HBufC16* iSuggestedFilename;
 446.179 +	HBufC8* iRelativePath;
 446.180 +	TMsvEncodingType iContentTransferEncoding;
 446.181 +	};
 446.182 +
 446.183 +#endif // __CMSVMIMEHEADERS_H__
   447.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   447.2 +++ b/epoc32/include/mw/cmsvplainbodytext.h	Wed Mar 31 12:27:01 2010 +0100
   447.3 @@ -0,0 +1,156 @@
   447.4 +// CMSVPLAINBODYTEXT.H
   447.5 +
   447.6 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   447.7 +// All rights reserved.
   447.8 +// This component and the accompanying materials are made available
   447.9 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  447.10 +// which accompanies this distribution, and is available
  447.11 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  447.12 +//
  447.13 +// Initial Contributors:
  447.14 +// Nokia Corporation - initial contribution.
  447.15 +//
  447.16 +// Contributors:
  447.17 +//
  447.18 +// Description:
  447.19 +//
  447.20 +
  447.21 +#ifndef __CMSVPLAINBODYTEXT_H__
  447.22 +#define __CMSVPLAINBODYTEXT_H__
  447.23 +
  447.24 +
  447.25 +#include <msvstore.h>
  447.26 +#include <mentact.h>
  447.27 +#include <charconv.h>
  447.28 +
  447.29 +class CMsvStore;
  447.30 +class CRichText;
  447.31 +class CParaFormatLayer;
  447.32 +class CCharFormatLayer;
  447.33 +class CCnvCharacterSetConverter;
  447.34 +
  447.35 +/**
  447.36 +This class encapsulates plainbody text information for storage within the
  447.37 +Message Store.It also populates a CRichText object with the 8 bit data
  447.38 +decoded to the specified character set.If a character set is not specified,
  447.39 +then the default character set is used.
  447.40 +
  447.41 +@publishedAll
  447.42 +@released
  447.43 +*/
  447.44 +class CMsvPlainBodyText : public CMsgActive
  447.45 +	{
  447.46 +public:
  447.47 +	static CMsvPlainBodyText* NewL(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId, TMsvId aMessageId, RFs& aFs);
  447.48 +	static CMsvPlainBodyText* NewL(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TMsvId aMessageId, RFs& aFs, TInt aChunkLength);
  447.49 +
  447.50 +	IMPORT_C ~CMsvPlainBodyText();
  447.51 +
  447.52 +	IMPORT_C void StoreChunkL(const TDesC8& aChunk, TRequestStatus& aStatus);
  447.53 +	IMPORT_C void StoreChunkL(const TDesC8& aChunk);
  447.54 +
  447.55 +	IMPORT_C void StoreChunkL(const TDesC16& aChunk, TRequestStatus& aStatus);
  447.56 +	IMPORT_C void StoreChunkL(const TDesC16& aChunk);
  447.57 +
  447.58 +	IMPORT_C void StoreRichTextAsPlainTextL(CRichText& aRichText);
  447.59 +
  447.60 +	IMPORT_C void CommitL();
  447.61 +
  447.62 +	IMPORT_C void NextChunkL(TDes8& aChunk, TRequestStatus& aStatus);
  447.63 +	IMPORT_C void NextChunkL(TDes8& aChunk);
  447.64 +
  447.65 +	IMPORT_C void NextChunkL(TDes16& aChunk, TRequestStatus& aStatus);
  447.66 +	IMPORT_C void NextChunkL(TDes16& aChunk);
  447.67 +
  447.68 +	IMPORT_C void PreviousChunkL(TDes8& aChunk, TRequestStatus& aStatus);
  447.69 +	IMPORT_C void PreviousChunkL(TDes8& aChunk);
  447.70 +
  447.71 +	IMPORT_C void PreviousChunkL(TDes16& aChunk, TRequestStatus& aStatus);
  447.72 +	IMPORT_C void PreviousChunkL(TDes16& aChunk);
  447.73 +
  447.74 +
  447.75 +	IMPORT_C void SetCharacterSetL(const TUint aCharset);
  447.76 +	IMPORT_C TUint CharacterSet();
  447.77 +	IMPORT_C TUint DefaultCharacterSet();
  447.78 +
  447.79 + 	IMPORT_C TInt Size();
  447.80 +
  447.81 +private:
  447.82 +	CMsvPlainBodyText(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore, TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId, TMsvId aMessageId, RFs& aFs);
  447.83 +	void ConstructWriteL();
  447.84 +
  447.85 +	CMsvPlainBodyText(MMsvStoreManager& aMsvStoreManager, CMsvStore& aStore,TMsvId aMessageId, RFs& aFs,TInt aChunkLength);
  447.86 +	void ConstructReadL();
  447.87 +
  447.88 +	void PrepareToConvertL();
  447.89 +	void ConvertChunkToUnicodeForStoreL(const TDesC8& aChunk);
  447.90 +	TInt ConvertChunkToUnicodeForRestoreL();
  447.91 +	void ExtractNextChunkFromRichText(TDes16& aChunk);
  447.92 +	void ExtractPreviousChunkFromRichText(TDes16& aChunk);
  447.93 +	void RevertL();
  447.94 +	void DoRunL();
  447.95 +	void DoComplete();
  447.96 +	void DoCancel();
  447.97 +
  447.98 +private:
  447.99 +	/** To access APIs related to RFile operations.*/
 447.100 +	MMsvStoreManager& 			  iMsvStoreManager;
 447.101 +	CMsvStore& 					  iStore;
 447.102 +	/** Indicates whether to store text as 8 bit or 16 bit.*/
 447.103 +	TBool 						  iIs8Bit;
 447.104 +	/** The charset of the body text*/
 447.105 +	TUint 						  iCharsetId;
 447.106 + 	TUint 					 	  iDefaultCharsetId;
 447.107 +
 447.108 + 	/** The RFile Path.*/
 447.109 +	HBufC*	 					  iFilePath;
 447.110 +  	TMsvId 						  iMessageId;
 447.111 +	RFs& 						  iFSession;
 447.112 +
 447.113 +	/** The RFile to which body text is written.*/
 447.114 +	RFile 						  iFile;
 447.115 +	/** Character converter for 8 to 16 bit conversion.*/
 447.116 +	CCnvCharacterSetConverter* 	  iConverter;
 447.117 +	CRichText* 					  iRichText;
 447.118 +	CParaFormatLayer* 			  iParaLayer;
 447.119 +	CCharFormatLayer* 			  iCharLayer;
 447.120 +	TInt 						  iReadChunkLength;
 447.121 +	/** Temporary buffer created to Store chunk while it is being written aynchronously.*/
 447.122 +	RBuf16	 					  iTempChunk16;
 447.123 +	/** Buffer used to read data from RFile.*/
 447.124 +	RBuf8 						  iRfileReadBuf8;
 447.125 +	/** Pointer to 8-bit buffer that needs to be written to RFile.*/
 447.126 +	TPtrC8 						  iRfileWritePtr8;
 447.127 +	/** The position from where to extract data in CRichText*/
 447.128 +	TInt 						  iPos;
 447.129 +	/** Contains the size of the chunk that will be read or write in the RFile*/
 447.130 +	TInt 					 	  iChunkMaxLength;
 447.131 +	/** Contains the remaining unconverted Unicode Data*/
 447.132 +	HBufC8* 					  iRemainingUnConvertedData;
 447.133 +	/** Array that stores the start positions of each chunk,in Rfile*/
 447.134 +	RArray<TInt> 			 	  iStartPosOfEachChunkInFile;
 447.135 +	/** Contains the start position of the next chunk*/
 447.136 +	TInt 						  iStartPosOfNextChunk;
 447.137 +	/** Contains the remaining converted Unicode Data*/
 447.138 +	RBuf16						  iRemainingConvertedData;
 447.139 +	/** Pointer to a 16 bit chunk that is being read from the store.*/
 447.140 +	TDes16*	 					  iChunk16;
 447.141 +	/** Pointer to a 8 bit chunk that is being read from the store.*/
 447.142 +	TDes8* 						  iChunk8;
 447.143 +	/** Indicates whether the Rfile is commited or not.*/
 447.144 +	TBool 						  iIsCommitted;
 447.145 +
 447.146 +	/** Indicates whether the chunk being read is last.*/
 447.147 +	TBool 						  iIsLastChunk;
 447.148 +	/** Indicates whether call to DoRunl was initiated by PreviousChunkL method.*/
 447.149 +	TBool 						  iPrevChunk;
 447.150 +	/** Indicates whether call to DoRunl was initiated by 8 bit PreviousChunkL and NextChunkL methods.*/
 447.151 +	TBool 						  iRetrieving8bit;
 447.152 +	/** Enum indicating if RFile is being written or read */
 447.153 +	enum {EMsvFileReading, EMsvFileWriting} iMsvFileStatus;
 447.154 +	CCnvCharacterSetConverter::TAvailability iAvailable;
 447.155 +	//Containes current position of the Rfile
 447.156 +	TInt 						 iCurrentFilePos;
 447.157 +	};
 447.158 +
 447.159 +#endif//__CMSVPLAINBODYTEXT_H__
   448.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   448.2 +++ b/epoc32/include/mw/cmsvrecipientlist.h	Wed Mar 31 12:27:01 2010 +0100
   448.3 @@ -0,0 +1,70 @@
   448.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   448.5 +// All rights reserved.
   448.6 +// This component and the accompanying materials are made available
   448.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   448.8 +// which accompanies this distribution, and is available
   448.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  448.10 +//
  448.11 +// Initial Contributors:
  448.12 +// Nokia Corporation - initial contribution.
  448.13 +//
  448.14 +// Contributors:
  448.15 +//
  448.16 +// Description:
  448.17 +//
  448.18 +
  448.19 +#ifndef __CMSVRECIPIENTLIST_H__
  448.20 +#define __CMSVRECIPIENTLIST_H__
  448.21 +
  448.22 +#include <e32base.h>
  448.23 +#include <badesca.h>
  448.24 +
  448.25 +
  448.26 +
  448.27 +// must be 4 bytes so that RArray works.
  448.28 +typedef TUint32 TMsvRecipientType;
  448.29 +
  448.30 +/**
  448.31 +@publishedAll
  448.32 +@released
  448.33 +*/
  448.34 +enum TMsvRecipientTypeValues
  448.35 +	{
  448.36 +	EMsvRecipientTo = 0,
  448.37 +	EMsvRecipientCc,
  448.38 +	EMsvRecipientBcc,
  448.39 +	};
  448.40 +
  448.41 +/**
  448.42 +@publishedAll
  448.43 +@released
  448.44 +*/
  448.45 +class CMsvRecipientList : public CBase
  448.46 +	{
  448.47 +public:
  448.48 +	static CMsvRecipientList* NewL();
  448.49 +	static CMsvRecipientList* NewLC();
  448.50 +	virtual ~CMsvRecipientList();
  448.51 +	//
  448.52 +	IMPORT_C void Reset();
  448.53 +	IMPORT_C TInt Count() const;
  448.54 +	//
  448.55 +	IMPORT_C void AppendL(const TDesC& aPtr);
  448.56 +	IMPORT_C void AppendL(TMsvRecipientType aValue, const TDesC& aPtr);
  448.57 +	//
  448.58 +	IMPORT_C void Delete(TInt aPos);
  448.59 +	IMPORT_C void Delete(TInt aPos, TInt aCount);
  448.60 +	//
  448.61 +	IMPORT_C TMsvRecipientType Type(TInt aPos) const;
  448.62 +	IMPORT_C const TDesC& operator[](TInt aIndex) const;
  448.63 +	//
  448.64 +	IMPORT_C const MDesCArray& RecipientList() const;
  448.65 +private:
  448.66 +	CMsvRecipientList();
  448.67 +	void ConstructL();
  448.68 +private:
  448.69 +	RArray<TMsvRecipientType> iRecipientType;
  448.70 +	CDesCArrayFlat*	iRecipients;
  448.71 +	};
  448.72 +
  448.73 +#endif //__CMSVRECIPIENTLIST_H__
   449.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   449.2 +++ b/epoc32/include/mw/cmsvtechnologytypedefaultmtmsettings.h	Wed Mar 31 12:27:01 2010 +0100
   449.3 @@ -0,0 +1,67 @@
   449.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   449.5 +// All rights reserved.
   449.6 +// This component and the accompanying materials are made available
   449.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   449.8 +// which accompanies this distribution, and is available
   449.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  449.10 +//
  449.11 +// Initial Contributors:
  449.12 +// Nokia Corporation - initial contribution.
  449.13 +//
  449.14 +// Contributors:
  449.15 +//
  449.16 +// Description:
  449.17 +//
  449.18 +
  449.19 +#ifndef __CMSVTECHNOLOGYTYPEDEFAULTMTMSETTINGS_H__
  449.20 +#define __CMSVTECHNOLOGYTYPEDEFAULTMTMSETTINGS_H__
  449.21 +
  449.22 +#include <e32base.h>
  449.23 +#include <e32cmn.h>
  449.24 +
  449.25 +class RFs;
  449.26 +class CRepository;
  449.27 +
  449.28 +
  449.29 +/**
  449.30 +Stores default MTM settings for a technology type to the Central Repository.
  449.31 +
  449.32 +@publishedAll
  449.33 +@released
  449.34 +*/
  449.35 +class CMsvTechnologyTypeDefaultMtmSettings : public CBase
  449.36 +	{
  449.37 +private:
  449.38 +	struct TMsvTechnologyTypeDefaultMtmInfo
  449.39 +		{
  449.40 +		TUid iTechnologyTypeUid;
  449.41 +		TUid iMtmUid;
  449.42 +		};
  449.43 +
  449.44 +public:
  449.45 +	IMPORT_C static CMsvTechnologyTypeDefaultMtmSettings* NewL( RFs& aFs );
  449.46 +	IMPORT_C ~CMsvTechnologyTypeDefaultMtmSettings( );
  449.47 +	
  449.48 +	IMPORT_C TInt DefaultMtm( TUid aTechnologyTypeUid, TUid& aMtmUid ) const;
  449.49 +	IMPORT_C void SetDefaultMtmL( TUid aTechnologyTypeUid, TUid aMtmUid );
  449.50 +	IMPORT_C TInt RemoveDefaultMtm( TUid aTechnologyTypeUid );
  449.51 +	
  449.52 +	// Stores and Restores data in the central repository
  449.53 +	IMPORT_C void LoadSettingsL( );
  449.54 +	IMPORT_C void SaveSettingsL( );
  449.55 +
  449.56 +private:
  449.57 +	CMsvTechnologyTypeDefaultMtmSettings( RFs& aFs );
  449.58 +	void ConstructL();
  449.59 +	void CheckIfMtmIsPartOfTechnologyTypeGroupL( const TUid aTechnologyTypeUid,
  449.60 +												 const TUid aMtmUid, const TUid aMtmTypeUid ) const;
  449.61 +	TInt FindDefaultMtm( const TUid aTechnologyTypeUid, 
  449.62 +						 TMsvTechnologyTypeDefaultMtmInfo& aTechnologyTypeDefaultMtmInfo ) const;
  449.63 +
  449.64 +private:
  449.65 +	CRepository* iRepository;
  449.66 +	RArray<TMsvTechnologyTypeDefaultMtmInfo> iTechnologyTypeDefaultMtmArray;
  449.67 +	RArray<TUid> iRemovedTechnologyTypes;
  449.68 +	RFs& iFs;
  449.69 +	};
  449.70 +#endif //__CMSVTECHNOLOGYTYPEDEFAULTMTMSETTINGS_H__
   450.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   450.2 +++ b/epoc32/include/mw/cnftool.rh	Wed Mar 31 12:27:01 2010 +0100
   450.3 @@ -0,0 +1,33 @@
   450.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   450.5 +// All rights reserved.
   450.6 +// This component and the accompanying materials are made available
   450.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   450.8 +// which accompanies this distribution, and is available
   450.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  450.10 +//
  450.11 +// Initial Contributors:
  450.12 +// Nokia Corporation - initial contribution.
  450.13 +//
  450.14 +// Contributors:
  450.15 +//
  450.16 +// Description:
  450.17 +// HEADER INFO
  450.18 +// 
  450.19 +//
  450.20 +
  450.21 +STRUCT CNF_FILE
  450.22 +/** Describes the converter DLL.
  450.23 +
  450.24 +@publishedAll 
  450.25 +@deprecated */
  450.26 +	{
  450.27 +	/** Future use, do not use */
  450.28 +	LLINK extension = 0;
  450.29 +	/** The DLL's UID3. */
  450.30 +	LONG dll_uid;
  450.31 +	/**  An array of CONVERTER_DATA resources describing the converters in the DLL.
  450.32 +	Target type: CONVERTER_DATA	*/
  450.33 +	LEN WORD STRUCT converter_list[]; // Converter_data
  450.34 +	}
  450.35 +
  450.36 +#include <conplugin.rh>
   451.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   451.2 +++ b/epoc32/include/mw/cnode.h	Wed Mar 31 12:27:01 2010 +0100
   451.3 @@ -0,0 +1,456 @@
   451.4 +/// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   451.5 +/// All rights reserved.
   451.6 +/// This component and the accompanying materials are made available
   451.7 +/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   451.8 +/// which accompanies this distribution, and is available
   451.9 +/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  451.10 +///
  451.11 +/// Initial Contributors:
  451.12 +/// Nokia Corporation - initial contribution.
  451.13 +///
  451.14 +/// Contributors:
  451.15 +///
  451.16 +/// Description:
  451.17 +/// All rights reserved.
  451.18 +/// This component and the accompanying materials are made available
  451.19 +/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  451.20 +/// which accompanies this distribution, and is available
  451.21 +/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  451.22 +/// Initial Contributors:
  451.23 +/// Nokia Corporation - initial contribution.
  451.24 +/// Contributors:
  451.25 +/// This contains the definitions of CDataDelete, CDataNoDelete, CIntAttribute, CNode, and CTypedNode.
  451.26 +/// CDataNoDelete is a base class to CDataDelete and are essentially a wrapper around an HBufC16.
  451.27 +/// The node owns the data that is added to it and therefore is responsible for deleting all its data,
  451.28 +/// hence theses two classes allow a user to have non deletable data. Internally to the node it is also 
  451.29 +/// sometimes necessary to change the data into either deletable or non-deletable data api's are provided
  451.30 +/// for this.
  451.31 +/// CIntAttribute is wrapper around a TInt, this is provided as the nodes attribute value is a CBase* however
  451.32 +/// it might be desirable to store integer's in here. Attribute value is owned by the node therefore the node is
  451.33 +/// responsible for deleting it.
  451.34 +/// CNode is the basis for constructing a tree. It consists of an array of child nodes, node type, a parent node,
  451.35 +/// an array of attributes, and a data member. Internally the data member is defined as CDataNoDelete however
  451.36 +/// to the user all the exported api's take an HBufC16*. Data is owned by the node and is destroyed by the node,
  451.37 +/// However in certain circumstances this is not desirable hence the api's to make the data non-deletable. The
  451.38 +/// node type is defined as a TAny* however normal usage would use the templated node - CTypedNode. The node type
  451.39 +/// is used to identify groups of nodes. The attribute array is fairy simple and consists of AttributeType and 
  451.40 +/// AttributeValue. AttributeType can be defined by using the templated class and should be a 32bit value. AttributeValue
  451.41 +/// can be any object derived from CBase and the node takes ownership therefore the node delete's it.
  451.42 +/// Basic usage should be to use the templated class in order to make use of the templated types (TNodeType,TAttributeType).
  451.43 +/// Create a node for example:
  451.44 +/// CTypedNode<CNode*, const TDesC*> *tree = CTypedNode<CNode*, const TDesC*>::NewL(0,0);
  451.45 +/// add a new child:
  451.46 +/// CNODE *TestChildNode1 = tree->AppendNodeL(aTempNodeForNodeType);
  451.47 +/// add some data:
  451.48 +/// TestChildNode1->SetDataL(aHBufC16);
  451.49 +/// add an attribute:
  451.50 +/// TestChildNode1->->AddAttributeL(aTAttributeType,aCBasePointerAttributeValue);
  451.51 +/// Explanation of individual api's is documented below.
  451.52 +///
  451.53 +
  451.54 +
  451.55 + 
  451.56 +
  451.57 +#ifndef __CNODE_H__
  451.58 +#define __CNODE_H__
  451.59 +
  451.60 +#include <e32base.h>
  451.61 +#include <f32file.h>
  451.62 +
  451.63 +
  451.64 +/**
  451.65 +	@file
  451.66 +	@publishedAll
  451.67 +	@released
  451.68 +*/
  451.69 +
  451.70 +//Granularity of arrays
  451.71 +const TInt KGranularity = 5;
  451.72 +
  451.73 +//enum of panic reasons
  451.74 +enum TNodePanic
  451.75 +	{
  451.76 +	ENodeBadArgument,
  451.77 +	ENodeNoChildren,
  451.78 +	ENoData,
  451.79 +	EAttributeFailure
  451.80 +	};
  451.81 +
  451.82 +//node panic function
  451.83 +inline void Panic(TNodePanic aPanic);
  451.84 +
  451.85 +//Wrapper around an HBufC16 doesn't delete data
  451.86 +//##ModelId=3B666BCC0303
  451.87 +class CDataNoDelete : public CBase
  451.88 +/** Provides a wrapper around an HBufC16: the buffer is not deleted when the object is deleted.
  451.89 +*/
  451.90 +	{
  451.91 +public:
  451.92 +	//##ModelId=3B666BCC032D
  451.93 +	CDataNoDelete(HBufC16* aData);
  451.94 +	//##ModelId=3B666BCC032C
  451.95 +	virtual ~CDataNoDelete();
  451.96 +	//##ModelId=3B666BCC0324
  451.97 +	HBufC16* SetData(HBufC16* aData);
  451.98 +	//##ModelId=3B666BCC0322
  451.99 +	virtual void ResetDataPointer(HBufC16* aData);
 451.100 +	//##ModelId=3B666BCC0321
 451.101 +	HBufC16* Data();
 451.102 +
 451.103 +protected:
 451.104 +	/** The wrapped buffer. */
 451.105 +	//##ModelId=3B666BCC0319
 451.106 +	HBufC16* iData;
 451.107 +	};
 451.108 +
 451.109 +//Wrapper around an HBufC16 does delete data
 451.110 +//##ModelId=3B666BCC0399
 451.111 +class CDataDelete : public CDataNoDelete
 451.112 +/** Provides a wrapper around an HBufC16: the buffer is deleted when the 
 451.113 +object is deleted.
 451.114 +*/
 451.115 +	{
 451.116 +public:
 451.117 +	//##ModelId=3B666BCC03B7
 451.118 +	CDataDelete(HBufC16* aData);
 451.119 +	//##ModelId=3B666BCC03B0
 451.120 +	virtual ~CDataDelete();
 451.121 +	//##ModelId=3B666BCC03AE
 451.122 +	virtual void ResetDataPointer(HBufC16* aData);
 451.123 +	};
 451.124 +
 451.125 +//Wrapper around an HBufC16 does delete data (FileName)
 451.126 +// After Removing referenced File 
 451.127 +//##ModelId=3B666BC7026F
 451.128 +class CFileDataDelete : public CDataNoDelete
 451.129 +/** Provides a wrapper around a filename: the referenced file is deleted when the object is deleted.
 451.130 +*/
 451.131 +	{
 451.132 +public:
 451.133 +	//##ModelId=3B666BC7028F
 451.134 +	CFileDataDelete(HBufC16* aData);
 451.135 +	//##ModelId=3B666BC7028E
 451.136 +	virtual ~CFileDataDelete();
 451.137 +	//##ModelId=3B666BC70285
 451.138 +	virtual void ResetDataPointer(HBufC16* aData);
 451.139 +private:
 451.140 +	//##ModelId=3B666BC70284
 451.141 +	void RemoveFile();
 451.142 +	};
 451.143 +
 451.144 +//Wrapper around a TInt used for attribute values in order to allow the node to call a dtor
 451.145 +//##ModelId=3B666BC6023E
 451.146 +class CIntAttribute : public CBase
 451.147 +/** Provides an object wrapper around a TInt value. */
 451.148 +	{
 451.149 +public:
 451.150 +	//##ModelId=3B666BC6025B
 451.151 +	inline CIntAttribute(TInt aInteger);		
 451.152 +	//##ModelId=3B666BC6025A
 451.153 +	inline TInt Int() const;
 451.154 +private:
 451.155 +	//##ModelId=3B666BC60264
 451.156 +	CIntAttribute();
 451.157 +	//##ModelId=3B666BC60253
 451.158 +	TInt iInteger;
 451.159 +	};
 451.160 +
 451.161 +//
 451.162 +// Node class
 451.163 +// Normal usage would be to use CTypedNode in order to use specific templated types
 451.164 +//
 451.165 +
 451.166 +//##ModelId=3B666BCD02D2
 451.167 +class CNode : public CBase 
 451.168 +	{
 451.169 +public:
 451.170 +	//##ModelId=3B666BCE0139
 451.171 +	IMPORT_C ~CNode();
 451.172 +
 451.173 +	//NewL parameters aType to indentify the type of node, CNode* to set the parent of this node
 451.174 +	//##ModelId=3B666BCE0125
 451.175 +	IMPORT_C static CNode* NewL(TAny* aType,CNode* aParent);
 451.176 +
 451.177 +	//Deletes a child node which is passed in as a parameter
 451.178 +	//##ModelId=3B666BCE011C
 451.179 +	IMPORT_C void DeleteChildNode(CNode* aNode);
 451.180 +
 451.181 +	//Deletes all the child nodes haging of this node
 451.182 +	//##ModelId=3B666BCE011B
 451.183 +	IMPORT_C void DeleteAllChildNodes();
 451.184 +
 451.185 +	//Creates a new node and adds it to the childlist, reference to new node is returned. Can leave if it can't allocate memory for a new node
 451.186 +	//Type of node is the parameter
 451.187 +	//##ModelId=3B666BCE0108
 451.188 +	IMPORT_C CNode& AppendNodeL(TAny* aType = 0);
 451.189 +
 451.190 +	//Appends a node which is passed in as a parameter to this node, so its added to the childlist
 451.191 +	//##ModelId=3B666BCE00FD
 451.192 +	IMPORT_C void AppendNodeToThisNodeL(CNode* aNode);
 451.193 +
 451.194 +	//Sets the data in the node to the parameter that is passed in. It's deletable and the node will delete it in dtor
 451.195 +	//Push aDataNowNodeOwns onto the CleanupStack before calling then pop off on return
 451.196 +	//##ModelId=3B666BCE00F3
 451.197 +	IMPORT_C void SetDataL(HBufC16* aDataNowNodeOwns);
 451.198 +
 451.199 +	//returns the data stored in the node, which is returned as an HBufC16*
 451.200 +	//##ModelId=3B666BCE00EB
 451.201 +	IMPORT_C HBufC16* Data() const;
 451.202 +
 451.203 +	//WARNING this function can leave as it deletes the wrapper object and then creates
 451.204 +	//a new non deletable wrapper object and sets the data pointer inside the new object
 451.205 +	//IF THIS LEAVES YOU WILL LOSE YOUR DATA
 451.206 +	//##ModelId=3B666BCE00EA
 451.207 +	IMPORT_C void SetDataNoDeleteL();
 451.208 +
 451.209 +	//WARNING this function can leave as it deletes the wrapper object and then creates
 451.210 +	//a new deletable wrapper object then sets the pointer in the new object
 451.211 +	//##ModelId=3B666BCE00E9
 451.212 +	IMPORT_C void ClearSetDataNoDeleteL();
 451.213 +
 451.214 +	// Sets the data in the node to the FileName parameter that is passed in. 
 451.215 +	// It's deletable and the node will delete it, and the file it refers to in dtor
 451.216 +	// Push aDataLocationNowNodeOwns onto the CleanupStack before calling then pop off on return
 451.217 +	//##ModelId=3B666BCE00DF
 451.218 +	IMPORT_C void SetFileDataL(HBufC16* aFileDataLocationNowNodeOwns);
 451.219 +
 451.220 +	//Resets the data pointer to point to aData parameter will delete the data that is owned by the node
 451.221 +	//##ModelId=3B666BCE00D5
 451.222 +	IMPORT_C void ResetDataPointer(HBufC16* aData);
 451.223 +
 451.224 +	//returns a reference to the absolute root of the tree
 451.225 +	//##ModelId=3B666BCE00CB
 451.226 +	IMPORT_C const CNode& Root() const;
 451.227 +
 451.228 +	//returns a child node which is stored in the array of children. The child node is accessed by the index that is the parameter.
 451.229 +	//##ModelId=3B666BCE00C1
 451.230 +	IMPORT_C CNode* Child(TInt aByIndex) const;
 451.231 +
 451.232 +	//Returns either the first child of this node if the parameter is NULL. Or it returns the next chld in the array after
 451.233 +	//the child passed in as a parameter
 451.234 +	//##ModelId=3B666BCE00AE
 451.235 +	IMPORT_C CNode* NextChild(const CNode* aNode = NULL) const;
 451.236 +
 451.237 +	//returns the previous child to the child passed in as a parameter. The node parameter is a reference because its the child previous
 451.238 +	//to the node passed in which obviously must exist
 451.239 +	//##ModelId=3B666BCE00A4
 451.240 +	IMPORT_C CNode* PrevChild(const CNode& aNode) const;
 451.241 +
 451.242 +	//Returns the parent of this node
 451.243 +	//##ModelId=3B666BCE00A3
 451.244 +	IMPORT_C CNode* Parent() const;
 451.245 +
 451.246 +	//WARNING this function can leave as it calls AppendNodeToThisNode. The aParent parameter is the node to which you would like to make
 451.247 +	//the parent of 'this' node.
 451.248 +	//It removes itself from the childlist of it's current parent
 451.249 +	//##ModelId=3B666BCE0099
 451.250 +	IMPORT_C void ReparentL(CNode* aParent);
 451.251 +
 451.252 +	//Returns the next sibling which means in effect that it asks for the next child of its parent.
 451.253 +	//Sibling means brother or sister.
 451.254 +	//##ModelId=3B666BCE0090
 451.255 +	IMPORT_C CNode* NextSibling() const;
 451.256 +
 451.257 +	//Returns the previous sibling which means in effect that it asks for the previous child of its parent.
 451.258 +	//Sibling means brother or sister.
 451.259 +	//##ModelId=3B666BCE008F
 451.260 +	IMPORT_C CNode* PrevSibling() const;
 451.261 +
 451.262 +	//returns the number of children that this node has
 451.263 +	//##ModelId=3B666BCE0085
 451.264 +	IMPORT_C TInt NumberImmediateChildren() const;
 451.265 +
 451.266 +	//Deletes the attribute of which is of aAttributeType (the parameter)
 451.267 +	//WARNING Attribute values of nodes will be deleted as the node owns them if you don't want it deleted then use a wrapper
 451.268 +	//##ModelId=3B666BCE007C
 451.269 +	IMPORT_C void DeleteAttribute(TAny* aAttributeType);
 451.270 +
 451.271 +	//Deletes all the attributes of this node
 451.272 +	//WARNING Attribute values of nodes will be deleted as the node owns them if you don't want it deleted then use a wrapper
 451.273 +	//##ModelId=3B666BCE007B
 451.274 +	IMPORT_C void DeleteAllAttributes();
 451.275 +
 451.276 +	//remove an attribute without deleting it, this is done by simply setting the attributeValue pointer to NULL
 451.277 +	//WARNING you are now responsiblefor the destruction of this attribute value
 451.278 +	//##ModelId=3B666BCE0071
 451.279 +	IMPORT_C void RemoveAttributeNoDelete(TAny* aAttributeType);
 451.280 +
 451.281 +	// Returns the number of attributes that this node has
 451.282 +	//##ModelId=3B666BCE0067
 451.283 +	IMPORT_C TInt AttributeCount() const;
 451.284 +
 451.285 +	//Returns the type of attribute (AttributeType) at a given index...NOT the attributeValue
 451.286 +	//##ModelId=3B666BCE005D
 451.287 +	IMPORT_C TAny* AttributeTypeByIndex(TInt aIndex) const; 
 451.288 +
 451.289 +	//Returns the value of an attribute (AttributeValue) at a given index...NOT the attributeType
 451.290 +	//##ModelId=3B666BCE003F
 451.291 +	IMPORT_C CBase* AttributeByIndex(TInt aIndex) const;
 451.292 +	//##ModelId=3B666BCE0049
 451.293 +	IMPORT_C CBase* AttributeByIndex(TInt aIndex,TAny*& aType) const;
 451.294 +
 451.295 +	//Adds an attribute, parameters are the type of attribute and its value
 451.296 +	//WARNING node takes ownership of aAttributeValue
 451.297 +	////Push aAttributeValue onto the CleanupStack before calling then pop off on return
 451.298 +	//##ModelId=3B666BCE002B
 451.299 +	IMPORT_C void AddAttributeL(TAny* AttributeType, CBase* aAttributeValue);
 451.300 +
 451.301 +	//Adds data to the node and also adds an attribute, parameters are the Data to be added, the type of attribute and its value
 451.302 +	//WARNING node takes ownership of aData and aAttributeValue
 451.303 +	////Push aAttributeValue and aData onto the CleanupStack before calling then pop off on return
 451.304 +	//##ModelId=3B666BCE000D
 451.305 +	IMPORT_C void AddDataAndAttributeL(HBufC16 *aData, TAny* AttributeType, CBase* aAttributeValue);
 451.306 +
 451.307 +	//Returns an attribute value for the given AttributeType(the parameter)
 451.308 +	//##ModelId=3B666BCE0003
 451.309 +	IMPORT_C CBase* Attribute(TAny* AttributeType) const;
 451.310 +
 451.311 +	//Returns TRUE if the attribute of the given type exists
 451.312 +	//##ModelId=3B666BCD03E1
 451.313 +	IMPORT_C TBool AttributeExists(TAny* aAttributeType) const;
 451.314 +
 451.315 +	//Returns the node type
 451.316 +	//##ModelId=3B666BCD03D7
 451.317 +	IMPORT_C TAny* Type() const;
 451.318 +
 451.319 +	//Sets the node type to be aType (the parameter)
 451.320 +	//##ModelId=3B666BCD03CD
 451.321 +	IMPORT_C void SetType(TAny* aType);
 451.322 +
 451.323 +
 451.324 +protected:
 451.325 +	//ctor
 451.326 +	//##ModelId=3B666BCD03B9
 451.327 +	CNode(TAny* aType, CNode* aParent);
 451.328 +
 451.329 +	//internal finds a child which is passed in as a parameter
 451.330 +	//##ModelId=3B666BCD03AF
 451.331 +	TInt FindChild(const CNode* aNode) const;
 451.332 +
 451.333 +	//##ModelId=3B666BCD03A7
 451.334 +	HBufC16* SetupDeletableOrNonDeleteableDataLC();
 451.335 +	//##ModelId=3B666BCD03A6
 451.336 +	void AdjustBasePointers();
 451.337 +private:
 451.338 +	// Reserved for future expansion
 451.339 +	//##ModelId=3B666BCD039B
 451.340 +	virtual void Reserved1();			
 451.341 +	//##ModelId=3B666BCD03A5
 451.342 +	virtual void Reserved1() const;
 451.343 +
 451.344 +protected:
 451.345 +	//the Type of Node
 451.346 +	//##ModelId=3B666BCD0392
 451.347 +	TAny* iType;
 451.348 +
 451.349 +	//This Nodes parent
 451.350 +	//##ModelId=3B666BCD037E
 451.351 +	CNode *iParent;
 451.352 +
 451.353 +	// stores attribute type and value. iTypes must be Flat array
 451.354 +	//##ModelId=3B666BCD0372
 451.355 +	CArrayPtrFlat<CBase> iValues;
 451.356 +	//##ModelId=3B666BCD034C
 451.357 +	CArrayPtrFlat<TAny> iTypes;
 451.358 +
 451.359 +	//##ModelId=3B666BCD0324
 451.360 +	TInt32* iTypesBasePtr;
 451.361 +	//##ModelId=3B666BCD0310
 451.362 +	CDataNoDelete* iDataValue;
 451.363 +//
 451.364 +	//An array of child nodes
 451.365 +	//##ModelId=3B666BCD02FC
 451.366 +	CArrayPtr<CNode> *iChildList;
 451.367 +private:
 451.368 +	//##ModelId=3B666BCD02DF
 451.369 +	TAny*	iReserved;						// Reserved for future expansion
 451.370 +	};
 451.371 +
 451.372 +
 451.373 +//CTypedNode is derived from CNode and is a thin template. TNodeType you should define as a 32 bit value
 451.374 +//TAttributeType should be defined as a 32 bit value
 451.375 +//FOR EXPLANATION OF API'S SEE ABOVE 
 451.376 +//##ModelId=3B666BCC01A4
 451.377 +template <class TNodeType, class TAttributeType>
 451.378 +class CTypedNode : public CNode 
 451.379 +/** Template class for a node in a node tree.
 451.380 +
 451.381 +The node type is set to the template parameter TNodeType and the attribute type to 
 451.382 +TAttributeType. These parameters should be pointers to the type required to store 
 451.383 +the type value: e.g. for a string, a const TDesC*.
 451.384 +
 451.385 +The class is thin template over CNode. */
 451.386 +	{
 451.387 +public:
 451.388 +	//##ModelId=3B666BCC024A
 451.389 +	inline static CTypedNode* NewL(TNodeType aType,CNode* aParent);
 451.390 +	//##ModelId=3B666BCC0248
 451.391 +	inline void DeleteChildNode(CNode* aNode);
 451.392 +	//##ModelId=3B666BCC0247
 451.393 +	inline void DeleteAllChildNodes();
 451.394 +	//##ModelId=3B666BCC0245
 451.395 +	inline CTypedNode<TNodeType,TAttributeType>& AppendNodeL(TNodeType aType);
 451.396 +	//##ModelId=3B666BCC023B
 451.397 +	inline void AppendNodeToThisNodeL(CNode* aNode);
 451.398 +	//##ModelId=3B666BCC0228
 451.399 +	inline void SetDataL(HBufC16* aDataNowNodeOwns);
 451.400 +	//##ModelId=3B666BCC0227
 451.401 +	inline void SetDataNoDeleteL();
 451.402 +	//##ModelId=3B666BCC0221
 451.403 +	inline void ClearSetDataNoDeleteL();
 451.404 +	//##ModelId=3B666BCC021F
 451.405 +	inline void SetFileDataL(HBufC16* aFileDataLocationNowNodeOwns);
 451.406 +	//##ModelId=3B666BCC021D
 451.407 +	inline void ResetDataPointer(HBufC16* aData);
 451.408 +	//##ModelId=3B666BCC0215
 451.409 +	inline HBufC16* Data() const;
 451.410 +	//##ModelId=3B666BCC0214
 451.411 +	inline const CTypedNode& Root() const;
 451.412 +	//##ModelId=3B666BCC020B
 451.413 +	inline CTypedNode* Child(TInt aByIndex) const;
 451.414 +	//##ModelId=3B666BCC0209
 451.415 +	inline CTypedNode* NextChild(const CNode* aNode = NULL) const;
 451.416 +	//##ModelId=3B666BCC0201
 451.417 +	inline CTypedNode* PrevChild( const CNode& aNode) const;
 451.418 +	//##ModelId=3B666BCC0200
 451.419 +	inline CTypedNode* Parent() const;
 451.420 +	//##ModelId=3B666BCC01FE
 451.421 +	inline void ReparentL(CNode* aParent);
 451.422 +	//##ModelId=3B666BCC01F5
 451.423 +	inline CTypedNode* NextSibling() const;
 451.424 +	//##ModelId=3B666BCC01F4
 451.425 +	inline CTypedNode* PrevSibling() const;
 451.426 +	//##ModelId=3B666BCC01EE
 451.427 +	inline TInt NumberImmediateChildren() const;
 451.428 +	//##ModelId=3B666BCC01EC
 451.429 +	inline void DeleteAttribute(TAttributeType aAttributeType);
 451.430 +	//##ModelId=3B666BCC01EB
 451.431 +	inline void DeleteAllAttributes();
 451.432 +	//##ModelId=3B666BCC01E5
 451.433 +	inline void RemoveAttributeNoDelete(TAttributeType aAttributeType);
 451.434 +	//##ModelId=3B666BCC01E4
 451.435 +	inline TInt AttributeCount() const; // Returns the number of attributes
 451.436 +	//##ModelId=3B666BCC01E2
 451.437 +	inline TAttributeType AttributeTypeByIndex(TInt aIndex) const; 
 451.438 +	//##ModelId=3B666BCC01DC
 451.439 +	inline CBase* AttributeByIndex(TInt aIndex) const; 
 451.440 +	//##ModelId=3B666BCC01DE
 451.441 +	inline CBase* AttributeByIndex(TInt aIndex,TAttributeType& aType) const; 
 451.442 +	//##ModelId=3B666BCC01D9
 451.443 +	inline void AddAttributeL(TAttributeType aAttributeType, CBase* aAttributeValue);
 451.444 +	//##ModelId=3B666BCC01D0
 451.445 +	inline void AddDataAndAttributeL(HBufC16 *aData, TAttributeType aAttributeType, CBase* aAttributeValue);
 451.446 +	//##ModelId=3B666BCC01CE
 451.447 +	inline CBase* Attribute(TAttributeType aAttributeType) const;
 451.448 +	//##ModelId=3B666BCC01CC
 451.449 +	inline TBool AttributeExists(TAttributeType aAttributeType) const;
 451.450 +	//##ModelId=3B666BCC01C9
 451.451 +	inline TNodeType Type() const;
 451.452 +	//##ModelId=3B666BCC01C7
 451.453 +	inline void SetType(TNodeType aType);
 451.454 +protected:
 451.455 +	//##ModelId=3B666BCC01C4
 451.456 +	CTypedNode(TNodeType aType, CNode* aParent);
 451.457 +	};
 451.458 +#include <cnode.inl>
 451.459 +#endif
   452.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   452.2 +++ b/epoc32/include/mw/cnodeleteattribute.h	Wed Mar 31 12:27:01 2010 +0100
   452.3 @@ -0,0 +1,46 @@
   452.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   452.5 +// All rights reserved.
   452.6 +// This component and the accompanying materials are made available
   452.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   452.8 +// which accompanies this distribution, and is available
   452.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  452.10 +//
  452.11 +// Initial Contributors:
  452.12 +// Nokia Corporation - initial contribution.
  452.13 +//
  452.14 +// Contributors:
  452.15 +//
  452.16 +// Description:
  452.17 +//
  452.18 +
  452.19 +#ifndef __CNODELETEATTRIBUTE_H__
  452.20 +#define __CNODELETEATTRIBUTE_H__
  452.21 +
  452.22 +// System includes
  452.23 +//
  452.24 +#include <e32base.h>
  452.25 +
  452.26 +
  452.27 +
  452.28 +template <class T>
  452.29 +class CNoDeleteAttributeT : public CBase
  452.30 +/**
  452.31 +    @publishedAll
  452.32 +    @released
  452.33 +*/
  452.34 +	{
  452.35 +public:
  452.36 +
  452.37 +	CNoDeleteAttributeT(T aAttribute) : iAttribute(aAttribute) {};
  452.38 +	~CNoDeleteAttributeT() {};
  452.39 +
  452.40 +	T Attribute() { return iAttribute; }
  452.41 +	void SetAttribute(T aAttribute) { iAttribute = aAttribute; }
  452.42 +
  452.43 +protected:
  452.44 +
  452.45 +	T iAttribute;
  452.46 +
  452.47 +	};
  452.48 +
  452.49 +#endif	// __CNODELETEATTRIBUTE_H__
   453.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   453.2 +++ b/epoc32/include/mw/coeaui.h	Wed Mar 31 12:27:01 2010 +0100
   453.3 @@ -0,0 +1,245 @@
   453.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   453.5 +// All rights reserved.
   453.6 +// This component and the accompanying materials are made available
   453.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   453.8 +// which accompanies this distribution, and is available
   453.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  453.10 +//
  453.11 +// Initial Contributors:
  453.12 +// Nokia Corporation - initial contribution.
  453.13 +//
  453.14 +// Contributors:
  453.15 +//
  453.16 +// Description:
  453.17 +//
  453.18 +
  453.19 +#ifndef __COEAUI_H__
  453.20 +#define __COEAUI_H__
  453.21 +
  453.22 +#include <e32std.h>
  453.23 +#include <e32base.h>
  453.24 +#include <w32std.h>
  453.25 +#include <vwsdef.h>
  453.26 +#include <coedef.h>
  453.27 +#include <coehelp.h>
  453.28 +#include <coeview.h>
  453.29 +#include <coeinput.h>
  453.30 +
  453.31 +class CCoeEnv;
  453.32 +class CCoeControl;
  453.33 +
  453.34 +/**
  453.35 +Creates a FEP interface object.
  453.36 +
  453.37 +@publishedAll
  453.38 +@released
  453.39 +*/
  453.40 +typedef CCoeFep* (*TCoeFepFactoryFunctionL)(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll, const CCoeFepParameters& aFepParameters);
  453.41 +
  453.42 +/**
  453.43 +Calls the second ordinal function of the FEP for which the settings dialog is to be executed.
  453.44 +
  453.45 +@publishedAll
  453.46 +@released
  453.47 +*/
  453.48 +typedef void (*TCoeSynchronouslyExecuteFepSettingsDialogFunctionL)(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll);
  453.49 +
  453.50 +/** Stack priority flags.
  453.51 +  
  453.52 +Controls with higher priorities get offered key events before controls	
  453.53 +with lower priorities.	  
  453.54 +		
  453.55 +@publishedAll 
  453.56 +@released */
  453.57 +enum
  453.58 +	{
  453.59 +	/** 0 */
  453.60 +	ECoeStackPriorityDefault=0,
  453.61 +	/** 10 */
  453.62 +	ECoeStackPriorityMenu=10,
  453.63 +	/** 50 */
  453.64 +	ECoeStackPriorityDialog=50,
  453.65 +	/** 60 */
  453.66 +	ECoeStackPriorityCba=60,
  453.67 +	/** 200 */
  453.68 +	ECoeStackPriorityAlert=200,
  453.69 +	/** 240 */
  453.70 +	ECoeStackPrioritySoftkey=240,
  453.71 +	/** 250 */
  453.72 +	ECoeStackPriorityFep=250,
  453.73 +	/** 300 */
  453.74 +	ECoeStackPriorityEnvironmentFilter=300
  453.75 +	};
  453.76 +
  453.77 +
  453.78 +/** Control stack flags.
  453.79 +
  453.80 +Each control on the stack has a set of these flags which can be used 
  453.81 +to refuse to accept key events and to refuse requests for focus.
  453.82 +
  453.83 +@publishedAll 
  453.84 +@released */
  453.85 +enum
  453.86 +	{
  453.87 +	/** The default value */
  453.88 +	ECoeStackFlagStandard			= 0,	
  453.89 +	/** The control does not accept key events. */
  453.90 +	ECoeStackFlagRefusesAllKeys		= 0x01,
  453.91 +	/** The control does not accept keyboard focus. */
  453.92 +	ECoeStackFlagRefusesFocus		= 0x02,
  453.93 +	/** The control is owned and deleted by the stack. */
  453.94 +	ECoeStackFlagOwnershipTransfered= 0x04,	
  453.95 +	/** The control is also added to the stack of any embedded app UI. For 
  453.96 +	example, an alert dialog added through CEikonEnv will be 
  453.97 +	shared on the stack of all embedded app UIs that may appear in the 
  453.98 +	application. */
  453.99 +	ECoeStackFlagSharable			= 0x08
 453.100 +	};
 453.101 +
 453.102 +class CCoeControlStack;
 453.103 +class CCoeViewManager;
 453.104 +
 453.105 +/** Application user interface (app UI) base class. 
 453.106 +
 453.107 +The app UI's responsibilities include owning the application's control stack and views, 
 453.108 +handling user commands, (see the derived class CEikAppUi), and handling events sent by 
 453.109 +the OS to the application, for instance being brought to the foreground.
 453.110 +
 453.111 +The UI framework class CEikAppUi is derived from this class. UIs may derive 
 453.112 +further to add their own UI-specific features to the app UI; each application must 
 453.113 +derive its own concrete app UI class from this.
 453.114 +
 453.115 +@publishedAll 
 453.116 +@released */
 453.117 +class CCoeAppUi : public CBase
 453.118 +	{
 453.119 +public:
 453.120 +	// Construction and destruction
 453.121 +	IMPORT_C CCoeAppUi();
 453.122 +	IMPORT_C ~CCoeAppUi();
 453.123 +	IMPORT_C void ConstructL(CCoeAppUi* aPrevious=NULL);
 453.124 +	// Control stack
 453.125 +	IMPORT_C void AddToStackL(const MCoeView& aView,CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard);
 453.126 +	IMPORT_C void AddToStackL(CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard);
 453.127 +	IMPORT_C void RemoveFromStack(CCoeControl* aControl);
 453.128 +	IMPORT_C void HandleStackChanged();
 453.129 +	IMPORT_C void HandleStackedControlsResourceChange(TInt aType);
 453.130 +	IMPORT_C void UpdateStackedControlFlags(CCoeControl* aControl,TInt aFlags,TInt aMask);
 453.131 +	// Help context
 453.132 +	IMPORT_C CArrayFix<TCoeHelpContext>* AppHelpContextL() const;
 453.133 +	// Text input
 453.134 +	IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const;
 453.135 +	// Control focus
 453.136 +	IMPORT_C CCoeControl* TopFocusedControl() const;
 453.137 +	// Utility
 453.138 +	IMPORT_C TBool IsDisplayingMenuOrDialog() const; 
 453.139 +	IMPORT_C TBool IsDisplayingDialog() const; 
 453.140 +	IMPORT_C TBool IsDisplayingControlBetweenPriorities(TInt aLowerPriority, TInt aHigherPriority) const;
 453.141 +	// View registration
 453.142 +	IMPORT_C void RegisterViewL(MCoeView& aView);
 453.143 +	IMPORT_C void DeregisterView(const MCoeView& aView);
 453.144 +	IMPORT_C void SetDefaultViewL(const MCoeView& aView);
 453.145 +	IMPORT_C TInt GetDefaultViewId(TVwsViewId& aViewId) const;
 453.146 +	// Pseudo-view registration
 453.147 +	IMPORT_C void CheckInitializeViewsL(TUid aAppUid);
 453.148 +	IMPORT_C void RegisterApplicationViewL(TUid aAppUid);
 453.149 +	IMPORT_C void DeregisterApplicationView();
 453.150 +	// View construction
 453.151 +	IMPORT_C TBool IsViewConstructed(const TVwsViewId& aViewId) const;
 453.152 +	// View activation
 453.153 +	IMPORT_C void ActivateViewL(const TVwsViewId& aViewId);
 453.154 +	IMPORT_C void ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 453.155 +	IMPORT_C void ActivateTopViewL();
 453.156 +	IMPORT_C void CreateActivateViewEventL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 453.157 +	IMPORT_C void DeactivateActiveViewIfOwnerMatchL();
 453.158 +	IMPORT_C void DeactivateActiveViewL();
 453.159 +	IMPORT_C TInt GetActiveViewId(TVwsViewId& aViewId) const;	
 453.160 +	// View registration 
 453.161 +	IMPORT_C void AddViewObserverL(MCoeViewObserver* aViewObserver);
 453.162 +	IMPORT_C void RemoveViewObserver(MCoeViewObserver* aViewObserver);
 453.163 +	// View activation observer
 453.164 +	IMPORT_C void AddViewActivationObserverL(MCoeViewActivationObserver* aViewActivationObserver);
 453.165 +	IMPORT_C void RemoveViewActivationObserver(MCoeViewActivationObserver* aViewActivationObserver);
 453.166 +	IMPORT_C void NotifyNextActivation(const TVwsViewId& aViewId, MCoeViewActivationObserver& aViewActivationObserver);
 453.167 +	IMPORT_C void NotifyNextActivation(MCoeViewActivationObserver& aViewActivationObserver);
 453.168 +	IMPORT_C TBool CheckSourceOfViewSwitchL(const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic=NULL) const;
 453.169 +	// View decativation observer
 453.170 +	IMPORT_C void AddViewDeactivationObserverL(MCoeViewDeactivationObserver* aViewDeactivationObserver);
 453.171 +	IMPORT_C void RemoveViewDeactivationObserver(MCoeViewDeactivationObserver* aViewDeactivationObserver);
 453.172 +	IMPORT_C void NotifyNextDeactivation(const TVwsViewId& aViewId, MCoeViewDeactivationObserver& aViewDeactivationObserver);
 453.173 +	IMPORT_C void NotifyNextDeactivation(MCoeViewDeactivationObserver& aViewDeactivationObserver);
 453.174 +	// View session configuration
 453.175 +	IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable);
 453.176 +	IMPORT_C void UpdateViewServerBackgroundColor(const TRgb& aBgColor);
 453.177 +
 453.178 +	// New APIs
 453.179 +	IMPORT_C void SetCustomControl(TInt aCustomControl);
 453.180 +	IMPORT_C TInt GetTopViewId(TVwsViewId& aViewId) const;
 453.181 +	IMPORT_C void SetWindowGroupOrdinal(TInt aWindowGroupOrdinal);
 453.182 +
 453.183 +public: // Internal
 453.184 +	IMPORT_C void SetApplicationViewAsDefaultL(); // internalTechnology
 453.185 + 	IMPORT_C void SetSystemDefaultViewL(const TVwsViewId& aViewId,TInt aMode); // internalTechnology
 453.186 + 	IMPORT_C void SetSystemDefaultViewL(const TVwsViewId& aViewId); // internalTechnology
 453.187 + 	IMPORT_C void GetSystemDefaultViewL(TVwsViewId& aViewId); // internalTechnology
 453.188 +	IMPORT_C virtual void HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination);
 453.189 +	IMPORT_C virtual void PrepareToExit();
 453.190 +protected: // Internal
 453.191 +	IMPORT_C virtual void HandleScreenDeviceChangedL();
 453.192 +private: // Internal
 453.193 +	IMPORT_C virtual TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
 453.194 +	IMPORT_C virtual void HandleForegroundEventL(TBool aForeground);
 453.195 +	IMPORT_C virtual void HandleSwitchOnEventL(CCoeControl* aDestination);
 453.196 +	IMPORT_C virtual void HandleSystemEventL(const TWsEvent& aEvent);
 453.197 +	IMPORT_C virtual void HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent);
 453.198 +	IMPORT_C virtual void SetAndDrawFocus(TBool aFocus);
 453.199 +	IMPORT_C virtual CArrayFix<TCoeHelpContext>* HelpContextL() const;
 453.200 +public: // Internal
 453.201 +	IMPORT_C virtual TBool FrameworkCallsRendezvous() const;
 453.202 +public: // Internal 
 453.203 +	IMPORT_C void WriteInternalStateOfStackedControlsL(RWriteStream& aWriteStream) const; // internalTechnology
 453.204 +public: // Deprecated. Do not use!
 453.205 +	IMPORT_C void RegisterViewAndAddStackL(MCoeView& aView);	// deprecated
 453.206 +	IMPORT_C void DeregisterViewAndRemoveStack(const MCoeView& aView);	// deprecated
 453.207 +	IMPORT_C void RemoveFromViewStack(const MCoeView& aView,CCoeControl* aControl);	// deprecated
 453.208 +	IMPORT_C void UpdateViewStackedControlFlags(const MCoeView& aView,CCoeControl* aControl,TInt aFlags,TInt aMask);	// deprecated
 453.209 +	IMPORT_C void AddToViewStackL(const MCoeView& aView,CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard);	// deprecated
 453.210 +public: // not exported
 453.211 +	TBool IsControlOnStack(CCoeControl* aControl) const;
 453.212 +	void SetCurrentControlStackGroupId(TInt aGroupId);
 453.213 +	void NotifyFontChange(const CCoeFontProvider& aFontProvider); 
 453.214 +	void RefetchPixelMappingL();
 453.215 +private:
 453.216 +	enum TRemoveCondition
 453.217 +		{
 453.218 +		ERemoveUnconditionally,
 453.219 +		ERemoveOnlyIfSharable
 453.220 +		};
 453.221 +private:// Internal
 453.222 +	IMPORT_C virtual void CCoeAppUi_Reserved_2();
 453.223 +private:
 453.224 +	CCoeControl* TopFocusableControl() const;
 453.225 +	TInt FindPos(CCoeControlStack* aStack,CCoeControl* aControl) const;
 453.226 +	void SetFocusToControl(CCoeControl* aControl,TBool aFocus);
 453.227 +	void DoAddToStackL(CCoeControlStack* aStack,CCoeControl* aControl,TInt aPriority,TInt aStackingFlags);
 453.228 +	void DoAddToStackL(CCoeControlStack* aStack,CCoeControl* aControl,TInt aPriority,TInt aStackingFlags, TInt aGroupId);
 453.229 +	void DoRemoveFromStack(CCoeControlStack* aStack,CCoeControl* aControl,TRemoveCondition aRemoveCondition=ERemoveUnconditionally);
 453.230 +	void DoUpdateStackedControlFlags(CCoeControlStack* aStack,CCoeControl* aControl,TInt aFlags,TInt aMask);
 453.231 +public:
 453.232 +/**Monitor function for passing all windows events to registered monitor observers for optional inspection*/
 453.233 +	void MonitorWsEvent(const TWsEvent& aEvent);
 453.234 +private:
 453.235 +	class CExtra;
 453.236 +	friend class CExtra;
 453.237 +	friend class CTestDriver;
 453.238 +protected:
 453.239 +	CCoeEnv* iCoeEnv;
 453.240 +private:
 453.241 +	CCoeViewManager* iViewManager;
 453.242 +	CCoeControlStack* iStack;
 453.243 +	CExtra* iExtra;
 453.244 +	TInt iCCoeAppUi_Reserved1;
 453.245 +	};
 453.246 +
 453.247 +
 453.248 +#endif // __COEAUI_H__
   454.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   454.2 +++ b/epoc32/include/mw/coeccntx.h	Wed Mar 31 12:27:01 2010 +0100
   454.3 @@ -0,0 +1,119 @@
   454.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   454.5 +// All rights reserved.
   454.6 +// This component and the accompanying materials are made available
   454.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   454.8 +// which accompanies this distribution, and is available
   454.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  454.10 +//
  454.11 +// Initial Contributors:
  454.12 +// Nokia Corporation - initial contribution.
  454.13 +//
  454.14 +// Contributors:
  454.15 +//
  454.16 +// Description:
  454.17 +//
  454.18 +
  454.19 +#ifndef __COECCNTX_H__
  454.20 +#define __COECCNTX_H__
  454.21 +
  454.22 +#include <e32std.h>
  454.23 +#include <e32base.h>
  454.24 +#include <w32std.h>
  454.25 +
  454.26 +/** Interface to allow sharing of graphics settings between controls. 
  454.27 +
  454.28 +The interface provides functions to set the graphics context of a control 
  454.29 +before drawing. If a control has its iContext member set, the UI Control Framework 
  454.30 +calls functions defined by this interface when a control is about to be drawn. 
  454.31 +Developers must implement PrepareContext(), which is called by the framework, 
  454.32 +to initialise the control's window with the required graphics settings.
  454.33 +
  454.34 +To use control contexts, a control should inherit from an MCoeControlContext-derived 
  454.35 +class. To share the context between controls, this control should then be 
  454.36 +set as the context for all controls that wish to share it. This is done by 
  454.37 +setting the iContext member of each of the controls, using CCoeControl::SetControlContext() 
  454.38 +and CCoeControl::CopyControlContextFrom(). 
  454.39 +
  454.40 +@publishedAll 
  454.41 +@released */
  454.42 +class MCoeControlContext
  454.43 +	{
  454.44 +public:
  454.45 +	IMPORT_C virtual void ActivateContext(CWindowGc& aGc,RDrawableWindow& aWindow) const;
  454.46 +	IMPORT_C virtual void ResetContext(CWindowGc& aGc) const;
  454.47 +	IMPORT_C virtual void PrepareContext(CWindowGc& aGc) const;
  454.48 +protected:
  454.49 +	IMPORT_C MCoeControlContext();
  454.50 +	
  454.51 +private:
  454.52 +	IMPORT_C virtual void MCoeControlContext_Reserved1();	
  454.53 +	IMPORT_C virtual void MCoeControlContext_Reserved2();
  454.54 +	
  454.55 +private:
  454.56 +	TInt iMCoeControlContext_Reserved1;
  454.57 +	};
  454.58 +
  454.59 +/** Brush and pen graphics context. 
  454.60 +
  454.61 +This class allows an MCoeControlContext to be instantiated and used to set 
  454.62 +brush and pen properties before drawing a control. 
  454.63 +
  454.64 +@publishedAll 
  454.65 +@released */
  454.66 +class CCoeBrushAndPenContext : public CBase, public MCoeControlContext
  454.67 +	{
  454.68 +public:
  454.69 +	IMPORT_C static CCoeBrushAndPenContext* NewL();
  454.70 +	//
  454.71 +	IMPORT_C void SetBrushStyle(CWindowGc::TBrushStyle aBrushStyle);
  454.72 +	IMPORT_C void SetBrushColor(TRgb aColor);
  454.73 +	IMPORT_C void SetBrushBitmap(const CFbsBitmap& aBitmap);
  454.74 +	IMPORT_C void SetPenColor(TRgb aColor);
  454.75 +	//
  454.76 +	IMPORT_C CWindowGc::TBrushStyle BrushStyle() const;
  454.77 +	IMPORT_C TRgb BrushColor() const;
  454.78 +	IMPORT_C const CFbsBitmap& BrushBitmap() const;
  454.79 +	IMPORT_C TRgb PenColor() const;
  454.80 +protected: // from MCoeControlContext
  454.81 +	IMPORT_C void PrepareContext(CWindowGc& aGc) const;
  454.82 +private:
  454.83 +	CCoeBrushAndPenContext();
  454.84 +private:
  454.85 +	CWindowGc::TBrushStyle iBrushStyle;
  454.86 +	TRgb iBrushColor;
  454.87 +	const CFbsBitmap* iBitmap;
  454.88 +	TRgb iPenColor;
  454.89 +	};
  454.90 +
  454.91 +
  454.92 +/** Protocol for sharing brush settings used in graphics operations. 
  454.93 +
  454.94 +It can be used to set brush and pen properties before drawing a control.
  454.95 +
  454.96 +The mixin provides a default implementation of a control context. It implements 
  454.97 +PrepareContext() to initialise brush settings used in graphics operations. 
  454.98 +Its data members are public so that the brush style, brush colour and brush 
  454.99 +pattern can be set by application code.
 454.100 +
 454.101 +@publishedAll
 454.102 +@deprecated */
 454.103 +class MCoeControlBrushContext : public MCoeControlContext
 454.104 +	{
 454.105 +public:
 454.106 +	/** Cause vtable & typeinfo to be exported */
 454.107 +	IMPORT_C MCoeControlBrushContext();
 454.108 +protected: // from MCoeControlContext
 454.109 +	IMPORT_C void PrepareContext(CWindowGc& aGc) const;
 454.110 +public:
 454.111 +	/** Brush style. (Not required if iBitmap is set.) */
 454.112 +	CWindowGc::TBrushStyle iBrushStyle;
 454.113 +	/** Brush colour. (Not required if iBitmap is set.) */
 454.114 +	TRgb iBrushColor;
 454.115 +	/** Brush pattern. */
 454.116 +	const CFbsBitmap* iBitmap;
 454.117 +
 454.118 +private:
 454.119 +	TInt iMCoeControlBrushContext_Reserved1;
 454.120 +	};
 454.121 +
 454.122 +#endif
   455.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   455.2 +++ b/epoc32/include/mw/coecntrl.h	Wed Mar 31 12:27:01 2010 +0100
   455.3 @@ -0,0 +1,418 @@
   455.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   455.5 +// All rights reserved.
   455.6 +// This component and the accompanying materials are made available
   455.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   455.8 +// which accompanies this distribution, and is available
   455.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  455.10 +//
  455.11 +// Initial Contributors:
  455.12 +// Nokia Corporation - initial contribution.
  455.13 +//
  455.14 +// Contributors:
  455.15 +//
  455.16 +// Description:
  455.17 +//
  455.18 +
  455.19 +#ifndef __COECNTRL_H__
  455.20 +#define __COECNTRL_H__
  455.21 +
  455.22 +#include <e32std.h>
  455.23 +#include <e32base.h>
  455.24 +#include <w32std.h>
  455.25 +#include <gulalign.h>
  455.26 +#include <coedef.h>
  455.27 +#include <coecobs.h>
  455.28 +#include <coehelp.h>
  455.29 +#include <coeinput.h>
  455.30 +#include <coemop.h>
  455.31 +#include <coemain.h>
  455.32 +#include <coefont.h>
  455.33 +#include <coetextdrawer.h>
  455.34 +#include <coecontrolarray.h>
  455.35 +
  455.36 +#include <coecoloruse.h>	// class TCoeColorUse
  455.37 +
  455.38 +class TResourceReader;
  455.39 +class CCoeEnv;
  455.40 +class MCoeControlContext;
  455.41 +class RCoeDynamicDataStorage;
  455.42 +
  455.43 +class MCoeLayoutManager;
  455.44 +class TCoeZoomWithType; 
  455.45 +class CCoeFontProvider;
  455.46 +
  455.47 +// forward declarations.	
  455.48 +class CCoeControl;
  455.49 +class CCoeTextDrawerBase;
  455.50 +
  455.51 +/** Interface to be used if a control elects to be a background drawer.
  455.52 +
  455.53 +Parent controls can elect to take responsibility for drawing the background for their child
  455.54 +controls. To achieve this, they should aggregate an object that implements this interface.
  455.55 +CCoeControl::SetBackground() accepts the object and sets it as the background drawer
  455.56 +
  455.57 +@see CCoeControl::EnableWindowTransparency()
  455.58 +@publishedAll
  455.59 +@released
  455.60 +*/
  455.61 +class MCoeControlBackground
  455.62 +	{
  455.63 +public:
  455.64 +	/** Draw the background for a given control.
  455.65 +	The text drawer that shall be used to draw text on the specific background can be 
  455.66 +	fetched through the GetTextDrawer() method. 
  455.67 +
  455.68 +	@param aGc Graphics context used for drawing
  455.69 +	@param aControl The control being drawn (may be a child of the drawer)
  455.70 +	@param aRect The area to be redrawn
  455.71 +
  455.72 +	@publishedAll
  455.73 +	@released
  455.74 +	*/
  455.75 +	virtual void Draw(CWindowGc& aGc, const CCoeControl& aControl, const TRect& aRect) const = 0;
  455.76 +	/**
  455.77 +	This function retrieves the text drawer associated with the background.
  455.78 +	@param aTextDrawer The text drawer associated with the background. This may be null. The default implementation
  455.79 +	always sets this to 0.
  455.80 +	@param aDrawingControl The control that is requesting the text drawer.
  455.81 +	*/
  455.82 +	IMPORT_C virtual void GetTextDrawer(CCoeTextDrawerBase*& aTextDrawer, const CCoeControl* aDrawingControl) const;
  455.83 +protected:
  455.84 +	IMPORT_C MCoeControlBackground();
  455.85 +private:  
  455.86 +  	IMPORT_C virtual void MCoeControlBackground_Reserved1();
  455.87 +  	IMPORT_C virtual void MCoeControlBackground_Reserved2();
  455.88 +  	IMPORT_C virtual void MCoeControlBackground_Reserved3();
  455.89 +  	IMPORT_C virtual void MCoeControlBackground_Reserved4();
  455.90 +  	IMPORT_C virtual void MCoeControlBackground_Reserved5();
  455.91 +private:
  455.92 +	TInt iMCoeControlBackground_Reserved1();
  455.93 +	};
  455.94 +
  455.95 +/** Abstract interface for defining a control's hit region.
  455.96 +
  455.97 +This could be implemented by a CCoeControl-derived class to 
  455.98 +define hit region checking. The object is installed by calling CCoeControl::SetHitTest().
  455.99 +
 455.100 +The hit region is the area inside the control's rectangle in which pointer events are handled.
 455.101 +It can be any shape, not necessarily rectangular.
 455.102 +
 455.103 +@publishedAll
 455.104 +@released
 455.105 +*/
 455.106 +class MCoeControlHitTest
 455.107 +	{
 455.108 +public:	
 455.109 +	/** Tests whether a pointer event occurred inside the control's hit region.
 455.110 +	This function is called by CCoeControl::HandlePointerEventL().
 455.111 +
 455.112 +	@param aPoint The position of the pointer event.
 455.113 +	@return ETrue if the specified point lies inside the hit region, EFalse if not.
 455.114 +
 455.115 +	@publishedAll
 455.116 +	@released
 455.117 +	*/
 455.118 +	virtual TBool HitRegionContains(const TPoint& aPoint, const CCoeControl& aControl) const = 0;
 455.119 +protected:
 455.120 +	IMPORT_C MCoeControlHitTest();
 455.121 +private:
 455.122 +	IMPORT_C virtual void MCoeControlHitTest_Reserved1();
 455.123 +	IMPORT_C virtual void MCoeControlHitTest_Reserved2();
 455.124 +private: 
 455.125 +    TInt iMCoeControlHitTest_Reserved1;
 455.126 +	};
 455.127 +
 455.128 +
 455.129 +/** 
 455.130 +Control base class from which all other controls are derived. 
 455.131 +
 455.132 +@publishedAll
 455.133 +@released 
 455.134 +*/
 455.135 +class CCoeControl : public CBase, public MObjectProvider
 455.136 +	{
 455.137 +public:
 455.138 +    enum TZoomType 
 455.139 +        { 
 455.140 +        EAbsoluteZoom,        // absolute 
 455.141 +        ERelativeZoom         // relative to parent's zoom 
 455.142 +        }; 
 455.143 +public:    
 455.144 +    // Construction and destruction    
 455.145 +	IMPORT_C CCoeControl();
 455.146 +	IMPORT_C CCoeControl(CCoeEnv* aCoeEnv);
 455.147 +	IMPORT_C ~CCoeControl();
 455.148 +	IMPORT_C TBool ComponentArrayExists() const;
 455.149 +public: // Virtuals (see more related non-virtuals further down)
 455.150 +	// Key input
 455.151 +	IMPORT_C virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
 455.152 +	// Visual state
 455.153 +	IMPORT_C virtual void MakeVisible(TBool aVisible);
 455.154 +	IMPORT_C virtual void SetDimmed(TBool aDimmed);
 455.155 +	// Construction
 455.156 +	IMPORT_C virtual void SetContainerWindowL(const CCoeControl& aContainer);
 455.157 +	IMPORT_C virtual void ConstructFromResourceL(TResourceReader& aReader);
 455.158 +	IMPORT_C virtual void ActivateL();
 455.159 +	// Focus
 455.160 +	IMPORT_C virtual void PrepareForFocusLossL();
 455.161 +	IMPORT_C virtual void PrepareForFocusGainL();
 455.162 +	// Control proximity
 455.163 +	IMPORT_C virtual void SetAdjacent(TInt aAdjacent);
 455.164 +	IMPORT_C virtual void SetNeighbor(CCoeControl* aNeighbor);
 455.165 +	IMPORT_C virtual TBool HasBorder() const;	// deprecated from 9.2
 455.166 +	// Control size
 455.167 +	IMPORT_C virtual TSize MinimumSize();
 455.168 +	// Resource change handling
 455.169 +	IMPORT_C virtual void HandleResourceChange(TInt aType);
 455.170 +	// Logical color use (for Java)
 455.171 +	IMPORT_C virtual void GetColorUseListL(CArrayFix<TCoeColorUse>& aColorUseList) const;
 455.172 +	// User help
 455.173 +	IMPORT_C virtual void GetHelpContext(TCoeHelpContext& aContext) const;
 455.174 +	// Text input
 455.175 +	IMPORT_C virtual TCoeInputCapabilities InputCapabilities() const;
 455.176 +public:	
 455.177 +	// Environment
 455.178 +	inline CCoeEnv* ControlEnv() const;
 455.179 +	// Container window
 455.180 +	IMPORT_C RDrawableWindow* DrawableWindow() const;
 455.181 +	IMPORT_C TBool OwnsWindow() const;
 455.182 +	IMPORT_C TBool IsBackedUp() const;
 455.183 +	IMPORT_C void SetContainerWindowL(RWindow& aWindow); 			// deprecated from 9.2
 455.184 +	IMPORT_C void SetContainerWindowL(RBackedUpWindow& aWindow);	// deprecated from 9.2
 455.185 +	// Control parent
 455.186 +	IMPORT_C CCoeControl* Parent();
 455.187 +	IMPORT_C const CCoeControl* Parent() const;
 455.188 +	IMPORT_C virtual TInt SetParent(CCoeControl* aParent);
 455.189 +	// Size and position
 455.190 +	IMPORT_C TRect Rect() const;
 455.191 +	IMPORT_C void SetRect(const TRect& aRect);
 455.192 +	IMPORT_C void SetExtent(const TPoint& aPosition,const TSize& aSize);
 455.193 +	IMPORT_C void SetExtentToWholeScreen();
 455.194 +	IMPORT_C TSize Size() const;
 455.195 +	IMPORT_C void SetSize(const TSize& aSize);
 455.196 +	IMPORT_C TPoint Position() const;
 455.197 +	IMPORT_C TPoint PositionRelativeToScreen() const;
 455.198 +	IMPORT_C void SetPosition(const TPoint& aPosition);
 455.199 +	IMPORT_C TInt MaximumWidth() const;
 455.200 +	IMPORT_C TInt SetMaximumWidth(TInt aMaxWidth);
 455.201 +	// Layout	
 455.202 +	IMPORT_C MCoeLayoutManager* LayoutManager() const;
 455.203 +	IMPORT_C virtual void SetLayoutManagerL(MCoeLayoutManager* aLayout);
 455.204 +	IMPORT_C virtual TBool RequestRelayout(const CCoeControl* aChildControl);
 455.205 +	// Visibility
 455.206 +	IMPORT_C TBool IsVisible() const;
 455.207 +	IMPORT_C void SetComponentsToInheritVisibility(TBool aInherit=ETrue);
 455.208 +	// Dimmed
 455.209 +	IMPORT_C TBool IsDimmed() const;
 455.210 +	// State observer
 455.211 +	IMPORT_C void SetObserver(MCoeControlObserver* aObserver);
 455.212 +	IMPORT_C MCoeControlObserver* Observer() const;
 455.213 +	// Focus
 455.214 +	IMPORT_C TBool IsFocused() const;
 455.215 +	IMPORT_C void SetFocus(TBool aFocus,TDrawNow aDrawNow=ENoDrawNow);
 455.216 +	IMPORT_C void SetNonFocusing();
 455.217 +	IMPORT_C void SetFocusing(TBool aFocusing);
 455.218 +	IMPORT_C TBool IsNonFocusing() const;
 455.219 +	// Drawing (see also Draw() below)
 455.220 +	IMPORT_C void DrawNow() const;
 455.221 +	IMPORT_C void DrawNow(const TRect &aRect) const;
 455.222 +	IMPORT_C void DrawDeferred() const;
 455.223 +	IMPORT_C CWindowGc& SystemGc() const;
 455.224 +	IMPORT_C TInt SetCustomGc(CWindowGc* aGraphicsContext);
 455.225 +	IMPORT_C CWindowGc* CustomGc() const;	
 455.226 +	// Control context (background color etc). Deprecated (use MCoeControlBackground)
 455.227 +	IMPORT_C void SetControlContext(MCoeControlContext* aContext);		// deprecated from 9.2
 455.228 +	IMPORT_C void CopyControlContextFrom(const CCoeControl* aControl);	// deprecated from 9.2
 455.229 +	IMPORT_C MCoeControlContext* ControlContext() const;				// deprecated from 9.2
 455.230 +	// Pointer events
 455.231 +	IMPORT_C void SetPointerCapture(TBool aCapture=ETrue);
 455.232 +	IMPORT_C void ClaimPointerGrab(TBool aSendUpEvent=ETrue);
 455.233 +	IMPORT_C void IgnoreEventsUntilNextPointerUp();
 455.234 +	IMPORT_C void SetGloballyCapturing(TBool aGlobal);
 455.235 +	// Pointer hit test
 455.236 +	IMPORT_C TInt SetHitTest(const MCoeControlHitTest* aHitTestControl);
 455.237 +	IMPORT_C const MCoeControlHitTest* HitTest() const;
 455.238 +	// Logical colors
 455.239 +	IMPORT_C void OverrideColorL(TInt aLogicalColor,TRgb aColor);
 455.240 +	IMPORT_C TBool GetColor(TInt aLogicalColor,TRgb& aColor) const;
 455.241 +	// Control background
 455.242 +	IMPORT_C void DrawBackground(const TRect& aRect) const;
 455.243 +	IMPORT_C void DrawForeground(const TRect& aRect) const;
 455.244 +	IMPORT_C const MCoeControlBackground* Background() const;
 455.245 +	IMPORT_C const MCoeControlBackground* FindBackground() const;
 455.246 +	IMPORT_C void SetBackground(const MCoeControlBackground* aBackground);
 455.247 +	// Zooming
 455.248 +	IMPORT_C void SetZoomFactorL(TInt aZoomFactor, TZoomType aZoomType = ERelativeZoom);
 455.249 +   	IMPORT_C TZoomFactor AccumulatedZoom() const;
 455.250 +   	IMPORT_C const TCoeZoomWithType* ZoomWithType() const;
 455.251 +  	// Font provider (see ScreenFont() below)
 455.252 +    IMPORT_C const CCoeFontProvider& FindFontProvider() const;
 455.253 +	IMPORT_C void SetFontProviderL(const CCoeFontProvider& aFontProvider);
 455.254 +	// Text baseline (virtuals)
 455.255 +	IMPORT_C virtual TInt TextBaselineOffset(const TSize& aSize) const;
 455.256 +	IMPORT_C virtual void SetTextBaselineSpacing(TInt aSpacing);
 455.257 +	// Input capabilities
 455.258 +	IMPORT_C TCoeInputCapabilities RecursivelyMergedInputCapabilities() const;
 455.259 +	// Interface access
 455.260 +	IMPORT_C void SetMopParent(MObjectProvider* aParent);
 455.261 +	// Instance identification
 455.262 +	IMPORT_C TInt UniqueHandle() const;
 455.263 +	IMPORT_C TInt SetUniqueHandle(TInt aUniqueHandle); 
 455.264 +public: // Pointer events (virtuals)
 455.265 +	IMPORT_C virtual void HandlePointerEventL(const TPointerEvent& aPointerEvent);
 455.266 +protected: // Virtuals. Override to handle these events.
 455.267 +	IMPORT_C virtual void HandlePointerBufferReadyL();	// See HandlePointerEventL()
 455.268 +	// Change of focus
 455.269 +	IMPORT_C virtual void FocusChanged(TDrawNow aDrawNow);
 455.270 +	// Change of size and position
 455.271 +	IMPORT_C virtual void SizeChanged();
 455.272 +	IMPORT_C virtual void PositionChanged();
 455.273 +public:
 455.274 +	// Component control access
 455.275 +	IMPORT_C virtual TInt CountComponentControls() const;
 455.276 +	IMPORT_C virtual CCoeControl* ComponentControl(TInt aIndex) const;
 455.277 +	IMPORT_C TInt Index(const CCoeControl* aControl) const;
 455.278 +protected:
 455.279 +	// Control state	
 455.280 +	IMPORT_C TBool IsActivated() const;
 455.281 +	IMPORT_C TBool IsBeingDestroyed() const;
 455.282 +	// Component ownership
 455.283 +	IMPORT_C void InitComponentArrayL();
 455.284 +	IMPORT_C CCoeControlArray& Components();
 455.285 +	IMPORT_C const CCoeControlArray& Components() const;
 455.286 +	// Container window
 455.287 +	IMPORT_C RWindow& Window() const;
 455.288 +	IMPORT_C RBackedUpWindow& BackedUpWindow() const;
 455.289 +	IMPORT_C void CloseWindow();
 455.290 +	IMPORT_C void CreateWindowL();
 455.291 +	IMPORT_C void CreateWindowL(const CCoeControl* aParent);
 455.292 +	IMPORT_C void CreateWindowL(RWindowTreeNode& aParent);
 455.293 +	IMPORT_C void CreateWindowL(RWindowGroup* aParent);
 455.294 +	IMPORT_C void CreateBackedUpWindowL(RWindowTreeNode& aParent);
 455.295 +	IMPORT_C void CreateBackedUpWindowL(RWindowTreeNode& aParent,TDisplayMode aDisplayMode);
 455.296 +	IMPORT_C void EnableWindowTransparency();
 455.297 +	// Size and position
 455.298 +	IMPORT_C void SetCornerAndSize(TGulAlignment aCorner,const TSize& aSize);
 455.299 +	IMPORT_C void SetSizeWithoutNotification(const TSize& aSize);
 455.300 +	// Font access
 455.301 +	IMPORT_C const CFont& ScreenFont(const TCoeFont& aFont) const;
 455.302 +	// Text drawer
 455.303 +	IMPORT_C CCoeTextDrawerBase& TextDrawer(TInt aKey = KErrNotFound) const; 
 455.304 +	// Pointer events
 455.305 +	IMPORT_C void EnableDragEvents();
 455.306 +	IMPORT_C void HandleRedrawEvent(const TRect& aRect) const;
 455.307 +	IMPORT_C void SetAllowStrayPointers();
 455.308 +	IMPORT_C CCoeControl* GrabbingComponent() const;
 455.309 +	IMPORT_C TBool CapturesPointer() const;
 455.310 +	// Drawing	
 455.311 +	IMPORT_C TBool IsReadyToDraw() const;
 455.312 +	IMPORT_C TBool IsBlank() const;
 455.313 +	IMPORT_C void SetBlank();
 455.314 +	IMPORT_C void SetCanDrawOutsideRect();
 455.315 +	IMPORT_C void ActivateGc() const;
 455.316 +	IMPORT_C void DeactivateGc() const;
 455.317 +	IMPORT_C void ResetGc() const;
 455.318 +	// State events
 455.319 +	IMPORT_C void ReportEventL(MCoeControlObserver::TCoeEvent aEvent);
 455.320 +	// Resource changes	
 455.321 +	IMPORT_C void HandleComponentControlsResourceChange(TInt aType);
 455.322 +	// Copy Constructor and Assignment Operator
 455.323 +	inline CCoeControl(const CCoeControl& aControl);
 455.324 +	inline CCoeControl& operator=(const CCoeControl& aControl);
 455.325 +protected:	
 455.326 +	friend class CCoeControlArray;   
 455.327 +	IMPORT_C virtual void HandleControlArrayEventL(CCoeControlArray::TEvent aEvent, const CCoeControlArray* aArray, CCoeControl* aControl, TInt aControlId);
 455.328 +private: // reserved
 455.329 +	IMPORT_C virtual void Reserved_CCoeControl_10();
 455.330 +	IMPORT_C virtual void Reserved_CCoeControl_11();
 455.331 +	IMPORT_C virtual void Reserved_CCoeControl_12();
 455.332 +	IMPORT_C virtual void Reserved_CCoeControl_13();
 455.333 +private:
 455.334 +	IMPORT_C virtual void GetTextDrawer(CCoeTextDrawerBase*& aTextDrawer, const CCoeControl* aDrawingControl, TInt aKey) const;
 455.335 +private: // reserved
 455.336 +	IMPORT_C virtual void Reserved_CCoeControl_8();
 455.337 +	IMPORT_C virtual void Reserved_CCoeControl_9();
 455.338 +protected: // from MObjectProvider
 455.339 +	IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
 455.340 +private: // from MObjectProvider
 455.341 +	IMPORT_C MObjectProvider* MopNext();
 455.342 +private: 
 455.343 +	// Drawing (override this to draw)
 455.344 +	IMPORT_C virtual void Draw(const TRect& aRect) const;
 455.345 +protected: 
 455.346 +	// Debugging
 455.347 +	IMPORT_C virtual void WriteInternalStateL(RWriteStream& aWriteStream) const;
 455.348 +private: // reserved
 455.349 +	IMPORT_C virtual void Reserved_2();
 455.350 +public: // but not exported
 455.351 +	void ProcessPointerEventL(const TPointerEvent& aPointerEvent);
 455.352 +	void ProcessPointerBufferReadyL();
 455.353 +	void RecursivelyMergeInputCapabilities(TCoeInputCapabilities& aInputCapabilities) const;
 455.354 +	void WriteInternalStateNowL(RWriteStream& aWriteStream) const;
 455.355 +    void NotifyFontChange(const CCoeFontProvider* aFontProvider);
 455.356 +    void RemoveFromParent();
 455.357 +    void RefetchPixelMappingL();
 455.358 +public: // deprecated
 455.359 +	inline TInt SetGc(CWindowGc* aGraphicsContext) const;
 455.360 +	inline CWindowGc* GetGc() const;
 455.361 +private:
 455.362 +	friend class CCoeRedrawer;
 455.363 +	void DrawComponents(const TRect& aRect) const;	
 455.364 +	void DrawWindowOwningComponentsNow() const;
 455.365 +	void DrawWindowOwningComponentsNow(const TRect &aRect) const;	
 455.366 +	void SetGrabbed(TBool aGrabbed);
 455.367 +	TBool IsGrabbed() const;
 455.368 +	void DoMakeVisible(TBool aVisible);
 455.369 +	void CheckPointerEventPurge() const;
 455.370 +	void RecursivelyMergeTextDrawers(CCoeTextDrawerBase*& aTextDrawer, const CCoeControl* aDrawingControl, TInt aKey) const;
 455.371 +	CCoeControl* WindowOwningParent();
 455.372 +	const CCoeControl* WindowOwningParent() const { return const_cast<CCoeControl*>(this)->WindowOwningParent(); }
 455.373 +	const CCoeControl* SearchParent(const CCoeControl* aParentToFind) const;
 455.374 +	TInt SetZoomWithType(TCoeZoomWithType* aZoomWithType);
 455.375 +	TCoeZoomWithType* GetZoomWithType() const;
 455.376 +	TInt SetFontProvider(const CCoeFontProvider* aFontProvider);
 455.377 +	const CCoeFontProvider* GetFontProvider() const;
 455.378 +	TInt FindColor(TInt aLogicalColor) const;
 455.379 +	void ActivateGcRecursive() const;
 455.380 +	void DeactivateGcRecursive() const;
 455.381 +	void ReportControlStateChange(MCoeControlStateObserver::TCoeState aType);
 455.382 +public:	
 455.383 +	IMPORT_C void EnableReportControlStateChange(TBool aState);
 455.384 +
 455.385 +protected:
 455.386 +	CCoeEnv* iCoeEnv;
 455.387 +	MCoeControlContext* iContext;	// deprecated
 455.388 +	TPoint iPosition;
 455.389 +	TSize iSize;
 455.390 +private:
 455.391 +	TInt iFlags;
 455.392 +	RDrawableWindow* iWin;
 455.393 +	RCoeDynamicDataStorage* iData;
 455.394 +	MObjectProvider* iMopParent;
 455.395 +	};
 455.396 +
 455.397 +
 455.398 +/** 
 455.399 +Gets the control environment object for this control.
 455.400 +
 455.401 +@return The control's control environment object. 
 455.402 +*/
 455.403 +inline CCoeEnv* CCoeControl::ControlEnv() const
 455.404 +	{ return(iCoeEnv); }
 455.405 +
 455.406 +/**
 455.407 +Deprecated. See CCoeControl::SetCustomGc().
 455.408 +@deprecated
 455.409 +*/
 455.410 +inline TInt CCoeControl::SetGc(CWindowGc* aGraphicsContext) const
 455.411 +	{ return const_cast<CCoeControl*>(this)->SetCustomGc(aGraphicsContext); }
 455.412 +	
 455.413 +/**
 455.414 +Deprecated. See CCoeControl::CustomGc().
 455.415 +@deprecated
 455.416 +*/
 455.417 +inline CWindowGc* CCoeControl::GetGc() const
 455.418 +	{ return CustomGc(); }
 455.419 +
 455.420 +
 455.421 +#endif	// __COECNTRL_H__
   456.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   456.2 +++ b/epoc32/include/mw/coecobs.h	Wed Mar 31 12:27:01 2010 +0100
   456.3 @@ -0,0 +1,117 @@
   456.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   456.5 +// All rights reserved.
   456.6 +// This component and the accompanying materials are made available
   456.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   456.8 +// which accompanies this distribution, and is available
   456.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  456.10 +//
  456.11 +// Initial Contributors:
  456.12 +// Nokia Corporation - initial contribution.
  456.13 +//
  456.14 +// Contributors:
  456.15 +//
  456.16 +// Description:
  456.17 +//
  456.18 +
  456.19 +#ifndef __COECOBS_H__
  456.20 +#define __COECOBS_H__
  456.21 +
  456.22 +#include <e32base.h>
  456.23 +#include <coemop.h>
  456.24 +
  456.25 +class CCoeControl;
  456.26 +
  456.27 +class MCoeControlObserver
  456.28 +/** Interface for a control to send events to its observer control. 
  456.29 +
  456.30 +@publishedAll 
  456.31 +@released */
  456.32 +	{
  456.33 +public:
  456.34 +	/** Observer event types. */
  456.35 +	enum TCoeEvent
  456.36 +		{
  456.37 +		/** Request exit. 
  456.38 +		This event is used to indicate exit from a mode when 
  456.39 +		the user has completed an operation 'successfully'. For example, this 
  456.40 +		event might be sent when the user has a choice list open and presses 
  456.41 +		enter to select an item. The UI Control Framework does not use this 
  456.42 +		event itself. */
  456.43 +		EEventRequestExit,
  456.44 +		/** Request cancel.
  456.45 +		This event is used to indicate exit from a mode when the user has cancelled 
  456.46 +		the operation that caused entry into the mode originally. For example, this 
  456.47 +		event might be sent when the user presses escape to close the list and leave 
  456.48 +		the choice as it was. The UI Control Framework does not use this event itself. */
  456.49 +		EEventRequestCancel,
  456.50 +		/** Request focus.
  456.51 +		This event is notified by the UI Control Framework during pointer down event 
  456.52 +		processing after EEventPrepareFocusTransition is handled. */
  456.53 +		EEventRequestFocus,
  456.54 +		/** Prepare focus transition.
  456.55 +		This event is notified by the UI Control Framework during pointer down event 
  456.56 +		processing if the control does not yet have, but could get, focus. */
  456.57 +		EEventPrepareFocusTransition,
  456.58 +		/** State changed.
  456.59 +		This event can be used by a control to report that some piece of internal 
  456.60 +		data has changed, and hence that any observer should be notified accordingly. 
  456.61 +		The UI Control Framework does not use this value itself. */
  456.62 +		EEventStateChanged,
  456.63 +		/** Interaction refused.
  456.64 +		This event is notified by the UI Control Framework during pointer down event 
  456.65 +		processing if the control is dimmed (disabled). */
  456.66 +		EEventInteractionRefused
  456.67 +		};
  456.68 +public:
  456.69 +	/** Handles an event from an observed control.
  456.70 +	
  456.71 +	This function is called when a control for which this control is the observer 
  456.72 +	calls CCoeControl::ReportEventL(). It should be implemented by the observer 
  456.73 +	control, and should handle all events sent by controls it observes.
  456.74 +	
  456.75 +	@param aControl The control that sent the event.
  456.76 +	@param aEventType The event type. */
  456.77 +	virtual void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType)=0;
  456.78 +protected:
  456.79 +    IMPORT_C MCoeControlObserver();
  456.80 +    
  456.81 +private:
  456.82 +    IMPORT_C virtual void MCoeControlObserver_Reserved1();
  456.83 +    IMPORT_C virtual void MCoeControlObserver_Reserved2();
  456.84 +    
  456.85 +private:
  456.86 +    TInt iMCoeControlObserver_Reserved1;
  456.87 +	};
  456.88 +
  456.89 +class MCoeControlStateObserver
  456.90 +/** This class defines an interface which will given notification of when a CCoeControl
  456.91 +changes its visibility or dimmed state.
  456.92 +
  456.93 +@publishedAll
  456.94 +@released */
  456.95 +	{
  456.96 +	friend class CCoeControl;
  456.97 +public:
  456.98 +	/** The MObjectProvider framework should use this UID to know when to return a concrete instance of this interface. */
  456.99 +	DECLARE_TYPE_ID(0x10285A45)
 456.100 +	enum TCoeState
 456.101 +		{
 456.102 +		/** This enum is used to say that the control has changed its Dimmed state */
 456.103 +		EStateDimmed,
 456.104 +		/** This enum is used to say that the control has changed its Visibility state */
 456.105 +		EStateVisibility
 456.106 +		};
 456.107 +private:
 456.108 +	/**
 456.109 +	If an object implementing this interface has been attached to the MObjectProvider
 456.110 +	hierarchy in which a CCoeControl is a member, any call to the CCoeControl's
 456.111 +	SetDimmed() or MakeVisible() (that results in an actual state change) will trigger
 456.112 +	a call to this interface.
 456.113 +
 456.114 +	@param aControl	A pointer to the control that has changed.
 456.115 +	@param aState	An enum from TCoeState to say how the control has changed.
 456.116 +	@return 		A system wide error code, currently ignored but may not be in future.*/
 456.117 +	virtual TInt HandleControlStateChange(CCoeControl* aControl,TCoeState aState)=0;
 456.118 +	};
 456.119 +
 456.120 +#endif	// __COECOBS_H__
   457.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   457.2 +++ b/epoc32/include/mw/coecoloruse.h	Wed Mar 31 12:27:01 2010 +0100
   457.3 @@ -0,0 +1,122 @@
   457.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   457.5 +// All rights reserved.
   457.6 +// This component and the accompanying materials are made available
   457.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   457.8 +// which accompanies this distribution, and is available
   457.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  457.10 +//
  457.11 +// Initial Contributors:
  457.12 +// Nokia Corporation - initial contribution.
  457.13 +//
  457.14 +// Contributors:
  457.15 +//
  457.16 +// Description:
  457.17 +//
  457.18 +
  457.19 +#ifndef __COECOLORUSE_H__
  457.20 +#define __COECOLORUSE_H__
  457.21 +
  457.22 +#include <e32std.h>
  457.23 +
  457.24 +/** Logical colour used when drawing in controls.
  457.25 +
  457.26 +This class pairs a logical colour value with an explanation of how it is used 
  457.27 +when drawing a control. The explanation is in terms of categories of use, e.g. 
  457.28 +in the TGround category, the colour can used for either the foreground or 
  457.29 +background. 
  457.30 +
  457.31 +@publishedAll 
  457.32 +@released */
  457.33 +class TCoeColorUse
  457.34 +    {
  457.35 +public:
  457.36 +	/** Foreground and background category flags */
  457.37 +	enum TGround
  457.38 +		{
  457.39 +		/** The logical colour is used to draw the control when it is in the foreground. */
  457.40 +		EFore=0x01,
  457.41 +		/** The logical colour is used to draw the control when it is in the background. */
  457.42 +		EBack=0x02
  457.43 +		};
  457.44 +
  457.45 +	/** Flags that control the area in which colour is used. */
  457.46 +	enum TAreas
  457.47 +		{
  457.48 +		/** The logical colour is used to draw a control's contents. */
  457.49 +		EContents=0x10,
  457.50 +		/** The logical colour is used to draw a control's highlighted contents. */
  457.51 +		EHighlights=0x20,
  457.52 +		/** The logical colour is used to draw a control's surrounds. */
  457.53 +		ESurrounds=0x40,
  457.54 +		/** The logical colour is used to draw a control's borders. */
  457.55 +		EBorders=0x80
  457.56 +		};
  457.57 +
  457.58 +	/** Focus category flags */
  457.59 +	enum TFocus
  457.60 +		{
  457.61 +		/** The logical colour is used to draw the control when active and either focused 
  457.62 +		or unfocused. */
  457.63 +		EActive=0x100,
  457.64 +		/** The logical colour is used to draw the control when dimmed and either focused 
  457.65 +		or unfocused. */
  457.66 +		EDimmed=0x200,
  457.67 +		/** The logical colour is used to draw the control when it is shadowed. */
  457.68 +		EShadowed=0x400,	
  457.69 +		/** The logical colour is used to draw the control when focused and pressed. */
  457.70 +		EPressed=0x800
  457.71 +		};
  457.72 +
  457.73 +	/** State category flags */
  457.74 +	enum TState
  457.75 +		{
  457.76 +		/** The logical colour is used to draw the control in the normal state. */
  457.77 +		ENormal=0x1000,
  457.78 +		/** The logical colour is used to draw the control in the set state. */
  457.79 +		ESet=0x2000,
  457.80 +		/** The logical colour is used to draw the control in the checked state. */
  457.81 +		EChecked=0x4000
  457.82 +		};
  457.83 +
  457.84 +	/** Tone flags */
  457.85 +	enum TTones
  457.86 +		{
  457.87 +		/** The logical colour is used to draw the control in neutral tones. */
  457.88 +		ENeutral=0x10000,
  457.89 +		/** The logical colour is used to draw the control in light tones. */
  457.90 +		ELight=0x20000,
  457.91 +		/** The logical colour is used to draw the control in midlight tones. */
  457.92 +		EMidLight=0x40000,
  457.93 +		/** The logical colour is used to draw the control in mid tones. */
  457.94 +		EMid=0x80000,
  457.95 +		/** The logical colour is used to draw the control in dark tones. */
  457.96 +		EDark=0x100000
  457.97 +		};
  457.98 +public:
  457.99 +	IMPORT_C TCoeColorUse();
 457.100 +	//
 457.101 +	IMPORT_C void SetUse(TInt aUse);
 457.102 +	IMPORT_C void SetLogicalColor(TInt aLogicalColor);
 457.103 +	IMPORT_C TInt LogicalColor() const;
 457.104 +	IMPORT_C TInt Use() const;
 457.105 +	//
 457.106 +	IMPORT_C TBool IsForeground() const;
 457.107 +	IMPORT_C TBool IsBackground() const;
 457.108 +	//
 457.109 +	IMPORT_C TBool IsContents() const;
 457.110 +	IMPORT_C TBool IsHighlights() const;
 457.111 +	IMPORT_C TBool IsSurrounds() const;
 457.112 +	IMPORT_C TBool IsBorders() const;
 457.113 +	IMPORT_C TBool IsActive() const;
 457.114 +	IMPORT_C TBool IsDimmed() const;
 457.115 +	IMPORT_C TBool IsPressed() const;
 457.116 +	IMPORT_C TBool IsNormal() const;
 457.117 +	IMPORT_C TBool IsSet() const;
 457.118 +private:
 457.119 +    TInt iLogicalColor;
 457.120 +	TInt iUse;
 457.121 +	TInt iTCoeColorUse_Reserved1;
 457.122 +    };
 457.123 +
 457.124 +
 457.125 +#endif // __COECOLORUSE_H__
   458.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   458.2 +++ b/epoc32/include/mw/coecontrolarray.h	Wed Mar 31 12:27:01 2010 +0100
   458.3 @@ -0,0 +1,183 @@
   458.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   458.5 +// All rights reserved.
   458.6 +// This component and the accompanying materials are made available
   458.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   458.8 +// which accompanies this distribution, and is available
   458.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  458.10 +//
  458.11 +// Initial Contributors:
  458.12 +// Nokia Corporation - initial contribution.
  458.13 +//
  458.14 +// Contributors:
  458.15 +//
  458.16 +// Description:
  458.17 +//
  458.18 +
  458.19 +
  458.20 +#ifndef __COECONTROLARRAY_H__
  458.21 +#define __COECONTROLARRAY_H__
  458.22 +
  458.23 +#include <e32base.h>	// class CBase
  458.24 +
  458.25 +class CCoeControl;
  458.26 +
  458.27 +/** Default id for controls that have no associated id. This is equal
  458.28 +to KErrNotFound
  458.29 +@publishedAll 
  458.30 +@released 
  458.31 +*/
  458.32 +const TInt KCoeNoControlId = KErrNotFound;
  458.33 +
  458.34 +/** Class that encapsulates a control and the identifier for that control.
  458.35 +
  458.36 +Controls in a CCoeControlArray can be associated with an id. This class encapsulates the control and its id.
  458.37 +
  458.38 +@publishedAll 
  458.39 +@released */
  458.40 +class TCoeControlWithId
  458.41 +	{
  458.42 +public:
  458.43 +	TCoeControlWithId(TInt aControlId, CCoeControl* aControl = NULL);
  458.44 +public:
  458.45 +	/** The control */
  458.46 +	CCoeControl* iControl;
  458.47 +	/** The id of the control */
  458.48 +	TInt iId;
  458.49 +	};
  458.50 +
  458.51 +/** Class that represents an array of controls.
  458.52 +
  458.53 +The CCoeControlArray class is used to store the child controls of a container control.
  458.54 +The method CCoeControl::InitComponentArrayL() must be used to create the array and the method
  458.55 +CCoeControlArray& CCoeControl::Components() can be used to get this array.
  458.56 +
  458.57 +@publishedAll 
  458.58 +@released */
  458.59 +class CCoeControlArray : public CBase
  458.60 +	{
  458.61 +public:
  458.62 +	/** This class is an iterator for the CCoeControlArray class.
  458.63 +	@publishedAll 
  458.64 +	@released 
  458.65 +	*/
  458.66 +	class TCursor	// robust iterator
  458.67 +		{
  458.68 +	public:	
  458.69 +		template<typename T> T* Control();
  458.70 +		template<typename T> const T* Control() const;
  458.71 +		IMPORT_C TBool Prev();
  458.72 +		IMPORT_C TBool Next();
  458.73 +		IMPORT_C TBool IsValid() const;
  458.74 +		
  458.75 +		IMPORT_C TBool operator==(const TCursor& aCursor) const;
  458.76 +		IMPORT_C TBool operator!=(const TCursor& aCursor) const;
  458.77 +	public:
  458.78 +		TCursor(const CCoeControlArray& aArray, TInt aIndex);
  458.79 +		TInt Index() const;
  458.80 +	private:
  458.81 +		IMPORT_C CCoeControl* Ctrl() const;	
  458.82 +		void UpdateMemento() const;
  458.83 +		void UpdateIndex() const;
  458.84 +	private:
  458.85 +		const CCoeControlArray* iArray;
  458.86 +		mutable TInt iIndex;
  458.87 +		mutable TCoeControlWithId iMemento;
  458.88 +		};
  458.89 +public:
  458.90 +	IMPORT_C static CCoeControlArray* NewL(CCoeControl& aOwner);
  458.91 +	IMPORT_C ~CCoeControlArray();
  458.92 +	IMPORT_C TInt Count() const;
  458.93 +	IMPORT_C void Reset();
  458.94 +	IMPORT_C void ResetAndDestroy();
  458.95 +	IMPORT_C void SortById();
  458.96 +	
  458.97 +	IMPORT_C TBool ControlsOwnedExternally() const;
  458.98 +	IMPORT_C void SetControlsOwnedExternally(TBool aOwnedExternally);
  458.99 +			
 458.100 +	IMPORT_C TBool IsArrayLocked() const;
 458.101 +	IMPORT_C void SetArrayLocked();
 458.102 +	
 458.103 +	template<typename T> T* ControlById(TInt aControlId);
 458.104 +	template<typename T> const T* ControlById(TInt aControlId) const;
 458.105 +		
 458.106 +	IMPORT_C TCursor Begin() const;
 458.107 +	IMPORT_C TCursor End() const;
 458.108 +	IMPORT_C TCursor Find(const CCoeControl* aControl) const;
 458.109 +	IMPORT_C TCursor Find(TInt aControlId) const;
 458.110 +
 458.111 +	IMPORT_C TCursor AppendLC(CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
 458.112 +	IMPORT_C TCursor InsertAfterLC(TInt aInsertAfterId, CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
 458.113 +	IMPORT_C TCursor InsertLC(TCursor& aInsertAt, CCoeControl* aControl, TInt aControlId = KCoeNoControlId);
 458.114 +	
 458.115 +	IMPORT_C TInt Remove(const CCoeControl* aControl);
 458.116 +	IMPORT_C CCoeControl* Remove(TCursor aRemoveAt);
 458.117 +	IMPORT_C CCoeControl* RemoveById(TInt aControlId);
 458.118 +public:	
 458.119 +	IMPORT_C TInt Replace(CCoeControl* aOriginalControl, CCoeControl* aNewControl);
 458.120 +	
 458.121 +public:	// internal use only
 458.122 +	IMPORT_C TCoeControlWithId At(TInt aIndex);
 458.123 +	IMPORT_C const TCoeControlWithId At(TInt aIndex) const;
 458.124 +	IMPORT_C TInt Id(const CCoeControl& aControl) const;
 458.125 +	IMPORT_C void Sort(TLinearOrder< TCoeControlWithId > aOrder);
 458.126 +public:
 458.127 +	/** Defines the possible events related to a change to the contents
 458.128 +	of the array. */
 458.129 +	enum TEvent
 458.130 +		{
 458.131 +		/** A control has been added to the array */
 458.132 +		EControlAdded,	
 458.133 +		/** A control has been removed from the array */
 458.134 +		EControlRemoved
 458.135 +		};
 458.136 +
 458.137 +private:
 458.138 +	IMPORT_C CCoeControlArray(CCoeControl& aOwner);
 458.139 +	TInt IndexById(TInt aControlId) const;
 458.140 +	IMPORT_C CCoeControl* CtrlById(TInt aControlId) const;
 458.141 +
 458.142 +private:
 458.143 +	CCoeControl& iOwner;
 458.144 +	TInt iFlags;
 458.145 +	RArray<TCoeControlWithId> iControls;
 458.146 +	};
 458.147 +
 458.148 +/**	Gets the control.
 458.149 +@return The control at the current cursor position. 
 458.150 +*/
 458.151 +template<typename T>
 458.152 +T* CCoeControlArray::TCursor::Control()
 458.153 +	{
 458.154 +	return static_cast<T*>(Ctrl());
 458.155 +	}
 458.156 +
 458.157 +/**	Gets the control.
 458.158 +@return The control at the current cursor position. 
 458.159 +*/
 458.160 +template<typename T>
 458.161 +const T* CCoeControlArray::TCursor::Control() const
 458.162 +	{
 458.163 +	return static_cast<T*>(Ctrl());
 458.164 +	}
 458.165 +
 458.166 +/** Gets the control with the given id.
 458.167 +@param aControlId The id of the desired control.
 458.168 +@return The control with the given id.
 458.169 +*/
 458.170 +template<typename T>
 458.171 +T* CCoeControlArray::ControlById(TInt aControlId)
 458.172 +	{
 458.173 +	return static_cast<T*>(CtrlById(aControlId));
 458.174 +	}
 458.175 +
 458.176 +/** Gets the control with the given id.
 458.177 +@param aControlId The id of the desired control.
 458.178 +@return The control with the given id.
 458.179 +*/
 458.180 +template<typename T>
 458.181 +const T* CCoeControlArray::ControlById(TInt aControlId) const
 458.182 +	{
 458.183 +	return static_cast<T*>(CtrlById(aControlId));
 458.184 +	}
 458.185 +
 458.186 +#endif //__COECONTROLARRAY_H__
   459.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   459.2 +++ b/epoc32/include/mw/coedef.h	Wed Mar 31 12:27:01 2010 +0100
   459.3 @@ -0,0 +1,138 @@
   459.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   459.5 +// All rights reserved.
   459.6 +// This component and the accompanying materials are made available
   459.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   459.8 +// which accompanies this distribution, and is available
   459.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  459.10 +//
  459.11 +// Initial Contributors:
  459.12 +// Nokia Corporation - initial contribution.
  459.13 +//
  459.14 +// Contributors:
  459.15 +//
  459.16 +// Description:
  459.17 +//
  459.18 +
  459.19 +#ifndef __COEDEF_H__
  459.20 +#define __COEDEF_H__
  459.21 +
  459.22 +#include <e32std.h> 
  459.23 +#include <guldef.h> // only requried for limited source compatability with releases prior to 250
  459.24 +
  459.25 +const TInt KCoeCustomColorsArrayValue=0x100057C2;
  459.26 +const TInt KCoeColorGray4=0x19bd6002;
  459.27 +const TInt KCoeColorColor16=0x19bd6003;
  459.28 +const TInt ECoeResourceSignatureValue=4;
  459.29 +
  459.30 +/** Event handling flags. 
  459.31 +
  459.32 +These should be returned by CCoeControl::OfferKeyEventL() to indicate whether 
  459.33 +or not a key event was processed by the control. 
  459.34 +
  459.35 +@publishedAll
  459.36 +@released */
  459.37 +enum TKeyResponse
  459.38 +	{
  459.39 +	/** The key event was not handled. */
  459.40 +	EKeyWasNotConsumed,
  459.41 +	/** The key event was handled. */
  459.42 +	EKeyWasConsumed
  459.43 +	};
  459.44 +
  459.45 +/** Control redraw flags. 
  459.46 +
  459.47 +Passed to CCoeControl::SetFocus() to indicate the requirements for control 
  459.48 +redrawing. 
  459.49 +
  459.50 +@publishedAll
  459.51 +@released */
  459.52 +enum TDrawNow
  459.53 +	{
  459.54 +	/** Redraw of the control is not required immediately. */
  459.55 +	ENoDrawNow,
  459.56 +	/** Redraw control immediately. */
  459.57 +	EDrawNow
  459.58 +	};
  459.59 +
  459.60 +/** Window priority values. 
  459.61 +
  459.62 +These are passed in the aOrdinalPriority argument to RWindowTreeNode::SetOrdinalPosition(). 
  459.63 +
  459.64 +@publishedAll
  459.65 +@released */
  459.66 +enum TCoeWinPriority
  459.67 +	{
  459.68 +	/** -1000 */
  459.69 +	ECoeWinPriorityNeverAtFront		=-1000,
  459.70 +	/** -750 */
  459.71 +	ECoeWinPriorityLow				=-750,
  459.72 +	/** 0 */
  459.73 +	ECoeWinPriorityNormal			=0,
  459.74 +	/** 500 */
  459.75 +	ECoeWinPriorityMedium			=500,
  459.76 +	/** 750 */
  459.77 +	ECoeWinPriorityHigh				=750,
  459.78 +	/** 900 */
  459.79 +	ECoeWinPriorityFep				=900,
  459.80 +	/** 1000 */
  459.81 +	ECoeWinPriorityAlwaysAtFront	=1000
  459.82 +	};
  459.83 +
  459.84 +/** The message UID sent when a colour scheme change event occurs.
  459.85 +
  459.86 +@internalTechnology */
  459.87 +const TInt KUidValueCoeColorSchemeChangeEvent	=0x100056C4;
  459.88 +const TInt KUidValueCoeZoomChangeEvent          =0x100057C3;
  459.89 +const TInt KUidValueCoeFontChangeEvent          =0x100057C4;
  459.90 +
  459.91 +/** @internalTechnology */
  459.92 +const TUint KUidFepFrameworkRepository=0x10272618;
  459.93 +
  459.94 +/** @internalTechnology */
  459.95 +enum // key-masks and keys for the "KUidFepFrameworkRepository" repository
  459.96 +	{
  459.97 +	ERepositoryKeyMask_DefaultSetting	=0x00001000,
  459.98 +	ERepositoryKeyMask_DynamicSetting	=0x00002000,
  459.99 +
 459.100 +	ERepositoryKeyMask_FepId			=0x00000001,
 459.101 +	ERepositoryKeyMask_OnState			=0x00000002,
 459.102 +	ERepositoryKeyMask_OnKeyData		=0x00000004,
 459.103 +	ERepositoryKeyMask_OffKeyData		=0x00000008,
 459.104 +
 459.105 +	ERepositoryKey_DefaultFepId			=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_FepId,
 459.106 +	ERepositoryKey_DefaultOnState		=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_OnState,
 459.107 +	ERepositoryKey_DefaultOnKeyData		=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_OnKeyData,
 459.108 +	ERepositoryKey_DefaultOffKeyData	=ERepositoryKeyMask_DefaultSetting|ERepositoryKeyMask_OffKeyData,
 459.109 +
 459.110 +	ERepositoryKey_DynamicFepId			=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_FepId,
 459.111 +	ERepositoryKey_DynamicOnState		=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_OnState,
 459.112 +	ERepositoryKey_DynamicOnKeyData		=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_OnKeyData,
 459.113 +	ERepositoryKey_DynamicOffKeyData	=ERepositoryKeyMask_DynamicSetting|ERepositoryKeyMask_OffKeyData
 459.114 +	};
 459.115 +
 459.116 +/** @internalTechnology */
 459.117 +#if defined(_DEBUG)
 459.118 +#define __DEBUG_CHECK_HEAP_INTEGRITY User::Heap().Check()
 459.119 +#else
 459.120 +#define __DEBUG_CHECK_HEAP_INTEGRITY
 459.121 +#endif
 459.122 +
 459.123 +/** Control key modifier.
 459.124 +
 459.125 +Key codes get changed when the Ctrl key modifier is pressed at the same time as the key . 
 459.126 +The CTRL macro is used to shift the key character appropriately.
 459.127 +
 459.128 +Note: this is not an inline function since that can't be used as the case of a switch 
 459.129 +statement.
 459.130 + 
 459.131 +@publishedAll
 459.132 +@released */
 459.133 +#define CTRL(x) ((x)-'a'+1)
 459.134 +
 459.135 +/** Constant that represents all standard keyboard modifier keys.
 459.136 +
 459.137 +@publishedAll
 459.138 +@released */
 459.139 +#define EAllStdModifiers (EModifierFunc|EModifierCtrl|EModifierShift)
 459.140 +
 459.141 +#endif	// __COEDEF_H__
   460.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   460.2 +++ b/epoc32/include/mw/coeerror.h	Wed Mar 31 12:27:01 2010 +0100
   460.3 @@ -0,0 +1,58 @@
   460.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   460.5 +// All rights reserved.
   460.6 +// This component and the accompanying materials are made available
   460.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   460.8 +// which accompanies this distribution, and is available
   460.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  460.10 +//
  460.11 +// Initial Contributors:
  460.12 +// Nokia Corporation - initial contribution.
  460.13 +//
  460.14 +// Contributors:
  460.15 +//
  460.16 +// Description:
  460.17 +//
  460.18 +
  460.19 +#ifndef __COEERROR_H__
  460.20 +#define __COEERROR_H__
  460.21 +
  460.22 +/**
  460.23 +@internalTechnology
  460.24 +*/
  460.25 +#define KUidConeDllValue16 0x10003a41
  460.26 +
  460.27 +/**
  460.28 +@internalTechnology
  460.29 +*/
  460.30 +const TUid KUidConeDll16={KUidConeDllValue16};
  460.31 +
  460.32 +
  460.33 +#if defined(_UNICODE)
  460.34 +/**
  460.35 +@internalTechnology
  460.36 +*/
  460.37 +#define KUidConeDllValue KUidConeDllValue16
  460.38 +/**
  460.39 +@internalTechnology
  460.40 +*/
  460.41 +const TUid KUidConeDll={KUidConeDllValue};
  460.42 +#else
  460.43 +#define KUidConeDllValue KUidConeDllValue8
  460.44 +const TUid KUidConeDll={KUidConeDllValue};
  460.45 +#endif
  460.46 +
  460.47 +
  460.48 +/** UI Control Framework errors.
  460.49 +
  460.50 +@publishedAll
  460.51 +@deprecated */
  460.52 +enum
  460.53 +	{
  460.54 +	/** Not used. */
  460.55 +	KErrCoeResourceFileDuplicateOffset,
  460.56 +	/** Read fail. CCoeEnv::ReadResource() sets this as the
  460.57 +	active scheduler's extended error number if the read fails.	*/
  460.58 +	KErrCoeFailedToReadFromProgDisk
  460.59 +	};
  460.60 +
  460.61 +#endif	// __COEERROR_H__
   461.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   461.2 +++ b/epoc32/include/mw/coefepff.h	Wed Mar 31 12:27:01 2010 +0100
   461.3 @@ -0,0 +1,71 @@
   461.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   461.5 +// All rights reserved.
   461.6 +// This component and the accompanying materials are made available
   461.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   461.8 +// which accompanies this distribution, and is available
   461.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  461.10 +//
  461.11 +// Initial Contributors:
  461.12 +// Nokia Corporation - initial contribution.
  461.13 +//
  461.14 +// Contributors:
  461.15 +//
  461.16 +// Description:
  461.17 +//
  461.18 +
  461.19 +#ifndef __COEFEPFF_H__
  461.20 +#define __COEFEPFF_H__
  461.21 +
  461.22 +#include <e32std.h>
  461.23 +
  461.24 +class CCoeFepParameters;
  461.25 +class CCoeFep;
  461.26 +
  461.27 +/** FEP factory function which must be exported by every FEP.
  461.28 +
  461.29 +The function is called by the UI Control Framework when it loads the
  461.30 +FEP. It returns a fully constructed object of a CCoeFep-derived class, 
  461.31 +and passes ownership of that object to the caller.
  461.32 +
  461.33 +The function can leave with any of the system-wide error codes,
  461.34 +for instance KErrNoMemory.
  461.35 +
  461.36 +@publishedAll
  461.37 +@released
  461.38 +@param aConeEnvironment A reference to the application's control environment. 
  461.39 +@param aFullFileNameOfDll The full file name of the FEP's top-level DLL, i.e. 
  461.40 +something like "z:\system\fep\TFEP1.FEP". A FEP could use this parameter to 
  461.41 +work out the location of its resource file.
  461.42 +@param aFepParameters FEP parameters. These should simply be passed to 
  461.43 +CCoeFep::BaseConstructL().
  461.44 +@return A pointer to the newly created object belonging to a 
  461.45 +CCoeFep-derived class. */
  461.46 +IMPORT_C CCoeFep* NewFepL(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll, const CCoeFepParameters& aFepParameters);
  461.47 +
  461.48 +/** Runs the FEP settings dialog.
  461.49 +
  461.50 +The function is called by the FEPs control panel plug-in in order 
  461.51 +to run the settings dialog for the FEP. It must be exported by 
  461.52 +every FEP.
  461.53 +
  461.54 +The function can leave with any of the system-wide error codes,
  461.55 +for instance KErrNoMemory.
  461.56 +
  461.57 +Note: the FEP may or may not be loaded when this function is called.
  461.58 +
  461.59 +@publishedAll
  461.60 +@released
  461.61 +@param aConeEnvironment A reference to the application's control environment.
  461.62 +@param aFullFileNameOfDll The full file name of the FEP's top-level DLL, i.e.
  461.63 +something like "z:\system\fep\TFEP1.FEP". */
  461.64 +IMPORT_C void SynchronouslyExecuteSettingsDialogL(CCoeEnv& aConeEnvironment, const TDesC& aFullFileNameOfDll);
  461.65 +IMPORT_C void Reserved_1();
  461.66 +IMPORT_C void Reserved_2();
  461.67 +IMPORT_C void Reserved_3();
  461.68 +IMPORT_C void Reserved_4();
  461.69 +IMPORT_C void Reserved_5();
  461.70 +IMPORT_C void Reserved_6();
  461.71 +IMPORT_C void Reserved_7();
  461.72 +IMPORT_C void Reserved_8();
  461.73 +
  461.74 +#endif	// __COEFEPFF_H__
   462.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   462.2 +++ b/epoc32/include/mw/coefont.h	Wed Mar 31 12:27:01 2010 +0100
   462.3 @@ -0,0 +1,81 @@
   462.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   462.5 +// All rights reserved.
   462.6 +// This component and the accompanying materials are made available
   462.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   462.8 +// which accompanies this distribution, and is available
   462.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  462.10 +//
  462.11 +// Initial Contributors:
  462.12 +// Nokia Corporation - initial contribution.
  462.13 +//
  462.14 +// Contributors:
  462.15 +//
  462.16 +// Description:
  462.17 +//
  462.18 +
  462.19 +#ifndef __COEFONT_H__
  462.20 +#define __COEFONT_H__
  462.21 +
  462.22 +#include <e32def.h>
  462.23 +#include <gdi.h>
  462.24 +
  462.25 +/** A class to simplify font usage
  462.26 +
  462.27 +@publishedAll
  462.28 +@released
  462.29 +*/
  462.30 +class TCoeFont 
  462.31 +	{ 
  462.32 +public: 
  462.33 +	enum TFlags 
  462.34 +		{ 
  462.35 +		ENoFlags = 0x00, 
  462.36 +		ENonZooming = 0x01 
  462.37 +		}; 
  462.38 +
  462.39 +	enum TLogicalSize 
  462.40 +		{ 
  462.41 +		EExtraSmall = 0, 
  462.42 +		ESmall, 
  462.43 +		EMedium, 
  462.44 +		ELarge, 
  462.45 +		EExtraLarge,
  462.46 +		EUndefinedSize = -1
  462.47 +		};         
  462.48 +
  462.49 +	enum TStyle 
  462.50 +		{ 
  462.51 +		EPlain = 0x00, 
  462.52 +		EItalic = 0x01, 
  462.53 +		EBold = 0x02, 
  462.54 +		ESuper = 0x04, 
  462.55 +		ESub = 0x08 
  462.56 +		}; 
  462.57 +
  462.58 +public:
  462.59 +	IMPORT_C TCoeFont(TLogicalSize aSize, TInt aStyle, TInt aFlags = ENoFlags); 
  462.60 +	IMPORT_C TCoeFont(TInt aHeightInPixels, TInt aStyle, TInt aFlags = ENoFlags); 
  462.61 +	IMPORT_C TCoeFont(const TCoeFont& aFont);
  462.62 +	IMPORT_C TCoeFont(); 
  462.63 +	IMPORT_C static TCoeFont NormalFont(TInt aFlags = ENoFlags);	// Medium, Plain 
  462.64 +	IMPORT_C static TCoeFont LegendFont(TInt aFlags = ENoFlags);	// Medium, Bold 
  462.65 +	IMPORT_C static TCoeFont AnnotationFont(TInt aFlags = ENoFlags);// Small, Plain 
  462.66 +	IMPORT_C static TCoeFont TitleFont(TInt aFlags = ENoFlags);		// Large, Bold 
  462.67 +public: // properties         
  462.68 +	IMPORT_C TLogicalSize LogicalSize() const; 
  462.69 +	IMPORT_C TInt HeightInPixels() const; 
  462.70 +	IMPORT_C TFontStyle Style() const; 
  462.71 +	IMPORT_C TBool IsNonZooming() const; 
  462.72 +public:         
  462.73 +	static TInt Compare(const TCoeFont& aFirst, const TCoeFont& aSecond); 
  462.74 +private: 
  462.75 +	TLogicalSize iLogicalSize; 
  462.76 +	TInt8 iHeightInPixels; 
  462.77 +	TInt8 iStyle; 
  462.78 +	TInt8 iFlags; 
  462.79 +	TTypeface iTypeface;	// Member unused at the moment but included for possible future extension
  462.80 +private:         
  462.81 +	TInt iSpare; 
  462.82 +	}; 
  462.83 +
  462.84 +#endif	// __COEFONT_H__
   463.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   463.2 +++ b/epoc32/include/mw/coefontprovider.h	Wed Mar 31 12:27:01 2010 +0100
   463.3 @@ -0,0 +1,68 @@
   463.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   463.5 +// All rights reserved.
   463.6 +// This component and the accompanying materials are made available
   463.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   463.8 +// which accompanies this distribution, and is available
   463.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  463.10 +//
  463.11 +// Initial Contributors:
  463.12 +// Nokia Corporation - initial contribution.
  463.13 +//
  463.14 +// Contributors:
  463.15 +//
  463.16 +// Description:
  463.17 +//
  463.18 +
  463.19 +#ifndef __COEFONTPROVIDER_H__
  463.20 +#define __COEFONTPROVIDER_H__
  463.21 +
  463.22 +#include <e32base.h>
  463.23 +#include <e32def.h>
  463.24 +#include <coefont.h>
  463.25 +#include <coemain.h>
  463.26 +#include <coeaui.h>
  463.27 +#include <coecntss.h>
  463.28 +
  463.29 +/** A helper object designed to make obtaining a font easier, taking into account
  463.30 +zoom factors.
  463.31 +
  463.32 +@publishedAll
  463.33 +@released
  463.34 +*/
  463.35 +class CCoeFontProvider : public CBase 
  463.36 +        { 
  463.37 +public:        // life 
  463.38 +        IMPORT_C static CCoeFontProvider* NewL(); 
  463.39 +        IMPORT_C static CCoeFontProvider* NewL(const TDesC& aTypefaceName); 
  463.40 +        ~CCoeFontProvider(); 
  463.41 +public:        // methods 
  463.42 +        IMPORT_C const CFont& Font(const TCoeFont& aFont, const TZoomFactor& aZoomFactor) const; 
  463.43 +public:        // properties                 
  463.44 +        IMPORT_C void SetTypeface(const TTypeface aTypeface); 
  463.45 +        IMPORT_C void UseSystemTypeface(); 
  463.46 +        IMPORT_C TTypeface Typeface() const;
  463.47 +public:			//but not exported
  463.48 +		void RefetchPixelMappingL();
  463.49 +
  463.50 +private: 
  463.51 +        CCoeFontProvider(const TDesC& aTypefaceName); 
  463.52 +        void ConstructL(); 
  463.53 +        void ReleaseAllFonts(); 
  463.54 +private: 
  463.55 +        class TFont 
  463.56 +                { 
  463.57 +        public: 
  463.58 +                TFont(const TCoeFont& aFontSpec, TInt aZoomFactor, const CFont* aFont = NULL); 
  463.59 +                static TInt Compare(const TFont& aFirst, const TFont& aSecond); 
  463.60 +        public: 
  463.61 +                const TCoeFont iCoeFont; 
  463.62 +                const TInt iZoomFactor; 
  463.63 +                const CFont* iFont; 
  463.64 +                }; 
  463.65 +private: 
  463.66 +        mutable RArray<TFont> iFonts; 
  463.67 +        TTypeface iTypeface; 
  463.68 +        RArray<TInt> iLogicalToPixelSizes; 
  463.69 +        }; 
  463.70 +
  463.71 +#endif	// __COEFONTPROVIDER_H__
   464.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   464.2 +++ b/epoc32/include/mw/coehelp.h	Wed Mar 31 12:27:01 2010 +0100
   464.3 @@ -0,0 +1,55 @@
   464.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   464.5 +// All rights reserved.
   464.6 +// This component and the accompanying materials are made available
   464.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   464.8 +// which accompanies this distribution, and is available
   464.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  464.10 +//
  464.11 +// Initial Contributors:
  464.12 +// Nokia Corporation - initial contribution.
  464.13 +//
  464.14 +// Contributors:
  464.15 +//
  464.16 +// Description:
  464.17 +//
  464.18 +
  464.19 +#ifndef __COEHELP_H__
  464.20 +#define __COEHELP_H__
  464.21 +
  464.22 +#include <e32std.h>
  464.23 +
  464.24 +/** Holds the name of the help context.
  464.25 +
  464.26 +@publishedAll
  464.27 +@released */
  464.28 +typedef TBuf<30> TCoeContextName;
  464.29 +
  464.30 +
  464.31 +class TCoeHelpContext
  464.32 +/** Help context.
  464.33 +
  464.34 +This class contains the information required to link the control and the appropriate 
  464.35 +context sensitive help topic. This information includes the UID of the help 
  464.36 +file and the literal descriptor for the appropriate help topic context.
  464.37 +
  464.38 +@see CCoeControl::GetHelpContext() 
  464.39 +@publishedAll
  464.40 +@released */
  464.41 +	{
  464.42 +public:
  464.43 +	IMPORT_C TCoeHelpContext();
  464.44 +	IMPORT_C TCoeHelpContext(TUid aMajor,const TDesC& aContext);
  464.45 +	IMPORT_C TBool IsNull() const;
  464.46 +	IMPORT_C TBool operator==(const TCoeHelpContext& aContext) const;
  464.47 +	IMPORT_C TBool operator!=(const TCoeHelpContext& aContext) const;
  464.48 +public:
  464.49 +	/** The UID of the context sensitive help file containing the topic information. */
  464.50 +	TUid iMajor;
  464.51 +	/** The name of the help context. This is the literal descriptor generated from 
  464.52 +	a context string by the context sensitive help compiler. */
  464.53 +	TCoeContextName iContext;
  464.54 +private:
  464.55 +    TInt iTCoeHelpContext_Reserved1;
  464.56 +	};
  464.57 +
  464.58 +#endif	// __COEHELP_H__
   465.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   465.2 +++ b/epoc32/include/mw/coeinput.h	Wed Mar 31 12:27:01 2010 +0100
   465.3 @@ -0,0 +1,115 @@
   465.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   465.5 +// All rights reserved.
   465.6 +// This component and the accompanying materials are made available
   465.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   465.8 +// which accompanies this distribution, and is available
   465.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  465.10 +//
  465.11 +// Initial Contributors:
  465.12 +// Nokia Corporation - initial contribution.
  465.13 +//
  465.14 +// Contributors:
  465.15 +//
  465.16 +// Description:
  465.17 +//
  465.18 +
  465.19 +#ifndef __COEINPUT_H__
  465.20 +#define __COEINPUT_H__
  465.21 +
  465.22 +#include <e32std.h>
  465.23 +
  465.24 +// classes defined in FEPBASE, declared here
  465.25 +class MCoeFepAwareTextEditor;
  465.26 +class MCoeCaptionRetrieverForFep;
  465.27 +
  465.28 +class MObjectProvider;
  465.29 +
  465.30 +class TCoeInputCapabilities
  465.31 +/** Describes which forms of text input are consumed by a control or view.
  465.32 +
  465.33 +@publishedAll 
  465.34 +@released */
  465.35 +	{
  465.36 +public:
  465.37 +	/** Text input capability flags. These are used to define the text input 
  465.38 +	capabilities of a control or view. */
  465.39 +	enum
  465.40 +		{
  465.41 +		/** No text input capabilities supported. */
  465.42 +		ENone							=0,
  465.43 +		/** Supports positive western integers. */
  465.44 +		EWesternNumericIntegerPositive	=0x00000001,
  465.45 +		/** Supports negative western integers. */
  465.46 +		EWesternNumericIntegerNegative	=0x00000002,
  465.47 +		/** Supports real numbers. */
  465.48 +		EWesternNumericReal				=0x00000004,
  465.49 +		/** Supports the western alphabets. */
  465.50 +		EWesternAlphabetic				=0x00000008,
  465.51 +		/** Supports Hiragana. */
  465.52 +		EJapaneseHiragana				=0x00000010,
  465.53 +		/** Supports half width Katakana. */
  465.54 +		EJapaneseKatakanaHalfWidth		=0x00000020,
  465.55 +		/** Supports full width Katakana. */
  465.56 +		EJapaneseKatakanaFullWidth		=0x00000040,
  465.57 +		/** Supports dialable characters */
  465.58 +		EDialableCharacters				=0x00000080,
  465.59 +		/** Supports secret text. This is text in which characters appear 
  465.60 +		as asterisks. */
  465.61 +		ESecretText						=0x00000100,
  465.62 +		/** Supports auto sentence case.
  465.63 +		This is text in which first word in a sentence begins with an uppercase letter, 
  465.64 +		with all other letters and words in lowercase. */
  465.65 +		EAutoSentenceCase				=0x00000200,
  465.66 +		/** Supports non-predictive input. */
  465.67 +		ENonPredictive					=0x00000400,
  465.68 +		/** Supports all types of text. */
  465.69 +		EAllText						=0x01000000,
  465.70 +		/** Supports navigation keys. These include arrow keys, page-up,
  465.71 +		page-down, home, end, tab, etc. */
  465.72 +		ENavigation						=0x02000000
  465.73 +		};
  465.74 +	class MCoeFepSpecificExtensions; // to be defined by concrete FEPs, declared here
  465.75 +public:
  465.76 +	// all these functions are exported (rather than inline) so that binary compatibility becomes easier to maintain
  465.77 +	IMPORT_C TCoeInputCapabilities();
  465.78 +	IMPORT_C TCoeInputCapabilities(TUint aCapabilities);
  465.79 +	IMPORT_C TCoeInputCapabilities(TUint aCapabilities, MCoeFepAwareTextEditor* aFepAwareTextEditor, MCoeCaptionRetrieverForFep* aCaptionRetrieverForFep);
  465.80 +	IMPORT_C TCoeInputCapabilities(TUint aCapabilities, MCoeFepAwareTextEditor* aFepAwareTextEditor, MCoeCaptionRetrieverForFep* aCaptionRetrieverForFep, TUid aFepUid, MCoeFepSpecificExtensions* aFepSpecificExtensions);
  465.81 +	IMPORT_C TCoeInputCapabilities(const TCoeInputCapabilities& aAnother); // defined so that iSpareForFutureUse is not copied
  465.82 +	IMPORT_C TCoeInputCapabilities& operator=(const TCoeInputCapabilities& aAnother); // defined so that iSpareForFutureUse is not copied
  465.83 +	IMPORT_C TBool operator==(const TCoeInputCapabilities& aAnother) const; // defined so that iSpareForFutureUse is not tested
  465.84 +	IMPORT_C TBool operator!=(const TCoeInputCapabilities& aAnother) const; // defined so that iSpareForFutureUse is not tested
  465.85 +	IMPORT_C void MergeWith(const TCoeInputCapabilities& aAnother);
  465.86 +	IMPORT_C void SetCapabilities(TUint aCapabilities);
  465.87 +	IMPORT_C TUint Capabilities() const;
  465.88 +	IMPORT_C TBool IsNone() const;
  465.89 +	IMPORT_C TBool SupportsWesternNumericIntegerPositive() const;
  465.90 +	IMPORT_C TBool SupportsWesternNumericIntegerNegative() const;
  465.91 +	IMPORT_C TBool SupportsWesternNumericReal() const;
  465.92 +	IMPORT_C TBool SupportsWesternAlphabetic() const;
  465.93 +	IMPORT_C TBool SupportsJapaneseHiragana() const;
  465.94 +	IMPORT_C TBool SupportsJapaneseKatakanaHalfWidth() const;
  465.95 +	IMPORT_C TBool SupportsJapaneseKatakanaFullWidth() const;
  465.96 +	IMPORT_C TBool SupportsDialableCharacters() const;
  465.97 +	IMPORT_C TBool SupportsSecretText() const;
  465.98 +	IMPORT_C TBool SupportsAutoSentenceCase() const;
  465.99 +	IMPORT_C TBool SupportsNonPredictive() const;
 465.100 +	IMPORT_C TBool SupportsAllText() const;
 465.101 +	IMPORT_C TBool SupportsNavigation() const;
 465.102 +	IMPORT_C MCoeFepAwareTextEditor* FepAwareTextEditor() const;
 465.103 +	IMPORT_C MCoeCaptionRetrieverForFep* CaptionRetrieverForFep() const;
 465.104 +	IMPORT_C MCoeFepSpecificExtensions* FepSpecificExtensions(TUid aFepUid) const;
 465.105 +    IMPORT_C MObjectProvider* ObjectProvider() const;
 465.106 +    IMPORT_C void SetObjectProvider(MObjectProvider* aObjectProvider);
 465.107 +
 465.108 +private:
 465.109 +	TUint iCapabilities;
 465.110 +	MCoeFepAwareTextEditor* iFepAwareTextEditor;
 465.111 +	MCoeCaptionRetrieverForFep* iCaptionRetrieverForFep;
 465.112 +	TUint iFepUid;
 465.113 +	MCoeFepSpecificExtensions* iFepSpecificExtensions;
 465.114 +    MObjectProvider* iObjectProvider;
 465.115 +    TAny* iSpareForFutureUse[5];
 465.116 +	};
 465.117 +
 465.118 +#endif	// __COEINPUT_H__
   466.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   466.2 +++ b/epoc32/include/mw/coelayoutman.h	Wed Mar 31 12:27:01 2010 +0100
   466.3 @@ -0,0 +1,171 @@
   466.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   466.5 +// All rights reserved.
   466.6 +// This component and the accompanying materials are made available
   466.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   466.8 +// which accompanies this distribution, and is available
   466.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  466.10 +//
  466.11 +// Initial Contributors:
  466.12 +// Nokia Corporation - initial contribution.
  466.13 +//
  466.14 +// Contributors:
  466.15 +//
  466.16 +// Description:
  466.17 +// CoeLayoutManager.H
  466.18 +// 
  466.19 +//
  466.20 +
  466.21 +#ifndef __COELAYOUTMANAGER_H__
  466.22 +#define __COELAYOUTMANAGER_H__
  466.23 +
  466.24 +#include <e32base.h>
  466.25 +
  466.26 +class CCoeControl;
  466.27 +
  466.28 +
  466.29 +/**
  466.30 +Base class for layout managers.
  466.31 +
  466.32 +A layout manager can be attached to one, or many (depending on the concrete layout
  466.33 +manager), compound controls. The layout manager handles the layout of the components
  466.34 +of the attached compound controls, and calculates the attached compound controls' 
  466.35 +minimum size. 
  466.36 +
  466.37 +@publishedAll
  466.38 +@released
  466.39 +*/
  466.40 +class MCoeLayoutManager
  466.41 +	{
  466.42 +protected:
  466.43 +	IMPORT_C MCoeLayoutManager();
  466.44 +	
  466.45 +public:
  466.46 +
  466.47 +	/** Determines if it is possible to attach another control to the layout manager.
  466.48 +	@return <code>ETrue</code> if possible, otherwise <code>EFalse</code>
  466.49 +	*/
  466.50 +	virtual TBool CanAttach() const = 0;
  466.51 +
  466.52 +	/** Attaches <code>aCompoundControl</code> to the layout manager.
  466.53 +	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
  466.54 +	calls this function.
  466.55 +	Once a compound control is attached to a layout manager, the layout manager owns itself.
  466.56 +	@see Detach()
  466.57 +	@see CCoeControl::SetLayoutManagerL()
  466.58 +	@param aCompoundControl The compound control.
  466.59 +	*/
  466.60 +	virtual void AttachL(CCoeControl& aCompoundControl) = 0;
  466.61 +
  466.62 +	/** Detaches <code>aCompoundControl</code> from the layout manager.
  466.63 +	Is normally not called manually since <code>CCoeControl::SetLayoutManagerL()</code>
  466.64 +	calls this function when you switch layout managers on a control. It is also called
  466.65 +	from <code>CCoeControl::~CCoeControl</code>
  466.66 +	When the last attached compound control detaches, the layout manager deletes itself.
  466.67 +	@see CCoeControl::SetLayoutManagerL()
  466.68 +	@param aCompoundControl The compound control.
  466.69 +	*/
  466.70 +	virtual void Detach(CCoeControl& aCompoundControl) = 0;
  466.71 +
  466.72 +	/** Calculates the minimum size of <code>aCompoundControl</code>
  466.73 +	Is normally not called manually since <code>CCoeControl::MinimumSize()</code>
  466.74 +	calls this function in the default implementation on controls with layout managers.
  466.75 +
  466.76 +	To calculate the minimum size is almost as time consuming as performing an actual layout
  466.77 +	and should be used with caution. The minimum size depends on <code>aCompoundControl</code>'s
  466.78 +	maximum width.
  466.79 +	@see CCoeControl::MaximumWidth()
  466.80 +	@param aCompoundControl The compound control
  466.81 +	@return The minimum size
  466.82 +	*/
  466.83 +	virtual TSize CalcMinimumSize(const CCoeControl& aCompoundControl) const = 0;
  466.84 +
  466.85 +	/** Performs the layout of the attached controls
  466.86 +	Is normally not called manually since <code>CCoeControl::SizeChanged()</code>
  466.87 +	calls this function in the default implementation on controls with layout managers.
  466.88 +
  466.89 +	The layout is generally performed by calling the component controls'
  466.90 +	<code>SetMaximumWidth()</code>, followed by <code>MinimumSize()</code>, and then the
  466.91 +	layout manager tries to place the component controls according to their minimum
  466.92 +	sizes and the settings.
  466.93 +
  466.94 +	@see CCoeControl::SetMaximumWidth()
  466.95 +	@see CCoeControl::MinimumSize()
  466.96 +	*/
  466.97 +	virtual void PerformLayout() = 0;
  466.98 +
  466.99 +	/** Gets the offset to the first text baseline relative to the top of the control.
 466.100 +	
 466.101 +	@param aCompoundControl The control
 466.102 +	@param aSize The size of the control
 466.103 +	@return The baseline
 466.104 +	@see CCoeControl::TextBaselineOffset()
 466.105 +	*/
 466.106 +	virtual TInt CalcTextBaselineOffset(const CCoeControl& aCompoundControl, const TSize& aSize) const = 0;
 466.107 +
 466.108 +	/** Sets the spacing between text baselines.
 466.109 +
 466.110 +	@param aBaselineSpacing The new value for the baseline
 466.111 +	@see CCoeControl::SetTextBaseLineSpacing()
 466.112 +	*/
 466.113 +	virtual void SetTextBaselineSpacing(TInt aBaselineSpacing) = 0;
 466.114 +	
 466.115 +	/** Returns the baseline spacing.
 466.116 +	@return The baseline value.
 466.117 +	*/
 466.118 +	virtual TInt TextBaselineSpacing() const = 0;
 466.119 +
 466.120 +	/** Handles when a component control is added to an attached compound control
 466.121 +	Is normally not called manually since <code>CCoeControlArray::InsertLC()</code>
 466.122 +	calls this function for controls with layout managers.
 466.123 +	Is used by layout managers to prepare to layout one more component control.
 466.124 +	@see CCoeControlArray::InsertLC()
 466.125 +	@param aCompoundControl The compound control.
 466.126 +	@param aAddedControl The added control
 466.127 +	*/
 466.128 +	virtual void HandleAddedControlL(const CCoeControl& aCompoundControl, const CCoeControl& aAddedControl) = 0;
 466.129 +	
 466.130 +	/** Handles when a component control is removed from an attached compound control
 466.131 +	Is normally not called manually since <code>CCoeControlArray::Remove()</code>
 466.132 +	calls this function for controls with layout managers.
 466.133 +	Is used by layout managers to remove all settings and similar that are specific for
 466.134 +	<code>aRemovedControl</code>.
 466.135 +	@see CCoeControlArray::Remove()
 466.136 +	@param aCompoundControl The compound control.
 466.137 +	@param aRemovedControl The removed control
 466.138 +	*/
 466.139 +	virtual void HandleRemovedControl(const CCoeControl& aCompoundControl, const CCoeControl& aRemovedControl) = 0;
 466.140 +
 466.141 +	/** Handles when a component control is replaced by another component control
 466.142 +	in an attached compound control
 466.143 +	
 466.144 +	Is not called by <code>CCoeControl</code>.
 466.145 +	Is used by layout managers to move settings and similar that are specified for 
 466.146 +	<code>aOldControl</code> to <code>aNewControl</code>
 466.147 +	If this function is called, neither <code>HandleAddedControlL</code> nor 
 466.148 +	<code>HandleRemovedControl</code> is allowed to be called.
 466.149 +	@param aOldControl The old component control
 466.150 +	@param aNewControl The new component control
 466.151 +	@return <code>KErrNone</code> if no error. <code>KErrNotFound</code> if the
 466.152 +	layout manager cannot find <code>aOldControl</code>
 466.153 +	*/
 466.154 +	virtual TInt HandleControlReplaced(const CCoeControl& aOldControl, const CCoeControl& aNewControl) = 0;
 466.155 +
 466.156 +	
 466.157 +private:
 466.158 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_1();
 466.159 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_2();
 466.160 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_3();
 466.161 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_4();
 466.162 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_5();
 466.163 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_6();
 466.164 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_7();
 466.165 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_8();
 466.166 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_9();
 466.167 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_10();
 466.168 +	IMPORT_C virtual void Reserved_MCoeLayoutManager_11();
 466.169 +private:
 466.170 +	TInt iMCoeLayoutManager_Reserved1;
 466.171 +	};
 466.172 +
 466.173 +
 466.174 +#endif	// __COELAYOUTMANAGER_H__
   467.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   467.2 +++ b/epoc32/include/mw/coemain.h	Wed Mar 31 12:27:01 2010 +0100
   467.3 @@ -0,0 +1,558 @@
   467.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   467.5 +// All rights reserved.
   467.6 +// This component and the accompanying materials are made available
   467.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   467.8 +// which accompanies this distribution, and is available
   467.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  467.10 +//
  467.11 +// Initial Contributors:
  467.12 +// Nokia Corporation - initial contribution.
  467.13 +//
  467.14 +// Contributors:
  467.15 +//
  467.16 +// Description:
  467.17 +//
  467.18 +
  467.19 +#ifndef __COEMAIN_H__
  467.20 +#define __COEMAIN_H__
  467.21 +
  467.22 +#include <e32base.h>
  467.23 +#include <w32std.h>
  467.24 +#include <barsc.h>
  467.25 +#include <badesca.h>
  467.26 +#include <basched.h>
  467.27 +#include <coemop.h>
  467.28 +#include <coetextdrawer.h>
  467.29 +
  467.30 +#if defined(USE_IH_RAISE_EVENT)
  467.31 +#include <systemmonitor/raiseevent.h>
  467.32 +#include <test/testinstrumentation.h>
  467.33 +#endif
  467.34 +
  467.35 +class CVwsSessionWrapper;
  467.36 +class MVwsSessionWrapperObserver;
  467.37 +class TCoeInputCapabilities; // forward declaration of class defined in COEINPUT.H
  467.38 +class CCoeAppUi;
  467.39 +class CCoeEnv;
  467.40 +class TResourceReader;
  467.41 +class RGenericPointerArray;
  467.42 +class CCoeFep; // must derive from CBase
  467.43 +class CCoeFontProvider;
  467.44 +class CCoeEnvExtra;
  467.45 +class CCoeStatic;
  467.46 +
  467.47 +
  467.48 +/** UI Control framework active object priorities. 
  467.49 +These are in addition to the values contained in the TPriority enum in class CActive.
  467.50 +
  467.51 +@publishedAll
  467.52 +@released */
  467.53 +enum TActivePriority
  467.54 +	{
  467.55 +	/** 300 */
  467.56 +	EActivePriorityClockTimer=300,
  467.57 +	/** 200 */
  467.58 +	EActivePriorityIpcEventsHigh=200,
  467.59 +	/** 150 */
  467.60 +	EActivePriorityFepLoader=150,
  467.61 +	/** 100 */
  467.62 +	EActivePriorityWsEvents=100,
  467.63 +	/** 50 */
  467.64 +	EActivePriorityRedrawEvents=50,
  467.65 +	/** 0 */
  467.66 +	EActivePriorityDefault=0,
  467.67 +	/** 10 */
  467.68 +	EActivePriorityLogonA=-10
  467.69 +	};
  467.70 +
  467.71 +
  467.72 +/** Interface providing notification when there is a change in the currently 
  467.73 +loaded FEP. 
  467.74 +
  467.75 +This happens either on application start-up, or as a result of a different 
  467.76 +front end processor having been installed.
  467.77 +
  467.78 +Anyone requiring this notification should derive from this class and implement 
  467.79 +its pure virtual function. Derived classes also need to call CCoeEnv::AddObserverOfLoadedFepL() 
  467.80 +during construction, and CCoeEnv::RemoveObserverOfLoadedFep() in their destructor. 
  467.81 +
  467.82 +@publishedAll
  467.83 +@released */
  467.84 +class MCoeObserverOfLoadedFep
  467.85 +	{
  467.86 +public:
  467.87 +	/** Handles a change in the loaded FEP. 
  467.88 +	
  467.89 +	The function is called if a new FEP is loaded, or if the current one is unloaded. */
  467.90 +	virtual void HandleChangeInLoadedFep()=0;
  467.91 +protected:
  467.92 +	IMPORT_C MCoeObserverOfLoadedFep();
  467.93 +	
  467.94 +private:
  467.95 +	IMPORT_C virtual void MCoeObserverOfLoadedFep_Reserved_1();
  467.96 +	IMPORT_C virtual void MCoeObserverOfLoadedFep_Reserved_2();
  467.97 +private:
  467.98 + 	TInt iMCoeObserverOfLoadedFep_Reserved1;
  467.99 +	};
 467.100 +
 467.101 +
 467.102 +/** Interface providing notification if any control gains or loses focus or is 
 467.103 +destroyed. 
 467.104 +
 467.105 +The FEP framework uses this class to observe when a target control changes 
 467.106 +for reasons unrelated to the FEP.
 467.107 +
 467.108 +Anything that needs such notification should derive from this class and implement 
 467.109 +its two pure virtual functions. 
 467.110 +
 467.111 +In addition, derived classes need to call CCoeEnv::AddFocusObserverL() during 
 467.112 +construction, and CCoeEnv::RemoveFocusObserver() in their destructors. 
 467.113 +
 467.114 +@publishedAll
 467.115 +@released 
 467.116 +@see CCoeFep */
 467.117 +class MCoeFocusObserver
 467.118 +	{
 467.119 +public:
 467.120 +	/** Handles changes in focus. The function is called if any control gains or loses 
 467.121 +	focus. */
 467.122 +	virtual void HandleChangeInFocus()=0;
 467.123 +	/** Handles the destruction of any control. It is called by the framework if any 
 467.124 +	control is destroyed. */
 467.125 +	virtual void HandleDestructionOfFocusedItem()=0;
 467.126 +protected:
 467.127 +	IMPORT_C MCoeFocusObserver();
 467.128 +private:
 467.129 +	IMPORT_C virtual void MCoeFocusObserver_Reserved_1();
 467.130 +	IMPORT_C virtual void MCoeFocusObserver_Reserved_2();
 467.131 +private:
 467.132 +	TInt iMCoeFocusObserver_Reserved1;
 467.133 +	};
 467.134 +
 467.135 +/** An interface which enables message windows to observe resource changes.
 467.136 +
 467.137 +Resource change observers should be added to the control environment using 
 467.138 +CCoeEnv::AddResourceChangeObserverL(). 
 467.139 +
 467.140 +@publishedAll 
 467.141 +@released */
 467.142 +class MCoeResourceChangeObserver
 467.143 +	{
 467.144 +public:
 467.145 +	/** Handles a change to the application's resources. */
 467.146 +	virtual void HandleResourceChange()=0;
 467.147 +protected:
 467.148 +	IMPORT_C MCoeResourceChangeObserver();
 467.149 +private:
 467.150 +	IMPORT_C virtual void MCoeResourceChangeObserver_Reserved_1();
 467.151 +	IMPORT_C virtual void MCoeResourceChangeObserver_Reserved_2();
 467.152 +private:
 467.153 +	TInt iMCoeResourceChangeObserver_Reserved1;
 467.154 +	};
 467.155 +
 467.156 +/** Interface providing notification of foreground/background changes. 
 467.157 +
 467.158 +The FEP framework class, CCoeFep, derives from MCoeForegroundObserver, which 
 467.159 +enables FEPs to receive notification when the target application (which receives 
 467.160 +the FEP's output) goes into the foreground or background.
 467.161 +
 467.162 +Anything that needs this notification should derive from this class and override 
 467.163 +its two pure virtual functions.
 467.164 +
 467.165 +In addition, derived classes also need to call CCoeEnv::AddForegroundObserverL() 
 467.166 +during construction, and CCoeEnv::RemoveForegroundObserver() in their destructors. 
 467.167 +
 467.168 +@publishedAll
 467.169 +@released 
 467.170 +@see CCoeFep */
 467.171 +class MCoeForegroundObserver
 467.172 +	{
 467.173 +public:
 467.174 +	/** Handles the application coming to the foreground. */
 467.175 +	virtual void HandleGainingForeground()=0;
 467.176 +	/** Handles the application going into the background. */
 467.177 +	virtual void HandleLosingForeground()=0;
 467.178 +protected:
 467.179 +	IMPORT_C MCoeForegroundObserver();
 467.180 +private:
 467.181 +	IMPORT_C virtual void MCoeForegroundObserver_Reserved_1();
 467.182 +	IMPORT_C virtual void MCoeForegroundObserver_Reserved_2();
 467.183 +private:
 467.184 +	TInt iMCoeForegroundObserver_Reserved1;
 467.185 +	};
 467.186 +
 467.187 +
 467.188 +/** Interface for handling incoming window server messages.
 467.189 +
 467.190 +This interface is used to enable FEPs to keep their settings synchronised 
 467.191 +across all running instances.
 467.192 +
 467.193 +Anything that needs to be notified of messages that get sent by the window server's 
 467.194 +message-sending service should derive from this class and override its pure 
 467.195 +virtual function. 
 467.196 +
 467.197 +In addition, derived classes also need to call CCoeEnv::AddMessageObserverL() 
 467.198 +during construction and CCoeEnv::RemoveMessageObserver() in their destructors. 
 467.199 +
 467.200 +@publishedAll 
 467.201 +@released */
 467.202 +class MCoeMessageObserver
 467.203 +	{
 467.204 +public:
 467.205 +	/** Message response flags. */
 467.206 +	enum TMessageResponse
 467.207 +		{
 467.208 +		/** Message not handled. */
 467.209 +		EMessageNotHandled,
 467.210 +		/** Message handled. */
 467.211 +		EMessageHandled
 467.212 +		};
 467.213 +public:
 467.214 +	/** Handles window server messages. 
 467.215 +	
 467.216 +	Implementations should return EMessageHandled if they are able to handle the 
 467.217 +	message, or EMessageNotHandled if the message is not appropriate to this observer.
 467.218 +	
 467.219 +	@param aClientHandleOfTargetWindowGroup The window group that the message 
 467.220 +	was sent to. Many implementations will not need this information.
 467.221 +	@param aMessageUid The message UID.
 467.222 +	@param aMessageParameters The message parameters.
 467.223 +	@return Indicates whether the message was handled or not handled 
 467.224 +	by the function. */
 467.225 +	virtual TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters)=0;
 467.226 +protected:
 467.227 +	IMPORT_C MCoeMessageObserver();
 467.228 +private:
 467.229 +	IMPORT_C virtual void MCoeMessageObserver_Reserved_1();
 467.230 +	IMPORT_C virtual void MCoeMessageObserver_Reserved_2();
 467.231 +	};
 467.232 +
 467.233 +/** Mix-in interface for handling window visibility messages. 	
 467.234 +
 467.235 +@publishedAll
 467.236 +@released */
 467.237 +class MCoeMessageMonitorObserver
 467.238 +	{
 467.239 +public:
 467.240 +	/** Received windows messages for monitoring. 
 467.241 +	@param aEvent The windows server event data.*/
 467.242 +	virtual void MonitorWsMessage(const TWsEvent& aEvent)=0;
 467.243 +private:
 467.244 +	IMPORT_C virtual void MCoeMessageMonitorObserver_Reserved_1();
 467.245 +	IMPORT_C virtual void MCoeMessageMonitorObserver_Reserved_2();
 467.246 +	};
 467.247 +
 467.248 +// classes defined in FEPBASE, declared here
 467.249 +class MCoeFepObserver;
 467.250 +
 467.251 +/** 
 467.252 +@publishedAll
 467.253 +@released
 467.254 +*/
 467.255 +typedef void (*TCoeFepObserverFunction)(MCoeFepObserver& aFepObserver);
 467.256 +
 467.257 +/**
 467.258 +@publishedAll 
 467.259 +@released 
 467.260 +*/
 467.261 +class CCoeFepParameters : public CBase
 467.262 +	{
 467.263 +public:
 467.264 +	static CCoeFepParameters* NewLC();
 467.265 +private:
 467.266 +	inline CCoeFepParameters() {}
 467.267 +	};
 467.268 +
 467.269 +
 467.270 +/** Implements the active scheduler presupposed by the control environment.
 467.271 +
 467.272 +@publishedPartner
 467.273 +@deprecated
 467.274 +*/
 467.275 +class CCoeScheduler : public CBaActiveScheduler
 467.276 +	{
 467.277 +public:
 467.278 +	IMPORT_C CCoeScheduler(CCoeEnv* aCoeEnv);
 467.279 +	IMPORT_C virtual void WaitForAnyRequest();
 467.280 +	IMPORT_C virtual void DisplayError(TInt aError) const;
 467.281 +	/** Gets the control environment.
 467.282 +	
 467.283 +	@return A pointer to the control environment. */
 467.284 +	inline CCoeEnv* CoeEnv() {return iCoeEnv;}
 467.285 +	TBool Flush() const; // not to be called from outside CONE
 467.286 +	void SetFlush(TBool aFlush); // not to be called from outside CONE
 467.287 +private:
 467.288 +	// from CBaActiveScheduler
 467.289 +	IMPORT_C virtual void Reserved_1();
 467.290 +	IMPORT_C virtual void Reserved_2();
 467.291 +private:
 467.292 +	CCoeEnv* iCoeEnv;
 467.293 +	TBool iFlush;
 467.294 +	};
 467.295 +
 467.296 +
 467.297 +
 467.298 +/** Control environment.
 467.299 +
 467.300 +CCoeEnv provides an active environment for creating controls. It implements 
 467.301 +active objects and an active scheduler, which provide access to the window 
 467.302 +server, simplifying the API for application programs. It also provides utility 
 467.303 +functions that are useful to many applications.
 467.304 +
 467.305 +When a standard event occurs, the active scheduler calls CCoeEnv::RunL(). 
 467.306 +When a redraw event occurs, it calls CCoeRedrawer::RunL(). Priority key events 
 467.307 +must be accessed using the Window Server API directly.
 467.308 +
 467.309 +Note: standard events are all events except redraw events and priority key events. 
 467.310 +
 467.311 +@publishedAll
 467.312 +@released */
 467.313 +class CCoeEnv : public CActive, public MObjectProvider
 467.314 +	{
 467.315 +public:
 467.316 +	// Properties
 467.317 +	IMPORT_C static TVersion Version();
 467.318 +	IMPORT_C static CCoeEnv* Static();
 467.319 +	// Construction and destruction
 467.320 +	IMPORT_C CCoeEnv();
 467.321 +	IMPORT_C ~CCoeEnv();
 467.322 +	IMPORT_C void ConstructL();
 467.323 +	IMPORT_C void ConstructL(TBool aInitialFocusState);
 467.324 +	IMPORT_C void ConstructL(TBool aInitialFocusState, TInt aDefaultScreenNumber);
 467.325 +	IMPORT_C void ConstructL(TBool aInitialFocusState, TInt aDefaultScreenNumber, TInt aWindowGroupID);
 467.326 +	IMPORT_C CCoeAppUi* SetAppUi(CCoeAppUi* aAppUi);
 467.327 +	IMPORT_C void ExecuteD();
 467.328 +	IMPORT_C void Execute();
 467.329 +	IMPORT_C void RunL();
 467.330 +	IMPORT_C void DoCancel();
 467.331 +	IMPORT_C void PrepareToExit();
 467.332 +	IMPORT_C virtual void DestroyEnvironment();
 467.333 +	IMPORT_C void DisableExitChecks(TBool aDisable);
 467.334 +	IMPORT_C virtual void HandleError(TInt aError);
 467.335 +	// System resources
 467.336 +	inline CCoeAppUi* AppUi() const;
 467.337 +	inline RFs& FsSession() const;
 467.338 +	inline RWsSession& WsSession() const;
 467.339 +	inline RWindowGroup& RootWin() const;
 467.340 +	inline CWsScreenDevice* ScreenDevice() const;
 467.341 +	inline CWindowGc& SystemGc() const;
 467.342 +	inline const CFont* NormalFont() const;
 467.343 +	inline const TWsEvent& LastEvent() const;
 467.344 +	inline TBool IsSchedulerRunning() const;
 467.345 +	// Graphics
 467.346 +	IMPORT_C CWindowGc* CreateGcL();
 467.347 +	IMPORT_C CWindowGc* SwapSystemGc(CWindowGc* aGc);
 467.348 +	IMPORT_C void Flush(TTimeIntervalMicroSeconds32 aDelay=0);
 467.349 +	IMPORT_C void SuppressNextFlush();
 467.350 +	IMPORT_C TBool IsWservEventPending() const;
 467.351 +	IMPORT_C TBool IsRedrawEventPending() const;
 467.352 +	// Fonts (legacy API)
 467.353 +	IMPORT_C CFbsFont* CreateDeviceFontL(CGraphicsDevice* aDevice,const TFontSpec& aFontSpec);
 467.354 +	IMPORT_C CFbsFont* CreateScreenFontL(const TFontSpec& aFontSpec);
 467.355 +	IMPORT_C void ReleaseScreenFont(CFont* aFont) const;
 467.356 +	// Font provider
 467.357 +	IMPORT_C const CCoeFontProvider& DefaultFontProvider() const; 
 467.358 +	// Text drawer
 467.359 +	IMPORT_C CCoeTextDrawerBase& DefaultTextDrawer() const;
 467.360 +	// Zooming
 467.361 +	IMPORT_C TZoomFactor ZoomFactor() const;
 467.362 +	IMPORT_C void SetZoomFactor(const TZoomFactor& aZoomFactor);
 467.363 +	// Resource reading	
 467.364 +	IMPORT_C TInt AddResourceFileL(const TDesC& aFileName);
 467.365 +	IMPORT_C void DeleteResourceFile(TInt aOffset);
 467.366 +	IMPORT_C TBool IsResourceAvailableL(TInt aResourceId) const;
 467.367 +	IMPORT_C void CreateResourceReaderLC(TResourceReader& aReader,TInt aResourceId) const;
 467.368 +	inline void ReadResource(TDes& aDes,TInt aResourceId) const; 
 467.369 +	inline void ReadResourceL(TDes& aDes,TInt aResourceId) const; 
 467.370 +	inline HBufC* AllocReadResourceL(TInt aResourceId) const;
 467.371 +	inline HBufC* AllocReadResourceLC(TInt aResourceId) const;
 467.372 +	inline CDesCArrayFlat* ReadDesCArrayResourceL(TInt aResourceId);
 467.373 +	IMPORT_C void ReadResourceAsDes8(TDes8& aDes,TInt aResourceId) const; /** @deprecated 7.0*/
 467.374 +	IMPORT_C void ReadResourceAsDes8L(TDes8& aDes,TInt aResourceId) const;
 467.375 +	IMPORT_C HBufC8* AllocReadResourceAsDes8L(TInt aResourceId) const;
 467.376 +	IMPORT_C HBufC8* AllocReadResourceAsDes8LC(TInt aResourceId) const;
 467.377 +	IMPORT_C CDesC8ArrayFlat* ReadDesC8ArrayResourceL(TInt aResourceId);
 467.378 +	IMPORT_C void ReadResourceAsDes16(TDes16& aDes,TInt aResourceId) const; /** @deprecated 7.0*/
 467.379 +	IMPORT_C void ReadResourceAsDes16L(TDes16& aDes,TInt aResourceId) const; 
 467.380 +	IMPORT_C HBufC16* AllocReadResourceAsDes16L(TInt aResourceId) const;
 467.381 +	IMPORT_C HBufC16* AllocReadResourceAsDes16LC(TInt aResourceId) const;
 467.382 +	IMPORT_C CDesC16ArrayFlat* ReadDesC16ArrayResourceL(TInt aResourceId);
 467.383 +	IMPORT_C void Format128(TDes& aDes,TInt aResourceId,...);
 467.384 +	IMPORT_C void Format256(TDes& aDes,TInt aResourceId,...);
 467.385 +	// Error handling
 467.386 +	IMPORT_C void LeaveWithErrorText(const TDesC& aMsg,const TDesC* aContextText=NULL);
 467.387 +	// Key handling
 467.388 +	IMPORT_C void SimulateKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
 467.389 +	// FEP handling
 467.390 +	IMPORT_C void AddObserverOfLoadedFepL(MCoeObserverOfLoadedFep& aObserverOfLoadedFep);
 467.391 +	IMPORT_C void RemoveObserverOfLoadedFep(MCoeObserverOfLoadedFep& aObserverOfLoadedFep);
 467.392 +	IMPORT_C void AddFepObserverL(MCoeFepObserver& aFepObserver);
 467.393 +	IMPORT_C void RemoveFepObserver(MCoeFepObserver& aFepObserver);
 467.394 +	IMPORT_C void ForEachFepObserverCall(TCoeFepObserverFunction aFepObserverFunction);
 467.395 +	void EnsureCorrectFepIsLoadedL();
 467.396 +	void EnsureSpecifiedFepIsLoadedL(TUid aFepUid);
 467.397 +	IMPORT_C void InstallFepL(TUid aFepUid);
 467.398 +	IMPORT_C void InstallFepL(TUid aFepUid, const TBool aLeave);
 467.399 +	IMPORT_C void AvailableFepsL(RArray<TUid>& aUids, CDesCArray* aDisplayNames);
 467.400 +	IMPORT_C void ExecuteFepSettingsDialogL(TUid aFepUid);
 467.401 +	IMPORT_C CCoeFep* Fep() const;
 467.402 +	IMPORT_C TUid FepUid() const;
 467.403 +	IMPORT_C void InputCapabilitiesChanged();
 467.404 +	// Control focus handling
 467.405 +	IMPORT_C void AddFocusObserverL(MCoeFocusObserver& aFocusObserver);
 467.406 +	IMPORT_C void RemoveFocusObserver(MCoeFocusObserver& aFocusObserver);
 467.407 +	IMPORT_C void SyncNotifyFocusObserversOfChangeInFocus();
 467.408 +	void NotifyFocusObserversOfDestructionOfFocusedItem();
 467.409 +	// Application focus (foreground) handling
 467.410 +	IMPORT_C void BringOwnerToFront();
 467.411 +	IMPORT_C void AddForegroundObserverL(MCoeForegroundObserver& aForegroundObserver);
 467.412 +	IMPORT_C void RemoveForegroundObserver(MCoeForegroundObserver& aForegroundObserver);
 467.413 +	void NotifyForegroundObserversOfGainingForeground();
 467.414 +	void NotifyForegroundObserversOfLosingForeground();
 467.415 +	// Resource change handling
 467.416 +	IMPORT_C void AddResourceChangeObserverL(MCoeResourceChangeObserver& aResourceChangeObserver); 
 467.417 +	IMPORT_C void RemoveResourceChangeObserver(MCoeResourceChangeObserver& aResourceChangeObserver); 
 467.418 +	void NotifyResourceObserversOfChangeInResource(); 
 467.419 +	// Window server message handling
 467.420 +	IMPORT_C void AddMessageObserverL(MCoeMessageObserver& aMessageObserver);
 467.421 +	IMPORT_C void RemoveMessageObserver(MCoeMessageObserver& aMessageObserver);
 467.422 +	IMPORT_C void AddMessageMonitorObserverL(MCoeMessageMonitorObserver& aMessageMonitorObserver); 
 467.423 +	IMPORT_C void RemoveMessageMonitorObserver(MCoeMessageMonitorObserver& aMessageMonitorObserver); 
 467.424 +	void NotifyMessageMonitorObserversOfEvent(const TWsEvent& aEvent); 	
 467.425 +	// Singleton access
 467.426 +	IMPORT_C static CCoeStatic* Static(TUid aUid);
 467.427 +	IMPORT_C CCoeStatic* FindStatic(TUid aUid);
 467.428 +#if defined(SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS)
 467.429 +	//multiple screens
 467.430 + 	IMPORT_C CWsScreenDevice* ScreenDevice(TInt aScreenNumber) const;
 467.431 + 	IMPORT_C RWindowGroup* RootWin(TInt aScreenNumber) const;
 467.432 +#endif 	
 467.433 +public: // *** Do not use! API liable to change ***
 467.434 +	TInt AppStartupInstrumentationEventIdBase();
 467.435 +public: // Internal to Symbian
 467.436 +	IMPORT_C void GetMessageNotifyingObserversLC(TUint32 aClientHandleOfTargetWindowGroup, TUid& aMessageUid, TPtr8& aMessageParameters, const TWsEvent& aMessageEvent);
 467.437 +	IMPORT_C TBool DisableShutdownChecks() const;
 467.438 +protected: // Internal to Symbian
 467.439 +	IMPORT_C void SetAppStartupInstrumentationEventIdBaseL(TInt aAppStartupInstrumentationEventIdBase);
 467.440 +	IMPORT_C void DestroyEnvironmentStatic();
 467.441 +	IMPORT_C void DestroyEnvironmentEnd();
 467.442 +	IMPORT_C TInt CoeEnvConstructorError() const;
 467.443 +private: // reserved virtual function space
 467.444 +	IMPORT_C virtual void Reserved_1();
 467.445 +	IMPORT_C virtual void Reserved_2();
 467.446 +private: // from CActive
 467.447 +	IMPORT_C TInt RunError(TInt aError);
 467.448 +protected:	// from MObjectProvider
 467.449 +	IMPORT_C TTypeUid::Ptr MopSupplyObject(TTypeUid aId); 
 467.450 +protected:
 467.451 +	IMPORT_C virtual void DestroyScreen();
 467.452 +	inline TDes& ErrorText();
 467.453 +	inline TDes& ErrorContextText();
 467.454 +public: // but not exported
 467.455 +	void ReadEvent();
 467.456 +	CVwsSessionWrapper* InitViewServerSessionL(MVwsSessionWrapperObserver& aObserver);
 467.457 +	void AddStatic(CCoeStatic* aStatic);
 467.458 +	void QueueNotificationToFocusObserversOfChangeInFocus();
 467.459 +	TInt FocusObserverNotificationIdentifier() const;
 467.460 +	TBool FocusObserverNotificationIsStillPending(TInt aFocusObserverNotificationIdentifier) const;
 467.461 +	void RefetchPixelMappingL();
 467.462 +	TBool ControlStateChange();
 467.463 +private:
 467.464 +	void CreateActiveSchedulerL();
 467.465 +	void ConnectToFileServerL();
 467.466 +	void ConnectToWindowServerL();
 467.467 +	void InitScreenL( TInt aDefaultScreenNumber );
 467.468 +	void InitRootWindowL(TBool aInitialFocusState, TInt aWindowGroupID=0);
 467.469 +	void InitSystemGcL();
 467.470 +	IMPORT_C virtual void InitSystemFontsL();
 467.471 +	IMPORT_C virtual TInt ResourceFileVersionNumber() const;
 467.472 +	RResourceFile& ResourceFileForId(TInt aResourceId) const;
 467.473 +	void DestroyAllResourceFiles();
 467.474 +	void AddObserverL(TAny* aObserver, RGenericPointerArray& aArray);
 467.475 +	void RemoveObserver(TAny* aObserver, RGenericPointerArray& aArray);
 467.476 +	void UpdateStatic(CCoeAppUi* aNewAppUi);
 467.477 +	void SetInitialHandleCount();
 467.478 +	TUint InitialHandleCount() const;
 467.479 +	RResourceFile* DoResourceFileForIdL(TInt aResourceId) const;
 467.480 +#if defined(SYMBIAN_WSERV_AND_CONE_MULTIPLE_SCREENS)
 467.481 +	void PopulateArrayOfScreenItemsL();
 467.482 +	void DeleteArrayOfScreensItems();
 467.483 +#endif	
 467.484 +protected:
 467.485 +	CCoeAppUi* iAppUi;
 467.486 +	RFs iFsSession;
 467.487 +	RWsSession iWsSession;
 467.488 +	RWindowGroup iRootWin;
 467.489 +	CWindowGc* iSystemGc;
 467.490 +	const CFont* iNormalFont;
 467.491 +	CWsScreenDevice* iScreen;
 467.492 +	TWsEvent iLastEvent;
 467.493 +	CArrayFix<RResourceFile>* iResourceFileArray;
 467.494 +private:
 467.495 +	enum TFlags // used in the bottom 16 bits only of iEnvFlags
 467.496 +		{
 467.497 +		ENoShutdownChecks			=0x0001,
 467.498 +		EExtraPointerIsErrorCode	=0x0002,
 467.499 +		ESchedulerIsRunning			=0x0004
 467.500 +		};
 467.501 +private:
 467.502 +	TDes* iErrorText;
 467.503 +	TDes* iErrorContextText;
 467.504 +	CCoeEnvExtra* iExtra;
 467.505 +	CTrapCleanup* iCleanup;
 467.506 +	TUint iEnvFlags;
 467.507 +	};
 467.508 +
 467.509 +/** Base class for creating singleton objects that will be stored by CCoeEnv.
 467.510 +
 467.511 +Each object must have a unique TUid.
 467.512 +
 467.513 +Symbian OS does not provide writeable global static data. Singleton objects 
 467.514 +provide its equivalent in thread local storage, which is supported.
 467.515 +
 467.516 +This behaviour is useful for objects in which only one copy is ever needed 
 467.517 +in the thread or application, e.g. in alert windows. 
 467.518 +
 467.519 +@publishedAll 
 467.520 +@released */
 467.521 +class CCoeStatic : public CBase
 467.522 +	{
 467.523 +public:
 467.524 +	/** Scope of access to the singleton object. */
 467.525 +	enum TScope
 467.526 +		{
 467.527 +		/** Access from the entire thread. */
 467.528 +		EThread,
 467.529 +		/** Access from an appUi in that thread. */
 467.530 +		EApp,
 467.531 +		};
 467.532 +	/** The default destruction priority if none is specified in the constructor */
 467.533 +	enum {EDefaultDestructionPriority=100};
 467.534 +public:
 467.535 +	IMPORT_C ~CCoeStatic();
 467.536 +protected:
 467.537 +	IMPORT_C CCoeStatic();
 467.538 +	IMPORT_C CCoeStatic(TUid aUid,TScope=EThread);
 467.539 +	IMPORT_C CCoeStatic(TUid aUid,TInt aDestructionPriority,TScope aScope=EThread);
 467.540 +private:
 467.541 +	IMPORT_C virtual void CCoeStatic_Reserved1();
 467.542 +	IMPORT_C virtual void CCoeStatic_Reserved2();
 467.543 +private:
 467.544 +	void DoConstruction(const TUid& aUid,TInt aDestructionPriority,TScope aScope);
 467.545 +	void SetCsAppUi(CCoeAppUi* aAppUi);
 467.546 +	CCoeAppUi* CsAppUi() const;
 467.547 +	TScope CsScope() const;
 467.548 +	inline TInt DestructionPriority() const {return iCsLink.iPriority;}
 467.549 +private:
 467.550 +	TPriQueLink iCsLink;
 467.551 +	TUid iCsUid;
 467.552 +	TUint iCsAppUiAndScope;
 467.553 +	TInt iCCoeStatic_Reserved1;
 467.554 +private:
 467.555 +	friend class CCoeEnv;
 467.556 +	friend class CCoeEnvExtra;
 467.557 +	};
 467.558 +
 467.559 +#include <coemain.inl>
 467.560 +
 467.561 +#endif	// __COEMAIN_H__
   468.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   468.2 +++ b/epoc32/include/mw/coemain.inl	Wed Mar 31 12:27:01 2010 +0100
   468.3 @@ -0,0 +1,186 @@
   468.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   468.5 +// All rights reserved.
   468.6 +// This component and the accompanying materials are made available
   468.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   468.8 +// which accompanies this distribution, and is available
   468.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  468.10 +//
  468.11 +// Initial Contributors:
  468.12 +// Nokia Corporation - initial contribution.
  468.13 +//
  468.14 +// Contributors:
  468.15 +//
  468.16 +// Description:
  468.17 +//
  468.18 +
  468.19 +
  468.20 +
  468.21 +/**
  468.22 + Gets the most recent standard event that was received by the application.
  468.23 + 
  468.24 + Note: standard events are all events except redraw events and priority key events.
  468.25 + 
  468.26 + @return The last event. 
  468.27 +*/
  468.28 +inline const TWsEvent& CCoeEnv::LastEvent() const
  468.29 +	{ return(iLastEvent); }
  468.30 +
  468.31 +/** Gets the application UI owned by this application.
  468.32 +
  468.33 +@return Pointer to the app UI owned by the application. */
  468.34 +inline CCoeAppUi* CCoeEnv::AppUi() const
  468.35 +	{ return(iAppUi); }
  468.36 +
  468.37 +/** Gets the file server session owned by this CCoeEnv. 
  468.38 +
  468.39 +This session is normally only used for accessing the application's resource 
  468.40 +file.
  468.41 +
  468.42 +@return The file server session owned by this CCoeEnv. */
  468.43 +inline RFs& CCoeEnv::FsSession() const
  468.44 +	{ return((RFs&)iFsSession); }
  468.45 +
  468.46 +/** Gets the window server session owned by the application. 
  468.47 +
  468.48 +This provides access to window server functions not directly accessible via 
  468.49 +the UI control framework.
  468.50 +
  468.51 +@return The window server session opened by the application. */
  468.52 +inline RWsSession& CCoeEnv::WsSession() const
  468.53 +	{ return((RWsSession&)iWsSession); }
  468.54 +
  468.55 +/** Gets the application's window group.
  468.56 +
  468.57 +Note: a window group is an invisible window which acts as the parent window for 
  468.58 +all other windows in an application. Typically, each application has one window 
  468.59 +group. In the window server, window groups are also the unit of keyboard focus.
  468.60 +
  468.61 +@return The application's window group. */inline RWindowGroup& CCoeEnv::RootWin() const
  468.62 +	{ return((RWindowGroup&)iRootWin); }
  468.63 +
  468.64 +/** Gets the system graphics context. 
  468.65 +
  468.66 +This is the graphics context typically used for drawing controls, but an 
  468.67 +alternative graphics context can be created if required using CreateGcL().
  468.68 +
  468.69 +@return The system graphics context. */
  468.70 +inline CWindowGc& CCoeEnv::SystemGc() const
  468.71 +	{ return((CWindowGc&)*iSystemGc); }
  468.72 +
  468.73 +/** Gets the normal environment font. 
  468.74 +
  468.75 +This is the font created during construction of the control environment.
  468.76 +
  468.77 +@return Pointer to the normal environment font.
  468.78 +@see InitSystemFontsL() */
  468.79 +inline const CFont* CCoeEnv::NormalFont() const
  468.80 +	{ return(iNormalFont); }
  468.81 +
  468.82 +/** Gets the default screen device owned by this CCoeEnv. 
  468.83 +
  468.84 +This is typically used as the standard screen device for the CCoeEnv's application.
  468.85 +
  468.86 +@return The default screen device owned by this CCoeEnv. */
  468.87 +inline CWsScreenDevice* CCoeEnv::ScreenDevice() const
  468.88 +	{ return(iScreen); }
  468.89 +
  468.90 +/** Gets the current error message text.
  468.91 +
  468.92 +@return The current error message text. */
  468.93 +inline TDes& CCoeEnv::ErrorText() 
  468.94 +	{ return *iErrorText; }
  468.95 +
  468.96 +/** Gets the current error context text.
  468.97 +
  468.98 +@return The current error context text. */
  468.99 +inline TDes& CCoeEnv::ErrorContextText() 
 468.100 +	{ return *iErrorContextText; }
 468.101 +
 468.102 +#if defined(_UNICODE)
 468.103 +/** Reads a resource into a descriptor. 
 468.104 +
 468.105 +The descriptor must be long enough to contain the entire resource. No memory 
 468.106 +is allocated by this function. If the read fails, the function sets an error 
 468.107 +condition and performs any cleanup required. The error condition causes the 
 468.108 +GUI to launch an alert window.
 468.109 +
 468.110 +Deprecated - Use CCoeEnv::ReadResourceL() instead.
 468.111 +
 468.112 +@deprecated 
 468.113 +@param aDes On return, contains the resource data.
 468.114 +@param aResourceId The numeric ID of the resource to be read.
 468.115 +@see RResourceFile::ReadL()
 468.116 +@see KErrCoeFailedToReadFromProgDisk */
 468.117 +inline void CCoeEnv::ReadResource(TDes& aDes,TInt aResourceId) const
 468.118 +	{ ReadResourceAsDes16(aDes,aResourceId); }
 468.119 +
 468.120 +/** Reads a resource into a descriptor.
 468.121 +
 468.122 +The descriptor must be long enough to contain the entire resource. 
 468.123 +No memory is allocated by this function.
 468.124 +
 468.125 +@param aDes On return, contains the resource data.
 468.126 +@param aResourceId The numeric ID of the resource to be read.
 468.127 +@return Pointer to a heap descriptor containing the resource. */
 468.128 +inline void CCoeEnv::ReadResourceL(TDes& aDes,TInt aResourceId) const
 468.129 +	{ ReadResourceAsDes16L(aDes,aResourceId); }
 468.130 +
 468.131 +/** Reads a resource into a heap descriptor, allocating memory for it. 
 468.132 +
 468.133 +Note: the calling program must destroy the heap descriptor when it is no longer 
 468.134 +needed.
 468.135 +
 468.136 +@param aResourceId The numeric ID of the resource to be read.
 468.137 +@return Pointer to a heap descriptor containing the resource data.
 468.138 +@see RResourceFile::AllocReadL() */
 468.139 +inline  HBufC* CCoeEnv::AllocReadResourceL(TInt aResourceId) const
 468.140 +	{ return AllocReadResourceAsDes16L(aResourceId); }
 468.141 +
 468.142 +/** Reads a specified resource into a heap descriptor, allocating memory for it, 
 468.143 +and pushing the descriptor onto the cleanup stack. 
 468.144 +
 468.145 +The calling program should pop and destroy the heap descriptor when it is 
 468.146 +no longer needed.
 468.147 +
 468.148 +@param aResourceId The numeric ID of the resource to be read.
 468.149 +@return Pointer to a heap descriptor containing the resource data.
 468.150 +@see RResourceFile::AllocReadLC() */
 468.151 +inline HBufC* CCoeEnv::AllocReadResourceLC(TInt aResourceId) const
 468.152 +	{ return AllocReadResourceAsDes16LC(aResourceId); }
 468.153 +
 468.154 +/** Reads a resource into a Unicode descriptor array.
 468.155 +
 468.156 +@param aResourceId The numeric ID of the resource to be read.
 468.157 +@return A pointer to the descriptor array containing the resource data.
 468.158 +@see TResourceReader::ReadDesCArrayL() */
 468.159 +inline CDesCArrayFlat* CCoeEnv::ReadDesCArrayResourceL(TInt aResourceId)
 468.160 +	{ return ReadDesC16ArrayResourceL(aResourceId); }
 468.161 +#else  // not UNICODE
 468.162 +
 468.163 +/** Deprecated - use CCoeEnv::ReadResourceL() instead.
 468.164 +
 468.165 +@deprecated */
 468.166 +inline void CCoeEnv::ReadResource(TDes& aDes,TInt aResourceId) const
 468.167 +	{ ReadResourceAsDes8(aDes,aResourceId); }
 468.168 +
 468.169 +inline void CCoeEnv::ReadResourceL(TDes& aDes,TInt aResourceId) const
 468.170 +	{ ReadResourceAsDes8L(aDes,aResourceId); }
 468.171 +inline  HBufC* CCoeEnv::AllocReadResourceL(TInt aResourceId) const
 468.172 +	{ return AllocReadResourceAsDes8L(aResourceId); }
 468.173 +inline HBufC* CCoeEnv::AllocReadResourceLC(TInt aResourceId) const
 468.174 +	{ return AllocReadResourceAsDes8LC(aResourceId); }
 468.175 +inline CDesCArrayFlat* CCoeEnv::ReadDesCArrayResourceL(TInt aResourceId)
 468.176 +	{ return ReadDesC8ArrayResourceL(aResourceId); }
 468.177 +#endif // UNICODE
 468.178 +
 468.179 +//
 468.180 +// Tests if the Active Scheduler is started in the CCoeEnv::ExecuteD
 468.181 +//
 468.182 +// @return   "TBool"
 468.183 +//            <code>ETrue</code> if Active Scheduler is started in
 468.184 +//								 CCoeEnv::ExecuteD()	
 468.185 +//            <code>EFalse</code> if Active Scheduler is not started in
 468.186 +//								  CCoeEnv::ExecuteD()	
 468.187 +//            
 468.188 +inline TBool CCoeEnv::IsSchedulerRunning() const
 468.189 +	{return iEnvFlags&ESchedulerIsRunning;}
   469.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   469.2 +++ b/epoc32/include/mw/coemop.h	Wed Mar 31 12:27:01 2010 +0100
   469.3 @@ -0,0 +1,180 @@
   469.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   469.5 +// All rights reserved.
   469.6 +// This component and the accompanying materials are made available
   469.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   469.8 +// which accompanies this distribution, and is available
   469.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  469.10 +//
  469.11 +// Initial Contributors:
  469.12 +// Nokia Corporation - initial contribution.
  469.13 +//
  469.14 +// Contributors:
  469.15 +//
  469.16 +// Description:
  469.17 +//
  469.18 +
  469.19 +#ifndef __COEMOP_H__
  469.20 +#define __COEMOP_H__
  469.21 +
  469.22 +#include <e32std.h>
  469.23 +
  469.24 +/** Declares an object type, ETypeId, for a class, in order to allow the object 
  469.25 +provider mechanism to locate and provide objects from the class.
  469.26 +
  469.27 +@publishedAll
  469.28 +@released
  469.29 +@see MObjectProvider */
  469.30 +#define DECLARE_TYPE_ID(id) enum { ETypeId = id };
  469.31 +
  469.32 +//
  469.33 +// Used to wrap object type IDs in a standardised manner. Object type IDs must be asserted 
  469.34 +// in an ETypeId member data property by any types of object which 
  469.35 +// are capable of being retrieved by the MObjectProvider interface
  469.36 +//
  469.37 +class TTypeUid : public TUid
  469.38 +/** Part of the object provider mechanism, this class encapsulates the Uid that 
  469.39 +identifies the type of object that an object provider is to get.
  469.40 +
  469.41 +The class is also used to encapsulate a pointer to the object that the object 
  469.42 +provider has found.
  469.43 +
  469.44 +An object that is intended to be capable of being retrieved by the object 
  469.45 +provider mechanism must include enum {ETypeId = 0xabcdefgh}; in its class 
  469.46 +definition, where 0xabcdefgh is the Uid value. The macro DECLARE_TYPE_ID can 
  469.47 +be used to do this.
  469.48 +
  469.49 +An instance of this class is passed to the MObjectProvider::MopSupplyObject() 
  469.50 +function implemented by an object provider. A TTypeUid::Ptr is also returned 
  469.51 +by this function.
  469.52 +
  469.53 +@publishedAll
  469.54 +@released
  469.55 +@see MObjectProvider */
  469.56 +	{
  469.57 +public:
  469.58 +	class Ptr
  469.59 +	/** Encapsulates a pointer to an object fetched by an object provider.
  469.60 +
  469.61 +	The class has no public constructor. TTypeUid::MakePtr() or TTypeUid::Null() 
  469.62 +	must be used to construct instances of this class. */
  469.63 +		{
  469.64 +		friend class TTypeUid;
  469.65 +	private:
  469.66 +		explicit inline Ptr(TAny* aPtr)
  469.67 +			: iPtr(aPtr)
  469.68 +			{}
  469.69 +	public:
  469.70 +		inline TAny* Pointer() const
  469.71 +		/** Retrieves the pointer to an object which is encapsulated by the Ptr.
  469.72 +	
  469.73 +		@return A pointer to an object. */
  469.74 +			{return iPtr;}
  469.75 +	private:
  469.76 +		TAny* iPtr;
  469.77 +		};
  469.78 +public:
  469.79 +	inline TTypeUid(TInt aUid)
  469.80 +	/** Constructor that takes a Uid value.
  469.81 +	
  469.82 +	@param aUid The Uid value that defines the type of object that an object provider 
  469.83 +	is to get. */
  469.84 +		{ iUid = aUid; }
  469.85 +	inline static Ptr Null()
  469.86 +	/** Constructs a Ptr which encapsulates a NULL pointer.
  469.87 +	
  469.88 +	@return The constructed Ptr object */
  469.89 +		{ return Ptr(NULL); }
  469.90 +	template <class T> inline Ptr MakePtr(T* aT) const
  469.91 +	/** Constructs a Ptr which encapsulates the specified object pointer.
  469.92 +	
  469.93 +	@param aT A pointer to the object which is to be encapsulated.
  469.94 +	@return The constructed Ptr object */
  469.95 +		{ __ASSERT_DEBUG(iUid == T::ETypeId,User::Invariant()); return Ptr(aT); }
  469.96 +	};
  469.97 +
  469.98 +
  469.99 +class MObjectProvider
 469.100 +/** An interface that allows an object to be part of a network of object providers.
 469.101 +
 469.102 +The object provider mechanism can be used to find and access objects of a 
 469.103 +given type, where the type is defined by a TTypeUid object. Object providers 
 469.104 +may be arranged in a hierarchy, i.e. an object provider may have a parent-child 
 469.105 +relationship with another object provider.
 469.106 +
 469.107 +An object provider must provide an implementation for the MopSupplyObject() 
 469.108 +function and can choose to provide an implementation for the MopNext() function. 
 469.109 +Typically, it will also have functionality to define who its parent is.
 469.110 +
 469.111 +CCoeControl is an example of a class that implements this interface. Top level 
 469.112 +controls must have the view or app UI set as their object provider. This is 
 469.113 +done by calling CCoeControl::SetMopParent() on the view or the app UI. The 
 469.114 +view or app UI does this by calling the top level control's CCoeControl::SetMopParent() 
 469.115 +function. 
 469.116 +
 469.117 +@publishedAll 
 469.118 +@released */
 469.119 +	{
 469.120 +public:
 469.121 +	template<class T>
 469.122 +	T* MopGetObject(T*& aPtr) 
 469.123 +	/** Gets an object of the type defined by the template parameter.
 469.124 +	
 469.125 +	The object may be supplied directly by this object provider, or by other object 
 469.126 +	providers higher up the hierarchy.
 469.127 +	
 469.128 +	@param aPtr A reference to a pointer to an object of a type that is to be 
 469.129 +	retrieved.
 469.130 +	@return A pointer to an object of the type required, or NULL if none can be 
 469.131 +	found. */
 469.132 +		{ return (aPtr=(T*)MopGetById(T::ETypeId)); }
 469.133 +		
 469.134 +	
 469.135 +	template<class T>	
 469.136 +	T*  MopGetObjectNoChaining(T*& aPtr)
 469.137 +	/** Gets an object of the type defined by the template parameter.
 469.138 +	
 469.139 +	The object will be supplied directly by this object provider, or NULL 
 469.140 +	will be returned, this function does not recurse through the object chain.
 469.141 +		
 469.142 +	@param aPtr A reference to a pointer to an object of a type that is to be 
 469.143 +	retrieved.
 469.144 +	@return A pointer to an object of the type required, or NULL if none can be 
 469.145 +	found. */
 469.146 +		{ return (aPtr=(T*)MopGetByIdNoChaining(T::ETypeId)); }
 469.147 +	
 469.148 +	/**
 469.149 +	@publishedAll 
 469.150 +	@released */
 469.151 +	MObjectProvider* FindParent(MObjectProvider* aMopToFind);
 469.152 +	
 469.153 +private: // must be overridden
 469.154 +	/** Gets an object whose type is encapsulated by the specified TTypeUid object.
 469.155 +
 469.156 +	@param aId Encapsulates the Uid that identifies the type of object required.
 469.157 +	@return Encapsulates the pointer to the object provided. 
 469.158 +	Note that the encapsulated pointer may be NULL.
 469.159 +
 469.160 +	@publishedAll 
 469.161 +	@released */
 469.162 +	virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId) = 0;
 469.163 +
 469.164 +protected:
 469.165 +	IMPORT_C MObjectProvider();
 469.166 +
 469.167 +private: // may be overridden to continue chain of responsibility
 469.168 +	/**
 469.169 +	@publishedAll 
 469.170 +	@released */
 469.171 +	IMPORT_C virtual MObjectProvider* MopNext();
 469.172 +	IMPORT_C virtual void MObjectProvider_Reserved1();
 469.173 +	IMPORT_C virtual void MObjectProvider_Reserved2();
 469.174 +
 469.175 +private: 
 469.176 +	IMPORT_C TAny* MopGetById(TTypeUid aId);
 469.177 +	IMPORT_C TAny* MopGetByIdNoChaining(TTypeUid aId);
 469.178 +	
 469.179 +private:
 469.180 +	TInt iMObjectProvider_Reserved1;
 469.181 +	};
 469.182 +
 469.183 +#endif	// __COEMOP_H__
   470.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   470.2 +++ b/epoc32/include/mw/coesndpy.h	Wed Mar 31 12:27:01 2010 +0100
   470.3 @@ -0,0 +1,96 @@
   470.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   470.5 +// All rights reserved.
   470.6 +// This component and the accompanying materials are made available
   470.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   470.8 +// which accompanies this distribution, and is available
   470.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  470.10 +//
  470.11 +// Initial Contributors:
  470.12 +// Nokia Corporation - initial contribution.
  470.13 +//
  470.14 +// Contributors:
  470.15 +//
  470.16 +// Description:
  470.17 +//
  470.18 +
  470.19 +#ifndef __COESNDPY_H__
  470.20 +#define __COESNDPY_H__
  470.21 +
  470.22 +#include <e32std.h>
  470.23 +
  470.24 +class TBaSystemSoundType;
  470.25 +class CCoeSoundPlayerManager;
  470.26 +
  470.27 +
  470.28 +/** Utility class for simple sound playing.
  470.29 +
  470.30 +Must be used in the same thread as an active UI Control Framework environment 
  470.31 +(CCoeEnv). 
  470.32 +
  470.33 +This class plays the sound specified by a TBaSystemSoundType object. The 
  470.34 +caller can request the sound to be repeated, and the time between repeats. 
  470.35 +If the exact sound cannot be found on a particular device, a match only by 
  470.36 +category (first UID) is used. No sound will play if a match is not found.
  470.37 +
  470.38 +@publishedAll
  470.39 +@released */
  470.40 +class CoeSoundPlayer
  470.41 +	{
  470.42 +public:
  470.43 +	enum { ENoRepeat=1, ERepeatForever=KMaxTInt};
  470.44 +public:
  470.45 +	inline static void PlaySound(const TBaSystemSoundType& aType);
  470.46 +	inline static void PlaySound(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap);
  470.47 +	inline static void PlaySoundNow(const TBaSystemSoundType& aType);
  470.48 +	inline static void PlaySoundNow(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap);
  470.49 +	IMPORT_C static void CancelSound(const TBaSystemSoundType& aType);
  470.50 +private:
  470.51 +	IMPORT_C static void PlaySound(const TBaSystemSoundType& aType,TInt aPlayCount,
  470.52 +											TTimeIntervalMicroSeconds32 aGap,TBool aInterrupt);
  470.53 +	static CCoeSoundPlayerManager* ManagerL();
  470.54 +	};
  470.55 +
  470.56 +
  470.57 +
  470.58 +
  470.59 +
  470.60 +/** Plays the specified sound. 
  470.61 +
  470.62 +This function only interrupts another, currently playing, sound if the new 
  470.63 +sound has a higher priority than the currently playing sound. If you wish 
  470.64 +to interrupt any currently playing sound and play a new one, use PlaySoundNow() 
  470.65 +instead of PlaySound().
  470.66 +
  470.67 +@param aType The sound to play.*/
  470.68 +inline void CoeSoundPlayer::PlaySound(const TBaSystemSoundType& aType)
  470.69 +	{CoeSoundPlayer::PlaySound(aType,ENoRepeat,TTimeIntervalMicroSeconds32(0),EFalse);}
  470.70 +
  470.71 +/** Plays the specified sound for the specifed number of times with the specified 
  470.72 +interval. 
  470.73 +
  470.74 +This function only interrupts another, currently playing, sound if the new sound 
  470.75 +has a higher priority than the current one. If you wish to interrupt 
  470.76 +any currently playing sound and play a new one, use PlaySoundNow() instead of PlaySound().
  470.77 +
  470.78 +@param aType The sound to play. 
  470.79 +@param aPlayCount The number of times the sound is played.
  470.80 +@param aGap The interval in microseconds between each time the sound is played. */
  470.81 +inline void CoeSoundPlayer::PlaySound(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap)
  470.82 +	{CoeSoundPlayer::PlaySound(aType,aPlayCount,aGap,EFalse);}
  470.83 +
  470.84 +/** Plays the specified sound, interrupting any other sound that is currently playing.
  470.85 +
  470.86 +@param aType The sound to play. */
  470.87 +inline void CoeSoundPlayer::PlaySoundNow(const TBaSystemSoundType& aType)
  470.88 +	{CoeSoundPlayer::PlaySound(aType,ENoRepeat,TTimeIntervalMicroSeconds32(0),ETrue);}
  470.89 +
  470.90 +/** Plays the specified sound the specifed number of times with the 
  470.91 +specified interval, interrupting any other sound that is currently playing.
  470.92 +
  470.93 +@param aType The sound to play.
  470.94 +@param aPlayCount The number of times the sound is played.
  470.95 +@param aGap The interval in microseconds between each time the sound is played. */
  470.96 +inline void CoeSoundPlayer::PlaySoundNow(const TBaSystemSoundType& aType,TInt aPlayCount,const TTimeIntervalMicroSeconds32& aGap)
  470.97 +	{CoeSoundPlayer::PlaySound(aType,aPlayCount,aGap,ETrue);}
  470.98 +
  470.99 +#endif	// __COESNDPY_H__
   471.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   471.2 +++ b/epoc32/include/mw/coetextdrawer.h	Wed Mar 31 12:27:01 2010 +0100
   471.3 @@ -0,0 +1,324 @@
   471.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   471.5 +// All rights reserved.
   471.6 +// This component and the accompanying materials are made available
   471.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   471.8 +// which accompanies this distribution, and is available
   471.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  471.10 +//
  471.11 +// Initial Contributors:
  471.12 +// Nokia Corporation - initial contribution.
  471.13 +//
  471.14 +// Contributors:
  471.15 +//
  471.16 +// Description:
  471.17 +//
  471.18 +
  471.19 +#ifndef __COETEXTDRAWER_H__
  471.20 +#define __COETEXTDRAWER_H__
  471.21 +
  471.22 +#include <gulutil.h>	 
  471.23 +#include <gulalign.h>	 
  471.24 +#include <biditext.h>
  471.25 +#include <coemop.h>
  471.26 +
  471.27 +//
  471.28 +// TEXT DRAWER CODE
  471.29 +//
  471.30 +
  471.31 +// forward declarations
  471.32 +class CCoeTextDrawerBase;
  471.33 +class TCoeTextTypeAdaptor;
  471.34 +
  471.35 +/**
  471.36 +This class serves as a smart-pointer handle to a CCoeTextDrawerBase-derived object, used for drawing
  471.37 +user interface text. Through the use of the CCoeControl's TextDrawer() and GetTextDrawer() methods, a
  471.38 +container control can control the text style and color used by its child controls. For example, a button
  471.39 +class can override its GetTextDrawer() method to set the text color used by its text label child control 
  471.40 +depending on the buttons state (e.g. unpressed, pressed, or dimmed).
  471.41 +
  471.42 +The XCoeTextDrawer object manages the life of the heap allocated CCoeTextDrawerBase (deleting it or 
  471.43 +resetting it depending on whether the object is reusable or not).
  471.44 +
  471.45 +XCoeTextDrawer objects shall be allocated on the stack in the control's Draw() method and initialized 
  471.46 +with a heap allocated CCoeTextDrawerBase object fetched from the control's skin, or from its parent or 
  471.47 +background through the CCoeControl::TextDrawer() method. 
  471.48 +
  471.49 +Never create a CCoeTextDrawer-derived object inside your CCoeControl::Draw() method, as this is not 
  471.50 +guaranteed to work in low-memory situations. Non-reusable text drawers must only be created in your
  471.51 +control's GetTextDrawer() method, as this provides error handling in case the text drawer could not be 
  471.52 +created.
  471.53 +
  471.54 +Hence, typical use from inside a CCoeControl's Draw() method:
  471.55 +<code>
  471.56 +XCoeTextDrawer textDrawer(TextDrawer());
  471.57 +textDrawer.SetAlignment(EHLeftVCenter);
  471.58 +textDrawer.SetMargins(iTextMargins);
  471.59 +textDrawer.DrawText(SystemGc(), *iText, iTextRect, ScreenFont(TCoeFont::NormalFont()));
  471.60 +</code>
  471.61 +
  471.62 +@publishedAll
  471.63 +@released
  471.64 +*/
  471.65 +class XCoeTextDrawer
  471.66 +	{
  471.67 +public:
  471.68 +	IMPORT_C XCoeTextDrawer(CCoeTextDrawerBase& aTextDrawer);
  471.69 +	IMPORT_C ~XCoeTextDrawer();
  471.70 +	
  471.71 +	IMPORT_C void operator=(CCoeTextDrawerBase& aTextDrawer);
  471.72 +
  471.73 +	IMPORT_C void DrawText(CGraphicsContext& aGc, const TBidiText& aText, const TRect& aTextRect, const CFont& aFont) const;
  471.74 +	IMPORT_C void DrawDisplayOrderedText(CGraphicsContext& aGc, const TDesC& aText, const TRect& aTextRect, const CFont& aFont) const;
  471.75 +	
  471.76 +	IMPORT_C void DrawTextVertical(CGraphicsContext& aGc, const TBidiText& aText, const TRect& aTextRect, const CFont& aFont, TBool aUp = ETrue) const;
  471.77 +	IMPORT_C void DrawDisplayOrderedTextVertical(CGraphicsContext& aGc, const TDesC& aText, const TRect& aTextRect, const CFont& aFont, TBool aUp = ETrue) const;
  471.78 +	
  471.79 +	IMPORT_C TRect ClipRect() const;
  471.80 +	IMPORT_C void SetClipRect(const TRect& aClipRect);
  471.81 +
  471.82 +	inline TRgb TextColor() const;
  471.83 +	inline void SetTextColor(TRgb aColor);
  471.84 +	
  471.85 +	inline TGulAlignment Alignment() const;
  471.86 +	inline void SetAlignment(const TGulAlignment& aAlignment);
  471.87 +	
  471.88 +	inline TMargins8 Margins() const;
  471.89 +	inline void SetMargins(const TMargins8& aMargins);
  471.90 +	
  471.91 +	inline TInt LineGapInPixels() const;
  471.92 +	inline void SetLineGapInPixels(TInt aLineGapInPixels);	
  471.93 +public: 
  471.94 +	IMPORT_C CCoeTextDrawerBase *operator ->();		// deprecated	
  471.95 +private:
  471.96 +	XCoeTextDrawer(const XCoeTextDrawer& aTextDrawer);  
  471.97 +private:	
  471.98 +	CCoeTextDrawerBase* iTextDrawer;
  471.99 +	TRect iClipRect;
 471.100 +	};
 471.101 +
 471.102 +
 471.103 +// forward declaration
 471.104 +class CCoeTextDrawerBaseExt;
 471.105 +
 471.106 +/**
 471.107 +This is the base class for all text drawers implementing different text effects (for example 
 471.108 +shadow or glowing/outlined text). The object can be created and deleted each time it's used, 
 471.109 +or Reset() and reused if it IsReusable(). The latter is recommended.
 471.110 +
 471.111 +Note that the pure virtual DrawText() method is private. This ensures that the object is used 
 471.112 +through the XCoeTextDrawer class (which manages its life). 
 471.113 +
 471.114 +Note also that the accessor and set methods should be used via the owning XCoeTextDrawer object,
 471.115 +and that the MObjectProvider mechanism can be used to identify the actual text drawer implementation.
 471.116 +
 471.117 +@publishedAll
 471.118 +@released
 471.119 +*/
 471.120 +class CCoeTextDrawerBase : public CBase, public MObjectProvider
 471.121 +	{
 471.122 +	friend class XCoeTextDrawer;   
 471.123 +public:
 471.124 +	IMPORT_C ~CCoeTextDrawerBase();
 471.125 +	IMPORT_C virtual void Reset();
 471.126 +
 471.127 +	/**
 471.128 +	This method returns the main color used by the CCoeTextDrawer to draw text.
 471.129 +	@return The color used to draw text.
 471.130 +	*/
 471.131 +	virtual TRgb TextColor() const = 0;
 471.132 +	/**
 471.133 +	This method sets the main color to use to draw text.
 471.134 +	@param aColor The color to use to draw text.
 471.135 +	*/
 471.136 +	virtual void SetTextColor(TRgb aColor) = 0;
 471.137 + 
 471.138 +	IMPORT_C TGulAlignment Alignment() const;
 471.139 +	IMPORT_C void SetAlignment(const TGulAlignment& aAlignment);
 471.140 +	
 471.141 +	IMPORT_C TMargins8 Margins() const;
 471.142 +	IMPORT_C void SetMargins(const TMargins8& aMargins);
 471.143 +	
 471.144 +	IMPORT_C TInt LineGapInPixels() const;
 471.145 +	IMPORT_C void SetLineGapInPixels(TInt aLineGapInPixels);
 471.146 +public:	// public methods only for use by the owner/creator of the CCoeTextDrawerBase-derived object
 471.147 + 	IMPORT_C TBool IsReusable() const;
 471.148 +	IMPORT_C void SetReusable(TBool aIsReusable);
 471.149 +	
 471.150 +	IMPORT_C void SetAppLanguage(TLanguage aAppLang);
 471.151 +protected:
 471.152 + 	IMPORT_C CCoeTextDrawerBase();
 471.153 +	IMPORT_C TInt Construct();
 471.154 +	IMPORT_C TGulHAlignment ActualHorizontalAlignment(const TCoeTextTypeAdaptor& aText) const;
 471.155 +private:  
 471.156 +	/**
 471.157 +	Any actual text drawer must implement this method to draw the text passed as argument.
 471.158 +	The implementation must draw the text inside the text rectangle, cropped to the clipping
 471.159 +	rectangle, and with the given margins and alignment taken into account.
 471.160 +	
 471.161 +	Note that the actual horizontal alignment shall depend on the script directionality. 
 471.162 +	Calling	ActualHorizontalAlignment() will return the horizontal alignment where left and 
 471.163 +	right has been swapped for right-to-left scripts.
 471.164 +	*/
 471.165 +	virtual void DrawText(CGraphicsContext& aGc, const TCoeTextTypeAdaptor& aText, const CFont& aFont, 
 471.166 +							const TRect& aTextRect, const TRect& aClipRect) const = 0;
 471.167 +public:
 471.168 +	IMPORT_C virtual TMargins8 EffectMargins();
 471.169 +private:
 471.170 +	/**
 471.171 +	Draws the text vertically inside the text rectangle, cropped to the clipping
 471.172 +	rectangle, and with the given margins and alignment taken into account.
 471.173 +	If aUp is ETrue, text is rotated 90 degrees anti-clockwise; EFalse, text is rotated 90 degrees clockwise.
 471.174 +	
 471.175 +	Note that the actual horizontal alignment shall depend on the script directionality. 
 471.176 +	Calling	ActualHorizontalAlignment() will return the horizontal alignment where left and 
 471.177 +	right has been swapped for right-to-left scripts.
 471.178 +	Also note that the margines are relative to the orientation of the text.
 471.179 +	*/
 471.180 +	IMPORT_C virtual void DrawTextVertical(CGraphicsContext& aGc, const TCoeTextTypeAdaptor& aText, const CFont& aFont, 
 471.181 +							const TRect& aTextRect, const TRect& aClipRect, TBool aUp) const;
 471.182 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved3();
 471.183 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved4();
 471.184 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved5();
 471.185 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved6();
 471.186 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved7();
 471.187 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved8();
 471.188 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved9();
 471.189 +	IMPORT_C virtual void CCoeTextDrawerBase_Reserved10();
 471.190 + private:
 471.191 +	TBool iIsReusable;	 
 471.192 +	TGulAlignment iAlignment;
 471.193 +	TMargins8 iMargins;
 471.194 +	TInt iLineGap;
 471.195 +	CCoeTextDrawerBaseExt* iExtension;
 471.196 +	};
 471.197 +
 471.198 +
 471.199 +/**
 471.200 +This class allows the XCoeTextDrawer to draw text that is in the form of a TBidiText 
 471.201 +object as well as pre-reordered new-line separated plain text descriptors. (The descriptor 
 471.202 +text is especially useful when using the XCoeTextDrawer together with the FORM component). 
 471.203 +
 471.204 +This removes the need to implement two versions of the DrawText() method.
 471.205 +
 471.206 +@publishedAll
 471.207 +@released
 471.208 +*/
 471.209 +class TCoeTextTypeAdaptor
 471.210 +	{
 471.211 +public:
 471.212 +	IMPORT_C TCoeTextTypeAdaptor(const TDesC& aText);		// text lines separated with '\n'
 471.213 +	IMPORT_C TCoeTextTypeAdaptor(const TBidiText& aText);	// TBidiText object
 471.214 +	IMPORT_C TInt NumberOfLines() const;
 471.215 +	IMPORT_C TPtrC LineOfText(TInt aLineNumber, TInt& aWidthInPixels, const CFont& aFont) const;	
 471.216 +	IMPORT_C TBool HasRightToLeftDirectionality() const;
 471.217 +private:
 471.218 +	enum TTextType
 471.219 +		{
 471.220 +		ENewlineSeparated,
 471.221 +		EBidiText
 471.222 +		};
 471.223 +	const TAny* iText;
 471.224 +	TTextType iTextType;
 471.225 +	};
 471.226 +
 471.227 +
 471.228 +/**	
 471.229 +This is a basic text drawer without any text effects. The default text drawer that can be 
 471.230 +used if no other (device specific) text drawers has been added to the system. 
 471.231 +
 471.232 +@publishedAll
 471.233 +@released
 471.234 +*/
 471.235 +class CCoePlainTextDrawer : public CCoeTextDrawerBase
 471.236 +	{
 471.237 +public:
 471.238 +	DECLARE_TYPE_ID(0x1020831A)
 471.239 +public:
 471.240 +	IMPORT_C static CCoePlainTextDrawer* New(TRgb aTextColor);
 471.241 +	
 471.242 +	IMPORT_C TRgb TextColor() const;
 471.243 +	IMPORT_C void SetTextColor(TRgb aTextColor);
 471.244 +protected: // from MObjectProvider
 471.245 +	IMPORT_C virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
 471.246 +private:  
 471.247 +	void DrawText(CGraphicsContext& aGc, const TCoeTextTypeAdaptor& aText, const CFont& aFont, 
 471.248 +					const TRect& aTextRect, const TRect& aClipRect) const;
 471.249 +	void Reset();	
 471.250 +	CCoePlainTextDrawer(TRgb aTextColor);
 471.251 +	TInt Construct();	//lint !e1511 Suppress member hides non-virtual member
 471.252 +private:	
 471.253 +	TRgb iTextColor;
 471.254 +	};
 471.255 +	
 471.256 +
 471.257 +
 471.258 +// Inlines		
 471.259 +
 471.260 +/**
 471.261 +This method returns the main color used by by DrawText() and DrawDisplayOrderedText().
 471.262 +@return The color used to draw text.
 471.263 +*/
 471.264 +TRgb XCoeTextDrawer::TextColor() const
 471.265 +	{ return iTextDrawer->TextColor(); }
 471.266 +	
 471.267 +/**
 471.268 +This method sets the main color to use by DrawText() and DrawDisplayOrderedText() to draw text.
 471.269 +@param aColor The color to use to draw text.
 471.270 +*/
 471.271 +void XCoeTextDrawer::SetTextColor(TRgb aColor)
 471.272 +	{ iTextDrawer->SetTextColor(aColor); }
 471.273 +
 471.274 +/**
 471.275 +Returns the text alignment that will be used by DrawText() and DrawDisplayOrderedText().
 471.276 +Note that left and right alignment will be swapped for right-to-left scripts, unless
 471.277 +the alignment has been set to be absolute (see TGulAlignment).
 471.278 +
 471.279 +@return TGulAlignment value of iAlignment data member
 471.280 +*/
 471.281 +TGulAlignment XCoeTextDrawer::Alignment() const
 471.282 +	{ return iTextDrawer->Alignment(); }
 471.283 +
 471.284 +/**
 471.285 +Set the text alignment that will be used by DrawText() and DrawDisplayOrderedText().
 471.286 +Note that left and right alignment will be swapped for right-to-left scripts, unless
 471.287 +the alignment has been set to be absolute (see TGulAlignment).
 471.288 +
 471.289 +@param aAlignment TGulAlignment value.  
 471.290 +*/		
 471.291 +void XCoeTextDrawer::SetAlignment(const TGulAlignment& aAlignment)
 471.292 +	{ iTextDrawer->SetAlignment(aAlignment); }
 471.293 +
 471.294 +/**
 471.295 +Returns the text margins that will be used by DrawText() and DrawDisplayOrderedText().
 471.296 +Note that text effects may intrude on the margin.
 471.297 +
 471.298 +@return The margins between the text rect and the actual text, in pixels.
 471.299 +*/	
 471.300 +TMargins8 XCoeTextDrawer::Margins() const
 471.301 +	{ return iTextDrawer->Margins(); }
 471.302 +
 471.303 +/**
 471.304 +Set the text margins that will be used by DrawText() and DrawDisplayOrderedText().
 471.305 +Note that text effects may intrude on the margin, and that margins are always relative to the text orientation. 
 471.306 +
 471.307 +@param aMargins The margins between the text rect and the actual text, in pixels.
 471.308 +*/		
 471.309 +void XCoeTextDrawer::SetMargins(const TMargins8& aMargins)
 471.310 +	{ iTextDrawer->SetMargins(aMargins); }
 471.311 +	
 471.312 +/**
 471.313 +Returns the gap (in pixels) between lines of text. Default gap is 1 (one) pixel.
 471.314 +@return The gap between lines of text, in pixels.
 471.315 +*/	
 471.316 +TInt XCoeTextDrawer::LineGapInPixels() const
 471.317 +	{ return iTextDrawer->LineGapInPixels(); }
 471.318 +	
 471.319 +/**
 471.320 +Set the gap (in pixels) between lines of text. Default gap is 1 (one) pixel.
 471.321 +@param aLineGapInPixels The gap between lines of text, in pixels.
 471.322 +*/			
 471.323 +void XCoeTextDrawer::SetLineGapInPixels(TInt aLineGapInPixels)
 471.324 +	{ iTextDrawer->SetLineGapInPixels(aLineGapInPixels); }
 471.325 +
 471.326 +		
 471.327 +#endif	// __COETEXTDRAWER_H__
   472.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   472.2 +++ b/epoc32/include/mw/coeutils.h	Wed Mar 31 12:27:01 2010 +0100
   472.3 @@ -0,0 +1,102 @@
   472.4 +// COEUTILS.H
   472.5 +
   472.6 +/*
   472.7 +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   472.8 +* All rights reserved.
   472.9 +* This component and the accompanying materials are made available
  472.10 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  472.11 +* which accompanies this distribution, and is available
  472.12 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  472.13 +*
  472.14 +* Initial Contributors:
  472.15 +* Nokia Corporation - initial contribution.
  472.16 +*
  472.17 +* Contributors:
  472.18 +*
  472.19 +* Description:
  472.20 +*
  472.21 +*/
  472.22 +
  472.23 +
  472.24 +
  472.25 +#ifndef __COEUTILS_H__
  472.26 +#define __COEUTILS_H__
  472.27 +
  472.28 +#include <e32std.h>
  472.29 +class CCoeEnv;
  472.30 +
  472.31 +/** Provides file and path utility functions.
  472.32 +
  472.33 +@publishedAll
  472.34 +@released */
  472.35 +class ConeUtils
  472.36 +	{
  472.37 +public:
  472.38 +	IMPORT_C static TBool FileExists(const TDesC& aFileName);
  472.39 +	IMPORT_C static void EnsurePathExistsL(const TPtrC& aFileName);
  472.40 +	};
  472.41 +
  472.42 +
  472.43 +/** 
  472.44 +Class encapsulates methods for opening and closing localised resource files
  472.45 +in the CONE environment. The actual reading of resources from an opened 
  472.46 +resource file is done using various CCoeEnv provided resource-reading 
  472.47 +methods. The Cone Resource Loader API consists of the RCoeResourceLoader class.
  472.48 +
  472.49 +Only one resource at a time may be opened by one RCoeResourceLoader instance. 
  472.50 +You can use several RCoeResourceLoader instances for accessing several 
  472.51 +resources simultaneously or use one instance and close the previous resource
  472.52 +before opening a new one.
  472.53 +
  472.54 +The implementation uses BaflUtils::NearestLanguageFile to search for
  472.55 +a localised resource in proper search order.
  472.56 + 
  472.57 +Usage example:  
  472.58 +
  472.59 +@code
  472.60 +#include <coeutils.h>  
  472.61 +
  472.62 +// Get CCoeEnv instance
  472.63 +CEikonEnv* eikEnv = CEikonEnv::Static();
  472.64 +// Initialize loader
  472.65 +RCoeResourceLoader rLoader(eikEnv);
  472.66 +
  472.67 +// Push resource loader to cleanup stack, so that it will always be properly 
  472.68 +// closed when popped.
  472.69 +CleanupClosePushL(rLoader);
  472.70 +
  472.71 +// Open resource file
  472.72 +_LIT( KSampleResourceFileName, "Z:\\System\\Apps\\sample\\sample.rsc" );
  472.73 +TFileName fileName(KSampleResourceFileName);
  472.74 +rLoader.OpenL(fileName);
  472.75 +
  472.76 +// Read a resource   
  472.77 +iSomeArray = eikEnv->ReadDesC16ArrayResourceL(R_SOME_RESOURCE);
  472.78 +
  472.79 +// Pop and destroy rLoader from stack. 
  472.80 +// This also calls the rLoader close function after CleanupClosePushL is used.
  472.81 +CleanupStack::PopAndDestroy(); // rLoader
  472.82 +@endcode
  472.83 +
  472.84 +@publishedAll
  472.85 +@released */
  472.86 +NONSHARABLE_CLASS(RCoeResourceLoader)
  472.87 +    {
  472.88 +public:
  472.89 +    IMPORT_C RCoeResourceLoader(CCoeEnv& aEnv);
  472.90 +    IMPORT_C TInt Open(TFileName& aFileName);
  472.91 +    IMPORT_C void OpenL(TFileName& aFileName);
  472.92 +    IMPORT_C void Close();
  472.93 +private:
  472.94 +    // Prohibit copy constructor and assigment operator because not deriving from CBase.
  472.95 +    RCoeResourceLoader();
  472.96 +    RCoeResourceLoader(const RCoeResourceLoader&);
  472.97 +    RCoeResourceLoader& operator= (const RCoeResourceLoader&);
  472.98 +private:
  472.99 +    // Needed for closing
 472.100 +    CCoeEnv& iEnv; 
 472.101 +    TInt iResourceFileOffset;
 472.102 +    };
 472.103 +
 472.104 +
 472.105 +#endif	// __COEUTILS_H__
   473.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   473.2 +++ b/epoc32/include/mw/coeview.h	Wed Mar 31 12:27:01 2010 +0100
   473.3 @@ -0,0 +1,174 @@
   473.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   473.5 +// All rights reserved.
   473.6 +// This component and the accompanying materials are made available
   473.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   473.8 +// which accompanies this distribution, and is available
   473.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  473.10 +//
  473.11 +// Initial Contributors:
  473.12 +// Nokia Corporation - initial contribution.
  473.13 +//
  473.14 +// Contributors:
  473.15 +//
  473.16 +// Description:
  473.17 +//
  473.18 +
  473.19 +#ifndef __COEVIEW_H__
  473.20 +#define __COEVIEW_H__
  473.21 +
  473.22 +#include <vwsdef.h>
  473.23 +#include <coemain.h> // for CCoeStatic
  473.24 +
  473.25 +class CCoeAppUi;
  473.26 +
  473.27 +/** Specifies an interface for views. 
  473.28 +
  473.29 +This class should be implemented by all application views. 
  473.30 +
  473.31 +@publishedAll
  473.32 +@released */
  473.33 +class MCoeView
  473.34 +	{
  473.35 +public:	
  473.36 +	/** Returns a TVwsViewId uniquely identifying the view.
  473.37 +	
  473.38 +	@return Represents a view in the server. */
  473.39 +	virtual TVwsViewId ViewId() const=0;
  473.40 +private:
  473.41 +	/** Takes any action required when a view is activated. Reimplemented versions 
  473.42 +	should read the contents of aCustomMessage for any message type identified 
  473.43 +	by aCustomMessageId that the view understands.
  473.44 +	
  473.45 +	The ID of the previously active view aPrevViewId is supplied so that the activated 
  473.46 +	view can subsequently switch back to the caller if required.
  473.47 +	
  473.48 +	@param aPrevViewId The UID of the previously active view.
  473.49 +	@param aCustomMessageId Message type.
  473.50 +	@param aCustomMessage Message contents. 
  473.51 +
  473.52 +	@publishedAll
  473.53 +	@released */
  473.54 +	virtual void ViewActivatedL(const TVwsViewId& aPrevViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage)=0;
  473.55 +	/** Takes any action that is required following deactivation of the view. 
  473.56 +	
  473.57 +	This reduces the work required of the window server.
  473.58 +
  473.59 +	@publishedAll
  473.60 +	@released */
  473.61 +	virtual void ViewDeactivated()=0;
  473.62 +
  473.63 +protected:
  473.64 +	IMPORT_C MCoeView();
  473.65 +	IMPORT_C virtual TVwsViewIdAndMessage ViewScreenDeviceChangedL();
  473.66 +private:
  473.67 +	IMPORT_C virtual void ViewConstructL();
  473.68 +protected:
  473.69 +	IMPORT_C virtual TBool ViewScreenModeCompatible(TInt aScreenMode); // was MCoeView_Reserved_1()
  473.70 +private:
  473.71 +	friend class CCoeViewManager;
  473.72 +	IMPORT_C virtual void PrepareForViewActivation();
  473.73 +	IMPORT_C virtual void MCoeView_Reserved_2();
  473.74 +	IMPORT_C virtual void MCoeView_Reserved_3();
  473.75 +private:
  473.76 +	TInt iMCoeView_Reserved1;
  473.77 +	};
  473.78 +
  473.79 +/** An interface through which view deactivations can be
  473.80 +notified to an observer.
  473.81 +
  473.82 +Dialogs and other floating windows such as virtual keyboards which should be dismissed
  473.83 +when a view is deactivated can implement this interface and take any action required.
  473.84 +
  473.85 +@publishedAll
  473.86 +@released */
  473.87 +class MCoeViewDeactivationObserver
  473.88 +	{
  473.89 +public:
  473.90 +	//
  473.91 +	// Handles the deactivation of the view identified by aViewIdToBeDeactivated before the newly activated
  473.92 +	// view with id aNewlyActivatedViewId is marked as current.
  473.93 +	//
  473.94 +	virtual void HandleViewDeactivation(const TVwsViewId& aViewIdToBeDeactivated,const TVwsViewId& aNewlyActivatedViewId)=0;
  473.95 +protected:
  473.96 +	IMPORT_C MCoeViewDeactivationObserver();
  473.97 +private:
  473.98 +	IMPORT_C virtual void MCoeViewDeactivationObserver_Reserved_1();
  473.99 +	IMPORT_C virtual void MCoeViewDeactivationObserver_Reserved_2();
 473.100 +private:
 473.101 +	TInt iMCoeViewDeactivationObserver_Reserved1;
 473.102 +	};
 473.103 +
 473.104 +/** An interface through which view activations can be notified to an observer.
 473.105 +
 473.106 +@publishedPartner
 473.107 +@released
 473.108 +*/
 473.109 +class MCoeViewActivationObserver
 473.110 +	{
 473.111 +public:
 473.112 +	//
 473.113 +	// Handles the activation of the view aNewlyActivatedViewId before the old view aViewIdToBeDeactivated is
 473.114 +	// to be deactivated.
 473.115 +	//
 473.116 +	virtual void HandleViewActivation(const TVwsViewId& aNewlyActivatedViewId,const TVwsViewId& aViewIdToBeDeactivated)=0;
 473.117 +protected:
 473.118 +	IMPORT_C MCoeViewActivationObserver();
 473.119 +private:
 473.120 +	IMPORT_C virtual void MCoeViewActivationObserver_Reserved_1();
 473.121 +	IMPORT_C virtual void MCoeViewActivationObserver_Reserved_2();
 473.122 +private:
 473.123 +	TInt iMCoeViewActivationObserver_Reserved1;
 473.124 +	};
 473.125 +
 473.126 +
 473.127 +/** An interface through which view events can be notified to an observer.
 473.128 +
 473.129 +@publishedPartner
 473.130 +@released */
 473.131 +class MCoeViewObserver
 473.132 +	{
 473.133 +public:
 473.134 +	virtual void HandleViewEventL(const TVwsViewEvent& aEvent)=0;
 473.135 +protected:
 473.136 +	IMPORT_C MCoeViewObserver();
 473.137 +private:
 473.138 +	IMPORT_C virtual void MCoeViewObserver_Reserved1();
 473.139 +	IMPORT_C virtual void MCoeViewObserver_Reserved2();
 473.140 +private:
 473.141 +	TInt iMCoeViewObserver_Reserved1;
 473.142 +	};
 473.143 +
 473.144 +
 473.145 +//
 473.146 +// Handles any screen device changes that occur while a view is active 
 473.147 +//
 473.148 +/** A default screen device change handler. 
 473.149 +
 473.150 +This class is used to activate a default view when a screen "flip" occurs, 
 473.151 +if the currently active view does not implement MCoeView::ViewScreenDeviceChangedL().
 473.152 +
 473.153 +@publishedAll 
 473.154 +@released
 473.155 +@see MCoeView::ViewScreenDeviceChangedL() */
 473.156 +class CCoeScreenDeviceChangeDefaultHandler : public CCoeStatic
 473.157 +	{
 473.158 +public:
 473.159 +	IMPORT_C ~CCoeScreenDeviceChangeDefaultHandler();
 473.160 +	IMPORT_C static CCoeScreenDeviceChangeDefaultHandler* Self();
 473.161 +protected:
 473.162 +	IMPORT_C CCoeScreenDeviceChangeDefaultHandler();
 473.163 +	IMPORT_C CCoeScreenDeviceChangeDefaultHandler(TInt aDestructionPriority);
 473.164 +private:
 473.165 +	IMPORT_C virtual void CCoeStatic_Reserved1();
 473.166 +	IMPORT_C virtual void CCoeStatic_Reserved2();
 473.167 +	IMPORT_C virtual void CCoeScreenDeviceChangeDefaultHandler_Reserved1();
 473.168 +	IMPORT_C virtual void CCoeScreenDeviceChangeDefaultHandler_Reserved2();
 473.169 +public:
 473.170 +	virtual void HandleScreenDeviceChangedL()=0;
 473.171 +	virtual TVwsViewIdAndMessage DefaultViewOnScreenDeviceChanged()=0;
 473.172 +private:
 473.173 +	TInt iCCoeScreenDeviceChangeDefaultHandler;
 473.174 +	};
 473.175 +
 473.176 +
 473.177 +#endif	// __COEVIEW_H__
   474.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   474.2 +++ b/epoc32/include/mw/conarc.h	Wed Mar 31 12:27:01 2010 +0100
   474.3 @@ -0,0 +1,305 @@
   474.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   474.5 +// All rights reserved.
   474.6 +// This component and the accompanying materials are made available
   474.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   474.8 +// which accompanies this distribution, and is available
   474.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  474.10 +//
  474.11 +// Initial Contributors:
  474.12 +// Nokia Corporation - initial contribution.
  474.13 +//
  474.14 +// Contributors:
  474.15 +//
  474.16 +// Description:
  474.17 +//
  474.18 +
  474.19 +#if !defined(__CONARC_H__)
  474.20 +#define __CONARC_H__
  474.21 +
  474.22 +#if !defined(__E32BASE_H__)
  474.23 +#include <e32base.h>
  474.24 +#endif
  474.25 +#if !defined(__APMSTD_H__)
  474.26 +#include <apmstd.h>
  474.27 +#endif
  474.28 +
  474.29 +//
  474.30 +// base interface for converters
  474.31 +//
  474.32 +
  474.33 +/**
  474.34 +@publishedAll
  474.35 +@released
  474.36 +*/
  474.37 +const TInt KUidConverterToBase64=0x10000721;
  474.38 +/**
  474.39 +@publishedAll
  474.40 +@released
  474.41 +*/
  474.42 +const TInt KUidConverterFromBase64=0x100011C5;
  474.43 +/**
  474.44 +@publishedAll
  474.45 +@released
  474.46 +*/
  474.47 +const TInt KUidPlainTextToQuotedPrintableConverter=0x10001826;
  474.48 +/**
  474.49 +@publishedAll
  474.50 +@released
  474.51 +*/
  474.52 +const TInt KUidQuotedPrintableToPlainTextConverter=0x10001825;
  474.53 +/**
  474.54 +@publishedAll
  474.55 +@released
  474.56 +*/
  474.57 +const TInt KUidETextToPlainTextConverter=
  474.58 +#if defined(ETEXT_CONVERTER_UIDS_CORRECTED)
  474.59 +	0x100040c8;
  474.60 +#else
  474.61 +	0x100040c7;
  474.62 +#endif
  474.63 + 
  474.64 +/**
  474.65 +@publishedAll
  474.66 +@released
  474.67 +*/
  474.68 +const TInt KUidPlainTextToETextConverter=
  474.69 +#if defined(ETEXT_CONVERTER_UIDS_CORRECTED)
  474.70 +	0x100040c7;
  474.71 +#else
  474.72 +	0x100040c8;
  474.73 +#endif
  474.74 + 
  474.75 +/**
  474.76 +@publishedAll
  474.77 +@released
  474.78 +*/
  474.79 +#ifdef _UNICODE
  474.80 +#define KUidConverterDll KUidConverterDll16
  474.81 +#else
  474.82 +#define KUidConverterDll KUidConverterDll8
  474.83 +#endif
  474.84 +
  474.85 +/**
  474.86 +@internalComponent
  474.87 +@deprecated
  474.88 +*/
  474.89 +const TInt KUidConverterDllValue8=0x10000C61;
  474.90 +
  474.91 +/**
  474.92 +@internalComponent
  474.93 +@deprecated
  474.94 +*/
  474.95 +const TUid KUidConverterDll8={KUidConverterDllValue8};
  474.96 +
  474.97 +/**
  474.98 +@internalComponent
  474.99 +*/
 474.100 +const TInt KUidConverterInfoFileValue=0x10000C62;
 474.101 +
 474.102 +/**
 474.103 +@publishedAll
 474.104 +@released
 474.105 +*/
 474.106 +const TUid KUidConverterInfoFile={KUidConverterInfoFileValue};
 474.107 +
 474.108 +/**
 474.109 +@internalComponent
 474.110 +*/
 474.111 +const TInt KUidConverterInfoStreamValue=0x10000CD0;
 474.112 +
 474.113 +/**
 474.114 +@internalComponent
 474.115 +*/
 474.116 +const TUid KUidConverterInfoStream={KUidConverterInfoStreamValue};
 474.117 +
 474.118 +/**
 474.119 +The UID2 of converter-type DLLs.
 474.120 +@publishedAll
 474.121 +@released
 474.122 +*/
 474.123 +const TUid KUidConverterDll16={0x10003A30};
 474.124 +
 474.125 +/**
 474.126 +The extension of converter information files.
 474.127 +@publishedAll
 474.128 +@released
 474.129 +*/
 474.130 +_LIT(KConverterInfoFileExtension,".CNF");
 474.131 +/**
 474.132 +The extension of converter DLLs.
 474.133 +@publishedAll
 474.134 +@released
 474.135 +*/
 474.136 +_LIT(KConverterDllExtension,".CNV");
 474.137 +
 474.138 +
 474.139 +class MConverterUiObserver
 474.140 +/**
 474.141 +Interface implemented by the client of a conversion operation to observe conversion 
 474.142 +progress.
 474.143 +
 474.144 +@see CConverterBase2
 474.145 +@publishedAll 
 474.146 +@released
 474.147 +*/
 474.148 +	{
 474.149 +public:
 474.150 +	/** Describes the result of a conversion operation. */
 474.151 +	enum TResult
 474.152 +		{
 474.153 +		/** Conversion succeeded. */
 474.154 +		ESuccess,
 474.155 +		/** Conversion partially succeeded. */
 474.156 +		EPartialSuccess,
 474.157 +		/** Conversion failed. */
 474.158 +		EFailure
 474.159 +		};
 474.160 +	/** Describes the actions that the converter should take. */
 474.161 +	enum TAction
 474.162 +		{
 474.163 +		/** Keep already converted data. */
 474.164 +		ERetain,
 474.165 +		/** Delete converted data. */
 474.166 +		ERemove,
 474.167 +		/** Reconvert data. */
 474.168 +		ERepeat
 474.169 +		}; 
 474.170 +public:
 474.171 +	/** Gets the maximum number of steps that the conversion operation can take. 
 474.172 +	
 474.173 +	The conversion may complete in less than this number of steps (for example 
 474.174 +	if an error occurs or the action is cancelled). 
 474.175 +	
 474.176 +	Each step is a call to CConverterBase2::DoConvert(), although during synchronous 
 474.177 +	conversions this is transparent to the client code.
 474.178 +	
 474.179 +	@param aMax Maximum number of conversion steps.
 474.180 +	@param aObject Index that identifies an embedded object when one is being converted. */
 474.181 +	virtual void MaxSteps(TInt aMax, TInt aObject)=0;
 474.182 +	/** Alerts the client to an error in conversion.
 474.183 +	
 474.184 +	@param aResult A TResult value indicating the conversion state.
 474.185 +	@param aObject Index that identifies an embedded object when one is being converted.
 474.186 +	@return A TAction value that indicates what action the converter should take. */
 474.187 +	virtual TInt Result(TInt aResult, TInt aObject)=0;
 474.188 +	/** Queries the client for a password in order to access the data.
 474.189 +	
 474.190 +	@param aClue Data with a meaning that is specific to each converter: it could for 
 474.191 +	example indicate where the password is stored.
 474.192 +	@return The password entered. */
 474.193 +	virtual HBufC* QueryPasswordL(const TDesC& aClue)=0;
 474.194 +	IMPORT_C virtual void Reserved1_Conv_Obs();
 474.195 +	};
 474.196 +
 474.197 +
 474.198 +class CConverterBase : public CBase
 474.199 +/** For Ecom Style Converters i.e.,for v9.1 and above CConverterBase2 should be used.
 474.200 +
 474.201 +Polymorphic interface for converters from one data format to another.
 474.202 +
 474.203 +Clients use this interface to access data converters. The implementator of 
 474.204 +a data converter derives a class from this in which to implement the appropriate 
 474.205 +conversion functionality.
 474.206 +
 474.207 +The interface offers conversions between files, and between objects that support 
 474.208 +the stream interfaces, e.g. stream stores.
 474.209 +
 474.210 +There are two flavours of conversion methods:
 474.211 +
 474.212 +the synchronous interfaces, ConvertL() and ConvertObjectL(), which perform 
 474.213 +the specified conversion and then return
 474.214 +
 474.215 +the asynchronous interfaces, ConvertAL() and ConvertObjectAL(), which initialise 
 474.216 +the converter object, and allow the client code to call DoConvertL() a number 
 474.217 +of times until the conversion is complete or abandoned.
 474.218 +
 474.219 +@see CConverterBase2
 474.220 +@publishedAll
 474.221 +@released  */
 474.222 +	{
 474.223 +public:
 474.224 +	/** Bitmask values that describe the capabilities of the converter. */
 474.225 +	enum TCapability
 474.226 +		{
 474.227 +		/** The converter can convert files. */
 474.228 +		EConvertsFiles=0x01,
 474.229 +		/** The converter can convert stream objects. */
 474.230 +		EConvertsObjects=0x02,
 474.231 +		/** The converter can extract embedded objects. */
 474.232 +		EConvertsExtract=0x04
 474.233 +		};
 474.234 +public:
 474.235 +	IMPORT_C virtual void ConvertL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // These default to calling the async versions in a loop
 474.236 +	IMPORT_C virtual void ConvertObjectL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL);
 474.237 +	IMPORT_C virtual void ConvertAL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 474.238 +	IMPORT_C virtual void ConvertObjectAL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 474.239 +	IMPORT_C virtual TBool DoConvertL(); // these default to leaving with KErrNotSupported
 474.240 +	/** Gets the converter's UID.
 474.241 +	
 474.242 +	@return Converter's UID */
 474.243 +	virtual TUid Uid() =0;
 474.244 +	IMPORT_C virtual TInt Capabilities(); // defaults to "everything"
 474.245 +	IMPORT_C virtual void CancelConvert(); // for any cleanup
 474.246 +	IMPORT_C virtual CConverterBase* EmbeddedObjectL(TDataType& aType);
 474.247 +	IMPORT_C virtual TBool GetEmbeddedFileName(TFileName& aFileName);
 474.248 +	IMPORT_C virtual void ExtendedInterfaceL(TUid aInterfaceUid, CBase*& aInterface); 
 474.249 +	};
 474.250 +
 474.251 +
 474.252 +class CConverterLibrary : public CBase
 474.253 +/** A converter DLL's factory for individual CConverterBase-derived objects.
 474.254 +
 474.255 +The implementor of a converter DLL should implement this class. 
 474.256 +
 474.257 +@publishedAll 
 474.258 +@deprecated */
 474.259 +	{
 474.260 +public:
 474.261 +	/** Creates and returns an instance of the converter with the specified UID.
 474.262 +	
 474.263 +	This class should not allocate any resources that are not returned to the 
 474.264 +	caller.
 474.265 +	
 474.266 +	@param aUid UID of the converter to create
 474.267 +	@return The specified converter. If the converter does not implement a converter 
 474.268 +	associated with the UID, then it should return NULL. */
 474.269 +	virtual CConverterBase* Converter(TUid aUid)=0;	// passes ownership
 474.270 +	};
 474.271 +
 474.272 +class CConverterBase2 : public CConverterBase
 474.273 +/** Base Class for Ecom Style Converters
 474.274 +The methods in CConverterBase2 are inherited from CConverterBase
 474.275 +
 474.276 +There are two flavours of conversion methods:
 474.277 +
 474.278 +the synchronous interfaces, ConvertL() and ConvertObjectL(), which perform 
 474.279 +the specified conversion and then return
 474.280 +
 474.281 +the asynchronous interfaces, ConvertAL() and ConvertObjectAL(), which initialise 
 474.282 +the converter object, and allow the client code to call DoConvertL() a number 
 474.283 +of times until the conversion is complete or abandoned.
 474.284 +
 474.285 +@publishedAll
 474.286 +@released  */
 474.287 +	{
 474.288 +public:
 474.289 +	static CConverterBase2* CreateConverterL(TUid aImplUid);
 474.290 +	IMPORT_C virtual ~CConverterBase2(); 
 474.291 +	IMPORT_C virtual void ConvertL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // These default to calling the async versions in a loop
 474.292 +	IMPORT_C virtual void ConvertObjectL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL);
 474.293 +	IMPORT_C virtual void ConvertAL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 474.294 +	IMPORT_C virtual void ConvertObjectAL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL); // these default to leaving with KErrNotSupported
 474.295 +	IMPORT_C virtual TBool DoConvertL(); // these default to leaving with KErrNotSupported
 474.296 +	virtual  TUid Uid()=0;
 474.297 +	IMPORT_C virtual TInt Capabilities(); // defaults to "everything"
 474.298 +	IMPORT_C virtual void CancelConvert(); // for any cleanup
 474.299 +	IMPORT_C virtual CConverterBase* EmbeddedObjectL(TDataType& aType);
 474.300 +	IMPORT_C virtual TBool GetEmbeddedFileName(TFileName& aFileName);
 474.301 +	IMPORT_C virtual void ExtendedInterfaceL(TUid aInterfaceUid, CBase*& aInterface);
 474.302 +	IMPORT_C virtual void Reserved_1();
 474.303 +	IMPORT_C virtual void Reserved_2();
 474.304 +private:
 474.305 +	TUid iDestructionKey;
 474.306 +	TInt iSpare;
 474.307 +	};
 474.308 +#endif
   475.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   475.2 +++ b/epoc32/include/mw/concnf.h	Wed Mar 31 12:27:01 2010 +0100
   475.3 @@ -0,0 +1,180 @@
   475.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   475.5 +// All rights reserved.
   475.6 +// This component and the accompanying materials are made available
   475.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   475.8 +// which accompanies this distribution, and is available
   475.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  475.10 +//
  475.11 +// Initial Contributors:
  475.12 +// Nokia Corporation - initial contribution.
  475.13 +//
  475.14 +// Contributors:
  475.15 +//
  475.16 +// Description:
  475.17 +//
  475.18 +
  475.19 +#if !defined(__CONCNF_H__)
  475.20 +#define __CONCNF_H__
  475.21 +
  475.22 +#include <e32base.h>
  475.23 +#include <f32file.h>
  475.24 +#include <s32stor.h>
  475.25 +#include <apmstd.h>
  475.26 +#include <barsc.h>
  475.27 +#include <barsread.h>
  475.28 +
  475.29 +/**
  475.30 +@publishedAll 
  475.31 +@released 
  475.32 +*/
  475.33 +#define KMaxTranslation 50
  475.34 +
  475.35 +/** Buffer to contain a localised data type name. 
  475.36 +
  475.37 +@publishedAll 
  475.38 +@released */
  475.39 +typedef TBuf<KMaxTranslation> TTranslation;
  475.40 +
  475.41 +
  475.42 +class TLanguageInfo
  475.43 +/** Holds a localised name for a data type. 
  475.44 +
  475.45 +@publishedAll 
  475.46 +@released */
  475.47 +	{
  475.48 +public:
  475.49 +	TLanguageInfo();
  475.50 +	IMPORT_C TLanguageInfo(TLanguage aLanguage,TTranslation aTranslation);
  475.51 +public:
  475.52 +	void InternalizeL(RReadStream& aStream);
  475.53 +	void ExternalizeL(RWriteStream& aStream) const;
  475.54 +	TLanguage Language();
  475.55 +	TTranslation Translation();
  475.56 +	void ReadFromResource(TResourceReader& aReader);
  475.57 +public:
  475.58 +	TLanguage	iLanguage;
  475.59 +	TTranslation iTranslation;
  475.60 +	};
  475.61 +
  475.62 +class CMimeInfo : public CBase
  475.63 +/** Holds the localised names for a data type.
  475.64 +
  475.65 +@publishedAll
  475.66 +@released */
  475.67 +	{
  475.68 +public:
  475.69 +	IMPORT_C ~CMimeInfo();
  475.70 +	IMPORT_C static CMimeInfo* NewLC(TDataType& aMime);
  475.71 +	static CMimeInfo* NewL();
  475.72 +	static CMimeInfo* NewLC(const CMimeInfo* aInfo);
  475.73 +public:
  475.74 +	void InternalizeL(RReadStream& aStream);
  475.75 +	void ExternalizeL(RWriteStream& aStream) const;
  475.76 +	TDataType Mime();
  475.77 +	TTranslation Text();
  475.78 +	IMPORT_C void AddLanguageL(TLanguageInfo aLang);
  475.79 +	static CMimeInfo* NewLC(TResourceReader& aReader);
  475.80 +private:
  475.81 +	void ConstructL();
  475.82 +	void ConstructL(TResourceReader& aReader);
  475.83 +	void AddLanguageInfoL(TResourceReader& aReader);
  475.84 +private:
  475.85 +	TDataType iMime;
  475.86 +	CArrayFixFlat<TLanguageInfo> *iLanguageInfo;
  475.87 +	};
  475.88 +
  475.89 +class CCnaConverter : public CBase
  475.90 +/** Holds the inherent properties of a converter. 
  475.91 +
  475.92 +These are its UID and the data types it supports.
  475.93 +
  475.94 +Note that the setter functions affect only the current object, not the stored 
  475.95 +information for the converter.
  475.96 +
  475.97 +@publishedAll
  475.98 +@released */
  475.99 +	{
 475.100 +public:
 475.101 +	static CCnaConverter* NewLC();
 475.102 +	static CCnaConverter* NewL();
 475.103 +	IMPORT_C static CCnaConverter* NewL(TUid aUid);
 475.104 +	IMPORT_C static CCnaConverter* NewLC(TUid aUid);
 475.105 +	IMPORT_C static CCnaConverter* NewL(const CCnaConverter& aConverter);
 475.106 +	IMPORT_C static CCnaConverter* NewLC(const CCnaConverter& aConverter);
 475.107 +	IMPORT_C ~CCnaConverter();
 475.108 +	IMPORT_C void SetUid(TUid aUid);
 475.109 +	IMPORT_C TBool MimeFrom(const TDataType& aMimeType) const;
 475.110 +	IMPORT_C TBool MimeTo(const TDataType& aMimeType) const;
 475.111 +	IMPORT_C TTranslation MimeFromText(const TDataType& aMimeType) const;
 475.112 +	IMPORT_C TTranslation MimeToText(const TDataType& aMimeType) const;
 475.113 +	IMPORT_C TInt CountFrom() const;
 475.114 +	IMPORT_C TInt CountTo() const;
 475.115 +	IMPORT_C TDataType MimeFrom(TInt aIndex) const;
 475.116 +	IMPORT_C TDataType MimeTo(TInt aIndex) const;
 475.117 +	IMPORT_C TTranslation MimeFromText(TInt aIndex) const;
 475.118 +	IMPORT_C TTranslation MimeToText(TInt aIndex) const;
 475.119 +	inline TUid Uid() const;
 475.120 +	static CCnaConverter* NewL(TUid aUid,TResourceReader& aReader);	
 475.121 +private:
 475.122 +	CCnaConverter();
 475.123 +	void ConstructL();
 475.124 +	TBool FindMime(const TDataType& aMimeType, const CArrayPtrFlat<CMimeInfo>* aList) const;
 475.125 +	TTranslation FindMimeText(const TDataType& aMimeType, const CArrayPtrFlat<CMimeInfo>* aList) const;
 475.126 +	void ConstructL(TUid aUid,TResourceReader& aReader);
 475.127 +	void AddMimeDataL(TResourceReader& aReader, CArrayPtrFlat<CMimeInfo>& aMimeInfo);
 475.128 +private:
 475.129 +	TUid iUid;
 475.130 +	CArrayPtrFlat<CMimeInfo>* iMimeFrom;
 475.131 +	CArrayPtrFlat<CMimeInfo>* iMimeTo;
 475.132 +	};
 475.133 +
 475.134 +inline TUid CCnaConverter::Uid() const
 475.135 +/** Gets the converter UID.
 475.136 +
 475.137 +@return Converter UID */
 475.138 +	{return iUid;}
 475.139 +
 475.140 +class CCnaConvInfoFile2 : public CBase
 475.141 +/**
 475.142 +implementation class
 475.143 +@internalComponent
 475.144 +*/
 475.145 +	{
 475.146 +public:
 475.147 +	~CCnaConvInfoFile2();
 475.148 +	//
 475.149 +protected:
 475.150 +	void ConstructL();
 475.151 +protected:
 475.152 +	RFs iFs;
 475.153 +	RResourceFile iResourceFile;
 475.154 +	CArrayPtr<CCnaConverter>* iConverters;
 475.155 +	};
 475.156 +
 475.157 +/** Encapsulates a collection of converter properties (CCnaConverter) read from a converter 
 475.158 +information (.rsc) file.
 475.159 +
 475.160 +@publishedAll
 475.161 +@released
 475.162 +*/
 475.163 +// Each RSC file contains CCnaConverter information for each
 475.164 +// available CConverterBase2 derived class in its associated DLL.
 475.165 +
 475.166 +// In addition there may be INI files for each converter which supply run time extended
 475.167 +// CCnaConverter information such as additional mime types.
 475.168 +class CCnaConvInfoFileReader2 : public CCnaConvInfoFile2
 475.169 +	{
 475.170 +public:
 475.171 +	IMPORT_C static CCnaConvInfoFileReader2* NewLC(const TDesC& aFileName);
 475.172 +	IMPORT_C static CCnaConvInfoFileReader2* NewL(const TDesC& aFileName);
 475.173 +	IMPORT_C TInt Count();
 475.174 +	IMPORT_C CCnaConverter* AtL(TInt anIndex);
 475.175 +	//
 475.176 +	IMPORT_C void RestoreL();
 475.177 +private:
 475.178 +	CCnaConvInfoFileReader2();
 475.179 +	void RestoreConverterL(TResourceReader& aReader);
 475.180 +	void ConstructL(const TDesC& aFileName);
 475.181 +	};
 475.182 +
 475.183 +#endif
   476.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   476.2 +++ b/epoc32/include/mw/confndr.h	Wed Mar 31 12:27:01 2010 +0100
   476.3 @@ -0,0 +1,16 @@
   476.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   476.5 +// All rights reserved.
   476.6 +// This component and the accompanying materials are made available
   476.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   476.8 +// which accompanies this distribution, and is available
   476.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  476.10 +//
  476.11 +// Initial Contributors:
  476.12 +// Nokia Corporation - initial contribution.
  476.13 +//
  476.14 +// Contributors:
  476.15 +//
  476.16 +// Description:
  476.17 +// This header is useless but we still export it to maintain SC. Should be removed when possible.
  476.18 +// 
  476.19 +//
   477.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   477.2 +++ b/epoc32/include/mw/conlist.h	Wed Mar 31 12:27:01 2010 +0100
   477.3 @@ -0,0 +1,116 @@
   477.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   477.5 +// All rights reserved.
   477.6 +// This component and the accompanying materials are made available
   477.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   477.8 +// which accompanies this distribution, and is available
   477.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  477.10 +//
  477.11 +// Initial Contributors:
  477.12 +// Nokia Corporation - initial contribution.
  477.13 +//
  477.14 +// Contributors:
  477.15 +//
  477.16 +// Description:
  477.17 +//
  477.18 +
  477.19 +#if !defined(__CONLIST_H__)
  477.20 +#define __CONLIST_H__
  477.21 +
  477.22 +#if !defined(__E32BASE_H__)
  477.23 +#include <e32base.h>
  477.24 +#endif
  477.25 +
  477.26 +#if !defined(__F32FILE_H__)
  477.27 +#include <f32file.h>
  477.28 +#endif
  477.29 +
  477.30 +#if !defined(__CONARC_H__)
  477.31 +#include <conarc.h>
  477.32 +#endif
  477.33 +
  477.34 +#if !defined(__CONCNF_H__)
  477.35 +#include <concnf.h>
  477.36 +#endif
  477.37 +
  477.38 +#if !defined(__IMPLEMENTATION_INFORMATION_H__)
  477.39 +#include <ecom/implementationinformation.h>
  477.40 +#endif
  477.41 +#if !defined(__ECOM_H__)
  477.42 +#include <ecom/ecom.h>
  477.43 +#endif
  477.44 +
  477.45 +
  477.46 +/** Creates a converter dll's factory interface object.
  477.47 +
  477.48 +@publishedAll
  477.49 +@deprecated
  477.50 +*/
  477.51 +typedef CConverterLibrary* (*CreateCConverterLibrary)(); 
  477.52 +
  477.53 +struct SConverterInfo
  477.54 +/** Describes a converter, as obtained from a converter list (CCnaConverterList).
  477.55 +
  477.56 +@publishedAll
  477.57 +@released
  477.58 +@see CCnaConverterList */
  477.59 +	{
  477.60 +	/** Localised name of the data type. */
  477.61 +	TTranslation iTranslation;
  477.62 +	/** Converter UID. */
  477.63 +	TUid iUid;
  477.64 +	/** Position of the converter in the list. */
  477.65 +	TInt iIndex;
  477.66 +	};
  477.67 +
  477.68 +class CCnaConverterList : public CBase
  477.69 +/** Provides a list of available converters, allowing clients to search for and 
  477.70 +obtain converters for specific source and target data types. 
  477.71 +
  477.72 +@publishedAll
  477.73 +@released */
  477.74 +	{
  477.75 +public:
  477.76 +	IMPORT_C static CCnaConverterList* NewL();
  477.77 +	IMPORT_C static CCnaConverterList* NewLC();
  477.78 +	IMPORT_C void Release();
  477.79 +	IMPORT_C ~CCnaConverterList();
  477.80 +//
  477.81 +	IMPORT_C TInt CountL();
  477.82 +	inline TInt Count();
  477.83 +	IMPORT_C CConverterBase* NewConverterL(TUid aUid);
  477.84 +	IMPORT_C void UpdateL();
  477.85 +	IMPORT_C TUid ConvFromL(const TDataType& aMimeType); // searches for a particular converter
  477.86 +	IMPORT_C TUid ConvToL(const TDataType& aMimeType);
  477.87 +	IMPORT_C TUid ConverterL(const TDataType& aFrom,const TDataType& aTo);
  477.88 +	IMPORT_C void ConvFromListL(const TDataType& aMimeType,CArrayFix<SConverterInfo>* aSConverterInfoArray);
  477.89 +	IMPORT_C void ConvToListL(const TDataType& aMimeType,CArrayFix<SConverterInfo>* aSConverterInfoArray);
  477.90 +	IMPORT_C TInt MimeTypeFrom(TDataType& aDataType,const SConverterInfo& aConverterInfo) const;
  477.91 +	IMPORT_C TInt MimeTypeTo(TDataType& aDataType,const SConverterInfo& aConverterInfo) const;
  477.92 +private:
  477.93 +	CCnaConverterList();
  477.94 +	void ConstructL();
  477.95 +	CConverterBase* LoadConverterL(TUid aImplUid);
  477.96 +private:
  477.97 +	TBool iDoneScan;
  477.98 +	CArrayPtr<CCnaConverter>* iConverters;
  477.99 +	RImplInfoPtrArray iImplementationArray;
 477.100 +	};
 477.101 +
 477.102 +class ConverterListUtil
 477.103 +/** @internalComponent */
 477.104 +	{
 477.105 +public:
 477.106 +	static CConverterBase* UtilityConverterL(TUid aUid);
 477.107 +	static TInt CountUtilityConverters();
 477.108 +	};
 477.109 +
 477.110 +inline TInt CCnaConverterList::Count()
 477.111 +/** @deprecated
 477.112 +
 477.113 +Deprecated - Use CCnaConverterList::CountL instead. 
 477.114 +Rescan of the disk to refresh the list of converters could leave. */
 477.115 +	{
 477.116 +	return CountL();
 477.117 +	}
 477.118 +
 477.119 +#endif
   478.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   478.2 +++ b/epoc32/include/mw/conplugin.rh	Wed Mar 31 12:27:01 2010 +0100
   478.3 @@ -0,0 +1,95 @@
   478.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   478.5 +// All rights reserved.
   478.6 +// This component and the accompanying materials are made available
   478.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   478.8 +// which accompanies this distribution, and is available
   478.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  478.10 +//
  478.11 +// Initial Contributors:
  478.12 +// Nokia Corporation - initial contribution.
  478.13 +//
  478.14 +// Contributors:
  478.15 +//
  478.16 +// Description:
  478.17 +// HEADER INFO
  478.18 +// Describes the converter.
  478.19 +// 
  478.20 +//
  478.21 +
  478.22 +
  478.23 +
  478.24 +/**
  478.25 + @publishedAll 
  478.26 + @released 
  478.27 +*/
  478.28 +STRUCT CONARC_RESOURCE_FILE
  478.29 +	{
  478.30 +	/** Future use, do not use */
  478.31 +	LLINK extension = 0;
  478.32 +	//
  478.33 +	LEN WORD STRUCT converter_list[]; // Converter_data
  478.34 +	}
  478.35 +
  478.36 +STRUCT CONVERTER_DATA
  478.37 +/** Describes a converter within a converter DLL.
  478.38 +
  478.39 +@publishedAll 
  478.40 +@released */
  478.41 +	{
  478.42 +	/** Future use, do not use */
  478.43 +	LLINK extension = 0;
  478.44 +	/** The UID of the converter. */
  478.45 +	LONG conv_uid;
  478.46 +	//
  478.47 +	/** Array of MIME resources describing the data types that the converter can convert. 
  478.48 +	
  478.49 +	Target type: MIME */
  478.50 +	LEN WORD STRUCT from_list[]; // Mime Type
  478.51 +	/** Array of MIME resources describing the data types to which the converter can convert. 
  478.52 +	
  478.53 +	Target type: MIME */
  478.54 +	LEN WORD STRUCT to_list[]; // Mime Type
  478.55 +	//
  478.56 +	}
  478.57 +
  478.58 +/**
  478.59 +@publishedAll 
  478.60 +@released 
  478.61 +*/
  478.62 +#define KMaxMimeType 256
  478.63 +
  478.64 +/**
  478.65 +@publishedAll 
  478.66 +@released 
  478.67 +*/
  478.68 +#define KMaxTranslation 50
  478.69 +
  478.70 +STRUCT MIME
  478.71 +/** Describes a data type that a converter can convert to or from.
  478.72 +
  478.73 +@publishedAll 
  478.74 +@released */
  478.75 +	{
  478.76 +	/** Future use, do not use */
  478.77 +	LLINK extension = 0;
  478.78 +	/** The supported MIME type, e.g. text/html. */
  478.79 +	LTEXT8 type(KMaxMimeType);
  478.80 +	/** Array of LANG_DATA resources giving localised human-readable names for the MIME type. 
  478.81 +	
  478.82 +	Target type: LANG_DATA */
  478.83 +	LEN WORD STRUCT lang_list[] ; //lang_data
  478.84 +	}
  478.85 +
  478.86 +STRUCT LANG_DATA
  478.87 +/** A localised human-readable name for a MIME type.
  478.88 +
  478.89 +@publishedAll 
  478.90 +@released */
  478.91 +	{
  478.92 +	/** Future use, do not use */
  478.93 +	LLINK extension = 0;
  478.94 +	/** The ID of the language being used.Values should be as defined in TLanguage. */
  478.95 +	WORD lang_id;
  478.96 +	/** The human-readable name for the MIME type. */
  478.97 +	LTEXT	translation(KMaxTranslation);
  478.98 +	}
   479.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   479.2 +++ b/epoc32/include/mw/crulemarkedstack.h	Wed Mar 31 12:27:01 2010 +0100
   479.3 @@ -0,0 +1,46 @@
   479.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   479.5 +// All rights reserved.
   479.6 +// This component and the accompanying materials are made available
   479.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   479.8 +// which accompanies this distribution, and is available
   479.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  479.10 +//
  479.11 +// Initial Contributors:
  479.12 +// Nokia Corporation - initial contribution.
  479.13 +//
  479.14 +// Contributors:
  479.15 +//
  479.16 +// Description:
  479.17 +// A speciales marked stack specifically for PARSE rules.
  479.18 +// Allows a rule stack to merge rules upto a given mark type.
  479.19 +// 
  479.20 +//
  479.21 +
  479.22 +#ifndef __CRULEMARKEDSTACK_H__
  479.23 +#define __CRULEMARKEDSTACK_H__
  479.24 +
  479.25 +
  479.26 +// includes
  479.27 +#include <e32base.h>
  479.28 +#include <cmarkedstack.h>
  479.29 +#include <cbnfnode.h>
  479.30 +
  479.31 +#pragma warning (disable : 4127) // conditional expression is constant
  479.32 +
  479.33 +
  479.34 +template <TBool StackOwnsEntry>
  479.35 +class CRuleMarkedStack : public CMarkedStack<CBNFNode, StackOwnsEntry>
  479.36 +/**	
  479.37 +@publishedAll
  479.38 +@released
  479.39 +*/
  479.40 +	{
  479.41 +public:
  479.42 +	void MergeToMarkL(TInt aMarkType);
  479.43 +	};
  479.44 +
  479.45 +#include <crulemarkedstack.inl>
  479.46 +
  479.47 +#pragma warning ( default : 4127 ) // conditional expression is constant
  479.48 +
  479.49 +#endif // __CRULEMARKEDSTACK_H__
   480.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   480.2 +++ b/epoc32/include/mw/csendasaccounts.h	Wed Mar 31 12:27:01 2010 +0100
   480.3 @@ -0,0 +1,75 @@
   480.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   480.5 +// All rights reserved.
   480.6 +// This component and the accompanying materials are made available
   480.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   480.8 +// which accompanies this distribution, and is available
   480.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  480.10 +//
  480.11 +// Initial Contributors:
  480.12 +// Nokia Corporation - initial contribution.
  480.13 +//
  480.14 +// Contributors:
  480.15 +//
  480.16 +// Description:
  480.17 +//
  480.18 +
  480.19 +#ifndef __CSENDASACCOUNTS_H__
  480.20 +#define __CSENDASACCOUNTS_H__
  480.21 +
  480.22 +#include <e32base.h>
  480.23 +#include <badesca.h>
  480.24 +#include <msvstd.h>
  480.25 +
  480.26 +// Forward declarations
  480.27 +class RReadStream;
  480.28 +class RWriteStream;
  480.29 +
  480.30 +/**
  480.31 +Identifies accounts for use by SendAs.
  480.32 +
  480.33 +@publishedAll
  480.34 +@released
  480.35 +*/
  480.36 +typedef TMsvId TSendAsAccount;
  480.37 +
  480.38 +/**
  480.39 +Provides human-readable names and IDs for the list of accounts for a given
  480.40 +message type.
  480.41 +
  480.42 +@publishedAll
  480.43 +@released
  480.44 +*/
  480.45 +class CSendAsAccounts : public CBase
  480.46 +	{
  480.47 +public:
  480.48 +	IMPORT_C static CSendAsAccounts* NewL();
  480.49 +	IMPORT_C virtual ~CSendAsAccounts();
  480.50 +	
  480.51 +	IMPORT_C TUid MessageType() const;
  480.52 +	IMPORT_C void SetMessageType(TUid aMessageType);
  480.53 +
  480.54 +	IMPORT_C const MDesCArray& AccountNames() const;
  480.55 +	IMPORT_C TSendAsAccount Account(TInt aIndex) const;
  480.56 +	IMPORT_C TPtrC NameFromAccountL(const TSendAsAccount aAccount) const;
  480.57 +	IMPORT_C TSendAsAccount AccountFromNameL(const TDesC& aName) const;
  480.58 +	IMPORT_C TInt Count() const;
  480.59 +	IMPORT_C void Reset();
  480.60 +
  480.61 +	IMPORT_C void InternalizeL(RReadStream& aReadStream);
  480.62 +	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const;
  480.63 +	
  480.64 +	IMPORT_C void AppendAccountL(const TDesC& aAccountName, TSendAsAccount aAccount);
  480.65 +	IMPORT_C void RemoveAccount(TInt aIndex);
  480.66 +	IMPORT_C TInt Size() const;
  480.67 +	
  480.68 +private:
  480.69 +	CSendAsAccounts();
  480.70 +	void ConstructL();
  480.71 +	
  480.72 +private:
  480.73 +	TUid 					iMessageType;
  480.74 +	CDesCArrayFlat*			iAccountNames;
  480.75 +	RArray<TSendAsAccount>	iAccounts;
  480.76 +	};
  480.77 +
  480.78 +#endif	// __CSENDASACCOUNTS_H__
   481.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   481.2 +++ b/epoc32/include/mw/csendasmessagetypes.h	Wed Mar 31 12:27:01 2010 +0100
   481.3 @@ -0,0 +1,61 @@
   481.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   481.5 +// All rights reserved.
   481.6 +// This component and the accompanying materials are made available
   481.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   481.8 +// which accompanies this distribution, and is available
   481.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  481.10 +//
  481.11 +// Initial Contributors:
  481.12 +// Nokia Corporation - initial contribution.
  481.13 +//
  481.14 +// Contributors:
  481.15 +//
  481.16 +// Description:
  481.17 +//
  481.18 +
  481.19 +#ifndef __CSENDASMESSAGETYPES_H__
  481.20 +#define __CSENDASMESSAGETYPES_H__
  481.21 +
  481.22 +#include <e32base.h>
  481.23 +#include <badesca.h>
  481.24 +
  481.25 +// Forward declarations
  481.26 +class RReadStream;
  481.27 +class RWriteStream;
  481.28 +
  481.29 +/**
  481.30 +Provides human-readable names and UIDs for the filtered list of message types.
  481.31 +
  481.32 +@publishedAll
  481.33 +@released
  481.34 +*/
  481.35 +class CSendAsMessageTypes : public CBase
  481.36 +	{
  481.37 +public:
  481.38 +	IMPORT_C static CSendAsMessageTypes* NewL();
  481.39 +	IMPORT_C virtual ~CSendAsMessageTypes();
  481.40 +	
  481.41 +	IMPORT_C const MDesCArray& AvailableMessageTypes() const;
  481.42 +	IMPORT_C TUid MessageTypeUid(TInt aIndex) const;
  481.43 +	IMPORT_C TPtrC NameFromUidL(const TUid aUid) const;
  481.44 +	IMPORT_C TUid UidFromNameL(const TDesC& aName) const;
  481.45 +	IMPORT_C TInt Count() const;
  481.46 +	IMPORT_C void Reset();
  481.47 +
  481.48 +	IMPORT_C void InternalizeL(RReadStream& aReadStream);
  481.49 +	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const;
  481.50 +	
  481.51 +	IMPORT_C void AppendMessageTypeL(const TDesC& aMessageTypeName,	TUid aMessageTypeUid);
  481.52 +	IMPORT_C void RemoveMessageType(TInt aIndex);
  481.53 +	IMPORT_C TInt Size() const;
  481.54 +	
  481.55 +private:
  481.56 +	CSendAsMessageTypes();
  481.57 +	void ConstructL();
  481.58 +	
  481.59 +private:
  481.60 +	CDesCArrayFlat* iMessageTypeNames;
  481.61 +	RArray<TUid>	iMessageTypeUids;
  481.62 +	};
  481.63 +
  481.64 +#endif	// __CSENDASMESSAGETYPES_H__
   482.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   482.2 +++ b/epoc32/include/mw/csmsclass0base.h	Wed Mar 31 12:27:01 2010 +0100
   482.3 @@ -0,0 +1,42 @@
   482.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   482.5 +// All rights reserved.
   482.6 +// This component and the accompanying materials are made available
   482.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   482.8 +// which accompanies this distribution, and is available
   482.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  482.10 +//
  482.11 +// Initial Contributors:
  482.12 +// Nokia Corporation - initial contribution.
  482.13 +//
  482.14 +// Contributors:
  482.15 +//
  482.16 +// Description:
  482.17 +// Base class for Class 0 SMS plugin
  482.18 +// 
  482.19 +//
  482.20 +
  482.21 +
  482.22 +
  482.23 +/**
  482.24 + @publishedAll
  482.25 + @released
  482.26 +*/
  482.27 +
  482.28 +#ifndef __CSMSCLASS0BASE_H_
  482.29 +#define __CSMSCLASS0BASE_H_
  482.30 +
  482.31 +#include <e32base.h>
  482.32 +
  482.33 +class CSmsClass0Base : public CBase
  482.34 +	{
  482.35 +
  482.36 +public:
  482.37 +	virtual void DisplayMessageHandler(TDesC8& aSmsMessage, TBool aComplete);
  482.38 +	~CSmsClass0Base();
  482.39 +
  482.40 +protected:
  482.41 +	CSmsClass0Base();
  482.42 +	
  482.43 +	};
  482.44 +
  482.45 +#endif
   483.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   483.2 +++ b/epoc32/include/mw/cstack.h	Wed Mar 31 12:27:01 2010 +0100
   483.3 @@ -0,0 +1,54 @@
   483.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   483.5 +// All rights reserved.
   483.6 +// This component and the accompanying materials are made available
   483.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   483.8 +// which accompanies this distribution, and is available
   483.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  483.10 +//
  483.11 +// Initial Contributors:
  483.12 +// Nokia Corporation - initial contribution.
  483.13 +//
  483.14 +// Contributors:
  483.15 +//
  483.16 +// Description:
  483.17 +// A template class to provide a classic stack like interface & functionality
  483.18 +// The entries on the stack are owned (i.e. deleted) by the stack if the 
  483.19 +// StackOwnsEntry argument is ETrue
  483.20 +// 
  483.21 +//
  483.22 +
  483.23 +#ifndef __CSTACK_H__
  483.24 +#define __CSTACK_H__
  483.25 +
  483.26 +#include <e32base.h>
  483.27 +
  483.28 +#pragma warning (disable : 4127) // conditional expression is constant
  483.29 +
  483.30 +
  483.31 +/**	
  483.32 +	@file
  483.33 +	@publishedAll
  483.34 +	@released
  483.35 +*/
  483.36 +
  483.37 +
  483.38 +template <class T, TBool StackOwnsEntry>
  483.39 +class CStack : /*protected CArrayPtrSeg<T>*/ public CArrayPtrSeg<T>
  483.40 +	{
  483.41 +public:
  483.42 +	inline CStack();
  483.43 +	inline ~CStack();
  483.44 +
  483.45 +	inline void Clear();		
  483.46 +	inline TBool IsEmpty() const;
  483.47 +	inline void PushL(T* aItem);
  483.48 +	inline T* Pop();
  483.49 +	inline T* Head() const;
  483.50 +	inline T* Last() const;		
  483.51 +	};
  483.52 +
  483.53 +#include <cstack.inl>
  483.54 +
  483.55 +#pragma warning ( default : 4127 ) // conditional expression is constant
  483.56 +
  483.57 +#endif // __CSTACK_H__
   484.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   484.2 +++ b/epoc32/include/mw/dtdnode.h	Wed Mar 31 12:27:01 2010 +0100
   484.3 @@ -0,0 +1,54 @@
   484.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   484.5 +// All rights reserved.
   484.6 +// This component and the accompanying materials are made available
   484.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   484.8 +// which accompanies this distribution, and is available
   484.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  484.10 +//
  484.11 +// Initial Contributors:
  484.12 +// Nokia Corporation - initial contribution.
  484.13 +//
  484.14 +// Contributors:
  484.15 +//
  484.16 +// Description:
  484.17 +// DTD node header
  484.18 +// 
  484.19 +//
  484.20 +
  484.21 +#if !defined(__CDTDNODE_H__)
  484.22 +#define __CDTDNODE_H__
  484.23 +
  484.24 +#include <e32base.h>
  484.25 +#include <cbnfnode.h>
  484.26 +
  484.27 +class CDTDNode : public CBNFNode
  484.28 +/**
  484.29 +Document Type Definition (DTD) node that forms part of a DTD tree.
  484.30 +@publishedAll
  484.31 +@released
  484.32 +*/
  484.33 +{
  484.34 +public:
  484.35 +	//##ModelId=3B66675300CE
  484.36 +	inline ~CDTDNode();
  484.37 +
  484.38 +	//##ModelId=3B66675300CD
  484.39 +	static inline CDTDNode* NewL();
  484.40 +	//##ModelId=3B66675300CC
  484.41 +	inline void AddCompletedAttributeL();
  484.42 +
  484.43 +	//##ModelId=3B66675300C4
  484.44 +	const TDesC* CompletedAttrID();
  484.45 +
  484.46 +	enum{ // attribute IDs start at -6000
  484.47 +		KCompletedAttrID = -6000
  484.48 +	};
  484.49 +private:
  484.50 +	//##ModelId=3B66675300C3
  484.51 +	inline CDTDNode();
  484.52 +};
  484.53 +
  484.54 +
  484.55 +#include <dtdnode.inl>
  484.56 +
  484.57 +#endif // __CDTDNODE_H__
   485.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   485.2 +++ b/epoc32/include/mw/eikamnt.h	Wed Mar 31 12:27:01 2010 +0100
   485.3 @@ -0,0 +1,81 @@
   485.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   485.5 +// All rights reserved.
   485.6 +// This component and the accompanying materials are made available
   485.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   485.8 +// which accompanies this distribution, and is available
   485.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  485.10 +//
  485.11 +// Initial Contributors:
  485.12 +// Nokia Corporation - initial contribution.
  485.13 +//
  485.14 +// Contributors:
  485.15 +//
  485.16 +// Description:
  485.17 +//
  485.18 +
  485.19 +#ifndef __EIKAMNT_H__
  485.20 +#define __EIKAMNT_H__
  485.21 +
  485.22 +#include <e32base.h>
  485.23 +
  485.24 +class CGulIcon;
  485.25 +class MEikAutoMenuObserver;
  485.26 +
  485.27 +/** A menu title that will be added to a standard resource-constructed menu bar. 
  485.28 +
  485.29 +If added to the CEikAutoMenuTitleArray stored by CEikonEnv during standard 
  485.30 +application start up, the menu pane specified will appear in all applications. 
  485.31 +The menu observer passed in is notified of any events on such menu panes in 
  485.32 +preference to the usual observer (C<MyApp>AppUi). 
  485.33 +
  485.34 +@publishedAll 
  485.35 +@released */
  485.36 +NONSHARABLE_CLASS(CEikAutoMenuTitle) : public CBase
  485.37 +	{
  485.38 +public:
  485.39 +	/** Specifies the position of a menu title in a menu. 
  485.40 +
  485.41 +	If an array of menu titles holds more than one menu title that is specified 
  485.42 +	for the start or end of a menu, the menu titles are placed in the same order 
  485.43 +	as that in which they appear in the array. This means the first menu title 
  485.44 +	specified with EStart in an array will be the first on a menu bar and the last 
  485.45 +	EEnd will be the last on a menu bar. */
  485.46 +	enum TTitlePos
  485.47 +		{
  485.48 +		/** The menu title is placed first in a menu. */
  485.49 +		EStart,
  485.50 +		/** The menu title is placed last in a menu. */
  485.51 +		EEnd
  485.52 +		};
  485.53 +	enum { ENominalTextLength=40 };
  485.54 +public:
  485.55 +	IMPORT_C static CEikAutoMenuTitle* NewLC(TTitlePos aPos, const TDesC& aText, MEikAutoMenuObserver& aMenuObserver,
  485.56 +										TInt aMenuPaneResourceId = 0, CGulIcon* aIcon = NULL);
  485.57 +	IMPORT_C ~CEikAutoMenuTitle();
  485.58 +private:
  485.59 +	CEikAutoMenuTitle(TTitlePos aPos, const TDesC& aText, MEikAutoMenuObserver& aMenuObserver,
  485.60 +						TInt aMenuPaneResourceId, CGulIcon* aIcon);
  485.61 +public:
  485.62 +	TTitlePos iPos;
  485.63 +	TBuf<ENominalTextLength> iText;
  485.64 +	MEikAutoMenuObserver& iMenuObserver;
  485.65 +	TInt iMenuPaneResourceId;
  485.66 +	CGulIcon* iIcon;
  485.67 +	};
  485.68 +
  485.69 +
  485.70 +/** Creates a standard array of CEikAutoMenuTitle objects. 
  485.71 +
  485.72 +@publishedPartner 
  485.73 +@released */
  485.74 +NONSHARABLE_CLASS(CEikAutoMenuTitleArray) : public CArrayPtrFlat<CEikAutoMenuTitle>
  485.75 +// If more than one title is specified for the start or end, they will be placed in the same order they appear
  485.76 +// in the array (so the first EStart in the array will be the first on a menu bar also but the last EEnd will
  485.77 +// be the last).
  485.78 +	{
  485.79 +public:
  485.80 +	CEikAutoMenuTitleArray();
  485.81 +	~CEikAutoMenuTitleArray();
  485.82 +	};
  485.83 +
  485.84 +#endif	// __EIKAMNT_H__
   486.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   486.2 +++ b/epoc32/include/mw/eikapp.h	Wed Mar 31 12:27:01 2010 +0100
   486.3 @@ -0,0 +1,114 @@
   486.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   486.5 +// All rights reserved.
   486.6 +// This component and the accompanying materials are made available
   486.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   486.8 +// which accompanies this distribution, and is available
   486.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  486.10 +//
  486.11 +// Initial Contributors:
  486.12 +// Nokia Corporation - initial contribution.
  486.13 +//
  486.14 +// Contributors:
  486.15 +//
  486.16 +// Description:
  486.17 +//
  486.18 +
  486.19 +#ifndef __EIKAPP_H__
  486.20 +#define __EIKAPP_H__
  486.21 +
  486.22 +#include <apparc.h>		// class CApaApplication
  486.23 +#include <apaflrec.h>
  486.24 +
  486.25 +class CCoeEnv;
  486.26 +
  486.27 +/** The base of all Uikon applications. 
  486.28 +
  486.29 +CEikApplication builds on CApaApplication, providing a basis for applications 
  486.30 +working within the framework provided by Uikon. It also contains an interface 
  486.31 +to the resource file and the document object belonging to the application.
  486.32 +
  486.33 +Each Uikon application class is derived from CEikApplication. Application 
  486.34 +writers must provide at least an implementation of the pure virtual function 
  486.35 +CreateDocumentL().
  486.36 +
  486.37 +The application's resource file can be changed from the default by overriding 
  486.38 +ResourceFileName().
  486.39 +
  486.40 +@publishedAll 
  486.41 +@released 
  486.42 +@see CEikDocument */
  486.43 +class CEikApplication : public CApaApplication
  486.44 +	{
  486.45 +public:
  486.46 +	IMPORT_C ~CEikApplication();
  486.47 +	inline TInt ResourceFileOffset() const;
  486.48 +	inline CApaProcess* Process() const;
  486.49 +	inline const TApaAppCaption& AppCaption() const;
  486.50 +	IMPORT_C virtual void GetDefaultDocumentFileName(TFileName& aDocumentName) const;
  486.51 +	IMPORT_C virtual TFileName BitmapStoreName() const;
  486.52 +public: // from CApaApplication
  486.53 +	IMPORT_C CDictionaryStore* OpenIniFileLC(RFs& aFs) const;
  486.54 +	IMPORT_C void Capability(TDes8& aInfo) const;
  486.55 +	IMPORT_C void SetToIniFileNameL(TParse& aParser) const;
  486.56 +protected: // from CApaApplication
  486.57 +	IMPORT_C void PreDocConstructL();
  486.58 +	IMPORT_C CApaDocument* CreateDocumentL(CApaProcess* aProcess);
  486.59 +	IMPORT_C void NewAppServerL(CApaAppServer*& aAppServer);
  486.60 +protected: 
  486.61 +	IMPORT_C CEikApplication();
  486.62 +	IMPORT_C void EnsureCaptionIsLocalisedL(const TDesC& aLocalisableResourceFile);
  486.63 +public: 
  486.64 +	IMPORT_C virtual TFileName ResourceFileName() const;
  486.65 +private:
  486.66 +	IMPORT_C virtual void CEikApplication_Reserved1();
  486.67 +	IMPORT_C virtual void CEikApplication_Reserved2();
  486.68 +private: 
  486.69 +	/** 
  486.70 +	@publishedAll 
  486.71 +	@released 
  486.72 +	*/
  486.73 +	virtual CApaDocument* CreateDocumentL()=0;
  486.74 +private: // internal use
  486.75 +	void InitAppNameParserWithPathAndExt(TParse& aParser, const TDesC& aPath, const TDesC& aExt) const;
  486.76 +protected:
  486.77 +	CCoeEnv* iCoeEnv;
  486.78 +	TInt iResourceFileOffset;
  486.79 +private:
  486.80 +	enum
  486.81 +		{
  486.82 +		EFlagCaptionCorrectlyLocalised =  0x00000001
  486.83 +		};	
  486.84 +private:
  486.85 +	CApaProcess* iProcess;
  486.86 +	TApaAppCaption iCaption;
  486.87 +	TApaAppCapabilityBuf* iCapabilityBuf;
  486.88 +	TUint iAppFlags;
  486.89 +	TInt iSpare;
  486.90 +	};
  486.91 +
  486.92 +/** Gets the offset value defined for this application's default resource file. 
  486.93 +
  486.94 +As the resource file offset can also be accessed through iResourceFileOffset, 
  486.95 +this function should not be needed by any apps.
  486.96 +
  486.97 +@return Offset of a resource file. */
  486.98 +inline TInt CEikApplication::ResourceFileOffset() const
  486.99 +	{ return iResourceFileOffset; }
 486.100 +
 486.101 +
 486.102 +/** Gets the managing process.
 486.103 +
 486.104 +@return A pointer to the process object managing this application's documents. */
 486.105 +inline CApaProcess* CEikApplication::Process() const
 486.106 +	{ return iProcess; }
 486.107 +
 486.108 +
 486.109 +/** Gets the caption for this application.
 486.110 +
 486.111 +Captions are displayed in the task list.
 486.112 +
 486.113 +@return Application caption. */
 486.114 +inline const TApaAppCaption& CEikApplication::AppCaption() const
 486.115 +	{ return iCaption;	}
 486.116 +
 486.117 +#endif	// __EIKAPP_H__
   487.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   487.2 +++ b/epoc32/include/mw/eikappui.h	Wed Mar 31 12:27:01 2010 +0100
   487.3 @@ -0,0 +1,186 @@
   487.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   487.5 +// All rights reserved.
   487.6 +// This component and the accompanying materials are made available
   487.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   487.8 +// which accompanies this distribution, and is available
   487.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  487.10 +//
  487.11 +// Initial Contributors:
  487.12 +// Nokia Corporation - initial contribution.
  487.13 +//
  487.14 +// Contributors:
  487.15 +//
  487.16 +// Description:
  487.17 +//
  487.18 +
  487.19 +#ifndef __EIKAPPUI_H__
  487.20 +#define __EIKAPPUI_H__
  487.21 +
  487.22 +#include <coeaui.h>
  487.23 +#include <coemain.h>
  487.24 +#include <eikmobs.h>
  487.25 +#include <apadef.h>
  487.26 +#include <vwsdef.h>
  487.27 +#include <eikdef.h>
  487.28 +#include <baerrhan.h>
  487.29 +#include <eikaufty.h>
  487.30 +#include <coemop.h>
  487.31 +
  487.32 +class CEikDocument;
  487.33 +class CEikApplication;
  487.34 +class CEikAppUiExtra;
  487.35 +class MApaEmbeddedDocObserver;
  487.36 +struct SExtendedError;
  487.37 +class CApaCommandLine;
  487.38 +
  487.39 +/** Handles application-wide aspects of the application's user interface such 
  487.40 +as the menu bar, toolbar pop-up menus, opening and closing files and exiting the 
  487.41 +application cleanly. 
  487.42 +
  487.43 +Every GUI application should use its own class derived from CEikAppUi. 
  487.44 +
  487.45 +An app UI's main role is to handle commands, in its HandleCommandL() function. 
  487.46 +These may be invoked using the menu bar, toolbar, or hotkeys; the commands 
  487.47 +that an app UI handles are specified in the application's resource file.
  487.48 +
  487.49 +In addition, the app UI normally needs to respond to other kinds of events, by 
  487.50 +providing suitable implementations of the following virtual functions, all 
  487.51 +inherited from CCoeAppUi: 
  487.52 +
  487.53 +- HandleKeyEventL(): Key events.
  487.54 +
  487.55 +- HandleForegroundEventL(): Application switched to foreground.
  487.56 +
  487.57 +- HandleSwitchOnEventL(): Machine switched on.
  487.58 +
  487.59 +- HandleSystemEventL(): System events.
  487.60 +
  487.61 +- HandleApplicationSpecificEventL(): Application-specific events.
  487.62 +
  487.63 +@publishedAll
  487.64 +@released */
  487.65 +class CEikAppUi : public CCoeAppUi, public MEikMenuObserver, public MCoeMessageObserver, public MObjectProvider
  487.66 +	{
  487.67 +public:
  487.68 +	IMPORT_C ~CEikAppUi();
  487.69 +	IMPORT_C CEikAppUi();
  487.70 +public: // new functions
  487.71 +	IMPORT_C virtual void ConstructL();
  487.72 +	IMPORT_C virtual void HandleModelChangeL();
  487.73 +	IMPORT_C TLanguage ApplicationLanguageL() const;
  487.74 +	IMPORT_C CEikApplication* Application() const;
  487.75 +	IMPORT_C CEikDocument* Document() const;
  487.76 +	IMPORT_C void SetDocument(CEikDocument* aDocument);
  487.77 +	inline CEikAppUi* ContainerAppUi() const;
  487.78 +	IMPORT_C void SetEmbeddedDocInfo(MApaEmbeddedDocObserver* aObserver, TBool aReadOnly);
  487.79 +	IMPORT_C virtual TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName, const TDesC8& aTail);
  487.80 +	IMPORT_C virtual TBool ProcessCommandParametersL(CApaCommandLine& aCommandLine);
  487.81 +	// Application screen extent
  487.82 +	IMPORT_C TRect ClientRect() const;
  487.83 +	IMPORT_C virtual TRect ApplicationRect() const;
  487.84 +	// Menu utilities
  487.85 +	IMPORT_C void LaunchPopupMenuL(TInt aResourceId, const TPoint& aTargetPos, TPopupTargetPosType aTargetType, const CEikHotKeyTable* aHotKeyTable = NULL);
  487.86 +	IMPORT_C virtual void StopDisplayingMenuBar();
  487.87 +	// Fading effect
  487.88 +	IMPORT_C TBool FadeWhenInBackground();
  487.89 +	IMPORT_C virtual void SetFadedL(TBool aFaded);
  487.90 +	inline void SetFaded(TBool aFaded);			//mm: has no implementation
  487.91 +public: // new function
  487.92 +	IMPORT_C virtual void ReportResourceChangedToAppL(TInt aType);
  487.93 +	IMPORT_C virtual void HandleCommandL(TInt aCommand);
  487.94 +	IMPORT_C virtual void ProcessMessageL(TUid aUid, const TDesC8& aParams);
  487.95 +	IMPORT_C virtual void OpenFileL(const TDesC& aFileName);
  487.96 +	IMPORT_C virtual void CreateFileL(const TDesC& aFileName);
  487.97 +	IMPORT_C virtual TErrorHandlerResponse HandleError(TInt aError, const SExtendedError& aExtErr, TDes& aErrorText, TDes& aContextText);
  487.98 +	IMPORT_C virtual void HandleResourceChangeL(TInt aType);
  487.99 +public: // from CCoeAppUi
 487.100 +	IMPORT_C void PrepareToExit();
 487.101 +protected: // new functions
 487.102 +	// Construction
 487.103 +	IMPORT_C void BaseConstructL(TInt aAppUiFlags = 0);
 487.104 +	IMPORT_C void ReadAppInfoResourceL(TInt aResourceFileOffset = 0);
 487.105 +	IMPORT_C void CreateHotKeyControlL(TInt aResourceId);
 487.106 +	IMPORT_C TBool ProcessCommandParametersL(TApaCommand aCommand, TFileName& aDocumentName);
 487.107 +	// User data change management
 487.108 +	IMPORT_C void SetDocChanged();
 487.109 +	IMPORT_C void SaveAnyChangesL();
 487.110 +	IMPORT_C void SaveL();
 487.111 +	IMPORT_C virtual void Exit();
 487.112 +	// Utility
 487.113 +	IMPORT_C void ClosePopup();		//mm: deprecate?
 487.114 +protected: // from MEikMenuObserver
 487.115 +	IMPORT_C void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,TInt aModifiers,const CEikHotKeyTable* aTable);
 487.116 +protected: // from CCoeAppUi
 487.117 +	IMPORT_C void HandleApplicationSpecificEventL(TInt aType,const TWsEvent& aEvent);
 487.118 +	IMPORT_C void HandleForegroundEventL(TBool aForeground);
 487.119 +	IMPORT_C void HandleWsEventL(const TWsEvent& aEvent, CCoeControl* aDestination);
 487.120 +	IMPORT_C void HandleSystemEventL(const TWsEvent& aEvent);
 487.121 +	IMPORT_C void HandleScreenDeviceChangedL();
 487.122 +protected: // from MEikCommandObserver
 487.123 +	IMPORT_C void ProcessCommandL(TInt aCommand);
 487.124 +private: // from MEikMenuObserver
 487.125 +	IMPORT_C void SetEmphasis(CCoeControl* aMenuWindow,TBool aEmphasis);
 487.126 +protected: // from MCoeMessageObserver
 487.127 +	IMPORT_C MCoeMessageObserver::TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters);
 487.128 +protected:	// from MObjectProvider
 487.129 +	IMPORT_C virtual TTypeUid::Ptr MopSupplyObject(TTypeUid aId);
 487.130 +	IMPORT_C virtual MObjectProvider* MopNext();
 487.131 +private: 
 487.132 +	// Validate document file type
 487.133 +	IMPORT_C virtual TBool ValidFileType(TUid aFileUid) const;
 487.134 +private: // spare virtuals	
 487.135 +	IMPORT_C virtual void Reserved_3();
 487.136 +	IMPORT_C virtual void Reserved_4();
 487.137 +public:
 487.138 +	/** Application resource file and screen furniture flags, passed to BaseConstructL(). */
 487.139 +	enum
 487.140 +		{
 487.141 +		/** Application uses a standard resource file. */
 487.142 +		EStandardApp			= 0x00,
 487.143 +		/** Application has no resource file. */
 487.144 +		ENoAppResourceFile		= 0x01,
 487.145 +		/** Application uses a different resource file from the standard. */
 487.146 +		ENonStandardResourceFile= 0x02,
 487.147 +		/** Application uses no screen furniture. */
 487.148 +		ENoScreenFurniture		= 0x04,
 487.149 +		/** Indicates the last value in the enum. */
 487.150 +		ELastReservedEikAppUiFlag = 0x8000
 487.151 +		};
 487.152 +public:
 487.153 +	IMPORT_C void ReportResourceChangedToAppStackL(CEikAppUi* aTopApp, TInt aEventId);
 487.154 +	CEikAppUiExtra* AppUiExtra();
 487.155 +private:
 487.156 +	void CreateResourceIndependentFurnitureL();
 487.157 +	TBool ValidFileExistsL(const TDesC& aFileName);
 487.158 +protected:
 487.159 +	/** A pointer to the application's document. */
 487.160 +	CEikDocument* iDocument;
 487.161 +	/** A pointer to the containing app UI. This is NULL for non-embedded 
 487.162 +	apps. */
 487.163 +	CEikAppUi* iContainerAppUi;
 487.164 +	/** Embedded document observer. */
 487.165 +	MApaEmbeddedDocObserver* iDoorObserver;
 487.166 +	/** Indicates whether or not this is the app UI for an embedded, 
 487.167 +	read-only document. */
 487.168 +	TBool iEmbeddedAndReadOnly;
 487.169 +	TInt iFlags;
 487.170 +private:
 487.171 +	enum
 487.172 +		{
 487.173 +		EEmbedded = 0x01
 487.174 +		};
 487.175 +private:
 487.176 +	CEikAppUiExtra* iAppUiExtra;
 487.177 +	};
 487.178 +
 487.179 +
 487.180 +
 487.181 +/** Returns the app UI inside which this app UI is embedded.
 487.182 +Embedded app UIs are used for editing embedded documents.
 487.183 +
 487.184 +@return A pointer to this object's container app UI. NULL if this app 
 487.185 +UI is not embedded */
 487.186 +inline CEikAppUi* CEikAppUi::ContainerAppUi() const
 487.187 +	{ return iContainerAppUi; }
 487.188 +
 487.189 +#endif	// __EIKAPPUI_H__
   488.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   488.2 +++ b/epoc32/include/mw/eikaufty.h	Wed Mar 31 12:27:01 2010 +0100
   488.3 @@ -0,0 +1,143 @@
   488.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   488.5 +// All rights reserved.
   488.6 +// This component and the accompanying materials are made available
   488.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   488.8 +// which accompanies this distribution, and is available
   488.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  488.10 +//
  488.11 +// Initial Contributors:
  488.12 +// Nokia Corporation - initial contribution.
  488.13 +//
  488.14 +// Contributors:
  488.15 +//
  488.16 +// Description:
  488.17 +// Defines mix-in interace to break dependencey of Eikon Application UI 
  488.18 +// on controls
  488.19 +// 
  488.20 +//
  488.21 +
  488.22 +#ifndef __EIKAUFTY_H__
  488.23 +#define __EIKAUFTY_H__
  488.24 +
  488.25 +#include <f32file.h>
  488.26 +#include <e32base.h>
  488.27 +#include <eikdef.h>
  488.28 +
  488.29 +#include <coemop.h>
  488.30 +
  488.31 +class CEikHotKeyTable;
  488.32 +class CEikMenuBar;
  488.33 +class CEikMenuPane;
  488.34 +class CEikCommandButton;
  488.35 +class CEikToolBar;
  488.36 +class CEikButtonGroupContainer;
  488.37 +class CEikAppUi;
  488.38 +class CEikonEnv;
  488.39 +class CEikStatusPane;
  488.40 +
  488.41 +
  488.42 +/** This class defines a mixin interface to break the dependency of the Uikon Application 
  488.43 +User Interface on controls. 
  488.44 +
  488.45 +@publishedAll 
  488.46 +@released */
  488.47 +class MEikAppUiFactory : public MObjectProvider
  488.48 +	{
  488.49 +public:
  488.50 +	virtual void CreateResourceIndependentFurnitureL(CEikAppUi* aAppUi) =0;
  488.51 +	virtual TRect ClientRect() = 0;
  488.52 +	virtual void ReadAppInfoResourceL(TInt aResourceFileOffset,CEikAppUi* aAppUi) = 0;
  488.53 +	virtual void LaunchPopupMenuL(	TInt aResourceId,
  488.54 +									const TPoint& aTargetPos,
  488.55 +									TPopupTargetPosType aTargetType,
  488.56 +									const CEikHotKeyTable* aHotKeyTable,
  488.57 +									CEikAppUi* aAppUi) = 0;
  488.58 +
  488.59 +	virtual void DoLaunchPopupL(TInt aResourceId,const TPoint& aTargetPos, const CEikHotKeyTable* aHotKeyTable, 
  488.60 +								TPopupTargetPosType aTargetType,CEikAppUi* aAppUi) = 0;
  488.61 +
  488.62 +   	virtual void ClosePopup(CEikAppUi* aAppUi) = 0;
  488.63 +	virtual void StopDisplayingMenuBar() = 0;
  488.64 +	virtual void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,
  488.65 +									const CEikHotKeyTable* aHotKeyTable,CEikAppUi* aAppUi) = 0;
  488.66 +	virtual void CreateHotKeyControlL(TInt aResourceId, CEikAppUi* aAppUi) = 0;
  488.67 +	/** Gets a pointer to the menu bar.
  488.68 +	
  488.69 +	@return Pointer to the menu bar. */
  488.70 +	virtual CEikMenuBar* MenuBar() const = 0;
  488.71 +	/** Replaces or clears a menu bar, returning a pointer to the replaced menu bar.
  488.72 +	
  488.73 +	@param aMenu The new menu bar. This can be NULL to clear an existing menu bar. 
  488.74 +	@return Pointer to the replaced menu bar. */
  488.75 +	virtual CEikMenuBar* SwapMenuBar(CEikMenuBar* aMenu) = 0;
  488.76 +	virtual CEikMenuPane* Popup() const = 0;
  488.77 +	/** Gets a pointer to the tool bar.
  488.78 +	
  488.79 +	@return Pointer to the tool bar. */
  488.80 +	virtual CEikButtonGroupContainer* ToolBar() const = 0;
  488.81 +	/** Replaces or clears a button group, returning a pointer to the replaced button 
  488.82 +	group.
  488.83 +	
  488.84 +	@param aNewGroup The new button group. This can be NULL to clear an existing 
  488.85 +	button group. 
  488.86 +	@return Pointer to the replaced button group. */
  488.87 +	virtual CEikButtonGroupContainer* SwapButtonGroup(CEikButtonGroupContainer* aNewGroup) = 0;
  488.88 +	/** Gets a pointer to the tool band.
  488.89 +	
  488.90 +	@return Pointer to the tool band. */
  488.91 +	virtual CEikToolBar* ToolBand() const = 0;
  488.92 +	/** Gets a pointer to the title band.
  488.93 +	
  488.94 +	@return Pointer to the title band. */
  488.95 +	virtual CEikToolBar* TitleBand() const = 0;
  488.96 +	/** Gets a pointer to the status pane.
  488.97 +	
  488.98 +	@return Pointer to the status pane */
  488.99 +	virtual CEikStatusPane* StatusPane() const = 0;
 488.100 +	/** Gets a pointer to the CBA. 
 488.101 +	
 488.102 +	@return Pointer to the CBA */
 488.103 +	virtual CEikButtonGroupContainer* Cba() const = 0;
 488.104 +	inline CEikToolBar* SwapToolBand(CEikToolBar* aToolBand);
 488.105 +	inline CEikToolBar* SwapTitleBand(CEikToolBar* aTitleBand);
 488.106 +	/** Creates a standard tab button.
 488.107 +	
 488.108 +	@return Pointer to the created tab button. */
 488.109 +	virtual CEikCommandButton*  CreateStandardTabButtonL() const = 0;
 488.110 +	virtual void CreateEmbeddedL(CEikonEnv& aEikonEnv) = 0;
 488.111 +	virtual void DestroyEmbedded(CEikonEnv& aEikonEnv) = 0;
 488.112 +	virtual void HandleResourceChangeL(TInt aType) = 0;
 488.113 +protected:
 488.114 +	/** Defines the type of tool bar. */
 488.115 +	enum TToolBarType
 488.116 +		{
 488.117 +		/** Defines a band tool bar. */
 488.118 +		EBand,
 488.119 +		/** Defines a title tool bar. */
 488.120 +		ETitle
 488.121 +		};
 488.122 +private:
 488.123 +	virtual CEikToolBar* SwapToolBar(CEikToolBar* aToolBar,TToolBarType aType) = 0;
 488.124 +	};
 488.125 +
 488.126 +
 488.127 +
 488.128 +/** Replaces or clears a tool band, returning a pointer to the replaced tool band.
 488.129 +
 488.130 +@param aToolBand The new tool band. This can be NULL to clear an existing 
 488.131 +tool band. 
 488.132 +@return Pointer to the replaced tool band. */
 488.133 +inline CEikToolBar* MEikAppUiFactory::SwapToolBand(CEikToolBar* aToolBand)
 488.134 +	{return SwapToolBar(aToolBand,EBand);}
 488.135 +
 488.136 +
 488.137 +/** Replaces or clears a title band, returning a pointer to the replaced title 
 488.138 +band.
 488.139 +
 488.140 +@param aTitleBand The new title band. This can be NULL to clear an existing 
 488.141 +title band. 
 488.142 +@return Pointer to the replaced title band. */
 488.143 +inline CEikToolBar* MEikAppUiFactory::SwapTitleBand(CEikToolBar* aTitleBand)
 488.144 +	{return SwapToolBar(aTitleBand,ETitle);}
 488.145 +
 488.146 +#endif	// __EIKAUFTY_H__
   489.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   489.2 +++ b/epoc32/include/mw/eikbhelp.h	Wed Mar 31 12:27:01 2010 +0100
   489.3 @@ -0,0 +1,92 @@
   489.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   489.5 +// All rights reserved.
   489.6 +// This component and the accompanying materials are made available
   489.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   489.8 +// which accompanies this distribution, and is available
   489.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  489.10 +//
  489.11 +// Initial Contributors:
  489.12 +// Nokia Corporation - initial contribution.
  489.13 +//
  489.14 +// Contributors:
  489.15 +//
  489.16 +// Description:
  489.17 +//
  489.18 +
  489.19 +#ifndef __EIKBHELP_H__
  489.20 +#define __EIKBHELP_H__
  489.21 +
  489.22 +#include <coemain.h>
  489.23 +
  489.24 +const TUid KEikBubbleHelpUid={0x10008E48};
  489.25 +
  489.26 +class CCoeControl;
  489.27 +
  489.28 +/**
  489.29 +@publishedPartner
  489.30 +@deprecated
  489.31 +*/
  489.32 +class MEikTriggeredHelp	
  489.33 +	{
  489.34 +// The MEikTriggeredHelp class defines an interface for UI classes 
  489.35 +// to implement triggered, transient help message display.
  489.36 +public:
  489.37 +	virtual void TriggerHelp(const TDesC& aDes,const TRect& aRect,TInt aHandle)=0;
  489.38 +	virtual void CancelHelp()=0;
  489.39 +	virtual void CancelHelpTrigger()=0;
  489.40 +	virtual TBool IsDisplayingHelp(TInt aHandle)=0;
  489.41 +	virtual void Release()=0;
  489.42 +protected:
  489.43 +	IMPORT_C virtual void MEikTriggeredHelp_Reserved_1();
  489.44 +	IMPORT_C virtual void MEikTriggeredHelp_Reserved_2();
  489.45 +	};
  489.46 +
  489.47 +
  489.48 +/** Provides the static functions that control bubble help.
  489.49 +
  489.50 +Bubble help is a feature that enables short help messages to be displayed 
  489.51 +for controls in transient windows which pop up close to the control bodies. 
  489.52 +
  489.53 +@publishedAll 
  489.54 +@released */
  489.55 +class EikBubbleHelp
  489.56 +	{
  489.57 +public:
  489.58 +	IMPORT_C static void Trigger(const TDesC& aDes,const TRect& aRect,TInt aHandle=-1);
  489.59 +	IMPORT_C static void Cancel();
  489.60 +	IMPORT_C static void CancelTrigger();
  489.61 +	IMPORT_C static TBool IsDisplaying(TInt aHandle);
  489.62 +	};
  489.63 +
  489.64 +
  489.65 +/**
  489.66 +@publishedPartner
  489.67 +@deprecated
  489.68 +*/
  489.69 +class CEikBubbleHelp : public CCoeStatic
  489.70 +// The CEikBubbleHelp class implements global static storage and access to the object providing bubble help
  489.71 +// for the application.  
  489.72 +	{
  489.73 +	~CEikBubbleHelp();
  489.74 +public: 
  489.75 +	IMPORT_C static void SetTriggeredHelpL(MEikTriggeredHelp* aTriggeredHelp);
  489.76 +public:
  489.77 +	static void Trigger(const TDesC& aDes,const TRect& aRect,TInt aHandle=-1);
  489.78 +	static void Cancel();
  489.79 +	static void CancelTrigger();
  489.80 +	static TBool IsDisplaying(TInt aHandle);
  489.81 +private:
  489.82 +	inline CEikBubbleHelp();
  489.83 +	inline static CEikBubbleHelp* Self();
  489.84 +private:
  489.85 +	MEikTriggeredHelp* iHelp;
  489.86 +	};
  489.87 +
  489.88 +inline CEikBubbleHelp::CEikBubbleHelp()
  489.89 +	: CCoeStatic(KEikBubbleHelpUid)
  489.90 +	{}
  489.91 +
  489.92 +inline CEikBubbleHelp* CEikBubbleHelp::Self()
  489.93 +	{return STATIC_CAST(CEikBubbleHelp*,CCoeEnv::Static(KEikBubbleHelpUid));}
  489.94 +
  489.95 +#endif
   490.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   490.2 +++ b/epoc32/include/mw/eikcmobs.h	Wed Mar 31 12:27:01 2010 +0100
   490.3 @@ -0,0 +1,64 @@
   490.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   490.5 +// All rights reserved.
   490.6 +// This component and the accompanying materials are made available
   490.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   490.8 +// which accompanies this distribution, and is available
   490.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  490.10 +//
  490.11 +// Initial Contributors:
  490.12 +// Nokia Corporation - initial contribution.
  490.13 +//
  490.14 +// Contributors:
  490.15 +//
  490.16 +// Description:
  490.17 +//
  490.18 +
  490.19 +#ifndef __EIKCMOBS_H__
  490.20 +#define __EIKCMOBS_H__
  490.21 +
  490.22 +#include <e32def.h>
  490.23 +
  490.24 +class CCoeControl;
  490.25 +
  490.26 +/** Command observers respond to user commands, and have the secondary function 
  490.27 +of creating custom controls on request for classes such as CEikToolbar, or 
  490.28 +user-defined classes.
  490.29 +
  490.30 +An implementation of the pure virtual function ProcessCommandL() must be provided 
  490.31 +for each concrete class derived from MEikCommandObserver. CreateCustomCommandControlL() 
  490.32 +may also be re-implemented. 
  490.33 +
  490.34 +@publishedAll 
  490.35 +@released */
  490.36 +class MEikCommandObserver
  490.37 +	{
  490.38 +public:
  490.39 +	/** Processes user commands.
  490.40 +	
  490.41 +	Derived classes must provide an implementation of this function which responds 
  490.42 +	to user commands appropriately based on a user-defined ID for the command.
  490.43 +	
  490.44 +	@param aCommandId ID of the command to respond to. */
  490.45 +	virtual void ProcessCommandL(TInt aCommandId)=0;
  490.46 +	/** Glue for creating custom controls.
  490.47 +	
  490.48 +	This function can be called to create custom controls on request from their 
  490.49 +	control ID. Custom controls are user-supplied control classes.
  490.50 +	
  490.51 +	Given the ID of a custom control, this function should return a pointer to 
  490.52 +	a newly-instantiated and fully constructed control. If the ID is unrecognised, 
  490.53 +	NULL should be returned. The control returned will be owned by the caller.
  490.54 +	
  490.55 +	@param aControlType A custom control ID. 
  490.56 +	@return By default, NULL. */
  490.57 +	IMPORT_C virtual CCoeControl* CreateCustomCommandControlL(TInt aControlType);
  490.58 +protected:
  490.59 +	IMPORT_C MEikCommandObserver();
  490.60 +private:
  490.61 +	IMPORT_C virtual void MEikCommandObserver_Reserved1();
  490.62 +	IMPORT_C virtual void MEikCommandObserver_Reserved2();
  490.63 +private:
  490.64 +	TInt iMEikCommandObserver_Reserved1;
  490.65 +	};
  490.66 +
  490.67 +#endif	// __EIKCMOBS_H__
   491.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   491.2 +++ b/epoc32/include/mw/eikdef.h	Wed Mar 31 12:27:01 2010 +0100
   491.3 @@ -0,0 +1,321 @@
   491.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   491.5 +// All rights reserved.
   491.6 +// This component and the accompanying materials are made available
   491.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   491.8 +// which accompanies this distribution, and is available
   491.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  491.10 +//
  491.11 +// Initial Contributors:
  491.12 +// Nokia Corporation - initial contribution.
  491.13 +//
  491.14 +// Contributors:
  491.15 +//
  491.16 +// Description:
  491.17 +//
  491.18 +
  491.19 +#ifndef __EIKDEF_H__
  491.20 +#define __EIKDEF_H__
  491.21 +
  491.22 +#include <e32std.h>
  491.23 +#include <coedef.h>
  491.24 +
  491.25 +/** This is used in combination with a specified position to place a popout on 
  491.26 +the display. 
  491.27 +
  491.28 +The TPopupTargetPosType enum identifies which corner of the popout 
  491.29 +will be placed in the given target position. The default is the top left corner. 
  491.30 +
  491.31 +@publishedAll
  491.32 +@released */
  491.33 +enum TPopupTargetPosType
  491.34 +	{
  491.35 +	/** Places the popout with the top left corner in the specified position. */
  491.36 +	EPopupTargetTopLeft,
  491.37 +	/** Places the popout with the top right corner in the specified position. */
  491.38 +	EPopupTargetTopRight,
  491.39 +	/** Places the popout with the bottom left corner in the specified position. */
  491.40 +	EPopupTargetBottomLeft,
  491.41 +	/** Places the popout with the bottom right corner in the specified position. */
  491.42 +	EPopupTargetBottomRight
  491.43 +	};
  491.44 +
  491.45 +
  491.46 +/** Defines the printer port settings. This is used by GUI print dialogs.*/
  491.47 +enum TEikPortFlag
  491.48 +	{
  491.49 +	/** Printing is via a serial port.*/
  491.50 +	ESerialPort = 0x01,
  491.51 +	/** Printing is via a parallel port.*/
  491.52 +	EParallelPort = 0x02,
  491.53 +	/** Printing is via infra red.*/
  491.54 +	EIrdaPort = 0x04,
  491.55 +	/** Printing is to a file. */
  491.56 +	EFilePort = 0x08,
  491.57 +	/** Printing is via a PC.*/
  491.58 +	EViaPCPort = 0x10
  491.59 +	};
  491.60 +
  491.61 +/** Macro to allow easy access to the CEikonEnv instance.
  491.62 +
  491.63 +@publishedAll
  491.64 +@released
  491.65 +*/
  491.66 +#define iEikonEnv (STATIC_CAST(CEikonEnv*,iCoeEnv))
  491.67 +
  491.68 +/** Defines the border style for an editable control.
  491.69 +
  491.70 +@publishedPartner
  491.71 +@released
  491.72 +*/
  491.73 +#define KEikEditableControlBorder TGulBorder::EShallowSunken
  491.74 +
  491.75 +/** Name of the default bitmap store.
  491.76 +
  491.77 +@publishedPartner
  491.78 +@released
  491.79 +*/
  491.80 +_LIT(KEikDefaultAppBitmapStore,"*");
  491.81 +
  491.82 +/** Uid of the KEikMessageColorSchemeChange message.
  491.83 +
  491.84 +@publishedPartner
  491.85 +@released
  491.86 +*/
  491.87 +const TInt KUidValueEikColorSchemeChangeEvent	=0x10006956;
  491.88 +
  491.89 +/**
  491.90 +@internalComponent
  491.91 +*/
  491.92 +const TInt KEikCustomColorsArrayValue			=0x100057C2;
  491.93 +
  491.94 +/** Indicates that all windows should appear faded.
  491.95 +
  491.96 +@publishedAll
  491.97 +@released
  491.98 +*/
  491.99 +const TInt KEikMessageFadeAllWindows			=0x100056C2;
 491.100 +
 491.101 +/** Indicates that all windows should appear unfaded.
 491.102 +
 491.103 +@publishedAll
 491.104 +@released
 491.105 +*/
 491.106 +const TInt KEikMessageUnfadeWindows				=0x100056C3;
 491.107 +
 491.108 +/** Indicates that the colour scheme has changed.
 491.109 +
 491.110 +@publishedAll
 491.111 +@released
 491.112 +*/
 491.113 +const TInt KEikMessageColorSchemeChange			=KUidValueCoeColorSchemeChangeEvent;
 491.114 +
 491.115 +/** Indicates that the color scheme has changed.
 491.116 +
 491.117 +@publishedAll
 491.118 +@released
 491.119 +*/
 491.120 +#define KEikColorResourceChange KEikMessageColorSchemeChange // for source compatibility
 491.121 +
 491.122 +/** Indicates that the zoom level has changed.
 491.123 +
 491.124 +@publishedAll
 491.125 +@released
 491.126 +*/
 491.127 +const TInt KEikMessageZoomChange				=KUidValueCoeZoomChangeEvent;
 491.128 +
 491.129 +/** Indicates that a font has changed. Controls should ensure they are using 
 491.130 +the right font after receiving this message.
 491.131 +
 491.132 +@publishedAll
 491.133 +@released
 491.134 +*/
 491.135 +const TInt KEikMessageFontChange     = KUidValueCoeFontChangeEvent;  
 491.136 +
 491.137 +/** Indicates that the state of the virtual cursor has changed.
 491.138 +
 491.139 +@publishedAll
 491.140 +@released
 491.141 +*/
 491.142 +const TInt KEikMessageVirtualCursorStateChange	=0x10005D0A;
 491.143 +
 491.144 +/** Indicates that caps lock key has been pressed.
 491.145 +
 491.146 +@publishedAll
 491.147 +@released
 491.148 +*/
 491.149 +const TInt KEikMessageCapsLock					=0x100048F9;
 491.150 +
 491.151 +/** Indicates that the application should be ready to save any data that needs saving.
 491.152 +
 491.153 +@publishedAll
 491.154 +@released
 491.155 +*/
 491.156 +const TInt KEikMessagePrepareForSave			=0x100069FD;
 491.157 +
 491.158 +/** Indicates that the level of embedding of the application has changed.
 491.159 +
 491.160 +@publishedAll
 491.161 +@released
 491.162 +*/
 491.163 +const TInt KEikMessageEmbedLevelChange			=0x1000A4AA;
 491.164 +
 491.165 +/** Passed immediately after completion of the call to CCoeEnv::SetAppUi() 
 491.166 +when aNewAppUi has become current AppUi. This happens during the destruction of the embedded
 491.167 +AppUi.
 491.168 +
 491.169 +@publishedAll 
 491.170 +@released
 491.171 +*/
 491.172 +const TInt KEikHasBecomeCurrentAppUiWhileEmbeddedAppUiDeletes = 0x10207F75;
 491.173 +
 491.174 +/** Passed immediately before CEikAppUiFactory::CreateEmbeddedL()
 491.175 +
 491.176 +@publishedAll 
 491.177 +@released
 491.178 +*/
 491.179 +const TInt KEikNotifyPreCreateEmbeddedL = 0x10207F67;
 491.180 +
 491.181 +/** Passed immediately after CEikAppUiFactory::CreateEmbeddedL()
 491.182 +
 491.183 +@publishedAll 
 491.184 +@released
 491.185 +*/
 491.186 +const TInt KEikNotifyPostCreateEmbeddedL = 0x10207F65;
 491.187 +
 491.188 +/** Passed immediately after CCoeAppUi::ConstructL()
 491.189 +
 491.190 +@publishedAll 
 491.191 +@released
 491.192 +*/
 491.193 +const TInt KEikPostCoeAppUiConstructL = 0x10207F66;
 491.194 +
 491.195 +/**
 491.196 +@publishedAll
 491.197 +@released
 491.198 +*/
 491.199 +_LIT8(KDebugStart, "-DebugMemFail:");
 491.200 +
 491.201 +/**
 491.202 +@publishedPartner 
 491.203 +@released
 491.204 +*/
 491.205 +const TInt KEikDefaultCursorWidth=2;
 491.206 +
 491.207 +/**
 491.208 +@publishedPartner 
 491.209 +@released
 491.210 +*/
 491.211 +const TInt KTimeBetweenClicks=1000000;	 // in Microseconds	
 491.212 +
 491.213 +/**
 491.214 +@publishedPartner 
 491.215 +@released
 491.216 +*/		 
 491.217 +const TInt KDoubleClickDistance=10;
 491.218 +
 491.219 +/**
 491.220 +@publishedPartner 
 491.221 +@released
 491.222 +*/	
 491.223 +const TInt KKeyboardRepeatRate=50000;
 491.224 +
 491.225 +/**
 491.226 +@publishedPartner 
 491.227 +@released
 491.228 +*/	
 491.229 +const TInt KKeyboardRepeatInitialDelay=800000;
 491.230 +
 491.231 +/** Resource id of the query dialog.
 491.232 +@publishedPartner
 491.233 +@released
 491.234 +*/
 491.235 +const TInt KEikResIdQueryDialog	=0;
 491.236 +
 491.237 +/** Resource id of the info dialog.
 491.238 +@publishedPartner
 491.239 +@released
 491.240 +*/
 491.241 +const TInt KEikResIdInfoDialog	=1;
 491.242 +
 491.243 +/**
 491.244 +@publishedPartner 
 491.245 +@released
 491.246 +*/	
 491.247 +const TInt KEikErrorResolverMaxTextLength = 256;
 491.248 +
 491.249 +/**
 491.250 +@internalTechnology
 491.251 +*/
 491.252 +#define COMPARE_BOOLS(a,b) (((a) && (b)) || (!(a) && !(b)))
 491.253 +
 491.254 +/**
 491.255 +@internalComponent
 491.256 +*/
 491.257 +#if defined(_DEBUG)
 491.258 +#define __UHEAP_CHECK_INTEGRITY User::Heap().Check()
 491.259 +#else
 491.260 +#define __UHEAP_CHECK_INTEGRITY
 491.261 +#endif
 491.262 +
 491.263 +/**
 491.264 +@internalComponent
 491.265 +*/
 491.266 +#define PROFILE_POINT_EIKON_FIRST		32
 491.267 +
 491.268 +/**
 491.269 +@internalComponent
 491.270 +*/
 491.271 +#define PROFILE_POINT_EIKON_LAST		39
 491.272 +
 491.273 +/**
 491.274 +@internalComponent
 491.275 +*/
 491.276 +#define PROFILE_POINT_EIKON_SIMPLE		32
 491.277 +
 491.278 +/**
 491.279 +@internalComponent
 491.280 +*/
 491.281 +#define PROFILE_POINT_EIKON_DIALOG_LOAD	33
 491.282 +
 491.283 +/**
 491.284 +@internalComponent
 491.285 +*/
 491.286 +#define PROFILE_POINT_EIKON_APP_LAUNCH	34
 491.287 +
 491.288 +/**
 491.289 +@internalComponent
 491.290 +*/
 491.291 +#define PROFILE_POINT_EIKON_CLOCK		35
 491.292 +
 491.293 +/**
 491.294 +@internalComponent
 491.295 +*/
 491.296 +#define PROFILE_POINT_EIKON_CALENDER	35
 491.297 +
 491.298 +/**
 491.299 +@internalComponent
 491.300 +*/
 491.301 +#define PROFILE_POINT_EIKON_LIBS_LOAD	36
 491.302 +
 491.303 +/**
 491.304 +@internalComponent
 491.305 +*/
 491.306 +#define PROFILE_POINT_EIKON_ADD_RES		37
 491.307 +
 491.308 +/**
 491.309 +@internalComponent
 491.310 +*/
 491.311 +#define KEikEikonBitmapStore		KNullDesC
 491.312 +
 491.313 +/**
 491.314 +@internalComponent
 491.315 +*/
 491.316 +const TUid KSystemIniFileUid = {0x1000010C};
 491.317 +
 491.318 +/**
 491.319 +@internalComponent
 491.320 +*/	
 491.321 +const TInt KLastSystemWideErrCode = KErrCommsBreak;
 491.322 +
 491.323 +
 491.324 +#endif	// __EIKDEF_H__
   492.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   492.2 +++ b/epoc32/include/mw/eikdll.h	Wed Mar 31 12:27:01 2010 +0100
   492.3 @@ -0,0 +1,22 @@
   492.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   492.5 +// All rights reserved.
   492.6 +// This component and the accompanying materials are made available
   492.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   492.8 +// which accompanies this distribution, and is available
   492.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  492.10 +//
  492.11 +// Initial Contributors:
  492.12 +// Nokia Corporation - initial contribution.
  492.13 +//
  492.14 +// Contributors:
  492.15 +//
  492.16 +// Description:
  492.17 +//
  492.18 +
  492.19 +#ifndef __EIKDLL_H__
  492.20 +#define __EIKDLL_H__
  492.21 +
  492.22 +#include <e32std.h>
  492.23 +#include <apacmdln.h>
  492.24 +
  492.25 +#endif	// __EIKDLL_H__
   493.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   493.2 +++ b/epoc32/include/mw/eikdoc.h	Wed Mar 31 12:27:01 2010 +0100
   493.3 @@ -0,0 +1,128 @@
   493.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   493.5 +// All rights reserved.
   493.6 +// This component and the accompanying materials are made available
   493.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   493.8 +// which accompanies this distribution, and is available
   493.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  493.10 +//
  493.11 +// Initial Contributors:
  493.12 +// Nokia Corporation - initial contribution.
  493.13 +//
  493.14 +// Contributors:
  493.15 +//
  493.16 +// Description:
  493.17 +//
  493.18 +
  493.19 +#ifndef __EIKDOC_H__
  493.20 +#define __EIKDOC_H__
  493.21 +
  493.22 +#include <apparc.h>
  493.23 +#include <savenotf.h>
  493.24 +
  493.25 +class CEikAppUi;
  493.26 +class CEikApplication;
  493.27 +class CApaWindowGroupName;
  493.28 +
  493.29 +
  493.30 +/** The base class for all GUI applications' documents. 
  493.31 +
  493.32 +In file-based applications, the document represents the data that relates to a 
  493.33 +particular instance of the application, and should handle storing and restoring 
  493.34 +it. In all applications, whether file-based or not, the document is used to create 
  493.35 +the application UI. 
  493.36 +
  493.37 +A class derived from CEikDocument must be defined by each GUI application, and minimally 
  493.38 +it must implement CreateAppUiL(). Note that UIs may implement their own document base class, 
  493.39 +derived from CEikDocument, which applications may need to derive from instead. 
  493.40 +
  493.41 +The document is created by the application's CreateDocumentL() function.
  493.42 +
  493.43 +@publishedAll
  493.44 +@released 
  493.45 +@see CEikApplication::CreateDocumentL()
  493.46 +@see CEikAppUi */
  493.47 +class CEikDocument : public CApaDocument, public MSaveObserver
  493.48 +	{
  493.49 +public: // new functions
  493.50 +	/** Constructs the application UI.
  493.51 +	
  493.52 +	This function is called by the UI framework during application start-up. It should 
  493.53 +	only carry out first phase construction of the app UI, in other words, using new(ELeave). 
  493.54 +	It should not call the app UI's ConstructL(), because the UI framework is responsible 
  493.55 +	for this. Note also that the UI framework takes ownership of the app UI, so the 
  493.56 +	document does not need to destroy it.
  493.57 +
  493.58 +	@return A partially-constructed app UI object. */
  493.59 +	virtual CEikAppUi* CreateAppUiL()=0;
  493.60 +	IMPORT_C virtual CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs);
  493.61 +	IMPORT_C void PrepareToEditL(MApaEmbeddedDocObserver* aObserver,TBool aReadOnly);
  493.62 +	IMPORT_C void PrepareToEditL();
  493.63 +	IMPORT_C void SetAppFileMode(TUint aMode);
  493.64 +	IMPORT_C TUint AppFileMode() const;
  493.65 +	IMPORT_C virtual void UpdateTaskNameL(CApaWindowGroupName* aWgName);
  493.66 +	IMPORT_C const TApaAppCaption& AppCaption() const;
  493.67 +	IMPORT_C void SetChanged(TBool aHasChanged);
  493.68 +	IMPORT_C void SetEditStoreL(CStreamStore* aStore);
  493.69 +	void SetEditStoreWithoutAppUiNotificationL(CStreamStore* aStore);
  493.70 +	inline CStreamStore* EditStore() const;
  493.71 +	IMPORT_C ~CEikDocument();
  493.72 +public: // from MSaveObserver
  493.73 +	IMPORT_C virtual void SaveL(MSaveObserver::TSaveType aSaveType);
  493.74 +public: // from CApaDocument
  493.75 +	IMPORT_C void NewDocumentL();
  493.76 +	IMPORT_C CFileStore* CreateFileStoreLC(RFs& aFs,const TDesC& aFileName);
  493.77 +	IMPORT_C void EditL(MApaEmbeddedDocObserver* aObserver,TBool aReadOnly=EFalse);
  493.78 +	IMPORT_C void PrintL(const CStreamStore& aSourceStore);
  493.79 +	IMPORT_C void SaveL();
  493.80 +	IMPORT_C void StoreL(CStreamStore& aStore,CStreamDictionary& aStreamDic) const;
  493.81 +	IMPORT_C void RestoreL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic);
  493.82 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  493.83 +	IMPORT_C TBool IsEmpty() const;
  493.84 +	IMPORT_C TBool HasChanged() const;
  493.85 +	IMPORT_C virtual void ValidatePasswordL() const; // return EFalse if there *is* a password *and* the user doesn't get it right, ETrue otherwise (ie they get it right or there isn't one). Returns ETrue by default
  493.86 +protected:
  493.87 +	IMPORT_C CEikDocument();
  493.88 +	IMPORT_C CEikDocument(CEikApplication& aApp);
  493.89 +public:
  493.90 +	IMPORT_C virtual void OpenFileL(CFileStore*& aFileStore, RFile& aFile);
  493.91 +private:
  493.92 +	void NullAppUi();
  493.93 +	// reserved functions from CApaDocument
  493.94 +	IMPORT_C virtual void Reserved_2();
  493.95 +protected:
  493.96 +	/** A pointer to the app UI which the document is associated with. */
  493.97 +	CEikAppUi* iAppUi;
  493.98 +	/** A pointer to the file store object which is used to edit the document. */
  493.99 +	CStreamStore* iEditStore;
 493.100 +private:
 493.101 +	TBool iChanged;
 493.102 +	TUint iAppFileMode;
 493.103 +	friend class CEikAppUi;
 493.104 +	};
 493.105 +
 493.106 +/** A pointer to the application process associated with this document.
 493.107 +
 493.108 +@publishedAll
 493.109 +@released */
 493.110 +#define iEikProcess ((CEikProcess*)Process())
 493.111 +
 493.112 +/** A pointer to the application that created this document.
 493.113 +
 493.114 +@publishedAll
 493.115 +@released */
 493.116 +#define iEikApplication ((CEikApplication*)Application())
 493.117 +
 493.118 +/** The default size in twips of icons that represent embedded objects.
 493.119 +
 493.120 +@publishedPartner
 493.121 +@released */
 493.122 +#define KDefaultIconicDoorSize TSize(500,500)
 493.123 +
 493.124 +
 493.125 +/** Gets the file store object which is used to edit the document.
 493.126 +
 493.127 +@return A pointer to the file store object which is used to edit the document. */
 493.128 +inline CStreamStore* CEikDocument::EditStore() const
 493.129 +	{ return(iEditStore); }
 493.130 +
 493.131 +#endif	// __EIKDOC_H__
   494.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   494.2 +++ b/epoc32/include/mw/eikembal.h	Wed Mar 31 12:27:01 2010 +0100
   494.3 @@ -0,0 +1,59 @@
   494.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   494.5 +// All rights reserved.
   494.6 +// This component and the accompanying materials are made available
   494.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   494.8 +// which accompanies this distribution, and is available
   494.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  494.10 +//
  494.11 +// Initial Contributors:
  494.12 +// Nokia Corporation - initial contribution.
  494.13 +//
  494.14 +// Contributors:
  494.15 +//
  494.16 +// Description:
  494.17 +//
  494.18 +
  494.19 +#ifndef __EIKEMBAL_H__
  494.20 +#define __EIKEMBAL_H__
  494.21 +
  494.22 +#include <e32base.h>
  494.23 +#include <f32file.h>
  494.24 +#include <bamdesca.h>
  494.25 +#include <apadef.h>
  494.26 +#include <apaid.h>
  494.27 +
  494.28 +class CEikDocument;
  494.29 +class CApaProcess;
  494.30 +class RApaLsSession;
  494.31 +
  494.32 +
  494.33 +/** Provides a list of all embeddable applications on the device. 
  494.34 +
  494.35 +Hidden applications are omitted from the list. The list is sorted by UID.
  494.36 +
  494.37 +@see TApaAppCapability::iAppIsHidden
  494.38 +@publishedAll 
  494.39 +@released */
  494.40 +class CEikEmbeddableAppList : public CArrayFixFlat<TApaAppInfo>, public MDesCArray
  494.41 +	{
  494.42 +public:
  494.43 +	IMPORT_C CEikEmbeddableAppList();
  494.44 +	IMPORT_C ~CEikEmbeddableAppList();
  494.45 +	IMPORT_C void ConstructL();
  494.46 +	IMPORT_C void ConstructL(const TApaEmbeddabilityFilter& aFilter);
  494.47 +	IMPORT_C CEikDocument* CreateEmbeddedDocumentL(TInt aIndex,CApaProcess* aProcess);
  494.48 +private: // from MDesCArray
  494.49 +	IMPORT_C TInt MdcaCount() const;
  494.50 +	IMPORT_C TPtrC MdcaPoint(TInt aIndex) const;
  494.51 +private: // Reserved methods
  494.52 +	IMPORT_C virtual void CEikEmbeddableAppList_Reserved1();
  494.53 +	IMPORT_C virtual void CEikEmbeddableAppList_Reserved2();
  494.54 +private: // utility methods
  494.55 +	TInt GetAppListL(const TApaEmbeddabilityFilter& aFilter);
  494.56 +	TInt DoGetAppListL(RApaLsSession& aLs, const TApaEmbeddabilityFilter& aFilter);
  494.57 +	void SortAppListL();
  494.58 +private:
  494.59 +	TInt iCEikEmbeddableAppList_Reserved1;
  494.60 +	};
  494.61 +
  494.62 +#endif	// __EIKEMBAL_H__
   495.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   495.2 +++ b/epoc32/include/mw/eikenv.h	Wed Mar 31 12:27:01 2010 +0100
   495.3 @@ -0,0 +1,493 @@
   495.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   495.5 +// All rights reserved.
   495.6 +// This component and the accompanying materials are made available
   495.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   495.8 +// which accompanies this distribution, and is available
   495.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  495.10 +//
  495.11 +// Initial Contributors:
  495.12 +// Nokia Corporation - initial contribution.
  495.13 +//
  495.14 +// Contributors:
  495.15 +//
  495.16 +// Description:
  495.17 +//
  495.18 +
  495.19 +#ifndef __EIKENV_H__
  495.20 +#define __EIKENV_H__
  495.21 +
  495.22 +#include <uikon.hrh>
  495.23 +#include <coemain.h>
  495.24 +#include <coedef.h>
  495.25 +#include <eikdef.h>
  495.26 +#include <gulalign.h>
  495.27 +#include <apaflrec.h>
  495.28 +#include <apacmdln.h>
  495.29 +#include <badesca.h>
  495.30 +#include <baerrhan.h>
  495.31 +#include <gulcolor.h>
  495.32 +#include <eikdgfty.h>
  495.33 +#include <eikaufty.h>
  495.34 +#include <eiklibry.h>
  495.35 +#include <eikamnt.h>
  495.36 +#include <lafmain.h>
  495.37 +#include <eikvcurs.h>
  495.38 +#include <babitflags.h>
  495.39 +#include <eikpicturefactory.h>
  495.40 +
  495.41 +class CEikProcess;
  495.42 +class MEikInfoMsgWin;
  495.43 +class MEikBusyMsgWin;
  495.44 +class CEikAppUi;
  495.45 +class CEikHotKeyTable;
  495.46 +class CCoeControl;
  495.47 +class CParaFormatLayer;
  495.48 +class CCharFormatLayer;
  495.49 +class CCoeBrushAndPenContext;
  495.50 +class CEikCommandButton;
  495.51 +class CPrintSetup;
  495.52 +class CDictionaryStore;
  495.53 +class CApaWindowGroupName;
  495.54 +class CEikErrorIdler;
  495.55 +class CEikApplication;
  495.56 +class MEikInfoDialog;
  495.57 +class MEikAlertWin;
  495.58 +class CEikDialog;
  495.59 +class MEikDebugKeys;
  495.60 +class CEikLibrary;
  495.61 +class MEikAppUiFactory;
  495.62 +class MEikIrFactory;
  495.63 +class CGulIcon;
  495.64 +class CApaMaskedBitmap;
  495.65 +class CEikLogicalBorderProxy;
  495.66 +class CEikLafEnv;
  495.67 +class TLogicalFont;
  495.68 +class CEikPictureFactory;
  495.69 +class CEikEnvExtra;
  495.70 +class TApaApplicationFactory;
  495.71 +class CEikAppServer;
  495.72 +class CLafSystemFont;
  495.73 +class RApaLsSession;
  495.74 +
  495.75 +/**
  495.76 +@publishedAll
  495.77 +@released
  495.78 +*/
  495.79 +typedef void (*TRequestDialogFunc)();
  495.80 +
  495.81 +/**
  495.82 +@internalComponent
  495.83 +*/
  495.84 +const TUid KUikonLibraryUid = {KUidUikonLibraryValue};
  495.85 +
  495.86 +/**
  495.87 +Creates the CEikLibrary interface object by calling the first ordinal function which is mapped to NewL method.
  495.88 +
  495.89 +The function leaves with KErrBadLibraryEntryPoint if the ordinal 1 function 
  495.90 +cannot be found.
  495.91 +
  495.92 +@publishedPartner
  495.93 +@released
  495.94 +*/
  495.95 +typedef CEikLibrary* (*EikLibraryEntryPoint)();
  495.96 +
  495.97 +
  495.98 +/** An environment for creating controls and utility functions for manipulating 
  495.99 +them. 
 495.100 +
 495.101 +Every GUI application is provided with an instance of CEikonEnv 
 495.102 +by the framework, which can be accessed through either CEikonEnv::Static() 
 495.103 +or the iEikonEnv macro of CEikApplication.
 495.104 +
 495.105 +@publishedAll 
 495.106 +@released */
 495.107 +class CEikonEnv : public CCoeEnv
 495.108 +	{
 495.109 +public:
 495.110 +	enum TErrorValidity
 495.111 +		{ EErrorNumValid, EErrorNumInvalid };
 495.112 +public: 
 495.113 +	// Properties
 495.114 +	IMPORT_C static TVersion Version();
 495.115 +	inline static CEikonEnv* Static();
 495.116 +	// Construction and destruction
 495.117 +	IMPORT_C ~CEikonEnv();
 495.118 +	IMPORT_C CEikonEnv();
 495.119 +	IMPORT_C void ConstructL();
 495.120 +	IMPORT_C void ConstructL(TBool aInitialFocusState);
 495.121 +	IMPORT_C void ConstructL(TBool aInitialFocusState, TInt aWindowGroupID);
 495.122 +	IMPORT_C void ConstructAppFromCommandLineL(const TApaApplicationFactory& aApplicationFactory, const CApaCommandLine& aCommandLine);
 495.123 +	IMPORT_C void ControlStackReadyL();
 495.124 +	IMPORT_C void DestroyEnvironment();
 495.125 +	//
 495.126 +	inline CEikAppUi* EikAppUi() const;
 495.127 +	inline CEikProcess* Process() const;
 495.128 +	// Legacy font support (see new TCoeFont and CCoeControl::ScreenFont())
 495.129 +	IMPORT_C const CFont* AnnotationFont() const;
 495.130 +	IMPORT_C const CFont* TitleFont() const;
 495.131 +	IMPORT_C const CFont* LegendFont() const;
 495.132 +	IMPORT_C const CFont* SymbolFont() const;
 495.133 +	IMPORT_C const CFont* DenseFont() const;
 495.134 +	IMPORT_C const CFont* Font(const TLogicalFont& aLogicalFont) const;
 495.135 +	IMPORT_C void UpdateSystemFontsL();
 495.136 +	// System bitmaps
 495.137 +	IMPORT_C const CFbsBitmap* TexturedBitmap() const;			// deprecated
 495.138 +	IMPORT_C const CFbsBitmap* GrayBitmap() const;				// deprecated
 495.139 +	IMPORT_C const CFbsBitmap* OptionBitmap() const;			// deprecated
 495.140 +	IMPORT_C const CFbsBitmap* HighlightedOptionBitmap() const;
 495.141 +	IMPORT_C const CFbsBitmap* OptionMaskBitmap() const;		// deprecated
 495.142 +	IMPORT_C const CFbsBitmap* Bitmap(TUid aUidBmp) const;
 495.143 +public:
 495.144 +	IMPORT_C TBool ConfirmLossOfAllChangesL() const;
 495.145 +	
 495.146 +	IMPORT_C MPictureFactory* PictureFactory() const;
 495.147 +	IMPORT_C MEikPictureFactory* ExtendedPictureFactory(TUid aPictureType) const;
 495.148 +	IMPORT_C void AddPictureFactoryL(MEikPictureFactory& aFactory);
 495.149 +	IMPORT_C void RemovePictureFactory(TUid aFactoryId);
 495.150 +	// Alert dialogs
 495.151 +	IMPORT_C void AlertWin(const TDesC& aMsg);
 495.152 +	IMPORT_C void AlertWin(const TDesC& aMsg1, const TDesC& aMsg2);
 495.153 +	inline const MEikAlertWin* Alert() const;
 495.154 +	IMPORT_C void SetAlertWin(MEikAlertWin* aAlertWin);
 495.155 +	// Error handling
 495.156 +	IMPORT_C void LeaveWithInfoMsg(TInt aResourceId,...);
 495.157 +	IMPORT_C void LeaveWithErrorContext(TInt aError, const TDesC& aContextText);		// deprecated
 495.158 +	IMPORT_C void GetErrorText(TDes& aDes,TInt aError) const;
 495.159 +	IMPORT_C TErrorValidity GetErrorText(TDes& aErrorText, TInt aError, TUid aAppUid) const;
 495.160 +	IMPORT_C TErrorValidity GetErrorTextAndTitle(TDes& aErrorText, TInt aError, TDes& aTitleText) const;
 495.161 +	IMPORT_C void ResolveError(TInt aError, TUid aAppUid = KNullUid) const;
 495.162 +	IMPORT_C void NotifyIdleErrorWhileRedrawing(TInt aError);
 495.163 +	IMPORT_C void NotifyIdleError(TInt aError, TInt aContextResourceId);
 495.164 +	IMPORT_C void HandleErrorWithContext(TInt aError,TInt aContextResourceId);
 495.165 +	// Info prints
 495.166 +	IMPORT_C void InfoMsg(const TDesC& aDes);
 495.167 +	IMPORT_C void InfoMsgWithAlignment(TGulAlignment aCorner,const TDesC& aDes);
 495.168 +	IMPORT_C void InfoMsg(TInt aResourceId, ...);
 495.169 +	IMPORT_C void InfoMsg(TInt aResourceId, VA_LIST aList);
 495.170 +	IMPORT_C void InfoMsgWithAlignment(TGulAlignment aCorner, TInt aResourceId,...);
 495.171 +	IMPORT_C void InfoMsgWithAlignment(TGulAlignment aCorner, TInt aResourceId, VA_LIST aList);
 495.172 +	IMPORT_C void InfoMsgWithDuration(const TDesC& aDes, TTimeIntervalMicroSeconds32 aDuration);
 495.173 +	IMPORT_C void InfoMsgWithDuration(TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, ...);
 495.174 +	IMPORT_C void InfoMsgWithDuration(TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, VA_LIST aList);
 495.175 +	IMPORT_C void InfoMsgWithAlignmentAndDuration(TGulAlignment aCorner, const TDesC& aDes, TTimeIntervalMicroSeconds32 aDuration);
 495.176 +	IMPORT_C void InfoMsgWithAlignmentAndDuration(TGulAlignment aCorner, TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, ...);
 495.177 +	IMPORT_C void InfoMsgWithAlignmentAndDuration(TGulAlignment aCorner, TInt aResourceId, TTimeIntervalMicroSeconds32 aDuration, VA_LIST aList);
 495.178 +	IMPORT_C void InfoMsgCancel();
 495.179 +	IMPORT_C void VerboseInfoMsg(const TDesC& aDes);
 495.180 +	IMPORT_C void SetVerboseInfoReporting(TBool aVerbose);	// deprecated
 495.181 +	// Busy messages
 495.182 +	IMPORT_C void BusyMsgL(const TDesC& aDes);
 495.183 +	IMPORT_C void BusyMsgL(const TDesC& aDes, TGulAlignment aCorner);
 495.184 +	IMPORT_C void BusyMsgL(TInt aResourceId);
 495.185 +	IMPORT_C void BusyMsgL(const TDesC& aDes, TTimeIntervalMicroSeconds32 aInitialDelay);
 495.186 +	IMPORT_C void BusyMsgL(const TDesC& aDes, TGulAlignment aCorner, TTimeIntervalMicroSeconds32 aInitialDelay);
 495.187 +	IMPORT_C void BusyMsgL(TInt aResourceId, TTimeIntervalMicroSeconds32 aInitialDelay);
 495.188 +	IMPORT_C void BusyMsgCancel();
 495.189 +	// Query dialogs
 495.190 +	IMPORT_C static TBool QueryWinL(const TDesC& aFirstLine, const TDesC& aSecondLine);
 495.191 +	IMPORT_C TBool QueryWinL(TInt aFirstLineId, TInt aSecondLineId = 0) const;
 495.192 +	IMPORT_C void SetQueryDialog(MEikInfoDialog* aQueryDialog);
 495.193 +	IMPORT_C void SetRequestQueryDialogFunc(TRequestDialogFunc aQueryDialogFunc);
 495.194 +	// Info dialogs
 495.195 +	IMPORT_C static void InfoWinL(const TDesC& aFirstLine, const TDesC& aSecondLine);
 495.196 +	IMPORT_C void InfoWinL(TInt aFirstLineId, TInt aSecondLineId = 0) const;
 495.197 +	IMPORT_C void SetInfoDialog(MEikInfoDialog* aInfoDialog);
 495.198 +	IMPORT_C void SetRequestInfoDialogFunc(TRequestDialogFunc aInfoDialogFunc);
 495.199 +	IMPORT_C void AllocInfoMsg();
 495.200 +	IMPORT_C void WservAllocInfoMsg();
 495.201 +	IMPORT_C void FservAllocInfoMsg();
 495.202 +	// Sound notificatons
 495.203 +	IMPORT_C static void Beep();	// deprecated
 495.204 +	// Bitmap  utilities
 495.205 +	IMPORT_C CWsBitmap* CreateBitmapL(const TDesC& aFileName, TInt aId);
 495.206 +	IMPORT_C CWsBitmap* CreateBitmapL(const TDesC& aFileName, TInt aId, TBool aShowDlgIfErr);
 495.207 +	IMPORT_C CGulIcon* CreateIconL(const TDesC& aFileName, TInt aBitmapId, TInt aMaskId = KErrNotFound);
 495.208 +	IMPORT_C static CGulIcon* CreateIconFromMaskedBitmapL(const CApaMaskedBitmap& aApaMaskedBitmap);
 495.209 +	// Debugging
 495.210 +	IMPORT_C void SetDebugKeys(MEikDebugKeys* aDebugKeys);
 495.211 +	// Menu utilities
 495.212 +	IMPORT_C void LaunchPopupMenuL(TInt aResourceId, const TPoint& aTargetPos, TPopupTargetPosType aTargetType = EPopupTargetTopLeft, const CEikHotKeyTable* aHotKeyTable = NULL);
 495.213 +	// Graphical effects
 495.214 +	IMPORT_C static void AddWindowShadow(CCoeControl* aWinArea);
 495.215 +	IMPORT_C RAnimDll& ClockDllL();
 495.216 +	// Text formatting parameters
 495.217 +	IMPORT_C CParaFormatLayer* SystemSingleLineParaFormatLayerL();
 495.218 +	IMPORT_C CParaFormatLayer* SystemParaFormatLayerL();
 495.219 +	IMPORT_C CCharFormatLayer* SystemCharFormatLayerL();
 495.220 +	IMPORT_C static CParaFormatLayer* NewDefaultSingleLineParaFormatLayerL();
 495.221 +	IMPORT_C static CParaFormatLayer* NewDefaultParaFormatLayerL();
 495.222 +	IMPORT_C static CCharFormatLayer* NewDefaultCharFormatLayerL();
 495.223 +  	// Control stack utilities
 495.224 +	IMPORT_C void AddDialogLikeControlToStackL(CCoeControl* aControl);
 495.225 +	IMPORT_C void AddAlertDialogLikeControlToStackL(CCoeControl* aControl);
 495.226 +	IMPORT_C void RemoveFromStack(CCoeControl* aControl);
 495.227 +	IMPORT_C void AddSleepingDialogToStackL(CCoeControl* aControl);
 495.228 +	IMPORT_C void AddSleepingAlertDialogToStackL(CCoeControl* aControl);
 495.229 +	IMPORT_C void RouseSleepingDialog(CCoeControl* aControl, TBool aRoused);
 495.230 +	// Text cursors
 495.231 +	IMPORT_C void DrawCursor(const CCoeControl* aControl, const TPoint& aPosition, TInt aWidth);
 495.232 +	IMPORT_C void DrawCursor(const CCoeControl* aControl, const TPoint& aPosition, TInt aWidth, TInt aAscent, TInt aHeight);
 495.233 +	IMPORT_C void HideCursor(const CCoeControl* aControl);
 495.234 +	// Virtual pointer device cursor
 495.235 +	IMPORT_C TEikVirtualCursor& VirtualCursor();
 495.236 +	// Control of the application's ordinal position
 495.237 +	IMPORT_C void BringForwards(TBool aForwards, TInt aPriority = ECoeWinPriorityAlwaysAtFront);
 495.238 +	IMPORT_C void SetAutoForwarding(TBool aAutoBringToForeground);
 495.239 +	// 
 495.240 +	IMPORT_C TPtrC KeyPressLabel(TInt aIndex) const;	// deprecated
 495.241 +	// Printing
 495.242 +	IMPORT_C CPrintSetup* NewDefaultPrintSetupL();
 495.243 +	IMPORT_C static void GetPrinterNamesL(CPrinterModelList* aModelNameList, CDesCArray& aPrinterNameList);
 495.244 +	// Application properties
 495.245 +	IMPORT_C void UpdateTaskNameL();
 495.246 +	IMPORT_C void SetBusy(TBool aBusy);
 495.247 +	IMPORT_C TBool IsBusy() const;
 495.248 +	IMPORT_C void SetSystem(TBool aSystem);
 495.249 +	IMPORT_C TBool IsSystem() const;
 495.250 +	IMPORT_C void SetDocNameIsAFile(TBool aDocNameIsAFile);
 495.251 +	IMPORT_C TBool DocNameIsAFile() const;
 495.252 +	IMPORT_C void SetRespondsToShutdownEvent(TBool aRespondsToShutdownEvent);
 495.253 +	IMPORT_C TBool RespondsToShutdownEvent() const;
 495.254 +	IMPORT_C void SetRespondsToSwitchFilesEvent(TBool aRespondsToSwitchFilesEvent);
 495.255 +	IMPORT_C TBool RespondsToSwitchFilesEvent() const;
 495.256 +	// Task list dialog
 495.257 +	IMPORT_C void DisplayTaskList();
 495.258 +	IMPORT_C void DismissTaskList();
 495.259 +public: // Internal (for Symbian and partners only)
 495.260 +	// Dialog factories
 495.261 +	inline MEikCDlgDialogFactory* CDlgDialogFactory() const;
 495.262 +	inline MEikPrintDialogFactory* PrintDialogFactory() const;
 495.263 +	inline MEikFileDialogFactory* FileDialogFactory() const;
 495.264 +	inline MEikIrFactory* IrFactory() const;
 495.265 +	inline void SetCDlgDialogFactory(MEikCDlgDialogFactory* aDialogFactory);
 495.266 +	inline void SetPrintDialogFactory(MEikPrintDialogFactory* aDialogFactory);
 495.267 +	inline void SetFileDialogFactory(MEikFileDialogFactory* aDialogFactory);
 495.268 +	inline void SetIrFactory(MEikIrFactory* aIrFactory);
 495.269 +	CArrayFix<TCreateByTypeFunction>* ControlFactoryFuncArray() const;
 495.270 +	// Color scheme
 495.271 +	inline CColorList& ColorList() const;
 495.272 +	inline TRgb Color(TLogicalColor aLogicalColor) const;
 495.273 +	inline void SetColor(TLogicalColor aLogicalColor, TRgb aColor);
 495.274 +	IMPORT_C TRgb ControlColor(TLogicalColor aLogicalColor,const CCoeControl& aControl) const;
 495.275 +	inline CColorArray& CustomColorArray() const;
 495.276 +	IMPORT_C CColorList* CreateSystemColorListL();
 495.277 +	IMPORT_C CColorList* CreateSystemColorListL(const CColorList& aColorList);
 495.278 +	IMPORT_C void UpdateSystemColorListL(const CColorList& aColorList);
 495.279 +	IMPORT_C CColorList* PopulateColorArrayL();
 495.280 +	// Library loading and unloading
 495.281 +	IMPORT_C TInt AddLibraryL(TCreateByTypeFunction aControlFactory, TFileName* aResourceFile);
 495.282 +	inline TInt AddLibraryL(TCreateByTypeFunction aControlFactory);
 495.283 +	inline TInt AddLibraryL(TFileName* aResourceFile);
 495.284 +	IMPORT_C void RemoveLibrary(TCreateByTypeFunction aControlFactory, TInt aResourceFileOffset);
 495.285 +	inline void RemoveLibrary(TCreateByTypeFunction aControlFactory);
 495.286 +	inline void RemoveLibrary(TInt aResourceFileOffset);
 495.287 +	// Legacy UI utilities
 495.288 +	inline TChar NudgeCharMinus() const;
 495.289 +	inline TChar NudgeCharPlus() const;
 495.290 +	// Status pane
 495.291 +	inline TInt StatusPaneCoreResId() const;
 495.292 +	inline void SetStatusPaneCoreResId(TInt aStatusPaneCoreResId);
 495.293 +	// Auto menus
 495.294 +	IMPORT_C void AddAutoMenuTitleL(CEikAutoMenuTitle* aTitle);
 495.295 +	inline CEikAutoMenuTitleArray* AutoMenuTitleArray() const;
 495.296 +	// Display mode
 495.297 +	IMPORT_C TDisplayMode DefaultDisplayMode() const;
 495.298 +public: // internal
 495.299 +	IMPORT_C MLafEnv& LafEnv() const;				// deprecated
 495.300 +	inline TInt EditableControlStandardHeight() const;
 495.301 +	IMPORT_C void SendEventToEikonServer(TInt aEvent,const TAny* aPtr,TInt aLength);
 495.302 +	// Object factories
 495.303 +	IMPORT_C MEikAppUiFactory* AppUiFactory() const;
 495.304 +	IMPORT_C MEikAppUiFactory* AppUiFactory(const CEikAppUi& aAppUi) const;
 495.305 +	IMPORT_C void SetAppUiFactoryL(MEikAppUiFactory* aAppUiFactory);
 495.306 +	IMPORT_C void AddAppUiFactoryL(MEikAppUiFactory* aAppUiFactory);
 495.307 +	IMPORT_C void RemoveAppUiFactory();
 495.308 +public: // Internal. Do not use!
 495.309 +	IMPORT_C void SetExtension(CBase* aExtension);	// deprecated
 495.310 +	inline CBase* Extension() const;				// deprecated
 495.311 +	IMPORT_C void HandleError(TInt aError);
 495.312 +	IMPORT_C void WriteInternalStateOfStackedControlsL();
 495.313 +	IMPORT_C void DoGetErrorText(TDes& aDes,TInt aError) const;
 495.314 +	IMPORT_C TErrorValidity DoGetErrorTextAndTitle(TDes& aErrorText, TInt aError, TInt& aTextId, TUint& aFlags, TDes& aTitleText, TBool aIsMemoryAllocatedByErrResolver = EFalse) const;
 495.315 +	void InitSystemBitmapsL();
 495.316 +	void UpdateColorListL();
 495.317 +	void PostAppUiInitializeL();
 495.318 +	TLanguage ApplicationLanguage() const;
 495.319 +	void PostAppUiDestroy();
 495.320 +private:
 495.321 +	IMPORT_C virtual void CEikonEnv_Reserved_1();
 495.322 +	IMPORT_C virtual void CEikonEnv_Reserved_2();
 495.323 +	IMPORT_C virtual void CEikonEnv_Reserved_3();
 495.324 +	IMPORT_C virtual void CEikonEnv_Reserved_4();
 495.325 +	IMPORT_C virtual void CEikonEnv_Reserved_5();	
 495.326 +private: // framework functions
 495.327 +	IMPORT_C void DestroyScreen();
 495.328 +	IMPORT_C void InitSystemFontsL();
 495.329 +	IMPORT_C TInt ResourceFileVersionNumber() const;
 495.330 +public:
 495.331 +	IMPORT_C MEikInfoDialog* QueryDialog() const;
 495.332 +	IMPORT_C MEikInfoDialog* InfoDialog() const;
 495.333 +public:
 495.334 +	IMPORT_C CEikAppServer* AppServer() const;
 495.335 +	IMPORT_C TBool StartedAsServerApp() const;
 495.336 +protected:
 495.337 +	friend class CEikServAppUi;
 495.338 +private: // Internal
 495.339 +	void InitSystemResourceFileL();
 495.340 +	void InitPrivateResourceFileL();
 495.341 +	void InitInfoMsgL();
 495.342 +	void PrepareBusyMsgL();
 495.343 +	void InitAlertWinL();
 495.344 +	void InitDebugKeysL();
 495.345 +	TErrorHandlerResponse PrepareToHandleError(TInt aError);
 495.346 +	void DoHandleError(TErrorHandlerResponse aType);
 495.347 +	static TInt IdleErrorCallBack(TAny* aThis);
 495.348 +	void InitColorSchemeL();
 495.349 +	void LoadParserListL();
 495.350 +	void LoadLibrariesL();
 495.351 +	void CloseLibraries();
 495.352 +	TRequestDialogFunc RequestQueryDialogFunc();
 495.353 +	TRequestDialogFunc RequestInfoDialogFunc();
 495.354 +	void SetAppReady();
 495.355 +public:
 495.356 +	TBool IsEiksrvThread() const;
 495.357 +private:
 495.358 +	TBool InfoWinOrQueryWinL(TInt aFirstLineId,TInt aSecondLineId,TBool aIsQueryWin=EFalse) const;
 495.359 +	void SetCommandLineDebugMemFailL(const CApaCommandLine& aCommandLine);
 495.360 +	void StoreAppLanguageL(const RApaLsSession& aLsSession);
 495.361 +	void ErrorContextL(TInt aError,const TDesC& aContextText);
 495.362 +private:
 495.363 +	IMPORT_C virtual void CEikonEnv_Reserved_6();
 495.364 +	IMPORT_C virtual void CEikonEnv_Reserved_7();
 495.365 +	IMPORT_C virtual void CEikonEnv_Reserved_8();
 495.366 +	IMPORT_C virtual void CEikonEnv_Reserved_9();
 495.367 +	IMPORT_C virtual void CEikonEnv_Reserved_10();	
 495.368 +private:
 495.369 +	NONSHARABLE_CLASS(TEikAppUiFactory)
 495.370 +		{
 495.371 +	public:
 495.372 +		MEikAppUiFactory* iFactory;
 495.373 +		CEikAppUi* iAppUi;
 495.374 +		};
 495.375 +private:
 495.376 +	TBitFlags iEikonEnvFlags;
 495.377 +	TInt iForwardsCount;
 495.378 +	TInt iBusyCount;
 495.379 +	CEikProcess* iProcess;
 495.380 +	RAnimDll* iClockDll;
 495.381 +	CArrayPtr<CLafSystemFont>* iFontArray;
 495.382 +	MEikInfoMsgWin* iInfoMsgWin;
 495.383 +	MEikBusyMsgWin* iBusyMsgWin;
 495.384 +	MEikAlertWin* iAlertWin;
 495.385 +	TInt iSystemResourceFileOffset;
 495.386 +	HBufC8* iKeyPressLabels;
 495.387 +	CParaFormatLayer* iSingleLineParaFormatLayer;
 495.388 +	CParaFormatLayer* iParaFormatLayer;
 495.389 +	CCharFormatLayer* iCharFormatLayer;
 495.390 +	const CCoeControl* iCursorWindow;
 495.391 +	TInt iEditableControlStandardHeight;
 495.392 +	CApaWindowGroupName* iWgName;
 495.393 +	CEikErrorIdler* iErrorIdler;
 495.394 +	TInt iPrivateResourceFileOffset;
 495.395 +	CColorList* iColorList;
 495.396 +	CEikPictureFactory* iPictureFactory;
 495.397 +	TBuf<2> iNudgeChars;
 495.398 +	MEikInfoDialog* iQueryDialog;
 495.399 +	MEikInfoDialog* iInfoDialog;
 495.400 +	TRequestDialogFunc	iQueryDialogFunc;
 495.401 +	TRequestDialogFunc	iInfoDialogFunc;
 495.402 +	CArrayFix<TCreateByTypeFunction>* iControlFactoryFuncArray;
 495.403 +	CArrayFix<TInt>* iResourceFileOffsetArray;
 495.404 +	TBool iAlertWinInitialized;
 495.405 +	MEikDebugKeys* iDebugKeys;
 495.406 +	MEikCDlgDialogFactory* iCDlgDialogFactory;
 495.407 +	MEikPrintDialogFactory* iPrintDialogFactory;
 495.408 +	MEikFileDialogFactory* iFileDialogFactory;
 495.409 +	CArrayFix<TEikAppUiFactory>* iAppUiFactoryArray;
 495.410 +	MEikIrFactory* iIrFactory;
 495.411 +	CArrayPtr<CEikLibrary>* iLibraries;
 495.412 +	TInt iEmbeddedAppLevel;
 495.413 +	TInt iAutoLoadedResourceFiles;
 495.414 +	TInt iAutoLoadedControlFactories;
 495.415 +	CBase* iExtension;
 495.416 +	TInt iStatusPaneCoreResId;
 495.417 +	CEikAutoMenuTitleArray* iAutoMenuTitleArray;
 495.418 +	TEikVirtualCursor iVirtualCursor;
 495.419 +	CEikLogicalBorderProxy* iLogicalBorderProxy;
 495.420 +	CEikLafEnv* iLafEnv;
 495.421 +	CArrayPtrFlat<CFbsBitmap>* iBitmapArray;
 495.422 +	CEikEnvExtra* iEikEnvExtra; // used to be TInt iSpare1;
 495.423 +	HBufC* iOOMErrorText;		// used to be TInt iSpare2;
 495.424 +	TInt iSpare3;
 495.425 +	};
 495.426 +
 495.427 +
 495.428 +/** Interface for launching a dialog with a title and a message, for instance a 
 495.429 +query dialog.
 495.430 +
 495.431 +Dialogs implementing this interface can be passed to CEikonEnv::SetQueryDialog() 
 495.432 +or CEikonEnv::SetInfoDialog(). 
 495.433 +
 495.434 +@publishedAll
 495.435 +@released */
 495.436 +class MEikInfoDialog
 495.437 +	{
 495.438 +public:
 495.439 +	/** Initialises and executes the dialog.
 495.440 +	
 495.441 +	@param aResource The ID of the DIALOG resource that identifies the dialog's 
 495.442 +	type. For instance, a query dialog (with Yes/No buttons) or an info dialog 
 495.443 +	(with a Continue button).
 495.444 +	@param aTitle The dialog's title.
 495.445 +	@param aMsg The message to display in the dialog.
 495.446 +	@return True if the Confirm button (or equivalent) was pressed, false if the 
 495.447 +	dialog was cancelled. */
 495.448 +	virtual TBool RunDlgLD(TInt aResource, const TDesC& aTitle, const TDesC& aMsg) = 0;
 495.449 +	};
 495.450 +
 495.451 +
 495.452 +/**
 495.453 +@publishedPartner
 495.454 +@released
 495.455 +*/
 495.456 +class MEikAlertWin
 495.457 +	{
 495.458 +public:
 495.459 +	virtual void ConstructL() = 0;
 495.460 +	virtual void RunAlert(const TDesC& aTitle, const TDesC& aMsg) = 0;
 495.461 +	virtual void Release() = 0;
 495.462 +	virtual CEikDialog* AsEikDialog() = 0;
 495.463 +	inline const CEikDialog* AsEikDialog() const;
 495.464 +	IMPORT_C virtual CCoeControl* AsCoeControl();
 495.465 +	inline const CCoeControl* AsCoeControl() const;
 495.466 +private:
 495.467 +	IMPORT_C virtual void MEikAlertWin_Reserved2();
 495.468 +	IMPORT_C virtual void MEikAlertWin_Reserved3();
 495.469 +	};
 495.470 +
 495.471 +
 495.472 +/**
 495.473 +@publishedPartner 
 495.474 +@released 
 495.475 +*/
 495.476 +class MEikDebugKeys
 495.477 +	{
 495.478 +public:
 495.479 +	virtual void ConstructL() = 0;
 495.480 +	virtual void Release() = 0;
 495.481 +private:
 495.482 +	IMPORT_C virtual void MEikDebugKeys_Reserved1();
 495.483 +	IMPORT_C virtual void MEikDebugKeys_Reserved2();
 495.484 +	IMPORT_C virtual void MEikDebugKeys_Reserved3();
 495.485 +	};
 495.486 +
 495.487 +
 495.488 +IMPORT_C void InternalizeL(TEikPortFlag& aThing,RReadStream& aStream);
 495.489 +inline RWriteStream& operator<<(RWriteStream& aStream,const TEikPortFlag& aThing)
 495.490 +	{aStream.WriteUint8L(aThing);return aStream;}
 495.491 +inline RReadStream& operator>>(RReadStream& aStream,TEikPortFlag& aThing)
 495.492 +	{InternalizeL(aThing,aStream);return aStream;}
 495.493 +
 495.494 +#include <eikenv.inl>
 495.495 +
 495.496 +#endif	// __EIKENV_H__
   496.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   496.2 +++ b/epoc32/include/mw/eikenv.inl	Wed Mar 31 12:27:01 2010 +0100
   496.3 @@ -0,0 +1,194 @@
   496.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   496.5 +// All rights reserved.
   496.6 +// This component and the accompanying materials are made available
   496.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   496.8 +// which accompanies this distribution, and is available
   496.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  496.10 +//
  496.11 +// Initial Contributors:
  496.12 +// Nokia Corporation - initial contribution.
  496.13 +//
  496.14 +// Contributors:
  496.15 +//
  496.16 +// Description:
  496.17 +//
  496.18 +
  496.19 +
  496.20 +
  496.21 +/**
  496.22 + Gets the CEikonEnv maintained by the framework for the application. 
  496.23 + 
  496.24 + This function should never be run in a thread where such a static Uikon environment 
  496.25 + does not exist. Code that may run on the server side of an application server 
  496.26 + is one such case.
  496.27 + 
  496.28 + @return A static CEikonEnv. 
  496.29 + @see CCoeEnv::Static() 
  496.30 +*/
  496.31 +inline CEikonEnv* CEikonEnv::Static()
  496.32 +	{ return((CEikonEnv*)(CCoeEnv::Static())); }
  496.33 +
  496.34 +/**
  496.35 +@publishedPartner
  496.36 +@released
  496.37 +*/
  496.38 +inline TInt CEikonEnv::EditableControlStandardHeight() const
  496.39 +	{ return(iEditableControlStandardHeight); }
  496.40 +
  496.41 +/** Gets the Uikon process that manages the files of applications started in this 
  496.42 +environment.
  496.43 +
  496.44 +@return The CEikProcess object. */
  496.45 +inline CEikProcess* CEikonEnv::Process() const
  496.46 +	{ return(iProcess); }
  496.47 +
  496.48 +/** Gets the application UI of the application using this CEikonEnv.
  496.49 +
  496.50 +@return Pointer to the CEikAppUi. */
  496.51 +inline CEikAppUi* CEikonEnv::EikAppUi() const
  496.52 +	{ return((CEikAppUi*)iAppUi); }
  496.53 +inline const MEikAlertWin* CEikonEnv::Alert() const
  496.54 +	{ return(iAlertWin); }
  496.55 +
  496.56 +/** Gets the minus nudge character, this could be the left arrow for example. 
  496.57 +
  496.58 +@return Minus nudge character. */
  496.59 +inline TChar CEikonEnv::NudgeCharMinus() const
  496.60 +	{return(iNudgeChars[0]);}
  496.61 +
  496.62 +/** Gets the plus nudge character, this could be the right arrow for example.
  496.63 +
  496.64 +@return Plus nudge character. */
  496.65 +inline TChar CEikonEnv::NudgeCharPlus() const
  496.66 +	{return(iNudgeChars[1]);}
  496.67 +
  496.68 +/** Gets the physical (TRgb) colour which corresponds to a logical colour.
  496.69 +
  496.70 +@param aLogicalColor A logical colour value. 
  496.71 +@return The physical colour which corresponds to aLogicalColor. */
  496.72 +inline TRgb CEikonEnv::Color(TLogicalColor aLogicalColor) const
  496.73 +	{return ColorList().Color(aLogicalColor); }
  496.74 +
  496.75 +/** Gets the custom colour array.
  496.76 +
  496.77 +@return The custom colour array. */
  496.78 +inline CColorArray& CEikonEnv::CustomColorArray() const
  496.79 +	{return *(ColorList().ColorArray(TUid::Uid(KEikCustomColorsArrayValue)));}
  496.80 +
  496.81 +/** Gets the application's colour list. 
  496.82 +
  496.83 +The colour list provides member functions to retrieve and modify colours 
  496.84 +in the list, and to append new arrays of colours to the colour list.
  496.85 +
  496.86 +@return The application's colour list */
  496.87 +inline CColorList& CEikonEnv::ColorList() const
  496.88 +	{__ASSERT_DEBUG(iColorList,User::Invariant()); return *iColorList; }
  496.89 +
  496.90 +/** Sets a mapping in the application's colour list between the logical and physical 
  496.91 +colours specified.
  496.92 +
  496.93 +@param aLogicalColor A logical colour value. 
  496.94 +@param aColor A physical colour value. */
  496.95 +inline void CEikonEnv::SetColor(TLogicalColor aLogicalColor, TRgb aColor)
  496.96 +	{ ColorList().SetColor(aLogicalColor, aColor); }
  496.97 +
  496.98 +/**
  496.99 +@publishedPartner
 496.100 +@released
 496.101 +*/
 496.102 +inline void CEikonEnv::SetCDlgDialogFactory(MEikCDlgDialogFactory* aDialogFactory)
 496.103 +	{iCDlgDialogFactory=aDialogFactory;}
 496.104 +
 496.105 +/**
 496.106 +@publishedPartner
 496.107 +@released
 496.108 +*/
 496.109 +inline void CEikonEnv::SetPrintDialogFactory(MEikPrintDialogFactory* aDialogFactory)
 496.110 +	{iPrintDialogFactory=aDialogFactory;}
 496.111 +
 496.112 +/**
 496.113 +@publishedPartner
 496.114 +@released
 496.115 +*/
 496.116 +inline void CEikonEnv::SetFileDialogFactory(MEikFileDialogFactory* aDialogFactory)
 496.117 +	{iFileDialogFactory=aDialogFactory;}
 496.118 +
 496.119 +/**
 496.120 +@publishedPartner
 496.121 +@released
 496.122 +*/
 496.123 +inline void CEikonEnv::SetIrFactory(MEikIrFactory* aIrFactory)
 496.124 +	{iIrFactory=aIrFactory;}
 496.125 +
 496.126 +/**
 496.127 +@publishedPartner
 496.128 +@released
 496.129 +*/
 496.130 +inline MEikCDlgDialogFactory* CEikonEnv::CDlgDialogFactory() const
 496.131 +	{return iCDlgDialogFactory;}
 496.132 +
 496.133 +/**
 496.134 +@publishedPartner
 496.135 +@released
 496.136 +*/
 496.137 +inline MEikPrintDialogFactory* CEikonEnv::PrintDialogFactory() const
 496.138 +	{return iPrintDialogFactory;}
 496.139 +
 496.140 +/**
 496.141 +@publishedPartner
 496.142 +@released
 496.143 +*/
 496.144 +inline MEikFileDialogFactory* CEikonEnv::FileDialogFactory() const
 496.145 +	{return iFileDialogFactory;}
 496.146 +
 496.147 +/**
 496.148 +@publishedPartner
 496.149 +@released
 496.150 +*/
 496.151 +inline MEikIrFactory* CEikonEnv::IrFactory() const
 496.152 +	{return iIrFactory;}
 496.153 +
 496.154 +
 496.155 +inline TInt CEikonEnv::AddLibraryL(TCreateByTypeFunction aControlFactory)
 496.156 +	{return(AddLibraryL(aControlFactory, NULL));}
 496.157 +inline TInt CEikonEnv::AddLibraryL(TFileName* aResourceFile)
 496.158 +	{return(AddLibraryL(NULL, aResourceFile));}
 496.159 +inline void CEikonEnv::RemoveLibrary(TCreateByTypeFunction aControlFactory)
 496.160 +	{RemoveLibrary(aControlFactory, NULL);}
 496.161 +inline void CEikonEnv::RemoveLibrary(TInt aResourceFileOffset)
 496.162 +	{RemoveLibrary(NULL, aResourceFileOffset);}
 496.163 +
 496.164 +
 496.165 +/**
 496.166 +@publishedPartner
 496.167 +@deprecated
 496.168 +*/
 496.169 +inline CBase* CEikonEnv::Extension() const
 496.170 +	{return iExtension;}
 496.171 +
 496.172 +/**
 496.173 +@publishedPartner
 496.174 +@released
 496.175 +*/
 496.176 +inline TInt CEikonEnv::StatusPaneCoreResId() const
 496.177 +	{return iStatusPaneCoreResId;}
 496.178 +
 496.179 +/**
 496.180 +@publishedPartner
 496.181 +@released
 496.182 +*/
 496.183 +inline void CEikonEnv::SetStatusPaneCoreResId(TInt aStatusPaneCoreResId)
 496.184 +	{iStatusPaneCoreResId=aStatusPaneCoreResId;}
 496.185 +
 496.186 +/**
 496.187 +@publishedPartner
 496.188 +@released
 496.189 +*/
 496.190 +inline CEikAutoMenuTitleArray* CEikonEnv::AutoMenuTitleArray() const
 496.191 +	{return iAutoMenuTitleArray;}
 496.192 +
 496.193 +inline const CEikDialog* MEikAlertWin::AsEikDialog() const
 496.194 +	{return (const CEikDialog*)const_cast<MEikAlertWin*>(this)->AsEikDialog();}
 496.195 +
 496.196 +inline const CCoeControl* MEikAlertWin::AsCoeControl() const
 496.197 +	{return (const CCoeControl*)const_cast<MEikAlertWin*>(this)->AsCoeControl();}
   497.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   497.2 +++ b/epoc32/include/mw/eikfctry.h	Wed Mar 31 12:27:01 2010 +0100
   497.3 @@ -0,0 +1,70 @@
   497.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   497.5 +// All rights reserved.
   497.6 +// This component and the accompanying materials are made available
   497.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   497.8 +// which accompanies this distribution, and is available
   497.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  497.10 +//
  497.11 +// Initial Contributors:
  497.12 +// Nokia Corporation - initial contribution.
  497.13 +//
  497.14 +// Contributors:
  497.15 +//
  497.16 +// Description:
  497.17 +//
  497.18 +
  497.19 +#ifndef __EIKFCTRY_H__
  497.20 +#define __EIKFCTRY_H__
  497.21 +
  497.22 +#include <e32def.h>
  497.23 +
  497.24 +class CCoeControl;
  497.25 +
  497.26 +/** Flags to determine the control status.
  497.27 +
  497.28 +@publishedPartner
  497.29 +@released
  497.30 +*/
  497.31 +enum
  497.32 +	{
  497.33 +	/** Flag to determine whether a control has ears. Ears are triangular buttons
  497.34 +	for moving forwards or backwards through the list. */
  497.35 +	EEikControlHasEars=0x01,
  497.36 +	/** Flag to determine whether the control is unable to receive keyboard focus. */
  497.37 +	EEikControlIsNonFocusing=0x02,
  497.38 +	/** Flag to determine whether the control is higher than a normal control. */
  497.39 +	EEikControlHasExtraAscent=0x04,
  497.40 +	/** Flag to determine if a control should be placed directly
  497.41 +	 in the view/dialog or if it should be placed in a pop-out control. */
  497.42 +	EEikControlIsNonEditInPlace=0x08
  497.43 +	};
  497.44 +
  497.45 +/** Structure to hold the control specific information. It is used by 
  497.46 +EikControlFactory.
  497.47 +
  497.48 +@see EikControlFactory
  497.49 +@publishedAll
  497.50 +@released
  497.51 +*/
  497.52 +struct SEikControlInfo
  497.53 +    {
  497.54 +    CCoeControl* iControl;
  497.55 +	TInt iTrailerTextId;
  497.56 +    TInt iFlags;
  497.57 +    };
  497.58 +
  497.59 +
  497.60 +/** Abstract factory that creates controls by type. 
  497.61 +
  497.62 +This class provides a unified way to create controls according to the 
  497.63 +specified control integer ID. 
  497.64 +
  497.65 +@publishedAll 
  497.66 +@released */
  497.67 +class EikControlFactory
  497.68 +	{
  497.69 +public:
  497.70 +    IMPORT_C static SEikControlInfo CreateByTypeL(TInt aControlType);
  497.71 +	};
  497.72 +
  497.73 +#endif	// __EIKFCTRY_H__
   498.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   498.2 +++ b/epoc32/include/mw/eikfutil.h	Wed Mar 31 12:27:01 2010 +0100
   498.3 @@ -0,0 +1,315 @@
   498.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   498.5 +// All rights reserved.
   498.6 +// This component and the accompanying materials are made available
   498.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   498.8 +// which accompanies this distribution, and is available
   498.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  498.10 +//
  498.11 +// Initial Contributors:
  498.12 +// Nokia Corporation - initial contribution.
  498.13 +//
  498.14 +// Contributors:
  498.15 +//
  498.16 +// Description:
  498.17 +//
  498.18 +
  498.19 +#ifndef __EIKFUTIL_H__
  498.20 +#define __EIKFUTIL_H__
  498.21 +
  498.22 +#include <e32std.h>
  498.23 +#include <f32file.h>
  498.24 +#include <badesca.h>
  498.25 +#include <bautils.h>
  498.26 +#include <eikenv.h>
  498.27 +
  498.28 +class CFont;
  498.29 +class CBaflFileSortTable;
  498.30 +class TResourceReader;
  498.31 +
  498.32 +
  498.33 +/** Provides a set of drive, path and file utility functions.
  498.34 +
  498.35 +This class is essentially a thin layer over the BaflUtils class.
  498.36 +
  498.37 +@publishedAll 
  498.38 +@released */
  498.39 +NONSHARABLE_CLASS(EikFileUtils)
  498.40 +	{ 
  498.41 +public:
  498.42 +	inline static TBool PathExists(const TDesC& aPath);
  498.43 +	inline static TInt IsFolder(const TDesC& aFullName, TBool& aIsFolder);
  498.44 +	inline static TBool FolderExists(const TDesC& aFolderName);
  498.45 +	inline static TFileName FolderNameFromFullName(const TDesC& aFullName);
  498.46 +	inline static TFileName DriveAndPathFromFullName(const TDesC& aFullName);
  498.47 +	inline static TFileName RootFolderPath(const TBuf<1> aDriveLetter);
  498.48 +	inline static void AbbreviateFileName(const TFileName& aOriginalFileName, TDes& aAbbreviatedFileName);
  498.49 +	IMPORT_C static TFileName AbbreviatePath(TDesC& aPathName, const CFont& aFont, TInt aMaxWidthInPixels);
  498.50 +	inline static TBool UidTypeMatches(const TUidType& aFileUid, const TUidType& aMatchUid);
  498.51 +	inline static TInt Parse(const TDesC& aName);
  498.52 +	IMPORT_C static TFileName ValidateFolderNameTypedByUserL(const TDesC& aFolderNameTypedByUser, const TDesC& aCurrentPath);
  498.53 +	inline static TInt CopyFile(const TDesC& aSourceFullName, const TDesC& aTargetFullName, TUint aSwitch = CFileMan::EOverWrite);
  498.54 +	inline static TInt RenameFile(const TDesC& aOldFullName, const TDesC& aNewFullName, TUint aSwitch = CFileMan::EOverWrite);
  498.55 +	inline static TInt DeleteFile(const TDesC& aSourceFullName, TUint aSwitch=0);
  498.56 +	inline static TInt CheckWhetherFullNameRefersToFolder(const TDesC& aFullName, TBool& aIsFolder);
  498.57 +	inline static TInt MostSignificantPartOfFullName(const TDesC& aFullName, TFileName& aMostSignificantPart);
  498.58 +	inline static TInt CheckFolder(const TDesC& aFolderName);
  498.59 +	inline static TInt DiskIsReadOnly(const TDesC& aFullName, TBool& aIsReadOnly);
  498.60 +	inline static void UpdateDiskListL(const RFs& aFs,CDesCArray& aArray,TBool aIncludeRom,TDriveNumber aDriveNumber);
  498.61 +	inline static void RemoveSystemDirectory(CDir& aDir);
  498.62 +	inline static TBool IsFirstDriveForSocket(TDriveUnit aDriveUnit);
  498.63 +	inline static TInt SortByTable(CDir& aDir,CBaflFileSortTable* aTable);
  498.64 +private:
  498.65 +	EikFileUtils();
  498.66 +	};
  498.67 +
  498.68 +
  498.69 +/** Tests whether a path exists.
  498.70 +
  498.71 +@param aPath The path to check. 
  498.72 +@return ETrue if the path exists, EFalse otherwise. */
  498.73 +inline TBool EikFileUtils::PathExists(const TDesC& aPath)
  498.74 +	{	return BaflUtils::PathExists(CEikonEnv::Static()->FsSession(),aPath);	}
  498.75 +
  498.76 +/** Tests whether aFullName is a folder.
  498.77 +
  498.78 +@param aFullName The drive and path to test. 
  498.79 +@param aIsFolder On return, indicates whether aFullName is a folder. 
  498.80 +@return KErrNone if successful otherwise another of the system-wide error codes. */
  498.81 +inline TInt EikFileUtils::IsFolder(const TDesC& aFullName, TBool& aIsFolder)
  498.82 +	{	return BaflUtils::IsFolder(CEikonEnv::Static()->FsSession(), aFullName,aIsFolder);	}
  498.83 +
  498.84 +/** Tests whether a specified folder exists. 
  498.85 +
  498.86 +This returns a boolean value indicating whether the folder exists: see also 
  498.87 +CheckFolder() which returns an error code instead.
  498.88 +
  498.89 +@param aFolderName The folder's path.
  498.90 +@return ETrue if the folder exists, EFalse if not. */
  498.91 +inline TBool EikFileUtils::FolderExists(const TDesC& aFolderName)
  498.92 +	{	return BaflUtils::FolderExists(CEikonEnv::Static()->FsSession(), aFolderName);	}
  498.93 +
  498.94 +/** Gets a folder name from a path and file name.
  498.95 +
  498.96 +@param aFullName The full path and file name from which the folder will be 
  498.97 +obtained. 
  498.98 +@return Folder name */
  498.99 +inline TFileName EikFileUtils::FolderNameFromFullName(const TDesC& aFullName)
 498.100 +	{	return BaflUtils::FolderNameFromFullName(aFullName);	}
 498.101 +
 498.102 +/** Parses the specified full path and file name to obtain the drive and path.
 498.103 +
 498.104 +@param aFullName The full path and file name from which the drive and path 
 498.105 +will be obtained. 
 498.106 +@return The drive and path. */
 498.107 +inline TFileName EikFileUtils::DriveAndPathFromFullName(const TDesC& aFullName)
 498.108 +	{ 	return BaflUtils::DriveAndPathFromFullName(aFullName);	}
 498.109 +
 498.110 +/** Gets the root folder for the specified drive.
 498.111 +
 498.112 +@param aDriveLetter The drive letter, C for example. 
 498.113 +@return The root folder for the drive, C:\ for example. */
 498.114 +inline TFileName EikFileUtils::RootFolderPath(const TBuf<1> aDriveLetter)
 498.115 +	{	return BaflUtils::RootFolderPath(aDriveLetter);	}
 498.116 +
 498.117 +/** Abbreviates a file name.
 498.118 +
 498.119 +If aOriginalFileName is less than the maximum length of aAbbreviatedFileName, 
 498.120 +then the name is simply copied to aAbbreviatedFileName.
 498.121 +
 498.122 +If this is not the case, then the left-most characters of aOriginalFileName are 
 498.123 +copied to aAbbreviatedFileName, up to aAbbreviatedFileName's maximum length-1 and 
 498.124 +aAbbreviatedFileName's first character is set to be an ellipsis.
 498.125 +
 498.126 +For example, if c:\\home\\letters\\abcdef is the original file name and aAbbreviatedFileName 
 498.127 +allows only 7 characters, the abbreviated file name will be ...abcdef. 
 498.128 +This can be used to display a file or folder name in an error or progress 
 498.129 +dialog.
 498.130 +
 498.131 +@param aOriginalFileName Original file name. 
 498.132 +@param aAbbreviatedFileName On return, the abbreviated file name. */
 498.133 +inline void EikFileUtils::AbbreviateFileName(const TFileName& aOriginalFileName, TDes& aAbbreviatedFileName)
 498.134 +	{	BaflUtils::AbbreviateFileName(aOriginalFileName,aAbbreviatedFileName);	}
 498.135 +
 498.136 +/** Tests whether two UID types match.
 498.137 +
 498.138 +A match is made if each UID in aMatchUid is either identical to the corresponding 
 498.139 +one in aFileUid, or is KNullUid.
 498.140 +
 498.141 +@param aFileUid The UID type to match. 
 498.142 +@param aMatchUid The UID type to match against. 
 498.143 +@return ETrue if the UIDs match, EFalse if not. */
 498.144 +inline TBool EikFileUtils::UidTypeMatches(const TUidType& aFileUid, const TUidType& aMatchUid)
 498.145 +	{	return BaflUtils::UidTypeMatches(aFileUid,aMatchUid);	}
 498.146 +
 498.147 +/** Tests whether a specified file name can be parsed.
 498.148 +
 498.149 +@param aName The file name to parse.
 498.150 +@return KErrNone if the filename can be parsed, otherwise one 
 498.151 +of the system-wide error codes. 
 498.152 +@see TParse */
 498.153 +inline TInt EikFileUtils::Parse(const TDesC& aName)
 498.154 +	{	return BaflUtils::Parse(aName);	}
 498.155 +
 498.156 +/** Copies the specified file.
 498.157 +
 498.158 +Notes:
 498.159 +
 498.160 +- files can be copied across drives
 498.161 +
 498.162 +- open files can be copied only if they have been opened using the EFileShareReadersOnly 
 498.163 +file share mode
 498.164 +
 498.165 +- the source file's attributes are preserved in the target file
 498.166 +
 498.167 +@param aSourceFullName Path indicating the file(s) to be copied. Any path 
 498.168 +components which are not specified here will be taken from the session path. 
 498.169 +@param aTargetFullName Path indicating the directory into which the file(s) 
 498.170 +are to be copied. 
 498.171 +@param aSwitch Optional switch to allow overwriting files with the same name 
 498.172 +in the target directory, or recursion. By default, this function operates with 
 498.173 +overwriting and non-recursively. Switch options are defined using the enum TSwitch. 
 498.174 +If recursive operation is set, any intermediate directories are created. If no overwriting 
 498.175 +is set, any files with the same name are not overwritten, and an error is returned 
 498.176 +for that file.
 498.177 +@return KErrNone if the copy is successful, otherwise another of the system-wide 
 498.178 +error codes. */
 498.179 +inline TInt EikFileUtils::CopyFile(const TDesC& aSourceFullName, const TDesC& aTargetFullName, TUint aSwitch)
 498.180 +	{	return BaflUtils::CopyFile(CEikonEnv::Static()->FsSession(),aSourceFullName,aTargetFullName,aSwitch);	}
 498.181 +
 498.182 +/** Renames one or more files or directories. 
 498.183 +
 498.184 +This can also be used to move files by specifying different destination and 
 498.185 +source directories, but note that the destination and source directories must be 
 498.186 +on the same drive.
 498.187 +
 498.188 +If moving files, you can set aSwitch so that any files with the same name 
 498.189 +that exist in the target directory are overwritten. If aSwitch is set for 
 498.190 +no overwriting, any files with the same name are not overwritten, and an error 
 498.191 +(KErrAlreadyExists) is returned for that file.
 498.192 +
 498.193 +This function can only operate non-recursively, so that only the matching 
 498.194 +files located in the single directory specified by aOldFullName may be renamed.
 498.195 +
 498.196 +Read-only, system and hidden files may be renamed or moved, and the source 
 498.197 +file's attributes are preserved in the target file, but attempting to rename 
 498.198 +or move an open file will return an error for that file.
 498.199 +
 498.200 +@param aOldFullName Path specifying the file or directory to be renamed. 
 498.201 +@param aNewFullName Path specifying the new name for the file or directory. 
 498.202 +Any directories specified in this path which do not exist will be created. 
 498.203 +@param aSwitch Optional, sets whether files are overwritten on the target. 
 498.204 +@return KErrNone if successful otherwise another of the system-wide error codes. */
 498.205 +inline TInt EikFileUtils::RenameFile(const TDesC& aOldFullName, const TDesC& aNewFullName, TUint aSwitch)
 498.206 +	{	return BaflUtils::RenameFile(CEikonEnv::Static()->FsSession(),aOldFullName,aNewFullName,aSwitch);	}
 498.207 +
 498.208 +/** Deletes one or more files.
 498.209 +
 498.210 +This function may operate recursively or non-recursively. When operating non-recursively, 
 498.211 +only the matching files located in the directory specified in aSourceFullName 
 498.212 +are affected. When operating recursively, all matching files in the directory 
 498.213 +hierarchy below the directory specified in aSourceFullName are deleted.
 498.214 +
 498.215 +Attempting to delete read-only or open files returns an error.
 498.216 +
 498.217 +@param aSourceFullName Path indicating the file(s) to be deleted. This can 
 498.218 +either be a full path, or a path relative to the session path. Use wildcards 
 498.219 +to specify more than one file. 
 498.220 +@param aSwitch Determines whether this function operates recursively. By default, 
 498.221 +this function operates non-recursively. 
 498.222 +@return KErrNone if aSourceFullName is successfully deleted, otherwise another 
 498.223 +of the system-wide error codes. */
 498.224 +inline TInt EikFileUtils::DeleteFile(const TDesC& aSourceFullName, TUint aSwitch)
 498.225 +	{	return BaflUtils::DeleteFile(CEikonEnv::Static()->FsSession(), aSourceFullName,aSwitch);	}
 498.226 +
 498.227 +/** Tests whether a file specification is a valid folder name.
 498.228 +
 498.229 +@param aFullName The string to check. 
 498.230 +@param aIsFolder True if aFullName is a valid folder name, otherwise false.
 498.231 +@return KErrNone if successful, otherwise another of the system-wide error codes 
 498.232 +(probably because aFullName cannot be parsed). */
 498.233 +inline TInt EikFileUtils::CheckWhetherFullNameRefersToFolder(const TDesC& aFullName, TBool& aIsFolder)
 498.234 +	{	return BaflUtils::CheckWhetherFullNameRefersToFolder(aFullName,aIsFolder);	}
 498.235 +
 498.236 +/** Gets the folder name if the specified item is a valid folder name, otherwise gets the file name.
 498.237 +
 498.238 +@param aFullName Item to parse. 
 498.239 +@param aMostSignificantPart On return, the folder or file name.
 498.240 +@return KErrNone if successful otherwise another of the system-wide error codes. */
 498.241 +inline TInt EikFileUtils::MostSignificantPartOfFullName(const TDesC& aFullName, TFileName& aMostSignificantPart)
 498.242 +	{	return BaflUtils::MostSignificantPartOfFullName(aFullName,aMostSignificantPart);	}
 498.243 +
 498.244 +/** Tests whether the specified folder exists and can be opened.
 498.245 +
 498.246 +This returns an error code if the folder does not exist: see also FolderExists() 
 498.247 +which returns a boolean value.
 498.248 +
 498.249 +@param aFolderName The folder's name and path. 
 498.250 +@return KErrNone if aFolderName exists, otherwise another of the system-wide 
 498.251 +error codes. */
 498.252 +inline TInt EikFileUtils::CheckFolder(const TDesC& aFolderName)
 498.253 +	{	return BaflUtils::CheckFolder(CEikonEnv::Static()->FsSession(),aFolderName);	}
 498.254 +
 498.255 +/** Tests whether the specified drive is read-only.
 498.256 +
 498.257 +@param aFullName File name, including drive. 
 498.258 +@param aIsReadOnly On return, true if the drive is read-only, otherwise false. 
 498.259 +@return KErrNone if successful otherwise another of the system-wide error codes. */
 498.260 +inline TInt EikFileUtils::DiskIsReadOnly(const TDesC& aFullName, TBool& aIsReadOnly)	
 498.261 +	{	return BaflUtils::DiskIsReadOnly(CEikonEnv::Static()->FsSession(),aFullName,aIsReadOnly);	}
 498.262 +
 498.263 +/** Gets a list of all drives present on the system.
 498.264 +
 498.265 +The file server is interrogated for a list of the drive letters for all available 
 498.266 +drives. The drive letter that corresponds to aDriveNumber is added to the list 
 498.267 +regardless of whether it is present, or is corrupt. Also, the C: drive and the 
 498.268 +primary partitions on removable media slots are forced onto the list, even if 
 498.269 +corrupt or not present.
 498.270 +
 498.271 +@param aFs A connected session with the file server. 
 498.272 +@param aArray On return, contains the drive letters that correspond to the available 
 498.273 +drives. The drive letters are uppercase and are in alphabetical order. 
 498.274 +@param aIncludeRom ETrue if the ROM is included as a drive, EFalse otherwise. 
 498.275 +@param aDriveNumber The drive to force into the list, e.g. the drive in the default 
 498.276 +path. */
 498.277 +inline void EikFileUtils::UpdateDiskListL(const RFs& aFs,CDesCArray& aArray,TBool aIncludeRom,TDriveNumber aDriveNumber)
 498.278 +	{	BaflUtils::UpdateDiskListL(aFs,aArray,aIncludeRom,aDriveNumber);	}
 498.279 +
 498.280 +/** Removes the System directory from a list of directory entries.
 498.281 +
 498.282 +@param aDir Array of directory entries. */
 498.283 +inline void EikFileUtils::RemoveSystemDirectory(CDir& aDir)
 498.284 +	{	BaflUtils::RemoveSystemDirectory(aDir);	}
 498.285 +
 498.286 +/** Tests whether the specified drive corresponds to the primary partition 
 498.287 +in a removable media slot.
 498.288 +
 498.289 +Note that the function assumes that the D: drive corresponds to the primary 
 498.290 +partition on socket 0, and that the E: drive corresponds to the primary 
 498.291 +partition on socket 1 (a socket is a slot for removable media). This mapping 
 498.292 +may not always be the case because it is set up in the variant layer of Symbian 
 498.293 +OS. 
 498.294 +
 498.295 +@param aDriveUnit The drive to check. 
 498.296 +@return True if the drive is the primary partition in a removable media 
 498.297 +slot. True is also returned if the drive is C:. False is returned otherwise. */
 498.298 +inline TBool EikFileUtils::IsFirstDriveForSocket(TDriveUnit aDriveUnit)
 498.299 +	{	return BaflUtils::IsFirstDriveForSocket(aDriveUnit);	}
 498.300 +
 498.301 +/** Sorts files by UID.
 498.302 +
 498.303 +The caller supplies a table which specifies the order in which files are to be sorted. 
 498.304 +The files whose UID3 is the first UID in the table appear first. The files whose UID3 
 498.305 +is the UID specified second appear next, and so on. Files whose UID3 is not specified 
 498.306 +in the table, and directories, appear at the end of the list, with directories preceding 
 498.307 +the files, and with files sorted in ascending order of UID3.
 498.308 +
 498.309 +This function is used for customising how lists of application files are sorted.
 498.310 +
 498.311 +@param aDir The array of files and directories to sort. 
 498.312 +@param aTable A sort order table containing the UIDs to use in the sort. 
 498.313 +@return KErrNone if successful otherwise another of the system-wide error codes. */
 498.314 +inline TInt EikFileUtils::SortByTable(CDir& aDir,CBaflFileSortTable* aTable)
 498.315 +	{	return BaflUtils::SortByTable(aDir,aTable);	}
 498.316 +
 498.317 +
 498.318 +#endif	// __EIKFUTIL_H__
   499.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   499.2 +++ b/epoc32/include/mw/eikmobs.h	Wed Mar 31 12:27:01 2010 +0100
   499.3 @@ -0,0 +1,125 @@
   499.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   499.5 +// All rights reserved.
   499.6 +// This component and the accompanying materials are made available
   499.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   499.8 +// which accompanies this distribution, and is available
   499.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  499.10 +//
  499.11 +// Initial Contributors:
  499.12 +// Nokia Corporation - initial contribution.
  499.13 +//
  499.14 +// Contributors:
  499.15 +//
  499.16 +// Description:
  499.17 +//
  499.18 +
  499.19 +#ifndef __EIKMOBS_H__
  499.20 +#define __EIKMOBS_H__
  499.21 +
  499.22 +#include <eikcmobs.h>
  499.23 +#include <w32std.h>
  499.24 +#include <coedef.h>
  499.25 +
  499.26 +class CCoeControl;
  499.27 +class CEikMenuPane;
  499.28 +class CEikMenuBar;
  499.29 +class CEikHotKeyTable;
  499.30 +class TPoint;
  499.31 +
  499.32 +/** Menu observer interface.
  499.33 +
  499.34 +Menu observers cooperate with menu bars and menu panes, initialising them 
  499.35 +before display and responding to menu events appropriately. CEikAppUi implements 
  499.36 +MEikMenuObserver, so these functions may be implemented on an application's 
  499.37 +App UI.
  499.38 +
  499.39 +@publishedAll
  499.40 +@released */
  499.41 +class MEikMenuObserver : public MEikCommandObserver
  499.42 +	{
  499.43 +public:
  499.44 +	/** Menu types */
  499.45 +	enum TMenuType
  499.46 +		{
  499.47 +		/** Menu pane. */
  499.48 +		EMenuPane,
  499.49 +		/** Menu bar. */
  499.50 +		EMenuBar
  499.51 +		};
  499.52 +public:
  499.53 +	IMPORT_C virtual void HandleAttemptDimmedSelectionL(TInt aCommandId);
  499.54 +	IMPORT_C virtual TBool CheckHotKeyNotDimmedL(TInt aCommandId);
  499.55 +	IMPORT_C virtual void RestoreMenuL(CCoeControl* aMenuControl,TInt aResourceId,TMenuType aType);
  499.56 +	IMPORT_C virtual void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
  499.57 +	IMPORT_C virtual void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar);
  499.58 +	IMPORT_C virtual void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,TInt aModifiers,const CEikHotKeyTable* aTable);
  499.59 +	IMPORT_C virtual void OfferKeyToAppL(const TKeyEvent& aKeyEvent,TEventCode aType);
  499.60 +	/** Called by the Uikon framework to handle the emphasising or de-emphasising of 
  499.61 +	a menu window. 
  499.62 +	
  499.63 +	CEikMenuBar objects call this on their observer to emphasise 
  499.64 +	themselves when they are displayed, and de-emphasise themselves when they 
  499.65 +	stop displaying.
  499.66 +	
  499.67 +	@param aMenuControl The menu control.
  499.68 +	@param aEmphasis ETrue to emphasize the menu, EFalse otherwise. */
  499.69 +	virtual void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis)=0;
  499.70 +public:
  499.71 +	IMPORT_C virtual CCoeControl* CreateCustomCommandControlL(TInt aControlType);
  499.72 +protected:
  499.73 +	IMPORT_C MEikMenuObserver();
  499.74 +private:
  499.75 +	IMPORT_C virtual void Reserved_1_MenuObserver();
  499.76 +	IMPORT_C virtual void Reserved_2_MenuObserver();
  499.77 +private: // from MEikCommandObserver. do not override!
  499.78 +	IMPORT_C void MEikCommandObserver_Reserved1();
  499.79 +	IMPORT_C void MEikCommandObserver_Reserved2();
  499.80 +private:
  499.81 +	TInt iMEikMenuObserver_Spare1;
  499.82 +	};
  499.83 +
  499.84 +
  499.85 +/** Provides additional functionality to an auto menu title, in the form of an 
  499.86 +OfferHotKeyL() method, which is not required in the normal MEikMenuObserver.
  499.87 + 
  499.88 +Auto menu titles are used to ensure that some menu panes appear in every menu 
  499.89 +constructed for an application. 
  499.90 +
  499.91 +@publishedAll 
  499.92 +@released */
  499.93 +class MEikAutoMenuObserver : public MEikMenuObserver
  499.94 +	{
  499.95 +public:
  499.96 +	/** Offers the specified hot key to the auto menu title.
  499.97 +	
  499.98 +	Implement this function if you expect to handle any events from an auto menu. 
  499.99 +	
 499.100 +	@param aKeyEvent The key event.
 499.101 +	@param aType The type of key event.
 499.102 +	@return The auto menu title's response. */
 499.103 +	virtual TKeyResponse OfferHotKeyL(const TKeyEvent& aKeyEvent,TEventCode aType)=0;
 499.104 +public: // from MEikMenuObserver
 499.105 +	IMPORT_C void SetEmphasis(CCoeControl* aMenuControl,TBool aEmphasis);
 499.106 +public: 
 499.107 +	IMPORT_C virtual void HandleAttemptDimmedSelectionL(TInt aCommandId);
 499.108 +	IMPORT_C virtual TBool CheckHotKeyNotDimmedL(TInt aCommandId);
 499.109 +	IMPORT_C virtual void RestoreMenuL(CCoeControl* aMenuControl,TInt aResourceId,TMenuType aType);
 499.110 +	IMPORT_C virtual void DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane);
 499.111 +	IMPORT_C virtual void DynInitMenuBarL(TInt aResourceId,CEikMenuBar* aMenuBar);
 499.112 +	IMPORT_C virtual void HandleSideBarMenuL(TInt aResourceId,const TPoint& aPos,TInt aModifiers,const CEikHotKeyTable* aTable);
 499.113 +	IMPORT_C virtual void OfferKeyToAppL(const TKeyEvent& aKeyEvent,TEventCode aType);
 499.114 +	IMPORT_C virtual CCoeControl* CreateCustomCommandControlL(TInt aControlType);
 499.115 +protected:
 499.116 +	IMPORT_C MEikAutoMenuObserver();
 499.117 +private:
 499.118 +	IMPORT_C virtual void Reserved_1_MenuObserver();
 499.119 +	IMPORT_C virtual void Reserved_2_MenuObserver();
 499.120 +private: // from MEikCommandObserver. do not override!
 499.121 +	IMPORT_C void MEikCommandObserver_Reserved1();
 499.122 +	IMPORT_C void MEikCommandObserver_Reserved2();
 499.123 +private:
 499.124 +	TInt iMEikAutoMenuObserver_Spare1;
 499.125 +	};
 499.126 +
 499.127 +
 499.128 +#endif	// __EIKMOBS_H__
   500.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   500.2 +++ b/epoc32/include/mw/eikmsg.h	Wed Mar 31 12:27:01 2010 +0100
   500.3 @@ -0,0 +1,148 @@
   500.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   500.5 +// All rights reserved.
   500.6 +// This component and the accompanying materials are made available
   500.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   500.8 +// which accompanies this distribution, and is available
   500.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  500.10 +//
  500.11 +// Initial Contributors:
  500.12 +// Nokia Corporation - initial contribution.
  500.13 +//
  500.14 +// Contributors:
  500.15 +//
  500.16 +// Description:
  500.17 +//
  500.18 +
  500.19 +#ifndef __EIKMSG_H__
  500.20 +#define __EIKMSG_H__
  500.21 +
  500.22 +#include <clock.h>
  500.23 +#include <gulalign.h>
  500.24 +
  500.25 +#include <eikinfomsgwin.h>
  500.26 +#include <eikbusymsgwin.h>
  500.27 +
  500.28 +class CCoeControl;
  500.29 +class CEikonEnv;
  500.30 +class RWindowGroup;
  500.31 +class CEikResourceChange;
  500.32 +
  500.33 +
  500.34 +/** Base class providing functions to construct and display an information message. 
  500.35 +
  500.36 +@publishedAll
  500.37 +@released */
  500.38 +class CEikMsgWin : public CBase
  500.39 +	{
  500.40 +protected:
  500.41 +	IMPORT_C CEikMsgWin(CEikonEnv& aEikonEnv);
  500.42 +public:
  500.43 +	IMPORT_C void ConstructL(RWindowGroup& aWindowGroup);
  500.44 +	IMPORT_C virtual ~CEikMsgWin();
  500.45 +	IMPORT_C void StartDisplay(const TDesC& aText, TGulAlignment aCorner);
  500.46 +	IMPORT_C void CancelDisplay();
  500.47 +private:
  500.48 +	IMPORT_C virtual void CEikMsgWin_Reserved1();
  500.49 +	IMPORT_C virtual void CEikMsgWin_Reserved2();
  500.50 +protected:
  500.51 +	TDes& PrepareDisplay(TDes& aText, TGulAlignment aCorner);
  500.52 +private:
  500.53 +	virtual void DoStartDisplay(const TDesC& aText)=0;
  500.54 +protected:
  500.55 +	/** A CEikonEnv*, which all applications have. This is required for construction 
  500.56 +	of a CEikMsgWin as it provides access to services which the message window 
  500.57 +	needs, the window server session for example. */
  500.58 +	CEikonEnv& iEikonEnv_; // the underscore is to prevent a name clash with the iEikonEnv #define
  500.59 +	/** An empty control required for construction of a blank window. This defines 
  500.60 +	a handle back to the client side object, which is only required if you need 
  500.61 +	to later initiate client side drawing. */
  500.62 +	CCoeControl* iDummy;
  500.63 +	/** The window in which the message will be drawn. */
  500.64 +	RBlankWindow* iBlankWindow;
  500.65 +	/** An RAnim derived class, which is responsible for interacting with server side 
  500.66 +	classes to provide the message window's animation on the screen. It is constructed 
  500.67 +	by passing in the RWindowBase which it will use to draw its contents to, and 
  500.68 +	also a handle to an animation DLL, which provides the animation functionality. */
  500.69 +	RMessageWindow* iMessageWindow;
  500.70 +private:
  500.71 +	CEikResourceChange* iResourceChange;
  500.72 +	TInt iCEikMsgWin_Spare1;
  500.73 +	};
  500.74 +
  500.75 +/**
  500.76 +@publishedAll
  500.77 +@released
  500.78 +*/
  500.79 +const TInt KEikInfoMsgMaxLen=RMessageWindow::EMaxTextLength;
  500.80 +
  500.81 +/** Specifies the maximum length of the message buffer. 
  500.82 +
  500.83 +@publishedAll
  500.84 +@released */
  500.85 +typedef TBuf<KEikInfoMsgMaxLen> TEikInfoMsgBuf;
  500.86 +
  500.87 +class CEikInfoMsgWin : public CEikMsgWin, public MEikInfoMsgWin
  500.88 +/** Enables construction of an information message window. 
  500.89 +
  500.90 +@publishedAll 
  500.91 +@released */
  500.92 +	{
  500.93 +public:
  500.94 +	IMPORT_C void ConstructL(RWindowGroup& aWindowGroup, TInt aParam = 0);
  500.95 +	IMPORT_C CEikInfoMsgWin(CEikonEnv& aEikonEnv);
  500.96 +public:  //from MEikInfoMsgWin
  500.97 +	IMPORT_C void StartDisplaySpecifyingDuration(const TDesC& aText, TGulAlignment aCorner, TTimeIntervalMicroSeconds32 aDuration);	
  500.98 +	IMPORT_C void StartDisplay(const TDesC& aText, TGulAlignment aCorner);
  500.99 +	IMPORT_C void CancelDisplay();
 500.100 +	IMPORT_C void Release();
 500.101 +private:
 500.102 +	virtual void DoStartDisplay(const TDesC& aText);
 500.103 +	IMPORT_C virtual void CEikInfoMsgWin_Reserved1();
 500.104 +	IMPORT_C virtual void CEikInfoMsgWin_Reserved2();
 500.105 +private: // From CEikMsgWin. do not override!
 500.106 +	IMPORT_C void CEikMsgWin_Reserved1();
 500.107 +	IMPORT_C void CEikMsgWin_Reserved2();
 500.108 +private:
 500.109 +	TInt iCEikInfoMsgWin_Spare1;
 500.110 +	};
 500.111 +
 500.112 +
 500.113 +/**
 500.114 +@publishedAll
 500.115 +@released
 500.116 +*/
 500.117 +const TInt KEikBusyMsgMaxLen=RMessageWindow::EMaxTextLength;
 500.118 +
 500.119 +/**
 500.120 +@publishedAll
 500.121 +@released
 500.122 +*/
 500.123 +typedef TBuf<KEikBusyMsgMaxLen> TEikBusyMsgBuf;
 500.124 +
 500.125 +/** 
 500.126 +@publishedAll 
 500.127 +@released
 500.128 +*/
 500.129 +class CEikBusyMsgWin : public CEikMsgWin, public MEikBusyMsgWin
 500.130 +	{
 500.131 +public:
 500.132 +	IMPORT_C void ConstructL(RWindowGroup& aWindowGroup);
 500.133 +	IMPORT_C CEikBusyMsgWin(CEikonEnv& aEikonEnv);
 500.134 +public:   //from MEikBusyMsgWin
 500.135 +	IMPORT_C void StartDisplaySpecifyingInitialDelay(const TDesC& aText, TGulAlignment aCorner, TTimeIntervalMicroSeconds32 aInitialDelay);
 500.136 +	IMPORT_C void StartDisplay(const TDesC& aText, TGulAlignment aCorner);
 500.137 +	IMPORT_C void Release();
 500.138 +private:
 500.139 +	IMPORT_C virtual void CEikBusyMsgWin_Reserved1();
 500.140 +	IMPORT_C virtual void CEikBusyMsgWin_Reserved2();
 500.141 +private: // From CEikMsgWin. do not override!
 500.142 +	IMPORT_C void CEikMsgWin_Reserved1();
 500.143 +	IMPORT_C void CEikMsgWin_Reserved2();
 500.144 +private:
 500.145 +	virtual void DoStartDisplay(const TDesC& aText);
 500.146 +private:
 500.147 +	TTimeIntervalMicroSeconds32 iInitialDelay;
 500.148 +	TInt iCEikBusyMsgWin_Spare1;
 500.149 +	};
 500.150 +
 500.151 +#endif	// __EIKMSG_H__
   501.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   501.2 +++ b/epoc32/include/mw/eiknotapi.h	Wed Mar 31 12:27:01 2010 +0100
   501.3 @@ -0,0 +1,270 @@
   501.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   501.5 +// All rights reserved.
   501.6 +// This component and the accompanying materials are made available
   501.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   501.8 +// which accompanies this distribution, and is available
   501.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  501.10 +//
  501.11 +// Initial Contributors:
  501.12 +// Nokia Corporation - initial contribution.
  501.13 +//
  501.14 +// Contributors:
  501.15 +//
  501.16 +// Description:
  501.17 +//
  501.18 +
  501.19 +#ifndef __EIKNOTAPI_H__
  501.20 +#define __EIKNOTAPI_H__
  501.21 +
  501.22 +#include <e32std.h>
  501.23 +#include <e32base.h>
  501.24 +#include <f32file.h>
  501.25 +
  501.26 +/** Defines the second Uid value for plug in notifier DLLs. 
  501.27 +
  501.28 +@publishedAll
  501.29 +@released */
  501.30 +const TUid KUidNotifierPlugIn = {0x10005522}; 
  501.31 +const TUid KUidNotifierPlugInV2 = {0x101fdfae};
  501.32 +
  501.33 +/**
  501.34 +@publishedAll
  501.35 +@released
  501.36 +*/
  501.37 +enum TEikNotExtStatus
  501.38 +	{
  501.39 +	EEikNotExtRequestCompleted = 0,
  501.40 +	EEikNotExtRequestQueued = 1
  501.41 +	};
  501.42 +
  501.43 +/** The Uid that identifies a screen change event.
  501.44 +
  501.45 +@see MEikSrvNotifierBase2::HandleSystemEventL() 
  501.46 +@internalTechnology */
  501.47 +const TUid KUidEventScreenModeChanged = {0x101F3648};
  501.48 +
  501.49 +/** A set of flags that define the capabilities of the notifier.
  501.50 +
  501.51 +Capabilities are returned by calling MEikSrvNotifierBase2::NotifierCapabilites(). 
  501.52 +
  501.53 +@publishedAll
  501.54 +@released */
  501.55 +enum TNotifierCapabilities
  501.56 +	{
  501.57 +	/** The notifier has no special capabilities. */
  501.58 +	ENoSpecialCapabilities			= 0x00000000,
  501.59 +	/** The notifier can handle a change to the screen device. */
  501.60 +	EScreenDeviceChangeSupported	= 0x00000001,
  501.61 +	};
  501.62 +	
  501.63 +/** 
  501.64 +Interface to allow notifiers to manage their own startup/shutdown.  This class is likely to be of most
  501.65 +interest to notifiers that observe engines using publically available APIs rather than those that are run
  501.66 +via RNotifier.
  501.67 +
  501.68 +@publishedAll
  501.69 +@released 
  501.70 +*/
  501.71 +class MEikSrvNotifierManager
  501.72 +	{
  501.73 +public:
  501.74 +	virtual void StartNotifierL(TUid aNotifierUid, const TDesC8& aBuffer, TDes8& aResponse) = 0;
  501.75 +	virtual void CancelNotifier(TUid aNotifierUid) = 0;
  501.76 +	virtual void UpdateNotifierL(TUid aNotifierUid, const TDesC8& aBuffer, TDes8& aResponse) = 0;
  501.77 +protected:
  501.78 +	IMPORT_C MEikSrvNotifierManager();
  501.79 +private:
  501.80 +	IMPORT_C virtual void MEikSrvNotifierManager_Reserved1();
  501.81 +	IMPORT_C virtual void MEikSrvNotifierManager_Reserved2();
  501.82 +private:
  501.83 +	TInt iMEikSrvNotifierManager_Spare1;
  501.84 +	};
  501.85 +
  501.86 +
  501.87 +/** Interface to a plug-in server side notifier.
  501.88 +
  501.89 +Any number of MEikSrvNotifierBase2 objects can be included in a single DLL. 
  501.90 +All notifiers are loaded during device startup and are not destroyed until 
  501.91 +the Uikon server closes down.
  501.92 +
  501.93 +All notifiers run in the uikon server thread so are able to directly access 
  501.94 +server side status panes but cannot call any functions on REikAppUiSession. 
  501.95 +
  501.96 +@publishedAll
  501.97 +@released */
  501.98 +class MEikSrvNotifierBase2
  501.99 +	{
 501.100 +public:
 501.101 +	/** Defines a set of notifier priorities. The use and application of these values 
 501.102 +	is implementation-dependent. */
 501.103 +	enum TNotifierPriority
 501.104 +		{
 501.105 +		/** The highest priority value. */
 501.106 +		ENotifierPriorityAbsolute = 500,
 501.107 +		/** The second highest priority value. */
 501.108 +		ENotifierPriorityVHigh = 400,	
 501.109 +		/** The third highest priority value. */
 501.110 +		ENotifierPriorityHigh = 300,	
 501.111 +		/** The fourth highest priority value. */
 501.112 +		ENotifierPriorityLow = 200,	
 501.113 +		/** The fifth highest priority value. */
 501.114 +		ENotifierPriorityVLow = 100,	
 501.115 +		/** The lowest priority value. */
 501.116 +		ENotifierPriorityLowest = 0	
 501.117 +		};
 501.118 +public:
 501.119 +	/** Contains the notifier parameters.
 501.120 +
 501.121 +	@see TNotifierPriority */
 501.122 +	class TNotifierInfo
 501.123 +		{
 501.124 +	public:
 501.125 +		/** The Uid that identifies the notifier. */
 501.126 +		TUid iUid;
 501.127 +		/** The Uid that identifies the channel to be used by the notifier (e.g. the screen, 
 501.128 +		an LED etc) */
 501.129 +		TUid iChannel;
 501.130 +		/** The notifier priority, typically chosen from the standard set.
 501.131 +	
 501.132 +		@see TNotifierPriority */
 501.133 +		TInt iPriority;
 501.134 +		};
 501.135 +
 501.136 +public:
 501.137 +	IMPORT_C MEikSrvNotifierBase2();
 501.138 +	IMPORT_C virtual ~MEikSrvNotifierBase2();
 501.139 +public:
 501.140 +	/** Frees all resources owned by this notifier.
 501.141 +	
 501.142 +	This function is called by the notifier framework when all resources allocated 
 501.143 +	by notifiers should be freed. As a minimum, this function should delete this 
 501.144 +	object (i.e. delete this;).
 501.145 +	
 501.146 +	Note that it is important to implement this function correctly to avoid memory 
 501.147 +	leaks. */
 501.148 +	virtual void Release() = 0;
 501.149 +	/** Performs any initialisation that this notifier may require.
 501.150 +	
 501.151 +	The function is called when the notifier is loaded (when the plug-in DLL is 
 501.152 +	loaded). It is called only once.
 501.153 +	
 501.154 +	As a minimum, the function should return a TNotifierInfo instance describing 
 501.155 +	the notifier parameters. A good implementation would be to set this into a 
 501.156 +	data member, and then to return it. This is because the same information is 
 501.157 +	returned by Info().
 501.158 +	
 501.159 +	The function is safe to leave from, so it is possible, although rarely necessary, 
 501.160 +	to allocate objects as you would normally do in a ConstructL() function as 
 501.161 +	part of two-phase construction.
 501.162 +	
 501.163 +	@return Describes the parameters of the notifier. */
 501.164 +	virtual TNotifierInfo RegisterL() = 0;
 501.165 +	/** Gets the notifier parameters.
 501.166 +	
 501.167 +	This is usually the same information as returned by RegisterL() but can be 
 501.168 +	varied at run time.
 501.169 +	
 501.170 +	@return Describes the parameters of the notifier. */
 501.171 +	virtual TNotifierInfo Info() const = 0;
 501.172 +	/** Starts the notifier.
 501.173 +	
 501.174 +	This is called as a result of a client-side call to RNotifier::StartNotifier(), 
 501.175 +	which the client uses to start a notifier from which it does not expect a 
 501.176 +	response.
 501.177 +	
 501.178 +	The function is synchronous, but it should be implemented so that it completes 
 501.179 +	as soon as possible, allowing the notifier framework to enforce its priority 
 501.180 +	mechanism.
 501.181 +	
 501.182 +	It is not possible to to wait for a notifier to complete before returning 
 501.183 +	from this function unless the notifier is likely to finish implementing its 
 501.184 +	functionality immediately.
 501.185 +	
 501.186 +	@param aBuffer Data that can be passed from the client-side. The format and 
 501.187 +	meaning of any data is implementation dependent.
 501.188 +	@return A pointer descriptor representing data that may be returned. The format 
 501.189 +	and meaning of any data is implementation dependent. */
 501.190 +	virtual TPtrC8 StartL(const TDesC8& aBuffer) = 0;
 501.191 +	/** Starts the notifier.
 501.192 +	
 501.193 +	This is called as a result of a client-side call to the asynchronous function 
 501.194 +	RNotifier::StartNotifierAndGetResponse(). This means that the client is waiting, 
 501.195 +	asynchronously, for the notifier to tell the client that it has finished its 
 501.196 +	work.
 501.197 +	
 501.198 +	It is important to return from this function as soon as possible, and derived 
 501.199 +	classes may find it useful to take a copy of the reply-slot number and 
 501.200 +	the RMessage object.
 501.201 +	
 501.202 +	The implementation of a derived class must make sure that Complete() is called 
 501.203 +	on the RMessage object when the notifier is deactivated.
 501.204 +	
 501.205 +	This function may be called multiple times if more than one client starts 
 501.206 +	the notifier.
 501.207 +	
 501.208 +	@param aBuffer Data that can be passed from the client-side. The format and 
 501.209 +	meaning of any data is implementation dependent.
 501.210 +	@param aReplySlot Identifies which message argument to use for the reply.
 501.211 +    This message argument will refer to a modifiable descriptor, a TDes8 type, 
 501.212 +	into which data can be returned. The format and meaning of any returned data 
 501.213 +	is implementation dependent.
 501.214 +	@param aMessage Encapsulates a client request. */
 501.215 +	virtual void StartL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage) = 0;
 501.216 +	
 501.217 +	/** Cancels an active notifier.
 501.218 +	
 501.219 +	This is called as a result of a client-side call to RNotifier::CancelNotifier().
 501.220 +	
 501.221 +	An implementation should free any relevant resources and complete any outstanding 
 501.222 +	messages, if relevant. */
 501.223 +	virtual void Cancel() = 0;
 501.224 +	/** Updates a currently active notifier with new data.
 501.225 +	
 501.226 +	This is called as a result of a client-side call to RNotifier::UpdateNotifier().
 501.227 +	
 501.228 +	@param aBuffer Data that can be passed from the client-side. The format and 
 501.229 +	meaning of any data is implementation dependent.
 501.230 +	@return A pointer descriptor representing data that may be returned. The format 
 501.231 +	and meaning of any data is implementation dependent. */
 501.232 +	virtual TPtrC8 UpdateL(const TDesC8& aBuffer) = 0;
 501.233 +	/** Updates a currently active notifier with new data.
 501.234 +	
 501.235 +	This is called as a result of a client-side call to the asynchronous function 
 501.236 +	RNotifier::UpdateNotifierAndGetResponse(). This means that the client is waiting, 
 501.237 +	asynchronously, for the notifier to tell the client that it has finished its 
 501.238 +	work.
 501.239 +	
 501.240 +	It is important to return from this function as soon as possible, and derived 
 501.241 +	classes may find it useful to take a copy of the reply-slot number and 
 501.242 +	the RMessage object.
 501.243 +	
 501.244 +	The implementation of a derived class must make sure that Complete() is called 
 501.245 +	on the RMessage object when the notifier is deactivated.
 501.246 +	
 501.247 +	This function may be called multiple times if more than one client updates 
 501.248 +	the notifier.
 501.249 +	
 501.250 +	@param aBuffer Data that can be passed from the client-side. The format and 
 501.251 +	meaning of any data is implementation dependent.
 501.252 +	@param aReplySlot Identifies which message argument to use for the reply.
 501.253 +    This message argument will refer to a modifiable descriptor, a TDes8 type, 
 501.254 +	into which data can be returned. The format and meaning of any returned data 
 501.255 +	is implementation dependent.
 501.256 +	@param aMessage Encapsulates a client request. */
 501.257 +	IMPORT_C virtual void UpdateL(const TDesC8& aBuffer, TInt aReplySlot, const RMessagePtr2& aMessage);
 501.258 +public:
 501.259 +	void SetManager(MEikSrvNotifierManager* aManager);
 501.260 +protected:
 501.261 +	MEikSrvNotifierManager* iManager;
 501.262 +private:
 501.263 +	IMPORT_C virtual void MEikSrvNotifierBase2_Reserved_2();
 501.264 +public:	// internal
 501.265 +	IMPORT_C virtual void HandleSystemEventL(TUid aEvent);
 501.266 +	IMPORT_C virtual TInt NotifierCapabilites();
 501.267 +private:
 501.268 +	TInt iNotBSpare;
 501.269 +	TInt iMEikSrvNotifierBase2_Spare;
 501.270 +	};
 501.271 +
 501.272 +
 501.273 +#endif	// __EIKNOTAPI_H__
   502.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   502.2 +++ b/epoc32/include/mw/eikproc.h	Wed Mar 31 12:27:01 2010 +0100
   502.3 @@ -0,0 +1,73 @@
   502.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   502.5 +// All rights reserved.
   502.6 +// This component and the accompanying materials are made available
   502.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   502.8 +// which accompanies this distribution, and is available
   502.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  502.10 +//
  502.11 +// Initial Contributors:
  502.12 +// Nokia Corporation - initial contribution.
  502.13 +//
  502.14 +// Contributors:
  502.15 +//
  502.16 +// Description:
  502.17 +//
  502.18 +
  502.19 +#ifndef __EIKPROC_H__
  502.20 +#define __EIKPROC_H__
  502.21 +
  502.22 +#include <apparc.h>
  502.23 +#include <eikdef.h>
  502.24 +
  502.25 +class CFileStore;
  502.26 +class CEikDocument;
  502.27 +
  502.28 +/** The controlling process for an application. 
  502.29 +
  502.30 +An instance of this class is created by the Uikon environment. This instance 
  502.31 +calls CApaProcess::AddNewDocumentL() to load the application DLL and 
  502.32 +construct the new application which runs in this environment. 
  502.33 +
  502.34 +It also provides services related to an application's main (non-embedded) document, 
  502.35 +including: 
  502.36 +- saving the main document to a direct file store
  502.37 +- providing the name of the most recently accessed file
  502.38 +- getting the name of the application DLL associated with a document.
  502.39 +
  502.40 +@publishedAll 
  502.41 +@released */
  502.42 +NONSHARABLE_CLASS(CEikProcess) : public CApaProcess
  502.43 +	{
  502.44 +public:
  502.45 +	/** Used as a parameter by CEikProcess::SetLastUsedFileL() and LastUsedFileL() 
  502.46 +	to indicate whether the function relates to the last opened or last created file.*/
  502.47 +	enum TLastUsedFile
  502.48 +		{
  502.49 +		/** Last opened file.*/
  502.50 +		ELastOpenFile,
  502.51 +		/** Last created file. */
  502.52 +		ELastCreatedFile
  502.53 +		};
  502.54 +public:
  502.55 +	static CEikProcess* NewL(const RFs& aFs, TProcessId aProcessId=KNullProcessId);
  502.56 +	IMPORT_C TPtrC CommandTailEnd() const;
  502.57 +	IMPORT_C TFileName MainDocFolder() const;
  502.58 +	IMPORT_C void SetLastUsedFileL(TLastUsedFile aType,const TDesC& aFileName) const;
  502.59 +	IMPORT_C TFileName LastUsedFileL(TLastUsedFile aType) const;
  502.60 +	IMPORT_C void SetMainStore(CFileStore* aMainStore);
  502.61 +	IMPORT_C CFileStore* MainStore() const;
  502.62 +	IMPORT_C void AppFromDocL(TDes& aLibraryName,const TDesC& aDocumentName) const;
  502.63 +	IMPORT_C void SaveToDirectFileStoreL(CEikDocument* aDoc,const TFileName* aNewFileName=NULL);
  502.64 +	IMPORT_C void SaveToDirectFileStoreL(CEikDocument* aDoc,const TFileName* aNewFileName,TBool aReopen,TFileName* aTempFile=NULL);
  502.65 +	IMPORT_C ~CEikProcess();
  502.66 +private:
  502.67 +	CEikProcess(const RFs& aFs);
  502.68 +	void GetLibraryNameL(TDes& aLibraryName,const CFileStore& aDocStore, const CStreamDictionary& aStreamDic) const;
  502.69 +	void OpenNewFileL(const TFileName* aNewFileName, const TParse& aNewFilePath);
  502.70 +	CDictionaryStore* OpenMainAppIniFileLC() const;
  502.71 +private:
  502.72 +	TPtrC iCommandTailEnd;
  502.73 +	CFileStore* iMainStore;
  502.74 +	};
  502.75 +
  502.76 +#endif	// __EIKPROC_H__
   503.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   503.2 +++ b/epoc32/include/mw/eikrutil.h	Wed Mar 31 12:27:01 2010 +0100
   503.3 @@ -0,0 +1,85 @@
   503.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   503.5 +// All rights reserved.
   503.6 +// This component and the accompanying materials are made available
   503.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   503.8 +// which accompanies this distribution, and is available
   503.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  503.10 +//
  503.11 +// Initial Contributors:
  503.12 +// Nokia Corporation - initial contribution.
  503.13 +//
  503.14 +// Contributors:
  503.15 +//
  503.16 +// Description:
  503.17 +//
  503.18 +
  503.19 +#ifndef __EIKRUTIL_H__
  503.20 +#define __EIKRUTIL_H__
  503.21 +
  503.22 +#include <e32std.h>
  503.23 +#include <gulutil.h>
  503.24 +
  503.25 +class CFbsFont;
  503.26 +class CEikonEnv;
  503.27 +class CWsScreenDevice;
  503.28 +class TResourceReader;
  503.29 +
  503.30 +
  503.31 +/** Provides utilities for reading standard resources. 
  503.32 +
  503.33 +@publishedAll 
  503.34 +@released */
  503.35 +NONSHARABLE_CLASS(EikResourceUtils)
  503.36 +	{
  503.37 +public:
  503.38 +	inline static CFbsFont* CreateScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
  503.39 +	IMPORT_C static CFbsFont* CreateScreenFontL(TInt aResourceId,CEikonEnv* aEnv=NULL);
  503.40 +	inline static TInt8 ReadTInt8L(TInt aResourceId,CEikonEnv* aEnv=NULL);
  503.41 +	inline static TInt16 ReadTInt16L(TInt aResourceId,CEikonEnv* aEnv=NULL);
  503.42 +	inline static TInt32 ReadTInt32L(TInt aResourceId,CEikonEnv* aEnv=NULL);
  503.43 +	IMPORT_C static CColorArray* CreateColorArrayL(TInt aResourceId,CEikonEnv* aEnv=NULL);
  503.44 +	IMPORT_C static CColorArray* CreateColorArrayLC(TInt aResourceId,CEikonEnv* aEnv=NULL);
  503.45 +private:
  503.46 +	enum TResourceTypeInt { EResourceInt8,EResourceInt16,EResourceInt32 };
  503.47 +private:
  503.48 +	IMPORT_C static TInt32 ReadResourceIntL(TInt aResourceId, CEikonEnv* aEnv, TResourceTypeInt aSize);
  503.49 +	EikResourceUtils();
  503.50 +	};
  503.51 +
  503.52 +/** Create a screen font from resource.
  503.53 +
  503.54 +Creates a font for the specified screen device by reading a font UID and font 
  503.55 +flags from the given position in a resource. Returns a pointer to the font 
  503.56 +and transfers ownership.
  503.57 +
  503.58 +@param aResourceReader The resource reader to use to read the font. 
  503.59 +@param aScreenDevice The screen device for which the font will be created. 
  503.60 +@return Screen font object. */
  503.61 +inline CFbsFont* EikResourceUtils::CreateScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice)
  503.62 +	{	return(ResourceUtils::CreateScreenFontL(aResourceReader,aScreenDevice));	}
  503.63 +
  503.64 +/** Gets the 8 bit signed integer held in a specified resource location.
  503.65 +
  503.66 +@param aResourceId The location in the resource to be read. 
  503.67 +@param aEnv The UI environment. 
  503.68 +@return The eight bits that follow the specified location in the resource. */
  503.69 +inline TInt8 EikResourceUtils::ReadTInt8L(TInt aResourceId,CEikonEnv* aEnv)
  503.70 +	{	return static_cast<TInt8>(ReadResourceIntL(aResourceId,aEnv,EResourceInt8));	}
  503.71 +
  503.72 +/** Gets the 16 bit signed integer held in a specified resource location.
  503.73 +
  503.74 +@param aResourceId The location in the resource to be read. 
  503.75 +@param aEnv The UI environment. 
  503.76 +@return The 16 bits that follow the specified location in the resource. */
  503.77 +inline TInt16 EikResourceUtils::ReadTInt16L(TInt aResourceId,CEikonEnv* aEnv)
  503.78 +	{	return static_cast<TInt16>(ReadResourceIntL(aResourceId,aEnv,EResourceInt16));	}
  503.79 +
  503.80 +/** Gets the 32 bit signed integer held in a specified resource location.
  503.81 +
  503.82 +@param aResourceId The location in the resource to be read. 
  503.83 +@param aEnv The UI environment. 
  503.84 +@return The 32 bits that follow the specified location in the resource. */
  503.85 +inline TInt32 EikResourceUtils::ReadTInt32L(TInt aResourceId,CEikonEnv* aEnv)
  503.86 +	{	return static_cast<TInt32>(ReadResourceIntL(aResourceId,aEnv,EResourceInt32));	}
  503.87 +
  503.88 +#endif	// __EIKRUTIL_H__
   504.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   504.2 +++ b/epoc32/include/mw/eikstart.h	Wed Mar 31 12:27:01 2010 +0100
   504.3 @@ -0,0 +1,39 @@
   504.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   504.5 +// All rights reserved.
   504.6 +// This component and the accompanying materials are made available
   504.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   504.8 +// which accompanies this distribution, and is available
   504.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  504.10 +//
  504.11 +// Initial Contributors:
  504.12 +// Nokia Corporation - initial contribution.
  504.13 +//
  504.14 +// Contributors:
  504.15 +//
  504.16 +// Description:
  504.17 +//
  504.18 +
  504.19 +#ifndef __EIKSTART_H__
  504.20 +#define __EIKSTART_H__
  504.21 +
  504.22 +#include <e32std.h>
  504.23 +#include <apparc.h>
  504.24 +
  504.25 +class CApaCommandLine;
  504.26 +
  504.27 +/**
  504.28 +This is the API to initialise and run the application architecture for applications built as exes.
  504.29 +It is not intended to be used for generally running applications from other code. Use RApaLsSession for that.
  504.30 +
  504.31 +@publishedAll
  504.32 +@released
  504.33 +*/
  504.34 +NONSHARABLE_CLASS(EikStart)
  504.35 +	{
  504.36 +public:
  504.37 +	IMPORT_C static TInt RunApplication(TApaApplicationFactory aApplicationFactory);
  504.38 +private:
  504.39 +	EikStart();
  504.40 +	};
  504.41 +
  504.42 +#endif	// __EIKSTART_H__
   505.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   505.2 +++ b/epoc32/include/mw/eikunder.h	Wed Mar 31 12:27:01 2010 +0100
   505.3 @@ -0,0 +1,55 @@
   505.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   505.5 +// All rights reserved.
   505.6 +// This component and the accompanying materials are made available
   505.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   505.8 +// which accompanies this distribution, and is available
   505.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  505.10 +//
  505.11 +// Initial Contributors:
  505.12 +// Nokia Corporation - initial contribution.
  505.13 +//
  505.14 +// Contributors:
  505.15 +//
  505.16 +// Description:
  505.17 +//
  505.18 +
  505.19 +#ifndef __EIKUNDER_H__
  505.20 +#define __EIKUNDER_H__
  505.21 +
  505.22 +#include <e32base.h>	// class CActive
  505.23 +
  505.24 +class RThread;
  505.25 +
  505.26 +/**
  505.27 +@publishedAll
  505.28 +@released 
  505.29 +*/
  505.30 +class MEikUndertakerObserver
  505.31 +	{
  505.32 +public:
  505.33 +	virtual void HandleThreadExitL(RThread& aThread) = 0;
  505.34 +	};
  505.35 +
  505.36 +/**
  505.37 +@publishedAll
  505.38 +@released 
  505.39 +*/
  505.40 +class CEikUndertaker : public CActive
  505.41 +	{
  505.42 +public:
  505.43 +	IMPORT_C static CEikUndertaker* NewL(MEikUndertakerObserver& aObserver);
  505.44 +	IMPORT_C ~CEikUndertaker();
  505.45 +private:
  505.46 +	CEikUndertaker(MEikUndertakerObserver& aObserver);
  505.47 +	void ConstructL();
  505.48 +	void Request();
  505.49 +private: // from CActive
  505.50 +	void DoCancel();
  505.51 +	void RunL();
  505.52 +private:
  505.53 +	MEikUndertakerObserver& iObserver;
  505.54 +	RUndertaker iUndertaker;
  505.55 +	TInt iThreadHandle;
  505.56 +	};
  505.57 +
  505.58 +#endif	// __EIKUNDER_H__
   506.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   506.2 +++ b/epoc32/include/mw/eikvcurs.h	Wed Mar 31 12:27:01 2010 +0100
   506.3 @@ -0,0 +1,77 @@
   506.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   506.5 +// All rights reserved.
   506.6 +// This component and the accompanying materials are made available
   506.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   506.8 +// which accompanies this distribution, and is available
   506.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  506.10 +//
  506.11 +// Initial Contributors:
  506.12 +// Nokia Corporation - initial contribution.
  506.13 +//
  506.14 +// Contributors:
  506.15 +//
  506.16 +// Description:
  506.17 +// class TEikVirtualCursor
  506.18 +// 
  506.19 +//
  506.20 +
  506.21 +#ifndef __EIKVCURS_H__
  506.22 +#define __EIKVCURS_H__
  506.23 +
  506.24 +#include <e32std.h>
  506.25 +#include <coemain.h>
  506.26 +
  506.27 +
  506.28 +/** Provides support for the virtual cursor's state within an application.
  506.29 +
  506.30 +There is one instance of this object per CEikonEnv. 
  506.31 +
  506.32 +@publishedAll
  506.33 +@released */
  506.34 +class TEikVirtualCursor
  506.35 +	{
  506.36 +public:
  506.37 +	/** Specifies the virtual cursor's state. 
  506.38 +
  506.39 +	The state may be on, off or suspended. The suspended state is for use by applications 
  506.40 +	that wish to temporarily disable the cursor, but do not want to switch it 
  506.41 +	off completely. For example, an editor control which when focused needs to 
  506.42 +	capture arrow keys would disable the virtual cursor when it gains focus, 
  506.43 +	and enable it when unfocused. */
  506.44 +	enum TState
  506.45 +		{
  506.46 +		/** Sets the virtual cursor off. */
  506.47 +		EOff=0,
  506.48 +		/** Sets the virtual cursor on. */
  506.49 +		EOn,
  506.50 +		/** Sets the virtual cursor as suspended. */
  506.51 +		ESuspended
  506.52 +		};
  506.53 +public:
  506.54 +	TEikVirtualCursor();
  506.55 +private: //prevent passing by value
  506.56 +	inline TEikVirtualCursor(const TEikVirtualCursor&);
  506.57 +public:
  506.58 +	IMPORT_C void SetCursorStateL(TState aState, CCoeEnv& aEnv);
  506.59 +	IMPORT_C TState CursorState(CCoeEnv& aEnv);
  506.60 +public: // but not exported
  506.61 +	void HandleAppToForeground(CCoeEnv& aEnv);
  506.62 +private:
  506.63 +	void SwitchOffEmulationAndBitmap(CCoeEnv& aEnv);
  506.64 +	void SwitchOnEmulationAndBitmap(CCoeEnv& aEnv);
  506.65 +private:
  506.66 +	TState iState;
  506.67 +	};
  506.68 +
  506.69 +
  506.70 +// inlines
  506.71 +
  506.72 +/** Constructor.
  506.73 +
  506.74 +Sets the cursor's state to ESuspended so that the call to switch off the virtual 
  506.75 +cursor will succeed when the application starts. Required due to the efficient 
  506.76 +implementation of SetCursorState(). */
  506.77 +inline TEikVirtualCursor::TEikVirtualCursor(const TEikVirtualCursor&)
  506.78 +	{}
  506.79 +
  506.80 +#endif
   507.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   507.2 +++ b/epoc32/include/mw/estatus.h	Wed Mar 31 12:27:01 2010 +0100
   507.3 @@ -0,0 +1,42 @@
   507.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   507.5 +// All rights reserved.
   507.6 +// This component and the accompanying materials are made available
   507.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   507.8 +// which accompanies this distribution, and is available
   507.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  507.10 +//
  507.11 +// Initial Contributors:
  507.12 +// Nokia Corporation - initial contribution.
  507.13 +//
  507.14 +// Contributors:
  507.15 +//
  507.16 +// Description:
  507.17 +// Created at: 04-Jan-99 10:35:54 AM
  507.18 +// Status enumeration for Data Collectors, Data Providers and Data Handlers.
  507.19 +// 
  507.20 +//
  507.21 +
  507.22 +
  507.23 +#if !defined(__ESTATUS_H__)
  507.24 +#define __ESTATUS_H__
  507.25 +
  507.26 +#ifndef __E32DEF_H__
  507.27 +#include <e32def.h> // for TInt
  507.28 +#endif
  507.29 +
  507.30 +// 
  507.31 +// values < 0 are error codes
  507.32 +//			0 - 100 are % processed
  507.33 +//		  > 100 are the enum values below...
  507.34 +//
  507.35 +enum TPluginStatus {	
  507.36 +					EPluginComplete=100,
  507.37 +					EPluginInitialised,
  507.38 +					EPluginWaitingForChild,
  507.39 +					EPluginProcessing,
  507.40 +					EPluginSuspend,
  507.41 +					EPluginCancelled,
  507.42 +					EConnectionChanged
  507.43 +				   };
  507.44 +
  507.45 +#endif    // __ESTATUS_H__
   508.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   508.2 +++ b/epoc32/include/mw/fepbase.h	Wed Mar 31 12:27:01 2010 +0100
   508.3 @@ -0,0 +1,634 @@
   508.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   508.5 +// All rights reserved.
   508.6 +// This component and the accompanying materials are made available
   508.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   508.8 +// which accompanies this distribution, and is available
   508.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  508.10 +//
  508.11 +// Initial Contributors:
  508.12 +// Nokia Corporation - initial contribution.
  508.13 +//
  508.14 +// Contributors:
  508.15 +//
  508.16 +// Description:
  508.17 +//
  508.18 +
  508.19 +#ifndef __FEPBASE_H__
  508.20 +#define __FEPBASE_H__
  508.21 +
  508.22 +#include <e32std.h>
  508.23 +#include <e32base.h>
  508.24 +#include <f32file.h>
  508.25 +#include <w32std.h>
  508.26 +#include <coedef.h>
  508.27 +#include <coemain.h>
  508.28 +#include <fepbutils.h>
  508.29 +#include <fepbconfig.h>
  508.30 +
  508.31 +class CCoeControl;
  508.32 +
  508.33 +
  508.34 +/** Specifies the mixin protocol for observing a FEP transaction.
  508.35 +
  508.36 +Applications which need to implement this protocol should derive from this 
  508.37 +class. The functions are not pure virtual because most applications will only 
  508.38 +need to override one of them.
  508.39 +
  508.40 +@see CCoeFep::MakeDeferredFunctionCall() 
  508.41 +@publishedAll 
  508.42 +@released */
  508.43 +class MCoeFepObserver
  508.44 +	{
  508.45 +public:
  508.46 +	// both of these functions do nothing by default - the reason that they are not pure 
  508.47 +	// virtual is that most applications will only want to override one of them
  508.48 +	IMPORT_C virtual void HandleStartOfTransactionL(); // the responsibility of FEPs to call
  508.49 +	IMPORT_C virtual void HandleCompletionOfTransactionL(); // the responsibility of FEPBASE to call - not to be called if the transaction is canceled
  508.50 +private: // reserved. do not override!	
  508.51 +	IMPORT_C virtual void MCoeFepObserver_Reserved_1();
  508.52 +	IMPORT_C virtual void MCoeFepObserver_Reserved_2();
  508.53 +	};
  508.54 +
  508.55 +/** Handles the start of a FEP transaction. 
  508.56 +
  508.57 +This is a non-member function which just calls aFepObserver.HandleStartOfTransactionL().
  508.58 +
  508.59 +It is called indirectly by a FEP to notify the application that it is starting a transaction. 
  508.60 +This is done by calling CCoeEnv::ForEachFepObserverCall() passing in 
  508.61 +FepObserverHandleStartOfTransactionL. Internally, this calls HandleStartOfTransactionL() for 
  508.62 +each MCoeFepObserver object that has been registered with the control environment.
  508.63 +
  508.64 +@param aFepObserver The FEP observer.
  508.65 +@see MCoeFepObserver::HandleStartOfTransactionL()
  508.66 +@publishedAll 
  508.67 +@released */
  508.68 +IMPORT_C void FepObserverHandleStartOfTransactionL(MCoeFepObserver& aFepObserver);
  508.69 +
  508.70 +
  508.71 +/** Abstract base class for all FEPs.
  508.72 +
  508.73 +FEP authors must derive a class from CCoeFep. The CCoeFep-derived class should 
  508.74 +implement all of its pure virtual functions including the ones which CCoeFep 
  508.75 +inherits from its base classes. For information on these functions, see the 
  508.76 +documentation of the base classes. The global NewFepL() function is used to 
  508.77 +create a fully initialised object of the derived class. 
  508.78 +
  508.79 +FEPs that need to intercept key events should own a CCoeControl-derived object. 
  508.80 +This object is referred to as the FEP control. The FEP control should 
  508.81 +be added to the control stack at a priority of ECoeStackPriorityFep, so that 
  508.82 +it receives first refusal of key events from the window server.
  508.83 +
  508.84 +In general, focus is retained by the underlying application. This has the 
  508.85 +advantage that the user can see where the output produced by the FEP will 
  508.86 +go. When focus is switched between controls, the FEP must be notified in case 
  508.87 +the input capability of the focussed control changes. For instance, the FEP 
  508.88 +needs to prevent the user composing a large amount of text only for it to 
  508.89 +be passed to a newly focussed control that cannot accept text input. CCoeFep 
  508.90 +derives from MCoeFocusObserver, which enables FEPs to receive notification 
  508.91 +when the focus for the underlying control changes. The implementation of MCoeFocusObserver's 
  508.92 +functions can call the enquiry functions of class TCoeInputCapabilities to 
  508.93 +find out what input capabilities are supported by the new target control (you 
  508.94 +need to get the TCoeInputCapabilities object from the application UI first: 
  508.95 +see CCoeAppUi::InputCapabilities()).
  508.96 +
  508.97 +@see NewFepL() 
  508.98 +@publishedAll 
  508.99 +@released */
 508.100 +class CCoeFep : public CBase, protected MFepAttributeStorer, public MCoeForegroundObserver, public MCoeFocusObserver, private MCoeMessageObserver
 508.101 +	{
 508.102 +public:
 508.103 +	/** Response to key or pointer event */
 508.104 +	enum TEventResponse
 508.105 +		{
 508.106 +		EEventWasNotConsumed,	/** < Indicates that the FEP did not process the event. */
 508.107 +		EEventWasConsumed		/** < Indicates that the FEP did process the event. */
 508.108 +		};
 508.109 +
 508.110 +	/** Enables FEPs to have some code called but not in the context of the current 
 508.111 +	call stack, hence the name "deferred".
 508.112 +
 508.113 +	For an explanation of the intended use of this class, see 
 508.114 +	CCoeFep::MakeDeferredFunctionCall(). */
 508.115 +	class MDeferredFunctionCall
 508.116 +		{
 508.117 +	public:
 508.118 +		/** This function is called from within a high-priority active object's RunL() 
 508.119 +		shortly after the active object has been queued by calling CCoeFep::MakeDeferredFunctionCall(). */
 508.120 +		virtual void ExecuteFunctionL()=0;
 508.121 +	private: // reserved. do not override!	
 508.122 +		IMPORT_C virtual void MDeferredFunctionCall_Reserved_1();
 508.123 +		IMPORT_C virtual void MDeferredFunctionCall_Reserved_2();
 508.124 +		};
 508.125 +
 508.126 +	/** FEPs send character codes to the application underneath them using SimulateKeyEventsL(). 
 508.127 +	Occasionally a FEP may wish to also specify the modifiers (e.g. Fn, Ctrl, 
 508.128 +	Shift) to be sent with that character code. In this case, they should use 
 508.129 +	the overload of CCoeFep::SimulateKeyEventsL() which takes an array of MModifiedCharacters. */
 508.130 +	class MModifiedCharacter
 508.131 +		{
 508.132 +	public:
 508.133 +		/** Returns the character code of the key combination.
 508.134 +		
 508.135 +		@return The character code of the key combination. */
 508.136 +		virtual TUint CharacterCode() const=0;
 508.137 +		/** Returns a TUint which indicates which modifiers to override, rather than using 
 508.138 +		the current state of the keyboard's modifiers.
 508.139 +	
 508.140 +		@return The modifiers to override in the key combination. */
 508.141 +		virtual TUint ModifierMask() const=0;
 508.142 +		/** Returns a TUint which indicates which of the modifiers specified in the mask 
 508.143 +		(returned by ModifierMask()) must be on and which must be off.
 508.144 +	
 508.145 +		@return Indicates which of the modifiers specified in the mask (returned by 
 508.146 +		ModifierMask()) must be on and which must be off. */
 508.147 +		virtual TUint ModifierValues() const=0;
 508.148 +	private: // reserved. do not override!	
 508.149 +		IMPORT_C virtual void MModifiedCharacter_Reserved_1();
 508.150 +		IMPORT_C virtual void MModifiedCharacter_Reserved_2();
 508.151 +		};
 508.152 +
 508.153 +public:
 508.154 +	IMPORT_C virtual ~CCoeFep();
 508.155 +	IMPORT_C TBool IsSimulatingKeyEvent() const;
 508.156 +	IMPORT_C TBool IsTurnedOnByL(const TKeyEvent& aKeyEvent) const;
 508.157 +	IMPORT_C TBool IsTurnedOffByL(const TKeyEvent& aKeyEvent) const;
 508.158 +public: // new public virtual functions
 508.159 +	/** Cancels the FEP transaction.
 508.160 +	
 508.161 +	A FEP transaction begins when an event is first intercepted by the FEP and 
 508.162 +	ends either when the processed text is committed to the application underneath, 
 508.163 +	or if it is cancelled. */
 508.164 +	virtual void CancelTransaction()=0;
 508.165 +public:
 508.166 +	IMPORT_C void OnStartingHandlingKeyEvent_WithDownUpFilterLC();
 508.167 +	IMPORT_C void OnStartingHandlingKeyEvent_NoDownUpFilterLC();
 508.168 +	IMPORT_C TKeyResponse OnFinishingHandlingKeyEvent_WithDownUpFilterL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
 508.169 +	IMPORT_C TKeyResponse OnFinishingHandlingKeyEvent_NoDownUpFilterL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
 508.170 +protected:
 508.171 +	IMPORT_C CCoeFep(CCoeEnv& aConeEnvironment);
 508.172 +	IMPORT_C void BaseConstructL(const CCoeFepParameters& aFepParameters);
 508.173 +	IMPORT_C void ReadAllAttributesL();
 508.174 +	IMPORT_C void MakeDeferredFunctionCall(MDeferredFunctionCall& aDeferredFunctionCall);
 508.175 +	IMPORT_C void SimulateKeyEventsL(const TArray<TUint>& aArrayOfCharacters);
 508.176 +	IMPORT_C void SimulateKeyEventsL(const TArray<MModifiedCharacter>& aArrayOfModifiedCharacters);
 508.177 +	IMPORT_C void WriteAttributeDataAndBroadcastL(TUid aAttributeUid);
 508.178 +	IMPORT_C void WriteAttributeDataAndBroadcastL(const TArray<TUid>& aAttributeUids);
 508.179 +	IMPORT_C TBool IsOn() const;
 508.180 +public: // not for external use
 508.181 +	void SetOnState(TBool aOnState);
 508.182 +private:
 508.183 +	class CHighPriorityActive;
 508.184 +	class CLowPriorityActive;
 508.185 +	class CCoeFepExtra;
 508.186 +private:
 508.187 +	void DoOnStartingHandlingKeyEventLC(TUint aFlagNoDownUpFilter);
 508.188 +	TKeyResponse DoOnFinishingHandlingKeyEventL(TEventCode aEventCode, const TKeyEvent& aKeyEvent, TKeyResponse aKeyResponse);
 508.189 +	static void TurnOffKeyEventHandlingFlags(TAny* aFlags);
 508.190 +	// from MFepAttributeStorer
 508.191 +	IMPORT_C virtual void MFepAttributeStorer_Reserved_1();
 508.192 +	IMPORT_C virtual void MFepAttributeStorer_Reserved_2();
 508.193 +	// from MCoeForegroundObserver
 508.194 +	IMPORT_C virtual void MCoeForegroundObserver_Reserved_1();
 508.195 +	IMPORT_C virtual void MCoeForegroundObserver_Reserved_2();
 508.196 +	// from MCoeFocusObserver
 508.197 +	IMPORT_C virtual void MCoeFocusObserver_Reserved_1();
 508.198 +	IMPORT_C virtual void MCoeFocusObserver_Reserved_2();
 508.199 +	// from MCoeMessageObserver
 508.200 +	IMPORT_C virtual TMessageResponse HandleMessageL(TUint32 aClientHandleOfTargetWindowGroup, TUid aMessageUid, const TDesC8& aMessageParameters);
 508.201 +	IMPORT_C virtual void MCoeMessageObserver_Reserved_1();
 508.202 +	IMPORT_C virtual void MCoeMessageObserver_Reserved_2();
 508.203 +	// new private virtual functions
 508.204 +	/** Called to notify the FEP that it has either just been turned on or just been 
 508.205 +	turned off (it can find out which by calling CCoeFep::IsOn()). 
 508.206 +	
 508.207 +	If FEPs want to change their appearance when they are off (e.g. make themselves 
 508.208 +	invisible), then they should implement this function accordingly. 
 508.209 +
 508.210 +	@publishedAll
 508.211 +	@released */
 508.212 +	virtual void IsOnHasChangedState()=0;
 508.213 +	
 508.214 +	/**
 508.215 +	@deprecated */
 508.216 +	virtual void OfferKeyEventL(TEventResponse& /*aEventResponse*/, const TKeyEvent& /*aKeyEvent*/, TEventCode /*aEventCode*/){};
 508.217 +
 508.218 +	/**
 508.219 +	@deprecated */
 508.220 +	virtual void OfferPointerEventL(TEventResponse& /*aEventResponse*/, const TPointerEvent& /*aPointerEvent*/, const CCoeControl* /*aWindowOwningControl*/){};
 508.221 +
 508.222 +	/**
 508.223 +	@deprecated */
 508.224 +	virtual void OfferPointerBufferReadyEventL(TEventResponse& /*aEventResponse*/, const CCoeControl* /*aWindowOwningControl*/){};
 508.225 +private:	// reserved. do not override!	
 508.226 +	IMPORT_C virtual void CCoeFep_Reserved_1();
 508.227 +	IMPORT_C virtual void CCoeFep_Reserved_2();
 508.228 +private:
 508.229 +	class SKeyEvent;
 508.230 +	CCoeEnv& iConeEnvironment;
 508.231 +	TUint iFlags;
 508.232 +	CHighPriorityActive* iHighPriorityActive;
 508.233 +	CCoeFepExtra* iExtra;
 508.234 +	SKeyEvent* iLastKeyEvent;
 508.235 +	TUint iSpare[13];
 508.236 +	};
 508.237 +
 508.238 +
 508.239 +/** Specifies the mixin protocol for handling pointer events in inline text. 
 508.240 +
 508.241 +This class should be overridden by front end processors which support inline editing.
 508.242 +
 508.243 +An instance of a class which implements this protocol should be passed to 
 508.244 +MCoeFepAwareTextEditor::StartFepInlineEditL(). 
 508.245 +
 508.246 +@publishedAll 
 508.247 +@released */
 508.248 +class MFepPointerEventHandlerDuringInlineEdit // to be overridden by inline-editing front-end processors
 508.249 +	{
 508.250 +public:
 508.251 +	/** This function is called when a pointer event is received within the inline 
 508.252 +	text. It may need to update the cursor position within the inline text and 
 508.253 +	do text selection in response to drag events.
 508.254 +	
 508.255 +	@param aType Pointer event types.
 508.256 +	@param aModifiers Modifier keys (SHIFT, CTRL, FN etc.).
 508.257 +	@param aPositionInInlineText The position at which the pointer event occurred, 
 508.258 +	as an offset from the start of the inline text string. */
 508.259 +	virtual void HandlePointerEventInInlineTextL(TPointerEvent::TType aType, TUint aModifiers, TInt aPositionInInlineText)=0;
 508.260 +private: // reserved. do not override!	
 508.261 +	IMPORT_C virtual void MFepPointerEventHandlerDuringInlineEdit_Reserved_1();
 508.262 +	IMPORT_C virtual void MFepPointerEventHandlerDuringInlineEdit_Reserved_2();
 508.263 +	};
 508.264 +
 508.265 +class TCharFormat;
 508.266 +class TCursorSelection;
 508.267 +class MFormCustomDraw;
 508.268 +class MFepInlineTextFormatRetriever;
 508.269 +class MCoeFepAwareTextEditor_Extension1;
 508.270 +
 508.271 +
 508.272 +/** Specifies a protocol for FEP-aware text editors.
 508.273 +
 508.274 +TCoeInputCapabilities::FepAwareTextEditor() returns a pointer to an object 
 508.275 +of this class. A NULL return value indicates that the interface is not supported 
 508.276 +by any of the currently focused controls.
 508.277 +
 508.278 +Inline editing means composing text directly in the target text editor control 
 508.279 +rather than in the FEP's edit window first. The target text editor must implement 
 508.280 +the MCoeFepAwareTextEditor interface in order to support inline text. The 
 508.281 +inline text may be differentiated from the surrounding text by the use of 
 508.282 +different formatting. These differences are removed when the inline text transaction 
 508.283 +is committed (causing the inline text to become a real part of the document). 
 508.284 +Cancelling the inline text transaction deletes the inline text and restores 
 508.285 +any previously selected text. A benefit of inline editing is that the user 
 508.286 +only has to concentrate on one area of the screen rather than two. 
 508.287 +
 508.288 +An inline editing transaction consists of the following sequence of function 
 508.289 +calls:
 508.290 +
 508.291 +- a call to StartFepInlineEditL()
 508.292 +
 508.293 +- zero, one or more calls to UpdateFepInlineTextL()
 508.294 +
 508.295 +- a call to either CommitFepInlineEditL() or CancelFepInlineEdit() 
 508.296 +
 508.297 +@publishedAll 
 508.298 +@released */
 508.299 +class MCoeFepAwareTextEditor // to be overridden by text-editors
 508.300 +	{
 508.301 +public:
 508.302 +	/** 
 508.303 +	Starts a FEP inline editing transaction. 
 508.304 +	
 508.305 +	Inserts a descriptor containing the initial inline text into the text editor. 
 508.306 +	The inline text should normally replace any selected text.
 508.307 +	
 508.308 +	The final three parameters are instances of abstract classes, so that the 
 508.309 +	caller of this function must create and instantiate classes deriving from 
 508.310 +	them. These instances must remain in existence for the entire duration of 
 508.311 +	the inline editing transaction.
 508.312 +	
 508.313 +	Inline editing should not already be taking place when this function is called.
 508.314 +	
 508.315 +	@param aInitialInlineText The inline text to insert into the text editor.
 508.316 +	@param aPositionOfInsertionPointInInlineText An insertion position within the 
 508.317 +	inline text. This is an offset from the start of the inline text.
 508.318 +	@param aCursorVisibility ETrue for visible text cursor, EFalse for invisible 
 508.319 +	text cursor in the text editor.
 508.320 +	@param aCustomDraw Pointer to a custom drawing object. May be used to do advanced 
 508.321 +	formatting of the inline text. This parameter is optional; a NULL pointer 
 508.322 +	may be specified.
 508.323 +	@param aInlineTextFormatRetriever Defines a single member function, GetFormatOfFepInlineText() 
 508.324 +	which is used by the text editor to find out the formatting to apply to the 
 508.325 +	inline text. It is also possible to apply different formatting to different 
 508.326 +	parts of the inline text.
 508.327 +	@param aPointerEventHandlerDuringInlineEdit Defines a single function, HandlePointerEventInInlineTextL() 
 508.328 +	which is called when a pointer event is received within the inline text. This 
 508.329 +	function might update the cursor position within the inline text and do text 
 508.330 +	selection. 
 508.331 +	*/
 508.332 +	virtual void StartFepInlineEditL(const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, 
 508.333 +		TBool aCursorVisibility, const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever, 
 508.334 +		MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit)=0;
 508.335 +	/** Updates the inline text. 
 508.336 +	
 508.337 +	Called when a character is added to or deleted from the inline text. 
 508.338 +	
 508.339 +	The descriptor aNewInlineText contains the entire new inline text string, 
 508.340 +	not just the new text to be combined with the old inline text.
 508.341 +	
 508.342 +	@param aNewInlineText Descriptor which holds the entire new inline text string.
 508.343 +	@param aPositionOfInsertionPointInInlineText The position of the insertion 
 508.344 +	point (i.e. the cursor) within the inline text string aNewInlineText. This 
 508.345 +	is an offset from the start of the string. */
 508.346 +	virtual void UpdateFepInlineTextL(const TDesC& aNewInlineText, TInt aPositionOfInsertionPointInInlineText)=0;
 508.347 +	/** Sets the visibility of the text cursor in the text editor.
 508.348 +	
 508.349 +	The cursor visibility is initialised using StartFepInlineEditL(). SetInlineEditingCursorVisibilityL() 
 508.350 +	is provided for FEPs which need to change the visibility of the cursor during 
 508.351 +	the inline editing transaction.
 508.352 +	
 508.353 +	@param aCursorVisibility ETrue for visible text cursor, EFalse for invisible 
 508.354 +	text cursor. */
 508.355 +	virtual void SetInlineEditingCursorVisibilityL(TBool aCursorVisibility)=0;
 508.356 +	IMPORT_C void CommitFepInlineEditL(CCoeEnv& aConeEnvironment);
 508.357 +	/** Cancels the inline editing transaction. 
 508.358 +	
 508.359 +	The edit window should be rolled back to the state it was in before the FEP 
 508.360 +	transaction started, i.e. any inline text in the document which has not yet 
 508.361 +	been committed should be removed. If the inline text has replaced existing text, 
 508.362 +	(e.g. a selection) the replaced text should be reinstated. */
 508.363 +	virtual void CancelFepInlineEdit()=0;
 508.364 +	// with regard to the behaviour of the following functions (except GetScreenCoordinatesForFepL), 
 508.365 +	// note that when inline editing, the contents of the editor will be such that the text constituting 
 508.366 +	// the selection immediately prior to inline editing will be replaced by the inline text 
 508.367 +	// (CancelFepInlineEdit reinstates the previous selection)
 508.368 +	/** Returns the total number of characters in the text editor.
 508.369 +	
 508.370 +	@return The total number of characters in the text editor. */
 508.371 +	virtual TInt DocumentLengthForFep() const=0;
 508.372 +	/** Returns the upper limit (if any) on the length of text that the text editor 
 508.373 +	can hold.
 508.374 +	
 508.375 +	@return The maximum number of characters that the text editor can hold. */
 508.376 +	virtual TInt DocumentMaximumLengthForFep() const=0;
 508.377 +	/** Sets the range of characters in the text editor which should be selected.
 508.378 +	
 508.379 +	@param aCursorSelection Contains the cursor and anchor positions for the selection. */
 508.380 +	virtual void SetCursorSelectionForFepL(const TCursorSelection& aCursorSelection)=0;
 508.381 +	/** Gets the range of characters in the text editor which are selected.
 508.382 +	
 508.383 +	@param aCursorSelection On return, contains the cursor and anchor positions 
 508.384 +	of the selection. */
 508.385 +	virtual void GetCursorSelectionForFep(TCursorSelection& aCursorSelection) const=0;
 508.386 +	/** Copies a portion of the text editor's text content into a descriptor.
 508.387 +	
 508.388 +	@param aEditorContent A descriptor; on return contains a copy of a portion 
 508.389 +	of the text.
 508.390 +	@param aDocumentPosition The document position in the text editor from which 
 508.391 +	to copy.
 508.392 +	@param aLengthToRetrieve The number of characters to copy. */
 508.393 +	virtual void GetEditorContentForFep(TDes& aEditorContent, TInt aDocumentPosition, TInt aLengthToRetrieve) const=0;
 508.394 +	/** Gets the character formatting which applies to the document position specified. 
 508.395 +
 508.396 +	This function allows FEPs to find out the ambient formatting so that the FEP 
 508.397 +	can choose a format for the inline text that will clearly differentiate it 
 508.398 +	from the surrounding text.
 508.399 +	
 508.400 +	@param aFormat On return, contains the character formatting which applies 
 508.401 +	to the character at aDocumentPosition.
 508.402 +	@param aDocumentPosition The document position of interest. */
 508.403 +	virtual void GetFormatForFep(TCharFormat& aFormat, TInt aDocumentPosition) const=0;
 508.404 +	/** Gets the x,y screen coordinates for the left hand side of the baseline of the 
 508.405 +	character located at a specified document position. 
 508.406 +
 508.407 +	Also gets the height (ascent + descent) and ascent of the font of the character. 
 508.408 +	This function could be used to position the FEP window as close as possible to 
 508.409 +	the insertion point in the text editor.
 508.410 +	
 508.411 +	@param aLeftSideOfBaseLine On return, contains the x,y coordinates of the 
 508.412 +	left side of the baseline of the character located at aDocumentPosition.
 508.413 +	@param aHeight On return, contains the height (ascent + descent) of the font 
 508.414 +	of the character at aDocumentPosition.
 508.415 +	@param aAscent On return, contains the ascent of the font of the character 
 508.416 +	at aDocumentPosition.
 508.417 +	@param aDocumentPosition The document position of interest. */
 508.418 +	virtual void GetScreenCoordinatesForFepL(TPoint& aLeftSideOfBaseLine, TInt& aHeight, TInt& aAscent, TInt aDocumentPosition) const=0;
 508.419 +	
 508.420 +	IMPORT_C MCoeFepAwareTextEditor_Extension1* Extension1();
 508.421 +private:
 508.422 +	/** Private function called by CommitFepInlineEditL(). 
 508.423 +	
 508.424 +	Implementations should commit the inline text to the document. This 
 508.425 +	ends the inline editing transaction and causes the inline text to 
 508.426 +	become a part of the document. 
 508.427 +
 508.428 +	@publishedAll
 508.429 +	@released */
 508.430 +	virtual void DoCommitFepInlineEditL()=0;
 508.431 +	IMPORT_C virtual MCoeFepAwareTextEditor_Extension1* Extension1(TBool& aSetToTrue);
 508.432 +private: // reserved. do not override!	
 508.433 +	IMPORT_C virtual void MCoeFepAwareTextEditor_Reserved_2();
 508.434 +	};
 508.435 +
 508.436 +
 508.437 +class MLayDoc;
 508.438 +
 508.439 +/**
 508.440 +MCoeFepLayDocExtension is an interface class which should be derived from by test editors to
 508.441 +provide access to the current MLayDoc object, and to set a new MLayDoc object.
 508.442 +Used directly from the FEP to decorate the inline edit text, without changing
 508.443 +the actual document text.
 508.444 +
 508.445 +@publishedAll 
 508.446 +@released  
 508.447 +*/
 508.448 +class MCoeFepLayDocExtension
 508.449 +	{
 508.450 +public:
 508.451 +	/**
 508.452 +	Retrives the current MLayDoc object from the text editor
 508.453 +	
 508.454 +	@return Pointer to a MLayDoc object.
 508.455 +	*/
 508.456 +	virtual MLayDoc* GetCurrentMLayDoc() const = 0;
 508.457 +	
 508.458 +	/**
 508.459 +	Sets a new MLayDoc object into the CTextLayout object
 508.460 +	
 508.461 +	@param aLayDoc The new layout document
 508.462 +	*/
 508.463 +	virtual void SetMLayDoc(MLayDoc* aLayDoc) = 0;
 508.464 +	
 508.465 +	/**
 508.466 +	Retrives inline edit positioning information from the editor
 508.467 +	@param 	"TInt& aPositionInDocument" 		Position of the text in the document
 508.468 +	@param 	"TInt& aCursorPositionInDocument" 	Position of the cursor in the document
 508.469 +	@param 	"TInt& aSelectionLength"			The number of characters in the selected text
 508.470 +	*/	 
 508.471 +	virtual void GetFepEditorState(TInt& aPositionInDocument, TInt& aCursorPositionInDocument, TInt& aSelectionLength) = 0;
 508.472 +
 508.473 +	/**
 508.474 +	Used to tell the editor when the size of the inline edit has changed, so
 508.475 +	the text layout can update itself. Should be called before and after the inline
 508.476 +	edit has been decorated.
 508.477 +	@param     	"TCursorSelection aSelection" 	Position of the line edit from the beginning of the text
 508.478 +    @param     	"TInt aDeletedChars" 			Number of character deleted since the last time the text was formatted.
 508.479 +	
 508.480 +	*/
 508.481 +	virtual void HandleInsertDeleteL(TCursorSelection aSelection,TInt aDeletedChars) = 0;
 508.482 +private: // reserved. do not override!	
 508.483 +	IMPORT_C virtual void MCoeFepLayDocExtension_Reserved_1();
 508.484 +	IMPORT_C virtual void MCoeFepLayDocExtension_Reserved_2();
 508.485 +	};
 508.486 +
 508.487 +
 508.488 +/** An interface class which may be derived from by text editors to enable FEPs 
 508.489 +to store state information inside the editor. 
 508.490 +To be overridden by text-editors
 508.491 +
 508.492 +The CState class, defined within the scope of MCoeFepAwareTextEditor_Extension1 
 508.493 +represents the state information. This is information specific to the control 
 508.494 +which is only of interest to the FEP.
 508.495 +
 508.496 +A class which implements this interface must implement the pure virtual functions 
 508.497 +State() and SetStateTransferingOwnershipL() , to get and set the state. The 
 508.498 +class should also implement the MCoeFepAwareTextEditor interface. It must 
 508.499 +override the private virtual MCoeFepAwareTextEditor::Extension1() to return 
 508.500 +a pointer to itself (the default implementation returns NULL). The private 
 508.501 +virtual MCoeFepAwareTextEditor::Extension1() function is called by the public, 
 508.502 +non-virtual MCoeFepAwareTextEditor::Extension1() function.
 508.503 +
 508.504 +For example, if a FEP wants to set some state information in a text editor 
 508.505 +which is about to lose focus, the FEP should first call the editor's Extension1() 
 508.506 +function. If this returns non-NULL, the FEP should call the editor's implementation 
 508.507 +of SetStateTransferingOwnershipL() , passing in an object of a class derived 
 508.508 +from CState , which holds the state information. It should also pass in a 
 508.509 +UID which uniquely identifies the FEP. Later, when focus returns to the editor, 
 508.510 +the FEP can call State() to retrieve the state information it previously set. 
 508.511 +Note that CState has several reserved functions, to enable it to be extended 
 508.512 +in future, while retaining backwards compatibility. 
 508.513 +
 508.514 +@publishedAll 
 508.515 +@released */
 508.516 +class MCoeFepAwareTextEditor_Extension1 
 508.517 +	{
 508.518 +public:
 508.519 +	class CState : public CBase
 508.520 +	/** State information for a text editor control. 
 508.521 +	This is information specific to the control which is only of interest to the 
 508.522 +	FEP which sets it. */
 508.523 +		{
 508.524 +	protected:
 508.525 +		IMPORT_C CState();
 508.526 +		IMPORT_C void BaseConstructL();
 508.527 +	public:
 508.528 +		IMPORT_C virtual ~CState();
 508.529 +	private: // reserved. do not override!	
 508.530 +		IMPORT_C virtual void CState_Reserved_1();
 508.531 +		IMPORT_C virtual void CState_Reserved_2();
 508.532 +		IMPORT_C virtual void CState_Reserved_3();
 508.533 +		IMPORT_C virtual void CState_Reserved_4();
 508.534 +	private:
 508.535 +		TAny* iSpareForFutureUse;
 508.536 +		};
 508.537 +public:
 508.538 +	/** Sets state information in the text editor.
 508.539 +	
 508.540 +	This function must only transfer ownership of the state object after it has 
 508.541 +	successfully done everything that can leave.
 508.542 +	
 508.543 +	@param aState Pointer to the state information object.
 508.544 +	@param aTypeSafetyUid A UID which uniquely identifies the FEP which is calling 
 508.545 +	this function. The text editor should store this value for use by the State() 
 508.546 +	function. */
 508.547 +	virtual void SetStateTransferingOwnershipL(CState* aState, TUid aTypeSafetyUid)=0; // this function must only transfer ownership after it has successfully done everything that can leave
 508.548 +	/** Gets the state information previously set using SetStateTransferingOwnershipL(). 
 508.549 +
 508.550 +	This function does not transfer ownership. The function should first check 
 508.551 +	that aTypeSafetyUid matches the UID value previously specified by SetStateTransferingOwnershipL(). 
 508.552 +	If it doesn't match, the function should return NULL.
 508.553 +	
 508.554 +	@param aTypeSafetyUid A UID which uniquely identifies the FEP which is calling 
 508.555 +	this function. The purpose of this is to enable the FEP to safely downcast 
 508.556 +	the CState pointer returned by this function to a pointer to a derived class 
 508.557 +	known about by the FEP.
 508.558 +	@return Pointer to the state information object. */
 508.559 +	virtual CState* State(TUid aTypeSafetyUid)=0;
 508.560 +public:
 508.561 +	/** Updates the inline text. 
 508.562 +	
 508.563 +	Called when a character is added to or deleted from the inline text. 
 508.564 +	
 508.565 +	The descriptor aNewInlineText contains the entire new inline text string, 
 508.566 +	not just the new text to be combined with the old inline text.
 508.567 +	
 508.568 +	@param aSetToTrue 		Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
 508.569 +							this is the implemented version and not the previous reserved funtion.
 508.570 +	@param aCursorSelection The position of any hilighted text.
 508.571 +	@param aNewInlineText 	Descriptor which holds the entire new inline text string.
 508.572 +	@param aPositionOfInsertionPointInInlineText 
 508.573 +	The position of the insertion point (i.e. the cursor) within the inline text string aNewInlineText. 
 508.574 +	This is an offset from the start of the string. 
 508.575 +	*/
 508.576 +	IMPORT_C virtual void StartFepInlineEditL(TBool& aSetToTrue, const TCursorSelection& aCursorSelection, 
 508.577 +		const TDesC& aInitialInlineText, TInt aPositionOfInsertionPointInInlineText, TBool aCursorVisibility, 
 508.578 +		const MFormCustomDraw* aCustomDraw, MFepInlineTextFormatRetriever& aInlineTextFormatRetriever, 
 508.579 +		MFepPointerEventHandlerDuringInlineEdit& aPointerEventHandlerDuringInlineEdit);
 508.580 +	
 508.581 +	/** Changes the cursor displayed to indicate different modes of operation. For example how text is enterered
 508.582 +	@param aSetToTrue 		Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
 508.583 +							this is the implemented version and not the previously reserved funtion.
 508.584 +	@param aTextCursor		The new cursor to be displayed.
 508.585 +	*/	
 508.586 +	IMPORT_C virtual void SetCursorType(TBool& aSetToTrue, const TTextCursor& aTextCursor);
 508.587 +	
 508.588 +	/**
 508.589 +	Retrieves the current MCoeFepLayDocExtension object from the text editor
 508.590 +	@param aSetToTrue 		Boolean set to EFalse by the caller and subsequently to ETrue by the function indicating that
 508.591 +							this is the implemented version and not the previously reserved funtion.
 508.592 +	*/
 508.593 +	IMPORT_C virtual MCoeFepLayDocExtension* GetFepLayDocExtension(TBool& aSetToTrue);
 508.594 +private: // reserved. do not override!	
 508.595 +	IMPORT_C virtual void MCoeFepAwareTextEditor_Extension1_Reserved_4();
 508.596 +	};
 508.597 +
 508.598 +
 508.599 +/** Retrieves a control's caption for use by a FEP. 
 508.600 +
 508.601 +An example of a caption is the non-editable text description displayed 
 508.602 +alongside each item in a dialog.
 508.603 +
 508.604 +TCoeInputCapabilities::CaptionRetrieverForFep() returns a pointer to an object 
 508.605 +of this class. A NULL return value indicates that the interface is not supported 
 508.606 +by any of the currently focused controls. If not NULL, call GetCaptionForFep(), 
 508.607 +which fills the supplied buffer with the control's caption, truncating it 
 508.608 +if the supplied buffer is too small for the whole caption. 
 508.609 +
 508.610 +@publishedAll
 508.611 +@released */
 508.612 +class MCoeCaptionRetrieverForFep // to be overridden by captioned-controls
 508.613 +	{
 508.614 +public:
 508.615 +	/** An implementation of this function should fill aCaption with the target control's 
 508.616 +	caption (or as much of the caption as will fit).
 508.617 +	
 508.618 +	For example, code similar to the following might be used (assuming that your caption is 
 508.619 +	stored internally in iCaption):
 508.620 +	
 508.621 +	@code
 508.622 +	const TInt maximumLength=aCaption.MaxLength();
 508.623 +	if (iCaption.Length()>maximumLength)
 508.624 +	    aCaption=iCaption.Left(maximumLength);
 508.625 +	else
 508.626 +	    aCaption=iCaption;
 508.627 +
 508.628 +	@endcode
 508.629 +	@param aCaption On return, this should be set to the caption of the target 
 508.630 +	control. */
 508.631 +	virtual void GetCaptionForFep(TDes& aCaption) const=0; // gets as much as will fit in aCaption
 508.632 +private: // reserved. do not override!	
 508.633 +	IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_1();
 508.634 +	IMPORT_C virtual void MCoeCaptionRetrieverForFep_Reserved_2();
 508.635 +	};
 508.636 +
 508.637 +#endif	// __FEPBASE_H__
   509.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   509.2 +++ b/epoc32/include/mw/fepbconfig.h	Wed Mar 31 12:27:01 2010 +0100
   509.3 @@ -0,0 +1,226 @@
   509.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   509.5 +// All rights reserved.
   509.6 +// This component and the accompanying materials are made available
   509.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   509.8 +// which accompanies this distribution, and is available
   509.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  509.10 +//
  509.11 +// Initial Contributors:
  509.12 +// Nokia Corporation - initial contribution.
  509.13 +//
  509.14 +// Contributors:
  509.15 +//
  509.16 +// Description:
  509.17 +//
  509.18 +
  509.19 +#ifndef __FEPBCONFIG_H__
  509.20 +#define __FEPBCONFIG_H__
  509.21 +
  509.22 +#include <e32base.h>
  509.23 +#include <coemain.h>	// class CCoeEnv
  509.24 +
  509.25 +class CRepository;
  509.26 +
  509.27 +/** Specifies the maximum size of a FEP attribute in bytes.
  509.28 +
  509.29 +@publishedAll
  509.30 +@released */
  509.31 +const TInt KCoeFepMaxAttribDataSize = 200;
  509.32 +
  509.33 +
  509.34 +/** On or off key data for FEPs. 
  509.35 +
  509.36 +The CCoeFep class uses instances of this class to specify the key combination which 
  509.37 +is used to turn the FEP on and off. These values are initialised during construction 
  509.38 +of the FEP (see CCoeFep::BaseConstructL()).
  509.39 +
  509.40 +The class consists of three TUints. They represent: 
  509.41 +
  509.42 +- the character code of the key combination
  509.43 +
  509.44 +- a modifier mask which indicates which modifiers are relevant to the key combination
  509.45 +
  509.46 +- the modifier values which indicate which of the modifiers specified in the 
  509.47 +modifier mask must be on and which must be off
  509.48 +
  509.49 +For example, if the key combination to turn the FEP off is Fn+Enter, where 
  509.50 +the Shift modifier must not be down (and the state of all other modifiers 
  509.51 +is irrelevant), the TFepOnOrOffKeyData object would be constructed as follows:
  509.52 +
  509.53 +@code
  509.54 +TFepOnOrOffKeyData(EKeyEnter, EModifierFunc|EModifierShift, EModifierFunc) 
  509.55 +@endcode
  509.56 +
  509.57 +Note that modifiers should not be set in the values if they are not also set 
  509.58 +in the mask. 
  509.59 +
  509.60 +@publishedAll 
  509.61 +@released */
  509.62 +class TFepOnOrOffKeyData
  509.63 +	{
  509.64 +public:
  509.65 +	inline TFepOnOrOffKeyData(TUint aCharacterCodeForFoldedMatch, TUint aModifierMask, TUint aModifierValues) :iCharacterCodeForFoldedMatch(aCharacterCodeForFoldedMatch), iModifierMask(aModifierMask), iModifierValues(aModifierValues) 
  509.66 +	/** The C++ constructor is used to construct the key data object with the character 
  509.67 +	code, the modifier mask and the modifier values.
  509.68 +	
  509.69 +	@param aCharacterCodeForFoldedMatch The character code.
  509.70 +	@param aModifierMask The modifier mask.
  509.71 +	@param aModifierValues The modifier values. */
  509.72 +		{}
  509.73 +
  509.74 +	inline TUint CharacterCodeForFoldedMatch() const 
  509.75 +	/** Gets the character code.
  509.76 +	
  509.77 +	@return The character code. */
  509.78 +		{return iCharacterCodeForFoldedMatch;}
  509.79 +	inline TUint ModifierMask() const 
  509.80 +	/** Gets the modifier mask.
  509.81 +	
  509.82 +	@return The modifier mask. */
  509.83 +		{return iModifierMask;}
  509.84 +	inline TUint ModifierValues() const 
  509.85 +	/** Gets the modifier values.
  509.86 +	
  509.87 +	@return The modifier values. */
  509.88 +		{return iModifierValues;}
  509.89 +	/**
  509.90 +	Checks if 2 TFepOnOrOffKeyData objects have the same values.
  509.91 +
  509.92 +	returns Etrue if the 2 objects have the same values, EFalse otherwise
  509.93 +	*/
  509.94 +	IMPORT_C TBool operator==(const TFepOnOrOffKeyData& aAnother) const;
  509.95 +	
  509.96 +	
  509.97 +	/**
  509.98 +	Checks if 2 TFepOnOrOffKeyData objects do not have the the same values.
  509.99 +	
 509.100 +	returns Etrue if the 2 objects have the same values, EFalse otherwise
 509.101 +	*/
 509.102 +	IMPORT_C TBool operator!=(const TFepOnOrOffKeyData& aAnother) const;
 509.103 +private:
 509.104 +	TUint iCharacterCodeForFoldedMatch;
 509.105 +	TUint iModifierMask;
 509.106 +	TUint iModifierValues;
 509.107 +	};
 509.108 +
 509.109 +class CDictionaryStore;
 509.110 +class RWriteStream;
 509.111 +class RReadStream;
 509.112 +
 509.113 +
 509.114 +/** Reads and writes generic FEP settings.
 509.115 +
 509.116 +Used by the CCoeFep class. The generic FEP settings are whether the FEP is 
 509.117 +on or off and what key combinations should turn the FEP on or off. Also used 
 509.118 +to synchronise these settings across all running instances of the FEP. These 
 509.119 +settings are generic, unlike FEP attributes which are FEP-specific. FEP attributes 
 509.120 +are stored, restored and synchronised using class MFepAttributeStorer. Generic 
 509.121 +FEP settings are changed locally using the Set...() member functions. Then, 
 509.122 +to store these as the system settings and to apply them globally, call StoreChangesAndBroadcastL().
 509.123 +
 509.124 +Class CCoeFep initialises its generic FEP settings from the global system 
 509.125 +settings during construction. Its generic FEP settings are updated when the 
 509.126 +settings are changed by a call to StoreChangesAndBroadcastL() by another running 
 509.127 +instance of the FEP. 
 509.128 +
 509.129 +@publishedAll
 509.130 +@released */
 509.131 +class CFepGenericGlobalSettings : public CBase
 509.132 +	{
 509.133 +public:
 509.134 +	IMPORT_C static CFepGenericGlobalSettings* NewL(CCoeEnv& aConeEnvironment, const TFepOnOrOffKeyData& aDefaultOnKeyData, const TFepOnOrOffKeyData& aDefaultOffKeyData, TBool aDefaultIsOn);
 509.135 +	IMPORT_C static CFepGenericGlobalSettings* NewLC(CCoeEnv& aConeEnvironment, const TFepOnOrOffKeyData& aDefaultOnKeyData, const TFepOnOrOffKeyData& aDefaultOffKeyData, TBool aDefaultIsOn);
 509.136 +	IMPORT_C static CFepGenericGlobalSettings* NewL();
 509.137 +	IMPORT_C static CFepGenericGlobalSettings* NewLC();
 509.138 +	IMPORT_C TFepOnOrOffKeyData OnKeyData() const;
 509.139 +	IMPORT_C void SetOnKeyData(const TFepOnOrOffKeyData& aOnKeyData);
 509.140 +	IMPORT_C TFepOnOrOffKeyData OffKeyData() const;
 509.141 +	IMPORT_C void SetOffKeyData(const TFepOnOrOffKeyData& aOffKeyData);
 509.142 +	IMPORT_C TBool IsOn() const;
 509.143 +	IMPORT_C void SetIsOn(TBool aIsOn);
 509.144 +	IMPORT_C void StoreChangesAndBroadcastL();
 509.145 +	IMPORT_C void RefreshL();
 509.146 +public: // not for external use
 509.147 +	IMPORT_C static void ReadOnState(CRepository& aRepository, TBool& aOnState, TInt* aError=NULL);
 509.148 +	IMPORT_C static void ReadOnOrOffKeyData(CRepository& aRepository, TFepOnOrOffKeyData& aOnOrOffKeyData, TUint32 aRepositoryKeyMask_OnOrOff, TInt* aError=NULL);
 509.149 +	IMPORT_C static void WriteOnStateAndBroadcastL(CRepository& aRepository, TBool aOnState, TUint32 aRepositoryKeyMask_DefaultOrDynamic);
 509.150 +	IMPORT_C static void WriteOnOrOffKeyDataAndBroadcastL(CRepository& aRepository, const TFepOnOrOffKeyData& aOnOrOffKeyData, TUint32 aRepositoryKey);
 509.151 +private:
 509.152 +	CFepGenericGlobalSettings();
 509.153 +	void ConstructL();
 509.154 +private:
 509.155 +	enum
 509.156 +		{
 509.157 +		EFlagIsOn				=0x00000001,
 509.158 +		// the EFlagStoreXxx flags below indicate whether this object has had any SetXxx functions called on it, which can be used to optimize what work StoreChangesAndBroadcastL has to do
 509.159 +		EFlagStoreIsOn			=0x00000002,
 509.160 +		EFlagStoreOnKeyData		=0x00000004,
 509.161 +		EFlagStoreOffKeyData	=0x00000008
 509.162 +		};
 509.163 +private:
 509.164 +	TUint iFlags;
 509.165 +	TFepOnOrOffKeyData iOnKeyData;
 509.166 +	TFepOnOrOffKeyData iOffKeyData;
 509.167 +	};
 509.168 +
 509.169 +
 509.170 +/** Protocol for storing, restoring and synchronising FEP attributes. 
 509.171 +
 509.172 +An abstract base class for CCoeFep, so FEPs must implement the pure virtual 
 509.173 +functions declared in this class.
 509.174 +
 509.175 +Rather than using a single device-wide instance of a FEP, each application 
 509.176 +has its own instance of the FEP. MFepAttributeStorer provides a framework 
 509.177 +for synchronising FEP attributes across each running instance of the same 
 509.178 +FEP. For this to happen, the FEP must implement MFepAttributeStorer::WriteAttributeDataToStreamL() 
 509.179 +and MFepAttributeStorer::ReadAttributeDataFromStreamL().
 509.180 +
 509.181 +Attributes are FEP-specific, and are identified by a UID which can be accessed 
 509.182 +using AttributeAtIndex(). An example of a FEP attribute might be whether inline 
 509.183 +editing is enabled or disabled. 
 509.184 +
 509.185 +@publishedAll 
 509.186 +@released */
 509.187 +class MFepAttributeStorer
 509.188 +	{
 509.189 +public:
 509.190 +	IMPORT_C void ReadAllAttributesL(CCoeEnv& aConeEnvironment);
 509.191 +	IMPORT_C void WriteAttributeDataAndBroadcastL(CCoeEnv& aConeEnvironment, TUid aAttributeUid);
 509.192 +	IMPORT_C void WriteAttributeDataAndBroadcastL(CCoeEnv& aConeEnvironment, const TArray<TUid>& aAttributeUids);
 509.193 +	/** Returns the total number of FEP attributes.
 509.194 +	
 509.195 +	@return The number of FEP attributes. */
 509.196 +	virtual TInt NumberOfAttributes() const=0;
 509.197 +	/** Returns the UID of the FEP attribute at the index specified.
 509.198 +	
 509.199 +	@param aIndex An array index.
 509.200 +	@return The UID of the FEP attribute at aIndex. */
 509.201 +	virtual TUid AttributeAtIndex(TInt aIndex) const=0;
 509.202 +	/** Writes the value of the attribute specified to the specified write stream.
 509.203 +	
 509.204 +	Called by MFepAttributeStorer::WriteAttributeDataAndBroadcastL() for each 
 509.205 +	attribute passed to it.
 509.206 +	
 509.207 +	@param aAttributeUid UID of the attribute to write to the stream.
 509.208 +	@param aStream The stream to which to write the attribute. */
 509.209 +	virtual void WriteAttributeDataToStreamL(TUid aAttributeUid, RWriteStream& aStream) const=0;
 509.210 +	/** Reads the value of the attribute identified by the UID specified in aAttributeUid 
 509.211 +	from the specified read stream.
 509.212 +	
 509.213 +	You should take appropriate action if the attribute has changed, e.g. 
 509.214 +	if inline editing has been disabled, you might cancel the current transaction.
 509.215 +	
 509.216 +	This function is called by MFepAttributeStorer::ReadAllAttributesL() for all 
 509.217 +	attributes. It is also called when the FEP receives a message that an attribute 
 509.218 +	has been changed by another running instance of the FEP (using WriteAttributeDataAndBroadcastL()).
 509.219 +	
 509.220 +	@param aAttributeUid Identifies the attribute whose value should be read.
 509.221 +	@param aStream Read stream from which to read the attribute's value. */
 509.222 +	virtual void ReadAttributeDataFromStreamL(TUid aAttributeUid, RReadStream& aStream)=0;
 509.223 +private:
 509.224 +	IMPORT_C virtual void MFepAttributeStorer_Reserved_1();
 509.225 +	IMPORT_C virtual void MFepAttributeStorer_Reserved_2();
 509.226 +	TInt NumberOfOccurrencesOfAttributeUid(TUid aAttributeUid) const;
 509.227 +	};
 509.228 +
 509.229 +#endif	// __FEPBCONFIG_H__
   510.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   510.2 +++ b/epoc32/include/mw/fepbutils.h	Wed Mar 31 12:27:01 2010 +0100
   510.3 @@ -0,0 +1,137 @@
   510.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   510.5 +// All rights reserved.
   510.6 +// This component and the accompanying materials are made available
   510.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   510.8 +// which accompanies this distribution, and is available
   510.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  510.10 +//
  510.11 +// Initial Contributors:
  510.12 +// Nokia Corporation - initial contribution.
  510.13 +//
  510.14 +// Contributors:
  510.15 +//
  510.16 +// Description:
  510.17 +//
  510.18 +
  510.19 +#ifndef __FEPBUTILS_H__
  510.20 +#define __FEPBUTILS_H__
  510.21 +
  510.22 +
  510.23 +
  510.24 +
  510.25 +/** Macro to be called by a keyboard-based FEP at the start of its CCoeControl::OfferKeyEventL()-overriding 
  510.26 +function.
  510.27 +
  510.28 +It causes key up and key down events to be consumed so that the FEP only receives 
  510.29 +standard key events (of type EEventKey, see the TEventCode enumeration). It 
  510.30 +also causes key events that turn the FEP on or off to be consumed. If the 
  510.31 +FEP is simulating key events, or is off, no key events are consumed (so that 
  510.32 +all are passed on to the underlying application) and the macro returns with 
  510.33 +EKeyWasNotConsumed.
  510.34 +
  510.35 +This should be the first thing called in the OfferKeyEventL() function. The 
  510.36 +FEP_END_KEY_EVENT_HANDLER_L macro should be used to return from the function.
  510.37 +
  510.38 +@param aFep The CCoeFep object, should not be a pointer
  510.39 +@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
  510.40 +@param aEventCode The TEventCode object from OfferKeyEventL()
  510.41 +
  510.42 +@see TEventCode 
  510.43 +@publishedAll
  510.44 +@released */
  510.45 +#define FEP_START_KEY_EVENT_HANDLER_L(aFep, aKeyEvent, aEventCode)\
  510.46 +	{\
  510.47 +	if ((aFep).IsSimulatingKeyEvent())\
  510.48 +		{\
  510.49 +		return EKeyWasNotConsumed;\
  510.50 +		}\
  510.51 +	(aFep).OnStartingHandlingKeyEvent_WithDownUpFilterLC();\
  510.52 +	if (((aEventCode)!=EEventKey))\
  510.53 +		{\
  510.54 +		return (aFep).OnFinishingHandlingKeyEvent_WithDownUpFilterL((aEventCode), (aKeyEvent), EKeyWasConsumed);\
  510.55 +		}\
  510.56 +	if (!(aFep).IsOn())\
  510.57 +		{\
  510.58 +		return (aFep).OnFinishingHandlingKeyEvent_WithDownUpFilterL((aEventCode), (aKeyEvent), EKeyWasNotConsumed);\
  510.59 +		}\
  510.60 +	}
  510.61 +
  510.62 +/** Macro to be called by a keyboard-based FEP to return from its CCoeControl::OfferKeyEventL()-overriding 
  510.63 +function.
  510.64 +
  510.65 +It should be used instead of the return statement. It should only be used 
  510.66 +if the FEP_START_KEY_EVENT_HANDLER_L macro was used at the start of the function. 
  510.67 +
  510.68 +@param aFep The CCoeFep object, should not be a pointer
  510.69 +@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
  510.70 +@param aKeyResponse Defined in EPOC32\INCLUDE\COEDEF.H 
  510.71 +					If set to EKeyWasNotConsumed, allows the key event to reach the underlying application. 
  510.72 +					If set to EKeyWasConsumed, prevents the key event reaching the underlying application.
  510.73 +
  510.74 +@publishedAll
  510.75 +@released */
  510.76 +#define FEP_END_KEY_EVENT_HANDLER_L(aFep, aKeyEvent, aKeyResponse)\
  510.77 +	{\
  510.78 +	return (aFep).OnFinishingHandlingKeyEvent_WithDownUpFilterL(EEventKey, (aKeyEvent), (aKeyResponse));\
  510.79 +	}
  510.80 +
  510.81 +/** Macro to be called by a keyboard-based FEP at the start of its CCoeControl::OfferKeyEventL()-overriding 
  510.82 +function.
  510.83 +
  510.84 +It causes events that turn the FEP on or off to be consumed. This variant 
  510.85 +of the macro ignores key up and key down events so that it should be used 
  510.86 +in preference to FEP_START_KEY_EVENT_HANDLER_L in the rare cases where the 
  510.87 +FEP wishes to handle EEventKeyDown or EEventKeyUp events. If the FEP is simulating 
  510.88 +key events, or is off, no key events are consumed and OfferKeyEventL() returns 
  510.89 +with EKeyWasNotConsumed. 
  510.90 +
  510.91 +This should be the first thing called in the OfferKeyEventL() function. The 
  510.92 +FEP_END_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L macro should be used to return 
  510.93 +from the function. 
  510.94 +
  510.95 +@param aFep The CCoeFep object, should not be a pointer
  510.96 +@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
  510.97 +@param aEventCode The TEventCode object from OfferKeyEventL()
  510.98 +
  510.99 +@publishedAll
 510.100 +@released */
 510.101 +#define FEP_START_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L(aFep, aKeyEvent, aEventCode)\
 510.102 +	{\
 510.103 +	if ((aFep).IsSimulatingKeyEvent())\
 510.104 +		{\
 510.105 +		return EKeyWasNotConsumed;\
 510.106 +		}\
 510.107 +	(aFep).OnStartingHandlingKeyEvent_NoDownUpFilterLC();\
 510.108 +	if ((aEventCode)==EEventKey)\
 510.109 +		{\
 510.110 +		if (!(aFep).IsOn())\
 510.111 +			{\
 510.112 +			return (aFep).OnFinishingHandlingKeyEvent_NoDownUpFilterL((aEventCode), (aKeyEvent), EKeyWasNotConsumed);\
 510.113 +			}\
 510.114 +		}\
 510.115 +	}
 510.116 +
 510.117 +/** Macro to be called by a keyboard-based FEP to return from its CCoeControl::OfferKeyEventL()-overriding 
 510.118 +function.
 510.119 +
 510.120 +It should be used instead of the return statement. This variant of the macro 
 510.121 +should only be used if the FEP_START_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L 
 510.122 +macro was used at the start of the function. 
 510.123 +
 510.124 +@param aFep The CCoeFep object, should not be a pointer
 510.125 +@param aKeyEvent The TKeyEvent object from OfferKeyEventL()
 510.126 +@param aEventCode The TEventCode object from OfferKeyEventL()
 510.127 +@param aKeyResponse Defined in EPOC32\INCLUDE\COEDEF. 
 510.128 +					If set to EKeyWasNotConsumed, allows the key event to reach the underlying application. 
 510.129 +					If set to EKeyWasConsumed, prevents the key event reaching the underlying application.
 510.130 +
 510.131 +@publishedAll
 510.132 +@released */
 510.133 +#define FEP_END_KEY_EVENT_HANDLER_NO_DOWN_UP_FILTER_L(aFep, aKeyEvent, aEventCode, aKeyResponse)\
 510.134 +	{\
 510.135 +	return (aFep).OnFinishingHandlingKeyEvent_NoDownUpFilterL((aEventCode), (aKeyEvent), (aKeyResponse));\
 510.136 +	}
 510.137 +
 510.138 +
 510.139 +
 510.140 +#endif // __FEPBUTILS_H__
   511.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   511.2 +++ b/epoc32/include/mw/fepplugin.h	Wed Mar 31 12:27:01 2010 +0100
   511.3 @@ -0,0 +1,59 @@
   511.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   511.5 +// All rights reserved.
   511.6 +// This component and the accompanying materials are made available
   511.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   511.8 +// which accompanies this distribution, and is available
   511.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  511.10 +//
  511.11 +// Initial Contributors:
  511.12 +// Nokia Corporation - initial contribution.
  511.13 +//
  511.14 +// Contributors:
  511.15 +//
  511.16 +// Description:
  511.17 +//
  511.18 +
  511.19 +#ifndef __FEPPLUGIN_H__
  511.20 +#define __FEPPLUGIN_H__
  511.21 +
  511.22 +#include <e32base.h>
  511.23 +
  511.24 +class CCoeEnv;
  511.25 +class CCoeFep;
  511.26 +class CCoeFepParameters;
  511.27 +
  511.28 +const TUid KUidFepPluginInterface = { 0x1020233F };
  511.29 +
  511.30 +/**
  511.31 +CCoeFepPlugIn
  511.32 +Abstract base class for FEP plug ins
  511.33 +@publishedAll
  511.34 +@released
  511.35 +*/
  511.36 +class CCoeFepPlugIn : public CBase
  511.37 +	{
  511.38 +public:
  511.39 +	inline static CCoeFepPlugIn* NewL(TUid aFepUid);
  511.40 +	virtual ~CCoeFepPlugIn();
  511.41 +public:
  511.42 +	/** Creates a fully constructed object of CCoeFEP.
  511.43 +
  511.44 +	@param aConeEnvironment	A reference to the application's control environment.
  511.45 +	@param aFepParameters FEP parameters.
  511.46 +	@return A pointer to the newly created object.
  511.47 +	*/
  511.48 +	virtual CCoeFep* NewFepL(CCoeEnv& aConeEnvironment, const CCoeFepParameters& aFepParameters) = 0;
  511.49 +
  511.50 +	/** Runs the FEP settings dialog. 
  511.51 +	
  511.52 +	@param aConeEnvironment A reference to the application's control environment.
  511.53 +	*/
  511.54 +	virtual void SynchronouslyExecuteSettingsDialogL(CCoeEnv& aConeEnvironment) = 0;
  511.55 +
  511.56 +private:
  511.57 +	TUid iDtorTag;
  511.58 +	};
  511.59 +
  511.60 +#include <fepplugin.inl>
  511.61 +
  511.62 +#endif	// __FEPPLUGIN_H__
   512.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   512.2 +++ b/epoc32/include/mw/fepplugin.inl	Wed Mar 31 12:27:01 2010 +0100
   512.3 @@ -0,0 +1,43 @@
   512.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   512.5 +// All rights reserved.
   512.6 +// This component and the accompanying materials are made available
   512.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   512.8 +// which accompanies this distribution, and is available
   512.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  512.10 +//
  512.11 +// Initial Contributors:
  512.12 +// Nokia Corporation - initial contribution.
  512.13 +//
  512.14 +// Contributors:
  512.15 +//
  512.16 +// Description:
  512.17 +//
  512.18 +
  512.19 +#ifndef __FEPPLUGIN_INL__
  512.20 +#define __FEPPLUGIN_INL__
  512.21 +
  512.22 +#include <ecom/ecom.h>
  512.23 +
  512.24 +/**
  512.25 +Factory function to create and return a FEP plug-in with the specified UID.
  512.26 +
  512.27 +@return				A FEP plug-in object instance corresponding to the UID provided 
  512.28 +@param				aFepUid The UID of the FEP plug-in implementation to be loaded 
  512.29 +*/
  512.30 +inline CCoeFepPlugIn* CCoeFepPlugIn::NewL(TUid aFepUid)
  512.31 +	{ // static
  512.32 +	TAny* any = REComSession::CreateImplementationL(aFepUid, _FOFF(CCoeFepPlugIn, iDtorTag));
  512.33 +	CCoeFepPlugIn* feppi = reinterpret_cast<CCoeFepPlugIn*>(any);
  512.34 +	return feppi;
  512.35 +	}
  512.36 +
  512.37 +/**
  512.38 +Destructor that destroys the FEP plug-in.
  512.39 +*/
  512.40 +inline CCoeFepPlugIn::~CCoeFepPlugIn()
  512.41 +	{
  512.42 +	REComSession::DestroyedImplementation(iDtorTag);
  512.43 +	}
  512.44 +
  512.45 +
  512.46 +#endif // __FEPPLUGIN_INL__
   513.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   513.2 +++ b/epoc32/include/mw/grdcells.h	Wed Mar 31 12:27:01 2010 +0100
   513.3 @@ -0,0 +1,77 @@
   513.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   513.5 +// All rights reserved.
   513.6 +// This component and the accompanying materials are made available
   513.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   513.8 +// which accompanies this distribution, and is available
   513.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  513.10 +//
  513.11 +// Initial Contributors:
  513.12 +// Nokia Corporation - initial contribution.
  513.13 +//
  513.14 +// Contributors:
  513.15 +//
  513.16 +// Description:
  513.17 +//
  513.18 +
  513.19 +#if !defined(__GRDCELLS_H__)
  513.20 +#define __GRDCELLS_H__
  513.21 +
  513.22 +#if !defined(__E32STD_H__)
  513.23 +#include <e32std.h>
  513.24 +#endif
  513.25 +#if !defined(__E32BASE_H__)
  513.26 +#include <e32base.h>
  513.27 +#endif
  513.28 +#if !defined(__BACELL_H__)
  513.29 +#include <bacell.h>
  513.30 +#endif
  513.31 +
  513.32 +
  513.33 +
  513.34 +class CGridCellRegion : public CBase
  513.35 +/** Defines a selected region.
  513.36 +
  513.37 +A selected region consists of one or more cell ranges, represented by TRangeRef 
  513.38 +objects, that exist within a defined boundary. The boundary is itself defined 
  513.39 +as a cell range.
  513.40 +
  513.41 +Cell ranges map cell selections, and the class provides the behaviour to manage 
  513.42 +these selections. 
  513.43 +
  513.44 +@publishedAll 
  513.45 +@released */
  513.46 +	{
  513.47 +public:
  513.48 +	IMPORT_C static CGridCellRegion* NewL(const TRangeRef& aBounds);
  513.49 +	IMPORT_C virtual ~CGridCellRegion();
  513.50 +	IMPORT_C void AddColL(TInt aCol);
  513.51 +	IMPORT_C void AddRowL(TInt aRow);
  513.52 +	IMPORT_C void AddCellRangeL(const TRangeRef& aCellRange);
  513.53 +	IMPORT_C void SetLastCellRange(const TRangeRef& aCellRange);
  513.54 +	IMPORT_C void ResizeBounds(const TCellRef& aNewToBounds);
  513.55 +	IMPORT_C void Reset();
  513.56 +	IMPORT_C TInt Count() const;
  513.57 +	IMPORT_C TBool IsCellSelected(const TCellRef &aCell) const;
  513.58 +	IMPORT_C TBool IsCellSelected(const TCellRef &aCell,TInt aIndex) const;
  513.59 +	IMPORT_C TBool IsCellSelectedLastIndex(const TCellRef &aCell) const;
  513.60 +	IMPORT_C TBool IsRowSelected(TInt aRow) const;
  513.61 +	IMPORT_C TBool IsRowSelected(TInt aRow,TInt aIndex) const;
  513.62 +	IMPORT_C TBool IsRowSelectedLastIndex(TInt aRow) const;
  513.63 +	IMPORT_C TBool IsAnyRowSelected() const;
  513.64 +	IMPORT_C TBool IsColSelected(TInt aCol) const;
  513.65 +	IMPORT_C TBool IsColSelected(TInt aCol,TInt aIndex) const;
  513.66 +	IMPORT_C TBool IsColSelectedLastIndex(TInt aCol) const;
  513.67 +	IMPORT_C TBool IsAnyColSelected() const;
  513.68 +	IMPORT_C TBool IsRangeSelected(const TRangeRef &aRange) const;
  513.69 +	IMPORT_C TBool IsRangeSelected(const TRangeRef &aRange,TInt aIndex) const;
  513.70 +	IMPORT_C TBool IsRangeSelectedLastIndex(const TRangeRef &aRange) const;
  513.71 +	IMPORT_C TRangeRef operator[](TInt aIndex) const;
  513.72 +	IMPORT_C const CArrayFix<TRangeRef>* RangeList() const;
  513.73 +private:
  513.74 +	CGridCellRegion(const TRangeRef& aBounds);
  513.75 +	void ConstructL();
  513.76 +private:
  513.77 +	TRangeRef iBounds;
  513.78 +	CArrayFix<TRangeRef>* iRangeList;
  513.79 +	};
  513.80 +#endif
   514.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   514.2 +++ b/epoc32/include/mw/grddef.h	Wed Mar 31 12:27:01 2010 +0100
   514.3 @@ -0,0 +1,62 @@
   514.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   514.5 +// All rights reserved.
   514.6 +// This component and the accompanying materials are made available
   514.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   514.8 +// which accompanies this distribution, and is available
   514.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  514.10 +//
  514.11 +// Initial Contributors:
  514.12 +// Nokia Corporation - initial contribution.
  514.13 +//
  514.14 +// Contributors:
  514.15 +//
  514.16 +// Description:
  514.17 +// Some standard definitions used in GRID
  514.18 +// 
  514.19 +//
  514.20 +
  514.21 +#if !defined(__GRDDEF_H__)
  514.22 +#define __GRDDEF_H__
  514.23 +
  514.24 +/** Defines the direction and the amount by which a 
  514.25 +cursor is to move, when performing a scrolling operation.
  514.26 +@publishedAll
  514.27 +@released
  514.28 +@see CGridLay::PageScroll()
  514.29 +@see CGridImg::MoveCursorL() */
  514.30 +enum TMoveDirectionAndAmount
  514.31 +	{
  514.32 +	/** Move up by one row. */
  514.33 +	EMoveRowUp,
  514.34 +	/** Move down by one row. */
  514.35 +	EMoveRowDown,
  514.36 +	/** Move left by one column. */
  514.37 +	EMoveColumnLeft,
  514.38 +	/** Move right by one column. */
  514.39 +	EMoveColumnRight,
  514.40 +	/** Move up by one page. */
  514.41 +	EMovePageUp,
  514.42 +	/** Move down by one page. */
  514.43 +	EMovePageDown,
  514.44 +	/** Move left by one page. */
  514.45 +	EMovePageLeft,
  514.46 +	/** Move right by one page. */
  514.47 +	EMovePageRight,
  514.48 +	/** Move to the start of the row. */
  514.49 +	EMoveRowStart,
  514.50 +	/** Move to the end of the row */
  514.51 +	EMoveRowEnd,
  514.52 +	/** Move to the home position. */
  514.53 +	EMoveHome,
  514.54 +	/** Move to the end position. */
  514.55 +	EMoveEnd,
  514.56 +	/** Do not move the cursor. */
  514.57 +	EMoveNone,
  514.58 +	/** Move to the start of the column. */
  514.59 +	EMoveColumnStart,
  514.60 +	/** Move to the end of the column. */
  514.61 +	EMoveColumnEnd
  514.62 +	};
  514.63 +
  514.64 +
  514.65 +#endif
   515.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   515.2 +++ b/epoc32/include/mw/grdprint.h	Wed Mar 31 12:27:01 2010 +0100
   515.3 @@ -0,0 +1,64 @@
   515.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   515.5 +// All rights reserved.
   515.6 +// This component and the accompanying materials are made available
   515.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   515.8 +// which accompanies this distribution, and is available
   515.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  515.10 +//
  515.11 +// Initial Contributors:
  515.12 +// Nokia Corporation - initial contribution.
  515.13 +//
  515.14 +// Contributors:
  515.15 +//
  515.16 +// Description:
  515.17 +//
  515.18 +
  515.19 +#if !defined(__GRDPRINT_H__)
  515.20 +#define __GRDPRINT_H__
  515.21 +
  515.22 +#if !defined(__E32STD_H__)
  515.23 +#include <e32std.h>
  515.24 +#endif
  515.25 +#if !defined(__E32BASE_H__)
  515.26 +#include <e32base.h>
  515.27 +#endif
  515.28 +#if !defined(__GRDSTD_H__)
  515.29 +#include <grdstd.h>
  515.30 +#endif
  515.31 +
  515.32 +
  515.33 +
  515.34 +class CGridPrinter : public CBase, public MPageRegionPrinter
  515.35 +/** Handles printing and print preview functionality for grid.
  515.36 +@publishedAll 
  515.37 +@released */
  515.38 +	{
  515.39 +public:
  515.40 +	IMPORT_C static CGridPrinter* NewL(CGridLay* aGridLay,CGridLabelImg* aPrintLabelImg,
  515.41 +		CGridCellImg* aPrintCellImg,TZoomFactor* aZoomFactor);
  515.42 +	IMPORT_C virtual ~CGridPrinter();
  515.43 +	inline void SetRealPrintingDeviceMap(const MGraphicsDeviceMap* aGraphicsDeviceMap);
  515.44 +	IMPORT_C void SetTopLeftMargin(const TPoint& aTlMarginInTwips);
  515.45 +	IMPORT_C void SetPageSizeInTwipsL(const TSize& aSizeInTwips);
  515.46 +	IMPORT_C void PaginateL();
  515.47 +	inline CGridLay& GridLay();
  515.48 +public:	// from MPageRegionPrinter
  515.49 +	IMPORT_C virtual void PrintBandL(CGraphicsDevice* aDevice,TInt aPageNo,const TBandAttributes& aBandInPixels);
  515.50 +private:
  515.51 +	CGridPrinter(CGridLabelImg* aPrintLabelImg,CGridCellImg* aPrintCellImg,TZoomFactor* aZoomFactor);
  515.52 +	void ConstructL(CGridLay* aGridLay);
  515.53 +	void SetGdMapAndPushLabelImgLC();
  515.54 +private:
  515.55 +	CGridLay* iGridLay;
  515.56 +	CGridImg* iGridImg;
  515.57 +	CGridLabelImg* iPrintLabelImg;
  515.58 +	CGridCellImg* iPrintCellImg;
  515.59 +	TZoomFactor* iZoomFactor;
  515.60 +	const MGraphicsDeviceMap* iGraphicsDeviceMap;
  515.61 +	TPoint iTlMarginInTwips;
  515.62 +	TRect iPrintablePage;
  515.63 +	TInt iScaleFactor;
  515.64 +	};
  515.65 +
  515.66 +#include <grdprint.inl>
  515.67 +#endif
   516.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   516.2 +++ b/epoc32/include/mw/grdprint.inl	Wed Mar 31 12:27:01 2010 +0100
   516.3 @@ -0,0 +1,36 @@
   516.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   516.5 +// All rights reserved.
   516.6 +// This component and the accompanying materials are made available
   516.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   516.8 +// which accompanies this distribution, and is available
   516.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  516.10 +//
  516.11 +// Initial Contributors:
  516.12 +// Nokia Corporation - initial contribution.
  516.13 +//
  516.14 +// Contributors:
  516.15 +//
  516.16 +// Description:
  516.17 +//
  516.18 +
  516.19 +inline void CGridPrinter::SetRealPrintingDeviceMap(const MGraphicsDeviceMap* aGraphicsDeviceMap)
  516.20 +/** Supplies the object that deals with the mapping between twips and device-specific 
  516.21 +units for a specific printer.
  516.22 +
  516.23 +@param aGraphicsDeviceMap The interface object for mapping between twips and 
  516.24 +device-specific units. */
  516.25 +	{
  516.26 +	iGraphicsDeviceMap=aGraphicsDeviceMap;
  516.27 +	}
  516.28 +
  516.29 +inline CGridLay& CGridPrinter::GridLay()
  516.30 +/** Gets the grid layout used by this printing object.
  516.31 +
  516.32 +Note that this is not the same object passed to CGridPrinter::NewL(). Internally, 
  516.33 +the class creates its own CGridLay object from the information supplied in the 
  516.34 +CGridLay object passed to CGridPrinter::NewL().
  516.35 +
  516.36 +@return The grid layout object. */
  516.37 +	{
  516.38 +	return *iGridLay;
  516.39 +	}
   517.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   517.2 +++ b/epoc32/include/mw/grdstd.h	Wed Mar 31 12:27:01 2010 +0100
   517.3 @@ -0,0 +1,753 @@
   517.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   517.5 +// All rights reserved.
   517.6 +// This component and the accompanying materials are made available
   517.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   517.8 +// which accompanies this distribution, and is available
   517.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  517.10 +//
  517.11 +// Initial Contributors:
  517.12 +// Nokia Corporation - initial contribution.
  517.13 +//
  517.14 +// Contributors:
  517.15 +//
  517.16 +// Description:
  517.17 +//
  517.18 +
  517.19 +#if !defined(__GRDSTD_H__)
  517.20 +#define __GRDSTD_H__
  517.21 +
  517.22 +#if !defined(__E32STD_H__)
  517.23 +#include <e32std.h>
  517.24 +#endif
  517.25 +#if !defined(__GDI_H__)
  517.26 +#include <gdi.h>
  517.27 +#endif
  517.28 +#if !defined(__GRDCELLS_H__)
  517.29 +#include <grdcells.h>
  517.30 +#endif
  517.31 +#if !defined(__GRDDEF_H__)
  517.32 +#include <grddef.h>
  517.33 +#endif
  517.34 +
  517.35 +
  517.36 +
  517.37 +class MGridTable
  517.38 +/** An interface that can be implemented to provide row and column information.
  517.39 +
  517.40 +Note that for grids that have indefinite row boundaries, an implementation 
  517.41 +is mandatory.
  517.42 +
  517.43 +A concrete implementation is passed to a CGridLay object through its CGridLay::ConstructL() 
  517.44 +functions or its CGridLay::SetGridTable() function. 
  517.45 +
  517.46 +@publishedAll 
  517.47 +@released */
  517.48 +	{
  517.49 +public:
  517.50 +	enum
  517.51 +		{
  517.52 +		/** The number of rows returned by the default implementation of RowExtent(). */
  517.53 +		EDefaultRowExtent=20,
  517.54 +		/** The number of columns returned by the default implementation of ColumnExtent(). */
  517.55 +		EDefaultColumnExtent=20
  517.56 +		};
  517.57 +public:
  517.58 +	IMPORT_C virtual TBool RequestRow(TInt aRow,TInt& aReturnRow) const;//If used should be derived from
  517.59 +	IMPORT_C virtual TInt RowExtent() const;
  517.60 +	IMPORT_C virtual TInt ColumnExtent() const;
  517.61 +	};
  517.62 +
  517.63 +
  517.64 +////////////////////////->
  517.65 +
  517.66 +class TGridColors
  517.67 +/** The grid colour specification.
  517.68 +
  517.69 +An object of this type encapsulates the colours to be used when drawing a 
  517.70 +grid cell.
  517.71 +
  517.72 +@publishedAll 
  517.73 +@released 
  517.74 +@see CGridLabelImg */
  517.75 +	{
  517.76 +public:
  517.77 +	IMPORT_C TGridColors();
  517.78 +	IMPORT_C TGridColors(TRgb aForeground, TRgb aBackground, TRgb aLines, TRgb aLabelSeparators);
  517.79 +public:
  517.80 +	/** The foreground colour. */
  517.81 +	TRgb iForeground;
  517.82 +	/** The background colour. */
  517.83 +	TRgb iBackground;
  517.84 +	/** The colour of lines. */
  517.85 +	TRgb iLines;
  517.86 +	/** The colour of label separators. */
  517.87 +	TRgb iLabelSeparators;
  517.88 +//	TRgb iEdge;
  517.89 +	};
  517.90 +////////////////////////->
  517.91 +
  517.92 +
  517.93 +class RReadStream;
  517.94 +class RWriteStream;
  517.95 +class CStreamStore;
  517.96 +class CGridImg;
  517.97 +class CSparseMap;
  517.98 +
  517.99 +
 517.100 +class CGridLay : public CBase
 517.101 +/** Handles the layout of a grid, and controls how columns, rows and selections 
 517.102 +appear. 
 517.103 +
 517.104 +@publishedAll 
 517.105 +@released */
 517.106 +	{
 517.107 +	friend class CGridImg;
 517.108 +public:
 517.109 +	/** Defines the order in which pages are printed. */
 517.110 +	enum TPageOrder
 517.111 +		{
 517.112 +		/** All pages in a horizontal line are drawn before starting on the next horizontal 
 517.113 +		line. */
 517.114 +		ERightThenDown,
 517.115 +		/** All pages in a vertical line are drawn before starting on the next vertical 
 517.116 +		line to the right. */
 517.117 +		EDownThenRight
 517.118 +		};
 517.119 +	/** Indicates whether the size of the grid should be adjusted when columns and 
 517.120 +	rows are inserted or deleted. */
 517.121 +	enum TFixGridRange
 517.122 +		{
 517.123 +		/** The grid range should not be adjusted on insertion or deletion of rows and/or columns. */
 517.124 +		EFixGridRange,
 517.125 +		/** The grid range can be adjusted on insertion or deletion of rows and/or columns. */	
 517.126 +		EAdjustGridRange
 517.127 +		};
 517.128 +public:
 517.129 +	IMPORT_C CGridLay(MGraphicsDeviceMap* aGraphicsDeviceMap);
 517.130 +	IMPORT_C void ConstructL(CGridLay* aGridLay,CGridImg* aGridImg);//Constructs Partial Copy
 517.131 +	IMPORT_C void ConstructL(const MGridTable *aGridTable,CGridImg *aGridImg,TInt aNoOfRows,TInt aNoOfCols);
 517.132 +	IMPORT_C void ConstructL(const MGridTable *aGridTable,CGridImg *aGridImg,TInt aNoOfCols);
 517.133 +	IMPORT_C virtual ~CGridLay();
 517.134 +
 517.135 +	IMPORT_C TPoint PageScroll(TMoveDirectionAndAmount aPageScroll);
 517.136 +	IMPORT_C TPoint ExposeCell(const TCellRef &aCell);
 517.137 +	IMPORT_C TPoint ExposeCellToTopLeft(const TCellRef &aCell);
 517.138 +
 517.139 +	IMPORT_C void SetGridImgL(CGridImg* aGridImg);
 517.140 +	inline void SetGridTable(const MGridTable* aGridTable);
 517.141 +	inline TRangeRef VisibleRange() const;
 517.142 +	IMPORT_C void SetVisibleRange(const TCellRef& aTopLeftCell);
 517.143 +	inline TRangeRef TitleRange() const;
 517.144 +	inline TRangeRef GridRange() const;
 517.145 +	IMPORT_C void SetGraphicsDeviceMap(MGraphicsDeviceMap* aGraphicsDeviceMap);
 517.146 +	IMPORT_C void SetGridToDefault();
 517.147 +
 517.148 +	IMPORT_C TInt ColumnWidthInTwips(TInt aCol) const;
 517.149 +	IMPORT_C void SetColumnWidthInTwipsL(TInt aCol,TInt aWidthInTwips);
 517.150 +	IMPORT_C TInt SetColumnWidthInTwipsL(TInt aStartCol,TInt aEndCol,TInt aWidthInTwips);
 517.151 +	IMPORT_C TInt DefaultColumnWidthInTwips() const;
 517.152 +	IMPORT_C void SetDefaultColumnWidthInTwips(TInt aWidthInTwips);
 517.153 +	IMPORT_C void SetColumnWidthsToDefault();
 517.154 +	IMPORT_C TInt MinColumnWidthInPixels() const;
 517.155 +	IMPORT_C void SetMinColumnWidthInPixels(TInt aWidthInPixels);
 517.156 +	IMPORT_C TInt ColumnWidthOfSelectedInTwips() const;
 517.157 +	IMPORT_C void SetColumnWidthOfSelectedInTwipsL(TInt aWidthInTwips);
 517.158 +	IMPORT_C TInt RowHeightInTwips(TInt aRow) const;
 517.159 +	IMPORT_C void SetRowHeightInTwipsL(TInt aRow,TInt aHeightInTwips);
 517.160 +	IMPORT_C TInt SetRowHeightInTwipsL(TInt aStartRow,TInt aEndRow,TInt aHeightInTwips);
 517.161 +	IMPORT_C TInt DefaultRowHeightInTwips() const;
 517.162 +	IMPORT_C void SetDefaultRowHeightInTwips(TInt aHeightInTwips);
 517.163 +	IMPORT_C void SetRowHeightsToDefault();
 517.164 +	IMPORT_C TInt MinRowHeightInPixels() const;
 517.165 +	IMPORT_C void SetMinRowHeightInPixels(TInt aHeightInPixels);
 517.166 +	IMPORT_C TInt RowHeightOfSelectedInTwips() const;
 517.167 +	IMPORT_C void SetRowHeightOfSelectedInTwipsL(TInt aHeightInTwips);
 517.168 +	IMPORT_C void RecalcPixelSparseMaps();
 517.169 +	IMPORT_C void InsertDeleteColumns(TInt aStartCol,TInt aNoOfCols,
 517.170 +		TFixGridRange aFixGridRange=EFixGridRange);
 517.171 +	IMPORT_C void InsertDeleteRows(TInt aStartRow,TInt aNoOfRows,
 517.172 +		TFixGridRange aFixGridRange=EFixGridRange);
 517.173 +
 517.174 +	inline TBool IsSideLabels() const;
 517.175 +	IMPORT_C void SetSideLabels(TBool aState);
 517.176 +	inline TBool IsTopLabels() const;
 517.177 +	IMPORT_C void SetTopLabels(TBool aState);
 517.178 +	inline TBool IsVerticalGridLines() const;
 517.179 +	IMPORT_C void SetVerticalGridLines(TBool aState);
 517.180 +	inline TBool IsHorizontalGridLines() const;
 517.181 +	IMPORT_C void SetHorizontalGridLines(TBool aState);
 517.182 +	inline TBool IsGridLabelSeparators() const;
 517.183 +	IMPORT_C void SetGridLabelSeparators(TBool aState);
 517.184 +	inline TBool IsColumnBursting() const;
 517.185 +	IMPORT_C void SetColumnBursting(TBool aState);
 517.186 +	inline TBool IsCursorVisible() const;
 517.187 +	IMPORT_C void SetCursorVisible(TBool aVisible);
 517.188 +	inline TBool IsHighlightVisible() const;
 517.189 +	IMPORT_C void SetHighlightVisible(TBool aVisible);
 517.190 +	inline TBool IsRowPermanentlySelected() const;
 517.191 +	IMPORT_C void SetRowPermanentlySelectedL(TBool aState);
 517.192 +	inline TBool IsTitleLines() const;
 517.193 +	inline TBool IsHorizontalTitleLine() const;
 517.194 +	inline TBool IsVerticalTitleLine() const;
 517.195 +	IMPORT_C void SetTitleLinesL(TBool aState);
 517.196 +	IMPORT_C void SetTitleLinesL(const TCellRef& aCellRef);
 517.197 +	IMPORT_C void ToggleTitleLinesL();
 517.198 +	inline TBool IsIndefiniteRowBoundaries() const;
 517.199 +	inline TBool IsUniformRowHeight() const;
 517.200 +	IMPORT_C void SetUniformRowHeight(TBool aState);
 517.201 +	inline TBool IsUniformColumnWidth() const;
 517.202 +	IMPORT_C void SetUniformColumnWidth(TBool aState);
 517.203 +	inline TBool IsTopLabelDragDisabled() const;
 517.204 +	IMPORT_C void SetTopLabelDragDisabled(TBool aState);
 517.205 +	inline TBool IsSideLabelDragDisabled() const;
 517.206 +	IMPORT_C void SetSideLabelDragDisabled(TBool aState);
 517.207 +	inline TBool IsPrintedLabels() const;
 517.208 +	IMPORT_C void SetPrintedLabels(TBool aState);
 517.209 +	inline TBool IsPrintedGridLines() const;
 517.210 +	IMPORT_C void SetPrintedGridLines(TBool aState);
 517.211 +	inline TBool IsEncroachingCellBorders() const;
 517.212 +	IMPORT_C void SetEncroachingCellBorders(TBool aState);
 517.213 +	inline TBool IsRowSelectionDisabled() const;
 517.214 +	IMPORT_C void SetRowSelectionDisabled(TBool aState);
 517.215 +	inline TBool IsColumnSelectionDisabled() const;
 517.216 +	IMPORT_C void SetColumnSelectionDisabled(TBool aState);
 517.217 +	inline TBool IsAutoClearGridCells() const;
 517.218 +	IMPORT_C void SetAutoClearGridCells(TBool aState);
 517.219 +	inline TBool IsPageBreakLinesHidden() const;
 517.220 +	IMPORT_C void SetPageBreakLinesHidden(TBool aState);
 517.221 +	inline TBool HasChanged() const;
 517.222 +	inline void SetHasChanged(TBool aHasChanged);
 517.223 +	inline void SetGridEdgeColor(TRgb aColor);
 517.224 +
 517.225 +	IMPORT_C TInt MinVisibleFromRow() const;
 517.226 +	IMPORT_C TInt MinVisibleFromColumn() const;
 517.227 +	IMPORT_C void ResetVisibleToRow();
 517.228 +	IMPORT_C void ResetVisibleToColumn();
 517.229 +	IMPORT_C void ResetVisibleToCell();
 517.230 +	IMPORT_C TInt RowExtent() const;
 517.231 +	IMPORT_C TInt ColumnExtent() const;
 517.232 +
 517.233 +	IMPORT_C TInt RowToYVal(TInt aRow) const;
 517.234 +	IMPORT_C TInt RowToYVal(TInt aStartRow,TInt aEndRow) const;
 517.235 +	IMPORT_C TInt VisibleRowToYVal(TInt aRow) const;
 517.236 +	IMPORT_C TInt TitleRowToYVal(TInt aTitleRow) const;
 517.237 +	IMPORT_C TInt ColumnToXVal(TInt aCol) const;
 517.238 +	IMPORT_C TInt ColumnToXVal(TInt aStartCol,TInt aEndCol) const;
 517.239 +	IMPORT_C TInt VisibleColumnToXVal(TInt aCol) const;
 517.240 +	IMPORT_C TInt TitleColumnToXVal(TInt aTitleCol) const;
 517.241 +	IMPORT_C TInt YValToRow(TInt aYVal) const;
 517.242 +	IMPORT_C TInt YValToRow(TInt aStartRow,TInt aDisp) const;
 517.243 +	IMPORT_C TInt YValToTitleRow(TInt aYVal) const;
 517.244 +	IMPORT_C TInt XValToColumn(TInt aXVal) const;
 517.245 +	IMPORT_C TInt XValToColumn(TInt aStartCol,TInt aDisp) const;
 517.246 +	IMPORT_C TInt XValToTitleColumn(TInt aXVal) const;
 517.247 +	IMPORT_C TCellRef PointToCell(const TPoint &aPoint) const;
 517.248 +	IMPORT_C TCellRef PointToCell(const TCellRef &aStartCell,const TPoint &aPointDisp) const;
 517.249 +	IMPORT_C TPoint CellToPoint(const TCellRef &aCell) const;
 517.250 +	IMPORT_C TPoint CellToPoint(const TCellRef &aStartCell,const TCellRef &aEndCell) const;
 517.251 +	IMPORT_C TPoint TitleCellToPoint(const TCellRef& aTitleCell) const;
 517.252 +	IMPORT_C TRect CellToRect(const TCellRef& aCell) const;
 517.253 +	IMPORT_C TInt YValToNearestRow(TInt aStartRow,TInt aDisp) const;
 517.254 +	IMPORT_C TInt XValToNearestColumn(TInt aStartCol,TInt aDisp) const;
 517.255 +	IMPORT_C TSize TopLeftTitleRangeSize() const;
 517.256 +
 517.257 +	IMPORT_C void PaginateL();
 517.258 +	IMPORT_C void ClearPagination();
 517.259 +	IMPORT_C void NotifyPaginationOutOfDateL();
 517.260 +	inline TBool IsPaginated() const;
 517.261 +	IMPORT_C TRangeRef PageToRange(TInt aPageNo,TPageOrder aPageOrder) const;
 517.262 +	inline void SetPrintRange(const TRangeRef& aPrintRange);
 517.263 +	IMPORT_C TInt NoOfPages() const;
 517.264 +	IMPORT_C void SetPageSizeInTwipsL(const TSize& aPageSize);
 517.265 +	inline TSize PageSizeInTwips() const;
 517.266 +	inline TBool IsAutoPagination() const;
 517.267 +	IMPORT_C void SetAutoPagination(TBool aState);
 517.268 +	IMPORT_C TBool IsHardRowPageBreak(TInt aRow) const;
 517.269 +	IMPORT_C TBool IsHardColumnPageBreak(TInt aCol) const;
 517.270 +	IMPORT_C void SetHardRowPageBreakL(TInt aRow);
 517.271 +	IMPORT_C void ClearHardRowPageBreakL(TInt aRow);
 517.272 +	IMPORT_C void SetHardColumnPageBreakL(TInt aCol);
 517.273 +	IMPORT_C void ClearHardColumnPageBreakL(TInt aCol);
 517.274 +	IMPORT_C void ClearAllHardPageBreaksL();
 517.275 +
 517.276 +	IMPORT_C void ExternalizeL(RWriteStream &aStream) const;
 517.277 +	IMPORT_C void InternalizeL(RReadStream &aStream);
 517.278 +	IMPORT_C TStreamId StoreL(CStreamStore& aStore) const;
 517.279 +	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aStreamId);
 517.280 +////////////////////////->
 517.281 +//	Setting the grid colors
 517.282 +	IMPORT_C void SetGridColors(TGridColors aColors);
 517.283 +//	Getting the grid colors
 517.284 +	IMPORT_C const TGridColors& GridColors() const;
 517.285 +////////////////////////->
 517.286 +private:
 517.287 +	void SetIndefiniteRowBoundaries(TBool aState);
 517.288 +	inline TBool IsVisibleToRowFullyVisible() const;
 517.289 +	void SetVisibleToRowFullyVisible(TBool aState);
 517.290 +	inline TBool IsVisibleToColumnFullyVisible() const;
 517.291 +	void SetVisibleToColumnFullyVisible(TBool aState);
 517.292 +	TInt ColumnWidthInPixels(TInt aCol) const;
 517.293 +	void SetColumnWidthInPixelsL(TInt aCol,TInt aWidthInPixels);
 517.294 +	void PreCheckColumnWidthChange(TInt aCol,TBool aNonZeroWidth);
 517.295 +	void PostCheckColumnWidthChange(TInt aCol,TBool aNonZeroWidth);
 517.296 +	TInt DefaultColumnWidthInPixels() const;
 517.297 +	void SetDefaultColumnWidthInPixels(TInt aWidthInPixels);
 517.298 +	TInt RowHeightInPixels(TInt aRow) const;
 517.299 +	void SetRowHeightInPixelsL(TInt aRow,TInt aHeightInPixels);
 517.300 +	void PreCheckRowHeightChange(TInt aRow,TBool aNonZeroHeight);
 517.301 +	void PostCheckRowHeightChange(TInt aRow,TBool aNonZeroHeight);
 517.302 +	TInt DefaultRowHeightInPixels() const;
 517.303 +	void SetDefaultRowHeightInPixels(TInt aHeightInPixels);
 517.304 +	TPoint CalcOffsetBetweenCells(const TCellRef& aCell1,const TCellRef& aCell2) const;
 517.305 +	TBool LimitRow(TInt& aRow) const;
 517.306 +	TBool LimitColumn(TInt &aColumn) const;
 517.307 +	void LimitRow(TInt& aRow,TInt aLowerLimit,TInt aUpperLimit) const;
 517.308 +	void LimitColumn(TInt& aCol,TInt aLowerLimit,TInt aUpperLimit) const;
 517.309 +	TBool LimitCell(TCellRef& aCell) const;
 517.310 +	void LimitRowToVisible(TInt& aRow) const;
 517.311 +	void LimitColumnToVisible(TInt& aCol) const;
 517.312 +	void LimitCellToVisible(TCellRef& aCell) const;
 517.313 +	TBool IsCellOutOfVisibleRange(const TCellRef &aCell) const;
 517.314 +	TBool IsCellOutOfGridRange(const TCellRef& aCell) const;
 517.315 +	void StepRowForward(TInt& aRow) const;
 517.316 +	void StepRowBackward(TInt& aRow) const;
 517.317 +	void StepColumnForward(TInt& aCol) const;
 517.318 +	void StepColumnBackward(TInt& aCol) const;
 517.319 +	void CalcVisibleFromRow(TInt aVisibleToRow,TInt& aNewVisibleFromRow) const;
 517.320 +	TBool CalcVisibleToRow(TInt aVisibleFromRow,TInt& aNewVisibleToRow) const;
 517.321 +	void CalcVisibleFromColumn(TInt aVisibleToCol,TInt& aNewVisibleFromCol) const;
 517.322 +	TBool CalcVisibleToColumn(TInt aVisibleFromCol,TInt& aNewVisibleToCol) const;
 517.323 +	TInt CalcVisibleFromRowAfterPageScroll(TMoveDirectionAndAmount aPageScroll) const;
 517.324 +	TInt CalcVisibleFromColumnAfterPageScroll(TMoveDirectionAndAmount aPageScroll) const;
 517.325 +	TCellRef CalcVisibleFromCellAfterPageScroll(TMoveDirectionAndAmount aPageScroll) const;
 517.326 +	TBool FindNextRowPageBreak(TInt aSearchStart,TInt& aFoundRow) const;
 517.327 +	TBool FindNextColumnPageBreak(TInt aSearchStart,TInt& aFoundCol) const;
 517.328 +	void DoMainPaginationLoopL(TInt aPageSpan,CSparseMap* aCellSpanMap,CSparseMap* aPageMap,
 517.329 +		CArrayFix<TInt>* aHardPageBreaks,TInt aStartId);
 517.330 +	TBool RequestRow(TInt aRow,TInt& aReturnRow) const;
 517.331 +
 517.332 +	void ConstructL(const MGridTable *aGridTable,CGridImg *aGridImg,const TRangeRef& aGridRange);
 517.333 +//private:
 517.334 +private:
 517.335 +	enum 
 517.336 +		{
 517.337 +		EMaxArrayChanges=256,
 517.338 +		EInitialDefaultRowHeightInTwips = 300,
 517.339 +		EInitialDefaultColumnWidthInTwips = 900
 517.340 +		};
 517.341 +	enum
 517.342 +		{
 517.343 +		EIsTopLabels = 0x1,
 517.344 +		EIsSideLabels = 0x2,
 517.345 +		EIsHorizontalGridLines =  0x4,
 517.346 +		EIsVerticalGridLines = 0x8,
 517.347 +		EIsColumnBursting = 0x10,
 517.348 +		EIsCursorVisible = 0x20,
 517.349 +		EIsRowPermanentlySelected = 0x40,
 517.350 +		EIsHorizontalTitleLine = 0x80,
 517.351 +		EIsVerticalTitleLine = 0x100,
 517.352 +		EIsIndefiniteRowBoundaries = 0x200,
 517.353 +		EIsUniformRowHeight = 0x400,
 517.354 +		EIsUniformColumnWidth = 0x800,
 517.355 +		EIsTopLabelDragDisabled = 0x1000,
 517.356 +		EIsSideLabelDragDisabled = 0x2000,
 517.357 +		EIsPaginated = 0x4000,
 517.358 +		EIsAutoPagination = 0x8000,
 517.359 +		EIsPrintedLabels = 0x10000,
 517.360 +		EIsPrintedGridLines = 0x20000,
 517.361 +		EIsVisibleToRowFullyVisible = 0x40000,
 517.362 +		EIsVisibleToColumnFullyVisible = 0x80000,
 517.363 +		EIsEncroachingCellBorders = 0x100000,
 517.364 +		EIsColumnSelectionDisabled = 0x200000,
 517.365 +		EIsRowSelectionDisabled = 0x400000,
 517.366 +		EIsAutoClearGridCells = 0x800000,
 517.367 +		EIsGridLabelSeparators = 0x1000000,
 517.368 +		EIsHighlightVisible = 0x2000000,
 517.369 +		EIsPageBreakLinesHidden = 0x4000000
 517.370 +		};
 517.371 +private:
 517.372 +	const MGridTable* iGridTable;
 517.373 +	const MGraphicsDeviceMap* iGraphicsDeviceMap;		//*
 517.374 +	CGridImg*   iGridImg;								//*
 517.375 +// persistent
 517.376 +	TRangeRef   iGridRange;								//*
 517.377 +	TRangeRef   iVisibleRange;
 517.378 +	TRangeRef   iTitleRange;
 517.379 +	CSparseMap* iColumnWidthMap;						//*
 517.380 +	CSparseMap* iRowHeightMap;							//*
 517.381 +	CSparseMap* iColumnPageMap;							//*
 517.382 +	CSparseMap* iRowPageMap;							//*
 517.383 +	CArrayFix<TInt>* iHardRowPageBreaks;
 517.384 +	CArrayFix<TInt>* iHardColumnPageBreaks;
 517.385 +	TRgb		iGridEdgeColor;
 517.386 +	TInt        iMinRowHeightInPixels;
 517.387 +	TInt        iMinColumnWidthInPixels;
 517.388 +	TSize       iPageSizeInTwips;						//*
 517.389 +	TUint32		iFlags;									//* Starred items are used in printing
 517.390 +////////////////////////->
 517.391 +	TGridColors iColors;
 517.392 +////////////////////////->
 517.393 +// End of persistent data
 517.394 +	TBool		iHasChanged;
 517.395 +	};
 517.396 +
 517.397 +
 517.398 +
 517.399 +
 517.400 +class CGridLabelImg : public CBase
 517.401 +/** Draws a grid cell's label. 
 517.402 +
 517.403 +@publishedAll 
 517.404 +@released */
 517.405 +	{
 517.406 +	friend class CGridImg;
 517.407 +public:
 517.408 +	IMPORT_C virtual ~CGridLabelImg();
 517.409 +	IMPORT_C void ConstructL();
 517.410 +	inline void SetGraphicsDeviceMap(MGraphicsDeviceMap* aGraphicsDeviceMap);
 517.411 +	inline TFontSpec FontSpec() const;
 517.412 +	IMPORT_C void ReleaseFont();
 517.413 +	IMPORT_C void NotifyGraphicsDeviceMapChangeL();
 517.414 +	inline void SetGridColors(const TGridColors& aGridColors);
 517.415 +protected:
 517.416 +	IMPORT_C CGridLabelImg(const TFontSpec& aFontSpec,MGraphicsDeviceMap* aGraphicsDeviceMap);
 517.417 +////////////////////////->
 517.418 +	IMPORT_C void DrawTopLeftLabelL(CGraphicsContext* aGc,const TRect& aRect, TRgb aColor) const;
 517.419 +////////////////////////->
 517.420 +private:
 517.421 +	/** Draws a row label.
 517.422 +	
 517.423 +	@publishedAll 
 517.424 +	@released
 517.425 +	@param aGc The graphics context to be used.
 517.426 +	@param aRow The row for which the label is to be drawn.
 517.427 +	@param aRect The rectangle in which the label is to be drawn. */
 517.428 +	virtual void DrawRowLabelL(CGraphicsContext* aGc,TInt aRow,const TRect& aRect) const=0;
 517.429 +	/** Draws a column label.
 517.430 +	
 517.431 +	@publishedAll 
 517.432 +	@released
 517.433 +	@param aGc The graphics context to be used.
 517.434 +	@param aCol The column for which the label is to be drawn.
 517.435 +	@param aRect The rectangle in which the label is to be drawn. */
 517.436 +	virtual void DrawColLabelL(CGraphicsContext* aGc,TInt aCol,const TRect& aRect) const=0;
 517.437 +	IMPORT_C virtual void DrawTopLeftLabelL(CGraphicsContext* aGc,const TRect& aRect) const;
 517.438 +	IMPORT_C virtual TInt SideLabelWidthInPixels(TInt aStartRow,TInt aEndRow) const;
 517.439 +	IMPORT_C virtual TInt TopLabelHeightInPixels() const;
 517.440 +	IMPORT_C virtual void DrawRowCursorL(CGraphicsContext* aGc,const TRect& aRect) const;
 517.441 +protected:
 517.442 +	enum
 517.443 +		{
 517.444 +		/** The default width of side labels, in twips.
 517.445 +
 517.446 +		This is used by the default implementation of SideLabelWidthInPixels(). */
 517.447 +		EDefaultSideLabelWidthInTwips=300,
 517.448 +		/** The default height of top labels, in twips.
 517.449 +		
 517.450 +		This is used by the default implementation of TopLabelHeightInPixels(). */
 517.451 +		EDefaultTopLabelHeightInTwips=300
 517.452 +		};
 517.453 +protected:
 517.454 +	/** The nearest font to that specified in the font specification. */
 517.455 +	CFont* iFont;
 517.456 +	/** The font specification in device independent terms. */
 517.457 +	TFontSpec iFontSpec;
 517.458 +	/** The graphics device map, an interface for mapping between twips and device-specific 
 517.459 +	units. */
 517.460 +	MGraphicsDeviceMap* iGraphicsDeviceMap;
 517.461 +	/** The grid colour specification. */
 517.462 +	TGridColors iGridColors;
 517.463 +private:
 517.464 +	TInt iSpare;
 517.465 +	};
 517.466 +
 517.467 +
 517.468 +class CGridCellImg : public CBase
 517.469 +/** Draws a grid cell's contents. 
 517.470 +
 517.471 +@publishedAll 
 517.472 +@released */
 517.473 +	{
 517.474 +	friend class CGridImg;
 517.475 +public:
 517.476 +	IMPORT_C virtual ~CGridCellImg();
 517.477 +	inline TInt BurstColOffset() const;
 517.478 +	inline TInt BurstLeft() const;
 517.479 +	inline TInt BurstRight() const;
 517.480 +	inline TBool IsHorizontalGridLines() const;
 517.481 +	inline TBool IsVerticalGridLines() const;
 517.482 +	inline void SetGridColors(const TGridColors& aGridColors);
 517.483 +protected:
 517.484 +	IMPORT_C CGridCellImg();
 517.485 +private:
 517.486 +	/** Draws the contents of the specified cell.
 517.487 +	
 517.488 +	@publishedAll 
 517.489 +	@released 
 517.490 +	@param aGc The graphics context to be used.
 517.491 +	@param aCell The cell whose contents are to be drawn.
 517.492 +	@param aDrawRect The rectangle in which the cell is to be drawn. 
 517.493 +	@param aClipRect The rectangle to which drawing is clipped. */
 517.494 +	virtual void DrawL(CGraphicsContext* aGc,const TCellRef& aCell,const TRect& aDrawRect,
 517.495 +		const TRect& aClipRect) const=0;
 517.496 +	IMPORT_C virtual TInt DataWidthInPixelsL(const TCellRef& aCell) const;
 517.497 +	IMPORT_C virtual TBool DoesCellContainDataL(const TCellRef& aCell) const;
 517.498 +// reserved virtual function
 517.499 +	IMPORT_C virtual void Reserved_1();
 517.500 +private:
 517.501 +	void SetBurstingData(TInt aBurstColOffset=0,TInt aBurstLeft=0,TInt aBurstRight=0);
 517.502 +private:
 517.503 +	enum { EIsHorizontalGridLines = 0x1, EIsVerticalGridLines = 0x2 };
 517.504 +protected:
 517.505 +	/** The grid colour specification. */
 517.506 +	TGridColors iGridColors;
 517.507 +private:
 517.508 +	TInt iBurstColOffset;
 517.509 +	TInt iBurstLeft;
 517.510 +	TInt iBurstRight;
 517.511 +	TUint32 iGridLineFlags;
 517.512 +	};
 517.513 +
 517.514 +
 517.515 +class MGridCursorMoveCallBack
 517.516 +/** An interface to a callback function that is intended to be called whenever 
 517.517 +there is a change to the cursor position.
 517.518 +
 517.519 +If such a callback is needed, a concrete implementation is defined, instantiated 
 517.520 +and passed to CGridImg::SetCursorMoveCallBack(). 
 517.521 +
 517.522 +@publishedAll
 517.523 +@released */
 517.524 +	{
 517.525 +public:
 517.526 +	/** Deals with the change to the cursor position.
 517.527 +	
 517.528 +	This function is called immediately before exiting the following functions: 
 517.529 +	CGridImg::SetCursorPosL(), CGridImg::SetAnchorPosL(), CGridImg::MoveCursorL(),CGridImg::ResetSelectedL(), 
 517.530 +	CGridImg::AddRangeToSelectedL(), CGridImg::AddRegionToSelectedL(), CGridImg::AddRowToSelectedL(), 
 517.531 +	CGridImg::AddColToSelectedL().
 517.532 +	
 517.533 +	The function is commonly used to do any necessary redrawing. */
 517.534 +	virtual void HandleCursorMoveL()=0;
 517.535 +	};
 517.536 +
 517.537 +class RWindow;
 517.538 +class CWindowGc;
 517.539 +
 517.540 +
 517.541 +class CGridImg : public CBase
 517.542 +/** Draws the contents of the grid. 
 517.543 +
 517.544 +@publishedAll 
 517.545 +@released 
 517.546 +*/
 517.547 +	{
 517.548 +	friend class CGridLay;
 517.549 +public:
 517.550 +	enum
 517.551 +		{
 517.552 +		/** Indicates that the selection state is to be maintained.
 517.553 +
 517.554 +		If a region of cells is selected, then this selection is to be kept.
 517.555 +		
 517.556 +		Typically, this is set by a control when a drag operation is in 
 517.557 +		progress and the shift modifier key is also pressed. */
 517.558 +		EIsWithSelect=0x0001,
 517.559 +		/** Indicates that the control modifier key has been pressed. */
 517.560 +		EIsWithControl=0x0002,
 517.561 +		/** Indicates that a drag operation is in progress.	*/
 517.562 +		EIsWithDrag=0x0004,
 517.563 +		/** Indicates that the cursor is the edge of the grid. */
 517.564 +		EIsAtBoundary=0x0008,
 517.565 +		/** Indicates that a new cell is being selected, without dragging. */
 517.566 +		EIsAbsoluteMove=0x0010,
 517.567 +		/** Indicates that a whole row is selected. */
 517.568 +		EIsRowSelected=0x0020,
 517.569 +		/** Indicates that a whole column is selected.
 517.570 +
 517.571 +		This also means that the label cell for the column is included in the selection. */
 517.572 +		EIsColumnSelected=0x0040
 517.573 +		};
 517.574 +	enum 
 517.575 +		{
 517.576 +		/** Defines a scale value of 100. 
 517.577 +		
 517.578 +		Scale factor values are divided into this value to calculate
 517.579 +		drawing points, rectangles etc. */
 517.580 +		EScaleOneToOne=100
 517.581 +		};
 517.582 +
 517.583 +	enum TSelectType
 517.584 +		{
 517.585 +		/** Indicates that an existing selected region is to be reset (i.e. emptied) before 
 517.586 +		adding a new region. */
 517.587 +		ESelectOverwrite, 
 517.588 +		/** Indicates that a new region is to be appended to any existing selected region. */
 517.589 +		ESelectAppend 
 517.590 +		};
 517.591 +public:
 517.592 +	IMPORT_C virtual ~CGridImg();
 517.593 +	IMPORT_C static CGridImg* NewL(CGraphicsDevice* aGraphicsDevice,CGridCellImg* aGridCellImg,CGridLay* aGridLay);
 517.594 +	IMPORT_C static CGridImg* NewL(CGridCellImg* aGridCellImg,CGridLay* aGridLay); //Creates Partial GridImg
 517.595 +	inline void SetGridLay(CGridLay* aGridLay);
 517.596 +	inline void SetWindow(RWindow* aWin);
 517.597 +////////////////////////->
 517.598 +	IMPORT_C void SetGridLabelImg(CGridLabelImg* aGridLabelImg);
 517.599 +////////////////////////->
 517.600 +	inline void SetCursorMoveCallBack(MGridCursorMoveCallBack* aCursorMoveCallBack);
 517.601 +	inline const CGridCellRegion* Selected() const;
 517.602 +	inline const CGridLabelImg* GridLabelImg() const;
 517.603 +
 517.604 +	IMPORT_C void ScrollL(const TPoint &aOffset);
 517.605 +	IMPORT_C void MoveCursorL(TMoveDirectionAndAmount aCursorMove,TUint aSelectState);
 517.606 +   	IMPORT_C void SetCursorWithPointerL(const TPoint& aPoint,TUint aFlagList);
 517.607 +	IMPORT_C void ResetSelectedL();
 517.608 +	IMPORT_C void AddRangeToSelectedL(const TRangeRef& aRange,TSelectType aType=ESelectOverwrite);
 517.609 +	IMPORT_C void AddRegionToSelectedL(const CArrayFix<TRangeRef>* aCellRegion,TSelectType aType=ESelectOverwrite);
 517.610 +	IMPORT_C void AddRowToSelectedL(TInt aRow,TSelectType aType=ESelectOverwrite);
 517.611 +	IMPORT_C void AddColToSelectedL(TInt aCol,TSelectType aType=ESelectOverwrite);
 517.612 +	IMPORT_C void DrawL(CGraphicsContext* aGc) const;
 517.613 +	IMPORT_C void DrawL(CGraphicsContext* aGc,const TRect& aRect) const;
 517.614 +	IMPORT_C void DrawCellL(const TCellRef& aCell) const;
 517.615 +	IMPORT_C void DrawRangeL(const TRangeRef& aRange) const;
 517.616 +	IMPORT_C void DrawSelectedL() const;
 517.617 +	IMPORT_C void DrawTitleLines() const;
 517.618 +	IMPORT_C void ClearTitleLineRegionL(const TPoint& aCrossPoint) const;
 517.619 +	IMPORT_C void PrintGridLinesAndCellsInRangeL(CGraphicsContext* aPrinterGc,const TRangeRef& aRange,
 517.620 +		TInt aScaleFactor) const;
 517.621 +
 517.622 +	inline TCellRef CursorPos() const;
 517.623 +	IMPORT_C void SetCursorPosL(const TCellRef& aCursorPos);
 517.624 +	inline TCellRef NewCursorPos() const;
 517.625 +	inline TCellRef AnchorPos() const;
 517.626 +	IMPORT_C void SetAnchorPosL(const TCellRef& aAnchorPos);
 517.627 +	inline TRect GridRect() const;
 517.628 +	IMPORT_C void SetGridRect(const TRect& aNewRect);
 517.629 +	IMPORT_C void SetPrintGridRect(const TRect& aPrintRect);
 517.630 +	inline TPoint TitlePoint() const;
 517.631 +	inline TPoint MainPoint() const;
 517.632 +	inline TRect MainRect() const;
 517.633 +	IMPORT_C void ResetReferencePoints();
 517.634 +	IMPORT_C void NotifyGridRangeResize();
 517.635 +
 517.636 +	IMPORT_C void CheckSideLabelWidthAndScrollL();
 517.637 +	IMPORT_C TInt CheckSideLabelWidth();
 517.638 +	IMPORT_C TInt SideLabelWidthInPixels() const;
 517.639 +	IMPORT_C TInt MaxSideLabelWidthInPixels() const;
 517.640 +	IMPORT_C TInt TopLabelHeightInPixels() const;
 517.641 +	IMPORT_C void FinishLabelDragL();
 517.642 +	IMPORT_C TBool StartLabelDrag(const TPoint &aPoint);
 517.643 +	IMPORT_C TBool UpdateLabelDrag(const TPoint &aPoint);
 517.644 +	IMPORT_C TBool StartLabelResize(TBool aIsColumnLabel, TInt aIndex);
 517.645 +	IMPORT_C TBool UpdateLabelResize(TInt aDelta);
 517.646 +	IMPORT_C void FinishLabelResizeL(TBool aResize);
 517.647 +private:
 517.648 +	enum TDragDim {EXDrag,EYDrag,ENoDrag};
 517.649 +	enum TRefPoint {ETitleRef,EMainRef};
 517.650 +	enum TDragDraw {EDragDrawWithBitmap,EDragDrawWithoutBitmap};
 517.651 +	enum TArrows {EBothArrows,ESecondArrowOnly};
 517.652 +	enum
 517.653 +		{
 517.654 +		EIsLabelDraggingIgnored = 0x1,
 517.655 +		EIsSidewaysScrollIgnored = 0x2
 517.656 +		};
 517.657 +private:
 517.658 +	void DrawResizingDragHiglights(const TRect& aRect);
 517.659 +	void DrawAllGridLabelsL() const;
 517.660 +	void DrawTopLeftGridLabelL() const;
 517.661 +	void DrawTopGridLabelsL(TInt aStartCol,TInt aEndCol,TRefPoint aXRef=EMainRef) const;
 517.662 +	void DrawSideGridLabelsL(TInt aStartRow,TInt aEndRow,TRefPoint aYRef=EMainRef) const;
 517.663 +	void DrawSideGridLabelIfOnScreenL(TInt aRow) const;
 517.664 +	void DrawAllGridLinesAndCellsL() const;
 517.665 +	void DrawGridLinesAndCellsInRangeL(const TRangeRef& aRange,const TRect& aClipRect,
 517.666 +		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 517.667 +	void DrawCellsToGcL(CGraphicsContext* aGc,const TRangeRef& aRange,const TRect& aClipRect,
 517.668 +		const TPoint& aStartPoint,TInt aScaleFactor=EScaleOneToOne) const;
 517.669 +	void DrawBurstingCellL(CGraphicsContext* aGc,const TCellRef& aCell,const TRect& aRect,const TRect& aClipRect,
 517.670 +		TInt aScaleFactor,TInt aBurstLeft,const TCellRef& aBurstCell) const;
 517.671 +	TInt CalcBurstLeftL(TCellRef& aBurstCell,TInt aScaleFactor) const;
 517.672 +	TInt CalcBurstRightL(const TCellRef& aCell,TInt aExcessRight,TInt aScaleFactor) const;
 517.673 +	void DrawVerticalTitleLine() const;
 517.674 +	void DrawHorizontalTitleLine() const;
 517.675 +	void BeginRedrawAndDrawL() const;
 517.676 +	void BeginRedrawAndDrawL(const TRect& aRect) const;
 517.677 +
 517.678 +	void AppendTotalHighlightRegionL(TRegion& aRegion) const;
 517.679 +	void AppendPartialHighlightRegionL(TRegion& aRegion,const TRect& aClipRect,
 517.680 +		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 517.681 +	void RemoveRowLabelFromRegionL(TInt aRow,TRegion& aRegion) const;
 517.682 +	void HighlightMinRegionL(const TRegion &aOldRegion,const TRegion &aNewRegion);
 517.683 +	void HighlightRegion(const TRegion &aRegion) const;
 517.684 +	void HighlightNewRegionFromOldL(const TRegion& aOldRegion);
 517.685 +	void DrawCursorOrRegionL(TUint aMoveFlags);
 517.686 +	void UpdateSelectedRegion(TInt aSelectCount,TUint aMoveFlags);
 517.687 +	void AddLabelToRegionL(TUint aMoveFlags);
 517.688 +	void StartSelectedRegionL(TUint aMoveFlags);
 517.689 +	TBool ScanColumnsForDrag(TInt aFromColumn,TInt aToColumn,TInt aPointerPos,TInt& aPrevious,TInt& aCurrent);
 517.690 +	TBool ScanRowsForDrag(TInt aFromRow,TInt aToRow,TInt aPointerPos,TInt& aPrevious,TInt& aCurrent);
 517.691 +	void DrawDraggingHighlight(const TRect aLine,TDragDraw aDragDraw);
 517.692 +	void DrawArrowsToInMemoryBitmap(TArrows aArrows);
 517.693 +	TPoint RelativeCellToPoint(const TCellRef& aCell,TRefPoint aXRef=EMainRef,
 517.694 +		TRefPoint aYRef=EMainRef) const;
 517.695 +	TCellRef RelativePointToCell(const TPoint& aPoint,TRefPoint aXRef=EMainRef,
 517.696 +		TRefPoint aYRef=EMainRef) const;
 517.697 +	TRect PartialCellRectL(const TCellRef& aCell,const TRect& aClipRect,
 517.698 +		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 517.699 +	TRect PartialRangeRect(const TRangeRef& aRange,const TRect& aClipRect,
 517.700 +		TRefPoint aXRef=EMainRef,TRefPoint aYRef=EMainRef) const;
 517.701 +	void CreateGc(CGraphicsContext* aGc);
 517.702 +	void DeleteGc();
 517.703 +	static void CleanupGc(TAny* aObject);
 517.704 +	void ResetGcToDefault(CGraphicsContext* aGc) const;
 517.705 +	void ScaleDown(TPoint& aPoint,TInt aScaleFactor) const;
 517.706 +	void ConstructSelectedL(const TRangeRef& aGridRange);
 517.707 +
 517.708 +	CGridImg(CGraphicsDevice* aGraphicsDevice,CGridCellImg* aGridCellImg,CGridLay* aGridLay);
 517.709 +	CGridImg(CGridCellImg* aGridCellImg,CGridLay* aGridLay);
 517.710 +	void ConstructL();
 517.711 +
 517.712 +////////////////////////->
 517.713 +	void SetGridColors(const TGridColors& aGridColors);
 517.714 +////////////////////////->
 517.715 +private:
 517.716 +	TRect		iGridRect;
 517.717 +	TPoint		iTitlePoint;
 517.718 +	TPoint		iMainPoint;
 517.719 +	TCellRef	iCursorPos;							// Persisted
 517.720 +	TCellRef 	iNewCursorPos;
 517.721 +	TCellRef	iAnchorPos;
 517.722 +
 517.723 +	CGraphicsDevice*	iGraphicsDevice;
 517.724 +	CGraphicsContext*	iGcPtr;
 517.725 +	CWindowGc*			iGc;
 517.726 +	RWindow*			iWin;
 517.727 +	CGridCellImg*		iGridCellImg;				//*
 517.728 +	CGridLabelImg*		iGridLabelImg;              //*
 517.729 +	CGridLay*			iGridLay;					//* Starred items are used in printing
 517.730 +	CGridCellRegion*		iSelected;
 517.731 +	MGridCursorMoveCallBack*	iCursorMoveCallBack;
 517.732 +	TBool		iDrawResizeLines;
 517.733 +	TInt 		iDragLabel;
 517.734 +	TInt		iCurrentDragPos;
 517.735 +	TInt		iDragDiff;
 517.736 +	TInt		iDragFlags;
 517.737 +	TDragDim	iDragDim;
 517.738 +	CFbsBitmap*	iDragBmp;
 517.739 +	TRefPoint 	iXRefPoint;
 517.740 +	TRefPoint	iYRefPoint;
 517.741 +	};
 517.742 +
 517.743 +
 517.744 +class TGridUtils
 517.745 +/** A collection of Grid utilities. 
 517.746 +
 517.747 +@publishedAll 
 517.748 +@released */
 517.749 +	{
 517.750 +public:
 517.751 +	IMPORT_C static void FillRect(CGraphicsContext* aGc,TRgb aColor,const TRect &aRect);
 517.752 +	};
 517.753 +
 517.754 +
 517.755 +#include <grdstd.inl>
 517.756 +#endif
   518.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   518.2 +++ b/epoc32/include/mw/grdstd.inl	Wed Mar 31 12:27:01 2010 +0100
   518.3 @@ -0,0 +1,421 @@
   518.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   518.5 +// All rights reserved.
   518.6 +// This component and the accompanying materials are made available
   518.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   518.8 +// which accompanies this distribution, and is available
   518.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  518.10 +//
  518.11 +// Initial Contributors:
  518.12 +// Nokia Corporation - initial contribution.
  518.13 +//
  518.14 +// Contributors:
  518.15 +//
  518.16 +// Description:
  518.17 +// CGridLay
  518.18 +// 
  518.19 +//
  518.20 +
  518.21 +inline void CGridLay::SetGridTable(const MGridTable* aGridTable)
  518.22 +/** Sets the specified grid table object.
  518.23 +
  518.24 +@param aGridTable The grid table object. */
  518.25 +	{ iGridTable = aGridTable; }
  518.26 +
  518.27 +inline TRangeRef CGridLay::VisibleRange() const
  518.28 +/** Gets the range of cells that are currently visible.
  518.29 +
  518.30 +@return The visible cell range. Note that the TRangeRef::iFrom member is the 
  518.31 +cell that is visible at the top of the window, and the TRangeRef::iTo member 
  518.32 +is the cell that is partially visible at the bottom right of the window. */
  518.33 +	{ return iVisibleRange; }
  518.34 +
  518.35 +inline TRangeRef CGridLay::TitleRange() const
  518.36 +/** Gets the range of cells that form the grid titles.
  518.37 +
  518.38 +@return The range of cells that form the grid titles. */
  518.39 +	{ return iTitleRange; }
  518.40 +
  518.41 +inline TRangeRef CGridLay::GridRange() const
  518.42 +/** Gets the range of cells that defines the grid boundary.
  518.43 +
  518.44 +@return The range of cells that defines the grid boundary. */
  518.45 +	{ return iGridRange; }
  518.46 +
  518.47 +inline TBool CGridLay::IsSideLabels() const
  518.48 +/** Tests whether side grid labels are printed.
  518.49 +
  518.50 +@return True, if the side labels are printed; false, otherwise. */
  518.51 +	{ return (iFlags&EIsSideLabels); }
  518.52 +
  518.53 +inline TBool CGridLay::IsTopLabels() const
  518.54 +/** Tests whether top labels are printed.
  518.55 +
  518.56 +@return True, if the top labels are printed; false, otherwise. */
  518.57 +	{ return (iFlags&EIsTopLabels); }
  518.58 +
  518.59 +inline TBool CGridLay::IsVerticalGridLines() const
  518.60 +/** Tests whether vertical grid lines are to be drawn.
  518.61 +
  518.62 +@return True, if vertical grid lines are to be drawn; false, otherwise. */
  518.63 +	{ return (iFlags&EIsVerticalGridLines); }
  518.64 +
  518.65 +inline TBool CGridLay::IsHorizontalGridLines() const
  518.66 +/** Tests whether horizontal grid lines are to be drawn.
  518.67 +
  518.68 +@return True, if horizontal grid lines are to be drawn; false, otherwise. */
  518.69 +	{ return (iFlags&EIsHorizontalGridLines); }
  518.70 +
  518.71 +inline TBool CGridLay::IsGridLabelSeparators() const
  518.72 +/** Tests whether label separators are to be drawn.
  518.73 +
  518.74 +@return True, if label separators are to be drawn; false, otherwise. */
  518.75 +	{ return (iFlags&EIsGridLabelSeparators); }
  518.76 +
  518.77 +inline TBool CGridLay::IsColumnBursting() const
  518.78 +/** Tests whether column bursting is permitted.
  518.79 +
  518.80 +Column bursting occurs when the contents of a cell are too wide; adjacent 
  518.81 +cells are then overwritten, provided they are empty.
  518.82 +
  518.83 +@return True, if column bursting is permitted; false, otherwise. */
  518.84 +	{ return (iFlags&EIsColumnBursting); }
  518.85 +
  518.86 +inline TBool CGridLay::IsCursorVisible() const
  518.87 +/** Tests whether the cursor is visible.
  518.88 +
  518.89 +@return True, if the cursor is visible; false, otherwise. */
  518.90 +	{ return (iFlags&EIsCursorVisible); }
  518.91 +
  518.92 +inline TBool CGridLay::IsHighlightVisible() const
  518.93 +/** Tests whether selected cells are highlighted.
  518.94 +
  518.95 +@return True, if selected cells are highlighted; false, otherwise. */
  518.96 +	{ return (iFlags&EIsHighlightVisible); }
  518.97 +
  518.98 +inline TBool CGridLay::IsRowPermanentlySelected() const
  518.99 +/** Tests whether rows are permanently selected.
 518.100 +
 518.101 +@return True, if rows are permanently selected; false, otherwise. */
 518.102 +	{ return (iFlags&EIsRowPermanentlySelected); }
 518.103 +
 518.104 +inline TBool CGridLay::IsTitleLines() const
 518.105 +/** Tests whether the grid has both horizontal and vertical title lines.
 518.106 +
 518.107 +@return True, if the grid has both a horizontal and vertical title line; false, 
 518.108 +otherwise. */
 518.109 +	{ return (iFlags&(EIsHorizontalTitleLine|EIsVerticalTitleLine)); }
 518.110 +
 518.111 +inline TBool CGridLay::IsHorizontalTitleLine() const
 518.112 +/** Tests whether the grid has a horizontal title line.
 518.113 +
 518.114 +@return True, if the grid is to have a horizontal title line; false otherwise. */
 518.115 +	{ return (iFlags&EIsHorizontalTitleLine); }
 518.116 +
 518.117 +inline TBool CGridLay::IsVerticalTitleLine() const
 518.118 +/** Tests whether the grid has a vertical title line.
 518.119 +
 518.120 +@return True, if the grid is to have a vertical title line; false otherwise. */
 518.121 +	{ return (iFlags&EIsVerticalTitleLine); }
 518.122 +
 518.123 +inline TBool CGridLay::IsIndefiniteRowBoundaries() const
 518.124 +/** Tests whether the grid has indefinite row boundaries.
 518.125 +
 518.126 +@return True, if the grid has indefinite row boundaries; false, otherwise. */
 518.127 +	{ return (iFlags&EIsIndefiniteRowBoundaries); }
 518.128 +
 518.129 +inline TBool CGridLay::IsUniformRowHeight() const
 518.130 +/** Tests whether all the rows have the same height.
 518.131 +
 518.132 +@return True, if all rows have the same height; false, otherwise. */
 518.133 +	{ return (iFlags&EIsUniformRowHeight); }
 518.134 +
 518.135 +inline TBool CGridLay::IsUniformColumnWidth() const
 518.136 +/** Tests whether all columns have the same width.
 518.137 +
 518.138 +@return True, if all columns have the same width; false, otherwise. */
 518.139 +	{ return (iFlags&EIsUniformColumnWidth); }
 518.140 +
 518.141 +inline TBool CGridLay::IsTopLabelDragDisabled() const
 518.142 +/** Tests whether a drag operation on the boundary between two columns is permitted.
 518.143 +
 518.144 +@return True, if a drag operation on a column boundary is permitted; false otherwise. */
 518.145 +	{ return (iFlags&EIsTopLabelDragDisabled); }
 518.146 +
 518.147 +inline TBool CGridLay::IsSideLabelDragDisabled() const
 518.148 +/** Tests whether a drag operation on the boundary between two rows is permitted.
 518.149 +
 518.150 +@return True, if a drag operation on a row boundary is permitted; false otherwise. */
 518.151 +	{ return (iFlags&EIsSideLabelDragDisabled); }
 518.152 +
 518.153 +inline TBool CGridLay::IsPrintedLabels() const
 518.154 +/** Tests whether labels are printed.
 518.155 +
 518.156 +@return True, if labels are printed; false, otherwise. */
 518.157 +	{ return (iFlags&EIsPrintedLabels); }
 518.158 +
 518.159 +inline TBool CGridLay::IsPrintedGridLines() const
 518.160 +/** Tests whether grid lines are printed.
 518.161 +
 518.162 +@return True, if grid lines are printed; false, otherwise. */
 518.163 +	{ return (iFlags&EIsPrintedGridLines); }
 518.164 +
 518.165 +inline TBool CGridLay::IsVisibleToRowFullyVisible() const
 518.166 +	{ return (iFlags&EIsVisibleToRowFullyVisible); }
 518.167 +
 518.168 +inline TBool CGridLay::IsVisibleToColumnFullyVisible() const
 518.169 +	{ return (iFlags&EIsVisibleToColumnFullyVisible); }
 518.170 +
 518.171 +inline TBool CGridLay::IsEncroachingCellBorders() const
 518.172 +/** Tests whether encroaching cell borders are permitted.
 518.173 +
 518.174 +Encroaching cell borders are where cell borders wider than one pixel are drawn 
 518.175 +inside the cell, as opposed to outside.
 518.176 +
 518.177 +@return True, if encroaching cells borders are permitted; false, otherwise. */
 518.178 +	{ return (iFlags&EIsEncroachingCellBorders); }
 518.179 +
 518.180 +inline TBool CGridLay::IsRowSelectionDisabled() const
 518.181 +/** Tests whether row selection is disabled.
 518.182 +
 518.183 +@return True, if row selection is disabled; false, otherwise. */
 518.184 +	{ return (iFlags&EIsRowSelectionDisabled); }
 518.185 +
 518.186 +inline TBool CGridLay::IsColumnSelectionDisabled() const
 518.187 +/** Tests whether column selection is disabled.
 518.188 +
 518.189 +@return True, if column selection is disabled; false, otherwise. */
 518.190 +	{ return (iFlags&EIsColumnSelectionDisabled); }
 518.191 +
 518.192 +inline TBool CGridLay::IsAutoClearGridCells() const
 518.193 +/** Tests whether automatic clearing of grid cells is done.
 518.194 +
 518.195 +Automatic clearing of grid cells is where all cells are cleared on redraw, 
 518.196 +in case drawing the contents doesn't guarantee to write to every pixel (the 
 518.197 +usual way of doing flicker-free redraws).
 518.198 +
 518.199 +@return True, if automatic clearing of grid cells is done; false, otherwise. */
 518.200 +	{ return (iFlags&EIsAutoClearGridCells); }
 518.201 +
 518.202 +inline TBool CGridLay::IsPageBreakLinesHidden() const
 518.203 +/** Tests whether lines marking page breaks are hidden.
 518.204 +
 518.205 +@return True, if lines marking page breaks are hidden; false, otherwise. */
 518.206 +	{ return (iFlags&EIsPageBreakLinesHidden); }
 518.207 +
 518.208 +inline TBool CGridLay::HasChanged() const
 518.209 +/** Tests whether any change has occurred to the grid layout.
 518.210 +
 518.211 +Such changes include alterations to the height of a row or the 
 518.212 +width of a column, additions or deletions of rows or columns, 
 518.213 +and changes to the visibility of grid lines.
 518.214 +Note that this list is not exhaustive.
 518.215 +
 518.216 +@return True, if the grid layout has changed; false, otherwise. */
 518.217 +	{ return iHasChanged; }
 518.218 +
 518.219 +inline void CGridLay::SetHasChanged(TBool aHasChanged)
 518.220 +/** Sets whether any change has occurred to the grid layout.
 518.221 +
 518.222 +@param aHasChanged ETrue, if any change has occurred to the grid layout; EFalse, 
 518.223 +otherwise. */
 518.224 +	{ iHasChanged=aHasChanged; }
 518.225 +
 518.226 +inline void CGridLay::SetGridEdgeColor(TRgb aColor)
 518.227 +/** Defines the colour that the edges of the grid beyond the grid range are to 
 518.228 +have.
 518.229 +
 518.230 +If not changed by this function, the default colour is white.
 518.231 +
 518.232 +@param aColor The colour value. */
 518.233 +	{ iGridEdgeColor=aColor; }
 518.234 +
 518.235 +inline TBool CGridLay::IsPaginated() const
 518.236 +/** Tests whether the grid has been paginated.
 518.237 +
 518.238 +@return True, if the grid has been paginated; false, otherwise. */
 518.239 +	{ return (iFlags&EIsPaginated); }
 518.240 +
 518.241 +inline void CGridLay::SetPrintRange(const TRangeRef& aPrintRange) 
 518.242 +/** Sets the range of cells that are visible for printing.
 518.243 +
 518.244 +@param aPrintRange The cell range. */
 518.245 +	{ iVisibleRange=aPrintRange; }
 518.246 +
 518.247 +inline TSize CGridLay::PageSizeInTwips() const
 518.248 +/** Gets the size of a page.
 518.249 +
 518.250 +@return The size of a page, in twips. */
 518.251 +	{ return iPageSizeInTwips; }
 518.252 +
 518.253 +inline TBool CGridLay::IsAutoPagination() const
 518.254 +/** Tests whether automatic pagination is in effect.
 518.255 +
 518.256 +@return True, if automatic pagination is in effect, false, otherwise. */
 518.257 +	{ return (iFlags&EIsAutoPagination); }
 518.258 +
 518.259 +// CGridLabelImg
 518.260 +
 518.261 +inline void CGridLabelImg::SetGraphicsDeviceMap(MGraphicsDeviceMap* aGraphicsDeviceMap)
 518.262 +/** Supplies a new interface object for mapping between twips and device-specific 
 518.263 +units.
 518.264 +
 518.265 +Note that the caller must call ReleaseFont() before calling this function, 
 518.266 +and must call NotifyGraphicsDeviceMapChangeL() afterwards.
 518.267 +
 518.268 +@param aGraphicsDeviceMap A new interface object for mapping between twips 
 518.269 +and device-specific units. */
 518.270 +	{
 518.271 +	iGraphicsDeviceMap=aGraphicsDeviceMap;
 518.272 +	}
 518.273 +
 518.274 +inline TFontSpec CGridLabelImg::FontSpec() const
 518.275 +/** Gets the font specification.
 518.276 +
 518.277 +@return The font specification. */
 518.278 +	{
 518.279 +	return iFontSpec;
 518.280 +	}
 518.281 +
 518.282 +inline void CGridLabelImg::SetGridColors(const TGridColors& aGridColors)
 518.283 +/** Sets the colours to be used when drawing the label.
 518.284 +
 518.285 +@param aGridColors The object containing the grid colours specification. */
 518.286 +	{
 518.287 +	iGridColors = aGridColors;
 518.288 +	}
 518.289 +
 518.290 +// CGridCellImg
 518.291 +
 518.292 +inline TInt CGridCellImg::BurstColOffset() const
 518.293 +/** Gets the bursting column offset.
 518.294 +
 518.295 +@return The burst column offset */
 518.296 +	{ return iBurstColOffset; }
 518.297 +
 518.298 +inline TInt CGridCellImg::BurstLeft() const
 518.299 +/** Gets the left hand bursting value.
 518.300 +
 518.301 +@return The burst value. */
 518.302 +	{ return iBurstLeft; }
 518.303 +
 518.304 +inline TInt CGridCellImg::BurstRight() const
 518.305 +/** Gets the right hand bursting value.
 518.306 +
 518.307 +@return The burst value */
 518.308 +	{ return iBurstRight; }
 518.309 +
 518.310 +inline TBool CGridCellImg::IsHorizontalGridLines() const
 518.311 +/** Tests whether horizontal grid lines are drawn.
 518.312 +
 518.313 +This function is set by the CGridImg object and allows classes derived from 
 518.314 +CGridCellImg to modify or restrict the area into which they draw.
 518.315 +
 518.316 +@return True, if horizontal grid lines are drawn; false, otherwise. */
 518.317 +	{ return iGridLineFlags&EIsHorizontalGridLines; }
 518.318 +
 518.319 +inline TBool CGridCellImg::IsVerticalGridLines() const
 518.320 +/** Tests whether vertical grid lines are drawn.
 518.321 +
 518.322 +This function is set by the CGridImg object and allows classes derived from 
 518.323 +CGridCellImg to modify or restrict the area into which they draw.
 518.324 +
 518.325 +@return True, if vertical grid lines are drawn; false, otherwise. */
 518.326 +	{ return iGridLineFlags&EIsVerticalGridLines; }
 518.327 +
 518.328 +inline void CGridCellImg::SetGridColors(const TGridColors& aGridColors)
 518.329 +/** Sets the colours to be used when drawing.
 518.330 +
 518.331 +@param aGridColors The object containing the grid colours specification. */
 518.332 +	{
 518.333 +	iGridColors = aGridColors;
 518.334 +	}
 518.335 +
 518.336 +// CGridImg
 518.337 +
 518.338 +inline void CGridImg::SetGridLay(CGridLay* aGridLay)
 518.339 +/** Sets the specified grid layout object.
 518.340 +
 518.341 +@param aGridLay A pointer to the object that controls the layout of rows and 
 518.342 +columns. */
 518.343 +	{ iGridLay = aGridLay; }
 518.344 +
 518.345 +inline void CGridImg::SetWindow(RWindow *aWin)
 518.346 +/** Sets the specified window.
 518.347 +
 518.348 +@param aWin A pointer to the currently active window. */
 518.349 +	{ iWin = aWin; }
 518.350 +
 518.351 +////////////////////////->
 518.352 +//inline void CGridImg::SetGridLabelImg(CGridLabelImg *aGridLabelImg)
 518.353 +//	{ iGridLabelImg =  aGridLabelImg; }
 518.354 +////////////////////////->
 518.355 +
 518.356 +inline void CGridImg::SetCursorMoveCallBack(MGridCursorMoveCallBack *aCursorMoveCallBack)
 518.357 +/** Sets the cursor moved call-back object.
 518.358 +
 518.359 +The call-back object encapsulates the implementation of a call-back function 
 518.360 +that is called whenever there is a change to the cursor position.
 518.361 +
 518.362 +@param aCursorMoveCallBack A pointer to the callback object. */
 518.363 +	{ iCursorMoveCallBack = aCursorMoveCallBack; }
 518.364 +
 518.365 +inline const CGridCellRegion* CGridImg::Selected() const
 518.366 +/** Gets the currently selected region.
 518.367 +
 518.368 +@return A pointer to the selected region object. */
 518.369 +	{ return iSelected; }
 518.370 +
 518.371 +inline const CGridLabelImg* CGridImg::GridLabelImg() const
 518.372 +/** Gets the the object that is used to draw a cell label.
 518.373 +
 518.374 +@return A pointer to the object that is used to draw a cell label. */
 518.375 +	{ return iGridLabelImg; }
 518.376 +
 518.377 +inline TCellRef CGridImg::CursorPos() const
 518.378 +/** Gets the current position of the cursor.
 518.379 +
 518.380 +@return The cell reference of the current cursor position. */
 518.381 +	{ return iCursorPos; }
 518.382 +
 518.383 +inline TCellRef CGridImg::AnchorPos() const
 518.384 +/** Gets the cursor's anchor position. 
 518.385 +
 518.386 +This is the cell reference of the position that the cursor must return to 
 518.387 +after a series of selected movements have been made.
 518.388 +
 518.389 +@return The cell reference of the cursor's anchor position. */
 518.390 +	{ return iAnchorPos; }
 518.391 +
 518.392 +inline TCellRef CGridImg::NewCursorPos() const
 518.393 +/** Gets the new position of the cursor.
 518.394 +
 518.395 +@return The cell reference of the new cursor position.
 518.396 +@see SetCursorPosL() */
 518.397 +	{ return iNewCursorPos; }
 518.398 +
 518.399 +inline TRect CGridImg::GridRect() const
 518.400 +/** Gets the rectangle containing the grid.
 518.401 +
 518.402 +@return The rectangle containing the grid. */
 518.403 +	{ return iGridRect; }
 518.404 +
 518.405 +inline TPoint CGridImg::TitlePoint() const
 518.406 +/** Gets the position of the title.
 518.407 +
 518.408 +This is the point at the top left of the grid excluding the labels.
 518.409 +
 518.410 +@return The position of the title. */
 518.411 +	{ return iTitlePoint; }
 518.412 +
 518.413 +inline TPoint CGridImg::MainPoint() const
 518.414 +// Returns the most commonly used point in the grid (usually same as TitlePoint()).
 518.415 +/** Gets the position at which the visible range starts.
 518.416 +
 518.417 +@return The position at which the visible range starts. */
 518.418 +	{ return iMainPoint; }
 518.419 +
 518.420 +inline TRect CGridImg::MainRect() const
 518.421 +/** Gets the rectangle that corresponds to the visible range.
 518.422 +
 518.423 +@return The rectangle that corresponds to the visible range. */
 518.424 +	{ return TRect(iMainPoint,iGridRect.iBr); }
   519.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   519.2 +++ b/epoc32/include/mw/gulalign.h	Wed Mar 31 12:27:01 2010 +0100
   519.3 @@ -0,0 +1,153 @@
   519.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   519.5 +// All rights reserved.
   519.6 +// This component and the accompanying materials are made available
   519.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   519.8 +// which accompanies this distribution, and is available
   519.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  519.10 +//
  519.11 +// Initial Contributors:
  519.12 +// Nokia Corporation - initial contribution.
  519.13 +//
  519.14 +// Contributors:
  519.15 +//
  519.16 +// Description:
  519.17 +//
  519.18 +
  519.19 +#ifndef __GULALIGN_H__
  519.20 +#define __GULALIGN_H__
  519.21 +
  519.22 +#include <e32std.h>
  519.23 +#include <e32base.h>
  519.24 +#include <gdi.h>
  519.25 +#include <biditext.h>	// enum TBidiText::TDirectionality
  519.26 +#include <txtfrmat.h>	// enum CParaFormat::TAlignment
  519.27 +
  519.28 +/** Horizontal layout settings for graphic objects. 
  519.29 +
  519.30 +@publishedAll
  519.31 +@released */
  519.32 +enum TGulHAlignment
  519.33 +	{
  519.34 +	/** Object is left-aligned. */
  519.35 +	EHLeft=CGraphicsContext::ELeft,
  519.36 +	/** Object is centred horizontally. */
  519.37 +	EHCenter=CGraphicsContext::ECenter,
  519.38 +	/** Object is right-aligned. */
  519.39 +	EHRight=CGraphicsContext::ERight
  519.40 +	};
  519.41 +
  519.42 +/** Vertical layout settings for graphic objects. 
  519.43 +
  519.44 +@publishedAll
  519.45 +@released */
  519.46 +enum TGulVAlignment
  519.47 +	{
  519.48 +	/** Object is aligned with the top. */
  519.49 +	EVTop=0x00,
  519.50 +	/** Object is centred vertically. */
  519.51 +	EVCenter=0x10,
  519.52 +	/** Object is aligned with the bottom. */
  519.53 +	EVBottom=0x20
  519.54 +	};
  519.55 +
  519.56 +/** Alignment settings for the layout of graphic objects. 
  519.57 +
  519.58 +@publishedAll
  519.59 +@released */
  519.60 +enum TGulAlignmentValue
  519.61 +	{
  519.62 +	/** Object is left and top aligned. */
  519.63 +	EHLeftVTop=EHLeft|EVTop,
  519.64 +	/** Object is left aligned and centred vertically. */
  519.65 +	EHLeftVCenter=EHLeft|EVCenter,
  519.66 +	/** Object is left aligned and at the bottom. */
  519.67 +	EHLeftVBottom=EHLeft|EVBottom,
  519.68 +	/** Object is centre aligned horizontally and at the top. */
  519.69 +	EHCenterVTop=EHCenter|EVTop,
  519.70 +	/** Object is centred horizontally and vertically. */
  519.71 +	EHCenterVCenter=EHCenter|EVCenter,
  519.72 +	/** Object is centred horizontally and at the bottom. */
  519.73 +	EHCenterVBottom=EHCenter|EVBottom,
  519.74 +	/** Object is right and top aligned. */
  519.75 +	EHRightVTop=EHRight|EVTop,
  519.76 +	/** Object is right aligned and centred vertically. */
  519.77 +	EHRightVCenter=EHRight|EVCenter,
  519.78 +	/** Object is right aligned and at the bottom. */
  519.79 +	EHRightVBottom=EHRight|EVBottom
  519.80 +	};
  519.81 +
  519.82 +
  519.83 +/** Provides a convenient way to describe horizontal and vertical layouts of rectangular 
  519.84 +objects and to enquire how they occupy an area given their alignment. 
  519.85 +
  519.86 +@publishedAll 
  519.87 +@released */
  519.88 +class TGulAlignment
  519.89 +	{
  519.90 +private:
  519.91 +	enum {EHMask=0x03, EHAbsoluteFlag=0x04, EVMask=0x30};
  519.92 +public:
  519.93 +	inline TGulAlignment();
  519.94 +	inline TGulAlignment(TGulAlignmentValue aValue);
  519.95 +	inline TGulAlignment(CGraphicsContext::TTextAlign aHAlign, TGulVAlignment aVAlign = EVTop);
  519.96 +	IMPORT_C operator TGulAlignmentValue() const;
  519.97 +	inline TGulVAlignment VAlignment() const;
  519.98 +	inline TGulHAlignment HAlignment() const;
  519.99 +	IMPORT_C TGulHAlignment HAlignment(TBidiText::TDirectionality aLanguageDirectionality) const;	
 519.100 +	IMPORT_C TBool HasAbsoluteHAlignment() const;
 519.101 +	IMPORT_C void SetAbsoluteHAlignment(TBool aAbsoluteHAlignment);
 519.102 +	
 519.103 +	// Returns the horizontal text alignment. 
 519.104 +	inline CGraphicsContext::TTextAlign TextAlign() const;
 519.105 +	IMPORT_C CGraphicsContext::TTextAlign TextAlign(TBidiText::TDirectionality aLanguageDirectionality) const;
 519.106 +	IMPORT_C CParaFormat::TAlignment ParaAlign() const;
 519.107 +
 519.108 +	IMPORT_C void SetVAlignment(TGulVAlignment aVAlign);
 519.109 +	IMPORT_C void SetHAlignment(TGulHAlignment aHAlign);
 519.110 +	IMPORT_C void SetHAlignment(CGraphicsContext::TTextAlign aHAlign);
 519.111 +	IMPORT_C void SetHAlignment(CParaFormat::TAlignment aHAlign);
 519.112 +	IMPORT_C TPoint InnerTopLeft(const TRect& aOuter, const TSize& aInnerSize) const;
 519.113 +	IMPORT_C TPoint InnerTopLeft(const TRect& aOuter, const TSize& aInnerSize, TBidiText::TDirectionality aLanguageDirectionality) const;
 519.114 +	IMPORT_C TRect InnerRect(const TRect& aOuter, const TSize& aInnerSize) const;
 519.115 +	IMPORT_C TRect InnerRect(const TRect& aOuter, const TSize& aInnerSize, TBidiText::TDirectionality aLanguageDirectionality) const;
 519.116 +private:
 519.117 +	TInt iValue;
 519.118 +	};
 519.119 +
 519.120 +/** Default constructor. */
 519.121 +inline TGulAlignment::TGulAlignment()
 519.122 +	{};
 519.123 +
 519.124 +/** Constructor initialising the object with an alignment value.
 519.125 +@param aValue The alignment value. */
 519.126 +inline TGulAlignment::TGulAlignment(TGulAlignmentValue aValue)
 519.127 +	{iValue=aValue;}
 519.128 +	
 519.129 +/** Constructor initialising the object with an alignment value.
 519.130 +@param aHAlign The horizontal alignment value. 
 519.131 +@param aVAlign The vertical alignment value. */
 519.132 +inline TGulAlignment::TGulAlignment(CGraphicsContext::TTextAlign aHAlign, TGulVAlignment aVAlign)
 519.133 +	{ iValue = static_cast<TGulAlignmentValue>(((TGulHAlignment)aHAlign) |aVAlign); }
 519.134 +		
 519.135 +/** Gets the vertical alignment. 
 519.136 +@return Vertical alignment. */
 519.137 +inline TGulVAlignment TGulAlignment::VAlignment() const
 519.138 +	{return((TGulVAlignment)(iValue&EVMask));}
 519.139 +
 519.140 +/** Gets the absolute horizontal alignment. 
 519.141 +
 519.142 +Note that this is the alignment in absolute terms. I.e. left and right 
 519.143 +alignment will not be swapped depending on language directionality.
 519.144 +@return Horizontal alignment. */
 519.145 +inline TGulHAlignment TGulAlignment::HAlignment() const
 519.146 +	{return((TGulHAlignment)(iValue&EHMask));}
 519.147 +
 519.148 +/** Gets the absolute horizontal text alignment.
 519.149 +
 519.150 +Note that this is the alignment in absolute terms. I.e. left and right 
 519.151 +alignment will not be swapped depending on language directionality.
 519.152 +@return The horizontal text alignment. */
 519.153 +inline CGraphicsContext::TTextAlign TGulAlignment::TextAlign() const
 519.154 +	{return((CGraphicsContext::TTextAlign)(HAlignment()));}
 519.155 +
 519.156 +#endif	// __GULALIGN_H__
   520.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   520.2 +++ b/epoc32/include/mw/gulbordr.h	Wed Mar 31 12:27:01 2010 +0100
   520.3 @@ -0,0 +1,348 @@
   520.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   520.5 +// All rights reserved.
   520.6 +// This component and the accompanying materials are made available
   520.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   520.8 +// which accompanies this distribution, and is available
   520.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  520.10 +//
  520.11 +// Initial Contributors:
  520.12 +// Nokia Corporation - initial contribution.
  520.13 +//
  520.14 +// Contributors:
  520.15 +//
  520.16 +// Description:
  520.17 +//
  520.18 +
  520.19 +#if !defined(__GULBORDR_H__)
  520.20 +#define __GULBORDR_H__
  520.21 +
  520.22 +#if !defined(__E32DEF_H__)
  520.23 +#include <e32def.h>
  520.24 +#endif
  520.25 +
  520.26 +#if !defined(__GULDEF_H__)
  520.27 +#include <guldef.h>
  520.28 +#endif
  520.29 +
  520.30 +#if !defined(__GDI_H__)
  520.31 +#include <gdi.h>
  520.32 +#endif
  520.33 +
  520.34 +
  520.35 +class TGulBorder
  520.36 +/** Draws a border around a control.
  520.37 +
  520.38 +The rectangular areas enclosed by borders are typically working areas of the 
  520.39 +graphics context so the class supplies a number of methods which describe 
  520.40 +how it occupies the area.
  520.41 +
  520.42 +A distinction between descriptive and logical borders is made. For descriptive 
  520.43 +borders the appearance of the border is known and fixed. The type of border 
  520.44 +drawn is determined by flags which describe how it is to be constructed. These 
  520.45 +flags can be combined to achieve many different effects, and standard combinations 
  520.46 +have been supplied (see the TBorderType enumeration). For logical borders 
  520.47 +the use of the border is known and fixed but the appearance is not specified. 
  520.48 +The appearance and sizing functions must be supplied in custom written code. 
  520.49 +@publishedAll
  520.50 +@released*/
  520.51 +    {
  520.52 +public:
  520.53 +	class TColors
  520.54 +	/** Represents the colours used within the border and for the optional single pixel 
  520.55 +	border outlines.
  520.56 +
  520.57 +	These colours are stored using TRgb values.
  520.58 +
  520.59 +	An object of this type can be populated using ColorUtils::GetRgbDerivedBorderColors().
  520.60 +
  520.61 +	The colours used inside the border are derived from iBack, the border's background 
  520.62 +	colour, so that border colours can be lighter or darker shades of the colour 
  520.63 +	used in the main body of the control they enclose. Different combinations 
  520.64 +	of light and dark shades are used to draw opposite border sides, to achieve 
  520.65 +	a raised or sunken effect. */
  520.66 +		{
  520.67 +	public:
  520.68 +		IMPORT_C TColors();
  520.69 +	public:	
  520.70 +		/** The line colour.
  520.71 +	
  520.72 +		This is the colour used to draw the outlines on either side of the border. 
  520.73 +		Not all border types have an outline. By default, KRgbBlack. */
  520.74 +		TRgb iLine;
  520.75 +		/** The background colour for the border. 
  520.76 +	
  520.77 +		The other colours used in the border are derived from this.
  520.78 +	
  520.79 +		By default, KRgbWhite. */
  520.80 +		TRgb iBack;
  520.81 +		/** The lightest colour. 
  520.82 +	
  520.83 +		By default, KRgbWhite. */
  520.84 +		TRgb iLight;
  520.85 +		/** The mid light colour. 
  520.86 +	
  520.87 +		This colour is midway between iBack and iLight. By default, KRgbWhite. */
  520.88 +		TRgb iMidlight;
  520.89 +		/** The mid dark colour. 
  520.90 +	
  520.91 +		This colour is midway between iBack and iDark. By default, KRgbDarkGray. */
  520.92 +		TRgb iMid;
  520.93 +		/** The darkest colour.
  520.94 +	
  520.95 +		By default, KRgbDarkGray. */
  520.96 +		TRgb iDark;
  520.97 +		/** Not used. */
  520.98 +		TRgb iInternalBack;
  520.99 +		};
 520.100 +
 520.101 +public:
 520.102 +	/** Defines the border outline style. 
 520.103 +
 520.104 +	Note that not all border types have an outline. */
 520.105 +	enum TOutlineStyle
 520.106 +		{
 520.107 +		/** The border has a single pixel outline, either solid (by default) or dotted. */
 520.108 +		EWithOutline=0x01,
 520.109 +		/** The border outline is drawn using a dotted pen. */
 520.110 +		EDottedOutline=0x02
 520.111 +		};
 520.112 +
 520.113 +	/** Defines whether or not the border has a single pixel interior border. 
 520.114 +
 520.115 +	By default it does not. */
 520.116 +	enum TInlineStyle
 520.117 +		{
 520.118 +		/** The border has an interior border. */
 520.119 +		EWithInline=0x04
 520.120 +		};
 520.121 +
 520.122 +	/** Defines the 3D border style. */
 520.123 +	enum T3DStyle
 520.124 +		{
 520.125 +		/** A flat border. */
 520.126 +		EFlat=0x10,
 520.127 +		/** A 3D effect sunken border. */
 520.128 +		ESunken=0x20,
 520.129 +		/** A 3D effect raised border. */
 520.130 +		ERaised=0x40
 520.131 +		};
 520.132 +
 520.133 +	/** Defines the border's construction style. */
 520.134 +	enum TConstructionStyle
 520.135 +		{
 520.136 +		/** One step border construction. 
 520.137 +	
 520.138 +		This type of border is drawn using the mid light and mid dark colours on opposite 
 520.139 +		sides of the border. */
 520.140 +		EOneStep=0x100,
 520.141 +		/** Two step border construction.
 520.142 +	
 520.143 +		This type of border uses light and dark colours for the main border frame 
 520.144 +		(or mid light for the flat border), and an additional half frame using mid 
 520.145 +		light or mid dark colours. */
 520.146 +		ETwoStep=0x200,
 520.147 +		/** Three step border construction. 
 520.148 +	
 520.149 +		This type of border is drawn with an outer frame, a repeating one pixel band 
 520.150 +		in mid tones, and an inner frame. */
 520.151 +		EThreeStep=0x400,
 520.152 +		/** Inverted two step border construction. 
 520.153 +	
 520.154 +		This is the same as ETwoStep except that for raised and sunken borders, the 
 520.155 +		additional half frame is drawn on the opposite side to that used in ETwoStep. */
 520.156 +		EInvertedTwoStep=0x800
 520.157 +		};
 520.158 +
 520.159 +	/** Defines the number of pixels to add to the border thickness.
 520.160 +
 520.161 +	The border thickness is the central part of the border, coloured in the mid-tone 
 520.162 +	highlights and lowlights.
 520.163 +
 520.164 +	For two step-constructed borders, the additional pixels are only added to 
 520.165 +	either the top left or bottom right hand sides. */
 520.166 +	enum TThickness
 520.167 +		{
 520.168 +		/** The border has one extra pixel. */
 520.169 +		EAddOnePixel=0x1000,
 520.170 +		/** The border has two extra pixels. */
 520.171 +		EAddTwoPixels=0x2000,
 520.172 +		/** The border has four extra pixels. */
 520.173 +		EAddFourPixels=0x4000
 520.174 +		};
 520.175 +
 520.176 +	/** Defines the number of pixels that are removed to produce rounded corners. */
 520.177 +	enum TRounding
 520.178 +		{
 520.179 +		/** Border rounded by removing one extra pixel. */
 520.180 +		EAddOneRoundingPixel=0x10000,
 520.181 +		/** Border rounded by removing two extra pixels. */
 520.182 +		EAddTwoRoundingPixels=0x20000,
 520.183 +		/** Border rounded by by removing four extra pixels. */
 520.184 +		EAddFourRoundingPixels=0x40000
 520.185 +		};
 520.186 +private:
 520.187 +	enum TNull
 520.188 +		{
 520.189 +		ENoBorder=0x00
 520.190 +		};
 520.191 +
 520.192 +	enum TLegacyStyle
 520.193 +		{
 520.194 +		EShallow=EAddOnePixel,
 520.195 +		EDeep=EAddTwoPixels,
 520.196 +		EThick=EAddFourPixels,
 520.197 +		EHorizontal=0x100000,
 520.198 +		EWithOverlap=0x200000,
 520.199 +		EGray=0x400000,
 520.200 +		EBlack=0x80000
 520.201 +		};
 520.202 +
 520.203 +	enum TLogicalStyle
 520.204 +		{
 520.205 +		ELogical=0x800000
 520.206 +		};
 520.207 +public:
 520.208 +	/** For logical borders, defines whether the border encloses a window, a container 
 520.209 +	control or a control. */
 520.210 +	enum TLogicalFamily
 520.211 +		{
 520.212 +		/** Logical border around a window. */
 520.213 +		EWindowFamily=ELogical|0x1,
 520.214 +		/** Logical border around a container. */
 520.215 +		EContainerFamily=ELogical|0x2,
 520.216 +		/** Logical border around a control. */
 520.217 +		EControlFamily=ELogical|0x3
 520.218 +		};
 520.219 +public:
 520.220 +	/** Defines the descriptive border types. */
 520.221 +	enum TBorderType
 520.222 +		{
 520.223 +		/** No border. */
 520.224 +		ENone=ENoBorder,
 520.225 +		/** Border is a 1 pixel wide grey outline. */
 520.226 +		ESingleGray=EWithOutline|EGray,
 520.227 +		/** Border is a 1 pixel wide black outline. */
 520.228 +		ESingleBlack=EWithOutline|EBlack,
 520.229 +		/** Border is a 1 pixel wide dotted outline. */
 520.230 +		ESingleDotted=EWithOutline|EDottedOutline,
 520.231 +		/** A 3D raised border, with 1 pixel thickness. */
 520.232 +		EShallowRaised=ERaised|EOneStep|EAddOnePixel,
 520.233 +		/** A 3D sunken border, with 1 pixel thickness. */
 520.234 +		EShallowSunken=ESunken|EOneStep|EAddOnePixel,
 520.235 +		/** A 3D raised border, with outline, and 2 pixel thickness. */
 520.236 +		EDeepRaised=EWithOutline|ERaised|EOneStep|EAddTwoPixels,
 520.237 +		/** The same as EDeepRaised. */
 520.238 +		EDeepRaisedWithOutline=EWithOutline|ERaised|EOneStep|EAddTwoPixels,
 520.239 +		/** A 3D sunken border, with outline, and 2 pixel thickness. */
 520.240 +		EDeepSunken=EWithOutline|ESunken|EOneStep|EAddTwoPixels,
 520.241 +		/** The same as EDeepSunken. */
 520.242 +		EDeepSunkenWithOutline=EWithOutline|ESunken|EOneStep|EAddTwoPixels,
 520.243 +		/** A 3D raised border, with outline, and 3 pixel thickness. */
 520.244 +		EThickDeepRaisedWithOutline=EWithOutline|ERaised|EOneStep|EAddOnePixel|EAddTwoPixels, 
 520.245 +		/** A 3D raised border, with 2 pixels thickness and no outline on the left and 
 520.246 +		right hand sides. */
 520.247 +		EVerticalBar=ERaised|EOneStep|EAddTwoPixels|EWithOverlap,
 520.248 +		/** A 3D raised border, with 2 pixels thickness and no outline on the top and bottom. */
 520.249 +		EHorizontalBar=ERaised|EOneStep|EAddTwoPixels|EHorizontal|EWithOverlap
 520.250 +		};
 520.251 +
 520.252 +	/** Defines the logical border types. */
 520.253 +	enum TLogicalType
 520.254 +		{
 520.255 +		// Window family
 520.256 +		/** Raised border around a window. */
 520.257 +		EWindow=EWindowFamily|ERaised,
 520.258 +		// Container family
 520.259 +		/** Flat border around a container. */
 520.260 +		EFlatContainer=EContainerFamily|EFlat,
 520.261 +		/** Raised border around a container. */
 520.262 +		ERaisedContainer=EContainerFamily|ERaised,
 520.263 +		/** Sunken border around a container. */
 520.264 +		ESunkenContainer=EContainerFamily|ESunken,
 520.265 +		// Control Family
 520.266 +		/** Flat border around a control. */
 520.267 +		EFlatControl=EControlFamily|EFlat,
 520.268 +		/** Raised border around a control. */
 520.269 +		ERaisedControl=EControlFamily|ERaised,
 520.270 +		/** Sunken border around a control. */
 520.271 +		ESunkenControl=EControlFamily|ESunken,
 520.272 +		/** Raised border around a control with focus. */
 520.273 +		EFocusedRaisedControl=EControlFamily|ERaised|0x100,
 520.274 +		/** Sunken border around a control with focus. */
 520.275 +		EFocusedSunkenControl=EControlFamily|ESunken|0x100
 520.276 +		};
 520.277 +
 520.278 +public:
 520.279 +    IMPORT_C TGulBorder();
 520.280 +    IMPORT_C TGulBorder(TBorderType aType);
 520.281 +    IMPORT_C TGulBorder(TBorderType aType,TGulAdjacent aAdjacent);
 520.282 +	IMPORT_C TGulBorder(TInt aType);
 520.283 +    IMPORT_C TGulBorder(TInt aType,TGulAdjacent aAdjacent);
 520.284 +	IMPORT_C void Draw(CGraphicsContext& aGc,const TRect& aRect,const TColors& aBorderColors) const;
 520.285 +   	IMPORT_C void Draw(CGraphicsContext& aGc,const TRect& aRect) const;
 520.286 +	IMPORT_C TRect InnerRect(const TRect& aOuterRect) const;
 520.287 +   	IMPORT_C TRect OuterRect(const TRect& aInnerRect) const;
 520.288 +	IMPORT_C void SetType(TInt aType);
 520.289 +	IMPORT_C void SetAdjacent(TInt aAdjacent);
 520.290 +	IMPORT_C TSize SizeDelta() const;
 520.291 +   	IMPORT_C TMargins Margins() const;
 520.292 +	IMPORT_C TBool HasBorder() const;
 520.293 +	IMPORT_C TInt Adjacent() const;	
 520.294 +	IMPORT_C TInt Type() const;
 520.295 +public:	// Internal to Symbian
 520.296 +	IMPORT_C TInt Thickness() const;
 520.297 +	IMPORT_C TInt Rounding() const;
 520.298 +private:
 520.299 +	TBool IsSunken() const;
 520.300 +	TInt Depth() const;
 520.301 +	void DrawOutline(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor) const;
 520.302 +	void DrawRectOutline(CGraphicsContext& aGc,const TRect& aRect) const;
 520.303 +	void DrawInline(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor) const;
 520.304 +	TMargins OutlineMargins() const;
 520.305 +	TMargins BorderMargins() const;
 520.306 +	TMargins InlineMargins() const;
 520.307 +	TRect OutlineInnerRect(const TRect& aOuterRect) const;
 520.308 +	TRect BorderInnerRect(const TRect& aOuterRect) const;
 520.309 +	TInt BorderRounding() const;
 520.310 +	TInt InlineRounding() const;
 520.311 +	void DrawOneStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aMidlight,TRgb aMid) const;
 520.312 +	void DrawTwoStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const;
 520.313 +	void DrawInvertedTwoStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const;
 520.314 +	void DrawThreeStep(CGraphicsContext& aGc,const TRect& aRect,TRgb aBack,TRgb aLight,TRgb aMidlight,TRgb aMid,TRgb aDark) const;
 520.315 +	void DrawTopLeft(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor,const TInt aRounding) const;
 520.316 +	void DrawRoundedTopLeft(CGraphicsContext& aGc,const TRect& aRect,const TInt aRounding) const;
 520.317 +	void DrawBottomRight(CGraphicsContext& aGc,const TRect& aRect,TRgb aColor,const TInt aRounding) const;
 520.318 +	void DrawRoundedBottomRight(CGraphicsContext& aGc,const TRect& aRect,const TInt aRounding) const;
 520.319 +	void DrawRoundedCorner(CGraphicsContext& aGc,const TPoint& aStart,const TInt aRoundedLength, const TBool aUp, const TBool aRight) const;
 520.320 +	TInt RoundingMargin(const TInt aRoundedLength) const;
 520.321 +	inline TInt InternalType() const;
 520.322 +	void TranslateLegacyTypes();
 520.323 +private:
 520.324 +    TInt iType;
 520.325 +    };
 520.326 +
 520.327 +/**
 520.328 +The MGulLogicalBorder class specifices an interface for logical borders.
 520.329 +
 520.330 +@internalTechnology*/
 520.331 +class MGulLogicalBorder
 520.332 +	{
 520.333 +public:
 520.334 +	virtual void Draw(const TGulBorder& aBorder,CGraphicsContext& aGc, const TRect& aRect, const TGulBorder::TColors& aBorderColors) const=0;
 520.335 +	virtual TMargins Margins(const TGulBorder& aBorder) const=0;
 520.336 +private:
 520.337 +	IMPORT_C virtual void MGulLogicalBorderReserved();
 520.338 +	};
 520.339 +
 520.340 +/**
 520.341 +The GulTls class sets and gets the thread local storage for EGul.
 520.342 + 
 520.343 +@internalTechnology*/
 520.344 +class GulTls
 520.345 +	{
 520.346 +public:
 520.347 +	IMPORT_C static void SetLogicalBorder(MGulLogicalBorder* aLogicalBorder);
 520.348 +	IMPORT_C static const MGulLogicalBorder* LogicalBorder();
 520.349 +	};
 520.350 +
 520.351 +#endif
   521.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   521.2 +++ b/epoc32/include/mw/gulcolor.h	Wed Mar 31 12:27:01 2010 +0100
   521.3 @@ -0,0 +1,274 @@
   521.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   521.5 +// All rights reserved.
   521.6 +// This component and the accompanying materials are made available
   521.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   521.8 +// which accompanies this distribution, and is available
   521.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  521.10 +//
  521.11 +// Initial Contributors:
  521.12 +// Nokia Corporation - initial contribution.
  521.13 +//
  521.14 +// Contributors:
  521.15 +//
  521.16 +// Description:
  521.17 +//
  521.18 +
  521.19 +#if !defined(__GULCOLOR_H__)
  521.20 +#define __GULCOLOR_H__
  521.21 +
  521.22 +#if !defined(__W32STD_H__)
  521.23 +#include <w32std.h>
  521.24 +#endif
  521.25 +
  521.26 +#if !defined(__E32BASE_H__)
  521.27 +#include <e32base.h>
  521.28 +#endif
  521.29 +
  521.30 +#if !defined(__GDI_H__)
  521.31 +#include <gdi.h>
  521.32 +#endif
  521.33 +
  521.34 +/** Logical colours.
  521.35 +
  521.36 +Logical colours are used to specify the colour scheme for the controls in 
  521.37 +an application.
  521.38 +
  521.39 +Many controls have one logical colour for text and another logical colour 
  521.40 +for the background. Some logical colours have a dimmed variant for when the 
  521.41 +control becomes inactive or disabled. Highlighted and pressed variants exist 
  521.42 +for controls that support selection or which can be pressed. 
  521.43 +
  521.44 +@publishedAll
  521.45 +@released */
  521.46 +enum TLogicalColor
  521.47 +	{
  521.48 +	// Windows
  521.49 +	/** The colour of a window's background. */
  521.50 +	EColorWindowBackground,
  521.51 +	/** The colour of text in a window. */
  521.52 +	EColorWindowText,
  521.53 +	// Controls
  521.54 +	/** The colour of the background contents of a control. */
  521.55 +	EColorControlBackground,
  521.56 +	/** The colour of the text inside a control. */
  521.57 +	EColorControlText, 
  521.58 +	/** The background colour of a control's border. */
  521.59 +	EColorControlSurroundBackground,
  521.60 +	/** The colour of text in a control's border. */
  521.61 +	EColorControlSurroundText,
  521.62 +	/** The colour of a control's background when highlighted for selection. */
  521.63 +	EColorControlHighlightBackground, 
  521.64 +	/** The colour of the text in a control when highlighted for selection. */
  521.65 +	EColorControlHighlightText,
  521.66 +	/** The colour of a control's background when dimmed. */
  521.67 +	EColorControlDimmedBackground, 
  521.68 +	/** The colour of the text in a control when dimmed. */
  521.69 +	EColorControlDimmedText,
  521.70 +	/** The colour of a control's background when dimmed and highlighted for selection. */
  521.71 +	EColorControlDimmedHighlightBackground,
  521.72 +	/** The colour of the text in a control when dimmed and highlighted for selection. */
  521.73 +	EColorControlDimmedHighlightText,
  521.74 +	// Dialogs
  521.75 +	/** The colour of a dialog's background. */
  521.76 +	EColorDialogBackground,
  521.77 +	/** The colour of text inside a dialog. */
  521.78 +	EColorDialogText,
  521.79 +	/** A dialog title's background colour. */
  521.80 +	EColorDialogTitle,
  521.81 +	/** A dialog title's background colour when pressed. */
  521.82 +	EColorDialogTitlePressed,
  521.83 +	/** The text colour in a dialog's title. */
  521.84 +	EColorDialogTitleText,
  521.85 +	/** The text colour in a dialog's title when pressed. */
  521.86 +	EColorDialogTitleTextPressed,
  521.87 +	// Menus
  521.88 +	/** The colour of the menubar's background. */
  521.89 +	EColorMenubarBackground,
  521.90 +	/** The colour of text in the menubar. */
  521.91 +	EColorMenubarText,
  521.92 +	/** The colour of the menubar title's background. */
  521.93 +	EColorMenubarTitleBackground,
  521.94 +	/** The colour of text in the menubar title. */
  521.95 +	EColorMenubarTitleText,
  521.96 +	/** The colour of the menu pane background. */
  521.97 +	EColorMenuPaneBackground,
  521.98 +	/** The colour of text in the menu pane. */
  521.99 +	EColorMenuPaneText,
 521.100 +	/** The colour of the menu pane background when highlighted for selection. */
 521.101 +	EColorMenuPaneHighlight,
 521.102 +	/** The colour of text in the menu pane when highlighted for selection. */
 521.103 +	EColorMenuPaneTextHighlight,
 521.104 +	/** The colour of the menu pane background when dimmed and highlighted. */
 521.105 +	EColorMenuPaneDimmedHighlight,
 521.106 +	/** The colour of text in the menu pane when dimmed. */
 521.107 +	EColorMenuPaneDimmedText,
 521.108 +	/** The colour of text in the menu pane when dimmed and highlighted for selection. */
 521.109 +	EColorMenuPaneDimmedTextHighlight,
 521.110 +	// Command buttons
 521.111 +	/** The colour of the button background, when the button is in the unset state. */
 521.112 +	EColorButtonFaceClear,
 521.113 +	/** The colour of the button background when the button is in the set state. */
 521.114 +	EColorButtonFaceSet,
 521.115 +	/** The colour of the button background when the button is in the set state and 
 521.116 +	is pressed. */
 521.117 +	EColorButtonFaceSetPressed,
 521.118 +	/** The colour of the button background when the button is in the unset state and 
 521.119 +	is pressed. */
 521.120 +	EColorButtonFaceClearPressed,
 521.121 +	/** The colour of the button text. */
 521.122 +	EColorButtonText,
 521.123 +	/** The colour of the button text when the button is pressed. */
 521.124 +	EColorButtonTextPressed,
 521.125 +	/** The colour of the button text when the button is dimmed. */
 521.126 +	EColorButtonTextDimmed,		
 521.127 +	// Message windows
 521.128 +	/** The colour of the message window foreground. */
 521.129 +	EColorMsgWinForeground,
 521.130 +	EColorMsgWinBackground,
 521.131 +	// Scrollbars
 521.132 +	/** The colour of the scroll bar border. */
 521.133 +	EColorScrollBarBorder,
 521.134 +	EColorScrollBarShaft,
 521.135 +	/** The colour of the scroll bar shaft background when dimmed. */
 521.136 +	EColorScrollBarShaftDimmed,
 521.137 +	/** The colour of the scroll bar shaft background when pressed. */
 521.138 +	EColorScrollBarShaftPressed,
 521.139 +	/** The colour of the background for scroll bars with no thumb and no shaft. */
 521.140 +	EColorScrollBarNoShaftOrThumb,
 521.141 +	/** The colour of scroll bar buttons. */
 521.142 +	EColorScrollButtonIcon,
 521.143 +	/** The colour of scroll bar buttons when pressed. */
 521.144 +	EColorScrollButtonIconPressed,
 521.145 +	/** The colour of scroll bar buttons when dimmed. */
 521.146 +	EColorScrollButtonIconDimmed,
 521.147 +	/** The colour of a scroll bar thumb's background. */
 521.148 +	EColorScrollButtonThumbBackground,
 521.149 +	/** The colour of a scroll bar thumb's background when pressed. */
 521.150 +	EColorScrollButtonThumbBackgroundPressed,
 521.151 +	/** The colour of a scroll bar thumb's background when dimmed. */
 521.152 +	EColorScrollThumbDimmed,
 521.153 +	/** The colour of a scroll bar thumb's edge. */
 521.154 +	EColorScrollThumbEdge,
 521.155 +	// Toolbars
 521.156 +	/** The colour of a toolbar's background. */
 521.157 +	EColorToolbarBackground,
 521.158 +	/** The colour of the text in a toolbar. */
 521.159 +	EColorToolbarText,
 521.160 +	// Status pane
 521.161 +	/** The colour of a status pane's background. */
 521.162 +	EColorStatusPaneBackground,
 521.163 +	/** The colour of the text in a status pane. */
 521.164 +	EColorStatusPaneText,
 521.165 +	// Labels
 521.166 +	/** The colour of the text in a label. */
 521.167 +	EColorLabelText,
 521.168 +	/** The colour of emphasised text in a label. */
 521.169 +	EColorLabelTextEmphasis,
 521.170 +	/** The colour of the text in a label when dimmed. */
 521.171 +	EColorLabelDimmedText,
 521.172 +	/** The colour of the label background when highlighted and dimmed. */
 521.173 +	EColorLabelHighlightPartialEmphasis,
 521.174 +	/** The colour of the label background when highlighted. */
 521.175 +	EColorLabelHighlightFullEmphasis,
 521.176 +	/** The number of logical colours */
 521.177 +	EColorNumberOfLogicalColors
 521.178 +	};
 521.179 +
 521.180 +class RReadStream;
 521.181 +class RWriteStream;
 521.182 +class CColorArray;
 521.183 +
 521.184 +// not available before Release 005
 521.185 +
 521.186 +class CColorList : public CBase
 521.187 +/** A palette that maps logical colours (TLogicalColor) to physical (TRgb) values. It 
 521.188 +also supports independent sections for applications: a section is identified by an 
 521.189 +application UID, and the mappings are held as a colour array (CColorArray). 
 521.190 +
 521.191 +A colour list also supports mapping for both four-grey and 256-colour schemes; the 
 521.192 +256-colour scheme will be used and will look good if the screen mode supports 16 or 
 521.193 +more colours. Otherwise, the four-grey scheme will be used. 
 521.194 +
 521.195 +@publishedAll 
 521.196 +@released */
 521.197 +	{
 521.198 +public:
 521.199 +	IMPORT_C static CColorList* NewL(CArrayFix<TRgb>* aColors);
 521.200 +	IMPORT_C ~CColorList();
 521.201 +	// Accessors
 521.202 +	IMPORT_C TRgb Color(TLogicalColor aColor) const;
 521.203 +	IMPORT_C TInt Count() const;
 521.204 +	IMPORT_C TRgb Color(TUid aApp,TInt aColor) const;
 521.205 +	IMPORT_C CColorArray* ColorArray(TUid aApp) const;
 521.206 +	IMPORT_C TBool ContainsColorArray(TUid aApp) const;
 521.207 +	// Manipulators
 521.208 +	IMPORT_C void SetColor(TLogicalColor aLogicalColor,TRgb aColor);
 521.209 +	IMPORT_C void AddColorArrayL(TUid aApp,CColorArray* aArray); // takes ownership
 521.210 +	IMPORT_C void DeleteColorArray(TUid aApp);
 521.211 +public:
 521.212 +	IMPORT_C static CColorList* NewLC();
 521.213 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 521.214 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 521.215 +	IMPORT_C void MergeL(const CColorList& aList);
 521.216 +private:
 521.217 +	CColorList(CArrayFix<TRgb>* aColors);
 521.218 +	TInt Find(TUid aApp) const;
 521.219 +private:
 521.220 +	class TAppColorList
 521.221 +		{
 521.222 +	public:
 521.223 +		inline TAppColorList(TUid aApp,CColorArray* aColorArray);
 521.224 +	public:
 521.225 +		TUid iApp;
 521.226 +		CColorArray* iColorArray;
 521.227 +		};
 521.228 +private:
 521.229 +	CArrayFix<TRgb>* iEikColors;
 521.230 +	CArrayFix<TAppColorList>* iAppColors;
 521.231 +	};
 521.232 +
 521.233 +// not available before Release 005
 521.234 +
 521.235 +class CColorArray : public CBase
 521.236 +/** A dynamic array of mappings between logical and physical colours (TRgb values).
 521.237 +
 521.238 +@publishedAll 
 521.239 +@released */
 521.240 +	{
 521.241 +public:
 521.242 +	IMPORT_C static CColorArray* NewL();
 521.243 +	IMPORT_C static CColorArray* NewLC();
 521.244 +	IMPORT_C ~CColorArray();
 521.245 +	IMPORT_C TRgb Color(TInt aLogicalColor) const;
 521.246 +	IMPORT_C void SetColor(TInt aLogicalColor,TRgb aColor);
 521.247 +	IMPORT_C TBool Contains(TInt aLogicalColor) const;
 521.248 +	IMPORT_C TInt Count() const;
 521.249 +	IMPORT_C void Reset();
 521.250 +	IMPORT_C void AddL(TInt aLogicalColor,TRgb aColor);
 521.251 +	IMPORT_C void Remove(TInt aLogicalColor);
 521.252 +public:
 521.253 +	static CColorArray* NewLC(const CColorArray& aArray);
 521.254 +public:
 521.255 +	void InternalizeL(RReadStream& aStream);
 521.256 +	void ExternalizeL(RWriteStream& aStream) const;
 521.257 +private:
 521.258 +	CColorArray();
 521.259 +	void ConstructL();
 521.260 +	TInt Find(TInt aLogicalColor) const;
 521.261 +private:
 521.262 +	class TColor
 521.263 +		{
 521.264 +	public:
 521.265 +		inline TColor();
 521.266 +		inline TColor(TRgb aColor,TInt aLogicalColor);
 521.267 +	public:
 521.268 +		void InternalizeL(RReadStream& aStream);
 521.269 +		void ExternalizeL(RWriteStream& aStream) const;
 521.270 +	public:
 521.271 +		TRgb iColor;
 521.272 +		TInt iLogicalColor;
 521.273 +		};
 521.274 +	CArrayFixFlat<TColor> iColors;
 521.275 +	};
 521.276 +
 521.277 +#endif
   522.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   522.2 +++ b/epoc32/include/mw/guldef.h	Wed Mar 31 12:27:01 2010 +0100
   522.3 @@ -0,0 +1,79 @@
   522.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   522.5 +// All rights reserved.
   522.6 +// This component and the accompanying materials are made available
   522.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   522.8 +// which accompanies this distribution, and is available
   522.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  522.10 +//
  522.11 +// Initial Contributors:
  522.12 +// Nokia Corporation - initial contribution.
  522.13 +//
  522.14 +// Contributors:
  522.15 +//
  522.16 +// Description:
  522.17 +//
  522.18 +
  522.19 +#if !defined(__GULDEF_H__)
  522.20 +#define __GULDEF_H__
  522.21 +
  522.22 +/** The sides on which borders can be adjacent. 
  522.23 +
  522.24 +@publishedAll
  522.25 +@released */
  522.26 +enum TGulAdjacent
  522.27 +	{
  522.28 +	/** Indicates that rectangle borders are not adjacent. */
  522.29 +	EGulAdjNone		=0x00,
  522.30 +	/** Adjacent at the top. */
  522.31 +	EGulAdjTop		=0x01,
  522.32 +	/** Adjacent at the bottom. */
  522.33 +	EGulAdjBottom	=0x02,
  522.34 +	/** Adjacent at the left. */
  522.35 +	EGulAdjLeft		=0x04,
  522.36 +	/** Adjacent at the right. */
  522.37 +	EGulAdjRight	=0x08
  522.38 +	};
  522.39 +	
  522.40 +/** Symbian light grey.
  522.41 +
  522.42 +@publishedAll
  522.43 +@released */
  522.44 +#define KRgbDitheredLightGray 	TRgb(204,204,204)
  522.45 +
  522.46 +/** Symbian dithered grey.
  522.47 +
  522.48 +@publishedAll
  522.49 +@released */
  522.50 +#define KRgb1in4DitheredGray 	TRgb(238,238,238)
  522.51 +
  522.52 +/** Symbian green.
  522.53 +
  522.54 +@publishedAll
  522.55 +@released */
  522.56 +#define KRgbSymbianGreen 		TRgb(0,153,153)
  522.57 +
  522.58 +/** Symbian light green.
  522.59 +
  522.60 +@publishedAll
  522.61 +@released */
  522.62 +#define KRgbSymbianGreenLight	TRgb(0,183,183)
  522.63 +
  522.64 +/** Symbian blue.
  522.65 +
  522.66 +@publishedAll
  522.67 +@released */
  522.68 +#define KRgbSymbianBlue 		TRgb(0,102,153)
  522.69 +
  522.70 +/** Symbian dark blue.
  522.71 +
  522.72 +@publishedAll
  522.73 +@released */
  522.74 +#define KRgbSymbianBlueDark		TRgb(0,72,123)
  522.75 +
  522.76 +/** Symbian orange.
  522.77 +
  522.78 +@publishedAll
  522.79 +@released */
  522.80 +#define KRgbSymbianOrange		TRgb(255,218,155)
  522.81 +
  522.82 +#endif
   523.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   523.2 +++ b/epoc32/include/mw/gulfont.h	Wed Mar 31 12:27:01 2010 +0100
   523.3 @@ -0,0 +1,125 @@
   523.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   523.5 +// All rights reserved.
   523.6 +// This component and the accompanying materials are made available
   523.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   523.8 +// which accompanies this distribution, and is available
   523.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  523.10 +//
  523.11 +// Initial Contributors:
  523.12 +// Nokia Corporation - initial contribution.
  523.13 +//
  523.14 +// Contributors:
  523.15 +//
  523.16 +// Description:
  523.17 +//
  523.18 +
  523.19 +#if !defined(__GULFONT_H__)
  523.20 +#define __GULFONT_H__
  523.21 +
  523.22 +#include <gdi.h>
  523.23 +#include <w32std.h>
  523.24 +
  523.25 +class TResourceReader;
  523.26 +
  523.27 +class TLogicalFont
  523.28 +/** Packages the attributes of a logical font.
  523.29 +
  523.30 +These attributes include a UID (iFontId) and a category (iCategory), either 
  523.31 +of which can be used to identify a required system font. The possible values 
  523.32 +for the UID are defined in the UI variant's look and feel layer, so are not 
  523.33 +the same as the UID values that may be used to create a physical font.
  523.34 +
  523.35 +An object of this class can be passed by any application to CEikonEnv::Font(), 
  523.36 +to return the closest matching system font (a CFont-derived object). 
  523.37 +
  523.38 +@publishedAll 
  523.39 +@released */
  523.40 +	{
  523.41 +public:
  523.42 +	/** Logical font categories.
  523.43 +	
  523.44 +	The font category specifies the type of font that is required. It can be specified 
  523.45 +	as an alternative to the logical font UID. The physical fonts associated with 
  523.46 +	these categories are specified in the LAF layer, so are UI variant-specific. */
  523.47 +	enum TFontCategory
  523.48 +		{
  523.49 +		/** The normal system font. */
  523.50 +		EView,
  523.51 +		/** The font used in buttons. */
  523.52 +		EButton,
  523.53 +		/** The font used for annotations. This is smaller than the normal font. 
  523.54 +		For instance, it is used to draw the page number in some applications. */
  523.55 +		EAnnotation,
  523.56 +		/** The font used for titles. */
  523.57 +		ETitle
  523.58 +		};
  523.59 +	/** Font styles. */
  523.60 +	enum TFontStyle
  523.61 +		{
  523.62 +		/** Normal style. */
  523.63 +		ENormal,
  523.64 +		/** Bold. */
  523.65 +		EBold,
  523.66 +		/** Italics. */
  523.67 +		EItalic,
  523.68 +		/** Bold and italics. */
  523.69 +		EBoldItalic,
  523.70 +		/** Superscript. */
  523.71 +		ESuperscript,
  523.72 +		/** Subscript. */
  523.73 +		ESubscript,
  523.74 +		/** Light. This is the opposite of bold, i.e. a smaller than normal pen size is 
  523.75 +		used to draw it. */
  523.76 +		ELight,
  523.77 +		/** Custom font. */
  523.78 +		ECustom
  523.79 +		};
  523.80 +public:
  523.81 +	IMPORT_C TLogicalFont();
  523.82 +	IMPORT_C TLogicalFont(TUid aId);
  523.83 +	IMPORT_C TLogicalFont(TFontCategory aCategory,TFontStyle aStyle,const TZoomFactor& aZoomFactor);
  523.84 +	IMPORT_C TLogicalFont(TUid aId,TFontCategory aCategory,TFontStyle aStyle,const TZoomFactor& aZoomFactor);
  523.85 +public:
  523.86 +	/** The logical font ID. */
  523.87 +	TUid iFontId;
  523.88 +	/** The logical font category. */
  523.89 +	TFontCategory iCategory;
  523.90 +	/** The font style. */
  523.91 +	TFontStyle iStyle;
  523.92 +	/** The zoom factor. */
  523.93 +	TZoomFactor iZoomFactor;
  523.94 +	};
  523.95 +
  523.96 +
  523.97 +class CCleanupStackableFont : public CBase
  523.98 +/** Wraps a font (CFbsFont) object that can be pushed onto the cleanup stack.
  523.99 +
 523.100 +By default, the cleanup stack only handles CBase-derived classes, and untyped 
 523.101 +(TAny*) objects that can be cleaned up by a simple memory free call. Fonts 
 523.102 +must also be released, which this class handles automatically in its destructor.
 523.103 +
 523.104 +The font is initialised from a resource file, and can be identified by name 
 523.105 +or UID.
 523.106 +
 523.107 +@publishedAll 
 523.108 +@released 
 523.109 +@see CFbsFont */
 523.110 +	{
 523.111 +public:
 523.112 +	IMPORT_C static CCleanupStackableFont* NewL(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 523.113 +	IMPORT_C static CCleanupStackableFont* NewLC(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 523.114 +	IMPORT_C static CCleanupStackableFont* NewByNameL(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 523.115 +	IMPORT_C static CCleanupStackableFont* NewByNameLC(TResourceReader& aReader,CWsScreenDevice& aScreenDevice);
 523.116 +	IMPORT_C virtual ~CCleanupStackableFont();
 523.117 +public:
 523.118 +	IMPORT_C CFbsFont& Font() const;
 523.119 +	IMPORT_C CFbsFont* TakeOwnershipOfFont();
 523.120 +private:
 523.121 +	CCleanupStackableFont(CWsScreenDevice& aScreenDevice);
 523.122 +	static CCleanupStackableFont* NewLC(TBool aByUid,TResourceReader& aReader, CWsScreenDevice& aScreenDevice);
 523.123 +private:
 523.124 +	CWsScreenDevice& iScreenDevice;
 523.125 +	CFbsFont* iFont;
 523.126 +	};
 523.127 +
 523.128 +#endif
   524.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   524.2 +++ b/epoc32/include/mw/gulicon.h	Wed Mar 31 12:27:01 2010 +0100
   524.3 @@ -0,0 +1,53 @@
   524.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   524.5 +// All rights reserved.
   524.6 +// This component and the accompanying materials are made available
   524.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   524.8 +// which accompanies this distribution, and is available
   524.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  524.10 +//
  524.11 +// Initial Contributors:
  524.12 +// Nokia Corporation - initial contribution.
  524.13 +//
  524.14 +// Contributors:
  524.15 +//
  524.16 +// Description:
  524.17 +//
  524.18 +
  524.19 +
  524.20 +#if !defined(__GULICON_H__)
  524.21 +#define __GULICON_H__  
  524.22 +
  524.23 +#if !defined(__E32BASE_H__)
  524.24 +#include <e32base.h>
  524.25 +#endif
  524.26 +
  524.27 +class CFbsBitmap;
  524.28 +
  524.29 +class CGulIcon : public CBase
  524.30 +/** Packages two bitmaps, one each for an icon image and its mask. 
  524.31 +
  524.32 +@publishedAll
  524.33 +@released */
  524.34 +	{
  524.35 +public:
  524.36 +	IMPORT_C static CGulIcon* NewLC();
  524.37 +	IMPORT_C static CGulIcon* NewL();
  524.38 +	IMPORT_C static CGulIcon* NewL(CFbsBitmap* aBitmap, CFbsBitmap* aMask=NULL);
  524.39 +	//
  524.40 +	IMPORT_C void SetBitmap(CFbsBitmap* aBitmap);
  524.41 +	IMPORT_C void SetMask(CFbsBitmap* aMask);
  524.42 +	IMPORT_C CFbsBitmap* Bitmap() const;
  524.43 +	IMPORT_C CFbsBitmap* Mask() const;
  524.44 +	IMPORT_C void SetBitmapsOwnedExternally(TBool aOwnedExternally);
  524.45 +	IMPORT_C TBool BitmapsOwnedExternally() const;
  524.46 +	//
  524.47 +	IMPORT_C ~CGulIcon();
  524.48 +private:
  524.49 +	CGulIcon();
  524.50 +private:
  524.51 +	CFbsBitmap* iBitmap;
  524.52 +	CFbsBitmap* iMask;
  524.53 +	TBool iBitmapsOwnedExternally;
  524.54 +	};
  524.55 +
  524.56 +#endif
   525.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   525.2 +++ b/epoc32/include/mw/gulutil.h	Wed Mar 31 12:27:01 2010 +0100
   525.3 @@ -0,0 +1,370 @@
   525.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   525.5 +// All rights reserved.
   525.6 +// This component and the accompanying materials are made available
   525.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   525.8 +// which accompanies this distribution, and is available
   525.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  525.10 +//
  525.11 +// Initial Contributors:
  525.12 +// Nokia Corporation - initial contribution.
  525.13 +//
  525.14 +// Contributors:
  525.15 +//
  525.16 +// Description:
  525.17 +//
  525.18 +
  525.19 +#if !defined(__GULUTIL_H__)
  525.20 +#define __GULUTIL_H__
  525.21 +
  525.22 +#include <e32std.h>
  525.23 +#include <badesca.h>
  525.24 +#include <gdi.h>
  525.25 +#include <gulbordr.h>
  525.26 +#include <gulftflg.hrh>
  525.27 +
  525.28 +/** 
  525.29 +@publishedAll 
  525.30 +@released 
  525.31 +*/
  525.32 +const TUint KTextUtilClipEndChar=0x2026;
  525.33 +
  525.34 +/**
  525.35 +@publishedAll 
  525.36 +@released 
  525.37 +*/
  525.38 +const TUint KColumnListSeparator='\t';
  525.39 +
  525.40 +class CFont;
  525.41 +class CFbsFont;
  525.42 +class CWsScreenDevice;
  525.43 +class TResourceReader;
  525.44 +class CColorArray;
  525.45 +class CGraphicsDevice;
  525.46 +class RWsSession;
  525.47 +class CColorList;
  525.48 +template <class T> class CArrayFix;
  525.49 +
  525.50 +
  525.51 +class TMargins8
  525.52 +/** A set of margins stored as 8 bit integer values which can represent 
  525.53 +either pixels or twips between -128 and +127.
  525.54 +
  525.55 +@publishedAll 
  525.56 +@released */
  525.57 +	{
  525.58 +public :
  525.59 +	/** Left margin in twips or pixels. */
  525.60 +	TInt8 iLeft;
  525.61 +	/** Right margin in twips or pixels. */
  525.62 +	TInt8 iRight;
  525.63 +	/** Top margin in twips or pixels. */
  525.64 +	TInt8 iTop;
  525.65 +	/** Bottom margin in twips or pixels. */
  525.66 +	TInt8 iBottom;
  525.67 +public :
  525.68 +	IMPORT_C TMargins8();
  525.69 +	IMPORT_C TMargins8(TInt8 aLeft, TInt8 aTop, TInt8 aRight, TInt8 aBottom);
  525.70 +	IMPORT_C void SetAllValuesTo(TInt aCommonValue);
  525.71 +    IMPORT_C TRect InnerRect(const TRect& aOuterRect) const;
  525.72 +    IMPORT_C TRect OuterRect(const TRect& aInnerRect) const;
  525.73 +	IMPORT_C TSize SizeDelta() const;
  525.74 +	};
  525.75 +
  525.76 +
  525.77 +class DrawUtils
  525.78 +/** Provides static functions for drawing text in a rectangle. 
  525.79 +
  525.80 +@publishedAll 
  525.81 +@released */
  525.82 +	{
  525.83 +public:
  525.84 +	IMPORT_C static void DrawText(CGraphicsContext& aGc,const TDesC& aString,const TRect& aBox,TInt aBaseLineOffset,
  525.85 +									CGraphicsContext::TTextAlign aHoriz,TInt aMargin,const CFont* aFont);
  525.86 +    IMPORT_C static void DrawBetweenRects(CGraphicsContext& aGc,const TRect& aOuterRect,const TRect& aInnerRect);
  525.87 +    IMPORT_C static void ClearBetweenRects(CGraphicsContext& aGc,const TRect& aOuterRect,const TRect& aInnerRect);
  525.88 +	};
  525.89 +
  525.90 +
  525.91 +class TextUtils
  525.92 +/** Provides static functions for truncating and aligning text strings. 
  525.93 +
  525.94 +@publishedAll 
  525.95 +@released */
  525.96 +	{
  525.97 +public:
  525.98 +	IMPORT_C static void ClipToFit(TDes& aBuffer,const CFont& aFont,TInt aMaxWidthInPixels,TChar aAlternativeEnd=KTextUtilClipEndChar);
  525.99 +	IMPORT_C static TInt ColumnText(TPtrC& aColumnText,TInt aColumn,const TDesC* aSourceText,TChar aColumnSeparator=KColumnListSeparator);
 525.100 +	IMPORT_C static void TruncateToNumChars(TDes& aBuffer, TInt numChars);
 525.101 +	};
 525.102 +
 525.103 +class FontUtils
 525.104 +/** Provides static functions for getting information about the fonts supported by a graphics 
 525.105 +device. 
 525.106 +
 525.107 +@publishedAll 
 525.108 +@released */
 525.109 +	{
 525.110 +public:
 525.111 +	IMPORT_C static void GetAvailableFontsL(const CGraphicsDevice& aDevice,CDesCArray& aFontNameList,
 525.112 +											TInt aFonts=EGulNoSymbolFonts);
 525.113 +	IMPORT_C static TInt TypefaceAttributes(const CGraphicsDevice& aDevice,const TDesC& aTypefaceName);
 525.114 +	IMPORT_C static TInt GetAvailableHeightsInTwipsL(const CGraphicsDevice& aDevice,const TDesC& aTypefaceName,
 525.115 +													CArrayFix<TInt>& aHeightList);
 525.116 +	IMPORT_C static TInt GetAvailableHeightsInTwipsAndPointsL(const CGraphicsDevice& aDevice,const TDesC& aTypefaceName,
 525.117 +															CArrayFix<TInt>& aTwipsList,CDesCArray& aPointsList);
 525.118 +	IMPORT_C static TInt PointsFromTwips(TInt aTwips);
 525.119 +	IMPORT_C static TInt TwipsFromPoints(TInt aPoints);
 525.120 +	IMPORT_C static TInt TwipsFromPoints(const TDesC& aPoints);
 525.121 +	IMPORT_C static TInt IndexOfNearestHeight(CArrayFix<TInt>& aTwipsList,TInt aHeight);
 525.122 +	};
 525.123 +
 525.124 +
 525.125 +class ResourceUtils
 525.126 +/** Provides static functions for resource reading.
 525.127 +
 525.128 +All functions use pre-initialised resource reader objects to read information 
 525.129 +from resource files.
 525.130 +
 525.131 +@publishedAll 
 525.132 +@released 
 525.133 +@see CCoeEnv::CreateResourceReaderLC() */
 525.134 +	{
 525.135 +public:
 525.136 +	IMPORT_C static CFbsFont* CreateNamedScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
 525.137 +	IMPORT_C static CFbsFont* CreateNamedScreenFontInPixelsL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
 525.138 +	IMPORT_C static CFbsFont* CreateScreenFontL(TResourceReader& aResourceReader,CWsScreenDevice& aScreenDevice);
 525.139 +	inline static TInt8 ReadTInt8L(TResourceReader& aReader);
 525.140 +	inline static TInt16 ReadTInt16L(TResourceReader& aReader);
 525.141 +	inline static TInt32 ReadTInt32L(TResourceReader& aReader);
 525.142 +	IMPORT_C static void PopulateColorArrayL(CColorArray& aColors,TResourceReader& aReader);
 525.143 +private:
 525.144 +	enum TResourceTypeInt { EResourceInt8,EResourceInt16,EResourceInt32 };
 525.145 +private:
 525.146 +	IMPORT_C static TInt32 ReadResourceIntL(TResourceReader& aReader,TResourceTypeInt aSize);
 525.147 +	};
 525.148 +
 525.149 +class ColorUtils
 525.150 +/** Provides static functions for manipulating colours.
 525.151 +
 525.152 +@publishedAll 
 525.153 +@released 
 525.154 +@see TDisplayMode */
 525.155 +	{
 525.156 +public:
 525.157 +	/** The orientation of a bitmap. */
 525.158 +    enum TBitmapOrientation
 525.159 +	    {
 525.160 +		/** The bitmap is vertical. */
 525.161 +	    EBitmapOrientationVertical,
 525.162 +		/** The bitmap is horizontal. */
 525.163 +	    EBitmapOrientationHorizontal
 525.164 +	    };
 525.165 +public:
 525.166 +	IMPORT_C static TRgb ColorAdjust(TRgb aColor,TInt aPercentage);
 525.167 +    IMPORT_C static void CreateGradientBitmapL(CFbsBitmap& aBitmap, const RWsSession& aWs, TInt aBreadth,
 525.168 +                                       TBitmapOrientation aOrientation, TRgb aStartColor, TRgb aEndColor);
 525.169 +	IMPORT_C static CColorList* CreateSystemColorListL(RFs& aFs);
 525.170 +	IMPORT_C static CColorList* CreateSystemColorListL(RFs& aFs,const CColorList& aColorList);
 525.171 +	IMPORT_C static void UpdateSystemColorListL(RFs& aFs,CColorList& aColorList);
 525.172 +	IMPORT_C static void GetRgbDerivedBorderColors(TGulBorder::TColors& aBorderColors,TRgb aBackgroundColor,TDisplayMode aMode);
 525.173 +	IMPORT_C static TRgb RgbDarkerColor(TRgb aRgb,TDisplayMode aMode);
 525.174 +	IMPORT_C static TRgb RgbMidDarkerColor(TRgb aRgb,TDisplayMode aMode);
 525.175 +	IMPORT_C static TRgb RgbLighterColor(TRgb aRgb,TDisplayMode aMode);
 525.176 +	};
 525.177 +
 525.178 +
 525.179 +class TFindWidthOfWidestTextItem
 525.180 +/** Finds the width in pixels of the widest item in a range of indexed text items.
 525.181 +
 525.182 +This is the base class for several classes used to get the maximum width for 
 525.183 +date and time components.
 525.184 +
 525.185 +Derived classes should override the pure virtual methods to supply an appropriate 
 525.186 +range of items. 
 525.187 +
 525.188 +@publishedAll 
 525.189 +@released */
 525.190 +	{
 525.191 +protected:
 525.192 +	/** Default constructor. */
 525.193 +	inline TFindWidthOfWidestTextItem() {}
 525.194 +public:
 525.195 +	IMPORT_C TInt MaximumWidthInPixels(const CFont& aFont) const;
 525.196 +private:
 525.197 +	/** Gets the first and last index in the range of items.
 525.198 +	
 525.199 +	@param aFirstIndex On return, the first index.
 525.200 +	@param aLastIndex On return, the last index. 
 525.201 +	@publishedAll
 525.202 +	@released */
 525.203 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const=0;
 525.204 +	/** Gets the text item at the specfied index.
 525.205 +	
 525.206 +	@param aText On return, the indexed text item.
 525.207 +	@param aIndex The index. 
 525.208 +	@publishedAll 
 525.209 +	@released */
 525.210 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const=0;
 525.211 +	};
 525.212 +
 525.213 +
 525.214 +class TFindWidthOfWidestDigit : public TFindWidthOfWidestTextItem
 525.215 +/** Finds the width in pixels of the widest digit, when displayed in a specified 
 525.216 +font.
 525.217 +
 525.218 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.219 +specifying the font. 
 525.220 +
 525.221 +@publishedAll
 525.222 +@released */
 525.223 +	{
 525.224 +public:
 525.225 +	IMPORT_C TFindWidthOfWidestDigit();
 525.226 +private:
 525.227 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.228 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.229 +	};
 525.230 +
 525.231 +class TFindWidthOfWidestDigitType : public TFindWidthOfWidestTextItem
 525.232 +/**
 525.233 +@publishedAll
 525.234 +@released
 525.235 +*/
 525.236 +	{
 525.237 +public:
 525.238 +	IMPORT_C TFindWidthOfWidestDigitType(TDigitType aDigitType);
 525.239 +private:
 525.240 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.241 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.242 +
 525.243 +private:
 525.244 +	TDigitType iDigitType;
 525.245 +	};
 525.246 +
 525.247 +class TFindWidthOfWidestAmPmName : public TFindWidthOfWidestTextItem
 525.248 +/** Finds the width in pixels of the widest Am or Pm text, when displayed in a specified 
 525.249 +font.
 525.250 +
 525.251 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.252 +specifying the font.
 525.253 +
 525.254 +@publishedAll
 525.255 +@released 
 525.256 +@see TAmPmName */
 525.257 +	{
 525.258 +public:
 525.259 +	IMPORT_C TFindWidthOfWidestAmPmName();
 525.260 +private:
 525.261 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.262 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.263 +	};
 525.264 +
 525.265 +class TFindWidthOfWidestAbbreviatedDayName : public TFindWidthOfWidestTextItem
 525.266 +/** Finds the width in pixels of the widest abbreviated day name (for instance Mon, Tue) 
 525.267 +when displayed in a specified font.
 525.268 +
 525.269 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.270 +specifying the font.
 525.271 +
 525.272 +@publishedAll
 525.273 +@released 
 525.274 +@see TDayNameAbb */
 525.275 +	{
 525.276 +public:
 525.277 +	IMPORT_C TFindWidthOfWidestAbbreviatedDayName();
 525.278 +private:
 525.279 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.280 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.281 +	};
 525.282 +
 525.283 +
 525.284 +class TFindWidthOfWidestDayName : public TFindWidthOfWidestTextItem
 525.285 +/** Finds the width in pixels of the widest day name, when displayed in a specified 
 525.286 +font.
 525.287 +
 525.288 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.289 +specifying the font. 
 525.290 +
 525.291 +@publishedAll 
 525.292 +@released */
 525.293 +	{
 525.294 +public:
 525.295 +	IMPORT_C TFindWidthOfWidestDayName();
 525.296 +private:
 525.297 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.298 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.299 +	};
 525.300 +
 525.301 +
 525.302 +class TFindWidthOfWidestAbbreviatedMonthName : public TFindWidthOfWidestTextItem
 525.303 +/** Finds the width in pixels of the widest abbreviated month name (for instance Jan, Feb), 
 525.304 +when displayed in a specified font.
 525.305 +
 525.306 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.307 +specifying the font. 
 525.308 +
 525.309 +@publishedAll 
 525.310 +@released */
 525.311 +	{
 525.312 +public:
 525.313 +	IMPORT_C TFindWidthOfWidestAbbreviatedMonthName();
 525.314 +private:
 525.315 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.316 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.317 +	};
 525.318 +
 525.319 +class TFindWidthOfWidestMonthName : public TFindWidthOfWidestTextItem
 525.320 +/** Finds the width in pixels of the widest month name, when displayed in a specified 
 525.321 +font.
 525.322 +
 525.323 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.324 +specifying the font. 
 525.325 +
 525.326 +@publishedAll 
 525.327 +@released */
 525.328 +	{
 525.329 +public:
 525.330 +	IMPORT_C TFindWidthOfWidestMonthName();
 525.331 +private:
 525.332 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.333 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.334 +	};
 525.335 +
 525.336 +class TFindWidthOfWidestDateSuffix : public TFindWidthOfWidestTextItem
 525.337 +/** Finds the width in pixels of the widest date suffix (for instance st, nd), 
 525.338 +when displayed in a specified font.
 525.339 +
 525.340 +After construction, call MaximumWidthInPixels(), defined in the base class, 
 525.341 +specifying the font. 
 525.342 +
 525.343 +@publishedAll 
 525.344 +@released */
 525.345 +	{
 525.346 +public:
 525.347 +	IMPORT_C TFindWidthOfWidestDateSuffix();
 525.348 +private:
 525.349 +	virtual void GetFirstAndLastIndex(TInt& aFirstIndex, TInt& aLastIndex) const;
 525.350 +	virtual void GetTextItem(TDes& aText, TInt aIndex) const;
 525.351 +	};
 525.352 +
 525.353 +//	class ResourceUtils
 525.354 +inline TInt8 ResourceUtils::ReadTInt8L(TResourceReader& aReader)
 525.355 +/** Reads an 8 bit signed integer from a resource.
 525.356 +
 525.357 +@param aReader Resource reader to use to read the integer.
 525.358 +@return The 8 bit signed integer. */
 525.359 +	{ return((TInt8)ReadResourceIntL(aReader,EResourceInt8)); }
 525.360 +inline TInt16 ResourceUtils::ReadTInt16L(TResourceReader& aReader)
 525.361 +/** Reads a 16 bit signed integer from a resource.
 525.362 +
 525.363 +@param aReader Resource reader to use to read the integer.
 525.364 +@return The 16 bit signed integer. */
 525.365 +	{ return((TInt16)ReadResourceIntL(aReader,EResourceInt16)); }
 525.366 +inline TInt32 ResourceUtils::ReadTInt32L(TResourceReader& aReader)
 525.367 +/** Reads a 32 bit signed integer from a resource.
 525.368 +
 525.369 +@param aReader Resource reader to use to read the integer.
 525.370 +@return The 32 bit signed integer. */
 525.371 +	{ return((TInt32)ReadResourceIntL(aReader,EResourceInt32)); }
 525.372 +
 525.373 +#endif
   526.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   526.2 +++ b/epoc32/include/mw/http.h	Wed Mar 31 12:27:01 2010 +0100
   526.3 @@ -0,0 +1,52 @@
   526.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   526.5 +// All rights reserved.
   526.6 +// This component and the accompanying materials are made available
   526.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   526.8 +// which accompanies this distribution, and is available
   526.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  526.10 +//
  526.11 +// Initial Contributors:
  526.12 +// Nokia Corporation - initial contribution.
  526.13 +//
  526.14 +// Contributors:
  526.15 +//
  526.16 +// Description:
  526.17 +//
  526.18 +
  526.19 +
  526.20 +
  526.21 +/**
  526.22 + @file http.h
  526.23 + @warning : This file contains Rose Model ID comments - please do not delete
  526.24 + @publishedAll
  526.25 + @released
  526.26 +*/
  526.27 +
  526.28 +#ifndef __HTTP_H__
  526.29 +#define __HTTP_H__ 
  526.30 +
  526.31 +// System includes
  526.32 +#include <httpstringconstants.h>
  526.33 +#include <http/mhttpdatasupplier.h>
  526.34 +#include <http/mhttpfilter.h>
  526.35 +#include <http/mhttpfilterbase.h>
  526.36 +#include <http/mhttptransactioncallback.h>
  526.37 +#include <http/rhttpconnectioninfo.h>
  526.38 +#include <http/rhttpfiltercollection.h>
  526.39 +#include <http/rhttpheaders.h>
  526.40 +#include <http/rhttpmessage.h>
  526.41 +#include <http/rhttppropertyset.h>
  526.42 +#include <http/rhttprequest.h>
  526.43 +#include <http/rhttpresponse.h>
  526.44 +#include <http/rhttpsession.h>
  526.45 +#include <http/rhttptransaction.h>
  526.46 +#include <http/rhttptransactionpropertyset.h>
  526.47 +#include <http/thttpevent.h>
  526.48 +#include <http/thttpfilterhandle.h>
  526.49 +#include <http/thttpfilteriterator.h>
  526.50 +#include <http/thttpfilterregistration.h>
  526.51 +#include <http/thttphdrfielditer.h>
  526.52 +#include <http/thttphdrval.h>
  526.53 +#include <httperr.h>
  526.54 +
  526.55 +#endif // __HTTP_H__
   527.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   527.2 +++ b/epoc32/include/mw/http/cauthenticationfilterinterface.h	Wed Mar 31 12:27:01 2010 +0100
   527.3 @@ -0,0 +1,93 @@
   527.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   527.5 +// All rights reserved.
   527.6 +// This component and the accompanying materials are made available
   527.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   527.8 +// which accompanies this distribution, and is available
   527.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  527.10 +//
  527.11 +// Initial Contributors:
  527.12 +// Nokia Corporation - initial contribution.
  527.13 +//
  527.14 +// Contributors:
  527.15 +//
  527.16 +// Description:
  527.17 +//
  527.18 +
  527.19 +
  527.20 +
  527.21 +/**
  527.22 + @file CAuthenticationFilterInterface.h
  527.23 + @warning : This file contains Rose Model ID comments - please do not delete
  527.24 +*/
  527.25 +
  527.26 +#ifndef	__CAUTHENTICATIONFILTERINTERFACE_H__
  527.27 +#define	__CAUTHENTICATIONFILTERINTERFACE_H__
  527.28 +
  527.29 +// System includes
  527.30 +#include <e32base.h>
  527.31 +#include <ecom/ecom.h>
  527.32 +#include <http/rhttpsession.h>
  527.33 +
  527.34 +// Forward declarations
  527.35 +class MHTTPAuthenticationCallback;
  527.36 +
  527.37 +
  527.38 +class CAuthenticationFilterInterface : public CBase
  527.39 +/**
  527.40 +The ECOM interface definition for an HTTP authentication filter.  Implementations
  527.41 +of an authentication filter must inherit this class.
  527.42 +@publishedAll
  527.43 +@released
  527.44 +*/
  527.45 +	{
  527.46 +public: // Methods
  527.47 +	/**
  527.48 +	@fn				InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback)
  527.49 +	Intended Usage:	This method is used to install the authentication filter to the filter queue.
  527.50 +					The returned pointer is not owned as the filters must be self-destroying when
  527.51 +					they are unloaded.
  527.52 +	@param			aSession A handle to the transport session
  527.53 +	@param			aCallback A pointer to the object implementing the callback function
  527.54 +	@return			Pointer to the newly installed plugin
  527.55 +	@pre 			The session had already been setup
  527.56 +	@post			The filter(s) have been installed
  527.57 +	*/
  527.58 +	inline static void InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback);
  527.59 +
  527.60 +	/**
  527.61 +	@fn				~CAuthenticationFilterInterface()
  527.62 +	Intended Usage:	Virtual destructor
  527.63 +	@pre 			The object identified by the destructor key in iEcomDtorID exists
  527.64 +	@post			The object is destroyed
  527.65 +	*/
  527.66 +	inline ~CAuthenticationFilterInterface();
  527.67 +
  527.68 +public:
  527.69 +	struct TAuthenticationParams
  527.70 +		{
  527.71 +		RHTTPSession* iSession;
  527.72 +		MHTTPAuthenticationCallback* iCallback;
  527.73 +		};
  527.74 +
  527.75 +private: // Attributes
  527.76 +	/// The ECom destructor key identifier
  527.77 +	TUid iEcomDtorID;
  527.78 +	};
  527.79 +
  527.80 +//----------------------------------------------------------------------------------------
  527.81 +
  527.82 +inline void CAuthenticationFilterInterface::InstallFilterL(RHTTPSession& aSession, MHTTPAuthenticationCallback* aCallback)
  527.83 +	{
  527.84 +	const TUid KUidAuthenticationFilter = {0x101F447C};
  527.85 +	TAuthenticationParams authParams;
  527.86 +	authParams.iSession = &aSession;
  527.87 +	authParams.iCallback = aCallback;
  527.88 +	REComSession::CreateImplementationL(KUidAuthenticationFilter, _FOFF(CAuthenticationFilterInterface,iEcomDtorID), &authParams);
  527.89 +	}
  527.90 +
  527.91 +inline CAuthenticationFilterInterface::~CAuthenticationFilterInterface()
  527.92 +	{
  527.93 +	REComSession::DestroyedImplementation(iEcomDtorID);
  527.94 +	}
  527.95 +
  527.96 +#endif // __CAUTHENTICATIONFILTERINTERFACE_H__
   528.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   528.2 +++ b/epoc32/include/mw/http/cecomfilter.h	Wed Mar 31 12:27:01 2010 +0100
   528.3 @@ -0,0 +1,120 @@
   528.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   528.5 +// All rights reserved.
   528.6 +// This component and the accompanying materials are made available
   528.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   528.8 +// which accompanies this distribution, and is available
   528.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  528.10 +//
  528.11 +// Initial Contributors:
  528.12 +// Nokia Corporation - initial contribution.
  528.13 +//
  528.14 +// Contributors:
  528.15 +//
  528.16 +// Description:
  528.17 +//
  528.18 +
  528.19 +
  528.20 +
  528.21 +/**
  528.22 + @file CEComFilter.h
  528.23 + @warning : This file contains Rose Model ID comments - please do not delete
  528.24 +*/
  528.25 +
  528.26 +#ifndef	__CECOMFILTER_H__
  528.27 +#define	__CECOMFILTER_H__
  528.28 +
  528.29 +// System includes
  528.30 +#include <e32base.h>
  528.31 +#include <ecom/ecom.h>
  528.32 +#include <http/rhttpsession.h>
  528.33 +
  528.34 +/**
  528.35 +The ECom filter interface UID
  528.36 +@publishedAll
  528.37 +@released
  528.38 +*/
  528.39 +const TUid KUidFilterPluginInterface = {0x101F446D}; 
  528.40 +
  528.41 +
  528.42 +//##ModelId=3C4C0F400280
  528.43 +class CEComFilter : public CBase
  528.44 +/**
  528.45 +This class serves as the base class for ECom filter plugins. It provides minimal functionality
  528.46 +to simply install and destroy filters specified by their UID or data type. The RHTTPSession
  528.47 +passed in is passed onto the filter as a TAny* pointer and therefore must be casted back to
  528.48 +an RHTTPSession pointer by the filter.
  528.49 +@publishedAll
  528.50 +@released
  528.51 +*/
  528.52 +	{
  528.53 +public: // Methods
  528.54 +	/**
  528.55 +	@fn				InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid)
  528.56 +	Intended Usage:	This method is used to install filters to the filter queue. The implementation
  528.57 +					UID of the filter plugin is passed to identify the plugin that is required.
  528.58 +					The returned pointer is not owned as the filters must be self-destroying when
  528.59 +					they are unloaded.
  528.60 +	@param			aSession A handle to the transport session
  528.61 +	@param			aEComFilterUid The implementation UID of the plugin
  528.62 +	@return			Pointer to the newly installed plugin
  528.63 +	@pre 			The session had already been setup
  528.64 +	@post			The filter(s) have been installed
  528.65 +	*/
  528.66 +	//##ModelId=3C4C0F4002A8
  528.67 +	inline static CEComFilter* InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid);
  528.68 +
  528.69 +	/**
  528.70 +	@fn				InstallFilterL(RHTTPSession aSession, const TDesC8& aEComFilterDataType)
  528.71 +	Intended Usage:	This method is used to install filters to the filter queue. The implementation
  528.72 +					UID of the filter plugin is passed to identify the plugin that is required.
  528.73 +					The returned pointer is not owned as the filters must be self-destroying when
  528.74 +					they are unloaded.
  528.75 +	@param			aSession A handle to the transport session
  528.76 +	@param			aEComFilterDataType A descriptor containing the datatype of the filter to load
  528.77 +	@return			Pointer to the newly installed plugin
  528.78 +	@pre 			The session had already been setup
  528.79 +	@post			The filter(s) have been installed
  528.80 +	*/
  528.81 +	//##ModelId=3C4C0F4002AB
  528.82 +	inline static CEComFilter* InstallFilterL(RHTTPSession aSession, const TDesC8& aEComFilterDataType);
  528.83 +
  528.84 +	/**
  528.85 +	@fn				~CEComFilter()
  528.86 +	Intended Usage:	Virtual destructor
  528.87 +	@pre 			The object identified by the destructor key in iEcomDtorID exists
  528.88 +	@post			The object is destroyed
  528.89 +	*/
  528.90 +	//##ModelId=3C4C0F40029E
  528.91 +	inline ~CEComFilter();
  528.92 +
  528.93 +private: // Attributes
  528.94 +	/// The ECom destructor key identifier
  528.95 +	//##ModelId=3C4C0F400297
  528.96 +	TUid iEcomDtorID;
  528.97 +	};
  528.98 +
  528.99 +//----------------------------------------------------------------------------------------
 528.100 +
 528.101 +inline CEComFilter* CEComFilter::InstallFilterL(RHTTPSession aSession, const TUid aEComFilterUid)
 528.102 +	{
 528.103 +	TAny* filterPlugin = REComSession::CreateImplementationL(aEComFilterUid, _FOFF(CEComFilter,iEcomDtorID), &aSession);
 528.104 +	return REINTERPRET_CAST(CEComFilter*, filterPlugin);
 528.105 +	}
 528.106 +
 528.107 +inline CEComFilter* CEComFilter::InstallFilterL(RHTTPSession aSession,const TDesC8& aEComFilterDataType)
 528.108 +	{
 528.109 +	TEComResolverParams resolverParams;
 528.110 +	resolverParams.SetDataType(aEComFilterDataType);
 528.111 +	// This will leave if the plugin is not found
 528.112 +	TAny* filterPlugin = REComSession::CreateImplementationL(KUidFilterPluginInterface, 
 528.113 +											_FOFF(CEComFilter,iEcomDtorID), 
 528.114 +											&aSession, resolverParams);
 528.115 +	return REINTERPRET_CAST(CEComFilter*, filterPlugin);
 528.116 +	}
 528.117 +
 528.118 +inline CEComFilter::~CEComFilter()
 528.119 +	{
 528.120 +	REComSession::DestroyedImplementation(iEcomDtorID);
 528.121 +	}
 528.122 +
 528.123 +#endif // __CECOMFILTER_H__
   529.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   529.2 +++ b/epoc32/include/mw/http/framework/cheadercodec.h	Wed Mar 31 12:27:01 2010 +0100
   529.3 @@ -0,0 +1,318 @@
   529.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   529.5 +// All rights reserved.
   529.6 +// This component and the accompanying materials are made available
   529.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   529.8 +// which accompanies this distribution, and is available
   529.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  529.10 +//
  529.11 +// Initial Contributors:
  529.12 +// Nokia Corporation - initial contribution.
  529.13 +//
  529.14 +// Contributors:
  529.15 +//
  529.16 +// Description:
  529.17 +//
  529.18 +
  529.19 +
  529.20 +
  529.21 +/**
  529.22 + @file CHeaderCodec.h
  529.23 + @warning : This file contains Rose Model ID comments - please do not delete
  529.24 +*/
  529.25 +
  529.26 +#ifndef __CHEADERCODEC_H__
  529.27 +#define __CHEADERCODEC_H__
  529.28 +
  529.29 +// System includes
  529.30 +#include <e32base.h>
  529.31 +#include <http/framework/rheaderfield.h>
  529.32 +
  529.33 +// Forward declarations
  529.34 +class CHeaderWriter;
  529.35 +class CHeaderReader;
  529.36 +
  529.37 +
  529.38 +//##ModelId=3C4C18850126
  529.39 +class CHeaderCodec : public CBase
  529.40 +/**
  529.41 +An abstract HTTP header codec.  
  529.42 +
  529.43 +Each instance of a concrete subclass of CHeaderCodec is associated with, and owned
  529.44 +by, a specific	CProtocolHandler.  It provides on-demand encoding/decoding of
  529.45 +HTTP header data, between the generic format used by clients/filters to formulate
  529.46 +requests and interpret responses, and the raw format used by
  529.47 +the transport handlers (and origin servers/gateways/etc.)
  529.48 +
  529.49 +The CHeaderCodec has an associated instance of a sub-class of each of
  529.50 +CHeaderReader and CHeaderWriter.  It delegates the actual encoding and
  529.51 +decoding function to these instances.
  529.52 +
  529.53 +Header codecs provide a mechanism for extensibility whereby if one codec can't
  529.54 +decode (or encode) a given header, it locates a codec that can, and then delegates
  529.55 +the task to that codec instead.
  529.56 +@publishedAll
  529.57 +@released
  529.58 +*/
  529.59 +	{
  529.60 +public: // methods
  529.61 +
  529.62 +/** 
  529.63 +	Intended Usage:	Destructor - cleans up and releases resources to the system.
  529.64 +*/
  529.65 +	//##ModelId=3C4C18850194
  529.66 +	IMPORT_C virtual ~CHeaderCodec();
  529.67 +
  529.68 +/**
  529.69 +	Encode the supplied header field.  This method uses the associated
  529.70 +	concrete CHeaderWriter object to do a conversion of the field into
  529.71 +	raw form from the generic internal representation.
  529.72 +
  529.73 +	@param aHeader (in) A proxy for the header field to be encoded
  529.74 +	@leave KErrNotSupported if a codec that supports encoding this header
  529.75 +		   cannot be found
  529.76 +*/
  529.77 +	//##ModelId=3C4C1885018C
  529.78 +	IMPORT_C void EncodeHeaderL(RHeaderField& aHeader) const;
  529.79 +
  529.80 +/**
  529.81 +	Decode the supplied header field.  This method uses the associated
  529.82 +	concrete CHeaderReader object to do a conversion of the field into
  529.83 +	the generic internal representation from the raw form.
  529.84 +
  529.85 +	@param aHeader (in) A proxy for the header field to be decoded
  529.86 +	
  529.87 +	@leave KErrNotSupported if a codec that supports decoding this header
  529.88 +   		   cannot be found
  529.89 +
  529.90 +*/
  529.91 +	//##ModelId=3C4C1885018A
  529.92 +	IMPORT_C void DecodeHeaderL(RHeaderField& aHeader) const;
  529.93 +
  529.94 +/**
  529.95 +	Intended Usage: Concrete header codec classes must implement this method to
  529.96 +	indicate to the framework whether their concrete CHeaderWriter is
  529.97 +	capable of encoding the named header field.
  529.98 +	@param aHeaderField	(in) A proxy for the header field to be encoded
  529.99 +	@return A flag indicating ETrue if the field can be encoded.
 529.100 +*/
 529.101 +	//##ModelId=3C4C18850181
 529.102 +	virtual TBool CanEncode(RStringF aHeaderField) const = 0;
 529.103 +
 529.104 +/**
 529.105 +	Intended Usage: Concrete header codec classes must implement this method to
 529.106 +					indicate to the framework whether their concrete CHeaderReader is
 529.107 +					capable of decoding the named header field.
 529.108 +	@param			aHeaderField		(in) A proxy for the header field to be encoded
 529.109 +	@return			A flag indicating ETrue if the field can be decoded.
 529.110 + */
 529.111 +	//##ModelId=3C4C18850178
 529.112 +	virtual TBool CanDecode(RStringF aHeaderField) const = 0;
 529.113 +
 529.114 +/**
 529.115 +	Intended Usage: Concrete header codecs must be implement this method if they wish to
 529.116 +					delegate the encoding/decoding of particular header fields to a
 529.117 +					different codec.  
 529.118 +					This would be done if the codec doesn't have the ability itself to
 529.119 +					do the encode/decode but can locate an alternative that does. This 
 529.120 +					function may leave with a Standard Symbian OS error code. eg. KErrNoMemory
 529.121 +
 529.122 +					The caller takes ownership of the returned codec.
 529.123 +	@param aHeaderField (in) A proxy for the header field to be encoded
 529.124 +	@return A pointer to the new CHeaderCodec, or NULL if one couldn't be found.
 529.125 +	@leave KErrNoMemory, Not enough memory to create object.	
 529.126 +*/
 529.127 +	//##ModelId=3C4C18850176
 529.128 +	virtual CHeaderCodec* FindDelegateCodecL(RStringF aHeaderField) const = 0;
 529.129 +
 529.130 +protected: // methods
 529.131 +
 529.132 +/**
 529.133 +	Default constructor.
 529.134 + */
 529.135 +	//##ModelId=3A914DF20273
 529.136 +	IMPORT_C CHeaderCodec();
 529.137 +
 529.138 +/**
 529.139 +	Second phase construction in which any necessary allocation is done
 529.140 +	Implementations of this interface may leave with standard erros like KErrNoMemory if there is
 529.141 +	insufficient memory for allocation in the second phase.
 529.142 + */
 529.143 +	//##ModelId=3C4C1885016E
 529.144 +	IMPORT_C void ConstructL();
 529.145 +
 529.146 +protected: // attributes
 529.147 +
 529.148 +	/** The owned header writer object that does actual encoding of header fields.
 529.149 +	*/
 529.150 +	//##ModelId=3C4C18850164
 529.151 +	CHeaderWriter* iWriter;
 529.152 +
 529.153 +	/** The owned header reader object that does actual decoding of header fields.
 529.154 +	*/
 529.155 +	//##ModelId=3C4C1885015A
 529.156 +	CHeaderReader* iReader;
 529.157 +
 529.158 +private: // methods
 529.159 +
 529.160 +/**	
 529.161 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 529.162 + */
 529.163 +	//##ModelId=3C4C1885016D
 529.164 +	inline virtual void Reserved1();
 529.165 +
 529.166 +/**	
 529.167 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 529.168 + */
 529.169 +	//##ModelId=3C4C1885016C
 529.170 +	inline virtual void Reserved2();
 529.171 +
 529.172 +private: // attributes
 529.173 +
 529.174 +	/** The most recently-obtained delegate codec
 529.175 +	*/
 529.176 +	//##ModelId=3C4C18850150
 529.177 +	mutable CHeaderCodec* iDelegateCodec;
 529.178 +	};
 529.179 +
 529.180 +
 529.181 +//##ModelId=3C4C188601D1
 529.182 +class CHeaderWriter : public CBase
 529.183 +/**
 529.184 +An abstract HTTP header encoder.  CHeaderWriter provides an interface used by its
 529.185 +owning codec to do conversion of header data from the generic internal header
 529.186 +representation to the raw representation used for a particular protocol/transport.
 529.187 +Specific sub-classes of CHeaderWriter are associated with specific protocol handlers.
 529.188 +@publishedAll
 529.189 +@released
 529.190 +*/
 529.191 +	{
 529.192 +public: // methods
 529.193 +
 529.194 +/** 
 529.195 +	Intended Usage:	Destructor - cleans up and release resources to the system.
 529.196 +*/
 529.197 +	//##ModelId=3C4C188601FC
 529.198 +	IMPORT_C virtual ~CHeaderWriter();
 529.199 +
 529.200 +/**
 529.201 +	Intended Usage:	Encodes the supplied header field.  This method does a conversion
 529.202 +					of the field into raw form from the generic internal representation.
 529.203 +
 529.204 +					Implementations of this interface may leave with any of KErrNotSupported, KErrHttpEncodeDoWWWAuthenticate,
 529.205 +					KErrHttpEncodeAuthorization, KErrHttpEncodeDoAge, KErrHttpEncodeDoVary, KErrHttpEncodeDoContentLanguage.
 529.206 +
 529.207 +					Specific header writer sub-classes must implement this method.
 529.208 +	@param			aHeader		(in) A proxy for the header field to be encoded
 529.209 + */
 529.210 +	//##ModelId=3C4C188601FA
 529.211 +	virtual void EncodeHeaderL(RHeaderField& aHeader) = 0;
 529.212 +
 529.213 +protected: // methods
 529.214 +
 529.215 +/**
 529.216 +	Default constructor.
 529.217 + */
 529.218 +	IMPORT_C CHeaderWriter();
 529.219 +
 529.220 +/**
 529.221 +	Second phase construction in which any necessary allocation is done
 529.222 +	Implementations of this interface may leave with standard errors like KErrNoMemory.
 529.223 + */
 529.224 +	//##ModelId=3C4C188601F9
 529.225 +	IMPORT_C void ConstructL();
 529.226 +
 529.227 +private: // methods
 529.228 +
 529.229 +/**	
 529.230 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 529.231 + */
 529.232 +	//##ModelId=3C4C188601F1
 529.233 +	inline virtual void Reserved1();
 529.234 +
 529.235 +/**	
 529.236 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 529.237 + */
 529.238 +	//##ModelId=3C4C188601F0
 529.239 +	inline virtual void Reserved2();
 529.240 +	};
 529.241 +
 529.242 +
 529.243 +//##ModelId=3C4C188602FE
 529.244 +class CHeaderReader : public CBase
 529.245 +/**
 529.246 +An abstract HTTP header decoder.  CHeaderReader provides an interface used by its
 529.247 +owning codec to do conversion of header data from the raw representation used for
 529.248 +a particular protocol/transport to the generic internal header representation.
 529.249 +Specific sub-classes of CHeaderWriter are associated with specific protocol
 529.250 +handlers.
 529.251 +@publishedAll
 529.252 +@released
 529.253 +*/
 529.254 +	{
 529.255 +public: // methods
 529.256 +
 529.257 +/** 
 529.258 +	Intended Usage:	Destructor - cleans up and release resources to the system.
 529.259 +*/
 529.260 +	//##ModelId=3C4C1886031E
 529.261 +	IMPORT_C virtual ~CHeaderReader();
 529.262 +
 529.263 +/**
 529.264 +	Intended Usage:	Decodes the supplied header field.  This method does a conversion
 529.265 +	of the field from the generic internal representation into raw form.
 529.266 +
 529.267 +	Specific header reader sub-classes must implement this method.
 529.268 +
 529.269 +	Implementations of this interface may leave with any of KErrHttpDecodeAccept, KErrHttpDecodeAcceptCharset, 
 529.270 +	KErrHttpDecodeAcceptLanguage, KErrHttpDecodeAcceptEncoding, KErrNotSupported.
 529.271 +
 529.272 +	@param aHeader (in) A proxy for the header field to be decoded
 529.273 +	
 529.274 +*/
 529.275 +	//##ModelId=3C4C1886031C
 529.276 +	virtual void DecodeHeaderL(RHeaderField& aHeader) = 0;
 529.277 +
 529.278 +protected: // methods
 529.279 +
 529.280 +/**
 529.281 +	Default constructor.
 529.282 + */
 529.283 +	IMPORT_C CHeaderReader();
 529.284 +
 529.285 +/**
 529.286 +	Second phase construction in which any necessary allocation is done
 529.287 +	Implementations of this interface may leave with standard errors like KErrNoMemory.
 529.288 + */
 529.289 +	//##ModelId=3C4C18860315
 529.290 +	IMPORT_C void ConstructL();
 529.291 +
 529.292 +private: // methods
 529.293 +
 529.294 +/**	
 529.295 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 529.296 + */
 529.297 +	//##ModelId=3C4C18860314
 529.298 +	inline virtual void Reserved1();
 529.299 +
 529.300 +/**	
 529.301 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 529.302 + */
 529.303 +	//##ModelId=3C4C18860313
 529.304 +	inline virtual void Reserved2();
 529.305 +	};
 529.306 +
 529.307 +
 529.308 +inline void CHeaderCodec::Reserved1()
 529.309 +	{}
 529.310 +inline void CHeaderCodec::Reserved2()
 529.311 +	{}
 529.312 +inline void CHeaderWriter::Reserved1()
 529.313 +	{}
 529.314 +inline void CHeaderWriter::Reserved2()
 529.315 +	{}
 529.316 +inline void CHeaderReader::Reserved1()
 529.317 +	{}
 529.318 +inline void CHeaderReader::Reserved2()
 529.319 +	{}
 529.320 +
 529.321 +#endif /* __CHEADERCODEC_H__ */
   530.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   530.2 +++ b/epoc32/include/mw/http/framework/cprotocolhandler.h	Wed Mar 31 12:27:01 2010 +0100
   530.3 @@ -0,0 +1,555 @@
   530.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   530.5 +// All rights reserved.
   530.6 +// This component and the accompanying materials are made available
   530.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   530.8 +// which accompanies this distribution, and is available
   530.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  530.10 +//
  530.11 +// Initial Contributors:
  530.12 +// Nokia Corporation - initial contribution.
  530.13 +//
  530.14 +// Contributors:
  530.15 +//
  530.16 +// Description:
  530.17 +// please do not delete
  530.18 +// 
  530.19 +//
  530.20 +
  530.21 +
  530.22 +
  530.23 +/**
  530.24 + @file CProtocolHandler.h
  530.25 + @warning : This file contains Rose Model ID comments 
  530.26 +*/
  530.27 +
  530.28 +#ifndef __CPROTOCOLHANDLER_H__
  530.29 +#define __CPROTOCOLHANDLER_H__
  530.30 +
  530.31 +// System includes
  530.32 +#include <e32base.h>
  530.33 +#include <http/framework/httplogger.h>
  530.34 +#include <http/mhttpfilter.h>
  530.35 +#include <http/rhttpsession.h>
  530.36 +
  530.37 +// Forward declarations
  530.38 +class CHeaderCodec;
  530.39 +class CProtTransaction;
  530.40 +class CSecurityPolicy;
  530.41 +class MProtHandlerInterface;
  530.42 +
  530.43 +/**
  530.44 +The ECom protocol handler plugin interface UID.
  530.45 +@publishedAll
  530.46 +@released
  530.47 +*/
  530.48 +const TUid KUidProtocolHandlerPluginInterface = {0x1000A449};
  530.49 +
  530.50 +// 
  530.51 +/**
  530.52 +Defined active object priorities for the Protocol Handler
  530.53 +@publishedAll
  530.54 +@released
  530.55 +*/
  530.56 +const TInt KProtocolHandlerActivePriority = CActive::EPriorityStandard;
  530.57 +/**
  530.58 +Defined active object priorities for the Transaction
  530.59 +@publishedAll
  530.60 +@released
  530.61 +*/
  530.62 +const TInt KTransactionActivePriority = KProtocolHandlerActivePriority+1;
  530.63 +
  530.64 +
  530.65 +//##ModelId=3C4C186A02A3
  530.66 +class CProtocolHandler : public CActive, public MHTTPFilter
  530.67 +/**
  530.68 +An abstract protocol handler.  Protocol handlers are required to
  530.69 +act as the bridge between abstract representations of sessions, transactions and
  530.70 +headers (the client side of the HTTP architecture) and specific comms transports
  530.71 +(the network side of the architecture).
  530.72 +
  530.73 +Each instance of a concrete subclass of CProtocolHandler is associated
  530.74 +with a specific	client session, and hence with a particular choice of proxy type,
  530.75 +and by implication, transport type.  It is designed to appear like a filter in
  530.76 +order to be placed at the end of a session's filter queue.  This allows it to 
  530.77 +receive transaction-related events in the same way that any other filter
  530.78 +(or indeed, the client) does.  An active object, it may implement a queuing
  530.79 +system for submitted transactions, according to the chosen internal service
  530.80 +model.
  530.81 +
  530.82 +In order to divide the abstract functionality associated with handling the HTTP
  530.83 +protocol handler from the specifics needed for a particular choice of transport,
  530.84 +this class defines a number of pure virtual methods which allow it to defer
  530.85 +transport-specific choices or mechamisms.  These are mainly concerned with the
  530.86 +service model (ie. allocation of transactions to objects that can handle them), the
  530.87 +codec model (ie. on-demand encoding/decoding of	HTTP header data) and general
  530.88 +housekeeping (eg. instantiation and cleanup of objects at particular points in
  530.89 +a transaction lifecycle).
  530.90 +@publishedAll
  530.91 +@released
  530.92 +*/
  530.93 +	{
  530.94 +public:	// Methods
  530.95 +
  530.96 +/**	
  530.97 +	Standard factory constructor. This is the ECOM interface class from
  530.98 +	which concrete protocol handlers are derived. The method queries
  530.99 +	ECOM for the protocol handler plugin that matches the protocol
 530.100 +	description passed in.
 530.101 +	@param			aProtocol	(in) The name of the protocol required.
 530.102 +	@param			aSession	(in) The HTTP session on which this protocol handler
 530.103 +									 will be installed.
 530.104 +	@leave			KErrNoMemory if there was not enough memory to create the object.
 530.105 +*/
 530.106 +	//##ModelId=3C4C186B007E
 530.107 +	static CProtocolHandler* NewL(const TDesC8& aProtocol, RHTTPSession aSession);
 530.108 +
 530.109 +/**	
 530.110 +	Intended Usage:	Class destructor.
 530.111 +*/
 530.112 +	//##ModelId=3C4C186B0075
 530.113 +	IMPORT_C virtual ~CProtocolHandler();
 530.114 +
 530.115 +/**	
 530.116 +	Obtain the protocol handler's header codec.
 530.117 +	@return			The header codec owned by this protocol handler, or NULL if one
 530.118 +					has not yet been created.
 530.119 +	@see CHeaderCodec
 530.120 +*/
 530.121 +	//##ModelId=3C4C186B0074
 530.122 +	IMPORT_C CHeaderCodec* Codec() const;
 530.123 +
 530.124 +
 530.125 +/** 
 530.126 +	Get the Server Certificate for the current session.
 530.127 +	@return	The certificate information or NULL if it is not available
 530.128 +*/
 530.129 +	IMPORT_C const CCertificate* SessionServerCert();
 530.130 +
 530.131 +/** 
 530.132 +	Get the Server Certificate for the specified transaction.
 530.133 +	@param	aTransaction The transaction for which the certificate is requested
 530.134 +	@return	The certificate information or NULL if it is not available
 530.135 +*/
 530.136 +	IMPORT_C const CCertificate* TransactionServerCert( RHTTPTransaction aTransaction);
 530.137 +
 530.138 +public:	// Methods to be implemented in specific protocol handlers
 530.139 +
 530.140 +/** 
 530.141 +	Intended Usage:	Get the Server Certificate for the current session.
 530.142 +	@param	aServerCert A TCertInfo which will be filled with the certificate information
 530.143 +	@return	An error code.  KErrNone if aServerCert has been completed, otherwise one of 
 530.144 +	the system wide error codes
 530.145 +*/
 530.146 +	virtual TInt SessionServerCert(TCertInfo& aServerCert) = 0;
 530.147 +
 530.148 +/** 
 530.149 +	Intended Usage:	Get the Server Certificate for the specified transaction.
 530.150 +	@param	aServerCert A TCertInfo which will be filled with the certificate information
 530.151 +	@param	aTransaction The transaction for which the certificate is requested
 530.152 +	@return	An error code.  KErrNone if aServerCert has been completed, otherwise one of 
 530.153 +			the system wide error codes
 530.154 +*/
 530.155 +	virtual TInt TransactionServerCert(TCertInfo& aServerCert, RHTTPTransaction aTransaction) = 0;
 530.156 +
 530.157 +public:	// Methods from MHTTPFilterBase
 530.158 +	
 530.159 +/**
 530.160 +	Intended Usage:	Called when the filter's registration conditions are satisfied for events that
 530.161 +	occur on a transaction. Any Leaves must be handled by the appropriate MHFRunError.
 530.162 +	Note that this function is not allowed to leave if called with certain events. 
 530.163 +	@see THTTPEvent
 530.164 +	@param aTransaction The transaction that the event has occurred on.
 530.165 +	@param aEvent aEvent The event that has occurred.
 530.166 +	@leave Standard Symbian OS error codes. e.g. KErrNoMemory.
 530.167 +	@see MHTTPFilterBase	
 530.168 +*/
 530.169 +	//##ModelId=3C4C186B0061
 530.170 +	IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
 530.171 +
 530.172 +/**
 530.173 +	Intended Usage:	Called when the filters registration conditions are satisfied for events that occur
 530.174 +	on the session. Any leaves must be handled by the appropriate MHFRunError.
 530.175 +	@param aEvent The session event that has occured.
 530.176 +	@leave KErrNoMemory if an attempt to allocate memory has failed
 530.177 +	@leave KErrHttpCantResetRequestBody if the request body needed to be rewound by the client
 530.178 +		   but it doesn't support this
 530.179 +	@see MHTTPFilterBase
 530.180 +*/
 530.181 +	//##ModelId=3C4C186B0057
 530.182 +	IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent);
 530.183 +
 530.184 +/**
 530.185 +	Intended Usage:	Called when RunL leaves from a transaction event. This works in the same
 530.186 +	way as CActve::RunError; return KErrNone if you have handled the error.
 530.187 +	If you don't completely handle the error, a panic will occur.
 530.188 +	@param aError The leave code that RunL left with.
 530.189 +	@param aTransaction The transaction that was being processed.
 530.190 +	@param aEvent The Event that was being processed.
 530.191 +	@return KErrNone if the error has been cancelled or the code
 530.192 +			of the continuing error otherwise.
 530.193 +	@see MHTTPFilterBase
 530.194 +*/
 530.195 +	//##ModelId=3C4C186B0043
 530.196 +	IMPORT_C virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
 530.197 +
 530.198 +/**
 530.199 +	Intended Usage:	Called when MHFRunL leaves from a session event. This works in the same
 530.200 +	way as CActve::RunError. If you don't completely handle the error, a panic will occur.
 530.201 +	@param aError The leave code that RunL left with.
 530.202 +	@param aEvent The Event that was being processed.
 530.203 +	@return KErrNone if the error has been cancelled or the code
 530.204 +			of the continuing error otherwise.	
 530.205 +	@see MHTTPFilterBase
 530.206 +*/
 530.207 +	//##ModelId=3C4C186B0038	
 530.208 +	IMPORT_C virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent);
 530.209 +
 530.210 +public:	// Methods from MHTTPFilter
 530.211 +
 530.212 +/** 
 530.213 +	Intended Usage:	Called when the filter is being removed from a session's filter queue.
 530.214 +	@param aSession The session it's being removed from
 530.215 +	@param aHandle The filter handle. Complex filters may need to 
 530.216 +				   refer to this to keep track of which particular registration is
 530.217 +				   being unloaded.
 530.218 +	@see MHTTFilter
 530.219 +*/
 530.220 +	//##ModelId=3C4C186B0025
 530.221 +	IMPORT_C virtual void MHFUnload(RHTTPSession aSession, THTTPFilterHandle aHandle);
 530.222 +
 530.223 +/** 
 530.224 +	Intended Usage:	Called when the filter is being added to the session's filter queue.
 530.225 +	@param aSession The session it's being added to.
 530.226 +	@param aHandle The filter handle. Complex filters may need to keep
 530.227 +				   track of this, for instance if generating events in response to
 530.228 +				   external stimuli
 530.229 +	@see MHTTFilter
 530.230 + */
 530.231 +	//##ModelId=3C4C186B001A
 530.232 +	IMPORT_C virtual void MHFLoad(RHTTPSession aSession, THTTPFilterHandle aHandle);
 530.233 +
 530.234 +protected: // callbacks/methods for sub-classes
 530.235 +
 530.236 +/**	
 530.237 +	Callback method for concrete protocol handler sub-classes to
 530.238 +	inform the base protocol handler that a transaction has completed.
 530.239 +	The concrete protocol handler must call this method in order to
 530.240 +	supply a completion event that will be sent to the client.
 530.241 +	In addition, the method allows the base protocol handler to do some
 530.242 +	queue management.
 530.243 +	@param			aTrans			(in) the completed transaction
 530.244 +	@param			aEventStatus	(in) an event to be sent back to the client along
 530.245 +										 the filter queue
 530.246 +	@leave			THTTPPanic::EInvalidFilterHandle if unable to send event.
 530.247 + */
 530.248 +	//##ModelId=3C4C186B0010
 530.249 +	IMPORT_C void TransactionCompletedL(RHTTPTransaction aTrans, THTTPEvent aEventStatus);
 530.250 +
 530.251 +/**	
 530.252 +	Obtain the number of currently active transactions
 530.253 +	@return			The number of currently active transactions
 530.254 + */
 530.255 +	//##ModelId=3C4C186B0006
 530.256 +	IMPORT_C TInt NumActiveTransactions() const;
 530.257 +
 530.258 +/**	
 530.259 +	Callback method for concrete protocol handler sub-classes to
 530.260 +	inform the base protocol handler that a transaction has failed
 530.261 +	utterly. (i.e. the sub-class used aTrans.Fail().) The base protocol
 530.262 +	handler sets the transaction state to be cancelled.
 530.263 +	@param			aTrans			(in) the completed transaction
 530.264 + */
 530.265 +	//##ModelId=3C4C186A03E5
 530.266 +	IMPORT_C void TransactionFailed(RHTTPTransaction aTrans);
 530.267 +
 530.268 +/**	
 530.269 +	Completes this active object - allows the protocol handler to
 530.270 +	reevaluate the queue of pending transactions and service new ones
 530.271 +	if possible.
 530.272 + */
 530.273 +	//##ModelId=3C4C186A03E4
 530.274 +	IMPORT_C void CompleteSelf();
 530.275 +
 530.276 +/**	
 530.277 +	Searches the array of CProtTransaction objects to if the
 530.278 +	aTransaction object is wrapped by one of them. If one is found aProtTransaction is set to it
 530.279 +	@param aTransaction	The transaction to search for.
 530.280 +	@param aProtTransaction	Reference to a CProtTransaction which will be set to the
 530.281 +		   CProtTransaction which wraps the RHTTPTransaction.
 530.282 +	@return If a CProtTransaction object is found, a positive value is
 530.283 +			returned that is the index to that object in the array. If 
 530.284 +			no object is found, KErrNotFound is returned.
 530.285 + */
 530.286 +	IMPORT_C TInt FindTransaction(RHTTPTransaction aTransaction, const CProtTransaction*& aProtTransaction) const;
 530.287 +
 530.288 +private: // methods to be implemented in specific protocol handlers
 530.289 +
 530.290 +/**	Intended usage:	Creates the specific type of codec required for a specific type
 530.291 +					of protocol handler.
 530.292 +					
 530.293 +					This must be implemented by a concrete protocol handler sub-class.
 530.294 + */
 530.295 +	//##ModelId=3C4C186A03DC
 530.296 +	virtual void CreateCodecL() = 0;
 530.297 +
 530.298 +/**	Intended Usage:	Creates a representation of a client transaction to be used in the
 530.299 +					protocol handler.  Since the protocol handler deals with the low-
 530.300 +					level data for a transaction as sent over a particular transport,
 530.301 +					an appropriate CProtTransaction-derived class is used that owns a
 530.302 +					CRxData and a CTxData to handle the low-level data.
 530.303 +					
 530.304 +					This must be implemented by a concrete protocol handler sub-class.
 530.305 +	@leave			KErrNoMemory if there was not enough memory to create the object.
 530.306 +					create the object.
 530.307 +	@param			aTransaction	The RHTTPTransaction object associated with
 530.308 +									this CProtTransaction object.
 530.309 +	@return			A pointer to a created CProtTransaction-derived class.
 530.310 +	@see			CRxData
 530.311 +	@see			CTxData
 530.312 + */
 530.313 +	//##ModelId=3C4C186A03DA
 530.314 +	virtual CProtTransaction* CreateProtTransactionL(RHTTPTransaction aTransaction) = 0;
 530.315 +
 530.316 +/**	Intended Usage:	Attempt to service the transaction.  This implies that the concrete
 530.317 +					protocol handler will allocate some transport resources to the
 530.318 +					transaction - which could fail if the protocol handler has hit an
 530.319 +					internal limit of resources or bandwidth.
 530.320 +					Implementations of this interface may leave with any of KErrHttpInvalidUri,
 530.321 +					KErrGeneral, KErrNoMemory
 530.322 +					
 530.323 +					This must be implemented by a concrete protocol handler sub-class.
 530.324 +	@param			aTrans	The pending protocol transaction object which is to be
 530.325 +							serviced.
 530.326 +	@return			A flag that indicates if the transaction can be serviced immediately.
 530.327 + */
 530.328 +	//##ModelId=3C4C186A03D0
 530.329 +	virtual TBool ServiceL(CProtTransaction& aTrans) = 0;
 530.330 +
 530.331 +/**	Intended Usage:	Called when the RHTTPTransaction object corresponding to aTrans has
 530.332 +					been closed by the client. This allows the concrete protocol handler
 530.333 +					to do any cleanup required for this particular transaction.
 530.334 +
 530.335 +					Ownership of the CProtTransaction object is transferred back to the
 530.336 +					concrete protocol handler, which then has deletion responsibility
 530.337 +					for it.  By the time this function has been called, the base
 530.338 +					protocol handler will have dequeued the transaction.
 530.339 +					
 530.340 +					The client's RHTTPTransaction will be closed when this function
 530.341 +					returns,  so it is not possible to send events to the client during
 530.342 +					the function's execution.
 530.343 +					
 530.344 +					This must be implemented by a concrete protocol handler sub-class.
 530.345 +	@param			aTrans		(in) A pointer to the transaction about to be closed.
 530.346 + */
 530.347 +	//##ModelId=3C4C186A03C6
 530.348 +	virtual void ClosedTransactionHook(CProtTransaction* aTrans) = 0;
 530.349 +
 530.350 +/**	Intended Usage:	Called when the RHTTPTransaction object corresponding to aTrans has
 530.351 +					been cancelled by the client or an intermediate filter. This allows
 530.352 +					the concrete protocol handler to do any cleanup and to perform the
 530.353 +					necessary actions for cancellation on its transport layer.
 530.354 +					
 530.355 +					This must be implemented by a concrete protocol handler sub-class.
 530.356 +	@param			aTrans		(in) A reference to the transaction being cancelled.
 530.357 + */
 530.358 +	//##ModelId=3C4C186A03B3
 530.359 +	virtual void CancelTransactionHook(CProtTransaction& aTransaction) = 0;
 530.360 +
 530.361 +/**	Intended Usage:	Called to notify the concrete protocol handler that new request
 530.362 +					body data is available for transmission.
 530.363 +					
 530.364 +					This must be implemented by a concrete protocol handler sub-class.
 530.365 +	@param			aTrans		(in) A reference to the transaction whose request body
 530.366 +									 has new data available.
 530.367 + */
 530.368 +	//##ModelId=3C4C186A03A8
 530.369 +	virtual void NotifyNewRequestBodyPart(CProtTransaction& aTransaction) = 0;
 530.370 +
 530.371 +protected: // Methods inherited from CActive
 530.372 +
 530.373 +/**	Intended Usage:	Do some processing when a previous asynchronous request made by
 530.374 +					this object has completed.
 530.375 + */
 530.376 +	//##ModelId=3C4C186A0377
 530.377 +	IMPORT_C virtual void RunL();
 530.378 +
 530.379 +/**	Intended Usage:	Do any cleanup required should RunL leave
 530.380 +	@param			aError		(in) The error code that RunL left with
 530.381 +	@return			A final error code - KErrNone if the error was handled by this
 530.382 +					method.
 530.383 + */
 530.384 +	//##ModelId=3C4C186A036E
 530.385 +	IMPORT_C virtual TInt RunError(TInt aError);
 530.386 +
 530.387 +/**	Intended Usage:	Cancel outstanding asynchronous requests that this object has made
 530.388 + */
 530.389 +	//##ModelId=3C4C186A036D
 530.390 +	IMPORT_C virtual void DoCancel();
 530.391 +
 530.392 +protected:	// Methods
 530.393 +
 530.394 +/**	
 530.395 +	Constructs a protocol handler associated with the supplied HTTP
 530.396 +	client session.
 530.397 +	@param			aSession	(in) The session on which the new protocol handler will
 530.398 +									 be installed.
 530.399 + */
 530.400 +	IMPORT_C CProtocolHandler(RHTTPSession aSession);
 530.401 +
 530.402 +/**	
 530.403 +	Second phase construction in which any necessary allocation is done
 530.404 +	Implementations of this interface may leave with KErrNoMemory
 530.405 +	@param aSession The HTTP session on which this protocol handler
 530.406 +		   will be installed.
 530.407 + */
 530.408 +	//##ModelId=3C4C186A036C
 530.409 +	IMPORT_C void ConstructL(RHTTPSession aSession);
 530.410 +
 530.411 +protected: // Attributes
 530.412 +
 530.413 +	/** The session to which this protocol handler is dedicated
 530.414 +	*/
 530.415 +	//##ModelId=3C4C186A033C
 530.416 +	RHTTPSession iSession;
 530.417 +
 530.418 +	/** The codec used for this protocol handler (to be specialised in subclasses)
 530.419 +	*/
 530.420 +	//##ModelId=3C4C186A032F
 530.421 +	CHeaderCodec* iCodec;
 530.422 +
 530.423 +	/** HTTP logger handle (debug only)
 530.424 +	*/
 530.425 +	__DECLARE_LOG
 530.426 +
 530.427 +	/** An interface providing the security policy. This may be NULL if there is no security policy plugin */
 530.428 +	//##ModelId=3C4C186A031D
 530.429 +	CSecurityPolicy* iSecurityPolicy;	
 530.430 +
 530.431 +private: // Methods
 530.432 +
 530.433 +/**	
 530.434 +	Called after a client RHTTPTransaction::SubmitL(), this method
 530.435 +	enqueues the supplied client transaction.  It checks to see if there
 530.436 +	already exists a CProtTransaction for this transaction. If there is
 530.437 +	and its state is ECancelled, then the associated request data is
 530.438 +	reset and the state changed to EPending. A CompleteSelf() is issued.
 530.439 +	In the case of an existing CProtTransaction that has not been
 530.440 +	cancelled, the submit event is ignored. If no CProtTransaction
 530.441 +	object existed, then one is created for the transaction and a
 530.442 +	CompleteSelf() is issued.
 530.443 +	@leave			KErrHttpCantResetRequestBody if the request body data cannot
 530.444 +					be reset. KErrNoMemory if a new CProtTransaction cannot be
 530.445 +					created or added to the transaction queue.
 530.446 +	@param			aTransaction	The submitted transaction.
 530.447 +	@pre 			None
 530.448 +	@post			If there is a new pending CProtTransaction object the protocol
 530.449 +					handler will have been self-completed (i.e. the RunL will be 
 530.450 +					called).
 530.451 + */
 530.452 +	//##ModelId=3C4C186A0362
 530.453 +	void SubmitTransactionL(RHTTPTransaction aTransaction);
 530.454 +
 530.455 +/**	
 530.456 +	Sets the state of the CProtTransaction object for this 
 530.457 +	transaction to ECancelled, and resets the object. This
 530.458 +	object can be reused if the transaction is resubmitted.
 530.459 +	@param			RHTTPTransaction aTrans
 530.460 +	@pre 			A CProtTransaction object exists for this transaction.
 530.461 +	@post			The state of the CProtTransaction object is set to ECancelled 
 530.462 +					and it has been reset.
 530.463 + */
 530.464 +	//##ModelId=3C4C186A0359
 530.465 +	void HandleCancelTransaction(RHTTPTransaction aTrans);
 530.466 +
 530.467 +/**	
 530.468 +	Removes the CProtTransaction object for the transaction
 530.469 +	from the queue of CProtTransaction objects.
 530.470 +	@param			RHTTPTransaction aTrans
 530.471 +	@pre 			A CProtTransaction object exists for this transaction.
 530.472 +	@post			The CProtTransaction object has been removed from the queue.
 530.473 + */
 530.474 +	//##ModelId=3C4C186A034F
 530.475 +	void HandleClosedTransaction(RHTTPTransaction aTrans);
 530.476 +
 530.477 +/**	
 530.478 +	Searches the array of CProtTransaction objects to if the
 530.479 +	aTransaction object is wrapped by one of them.
 530.480 +	@param			aTransaction	The transaction to search for.
 530.481 +	@return			If a CProtTransaction object is found, a positive value is
 530.482 +					returned that is the index to that object in the array. If 
 530.483 +					no object is found, KErrNotFound is returned.
 530.484 + */
 530.485 +	//##ModelId=3C4C186A0346
 530.486 +	TInt FindTransaction(RHTTPTransaction aTransaction) const;
 530.487 +
 530.488 +protected:
 530.489 +/**	
 530.490 +	Intended Usage: This is a mechanism for allowing future change to CProtocolHandler API 
 530.491 +	without breaking BC.
 530.492 +	@param aInterfaceId		the UID of the API function being called.
 530.493 +	@param aInterfacePtr	reference to pointer to actual function implementation (in the derived class)
 530.494 + */
 530.495 +	inline virtual void GetInterfaceL(TUid aInterfaceId, MProtHandlerInterface*& aInterfacePtr);
 530.496 +
 530.497 +public:
 530.498 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 530.499 + */
 530.500 +	//##ModelId=3C4C186A0344
 530.501 +	inline virtual void Reserved2();
 530.502 +
 530.503 +
 530.504 +private: // Attributes
 530.505 +
 530.506 +	/** A list of transactions. Each transaction has a list state, e.g. pending,
 530.507 +		active, etc.
 530.508 +	*/
 530.509 +	//##ModelId=3C4C186A0313
 530.510 +	RPointerArray<CProtTransaction>		iTransactions;
 530.511 +
 530.512 +	/**	The transaction which is currently being serviced - used in RunError so 
 530.513 +		we know which transaction caused RunL to leave.
 530.514 +	*/
 530.515 +	//##ModelId=3C4C186A02FF
 530.516 +	RHTTPTransaction					iCurrentTransaction;
 530.517 +
 530.518 +	/** The destructor key UID indentification required by ECom
 530.519 +	*/
 530.520 +	//##ModelId=3C4C186A02F5
 530.521 +	TUid iDtor_ID_Key;
 530.522 +	};
 530.523 +
 530.524 +
 530.525 +	
 530.526 +/**
 530.527 +Interface for adding to ProtocolHandler API
 530.528 +@publishedAll
 530.529 +@released
 530.530 +*/
 530.531 +
 530.532 +const TInt KProtHandlerSessionServerCertUid		= 0x1028180D;
 530.533 +const TInt KProtHandlerTransactionServerCertUid	= 0x1028180E;
 530.534 +
 530.535 +class MProtHandlerInterface
 530.536 +	{
 530.537 +public:
 530.538 +	/** 
 530.539 +	Intended Usage: Get the Server Certificate for the current session.
 530.540 +	@return	The certificate information or NULL if it is not available
 530.541 +	*/
 530.542 +	virtual const CCertificate*  SessionServerCert() = 0;
 530.543 +
 530.544 +	/** 
 530.545 +	Intended Usage: Get the Server Certificate for the specified transaction.
 530.546 +	@param	aTransaction The transaction for which the certificate is requested
 530.547 +	@return	The certificate information or NULL if it is not available
 530.548 +	*/
 530.549 +	virtual const CCertificate* TransactionServerCert( RHTTPTransaction aTransaction) = 0;
 530.550 +	};
 530.551 +
 530.552 +inline void CProtocolHandler::GetInterfaceL(TUid, MProtHandlerInterface*&)
 530.553 +	{}
 530.554 +
 530.555 +inline void CProtocolHandler::Reserved2()
 530.556 +	{}
 530.557 +
 530.558 +#endif // __CPROTOCOLHANDLER_H__
   531.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   531.2 +++ b/epoc32/include/mw/http/framework/cprottransaction.h	Wed Mar 31 12:27:01 2010 +0100
   531.3 @@ -0,0 +1,210 @@
   531.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   531.5 +// All rights reserved.
   531.6 +// This component and the accompanying materials are made available
   531.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   531.8 +// which accompanies this distribution, and is available
   531.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  531.10 +//
  531.11 +// Initial Contributors:
  531.12 +// Nokia Corporation - initial contribution.
  531.13 +//
  531.14 +// Contributors:
  531.15 +//
  531.16 +// Description:
  531.17 +//
  531.18 +
  531.19 +
  531.20 +
  531.21 +/**
  531.22 + @file CProtTransaction.h 
  531.23 + @warning : This file contains Rose Model ID comments - please do not delete
  531.24 +*/
  531.25 +
  531.26 +#ifndef __CPROTTRANSACTION_H__
  531.27 +#define __CPROTTRANSACTION_H__
  531.28 +
  531.29 +// System includes
  531.30 +#include <e32base.h>
  531.31 +#include <http/rhttptransaction.h>
  531.32 +
  531.33 +// Forward declarations
  531.34 +class CTxData;
  531.35 +class CRxData;
  531.36 +class MRxDataObserver;
  531.37 +
  531.38 +
  531.39 +//##ModelId=3B1E52B30382
  531.40 +class CProtTransaction : public CBase
  531.41 +/** 
  531.42 +A representation of a transaction used by protocol handlers.
  531.43 +This class is lower-level than the RHTTPTransaction class,
  531.44 +since it owns objects that represent the request and response data as
  531.45 +transmitted and received over a transport medium.
  531.46 +@publishedAll
  531.47 +@released
  531.48 +*/
  531.49 +	{
  531.50 +public:	// Enums
  531.51 +
  531.52 +/** The TTransactionState type defines the states of a transaction.
  531.53 +*/
  531.54 +	enum TTransactionState
  531.55 +		{
  531.56 +		/** Specifies that the transaction is pending servicing.
  531.57 +		*/
  531.58 +		EPending		= 0,
  531.59 +		/** Specifies that the transaction is being serviced - active.
  531.60 +		*/
  531.61 +		EActive,
  531.62 +		/** Specifies that the transaction has been cancelled.
  531.63 +		*/
  531.64 +		ECancelled,
  531.65 +		/** Specifies that the transaction has completed.
  531.66 +		*/
  531.67 +		ECompleted
  531.68 +		};
  531.69 +
  531.70 +public:
  531.71 +
  531.72 +/** 
  531.73 +	Intended Usage:	Destructor - cleans up and releases resources to the system
  531.74 +*/
  531.75 +	//##ModelId=3B1E52B40031
  531.76 +	IMPORT_C virtual ~CProtTransaction();
  531.77 +
  531.78 +public: // accessors
  531.79 +
  531.80 +/**	
  531.81 +	Provides the state of the transaction, e.g. pending, 
  531.82 +	active, etc.
  531.83 +	@return			A enum specifying the state of the transaction.
  531.84 +*/
  531.85 +	//##ModelId=3C4C37E50306
  531.86 +	TTransactionState TransactionState() const;
  531.87 +
  531.88 +/**	
  531.89 +	Sets the state of the transaction.
  531.90 +	@param			aState	The state that the transaction is in.
  531.91 +	@post			The state of the transaction has been updated.
  531.92 +*/
  531.93 +	//##ModelId=3C4C37E502D4
  531.94 +	void SetTransactionState(TTransactionState aState);
  531.95 +
  531.96 +/**	
  531.97 +	Resets the Rx data object. The Rx data object must be 
  531.98 +	created again to be used.
  531.99 +	@post			The Rx data objects has been reset.
 531.100 +*/
 531.101 +	//##ModelId=3C4C37E502CA
 531.102 +	IMPORT_C void ResetRxData();
 531.103 +
 531.104 +/**	
 531.105 +	Resets the Tx data object. The Tx data object must be 
 531.106 +	created again to be used.
 531.107 +	@post			The Tx data objects has been reset.
 531.108 +*/
 531.109 +	//##ModelId=3C4C37E502C0
 531.110 +	IMPORT_C void ResetTxData();
 531.111 +
 531.112 +/**	
 531.113 +	Obtain the API-level transaction to which this object
 531.114 +	corresponds to.
 531.115 +	@return			The API-level transaction that this object corresponds to.
 531.116 +*/
 531.117 +	//##ModelId=3B1E52B40013
 531.118 +	IMPORT_C RHTTPTransaction Transaction() const;
 531.119 +
 531.120 +/**	
 531.121 +	Obtain the Transmit Data portion of the transaction.
 531.122 +	@return			A reference to the Tx data object of the transaction.
 531.123 +*/
 531.124 +	//##ModelId=3B1E52B40012
 531.125 +	IMPORT_C CTxData& TxData() const;
 531.126 +
 531.127 +/**	
 531.128 +	Obtain the Receive Data portion of the transaction.
 531.129 +	@return			A reference to the Rx data object of the transaction.
 531.130 +*/
 531.131 +	//##ModelId=3B1E52B40009
 531.132 +	IMPORT_C CRxData& RxData() const;
 531.133 +
 531.134 +public:	// Methods to be implemented by derived classes
 531.135 +
 531.136 +/**	
 531.137 +	Intended Usage:	Creates the appropriate CTxData object.
 531.138 +	@leave			KErrNoMemory if there is not enough memory available to 
 531.139 +					create the object.
 531.140 +*/
 531.141 +	//##ModelId=3C4C37E502AC
 531.142 +	virtual void CreateTxDataL() =0;
 531.143 +
 531.144 +/**	
 531.145 +	Intended Usage:	Creates the appropriate CRxData object.
 531.146 +	@leave			KErrNoMemory if there is not enough memory available to 
 531.147 +					create the object.
 531.148 +	@param			aObserver	A reference to the observer for the Rx data object.
 531.149 +*/
 531.150 +	//##ModelId=3C4C37E50284
 531.151 +	virtual void CreateRxDataL(MRxDataObserver& aObserver) =0;
 531.152 +
 531.153 +protected: // Methods
 531.154 +
 531.155 +/** 
 531.156 +	Default constructor	
 531.157 +*/
 531.158 +	//##ModelId=3B1E52B303E6
 531.159 +	CProtTransaction();
 531.160 +
 531.161 +/** 
 531.162 +	Normal constructor, of a CProtTransaction that corresponds to the
 531.163 +	supplied client transaction handle.
 531.164 +	@param			aTrans	(in) The client transaction handle.
 531.165 +*/
 531.166 +	//##ModelId=3B1E52B303E7
 531.167 +	IMPORT_C CProtTransaction(RHTTPTransaction aTrans);
 531.168 +
 531.169 +protected:	// Attributes
 531.170 +
 531.171 +	/** The client transaction
 531.172 +	*/
 531.173 +	//##ModelId=3B1E52B303D4
 531.174 +	RHTTPTransaction iTrans;
 531.175 +
 531.176 +	/** The transmission data
 531.177 +	*/
 531.178 +	//##ModelId=3B1E52B303CA
 531.179 +	CTxData* iTxData;
 531.180 +
 531.181 +	/** The received data
 531.182 +	*/
 531.183 +	//##ModelId=3B1E52B303C0
 531.184 +	CRxData* iRxData;
 531.185 +
 531.186 +	/** Transaction state indicator.
 531.187 +	*/
 531.188 +	//##ModelId=3C4C37E50247
 531.189 +	TTransactionState	iTransactionState;
 531.190 +
 531.191 +private: // methods
 531.192 +
 531.193 +/**	
 531.194 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 531.195 + */
 531.196 +	//##ModelId=3C4C37E5026F
 531.197 +	inline virtual void Reserved1();
 531.198 +
 531.199 +/**	
 531.200 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 531.201 + */
 531.202 +	//##ModelId=3C4C37E50251
 531.203 +	inline virtual void Reserved2();
 531.204 +	};
 531.205 +
 531.206 +
 531.207 +inline void CProtTransaction::Reserved1()
 531.208 +	{}
 531.209 +inline void CProtTransaction::Reserved2()
 531.210 +	{}
 531.211 +
 531.212 +
 531.213 +#endif // __CPROTTRANSACTION_H__
   532.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   532.2 +++ b/epoc32/include/mw/http/framework/crxdata.h	Wed Mar 31 12:27:01 2010 +0100
   532.3 @@ -0,0 +1,127 @@
   532.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   532.5 +// All rights reserved.
   532.6 +// This component and the accompanying materials are made available
   532.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   532.8 +// which accompanies this distribution, and is available
   532.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  532.10 +//
  532.11 +// Initial Contributors:
  532.12 +// Nokia Corporation - initial contribution.
  532.13 +//
  532.14 +// Contributors:
  532.15 +//
  532.16 +// Description:
  532.17 +//
  532.18 +
  532.19 +
  532.20 +
  532.21 +/**
  532.22 + @file CRxData.h
  532.23 + @warning : This file contains Rose Model ID comments - please do not delete
  532.24 +*/
  532.25 +
  532.26 +#ifndef __CRXDATA_H__
  532.27 +#define __CRXDATA_H__
  532.28 +
  532.29 +// System includes
  532.30 +#include <e32base.h>
  532.31 +#include <http/framework/cprottransaction.h>
  532.32 +#include <http/mhttpdatasupplier.h>
  532.33 +#include <http/rhttpsession.h> // this include is needed to ensure that the <rhttp.inl> is compiled by gcc...
  532.34 +
  532.35 +// Forward declarations
  532.36 +class MRxDataObserver;
  532.37 +
  532.38 +
  532.39 +//##ModelId=3B1E52AB0087
  532.40 +class CRxData : public CBase, public MHTTPDataSupplier
  532.41 +/**
  532.42 +An abstract base class for the decoding of response data received by a
  532.43 +protocol handler.
  532.44 +@publishedAll
  532.45 +@released
  532.46 +*/
  532.47 +	{
  532.48 +public:
  532.49 +
  532.50 +/** Intended Usage:	Destructor - cleans up and releases resources to the system	
  532.51 +*/
  532.52 +	IMPORT_C
  532.53 +	//##ModelId=3B1E52AB00ED
  532.54 +	virtual ~CRxData();
  532.55 +
  532.56 +/** Intended Usage:	Obtain the protocol transaction whose request part is represented
  532.57 +					as encoded data by this object.
  532.58 +	@return The protocol transaction object
  532.59 +*/
  532.60 +	IMPORT_C
  532.61 +	//##ModelId=3B1E52AB00EC
  532.62 +	CProtTransaction& ProtTrans();
  532.63 +
  532.64 +public:
  532.65 +
  532.66 +/** Intended Usage:	Resets the received data object to its initial state following
  532.67 +					construction.  This method must be implemented for specific sub-
  532.68 +					classes of received data.
  532.69 +	@post			The object is reset.
  532.70 +*/
  532.71 +	//##ModelId=3BA60048014B
  532.72 +	virtual void ResetRxData() = 0;
  532.73 +
  532.74 +protected:
  532.75 +
  532.76 +/** Intended Usage:	Default constructor	- creates an Rx data object not associated
  532.77 +					with any protocol transaction.
  532.78 +*/
  532.79 +	IMPORT_C
  532.80 +	//##ModelId=3A914E5F008F
  532.81 +	CRxData();
  532.82 +
  532.83 +/** Intended Usage:	Normal constructor, of a CRxData that corresponds to the supplied
  532.84 +					protocol transaction, and which sends status updates to the supplied
  532.85 +					observer interface,
  532.86 +	@param			aProtTrans			(in) The transaction for which this object
  532.87 +											 represents the transmitted data.
  532.88 +	@param			aObserver			(in) The object's observer.
  532.89 +*/
  532.90 +	IMPORT_C CRxData(CProtTransaction& aProtTrans, MRxDataObserver& aObserver);
  532.91 +
  532.92 +/** Intended Usage:	Second phase construction, default
  532.93 +*/
  532.94 +	IMPORT_C
  532.95 +	//##ModelId=3B1E52AB00BA
  532.96 +	void ConstructL();
  532.97 +
  532.98 +protected:
  532.99 +
 532.100 +	/** The protocol transaction for which this object represents the encoded received data
 532.101 +	*/
 532.102 +	//##ModelId=3B1E52AB00B2
 532.103 +	CProtTransaction* iProtTrans;
 532.104 +
 532.105 +	/** This object's observer, to whom we forward status information
 532.106 +	*/
 532.107 +	//##ModelId=3B1E7738028B
 532.108 +	MRxDataObserver* iObserver;
 532.109 +
 532.110 +private: // methods
 532.111 +
 532.112 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 532.113 + */
 532.114 +	//##ModelId=3C4C37DA0007
 532.115 +	inline virtual void Reserved1();
 532.116 +
 532.117 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 532.118 + */
 532.119 +	//##ModelId=3C4C37D903DB
 532.120 +	inline virtual void Reserved2();
 532.121 +	};
 532.122 +
 532.123 +
 532.124 +inline void CRxData::Reserved1()
 532.125 +	{}
 532.126 +inline void CRxData::Reserved2()
 532.127 +	{}
 532.128 +
 532.129 +
 532.130 +#endif // __CRXDATA_H__ 
   533.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   533.2 +++ b/epoc32/include/mw/http/framework/csecuritypolicy.h	Wed Mar 31 12:27:01 2010 +0100
   533.3 @@ -0,0 +1,173 @@
   533.4 +// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   533.5 +// All rights reserved.
   533.6 +// This component and the accompanying materials are made available
   533.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   533.8 +// which accompanies this distribution, and is available
   533.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  533.10 +//
  533.11 +// Initial Contributors:
  533.12 +// Nokia Corporation - initial contribution.
  533.13 +//
  533.14 +// Contributors:
  533.15 +//
  533.16 +// Description:
  533.17 +//
  533.18 +
  533.19 +
  533.20 +
  533.21 +/**
  533.22 + @file csecuritypolicy.h
  533.23 + @warning : This file may contain Rose Model ID comments - please do not delete
  533.24 +*/
  533.25 +
  533.26 +#ifndef __CSECURITYPOLICY_H__
  533.27 +#define __CSECURITYPOLICY_H__
  533.28 +
  533.29 +// System includes
  533.30 +#include <e32base.h>
  533.31 +#include <ecom/ecom.h>
  533.32 +#include <stringpool.h>
  533.33 +#include <ssl.h>
  533.34 +#include <wsp/wsptypes.h>
  533.35 +
  533.36 +
  533.37 +//##ModelId=3C4C37E401CE
  533.38 +class MSecurityPolicy
  533.39 +/**
  533.40 +The Security Policy Interface.  This interface class must be the base 
  533.41 +class of a security policy plug-in.
  533.42 +@publishedAll
  533.43 +@released
  533.44 +*/
  533.45 +	{
  533.46 +public:
  533.47 +
  533.48 +/** Intended Usage:	Ask the client to accept or reject a certificate. Not
  533.49 +					applicable to TLS, as the SSL layer does this itself.
  533.50 +					The call is asynchronous, returning the result via the TRequestStatus.
  533.51 +	@param			aServerCert		(in) A structure containing the certificate details.
  533.52 +	@param			aStatus			(out) A status flag used to indicate errors. A value of 0 is used to indicate
  533.53 +									that the cert is untrusted and 1 that it is trusted
  533.54 +*/
  533.55 +	//##ModelId=3C4C37E4020B
  533.56 +	virtual void ValidateUntrustedServerCert(TCertInfo& aServerCert, TRequestStatus& aStatus) const = 0;
  533.57 +
  533.58 +/** Intended Usage:	Cancel a previous request to ask the client to accept or reject
  533.59 +					an untrusted WTLS server certificate.
  533.60 +*/
  533.61 +	//##ModelId=3C4C37E4020A
  533.62 +	virtual void CancelValidateUntrustedServerCert() = 0;
  533.63 +
  533.64 +
  533.65 +/** Intended Usage:	Obtain an array of WTLS cipher suites.  Not applicable to TLS clients.
  533.66 +	@return			An array of cipher suites, consisting of paired bulk encryption
  533.67 +					algorithms and MAC algorithms.  The array must be ordered with
  533.68 +					strongest cipher suites at the start.
  533.69 +*/
  533.70 +	//##ModelId=3C4C37E40201
  533.71 +	virtual const RArray<TWtlsCipherSuite>& GetWtlsCipherSuites() =0;
  533.72 +
  533.73 +/** Intended Usage:	Obtain a list of TLS cipher suites.  Not applicable to WTLS
  533.74 +					clients.
  533.75 +	@return			An descriptor containing a list of the TLS cipher suites. Each cipher suite is a 2 byte pair
  533.76 +*/
  533.77 +	//##ModelId=3C4C37E40200
  533.78 +	virtual const TDesC8& GetTlsCipherSuites() = 0;
  533.79 +
  533.80 +/** Intended Usage:	Obtain the WTLS key exchange suites.  Not applicable
  533.81 +					to TLS clients.
  533.82 +	@return			An array of the WTLS key exchange suites.  The array must be ordered
  533.83 +					with authenticating key exchange suites at the start followed by
  533.84 +					anonymous key exchange suites if desired.  Within each group of keys
  533.85 +					longer keys should precede shorter ones.
  533.86 +*/
  533.87 +	//##ModelId=3C4C37E401FA
  533.88 +	virtual const RArray<TWtlsKeyExchangeSuite>& GetWtlsKeyExchangeSuites() = 0;
  533.89 +
  533.90 +/** Intended Usage:	Obtain arbitrary, named security policy properties, in a generic
  533.91 +					'stringified' form.
  533.92 +	@param			aPropertyName	(in) The policy property name.
  533.93 +	@param			aPropertyValue	(out) The property value. Parsing of the value is
  533.94 +									left to the caller. The caller must close the
  533.95 +									RString.
  533.96 +	@return			An error code: KErrNone if the property exists or KErrNotFound if
  533.97 +					it doesn't.
  533.98 +*/
  533.99 +	//##ModelId=3C4C37E401F7
 533.100 +	virtual TInt GetNamedPolicyProperty(RStringF aPropertyName, RString& aPropertyValue) = 0;
 533.101 +
 533.102 +protected:
 533.103 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 533.104 + */
 533.105 +	//##ModelId=3C4C37E401F6
 533.106 +	virtual void Reserved1() =0;
 533.107 +
 533.108 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 533.109 + */
 533.110 +	//##ModelId=3C4C37E401EC
 533.111 +	virtual void Reserved2() =0;
 533.112 +	};
 533.113 +
 533.114 +//##ModelId=3C4C37C50300
 533.115 +class CSecurityPolicy : public CBase, public MSecurityPolicy
 533.116 +/** 
 533.117 +The Security Policy Plug-in API.  This ECOM interface class must be implemented
 533.118 +by each instance of a security policy plug-in.
 533.119 +@publishedAll
 533.120 +@released
 533.121 +*/
 533.122 +	{
 533.123 +public: // methods
 533.124 +
 533.125 +/** Intended Usage:	Factory construction - instantiates the plug-in.
 533.126 +	@param			aStringPool		(in) An open string pool reference that can be used by the plugin.
 533.127 +	@return			The constructed plug-in.
 533.128 +*/
 533.129 +	//##ModelId=3C4C37C503C8
 533.130 +	inline static CSecurityPolicy* NewL(RStringPool aStringPool);
 533.131 +
 533.132 +/** Intended Usage:	Class destructor.
 533.133 +*/
 533.134 +	//##ModelId=3C4C37C503BE
 533.135 +	inline virtual ~CSecurityPolicy();
 533.136 +
 533.137 +
 533.138 +protected: // methods
 533.139 +
 533.140 +/** Intended Usage:	Normal constructor. Creates an instance of the plug-in base.
 533.141 +	@param			aStrPool		(in) An open string pool reference that can be used by the plugin.
 533.142 +	@return			The constructed plug-in base.
 533.143 +*/
 533.144 +	//##ModelId=3C4C37C503B5
 533.145 +	inline CSecurityPolicy(RStringPool aStrPool);
 533.146 +
 533.147 +
 533.148 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 533.149 + */
 533.150 +	//##ModelId=3C4C37C503B4
 533.151 +	inline virtual void Reserved1();
 533.152 +
 533.153 +/**	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 533.154 + */
 533.155 +	//##ModelId=3C4C37C503AD
 533.156 +	inline virtual void Reserved2();
 533.157 +
 533.158 +protected: // attributes
 533.159 +
 533.160 +	/** The stringpool reference
 533.161 +	*/
 533.162 +	//##ModelId=3C4C37C503AA
 533.163 +	RStringPool iStrPool;
 533.164 +
 533.165 +private: // attributes
 533.166 +
 533.167 +	/** D'tor Key identification required for ECOM
 533.168 +		@internalAll
 533.169 +	*/
 533.170 +	//##ModelId=3C4C37C50396
 533.171 +	TUid iDtor_ID_Key;
 533.172 +	};
 533.173 +
 533.174 +#include <http/framework/csecuritypolicy.inl>
 533.175 +
 533.176 +#endif // __CSECURITYPOLICY_H__
   534.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   534.2 +++ b/epoc32/include/mw/http/framework/csecuritypolicy.inl	Wed Mar 31 12:27:01 2010 +0100
   534.3 @@ -0,0 +1,65 @@
   534.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   534.5 +// All rights reserved.
   534.6 +// This component and the accompanying materials are made available
   534.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   534.8 +// which accompanies this distribution, and is available
   534.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  534.10 +//
  534.11 +// Initial Contributors:
  534.12 +// Nokia Corporation - initial contribution.
  534.13 +//
  534.14 +// Contributors:
  534.15 +//
  534.16 +// Description:
  534.17 +//
  534.18 +
  534.19 +
  534.20 +
  534.21 +/**
  534.22 + @file CSecurityPolicy.inl
  534.23 + @warning : This file contains Rose Model ID comments - please do not delete
  534.24 +*/
  534.25 +
  534.26 +#ifndef __CSECURITYPOLICY_INL__
  534.27 +#define __CSECURITYPOLICY_INL__
  534.28 +
  534.29 +
  534.30 +inline CSecurityPolicy* CSecurityPolicy::NewL(RStringPool aStringPool)
  534.31 +	{
  534.32 +	_LIT8(KDataTypeName, "security-policy");
  534.33 +
  534.34 +	// CSecurityPolicy ECOM Interface UID = 101F4485
  534.35 +	const TUid KUidSecPolInterface = {0x101F4485};
  534.36 +
  534.37 +	// Set up the parameters which allow ECOM's resolver to pick the right implementation
  534.38 +	TEComResolverParams resParams;
  534.39 +	resParams.SetDataType(KDataTypeName());
  534.40 +
  534.41 +	// Get the instantiation.  Allow ECOM to use the default resolver.  Pass in the init params.
  534.42 +	TAny* ptr = REComSession::CreateImplementationL(KUidSecPolInterface,
  534.43 +								 _FOFF(CSecurityPolicy, iDtor_ID_Key),
  534.44 +								 &aStringPool,
  534.45 +								 resParams);
  534.46 +
  534.47 +	return REINTERPRET_CAST(CSecurityPolicy*, ptr);
  534.48 +	}
  534.49 +
  534.50 +inline CSecurityPolicy::~CSecurityPolicy()
  534.51 +	{
  534.52 +	REComSession::DestroyedImplementation(iDtor_ID_Key);
  534.53 +	}
  534.54 +
  534.55 +inline CSecurityPolicy::CSecurityPolicy(RStringPool aStrPool)
  534.56 +	: iStrPool(aStrPool)
  534.57 +	{
  534.58 +	}
  534.59 +
  534.60 +
  534.61 +
  534.62 +inline void CSecurityPolicy::Reserved1()
  534.63 +	{}
  534.64 +inline void CSecurityPolicy::Reserved2()
  534.65 +	{}
  534.66 +
  534.67 +
  534.68 +#endif // __CSECURITYPOLICY_INL__
   535.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   535.2 +++ b/epoc32/include/mw/http/framework/ctxdata.h	Wed Mar 31 12:27:01 2010 +0100
   535.3 @@ -0,0 +1,115 @@
   535.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   535.5 +// All rights reserved.
   535.6 +// This component and the accompanying materials are made available
   535.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   535.8 +// which accompanies this distribution, and is available
   535.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  535.10 +//
  535.11 +// Initial Contributors:
  535.12 +// Nokia Corporation - initial contribution.
  535.13 +//
  535.14 +// Contributors:
  535.15 +//
  535.16 +// Description:
  535.17 +//
  535.18 +
  535.19 +
  535.20 +
  535.21 +/**
  535.22 + @file CTxData.h
  535.23 + @warning : This file contains Rose Model ID comments - please do not delete
  535.24 +*/
  535.25 +
  535.26 +#ifndef __CTXDATA_H__
  535.27 +#define __CTXDATA_H__
  535.28 +
  535.29 +// System includes
  535.30 +#include <e32base.h>
  535.31 +#include <http/framework/cprottransaction.h>
  535.32 +#include <http/mhttpdatasupplier.h>
  535.33 +#include <http/rhttpsession.h> // this include is needed to ensure that the <rhttp.inl> is compiled by gcc...
  535.34 +
  535.35 +
  535.36 +//##ModelId=3B1E52A8001F
  535.37 +class CTxData : public CBase, public MHTTPDataSupplier
  535.38 +/**
  535.39 +An abstract base class for the encoding of request data to be transmitted by a
  535.40 +protocol handler.
  535.41 +@publishedAll
  535.42 +@released
  535.43 +*/
  535.44 +	{
  535.45 +public: // methods
  535.46 +
  535.47 +/** @fn				~CTxData()
  535.48 +	Intended Usage:	Destructor - cleans up and releases resources to the system	
  535.49 +*/
  535.50 +	IMPORT_C
  535.51 +	//##ModelId=3B1E52A80051
  535.52 +	virtual ~CTxData();
  535.53 +
  535.54 +/** @fn				CProtTransaction& ProtTrans()
  535.55 +	Intended Usage:	Obtain the protocol transaction whose request part is represented
  535.56 +					as encoded data by this object.
  535.57 +	@return The protocol transaction object
  535.58 +*/
  535.59 +	IMPORT_C
  535.60 +	//##ModelId=3B1E52A80049
  535.61 +	CProtTransaction& ProtTrans();
  535.62 +
  535.63 +protected:
  535.64 +
  535.65 +/** @fn				CTxData()
  535.66 +	Intended Usage:	Default constructor	- creates a Tx data object not associated
  535.67 +					with any protocol transaction.
  535.68 +*/
  535.69 +	IMPORT_C
  535.70 +	//##ModelId=3A925A44019E
  535.71 +	CTxData();
  535.72 +	
  535.73 +/** @fn				CTxData(CProtTransaction& aProtTransaction)
  535.74 +	Intended Usage:	Normal constructor, of a CTxData that corresponds to the supplied
  535.75 +					protocol transaction.
  535.76 +	@param			aProtTransaction	(in) The transaction for which this object
  535.77 +											 represents the transmitted data.
  535.78 +*/
  535.79 +	IMPORT_C CTxData(CProtTransaction& aProtTransaction);
  535.80 +
  535.81 +/** @fn				ConstructL()
  535.82 +	Intended Usage:	Second phase construction, default
  535.83 +*/
  535.84 +	IMPORT_C
  535.85 +	//##ModelId=3B1E52A8003D
  535.86 +	void ConstructL();
  535.87 +
  535.88 +protected: // attributes
  535.89 +
  535.90 +	/** The HTTP transaction from whose request this OTA transmission data is built.
  535.91 +		Note that the transaction is not owned by this object.
  535.92 +	*/
  535.93 +	//##ModelId=3B1E52A80035
  535.94 +	CProtTransaction* iProtTrans;
  535.95 +
  535.96 +private: // methods
  535.97 +
  535.98 +/**	@fn				Reserved1()
  535.99 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 535.100 + */
 535.101 +	//##ModelId=3C4C37D6010F
 535.102 +	inline virtual void Reserved1();
 535.103 +
 535.104 +/**	@fn				Reserved2()
 535.105 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
 535.106 + */
 535.107 +	//##ModelId=3C4C37D600FB
 535.108 +	inline virtual void Reserved2();
 535.109 +	};
 535.110 +
 535.111 +
 535.112 +inline void CTxData::Reserved1()
 535.113 +	{}
 535.114 +inline void CTxData::Reserved2()
 535.115 +	{}
 535.116 +
 535.117 +
 535.118 +#endif // __CTXDATA_H__
   536.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   536.2 +++ b/epoc32/include/mw/http/framework/mrxdataobserver.h	Wed Mar 31 12:27:01 2010 +0100
   536.3 @@ -0,0 +1,73 @@
   536.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   536.5 +// All rights reserved.
   536.6 +// This component and the accompanying materials are made available
   536.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   536.8 +// which accompanies this distribution, and is available
   536.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  536.10 +//
  536.11 +// Initial Contributors:
  536.12 +// Nokia Corporation - initial contribution.
  536.13 +//
  536.14 +// Contributors:
  536.15 +//
  536.16 +// Description:
  536.17 +//
  536.18 +
  536.19 +
  536.20 +
  536.21 +/**
  536.22 + @file MRxDataObserver.h
  536.23 + @warning : This file contains Rose Model ID comments - please do not delete
  536.24 +*/
  536.25 +
  536.26 +#ifndef	__MRXDATAOBSERVER_H__
  536.27 +#define __MRXDATAOBSERVER_H__
  536.28 +
  536.29 +// System includes
  536.30 +#include <e32std.h>
  536.31 +
  536.32 +// Forward declarations
  536.33 +class CRxData;
  536.34 +
  536.35 +
  536.36 +//##ModelId=3A914E570296
  536.37 +class MRxDataObserver
  536.38 +/**
  536.39 +An interface to be implemented by classes that wish to receive status information
  536.40 +from an implementation of the CRxData class.
  536.41 +@publishedAll
  536.42 +@released
  536.43 +*/
  536.44 +	{
  536.45 +public:
  536.46 +/** @fn				void SetStatusL(CRxData& aRxData, TInt aStatus)
  536.47 +	Intended Usage:	Receive a status message from the object that processes received
  536.48 +					data in a protocol handler.
  536.49 +	@param			aRxData		The object which is processing the data.
  536.50 +	@param			aStatus		The status (or error) code.
  536.51 +*/
  536.52 +	//##ModelId=3B1E6B5800E5
  536.53 +	virtual void SetStatusL(CRxData& aRxData, TInt aStatus) =0;
  536.54 +
  536.55 +private: // methods
  536.56 +
  536.57 +/**	@fn				Reserved1()
  536.58 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
  536.59 + */
  536.60 +	//##ModelId=3C4C37CE035D
  536.61 +	inline virtual void MRDO_Reserved1();
  536.62 +
  536.63 +/**	@fn				Reserved2()
  536.64 +	Intended Usage:	Reserve a slot in the v-table to preserve future BC
  536.65 + */
  536.66 +	//##ModelId=3C4C37CE0349
  536.67 +	inline virtual void MRDO_Reserved2();
  536.68 +	};
  536.69 +
  536.70 +
  536.71 +inline void MRxDataObserver::MRDO_Reserved1()
  536.72 +	{}
  536.73 +inline void MRxDataObserver::MRDO_Reserved2()
  536.74 +	{}
  536.75 +
  536.76 +#endif // __MRXDATAOBSERVER_H__
   537.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   537.2 +++ b/epoc32/include/mw/http/framework/rheaderfield.h	Wed Mar 31 12:27:01 2010 +0100
   537.3 @@ -0,0 +1,110 @@
   537.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   537.5 +// All rights reserved.
   537.6 +// This component and the accompanying materials are made available
   537.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   537.8 +// which accompanies this distribution, and is available
   537.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  537.10 +//
  537.11 +// Initial Contributors:
  537.12 +// Nokia Corporation - initial contribution.
  537.13 +//
  537.14 +// Contributors:
  537.15 +//
  537.16 +// Description:
  537.17 +//
  537.18 +
  537.19 +
  537.20 +
  537.21 +/**
  537.22 + @file RHeaderField.h
  537.23 + @warning : This file contains Rose Model ID comments - please do not delete
  537.24 +*/
  537.25 +
  537.26 +#ifndef __RHEADERFIELD_H__
  537.27 +#define __RHEADERFIELD_H__
  537.28 +
  537.29 +// System includes
  537.30 +#include <e32base.h>
  537.31 +#include <http/thttphdrval.h>
  537.32 +#include <http/rhttppropertyset.h>
  537.33 +#include <http/rhttpheaders.h>
  537.34 +
  537.35 +// Forward declarations
  537.36 +class CHeaderField;
  537.37 +class THeaderFieldPartIter;
  537.38 +
  537.39 +
  537.40 +/**
  537.41 +The default chunk size for Raw data should be set to the average length of a header field when encoded in
  537.42 +plaintext.
  537.43 +@publishedAll
  537.44 +@released
  537.45 +*/
  537.46 +const TInt KDefaultRawChunkSize= 32;
  537.47 +
  537.48 +
  537.49 +//##ModelId=3B1E52A50396
  537.50 +class RHeaderField
  537.51 +/**
  537.52 +An proxy object for a single field in an HTTP header.  The class is used by
  537.53 +implementations of CHeaderCodec in order to manipulate the header at the part and
  537.54 +parameter level, or to obtain raw data, during a header encode/decode operation.
  537.55 +@publishedAll
  537.56 +@released
  537.57 +*/
  537.58 +	{
  537.59 +public: // methods
  537.60 +
  537.61 +	//##ModelId=3BA6004002BC
  537.62 +	RHeaderField(CHeaderField& aHeaderField);
  537.63 +
  537.64 +	IMPORT_C
  537.65 +	//##ModelId=3B1E52A503C0
  537.66 +	RStringF Name() const;
  537.67 +
  537.68 +	IMPORT_C
  537.69 +	//##ModelId=3B1E52A503BF
  537.70 +	THeaderFieldPartIter PartsL();
  537.71 +
  537.72 +	IMPORT_C
  537.73 +	//##ModelId=3B1E52A503B9
  537.74 +	void RawDataL(TPtrC8& aRawData);
  537.75 +
  537.76 +	IMPORT_C
  537.77 +	//##ModelId=3BA6004002B2
  537.78 +	RHTTPHeaders Collection();
  537.79 +
  537.80 +	IMPORT_C
  537.81 +	//##ModelId=3B1E52A503B6
  537.82 +	void SetPartL(CHeaderFieldPart* aPart, TInt aIndex);
  537.83 +
  537.84 +	IMPORT_C
  537.85 +	//##ModelId=3B1E52A503B4
  537.86 +	void BeginRawDataL(TInt aChunkSize = KDefaultRawChunkSize);
  537.87 +
  537.88 +	IMPORT_C
  537.89 +	//##ModelId=3B1E52A503AB
  537.90 +	void WriteRawDataL(const TDesC8& aData);
  537.91 +
  537.92 +	IMPORT_C
  537.93 +	//##ModelId=3B1E52A503AD
  537.94 +	void WriteRawDataL(TChar aData);
  537.95 +
  537.96 +	IMPORT_C
  537.97 +	//##ModelId=3B1E52A503AA
  537.98 +	void CommitRawData();
  537.99 +
 537.100 +private: // attributes
 537.101 +
 537.102 +	/** The internal representation of this header field
 537.103 +	*/
 537.104 +	//##ModelId=3B1E52A503A2
 537.105 +	CHeaderField& iHeaderField;
 537.106 +};
 537.107 +
 537.108 +inline RHeaderField::RHeaderField(CHeaderField& aHeaderField)
 537.109 +	: iHeaderField(aHeaderField)
 537.110 +	{
 537.111 +	}
 537.112 +
 537.113 +#endif // __CHEADERFIELD_H__
   538.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   538.2 +++ b/epoc32/include/mw/http/mhttpauthenticationcallback.h	Wed Mar 31 12:27:01 2010 +0100
   538.3 @@ -0,0 +1,87 @@
   538.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   538.5 +// All rights reserved.
   538.6 +// This component and the accompanying materials are made available
   538.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   538.8 +// which accompanies this distribution, and is available
   538.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  538.10 +//
  538.11 +// Initial Contributors:
  538.12 +// Nokia Corporation - initial contribution.
  538.13 +//
  538.14 +// Contributors:
  538.15 +//
  538.16 +// Description:
  538.17 +//
  538.18 +
  538.19 +
  538.20 +
  538.21 +/**
  538.22 + @file MHTTPAuthenticationCallback.h
  538.23 + @warning : This file contains Rose Model ID comments - please do not delete
  538.24 +*/
  538.25 +
  538.26 +#ifndef	__MHTTPAUTHENTICATIONCALLBACK_H__
  538.27 +#define	__MHTTPAUTHENTICATIONCALLBACK_H__ 
  538.28 +
  538.29 +// System includes
  538.30 +#include <uri8.h>
  538.31 +#include <stringpool.h>
  538.32 +#include <http/rhttpsession.h>
  538.33 +#include <http/cauthenticationfilterinterface.h>
  538.34 +
  538.35 +
  538.36 +//##ModelId=3B1E52A50151
  538.37 +class MHTTPAuthenticationCallback
  538.38 +/** 
  538.39 +The mixin that needs to be implemented if authentication is to be
  538.40 +supported. This supplies the username and password when they are
  538.41 +needed for authentication.
  538.42 +To use, subclass off this class and implement GetCredentialsL. To install
  538.43 +the class into a session, call InstallAuthenticationL.
  538.44 +@publishedAll
  538.45 +@released
  538.46 +*/
  538.47 +	{
  538.48 + public:
  538.49 +	/** Gets some credentials. Note that the first 3 parameters are
  538.50 +		informational and many clients may not have a use for
  538.51 +		them. Clients may want to display some or all of these
  538.52 +		parameters to the user, so that the user knows who they are
  538.53 +		giving their credentials to, and how securely they will be
  538.54 +		transmitted.
  538.55 +		@param aURI The URI being requested
  538.56 +		@param aRealm The realm being requested
  538.57 +		@param aAuthenticationType The type of authentication (basic or digest)
  538.58 +		@param aUsername The username is returned in this parameter. 
  538.59 +		The caller will close the returned string.
  538.60 +		@param aPassword The password is returned in this parameter
  538.61 +		The caller will close the returned string.
  538.62 +		@return True if credentials have been obtained. 
  538.63 +		@leave Anything. If this function leaves the transaction will be 
  538.64 +		failed. 
  538.65 +	*/
  538.66 +	//##ModelId=3B1E52A5015D
  538.67 +	virtual TBool GetCredentialsL(const TUriC8& aURI, RString aRealm, 
  538.68 +								  RStringF aAuthenticationType,
  538.69 +								  RString& aUsername, 
  538.70 +								  RString& aPassword) = 0;
  538.71 +
  538.72 +	/** Installs the callback into the session.
  538.73 +		Typicaly called from the implementation class's ConstructL().
  538.74 +		@pre The session is opened, but no transactions have been created on it
  538.75 +		@post The session supports authentication, and uses this API to
  538.76 +		get its credentials.
  538.77 +		@param aSession the session to install the filter into.
  538.78 +		@leave KErrNoMemory There was not enough memory.
  538.79 +	 */
  538.80 +	//##ModelId=3B1E52A5015B
  538.81 +	inline void InstallAuthenticationL(RHTTPSession aSession);
  538.82 +	};
  538.83 +
  538.84 +inline void MHTTPAuthenticationCallback::InstallAuthenticationL(RHTTPSession aSession)
  538.85 +	{
  538.86 +	CAuthenticationFilterInterface::InstallFilterL(aSession, this);
  538.87 +	}
  538.88 +
  538.89 +
  538.90 +#endif //	__MHTTPAUTHENTICATIONCALLBACK_H__
   539.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   539.2 +++ b/epoc32/include/mw/http/mhttpdatasupplier.h	Wed Mar 31 12:27:01 2010 +0100
   539.3 @@ -0,0 +1,135 @@
   539.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   539.5 +// All rights reserved.
   539.6 +// This component and the accompanying materials are made available
   539.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   539.8 +// which accompanies this distribution, and is available
   539.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  539.10 +//
  539.11 +// Initial Contributors:
  539.12 +// Nokia Corporation - initial contribution.
  539.13 +//
  539.14 +// Contributors:
  539.15 +//
  539.16 +// Description:
  539.17 +//
  539.18 +
  539.19 +
  539.20 +
  539.21 +/**
  539.22 + @file MHTTPDataSupplier.h
  539.23 + @warning : This file contains Rose Model ID comments - please do not delete
  539.24 +*/
  539.25 +
  539.26 +#ifndef	__MHTTPDATASUPPLIER_H__
  539.27 +#define	__MHTTPDATASUPPLIER_H__
  539.28 +
  539.29 +// System includes
  539.30 +#include <e32base.h>
  539.31 +
  539.32 +
  539.33 +//##ModelId=3C4C187903E5
  539.34 +class MHTTPDataSupplier
  539.35 +/** 
  539.36 +A data supplier - This class is used to deliver the response data
  539.37 +to the client, and is also used by the client to supply request
  539.38 +body data to HTTP in POST transactions. Data is supplied in a
  539.39 +number of parts. When a part is available it can be retreived
  539.40 +with GetNextDataPart. The returned descriptor will remain valid until
  539.41 +ReleaseData is called. 
  539.42 +
  539.43 +To use this class to supply POST data, you have a number of
  539.44 +options. If the post data needs to be URL Form encoded, you should
  539.45 +use CHTTPFormEncoder, which will do the encoding and interface to
  539.46 +the MHTTPDataSupplier for you. If you have all the data available,
  539.47 +return its length in OverallDataSize, and pass back all the data
  539.48 +from GetNextDataPart, returning ETrue to indicate that this is the
  539.49 +last part. 
  539.50 +
  539.51 +If you don't want to form all the data at once, but know how much
  539.52 +you'll eventualy have, return the total length from
  539.53 +OverallDataSize. When GetNextDataPart is first called, return the
  539.54 +first part. If GetNextDataPart is called again before ReleaseData,
  539.55 +you should still return the first part. Only when ReleaseData is
  539.56 +called should you move to the second part. If you don't know the
  539.57 +total size of the data, the procedure is the same but you should
  539.58 +return KErrNotFound from OverallDataSize.
  539.59 +
  539.60 +When the next part is available, clients should call
  539.61 +RHTTPTransaction::NotifyNewRequestBodyPartL to inform HTTP that
  539.62 +the new data is available. They can do this from ReleaseData if
  539.63 +more data is instantly available, or in some applications they may
  539.64 +need to call it some time later when the next part has been
  539.65 +assembled.
  539.66 +
  539.67 +Filter writers should note that the MHTTPDataSupplier interface is
  539.68 +designed to be used by 1 client, as 1 component needs to know when
  539.69 +to call ReleaseData(). However, filters can be written to
  539.70 +transform the data in some way. For instance, a filter could be
  539.71 +written to automaticaly handle a particular content encoding. When
  539.72 +this filter first receives a GotResponseBodyData, it should take a
  539.73 +copy of the response's body and replace the body with a
  539.74 +MHTTPDataSupplier supplied by the filter. The filter should then
  539.75 +receive the data from HTTP via the saved data supplier and give it
  539.76 +to the client via its own data supplier.
  539.77 +@publishedAll
  539.78 +@released
  539.79 +*/
  539.80 +	{
  539.81 + public:
  539.82 +	/** Obtain a data part from the supplier.  The data is guaranteed
  539.83 +		to survive until a call is made to ReleaseData().
  539.84 +		@param aDataPart - the data part
  539.85 +		@return ETrue if this is the last part. EFalse otherwise */
  539.86 +	//##ModelId=3C4C187A0026
  539.87 +	 virtual TBool GetNextDataPart(TPtrC8& aDataPart) = 0;
  539.88 +
  539.89 +	/** Release the current data part being held at the data
  539.90 +		supplier.  This call indicates to the supplier that the part
  539.91 +		is no longer needed, and another one can be supplied, if
  539.92 +		appropriate.  */
  539.93 +	//##ModelId=3C4C187A0025
  539.94 +	virtual void ReleaseData() = 0;
  539.95 +
  539.96 +	/** Obtain the overall size of the data being supplied, if known
  539.97 +		to the supplier.  Where a body of data is supplied in several
  539.98 +		parts this size will be the sum of all the part sizes. If
  539.99 +		the size is not known, KErrNotFound is returned; in this case
 539.100 +		the client must use the return code of GetNextDataPart to find
 539.101 +		out when the data is complete.
 539.102 +
 539.103 +		@return A size in bytes, or KErrNotFound if the size is not known.  */
 539.104 +	//##ModelId=3C4C187A001D
 539.105 +	virtual TInt OverallDataSize() = 0;
 539.106 +
 539.107 +	/** Reset the data supplier.  This indicates to the data supplier that it should
 539.108 +		return to the first part of the data.  This could be used in a situation where
 539.109 +		the data consumer has encountered an error and needs the data to be supplied
 539.110 +		afresh.  Even if the last part has been supplied (i.e. GetNextDataPart has
 539.111 +		returned ETrue), the data supplier should reset to the first part.
 539.112 +	
 539.113 +		If the supplier cannot reset it should return an error code; otherwise it should
 539.114 +		return KErrNone, where the reset will be assumed to have succeeded*/
 539.115 +	//##ModelId=3C4C187A001C
 539.116 +	virtual TInt Reset() = 0;
 539.117 +
 539.118 +private:
 539.119 +	// Some reserved methods for future expansion (e.g. better support
 539.120 +	// for ZCD)
 539.121 +	//##ModelId=3C4C187A001B
 539.122 +	inline virtual void MHDS_Reserved1();
 539.123 +	//##ModelId=3C4C187A0012
 539.124 +	inline virtual void MHDS_Reserved2();
 539.125 +	//##ModelId=3C4C187A0011
 539.126 +	inline virtual void MHDS_Reserved3();
 539.127 +	};
 539.128 +
 539.129 +inline void MHTTPDataSupplier::MHDS_Reserved1()
 539.130 +	{}
 539.131 +
 539.132 +inline void MHTTPDataSupplier::MHDS_Reserved2()
 539.133 +	{}
 539.134 +
 539.135 +inline void MHTTPDataSupplier::MHDS_Reserved3()
 539.136 +	{}
 539.137 +
 539.138 +#endif // __MHTTPDATASUPPLIER_H__ 
   540.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   540.2 +++ b/epoc32/include/mw/http/mhttpfilter.h	Wed Mar 31 12:27:01 2010 +0100
   540.3 @@ -0,0 +1,95 @@
   540.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   540.5 +// All rights reserved.
   540.6 +// This component and the accompanying materials are made available
   540.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   540.8 +// which accompanies this distribution, and is available
   540.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  540.10 +//
  540.11 +// Initial Contributors:
  540.12 +// Nokia Corporation - initial contribution.
  540.13 +//
  540.14 +// Contributors:
  540.15 +//
  540.16 +// Description:
  540.17 +//
  540.18 +
  540.19 +
  540.20 +
  540.21 +/**
  540.22 + @file MHTTPFilter.h
  540.23 + @warning : This file contains Rose Model ID comments - please do not delete
  540.24 +*/
  540.25 +
  540.26 +#ifndef __MHTTPFILTER_H__
  540.27 +#define __MHTTPFILTER_H__
  540.28 +
  540.29 +// System includes
  540.30 +#include <e32std.h>
  540.31 +#include <http/mhttpfilterbase.h>
  540.32 +#include <http/rhttpsession.h>
  540.33 +#include <http/thttpfilterhandle.h>
  540.34 +
  540.35 +
  540.36 +//##ModelId=3C4C187D03E1
  540.37 +class MHTTPFilter : public MHTTPFilterBase
  540.38 +/** 
  540.39 +A HTTP filter 
  540.40 +@publishedAll
  540.41 +@released
  540.42 +*/
  540.43 +	{
  540.44 + public:
  540.45 +	/** Called when the filter is being removed from a session's filter queue.
  540.46 +		@param aSession The session it's being removed from
  540.47 +		@param aHandle The filter handle. Complex filters may need to 
  540.48 +		refer to this to keep track of which particular registration is
  540.49 +		being unloaded.
  540.50 +	*/
  540.51 +	//##ModelId=3C4C187E0011
  540.52 +	IMPORT_C virtual void MHFUnload(RHTTPSession aSession, 
  540.53 +									THTTPFilterHandle aHandle);
  540.54 +
  540.55 +	/** Called when the filter is being added to the session's filter queue.
  540.56 +		@param aSession The session it's being added to.
  540.57 +		@param aHandle The filter handle. Complex filters may need to keep
  540.58 +		track of this, for instance if generating events in response to
  540.59 +		external stimuli
  540.60 +	*/
  540.61 +	//##ModelId=3C4C187E000E
  540.62 +	IMPORT_C virtual void MHFLoad(RHTTPSession aSession,
  540.63 +								  THTTPFilterHandle aHandle);
  540.64 + public:
  540.65 +	/** 
  540.66 +		@enum TPositions
  540.67 +		Default filter positions
  540.68 +	 */
  540.69 +	enum TPositions
  540.70 +		{
  540.71 +		/** The Protocol Handler :- At the base of the filter chain
  540.72 +			and nearest to the transport layer */
  540.73 +		EProtocolHandler	= 0,
  540.74 +		// Filters that should be downstream of any status-code related processing
  540.75 +		/** Filters to handle caching behaviours.*/
  540.76 +		ECache				= 100,
  540.77 +		/** Filters to handle particular status codes.
  540.78 +			e.g.Redirection and authentication. */
  540.79 +		EStatusCodeHandler	= 200,
  540.80 +		/**	The UAProf filter. */
  540.81 +		EUAProf				= 250,
  540.82 +		/** The cookie filter, and other filters that don't need to be
  540.83 +			concerned with resubmitting of transactions due to things
  540.84 +			like redirection. */
  540.85 +		ECookies			= 300,
  540.86 +		/** The validation filter and any other final tidy up or
  540.87 +            initial preprocessing of transactions*/
  540.88 +		ETidyUp = 400,
  540.89 +		/** Client filters that assume all standard behaviour is
  540.90 +            already there.*/
  540.91 +		EClientFilters		= 500,
  540.92 +		/** The client :- At the head of the filter chain : 
  540.93 +			No position above this must be used. */
  540.94 +		EClient				= 1000
  540.95 +		};
  540.96 +	}; 
  540.97 +
  540.98 +#endif // __MHTTPFILTER_H__
   541.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   541.2 +++ b/epoc32/include/mw/http/mhttpfilterbase.h	Wed Mar 31 12:27:01 2010 +0100
   541.3 @@ -0,0 +1,88 @@
   541.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   541.5 +// All rights reserved.
   541.6 +// This component and the accompanying materials are made available
   541.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   541.8 +// which accompanies this distribution, and is available
   541.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  541.10 +//
  541.11 +// Initial Contributors:
  541.12 +// Nokia Corporation - initial contribution.
  541.13 +//
  541.14 +// Contributors:
  541.15 +//
  541.16 +// Description:
  541.17 +//
  541.18 +
  541.19 +
  541.20 +
  541.21 +/**
  541.22 + @file MHTTPFilterBase.h
  541.23 + @warning : This file contains Rose Model ID comments - please do not delete
  541.24 +*/
  541.25 +
  541.26 +#ifndef	__MHTTPFILTERBASE_H__
  541.27 +#define	__MHTTPFILTERBASE_H__ 
  541.28 +
  541.29 +// System includes
  541.30 +#include <e32std.h>
  541.31 +
  541.32 +// Forward declarations
  541.33 +class RHTTPTransaction;
  541.34 +class THTTPEvent;
  541.35 +class THTTPSessionEvent;
  541.36 +
  541.37 +
  541.38 +//##ModelId=3A914DF9034F
  541.39 +class MHTTPFilterBase
  541.40 +/** 
  541.41 +A HTTP Filter. This is the base class for normal filters
  541.42 +(MHTTPFilter) which adds an unload function, and
  541.43 +MHTTPTransactionCallback, which doesn't add an unload function.  
  541.44 +@publishedAll
  541.45 +@released
  541.46 +*/
  541.47 +	{
  541.48 +public:
  541.49 +	/** Called when the filter's registration conditions are satisfied for events that
  541.50 +		occur on a transaction. Any Leaves must be handled by the appropriate MHFRunError.
  541.51 +		Note that this function is not allowed to leave if called with
  541.52 +		certain events. @see THTTPEvent
  541.53 +		@param aTransaction The transaction that the event has occurred on.
  541.54 +		@param aEvent The event that has occurred.
  541.55 +	*/
  541.56 +	//##ModelId=3A914DF9035D
  541.57 +	IMPORT_C virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
  541.58 +
  541.59 +	/** Called when the filters registration conditions are satisfied for events that occur
  541.60 +		on the session. Any leaves must be handled by the appropriate MHFRunError.
  541.61 +		@param aEvent The session event that has occured.
  541.62 +	*/
  541.63 +	//##ModelId=3C4C37D401C1
  541.64 +	IMPORT_C virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent);
  541.65 +
  541.66 +	/** Called when RunL leaves from a transaction event. This works in the same
  541.67 +		way as CActve::RunError; return KErrNone if you have handled the error.
  541.68 +		If you don't completely handle the error, a panic will occur.
  541.69 +		@param aError The leave code that RunL left with.
  541.70 +		@param aTransaction The transaction that was being processed.
  541.71 +		@param aEvent The Event that was being processed.
  541.72 +		@return KErrNone if the error has been cancelled or the code
  541.73 +		of the continuing error otherwise.
  541.74 +	*/
  541.75 +	//##ModelId=3A914DF90359
  541.76 +	IMPORT_C virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent);
  541.77 +
  541.78 +	/** Called when MHFRunL leaves from a session event. This works in the same
  541.79 +		way as CActve::RunError
  541.80 +		If you don't completely handle the error, a panic will occur.
  541.81 +		@param aError The leave code that RunL left with.
  541.82 +		@param aEvent The Event that was being processed.
  541.83 +		@return KErrNone if the error has been cancelled or the code
  541.84 +		of the continuing error otherwise.	
  541.85 +	*/
  541.86 +	//##ModelId=3C4C37D302C4
  541.87 +	IMPORT_C virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent);
  541.88 + 	};
  541.89 +
  541.90 +
  541.91 +#endif //	 __MHTTPFILTERBASE_H__
   542.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   542.2 +++ b/epoc32/include/mw/http/mhttpfiltercreationcallback.h	Wed Mar 31 12:27:01 2010 +0100
   542.3 @@ -0,0 +1,57 @@
   542.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   542.5 +// All rights reserved.
   542.6 +// This component and the accompanying materials are made available
   542.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   542.8 +// which accompanies this distribution, and is available
   542.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  542.10 +//
  542.11 +// Initial Contributors:
  542.12 +// Nokia Corporation - initial contribution.
  542.13 +//
  542.14 +// Contributors:
  542.15 +//
  542.16 +// Description:
  542.17 +//
  542.18 +
  542.19 +
  542.20 +
  542.21 +/**
  542.22 + @file MHTTPFilterCreationCallback.h
  542.23 + @warning : This file contains Rose Model ID comments - please do not delete
  542.24 +*/
  542.25 +
  542.26 +#ifndef __MHTTPFILTERCREATIONCALLBACK_H__
  542.27 +#define __MHTTPFILTERCREATIONCALLBACK_H__
  542.28 +
  542.29 +// Forward declarations
  542.30 +class TFilterConfigurationIterator;
  542.31 +
  542.32 +
  542.33 +//##ModelId=3C4C0F450132
  542.34 +class MHTTPFilterCreationCallback
  542.35 +/**
  542.36 +This class serves as a pure virtual interface required as a session callback to the client
  542.37 +when the client requires to configure the filters that are installed. The session calls the
  542.38 +method in the interface when the construction of the session is complete. The callback passes
  542.39 +an object of CFilterConfigurationIterator that allows the client to configure the filters that
  542.40 +are installed.
  542.41 +@publishedAll
  542.42 +@released
  542.43 +*/
  542.44 +	{
  542.45 +public: // Methods
  542.46 +	/**
  542.47 +	@fn				ConfigureSessionFiltersL(TFilterConfigurationIterator* aFilterConfigIter) = 0
  542.48 +	Intended Usage:	Pure virtual that is called by the session when the session construction
  542.49 +					is complete. This passes a CFilterConfigurationIterator back to the client
  542.50 +					which allows the client to install or install selected filters.
  542.51 +	@param			aFilterConfigIter Pointer to the filter configuration iterator. Ownership of
  542.52 +					CFilterConfigurationIterator remains with the session and is not transfered
  542.53 +	@pre 			The session has been constructed
  542.54 +	@post			The filters that are installed are have been configured by the client
  542.55 +	*/
  542.56 +	//##ModelId=3C4C0F450150
  542.57 +	virtual void ConfigureSessionFiltersL(TFilterConfigurationIterator* aFilterConfigIter) = 0;
  542.58 +	};
  542.59 +
  542.60 +#endif // __MHTTPFILTERCREATIONCALLBACK_H__
   543.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   543.2 +++ b/epoc32/include/mw/http/mhttpsessioneventcallback.h	Wed Mar 31 12:27:01 2010 +0100
   543.3 @@ -0,0 +1,62 @@
   543.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   543.5 +// All rights reserved.
   543.6 +// This component and the accompanying materials are made available
   543.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   543.8 +// which accompanies this distribution, and is available
   543.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  543.10 +//
  543.11 +// Initial Contributors:
  543.12 +// Nokia Corporation - initial contribution.
  543.13 +//
  543.14 +// Contributors:
  543.15 +//
  543.16 +// Description:
  543.17 +//
  543.18 +
  543.19 +
  543.20 +
  543.21 +/**
  543.22 + @file MHTTPSessionEventCallback.h
  543.23 + @warning : This file contains Rose Model ID comments - please do not delete
  543.24 +*/
  543.25 +
  543.26 +#ifndef	__MHTTPSESSIONEVENTCALLBACK_H__
  543.27 +#define	__MHTTPSESSIONEVENTCALLBACK_H__
  543.28 +
  543.29 +// System includes
  543.30 +#include <e32std.h>
  543.31 +#include <http/rhttptransaction.h>
  543.32 +#include <http/thttpevent.h>
  543.33 +
  543.34 +
  543.35 +//##ModelId=3C4C0F460242
  543.36 +class MHTTPSessionEventCallback
  543.37 +/**
  543.38 +The per-session callback for receiving session event callbacks.
  543.39 +@publishedAll
  543.40 +@released
  543.41 +*/
  543.42 +    {
  543.43 +public:	// Methods
  543.44 +
  543.45 +	/** Called when the filters registration conditions are satisfied for events that occur
  543.46 +		on the session. Any leaves must be handled by the appropriate MHFRunError.
  543.47 +		@param aEvent The session event that has occured.
  543.48 +	*/
  543.49 +	//##ModelId=3C4C0F460262
  543.50 +	virtual void MHFSessionRunL(const THTTPSessionEvent& aEvent) =0;
  543.51 +
  543.52 +	/** Called when MHFRunL leaves from a session event. This works in the same
  543.53 +		way as CActve::RunError
  543.54 +		If you don't completely handle the error, a panic will occur.
  543.55 +		@param aError The leave code that RunL left with.
  543.56 +		@param aEvent The Event that was being processed.
  543.57 +		@return KErrNone if the error has been cancelled or the code
  543.58 +		of the continuing error otherwise.	
  543.59 +	*/
  543.60 +	//##ModelId=3C4C0F460256
  543.61 +	virtual TInt MHFSessionRunError(TInt aError, const THTTPSessionEvent& aEvent) =0;
  543.62 +    };
  543.63 +
  543.64 +
  543.65 +#endif //	__MHTTPSESSIONEVENTCALLBACK_H__
   544.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   544.2 +++ b/epoc32/include/mw/http/mhttptransactioncallback.h	Wed Mar 31 12:27:01 2010 +0100
   544.3 @@ -0,0 +1,67 @@
   544.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   544.5 +// All rights reserved.
   544.6 +// This component and the accompanying materials are made available
   544.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   544.8 +// which accompanies this distribution, and is available
   544.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  544.10 +//
  544.11 +// Initial Contributors:
  544.12 +// Nokia Corporation - initial contribution.
  544.13 +//
  544.14 +// Contributors:
  544.15 +//
  544.16 +// Description:
  544.17 +//
  544.18 +
  544.19 +
  544.20 +
  544.21 +/**
  544.22 + @file MHTTPTransactionCallback.h
  544.23 + @warning : This file contains Rose Model ID comments - please do not delete
  544.24 +*/
  544.25 +
  544.26 +#ifndef	__MHTTPTRANSACTIONCALLBACK_H__
  544.27 +#define __MHTTPTRANSACTIONCALLBACK_H__
  544.28 +
  544.29 +// System includes
  544.30 +#include <e32std.h>
  544.31 +#include <http/rhttptransaction.h>
  544.32 +#include <http/thttpevent.h>
  544.33 +
  544.34 +
  544.35 +//##ModelId=3C4C1886022B
  544.36 +class MHTTPTransactionCallback
  544.37 +/** 
  544.38 +The per-transaction callback for receiving HTTP events.
  544.39 +@publishedAll
  544.40 +@released
  544.41 +*/
  544.42 +	{
  544.43 +public:	// Methods
  544.44 +
  544.45 +	/** Called when the filter's registration conditions are satisfied for events that
  544.46 +		occur on a transaction.
  544.47 +		Note that this function is not allowed to leave if called with
  544.48 +		certain events. @see THTTPEvent
  544.49 +		@param aTransaction The transaction that the event has occurred on.
  544.50 +		@param aEvent The event that has occurred.
  544.51 +		@leave Any Leaves must be handled by the appropriate MHFRunError.
  544.52 +	*/
  544.53 +	//##ModelId=3C4C1886024C
  544.54 +	virtual void MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent) =0;
  544.55 +
  544.56 +	/** Called when RunL leaves from a transaction event. This works in the same
  544.57 +		way as CActve::RunError; return KErrNone if you have handled the error.
  544.58 +		If you don't completely handle the error, a panic will occur.
  544.59 +		@param aError The leave code that RunL left with.
  544.60 +		@param aTransaction The transaction that was being processed.
  544.61 +		@param aEvent The Event that was being processed.
  544.62 +		@return KErrNone if the error has been cancelled or the code
  544.63 +		of the continuing error otherwise.
  544.64 +	*/
  544.65 +	//##ModelId=3C4C1886023F
  544.66 +	virtual TInt MHFRunError(TInt aError, RHTTPTransaction aTransaction, const THTTPEvent& aEvent) =0;
  544.67 +
  544.68 +	}; 
  544.69 +
  544.70 +#endif //	__MHTTPTRANSACTIONCALLBACK_H__
   545.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   545.2 +++ b/epoc32/include/mw/http/rhttpconnectioninfo.h	Wed Mar 31 12:27:01 2010 +0100
   545.3 @@ -0,0 +1,119 @@
   545.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   545.5 +// All rights reserved.
   545.6 +// This component and the accompanying materials are made available
   545.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   545.8 +// which accompanies this distribution, and is available
   545.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  545.10 +//
  545.11 +// Initial Contributors:
  545.12 +// Nokia Corporation - initial contribution.
  545.13 +//
  545.14 +// Contributors:
  545.15 +//
  545.16 +// Description:
  545.17 +//
  545.18 +
  545.19 +
  545.20 +
  545.21 +/**
  545.22 + @file RHTTPConnectionInfo.h
  545.23 + @warning : This file contains Rose Model ID comments - please do not delete
  545.24 +*/
  545.25 +
  545.26 +#ifndef	__RHTTPCONNECTIONINFO_H__
  545.27 +#define	__RHTTPCONNECTIONINFO_H__ 
  545.28 +
  545.29 +// System includes 
  545.30 +#include <e32std.h>
  545.31 +#include <stringpool.h>
  545.32 +#include <http/rhttppropertyset.h>
  545.33 +
  545.34 +//##ModelId=3C4C187A01CA
  545.35 +class RHTTPConnectionInfo : public RHTTPPropertySet
  545.36 +/**
  545.37 +The RHTTPConnectionInfo is used for setting/getting 
  545.38 +values used for setting up a connection over a protocol.  All methods are inherited
  545.39 +directly from RHTTPPropertySet.
  545.40 +
  545.41 +To lookup/change any of the following properties, use 
  545.42 +RHTTPPropertySet::Property(...) and RHTTPPropertySet::SetPropertyL(...) 
  545.43 +
  545.44 +To remove properties, use RHTTPPropertySet::RemoveProperty(...) for a named property,
  545.45 +or RHTTPPropertySet::RemoveAllProperties() for all.
  545.46 +
  545.47 +The following values are currently defined. Note that new values
  545.48 +could be added by individual filters. In general, properties
  545.49 +should be defined before the first transaction is created; filters
  545.50 +are not obliged to check with the connection info if the values
  545.51 +have changed after this point.
  545.52 +
  545.53 +HTTP::EProxyUsage (default HTTP::EDoNotUseProxy) (HTTP::EDoNotUseProxy | HTTP::EUseProxy)
  545.54 +
  545.55 +HTTP::EProxyAddress (A Uri for the Proxy server. Should include the port number
  545.56 +if it is not the default of 8080)
  545.57 +
  545.58 +HTTP::EMaxNumTransportHandlers (default 4)
  545.59 +
  545.60 +HTTP::EMaxNumTransPerTranspHndlr (default 5)
  545.61 +
  545.62 +HTTP::EHTTPVersion	(default HTTP::EHttp11) (HTTP::EHttp11 | HTTP::EHttp10)
  545.63 +
  545.64 +HTTP::EProtocol (default, and currently only defined value is HTTP::EHTTP)
  545.65 +
  545.66 +HTTP::EHttpBatching (default HTTP::EDoNotEnableBatching) (HTTP::EDoNotEnableBatching | HTTP::EEnableBatching)
  545.67 +
  545.68 +HTTP::EBatchingBufferSize (default 1400)
  545.69 +
  545.70 +HTTP Client can create a connection and set its own preferences, instead of using the 
  545.71 +default connection preferences specified in COMMS Database. In such cases, the client 
  545.72 +is responsible for creating the RSocketServ session and RConnection using
  545.73 +RSocketServ::Connect(..) and RConnection::Open(..). 	   
  545.74 +Client must also start the connection using RConnection::Start(..) and pass the 
  545.75 +connection preferences to the function using TConnPref.
  545.76 +The following session properties should then be set by the client.
  545.77 +
  545.78 +HTTP::EHttpSocketServ (Handle to RSocketServ session, which is the value obtained 
  545.79 +                       by calling RSocketServ::Handle())
  545.80 +
  545.81 +HTTP::EHttpSocketConnection (Reference to the RConnection object, obtained from 
  545.82 +                             reinterpret_cast(TInt, &connection))
  545.83 +
  545.84 +The HTTP Client can also specify what action should be take if during a secure 
  545.85 +handshakes the server cert cannot be trusted. The choice is for the handshake
  545.86 +to automatically cancelled or for a dialog to be raised and the user given the
  545.87 +option of continuing with the handshake or cancelling it. The following session
  545.88 +property should be used to specify the behaviour.
  545.89 +
  545.90 +HTTP::ESecureDialog (default HTTP::EDialogPrompt) (HTTP::EDialogPrompt | EDialogNoPrompt)
  545.91 +
  545.92 +The HTTP Client can specify the socket shutdown mode when the session is closing. At the time
  545.93 +of closing the session, any outstanding transactions on open sockets can specify that the
  545.94 +socket shutdown mode be set to immediate. The following property can be used to enable this
  545.95 +behaviour.
  545.96 +
  545.97 +HTTP::ESocketShutdownMode (default HTTP::ESocketShutdownNormal) (HTTP::ESocketShutdownNormal | HTTP::ESocketShutdownImmediate
  545.98 +
  545.99 +The HTTP Client can limit the number of transactions that it will send down one connection when
 545.100 +using pipelining. The following value should be set to an integer. When set any outstanding transaction
 545.101 +that exceed this number will either be sent separately down a different connection or will
 545.102 +be queued until a space becomes available.
 545.103 +
 545.104 +HTTP::EMaxNumTransactionsToPipeline (default KMaxTInt) (Integer)
 545.105 +
 545.106 +The session ID is an optional non-negative integer which is attached to the session and any sockets 
 545.107 +it creates. The session ID will be set on any sockets created by using RSocket::SetOpt() with
 545.108 +the level KSOLHttpSessionInfo and the name KSOHttpSessionId (defined in httpsocketconstants.h).
 545.109 +The session ID can be retrieved in a Flow Hook by implementing MIp6Hook::SetFlowOption() to 
 545.110 +look for the aforementioned option level and name. 
 545.111 +@see MIp6Hook
 545.112 +
 545.113 +HTTP::ESessionId (no default) (Integer)
 545.114 +
 545.115 +
 545.116 +@publishedAll
 545.117 +@released
 545.118 +*/
 545.119 +	{
 545.120 +	};
 545.121 +
 545.122 +#endif // __RHTTPCONNECTIONINFO_H__
   546.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   546.2 +++ b/epoc32/include/mw/http/rhttpfiltercollection.h	Wed Mar 31 12:27:01 2010 +0100
   546.3 @@ -0,0 +1,91 @@
   546.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   546.5 +// All rights reserved.
   546.6 +// This component and the accompanying materials are made available
   546.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   546.8 +// which accompanies this distribution, and is available
   546.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  546.10 +//
  546.11 +// Initial Contributors:
  546.12 +// Nokia Corporation - initial contribution.
  546.13 +//
  546.14 +// Contributors:
  546.15 +//
  546.16 +// Description:
  546.17 +//
  546.18 +
  546.19 +
  546.20 +
  546.21 +/**
  546.22 + @file RHTTPFilterCollection.h
  546.23 + @warning : This file contains Rose Model ID comments - please do not delete
  546.24 +*/
  546.25 +
  546.26 +#ifndef	__RHTTPFILTERCOLLECTION_H__
  546.27 +#define	__RHTTPFILTERCOLLECTION_H__ 
  546.28 +
  546.29 +// System includes
  546.30 +#include <e32std.h>
  546.31 +#include <http/thttpevent.h>
  546.32 +#include <stringpool.h>
  546.33 +
  546.34 +// Forward declarations
  546.35 +class CHTTPSession;
  546.36 +class RHTTPSession;
  546.37 +class MHTTPFilter;
  546.38 +class THTTPFilterIterator;
  546.39 +
  546.40 +
  546.41 +//##ModelId=3C4C187C02B3
  546.42 +class RHTTPFilterCollection
  546.43 +/** 
  546.44 +A Handle on the filter collection in a session. It provides
  546.45 +facilities for adding and deleting filters and for querying what
  546.46 +filters are installed. 
  546.47 +@publishedAll
  546.48 +@released
  546.49 +@see RHTTPSession::FilterCollection 
  546.50 +@see MHTTPFilter::TPositions
  546.51 +*/
  546.52 +	{
  546.53 + public:
  546.54 +	//##ModelId=3C4C187C02F9
  546.55 +	inline RHTTPFilterCollection();
  546.56 +
  546.57 +	//##ModelId=3C4C187C02E5
  546.58 +	IMPORT_C void AddFilterL(MHTTPFilter& aFilter, THTTPEvent aEvent,
  546.59 +							 RStringF aHeader, TInt aStatusCode, 
  546.60 + 							 TInt aPosition, RStringF aName);
  546.61 +
  546.62 +
  546.63 +	//##ModelId=3C4C187C02F1
  546.64 +	IMPORT_C void AddFilterL(MHTTPFilter& aFilter, THTTPEvent aEvent, 
  546.65 + 							 TInt aPosition, RStringF aName);
  546.66 +
  546.67 +	//##ModelId=3C4C187C02DF
  546.68 +	IMPORT_C TBool CanChangeFilters() const;
  546.69 +
  546.70 +	//##ModelId=3C4C187C02DD
  546.71 +	IMPORT_C void RemoveFilter(RStringF aFilter);
  546.72 +
  546.73 +	//##ModelId=3C4C187C02DB
  546.74 +	IMPORT_C THTTPFilterIterator Query(RStringF aName = RStringF());
  546.75 +
  546.76 +	//##ModelId=3C4C187C02D1
  546.77 +	inline RHTTPSession Session() const;
  546.78 +
  546.79 + private:
  546.80 +	friend class CHTTPSession;
  546.81 +	friend class RHTTPSession;
  546.82 +
  546.83 +	//##ModelId=3C4C187C02C9
  546.84 +	CHTTPSession* iImplementation;
  546.85 +	};
  546.86 +
  546.87 +/** Constructor
  546.88 +  */
  546.89 +inline RHTTPFilterCollection::RHTTPFilterCollection()
  546.90 +		: iImplementation(NULL)
  546.91 +	{
  546.92 +	}
  546.93 +
  546.94 +#endif //	__RHTTPFILTERCOLLECTION_H__
   547.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   547.2 +++ b/epoc32/include/mw/http/rhttpheaders.h	Wed Mar 31 12:27:01 2010 +0100
   547.3 @@ -0,0 +1,214 @@
   547.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   547.5 +// All rights reserved.
   547.6 +// This component and the accompanying materials are made available
   547.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   547.8 +// which accompanies this distribution, and is available
   547.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  547.10 +//
  547.11 +// Initial Contributors:
  547.12 +// Nokia Corporation - initial contribution.
  547.13 +//
  547.14 +// Contributors:
  547.15 +//
  547.16 +// Description:
  547.17 +//
  547.18 +
  547.19 +
  547.20 +
  547.21 +/**
  547.22 + @file RHTTPHeaders.h
  547.23 + @warning : This file contains Rose Model ID comments - please do not delete
  547.24 +*/
  547.25 +
  547.26 +#ifndef	__RHTTPHEADERS_H__
  547.27 +#define	__RHTTPHEADERS_H__
  547.28 +
  547.29 +// System includes
  547.30 +#include <http/thttphdrfielditer.h>
  547.31 +#include <http/thttphdrval.h>
  547.32 +
  547.33 +
  547.34 +//##ModelId=3C4C1880001A
  547.35 +class RHTTPHeaders
  547.36 +/** 
  547.37 +The collection of headers (or more correctly, header fields)
  547.38 +associated with a message. Header (fields) can be created, read and
  547.39 +modified. They may be composed of several parts (by repeated
  547.40 +invocations of API methods, see below) and may be assigned one or
  547.41 +more parameters.  Individual field parts and parameters take
  547.42 +values described using THTTPHdrVal.
  547.43 +@publishedAll
  547.44 +@released
  547.45 +@see RHTTPMessage
  547.46 +@see THTTPHdrVal
  547.47 +*/
  547.48 +	{
  547.49 + public:
  547.50 +	/** Default constructor
  547.51 +	*/
  547.52 +	//##ModelId=3C4C18800088
  547.53 +	inline RHTTPHeaders();
  547.54 +
  547.55 +	/**Getter methods
  547.56 +		Methods for reading data.
  547.57 +	*/
  547.58 +	//@{
  547.59 +	/** Obtain the number of parts in the named header field's value,
  547.60 +		Simple headers are created with a single part following one
  547.61 +		call to SetFieldL. Subsequent calls to SetFieldL create
  547.62 +		additional parts if the field exists already.
  547.63 +		@leave KErrNoMemory
  547.64 +		@param aFieldName The header name
  547.65 +		@return The number of parts, or zero if the field does not exist.  */
  547.66 +	//##ModelId=3C4C18800081
  547.67 +	IMPORT_C TInt FieldPartsL(RStringF aFieldName) const;
  547.68 +
  547.69 +	/** Obtain the named header field's value. The index
  547.70 +		of a part within the field must be specified. Parts are indexed
  547.71 +		from 0 and fields with only one part return the entire field for index 0
  547.72 +		@param aFieldName The header name
  547.73 +		@param aPartIdx The index of the part
  547.74 +		@param aHeaderValue The header field value
  547.75 +		@return An error condition. Returns KErrNotFound if there is not  a field with the 
  547.76 +				specifed field name
  547.77 +	*/
  547.78 +	//##ModelId=3C4C18800079
  547.79 +	IMPORT_C TInt GetField(RStringF aFieldName, 
  547.80 +								  TInt aPartIdx, THTTPHdrVal& aHeaderValue) const;
  547.81 +
  547.82 +	/** Obtain an Raw representation of the named header
  547.83 +		field's value.  Note that general client use of this method is
  547.84 +		strongly discouraged since it exposes the Raw representation of particular headers.  
  547.85 +		However it may be needed for some cases where received headers could not be
  547.86 +		decoded by HTTP.  It will normally be used internally when
  547.87 +		preparing header data to be transmitted with a request.
  547.88 +		Note that this API may not return the field values for all the headers.
  547.89 +		@param aFieldName The field name, e.g, 'Content-Type'
  547.90 +		@param aRawFieldData The field's data content, in an appropriate Raw form 
  547.91 +		@return An error condition. Returns KErrNotFound if there is not  a field with the 
  547.92 +				specifed field name
  547.93 +	*/
  547.94 +	//##ModelId=3C4C18800076
  547.95 +	IMPORT_C TInt GetRawField(RStringF aFieldName, 
  547.96 +							   TPtrC8& aRawFieldData) const;
  547.97 +
  547.98 +	/** Obtain the value of a named parameter, associated with the
  547.99 +		named header field.  An optional index to a part within the
 547.100 +		header field may be supplied, if not it is assumed that it is
 547.101 +		the first part.
 547.102 +		@param aFieldName The header name
 547.103 +		@param aParamName The parameter name
 547.104 +		@param aReturn The returned value. Note that this
 547.105 +		must be Copy()d by the caller, if it wants to keep the value.
 547.106 +		@param aPartIdx The optional index of the part
 547.107 +		@return An error condition. Returns KErrNotFound if there is not  a field with the 
 547.108 +				specifed field name  */
 547.109 +	//##ModelId=3C4C1880006C
 547.110 +	IMPORT_C TInt GetParam(RStringF aFieldName, 
 547.111 +								  RStringF aParamName, 
 547.112 +								  THTTPHdrVal& aReturn,
 547.113 +								  TInt aPartIdx = 0) const;
 547.114 +
 547.115 +	/** Access the fields within this header collection, via an
 547.116 +		iterator.  Each application of the iterator returns the name
 547.117 +		of the next field type.  This may then be accessed via
 547.118 +		RHTTPHeaders methods.
 547.119 +		@return The iterator.  */
 547.120 +	//##ModelId=3C4C1880006B
 547.121 +	IMPORT_C THTTPHdrFieldIter Fields() const;
 547.122 +	//@}
 547.123 +
 547.124 +	/** Setter Methods
 547.125 +		Methods for writing data.
 547.126 +	*/
 547.127 +	//@{
 547.128 +	/** Set a named field in the header.  On the first instance that
 547.129 +		this API method is used for a given field name, the first will
 547.130 +		be created.  On subsequent calls, the same field will be
 547.131 +		extended to have several parts, with a new part created to
 547.132 +		hold the supplied value.
 547.133 +		@param aFieldName The field name, e.g, 'Content-Type'
 547.134 +		@param aFieldValue The field value, e.g. 'text/html' */
 547.135 +	//##ModelId=3C4C18800060
 547.136 +	IMPORT_C void SetFieldL(RStringF aFieldName, THTTPHdrVal aFieldValue);
 547.137 +
 547.138 +	/** Set a named field in the header, and associate with it the
 547.139 +		supplied parameter. If the field doesn't already exist it will
 547.140 +		be created along with a parameter; if it does exist, then a
 547.141 +		new part will be created along with the parameter.
 547.142 +		@param aFieldName The field name, e.g. 'Accept'
 547.143 +		@param aFieldValue The field value. e.g. 'text/plain'
 547.144 +		@param aParamName The parameter name, e.g. 'q'
 547.145 +		@param aParamValue The parameter value, e.g. '0.3' */
 547.146 +	//##ModelId=3C4C18800063
 547.147 +	IMPORT_C void SetFieldL(RStringF aFieldName, THTTPHdrVal aFieldValue,
 547.148 +							RStringF aParamName, THTTPHdrVal aParamValue);
 547.149 +
 547.150 +	/** Set a parameter in an existing header. 
 547.151 +		@param aFieldName The field name, e.g. 'Accept'
 547.152 +		@param aPartIdx The part of the header to add the parameter to
 547.153 +		@param aParamName The parameter name, e.g. 'q'
 547.154 +		@param aParamValue The parameter value, e.g. '0.3'
 547.155 +		@leave KErrNotFoud if the field, or the part within the field doesn't exist
 547.156 +	*/
 547.157 +	//##ModelId=3C4C18800058
 547.158 +	IMPORT_C void SetParamL(RStringF aFieldName, RStringF aParamName, THTTPHdrVal aParamValue, TInt aPartIdx);
 547.159 +
 547.160 +	/** Set a named field in the header to contain the supplied Raw header
 547.161 +		data. If the header already exists then a LF and the new data will be added to the existing data. This is used to
 547.162 +		indicate that there are multiple instances of this header
 547.163 +
 547.164 +
 547.165 +		Note that general client use of this method is strongly
 547.166 +		discouraged since it exposes the raw representation of particular headers.  
 547.167 +		However it may be needed for some cases where headers to be transmitted have no encoding known
 547.168 +		to HTTP.  It will normally be used internally when receiving data from a service provider.
 547.169 +		@param aFieldName The field name, e.g, 'Content-Type'
 547.170 +		@param aRawFieldData The field's data content, in a raw form
 547.171 +		@param aFieldSeparator The header field separator
 547.172 +	*/
 547.173 +	//##ModelId=3C4C1880004F
 547.174 +	IMPORT_C void SetRawFieldL(RStringF aFieldName, 
 547.175 +							   const TDesC8& aRawFieldData,
 547.176 +							   const TDesC8& aFieldSeparator);
 547.177 +
 547.178 +	/** Remove, entirely, the named header field from the header
 547.179 +		collection. All its parts and associated parameters (where
 547.180 +		they exist) are also removed.
 547.181 +		@param aFieldName The field name.
 547.182 +		@return KErrNone if the removal is successful; KErrNotFound if
 547.183 +		the field didn't exist within the headers.  */
 547.184 +	//##ModelId=3C4C1880004D
 547.185 +	IMPORT_C TInt RemoveField(RStringF aFieldName);
 547.186 +
 547.187 +	/** Remove a single part of a header field. Just the part and any associated paramters are removed. If this 
 547.188 +		results in no parts being present in the header then it will also be removed
 547.189 +		@param aFieldName The header name
 547.190 +		@param aIndex The particular part of the field to be removed
 547.191 +		@return KErrNone if the removal is sucessful; KErrNotFound if the header didn't exist. No exception is raised if 
 547.192 +		the particular value is not found as part of that header */
 547.193 +	//##ModelId=3C4C18800043
 547.194 +	IMPORT_C TInt RemoveFieldPart(RStringF aFieldName, TInt aIndex);
 547.195 +
 547.196 +	/** Remove all the fields of this header collection
 547.197 +	*/
 547.198 +	//##ModelId=3C4C18800042
 547.199 +	IMPORT_C void RemoveAllFields();
 547.200 +
 547.201 +	//@}
 547.202 +
 547.203 +
 547.204 +private:
 547.205 +	friend class CHeaders;
 547.206 +	//##ModelId=3C4C1880003A
 547.207 +	CHeaders* iImplementation;
 547.208 +	};
 547.209 +
 547.210 +
 547.211 +inline RHTTPHeaders::RHTTPHeaders()
 547.212 +		: iImplementation(NULL)
 547.213 +	{
 547.214 +	}
 547.215 +
 547.216 +
 547.217 +#endif  // __RHTTPHEADERS_H__
   548.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   548.2 +++ b/epoc32/include/mw/http/rhttpmessage.h	Wed Mar 31 12:27:01 2010 +0100
   548.3 @@ -0,0 +1,93 @@
   548.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   548.5 +// All rights reserved.
   548.6 +// This component and the accompanying materials are made available
   548.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   548.8 +// which accompanies this distribution, and is available
   548.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  548.10 +//
  548.11 +// Initial Contributors:
  548.12 +// Nokia Corporation - initial contribution.
  548.13 +//
  548.14 +// Contributors:
  548.15 +//
  548.16 +// Description:
  548.17 +//
  548.18 +
  548.19 +
  548.20 +
  548.21 +/**
  548.22 + @file RHTTPMessage.h
  548.23 + @warning : This file contains Rose Model ID comments - please do not delete
  548.24 +*/
  548.25 +
  548.26 +#ifndef __RHTTPMESSAGE_H__
  548.27 +#define __RHTTPMESSAGE_H__
  548.28 +
  548.29 +// Forward declarations
  548.30 +class RHTTPHeaders;
  548.31 +class MHTTPDataSupplier;
  548.32 +class CMessage;
  548.33 +
  548.34 +
  548.35 +//##ModelId=3A375D1F0377
  548.36 +class RHTTPMessage 
  548.37 +/** 
  548.38 +An abstract HTTP message. In RFC2616, an HTTP message is defined as having a
  548.39 +header and an optional body.  This class is specialised for HTTP requests and
  548.40 +responses.
  548.41 +@publishedAll
  548.42 +@released
  548.43 +*/
  548.44 +	{
  548.45 + public:
  548.46 +	/// Default (uninitialised) constructor.
  548.47 +	//##ModelId=3A375DD60140
  548.48 +	inline RHTTPMessage();
  548.49 +
  548.50 +	/** Returns the header collection for the message */
  548.51 +	//##ModelId=3A375DDE0368
  548.52 +	IMPORT_C RHTTPHeaders GetHeaderCollection();
  548.53 +
  548.54 +	/** Sets the messages body, replacing any existing body. The body
  548.55 +        is supplied as a MHTTPDataSupplier, which will then return the
  548.56 +        data in 1 or more chunks on request.  
  548.57 +		@param aBody The data supplier that will supply the body.  */
  548.58 +	//##ModelId=3A375DE0019E
  548.59 +	IMPORT_C void SetBody(MHTTPDataSupplier& aBody);
  548.60 +
  548.61 +	/** Removes the body */
  548.62 +	//##ModelId=3B1E66FF004E
  548.63 +	IMPORT_C void RemoveBody();
  548.64 +
  548.65 +	/** Determine whether this message has any associated body data.
  548.66 +		@return ETrue if there is some body data, EFalse if not.
  548.67 +	*/
  548.68 +	//##ModelId=3A914DFF01E5
  548.69 +	IMPORT_C TBool HasBody() const;
  548.70 +
  548.71 +	/** Gets the body. The body is supplied as a MHTTPDataSupplier,
  548.72 +        which can be used to return the current data chunk, and to
  548.73 +        acknowledge when that chunk has been consumed by the client.
  548.74 +
  548.75 +		Note that the client can assume the body object will remain
  548.76 +		unchanged from when it receives the first data until the end
  548.77 +		of the transaction.
  548.78 +
  548.79 +		@return A data supplier that provides access to a body
  548.80 +		data chunk. NULL if the body has not been set, or has been removed */
  548.81 +	//##ModelId=3A375DE40190
  548.82 +	IMPORT_C MHTTPDataSupplier* Body() const;
  548.83 +
  548.84 + protected:
  548.85 +	//##ModelId=3A914DFF01C7
  548.86 +	CMessage* iImplementation;
  548.87 +};
  548.88 +
  548.89 +
  548.90 +inline RHTTPMessage::RHTTPMessage()
  548.91 +		: iImplementation(NULL)
  548.92 +	{
  548.93 +	};
  548.94 +
  548.95 +
  548.96 +#endif // __RHTTPMESSAGE_H__ 
   549.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   549.2 +++ b/epoc32/include/mw/http/rhttppropertyset.h	Wed Mar 31 12:27:01 2010 +0100
   549.3 @@ -0,0 +1,86 @@
   549.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   549.5 +// All rights reserved.
   549.6 +// This component and the accompanying materials are made available
   549.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   549.8 +// which accompanies this distribution, and is available
   549.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  549.10 +//
  549.11 +// Initial Contributors:
  549.12 +// Nokia Corporation - initial contribution.
  549.13 +//
  549.14 +// Contributors:
  549.15 +//
  549.16 +// Description:
  549.17 +//
  549.18 +
  549.19 +
  549.20 +
  549.21 +/**
  549.22 + @file RHTTPPropertySet.h
  549.23 + @warning : This file contains Rose Model ID comments - please do not delete
  549.24 +*/
  549.25 +
  549.26 +#ifndef __RHTTPPROPERTYSET_H__
  549.27 +#define __RHTTPPROPERTYSET_H__ 
  549.28 +
  549.29 +// System includes
  549.30 +#include <http/thttphdrval.h> 
  549.31 +
  549.32 +// Forward declarations
  549.33 +class CHeaderFieldPart;
  549.34 +
  549.35 +
  549.36 +//##ModelId=3C4C188201EA
  549.37 +class RHTTPPropertySet
  549.38 +/** 
  549.39 +A set of named THTTPHdrVal objects. Used for storing arbitrary
  549.40 +collections of information.  
  549.41 +@publishedAll
  549.42 +@released
  549.43 +*/
  549.44 +	{
  549.45 + public:
  549.46 +	/** Default (uninitialised) constructor. An object constructed in this way
  549.47 +		means 'use text-mode HTTP with default settings'
  549.48 +	 */
  549.49 +	//##ModelId=3A63217800E0
  549.50 +	IMPORT_C RHTTPPropertySet();
  549.51 +	
  549.52 +	/** Returns a property.
  549.53 +		@param aPropertyName The name of the property.
  549.54 +		@param aVal The returned value of the property (if defined)
  549.55 +		@return ETrue if the property exists
  549.56 +	*/
  549.57 +	//##ModelId=3C4C1882021F
  549.58 +	IMPORT_C TBool Property(RStringF aPropertyName, THTTPHdrVal& aVal) const;
  549.59 +
  549.60 +	/** Sets or creates a property. 
  549.61 +		@param aPropertyName The name of the property
  549.62 +		@param aValue The new value of the property
  549.63 +		@leave KErrNoMemory There was not enough memory.
  549.64 +	 */
  549.65 +	//##ModelId=3C4C1882021C
  549.66 +	IMPORT_C void SetPropertyL(RStringF aPropertyName, THTTPHdrVal aValue);
  549.67 +
  549.68 +	/** Removes a named property. 
  549.69 +		@param aPropertyName The name of the property
  549.70 +	 */
  549.71 +	//##ModelId=3C4C18820213
  549.72 +	IMPORT_C void RemoveProperty(RStringF aPropertyName);
  549.73 +
  549.74 +	/** Removes all properties
  549.75 +	 */
  549.76 +	//##ModelId=3C4C18820212
  549.77 +	IMPORT_C void RemoveAllProperties();
  549.78 +
  549.79 + protected:
  549.80 +	//##ModelId=3C4C18820208
  549.81 +	CHeaderFieldPart* iImplementation;
  549.82 +
  549.83 +	friend class CHeaderFieldPart;
  549.84 +	friend class CHTTPSession;
  549.85 +	};
  549.86 +
  549.87 +
  549.88 +
  549.89 +#endif //	__RHTTPPROPERTYSET_H__ 
   550.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   550.2 +++ b/epoc32/include/mw/http/rhttprequest.h	Wed Mar 31 12:27:01 2010 +0100
   550.3 @@ -0,0 +1,77 @@
   550.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   550.5 +// All rights reserved.
   550.6 +// This component and the accompanying materials are made available
   550.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   550.8 +// which accompanies this distribution, and is available
   550.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  550.10 +//
  550.11 +// Initial Contributors:
  550.12 +// Nokia Corporation - initial contribution.
  550.13 +//
  550.14 +// Contributors:
  550.15 +//
  550.16 +// Description:
  550.17 +//
  550.18 +
  550.19 +
  550.20 +
  550.21 +/**
  550.22 + @file RHTTPRequest.h
  550.23 + @warning : This file contains Rose Model ID comments - please do not delete
  550.24 +*/
  550.25 +
  550.26 +#ifndef __RHTTPREQUEST_H__
  550.27 +#define __RHTTPREQUEST_H__ 
  550.28 +
  550.29 +// System includes
  550.30 +#include <uri8.h>
  550.31 +#include <stringpool.h>
  550.32 +#include <http/rhttpmessage.h>
  550.33 +
  550.34 +
  550.35 +//##ModelId=3C4C186E0191
  550.36 +class RHTTPRequest : public RHTTPMessage
  550.37 +/** 
  550.38 +An HTTP Request.  This class extends the abstract HTTP Message to add an HTTP
  550.39 +method to be invoked on the resource at the remote HTTP server, and the URL that
  550.40 +identifies that resource.
  550.41 +@publishedAll
  550.42 +@released
  550.43 +*/
  550.44 +	{
  550.45 + public:
  550.46 +	/** Get Methods
  550.47 +		Methods for reading information from the response.
  550.48 +	*/
  550.49 +	//@{
  550.50 +	/// Gets the method name
  550.51 +	/// @return The method to be used in the HTTP request.
  550.52 +	//##ModelId=3C4C186E01B3
  550.53 +	IMPORT_C RStringF Method() const;
  550.54 +	/// Gets the URI
  550.55 +	/// @return The URI to be used in the HTTP request.
  550.56 +	//##ModelId=3C4C186E01B2
  550.57 +	IMPORT_C const TUriC8& URI() const;
  550.58 +	//@}
  550.59 +	/**Set Methods
  550.60 +		
  550.61 +		Methods for setting information. These methods will not be of
  550.62 +		use to the client; they are intended for the use of advanced
  550.63 +		filters
  550.64 +	*/
  550.65 +	//@{
  550.66 +	/// Sets the method name
  550.67 +	/// @param aMethod The method name to be used in the HTTP request.
  550.68 +	//##ModelId=3C4C186E01B0
  550.69 +	IMPORT_C void  SetMethod(RStringF aMethod);
  550.70 +	/// Sets the URI
  550.71 +	/// @param aURI The URI to be used in the HTTP request.
  550.72 +	//##ModelId=3C4C186E01A6
  550.73 +	IMPORT_C void SetURIL(const TUriC8& aURI);
  550.74 +	//@}
  550.75 +
  550.76 +	friend class CRequest;
  550.77 +	};
  550.78 +
  550.79 +
  550.80 +#endif //	__RHTTPREQUEST_H__  
   551.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   551.2 +++ b/epoc32/include/mw/http/rhttpresponse.h	Wed Mar 31 12:27:01 2010 +0100
   551.3 @@ -0,0 +1,85 @@
   551.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   551.5 +// All rights reserved.
   551.6 +// This component and the accompanying materials are made available
   551.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   551.8 +// which accompanies this distribution, and is available
   551.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  551.10 +//
  551.11 +// Initial Contributors:
  551.12 +// Nokia Corporation - initial contribution.
  551.13 +//
  551.14 +// Contributors:
  551.15 +//
  551.16 +// Description:
  551.17 +//
  551.18 +
  551.19 +
  551.20 +
  551.21 +/**
  551.22 + @file RHTTPResponse.h
  551.23 + @warning : This file contains Rose Model ID comments - please do not delete
  551.24 +*/
  551.25 +
  551.26 +#ifndef __RHTTPRESPONSE_H__
  551.27 +#define __RHTTPRESPONSE_H__
  551.28 +
  551.29 +// System includes
  551.30 +#include <e32std.h>
  551.31 +#include <http/rhttpmessage.h>
  551.32 +#include <stringpool.h>
  551.33 +
  551.34 +
  551.35 +//##ModelId=3A375D1203B5
  551.36 +class RHTTPResponse : public RHTTPMessage
  551.37 +/** 
  551.38 +An HTTP Response.  This class extends the abstract HTTP Message to add an HTTP
  551.39 +version, a status code and status text.
  551.40 +@publishedAll
  551.41 +@released
  551.42 +*/
  551.43 +	{
  551.44 +public:
  551.45 +	/**Get Methods
  551.46 +		Methods for reading information from the response.
  551.47 +	*/
  551.48 +	//@{
  551.49 +	/** 
  551.50 +		Returns the status code
  551.51 +	*/
  551.52 +	//##ModelId=3A914DF801B3
  551.53 +	IMPORT_C TInt StatusCode() const;
  551.54 +	/** Returns the status text, that is the text after the number on
  551.55 +        the first line of the response. */
  551.56 +	//##ModelId=3A914DF80195
  551.57 +	IMPORT_C RStringF StatusText() const;
  551.58 +	/**
  551.59 +		Returns the version of HTTP used by the server
  551.60 +	*/
  551.61 +	//##ModelId=3A914DF80163
  551.62 +	IMPORT_C TVersion Version() const;
  551.63 +	//@}
  551.64 +	/** Set Methods 
  551.65 +
  551.66 +		Methods for setting information. These methods will not be of
  551.67 +		use to the client; they are intended for the use of advanced
  551.68 +		filters
  551.69 +	*/
  551.70 +	//@{
  551.71 +	/** Sets the status code.
  551.72 +	 */
  551.73 +	//##ModelId=3A3765310382
  551.74 +	IMPORT_C void SetStatusCode(TInt aStatus);
  551.75 +	/// Sets the status string
  551.76 +	//##ModelId=3A914DF8019F
  551.77 +	IMPORT_C void SetStatusText(RStringF aStatusString);
  551.78 +	/// Sets the HTTP version
  551.79 +	//##ModelId=3A914DF8016D
  551.80 +	IMPORT_C void SetVersion(TVersion aVersion);
  551.81 +	//@}
  551.82 +
  551.83 +	friend class CResponse;
  551.84 +	};
  551.85 +
  551.86 +
  551.87 +
  551.88 +#endif // __RHTTPRESPONSE_H__
   552.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   552.2 +++ b/epoc32/include/mw/http/rhttpsession.h	Wed Mar 31 12:27:01 2010 +0100
   552.3 @@ -0,0 +1,300 @@
   552.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   552.5 +// All rights reserved.
   552.6 +// This component and the accompanying materials are made available
   552.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   552.8 +// which accompanies this distribution, and is available
   552.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  552.10 +//
  552.11 +// Initial Contributors:
  552.12 +// Nokia Corporation - initial contribution.
  552.13 +//
  552.14 +// Contributors:
  552.15 +//
  552.16 +// Description:
  552.17 +//
  552.18 +
  552.19 +
  552.20 +
  552.21 +/**
  552.22 + @file RHTTPSession.h
  552.23 + @warning : This file contains Rose Model ID comments - please do not delete
  552.24 +*/
  552.25 +
  552.26 +#ifndef __RHTTPSESSION_H__
  552.27 +#define __RHTTPSESSION_H__ 
  552.28 +
  552.29 +// System includes
  552.30 +#include <e32std.h>
  552.31 +#include <uri8.h>
  552.32 +#include <http/rhttpconnectioninfo.h>
  552.33 +#include <http/rhttpfiltercollection.h>
  552.34 +#include <http/rhttptransaction.h>
  552.35 +#include <http/mhttpdataoptimiser.h>
  552.36 +
  552.37 +// Forward declarations
  552.38 +class MHTTPTransactionCallback;
  552.39 +class CHTTPSession;
  552.40 +class MHTTPSessionEventCallback;
  552.41 +class MHTTPFilterCreationCallback;
  552.42 +class TCertInfo;
  552.43 +class CCertificate;
  552.44 +
  552.45 +/**
  552.46 +Constant to represent any HTTP Status code when registering filters.
  552.47 +@publishedAll
  552.48 +@released
  552.49 +*/
  552.50 +const TInt KAnyStatusCode = -1;
  552.51 +
  552.52 +
  552.53 +//##ModelId=3C4C187B0280
  552.54 +class RHTTPSession 
  552.55 +/** 
  552.56 +A session handle. A session is a set of HTTP transactions using
  552.57 +the same connection settings (e.g. proxy) and the same set of filters.
  552.58 +    Multi-homing support provided by HTTP framework enables clients to
  552.59 +    specify Connection preferences through the session property 
  552.60 +    EHttpSocketConnection.
  552.61 +
  552.62 +Note that RHTTPSession (and consequently the whole of HTTP)
  552.63 +depends on the active scheduler; a scheduler must be installed
  552.64 +when the session is opened and it must be running if a transaction
  552.65 +is actually to do anything.
  552.66 +@publishedAll
  552.67 +@released
  552.68 +@see RHTTPTransaction
  552.69 +*/
  552.70 +	{
  552.71 + public:
  552.72 +	/** Constructor.
  552.73 +		@post The session is closed. (It must be opened with OpenL)
  552.74 +		@see OpenL */
  552.75 +	//##ModelId=3C4C187B02EF
  552.76 +	inline RHTTPSession();
  552.77 +
  552.78 +	/** Sets the session event callback.
  552.79 +		Until it is set all incoming session events are consumed
  552.80 +	*/
  552.81 +	//##ModelId=3C4C187B02EA
  552.82 +	IMPORT_C void SetSessionEventCallback(MHTTPSessionEventCallback* aSessionEventCallback);
  552.83 +
  552.84 +	/** Send an session event
  552.85 +		@param aEvent. The session event to sent.
  552.86 +	*/
  552.87 +	//##ModelId=3C4C187B02E6
  552.88 +	IMPORT_C void SendSessionEventL(THTTPSessionEvent aStatus, THTTPSessionEvent::TDirection aDirection, 
  552.89 +							 THTTPFilterHandle aStart = THTTPFilterHandle::EClient);
  552.90 +
  552.91 +	/** Fail the session event
  552.92 +	*/
  552.93 +	IMPORT_C void FailSessionEvent(THTTPFilterHandle aStart = THTTPFilterHandle::EClient);
  552.94 +
  552.95 +	//##ModelId=3A49F701013F
  552.96 +	/** Opens the session using the default protocol HTTP/TCP. 
  552.97 +		This function leaves with an apropriate code if the open failed.
  552.98 +		@pre The session is closed. An active scheduler is installed.
  552.99 +		@post The session is open.
 552.100 +	*/
 552.101 +	//##ModelId=3C4C187B02DA
 552.102 + 	IMPORT_C void OpenL();
 552.103 +
 552.104 +	/** Opens the session using the protocol indicated by the parameter passed in.
 552.105 +		This function leaves with an apropriate code if the open failed.
 552.106 +		@param aProtocol The protocol required
 552.107 +		@pre The session is closed. An active scheduler is installed.
 552.108 +		@post The session is open.
 552.109 +	*/
 552.110 +	//##ModelId=3C4C187B02DB
 552.111 +	IMPORT_C void OpenL(const TDesC8& aProtocol);
 552.112 +
 552.113 +	/** Opens the session using the protocol indicated by the parameter passed in.
 552.114 +		This method should be used if configuring the installed filters is required.
 552.115 +		Once construction if the session is complete the callback method passed in is
 552.116 +		called passing in a TFilterConfigurationIterator to allow the filters that
 552.117 +		are installed to be configured.
 552.118 +		This function leaves with an apropriate code if the open failed.
 552.119 +		@param aProtocol The protocol required
 552.120 +		@param aSessionCallback The pointer to the object providing the call back method
 552.121 +		@pre The session is closed. An active scheduler is installed.
 552.122 +		@post The session is open.
 552.123 +	*/
 552.124 +	//##ModelId=3C4C187B02DD
 552.125 +	IMPORT_C void OpenL(const TDesC8& aProtocol, MHTTPFilterCreationCallback* aSessionCallback);
 552.126 +
 552.127 +	/**	This is a static methods that lists all the available protocols by adding the 
 552.128 +		prorocol descriptors to the descriptor array passed in. Any existing data in the
 552.129 +		descriptor array passed in is deleted.
 552.130 +		This function leaves if the descriptor array can not be updated with the appropriate
 552.131 +		array code.
 552.132 +		@param aProtocolArray A pointer array to heap based descriptors. The data in this
 552.133 +		array will be deleted and filled with descriptors containing the available protocols
 552.134 +		@see OpenL
 552.135 +	*/
 552.136 +	//##ModelId=3C4C187B02D4
 552.137 +	IMPORT_C static void ListAvailableProtocolsL(RPointerArray<HBufC8>& aProtocolArray);
 552.138 +
 552.139 +	/** Creates a transaction. 
 552.140 +		@pre The session is open
 552.141 +		@param aURI The URI that the request will be sent to.
 552.142 +		@param aCallback A callback for all status events relating to
 552.143 +		this transaction.
 552.144 +		@param aMethod The HTTP method to use (default: GET)
 552.145 +		@leave KErrNoMemory There was not enough memory.
 552.146 +	*/
 552.147 +	//##ModelId=3C4C187B02D0
 552.148 +	IMPORT_C RHTTPTransaction OpenTransactionL(const TUriC8& aURI, 
 552.149 +									  MHTTPTransactionCallback& aCallback, 
 552.150 +									  RStringF aMethod = RStringF());
 552.151 +
 552.152 +	/** Closes the session. All transactions will be stopped and closed 
 552.153 +		@post The session and all open transactions in it are closed.
 552.154 +	 */
 552.155 +	//##ModelId=3C4C187B02C8
 552.156 +	IMPORT_C void Close();
 552.157 +
 552.158 +
 552.159 +	//##ModelId=3C4C187B02C7
 552.160 +	IMPORT_C  static const TStringTable& GetTable();
 552.161 +
 552.162 +	/** Accessor for the HTTP string pool. 
 552.163 +		@return A handle for the string pool used in HTTP.
 552.164 +	 */
 552.165 +	//##ModelId=3C4C187B02C6
 552.166 +	IMPORT_C RStringPool StringPool() const;
 552.167 +
 552.168 +	/** Accessor for the connection info for this session, and which
 552.169 +		is used for all transactions in the session. Note that by and
 552.170 +		large, the connection info should be set up before the first
 552.171 +		transaction is created.  @return A handle to the connection
 552.172 +		inf.  */
 552.173 +	//##ModelId=3C4C187B02BE
 552.174 +	IMPORT_C RHTTPConnectionInfo ConnectionInfo() const;
 552.175 +
 552.176 +	/** Accessor for the filter collection. Note that the filter
 552.177 +        collection can't be edited after the first transaction has
 552.178 +        been created. */
 552.179 +	//##ModelId=3C4C187B02BD
 552.180 +	inline RHTTPFilterCollection FilterCollection() const;
 552.181 +
 552.182 +
 552.183 +	/** Accessor for the session headers. These are headers that will get added to each request
 552.184 +		They only become part of the transaction headers when a transaction is submitted and they will not 
 552.185 +		replace headers that already exist in the transaction request 
 552.186 +	*/
 552.187 +	//##ModelId=3C4C187B02BC
 552.188 +	IMPORT_C RHTTPHeaders RequestSessionHeadersL();
 552.189 +
 552.190 +
 552.191 +	/** Accessor for the response session headers. These are headers that will get added to each response if the 
 552.192 +	corresponding header doesn't already exist
 552.193 +	*/
 552.194 +	//##ModelId=3C4C187B02B6
 552.195 +	IMPORT_C RHTTPHeaders ResponseSessionHeadersL();
 552.196 +
 552.197 +	/** Equality operator.
 552.198 +		@param aTrans The session to compare this one to.
 552.199 +	*/
 552.200 +	//##ModelId=3C4C187B02B4
 552.201 +	TBool operator==(RHTTPSession aTrans) const;
 552.202 +	/** Inequality operator
 552.203 +		@param aTrans The session to compare this one to.
 552.204 +	*/
 552.205 +
 552.206 +	//##ModelId=3C4C187B02B2
 552.207 +	TBool operator!=(RHTTPSession aTrans) const;
 552.208 +
 552.209 +	/** Obtain the server certificate information for this session.  This function
 552.210 +		should only be used for WSP, for text-mode use RHttpTransaction::ServerCert.
 552.211 +		@see RHttpTransaction::ServerCert
 552.212 +		@param	aServerCert A client supplied object into which the certificate
 552.213 +		information will be placed.
 552.214 +		@return KErrNone if certificate has been completed, KErrNotSupported if
 552.215 +		this function is called for text-mode.
 552.216 +		@deprecated v9.2 onwards - maintained for compatibility with v9.1 and before
 552.217 +					TCertInfo has been deprecated since v9.2. CCertificate may be used as an alternative.
 552.218 +	*/
 552.219 +	//##ModelId=3C4C187B02AA
 552.220 +	IMPORT_C TInt ServerCert(TCertInfo& aServerCert);
 552.221 +
 552.222 +
 552.223 +	/** Obtain the server certificate information for this session.  This function
 552.224 +		should only be used for WSP. HTTP should use RHttpTransaction::ServerCert.
 552.225 +		@see RHttpSession::ServerCert
 552.226 +		@internalAll
 552.227 +		@prototype
 552.228 +		@return	a CCertificate pointer to an CWTLSCertificate object.
 552.229 +		Calling code can safely cast to CWTLSCertificate if using  "WSP/WSP".
 552.230 +		NULL returned if certificate information not found.
 552.231 +	*/
 552.232 +	IMPORT_C const CCertificate* RHTTPSession::ServerCert();
 552.233 +
 552.234 +	/** Connect this WSP session. This function does nothing when called for text-mode.
 552.235 +	*/
 552.236 +	//##ModelId=3C4C187B02A9
 552.237 +	IMPORT_C void ConnectL();
 552.238 +
 552.239 +	/** Disconnect this WSP session. This function does nothing when called for text-mode.
 552.240 +	*/
 552.241 +	//##ModelId=3C4C187B02A8
 552.242 +	IMPORT_C void DisconnectL();
 552.243 +	
 552.244 +	/**Set the default Proxy for Http Session. This function reads default proxy information,if available, from CommsDat
 552.245 +	and uses it for the current Session.
 552.246 +	@internalAll
 552.247 +	*/
 552.248 +	IMPORT_C void SetupDefaultProxyFromCommsDatL();
 552.249 +
 552.250 +	/**Sets the HTTP data optimiser for the session.
 552.251 +	@param aHttpOptimiser An object of the implementation of interface, MHttpDataOptimiser, supplied by the client.
 552.252 +	@publishedPartner
 552.253 +	*/
 552.254 +	IMPORT_C void SetupHttpDataOptimiser (MHttpDataOptimiser& aHttpOptimiser);
 552.255 + 
 552.256 + 	/**Returns the object of the MHttpDataOptimiser implementation class.
 552.257 +	@internalTechnology
 552.258 +	*/
 552.259 + 	IMPORT_C MHttpDataOptimiser* HttpDataOptimiser ();
 552.260 +
 552.261 +private:
 552.262 +	friend class RHTTPFilterCollection;
 552.263 +	friend class CHTTPSession;
 552.264 +
 552.265 +	//##ModelId=3C4C187B0296
 552.266 +	CHTTPSession* iImplementation;
 552.267 +};
 552.268 +
 552.269 +inline RHTTPSession::RHTTPSession()
 552.270 +		: iImplementation(0)
 552.271 +	{
 552.272 +	}
 552.273 +
 552.274 +
 552.275 +inline RHTTPFilterCollection RHTTPSession::FilterCollection() const
 552.276 +	{
 552.277 +	RHTTPFilterCollection c;
 552.278 +	c.iImplementation = iImplementation;
 552.279 +	return c;
 552.280 +	}
 552.281 +
 552.282 +inline TBool RHTTPSession::operator==(RHTTPSession aTrans) const
 552.283 +	{
 552.284 +	return (iImplementation == aTrans.iImplementation);
 552.285 +	};
 552.286 +inline TBool RHTTPSession::operator!=(RHTTPSession aTrans) const
 552.287 +	{
 552.288 +	return !(*this == aTrans);
 552.289 +	};
 552.290 +
 552.291 +
 552.292 +
 552.293 +inline RHTTPSession RHTTPFilterCollection::Session() const
 552.294 +	{
 552.295 +	RHTTPSession s;
 552.296 +	s.iImplementation = iImplementation;
 552.297 +	return s;
 552.298 +	}
 552.299 +
 552.300 +
 552.301 +
 552.302 +
 552.303 +#endif // __RHTTPSESSION_H__
   553.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   553.2 +++ b/epoc32/include/mw/http/rhttptransaction.h	Wed Mar 31 12:27:01 2010 +0100
   553.3 @@ -0,0 +1,225 @@
   553.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   553.5 +// All rights reserved.
   553.6 +// This component and the accompanying materials are made available
   553.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   553.8 +// which accompanies this distribution, and is available
   553.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  553.10 +//
  553.11 +// Initial Contributors:
  553.12 +// Nokia Corporation - initial contribution.
  553.13 +//
  553.14 +// Contributors:
  553.15 +//
  553.16 +// Description:
  553.17 +//
  553.18 +
  553.19 +
  553.20 +
  553.21 +/**
  553.22 + @file RHTTPTransaction.h
  553.23 + @warning : This file contains Rose Model ID comments - please do not delete
  553.24 +*/
  553.25 +
  553.26 +#ifndef __RHTTPTRANSACTION_H__
  553.27 +#define __RHTTPTRANSACTION_H__ 
  553.28 +
  553.29 +// System includes
  553.30 +#include <http/thttpevent.h>
  553.31 +#include <http/rhttpresponse.h>
  553.32 +#include <http/rhttprequest.h>
  553.33 +#include <http/rhttptransactionpropertyset.h>
  553.34 +#include <http/thttpfilterhandle.h>
  553.35 +#include <http/mhttpdataoptimiser.h>
  553.36 +
  553.37 +// Forward declarations
  553.38 +class CHTTPTransaction;
  553.39 +class CTransaction;
  553.40 +class MHTTPTransactionCallback;
  553.41 +class RHTTPSession;
  553.42 +class TCertInfo;
  553.43 +class CCertificate;
  553.44 +
  553.45 +
  553.46 +//##ModelId=3C4C18860091
  553.47 +class RHTTPTransaction 
  553.48 +/**
  553.49 +A HTTP Transaction. This encapsulates 1 HTTP request and
  553.50 +response. A Transaction is associated with a session, and must be
  553.51 +created using the session's CreateTransactionL method.
  553.52 +@publishedAll
  553.53 +@released
  553.54 +@see RHTTPSession
  553.55 +@see RHTTPSession::CreateTransactionL
  553.56 +*/
  553.57 +	{
  553.58 + public:
  553.59 +	/** 
  553.60 +		Default (uninitialised) constructor
  553.61 +	*/
  553.62 +	//##ModelId=3C4C188600F5
  553.63 +	inline RHTTPTransaction();
  553.64 +
  553.65 +	/** Submits a transaction. Once all the headers and other details
  553.66 +		have been set up, this call actualy causes the request to be
  553.67 +		made.
  553.68 +		@leave KErrNoMemory There was not enough memory.
  553.69 +	*/
  553.70 +	//##ModelId=3C4C188600ED
  553.71 +	IMPORT_C void SubmitL(THTTPFilterHandle aStart = 
  553.72 +						  THTTPFilterHandle::EClient);
  553.73 +
  553.74 +	/** Notify HTTP of the availability of more request body data,
  553.75 +		when submitting body data in several parts.
  553.76 +		
  553.77 +		@param aStart The filter supplying the new data. This will almost always be the client (default value)
  553.78 +		@leave KErrNoMemory There was not enough memory.
  553.79 +	*/
  553.80 +	//##ModelId=3C4C188600EB
  553.81 +	IMPORT_C void NotifyNewRequestBodyPartL(THTTPFilterHandle aStart = 
  553.82 +											 THTTPFilterHandle::EClient);
  553.83 +
  553.84 +	/** Sends a status message to all relevant filters. This function
  553.85 +		is predominantly used by filters, rather than by the client.
  553.86 +		@param aStatus The status message to send.  
  553.87 +		@param aDirection The direction down the filter queue that this event 
  553.88 +		will be propogated.
  553.89 +		@leave KErrNoMemory There was not enough memory.
  553.90 +	*/
  553.91 +	//##ModelId=3C4C188600E2
  553.92 +	IMPORT_C void SendEventL(THTTPEvent aStatus, 
  553.93 +							 THTTPEvent::TDirection aDirection, 
  553.94 +							 THTTPFilterHandle aStart);
  553.95 +
  553.96 +	/** Gets the response. Note that the returned response may not be
  553.97 +		valid if it hasn't been created yet.
  553.98 +		@see RHTTPMessage::IsValid()
  553.99 +	*/
 553.100 +//##ModelId=3C4C188600E1
 553.101 +	IMPORT_C RHTTPResponse Response() const;
 553.102 +
 553.103 +	/// Gets the request.
 553.104 +	//##ModelId=3C4C188600DA
 553.105 +	IMPORT_C RHTTPRequest Request() const;
 553.106 +
 553.107 +	/// Returns the session associated with the transaction.
 553.108 +	//##ModelId=3C4C188600D9
 553.109 +	IMPORT_C RHTTPSession Session() const;
 553.110 +
 553.111 +	/** Returns the transaction's property set. This is used by filters
 553.112 +		to store transaction-specific information, and by clients to
 553.113 +		specify things like reload or no cache behaviour.
 553.114 +	*/
 553.115 +	//##ModelId=3C4C188600D8
 553.116 +	IMPORT_C RHTTPTransactionPropertySet PropertySet() const;
 553.117 +
 553.118 +	/** Cancels the transaction.
 553.119 +	
 553.120 +		@param aStart The entity that is initiating the cancel (defaults
 553.121 +		to the client). See THTTPFilterHandle for the values this can take.
 553.122 +	*/
 553.123 +	//##ModelId=3C4C188600CF
 553.124 +	IMPORT_C void Cancel(THTTPFilterHandle aStart = 
 553.125 +						 THTTPFilterHandle::EClient);
 553.126 +
 553.127 +	/** Closes the transaction and frees all owned resources.
 553.128 +		Transactions must be opened using RHTTPSession::OpenTransactionL.
 553.129 +		It is also closed when you close the session.
 553.130 +	 */
 553.131 +	//##ModelId=3C4C188600CE
 553.132 +	IMPORT_C void Close();
 553.133 +
 553.134 +	/** This function should be called by filters when they have
 553.135 +	 failed due to running out of memory. It cancels the transaction
 553.136 +	 and sends the synchronous events EUnrecoverableError and EFailed
 553.137 +	 to the client to inform it of the failure. For instance in a
 553.138 +	 filter that attempts to send an event to the client from a
 553.139 +	 MHFRunError to inform the client of a failure, if the call to
 553.140 +	 SendEventL leaves, Fail() may be used to 'give up'. */
 553.141 +	//##ModelId=3C4C188600C7
 553.142 +	IMPORT_C void Fail(THTTPFilterHandle aStart = 
 553.143 +					   THTTPFilterHandle::ECurrentFilter);
 553.144 +
 553.145 +	/** Equality operator to check if this transaction is the same as that one.
 553.146 +		@param aTrans The transaction to compare this one to.
 553.147 +	*/
 553.148 +	//##ModelId=3C4C188600C5
 553.149 +	TBool operator==(RHTTPTransaction aTrans) const;
 553.150 +	/** Inequality operator
 553.151 +		@param aTrans The transaction to compare this one to.
 553.152 +	*/
 553.153 +	//##ModelId=3C4C188600C3
 553.154 +	TBool operator!=(RHTTPTransaction aTrans) const;
 553.155 +	/** Obtain this transaction's ID, which is unique within its
 553.156 +		session.  This is mostly used for producing a
 553.157 +		slightly-meaningful way of identifying transactions in logging
 553.158 +		code.
 553.159 +		@return The transaction ID.  
 553.160 +	*/
 553.161 +	//##ModelId=3C4C188600BB
 553.162 +	IMPORT_C TInt Id() const;
 553.163 +
 553.164 +	/** Obtain the server certificate information for this transaction.  This function
 553.165 +		should only be used for text-mode, for WSP use RHttpSession::ServerCert.
 553.166 +		@see RHttpSession::ServerCert
 553.167 +		@param	aServerCert A client supplied object into which the certificate
 553.168 +		information will be placed.
 553.169 +		@return KErrNone if certificate has been completed, KErrNotSupported if
 553.170 +		this function is called for WSP.
 553.171 +		@deprecated v9.2 onwards - maintained for compatibility with v9.1 and before
 553.172 +					TCertInfo has been deprecated since v9.2. CCertificate may be used as an alternative.
 553.173 +	*/
 553.174 +	//##ModelId=3C4C188600B9
 553.175 +	IMPORT_C TInt ServerCert(TCertInfo& aServerCert);
 553.176 +
 553.177 +	/** Obtain the server certificate information for this transaction.  This function
 553.178 +		should only be used for HTTP. WSP should use RHttpSession::ServerCert.
 553.179 +		@see RHttpSession::ServerCert
 553.180 +		@internalAll
 553.181 +		@prototype
 553.182 +		@return	a CCertificate pointer to an CX509Certificate object.
 553.183 +		Calling code can safely cast to CX509Certificate if using  "HTTP/TCP".
 553.184 +		NULL returned if certificate information not found.
 553.185 +	*/
 553.186 +	IMPORT_C const CCertificate* ServerCert();
 553.187 +	
 553.188 +	/** Obtain the cipher suite information for this transaction.
 553.189 +		@return RString containing the cipher suite as per RFC2246.
 553.190 +	*/
 553.191 +	IMPORT_C RString CipherSuite();
 553.192 +	
 553.193 +	/**Sets the HTTP data optimiser for the transaction.
 553.194 +	@param aHttpOptimiser An object of the implementation of interface, MHttpDataOptimiser, supplied by the client.
 553.195 +	@publishedPartner
 553.196 +	*/
 553.197 + 	IMPORT_C void SetupHttpDataOptimiser (MHttpDataOptimiser& aHttpOptimiser);
 553.198 + 
 553.199 + 	/**Returns the object of the MHttpDataOptimiser implementation class.
 553.200 +	@internalTechnology
 553.201 +	*/
 553.202 + 	IMPORT_C MHttpDataOptimiser* HttpDataOptimiser ();
 553.203 +
 553.204 +private:
 553.205 +	friend class RHTTPSession;
 553.206 +	friend class CTransaction;
 553.207 +
 553.208 + private:
 553.209 +	//##ModelId=3C4C188600A7
 553.210 +	CTransaction* iImplementation;
 553.211 +	}; 
 553.212 +
 553.213 +inline TBool RHTTPTransaction::operator==(RHTTPTransaction aTrans) const
 553.214 +	{
 553.215 +	return (iImplementation == aTrans.iImplementation);
 553.216 +	};
 553.217 +inline TBool RHTTPTransaction::operator!=(RHTTPTransaction aTrans) const
 553.218 +	{
 553.219 +	return !(*this == aTrans);
 553.220 +	};
 553.221 +
 553.222 +inline RHTTPTransaction::RHTTPTransaction()
 553.223 +		: iImplementation(NULL)
 553.224 +	{
 553.225 +	}
 553.226 +
 553.227 +
 553.228 +#endif // __RHTTPTRANSACTION_H__
   554.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   554.2 +++ b/epoc32/include/mw/http/rhttptransactionpropertyset.h	Wed Mar 31 12:27:01 2010 +0100
   554.3 @@ -0,0 +1,61 @@
   554.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   554.5 +// All rights reserved.
   554.6 +// This component and the accompanying materials are made available
   554.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   554.8 +// which accompanies this distribution, and is available
   554.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  554.10 +//
  554.11 +// Initial Contributors:
  554.12 +// Nokia Corporation - initial contribution.
  554.13 +//
  554.14 +// Contributors:
  554.15 +//
  554.16 +// Description:
  554.17 +//
  554.18 +
  554.19 +
  554.20 +
  554.21 +/**
  554.22 + @file RHTTPTransactionPropertySet.h
  554.23 + @warning : This file contains Rose Model ID comments - please do not delete
  554.24 +*/
  554.25 +
  554.26 +#ifndef __RHTTPTRANSACTIONPROPERTYSET_H__
  554.27 +#define __RHTTPTRANSACTIONPROPERTYSET_H__ 
  554.28 +
  554.29 +// System includes
  554.30 +#include <http/rhttppropertyset.h>
  554.31 +
  554.32 +
  554.33 +//##ModelId=3B1E670402C2
  554.34 +class RHTTPTransactionPropertySet : public RHTTPPropertySet
  554.35 +/** 
  554.36 +The set of properties of a transaction. This is used by filters to
  554.37 +store per-transaction information, and is also used by the client
  554.38 +to specify transaction properties (such as no caching, reload and
  554.39 +so on) 
  554.40 +
  554.41 +Transaction properties always take precendence over session properties.
  554.42 +
  554.43 +To lookup/change any of the following properties, use 
  554.44 +RHTTPPropertySet::Property(...) and RHTTPPropertySet::SetPropertyL(...) 
  554.45 +
  554.46 +To remove properties, use RHTTPPropertySet::RemoveProperty(...) for a named property,
  554.47 +or RHTTPPropertySet::RemoveAllProperties() for all.
  554.48 +
  554.49 +
  554.50 +The following values are currently defined.
  554.51 +
  554.52 +HTTP::EProxyUsage (HTTP::EDoNotUseProxy | HTTP::EUseProxy)
  554.53 +
  554.54 +HTTP::EProxyAddress (A Uri for the Proxy server. Should include the port number
  554.55 +if it is not the default of 8080)
  554.56 +
  554.57 +HTTP::EHttpPipelining (default HTTP::EEnablePipelining) (HTTP::EEnablePipelining | HTTP::EDisablePipelining)
  554.58 +@publishedAll
  554.59 +@released
  554.60 +*/
  554.61 +	{
  554.62 +	};
  554.63 +
  554.64 +#endif //	__RHTTPTRANSACTIONPROPERTYSET_H__ 
   555.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   555.2 +++ b/epoc32/include/mw/http/tfilterconfigurationiter.h	Wed Mar 31 12:27:01 2010 +0100
   555.3 @@ -0,0 +1,201 @@
   555.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   555.5 +// All rights reserved.
   555.6 +// This component and the accompanying materials are made available
   555.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   555.8 +// which accompanies this distribution, and is available
   555.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  555.10 +//
  555.11 +// Initial Contributors:
  555.12 +// Nokia Corporation - initial contribution.
  555.13 +//
  555.14 +// Contributors:
  555.15 +//
  555.16 +// Description:
  555.17 +//
  555.18 +
  555.19 +
  555.20 +
  555.21 +/**
  555.22 + @file TFilterConfigurationIter.h
  555.23 + @warning : This file contains Rose Model ID comments - please do not delete
  555.24 +*/
  555.25 +
  555.26 +#ifndef __TFILTERCONFIGURATIONITER_H__
  555.27 +#define __TFILTERCONFIGURATIONITER_H__
  555.28 +
  555.29 +// System includes
  555.30 +#include <e32std.h>
  555.31 +
  555.32 +// User includes
  555.33 +#include <http/tfilterinformation.h>
  555.34 +
  555.35 +// Forward declarations
  555.36 +class CHTTPSession;
  555.37 +class TSessionFilterInfo;
  555.38 +class CFilterConfigurationIterator_UnitTestContext;
  555.39 +
  555.40 +
  555.41 +//##ModelId=3C4C0F45009C
  555.42 +class TFilterConfigurationIterator
  555.43 +/**
  555.44 +This class can only be created and destroyed by the session. It is supplied to the
  555.45 +client, if the client wishes to configure the filter that are installed or install
  555.46 +filters that must be installed explicitly. The API of the class allows the client to
  555.47 +navigate, install, uninstall and query the filter list. The filters visible in this
  555.48 +list are only the implicit and explicit filters declared as plugins. This iterator MUST
  555.49 +be initialised using the First() method and the return error code checked before any
  555.50 +other operations are called.
  555.51 +@publishedAll
  555.52 +@released
  555.53 +*/
  555.54 +	{
  555.55 +public: // Methods
  555.56 +	/**
  555.57 +	@fn				First()
  555.58 +	Intended Usage:	This method sets the current filter to the first filter in the list.
  555.59 +					This method must be used initially to set the
  555.60 +					current filter and the returned error code must be noted prior to
  555.61 +					using any of the methods that query or modify the current filter.
  555.62 +	@return			KErrNone if the first filter is found, KErrNotFound if the filter 
  555.63 +					can't be found or no filters exist
  555.64 +	@pre 			Object is constructed
  555.65 +	@post			Current filter is set to the first filter in the list
  555.66 +	*/
  555.67 +	//##ModelId=3C4C0F45010C
  555.68 +	IMPORT_C TInt First();
  555.69 +
  555.70 +	/**
  555.71 +	@fn				Next()
  555.72 +	Intended Usage:	This method sets the current filter to the next filter in the list.
  555.73 +	@return			KErrNone if the next filter is found, KErrNotFound if the filter 
  555.74 +					can't be found, or no filters exist, or the current filter is at the
  555.75 +					end of the list.
  555.76 +	@pre 			Object is constructed
  555.77 +	@post			Current filter is set to the next filter in the list
  555.78 +	*/
  555.79 +	//##ModelId=3C4C0F45010B
  555.80 +	IMPORT_C TInt Next();
  555.81 +
  555.82 +	/**
  555.83 +	@fn				AtStart()
  555.84 +	Intended Usage: This method indicates whether the current filter is the first filter in
  555.85 +					the list. This method will panic if the iterator has not been initialised
  555.86 +					using the First() method.
  555.87 +	@return			ETrue if the current filter is the first in the list
  555.88 +	@pre 			The iterator has been initialised using the First() method
  555.89 +	*/
  555.90 +	//##ModelId=3C4C0F45010A
  555.91 +	IMPORT_C TBool AtStart();
  555.92 +
  555.93 +	/**
  555.94 +	@fn				AtEnd()
  555.95 +	Intended Usage: This method indicates whether the current filter is the last filter in
  555.96 +					the list. This method will panic if the iterator has not been initialised
  555.97 +					using the First() method.
  555.98 +	@return			ETrue if the current filter is the last in the list
  555.99 +	@pre 			The iterator has been initialised using the First() method
 555.100 +	*/
 555.101 +	//##ModelId=3C4C0F450101
 555.102 +	IMPORT_C TBool AtEnd();
 555.103 +
 555.104 +	/**
 555.105 +	@fn				FindByDataType(const TDesC8& aDataType)
 555.106 +	Intended Usage:	This method find the first filter in the list that has a matching data
 555.107 +					type that is passed in. The method will set the current filter to the
 555.108 +					filter that matches the data type or if not found the current filter
 555.109 +					will not change. This method will always begin its search
 555.110 +					from the beginning of the list.
 555.111 +	@param			aDataType An 8-bit descriptor containing the data type to match the 
 555.112 +					filter plug-in with
 555.113 +	@return			KErrNone is the filter plug-in is found, KErrNotFound if not found
 555.114 +	@pre 			Object is constructed
 555.115 +	@post			The current filter is set to the filter that matches the data type
 555.116 +	*/
 555.117 +	//##ModelId=3C4C0F4500F8
 555.118 +	IMPORT_C TInt FindByDataType(const TDesC8& aDataType);
 555.119 +
 555.120 +	/**
 555.121 +	@fn				CurrentFilterInformation() const
 555.122 +	Intended Usage:	This method will return the information of the current filter. The
 555.123 +					information is provided in a TFilterInformation structure containing the
 555.124 +					following information:
 555.125 +					1) Display name
 555.126 +					2) Data type
 555.127 +					3) Version
 555.128 +					4) UID
 555.129 +					5) Category
 555.130 +					6) Install status
 555.131 +					This method will panic if the iterator has not been initialised using the
 555.132 +					First() method
 555.133 +	@return			A struct containing the current filter information
 555.134 +	@pre 			The iterator has been initialised using the First() method
 555.135 +	@see			TFilterInformation
 555.136 +	*/
 555.137 +	//##ModelId=3C4C0F4500F7
 555.138 +	IMPORT_C const TFilterInformation CurrentFilterInformation() const;
 555.139 +
 555.140 +	/**
 555.141 +	@fn				InstallCurrentFilter() const
 555.142 +	Intended Usage:	This method will install the current filter. This method will panic if a
 555.143 +					current filter is not set.
 555.144 +	@return			KErrNone if the filter installed, KErrAlreadyExists if the filter has
 555.145 +					already been installed, KErrNotFound if the filter cannot be found,
 555.146 +					KErrNotConnected if the ECom plug-in architecture is not connected,
 555.147 +					KErrNoMemory is the filter is not installed due to low memory, or any
 555.148 +					other system-wide error codes.
 555.149 +	@pre 			A current filter has been set and is not already installed
 555.150 +	@post			The filter is installed
 555.151 +	*/
 555.152 +	//##ModelId=3C4C0F4500F6
 555.153 +	IMPORT_C TInt InstallCurrentFilter() const;
 555.154 +
 555.155 +	/**
 555.156 +	@fn				UninstallCurrentFilter() const
 555.157 +	Intended Usage:	This method will uninstall the current filter. This method will panic if
 555.158 +					a current filter is not set.
 555.159 +	@return			KErrNone is the filter uninstalled correctly, KErrNotFound if the filter
 555.160 +					has not already been installed
 555.161 +	@pre 			A current filter has been set and has already been installed
 555.162 +	@post			The filter is uninstalled
 555.163 +	*/
 555.164 +	//##ModelId=3C4C0F4500EF
 555.165 +	IMPORT_C TInt UninstallCurrentFilter() const;
 555.166 +
 555.167 +private: // Methods
 555.168 +	// Friend class
 555.169 +	friend class CHTTPSession;
 555.170 +
 555.171 +	// Friend class for testing purposes
 555.172 +	friend class CFilterConfigurationIterator_UnitTestContext;
 555.173 +
 555.174 +	// Standard default constructor, this is private as it is designed so that only
 555.175 +	// the CHTTPSession object that create it.
 555.176 +	//##ModelId=3C4C0F4500ED
 555.177 +	TFilterConfigurationIterator(CHTTPSession* aSession);
 555.178 +
 555.179 +	// Standard destructor, this is private as it is designed so that only the
 555.180 +	// CHTTPSession object can delete it.
 555.181 +	//##ModelId=3C4C0F4500EC
 555.182 +	~TFilterConfigurationIterator();
 555.183 +
 555.184 +private: // Attributes
 555.185 +	// Pointer to the session implementation. This is not owned.
 555.186 +	//##ModelId=3C4C0F4500DA
 555.187 +	CHTTPSession* iSession;
 555.188 +
 555.189 +	// Pointer array containing all the information for all the filter plugins
 555.190 +	// discovered by ECom. The list is stored and owned by the session. This is
 555.191 +	// not owned.
 555.192 +	//##ModelId=3C4C0F4500D0
 555.193 +	RPointerArray<TSessionFilterInfo>& iFilterInfoList;
 555.194 +
 555.195 +	// Value conatining the index of the current filter in the list
 555.196 +	//##ModelId=3C4C0F4500C6
 555.197 +	TInt iCurrentFilterIndex;
 555.198 +
 555.199 +	// Value containing the number filters in the list
 555.200 +	//##ModelId=3C4C0F4500BC
 555.201 +	TInt iFilterCount;
 555.202 +	};
 555.203 +
 555.204 +#endif // __TFILTERCONFIGURATIONITER_H__
   556.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   556.2 +++ b/epoc32/include/mw/http/tfilterinformation.h	Wed Mar 31 12:27:01 2010 +0100
   556.3 @@ -0,0 +1,115 @@
   556.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   556.5 +// All rights reserved.
   556.6 +// This component and the accompanying materials are made available
   556.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   556.8 +// which accompanies this distribution, and is available
   556.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  556.10 +//
  556.11 +// Initial Contributors:
  556.12 +// Nokia Corporation - initial contribution.
  556.13 +//
  556.14 +// Contributors:
  556.15 +//
  556.16 +// Description:
  556.17 +//
  556.18 +
  556.19 +
  556.20 +
  556.21 +/**
  556.22 + @file TFilterInformation.h
  556.23 + @warning : This file contains Rose Model ID comments - please do not delete
  556.24 +*/
  556.25 +
  556.26 +#ifndef __TFILTERINFORMATION_H__
  556.27 +#define __TFILTERINFORMATION_H__
  556.28 +
  556.29 +
  556.30 +//##ModelId=3C4C37DF0343
  556.31 +struct TFilterInformation
  556.32 +/**
  556.33 +This structure is used by the TFilterConfigurationIterator to hold the information of the
  556.34 +current filter. This structure simply contains public members containing the following
  556.35 +information, the display name, data type, version, UID, category and install status.
  556.36 +@publishedAll
  556.37 +@released
  556.38 +@see			TFilterConfigurationIterator
  556.39 +*/
  556.40 +	{
  556.41 +public:
  556.42 +	/**
  556.43 +	Public enum defining the filter categories available to the client.
  556.44 +	*/
  556.45 +	enum TFilterCategory
  556.46 +		{
  556.47 +		EImplicitFilter,
  556.48 +		EExplicitFilter
  556.49 +		};
  556.50 +
  556.51 +	/** 
  556.52 +		Contains a constant reference to the descriptor containing the filter's display name 
  556.53 +	*/
  556.54 +	//##ModelId=3C4C37DF03A7
  556.55 +	const TDesC& iDisplayName;
  556.56 +
  556.57 +	/** 
  556.58 +		Contains a constant reference to the descriptor containing the filter's data type 
  556.59 +	*/
  556.60 +	//##ModelId=3C4C37DF039D
  556.61 +	const TDesC8& iDataType;
  556.62 +
  556.63 +	/**
  556.64 +		The filter's version number
  556.65 +	*/
  556.66 +	//##ModelId=3C4C37DF038B
  556.67 +	TInt iVersion;
  556.68 +
  556.69 +	/** 
  556.70 +		The filter's plugin UID
  556.71 +	*/
  556.72 +	//##ModelId=3C4C37DF0381
  556.73 +	TUid iFilterUid;
  556.74 +
  556.75 +	/**
  556.76 +		The filter's category
  556.77 +	*/
  556.78 +	//##ModelId=3C4C37DF0375
  556.79 +	TFilterCategory iFilterCategory;
  556.80 +
  556.81 +	/** 
  556.82 +		The install status of the filter. Contains ETrue if installed, otherwise EFalse 
  556.83 +	*/
  556.84 +	//##ModelId=3C4C37DF036B
  556.85 +	TBool iInstallStatus;
  556.86 +
  556.87 +	/**
  556.88 +	Default constructor that simply initialises the data members.
  556.89 +	@param			aDisplayName Reference to descriptor containing the display name
  556.90 +	@param			aDataType Reference to descriptor containing the data type
  556.91 +	@param			aVersion Integer of the version number
  556.92 +	@param			aFilterUid The UID of the filter plugin
  556.93 +	@param			aFilterCategory The category of the filter
  556.94 +	@param			aInstallStatus The install status of the filter plugin. Contains ETrue
  556.95 +					if installed or EFalse otherwise.
  556.96 +	@pre			None
  556.97 +	@post			Object is fully constructed and initialised
  556.98 +	*/
  556.99 +	//##ModelId=3C4C37DF03B1
 556.100 +	inline TFilterInformation(const TDesC& aDisplayName, const TDesC8& aDataType,
 556.101 +					   TInt aVersion, TUid aFilterUid,
 556.102 +					   TFilterCategory aFilterCategory, TBool aInstallStatus);
 556.103 +	};
 556.104 +
 556.105 +// Inline constructor, initialises data members
 556.106 +inline TFilterInformation::TFilterInformation(const TDesC& aDisplayName, const TDesC8& aDataType,
 556.107 +											  TInt aVersion, TUid aFilterUid,
 556.108 +											  TFilterCategory aFilterCategory, TBool aInstallStatus)
 556.109 +	:iDisplayName(aDisplayName),
 556.110 +	iDataType(aDataType),
 556.111 +	iVersion(aVersion),
 556.112 +	iFilterUid(aFilterUid),
 556.113 +	iFilterCategory(aFilterCategory),
 556.114 +	iInstallStatus(aInstallStatus)
 556.115 +	{
 556.116 +	}
 556.117 +
 556.118 +#endif // __TFILTERINFORMATION_H__
   557.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   557.2 +++ b/epoc32/include/mw/http/thttpevent.h	Wed Mar 31 12:27:01 2010 +0100
   557.3 @@ -0,0 +1,485 @@
   557.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   557.5 +// All rights reserved.
   557.6 +// This component and the accompanying materials are made available
   557.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   557.8 +// which accompanies this distribution, and is available
   557.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  557.10 +//
  557.11 +// Initial Contributors:
  557.12 +// Nokia Corporation - initial contribution.
  557.13 +//
  557.14 +// Contributors:
  557.15 +//
  557.16 +// Description:
  557.17 +//
  557.18 +
  557.19 +
  557.20 +
  557.21 +/**
  557.22 + @file THTTPEvent.h
  557.23 + @warning : This file contains Rose Model ID comments - please do not delete
  557.24 +*/
  557.25 +
  557.26 +#ifndef	__THTTPEVENT_H__
  557.27 +#define	__THTTPEVENT_H__
  557.28 +
  557.29 +// System includes
  557.30 +#include <e32std.h>
  557.31 +
  557.32 +/**
  557.33 +The HTTP UID. This UID is used for all events defined here.
  557.34 +@publishedAll
  557.35 +@released
  557.36 +*/
  557.37 +const TUint KHTTPUid				= 0x1000A441;
  557.38 +
  557.39 +/**
  557.40 +Wildcard Matching UID. When specified as part of an event then the UID event
  557.41 +part of the match will be ignored.
  557.42 +@publishedAll
  557.43 +@released
  557.44 +*/
  557.45 +const TUint KHTTPMatchAnyEventUid	=  0x1000A44C;
  557.46 +
  557.47 +/**
  557.48 +The base status code for transaction events. Any number above this but below
  557.49 +KSessionEventBaseStatus is a transaction event.
  557.50 +@publishedAll
  557.51 +@released
  557.52 +*/
  557.53 +const TInt KTransactionEventBaseStatus		= 0;
  557.54 +
  557.55 +/**
  557.56 +The base status code for transaction warning events.
  557.57 +@publishedAll
  557.58 +@released
  557.59 +*/
  557.60 +const TInt KTransactionWarningBaseStatus	= 10000;
  557.61 +
  557.62 +/**
  557.63 +The base status code for session events. Any number above this is a session 
  557.64 +event.
  557.65 +@publishedAll
  557.66 +@released
  557.67 +*/
  557.68 +const TInt KSessionEventBaseStatus			= 100000;
  557.69 +
  557.70 +/**
  557.71 +The base status code for session warning events.
  557.72 +@publishedAll
  557.73 +@released
  557.74 +*/
  557.75 +const TInt KSessionWarningBaseStatus		= 110000;
  557.76 +
  557.77 +
  557.78 +//##ModelId=3C4C18740294
  557.79 +class THTTPEvent
  557.80 +/**
  557.81 +A HTTP status message. Status messages consist of a UID and a
  557.82 +status code within that UID. Extension dlls that needs to create
  557.83 +new status messages should use their own UID and create status codes
  557.84 +within that UID.
  557.85 +@publishedAll
  557.86 +@released
  557.87 +*/
  557.88 +	{
  557.89 +public:	
  557.90 +
  557.91 +	/** The TStandardEvent type is used to specify a family of event types. Any
  557.92 +		negative event number is used to convey error codes. All events are 
  557.93 +		incoming (originate with the origin server) unless otherwise indicated. 
  557.94 +		Outgoing messages will not be seen by the MHTTPTransactionCallback's 
  557.95 +		MHFRunL.
  557.96 +	 */
  557.97 +	enum TStandardEvent
  557.98 +		{
  557.99 +		/** Used when registering filter to indicate the filter is instrested 
 557.100 +			in ALL events, both transaction and session events.
 557.101 +		 */
 557.102 +		EAll					= KRequestPending + 1,
 557.103 +		/** Used when registering filters to indicate the filter is interested
 557.104 +			in any transaction event, from any direction.
 557.105 +		 */
 557.106 +		EAnyTransactionEvent	= KRequestPending,
 557.107 +		/** Used when registering filters to indicate the filter is interested 
 557.108 +			in any session event.
 557.109 +		 */
 557.110 +		EAnySessionEvent		= KSessionEventBaseStatus
 557.111 +		};
 557.112 +
 557.113 +	/** The TTransactionEvents type defines the events that correspond to 
 557.114 +		transactions. Outgoing events originate from the client or from filters.
 557.115 +		The clients do not send these explicitly since the API methods of 
 557.116 +		RHTTPTransaction do it on their behalf. Incoming events originate from 
 557.117 +		the protocol handler or from filters, and clients should handle these.
 557.118 +		The ESucceeded and EFailed events are mutually exclusive, but one will
 557.119 +		always be sent to the client as the final event for a transaction.
 557.120 +	 */
 557.121 +	enum TTransactionEvent
 557.122 +		{
 557.123 +		/** The transaction is being submitted. An outgoing event.
 557.124 +		*/
 557.125 +		ESubmit						= KTransactionEventBaseStatus,
 557.126 +		/** The transaction is being cancelled. An outgoing event. 
 557.127 +		*/
 557.128 +		ECancel						= KTransactionEventBaseStatus + 1,
 557.129 +		/** A new part of request body data is available for transmission. An
 557.130 +			outgoing event
 557.131 +		*/
 557.132 +		ENotifyNewRequestBodyPart	= KTransactionEventBaseStatus + 2,
 557.133 +		/** The transaction is being closed. An outgoing event. 
 557.134 +		*/
 557.135 +		EClosed						= KTransactionEventBaseStatus + 3,
 557.136 +		/** All the response headers have been received. An incoming event. 
 557.137 +		*/
 557.138 +		EGotResponseHeaders			= KTransactionEventBaseStatus + 4, 
 557.139 +		/** Some (more) body data has been received (in the HTTP response). An 
 557.140 +			incoming event.
 557.141 +		*/
 557.142 +		EGotResponseBodyData		= KTransactionEventBaseStatus + 5,
 557.143 +		/** The transaction's response is complete. An incoming event. 
 557.144 +		*/
 557.145 +		EResponseComplete			= KTransactionEventBaseStatus + 6,
 557.146 +		/** Some trailer headers have been received. An incoming event.
 557.147 +		*/
 557.148 +		EGotResponseTrailerHeaders	= KTransactionEventBaseStatus + 7,
 557.149 +		/** The transaction has succeeded. An incoming event.
 557.150 +		*/
 557.151 +		ESucceeded					= KTransactionEventBaseStatus + 8,
 557.152 +		/** The transaction has failed. This is a 'catch-all' for communicating
 557.153 +			failures, and more details of the failure should have been notified
 557.154 +			in previous messages or status codes. If the client could process 
 557.155 +			these then it is possible that it should not consider the transaction
 557.156 +			a failure. For instance a browser that displays the body of 404 
 557.157 +			responses to the user would not consider a 404 response to be a 
 557.158 +			failure, as it would display it just like a 200 response even though
 557.159 +			a 404 will be flagged as a 'failure'. An incoming event.
 557.160 +		*/
 557.161 +		EFailed						= KTransactionEventBaseStatus + 9, 
 557.162 +		/** Generated from RHTTPTransaction::Fail(). A filter has failed in a 
 557.163 +			way that prevents it from using the normal event mechanism to inform
 557.164 +			the client of the error. This probably means it's run out of memory.
 557.165 +			An incoming event.
 557.166 +		*/
 557.167 +		EUnrecoverableError			= KTransactionEventBaseStatus + 10,
 557.168 +		/** An event that indicates that there is too much request data to be 
 557.169 +			sent. The transaction will subsequently be cancelled. An incoming 
 557.170 +			event.
 557.171 +		*/
 557.172 +		ETooMuchRequestData			= KTransactionEventBaseStatus + 11,
 557.173 +
 557.174 +		
 557.175 +		/** If the returned status code for a transaciton is either 301, 302 or 307
 557.176 +            and the requested method is NOT a GET or HEAD, then the filter sends the 
 557.177 +            client an event ERedirectRequiresConfirmation as stated in RFC2616.
 557.178 +
 557.179 +            On receiving this event, the transaction is already setup with the redirected URI
 557.180 +            and the client is required to make the decision to whether to submit the 
 557.181 +            transaction or close the transaction.
 557.182 +
 557.183 +            If the requested method is GET or HEAD the transaction is automatically 
 557.184 +            redirected and this event is not used.
 557.185 +        */
 557.186 +		ERedirectRequiresConfirmation = KTransactionEventBaseStatus + 12,
 557.187 +
 557.188 +		/** A transaction has been specified to use a proxy and the request
 557.189 +			requires a tunnel to be establised to the origin server.
 557.190 +		*/
 557.191 +		ENeedTunnel					= KTransactionEventBaseStatus + 13,
 557.192 +		
 557.193 +		/** The client wishes to view the current cipher suite.
 557.194 +		*/
 557.195 +		EGetCipherSuite				= KTransactionEventBaseStatus + 14,
 557.196 +		
 557.197 +		/** The transaction's request is complete. An incoming event. 
 557.198 +		*/
 557.199 +		ERequestComplete			= KTransactionEventBaseStatus + 15,
 557.200 +		
 557.201 +		/**An event to signal that 100 Continue response has been received.
 557.202 +		*/
 557.203 +		EReceived100Continue		= KTransactionEventBaseStatus + 16,
 557.204 +		
 557.205 +		/**An event to cancel the wait for a 100-Continue event.
 557.206 +		*/
 557.207 +		ECancelWaitFor100Continue	= KTransactionEventBaseStatus + 17,
 557.208 +
 557.209 +		/**An event of Send Timeout for a Request.
 557.210 +		*/
 557.211 +		ESendTimeOut	= KTransactionEventBaseStatus + 18,
 557.212 +
 557.213 +		/**An event of Receive Timeout for a Response.
 557.214 +		*/
 557.215 +		EReceiveTimeOut	= KTransactionEventBaseStatus + 19
 557.216 +
 557.217 +		};
 557.218 +
 557.219 +	/** The TDirection type defines the direction of an event. An outgoing event
 557.220 +		originates from the client or from filters. The clients do not send these
 557.221 +		explicitly since the API methods of RHTTPTransaction or RHTTPSession do 
 557.222 +		it on their behalf. Incoming events originate from the protocol handler 
 557.223 +		or from filters, and clients should handle these.
 557.224 +	*/
 557.225 +	enum TDirection
 557.226 +		{
 557.227 +		/** An event originating with the client (e.g. start transaction).
 557.228 +		*/
 557.229 +		EOutgoing,
 557.230 +		/** An event originating with the server (e.g. something received). 
 557.231 +		*/
 557.232 +		EIncoming
 557.233 +		};
 557.234 +
 557.235 +	/** The TTransactionWarning type indicates that something in a transaction 
 557.236 +		may be incorrect but the transaction may continue. It may also indicate 
 557.237 +		that something (e.g. a filter) may have performed an action that has 
 557.238 +		changed the transaction and that the client should be informed of this.
 557.239 +	*/
 557.240 +	enum TTransactionWarning
 557.241 +		{
 557.242 +		/** An event indicating that the transaction has been redirected and the
 557.243 +			original origin server indicated that it was a permanent redirection.
 557.244 +			The URI for the transaction is now the redirected location. A 
 557.245 +			permanent redirection may require further client behavior if the 
 557.246 +			request came from a stored URI. This is to avoid further redirections 
 557.247 +			on subsequent requests for this resource.
 557.248 +		*/
 557.249 +		ERedirectedPermanently			= KTransactionWarningBaseStatus,
 557.250 +		/** An event indicating that the transaction has been redirected and the
 557.251 +			original server indicated that it was a temporary redirection. 
 557.252 +		*/
 557.253 +		ERedirectedTemporarily			= KTransactionWarningBaseStatus + 1,
 557.254 +		/** An event generated by the Protocol Handler when it receives a Content-
 557.255 +			Length value that does not match the actual length of the body data.
 557.256 +		*/
 557.257 +		EMoreDataReceivedThanExpected	= KTransactionWarningBaseStatus + 2
 557.258 +		};
 557.259 +
 557.260 +public:	// Methods
 557.261 +
 557.262 +	/** Constructor
 557.263 +		@param aStatus	The status value.
 557.264 +		@param aUID		The UID.
 557.265 +	*/
 557.266 +	//##ModelId=3C4C187402FB
 557.267 +	inline THTTPEvent(TInt aStatus, TUint aUID = KHTTPUid);
 557.268 +
 557.269 +	/** Constructor (using a standard event and the HTTP UID)
 557.270 +		@param aStatus	The standard event to use.
 557.271 +	*/
 557.272 +	//##ModelId=3C4C18740304
 557.273 +	inline THTTPEvent(TStandardEvent aStatus = EAnyTransactionEvent);
 557.274 +
 557.275 +	/** Constructor (using a transaction event and the HTTP UID)
 557.276 +		@param aStatus	The transaction event to use.
 557.277 +	*/
 557.278 +	//##ModelId=3C4C1874030C
 557.279 +	inline THTTPEvent(TTransactionEvent aStatus);
 557.280 +
 557.281 +	/** Assigns a standard event code to an event object
 557.282 +		@param aStatus	The standard event.
 557.283 +		@return The HTTP event object.
 557.284 +	*/
 557.285 +	//##ModelId=3C4C187402EF
 557.286 +	inline THTTPEvent& operator=(TStandardEvent aStatus);
 557.287 +
 557.288 +	/** Assigns a transaction event code to an event object
 557.289 +		@param aStatus	The transaction event.
 557.290 +		@return The HTTP event object.
 557.291 +	*/
 557.292 +	//##ModelId=3C4C187402F1
 557.293 +	inline THTTPEvent& operator=(TTransactionEvent aStatus);
 557.294 +
 557.295 +	/** Equality operator
 557.296 +		@param The HTTP event object to compare.
 557.297 +		@return ETrue if the HTTP event objects are equal. 
 557.298 +	*/
 557.299 +	//##ModelId=3C4C187402DA
 557.300 +	inline TBool operator==(THTTPEvent aThat) const;
 557.301 +
 557.302 +	/** Inequality operator
 557.303 +		@param The HTTP event object to compare.
 557.304 +		@return ETrue if the HTTP event objects are not equal. 
 557.305 +	*/
 557.306 +	//##ModelId=3C4C187402BD
 557.307 +	inline TBool operator!=(THTTPEvent aThat) const;
 557.308 +
 557.309 +	/** Equality operator (compares with a standard event)
 557.310 +		@param The standard event object to compare.
 557.311 +		@return ETrue if the standard event objects are equal.
 557.312 +	*/
 557.313 +	//##ModelId=3C4C187402DC
 557.314 +	inline TBool operator==(TStandardEvent aStatus) const;
 557.315 +
 557.316 +	/** Inequality operator (compares with a standard event)
 557.317 +		@param The standard event object to compare.
 557.318 +		@return ETrue if the standard event objects are not equal. 
 557.319 +	*/
 557.320 +	//##ModelId=3C4C187402C7
 557.321 +	inline TBool operator!=(TStandardEvent aStatus) const;
 557.322 +
 557.323 +	/** Equality operator (compares with a transaction event)
 557.324 +		@param The transaction event object to compare.
 557.325 +		@return ETrue if the transaction event objects are equal. 
 557.326 +	*/
 557.327 +	//##ModelId=3C4C187402E4
 557.328 +	inline TBool operator==(TTransactionEvent aStatus) const;
 557.329 +
 557.330 +	/** Inequality operator (compares with a transaction event)
 557.331 +		@param The transaction event object to compare.
 557.332 +		@return ETrue if the transaction event objects are not equal. 
 557.333 +	*/
 557.334 +	//##ModelId=3C4C187402D0
 557.335 +	inline TBool operator!=(TTransactionEvent aStatus) const;
 557.336 +	
 557.337 +	/** @return ETrue if the event is a session event
 557.338 +	*/
 557.339 +	//##ModelId=3C4C187402BC
 557.340 +	inline TBool IsSessionEvent() const;
 557.341 +
 557.342 +public:	// Attributes
 557.343 +
 557.344 +	/** The status value.
 557.345 +	 */
 557.346 +	//##ModelId=3C4C187402B4
 557.347 +	TInt iStatus;
 557.348 +
 557.349 +	/** The UID.
 557.350 +	 */
 557.351 +	//##ModelId=3C4C187402AA
 557.352 +	TUint iUID;
 557.353 +
 557.354 +protected: // Attributes
 557.355 +	/** Flag to indicate whether the event is a session event
 557.356 +	*/
 557.357 +	TBool iIsSessionEventFlag;
 557.358 +
 557.359 +	};
 557.360 +
 557.361 +
 557.362 +class THTTPSessionEvent : public THTTPEvent
 557.363 +/**
 557.364 +A HTTP session status message. Status messages consist of a UID and a
 557.365 +status code within that UID. Extension dlls that needs to create
 557.366 +new status messages should use their own UID and create status codes
 557.367 +within that UID.
 557.368 +@publishedAll
 557.369 +@released
 557.370 +*/
 557.371 +	{
 557.372 +public: // Enumerations
 557.373 +	/** The TSessionEvents type defines the evenst that correspond to the 
 557.374 +		of a session entity. Outgoing events originate from the client or from
 557.375 +		filters. Incoming events originate from the protocol handler or from 
 557.376 +		filters, and clients should handle these. 
 557.377 +	*/
 557.378 +	enum TSessionEvent
 557.379 +		{
 557.380 +		/** A session connection should be initiated. An outgoing event.
 557.381 +		*/
 557.382 +		EConnect							= KSessionEventBaseStatus,
 557.383 +		/** The session should be disconnected. An outgoing event.
 557.384 +		 */
 557.385 +		EDisconnect							= KSessionEventBaseStatus + 1,
 557.386 +		/** The session has been successfully connected. None of the client 
 557.387 +			requested capabilities were denied or reduced by the proxy. An 
 557.388 +			incoming event.
 557.389 +		*/
 557.390 +		EConnectedOK						= KSessionEventBaseStatus + 2,
 557.391 +		/** The session has been connected, but with one or more of the client 
 557.392 +			requested capabilities denied or reduced by the proxy. An incoming 
 557.393 +			event.
 557.394 +		*/
 557.395 +		EConnectedWithReducedCapabilities	= KSessionEventBaseStatus + 3,
 557.396 +		/** The session has been disconnected. This either confirms an earlier 
 557.397 +			EDisconnect event or indicates a forced disconnection by the proxy. 
 557.398 +			An incoming event.
 557.399 +		*/
 557.400 +		EDisconnected						= KSessionEventBaseStatus + 4,
 557.401 +		/** The authentication handshake succeeded with the automatic validation
 557.402 +			of the (proxy) server certificate.
 557.403 +		 */
 557.404 +		EAuthenticatedOK					= KSessionEventBaseStatus + 5,
 557.405 +		/** The authentication handshake failed.
 557.406 +		*/
 557.407 +		EAuthenticationFailure				= KSessionEventBaseStatus + 6,
 557.408 +		/** The connection attempt to the proxy timed out.
 557.409 +		*/
 557.410 +		EConnectionTimedOut					= KSessionEventBaseStatus + 7
 557.411 +		};
 557.412 +	
 557.413 +	/**
 557.414 +		HTTP session warning events.
 557.415 +	 */
 557.416 +	enum TSessionWarning
 557.417 +		{
 557.418 +		/** The client has requested a transaction event that requires a session
 557.419 +			to be connected or the connection to be initiated, but neither is
 557.420 +			currently true. The transaction event will be left pending until the
 557.421 +			session is connected. An incoming event.
 557.422 +		*/
 557.423 +		ENotConnected						= KSessionWarningBaseStatus,
 557.424 +		/** The proxy has sent some information that is not related to a 
 557.425 +			transaction and has no effect on the state of the session. The 
 557.426 +			information from the proxy is in the EProxyExceptionInfo property.
 557.427 +		*/
 557.428 +		EExceptionInfo						= KSessionWarningBaseStatus + 1,
 557.429 +		/** The client connection request was (permanently) redirected to a new
 557.430 +			WAP proxy address. The client should check the EWspProxyAddress 
 557.431 +			property for the new address. The client's access-point database can
 557.432 +			then be updated with this address. No notification is given of a 
 557.433 +			temporary redirection.
 557.434 +		*/
 557.435 +		ERedirected							= KSessionWarningBaseStatus + 2,
 557.436 +		/** The client has requested a session event that is not valid whilst
 557.437 +			the WSP session is trying to establish a connection.
 557.438 +		*/
 557.439 +		EAlreadyConnecting					= KSessionWarningBaseStatus + 3,
 557.440 +		/** The client has requested a session event that is not valid whilst
 557.441 +			the WSP session is in the Connected state.
 557.442 +		*/
 557.443 +		EAlreadyConnected					= KSessionWarningBaseStatus + 4,
 557.444 +		/** The client has requested a session event that is not valid whilst
 557.445 +			the WSP session is trying to close the connection.
 557.446 +		*/
 557.447 +		EAlreadyDisconnecting				= KSessionWarningBaseStatus + 5,
 557.448 +		/** The client has requested a session event that is not valid whilst
 557.449 +			the WSP session is in the Null (or disconnected) state.
 557.450 +		*/
 557.451 +		EAlreadyDisconnected				= KSessionWarningBaseStatus + 6
 557.452 +		};
 557.453 +
 557.454 +public:
 557.455 +	/** Constructor
 557.456 +		@param aStatus	The status value.
 557.457 +		@param aUID		The UID.
 557.458 +	*/
 557.459 +	inline THTTPSessionEvent(TInt aStatus, TUint aUID = KHTTPUid);
 557.460 +
 557.461 +	/** Constructor (using a standard event and the HTTP UID)
 557.462 +		@param aStatus	The standard event to use.
 557.463 +	*/
 557.464 +	inline THTTPSessionEvent(TStandardEvent aStatus = EAnySessionEvent);
 557.465 +
 557.466 +	/** Constructor (using a session event and the HTTP UID)
 557.467 +		@param aStatus	The session event to use.
 557.468 +	*/
 557.469 +	inline THTTPSessionEvent(TSessionEvent aStatus);
 557.470 +
 557.471 +	/** Assigns a session event code to an event object
 557.472 +		@param aStatus	The session event.
 557.473 +	*/
 557.474 +	//##ModelId=3C4C187402F9
 557.475 +	inline THTTPSessionEvent& operator=(TSessionEvent aStatus);
 557.476 +
 557.477 +	/// Equality operator (compares with a session event)
 557.478 +	//##ModelId=3C4C187402E6
 557.479 +	inline TBool operator==(TSessionEvent aStatus) const;
 557.480 +
 557.481 +	/// Inequality operator (compares with a session event)
 557.482 +	//##ModelId=3C4C187402D2
 557.483 +	inline TBool operator!=(TSessionEvent aStatus) const;
 557.484 +	};
 557.485 +
 557.486 +#include <http/thttpevent.inl>
 557.487 +
 557.488 +#endif // __THTTPEVENT_H__
   558.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   558.2 +++ b/epoc32/include/mw/http/thttpevent.inl	Wed Mar 31 12:27:01 2010 +0100
   558.3 @@ -0,0 +1,114 @@
   558.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   558.5 +// All rights reserved.
   558.6 +// This component and the accompanying materials are made available
   558.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   558.8 +// which accompanies this distribution, and is available
   558.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  558.10 +//
  558.11 +// Initial Contributors:
  558.12 +// Nokia Corporation - initial contribution.
  558.13 +//
  558.14 +// Contributors:
  558.15 +//
  558.16 +// Description:
  558.17 +//
  558.18 +
  558.19 +
  558.20 +inline THTTPEvent::THTTPEvent(TInt aStatus, TUint aUID)
  558.21 +: iStatus(aStatus), iUID(aUID), iIsSessionEventFlag(EFalse)
  558.22 +	{
  558.23 +	}
  558.24 +
  558.25 +inline THTTPEvent::THTTPEvent(TStandardEvent aStatus)
  558.26 +: iStatus(aStatus), iUID(KHTTPUid), iIsSessionEventFlag(EFalse)
  558.27 +	{
  558.28 +	}
  558.29 +
  558.30 +inline THTTPEvent::THTTPEvent(TTransactionEvent aStatus)
  558.31 +: iStatus(aStatus), iUID(KHTTPUid), iIsSessionEventFlag(EFalse)
  558.32 +	{
  558.33 +	}
  558.34 +
  558.35 +inline THTTPEvent& THTTPEvent::operator=(TStandardEvent aStatus)
  558.36 +	{
  558.37 +	iUID = KHTTPUid;
  558.38 +	iStatus = aStatus;
  558.39 +	return *this;
  558.40 +	}
  558.41 +
  558.42 +inline THTTPEvent& THTTPEvent::operator=(TTransactionEvent aStatus)
  558.43 +	{
  558.44 +	iUID = KHTTPUid;
  558.45 +	iStatus = aStatus;
  558.46 +	return *this;
  558.47 +	}
  558.48 +
  558.49 +inline TBool THTTPEvent::operator==(THTTPEvent aThat) const
  558.50 +	{
  558.51 +	return (iStatus == aThat.iStatus && iUID == aThat.iUID);
  558.52 +	}
  558.53 +
  558.54 +inline TBool THTTPEvent::operator!=(THTTPEvent aThat) const
  558.55 +	{
  558.56 +	return !(*this == aThat);
  558.57 +	}
  558.58 +
  558.59 +inline TBool THTTPEvent::operator==(TStandardEvent aStatus) const
  558.60 +	{
  558.61 +	return (iStatus == aStatus && iUID == KHTTPUid);
  558.62 +	}
  558.63 +
  558.64 +inline TBool THTTPEvent::operator!=(TStandardEvent aStatus) const
  558.65 +	{
  558.66 +	return !(*this == aStatus);
  558.67 +	}
  558.68 +
  558.69 +inline TBool THTTPEvent::operator==(TTransactionEvent aStatus) const
  558.70 +	{
  558.71 +	return (iStatus == aStatus && iUID == KHTTPUid);
  558.72 +	}
  558.73 +
  558.74 +inline TBool THTTPEvent::operator!=(TTransactionEvent aStatus) const
  558.75 +	{
  558.76 +	return !(*this == aStatus);
  558.77 +	}
  558.78 +
  558.79 +inline TBool THTTPEvent::IsSessionEvent() const
  558.80 +	{
  558.81 +	return iIsSessionEventFlag;
  558.82 +	}
  558.83 +
  558.84 +inline THTTPSessionEvent::THTTPSessionEvent(TInt aStatus, TUint aUID)
  558.85 +: THTTPEvent(aStatus, aUID)
  558.86 +	{
  558.87 +	iIsSessionEventFlag = ETrue;
  558.88 +	}
  558.89 +
  558.90 +inline THTTPSessionEvent::THTTPSessionEvent(TStandardEvent aStatus)
  558.91 +: THTTPEvent(aStatus)
  558.92 +	{
  558.93 +	iIsSessionEventFlag = ETrue;
  558.94 +	}
  558.95 +
  558.96 +inline THTTPSessionEvent::THTTPSessionEvent(TSessionEvent aStatus)
  558.97 +: THTTPEvent(aStatus)
  558.98 +	{
  558.99 +	iIsSessionEventFlag = ETrue;
 558.100 +	}
 558.101 +
 558.102 +inline THTTPSessionEvent& THTTPSessionEvent::operator=(TSessionEvent aStatus)
 558.103 +	{
 558.104 +	iUID = KHTTPUid;
 558.105 +	iStatus = aStatus;
 558.106 +	return *this;
 558.107 +	}
 558.108 +
 558.109 +inline TBool THTTPSessionEvent::operator==(TSessionEvent aStatus) const
 558.110 +	{
 558.111 +	return (iStatus == aStatus && iUID == KHTTPUid);
 558.112 +	}
 558.113 +
 558.114 +inline TBool THTTPSessionEvent::operator!=(TSessionEvent aStatus) const
 558.115 +	{
 558.116 +	return !(*this == aStatus);
 558.117 +	}
   559.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   559.2 +++ b/epoc32/include/mw/http/thttpfilterhandle.h	Wed Mar 31 12:27:01 2010 +0100
   559.3 @@ -0,0 +1,88 @@
   559.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   559.5 +// All rights reserved.
   559.6 +// This component and the accompanying materials are made available
   559.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   559.8 +// which accompanies this distribution, and is available
   559.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  559.10 +//
  559.11 +// Initial Contributors:
  559.12 +// Nokia Corporation - initial contribution.
  559.13 +//
  559.14 +// Contributors:
  559.15 +//
  559.16 +// Description:
  559.17 +//
  559.18 +
  559.19 +
  559.20 +
  559.21 +/**
  559.22 + @file THTTPFilterHandle.h
  559.23 + @warning : This file contains Rose Model ID comments - please do not delete
  559.24 +*/
  559.25 +
  559.26 +#ifndef	__THTTPFILTERHANDLE_H__
  559.27 +#define	__THTTPFILTERHANDLE_H__
  559.28 +
  559.29 +// System includes
  559.30 +#include <e32std.h>
  559.31 +
  559.32 +
  559.33 +//##ModelId=3A914DF50317
  559.34 +class THTTPFilterHandle
  559.35 +/** 
  559.36 +A Filter registration handle. This identifies a particular filter
  559.37 +registration, and is passed to the filter in MHFLoad. It is used
  559.38 +to identify filters for deletion and for locating the start point
  559.39 +for sending events. It is an opaque class; all you need to be able
  559.40 +to do with it is to compare them for equality.
  559.41 +@publishedAll
  559.42 +@released
  559.43 +*/
  559.44 +	{
  559.45 + public:
  559.46 +	/* Note. These are negative as values for particular filters use
  559.47 +       positive values.*/
  559.48 +	/** Alisases for the client, and the filters you're most likely to want
  559.49 +		to refer to.
  559.50 +	*/
  559.51 +	enum TStandardValues
  559.52 +		{
  559.53 +		EUndefined = 0, ///< Undefined default value.
  559.54 +		EClient = -1, ///< Placeholder for the client.
  559.55 +		EProtocolHandler = -2, ///< Constant value for the protocol handler.
  559.56 +		/// When sending an event from a MHFRunL, indicates the current filter.
  559.57 +		ECurrentFilter = -3 
  559.58 +		};
  559.59 + public:
  559.60 +	//##ModelId=3A914DF50336
  559.61 +	inline THTTPFilterHandle(TStandardValues aVal = EUndefined);
  559.62 +	//##ModelId=3A914DF5032D
  559.63 +	inline TBool operator==(THTTPFilterHandle aThat) const;
  559.64 +	//##ModelId=3A914DF5032B
  559.65 +	inline TBool operator!=(THTTPFilterHandle aThat) const;
  559.66 + private:
  559.67 +	//##ModelId=3A914DF50323
  559.68 +	TInt iValue;
  559.69 +	friend class RHTTPSession;
  559.70 +	friend class RHTTPFilterCollection;
  559.71 +	friend class CHTTPSession;
  559.72 +	friend class CTransaction;
  559.73 +	};  
  559.74 +
  559.75 +inline THTTPFilterHandle::THTTPFilterHandle(TStandardValues aVal)
  559.76 +		: iValue(aVal)
  559.77 +	{
  559.78 +	}
  559.79 +
  559.80 +inline TBool THTTPFilterHandle::operator==(THTTPFilterHandle aThat) const
  559.81 +	{
  559.82 +	return iValue == aThat.iValue;
  559.83 +	}
  559.84 +
  559.85 +inline TBool THTTPFilterHandle::operator!=(THTTPFilterHandle aThat) const
  559.86 +	{
  559.87 +	return !(*this == aThat);
  559.88 +	}
  559.89 +
  559.90 +
  559.91 +#endif // __THTTPFILTERHANDLE_H__
   560.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   560.2 +++ b/epoc32/include/mw/http/thttpfilteriterator.h	Wed Mar 31 12:27:01 2010 +0100
   560.3 @@ -0,0 +1,115 @@
   560.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   560.5 +// All rights reserved.
   560.6 +// This component and the accompanying materials are made available
   560.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   560.8 +// which accompanies this distribution, and is available
   560.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  560.10 +//
  560.11 +// Initial Contributors:
  560.12 +// Nokia Corporation - initial contribution.
  560.13 +//
  560.14 +// Contributors:
  560.15 +//
  560.16 +// Description:
  560.17 +//
  560.18 +
  560.19 +
  560.20 +
  560.21 +/**
  560.22 + @file THTTPFilterIterator.h
  560.23 + @warning : This file contains Rose Model ID comments - please do not delete
  560.24 +*/
  560.25 +
  560.26 +#ifndef	__THTTPFILTERITERATOR_H__
  560.27 +#define	__THTTPFILTERITERATOR_H__ 
  560.28 +
  560.29 +// System includes
  560.30 +#include <e32std.h>
  560.31 +#include <stringpool.h>
  560.32 +#include <http/thttpfilterregistration.h>
  560.33 +
  560.34 +// Forward declarations
  560.35 +class CHTTPSession;
  560.36 +
  560.37 +
  560.38 +//##ModelId=3C4C187A0152
  560.39 +class THTTPFilterIterator 
  560.40 +/** 
  560.41 +An iterator for RHTTPFilterCollection. The iterator can iterate
  560.42 +over a subset of the filters in the collection, depending on how it
  560.43 +was created. See RHTTPFilterCollection::Query for more details. In
  560.44 +the documentation here, 'the collection' always refers to the
  560.45 +filters that this iterator can see.
  560.46 +@publishedAll
  560.47 +@released
  560.48 +*/
  560.49 +	{
  560.50 + public:
  560.51 +	/** Non-initialised constructor. Note, to get an initialised one
  560.52 +        that actualy points to a filter collection, use
  560.53 +        RHTTPFilterCollection::Query */
  560.54 +	//##ModelId=3C4C187A01A2
  560.55 +	inline THTTPFilterIterator();
  560.56 +
  560.57 +	/** Moves the iterator to the first member of the collection */
  560.58 +	//##ModelId=3C4C187A019A
  560.59 +	inline void First();
  560.60 +
  560.61 +	/** Returns ETrue if the iterator is at the end of the collection */
  560.62 +	//##ModelId=3C4C187A0199
  560.63 +	IMPORT_C TBool AtEnd() const;
  560.64 +
  560.65 +	/** Moves on to the next item in the collection */
  560.66 +	//##ModelId=3C4C187A0198
  560.67 +	IMPORT_C THTTPFilterIterator& operator++();
  560.68 +
  560.69 +	/** Returns the filter that the iterator is pointing at */
  560.70 +	//##ModelId=3C4C187A0190
  560.71 +	IMPORT_C const THTTPFilterRegistration& operator()() const;
  560.72 +
  560.73 +	/** Returns the filter that the iterator is pointing at */
  560.74 +	//##ModelId=3C4C187A018F
  560.75 +	inline const THTTPFilterRegistration& operator*() const;
  560.76 +
  560.77 +	/** Returns the filter that the iterator is pointing at */
  560.78 +	//##ModelId=3C4C187A018E
  560.79 +	inline const THTTPFilterRegistration& operator->() const;
  560.80 +
  560.81 + private:
  560.82 +	friend class RHTTPFilterCollection;
  560.83 +
  560.84 +	//##ModelId=3C4C187A017C
  560.85 +	CHTTPSession* iImplementation;
  560.86 +
  560.87 +	//##ModelId=3C4C187A0172
  560.88 +	TInt iPos;
  560.89 +
  560.90 +	//##ModelId=3C4C187A0168
  560.91 +	RStringTokenF iName;
  560.92 +	};
  560.93 +
  560.94 +
  560.95 +inline THTTPFilterIterator::THTTPFilterIterator()
  560.96 +		: iImplementation(NULL), iPos(0)
  560.97 +	{
  560.98 +	}
  560.99 +
 560.100 +inline void THTTPFilterIterator::First()
 560.101 +	{
 560.102 +	iPos = -1;
 560.103 +	operator++();
 560.104 +	}
 560.105 +
 560.106 +inline const THTTPFilterRegistration& THTTPFilterIterator::operator*() const
 560.107 +	{
 560.108 +	return operator()();
 560.109 +	}
 560.110 +
 560.111 +inline const THTTPFilterRegistration& THTTPFilterIterator::operator->() const
 560.112 +	{
 560.113 +	return operator()();
 560.114 +	}
 560.115 +
 560.116 +
 560.117 +
 560.118 +#endif //	__THTTPFILTERITERATOR_H__
   561.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   561.2 +++ b/epoc32/include/mw/http/thttpfilterregistration.h	Wed Mar 31 12:27:01 2010 +0100
   561.3 @@ -0,0 +1,102 @@
   561.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   561.5 +// All rights reserved.
   561.6 +// This component and the accompanying materials are made available
   561.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   561.8 +// which accompanies this distribution, and is available
   561.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  561.10 +//
  561.11 +// Initial Contributors:
  561.12 +// Nokia Corporation - initial contribution.
  561.13 +//
  561.14 +// Contributors:
  561.15 +//
  561.16 +// Description:
  561.17 +//
  561.18 +
  561.19 +
  561.20 +
  561.21 +/**
  561.22 + @file THTTPFilterRegistration.h
  561.23 + @warning : This file contains Rose Model ID comments - please do not delete
  561.24 +*/
  561.25 +
  561.26 +#ifndef __THTTPFILTERREGISTRATION_H__
  561.27 +#define __THTTPFILTERREGISTRATION_H__ 
  561.28 +
  561.29 +// System includes
  561.30 +#include <e32std.h>
  561.31 +#include <stringpool.h>
  561.32 +#include <http/thttpevent.h>
  561.33 +
  561.34 +// Forward declarations
  561.35 +class MHTTPFilter;
  561.36 +
  561.37 +
  561.38 +//##ModelId=3C4C187D0188
  561.39 +class THTTPFilterRegistration
  561.40 +/** 
  561.41 +A registration of a filter in the filter queue
  561.42 +@publishedAll
  561.43 +@released
  561.44 +*/
  561.45 +	{
  561.46 + public:
  561.47 +	/// Default constructor
  561.48 +	//##ModelId=3C4C187D020B
  561.49 +	THTTPFilterRegistration();
  561.50 +	/// Constructor
  561.51 +	//##ModelId=3C4C187D0214
  561.52 +	THTTPFilterRegistration(MHTTPFilter& aFilter, THTTPEvent aEvent,
  561.53 +						RStringTokenF aHeader, TInt aStatusCode, 
  561.54 +						TInt aPosition, RStringTokenF aName, TInt aHandle);
  561.55 +	/// Equality operator
  561.56 +	//##ModelId=3C4C187D0201
  561.57 +	TBool operator==(THTTPFilterRegistration& aThat);
  561.58 +	/// Inequality operator
  561.59 +	//##ModelId=3C4C187D01F9
  561.60 +	TBool operator!=(THTTPFilterRegistration& aThat);
  561.61 +
  561.62 + public:
  561.63 +	/// The position
  561.64 +	//##ModelId=3C4C187D01F6
  561.65 +	TInt				iPosition; // This MUST be first!
  561.66 +	/// The filter
  561.67 +	//##ModelId=3C4C187D01E4
  561.68 +	MHTTPFilter*		iFilter;
  561.69 +	/// The event it's interested in (or any)
  561.70 +	//##ModelId=3C4C187D01D8
  561.71 +	THTTPEvent			iEvent;
  561.72 +	/// The header it's interested in (or any)
  561.73 +	//##ModelId=3C4C187D01C6
  561.74 +	RStringTokenF	iHeader;
  561.75 +	/// The status it's interested in (or any)
  561.76 +	//##ModelId=3C4C187D01BC
  561.77 +	TInt				iStatus;
  561.78 +	/// The name of the filter
  561.79 +	//##ModelId=3C4C187D01B2
  561.80 +	RStringTokenF    iName;
  561.81 +	/// The handle of the filter
  561.82 +	//##ModelId=3C4C187D01A8
  561.83 +	TInt                iHandle;
  561.84 +	};
  561.85 +
  561.86 +inline THTTPFilterRegistration::THTTPFilterRegistration()
  561.87 +		: iEvent(THTTPEvent::EAll)
  561.88 +	{
  561.89 +	}
  561.90 +
  561.91 +inline THTTPFilterRegistration::THTTPFilterRegistration(MHTTPFilter& aFilter, 
  561.92 +														THTTPEvent aEvent,
  561.93 +														RStringTokenF aHeader,
  561.94 +														TInt aStatusCode, 
  561.95 +														TInt aPosition,
  561.96 +														RStringTokenF aName,
  561.97 +														TInt aHandle)
  561.98 +		:iPosition(aPosition), iFilter(&aFilter), iEvent(aEvent),
  561.99 +	iHeader(aHeader), iStatus(aStatusCode) , iName(aName), iHandle(aHandle)
 561.100 +	{
 561.101 +	}
 561.102 +
 561.103 +
 561.104 +
 561.105 +#endif // __THTTPFILTERREGISTRATION_H__
   562.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   562.2 +++ b/epoc32/include/mw/http/thttphdrfielditer.h	Wed Mar 31 12:27:01 2010 +0100
   562.3 @@ -0,0 +1,106 @@
   562.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   562.5 +// All rights reserved.
   562.6 +// This component and the accompanying materials are made available
   562.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   562.8 +// which accompanies this distribution, and is available
   562.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  562.10 +//
  562.11 +// Initial Contributors:
  562.12 +// Nokia Corporation - initial contribution.
  562.13 +//
  562.14 +// Contributors:
  562.15 +//
  562.16 +// Description:
  562.17 +//
  562.18 +
  562.19 +
  562.20 +
  562.21 +/**
  562.22 + @file THTTPHdrFieldIter.h
  562.23 + @warning : This file contains Rose Model ID comments - please do not delete
  562.24 +*/
  562.25 +
  562.26 +#ifndef __THTTPHDRFIELDITER_H__
  562.27 +#define __THTTPHDRFIELDITER_H__
  562.28 +
  562.29 +// System includes
  562.30 +#include <e32std.h>
  562.31 +#include <stringpool.h>
  562.32 +
  562.33 +// Forward declarations
  562.34 +class CHeaders;
  562.35 +
  562.36 +
  562.37 +//##ModelId=3A914DFD005C
  562.38 +class THTTPHdrFieldIter
  562.39 +/** 
  562.40 +Iterator class to iterate the fields within a RHTTPHeaders. 
  562.41 +@publishedAll
  562.42 +@released
  562.43 +*/
  562.44 +	{
  562.45 +public:
  562.46 +	/** Construct an iterator for the fields of the supplied header collection.
  562.47 +		@param aHeaders The header collection whose fields we want to iterate
  562.48 +	*/
  562.49 +	//##ModelId=3A914DFD0087
  562.50 +	THTTPHdrFieldIter(const CHeaders* aHeaders);
  562.51 +	/** Class destructor
  562.52 +	*/
  562.53 +	//##ModelId=3A914DFD0086
  562.54 +	IMPORT_C ~THTTPHdrFieldIter();
  562.55 +
  562.56 +	/** Reset iterator to point at the first field in the header collection
  562.57 +	*/
  562.58 +	//##ModelId=3A914DFD0085
  562.59 +	IMPORT_C void First();
  562.60 +
  562.61 +	/** Check if the iterator is at the end of the collection. If so,
  562.62 +	    further calls to operator() will return NULL.
  562.63 +		@return True if the iterator has reached the end of the header
  562.64 +		fields 
  562.65 +	*/
  562.66 +	//##ModelId=3A914DFD0084
  562.67 +	IMPORT_C TBool AtEnd() const;
  562.68 +
  562.69 +	/** Advance the iterator to the next field.
  562.70 +		@return True if the iterator still points at a valid part
  562.71 +		after advancing.
  562.72 +	*/
  562.73 +	//##ModelId=3A914DFD007E
  562.74 +	IMPORT_C void operator++();
  562.75 +
  562.76 +	/** Obtain the name of the header field currently pointed at by
  562.77 +		the iterator.
  562.78 +		@return The field name; or <empty string> if the iterator has
  562.79 +		gone off the end of the header collection 
  562.80 +	*/
  562.81 +	//##ModelId=3A914DFD007D
  562.82 +	IMPORT_C RStringTokenF operator()();
  562.83 +
  562.84 +private:
  562.85 +
  562.86 +	/** Check the iterator state for invalidity following deletions in the collection
  562.87 +	*/
  562.88 +	//##ModelId=3BA613240002
  562.89 +	void CheckInvalidation();
  562.90 +
  562.91 +	/** The headers whose fields we are iterating.
  562.92 +	*/
  562.93 +	//##ModelId=3A914DFD007A
  562.94 +	const CHeaders* iHeaders;
  562.95 +	/** The index of the field in the header that is currently pointed
  562.96 +		at by the iterator
  562.97 +	*/
  562.98 +	//##ModelId=3A914DFD0072
  562.99 +	TInt iPosIdx;
 562.100 +	};
 562.101 +
 562.102 +inline THTTPHdrFieldIter::THTTPHdrFieldIter(const CHeaders* aHeaders)
 562.103 +	: iHeaders(aHeaders)
 562.104 +	{
 562.105 +	First();
 562.106 +	}
 562.107 +
 562.108 +
 562.109 +#endif // __THTTPHDRFIELDITER_H__
   563.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   563.2 +++ b/epoc32/include/mw/http/thttphdrval.h	Wed Mar 31 12:27:01 2010 +0100
   563.3 @@ -0,0 +1,280 @@
   563.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   563.5 +// All rights reserved.
   563.6 +// This component and the accompanying materials are made available
   563.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   563.8 +// which accompanies this distribution, and is available
   563.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  563.10 +//
  563.11 +// Initial Contributors:
  563.12 +// Nokia Corporation - initial contribution.
  563.13 +//
  563.14 +// Contributors:
  563.15 +//
  563.16 +// Description:
  563.17 +//
  563.18 +
  563.19 +
  563.20 +
  563.21 +/**
  563.22 + @file THTTPHdrVal.h
  563.23 + @warning : This file contains Rose Model ID comments - please do not delete
  563.24 +*/
  563.25 +
  563.26 +#ifndef	__THTTPHDRVAL_H__
  563.27 +#define	__THTTPHDRVAL_H__
  563.28 +
  563.29 +// System includes
  563.30 +#include <e32std.h>
  563.31 +#include <stringpool.h>
  563.32 +
  563.33 +
  563.34 +//##ModelId=3C4C187E027A
  563.35 +class THTTPHdrVal
  563.36 +/** 
  563.37 +A representation of a value found in an HTTP header field. Three
  563.38 +fundamental types are used in HTTP - integers, strings (which may
  563.39 +be free text, 'enumeration values', URIs, etc. or date/times.
  563.40 +
  563.41 +The class allows any of the three values to be held and the current
  563.42 +value (as well as its type) to be determined.
  563.43 +
  563.44 +THTTPHdrVal instances are used to assign values to header fields, their
  563.45 +parts and their associated parameters.
  563.46 +@publishedAll
  563.47 +@released
  563.48 +@see RHTTPHeaders
  563.49 +*/
  563.50 +	{
  563.51 +public:
  563.52 +	/**
  563.53 +		@enum THTTPValType
  563.54 +	 */
  563.55 +	typedef enum {
  563.56 +	KTIntVal = 0x00,  /**< the value is an integer*/
  563.57 +	KStrVal  = 0x01,  /**< the value is a case-sensitive string*/
  563.58 +	KDateVal = 0x02,   /**< the value is a date/time*/
  563.59 +	KStrFVal = 0x03,   /**< the value is a case-insensitive string*/
  563.60 +	KNoType =  0x04    /**< no value has yet been set*/
  563.61 +	} THTTPValType;
  563.62 +
  563.63 +public: // classes
  563.64 +
  563.65 +	// A converter for 'q' parameter values; apparently real numbers in the HTTP RFC but here passed as fixed point
  563.66 +//##ModelId=3B1E66F2024E
  563.67 +	class TQConv
  563.68 +		{
  563.69 +	public:
  563.70 +		/// Construct from a real number representation of 'q'
  563.71 +	//##ModelId=3B1E66F20282
  563.72 +		TQConv(TReal aQ);
  563.73 +
  563.74 +		/// Construct from a fixed-point representation of 'q'
  563.75 +	//##ModelId=3B1E66F2028C
  563.76 +		TQConv(TInt aQ);
  563.77 +
  563.78 +		/// Integer cast operator to get the fixed-point representation
  563.79 +	//##ModelId=3B1E66F20281
  563.80 +		operator TInt() const;
  563.81 +
  563.82 +		/// TReal cast operator to get the real number representation
  563.83 +	//##ModelId=3B1E66F20280
  563.84 +		operator TReal() const;
  563.85 +	private:
  563.86 +		/// The real number q-value
  563.87 +	//##ModelId=3B1E66F2027A
  563.88 +		TReal iQ;
  563.89 +		/// The integer fixed-point q-value representation
  563.90 +	//##ModelId=3B1E66F2026E
  563.91 +		TInt iFQ;
  563.92 +		};
  563.93 +
  563.94 +public:
  563.95 +	/** Default constructor	
  563.96 +		Used when constructing an empty header value that is to be filled in by
  563.97 +		a call to a function. e.g. RHTTPHeaders::GetField
  563.98 +	*/
  563.99 +	IMPORT_C THTTPHdrVal();
 563.100 +
 563.101 +	/** Constructor for an integer field value
 563.102 +		@param aIntVal The integer value
 563.103 +	*/
 563.104 +	IMPORT_C THTTPHdrVal(TInt aIntVal);
 563.105 +
 563.106 +	/** Constructor for an string value
 563.107 +		@param aStrVal The string value
 563.108 +	*/
 563.109 +	IMPORT_C THTTPHdrVal(RStringF aStrVal);
 563.110 +	/** Constructor for an string value
 563.111 +		@param aStrVal The string value
 563.112 +	*/
 563.113 +	IMPORT_C THTTPHdrVal(RString aStrVal);
 563.114 +
 563.115 +	/** Constructor for an date/time value
 563.116 +		@param aDateVal The date/time value
 563.117 +	*/
 563.118 +	IMPORT_C THTTPHdrVal(TDateTime aDateVal);
 563.119 +
 563.120 +	/** Obtain a copy of this header value.  This is critical when the header contains a string, since
 563.121 +		a new string reference must be created
 563.122 +		@return The copied header value
 563.123 +	*/
 563.124 +	//##ModelId=3C4C187E02F3
 563.125 +	IMPORT_C THTTPHdrVal Copy() const;
 563.126 +
 563.127 +	/** Determine the type of this header field value
 563.128 +		@return A THTTPValType enumeration describing the value's type
 563.129 +	*/
 563.130 +	//##ModelId=3C4C187E02F2
 563.131 +	IMPORT_C THTTPValType Type() const;
 563.132 +
 563.133 +	/** Obtain the (integer) value held within
 563.134 +		Panics if the value is of the wring type
 563.135 +		@pre Requires that the object was previously set to hold a TInt
 563.136 +		@return An integer value
 563.137 +	*/
 563.138 +	//##ModelId=3C4C187E02EA
 563.139 +	IMPORT_C TInt Int() const;
 563.140 +
 563.141 +	/** Cast operator to obtain the HTTP value as an integer.  
 563.142 +		Note this doesn't convert from a different form to integer!
 563.143 +		Panics if the value is of the wrong type
 563.144 +		@pre Requires that the object was previously set to hold a TInt
 563.145 +	*/
 563.146 +	//##ModelId=3C4C187E02E9
 563.147 +	inline operator TInt() const;
 563.148 +
 563.149 +    /** Obtain the (string) value held within
 563.150 +		Panics if the value is of the wring type
 563.151 +		@pre Requires that the object was previously set to hold a string
 563.152 +		@return A string
 563.153 +	*/
 563.154 +	//##ModelId=3C4C187E02E8
 563.155 +	IMPORT_C RStringF StrF() const;
 563.156 +	//##ModelId=3C4C187E02E0
 563.157 +	IMPORT_C RString Str() const;
 563.158 +
 563.159 +	/** Cast operator to obtain the HTTP value as a string.  
 563.160 +		Note this doesn't convert from a different form to string!
 563.161 +		Panics if the value is of the wring type
 563.162 +		@pre Requires that the object was previously set to hold a string
 563.163 +	*/
 563.164 +	//##ModelId=3C4C187E02DF
 563.165 +	inline operator RStringF() const;
 563.166 +	/** Cast operator to obtain the HTTP value as a string.  
 563.167 +		Note this doesn't convert from a different form to string!
 563.168 +		Panics if the value is of the wring type
 563.169 +		@pre Requires that the object was previously set to hold a string
 563.170 +	*/
 563.171 +	//##ModelId=3C4C187E02DE
 563.172 +	inline operator RString() const;
 563.173 +
 563.174 +	/** Obtain the (date/time) value held within.
 563.175 +		Panics if the value is of the wrong type
 563.176 +		@pre Requires that the object was previously set to hold a TDateTime
 563.177 +		@return An date/time value
 563.178 +	*/
 563.179 +	//##ModelId=3C4C187E02D6
 563.180 +	IMPORT_C TDateTime DateTime() const;
 563.181 +
 563.182 +	/** Cast operator to obtain the HTTP value as an date/time.  
 563.183 +		Note this doesn't convert from a different form to date!
 563.184 +		Panics if the value is of the wring type
 563.185 +		@pre Requires that the object was previously set to hold a TDateTime
 563.186 +	*/
 563.187 +	//##ModelId=3C4C187E02D5
 563.188 +	inline operator TDateTime() const;
 563.189 +
 563.190 +	/** Set the header value to be the supplied integer. 
 563.191 +		@warning Any previous value, or its type, are lost.
 563.192 +		@param aIntVal The integer value
 563.193 +	*/
 563.194 +	//##ModelId=3C4C187E02CC
 563.195 +	IMPORT_C void SetInt(TInt aIntVal);
 563.196 +
 563.197 +	/** Set the header value to be the supplied string. 
 563.198 +		@warning Any previous value, or its type, are lost.
 563.199 +		@param aStrVal The string value
 563.200 +	*/
 563.201 +	//##ModelId=3C4C187E02CA
 563.202 +	IMPORT_C void SetStrF(RStringF aStrVal);
 563.203 +	/** Set the header value to be the supplied string. Any previous
 563.204 +		value, or its type, are lost.
 563.205 +		@param aStrVal The string value */
 563.206 +	//##ModelId=3C4C187E02C2
 563.207 +	IMPORT_C void SetStr(RString aStrVal);
 563.208 +
 563.209 +	/** Set the header value to be the supplied date/time. Any previous value, or its type, are lost.
 563.210 +		@param aDateVal The date/time value
 563.211 +	*/
 563.212 +	//##ModelId=3C4C187E02C0
 563.213 +	IMPORT_C void SetDateTime(TDateTime aDateVal);
 563.214 +
 563.215 +	/** Comparison operator.  Does a comparison based on the current type.
 563.216 +		@param aVal The header value to compare. */
 563.217 +	//##ModelId=3C4C187E02B8
 563.218 +	IMPORT_C TBool operator==(THTTPHdrVal aVal) const;
 563.219 +
 563.220 +	/** Comparison operator.  Does a comparison based on the current type.
 563.221 +		@param aVal The string to compare. */
 563.222 +	//##ModelId=3C4C187E02B6
 563.223 +	IMPORT_C TBool operator!=(THTTPHdrVal aVal) const;
 563.224 +
 563.225 +private:
 563.226 +	/** 
 563.227 +		The current type
 563.228 +	*/
 563.229 +	//##ModelId=3C4C187E02AC
 563.230 +	THTTPValType iType;
 563.231 +
 563.232 +	/** 
 563.233 +		The value 
 563.234 +	*/
 563.235 +	//##ModelId=3C4C187E02A4
 563.236 +	TInt iVal;
 563.237 +	//##ModelId=3C4C187E029A
 563.238 +	TInt iMoreSpace;
 563.239 +	};
 563.240 +
 563.241 +inline THTTPHdrVal::TQConv::TQConv(TReal aQ)
 563.242 +	: iQ(aQ), iFQ((TInt)(iQ*1000))
 563.243 +	{
 563.244 +	}
 563.245 +
 563.246 +inline THTTPHdrVal::TQConv::TQConv(TInt aFQ)
 563.247 +	: iQ((TReal)(aFQ/1000.)), iFQ(aFQ)
 563.248 +	{
 563.249 +	}
 563.250 +
 563.251 +inline THTTPHdrVal::TQConv::operator TInt() const
 563.252 +	{
 563.253 +	return iFQ;
 563.254 +	}
 563.255 +
 563.256 +inline THTTPHdrVal::TQConv::operator TReal() const
 563.257 +	{
 563.258 +	return iQ;
 563.259 +	}
 563.260 +
 563.261 +inline THTTPHdrVal::operator TInt() const
 563.262 +	{
 563.263 +	return Int();
 563.264 +	}
 563.265 +
 563.266 +inline THTTPHdrVal::operator RStringF() const
 563.267 +	{
 563.268 +	return StrF();
 563.269 +	}
 563.270 +
 563.271 +inline THTTPHdrVal::operator RString() const
 563.272 +	{
 563.273 +	return Str();
 563.274 +	}
 563.275 +
 563.276 +inline THTTPHdrVal::operator TDateTime() const
 563.277 +	{
 563.278 +	return DateTime();
 563.279 +	}
 563.280 +
 563.281 +
 563.282 +
 563.283 +#endif // __THTTPHDRVAL_H__
   564.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   564.2 +++ b/epoc32/include/mw/httperr.h	Wed Mar 31 12:27:01 2010 +0100
   564.3 @@ -0,0 +1,882 @@
   564.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   564.5 +// All rights reserved.
   564.6 +// This component and the accompanying materials are made available
   564.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   564.8 +// which accompanies this distribution, and is available
   564.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  564.10 +//
  564.11 +// Initial Contributors:
  564.12 +// Nokia Corporation - initial contribution.
  564.13 +//
  564.14 +// Contributors:
  564.15 +//
  564.16 +// Description:
  564.17 +//
  564.18 +
  564.19 +
  564.20 +
  564.21 +/**
  564.22 + @file httperr.h
  564.23 + @warning : This file contains Rose Model ID comments - please do not delete
  564.24 +*/
  564.25 +
  564.26 +#ifndef __HTTPERR_H__
  564.27 +#define __HTTPERR_H__
  564.28 +
  564.29 +// System includes
  564.30 +#include <e32std.h>
  564.31 +
  564.32 +//##ModelId=3C4C18750141
  564.33 +class HTTPStatus
  564.34 +/** 
  564.35 +The complete set of HTTP Status codes, as defined in RFC2616.
  564.36 +@publishedAll
  564.37 +@released
  564.38 +*/
  564.39 +	{
  564.40 +public:
  564.41 +	enum 
  564.42 +		{
  564.43 +		/** 'Informational' range of codes 1xx 
  564.44 +		*/ 
  564.45 +		/** Continue.
  564.46 +		*/
  564.47 +		EContinue						= 100, 
  564.48 +		/** Switching Protocols.
  564.49 +		*/
  564.50 +		ESwitchingProtocols				= 101,  
  564.51 +		/** 'Successful' range of codes 2xx 
  564.52 +		*/
  564.53 +		/** Ok.
  564.54 +		*/
  564.55 +		EOk								= 200,
  564.56 +		/** Created.
  564.57 +		*/
  564.58 +		ECreated						= 201,  
  564.59 +		/** The entry has been accepted.
  564.60 +		*/
  564.61 +		EAccepted						= 202,
  564.62 +		/** Non-Authoritative Information.
  564.63 +		*/
  564.64 +		ENonAuthoritativeInfo			= 203,
  564.65 +		/** No Content.
  564.66 +		*/
  564.67 +		ENoContent						= 204,
  564.68 +		/** Reset Content.
  564.69 +		*/
  564.70 +		EResetContent					= 205, 
  564.71 +		/** Partial Content.
  564.72 +		*/
  564.73 +		EPartialContent					= 206,
  564.74 +		/** 'Redirection' range of codes 3xx 
  564.75 +		*/
  564.76 +		/** Multiple Choices.
  564.77 +		*/
  564.78 +		EMultipleChoices				= 300, 
  564.79 +		/** Moved Permanently.
  564.80 +		*/
  564.81 +		EMovedPermanently				= 301,
  564.82 +		/** Found.
  564.83 +		Note, this is deprecated in HTTP/1.1 - 307 will be used instead
  564.84 +		*/
  564.85 +		EFound							= 302,  
  564.86 +		/** See Other.
  564.87 +		*/
  564.88 +		ESeeOther						= 303,
  564.89 +		/** Not Modified.
  564.90 +		*/
  564.91 +		ENotModified					= 304,
  564.92 +		/** Use Proxy.
  564.93 +		*/
  564.94 +		EUseProxy						= 305,
  564.95 +		/** Unused.
  564.96 +		*/
  564.97 +		EUnused							= 306,
  564.98 +		/** Temporary Redirect.
  564.99 +		*/
 564.100 +		ETemporaryRedirect				= 307,
 564.101 +		/** 'Client Error' range of codes 4xx 
 564.102 +		*/
 564.103 +		/** Bad Request.
 564.104 +		*/
 564.105 +		EBadRequest						= 400,
 564.106 +		/** Unauthorized.
 564.107 +		*/
 564.108 +		EUnauthorized					= 401,
 564.109 +		/** Payment Required. Note, this is reserved in HTTP/1.1
 564.110 +		*/
 564.111 +		EPaymentRequired				= 402, 
 564.112 +		/** Forbidden.
 564.113 +		*/
 564.114 +		EForbidden						= 403,
 564.115 +		/** Not Found.
 564.116 +		*/
 564.117 +		ENotFound						= 404,
 564.118 +		/** Method Not Allowed.
 564.119 +		*/
 564.120 +		EMethodNotAllowed				= 405,
 564.121 +		/** Not Acceptable.
 564.122 +		*/
 564.123 +		ENotAcceptable					= 406,
 564.124 +		/** Proxy Authentication Required.
 564.125 +		*/
 564.126 +		EProxyAuthenticationRequired	= 407,
 564.127 +		/** Request Timeout.
 564.128 +		*/
 564.129 +		ERequestTimeout					= 408,
 564.130 +		/** Conflict.
 564.131 +		*/
 564.132 +		EConflict						= 409,
 564.133 +		/** Gone.
 564.134 +		*/
 564.135 +		EGone							= 410,
 564.136 +		/** Length Required.
 564.137 +		*/
 564.138 +		ELengthRequired					= 411,
 564.139 +		/** Precondition Failed.
 564.140 +		*/
 564.141 +		EPreconditionFailed				= 412,
 564.142 +		/** Request Entity Too Large. 
 564.143 +		*/
 564.144 +		ERequestEntityTooLarge			= 413,
 564.145 +		/** Request-URI Too Long.
 564.146 +		*/
 564.147 +		ERequestURITooLong				= 414,
 564.148 +		/** Unsupported Media Type.
 564.149 +		*/
 564.150 +		EUnsupportedMediaType			= 415,
 564.151 +		/** Requested Range Not Satisfiable.
 564.152 +		*/
 564.153 +		ERequestedRangeNotSatisfiable	= 416,
 564.154 +		/** Expectation Failed.
 564.155 +		*/
 564.156 +		EExpectationFailed				= 417,
 564.157 +		/** 'Server Error' range of codes 5xx 
 564.158 +		*/
 564.159 +		/** Internal Server Error.
 564.160 +		*/
 564.161 +		EInternalServerError			= 500,
 564.162 +		/** Not Implemented.
 564.163 +		*/
 564.164 +		ENotImplemented					= 501,
 564.165 +		/** Bad Gateway.
 564.166 +		*/
 564.167 +		EBadGateway						= 502,
 564.168 +		/** Service Unavailable.
 564.169 +		*/
 564.170 +		EServiceUnavailable				= 503, 
 564.171 +		/** Gateway Timeout.
 564.172 +		*/
 564.173 +		EGatewayTimeout					= 504,
 564.174 +		/** HTTP Version Not Supported.
 564.175 +		*/
 564.176 +		EHTTPVersionNotSupported		= 505
 564.177 +		};
 564.178 +
 564.179 +		/** Is the supplied status code in the 1xx Informational range?
 564.180 +		@param aStatus Is the supplied status code in the 1xx Informational range?
 564.181 +		@return ETrue if the specified status code is in the 1xx Informational range.
 564.182 +		##ModelId=3C4C18750162
 564.183 +		*/
 564.184 +		inline static TBool IsInformational(TInt aStatus);
 564.185 +		
 564.186 +		
 564.187 +		/** Is the supplied status code in the 2xx Successful range?
 564.188 +		@param aStatus Is the supplied status code in the 2xx Successful range?
 564.189 +		@return ETrue if the specified status code is in the 2xx Successful range
 564.190 +		##ModelId=3C4C18750160
 564.191 +		*/
 564.192 +		inline static TBool IsSuccessful(TInt aStatus);
 564.193 +
 564.194 +		/** Is the supplied status code in the 3xx Redirection range? 
 564.195 +		@param aStatus Is the supplied status code in the 3xx Redirection range?
 564.196 +		@return	ETrue if the specified status code is in the 3xx Redirection range.
 564.197 +		##ModelId=3C4C18750159
 564.198 +		*/
 564.199 +		inline static TBool IsRedirection(TInt aStatus);
 564.200 +
 564.201 +		/** Is the supplied status code in the 4xx Client Error range? 
 564.202 +		@param aStatus Is the supplied status code in the 4xx Client Error range?
 564.203 +		@return ETrue if the specified status code is in the 4xx Client Error range.
 564.204 +		##ModelId=3C4C18750157
 564.205 +		*/
 564.206 +		inline static TBool IsClientError(TInt aStatus);
 564.207 +
 564.208 +		/** Is the supplied status code in the 5xx Server Error range? 
 564.209 +		@param aStatus Is the supplied status code in the 5xx Server Error range?
 564.210 +		@return ETrue if the specified status code is in the 5xx Server Error range.
 564.211 +		##ModelId=3C4C18750155
 564.212 +		*/
 564.213 +		inline static TBool IsServerError(TInt aStatus);
 564.214 +	};
 564.215 +
 564.216 +//
 564.217 +// HTTP Panic codes
 564.218 +//
 564.219 +
 564.220 +#include <e32base.h>
 564.221 +
 564.222 +// HTTPPanic::Panic(HTTPPanic:: )
 564.223 +
 564.224 +//##ModelId=3C4C18740352
 564.225 +class HTTPPanic
 564.226 +/**
 564.227 +HTTP panic codes
 564.228 +@publishedAll
 564.229 +@released
 564.230 +*/
 564.231 +	{
 564.232 +public:
 564.233 +	enum THTTPPanic
 564.234 +		{
 564.235 +		/** RHTTPSession session is already open. ( Panic HTTP-CORE 0 )
 564.236 +		*/
 564.237 +		ESessionAlreadyOpen,
 564.238 +		/** Specified field is missing. ( Panic HTTP-CORE 1 )
 564.239 +		*/
 564.240 +		EHeaderFieldMissing,
 564.241 +		/** Unused. ( Panic HTTP-CORE 2 )
 564.242 +		*/
 564.243 +		EHeaderParamMissing,
 564.244 +		/** Unused. ( Panic HTTP-CORE 2 )
 564.245 +		*/
 564.246 +		EHeaderInvalidPart,
 564.247 +		/** Mismatch between header's type and its attempted use. ( Panic HTTP-CORE 4 )
 564.248 +		*/
 564.249 +		EHeaderInvalidType,
 564.250 +		/** Unused. ( Panic HTTP-CORE 5 )
 564.251 +		*/
 564.252 +		ETransactionEventOutstanding,
 564.253 +		/** A transaction error occurred, and the MHFRunError() in use didn't handle it. ( Panic HTTP-CORE 6 )
 564.254 +		*/
 564.255 +		ETransactionUnhandledError,
 564.256 +		/** Attempted to add a filter while there is a transaction outstanding. ( Panic HTTP-CORE 6 )
 564.257 +		*/
 564.258 +		EAddingFilterWithOutstandingTransactions,
 564.259 +		/** Attempted to add a filter at a position not between the protocol handler and the client. ( Panic HTTP-CORE 8 )
 564.260 +		*/
 564.261 +		EFilterInvalidPosition,
 564.262 +		/** CHTTPEncoder object destroyed without its data being released. ( Panic HTTP-CORE 9 )
 564.263 +		*/
 564.264 +		EHTTPFormDataUnreleased,
 564.265 +		/** CHTTPEncoder object at the wrong state for adding data. ( Panic HTTP-CORE 10 ) 
 564.266 +		*/
 564.267 +		EHTTPFormSupplyingData,
 564.268 +		/** Unused. ( Panic HTTP-CORE 11 )
 564.269 +		*/
 564.270 +		EValidationFilterFailure,
 564.271 +		/** Invalid request data. ( Panic HTTP-CORE 12 )
 564.272 +		*/
 564.273 +		EInvalidTxData,
 564.274 +		/** Invalid response data. ( Panic HTTP-CORE 13 )
 564.275 +		*/
 564.276 +		EInvalidRxData,
 564.277 +		/** Unused. ( Panic HTTP-CORE 14 )
 564.278 +		*/
 564.279 +		ENoTransportHandlerSet,
 564.280 +		/** Unused. ( Panic HTTP-CORE 15 )
 564.281 +		*/
 564.282 +		EAuthenticationFilterBadState,
 564.283 +		/** An invalid filter handle was specified. ( Panic HTTP-CORE 16 )
 564.284 +		*/
 564.285 +		EInvalidFilterHandle
 564.286 +		};
 564.287 +
 564.288 +	//##ModelId=3C4C18740366
 564.289 +	static void Panic(THTTPPanic aPanic);
 564.290 +	};
 564.291 +
 564.292 +// HTTP external errors/leave codes. Add new sub-ranges at the end; do not insert between the sub-ranges that
 564.293 +// are already here.  This is to allow a client to reasonably check for errors between two adjacent range
 564.294 +// base values rather than check for individual codes.
 564.295 +
 564.296 +/**
 564.297 +Base value for the HTTP error code range (-7200 to -7399)
 564.298 +@publishedAll
 564.299 +@released
 564.300 +*/
 564.301 +const TInt KHttpErrorBase = -7200;
 564.302 +
 564.303 +//
 564.304 +// Text mode HTTP protocol handler
 564.305 +//
 564.306 +
 564.307 +/**
 564.308 +Codec encoding errors for HTTP headers
 564.309 +@publishedAll
 564.310 +@released
 564.311 +*/
 564.312 +const TInt KHttpHeaderEncodeErrorBase = KHttpErrorBase;
 564.313 +
 564.314 +/**
 564.315 +Error making a default encoding of unrecognised headers
 564.316 +@publishedAll
 564.317 +@released
 564.318 +*/
 564.319 +const TInt KErrHttpEncodeDefault			= KHttpHeaderEncodeErrorBase;
 564.320 +/**
 564.321 +Error encoding the Accept field
 564.322 +@publishedAll
 564.323 +@released
 564.324 +*/
 564.325 +const TInt KErrHttpEncodeAccept				= KHttpHeaderEncodeErrorBase - 1; 
 564.326 +/**
 564.327 +Error encoding the Accept-Charset field
 564.328 +@publishedAll
 564.329 +@released
 564.330 +*/
 564.331 +const TInt KErrHttpEncodeAcceptCharset		= KHttpHeaderEncodeErrorBase - 2; 
 564.332 +/**
 564.333 +Error encoding a q-value parameter
 564.334 +@publishedAll
 564.335 +@released
 564.336 +*/
 564.337 +const TInt KErrHttpEncodeQValue				= KHttpHeaderEncodeErrorBase - 3; 
 564.338 +/**
 564.339 +Error encoding the Authorization field
 564.340 +@publishedAll
 564.341 +@released
 564.342 +*/
 564.343 +const TInt KErrHttpEncodeAuthorization		= KHttpHeaderEncodeErrorBase - 4; 
 564.344 +/**
 564.345 +Error encoding Basic credentials
 564.346 +@publishedAll
 564.347 +@released
 564.348 +*/
 564.349 +const TInt KErrHttpEncodeBasicAuth			= KHttpHeaderEncodeErrorBase - 5; 
 564.350 +/**
 564.351 +Error encoding Digest credentials
 564.352 +@publishedAll
 564.353 +@released
 564.354 +*/
 564.355 +const TInt KErrHttpEncodeDigestAuth			= KHttpHeaderEncodeErrorBase - 6; 
 564.356 +/**
 564.357 +Error encoding the Connection field
 564.358 +@publishedAll
 564.359 +@released
 564.360 +*/
 564.361 +const TInt KErrHttpEncodeConnection			= KHttpHeaderEncodeErrorBase - 7; 
 564.362 +/**
 564.363 +Error encoding the Content-Length field
 564.364 +@publishedAll
 564.365 +@released
 564.366 +*/
 564.367 +const TInt KErrHttpEncodeContentLength		= KHttpHeaderEncodeErrorBase - 8; 
 564.368 +/**
 564.369 +Error encoding the Content-Type field
 564.370 +@publishedAll
 564.371 +@released
 564.372 +*/
 564.373 +const TInt KErrHttpEncodeContentType		= KHttpHeaderEncodeErrorBase - 9; 
 564.374 +/**
 564.375 +Error encoding the Host field
 564.376 +@publishedAll
 564.377 +@released
 564.378 +*/
 564.379 +const TInt KErrHttpEncodeHost				= KHttpHeaderEncodeErrorBase - 10;
 564.380 +/**
 564.381 +Error encoding the Host field's port parameter
 564.382 +@publishedAll
 564.383 +@released
 564.384 +*/
 564.385 +const TInt KErrHttpEncodeHostPort			= KHttpHeaderEncodeErrorBase - 11;
 564.386 +/**
 564.387 +Error encoding the Transfer-Encoding field
 564.388 +@publishedAll
 564.389 +@released
 564.390 +*/
 564.391 +const TInt KErrHttpEncodeTransferEncoding	= KHttpHeaderEncodeErrorBase - 12;
 564.392 +/**
 564.393 +Error encoding the User-Agent field
 564.394 +@publishedAll
 564.395 +@released
 564.396 +*/
 564.397 +const TInt KErrHttpEncodeUserAgent			= KHttpHeaderEncodeErrorBase - 13;
 564.398 +/**
 564.399 +Error encoding the Date field
 564.400 +@publishedAll
 564.401 +@released
 564.402 +*/
 564.403 +const TInt KErrHttpEncodeDate				= KHttpHeaderEncodeErrorBase - 14;
 564.404 +/**
 564.405 +Error encoding the Cookie field 
 564.406 +@publishedAll
 564.407 +@released
 564.408 +*/
 564.409 +const TInt KErrHttpEncodeCookie				= KHttpHeaderEncodeErrorBase - 15;
 564.410 +/**
 564.411 +Error encoding the Cache-Control field
 564.412 +@publishedAll
 564.413 +@released
 564.414 +*/
 564.415 +const TInt KErrHttpEncodeCacheControl		= KHttpHeaderEncodeErrorBase - 16; 
 564.416 +/**
 564.417 +Error encoding the Pragma field 
 564.418 +@publishedAll
 564.419 +@released
 564.420 +*/
 564.421 +const TInt KErrHttpEncodePragma				= KHttpHeaderEncodeErrorBase - 17;
 564.422 +/**
 564.423 +Error encoding the if match field
 564.424 +@publishedAll
 564.425 +@released
 564.426 +*/
 564.427 +const TInt KErrHttpEncodeIfMatch			= KHttpHeaderEncodeErrorBase - 18; 
 564.428 +/**
 564.429 +Error encoding the if none match field 
 564.430 +@publishedAll
 564.431 +@released
 564.432 +*/
 564.433 +const TInt KErrHttpEncodeIfNoneMatch		= KHttpHeaderEncodeErrorBase - 19;
 564.434 +/**
 564.435 +Error encoding the if modified since field 
 564.436 +@publishedAll
 564.437 +@released
 564.438 +*/
 564.439 +const TInt KErrHttpEncodeIfModifiedSince	= KHttpHeaderEncodeErrorBase - 20;
 564.440 +/**
 564.441 +Error encoding the if unmodified since field 
 564.442 +@publishedAll
 564.443 +@released
 564.444 +*/
 564.445 +const TInt KErrHttpEncodeIfUnmodifiedSince	= KHttpHeaderEncodeErrorBase - 21;
 564.446 +/**
 564.447 +Error encoding the Cookie2 field 
 564.448 +@publishedAll
 564.449 +@released
 564.450 +*/
 564.451 +const TInt KErrHttpEncodeCookie2			= KHttpHeaderEncodeErrorBase - 22;
 564.452 +/**
 564.453 +Error encoding the Content-Language field
 564.454 +@publishedAll
 564.455 +@released
 564.456 +*/
 564.457 +const TInt KErrHttpEncodeContentLanguage	= KHttpHeaderEncodeErrorBase - 23;
 564.458 +/**
 564.459 +Error encoding the WWWAuthenticate field
 564.460 +@publishedAll
 564.461 +@released
 564.462 +*/
 564.463 +const TInt KErrHttpEncodeDoWWWAuthenticate	= KHttpHeaderEncodeErrorBase - 24;
 564.464 +/**
 564.465 +Error encoding the Age field
 564.466 +@publishedAll
 564.467 +@released
 564.468 +*/
 564.469 +const TInt KErrHttpEncodeDoAge				= KHttpHeaderEncodeErrorBase - 25;
 564.470 +/**
 564.471 +Error encoding the Vary field
 564.472 +@publishedAll
 564.473 +@released
 564.474 +*/
 564.475 +const TInt KErrHttpEncodeDoVary				= KHttpHeaderEncodeErrorBase - 26;
 564.476 +/**
 564.477 +Error encoding the Content-Language field
 564.478 +@publishedAll
 564.479 +@released
 564.480 +*/
 564.481 +const TInt KErrHttpEncodeDoContentLanguage	= KHttpHeaderEncodeErrorBase - 27;
 564.482 +/**
 564.483 +Error encoding the Content-Encoding field
 564.484 +@publishedAll
 564.485 +@released
 564.486 +*/
 564.487 +const TInt KErrHttpEncodeContentEncoding	= KHttpHeaderEncodeErrorBase - 28;
 564.488 +/**
 564.489 +Error encoding the Content-Location field
 564.490 +@publishedAll
 564.491 +@released
 564.492 +*/
 564.493 +const TInt KErrHttpEncodeContentLocation	= KHttpHeaderEncodeErrorBase - 29;
 564.494 +/**
 564.495 +Error encoding the Content-MD5 field
 564.496 +@publishedAll
 564.497 +@released
 564.498 +*/
 564.499 +const TInt KErrHttpEncodeContentMD5			= KHttpHeaderEncodeErrorBase - 30;
 564.500 +/**
 564.501 +Error encoding the Accept-Encoding field
 564.502 +@publishedAll
 564.503 +@released
 564.504 +*/
 564.505 +const TInt KErrHttpEncodeAcceptLanguage		= KHttpHeaderEncodeErrorBase - 31;
 564.506 +/**
 564.507 +Error encoding the Accept-Language field
 564.508 +@publishedAll
 564.509 +@released
 564.510 +*/
 564.511 +const TInt KErrHttpEncodeAcceptEncoding		= KHttpHeaderEncodeErrorBase - 32;
 564.512 +/**
 564.513 +Error encoding the TE field
 564.514 +@publishedAll
 564.515 +@released
 564.516 +*/
 564.517 +const TInt KErrHttpEncodeTE					= KHttpHeaderEncodeErrorBase - 33;
 564.518 +/**
 564.519 +Error encoding the Upgrade field
 564.520 +@publishedAll
 564.521 +@released
 564.522 +*/
 564.523 +const TInt KErrHttpEncodeUpgrade			= KHttpHeaderEncodeErrorBase - 34;
 564.524 +
 564.525 +/**
 564.526 +Codec decoding errors for values found in HTTP headers
 564.527 +@publishedAll
 564.528 +@released
 564.529 +*/
 564.530 +const TInt KHttpValueDecodeErrorBase = KHttpErrorBase - 60;
 564.531 +
 564.532 +/**
 564.533 +General formatting error for date values
 564.534 +@publishedAll
 564.535 +@released
 564.536 +*/
 564.537 +const TInt KErrHttpDecodeMalformedDate		= KHttpValueDecodeErrorBase;	 
 564.538 +/**
 564.539 +Malformed year
 564.540 +@publishedAll
 564.541 +@released
 564.542 +*/
 564.543 +const TInt KErrHttpDecodeMalformedYear 		= KHttpValueDecodeErrorBase - 1; 
 564.544 +/**
 564.545 +Malformed short month name
 564.546 +@publishedAll
 564.547 +@released
 564.548 +*/
 564.549 +const TInt KErrHttpDecodeMalformedMonth		= KHttpValueDecodeErrorBase - 2; 
 564.550 +/**
 564.551 +Malformed number of day in month
 564.552 +@publishedAll
 564.553 +@released
 564.554 +*/
 564.555 +const TInt KErrHttpDecodeMalformedDay		= KHttpValueDecodeErrorBase - 3; 
 564.556 +/**
 564.557 +Malformed short day name
 564.558 +@publishedAll
 564.559 +@released
 564.560 +*/
 564.561 +const TInt KErrHttpDecodeMalformedWkDay		= KHttpValueDecodeErrorBase - 4; 
 564.562 +/**
 564.563 +Malformed long day name
 564.564 +@publishedAll
 564.565 +@released
 564.566 +*/
 564.567 +const TInt KErrHttpDecodeMalformedWeekDay	= KHttpValueDecodeErrorBase - 5; 
 564.568 +/**
 564.569 +Malformed integer value
 564.570 +@publishedAll
 564.571 +@released
 564.572 +*/
 564.573 +const TInt KErrHttpDecodeMalformedInteger	= KHttpValueDecodeErrorBase - 6; 
 564.574 +/**
 564.575 +Malformed quoted string
 564.576 +@publishedAll
 564.577 +@released
 564.578 +*/
 564.579 +const TInt KErrHttpDecodeMalformedQuotedStr	= KHttpValueDecodeErrorBase - 7; 
 564.580 +
 564.581 +/**
 564.582 +Codec decoding errors for HTTP headers
 564.583 +@publishedAll
 564.584 +@released
 564.585 +*/
 564.586 +const TInt KHttpHeaderDecodeErrorBase = KHttpErrorBase - 70;
 564.587 +
 564.588 +/**
 564.589 +Error decoding the Accept field
 564.590 +@publishedAll
 564.591 +@released
 564.592 +*/
 564.593 +const TInt KErrHttpDecodeAccept				= KHttpHeaderDecodeErrorBase;
 564.594 +/**
 564.595 +Error decoding the Connection field
 564.596 +@publishedAll
 564.597 +@released
 564.598 +*/
 564.599 +const TInt KErrHttpDecodeConnection			= KHttpHeaderDecodeErrorBase - 1;
 564.600 +/**
 564.601 +Error decoding the Content-Length field
 564.602 +@publishedAll
 564.603 +@released
 564.604 +*/
 564.605 +const TInt KErrHttpDecodeContentLength		= KHttpHeaderDecodeErrorBase - 2;
 564.606 +/**
 564.607 +Error decoding the Content-Type field
 564.608 +@publishedAll
 564.609 +@released
 564.610 +*/
 564.611 +const TInt KErrHttpDecodeContentType		= KHttpHeaderDecodeErrorBase - 3;
 564.612 +/**
 564.613 +Error decoding the Transfer-Encoding field
 564.614 +@publishedAll
 564.615 +@released
 564.616 +*/
 564.617 +const TInt KErrHttpDecodeTransferEncoding	= KHttpHeaderDecodeErrorBase - 4;
 564.618 +/**
 564.619 +Error decoding the WWWAuthenticate field
 564.620 +@publishedAll
 564.621 +@released
 564.622 +*/
 564.623 +const TInt KErrHttpDecodeWWWAuthenticate	= KHttpHeaderDecodeErrorBase - 5;
 564.624 +/**
 564.625 +The WWWAuthenticate field contained an unrecognised authentication scheme
 564.626 +@publishedAll
 564.627 +@released
 564.628 +*/
 564.629 +const TInt KErrHttpDecodeUnknownAuthScheme	= KHttpHeaderDecodeErrorBase - 6;
 564.630 +/**
 564.631 +Error decoding a Basic WWWAuthenticate challenge
 564.632 +@publishedAll
 564.633 +@released
 564.634 +*/
 564.635 +const TInt KErrHttpDecodeBasicAuth			= KHttpHeaderDecodeErrorBase - 7;
 564.636 +/**
 564.637 +Error decoding a Digest WWWAuthenticate challenge
 564.638 +@publishedAll
 564.639 +@released
 564.640 +*/
 564.641 +const TInt KErrHttpDecodeDigestAuth			= KHttpHeaderDecodeErrorBase - 8;
 564.642 +/**
 564.643 +Error decoding a Set-Cookie field
 564.644 +@publishedAll
 564.645 +@released
 564.646 +*/
 564.647 +const TInt KErrHttpDecodeCookie				= KHttpHeaderDecodeErrorBase - 9;
 564.648 +/**
 564.649 +Error decoding the Authorization field
 564.650 +@publishedAll
 564.651 +@released
 564.652 +*/
 564.653 +const TInt KErrHttpDecodeAuthorization		= KHttpHeaderDecodeErrorBase - 10;
 564.654 +/**
 564.655 +Error decoding the Accept-Charset field
 564.656 +@publishedAll
 564.657 +@released
 564.658 +*/
 564.659 +const TInt KErrHttpDecodeAcceptCharset		= KHttpHeaderDecodeErrorBase - 11;
 564.660 +/**
 564.661 +Error decoding the Accept-Language field
 564.662 +@publishedAll
 564.663 +@released
 564.664 +*/
 564.665 +const TInt KErrHttpDecodeAcceptLanguage		= KHttpHeaderDecodeErrorBase - 12;
 564.666 +/**
 564.667 +Error decoding the Accept-Encoding field
 564.668 +@publishedAll
 564.669 +@released
 564.670 +*/
 564.671 +const TInt KErrHttpDecodeAcceptEncoding		= KHttpHeaderDecodeErrorBase - 13;
 564.672 +/**
 564.673 +Error decoding the TE field
 564.674 +@publishedAll
 564.675 +@released
 564.676 +*/
 564.677 +const TInt KErrHttpDecodeTE					= KHttpHeaderEncodeErrorBase - 14;
 564.678 +/**
 564.679 +Error decoding the Expect field
 564.680 +@publishedAll
 564.681 +@released
 564.682 +*/
 564.683 +const TInt KErrHttpDecodeExpect				= KHttpHeaderEncodeErrorBase - 15;
 564.684 +/**
 564.685 +Error decoding the Content-Disposition field
 564.686 +@publishedAll
 564.687 +@released
 564.688 +*/
 564.689 +const TInt KErrHttpDecodeContentDisposition	= KHttpHeaderDecodeErrorBase - 14;
 564.690 +/**
 564.691 +Response errors. These represent specific failure cases
 564.692 +@publishedAll
 564.693 +@released
 564.694 +*/
 564.695 +const TInt KErrHttpResponseFailureBase = KHttpErrorBase - 100;
 564.696 +
 564.697 +/**
 564.698 +A uri redirected too many times, possibly indicating a circular redirection
 564.699 +@publishedAll
 564.700 +@released
 564.701 +*/
 564.702 +const TInt KErrHttpRedirectExceededLimit		= KErrHttpResponseFailureBase;	  
 564.703 +/**
 564.704 +A server responded that the uri must be fetched via a proxy
 564.705 +@publishedAll
 564.706 +@released
 564.707 +*/
 564.708 +const TInt KErrHttpRedirectUseProxy				= KErrHttpResponseFailureBase - 1;
 564.709 +/**
 564.710 +A server sent a redirection response that did not include a Location header
 564.711 +@publishedAll
 564.712 +@released
 564.713 +*/
 564.714 +const TInt KErrHttpRedirectNoLocationField		= KErrHttpResponseFailureBase - 2;
 564.715 +/**
 564.716 +An error occured in parsing which left the parser in a unknown state
 564.717 +@publishedAll
 564.718 +@released
 564.719 +*/
 564.720 +const TInt KErrHttpUnknownParseState			= KErrHttpResponseFailureBase - 3;
 564.721 +
 564.722 +/**
 564.723 +Request building errors: cause the Validation Filter to make a transaction fail and terminate 
 564.724 +@publishedAll
 564.725 +@released
 564.726 +*/
 564.727 +const TInt KErrHttpReqBuildErrorBase = KHttpErrorBase - 130;
 564.728 +
 564.729 +/**
 564.730 +A body is provided with a method that doesn't allow bodys to be transmitted
 564.731 +@publishedAll
 564.732 +@released
 564.733 +*/
 564.734 +const TInt KErrHttpRequestHasBody					= KErrHttpReqBuildErrorBase;	
 564.735 +/**
 564.736 +A body is missing from a method that requires it
 564.737 +@publishedAll
 564.738 +@released
 564.739 +*/
 564.740 +const TInt KErrHttpRequestBodyMissing				= KErrHttpReqBuildErrorBase - 1;			
 564.741 +/**
 564.742 +Should contain The Max-Forward header
 564.743 +@publishedAll
 564.744 +@released
 564.745 +*/
 564.746 +const TInt KErrHttpTraceReqWithoutMaxForwardHeader	= KErrHttpReqBuildErrorBase - 2;
 564.747 +/**
 564.748 +Body must NOT be sent chunked if using HTTP/1.0
 564.749 +@publishedAll
 564.750 +@released
 564.751 +*/
 564.752 +const TInt KErrHttpPostReqBodyWithoutSizeOnHTTP10	= KErrHttpReqBuildErrorBase - 3;
 564.753 +/**
 564.754 +Request contained a response header or a entity header but no body
 564.755 +@publishedAll
 564.756 +@released
 564.757 +*/
 564.758 +const TInt KErrHttpInvalidHeaderInRequest	  		= KErrHttpReqBuildErrorBase - 4;
 564.759 +/**
 564.760 +Missing but required header errors
 564.761 +@publishedAll
 564.762 +@released
 564.763 +*/
 564.764 +
 564.765 +const TInt KErrHttpMissingHeaderBase = KHttpErrorBase - 160;
 564.766 +/**
 564.767 +A body was provided in the request but no Content-Type header was set
 564.768 +@publishedAll
 564.769 +@released
 564.770 +*/
 564.771 +
 564.772 +const TInt KErrHttpEntityHeaderMissingContentType		= KErrHttpMissingHeaderBase;	
 564.773 +/**
 564.774 +The request URI was relative, but no Host header was set to indicate a server to connect to
 564.775 +@publishedAll
 564.776 +@released
 564.777 +*/
 564.778 +const TInt KErrHttpGeneralHeaderMissingHost				= KErrHttpMissingHeaderBase - 1;
 564.779 +/**
 564.780 +Protocol handler errors
 564.781 +@publishedAll
 564.782 +@released
 564.783 +*/
 564.784 +const TInt KErrHttpProtocolHandlerBase = KHttpErrorBase - 170;
 564.785 +/**
 564.786 +The request body needed to be rewound but the client but it doesn't support 
 564.787 +@publishedAll
 564.788 +@released
 564.789 +*/
 564.790 +const TInt KErrHttpCantResetRequestBody				= KErrHttpProtocolHandlerBase;
 564.791 +/**
 564.792 +The Protocol handler is not initialised
 564.793 +@publishedAll
 564.794 +@released
 564.795 +*/
 564.796 +const TInt KErrHttpProtTransactionNotInitialised	= KErrHttpProtocolHandlerBase -1;
 564.797 +/**
 564.798 +Unable to establish a tunnel.
 564.799 +@publishedAll
 564.800 +@released
 564.801 +*/
 564.802 +const TInt KErrHttpCannotEstablishTunnel			= KErrHttpProtocolHandlerBase -2;
 564.803 +/**
 564.804 +Invalid URI
 564.805 +@publishedAll
 564.806 +@released
 564.807 +*/
 564.808 +const TInt KErrHttpInvalidUri						= KErrHttpProtocolHandlerBase -3;
 564.809 +/**
 564.810 +Protocol handler experienced a non-pipelining error
 564.811 +@publishedAll
 564.812 +@released
 564.813 +*/
 564.814 +const TInt KErrHttpNonPipeliningError				= KErrHttpProtocolHandlerBase -4;
 564.815 +/**
 564.816 +Protocol handler experienced a pipelining error
 564.817 +@publishedAll
 564.818 +@released
 564.819 +*/
 564.820 +const TInt KErrHttpPipeliningError					= KErrHttpProtocolHandlerBase -5;
 564.821 +
 564.822 +/**
 564.823 +The request has been not sent for the transaction and connection has been disconnected. 
 564.824 +This error will be propagated to the client only, if the HTTP:ENotifyOnDisconnect property 
 564.825 +is set with a value HTTP::EEnableDisconnectNotification
 564.826 +
 564.827 +@publishedAll
 564.828 +@released
 564.829 +*/
 564.830 +const TInt KErrHttpRequestNotSent 					= KErrHttpProtocolHandlerBase -6;
 564.831 +
 564.832 +/**
 564.833 +The response has been not received for the transaction and connection has been disconnected. 
 564.834 +This error will be propagated to the client only, if the HTTP:ENotifyOnDisconnect property is 
 564.835 +set with a value HTTP::EEnableDisconnectNotification
 564.836 +
 564.837 +@publishedAll
 564.838 +@released
 564.839 +*/
 564.840 +const TInt KErrHttpResponseNotReceived				= KErrHttpProtocolHandlerBase -7;
 564.841 +
 564.842 +/**
 564.843 +Partial response has been received and connection has been disconnected. This error will be 
 564.844 +propagated to the client only, if the HTTP:ENotifyOnDisconnect property is set with a value
 564.845 +HTTP::EEnableDisconnectNotification
 564.846 +
 564.847 +@publishedAll
 564.848 +@released
 564.849 +*/
 564.850 +const TInt KErrHttpPartialResponseReceived			= KErrHttpProtocolHandlerBase -8;
 564.851 +
 564.852 +/**
 564.853 +ClientApplication wants to fail the transaction that was in process by the HTTPMessageParser
 564.854 +@publishedAll
 564.855 +@released
 564.856 +*/
 564.857 +const TInt KErrHttpOptimiserFailsTrans				= KErrHttpProtocolHandlerBase -9;
 564.858 +
 564.859 +// end of error codes - maximum error value is -7399 - must not be exceeded!
 564.860 +// Inline methods from HTTPStatus
 564.861 +
 564.862 +inline TBool HTTPStatus::IsInformational(TInt aStatus)
 564.863 +	{ 
 564.864 +	return ((aStatus >= HTTPStatus::EContinue) && (aStatus < HTTPStatus::EOk));
 564.865 +	}
 564.866 +inline TBool HTTPStatus::IsSuccessful(TInt aStatus)
 564.867 +	{ 
 564.868 +	return ((aStatus >= HTTPStatus::EOk) && (aStatus < HTTPStatus::EMultipleChoices));
 564.869 +	}
 564.870 +inline TBool HTTPStatus::IsRedirection(TInt aStatus)
 564.871 +	{
 564.872 +	return ((aStatus >= HTTPStatus::EMultipleChoices) && (aStatus < HTTPStatus::EBadRequest));
 564.873 +	}
 564.874 +inline TBool HTTPStatus::IsClientError(TInt aStatus)
 564.875 +	{
 564.876 +	return ((aStatus >= HTTPStatus::EBadRequest) && (aStatus < HTTPStatus::EInternalServerError));
 564.877 +	}
 564.878 +inline TBool HTTPStatus::IsServerError(TInt aStatus)
 564.879 +	{
 564.880 +	return (aStatus >= HTTPStatus::EInternalServerError);
 564.881 +	}
 564.882 +
 564.883 +
 564.884 +
 564.885 +#endif // __HTTPERR_H__
   565.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   565.2 +++ b/epoc32/include/mw/httpstd.h	Wed Mar 31 12:27:01 2010 +0100
   565.3 @@ -0,0 +1,96 @@
   565.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   565.5 +// All rights reserved.
   565.6 +// This component and the accompanying materials are made available
   565.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   565.8 +// which accompanies this distribution, and is available
   565.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  565.10 +//
  565.11 +// Initial Contributors:
  565.12 +// Nokia Corporation - initial contribution.
  565.13 +//
  565.14 +// Contributors:
  565.15 +//
  565.16 +// Description:
  565.17 +// Purpose:  This file sets the values for HTTP's return/error codes and
  565.18 +// panic codes.
  565.19 +// 
  565.20 +//
  565.21 +
  565.22 +#if !defined(__HTTPSTD_H__)
  565.23 +#define __HTTPSTD_H__
  565.24 +
  565.25 +// System includes
  565.26 +//
  565.27 +#if !defined(__E32STD_H__)
  565.28 +#include <e32std.h>
  565.29 +#endif
  565.30 +#if !defined(__WAPENGSTD_H__)
  565.31 +#include <wapengstd.h>
  565.32 +#endif
  565.33 +
  565.34 +enum
  565.35 +/**
  565.36 +Base values of code ranges
  565.37 +@publishedAll
  565.38 +@deprecated
  565.39 +*/{
  565.40 +	EHttpRetCodeBase     = -20000,
  565.41 +	EHttpPanicCodeBase   = EHttpRetCodeBase - 200
  565.42 +	};
  565.43 +
  565.44 +typedef enum 
  565.45 +/**
  565.46 +Return/leave codes for HTTPUTIL and HTTP plugins
  565.47 +@publishedAll
  565.48 +@deprecated
  565.49 +*/
  565.50 +	{
  565.51 +	// Informational (+ve) status codes
  565.52 +	EHttp_401_Unauthorized		  = KHttpPluginStatusBase + 401,// occurs when HTTP authentication is used, username/password dialogs raised as a response. Need to consider how UI deals with authentication failures here.
  565.53 +	EHttpAuthenticationAborted	  = KHttpPluginStatusBase + 11,// The user cancelled the password box
  565.54 +	EHttpAuthenticationFailed	  = KHttpPluginStatusBase + 10,// The user's password was rejected by the origin server
  565.55 +	EHttpNoError				  = KErrNone,			  // No error
  565.56 +	// Error (-ve) status codes
  565.57 +	EHttpGeneralError			  = EHttpRetCodeBase,	  // Unspecified error condition
  565.58 +	EHttpCannotFindServer		  = EHttpRetCodeBase - 1, // URL specified a non-existent or inaccessible domain
  565.59 +	EHttpCannotFindPlugin		  = EHttpRetCodeBase - 2, // Plug-in server failed to create an HTTP plugin
  565.60 +	EHttpUnsupportedMethod		  = EHttpRetCodeBase - 3, // An HTTP method was specified that is not supported
  565.61 +	EHttpWapAPReadFailure		  = EHttpRetCodeBase - 4, // An error occurred when reading the WAP AP from CommsDB
  565.62 +	EHttpNetDialSetupFailed		  = EHttpRetCodeBase - 5, // Failed to configure Net Dial
  565.63 +	EHttpWtlsConfigFailed		  = EHttpRetCodeBase - 6, // Failed to configure the WTLS layer of the WAP Stack
  565.64 +	EHttpWtlsBadServerCert		  = EHttpRetCodeBase - 7, // WTLS rejected the certificate obtained from the WAP GW
  565.65 +	EHttpWtlsServerCertRejected	  = EHttpRetCodeBase - 8, // The user rejected the certificate from the WAP GW
  565.66 +	EHttpWtlsCipherRejected		  = EHttpRetCodeBase - 9, // The user rejected the cipher strength negotiated in WTLS
  565.67 +	EHttpGatewayCannotBeReached	  = EHttpRetCodeBase - 10,// A session could not be established with the WAP Gateway
  565.68 +	EHttpGatewayTransactionAbort  = EHttpRetCodeBase - 11,// A transaction was aborted by the gateway or the stack
  565.69 +	EHttpGatewaySessionDisconnect = EHttpRetCodeBase - 12,// The session was disconnected by the WAP Gateway
  565.70 +	EHttpCancellationAbort		  = EHttpRetCodeBase - 13,// Error code for leave when cancellation has occured during RunL()
  565.71 +	EHttpReceivingErrorDeck		  = EHttpRetCodeBase - 14 // Could not find document, so receiving an error deck
  565.72 +	} THttpReturnCode;
  565.73 +
  565.74 +// Note that HTTP Status codes series 40x and 50x are error conditions. They
  565.75 +// will be added to the EHttpRetCodeBase to send to the HTTP Data Provider
  565.76 +// observer. e.g. HTTP/404 will become EHttpRetCodeBase-404 = -20404.  The
  565.77 +// exception to this rule is HTTP/401, which gets fully handled in HTTP and
  565.78 +// so is treated above as an informational status message.
  565.79 +
  565.80 +typedef enum 
  565.81 +/**
  565.82 +Panic codes for HTTPUTIL and HTTP plugins
  565.83 +@publishedAll
  565.84 +@deprecated
  565.85 +*/
  565.86 +    {
  565.87 +	EHttpGeneralPanic				= EHttpPanicCodeBase,		// Unspecified panic condition
  565.88 +    EHttpDialInNotSupported			= EHttpPanicCodeBase - 1,	// The WAP Access Point specified a dial-in ISP!
  565.89 +	EHttpWapAccessPointInfoChanged	= EHttpPanicCodeBase - 2,	// The WAP AP info changed between initial read and
  565.90 +																// the subsequent NetDial override (debug only)
  565.91 +	EHttpCommDBContainsBadData		= EHttpPanicCodeBase - 3,	// Comms DB contains garbled/inconsistent WAP AP data
  565.92 +	EHttpConnectionLessNotSupported	= EHttpPanicCodeBase - 4,	// Comms DB specified a CL mode, which isn't available (yet)
  565.93 +	EHttpNoHandlerAvailable			= EHttpPanicCodeBase - 5,	// Very bad situation for HTTP Methods
  565.94 +	EHttpResourceFileLoadFailed		= EHttpPanicCodeBase - 6,	// Resource file missing or corrupt
  565.95 +	EHttpReservedForFutureExpansion	= EHttpPanicCodeBase - 7	// Feature not available - reserved for BC only
  565.96 +    } THttpPanicCode;
  565.97 +
  565.98 +
  565.99 +#endif // __HTTPSTD_H__
   566.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   566.2 +++ b/epoc32/include/mw/iclanimationdataprovider.h	Wed Mar 31 12:27:01 2010 +0100
   566.3 @@ -0,0 +1,69 @@
   566.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   566.5 +// All rights reserved.
   566.6 +// This component and the accompanying materials are made available
   566.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   566.8 +// which accompanies this distribution, and is available
   566.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  566.10 +//
  566.11 +// Initial Contributors:
  566.12 +// Nokia Corporation - initial contribution.
  566.13 +//
  566.14 +// Contributors:
  566.15 +//
  566.16 +// Description:
  566.17 +//
  566.18 +
  566.19 +#ifndef __ICLANIMATIONDATAPROVIDER_H__
  566.20 +#define __ICLANIMATIONDATAPROVIDER_H__
  566.21 +
  566.22 +#include <animationdataprovider.h>
  566.23 +
  566.24 +#include <e32std.h>
  566.25 +#include <animationframe.h>
  566.26 +#include <animationmixins.h>
  566.27 +
  566.28 +_LIT8(KBitmapAnimationDataType, "bitmap");
  566.29 +
  566.30 +class CICLAnimationDataLoader;
  566.31 +
  566.32 +/**
  566.33 +Data provider for frame based animations.
  566.34 +
  566.35 +This data provider expects to be provided with a file which can be interpreted
  566.36 +as an animation using the Image Conversion Library (ICL).  An example would be
  566.37 +an animated GIF.  The default data type for this provider is "bitmap".
  566.38 +
  566.39 +@see CBitmapAnimator
  566.40 +@publishedAll
  566.41 +@released
  566.42 +*/
  566.43 +class CICLAnimationDataProvider : public CAnimationDataProvider, public MICLAnimationDataLoaderObserver
  566.44 +	{
  566.45 +public:
  566.46 +    IMPORT_C CICLAnimationDataProvider();
  566.47 +    IMPORT_C ~CICLAnimationDataProvider();
  566.48 +    IMPORT_C void SetFileL(RFs & aFs, const TFileName& aFileName);
  566.49 +    IMPORT_C TPtrC8 DataType();
  566.50 +    virtual void StartL();
  566.51 +protected:
  566.52 +	IMPORT_C virtual void CICLAnimationDataProvider_Reserved1();
  566.53 +	IMPORT_C virtual void CICLAnimationDataProvider_Reserved2();
  566.54 +	// From CAnimationDataProvider
  566.55 +	IMPORT_C virtual void CAnimationDataProvider_Reserved1();
  566.56 +	IMPORT_C virtual void CAnimationDataProvider_Reserved2();
  566.57 +private:
  566.58 +	TInt iCICLAnimationDataProvider_Reserved;
  566.59 +private:
  566.60 +    CAnimationFrame::THandles CurrentFrame() const;
  566.61 +    void DecodeImageL();
  566.62 +    void DataDeliveryL();
  566.63 +    void Reset();
  566.64 +    // From MICLAnimationDataLoaderObserver
  566.65 +    virtual void DataLoaderEventL(TDataLoaderEvent aEvent, TInt aError);
  566.66 +private: 
  566.67 +	CICLAnimationDataLoader* iDataLoader;
  566.68 +	CAnimationFrame* iCurrentFrame;
  566.69 +	TInt iFlags;
  566.70 +	};
  566.71 +
  566.72 +#endif //__ICLANIMATIONDATAPROVIDER_H__
   567.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   567.2 +++ b/epoc32/include/mw/ineturi.h	Wed Mar 31 12:27:01 2010 +0100
   567.3 @@ -0,0 +1,72 @@
   567.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   567.5 +// All rights reserved.
   567.6 +// This component and the accompanying materials are made available
   567.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   567.8 +// which accompanies this distribution, and is available
   567.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  567.10 +//
  567.11 +// Initial Contributors:
  567.12 +// Nokia Corporation - initial contribution.
  567.13 +//
  567.14 +// Contributors:
  567.15 +//
  567.16 +// Description:
  567.17 +// Class for storing URI and its properties.
  567.18 +// 
  567.19 +//
  567.20 +
  567.21 +
  567.22 +
  567.23 +/**
  567.24 + @file
  567.25 + @publishedAll
  567.26 + @released
  567.27 +*/
  567.28 +
  567.29 +#ifndef __INETURI_H__
  567.30 +#define __INETURI_H__
  567.31 +
  567.32 +
  567.33 +class CInetUriImpl;
  567.34 +class CInetUriProperties;
  567.35 +class CUri8;
  567.36 +
  567.37 +using namespace InetUriList;
  567.38 +
  567.39 +/**
  567.40 +RInetUri represents a handle to the URI and its associated URI properties. A URI must always be associated with 
  567.41 +a service type and a list type. Service type defines the purpose for which the URI is added (for example, 
  567.42 +Browser, WAP Push, Push EMail, and so on), and the list type defines the permission associated with the URI 
  567.43 +(for example, whitelist or blacklist).
  567.44 +
  567.45 +@publishedAll
  567.46 +@released
  567.47 +*/
  567.48 +class RInetUri
  567.49 +	{
  567.50 +public:	
  567.51 +	friend class CInetUriListImpl;
  567.52 +	
  567.53 +	IMPORT_C RInetUri ();
  567.54 +
  567.55 +	IMPORT_C void CreateL ( const TDesC8& aUri,  TServiceType aServiceType, TListType aListType );
  567.56 +	IMPORT_C void Close ();
  567.57 +	
  567.58 +	IMPORT_C TServiceType ServiceType () const;
  567.59 +	IMPORT_C TPermission Permission () const;
  567.60 +	IMPORT_C TListType ListType () const;	
  567.61 +	IMPORT_C const TDesC8& FavouriteName () const;
  567.62 +	IMPORT_C const CUri8& Uri () const;
  567.63 +		
  567.64 +	IMPORT_C void SetListType ( TListType aListType );
  567.65 +	IMPORT_C void SetFavouriteNameL ( const TDesC8& aFavouriteName );	
  567.66 +	
  567.67 +private:
  567.68 +	// Used internally. Not intended for external use
  567.69 +	CInetUriImpl& Impl () const;
  567.70 +	void Attach ( CInetUriImpl& aInetUri );
  567.71 +private:
  567.72 +	CInetUriImpl* iInetUriImpl; // // The internal URI object that this handle is connected to
  567.73 +	};
  567.74 +
  567.75 +#endif //__INETURI_H__
   568.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   568.2 +++ b/epoc32/include/mw/ineturilist.h	Wed Mar 31 12:27:01 2010 +0100
   568.3 @@ -0,0 +1,113 @@
   568.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   568.5 +// All rights reserved.
   568.6 +// This component and the accompanying materials are made available
   568.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   568.8 +// which accompanies this distribution, and is available
   568.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  568.10 +//
  568.11 +// Initial Contributors:
  568.12 +// Nokia Corporation - initial contribution.
  568.13 +//
  568.14 +// Contributors:
  568.15 +//
  568.16 +// Description:
  568.17 +// Class for opening and manipulating the internet uri list.
  568.18 +// 
  568.19 +//
  568.20 +
  568.21 +
  568.22 +
  568.23 +/**
  568.24 + @file
  568.25 + @publishedAll
  568.26 + @released
  568.27 +*/
  568.28 +
  568.29 +#ifndef __INETURILIST_H__
  568.30 +#define __INETURILIST_H__
  568.31 +
  568.32 +#include <ineturilistdef.h>
  568.33 +#include <ineturi.h>
  568.34 +#include <uri8.h>
  568.35 +#include <babitflags.h>
  568.36 +
  568.37 +class CInetUriListImpl;
  568.38 +
  568.39 +
  568.40 +
  568.41 +
  568.42 +/**
  568.43 +This class defines the interface that can be implemented by an application to receive the
  568.44 +query results. 
  568.45 +
  568.46 +@publishedAll
  568.47 +@released
  568.48 +*/
  568.49 +class MQueryResultsCallback
  568.50 +	{
  568.51 +	public:
  568.52 +	/**
  568.53 +	The callback function that will be called when there is at least one query result.
  568.54 +	
  568.55 +	@param aUri The Inet URI object. Ownership will be passed. The application should close the 
  568.56 +				object handle.
  568.57 +	@return ETrue - More query results, if any, should follow.
  568.58 +			EFalse - No more query result is required and querying will be stopped.
  568.59 +	*/
  568.60 +	virtual TBool OnQueryResultsL ( RInetUri aUri ) =0;
  568.61 +	};
  568.62 +
  568.63 +
  568.64 +/**
  568.65 +This class defines the interface that can be implemented by an application that wishes to do
  568.66 +protocol and scheme-based normalisation of the URI before query operation.
  568.67 +
  568.68 +@publishedAll
  568.69 +@released
  568.70 +*/
  568.71 +class MUriCustomiser
  568.72 +	{
  568.73 +	public:
  568.74 +	/**
  568.75 +	The callback function that will be called to perform scheme and protocol-based normalisation.
  568.76 +	The URI will be syntax normalised before calling this function.
  568.77 +	
  568.78 +	@param aUri The syntax normalised URI.
  568.79 +	@return Final normalised URI, which is syntax and protocol/scheme based.
  568.80 +	*/
  568.81 +	virtual CUri8* OnUriCustomisationL ( const TUriC8& aUri ) =0;	
  568.82 +	};
  568.83 +
  568.84 +
  568.85 +
  568.86 +/**
  568.87 +RInetUriList represents a handle to the list as a whole. Opening the handle will initiate a connection the
  568.88 +URI List server. This class is responsible for adding, removing, updating, or retrieving the URI and
  568.89 +its associated properties.
  568.90 +
  568.91 +@publishedAll
  568.92 +@released
  568.93 +*/
  568.94 +class RInetUriList
  568.95 +	{
  568.96 +public:
  568.97 +	IMPORT_C RInetUriList ();
  568.98 +
  568.99 +	IMPORT_C void OpenL ();
 568.100 +	IMPORT_C void Close ();
 568.101 +	
 568.102 +	IMPORT_C void AddL ( const RInetUri& aInetUri );
 568.103 +	IMPORT_C void RemoveL ( const RInetUri& aInetUri );
 568.104 +	IMPORT_C void UpdateL ( const RInetUri& aInetUri );
 568.105 +	
 568.106 +	IMPORT_C RInetUri OpenInetUriL ( const TDesC8& aUri, InetUriList::TServiceType aServiceType );
 568.107 +	IMPORT_C TInt Count ( InetUriList::TServiceType aServiceType, InetUriList::TListType aListType );
 568.108 +	
 568.109 +	IMPORT_C TInt GetListType ( const TDesC8& aUri, InetUriList::TServiceType aServiceType, InetUriList::TListType& aListType );
 568.110 +	
 568.111 +	IMPORT_C void QueryUriL ( const TQueryArgs& aArgs, MQueryResultsCallback* aQueryCallback, MUriCustomiser* aUriOptimiser =NULL );
 568.112 +private:
 568.113 +	CInetUriListImpl* iInetUriListImpl; // // The internal list object that this handle is connected to
 568.114 +	};
 568.115 +
 568.116 +#endif //__INETURILIST_H__
   569.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   569.2 +++ b/epoc32/include/mw/ineturilistdef.h	Wed Mar 31 12:27:01 2010 +0100
   569.3 @@ -0,0 +1,333 @@
   569.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   569.5 +// All rights reserved.
   569.6 +// This component and the accompanying materials are made available
   569.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   569.8 +// which accompanies this distribution, and is available
   569.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  569.10 +//
  569.11 +// Initial Contributors:
  569.12 +// Nokia Corporation - initial contribution.
  569.13 +//
  569.14 +// Contributors:
  569.15 +//
  569.16 +// Description:
  569.17 +// Place holder for common constants, type definitions and enums.
  569.18 +//
  569.19 +
  569.20 +
  569.21 +
  569.22 +/**
  569.23 + @file
  569.24 + @publishedAll
  569.25 + @released
  569.26 +*/
  569.27 +
  569.28 +#ifndef __INETURILISTDEF_H__
  569.29 +#define __INETURILISTDEF_H__
  569.30 +
  569.31 +#include <e32base.h>
  569.32 +
  569.33 +/**
  569.34 +@publishedAll
  569.35 +@released
  569.36 +*/
  569.37 +namespace InetUriList
  569.38 +	{
  569.39 +	/**
  569.40 +	Types of supported service type.
  569.41 +	
  569.42 +	@publishedAll
  569.43 +	@released
  569.44 +	*/		
  569.45 +	enum TServiceType
  569.46 +		{
  569.47 +		/** Browser */
  569.48 +		EBrowser =0x01, 
  569.49 +		/** WapPush */
  569.50 +		EWapPush =0x02,
  569.51 +		/** PushEMail */ 
  569.52 +		EPushEMail =0x03,
  569.53 +		/** DevProv */
  569.54 +		EDevProv =0x04,
  569.55 +		/** VOIP */
  569.56 +		EVoip =0x05
  569.57 +		};
  569.58 +
  569.59 +	/**
  569.60 +	Types of supported list type.
  569.61 +
  569.62 +	@publishedAll
  569.63 +	@released
  569.64 +	*/	
  569.65 +	 enum TListType
  569.66 +		{
  569.67 +		/** BlackList **/
  569.68 +		EBlackList =0x01,
  569.69 +		/** WhiteList **/
  569.70 +		EWhiteList =0x02
  569.71 +		};
  569.72 +	
  569.73 +	/**
  569.74 +	Types of permission.
  569.75 +
  569.76 +	@publishedAll
  569.77 +	@released
  569.78 +	*/	
  569.79 +	enum TPermission
  569.80 +		{
  569.81 +		/** ReadOnly **/
  569.82 +		EReadOnly =0x01,
  569.83 +		/** ReadWrite **/ 
  569.84 +		EReadWrite =0x02
  569.85 +		};
  569.86 +	
  569.87 +	/**
  569.88 +	Types of matches.
  569.89 +	
  569.90 +	@publishedAll
  569.91 +	@released
  569.92 +	*/
  569.93 +	enum TURIMatch
  569.94 +		{
  569.95 +		/** Exact match **/	
  569.96 +		EExact =0x01,
  569.97 +		/** Domain match **/
  569.98 +		EDomain =0x02,
  569.99 +		/** Exact path match **/
 569.100 +		EExactPath =0x03,
 569.101 +		/** partial prefix path match **/
 569.102 +		EPartialPrefixPath =0x04,
 569.103 +		/** Partial suffix path match **/
 569.104 +		EPartialSuffixPath =0x05
 569.105 +		};
 569.106 +		
 569.107 +	/**
 569.108 +	Error codes error numbers -7650 to -7699 have been reserved for InetUriList.
 569.109 +	*/
 569.110 +	static const TInt KErrorBase 			= -7650;	
 569.111 +	/**
 569.112 +	URI already exists in database.
 569.113 +	*/
 569.114 +	static const TInt KErrUriAlreadyExists 			= KErrorBase;
 569.115 +	/**
 569.116 +	URI not found in database. 
 569.117 +	*/
 569.118 +	static const TInt KErrUriNotFound	 			= KErrorBase - 1;
 569.119 +	/** 
 569.120 +	Addition of URI failed. 
 569.121 +	*/
 569.122 +	static const TInt KErrUriAddFailed				= KErrorBase - 2;
 569.123 +	/** 
 569.124 +	Removal of URI failed.
 569.125 +	*/
 569.126 +	static const TInt KErrUriRemoveFailed			= KErrorBase - 3;
 569.127 +	/** 
 569.128 +	Updation of URI properties failed.
 569.129 +	*/
 569.130 +	static const TInt KErrUriUpdateFailed			= KErrorBase - 4;
 569.131 +	/** 
 569.132 +	URI is read only.
 569.133 +	*/
 569.134 +	static const TInt KErrUriReadOnly				= KErrorBase - 5;
 569.135 +	/** 
 569.136 +	Service type of URI is missing.
 569.137 +	*/
 569.138 +	static const TInt KErrServiceTypeNotPresent 	= KErrorBase - 6;	
 569.139 +	/** 
 569.140 +	Handle is not open.
 569.141 +	*/
 569.142 +	static const TInt KErrNotOpen				 	= KErrorBase - 7;	
 569.143 +	/**
 569.144 +	Invalid stream handle
 569.145 +	*/
 569.146 +	static const TInt KErrInvalidStreamHandle 		= KErrorBase - 8;
 569.147 +	
 569.148 +	/** 
 569.149 +	Panic text if handle is not open.
 569.150 +	*/
 569.151 +	_LIT(KInetUriListErrHandleNotOpen,		"Handle not open");
 569.152 +
 569.153 +	}
 569.154 +
 569.155 +/**
 569.156 +This class defines the argument parameters for the query operation. It is possible to 
 569.157 +set the arguments in various combinations. The argument types can be ServiceType, 
 569.158 +ListType, URI in TDesC8 form, and URIMatch.
 569.159 +
 569.160 +@publishedAll
 569.161 +@released
 569.162 +*/
 569.163 +class TQueryArgs
 569.164 +	{
 569.165 +	public:
 569.166 +		/**
 569.167 +		The argument types.
 569.168 +		
 569.169 +		@internalComponent
 569.170 +		*/
 569.171 +		enum TArgType
 569.172 +			{
 569.173 +			EUri = 1,
 569.174 +			EServiceType,
 569.175 +			EListType,
 569.176 +			EURIMatch
 569.177 +			};
 569.178 +		/**
 569.179 +		Bit width of the type.
 569.180 +		
 569.181 +		@internalComponent
 569.182 +		*/
 569.183 +		enum 
 569.184 +			{
 569.185 +			KBitsPerType = 3			
 569.186 +			};
 569.187 +		
 569.188 +		/**
 569.189 +		Default constructor
 569.190 +		*/
 569.191 +		inline TQueryArgs ()
 569.192 +			:iFlags ( 0 )
 569.193 +			{}
 569.194 +
 569.195 +
 569.196 +		/**
 569.197 +		A templated constructor that constructs the query argument.
 569.198 +		It takes one argument.
 569.199 +		*/
 569.200 +		template < class T0 >
 569.201 +		explicit inline TQueryArgs ( T0 a0 )
 569.202 +			{
 569.203 +			Assign ( a0 );
 569.204 +			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType));
 569.205 +			}
 569.206 +
 569.207 +		/**
 569.208 +		A templated constructor that constructs the query argument.
 569.209 +		It takes two arguments.
 569.210 +		*/
 569.211 +		template < class T0, class T1 >
 569.212 +		inline TQueryArgs ( T0 a0, T1 a1 )
 569.213 +			{
 569.214 +			Assign ( a0 );
 569.215 +			Assign ( a1 );
 569.216 +			iFlags=(Type(a0)<<(( Type(a0))*KBitsPerType)) |
 569.217 +					(Type(a1)<<(( Type(a1))*KBitsPerType));
 569.218 +			}
 569.219 +
 569.220 +		/**
 569.221 +		A templated constructor that constructs the query argument.
 569.222 +		It takes three arguments.
 569.223 +		*/
 569.224 +		template < class T0, class T1, class T2 >
 569.225 +		inline TQueryArgs ( T0 a0, T1 a1, T2 a2 )
 569.226 +			{
 569.227 +			Assign ( a0 );
 569.228 +			Assign ( a1 );
 569.229 +			Assign ( a2 );
 569.230 +			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
 569.231 +					(Type(a1)<<(Type(a1)*KBitsPerType)) |
 569.232 +					(Type(a2)<<(Type(a2)*KBitsPerType));
 569.233 +			}
 569.234 +
 569.235 +		/**
 569.236 +		A templated constructor that constructs the query argument.
 569.237 +		It takes four arguments.
 569.238 +		*/
 569.239 +		template < class T0, class T1, class T2, class T3 >
 569.240 +		inline TQueryArgs ( T0 a0, T1 a1, T2 a2, T3 a3 )
 569.241 +			{
 569.242 +			Assign ( a0 );
 569.243 +			Assign ( a1 );
 569.244 +			Assign ( a2 );
 569.245 +			Assign ( a3 );				
 569.246 +			iFlags=(Type(a0)<<(Type(a0)*KBitsPerType)) | 
 569.247 +					(Type(a1)<<(Type(a1)*KBitsPerType)) |
 569.248 +					(Type(a2)<<(Type(a2)*KBitsPerType)) |
 569.249 +					(Type(a3)<<(Type(a3)*KBitsPerType));
 569.250 +			}
 569.251 +		
 569.252 +
 569.253 +		/**
 569.254 +		Checks whether the flag is set for the given argument type.
 569.255 +				
 569.256 +		@internalComponent
 569.257 +		*/
 569.258 +		TBool IsSet ( TArgType aType ) const
 569.259 +			{
 569.260 +			TInt val = iFlags & ( aType << ( aType  * KBitsPerType ) );
 569.261 +			return iFlags & ( aType << ( aType  * KBitsPerType ) );
 569.262 +			}
 569.263 +		
 569.264 +		/**
 569.265 +		Returns the argument if set, otherwise returns KErrNotFound.
 569.266 +		
 569.267 +		@internalComponent
 569.268 +		*/		
 569.269 +		TInt Get ( TArgType aType ) const
 569.270 +			{
 569.271 +			if ( IsSet ( aType ) )
 569.272 +				return iArgs[aType - 1];
 569.273 +			return KErrNotFound;			
 569.274 +			}
 569.275 +		
 569.276 +		/**
 569.277 +		Maximum number of arguments. Currently set as 4.
 569.278 +		
 569.279 +		@internalComponent
 569.280 +		*/
 569.281 +		enum
 569.282 +			{
 569.283 +			KMaxArguments = 4
 569.284 +			};
 569.285 +					
 569.286 +	private:
 569.287 +
 569.288 +		/**
 569.289 +		@internalComponent
 569.290 +		*/			
 569.291 +		TArgType Type ( const TDesC8* )
 569.292 +			{
 569.293 +			return EUri;				
 569.294 +			}
 569.295 +			
 569.296 +		TArgType Type ( InetUriList::TServiceType )
 569.297 +			{
 569.298 +			return EServiceType;				
 569.299 +			}
 569.300 +
 569.301 +		TArgType Type ( InetUriList::TListType )
 569.302 +			{
 569.303 +			return EListType;				
 569.304 +			}
 569.305 +
 569.306 +		TArgType Type ( InetUriList::TURIMatch )
 569.307 +			{
 569.308 +			return EURIMatch;				
 569.309 +			}
 569.310 +		
 569.311 +		void Assign ( const TDesC8* aValue )
 569.312 +			{
 569.313 +			iArgs[Type(aValue)-1] = (TInt)aValue;
 569.314 +			}
 569.315 +			
 569.316 +		void Assign ( InetUriList::TServiceType aValue )
 569.317 +			{
 569.318 +			iArgs[Type(aValue)-1] = aValue;
 569.319 +			}
 569.320 +			
 569.321 +		void Assign ( InetUriList::TListType aValue )
 569.322 +			{
 569.323 +			iArgs[Type(aValue)-1] = aValue;
 569.324 +			}
 569.325 +			
 569.326 +		void Assign ( InetUriList::TURIMatch aValue )
 569.327 +			{
 569.328 +			iArgs[Type(aValue)-1] = aValue;
 569.329 +			}
 569.330 +			
 569.331 +	private:	
 569.332 +		TInt iArgs [KMaxArguments];
 569.333 +		TInt iFlags;			
 569.334 +	};
 569.335 +
 569.336 +#endif // __INETURILISTDEF_H__
   570.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   570.2 +++ b/epoc32/include/mw/ipaddr.h	Wed Mar 31 12:27:01 2010 +0100
   570.3 @@ -0,0 +1,63 @@
   570.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   570.5 +// All rights reserved.
   570.6 +// This component and the accompanying materials are made available
   570.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   570.8 +// which accompanies this distribution, and is available
   570.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  570.10 +//
  570.11 +// Initial Contributors:
  570.12 +// Nokia Corporation - initial contribution.
  570.13 +//
  570.14 +// Contributors:
  570.15 +//
  570.16 +// Description:
  570.17 +//
  570.18 +
  570.19 +#ifndef CIPADDRESS___
  570.20 +#define CIPADDRESS___
  570.21 +
  570.22 +#include <in_sock.h>
  570.23 +
  570.24 +/** Size of CIpAddress buffer. */
  570.25 +const TInt KIpAddressSize = 39; // large enough for full IPv6 address = 39 (8 * 4 + 7)
  570.26 +
  570.27 +class CIpAddress : public CBase
  570.28 +/** Utility class to hold an IP address as a string on the heap.
  570.29 +
  570.30 +This can be useful for parsers that have IP address fields. 
  570.31 +@publishedAll
  570.32 +@released
  570.33 +*/
  570.34 +	{
  570.35 +	public:
  570.36 +		IMPORT_C static CIpAddress*	NewL(const TDesC& aAddr);
  570.37 +		IMPORT_C static CIpAddress*	NewLC(const TDesC& aAddr);
  570.38 +		inline static CIpAddress*	NewL();
  570.39 +		inline static CIpAddress*	NewLC();
  570.40 +		IMPORT_C 					~CIpAddress();
  570.41 +		IMPORT_C void				SetAddrL(const TDesC& aAddr);
  570.42 +		IMPORT_C const TDesC&		Addr() const;
  570.43 +	private:
  570.44 +		CIpAddress();
  570.45 +	private:
  570.46 +		HBufC*				iAddr;
  570.47 +	};
  570.48 +
  570.49 +inline CIpAddress* CIpAddress::NewL()
  570.50 +/** Allocates and constructs a new empty IP address object.
  570.51 +
  570.52 +@return New IP address object */
  570.53 +	{
  570.54 +	return NewL(KNullDesC);
  570.55 +	}
  570.56 +
  570.57 +inline CIpAddress* CIpAddress::NewLC()
  570.58 +/** Allocates and constructs a new empty IP address object, leaving the object 
  570.59 +on the cleanup stack.
  570.60 +
  570.61 +@return New IP address object */
  570.62 +	{
  570.63 +	return NewLC(KNullDesC);
  570.64 +	}
  570.65 +
  570.66 +#endif
   571.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   571.2 +++ b/epoc32/include/mw/logdef.h	Wed Mar 31 12:27:01 2010 +0100
   571.3 @@ -0,0 +1,135 @@
   571.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   571.5 +// All rights reserved.
   571.6 +// This component and the accompanying materials are made available
   571.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   571.8 +// which accompanies this distribution, and is available
   571.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  571.10 +//
  571.11 +// Initial Contributors:
  571.12 +// Nokia Corporation - initial contribution.
  571.13 +//
  571.14 +// Contributors:
  571.15 +//
  571.16 +// Description:
  571.17 +// Define Logging Service Constants, Macros and Definitions 
  571.18 +// intended for inclusion into any source file
  571.19 +// which define classes wishing to use log server services.
  571.20 +// 
  571.21 +//
  571.22 +
  571.23 +#if !defined(__LOGDEF_H__)
  571.24 +#define __LOGDEF_H__
  571.25 +
  571.26 +#if !defined(__E32BASE_H__)
  571.27 +#include <e32base.h>
  571.28 +#endif
  571.29 +
  571.30 +#if !defined(__ANSICOMP_H__)
  571.31 +#include <ansicomp.h>	// Enforce ANSI compliance upon Microsoft Compilers
  571.32 +#endif
  571.33 +
  571.34 +// This define removed for sanity and performance sake.  To enable logging in
  571.35 +// your component, redefine the __LOGGING macro in your own .cpp files, prior to
  571.36 +// the #include of this file.
  571.37 +// #define __LOGGING 1
  571.38 +
  571.39 +/**
  571.40 +Define a constant to control the maximum length of a log message
  571.41 +@publishedAll
  571.42 +@deprecated
  571.43 +*/
  571.44 +const TInt KMaxLogEntrySize = KMaxFileName;
  571.45 +
  571.46 +// Logging definitions
  571.47 +#if defined (__LOGGING) && 	defined (_DEBUG)		
  571.48 +
  571.49 +// Logging activity is enabled
  571.50 +#if !defined(__CLOG_H__)
  571.51 +#include "clog.h"
  571.52 +#endif
  571.53 +
  571.54 +	// Define an error message for failed open calls
  571.55 +	_LIT(KLogOpenFailed,"No log available");
  571.56 +
  571.57 +	// Define a set of macros to control logging activity
  571.58 +	// The log server client pointer
  571.59 +	#define __DECLARE_LOG					CLogClient* iLogPtr;
  571.60 +
  571.61 +	// Open a connection to the log server for appended log messages
  571.62 +	#define __OPEN_LOG(aLogName)			{iLogPtr = NULL; TRAPD(logError,(iLogPtr = CLogClient::NewL(aLogName,EFalse))); if(logError !=KErrNone) __QINFO(KLogOpenFailed);}
  571.63 +	// Open a connection to the log server for log messages to go to a clean log
  571.64 +	#define __OPEN_CLEANLOG(aLogName)		{iLogPtr = NULL; TRAPD(logError,(iLogPtr = CLogClient::NewL(aLogName,ETrue))); if(logError !=KErrNone) __QINFO(KLogOpenFailed);}
  571.65 +	// Close the connection to the log server
  571.66 +	#define __CLOSE_LOG						{delete iLogPtr; iLogPtr = NULL;}
  571.67 +	// Push and pop the log onto the cleanup stack
  571.68 +	#define __PUSHLOGL						{CleanupStack::PushL(iLogPtr);}
  571.69 +	#define __POPLOG						{CleanupStack::Pop();}
  571.70 +	
  571.71 +	// Log a simple message
  571.72 +	#define __LOG(aText)					{if(iLogPtr != NULL) iLogPtr->Log(aText,CLogClient::ELogLight);}
  571.73 +	// Log a message with single parameter formatting.
  571.74 +	#define __LOG1(aText,aV1)				{if(iLogPtr != NULL) iLogPtr->Log(CLogClient::ELogLight,aText,aV1);}
  571.75 +
  571.76 +	#if defined (__PROFILING__)
  571.77 +	// Define additional macros for logging profiling information
  571.78 +		#define __PROFILELOG(aText)			{if(iLogPtr != NULL) iLogPtr->Log(aText,CLogClient::ELogProfile);}
  571.79 +		#define __PROFILELOG1(aText,aV1)	{if(iLogPtr != NULL) iLogPtr->Log(CLogClient::ELogProfile,aText,aV1);}
  571.80 +	#else
  571.81 +	// Empty macros for non-profiling builds
  571.82 +		#define __PROFILELOG(aText);
  571.83 +		#define __PROFILELOG1(aText,aV1);
  571.84 +	#endif
  571.85 +
  571.86 +	// A log method entry macro
  571.87 +	#define __LOG_ENTER(aText)			{if(iLogPtr != NULL) iLogPtr->LogEnter(aText,CLogClient::ELogProfile); }
  571.88 +	// A log method exit macro
  571.89 +	#define __LOG_RETURN				{if(iLogPtr != NULL) iLogPtr->LogReturn(); }
  571.90 +	// Log a simple message at a particular level of detail
  571.91 +	#define __LOGX(aLevel,aText)		{if(iLogPtr != NULL) iLogPtr->Log(aText,aLevel);}
  571.92 +	// Log a simple message at a particular level of detail with single parameter formatting.
  571.93 +	#define __LOGX1(aLevel,aText,aV1)	{if(iLogPtr != NULL) iLogPtr->Log(aLevel,aText,aV1);}
  571.94 +	// Log a simple message at trace level of detail
  571.95 +	#define __TRACELOG(aText)			{if(iLogPtr != NULL) iLogPtr->Log(aText,CLogClient::ELogTrace); }
  571.96 +	// Log a simple message at trace level of detail with single parameter formatting.
  571.97 +	#define __TRACELOG1(aText,aV1)		{if(iLogPtr != NULL) iLogPtr->Log(CLogClient::ELogTrace,aText,aV1);}
  571.98 +	// Show a simple message within the info window.
  571.99 +	#define __QINFO(aText)				{User::InfoPrint(aText);} 
 571.100 +	// Configuration of logging server behaviour
 571.101 +	// Turn on the RDebug::Print() when logging (Default setting)
 571.102 +	#define __ENABLE_LOGRDEBUG()		{if(iLogPtr != NULL) iLogPtr->RDebugConfig(ETrue);} 
 571.103 +	// Turn off the RDebug::Print() when logging
 571.104 +	#define __DISABLE_LOGRDEBUG()		{if(iLogPtr != NULL) iLogPtr->RDebugConfig(EFalse);} 
 571.105 +
 571.106 +#else
 571.107 +  #if !defined (_DEBUG)
 571.108 +	// In Release builds we want no macro definition whatsoever
 571.109 +	#define __DECLARE_LOG
 571.110 +
 571.111 +  #else	// In debug builds...
 571.112 +	// Empty macros for non-logging builds, except for __DECLARE_LOG - we want to ensure the
 571.113 +	// object sizes of classes are identical when headers are included in classes with a mixture
 571.114 +	// of __LOGGING turned on and off, to avoid nasty run-time linking errors.
 571.115 +	#define __DECLARE_LOG				void* iLogPtrNotInUse;
 571.116 +  #endif
 571.117 +	#define __OPEN_LOG(aLogName)
 571.118 +	#define __OPEN_CLEANLOG(aLogName)
 571.119 +	#define __CLOSE_LOG
 571.120 +	#define __PUSHLOGL
 571.121 +	#define __POPLOG
 571.122 +	#define __LOG_ENTER(aText)
 571.123 +	#define __LOG_RETURN 
 571.124 +	#define __LOG(aText)
 571.125 +	#define __LOG1(aText,aV1)
 571.126 +	#define __LOGX(aLevel,aText)
 571.127 +	#define __LOGX1(aLevel,aText,aV1)
 571.128 +	#define __PROFILELOG(aText)
 571.129 +	#define __PROFILELOG1(aText,aV1)
 571.130 +	#define __TRACELOG(aText)
 571.131 +	#define __TRACELOG1(aText,aV1)
 571.132 +	#define __QINFO(aText)
 571.133 +	#define __ENABLE_LOGRDEBUG()
 571.134 +	#define __DISABLE_LOGRDEBUG()
 571.135 +
 571.136 +#endif	// __LOGGING
 571.137 +
 571.138 +#endif	// __LOGDEF_H__
   572.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   572.2 +++ b/epoc32/include/mw/mdataproviderobserver.h	Wed Mar 31 12:27:01 2010 +0100
   572.3 @@ -0,0 +1,117 @@
   572.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   572.5 +// All rights reserved.
   572.6 +// This component and the accompanying materials are made available
   572.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   572.8 +// which accompanies this distribution, and is available
   572.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  572.10 +//
  572.11 +// Initial Contributors:
  572.12 +// Nokia Corporation - initial contribution.
  572.13 +//
  572.14 +// Contributors:
  572.15 +//
  572.16 +// Description:
  572.17 +// Definition of the data provider observer abstract class
  572.18 +// It is anticipated that this class will be used as a mixin for
  572.19 +// those objects which wish to provide services for an MDataProvider
  572.20 +// plugin.
  572.21 +// 
  572.22 +//
  572.23 +
  572.24 +
  572.25 +#ifndef __MDATAPROVIDEROBSERVER_H__
  572.26 +#define __MDATAPROVIDEROBSERVER_H__
  572.27 +
  572.28 +// System includes
  572.29 +//
  572.30 +#include <e32std.h>
  572.31 +
  572.32 +//##ModelId=3B712B2B01C2
  572.33 +class MDataProviderObserver
  572.34 +/**
  572.35 +MDataProviderObserver provides a virtual interface for any class to observe
  572.36 +any MDataProvider, and provide data receiving services. 
  572.37 +@publishedAll
  572.38 +@deprecated
  572.39 +*/
  572.40 +	{
  572.41 +public:	// Methods
  572.42 +
  572.43 +/**
  572.44 +	Intended Usage	:	Called by the data provider to request processing of 
  572.45 +	the data within the buffer.
  572.46 +	@since			6.0
  572.47 +	@param			aBuffer	A reference to the buffer with the data to process
  572.48 + */
  572.49 +	//##ModelId=3B712B2B0209
  572.50 +	virtual void ProcessDataL(HBufC8& aBuffer) = 0;
  572.51 +
  572.52 +/**
  572.53 +	Intended Usage	:	Called by the data provider to report its status to 
  572.54 +	its observer. A status code which is either a standard error condition, 
  572.55 +	(i.e. < 0), a percentage complete value, ( 0 > aStatus < 100), OR a 
  572.56 +	TPluginStatus value.
  572.57 +	@since			6.0
  572.58 +	@param			aStatusCode	The status of the data provider
  572.59 + */
  572.60 +	//##ModelId=3B712B2B0203
  572.61 +	virtual void SetStatus(TInt aStatusCode = KErrNone) = 0;
  572.62 +
  572.63 +/**
  572.64 +	Intended Usage	:	The request to construct a CDataHandler to process data 
  572.65 +	of aDataType, where aDataType is a string to match against some plugins 
  572.66 +	declared data handling ability.
  572.67 +	@since			6.0
  572.68 +	@param			aDataType A reference to a descriptor with the data type
  572.69 + */
  572.70 +	//##ModelId=3B712B2B01FE
  572.71 +	virtual void SetDocumentTypeL(const TDesC& aDataType) = 0;
  572.72 +
  572.73 +/**
  572.74 +	Intended Usage	:	The request to construct a CDataHandler for aDataType with
  572.75 +	non default document encoding where aDataType is a string to match against 
  572.76 +	some plugins declared data handling ability.
  572.77 +	@since			6.0
  572.78 +	@param			aDataType		A reference to a descriptor with the data type
  572.79 +	@param			aContentType	A reference to a descriptor with the content type
  572.80 + */
  572.81 +	//##ModelId=3B712B2B0200
  572.82 +	virtual void SetDocumentTypeL(const TDesC& aDataType, const TDesC& aContentType) = 0;
  572.83 +
  572.84 +/**
  572.85 +	Intended Usage	:	The report of how many bytes of data is expected to be 
  572.86 +	passed to ProcessDataL, enabling %age reporting capabilities.
  572.87 +	@since			6.0
  572.88 +	@param			aAmountExpected	An integer value of the expected amount
  572.89 + */
  572.90 +	//##ModelId=3B712B2B01EC
  572.91 +	virtual void SetDataExpected(TInt aAmountExpected) = 0;
  572.92 +
  572.93 +/**
  572.94 +	Intended Usage	:	Set the URI that the DataProvider considers the base 
  572.95 +	URI for the current data.
  572.96 +	@since			6.0
  572.97 +	@param			aBaseUri	A const pointer to the uri
  572.98 + */
  572.99 +	//##ModelId=3B712B2B01EA
 572.100 +	virtual void SetBaseUriL(const TDesC* aBaseUri) = 0;
 572.101 +
 572.102 +private:
 572.103 +
 572.104 +/**
 572.105 +	Intended Usage	:	Reserved for future expansion.
 572.106 +	@since			6.0
 572.107 + */
 572.108 +	//##ModelId=3B712B2B01E1
 572.109 +	virtual void MDataProviderObserverReserved1() =0;
 572.110 +
 572.111 +/**
 572.112 +	Intended Usage	:	Reserved for future expansion.
 572.113 +	@since			6.0
 572.114 + */
 572.115 +	//##ModelId=3B712B2B01E0
 572.116 +	virtual void MDataProviderObserverReserved2() =0;
 572.117 +
 572.118 +	};  // MDataProviderObserver
 572.119 +
 572.120 +#endif    // __MDATAPROVIDEROBSERVER_H__
   573.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   573.2 +++ b/epoc32/include/mw/mdptx.h	Wed Mar 31 12:27:01 2010 +0100
   573.3 @@ -0,0 +1,56 @@
   573.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   573.5 +// All rights reserved.
   573.6 +// This component and the accompanying materials are made available
   573.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   573.8 +// which accompanies this distribution, and is available
   573.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  573.10 +//
  573.11 +// Initial Contributors:
  573.12 +// Nokia Corporation - initial contribution.
  573.13 +//
  573.14 +// Contributors:
  573.15 +//
  573.16 +// Description:
  573.17 +// Data generator for data transmission, used by URL Handler when transmitting data
  573.18 +// 
  573.19 +//
  573.20 +
  573.21 +#if !defined(__MDPTX_H__)
  573.22 +#define __MDPTX_H__
  573.23 +
  573.24 +#include <e32base.h>
  573.25 +
  573.26 +/**	
  573.27 +	@publishedAll
  573.28 +	@released
  573.29 +*/
  573.30 +class MDataProviderTransmissionData
  573.31 +	{
  573.32 +public:
  573.33 +	// This should return the data that the url handler should transmit.
  573.34 +	// This call will be repeated until datasize amounts of data has been
  573.35 +	// transmitted
  573.36 +	virtual const TDesC8& DataL()=0;
  573.37 +
  573.38 +	// Returns the size of the amount of data that needs to be transmitted.
  573.39 +	virtual TInt DataSize()=0;
  573.40 +
  573.41 +	// This returns the name of the data, this will depend on the type of
  573.42 +	// data transmission,
  573.43 +	virtual const TDesC& DataNameL()=0;
  573.44 +
  573.45 +	// This should return the refering url or NULL;
  573.46 +	virtual const TDesC& RefererUrlL()=0;
  573.47 +	
  573.48 +	// This returns the accepted charset.
  573.49 +	virtual const TDesC& AcceptedCharsetL()=0;
  573.50 +
  573.51 +	// This returns the accepted mimetype
  573.52 +	virtual const TDesC& AcceptedMimetypes()=0;
  573.53 +
  573.54 +private:
  573.55 +	//	Reserved for future expansion
  573.56 +	IMPORT_C virtual void MDataProviderTransmissionData_Reserved1()=0;
  573.57 +	};
  573.58 +
  573.59 +#endif    // __MDPTX_H__
   574.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   574.2 +++ b/epoc32/include/mw/mframeworksp.h	Wed Mar 31 12:27:01 2010 +0100
   574.3 @@ -0,0 +1,94 @@
   574.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   574.5 +// All rights reserved.
   574.6 +// This component and the accompanying materials are made available
   574.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   574.8 +// which accompanies this distribution, and is available
   574.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  574.10 +//
  574.11 +// Initial Contributors:
  574.12 +// Nokia Corporation - initial contribution.
  574.13 +//
  574.14 +// Contributors:
  574.15 +//
  574.16 +// Description:
  574.17 +// MMFrameworkSP.h
  574.18 +// 
  574.19 +//
  574.20 +
  574.21 +#ifndef __MFRAMEWORKSP_H__
  574.22 +#define __MFRAMEWORKSP_H__
  574.23 +
  574.24 +// System includes
  574.25 +//
  574.26 +#include <e32def.h>
  574.27 +
  574.28 +// Forward class declarations
  574.29 +//
  574.30 +class MWAPEngineObserver;
  574.31 +class CXmlTaskCoordinator;
  574.32 +class CLocalContext;
  574.33 +class CWapGCtxClient;
  574.34 +class CAttributeLookupTable;
  574.35 +class MWtaiPublicObserver;
  574.36 +
  574.37 +//##ModelId=3B666FA40394
  574.38 +class MFrameworkSP
  574.39 +/**
  574.40 +@publishedAll
  574.41 +@deprecated
  574.42 +*/
  574.43 +	{
  574.44 +public:
  574.45 +
  574.46 +/**
  574.47 +	Intended Usage	:	Return a pointer to the engine observer (pointer 
  574.48 +	because it could be NULL).
  574.49 +	@since			6.0
  574.50 +	@return			A pointer to the MWAPEngineObsever object.
  574.51 + */
  574.52 +	//##ModelId=3B666FA403C7
  574.53 +	virtual MWAPEngineObserver* Observer() =0;
  574.54 +
  574.55 +/**
  574.56 +	Intended Usage	:	Gets the Task Coordinator.
  574.57 +	@since			6.0
  574.58 +	@return			A reference to the Task Coordinater.
  574.59 + */
  574.60 +	//##ModelId=3B666FA403C6
  574.61 +	virtual CXmlTaskCoordinator& TaskCoordinator() =0;
  574.62 +	
  574.63 +/**
  574.64 +	Intended Usage	:	Gets WAP Local Context.
  574.65 +	@since			6.0
  574.66 +	@return			A reference to the WAP Local Context. 
  574.67 + */
  574.68 +	//##ModelId=3B666FA403BE
  574.69 +	virtual CLocalContext& LocalContext() =0;
  574.70 +
  574.71 +/**
  574.72 +	Intended Usage	:	Gets WAP Global Context.
  574.73 +	@since			6.0
  574.74 +	@return			A reference to the WAP Global Context. 
  574.75 + */
  574.76 +	//##ModelId=3B666FA403BD
  574.77 +	virtual CWapGCtxClient& GlobalContext() =0;
  574.78 +
  574.79 +/**
  574.80 +	Intended Usage	:	Gets the Attribute Look Up Table.
  574.81 +	@since			6.0
  574.82 +	@return			A reference to the Attribute Look Up Table.
  574.83 + */
  574.84 +	//##ModelId=3B666FA403BC
  574.85 +	virtual CAttributeLookupTable& AttributeLookup() =0;
  574.86 +
  574.87 +/**
  574.88 +	Intended Usage	:	
  574.89 +	@since			6.0
  574.90 +	@return			A reference to the WtaiPublic observer 
  574.91 + */
  574.92 +	//##ModelId=3B666FA403B2
  574.93 +	virtual MWtaiPublicObserver& WtaiPublicObserver() =0;
  574.94 +
  574.95 +	};
  574.96 +
  574.97 +#endif	// __MFRAMEWORKSP_H__
   575.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   575.2 +++ b/epoc32/include/mw/mmsvattachmentmanager.h	Wed Mar 31 12:27:01 2010 +0100
   575.3 @@ -0,0 +1,300 @@
   575.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   575.5 +// All rights reserved.
   575.6 +// This component and the accompanying materials are made available
   575.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   575.8 +// which accompanies this distribution, and is available
   575.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  575.10 +//
  575.11 +// Initial Contributors:
  575.12 +// Nokia Corporation - initial contribution.
  575.13 +//
  575.14 +// Contributors:
  575.15 +//
  575.16 +// Description:
  575.17 +//
  575.18 +
  575.19 +#ifndef __MMSVATTACHMENTMANAGER_H__
  575.20 +#define __MMSVATTACHMENTMANAGER_H__
  575.21 +
  575.22 +#include <e32base.h>
  575.23 +#include <msvstd.h>
  575.24 +#include <cmsvattachment.h>
  575.25 +
  575.26 +class MMsvAttachmentManager
  575.27 +/**
  575.28 +Defines the attachment management interface.
  575.29 +
  575.30 +This class is a pure virtual interface class that defines the APIs to be used for
  575.31 +attachment management in the Messaging Framework. It is expected that the clients of
  575.32 +this interface will be MTMs implementations that require attachment management.
  575.33 +
  575.34 +The API allows is based around the use of the CMsvAttachment object that represents
  575.35 +any type of attachment that is supported by the Messaging Framework. The CMsvAttachment
  575.36 +object provides users with various attributes about the attachment without having to
  575.37 +actually load or retrieve the attachment.
  575.38 +
  575.39 +This attachment manager API supports the following different types of attachments:
  575.40 +1 - File attachments, file based attachments that are copied or created in the message 
  575.41 +	store.
  575.42 +2 - Linked file attachments, file based attachments that are not copied and are simply 
  575.43 +	linked to the file location on disk.
  575.44 +3 - Message entry attachments, existing message entries that can be registered as
  575.45 +	attachments of another message entry.
  575.46 +
  575.47 +For file based attachments, this API also supports the retrieval of the files as
  575.48 +open read-only file handles.
  575.49 +
  575.50 +All functionality that requires the attachment manager to be in edit mode have been
  575.51 +defined as asynchronous. The attachment manager does not allow multiple asynchronous
  575.52 +requests to be made at the same time.
  575.53 +
  575.54 +@see CMsvAttachment
  575.55 +@publishedAll
  575.56 +@released
  575.57 +*/
  575.58 +	{
  575.59 +public:	
  575.60 +	/**
  575.61 +	Adds an attachment to the message store by file path.
  575.62 +	
  575.63 +	The attachment file must be located in a public area. The file path must also be a
  575.64 +	full path specification. The file is copied into the message store.
  575.65 +	
  575.66 +	@param aFilePath The absolute file path of the attachment file.
  575.67 +	@param aAttachmentInfo The attachment info associated with the file.
  575.68 +	  If the routine does not leave, then ownership will be transferred to the
  575.69 +	  attachment manager. If the routine does leave then ownership will not have
  575.70 +	  been transfered and the caller is responsible for cleanup.
  575.71 +	@param aStatus The client's request status to complete when the operation has completed.
  575.72 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
  575.73 +	*/
  575.74 +	virtual void AddAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
  575.75 +		
  575.76 +	/**
  575.77 +	Adds an attachment to the message store by file handle.
  575.78 +	
  575.79 +	This is used to add an attachment from an open file handle such as when adding a file
  575.80 +	from the caller's private area. The file is copied into the message store. The message
  575.81 +	server is responsible for closing the file handle once copied.
  575.82 +	
  575.83 +	@param aFileHandle An open file handle for the attachment file. Ownership is transferred. The caller must close the file handle.
  575.84 +	@param aAttachmentInfo The attachment info associated with the file.
  575.85 +	  If the routine does not leave, then ownership will be transferred to the
  575.86 +	  attachment manager. If the routine does leave then ownership will not have
  575.87 +	  been transfered and the caller is responsible for cleanup.
  575.88 +	@param aStatus The client's request status to complete.
  575.89 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
  575.90 +	*/
  575.91 +	virtual void AddAttachmentL(RFile& aFileHandle, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
  575.92 +	
  575.93 +	/**
  575.94 +	Adds an attachment as a linked file attachment.
  575.95 +	
  575.96 +	The attachment is added as a link by its file path. The attachment is not copied to the
  575.97 +	message store. The attachment is linked and therefore must be in a public location.
  575.98 +	
  575.99 +	It is possible to change a linked attachment file after it has been attached to a message
 575.100 +	entry. No integrity checking is carried out. This is left to individual MTMs or implementors
 575.101 +	of this interface to decide if any checking is required such as checking if the size has changed.
 575.102 +	
 575.103 +	@param aFilePath The absolute file path of the linked attachment file.
 575.104 +	@param aAttachmentInfo The attachment info associated with the file.
 575.105 +	  If the routine does not leave, then ownership will be transferred to the
 575.106 +	  attachment manager. If the routine does leave then ownership will not have
 575.107 +	  been transfered and the caller is responsible for cleanup.
 575.108 +	@param aStatus The client's request status to complete.
 575.109 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.110 +	*/
 575.111 +	virtual void AddLinkedAttachmentL(const TDesC& aFilePath, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 575.112 +	
 575.113 +	/**
 575.114 +	Adds a message entry as an attachment.
 575.115 +	
 575.116 +	The message entry is registered as an attachment of the	current message entry. The attachment
 575.117 +	message entry is not copied.
 575.118 +	
 575.119 +	@param aEntryId The message Id of the entry to register as an attachment.
 575.120 +	@param aAttachmentInfo The attachment info associated with the file.
 575.121 +	  If the routine does not leave, then ownership will be transferred to the
 575.122 +	  attachment manager. If the routine does leave then ownership will not have
 575.123 +	  been transfered and the caller is responsible for cleanup.
 575.124 +	@param aStatus The client's request status to complete.
 575.125 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.126 +	*/
 575.127 +	virtual void AddEntryAsAttachmentL(TMsvId aEntryId, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 575.128 +	
 575.129 +	/**
 575.130 +	Creates a new empty attachment file.
 575.131 +	
 575.132 +	The caller is returned an open writable file handle to an empty attachment file in the message
 575.133 +	store. The caller must pass in an uninitialised file handle. The file handle cannot be used
 575.134 +	until the asynchronous request completes successfully. If the request is sucessful the file handle
 575.135 +	is open and must close by the caller once the data has been written to it.
 575.136 +	
 575.137 +	@param aFileName The filename to assign to the newly create attachment file.
 575.138 +	@param aAttachmentFile An uninitialised file handle. This is opened and can be written to if the
 575.139 +		   request is successful. Ownership is transferred . The caller must close the file handle.
 575.140 +	@param aAttachmentInfo The attachment info associated with the file.
 575.141 +	  If the routine does not leave, then ownership will be transferred to the
 575.142 +	  attachment manager. If the routine does leave then ownership will not have
 575.143 +	  been transfered and the caller is responsible for cleanup.
 575.144 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.145 +	*/
 575.146 +	virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 575.147 +	
 575.148 +	
 575.149 +	/**
 575.150 +	Renames the physical filename of an attachment.
 575.151 +		
 575.152 +	@param aIndex The array index position of the attachment to be renamed.
 575.153 +	@param aNewName The new name of the attachment.
 575.154 +	@param aStatus The client's request status to complete.
 575.155 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.156 +	@leave KErrAlreadyExists If the supplied attachment filename already exists.
 575.157 +	*/	
 575.158 +	virtual void RenameAttachmentL(TInt aIndex, const TDesC& aNewName, TRequestStatus& aStatus) = 0;
 575.159 +
 575.160 +	
 575.161 +	/**
 575.162 +	Counts the number of attachments.
 575.163 +	
 575.164 +	Returns the number of attachments associated with the message entry. This includes all the
 575.165 +	attachments that have not been commited yet.
 575.166 +	@return The number of attachments.
 575.167 +	*/
 575.168 +	virtual TInt AttachmentCount() const = 0;
 575.169 +	
 575.170 +	/**
 575.171 +	Returns an attachment info object.
 575.172 +	
 575.173 +	This object contains attributes and information about the attachment without having actually
 575.174 +	retrieving the actual attachment. The caller assumes ownership of the returned object.
 575.175 +	
 575.176 +	@param aIndex The array index position of the attachment.
 575.177 +	@return The attachment info for the attachment. Ownership is passed to caller,
 575.178 +	*/
 575.179 +	virtual CMsvAttachment* GetAttachmentInfoL(TInt aIndex) = 0;
 575.180 +	
 575.181 +	/**
 575.182 +	Returns an attachment info object.
 575.183 +	
 575.184 +	This object contains attributes and information about the attachment without having actually
 575.185 +	retrieving the actual attachment. The caller assumes ownership of the returned object.
 575.186 +	
 575.187 +	@param aId The attachment Id of the attachment.
 575.188 +	@return The attachment info for the attachment. Ownership is passed to caller,
 575.189 +	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 575.190 +	*/
 575.191 +	virtual CMsvAttachment* GetAttachmentInfoL(TMsvAttachmentId aId) = 0;
 575.192 +
 575.193 +	/**
 575.194 +	Modifies the attachment info for a particular attachment.
 575.195 +	
 575.196 +	This allows callers to modify an existing attachment info object for a particular attachment.
 575.197 +	The attachment info object passed in replaces the existing attachment info object and takes
 575.198 +	ownership for the object passed in. It is expected that callers will use GetAttachmentInfoL 
 575.199 +	to get the object, make some changes and pass it back into this method.
 575.200 +	
 575.201 +	@param aAttachmentInfo The attachment info associated with the file.
 575.202 +	  If the routine does not leave, then ownership will be transferred to the
 575.203 +	  attachment manager. If the routine does leave then ownership will not have
 575.204 +	  been transfered and the caller is responsible for cleanup.
 575.205 +	@param aStatus The client's request status to complete.
 575.206 +	@leave KErrNotFound If the attachment that is trying to be modified cannot be found.
 575.207 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.208 +	*/
 575.209 +	virtual void ModifyAttachmentInfoL(CMsvAttachment* aAttachmentInfo, TRequestStatus& aStatus) = 0;
 575.210 +
 575.211 +	/**
 575.212 +	Returns an open file handle for the attachment file.
 575.213 +	
 575.214 +	Returns a read-only open file handle for the attachment file. This only applies to file based
 575.215 +	attachments ie. file attachment and linked file attachments. The caller is responsible for
 575.216 +	closing the returned file handle.
 575.217 +	
 575.218 +	@param aIndex The array index position of the attachment.
 575.219 +	@return A read-only open file handle for the attachment file. Caller must close the handle.
 575.220 +	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 575.221 +	*/
 575.222 +	virtual RFile GetAttachmentFileL(TInt aIndex) = 0;
 575.223 +	
 575.224 +	/**
 575.225 +	Returns an open file handle for the attachment file.
 575.226 +	
 575.227 +	Returns a read-only open file handle for the attachment file. This only applies to file based
 575.228 +	attachments ie. file attachment and linked file attachments. The caller is responsible for
 575.229 +	closing the returned file handle.
 575.230 +	
 575.231 +	@param aIndex The array index position of the attachment.
 575.232 +	@return A read-only open file handle for the attachment file. Caller must close the handle.
 575.233 +	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 575.234 +	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 575.235 +	*/
 575.236 +	virtual RFile GetAttachmentFileL(TMsvAttachmentId aId) = 0;
 575.237 +	
 575.238 +	/**
 575.239 +	Returns an open writable file handle for the attachment file.
 575.240 +	
 575.241 +	Returns a writable open file handle for the attachment file. This only applies to file based
 575.242 +	attachments ie. file attachment and linked file attachments. The caller is responsible for
 575.243 +	closing the returned file handle.
 575.244 +	
 575.245 +	@param aIndex The array index position of the attachment.
 575.246 +	@return A writable open file handle for the attachment file. Caller must close the handle.
 575.247 +	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 575.248 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.249 +	@internalComponent
 575.250 +	*/
 575.251 +	virtual RFile GetAttachmentFileForWriteL(TInt aIndex) = 0;
 575.252 +	
 575.253 +	/**
 575.254 +	Returns an open writable file handle for the attachment file.
 575.255 +	
 575.256 +	Returns a writable open file handle for the attachment file. This only applies to file based
 575.257 +	attachments ie. file attachment and linked file attachments. The caller is responsible for
 575.258 +	closing the returned file handle.
 575.259 +	
 575.260 +	@param aIndex The array index position of the attachment.
 575.261 +	@return A writable open file handle for the attachment file. Caller must close the handle.
 575.262 +	@leave KErrNotSupported If the attachment is not a file attachment in the message store.
 575.263 +	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 575.264 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.265 +	@internalComponent
 575.266 +	*/
 575.267 +	virtual RFile GetAttachmentFileForWriteL(TMsvAttachmentId aId) = 0;
 575.268 +	
 575.269 +	/**
 575.270 +	Removes the attachment from the message entry.
 575.271 +	
 575.272 +	This changes the array index values of all the attachments after the removed one.
 575.273 +	Attachment files stored in the message store are deleted. Linked files and message entry 
 575.274 +	attachments are not deleted, this is left to the caller to do if required.
 575.275 +	
 575.276 +	@param aParam The array index position of the attachment to be removed.
 575.277 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.278 +	*/
 575.279 +	virtual void RemoveAttachmentL(TInt aIndex, TRequestStatus& aStatus) = 0;
 575.280 +	
 575.281 +	/**
 575.282 +	Removes the attachment from the message entry.
 575.283 +	
 575.284 +	This changes the array index values of all the attachments after the removed one.
 575.285 +	Attachment files stored in the message store are deleted. Linked files and message entry 
 575.286 +	attachments are not deleted, this is left to the caller to do if required.
 575.287 +	
 575.288 +	@param aParam The array index position of the attachment to be removed.
 575.289 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
 575.290 +	@leave KErrNotFound If an attachment with the specified attachment Id is not found.
 575.291 +	*/
 575.292 +	virtual void RemoveAttachmentL(TMsvAttachmentId aId, TRequestStatus& aStatus) = 0;
 575.293 +	
 575.294 +	/**
 575.295 +	Cancels the last asynchronous operation that was requested.
 575.296 +	
 575.297 +	Allows callers to cancel the last asynchronous operation. This will have no effect
 575.298 +	if an asynchronous is not waiting to complete.
 575.299 +	*/
 575.300 +	virtual void CancelRequest() = 0;
 575.301 +	};
 575.302 +
 575.303 +#endif // __MMSVATTACHMENTMANAGER_H__
   576.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   576.2 +++ b/epoc32/include/mw/mmsvattachmentmanagersync.h	Wed Mar 31 12:27:01 2010 +0100
   576.3 @@ -0,0 +1,94 @@
   576.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   576.5 +// All rights reserved.
   576.6 +// This component and the accompanying materials are made available
   576.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   576.8 +// which accompanies this distribution, and is available
   576.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  576.10 +//
  576.11 +// Initial Contributors:
  576.12 +// Nokia Corporation - initial contribution.
  576.13 +//
  576.14 +// Contributors:
  576.15 +//
  576.16 +// Description:
  576.17 +//
  576.18 +
  576.19 +#ifndef __MMSVATTACHMENTMANAGERSYNC_H__
  576.20 +#define __MMSVATTACHMENTMANAGERSYNC_H__
  576.21 +
  576.22 +#include <e32base.h>
  576.23 +#include <msvstd.h>
  576.24 +#include <cmsvattachment.h>
  576.25 +
  576.26 +class MMsvAttachmentManagerSync
  576.27 +/**
  576.28 +Defines the attachment management extensions interface.
  576.29 +
  576.30 +This class is a pure virtual interface class that defines the APIs to be used for
  576.31 +by MTMs and implementors of MMsvAttachmentManager.
  576.32 +
  576.33 +This API extends the MMsvAttachmentManager with synchronous calls for deleting
  576.34 +and creating attachments. 
  576.35 +
  576.36 +@see CMsvAttachment
  576.37 +@publishedAll
  576.38 +@released
  576.39 +*/
  576.40 +	{
  576.41 +public:	
  576.42 +	/**
  576.43 +	Creates a new empty attachment file.
  576.44 +	
  576.45 +	The caller is returned an open writable file handle to an empty attachment file in the message
  576.46 +	store. The caller must pass in an uninitialised file handle. If the request is sucessful the file handle
  576.47 +	is open and must close by the caller once the data has been written to it.
  576.48 +	
  576.49 +	@param aFileName The filename to assign to the newly create attachment file.
  576.50 +	@param aAttachmentFile An uninitialised file handle. This is opened and can be written to if the
  576.51 +		   request is successful. The ownership is transferred . The caller must close the file handle.
  576.52 +	@param aAttachmentInfo The attachment info associated with the file.
  576.53 +	  If the routine does not leave, then ownership will be transferred to the
  576.54 +	  attachment manager. If the routine does leave then ownership will not have
  576.55 +	  been transfered and the caller is responsible for cleanup.
  576.56 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
  576.57 +	*/
  576.58 +	virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo) = 0;
  576.59 +
  576.60 +
  576.61 +
  576.62 +	/**
  576.63 +	Renames the physical filename of an attachment.
  576.64 +	
  576.65 +	@param aIndex The array index position of the attachment to be renamed.
  576.66 +	@param aNewName The new name of the attachment.
  576.67 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
  576.68 +	@leave KErrAlreadyExists If the supplied attachment filename already exists.
  576.69 +	*/
  576.70 +	virtual void RenameAttachmentL(TInt aIndex, const TDesC& aNewName) = 0;
  576.71 +
  576.72 +	
  576.73 +	/**
  576.74 +	Removes the attachment from the message entry.
  576.75 +	
  576.76 +	This changes the array index values of all the attachments after the removed one.
  576.77 +	Attachment files stored in the message store are deleted. Linked files and message entry 
  576.78 +	attachments are not deleted, this is left to the caller to do if required.
  576.79 +	
  576.80 +	@param aParam The array index position of the attachment to be removed.
  576.81 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
  576.82 +	*/
  576.83 +	virtual void RemoveAttachmentL(TInt aIndex) = 0;
  576.84 +	
  576.85 +	/**
  576.86 +	Modify existing attachment
  576.87 +	@param aAttachmentInfo The attachment info associated with the file.
  576.88 +	  If the routine does not leave, then ownership will be transferred to the
  576.89 +	  attachment manager. If the routine does leave then ownership will not have
  576.90 +	  been transfered and the caller is responsible for cleanup.
  576.91 +	@leave KErrAccessDenied If attachment manager is in read-only mode.
  576.92 +	*/
  576.93 +	virtual void ModifyAttachmentInfoL(CMsvAttachment* aAttachmentInfo) = 0;
  576.94 +	
  576.95 +	};
  576.96 +
  576.97 +#endif // __MMSVATTACHMENTMANAGERSYNC_H__
   577.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   577.2 +++ b/epoc32/include/mw/mobexnotify.h	Wed Mar 31 12:27:01 2010 +0100
   577.3 @@ -0,0 +1,41 @@
   577.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   577.5 +// All rights reserved.
   577.6 +// This component and the accompanying materials are made available
   577.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   577.8 +// which accompanies this distribution, and is available
   577.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  577.10 +//
  577.11 +// Initial Contributors:
  577.12 +// Nokia Corporation - initial contribution.
  577.13 +//
  577.14 +// Contributors:
  577.15 +//
  577.16 +// Description:
  577.17 +//
  577.18 +
  577.19 +#ifndef __MOBEXNOTIFY_H__
  577.20 +#define __MOBEXNOTIFY_H__
  577.21 +
  577.22 +#include <e32std.h>
  577.23 +
  577.24 +class CObexPacket;
  577.25 +
  577.26 +/**
  577.27 +@internalComponent
  577.28 +
  577.29 +Provides the call back interface for anything owned by CObex.
  577.30 +Note:  This is an internal class which is not intended for use outside of
  577.31 +the Transport<->Obex interface.  Even where access rules allow it, external
  577.32 +users should not call these functions as their implementation may change.
  577.33 +*/
  577.34 +NONSHARABLE_CLASS(MObexNotify)
  577.35 +
  577.36 +	{
  577.37 +	public:
  577.38 +		virtual void Process(CObexPacket &aPacket) =0;
  577.39 +		virtual void Error(TInt aError) =0;
  577.40 +		virtual void TransportUp() =0;			// Call back to start the obex session
  577.41 +		virtual void TransportDown(TBool aForceTransportDeletion) =0;
  577.42 +	};
  577.43 +
  577.44 +#endif // __MOBEXNOTIFY_H__
   578.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   578.2 +++ b/epoc32/include/mw/msvapi.h	Wed Mar 31 12:27:01 2010 +0100
   578.3 @@ -0,0 +1,1002 @@
   578.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   578.5 +// All rights reserved.
   578.6 +// This component and the accompanying materials are made available
   578.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   578.8 +// which accompanies this distribution, and is available
   578.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  578.10 +//
  578.11 +// Initial Contributors:
  578.12 +// Nokia Corporation - initial contribution.
  578.13 +//
  578.14 +// Contributors:
  578.15 +//
  578.16 +// Description:
  578.17 +//
  578.18 +
  578.19 +#ifdef _DEBUG
  578.20 +#undef _NO_SESSION_LOGGING_
  578.21 +#endif
  578.22 +
  578.23 +#ifndef __MSVAPI_H__
  578.24 +#define __MSVAPI_H__
  578.25 +
  578.26 +#include <e32base.h>
  578.27 +#include <s32file.h>
  578.28 +
  578.29 +#ifdef _MSVAPI_DONT_INCLUDE_FLOGGER_
  578.30 +	#ifndef _NO_SESSION_LOGGING_
  578.31 +		#define _NO_SESSION_LOGGING_
  578.32 +	#endif
  578.33 +#else
  578.34 +	#include <flogger.h>
  578.35 +#endif
  578.36 +
  578.37 +#include <msvstd.h>
  578.38 +#include <msvstore.h>
  578.39 +#include <msvipc.h>
  578.40 +#include <msvarray.h>
  578.41 +#include <mclient.h>
  578.42 +
  578.43 +// Forward declarations
  578.44 +class CMsvSession;
  578.45 +class CMsvEntry;
  578.46 +class CBaseMtm;
  578.47 +class CMsvClientEntry;
  578.48 +class CMsvEntryArray;
  578.49 +class CMsvServer;
  578.50 +class CMsvServerEntry;
  578.51 +
  578.52 +// Remove these to remove client logging
  578.53 +//#define _NO_SESSION_LOGGING_
  578.54 +#define _NO_SESSION_LOGGING_SERIAL_
  578.55 +
  578.56 +// Single export used to start the message server
  578.57 +IMPORT_C TInt StartMessageServer(TAny*);
  578.58 +
  578.59 +// Create Message Server and return a server entry owned by caller
  578.60 +// This is all that is required to test server Mtm's
  578.61 +IMPORT_C CServer2* CreateMessageServerL(CMsvServerEntry*& aServerEntry);
  578.62 +
  578.63 +//**********************************
  578.64 +// CMsvOperation
  578.65 +//**********************************
  578.66 +//
  578.67 +// Abstract base class for operations controlling asynchronous functions
  578.68 +//
  578.69 +
  578.70 +class CMsvOperation : public CActive
  578.71 +/** Defines an interface for use by objects which control asynchronous commands 
  578.72 +in the messaging system. 
  578.73 +
  578.74 +Such objects are returned by CMsvEntry and User Interface MTM functions that 
  578.75 +complete asynchronously. The interface allows clients to:
  578.76 +
  578.77 +1. get progress information about the operation
  578.78 +
  578.79 +2. cancel the operation
  578.80 +
  578.81 +3. be signalled asynchronously when the operation completes; a client passes 
  578.82 +in a TRequestStatus of a suitable active object for this purpose
  578.83 +
  578.84 +The client only needs to understand the CMsvOperation interface, not the concrete 
  578.85 +implementation used. 
  578.86 +
  578.87 +Writing derived classes:
  578.88 +
  578.89 +As the base class interface for User Interface MTMs, CBaseUiMtm, defines functions 
  578.90 +that return CMsvOperation objects for control of asynchronous operations, 
  578.91 +implementers of these MTM components are required to provide suitable derived 
  578.92 +classes. For example, if CBaseUiMtm::EditL() is implemented to provide message 
  578.93 +editing, a CMsvOperation -derived class would be provided that completes when 
  578.94 +the editing operation is complete.
  578.95 +
  578.96 +Concrete derived classes must provide implementations of the pure virtual 
  578.97 +DoCancel() and RunL() functions defined by CActive. DoCancel() should be provided 
  578.98 +in the normal way to cancel the operation. RunL() should, in addition to any 
  578.99 +other required functionality, always end by signalling the client that the 
 578.100 +operation is complete with a suitable completion code. 
 578.101 +
 578.102 +@publishedAll
 578.103 +@released
 578.104 +*/
 578.105 +	{
 578.106 +public:
 578.107 +	IMPORT_C CMsvOperation(CMsvSession& aMsvSession, TInt aPriority, TRequestStatus& aObserverRequestStatus);
 578.108 +	IMPORT_C ~CMsvOperation();
 578.109 +	/** Gets information on the progress of the operation. 
 578.110 +	
 578.111 +	All operations on local entries share the same progress information format, 
 578.112 +	which defined by TMsvLocalOperationProgress. 
 578.113 +	
 578.114 +	For MTM-specific operations, progress information can be extracted by calling 
 578.115 +	CBaseUiMtm::GetProgress() or displayed by CBaseUiMtm::DisplayProgressSummary() 
 578.116 +	on the appropriate User Interface MTM.
 578.117 +	
 578.118 +	Requirements:
 578.119 +	
 578.120 +	Derived classes should implement this function so that the client can check 
 578.121 +	on the progress of the operation. The function should share an understanding 
 578.122 +	of the format of the buffer with the implementations of CBaseUiMtm::GetProgress() 
 578.123 +	and CBaseUiMtm::DisplayProgressSummary() in the User Interface MTM. The arguments 
 578.124 +	of CBaseUiMtm::GetProgress() show some information that should be included 
 578.125 +	where appropriate.
 578.126 +	
 578.127 +	@leave KErrNotReady The operation has not yet been started: it has been queued 
 578.128 +	for execution in the Message Server 
 578.129 +	@return Descriptor holding progress information. The maximum buffer size should 
 578.130 +	be KMsvProgressBufferLength (defined in msvipc.h). */
 578.131 +	virtual const TDesC8& ProgressL()=0;
 578.132 +	IMPORT_C virtual const TDesC8& FinalProgress();
 578.133 +	IMPORT_C TInt SystemProgress(TMsvSystemProgress& aOutSysProg);
 578.134 +	IMPORT_C virtual TUid Mtm() const;
 578.135 +	//
 578.136 +	inline TMsvOp Id() const;
 578.137 +	inline TMsvId Service() const;
 578.138 +	//
 578.139 +protected:
 578.140 +	IMPORT_C TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1);
 578.141 +
 578.142 +protected:
 578.143 +	/** The ID of the service that is associated with this operation. 
 578.144 +	
 578.145 +	Usually, the derived class constructor will contain a suitable argument to 
 578.146 +	allow the caller to set this.
 578.147 +	
 578.148 +	@see Service() */
 578.149 +	TMsvId iService;
 578.150 +	/** The UID of the MTM associated with the operation. 
 578.151 +	
 578.152 +	The appropriate value should be set by the derived class constructor.
 578.153 +	
 578.154 +	@see Mtm() */
 578.155 +	TUid iMtm;
 578.156 +	/** Request status of the operation observer. 
 578.157 +	
 578.158 +	This is the aObserverRequestStatus passed in the constructor. */
 578.159 +	TRequestStatus& iObserverRequestStatus;
 578.160 +	/** Message Server session used by object. This is set by the constructor. */
 578.161 +	CMsvSession& iMsvSession;
 578.162 +	
 578.163 +private:
 578.164 +	TMsvOp iId;
 578.165 +	};
 578.166 +
 578.167 +
 578.168 +//**********************************
 578.169 +// CMsvOperationWait
 578.170 +//**********************************
 578.171 +//
 578.172 +// Allows a synchronous wait on a operation
 578.173 +//
 578.174 +
 578.175 +class CMsvOperationWait: public CActive
 578.176 +/** Utility class used to wait until an asynchronous messaging operation
 578.177 +has completed. 
 578.178 +
 578.179 +Note that CMsvOperationActiveSchedulerWait is simpler to use, and should be used in 
 578.180 +preference to this class.
 578.181 +
 578.182 +To use the class:
 578.183 +
 578.184 +1. Create a new CMsvOperationWait object
 578.185 +
 578.186 +2. Call the messaging function that returns the asynchronous operation. 
 578.187 +The operation observer parameter should be the iStatus word of the CMsvOperationWait 
 578.188 +object. This means that the CMsvOperationWait object will be signalled when
 578.189 +the operation completes.
 578.190 +
 578.191 +3. Call the CMsvOperationWait object's Start() function. This sets the object
 578.192 +to be active.
 578.193 +
 578.194 +4. Call CActiveScheduler::Start(). This starts a nested active scheduler. The 
 578.195 +program will then wait until this active scheduler is stopped. The CMsvOperationWait 
 578.196 +object stops the scheduler when the operation completes, allowing the program to 
 578.197 +continue. 
 578.198 +
 578.199 +These steps cause the program to wait until the operation completes.
 578.200 +
 578.201 +@code
 578.202 +     CMsvOperationWait* waiter=CMsvOperationWait::NewLC();
 578.203 +     CMsvOperation* op = function_returning_opLC(waiter->iStatus);
 578.204 +     waiter->Start();
 578.205 +     CActiveScheduler::Start();
 578.206 +     CleanupStack::PopAndDestroy(2); // op, waiter
 578.207 +@endcode
 578.208 +
 578.209 +@see CActiveScheduler
 578.210 +@publishedAll
 578.211 +@released
 578.212 +*/
 578.213 +	{
 578.214 +public:
 578.215 +	IMPORT_C static CMsvOperationWait* NewLC(TInt aPriority=EPriorityStandard);
 578.216 +	IMPORT_C ~CMsvOperationWait();
 578.217 +	IMPORT_C void Start();
 578.218 +protected:
 578.219 +	CMsvOperationWait(TInt aPriority);
 578.220 +	void RunL();
 578.221 +	void DoCancel();
 578.222 +	};
 578.223 +
 578.224 +
 578.225 +//**********************************
 578.226 +// CMsvOperationActiveSchedulerWait
 578.227 +//**********************************
 578.228 +//
 578.229 +// Allows a synchronous wait on a operation using CActiveSchedulerWait class
 578.230 +// This class should be used in preference to CMsvOperationWait
 578.231 +// DOES NOT require an explicit call to CActiveScheduler::Start()--CMsvOperationActiveSchedulerWait::Start()
 578.232 +// effectively encapsulates this functionality
 578.233 +//
 578.234 +
 578.235 +class CMsvOperationActiveSchedulerWait: public CActive
 578.236 +/** Utility class used to wait until an asynchronous messaging operation
 578.237 +has completed. 
 578.238 +
 578.239 +To use the class:
 578.240 +
 578.241 +1. Create a new CMsvOperationActiveSchedulerWait object
 578.242 +
 578.243 +2. Call the messaging function that returns the asynchronous operation. 
 578.244 +The operation observer parameter should be the iStatus word of the CMsvOperationActiveSchedulerWait 
 578.245 +object. This means that the CMsvOperationActiveSchedulerWait object will be signalled when
 578.246 +the operation completes.
 578.247 +
 578.248 +3. Call the CMsvOperationActiveSchedulerWait object's Start() function. This sets the object
 578.249 +to be active.
 578.250 +
 578.251 +These steps cause the program to wait until the operation completes.
 578.252 +
 578.253 +@code
 578.254 +     CMsvOperationActiveSchedulerWait* waiter=CMsvOperationActiveSchedulerWait::NewLC();
 578.255 +     CMsvOperation* op = function_returning_opLC(waiter->iStatus);
 578.256 +     waiter->Start();
 578.257 +
 578.258 +     CleanupStack::PopAndDestroy(2); // op, waiter
 578.259 +@endcode
 578.260 +
 578.261 +@publishedAll
 578.262 +@released
 578.263 +*/
 578.264 +	{
 578.265 +public:
 578.266 +	IMPORT_C static CMsvOperationActiveSchedulerWait* NewLC(TInt aPriority=EPriorityStandard);
 578.267 +	IMPORT_C ~CMsvOperationActiveSchedulerWait();
 578.268 +	IMPORT_C void Start();
 578.269 +private:
 578.270 +	CMsvOperationActiveSchedulerWait(TInt aPriority);
 578.271 +	void RunL();
 578.272 +	void DoCancel();
 578.273 +private:
 578.274 +	CActiveSchedulerWait iActiveSchedulerWait;
 578.275 +	};
 578.276 +
 578.277 +//**********************************
 578.278 +// CMsvCompletedOperation
 578.279 +//**********************************
 578.280 +//
 578.281 +// An operation which is already completed on construction
 578.282 +//
 578.283 +
 578.284 +class CMsvCompletedOperation : public CMsvOperation
 578.285 +/** Utility to create a messaging operation object for an operation that has already 
 578.286 +completed. 
 578.287 +
 578.288 +This utility is useful, for example, for writers of MTMs, where the API requires that an 
 578.289 +asynchronous operation is returned, but where in reality, the operation has performed
 578.290 +synchronously. It allows the program to construct an operation object for which 
 578.291 +the operation is already completed, with the progress information and error code set.   
 578.292 +
 578.293 +@publishedAll
 578.294 +@released
 578.295 +*/
 578.296 +	{
 578.297 +public:
 578.298 +	IMPORT_C static CMsvCompletedOperation* NewL(CMsvSession& aMsvSession, TUid aMtm, const TDesC8& aProgress, TMsvId aService, TRequestStatus& aObserverRequestStatus, TInt aErr=KErrNone);
 578.299 +	IMPORT_C ~CMsvCompletedOperation();
 578.300 +	//
 578.301 +	const TDesC8& ProgressL();
 578.302 +	const TDesC8& FinalProgress();
 578.303 +private:
 578.304 +	CMsvCompletedOperation(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus);
 578.305 +	void ConstructL(TUid aMtm, TInt aError, const TDesC8& aProgress, TMsvId aService);
 578.306 +	// from CActive
 578.307 +	void DoCancel();
 578.308 +	void RunL();
 578.309 +	//
 578.310 +private:
 578.311 +	HBufC8* iProgress;
 578.312 +	};
 578.313 +
 578.314 +//**********************************
 578.315 +// CMsvSendOperation
 578.316 +//**********************************
 578.317 +//
 578.318 +// A send operation which returns a standard progress (used by SendAs2)
 578.319 +//
 578.320 +
 578.321 +/** Utility to create an operation containing a sending operation which may be used
 578.322 +to retrieve a standard progress structure.
 578.323 +
 578.324 +This class is intended to be derived from. The derived class must define the TranslateProgress()
 578.325 +member function. This function is responsible for translating the native progress of the given
 578.326 +mtm into the standard progress structure, CMsvSendOperation::TSendOperationProgress.
 578.327 +
 578.328 +@publishedAll
 578.329 +@released
 578.330 +*/
 578.331 +class CMsvSendOperation : public CMsvOperation
 578.332 +	{
 578.333 +public:
 578.334 +	/** Send progress state.
 578.335 +
 578.336 +	@see TSendOperationProgress
 578.337 +	*/
 578.338 +	enum TSendOperationState
 578.339 +		{
 578.340 +		ESendStateInPreparation,
 578.341 +		ESendStateWaitingToSend,
 578.342 +		ESendStateConnecting,
 578.343 +		ESendStateSending,
 578.344 +		ESendStateDone,
 578.345 +		ESendStateFailed
 578.346 +		};
 578.347 +	/** Send progress.
 578.348 +	
 578.349 +	Structure holding send progress. For mtms unable to provide detailed progress 
 578.350 +	information, iProgressMax and iProgress must be zeroed. This will then allow
 578.351 +	the client to check for this case and display a busy status dialog as opposed to
 578.352 +	a progress dialog. If the mtm is capable of detailed progress, iProgressMax 
 578.353 +	should be set to the total number of units to be sent and iProgress the number
 578.354 +	of units sent.
 578.355 +
 578.356 +	@see TSendOperationState
 578.357 +	*/
 578.358 +	class TSendOperationProgress
 578.359 +		{
 578.360 +	public:
 578.361 +		TSendOperationState iState;
 578.362 +		TInt 				iError;
 578.363 +		TInt 				iProgressMax;
 578.364 +		TInt 				iProgress;	
 578.365 +		};
 578.366 +
 578.367 +public:
 578.368 +	IMPORT_C virtual ~CMsvSendOperation();
 578.369 +	// methods from CMsvOperation
 578.370 +	IMPORT_C virtual const TDesC8& ProgressL();
 578.371 +	IMPORT_C virtual const TDesC8& FinalProgress();
 578.372 +	IMPORT_C void Start(CMsvOperation* aOperation);
 578.373 +protected:
 578.374 +	IMPORT_C CMsvSendOperation(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
 578.375 +private:	// methods from CActive
 578.376 +	IMPORT_C virtual void DoCancel();
 578.377 +	IMPORT_C virtual void RunL();
 578.378 +private:
 578.379 +	/** Translates the progress from sending operation's progress into TSendOperationProgress. 
 578.380 +	
 578.381 +	This member function must be defined by derived classes. Must not leave.
 578.382 +	@see TSendOperationProgress 
 578.383 +	@return Descriptor holding progress information.
 578.384 +	*/
 578.385 +	virtual const TDesC8& TranslateProgress(const TDesC8& aProgress)=0;
 578.386 +	void Complete(TInt anError);
 578.387 +protected:
 578.388 +	/** The progress that is associated with this operation. 
 578.389 +
 578.390 +	The TranslateProgress defined by derived classes must populate and return
 578.391 +	this progress structure.
 578.392 +	@see TranslateProgress() 
 578.393 +	@see TSendOperationProgress */
 578.394 +	TPckgBuf<TSendOperationProgress> iProgress;
 578.395 +	/** The sending operation. 
 578.396 +	
 578.397 +	Assigned when ConstructL is called
 578.398 +	*/
 578.399 +	CMsvOperation* iOperation;
 578.400 +	};
 578.401 +	
 578.402 +/** Package buffer for a TSendOperationProgress
 578.403 +*/
 578.404 +typedef TPckgBuf<CMsvSendOperation::TSendOperationProgress> TMsvSendOperationProgress;
 578.405 +
 578.406 +
 578.407 +//**********************************
 578.408 +// MMsvSessionObserver
 578.409 +//**********************************
 578.410 +//
 578.411 +// 
 578.412 +//
 578.413 +
 578.414 +class MMsvSessionObserver
 578.415 +/** Provides the interface for notification of events from a Message Server session. 
 578.416 +
 578.417 +
 578.418 +The types of event are given in the enumeration TMsvSessionEvent. Clients 
 578.419 +must provide an object that implements the interface, and set it to be notified 
 578.420 +through CMsvSession::OpenSyncL() or CMsvSession::OpenASyncL(). Additional 
 578.421 +observers can also be added and removed through CMsvSession.
 578.422 +
 578.423 +@see CMsvSession::AddObserverL()
 578.424 +@see CMsvSession::RemoveObserver() 
 578.425 +@publishedAll
 578.426 +@released
 578.427 +*/
 578.428 +	{
 578.429 +public:
 578.430 +	/** Session event type.
 578.431 +
 578.432 +	@see EMsvMediaUnavailable
 578.433 +	@see TDriveNumber 
 578.434 +	*/
 578.435 +	enum TMsvSessionEvent 
 578.436 +							{ 
 578.437 +	/** One or more entries have been created.
 578.438 +	
 578.439 +	aArg1 is a CMsvEntrySelection of the new entries. aArg2 is the TMsvId of the 
 578.440 +	parent entry. */
 578.441 +							EMsvEntriesCreated,
 578.442 +	/** One or more index entries have been changed. 
 578.443 +	
 578.444 +	aArg1 is a CMsvEntrySelection of the index entries. aArg2 is the TMsvId of 
 578.445 +	the parent entry. */
 578.446 +							EMsvEntriesChanged,
 578.447 +	/** One or more entries have been deleted.
 578.448 +	
 578.449 +	aArg1 is a CMsvEntrySelection containing the IDs of the deleted entries. aArg2 
 578.450 +	is the TMsvId of the parent entry. */
 578.451 +							EMsvEntriesDeleted,
 578.452 +	/** One or more entries have been moved.
 578.453 +	
 578.454 +	aArg1 is a CMsvEntrySelection containing the IDs of the moved entries. aArg2 
 578.455 +	is the TMsvId of the new parent. aArg3 is the TMsvId of the old parent entry. */
 578.456 +							EMsvEntriesMoved,
 578.457 +	/** A new MTM has been installed. 
 578.458 +	
 578.459 +	aArg2 points to a TUid for the new MTM. */
 578.460 +							EMsvMtmGroupInstalled,
 578.461 +	/** A MTM has been uninstalled. 
 578.462 +	
 578.463 +	aArg2 points to a TUid of the removed MTM. */
 578.464 +							EMsvMtmGroupDeInstalled,
 578.465 +	/** Something has happening in the server, but this client was unable to retrieve 
 578.466 +	the information.
 578.467 +	
 578.468 +	aArg1 points to the error code. */
 578.469 +							EMsvGeneralError,
 578.470 +	/** The client should immediately close the session with the Message Server. */
 578.471 +							EMsvCloseSession,
 578.472 +	/** Received after a client has used CMsvSession::OpenAsyncL() to create a session. 
 578.473 +	
 578.474 +	
 578.475 +	The session can now be used. */
 578.476 +							EMsvServerReady,
 578.477 +	/** Received after a client has used CMsvSession::OpenAsyncL() to create a session. 
 578.478 +	
 578.479 +	
 578.480 +	The server could not be started, and aArg1 points to the error code. */
 578.481 +							EMsvServerFailedToStart,
 578.482 +	/** The Message Server index had been corrupted and had to be rebuilt. 
 578.483 +	
 578.484 +	All local entries are recovered, but all remote entries have been lost. */
 578.485 +							EMsvCorruptedIndexRebuilt,
 578.486 +	/** The Message Server has been terminated. 
 578.487 +	
 578.488 +	All clients must close their sessions immediately. */
 578.489 +							EMsvServerTerminated,
 578.490 +	/** The Message Server has automatically changed the index location to use the 
 578.491 +	internal disk.
 578.492 +	
 578.493 +	aArg1 is a TDriveNumber value that identifies the drive used by the Message 
 578.494 +	Server to hold the index prior to the change. 
 578.495 +	
 578.496 +	aArg2 is also a TDriveNumber value; it identifies the new drive that the Message 
 578.497 +	Server is using.
 578.498 +	
 578.499 +	CMsvEntry contexts either refresh themselves or mark themselves invalid.
 578.500 +	
 578.501 +	@see EMsvMediaUnavailable
 578.502 +	@see TDriveNumber */
 578.503 +							EMsvMediaChanged, // I assume the following four are in sequential order
 578.504 +	/** The media (disk) containing the Message Server index has been removed. 
 578.505 +	
 578.506 +	aArg1 is a TDriveNumber value that identifies the drive that is no longer 
 578.507 +	available.
 578.508 +	
 578.509 +	Future requests may fail with KMsvMediaUnavailable. A EMsvMediaChanged event 
 578.510 +	may be received in the future, as the Message Server switches back to the 
 578.511 +	internal drive. */
 578.512 +							EMsvMediaUnavailable,
 578.513 +	/** The disk containing the Message Store is available again.
 578.514 +	
 578.515 +	aArg1 is a TDriveNumber value that identifies the drive that is being used.
 578.516 +	
 578.517 +	The Message Server can now operate as normal. No client action is necessary. */
 578.518 +							EMsvMediaAvailable,
 578.519 +	/** An incorrect disk is inserted. 
 578.520 +	
 578.521 +	aArg1 is a TDriveNumber value that identifies the drive in which the incorrect 
 578.522 +	disk has been inserted.
 578.523 +	
 578.524 +	Some requests may fail with KMsvMediaIncorrect. Clients may get an EMsvMediaChanged 
 578.525 +	event in the future telling them that the Message Server has switched back 
 578.526 +	to the internal drive. */
 578.527 +							EMsvMediaIncorrect,
 578.528 +	/** The Message Server has started to rebuild its index after it has been corrupted.
 578.529 +	
 578.530 +	@see EMsvCorruptedIndexRebuilt */
 578.531 +							EMsvCorruptedIndexRebuilding
 578.532 +							};
 578.533 +public: 
 578.534 +	/** Indicates an event has occurred. 
 578.535 +	
 578.536 +	The type of event is indicated by the value of aEvent. The interpretation 
 578.537 +	of the TAny arguments depends on this type. 
 578.538 +	
 578.539 +	For most event types, the action that is taken, for example, updating the 
 578.540 +	display, is client-specific. All clients though should respond to EMsvCloseSession 
 578.541 +	and EMsvServerTerminated events. 
 578.542 +	
 578.543 +	@param aEvent Indicates the event type. 
 578.544 +	@param aArg1 Event type-specific argument value 
 578.545 +	@param aArg2 Event type-specific argument value 
 578.546 +	@param aArg3 Event type-specific argument value */
 578.547 +	virtual void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)=0;
 578.548 +	};
 578.549 +
 578.550 +//**********************************
 578.551 +// CMsvSession
 578.552 +//**********************************
 578.553 +//
 578.554 +// 
 578.555 +//
 578.556 +
 578.557 +class TCapabilitySet;
 578.558 +
 578.559 +const TInt KMsvSessionObserverGranularity=4;  //???
 578.560 +
 578.561 +class CMsvSession: public CActive
 578.562 +/** Represents a channel of communication between a client thread (Client-side 
 578.563 +MTM, User Interface MTM, or message client application) and the Message Server 
 578.564 +thread. 
 578.565 +
 578.566 +The class provides the means by which clients are notified when important 
 578.567 +Message Server events occur.
 578.568 +
 578.569 +Note the following significant groups of functions:
 578.570 +
 578.571 +Creation functions: a message client application must use OpenSyncL() or OpenASyncL() 
 578.572 +to create a session object, before it can instantiate any MTM or CMsvEntry 
 578.573 +object. Only a single session should be created within a thread. As Client-side 
 578.574 +MTM, User Interface MTM, and CMsvEntry objects are created in the client thread, 
 578.575 +these use the client session, and do not create their own. Note that to close 
 578.576 +a session, delete all objects relying on that session, and then the session 
 578.577 +object itself.
 578.578 +
 578.579 +Cleanup functions: CMsvSession provides the ability to handle the cleanup 
 578.580 +of entries in the event of a leave occurring, in a very similar manner to 
 578.581 +the standard cleanup stack. The difference is that, on a leave, any entries 
 578.582 +that are on the entry cleanup stack are removed from the Message Server. The 
 578.583 +implementation uses the standard cleanup stack, so entry push and pop functions 
 578.584 +should be used in the same order as all other types of push and pop. The functions 
 578.585 +can be used both by MTM implementations and message client applications. 
 578.586 +@publishedAll
 578.587 +@released
 578.588 +*/
 578.589 +	{
 578.590 +public: 
 578.591 +	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver);
 578.592 +	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver);
 578.593 +	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver);
 578.594 +	
 578.595 +	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver, RFs& aFs);
 578.596 +	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver, RFs& aFs);
 578.597 +	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver, RFs& aFs);
 578.598 +	
 578.599 +	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver, TInt aPriority);
 578.600 +	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver, TInt aPriority);
 578.601 +	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver, TInt aPriority);
 578.602 +	
 578.603 +	IMPORT_C static CMsvSession* OpenSyncL(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);
 578.604 +	IMPORT_C static CMsvSession* OpenAsyncL(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);
 578.605 +	IMPORT_C static CMsvSession* OpenAsObserverL(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);	
 578.606 +	
 578.607 +	~CMsvSession();
 578.608 +	// --- Observer functions ---
 578.609 +	IMPORT_C void AddObserverL(MMsvSessionObserver& aObserver);
 578.610 +	IMPORT_C void RemoveObserver(MMsvSessionObserver& aObserver);
 578.611 +	IMPORT_C TInt SetReceiveEntryEvents(TBool aReceive);
 578.612 +	// --- Utility functions ---
 578.613 +	IMPORT_C CMsvEntry* GetEntryL(TMsvId aEntId);
 578.614 +	IMPORT_C TInt GetEntry(TMsvId aId, TMsvId& aService, TMsvEntry& aEntry);
 578.615 +	
 578.616 +	IMPORT_C CMsvOperation* TransferCommandL(const CMsvEntrySelection& aSelection, TInt aCommandId, const TDesC8& aParameter, TRequestStatus& aStatus);
 578.617 +	IMPORT_C void TransferCommandL(const CMsvEntrySelection& aSelection, TInt aCommandId, const TDesC8& aParameter, TDes8& aProgress);
 578.618 +	IMPORT_C void IncPcSyncCountL(const CMsvEntrySelection& aSelection);
 578.619 +	IMPORT_C void DecPcSyncCountL(const CMsvEntrySelection& aSelection);
 578.620 +	IMPORT_C void GetChildIdsL(TMsvId aId, const CMsvEntryFilter& aFilter, CMsvEntrySelection& aSelection);
 578.621 +	IMPORT_C void ChangeAttributesL(const CMsvEntrySelection& aSelection, TUint aSetAttributes, TUint aClearAttributes);
 578.622 +	IMPORT_C CMsvOperation* ChangeDriveL(TInt aDrive, TRequestStatus& aStatus);
 578.623 +	IMPORT_C TInt OutstandingOperationsL();
 578.624 +	IMPORT_C CMsvOperation* CopyStoreL(const TDriveUnit& aDrive, TRequestStatus& aStatus);
 578.625 +	IMPORT_C CMsvOperation* DeleteStoreL(const TDriveUnit& aDrive, TRequestStatus& aStatus);
 578.626 +	// --- cleanup functions
 578.627 +	IMPORT_C static void CleanupEntry(TAny* aPtr);
 578.628 +	IMPORT_C void CleanupEntryPushL(TMsvId aId);
 578.629 +	IMPORT_C void CleanupEntryPop(TInt aCount=1);
 578.630 +
 578.631 +	IMPORT_C void RemoveEntry(TMsvId aId);
 578.632 +	/// MTM functions
 578.633 +	IMPORT_C TInt InstallMtmGroup(const TDesC& aFullName);
 578.634 +	IMPORT_C TInt DeInstallMtmGroup(const TDesC& aFullName); 
 578.635 +	
 578.636 +	IMPORT_C TInt StopService(TMsvId aServiceId);
 578.637 +	IMPORT_C TBool ServiceActive(TMsvId aServiceId);
 578.638 +	IMPORT_C TInt ServiceProgress(TMsvId aServiceId, TDes8& aProgress);
 578.639 +	
 578.640 +	IMPORT_C void CloseMessageServer();
 578.641 +	IMPORT_C RFs& FileSession();
 578.642 +	
 578.643 +	IMPORT_C void GetMtmRequiredCapabilitiesL(TUid aMtmTypeUid, TCapabilitySet& aCapSet) const;
 578.644 +	MMsvStoreManager& StoreManager();
 578.645 +
 578.646 +	IMPORT_C TBool GetAndClearIndexCorruptFlagL();
 578.647 +	IMPORT_C TDriveUnit CurrentDriveL();
 578.648 +	IMPORT_C TBool DriveContainsStoreL(TDriveUnit aDrive);
 578.649 +	IMPORT_C TBool MessageStoreDrivePresentL();
 578.650 +
 578.651 +	IMPORT_C TInt ServiceAccessPointId(TMsvId aServiceId, TUint32& aAccessPointId);
 578.652 +
 578.653 +protected:
 578.654 +	CMsvSession(MMsvSessionObserver& aObserver);
 578.655 +	CMsvSession(MMsvSessionObserver& aObserver, RFs& aFs);
 578.656 +	CMsvSession(MMsvSessionObserver& aObserver, TInt aPriority);
 578.657 +	CMsvSession(MMsvSessionObserver& aObserver, RFs& aFs, TInt aPriority);
 578.658 +	
 578.659 +	void ConstructL(TBool aSyncOpening);
 578.660 +	void ConstructAsObserverL();
 578.661 +	//
 578.662 +	IMPORT_C TInt OperationId();
 578.663 +	IMPORT_C RMsvServerSession& Session();
 578.664 +
 578.665 +	void CheckDrive();
 578.666 +	//
 578.667 +	// from CActive
 578.668 +	void RunL();
 578.669 +	void DoCancel();
 578.670 +	TInt RunError(TInt aError);
 578.671 +	//
 578.672 +private:
 578.673 +	void NotifyAllObserversL(MMsvSessionObserver::TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 578.674 +	void CleanupEntryDelete();
 578.675 +  	void DoRunL(TMsvNotifBuffer& aBuffer);
 578.676 + 	void HandleNotifyL();
 578.677 + 	void DoHandleNotifyL(TMsvNotifBuffer& aBuffer);
 578.678 +	void GetMessageFolderL();
 578.679 +	//	
 578.680 +private:
 578.681 +	TInt iOperationId;
 578.682 +	RFs	iFs;
 578.683 +	RMsvServerSession iSession;
 578.684 +	TMsvNotifBuffer iChange;	
 578.685 +	MMsvSessionObserver&	iMainObserver;
 578.686 +	CArrayPtrFlat<MMsvSessionObserver>* iObservers;
 578.687 +	CMsvEntrySelection* iCleanupList;
 578.688 +	TInt iSyncStart;
 578.689 +	HBufC* iMessageFolder;
 578.690 +	TDriveNumber iDrive;
 578.691 +	CMsvEntrySelection* iNotifSelection;
 578.692 +	TPckgBuf<TUint32> iSequenceBuf;
 578.693 +	TUint32 iNotifySequence;
 578.694 +	TBool iReceiveEntryEvents;
 578.695 +	/** Specifies whether to use the shared file server session */	
 578.696 +	TBool iUseSharedFs;
 578.697 +	//
 578.698 +#ifndef _NO_SESSION_LOGGING_
 578.699 +	void CreateSessionLogL();
 578.700 +	void Log(TRefByValue<const TDesC> aFmt, ...);
 578.701 +
 578.702 +	// must be the last data member in the class to preserve BC.
 578.703 +	mutable RFileLogger iLog;
 578.704 +#endif
 578.705 +	//
 578.706 +friend class CSendAs;
 578.707 +friend class CMsvEntry;
 578.708 +friend class CMsvOperation;
 578.709 +friend class CMsvEntryOperation;
 578.710 +friend class CObserverRegistry;
 578.711 +	//
 578.712 +	};
 578.713 +
 578.714 +
 578.715 +
 578.716 +
 578.717 +//**********************************
 578.718 +// MMsvEntryObserver
 578.719 +//**********************************
 578.720 +//
 578.721 +// 
 578.722 +//
 578.723 +
 578.724 +class MMsvEntryObserver
 578.725 +/** Provides the interface for notification of events associated with an entry. 
 578.726 +
 578.727 +The types of event are given in the enumeration TMsvEntryEvent. Clients can 
 578.728 +provide an object that implements the interface, and set it to be notified 
 578.729 +through CMsvEntry::AddObserverL(). 
 578.730 +@publishedAll
 578.731 +@released
 578.732 +*/
 578.733 +	{
 578.734 +public:
 578.735 +	/** Defines entry event types. 
 578.736 +@publishedAll
 578.737 +@released
 578.738 +*/
 578.739 +	enum TMsvEntryEvent 
 578.740 +							{	
 578.741 +	/** The entry has been changed, either as a result of a CMsvEntry::ChangeL() or 
 578.742 +	by another client. */
 578.743 +							EMsvEntryChanged,
 578.744 +	/** New children have been created. aArg1 points to a CMsvEntrySelection contain 
 578.745 +	the ID of the new children. */
 578.746 +							EMsvNewChildren,
 578.747 +	/** Children have been deleted. aArg1 points to a CMsvEntrySelection contain the 
 578.748 +	ID of the deleted children. */
 578.749 +							EMsvDeletedChildren,
 578.750 +	/** One or more of the children have been changed. aArg1 points to a CMsvEntrySelection 
 578.751 +	containing the IDs of the changed children. */
 578.752 +							EMsvChildrenChanged,
 578.753 +	/** The entry has been deleted by another client. The context is now invalid. */
 578.754 +							EMsvEntryDeleted,
 578.755 +	/** The context has become invalid. The entry has been changed, but the CMsvEntry 
 578.756 +	was unable to update the context. The context will only become valid by a 
 578.757 +	successful CMsvEntry::SetEntryL() call. aArg1 points to a TInt containing 
 578.758 +	the error code for the invalid context. */
 578.759 +							EMsvContextInvalid,
 578.760 +	/** Some new children have been created, but CMsvEntry was unable to retrieve the 
 578.761 +	data from the Message Server. The children will be correct only after a successful 
 578.762 +	call to CMsvEntry::SetEntryL(). */
 578.763 +							EMsvChildrenMissing,
 578.764 +	/** An error has occurred such that the status of the children is unknown and probably 
 578.765 +	invalid. aArg1 points to a TInt containing the error code for the invalid 
 578.766 +	context */
 578.767 +							EMsvChildrenInvalid,
 578.768 +	/** The current entry has been moved by another client. The CMsvEntry has already 
 578.769 +	been updated to reflect the new parent. */
 578.770 +							EMsvEntryMoved};
 578.771 +public: 
 578.772 +	/** Indicates when called by a CMsvEntry object that an event has occurred.
 578.773 +	
 578.774 +	The type of event is indicated by the value of aEvent. The interpretation of the aArg1-3 values depends on this type. 
 578.775 +	For most event types, the action that is taken, for example, updating the display, is client-specific. Most clients will 
 578.776 +	need to handle events that make the current context invalid: EMsvContextInvalid and EMsvEntryDeleted.
 578.777 +
 578.778 +	An implementation can leave if an error occurs. The leave is not trapped by the framework, so 
 578.779 +	the error code may be displayed to the user.
 578.780 +
 578.781 +	@param aEvent Indicates the event type.
 578.782 +	@param aArg1 Event-specific argument value
 578.783 +	@param aArg2 Event-specific argument value
 578.784 +	@param aArg3 Event-specific argument value
 578.785 +	*/
 578.786 +	virtual void HandleEntryEventL(TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3)=0;
 578.787 +	};
 578.788 +
 578.789 +
 578.790 +
 578.791 +//**********************************
 578.792 +// CMsvEntry
 578.793 +//**********************************
 578.794 +//
 578.795 +// 
 578.796 +//
 578.797 +
 578.798 +class CMsvEntry: public CBase, public MMsvSessionObserver, public MMsvStoreObserver
 578.799 +/** Accesses and acts upon a particular Message Server entry. The current entry 
 578.800 +that a CMsvEntry object relates is referred to as its context. 
 578.801 +
 578.802 +It may be helpful to consider CMsvEntry functions in two broad groups. The 
 578.803 +first provides means to access the various types of storage associated with 
 578.804 +an entry. The second provides a means to discover and access other entries 
 578.805 +that the entry owns (its children). 
 578.806 +
 578.807 +Message client applications, Client-side MTMs, and User Interface MTMs all 
 578.808 +commonly use CMsvEntry objects. CMsvEntry objects though represent a lower 
 578.809 +level of access to an entry than that provided by a Client-side MTM or User 
 578.810 +Interface MTM. In particular, any MTM-specific functionality, such as address 
 578.811 +lists or subject fields, must be accessed by a message client application 
 578.812 +through an MTM inteface.
 578.813 +
 578.814 +A CMsvEntry object is relatively expensive in RAM usage, as it caches its 
 578.815 +children, updating them as necessary when notified of changes. They should 
 578.816 +therefore be created sparingly.
 578.817 +
 578.818 +Note that Server-side MTMs do not use this class, but a similar one, CMsvServerEntry.
 578.819 + 
 578.820 +@publishedAll
 578.821 +@released
 578.822 +*/
 578.823 +	{
 578.824 +public: // Public member functions
 578.825 +	IMPORT_C static CMsvEntry* NewL(CMsvSession& aMsvSession, TMsvId aMsvId, const TMsvSelectionOrdering& aOrdering);
 578.826 +	IMPORT_C ~CMsvEntry();
 578.827 +	//
 578.828 +	// --- Observer functions ---
 578.829 +	IMPORT_C void AddObserverL(MMsvEntryObserver& aObserver);
 578.830 +	IMPORT_C void RemoveObserver(MMsvEntryObserver& aObserver);
 578.831 +	//
 578.832 +	// --- Accessor for associated session ---
 578.833 +	inline CMsvSession& Session(); 
 578.834 +	//
 578.835 +	// --- Accessors the associated message store ---
 578.836 +	IMPORT_C CMsvStore* ReadStoreL();
 578.837 +	IMPORT_C CMsvStore* EditStoreL();
 578.838 +	//
 578.839 +	// --- Synchronous Current Entry functions ---
 578.840 +	inline TMsvId EntryId() const; 
 578.841 +	inline const TMsvEntry& Entry() const; 
 578.842 +	inline const TMsvSelectionOrdering& SortType() const;
 578.843 +	inline TMsvId OwningService() const;
 578.844 +	IMPORT_C void SetSortTypeL(const TMsvSelectionOrdering& aOrdering);
 578.845 +	IMPORT_C void SetMtmListL(const CArrayFix<TUid>& aMtmList);
 578.846 +	IMPORT_C void SetEntryL(TMsvId aId);
 578.847 +	IMPORT_C void ChangeL(const TMsvEntry& aEntry);
 578.848 +	IMPORT_C void ChangeL(const TMsvEntry& aEntry, TSecureId aOwnerId);
 578.849 +	
 578.850 +
 578.851 +	//
 578.852 +	// --- Asynchronous Current Entry functions ---
 578.853 +	IMPORT_C CMsvOperation* ChangeL(const TMsvEntry& aEntry, TRequestStatus& aStatus);
 578.854 +	IMPORT_C CMsvOperation* ChangeL(const TMsvEntry& aEntry, TSecureId aOwnerId, TRequestStatus& aStatus);
 578.855 +	//
 578.856 +	// --- Asynchronous Child Entry functions ---
 578.857 +	IMPORT_C CMsvOperation* CreateL(const TMsvEntry& aEntry, TRequestStatus& aStatus);
 578.858 +	IMPORT_C CMsvOperation* CreateL(const TMsvEntry& aEntry, TSecureId aOwnerId, TRequestStatus& aStatus);
 578.859 +	IMPORT_C CMsvOperation* DeleteL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);
 578.860 +	IMPORT_C CMsvOperation* DeleteL(TMsvId aMsvId, TRequestStatus& aStatus);
 578.861 +	IMPORT_C CMsvOperation* CopyL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);
 578.862 +	IMPORT_C CMsvOperation* CopyL(TMsvId aMsvId, TMsvId aTargetId, TRequestStatus& aStatus);
 578.863 +	IMPORT_C CMsvOperation* MoveL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);
 578.864 +	IMPORT_C CMsvOperation* MoveL(TMsvId aMsvId, TMsvId aTargetId, TRequestStatus& aStatus);
 578.865 +	//
 578.866 +	// --- Synchronous Child Entry functions ---
 578.867 +	IMPORT_C CMsvEntrySelection* ChildrenL() const;
 578.868 +	IMPORT_C CMsvEntrySelection* ChildrenWithServiceL(TMsvId aServiceId) const;
 578.869 +	IMPORT_C CMsvEntrySelection* ChildrenWithMtmL(TUid aMtm) const;
 578.870 +	IMPORT_C CMsvEntrySelection* ChildrenWithTypeL(TUid aType) const;
 578.871 +	inline TInt Count() const;
 578.872 +	IMPORT_C const TMsvEntry& ChildDataL(TMsvId aId) const;
 578.873 +	IMPORT_C const TMsvEntry& operator[](TInt aIndex) const;
 578.874 +	IMPORT_C CMsvEntry* ChildEntryL(TMsvId aId) const;
 578.875 +	IMPORT_C void MoveL(TMsvId aMsvId, TMsvId aTargetId);
 578.876 +	IMPORT_C void MoveL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TMsvLocalOperationProgress& aProgress);
 578.877 +	IMPORT_C void CopyL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TMsvLocalOperationProgress& aProgress);
 578.878 +	IMPORT_C void CopyL(TMsvId aMsvId, TMsvId aTargetId);
 578.879 +
 578.880 +
 578.881 +	IMPORT_C void CreateL(TMsvEntry& aEntry);
 578.882 +	IMPORT_C void CreateL(TMsvEntry& aEntry, TSecureId aOwnerId);
 578.883 +	IMPORT_C void DeleteL(TMsvId aId);
 578.884 +	IMPORT_C void DeleteL(const CMsvEntrySelection& aSelection, TMsvLocalOperationProgress& aProgress);
 578.885 +	IMPORT_C void ChangeAttributesL(const CMsvEntrySelection& aSelection, TUint aSetAttributes, TUint aClearAttributes);
 578.886 +	//
 578.887 +	// from MMsvSessionObserver
 578.888 +	void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 578.889 +	// From MMsvStoreObserver
 578.890 +	void HandleStoreEvent(TMsvStoreEvent aEvent, TMsvId aId);
 578.891 +
 578.892 +
 578.893 +	IMPORT_C TBool HasStoreL() const;
 578.894 +	//
 578.895 + 	/** @internalTechnology */
 578.896 + 	IMPORT_C void SetEntryNoCheckL(TMsvId aId);
 578.897 +	//	
 578.898 +private: // Private members
 578.899 +	CMsvEntry(CMsvSession& aMsvSession, const TMsvSelectionOrdering& aOrdering);
 578.900 +	void ConstructL(TMsvId aMsvId);
 578.901 +	//
 578.902 +	void NotifyAllObserversL(MMsvEntryObserver::TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 578.903 +	void ContextChangedL(MMsvEntryObserver::TMsvEntryEvent aEvent);
 578.904 +	void NewChildrenL(const CMsvEntrySelection& aSelection);
 578.905 +	CMsvEntrySelection* DoGetNewChildrenL(const CMsvEntrySelection& aSelection);
 578.906 +	void DeletedChildrenL(const CMsvEntrySelection& aSelection);
 578.907 +	void ChildrenChangedL(const CMsvEntrySelection& aSelection);
 578.908 +	void CheckNewGrandchildrenL(TMsvId aId);
 578.909 +	void CheckDeletedGrandchildrenL(TMsvId aId);
 578.910 +	void NotifyChildChangedL(TMsvId aId);
 578.911 +	CMsvEntrySelection* DoMakeSelectionL(TMsvId aId);
 578.912 +	void CheckIfContextMovedL(const CMsvEntrySelection& aSelection);
 578.913 +	//
 578.914 +	TBool IsAChild(TMsvId aId) const;
 578.915 +	TBool AreChildren(const CMsvEntrySelection& aSelection) const;
 578.916 +	//
 578.917 +	CMsvOperation* DoDeleteL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);
 578.918 +	CMsvClientEntry* DoGetEntryLC(TMsvId aId, TMsvId& aOwningService);
 578.919 +	void DoGetChildrenL();
 578.920 +	CMsvEntryArray* GetNewSortedListL(const TMsvSelectionOrdering& aOrdering, const CArrayFix<TUid>& aMtmList);
 578.921 +	void DoSortTypeL(CMsvClientEntry* aContext);
 578.922 +	void ReplaceChildL(TInt pos, const TMsvEntry& aEntry);
 578.923 +	void DeleteChild(TInt aPosition);
 578.924 +	void HandleMediaChangeL();
 578.925 +
 578.926 +	TInt MoveOneL(TMsvId aMsvId, TMsvId aTargetId);
 578.927 +	TInt CopyOneL(TMsvId aMsvId, TMsvId aTargetId);
 578.928 +	TInt DeleteOneL(TMsvId aMsvId);
 578.929 +	//
 578.930 +private:
 578.931 +	enum TEntryState {	EValid,
 578.932 +						EInvalidChangingContext,
 578.933 +						EInvalidDeletedContext,
 578.934 +						EInvalidOldContext,
 578.935 +						EInvalidMissingChildren};
 578.936 +	//
 578.937 +#ifndef _NO_SESSION_LOGGING_
 578.938 +	void Log(TRefByValue<const TDesC> aFmt, ...);
 578.939 +#endif
 578.940 +	//
 578.941 +private:
 578.942 +	TBool iOberserverAdded;
 578.943 +	TEntryState	iState;
 578.944 +	CMsvSession& iMsvSession;
 578.945 +	TMsvSelectionOrdering iOrdering;
 578.946 +	const TMsvEntry* iEntryPtr;
 578.947 +	CArrayPtrFlat<MMsvEntryObserver>* iObservers;
 578.948 +	CArrayPtrFlat<CMsvClientEntry>* iEntries;
 578.949 +	CMsvEntryArray* iSortedChildren;
 578.950 +	CMsvStore* iStore;
 578.951 +	CArrayFixFlat<TUid>* iMtmList;
 578.952 +	TMsvId iOwningService;
 578.953 +	TUint32 iNotifySequence;
 578.954 +	};
 578.955 +
 578.956 +//**********************************
 578.957 +// MessageServer
 578.958 +//**********************************
 578.959 +//
 578.960 +// 
 578.961 +//
 578.962 +
 578.963 +class MessageServer
 578.964 +/** Provides various static information functions relating to the Message Server.
 578.965 +
 578.966 +@see TDriveNumber 
 578.967 +@publishedAll
 578.968 +@released
 578.969 +*/
 578.970 +	{
 578.971 +public:
 578.972 +	IMPORT_C static TVersion Version();
 578.973 +	IMPORT_C static TMsvId NullUidValue();
 578.974 +	//
 578.975 +	IMPORT_C static TBool DriveContainsStore(RFs& aFs, TInt aDrive);
 578.976 +	IMPORT_C static TInt CurrentDriveL(RFs& aFs);
 578.977 +	IMPORT_C static TBool IsMessageStoreDrivePresentL(RFs& aFs);
 578.978 +	};
 578.979 +
 578.980 +//**********************************
 578.981 +// MtmClientUtils
 578.982 +//**********************************
 578.983 +//
 578.984 +// 
 578.985 +//
 578.986 +
 578.987 +class McliUtils
 578.988 +/** Utility class to simplify getting progress information from a messaging operation object.
 578.989 +
 578.990 +The functions get and unpack the progress information buffers from an operation object.
 578.991 +
 578.992 +@publishedAll
 578.993 +@released
 578.994 +*/
 578.995 +    {
 578.996 +public:
 578.997 +    IMPORT_C static TMsvLocalOperationProgress GetLocalProgressL(CMsvOperation& aOperation);
 578.998 +    IMPORT_C static TMsvLocalOperationProgress GetFinalLocalProgress(CMsvOperation& aOperation);
 578.999 +    IMPORT_C static TInt GetProgressErrorL(CMsvOperation& aOperation);
578.1000 +    IMPORT_C static TMsvId GetProgressIdL(CMsvOperation& aOperation);
578.1001 +	};
578.1002 +
578.1003 +#include <msvapi.inl>
578.1004 +
578.1005 +#endif // __MSVAPI_H__
   579.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   579.2 +++ b/epoc32/include/mw/msventry.h	Wed Mar 31 12:27:01 2010 +0100
   579.3 @@ -0,0 +1,182 @@
   579.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   579.5 +// All rights reserved.
   579.6 +// This component and the accompanying materials are made available
   579.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   579.8 +// which accompanies this distribution, and is available
   579.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  579.10 +//
  579.11 +// Initial Contributors:
  579.12 +// Nokia Corporation - initial contribution.
  579.13 +//
  579.14 +// Contributors:
  579.15 +//
  579.16 +// Description:
  579.17 +//
  579.18 +
  579.19 +#ifndef __MSVENTRY_H__
  579.20 +#define __MSVENTRY_H__
  579.21 +
  579.22 +
  579.23 +
  579.24 +#if !defined(__E32BASE_H__)
  579.25 +#include <e32base.h>
  579.26 +#endif
  579.27 +
  579.28 +#if !defined(__MSVSTORE_H__)
  579.29 +#include <msvstore.h>
  579.30 +#endif
  579.31 +
  579.32 +//////////////////////////////////////
  579.33 +// Forward declarations
  579.34 +class CMsvStore;
  579.35 +class CMsvCopyMoveEntriesBase;
  579.36 +class CMsvServer;
  579.37 +
  579.38 +//**********************************
  579.39 +// CMsvServerEntry
  579.40 +//**********************************
  579.41 +//
  579.42 +//
  579.43 +//
  579.44 +
  579.45 +class CMsvServerEntry : public CActive, public MMsvStoreObserver
  579.46 +/** Accesses and acts upon a particular Message Server entry. 
  579.47 +
  579.48 +It provides similar 
  579.49 +functionality to that which CMsvEntry gives to client-side programs. The current 
  579.50 +entry that a CMsvServerEntry object relates is similarly referred to as its 
  579.51 +context. 
  579.52 +
  579.53 +A difference to note is that CMsvEntry functions, when used on a remote context, 
  579.54 +can result in requests to Server-side MTMs to change data on a remote server, 
  579.55 +as well as the local Message Server index. Naturally, as CMsvServerEntry is 
  579.56 +designed to be used by Server-side MTMs themselves, its comparable functions 
  579.57 +only alter the Message Server index.
  579.58 +
  579.59 +A CBaseServerMTM-derived object gets an initial CMsvServerEntry on construction. 
  579.60 +It can get further CMsvServerEntry objects by calling NewEntryL(). The context 
  579.61 +can be changed by SetEntry().
  579.62 +
  579.63 +The context is locked, preventing it being accessed by other MTMs. The lock 
  579.64 +is released when the object is deleted, or the context changes.
  579.65 +
  579.66 +As with CMsvEntry, CBaseServerMTM functions can be divided into two broad 
  579.67 +groups. The first provides means to access the various types of storage associated 
  579.68 +with an entry. The second provides a means to discover and access other entries 
  579.69 +that the entry owns (its children).  
  579.70 +@publishedAll
  579.71 +@released
  579.72 +*/
  579.73 +	{
  579.74 +public:
  579.75 +	IMPORT_C static CMsvServerEntry* NewL(CMsvServer& aServer, TMsvId aId);
  579.76 +	~CMsvServerEntry();
  579.77 +	//
  579.78 +	// Set and get the current context
  579.79 +	IMPORT_C TInt SetEntry(TMsvId aId);
  579.80 +	inline const TMsvEntry& Entry() const;
  579.81 +	IMPORT_C TMsvId OwningService() const;
  579.82 +	//
  579.83 +	// current entry only functions
  579.84 +	IMPORT_C TInt ChangeEntry(const TMsvEntry& aEntry, TSecureId aOwnerId);
  579.85 +	IMPORT_C TInt ChangeEntry(const TMsvEntry& aEntry);
  579.86 +	
  579.87 +
  579.88 +	//
  579.89 +	// child entry only functions
  579.90 +	IMPORT_C TInt CreateEntry(TMsvEntry& aEntry);
  579.91 +	IMPORT_C TInt CreateEntry(TMsvEntry& aEntry, TSecureId aOwnerId);
  579.92 +	IMPORT_C TInt CreateEntry(TMsvEntry& aEntry, TSecureId aOwnerId, TBool aBulk);
  579.93 +	IMPORT_C TInt DeleteEntry(TMsvId aId);
  579.94 +	IMPORT_C TInt DeleteEntries(CMsvEntrySelection& aSelection);
  579.95 +	IMPORT_C TInt MoveEntryWithinService(TMsvId aId, TMsvId aDestination);
  579.96 +	IMPORT_C TInt MoveEntriesWithinService(CMsvEntrySelection& aSelection, TMsvId aDestination);
  579.97 +	IMPORT_C TInt ChangeAttributes(const CMsvEntrySelection& aSelection, TUint aSetAttributes, TUint aClearAttributes);
  579.98 +	IMPORT_C void MoveEntryL(TMsvId aId, TMsvId aDestination, TRequestStatus& aObserverStatus);
  579.99 +	IMPORT_C void MoveEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aObserverStatus);
 579.100 +	IMPORT_C void CopyEntryL(TMsvId aId, TMsvId aDestination, TRequestStatus& aObserverStatus);
 579.101 +	IMPORT_C void CopyEntryL(TMsvId aId, TMsvId aDestination, TMsvId& aCompletedEntry, TRequestStatus& aObserverStatus);
 579.102 +	IMPORT_C void CopyEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aObserverStatus);
 579.103 +	IMPORT_C void CopyEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, CMsvEntrySelection& aCompletedSelection, TRequestStatus& aObserverStatus);
 579.104 +	IMPORT_C TInt GetEntryFromId(TMsvId aId,TMsvEntry*& aEntry);
 579.105 +	//
 579.106 +	// read and write the store associated with the context
 579.107 +	IMPORT_C CMsvStore* ReadStoreL();
 579.108 +	IMPORT_C CMsvStore* EditStoreL();
 579.109 +	//
 579.110 +	// List the children of the context 
 579.111 +	inline const TMsvSelectionOrdering& Sort();
 579.112 +	inline void SetSort(TMsvSelectionOrdering& aOrdering);
 579.113 +	inline void SetMtm(TUid aMtm);
 579.114 +	IMPORT_C TInt GetChildren(CMsvEntrySelection& aSelection);
 579.115 +	//
 579.116 +	IMPORT_C TInt GetChildrenWithService(TMsvId aServiceId, CMsvEntrySelection& aSelection);
 579.117 +	IMPORT_C TInt GetChildrenWithMtm(TUid aMtm, CMsvEntrySelection& aSelection);
 579.118 +	IMPORT_C TInt GetChildrenWithType(TUid aType, CMsvEntrySelection& aSelection);
 579.119 +	//
 579.120 +	// Spawns a new CMsvServerEntry object
 579.121 +	IMPORT_C CMsvServerEntry* NewEntryL(TMsvId aId);
 579.122 +	// 
 579.123 +	// from MMsvStoreObserver
 579.124 +	void HandleStoreEvent(MMsvStoreObserver::TMsvStoreEvent aEvent, TMsvId aId);
 579.125 +	//
 579.126 +	//
 579.127 +
 579.128 +	IMPORT_C TBool HasStoreL() const;
 579.129 +	//
 579.130 +	IMPORT_C RFs& FileSession();
 579.131 +	//
 579.132 +	// Methods for creating and changing entries in bulk
 579.133 +	// (e.g. during email header downloading)
 579.134 +	IMPORT_C TInt CreateEntryBulk(TMsvEntry& aEntry, TSecureId aOwnerId);
 579.135 +
 579.136 +	IMPORT_C TInt CreateEntryBulk(TMsvEntry& aEntry);
 579.137 +
 579.138 +	IMPORT_C TInt ChangeEntryBulk(const TMsvEntry& aEntry, TSecureId aOwnerId);
 579.139 +	IMPORT_C TInt ChangeEntryBulk(const TMsvEntry& aEntry);
 579.140 +	
 579.141 +	IMPORT_C void CompleteBulk();
 579.142 +
 579.143 +protected:
 579.144 +	CMsvServerEntry(CMsvServer& aIndex);
 579.145 +	void ConstructL(TMsvId aId);
 579.146 +	//
 579.147 +	void RunL();
 579.148 +	void DoCancel();
 579.149 +	//
 579.150 +private:
 579.151 +	TInt IncreaseBufferSizes(TInt aNewDescriptionSize, TInt aNewDetailsSize);
 579.152 +	TBool AreChildren(const CMsvEntrySelection& aSelection) const;
 579.153 +	TBool IsAChild(TMsvId aId) const;
 579.154 +	void DoMoveEntryL(TMsvId aId, TMsvId aDestination);
 579.155 +	void DoDeleteEntryL(TMsvId aId, CMsvEntrySelection*& aDeleted, CMsvEntrySelection*& aMoved);
 579.156 +	void DoDeleteEntriesL(CMsvEntrySelection& aSelection, CMsvEntrySelection*& aDeleted, CMsvEntrySelection*& aMoved);
 579.157 +	void DoMoveEntriesL(CMsvEntrySelection& aSelection, TMsvId aDestination, CMsvEntrySelection*& aMoved);
 579.158 +	TInt DoGetChildren(TMsvId aServiceId, TUid aMtm, TUid aType, CMsvEntrySelection& aSelection);
 579.159 +	void DoGetChildrenL(TMsvId aServiceId, TUid aMtm, TUid aType, CMsvEntrySelection& aSelection);
 579.160 +	void DoCopyEntriesL(const CMsvEntrySelection& aSelection, TMsvId aDestination, TRequestStatus& aObserverStatus);
 579.161 +	TInt DoChangeEntry(const TMsvEntry& aEntry, TSecureId aOwnerId, TBool aForcedUpdate, TBool aBulk);
 579.162 +
 579.163 +	//
 579.164 +private:
 579.165 +	TBool iLockedStore;
 579.166 +	TMsvSelectionOrdering iOrdering;
 579.167 +	TMsvEntry iEntry;
 579.168 +	HBufC* iDescription;
 579.169 +	HBufC* iDetails;
 579.170 +	CMsvServer& iServer;
 579.171 +	CMsvStore* iStore;
 579.172 +	TUid iMtm;
 579.173 +	CMsvCopyMoveEntriesBase* iCopyMove;
 579.174 +	TMsvId iSource;
 579.175 +	enum { EMsvIdle, EMsvMoving, EMsvCopying } iEntryState;
 579.176 +	TRequestStatus* iObserverStatus;
 579.177 +	CMsvEntrySelection* iCompletedSelection;
 579.178 +	TMsvId* iCompletedEntryId;
 579.179 +	TSecureId	iContextOwnerId;
 579.180 +	};
 579.181 +
 579.182 +
 579.183 +#include <msventry.inl>
 579.184 +
 579.185 +#endif // __MSVENTRY_H__
   580.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   580.2 +++ b/epoc32/include/mw/msventryscheduledata.h	Wed Mar 31 12:27:01 2010 +0100
   580.3 @@ -0,0 +1,101 @@
   580.4 +/// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   580.5 +/// All rights reserved.
   580.6 +/// This component and the accompanying materials are made available
   580.7 +/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   580.8 +/// which accompanies this distribution, and is available
   580.9 +/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  580.10 +///
  580.11 +/// Initial Contributors:
  580.12 +/// Nokia Corporation - initial contribution.
  580.13 +///
  580.14 +/// Contributors:
  580.15 +///
  580.16 +/// Description:
  580.17 +/// All rights reserved.
  580.18 +/// This component and the accompanying materials are made available
  580.19 +/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  580.20 +/// which accompanies this distribution, and is available
  580.21 +/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  580.22 +/// Initial Contributors:
  580.23 +/// Nokia Corporation - initial contribution.
  580.24 +/// Contributors:
  580.25 +///
  580.26 +
  580.27 +#ifndef MSV_ENTRY_SCHEDULE_DATA_H_
  580.28 +#define MSV_ENTRY_SCHEDULE_DATA_H_
  580.29 +
  580.30 +/////////////////////////////////////////////////////////////////////////////
  580.31 +//
  580.32 +//	Includes
  580.33 +//
  580.34 +/////////////////////////////////////////////////////////////////////////////
  580.35 +
  580.36 +#include <msvstore.h>
  580.37 +#include <schinfo.h>
  580.38 +#include <csch_cli.h>
  580.39 +#include <schtask.h>
  580.40 +
  580.41 +/////////////////////////////////////////////////////////////////////////////
  580.42 +//
  580.43 +//	Constants
  580.44 +//
  580.45 +/////////////////////////////////////////////////////////////////////////////
  580.46 +
  580.47 +const TUid KUidMsvFileScheduleData			= {0x100056A2};	//Used by TMsvEntryScheduleData
  580.48 +const TInt16 KMsvEntryScheduleDataVersion	= 1;
  580.49 +
  580.50 +/////////////////////////////////////////////////////////////////////////////
  580.51 +//
  580.52 +//	TMsvEntryScheduleData Declaration
  580.53 +//
  580.54 +/////////////////////////////////////////////////////////////////////////////
  580.55 +
  580.56 +/**
  580.57 +Stores message-specific data related to scheduling.
  580.58 +
  580.59 +The data is not required by the Client/UI side. This data is stored in a 
  580.60 +stream associated with the TMsvEntry. 
  580.61 +
  580.62 +@publishedAll
  580.63 +@released
  580.64 +*/
  580.65 +
  580.66 +class TMsvEntryScheduleData
  580.67 +	{
  580.68 +public:
  580.69 +	IMPORT_C TMsvEntryScheduleData();
  580.70 +
  580.71 +	IMPORT_C void RestoreL(CMsvStore& aStore);
  580.72 +	IMPORT_C void StoreL(CMsvStore& aStore) const;
  580.73 +	IMPORT_C void RemoveL(CMsvStore& aStore) const;
  580.74 +
  580.75 +	IMPORT_C void Reset();
  580.76 +	IMPORT_C TBool IsReset() const;
  580.77 +
  580.78 +	IMPORT_C TInt Retries() const;
  580.79 +	IMPORT_C void IncreaseRetries();
  580.80 +	IMPORT_C void ResetRetries();
  580.81 +
  580.82 +	/**
  580.83 +	The Task ID returned by the Task Scheduler when the message is 
  580.84 +	scheduled.
  580.85 +	*/
  580.86 +	TInt				iTaskId;
  580.87 +	
  580.88 +	/**
  580.89 +	The TSchedulerItemRef returned by the Task Scheduler when the schedule 
  580.90 +	on which the message is scheduled is created.
  580.91 +	*/
  580.92 +	TSchedulerItemRef	iRef;
  580.93 +
  580.94 +protected:
  580.95 +	/** The number of retries that have been made to send this message. */
  580.96 +	TInt				iRetryCount;
  580.97 +	/** Structure version. */
  580.98 +	TInt16				iVersion;
  580.99 +
 580.100 +	void ExternalizeL(RWriteStream& aWriteStream) const;
 580.101 +	void InternalizeL(RReadStream& aReadStream);
 580.102 +	};
 580.103 +
 580.104 +#endif
   581.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   581.2 +++ b/epoc32/include/mw/msvfind.h	Wed Mar 31 12:27:01 2010 +0100
   581.3 @@ -0,0 +1,192 @@
   581.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   581.5 +// All rights reserved.
   581.6 +// This component and the accompanying materials are made available
   581.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   581.8 +// which accompanies this distribution, and is available
   581.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  581.10 +//
  581.11 +// Initial Contributors:
  581.12 +// Nokia Corporation - initial contribution.
  581.13 +//
  581.14 +// Contributors:
  581.15 +//
  581.16 +// Description:
  581.17 +//
  581.18 +
  581.19 +#if !defined(__MSVFIND_H__)
  581.20 +#define __MSVFIND_H__
  581.21 +
  581.22 +#if !defined(__MSVAPI_H__)
  581.23 +#include <msvapi.h>
  581.24 +#endif
  581.25 +
  581.26 +#if !defined __MTCLBASE_H__
  581.27 +#include <mtclbase.h>
  581.28 +#endif
  581.29 +
  581.30 +#if !defined(__MTMDEF_H__)
  581.31 +#include <mtmdef.h>
  581.32 +#endif
  581.33 +
  581.34 +//**********************************
  581.35 +// TMsvFindResult
  581.36 +//**********************************
  581.37 +//
  581.38 +// Contains the result of a find operation for a particular entry
  581.39 +//
  581.40 +
  581.41 +class TMsvFindResult
  581.42 +/** A single result from a text search operation. The class encapsulates information 
  581.43 +which:
  581.44 +
  581.45 +1. identifies the message in which the search text is found
  581.46 +
  581.47 +2. identifies the parts of the message that contain the search text. 
  581.48 +@publishedAll
  581.49 +@released
  581.50 +*/
  581.51 +	{
  581.52 +public:
  581.53 +	IMPORT_C TMsvFindResult();
  581.54 +	IMPORT_C TMsvFindResult(TMsvPartList aPartList, TMsvId aId);
  581.55 +	//
  581.56 +public:
  581.57 +	/** The parts of the message that contain the search text. */
  581.58 +	TMsvPartList iPartList;
  581.59 +	/** The entry Id of the message that contains the search text. */
  581.60 +	TMsvId iId;
  581.61 +	};
  581.62 +
  581.63 +//**********************************
  581.64 +// CMsvFindResultSelection
  581.65 +//**********************************
  581.66 +//
  581.67 +// A list of find operation results with an accessor to find  
  581.68 +// the position for a particular entry
  581.69 +//
  581.70 +
  581.71 +class CMsvFindResultSelection : public CArrayFixFlat<TMsvFindResult>
  581.72 +/** Collection of results from a text search operation. The collection is organized 
  581.73 +as an array. 
  581.74 +@publishedAll
  581.75 +@released
  581.76 +*/
  581.77 +	{
  581.78 +public:
  581.79 +	IMPORT_C CMsvFindResultSelection();
  581.80 +	//
  581.81 +public:
  581.82 +	IMPORT_C CMsvFindResultSelection* CopyL()  const;
  581.83 +	IMPORT_C CMsvFindResultSelection* CopyLC() const;
  581.84 +	IMPORT_C TInt Find(TMsvId aId) const;
  581.85 +	};
  581.86 +
  581.87 +//**********************************
  581.88 +// TMsvFindOperationProgress
  581.89 +//**********************************
  581.90 +//
  581.91 +// Find operation progress
  581.92 +//
  581.93 +
  581.94 +class TMsvFindOperationProgress
  581.95 +/** Encapsulates progress information for a text search operation. The class has 
  581.96 +public data members. 
  581.97 +@publishedAll
  581.98 +@released
  581.99 +*/
 581.100 +	{
 581.101 +public:
 581.102 +	IMPORT_C TMsvFindOperationProgress();
 581.103 +	//
 581.104 +public:
 581.105 +	/** KErrNone if the search operation completed successfully otherwise one of the 
 581.106 +	system-wide error codes.
 581.107 +	
 581.108 +	This has no meaning while the search operation is in progress. */
 581.109 +	TInt iError;
 581.110 +	/** The number of messages already searched. */
 581.111 +	TInt iCompleted;
 581.112 +	/** The number of messages remaining to be searched.
 581.113 +	
 581.114 +	If the search operation is for text within a specified root, folder or service, 
 581.115 +	then this value is zero until the total number of messages has been determined. */
 581.116 +	TInt iRemaining;
 581.117 +	/** The entry Id identifying the message currently being searched */
 581.118 +	TMsvId iCurrentId;
 581.119 +	};
 581.120 +
 581.121 +class CClientMtmRegistry;
 581.122 +class CMsvChildMessages;
 581.123 +
 581.124 +//**********************************
 581.125 +// CMsvFindOperation
 581.126 +//**********************************
 581.127 +//
 581.128 +// The find operation. Created by calling the relevant static function
 581.129 +// The results for all of these are added to the CMsvFindResultSelection which
 581.130 +// can be accessed via the accessor function GetFindResult
 581.131 +//
 581.132 +
 581.133 +class CMsvFindOperation : public CMsvOperation
 581.134 +/** Encapsulates a text search operation.
 581.135 +
 581.136 +The class offers an interface for locating messages which contain specified 
 581.137 +text. Messages may contain data created for, or received from, any of the 
 581.138 +transport protocols that are supported by the Messaging Architecture (e.g. 
 581.139 +Email, FAX and SMS).
 581.140 +
 581.141 +Clients create a new instance for each search operation to be performed. They 
 581.142 +are also responsible for destroying the instance once a search operation is 
 581.143 +complete.
 581.144 +
 581.145 +Clients can derive from this class, typically to implement their own version 
 581.146 +of the function IsValid(). 
 581.147 +@publishedAll
 581.148 +@released
 581.149 +*/
 581.150 +	{
 581.151 +public:
 581.152 +	IMPORT_C static CMsvFindOperation* FindInChildrenL(CMsvSession& aSession, const TDesC& aTextToFind, TMsvId aParentId, TMsvPartList aPartList, TRequestStatus& aObserverRequestStatus);
 581.153 +	IMPORT_C static CMsvFindOperation* FindInSelectionL(CMsvSession& aSession, const TDesC& aTextToFind, const CMsvEntrySelection& aSelection, TMsvPartList aPartList, TRequestStatus& aObserverRequestStatus);
 581.154 +	IMPORT_C ~CMsvFindOperation();
 581.155 +	//
 581.156 +	IMPORT_C const TDesC8& ProgressL();
 581.157 +	IMPORT_C const TDesC8& FinalProgress();
 581.158 +	//
 581.159 +	inline const CMsvFindResultSelection& GetFindResult() const;
 581.160 +	//
 581.161 +protected:
 581.162 +	IMPORT_C CMsvFindOperation(CMsvSession& aSession, const TDesC& aTextToFind, TMsvPartList aPartList, TRequestStatus& aObserverRequestStatus);
 581.163 +	IMPORT_C void ConstructFindInChildrenL(TMsvId aId);
 581.164 +	IMPORT_C void ConstructFindInSelectionL(const CMsvEntrySelection& aSelection);
 581.165 +	//
 581.166 +private:
 581.167 +	void ConstructL();
 581.168 +	//
 581.169 +	IMPORT_C void DoCancel();
 581.170 +	IMPORT_C void RunL();
 581.171 +	//
 581.172 +	void DoRunL();
 581.173 +	void FindL();
 581.174 +	void Complete(TInt aStatus);
 581.175 +	void StartL();
 581.176 +	//
 581.177 +	virtual TBool IsValid(const TMsvEntry& aEntry) const;
 581.178 +	//
 581.179 +private:
 581.180 +	enum { EMsvFindingText, EMsvExpandingFolders } iState;
 581.181 +	TBuf<KMsvMaxFindTextLength> iTextToFind;
 581.182 +	TMsvPartList iPartList;
 581.183 +	CMsvFindResultSelection* iFindResultSel;
 581.184 +	TPckgBuf<TMsvFindOperationProgress> iProgress;
 581.185 +	CMsvEntrySelection* iSelection;
 581.186 +	CClientMtmRegistry* iClientRegistry;
 581.187 +	CArrayPtrFlat<CBaseMtm>* iMtmArray;
 581.188 +	CMsvChildMessages* iChildMessages;
 581.189 +	TMsvId iCurrentId;
 581.190 +	TMsvEntry iEntry;
 581.191 +	};
 581.192 +
 581.193 +#include <msvfind.inl>
 581.194 +
 581.195 +#endif
   582.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   582.2 +++ b/epoc32/include/mw/msvftext.h	Wed Mar 31 12:27:01 2010 +0100
   582.3 @@ -0,0 +1,79 @@
   582.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   582.5 +// All rights reserved.
   582.6 +// This component and the accompanying materials are made available
   582.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   582.8 +// which accompanies this distribution, and is available
   582.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  582.10 +//
  582.11 +// Initial Contributors:
  582.12 +// Nokia Corporation - initial contribution.
  582.13 +//
  582.14 +// Contributors:
  582.15 +//
  582.16 +// Description:
  582.17 +//
  582.18 +
  582.19 +#ifndef __MSVFTEXT_H__
  582.20 +#define __MSVFTEXT_H__
  582.21 +
  582.22 +#include <e32base.h>
  582.23 +
  582.24 +#include <mentact.h>
  582.25 +#include <mtclbase.h>
  582.26 +#include <mtmdef.h>
  582.27 +
  582.28 +class CRichText;
  582.29 +
  582.30 +class CMsvFindText : public CMsgActive
  582.31 +/** A utility class which searches through given plain text or rich text for a 
  582.32 +specified text string.
  582.33 +
  582.34 +The class is an active object and searching can be done synchronously or asynchronously. 
  582.35 +An instance of this class can be re-used to perform multiple searches for 
  582.36 +text. 
  582.37 +@publishedAll
  582.38 +@released
  582.39 +*/
  582.40 +	{
  582.41 +public:
  582.42 +	IMPORT_C static CMsvFindText* NewLC(TInt aPriority = EPriorityStandard);
  582.43 +	IMPORT_C static CMsvFindText* NewL(TInt aPriority = EPriorityStandard);
  582.44 +	IMPORT_C ~CMsvFindText();
  582.45 +	//
  582.46 +	IMPORT_C void FindTextL(const TDesC& aFind, const TDesC& aSource, TMsvPartList aFlags, TRequestStatus& aStatus);
  582.47 +	IMPORT_C void FindRichTextL(const TDesC& aFind, const CRichText& aSource, TMsvPartList aFlags, TRequestStatus& aStatus);
  582.48 +	//
  582.49 +	IMPORT_C TBool FindTextL(const TDesC& aFind, const TDesC& aSource, TMsvPartList aFlags);
  582.50 +	IMPORT_C TBool FindRichTextL(const TDesC& aFind, const CRichText& aSource, TMsvPartList aFlags);
  582.51 +	//
  582.52 +	inline TBool FoundText() const;
  582.53 +	//
  582.54 +private:
  582.55 +	CMsvFindText(TInt aPriority);
  582.56 +	//
  582.57 +	void InitialiseL(const TDesC& aFind, const TDesC* aPlainSource, const CRichText* aRichSource, TMsvPartList aFlags);
  582.58 +	void DoFindAsyncL(TRequestStatus& aStatus);
  582.59 +	void DoComplete(TInt&);
  582.60 +	TBool DoFindSyncL();
  582.61 +	TBool DoFindStepL();
  582.62 +	TBool DoFindTextL();
  582.63 +	void DoRunL();
  582.64 +	void Check();
  582.65 +	//
  582.66 +private:
  582.67 +	HBufC* iBuf;
  582.68 +	HBufC* iFind;
  582.69 +	TInt iSourcePos;
  582.70 +	TInt iMaxRead;
  582.71 +	TInt iSourceLen;
  582.72 +	const CRichText* iRichText;
  582.73 +	const TDesC* iPlainText;
  582.74 +	TMsvPartList iFlags;
  582.75 +	TChar iPreChar;
  582.76 +	TChar iPostChar;
  582.77 +	TBool iFoundText;
  582.78 +	};
  582.79 +
  582.80 +#include <msvftext.inl>
  582.81 +
  582.82 +#endif
   583.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   583.2 +++ b/epoc32/include/mw/msvids.h	Wed Mar 31 12:27:01 2010 +0100
   583.3 @@ -0,0 +1,170 @@
   583.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   583.5 +// All rights reserved.
   583.6 +// This component and the accompanying materials are made available
   583.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   583.8 +// which accompanies this distribution, and is available
   583.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  583.10 +//
  583.11 +// Initial Contributors:
  583.12 +// Nokia Corporation - initial contribution.
  583.13 +//
  583.14 +// Contributors:
  583.15 +//
  583.16 +// Description:
  583.17 +//
  583.18 +
  583.19 +
  583.20 +
  583.21 +/**
  583.22 + @file
  583.23 + @publishedAll
  583.24 + @released
  583.25 +*/
  583.26 +
  583.27 +#if !defined(__MSVIDS_H__)
  583.28 +#define __MSVIDS_H__
  583.29 +#if !defined(__MSVSTD_HRH__)
  583.30 +#include <msvstd.hrh>
  583.31 +#endif
  583.32 +#if !defined(__MSVSTD_H__)
  583.33 +#include <msvstd.h>
  583.34 +#endif
  583.35 +
  583.36 +// Predefined entry ids - values #defined in MSVSTD.HRH
  583.37 +
  583.38 +/**
  583.39 +A NULL ID. 
  583.40 +This is typically used to indicate that the ID has not yet been set. It can 
  583.41 +also be used to "park" a CMsvServerEntry so that it doesn't lock an index 
  583.42 +entry.
  583.43 +@publishedAll
  583.44 +@released
  583.45 +@see TMsvId
  583.46 +@see KMsvNullIndexEntryIdValue
  583.47 +*/
  583.48 +const TMsvId KMsvNullIndexEntryId=KMsvNullIndexEntryIdValue;//0
  583.49 +
  583.50 +/**
  583.51 +Temporary ID used for testing purpose
  583.52 +@internalAll
  583.53 +@released
  583.54 +@see TMsvId
  583.55 +@see KMsvTempIndexEntryIdValue
  583.56 +*/
  583.57 +const TMsvId KMsvTempIndexEntryId=KMsvTempIndexEntryIdValue;//1
  583.58 +
  583.59 +/**
  583.60 +ID of root entry of entire index
  583.61 +@publishedAll
  583.62 +@released
  583.63 +@see TMsvId
  583.64 +@see KMsvRootIndexEntryIdValue
  583.65 +*/
  583.66 +const TMsvId KMsvRootIndexEntryId=KMsvRootIndexEntryIdValue;//0x1000
  583.67 +
  583.68 +/**
  583.69 +ID of local service (containing the standard folders)
  583.70 +@publishedAll
  583.71 +@released
  583.72 +@see TMsvId
  583.73 +@see KMsvLocalServiceIndexEntryIdValue
  583.74 +*/
  583.75 +const TMsvId KMsvLocalServiceIndexEntryId=KMsvLocalServiceIndexEntryIdValue;//0x1001
  583.76 +
  583.77 +/**
  583.78 +ID of Inbox folder 
  583.79 +@publishedAll
  583.80 +@released
  583.81 +@see TMsvId
  583.82 +@see KMsvGlobalInBoxIndexEntryIdValue
  583.83 +*/
  583.84 +const TMsvId KMsvGlobalInBoxIndexEntryId=KMsvGlobalInBoxIndexEntryIdValue;//0x1002
  583.85 +
  583.86 +/**
  583.87 +ID of Outbox folder
  583.88 +@publishedAll
  583.89 +@released
  583.90 +@see TMsvId
  583.91 +@see KMsvGlobalOutBoxIndexEntryIdValue
  583.92 +*/
  583.93 +const TMsvId KMsvGlobalOutBoxIndexEntryId=KMsvGlobalOutBoxIndexEntryIdValue;//0x1003
  583.94 +
  583.95 +/**
  583.96 +ID of Draft folder
  583.97 +@publishedAll
  583.98 +@released
  583.99 +@see TMsvId
 583.100 +@see KMsvDraftEntryIdValue
 583.101 +*/
 583.102 +const TMsvId KMsvDraftEntryId=KMsvDraftEntryIdValue; //0x1004
 583.103 +
 583.104 +/**
 583.105 +ID of Sent folder
 583.106 +@publishedAll
 583.107 +@released
 583.108 +@see TMsvId
 583.109 +@see KMsvSentEntryIdValue
 583.110 +*/
 583.111 +const TMsvId KMsvSentEntryId=KMsvSentEntryIdValue; //0x1005
 583.112 +
 583.113 +/**
 583.114 +ID of Deleted folder - Invisible folder
 583.115 +@publishedAll
 583.116 +@released
 583.117 +@see TMsvId
 583.118 +@see KMsvDeletedEntryFolderEntryIdValue
 583.119 +*/
 583.120 +const TMsvId KMsvDeletedEntryFolderEntryId=KMsvDeletedEntryFolderEntryIdValue;//0x1006
 583.121 +
 583.122 +/**
 583.123 +ID used to indicate Unknown/Invalid Service entry folder
 583.124 +@publishedAll
 583.125 +@released
 583.126 +@see TMsvId
 583.127 +@see KMsvUnkownServiceIndexEntryIdValue
 583.128 +*/
 583.129 +const TMsvId KMsvUnknownServiceIndexEntryId=KMsvUnkownServiceIndexEntryIdValue; //0x1007
 583.130 +
 583.131 +/**
 583.132 +@internalAll
 583.133 +@released
 583.134 +@see TMsvId
 583.135 +*/
 583.136 +const TMsvId KFirstFreeEntryId=0x100000;
 583.137 +
 583.138 +/**
 583.139 +Uid for POPService
 583.140 +@publishedAll
 583.141 +@released
 583.142 +*/
 583.143 +const TUid KUidPOPService = {0x2000BB68};
 583.144 +
 583.145 +/**
 583.146 +Uid for IMAPService
 583.147 +@publishedAll
 583.148 +@released
 583.149 +*/
 583.150 +const TUid KUidIMAPService = {0x2000BB69};
 583.151 +
 583.152 +/**
 583.153 +Uid for SMTPService
 583.154 +@publishedAll
 583.155 +@released
 583.156 +*/
 583.157 +const TUid KUidSMTPService = {0x2000BB6A};
 583.158 +
 583.159 +/**
 583.160 +Uid for SendAs2Service
 583.161 +@publishedAll
 583.162 +@released
 583.163 +*/
 583.164 +const TUid KUidSendAs2Service = {0x2000BB6B};
 583.165 +
 583.166 +/**
 583.167 +Uid for SMSService
 583.168 +@publishedAll
 583.169 +@released
 583.170 +*/
 583.171 +const TUid KUidSMSService = {0x2000BB6C};
 583.172 +
 583.173 +#endif
   584.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   584.2 +++ b/epoc32/include/mw/msvoffpeaktime.h	Wed Mar 31 12:27:01 2010 +0100
   584.3 @@ -0,0 +1,103 @@
   584.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   584.5 +// All rights reserved.
   584.6 +// This component and the accompanying materials are made available
   584.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   584.8 +// which accompanies this distribution, and is available
   584.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  584.10 +//
  584.11 +// Initial Contributors:
  584.12 +// Nokia Corporation - initial contribution.
  584.13 +//
  584.14 +// Contributors:
  584.15 +//
  584.16 +// Description:
  584.17 +//
  584.18 +
  584.19 +#ifndef __MSVOFFPEAKTIME_H__
  584.20 +#define __MSVOFFPEAKTIME_H__
  584.21 +
  584.22 + 
  584.23 +
  584.24 +
  584.25 +/////////////////////////////////////////////////////////////////////////////
  584.26 +//
  584.27 +//	Constants
  584.28 +//
  584.29 +/////////////////////////////////////////////////////////////////////////////
  584.30 +
  584.31 +
  584.32 +/////////////////////////////////////////////////////////////////////////////
  584.33 +//
  584.34 +//	TMsvOffPeakTime Declaration
  584.35 +//
  584.36 +/////////////////////////////////////////////////////////////////////////////
  584.37 +
  584.38 +/**
  584.39 +Defines an off-peak period for message sending.
  584.40 +
  584.41 +An off-peak period is specified as a start time and a duration. 
  584.42 +
  584.43 +@publishedAll
  584.44 +@released
  584.45 +*/
  584.46 +
  584.47 +class TMsvOffPeakTime
  584.48 +	{
  584.49 +public:
  584.50 +	IMPORT_C TMsvOffPeakTime();
  584.51 +	IMPORT_C TMsvOffPeakTime(const TDay aDay, const TInt aHour, const TInt aMinute, const TTimeIntervalMinutes aValidityPeriod);
  584.52 +
  584.53 +
  584.54 +	IMPORT_C void Reset();
  584.55 +
  584.56 +	IMPORT_C TDay Day() const;
  584.57 +	IMPORT_C void SetDay(const TDay aDay);
  584.58 +
  584.59 +	IMPORT_C TInt Hour() const;
  584.60 +	IMPORT_C void SetHour(const TInt aHour);
  584.61 +
  584.62 +	IMPORT_C TInt Minute() const;
  584.63 +	IMPORT_C void SetMinute(const TInt aMinute);
  584.64 +
  584.65 +	IMPORT_C const TTimeIntervalMinutes ValidityPeriod() const;
  584.66 +	IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes aValidityPeriod);
  584.67 +
  584.68 +	IMPORT_C const TTime NextTimeInclusive(const TTime& aFromTime) const;
  584.69 +
  584.70 +private:
  584.71 +	TDay iDay;
  584.72 +	TInt8 iHour;							//Start hour
  584.73 +	TInt8 iMinute;							//Start minute
  584.74 +	TTimeIntervalMinutes iValidityPeriod;	//Validity period. Must be less than 24 hours
  584.75 +	};
  584.76 +
  584.77 +/////////////////////////////////////////////////////////////////////////////
  584.78 +//
  584.79 +//	CMsvOffPeakTimes Declaration
  584.80 +//
  584.81 +/////////////////////////////////////////////////////////////////////////////
  584.82 +
  584.83 +/**
  584.84 +Array of off-peak time data.
  584.85 +
  584.86 +This represents all the off-peak time periods in each week. 
  584.87 +
  584.88 +@publishedAll
  584.89 +@released
  584.90 +*/
  584.91 +
  584.92 +class CMsvOffPeakTimes : public CArrayFixFlat<TMsvOffPeakTime>
  584.93 +	{
  584.94 +public:
  584.95 +	IMPORT_C CMsvOffPeakTimes();
  584.96 +
  584.97 +
  584.98 +	IMPORT_C TInt GetNextOffPeakTime(const TTime& aFromTime, TMsvOffPeakTime& aNext, TTime& aNextTime) const;
  584.99 +
 584.100 +protected:
 584.101 +
 584.102 +
 584.103 +private:
 584.104 +	};
 584.105 +
 584.106 +#endif	// __MSVOFFPEAKTIME_H__
   585.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   585.2 +++ b/epoc32/include/mw/msvrcpt.h	Wed Mar 31 12:27:01 2010 +0100
   585.3 @@ -0,0 +1,69 @@
   585.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   585.5 +// All rights reserved.
   585.6 +// This component and the accompanying materials are made available
   585.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   585.8 +// which accompanies this distribution, and is available
   585.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  585.10 +//
  585.11 +// Initial Contributors:
  585.12 +// Nokia Corporation - initial contribution.
  585.13 +//
  585.14 +// Contributors:
  585.15 +//
  585.16 +// Description:
  585.17 +//
  585.18 +
  585.19 +#if !defined(__MSVRCPT_H__)
  585.20 +#define __MSVRCPT_H__
  585.21 +
  585.22 +class RWriteStream;
  585.23 +
  585.24 +//**********************************
  585.25 +// CMsvRecipient
  585.26 +//**********************************
  585.27 +//
  585.28 +// Base class for  multiple recipients
  585.29 +//
  585.30 +
  585.31 +class CMsvRecipient : public CBase
  585.32 +/** Base class for information relating to a message recipient. 
  585.33 +@publishedAll
  585.34 +@released
  585.35 +*/
  585.36 +	{
  585.37 +public:
  585.38 +	/** Message sending status for a recipient. 
  585.39 +@publishedAll
  585.40 +@released
  585.41 +*/
  585.42 +	enum TRecipientStatus 
  585.43 +							{	
  585.44 +	/** Message is not sent. */
  585.45 +							ENotYetSent=0,
  585.46 +	/** Message has been sent. */
  585.47 +							ESentSuccessfully=1,
  585.48 +	/** Message sending failed. */
  585.49 +				 			EFailedToSend=2};
  585.50 +	IMPORT_C virtual void InternalizeL(RReadStream& aStream);
  585.51 +	IMPORT_C virtual void ExternalizeL(RWriteStream& aStream) const;
  585.52 +	inline TRecipientStatus Status() const;
  585.53 +	inline void SetStatus(TRecipientStatus aStatus);
  585.54 +	inline TInt Error() const;
  585.55 +	inline void SetError(TInt aError);
  585.56 +	inline const TTime& Time() const;
  585.57 +	inline TTime& Time();
  585.58 +	inline TInt Retries() const;
  585.59 +	inline void IncreaseRetries();
  585.60 +	inline void ResetRetries();
  585.61 +protected:
  585.62 +	IMPORT_C CMsvRecipient();
  585.63 +private:
  585.64 +	TRecipientStatus iStatus;
  585.65 +	TInt   iError;
  585.66 +	TInt   iRetries;
  585.67 +	TTime	 iTime;
  585.68 +	};
  585.69 +
  585.70 +#include <msvrcpt.inl>
  585.71 +
  585.72 +#endif
   586.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   586.2 +++ b/epoc32/include/mw/msvreg.h	Wed Mar 31 12:27:01 2010 +0100
   586.3 @@ -0,0 +1,275 @@
   586.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   586.5 +// All rights reserved.
   586.6 +// This component and the accompanying materials are made available
   586.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   586.8 +// which accompanies this distribution, and is available
   586.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  586.10 +//
  586.11 +// Initial Contributors:
  586.12 +// Nokia Corporation - initial contribution.
  586.13 +//
  586.14 +// Contributors:
  586.15 +//
  586.16 +// Description:
  586.17 +//
  586.18 +
  586.19 +#if !defined(__MSVREG_H__)
  586.20 +#define __MSVREG_H__
  586.21 +#if !defined(__E32BASE_H__)
  586.22 +#include <e32base.h>
  586.23 +#endif
  586.24 +#if !defined(__F32FILE_H__)
  586.25 +#include <f32file.h>
  586.26 +#endif
  586.27 +
  586.28 +
  586.29 +
  586.30 +/**
  586.31 +@internalComponent
  586.32 +@released
  586.33 +*/
  586.34 +enum TMtsrDllIndex    //  Used in CMtmGroupData
  586.35 +	{
  586.36 +	EMtsrServerComponentIndex,
  586.37 +	EMtsrClientComponentIndex,
  586.38 +	EMtsrUiComponentIndex,
  586.39 +	EMtsrUiDataComponentIndex
  586.40 +	};
  586.41 +
  586.42 +const TInt KHumanReadableNameLength=50;
  586.43 +typedef TBuf<KHumanReadableNameLength> THumanReadableName;   //  could be used client side
  586.44 +
  586.45 +#define KMsvDefaultTimeoutMicroSeconds32 30000000
  586.46 +
  586.47 +// forward declarations
  586.48 +class RWriteStream;
  586.49 +class RReadStream;
  586.50 +class RFs;
  586.51 +
  586.52 +
  586.53 +class CMtmDllInfo : public CBase
  586.54 +/** Encapsulates the registration data for a single concrete MTM component. 
  586.55 +
  586.56 +It is used in the creation of registration data for an MTM group. Typically, 
  586.57 +an application gathers a number of CMtmDllInfo objects into an CMtmDllInfoArray. 
  586.58 + 
  586.59 +@publishedAll
  586.60 +@released
  586.61 +*/
  586.62 +	{
  586.63 +public:
  586.64 +	IMPORT_C static CMtmDllInfo* NewL(const TDesC& aHumanReadableName,const TUidType& aUidType,const TDesC& aFilename,TInt aEntryPointOrdinalNumber,const TVersion aVersion);
  586.65 +	IMPORT_C static CMtmDllInfo* NewL(const CMtmDllInfo& aMtmDllInfo);
  586.66 +	IMPORT_C static CMtmDllInfo* NewL(RReadStream& aStream);
  586.67 +	IMPORT_C ~CMtmDllInfo();
  586.68 +	IMPORT_C void SetHumanReadableNameL(const TDesC& aHumanReadableName);
  586.69 +	inline TPtrC HumanReadableName() const;
  586.70 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  586.71 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;  // not used but as it is exported it has been kept
  586.72 +	IMPORT_C TBool operator==(const CMtmDllInfo& aMtmDllInfo) const; 
  586.73 +	void SetMessagingCapability(TBool aCapability);
  586.74 +	void SetSendBodyCapability(TBool aCapability);
  586.75 +	void SetCapabilitiesAvailable(TBool aBool);
  586.76 +	IMPORT_C TBool MessagingCapability() const;
  586.77 +	IMPORT_C TBool SendBodyCapability() const;
  586.78 +	IMPORT_C TBool CapabilitiesAvailable() const;
  586.79 +	TPtrC FileName() const;
  586.80 +private:
  586.81 +	CMtmDllInfo();
  586.82 +	CMtmDllInfo(const TUidType& aUidType,TInt aEntryPointOrdinalNumber,const TVersion aVersion);
  586.83 +	CMtmDllInfo(const CMtmDllInfo& aMtmDllInfo);
  586.84 +	void ConstructL(const TDesC& aHumanReadableName, const TDesC& aFilename);
  586.85 +private:
  586.86 +	HBufC* iHumanReadableName;         //  Should be less than KHumanReadableNameLength
  586.87 +public:
  586.88 +	/** Group of UIDs for the MTM. See NewL() for details. */
  586.89 +	TUidType iUidType;                 //  Three uids
  586.90 +	/** Ordinal of factory function for the MTM component */
  586.91 +	TInt iEntryPointOrdinalNumber;
  586.92 +	/** Version information for the MTM component */
  586.93 +	TVersion iVersion;
  586.94 +
  586.95 +	/** Flag that indicates if the MTM can send messages */
  586.96 +	TBool iMessagingCapability;
  586.97 +	/** Flag that indicates if the MTM can handle body text */
  586.98 +	TBool iSendBodyCapability;
  586.99 +	/** Flag that indicates if settings have been made for the 
 586.100 +	MessagingCapability() and SendBodyCapability() flags */	
 586.101 +	TBool iCapabilitiesAvailable;
 586.102 +private:
 586.103 +	HBufC* iFilename;
 586.104 +	};
 586.105 +
 586.106 +
 586.107 +class CMtmDllInfoArray : public CArrayPtrFlat<CMtmDllInfo>
 586.108 +/** Collects the registration data for concrete MTM components, as encapsulated 
 586.109 +in CMtmDllInfo objects, into an array.
 586.110 +
 586.111 +Basic array functionality is provided by the base class CArrayPtrFlat<CMtmDllInfo>.
 586.112 +
 586.113 +It is used in the creation of registration data for an MTM group: see CMtmGroupData. 
 586.114 +
 586.115 +@publishedAll
 586.116 +@released
 586.117 +*/
 586.118 +	{
 586.119 +public:
 586.120 +	IMPORT_C CMtmDllInfoArray();
 586.121 +	IMPORT_C ~CMtmDllInfoArray();
 586.122 +	IMPORT_C void AddMtmDllInfoL(CMtmDllInfo* aMtmDllInfo);
 586.123 +	};
 586.124 +
 586.125 +class TCapabilitySet;
 586.126 +
 586.127 +class CMtmGroupData : public CBase
 586.128 +/** Encapsulates the registration data for an MTM group. 
 586.129 +
 586.130 +It is used to access and write the registration data file for an MTM group.
 586.131 + 
 586.132 +@publishedAll
 586.133 +@released
 586.134 +*/
 586.135 +	{
 586.136 +public:
 586.137 +	IMPORT_C static CMtmGroupData* NewL(TUid aMtmTypeUid, TUid aTechnologyTypeUid,CMtmDllInfoArray* aMtmDllInfoArray, const TCapabilitySet& aMtmRequiredCaps);
 586.138 +	IMPORT_C static CMtmGroupData* NewL(const CMtmGroupData& aMtmGroupData);
 586.139 +	IMPORT_C static CMtmGroupData* NewL(RReadStream& aStream);
 586.140 +	IMPORT_C ~CMtmGroupData();
 586.141 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 586.142 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;  // not used but as it is exported it has been kept
 586.143 +	inline TUid MtmTypeUid() const;
 586.144 +	inline TUid TechnologyTypeUid() const;
 586.145 +	IMPORT_C const CMtmDllInfoArray& MtmDllInfoArray() const;
 586.146 +	IMPORT_C const TCapabilitySet& GetMtmRequiredCapabilities() const;
 586.147 +	IMPORT_C TBool operator==(const CMtmGroupData& aMtmGroupData) const;
 586.148 +private:
 586.149 +	CMtmGroupData(TUid aMtmTypeUid, TUid aTechnologyTypeUid, CMtmDllInfoArray* aMtmDllInfoArray, const TCapabilitySet& aMtmRequiredCaps);
 586.150 +	void ConstructL(const CMtmGroupData& aMtmGroupData);
 586.151 +	void ConstructL();
 586.152 +	void AppendMtmDllInfoArrayL(const CMtmDllInfoArray& aMtmDllInfoArray);
 586.153 +	CMtmDllInfoArray& MtmDllInfoArrayPrivate();
 586.154 +	CMtmGroupData(TUid aMtmTypeUid=KNullUid,TUid aTechnologyTypeUid=KNullUid);
 586.155 +	void AppendMtmDllInfoL(CMtmDllInfo* aMtmDllInfo);  // Leaves if second uid wrong
 586.156 +private:
 586.157 +	TUid iMtmTypeUid;
 586.158 +	TUid iTechnologyTypeUid;
 586.159 +	CMtmDllInfoArray* iMtmDllInfoArray;
 586.160 +	TCapabilitySet iMtmRequiredCaps;
 586.161 +	};
 586.162 +
 586.163 +
 586.164 +class MRegisteredMtmDllObserver
 586.165 +/** 
 586.166 +@internalComponent
 586.167 +@released
 586.168 +*/
 586.169 +	{
 586.170 +public:
 586.171 +	virtual TInt UseMtmGroup(TUid aMtmTypeUid)=0;
 586.172 +	virtual TInt ReleaseMtmGroup(TUid aMtmTypeUid)=0;
 586.173 +	};
 586.174 +
 586.175 +
 586.176 +//  Real non-derivable class
 586.177 +
 586.178 +class CRegisteredMtmDll : public CTimer
 586.179 +/** Allows an MTM object to access registry information about itself.
 586.180 + 
 586.181 +@publishedAll
 586.182 +@released
 586.183 +*/
 586.184 +	{
 586.185 +public:
 586.186 +	IMPORT_C static CRegisteredMtmDll* NewL(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const CMtmDllInfo& aMtmDllInfo,const TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver);
 586.187 +	IMPORT_C ~CRegisteredMtmDll();
 586.188 +
 586.189 +	inline TUid MtmTypeUid() const;
 586.190 +	inline TUid TechnologyTypeUid() const;
 586.191 +	inline const CMtmDllInfo& MtmDllInfo() const;
 586.192 +
 586.193 +	inline TInt MtmDllRefCount() const;
 586.194 +
 586.195 +	IMPORT_C TInt GetLibrary(RFs& aFs,RLibrary& aMtmDllLibrary);   // Increments reference count if successful or returns error 
 586.196 +	IMPORT_C void ReleaseLibrary();                       // Decrements access count
 586.197 +	                                                      // Should be called from destructor of any objects created from the library 
 586.198 +private:
 586.199 +	CRegisteredMtmDll(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver);
 586.200 +	void ConstructL(const CMtmDllInfo& aMtmDllInfo);
 586.201 +	void LoadLibraryL(RFs& aFs);   
 586.202 +
 586.203 +	void RunL();
 586.204 +
 586.205 +private:
 586.206 +	TUid iMtmTypeUid;
 586.207 +	TUid iTechnologyTypeUid;
 586.208 +	CMtmDllInfo* iMtmDllInfo;
 586.209 +	RLibrary iMtmDllLibrary;
 586.210 +	TInt iMtmDllRefCount;
 586.211 +	TTimeIntervalMicroSeconds32 iTimeoutMicroSeconds32;
 586.212 +	MRegisteredMtmDllObserver& iRegisteredMtmDllObserver;
 586.213 +	};
 586.214 +
 586.215 +
 586.216 +
 586.217 +class CRegisteredMtmDllArray : public CArrayPtrFlat<CRegisteredMtmDll>
 586.218 +/**
 586.219 +@internalComponent
 586.220 +@released
 586.221 +*/
 586.222 +	{
 586.223 +public:
 586.224 +	IMPORT_C CRegisteredMtmDllArray();
 586.225 +	IMPORT_C ~CRegisteredMtmDllArray();
 586.226 +	IMPORT_C void AddRegisteredMtmDllL(CRegisteredMtmDll* aRegisteredMtmDll);
 586.227 +	};
 586.228 +
 586.229 +//  Base class
 586.230 +
 586.231 +class CMtmDllRegistry : public CBase
 586.232 +/** Accesses the various MTM component registries. 
 586.233 +
 586.234 +The derived classes used by 
 586.235 +clients are CClientMtmRegistry, CMtmUiDataRegistry, and CMtmUiRegistry. It 
 586.236 +provides functions to discover the MTMs registered in such a registry. The 
 586.237 +registered MTMs can be regarded as existing in a list: you can use NumRegisteredMtmDlls() 
 586.238 +to get the number in the list, and MtmTypeUid() to index into it.
 586.239 + 
 586.240 +@internalComponent
 586.241 +@released
 586.242 +*/
 586.243 +	{
 586.244 +public:
 586.245 +	IMPORT_C ~CMtmDllRegistry();
 586.246 +
 586.247 +	inline TInt NumRegisteredMtmDlls() const;
 586.248 +	IMPORT_C TUid MtmTypeUid(TInt anIndex) const;                                
 586.249 +
 586.250 +	inline TBool IsPresent(TUid aMtmTypeUid) const;
 586.251 +	IMPORT_C TUid TechnologyTypeUid(TUid aMtmTypeUid) const;
 586.252 +	IMPORT_C const CMtmDllInfo& RegisteredMtmDllInfo(TUid aMtmTypeUid) const;                                
 586.253 +	IMPORT_C TBool IsInUse(TUid aMtmTypeUid) const;        // returns true if specified DLL in use 
 586.254 +	IMPORT_C TBool IsInUse() const;                        // returns true if any DLL in use 
 586.255 +
 586.256 +protected:
 586.257 +	IMPORT_C CMtmDllRegistry(RFs& aFs,TUid aMtmDllTypeUid,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=KMsvDefaultTimeoutMicroSeconds32); 
 586.258 +
 586.259 +	IMPORT_C TInt MtmTypeUidToIndex(TUid anMtmTypeUid) const;
 586.260 +
 586.261 +	IMPORT_C TInt AddRegisteredMtmDll(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const CMtmDllInfo& aMtmDllInfo,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver); // returns error
 586.262 +	IMPORT_C void RemoveRegisteredMtmDll(TUid aMtmTypeUid);         
 586.263 +	IMPORT_C void RemoveAllRegisteredMtmDlls();                     
 586.264 +
 586.265 +private:
 586.266 +	void DoAddRegisteredMtmDllL(TUid aMtmTypeUid,TUid aTechnologyTypeUid,const CMtmDllInfo& aMtmDllInfo,MRegisteredMtmDllObserver& aRegisteredMtmDllObserver); // returns error
 586.267 +
 586.268 +protected:
 586.269 +	RFs& iFs;
 586.270 +	TUid iMtmDllTypeUid;  //  Second Uid in all Dlls
 586.271 +	CRegisteredMtmDllArray iRegisteredMtmDllArray;  // Inline CArray, OK because no NewL();
 586.272 +	TTimeIntervalMicroSeconds32 iTimeoutMicroSeconds32;
 586.273 +	};
 586.274 +
 586.275 +
 586.276 +#include <msvreg.inl>
 586.277 +
 586.278 +#endif
   587.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   587.2 +++ b/epoc32/include/mw/msvruids.h	Wed Mar 31 12:27:01 2010 +0100
   587.3 @@ -0,0 +1,99 @@
   587.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   587.5 +// All rights reserved.
   587.6 +// This component and the accompanying materials are made available
   587.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   587.8 +// which accompanies this distribution, and is available
   587.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  587.10 +//
  587.11 +// Initial Contributors:
  587.12 +// Nokia Corporation - initial contribution.
  587.13 +//
  587.14 +// Contributors:
  587.15 +//
  587.16 +// Description:
  587.17 +//
  587.18 +
  587.19 +
  587.20 +
  587.21 +/**
  587.22 + @file
  587.23 + @publishedAll
  587.24 + @released
  587.25 +*/
  587.26 +#if !defined(__MSVREGUD_H__)
  587.27 +#define __MSVREGUD_H__
  587.28 +
  587.29 +#include <e32base.h>
  587.30 +#include <msvstd.hrh>
  587.31 +
  587.32 +/**
  587.33 +* @internalAll
  587.34 +* @released
  587.35 +*/
  587.36 +const TInt KMsvNumMtmDllTypes=4;
  587.37 +/**
  587.38 +* @internalAll
  587.39 +* @released
  587.40 +*/
  587.41 +const TUid KUidMsvDataComponent     ={0x10003C69};
  587.42 +// Server-side MTM 
  587.43 +/**
  587.44 +* @publishedAll
  587.45 +* @released
  587.46 +*/
  587.47 +const TUid KUidMtmServerComponent	={KUidMtmServerComponentVal};
  587.48 +// Client-side MTM 
  587.49 +/**
  587.50 +* @publishedAll
  587.51 +* @released
  587.52 +*/
  587.53 +const TUid KUidMtmClientComponent	={KUidMtmClientComponentVal};
  587.54 +// User Interface MTM
  587.55 +/**
  587.56 +* @internalAll
  587.57 +* @released
  587.58 +*/
  587.59 +const TUid KUidMtmUiComponent		={KUidMtmUiComponentVal};
  587.60 +// UI Data MTM 
  587.61 +/**
  587.62 +* @internalAll
  587.63 +* @released
  587.64 +*/
  587.65 +const TUid KUidMtmUiDataComponent	={KUidMtmUiDataComponentVal};
  587.66 +/**
  587.67 +* @internalTechnology
  587.68 +* @released
  587.69 +*/
  587.70 +const TUid KMsvDllType1Uid={0x10003C62}; 
  587.71 +/**
  587.72 +* @internalTechnology
  587.73 +* @released
  587.74 +*/
  587.75 +const TUid KMsvDllType2Uid={0x10003C63};
  587.76 +/**
  587.77 +* @internalTechnology
  587.78 +* @released
  587.79 +*/
  587.80 +const TUid KMsvDllType3Uid={0x10003C64};
  587.81 +/**
  587.82 +* @internalTechnology
  587.83 +* @released
  587.84 +*/
  587.85 +const TUid KMsvDllType4Uid={0x10003C65};
  587.86 +/**
  587.87 +* @internalTechnology
  587.88 +* @released
  587.89 +*/
  587.90 +const TUid KMsvDllType5Uid={0x10003C66};
  587.91 +/**
  587.92 +* @internalTechnology
  587.93 +* @released
  587.94 +*/
  587.95 +const TUid KMsvDllType6Uid={0x10003C67};
  587.96 +/**
  587.97 +* @internalComponent
  587.98 +* @released
  587.99 +*/
 587.100 +const TUid KUidMtmMultipleComponent	={0x10004845}; 
 587.101 +
 587.102 +#endif
   588.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   588.2 +++ b/epoc32/include/mw/msvscheduledentry.h	Wed Mar 31 12:27:01 2010 +0100
   588.3 @@ -0,0 +1,158 @@
   588.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   588.5 +// All rights reserved.
   588.6 +// This component and the accompanying materials are made available
   588.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   588.8 +// which accompanies this distribution, and is available
   588.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  588.10 +//
  588.11 +// Initial Contributors:
  588.12 +// Nokia Corporation - initial contribution.
  588.13 +//
  588.14 +// Contributors:
  588.15 +//
  588.16 +// Description:
  588.17 +//
  588.18 +
  588.19 +#ifndef __MSVSCHEDULEDENTRY_H__
  588.20 +#define __MSVSCHEDULEDENTRY_H__
  588.21 +
  588.22 +#include <msvsenderroraction.h>
  588.23 +#include <msventryscheduledata.h>
  588.24 +
  588.25 +/**
  588.26 +Abstract base class which stores the schedule data and recipients of a message. 
  588.27 +
  588.28 +CMsvScheduledEntry does not force the Server MTM to store the message 
  588.29 +recipients in a certain way. However, it is recommended that the Server MTM 
  588.30 +derive its recipients class from CMsvRecipient, because the class already has 
  588.31 +support for the number of retries to send a message to a recipient. 
  588.32 +
  588.33 +CMsvScheduledEntry stores the TMsvEntry to which it relates to provide quick 
  588.34 +access to the scheduling-related index data without needing calls to 
  588.35 +CMsvServerEntry::SetEntry(). 
  588.36 +However, CMsvScheduledEntry does not provide access to all the members of 
  588.37 +the TMsvEntry. This is to stop the user of the CMsvScheduledEntry from 
  588.38 +accessing the descriptor members of the TMsvEntry while the server entry is 
  588.39 +not set to the TMsvEntry. 
  588.40 +
  588.41 +@publishedAll
  588.42 +@released
  588.43 +*/
  588.44 +
  588.45 +class CMsvScheduledEntry : public CBase
  588.46 +	{
  588.47 +public:
  588.48 +	/**
  588.49 +	Tests if any of the recipients of this message can still be sent to.
  588.50 +	
  588.51 +	@param aErrorActions
  588.52 +	Error-actions
  588.53 +	
  588.54 +	@param aAction 
  588.55 +	Default error-action
  588.56 +	
  588.57 +	@return True if at least one of the recipients has not been sent 
  588.58 +	the message.
  588.59 +	*/
  588.60 +	virtual TBool CanSendToAnyRecipients(const CMsvSendErrorActions& aErrorActions, TMsvSendErrorAction& aAction) = 0;
  588.61 +
  588.62 +	/**
  588.63 +	Tests if any of the recipients of this message can still be sent to.
  588.64 +	
  588.65 +	@param aAction
  588.66 +	Default error-action
  588.67 +	
  588.68 +	@return True if at least one of the recipients has not been sent 
  588.69 +	the message.
  588.70 +	*/
  588.71 +	virtual TBool CanSendToAnyRecipients(const TMsvSendErrorAction& aAction) = 0;
  588.72 +	
  588.73 +	/**
  588.74 +	Sets all the recipients' retries to zero.
  588.75 +	*/
  588.76 +	virtual void RecipientsResetRetries() = 0;
  588.77 +	
  588.78 +	/**
  588.79 +	Increases all the recipients' retries by one.
  588.80 +	*/
  588.81 +	virtual void RecipientsIncreaseRetries() = 0;
  588.82 +	
  588.83 +	/**
  588.84 +	Sets all the recipients' flags to sending failed.
  588.85 +	*/
  588.86 +	virtual void RecipientsSetFailed() = 0;
  588.87 +	
  588.88 +	/**
  588.89 +	Tests if all recipients of the message have been sent successfully. 
  588.90 +	
  588.91 +	@return True if all recipients have been sent successfully.
  588.92 +	*/
  588.93 +	virtual TBool RecipientsAllSent() const = 0;
  588.94 +
  588.95 +	IMPORT_C virtual void StoreL(CMsvStore& aStore) const;
  588.96 +	IMPORT_C virtual void RestoreL(CMsvStore& aStore);
  588.97 +
  588.98 +	/**
  588.99 +	Stores the recipients.
 588.100 +	
 588.101 +	@param aStore
 588.102 +	Store to write to.
 588.103 +	*/
 588.104 +	virtual void RecipientsStoreL(CMsvStore& aStore) const = 0;
 588.105 +	
 588.106 +	/**
 588.107 +	Restores the recipients.
 588.108 +	
 588.109 +	@param aStore
 588.110 +	Store to read from.
 588.111 +	*/
 588.112 +	virtual void RecipientsRestoreL(CMsvStore& aStore) = 0;
 588.113 +
 588.114 +	inline const TTime& ScheduleDate() const;
 588.115 +	inline void SetScheduleDate(const TTime& aDate);
 588.116 +
 588.117 +	inline const TBool Scheduled() const;
 588.118 +	inline void SetScheduled(const TBool aScheduled);
 588.119 +
 588.120 +	inline const TInt SendingState() const;
 588.121 +	inline void SetSendingState(TInt aState);
 588.122 +
 588.123 +	inline const TInt Error() const;
 588.124 +	inline const TMsvId Id() const;
 588.125 +	inline const TBool OffPeak() const;
 588.126 +
 588.127 +	inline void SetFailed(const TBool aFail);
 588.128 +	inline const TBool Failed() const;
 588.129 +	
 588.130 +	IMPORT_C TBool PendingConditions() const;
 588.131 +	IMPORT_C void SetPendingConditions(TBool aPendingConditions);
 588.132 +
 588.133 +	inline const TUid Mtm() const;
 588.134 +
 588.135 +	IMPORT_C void Entry(TMsvEntry& aEntry) const;
 588.136 +
 588.137 +protected:
 588.138 +
 588.139 +	IMPORT_C CMsvScheduledEntry(const TMsvEntry& aEntry);
 588.140 +
 588.141 +public:
 588.142 +
 588.143 +	/** Message schedule data. */
 588.144 +	TMsvEntryScheduleData iData;
 588.145 +
 588.146 +private:
 588.147 +
 588.148 +	TMsvEntry iEntry;
 588.149 +	};
 588.150 +
 588.151 +/**
 588.152 +Dynamic array of CMsvScheduledEntry objects. 
 588.153 +
 588.154 +@publishedAll
 588.155 +@released
 588.156 +*/
 588.157 +typedef CArrayPtrFlat<CMsvScheduledEntry> CMsvScheduledEntries;
 588.158 +
 588.159 +#include <msvscheduledentry.inl>
 588.160 +
 588.161 +#endif
   589.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   589.2 +++ b/epoc32/include/mw/msvschedulepackage.h	Wed Mar 31 12:27:01 2010 +0100
   589.3 @@ -0,0 +1,83 @@
   589.4 +/// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   589.5 +/// All rights reserved.
   589.6 +/// This component and the accompanying materials are made available
   589.7 +/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   589.8 +/// which accompanies this distribution, and is available
   589.9 +/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  589.10 +///
  589.11 +/// Initial Contributors:
  589.12 +/// Nokia Corporation - initial contribution.
  589.13 +///
  589.14 +/// Contributors:
  589.15 +///
  589.16 +/// Description:
  589.17 +/// All rights reserved.
  589.18 +/// This component and the accompanying materials are made available
  589.19 +/// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  589.20 +/// which accompanies this distribution, and is available
  589.21 +/// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  589.22 +/// Initial Contributors:
  589.23 +/// Nokia Corporation - initial contribution.
  589.24 +/// Contributors:
  589.25 +///
  589.26 +
  589.27 +#ifndef MSV_SCHEDULE_PACKAGE_H_
  589.28 +#define MSV_SCHEDULE_PACKAGE_H_
  589.29 +
  589.30 +/////////////////////////////////////////////////////////////////////////////
  589.31 +//
  589.32 +//	TMsvSchedulePackage Declaration
  589.33 +//
  589.34 +/////////////////////////////////////////////////////////////////////////////
  589.35 +
  589.36 +const TInt KMaxParameterLength = 256;
  589.37 +
  589.38 +class TTaskInfo;
  589.39 +
  589.40 +
  589.41 +/**
  589.42 +Packaged message scheduling information. 
  589.43 +
  589.44 +@publishedAll
  589.45 +@released
  589.46 +*/
  589.47 +
  589.48 +class TMsvSchedulePackage
  589.49 +	{
  589.50 +public:
  589.51 +	IMPORT_C TMsvSchedulePackage();
  589.52 +	
  589.53 +	IMPORT_C void PackLC(TTaskInfo& aTask, HBufC*& aDes) const;
  589.54 +	IMPORT_C void UnpackL(const TTaskInfo& aTask, const TDesC& aDes);
  589.55 +
  589.56 +private:
  589.57 +
  589.58 +	HBufC* PackLC() const;
  589.59 +	void UnpackL(const TDesC& aDes);
  589.60 +
  589.61 +	void ExternalizeL(RWriteStream&) const;
  589.62 +	void InternalizeL(RReadStream&);
  589.63 +
  589.64 +	TPtrC Convert(const TDesC8& aDes) const;
  589.65 +	TPtrC8 Convert(const TDesC16& aDes) const;
  589.66 +
  589.67 +public:
  589.68 +
  589.69 +	/** Message ID. */
  589.70 +	TMsvId iId;
  589.71 +
  589.72 +	/** Command ID to be passed to CMsvSession::TransferCommandL() when it is
  589.73 +	time to send the messages. */
  589.74 +	TInt iCommandId;
  589.75 +
  589.76 +	/** Intervals at which the scheduler should check the sending operation's
  589.77 +	progress. */
  589.78 +	TTimeIntervalMicroSeconds32 iPollProgress;
  589.79 +
  589.80 +	/** Server MTM specific binary data to be passed to 
  589.81 +	CMsvSession::TransferCommandL() when it is time to send the messages. */
  589.82 +	TBuf8<KMaxParameterLength> iParameter;
  589.83 +
  589.84 +	};
  589.85 +
  589.86 +#endif
   590.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   590.2 +++ b/epoc32/include/mw/msvschedulesend.h	Wed Mar 31 12:27:01 2010 +0100
   590.3 @@ -0,0 +1,192 @@
   590.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   590.5 +// All rights reserved.
   590.6 +// This component and the accompanying materials are made available
   590.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   590.8 +// which accompanies this distribution, and is available
   590.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  590.10 +//
  590.11 +// Initial Contributors:
  590.12 +// Nokia Corporation - initial contribution.
  590.13 +//
  590.14 +// Contributors:
  590.15 +//
  590.16 +// Description:
  590.17 +//
  590.18 +
  590.19 +#ifndef __MSVSCHEDULESEND_H__
  590.20 +#define __MSVSCHEDULESEND_H__
  590.21 +
  590.22 +#ifdef _DEBUG
  590.23 +#undef _MSG_NO_LOGGING
  590.24 +#endif
  590.25 +
  590.26 + 
  590.27 +
  590.28 +
  590.29 +#include <e32base.h>
  590.30 +#include <msvstd.h>
  590.31 +#include <csch_cli.h>
  590.32 +#include <msvschedulepackage.h>
  590.33 +#include <msvscheduledentry.h>
  590.34 +
  590.35 +class CMsvEntrySelection;
  590.36 +class TMsvSchedulePackage;
  590.37 +class TMsvSendErrorAction;
  590.38 +class CMsvStore;
  590.39 +class TMsvEntry;
  590.40 +class CMsvOffPeakTimes;
  590.41 +class CMsvScheduleSettings;
  590.42 +class CMsvSendErrorActions;
  590.43 +class CMsvSysAgentActions;
  590.44 +class TMsvSchedulePackage;
  590.45 +class TMsvEntryScheduleData;
  590.46 +class CMsvServerEntry;
  590.47 +class CRepository;
  590.48 +
  590.49 +const TUid KUidMsvScheduledSendingDLL	= {0x100056A0};
  590.50 +const TInt KMsvSchsendArrayGrowth		= 10;
  590.51 +
  590.52 +#ifdef _MSG_NO_LOGGING
  590.53 +#define SCHSENDLOG(a)
  590.54 +#else
  590.55 +_LIT(KSchSendLogDir, "schsend");
  590.56 +_LIT(KSchSendLogFile,"SchSend.txt");
  590.57 +#define SCHSENDLOG(a) a
  590.58 +#endif
  590.59 +
  590.60 +/** 
  590.61 +Provides a Server MTM's interface to the Task Scheduler for messaging 
  590.62 +scheduling.
  590.63 +
  590.64 +Server MTM's must provide a derived class that implements GetMessageL() to 
  590.65 +provide a factory for MTM-specific scheduling CMsvScheduledEntry-based objects. 
  590.66 +
  590.67 +@publishedAll
  590.68 +@released
  590.69 +*/
  590.70 +class CMsvScheduleSend : public CBase
  590.71 +	{
  590.72 +public:
  590.73 +	IMPORT_C ~CMsvScheduleSend();
  590.74 +
  590.75 +	IMPORT_C void ScheduleL(const CMsvEntrySelection& aSelection, const TMsvSchedulePackage& aPackage);
  590.76 +
  590.77 +	IMPORT_C void ReScheduleL(const CMsvEntrySelection& aSelection, const TMsvSchedulePackage& aPackage, const TMsvSendErrorAction* aErrorAction = NULL);
  590.78 +
  590.79 +	IMPORT_C void CheckScheduleL(const CMsvEntrySelection& aSelection);
  590.80 +	IMPORT_C void DeleteScheduleL(const CMsvEntrySelection& aSelection);
  590.81 +
  590.82 +	IMPORT_C void SendingCompleteL(TMsvEntry& aEntry, const TBool aChangeEntry = EFalse);
  590.83 +	IMPORT_C void SendingCompleteL(const CMsvEntrySelection& aSelection);
  590.84 +
  590.85 +
  590.86 +	inline CMsvOffPeakTimes& OffPeakTimes() const;
  590.87 +	inline CMsvScheduleSettings& ScheduleSettings() const;
  590.88 +	inline CMsvSendErrorActions& SendErrorActions() const;
  590.89 +	inline CMsvSysAgentActions& AgentActions() const;
  590.90 +
  590.91 +	IMPORT_C static void CreateScheduleL(RScheduler& aScheduler, const CMsvScheduleSettings& aSettings, const TTime& aStartTime, const TTimeIntervalMinutes& aValidityPeriod, TSchedulerItemRef& aRef);
  590.92 +	IMPORT_C static void CreateScheduleL(RScheduler& aScheduler, const CArrayFixFlat<TTaskSchedulerCondition>& aConditions, const TTime& aTimeout, TSchedulerItemRef& aRef);
  590.93 +	IMPORT_C static void FindScheduleL(RScheduler& aScheduler, const TTime& aStartTime, TSchedulerItemRef& aRef);
  590.94 +	IMPORT_C static void FindScheduleL(RScheduler& aScheduler, const CArrayFixFlat<TTaskSchedulerCondition>& aConditions, const TTime& aTimeout, TSchedulerItemRef& aRef);
  590.95 +	IMPORT_C static void RoundUpToMinute(TTime& aTime);
  590.96 +	IMPORT_C static void ScheduleEntryL(RScheduler& aScheduler, const TSchedulerItemRef& aRef, const TMsvSchedulePackage& aPackage, TTaskInfo& aInfo);
  590.97 +	IMPORT_C static void UpdateEntryAfterSchedule(const TSchedulerItemRef& aRef, const TTaskInfo& aInfo, const TTime& aTime, TInt aFinalState, TMsvEntry& aEntry, TMsvEntryScheduleData& aData);
  590.98 +	IMPORT_C static void ConnectAndRegisterL(RScheduler& aScheduler, const CMsvScheduleSettings& aSettings);
  590.99 +
 590.100 +	IMPORT_C void LoadScheduleSettingsL(CRepository& aRepository);
 590.101 +
 590.102 +protected:
 590.103 +
 590.104 +	IMPORT_C CMsvScheduleSend(CMsvServerEntry& aServerEntry);
 590.105 +	IMPORT_C virtual void ConstructL();
 590.106 +
 590.107 +/**
 590.108 +Gets the schedule data and recipients of a message.
 590.109 +
 590.110 +Recipient information is MTM-specific, so the server MTM must provide a 
 590.111 +derived class that implements CMsvScheduledEntry, and return objects of 
 590.112 +that type from this function.
 590.113 +
 590.114 +@param	aId 
 590.115 +The message ID.
 590.116 +
 590.117 +@return 
 590.118 +The message's schedule data.
 590.119 +*/
 590.120 +	virtual CMsvScheduledEntry* GetMessageL(const TMsvId aId) const = 0;
 590.121 +
 590.122 +private:
 590.123 +
 590.124 +	enum
 590.125 +		{
 590.126 +		EDefaultTaskPriority	= 1, //used when scheduling a task in the task scheduler
 590.127 +		EDefaultTaskRepeat		= 0	 //used when scheduling a task in the task scheduler
 590.128 +		};
 590.129 +	
 590.130 +	void SendingCompleteL(CMsvScheduledEntry& aScheduledEntry, const TBool aChangeEntry);
 590.131 +
 590.132 +	TBool GetNextRetry(CMsvScheduledEntry& aMessage, const TMsvSendErrorAction& aErrorAction, TTimeIntervalSeconds& aInterval) const;
 590.133 +
 590.134 +	void DoScheduleL(CMsvScheduledEntries& aSchEntries, const TInt aFinalState, const TTime& aTime, TBool aPendingConditions);
 590.135 +	void DoReScheduleL(CMsvScheduledEntries& aSchEntries);
 590.136 +	
 590.137 +	void GetMessagesL(const CMsvEntrySelection& aSelection);
 590.138 +
 590.139 +	void ConnectAndRegisterL();
 590.140 +
 590.141 +	void ScheduleEntryL(CMsvScheduledEntry& aMessage, const TInt aFinalState, const TTime& aStartTime, const TSchedulerItemRef& aRef, TBool aPendingConditions);
 590.142 +
 590.143 +	void GetOffPeakL(TTime aFromTime, TTime& aStartTime, TTimeIntervalMinutes& aValidityPeriod) const;
 590.144 +	
 590.145 +	void DeleteScheduleForEntryL(CMsvScheduledEntry& aMessage);
 590.146 +	void ResetScheduleInfoForEntryL(CMsvScheduledEntry& aMessage, const TBool aChangeEntry);
 590.147 +	void SortByDateAndPendingConditionsL(CMsvScheduledEntries& aScheduledEntries);
 590.148 +	void CreateScheduleL(const TTime& aStartTime, const TTimeIntervalMinutes& aValidityPeriod, const CArrayFixFlat<TTaskSchedulerCondition>& aSchConditions, TBool aPendingConditions, TSchedulerItemRef& aRef);
 590.149 +	void FindScheduleL(const TTime& aTime, const CArrayFixFlat<TTaskSchedulerCondition>& aSchConditions, TBool aPendingConditions, TSchedulerItemRef& aRef);
 590.150 +
 590.151 +	void PopulateScheduleConditionsL(CArrayFixFlat<TTaskSchedulerCondition>& aSchConditions);
 590.152 +	TBool SetMessageStartTime(CMsvScheduledEntry& aMessage, const TTime& aFromTime, const TMsvSendErrorAction* aErrorAction = NULL);
 590.153 +
 590.154 +	TBool TaskAndMessageMatchL(const CMsvScheduledEntry& aMessage);
 590.155 +	TMsvId GetMessageIdForTaskL(TInt aTaskId);
 590.156 +#ifndef _MSG_NO_LOGGING
 590.157 +	void FLog(TRefByValue<const TDesC> aFormat, ...);
 590.158 +	void FLog(TRefByValue<const TDesC8> aFormat, ...);
 590.159 +#endif
 590.160 +
 590.161 +protected:
 590.162 +
 590.163 +	/** The Server MTM specific scheduled message sending settings. */
 590.164 +	CMsvScheduleSettings*	iSettings;
 590.165 +	/** The Server MTM specific off peak time periods. */
 590.166 +	CMsvOffPeakTimes*		iOffPeakTimes;
 590.167 +	/** The Server MTM specific actions to take when particular errors occur during 
 590.168 +	message sending. */
 590.169 +	CMsvSendErrorActions*	iErrorActions;
 590.170 +	/** The System Agent conditions that must be satisfied before a sending attempt. */
 590.171 +	CMsvSysAgentActions*	iAgentActions;
 590.172 +
 590.173 +	/** Indicates if this has been registered with the Task Scheduler. 
 590.174 +	
 590.175 +	Initially set to EFalse. */
 590.176 +	TBool					iRegistered;	
 590.177 +	/** Provides an interface to the Task Scheduler. */
 590.178 +	RScheduler				iScheduler;	
 590.179 +	/** The CMsvServerEntry of the server MTM. */
 590.180 +	CMsvServerEntry&		iServerEntry;
 590.181 +	/** Scheduling options. */
 590.182 +	TMsvSchedulePackage		iPackage;
 590.183 +
 590.184 +	/** Array of message schedule data. */
 590.185 +	CMsvScheduledEntries*	iSchEntries;
 590.186 +
 590.187 +	/** Array of schedule entry data. */
 590.188 +	CArrayFixFlat<TScheduleEntryInfo2>* iSchEntryInfo;
 590.189 +	/** Array of schedule task data. */
 590.190 +	CArrayFixFlat<TTaskInfo>* iSchTaskInfo;
 590.191 +	};
 590.192 +
 590.193 +#include <msvschedulesend.inl>
 590.194 +
 590.195 +#endif
   591.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   591.2 +++ b/epoc32/include/mw/msvschedulesettings.h	Wed Mar 31 12:27:01 2010 +0100
   591.3 @@ -0,0 +1,118 @@
   591.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   591.5 +// All rights reserved.
   591.6 +// This component and the accompanying materials are made available
   591.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   591.8 +// which accompanies this distribution, and is available
   591.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  591.10 +//
  591.11 +// Initial Contributors:
  591.12 +// Nokia Corporation - initial contribution.
  591.13 +//
  591.14 +// Contributors:
  591.15 +//
  591.16 +// Description:
  591.17 +//
  591.18 +
  591.19 +#ifndef __MSVSCHEDULESETTINGS_H__
  591.20 +#define __MSVSCHEDULESETTINGS_H__
  591.21 +
  591.22 + 
  591.23 +
  591.24 +
  591.25 +#include <msvrcpt.h>
  591.26 +#include <schinfo.h>
  591.27 +#include <msvsenderroraction.h>
  591.28 +
  591.29 +
  591.30 +
  591.31 +
  591.32 +
  591.33 +/**
  591.34 +Stores the MTM-specific (general) settings for scheduling messages on the
  591.35 +Task Scheduler. 
  591.36 +
  591.37 +These settings include the latency (minimum amount of time between now and when
  591.38 +the message is scheduled for), the intervals (short, long or variable) to wait 
  591.39 +for before attempting to re-send the message and the timout value for messages
  591.40 +pending conditions to be met.
  591.41 +
  591.42 +The other MTM scheduling releated settings are stored in CMsvOffPeakTimes 
  591.43 +and CMsvSendErrorActions. 
  591.44 +
  591.45 +@publishedAll
  591.46 +@released
  591.47 +*/
  591.48 +
  591.49 +class CMsvScheduleSettings : public CBase
  591.50 +	{
  591.51 +public:
  591.52 +
  591.53 +	IMPORT_C static CMsvScheduleSettings* NewL();
  591.54 +	IMPORT_C static CMsvScheduleSettings* NewLC();	
  591.55 +	IMPORT_C ~CMsvScheduleSettings();
  591.56 +
  591.57 +
  591.58 +	IMPORT_C void Reset();
  591.59 +
  591.60 +
  591.61 +	IMPORT_C void SetPriority(const TInt aPriority);
  591.62 +	IMPORT_C TInt Priority() const;
  591.63 +
  591.64 +	IMPORT_C void SetValidityPeriod(const TTimeIntervalMinutes& aValidityPeriod);
  591.65 +	IMPORT_C const TTimeIntervalMinutes& ValidityPeriod() const;
  591.66 +
  591.67 +	IMPORT_C void SetIntervalType(const TIntervalType aIntervalType);
  591.68 +	IMPORT_C TIntervalType IntervalType() const;
  591.69 +
  591.70 +	IMPORT_C void SetLongInterval(const TTimeIntervalSeconds& aInterval);
  591.71 +	IMPORT_C const TTimeIntervalSeconds& LongInterval() const;
  591.72 +	
  591.73 +	IMPORT_C void SetShortInterval(const TTimeIntervalSeconds& aInterval);
  591.74 +	IMPORT_C const TTimeIntervalSeconds& ShortInterval() const;
  591.75 +
  591.76 +	IMPORT_C const CArrayFixFlat<TTimeIntervalSeconds>& VariableIntervals() const;
  591.77 +	IMPORT_C void SetVariableIntervalsL(const CArrayFixFlat<TTimeIntervalSeconds>& aIntervals);
  591.78 +
  591.79 +	IMPORT_C const TTimeIntervalMicroSeconds32& Latency() const;
  591.80 +	IMPORT_C void SetLatency(const TTimeIntervalMicroSeconds32& aLatency);
  591.81 +	
  591.82 +	IMPORT_C void SetPendingConditionsTimeout(const TTimeIntervalMinutes& aTimeout);
  591.83 +	IMPORT_C const TTimeIntervalMinutes& PendingConditionsTimeout() const;
  591.84 +
  591.85 +	/** Default scheduler settings values. */
  591.86 +	enum
  591.87 +		{
  591.88 +		/** Default priority. */
  591.89 +		EDefaultPriority		= 27,
  591.90 +		/** Default validity period: 10080 Minutes in 1 week. */
  591.91 +		EDefaultValidityPeriod	= 10080,
  591.92 +		/** Default interval type: EYearly */	
  591.93 +		EDefaultIntervalType	= 3,
  591.94 +		/** Default short retry interval. */		
  591.95 +		EDefaultShortInterval	= 5,
  591.96 +		/** Default long retry interval. */
  591.97 +		EDefaultLongInterval	= 120,
  591.98 +		/** Default latency. */
  591.99 +		EDefaultLatency			= 1500000,
 591.100 +		/** Default timeout. Zero minutes - no timeout. */
 591.101 +		EDefaultPendingConditionsTimeout	= 0
 591.102 +		};
 591.103 +
 591.104 +private:
 591.105 +	CMsvScheduleSettings();
 591.106 +
 591.107 +	void ConstructL();
 591.108 +
 591.109 +
 591.110 +	TInt					iPriority;		//Priority of the schedules on the task scheduler
 591.111 +	TTimeIntervalMinutes	iValidityPeriod;//Validity period of message on the task scheduler
 591.112 +	TIntervalType			iIntervalType;	//See TIntervalType declaration and Task Scheduler user documentation
 591.113 +	TTimeIntervalMicroSeconds32 iLatency;		//Minimum amount of time between now and when the message is scheduled for. Cannot be negative.
 591.114 +	TTimeIntervalMinutes	iPendingConditionsTimeout;
 591.115 +
 591.116 +	TTimeIntervalSeconds iLongInterval;
 591.117 +	TTimeIntervalSeconds iShortInterval;
 591.118 +	CArrayFixFlat<TTimeIntervalSeconds>* iVariableIntervals;
 591.119 +	};
 591.120 +
 591.121 +#endif	// __MSVSCHEDULESETTINGS_H__
   592.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   592.2 +++ b/epoc32/include/mw/msvsenderroraction.h	Wed Mar 31 12:27:01 2010 +0100
   592.3 @@ -0,0 +1,146 @@
   592.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   592.5 +// All rights reserved.
   592.6 +// This component and the accompanying materials are made available
   592.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   592.8 +// which accompanies this distribution, and is available
   592.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  592.10 +//
  592.11 +// Initial Contributors:
  592.12 +// Nokia Corporation - initial contribution.
  592.13 +//
  592.14 +// Contributors:
  592.15 +//
  592.16 +// Description:
  592.17 +//
  592.18 +
  592.19 +#ifndef __MSVSENDERRORACTION_H__
  592.20 +#define __MSVSENDERRORACTION_H__
  592.21 +
  592.22 + 
  592.23 +
  592.24 +
  592.25 +/////////////////////////////////////////////////////////////////////////////
  592.26 +//
  592.27 +//	Includes
  592.28 +//
  592.29 +/////////////////////////////////////////////////////////////////////////////
  592.30 +
  592.31 +#include <schsend.hrh>
  592.32 +#include <barsread.h>
  592.33 +#include <msvstore.h>
  592.34 +
  592.35 +/////////////////////////////////////////////////////////////////////////////
  592.36 +//
  592.37 +//	Constants
  592.38 +//
  592.39 +/////////////////////////////////////////////////////////////////////////////
  592.40 +
  592.41 +
  592.42 +/////////////////////////////////////////////////////////////////////////////
  592.43 +//
  592.44 +//	TMsvSendErrorAction Declaration
  592.45 +//
  592.46 +/////////////////////////////////////////////////////////////////////////////
  592.47 +
  592.48 +/**
  592.49 +Encapsulates the action to take for a particular error. 
  592.50 +
  592.51 +An error may occur when the Server MTM is attempting to send a message or 
  592.52 +messages. If the Server MTM supports scheduling, then, depending on the error 
  592.53 +or conditions, the Server MTM may want to re-schedule the message on the Task 
  592.54 +Scheduler to send at a later time. CMsvScheduleSend::ReScheduleL() 
  592.55 +(in combination with CMsvSendErrorActions) uses the TMsvSendErrorAction 
  592.56 +to determine whether to re-schedule the message. 
  592.57 +
  592.58 +@publishedAll
  592.59 +@released
  592.60 +*/
  592.61 +
  592.62 +class TMsvSendErrorAction
  592.63 +	{
  592.64 +public:
  592.65 +	IMPORT_C TMsvSendErrorAction();
  592.66 +
  592.67 +	IMPORT_C void Reset();
  592.68 +
  592.69 +	IMPORT_C void SetMaxRetries(const TInt16 aMaxRetries);
  592.70 +	IMPORT_C TInt16 MaxRetries() const;
  592.71 +
  592.72 +	/** The error. */
  592.73 +	TInt					iError;
  592.74 +
  592.75 +	/** The action to take if this error occurs. */
  592.76 +	TMsvSendAction			iAction;
  592.77 +
  592.78 +	/** The number of attempts to make at sending a message if this error occurs. 
  592.79 +	
  592.80 +	If iRetries equals ESendRetriesInfinite, then sending will be attempted until 
  592.81 +	successful (or the user intervenes). This member is ignored if iAction equals 
  592.82 +	ESendActionFail. */
  592.83 +	TMsvSendRetries			iRetries;
  592.84 +
  592.85 +	/** Retry behaviour.
  592.86 +	
  592.87 +	This member is used by CMsvSendErrorActions to determine when to resend the 
  592.88 +	message. This member is ignored if iAction equals ESendActionFail. */
  592.89 +	TMsvSendRetrySpacing	iRetrySpacing;
  592.90 +
  592.91 +private:
  592.92 +	TInt16	iMaxRetries;
  592.93 +	};
  592.94 +
  592.95 +
  592.96 +/////////////////////////////////////////////////////////////////////////////
  592.97 +//
  592.98 +// CMsvSendErrorActions
  592.99 +//
 592.100 +/////////////////////////////////////////////////////////////////////////////
 592.101 +
 592.102 +/**
 592.103 +This class determines what action to take if an error occurs while the Server 
 592.104 +MTM is sending a message (or messages).
 592.105 +
 592.106 +It encapsulates an array of TMsvSendErrorAction objects, which it uses to 
 592.107 +determine the action to take for a particular error. If the error is not 
 592.108 +found in the array, then CMsvSendErrorActions uses its default 
 592.109 +TMsvSendErrorAction object. 
 592.110 +
 592.111 +@publishedAll
 592.112 +@released
 592.113 +*/
 592.114 +
 592.115 +class CMsvSendErrorActions : public CBase
 592.116 +	{
 592.117 +public:
 592.118 +	IMPORT_C static CMsvSendErrorActions* NewL();
 592.119 +	IMPORT_C static CMsvSendErrorActions* NewLC();	
 592.120 +	IMPORT_C ~CMsvSendErrorActions();
 592.121 +
 592.122 +	IMPORT_C void AddSendErrorActionL(const TMsvSendErrorAction& aErrorAction);
 592.123 +	IMPORT_C TInt RemoveSendErrorAction(const TInt aError);
 592.124 +	IMPORT_C TInt GetSendErrorAction(const TInt aError, TMsvSendErrorAction& aErrorAction) const;
 592.125 +	
 592.126 +	IMPORT_C void Reset();
 592.127 +
 592.128 +	IMPORT_C void RestoreFromResourceL(TResourceReader& aReader);
 592.129 +
 592.130 +	IMPORT_C void SetErrorsL(const CArrayFixFlat<TMsvSendErrorAction>& aErrors);
 592.131 +	IMPORT_C const CArrayFixFlat<TMsvSendErrorAction>& Errors() const;
 592.132 +
 592.133 +	IMPORT_C const TMsvSendErrorAction& Default() const;
 592.134 +	IMPORT_C void SetDefault(const TMsvSendErrorAction& aAction);
 592.135 +
 592.136 +private:
 592.137 +	CMsvSendErrorActions();
 592.138 +	void ConstructL();
 592.139 +	void RestoreErrorActionL(TResourceReader& aReader, TInt aActionCount, const TBool aDefault);
 592.140 +
 592.141 +
 592.142 +	TInt Find(const TInt aError, TInt& aIndex) const;
 592.143 +
 592.144 +	
 592.145 +	CArrayFixFlat<TMsvSendErrorAction>* iErrors;
 592.146 +	TMsvSendErrorAction iDefault;
 592.147 +	};
 592.148 +
 592.149 +#endif	// __MSVSENDERRORACTION_H__
   593.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   593.2 +++ b/epoc32/include/mw/msvstd.h	Wed Mar 31 12:27:01 2010 +0100
   593.3 @@ -0,0 +1,616 @@
   593.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   593.5 +// All rights reserved.
   593.6 +// This component and the accompanying materials are made available
   593.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   593.8 +// which accompanies this distribution, and is available
   593.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  593.10 +//
  593.11 +// Initial Contributors:
  593.12 +// Nokia Corporation - initial contribution.
  593.13 +//
  593.14 +// Contributors:
  593.15 +//
  593.16 +// Description:
  593.17 +//
  593.18 +
  593.19 +#ifndef __MSVSTD_H__
  593.20 +#define __MSVSTD_H__
  593.21 +
  593.22 + 
  593.23 +
  593.24 +
  593.25 +#include <e32base.h>
  593.26 +#include <s32file.h>
  593.27 +
  593.28 +/**
  593.29 +Specifies an entry in the Message Server index.
  593.30 +@publishedAll
  593.31 +@released
  593.32 +@see #KMsvNullIndexEntryId
  593.33 +@see #KMsvTempIndexEntryId
  593.34 +@see #KMsvRootIndexEntryId
  593.35 +@see #KMsvLocalServiceIndexEntryId
  593.36 +@see #KMsvGlobalInBoxIndexEntryId
  593.37 +@see #KMsvGlobalOutBoxIndexEntryId
  593.38 +@see #KMsvDraftEntryId
  593.39 +@see #KMsvSentEntryId
  593.40 +@see #KMsvDeletedEntryFolderEntryId
  593.41 +@see #KMsvUnknownServiceIndexEntryId
  593.42 +*/
  593.43 +typedef TInt32 TMsvId;
  593.44 +
  593.45 +/** Identifies an asynchronous messaging operation. 
  593.46 +
  593.47 +This ID is unique within a 
  593.48 +Message Server session. The ID of an operation can be obtained from CMsvOperation::Id(). */
  593.49 +typedef TInt32 TMsvOp;
  593.50 +
  593.51 +/** Supplies the standard values for the message priority index entry field. 
  593.52 +@publishedAll
  593.53 +@released
  593.54 +*/
  593.55 +enum TMsvPriority {	
  593.56 +	/** High message priority */
  593.57 +					EMsvHighPriority,
  593.58 +	/** Medium message priority */
  593.59 +					EMsvMediumPriority,
  593.60 +	/** Low message priority */
  593.61 +					EMsvLowPriority};	
  593.62 +
  593.63 +class CRichText;
  593.64 +class CMsvStore;
  593.65 +class CMsvEntry;
  593.66 +class CMsvMove;
  593.67 +class CMsvServer;
  593.68 +class CMsvServerEntry;
  593.69 +
  593.70 +_LIT(KMsvDefaultFolder, "\\Private\\1000484b\\Mail\\");
  593.71 +_LIT(KMsvDefaultIndexFile, "\\Private\\1000484b\\Mail\\Index");
  593.72 +_LIT(KMsvDefaultFolder2, "\\Private\\1000484b\\Mail2\\");
  593.73 +_LIT(KMsvDefaultIndexFile2, "\\Private\\1000484b\\Mail2\\Index");
  593.74 +_LIT(KMsvDirectoryExt, "_S\\");
  593.75 +_LIT(KMsvBinaryFolderExt, "_F\\");
  593.76 +
  593.77 +const TInt KFileNameFixedWidth=8;
  593.78 +const TInt KMaxSubjectSkipStringLength=8; // For subject based email thread sorting
  593.79 +_LIT(KSendAsRenderedImage, "Image");
  593.80 +
  593.81 +// Server name and moving semaphore
  593.82 +_LIT(KMsvServerName, "!MsvServer");
  593.83 +_LIT(KMsvMovingSemaphore, "MsvMovingSemaphore");
  593.84 +
  593.85 +_LIT_SECURE_ID(KMsvServerId, 0x1000484B);
  593.86 +
  593.87 +
  593.88 +/** Represents an entry in the Message Server index.
  593.89 +
  593.90 +MTM implementations and message client applications use it to access and manipulate 
  593.91 +index entry values. Note that a TMsvEntry is effectively a local cache of 
  593.92 +the index entry, and changes to it are not automatically written into the 
  593.93 +index. To commit changes to the Message Server, you need to call CMsvEntry::ChangeL() 
  593.94 +(or CMsvServerEntry::ChangeEntry()).
  593.95 +
  593.96 +To avoid repetition, the functions and data members are simply listed here, 
  593.97 +without detailed explanation of the fields. The public data members can be 
  593.98 +used to get and set the values of some index entry fields. 
  593.99 +@publishedAll
 593.100 +@released
 593.101 +*/
 593.102 +class TMsvEntry
 593.103 +	{
 593.104 +public: 
 593.105 +	IMPORT_C TMsvEntry(); 
 593.106 +	IMPORT_C TMsvEntry(const TMsvEntry& aEntry);
 593.107 +	IMPORT_C TMsvEntry& operator=(const TMsvEntry& aEntry);
 593.108 +	IMPORT_C TBool operator==(const TMsvEntry& aEntry) const;
 593.109 +	IMPORT_C TBool PermanentDataUnchanged(const TMsvEntry& aEntry) const;
 593.110 +	//
 593.111 +	IMPORT_C TMsvPriority Priority() const;
 593.112 +	IMPORT_C void SetPriority(TMsvPriority aPriority);
 593.113 +	// 
 593.114 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 593.115 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 593.116 +	// Read only for clients
 593.117 +	inline TMsvId Id() const;
 593.118 +	inline TMsvId Parent() const;
 593.119 +	inline TBool Owner() const;
 593.120 +	inline TBool Deleted() const;
 593.121 +	// Read & write for clients
 593.122 +	inline TBool Complete() const;
 593.123 +	inline void SetComplete(TBool aComplete);
 593.124 +	inline TBool New() const;
 593.125 +	inline void SetNew(TBool aNew);
 593.126 +	inline TBool Unread() const;
 593.127 +	inline void SetUnread(TBool aUnread);
 593.128 +	inline TBool Failed() const;
 593.129 +	inline void SetFailed(TBool aFailed);
 593.130 +	inline TBool Operation() const;
 593.131 +	inline void SetOperation(TBool aOperation);
 593.132 +	inline TBool Visible() const;
 593.133 +	inline void SetVisible(TBool aVisble);
 593.134 +	inline TBool MultipleRecipients() const;
 593.135 +	inline void SetMultipleRecipients(TBool aMultipleRecipient);
 593.136 +	inline TBool ReadOnly() const;
 593.137 +	inline void SetReadOnly(TBool aReadOnly);
 593.138 +	inline TBool StandardFolder() const;
 593.139 +	inline void SetStandardFolder(TBool aStanardFolder);
 593.140 +	inline TBool Attachment() const;
 593.141 +	inline void SetAttachment(TBool aAttachmentFlag);
 593.142 +	inline TBool Connected() const;
 593.143 +	inline void SetConnected(TBool aConnected);
 593.144 +	inline TBool InPreparation() const;
 593.145 +	inline void SetInPreparation(TBool aInPreparation);
 593.146 +	//
 593.147 +	inline TInt PcSyncCount() const;
 593.148 +	inline void DecPcSyncCount();
 593.149 +	inline void IncPcSyncCount();
 593.150 +	//
 593.151 +	inline TBool OffPeak() const;
 593.152 +	inline void SetOffPeak(TBool aOffPeak);
 593.153 +	inline TBool Scheduled() const;
 593.154 +	inline void SetScheduled(TBool aScheduled);
 593.155 +	inline TUint SendingState() const;
 593.156 +	inline void SetSendingState(TUint aSendingState);
 593.157 +	inline TBool PendingDelete() const;
 593.158 +	inline void SetPendingDelete(TBool aPendingDelete);
 593.159 +	
 593.160 +	/** This method sets bit 24 of iMtmData1, if you are using this bit elsewhere don't call this method.*/
 593.161 +	inline void SetDeleteProtected(TBool aDeleteProtected);
 593.162 +	inline TBool DeleteProtected() const;
 593.163 +	/** This method sets bit 31 of iMtmData1, if you are using this bit elsewhere don't call this method.*/
 593.164 +	inline void SetForwarded(TBool aForwarded);
 593.165 +	inline TBool Forwarded() const;
 593.166 +	/** This method sets bit 32 of iMtmData1, if you are using this bit elsewhere don't call this method.*/
 593.167 +	inline void SetLocallyDeleted(TBool aLocallyDeleted);
 593.168 +	inline TBool LocallyDeleted() const;
 593.169 +	
 593.170 +	IMPORT_C TBool PendingConditions() const;
 593.171 +	IMPORT_C void SetPendingConditions(TBool aPendingConditions);
 593.172 +	//
 593.173 +	IMPORT_C TInt32 MtmData1() const;
 593.174 +	IMPORT_C TInt32 MtmData2() const;
 593.175 +	IMPORT_C TInt32 MtmData3() const;
 593.176 +	
 593.177 +	/** 
 593.178 +	@internalTechnology
 593.179 +	*/
 593.180 +	IMPORT_C void SetMtmData1(TInt32 aMtmData);
 593.181 +	/** 
 593.182 +	@internalTechnology
 593.183 +	*/
 593.184 +	IMPORT_C void SetMtmData2(TInt32 aMtmData);
 593.185 +	/** 
 593.186 +	@internalTechnology
 593.187 +	*/
 593.188 +	IMPORT_C void SetMtmData3(TInt32 aMtmData);
 593.189 +	//
 593.190 +protected:
 593.191 +	// only the server will be able to set the following
 593.192 +	inline void SetId(TMsvId aId);
 593.193 +	inline void SetParent(TMsvId aId);
 593.194 +	inline void SetOwner(TBool aAttachment);
 593.195 +	inline void SetDeleted(TBool aDeletedFlag);
 593.196 +	//
 593.197 +	inline TUint PersistedFlags() const;
 593.198 +	inline TUint TemporaryFlags() const;
 593.199 +	//
 593.200 +private:
 593.201 +	void Copy(const TMsvEntry& aEntry);
 593.202 +	//
 593.203 +private:
 593.204 +	TMsvId iId;
 593.205 +	TMsvId iParentId;  
 593.206 +	TInt32 iData;         
 593.207 +	TInt32 iPcSyncCount;
 593.208 +	TInt32 iReserved; // reserved for future proofing
 593.209 +public: 
 593.210 +	/** Service ID. */
 593.211 +	TMsvId iServiceId; 
 593.212 +	/** Related folder ID. */
 593.213 +	TMsvId iRelatedId; 
 593.214 +	/** Entry type */
 593.215 +	TUid   iType;        
 593.216 +	/** MTM */
 593.217 +	TUid   iMtm;     
 593.218 +	/** Time */
 593.219 +	TTime  iDate;       
 593.220 +	/** Size */
 593.221 +	TInt32 iSize;      
 593.222 +	/** Error */
 593.223 +	TInt32 iError;
 593.224 +	/** BIO message type */
 593.225 +	TInt32 iBioType;
 593.226 +	// following three can be used by MTM
 593.227 +	/** MTM data 1: this can be used for any purpose by an MTM. This member must 
 593.228 +	only be accessed through the predefined set and get functions. If you must 
 593.229 +	write data to a bit that has no meaning in the predefined derived classes 
 593.230 +	then you must derive your own class from TMsvEntry.
 593.231 +	*/
 593.232 +	TInt32 iMtmData1; 
 593.233 +	/** MTM data 2: this can be used for any purpose by an MTM. This member must 
 593.234 +	only be accessed through the predefined set and get functions. If you must 
 593.235 +	write data to a bit that has no meaning in the predefined derived classes 
 593.236 +	then you must derive your own class from TMsvEntry.
 593.237 +	*/
 593.238 +	TInt32 iMtmData2; 
 593.239 +	/** MTM data 3: this can be used for any purpose by an MTM. This member must 
 593.240 +	only be accessed through the predefined set and get functions. If you must 
 593.241 +	write data to a bit that has no meaning in the predefined derived classes 
 593.242 +	then you must derive your own class from TMsvEntry.
 593.243 +	*/
 593.244 +	TInt32 iMtmData3; 
 593.245 +public:
 593.246 +	// The TPtrC must be kept at end of class to simplify comparisons and initialisation
 593.247 +	/** Description */
 593.248 +	TPtrC iDescription;
 593.249 +	/** Details */
 593.250 +	TPtrC iDetails;    
 593.251 +	//
 593.252 +	//
 593.253 +private:
 593.254 +	//
 593.255 +friend class CMsvEntry;
 593.256 +friend class CMsvServer;
 593.257 +friend class CMsvServerEntry;
 593.258 +friend class CMsvClientEntry;
 593.259 +friend class CMsvServerSession;
 593.260 +friend class TMsvServerEntry; 
 593.261 +friend class CMsvServerIndex;
 593.262 +friend class RMsvServerSession;
 593.263 +friend class CMsvLocalCopyOperation;
 593.264 +friend class CMsvMove;
 593.265 +friend class CMsvIndexRebuild;
 593.266 +friend class CMsvCopyEntry;
 593.267 +friend class CMsvDelete;
 593.268 +friend class CMsvIndexContext;
 593.269 +friend class CMsvEntryArray;
 593.270 +	//
 593.271 +private:
 593.272 +	//
 593.273 +enum {	KMsvEntryPriorityMask=			0x00000003,
 593.274 +		KMsvEntryHighPriority=			0x00000002,
 593.275 +		KMsvEntryMediumPriority=		0x00000001,
 593.276 +		KMsvEntryLowPriority=			0x00000000,
 593.277 +		KMsvEntryClearFlag=				0x00000000,
 593.278 +		KMsvOffPeakFlag=				0x00000004,
 593.279 +		KMsvEntryNotCompleteFlag=		0x00000008,
 593.280 +		KMsvEntryNewFlag=				0x00000010,
 593.281 +		KMsvEntryUnreadFlag=			0x00000020,
 593.282 +		KMsvEntryFailedFlag=			0x00000040,
 593.283 +		KMsvEntryOperationFlag=			0x00000080,
 593.284 +		KMsvEntryOwnerFlag=				0x00000100,
 593.285 +		KMsvEntryInvisibleFlag=			0x00000200,
 593.286 +		KMsvEntryMultipleRecipientFlag=	0x00000400,
 593.287 +		KMsvScheduledFlag=				0x00000800,
 593.288 +		KMsvEntryReadOnlyFlag=			0x00001000,
 593.289 +		KMsvEntryDeletedFlag=			0x00002000,
 593.290 +		KMsvEntryStandardFolderFlag=	0x00004000,
 593.291 +		KMsvEntryAttachmentFlag=		0x00008000,
 593.292 +		KMsvEntryInPreparationFlag=		0x00010000,
 593.293 +		KMsvSendingStateFlags=			0x001E0000, // Note: Sending state is shifted KMsvSendingStateShift places left
 593.294 +		KMsvEntryPersistedFlags=		0x00FFFFFF,
 593.295 +		KMsvEntryPendingConditionsFlag=	0x00800000,		
 593.296 +		KMsvEntryTemporaryFlags=		0xFF000000,
 593.297 +		KMsvEntryConnectedFlag=			0x01000000,
 593.298 +		KMsvEntryPendingDeleteFlag=		0x02000000};
 593.299 +	};
 593.300 +enum 
 593.301 +	{
 593.302 +		KMsvEntryDeleteProtected=		0x800000,
 593.303 +		KMsvEntryForwarded=				0x40000000,
 593.304 +		KMsvEntryLocallyDeleted=		0x80000000
 593.305 +	};
 593.306 +
 593.307 +const TUint KMsvSendingStateShift=0x11; // Places to shift sending state
 593.308 +
 593.309 +/** Defines sending state flags. 
 593.310 +@publishedAll
 593.311 +@released
 593.312 +*/
 593.313 +enum TMsvSendState
 593.314 +	{
 593.315 +	/** State unknown. */
 593.316 +	KMsvSendStateUnknown		= 0x0,
 593.317 +	/** Message will be sent on request. */
 593.318 +	KMsvSendStateUponRequest	= 0x1,
 593.319 +	/** Waiting to be sent.
 593.320 +	
 593.321 +	Messages in the outbox with this state can be sent automatically by the relevant 
 593.322 +	MTM once an appropriate connection is established. */
 593.323 +	KMsvSendStateWaiting		= 0x2,
 593.324 +	/** Sending in progress. */
 593.325 +	KMsvSendStateSending		= 0x3,
 593.326 +	/** Sending scheduled. */
 593.327 +	KMsvSendStateScheduled		= 0x4,
 593.328 +	/** Resending. */
 593.329 +	KMsvSendStateResend			= 0x5,
 593.330 +	/** Sending suspended. */
 593.331 +	KMsvSendStateSuspended		= 0x6,
 593.332 +	/** Sending failed. */
 593.333 +	KMsvSendStateFailed			= 0x7,
 593.334 +	/** Sending complete. */
 593.335 +	KMsvSendStateSent			= 0x8,
 593.336 +	/** Not applicable. */
 593.337 +	KMsvSendStateNotApplicable	= 0x9
 593.338 +	};
 593.339 +
 593.340 +const TUint KMsvSendStateLast = KMsvSendStateNotApplicable;
 593.341 +const TUint KMsvSendStateMax = 0x0F;
 593.342 +
 593.343 +/** Supplies values for bitmasks that allows the rapid setting or clearing of a 
 593.344 +number of TMsvEntry fields.
 593.345 +
 593.346 +The fields that can be manipulated are:
 593.347 +
 593.348 +1. PC synchronisation
 593.349 +
 593.350 +2. Visibility flag
 593.351 +
 593.352 +3. Read flag
 593.353 +
 593.354 +4. In-preparation flag
 593.355 +
 593.356 +5. Connected flag
 593.357 +
 593.358 +6. Pending deletion flag.
 593.359 +
 593.360 +7. New flag
 593.361 +
 593.362 +@see TMsvEntry
 593.363 +@see CMsvSession::ChangeAttributesL()
 593.364 +@see CMsvServerEntry::ChangeAttributes() 
 593.365 +@publishedAll
 593.366 +@released
 593.367 +*/
 593.368 +enum TMsvAttribute    { 
 593.369 +	/** PC synchronisation field. */
 593.370 +						KMsvPcSyncCountAttribute	=0x00000001,
 593.371 +	/** Visibility flag field. */
 593.372 +						KMsvVisibilityAttribute		=0x00000200,
 593.373 +	/** Read flag field. */
 593.374 +						KMsvUnreadAttribute			=0x00000020,
 593.375 +	/** In-preparation field. */
 593.376 +						KMsvInPreparationAttribute	=0x00010000,
 593.377 +	/** Connected flag field. */
 593.378 +						KMsvConnectedAttribute		=0x01000000,
 593.379 +	/** Pending deletion flag. */
 593.380 +						KMsvPendingDeleteAttribute	=0x02000000,
 593.381 +	/** New flag field. */
 593.382 +						KMsvNewAttribute			=0x00000010};
 593.383 +
 593.384 +/** Defines the sort order options for a TMsvSelectionOrdering object. Options 
 593.385 +are set through TMsvSelectionOrdering::SetSorting().
 593.386 +
 593.387 +@see TMsvSelectionOrdering 
 593.388 +@publishedAll
 593.389 +@released
 593.390 +*/
 593.391 +enum TMsvSorting 
 593.392 +	{
 593.393 +	/** Don't sort */
 593.394 +	EMsvSortByNone=0,				// Don't sort
 593.395 +	/** Date (earliest-latest) */
 593.396 +	EMsvSortByDate,					// Date (earliest-latest)
 593.397 +	/** Date (latest-earliest) */
 593.398 +	EMsvSortByDateReverse,			// Date (latest-earliest)
 593.399 +	/** Size (smallest-largest) */
 593.400 +	EMsvSortBySize,					// Size (smallest-largest)
 593.401 +	/** Size (largest-smallest) */
 593.402 +	EMsvSortBySizeReverse,			// Size (largest-smallest)
 593.403 +	/** To/From (A-Z folded) */
 593.404 +	EMsvSortByDetails,				// ToFrom (A-Z collated)
 593.405 +	/** To/From (Z-A folded) */
 593.406 +	EMsvSortByDetailsReverse,		// ToFrom (Z-A collated)
 593.407 +	/** Description (A-Z folded) */
 593.408 +	EMsvSortByDescription,			// Description (A-Z collated)
 593.409 +	/** Description (Z-A folded) */
 593.410 +	EMsvSortByDescriptionReverse,	// Description (Z-A collated)
 593.411 +	/** Sort by message ID. */
 593.412 +	EMsvSortById,			        // Id (lowest-highest)
 593.413 +	/** Sort in reverse order by message ID. */
 593.414 +	EMsvSortByIdReverse	            // Id (highest-lowest)
 593.415 +	};
 593.416 +
 593.417 +/** Defines grouping order options for a TMsvEntrySelection object. Grouping options 
 593.418 +can be combined in a bitmask and set through the TMsvEntrySelection constructor 
 593.419 +@publishedAll
 593.420 +@released
 593.421 +*/
 593.422 +enum TMsvGrouping
 593.423 +	{
 593.424 +	/** No grouping */
 593.425 +	KMsvNoGrouping=0,				// No grouping
 593.426 +	/** Group by entry type, in order, services, folders, messages, attachments */
 593.427 +	KMsvGroupByType=0x2,			// Folder, Message, Attachment
 593.428 +	/** Place standard folders first, in the order they were created */
 593.429 +	KMsvGroupByStandardFolders=0x6,	// Standrad folders first (must have sorting by type set aswell)
 593.430 +	/** Group by message priority, in order, high, medium, then low */
 593.431 +	KMsvGroupByPriority=0x8,		// High, Mediem, Low
 593.432 +	/** Group by MTM, either in the order set by CMsvEntry::SetMtmListL() or by MTM 
 593.433 +	Uid value */
 593.434 +	KMsvGroupByMtm=0x10,			// By increasing uid value
 593.435 +	};
 593.436 +
 593.437 +/** Defines the sorting and grouping rules used to prepare a selection of entries.
 593.438 + 
 593.439 +It is used in the interfaces of CMsvEntry and CMsvServerEntry to set the ordering 
 593.440 +of an entry's children.
 593.441 +
 593.442 +Firstly, the entries will be grouped, if the appropriate grouping option is 
 593.443 +set, by:
 593.444 +
 593.445 +1. Standard folders: any entries marked as standard folders are placed first, 
 593.446 +in the order they were created.
 593.447 +
 593.448 +2. Entry type: in the order services, folders, messages, attachments, unknown
 593.449 +
 593.450 +3. Priority: in the order high, medium, then low
 593.451 +
 593.452 +4. MTM: either in the MTM order set by CMsvEntry::SetMtmListL() or just in MTM 
 593.453 +Uid value
 593.454 +
 593.455 +Grouping options are simply Boolean flags that can be set on or off by functions 
 593.456 +of this class.
 593.457 +
 593.458 +Secondly, the order of entries within these groups is defined by a sorting 
 593.459 +order option.
 593.460 +
 593.461 +@see CMsvEntry
 593.462 +@see CMsvServerEntry 
 593.463 +@publishedAll
 593.464 +@released
 593.465 +*/
 593.466 +class TMsvSelectionOrdering
 593.467 +	{
 593.468 +public:
 593.469 +	IMPORT_C TMsvSelectionOrdering();
 593.470 +	IMPORT_C TMsvSelectionOrdering(TInt aGroupingKey, TMsvSorting aSorting, TBool aShowInvisible=EFalse);
 593.471 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 593.472 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 593.473 +	IMPORT_C TBool operator==(const TMsvSelectionOrdering& aOrdering) const;
 593.474 +	IMPORT_C void SetSubjectSkipString(const TDesC& aSubjectSkipString);
 593.475 +	IMPORT_C const TDesC& SubjectSkipString() const;
 593.476 +
 593.477 +	//
 593.478 +	inline TMsvSorting Sorting() const;
 593.479 +	inline TBool GroupByType() const;
 593.480 +	inline TBool GroupStandardFolders() const;
 593.481 +	inline TBool GroupByPriority() const;
 593.482 +	inline TBool GroupByMtm() const;
 593.483 +	inline TBool ShowInvisibleEntries() const;
 593.484 +	inline TBool GroupingOn() const;
 593.485 +	// 
 593.486 +	inline void SetGroupByType(TBool aFlag);
 593.487 +	inline void SetGroupStandardFolders(TBool aFlag);
 593.488 +	inline void SetGroupByPriority(TBool aFlag);
 593.489 +	inline void SetGroupByMtm(TBool aFlag);
 593.490 +	inline void SetShowInvisibleEntries(TBool aFlag);
 593.491 +	inline void SetSorting(TMsvSorting aSortType);
 593.492 +
 593.493 +	//
 593.494 +	//
 593.495 +private:
 593.496 +
 593.497 +	enum TMsvGroupingPrivate
 593.498 +		{
 593.499 +		KMsvInvisibleFlag=0x1,
 593.500 +		KMsvStandardFolders=0x4,
 593.501 +		KMsvAllGroupingFlags=0x1e
 593.502 +		};
 593.503 +	TInt iGrouping;
 593.504 +	TMsvSorting iSortType;
 593.505 + 	TBuf<KMaxSubjectSkipStringLength>	iSubjectSkipString;
 593.506 +	};
 593.507 +
 593.508 +const TInt KMsvInvisibleFlag=1;
 593.509 +
 593.510 +/** Encapsulates an array of entry IDs. 
 593.511 +
 593.512 +An object of this type is commonly passed to a function to indicate the set 
 593.513 +of entries on which the function should operate. The array base class (CArrayFixFlat<TMsvId>) 
 593.514 +provide methods to access, sort, and manipulate members of the array.
 593.515 + 
 593.516 +@publishedAll
 593.517 +@released
 593.518 +*/
 593.519 +class CMsvEntrySelection : public CArrayFixFlat<TMsvId>
 593.520 +	{ 
 593.521 +public: 
 593.522 +	IMPORT_C CMsvEntrySelection();
 593.523 +	IMPORT_C CMsvEntrySelection* CopyL()  const;
 593.524 +	IMPORT_C CMsvEntrySelection* CopyLC() const;
 593.525 +	IMPORT_C TInt Find(TMsvId aId) const;
 593.526 +	};
 593.527 +
 593.528 +/** Specifies a default service for a MTM.
 593.529 +
 593.530 +@publishedAll
 593.531 +@released
 593.532 +*/
 593.533 +class TMsvDefaultService
 593.534 +	{
 593.535 +public:
 593.536 +	/** MTM for which the default service is specified. */
 593.537 +	TUid iMtm;
 593.538 +	/** ID of the default service. */
 593.539 +	TMsvId iService;
 593.540 +	};
 593.541 +
 593.542 +
 593.543 +
 593.544 +/** Used to query the Message Server for entries that match the specification defined 
 593.545 +in the filter. 
 593.546 +
 593.547 +It allows a query to be performed on service, MTM, type and last change date. 
 593.548 +The filter also enables the specification of the order in which the entries 
 593.549 +are returned. 
 593.550 +
 593.551 +@see CMsvSession::GetChildIdsL() 
 593.552 +@publishedAll
 593.553 +@released
 593.554 +*/
 593.555 +class CMsvEntryFilter : public CBase
 593.556 +	{
 593.557 +public:
 593.558 +	IMPORT_C static CMsvEntryFilter* NewLC();
 593.559 +	IMPORT_C static CMsvEntryFilter* NewL();
 593.560 +	//
 593.561 +public:
 593.562 +	inline TMsvId Service() const;
 593.563 +	inline void SetService(TMsvId aServiceId);
 593.564 +	//
 593.565 +	inline TUid Mtm() const;
 593.566 +	inline void SetMtm(TUid aMtm);
 593.567 +	//
 593.568 +	inline TUid Type() const;
 593.569 +	inline void SetType(TUid aType);
 593.570 +	//
 593.571 +	inline const TTime& LastChangeDate() const;
 593.572 +	inline void SetLastChangeDate(const TTime& aLastChange);
 593.573 +	//
 593.574 +	inline const TMsvSelectionOrdering& Order() const;
 593.575 +	inline void SetOrder(const TMsvSelectionOrdering& aOrder);
 593.576 +	//
 593.577 +	inline TUid SortMtm() const;
 593.578 +	inline void SetSortMtm(TUid aSortMtm);
 593.579 +	//
 593.580 +private:
 593.581 +	CMsvEntryFilter();
 593.582 +	//
 593.583 +private:
 593.584 +	TMsvId iServiceId;
 593.585 +	TUid iMtm;
 593.586 +	TUid iType;
 593.587 +	TTime iLastChange;
 593.588 +	TMsvSelectionOrdering iOrdering;
 593.589 +	TUid iSortMtm;
 593.590 +	};
 593.591 +
 593.592 +// Error resolver leave codes -7000 to -7127
 593.593 +/** Defines error codes that relate to the Message Server.
 593.594 +
 593.595 +@see MMsvEntryObserver::EMsvContextInvalid 
 593.596 +@publishedAll
 593.597 +@released
 593.598 +*/
 593.599 +enum TMsvResolverLeave
 593.600 +	{
 593.601 +	/** There is no disk in the drive containing the Message Server index. */
 593.602 +	KMsvMediaUnavailable = -7000,
 593.603 +	/** There is a disk in the drive containing the Message Server index, but it is 
 593.604 +	the wrong one. */
 593.605 +	KMsvMediaIncorrect = -7001,
 593.606 +	/** A CMsvEntry context is no longer valid because the location of the Message Server's 
 593.607 +	index has changed.
 593.608 +	
 593.609 +	Such contexts will need refreshing by the client.
 593.610 +	
 593.611 +	@see MMsvEntryObserver::EMsvContextInvalid */
 593.612 +	KMsvMediaChanged = -7002,
 593.613 +	KMsvIndexBackup      = -7003,
 593.614 +	KMsvIndexRestore     = -7004
 593.615 +	};
 593.616 +
 593.617 +#include <msvstd.inl>
 593.618 +
 593.619 +#endif
   594.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   594.2 +++ b/epoc32/include/mw/msvstore.h	Wed Mar 31 12:27:01 2010 +0100
   594.3 @@ -0,0 +1,246 @@
   594.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   594.5 +// All rights reserved.
   594.6 +// This component and the accompanying materials are made available
   594.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   594.8 +// which accompanies this distribution, and is available
   594.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  594.10 +//
  594.11 +// Initial Contributors:
  594.12 +// Nokia Corporation - initial contribution.
  594.13 +//
  594.14 +// Contributors:
  594.15 +//
  594.16 +// Description:
  594.17 +//
  594.18 +
  594.19 +#if !defined(__MSVSTORE_H__)
  594.20 +#define __MSVSTORE_H__
  594.21 +
  594.22 +#include <e32base.h>
  594.23 +#include <s32file.h>
  594.24 +#include <msvstd.h>
  594.25 +
  594.26 +class CMsvCachedStore;
  594.27 +class CMsvBodyText;
  594.28 +class CMsvAttachment;
  594.29 +
  594.30 +//**********************************
  594.31 +// MMsvStoreObserver
  594.32 +//**********************************
  594.33 +//
  594.34 +// 
  594.35 +//
  594.36 +
  594.37 +class MMsvStoreObserver
  594.38 +/** Observer interface to get events relating to a message store.
  594.39 +
  594.40 +This is used in the derivation of CMsvServerEntry and CMsvEntry.
  594.41 +
  594.42 +@publishedAll
  594.43 +@released
  594.44 +*/
  594.45 +	{
  594.46 +public:
  594.47 +/**
  594.48 +Defines message store event types.
  594.49 +
  594.50 +@publishedAll
  594.51 +@released
  594.52 +*/
  594.53 +	enum TMsvStoreEvent {	/** A read-only message store was closed. */
  594.54 +							EMsvReadStoreClosed,	// read only CMsvStore closed
  594.55 +							/** An editable message store was closed. */
  594.56 +							EMsvEditStoreClosed		// edit only CMsvStore closed
  594.57 +							};	
  594.58 +public:
  594.59 +	/** Receives a message store event.
  594.60 +
  594.61 +	@param aEvent Event type
  594.62 +	@param aId ID of the message to which the event relates
  594.63 +	*/
  594.64 +	virtual void HandleStoreEvent(TMsvStoreEvent aEvent, TMsvId aId)=0;
  594.65 +	};
  594.66 +
  594.67 +
  594.68 +//**********************************
  594.69 +// CMsvStore
  594.70 +//**********************************
  594.71 +//
  594.72 +// The entry structure that the client uses
  594.73 +//
  594.74 +
  594.75 +/*
  594.76 +Uid which are not needed to be known outside CMsvStore
  594.77 +@internalComponent
  594.78 +@deprecated
  594.79 +*/
  594.80 +const TUid KMsvEntryRichTextBody={0x10000F70};
  594.81 +
  594.82 +
  594.83 +/**
  594.84 +UId for the 16-bit chunk storage mechanism.
  594.85 +@internalTechnology
  594.86 +@prototype
  594.87 +*/
  594.88 +const TUid KMsvPlainBodyText16={0x10000F90};
  594.89 +
  594.90 +/**
  594.91 +UId for the 8-bit chunk storage mechanism.
  594.92 +@internalTechnology
  594.93 +@prototype
  594.94 +*/
  594.95 +const TUid KMsvPlainBodyText8={0x10000F80};
  594.96 +
  594.97 +class MMsvAttachmentManager;
  594.98 +class MMsvAttachmentManagerSync;
  594.99 +class CMsvAttachmentManager;
 594.100 +class MMsvStoreManager;
 594.101 +class CMsvPlainBodyText;
 594.102 +class CMsvStore : public CBase
 594.103 +/** Provides an interface over the message store that is associated with a message 
 594.104 +entry. It is similar to the dictionary store in supporting the concept of 
 594.105 +streams referenced by UID. 
 594.106 +
 594.107 +This class is intended for use by MTM implementations. Message client applications 
 594.108 +access the store through the higher-level functions provided by Client-side 
 594.109 +and User Interface MTMs.
 594.110 +
 594.111 +A CMsvStore object is created by a CMsvEntry object and passed to a client 
 594.112 +process. The client process then becomes responsible for deleting the CMsvStore 
 594.113 +object. The store can be opened in two modes, read or edit, and only one CMsvStore 
 594.114 +object can have edit access to a store. 
 594.115 +
 594.116 +CMsvStore provides functions for general manipulation of the store, and for 
 594.117 +accessing the standard body text stream. RMsvReadStream and RMsvWriteStream 
 594.118 +must be used to access other streams. 
 594.119 +@publishedAll
 594.120 +@released
 594.121 +*/
 594.122 +	{
 594.123 +public:
 594.124 +	IMPORT_C ~CMsvStore();
 594.125 +	//
 594.126 +	IMPORT_C void StoreBodyTextL(const CRichText& aRichTextBody);
 594.127 +	
 594.128 +	IMPORT_C void RestoreBodyTextL(CRichText& aRichTextBody);
 594.129 +	IMPORT_C void RestoreBodyTextL(CRichText& aRichTextBody, TUint aCharsetOverride);
 594.130 +	
 594.131 +	IMPORT_C void DeleteBodyTextL();
 594.132 +	IMPORT_C TBool HasBodyTextL() const;
 594.133 +	//
 594.134 +	IMPORT_C void DeleteL(); // deletes the message store
 594.135 +	IMPORT_C TInt SizeL(); // the size of the store
 594.136 +	//
 594.137 +	// The following give the Dictionary store interface
 594.138 +	IMPORT_C TBool IsNullL() const;
 594.139 +	IMPORT_C TBool IsPresentL(TUid aUid) const;
 594.140 +	IMPORT_C void Remove(TUid aUid);
 594.141 +	IMPORT_C void RemoveL(TUid aUid);
 594.142 +	IMPORT_C void Revert();
 594.143 +	IMPORT_C void RevertL();
 594.144 +	IMPORT_C TInt Commit(); 
 594.145 +	IMPORT_C void CommitL();
 594.146 +	
 594.147 +	// Attachment Management
 594.148 +	IMPORT_C MMsvAttachmentManager& AttachmentManagerL();
 594.149 +	IMPORT_C MMsvAttachmentManagerSync& AttachmentManagerExtensionsL();
 594.150 +	
 594.151 +	// APIs to get the CMsvPlainBodyText interface.
 594.152 +	IMPORT_C CMsvPlainBodyText* InitialisePlainBodyTextForWriteL(TBool aIs8Bit, TUint aCharsetId, TUint aDefaultCharsetId);
 594.153 +	IMPORT_C CMsvPlainBodyText* InitialisePlainBodyTextForReadL(TInt aChunkLength);
 594.154 +
 594.155 +	/**
 594.156 +	@internalTechnology
 594.157 +	@released
 594.158 +	*/
 594.159 +	IMPORT_C void CreateShareProtectedAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, CMsvAttachment* aAttachmentInfo);
 594.160 +	void Restore8BitBodyTextL(RFileReadStream& aInputStream);
 594.161 +	
 594.162 +protected:
 594.163 +
 594.164 +	IMPORT_C CMsvStore(MMsvStoreObserver& aObserver, RFs& aFs, TMsvId aId, MMsvStoreManager& aStoreManager);
 594.165 +	IMPORT_C static CMsvStore* OpenForReadL(MMsvStoreObserver& aObserver, RFs& aFs, MMsvStoreManager& aStoreManager, TMsvId aId);
 594.166 +	IMPORT_C static CMsvStore* OpenForWriteL(MMsvStoreObserver& aObserver, RFs& aFs, MMsvStoreManager& aStoreManager, TMsvId aId);
 594.167 +
 594.168 +private:
 594.169 +	
 594.170 +	
 594.171 +	void ConstructL(TBool aReadOnly);
 594.172 +	
 594.173 +	//Methods to handle plain bodytext.
 594.174 +	void RestorePlainBodyTextL(CRichText& aRichText, TUint aCharsetOverride);
 594.175 +	void GetRichTextFrom8BitL(RFile& aBodyTextFile, CRichText& aRichText, TUint aCharSet, TUint aDefaultCharSet);
 594.176 +	void GetRichTextFrom16BitL(RFile& aBodyTextFile, CRichText& aRichText);
 594.177 +	void Convert8BitToRichTextL(RFile& aBodyTextFile, CRichText& aRichText, TUint aCharSet, TUint aDefaultCharSet);
 594.178 +
 594.179 +	void Lock();
 594.180 +	inline const CMsvCachedStore& Store() const;
 594.181 +	inline CMsvCachedStore& Store();
 594.182 +private:
 594.183 +	enum {EMsvStoreUnlocked, EMsvStoreLocked} iLockStatus;
 594.184 +
 594.185 +	RFs& iFs;
 594.186 +	MMsvStoreObserver& iObserver;
 594.187 +	
 594.188 +
 594.189 +	const TMsvId iId;
 594.190 +	CMsvCachedStore* iStore;
 594.191 +	TBool iConstructed;
 594.192 +	CMsvBodyText* iBodyText;
 594.193 +	
 594.194 +	MMsvStoreManager& iStoreManager;
 594.195 +	CMsvAttachmentManager* iAttachmentManager;
 594.196 +
 594.197 +friend class CMsvEntry;
 594.198 +friend class CMsvServerEntry;
 594.199 +friend class RMsvReadStream;
 594.200 +friend class RMsvWriteStream;
 594.201 +	};
 594.202 +
 594.203 +
 594.204 +class RMsvReadStream : public RReadStream
 594.205 +/** Accesses the streams in a message store with read access. 
 594.206 +
 594.207 +Before it is used, 
 594.208 +a CMsvStore must have been opened on the message store with read or read/write 
 594.209 +access.
 594.210 +
 594.211 +This class is intended for use by MTM implementations to store MTM-specific 
 594.212 +information. Message client applications access the store through the higher-level 
 594.213 +functions provided by Client-side and User Interface MTMs.
 594.214 +
 594.215 +Most of its functionality is provided by the base class RReadStream. 
 594.216 +@publishedAll
 594.217 +@released
 594.218 +*/
 594.219 +	{
 594.220 +public:
 594.221 +	IMPORT_C void OpenL(const CMsvStore& aMsvStore, TUid aUid);
 594.222 +	IMPORT_C void OpenLC(const CMsvStore& aMsvStore,TUid aUid);
 594.223 +	void OpenLC(CMsvCachedStore& aStore,TUid aUid);
 594.224 +	};
 594.225 +
 594.226 +
 594.227 +class RMsvWriteStream : public RWriteStream
 594.228 +/** Accesses the streams in a message store with write access, or creates new streams. 
 594.229 +Before it is used, a CMsvStore must have been opened on the message store 
 594.230 +with write access.
 594.231 +
 594.232 +This class is intended for use by MTM implementations to store MTM-specific 
 594.233 +information. Message client applications access the store through the higher-level 
 594.234 +functions provided by Client-side and User Interface MTMs.
 594.235 +
 594.236 +Most of its functionality is provided by the base class RWriteStream. 
 594.237 +@publishedAll
 594.238 +@released
 594.239 +*/
 594.240 +	{
 594.241 +public:
 594.242 +	IMPORT_C void AssignLC(CMsvStore &aMsvStore, TUid aUid);
 594.243 +	IMPORT_C void AssignL(CMsvStore &aMsvStore, TUid aUid);
 594.244 +	void AssignLC(CMsvCachedStore &aStore, TUid aUid);
 594.245 +	};
 594.246 +
 594.247 +
 594.248 +
 594.249 +#endif
   595.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   595.2 +++ b/epoc32/include/mw/msvsysagentaction.h	Wed Mar 31 12:27:01 2010 +0100
   595.3 @@ -0,0 +1,128 @@
   595.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   595.5 +// All rights reserved.
   595.6 +// This component and the accompanying materials are made available
   595.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   595.8 +// which accompanies this distribution, and is available
   595.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  595.10 +//
  595.11 +// Initial Contributors:
  595.12 +// Nokia Corporation - initial contribution.
  595.13 +//
  595.14 +// Contributors:
  595.15 +//
  595.16 +// Description:
  595.17 +// MsvSysAgentCondAction.H
  595.18 +// 
  595.19 +//
  595.20 +
  595.21 +#ifndef __MSVSYSAGENTCONDACTION_H__
  595.22 +#define	__MSVSYSAGENTCONDACTION_H__
  595.23 +
  595.24 + 
  595.25 +
  595.26 +
  595.27 +#include <msvsenderroraction.h>
  595.28 +
  595.29 +/////////////////////////////////////////////////////////////////////////////
  595.30 +//
  595.31 +//	System Agent-related Class Declarations
  595.32 +//
  595.33 +/////////////////////////////////////////////////////////////////////////////
  595.34 +
  595.35 +
  595.36 +
  595.37 +/** 
  595.38 +Defines a condition which a Publish and Subscribe Uid must satisfy.
  595.39 +
  595.40 +@see RProperty
  595.41 +
  595.42 +@publishedAll
  595.43 +@released
  595.44 +*/
  595.45 +class TMsvCondition
  595.46 +	{
  595.47 +public:
  595.48 +/** 
  595.49 +An enumeration defining the type of test to be made against a Publish 
  595.50 +and Subscribe property. 
  595.51 +*/
  595.52 +	enum TMsvSchSendConditionType
  595.53 +		{
  595.54 +		/** Tests that a value is equal to a state variable value. */
  595.55 +		EMsvSchSendEquals,		
  595.56 +		/** Tests that a value is unequal to a state variable value. */
  595.57 +		EMsvSchSendNotEquals,		
  595.58 +		/** Tests that a value is greater than a state variable value. */
  595.59 +		EMsvSchSendGreaterThan,	
  595.60 +		/** Tests that a value is less than a state variable value. */
  595.61 +		EMsvSchSendLessThan		
  595.62 +		};
  595.63 +		
  595.64 +public:
  595.65 +	/** second UID of the process which set the condition*/
  595.66 +	TUid iVariable;
  595.67 +	/** Integer state of corresponding P&S variable to be tested against*/
  595.68 +	TInt iState;
  595.69 +	/** type of test to be performed */
  595.70 +	TMsvSchSendConditionType iType;
  595.71 +	};
  595.72 +	
  595.73 +
  595.74 +/**
  595.75 +Schedule Send condition must be satisfied before a message sending attempt.
  595.76 +
  595.77 +@publishedAll
  595.78 +@released
  595.79 +*/ 
  595.80 +
  595.81 +class TMsvSysAgentConditionAction
  595.82 +	{
  595.83 +public:
  595.84 +	IMPORT_C TMsvSysAgentConditionAction();
  595.85 +
  595.86 +
  595.87 +	/** Condition to meet. */
  595.88 +	TMsvCondition iCondition;
  595.89 +
  595.90 +	/** Error action to use. */
  595.91 +	TMsvSendErrorAction iErrorAction;
  595.92 +
  595.93 +	/** Default error action. */
  595.94 +	TBool iUseDefaultSysAgentAction;
  595.95 +
  595.96 +private:
  595.97 +	};
  595.98 +
  595.99 +
 595.100 +
 595.101 +/**
 595.102 +Defines an array of  schedule send conditions that must be satisfied before a message sending attempt.
 595.103 +
 595.104 +@see TMsvSysAgentConditionAction
 595.105 +
 595.106 +@publishedAll
 595.107 +@released
 595.108 +*/ 
 595.109 +
 595.110 +class CMsvSysAgentActions : public CArrayFixFlat<TMsvSysAgentConditionAction>
 595.111 +	{
 595.112 +public:
 595.113 +	IMPORT_C CMsvSysAgentActions();
 595.114 +	IMPORT_C ~CMsvSysAgentActions();
 595.115 +
 595.116 +
 595.117 +	IMPORT_C TBool ConditionsMetL(TMsvSendErrorAction& aErrorAction);
 595.118 +
 595.119 +	/** Default send error action. */
 595.120 +	TMsvSendErrorAction iDefault;
 595.121 +
 595.122 +private:
 595.123 +
 595.124 +
 595.125 +	void GetConditionVariablesL(CArrayFix<TUid>& aUids) const;
 595.126 +	TBool CheckStates(const CArrayFix<TInt>& aStates, TMsvSendErrorAction& aErrorAction) const;
 595.127 +	TBool ConditionOK(const TMsvSysAgentConditionAction& aCondAction, const TInt aState) const;
 595.128 +	
 595.129 +	};
 595.130 +
 595.131 +#endif	// __MSVSYSAGENTCONDACTION_H__
   596.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   596.2 +++ b/epoc32/include/mw/msvuids.h	Wed Mar 31 12:27:01 2010 +0100
   596.3 @@ -0,0 +1,90 @@
   596.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   596.5 +// All rights reserved.
   596.6 +// This component and the accompanying materials are made available
   596.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   596.8 +// which accompanies this distribution, and is available
   596.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  596.10 +//
  596.11 +// Initial Contributors:
  596.12 +// Nokia Corporation - initial contribution.
  596.13 +//
  596.14 +// Contributors:
  596.15 +//
  596.16 +// Description:
  596.17 +//
  596.18 +
  596.19 +
  596.20 +
  596.21 +/**
  596.22 + @file
  596.23 + @publishedAll
  596.24 + @released
  596.25 +*/
  596.26 +#if !defined(__MSVUIDS_H__)
  596.27 +#define __MSVUIDS_H__
  596.28 +#if !defined(__E32BASE_H__)
  596.29 +#include <e32base.h>
  596.30 +#endif
  596.31 +#if !defined(__MSVSTD_HRH__)
  596.32 +#include <msvstd.hrh>
  596.33 +#endif
  596.34 +
  596.35 +
  596.36 +/**
  596.37 +* Entry type Uids
  596.38 +* @publishedAll
  596.39 +* @released
  596.40 +*/
  596.41 +const TUid KUidMsvNullEntry={0};
  596.42 +/**
  596.43 +* Root entry of entire index 
  596.44 +* @publishedAll
  596.45 +* @released
  596.46 +*/
  596.47 +const TUid KUidMsvRootEntry={KUidMsvRootEntryValue};
  596.48 +// Service 
  596.49 +/**
  596.50 +* @publishedAll
  596.51 +* @released
  596.52 +*/
  596.53 +const TUid KUidMsvServiceEntry={KUidMsvServiceEntryValue};
  596.54 +// Folder 
  596.55 +/**
  596.56 +* @publishedAll
  596.57 +* @released
  596.58 +*/
  596.59 +const TUid KUidMsvFolderEntry={KUidMsvFolderEntryValue};
  596.60 +// Message
  596.61 +/**
  596.62 +* @publishedAll
  596.63 +* @released
  596.64 +*/
  596.65 +const TUid KUidMsvMessageEntry={KUidMsvMessageEntryValue};
  596.66 +// Entry 
  596.67 +/**
  596.68 +* @publishedAll
  596.69 +* @released
  596.70 +*/
  596.71 +const TUid KUidMsvAttachmentEntry={KUidMsvAttachmentEntryValue};
  596.72 +
  596.73 +// Local Service Uid
  596.74 +// An operation that affects only local entries. 
  596.75 +/**
  596.76 +* @publishedAll
  596.77 +* @released
  596.78 +*/
  596.79 +const TUid KUidMsvLocalServiceMtm={KUidMsvLocalServiceMtmValue};
  596.80 +//An operation performed by the Message Server. 
  596.81 +/**
  596.82 +* @publishedAll
  596.83 +* @released
  596.84 +*/
  596.85 +const TUid KUidMsvServerMtm={KUidMsvServerMtmValue};
  596.86 +// Key for Publish & Subscribe Disk Space Monitor  
  596.87 +/**
  596.88 +* @publishedAll
  596.89 +* @released
  596.90 +*/
  596.91 +const TInt KUidPSDiskSpaceMonitorKeyType={0x2001FC30};
  596.92 +
  596.93 +#endif
   597.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   597.2 +++ b/epoc32/include/mw/mtclbase.h	Wed Mar 31 12:27:01 2010 +0100
   597.3 @@ -0,0 +1,550 @@
   597.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   597.5 +// All rights reserved.
   597.6 +// This component and the accompanying materials are made available
   597.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   597.8 +// which accompanies this distribution, and is available
   597.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  597.10 +//
  597.11 +// Initial Contributors:
  597.12 +// Nokia Corporation - initial contribution.
  597.13 +//
  597.14 +// Contributors:
  597.15 +//
  597.16 +// Description:
  597.17 +//
  597.18 +
  597.19 +
  597.20 +#ifndef __MTCLBASE_H__
  597.21 +#define __MTCLBASE_H__
  597.22 +
  597.23 +#include <e32base.h>		
  597.24 +#include <badesca.h>
  597.25 +#include <msvapi.h>
  597.26 +
  597.27 +#include <cmsvattachment.h>
  597.28 +#include <msvstd.hrh>
  597.29 +#include <cmsvrecipientlist.h>
  597.30 +
  597.31 +/**
  597.32 +UId for 8-bit/16-bit Character set mechanism.
  597.33 +@internalTechnology
  597.34 +@prototype
  597.35 +*/
  597.36 +const TInt KUIDCharacterSet = 999; 
  597.37 +
  597.38 +class CMsvAttachmentWaiter;
  597.39 +
  597.40 +
  597.41 +/** Specifies one or more parts of a message in message-forwarding, message-reply, 
  597.42 +and message-validation functions.
  597.43 +
  597.44 +Standard message parts are defined by the constants that can be added (or 
  597.45 +bitwise-or'ed) together to specify multiple parts. Some message parts may 
  597.46 +not be meaningful for some MTMs.
  597.47 +
  597.48 +Specifies find attributes which modify the behaviour of the search text utility 
  597.49 +provided by the Global Find API. This does not apply to v5.1 nor to v5. */
  597.50 +typedef TUint TMsvPartList;
  597.51 +
  597.52 +class CParaFormatLayer;
  597.53 +class CCharFormatLayer;
  597.54 +
  597.55 +
  597.56 +/** Specifies function IDs for standard MTM functions.
  597.57 +
  597.58 +The function IDs are specified such that they do not coincide
  597.59 +with the free area defined for MTM commands.
  597.60 +
  597.61 +If MTMs also offer their own equivalents of these functions,
  597.62 +they may implement these function IDs by considering the
  597.63 +two IDs to be the same in their client MTM.
  597.64 +
  597.65 +MTMs that support SendAs must support SendMessage.
  597.66 +*/
  597.67 +enum TMtmStandardAsyncCommands
  597.68 +	{
  597.69 +	KMTMStandardFunctionsSendMessage = KMtmFirstFreeStandardMtmFunctionId
  597.70 +	};
  597.71 +
  597.72 +
  597.73 +////////////////////////////////////////////////////////
  597.74 +// Prototype of expected factory function
  597.75 +
  597.76 +typedef CBaseMtm* MtmFactoryFunctionL(CRegisteredMtmDll&, CMsvSession&);
  597.77 +
  597.78 +
  597.79 +/***********************************************
  597.80 +***********************************************/
  597.81 +class CBaseMtm : public CBase, public MMsvEntryObserver
  597.82 +/** Provides a high-level interface for accessing and manipulating a Message Server 
  597.83 +entry. 
  597.84 +
  597.85 +Message client applications use the class to access such functionality polymorphically. 
  597.86 +MTM implementers implement a derived class to provide such functionality for 
  597.87 +their message protocol. 
  597.88 +
  597.89 +The following are some significant groups of functions:
  597.90 +
  597.91 +Context functions: the SetCurrentEntryL() and SwitchCurrentEntryL() functions 
  597.92 +change the context - the entry on which later actions are performed. After 
  597.93 +creating a new Client-side MTM object, a message client application should 
  597.94 +set an initial context before using other functions. Note that: any changes 
  597.95 +made to an existing context are not automatically saved: the message client 
  597.96 +application should ensure this itself by calling SaveMessageL(); no message 
  597.97 +data for the new context is retrieved from the Message Server, to retrieve 
  597.98 +entry data, call LoadMessageL() after setting the context; calling Body() 
  597.99 +immediately after setting the context returns an empty CRichText object: this 
 597.100 +is because the private cache of context body text that the base class maintains 
 597.101 +is re-initialised to an empty value. MTM implementers should note that the 
 597.102 +virtual ContextEntrySwitched() is called from these functions to allow derived 
 597.103 +classes to also clear any caches of MTM-specific entry data.
 597.104 +
 597.105 +Store and restore entry data functions: the changes that a message client 
 597.106 +application makes to a message context through Client-side MTM functions, 
 597.107 +such as altering the body text obtained through Body(), are, for efficiency, 
 597.108 +cached in memory by a Client-side MTM. The message store and restore functions 
 597.109 +are concerned with transferring data between that cache and committed storage. 
 597.110 +Note that, unlike message contexts, message client applications are not expected 
 597.111 +to manipulate directly service contexts. Instead, the corresponding User Interface 
 597.112 +MTM will provide dialogs to allow the user to alter service settings, and 
 597.113 +call Client-side MTM functions to handle their retrieval and storage. Symbian 
 597.114 +OS v5 expects the base class functions to handle storage and retrieval for 
 597.115 +both message and service contexts, and their implementations must detect what 
 597.116 +the context is, and act accordingly. Post-v5, the API is clarified by restricting 
 597.117 +the base class functions to handle message contexts only. To handle service 
 597.118 +contexts, a Client-side MTM must define its own functions for the User Interface 
 597.119 +MTM to call.
 597.120 +
 597.121 +Store and restore body text functions: the base class maintains a private 
 597.122 +CRichText object cache to store the body text for the current context. This 
 597.123 +can be accessed for reading and writing by message client applications through 
 597.124 +Body(). StoreBodyL() and RestoreBodyL() encapsulate for implementers of derived 
 597.125 +classes the retrieval and storage of this CRichText object to a CMsvStore.
 597.126 +
 597.127 +Address list functions: the format and storage of message addresses is MTM-specific. 
 597.128 +AddresseeList(), AddAddresseeL(), and RemoveAddressee() are designed to allow 
 597.129 +clients with no MTM-specific knowledge to access address information in a 
 597.130 +generic way. The base class has a protected data member iAddresseeList, an 
 597.131 +array of descriptors, which these functions manipulate. Implementations should 
 597.132 +save the address information to the appropriate place in the message store 
 597.133 +when the message is stored.
 597.134 +
 597.135 +MTM-specific functionality: MTM components can offer protocol-specific functionality 
 597.136 +not provided by base class interface functions. MTM components define IDs 
 597.137 +that correspond to each protocol-specific operation offered, and implement 
 597.138 +the InvokeSyncFunctionL() and InvokeAsyncFunctionL() functions to allow clients 
 597.139 +to access these operations by passing in the appropriate ID. Two functions 
 597.140 +are provided to allow the MTM component to offer both synchronous and asynchronous 
 597.141 +functionality. Message client applications can dynamically add user-interface 
 597.142 +features for these operations using CBaseMtmUiData::MtmSpecificFunctions(). 
 597.143 +MTM developers should document the IDs if they wish to make the operations 
 597.144 +available to clients. 
 597.145 +@publishedAll
 597.146 +@released
 597.147 +*/
 597.148 +	{
 597.149 +public:
 597.150 +	IMPORT_C ~CBaseMtm();
 597.151 +	IMPORT_C TUid Type() const;
 597.152 +	//
 597.153 +	// context related
 597.154 +	IMPORT_C void SetCurrentEntryL(CMsvEntry* aEntry);
 597.155 +	IMPORT_C void SwitchCurrentEntryL(TMsvId aId);
 597.156 +	IMPORT_C CMsvEntry& Entry() const;
 597.157 +	IMPORT_C TBool HasContext() const;
 597.158 +	//
 597.159 +	//
 597.160 +	/** Commits cached changes to the storage controlled by the Message Server.
 597.161 +	
 597.162 +	It can only be called on message contexts. It should be called in the following circumstances:
 597.163 +	
 597.164 +	1. to preserve changes when the context is changed, or when the Client-side MTM 
 597.165 +	object is deleted 
 597.166 +	
 597.167 +	2. to enable other parts of the Messaging to access the updated entry, as required, 
 597.168 +	for example, before sending a message 
 597.169 +	
 597.170 +	Requirements:
 597.171 +	
 597.172 +	An implementation must update the store and index entry relating to the message 
 597.173 +	context. Typically, the message store should be opened for editing with CMsvEntry::EditStoreL(). 
 597.174 +	It should be updated as follows:
 597.175 +	
 597.176 +	1. body text: call StoreBodyL() to update the store's body text stream
 597.177 +	
 597.178 +	2. address list: update the appropriate MTM-specific area of the store from the 
 597.179 +	data in iAddresseeList
 597.180 +	
 597.181 +	3. subject: if supported, update the appropriate MTM-specific area of the store 
 597.182 +	from the private cache set by SetSubjectL()
 597.183 +	
 597.184 +	Changes can then be committed to the store with CMsvStore::CommitL().
 597.185 +	
 597.186 +	The index entry should also be updated to reflect changes. Possible fields 
 597.187 +	that may need updating include: Description (for subject changes); Details 
 597.188 +	and Multiple Recipients (for recipient changes); and Size. Index entry changes 
 597.189 +	are committed using CMsvEntry::ChangeL().
 597.190 +	
 597.191 +	The function should panic for non-message contexts. */
 597.192 +	virtual void SaveMessageL()=0; 
 597.193 +	/** Loads the cache with the message data for the current context.
 597.194 +	
 597.195 +	It can only be called on message contexts. 
 597.196 +	
 597.197 +	It is typically used after the context has been set with SetCurrentEntryL() 
 597.198 +	or SwitchCurrentEntryL(). CBaseMtm functions to manipulate the entry can only 
 597.199 +	be called after this function has been called.
 597.200 +	
 597.201 +	Requirements:
 597.202 +	
 597.203 +	An implementation must restore the store and index entry relating to the message 
 597.204 +	context. Typically, the message store should be opened for reading with CMsvEntry::ReadStoreL(). 
 597.205 +	It should be then be read to set the following:
 597.206 +	
 597.207 +	1. body text: call RestoreBodyL() to update the cached body text
 597.208 +	
 597.209 +	2. address list: read the appropriate MTM-specific area of the store to update 
 597.210 +	iAddresseeList
 597.211 +	
 597.212 +	3. subject: if supported, read the appropriate MTM-specific area of the store 
 597.213 +	and update the cache with SetSubjectL()
 597.214 +	
 597.215 +	The function should panic for non-message contexts. */
 597.216 +	virtual void LoadMessageL()=0;
 597.217 +	/** Validates the current message context. 
 597.218 +	
 597.219 +	The precise validation performed is specific to the MTM, but, typically, checks 
 597.220 +	that the specified message parts are well-formed. 
 597.221 +	
 597.222 +	Requirements:
 597.223 +	
 597.224 +	Implementation of this function is highly protocol-specific. A minimum step 
 597.225 +	is to check that the current context is a message.
 597.226 +	
 597.227 +	@param aPartList Indicates the message parts for which validation is requested 
 597.228 +	
 597.229 +	@return If valid, KErrNone If invalid, identifies the invalid part(s). The 
 597.230 +	error value is the bitmask of the TMsvPartList IDs for each invalid part */
 597.231 +	virtual TMsvPartList ValidateMessage(TMsvPartList aPartList)=0;
 597.232 +	/** Searches the specified message part(s) for the plain-text version of the text 
 597.233 +	to be found. 
 597.234 +	
 597.235 +	If the specified part list indicates a part that is not supported, or is not 
 597.236 +	present in the current message, the function behaves as if the specified part 
 597.237 +	exists but does not contain the required text.
 597.238 +	
 597.239 +	Requirements:
 597.240 +	
 597.241 +	The parts of the entry for which searching is allowed is implementation specific. 
 597.242 +	If no searching is supported, always return 0.
 597.243 +	
 597.244 +	@param aTextToFind The plain-text version of the text to be found. 
 597.245 +	@param aPartList Indicates the message parts which should be searched. 
 597.246 +	@return If the text was not found, or searching is unsupported, 0. If the text 
 597.247 +	was found, a bitmask of the TMsvPartList IDs for each part in which the text 
 597.248 +	was present. */
 597.249 +	virtual TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList)=0;
 597.250 +	//
 597.251 +	//
 597.252 +	/** Creates a reply message to the current message context. 
 597.253 +	
 597.254 +	Some MTMs may support inclusion of elements, specified by aPartlist, from 
 597.255 +	the original message in the reply. The parent for the new entry is specified 
 597.256 +	in aDestination. 
 597.257 +	
 597.258 +	The returned CMsvOperation object completes when creating the reply is complete. 
 597.259 +	On completion, the context is set to the reply message.
 597.260 +	
 597.261 +	Requirements:
 597.262 +	
 597.263 +	A typical implementation for this function would include the following steps: 
 597.264 +	
 597.265 +	1. create a new message in the specified destination by calling CMsvEntry::CreateL()
 597.266 +	
 597.267 +	2. set the entry index values as appropriate
 597.268 +	
 597.269 +	3. set the properties of the message as required. The normal minimum is to set 
 597.270 +	the address to the sender of the original message. An implementation may also 
 597.271 +	follow the options specified in aPartlist to set other properties, for example, 
 597.272 +	to include the original message text.
 597.273 +	
 597.274 +	4. set the context to the reply 
 597.275 +	
 597.276 +	5. return a CMsvOperation-derived object to provide asynchronous control and 
 597.277 +	monitoring of the operation
 597.278 +	
 597.279 +	If message replies are not supported, implementations should leave with KErrNotSupported.
 597.280 +	
 597.281 +	The implementation of this function may be similar to that of ForwardL(), 
 597.282 +	allowing opportunities for code sharing.
 597.283 +	
 597.284 +	@param aDestination The entry to which to assign the reply 
 597.285 +	@param aPartlist Defines the parts that are to be copied from the original 
 597.286 +	message into the reply 
 597.287 +	@param aCompletionStatus The request status to be completed when the operation 
 597.288 +	has finished 
 597.289 +	@leave KErrNotSupported The Client-side MTM does not support reply operations 
 597.290 +	@leave Other leave codes Dependent on implementation 
 597.291 +	@return If successful, this is an asynchronously completing reply operation. 
 597.292 +	If failed, this is a completed operation, with status set to the relevant 
 597.293 +	error code. */
 597.294 +	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus)=0;
 597.295 +	/** Creates a forwarded message from the current message context. 
 597.296 +	
 597.297 +	Some MTMs may 
 597.298 +	support inclusion of elements, specified by aPartlist, from the original message 
 597.299 +	in the forwarded message. The parent for the new entry is specified in aDestination. 
 597.300 +	The returned CMsvOperation object completes when editing the forwarded message 
 597.301 +	is complete. On completion, the context is set to the forwarded message.
 597.302 +	
 597.303 +	Requirements:
 597.304 +	
 597.305 +	A typical implementation for this function would include the following steps: 
 597.306 +	
 597.307 +	1. create a new message in the specified destination by calling CMsvEntry::CreateL()
 597.308 +	
 597.309 +	2. set the entry index values as appropriate
 597.310 +	
 597.311 +	3. set message content as required. The normal minimum is to include the text 
 597.312 +	of the original message. An implementation may also follow the options specified 
 597.313 +	in aPartlist to include other properties of the original message.
 597.314 +	
 597.315 +	4. set the context to the reply 
 597.316 +	
 597.317 +	5. return a CMsvOperation-derived object to provide asynchronous control and 
 597.318 +	monitoring of the operation
 597.319 +	
 597.320 +	If forwarded messages are not supported, implementations should leave with 
 597.321 +	KErrNotSupported.
 597.322 +	
 597.323 +	The implementation of this function may be similar to that of ReplyL(), allowing 
 597.324 +	opportunities for code sharing.
 597.325 +	
 597.326 +	@param aDestination The entry to which to assign the forwarded message 
 597.327 +	@param aPartList Defines the parts that are to be copied from the original 
 597.328 +	message into the forwarded message 
 597.329 +	@param aCompletionStatus The request status to be completed when the operation 
 597.330 +	has finished 
 597.331 +	@leave KErrNotSupported The Client-side MTM does not support creation of forwarded 
 597.332 +	messages 
 597.333 +	@leave Other leave codes Dependent on implementation 
 597.334 +	@return If successful, this is an asynchronously completing forward message 
 597.335 +	operation. If failed, this is a completed operation, with status set to the 
 597.336 +	relevant error code. */
 597.337 +	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus)=0;
 597.338 +	//
 597.339 +	// addresssee list (used by objects with no MTM knowledge)
 597.340 +	IMPORT_C const CMsvRecipientList& AddresseeList() const;
 597.341 +
 597.342 +	/** Adds an addressee for the current context.
 597.343 +	
 597.344 +	Addresses are not validated by checking their format by this function. Usually 
 597.345 +	that is performed by calling ValidateMessage().
 597.346 +	
 597.347 +	Requirements:
 597.348 +	
 597.349 +	Implementations should append the address to the object's address cache 
 597.350 +	in the protected iAddresseeList data member. Some implementations may also 
 597.351 +	wish to store addresses in an internal data structure appropriate for the 
 597.352 +	protocol, for example, a class holding message header information. 
 597.353 +	
 597.354 +	@param aRealAddress String representing an address to be added to the list 
 597.355 +	for the current message 
 597.356 +	@leave KErrNotSupported The message already has the maximum number of addressees 
 597.357 +	
 597.358 +	@leave Other leave codes Dependent on implementation */
 597.359 +	virtual void AddAddresseeL(const TDesC& aRealAddress)=0;
 597.360 +	/** Adds an addressee for the current context, and enables the client to specify 
 597.361 +	an alias, which may be useful for some protocols. For example, for fax, if 
 597.362 +	the address is the fax number, the alias could supply the recipient's name. 
 597.363 +	
 597.364 +	Addresses are not validated by checking their format by this function. Usually 
 597.365 +	that is performed by calling ValidateMessage().
 597.366 +	
 597.367 +	Requirements:
 597.368 +	
 597.369 +	Implementations should append the address to the object's address cache 
 597.370 +	in the protected iAddresseeList data member. Some implementations may also 
 597.371 +	wish to store addresses in an internal data structure appropriate for the 
 597.372 +	protocol, for example, a class holding message header information. 
 597.373 +	
 597.374 +	@param aRealAddress String representing an address to be added to the list 
 597.375 +	for the current message 
 597.376 +	@param aAlias Alias information 
 597.377 +	@leave KErrNotSupported The message already has the maximum number of addressees 
 597.378 +	
 597.379 +	@leave Other leave codes Dependent on implementation */
 597.380 +	virtual void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias)=0;
 597.381 +	
 597.382 +	IMPORT_C virtual void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress);
 597.383 +	IMPORT_C virtual void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress, const TDesC& aAlias);
 597.384 +	
 597.385 +	/** Removes an address from the current address list. The address is specified 
 597.386 +	by a zero-based index into the address list. If the index is not known, applications 
 597.387 +	can use AddresseeList() to retrieve the entire list to find the item.
 597.388 +	
 597.389 +	Requirements:
 597.390 +	
 597.391 +	Implementations should call iAddresseeList->Delete(aIndex) to remove the address 
 597.392 +	from in the address list protected data member.
 597.393 +	
 597.394 +	@param aIndex Index of address to be removed */
 597.395 +	virtual void RemoveAddressee(TInt aIndex)=0;
 597.396 +	//
 597.397 +	// standard data accessor/mutators
 597.398 +	IMPORT_C CRichText& Body();
 597.399 +	IMPORT_C const CRichText& Body() const;
 597.400 +	IMPORT_C virtual void SetSubjectL(const TDesC& aSubject); // default leaves with KErrNotSupported
 597.401 +	IMPORT_C virtual const TPtrC SubjectL() const; // default leaves with KErrNotSupported
 597.402 +	//
 597.403 +	// RTTI functions
 597.404 +	IMPORT_C virtual TInt QueryCapability(TUid aCapability, TInt& aResponse); // default returns KErrNotSupported
 597.405 +	/** Invokes synchronous protocol-specific operations. For asynchronous operations, 
 597.406 +	a similar function, InvokeAsyncFunctionL(), is available.
 597.407 +	
 597.408 +	aSelection and aParameter allow data to be passed to the operation. 
 597.409 +	
 597.410 +	Requirements:
 597.411 +	
 597.412 +	For functionality that requires message transport access, such as making a 
 597.413 +	connection, the implementation should pass the request onto the corresponding 
 597.414 +	Server-side MTM. This is done through calling CMsvSession::TransferCommandL(). 
 597.415 +	Implementations may also provide protocol-specific functions themselves if 
 597.416 +	this is useful.
 597.417 +	
 597.418 +	@param aFunctionId ID of the requested operation 
 597.419 +	@param aSelection Selection of message entries. This is used if the operation 
 597.420 +	requires message entries to work on. 
 597.421 +	@param aParameter Buffer containing input and output parameters. The format 
 597.422 +	of this is specific to the operation. 
 597.423 +	@leave KErrNotSupported aFunctionId is not a recognised operation ID 
 597.424 +	@leave Other leave codes Dependent on implementation */
 597.425 +	virtual void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter)=0;
 597.426 +	/** Invokes asynchronous protocol-specific operations. For synchronous operations, 
 597.427 +	a similar function, InvokeSyncFunctionL(), is available.
 597.428 +	
 597.429 +	aSelection and aParameter allow data to be passed to the operation. The TRequestStatus 
 597.430 +	and CMsvOperation objects are used as normal to control and monitor the operation.
 597.431 +	
 597.432 +	Requirements:
 597.433 +	
 597.434 +	For functionality that requires message transport access, such as making a 
 597.435 +	connection, the implementation should pass the request onto the corresponding 
 597.436 +	Server-side MTM. This is done through calling CMsvSession::TransferCommandL(). 
 597.437 +	Implementations may also provide protocol-specific functions themselves if 
 597.438 +	this is useful.
 597.439 +	
 597.440 +	InvokeAsyncFunctionL() should return a CMsvOperation-derived object to provide 
 597.441 +	asynchronous control and monitoring of the operation. If CMsvSession::TransferCommandL() 
 597.442 +	is called, this should be the CMsvOperation object returned by that function.
 597.443 +	
 597.444 +	@param aFunctionId ID of the requested operation 
 597.445 +	@param aSelection Selection of message entries. This is used if the operation 
 597.446 +	requires message entries to work on. 
 597.447 +	@param aParameter Buffer containing input and output parameters. The format 
 597.448 +	of this is specific to the operation. 
 597.449 +	@param aCompletionStatus The request status to be completed when the operation 
 597.450 +	has finished 
 597.451 +	@leave KErrNotSupported aFunctionId is not a recognised operation ID 
 597.452 +	@leave Other leave codes Dependent on implementation 
 597.453 +	@return If successful, this is an asynchronously completing operation. If failed, 
 597.454 +	this is a completed operation, with status set to the relevant error code. */
 597.455 +	virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus)=0;
 597.456 +	//
 597.457 +	IMPORT_C CMsvSession& Session();
 597.458 +
 597.459 +	// Attachment functions to support the SendAs API
 597.460 +	virtual inline void Filler1() {};
 597.461 +	virtual inline void Filler2() {};
 597.462 +	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 597.463 +	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 597.464 +	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 597.465 +	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
 597.466 +	IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 597.467 +	IMPORT_C virtual void CancelAttachmentOperation();
 597.468 +
 597.469 +	IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
 597.470 +
 597.471 +	// BIO functions to support the SendAs API
 597.472 +	// Entry().Entry().iBioType will be set by SendAs if this function does not leave.
 597.473 +	// The default implementation in CBaseMtm is to do nothing.
 597.474 +	IMPORT_C virtual void BioTypeChangedL(TUid aBioTypeUid);
 597.475 +	
 597.476 + 	IMPORT_C virtual TMsvId DefaultServiceL() const;
 597.477 + 	IMPORT_C virtual void RemoveDefaultServiceL();
 597.478 + 	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 597.479 + 	
 597.480 + 	//For setting the character encoding value, options are 7-bit, 8-bit and 16-bit Unicode.
 597.481 + 	IMPORT_C TInt SetMessageCharacterSet(TUint aCharSet);
 597.482 +
 597.483 +protected:
 597.484 +	IMPORT_C CBaseMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aSession);
 597.485 +	//
 597.486 +	IMPORT_C void StoreBodyL(CMsvStore& aStore);
 597.487 +	IMPORT_C void RestoreBodyL(CMsvStore& aStore);
 597.488 +	//
 597.489 +	/** Called by the base class functions SwitchCurrentEntryL() and SetCurrentEntryL() 
 597.490 +	when the context is changed to another entry. 
 597.491 +	
 597.492 +	Client applications do not use this function. It is relevant only to implementers 
 597.493 +	of derived classes.
 597.494 +	
 597.495 +	Requirements: 
 597.496 +	
 597.497 +	An implementation should clear:
 597.498 +	
 597.499 +	1. address data stored in iAddresseeList
 597.500 +	
 597.501 +	2. any caches of MTM-specific entry data relating to a previous context. For 
 597.502 +	example, if the implementation has a private buffer storing a message subject, 
 597.503 +	for access through Subject(), this buffer should be cleared. */
 597.504 +	virtual void ContextEntrySwitched()=0; // called after the context of this instance has been changed to another entry
 597.505 +	//
 597.506 +	IMPORT_C void HandleEntryEventL(TMsvEntryEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
 597.507 +
 597.508 +	// Method used for extension: called by non virtual methods that need 
 597.509 +	// to have a polymorphic behaviour.
 597.510 +	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 597.511 +	
 597.512 +	// From CBase
 597.513 +	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
 597.514 +
 597.515 +
 597.516 +private:
 597.517 +	void DeleteEntry();
 597.518 +	
 597.519 +	void AddFilePathAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, CMsvAttachment::TMsvAttachmentType aType, TRequestStatus& aStatus);
 597.520 +
 597.521 +protected:
 597.522 +	/** The current context. */
 597.523 +	CMsvEntry*		iMsvEntry;
 597.524 +	/** The address list for the current context. */
 597.525 +	CMsvRecipientList* iAddresseeList;
 597.526 +
 597.527 +	/** Paragraph formatting applied to the CRichText object for the body text, as 
 597.528 +	returned by Body(). This is set to an empty CParaFormatLayer instance whenever 
 597.529 +	the context is set.
 597.530 +	
 597.531 +	Implementations can modify this if they wish to apply particular formatting 
 597.532 +	to body text. */
 597.533 +	CParaFormatLayer* iParaFormatLayer;
 597.534 +	/** Character formatting applied to the CRichText object for the body text, as 
 597.535 +	returned by Body().
 597.536 +	
 597.537 +	Implementations can modify this if they wish to apply particular formatting 
 597.538 +	to body text. */
 597.539 +	CCharFormatLayer* iCharFormatLayer;
 597.540 +	
 597.541 +private:
 597.542 +	TMsvId	iEntryId;
 597.543 +	CRichText* iRichTextBody;
 597.544 +	CRegisteredMtmDll& iRegisteredMtmDll;
 597.545 +	CMsvSession& iSession;
 597.546 +	CMsvAttachmentWaiter* iAttachmentWaiter;
 597.547 +
 597.548 +	// Extra data member to allow for future extensions
 597.549 +	TAny* iExtensionData;
 597.550 +	};
 597.551 +
 597.552 +
 597.553 +#endif // __MTCLBASE_H__
   598.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   598.2 +++ b/epoc32/include/mw/mtclreg.h	Wed Mar 31 12:27:01 2010 +0100
   598.3 @@ -0,0 +1,77 @@
   598.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   598.5 +// All rights reserved.
   598.6 +// This component and the accompanying materials are made available
   598.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   598.8 +// which accompanies this distribution, and is available
   598.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  598.10 +//
  598.11 +// Initial Contributors:
  598.12 +// Nokia Corporation - initial contribution.
  598.13 +//
  598.14 +// Contributors:
  598.15 +//
  598.16 +// Description:
  598.17 +//
  598.18 +
  598.19 +
  598.20 +#if !defined __MTCLREG_H__
  598.21 +#define __MTCLREG_H__
  598.22 +
  598.23 +#include <e32base.h>		// CActive, TFileName etc.
  598.24 +#include <msvreg.h>
  598.25 +#include <msvapi.h>			// MMsvSessionObserver
  598.26 +
  598.27 +// CObserverRegistry mixes in session notification API
  598.28 +// this allows run-time update of the registries on the client-side.
  598.29 +// the server registry should inherit from CMtmDllRegistry
  598.30 +class CObserverRegistry : public CMtmDllRegistry, public MMsvSessionObserver
  598.31 +/** Base class for client, UI and UI data MTM registries.
  598.32 +
  598.33 +It implements the session observer interface to update the registry information 
  598.34 +when MTM groups are installed or uninstalled.
  598.35 +@publishedAll
  598.36 +@released
  598.37 +*/
  598.38 +	{
  598.39 +public:
  598.40 +	IMPORT_C virtual void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
  598.41 +	IMPORT_C ~CObserverRegistry();
  598.42 +
  598.43 +protected:
  598.44 +	IMPORT_C CObserverRegistry(CMsvSession& aMsvSession,TUid aDllTypeUid,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  598.45 +	IMPORT_C void ConstructL();
  598.46 +
  598.47 +protected:
  598.48 +	CMsvSession& iMsvSession;
  598.49 +	TBool iIsAdded;
  598.50 +	};
  598.51 +
  598.52 +// Client side MTM registry
  598.53 +class CClientMtmRegistry : public CObserverRegistry
  598.54 +/** Accesses the Client-side MTM registry. 
  598.55 +
  598.56 +This registry holds details of the all the Client-side MTMs currently available 
  598.57 +on the system. Message client applications use this class to get a CBaseMtm-derived 
  598.58 +object by which to access Client-side MTM functionality.
  598.59 +
  598.60 +Note that the base class CMtmDllRegistry provides functions for discovering 
  598.61 +what MTMs are present in the registry.
  598.62 + 
  598.63 +@publishedAll
  598.64 +@released
  598.65 +*/
  598.66 +	{
  598.67 +public:
  598.68 +	IMPORT_C static CClientMtmRegistry* NewL(CMsvSession& aMsvSession, TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=TTimeIntervalMicroSeconds32(30000000));
  598.69 +	IMPORT_C ~CClientMtmRegistry();
  598.70 +	IMPORT_C CBaseMtm* NewMtmL(TUid aMtmTypeUid);
  598.71 +	//
  598.72 +protected:
  598.73 +	CClientMtmRegistry(CMsvSession& aMsvSession,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  598.74 +	void ConstructL();
  598.75 +	//
  598.76 +private:
  598.77 +	CBaseMtm* DoNewMtmL(const RLibrary& aLib, CRegisteredMtmDll& aReg) const;
  598.78 +	};
  598.79 +
  598.80 +#endif // __MTCLREG_H__
   599.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   599.2 +++ b/epoc32/include/mw/mtmdef.h	Wed Mar 31 12:27:01 2010 +0100
   599.3 @@ -0,0 +1,69 @@
   599.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   599.5 +// All rights reserved.
   599.6 +// This component and the accompanying materials are made available
   599.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   599.8 +// which accompanies this distribution, and is available
   599.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  599.10 +//
  599.11 +// Initial Contributors:
  599.12 +// Nokia Corporation - initial contribution.
  599.13 +//
  599.14 +// Contributors:
  599.15 +//
  599.16 +// Description:
  599.17 +//
  599.18 +
  599.19 +
  599.20 +
  599.21 +/**
  599.22 + @file
  599.23 + @publishedAll
  599.24 + @released
  599.25 +*/
  599.26 +
  599.27 +#if !defined(__MTMDEF_H__)
  599.28 +#define __MTMDEF_H__
  599.29 +#if !defined(__MTCLBASE_H__)
  599.30 +#include <mtclbase.h>
  599.31 +#endif
  599.32 +#if !defined(__MTMDEF_HRH__)
  599.33 +#include <mtmdef.hrh>
  599.34 +#endif
  599.35 +
  599.36 +// no matching message parts
  599.37 +
  599.38 +const TMsvPartList KMsvMessagePartNone			= 0x00000000;
  599.39 +// message parts
  599.40 +
  599.41 +// Message body 
  599.42 +const TMsvPartList KMsvMessagePartBody			= 0x00000001;
  599.43 +
  599.44 +// Message recipients 
  599.45 +
  599.46 +const TMsvPartList KMsvMessagePartRecipient		= 0x00000002;
  599.47 +
  599.48 +// Message originator 
  599.49 +
  599.50 +const TMsvPartList KMsvMessagePartOriginator	= 0x00000004;
  599.51 +// Message description 
  599.52 +const TMsvPartList KMsvMessagePartDescription	= 0x00000008;
  599.53 +// Message date 
  599.54 +
  599.55 +const TMsvPartList KMsvMessagePartDate			= 0x00000010;
  599.56 +// Message attachments 
  599.57 +
  599.58 +const TMsvPartList KMsvMessagePartAttachments	= 0x00000020;
  599.59 +
  599.60 +// find attributes
  599.61 +//Flag to specify case-sensitive search. 
  599.62 +
  599.63 +const TMsvPartList KMsvFindCaseSensitive		= 0x80000000;
  599.64 +// Flag to specify search for whole words. 
  599.65 +
  599.66 +const TMsvPartList KMsvFindWholeWord			= 0x40000000;
  599.67 +
  599.68 +// Maximum length (in characters) of find text. 
  599.69 +
  599.70 +const TInt KMsvMaxFindTextLength = 500;
  599.71 +
  599.72 +#endif
   600.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   600.2 +++ b/epoc32/include/mw/mtmuibas.h	Wed Mar 31 12:27:01 2010 +0100
   600.3 @@ -0,0 +1,527 @@
   600.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   600.5 +// All rights reserved.
   600.6 +// This component and the accompanying materials are made available
   600.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   600.8 +// which accompanies this distribution, and is available
   600.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  600.10 +//
  600.11 +// Initial Contributors:
  600.12 +// Nokia Corporation - initial contribution.
  600.13 +//
  600.14 +// Contributors:
  600.15 +//
  600.16 +// Description:
  600.17 +//
  600.18 +
  600.19 +#if !defined(__MTMUIBAS_H__)
  600.20 +#define __MTMUIBAS_H__
  600.21 +
  600.22 +#if !defined(__MSVSTD_H__)
  600.23 +#include <msvstd.h>
  600.24 +#endif
  600.25 +#if !defined(__MTCLBASE_H__)
  600.26 +#include <mtclbase.h>
  600.27 +#endif
  600.28 +
  600.29 +// Forward references
  600.30 +class CMsvSession;
  600.31 +class CMsvOperation;
  600.32 +class CCoeEnv;
  600.33 +
  600.34 +///////////////////////////////////
  600.35 +// CBaseMtmUi - MTMUi base API   //
  600.36 +///////////////////////////////////
  600.37 +class CBaseMtmUi : public CBase
  600.38 +/** Provides MTM-specific user interaction, such as editing, viewing, deleting, 
  600.39 +and copying of message entries. 
  600.40 +
  600.41 +Message client applications use the class to access such functionality polymorphically. 
  600.42 +MTM implementers implement a derived class to provide such functionality for 
  600.43 +their message protocol.
  600.44 +
  600.45 +The base class is largely an interface definition: it implements little important 
  600.46 +functionality itself. For implementers, this documentation defines conditions 
  600.47 +that any implementation must fulfil, plus suggested semantics for behaviour. 
  600.48 +This still leaves many decisions in the hands of the implementer. A key design 
  600.49 +time activity is to define how the particular characteristics of the implemented 
  600.50 +protocol are best mapped to the interface. As this class is concerned with 
  600.51 +user interfaces, implementers should be sensitive to the look and feel of 
  600.52 +the target phone.
  600.53 +
  600.54 +Many functions are required to return an instance of a CMsvOperation-derived 
  600.55 +class to provide asynchronous control and monitoring to the caller of the 
  600.56 +operation being performed. 
  600.57 +
  600.58 +The following are some significant groups of functions:
  600.59 +
  600.60 +Entry manipulation functions: OpenL(), CloseL(), EditL(), and ViewL() are 
  600.61 +all available in two overloaded versions. The first version operates on the 
  600.62 +current context. The second version operates upon groups of entries specified 
  600.63 +by a CMsvEntrySelection argument. All entries must be in same folder and all 
  600.64 +of the correct MTM type. The context may change after calling these functions. 
  600.65 +Concrete User Interface MTMs can legally ignore any of the entries within 
  600.66 +the selection - many may, for example, simply open the first entry.
  600.67 +
  600.68 +Copying and moving functions: the CopyToL(), CopyFromL(), MoveToL(), and MoveFromL() 
  600.69 +functions are concerned with copying and moving entries to and from remote 
  600.70 +servers. MTMs can implement these functions to provide any user interaction 
  600.71 +needed before copying or moving can proceed, such as dialogs to confirm settings; 
  600.72 +and, any protocol-specific setup steps that can be done at this stage: for 
  600.73 +example, a fax MTM could render messages into the required image format.
  600.74 +
  600.75 +Progress information functions: DisplayProgressSummary() and GetProgress() 
  600.76 +convert MTM-specific progress information about some asynchronous operation, 
  600.77 +such as message sending, to a human-readable form. The progress information 
  600.78 +to pass into these functions is, in general, obtained from an on-going CMsvOperation 
  600.79 +by calling CMsvOperation::Progress(). The nature of any information provided 
  600.80 +is MTM-specific. 
  600.81 +
  600.82 +MTM-specific UI functions: MTM components can offer protocol-specific functionality 
  600.83 +not provided by base class interface functions. MTM components define IDs 
  600.84 +that correspond to each protocol-specific operation offered, and implement 
  600.85 +the InvokeSyncFunctionL() and InvokeAsyncFunctionL() functions to allow clients 
  600.86 +to access these operations by passing in the appropriate ID. Two functions 
  600.87 +are provided to allow the MTM component to offer both synchronous and asynchronous 
  600.88 +functionality. Message client applications can dynamically add user-interface 
  600.89 +features for these operations using CBaseMtmUiData::MtmSpecificFunctions(). 
  600.90 +MTM developers should document the IDs if they wish to make the operations 
  600.91 +available to clients. 
  600.92 +@publishedAll
  600.93 +@released
  600.94 +*/
  600.95 +	{
  600.96 +public:
  600.97 +	//  --- enums ---
  600.98 +	/** Progress information buffer length. */
  600.99 +	enum {
 600.100 +	/** Defines the maximum buffer length used in GetProgress() to hold progress information. */
 600.101 +	EProgressStringMaxLen=255};
 600.102 +	//
 600.103 +	// --- Set up functionality ---
 600.104 +	IMPORT_C void SetPreferences(TUint aFlags);
 600.105 +	IMPORT_C TUint Preferences() const;
 600.106 +	//
 600.107 +	// --- Destruction ---
 600.108 +	IMPORT_C virtual ~CBaseMtmUi();
 600.109 +	//
 600.110 +	// --- Accessor functions ---
 600.111 +	IMPORT_C TUid Type() const;
 600.112 +	IMPORT_C CBaseMtm& BaseMtm() const;
 600.113 +	//
 600.114 +	// --- Functions NOT dependent on the current context ---
 600.115 +	IMPORT_C virtual CMsvOperation* CreateL(const TMsvEntry& aEntry, CMsvEntry& aParent, TRequestStatus& aStatus);
 600.116 +	//
 600.117 +	// --- Functions dependent on the current context ---
 600.118 +	/** Opens an entry. 
 600.119 +	
 600.120 +	The behaviour that this implies is dependent on the current context:
 600.121 +	
 600.122 +	1. for message contexts, OpenL() is the equivalent of EditL(), or for read-only 
 600.123 +	messages, ViewL(). Whether opening of remote messages is allowed is MTM-specific.
 600.124 +	
 600.125 +	2. for service contexts, the function may initiate a connection to obtain the 
 600.126 +	service contents from the server, completing asynchronously
 600.127 +	
 600.128 +	3. for remote folder contexts, dependent on implementation, the function may 
 600.129 +	initiate a connection to obtain the folder contents from the server, completing 
 600.130 +	asynchronously
 600.131 +	
 600.132 +	The returned CMsvOperation object completes when opening is complete.
 600.133 +	
 600.134 +	Requirements:
 600.135 +	
 600.136 +	If opening entries is not supported, implementations should leave with KErrNotSupported. 
 600.137 +	Otherwise, implementations should:
 600.138 +	
 600.139 +	1. check aEntry.iType.iUid to ensure that they can open the requested type of 
 600.140 +	entry and leave with code KErrNotSupported if they cannot
 600.141 +	
 600.142 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.143 +	monitoring of the operation
 600.144 +	
 600.145 +	3. for remote messages, typically, copy the messages to the Inbox
 600.146 +	
 600.147 +	@param aStatus The request status to be completed when the operation has finished 
 600.148 +	
 600.149 +	@leave KErrNotSupported The User Interface MTM does not support open operations, 
 600.150 +	or opening is inappropriate to the current context 
 600.151 +	@leave Other Dependent on implementation 
 600.152 +	@return If successful, this is an asynchronously completing open operation. 
 600.153 +	If failed, this is a completed operation, with status set to the relevant 
 600.154 +	error code. */
 600.155 +	virtual CMsvOperation* OpenL(TRequestStatus& aStatus) = 0; 
 600.156 +	/** Closes an entry. The behaviour that this implies is dependent on the current 
 600.157 +	context:
 600.158 +	
 600.159 +	1. for message contexts, this usually closes any launched editors or viewers
 600.160 +	
 600.161 +	2. for folder contexts, leaves with KErrNotSupported
 600.162 +	
 600.163 +	3. for service contexts, causes closure of a connection to a server
 600.164 +	
 600.165 +	The returned CMsvOperation object completes when closing is complete.
 600.166 +	
 600.167 +	Requirements:
 600.168 +	
 600.169 +	Implementations should:
 600.170 +	
 600.171 +	1. check aEntry.iType.iUid to ensure that they can close the requested type of 
 600.172 +	entry and leave with code KErrNotSupported if they cannot
 600.173 +	
 600.174 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.175 +	monitoring of the operation
 600.176 +	
 600.177 +	@param aStatus The request status to be completed when the operation has finished 
 600.178 +	
 600.179 +	@leave KErrNotSupported The User Interface MTM does not support close operations, 
 600.180 +	or closing is inappropriate to the current context 
 600.181 +	@leave Other Dependent on implementation 
 600.182 +	@return If successful, this is an asynchronously completing close operation. 
 600.183 +	If failed, this is a completed operation, with status set to the relevant 
 600.184 +	error code. */
 600.185 +	virtual CMsvOperation* CloseL(TRequestStatus& aStatus) = 0;
 600.186 +	/** Edits an entry. 
 600.187 +	
 600.188 +	The behaviour that this implies is dependent on the current 
 600.189 +	context:
 600.190 +	
 600.191 +	1. for message contexts, this usually launches the appropriate message editor, 
 600.192 +	or returns status KErrReadOnly if the message is not editable
 600.193 +	
 600.194 +	2. for remote folder contexts, launches a settings dialog, for example to rename 
 600.195 +	the folder, completing asynchronously
 600.196 +	
 600.197 +	3. for service contexts, launches a service settings dialog, completing asynchronously
 600.198 +	
 600.199 +	The returned CMsvOperation object completes when editing is complete.
 600.200 +	
 600.201 +	Requirements:
 600.202 +	
 600.203 +	Implementations should:
 600.204 +	
 600.205 +	1. check aEntry.iType.iUid to ensure that they can edit the requested type of 
 600.206 +	entry and leave with code KErrNotSupported if they cannot
 600.207 +	
 600.208 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.209 +	monitoring of the operation
 600.210 +	
 600.211 +	3. for remote messages, typically, copy the messages to the Inbox
 600.212 +	
 600.213 +	4. follow the leave protocols described in Leave considerations below
 600.214 +	
 600.215 +	@param aStatus The request status to be completed when the operation has finished 
 600.216 +	@leave KErrNotSupported The User Interface MTM does not support edit operations, 
 600.217 +	or editing is inappropriate to the current context 
 600.218 +	@leave KErrReadOnly Context is read-only 
 600.219 +	@leave Other Dependent on implementation 
 600.220 +	@return If successful, this is an asynchronously completing edit operation. 
 600.221 +	If failed, this is a completed operation, with status set to the relevant 
 600.222 +	error code. */
 600.223 +	virtual CMsvOperation* EditL(TRequestStatus& aStatus) = 0;// Launches editor/settings dialog as appropriate  
 600.224 +	/** Views an entry. 
 600.225 +	
 600.226 +	For message contexts, this usually launches the appropriate 
 600.227 +	message viewer. Other context types leave with KErrNotSupported. The returned 
 600.228 +	CMsvOperation object completes when viewing is complete.
 600.229 +	
 600.230 +	Requirements:
 600.231 +	
 600.232 +	Implementations should:
 600.233 +	
 600.234 +	1. check aEntry.iType.iUid to ensure that they can view the requested type of 
 600.235 +	entry and leave with code KErrNotSupported if they cannot
 600.236 +	
 600.237 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.238 +	monitoring of the operation
 600.239 +	
 600.240 +	@param aStatus The request status to be completed when the operation has finished 
 600.241 +	@leave KErrNotSupported The User Interface MTM does not support view operations, 
 600.242 +	or viewing is inappropriate to the current context 
 600.243 +	@leave Other Dependent on implementation 
 600.244 +	@return If successful, this is an asynchronously completing view operation. 
 600.245 +	If failed, this is a completed operation, with status set to the relevant 
 600.246 +	error code. */
 600.247 +	virtual CMsvOperation* ViewL(TRequestStatus& aStatus) = 0;// Launches viewer/settings dialog as appropriate  
 600.248 +	//
 600.249 +	// --- Actions upon message selections ---
 600.250 +	// --- Selections must be in same folder and all of the correct MTM type ---
 600.251 +	// --- Context may change after calling these functions ---
 600.252 +	/** Opens a selection of entries. 
 600.253 +	
 600.254 +	The behaviour that this implies is dependent on the current context:
 600.255 +	
 600.256 +	1. for message contexts, OpenL() is the equivalent of EditL(), or for read-only 
 600.257 +	messages, ViewL(). Whether opening of remote messages is allowed is MTM-specific.
 600.258 +	
 600.259 +	2. for service contexts, the function may initiate a connection to obtain the 
 600.260 +	service contents from the server, completing asynchronously
 600.261 +	
 600.262 +	3. for remote folder contexts, dependent on implementation, the function may 
 600.263 +	initiate a connection to obtain the folder contents from the server, completing 
 600.264 +	asynchronously
 600.265 +	
 600.266 +	The returned CMsvOperation object completes when opening is complete.
 600.267 +	
 600.268 +	Requirements:
 600.269 +	
 600.270 +	If opening entries is not supported, implementations should leave with KErrNotSupported. 
 600.271 +	Otherwise, implementations should:
 600.272 +	
 600.273 +	1. check aEntry.iType.iUid to ensure that they can open the requested type of 
 600.274 +	entry and leave with code KErrNotSupported if they cannot
 600.275 +	
 600.276 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.277 +	monitoring of the operation
 600.278 +	
 600.279 +	3. for remote messages, typically, copy the messages to the Inbox
 600.280 +	
 600.281 +	@param aStatus The request status to be completed when the operation has finished 
 600.282 +	@param aSelection Selection of message entries 
 600.283 +	@leave KErrNotSupported The User Interface MTM does not support open operations, 
 600.284 +	or opening is inappropriate to the current context 
 600.285 +	@leave Other Dependent on implementation 
 600.286 +	@return If successful, this is an asynchronously completing open operation. 
 600.287 +	If failed, this is a completed operation, with status set to the relevant 
 600.288 +	error code. */
 600.289 +	virtual CMsvOperation* OpenL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0; 
 600.290 +	/** Closes a selection of entries. 
 600.291 +	
 600.292 +	The behaviour that this implies is dependent on the current context:
 600.293 +	
 600.294 +	1. for message contexts, this usually closes any launched editors or viewers
 600.295 +	
 600.296 +	2. for folder contexts, leaves with KErrNotSupported
 600.297 +	
 600.298 +	3. for service contexts, causes closure of a connection to a server
 600.299 +	
 600.300 +	The returned CMsvOperation object completes when closing is complete.
 600.301 +	
 600.302 +	Requirements:
 600.303 +	
 600.304 +	Implementations should:
 600.305 +	
 600.306 +	1. check aEntry.iType.iUid to ensure that they can close the requested type of 
 600.307 +	entry and leave with code KErrNotSupported if they cannot
 600.308 +	
 600.309 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.310 +	monitoring of the operation
 600.311 +	
 600.312 +	@param aStatus The request status to be completed when the operation has finished 
 600.313 +	@param aSelection Selection of message entries 
 600.314 +	@leave KErrNotSupported The User Interface MTM does not support close operations, 
 600.315 +	or closing is inappropriate to the current context 
 600.316 +	@leave Other Dependent on implementation 
 600.317 +	@return If successful, this is an asynchronously completing close operation. 
 600.318 +	If failed, this is a completed operation, with status set to the relevant 
 600.319 +	error code. */
 600.320 +	virtual CMsvOperation* CloseL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;
 600.321 +	/** Edits a selection of entries. 
 600.322 +	
 600.323 +	The behaviour that this implies is dependent on the current context:
 600.324 +	
 600.325 +	1. for message contexts, this usually launches the appropriate message editor, 
 600.326 +	or returns status KErrReadOnly if the message is not editable
 600.327 +	
 600.328 +	2. for remote folder contexts, launches a settings dialog, for example to rename 
 600.329 +	the folder, completing asynchronously
 600.330 +	
 600.331 +	3. for service contexts, launches a service settings dialog, completing asynchronously
 600.332 +	
 600.333 +	The returned CMsvOperation object completes when editing is complete.
 600.334 +	
 600.335 +	Requirements:
 600.336 +	
 600.337 +	Implementations should:
 600.338 +	
 600.339 +	1. check aEntry.iType.iUid to ensure that they can edit the requested type of 
 600.340 +	entry and leave with code KErrNotSupported if they cannot
 600.341 +	
 600.342 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.343 +	monitoring of the operation
 600.344 +	
 600.345 +	3. for remote messages, typically, copy the messages to the Inbox
 600.346 +	
 600.347 +	4. follow the leave protocols described in Leave considerations below
 600.348 +	
 600.349 +	@param aStatus The request status to be completed when the operation has finished 
 600.350 +	@param aSelection Selection of message entries 
 600.351 +	@leave KErrNotSupported The User Interface MTM does not support edit operations, 
 600.352 +	or editing is inappropriate to the current context 
 600.353 +	@leave KErrReadOnly Context is read-only 
 600.354 +	@leave Other Dependent on implementation 
 600.355 +	@return If successful, this is an asynchronously completing edit operation. 
 600.356 +	If failed, this is a completed operation, with status set to the relevant 
 600.357 +	error code. */
 600.358 +	virtual CMsvOperation* EditL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;// Launches editor/settings dialog as appropriate  
 600.359 +	/** Views a selection of entries. 
 600.360 +	
 600.361 +	For message contexts, this usually launches the appropriate 
 600.362 +	message viewer. Other context types leave with KErrNotSupported. The returned 
 600.363 +	CMsvOperation object completes when viewing is complete.
 600.364 +	
 600.365 +	Requirements:
 600.366 +	
 600.367 +	Implementations should:
 600.368 +	
 600.369 +	1. check aEntry.iType.iUid to ensure that they can view the requested type of 
 600.370 +	entry and leave with code KErrNotSupported if they cannot
 600.371 +	
 600.372 +	2. return a CMsvOperation-derived object to provide asynchronous control and 
 600.373 +	monitoring of the operation
 600.374 +	
 600.375 +	@param aStatus The request status to be completed when the operation has finished 
 600.376 +	@param aSelection Selection of message entries 
 600.377 +	@leave KErrNotSupported The User Interface MTM does not support view operations, 
 600.378 +	or viewing is inappropriate to the current context 
 600.379 +	@leave Other Dependent on implementation 
 600.380 +	@return If successful, this is an asynchronously completing view operation. 
 600.381 +	If failed, this is a completed operation, with status set to the relevant 
 600.382 +	error code. */
 600.383 +	virtual CMsvOperation* ViewL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;// Launches viewer/settings dialog as appropriate  
 600.384 +	/** Cancels the sending of specified messages.
 600.385 +	
 600.386 +	@param aStatus The request status to be completed when the operation has finished 	
 600.387 +	@param aSelection Selection of message entries 
 600.388 +	@leave KErrNotSupported The User Interface MTM does not support cancel operations, 
 600.389 +	or cancelling is inappropriate to the current context 
 600.390 +	@leave Other Dependent on implementation 
 600.391 +	@return If successful, this is an asynchronously completing cancel operation. 
 600.392 +	If failed, this is a completed operation, with status set to the relevant 
 600.393 +	error code. */
 600.394 +	virtual CMsvOperation* CancelL(TRequestStatus& aStatus, const CMsvEntrySelection& aSelection) = 0;
 600.395 +	//
 600.396 +	// --- Deletion ---
 600.397 +	// --- Deletes entries from the current context, which must be a folder or service of the relevant MTM ---
 600.398 +	IMPORT_C virtual CMsvOperation* DeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Deletes selection from current context
 600.399 +	// --- Un-deletes entries from the current context, which must be a folder or service of the relevant MTM ---
 600.400 +	IMPORT_C virtual CMsvOperation* UnDeleteFromL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);//Un-deletes selection from current context
 600.401 +	// --- Deletes service, which need not be the current context ---
 600.402 +	IMPORT_C virtual CMsvOperation* DeleteServiceL(const TMsvEntry& aService, TRequestStatus& aStatus); // default implementation simply delegates to the server
 600.403 +	//
 600.404 +	// --- Message responding ---
 600.405 +	/** Creates a reply message to the current message context, and allows the user 
 600.406 +	to edit it through a message-type specific editor. 
 600.407 +	
 600.408 +	Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the reply. 
 600.409 +	The parent for the new entry is specified in aDestination. The returned CMsvOperation 
 600.410 +	object completes when editing the reply is complete. On completion, the context 
 600.411 +	is set to the reply message.
 600.412 +	
 600.413 +	Requirements:
 600.414 +	
 600.415 +	A typical implementation for this function would include the following steps: 
 600.416 +	
 600.417 +	1. create a new reply entry by calling CBaseMtm::ReplyL()
 600.418 +	
 600.419 +	2. call EditL() allow the user to edit the reply
 600.420 +	
 600.421 +	3. return a CMsvOperation-derived object to provide asynchronous control and 
 600.422 +	monitoring of the operation
 600.423 +	
 600.424 +	If message replies are not supported, implementations should leave with KErrNotSupported.
 600.425 +	
 600.426 +	@param aDestination The entry to which to assign the reply 
 600.427 +	@param aPartlist Defines the parts which are to be copied from the original 
 600.428 +	message into the reply. See CBaseMtm::ReplyL() for details. 
 600.429 +	@param aCompletionStatus The request status to be completed when the operation 
 600.430 +	has finished 
 600.431 +	@leave KErrNotSupported The User Interface MTM does not support reply operations 
 600.432 +	@leave Other Dependent on implementation 
 600.433 +	@return If successful, this is an asynchronously completing reply operation. 
 600.434 +	If failed, this is a completed operation, with status set to the relevant 
 600.435 +	error code. */
 600.436 +	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus) = 0;
 600.437 +	/**
 600.438 +	Creates a forwarded message from the current message context, and allows the user to edit it through a message-type 
 600.439 +	specific editor. 
 600.440 +	
 600.441 +	Some MTMs may support inclusion of elements, specified by aPartlist, from the original message in the 
 600.442 +	forwarded message. The parent for the new entry is specified in aDestination. The returned CMsvOperation 
 600.443 +	object completes when editing the forwarded message is complete. On completion, the context is set to the forwarded message.
 600.444 +
 600.445 +	Requirements:
 600.446 +
 600.447 +	A typical implementation for this function would include the following steps:
 600.448 +
 600.449 +	1. create a new forwarded message entry by calling CBaseMtm::ForwardL()
 600.450 +
 600.451 +	2. call EditL() allow the user to edit the forwarded message
 600.452 +
 600.453 +	3. return a CMsvOperation-derived object to provide asynchronous control and monitoring of the operation
 600.454 +
 600.455 +	If forwarded messages are not supported, implementations should leave with KErrNotSupported.
 600.456 +
 600.457 +	@return	If successful, this is an asynchronously completing forward message operation. If failed, 
 600.458 +	this is a completed operation, with status set to the relevant error code. 	
 600.459 +	@param aDestination The entry to which to assign the forwarded message 
 600.460 +	@param aPartList Defines the parts which are to be copied from the original message into the forwarded message 
 600.461 +	@param aCompletionStatus The request status to be completed when the operation has finished 
 600.462 +	@leave KErrNotSupported The User Interface MTM does not support message forwarding operations 
 600.463 +	@leave Other Dependent on implementation 
 600.464 +	*/
 600.465 +	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus) = 0;
 600.466 +
 600.467 +	//
 600.468 +	// --- Copy and move functions ---
 600.469 +	// --- Context should be set to folder or entry of this MTM ---
 600.470 +	// --- Default implementations imply call the relevant CMsvEntry functions ---
 600.471 +	IMPORT_C virtual CMsvOperation* CopyToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to copy to
 600.472 +	IMPORT_C virtual CMsvOperation* MoveToL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus);// Context should be MTM folder/service to move to
 600.473 +	IMPORT_C virtual CMsvOperation* CopyFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to copy from
 600.474 +	IMPORT_C virtual CMsvOperation* MoveFromL(const CMsvEntrySelection& aSelection, TMsvId aTargetId, TRequestStatus& aStatus);// Context should be MTM folder/service to move from
 600.475 +	//
 600.476 +	// --- Interpret transfer progress ---
 600.477 +	IMPORT_C virtual TInt DisplayProgressSummary(const TDesC8& aProgress) const;// Used for display operation summary (usually completed operations). Default implementation returns KErrNotSupported. 
 600.478 +	IMPORT_C virtual TInt GetProgress(const TDesC8& aProgress, TBuf<EProgressStringMaxLen>& aReturnString, TInt& aTotalEntryCount, TInt& aEntriesDone,
 600.479 +		TInt& aCurrentEntrySize, TInt& aCurrentBytesTrans) const;// Default implementation returns KErrNotSupported
 600.480 +	//	
 600.481 +	// --- RTTI functions ---
 600.482 +	IMPORT_C virtual TInt QueryCapability(TUid aCapability, TInt& aResponse);
 600.483 +	IMPORT_C virtual void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
 600.484 +	IMPORT_C virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TRequestStatus& aCompletionStatus, 
 600.485 +		TDes8& aParameter);
 600.486 +
 600.487 +protected:
 600.488 +	// --- Construction ---
 600.489 +	IMPORT_C CBaseMtmUi(CBaseMtm& aBaseMtm, CRegisteredMtmDll& aRegisteredMtmDll);
 600.490 +	IMPORT_C virtual void ConstructL();
 600.491 +	/** Sets the full path and name of the resource file associated with the User Interface MTM. 
 600.492 +	
 600.493 +	Client applications do not use this function. It is relevant only to implementers of derived classes.
 600.494 +	
 600.495 +	Requirements:
 600.496 +	
 600.497 +	The function is called by CBaseMtmUi::ConstructL(), which then loads the resource 
 600.498 +	file.
 600.499 +	
 600.500 +	@param aFileName Filename buffer to be filled with the resource file path 
 600.501 +	and name */
 600.502 +	virtual void GetResourceFileName(TFileName& aFileName) const = 0;
 600.503 +	//
 600.504 +	// --- Utility functions ---
 600.505 +	IMPORT_C CMsvSession& Session() const;
 600.506 +
 600.507 +	// Method used for extension: called by non virtual methods that need 
 600.508 +	// to have a polymorphic behaviour.
 600.509 +	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 600.510 +
 600.511 +protected:
 600.512 +	// --- Data ---
 600.513 +	/** The CBaseMtm-derived object (Client-side MTM) that requested the User Interface 
 600.514 +	MTM. It is set by the constructor. */
 600.515 +	CBaseMtm&			iBaseMtm;
 600.516 +	/** Control environment object. It is set by the constructor. */
 600.517 +	CCoeEnv*			iCoeEnv;
 600.518 +	/** This flag records the preferences as set by SetPreferences(). */
 600.519 +	TUint				iFlags;
 600.520 +
 600.521 +private:
 600.522 +	// --- Data ---
 600.523 +	CRegisteredMtmDll&	iRegisteredMtmDll;
 600.524 +	TInt				iResourceFileOffset;
 600.525 +	// Extra data member to allow for future extensions
 600.526 +	TAny* iExtensionData;
 600.527 +	};
 600.528 +
 600.529 +
 600.530 +#endif // __MTMUIBAS_H__
   601.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   601.2 +++ b/epoc32/include/mw/mtmuids.h	Wed Mar 31 12:27:01 2010 +0100
   601.3 @@ -0,0 +1,155 @@
   601.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   601.5 +// All rights reserved.
   601.6 +// This component and the accompanying materials are made available
   601.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   601.8 +// which accompanies this distribution, and is available
   601.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  601.10 +//
  601.11 +// Initial Contributors:
  601.12 +// Nokia Corporation - initial contribution.
  601.13 +//
  601.14 +// Contributors:
  601.15 +//
  601.16 +// Description:
  601.17 +//
  601.18 +
  601.19 +
  601.20 +
  601.21 +/**
  601.22 + @file
  601.23 + @publishedAll
  601.24 + @released
  601.25 +*/
  601.26 +#if !defined(__MTMUIDS_H__)
  601.27 +#define __MTMUIDS_H__
  601.28 +#if !defined(__E32STD_H__)
  601.29 +#include <e32std.h>
  601.30 +#endif
  601.31 +#if !defined(__MTMDEF_HRH__)
  601.32 +#include <mtmdef.hrh>
  601.33 +#endif
  601.34 +
  601.35 +// capabilities (TUid)
  601.36 +/**
  601.37 +* Maximum message body size.
  601.38 +* @Return type: TInt. 
  601.39 +* @publishedAll
  601.40 +* @released
  601.41 +*/
  601.42 +const TUid KUidMtmQueryMaxBodySize={KUidMtmQueryMaxBodySizeValue};
  601.43 +/**
  601.44 +* Maximum total size of message.
  601.45 +* @publishedAll
  601.46 +* @released
  601.47 +* @Return type: TInt.
  601.48 +*/
  601.49 +const TUid KUidMtmQueryMaxTotalMsgSize={KUidMtmQueryMaxTotalMsgSizeValue};
  601.50 +/** Character widths supported by message type (returned TInt is the sum of the 
  601.51 +appropriate values KMtm7BitBody, KMtm8BitBody, KMtm16BitBody, and KMtmBinaryBody). */
  601.52 +
  601.53 +/**
  601.54 +* @publishedAll
  601.55 +* @released
  601.56 +*/
  601.57 +const TUid KUidMtmQuerySupportedBody={KUidMtmQuerySupportedBodyValue};
  601.58 +/**
  601.59 +* Are attachments supported.
  601.60 +* @No return value. 
  601.61 +* @publishedAll
  601.62 +* @released
  601.63 +*/
  601.64 +const TUid KUidMtmQuerySupportAttachments={KUidMtmQuerySupportAttachmentsValue};
  601.65 +/**
  601.66 +* Does the MTM message type have a subject field.
  601.67 +* @No return value. 
  601.68 +* @publishedAll
  601.69 +* @released
  601.70 +*/
  601.71 +const TUid KUidMtmQuerySupportSubject={KUidMtmQuerySupportSubjectValue};
  601.72 +/**
  601.73 +* Does the MTM support folders.
  601.74 +* @No return value. 
  601.75 +* @publishedAll
  601.76 +* @released
  601.77 +*/
  601.78 +const TUid KUidMtmQuerySupportsFolder={KUidMtmQuerySupportsFolderValue};
  601.79 +/**
  601.80 +* Off-line operation allowed.
  601.81 +* @No return value.
  601.82 +* @publishedAll
  601.83 +* @released
  601.84 +*/
  601.85 +const TUid KUidMtmQueryOffLineAllowed={KUidMtmQueryOffLineAllowedValue};
  601.86 +/**
  601.87 +* Send message.
  601.88 +* @No return value.
  601.89 +* @publishedAll
  601.90 +* @released
  601.91 +*/ 
  601.92 +const TUid KUidMtmQueryCanSendMsg={KUidMtmQueryCanSendMsgValue};
  601.93 +/**
  601.94 +* Receive message.
  601.95 +* @No return value. 
  601.96 +* @publishedAll
  601.97 +* @released
  601.98 +*/
  601.99 +const TUid KUidMtmQueryCanReceiveMsg={KUidMtmQueryCanReceiveMsgValue};
 601.100 +/**
 601.101 +* Maximum number of recipients (-1 indicates unlimited numbers).
 601.102 +* @Return type: TInt
 601.103 +* @publishedAll
 601.104 +* @released
 601.105 +*/
 601.106 +const TUid KUidMtmQueryMaxRecipientCount={KUidMtmQueryMaxRecipientCountValue};
 601.107 +/**
 601.108 +* When using the MTM in Send-As, does a rendered image have to be prepared (i.e.fax).
 601.109 +* @Return type: TBool. 
 601.110 +* @publishedAll
 601.111 +* @released
 601.112 +*/
 601.113 +const TUid KUidMtmQuerySendAsRequiresRenderedImage={KUidMtmQuerySendAsRequiresRenderedImageValue};
 601.114 +/**
 601.115 +* Printer driver UID for rendering the fax image.
 601.116 +* @Return type: TUid
 601.117 +* @publishedAll
 601.118 +* @released
 601.119 +*/
 601.120 +const TUid KUidMtmQuerySendAsRenderingUid={KUidMtmQuerySendAsRenderingUidValue};
 601.121 +/**
 601.122 +* UID of default message editor.
 601.123 +* @Return type: TUid. 
 601.124 +* @publishedAll
 601.125 +* @released
 601.126 +*/
 601.127 +const TUid KUidMsvMtmQueryEditorUid={KUidMsvMtmQueryEditorUidValue};
 601.128 +/**
 601.129 +* Does the MTM support BIO messages.
 601.130 +* @No return value. 
 601.131 +* @publishedAll
 601.132 +* @released
 601.133 +*/
 601.134 +const TUid KUidMsvQuerySupportsBioMsg={KUidMtmQuerySupportsBioMsgValue};
 601.135 +/**
 601.136 +* Does the MTM support scheduled sending.
 601.137 +* @No return value. 
 601.138 +* @publishedAll
 601.139 +* @released
 601.140 +*/
 601.141 +const TUid KUidMsvQuerySupportsScheduling={KUidMtmQuerySupportsSchedulingValue};
 601.142 +/**
 601.143 +* Does the MTM support the use of recipient type.
 601.144 +* @No return value. 
 601.145 +* @publishedAll
 601.146 +* @released
 601.147 +*/
 601.148 +const TUid KUidMtmQuerySupportsRecipientType={KUidMtmQuerySupportsRecipientTypeValue};
 601.149 +/**
 601.150 +* Support for Sending messages using SendAs.  
 601.151 +* If this is supported, then the MTM supports sending messages created through the SendAs API.
 601.152 +* @Return type: TBool. 
 601.153 +* @publishedAll
 601.154 +* @released
 601.155 +*/
 601.156 +const TUid KUidMtmQuerySendAsMessageSendSupport={KUidMtmQuerySendAsMessageSendSupportValue};
 601.157 +
 601.158 +#endif
   602.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   602.2 +++ b/epoc32/include/mw/mtsr.h	Wed Mar 31 12:27:01 2010 +0100
   602.3 @@ -0,0 +1,504 @@
   602.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   602.5 +// All rights reserved.
   602.6 +// This component and the accompanying materials are made available
   602.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   602.8 +// which accompanies this distribution, and is available
   602.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  602.10 +//
  602.11 +// Initial Contributors:
  602.12 +// Nokia Corporation - initial contribution.
  602.13 +//
  602.14 +// Contributors:
  602.15 +//
  602.16 +// Description:
  602.17 +//
  602.18 +
  602.19 +#ifndef __MTSR_H__
  602.20 +#define __MTSR_H__
  602.21 +
  602.22 +#include <e32base.h>
  602.23 +#include <badesca.h>
  602.24 +#include <msvstd.h>
  602.25 +#include <msvreg.h>
  602.26 +#include <tnonoperationmtmdata.h>
  602.27 +
  602.28 +// forward declarations
  602.29 +class RWriteStream;
  602.30 +class RReadStream;
  602.31 +class RFs;
  602.32 +class CDictionaryFileStore;
  602.33 +class CInstalledMtmGroup;
  602.34 +class CMsvServerEntry;
  602.35 +class TMsvSystemProgress;
  602.36 +
  602.37 +class CBaseServerMtm : public CActive
  602.38 +/** Base class for Server-side MTM components. Server-side MTMs provide all message 
  602.39 +transport functionality for a particular messaging protocol. 
  602.40 +
  602.41 +MTM implementers implement a derived class to provide such functionality for 
  602.42 +their message protocol. Writers of message client applications are never concerned 
  602.43 +with this class and its sub-classes, as these are only accessed by the Message 
  602.44 +Server. 
  602.45 +
  602.46 +Each MTM interprets the generic commands in different ways. For example, a 
  602.47 +Fax MTM would transmit a fax when asked to copy a fax from a local folder 
  602.48 +to a fax service. For the same function, an IMAP MTM would create a copy of 
  602.49 +the message on the remote server and update the message index to show the 
  602.50 +copy of the message on the remote server. An important initial design task 
  602.51 +is to the map the functions to the functionality provided by the protocol.
  602.52 +
  602.53 +Server-side MTM functions are called by the Message Server as a result of 
  602.54 +a client request that requires some remote operation with the MTM's protocol. 
  602.55 +The following steps give a simplified view of the usual sequence of events:
  602.56 +
  602.57 +1. the Message Server instantiates a Server-side MTM object through the factory 
  602.58 +function
  602.59 +
  602.60 +2. the Message Server calls the appropriate asynchronous function on the Server-side 
  602.61 +MTM interface, passing a TRequestStatus argument
  602.62 +
  602.63 +3. the Server-side MTM function typically starts whatever asynchronous communications 
  602.64 +it requires and returns
  602.65 +
  602.66 +4. the Server-side MTM is signalled when the asynchronous communications complete, 
  602.67 +and handles the result
  602.68 +
  602.69 +5. the Server-side MTM signals the Message Server, through the TRequestStatus 
  602.70 +passed earlier
  602.71 +
  602.72 +6. the Message Server deletes the Server-side MTM object
  602.73 +
  602.74 +To qualify this somewhat:
  602.75 +
  602.76 +1. it is up to the Server-side MTM implementation to decide how to translate 
  602.77 +data back and forth between the formats used by Message Server (index entry, 
  602.78 +message store, binary files), and that required by the protocol; this is another 
  602.79 +important design task 
  602.80 +
  602.81 +2. depending on the protocol being used, the communications sequence can be of 
  602.82 +considerable complexity; typically it requires division into a number of asynchronous 
  602.83 +steps
  602.84 +
  602.85 +3. for greater efficiency where further commands are shortly expected, deletion 
  602.86 +of the Server-side MTM object can be prevented
  602.87 +
  602.88 +For asynchronous requests, a Server-side MTM should always complete the TRequestStatus 
  602.89 +with KErrNone. Any errors should be returned in the progress information.
  602.90 +
  602.91 +Note the following significant groups of functions:
  602.92 +
  602.93 +1. Copy and move from remote functions: CopyToLocalL() and MoveToLocalL() are 
  602.94 +called by the Message Server to get a selection of entries from a remote location. 
  602.95 +For many protocols, this should be interpreted as message retrieval. For protocols 
  602.96 +where messages exist on a remote server, this function is typically used to 
  602.97 +download specific messages, after an initial connection has downloaded message 
  602.98 +headers. 
  602.99 +
 602.100 +2. Copy and move to remote functions: CopyFromLocalL() and MoveFromLocalL() are 
 602.101 +called by the Message Server to copy/move a selection of entries to a remote 
 602.102 +location. For many protocols, this should be interpreted as message sending. 
 602.103 +
 602.104 +3. Copy and move within remote functions: CopyWithinServiceL() and MoveWithinServiceL() 
 602.105 +are called by the Message Server to copy a selection of entries within a remote 
 602.106 +service. An example of their use might be for a user rearranging messages 
 602.107 +within remote folders. 
 602.108 +@publishedAll
 602.109 +@released
 602.110 +*/
 602.111 +	{
 602.112 +public:
 602.113 +	IMPORT_C ~CBaseServerMtm();
 602.114 +	//
 602.115 +	/** Copies a selection of entries from a remote location to a local location. This 
 602.116 +	will only be meaningful for some protocols.
 602.117 +	
 602.118 +	Requirements:
 602.119 +	
 602.120 +	Implementations should provide this function if the messaging protocol supports 
 602.121 +	retrieval of remote entries. If this is not supported, implementations should 
 602.122 +	leave with KErrNotSupported. 
 602.123 +	
 602.124 +	Implementations of this function have three fundamental steps:
 602.125 +	
 602.126 +	1. doing the transfer operation using the appropriate communications protocols 
 602.127 +	
 602.128 +	2. converting protocol-specific data into the three-part storage format (index 
 602.129 +	entry, message store, binary files) required by the Message Server
 602.130 +	
 602.131 +	3. updating entries in the Message Server
 602.132 +	
 602.133 +	@param aSelection The collection of message index entries for which the copy/moving 
 602.134 +	is required. 
 602.135 +	@param aDestination The entry ID to which the selection is to be copied 
 602.136 +	@param aStatus Asynchronous completion word for the operation 
 602.137 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.138 +	@leave Other leave codes Dependent on implementation */
 602.139 +	virtual void CopyToLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 602.140 +	/** Copies a selection of entries from a local location to a remote location. 
 602.141 +	
 602.142 +	Requirements:
 602.143 +	
 602.144 +	Implementations should provide this function if the messaging protocol supports 
 602.145 +	retrieval of remote entries. If this is not supported, implementations should 
 602.146 +	leave with KErrNotSupported. 
 602.147 +	
 602.148 +	Implementations of this function have three fundamental steps:
 602.149 +	
 602.150 +	1. reading entry data
 602.151 +	
 602.152 +	2. converting entry data from the Message Server format into that required by 
 602.153 +	the protocol
 602.154 +	
 602.155 +	3. doing the transfer operation using the appropriate communications protocols 
 602.156 +	
 602.157 +	@param aSelection The collection of message index entries for which the copy 
 602.158 +	is required 
 602.159 +	@param aDestination The entry ID of the service by which the entries should 
 602.160 +	be transferred 
 602.161 +	@param aStatus Asynchronous completion word for the operation 
 602.162 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.163 +	@leave Other leave codes Dependent on implementation */
 602.164 +	virtual void CopyFromLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 602.165 +	/** Copies a selection of entries within a remote location. 
 602.166 +	
 602.167 +	Requirements:
 602.168 +	
 602.169 +	Implementations should provide this function if the messaging protocol supports 
 602.170 +	the ability to copy entries within a remote service. If this is not supported, 
 602.171 +	implementations should leave with KErrNotSupported. 
 602.172 +	
 602.173 +	@param aSelection The collection of message index entries for which the copy 
 602.174 +	is required 
 602.175 +	@param aDestination The server entry ID to which the selection is to be copied 
 602.176 +	@param aStatus Asynchronous completion word for the operation 
 602.177 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.178 +	@leave Other leave codes Dependent on implementation */
 602.179 +	virtual void CopyWithinServiceL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 602.180 +	/** Deletes each entry in the supplied selection when called by the message Server. 
 602.181 +	If any of the entries in the selection is a parent entry, then all its children 
 602.182 +	should also be deleted, recursively to the bottom of the ownership tree.
 602.183 +	
 602.184 +	Implementations should provide this function if the messaging protocol supports 
 602.185 +	deletion of remote entries. If this is not supported, implementations should 
 602.186 +	leave with KErrNotSupported. 
 602.187 +	
 602.188 +	@param aSelection The collection of entries that are to be deleted. 
 602.189 +	@param aStatus Asynchronous completion object. 
 602.190 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.191 +	@leave Other leave codes Dependent on implementation */
 602.192 +	virtual void DeleteAllL(const CMsvEntrySelection& aSelection, TRequestStatus& aStatus)=0;
 602.193 +	/** Creates a new remote entry with relevant data when called by the Message Server.
 602.194 +	 
 602.195 +	Implementations should provide this function if the messaging protocol supports 
 602.196 +	creation of remote entries. If this is not supported, implementations should 
 602.197 +	leave with KErrNotSupported.
 602.198 +	
 602.199 +	As with ChangeL(), the Server-side MTM implementation must decide what information 
 602.200 +	in the TMsvEntry is relevant to the remote entry, and translate it appropriately 
 602.201 +	for the specific protocol. Most of the data contained in the TMsvEntry is 
 602.202 +	specific to the Message Server, and would probably have no direct correlation 
 602.203 +	with the protocol's own storage format. For example, for a folder, probably 
 602.204 +	only the name and parent are needed, so if the protocol supports creation 
 602.205 +	of remote folders, the implementation could:
 602.206 +	
 602.207 +	1. check for a folder type entry
 602.208 +	
 602.209 +	2. get the folder name and parent details from aNewEntry
 602.210 +	
 602.211 +	3. initiate a protocol-specific action to create the remote folder
 602.212 +	
 602.213 +	@param aNewEntry Data by which to create entry 
 602.214 +	@param aStatus Asynchronous completion word for the operation. 
 602.215 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.216 +	@leave Other leave codes Dependent on implementation */
 602.217 +	virtual void CreateL(TMsvEntry aNewEntry, TRequestStatus& aStatus)=0;
 602.218 +	/** Updates a remote entry with relevant data when called by the Message Server.
 602.219 +	 
 602.220 +	Implementations should provide this function if the messaging protocol supports 
 602.221 +	updating of remote entries. If this is not supported, implementations should 
 602.222 +	leave with KErrNotSupported. 
 602.223 +	
 602.224 +	The Server-side MTM implementation must decide what information in the TMsvEntry 
 602.225 +	is relevant to the remote entry, and translate it appropriately for the specific 
 602.226 +	protocol. Most of the data contained in the TMsvEntry is specific to the Symbian 
 602.227 +	OS Message Server, and would probably have no direct correlation with the 
 602.228 +	protocol's own storage format. Some entry data may however be useful. For 
 602.229 +	example, if the protocol supports remote renaming of folders, the implementation 
 602.230 +	could:
 602.231 +	
 602.232 +	1. check for a folder type entry
 602.233 +	
 602.234 +	2. extract the folder name from aNewEntry.iDetails
 602.235 +	
 602.236 +	3. check if the folder name has changed by comparing the new name with iDetails 
 602.237 +	in the index entry currently; if not, complete with KErrNone
 602.238 +	
 602.239 +	4. initiate a protocol-specific action to rename the remote folder
 602.240 +	
 602.241 +	The implementation should also always update the local Message Server index 
 602.242 +	through CMsvServerEntry::ChangeL().
 602.243 +	
 602.244 +	@param aNewEntry Data by which to update entry 
 602.245 +	@param aStatus Asynchronous completion word for the operation. 
 602.246 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.247 +	@leave Other leave codes Dependent on implementation */
 602.248 +	virtual void ChangeL(TMsvEntry aNewEntry, TRequestStatus& aStatus)=0;
 602.249 +	//
 602.250 +	/** Executes an MTM-specific operation on a selection of entries when called by 
 602.251 +	the Message Server.
 602.252 +	
 602.253 +	The call is made as a response to a client program invoking an MTM-specific 
 602.254 +	operation through CBaseMtm::InvokeSyncFunctionL()/InvokeAsyncFunctionL(). 
 602.255 +	The aSelection, aCommand, and aParameter arguments pass the values of the 
 602.256 +	original aSelection, aFunctionId, and aParameter respectively arguments from 
 602.257 +	such a call. The use (if any) of the aSelection and aParameter arguments by 
 602.258 +	the function depends on the command.
 602.259 +	
 602.260 +	@param aSelection A selection of message entries on which the command is to 
 602.261 +	be executed 
 602.262 +	@param aCommand The MTM-specific command to be carried out 
 602.263 +	@param aParameter Command-specific parameters 
 602.264 +	@param aStatus Asynchronous completion word for the operation */
 602.265 +	virtual void StartCommandL(CMsvEntrySelection& aSelection, TInt aCommand, const TDesC8& aParameter, TRequestStatus& aStatus)=0;
 602.266 +	//
 602.267 +	/** Tests if the Server-side MTM object should be deleted when called by the Message 
 602.268 +	Server
 602.269 +	
 602.270 +	It is useful to stop the MTM being deleted when more commands are expected 
 602.271 +	shortly. This would be the case, for example, after receiving a command to 
 602.272 +	go online. 
 602.273 +	
 602.274 +	If there are no more commands expected by the Server-side MTM object, then 
 602.275 +	the function should return EFalse, and the Message Server will delete it.
 602.276 +	
 602.277 +	@return ETrue: the MTM object should not be deleted EFalse: the MTM object 
 602.278 +	can be deleted */
 602.279 +	virtual TBool CommandExpected()=0;
 602.280 +	//
 602.281 +	/** This function is called by the Message Server to get progress information for 
 602.282 +	the current asynchronous operation. 
 602.283 +	
 602.284 +	The call is made as a response to a client program requesting progress information 
 602.285 +	through CMsvOperation::ProgressL(). The packing format used in the TDesC8 
 602.286 +	is MTM-specific. Only the implementation of the User Interface MTM progress 
 602.287 +	information functions need to understand the format.
 602.288 +	
 602.289 +	The progress buffer should have a maximum size of 256 bytes.
 602.290 +	
 602.291 +	@return Progress information on current asynchronous operation 
 602.292 +	@see CBaseMtmUi::DisplayProgressSummary()
 602.293 +	@see CBaseMtmUi::GetProgress() */
 602.294 +	virtual const TDesC8& Progress()=0;
 602.295 +	//
 602.296 +	/** Moves a selection of entries from a remote location to a local location. 
 602.297 +	
 602.298 +	Requirements:
 602.299 +	
 602.300 +	Implementations should provide this function if the messaging protocol supports 
 602.301 +	retrieval of remote entries. If this is not supported, implementations should 
 602.302 +	leave with KErrNotSupported. 
 602.303 +	
 602.304 +	Implementations of this function have three fundamental steps:
 602.305 +	
 602.306 +	1. doing the transfer operation using the appropriate communications protocols 
 602.307 +	
 602.308 +	2. converting protocol-specific data into the three-part storage format (index 
 602.309 +	entry, message store, binary files) required by the Message Server
 602.310 +	
 602.311 +	3. updating entries in the Message Server
 602.312 +	
 602.313 +	MoveToLocalL() should differ from CopyToLocalL() in additionally deleting 
 602.314 +	the original remote data. 
 602.315 +	
 602.316 +	@param aSelection The collection of message index entries for which the moving 
 602.317 +	is required. 
 602.318 +	@param aDestination The entry ID to which the selection is to be copied/moved 
 602.319 +	@param aStatus Asynchronous completion word for the operation 
 602.320 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.321 +	@leave Other leave codes Dependent on implementation */
 602.322 +	virtual void MoveToLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 602.323 +	/** Moves a selection of entries from a local location to a remote location. 
 602.324 +	
 602.325 +	Requirements:
 602.326 +	
 602.327 +	Implementations should provide this function if the messaging protocol supports 
 602.328 +	retrieval of remote entries. If this is not supported, implementations should 
 602.329 +	leave with KErrNotSupported. 
 602.330 +	
 602.331 +	Implementations of this function have three fundamental steps:
 602.332 +	
 602.333 +	1. reading entry data
 602.334 +	
 602.335 +	2. converting entry data from the Message Server format into that required by 
 602.336 +	the protocol
 602.337 +	
 602.338 +	3. doing the transfer operation using the appropriate communications protocols 
 602.339 +	
 602.340 +	The implementation of MoveFromLocalL() should differ from CopyFromLocalL() 
 602.341 +	in additionally deleting the original local data. 
 602.342 +	
 602.343 +	@param aSelection The collection of message index entries for which the move 
 602.344 +	is required 
 602.345 +	@param aDestination The entry ID of the service by which the entries should 
 602.346 +	be transferred 
 602.347 +	@param aStatus Asynchronous completion word for the operation 
 602.348 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.349 +	@leave Other leave codes Dependent on implementation */
 602.350 +	virtual void MoveFromLocalL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 602.351 +	/** Moves a selection of entries within a remote location. 
 602.352 +	
 602.353 +	Requirements:
 602.354 +	
 602.355 +	Implementations should provide this function if the messaging protocol supports 
 602.356 +	the ability to move entries within a remote service. If this is not supported, 
 602.357 +	implementations should leave with KErrNotSupported. 
 602.358 +	
 602.359 +	The implementation of MoveWithinServiceL() should differ from CopyWithinServiceL() 
 602.360 +	in additionally deleting the original data. 
 602.361 +	
 602.362 +	@param aSelection The collection of message index entries for which the move 
 602.363 +	is required 
 602.364 +	@param aDestination The server entry ID to which the selection is to be moved 
 602.365 +	@param aStatus Asynchronous completion word for the operation 
 602.366 +	@leave KErrNotSupported The Server-side MTM does not support this operation 
 602.367 +	@leave Other leave codes Dependent on implementation */
 602.368 +	virtual void MoveWithinServiceL(const CMsvEntrySelection& aSelection,TMsvId aDestination, TRequestStatus& aStatus)=0;
 602.369 +
 602.370 +	IMPORT_C TInt SystemProgress(TMsvSystemProgress& aOutSysProg);
 602.371 +	TInt GetNonOperationMtmData(TNonOperationMtmDataType& aMtmDataType, TPtrC8& aResultBuffer);
 602.372 +
 602.373 +protected:
 602.374 +	IMPORT_C CBaseServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry);
 602.375 +	/** Handles the completion of any asynchronous requests that it makes. It is called 
 602.376 +	from the base class RunL() .
 602.377 +	
 602.378 +	Note that any leaves made by this function result in DoComplete() being called 
 602.379 +	with the leave code. */
 602.380 +	virtual void DoRunL()=0;
 602.381 +	/** Called by the base class RunL() if DoRunL() leaves. 
 602.382 +	
 602.383 +	It should be implemented to handle this error. For example, progress information 
 602.384 +	could be updated to reflect the problem.
 602.385 +	
 602.386 +	@param aError The leave code given by DoRunL(). */
 602.387 +	virtual void DoComplete(TInt aError)=0;
 602.388 +	//
 602.389 +	IMPORT_C TInt Extension_(TUint aExtensionId, TAny *&a0, TAny *a1);
 602.390 +	//
 602.391 +private:
 602.392 +	// from CActive
 602.393 +	IMPORT_C void RunL();
 602.394 +	IMPORT_C TInt RunError(TInt aError);
 602.395 +	//
 602.396 +protected:
 602.397 +	/** The entry on which to operate. It is set in the constructor.
 602.398 +	
 602.399 +	The destructor deletes this member. */
 602.400 +	CMsvServerEntry* iServerEntry;
 602.401 +	
 602.402 +	// Method used for extension: called by non virtual methods that need 
 602.403 +	// to have a polymorphic behaviour.
 602.404 +	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 602.405 +	//
 602.406 +private:
 602.407 +	CRegisteredMtmDll& iRegisteredMtmDll;
 602.408 +
 602.409 +private:
 602.410 +	// Extra data member to allow for future extensions
 602.411 +	TAny* iExtensionData;
 602.412 +	};
 602.413 +
 602.414 +
 602.415 +class CServerMtmDllRegistry : public CMtmDllRegistry
 602.416 +/**
 602.417 +@publishedAll
 602.418 +@released
 602.419 +*/
 602.420 +	{
 602.421 +friend class CMtmRegistryControl;
 602.422 +public:
 602.423 +	IMPORT_C static CServerMtmDllRegistry* NewL(RFs& aFs,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=KMsvDefaultTimeoutMicroSeconds32);
 602.424 +	IMPORT_C ~CServerMtmDllRegistry();
 602.425 +	IMPORT_C CBaseServerMtm* NewServerMtmL(TUid aMtmTypeUid, CMsvServerEntry* aInitialEntry);
 602.426 +	//
 602.427 +protected:
 602.428 +	CServerMtmDllRegistry(RFs& aFs,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
 602.429 +	//
 602.430 +private:
 602.431 +	CBaseServerMtm* NewMtmL(const RLibrary& aLib, CMsvServerEntry* aServerEntry, CRegisteredMtmDll& aReg) const;
 602.432 +	};
 602.433 +
 602.434 +
 602.435 +class CInstalledMtmGroupArray : public CArrayPtrFlat<CInstalledMtmGroup>
 602.436 +/**
 602.437 +@internalComponent
 602.438 +@released
 602.439 +*/
 602.440 +	{
 602.441 +public:
 602.442 +	CInstalledMtmGroupArray();
 602.443 +	~CInstalledMtmGroupArray();
 602.444 +	void AddInstalledMtmGroupL(CInstalledMtmGroup* aInstalledMtmGroup);
 602.445 +	};
 602.446 +
 602.447 +//**********************************
 602.448 +// CMsvMtmCache
 602.449 +//**********************************
 602.450 +
 602.451 +
 602.452 +//**********************************
 602.453 +// CMtmRegistryControl
 602.454 +//**********************************
 602.455 +
 602.456 +class CMtmRegistryControl : public CBase, public MRegisteredMtmDllObserver
 602.457 +/**
 602.458 +@publishedAll
 602.459 +@released
 602.460 +*/
 602.461 +	{
 602.462 +public:
 602.463 +	IMPORT_C static CMtmRegistryControl* NewL(RFs& anFs,CServerMtmDllRegistry& aServerMtmDllRegistry);
 602.464 +	IMPORT_C ~CMtmRegistryControl();
 602.465 +
 602.466 +	IMPORT_C TInt InstallMtmGroup(const TDesC& aFullName,TUid& aMtmTypeUid);
 602.467 +	IMPORT_C TInt FullNameToMtmTypeUid(const TDesC& aFullName,TUid& aMtmTypeUid) const;
 602.468 +	IMPORT_C TInt DeInstallMtmGroup(TUid aMtmTypeUid);  //  returns error on storing registry
 602.469 +
 602.470 +	IMPORT_C TInt UseMtmGroup(TUid aMtmTypeUid);
 602.471 +	IMPORT_C TInt ReleaseMtmGroup(TUid aMtmTypeUid);  
 602.472 +	IMPORT_C TBool IsInUse(TUid aMtmTypeUid) const;
 602.473 +
 602.474 +	IMPORT_C TInt FillRegisteredMtmDllArray(TUid aMtmDllTypeUid,CRegisteredMtmDllArray& aRegisteredMtmDllArray,TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=0);  // Fill array with Dlls whose second uid is aMtmDllTypeUid
 602.475 +	IMPORT_C CMtmGroupData* GetMtmGroupDataL(TUid aMtmTypeUid) const;  
 602.476 +	const CMtmGroupData& GetMtmGroupDataReferenceL(TUid aMtmTypeUid) const;  
 602.477 +
 602.478 +	IMPORT_C void StoreRegistryL() const;
 602.479 +	IMPORT_C void RestoreRegistryL();
 602.480 +
 602.481 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 602.482 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 602.483 +
 602.484 +private:
 602.485 +	CMtmRegistryControl(RFs& anFs,CServerMtmDllRegistry& aServerMtmDllRegistry);
 602.486 +	void ConstructL();
 602.487 +	TInt MtmTypeUidToIndex(TUid aMtmTypeUid) const;
 602.488 +	TInt UidTypeToIndex(TUidType aUidType) const;
 602.489 +	void DoInstallMtmGroupL(const TDesC& aFullName,TUid& aMtmTypeUid);
 602.490 +	CMtmGroupData* ReadDataFileStoreL(const TDesC& aFullName) const;
 602.491 +	void DoDeInstallMtmGroupL(TUid aMtmTypeUid);
 602.492 +	void DoInternalizeL(RReadStream& aStream);
 602.493 +	void AddInstalledMtmGroupL(CInstalledMtmGroup* aInstalledMtmGroup);
 602.494 +	void RemoveInstalledMtmGroup(TUid aMtmTypeUid);
 602.495 +	TBool IsResFileL(const TDesC& aFullName) const;
 602.496 +	TUid DoFindMtmTypeUidL(const TDesC& aFullName) const;
 602.497 +	
 602.498 +	CMtmGroupData *LoadMTMFileL(const TDesC& aFullName, TUid &aUid);
 602.499 +	CMtmGroupData *LoadDatFileL(const TDesC& aFullName, TUid &aUid);
 602.500 +	CMtmGroupData *LoadResFileL(const TDesC& aFullName, TUid &aUid);	
 602.501 +private:
 602.502 +	RFs& iFs;
 602.503 +	CInstalledMtmGroupArray iInstalledMtmGroupArray;
 602.504 +	CServerMtmDllRegistry& iServerMtmDllRegistry;
 602.505 +	};
 602.506 +
 602.507 +#endif	// __MTSR_H__
   603.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   603.2 +++ b/epoc32/include/mw/mtud.rh	Wed Mar 31 12:27:01 2010 +0100
   603.3 @@ -0,0 +1,31 @@
   603.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   603.5 +// All rights reserved.
   603.6 +// This component and the accompanying materials are made available
   603.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   603.8 +// which accompanies this distribution, and is available
   603.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  603.10 +//
  603.11 +// Initial Contributors:
  603.12 +// Nokia Corporation - initial contribution.
  603.13 +//
  603.14 +// Contributors:
  603.15 +//
  603.16 +// Description:
  603.17 +//
  603.18 +
  603.19 +#include <mtud.hrh>
  603.20 +
  603.21 +STRUCT MTUD_FUNCTION
  603.22 +	{
  603.23 +	LTEXT functiontext="";// Cannot be longer that 40 characters
  603.24 +	LONG  command=0;
  603.25 +	LONG  key;
  603.26 +	BYTE  keymodifiers=EMtudCtrl;
  603.27 +	LONG  flags=0;
  603.28 +	BYTE  type=0;
  603.29 +	}
  603.30 +
  603.31 +STRUCT MTUD_FUNCTION_ARRAY
  603.32 +    {
  603.33 +    STRUCT functions[];
  603.34 +    }
   604.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   604.2 +++ b/epoc32/include/mw/mtudcbas.h	Wed Mar 31 12:27:01 2010 +0100
   604.3 @@ -0,0 +1,362 @@
   604.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   604.5 +// All rights reserved.
   604.6 +// This component and the accompanying materials are made available
   604.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   604.8 +// which accompanies this distribution, and is available
   604.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  604.10 +//
  604.11 +// Initial Contributors:
  604.12 +// Nokia Corporation - initial contribution.
  604.13 +//
  604.14 +// Contributors:
  604.15 +//
  604.16 +// Description:
  604.17 +//
  604.18 +
  604.19 +#if !defined(__MTUDBAS_H__)
  604.20 +#define __MTUDBAS_H__
  604.21 +
  604.22 +#if !defined(__MSVSTD_H__)
  604.23 +#include <msvstd.h>
  604.24 +#endif
  604.25 +
  604.26 +#if !defined(__MSVREG_H__)
  604.27 +#include <msvreg.h>
  604.28 +#endif
  604.29 +
  604.30 +#if !defined(__MTCLREG_H__)
  604.31 +#include <mtclreg.h>
  604.32 +#endif
  604.33 +
  604.34 +#if !defined(__BARSREAD_H__)
  604.35 +#include <barsread.h>
  604.36 +#endif
  604.37 +
  604.38 +// Forward references
  604.39 +class CFbsBitmap;
  604.40 +class CCoeEnv;
  604.41 +
  604.42 +///////////////////////////////////////////////////
  604.43 +// CBaseMtmUiData - MTM Ui data layer base API   //
  604.44 +///////////////////////////////////////////////////
  604.45 +class CBaseMtmUiData : public CBase
  604.46 +/** Base class for UI Data MTM components. 
  604.47 +
  604.48 +CBaseMtmUiData-derived classes allow message client applications to customise 
  604.49 +dynamically their user interfaces for a particular message type. For example, 
  604.50 +if a message client application currently had a fax entry selected, then it 
  604.51 +could use the fax MTM's concrete class to get information on the menus and 
  604.52 +icons that it should display. 
  604.53 +
  604.54 +Specifically, functionality falls into the following three areas:
  604.55 +
  604.56 +1. supplying MTM-specific icons for Message Server entries
  604.57 +
  604.58 +2. supplying user interface text, e.g. for menus, for MTM-specific operations
  604.59 +
  604.60 +3. providing checks that MTM functions are suitable for use on an entry. It is 
  604.61 +intended that client applications will use these functions to select dynamically 
  604.62 +the user interface features available dependent on the entry currently selected 
  604.63 +within the application. For example, menu items that do not apply to particular 
  604.64 +entries could be greyed out. Note that OperationSupportedL() performs a similar 
  604.65 +function for MTM-specific functions. Implementations should determine if the 
  604.66 +operation is supported by checking the properties of the entry, such as its 
  604.67 +type. If the operation is not appropriate on the entry, then the aReasonResourceId 
  604.68 +argument is set to the ID of a string in the UI Data MTM's resource file 
  604.69 +that explains why not. Otherwise, aReasonResourceId is 0.
  604.70 +
  604.71 +Message client applications use the class to access such functionality polymorphically. 
  604.72 +MTM implementers implement this class to provide such functionality for their 
  604.73 +message protocol. 
  604.74 +@publishedAll
  604.75 +@released
  604.76 +*/
  604.77 +	{
  604.78 +public:
  604.79 +	// --- Types ---
  604.80 +	/** Defines an array of icon bitmaps for the UI Data MTM. 
  604.81 +	
  604.82 +	It is used in the definition of CBaseMtmUiData::iIconArrays. */
  604.83 +	typedef CArrayPtr<CFbsBitmap> CBitmapArray;
  604.84 +	//
  604.85 +	// --- Inline class ---
  604.86 +	class TMtmUiFunction
  604.87 +	/** Provides the interface for clients to access MTM-specific functions, and present 
  604.88 +	these functions to the user. A message client application can use this information to customise the UI.
  604.89 +
  604.90 +	The class encapsulates information relating to an MTM-specific operation:
  604.91 +
  604.92 +	1. human-readable name: for display on the UI
  604.93 +
  604.94 +	2. ID: used to invoke the operation through the CBaseMtmUi::InvokeSyncFunctionL()/InvokeAsyncFunctionL() functions on the associated User Interface MTM 
  604.95 +
  604.96 +	3. a suggested hot-key that the UI should support for the operation
  604.97 +
  604.98 +	4. flags that describe further operation characteristics. 
  604.99 +@publishedAll
 604.100 +@released
 604.101 +*/
 604.102 +		{
 604.103 +		friend class CBaseMtmUiData;// For access to constructor
 604.104 +	public:
 604.105 +		// --- Constants ---
 604.106 +		/** Enum to define UI Data base class constants. */
 604.107 +		enum 
 604.108 +			{
 604.109 +			/** Maximum length for operation caption. Used in defining iCaption. */
 604.110 +			ECaptionMaxLen=40
 604.111 +			};
 604.112 +
 604.113 +	public:
 604.114 +		// --- Construction ---
 604.115 +		IMPORT_C TMtmUiFunction(TResourceReader& aResourceReader);		
 604.116 +		IMPORT_C TMtmUiFunction(const TMtmUiFunction& aFunc);		
 604.117 +
 604.118 +	private:
 604.119 +		// --- Private functions ---
 604.120 +		void SetModifiersFromResourceDefinition(TInt aResourceFileModifiers);		
 604.121 +
 604.122 +	public:
 604.123 +		// --- Data ---
 604.124 +		/** String, suitable for a menu, describing the operation. */
 604.125 +		TBuf<ECaptionMaxLen>		iCaption;
 604.126 +		/** Character code for a suggested hotkey for the operation. */
 604.127 +		TInt						iPreferredHotKeyKeyCode;
 604.128 +		/** Suggested key modifiers for the hotkey.  */
 604.129 +		TInt						iPreferredHotKeyModifiers;
 604.130 +		/** The ID that can be used to invoke the operation. */
 604.131 +		TInt						iFunctionId;
 604.132 +		/** Flags setting location characteristics of the operation. */
 604.133 +		TUint8						iFunctionType;	// see MTUD.HRH
 604.134 +		/** Flags setting characteristics of the operation. */
 604.135 +		TInt						iFlags;			// see MTUD.HRH
 604.136 +		};
 604.137 +	//
 604.138 +	// --- Destruction ---
 604.139 +	IMPORT_C virtual ~CBaseMtmUiData();
 604.140 +	//
 604.141 +	// --- Accessor functions ---
 604.142 +	IMPORT_C TUid Type() const;
 604.143 +	//
 604.144 +	// --- Context icons ---
 604.145 +	/** Gets an array of bitmaps relevant to the passed context entry. 
 604.146 +	
 604.147 +	The bitmaps within the array should be representations of the same bitmap at various sizes. 
 604.148 +	
 604.149 +	The aStateFlags argument indicates the user interface state, for example, 
 604.150 +	"open", of the entry. 
 604.151 +	
 604.152 +	Requirements:
 604.153 +	
 604.154 +	Implementations should check the type of the context, using TMsvEntry::iType::iUid, 
 604.155 +	and the passed state, and return an appropriate bitmap array.
 604.156 +	
 604.157 +	@param aContext Context entry to return the icons for. 
 604.158 +	@param aStateFlags Flasgs indicating the user interface state of the entry. 
 604.159 +	@return Bitmap array for the given context.. */
 604.160 +	virtual const CBitmapArray& ContextIcon(const TMsvEntry& aContext, TInt aStateFlags) const = 0;
 604.161 +	//
 604.162 +	// --- MTM-Specific function information (e.g. for dynamically-added menu items) ---
 604.163 +	IMPORT_C const CArrayFix<TMtmUiFunction>& MtmSpecificFunctions() const;
 604.164 +	IMPORT_C TBool FunctionRecognised(TInt aFunctionId) const;
 604.165 +	//
 604.166 +	// --- Provide context-specific function information ---
 604.167 +	/** Tests if an entry can be created as a child.
 604.168 +	
 604.169 +	@param aParent The entry under which aNewEntry should be created. 
 604.170 +	@param aNewEntry The entry to which the operation applies. 
 604.171 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.172 +	@return ETrue, if the operation is appropriate on the entry; 
 604.173 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.174 +	virtual TBool CanCreateEntryL(const TMsvEntry& aParent, TMsvEntry& aNewEntry, TInt& aReasonResourceId) const = 0;
 604.175 +	/** Tests if a delete operation is supported.
 604.176 +	
 604.177 +	@param aContext The entry to which the operation applies. 
 604.178 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.179 +	@return ETrue, if the operation is appropriate on the entry; 
 604.180 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.181 +	virtual TBool CanDeleteFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.182 +	/** Tests if the entry can be undeleted.
 604.183 +	
 604.184 +	@param aContext The entry to which the operation applies. 
 604.185 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.186 +	@return ETrue, if the operation is appropriate on the entry; 
 604.187 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.188 +	IMPORT_C virtual TBool CanUnDeleteFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const;
 604.189 +	/** Tests if the service entry can be deleted.
 604.190 +	
 604.191 +	@param aService The service entry to which the operation applies. 
 604.192 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.193 +	@return ETrue, if the operation is appropriate on the entry; 
 604.194 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.195 +	virtual TBool CanDeleteServiceL(const TMsvEntry& aService, TInt& aReasonResourceId) const = 0;
 604.196 +	/** Tests if an entry can be replied to.
 604.197 +	
 604.198 +	@param aContext The entry to which the operation applies. 
 604.199 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.200 +	@return ETrue, if the operation is appropriate on the entry; 
 604.201 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.202 +	virtual TBool CanReplyToEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.203 +	/** Tests if an entry can be forwarded.
 604.204 +	
 604.205 +	@param aContext The entry to which the operation applies. 
 604.206 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.207 +	@return ETrue, if the operation is appropriate on the entry; 
 604.208 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.209 +	virtual TBool CanForwardEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.210 +	/** Tests if the entry can be edited.
 604.211 +	
 604.212 +	@param aContext The entry to which the operation applies. 
 604.213 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.214 +	@return ETrue, if the operation is appropriate on the entry; 
 604.215 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.216 +	virtual TBool CanEditEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.217 +	/** Tests if an entry can be viewed.
 604.218 +	
 604.219 +	@param aContext The entry to which the operation applies. 
 604.220 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.221 +	@return ETrue, if the operation is appropriate on the entry; 
 604.222 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.223 +	virtual TBool CanViewEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.224 +	/** Tests if an entry can be opened.
 604.225 +	
 604.226 +	@param aContext The entry to which the operation applies. 
 604.227 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.228 +	@return ETrue, if the operation is appropriate on the entry; 
 604.229 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.230 +	virtual TBool CanOpenEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.231 +	/** Tests if a close operation is supported.
 604.232 +	
 604.233 +	@param aContext The entry to which the operation applies. 
 604.234 +	@param aReasonResourceId On return, a resource string ID, or 0 if operation 
 604.235 +	is supported. 
 604.236 +	@return ETrue, if the operation is appropriate on the entry; 
 604.237 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.238 +	virtual TBool CanCloseEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.239 +	/** Tests if a copy from or move to operation is supported.
 604.240 +	
 604.241 +	@param aContext The entry to which the operation applies. 
 604.242 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.243 +	@return ETrue, if the operation is appropriate on the entry; 
 604.244 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.245 +	virtual TBool CanCopyMoveToEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.246 +	/** Tests whether a copy from or move from operation is supported.
 604.247 +	
 604.248 +	@param aContext The entry to which the operation applies. 
 604.249 +	@param aReasonResourceId On return, a resource string ID or 0. 
 604.250 +	@return ETrue, if the operation is appropriate on the entry; 
 604.251 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.252 +	virtual TBool CanCopyMoveFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.253 +	/** Tests if the current operation on the entry can be cancelled.
 604.254 +	
 604.255 +	@param aContext The entry to which the operation applies. 
 604.256 +	@param aReasonResourceId On return, a resource string ID, or 0 if operation 
 604.257 +	is supported. 
 604.258 +	@return ETrue, if the operation is appropriate on the entry; 
 604.259 +	EFalse, if the operation is NOT appropriate on the entry. */
 604.260 +	virtual TBool CanCancelL(const TMsvEntry& aContext, TInt& aReasonResourceId) const = 0;
 604.261 +	//
 604.262 +	// --- RTTI ---
 604.263 +	/** Tests if an MTM-specific operation is appropriate to the specified entry. The 
 604.264 +	operation specified must have been obtained from a call to MtmSpecificFunctions(). 
 604.265 +		
 604.266 +	It is intended that client applications will use this function to select dynamically 
 604.267 +	the MTM-specific user interface features available dependent on the entry 
 604.268 +	currently selected within the application.
 604.269 +	
 604.270 +	Requirements:
 604.271 +	
 604.272 +	Implementations should check the type of the context, using TMsvEntry::iType::iUid, 
 604.273 +	and use any other information required available from the context, to determine 
 604.274 +	if the operation is supported.
 604.275 +	
 604.276 +	@param aOperationId ID of operation to query. 
 604.277 +	@param aContext The entry to which the operation applies. 
 604.278 +	@return KErrNone: operation is appropriate to User Interface MTM and entry. 
 604.279 +	Other: if the operation is not appropriate on the entry, then this is the 
 604.280 +	ID of a string in the UI Data MTM's resource file that explains why not. */
 604.281 +	virtual TInt OperationSupportedL(TInt aOperationId, const TMsvEntry& aContext) const = 0; // returns 0 if operation *IS* supported, otherwise a resource ID for the reason text
 604.282 +	/** Queries if the MTM supports a particular capability, specified by a UID. 
 604.283 +	
 604.284 +	Requirements:
 604.285 +	
 604.286 +	Implementations should check aCapability for the standard capability values 
 604.287 +	and return a suitable response in aResponse. If aFunctionId is unknown, return 
 604.288 +	KErrNotSupported.
 604.289 +	
 604.290 +	@param aFunctionId UID of capability to be queried 
 604.291 +	@param aResponse Response value. The format of the response varies according 
 604.292 +	to the capability. 
 604.293 +	@return KErrNone: aFunctionId is a recognised value and a response is returned 
 604.294 +	KErrNotSupported: aFunctionId is not a recognised value */
 604.295 +	virtual TInt QueryCapability(TUid aFunctionId, TInt& aResponse) const = 0;
 604.296 +	/** Provides status text for the sending state of the entry.
 604.297 +	
 604.298 +	@param aContext Entry to query
 604.299 +	@return Descriptor containing status text. */
 604.300 +	virtual HBufC* StatusTextL(const TMsvEntry& aContext) const = 0;
 604.301 +
 604.302 +protected:
 604.303 +	// --- Construction ---
 604.304 +	IMPORT_C CBaseMtmUiData(CRegisteredMtmDll& aRegisteredMtmDll);
 604.305 +	IMPORT_C void ConstructL();
 604.306 +	/** Initialises bitmaps and function information. 
 604.307 +	
 604.308 +	Client applications do not use this function. It is relevant only to implementers of derived classes.
 604.309 +	
 604.310 +	Requirements:
 604.311 +	
 604.312 +	This function is called by the base class ConstructL() function. Implementations 
 604.313 +	should provide this function to:
 604.314 +	
 604.315 +	1. insert MTM-specific icon bitmap arrays into the iIconArrays array data member 
 604.316 +	
 604.317 +	2. insert MTM-specific operation information into the iMtmSpecificFunctions array 
 604.318 +	data member */
 604.319 +	virtual void PopulateArraysL() = 0; // Should populate iCapabilities, iMtmSpecificFunctions and iIconArrays
 604.320 +	/** Gets the resource file name. 
 604.321 +	
 604.322 +	Client applications do not use this function. It is relevant only to implementers of derived classes.
 604.323 +	
 604.324 +	Requirements:
 604.325 +	
 604.326 +	Each UI Data MTM can have a resource file associated with it. Implementations 
 604.327 +	should set aFilename to the full path and name of this resource file. The 
 604.328 +	function is called by CBaseMtmUiData::ConstructL(), which then loads the resource 
 604.329 +	file.
 604.330 +	
 604.331 +	@param aFileName Filename buffer to be filled with the resource file path 
 604.332 +	and name */
 604.333 +	virtual void GetResourceFileName(TFileName& aFileName) const = 0;
 604.334 +	//
 604.335 +	// --- Utility ---
 604.336 +	IMPORT_C void ReadFunctionsFromResourceFileL(TInt aResourceId);// Up to clients to call this if necessary
 604.337 +	IMPORT_C void CreateBitmapsL(TInt aNumZoomStates, const TDesC& aBitmapFile, TInt aStartBitmap, TInt aEndBitmap);
 604.338 +	CFbsBitmap* CreateBitmapL(const TDesC& aFileName, TInt aId) const;
 604.339 +
 604.340 +	// Method used for extension: called by non virtual methods that need 
 604.341 +	// to have a polymorphic behaviour.
 604.342 +	IMPORT_C virtual TAny* GetInterface(TUid aUid);
 604.343 +
 604.344 +protected:
 604.345 +	// --- Data ---
 604.346 +	/** Control environment object. It is set by the constructor. */
 604.347 +	CCoeEnv*									iCoeEnv;
 604.348 +	/** The array that stores the arrays of icon bitmaps for the UI Data MTM. Items 
 604.349 +	are added to the array by PopulateArraysL(). */
 604.350 +	CArrayPtr<CBitmapArray>*					iIconArrays;
 604.351 +	/** The array that stores MTM-specific function information for the UI Data MTM. 
 604.352 +	Items are added to the array by ReadFunctionsFromResourceFileL(). */
 604.353 +	CArrayFix<TMtmUiFunction>*					iMtmSpecificFunctions;
 604.354 +
 604.355 +private:
 604.356 +	// --- Data ---
 604.357 +	TInt										iResourceFileOffset;
 604.358 +	CRegisteredMtmDll&							iRegisteredMtmDll;  // Required in order to call ReleaseLibrary()
 604.359 +
 604.360 +	// Extra data member to allow for future extensions
 604.361 +	TAny* iExtensionData;
 604.362 +	};
 604.363 +
 604.364 +
 604.365 +#endif // __MTUDBAS_H__
   605.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   605.2 +++ b/epoc32/include/mw/mtudreg.h	Wed Mar 31 12:27:01 2010 +0100
   605.3 @@ -0,0 +1,87 @@
   605.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   605.5 +// All rights reserved.
   605.6 +// This component and the accompanying materials are made available
   605.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   605.8 +// which accompanies this distribution, and is available
   605.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  605.10 +//
  605.11 +// Initial Contributors:
  605.12 +// Nokia Corporation - initial contribution.
  605.13 +//
  605.14 +// Contributors:
  605.15 +//
  605.16 +// Description:
  605.17 +//
  605.18 +
  605.19 +#if !defined __MTUDREG_H__
  605.20 +#define __MTUDREG_H__
  605.21 +
  605.22 +#if !defined (__MTCLREG_H__)
  605.23 +#include <mtclreg.h>
  605.24 +#endif
  605.25 +
  605.26 +class CBaseMtmUiData;
  605.27 +
  605.28 +/** UI Data MTM factory function.
  605.29 +
  605.30 +A concrete UI Data MTM must implement an exported factory function of this 
  605.31 +type. It should return an instance of the CBaseMtmUiData-derived class that 
  605.32 +provides the implementation. The factory function is called by the UI Data 
  605.33 +MTM registry when a client requests this UI Data MTM. 
  605.34 +
  605.35 +A CBaseMtmUiData-derived class typically provides a NewL() function, which 
  605.36 +the factory function calls. 
  605.37 +
  605.38 +The factory function is called by ordinal. The ordinal of the function must 
  605.39 +match that recorded in the MTM's registry information. 
  605.40 +
  605.41 +The CRegisteredMtmDll& argument passes the registration data for the MTM DLL.
  605.42 +
  605.43 +The return value is a newly-created instance of the CBaseMtmUi-derived class 
  605.44 +for the User Interface MTM.
  605.45 +
  605.46 +The factory function should leave if it cannot create the object. 
  605.47 +
  605.48 +For example, a UI Data MTM whose concrete class was CEgMtmUiData could define 
  605.49 +a suitable factory function as: 
  605.50 +
  605.51 +@code
  605.52 +EXPORT_C CBaseMtmUiData* NewEgMtmL(CRegisteredMtmDll& aRegisteredMtmDll)
  605.53 +	{
  605.54 +	return CEgMtmUiData::NewL(aRegisteredMtmDll);
  605.55 +	}
  605.56 +@endcode */
  605.57 +typedef CBaseMtmUiData* MtmUiDataFactoryFunctionL(CRegisteredMtmDll&);
  605.58 +
  605.59 +// Client side MTM UI data registry
  605.60 +
  605.61 +class CMtmUiDataRegistry : public CObserverRegistry
  605.62 +/** Accesses the UI Data MTM registry. 
  605.63 +
  605.64 +This registry holds details of the all the 
  605.65 +UI Data MTMs currently available on the system. Message client applications 
  605.66 +use this class to get a CBaseMtmUiData-derived object by which to access UI 
  605.67 +Data MTM functionality.
  605.68 +
  605.69 +Note that the base class CMtmDllRegistry provides functions for discovering 
  605.70 +what MTMs are present in the registry. 
  605.71 +@publishedAll
  605.72 +@released
  605.73 +*/
  605.74 +	{
  605.75 +public:
  605.76 +	IMPORT_C static CMtmUiDataRegistry* NewL(CMsvSession& aMsvSession,
  605.77 +		TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=TTimeIntervalMicroSeconds32(30000000));
  605.78 +	virtual ~CMtmUiDataRegistry();
  605.79 +	IMPORT_C CBaseMtmUiData* NewMtmUiDataLayerL(const TUid& aMtmTypeUid);
  605.80 +	//
  605.81 +protected:
  605.82 +	CMtmUiDataRegistry(CMsvSession& aMsvSession, TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  605.83 +	//
  605.84 +private:
  605.85 +	CBaseMtmUiData* NewMtmL(const RLibrary& aLib, CRegisteredMtmDll& aReg) const;
  605.86 +	};
  605.87 +
  605.88 +
  605.89 +
  605.90 +#endif // __MTUDREG_H__
   606.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   606.2 +++ b/epoc32/include/mw/mtuireg.h	Wed Mar 31 12:27:01 2010 +0100
   606.3 @@ -0,0 +1,92 @@
   606.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   606.5 +// All rights reserved.
   606.6 +// This component and the accompanying materials are made available
   606.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   606.8 +// which accompanies this distribution, and is available
   606.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  606.10 +//
  606.11 +// Initial Contributors:
  606.12 +// Nokia Corporation - initial contribution.
  606.13 +//
  606.14 +// Contributors:
  606.15 +//
  606.16 +// Description:
  606.17 +// MTM client-side MTMUI registry class 
  606.18 +// 
  606.19 +//
  606.20 +
  606.21 +#if !defined __MTUIREG_H__
  606.22 +#define __MTUIREG_H__
  606.23 +
  606.24 +
  606.25 +#if !defined (__E32BASE_H__)
  606.26 +#include <e32base.h>		// CActive, TFileName etc.
  606.27 +#endif
  606.28 +
  606.29 +#if !defined (__MTCLREG_H__)
  606.30 +#include <mtclreg.h>
  606.31 +#endif
  606.32 +
  606.33 +class CBaseMtmUi;
  606.34 +
  606.35 +/** UI MTM factory function.
  606.36 +
  606.37 +A concrete User Interface MTM must implement an exported factory function of 
  606.38 +this type. It should return an instance of the CBaseMtmUi-derived class that 
  606.39 +provides the implementation. The factory function is called by the User Interface 
  606.40 +MTM registry when a client requests this User Interface MTM.
  606.41 +
  606.42 +A CBaseMtmUi-derived class typically provides a NewL() function, which the 
  606.43 +factory function calls.
  606.44 +
  606.45 +The factory function is called by ordinal. The ordinal of the function must 
  606.46 +match that recorded in the MTM's registry information. 
  606.47 +
  606.48 +For example, a User Interface MTM whose concrete class was CEgMtmUi could 
  606.49 +define a suitable factory function as:
  606.50 +
  606.51 +@code
  606.52 +EXPORT_C CBaseMtmUi* NewEgMtmUiL(CBaseMtm& aMtm, CRegisteredMtmDll& aRegisteredDll)
  606.53 +	{
  606.54 +	return CEgMtmUi::NewL(aMtm, aRegisteredDll);
  606.55 +	}@endcode
  606.56 +
  606.57 +@param aBaseMtm The CBaseMtm requesting the object.
  606.58 +@param aRegisteredMtmDll Registration data for the MTM DLL.
  606.59 +@return A newly-created instance of the CBaseMtmUi-derived class 
  606.60 +for the User Interface MTM.
  606.61 +@leave Any The factory function should leave if it cannot create the object. */
  606.62 +typedef CBaseMtmUi* MtmUiFactoryFunctionL(CBaseMtm&, CRegisteredMtmDll&);
  606.63 +
  606.64 +// Client side MTM registry
  606.65 +
  606.66 +class CMtmUiRegistry : public CObserverRegistry
  606.67 +/** Accesses the User Interface MTM registry. 
  606.68 +
  606.69 +This registry holds details of the 
  606.70 +all the User Interface MTMs currently available on the system. Message client 
  606.71 +applications use this class to get a CBaseMtmUi-derived object by which to 
  606.72 +access User Interface MTM functionality.
  606.73 +
  606.74 +Note that the base class CMtmDllRegistry provides functions for discovering 
  606.75 +what MTMs are present in the registry. 
  606.76 +@publishedAll
  606.77 +@released
  606.78 +*/
  606.79 +	{
  606.80 +public:
  606.81 +	IMPORT_C static CMtmUiRegistry* NewL(CMsvSession& aMsvSession,
  606.82 +		TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32=TTimeIntervalMicroSeconds32(30000000));
  606.83 +	virtual ~CMtmUiRegistry();
  606.84 +	IMPORT_C CBaseMtmUi* NewMtmUiL(CBaseMtm& aMtm);
  606.85 +	//
  606.86 +protected:
  606.87 +	CMtmUiRegistry(CMsvSession& aMsvSession, TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32);
  606.88 +	//
  606.89 +private:
  606.90 +	CBaseMtmUi* NewMtmL(const RLibrary& aLib, CBaseMtm& aMtm, CRegisteredMtmDll& aReg) const;
  606.91 +	};
  606.92 +
  606.93 +
  606.94 +
  606.95 +#endif // __MTUIREG_H__
   607.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   607.2 +++ b/epoc32/include/mw/mturutils.h	Wed Mar 31 12:27:01 2010 +0100
   607.3 @@ -0,0 +1,35 @@
   607.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   607.5 +// All rights reserved.
   607.6 +// This component and the accompanying materials are made available
   607.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   607.8 +// which accompanies this distribution, and is available
   607.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  607.10 +//
  607.11 +// Initial Contributors:
  607.12 +// Nokia Corporation - initial contribution.
  607.13 +//
  607.14 +// Contributors:
  607.15 +//
  607.16 +// Description:
  607.17 +//
  607.18 +
  607.19 +#ifndef __MTURUTILS_H__
  607.20 +#define __MTURUTILS_H__
  607.21 +
  607.22 +#include <msvstd.h>
  607.23 +
  607.24 +class MturUtils
  607.25 +/** Utility class that is used to start an application to 
  607.26 +edit a specified message.
  607.27 +
  607.28 +@publishedAll
  607.29 +@released
  607.30 +*/
  607.31 +{
  607.32 +public:
  607.33 +	IMPORT_C static void LaunchEditorL(TMsvId aId);
  607.34 +	IMPORT_C static void LaunchEditorAndWaitL(TMsvId aId);
  607.35 +	IMPORT_C static void LaunchEditorL(TMsvId aId, RThread& aThread, TRequestStatus& aStatus);
  607.36 +};
  607.37 +
  607.38 +#endif
   608.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   608.2 +++ b/epoc32/include/mw/mwappluginsp.h	Wed Mar 31 12:27:01 2010 +0100
   608.3 @@ -0,0 +1,112 @@
   608.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   608.5 +// All rights reserved.
   608.6 +// This component and the accompanying materials are made available
   608.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   608.8 +// which accompanies this distribution, and is available
   608.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  608.10 +//
  608.11 +// Initial Contributors:
  608.12 +// Nokia Corporation - initial contribution.
  608.13 +//
  608.14 +// Contributors:
  608.15 +//
  608.16 +// Description:
  608.17 +//
  608.18 +
  608.19 +#ifndef __MWAPPLUGINSP_H__
  608.20 +#define __MWAPPLUGINSP_H__
  608.21 +
  608.22 +// System includes
  608.23 +//
  608.24 +#include <e32def.h>
  608.25 +
  608.26 +// Forward class declarations
  608.27 +//
  608.28 +class CDocumentNode;
  608.29 +class CNode;
  608.30 +class CDTDNode;
  608.31 +class CXmlElement;
  608.32 +class CAttributeLookupTable;
  608.33 +
  608.34 +
  608.35 +typedef TAny CWmlLibrary;
  608.36 +
  608.37 +
  608.38 +//##ModelId=3B666FA402F4
  608.39 +class MWapPluginSP
  608.40 +/**
  608.41 +@publishedAll
  608.42 +@deprecated
  608.43 +*/
  608.44 +	{
  608.45 +public:
  608.46 +
  608.47 +/**
  608.48 +	Intended Usage	:	Resets the content data pointers in the given document 
  608.49 +	node and any dependents. This could also reset the data pointer in an 
  608.50 +	associated data dictionary node and its client document nodes.
  608.51 +	@since			6.0
  608.52 +	@param			aDocumentNode	The pointer to the document root node
  608.53 +	@param			aDataPtr		The pointer to the new data content
  608.54 +	@pre 			None
  608.55 +	@post			The data pointers in the specified document node and 
  608.56 +	dependents have been set to the new data
  608.57 + */
  608.58 +	//##ModelId=3B666FA40331
  608.59 +	virtual void ResetDocumentNodeData(CDocumentNode* aDocumentNode, TAny* aDataPtr) const =0;
  608.60 +
  608.61 +/**
  608.62 +	Intended Usage	:	Gets hold of the actual node that holds the data for the
  608.63 +	specified document node. The document data may actually be shared amongst 
  608.64 +	several document nodes and actually held in the data dictionary.
  608.65 +	@since			6.0
  608.66 +	@param			aDocumentNode The pointer to a document node
  608.67 +	@return			A pointer to node that actual holds the data.
  608.68 + */
  608.69 +	//##ModelId=3B666FA4032C
  608.70 +	virtual CNode& DataStorageNode(const CDocumentNode* aDocumentNode) const =0;
  608.71 +
  608.72 +/**
  608.73 +	Intended Usage	:	Preload the specified DTD for validating recieved WML 
  608.74 +	and WMLC decks. The document data handler needs to call this as soon as it
  608.75 +	knows what type of DTD the document is using. When the document completes,
  608.76 +	this DTD will be used to validate it before the 100% complete message is 
  608.77 +	passed up to the engine observer.
  608.78 +	@since			6.0
  608.79 +	@param			aDocType		The specified DTD type
  608.80 +	@param			aDTDURL			The URL of the DTD to be fetched
  608.81 +	@param			aDocRootNode	The root node of the document to be validated
  608.82 +	@return			A pointer to the DTD if the specified DTD is available, 
  608.83 +	otherwise NULL.
  608.84 +	@todo			Add the pre and post conditions.
  608.85 +	@pre 			None
  608.86 +	@post			Unspecified
  608.87 + */
  608.88 +	//##ModelId=3B666FA40328
  608.89 +	virtual const CDTDNode* PrepareDTDL(const TDesC& aDocType, 
  608.90 +										const TDesC& aDTDURL,
  608.91 +										const CDocumentNode* aDocRootNode) =0;
  608.92 +
  608.93 +/**
  608.94 +	Intended Usage	:	Provide a CWmlLibrary object. This object is ready to 
  608.95 +	process data and build a document tree to the given root node.
  608.96 +	@since			6.0
  608.97 +	@warning		The CWmlLibrary object is owned by the WAP Engine.
  608.98 +	@param			aDocRootNode	A pointer to the root node where the document
  608.99 +	tree is to be built.
 608.100 +	@return			A pointer the CWmlLibrary object. 
 608.101 + */
 608.102 +	//##ModelId=3B666FA40326
 608.103 +	virtual CWmlLibrary* WmlLibL(CXmlElement* aDocRootNode) =0;
 608.104 +
 608.105 +/**
 608.106 +	Intended Usage	:	Gets the Attribute Look Up Table.
 608.107 +	@since			6.0
 608.108 +	@return			A reference to the Attribute Look Up Table.
 608.109 + */
 608.110 +	//##ModelId=3B666FA4031C
 608.111 +	virtual CAttributeLookupTable& AttributeLUT() =0;
 608.112 +
 608.113 +	};
 608.114 +
 608.115 +#endif	// __MWAPPLUGINSP_H__
   609.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   609.2 +++ b/epoc32/include/mw/mwbxmlconverterobserver.h	Wed Mar 31 12:27:01 2010 +0100
   609.3 @@ -0,0 +1,54 @@
   609.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   609.5 +// All rights reserved.
   609.6 +// This component and the accompanying materials are made available
   609.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   609.8 +// which accompanies this distribution, and is available
   609.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  609.10 +//
  609.11 +// Initial Contributors:
  609.12 +// Nokia Corporation - initial contribution.
  609.13 +//
  609.14 +// Contributors:
  609.15 +//
  609.16 +// Description:
  609.17 +//
  609.18 +
  609.19 +#ifndef __MWBXMLCONVERTEROBSERVER_H__
  609.20 +#define __MWBXMLCONVERTEROBSERVER_H__
  609.21 +
  609.22 +// System includes
  609.23 +//
  609.24 +#include <e32std.h>
  609.25 +
  609.26 +//##ModelId=3B6678E0000E
  609.27 +class MWbxmlConverterObserver
  609.28 +/**
  609.29 +@publishedAll
  609.30 +@deprecated
  609.31 +*/
  609.32 +	{
  609.33 +public:	// Methods
  609.34 +
  609.35 +	//##ModelId=3B6678E00024
  609.36 +	virtual TInt HandleWbxmlOutputL(const HBufC8& aBuffer) = 0;
  609.37 +
  609.38 +	//##ModelId=3B6678E00026
  609.39 +	virtual TInt HandleWbxmlOutputL(HBufC8& aBuffer) = 0;
  609.40 +
  609.41 +	//##ModelId=3B6678E0002D
  609.42 +	virtual TInt HandleWbxmlOutputL(HBufC8* aBuffer) = 0;
  609.43 +
  609.44 +	//##ModelId=3B6678E0002F
  609.45 +	virtual TInt HandleWbxmlOutputL(TUint32 aSource) = 0;
  609.46 +
  609.47 +	//##ModelId=3B6678E00022
  609.48 +	virtual void HandleWbxmlEncodingUpdateL(HBufC8* aCharacterEncoding) = 0;
  609.49 +
  609.50 +private:	// Methods
  609.51 +
  609.52 +	//##ModelId=3B6678E00018
  609.53 +	IMPORT_C virtual void MWbxmlConverterObserver_Reserved1();
  609.54 +
  609.55 +	};
  609.56 +
  609.57 +#endif	// #define __MWBXMLCONVERTEROBSERVER_H__
   610.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   610.2 +++ b/epoc32/include/mw/obex.h	Wed Mar 31 12:27:01 2010 +0100
   610.3 @@ -0,0 +1,36 @@
   610.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   610.5 +// All rights reserved.
   610.6 +// This component and the accompanying materials are made available
   610.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   610.8 +// which accompanies this distribution, and is available
   610.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  610.10 +//
  610.11 +// Initial Contributors:
  610.12 +// Nokia Corporation - initial contribution.
  610.13 +//
  610.14 +// Contributors:
  610.15 +//
  610.16 +// Description:
  610.17 +//
  610.18 +
  610.19 +
  610.20 +
  610.21 +/**
  610.22 + @file
  610.23 + @publishedAll
  610.24 + @released
  610.25 +*/
  610.26 +
  610.27 +#ifndef OBEX_H
  610.28 +#define OBEX_H
  610.29 +
  610.30 +#include <obextypes.h>
  610.31 +#include <obexconstants.h>
  610.32 +#include <obexbaseobject.h>
  610.33 +#include <obexobjects.h>
  610.34 +#include <obexheaders.h>
  610.35 +#include <obexbase.h>
  610.36 +#include <obexclient.h>
  610.37 +#include <obexserver.h>
  610.38 +
  610.39 +#endif // OBEX_H
   611.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   611.2 +++ b/epoc32/include/mw/obexbase.h	Wed Mar 31 12:27:01 2010 +0100
   611.3 @@ -0,0 +1,243 @@
   611.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   611.5 +// All rights reserved.
   611.6 +// This component and the accompanying materials are made available
   611.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   611.8 +// which accompanies this distribution, and is available
   611.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  611.10 +//
  611.11 +// Initial Contributors:
  611.12 +// Nokia Corporation - initial contribution.
  611.13 +//
  611.14 +// Contributors:
  611.15 +//
  611.16 +// Description:
  611.17 +//
  611.18 +
  611.19 +
  611.20 +
  611.21 +/**
  611.22 + @file
  611.23 + @publishedAll
  611.24 + @released
  611.25 +*/
  611.26 +
  611.27 +#ifndef __OBEXBASE_H
  611.28 +#define __OBEXBASE_H
  611.29 +
  611.30 +#include <obextypes.h>
  611.31 +#include <mobexnotify.h>
  611.32 +
  611.33 +class CObexTransportControllerBase;
  611.34 +class TObexTransportInfo;
  611.35 +class CObexPacket;
  611.36 +class CObexNotifyHandlerBase;
  611.37 +
  611.38 +/**
  611.39 +@publishedAll
  611.40 +@released
  611.41 +
  611.42 +This class is the common base class for any object which wishes
  611.43 +to use the Obex Server or Client.
  611.44 +The class which owns a CObexClient or CObexServer must be provide an object
  611.45 +derived from this class to handle the call from the Server/Client for a request
  611.46 +for a Password.
  611.47 +@see CObex::SetCallBack
  611.48 +*/
  611.49 +class MObexAuthChallengeHandler
  611.50 +	{
  611.51 +public:
  611.52 +	/**
  611.53 +	Indicates that the server/client has received an Authentication challenge. The challenge
  611.54 +	can only be responded to once a password has been retrieved by some means and passed
  611.55 +	back to the calling class. The password is passed back via CObex::UserPasswordL
  611.56 +	@param aRealm This will contain the Realm specified by the unit forcing the
  611.57 +	Authentication, if no UserID was supplied then this parameter will be of zero length. 
  611.58 +	*/
  611.59 +	virtual void GetUserPasswordL(const TDesC& aRealm) = 0;
  611.60 +		
  611.61 +	/**
  611.62 + 	Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
  611.63 +	@param aInterface UID of the interface to return
  611.64 +	@param aObject the container for another interface as specified by aInterface
  611.65 +	*/
  611.66 +	IMPORT_C virtual void MOACH_ExtensionInterfaceL(TUid aInterface, void*& aObject);
  611.67 +	};
  611.68 +
  611.69 +/**
  611.70 +This class is the common base class for CObexClient and CObexServer. It is 
  611.71 +an abstract class and cannot be instantiated in itself. However, it does 
  611.72 +contain user functionality common to both client and server connections.
  611.73 +
  611.74 +Provides the basic OBEX transport functionality (sending and receiving 
  611.75 +files)
  611.76 +Client and server provide the more specialied APIs for
  611.77 +- initiation or response to puts & gets
  611.78 +- (possible) handling of more generalised 'objects' (prob. with data buffered through a file).
  611.79 +
  611.80 +This class is not designed for user derivation
  611.81 +
  611.82 +@publishedAll
  611.83 +@released
  611.84 +*/
  611.85 +NONSHARABLE_CLASS(CObex) : public CBase, protected MObexNotify
  611.86 +	{
  611.87 +public:
  611.88 +	/**
  611.89 +	Describes the information set or received in a SETPATH command.
  611.90 +	
  611.91 +	The first bit of iFlags, 0, can be set to indicate to the receiver of SETPATH to backup a level before applying the path name.
  611.92 +	The second bit of iFlags, 1, can be set to indicate to the receiver of SETPATH to NOT create the directory if it doesn't exist.
  611.93 +	The iConstants variable is always set to zero as it is reserved. 
  611.94 +	The iName variable indicates the directory to create or go to, and does not include the root directory of the receiver (i.e. 
  611.95 +	if the directory to be set is C:\notes then iName is set to "notes").
  611.96 +	 If  a name is not set then set CObex::TSetPathInfo::iNamePresent to false. 
  611.97 +	*/
  611.98 +	NONSHARABLE_CLASS(TSetPathInfo)
  611.99 +		{
 611.100 +	public:
 611.101 +		IMPORT_C TSetPathInfo();
 611.102 +		TSetPathInfo(const TObexSetPathData& aData);
 611.103 +		IMPORT_C TBool Parent() const;
 611.104 +		TUint8 iFlags;
 611.105 +		TUint8 iConstants;
 611.106 +		TBuf<KObexObjectDescriptionSize> iName;
 611.107 +		/** Whether iName is present in this SETPATH info */	
 611.108 +		TBool iNamePresent;	
 611.109 +	private:
 611.110 +		// This data padding has been added to help prevent future binary compatibility breaks	
 611.111 +		// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 611.112 +		TUint32     iPadding1; 
 611.113 +		TUint32     iPadding2; 				
 611.114 +		};
 611.115 +		
 611.116 +	/**
 611.117 +	Current obex connection state
 611.118 +	In general, the further through the enum the values are,
 611.119 +	the further through the connection process the state machine
 611.120 +	will be.
 611.121 +	*/
 611.122 +	enum TConnectState 
 611.123 +		{ 
 611.124 +		EConnIdle,					/** Nothing is happening */
 611.125 +		EConnTransport,				/** Transport Link connected not yet established true Link */
 611.126 +		EConnObex,					/** full connection established */
 611.127 +		ESimpleConnRequest,			/** Connect without Auth has been sent by ClientReceived by Server */
 611.128 +		EConnChallRxed,				/**  Server has issued a challenge, to a Client cionnect */
 611.129 +		ESimpleConnChallIssued,		/** Server, received Simple Connect but Server Challenge issued */
 611.130 +		EChallConnRequested,		/** Connect with Auth has been sent by Client/Received by Server */
 611.131 +		EChallConnChallIssued,		/** Server has sent a Challenge & Resp to a Client EChallConnRequest */
 611.132 +		EWaitForFinalResponse,		/** Client, waiting for final success/fail not chall-response expected
 611.133 +									    Server, Waiting for final Resp fromm Client to Challenge */
 611.134 +		EFinalResponseReceived,		/** Server, the final response has been received */
 611.135 +		EFinalChallRxed,			/** Server, Client connect with challenge, Server responds with challenge, Client re-issued original/new challenge */
 611.136 +		EWaitForUserInput,			/** waiting for the user */
 611.137 +		EDropLink					/** drop the link */
 611.138 +		};
 611.139 +
 611.140 +	/**
 611.141 +	The Obex operation currently being performed.
 611.142 +	*/
 611.143 +	enum TOperation 
 611.144 +		{ 
 611.145 +		EOpConnect		= 0x00, /** Connect */
 611.146 +		EOpDisconnect	= 0x01, /** Disconnect */
 611.147 +		EOpPut			= 0x02, /** Put */
 611.148 +		EOpGet			= 0x03, /** Get */
 611.149 +		EOpSetPath		= 0x05, /** SetPath */
 611.150 +		EOpAbort		= 0xFF,	/** Abort - must fit in one pkt so final bit is always set */
 611.151 +		EOpAbortNoFBit	= 0x7F, /** Abort (internal, never transmitted) */
 611.152 +		EOpGetResponse  = 0xFD,	/** Internal - not actually an obex operation. */
 611.153 +		EOpIdle			= 0xFE,	/** Internal - not actually an obex operation. */
 611.154 +		};
 611.155 +		
 611.156 +	/**
 611.157 +	Flags to suppress the authentication elements of the authentication challenge header.
 611.158 +	*/
 611.159 +	enum TObexSuppressedAuthElements
 611.160 +	{
 611.161 +	EObexNoSuppressedAuthElements				= 0x00,
 611.162 +	EObexSuppressChallengeOptionsAuthElement	= 0x01,
 611.163 +	EObexSuppressRealmAuthElement				= 0x02,
 611.164 +	EObexSuppressAllAuthElements				= EObexSuppressChallengeOptionsAuthElement | EObexSuppressRealmAuthElement // Must be last
 611.165 +	};		
 611.166 +		
 611.167 +	virtual ~CObex();
 611.168 +	IMPORT_C void SetCallBack(MObexAuthChallengeHandler& aCallBack);
 611.169 +	IMPORT_C TBool IsConnected() const;
 611.170 +	IMPORT_C TBool IsStrictPeer() const;
 611.171 +	IMPORT_C const TObexConnectInfo& LocalInfo() const;
 611.172 +	IMPORT_C TInt SetLocalWho(const TDesC8& aInfo); 
 611.173 +    IMPORT_C const TObexConnectInfo& RemoteInfo() const;
 611.174 +   	IMPORT_C void SuppressAuthenticationHeaderElements(TObexSuppressedAuthElements aSuppressedObexAuthElements);
 611.175 +	    
 611.176 +	// Implementation of MObexNotify Interface
 611.177 +	/**
 611.178 +	@internalTechnology
 611.179 +	*/
 611.180 +	virtual void Process(CObexPacket& aPacket);
 611.181 +	/**
 611.182 +	@internalTechnology
 611.183 +	*/
 611.184 +	virtual void Error(TInt aError) ;
 611.185 +	/** Call back to start the obex session
 611.186 +	@internalTechnology
 611.187 +	*/
 611.188 +	virtual void TransportUp();
 611.189 +	/**
 611.190 +	@internalTechnology
 611.191 +	*/
 611.192 +	virtual void TransportDown(TBool aForceTransportDeletion);
 611.193 +	
 611.194 +	virtual void UserPasswordL( const TDesC& aPassword) = 0; 
 611.195 +	IMPORT_C void RemoteAddr(TSockAddr& anAddr); 
 611.196 +
 611.197 +	TConnectState GetConnectState() const;
 611.198 +
 611.199 +	IMPORT_C TBool IsAuthenticating() const;
 611.200 +	
 611.201 +protected:
 611.202 +	CObex();
 611.203 +	virtual void ConstructL(TObexTransportInfo& aObexTransportInfo);
 611.204 +	virtual TInt ParseConnectPacket(CObexPacket& aPacket) = 0;	
 611.205 +	void SetConnectState(TConnectState aNewState);
 611.206 +	IMPORT_C TConnectState ConnectState() const;	// same as GetConnectState - has to be maintained here for BC
 611.207 +	virtual void OnPacketReceive(CObexPacket& aPacket) =0;
 611.208 +	virtual void OnError(TInt aError) =0;
 611.209 +	virtual void OnTransportUp() =0;
 611.210 +	virtual void OnTransportDown() =0;
 611.211 +	void ProcessChallengeL(const TObexInternalHeader& hdr);			//process the received challenge
 611.212 +	void ProcessChallResponseL(const TObexInternalHeader& hdr);		//process the response to challenge
 611.213 +	TInt GenerateChallenge(CObexPacket& aPacket);					//generate a challenge 
 611.214 +	void PrepareChallResponseL(const TDesC& aPassword);			//generate a response a respose to challenge
 611.215 +															//after user Password input
 611.216 +	void ForcedTransportDown();
 611.217 +	void ControlledTransportDown();
 611.218 +	void RemoteInfoCleanup();
 611.219 +	void CObex::CancelObexConnection();
 611.220 +protected:
 611.221 +	TConnectState iConnectState;
 611.222 +	CObexTransportControllerBase* iTransportController;
 611.223 +	TObexConnectInfo iLocalInfo;
 611.224 +	TObexConnectInfo iRemoteInfo;
 611.225 +	MObexAuthChallengeHandler* iCallBack;
 611.226 +	TNonce iOutgoingNonce; //nonce used when challenging
 611.227 +	TNonce iIncomingNonce; //nonce used when receiving a challenge
 611.228 +	HBufC8* iChallPassword; //password used when challenging
 611.229 +	HBufC8* iRespPassword; //password used when responding to a challenge
 611.230 +	HBufC8* iRxChallenge;
 611.231 +	TBuf8<KChallResponseSize> iOutgoingChallResp;//response to the previously issued challenge
 611.232 +								//16 nonce, 16 digest resp, 20 UserID, 3*(tag+size)
 611.233 +	TBuf8<KChallResponseSize> iIncomingChallResp;//response received from previous challenge
 611.234 +	TBuf8<KObexRespSize> iIncomingRequestDigest;
 611.235 +	HBufC* iRemoteUID; //UID of remote device
 611.236 +	HBufC* iRemoteRealm;//Realm of remote device
 611.237 +	CObexAuthenticator* iAuthEngine;
 611.238 +	TBool iChallenge; //to challenge or not to challenge?
 611.239 +	TBool iUserIDRequested; //does the challenge insist that a UserID is returned
 611.240 +	TBool iReserved; //released boolean now available for future use
 611.241 +	TOperation iCurrentOperation;
 611.242 +	CObexNotifyHandlerBase* iNotifyHandler;
 611.243 +	TUint iSuppressedObexAuthElements;
 611.244 +	};
 611.245 +
 611.246 +#endif // __OBEXBASE_H
   612.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   612.2 +++ b/epoc32/include/mw/obexbaseobject.h	Wed Mar 31 12:27:01 2010 +0100
   612.3 @@ -0,0 +1,147 @@
   612.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   612.5 +// All rights reserved.
   612.6 +// This component and the accompanying materials are made available
   612.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   612.8 +// which accompanies this distribution, and is available
   612.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  612.10 +//
  612.11 +// Initial Contributors:
  612.12 +// Nokia Corporation - initial contribution.
  612.13 +//
  612.14 +// Contributors:
  612.15 +//
  612.16 +// Description:
  612.17 +//
  612.18 +
  612.19 +
  612.20 +
  612.21 +/**
  612.22 + @file
  612.23 + @publishedAll
  612.24 + @released
  612.25 +*/
  612.26 +
  612.27 +#ifndef __OBEXBASEOBJECT_H
  612.28 +#define __OBEXBASEOBJECT_H
  612.29 +
  612.30 +#include <obextypes.h>
  612.31 +#include <f32file.h>
  612.32 +
  612.33 +const TUint32 KConnIDInvalid = 0xffffffff;
  612.34 +
  612.35 +/**
  612.36 +Objects of this class are used to describe the objects to be transferred and
  612.37 +those received via Obex.
  612.38 +Consists of a number of attributes describing the object, along with
  612.39 +methods to set them. CObexBaseObject is an abstract base class, which defines
  612.40 +attribute setting and transferring functionality, but does not specify the
  612.41 +storage mechanism for the data part (called the object body) of the object.
  612.42 +This body part is defined in derived classes.
  612.43 +
  612.44 +Object description attributes are tracked for validity automatically, so
  612.45 +that only valid attributes are sent to the remote machine. Also has the
  612.46 +concept of "header masks". This selects which of the various attributes
  612.47 +will actually be sent out/read in when the object is used in an operation
  612.48 +with the remote machine. Objects default to transferring all valid
  612.49 +attributes, use the header mask if restriction is required on the headers
  612.50 +exchanged.
  612.51 +
  612.52 +See the various derived classes for description of object body
  612.53 +representation.
  612.54 +
  612.55 +The common attributes are defined to be as close to the underlying OBEX
  612.56 +headers as usefully possible, hence any OBEX header specified as a Unicode
  612.57 +string (e.g. Name) translate to TDes (variant) EPOC descriptors, "byte
  612.58 +sequences" (e.g. Type) are TDes8 (or ASCII invariant), and byte and 32 bit
  612.59 +integers (e.g. Length) are TUint32s.
  612.60 +
  612.61 +This class is not designed for user derivation (ie. outside of this dll).
  612.62 +
  612.63 +@see CObexHeader
  612.64 +@publishedAll
  612.65 +@released
  612.66 +*/
  612.67 +NONSHARABLE_CLASS(CObexBaseObject) : public CBase
  612.68 +	{
  612.69 +// required for access to iValidHeaders in CObexServer::CheckForConnectionID
  612.70 +friend class CObexServer;
  612.71 +
  612.72 +public:
  612.73 +	virtual ~CObexBaseObject();
  612.74 +	IMPORT_C void SetHeaderMask(const TObexHeaderMask aHeaderMask);
  612.75 +	IMPORT_C void SetNameL(const TDesC& aDesc);
  612.76 +	IMPORT_C void SetTypeL(const TDesC8& aDesc);
  612.77 +	IMPORT_C void SetLengthL(const TUint32 aLength);
  612.78 +	IMPORT_C void SetTimeL(const TTime aLocalTime);
  612.79 +	IMPORT_C void SetDescriptionL(const TDesC& aDesc);
  612.80 +	IMPORT_C void SetTargetL(const TDesC8& aDesc);
  612.81 +	IMPORT_C void AddHttpL(const TDesC8& aDesc);
  612.82 +	IMPORT_C void SetAppParamL(const TDesC8& aDesc);
  612.83 +	
  612.84 +	IMPORT_C void AddHeaderL(CObexHeader& aHeader);
  612.85 +	IMPORT_C TInt BytesSent();
  612.86 +	IMPORT_C TInt BytesReceived();
  612.87 +	IMPORT_C TObexHeaderMask HeaderMask();
  612.88 +	IMPORT_C TObexHeaderMask ValidHeaders();
  612.89 +	IMPORT_C const TDesC& Name();
  612.90 +	IMPORT_C const TDesC8& Type();
  612.91 +	IMPORT_C TUint32 Length();
  612.92 +	IMPORT_C const TTime Time();
  612.93 +	IMPORT_C const TDesC& Description();
  612.94 +	IMPORT_C const TDesC8& Target();
  612.95 +	IMPORT_C const RPointerArray<HBufC8>* Http() const;
  612.96 +	IMPORT_C const TDesC8& AppParam() const;
  612.97 +	IMPORT_C void Reset();
  612.98 +	IMPORT_C const CObexHeaderSet& HeaderSet() const;
  612.99 +	IMPORT_C CObexHeaderSet& HeaderSet();
 612.100 +
 612.101 +	// Public unexported functions used by CObexServer, CObexClient, etc
 612.102 +	enum TProgress { EContinue,EComplete,EError,ELastPacket };
 612.103 +	TInt InitSend(TObexOpcode aOpcode);
 612.104 +	TProgress PrepareNextSendPacket(CObexPacket& aPacket);
 612.105 +	TInt InitReceive();
 612.106 +	TProgress ParseNextReceivePacket(CObexPacket& aPacket);
 612.107 +	void PrepareConnectionHeader( CObexPacket& aPacket );
 612.108 +	void SetConnectionIdL(TUint32 aFourByte);
 612.109 +	TUint32 ConnectionID();
 612.110 +	TObexResponse GetLastError() const;
 612.111 +
 612.112 +protected:
 612.113 +	CObexBaseObject();
 612.114 +	void GuessTypeFromExtL(const TDesC& aExt);
 612.115 +	void ResetHeaders();
 612.116 +	// Pure virtuals that all derived objects must implement
 612.117 +	virtual void GetData(TInt aPos, TDes8& aDes) =0;
 612.118 +	virtual void NewData(TInt aPos, TDes8& aDes) =0;
 612.119 +	virtual TInt DataSize() =0;
 612.120 +	virtual void ResetData() =0;
 612.121 +	void CreateHeaderStorageDataL();
 612.122 +	void SetTimeHeaderL(const TDesC8& aTimeDes);
 612.123 +	void SetUtcTimeL(const TTime aUtcTime);
 612.124 +	
 612.125 +// Data
 612.126 +private:
 612.127 +	TObexHeaderMask iHeaderMask;
 612.128 +	TObexHeaderMask iValidHeaders;
 612.129 +
 612.130 +	mutable RPointerArray<HBufC8>* iHttp;
 612.131 +
 612.132 +	CObexHeaderSet* iHeaderSet;
 612.133 +	
 612.134 +	TProgress iSendProgress;
 612.135 +	TProgress iRecvProgress;
 612.136 +	TObexOpcode iSendOpcode;
 612.137 +
 612.138 +	// This data item is used to store a CObexHeader which is used as a temporary
 612.139 +	// store when finding headers
 612.140 +	CObexHeader* iObexHeader;
 612.141 +	
 612.142 +	TObexHeaderMask iSendHeaders; 
 612.143 +	TInt iSendBytes;
 612.144 +	TInt iRecvBytes;
 612.145 +	
 612.146 +	TObexResponse iLastError;
 612.147 +	
 612.148 +	};
 612.149 +
 612.150 +#endif // __OBEXBASEOBJECT_H
   613.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   613.2 +++ b/epoc32/include/mw/obexbttransportinfo.h	Wed Mar 31 12:27:01 2010 +0100
   613.3 @@ -0,0 +1,36 @@
   613.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   613.5 +// All rights reserved.
   613.6 +// This component and the accompanying materials are made available
   613.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   613.8 +// which accompanies this distribution, and is available
   613.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  613.10 +//
  613.11 +// Initial Contributors:
  613.12 +// Nokia Corporation - initial contribution.
  613.13 +//
  613.14 +// Contributors:
  613.15 +//
  613.16 +// Description:
  613.17 +//
  613.18 +
  613.19 +#ifndef __OBEXBTTRANSPORTINFO_H__
  613.20 +#define __OBEXBTTRANSPORTINFO_H__
  613.21 +
  613.22 +#include <bt_sock.h>
  613.23 +#include <obextransportinfo.h>
  613.24 +
  613.25 +/**
  613.26 +Concrete transport info type for use when using RFCOMM transport controller.
  613.27 +@publishedAll
  613.28 +@released
  613.29 +*/
  613.30 +NONSHARABLE_CLASS(TObexBtTransportInfo) : public TObexTransportInfo
  613.31 +	{
  613.32 +public:
  613.33 +	/**
  613.34 +	The BT device address of the remote party.
  613.35 +	*/
  613.36 +	TBTSockAddr iAddr;
  613.37 +	};
  613.38 +
  613.39 +#endif // __OBEXBTTRANSPORTINFO_H__
   614.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   614.2 +++ b/epoc32/include/mw/obexclient.h	Wed Mar 31 12:27:01 2010 +0100
   614.3 @@ -0,0 +1,112 @@
   614.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   614.5 +// All rights reserved.
   614.6 +// This component and the accompanying materials are made available
   614.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   614.8 +// which accompanies this distribution, and is available
   614.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  614.10 +//
  614.11 +// Initial Contributors:
  614.12 +// Nokia Corporation - initial contribution.
  614.13 +//
  614.14 +// Contributors:
  614.15 +//
  614.16 +// Description:
  614.17 +//
  614.18 +
  614.19 +
  614.20 +
  614.21 +/**
  614.22 + @file
  614.23 + @publishedAll
  614.24 + @released
  614.25 +*/
  614.26 +
  614.27 +#ifndef __OBEXCLIENT_H
  614.28 +#define __OBEXCLIENT_H
  614.29 +
  614.30 +#include <obextypes.h>
  614.31 +#include <obex/internal/obextransportconstants.h>
  614.32 +#include <obexbase.h>
  614.33 +
  614.34 +class CObexPacket;
  614.35 +class MObexFinalPacketObserver;
  614.36 +class CObexPacketSignaller;
  614.37 +class CObexPacketTimer;
  614.38 +class CObexErrorEngine;
  614.39 +
  614.40 +/**
  614.41 +Client side functionality. Connection based.
  614.42 +Supports ...
  614.43 +- Opening IrDA TTP sockets for the OBEX session.
  614.44 +- Opening an OBEX session over a connected socket
  614.45 +- Standard OBEX (spec. version 1.2) operations.
  614.46 + 
  614.47 +This class is not designed for user derivation.
  614.48 +
  614.49 +@publishedAll
  614.50 +@released
  614.51 +*/
  614.52 +NONSHARABLE_CLASS(CObexClient) : public CObex
  614.53 +	{
  614.54 +public:
  614.55 +	IMPORT_C ~CObexClient();
  614.56 +	IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr);
  614.57 +	IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy);
  614.58 +	IMPORT_C static CObexClient* NewL(TObexTransportInfo& aObexTransportInfo);
  614.59 +	IMPORT_C void Connect(TRequestStatus& aStatus);
  614.60 +	IMPORT_C void Connect(CObexBaseObject& aObject, TRequestStatus& aStatus);	
  614.61 +	IMPORT_C void ConnectL(CObexBaseObject& aObject, const TDesC& aPassword, 
  614.62 +													TRequestStatus& aStatus);
  614.63 +	IMPORT_C void ConnectL(const TDesC& aPassword, TRequestStatus& aStatus);
  614.64 +	IMPORT_C void Disconnect(TRequestStatus& aStatus);						
  614.65 +	IMPORT_C void Put(CObexBaseObject& aObject, TRequestStatus& aStatus);
  614.66 +	IMPORT_C void Get(CObexBaseObject& aObject, TRequestStatus& aStatus);		
  614.67 +	IMPORT_C void SetPath(TSetPathInfo& aPathInfo, TRequestStatus& aStatus);
  614.68 +	IMPORT_C void Abort();					
  614.69 +	IMPORT_C void UserPasswordL( const TDesC& aPassword);
  614.70 +	IMPORT_C const CObexHeaderSet& GetPutFinalResponseHeaders();
  614.71 +	IMPORT_C void SetFinalPacketObserver(MObexFinalPacketObserver* aObserver);
  614.72 +	IMPORT_C TObexResponse LastServerResponseCode() const;
  614.73 +	IMPORT_C void SetCommandTimeOut(TTimeIntervalMicroSeconds32 aTimeOut);
  614.74 +	IMPORT_C TAny* ExtensionInterface(TUid aUid);
  614.75 +
  614.76 +public:	// Called from CObexNotifyExtendClient
  614.77 +	void SignalPacketProcessEvent(TObexPacketProcessEvent aEvent);
  614.78 +	void TimeOutCompletion();
  614.79 +	
  614.80 +private:
  614.81 +	CObexClient();
  614.82 +	void ConstructL(TObexTransportInfo& aObexTransportInfo);
  614.83 +	TBool AlreadyActive(TRequestStatus& aStatus);
  614.84 +	void ClientCommandL(TOperation aOp, TAny* aParam, TRequestStatus& aStatus);
  614.85 +	// Implementation of CObex Events
  614.86 +	virtual void OnPacketReceive(CObexPacket& aPacket);
  614.87 +	virtual void OnError(TInt aError);
  614.88 +	virtual void OnTransportUp();
  614.89 +	virtual void OnTransportDown();
  614.90 +	void SetRequest(TRequestStatus& aStatus, TOperation aOperation);
  614.91 +	void CompleteRequest(const TInt aCompletion);
  614.92 +	TInt PrepareConnectPacket(CObexPacket& aPacket);	// Should be members of TConnectInfo
  614.93 +	TInt ParseConnectPacket(CObexPacket& aPacket);	
  614.94 +	void ResetConnectionID();
  614.95 +	void SetConnectionID(TUint32 aConnectionID);
  614.96 +	void EmptyHeaderSet();
  614.97 +	void SendRequestPacket();
  614.98 +	void SendRequestPacket(TObexOpcode aObexOpcode);
  614.99 +
 614.100 +private: 
 614.101 +	TRequestStatus* iPendingRequest;
 614.102 +	CObexBaseObject* iCurrentObject;
 614.103 +	TUint32 iConnectionID; 
 614.104 +	TBool iConnectionIdSet;
 614.105 +	CObexHeaderSet* iHeaderSet;
 614.106 +	CObexHeader* iHeader;
 614.107 +	CObexPacketSignaller* iPacketProcessSignaller;
 614.108 +	TObexResponse iLastReceivedResponseOpcode;
 614.109 +	CObexErrorEngine* iErrorEngine;
 614.110 +	TBool iIsLastErrorSet;
 614.111 +	TTimeIntervalMicroSeconds32 iCmdTimeOutDuration;
 614.112 +	CObexPacketTimer* iPacketTimer;
 614.113 +	};
 614.114 +
 614.115 +#endif // __OBEXCLIENT_H
   615.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   615.2 +++ b/epoc32/include/mw/obexconstants.h	Wed Mar 31 12:27:01 2010 +0100
   615.3 @@ -0,0 +1,689 @@
   615.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   615.5 +// All rights reserved.
   615.6 +// This component and the accompanying materials are made available
   615.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   615.8 +// which accompanies this distribution, and is available
   615.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  615.10 +//
  615.11 +// Initial Contributors:
  615.12 +// Nokia Corporation - initial contribution.
  615.13 +//
  615.14 +// Contributors:
  615.15 +//
  615.16 +// Description:
  615.17 +//
  615.18 +
  615.19 +
  615.20 +
  615.21 +/**
  615.22 + @file
  615.23 + @publishedAll
  615.24 + @released
  615.25 +*/
  615.26 +
  615.27 +#ifndef __OBEXCONSTANTS_H
  615.28 +#define __OBEXCONSTANTS_H
  615.29 +
  615.30 +#include <e32std.h>
  615.31 +#include <es_sock.h>
  615.32 +#include <ir_sock.h>
  615.33 +#include <bt_sock.h>
  615.34 +#include <obexpanics.h>
  615.35 +
  615.36 +//common to request & resp digests
  615.37 +
  615.38 +/** @internalComponent */
  615.39 +const TInt KChallResponseSize = 58;
  615.40 +/** @internalComponent */
  615.41 +const TInt KMinChallResponseSize = 18; //Nonce(16) + tag(1) + size(1)
  615.42 +/** @internalComponent */
  615.43 +const TInt KObexNonceSize = 16;
  615.44 +/** @internalComponent */
  615.45 +const TUint8 KObexRequireUID = 0x01;
  615.46 +
  615.47 +//request or chall
  615.48 +/** @internalComponent */
  615.49 +const TUint KObexChallNonceTag = 0;
  615.50 +/** @internalComponent */
  615.51 +const TUint8 KObexChallOptionsTag = 0x01;
  615.52 +/** @internalComponent */
  615.53 +const TUint8 KObexChallRealmTag = 0x02;
  615.54 +/** @internalComponent */
  615.55 +const TInt KObexChallOptionSize = 1; //this can't be changed from one without making
  615.56 +/** @internalComponent */
  615.57 +const TUint KObexChallHeaderSize = 23; //assuming no Realm data
  615.58 +
  615.59 +//response
  615.60 +/** @internalComponent */
  615.61 +const TUint KObexRespTag = 0;
  615.62 +/** @internalComponent */
  615.63 +const TInt KObexRespSize = 16;
  615.64 +/** @internalComponent */
  615.65 +const TUint8 KObexRespUserIDTag = 0x01;
  615.66 +/** @internalComponent */
  615.67 +const TUint8 KObexRespNonceTag = 0x02;
  615.68 +
  615.69 +/** @internalComponent */
  615.70 +const TUint8 KObexHeaderTypeMask = 0xc0;
  615.71 +/** @internalComponent */
  615.72 +const TUint8 KObexHeaderTypeOffset = 6;
  615.73 +
  615.74 +#ifdef _UNICODE
  615.75 +/** @internalComponent */
  615.76 +const TInt KUidOBEXTransportModule = 0x10003d56;
  615.77 +#else
  615.78 +/** @internalComponent */
  615.79 +const TInt KUidOBEXTransportModule = 0x1000169c;
  615.80 +#endif
  615.81 +
  615.82 +/** @internalComponent */
  615.83 +const TInt KUsbIntStringDescLength = 30;
  615.84 +
  615.85 +/** @internalComponent */
  615.86 +const TUint8 KFourByteTimeHeaderAddress = 0xc4;
  615.87 +
  615.88 +// Header mask definitions.
  615.89 +// Old style accessor for which headers are present or
  615.90 +// should be sent by an object.  Now deprecated, use the
  615.91 +// header iterator instead.
  615.92 +/** @internalComponent */
  615.93 +const TUint16 KObexHdrName				= 0x0001;
  615.94 +/** @internalComponent */
  615.95 +const TUint16 KObexHdrType				= 0x0002;
  615.96 +/** @internalComponent */
  615.97 +const TUint16 KObexHdrLength			= 0x0004;
  615.98 +/** @internalComponent */
  615.99 +const TUint16 KObexHdrTime				= 0x0008;
 615.100 +/** @internalComponent */
 615.101 +const TUint16 KObexHdrDescription		= 0x0010;
 615.102 +/** @internalComponent */
 615.103 +const TUint16 KObexHdrTarget			= 0x0020;
 615.104 +/** @internalComponent */
 615.105 +const TUint16 KObexHdrConnectionID		= 0x0040;
 615.106 +/** @internalComponent */
 615.107 +const TUint16 KObexHdrBody				= 0x0080;
 615.108 +/** @internalComponent */
 615.109 +const TUint16 KObexHdrEndOfBody			= 0x0100;
 615.110 +/** @internalComponent */
 615.111 +const TUint16 KObexHdrHttp				= 0x0200;
 615.112 +/** @internalComponent */
 615.113 +const TUint16 KObexHdrAppParam			= 0x0400;
 615.114 +/** @internalComponent */
 615.115 +const TUint16 KObexHdrUserDefined		= 0x0800;
 615.116 +/** @internalComponent */
 615.117 +const TUint16 KObexHdrCount				= 0x1000;
 615.118 +/** @internalComponent */
 615.119 +const TUint16 KObexHdrCreatorID			= 0x2000;
 615.120 +/** @internalComponent */
 615.121 +const TUint16 KObexHdrWanUUID			= 0x4000;
 615.122 +/** @internalComponent */
 615.123 +const TUint16 KObexHdrObjectClass		= 0x8000;
 615.124 +
 615.125 +/** @internalComponent */
 615.126 +const TUint8  KObexUserDefinedHdrAddrMin	 = 0x30; //start of user defined header address range
 615.127 +/** @internalComponent */
 615.128 +const TUint8  KObexUserDefinedHdrAddrMax	 = 0x3F; //end of user defined header address range
 615.129 +
 615.130 +/** @internalComponent */
 615.131 +const TUint8 KObexVersion           	= 0x10;		///< Version 1.0 (still correct for Obex spec v 1.2)
 615.132 +
 615.133 +/** @internalComponent */
 615.134 +const TUint8 KObexObjectFieldSize   	= 127;
 615.135 +/** @internalComponent */
 615.136 +const TUint8 KObexObjectDescriptionSize = 255;
 615.137 +
 615.138 +// Extended errors for IrObex
 615.139 +
 615.140 +/** Must not use as not in the allocated range */
 615.141 +const TInt KErrIrObexRespBase			= - 5500; 
 615.142 +
 615.143 +/** Extended error for IrObex - No other infrared device found */
 615.144 +const TInt KErrIrObexClientNoDevicesFound = -5501;
 615.145 +
 615.146 +/** Extended error for IrObex - Other IR device cannot handle IrObex */
 615.147 +const TInt KErrIrObexClientPeerDoesNotHaveObex = -5502;
 615.148 +
 615.149 +/** Extended error for IrObex - Other IR device aborted the transfer */
 615.150 +const TInt KErrIrObexClientPutPeerAborted	= -5503;
 615.151 +
 615.152 +/** Extended error for IrObex - Peer device aborted data transmission/obex sending */
 615.153 +const TInt KErrIrObexServerPutPeerAborted = -5507;
 615.154 +
 615.155 +/** Extended error for IrObex - Cannot authorise the challenge so link dropped */
 615.156 +const TInt KErrIrObexConnectChallRejected = -5512;
 615.157 +
 615.158 +// Other Obex errors defined in the system but no longer used
 615.159 +// Do not reuse the number!
 615.160 +// KErrIrObexClientPutPeerCannotHandleObject -5504
 615.161 +// KErrIrObexServerPutFileWriteError		-5509
 615.162 +// KErrIrObexClientFirstPutFailed			-5510
 615.163 +// KErrIrObexClientSubsequentPutFailed		-5511
 615.164 +
 615.165 +/** Unexpected event for the given state */
 615.166 +const TInt KErrIrObexBadEvent = -5513;
 615.167 +
 615.168 +/** Event occurred while Server is stopped */
 615.169 +const TInt KErrIrObexServerStopped = -5514;
 615.170 +
 615.171 +/** Packet received while state machine is in a wait state */
 615.172 +const TInt KErrIrObexPacketDuringWait = -5515;
 615.173 +
 615.174 +// There are other error codes defined at the end of this file,
 615.175 +// which are a direct mapping of specific Obex error codes and
 615.176 +// are returned by the client.
 615.177 +
 615.178 +
 615.179 +// Flags used by Connect
 615.180 +// ...None in OBEX 1.0
 615.181 +
 615.182 +// Flags used by SetPath
 615.183 +/** @internalComponent */
 615.184 +const TUint8 KObexSetPathParent	= 0x01;
 615.185 +
 615.186 +/**
 615.187 +Version number for TObexTransportInfo and derived classes.  
 615.188 +When iVersion is set to this value the following fields of TObexTransportInfo  
 615.189 +must be set:
 615.190 +iTransportName, 
 615.191 +iReceiveMtu
 615.192 +iTransmitMtu
 615.193 +The iVersion member variable must be set to this value. If in future any of the 
 615.194 +iFuture variables are used a new version constant will be created.
 615.195 +
 615.196 +@see TObexTransportInfo
 615.197 +@publishedAll
 615.198 +@released
 615.199 +*/
 615.200 +const TInt KObexTransportInfoVersion0 = 0;	
 615.201 +
 615.202 +/**
 615.203 +Default for the receive and transmit MTU sizes
 615.204 +Use this default value for setting the iReceiveMtu or iTransmitMtu in TObexTransportInfo
 615.205 +objects or derived classes.
 615.206 +
 615.207 +@see TObexTransportInfo
 615.208 +@publishedAll
 615.209 +@released
 615.210 +*/
 615.211 +const TInt KObexDefaultMtuSize = 4000;
 615.212 +
 615.213 +/**
 615.214 +Default value for the number of discovery slots to use.  Use this value as a default 
 615.215 +for iDiscoverySlots in TObexIrdaV2TransportInfo.  
 615.216 +
 615.217 +@see TObexIrdaV2TransportInfo
 615.218 +@publishedAll
 615.219 +@released
 615.220 +*/
 615.221 +const TUint KObexIrdaDefaultDiscoverySlotsToUse = 1;
 615.222 +
 615.223 +/**
 615.224 +Default value for the number of discovery attempts made.  Use this value as a default for iDiscoveryAttempts
 615.225 +in TObexIrdaV2TransportInfo.  
 615.226 +@see TObexIrdaV2TransportInfo
 615.227 +@publishedAll
 615.228 +@released
 615.229 +*/
 615.230 +const TUint KObexIrdaDefaultDiscoveryAttempts = 4;
 615.231 +
 615.232 +// Constants used to define which transport Obex will run over.
 615.233 +// Used in TObexTransportInfo and TObexProtocolInfo's iTransport member.
 615.234 +
 615.235 +/**
 615.236 +Protocol string when running over IrDA
 615.237 +@see TObexIrProtocolInfo
 615.238 +@see TObexTransportInfo
 615.239 +@publishedAll
 615.240 +@released
 615.241 +*/
 615.242 +_LIT(KObexIrTTPProtocol, "IrTinyTP");
 615.243 +
 615.244 +/**
 615.245 +Protocol string when running over IrDA
 615.246 +Using this version indicates that the configuration object contains discovery parameters.
 615.247 +@see TObexIrProtocolInfo
 615.248 +@publishedAll
 615.249 +@released
 615.250 +*/
 615.251 +_LIT(KObexIrTTPProtocolV2, "IrTinyTP-V2");
 615.252 +
 615.253 +/**
 615.254 +Protocol string when running over IrDA
 615.255 +Using this version indicates that the configuration object contains the device nickname.
 615.256 +@see TObexIrProtocolInfo
 615.257 +@publishedAll
 615.258 +
 615.259 +@capability WriteDeviceData If the TObexIrV3TransportInfo is passed as the argument
 615.260 +                            to CObexServer::NewL or CObexClient::NewL and the associated 
 615.261 +                            name is valid.
 615.262 +@released
 615.263 +*/
 615.264 +_LIT(KObexIrTTPProtocolV3, "IrTinyTP-V3");
 615.265 +
 615.266 +/**
 615.267 +Protocol string when running over Bluetooth
 615.268 +@see TObexBluetoothProtocolInfo
 615.269 +@see TObexTransportInfo
 615.270 +@publishedAll
 615.271 +@released
 615.272 +*/
 615.273 +_LIT(KObexRfcommProtocol, "RFCOMM");
 615.274 +
 615.275 +/**
 615.276 +Protocol string when running over USB
 615.277 +@see TObexUsbProtocolInfo
 615.278 +@see TObexTransportInfo
 615.279 +@publishedAll
 615.280 +@released
 615.281 +*/
 615.282 +_LIT(KObexUsbProtocol, "USB");
 615.283 +
 615.284 +/**
 615.285 +Place holder for...
 615.286 +protocol string that should be used 
 615.287 +if a Win32 emulator USB transport were 
 615.288 +to be created for testing.
 615.289 +@see TObexUsbProtocolInfo
 615.290 +@see TObexTransportInfo
 615.291 +@publishedAll
 615.292 +@released
 615.293 +*/
 615.294 +_LIT(KObexWin32UsbProtocol, "Win32Usb");
 615.295 +
 615.296 +/**
 615.297 +Protocol string when running over USB using client driver extensions
 615.298 +@see TObexUsbProtocolInfoV2
 615.299 +@see TObexTransportInfo
 615.300 +@publishedAll
 615.301 +@released
 615.302 +*/
 615.303 +_LIT(KObexUsbProtocolV2, "USB-V2");
 615.304 +
 615.305 +/** 
 615.306 +This class is derived for each underlying transport protocol OBEX 
 615.307 +runs over.
 615.308 +
 615.309 +The iTransport member holds the unique name for the transport. For example for
 615.310 +infra-red (TinyTP) this is "IrTinyTP" or KObexIrTTPProtocol.
 615.311 +
 615.312 +@see TObexIrProtocolInfo for running over TinyTP
 615.313 +@see TObexBluetoothProtocolInfo for running over Rfcomm
 615.314 +@see TObexUsbProtocolInfo for running over USB
 615.315 +@see TObexUsbProtocolInfoV2 for running over USB using client driver extensions
 615.316 +
 615.317 +@see KObexIrTTPProtocol
 615.318 +@see KObexIrTTPProtocolV2
 615.319 +@see KObexRfcommProtocol
 615.320 +@see KObexUsbProtocol
 615.321 +@see KObexUsbProtocolV2
 615.322 +
 615.323 +@publishedAll
 615.324 +@released
 615.325 +*/
 615.326 +NONSHARABLE_CLASS(TObexProtocolInfo)
 615.327 +	{
 615.328 +public:
 615.329 +	/** Holds the unique name for the transport. */
 615.330 +	TBuf<60> iTransport;
 615.331 +private:
 615.332 +	// This data padding has been added to help prevent future binary compatibility breaks	
 615.333 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 615.334 +	TUint32     iPadding1; 
 615.335 +	TUint32     iPadding2; 		
 615.336 +	};
 615.337 +
 615.338 +/** 
 615.339 +Used to describe IrDA specific protocol information
 615.340 +	
 615.341 +To access the default OBEX server, the IAS class value should be "OBEX"
 615.342 +and the IAS attribute name "IrDA:TinyTP:LsapSel". 
 615.343 +
 615.344 +@publishedAll
 615.345 +@released
 615.346 +*/
 615.347 +NONSHARABLE_CLASS(TObexIrProtocolInfo) : public TObexProtocolInfo
 615.348 +	{
 615.349 +public:
 615.350 +	/** IrDA address information for this connection, as used in the IrDA sockets interface.
 615.351 +	Refer to the SDK for more information about this.
 615.352 +	Its main use is for setting the port that the local machine will listen on. */
 615.353 +	TIrdaSockAddr iAddr;
 615.354 +	/** The IAS class value that the OBEX session will register its listener port,
 615.355 +	or request remote port with. */
 615.356 +	TBuf8<KIASClassNameMax> iClassName;
 615.357 +	/** The IAS attribute value that the OBEX session will register its listener port,
 615.358 +	or request remote port with. */
 615.359 +	TBuf8<KIASAttributeNameMax> iAttributeName;
 615.360 +	/** The number of discovery slots to use. */
 615.361 +	TUint8 iDiscoverySlots;
 615.362 +	/** The number of discovery attempts to make. */
 615.363 +	TUint8 iDiscoveryAttempts;
 615.364 +
 615.365 +private:
 615.366 +	// This data padding has been added to help prevent future binary compatibility breaks	
 615.367 +	// None of these padding variables have been zero'd because they are currently not used
 615.368 +	TUint16     iPadding1; 
 615.369 +	TUint32     iPadding2; 		
 615.370 +	TUint32     iPadding3; 
 615.371 +	TUint32     iPadding4; 	
 615.372 +	};
 615.373 +
 615.374 +/** 
 615.375 +Used to describe Bluetooth specific protocol information
 615.376 +	
 615.377 +@publishedAll
 615.378 +@released
 615.379 +*/
 615.380 +NONSHARABLE_CLASS(TObexBluetoothProtocolInfo) : public TObexProtocolInfo
 615.381 +	{
 615.382 +public:
 615.383 +	/** 
 615.384 +	For OBEX servers:
 615.385 +	This defines the server channel on which the OBEX server listens 
 615.386 +	for connections. The server channel is set using SetPort on the 
 615.387 +	TRfcommSockAddr.
 615.388 +	Note:
 615.389 +	1) Unless the channel is defined as KRfcommPassiveAutoBind 
 615.390 +	it may be in use when the obex server attempts to 'bind' to it
 615.391 +	2) If the channel is defined as KRfcommPassiveAutoBind 
 615.392 +	then when the server is FIRST started it will attempt 
 615.393 +	to find a free RFComm channel. If this is successful 
 615.394 +	that free channel will be used as the server channel 
 615.395 +	for the life time of the obex server including
 615.396 +	when it is 'stopped' and re-'started'.
 615.397 +	3) When the obex server is stopped, and very
 615.398 +	briefly when a bluetooth connection comes down, the
 615.399 +	obex server releases its server channel. It is possible
 615.400 +	therefore that during this time another application might bind
 615.401 +	to it. This will cause an error when the obex server tries
 615.402 +	to re-bind.
 615.403 +
 615.404 +	Also note that a Bluetooth OBEX server will itself set the Object Transfer
 615.405 +	bit in the Service Class as required by the Generic Object Exchange
 615.406 +	Profile so the user need not do this.	
 615.407 +	@see CObexServer
 615.408 +	
 615.409 +	For OBEX clients:
 615.410 +	This defines the server channel and the 
 615.411 +	device address to connect to. The server channel 
 615.412 +	and device address are set respectively using SetPort 
 615.413 +	and SetBTAddr on the TRfcommSockAddr.
 615.414 +	*/
 615.415 +	TRfcommSockAddr iAddr;
 615.416 +	
 615.417 +private:
 615.418 +	// This data padding has been added to help prevent future binary compatibility breaks	
 615.419 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 615.420 +	TUint32     iPadding1; 
 615.421 +	TUint32     iPadding2; 	
 615.422 +	};
 615.423 +
 615.424 +/** 
 615.425 +Used to describe USB specific protocol information
 615.426 +	
 615.427 +@publishedAll
 615.428 +@released
 615.429 +*/
 615.430 +NONSHARABLE_CLASS(TObexUsbProtocolInfo) : public TObexProtocolInfo
 615.431 +	{
 615.432 +public:
 615.433 +	/** Provides a string to be attached to the Obex function's Communication Class interface,
 615.434 +	which may be used to identify the Obex service. */
 615.435 +	TBuf16<KUsbIntStringDescLength> iInterfaceStringDescriptor;
 615.436 +	};
 615.437 +
 615.438 +/** 
 615.439 +Used to set options used by the extended USB client driver for improved performance
 615.440 +	
 615.441 +@see TObexUsbProtocolInfo
 615.442 +@see RDevUsbcClient
 615.443 +@publishedAll
 615.444 +@released
 615.445 +*/
 615.446 +NONSHARABLE_CLASS(TObexUsbProtocolInfoV2) : public TObexUsbProtocolInfo
 615.447 +	{
 615.448 +public:
 615.449 +	/** Bitmap containing the bandwidth priorities to use on IN and OUT endpoints
 615.450 +	@see TUsbcBandwidthPriority
 615.451 +	*/
 615.452 +	TInt iBandwidthPriority;
 615.453 +	/** Specifies whether to use DMA on the bulk OUT endpoint */
 615.454 +	TBool iDmaOnOutEndpoint;
 615.455 +	/** Specifies whether to use DMA on the bulk IN endpoint */
 615.456 +	TBool iDmaOnInEndpoint;
 615.457 +	
 615.458 +private:
 615.459 +	// This data padding has been added to help prevent future binary compatibility breaks	
 615.460 +	// None of these padding variables have been zero'd because they are currently not used
 615.461 +	TUint32     iPadding1; 
 615.462 +	TUint32     iPadding2; 		
 615.463 +	TUint32     iPadding3; 
 615.464 +	TUint32     iPadding4; 	
 615.465 +	};
 615.466 +
 615.467 +/**
 615.468 +Contains information about OBEX packet sizing policy, defining the
 615.469 +maximum buffer size for receive and transmit packets
 615.470 +*/
 615.471 +NONSHARABLE_CLASS(TObexProtocolPolicy)
 615.472 +	{
 615.473 +public:
 615.474 +	IMPORT_C TObexProtocolPolicy ();	// Sets version and default values
 615.475 +
 615.476 +	IMPORT_C TInt SetReceiveMtu ( TUint16 aReceiveMtu );
 615.477 +	IMPORT_C TInt SetTransmitMtu ( TUint16 aTransmitMtu );
 615.478 +	IMPORT_C TUint16 Version () const;
 615.479 +	IMPORT_C TUint16 ReceiveMtu () const;
 615.480 +	IMPORT_C TUint16 TransmitMtu () const;
 615.481 +
 615.482 +private:
 615.483 +	TUint16 iVersion;
 615.484 +	TUint16 iReceiveMtu;
 615.485 +	TUint16 iTransmitMtu;
 615.486 +
 615.487 +	// This data padding has been added to help prevent future binary compatibility breaks	
 615.488 +	// None of these padding variables have been zero'd because they are currently not used
 615.489 +	TUint32     iPadding1; 
 615.490 +	TUint32     iPadding2; 		
 615.491 +	TUint32     iPadding3; 
 615.492 +	TUint32     iPadding4; 	
 615.493 +	};
 615.494 +
 615.495 +struct TObexConnectionInfo;
 615.496 +
 615.497 +/**
 615.498 +TObexConnectInfo
 615.499 +This structure contains information used during OBEX connection. iVersion
 615.500 +holds the encoded OBEX version of the machine, use @c VersionMajor() and
 615.501 +@c VersionMinor() to extract the parts of the version number (each having a
 615.502 +value from 0 to 15). @c iFlags holds OBEX connection flags. @c iWho holds 
 615.503 +the Who attribute from the connect packet, if any was specified, or 
 615.504 +otherwise has a length of 0. 
 615.505 +It is recommended that this class is only ever allocated on the heap as it is quite big.
 615.506 +*/
 615.507 +NONSHARABLE_CLASS(TObexConnectInfo)
 615.508 +	{
 615.509 +public:
 615.510 +	IMPORT_C TObexConnectInfo();
 615.511 +	IMPORT_C TUint8 VersionMajor() const;
 615.512 +	IMPORT_C TUint8 VersionMinor() const;
 615.513 +public:
 615.514 +	TUint8 iVersion; /** Encoded OBEX version of the machine*/
 615.515 +	TUint8 iFlags; /** iFlags holds OBEX connection flags*/
 615.516 +	TBuf8<KObexObjectDescriptionSize> iWho; /** the Who attribute from the connect packet, if any was specified */
 615.517 +	TBuf8<KObexObjectDescriptionSize> iTargetHeader; /** the Target header from the connect packet, if any was specified */
 615.518 +	
 615.519 +private:
 615.520 +	// This data padding has been added to help prevent future binary compatibility breaks	
 615.521 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 615.522 +	TUint32     iPadding1; 
 615.523 +	TUint32     iPadding2; 	
 615.524 +	};
 615.525 +
 615.526 +
 615.527 +
 615.528 +//if these codes are extended due to a IRObex spec update ensure 
 615.529 +//that the TInt immediately below are updated 
 615.530 +//and the default in the method IrOBEXUtil::ObexResponse is also updated
 615.531 +enum TObexResponse  
 615.532 +	{ 
 615.533 +/** Response is "Continue" */	
 615.534 +	ERespContinue			= 0x10,
 615.535 +	
 615.536 +/** Response is "Success" */		
 615.537 +	ERespSuccess			= 0x20,
 615.538 +	
 615.539 +/** Response is "Created" */		
 615.540 +	ERespCreated			= 0x21,
 615.541 +	
 615.542 +/** Response is "Accepted" */		
 615.543 +	ERespAccepted			= 0x22,
 615.544 +	
 615.545 +/** Response is "Non-Authenticated Information" */		
 615.546 +	ERespNonAuthInfo		= 0x23,
 615.547 +	
 615.548 +/** Response is "No Content" */			
 615.549 +	ERespNoContent			= 0x24,
 615.550 +	
 615.551 +/** Response is "Reset Content" */				
 615.552 +	ERespResetContent		= 0x25,
 615.553 +	
 615.554 +/** Response is "Partial Content" */					
 615.555 +	ERespPartialContent		= 0x26,
 615.556 +	
 615.557 +/** Response is "Multiple Choices" */						
 615.558 +	ERespMultipleChoices	= 0x30,
 615.559 +	
 615.560 +/** Response is "Moved Permanently" */						
 615.561 +	ERespMovedPerm			= 0x31,
 615.562 +	
 615.563 +/** Response is "Moved Temporarily" */							
 615.564 +	ERespMovedTemp			= 0x32,
 615.565 +
 615.566 +/** Response is "See Other" */								
 615.567 +	ERespSeeOther			= 0x33,
 615.568 +
 615.569 +/** Response is "Not Modified" */									
 615.570 +	ERespNotModified		= 0x34,
 615.571 +
 615.572 +/** Response is "Use Proxy" */									
 615.573 +	ERespUseProxy			= 0x35,
 615.574 +
 615.575 +/** Response is "Bad Request" */									
 615.576 +	ERespBadRequest			= 0x40,
 615.577 +
 615.578 +/** Response is "Unauthorized" */									
 615.579 +	ERespUnauthorized		= 0x41,
 615.580 +
 615.581 +/** Response is "Payment Required" */									
 615.582 +	ERespPaymentRequired	= 0x42,
 615.583 +
 615.584 +/** Response is "Forbidden" */									
 615.585 +	ERespForbidden			= 0x43,
 615.586 +
 615.587 +/** Response is "Not Found" */										
 615.588 +	ERespNotFound			= 0x44,
 615.589 +
 615.590 +/** Response is "Method Not Allowed" */										
 615.591 +	ERespMethodNotAllowed	= 0x45,
 615.592 +
 615.593 +/** Response is "Not Acceptable" */									
 615.594 +	ERespNotAcceptable		= 0x46,
 615.595 +
 615.596 +/** Response is "Proxy Authentication is Required" */										
 615.597 +	ERespProxyAuthenReqd	= 0x47,
 615.598 +
 615.599 +/** Response is "Timed Out" */										
 615.600 +	ERespTimedOut			= 0x48,
 615.601 +
 615.602 +/** Response is "Conflict" */										
 615.603 +	ERespConflict			= 0x49,
 615.604 +
 615.605 +/** Response is "Gone" */										
 615.606 +	ERespGone				= 0x4A,
 615.607 +
 615.608 +/** Response is "Length Required" */										
 615.609 +	ERespLengthReqd			= 0x4B,
 615.610 +
 615.611 +/** Response is "Precondition Failed" */											
 615.612 +	ERespPreCondFailed		= 0x4C,
 615.613 +
 615.614 +/** Response is "Required Entity is Too Large" */											
 615.615 +	ERespReqEntityTooLarge	= 0x4D,
 615.616 +
 615.617 +/** Response is "Required URL is Too Large" */											
 615.618 +	ERespReqURLTooLarge		= 0x4E,
 615.619 +
 615.620 +/** Response is "Unsupported Media Type" */											
 615.621 +	ERespUnsupMediaType		= 0x4F,
 615.622 +
 615.623 +/** Response is "Internal Error" */											
 615.624 +	ERespInternalError		= 0x50,
 615.625 +
 615.626 +/** Response is "Not Implemented" */											
 615.627 +	ERespNotImplemented		= 0x51,
 615.628 +
 615.629 +/** Response is "Bad Gateway" */											
 615.630 +	ERespBadGateway			= 0x52,
 615.631 +
 615.632 +/** Response is "Service Unavailable" */											
 615.633 +	ERespServiceUnavail		= 0x53,
 615.634 +
 615.635 +/** Response is "Gateway Timeout" */											
 615.636 +	ERespGatewayTimeout		= 0x54,
 615.637 +
 615.638 +/** Response is "HTTP Version is Not Supported" */											
 615.639 +	ERespHTTPVerNotSupp		= 0x55,
 615.640 +
 615.641 +/** Response is "Database is Full" */											
 615.642 +	ERespDatabaseFull		= 0x60,
 615.643 +
 615.644 +/** Response is "Database is Locked" */											
 615.645 +	ERespDatabaseLocked		= 0x61,
 615.646 +
 615.647 +/** Response is "Service is Unavailable" */											
 615.648 +	ERespServiceUnavailable = 0xD3,
 615.649 +	};
 615.650 +
 615.651 +
 615.652 +//some error codes to be used specifically by the client
 615.653 +//these shall, be mapped directly to OBEX defined error codes.
 615.654 +const TInt KErrIrObexRespSuccess		= KErrIrObexRespBase - ERespSuccess;			//-5532 returns 0x20 (0xA0)
 615.655 +const TInt KErrIrObexRespCreated		= KErrIrObexRespBase - ERespCreated;			//-5533 returns 0x21 (0xA1)
 615.656 +const TInt KErrIrObexRespAccepted		= KErrIrObexRespBase - ERespAccepted;			//-5534 returns 0x22 (0xA2)
 615.657 +const TInt KErrIrObexRespNonAuthInfo	= KErrIrObexRespBase - ERespNonAuthInfo;		//-5535 returns 0x23 (0xA3)
 615.658 +const TInt KErrIrObexRespNoContent		= KErrIrObexRespBase - ERespNoContent;			//-5536 returns 0x24 (0xA4)
 615.659 +const TInt KErrIrObexRespResetContent	= KErrIrObexRespBase - ERespResetContent;		//-5537 returns 0x25 (0xA5)
 615.660 +const TInt KErrIrObexRespPartialContent = KErrIrObexRespBase - ERespPartialContent;		//-5538 returns 0x26 (0xA6)
 615.661 +const TInt KErrIrObexRespMultipleChoices = KErrIrObexRespBase - ERespMultipleChoices;	//-5548 returns 0x30 (0xB0)
 615.662 +const TInt KErrIrObexRespMovedPerm		= KErrIrObexRespBase - ERespMovedPerm;			//-5549 returns 0x31 (0xB1)
 615.663 +const TInt KErrIrObexRespMovedTemp		= KErrIrObexRespBase - ERespMovedTemp;			//-5550 returns 0x32 (0xB2)
 615.664 +const TInt KErrIrObexRespSeeOther		= KErrIrObexRespBase - ERespSeeOther;			//-5551 returns 0x33 (0xB3)
 615.665 +const TInt KErrIrObexRespNotModified	= KErrIrObexRespBase - ERespNotModified;		//-5552 returns 0x34 (0xB4)
 615.666 +const TInt KErrIrObexRespUseProxy		= KErrIrObexRespBase - ERespUseProxy;			//-5553 returns 0x35 (0xB5)
 615.667 +const TInt KErrIrObexRespBadRequest		= KErrIrObexRespBase - ERespBadRequest;			//-5564 returns 0x40 (0xC0)
 615.668 +const TInt KErrIrObexRespUnauthorized	= KErrIrObexRespBase - ERespUnauthorized;		//-5565 returns 0x41 (0xC1)
 615.669 +const TInt KErrIrObexRespPaymentRequired = KErrIrObexRespBase - ERespPaymentRequired;	//-5566 returns 0x42 (0xC2)
 615.670 +const TInt KErrIrObexRespForbidden		= KErrIrObexRespBase - ERespForbidden;			//-5567 returns 0x43 (0xC3)
 615.671 +const TInt KErrIrObexRespNotFound		= KErrIrObexRespBase - ERespNotFound;			//-5568 returns 0x44 (0xC4)
 615.672 +const TInt KErrIrObexRespMethodNotAllowed = KErrIrObexRespBase - ERespMethodNotAllowed;	//-5569 returns 0x45 (0xC5)
 615.673 +const TInt KErrIrObexRespNotAcceptable	= KErrIrObexRespBase - ERespNotAcceptable;		//-5570 returns 0x46 (0xC6)
 615.674 +const TInt KErrIrObexRespProxyAuthenReqd = KErrIrObexRespBase - ERespProxyAuthenReqd;	//-5571 returns 0x47 (0xC7)
 615.675 +const TInt KErrIrObexRespTimedOut		= KErrIrObexRespBase - ERespTimedOut;			//-5572 returns 0x48 (0xC8)
 615.676 +const TInt KErrIrObexRespConflict		= KErrIrObexRespBase - ERespConflict;			//-5573 returns 0x49 (0xC9)
 615.677 +const TInt KErrIrObexRespGone			= KErrIrObexRespBase - ERespGone;				//-5574 returns 0x4A (0xCA)
 615.678 +const TInt KErrIrObexRespLengthReqd		= KErrIrObexRespBase - ERespLengthReqd;			//-5575 returns 0x4B (0xCB)
 615.679 +const TInt KErrIrObexRespPreCondFailed	= KErrIrObexRespBase - ERespPreCondFailed;		//-5576 returns 0x4C (0xCC)
 615.680 +const TInt KErrIrObexRespReqEntityTooLarge = KErrIrObexRespBase - ERespReqEntityTooLarge;//-5577 returns 0x4D (0xCD)
 615.681 +const TInt KErrIrObexRespReqURLTooLarge	= KErrIrObexRespBase - ERespReqURLTooLarge;		//-5578 returns 0x4E (0xCE)
 615.682 +const TInt KErrIrObexRespUnsupMediaType = KErrIrObexRespBase - ERespUnsupMediaType;		//-5579 returns 0x4F (0xCF)
 615.683 +const TInt KErrIrObexRespInternalError	= KErrIrObexRespBase - ERespInternalError;		//-5580 returns 0x50 (0xD0)
 615.684 +const TInt KErrIrObexRespNotImplemented = KErrIrObexRespBase - ERespNotImplemented;		//-5581 returns 0x51 (0xD1)
 615.685 +const TInt KErrIrObexRespBadGateway		= KErrIrObexRespBase - ERespBadGateway;			//-5582 returns 0x52 (0xD2)
 615.686 +const TInt KErrIrObexRespServiceUnavail = KErrIrObexRespBase - ERespServiceUnavail;		//-5583 returns 0x53 (0xD3)
 615.687 +const TInt KErrIrObexRespGatewayTimeout = KErrIrObexRespBase - ERespGatewayTimeout;		//-5584 returns 0x54 (0xD4)
 615.688 +const TInt KErrIrObexRespHTTPVerNotSupp = KErrIrObexRespBase - ERespHTTPVerNotSupp;		//-5585 returns 0x55 (0xD5)
 615.689 +const TInt KErrIrObexRespDatabaseFull	= KErrIrObexRespBase - ERespDatabaseFull;		//-5596 returns 0x60 (0xE0)
 615.690 +const TInt KErrIrObexRespDatabaseLocked = KErrIrObexRespBase - ERespDatabaseLocked;		//-5597 returns 0x61 (0xE1)
 615.691 +
 615.692 +#endif // __OBEXCONSTANTS_H
   616.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   616.2 +++ b/epoc32/include/mw/obexfinalpacketobserver.h	Wed Mar 31 12:27:01 2010 +0100
   616.3 @@ -0,0 +1,45 @@
   616.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   616.5 +// All rights reserved.
   616.6 +// This component and the accompanying materials are made available
   616.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   616.8 +// which accompanies this distribution, and is available
   616.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  616.10 +//
  616.11 +// Initial Contributors:
  616.12 +// Nokia Corporation - initial contribution.
  616.13 +//
  616.14 +// Contributors:
  616.15 +//
  616.16 +// Description:
  616.17 +//
  616.18 +
  616.19 +#ifndef OBEXFINALPACKETOBSERVER_H
  616.20 +#define OBEXFINALPACKETOBSERVER_H
  616.21 +
  616.22 +#include <e32std.h>
  616.23 +
  616.24 +/**
  616.25 +This mixin class must be inherited by any class interested in final packet notifications. 
  616.26 +
  616.27 +@publishedAll
  616.28 +@released
  616.29 +*/
  616.30 +
  616.31 +class MObexFinalPacketObserver
  616.32 +	{
  616.33 +public:
  616.34 +
  616.35 +	/** Indicates start of final packet.
  616.36 +	@publishedAll
  616.37 +	@released
  616.38 +	*/
  616.39 +	virtual void MofpoFinalPacketStarted() {};
  616.40 +
  616.41 +	/** Indicates end of final packet.
  616.42 +	@publishedAll
  616.43 +	@released
  616.44 +	*/
  616.45 +	virtual void MofpoFinalPacketFinished() {};
  616.46 +	};
  616.47 +
  616.48 +#endif // OBEXFINALPACKETOBSERVER_H
   617.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   617.2 +++ b/epoc32/include/mw/obexheaders.h	Wed Mar 31 12:27:01 2010 +0100
   617.3 @@ -0,0 +1,241 @@
   617.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   617.5 +// All rights reserved.
   617.6 +// This component and the accompanying materials are made available
   617.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   617.8 +// which accompanies this distribution, and is available
   617.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  617.10 +//
  617.11 +// Initial Contributors:
  617.12 +// Nokia Corporation - initial contribution.
  617.13 +//
  617.14 +// Contributors:
  617.15 +//
  617.16 +// Description:
  617.17 +//
  617.18 +
  617.19 +
  617.20 +
  617.21 +/**
  617.22 + @file
  617.23 + @publishedAll
  617.24 + @released
  617.25 +*/
  617.26 +
  617.27 +#ifndef __OBEXHEADERS_H
  617.28 +#define __OBEXHEADERS_H
  617.29 +
  617.30 +#include <obextypes.h>
  617.31 +
  617.32 +/**
  617.33 +Encapsulates an Obex header.
  617.34 +
  617.35 +This class provides the ability to hold a header of any of the Obex
  617.36 +supported types as a native Symbian OS type.
  617.37 +
  617.38 +A header may also have one or more attributes set.  These are used by
  617.39 +the object which owns the header collection so that it can keep track
  617.40 +of which headers should be sent (!(ESuppressed || EDeleted)), which have
  617.41 +been sent (ESent), and whether the header should be deleted (EDeleted).
  617.42 +Deletion is a special case---any operation on the Object which causes
  617.43 +a scan of the headers will trigger deletion of any marked headers.
  617.44 +This is required as they are owned by the Object, but can be accessed
  617.45 +seperately (including through the creator keeping a pointer to the
  617.46 +header).
  617.47 +
  617.48 +@see CObexBaseObject
  617.49 +@publishedAll
  617.50 +@released
  617.51 +*/
  617.52 +NONSHARABLE_CLASS(CObexHeader) : public CBase
  617.53 +	{
  617.54 +public:
  617.55 +	// Requires friendship with CObexBaseObject to support some aspects of the
  617.56 +	// legacy API (specifically the HTTP accessor method).
  617.57 +	friend class CObexBaseObject;
  617.58 +
  617.59 +	enum THeaderType
  617.60 +		{
  617.61 +		EUnicode  = 0x00,
  617.62 +		EByteSeq  = 0x01,
  617.63 +		EByte     = 0x02,
  617.64 +		EFourByte = 0x03
  617.65 +		};
  617.66 +	
  617.67 +	enum THeaderAttr
  617.68 +		{
  617.69 +		ESuppressed = 0x01,
  617.70 +		ESent       = 0x02,
  617.71 +		EDeleted    = 0x04,
  617.72 +		};
  617.73 +		
  617.74 +	IMPORT_C static CObexHeader* NewL();
  617.75 +	virtual ~CObexHeader();
  617.76 +	IMPORT_C CObexHeader* CopyL() const;
  617.77 +	
  617.78 +	//Sets this object to use the same underlying header as the parameter.
  617.79 +	IMPORT_C void Set(CObexHeader* aHeader);
  617.80 +	//Resets the contents of this header, discarding the underlying data.
  617.81 +	IMPORT_C void Reset();
  617.82 +	
  617.83 +	//Resets and destroys all header attributes.
  617.84 +	IMPORT_C void ResetContents();
  617.85 +	
  617.86 +	IMPORT_C void SetAttributes(TUint16 aAttr);
  617.87 +	IMPORT_C TUint16 Attributes() const;
  617.88 +	
  617.89 +	IMPORT_C THeaderType Type() const;
  617.90 +	
  617.91 +	IMPORT_C TUint8   HI() const;
  617.92 +	IMPORT_C TUint8   AsByte() const;
  617.93 +	IMPORT_C TUint32  AsFourByte() const;
  617.94 +	IMPORT_C const TDesC8&  AsByteSeq() const;
  617.95 +	IMPORT_C const TDesC16& AsUnicode() const;
  617.96 +
  617.97 +	IMPORT_C void SetByte(const TUint8 aHI, const TUint8 aByte);
  617.98 +	IMPORT_C void SetFourByte(const TUint8 aHI, const TUint32 aFourByte);
  617.99 +	IMPORT_C void SetByteSeqL(const TUint8 aHI, const TDesC8& aByteSeq);
 617.100 +	IMPORT_C void SetUnicodeL(const TUint8 aHI, const TDesC16& aUnicode);
 617.101 +
 617.102 +	IMPORT_C TInt EncodedSize() const;
 617.103 +	
 617.104 +private:
 617.105 +	CObexHeader();
 617.106 +	CObexHeader(CObexUnderlyingHeader* aHeader);
 617.107 +	void ConstructL();
 617.108 +	
 617.109 +private:
 617.110 +	CObexUnderlyingHeader* iHeader;
 617.111 +	};
 617.112 +
 617.113 +/**
 617.114 +Used to allow the iterator to decide whether to present a header to
 617.115 +the user, by passing in a possible header HI value.  Headers present
 617.116 +in the object will be presented to the Interested() function in the 
 617.117 +object in which they are held (if received from a remote device
 617.118 +this will be the order in which they were received, otherwise this will
 617.119 +be the order in which they were set).
 617.120 +The function can implement any desired behaviour, including relying on
 617.121 +the order in which the headers are presented.
 617.122 +
 617.123 +In case any state is held, the object also provides a Reset() function.
 617.124 +Reset() provides a default empty implementation.
 617.125 +
 617.126 +Note: there is no destructor. 
 617.127 + 
 617.128 +@publishedAll
 617.129 +@released
 617.130 +*/
 617.131 +class MObexHeaderCheck 
 617.132 +	{
 617.133 +public:
 617.134 +	/**
 617.135 +	Called to discover is the user is interested in the contents of
 617.136 +	this header.
 617.137 +	
 617.138 +	@param aHI The identifier of the header, including type bits.
 617.139 +	@return ETrue if the user is interested in the contents of this
 617.140 +	header.
 617.141 +	@publishedAll
 617.142 +	@released
 617.143 +	*/
 617.144 +	IMPORT_C virtual TBool Interested(TUint8 aHI) =0;
 617.145 +	
 617.146 +	/**
 617.147 +	Called in response to First() being called on the iterator object.
 617.148 +	The default implementation does nothing---some implementations may
 617.149 +	wish to reset state variables.
 617.150 +	
 617.151 +	@publishedAll
 617.152 +	@released
 617.153 +	*/
 617.154 +	IMPORT_C virtual void Reset();
 617.155 +	
 617.156 +	/**
 617.157 + 	Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
 617.158 +	@param aInterface UID of the interface to return
 617.159 +	@param aObject the container for another interface as specified by aInterface
 617.160 +	@internalComponent
 617.161 +	*/
 617.162 +	IMPORT_C virtual void MOHC_ExtensionInterfaceL(TUid aInterface, void*& aObject);
 617.163 +	};
 617.164 +
 617.165 +/**
 617.166 +A collection of headers.  Includes code to filter based on the header HI
 617.167 +value, iterate through the set of interesting headers, and extract headers
 617.168 +with specific HI values.
 617.169 + 
 617.170 +@publishedAll
 617.171 +@released
 617.172 +*/
 617.173 +NONSHARABLE_CLASS(CObexHeaderSet) : public CBase
 617.174 +	{
 617.175 +public:
 617.176 +	IMPORT_C static CObexHeaderSet* NewL();
 617.177 +	IMPORT_C CObexHeaderSet* CopyL();
 617.178 +	IMPORT_C CObexHeaderSet* CopyL(MObexHeaderCheck& aHeaderCheck);
 617.179 +	~CObexHeaderSet();
 617.180 +
 617.181 +	IMPORT_C TInt AddHeader(CObexHeader* aHeader);
 617.182 +	IMPORT_C void DeleteCurrentHeader();
 617.183 +
 617.184 +	IMPORT_C void SetMask(MObexHeaderCheck* aMask);
 617.185 +	IMPORT_C void DeleteMasked();
 617.186 +	
 617.187 +	IMPORT_C void First() const;
 617.188 +	IMPORT_C TInt This(CObexHeader* aHeader) const;
 617.189 +	IMPORT_C TInt Next() const;
 617.190 +	IMPORT_C TInt Next(TInt aSkip) const;
 617.191 +	IMPORT_C TInt Count() const;
 617.192 +	
 617.193 +	IMPORT_C TInt Find(TUint8 aHI, CObexHeader& aHeader) const;
 617.194 +	
 617.195 +private:
 617.196 +	CObexHeaderSet();
 617.197 +
 617.198 +private:
 617.199 +	RPointerArray<CObexHeader> iHeaders;
 617.200 +	mutable MObexHeaderCheck* iMask;
 617.201 +	mutable TInt iPos;
 617.202 +	};
 617.203 +
 617.204 +/** 
 617.205 +@publishedAll
 617.206 +@released
 617.207 +*/
 617.208 +NONSHARABLE_CLASS(TObexMatchHeader) : public MObexHeaderCheck
 617.209 +	{
 617.210 +public:
 617.211 +	virtual EXPORT_C TBool Interested(TUint8 aHI);
 617.212 +	IMPORT_C void SetHeader(TUint8 aHI);
 617.213 +
 617.214 +private:
 617.215 +	TUint8 iHI;
 617.216 +	
 617.217 +private:
 617.218 +	// This data padding has been added to help prevent future binary compatibility breaks	
 617.219 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 617.220 +	TUint32     iPadding1; 
 617.221 +	TUint32     iPadding2; 	
 617.222 +	};
 617.223 +
 617.224 +/** 
 617.225 +@publishedAll
 617.226 +@released
 617.227 +*/
 617.228 +NONSHARABLE_CLASS(TObexMatchHeaderType) : public MObexHeaderCheck
 617.229 +{
 617.230 +public:
 617.231 +	virtual EXPORT_C TBool Interested(TUint8 aHI);
 617.232 +	IMPORT_C void SetType(CObexHeader::THeaderType aType);
 617.233 +
 617.234 +private:
 617.235 +	TInt iType;
 617.236 +
 617.237 +private:
 617.238 +	// This data padding has been added to help prevent future binary compatibility breaks	
 617.239 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 617.240 +	TUint32     iPadding1; 
 617.241 +	TUint32     iPadding2; 	
 617.242 +	};
 617.243 +
 617.244 +#endif // __OBEXHEADERS_H
   618.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   618.2 +++ b/epoc32/include/mw/obexirtransportinfo.h	Wed Mar 31 12:27:01 2010 +0100
   618.3 @@ -0,0 +1,96 @@
   618.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   618.5 +// All rights reserved.
   618.6 +// This component and the accompanying materials are made available
   618.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   618.8 +// which accompanies this distribution, and is available
   618.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  618.10 +//
  618.11 +// Initial Contributors:
  618.12 +// Nokia Corporation - initial contribution.
  618.13 +//
  618.14 +// Contributors:
  618.15 +//
  618.16 +// Description:
  618.17 +//
  618.18 +
  618.19 +#ifndef __OBEXIRTRANSPORTINFO_H__
  618.20 +#define __OBEXIRTRANSPORTINFO_H__
  618.21 +
  618.22 +#include <ir_sock.h>
  618.23 +#include <obextransportinfo.h>
  618.24 +
  618.25 +/**
  618.26 +Concrete transport info type for use when using Irda ttp  transport controller.
  618.27 +@see KObexIrTTPProtocol
  618.28 +@publishedAll
  618.29 +@released
  618.30 +*/
  618.31 +NONSHARABLE_CLASS(TObexIrTransportInfo) : public TObexTransportInfo
  618.32 +
  618.33 +	{
  618.34 +//From TObexIrProtocolInfo
  618.35 +public:
  618.36 +	/** IrDA address information for this connection, as used in the IrDA sockets interface.
  618.37 +	Refer to the SDK for more information about this.
  618.38 +	Its main use is for setting the port that the local machine will listen on. */
  618.39 +	TIrdaSockAddr iAddr;
  618.40 +	/** The IAS class value that the OBEX session will register its listener port,
  618.41 +	or request remote port with. */
  618.42 +	TBuf8<KIASClassNameMax> iClassName;
  618.43 +	/** The IAS attribute value that the OBEX session will register its listener port,
  618.44 +	or request remote port with. */
  618.45 +	TBuf8<KIASAttributeNameMax> iAttributeName;
  618.46 +	};
  618.47 +
  618.48 +/**
  618.49 +Concrete transport info type for use when using Irda ttp  transport controller, with discovery extensions.
  618.50 +@see KObexIrTTPProtocolV2
  618.51 +@publishedAll
  618.52 +@released
  618.53 +*/
  618.54 +NONSHARABLE_CLASS(TObexIrV2TransportInfo) : public TObexIrTransportInfo
  618.55 +
  618.56 +	{
  618.57 +//From TObexIrProtocolInfo
  618.58 +public:
  618.59 +	/** The number of discovery slots to use. */
  618.60 +	TUint8 iDiscoverySlots;
  618.61 +	/** The number of discovery attempts to make. */
  618.62 +	TUint8 iDiscoveryAttempts;
  618.63 +	
  618.64 +private:
  618.65 +	// This data padding has been added to help prevent future binary compatibility breaks	
  618.66 +	// None of these padding variables have been zero'd because they are currently not used
  618.67 +	TUint32     iPadding1; 
  618.68 +	TUint32     iPadding2; 		
  618.69 +	TUint32     iPadding3; 
  618.70 +	TUint32     iPadding4; 	
  618.71 +	};
  618.72 +
  618.73 +
  618.74 +/**
  618.75 +Concrete transport info type for use when using Irda ttp transport controller, with nickname extension.
  618.76 +@see KObexIrTTPProtocolV3
  618.77 +@publishedAll
  618.78 +
  618.79 +@capability WriteDeviceData If the TObexIrV3TransportInfo is passed as the argument
  618.80 +                            to CObexServer::NewL or CObexClient::NewL and the associated 
  618.81 +                            name is valid.
  618.82 +
  618.83 +@released
  618.84 +*/
  618.85 +NONSHARABLE_CLASS(TObexIrV3TransportInfo) : public TObexIrV2TransportInfo
  618.86 +	{
  618.87 +public:
  618.88 +	/** The device nickname.  The maximum length in the IrDA specification
  618.89 +	is defined as 23 - (number of hint octets [2] + 1)  =  20
  618.90 +	*/
  618.91 +	TBuf<20> iLocalDeviceNickname;
  618.92 +	
  618.93 +	/** A flag indicating if the device nickname field is valid.  This
  618.94 +	allows Symbian to make further derivations of this interface without making
  618.95 +	the device nickname mandatory */
  618.96 +	TBool iLocalDeviceNicknameValid;
  618.97 +	};
  618.98 +
  618.99 +#endif // __OBEXIRTRANSPORTINFO_H__
   619.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   619.2 +++ b/epoc32/include/mw/obexobjects.h	Wed Mar 31 12:27:01 2010 +0100
   619.3 @@ -0,0 +1,342 @@
   619.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   619.5 +// All rights reserved.
   619.6 +// This component and the accompanying materials are made available
   619.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   619.8 +// which accompanies this distribution, and is available
   619.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  619.10 +//
  619.11 +// Initial Contributors:
  619.12 +// Nokia Corporation - initial contribution.
  619.13 +//
  619.14 +// Contributors:
  619.15 +//
  619.16 +// Description:
  619.17 +//
  619.18 +
  619.19 +
  619.20 +
  619.21 +/**
  619.22 + @file
  619.23 + @publishedAll
  619.24 + @released
  619.25 +*/
  619.26 +
  619.27 +#ifndef __OBEXOBJECTS_H
  619.28 +#define __OBEXOBJECTS_H
  619.29 +
  619.30 +#include <obextypes.h>
  619.31 +#include <obexbaseobject.h>
  619.32 +#include <f32file.h>
  619.33 +
  619.34 +class MObexFileWriter;
  619.35 +class TObexBufferingDetails;
  619.36 +
  619.37 +/**
  619.38 +This class is a concrete derivation of the CObexBaseObject class. Use it to 
  619.39 +store and transfer OBEX objects with the body part stored in an EPOC file. 
  619.40 +Hence this class is particularly suited to OBEX "file" beaming applications 
  619.41 +(c.f. arbitrary object beaming), although there is in reality no 
  619.42 +restriction in what it is used to transfer. Access to the body is acheived 
  619.43 +through an additional attribute to the object; the data file. This is the 
  619.44 +file-system name of the file used to store the body of the object. Note 
  619.45 +that there is no explicit relation between this and the Name of the object, 
  619.46 +although it is expected that most applications would attempt to relate the 
  619.47 +two.
  619.48 +
  619.49 +When ever a valid data file is set (i.e. DataFile().Length > 0), this file 
  619.50 +is effectively open, hence stopping any other application from opening it 
  619.51 +with exclusive rights. Therefore, it is recommended that Reset () be called 
  619.52 +on the object as soon as it is no longer required, and definitely before 
  619.53 +(conceptually) passing ownership of the data file to any other object or 
  619.54 +user.
  619.55 +
  619.56 +CObexFileObject is also suited to situations where an object is expected to 
  619.57 +be received, but no information about the purpose of this object is known. 
  619.58 +This is due to CObexFileObject’s ability to create temporary files "on the 
  619.59 +fly" to store received data into, when a specific file is not provided by 
  619.60 +the application.
  619.61 +
  619.62 +This class is not designed for user derivation.
  619.63 +
  619.64 +@publishedAll
  619.65 +@released
  619.66 +*/
  619.67 +NONSHARABLE_CLASS(CObexFileObject) : public CObexBaseObject
  619.68 +	{
  619.69 +public:
  619.70 +	static IMPORT_C CObexFileObject* NewL();
  619.71 +	static IMPORT_C CObexFileObject* NewL(const TDesC &aDataFile);
  619.72 +	virtual IMPORT_C ~CObexFileObject();
  619.73 +	IMPORT_C void InitFromFileL(const TDesC& aFile);
  619.74 +
  619.75 +private:
  619.76 +	void ConstructL(const TDesC &aDataFile);
  619.77 +	void SetDataFileL(const TDesC& aDesc);
  619.78 +	const TDesC& DataFile();
  619.79 +	TBool RenameFile(const TDesC& aDesC);
  619.80 +	void SetTempFilePath(const TDesC& aPath);
  619.81 +	void QueryTempFilePath(TDes& aPath);
  619.82 +	// From CObexBaseObject
  619.83 +	virtual void GetData(TInt aPos, TDes8& aDes);
  619.84 +	virtual void NewData(TInt aPos, TDes8& aDes);
  619.85 +	virtual TInt DataSize();
  619.86 +	virtual void ResetData();
  619.87 +// Data
  619.88 +private:
  619.89 +	RFs iFs;
  619.90 +	TParse iDataFile;
  619.91 +	RFile iFile;
  619.92 +	TBuf<KObexObjectDescriptionSize> iTempFilePath;
  619.93 +	};
  619.94 +
  619.95 +
  619.96 +
  619.97 +/**
  619.98 +Use this class to hold objects where the body part is stored in a CBufFlat
  619.99 +object. Please note that although parameters are supplied as CBufBase objects,
 619.100 +non-CBufFlat parameters are not supported and will have unpredictable results.
 619.101 +At no point does the CObexBufObject create, or take ownership of any CBaseBuf
 619.102 +object it uses - it is always the responsibility of the creator/owner of the
 619.103 +CBaseBuf to free it when no longer required.
 619.104 +
 619.105 +As this class does not take ownership of the buffers it uses, it equally can
 619.106 +not create its own buffers ad-hoc for storing new data into. Hence at no 
 619.107 +time is it valid for a CObexBufObject to exist with out it having a valid 
 619.108 +data buffer set. If such a situation arises, where it is required that 
 619.109 +received information should be discarded, consider using a CObexNullObject.
 619.110 +
 619.111 +It is also posible to supply a file instead of a memory buffer, or to supply
 619.112 +both.  This functionality is due to the MObexServerNotify class expecting to
 619.113 +work only on CObexBufObjects, so CObexFileObjects cannot be returned from the
 619.114 +upcalls.
 619.115 +To use a file for body storage, call NewL() passing in a NULL pointer, then
 619.116 +call SetDataBufL() manually afterwards.  There are three overloads---to allow
 619.117 +purely memory based objects, purely file based, or a hybrid.  The hybrid object
 619.118 +buffers into a memory buffer (which is not allowed to grow), then writes data
 619.119 +to the file when the buffer is full.  The buffering behaviour can therefore be
 619.120 +tuned to the application by setting the size of the buffer prior to use.
 619.121 +
 619.122 +This class is not designed for user derivation.
 619.123 +
 619.124 +@publishedAll
 619.125 +@released
 619.126 +*/
 619.127 +NONSHARABLE_CLASS(CObexBufObject) : public CObexBaseObject
 619.128 +	{
 619.129 +public:
 619.130 +	/**
 619.131 +	Obex file buffering method.
 619.132 +	
 619.133 +	@publishedAll
 619.134 +	@released
 619.135 +	*/
 619.136 +	enum TFileBuffering
 619.137 +		{
 619.138 +		/** Only the supplied buffer will be used to buffer file writes. */
 619.139 +		ESingleBuffering,
 619.140 +		/** The object will create a second buffer and perform double buffering. */
 619.141 +		EDoubleBuffering
 619.142 +		};
 619.143 +
 619.144 +public:
 619.145 +	static IMPORT_C CObexBufObject* NewL(CBufBase* aDataBuf);
 619.146 +	virtual IMPORT_C ~CObexBufObject();
 619.147 +	IMPORT_C TInt WriteToFile(const TPtrC& aFileName);
 619.148 +	
 619.149 +	IMPORT_C void SetDataBufL(TObexBufferingDetails& aDetails);
 619.150 +	IMPORT_C void SetDataBufL(CBufBase* aDataBuf);
 619.151 +	IMPORT_C void SetDataBufL(const TPtrC& aFilename);
 619.152 +	IMPORT_C void SetDataBufL(const TPtrC& aFilename, CBufBase* aDataBuf);
 619.153 +	IMPORT_C void SetDataBufL(const TPtrC& aFilename, CBufBase& aDataBuf, const TFileBuffering aBufferingStrategy);
 619.154 +	IMPORT_C CBufBase* DataBuf();
 619.155 +	HBufC* FileName();
 619.156 +
 619.157 +private:
 619.158 +	CObexBufObject();
 619.159 +	void ConstructL(CBufBase* aDataBuf);
 619.160 +	
 619.161 +	void PrepareToSetBufferL();
 619.162 +
 619.163 +	void CopyFileL(const TDesC& aFilename);
 619.164 +	TInt NewFileData(TInt aPos, TDes8& aDes);
 619.165 +	void GetFileData(TInt aPos, TDes8& aDes);
 619.166 +
 619.167 +	// From CObexBaseObject
 619.168 +	virtual void GetData(TInt aPos, TDes8& aDes);
 619.169 +	virtual void NewData(TInt aPos, TDes8& aDes);
 619.170 +	virtual TInt DataSize();
 619.171 +	virtual void ResetData();
 619.172 +
 619.173 +	void CloseDataFile();
 619.174 +	TInt OpenDataFile(const TDesC& aFilename);
 619.175 +	void CloseFileServer();
 619.176 +	TInt OpenFileServer();
 619.177 +	TInt WriteBufferToFile(TBool aFinal);
 619.178 +
 619.179 +// Data
 619.180 +private:
 619.181 +	CBufBase* iBuf;
 619.182 +	HBufC* iFilename;
 619.183 +	RFs* iFileServ;
 619.184 +	RFile* iFile;
 619.185 +	TInt iBufOffset;
 619.186 +	TInt iBuffered;
 619.187 +	TInt iBufSegSize;
 619.188 +
 619.189 +// Added for double-buffering
 619.190 +private:
 619.191 +	// Owned
 619.192 +	MObexFileWriter*	iWriter;
 619.193 +	CBufBase*			iDoubleBuf;
 619.194 +	};
 619.195 +
 619.196 +
 619.197 +
 619.198 +/**
 619.199 +Wraps parameters which can affect the buffering method used by the
 619.200 +CObexBufObject.
 619.201 +This version provides a single memory buffer which holds the entire object.
 619.202 +Subclasses will always use a memory buffer, but can override the way that
 619.203 +Obex uses it.
 619.204 +
 619.205 +@publishedAll
 619.206 +@released
 619.207 +*/
 619.208 +NONSHARABLE_CLASS(TObexBufferingDetails)
 619.209 +	{
 619.210 +public:
 619.211 +	/**
 619.212 +	Versions (subclasses) of the buffering style object.
 619.213 +	@internalComponent
 619.214 +	*/
 619.215 +	enum TVersion
 619.216 +		{
 619.217 +		EBasicBuffer,
 619.218 +		EPureFile,
 619.219 +		EFilenameBackedBuffer,
 619.220 +		ERFileBackedBuffer,
 619.221 +		ELastVersion
 619.222 +		};
 619.223 +	
 619.224 +	IMPORT_C TObexBufferingDetails(CBufBase& aBuffer);
 619.225 +	
 619.226 +	TVersion Version();	// Return the version of this object
 619.227 +	CBufBase* Buffer();
 619.228 +
 619.229 +protected:
 619.230 +	TObexBufferingDetails(TVersion aVersion, CBufBase* aBuffer);
 619.231 +
 619.232 +private:
 619.233 +	TVersion iVersion;
 619.234 +	CBufBase* iBuffer;
 619.235 +
 619.236 +	// This data padding has been added to help prevent future binary compatibility breaks	
 619.237 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 619.238 +	TUint32     iPadding1; 
 619.239 +	TUint32     iPadding2; 	
 619.240 +	};
 619.241 +
 619.242 +
 619.243 +/**
 619.244 +Provides alternate behaviour for a CObexBufObject, allowing use of a file
 619.245 +to hold the object in its entirety.  No memory buffer is used.  This is a
 619.246 +special case option provided to cater for the MObexServerNotify interface
 619.247 +which requires the use of CObexBufObject objects.  It is generally better to
 619.248 +use a buffered variant.
 619.249 +
 619.250 +@publishedAll
 619.251 +@released
 619.252 +*/
 619.253 +NONSHARABLE_CLASS(TObexPureFileBuffer) : public TObexBufferingDetails
 619.254 +	{
 619.255 +public:
 619.256 +	IMPORT_C TObexPureFileBuffer(const TPtrC& aFilename);
 619.257 +	const TPtrC& Filename();
 619.258 +
 619.259 +private:
 619.260 +	const TPtrC& iFilename;
 619.261 +
 619.262 +	// This data padding has been added to help prevent future binary compatibility breaks	
 619.263 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 619.264 +	TUint32     iPadding1; 
 619.265 +	TUint32     iPadding2; 
 619.266 +	};
 619.267 +
 619.268 +/**
 619.269 +Provides alternate behaviour for a CObexBufObject, allowing use of a file
 619.270 +to hold the object in its entirety.  Writes to this object are buffered through
 619.271 +the supplied CBufBase derived object, which is never enlarged.  Once
 619.272 +it is full, the data is flushed to the file.
 619.273 +
 619.274 +@publishedAll
 619.275 +@released
 619.276 +*/
 619.277 +NONSHARABLE_CLASS(TObexFilenameBackedBuffer) : public TObexBufferingDetails
 619.278 +	{
 619.279 +public:
 619.280 +	IMPORT_C TObexFilenameBackedBuffer(CBufBase& aBuffer, const TPtrC& aFilename, CObexBufObject::TFileBuffering aBufferingStrategy);
 619.281 +	const TPtrC& Filename();
 619.282 +	CObexBufObject::TFileBuffering Strategy();
 619.283 +	
 619.284 +private:
 619.285 +	const TPtrC& iFilename;
 619.286 +	CObexBufObject::TFileBuffering iBufferingStrategy;
 619.287 +
 619.288 +	// This data padding has been added to help prevent future binary compatibility breaks	
 619.289 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 619.290 +	TUint32     iPadding1; 
 619.291 +	TUint32     iPadding2; 	
 619.292 +	};
 619.293 +
 619.294 +
 619.295 +
 619.296 +/**
 619.297 +Provides alternate behaviour for a CObexBufObject, allowing use of a file
 619.298 +to hold the object in its entirety.  Writes to this object are buffered through
 619.299 +the supplied CBufBase derived object, which is never enlarged.  Once
 619.300 +it is full, the data is flushed to the file.
 619.301 +
 619.302 +@publishedAll
 619.303 +@released
 619.304 +*/
 619.305 +NONSHARABLE_CLASS(TObexRFileBackedBuffer) : public TObexBufferingDetails
 619.306 +	{
 619.307 +public:
 619.308 +	IMPORT_C TObexRFileBackedBuffer(CBufBase& aBuffer, RFile aFile, CObexBufObject::TFileBuffering aBufferingStrategy);
 619.309 +	RFile File();
 619.310 +	CObexBufObject::TFileBuffering Strategy();
 619.311 +	
 619.312 +private:
 619.313 +	RFile iFile;
 619.314 +	CObexBufObject::TFileBuffering iBufferingStrategy;
 619.315 +
 619.316 +	// This data padding has been added to help prevent future binary compatibility breaks	
 619.317 +	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 619.318 +	TUint32     iPadding1; 
 619.319 +	TUint32     iPadding2; 
 619.320 +	};
 619.321 +
 619.322 +
 619.323 +
 619.324 +/**
 619.325 +Concrete OBEX object with NULL data representation. Use when only the 
 619.326 +headers of an object are required, and the data (if any) can safely be 
 619.327 +discarded.
 619.328 +
 619.329 +@publishedAll
 619.330 +@released
 619.331 +*/
 619.332 +NONSHARABLE_CLASS(CObexNullObject) : public CObexBaseObject
 619.333 +	{
 619.334 +public:
 619.335 +	IMPORT_C static CObexNullObject* NewL ();
 619.336 +private:
 619.337 +	// From CObexBaseObject
 619.338 +	void ConstructL();
 619.339 +	virtual void GetData (TInt aPos, TDes8& aDes);
 619.340 +	virtual void NewData (TInt aPos, TDes8& aDes);
 619.341 +	virtual TInt DataSize ();
 619.342 +	virtual void ResetData ();
 619.343 +	};
 619.344 +
 619.345 +#endif // __OBEXOBJECTS_H
   620.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   620.2 +++ b/epoc32/include/mw/obexpanics.h	Wed Mar 31 12:27:01 2010 +0100
   620.3 @@ -0,0 +1,157 @@
   620.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   620.5 +// All rights reserved.
   620.6 +// This component and the accompanying materials are made available
   620.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   620.8 +// which accompanies this distribution, and is available
   620.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  620.10 +//
  620.11 +// Initial Contributors:
  620.12 +// Nokia Corporation - initial contribution.
  620.13 +//
  620.14 +// Contributors:
  620.15 +//
  620.16 +// Description:
  620.17 +//
  620.18 +
  620.19 +#ifndef OBEX_PANICS_H
  620.20 +#define OBEX_PANICS_H
  620.21 +
  620.22 +/**
  620.23 +@file
  620.24 +@publishedAll
  620.25 +@released
  620.26 +
  620.27 +This file contains details of all OBEX and OBEX Transport panics which may be raised
  620.28 +as a result programming error by the users of OBEX (e.g. Client or Server Application
  620.29 +or a proprietry transport controller).
  620.30 +
  620.31 +Internal panic codes should not be raised due to user errors but would reflect
  620.32 +internal Obex programming errors - see inc/obexfaults.h
  620.33 +*/
  620.34 +
  620.35 +
  620.36 +/**
  620.37 +Category for Obex panics
  620.38 +@see TObexPanicCode
  620.39 +*/
  620.40 +_LIT(KObexPanicCategory, "Obex");
  620.41 +
  620.42 +/**
  620.43 +@publishedAll
  620.44 +@released
  620.45 +
  620.46 +All Obex panics which may be raised as a result of a client (i.e. external) programming error.
  620.47 +Internal Obex panics are errors listed in TObexFaultCode
  620.48 +@see TObexFaultCode
  620.49 +*/
  620.50 +enum TObexPanicCode
  620.51 +	{
  620.52 +	/** A NULL value was supplied for the data buffer.  Note that this
  620.53 +	pointer can refer to either a memory buffer or a pointer to a RFile object.
  620.54 + 	@see CObexBufObject
  620.55 + 	*/
  620.56 +	ENullPointer					= 0,
  620.57 +	
  620.58 +	
  620.59 +	/** The supplied buffer is of zero length.
  620.60 +	@see CObexBufObject
  620.61 +	*/
  620.62 +	EEmptyBuffer					= 1,
  620.63 +	
  620.64 +	
  620.65 +	/** The header is not of the requested type.
  620.66 +	@see CObexHeader
  620.67 +	*/
  620.68 +	EHeaderAsBadType				= 2,
  620.69 +	
  620.70 +	
  620.71 +	/** An unknown TFileBuffering value was supplied.
  620.72 + 	@see CObexBufObject
  620.73 + 	*/
  620.74 +	EInvalidBufferStrategy			= 3,
  620.75 +	
  620.76 +	
  620.77 + 	/** The RFile object does not point to a valid (open) file.
  620.78 + 	@see CObexBufObject
  620.79 + 	*/
  620.80 + 	ENullFileHandle					= 4,
  620.81 + 	
  620.82 + 	
  620.83 + 	/** An unknown TObexBufferingDetails object was supplied to a buffer object.
  620.84 + 	@see CObexBufObject
  620.85 + 	*/
  620.86 + 	EInvalidBufferDetails			= 5,
  620.87 + 	
  620.88 + 	
  620.89 +	/** A call has been made to CObexServer::RequestIndicationCallback when no
  620.90 +	asynchronous request is outstanding.
  620.91 +	@see MObexNotifyAsync
  620.92 +	@see CObexServer
  620.93 +	*/
  620.94 +	ENoNotificationToComplete		= 6,
  620.95 +
  620.96 +
  620.97 +	/** A call has been made to CObexServer::Start when an asynchronous request
  620.98 +	is outstanding.
  620.99 +	@see MObexNotifyAsync
 620.100 +	@see CObexServer
 620.101 +	*/
 620.102 +	EChangeInterfaceDuringWait		= 7,
 620.103 +
 620.104 +
 620.105 +
 620.106 + 	/** An invalid packet process event has been signalled.
 620.107 +	*/
 620.108 +	EBadPacketProcessEvent			= 8,
 620.109 +
 620.110 +
 620.111 +	/** An event is available for signalling, but there is no observer set.
 620.112 +	*/
 620.113 +	ENoPacketProcessObserverSet		= 9,
 620.114 +	
 620.115 +	/** In CObexServer, a call has been made to RequestCompleteIndicationCallback(TObexResponse)
 620.116 +	or RequestIndicationCallback(TObexResponse) with invalid response code or 
 620.117 +    RequestCompleteIndicationCallback(TInt) with invalid Symbian error code
 620.118 +	*/
 620.119 +	EInvalidResponseCodeFromServerApp = 10,
 620.120 +	
 620.121 +	/** In CObexServer, RequestCompleteIndicationCallback has been called in response to Put/GetRequestIndication
 620.122 +	or ReuqestIndicationCallback has been called in response to Put/GetComplete or SetPath Indication
 620.123 +	*/
 620.124 +	EInvalidResponseCallback = 11,
 620.125 +
 620.126 +	/** The last server response code has been requested prior to a response from the server.
 620.127 +	*/
 620.128 +	ENoResponseCodeToReturn			= 12,
 620.129 +
 620.130 +	/** Adding End of Body header when there is data in the object. 
 620.131 +	*/
 620.132 +	EAddingInvalidEoBHeader = 13,
 620.133 +	
 620.134 +	/** A user has requested to override the handling of a request
 620.135 +	packet at an invalid time.
 620.136 +	*/
 620.137 +	EOverrideRequestHandlingInBadState = 14,
 620.138 +	};
 620.139 +
 620.140 +
 620.141 +
 620.142 +/** 
 620.143 +The category for obex transport panics
 620.144 +*/
 620.145 +_LIT(KObexTransportPanicCat, "ObexTransPanics");
 620.146 +
 620.147 +/**
 620.148 +Obex transport panics raised as a result of client programming error
 620.149 +*/
 620.150 +enum TObexTransportPanicCode
 620.151 +	{
 620.152 +	/**
 620.153 +	The number of transport implementations for a given transport name is more than what is allowed.  
 620.154 +	Check that there is not more than the allowed number of plugin resource files containing the same default
 620.155 +	data and inteface uid.
 620.156 +	*/
 620.157 + 	EInvalidNumberOfTransportImplementations	= 0,	
 620.158 +	};
 620.159 +
 620.160 +#endif
   621.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   621.2 +++ b/epoc32/include/mw/obexserver.h	Wed Mar 31 12:27:01 2010 +0100
   621.3 @@ -0,0 +1,693 @@
   621.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   621.5 +// All rights reserved.
   621.6 +// This component and the accompanying materials are made available
   621.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   621.8 +// which accompanies this distribution, and is available
   621.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  621.10 +//
  621.11 +// Initial Contributors:
  621.12 +// Nokia Corporation - initial contribution.
  621.13 +//
  621.14 +// Contributors:
  621.15 +//
  621.16 +// Description:
  621.17 +//
  621.18 +
  621.19 +
  621.20 +
  621.21 +/**
  621.22 + @file
  621.23 + @publishedAll
  621.24 + @released
  621.25 +*/
  621.26 +
  621.27 +#ifndef __OBEXSERVER_H
  621.28 +#define __OBEXSERVER_H
  621.29 +
  621.30 +#include <obextypes.h>
  621.31 +#include <obex/internal/obextransportconstants.h>
  621.32 +#include <obexbase.h>
  621.33 +
  621.34 +class TObexTransportInfo;
  621.35 +class CObexServerRequestPacketEngine;
  621.36 +class CObexPacketSignaller;
  621.37 +class MObexReadActivityObserver;
  621.38 +
  621.39 +/** OBEX server.
  621.40 +
  621.41 +CObexServer provides a framework for servicing OBEX requests from remote clients. 
  621.42 +It is designed to be able to act as either a "default" application (in IrDA 
  621.43 +terms, registering on the IrDA:OBEX IAS class), or as a application specific 
  621.44 +server (registering itself on a private IAS class). 
  621.45 +
  621.46 +You implement service-specific behaviour by providing a MObexServerNotify 
  621.47 +interface implementation to the server object. The server calls the interface's 
  621.48 +functions to provide notification of server events, which specific implementations 
  621.49 +can process (or ignore) as appropriate.
  621.50 +
  621.51 +This class is not designed for user derivation. 
  621.52 +
  621.53 +@publishedAll
  621.54 +@released
  621.55 +*/
  621.56 +NONSHARABLE_CLASS(CObexServer) : public CObex
  621.57 +	{
  621.58 +	// CObexServer is friends with the core Server State Machine class so
  621.59 +	// that it can access the CObex::ControlledTransportDown() method
  621.60 +	friend class CObexServerStateMachine;
  621.61 +
  621.62 +	// CObexServer is friends with the TObexServerStateObexConnecting class so
  621.63 +	// that it can access the CObex::SetConnectState(TConnectState aNewState) method
  621.64 +	friend class TObexServerStateObexConnecting;
  621.65 +	
  621.66 +	// CObexServer is friends with the Server Request Packet Engine so that
  621.67 +	// it can NULL the iServerRequestPacketEngine pointer ready for another 
  621.68 +	// extension interface 
  621.69 +	friend class CObexServerRequestPacketEngine;
  621.70 +		
  621.71 +public:
  621.72 +	/**
  621.73 +	@publishedAll
  621.74 +	@released
  621.75 +	
  621.76 +	The target header checking to apply to incoming connection requests.  Defaults to
  621.77 +	EIfPresent.
  621.78 +	@see CObexServer::SetTargetChecking
  621.79 +	*/
  621.80 +	enum TTargetChecking
  621.81 +		{
  621.82 +		ENoChecking,	/** Allow all target headers to connect. */
  621.83 +		EIfPresent,		/** Only check target header in response to receiving one. Allows all clients
  621.84 +							specifying an Inbox service to connect. */
  621.85 +		EAlways,		/** Strict checking. Only allow connections if target header matches or no header
  621.86 +							received and none expected. */
  621.87 +		};
  621.88 +
  621.89 +	IMPORT_C static CObexServer* NewL(TObexProtocolInfo& aObexProtocolInfoPtr);
  621.90 +	IMPORT_C static CObexServer* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy);
  621.91 +	IMPORT_C static CObexServer* NewL(TObexTransportInfo& aObexTransportInfo);
  621.92 +	IMPORT_C ~CObexServer();
  621.93 +	IMPORT_C TInt Start(MObexServerNotify* aOwner);
  621.94 +	IMPORT_C TInt Start(MObexServerNotifyAsync* aOwner);
  621.95 +	IMPORT_C void Stop();
  621.96 +	IMPORT_C TBool IsStarted();
  621.97 +	IMPORT_C TOperation CurrentOperation() const;
  621.98 +	void SetCurrentOperation(const TOperation aOperation);	// used internally by state machine
  621.99 +	IMPORT_C void SetChallengeL(const TDesC& aPassword);
 621.100 +	IMPORT_C void ResetChallenge();
 621.101 +	IMPORT_C void UserPasswordL( const TDesC& aPassword); 
 621.102 +	IMPORT_C void SetTargetChecking(TTargetChecking aChecking);
 621.103 +	IMPORT_C TInt SetPutFinalResponseHeaders(CObexHeaderSet* aHeaderSet);
 621.104 +	IMPORT_C TInt RequestIndicationCallback(CObexBaseObject* aObject);
 621.105 +    IMPORT_C TInt RequestIndicationCallbackWithError(TObexResponse aResponseCode);
 621.106 +    IMPORT_C TInt RequestIndicationCallbackWithError(TInt aErrorCode);
 621.107 +    IMPORT_C TInt RequestCompleteIndicationCallback(TObexResponse aResponseCode);
 621.108 +    IMPORT_C TInt RequestCompleteIndicationCallback(TInt aErrorCode);
 621.109 +    // @publishedPartner
 621.110 +	IMPORT_C TInt PacketHeaders(CObexHeaderSet*& aHeaderSet);
 621.111 +	IMPORT_C TInt PacketHeaders(CObexHeaderSet*& aHeaderSet, MObexHeaderCheck& aHeaderCheck);
 621.112 +	IMPORT_C void SetReadActivityObserver(MObexReadActivityObserver* aObserver);
 621.113 +	// @internalTechnology
 621.114 +	IMPORT_C TAny* ExtensionInterfaceL(TUid aUid);
 621.115 +	IMPORT_C const TObexTransportInfo* TransportInfo() const;
 621.116 +
 621.117 +public:
 621.118 +	// Called from CObexNotifyExtendServer
 621.119 +	void SignalPacketProcessEvent(TObexPacketProcessEvent aEvent);
 621.120 +	
 621.121 +	// Unexported functions used by the Server state machine
 621.122 +	TBool CheckObjectForConnectionId(CObexBaseObject& aObject);
 621.123 +	TBool CheckPacketForConnectionId(CObexPacket& aObject);
 621.124 +
 621.125 +private:
 621.126 +	CObexServer();
 621.127 +	void ConstructL(TObexTransportInfo& aObexTransportInfo);
 621.128 +	TInt AcceptConnection();
 621.129 +	// Implementation of CObex Events
 621.130 +	virtual void OnPacketReceive(CObexPacket& aPacket);
 621.131 +	virtual void OnError(TInt aError);
 621.132 +	virtual void OnTransportUp();
 621.133 +	virtual void OnTransportDown();
 621.134 +
 621.135 +public:
 621.136 +	// These three functions need to be public so the Server state machine can use them
 621.137 +	// However ParseConnectPacket cannot be moved as it is a virtual function (from CObex)
 621.138 +	TInt PrepareConnectPacket(CObexPacket& aPacket);	
 621.139 +	TInt PrepareErroredConnectPacket(CObexPacket& aPacket);
 621.140 +	void SignalReadActivity();
 621.141 +	TInt ParseConnectPacket(CObexPacket& aPacket);
 621.142 +
 621.143 +private:
 621.144 +	TInt AddConnectionIDHeader(CObexPacket& aPacket);
 621.145 +	TInt PrepareFinalChallResponse(CObexPacket& aPacket, TConnectState& aNextState);
 621.146 +	void CheckTarget(TConnectState& aNextState, TInt& aRetVal);
 621.147 +	void ResetConnectionID();
 621.148 +	void SetConnectionID(TUint32 aConnectionID);
 621.149 +	TUint32 ConnectionID();
 621.150 +	void CheckServerAppResponseCode(TObexOpcode aOpcode, TObexResponse aResponse);
 621.151 +	TInt DoPacketHeaders(CObexHeaderSet*& aHeaderSet, MObexHeaderCheck* aHeaderCheck);
 621.152 +
 621.153 +private:
 621.154 +	MObexServerNotifyAsync* iOwner;
 621.155 +	TBool iEnabled;
 621.156 +	TBool iSpecDone;
 621.157 +	TBool iTargetReceived;
 621.158 +	TTargetChecking iTargetChecking;
 621.159 +	TUint32 iConnectionID;
 621.160 +	TBool iConnectionIdSet;
 621.161 +	CObexHeader*	iHeader;
 621.162 +	CObexServerStateMachine* iStateMachine;
 621.163 +	CObexServerNotifySyncWrapper* iSyncWrapper;
 621.164 +	CObexServerRequestPacketEngine* iServerRequestPacketEngine;
 621.165 +	CObexPacketSignaller* iPacketProcessSignaller;
 621.166 +	};
 621.167 +
 621.168 +
 621.169 +/** OBEX synchronous server notification interface.
 621.170 +
 621.171 +Any service that provides OBEX server functionality must implement one of the two
 621.172 +server observer classes -- this one or MObexServerNotifyAsync.
 621.173 +
 621.174 +The CObexServer object handles the protocol side of an OBEX server session, 
 621.175 +while this class provides the server policy for a particular session.
 621.176 +
 621.177 +PUT and GET requests are handled synchronously, with the implementer returning a
 621.178 +CObexBufObject which will be processed immediately.
 621.179 +
 621.180 +@publishedAll
 621.181 +@released
 621.182 +@see MObexServerNotifyAsync
 621.183 +@see CObexServer
 621.184 +*/
 621.185 +class MObexServerNotify
 621.186 +	{
 621.187 +public:
 621.188 +	/**
 621.189 +	 Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
 621.190 +	 @param aInterface UID of the interface to return
 621.191 +	 @param aObject the container for another interface as specified by aInterface
 621.192 +	 */
 621.193 +	IMPORT_C virtual void MOSN_ExtensionInterfaceL(TUid aInterface, void*& aObject);
 621.194 +
 621.195 +	/** Called if an OBEX protocol error occurs.
 621.196 +	
 621.197 +	It is only called for fatal errors that cause the OBEX connection to terminate. 
 621.198 +	An error that does not terminate the connection, for example the server issuing 
 621.199 +	a semantically valid, but unrecognised command, will not be indicated.
 621.200 +	
 621.201 +	@param aError Error code that describes the OBEX error. OBEX specific error 
 621.202 +	codes are listed from KErrIrObexClientNoDevicesFound. 
 621.203 +	
 621.204 +	@publishedAll
 621.205 +	@released
 621.206 +	*/
 621.207 +	virtual void ErrorIndication(TInt aError) =0;
 621.208 +	
 621.209 +	
 621.210 +	
 621.211 +	/** Called when the underlying transport connection is made from a remote 
 621.212 +	client to the server.
 621.213 +	
 621.214 +	Note that this does not, however, indicate an OBEX connection has been successfully 
 621.215 +	established.
 621.216 +	
 621.217 +	You can define any low-level connection policy here. It is also a good place 
 621.218 +	to set up the local connection information (CObex::LocalInfo()), if any non-defaults 
 621.219 +	are required. 
 621.220 +
 621.221 +	@publishedAll
 621.222 +	@released
 621.223 +	*/
 621.224 +	virtual void TransportUpIndication() =0;
 621.225 +	
 621.226 +	
 621.227 +
 621.228 +	/** Called when the transport connection is dropped (by either party).
 621.229 +	
 621.230 +	It is called whether the OBEX connection was gracefully disconnected or not. 
 621.231 +	The function is the definitive place for disconnection processing.
 621.232 +	
 621.233 +	@publishedAll
 621.234 +	@released
 621.235 +	*/
 621.236 +	virtual void TransportDownIndication() =0;
 621.237 +	
 621.238 +	
 621.239 +	
 621.240 +	/** Called when an OBEX connection is made from a remote client.
 621.241 +	
 621.242 +	Override this function to provide any extra OBEX connection processing.
 621.243 +	Despite this method returning a value, implementers cannot use this to
 621.244 +	refuse the connection attempt.
 621.245 +	
 621.246 +	@param aRemoteInfo Connection information supplied by that remote machine
 621.247 +	@param aInfo Further information about the requested connection (reserved)
 621.248 +	@return Ignored
 621.249 +	
 621.250 +	@publishedAll
 621.251 +	@released
 621.252 +	*/
 621.253 +	virtual TInt ObexConnectIndication(const TObexConnectInfo& aRemoteInfo, const TDesC8& aInfo) =0;
 621.254 +
 621.255 +
 621.256 +
 621.257 +	/** Called on a (graceful) OBEX disconnection by the client.
 621.258 +	
 621.259 +	Override this to provide any extra processing OBEX disconnection processing.
 621.260 +	
 621.261 +	Note that this indication will not be raised if the remote machine simply 
 621.262 +	drops the transport connection. However, ErrorIndication() will be called 
 621.263 +	if the disconnection is unexpected/ invalid (i.e. another operation was in 
 621.264 +	progress at the time). In all cases, TransportDownIndication() will be called.
 621.265 +	
 621.266 +	@param aInfo Contains information about the disconnection (reserved) 
 621.267 +	
 621.268 +	@publishedAll
 621.269 +	@released
 621.270 +	*/
 621.271 +	virtual void ObexDisconnectIndication(const TDesC8& aInfo) =0;
 621.272 +
 621.273 +
 621.274 +
 621.275 +	/** Called on receipt of the first packet of a (valid) put request. 
 621.276 +	
 621.277 +	It is called before any parsing of the packet is performed, simply to establish 
 621.278 +	whether this server is interested in receiving objects at all.
 621.279 +	
 621.280 +	Note if the returned object cannot be initialised for receiving, ERespInternalError
 621.281 +	is returned to the client.
 621.282 +	
 621.283 +	@return CObexBaseObject-derived object, which the object being put will be 
 621.284 +	parsed into. If this is NULL, ERespForbidden is returned to the client. 
 621.285 +	
 621.286 +	@publishedAll
 621.287 +	@released
 621.288 +	*/
 621.289 +	virtual CObexBufObject* PutRequestIndication() =0;
 621.290 +
 621.291 +
 621.292 +
 621.293 +	/** Called on receipt of every packet of an OBEX PUT operation.
 621.294 +	
 621.295 +	It will always be preceded by a PutRequestIndication(). The object returned 
 621.296 +	by the request indication will be updated to reflect all the information received 
 621.297 +	concerning the object which the client is sending, from packets up to and 
 621.298 +	including the current one. 
 621.299 +	
 621.300 +	You can use this function to provide periodic user notification on the progress 
 621.301 +	of the transfer (noting that the Length attribute may take an arbitrary number 
 621.302 +	of packets to become non-zero, and the constraints on its accuracy). Due to 
 621.303 +	the nature of OBEX operations, where any header attribute can be sent at any 
 621.304 +	point in the transfer, this is also a good place to marshal the details of 
 621.305 +	a received object, and possibly prompt for action on the received object (e.g. 
 621.306 +	renaming on filename clashes).
 621.307 +	
 621.308 +	Note that this function could be hit quite heavily, in proportion to the size 
 621.309 +	of the object transferred. Therefore more consideration should be given to 
 621.310 +	the speed of execution of this function than that of the other indications.
 621.311 +	
 621.312 +	@return KErrNone instructs the server to allow the client to continue the put 
 621.313 +	operation. Any other value cancels the operation with an appropriate OBEX 
 621.314 +	server response code. 
 621.315 +	
 621.316 +	@publishedAll
 621.317 +	@released
 621.318 +	*/
 621.319 +	virtual TInt PutPacketIndication() =0;
 621.320 +
 621.321 +
 621.322 +
 621.323 +	/** Called after the final put packet has been successfully received and parsed. 
 621.324 +	
 621.325 +	Note that there will not necessarily be a call to this function corresponding 
 621.326 +	to each PutRequestIndication() as, if an error occurs while the put is being 
 621.327 +	carried out, ErrorIndication() will be called instead.
 621.328 +	
 621.329 +	Before version 6.1, the return type was void.
 621.330 +
 621.331 +	@return KErrNoneinstructs the remote client that the put completed successfully. 
 621.332 +	Any other value cancels the operation with an appropriate OBEX server response 
 621.333 +	code.
 621.334 +	
 621.335 +	@publishedAll
 621.336 +	@released
 621.337 +	*/
 621.338 +	virtual TInt PutCompleteIndication() =0;
 621.339 +
 621.340 +
 621.341 +
 621.342 +	/** Called when a full get request has been received from the client. 
 621.343 +	
 621.344 +	aRequestedObject holds all the details about the object the remote client 
 621.345 +	has requested. Use this function to analyse the client's request, and return 
 621.346 +	a pointer to the object to be returned to the client, or NULL to return no 
 621.347 +	object. 
 621.348 +	
 621.349 +	If NULL is returned, the server will send ERespForbidden to the client; if 
 621.350 +	an error occurs in returning the object, ERespInternalError is returned, otherwise 
 621.351 +	the returned object is sent back to the client.
 621.352 +	
 621.353 +	@param aRequiredObject Details about the object the remote client has requested
 621.354 +	@return Object to return to the client 
 621.355 +	
 621.356 +	@publishedAll
 621.357 +	@released
 621.358 +	*/
 621.359 +	virtual CObexBufObject* GetRequestIndication(CObexBaseObject *aRequiredObject) =0;
 621.360 +
 621.361 +
 621.362 +
 621.363 +	/** Called for every packet of get reply sent by the server back to the client. 
 621.364 +	
 621.365 +	The function is only called while an object is being sent to the client, not 
 621.366 +	while the client is providing its initial specification for the object it 
 621.367 +	requires. 
 621.368 +	
 621.369 +	You can use this function to provide user notification on the object being 
 621.370 +	sent, and its progress. As with PutPacketIndication(), you should consider 
 621.371 +	that this function might get called often, especially for large objects and 
 621.372 +	small OBEX packet sizes, so the speed of execution here is important.
 621.373 +	
 621.374 +	@return KErrNone to continue sending the object, or any other error code to 
 621.375 +	cancel the operation 
 621.376 +
 621.377 +	@publishedAll
 621.378 +	@released
 621.379 +	*/
 621.380 +	virtual TInt GetPacketIndication() =0;
 621.381 +
 621.382 +
 621.383 +
 621.384 +	/** Called when the final packet of the object has been returned to the client.
 621.385 +	
 621.386 +	Note like PutCompleteIndication(), this function might not be called for each 
 621.387 +	GetRequestIndication(), if the operation is interrupted by an error.
 621.388 +	
 621.389 +	Before version 6.1, the return type was void.
 621.390 +	
 621.391 +	@return KErrNoneinstructs the remote client that the get completed successfully. 
 621.392 +	Any other value cancels the operation with an appropriate OBEX server response 
 621.393 +	code. 
 621.394 +	
 621.395 +	@publishedAll
 621.396 +	@released
 621.397 +	*/
 621.398 +	virtual TInt GetCompleteIndication() =0;
 621.399 +
 621.400 +
 621.401 +
 621.402 +	/** Called when an OBEX SETPATH command is received by the server. 
 621.403 +	
 621.404 +	@param aPathInfo SETPATH command parameters
 621.405 +	@param aInfo Not currently used
 621.406 +	@return System wide error code indicating the success of the setpath command 
 621.407 +	
 621.408 +	@publishedAll
 621.409 +	@released
 621.410 +	*/
 621.411 +	virtual TInt SetPathIndication(const CObex::TSetPathInfo& aPathInfo, const TDesC8& aInfo) =0;
 621.412 +
 621.413 +
 621.414 +
 621.415 +	/** Called when an abort packet is received from the client. 
 621.416 +	
 621.417 +	An OBEX abort command simply cancels the current operation, and does not necessarily 
 621.418 +	have to cause the connection to be dropped. On return, a ERespSuccess packet 
 621.419 +	is sent to the client. 
 621.420 +	
 621.421 +	@publishedAll
 621.422 +	@released
 621.423 +	*/
 621.424 +	virtual void AbortIndication() =0;
 621.425 +	};
 621.426 +
 621.427 +
 621.428 +
 621.429 +/** OBEX asynchronous server notification interface.
 621.430 +
 621.431 +Any service that provides OBEX server functionality must implement one of the two
 621.432 +server observer classes -- this one or MObexServerNotify.
 621.433 +
 621.434 +The CObexServer object handles the protocol side of an OBEX server session, 
 621.435 +while this class provides the server policy for a particular session.
 621.436 +
 621.437 +PUT and GET requests are handled asynchronously, with the upcall from the server
 621.438 +being followed at some stage in the future by a call to CObexServer::RequestIndicationComplete
 621.439 +to trigger processing.
 621.440 +
 621.441 +@publishedAll
 621.442 +@released
 621.443 +@see MObexServerNotify
 621.444 +@see CObexServer
 621.445 +*/
 621.446 +class MObexServerNotifyAsync
 621.447 +	{
 621.448 +public:
 621.449 +
 621.450 +	/**
 621.451 + 	 Returns a null aObject if the extension is not implemented, or a pointer to another
 621.452 + 	 interface if it is.
 621.453 +	 @param aInterface UID of the interface to return
 621.454 +	 @param aObject the container for another interface as specified by aInterface
 621.455 +	 */
 621.456 +	IMPORT_C virtual void MOSNA_ExtensionInterfaceL(TUid aInterface, void*& aObject);		
 621.457 +
 621.458 +
 621.459 +
 621.460 +	/** Called if an OBEX protocol error occurs.
 621.461 +	
 621.462 +	It is only called for fatal errors that cause the OBEX connection to terminate. 
 621.463 +	An error that does not terminate the connection, for example the server issuing 
 621.464 +	a semantically valid, but unrecognised command, will not be indicated.
 621.465 +	
 621.466 +	@param aError Error code that describes the OBEX error. OBEX specific error 
 621.467 +	codes are listed from KErrIrObexClientNoDevicesFound. 
 621.468 +	
 621.469 +	@publishedAll
 621.470 +	@released
 621.471 +	*/
 621.472 +	virtual void ErrorIndication(TInt aError) =0;
 621.473 +	
 621.474 +
 621.475 +	
 621.476 +	/** Called when the underlying transport connection is made from a remote 
 621.477 +	client to the server.
 621.478 +	
 621.479 +	Note that this does not, however, indicate an OBEX connection has been successfully 
 621.480 +	established.
 621.481 +	
 621.482 +	You can define any low-level connection policy here. It is also a good place 
 621.483 +	to set up the local connection information (CObex::LocalInfo()), if any non-defaults 
 621.484 +	are required. 
 621.485 +
 621.486 +	@publishedAll
 621.487 +	@released
 621.488 +	*/
 621.489 +	virtual void TransportUpIndication() =0;
 621.490 +	
 621.491 +	
 621.492 +	
 621.493 +	/** Called when the transport connection is dropped (by either party).
 621.494 +	
 621.495 +	It is called whether the OBEX connection was gracefully disconnected or not. 
 621.496 +	The function is the definitive place for disconnection processing.
 621.497 +	
 621.498 +	@publishedAll
 621.499 +	@released
 621.500 +	*/
 621.501 +	virtual void TransportDownIndication() =0;
 621.502 +	
 621.503 +	
 621.504 +	
 621.505 +	/** Called when an OBEX connection is made from a remote client.
 621.506 +	
 621.507 +	Override this function to provide any extra OBEX connection processing.
 621.508 +	
 621.509 +	@param aRemoteInfo Connection information supplied by that remote machine
 621.510 +	@param aInfo Further information about the requested connection (reserved)
 621.511 +
 621.512 +	@publishedAll
 621.513 +	@released
 621.514 +	*/
 621.515 +	virtual void ObexConnectIndication(const TObexConnectInfo& aRemoteInfo, const TDesC8& aInfo) =0;
 621.516 +
 621.517 +
 621.518 +
 621.519 +	/** Called on a (graceful) OBEX disconnection by the client.
 621.520 +	
 621.521 +	Override this to provide any extra processing OBEX disconnection processing.
 621.522 +	
 621.523 +	Note that this indication will not be raised if the remote machine simply
 621.524 +	drops the transport connection. However, ErrorIndication() will be called 
 621.525 +	if the disconnection is unexpected/ invalid (i.e. another operation was in 
 621.526 +	progress at the time). In all cases, TransportDownIndication() will be called.
 621.527 +	
 621.528 +	@param aInfo Contains information about the disconnection (reserved) 
 621.529 +	
 621.530 +	@publishedAll
 621.531 +	@released
 621.532 +	*/
 621.533 +	virtual void ObexDisconnectIndication(const TDesC8& aInfo) =0;
 621.534 +
 621.535 +
 621.536 +
 621.537 +	/** Called on receipt of the first packet of a (valid) put request. 
 621.538 +	
 621.539 +	It is called before any parsing of the packet is performed, simply to establish 
 621.540 +	whether this server is interested in receiving objects at all.
 621.541 +	
 621.542 +	Following this notification, the server will wait for a call to
 621.543 +	CObexServer::RequestIndicationCallback supplying a CObexBaseObject derived
 621.544 +	object to receive into or a response code specifying the error.
 621.545 +	
 621.546 +	@publishedAll
 621.547 +	@released
 621.548 +	*/
 621.549 +	virtual void PutRequestIndication() =0;
 621.550 +
 621.551 +
 621.552 +
 621.553 +	/** Called on receipt of every packet of an OBEX PUT operation.
 621.554 +	
 621.555 +	It will always be preceded by a PutRequestIndication(). The object returned 
 621.556 +	by the request indication will be updated to reflect all the information received 
 621.557 +	concerning the object which the client is sending, from packets up to and 
 621.558 +	including the current one. 
 621.559 +	
 621.560 +	You can use this function to provide periodic user notification on the progress 
 621.561 +	of the transfer (noting that the Length attribute may take an arbitrary number 
 621.562 +	of packets to become non-zero, and the constraints on its accuracy). Due to 
 621.563 +	the nature of OBEX operations, where any header attribute can be sent at any 
 621.564 +	point in the transfer, this is also a good place to marshal the details of 
 621.565 +	a received object, and possibly prompt for action on the received object (e.g. 
 621.566 +	renaming on filename clashes).
 621.567 +	
 621.568 +	Note that this function could be hit quite heavily, in proportion to the size 
 621.569 +	of the object transferred. Therefore more consideration should be given to 
 621.570 +	the speed of execution of this function than that of the other indications.
 621.571 +	
 621.572 +	@return KErrNone instructs the server to allow the client to continue the put 
 621.573 +	operation. Any other value cancels the operation with an appropriate OBEX 
 621.574 +	server response code. 
 621.575 +	
 621.576 +	@publishedAll
 621.577 +	@released
 621.578 +	*/
 621.579 +	virtual TInt PutPacketIndication() =0;
 621.580 +
 621.581 +
 621.582 +
 621.583 +	/** Called after the final put packet has been successfully received and parsed. 
 621.584 +	
 621.585 +	Note that there will not necessarily be a call to this function corresponding 
 621.586 +	to each PutRequestIndication() as, if an error occurs while the put is being 
 621.587 +	carried out, ErrorIndication() will be called instead.
 621.588 +	
 621.589 +	Following this notification, the server will wait for a call to
 621.590 +	CObexServer::RequestCompleteIndicationCallback supplying a Obex response code.
 621.591 +
 621.592 +	@publishedAll
 621.593 +	@released
 621.594 +	*/
 621.595 +	virtual void PutCompleteIndication() =0;
 621.596 +
 621.597 +
 621.598 +
 621.599 +	/** Called when a full get request has been received from the client. 
 621.600 +	
 621.601 +	aRequestedObject holds all the details about the object the remote client 
 621.602 +	has requested. Use this function to analyse the client's request, and return 
 621.603 +	a pointer to the object to be returned to the client, or NULL to return no 
 621.604 +	object. 
 621.605 +	
 621.606 +	Following this notification, the server will wait for a call to
 621.607 +	CObexServer::RequestIndicationCallback supplying a CObexBaseObject derived
 621.608 +	object to send to the client or a response code specifying the error.
 621.609 +
 621.610 +	@param aRequiredObject Details about the object the remote client has requested
 621.611 +	
 621.612 +	@publishedAll
 621.613 +	@released
 621.614 +	*/
 621.615 +	virtual void GetRequestIndication(CObexBaseObject* aRequiredObject) =0;
 621.616 +
 621.617 +
 621.618 +
 621.619 +	/** Called for every packet of get reply sent by the server back to the client. 
 621.620 +	
 621.621 +	The function is only called while an object is being sent to the client, not 
 621.622 +	while the client is providing its initial specification for the object it 
 621.623 +	requires. 
 621.624 +	
 621.625 +	You can use this function to provide user notification on the object being 
 621.626 +	sent, and its progress. As with PutPacketIndication(), you should consider 
 621.627 +	that this function might get called often, especially for large objects and 
 621.628 +	small OBEX packet sizes, so the speed of execution here is important.
 621.629 +	
 621.630 +	@return KErrNone to continue sending the object, or any other error code to 
 621.631 +	cancel the operation
 621.632 +	
 621.633 +	@publishedAll
 621.634 +	@released
 621.635 +	*/
 621.636 +	virtual TInt GetPacketIndication() =0;
 621.637 +
 621.638 +
 621.639 +
 621.640 +	/** Called when the final packet of the object has been returned to the client.
 621.641 +	
 621.642 +	Note like PutCompleteIndication(), this function might not be called for each
 621.643 +	GetRequestIndication(), if the operation is interrupted by an error.
 621.644 +	
 621.645 +	Following this notification, the server will wait for a call to
 621.646 +	CObexServer::RequestCompleteIndicationCallback supplying a Obex response code.
 621.647 +
 621.648 +	@publishedAll
 621.649 +	@released
 621.650 +	*/
 621.651 +	virtual void GetCompleteIndication() =0;
 621.652 +
 621.653 +
 621.654 +
 621.655 +	/** Called when an OBEX SETPATH command is received by the server. 
 621.656 +	
 621.657 +	Following this notification, the server will wait for a call to
 621.658 +	CObexServer::RequestCompleteIndicationCallback supplying a Obex response code.
 621.659 +	
 621.660 +	@param aPathInfo SETPATH command parameters
 621.661 +	@param aInfo Not currently used
 621.662 +
 621.663 +	@publishedAll
 621.664 +	@released
 621.665 +	*/
 621.666 +	virtual void SetPathIndication(const CObex::TSetPathInfo& aPathInfo, const TDesC8& aInfo) =0;
 621.667 +
 621.668 +
 621.669 +
 621.670 +	/** Called when an abort packet is received from the client. 
 621.671 +	
 621.672 +	An OBEX abort command simply cancels the current operation, and does not necessarily 
 621.673 +	have to cause the connection to be dropped. On return, a ERespSuccess packet 
 621.674 +	is sent to the client. 
 621.675 +	
 621.676 +	@publishedAll
 621.677 +	@released
 621.678 +	*/
 621.679 +	virtual void AbortIndication() =0;
 621.680 +	
 621.681 +	
 621.682 +	
 621.683 +	/** Cancel an asynchronous callback request (ie. PutRequest/GetRequest/PutComplete/GetComplete/SetPath 
 621.684 +		notification).
 621.685 +	
 621.686 +	Note that ignoring this call will lead to a panic when the indication callback function
 621.687 +	is called.
 621.688 +
 621.689 +	@publishedAll
 621.690 +	@released
 621.691 +	*/
 621.692 +	virtual void CancelIndicationCallback() =0;
 621.693 +	};
 621.694 +
 621.695 +
 621.696 +#endif	// __OBEXSERVER_H
   622.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   622.2 +++ b/epoc32/include/mw/obextransportinfo.h	Wed Mar 31 12:27:01 2010 +0100
   622.3 @@ -0,0 +1,82 @@
   622.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   622.5 +// All rights reserved.
   622.6 +// This component and the accompanying materials are made available
   622.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   622.8 +// which accompanies this distribution, and is available
   622.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  622.10 +//
  622.11 +// Initial Contributors:
  622.12 +// Nokia Corporation - initial contribution.
  622.13 +//
  622.14 +// Contributors:
  622.15 +//
  622.16 +// Description:
  622.17 +//
  622.18 +
  622.19 +#ifndef __OBEXTRANSPORTINFO_H__
  622.20 +#define __OBEXTRANSPORTINFO_H__
  622.21 +
  622.22 +#include <e32std.h>
  622.23 +
  622.24 +/**
  622.25 +This class is a combination of the TObexProtocolInfo and TObexProtocolPolicy 
  622.26 +classes.
  622.27 +This class is designed for licensee derivation, to support novel transport 
  622.28 +controllers. Existing superclasses include @c TObexUsbTransportInfo, @c 
  622.29 +TObexUsbV2TransportInfo, @c TObexBtTransportInfo and @c TObexIrTransportInfo. 
  622.30 +It is also designed for 3rd party instantiation, for use when creation a 
  622.31 +CObexServer or a CObexClient.
  622.32 +
  622.33 +Note that, being a T-type, this type and all derived types must hold data by 
  622.34 +value, to support bitwise copying.
  622.35 +
  622.36 +@publishedAll
  622.37 +@released
  622.38 +*/
  622.39 +class TObexTransportInfo
  622.40 +	{
  622.41 +public:
  622.42 +	/**
  622.43 +	The type of the transport over which obex will run.
  622.44 +	The size of the buffer is chosen for historical reasons. This is the size 
  622.45 +	originally used by TObexProtocolInfo.
  622.46 +	@publishedAll
  622.47 +	@released
  622.48 +	*/
  622.49 +	TBuf<60> iTransportName; 
  622.50 +	
  622.51 +	/**
  622.52 +	The version of the protocol policy format that this class supports
  622.53 +	@publishedAll
  622.54 +	@released
  622.55 +	*/
  622.56 +	TUint16 iVersion;
  622.57 +	
  622.58 +	/**
  622.59 +	The maximum size of the receive packet buffer for the policy
  622.60 +	@publishedAll
  622.61 +	@released
  622.62 +	*/
  622.63 +	TUint16 iReceiveMtu;
  622.64 +	
  622.65 +	/**
  622.66 +	The maximum size of the transmit packet buffer for the policy
  622.67 +	@publishedAll
  622.68 +	@released
  622.69 +	*/
  622.70 +	TUint16 iTransmitMtu;
  622.71 +	
  622.72 +	/**	*/
  622.73 +	TUint16 iFuture1;
  622.74 +	
  622.75 +	/**	*/
  622.76 +	TUint32 iFuture2;
  622.77 +	
  622.78 +	/**	*/
  622.79 +	TInt iFuture3;
  622.80 +	
  622.81 +	/**	*/
  622.82 +	TInt iFuture4;
  622.83 +	};
  622.84 +
  622.85 +#endif // __OBEXTRANSPORTINFO_H__
   623.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   623.2 +++ b/epoc32/include/mw/obextypes.h	Wed Mar 31 12:27:01 2010 +0100
   623.3 @@ -0,0 +1,69 @@
   623.4 +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   623.5 +// All rights reserved.
   623.6 +// This component and the accompanying materials are made available
   623.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   623.8 +// which accompanies this distribution, and is available
   623.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  623.10 +//
  623.11 +// Initial Contributors:
  623.12 +// Nokia Corporation - initial contribution.
  623.13 +//
  623.14 +// Contributors:
  623.15 +//
  623.16 +// Description:
  623.17 +//
  623.18 +
  623.19 +
  623.20 +
  623.21 +/**
  623.22 + @file
  623.23 + @publishedAll
  623.24 + @released
  623.25 +*/
  623.26 +
  623.27 +#ifndef __OBEXTYPES_H
  623.28 +#define __OBEXTYPES_H
  623.29 +
  623.30 +#include <e32std.h>
  623.31 +#include <e32des8.h>
  623.32 +#include <e32des16.h>
  623.33 +#include <utf.h> // Required for source compatability
  623.34 +#include <obexconstants.h>
  623.35 +#include <obex/internal/obextransportconstants.h>
  623.36 +
  623.37 +class TObexProtocolInfo;
  623.38 +class TObexIrProtocolInfo;
  623.39 +class TObexBluetoothProtocolInfo;
  623.40 +class TObexUsbProtocolInfo;
  623.41 +class TObexUsbProtocolInfoV2;
  623.42 +class TObexProcotolPolicy;
  623.43 +struct TObexConnectionInfo;
  623.44 +class TObexConnectInfo;
  623.45 +
  623.46 +class CObexPacket;
  623.47 +class CObexHeader;
  623.48 +class CObexUnderlyingHeader;
  623.49 +class MObexHeaderCheck;
  623.50 +class CObexHeaderSet;
  623.51 +class CObexBaseObject;
  623.52 +class CObexFileObject;
  623.53 +class CObexBufObject;
  623.54 +class CObexNullObject;
  623.55 +class MObexNotify;
  623.56 +class MObexAuthChallengeHandler;
  623.57 +class CObexTransport;
  623.58 +class CObexConnector;
  623.59 +class TObexInternalHeader;
  623.60 +class CObexAuthenticator;
  623.61 +class CObex;
  623.62 +class TObexSetPathData;
  623.63 +class CObexClient;
  623.64 +class MObexServerNotify;
  623.65 +class CObexServer;
  623.66 +class CObexServerStateMachine;
  623.67 +class MObexServerNotify;
  623.68 +class MObexServerNotifyAsync;
  623.69 +class CObexServerNotifySyncWrapper;
  623.70 +
  623.71 +
  623.72 +#endif // __OBEXTYPES_H
   624.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   624.2 +++ b/epoc32/include/mw/obexusbtransportinfo.h	Wed Mar 31 12:27:01 2010 +0100
   624.3 @@ -0,0 +1,56 @@
   624.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   624.5 +// All rights reserved.
   624.6 +// This component and the accompanying materials are made available
   624.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   624.8 +// which accompanies this distribution, and is available
   624.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  624.10 +//
  624.11 +// Initial Contributors:
  624.12 +// Nokia Corporation - initial contribution.
  624.13 +//
  624.14 +// Contributors:
  624.15 +//
  624.16 +// Description:
  624.17 +//
  624.18 +
  624.19 +#ifndef __OBEXUSBTRANSPORTINFO_H__
  624.20 +#define __OBEXUSBTRANSPORTINFO_H__
  624.21 +
  624.22 +#include "obextransportinfo.h"
  624.23 +#include <obexconstants.h>
  624.24 +
  624.25 +/**
  624.26 +Concrete transport info type for use when using the usb  transport controller.
  624.27 +@publishedAll
  624.28 +@released
  624.29 +*/
  624.30 +NONSHARABLE_CLASS(TObexUsbTransportInfo) : public TObexTransportInfo
  624.31 +	{	
  624.32 +//Data from TObexUsbProtocolInfo class, declared in obex\public\obexconstants.h
  624.33 +public:
  624.34 +		/** Provides a string to be attached to the Obex function's Communication Class interface,
  624.35 +		which may be used to identify the Obex service. */
  624.36 +		TBuf16<KUsbIntStringDescLength> iInterfaceStringDescriptor;
  624.37 +	};
  624.38 +
  624.39 +/**
  624.40 +Concrete transport info type when using the USB transport controller with client driver extensions.
  624.41 +@publishedAll
  624.42 +@released
  624.43 +*/
  624.44 +NONSHARABLE_CLASS(TObexUsbV2TransportInfo) : public TObexUsbTransportInfo
  624.45 +	{
  624.46 +		
  624.47 +	//Data from TObexUsbProtocolInfoV2 class, declared in obex\public\obexconstants.h
  624.48 +public:
  624.49 +	/** Bitmap containing the bandwidth priorities to use on IN and OUT endpoints
  624.50 +	@see TUsbcBandwidthPriority
  624.51 +	*/
  624.52 +	TInt iBandwidthPriority;
  624.53 +	/** Specifies whether to use DMA on the bulk OUT endpoint */
  624.54 +	TBool iDmaOnOutEndpoint;
  624.55 +	/** Specifies whether to use DMA on the bulk IN endpoint */
  624.56 +	TBool iDmaOnInEndpoint;
  624.57 +	};
  624.58 +
  624.59 +#endif
   625.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   625.2 +++ b/epoc32/include/mw/playerinformationtarget.h	Wed Mar 31 12:27:01 2010 +0100
   625.3 @@ -0,0 +1,171 @@
   625.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   625.5 +// All rights reserved.
   625.6 +// This component and the accompanying materials are made available
   625.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   625.8 +// which accompanies this distribution, and is available
   625.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  625.10 +//
  625.11 +// Initial Contributors:
  625.12 +// Nokia Corporation - initial contribution.
  625.13 +//
  625.14 +// Contributors:
  625.15 +//
  625.16 +// Description:
  625.17 +//
  625.18 +
  625.19 +
  625.20 +
  625.21 +/**
  625.22 + @file
  625.23 + @publishedAll
  625.24 + @released
  625.25 +*/
  625.26 +
  625.27 +#ifndef REMCONPLAYERINFORMATIONTARGET_H
  625.28 +#define REMCONPLAYERINFORMATIONTARGET_H
  625.29 +
  625.30 +#include <e32base.h>
  625.31 +#include <s32mem.h>
  625.32 +#include <e32hashtab.h>
  625.33 +
  625.34 +#include <remcon/remconinterfacebase.h>
  625.35 +#include <remcon/remconinterfaceif.h>
  625.36 +#include <remcon/avrcpspec.h>
  625.37 +#include <playerinformationtargetobserver.h>
  625.38 +
  625.39 +class CRemConInterfaceSelector;
  625.40 +class CPlayerApplicationSettings;
  625.41 +
  625.42 +// This is the maximum length of the player application setting attribute and value strings
  625.43 +const TInt KMaxPlayerApplicationSettingsValue = 255 ;
  625.44 +// This is the minimum length of the player application setting attribute and value strings
  625.45 +const TInt KMinPlayerApplicationSettingsValue = 1 ;
  625.46 +
  625.47 +/**
  625.48 +Client-instantiable class supporting player information responses.
  625.49 +This is the container class for the three interface parts
  625.50 +*/
  625.51 +NONSHARABLE_CLASS(CPlayerInfoTarget) : 	public CRemConInterfaceBase,
  625.52 +								       	public MRemConInterfaceIf2, 
  625.53 +								       	private MPlayerCapabilitiesObserver,
  625.54 +										private MPlayerApplicationSettingsObserver,
  625.55 +										private MPlayerEventsObserver
  625.56 +								           
  625.57 +	{
  625.58 +public:
  625.59 +	/**
  625.60 +	Factory function.
  625.61 +	@param aInterfaceSelector The interface selector. The client must have 
  625.62 +	created one of these first.
  625.63 +	@param aPlayerCapabilitiesObserver Returns a pointer to a MPlayerCapabilitiesObserver for this interface, owned by the CPlayerInfoTarget.
  625.64 +	@param aPlayerApplicationSettingsObserver Returns a pointer to a MPlayerApplicationSettingsObserver for this interface, owned by the CPlayerInfoTarget
  625.65 +	@param aPlayerEventsObserver Returns a pointer to a MPlayerEventsObserver for this interface, owned by the CPlayerInfoTarget
  625.66 +	@return A new CPlayerInfoTarget, owned by the interface selector.
  625.67 +	*/
  625.68 +	IMPORT_C static CPlayerInfoTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector,
  625.69 +								       	MPlayerCapabilitiesObserver*& aPlayerCapabilitiesObserver,
  625.70 +										MPlayerApplicationSettingsObserver*& aPlayerApplicationSettingsObserver,
  625.71 +										MPlayerEventsObserver*& aPlayerEventsObserver,
  625.72 +										MPlayerApplicationSettingsNotify& aApplicationSettingNotifier );
  625.73 +	
  625.74 +	/** Destructor */
  625.75 +	IMPORT_C ~CPlayerInfoTarget();
  625.76 +
  625.77 +
  625.78 +
  625.79 +private:
  625.80 +	/** 
  625.81 +	Constructor.
  625.82 +	@param aInterfaceSelector The interface selector.
  625.83 +	*/
  625.84 +	CPlayerInfoTarget(CRemConInterfaceSelector& aInterfaceSelector, MPlayerApplicationSettingsNotify& aApplicationSettingNotifier );
  625.85 +
  625.86 +	void ConstructL(MPlayerCapabilitiesObserver*& aPlayerCapabilitiesObserver,
  625.87 +							MPlayerApplicationSettingsObserver*& aPlayerApplicationSettingsObserver,
  625.88 +							MPlayerEventsObserver*& aPlayerEventsObserver );
  625.89 +	
  625.90 +private: // from CRemConInterfaceBase
  625.91 +	TAny* GetInterfaceIf(TUid aUid);
  625.92 +
  625.93 +private: // from MRemConInterfaceIf
  625.94 +	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData, TRemConMessageSubType aMsgSubType);
  625.95 +
  625.96 +private: 
  625.97 +	// Bearer attributes (settings) processing
  625.98 +	void ProcessListPlayerApplicationAttributes( TInt aOperationId );
  625.99 +	void ProcessGetPlayerApplicationAttributeText( const TDesC8& aData, TInt aOperationId );
 625.100 +	void ProcessListPlayerApplicationValues( const TDesC8& aData, TInt aOperationId );
 625.101 +	void ProcessGetPlayerApplicationValueText( const TDesC8& aData, TInt aOperationId );
 625.102 +	void ProcessGetCurrentPlayerApplicationValue( const TDesC8& aData, TInt aOperationId );
 625.103 +	void ProcessSetPlayerApplicationValue( const TDesC8& aData, TInt aOperationId );
 625.104 +
 625.105 +	// Bearer attributes (settings) API implementation from MPlayerApplicationSettingsObserver
 625.106 +	void DoDefineAttributeL(TUint aAttributeID, TDesC8& aAttributeText, RArray<TUint> &aValues, RArray<TPtrC8> &aValueTexts, TUint aInitialValue);
 625.107 +	void DoSetAttributeL(TUint aAttributeID, TUint aValue);
 625.108 +
 625.109 +	// Notifier Events API implementation from MPlayerEventsObserver
 625.110 +	void DoPlaybackStatusChanged(TPlaybackStatus aStatus);
 625.111 +	void DoTrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds);
 625.112 +	void DoTrackReachedEnd();
 625.113 +	void DoTrackReachedStart();
 625.114 +	void DoSetPlaybackPosition(TUint32 aMilliseconds);	
 625.115 +	void DoSetBatteryStatus(TTargetBatteryStatus aBatteryStatus);
 625.116 +
 625.117 +	// Notifier Events bearer processing  
 625.118 +	void ProcessGetPlayStatus();
 625.119 +	void ProcessGetStatusAndBeginObserving(TUint aOperationId, TRegisterNotificationEvent aEventId, const TDesC8& aData);
 625.120 +	void ProcessGetStatus(TUint aOperationId, TRegisterNotificationEvent aEventId);
 625.121 +	void SendNotificationResponse(TRegisterNotificationEvent aEventId, TRemConMessageSubType aMsgSubType);
 625.122 +	
 625.123 +	// Capabilities API implementation from MPlayerCapabilitiesObserver
 625.124 +	void DoClearEvents();
 625.125 +	TInt DoAddEvent(TRegisterNotificationEvent aEvent);
 625.126 +	TInt DoRemoveEvent(TRegisterNotificationEvent aEvent);
 625.127 +	void DoClearCompanyIds();
 625.128 +	TInt DoAddCompanyId(TInt aID);
 625.129 +	TInt DoRemoveCompanyID(TInt aID);
 625.130 +
 625.131 +	// Capabilities bearer processing 
 625.132 +	void ProcessGetCapabilities( const TDesC8& aData );
 625.133 +	
 625.134 +	// Miscellaneous
 625.135 +	TBool AttributeSettingExists(TUint anAttribute);
 625.136 +	TBool IsValidAttributeValue(TUint anAttributeId, TUint aAttributeValue);
 625.137 +	TBool AttributeValueCanBeSet(TUint anAttributeId, TUint aAttributeValue);
 625.138 +	void SendError(TInt, TInt);
 625.139 +	void SendError(TInt, TInt, TRemConMessageSubType aSubType);
 625.140 +	CPlayerApplicationSettings* GetSetting(TUint anAttribute);
 625.141 +	
 625.142 +private: // owned
 625.143 +	RBuf8								iOutBuf;
 625.144 +
 625.145 +	MPlayerApplicationSettingsNotify& 	iApplicationSettingNotifier;
 625.146 +		
 625.147 +	// data for MPlayerEventsObserver
 625.148 +	TPlaybackStatus 					iPlayBackStatus;
 625.149 +	TUint64 							iTrackId;
 625.150 +	TUint32 							iLengthInMilliseconds;
 625.151 +	TPlayPosition						iTrackPosition;
 625.152 +	
 625.153 +	// The time interval (received as part if the RegisterNotification) 
 625.154 +	// in which the change in playback position will be notified
 625.155 +	TUint32								iPlayBackIntervalInMilliseconds;
 625.156 +
 625.157 +	TTargetBatteryStatus				iBatteryStatus;
 625.158 +	TUint32 							iPlaybackPositionInMilliseconds;
 625.159 +	TUint32								iLastNotifiedPlaybackPositionInMilliseconds;
 625.160 +	
 625.161 +	// data for MPlayerCapabilitiesObserver
 625.162 +	RArray<TRegisterNotificationEvent> 			iSupportedNotificationEventList;
 625.163 +	RArray<TInt> 						iCompanyIdList;
 625.164 +
 625.165 +	// list of events for which notifications have been request 
 625.166 +	RArray<TRegisterNotificationEvent> 			iPendingNotificationEventList;
 625.167 +
 625.168 +	// Attribute (settings) data MPlayerApplicationSettingsObserver
 625.169 +	RHashMap<TInt, CPlayerApplicationSettings*>		iPlayerApplicationSettings;
 625.170 +
 625.171 +	};
 625.172 +
 625.173 +
 625.174 +#endif // REMCONPLAYERINFORMATIONTARGET_H
   626.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   626.2 +++ b/epoc32/include/mw/playerinformationtargetobserver.h	Wed Mar 31 12:27:01 2010 +0100
   626.3 @@ -0,0 +1,300 @@
   626.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   626.5 +// All rights reserved.
   626.6 +// This component and the accompanying materials are made available
   626.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   626.8 +// which accompanies this distribution, and is available
   626.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  626.10 +//
  626.11 +// Initial Contributors:
  626.12 +// Nokia Corporation - initial contribution.
  626.13 +//
  626.14 +// Contributors:
  626.15 +//
  626.16 +// Description:
  626.17 +//
  626.18 +
  626.19 +
  626.20 +
  626.21 +/**
  626.22 + @file
  626.23 + @publishedAll
  626.24 + @released
  626.25 +*/
  626.26 +
  626.27 +#ifndef REMCONPLAYERINFORMATIONTARGETOBSERVER_H
  626.28 +#define REMCONPLAYERINFORMATIONTARGETOBSERVER_H
  626.29 +
  626.30 +#include <e32base.h>
  626.31 +#include <remcon/avrcpspec.h>
  626.32 +#include <barsc2.h>
  626.33 +
  626.34 +
  626.35 +/**
  626.36 +This class is used to define the capabilities of the current application,
  626.37 +and the implementation will generate AVRCP responses to the controller.
  626.38 +For the event part of the API, it is recommended to add all events which make
  626.39 +sense for the media player. In general, this will be everything except
  626.40 +ESystemStatusChanged. The company ID part of the API is only needed if
  626.41 +the media player needs to support vendor extensions other than bluetooth SIG.
  626.42 +The bluetooth SIG company ID is always included in responses to a COMPANY_ID request.
  626.43 +*/
  626.44 +class MPlayerCapabilitiesObserver 
  626.45 +	{
  626.46 +	public:
  626.47 +		/**
  626.48 +		Remove all notification events from the supported list
  626.49 +		*/
  626.50 +		IMPORT_C void ClearEvents();
  626.51 +		/**
  626.52 +		Add a notification event to the supported list of events
  626.53 +		The AVRCP 1.3 specification mandates that PlaybackStatusChanged
  626.54 +		and TrackChanged events must be supported; KErrAlreadyExists will
  626.55 +		be returned if AddEvent() is called with either of these events.
  626.56 +		@param aEvent the event to add
  626.57 +		@return KErrAlreadyExists if the event is already present.
  626.58 +		KErrNotSupported if the event isn't supported by the implementation, e.g.. ESystemStatusChanged
  626.59 +		*/
  626.60 +		IMPORT_C TInt AddEvent(TRegisterNotificationEvent aEvent);
  626.61 +		/**
  626.62 +		Remove a notification event from the supported list of events
  626.63 +		The AVRCP 1.3 specification mandates that PlaybackStatusChanged
  626.64 +		and TrackChanged events must be supported; KErrNotSupported will
  626.65 +		be returned if RemoveEvent() is called with either of these events.
  626.66 +		@param aEvent the event to remove
  626.67 +		@return KErrNone if this completes successfully, KErrNotFound if aID
  626.68 +		was not in the list, or any other system wide error code.
  626.69 +		*/
  626.70 +		IMPORT_C TInt RemoveEvent(TRegisterNotificationEvent aEvent);
  626.71 +
  626.72 +		const static TInt KMaxCompanyID = 0xFFFFFF;
  626.73 +		const static TInt KMaxNrOfCompanyIDs = 255;
  626.74 +		
  626.75 +		/**
  626.76 +		Remove all additional company IDs from the supported list
  626.77 +		*/
  626.78 +		IMPORT_C void ClearCompanyIds();
  626.79 +		/**
  626.80 +		Add a company id to the supported list of company ids.
  626.81 +		The AVRCP 1.3 specification mandates that the Bluetooth SIG vendor id 
  626.82 +		must be supported; KErrAlreadyExists will be returned if AddCompanyId()
  626.83 +		is called with this company id.
  626.84 +		@param aID the id to add
  626.85 +		@return KErrNone if this completes successfully,
  626.86 +		KErrAlreadyExists if aID is already present,
  626.87 +		KErrOverflow if the maximum number of company ids are already listed,
  626.88 +		or any other system wide error code.
  626.89 +		*/
  626.90 +		IMPORT_C TInt AddCompanyId(TInt aID);
  626.91 +		/**
  626.92 +		Remove a company id from the list of supported vendor extensions.
  626.93 +		The Bluetooth SIG id can't be removed, as this must always be supported
  626.94 +		@param aID the id to remove
  626.95 +		@return KErrNone if this completes successfully, KErrNotFound if aID
  626.96 +		was not in the list, or any other system wide error code.
  626.97 +		*/
  626.98 +		IMPORT_C TInt RemoveCompanyID(TInt aID);
  626.99 +		
 626.100 +	private:
 626.101 +		virtual void DoClearEvents() = 0;
 626.102 +		virtual TInt DoAddEvent(TRegisterNotificationEvent aEvent) = 0;
 626.103 +		virtual TInt DoRemoveEvent(TRegisterNotificationEvent aEvent) = 0;
 626.104 +		virtual void DoClearCompanyIds() = 0;
 626.105 +		virtual TInt DoAddCompanyId(TInt aID) = 0;
 626.106 +		virtual TInt DoRemoveCompanyID(TInt aID) = 0;
 626.107 +	};
 626.108 +
 626.109 +/**
 626.110 +This class is for supporting the player application settings PDUs in AVRCP1.3
 626.111 +specification section 5.2. The RegisterNotification PDU for
 626.112 +EVENT_PLAYER_APPLICATION_SETTING_CHANGED is also supported through this API.
 626.113 +
 626.114 +The media player should first define all the attributes it supports, using
 626.115 +DefineAttributeL. When an attribute's value is changed by the media player,
 626.116 +it should call SetAttributeL to inform the controller. When the controller
 626.117 +changes a setting, the media player application receives a callback via the
 626.118 +MPlayerApplicationSettingsNotify interface
 626.119 +*/
 626.120 +class MPlayerApplicationSettingsObserver 
 626.121 +	{
 626.122 +	public:
 626.123 +		/**
 626.124 +		Define an attribute supported by this player.
 626.125 +		It will be included in future responses to the following PDUs:
 626.126 +			ListPlayerApplicationSettingAttributes,
 626.127 +			ListPlayerApplicationSettingValues,
 626.128 +			GetCurrentPlayerApplicationSettingValue,
 626.129 +			GetPlayerApplicationSettingAttributeText,
 626.130 +			GetPlayerApplicationSettingValueText,
 626.131 +		@param aAttributeID The specification or player defined attribute
 626.132 +		@param aAttributeText The UTF8 text name of the attribute(allowed text length is 1-255) - the API will take a copy
 626.133 +		@param aValues The list of defined values
 626.134 +		@param aValueTexts The UTF8 text for each defined value(allowed text length is 1-255) - The API will make copies.
 626.135 +		@param aInitialValue The initial value for this attribute
 626.136 +		@leave KErrNoMemory if memory could not be allocated to store the copies of aAttributeID and relative settings
 626.137 +		@leave KErrNotSupported if attribute or value is out of specification defined range,
 626.138 +			or aValueTexts is not equal length to aValues
 626.139 +		*/
 626.140 +		IMPORT_C void DefineAttributeL(TUint aAttributeID,
 626.141 +										TDesC8& aAttributeText,
 626.142 +										RArray<TUint> &aValues,
 626.143 +										RArray<TPtrC8> &aValueTexts,
 626.144 +										TUint aInitialValue);
 626.145 +
 626.146 +		/**
 626.147 +		Set the current value of a previously defined attribute
 626.148 +		This updates the cache and will cause completion of a 
 626.149 +		pending EVENT_PLAYER_APPLICATION_SETTING_CHANGED notification PDU
 626.150 +		@param aAttributeID The specification or player defined attribute
 626.151 +		@param aValue The current value
 626.152 +		@leave KErrNotFound if the attribute is not defined,
 626.153 +			KErrArgument if the value is not valid according to the definition
 626.154 +		*/
 626.155 +		IMPORT_C void SetAttributeL(TUint aAttributeID, TUint aValue);
 626.156 +
 626.157 +	private:
 626.158 +		virtual void DoDefineAttributeL(TUint aAttributeID,
 626.159 +										TDesC8& aAttributeText,
 626.160 +										RArray<TUint> &aValues,
 626.161 +										RArray<TPtrC8> &aValueTexts,
 626.162 +										TUint aInitialValue) = 0;
 626.163 +		virtual void DoSetAttributeL(TUint aAttributeID, TUint aValue) = 0;
 626.164 +	
 626.165 +	};
 626.166 +
 626.167 +/**
 626.168 +This is a helper API allowing CPlayerApplicationSettings to be initialised
 626.169 +via a resource file. Using a resource file may help to provide localised text
 626.170 +for the attributes and values, according to current language setting of the phone.
 626.171 +*/
 626.172 +class PlayerApplicationSettingsResourceInit
 626.173 +	{
 626.174 +	public:
 626.175 +	/**
 626.176 +	Defines multiple attributes supported by this player, which are listed in a resource file.
 626.177 +	@param aSettings The CPlayerApplicationSettings object on which the attributes should be defined
 626.178 +	@param aResource A fully constructed CResourceFile
 626.179 +	@leave KErrNoMemory, or leave from CResourceFile functions
 626.180 +	*/
 626.181 +	IMPORT_C static void DefineAttributesL(MPlayerApplicationSettingsObserver& aSettings, CResourceFile &aResource);
 626.182 +	};
 626.183 +
 626.184 +/**
 626.185 +This class supports the notification PDUs in AVRCP1.3 specification section 5.4,
 626.186 +with the following exceptions:
 626.187 +   EVENT_SYSTEM_STATUS_CHANGED is not supported, it is only for adaptors that plug into a media player
 626.188 +   EVENT_PLAYER_APPLICATION_SETTING_CHANGED is supported through the CPlayerApplicationSettings API
 626.189 +
 626.190 +Events are pushed by the media player calling functions in this API, where they are
 626.191 +cached until the controller pulls them via a GetPlayStatus or RegisterNotification PDU
 626.192 +@see CPlayerApplicationSettings
 626.193 +*/
 626.194 +class MPlayerEventsObserver 
 626.195 +	{
 626.196 +	public:
 626.197 +		enum TTargetBatteryStatus
 626.198 +			{
 626.199 +			ENormal     = 0,
 626.200 +			EWarning    = 1,
 626.201 +			ECritical   = 2,
 626.202 +			EExternal   = 3,
 626.203 +			EFullCharge = 4,
 626.204 +			EUnknown	= 5
 626.205 +			};	
 626.206 +			
 626.207 +		enum TPlaybackStatus
 626.208 +			{
 626.209 +			EStopped = 0,
 626.210 +			EPlaying = 1,
 626.211 +			EPaused = 2,
 626.212 +			EFwdSeek = 3,
 626.213 +			ERevSeek = 4,
 626.214 +			EError = 0xFF
 626.215 +			};
 626.216 +
 626.217 +		enum TPlayPosition
 626.218 +			{
 626.219 +			EStart = 0,
 626.220 +			EMiddle = 1,
 626.221 +			EEnd= 2,
 626.222 +			};
 626.223 +
 626.224 +		static const TUint64 KNoTrackSelected = KMaxTUint64;
 626.225 +
 626.226 +		static const TUint32 KPlaybackPositionUnknown = 0xFFFFFFFF;
 626.227 +		
 626.228 +		/**
 626.229 +		Call this function whenever the playback status changes.
 626.230 +		It will be used to complete pending EVENT_PLAYBACK_STATUS_CHANGED
 626.231 +		and EVENT_PLAYBACK_POS_CHANGED notifications.
 626.232 +		The value is used to generate the response to a GetPlayStatus PDU.
 626.233 +		@param aStatus The specification defined playback status
 626.234 +		*/
 626.235 +		IMPORT_C void PlaybackStatusChanged(TPlaybackStatus aStatus);
 626.236 +		/**
 626.237 +		Call this function whenever the current media track is changed.
 626.238 +		use KNoTrackSelected to indicate that there is no media selected. 
 626.239 +		This is the default value on construction. It will be used to
 626.240 +		complete pending EVENT_TRACK_CHANGED and EVENT_PLAYBACK_POS_CHANGED notifications.
 626.241 +		The values are used to generate the response to a GetPlayStatus PDU.
 626.242 +		@param aTrackId A handle to the current track.
 626.243 +		@param aLengthInMilliseconds The length of the current track.
 626.244 +		*/
 626.245 +		IMPORT_C void TrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds);
 626.246 +		/**
 626.247 +		Call this function whenever the current track reaches the end position,
 626.248 +		e.g. due to playback or forward seek. It will be used to complete
 626.249 +		pending EVENT_TRACK_REACHED_END and EVENT_PLAYBACK_POS_CHANGED notifications.
 626.250 +		*/
 626.251 +		IMPORT_C void TrackReachedEnd();
 626.252 +		/**
 626.253 +		Call this function whenever the current track reaches the start position,
 626.254 +		e.g. due to reverse seek (rewind). It will be used to complete pending
 626.255 +		EVENT_TRACK_REACHED_START and EVENT_PLAYBACK_POS_CHANGED notifications.
 626.256 +		*/
 626.257 +		IMPORT_C void TrackReachedStart();
 626.258 +		/**
 626.259 +		Call this function during playback or seek operations, to indicate the
 626.260 +		current position within the track. It will be used to complete a pending
 626.261 +		EVENT_PLAYBACK_POS_CHANGED notification. The value is used to generate the
 626.262 +		response to a GetPlayStatus PDU.
 626.263 +		@param aMilliseconds The current playback position. It is recommended to call
 626.264 +		with a resolution <=1000ms to satisfy the 1s resolution of the notification
 626.265 +		playback interval.
 626.266 +		*/
 626.267 +		IMPORT_C void SetPlaybackPosition(TUint32 aMilliseconds);
 626.268 +
 626.269 +		/**
 626.270 +		Call this function to report the current battery status
 626.271 +		@param aBatteryStatus The current battery status.
 626.272 +		*/
 626.273 +		IMPORT_C void SetBatteryStatus(TTargetBatteryStatus aBatteryStatus);
 626.274 +		
 626.275 +	private:
 626.276 +		virtual void DoPlaybackStatusChanged(TPlaybackStatus aStatus) = 0;
 626.277 +		virtual void DoTrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds) = 0;
 626.278 +		virtual void DoTrackReachedEnd() = 0;
 626.279 +		virtual void DoTrackReachedStart() = 0;
 626.280 +		virtual void DoSetPlaybackPosition(TUint32 aMilliseconds) = 0;
 626.281 +		virtual void DoSetBatteryStatus(TTargetBatteryStatus aBatteryStatus) = 0;
 626.282 +	
 626.283 +		
 626.284 +	};
 626.285 +
 626.286 +/**
 626.287 +Clients must implement this interface if they require callbacks 
 626.288 +when the controller has changed the settings via a SetPASValue message
 626.289 +*/
 626.290 +class MPlayerApplicationSettingsNotify  
 626.291 +	{
 626.292 +	public:
 626.293 +		/**
 626.294 +		This is called when the controller has changed a setting
 626.295 +		@param aAttributeID A list of attribute IDs whose value has changed.
 626.296 +		@param aAttributeValue A list of new values for the attributes listed in aAttributeID.
 626.297 +		*/
 626.298 +		virtual void MpasnSetPlayerApplicationValueL(const RArray<TInt>& aAttributeID,
 626.299 +													const RArray<TInt>& aAttributeValue)=0;
 626.300 +	};
 626.301 +	
 626.302 +
 626.303 +#endif // REMCONPLAYERINFORMATIONTARGETOBSERVER_H
   627.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   627.2 +++ b/epoc32/include/mw/pragmamessage.h	Wed Mar 31 12:27:01 2010 +0100
   627.3 @@ -0,0 +1,32 @@
   627.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   627.5 +// All rights reserved.
   627.6 +// This component and the accompanying materials are made available
   627.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   627.8 +// which accompanies this distribution, and is available
   627.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  627.10 +//
  627.11 +// Initial Contributors:
  627.12 +// Nokia Corporation - initial contribution.
  627.13 +//
  627.14 +// Contributors:
  627.15 +//
  627.16 +// Description:
  627.17 +// Created at: 20-Dec-99 10:38:03 AM
  627.18 +// Defines a macro for the file line pragma message
  627.19 +// 
  627.20 +//
  627.21 +
  627.22 +
  627.23 +#if !defined __PRAGMAMESSAGE_H__
  627.24 +#define __PRAGMAMESSAGE_H__
  627.25 +
  627.26 +#define _QUOTE(x) # x
  627.27 +#define QUOTE(x) _QUOTE(x)
  627.28 +
  627.29 +// Use __FILE__LINE__ as a string containing "File.x(line#)" for example:
  627.30 +//     #pragma message( __FILE__LINE__ "Remove this line after testing.")
  627.31 +// The above example will display the file name and line number in the build window
  627.32 +// in such a way as to allow you to double click on it to go to the line.
  627.33 +#define __FILE__LINE__ __FILE__ "(" QUOTE(__LINE__) ") : "
  627.34 +
  627.35 +#endif	// __PRAGMAMESSAGE_H__
   628.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   628.2 +++ b/epoc32/include/mw/prninf.h	Wed Mar 31 12:27:01 2010 +0100
   628.3 @@ -0,0 +1,254 @@
   628.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   628.5 +// All rights reserved.
   628.6 +// This component and the accompanying materials are made available
   628.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   628.8 +// which accompanies this distribution, and is available
   628.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  628.10 +//
  628.11 +// Initial Contributors:
  628.12 +// Nokia Corporation - initial contribution.
  628.13 +//
  628.14 +// Contributors:
  628.15 +//
  628.16 +// Description:
  628.17 +//
  628.18 +
  628.19 +#ifndef __PRNINF_H__
  628.20 +#define __PRNINF_H__
  628.21 +
  628.22 +#if !defined(__E32STD_H__)
  628.23 +#include <e32std.h>
  628.24 +#endif
  628.25 +#if !defined(__GDI_H__)
  628.26 +#include <gdi.h>
  628.27 +#endif
  628.28 +#if !defined(__FLDBASE_H__)
  628.29 +#include <fldbase.h>
  628.30 +#endif
  628.31 +
  628.32 +// Classes defined
  628.33 +//class TPageNumbers;
  628.34 +class CHeaderFooter;
  628.35 +class TPrintParameters;		
  628.36 +class TPageMargins;
  628.37 +class MPrintProcessObserver;	
  628.38 +
  628.39 +// classes referenced
  628.40 +class RReadStream;
  628.41 +class RWriteStream;
  628.42 +class CRichText;
  628.43 +class CParaFormatLayer;
  628.44 +class CCharFormatLayer;
  628.45 +class MFieldFileNameInfo;
  628.46 +class MFieldPageNumInfo;
  628.47 +class MFieldNumPagesInfo;
  628.48 +//////////////////
  628.49 +
  628.50 +
  628.51 +class TPrintParameters
  628.52 +/** Print parameters.
  628.53 +
  628.54 +This data is associated with a particular print request, not with the document 
  628.55 +to be printed, so is separate from the print setup information.
  628.56 +
  628.57 +An object of this class is passed to CPrintSetup::StartPrintL() and to CPrintSetup::StartPreviewPrintL().
  628.58 +
  628.59 +@see CPrintSetup 
  628.60 +@publishedAll 
  628.61 +@released */
  628.62 +	{
  628.63 +public:
  628.64 +	IMPORT_C TPrintParameters(); // sets to 1,0,0
  628.65 +public:
  628.66 +	/** The number of copies to print. */
  628.67 +	TInt iNumCopies;									
  628.68 +	/** The first page to be printed. 
  628.69 +	
  628.70 +	This value should be less than or equal to iLastPage. Zero indicates the first page 
  628.71 +	in the document. */
  628.72 +	TInt iFirstPage;			
  628.73 +	/** The last page to be printed. 
  628.74 +	
  628.75 +	This value should be greater than or equal to iFirstPage. Zero indicates the first 
  628.76 +	page in the document. */
  628.77 +	TInt iLastPage;
  628.78 +	};
  628.79 +
  628.80 +class TPageMargins
  628.81 +/** Page margins.
  628.82 +
  628.83 +Page margins are accessed via the public iPageMarginsInTwips member of class 
  628.84 +CPrintSetup. A single margin settings object applies throughout a document, 
  628.85 +so that gutter margins are not supported.
  628.86 +
  628.87 +If the document contains headers and footers, they are located within the 
  628.88 +top and bottom margins respectively. 
  628.89 +
  628.90 +@publishedAll 
  628.91 +@released */
  628.92 +	{
  628.93 +public:
  628.94 +	IMPORT_C void InternalizeL(RReadStream& aStream); 	
  628.95 +	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  628.96 +public:
  628.97 +	/** The distance between the top of the header and the top of the page in twips 
  628.98 +	or pixels.
  628.99 +	
 628.100 +	This must be less than the height of the top margin to ensure that the header 
 628.101 +	is visible. */
 628.102 +	TInt iHeaderOffset;
 628.103 +	/** The distance between the top of the footer and the top of the bottom margin 
 628.104 +	in twips or pixels. 
 628.105 +	
 628.106 +	This must be less than the height of the bottom margin to ensure that the 
 628.107 +	footer is visible. */
 628.108 +	TInt iFooterOffset;
 628.109 +	/** The widths of each of the four margins in twips or pixels.
 628.110 +	
 628.111 +	@see TMargins */
 628.112 +	TMargins iMargins;
 628.113 +	};
 628.114 +
 628.115 +class CHeaderFooter : public CBase, private MTextFieldFactory
 628.116 +/** A document header or footer.
 628.117 +
 628.118 +The header is located in the top page margin and the footer in the 
 628.119 +bottom page margin. No more than one header or footer can exist in a document.
 628.120 +
 628.121 +CHeaderFooter derives from MTextFieldFactory. This allows the insertion of 
 628.122 +various fields, including page number, current date or time and filename.
 628.123 +
 628.124 +Rich text manipulation and formatting functions can be accessed through 
 628.125 +the rich text object which is owned by the header/footer.
 628.126 +
 628.127 +The header and footer are retrieved using the CPrintSetup::Header() and Footer() 
 628.128 +functions and they are stored and restored together with the rest of the print 
 628.129 +setup information.
 628.130 +
 628.131 +@publishedAll 
 628.132 +@released */
 628.133 +	{
 628.134 +public:
 628.135 +	IMPORT_C static CHeaderFooter* NewL();
 628.136 +	IMPORT_C virtual ~CHeaderFooter();
 628.137 +	//
 628.138 +	IMPORT_C void CreateTextL();
 628.139 +	IMPORT_C void SetFirstPageToPrintTo(TInt aPageNum); // allows the first few pages of a doc not to have a header on them
 628.140 +	inline TInt FirstPageToPrintTo()const; // relative to the first page being numbered 0
 628.141 +	//
 628.142 +	// persistence
 628.143 +	IMPORT_C TStreamId StoreL(CStreamStore& aStore)const;
 628.144 +	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aStreamId,MPictureFactory* aFactory);
 628.145 +	IMPORT_C void StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap)const;
 628.146 +	IMPORT_C void RestoreComponentsL(const CStreamStore& aStore,MPictureFactory* aFactory);
 628.147 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 628.148 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 628.149 +	//
 628.150 +	// text bits
 628.151 +	IMPORT_C CRichText* Text()const;
 628.152 +	IMPORT_C CParaFormatLayer* ParaFormat()const;
 628.153 +	IMPORT_C CCharFormatLayer* CharFormat()const;
 628.154 +	IMPORT_C void SetText(CRichText* aText); // takes ownership
 628.155 +	IMPORT_C void SetParaFormat(CParaFormatLayer* aParaFormat); // takes ownership
 628.156 +	IMPORT_C void SetCharFormat(CCharFormatLayer* aCharFormat); // takes ownership
 628.157 +	//
 628.158 +	// field bits
 628.159 +	IMPORT_C void SetFileNameInfo(const MFieldFileNameInfo& aFileNameInfo); // call if you want headers/footers to support filename fields
 628.160 +	IMPORT_C void SetNumPagesInfo(const MFieldNumPagesInfo& aNumPagesInfo); // call if you want headers/footers to support "total number of pages" fields
 628.161 +	inline MFieldFileNameInfo* FileNameFieldInfo()const;
 628.162 +	inline MFieldNumPagesInfo* NumPagesFieldInfo()const;
 628.163 +	//
 628.164 +	void SetPageNumInfo(const MFieldPageNumInfo& aPageNumInfo); // called by CPrintSetup
 628.165 +private:
 628.166 +	CHeaderFooter();
 628.167 +	void CreateFormatLayersL();
 628.168 +	// from MTextFieldFactory
 628.169 +	CTextField* NewFieldL(TUid aFieldType);
 628.170 +private:
 628.171 +	TInt iFirstPageToPrintTo; // relative to the first page being numbered 0
 628.172 +	MFieldFileNameInfo* iFileNameInfo;
 628.173 +	MFieldPageNumInfo* iPageNumInfo;
 628.174 +	MFieldNumPagesInfo* iNumPagesInfo;
 628.175 +	CRichText* iText; // RichText Doc Handle
 628.176 +	CParaFormatLayer* iParaLayer;
 628.177 +	CCharFormatLayer* iCharLayer;
 628.178 +private:
 628.179 +	enum { ETextExists = 0x0001 };
 628.180 +	};
 628.181 +
 628.182 +class MPrintProcessObserver
 628.183 +/** Print progress and status notification interface class.
 628.184 +
 628.185 +The notification functions are called before, during and after a print or 
 628.186 +print preview operation, to give notification of its progress.
 628.187 +
 628.188 +The print process observer will often be the GUI's standard print progress 
 628.189 +or print preview dialog.
 628.190 +
 628.191 +An object of a class which implements this interface may be passed as a parameter 
 628.192 +to CPrintSetup::StartPrintL(), or to CPrintSetup::StartPreviewPrintL(). 
 628.193 +
 628.194 +@publishedAll 
 628.195 +@released */
 628.196 +	{
 628.197 +public:
 628.198 +	/** Notifies that a print or print preview operation is about to begin.
 628.199 +	
 628.200 +	It may be used to display information about the document to be printed. It 
 628.201 +	is called once, immediately before printing or print previewing begins.
 628.202 +	
 628.203 +	When subclassing, add variables to store initialisation information as required.
 628.204 +	
 628.205 +	@param aPrintParams The parameters for the print job. */
 628.206 +	virtual void NotifyPrintStarted(TPrintParameters aPrintParams)=0;
 628.207 +	/** Notifies that a band is about to be printed.
 628.208 +	
 628.209 +	It may be used to display print progress information, including the current 
 628.210 +	page number. It is called immediately before each band is printed.
 628.211 +	
 628.212 +	@param aPercentageOfPagePrinted The percentage of the page that has been printed.
 628.213 +	@param aCurrentPageNum The number of the page currently being printed.
 628.214 +	@param aCurrentCopyNum The number of the copy currently being printed (if multiple 
 628.215 +	copies are being printed). */
 628.216 +	virtual void NotifyBandPrinted(TInt aPercentageOfPagePrinted, TInt aCurrentPageNum, TInt aCurrentCopyNum)=0;
 628.217 +	/** Notifies that the print or print preview operation has completed.
 628.218 +	
 628.219 +	It may be used to display information about how the operation completed, for 
 628.220 +	example any errors that occurred. It is called once, immediately after the 
 628.221 +	print job terminates.
 628.222 +	
 628.223 +	@param anErrorCode KErrNone if the print job completed successfully, otherwise 
 628.224 +	another of the system-wide error codes. */
 628.225 +	virtual void NotifyPrintEnded(TInt anErrorCode)=0;
 628.226 +	//
 628.227 +	};
 628.228 +
 628.229 +
 628.230 +//
 628.231 +// inlines
 628.232 +//
 628.233 +
 628.234 +inline TInt CHeaderFooter::FirstPageToPrintTo()const
 628.235 +/** Gets the first page on which the header or footer is to be printed.
 628.236 +
 628.237 +Page numbering begins at zero.
 628.238 +
 628.239 +@return The number of the first page on which the header or footer is to be 
 628.240 +printed. */
 628.241 +	{ return iFirstPageToPrintTo; }
 628.242 +
 628.243 +inline MFieldFileNameInfo* CHeaderFooter::FileNameFieldInfo()const
 628.244 +/** Gets the object which implements the MFieldFileNameInfo interface, as set by 
 628.245 +SetFileNameInfo().
 628.246 +
 628.247 +@return The object which implements the MFieldFileNameInfo interface. */
 628.248 +	{ return iFileNameInfo; }
 628.249 +
 628.250 +inline MFieldNumPagesInfo* CHeaderFooter::NumPagesFieldInfo()const
 628.251 +/** Gets the object which implements the MFieldNumPagesInfo interface, as set by 
 628.252 +SetNumPagesInfo().
 628.253 +
 628.254 +@return The object which implements the MFieldNumPagesInfo interface. */
 628.255 +	{ return iNumPagesInfo; }
 628.256 +
 628.257 +#endif
   629.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   629.2 +++ b/epoc32/include/mw/prnprev.h	Wed Mar 31 12:27:01 2010 +0100
   629.3 @@ -0,0 +1,200 @@
   629.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   629.5 +// All rights reserved.
   629.6 +// This component and the accompanying materials are made available
   629.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   629.8 +// which accompanies this distribution, and is available
   629.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  629.10 +//
  629.11 +// Initial Contributors:
  629.12 +// Nokia Corporation - initial contribution.
  629.13 +//
  629.14 +// Contributors:
  629.15 +//
  629.16 +// Description:
  629.17 +//
  629.18 +
  629.19 +#if !defined (__PRNPREV_H__)
  629.20 +#define __PRNPREV_H__
  629.21 +
  629.22 +#if !defined(__E32STD_H__)
  629.23 +#include  <e32std.h>
  629.24 +#endif
  629.25 +#if !defined(__E32BASE_H__)
  629.26 +#include  <e32base.h>
  629.27 +#endif
  629.28 +#if !defined(__PRNSETUP_H__)
  629.29 +#include <prnsetup.h>
  629.30 +#endif
  629.31 +
  629.32 +// classes defined:
  629.33 +class TPrintPreviewFormat;
  629.34 +class TPreviewPanel;
  629.35 +class CPrintPreviewImage;
  629.36 +//
  629.37 +
  629.38 +// forward references:
  629.39 +class RWsSession;
  629.40 +class RWindow;
  629.41 +class CPrintPreviewDevice;
  629.42 +//
  629.43 +
  629.44 +
  629.45 +class TPrintPreviewFormat
  629.46 +/** Print preview format information.
  629.47 +
  629.48 +The print preview format information is accessed via its public data members. 
  629.49 +Typically there is a system wide TPrintPreviewFormat supplied by the GUI framework. 
  629.50 +
  629.51 +Preview information includes:
  629.52 +
  629.53 +- panel settings: multiple pages can be previewed at once; the display area 
  629.54 +for each page is termed a panel.
  629.55 +
  629.56 +- label settings: each panel can have an associated label, which specifies the 
  629.57 +corresponding document page number 
  629.58 +
  629.59 +@publishedAll 
  629.60 +@released */
  629.61 +	{
  629.62 +public:
  629.63 +	/** The minimum panel gutter size, in pixels. */
  629.64 +	TSize iMinPanelGutterInPixels;
  629.65 +	/** The width of the panel shadow, in pixels. */
  629.66 +	TInt iPanelShadowWidthInPixels;
  629.67 +	/** The colour of the panel shadow. */
  629.68 +	TRgb iPanelShadowColor;
  629.69 +	/** The panel margin colour. */
  629.70 +	TRgb iPanelMarginColor;
  629.71 +	/** The color of both the paper and the window background. */
  629.72 +	TRgb iPreviewBackgroundColor;
  629.73 +	/** X pixel offset of the label text from the panel edge. */
  629.74 +	TInt iLabelOffsetInPixels;
  629.75 +	/** Font specification for the label text. */
  629.76 +	TFontSpec iLabelFontSpecInPixels;
  629.77 +	};
  629.78 +
  629.79 +
  629.80 +class CPrintPreviewImage : public CBase, private MPrintProcessObserver, private MPageRegionPrinter
  629.81 +/** Print preview image.
  629.82 +
  629.83 +This class provides a standard print preview image. An object of this type 
  629.84 +should be owned by a control, which is in turn owned by the print preview 
  629.85 +dialog. The control's window provides the region into which this object draws 
  629.86 +the preview image.
  629.87 +
  629.88 +The class provides a callback to the application code that draws the preview 
  629.89 +pages. 
  629.90 +
  629.91 +@publishedAll 
  629.92 +@released */
  629.93 +	{
  629.94 +public:
  629.95 +	/** Margin display state flags. */
  629.96 +	enum TMarginState {
  629.97 +		/** Show margins in print preview image. */
  629.98 +		EShowMargins,
  629.99 +		/** Hide margins in print preview image. */
 629.100 +		EHideMargins
 629.101 +		};
 629.102 +public:
 629.103 +	IMPORT_C static CPrintPreviewImage* NewL(CPrintSetup& aPrintSetup,MPageRegionPrinter& aBodyPrinter,
 629.104 +											RWsSession& aWsSession,RWindow& aWindow,const TSize& aMaxWindowSize,
 629.105 +											const TPrintPreviewFormat& aStaticFormat);
 629.106 +	IMPORT_C virtual ~CPrintPreviewImage();
 629.107 +	IMPORT_C void SetMargins(TMarginState aState); // whether  or not to show margins
 629.108 +	IMPORT_C void SetObserver(MPrintProcessObserver& aObserver);
 629.109 +	IMPORT_C void SetNumBands(TInt aNum);
 629.110 +	IMPORT_C void FormatL(TInt aNumPagesInDoc,TInt aFirstPageToDisplay,TInt aNumPagesToView); // call when scrolling or changing num pages to view
 629.111 +	IMPORT_C void DrawL(const TPoint& aOrigin,const TRect& aInvalidRegion); // aOrigin is the point in the window I will treat as the origin (ie offset)
 629.112 +	//
 629.113 +private:
 629.114 +	class TPreviewPanel;
 629.115 +	class TRange
 629.116 +		{
 629.117 +	public:
 629.118 +		TInt iFrom;
 629.119 +		TInt iTo;
 629.120 +		};
 629.121 +private:
 629.122 +	CPrintPreviewImage(CPrintSetup& aPrintSetup,MPageRegionPrinter& aBodyPrinter,RWsSession& aWsSession,
 629.123 +						RWindow& aWindow,const TSize& aMaxWindowSize,const TPrintPreviewFormat& aStaticFormat);
 629.124 +	void ConstructL();
 629.125 +	void CalculateHeaderFooterRects(TRect& aHeaderRectInPixels,TRect& aFooterRectInPixels);
 629.126 +	TInt SetPanelArrayL(const TInt aFirstPage,const TInt aNumPagesToView); 
 629.127 +	void SetLabelWidth();
 629.128 +	void ScrollPanels();
 629.129 +	void DrawBorder(CGraphicsContext* aGc); // and shadow
 629.130 +	void DrawMargins(CGraphicsContext* aGc); // including header/footer lines
 629.131 +	void DrawLabel(CGraphicsContext* aGc,TInt aPageNo);
 629.132 +	void DrawToGutter(CGraphicsContext* aGc,TInt aPageNo); // blanks all the gutter areas associated to a particular panel
 629.133 +	void DrawExtremities(CGraphicsContext* aGc); // blanks very left and right of the window
 629.134 +	inline TBool IsFirstPanel(TInt aPageNum);
 629.135 +	inline TBool IsLastPanel(TInt aPageNum);
 629.136 +	// from MPrintProcessObserver
 629.137 +	virtual void NotifyPrintStarted(TPrintParameters aPrintParams);
 629.138 +	virtual void NotifyBandPrinted(TInt aPercentageOfPagePrinted, TInt aCurrentPageNum, TInt aCurrentCopyNum);
 629.139 +	virtual void NotifyPrintEnded(TInt anErrorCode);
 629.140 +	// from MPageRegionPrinter
 629.141 +	virtual void PrintBandL(CGraphicsDevice* aDevice,TInt aPageNo,const TBandAttributes& aBand);
 629.142 +private:
 629.143 +	CPrintPreviewDevice* iDevice;
 629.144 +	CPrintSetup* iPrintSetup;
 629.145 +	MPageRegionPrinter* iAppBodyPrinter;
 629.146 +	MPrintProcessObserver* iObserver; // may be null
 629.147 +	RWsSession* iWsSession;
 629.148 +	RWindow* iWindow;
 629.149 +	CFont* iLabelFont;
 629.150 +	CArrayFix<TPreviewPanel>* iPanelArray;
 629.151 +	//
 629.152 +	TPrintPreviewFormat iFormat;
 629.153 +	TPrintParameters iPrintParams; // current preview range
 629.154 +	TMarginState iMarginState; // whether the margins are on or not
 629.155 +	TSize iPanelSizeInPixels;
 629.156 +	TSize iWinSize; // size of the window (for layout purposes)
 629.157 +	TPoint iOrigin; // origin in the window to use for drawing
 629.158 +	TSize iLabelSize;
 629.159 +	TSize iActualGutter; // gap from the edge of the panel to either screen edge or adjacent panel
 629.160 +	TInt iNumPagesInDoc; 
 629.161 +	TInt iNumBands;
 629.162 +	TSize iRndError; // rounding error from calculation of iActualGutter
 629.163 +	TRange iDrawRange; // the pages that actually require drawing - ie have not been scrolled 
 629.164 +	};
 629.165 +
 629.166 +
 629.167 +/** Internalises the margin state from a read stream.
 629.168 +
 629.169 +@param aThing The margin state to be internalised - on or off.
 629.170 +@param aStream The read stream from which the margin state is to be internalised. 
 629.171 +
 629.172 +@publishedAll 
 629.173 +@released */
 629.174 +IMPORT_C void InternalizeL(CPrintPreviewImage::TMarginState& aThing,RReadStream& aStream);
 629.175 +
 629.176 +inline RWriteStream& operator<<(RWriteStream& aStream,const CPrintPreviewImage::TMarginState& aThing) 
 629.177 +/**
 629.178 +@publishedAll 
 629.179 +@released 
 629.180 +*/
 629.181 +	{aStream.WriteUint8L(aThing);return aStream;}
 629.182 +
 629.183 +inline RReadStream& operator>>(RReadStream& aStream,CPrintPreviewImage::TMarginState& aThing) 
 629.184 +/**
 629.185 +@publishedAll 
 629.186 +@released 
 629.187 +*/
 629.188 +	{InternalizeL(aThing,aStream);return aStream;}
 629.189 +
 629.190 +//
 629.191 +// inlines
 629.192 +//
 629.193 +
 629.194 +// move to private source...
 629.195 +
 629.196 +inline TBool CPrintPreviewImage::IsFirstPanel(TInt aPageNum) 
 629.197 +	{ return aPageNum==iPrintParams.iFirstPage; }
 629.198 +
 629.199 +inline TBool CPrintPreviewImage::IsLastPanel(TInt aPageNum) 
 629.200 +	{ return aPageNum==iPrintParams.iLastPage; }
 629.201 +
 629.202 +
 629.203 +#endif
   630.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   630.2 +++ b/epoc32/include/mw/prnsetup.h	Wed Mar 31 12:27:01 2010 +0100
   630.3 @@ -0,0 +1,168 @@
   630.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   630.5 +// All rights reserved.
   630.6 +// This component and the accompanying materials are made available
   630.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   630.8 +// which accompanies this distribution, and is available
   630.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  630.10 +//
  630.11 +// Initial Contributors:
  630.12 +// Nokia Corporation - initial contribution.
  630.13 +//
  630.14 +// Contributors:
  630.15 +//
  630.16 +// Description:
  630.17 +//
  630.18 +
  630.19 +#ifndef __PRNSETUP_H__
  630.20 +#define __PRNSETUP_H__
  630.21 +
  630.22 +#if !defined(__E32STD_H__)
  630.23 +#include <e32std.h>
  630.24 +#endif
  630.25 +#if !defined(__E32BASE_H__)
  630.26 +#include <e32base.h>
  630.27 +#endif
  630.28 +#if !defined(__FLDBLTIN_H__)
  630.29 +#include <fldbltin.h>
  630.30 +#endif
  630.31 +#if !defined(__PRNINF_H__)
  630.32 +#include <prninf.h>
  630.33 +#endif
  630.34 +
  630.35 +/** @publishedPartner */
  630.36 +const TInt KErrMorePages=4747; // Leave with this error code to print extra pages in PrintBandL
  630.37 +
  630.38 +/** @internalTechnology */
  630.39 +_LIT( KDefaultPrinterDriverPath, "\\resource\\printers\\" );
  630.40 +
  630.41 +// Classes defined //
  630.42 +class CPrintSetup;
  630.43 +//
  630.44 +
  630.45 +// Forward Reference
  630.46 +class CPreviewProcess;
  630.47 +class CPrintProcess;
  630.48 +class CPdrModelList;
  630.49 +class CPdrDevice;
  630.50 +class CHeaderFooter;
  630.51 +class TPageSpec;
  630.52 +class RReadStream;
  630.53 +class RWriteStream;
  630.54 +class MPageRegionPrinter;
  630.55 +class RFs;
  630.56 +class CPrinterDriver;
  630.57 +class CPrinterDriverUI;
  630.58 +//
  630.59 +
  630.60 +class CPrintSetup : public CBase, private MFieldPageNumInfo
  630.61 +/** Print setup information.
  630.62 +
  630.63 +This class stores the information needed to set up, start and stop a print 
  630.64 +job. This includes the target printer device, the page margins and 
  630.65 +the header and footer. The page specification, (page orientation and page 
  630.66 +dimensions) can be set via the printer device.
  630.67 +
  630.68 +Print setup information is associated with a document and is stored as part 
  630.69 +of the persistent form of the document. Print parameters on the other hand, 
  630.70 +(class TPrintParameters) are associated with a particular print request, 
  630.71 +not with the document itself, so are not part of the print setup information. 
  630.72 +
  630.73 +@publishedAll
  630.74 +@released */
  630.75 +	{
  630.76 +public:
  630.77 +	IMPORT_C static CPrintSetup* NewL();
  630.78 +	IMPORT_C virtual ~CPrintSetup();
  630.79 +	//
  630.80 +	// printer model selection/control functions
  630.81 +	IMPORT_C void AddPrinterDriverDirL(const TDesC& aDriverDir);
  630.82 +	IMPORT_C CPrinterModelList* ModelNameListL(RFs& aFs);
  630.83 +	IMPORT_C void FreeModelList();
  630.84 +	IMPORT_C void CreatePrinterDeviceL(TInt aModelIndex); // requires ModelList to exist
  630.85 +	IMPORT_C void CreatePrinterDeviceL(TUid aModelUid,RFs& aFs);
  630.86 +	IMPORT_C CPrinterDevice* PrinterDevice()const;
  630.87 +	IMPORT_C CPrinterDriverUI* CreatePrinterDriverUIL(); // ownership is transfered to the caller
  630.88 +	//
  630.89 +	// print functions
  630.90 +	IMPORT_C void EndPrint();
  630.91 +	IMPORT_C TInt StartPrintL(const TPrintParameters& aPrintParams,MPageRegionPrinter& aBodyPrinter,
  630.92 +				CPrinterPort* aPort,MPrintProcessObserver* anObserver);
  630.93 +	IMPORT_C TInt StartPreviewPrintL(const TPrintParameters& aPrintParams,MPageRegionPrinter& aBodyPrinter,
  630.94 +				MPrintProcessObserver* anObserver,CGraphicsDevice& aPreviewDev,const TRect& aHeaderRectInPixels,
  630.95 +				const TRect& aFooterRectInPixels,TInt aNumBands);
  630.96 +	//
  630.97 +	// accessors
  630.98 +	inline CHeaderFooter* Header()const;
  630.99 +	inline CHeaderFooter* Footer()const;
 630.100 +	//
 630.101 +	// persistence
 630.102 +	IMPORT_C TStreamId StoreL(CStreamStore& aStore)const;
 630.103 +	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aStreamId,const MFieldFileNameInfo* aFileNameInfo=NULL,const MFieldNumPagesInfo* aNumPagesInfo=NULL,MPictureFactory* aFactory=NULL);
 630.104 +	IMPORT_C void StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap)const;
 630.105 +	IMPORT_C void RestoreComponentsL(const CStreamStore& aStore,const MFieldFileNameInfo* aFileNameInfo=NULL,const MFieldNumPagesInfo* aNumPagesInfo=NULL,MPictureFactory* aFactory=NULL);
 630.106 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 630.107 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 630.108 +	//
 630.109 +private:
 630.110 +	CPrintSetup();
 630.111 +	void ConstructL();
 630.112 +	void DoStartPrintL(const TPrintParameters& aPrintParams,MPageRegionPrinter& aBodyPrinter,MPrintProcessObserver* aObserver,CPrinterPort* aPort);
 630.113 +	void InitializePrintingL(CGraphicsDevice* aPrinterDev,const TPrintParameters& aPrintParams,MPrintProcessObserver* aObserver);
 630.114 +	void InitializePrintingL(const TPrintParameters& aPrintParams,MPrintProcessObserver* aObserver,
 630.115 +									 const TRect& aHeaderRectInPixels,const TRect& aFooterRectInPixels);
 630.116 +	// from MFieldPageNumInfo
 630.117 +	TInt UpdateFieldPageNum()const;
 630.118 +public:
 630.119 +	// Info regarding print setup etc.
 630.120 +	/** The header and footer offset and the width of the four margins. 
 630.121 +	
 630.122 +	All measurements are in twips.
 630.123 +	
 630.124 +	@see TPageMargins */
 630.125 +	TPageMargins iPageMarginsInTwips;
 630.126 +	/** The number of the first page in the document.
 630.127 +	
 630.128 +	This value is used for printing or displaying page numbering. Note that all 
 630.129 +	other page numbering is zero indexed, to preserve independence from user-defined 
 630.130 +	page numbering. */
 630.131 +	TInt iNumOfFirstPage; // value to start page numbering at
 630.132 +private:
 630.133 +	enum {
 630.134 +		ENumberFirstPage = 0x0001,
 630.135 +		};
 630.136 +private:
 630.137 +	CHeaderFooter* iHeader;
 630.138 +	CHeaderFooter* iFooter;
 630.139 +	CPrinterDriver* iPrinterDriver; // the target printer driver
 630.140 +	CPreviewProcess* iPrintProcess;
 630.141 +	CPdrModelList* iModelList;
 630.142 +	MPrintProcessObserver* iPrintObserver;
 630.143 +	TPrintParameters iPrintParams; // not persisted
 630.144 +	CArrayFixSeg<TFileName>* iDriverDirList;
 630.145 +	};
 630.146 +
 630.147 +
 630.148 +//
 630.149 +// inlines
 630.150 +//
 630.151 +
 630.152 +inline CHeaderFooter* CPrintSetup::Header()const
 630.153 +/** Gets the header.
 630.154 +
 630.155 +The CPrintSetup object owns the header and footer. CPrintSetup implements 
 630.156 +the MFieldPageNumInfo interface, which allows page numbering to be easily 
 630.157 +added to fields.
 630.158 +
 630.159 +@return The header. */
 630.160 +	{ return iHeader; }
 630.161 +
 630.162 +inline CHeaderFooter* CPrintSetup::Footer()const
 630.163 +/** Gets the footer.
 630.164 +
 630.165 +@return The footer. */
 630.166 +	{ return iFooter; }
 630.167 +
 630.168 +
 630.169 +
 630.170 +
 630.171 +#endif
   631.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   631.2 +++ b/epoc32/include/mw/prnuids.h	Wed Mar 31 12:27:01 2010 +0100
   631.3 @@ -0,0 +1,32 @@
   631.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   631.5 +// All rights reserved.
   631.6 +// This component and the accompanying materials are made available
   631.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   631.8 +// which accompanies this distribution, and is available
   631.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  631.10 +//
  631.11 +// Initial Contributors:
  631.12 +// Nokia Corporation - initial contribution.
  631.13 +//
  631.14 +// Contributors:
  631.15 +//
  631.16 +// Description:
  631.17 +//
  631.18 +
  631.19 +#ifndef __PRNUIDS_H__
  631.20 +#define __PRNUIDS_H__
  631.21 +
  631.22 +#if !defined(__E32STD_H__)
  631.23 +#include <e32std.h>
  631.24 +#endif
  631.25 +
  631.26 +
  631.27 +/**
  631.28 +@publishedAll
  631.29 +@released
  631.30 +*/
  631.31 +// Uid of the stream in which CPrintSetup data should be stored
  631.32 +const TUid KUidPrintSetupStream={268435717};
  631.33 +
  631.34 +
  631.35 +#endif
   632.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   632.2 +++ b/epoc32/include/mw/remconbatterytarget.h	Wed Mar 31 12:27:01 2010 +0100
   632.3 @@ -0,0 +1,83 @@
   632.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   632.5 +// All rights reserved.
   632.6 +// This component and the accompanying materials are made available
   632.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   632.8 +// which accompanies this distribution, and is available
   632.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  632.10 +//
  632.11 +// Initial Contributors:
  632.12 +// Nokia Corporation - initial contribution.
  632.13 +//
  632.14 +// Contributors:
  632.15 +//
  632.16 +// Description:
  632.17 +//
  632.18 +
  632.19 +
  632.20 +
  632.21 +/**
  632.22 + @file
  632.23 + @publishedAll
  632.24 + @released  
  632.25 +*/
  632.26 +
  632.27 +#ifndef REMCONBATTERYTARGET_H
  632.28 +#define REMCONBATTERYTARGET_H
  632.29 +
  632.30 +#include <e32base.h>
  632.31 +#include <remcon/remconinterfacebase.h>
  632.32 +#include <remcon/remconinterfaceif.h>
  632.33 +
  632.34 +class MRemConBatteryTargetObserver;
  632.35 +class MRemConCoreApiTargetObserver;
  632.36 +class CRemConInterfaceSelector;
  632.37 +
  632.38 +/**
  632.39 +Client-instantiable type supporting sending Battery Status responses.
  632.40 +*/
  632.41 +NONSHARABLE_CLASS(CRemConBatteryApiTarget) : public CRemConInterfaceBase, 
  632.42 +								          		public MRemConInterfaceIf
  632.43 +	{
  632.44 +public:
  632.45 +	/**
  632.46 +	Factory function.
  632.47 +	@see CRemConInterfaceSelector
  632.48 +	@see MRemConBatteryTargetObserver
  632.49 +	@param aInterfaceSelector The interface selector. The client must have 
  632.50 +	created one of these first.
  632.51 +	@param aObserver The observer of this interface.
  632.52 +	@return A new CRemConBatteryApiTarget, owned by the interface selector.
  632.53 +	*/
  632.54 +	IMPORT_C static CRemConBatteryApiTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  632.55 +		MRemConBatteryTargetObserver& aObserver);
  632.56 +	
  632.57 +	/** Destructor */
  632.58 +	IMPORT_C ~CRemConBatteryApiTarget();
  632.59 +
  632.60 +private:
  632.61 +	/** 
  632.62 +	Constructor.
  632.63 +	@param aInterfaceSelector The interface selector.
  632.64 +	@param aObserver The observer of this interface.
  632.65 +	*/
  632.66 +	CRemConBatteryApiTarget(CRemConInterfaceSelector& aInterfaceSelector, 
  632.67 +		MRemConBatteryTargetObserver& aObserver);
  632.68 +
  632.69 +	void ConstructL();
  632.70 +
  632.71 +private: // from CRemConInterfaceBase
  632.72 +	TAny* GetInterfaceIf(TUid aUid);
  632.73 +
  632.74 +private: // from MRemConInterfaceIf
  632.75 +	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
  632.76 +
  632.77 +private: // unowned
  632.78 +	MRemConBatteryTargetObserver& iObserver;
  632.79 +
  632.80 +private: // owned
  632.81 +	CBufFlat*       iOutData;
  632.82 +	
  632.83 +	
  632.84 +	};
  632.85 +
  632.86 +#endif // REMCONBATTERYTARGET_H
   633.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   633.2 +++ b/epoc32/include/mw/remconbatterytargetobserver.h	Wed Mar 31 12:27:01 2010 +0100
   633.3 @@ -0,0 +1,46 @@
   633.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   633.5 +// All rights reserved.
   633.6 +// This component and the accompanying materials are made available
   633.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   633.8 +// which accompanies this distribution, and is available
   633.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  633.10 +//
  633.11 +// Initial Contributors:
  633.12 +// Nokia Corporation - initial contribution.
  633.13 +//
  633.14 +// Contributors:
  633.15 +//
  633.16 +// Description:
  633.17 +//
  633.18 +
  633.19 +
  633.20 +
  633.21 +/**
  633.22 + @file
  633.23 + @publishedAll
  633.24 + @released
  633.25 +*/
  633.26 +
  633.27 +#ifndef REMCONBATTERYTARGETOBSERVER_H
  633.28 +#define REMCONBATTERYTARGETOBSERVER_H
  633.29 +
  633.30 +#include <e32base.h>
  633.31 +#include <remcon/remconbattery.h>
  633.32 +
  633.33 +/**
  633.34 +Clients must implement this interface in order to instantiate objects of type 
  633.35 +CRemConBatteryTarget. This interface passes incoming commands from RemCon to 
  633.36 +the client. 
  633.37 +*/
  633.38 +class MRemConBatteryTargetObserver
  633.39 +	{
  633.40 +public:
  633.41 +	/** 
  633.42 +	A 'InformBatteryStatusOfCT' has been received.
  633.43 +	@param aBatteryStatus The current battery status.
  633.44 +	*/
  633.45 +	virtual void MrcbstoBatteryStatus(TControllerBatteryStatus& aBatteryStatus) = 0;
  633.46 +
  633.47 +	};
  633.48 +
  633.49 +#endif // REMCONBATTERYSTATUSTARGETOBSERVER_H
   634.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   634.2 +++ b/epoc32/include/mw/remcongroupnavigationtarget.h	Wed Mar 31 12:27:01 2010 +0100
   634.3 @@ -0,0 +1,106 @@
   634.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   634.5 +// All rights reserved.
   634.6 +// This component and the accompanying materials are made available
   634.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   634.8 +// which accompanies this distribution, and is available
   634.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  634.10 +//
  634.11 +// Initial Contributors:
  634.12 +// Nokia Corporation - initial contribution.
  634.13 +//
  634.14 +// Contributors:
  634.15 +//
  634.16 +// Description:
  634.17 +//
  634.18 +
  634.19 +
  634.20 +
  634.21 +/**
  634.22 + @file
  634.23 + @publishedAll
  634.24 + @released
  634.25 +*/
  634.26 +
  634.27 +#ifndef REMCONGROUPNAVIGATIONTARGET_H
  634.28 +#define REMCONGROUPNAVIGATIONTARGET_H
  634.29 +
  634.30 +#include <e32base.h>
  634.31 +#include <s32mem.h>
  634.32 +#include <remconcoreapi.h>
  634.33 +#include <remcon/avrcpspec.h>
  634.34 +
  634.35 +#include <remcon/remcongroupnavigation.h>
  634.36 +#include <remcon/remconinterfacebase.h>
  634.37 +#include <remcon/remconinterfaceif.h>
  634.38 +
  634.39 +class MRemConGroupNavigationTargetObserver;
  634.40 +class CRemConInterfaceSelector;
  634.41 +
  634.42 +/**
  634.43 +Client-instantiable type supporting sending Battery Status responses.
  634.44 +*/
  634.45 +NONSHARABLE_CLASS(CRemConGroupNavigationApiTarget) : public CRemConInterfaceBase, 
  634.46 +								          		public MRemConInterfaceIf
  634.47 +	{
  634.48 +public:
  634.49 +	/**
  634.50 +	Factory function.
  634.51 +	@see CRemConInterfaceSelector
  634.52 +	@param aInterfaceSelector The interface selector. The client must have 
  634.53 +	created one of these first.
  634.54 +	@param aObserver The observer of this interface.
  634.55 +	@return A new CRemConGroupNavigationApiTarget, owned by the interface selector.
  634.56 +	*/
  634.57 +	IMPORT_C static CRemConGroupNavigationApiTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  634.58 +		MRemConGroupNavigationTargetObserver& aObserver);
  634.59 +	
  634.60 +	/** Destructor */
  634.61 +	IMPORT_C ~CRemConGroupNavigationApiTarget();
  634.62 +
  634.63 +public:
  634.64 +	/** Send a 'next group' response.
  634.65 +	Called by the client after receiving a MRemConGroupNavigationTargetObserver::MrcgntoNextGroup().
  634.66 +	@param aStatus Used by RemCon to indicate completion of the send request.
  634.67 +	aStatus may be NULL if no completion indication required.
  634.68 +	@param aError The response error.
  634.69 +	*/
  634.70 +	IMPORT_C void NextGroupResponse(TRequestStatus*& aStatus, TInt aError);
  634.71 +
  634.72 +	/** Send a 'previous group' response.
  634.73 +	Called by the client after receiving a MRemConGroupNavigationTargetObserver::MrcgntoPreviousGroup().
  634.74 +	@param aStatus Used by RemCon to indicate completion of the send request.
  634.75 +	aStatus may be NULL if no completion indication required.
  634.76 +	@param aError The response error.
  634.77 +	*/
  634.78 +	IMPORT_C void PreviousGroupResponse(TRequestStatus*& aStatus, TInt aError);
  634.79 +
  634.80 +private:
  634.81 +	/** 
  634.82 +	Constructor.
  634.83 +	@param aInterfaceSelector The interface selector.
  634.84 +	@param aObserver The observer of this interface.
  634.85 +	*/
  634.86 +	CRemConGroupNavigationApiTarget(CRemConInterfaceSelector& aInterfaceSelector, 
  634.87 +		MRemConGroupNavigationTargetObserver& aObserver);
  634.88 +
  634.89 +	void SendGroupResponse(TGroupNavigationPassthroughOperationIds aId, TRequestStatus*& aStatus, TInt aError);
  634.90 +
  634.91 +	void ConstructL();
  634.92 +
  634.93 +private: // from CRemConInterfaceBase
  634.94 +	TAny* GetInterfaceIf(TUid aUid);
  634.95 +
  634.96 +private: // from MRemConInterfaceIf
  634.97 +	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
  634.98 +
  634.99 +private: // unowned
 634.100 +	MRemConGroupNavigationTargetObserver& iObserver;
 634.101 +
 634.102 +private: // owned
 634.103 +	CBufFlat*		iOutData;
 634.104 +	TPtr8			iPtr;
 634.105 +	RBufWriteStream iStream;
 634.106 +			
 634.107 +	};
 634.108 +
 634.109 +#endif // REMCONGROUPNAVIGATIONTARGET_H
   635.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   635.2 +++ b/epoc32/include/mw/remcongroupnavigationtargetobserver.h	Wed Mar 31 12:27:01 2010 +0100
   635.3 @@ -0,0 +1,54 @@
   635.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   635.5 +// All rights reserved.
   635.6 +// This component and the accompanying materials are made available
   635.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   635.8 +// which accompanies this distribution, and is available
   635.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  635.10 +//
  635.11 +// Initial Contributors:
  635.12 +// Nokia Corporation - initial contribution.
  635.13 +//
  635.14 +// Contributors:
  635.15 +//
  635.16 +// Description:
  635.17 +//
  635.18 +
  635.19 +
  635.20 +
  635.21 +/**
  635.22 + @file
  635.23 + @publishedAll
  635.24 + @released
  635.25 +*/
  635.26 +
  635.27 +#ifndef REMCONGROUPNAVIGATIONTARGETOBSERVER_H
  635.28 +#define REMCONGROUPNAVIGATIONTARGETOBSERVER_H
  635.29 +
  635.30 +#include <e32base.h>
  635.31 +#include <remconcoreapi.h>
  635.32 +
  635.33 +/**
  635.34 +Clients must implement this interface in order to instantiate objects of type 
  635.35 +CRemConGroupNavigation. This interface passes incoming commands from RemCon to 
  635.36 +the client. 
  635.37 +*/
  635.38 +class MRemConGroupNavigationTargetObserver
  635.39 +	{
  635.40 +public:
  635.41 +	/** 
  635.42 +	A 'Next Group' has been received.
  635.43 +	@see TRemConCoreApiButtonAction
  635.44 +	@param aButtonAct The button action associated with the command.
  635.45 +	*/
  635.46 +	virtual void MrcgntoNextGroup(TRemConCoreApiButtonAction aButtonAct) = 0;
  635.47 +	
  635.48 +	/** 
  635.49 +	A 'Previous Group' has been received.
  635.50 +	@see TRemConCoreApiButtonAction
  635.51 +	@param aButtonAct The button action associated with the command.
  635.52 +	*/
  635.53 +	virtual void MrcgntoPreviousGroup(TRemConCoreApiButtonAction aButtonAct) =0;
  635.54 +
  635.55 +	};
  635.56 +
  635.57 +#endif // REMCONGROUPNAVIGATIONTARGETOBSERVER_H
   636.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   636.2 +++ b/epoc32/include/mw/remconmediainformationtarget.h	Wed Mar 31 12:27:01 2010 +0100
   636.3 @@ -0,0 +1,128 @@
   636.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   636.5 +// All rights reserved.
   636.6 +// This component and the accompanying materials are made available
   636.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   636.8 +// which accompanies this distribution, and is available
   636.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  636.10 +//
  636.11 +// Initial Contributors:
  636.12 +// Nokia Corporation - initial contribution.
  636.13 +//
  636.14 +// Contributors:
  636.15 +//
  636.16 +// Description:
  636.17 +//
  636.18 +
  636.19 +
  636.20 +
  636.21 +/**
  636.22 + @file
  636.23 + @publishedAll
  636.24 + @released
  636.25 +*/
  636.26 +
  636.27 +#ifndef REMCONMEDIAINFORMATIONTARGET_H
  636.28 +#define REMCONMEDIAINFORMATIONTARGET_H
  636.29 +
  636.30 +#include <e32base.h>
  636.31 +#include <remcon/remconinterfacebase.h>
  636.32 +#include <remcon/remconinterfaceif.h>
  636.33 +#include <remcon/mediainformation.h>
  636.34 +#include <remconmediainformationtargetobserver.h>
  636.35 +
  636.36 +class CRemConInterfaceSelector;
  636.37 +
  636.38 +NONSHARABLE_CLASS(CRemConMediaInformationQueuedMessage): public CBase
  636.39 +	{
  636.40 +public:
  636.41 +	static CRemConMediaInformationQueuedMessage* NewL(const TDesC8& aData);
  636.42 +	~CRemConMediaInformationQueuedMessage();
  636.43 +	
  636.44 +	const TDesC8& Data();
  636.45 +private:
  636.46 +	CRemConMediaInformationQueuedMessage();
  636.47 +	void ConstructL(const TDesC8& aData);
  636.48 +public:
  636.49 +	TSglQueLink iLink;
  636.50 +private:
  636.51 +	RBuf8 iData;
  636.52 +	};
  636.53 +
  636.54 +/**
  636.55 +Client-instantiable type supporting sending media information.
  636.56 +*/
  636.57 +NONSHARABLE_CLASS(CRemConMediaInformationTarget) : public CRemConInterfaceBase, 
  636.58 +								          		public MRemConInterfaceIf
  636.59 +	{
  636.60 +public:
  636.61 +
  636.62 +	/**
  636.63 +	Factory function.
  636.64 +	@param aInterfaceSelector The interface selector. The client must have 
  636.65 +	created one of these first.
  636.66 +	@param aObserver The observer of this interface.
  636.67 +	@return A new CRemConMediaInformationTarget, owned by the interface selector.
  636.68 +	*/
  636.69 +	IMPORT_C static CRemConMediaInformationTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  636.70 +		MRemConMediaInformationTargetObserver& aObserver);
  636.71 +	
  636.72 +	/** Destructor */
  636.73 +	IMPORT_C ~CRemConMediaInformationTarget();
  636.74 +
  636.75 +public:
  636.76 +	/** Called by the client in response to a MrcmitoGetCurrentlyPlayingMetadata() call.
  636.77 +	Each call provides one of the attribute values requested.
  636.78 +	This is repeatedly called until all attributes requested have been supplied and then followed by Completed().
  636.79 +	@param aAttribute The ID of the attribute supplied.
  636.80 +	@param aValue A reference to a descriptor containing the attribute data.  
  636.81 +	This must be valid until Completed() has been called. 
  636.82 +	@see MRemConMediaInformationTargetObserver::MrcmitoGetCurrentlyPlayingMetadata()
  636.83 +	@see CRemConMediaInformationTarget::Completed()
  636.84 +	*/
  636.85 +	IMPORT_C TInt AttributeValue( TMediaAttributeId aAttributeId, TDesC8& aAttributeData);
  636.86 +	
  636.87 +	/** Signal that all attributes requested by MrcmitoGetCurrentlyPlayingMetadata() have been supplied
  636.88 +	using the AttributeValue() method.
  636.89 +	@see MRemConMediaInformationTargetObserver::MrcmitoGetCurrentlyPlayingMetadata()
  636.90 +	@see CRemConMediaInformationTarget::AttributeValue()
  636.91 +	*/
  636.92 +	IMPORT_C void Completed();
  636.93 +	
  636.94 +private:
  636.95 +	/** 
  636.96 +	Constructor.
  636.97 +	@param aInterfaceSelector The interface selector.
  636.98 +	@param aObserver The observer of this interface.
  636.99 +	*/
 636.100 +	CRemConMediaInformationTarget(CRemConInterfaceSelector& aInterfaceSelector, 
 636.101 +		MRemConMediaInformationTargetObserver& aObserver);
 636.102 +
 636.103 +	void ConstructL();
 636.104 +
 636.105 +private: // from CRemConInterfaceBase
 636.106 +	TAny* GetInterfaceIf(TUid aUid);
 636.107 +
 636.108 +private: // from MRemConInterfaceIf
 636.109 +	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
 636.110 +
 636.111 +private: // utility
 636.112 +	void SendError(TInt aError);
 636.113 +	void ProcessMessage(const TDesC8& aData);
 636.114 +	
 636.115 +	static int NextMessageCb(TAny* aThis);
 636.116 +	void DoNextMessage();
 636.117 +private: // unowned
 636.118 +	MRemConMediaInformationTargetObserver& iObserver;
 636.119 +
 636.120 +private: // owned
 636.121 +	RRemConGetElementAttributesResponse iResponse;
 636.122 +
 636.123 +	RArray<TMediaAttributeId>  	iMediaAttributeIDs;
 636.124 +	TMediaAttributeIter 		iAttributeIterator;
 636.125 +	TBool						iInProgress;
 636.126 +	TSglQue<CRemConMediaInformationQueuedMessage> iMsgQueue;
 636.127 +	
 636.128 +	CAsyncCallBack* iNextMessageCallBack;
 636.129 +	};
 636.130 +
 636.131 +#endif // REMCONMEDIAINFORMATIONTARGET_H
   637.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   637.2 +++ b/epoc32/include/mw/remconmediainformationtargetobserver.h	Wed Mar 31 12:27:01 2010 +0100
   637.3 @@ -0,0 +1,77 @@
   637.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   637.5 +// All rights reserved.
   637.6 +// This component and the accompanying materials are made available
   637.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   637.8 +// which accompanies this distribution, and is available
   637.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  637.10 +//
  637.11 +// Initial Contributors:
  637.12 +// Nokia Corporation - initial contribution.
  637.13 +//
  637.14 +// Contributors:
  637.15 +//
  637.16 +// Description:
  637.17 +//
  637.18 +
  637.19 +
  637.20 +
  637.21 +/**
  637.22 + @file
  637.23 + @publishedAll
  637.24 + @released
  637.25 +*/
  637.26 +
  637.27 +#ifndef REMCONMEDIAINFORMATIONTARGETOBSERVER_H
  637.28 +#define REMCONMEDIAINFORMATIONTARGETOBSERVER_H
  637.29 +
  637.30 +#include <e32base.h>
  637.31 +
  637.32 +enum TMediaAttributeId
  637.33 +	{
  637.34 +	ETitleOfMedia 			=0x1,
  637.35 +	ENameOfArtist			=0x2,
  637.36 +	ENameOfAlbum			=0x3,
  637.37 +	ETrackNumber			=0x4,		/* for example the CD track number */
  637.38 +	ENumberOfTracks			=0x5,		/* for example the total track number of the CD */
  637.39 +	EGenre					=0x6,
  637.40 +	EPlayingTime			=0x7
  637.41 +	};
  637.42 +
  637.43 +/**
  637.44 + * Provide an iterator wrapper class 
  637.45 + */
  637.46 +class TMediaAttributeIter
  637.47 +	{
  637.48 +public:
  637.49 +	TMediaAttributeIter(RArray<TMediaAttributeId>& aMediaAttributeIDs);
  637.50 +	IMPORT_C void Start();
  637.51 +	IMPORT_C TBool Next(TMediaAttributeId& aId);
  637.52 +	
  637.53 +private:
  637.54 +	RArray<TMediaAttributeId>& iMediaAttributeIDs;
  637.55 +	TInt iterator;
  637.56 +	};
  637.57 +
  637.58 +
  637.59 +/**
  637.60 +Clients must implement this interface in order to instantiate objects of type 
  637.61 +CRemConMediaInformationTarget. This interface passes incoming commands from RemCon to 
  637.62 +the client. 
  637.63 +*/
  637.64 +NONSHARABLE_CLASS(MRemConMediaInformationTargetObserver)
  637.65 +	{
  637.66 +public:
  637.67 +
  637.68 +	/**
  637.69 +	For each element in aAttributeList for which the requested Metadata is available,
  637.70 +	the client shall respond by calling CRemConMediaInformationTarget::AttributeValue(). 
  637.71 +	After all attributes have been supplied the client shall call CRemConMediaInformationTarget::Completed().
  637.72 +	@param aAttributeList A CMediaAttributeIDs containing a list of TMediaAttributeIds requested by the controller
  637.73 +	@see CRemConMediaInformationTarget::AttributeValue()
  637.74 +	@see CRemConMediaInformationTarget::Completed()
  637.75 +	*/
  637.76 +	virtual void MrcmitoGetCurrentlyPlayingMetadata( TMediaAttributeIter& aAttributeIter ) = 0;
  637.77 +
  637.78 +	};
  637.79 +
  637.80 +#endif // REMCONMEDIAINFORMATIONTARGETOBSERVER_H
   638.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   638.2 +++ b/epoc32/include/mw/remconstatusapicontroller.h	Wed Mar 31 12:27:01 2010 +0100
   638.3 @@ -0,0 +1,92 @@
   638.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   638.5 +// All rights reserved.
   638.6 +// This component and the accompanying materials are made available
   638.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   638.8 +// which accompanies this distribution, and is available
   638.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  638.10 +//
  638.11 +// Initial Contributors:
  638.12 +// Nokia Corporation - initial contribution.
  638.13 +//
  638.14 +// Contributors:
  638.15 +//
  638.16 +// Description:
  638.17 +//
  638.18 +
  638.19 +
  638.20 +
  638.21 +/**
  638.22 + @file
  638.23 + @publishedAll
  638.24 + @released
  638.25 +*/
  638.26 +
  638.27 +#ifndef REMCONSTATUSAPICONTROLLER_H
  638.28 +#define REMCONSTATUSAPICONTROLLER_H
  638.29 +
  638.30 +#include <e32base.h>
  638.31 +#include <remcon/remconinterfacebase.h>
  638.32 +#include <remcon/remconinterfaceif.h>
  638.33 +#include <remconstatusapi.h>
  638.34 +
  638.35 +_LIT(KStatusApiPanicName, "Status Api Panic");
  638.36 +
  638.37 +class MRemConStatusApiControllerObserver;
  638.38 +class CRemConInterfaceSelector;
  638.39 +
  638.40 +/**
  638.41 +A controller which sends Status API commands.
  638.42 +@publishedAll
  638.43 +@released
  638.44 +*/
  638.45 +NONSHARABLE_CLASS(CRemConStatusApiController) : public CRemConInterfaceBase,
  638.46 +								                public MRemConInterfaceIf
  638.47 +	{
  638.48 +private:
  638.49 +	enum TStatusApiPanic
  638.50 +		{
  638.51 +		EStatusApiCommandDataSectionTooLong,
  638.52 +		};
  638.53 +
  638.54 +public:
  638.55 +	IMPORT_C static CRemConStatusApiController* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  638.56 +		MRemConStatusApiControllerObserver& aObserver);
  638.57 +	IMPORT_C ~CRemConStatusApiController();
  638.58 +
  638.59 +	// Commands
  638.60 +	IMPORT_C void UnitInfo(TRequestStatus& aStatus, TUint& aNumRemotes);
  638.61 +	IMPORT_C void SubunitInfo(TRequestStatus& aStatus, TUint& aNumRemotes);
  638.62 +
  638.63 +private:
  638.64 +	CRemConStatusApiController(CRemConInterfaceSelector& aInterfaceSelector, 
  638.65 +		MRemConStatusApiControllerObserver& aObserver);
  638.66 +
  638.67 +	// from CRemConInterfaceBase
  638.68 +	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
  638.69 +	TAny* GetInterfaceIf(TUid aUid);
  638.70 +	
  638.71 +	// Utility functions
  638.72 +	void SetUnitInfoResponseData(const TDesC8& aCommandData,
  638.73 +		TInt& aVendorId, 
  638.74 +		TInt& aUnit, 
  638.75 +		TInt& aUnitType, 
  638.76 +		TInt& aExtendedUnitType);
  638.77 +		
  638.78 +	void SetSubunitInfoResponseData(const TDesC8& aCommandData,
  638.79 +		TInt& aPage, 
  638.80 +		TInt& aExtension, 
  638.81 +		TPtrC8& aPageData);
  638.82 +		
  638.83 +	void ReadCommandDataToInt(const TDesC8& aCommandData, 
  638.84 +		TInt aOffset, 
  638.85 +		TInt aLength, 
  638.86 +		TInt& aValue);
  638.87 +		
  638.88 +	static void Panic(TStatusApiPanic aPanic);
  638.89 +
  638.90 +private:
  638.91 +	MRemConStatusApiControllerObserver& iObserver;
  638.92 +	TBuf8<KRemConStatusApiMaxOperationSpecificDataSize> iOutData;
  638.93 +	};
  638.94 +
  638.95 +#endif // REMCONSTATUSAPICONTROLLER_H
   639.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   639.2 +++ b/epoc32/include/mw/remconstatusapicontrollerobserver.h	Wed Mar 31 12:27:01 2010 +0100
   639.3 @@ -0,0 +1,83 @@
   639.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   639.5 +// All rights reserved.
   639.6 +// This component and the accompanying materials are made available
   639.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   639.8 +// which accompanies this distribution, and is available
   639.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  639.10 +//
  639.11 +// Initial Contributors:
  639.12 +// Nokia Corporation - initial contribution.
  639.13 +//
  639.14 +// Contributors:
  639.15 +//
  639.16 +// Description:
  639.17 +//
  639.18 +
  639.19 +
  639.20 +
  639.21 +/**
  639.22 + @file
  639.23 + @publishedAll
  639.24 + @released
  639.25 +*/
  639.26 +
  639.27 +#ifndef REMCONSTATUSAPICONTROLLEROBSERVER_H
  639.28 +#define REMCONSTATUSAPICONTROLLEROBSERVER_H
  639.29 +
  639.30 +#include <e32std.h>
  639.31 +
  639.32 +/**
  639.33 +Interface to observe responses from a Status API controller.
  639.34 +@publishedAll
  639.35 +@released
  639.36 +*/
  639.37 +class MRemConStatusApiControllerObserver
  639.38 +	{
  639.39 +public:
  639.40 +	/**	A UnitInfo response has been received. 
  639.41 +	
  639.42 +	For details on the meanings on the fields please refer to the 
  639.43 +	AV/C Digital Interface Command Set General Specification, 
  639.44 +	section 11.2.1.
  639.45 +	
  639.46 +	If all values are zero there was an error with the command.
  639.47 +	@param aVendorId The VendorId
  639.48 +	@param aUnit Unit
  639.49 +	@param aUnitType UnitType
  639.50 +	@param aExtendedUnitType Extended Unit type. This data is only 
  639.51 +		valid if Unit type is 0x1e. The second byte is only valid 
  639.52 +		if the first byte is 0xff.
  639.53 +	*/
  639.54 +	virtual void MrcsacoUnitInfoResponse(TInt aVendorId, 
  639.55 +		TInt aUnit, 
  639.56 +		TInt aUnitType, 
  639.57 +		TInt aExtendedUnitType) = 0;
  639.58 +
  639.59 +	/** A SubunitInfo response has been received. 
  639.60 +	
  639.61 +	For details on the meanings on the fields please
  639.62 +	refer to the AV/C Digital Interface Command Set
  639.63 +	General Specification, section 11.2.2.
  639.64 +	
  639.65 +	If all values are zero there was an error with the command.
  639.66 +	@param aPage Page
  639.67 +	@param aExtension Extension.
  639.68 +	@param aPageData Page Data. This data remains valid only for
  639.69 +		the duration of this call.  If the client wishes to store
  639.70 +		the data it must be copied.
  639.71 +	*/
  639.72 +	virtual void MrcsacoSubunitInfoResponse(TInt aPage,
  639.73 +		TInt aExtension,
  639.74 +		TDesC8& aPageData) = 0;
  639.75 +		
  639.76 +	/**
  639.77 + 	 Returns a null aObject if the extension is not implemented, or 
  639.78 + 	 a pointer to another interface if it is.
  639.79 + 	 
  639.80 +	 @param aInterface UID of the interface to return
  639.81 +	 @param aObject the container for another interface as specified by aInterface
  639.82 +	 */
  639.83 +	IMPORT_C virtual void Mrcsaco_ExtensionInterfaceL(TUid aInterface, void*& aObject);
  639.84 +	};
  639.85 +
  639.86 +#endif // REMCONSTATUSAPICONTROLLEROBSERVER_H
   640.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   640.2 +++ b/epoc32/include/mw/rsendas.h	Wed Mar 31 12:27:01 2010 +0100
   640.3 @@ -0,0 +1,117 @@
   640.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   640.5 +// All rights reserved.
   640.6 +// This component and the accompanying materials are made available
   640.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   640.8 +// which accompanies this distribution, and is available
   640.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  640.10 +//
  640.11 +// Initial Contributors:
  640.12 +// Nokia Corporation - initial contribution.
  640.13 +//
  640.14 +// Contributors:
  640.15 +//
  640.16 +// Description:
  640.17 +//
  640.18 +
  640.19 +#ifndef __RSENDAS_H__
  640.20 +#define __RSENDAS_H__
  640.21 +
  640.22 +#include <e32base.h>
  640.23 +
  640.24 +class CSendAsMessageTypes;
  640.25 +class CSendAsAccounts;
  640.26 +
  640.27 +/**
  640.28 +The default number of message slots available to a session. This determines the
  640.29 +number of outstanding requests the client may have with the server at any one
  640.30 +time.
  640.31 +*/
  640.32 +const TInt KSendAsDefaultMessageSlots = 4;
  640.33 +
  640.34 +/**
  640.35 +Encapsulates a session with the SendAs Server.
  640.36 +
  640.37 +This class allows a user to determine the message types available to the SendAs
  640.38 +server and also provides functionality for clients to filter this list to find 
  640.39 +the UIDs required to create messages.
  640.40 +
  640.41 +@publishedAll
  640.42 +@released
  640.43 +*/
  640.44 +class RSendAs : public RSessionBase
  640.45 +	{
  640.46 +public:
  640.47 +
  640.48 +/**
  640.49 +Defines the condition-checking of message capabilities. These are progressively
  640.50 +added to refine the list of available MTMs.
  640.51 +*/
  640.52 +	enum TSendAsConditionType
  640.53 +		{
  640.54 +		/**
  640.55 +		No MTMs are removed as a result of applying this condition to the
  640.56 +		filtering.
  640.57 +		*/
  640.58 +		ESendAsNoCondition,
  640.59 +		/**
  640.60 +		Only MTMs whose capabilities match the given value will remain as a
  640.61 +		result of applying this condition to the filtering.
  640.62 +		*/
  640.63 +		ESendAsEquals,
  640.64 +		/**
  640.65 +		Only MTMs whose capabilities do not match the given value will remain 
  640.66 +		as a result of applying this condition to the filtering.
  640.67 +		*/
  640.68 +		ESendAsNotEquals,
  640.69 +		/**
  640.70 +		Only MTMs whose capabilities greater than the given value will remain
  640.71 +		as a result of applying this condition to the filtering.
  640.72 +		*/
  640.73 +		ESendAsGreaterThan,
  640.74 +		/**
  640.75 +		Only MTMs whose capabilities less than the given value will remain as a
  640.76 +		result of applying this condition to the filtering.
  640.77 +		*/
  640.78 +		ESendAsLessThan,
  640.79 +		/**
  640.80 +		Only MTMs whose capabilities result non-zero value when bitwise ANDed
  640.81 +		with the given value will remain as a result of applying this condition
  640.82 +		to the filtering.
  640.83 +		*/
  640.84 +		ESendAsBitwiseAnd,
  640.85 +		/**
  640.86 +		Only MTMs whose capabilities result non-zero value when bitwise ORed
  640.87 +		with the given value will remain as a result of applying this condition
  640.88 +		to the filtering.
  640.89 +		*/
  640.90 +		ESendAsBitwiseOr,
  640.91 +		/**
  640.92 +		Only MTMs whose capabilities result non-zero value when bitwise NANDed
  640.93 +		with the given value will remain as a result of applying this condition
  640.94 +		to the filtering.
  640.95 +		*/
  640.96 +		ESendAsBitwiseNand,
  640.97 +		/**
  640.98 +		Only MTMs whose capabilities result non-zero value when bitwise NORed
  640.99 +		with the given value will remain as a result of applying this condition
 640.100 +		to the filtering.
 640.101 +		*/
 640.102 +		ESendAsBitwiseNor
 640.103 +		};
 640.104 +
 640.105 +public:
 640.106 +	IMPORT_C TInt Connect();
 640.107 +	IMPORT_C TInt Connect(TInt aMessageSlots);
 640.108 +	
 640.109 +	IMPORT_C void FilteredMessageTypesL(CSendAsMessageTypes& aMessageTypeInfo);
 640.110 +	IMPORT_C TInt FilterAgainstCapability(TUid aMessageCapability);
 640.111 +	IMPORT_C TInt FilterAgainstCapability(TUid aMessageCapability, TInt aValue, TSendAsConditionType aConditionType);
 640.112 +	IMPORT_C TInt ResetMessageFilter();
 640.113 +	
 640.114 +	IMPORT_C void AvailableAccountsL(TUid aMessageType, CSendAsAccounts& aAccounts);
 640.115 +
 640.116 +private:
 640.117 +	TAny* iAny; // Future proofing.
 640.118 +	};
 640.119 +
 640.120 +#endif	//  __RSENDAS_H__
   641.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   641.2 +++ b/epoc32/include/mw/rsendasmessage.h	Wed Mar 31 12:27:01 2010 +0100
   641.3 @@ -0,0 +1,150 @@
   641.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   641.5 +// All rights reserved.
   641.6 +// This component and the accompanying materials are made available
   641.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   641.8 +// which accompanies this distribution, and is available
   641.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  641.10 +//
  641.11 +// Initial Contributors:
  641.12 +// Nokia Corporation - initial contribution.
  641.13 +//
  641.14 +// Contributors:
  641.15 +//
  641.16 +// Description:
  641.17 +//
  641.18 +
  641.19 +#ifndef __RSENDASMESSAGE_H__
  641.20 +#define __RSENDASMESSAGE_H__
  641.21 +
  641.22 +#include <msvapi.h>
  641.23 +#include <csendasaccounts.h>
  641.24 +#include <cmsvrecipientlist.h>
  641.25 +
  641.26 +class RSendAs;
  641.27 +class CRichText;
  641.28 +class RFile;
  641.29 +
  641.30 +/**
  641.31 +Send as progress
  641.32 +
  641.33 +@publishedAll
  641.34 +@released
  641.35 +*/
  641.36 +typedef CMsvSendOperation::TSendOperationProgress TSendAsProgress;
  641.37 +
  641.38 +/**
  641.39 +Encapsulates creating and sending a message.  This class requires
  641.40 +a connected RSendAs session.
  641.41 +
  641.42 +A client application can have several RSendAsMessage objects created simultaneously.
  641.43 +Each RSendAsMessage object corresponds to a single message.
  641.44 +
  641.45 +With the RSendAsMessage class, a client application can perform the following
  641.46 +operations:
  641.47 +
  641.48 +-Creating and managing a message
  641.49 +
  641.50 +-Modifying a message created using SendAs
  641.51 +
  641.52 +-Sending a message
  641.53 +
  641.54 +-Launching a message editor
  641.55 +
  641.56 +Client applications do not require any capabilities in order to use the RSendAs
  641.57 +and RSendAsMessage APIs. However, if an application does not have the necessary security
  641.58 +capabilities to send a message, the SendAs server ensures that a message is only sent
  641.59 +after the user's authorization.
  641.60 +
  641.61 +A message created using RSendAsMessage can be saved, sent, or passed to the appropriate
  641.62 +message editor. There are two types of send operation:  
  641.63 +
  641.64 +-A confirmed send is forwarded to the UI MTM for the message type. Typically this
  641.65 +results in the user being asked to confirm that the message should be sent.
  641.66 +
  641.67 +-An unconfirmed send fails if the client application does not have the
  641.68 +required capabilities to use the server MTM for the message type.
  641.69 +
  641.70 +There are asynchronous and synchronous forms of these sending methods. Progress information for  
  641.71 +sending is available when the asynchronous forms are used. The synchronous forms, and the
  641.72 +methods for saving the message and for launching it in a message editor, all close the handle to the
  641.73 +RSendAsMessage, so the message cannot be further accessed through the API.
  641.74 +
  641.75 +@publishedAll
  641.76 +@released
  641.77 +*/
  641.78 +class RSendAsMessage : public RSubSessionBase
  641.79 +	{
  641.80 +public:
  641.81 +/**
  641.82 +Defines the recipient types available when adding a recipient to a message
  641.83 +*/
  641.84 +	enum TSendAsRecipientType
  641.85 +		{
  641.86 +		/**
  641.87 +		Designates a 'To' recipient.
  641.88 +		*/
  641.89 +		ESendAsRecipientTo = EMsvRecipientTo,
  641.90 +			
  641.91 +		/**
  641.92 +		Designates a 'Cc' recipient.
  641.93 +		*/
  641.94 +		ESendAsRecipientCc,
  641.95 +		
  641.96 +		/**
  641.97 +		Designates a 'Bcc' recipient.
  641.98 +		*/
  641.99 +		ESendAsRecipientBcc
 641.100 +		};
 641.101 +public:
 641.102 +	IMPORT_C void CreateL(RSendAs& aSendAs, TSendAsAccount aAccount);
 641.103 +	IMPORT_C void CreateL(RSendAs& aSendAs, TUid aMessageType);
 641.104 +	//
 641.105 +	IMPORT_C void SendMessage(TRequestStatus& aStatus);
 641.106 +	IMPORT_C void SendMessageAndCloseL(); // Sends in background
 641.107 +	IMPORT_C void SendMessageConfirmed(TRequestStatus& aStatus);
 641.108 +	IMPORT_C void SendMessageConfirmedAndCloseL(); // Sends in background
 641.109 +	IMPORT_C void LaunchEditorAndCloseL();
 641.110 +	IMPORT_C void SaveMessageAndCloseL();
 641.111 +	//
 641.112 +	IMPORT_C void ProgressL(TSendAsProgress& aProgress);
 641.113 +
 641.114 +	IMPORT_C void SetBodyTextL(const CRichText& aBody);
 641.115 +	IMPORT_C void SetBodyTextL(const TDesC& aBody);
 641.116 +	IMPORT_C void SetSubjectL(const TDesC& aSubject);
 641.117 +	IMPORT_C void SetBioTypeL(TUid aBioType);
 641.118 +	//
 641.119 +	IMPORT_C void AddRecipientL(const TDesC& aAddress, TSendAsRecipientType aRecipientType);
 641.120 +	IMPORT_C void AddRecipientL(const TDesC& aAddress, const TDesC& aAlias, TSendAsRecipientType aRecipientType);
 641.121 +	//
 641.122 +	IMPORT_C void AddAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 641.123 +	IMPORT_C void AddAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TRequestStatus& aStatus);
 641.124 +	IMPORT_C void AddAttachment(const TDesC& aFilePath, TRequestStatus& aStatus);
 641.125 +
 641.126 +	IMPORT_C void AddAttachment(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 641.127 +	IMPORT_C void AddAttachment(RFile& aFile, const TDesC8& aMimeType, TRequestStatus& aStatus);
 641.128 +	IMPORT_C void AddAttachment(RFile& aFile, TRequestStatus& aStatus);
 641.129 +
 641.130 +	IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 641.131 +	IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TRequestStatus& aStatus);
 641.132 +	IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, TRequestStatus& aStatus);
 641.133 +	
 641.134 +	IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile);
 641.135 +	IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType);
 641.136 +	IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset);
 641.137 +	
 641.138 +	//
 641.139 +	IMPORT_C void Cancel();
 641.140 +	IMPORT_C void Close();
 641.141 +	
 641.142 +	/** 
 641.143 +	Sets the character encoding value. The character encoding value options are 7-bit,
 641.144 +	8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding.
 641.145 +	*/
 641.146 +	IMPORT_C void SetCharacterSetL(const TUint aCharset);
 641.147 +
 641.148 +
 641.149 +private:
 641.150 +	TAny* iAny; // Future proofing.
 641.151 +	};
 641.152 +
 641.153 +#endif	//  __RSENDASMESSAGE_H__
   642.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   642.2 +++ b/epoc32/include/mw/rtcp.h	Wed Mar 31 12:27:01 2010 +0100
   642.3 @@ -0,0 +1,248 @@
   642.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   642.5 +// All rights reserved.
   642.6 +// This component and the accompanying materials are made available
   642.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   642.8 +// which accompanies this distribution, and is available
   642.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  642.10 +//
  642.11 +// Initial Contributors:
  642.12 +// Nokia Corporation - initial contribution.
  642.13 +//
  642.14 +// Contributors:
  642.15 +//
  642.16 +// Description:
  642.17 +//
  642.18 +
  642.19 +#ifndef RTCP_H
  642.20 +#define RTCP_H
  642.21 +
  642.22 +#include <e32std.h>
  642.23 +
  642.24 +/** @file
  642.25 +
  642.26 +RTCP is a protocol that only makes sense in the context of RTP, so
  642.27 +the RTCP implementation is an extension of the RTP code, and most
  642.28 +of the relevant classes are defined in rtp.h
  642.29 +*/
  642.30 +
  642.31 +class TRtcpRRItem;
  642.32 +class TRtcpRRPart;
  642.33 +class TRtcpSRPart;
  642.34 +
  642.35 +/**
  642.36 +@publishedPartner
  642.37 +@released
  642.38 +
  642.39 +A handle to an RR (Receiver Report) RTP packet.
  642.40 +
  642.41 +An instance of this class represents the reception report of one host
  642.42 +about another host; it may have come from either a SR (Sender Report) or
  642.43 +a RR (Receiver Report) packet, which may contain
  642.44 +other RRs (Receiver Reports) as well.
  642.45 +
  642.46 +An object of this type is returned from a call to the RRtcpRRPart
  642.47 +indexing operator and specifying the index of the required RR.
  642.48 +
  642.49 +Note that resources accessed thorugh this handle are owned by other objects
  642.50 +and therefore has no Close() member function.
  642.51 +
  642.52 +@see RRtcpRRPart
  642.53 +*/
  642.54 +class RRtcpRRItem 
  642.55 +	{
  642.56 +public:
  642.57 +    /**
  642.58 +    Default constructor.
  642.59 +    */
  642.60 +	IMPORT_C RRtcpRRItem();
  642.61 +
  642.62 +    /**
  642.63 +    Gets the sender's SSRC, i.e. the sender's 32-bit numeric
  642.64 +    synchronisation source identifier.
  642.65 +    
  642.66 +    @return The sender's SSRC.
  642.67 +    */
  642.68 +	IMPORT_C TUint SenderSSRC() const;
  642.69 +
  642.70 +
  642.71 +    /**
  642.72 +    Gets the number of packets lost.
  642.73 +    
  642.74 +    @return The number of packets lost.
  642.75 +    */
  642.76 +	IMPORT_C TUint PacketsLost() const;
  642.77 +
  642.78 +
  642.79 +	/** 
  642.80 +	Gets the SSRC related to this packet.
  642.81 +	
  642.82 +	@return The sender's SSRC.
  642.83 +	*/
  642.84 +	IMPORT_C TUint AboutSSRC() const;
  642.85 +
  642.86 +
  642.87 +	/**
  642.88 +	Gets the number of packets lost, in 256ths of the total number.
  642.89 +	
  642.90 +	@return The number of last packets, in 256ths of the total number.
  642.91 +	*/
  642.92 +	IMPORT_C TUint FractionLost() const;
  642.93 +
  642.94 +
  642.95 +	/**
  642.96 +	Gets the extended highest sequence number recieved.
  642.97 +	
  642.98 +	@return The extended highest sequence number.
  642.99 +	*/
 642.100 +	IMPORT_C TUint ExtendedHighestSequenceNumber() const;
 642.101 +     
 642.102 +     
 642.103 +	/**
 642.104 +	Gets the interarrival jitter value.
 642.105 +	
 642.106 +	@return The interarrival jitter value.
 642.107 +
 642.108 +	*/
 642.109 +	IMPORT_C TUint InterarrivalJitter() const;
 642.110 +
 642.111 +
 642.112 +	/**
 642.113 +	Gets the time of the last received SR (Sender Report)
 642.114 +	
 642.115 +	@return The time of the last received SR.
 642.116 +	*/
 642.117 +	IMPORT_C TUint LastSRTimestamp() const;
 642.118 +
 642.119 +
 642.120 +	/**
 642.121 +    Gets the time between the receipt of the last SR (Sender Report) and 
 642.122 +  	the time when this packet was sent.
 642.123 +  	
 642.124 +  	@return The tme difference in 65,536ths of a second. 
 642.125 +	*/
 642.126 +	IMPORT_C TUint DelaySinceLastSR() const;
 642.127 +
 642.128 +private:
 642.129 +	friend class RRtcpRRPart;
 642.130 +	TRtcpRRItem* iPtr;
 642.131 +	};
 642.132 +
 642.133 +/**
 642.134 +@publishedPartner
 642.135 +@released
 642.136 +
 642.137 +An array containing the most recent RRs (Receiver Reports) from
 642.138 +all hosts who are reporting on our send stream.
 642.139 +
 642.140 +An object of this type is returned by calling RRs() on a handle to
 642.141 +an RTP session (an RRtpSession object).
 642.142 +
 642.143 +@see RRtpSession::RRs()
 642.144 +*/	
 642.145 +class RRtcpRRPart
 642.146 +	{
 642.147 +public:
 642.148 +	IMPORT_C RRtcpRRPart(TRtcpRRPart& aRR);
 642.149 + 	/**
 642.150 +	Gets the number of Receiver Reports.
 642.151 +	
 642.152 +	@return The number fo receiver reports.
 642.153 +	*/
 642.154 +	IMPORT_C TInt Count() const;
 642.155 +
 642.156 +	IMPORT_C TUint SenderSSRC() const;
 642.157 +
 642.158 +	/**
 642.159 +	Gets a specific RR (Receiver Report) as identified by
 642.160 +	the specified index value.
 642.161 +	
 642.162 +	@param aIndex An index value identifying the specific RR.
 642.163 +	              The index is relative to zero, i.e. zero implies
 642.164 +	              the first RR report.
 642.165 +	              The value must not be negative and must be less than
 642.166 +	              the the value returned by Count().
 642.167 +	
 642.168 +	@return A handle to the RR (Receiver Report).
 642.169 +	*/
 642.170 +	IMPORT_C RRtcpRRItem operator [](TInt aIndex) const;
 642.171 +private:
 642.172 +	TRtcpRRPart&		iRRPart;
 642.173 +	};
 642.174 +
 642.175 +/**
 642.176 +@publishedPartner
 642.177 +@released
 642.178 +
 642.179 +A handle to a SR (Sender Report) packet.
 642.180 +
 642.181 +RRs (Receiver Reports) received as part of a SR (Sender Report) are classified
 642.182 +with the RRs. The resources accessed through this handle are owned by 
 642.183 +the receive stream object, a RRtpReceiveStream instance, and therefore has no
 642.184 +Close() member function.
 642.185 +*/
 642.186 +class RRtcpSRPart
 642.187 +	{
 642.188 + public:
 642.189 +    /**
 642.190 +    Default constructor.
 642.191 +    */
 642.192 +	IMPORT_C RRtcpSRPart(TRtcpSRPart& aSr);
 642.193 +
 642.194 +
 642.195 +	/**
 642.196 +	Gets the absolute time when this SR was sent, in TTime format.
 642.197 +	
 642.198 +	@return The time in NTP format. 
 642.199 +	*/
 642.200 +	IMPORT_C void NTPTimestamp(TTime& aTime) const;
 642.201 +
 642.202 +
 642.203 +	/**
 642.204 +	Gets the RTP time when this packet was sent.
 642.205 +	
 642.206 +	Note that RTP time is profile dependant and may have an arbitrary start
 642.207 +	time, but this is useful for tying the SR with the timestamps in the
 642.208 +	data stream 
 642.209 +	
 642.210 +	@return The time when the packet was sent.
 642.211 +	*/
 642.212 +	IMPORT_C TUint RTPTimestamp() const;
 642.213 +
 642.214 +
 642.215 +	/**
 642.216 +	Gets the number of packets that have been sent.
 642.217 +	
 642.218 +	@return The number of packets.
 642.219 +    */
 642.220 +	IMPORT_C TUint PacketCount() const;
 642.221 +
 642.222 +
 642.223 +	/**
 642.224 +	Gets the number of bytes that have been sent.
 642.225 +	
 642.226 +	@return The number of bytes sent.
 642.227 +	*/
 642.228 +	IMPORT_C TUint ByteCount() const;
 642.229 +
 642.230 +
 642.231 +	/**
 642.232 +	Gets the profile-specific extension.
 642.233 +	
 642.234 +	@return An un-modifiable descriptor reference to the extension data.
 642.235 +	*/
 642.236 +	IMPORT_C const TDesC8& Extension();
 642.237 +	
 642.238 +	/**
 642.239 +	// added as Fix to Defect PDEF101761  
 642.240 +	Gets the timestamp when this SR was sent, in seconds and fraction
 642.241 +	
 642.242 +	@ return The time in Seconds  and Fraction
 642.243 +	*/
 642.244 +	IMPORT_C void NTPTimestamp(TUint32& aSec,TUint32& aFrac) const;
 642.245 +
 642.246 +
 642.247 +private:
 642.248 +	TRtcpSRPart& iSrPtr;
 642.249 +	};
 642.250 +
 642.251 +#endif // RTCP_H
   643.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   643.2 +++ b/epoc32/include/mw/rtp.h	Wed Mar 31 12:27:01 2010 +0100
   643.3 @@ -0,0 +1,1352 @@
   643.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   643.5 +// All rights reserved.
   643.6 +// This component and the accompanying materials are made available
   643.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   643.8 +// which accompanies this distribution, and is available
   643.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  643.10 +//
  643.11 +// Initial Contributors:
  643.12 +// Nokia Corporation - initial contribution.
  643.13 +//
  643.14 +// Contributors:
  643.15 +//
  643.16 +// Description:
  643.17 +//
  643.18 +
  643.19 +#ifndef RTP_H
  643.20 +#define RTP_H
  643.21 +
  643.22 +#include <es_sock.h>
  643.23 + 
  643.24 +class TRtpEvent;
  643.25 +class RRtpSession;
  643.26 +class RRtpSendPacket;
  643.27 +class RRtpReceivePacket;
  643.28 +class RRtpReceiveSource;
  643.29 +class RRtpSendSource;
  643.30 +class RRtpHeaderExtension;
  643.31 +class RRtpCSRCs;
  643.32 +class CRtpSession;
  643.33 +class CRtpReceiveSource;
  643.34 +class CRtpSendSource;
  643.35 +class TRtpPacket;
  643.36 +
  643.37 +class RRtcpRRPart;
  643.38 +class RRtcpSRPart;
  643.39 +
  643.40 +/**
  643.41 +@publishedAll
  643.42 +@released
  643.43 +
  643.44 +A set of values that defines the event types that may be handled.
  643.45 +
  643.46 +See all variants of the RegisterEventCallbackL() function. 
  643.47 +
  643.48 +@see TRtpEvent
  643.49 +*/
  643.50 +enum TRtpEventType
  643.51 +	{
  643.52 +	/** 
  643.53 +	A special event type that is interpreted by all of
  643.54 +	the RegisterEventCallbackL() set of functions to mean that the registered
  643.55 +	callback function is to be called for any event except failure events.
  643.56 +    */
  643.57 +	ERtpAnyEvent = 0,
  643.58 +	
  643.59 +	
  643.60 +    /**
  643.61 +    Defines a base value for session events.
  643.62 +   
  643.63 +    All session event types have values that are greater than this.
  643.64 +    */
  643.65 +	ERtpSessionEventBase = 0x100,
  643.66 +	
  643.67 +	
  643.68 +	/**
  643.69 +	An event type that indicates that a session-level error has occurred.
  643.70 +	
  643.71 +	The event status is a standard Symbian OS error code.
  643.72 +	The callback parameter is used to register interest in only one 
  643.73 +	type of error.
  643.74 +	*/
  643.75 +	ERtpSessionFail      = 0x101, 
  643.76 +	
  643.77 +	
  643.78 +	/**
  643.79 +    An event type that indicates that a new stream has been received.
  643.80 +	
  643.81 +	The event status is the	SSRC of the stream.
  643.82 +	*/
  643.83 +	ERtpNewSource        = 0x102,
  643.84 +	
  643.85 +	
  643.86 +	/**
  643.87 +	An event type that indicates that an RTCP RR (Receiver Report) has been
  643.88 +	received.
  643.89 +	
  643.90 +	The event status is the SSRC of the sender.
  643.91 +
  643.92 +	Note - This event type has not been implemented yet.
  643.93 +	*/
  643.94 +	ERtpNewRR            = 0x103,
  643.95 +	
  643.96 +	
  643.97 +	/**
  643.98 +	An event type that indicates that a packet bigger than the expected maximum
  643.99 +	has been received.
 643.100 +	
 643.101 +	When this event occurs, the packet is deleted.
 643.102 +	*/
 643.103 +	ERtpBufferOverflow   = 0x104,
 643.104 +	
 643.105 +	
 643.106 +	/**
 643.107 +	An event type that indicates that a packet has been recived that
 643.108 +	is smaller than its header.
 643.109 +	
 643.110 +	When this event occurs, the packet is deleted.
 643.111 +	*/
 643.112 +	ERtpUndersizedPacket = 0x105,
 643.113 + 
 643.114 + 	
 643.115 +	/**
 643.116 +	Not an event type, but defines the upper limit for session event
 643.117 +	type values.
 643.118 +    */
 643.119 +	ERtpSessionEventEnd  = 0x1ff,
 643.120 +
 643.121 +
 643.122 +    /**
 643.123 +    Not an event type but defines a base value for send stream events.
 643.124 +   
 643.125 +    All send stream event types have values that are greater than this.
 643.126 +    */
 643.127 +	ERtpSendEventBase    = 0x200,
 643.128 +
 643.129 +
 643.130 +	/**
 643.131 +	An event type that indicates that an error has occurred while sending
 643.132 +	a packet.
 643.133 +	
 643.134 +	The event status is a standard Symbian OS error code. The callback parameter
 643.135 +	is used only to register interest in one type of error.
 643.136 +	*/
 643.137 +	ERtpSendFail         = 0x201, 
 643.138 +	
 643.139 +	
 643.140 +	/**
 643.141 +	An event type that indicates that a send packet operation has succeeded.
 643.142 +	*/
 643.143 +	ERtpSendSucceeded    = 0x202,
 643.144 +	
 643.145 +	
 643.146 +	/**
 643.147 +	Not an event type, but defines the upper limit for send stream event 
 643.148 +	type values.
 643.149 +	*/
 643.150 +	ERtpSendEventEnd     = 0x2ff,
 643.151 +
 643.152 +
 643.153 +    /**
 643.154 +    Not an event type but defines a base value for receive stream events.
 643.155 +   
 643.156 +    All receive stream event types have values that are greater than this.
 643.157 +    */
 643.158 +	ERtpSourceEventBase  = 0x300,
 643.159 +	
 643.160 +	
 643.161 +	/**
 643.162 +	An event type that indicates that an error has occurred.
 643.163 +	
 643.164 +    The event status is a standard Symbian OS error code. The callback parameter
 643.165 +    is used only to register interest in one type of error.
 643.166 +    */
 643.167 +	ERtpSourceFail       = 0x301,
 643.168 +	
 643.169 +	
 643.170 +	/**
 643.171 +	An event type that indicates that an in-sequence packet has been received.
 643.172 +	*/
 643.173 +	ERtpPacketReceived   = 0x302,
 643.174 +	
 643.175 +	
 643.176 +	/**
 643.177 +	An event type that indicates that the  codec has changed.
 643.178 +	
 643.179 +	The event status is the new payload type.
 643.180 +	*/
 643.181 +	ERtpCodecChange      = 0x303,
 643.182 +	
 643.183 +	
 643.184 +	/**
 643.185 +	An event type that indicates that a marker packet has arrived.
 643.186 +	*/
 643.187 +	ERtpMarker           = 0x304,
 643.188 +	
 643.189 +	
 643.190 +	/**
 643.191 +	An event type that indicates that a misordered packet has arrived.
 643.192 +	*/
 643.193 +	ERtpMisorder         = 0x305,
 643.194 +	
 643.195 +	
 643.196 +	/**
 643.197 +	An event type that indicates that a dropout has been detected.
 643.198 +	*/
 643.199 +	ERtpDropout          = 0x306,
 643.200 +	
 643.201 +	
 643.202 +	/**
 643.203 +	An event type that indicates that a SDES (Source Description) RTCP packet
 643.204 +	has been received.
 643.205 +	
 643.206 +	For SDES events, the callback parameter is used to specify the type of 
 643.207 +	SDES. Use a value from TRtpSendPacketType
 643.208 +	
 643.209 +	The event status is the SSRC of the sender.
 643.210 +
 643.211 +	@see RRtpSession::TRtpSendPacketType
 643.212 +	*/
 643.213 +	ERtpSDES             = 0x307, 
 643.214 +
 643.215 +
 643.216 +	/**
 643.217 +	An event type that indicates that a APP (Application Defined) RTCP packet
 643.218 +	has been received.
 643.219 +	
 643.220 +	The event status is the SSRC of the sender.
 643.221 +
 643.222 +	*/
 643.223 +	ERtpAPP              = 0x308,
 643.224 +	
 643.225 +	
 643.226 +	/**
 643.227 +	An event type that indicates that a SR (Sender Report) RTCP packet
 643.228 +	has been received.
 643.229 +
 643.230 +	The event status is the SSRC of the sender.
 643.231 +	
 643.232 +	*/
 643.233 +	ERtpSR               = 0x309,
 643.234 +	
 643.235 +	
 643.236 +	/**
 643.237 +	An event type that indicates that a RR (Receiver Report) RTCP packet
 643.238 +	has been received.
 643.239 +
 643.240 +	The event status is the SSRC of the sender.
 643.241 +	*/
 643.242 +	ERtpRR               = 0x30a,
 643.243 +
 643.244 +
 643.245 +	/**
 643.246 +	An event type that indicates that a BYE (Goodbye) RTCP packet
 643.247 +	has been received.
 643.248 +
 643.249 +	The event status is the SSRC of the sender.
 643.250 +	*/
 643.251 +	ERtpBYE              = 0x30b,
 643.252 +
 643.253 +	
 643.254 +	/**
 643.255 +	Not an event type, but defines the upper limit for receive stream event 
 643.256 +	type values.
 643.257 +	*/
 643.258 +	ERtpSourceEventEnd   = 0x3ff
 643.259 +	};
 643.260 +
 643.261 +
 643.262 +/**
 643.263 +@publishedAll
 643.264 +@released
 643.265 +
 643.266 +Indicates whether a callback function can be called once, or more than once.
 643.267 +
 643.268 +The appropriate enum value is passed as an argument to the
 643.269 +RegisterEventCallbackL() functions of RRtpSession, RRtpSendSource,
 643.270 +and RRtpReceiveSource, or to the equivalent static functions.
 643.271 +
 643.272 +@see RRtpSession
 643.273 +@see RRtpSendSource
 643.274 +@see RRtpReceiveSource
 643.275 +*/
 643.276 +enum TRtpOneShotness 
 643.277 +	{
 643.278 +	/**
 643.279 +	Indicates that the call back function can be called more than once.
 643.280 +	*/
 643.281 +	ERtpNotOneShot = 0,
 643.282 +
 643.283 +	
 643.284 +	/**
 643.285 +	Indicates that the call back function is only called once.
 643.286 +	*/
 643.287 +	ERtpOneShot = 0x40000000
 643.288 +	};
 643.289 +
 643.290 +
 643.291 +
 643.292 +
 643.293 +/**
 643.294 +@publishedAll
 643.295 +*/
 643.296 +typedef void (*TRtpCallbackFunction)(TAny* aPtr, const TRtpEvent& aEvent);
 643.297 +
 643.298 +
 643.299 +
 643.300 +/**
 643.301 +@internalComponent
 643.302 +*/
 643.303 +const TInt KRtpNoParameter = KRequestPending;
 643.304 +
 643.305 +
 643.306 +//Needed for recv-only option for RTP or RTCP
 643.307 +//This must map to TRtpType
 643.308 +enum TPacketType
 643.309 +	{	
 643.310 +	EPacketRtp,	
 643.311 +	EPacketRtcp
 643.312 +	};
 643.313 +
 643.314 +
 643.315 +
 643.316 +
 643.317 +/**
 643.318 +@publishedAll
 643.319 +@released
 643.320 +
 643.321 +A value that can be passed as the second parameter in a call to either
 643.322 +RRtpSendSource::NewSendPacketL() or RRtpSendSource::NewSendPacketLC()
 643.323 +to indicate that no exension is required for the RTP send packet.
 643.324 +*/
 643.325 +const TInt KRtpNoExtension = -1;
 643.326 +
 643.327 +
 643.328 +
 643.329 +/**
 643.330 +@publishedAll
 643.331 +@released
 643.332 +
 643.333 +A handle to an RTP session.
 643.334 +
 643.335 +This is the interface to the socket-level RTP service, and provides additional
 643.336 +facilities such as header parsing, re-ordering out-of-order packets,
 643.337 +demultiplexing multiple sources etc.
 643.338 +
 643.339 +The class abstracts all RTP information going to/from a RTP socket, and its
 643.340 +corresponding RTCP data.
 643.341 +
 643.342 +Each RTP endpoint on a device needs its own RTP session.
 643.343 +
 643.344 +Multiple hosts streaming to a port on this device correspond
 643.345 +to different RRtpReceiveSource objects associated with the session.
 643.346 +
 643.347 +The class behaviour assumes that an active scheduler has already been created
 643.348 +and started; the class does not function correctly if not.
 643.349 +*/
 643.350 +class RRtpSession
 643.351 +	{
 643.352 + public:
 643.353 +    /**
 643.354 +    A set of bit values passed as a parameter to RRtpSession::SendRTCPPacketL()
 643.355 +    to specify the SDES (Source Description) items that are to be sent with
 643.356 +    the packet. One or more of these may be set.
 643.357 +    
 643.358 +    @see RRtpSession::SendRTCPPacketL()
 643.359 +	*/
 643.360 +	enum TRtpSendPacketType
 643.361 +		{
 643.362 +        /**
 643.363 +        Canonical End-Point Identifier SDES Item.
 643.364 +        */
 643.365 +		ERtcpPacketCNAME = 1, 
 643.366 +		
 643.367 +		/**
 643.368 +        User Name SDES Item.
 643.369 +	    */
 643.370 +		ERtcpPacketNAME  = 2, 
 643.371 +		
 643.372 +	    /**
 643.373 +        Electronic Mail Address SDES Item.
 643.374 +	    */
 643.375 +		ERtcpPacketEMAIL = 4, 
 643.376 +		
 643.377 +        /**
 643.378 +	    Phone Number SDES Item.
 643.379 +	    */		
 643.380 +		ERtcpPacketPHONE = 8, 
 643.381 +		
 643.382 +		/**
 643.383 +	    Geographic User Location SDES Item.
 643.384 +	    */
 643.385 +		ERtcpPacketLOC   = 16,
 643.386 +		
 643.387 +		/**
 643.388 +        Application or Tool Name SDES Item 
 643.389 +	    */
 643.390 +		ERtcpPacketTOOL  = 32,
 643.391 +		
 643.392 +		/**
 643.393 +	    Notice/Status SDES Item 
 643.394 +	    */
 643.395 +		ERtcpPacketNOTE  = 64,
 643.396 +		
 643.397 +		/**
 643.398 +	    Private Extensions SDES Item 
 643.399 +	    */
 643.400 +		ERtcpPacketPRIV  = 128
 643.401 +		};
 643.402 +
 643.403 +	inline RRtpSession();
 643.404 +	inline TBool IsOpen() const;
 643.405 +
 643.406 +	IMPORT_C void OpenL(RSocketServ& aServer, TSockAddr& aLocalAddr,
 643.407 +						TSockAddr& aRemoteAddr,
 643.408 +						TInt aMaxRXSize, RConnection& aConnection, TInt aPriority = EPriorityNormal, 
 643.409 +						const TDesC8& aCNAME = KNullDesC8);
 643.410 +
 643.411 +	
 643.412 +	IMPORT_C void OpenL(RSocketServ& aServer, TSockAddr& aLocalAddr,
 643.413 +						TSockAddr& aRemoteAddr,
 643.414 +						TInt aMaxRXSize, TInt aPriority = EPriorityNormal, 
 643.415 +						const TDesC8& aCNAME = KNullDesC8);
 643.416 +
 643.417 +    /**
 643.418 +	@publishedPartner
 643.419 +	@released
 643.420 +   	
 643.421 +    Opens the session and initialises it.
 643.422 +
 643.423 +    No events will be generated until after control returns to the
 643.424 +    active scheduler. The client has this time to initialise the
 643.425 +    object by adding event callbacks.
 643.426 +
 643.427 +    @param aSocket     The connected socket.
 643.428 +    @param aMaxRXSize  The maximum size of a received packet.
 643.429 +    @param aRtcpSocket The RTCP socket.
 643.430 +    @param aPriority   The priority to be used for internal active objects
 643.431 +    @param aCNAME      The CNAME. A sensible default is supplied if none is
 643.432 +                       provided.
 643.433 +    */
 643.434 +	IMPORT_C void OpenL(RSocket& aSocket, TInt aMaxRXSize, 
 643.435 +						RSocket& aRtcpSocket,
 643.436 +						TInt aPriority = EPriorityNormal, 
 643.437 +						const TDesC8& aCNAME = KNullDesC8);
 643.438 +
 643.439 +	IMPORT_C void OpenL(RSocket& aSocket, TInt aMaxRXSize,
 643.440 +						TInt aPriority = EPriorityNormal);
 643.441 +
 643.442 +	IMPORT_C void Close();
 643.443 +
 643.444 +	IMPORT_C void SetMaxRXSize(TInt aMaxRXSize);
 643.445 +
 643.446 +	IMPORT_C TInt MaxRXSize();
 643.447 +    
 643.448 +    
 643.449 +    /** 
 643.450 +	@publishedPartner
 643.451 +	@released
 643.452 +	
 643.453 +    Sets the estimated bandwidth used by the session.
 643.454 +    
 643.455 +    This is used to decide when to send RTCP status packets.
 643.456 +    The default	value is read from a resource file and should be a reasonably
 643.457 +	sensible default based on the maximum bandwidth of the handset.
 643.458 +	
 643.459 +	@param aBandwidth The bandwidth in bps.
 643.460 +    */
 643.461 +	IMPORT_C void SetBandwidth(TUint aBandwidth);
 643.462 +
 643.463 +
 643.464 +    /**
 643.465 +	@publishedPartner
 643.466 +	@released
 643.467 +   	
 643.468 +   	Supplies information about the profile-specific RTP
 643.469 +    timestamps. 
 643.470 +    
 643.471 +    This is used to generate the RTP timestamps in RTCP packets.
 643.472 +    It is not used to generate timestamps in RTP packets as they must
 643.473 +    accurately relate to the time of the sample.
 643.474 +   	
 643.475 +   	@param aNow        The time now in RTP format
 643.476 +	@param aConversion The number of nanoseconds per RTP timer tick.
 643.477 +    */
 643.478 +	IMPORT_C void SetRTPTimeConversion(TUint aNow, TUint aConversion);
 643.479 +	IMPORT_C RRtpReceiveSource NewReceiveSourceL();
 643.480 +	IMPORT_C RRtpReceiveSource NewReceiveSourceLC();
 643.481 +
 643.482 +    /**
 643.483 +    Registers a callback for the specified event.
 643.484 +
 643.485 +	Some compilers may not support templated member functions. A static version
 643.486 +	of this function is available that offers the same behaviour:
 643.487 +    RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness,TInt)
 643.488 +
 643.489 +    @param aType      The type of event.
 643.490 +    @param aCallback  The callback function. The function is templated, and is
 643.491 +                      prototyped to take a pointer to an object of the template
 643.492 +                      type and a const reference to a TRtpEvent. The function
 643.493 +                      returns void.
 643.494 +	@param aPtr       A pointer that is passed to the callback function when
 643.495 +	                  that function is called.
 643.496 +	@param aOneShot   Indicates whether the callback function is only
 643.497 +	                  called once, or can be called more than once.
 643.498 +	@param aParameter A parameter to be passed to the registration function.
 643.499 +	                  The meaning of this depends entirely on the event type.
 643.500 +	                  The parameter is optional - the other overload of this
 643.501 +	                  function is available for registrations that don't need
 643.502 +                      to pass a parameter.                      
 643.503 +	*/
 643.504 +	template <class T> inline void 
 643.505 +		RegisterEventCallbackL(TRtpEventType aType, 
 643.506 +							   void (*aCallback)(T*, const TRtpEvent&), 
 643.507 +							   T* aPtr, 
 643.508 +							   TRtpOneShotness aOneShot,
 643.509 +							   TInt aParameter)
 643.510 +			{
 643.511 +			PrivRegisterEventCallbackL(
 643.512 +				aType|aOneShot, 
 643.513 +				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 643.514 +				static_cast<TAny*>(aPtr), aParameter);
 643.515 +			}
 643.516 +
 643.517 +    /**
 643.518 +    Registers a callback for the specified event.
 643.519 +
 643.520 +	Some compilers may not support templated member functions. A static version
 643.521 +	of this function is available that offers the same behaviour:
 643.522 +	RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness)
 643.523 +
 643.524 +    @param aType      The type of event.
 643.525 +    @param aCallback  The callback function. The function is templated, and is
 643.526 +                      prototyped to take a pointer to an object of the template
 643.527 +                      type and a const reference to a TRtpEvent. The function
 643.528 +                      returns void.
 643.529 +	@param aPtr       A pointer that is passed to the callback function when
 643.530 +	                  that function is called.
 643.531 +	@param aOneShot   Indicates whether the callback function is only
 643.532 +	                  called once, or can be called more than once. If not
 643.533 +	                  specified, the default is to allow the callback function
 643.534 +	                  to be called more than once.
 643.535 +	*/
 643.536 +	template <class T> inline void 
 643.537 +		RegisterEventCallbackL(TRtpEventType aType, 
 643.538 +							   void (*aCallback)(T*, const TRtpEvent&), 
 643.539 +							   T* aPtr, 
 643.540 +							   TRtpOneShotness aOneShot = ERtpNotOneShot)
 643.541 +			{
 643.542 +			PrivRegisterEventCallbackL(
 643.543 +				aType|aOneShot, 
 643.544 +				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 643.545 +				static_cast<TAny*>(aPtr));
 643.546 +			}
 643.547 +
 643.548 +
 643.549 +	/**
 643.550 +	@publishedPartner
 643.551 +	@released
 643.552 +	
 643.553 +	Gets an array contining the most recent RR (Receiver Report) from
 643.554 +	all hosts who are reporting on our send stream.
 643.555 +	
 643.556 +	@return The array of RRs.
 643.557 +	*/
 643.558 +	IMPORT_C RRtcpRRPart GetRRs();
 643.559 +
 643.560 +
 643.561 +	/**
 643.562 +	@publishedPartner
 643.563 +	@released
 643.564 +	
 643.565 +	Gets the data associated with the specified RTCP SDES (Source Description)
 643.566 +	item.
 643.567 +
 643.568 +	Note a that the PRIV (Private Extensions) SDES item is not supported
 643.569 +	by this mechanism.
 643.570 +	
 643.571 +	@param aType  The value identifying the RTCP SDES item.
 643.572 +	
 643.573 +	@param aValue A descriptor reference to the SDES item data. 
 643.574 +	
 643.575 +	@return KErrNotFound if the item type was not found in the most recent RTCP packet
 643.576 +			KErrNone if the operation is successful
 643.577 +	*/
 643.578 +	IMPORT_C TInt GetSDES(const TInt aType, TDes8& aValue);
 643.579 +
 643.580 +	
 643.581 +	/**
 643.582 +	@publishedPartner
 643.583 +	@released
 643.584 +	
 643.585 +	Sets the data associated with the specified RTCP SDES (Source Description)
 643.586 +	item for sending in the next SDES packet only.
 643.587 +
 643.588 +	The function Leaves if duplicate values are set for the same CNAME.
 643.589 +	
 643.590 +	Note a that the PRIV (Private Extensions) SDES item is not supported
 643.591 +	by this mechanism.
 643.592 +	
 643.593 +	NOTE - This call cannot be used to set a different CNAME for this session.
 643.594 +	The default CNAME is send with every SDES packets.
 643.595 +	
 643.596 +	@param aType  The value identfying the RTCP SDES item.
 643.597 +	@param aValue The SDES item data.
 643.598 +
 643.599 +	@return KErrTooBig if the length of the aValue is more than KMaxSdesItemLength(=255)
 643.600 +			KErrNone if the operation is successful
 643.601 +	*/
 643.602 +	IMPORT_C TInt SetSDESL(TInt aType, const TDesC8& aValue);
 643.603 +
 643.604 +	/**
 643.605 +	@publishedPartner
 643.606 +	@released
 643.607 +	
 643.608 +	Sets the data associated with the PRIV (Private Extensions) SDES item.
 643.609 +	
 643.610 +	@param aPrefix The value identfying the RTCP SDES item.
 643.611 +	@param aValue The SDES item data.
 643.612 +
 643.613 +  	@return KErrTooBig if the length of the aValue and aPrefix combined is more 
 643.614 +	                   than KMaxSdesItemLength(=255)
 643.615 +			KErrNone if the operation is successful
 643.616 +	*/
 643.617 +	IMPORT_C TInt SetPRIVL(const TDesC8& aPrefix, const TDesC8& aValue);
 643.618 +
 643.619 +    
 643.620 +	/**
 643.621 +	@publishedPartner
 643.622 +	@released
 643.623 +	Sends an APP (Application Defined) RTCP Packet.
 643.624 +	
 643.625 +	The packet is sent immediately.
 643.626 +	
 643.627 +	If used with RTCP auto-send, the function disrupts the auto-send
 643.628 +	intervals. Note however that Symbian reserves the right to fix this.
 643.629 +	
 643.630 +	@param aApp A handle to a RTCP APP (Application Defined) packet,
 643.631 +	            for experimental extensions to RTCP.
 643.632 +	*/
 643.633 +	IMPORT_C void SendAPPL(const TDesC8& aName, const TDesC8& aAppData = KNullDesC8, TUint8 aSubType = 0);
 643.634 +
 643.635 +
 643.636 +	/**
 643.637 +	@publishedPartner
 643.638 +	@released
 643.639 +	
 643.640 +	Enables or disables the automatic sending of RTCP SR (Sender Report),
 643.641 +	RR (Receiver Report), and SDES (Source Description) packets.
 643.642 +	
 643.643 +	Note that if automatic sending is not enabled and RTCP sending is required,
 643.644 +	then explicit calls to SendRTCPPacketL() will be required.
 643.645 +	
 643.646 +	@param aAutoSend ETrue, if RTCP packets need to be send automatically
 643.647 +	                 EFalse otherwise.
 643.648 +	
 643.649 +	@see RRtpSession::SendRTCPPacketL()
 643.650 +	*/
 643.651 +	IMPORT_C void SetRTCPAutoSend(TBool aAutoSend);
 643.652 +
 643.653 +
 643.654 +	/** 
 643.655 +	@publishedPartner
 643.656 +	@released
 643.657 +	
 643.658 +	Gets the RTCP Auto Send status. 
 643.659 +
 643.660 +	@return True, if RTCP SR, RR and SDES packets are automatically sent,
 643.661 +	        false otherwise
 643.662 +	
 643.663 +	@see RRtpSession::SetRTCPAutoSend()
 643.664 +	*/
 643.665 +	IMPORT_C TBool RTCPAutoSend() const;
 643.666 +
 643.667 +	/** 
 643.668 +	@publishedPartner
 643.669 +	@released
 643.670 +	
 643.671 +	Sets the RTCP Auto Send interval.
 643.672 +	This disables the RFC based calculation of RTCP intervals.
 643.673 +	To re-enable auto calculation, set the interval to zero.
 643.674 +
 643.675 +  	@param aInterval Time interval after which an RTCP auto-send will take place
 643.676 +	*/
 643.677 +	IMPORT_C void SetRtcpInterval(TTimeIntervalMicroSeconds32& aInterval);
 643.678 +	
 643.679 +	/** 
 643.680 +	@publishedPartner
 643.681 +	@released	
 643.682 +	Enables Receive only option for rtp or rtcp
 643.683 +
 643.684 +	@param aRtpOrRtcp Takes the values from the enum TPacketType
 643.685 +
 643.686 +	@see RRtpSession::DontReceive()
 643.687 +	*/
 643.688 +	IMPORT_C void DontReceive(TInt aRtpOrRtcp);
 643.689 +	
 643.690 +	/** 
 643.691 +	@publishedPartner
 643.692 +	@released
 643.693 +    Sends an RTCP packet now. 
 643.694 +
 643.695 +	Calling this function doesn't make much sense if auto-send is
 643.696 +	on, as it will result in packets being sent at rather
 643.697 +	incoherent intervals.
 643.698 +
 643.699 +	@param aPacketType  Zero or more of the bit values defined by
 643.700 +	                    the TRtpSendPacketType enum. The packet sent will
 643.701 +	                    contain a SR (Sender Report) or RR (Receiver Report),
 643.702 +	                    depending on whether any packets have actually been
 643.703 +	                    sent, together with all SDES (Source Description) items
 643.704 +	                    specified by this parameter.
 643.705 +
 643.706 +    @see TRtpSendPacketType
 643.707 +	*/
 643.708 +	IMPORT_C void SendRTCPPacketL(TDesC8& aPacket);
 643.709 +
 643.710 +	
 643.711 +	/**
 643.712 +	@publishedPartner
 643.713 +	@released
 643.714 +	Creates a new send stream, and returns the send stream handle.
 643.715 +
 643.716 +	Only one send stream per session is permitted, which means that you must not
 643.717 +	call this function if the send stream has already been created.
 643.718 +
 643.719 +	As the send stream is an active object, it cannot handle request
 643.720 +	completion events until control returns to the active scheduler.
 643.721 +	Typically, clients will want to add event registrations before that.
 643.722 +
 643.723 +	The Code panics if the SendSource has alredy been opened.
 643.724 +
 643.725 +	@return The send stream handle.
 643.726 +
 643.727 +	This function may leave if memory is not enough.
 643.728 +	*/
 643.729 +	IMPORT_C RRtpSendSource NewSendSourceL(); 
 643.730 +
 643.731 +
 643.732 +	/**
 643.733 +	@publishedPartner
 643.734 +	@released
 643.735 +	
 643.736 +	Gets the handle to the send stream object associated with this session.
 643.737 +
 643.738 +	The send stream object is the one created in a previous call
 643.739 +	to NewSendSourceL(). If the send stream object has not been created, then
 643.740 +	the returned handle will refer to a closed send stream.
 643.741 +
 643.742 +    @return The handle to the send stream object.
 643.743 +    
 643.744 +    @see RRtpSendSource NewSendSourceL()
 643.745 +    */
 643.746 +	IMPORT_C RRtpSendSource SendSource(); 
 643.747 +
 643.748 +
 643.749 +    /**
 643.750 +	@publishedPartner
 643.751 +	@released
 643.752 +    
 643.753 +    Sets the number of sequential packets that must be received
 643.754 +	before a stream is considered good.
 643.755 +	
 643.756 +	Sets the maximum number of dropped packets to be considered a
 643.757 +	dropout, as opposed to an ended and restarted stream.
 643.758 +	
 643.759 +	Sets the maximum number of packets by which a packet can be delayed 
 643.760 +	before it is considered dropped.
 643.761 +			
 643.762 +	@param aMaxMisorder The maximum number of packets.
 643.763 +		
 643.764 +	@param aMaxDropout The number of sequential packets.
 643.765 +		
 643.766 +	@param aMinSequential The number of sequential packets.
 643.767 +	@post The session will be 'restarted', 
 643.768 +			i.e. it resets the sequence number sequence and resets all RTCP statistics.
 643.769 +	*/
 643.770 +	IMPORT_C void SetRtpStreamParameters(TInt aMinSequential, TInt aMaxMisorder, TInt aMaxDropout);
 643.771 +
 643.772 +	inline TBool operator == (RRtpSession aThat) const;
 643.773 +	inline TBool operator != (RRtpSession aThat) const;
 643.774 +
 643.775 +	/**
 643.776 +	@publishedPartner
 643.777 +	@released
 643.778 +
 643.779 +    The event manager contains a number of callback registrations, each of which 
 643.780 +	binds a function and pointer (normally an object) to a particular kind of
 643.781 +    event. Registrations can be bound to all events on a stream.
 643.782 +
 643.783 +	If a function is registered for a particular event, it will be called when 
 643.784 +	that event occurs. One callback function can be associated with more than 1
 643.785 +	callback registration. Callback functions take a pointer argument
 643.786 +	which was supplied as part of the registration
 643.787 +
 643.788 +    @param aType Event type
 643.789 +		
 643.790 +	@param aCallback Callback object
 643.791 +		
 643.792 +	@param aPtr Pointer to data that needs to be passed to the callback function
 643.793 +
 643.794 +  	@param aParameter Parameter to be passed to internal callback subsystem
 643.795 +	*/
 643.796 +	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 643.797 +										  TRtpCallbackFunction aCallback, 
 643.798 +										  TAny* aPtr, 
 643.799 +										  TInt aParameter);
 643.800 +
 643.801 +	/**
 643.802 +	@publishedPartner
 643.803 +	@released
 643.804 +
 643.805 +    The event manager contains a number of callback registrations, each of which 
 643.806 +	binds a function and pointer (normally an object) to a particular kind of
 643.807 +    event. Registrations can be bound to all events on a stream.
 643.808 +
 643.809 +	If a function is registered for a particular event, it will be called when 
 643.810 +	that event occurs. One callback function can be associated with more than 1
 643.811 +	callback registration. Callback functions take a pointer argument
 643.812 +	which was supplied as part of the registration
 643.813 +
 643.814 +    @param aType Event type
 643.815 +		
 643.816 +	@param aCallback Callback object
 643.817 +		
 643.818 +	@param aPtr Pointer to data that needs to be passed to the callback function
 643.819 +	*/
 643.820 +	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 643.821 +										  TRtpCallbackFunction aCallback, 
 643.822 +										  TAny* aPtr);
 643.823 +
 643.824 + private:
 643.825 +	friend class TRtpEvent;
 643.826 +	CRtpSession* iPtr;
 643.827 +	// Note: Comments that start with //\ are pseudo-variables used to get
 643.828 +	// Doxygen collaboration diagrams to look right. Ignore them.
 643.829 +	//\ RRtpSendSource sndSource_1_01;
 643.830 +	//\ RRtpReceiveSource rcvSource_1_n;
 643.831 +	//\ TRtpCallback callbacks_1_n;
 643.832 +	//\ TRtpEvent events_1_n;
 643.833 +	};
 643.834 +
 643.835 +
 643.836 +
 643.837 +
 643.838 +/**
 643.839 +@publishedAll
 643.840 +@released
 643.841 +
 643.842 +A handle to a send stream.
 643.843 +
 643.844 +Use this class to manage the creation and sending of packets. 
 643.845 +A session can have only one send stream.
 643.846 +
 643.847 +Only one packet can be sent at any one time.
 643.848 +Once a packet has been sent, the packet cannot be closed and no further packets
 643.849 +can be sent until an event signalling the completion of the send operation has
 643.850 +occurred. This will be one of the events defined by the enum values:
 643.851 +ERtpSendSucceeded and ERtpSendFail.
 643.852 +
 643.853 +A client must monitor these events so that it can schedule the sending of
 643.854 +subsequent packets.
 643.855 +It does this by implementing and registering callback functions that 
 643.856 +handle these events.
 643.857 +
 643.858 +@see TRtpEventType
 643.859 +*/
 643.860 +class RRtpSendSource
 643.861 +	{
 643.862 + public:
 643.863 +	inline RRtpSendSource();
 643.864 +	inline TBool IsOpen() const;
 643.865 +	IMPORT_C void Close();
 643.866 +
 643.867 +	IMPORT_C void Cancel();
 643.868 +    
 643.869 +	template <class T> inline void 
 643.870 +		RegisterEventCallbackL(TRtpEventType aType, 
 643.871 +							   void (*aCallback)(T*, const TRtpEvent&), 
 643.872 +							   T* aPtr, 
 643.873 +							   TRtpOneShotness aOneShot,
 643.874 +							   TInt aParameter)
 643.875 +	{
 643.876 +	PrivRegisterEventCallbackL(aType|aOneShot,
 643.877 +				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 643.878 +				static_cast<TAny*>(aPtr), aParameter);
 643.879 +	}
 643.880 +
 643.881 +
 643.882 +	template <class T> inline void 
 643.883 +		RegisterEventCallbackL(TRtpEventType aType, 
 643.884 +							   void (*aCallback)(T*, const TRtpEvent&), 
 643.885 +							   T* aPtr, 
 643.886 +							   TRtpOneShotness aOneShot = ERtpNotOneShot)
 643.887 +	{
 643.888 +	PrivRegisterEventCallbackL(aType|aOneShot,
 643.889 +				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 643.890 +				static_cast<TAny*>(aPtr));
 643.891 +	}
 643.892 +
 643.893 +
 643.894 +	
 643.895 +	IMPORT_C RRtpSendPacket NewSendPacketL(TInt aPayloadSize = 0, 
 643.896 +										   TInt aHeaderExtensionSize = 
 643.897 +										   KRtpNoExtension);
 643.898 +	
 643.899 +	IMPORT_C RRtpSendPacket NewSendPacketLC(TInt aPayloadSize = 0, 
 643.900 +											TInt aHeaderExtensionSize = 
 643.901 +											KRtpNoExtension);
 643.902 +
 643.903 +	IMPORT_C TBool IsSending();
 643.904 +	IMPORT_C void SetPayloadType(TUint aPayloadType);
 643.905 +	IMPORT_C void SetDefaultPayloadSize(TInt aPayloadSize);
 643.906 +	/**
 643.907 +	@publishedPartner
 643.908 +	@released
 643.909 +	
 643.910 +	Sends a Bye RTCP packet.
 643.911 +	
 643.912 +	@param aReason The reason for sending the Bye RTCP packet.
 643.913 +	*/
 643.914 +	IMPORT_C void ByeL(TDesC8& aReason);
 643.915 +	IMPORT_C TUint32 GetLocalSSRC();
 643.916 +
 643.917 +	IMPORT_C void SetAlignment(TInt aAlignment);
 643.918 +	IMPORT_C TInt Alignment() const;
 643.919 +
 643.920 +	inline TBool operator == (RRtpSendSource aThat) const;
 643.921 +	inline TBool operator != (RRtpSendSource aThat) const;
 643.922 +	
 643.923 +	/**
 643.924 +	@publishedPartner
 643.925 +	@released
 643.926 +
 643.927 +    The event manager contains a number of callback registrations, each of which 
 643.928 +	binds a function and pointer (normally an object) to a particular kind of
 643.929 +    event. Registrations can be bound to all events on a stream.
 643.930 +
 643.931 +	If a function is registered for a particular event, it will be called when 
 643.932 +	that event occurs. One callback function can be associated with more than 1
 643.933 +	callback registration. Callback functions take a pointer argument
 643.934 +	which was supplied as part of the registration
 643.935 +
 643.936 +    @param aType Event type
 643.937 +		
 643.938 +	@param aCallback Callback object
 643.939 +		
 643.940 +	@param aPtr Pointer to data that needs to be passed to the callback function
 643.941 +
 643.942 +  	@param aParameter Parameter to be passed to internal callback subsystem
 643.943 +	*/
 643.944 +	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 643.945 +										  TRtpCallbackFunction aCallback, 
 643.946 +										  TAny* aPtr, 
 643.947 +										  TInt aParameter);
 643.948 +
 643.949 +	/**
 643.950 +	@publishedPartner
 643.951 +	@released
 643.952 +
 643.953 +    The event manager contains a number of callback registrations, each of which 
 643.954 +	binds a function and pointer (normally an object) to a particular kind of
 643.955 +    event. Registrations can be bound to all events on a stream.
 643.956 +
 643.957 +	If a function is registered for a particular event, it will be called when 
 643.958 +	that event occurs. One callback function can be associated with more than 1
 643.959 +	callback registration. Callback functions take a pointer argument
 643.960 +	which was supplied as part of the registration
 643.961 +
 643.962 +    @param aType Event type
 643.963 +		
 643.964 +	@param aCallback Callback object
 643.965 +		
 643.966 +	@param aPtr Pointer to data that needs to be passed to the callback function
 643.967 +	*/
 643.968 +	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 643.969 +										  TRtpCallbackFunction aCallback, 
 643.970 +										  TAny* aPtr);
 643.971 + private:
 643.972 +	friend class RRtpSession;
 643.973 +	friend class TRtpEvent;
 643.974 +	CRtpSendSource* iPtr;
 643.975 +	// Note: Comments that start with //\ are pseudo-variables used to get
 643.976 +	// Doxygen collaboration diagrams to look right. Ignore them.
 643.977 +	//\ TRtpCallback callbacks_1_n;
 643.978 +	//\ TRtpEvent events_1_n;
 643.979 +	//\ TRtpSendPacket packets_1_n;
 643.980 +	};
 643.981 +
 643.982 +
 643.983 +
 643.984 +
 643.985 +/**
 643.986 +@publishedAll
 643.987 +@released
 643.988 +
 643.989 +A handle to a receive stream.
 643.990 +
 643.991 +An object of this type represents the stream of data on a single SSRC and
 643.992 +delivers the RTP packets and RTCP information in the order they
 643.993 +arrive.
 643.994 +
 643.995 +Note that RTP does not guarantee the order of delivery, which means that the 
 643.996 +client may want to buffer the data.
 643.997 +*/
 643.998 +class RRtpReceiveSource 
 643.999 +	{
643.1000 + public:
643.1001 +	RRtpReceiveSource();
643.1002 +	inline TBool IsOpen() const;
643.1003 +
643.1004 +	IMPORT_C void Close();
643.1005 +
643.1006 +	
643.1007 +	template <class T> inline void 
643.1008 +		RegisterEventCallbackL(TRtpEventType aType, 
643.1009 +							   void (*aCallback)(T*, const TRtpEvent&), 
643.1010 +							   T* aPtr, 
643.1011 +							   TRtpOneShotness aOneShot,
643.1012 +							   TInt aParameter)
643.1013 +	{
643.1014 +	PrivRegisterEventCallbackL(aType|aOneShot, 
643.1015 +			reinterpret_cast<TRtpCallbackFunction>(aCallback),
643.1016 +			static_cast<TAny*>(aPtr), aParameter);
643.1017 +	}
643.1018 +
643.1019 +
643.1020 +	template <class T> inline void 
643.1021 +		RegisterEventCallbackL(TRtpEventType aType, 
643.1022 +							   void (*aCallback)(T*, const TRtpEvent&), 
643.1023 +							   T* aPtr, 
643.1024 +							   TRtpOneShotness aOneShot = ERtpNotOneShot)	
643.1025 +	{
643.1026 +	PrivRegisterEventCallbackL(aType|aOneShot, 
643.1027 +				reinterpret_cast<TRtpCallbackFunction>(aCallback),
643.1028 +				static_cast<TAny*>(aPtr));
643.1029 +	}
643.1030 +
643.1031 +	/**
643.1032 +	@publishedPartner
643.1033 +	@released
643.1034 +	
643.1035 +	Gets the data associated with the specified RTCP SDES (Source Description)
643.1036 +	item.
643.1037 +
643.1038 +	Note a that the PRIV (Private Extensions) SDES item is not supported
643.1039 +	by this mechanism.
643.1040 +
643.1041 +	@param aType  The value identifying the RTCP SDES item.
643.1042 +	
643.1043 +	@return A descriptor reference to the SDES item data. 
643.1044 +	*/
643.1045 +	IMPORT_C TInt GetSDES(const TInt aType, TDes8& aValue);
643.1046 +
643.1047 +
643.1048 +	/**
643.1049 +	@publishedPartner
643.1050 +	@released
643.1051 +	
643.1052 +	Gets the most recent SR ((Sender Report) from this SSRC.
643.1053 + 
643.1054 +    @return A handle to the SR.
643.1055 +    */
643.1056 +	IMPORT_C RRtcpSRPart GetSR();
643.1057 +
643.1058 +
643.1059 +	/**
643.1060 +	@publishedPartner
643.1061 +	@released
643.1062 +	
643.1063 +	Gets the reason for a BYE packet.
643.1064 +	
643.1065 +	@return A descriptor contaning the BYE message. This is
643.1066 +	        KNullDesC if the source has not sent a BYE packet.
643.1067 +    */
643.1068 +	IMPORT_C TDesC8& GetByeReason();
643.1069 +
643.1070 +
643.1071 +	/**
643.1072 +	@publishedPartner
643.1073 +	@released
643.1074 +	
643.1075 +	Parameters from the last APP (Application Defined) packet.
643.1076 +
643.1077 +  	@param aName  Four-bytes application name
643.1078 +	@param aAppData  Applciation specific data
643.1079 +	@param aSubType  Application defined sub-type of the APP packet
643.1080 +	*/
643.1081 +	IMPORT_C void GetLastApp(TPtrC8& aName, TPtrC8& aAppData, TUint& aSubType);
643.1082 +
643.1083 +	IMPORT_C RRtpReceivePacket Packet();
643.1084 +
643.1085 +	/**
643.1086 +	@publishedPartner
643.1087 +	@released
643.1088 +	
643.1089 +	Gets the SSRC of the remote end
643.1090 +
643.1091 +	@return The SSRC of the remote end
643.1092 +	*/
643.1093 +	IMPORT_C TUint SSRC() const;
643.1094 +
643.1095 +	inline TBool operator == (RRtpReceiveSource aThat) const;
643.1096 +	inline TBool operator != (RRtpReceiveSource aThat) const;
643.1097 +
643.1098 +	/**
643.1099 +	@publishedPartner
643.1100 +	@released
643.1101 +
643.1102 +    The event manager contains a number of callback registrations, each of which 
643.1103 +	binds a function and pointer (normally an object) to a particular kind of
643.1104 +    event. Registrations can be bound to all events on a stream.
643.1105 +
643.1106 +	If a function is registered for a particular event, it will be called when 
643.1107 +	that event occurs. One callback function can be associated with more than 1
643.1108 +	callback registration. Callback functions take a pointer argument
643.1109 +	which was supplied as part of the registration
643.1110 +
643.1111 +    @param aType Event type
643.1112 +		
643.1113 +	@param aCallback Callback object
643.1114 +		
643.1115 +	@param aPtr Pointer to data that needs to be passed to the callback function
643.1116 +
643.1117 +  	@param aParameter Parameter to be passed to internal callback subsystem
643.1118 +	*/
643.1119 +	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
643.1120 +										  TRtpCallbackFunction aCallback, 
643.1121 +										  TAny* aPtr, TInt aParameter);
643.1122 +
643.1123 +	/**
643.1124 +	@publishedPartner
643.1125 +	@released
643.1126 +
643.1127 +    The event manager contains a number of callback registrations, each of which 
643.1128 +	binds a function and pointer (normally an object) to a particular kind of
643.1129 +    event. Registrations can be bound to all events on a stream.
643.1130 +
643.1131 +	If a function is registered for a particular event, it will be called when 
643.1132 +	that event occurs. One callback function can be associated with more than 1
643.1133 +	callback registration. Callback functions take a pointer argument
643.1134 +	which was supplied as part of the registration
643.1135 +
643.1136 +    @param aType Event type
643.1137 +		
643.1138 +	@param aCallback Callback object
643.1139 +		
643.1140 +	@param aPtr Pointer to data that needs to be passed to the callback function
643.1141 +	*/
643.1142 +
643.1143 +	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
643.1144 +										  TRtpCallbackFunction aCallback, 
643.1145 +										  TAny* aPtr);
643.1146 + private:
643.1147 +	friend class RRtpSession;
643.1148 +	friend class TRtpEvent;
643.1149 +	CRtpReceiveSource* iPtr;
643.1150 +	// Note: Comments that start with //\ are pseudo-variables used to get
643.1151 +	// Doxygen collaboration diagrams to look right. Ignore them.
643.1152 +	//\ TRtpCallback callbacks_1_n;
643.1153 +	//\ TRtpEvent events_1_n;
643.1154 +	//\ TRtpReceivePacket packets_1_n;
643.1155 +	};
643.1156 +
643.1157 +
643.1158 +
643.1159 +
643.1160 +/**
643.1161 +@publishedAll
643.1162 +@released
643.1163 +
643.1164 +A handle to an RTP packet.
643.1165 +
643.1166 +The packet is accessed through the interface provided by this handle.
643.1167 +*/
643.1168 +class RRtpPacket
643.1169 +	{
643.1170 + public:
643.1171 +	inline RRtpPacket();
643.1172 +	inline TBool IsOpen() const;
643.1173 +
643.1174 +	IMPORT_C void Close();
643.1175 +	IMPORT_C TPtrC8 Payload() const;
643.1176 +	IMPORT_C TUint SequenceNumber() const;
643.1177 +	IMPORT_C TUint Timestamp() const;
643.1178 +	IMPORT_C TUint SSRC() const;
643.1179 +	IMPORT_C RRtpCSRCs CSRCs() const;
643.1180 +	IMPORT_C TBool ExtensionPresent() const;
643.1181 +	IMPORT_C RRtpHeaderExtension Extension() const; 
643.1182 +	IMPORT_C TBool Marker() const;
643.1183 +	IMPORT_C TUint PayloadType() const;
643.1184 +	IMPORT_C TUint Flags() const;
643.1185 +
643.1186 +	inline TBool operator == (RRtpPacket aThat) const;
643.1187 +	inline TBool operator != (RRtpPacket aThat) const;
643.1188 +
643.1189 + protected:
643.1190 +	TRtpPacket* iPtr;
643.1191 +	// Note: Comments that start with //\ are pseudo-variables used to get
643.1192 +	// Doxygen collaboration diagrams to look right. Ignore them.
643.1193 +	//\ RRtpHeaderExtension extension_1_01;
643.1194 +	//\ RRtpCSRCs csrcs_1_01;
643.1195 +	};
643.1196 +
643.1197 +
643.1198 +
643.1199 +
643.1200 +/**
643.1201 +@publishedAll
643.1202 +@released
643.1203 +
643.1204 +A handle to an RTP packet to be sent (an RTP send packet).
643.1205 +
643.1206 +@see RRtpSendSource
643.1207 +*/
643.1208 +class RRtpSendPacket : public RRtpPacket
643.1209 +	{
643.1210 + public:
643.1211 +	IMPORT_C void Send();
643.1212 +	IMPORT_C TDes8& WritePayload();
643.1213 +	IMPORT_C void SetTimestamp(TUint aTimestamp);
643.1214 +	IMPORT_C void SetMarker(TBool aMark);
643.1215 +	IMPORT_C void SetPayloadType(TUint aPayloadType);
643.1216 +	IMPORT_C void SetFlags(TUint aFlags);
643.1217 +
643.1218 +	friend class RRtpSendSource;
643.1219 +	};
643.1220 +
643.1221 +
643.1222 +
643.1223 +
643.1224 +/**
643.1225 +@publishedAll
643.1226 +@released
643.1227 +
643.1228 +A handle to an RTP packet received from another source.
643.1229 +*/
643.1230 +class RRtpReceivePacket : public RRtpPacket
643.1231 +	{
643.1232 +	friend class RRtpReceiveSource;
643.1233 +	friend class TRtpReceivePacket;
643.1234 +	};
643.1235 +
643.1236 +
643.1237 +
643.1238 +
643.1239 +/**
643.1240 +@publishedAll
643.1241 +@released
643.1242 +
643.1243 +An RTP event.
643.1244 +
643.1245 +An event is generated when anything happens that a client might want
643.1246 +to know about. The class encapulates two pieces of information:
643.1247 +1. An event type as defined by a TRtpEventType value.
643.1248 +2. Additional information whose meaning is dependent on the event type.
643.1249 +
643.1250 +Additional information may be implicitly associated with the event, but still
643.1251 +needs to be fetched from another object, for example, when processing
643.1252 +an ERtpPacketReceived event, the packet (represented by a RRtpReceivePacket
643.1253 +handle) must be obtained from the receive stream (represented by a
643.1254 +RRtpReceiveStream handle).
643.1255 +
643.1256 +Events are always associated with either an RTP session, a send stream or
643.1257 +a receive stream, and this class has functions for getting the corresponding
643.1258 +handle.
643.1259 +
643.1260 +@see RRtpSession
643.1261 +@see RRtpSendSource
643.1262 +@see RRtpReceiveSource
643.1263 +*/
643.1264 +class TRtpEvent
643.1265 +	{
643.1266 + public:
643.1267 +	IMPORT_C TRtpEvent(TRtpEventType aType, TInt aStatus, TAny* aData);
643.1268 +	IMPORT_C RRtpSession Session() const;
643.1269 +	IMPORT_C RRtpSendSource SendSource() const;
643.1270 +	IMPORT_C RRtpReceiveSource ReceiveSource() const;
643.1271 +	IMPORT_C TBool IsSessionEvent() const;
643.1272 +	IMPORT_C TBool IsSendSourceEvent() const;
643.1273 +	IMPORT_C TBool IsReceiveSourceEvent() const;
643.1274 +        
643.1275 +	inline TRtpEventType Type() const;
643.1276 +	inline TInt Status() const;
643.1277 + private:
643.1278 +	TRtpEventType iType;
643.1279 +	TInt iStatus;
643.1280 +	TAny* iData;
643.1281 +	};
643.1282 +
643.1283 +
643.1284 +
643.1285 +
643.1286 +/**
643.1287 +@publishedAll
643.1288 +@released
643.1289 +
643.1290 +Reresents an RTP packet's header extension.
643.1291 +
643.1292 +The format of a header extension is profile-defined.
643.1293 +*/
643.1294 +class RRtpHeaderExtension
643.1295 +	{
643.1296 + public:
643.1297 +	IMPORT_C TUint16 Type() const;
643.1298 +	IMPORT_C void SetType(TUint16 aType);
643.1299 +	IMPORT_C TPtrC8 Data();
643.1300 + private:
643.1301 +	friend class RRtpPacket;
643.1302 +	TRtpPacket* iPtr;
643.1303 +	};
643.1304 +
643.1305 +
643.1306 +
643.1307 +
643.1308 +/**
643.1309 +@publishedAll
643.1310 +@released
643.1311 +
643.1312 +A handle representing the list of CSRCs in an RTP packet.
643.1313 +*/
643.1314 +class RRtpCSRCs
643.1315 +	{
643.1316 + public:
643.1317 +	IMPORT_C TInt Count() const;
643.1318 +	IMPORT_C TUint operator [](TUint aIndex) const;
643.1319 + private:
643.1320 +	friend class RRtpPacket;
643.1321 +	
643.1322 +	TRtpPacket* iPtr;
643.1323 +	};
643.1324 +
643.1325 +
643.1326 +/**
643.1327 +@publishedPartner
643.1328 +
643.1329 +A set of panic codes.
643.1330 +
643.1331 +in release mode, different panic codes, such as
643.1332 +KERN-EXEC 3 may be generated instead.
643.1333 +*/
643.1334 +enum TRtpPanicCode
643.1335 +	{
643.1336 +	ERtpPacketIsClosed = 1, 
643.1337 +	ERtpPayloadTypeOutOfRange = 2,
643.1338 +	ERtpSessionIsClosed = 3,
643.1339 +	ERtpSourceIsClosed = 4,
643.1340 +	ERtpNoExtension = 5,
643.1341 +	ERtpLeaveInResponseToError = 6,
643.1342 +	ERtpCantSend2PacketsAtOnce = 7,
643.1343 +	ERtpWrongEventType = 8,
643.1344 +	ERtpWrongParameter = 9,
643.1345 +	ERtpSendSourceAlreadyOpen = 10,
643.1346 +	ERtpSessionAlreadyOpen = 11,
643.1347 +	//
643.1348 +	ERtpCoreController = 100,
643.1349 +	};
643.1350 +
643.1351 +GLREF_C void Panic(TRtpPanicCode aPanicCode);
643.1352 +
643.1353 +#include "rtp.inl"
643.1354 +
643.1355 +#endif // RTP_H
   644.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   644.2 +++ b/epoc32/include/mw/schedulebaseservermtm.h	Wed Mar 31 12:27:01 2010 +0100
   644.3 @@ -0,0 +1,117 @@
   644.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   644.5 +// All rights reserved.
   644.6 +// This component and the accompanying materials are made available
   644.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   644.8 +// which accompanies this distribution, and is available
   644.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  644.10 +//
  644.11 +// Initial Contributors:
  644.12 +// Nokia Corporation - initial contribution.
  644.13 +//
  644.14 +// Contributors:
  644.15 +//
  644.16 +// Description:
  644.17 +//
  644.18 +
  644.19 +
  644.20 +#ifndef SCHEDULE_BASE_SERVER_MTM_H_
  644.21 +#define SCHEDULE_BASE_SERVER_MTM_H_
  644.22 +
  644.23 +/////////////////////////////////////////////////////////////////////////////
  644.24 +//
  644.25 +//	CScheduleBaseServerMtm Declaration
  644.26 +//
  644.27 +/////////////////////////////////////////////////////////////////////////////
  644.28 +
  644.29 + 
  644.30 +
  644.31 +#include <mtsr.h>
  644.32 +#include <barsc.h>
  644.33 +
  644.34 +
  644.35 +class CMsvScheduleSend;
  644.36 +class CMsvSysAgentActions;
  644.37 +class TMsvSendErrorAction;
  644.38 +class TMsvSchedulePackage;
  644.39 +class CRepository;
  644.40 +
  644.41 +class CScheduleBaseServerMtm : public CBaseServerMtm
  644.42 +/**
  644.43 +Base class for Server MTMs that support scheduling.
  644.44 +
  644.45 +It contains pure virtual functions which must be implemented by the Server 
  644.46 +MTM. These functions are not required for interoperability with any other 
  644.47 +classes, however they are essential functionality that must be implemented 
  644.48 +by a Server MTM that support scheduling.
  644.49 +
  644.50 +CScheduleBaseServerMtm uses a class derived from CMsvScheduleSend to
  644.51 +interface with the task scheduler.
  644.52 +
  644.53 +@see CMsvScheduleSend
  644.54 +@publishedAll
  644.55 +@released
  644.56 +*/
  644.57 +	{
  644.58 +protected:
  644.59 +
  644.60 +//	--- Construction ---
  644.61 +
  644.62 +	IMPORT_C CScheduleBaseServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry);
  644.63 +
  644.64 +//	--- Send the Scheduled Messages ---
  644.65 +
  644.66 +	IMPORT_C virtual void SendScheduledL(CMsvEntrySelection& aSelection, const TBool aMove, const TDesC8& aParameter, TRequestStatus& aStatus);
  644.67 +	IMPORT_C virtual void ScheduleL(CMsvEntrySelection& aSelection, const TBool aMove, const TDesC8& aParameter, TRequestStatus& aStatus);
  644.68 +	IMPORT_C virtual void ConstructL();
  644.69 +	IMPORT_C void LoadResourceFileL(const TDesC& aResFileName);
  644.70 +
  644.71 +// Other Schedule Commands
  644.72 +
  644.73 +	IMPORT_C virtual void CheckScheduleL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
  644.74 +	IMPORT_C virtual void DeleteScheduleL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
  644.75 +
  644.76 +//	--- Pure virtual functions that must be implemented in a derived class ---
  644.77 +
  644.78 +	/**
  644.79 +	Populates a TMsvSchedulePackage object with scheduling information.
  644.80 +	
  644.81 +	@param aParameter Parameter information for the package
  644.82 +	@param aMove Flag that signals whether a move or copy is required
  644.83 +	@param aPackage On return, a populated object
  644.84 +	*/
  644.85 +	virtual void PopulateSchedulePackage(const TDesC8& aParameter, const TBool aMove, TMsvSchedulePackage& aPackage) const = 0;
  644.86 +	
  644.87 +	/**
  644.88 +	Loads the resource file (if any) for the MTM.
  644.89 +	*/
  644.90 +	virtual void LoadResourceFileL() = 0;
  644.91 +
  644.92 +
  644.93 +	IMPORT_C void Queue(TRequestStatus& aStatus);
  644.94 +
  644.95 +	IMPORT_C void LoadScheduleSettingsL(CRepository& aRepository, TBool aRestoreErrorsFromResource = EFalse, TInt aErrorsResourceId = 0);
  644.96 +
  644.97 +protected:
  644.98 +
  644.99 +	IMPORT_C ~CScheduleBaseServerMtm();
 644.100 +
 644.101 +private:
 644.102 +
 644.103 +	void RequestComplete(TRequestStatus* aStatus, TInt aError);
 644.104 +
 644.105 +protected:
 644.106 +
 644.107 +//	--- Data Member ---
 644.108 +
 644.109 +	/** Message scheduler. */
 644.110 +	CMsvScheduleSend* iScheduleSend; //Should be constructed and deleted by the derived class
 644.111 +
 644.112 +	/** MTM resource file. */
 644.113 +	RResourceFile iResourceFile;
 644.114 +	/** File server handle. */
 644.115 +	RFs iFs;
 644.116 +	/** Asynchronous status word. */
 644.117 +	TRequestStatus* iReport;
 644.118 +	};
 644.119 +
 644.120 +#endif
   645.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   645.2 +++ b/epoc32/include/mw/schsend.rh	Wed Mar 31 12:27:01 2010 +0100
   645.3 @@ -0,0 +1,39 @@
   645.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   645.5 +// All rights reserved.
   645.6 +// This component and the accompanying materials are made available
   645.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   645.8 +// which accompanies this distribution, and is available
   645.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  645.10 +//
  645.11 +// Initial Contributors:
  645.12 +// Nokia Corporation - initial contribution.
  645.13 +//
  645.14 +// Contributors:
  645.15 +//
  645.16 +// Description:
  645.17 +//
  645.18 +
  645.19 +#include <schsend.hrh>
  645.20 +
  645.21 +#if !defined(__SCHSEND_RH__)
  645.22 +#define __SCHSEND_RH__
  645.23 +
  645.24 +STRUCT SEND_ERROR
  645.25 +	{
  645.26 +	LONG error;
  645.27 +	}
  645.28 +
  645.29 +STRUCT SEND_ERROR_ACTION
  645.30 +	{
  645.31 +	BYTE flags;
  645.32 +	WORD max_retries = 0;
  645.33 +	STRUCT errors[];
  645.34 +	}
  645.35 +
  645.36 +STRUCT SEND_ERROR_ACTIONS
  645.37 +	{
  645.38 +	STRUCT default;
  645.39 +	STRUCT actions[];
  645.40 +	}
  645.41 +
  645.42 +#endif
   646.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   646.2 +++ b/epoc32/include/mw/sdpattributefield.h	Wed Mar 31 12:27:01 2010 +0100
   646.3 @@ -0,0 +1,391 @@
   646.4 +/*
   646.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   646.6 +* All rights reserved.
   646.7 +* This component and the accompanying materials are made available
   646.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   646.9 +* which accompanies this distribution, and is available
  646.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  646.11 +*
  646.12 +* Initial Contributors:
  646.13 +* Nokia Corporation - initial contribution.
  646.14 +*
  646.15 +* Contributors:
  646.16 +*
  646.17 +* Description:
  646.18 +* Name          : SdpAttributeField.h
  646.19 +* Part of       : SDP Codec
  646.20 +* Interface     : SDK API, SDP Codec API
  646.21 +* Version       : 1.0
  646.22 +*
  646.23 +*/
  646.24 +
  646.25 +
  646.26 +
  646.27 +#ifndef CSDPATTRIBUTEFIELD_H
  646.28 +#define CSDPATTRIBUTEFIELD_H
  646.29 +
  646.30 +//  INCLUDES
  646.31 +#include <e32base.h>
  646.32 +#include <stringpool.h>
  646.33 +#include "sdpcodecstringconstants.h"
  646.34 +#include "_sdpdefs.h"
  646.35 +
  646.36 +// FORWARD DECLARATIONS
  646.37 +class RReadStream;
  646.38 +class RWriteStream;
  646.39 +class CSdpFmtAttributeField;
  646.40 +class CSdpAttributeFieldPtrs;
  646.41 +
  646.42 +// CLASS DECLARATION
  646.43 +/**
  646.44 + *  @publishedAll
  646.45 + *  @released
  646.46 + *
  646.47 + *	This class encapsulates the attribute field of Session Description Protocol
  646.48 + *	for media and session level attributes. Media format/payload type level
  646.49 + *  attributes are supported by the CSdpFmtAttributeField class. 
  646.50 + * 
  646.51 + *	The normative reference for correct formatting and values is
  646.52 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  646.53 + *  member documentation. The implementation supports this normative
  646.54 + *  reference, but does not enforce it fully. 
  646.55 + *
  646.56 + *  @lib sdpcodec.lib
  646.57 + */
  646.58 +class CSdpAttributeField : public CBase
  646.59 +	{
  646.60 +    public:     // Constructors and destructor
  646.61 +
  646.62 +        /**
  646.63 +         *	Constructs a new attribute field.
  646.64 +		 *			 
  646.65 +         *	@param aText A string containing a correctly 
  646.66 +         *         formatted field value terminated by a CRLF.
  646.67 +         *	@return a new instance.
  646.68 +         */
  646.69 +		IMPORT_C static CSdpAttributeField* DecodeL( const TDesC8& aText );
  646.70 +
  646.71 +        /**
  646.72 +         *	Constructs a new attribute field and adds the pointer to the 
  646.73 +         *  cleanup stack.
  646.74 +		 *		 
  646.75 +         *	@param aTest A string containing a correctly 
  646.76 +         *         formatted field value terminated by a CRLF.
  646.77 +         *	@return a new instance.
  646.78 +         */
  646.79 +		IMPORT_C static CSdpAttributeField* DecodeLC( const TDesC8& aText );
  646.80 +
  646.81 +        /**
  646.82 +         *	Constructs a new attribute field. 
  646.83 +		 *
  646.84 +         *	@param aAttribute The attribute name. It can be a pre-
  646.85 +         *         defined name in the SDP string pool or defined by the 
  646.86 +         *         client.
  646.87 +         *	@param aValue A valid attribute value or an empty 
  646.88 +         *         descriptor to omit the value part.
  646.89 +         *	@return a new instance.
  646.90 +		 */
  646.91 +		IMPORT_C static CSdpAttributeField* NewL(
  646.92 +            RStringF aAttribute, const TDesC8& aValue );
  646.93 +
  646.94 +        /**
  646.95 +         *	Constructs a new attribute field and adds the pointer to the 
  646.96 +         *  cleanup stack. 
  646.97 +		 *
  646.98 +         *	@param aAttribute The attribute name. It can be a pre-defined 
  646.99 +         *         name in the SDP string pool or defined by the client.
 646.100 +         *	@param aValue A valid attribute value or an empty 
 646.101 +         *         descriptor to omit the value part.
 646.102 +         *	@return a new instance.
 646.103 +		 */
 646.104 +		IMPORT_C static CSdpAttributeField* NewLC(
 646.105 +            RStringF aAttribute, const TDesC8& aValue );
 646.106 +
 646.107 + 		/**
 646.108 +		 *	Deletes the resources held by the instance.
 646.109 +		 */
 646.110 +		IMPORT_C ~CSdpAttributeField();
 646.111 +
 646.112 +    public:     // New functions
 646.113 +	
 646.114 +    	/**
 646.115 +		 *	Outputs the field formatted according to SDP syntax and including
 646.116 +		 *  the terminating CRLF.
 646.117 +		 * 
 646.118 +		 *	@param aStream Stream used for output. On return the 
 646.119 +         *         stream includes correctly formatted attribute field.
 646.120 +		 */
 646.121 +		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 646.122 +
 646.123 +		/**
 646.124 +		 *	Creates a new instance that is equal to the target.
 646.125 +		 *
 646.126 +		 *	@return a new instance.
 646.127 +		 */
 646.128 +		IMPORT_C CSdpAttributeField* CloneL() const;
 646.129 +
 646.130 +		/**	
 646.131 +		 *	Compares this instance to another for equality.
 646.132 +		 *
 646.133 +		 *	@param aObj: The instance to compare to.
 646.134 +		 *	@return ETrue if equal, EFalse if not.
 646.135 +		 */
 646.136 +		IMPORT_C TBool operator == ( const CSdpAttributeField& aObj ) const;
 646.137 +
 646.138 +		/**
 646.139 +		 *	Gets the attribute name.
 646.140 +		 *	
 646.141 +		 *	@return	The attribute name. The name can be pre-defined 
 646.142 +         *          name in the SDP string table or defined by the client.
 646.143 +		 */
 646.144 +		IMPORT_C RStringF Attribute() const;
 646.145 +
 646.146 +		/**
 646.147 +		 *	Gets the attribute.
 646.148 +		 *
 646.149 + 		 *	@return	The value or an empty descriptor if there is no value part.
 646.150 +		 */
 646.151 +		IMPORT_C const TDesC8& Value() const;
 646.152 +
 646.153 +		/**
 646.154 +		 *	Sets the attribute and attribute value.
 646.155 +		 *
 646.156 +         *	@param aAttribute A valid attribute name. It can be a 
 646.157 +         *         pre-defined name in the SDP string pool or 
 646.158 +         *         defined by the client.
 646.159 +         *	@param aValue A valid attribute value or an empty 
 646.160 +         *         descriptor to omit the value part.
 646.161 +		 *  @leave KErrSdpCodecAttributeField if the attribute part is not 
 646.162 +		 *         pre-defined EAttributeFmtp or EAttributeRtpmap.
 646.163 +		 */
 646.164 +		IMPORT_C void SetL( RStringF aAttribute, const TDesC8& aValue );
 646.165 +		
 646.166 +		/**
 646.167 + 		 *	Assigns attribute to the format level attribute.
 646.168 + 		 *  In the final output the attribute will placed after format level
 646.169 +		 *  attribute.
 646.170 + 		 *
 646.171 + 		 *	@param aFmtAttribute A format level 
 646.172 + 		 *         attribute this attribute is assigned to.
 646.173 + 		 */
 646.174 + 		IMPORT_C void AssignTo(const CSdpFmtAttributeField& aFmtAttribute);
 646.175 +		
 646.176 +		/**
 646.177 +		 *	Test if the attribute belongs to the given format level attribute.
 646.178 +		 *  Note, that the check can be true for the media level paremeter if
 646.179 +		 *  it appears after the last format level attribute.
 646.180 +		 *
 646.181 +		 *	@param  aFmtAttribute: A format level 
 646.182 +		 *          attribute this attribute belongs to.
 646.183 +		 *	@return	ETrue if attribute belongs to the format level attribute, 
 646.184 +		 *          EFalse otherwise.
 646.185 +		 */
 646.186 +		IMPORT_C TBool BelongsTo(const CSdpFmtAttributeField& aFmtAttribute) const;
 646.187 +
 646.188 +    public:     // Internal to codec
 646.189 +
 646.190 +        /**
 646.191 +         *  Externalizes the object to stream
 646.192 +         *
 646.193 +         *  @param aStream Stream where the object's state will be stored
 646.194 +         */
 646.195 +		void ExternalizeL( RWriteStream& aStream ) const;
 646.196 +
 646.197 +        /**
 646.198 +         *  Creates object from the stream data
 646.199 +         *
 646.200 +         *  @param aStream Stream where the object's state will be read
 646.201 +         *  @return Initialized object
 646.202 +         */
 646.203 +        static CSdpAttributeField* InternalizeL( RReadStream& aStream );
 646.204 +        
 646.205 +        /**
 646.206 +         *  Informs if the attribute belongs to any format level attribute.
 646.207 +         *
 646.208 +         *  @return ETrue if attribute belongs to any format level 
 646.209 +		 *			attribute, EFalse otherwise.
 646.210 +         */
 646.211 +        TBool IsFmtAttribute();
 646.212 +    
 646.213 +	private:    // Constructors
 646.214 +
 646.215 +        /**
 646.216 +         *  Constructor
 646.217 +         */
 646.218 +		CSdpAttributeField();
 646.219 +
 646.220 +        /**
 646.221 +         *  Second phase constructor
 646.222 +         *
 646.223 +         *  @param aText Text string ending to LF character
 646.224 +         */
 646.225 +        void ConstructL( const TDesC8& aText );
 646.226 +
 646.227 +        /**
 646.228 +         *  Second phase constructor
 646.229 +         *
 646.230 +         *  @param aAttribute Attribute identifier
 646.231 +         *  @param aValue Value of the attribute of KNullDesC8
 646.232 +         */
 646.233 +        void ConstructL( RStringF aAttribute, const TDesC8& aValue );
 646.234 +    
 646.235 +    private:    // Internal
 646.236 +
 646.237 +        /**
 646.238 +         *  Verifies that attribute is valid property attribute and initializes
 646.239 +         *  the member variables of class accordingly
 646.240 +         *
 646.241 +         *  @param aAttribute Attribute in descriptor
 646.242 +         */
 646.243 +        void FormatProperyAttributeL( const TDesC8& aAttribute );
 646.244 +
 646.245 +        /**
 646.246 +         *  Verifies that attribute is valid value attribute and initializes
 646.247 +         *  the member variables of class accordingly
 646.248 +         *
 646.249 +         *  @param aArray Array of the attributes
 646.250 +         */
 646.251 +        void FormatValueAttributeL( const TDesC8& aAttribute,
 646.252 +                                    const TDesC8& aValue );
 646.253 +
 646.254 +        /**
 646.255 +         *  Verifies that the value is valid for the attribute
 646.256 +         *
 646.257 +         *  @param aAttribute The attribute
 646.258 +         *  @param aArray Array containing the values (and attribute)
 646.259 +         */
 646.260 +        void VerifyValueAttributeL( SdpCodecStringConstants::TStrings aString,
 646.261 +                                    const TDesC8& aValue );
 646.262 +                                    
 646.263 +        /**
 646.264 +         *  Forms attribute and value strings out of the token array
 646.265 +         *  and pushes both (aAttribute & aValue) into cleanup stack
 646.266 +         *
 646.267 +         *  @param aArray Token array
 646.268 +         *  @param aAttribute Attribute string (in cleanup stack)
 646.269 +         *  @param aValue Value string (in cleanup stack)
 646.270 +         */
 646.271 +        void CreateAttributeAndValueStringsLC( RArray<TPtrC8>& aArray,
 646.272 +                                               HBufC8*& aAttribute,
 646.273 +                                               HBufC8*& aValue );
 646.274 +
 646.275 +        /**
 646.276 +         *  Checks if the value is among the valid orient attributes
 646.277 +         *
 646.278 +         *  @param aValue Value string
 646.279 +         */
 646.280 +        void CheckValidOrientL( const TDesC8& aValue );
 646.281 +
 646.282 +        /**
 646.283 +         *  Checks if the value is valid language attribute as
 646.284 +         *  specified in RFC 3066
 646.285 +         *
 646.286 +         *  @param aValue Value string
 646.287 +         */
 646.288 +        void CheckValidLangStrL( const TDesC8& aValue );
 646.289 +
 646.290 +        /**
 646.291 +         *  Checks if the value is valid framerate attribute
 646.292 +         *
 646.293 +         *  @param aValue Value string
 646.294 +         */
 646.295 +        void CheckValidFrameRateL( const TDesC8& aValue );
 646.296 +        
 646.297 +        /**
 646.298 +         *  Checks if the value is among valid uri value for control attribute
 646.299 +         *
 646.300 +         *  @param aValue Value string
 646.301 +         */       
 646.302 +        void CheckValidControlL( const TDesC8& aValue );
 646.303 +
 646.304 +        /**
 646.305 +         *  Checks if the value is valid value for group attribute as
 646.306 +         *  specified in RFC 3388
 646.307 +         *
 646.308 +         *  @param aValue Value string
 646.309 +         */       
 646.310 +        void CheckValidGroupL( const TDesC8& aValue );
 646.311 +
 646.312 +        /**
 646.313 +         *  Checks if the value is valid value for des attribute as
 646.314 +         *  specified in RFC 3312
 646.315 +         *
 646.316 +         *  @param aValue Value string
 646.317 +         */       
 646.318 +        void CheckValidDesL( const TDesC8& aValue );
 646.319 +
 646.320 +        /**
 646.321 +         *  Checks if the value is valid value for curr and conf attribute as
 646.322 +         *  specified in RFC 3312
 646.323 +         *
 646.324 +         *  @param aValue Value string
 646.325 +         */       
 646.326 +        void CheckValidCurrAndConfL( const TDesC8& aValue );
 646.327 +
 646.328 +        /**
 646.329 +         *  Checks if value is included in the list of predefined values
 646.330 +         *
 646.331 +         *  @param aItemsCount Predefined values count
 646.332 +         *  @param aValuesList List of predefined values
 646.333 +         *  @param aValue Value string
 646.334 +         */       
 646.335 +        void ValidValueInListL( TInt aItemsCount, 
 646.336 +                                const TText8* const aValuesList[], 
 646.337 +                                const TDesC8& aValue );
 646.338 +
 646.339 +        /**
 646.340 +         *  Checks if the value is valid value for range attribute as
 646.341 +         *  specified in RFC 2326
 646.342 +         *
 646.343 +         *  @param aValue Value string
 646.344 +         */       
 646.345 +        void CheckValidRangeL( const TDesC8& aValue );
 646.346 +
 646.347 +
 646.348 +        /**
 646.349 +         *  Checks if the value is valid rtpmap string
 646.350 +         *
 646.351 +         *  @param aValue Value string
 646.352 +         */   
 646.353 +        void CheckValidRtpmapL( const TDesC8& aValue );
 646.354 +
 646.355 +        /**
 646.356 +         *  Checks if the value is valid fmtp string
 646.357 +         *
 646.358 +         *  @param aValue Value string
 646.359 +         */   
 646.360 +        void CheckValidFmtpL( const TDesC8& aValue );
 646.361 +        
 646.362 +        /**
 646.363 +         *  Set attribute and values. Attribute is not one of predefined ones.
 646.364 +         *
 646.365 +         *  @param aAttribute Attribute string (in cleanup stack)
 646.366 +         *  @param aValue Value string
 646.367 +         */   
 646.368 +        void SetNotPredefinedAttributeL( const TDesC8& aAttribute, 
 646.369 +                                         const TDesC8& aValue );
 646.370 +        
 646.371 +        void CreateAttributeFieldPtrsL();
 646.372 +        
 646.373 +        inline CSdpAttributeFieldPtrs& AttributeFieldPtrs();      
 646.374 +        
 646.375 +        inline const CSdpAttributeFieldPtrs& AttributeFieldPtrs() const;
 646.376 +        
 646.377 +        __DECLARE_TEST;
 646.378 +
 646.379 +    private:    // Data
 646.380 +
 646.381 +        // String pool
 646.382 +        RStringPool iPool;
 646.383 +
 646.384 +        // Attribute name
 646.385 +        RStringF iAttribute;
 646.386 +
 646.387 +        // Flag indicating if the attribute is a property attribute
 646.388 +        TBool iPropertyAttribute;
 646.389 +
 646.390 +        // Value field
 646.391 +        HBufC8* iValue;
 646.392 +	};
 646.393 +
 646.394 +#endif // CSDPATTRIBUTEFIELD_H
   647.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   647.2 +++ b/epoc32/include/mw/sdpbandwidthfield.h	Wed Mar 31 12:27:01 2010 +0100
   647.3 @@ -0,0 +1,190 @@
   647.4 +/*
   647.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   647.6 +* All rights reserved.
   647.7 +* This component and the accompanying materials are made available
   647.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   647.9 +* which accompanies this distribution, and is available
  647.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  647.11 +*
  647.12 +* Initial Contributors:
  647.13 +* Nokia Corporation - initial contribution.
  647.14 +*
  647.15 +* Contributors:
  647.16 +*
  647.17 +* Description:
  647.18 +* Name          : SdpBandwidthField.h
  647.19 +* Part of       : SDP Codec
  647.20 +* Interface     : SDK API, SDP Codec API
  647.21 +* Version       : 1.0
  647.22 +*
  647.23 +*/
  647.24 +
  647.25 +
  647.26 +
  647.27 +#ifndef CSDPBANDWIDTHFIELD_H
  647.28 +#define CSDPBANDWIDTHFIELD_H
  647.29 +
  647.30 +//  INCLUDES
  647.31 +#include <e32base.h>
  647.32 +#include <stringpool.h>
  647.33 +#include "_sdpdefs.h"
  647.34 +
  647.35 +// FORWARD DECLARATIONS
  647.36 +class RReadStream;
  647.37 +class RWriteStream;
  647.38 +
  647.39 +// CLASS DECLARATION
  647.40 +/**
  647.41 + *  @publishedAll
  647.42 + *  @released
  647.43 + *
  647.44 + *	This class encapsulates the bandwidth field of 
  647.45 + *  the Session Description Protocol.
  647.46 + * 
  647.47 + *	The normative reference for correct formatting and values is
  647.48 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  647.49 + *  member documentation. The implementation supports this normative
  647.50 + *  reference, but does not enforce it fully. 
  647.51 + *
  647.52 + *  @lib sdpcodec.lib
  647.53 + */
  647.54 +class CSdpBandwidthField : public CBase
  647.55 +	{
  647.56 +	public:// Constructors and destructor
  647.57 +       /**
  647.58 +         *	Constructs a new bandwidth field.
  647.59 +		 *	
  647.60 +         *	@param aText A string containing a correctly 
  647.61 +         *         formatted field value terminated by a CRLF.
  647.62 +         *	@return a new instance.
  647.63 +         */
  647.64 +		IMPORT_C static CSdpBandwidthField* DecodeL(const TDesC8& aText);
  647.65 +
  647.66 +         /**
  647.67 +         *	Constructs a new bandwidth field and adds the pointer to the 
  647.68 +         *  cleanup stack.
  647.69 +		 *	
  647.70 +         *	@param aText A string containing a correctly 
  647.71 +         *         formatted field value terminated by a CRLF.
  647.72 +         *	@return a new instance.
  647.73 +         */
  647.74 +		IMPORT_C static CSdpBandwidthField* DecodeLC(const TDesC8& aText);
  647.75 +
  647.76 +        /**
  647.77 +         *	Constructs a new bandwidth field.
  647.78 +		 *
  647.79 +         *	@param aModifier Bandwidth modifier.
  647.80 +		 *  @param aValue Bandwidth value.
  647.81 +         *	@return a new instance.
  647.82 +		 */
  647.83 +		IMPORT_C static CSdpBandwidthField* NewL(RStringF aModifier,
  647.84 +												 TUint32 aValue);
  647.85 +
  647.86 +        /**
  647.87 +         *	Constructs a new bandwidth field and adds the pointer to the 
  647.88 +         *  cleanup stack.
  647.89 +		 *
  647.90 +         *	@param aModifier Bandwidth modifier.
  647.91 +		 *  @param aValue Bandwidth value.
  647.92 +         *	@return a new instance.
  647.93 +		 */
  647.94 +		IMPORT_C static CSdpBandwidthField* NewLC(RStringF aModifier,
  647.95 +												  TUint32 aValue);
  647.96 +
  647.97 + 
  647.98 +        /**
  647.99 +		 *	Deletes the resources held by the instance.
 647.100 +		 */
 647.101 +		IMPORT_C ~CSdpBandwidthField();
 647.102 +
 647.103 +    public: // New functions
 647.104 +		/**
 647.105 +		 *	Outputs the field formatted according to SDP syntax and including
 647.106 +		 *  the terminating CRLF.
 647.107 +		 * 
 647.108 +		 *	@param aStream Stream used for output. On return 
 647.109 +         *         the stream includes correctly formatted bandwidth field.
 647.110 +		 */
 647.111 +		IMPORT_C void EncodeL(RWriteStream& aStream) const;
 647.112 +
 647.113 +		/**
 647.114 +		 *	Creates a new instance that is equal to the target.
 647.115 +		 *
 647.116 +		 *	@return a new instance.
 647.117 +		 */
 647.118 +		IMPORT_C CSdpBandwidthField * CloneL() const;
 647.119 +
 647.120 +		/**	
 647.121 +		 *	Compares this instance to another for equality.
 647.122 +		 *
 647.123 +		 *	@param aObj The instance to compare to.
 647.124 +		 *	@return ETrue if equal, EFalse if not.
 647.125 +		 */
 647.126 +		IMPORT_C TBool operator == (const CSdpBandwidthField& aObj) const;
 647.127 +
 647.128 +		/**
 647.129 +		 *	Gets the bandwidth modifier.
 647.130 +		 *
 647.131 +		 *	@return The modifier that can be pre-defined in the 
 647.132 +		 *          SDP string table or defined by the user.
 647.133 +		 */
 647.134 +		IMPORT_C RStringF Modifier() const;
 647.135 +
 647.136 +		/**
 647.137 +		 *	Sets the bandwidth modifier.
 647.138 +		 *
 647.139 +         *	@param aModifier A valid bandwidth modifier name.
 647.140 +		 */
 647.141 +		IMPORT_C void SetModifier(RStringF aModifier);
 647.142 +
 647.143 +		/**
 647.144 +		 *	Gets the bandwidth value.
 647.145 +		 *
 647.146 +		 *	@return The value.
 647.147 +		 */
 647.148 +		IMPORT_C TUint32 Value() const;
 647.149 +
 647.150 +		/**
 647.151 +		 *	Sets the bandwidth value.
 647.152 +		 *
 647.153 +		 *	@param aValue The Value.
 647.154 +		 */
 647.155 +		IMPORT_C void SetValue(TUint32 aValue);
 647.156 +
 647.157 +    public:
 647.158 +		/**
 647.159 +		 *	Externalize the instance in a memory optimized format.
 647.160 +		 *
 647.161 +		 *	@param aStream The stream used for externalization.
 647.162 +		 */
 647.163 +		void ExternalizeL(RWriteStream& aStream) const;
 647.164 +
 647.165 +		/**
 647.166 +		 *	Create a new instance from value created with ExternalizeL().
 647.167 +		 *
 647.168 +		 *	@param aStream The stream used for internalization.
 647.169 +		 *	@return	The new instance.
 647.170 +		 */
 647.171 +        static CSdpBandwidthField* InternalizeL(RReadStream& aStream);
 647.172 +
 647.173 +    private:
 647.174 +        CSdpBandwidthField();
 647.175 +		void ConstructL(const TDesC8& aText);
 647.176 +		void ConstructL(RStringF aModifier, TUint32 aValue);
 647.177 +		void ConstructL(const TDesC8& aModifier, TUint32 aValue);
 647.178 +
 647.179 +        /**
 647.180 +         *  Copies given modifier to iModifier. If aModifier is none of 
 647.181 +         *  predefined ones, new modifier is added to stringPool.
 647.182 +         *
 647.183 +         *  @param aModifier Given modifier
 647.184 +         */
 647.185 +        void CopyModifierL(const TDesC8& aModifier);
 647.186 +
 647.187 +    private: // Data
 647.188 +		RStringF iModifier;
 647.189 +        TUint32 iValue;
 647.190 +        RStringPool iStringPool;
 647.191 +	};
 647.192 +
 647.193 +#endif // CSDPBANDWIDTHFIELD_H
   648.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   648.2 +++ b/epoc32/include/mw/sdpcodecconstants.h	Wed Mar 31 12:27:01 2010 +0100
   648.3 @@ -0,0 +1,59 @@
   648.4 +/*
   648.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   648.6 +* All rights reserved.
   648.7 +* This component and the accompanying materials are made available
   648.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   648.9 +* which accompanies this distribution, and is available
  648.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  648.11 +*
  648.12 +* Initial Contributors:
  648.13 +* Nokia Corporation - initial contribution.
  648.14 +*
  648.15 +* Contributors:
  648.16 +*
  648.17 +* Description:
  648.18 +* Name          : SdpCodecConstants.h
  648.19 +* Part of       : SDPCodec
  648.20 +* Constants defination file 
  648.21 +* Version       : 1.0 
  648.22 +*
  648.23 +*/
  648.24 +
  648.25 +
  648.26 +
  648.27 +
  648.28 +#ifndef __SDPCODECCONSTANTS_H__
  648.29 +#define __SDPCODECCONSTANTS_H__
  648.30 +
  648.31 +/**
  648.32 +* @file
  648.33 +* @publishedAll
  648.34 +* @released
  648.35 +*/
  648.36 +
  648.37 +
  648.38 +// Delimiter constants
  648.39 +const TText8 KDotChar = '.';
  648.40 +const TText8 KColonChar = ':';
  648.41 +const TText8 KSPChar = ' ';  
  648.42 +const TText8 KEqualChar = '=';
  648.43 +const TText8 KSlashChar = '/';
  648.44 +const TText8 KHyphenChar = '-';
  648.45 +const TText8 KLFChar = '\n';
  648.46 +const TText8 KCRChar = '\r';
  648.47 +const TText8 KEofChar = '\0';
  648.48 +
  648.49 +_LIT8(KDotStr, ".");
  648.50 +_LIT8(KColonStr, ":");
  648.51 +_LIT8(KSPStr, " ");
  648.52 +_LIT8(KEqualStr, "=");
  648.53 +_LIT8(KSlashStr, "/");
  648.54 +_LIT8(KHyphenStr, "-");
  648.55 +_LIT8(KCRLFStr, "\r\n");
  648.56 +_LIT8(KLFStr, "\n");
  648.57 +_LIT8(KCRStr, "\r");
  648.58 +_LIT8(KEofStr, "\0");
  648.59 +_LIT8(KValidFQDNChars, 
  648.60 +      "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-");
  648.61 +
  648.62 +#endif
   649.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   649.2 +++ b/epoc32/include/mw/sdpcodecerr.h	Wed Mar 31 12:27:01 2010 +0100
   649.3 @@ -0,0 +1,65 @@
   649.4 +/*
   649.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   649.6 +* All rights reserved.
   649.7 +* This component and the accompanying materials are made available
   649.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   649.9 +* which accompanies this distribution, and is available
  649.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  649.11 +*
  649.12 +* Initial Contributors:
  649.13 +* Nokia Corporation - initial contribution.
  649.14 +*
  649.15 +* Contributors:
  649.16 +*
  649.17 +* Description:
  649.18 +* Name          : SdpCodecErr.h
  649.19 +* Part of       : SDP Codec
  649.20 +* Interface     : SDK API, SDP Codec API
  649.21 +* Version       : 1.0
  649.22 +*
  649.23 +*/
  649.24 +
  649.25 +
  649.26 +
  649.27 +#ifndef SDPCODECERR_H
  649.28 +#define SDPCODECERR_H
  649.29 +
  649.30 +/**
  649.31 +* @file
  649.32 +* @publishedAll
  649.33 +* @released
  649.34 +*/
  649.35 +
  649.36 +/**
  649.37 + * Base value for the SdpCode error code range
  649.38 + */
  649.39 +const TInt KSdpCodecErrorBase = -17875;
  649.40 +/**
  649.41 + * Codec encoding errors for SDP fields
  649.42 + */
  649.43 +const TInt KErrSdpCodecVersionField			= KSdpCodecErrorBase;
  649.44 +const TInt KErrSdpCodecOriginField			= KSdpCodecErrorBase - 1; 
  649.45 +const TInt KErrSdpCodecSessionField			= KSdpCodecErrorBase - 2; 
  649.46 +const TInt KErrSdpCodecInfoField			= KSdpCodecErrorBase - 3; 
  649.47 +const TInt KErrSdpCodecUriField				= KSdpCodecErrorBase - 4; 
  649.48 +const TInt KErrSdpCodecEmailField			= KSdpCodecErrorBase - 5; 
  649.49 +const TInt KErrSdpCodecPhoneField			= KSdpCodecErrorBase - 6; 
  649.50 +const TInt KErrSdpCodecConnectionField		= KSdpCodecErrorBase - 7; 
  649.51 +const TInt KErrSdpCodecBandwidthField		= KSdpCodecErrorBase - 8; 
  649.52 +const TInt KErrSdpCodecTimeField			= KSdpCodecErrorBase - 9; 
  649.53 +const TInt KErrSdpCodecRepeatField			= KSdpCodecErrorBase - 10; 
  649.54 +const TInt KErrSdpCodecZoneField			= KSdpCodecErrorBase - 11; 
  649.55 +const TInt KErrSdpCodecKeyField				= KSdpCodecErrorBase - 12; 
  649.56 +const TInt KErrSdpCodecAttributeField		= KSdpCodecErrorBase - 13; 
  649.57 +const TInt KErrSdpCodecMediaField			= KSdpCodecErrorBase - 14; 
  649.58 +const TInt KErrSdpCodecMediaInfoField		= KSdpCodecErrorBase - 15; 
  649.59 +const TInt KErrSdpCodecMediaConnectionField	= KSdpCodecErrorBase - 16; 
  649.60 +const TInt KErrSdpCodecMediaBandwidthField	= KSdpCodecErrorBase - 17; 
  649.61 +const TInt KErrSdpCodecMediaKeyField	    = KSdpCodecErrorBase - 18; 
  649.62 +const TInt KErrSdpCodecMediaAttributeField	= KSdpCodecErrorBase - 19; 
  649.63 +const TInt KErrSdpCodecTypedTime            = KSdpCodecErrorBase - 20;
  649.64 +
  649.65 +const TInt KErrSdpCodecStringPool           = KSdpCodecErrorBase - 21;
  649.66 +const TInt KErrSdpCodecDecode				= KSdpCodecErrorBase - 22;
  649.67 +
  649.68 +#endif //SDPCODECERR_H
   650.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   650.2 +++ b/epoc32/include/mw/sdpcodecstringpool.h	Wed Mar 31 12:27:01 2010 +0100
   650.3 @@ -0,0 +1,88 @@
   650.4 +/*
   650.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   650.6 +* All rights reserved.
   650.7 +* This component and the accompanying materials are made available
   650.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   650.9 +* which accompanies this distribution, and is available
  650.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  650.11 +*
  650.12 +* Initial Contributors:
  650.13 +* Nokia Corporation - initial contribution.
  650.14 +*
  650.15 +* Contributors:
  650.16 +*
  650.17 +* Description:
  650.18 +* Name          : SdpCodecStringPool.h
  650.19 +* Part of       : SDP Codec
  650.20 +* Interface     : SDK API, SDP Codec API
  650.21 +* Version       : 1.0
  650.22 +*
  650.23 +*/
  650.24 +
  650.25 +
  650.26 +
  650.27 +#ifndef SDPCODECSTRINGPOOL_H
  650.28 +#define SDPCODECSTRINGPOOL_H
  650.29 +
  650.30 +//  INCLUDES
  650.31 +#include <e32base.h>
  650.32 +#include "_sdpdefs.h"
  650.33 +#include <stringpool.h>
  650.34 +
  650.35 +class CSdpCodecStringPool;
  650.36 +
  650.37 +// CLASS DECLARATION
  650.38 +/**
  650.39 +* @publishedAll
  650.40 +* @released
  650.41 +*
  650.42 +* This class defines string pool for SDP Codec.
  650.43 +* The client of SDP Codec must call OpenL() before 
  650.44 +* invoking any function of SDP Codec classes.
  650.45 +* The client must close the string pool when finished using
  650.46 +* SDP Codec classes.
  650.47 +*
  650.48 +* Note: the client must not close the string pool while
  650.49 +*       using SDP Codec classes.
  650.50 +* 
  650.51 +* @lib sdpcodec.lib
  650.52 +*/
  650.53 +class SdpCodecStringPool
  650.54 +	{
  650.55 +public: // Constructors and destructor
  650.56 + 		
  650.57 +	/**
  650.58 +	* Opens SDP Codec string pool.
  650.59 +	*
  650.60 +    * @leave KErrAlreadyExists if pool already exists in TLS.
  650.61 +	*/
  650.62 +	IMPORT_C static void OpenL();
  650.63 +
  650.64 +	/**
  650.65 +	* Closes SDP Codec string pool.
  650.66 +	*
  650.67 +	*/
  650.68 +	IMPORT_C static void Close(); 
  650.69 +
  650.70 +public: 
  650.71 +	
  650.72 +	/**
  650.73 +	* Gets the string pool used by SDP Codec.
  650.74 +	*
  650.75 +	* @return RStringPool: A handle to a string pool
  650.76 +	* @leave KErrSdpCodecStringPool if the pool is not opened.
  650.77 +	*
  650.78 +	*/
  650.79 +	IMPORT_C static RStringPool StringPoolL();
  650.80 +
  650.81 +	/**
  650.82 +	* Gets the string table used by SDP Codec.
  650.83 +	*
  650.84 +	* @return TStringTable&: The string pool table
  650.85 +	* @leave KErrSdpCodecStringPool if the pool is not opened.
  650.86 +	*
  650.87 +	*/
  650.88 +	IMPORT_C static const TStringTable& StringTableL();
  650.89 +	};
  650.90 +
  650.91 +#endif
   651.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   651.2 +++ b/epoc32/include/mw/sdpconnectionfield.h	Wed Mar 31 12:27:01 2010 +0100
   651.3 @@ -0,0 +1,443 @@
   651.4 +/*
   651.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   651.6 +* All rights reserved.
   651.7 +* This component and the accompanying materials are made available
   651.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   651.9 +* which accompanies this distribution, and is available
  651.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  651.11 +*
  651.12 +* Initial Contributors:
  651.13 +* Nokia Corporation - initial contribution.
  651.14 +*
  651.15 +* Contributors:
  651.16 +*
  651.17 +* Description:
  651.18 +* Name          : SdpConnectionField.h
  651.19 +* Part of       : SDP Codec
  651.20 +* Interface     : SDK API, SDP Codec API
  651.21 +* Version       : 1.0
  651.22 +*
  651.23 +*/
  651.24 +
  651.25 +
  651.26 +
  651.27 +#ifndef CSDPCONNECTIONFIELD_H
  651.28 +#define CSDPCONNECTIONFIELD_H
  651.29 +
  651.30 +//  INCLUDES
  651.31 +#include <e32base.h>
  651.32 +#include <in_sock.h>
  651.33 +#include <stringpool.h>
  651.34 +#include "_sdpdefs.h"
  651.35 +
  651.36 +// CONSTANTS
  651.37 +const TUint KDefaultNumOfAddress = 1;
  651.38 +
  651.39 +// FORWARD DECLARATIONS
  651.40 +class RReadStream;
  651.41 +class RWriteStream;
  651.42 +
  651.43 +// CLASS DECLARATION
  651.44 +/**
  651.45 + *  @publishedAll
  651.46 + *  @released
  651.47 + *
  651.48 + *	This class encapsulates the connection information field of 
  651.49 + *  the Session Description Protocol.
  651.50 + *
  651.51 + *	The normative reference for correct formatting and values is
  651.52 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  651.53 + *  member documentation. The implementation supports this normative
  651.54 + *  reference, but does not enforce it fully. 
  651.55 + *
  651.56 + *  @lib sdpcodec.lib
  651.57 + */
  651.58 +class CSdpConnectionField : public CBase
  651.59 +	{
  651.60 +    public: // Constructors and destructor
  651.61 +
  651.62 +        /**
  651.63 +         *	Constructs a new connection field.
  651.64 +		 * 
  651.65 +         *	@param aText A string containing a correctly 
  651.66 +         *         formatted field value terminated by a CRLF.
  651.67 +         *	@return a new instance.
  651.68 +         */
  651.69 +		IMPORT_C static CSdpConnectionField* DecodeL( const TDesC8& aText );
  651.70 +
  651.71 +        /**
  651.72 +         *	Constructs a new connection field and adds the pointer to the 
  651.73 +         *  cleanup stack.
  651.74 +		 *	
  651.75 +         *	@param aText A string containing a correctly 
  651.76 +         *         formatted field value terminated by a CRLF.
  651.77 +         *	@return a new instance.
  651.78 +         */
  651.79 +		IMPORT_C static CSdpConnectionField* DecodeLC( const TDesC8& aText );
  651.80 +
  651.81 +        /**
  651.82 +         *	Constructs a new connection field.
  651.83 +		 *	Also sets the network type to "IN" and address type to "IP4" or
  651.84 +		 *  "IP6" depending on the address family of aAddress.
  651.85 +		 *	
  651.86 +		 *	@param aAddress IP address from either KAfInet 
  651.87 +         *         or KAfInet6 family
  651.88 +         *  @param aTTL Time-To-Live for IP4 multicasts, set it as
  651.89 +         *         KErrNotFound if IPv6 multicast or IPv4 unicast
  651.90 +         *  @param aNumOfAddress Number of addresses in multicast,
  651.91 +         *         if unicast, must be 1
  651.92 +         *	@return a new instance.
  651.93 +         */
  651.94 +		IMPORT_C static CSdpConnectionField* NewL(            
  651.95 +            const TInetAddr& aAddress,
  651.96 +            TInt aTTL = KErrNotFound, 
  651.97 +            TUint aNumOfAddress = KDefaultNumOfAddress );
  651.98 +
  651.99 +        /**
 651.100 +         *	Constructs a new connection field.
 651.101 +		 *	
 651.102 +         *	@param aNetType A valid network type name from the pre-
 651.103 +         *              defined SDP string table or defined by the user.
 651.104 +		 *  @paramaAddressType A valid address type name from the 
 651.105 +         *              pre-defined SDP string table or defined by the user.
 651.106 +		 *	@param  const TDesC8& aAddress: A valid address of the address type.
 651.107 +         *              Can contain TTL & number of addresses parameter as well.
 651.108 +         *	@return a new instance.
 651.109 +         */
 651.110 +		IMPORT_C static CSdpConnectionField* NewL(
 651.111 +			RStringF aNetType, 
 651.112 +			RStringF aAddressType, 
 651.113 +			const TDesC8& aAddress );
 651.114 +
 651.115 +		/**
 651.116 +         *	Constructs a new connection field and adds the pointer to the 
 651.117 +         *  cleanup stack. Also sets the network type to "IN" and address type
 651.118 +		 *	to "IP4" or "IP6" depending on the address family of aAddress.
 651.119 +		 *
 651.120 +		 *	@param aAddress IP address from either KAfInet 
 651.121 +         *              or KAfInet6 family
 651.122 +         *  @param aTTL Time-To-Live for IP4 multicasts, set it as
 651.123 +         *              KErrNotFound if IPv6 multicast or IPv4 unicast
 651.124 +         *  @param aNumOfAddress Number of addresses in multicast,
 651.125 +         *              if unicast, must be 1
 651.126 +         *	@return a new instance.
 651.127 +         */
 651.128 +		IMPORT_C static CSdpConnectionField* NewLC(       
 651.129 +            const TInetAddr& aAddress, 
 651.130 +            TInt aTTL = KErrNotFound,
 651.131 +            TUint aNumOfAddress = KDefaultNumOfAddress );
 651.132 +
 651.133 +        /**
 651.134 +         *	Construct a new connection field  and adds the pointer to the
 651.135 +         *  cleanup stack.
 651.136 +		 *	
 651.137 +         *	@param aNetType A valid network type name from the pre-
 651.138 +         *         defined SDP string table or defined by the user
 651.139 +		 *  @paramaAddressType A valid address type name from the 
 651.140 +         *              pre-defined SDP string table or defined by the user
 651.141 +		 *	@param  const TDesC8& aAddress: A valid address of the address type.
 651.142 +         *              Can contain TTL & number of addresses parameter as well.
 651.143 +         *	@return a new instance.
 651.144 +         */
 651.145 +		IMPORT_C static CSdpConnectionField* NewLC(
 651.146 +            RStringF aNetType, RStringF aAddressType, const TDesC8& aAddress );
 651.147 +
 651.148 +		/**
 651.149 +		 *	Deletes the resources held by the instance.
 651.150 +		 */
 651.151 +		IMPORT_C ~CSdpConnectionField();
 651.152 +
 651.153 +    public: // New functions
 651.154 +
 651.155 +		/**
 651.156 +		 *	Outputs the field formatted according to SDP syntax and including
 651.157 +		 *  the terminating CRLF.
 651.158 +		 * 
 651.159 +		 *	@param aStream: Stream used for output. On return the
 651.160 +         *         stream includes correctly formatted connection field.
 651.161 +		 */
 651.162 +		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 651.163 +
 651.164 +		/**
 651.165 +		 *	Creates a new instance that is equal to the target.
 651.166 +		 *
 651.167 +		 *	@return a new instance.
 651.168 +		 */
 651.169 +		IMPORT_C CSdpConnectionField* CloneL() const;
 651.170 +
 651.171 +		/**	
 651.172 +		 *	Compares this instance to another for equality.
 651.173 +		 *
 651.174 +		 *	@param const CSdpConnectionField& aObj: The instance to compare to.
 651.175 +		 *	@return ETrue if equal, EFalse if not.
 651.176 +		 */
 651.177 +		IMPORT_C TBool operator== ( const CSdpConnectionField& aObj ) const;
 651.178 +
 651.179 +		/**
 651.180 +		 *	Gets the network type that is from the pre-defined SDP string table
 651.181 +         *  or given by the user.
 651.182 +		 *
 651.183 +		 *	@return The network type.
 651.184 +		 */
 651.185 +		IMPORT_C RStringF NetType() const;
 651.186 +
 651.187 +		/**
 651.188 +		 *	Gets the address type that is from the pre-defined SDP string table 
 651.189 +         *  or given by the user.
 651.190 +		 *
 651.191 +		 *	@return The address type.
 651.192 +		 */
 651.193 +		IMPORT_C RStringF AddressType() const;
 651.194 +
 651.195 +		/**
 651.196 +		 *	Gets the address.
 651.197 +		 *
 651.198 +		 *	@return Address as an IP address or null if it is
 651.199 +         *          not an IP address. This may be e.g. when the address
 651.200 +		 *          has been specified as a FQDN. In this case, the address
 651.201 +         *          can be accessed using the other getters.
 651.202 +		 */
 651.203 +		IMPORT_C const TInetAddr* InetAddress() const;
 651.204 +
 651.205 +		/**
 651.206 +		 *	Gets the address.
 651.207 +		 *
 651.208 +		 *  @return Address as a string.
 651.209 +		 */
 651.210 +		IMPORT_C const TDesC8& Address() const;
 651.211 +
 651.212 +		/**
 651.213 +		 *	Sets the address, network and address type. Also sets the network 
 651.214 +		 *	type to "IN" and address type to "IP4" or "IP6" depending on the 
 651.215 +		 *  address family of aAddress.
 651.216 +		 *
 651.217 +		 *	@param aValue The new address.
 651.218 +         *  @param aTTL Time-To-Live for IP4 multicasts, set it as
 651.219 +         *         KErrNotFound if IPv6 multicast or IPv4 unicast
 651.220 +         *  @param aNumOfAddress Number of addresses in multicast,
 651.221 +         *         if unicast, must be 1.
 651.222 +         *  @leave KErrSdpCodecConnectionField ifaddress to be set is wrongly 
 651.223 +         *         formatted.
 651.224 +         */
 651.225 +		IMPORT_C void SetInetAddressL( const TInetAddr& aValue, 
 651.226 +                                   TInt aTTL = KErrNotFound,
 651.227 +                                   TUint aNumOfAddress = KDefaultNumOfAddress);
 651.228 +
 651.229 +		/**
 651.230 +		 *	Sets the address, network and address type.
 651.231 +		 *
 651.232 +         *	@param aNetType A valid network type name from the pre-
 651.233 +         *         defined SDP string table or defined by the user
 651.234 +		 *  @param aAddressType A valid address type name from the 
 651.235 +         *         pre-defined SDP string table or defined by the user
 651.236 +		 *	@param aAddress A valid address of the address type.
 651.237 +		 */
 651.238 +		IMPORT_C void SetAddressL( RStringF aNetType, 
 651.239 +								   RStringF aAddressType, 
 651.240 +								   const TDesC8& aAddress );
 651.241 +
 651.242 +        /**
 651.243 +         *  Gets TTL attribute.
 651.244 +         *
 651.245 +         *  @return TTL or KErrNotFound, if one is not available for the address
 651.246 +         */
 651.247 +        IMPORT_C TInt TTLValue() const;
 651.248 +
 651.249 +        /**
 651.250 +         *  Sets TTL attribute (only valid for IP4 multicasts).
 651.251 +         *  Leaves if trying to set TTL to address that doesn't support it.
 651.252 +         *
 651.253 +         *  @param aTTL Time-To-Live for IP4 multicasts
 651.254 +         *	@leave KErrSdpCodecConnectionField if aTTL is invalid.
 651.255 +         */
 651.256 +        IMPORT_C void SetTTLL( TInt aTTL );
 651.257 +
 651.258 +        /**
 651.259 +         *  Gets the number of addresses (can be more than 1 for multicasts).
 651.260 +         *  Multicast addresses are contiguously allocated above the base 
 651.261 +         *  address.
 651.262 +         *
 651.263 +         *  @return Number of addresses
 651.264 +         */
 651.265 +        IMPORT_C TInt NumOfAddress() const;
 651.266 +         
 651.267 +        /**
 651.268 +         *  Sets the number of addreses allocated for multicast. 
 651.269 +         *  
 651.270 +         *	@param aNumOfAddress Number of addresses in multicast
 651.271 +         *  @leave KErrSdpCodecConnectionField if the address is unicast.
 651.272 +         */
 651.273 +        IMPORT_C void SetNumOfAddressL( TUint aNumOfAddress );
 651.274 +
 651.275 +    public:     // Internal to codec
 651.276 +
 651.277 +        /**
 651.278 +         *  Externalizes the object to stream
 651.279 +         *
 651.280 +         *  @param aStream Stream where the object's state will be stored
 651.281 +         */
 651.282 +		void ExternalizeL( RWriteStream& aStream ) const;
 651.283 +
 651.284 +        /**
 651.285 +         *  Creates object from the stream data
 651.286 +         *
 651.287 +         *  @param aStream Stream where the object's state will be read
 651.288 +         *  @return Initialized object
 651.289 +         */
 651.290 +		static CSdpConnectionField* InternalizeL( RReadStream& aStream );
 651.291 +
 651.292 +    private:    // Internal
 651.293 +
 651.294 +        /**
 651.295 +         *  Constructor
 651.296 +         */
 651.297 +        CSdpConnectionField();
 651.298 +
 651.299 +        /**
 651.300 +         *  2nd phase constructor
 651.301 +         *
 651.302 +         *	@param aText A string containing a correctly formatted field value
 651.303 +		 *         terminated by a CRLF.         
 651.304 +         */         
 651.305 +        void ConstructL( const TDesC8& aText );
 651.306 +        
 651.307 +        /**
 651.308 +         *  2nd phase constructor
 651.309 +         *
 651.310 +         *	@param aAddress IP address from either KAfInet or KAfInet6 family
 651.311 +         *  @param aTTL Time-To-Live for IP4 multicasts
 651.312 +         *  @param aNumOfAddress Nubmer of addresses in multicast
 651.313 +         */
 651.314 +        void ConstructL( const TInetAddr& aAddress,
 651.315 +                         TInt aTTL, TUint aNumOfAddress );
 651.316 +
 651.317 +        /**
 651.318 +         *  2nd phase constructor
 651.319 +         *
 651.320 +         *	@param aNetType A valid network type name from the pre-defined
 651.321 +		 *         SDP string table or defined by the user
 651.322 +		 *  @param aAddressType A valid address type name from the pre-defined
 651.323 +		 *         SDP string table or defined by the user
 651.324 +		 *	@param aAddress A valid address of the address type
 651.325 +         */
 651.326 +        void ConstructL( RStringF aNetType, RStringF aAddressType, 
 651.327 +	                     const TDesC8& aAddress );
 651.328 +
 651.329 +        /**
 651.330 +         *  Checks if the address is valid against given arguments
 651.331 +         *
 651.332 +         *  @param aAddressTypeIP4 The given type of address (EFalse = IP6)
 651.333 +         *  @param aAddress Address with possibly TTL & number of addresses
 651.334 +         *  @return error code (KErrNone if valid)
 651.335 +         */
 651.336 +        TInt IsValidAddress( TBool aAddressTypeIP4,
 651.337 +                             const TDesC8& aAddress ) const;
 651.338 +
 651.339 +        /**
 651.340 +         *  Checks if the address is valid against given arguments
 651.341 +         *         
 651.342 +         *  @param aAddress Address in TInetAddr format
 651.343 +         *  @param aTTL TTL attribute
 651.344 +         *  @param aNumOfAddress Number off addresses
 651.345 +         *  @return error code (KErrNone if valid)
 651.346 +         */
 651.347 +        TInt IsValidAddress( const TInetAddr& aAddress, 
 651.348 +                             TInt aTTL, TUint aNumOfAddress ) const;
 651.349 +        
 651.350 +        /**
 651.351 +         *  Parses address field
 651.352 +         *
 651.353 +         *  @param aAddressTypeIP4 The given type of address (EFalse = IP6)
 651.354 +         *  @param aAddress Address with possibly TTL & number of addresses
 651.355 +         *  @param aTTL TTL value is stored here (or KErrNotFound)
 651.356 +         *  @param aNumberOfAddresses Range of addreses
 651.357 +         *  @return The address
 651.358 +         */
 651.359 +        HBufC8* ParseAddressFieldL( TBool aAddressTypeIP4,
 651.360 +                                    const TDesC8& aAddress,
 651.361 +                                    TInt& aTTL,
 651.362 +                                    TUint& aNumberOfAddresses ) const;
 651.363 +
 651.364 +        /**
 651.365 +         *  Parses IP4 address
 651.366 +         *
 651.367 +         *  @param aPos Position of the (first) separation mark         
 651.368 +         *  @param aTTL TTL value is stored here (or KErrNotFound)
 651.369 +         *  @param aAddr Addres in TInetAddr format
 651.370 +         *  @param aAddress The whole address field
 651.371 +         *  @param aNumberOfAddresses Range of addreses
 651.372 +         *  @return The address
 651.373 +         */
 651.374 +        HBufC8* ParseIP4AddressL( TInt aPos, 
 651.375 +                                  TInetAddr& aAddr,
 651.376 +                                  const TDesC8& aAddress,
 651.377 +                                  TInt& aTTL,
 651.378 +                                  TUint& aNumberOfAddresses ) const;
 651.379 +
 651.380 +        /**
 651.381 +         *  Parses IP6 address
 651.382 +         *
 651.383 +         *  @param aPos Position of the (first) separation mark         
 651.384 +         *  @param aTTL TTL value is stored here (or KErrNotFound)
 651.385 +         *  @param aAddr Addres in TInetAddr format
 651.386 +         *  @param aAddress The whole address field
 651.387 +         *  @param aNumberOfAddresses Range of addreses
 651.388 +         *  @return The address
 651.389 +         */
 651.390 +        HBufC8* ParseIP6AddressL( TInt aPos, 
 651.391 +                                  TInetAddr& aAddr,
 651.392 +                                  const TDesC8& aAddress,
 651.393 +                                  TInt& aTTL,
 651.394 +                                  TUint& aNumberOfAddresses ) const;
 651.395 +
 651.396 +        /**
 651.397 +         *  Copies given network type to iNetType and verifies aNetType to
 651.398 +         *  be valid
 651.399 +         *
 651.400 +         *  @param aNetType Given network type                
 651.401 +         */
 651.402 +        void CopyNetTypeL( const TDesC8& aNetType );
 651.403 +
 651.404 +        /**
 651.405 +         *  Copies given address type to iAddressType and verifies aAddrType
 651.406 +         *  to be valid
 651.407 +         * 
 651.408 +         *  @param aAddrType Given address type     
 651.409 +         */
 651.410 +        void CopyAddressTypeL( const TDesC8& aAddrType );
 651.411 +
 651.412 +        /**
 651.413 +         *  Copies address to iAddress, and initalizes TTL & number of addresses,
 651.414 +         *  leaves on error
 651.415 +         *  
 651.416 +         *  @param aAddress Address string, which can also contain TTL
 651.417 +         *                  and number of addresses attributes
 651.418 +         */
 651.419 +        void CopyAddressL( const TDesC8& aAddress, RStringPool aPool );
 651.420 +
 651.421 +    private:    // Data
 651.422 +
 651.423 +        // <network type>
 651.424 +        RStringF iNetType;
 651.425 +        
 651.426 +        // <address type>        
 651.427 +        RStringF iAddressType;
 651.428 +
 651.429 +        // mutable TInetAddr for InetAddress()
 651.430 +        mutable TInetAddr iInetAddress;
 651.431 +
 651.432 +        // Address in text format
 651.433 +        HBufC8* iAddress;
 651.434 +
 651.435 +        // TTL for IP4 multicast addresses
 651.436 +        TInt iTTL;
 651.437 +        // Number of addresses
 651.438 +        TUint iNumOfAddress;
 651.439 +
 651.440 +        // String pool
 651.441 +        RStringPool iPool;
 651.442 +
 651.443 +        __DECLARE_TEST;
 651.444 +	};
 651.445 +
 651.446 +#endif // CSDPCONNECTIONFIELD_H
   652.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   652.2 +++ b/epoc32/include/mw/sdpdocument.h	Wed Mar 31 12:27:01 2010 +0100
   652.3 @@ -0,0 +1,446 @@
   652.4 +/*
   652.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   652.6 +* All rights reserved.
   652.7 +* This component and the accompanying materials are made available
   652.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   652.9 +* which accompanies this distribution, and is available
  652.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  652.11 +*
  652.12 +* Initial Contributors:
  652.13 +* Nokia Corporation - initial contribution.
  652.14 +*
  652.15 +* Contributors:
  652.16 +*
  652.17 +* Description:
  652.18 +* Name          : SdpDocument.h
  652.19 +* Part of       : SDP Codec
  652.20 +* Interface     : SDK API, SDP Codec API
  652.21 +* Version       : 1.0
  652.22 +*
  652.23 +*/
  652.24 +
  652.25 +
  652.26 +
  652.27 +#ifndef CSDPDOCUMENT_H
  652.28 +#define CSDPDOCUMENT_H
  652.29 +
  652.30 +//  INCLUDES
  652.31 +#include <e32base.h>
  652.32 +#include <badesca.h>
  652.33 +#include "_sdpdefs.h"
  652.34 +#include <stringpool.h>
  652.35 +
  652.36 +// FORWARD DECLARATIONS
  652.37 +class SdpUtil;
  652.38 +class RReadStream;
  652.39 +class RWriteStream;
  652.40 +class CUri8;
  652.41 +class CDesC8Array;
  652.42 +class CSdpOriginField;
  652.43 +class CSdpEmailField;
  652.44 +class CSdpPhoneField;
  652.45 +class CSdpConnectionField;
  652.46 +class CSdpBandwidthField;
  652.47 +class CSdpTimeField;
  652.48 +class CSdpAttributeField;
  652.49 +class CSdpMediaField;
  652.50 +class CSdpKeyField;
  652.51 +class CSdpCodecParseUtil;
  652.52 +
  652.53 +// CLASS DECLARATION
  652.54 +/**
  652.55 + *  @publishedAll
  652.56 + *  @released
  652.57 + *
  652.58 + *    This class encapsulates the Session Description Protocol (SDP) document.
  652.59 + *  The SDP document is a collection of SDP fields and related values
  652.60 + *    describing a session.
  652.61 + *
  652.62 + *    The normative reference for correct formatting and values is
  652.63 + *    draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  652.64 + *  member documentation. The implementation supports this normative
  652.65 + *  reference, but does not enforce it fully. 
  652.66 + *
  652.67 + *  @lib sdpcodec.lib
  652.68 + */
  652.69 +class CSdpDocument : public CBase
  652.70 +    {
  652.71 +    public: // Constructors and destructor
  652.72 +        /**
  652.73 +        * Constructs a new SDP document.
  652.74 +        *    
  652.75 +        * @param aText A string containing a correctly formatted SDP document.
  652.76 +        * @return a new instance.
  652.77 +        */
  652.78 +        IMPORT_C static CSdpDocument* DecodeL(const TDesC8& aText);
  652.79 +
  652.80 +        /**
  652.81 +        * Constructs a new SDP document and adds the pointer to the cleanup stack.
  652.82 +        *    
  652.83 +        * @param aText A string containing a correctly formatted SDP document.
  652.84 +        * @return a new instance.
  652.85 +        */
  652.86 +        IMPORT_C static CSdpDocument* DecodeLC(const TDesC8& aText);
  652.87 +            
  652.88 +        /**
  652.89 +        * Constructs a new, empty SDP document.
  652.90 +        * The instance will have the following initial values:
  652.91 +        *      v=0
  652.92 +        *      s=-
  652.93 +        *      t=0 0
  652.94 +        *
  652.95 +        * @return a new instance.
  652.96 +        */
  652.97 +        IMPORT_C static CSdpDocument* NewL();
  652.98 +
  652.99 +        /**
 652.100 +        * Constructs a new, empty SDP document document and adds the pointer to 
 652.101 +        * the cleanup stack.
 652.102 +        * The instance will have the following initial values:
 652.103 +        *      v=0
 652.104 +        *      s=-
 652.105 +        *      t=0 0
 652.106 +        *
 652.107 +        * @return a new instance.
 652.108 +        */
 652.109 +        IMPORT_C static CSdpDocument* NewLC();
 652.110 +
 652.111 +        /**
 652.112 +        * Deletes the resources held by the instance.
 652.113 +        */
 652.114 +        IMPORT_C ~CSdpDocument();
 652.115 +
 652.116 +    public: 
 652.117 +        /**
 652.118 +        * Externalizes the object state in an internal, memory optimized format.
 652.119 +        *
 652.120 +        * @param aStream The output stream.
 652.121 +        */
 652.122 +        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 652.123 +
 652.124 +        /**
 652.125 +        * Internalizes the object state from an internal, memory optimized format.
 652.126 +        *
 652.127 +        * @param aStream The input stream.
 652.128 +        * @return A new SDP document internalized from the input stream.
 652.129 +        */
 652.130 +        IMPORT_C static CSdpDocument* InternalizeL(RReadStream& aStream);
 652.131 +
 652.132 +        /**
 652.133 +        * Outputs the SDP document formatted according to SDP syntax.
 652.134 +        * It is possible to output the document even though it is
 652.135 +        * incomplete in the sense that all mandatory SDP fields are
 652.136 +        * not present.When creating an SDP document to be used e.g.
 652.137 +        * as part of SIP signalling, caller should first ensure the
 652.138 +        * validity of the document using the IsValid() function.
 652.139 +        * 
 652.140 +        * @param aStream Stream used for output. On return the 
 652.141 +        *        stream includes correctly formatted SDP description.
 652.142 +        */
 652.143 +        IMPORT_C void EncodeL(RWriteStream& aStream) const;
 652.144 +
 652.145 +        /**
 652.146 +        * Creates a new instance that is equal to the target.
 652.147 +        *
 652.148 +        * @return a new instance.
 652.149 +        */
 652.150 +        IMPORT_C CSdpDocument* CloneL() const;
 652.151 +
 652.152 +        /**
 652.153 +        * Checks if the instance represents a valid SDP document.
 652.154 +        *
 652.155 +        * @return ETrue if SDP document is valid and EFalse if not.
 652.156 +        */
 652.157 +        IMPORT_C TBool IsValid() const;
 652.158 +
 652.159 +        /**
 652.160 +        * Gets the SDP version used in the version field.
 652.161 +        * Note, that the current implementation supports only version number 0.
 652.162 +        *
 652.163 +        * @return The SDP version number.
 652.164 +        */ 
 652.165 +        IMPORT_C TUint SdpVersion() const;
 652.166 +
 652.167 +        /**
 652.168 +        * Gets a reference to the session origin field.
 652.169 +        * Note, that the ownership is not transferred and
 652.170 +        * the instance must not be deleted by the caller.
 652.171 +        *
 652.172 +        * @return The origin field or zero if not present.
 652.173 +        */
 652.174 +        IMPORT_C CSdpOriginField* OriginField();
 652.175 +
 652.176 +        /**
 652.177 +        * Gets a reference to the session origin field.
 652.178 +        *
 652.179 +        * @return The origin field or zero if not present.
 652.180 +        */
 652.181 +        IMPORT_C const CSdpOriginField* OriginField() const;
 652.182 +
 652.183 +        /**
 652.184 +        * Sets or removes the session origin field.
 652.185 +        * Note, that the ownership of the argument is 
 652.186 +        * transferred to the SDP document object.
 652.187 +        *
 652.188 +        * @param aObj New origin field or null to remove the field.
 652.189 +        */
 652.190 +        IMPORT_C void SetOriginField(CSdpOriginField* aObj);
 652.191 +
 652.192 +        /**
 652.193 +        * Gets the session name field value.
 652.194 +        *
 652.195 +        * @return The session name or empty descriptor if not present.
 652.196 +        */
 652.197 +        IMPORT_C const TDesC8& SessionName() const;
 652.198 +
 652.199 +        /**
 652.200 +        * Sets the session name field value.
 652.201 +        *
 652.202 +        * @param aValue Valid session name value. 
 652.203 +        *        Note that an empty value is not accepted.
 652.204 +        * @leave KErrSdpCodecSessionField if
 652.205 +        *        aValue is not empty or aValue includes invalid byte strings 
 652.206 +        *        (´\0´, ´\n´, ´\r´).
 652.207 +        */
 652.208 +        IMPORT_C void SetSessionNameL(const TDesC8& aValue);
 652.209 +
 652.210 +        /**
 652.211 +        * Gets the session information field value.
 652.212 +        *
 652.213 +        * @return Info field value or an empty descriptor if not present.
 652.214 +        */
 652.215 +        IMPORT_C const TDesC8& Info() const;
 652.216 +
 652.217 +        /**
 652.218 +        * Sets or removes the session information field value.
 652.219 +        *
 652.220 +        * @param New field value or an empty descriptor to remove the field.
 652.221 +        * @leave KErrSdpCodecInfoField if aValue is not empty or aValue includes 
 652.222 +        *        invalid byte strings (´\0´, ´\n´, ´\r´).
 652.223 +        */
 652.224 +        IMPORT_C void SetInfoL(const TDesC8& aValue);
 652.225 +
 652.226 +        /**
 652.227 +        *    Gets the session URI field value.
 652.228 +        *    Note, that the ownership is not transferred and
 652.229 +        *    the instance must not be deleted by the caller.
 652.230 +        *
 652.231 +        *    @return CUri8*: Session URI or zero if the field is not present.
 652.232 +        */
 652.233 +        IMPORT_C CUri8* Uri();
 652.234 +
 652.235 +        /**
 652.236 +        * Gets the session URI field value.
 652.237 +        *
 652.238 +        * @return Session URI or zero if the field is not present.
 652.239 +        */
 652.240 +        IMPORT_C const CUri8* Uri() const;
 652.241 +
 652.242 +        /**
 652.243 +        * Sets or removes the session level URI field.
 652.244 +        * Note, that the ownership of the argument is 
 652.245 +        * transferred to the SDP document object.
 652.246 +        *
 652.247 +        * @param New value of the field or zero to remove the field.
 652.248 +        */
 652.249 +        IMPORT_C void SetUri(CUri8* aValue);
 652.250 +
 652.251 +        /**
 652.252 +        * Gets the set of session level email field values. This array is used to
 652.253 +        * add and remove fields into the document.
 652.254 +        * Note, that only correctly formatted email field values should be placed
 652.255 +        * into the array. Empty values in the array will be ignored.
 652.256 +        *
 652.257 +        * @return Email fields in array or empty array if no email fields.
 652.258 +        */
 652.259 +        IMPORT_C CDesC8Array& EmailFields();
 652.260 +
 652.261 +        /**
 652.262 +        * Gets the set of session level phone field values. This array is used to
 652.263 +        * add and remove fields into the document.
 652.264 +        * Note, that only correctly formatted phone field values should be placed
 652.265 +        * into the array. Empty values in the array will be ignored.
 652.266 +        *  
 652.267 +        * @return Phone fields in array or empty array if no phone fields.
 652.268 +        */
 652.269 +        IMPORT_C CDesC8Array& PhoneFields();
 652.270 +
 652.271 +        /**
 652.272 +        * Gets the session level connection field.
 652.273 +        * Note, that the ownership is not transferred and the instance must not be
 652.274 +        * deleted by the caller.
 652.275 +        *
 652.276 +        * @return Connection field or zero if not present.
 652.277 +        */
 652.278 +        IMPORT_C CSdpConnectionField* ConnectionField();
 652.279 +
 652.280 +        /**
 652.281 +        * Gets the session level connection field.
 652.282 +        *
 652.283 +        * @return Connection field or zero if not present.
 652.284 +        */
 652.285 +        IMPORT_C const CSdpConnectionField* ConnectionField() const;
 652.286 +
 652.287 +        /**
 652.288 +        * Sets or removes the session level connection field.
 652.289 +        * Note, that the ownership of the argument is 
 652.290 +        * transferred to the SDP document object.
 652.291 +        *
 652.292 +        * @param New connection field or zero to remove the field.
 652.293 +        */    
 652.294 +        IMPORT_C void SetConnectionField(CSdpConnectionField* aObj);
 652.295 +
 652.296 +        /**
 652.297 +        * Gets the possibly empty set of session level bandwidth fields.
 652.298 +        * This array is used directly for element insertion and removal.
 652.299 +        * The array may contain zero references and these are ignored.
 652.300 +        *
 652.301 +        * The objects referenced from the array are owned by the document
 652.302 +        * instance and must not be deleted. An object can be removed from
 652.303 +        * the document by setting the corresponding element to zero. By
 652.304 +        * doing so, the calling party receives ownership of the removed object.
 652.305 +        *
 652.306 +        * @return Set of bandwidth fields.
 652.307 +        */
 652.308 +        IMPORT_C RPointerArray<CSdpBandwidthField>& BandwidthFields();
 652.309 +
 652.310 +        /**
 652.311 +        * Gets the set of session level time description fields.
 652.312 +        * This array is used directly for element insertion and removal.
 652.313 +        * There must be at least one time description field in a valid SDP
 652.314 +        * document.The array may contain zero references and these are ignored.
 652.315 +        *
 652.316 +        * The objects referenced from the array are owned by the document 
 652.317 +        * instance and must not be deleted. An object can be removed from the
 652.318 +        * document by setting the corresponding element to zero. By doing so,
 652.319 +        * the calling party receives ownership of the removed object.  
 652.320 +        *
 652.321 +        * @return Set of time fields.
 652.322 +        */
 652.323 +        IMPORT_C RPointerArray<CSdpTimeField>& TimeFields();
 652.324 +
 652.325 +        /** 
 652.326 +        * Gets the zone adjustments field value.
 652.327 +        *
 652.328 +        * @return The field value or an empty descriptor if the
 652.329 +        *         field is not present.
 652.330 +        */
 652.331 +        IMPORT_C const TDesC8& ZoneAdjustments() const;
 652.332 +
 652.333 +        /** 
 652.334 +        * Sets the zone adjustments field value.
 652.335 +        *
 652.336 +        * @param aValue A valid field value or an empty descriptor
 652.337 +        *        if field is not present.
 652.338 +        */
 652.339 +        IMPORT_C void SetZoneAdjustmentsL(const TDesC8& aValue);
 652.340 +
 652.341 +        /**
 652.342 +        * Gets the session level encryption key field.
 652.343 +        * Note, that the ownership is not transferred and
 652.344 +        * the instance must not be deleted by the caller.
 652.345 +        *
 652.346 +        * @return The encryption key or zero if not present.
 652.347 +        */
 652.348 +        IMPORT_C CSdpKeyField* Key();
 652.349 +
 652.350 +        /**
 652.351 +        * Gets the session level encryption key field.
 652.352 +        *
 652.353 +        * @return The encryption key or zero if not present.
 652.354 +        */
 652.355 +        IMPORT_C const CSdpKeyField* Key() const;
 652.356 +
 652.357 +        /**
 652.358 +        * Sets or removes the encryption key field.
 652.359 +        * Note, that the ownership of the argument is 
 652.360 +        * transferred to the SDP document object.
 652.361 +        *
 652.362 +        * @param aObj New value of the field or zero to remove the field.
 652.363 +        */
 652.364 +        IMPORT_C void SetKey(CSdpKeyField* aObj);
 652.365 +
 652.366 +        /**
 652.367 +        * Gets the possibly empty set of session level attribute fields.
 652.368 +        * This array is used directly for element insertion and removal.
 652.369 +        * The array may contain zero references and these are ignored.
 652.370 +        *
 652.371 +        * The objects referenced from the array are owned by the document
 652.372 +        * instance and must not be deleted. An object can be removed from the
 652.373 +        * document by setting the corresponding element to zero. By doing so,
 652.374 +        * the calling party receives ownership of the removed object.
 652.375 +        *
 652.376 +        * @return Set of session level attributes.
 652.377 +        */
 652.378 +        IMPORT_C RPointerArray<CSdpAttributeField>& AttributeFields();
 652.379 +
 652.380 +        /**
 652.381 +        * Gets the possibly empty set of media description fields.
 652.382 +        * This array is used directly for element insertion and removal.
 652.383 +        * Note, that media level attributes and fields are managed 
 652.384 +        * through the corresponding media field instance and not through
 652.385 +        * the document instance.
 652.386 +        * The array may contain zero references and these are ignored.
 652.387 +        *
 652.388 +        * The objects referenced from the array are owned by the document
 652.389 +        * instance and must not be deleted. An object can be removed from the
 652.390 +        * document by setting the corresponding element to zero. By doing so,
 652.391 +        * the calling party receives ownership of the removed object.
 652.392 +        *
 652.393 +        * @return Set of media description fields.
 652.394 +        */
 652.395 +        IMPORT_C RPointerArray<CSdpMediaField>& MediaFields();
 652.396 +
 652.397 +    private:
 652.398 +        CSdpDocument();
 652.399 +        void ConstructL();
 652.400 +        void ConstructL(const CSdpDocument& aSdpDocument);
 652.401 +        void DoInternalizeL(RReadStream& aStream);
 652.402 +
 652.403 +        void ParseL (const TDesC8& aText);
 652.404 +        void ParseSessionVersionL();
 652.405 +        void ParseSessionOwnerL();
 652.406 +        void ParseSessionNameL();
 652.407 +        void ParseSessionInformationL();
 652.408 +        void ParseUriL();
 652.409 +        void ParseEmailL();
 652.410 +        void ParsePhoneL();
 652.411 +        void ParseConnectionL();
 652.412 +        void ParseBandwidthL();
 652.413 +        void ParseTimeFieldL();
 652.414 +        void ParseZoneAdjustmentL();
 652.415 +        void ParseEncryptionKeyL();
 652.416 +        void ParseAttributeFieldL();
 652.417 +        void ParseMediaLevelL ();
 652.418 +        void ExternalizeDesCArrayL(CDesC8ArraySeg& aArray,
 652.419 +                               RWriteStream& aStream) const;
 652.420 +        void EncodeDesCArrayL(CDesC8ArraySeg& aArray,TInt aIndex,
 652.421 +                                            RWriteStream& aStream) const;
 652.422 +
 652.423 +        TDesC8& GetTokenFromStreamL(RReadStream& aStream);
 652.424 +
 652.425 +        CSdpDocument(const CSdpDocument&); // Hidden.
 652.426 +        CSdpDocument& operator = (const CSdpDocument&); // Hidden
 652.427 +
 652.428 +    private: // Data
 652.429 +            
 652.430 +        HBufC8* iInfo;
 652.431 +        HBufC8* iSessionName;
 652.432 +        HBufC8* iZoneAdjustments;
 652.433 +        CSdpKeyField* iSdpKeyField;
 652.434 +        CSdpOriginField* iSdpOriginField;
 652.435 +        CSdpConnectionField* iSdpConnectionField;
 652.436 +        TUint iSdpVersion;
 652.437 +        RPointerArray<CSdpTimeField>* iTimeFields;
 652.438 +        RPointerArray<CSdpBandwidthField>* iBandwidthFields;
 652.439 +        RPointerArray<CSdpAttributeField>* iAttributeFields;
 652.440 +        RPointerArray<CSdpMediaField>* iMediaFields;
 652.441 +        CUri8* iUri;
 652.442 +        CDesC8ArraySeg* iEmailFields;
 652.443 +        CDesC8ArraySeg* iPhoneFields;
 652.444 +        RStringPool iPool;
 652.445 +        HBufC8* iToken;
 652.446 +        CSdpCodecParseUtil* iSdpCodecParseUtil;
 652.447 +    };
 652.448 +
 652.449 +#endif // CSDPDOCUMENT_H
   653.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   653.2 +++ b/epoc32/include/mw/sdpfmtattributefield.h	Wed Mar 31 12:27:01 2010 +0100
   653.3 @@ -0,0 +1,263 @@
   653.4 +/*
   653.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   653.6 +* All rights reserved.
   653.7 +* This component and the accompanying materials are made available
   653.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   653.9 +* which accompanies this distribution, and is available
  653.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  653.11 +*
  653.12 +* Initial Contributors:
  653.13 +* Nokia Corporation - initial contribution.
  653.14 +*
  653.15 +* Contributors:
  653.16 +*
  653.17 +* Description:
  653.18 +* Name          : SdpFmtAttributeField.h
  653.19 +* Part of       : SDP Codec
  653.20 +* Interface     : SDK API, SDP Codec API
  653.21 +* Version       : 1.0
  653.22 +*
  653.23 +*/
  653.24 +
  653.25 +
  653.26 +
  653.27 +#ifndef CSDPFMTATTRIBUTEFIELD_H
  653.28 +#define CSDPFMTATTRIBUTEFIELD_H
  653.29 +
  653.30 +//  INCLUDES
  653.31 +#include <e32base.h>
  653.32 +#include <stringpool.h>
  653.33 +#include "_sdpdefs.h"
  653.34 +
  653.35 +// FORWARD DECLARATIONS
  653.36 +class RReadStream;
  653.37 +class RWriteStream;
  653.38 +class CSdpAttributeField;
  653.39 +class TSdpRtpmapValue;
  653.40 +
  653.41 +// CLASS DECLARATION
  653.42 +/**
  653.43 + *  @publishedAll
  653.44 + *  @released
  653.45 + *
  653.46 + *	This class encapsulates the attribute field of the Session Description
  653.47 + *  Protocol for media format/payload type level attributes. Media and session
  653.48 + *  level attributes are supported by the CSdpAttributeField class. 
  653.49 + *
  653.50 + *	The normative reference for correct formatting and values is
  653.51 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  653.52 + *  member documentation. The implementation supports this normative
  653.53 + *  reference, but does not enforce it fully. 
  653.54 + *
  653.55 + *  @lib sdpcodec.lib
  653.56 + */
  653.57 +class CSdpFmtAttributeField : public CBase
  653.58 +	{
  653.59 +    public: // Constructors and destructor
  653.60 +        /**
  653.61 +         *	Constructs a new media format level attribute field.
  653.62 +		 * 
  653.63 +		 *	@param aText A string containing a correctly 
  653.64 +         *         formatted field value terminated by a CRLF.
  653.65 +         *  @return a new instance.
  653.66 +         */
  653.67 +		IMPORT_C static CSdpFmtAttributeField* DecodeL( const TDesC8& aText );
  653.68 +
  653.69 +        /**
  653.70 +         *	Constructs a new media format level attribute field  and adds the 
  653.71 +         *  pointer to the cleanup stack.
  653.72 +		 *			 
  653.73 +         *	@param aText A string containing a correctly 
  653.74 +         *         formatted field value terminated by a CRLF.
  653.75 +         *	@return a new instance.
  653.76 +         */
  653.77 +		IMPORT_C static CSdpFmtAttributeField* DecodeLC( const TDesC8& aText);
  653.78 +
  653.79 +        /**
  653.80 +         *	Constructs a new media level format attribute field.
  653.81 +		 *
  653.82 +         *	@param aAttribute The attribute name. It can be a pre-defined
  653.83 +         *         name in the SDP string pool or defined by the client.
  653.84 +         *	@param aFormat A valid format/payload identifier 
  653.85 +         *         used in the format list of the media description.
  653.86 +         *	@param aValue A valid attribute value or an empty 
  653.87 +         *         descriptor to omit the value part.
  653.88 +         *	@return a new instance.
  653.89 +		 */
  653.90 +		IMPORT_C static CSdpFmtAttributeField* NewL(
  653.91 +            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );
  653.92 +
  653.93 +        /**
  653.94 +         *	Constructs a new media format level attribute field and adds the 
  653.95 +         *  pointer to the cleanup stack.
  653.96 +		 *
  653.97 +         *	@param aAttribute The attribute name. It can be a pre-defined 
  653.98 +         *         name in the SDP string pool or defined by the client.
  653.99 +         *	@param aFormat A valid format/payload identifier 
 653.100 +         *         used in the format list of the media description.
 653.101 +         *	@param aValue A valid attribute value or an empty 
 653.102 +         *         descriptor to omit the value part.
 653.103 +         *	@return a new instance.
 653.104 +		 */
 653.105 +		IMPORT_C static CSdpFmtAttributeField* NewLC(
 653.106 +            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );
 653.107 +
 653.108 +		/**
 653.109 +		 *	Deletes the resources held by the instance.
 653.110 +		 */
 653.111 +		IMPORT_C ~CSdpFmtAttributeField();
 653.112 +
 653.113 +    public: // New functions
 653.114 +
 653.115 +		/**
 653.116 +		 *	Outputs the field formatted according to SDP syntax and including
 653.117 +		 *  the terminating CRLF.
 653.118 +		 * 
 653.119 +		 *	@param aStream Stream used for output. On return 
 653.120 +         *         the stream includes correctly formatted attribute field.
 653.121 +		 */
 653.122 +		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 653.123 +
 653.124 +		/**
 653.125 +		 *	Creates a new instance that is equal to the target.
 653.126 +		 *
 653.127 +		 *	@return a new instance.
 653.128 +		 */
 653.129 +		IMPORT_C CSdpFmtAttributeField * CloneL() const;
 653.130 +
 653.131 +		/**	
 653.132 +		 *	Compares this instance to another for equality. 
 653.133 +		 *
 653.134 +		 *	@param aObj The instance to compare to.
 653.135 +		 *	@return ETrue if equal, EFalse if not.
 653.136 +		 */
 653.137 +		IMPORT_C TBool operator== ( const CSdpFmtAttributeField& aObj ) const;
 653.138 +
 653.139 +		/**
 653.140 +		 *	Gets the attribute.
 653.141 +		 *	
 653.142 +		 *	@return	The attribute name. The name can be pre-defined 
 653.143 +         *          name in the SDP string table or defined by the client.
 653.144 +         */
 653.145 +		IMPORT_C RStringF Attribute() const;
 653.146 +
 653.147 +		/**
 653.148 +		 *	Gets the format.
 653.149 +		 *	
 653.150 +		 *	@return	The format.
 653.151 +		 */
 653.152 +		IMPORT_C const TDesC8& Format() const;
 653.153 +
 653.154 +		/**
 653.155 +		 *	Gets the attribute value.
 653.156 +		 *	
 653.157 +		 *	@return The value  or an empty descriptor if there is no value part.
 653.158 +		 */
 653.159 +		IMPORT_C const TDesC8& Value() const;
 653.160 +
 653.161 +		/**
 653.162 +		 *	Sets the attribute, format/payload type and attribute value.
 653.163 +		 *
 653.164 +         *	@param aAttribute A valid attribute name. It can be a 
 653.165 +         *         pre-defined name in the SDP string pool or defined by 
 653.166 +         *         the client.
 653.167 +         *	@param aFormat A valid format/payload identifier 
 653.168 +         *         used in the formatlist of the media description.
 653.169 +         *	@param aValue A valid attribute value or an empty 
 653.170 +         *         descriptor to omit the value part.
 653.171 +         *  @leave KErrSdpCodecMediaAttributeField if aAttribute is not rtpmap
 653.172 +         *         or fmtp attribute.
 653.173 +		 */
 653.174 +		IMPORT_C void SetL(
 653.175 +            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );
 653.176 +
 653.177 +    public: // Internal to codec
 653.178 +
 653.179 +        /**
 653.180 +         *  Externalizes the object to stream
 653.181 +         *
 653.182 +         *  @param aStream Stream where the object's state will be stored
 653.183 +         */
 653.184 +		void ExternalizeL( RWriteStream& aStream ) const;
 653.185 +
 653.186 +        /**
 653.187 +         *  Creates object from the stream data
 653.188 +         *
 653.189 +         *  @param aStream Stream where the object's state will be read        
 653.190 +         *  @return Initialized object
 653.191 +         */
 653.192 +		static CSdpFmtAttributeField* InternalizeL( RReadStream& aStream );
 653.193 +
 653.194 +        /**
 653.195 +         *  Returns attribute field
 653.196 +         *
 653.197 +         *  @return Attribute field
 653.198 +         */
 653.199 +        const CSdpAttributeField* AttributeField() const;
 653.200 +
 653.201 +    private: // New methods
 653.202 +
 653.203 +        /**
 653.204 +         *  Creates object from the stream data.
 653.205 +         *	Does the "2nd phase construction" of internalization.
 653.206 +         *
 653.207 +         *  @param aStream Stream where the object's state will be read
 653.208 +         */
 653.209 +        void DoInternalizeL( RReadStream& aStream );
 653.210 +
 653.211 +        /**
 653.212 +         *  Formats value parameters
 653.213 +         *
 653.214 +         *  @param aField Attribute field object
 653.215 +         */
 653.216 +        void FormatValueParamsL( CSdpAttributeField* aField );
 653.217 +
 653.218 +    private: // Construction and destruction
 653.219 +        
 653.220 +        /**
 653.221 +         *  Constructor
 653.222 +         */
 653.223 +        CSdpFmtAttributeField();
 653.224 +
 653.225 +        /**
 653.226 +         *  Second phase construction
 653.227 +         *         
 653.228 +         *  @param aText A string containing a correctly formatted field value
 653.229 +		 *         terminated by a CRLF.
 653.230 +         */
 653.231 +        void ConstructL( const TDesC8& aText );
 653.232 +
 653.233 +        /**
 653.234 +         *  Second phase construction
 653.235 +         *
 653.236 +         *	@param aAttribute The attribute from the pre-defined SDP string 
 653.237 +		 *         table or defined by the user
 653.238 +         *	@param aFormat A valid format/payload identifier used in the format
 653.239 +		 *         list of the media description.
 653.240 +         *	@param aValue A valid attribute value or an empty descriptor
 653.241 +		 *         to omit the value part.         
 653.242 +		 */
 653.243 +		void ConstructL(
 653.244 +            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );    
 653.245 +
 653.246 +        
 653.247 +        /**
 653.248 +         *  Decode format parameter from string
 653.249 +         *
 653.250 +         *	@param aText A text includeing format parameter.
 653.251 +		 */
 653.252 +        void DecodeFormatL(const TDesC8& aText);
 653.253 +        
 653.254 +        __DECLARE_TEST;
 653.255 +
 653.256 +    private:
 653.257 +
 653.258 +        RStringPool iPool;
 653.259 +        CSdpAttributeField* iAttributeField;       
 653.260 +		/** Pointer to the format part*/
 653.261 +		TPtrC8 iFormat;
 653.262 +        /** Pointer to the format parameters*/
 653.263 +		TPtrC8 iValuePart;
 653.264 +	};
 653.265 +
 653.266 +#endif // CSDPFMTATTRIBUTEFIELD_H
   654.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   654.2 +++ b/epoc32/include/mw/sdpkeyfield.h	Wed Mar 31 12:27:01 2010 +0100
   654.3 @@ -0,0 +1,193 @@
   654.4 +/*
   654.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   654.6 +* All rights reserved.
   654.7 +* This component and the accompanying materials are made available
   654.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   654.9 +* which accompanies this distribution, and is available
  654.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  654.11 +*
  654.12 +* Initial Contributors:
  654.13 +* Nokia Corporation - initial contribution.
  654.14 +*
  654.15 +* Contributors:
  654.16 +*
  654.17 +* Description:
  654.18 +* Name          : SdpKeyField.h
  654.19 +* Part of       : SDP Codec
  654.20 +* Interface     : SDK API, SDP Codec API
  654.21 +* Version       : 1.0
  654.22 +*
  654.23 +*/
  654.24 +
  654.25 +
  654.26 +
  654.27 +#ifndef CSDPKEYFIELD_H
  654.28 +#define CSDPKEYFIELD_H
  654.29 +
  654.30 +//  INCLUDES
  654.31 +#include <e32base.h>
  654.32 +#include <stringpool.h>
  654.33 +#include "_sdpdefs.h"
  654.34 +
  654.35 +// FORWARD DECLARATIONS
  654.36 +class RReadStream;
  654.37 +class RWriteStream;
  654.38 +
  654.39 +// CLASS DECLARATION
  654.40 +/**
  654.41 + *  @publishedAll
  654.42 + *  @released
  654.43 + *
  654.44 + *	This class encapsulates the encryption key field of 
  654.45 + *  the Session Description Protocol.
  654.46 + * 
  654.47 + *	The normative reference for correct formatting and values is
  654.48 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  654.49 + *  member documentation. The implementation supports this normative
  654.50 + *  reference, but does not enforce it fully. 
  654.51 + *
  654.52 + *  @lib sdpcodec.lib
  654.53 + */
  654.54 +class CSdpKeyField : public CBase
  654.55 +	{
  654.56 +    public: // Constructors and destructor
  654.57 +        /**
  654.58 +         *	Constructs a new encryption key field.
  654.59 +		 *	
  654.60 +         *	@param aFieldValue A string containing a correctly 
  654.61 +         *         formatted field value terminated by a CRLF.
  654.62 +         *	@return a new instance.
  654.63 +         */
  654.64 +		IMPORT_C static CSdpKeyField* DecodeL(const TDesC8& aFieldValue);
  654.65 +
  654.66 +        /**
  654.67 +         *	Constructs a new encryption key field and adds the pointer to 
  654.68 +         *  the cleanup stack.
  654.69 +		 *	
  654.70 +         *	@param aFieldValue A string containing a correctly 
  654.71 +         *              formatted field value terminated by a CRLF.
  654.72 +         *	@return a new instance.
  654.73 +         *  @leave  In error case function leaves.
  654.74 +         */
  654.75 +		IMPORT_C static CSdpKeyField* DecodeLC(const TDesC8& aFieldValue);
  654.76 +
  654.77 +        /**
  654.78 +         *	Constructs a new encryption key field.
  654.79 +		 *	
  654.80 +         *	@param aMethod Encryption method from the pre-defined 
  654.81 +         *         SDP string table. User defined values are not accepted.
  654.82 +		 *  @param aEncryptionKey A valid encryption key value 
  654.83 +         *         or an empty descriptor to omit the key part.
  654.84 +         *	@return a new instance.
  654.85 +         */
  654.86 +		IMPORT_C static CSdpKeyField* NewL(RStringF aMethod,
  654.87 +											const TDesC8& aEncryptionKey);
  654.88 +
  654.89 +        /**
  654.90 +         *	Constructs a new encryption key field and adds the pointer to 
  654.91 +         *  the cleanup stack.
  654.92 +		 *	
  654.93 +         *	@param aMethod Encryption method from the pre-defined 
  654.94 +         *         SDP string table. User defined values are not accepted.
  654.95 +		 *  @param aEncryptionKey A valid encryption key value 
  654.96 +         *         or an empty descriptor to omit the key part.
  654.97 +         *	@return a new instance.
  654.98 +         */
  654.99 +		IMPORT_C static CSdpKeyField* NewLC(RStringF aMethod,
 654.100 +											const TDesC8& aEncryptionKey);
 654.101 +
 654.102 +		/**
 654.103 +		 *	Deletes the resources held by the instance.
 654.104 +		 */
 654.105 +		IMPORT_C ~CSdpKeyField();
 654.106 +
 654.107 +    public: // New functions
 654.108 +		/**
 654.109 +		 *	Writes the instance as a complete SDP field encoded as UTF-8
 654.110 +		 *	and formatted as defined in draft-ietf-mmusic-sdp-new-14.
 654.111 +         *
 654.112 +		 *	@param aStream Stream used for output. On return 
 654.113 +         *         the stream includes correctly formatted key field.
 654.114 +		 */
 654.115 +		IMPORT_C void EncodeL(RWriteStream& aStream) const;
 654.116 +
 654.117 +		/**
 654.118 +		 *	Creates a new instance that is equal to the target.
 654.119 +		 *
 654.120 +		 *	@return a new instance.
 654.121 +		 */
 654.122 +		IMPORT_C CSdpKeyField * CloneL() const;
 654.123 +
 654.124 +		/**	
 654.125 +		 *	Compares this instance to another for equality.
 654.126 +		 *
 654.127 +		 *	@param aObj The instance to compare to.
 654.128 +		 *	@return ETrue if equal, EFalse if not.
 654.129 +		 */
 654.130 +		IMPORT_C TBool operator == (const CSdpKeyField& aObj) const;
 654.131 +
 654.132 +		/**
 654.133 +		 *	Gets the encryption method.
 654.134 +		 *
 654.135 +		 *	@return The method.
 654.136 +		 */
 654.137 +		IMPORT_C RStringF Method() const;
 654.138 +
 654.139 +		/**
 654.140 +		 *	Gets the encryption key.
 654.141 +		 *
 654.142 +		 *	@return The key or an empty descriptor if there is no key part.
 654.143 +		 */
 654.144 +		IMPORT_C const TDesC8& EncryptionKey() const;
 654.145 +
 654.146 +		/**
 654.147 +		 *	Sets the encryption method and key.
 654.148 +		 *
 654.149 +         *	@param aMethod Encryption method from the pre-defined 
 654.150 +         *         SDP string table. User defined values are not accepted.
 654.151 +		 *  @param aEncryptionKey A valid encryption key value 
 654.152 +         *         or an empty descriptor to omit the key part.
 654.153 +		 */
 654.154 +		IMPORT_C void SetL(RStringF aMethod,
 654.155 +						   const TDesC8& aEncryptionKey);
 654.156 +
 654.157 +    public:
 654.158 +    	/**
 654.159 +         *  Externalizes the object to stream
 654.160 +         *
 654.161 +         *  @param aStream Stream where the object's state will be stored
 654.162 +         */
 654.163 +		void ExternalizeL(RWriteStream& aStream) const;
 654.164 +		
 654.165 +		/**
 654.166 +         *  Creates object from the stream data
 654.167 +         *
 654.168 +         *  @param aStream Stream where the object's state will be read        
 654.169 +         *  @return Initialized object
 654.170 +         */
 654.171 +		static CSdpKeyField* InternalizeL(RReadStream& aStream);
 654.172 +
 654.173 +	private:
 654.174 +		CSdpKeyField();
 654.175 +		void ConstructL(const TDesC8& aText);
 654.176 +		void ConstructL(RStringF aMethod, const TDesC8& aEncryptionKey);
 654.177 +        void DoInternalizeL(RReadStream& aStream);
 654.178 +        void SetMethodAndKeyL(RStringF aMethod, 
 654.179 +                              const TDesC8& aEncryptionKey,
 654.180 +                              TBool aAllowEmptyKeyValue);
 654.181 +        void SetMethodClearAndKeyL(RStringF aMethod, const TDesC8& aEncryptionKey);
 654.182 +        void SetMethodBase64AndKeyL(RStringF aMethod, const TDesC8& aText);
 654.183 +        void SetMethodUriAndKeyL(RStringF aMethod, const TDesC8& aText);
 654.184 +        void SetMethodPromptL(RStringF aMethod, const TDesC8& aText);
 654.185 +        RArray<TPtrC8> GetElementsFromLineL( TLex8& aLexer);
 654.186 +
 654.187 +    private: // Data
 654.188 +		RStringF iMethod;
 654.189 +        TBool iMethodOpen;
 654.190 +		HBufC8* iEncryptionKey;
 654.191 +        RStringPool iStringPool;
 654.192 +
 654.193 +		__DECLARE_TEST;
 654.194 +	};
 654.195 +
 654.196 +#endif // CSDPKEYFIELD_H
   655.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   655.2 +++ b/epoc32/include/mw/sdpmediafield.h	Wed Mar 31 12:27:01 2010 +0100
   655.3 @@ -0,0 +1,445 @@
   655.4 +/*
   655.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   655.6 +* All rights reserved.
   655.7 +* This component and the accompanying materials are made available
   655.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   655.9 +* which accompanies this distribution, and is available
  655.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  655.11 +*
  655.12 +* Initial Contributors:
  655.13 +* Nokia Corporation - initial contribution.
  655.14 +*
  655.15 +* Contributors:
  655.16 +*
  655.17 +* Description:
  655.18 +* Name          : SdpMediaField.h
  655.19 +* Part of       : SDP Codec
  655.20 +* Interface     : SDK API, SDP Codec API
  655.21 +* Version       : 1.0
  655.22 +*
  655.23 +*/
  655.24 +
  655.25 +
  655.26 +
  655.27 +#ifndef CSDPMEDIAFIELD_H
  655.28 +#define CSDPMEDIAFIELD_H
  655.29 +
  655.30 +//  INCLUDES
  655.31 +#include <e32base.h>
  655.32 +#include "_sdpdefs.h"
  655.33 +#include <stringpool.h>
  655.34 +
  655.35 +// FORWARD DECLARATIONS
  655.36 +class RReadStream;
  655.37 +class RWriteStream;
  655.38 +class CSdpConnectionField;
  655.39 +class CSdpBandwidthField;
  655.40 +class CSdpAttributeField;
  655.41 +class CSdpKeyField;
  655.42 +class CSdpFmtAttributeField;
  655.43 +class CSdpCodecParseUtil;
  655.44 +
  655.45 +// CLASS DECLARATION
  655.46 +/**
  655.47 + *  @publishedAll
  655.48 + *  @released
  655.49 + *
  655.50 + *	This class encapsulates the media description field and related media
  655.51 + *  specific subfields of the Session Description Protocol.
  655.52 + *
  655.53 + *	The normative reference for correct formatting and values is
  655.54 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  655.55 + *  member documentation. The implementation supports this normative
  655.56 + *  reference, but does not enforce it fully. 
  655.57 + *
  655.58 + *  @lib sdpcodec.lib
  655.59 + */
  655.60 +class CSdpMediaField : public CBase
  655.61 +	{
  655.62 +
  655.63 +	public:
  655.64 +
  655.65 +
  655.66 +    public: // Constructors and destructor
  655.67 +        /**
  655.68 +         *	Constructs a new media description field.
  655.69 +		 *	
  655.70 +         *	@param aText A correctly formatted media field 
  655.71 +         *         terminated by a CRLF followed by zero or more media 
  655.72 +         *         attribute fields separated by a CRLF.
  655.73 +         *	@param aRecurse If ETrue, attempts to construct also media 
  655.74 +         *         attributes following the CRLF terminating the media field.
  655.75 +         *	@return a new instance.
  655.76 +         */
  655.77 +		IMPORT_C static	CSdpMediaField* DecodeL(const TDesC8& aText,
  655.78 +												TBool aRecurse = ETrue);
  655.79 +
  655.80 +        /**
  655.81 +         *	Constructs a new media description field and adds the pointer to 
  655.82 +         *  the cleanup stack.
  655.83 +		 *	
  655.84 +         *	@param aText A correctly formatted media field 
  655.85 +         *         terminated by a CRLF followed by zero or more media 
  655.86 +         *         attribute fields separated by a CRLF.
  655.87 +         *	@param aRecurse If ETrue, attempts to construct also media 
  655.88 +         *         attributes following the CRLF terminating the media field.
  655.89 +		 *  @return a new instance.
  655.90 +         */
  655.91 +		IMPORT_C static	CSdpMediaField* DecodeLC(const TDesC8& aText,
  655.92 +												 TBool aRecurse = ETrue);
  655.93 +
  655.94 +        /**
  655.95 +         *	Constructs a new media description field.
  655.96 +		 *  The optional portcount component of the field is initialized to 1.
  655.97 +		 *
  655.98 +		 *	@param aMedia A valid media type name.
  655.99 +         *	@param aPort Port number.
 655.100 +         *	@param aProtocol A valid media protocol name.
 655.101 +         *	@param aFormatList A valid format list.
 655.102 +         *	@return a new instance.
 655.103 +         */
 655.104 +		IMPORT_C static CSdpMediaField* NewL(RStringF aMedia,
 655.105 +											 TUint aPort,
 655.106 +											 RStringF aProtocol,
 655.107 +											 const TDesC8& aFormatList);
 655.108 +
 655.109 +		/**
 655.110 +         *	Constructs a new media description field and adds the pointer to 
 655.111 +         *  the cleanup stack.
 655.112 +		 *  The optional portcount component of the field is initialized to 1.
 655.113 +		 *	
 655.114 +		 *	@param aMedia A valid media type name.
 655.115 +         *	@param aPort Port number.
 655.116 +         *	@param aProtocol A valid media protocol name.
 655.117 +         *	@param aFormatList A valid format list.
 655.118 +         *	@return a new instance.
 655.119 +         */
 655.120 +		IMPORT_C static CSdpMediaField* NewLC(RStringF aMedia,
 655.121 +											  TUint aPort,
 655.122 +										      RStringF aProtocol,
 655.123 +										      const TDesC8& aFormatList);
 655.124 +
 655.125 +		/**
 655.126 +		 *	Deletes the resources held by the instance.
 655.127 +		 */
 655.128 +		IMPORT_C ~CSdpMediaField();
 655.129 +
 655.130 +    public: // New functions
 655.131 +		/**
 655.132 +		 *	Outputs the field formatted according to SDP syntax and including
 655.133 +		 *  the terminating CRLF. Optionally output also the related media 
 655.134 +		 *  level fields. 
 655.135 +		 * 
 655.136 +		 *	@param aStream Stream used for output. On return the
 655.137 +         *         stream includes correctly formatted media field with 
 655.138 +         *         media part fields if aRecurse is defined to ETrue.
 655.139 +		 *	@param aRecurse Flag to specify whether to output media 
 655.140 +		 *         attributes also (ETrue) or only the media field (EFalse).
 655.141 +		 */
 655.142 +		IMPORT_C void 
 655.143 +			EncodeL(RWriteStream& aStream, TBool aRecurse = ETrue) const;
 655.144 +
 655.145 +		/**
 655.146 +		 *	Creates a new instance that is equal to the target.
 655.147 +		 *  Optionally also related subfields are cloned.
 655.148 +		 *
 655.149 +		 *	@param aRecurse Flag to specify whether to clone subfields
 655.150 +		 *         also (ETrue) or only the media field (EFalse).
 655.151 +		 *	@return a new instance.
 655.152 +		 */
 655.153 +		IMPORT_C CSdpMediaField * CloneL(TBool aRecurse = ETrue) const;
 655.154 +
 655.155 +		/**	
 655.156 +		 *	Compares this instance to another for equality. Subfields are
 655.157 +		 *  included in the comparison if present.
 655.158 +		 *
 655.159 +		 *	@param aObj The instance to compare to.
 655.160 +		 *	@return ETrue if equal, EFalse if not.
 655.161 +		 */
 655.162 +		IMPORT_C TBool operator == (const CSdpMediaField& aObj) const;
 655.163 +
 655.164 +		/**
 655.165 +		 *	Checks the consistency between the media field and it's subfields.
 655.166 +		 *  In particular, this function checks that each format specific 
 655.167 +		 *  attribute is related to a format in the format list of the
 655.168 +		 *  media field.
 655.169 +		 *
 655.170 +		 *	@return	ETrue if media description is consistent and EFalse if not.
 655.171 +		 */
 655.172 +		IMPORT_C TBool IsValid() const;
 655.173 +
 655.174 +		/**
 655.175 +		 *	Gets the media type.
 655.176 +		 *
 655.177 +		 *	@return The media type.
 655.178 +		 */
 655.179 +		IMPORT_C RStringF Media() const;
 655.180 +
 655.181 +		/**
 655.182 +		 *	Sets the media type.
 655.183 +		 *
 655.184 +		 *	@param aMedia The media type.
 655.185 +		 *  @leave KErrSdpCodecMediaField if aMedia is not valid character
 655.186 +		 */
 655.187 +		IMPORT_C void SetMediaL(RStringF aMedia);
 655.188 +
 655.189 +		/**
 655.190 +		 *	Gets the media protocol.
 655.191 +		 *
 655.192 +		 *	@return The media protocol.
 655.193 +		 */
 655.194 +		IMPORT_C RStringF Protocol() const;
 655.195 +
 655.196 +		/**
 655.197 +		 *	Sets the media protocol.
 655.198 +		 *
 655.199 +		 *	@param aProtocol The media protocol.
 655.200 +		 *  @leave KErrSdpCodecMediaField if 
 655.201 +		 *		   aProtocol containing two elements divided by slash are not 
 655.202 +         *         valid tokens.
 655.203 +		 */
 655.204 +		IMPORT_C void SetProtocolL(RStringF aProtocol);
 655.205 +
 655.206 +		/**
 655.207 +		 *	Gets the port number.
 655.208 +		 *
 655.209 +		 *	@return The port number.
 655.210 +		 */
 655.211 +		IMPORT_C TUint Port() const;
 655.212 +
 655.213 +		/**
 655.214 +		 *	Sets the port number.
 655.215 +		 *
 655.216 +		 *	@param aPort The port number.
 655.217 +		 *  @leave KErrSdpCodecMediaField if port is not valid number as 
 655.218 +         *         defined in draft-ietf-mmusic-sdp-new-14
 655.219 +		 */
 655.220 +		IMPORT_C void SetPortL(TUint aPort);
 655.221 +
 655.222 +		/**
 655.223 +		 *	Gets the port count.
 655.224 +		 *
 655.225 +		 *	@return The port count.
 655.226 +		 */
 655.227 +		IMPORT_C TUint PortCount() const;
 655.228 +
 655.229 +		/**
 655.230 +		 *	Sets the port count.
 655.231 +		 *
 655.232 +		 *	@param aCount The port count that must be greater than zero.
 655.233 +		 *  @leave KErrSdpCodecMediaField if aCount equals to zero.
 655.234 +		 */
 655.235 +		IMPORT_C void SetPortCountL(TUint aCount);
 655.236 +
 655.237 +		/**
 655.238 +		 *	Gets the format list.
 655.239 +		 *
 655.240 +		 *	@return The format list.
 655.241 +		 */
 655.242 +		IMPORT_C const TDesC8& FormatList() const;
 655.243 +
 655.244 +		/**
 655.245 +		 *	Sets the format list.
 655.246 +		 *  The format list should contain one or more format tokens separated
 655.247 +		 *  by a single whitespace character.
 655.248 +		 *
 655.249 +		 *	@param aValue A valid format list.
 655.250 +		 *  @leave KErrSdpCodecMediaField if aValue contains invalid tokens
 655.251 +		 */
 655.252 +		IMPORT_C void SetFormatListL(const TDesC8& aValue);
 655.253 +
 655.254 +		/**
 655.255 +		 *	Return the media level info field value.
 655.256 +		 *
 655.257 +		 *	@return The value or an empty descriptor if not present.
 655.258 +		 */
 655.259 +		IMPORT_C const TDesC8& Info() const;
 655.260 +
 655.261 +		/**
 655.262 +		 *	Sets the media level info field value.
 655.263 +		 *
 655.264 +		 *	@param aValue A valid info field value.
 655.265 +		 *	@leave KErrSdpCodecMediaInfoField if aValue is not KNullDesC8 or 
 655.266 +         *         aValue includes invalid byte strings (´\0´, ´\n´, ´\r´).
 655.267 +		 */
 655.268 +		IMPORT_C void SetInfoL(const TDesC8& aValue);
 655.269 +
 655.270 +		/**
 655.271 +		 *	Gets the media level encryption key field.
 655.272 +		 *	Note, that the ownership is not transferred and
 655.273 +		 *	the instance must not be deleted by the caller.
 655.274 +		 *
 655.275 +		 *	@return Encryption key field or null if not present.
 655.276 +		 */
 655.277 +		IMPORT_C CSdpKeyField* Key();
 655.278 +
 655.279 +		/**
 655.280 +		 *	Gets the media level encryption key field.
 655.281 +		 *
 655.282 +		 *	@return Encryption key field or null if not present.
 655.283 +		 */
 655.284 +		IMPORT_C const CSdpKeyField* Key() const;
 655.285 +
 655.286 +		/**
 655.287 +		 *	Sets or removes the media level encryption key field.
 655.288 +		 *
 655.289 +		 *	@param aObj The new key field or null if field is 
 655.290 +         *         to be removed. Ownership of the referenced object
 655.291 +		 *         is transferred to the media field instance.
 655.292 +		 */
 655.293 +		IMPORT_C void SetKey(CSdpKeyField* aObj);
 655.294 +
 655.295 +		/**
 655.296 +		 *	Gets the set of media format level attributes.
 655.297 +		 *  This array is used directly for element insertion and removal.
 655.298 +		 *
 655.299 +		 *	The objects referenced from the array are owned by the media
 655.300 +		 *  field instance and must not be deleted. An object can be
 655.301 +		 *  removed from the media description by setting the corresponding
 655.302 +		 *  element to zero. By doing so, the calling party receives ownership
 655.303 +		 *  of the removed object.
 655.304 +		 *
 655.305 +		 *	@return The set of media format level attributes.
 655.306 +		 */
 655.307 +		IMPORT_C RPointerArray<CSdpFmtAttributeField>& FormatAttributeFields();
 655.308 +
 655.309 +		/**
 655.310 +		 *	Gets the set of media level, format independent attributes.
 655.311 +		 *  This array is used directly for element insertion and removal.
 655.312 +		 *
 655.313 +		 *	The objects referenced from the array are owned by the media
 655.314 +		 *  field instance and must not be deleted. An object can be
 655.315 +		 *  removed from the media description by setting the corresponding
 655.316 +		 *  element to zero. By doing so, the calling party receives ownership
 655.317 +		 *  of the removed object.
 655.318 +		 *
 655.319 +		 *	@return The set of media level attributes.
 655.320 +		 */
 655.321 +		IMPORT_C RPointerArray<CSdpAttributeField>& AttributeFields();
 655.322 +
 655.323 +		/**
 655.324 +		 *	Gets the set of media level bandwidth fields.
 655.325 +		 *  This array is used directly for element insertion and removal.
 655.326 +		 *
 655.327 +		 *	The objects referenced from the array are owned by the media
 655.328 +		 *  field instance and must not be deleted. An object can be
 655.329 +		 *  removed from the media description by setting the corresponding
 655.330 +		 *  element to zero. By doing so, the calling party receives ownership
 655.331 +		 *  of the removed object.
 655.332 +		 *
 655.333 +		 *	@return The set of media level bandwidth fields.
 655.334 +		 */
 655.335 +		IMPORT_C RPointerArray<CSdpBandwidthField>& BandwidthFields();
 655.336 +
 655.337 +		/**
 655.338 +		 *	Gets the set of media level connection fields.
 655.339 +		 *  This array is used directly for element insertion and removal.
 655.340 +		 *
 655.341 +		 *	The objects referenced from the array are owned by the media
 655.342 +		 *  field instance and must not be deleted. An object can be
 655.343 +		 *  removed from the media description by setting the corresponding
 655.344 +		 *  element to zero. By doing so, the calling party receives ownership
 655.345 +		 *  of the removed object.
 655.346 +		 *
 655.347 +		 *	@return The set of media level connection fields.
 655.348 +		 */
 655.349 +		IMPORT_C RPointerArray<CSdpConnectionField>& ConnectionFields();
 655.350 +
 655.351 +		/**
 655.352 +		 *	Removes a specific format from the media description.
 655.353 +		 *  The function will remove the named format from the format list if
 655.354 +		 *  found and then delete all format level attributes of type 
 655.355 +		 *  CSdpFmtAttributeField related to the removed format. 
 655.356 +		 *
 655.357 +		 *	@param aFormat The name of the format to remove.
 655.358 +		 */
 655.359 +		IMPORT_C void RemoveFormatL(const TDesC8& aFormat);
 655.360 +
 655.361 +		/**
 655.362 +		 *	Removes all formats except one from the media description.
 655.363 +		 *  The function will set the format list to only contain the one
 655.364 +		 *  format to keep and then delete all format level attributes that
 655.365 +		 *  are related to the removed formats. If the format is not found
 655.366 +		 *  from the format list, it is added there. If there are no format
 655.367 +		 *  level attributes for the specified format, the format level
 655.368 +		 *  attribute set will be empty.
 655.369 +		 *
 655.370 +		 *	@param aFormat The name of the format to keep after 
 655.371 +		 *         removing all others.
 655.372 +		 */
 655.373 +		IMPORT_C void KeepFormatL(const TDesC8& aFormat);
 655.374 +
 655.375 +		/**
 655.376 +		 *	Sets this media description into rejected state.
 655.377 +		 *  The rejected state is defined by the offer/answer model in
 655.378 +		 *  RFC3264. The function sets the port number to 0 and removes
 655.379 +		 *  all formats except one. The remaining format is determined
 655.380 +		 *  by the implementation.
 655.381 +		 */
 655.382 +		IMPORT_C void RejectMedia();
 655.383 +
 655.384 +    public:
 655.385 +		/**
 655.386 +		 *	Shows if contact is present
 655.387 +		 *
 655.388 +		 *	@return ETrue if contact present, otherwise EFalse
 655.389 +		 */
 655.390 +		TBool IsContactPresent() const;
 655.391 +		
 655.392 +		/**
 655.393 +         *  Externalizes the object to stream
 655.394 +         *
 655.395 +         *  @param aStream Stream where the object's state will be stored
 655.396 +         */
 655.397 +		void ExternalizeL(RWriteStream& aStream) const;
 655.398 +		
 655.399 +		/**
 655.400 +         *  Creates object from the stream data
 655.401 +         *
 655.402 +         *  @param aStream Stream where the object's state will be read	
 655.403 +         *  @return Initialized object
 655.404 +         */
 655.405 +		static CSdpMediaField* InternalizeL(RReadStream& aStream);
 655.406 +
 655.407 +	private:
 655.408 +		CSdpMediaField();
 655.409 +		void ConstructL();
 655.410 +		void ConstructL(TBool aRecurse);
 655.411 +		void ConstructL(RStringF aMedia, TUint aPort, RStringF aProtocol, 
 655.412 +						const TDesC8& aFormatList);
 655.413 +
 655.414 +		void ConstructL(const CSdpMediaField& aSdpMediaField);
 655.415 +		void DoInternalizeL(RReadStream& aStream);
 655.416 +		void ParseL (const TDesC8& aText);
 655.417 +		void ParseMediaL();
 655.418 +		void ParseInformationL();
 655.419 +		void ParseConnectionL();
 655.420 +		void ParseBandwithL();
 655.421 +		void ParseEncryptionKeyL();
 655.422 +		void ParseAttributeFieldsL();
 655.423 +		TDesC8& GetTokenFromStreamL(RReadStream& aStream);
 655.424 +
 655.425 +
 655.426 +		CSdpMediaField(const CSdpMediaField&); // Hidden.
 655.427 +		CSdpMediaField& operator = (const CSdpMediaField&); // Hidden
 655.428 +
 655.429 +    private: // Data
 655.430 +		HBufC8* iInfo;
 655.431 +		CSdpKeyField* iSdpKeyField;
 655.432 +		RArray<TPtrC8> iElementArray;
 655.433 +		RStringPool iPool;
 655.434 +		TBool iRecurse;
 655.435 +		RStringF iMedia;
 655.436 +		RStringF iProtocol;
 655.437 +		TUint iPort;
 655.438 +		TUint iPortCount;
 655.439 +		HBufC8* iFormatList;
 655.440 +		RPointerArray<CSdpBandwidthField>* iBandwidthFields;
 655.441 +		RPointerArray<CSdpAttributeField>* iAttributeFields;
 655.442 +		RPointerArray<CSdpConnectionField>* iConnectionFields;
 655.443 +		RPointerArray<CSdpFmtAttributeField>* iFmtAttrFields;
 655.444 +		HBufC8* iToken;
 655.445 +		CSdpCodecParseUtil* iSdpCodecParseUtil;
 655.446 +	};
 655.447 +
 655.448 +#endif // CSDPMEDIAFIELD_H
   656.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   656.2 +++ b/epoc32/include/mw/sdporiginfield.h	Wed Mar 31 12:27:01 2010 +0100
   656.3 @@ -0,0 +1,460 @@
   656.4 +/*
   656.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   656.6 +* All rights reserved.
   656.7 +* This component and the accompanying materials are made available
   656.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   656.9 +* which accompanies this distribution, and is available
  656.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  656.11 +*
  656.12 +* Initial Contributors:
  656.13 +* Nokia Corporation - initial contribution.
  656.14 +*
  656.15 +* Contributors:
  656.16 +*
  656.17 +* Description:
  656.18 +* Name          : SdpOriginField.h
  656.19 +* Part of       : SDP Codec
  656.20 +* Interface     : SDK API, SDP Codec API
  656.21 +* Version       : 1.0
  656.22 +*
  656.23 +*/
  656.24 +
  656.25 +
  656.26 +
  656.27 +#ifndef CSDPORIGINFIELD_H
  656.28 +#define CSDPORIGINFIELD_H
  656.29 +
  656.30 +//  INCLUDES
  656.31 +#include <e32base.h>
  656.32 +#include <in_sock.h>
  656.33 +#include <stringpool.h>
  656.34 +#include "_sdpdefs.h"
  656.35 +
  656.36 +//  CONSTANTS
  656.37 +const TInt KMaxAddressLength = 256;
  656.38 +
  656.39 +//  FORWARD DECLARATIONS
  656.40 +class RReadStream;
  656.41 +class RWriteStream;
  656.42 +class CSdpOriginFieldPtrs;
  656.43 +
  656.44 +// CLASS DECLARATION
  656.45 +/**
  656.46 + *  @publishedAll
  656.47 + *  @released
  656.48 + *
  656.49 + *	This class encapsulates the origin field of 
  656.50 + *  the Session Description Protocol.
  656.51 + * 
  656.52 + *	The normative reference for correct formatting and values is
  656.53 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  656.54 + *  member documentation. The implementation supports this normative
  656.55 + *  reference, but does not enforce it fully. 
  656.56 + *
  656.57 + *  @lib sdpcodec.lib
  656.58 + */
  656.59 +class CSdpOriginField : public CBase
  656.60 +	{
  656.61 +    public:     // Constructors and destructor
  656.62 +
  656.63 +        /**
  656.64 +         *	Constructs a new origin field.
  656.65 +		 *		 
  656.66 +         *	@param aText A string containing a correctly 
  656.67 +         *         formatted field value terminated by a CRLF.
  656.68 +         *	@return a new instance.
  656.69 +         */
  656.70 +		IMPORT_C static	CSdpOriginField* DecodeL( const TDesC8& aText );
  656.71 +
  656.72 +        /**
  656.73 +         *	Constructs a new origin field and adds the pointer to the cleanup 
  656.74 +         *  stack.
  656.75 +		 * 		
  656.76 +         *	@param aText A string containing a correctly 
  656.77 +         *         formatted field value terminated by a CRLF.
  656.78 +         *	@return a new instance.
  656.79 +         */
  656.80 +		IMPORT_C static	CSdpOriginField* DecodeLC( const TDesC8& aText );
  656.81 +
  656.82 +        /**
  656.83 +         *	Constructs a new origin field.
  656.84 +		 *	         
  656.85 +         *	@param aUserName A valid user name value.
  656.86 +         *	@param aSessionId A valid session id value.
  656.87 +         *	@param aSessionVersion A valid announcement version value.
  656.88 +         *	@param aAddress A unicast IP address from either
  656.89 +		 *         KAfInet or KAfInet6 family.
  656.90 +         *	@return a new instance.
  656.91 +         */
  656.92 +		IMPORT_C static	CSdpOriginField* NewL( const TDesC8& aUserName, 
  656.93 +											   TInt64 aSessionId, 
  656.94 +											   TInt64 aSessionVersion, 
  656.95 +											   TInetAddr& aAddress );
  656.96 +
  656.97 +        /**
  656.98 +         *	Constructs a new origin field and adds the pointer to the cleanup 
  656.99 +         *  stack.
 656.100 +		 *	         
 656.101 +         *	@param aUserName A valid user name value.
 656.102 +         *	@param aSessionId A valid session id value.
 656.103 +         *	@param aSessionVersion A valid announcement version value.
 656.104 +         *	@param aAddress A unicast IP address from either
 656.105 +		 *         KAfInet or KAfInet6 family.
 656.106 +         *	@return a new instance.
 656.107 +         */
 656.108 +		IMPORT_C static	CSdpOriginField* NewLC( const TDesC8& aUserName, 
 656.109 +											    TInt64 aSessionId, 
 656.110 +											    TInt64 aSessionVersion, 
 656.111 +											    TInetAddr& aAddress );
 656.112 +
 656.113 +		/**
 656.114 +         *	Constructs a new origin field.
 656.115 +		 *	
 656.116 +         *	@param aUserName A valid user name value.
 656.117 +         *	@param aSessionId A valid session id value.
 656.118 +         *	@param aSessionVersion A valid announcement version value.
 656.119 +         *	@param aNetType A valid network type value (typically "IN").
 656.120 +		 *  @param aAddressType A valid address type value 
 656.121 +		 *         (typically "IP4" or "IP6").
 656.122 +		 *	@param aAddress A unicast IP Address, Fully 
 656.123 +         *         Qualified Domain Name (FQDN), or an other type of 
 656.124 +         *         address allowed for the address type.
 656.125 +         *	@return a new instance.
 656.126 +         */
 656.127 +		IMPORT_C static	CSdpOriginField* NewL( const TDesC8& aUserName, 
 656.128 +											TInt64 aSessionId, 
 656.129 +											TInt64 aSessionVersion, 
 656.130 +											RStringF aNetType, 
 656.131 +											RStringF aAddressType, 
 656.132 +											const TDesC8& aAddress );
 656.133 +
 656.134 +		/**
 656.135 +         *	Constructs a new origin field and adds the pointer to the cleanup 
 656.136 +         *  stack.
 656.137 +		 *	
 656.138 +         *	@param aUserName A valid user name value.
 656.139 +         *	@param aSessionId A valid session id value.
 656.140 +         *	@param aSessionVersion A valid announcement version value.
 656.141 +         *	@param aNetType A valid network type value (typically "IN").
 656.142 +		 *  @param aAddressType A valid address type value 
 656.143 +		 *         (typically "IP4" or "IP6").
 656.144 +		 *	@param aAddress A unicast IP Address, Fully Qualified Domain
 656.145 +		 *         Name (FQDN), or an other type of address allowed
 656.146 +		 *         for the address type.
 656.147 +         *	@return a new instance.
 656.148 +         */
 656.149 +		IMPORT_C static	CSdpOriginField* NewLC( const TDesC8& aUserName, 
 656.150 +											TInt64 aSessionId, 
 656.151 +											TInt64 aSessionVersion, 
 656.152 +											RStringF aNetType, 
 656.153 +											RStringF aAddressType, 
 656.154 +											const TDesC8& aAddress );
 656.155 +
 656.156 +		/**
 656.157 +		 *	Deletes the resources held by the instance.
 656.158 +		 */
 656.159 +		IMPORT_C ~CSdpOriginField();
 656.160 +
 656.161 +    public: // New functions
 656.162 +
 656.163 +		/**
 656.164 +		 *	Outputs the field formatted according to SDP syntax and including
 656.165 +		 *  the terminating CRLF.
 656.166 +		 * 
 656.167 +		 *	@param aStream Stream used for output. On return 
 656.168 +         *         the stream includes correctly formatted origin field.
 656.169 +		 */
 656.170 +		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 656.171 +
 656.172 +		/**
 656.173 +    	 *	Creates a new instance that is equal to the target.
 656.174 +		 *
 656.175 +		 *	@return a new instance.
 656.176 +		 */
 656.177 +		IMPORT_C CSdpOriginField* CloneL() const;
 656.178 +
 656.179 +		/**	
 656.180 +		 *	Compares this instance to another for equality.
 656.181 +		 *
 656.182 +		 *	@param aObj The instance to compare to.
 656.183 +		 *	@return ETrue if equal, EFalse if not.
 656.184 +		 */
 656.185 +		IMPORT_C TBool operator == ( const CSdpOriginField& aObj ) const;
 656.186 +
 656.187 +		/**
 656.188 +		 *	Gets the user name.
 656.189 +		 *
 656.190 +		 *	@return User name.
 656.191 +		 */
 656.192 +		IMPORT_C const TDesC8& UserName() const;
 656.193 +
 656.194 +		/**
 656.195 +		 *	Sets the user name.
 656.196 +		 *
 656.197 +		 *	@param aValue A valid user name value.
 656.198 +		 *	@leave KErrSdpCodecOriginField if aValue is not a valid user name.
 656.199 +		 */
 656.200 +		IMPORT_C void SetUserNameL( const TDesC8& aValue );
 656.201 +
 656.202 +		/**
 656.203 +		 *	Gets the session id of the origin field.
 656.204 +		 *  
 656.205 +		 *	@return Session id.
 656.206 +		 */
 656.207 +		IMPORT_C TInt64 SessionId() const;
 656.208 +
 656.209 +		/**
 656.210 +		 *	Sets the session id.
 656.211 +		 *
 656.212 +		 *	@param aValue A valid session id value.
 656.213 +		 */
 656.214 +		IMPORT_C void SetSessionId( TInt64 aValue );
 656.215 +		
 656.216 +		/**
 656.217 +		 *	Gets the announcement version.
 656.218 +		 *	
 656.219 +		 *	@return Version.
 656.220 +		 */
 656.221 +		IMPORT_C TInt64 Version() const;
 656.222 +
 656.223 +		/**
 656.224 +		 *	Sets the announcement version..
 656.225 +		 *
 656.226 +		 *	@param aValue A valid version value.
 656.227 +		 */
 656.228 +		IMPORT_C void SetVersion( TInt64 aValue );
 656.229 +
 656.230 +		/**
 656.231 +		 *	Gets the network type.
 656.232 +		 *
 656.233 +		 *	@return The network type from pre-defined SDP string 
 656.234 +         *          table or given by the user.
 656.235 +		 */
 656.236 +		IMPORT_C RStringF NetType() const;
 656.237 +
 656.238 +		/**
 656.239 +		 *	Gets the address type.
 656.240 +		 *
 656.241 +		 *	@return The address type from pre-defined SDP string 
 656.242 +         *          table or given by the user.
 656.243 +		 */
 656.244 +		IMPORT_C RStringF AddressType() const;
 656.245 +		
 656.246 +		/**
 656.247 +		 *	Gets the address.
 656.248 +		 *
 656.249 +		 *	@return Address as an IP address or null if it is
 656.250 +		 *          not an IP address. This may be e.g. when the address has 
 656.251 +		 *          been specified as a FQDN. In this case, the address can be 
 656.252 +		 *          accessed using the other getters.
 656.253 +		 */
 656.254 +		IMPORT_C const TInetAddr* InetAddress() const;
 656.255 +
 656.256 +		/**
 656.257 +		 *	Gets the address.
 656.258 +		 *
 656.259 +		 *  @return Address as a string.
 656.260 +		 */
 656.261 +		IMPORT_C const TDesC8& Address() const;
 656.262 +
 656.263 +		/**
 656.264 +		 *	Sets the address, network and address type.
 656.265 +		 *	Also sets the network type to "IN" and address type to "IP4" or 
 656.266 +		 *  "IP6" depending on the address family of aValue.
 656.267 +		 *
 656.268 +         *	@param aValue A unicast IP address from either KAfInet 
 656.269 +         *         or KAfInet6 family.
 656.270 +		 */
 656.271 +		IMPORT_C void SetInetAddress( const TInetAddr& aValue );
 656.272 +
 656.273 +		/**
 656.274 +		 *	Sets the address, network and address type.
 656.275 +		 *
 656.276 +		 *	@param aAddress A unicast IP Address, Fully Qualified Domain
 656.277 +		 *         Name (FQDN), or an other type of address allowed for the
 656.278 +		 *         address type.
 656.279 +         *	@param aNetType A valid network type value (typically "IN").
 656.280 +		 *  @param aAddressType A valid address type value 
 656.281 +		 *         (typically "IP4" or "IP6").
 656.282 +		 *	@leave KErrSdpCodecOriginField if aNetType or aAddressType are not
 656.283 +		 *		   valid tokens, or aAddress is invalid, or aAddress type 
 656.284 +		 *		   is not aligned with the address format
 656.285 +		 */
 656.286 +		IMPORT_C void SetAddressL( const TDesC8& aAddress, 
 656.287 +								   RStringF aNetType, 
 656.288 +								   RStringF aAddressType );
 656.289 +        
 656.290 +    public:     // Internal to codec
 656.291 +
 656.292 +        /**
 656.293 +         *  Externalizes the object to stream
 656.294 +         *
 656.295 +         *  @param aStream Stream where the object's state will be stored
 656.296 +         */
 656.297 +		void ExternalizeL( RWriteStream& aStream ) const;
 656.298 +
 656.299 +        /**
 656.300 +         *  Creates object from the stream data
 656.301 +         *
 656.302 +         *  @param aStream Stream where the object's state will be read	
 656.303 +         *  @return Initialized object
 656.304 +         */
 656.305 +		static CSdpOriginField* InternalizeL( RReadStream& aStream );
 656.306 +
 656.307 +	private:    // Constructors
 656.308 +
 656.309 +        /**
 656.310 +         *  Constructor
 656.311 +         */
 656.312 +		CSdpOriginField();
 656.313 +
 656.314 +        /**
 656.315 +         *  Second phase constructor. Parses the text string and initializes
 656.316 +         *  the member variables
 656.317 +         *         
 656.318 +         *  @param aText Line of text that will be parsed (ends on the newline)
 656.319 +         */
 656.320 +		void ConstructL( const TDesC8& aText );
 656.321 +        
 656.322 +        /**
 656.323 +         *  Second phase constructor. Constructs the object.
 656.324 +         *
 656.325 +         *  @param aUserName  A valid user name value.
 656.326 +         *  @param aSessionId A valid session id value.
 656.327 +         *  @param aSessionVersion A valid announcement version value.
 656.328 +         *  @param aAddress A unicast IP address from either
 656.329 +		 *                  KAfInet or KAfInet6 family.        
 656.330 +         */
 656.331 +		void ConstructL( const TDesC8& aUserName, 
 656.332 +						 TInt64 aSessionId, 
 656.333 +                         TInt64 aSessionVersion, 
 656.334 +						 TInetAddr& aUnicastAddress );
 656.335 +         
 656.336 +        /**                        
 656.337 +         *	Second phase constructor. Constructs the object.
 656.338 +		 *	
 656.339 +         *	@param aUserName  A valid user name value.
 656.340 +         *	@param aSessionId A valid session id value.
 656.341 +         *	@param aSessionVersion A valid announcement version value.
 656.342 +         *	@param aNetType A valid network type value (typically "IN").
 656.343 +		 *  @param aAddressType A valid address type value 
 656.344 +		 *         (typically "IP4" or "IP6").
 656.345 +		 *	@param aAddress A unicast IP Address, Fully Qualified Domain
 656.346 +		 *         Name (FQDN), or an other type of address allowed
 656.347 +		 *         for the address type.
 656.348 +         */
 656.349 +        void ConstructL( const TDesC8& aUserName, 
 656.350 +	                     TInt64 aSessionId, 
 656.351 +	                     TInt64 aSessionVersion, 
 656.352 +	                     RStringF aNetType, 
 656.353 +					     RStringF aAddressType, 
 656.354 +	                     const TDesC8& aAddress );
 656.355 +
 656.356 +        // These are unnecessary? Derived from CBase, prevents the use
 656.357 +		CSdpOriginField( const CSdpOriginField& ); // Hidden.
 656.358 +		CSdpOriginField& operator = ( const CSdpOriginField& ); // Hidden
 656.359 +
 656.360 +    private:        // New methods
 656.361 +
 656.362 +        /**
 656.363 +         *  Checks if the given address is valid
 656.364 +         *
 656.365 +         *  @param aAddress Address to be checked
 656.366 +         *  @return Valid address or not
 656.367 +         */
 656.368 +        TBool IsValidAddress( const TDesC8& aAddress ) const;   
 656.369 +        
 656.370 +        /**
 656.371 +         *  Checks if the given address is valid
 656.372 +         *
 656.373 +         *  @param aAddr Address to be checked
 656.374 +         *  @return Valid address or not
 656.375 +         */             
 656.376 +        TBool IsValidAddress( const TInetAddr& addr ) const;
 656.377 +
 656.378 +        /**
 656.379 +         *  Checks that address type matches with address format
 656.380 +         *
 656.381 +         *  @param aAddress Address
 656.382 +         *  @param aType Address type
 656.383 +         *  @param aPool String pool
 656.384 +         *  @return Type Matches with format or not
 656.385 +         */
 656.386 +        TBool TypeMatchesWithFormat( 
 656.387 +            const TDesC8& aAddress, const TDesC8& aType, 
 656.388 +            RStringPool aPool ) const;
 656.389 +
 656.390 +        /**
 656.391 +         *  Checks if the given username is valid
 656.392 +         *
 656.393 +         *  @param aUserName Username
 656.394 +         *  @return Validity of the given username
 656.395 +         */
 656.396 +        TBool IsValidUserName( const TDesC8& aUserName ) const;
 656.397 +
 656.398 +        /**
 656.399 +         *  Parses username, initializes iUserName
 656.400 +         *
 656.401 +         *  @param aArray Array containing all the elements
 656.402 +         */
 656.403 +        void ParseUserNameL( RArray<TPtrC8>& aArray );
 656.404 +
 656.405 +        /**
 656.406 +         *  Parses session ID and version, initializes iSessionId
 656.407 +         *  and iSessionVersion
 656.408 +         *
 656.409 +         *  @param aArray Array containing all the elements
 656.410 +         */
 656.411 +        void ParseSessionIDAndVersionL( RArray<TPtrC8>& aArray );
 656.412 +
 656.413 +        /**
 656.414 +         *  Parses network type and address type, initializes
 656.415 +         *  iNetType and iAddressType
 656.416 +         *
 656.417 +         *  @param aArray Array containing all the elements
 656.418 +         */
 656.419 +       void ParseNetTypeAndAddressTypeL( RArray<TPtrC8>& aArray );
 656.420 +
 656.421 +        /**
 656.422 +         *  Parses address, checks address against address type,
 656.423 +         *  initializes iAddress
 656.424 +         *
 656.425 +         *  @param aArray Array containing all the elements
 656.426 +         */
 656.427 +        void ParseAddressL( RArray<TPtrC8>& aArray );
 656.428 +
 656.429 +		inline CSdpOriginFieldPtrs& OriginFieldPtrs();
 656.430 +
 656.431 +		inline const CSdpOriginFieldPtrs& OriginFieldPtrs() const;
 656.432 +
 656.433 +		TInt64 Get63Msbs( const TDesC8& aDecimalValue ) const;
 656.434 +		void SetIPAddressType( const TInetAddr& aAddr );
 656.435 +
 656.436 +    private:    // Data
 656.437 +
 656.438 +        RStringPool iPool;
 656.439 +
 656.440 +        // <username>
 656.441 +		HBufC8* iUserName;
 656.442 +        // <session id>
 656.443 +		TInt64 iSessionId;
 656.444 +        // <version>
 656.445 +		TInt64 iSessionVersion;
 656.446 +        // <net type>
 656.447 +        RStringF iNetType;
 656.448 +        // <address type>        
 656.449 +        RStringF iAddressType;
 656.450 +        // <address>
 656.451 +        // Either one is used (this or iAddressType/iAddress combo)
 656.452 +        // Can be defined as mutable because this variable does not affect
 656.453 +        // to the state of the object, but it is needed as const pointer
 656.454 +        // is returned on InetAddr() method
 656.455 +		mutable TInetAddr iUnicastAddress;        
 656.456 +        TBuf8<KMaxAddressLength> iAddress; 
 656.457 +        // For configuring the address into TInetAddr
 656.458 +        TBuf<KMaxAddressLength> iAddress16;          
 656.459 +
 656.460 +		__DECLARE_TEST;
 656.461 +	};
 656.462 +
 656.463 +#endif // CSDPORIGINFIELD_H
   657.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   657.2 +++ b/epoc32/include/mw/sdprepeatfield.h	Wed Mar 31 12:27:01 2010 +0100
   657.3 @@ -0,0 +1,211 @@
   657.4 +/*
   657.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   657.6 +* All rights reserved.
   657.7 +* This component and the accompanying materials are made available
   657.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   657.9 +* which accompanies this distribution, and is available
  657.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  657.11 +*
  657.12 +* Initial Contributors:
  657.13 +* Nokia Corporation - initial contribution.
  657.14 +*
  657.15 +* Contributors:
  657.16 +*
  657.17 +* Description:
  657.18 +* Name          : SdpRepeatField.h
  657.19 +* Part of       : SDP Codec
  657.20 +* Interface     : SDK API, SDP Codec API
  657.21 +* Version       : 1.0
  657.22 +*
  657.23 +*/
  657.24 +
  657.25 +
  657.26 +
  657.27 +#ifndef CSDPREPEATFIELD_H
  657.28 +#define CSDPREPEATFIELD_H
  657.29 +
  657.30 +//  INCLUDES
  657.31 +#include <e32base.h>
  657.32 +#include <stringpool.h>
  657.33 +#include "_sdpdefs.h"
  657.34 +#include <sdptypedtime.h>
  657.35 +
  657.36 +// FORWARD DECLARATIONS
  657.37 +class RReadStream;
  657.38 +class RWriteStream;
  657.39 +
  657.40 +// CLASS DECLARATION
  657.41 +/**
  657.42 + *  @publishedAll
  657.43 + *  @released
  657.44 + *
  657.45 + *	This class encapsulates the repeat times field of the 
  657.46 + *  Session Description Protocol.
  657.47 + *
  657.48 + *	The normative reference for correct formatting and values is
  657.49 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  657.50 + *  member documentation. The implementation supports this normative
  657.51 + *  reference, but does not enforce it fully. 
  657.52 + *
  657.53 + *  @lib sdpcodec.lib
  657.54 + */
  657.55 +class CSdpRepeatField : public CBase
  657.56 +	{
  657.57 +    public: // Constructors and destructor
  657.58 +        /**
  657.59 +         *	Constructs a new repeat times field.
  657.60 +		 *	
  657.61 +         *	@param aText A string containing a correctly 
  657.62 +         *         formatted field value terminated by a CRLF.
  657.63 +         *	@return a new instance.
  657.64 +         */
  657.65 +		IMPORT_C static	CSdpRepeatField* DecodeL(const TDesC8& aText);
  657.66 +
  657.67 +        /**
  657.68 +         *	Constructs a new repeat times field and adds the pointer to the 
  657.69 +         *  cleanup stack.
  657.70 +		 *	
  657.71 +         *	@param aText A string containing a correctly 
  657.72 +         *         formatted field value terminated by a CRLF.
  657.73 +         *	@return a new instance.
  657.74 +         */
  657.75 +		IMPORT_C static	CSdpRepeatField* DecodeLC(const TDesC8& aText);
  657.76 +
  657.77 +        /**
  657.78 +         *	Constructs a new repeat times field.
  657.79 +		 *	
  657.80 +         *	@param aRepeatInterval Repeat interval value 
  657.81 +         *         greater than zero.
  657.82 +         *	@param aActiveDuration Active duration.
  657.83 +         *	@param aOffsets At least one time offset.
  657.84 +         *	@return a new instance.
  657.85 +         */
  657.86 +		IMPORT_C static	CSdpRepeatField* NewL(
  657.87 +                                        const TSdpTypedTime  aRepeatInterval,
  657.88 +										const TSdpTypedTime  aActiveDuration,
  657.89 +										const RArray<TSdpTypedTime>& aOffsets);
  657.90 +
  657.91 +        /**
  657.92 +         *	Constructs a new repeat times field and adds the pointer to the 
  657.93 +         *  cleanup stack.
  657.94 +		 *	
  657.95 +         *	@param aRepeatInterval Repeat interval value 
  657.96 +         *         greater than zero.
  657.97 +         *	@param aActiveDuration Active duration.
  657.98 +         *	@param aOffsets At least one time offset.
  657.99 +         *	@return a new instance.
 657.100 +         */
 657.101 +		IMPORT_C static	CSdpRepeatField* NewLC(
 657.102 +                                        const TSdpTypedTime  aRepeatInterval,
 657.103 +										const TSdpTypedTime aActiveDuration,
 657.104 +										const RArray<TSdpTypedTime>& aOffsets);
 657.105 +
 657.106 +		/**
 657.107 +		 *	Deletes the resources held by the instance.
 657.108 +		 */
 657.109 +		IMPORT_C ~CSdpRepeatField();
 657.110 +
 657.111 +    public: // New functions
 657.112 +		/**
 657.113 +		 *	Outputs the field formatted according to SDP syntax and including
 657.114 +		 *  the terminating CRLF.
 657.115 +		 * 
 657.116 +		 *	@param aStream Stream used for output. On return 
 657.117 +         *         the stream includes correctly formatted repeat field.
 657.118 +		 */
 657.119 +		IMPORT_C void EncodeL(RWriteStream& aStream) const;
 657.120 +
 657.121 +		/**
 657.122 +		 *	Creates a new instance that is equal to the target.
 657.123 +		 *
 657.124 +		 *	@return a new instance.
 657.125 +		 */
 657.126 +		IMPORT_C CSdpRepeatField * CloneL() const;
 657.127 +
 657.128 +		/**	
 657.129 +		 *	Compares this instance to another for equality.
 657.130 +		 *
 657.131 +		 *	@param aObj The instance to compare to.
 657.132 +		 *	@return ETrue if equal, EFalse if not.
 657.133 +		 */
 657.134 +		IMPORT_C TBool operator == (const CSdpRepeatField & aObj) const;
 657.135 +
 657.136 +		/**
 657.137 +		 *	Gets the repeat interval.
 657.138 +		 *
 657.139 +		 *	@return The repeat interval.
 657.140 +		 */
 657.141 +		IMPORT_C const TSdpTypedTime RepeatInterval() const;
 657.142 +
 657.143 +		/**
 657.144 +		 *	Sets the repeat interval.
 657.145 +		 *
 657.146 +         *	@param aValue Repeat interval value greater than zero.
 657.147 +         *	@leave KErrSdpCodecRepeatField if aValue is not positive integer 
 657.148 +         *         value.
 657.149 +		 */
 657.150 +		IMPORT_C void SetRepeatIntervalL(const TSdpTypedTime  aValue);
 657.151 +
 657.152 +		/**
 657.153 +		 *	Gets the active duration..
 657.154 +		 *
 657.155 +		 *	@return The active duration.
 657.156 +		 */
 657.157 +		IMPORT_C const TSdpTypedTime ActiveDuration() const;
 657.158 +
 657.159 +		/**
 657.160 +		 *	Sets the active duration.
 657.161 +		 *
 657.162 +         *	@param Active duration.
 657.163 +		 */
 657.164 +		IMPORT_C void SetActiveDuration(const TSdpTypedTime aValue);
 657.165 +
 657.166 +		/**
 657.167 +		 *	Gets the array of time offsets.
 657.168 +		 *  This array is used directly for element insertion and removal.
 657.169 +		 *
 657.170 +		 *	@return The offsets.
 657.171 +		 */
 657.172 +		IMPORT_C const RArray<TSdpTypedTime>& TimeOffsets() const;
 657.173 +
 657.174 +		/**
 657.175 +		 *	Sets the time offsets.
 657.176 +		 *
 657.177 +         *	@param aOffsets At least one time offset.
 657.178 +		 */
 657.179 +		IMPORT_C void SetTimeOffsetsL(const RArray<TSdpTypedTime>& aValue);
 657.180 +
 657.181 +    public:
 657.182 +		/**
 657.183 +         *  Externalizes the object to stream
 657.184 +         *
 657.185 +         *  @param aStream Stream where the object's state will be stored
 657.186 +         */
 657.187 +		void ExternalizeL(RWriteStream& aStream) const;
 657.188 +		
 657.189 +		/**
 657.190 +         *  Creates object from the stream data
 657.191 +         *
 657.192 +         *  @param aStream Stream where the object's state will be read	
 657.193 +         *  @return Initialized object
 657.194 +         */
 657.195 +		static CSdpRepeatField* InternalizeL(RReadStream& aStream);
 657.196 +
 657.197 +	private:
 657.198 +		CSdpRepeatField(const TSdpTypedTime aRepeatInterval,
 657.199 +						const TSdpTypedTime aActiveDuration);
 657.200 +		CSdpRepeatField();
 657.201 +		void ConstructL(const TDesC8& aText);
 657.202 +		void ConstructL(const RArray<TSdpTypedTime>& aOffsets);
 657.203 +        
 657.204 +
 657.205 +    private: // Data
 657.206 +        RStringPool iPool;
 657.207 +		TSdpTypedTime iRepeatInterval;
 657.208 +		TSdpTypedTime iActiveDuration;
 657.209 +		RArray<TSdpTypedTime> iTimeOffsets;
 657.210 +
 657.211 +		__DECLARE_TEST;
 657.212 +	};
 657.213 +
 657.214 +#endif // CSDPREPEATFIELD_H
   658.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   658.2 +++ b/epoc32/include/mw/sdprtpmapvalue.h	Wed Mar 31 12:27:01 2010 +0100
   658.3 @@ -0,0 +1,117 @@
   658.4 +/*
   658.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   658.6 +* All rights reserved.
   658.7 +* This component and the accompanying materials are made available
   658.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   658.9 +* which accompanies this distribution, and is available
  658.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  658.11 +*
  658.12 +* Initial Contributors:
  658.13 +* Nokia Corporation - initial contribution.
  658.14 +*
  658.15 +* Contributors:
  658.16 +*
  658.17 +* Description:
  658.18 +* Name          : SdpRtpmapValue.h
  658.19 +* Part of       : SDP Codec
  658.20 +* Interface     : SDK API, SDP Codec API
  658.21 +* Version       : 1.0
  658.22 +*
  658.23 +*/
  658.24 +
  658.25 +
  658.26 +
  658.27 +#ifndef TSDPRTPMAPVALUE_H
  658.28 +#define TSDPRTPMAPVALUE_H
  658.29 +
  658.30 +// INCLUDES
  658.31 +#include <e32std.h>
  658.32 +#include <stringpool.h>
  658.33 +#include "_sdpdefs.h"
  658.34 +
  658.35 +// FORWARD DECLARATIONS
  658.36 +class RWriteStream;
  658.37 +
  658.38 +// CLASS DECLARATION
  658.39 +/**
  658.40 + *  @publishedAll
  658.41 + *  @released
  658.42 + *
  658.43 + *	Utility class for manipulating the value of an rtpmap-attribute.
  658.44 + *
  658.45 + *	The normative reference for correct formatting and values is
  658.46 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  658.47 + *  member documentation. The implementation supports this normative
  658.48 + *  reference, but does not enforce it fully. 
  658.49 + *
  658.50 + *  @lib sdpcodec.lib
  658.51 + */
  658.52 +class TSdpRtpmapValue
  658.53 +	{
  658.54 +    public: // Constructors and destructor
  658.55 +
  658.56 +		/**
  658.57 +		 *	Initializes the instance to refer to the given rtpmap components.
  658.58 +		 *	The parameters must stay in scope as long as this instance exists.
  658.59 +		 *	Otherwise, the member variables of this class will point to
  658.60 +		 *	a released memory.
  658.61 +		 *  
  658.62 +		 *	@param aEncodingName Valid rtpmap encoding name value.	
  658.63 +		 *	@param aClockrate Valid rtpmap clockrate value.	
  658.64 +		 *	@param aEncodingParameters Valid rtpmap encoding 
  658.65 +         *         parameter list.	
  658.66 +		 */
  658.67 +		IMPORT_C TSdpRtpmapValue( 
  658.68 +						const TPtrC8& aEncodingName,
  658.69 +						const TPtrC8& aClockrate,
  658.70 +						const TPtrC8& aEncodingParameters );
  658.71 +
  658.72 +    public: // New functions
  658.73 +
  658.74 +		/**
  658.75 +		 *	Tries to parse a string as an rtpmap attribute value up to the end 
  658.76 +		 *	of the string or CRLF, whichever comes first, and set pointers to 
  658.77 +		 *	the components found. The parameter must stay in scope as long as 
  658.78 +         *  this instance exists. Otherwise, the member variables of this class 
  658.79 +         *  will point to a released memory.
  658.80 +		 *         
  658.81 +		 *	@param aText String containing the value of an rtpmap attribute.
  658.82 +         *  @return a new instance 
  658.83 +		 *	@leave  KErrArgument if parsing fails.
  658.84 +		 */
  658.85 +		IMPORT_C static TSdpRtpmapValue DecodeL( const TDesC8& aText );
  658.86 +
  658.87 +		/**
  658.88 +		 *	Outputs the attribute value formatted according to SDP syntax.
  658.89 +		 *  The field terminating CRLF is not included in the output.
  658.90 +         *  When constructing CSdpFmtAttributeField, return value of this 
  658.91 +         *  function can be used as aValue in CSdpFmtAttributeField::NewL
  658.92 +         *  (RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue)
  658.93 +         *  function.
  658.94 +		 * 
  658.95 +         *  @return Encoded value. Ovnership of buffer is changed to caller.
  658.96 +		 */
  658.97 +		IMPORT_C HBufC8* EncodeL() const;        
  658.98 +
  658.99 +    public: // Data
 658.100 +
 658.101 +		/** 
 658.102 +		* Encoding name part of an rtpmap value 
 658.103 +		* @internalComponent
 658.104 +		*/
 658.105 +		TPtrC8 iEncName;
 658.106 +
 658.107 +		/** 
 658.108 +		* Clockrate part of an rtpmap value. 
 658.109 +		* @internalComponent
 658.110 +		*/
 658.111 +		TPtrC8 iClockrate;
 658.112 +
 658.113 +		/** 
 658.114 +		* Encoding parameters part of an rtpmap value. 
 658.115 +		* @internalComponent
 658.116 +		*/
 658.117 +		TPtrC8 iEncParams;
 658.118 +	};
 658.119 +
 658.120 +#endif // TSDPRTPMAPVALUE_H
   659.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   659.2 +++ b/epoc32/include/mw/sdptimefield.h	Wed Mar 31 12:27:01 2010 +0100
   659.3 @@ -0,0 +1,230 @@
   659.4 +/*
   659.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   659.6 +* All rights reserved.
   659.7 +* This component and the accompanying materials are made available
   659.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   659.9 +* which accompanies this distribution, and is available
  659.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  659.11 +*
  659.12 +* Initial Contributors:
  659.13 +* Nokia Corporation - initial contribution.
  659.14 +*
  659.15 +* Contributors:
  659.16 +*
  659.17 +* Description:
  659.18 +* Name          : SdpTimeField.h
  659.19 +* Part of       : SDP Codec
  659.20 +* Interface     : SDK API, SDP Codec API
  659.21 +* Version       : 1.0
  659.22 +*
  659.23 +*/
  659.24 +
  659.25 +
  659.26 +
  659.27 +#ifndef CSDPTIMESFIELD_H
  659.28 +#define CSDPTIMESFIELD_H
  659.29 +
  659.30 +//  INCLUDES
  659.31 +#include <e32base.h>
  659.32 +#include <stringpool.h>
  659.33 +#include "_sdpdefs.h"
  659.34 +
  659.35 +// FORWARD DECLARATIONS
  659.36 +class RReadStream;
  659.37 +class RWriteStream;
  659.38 +class CSdpRepeatField;
  659.39 +
  659.40 +// CLASS DECLARATION
  659.41 +/**
  659.42 + *  @publishedAll
  659.43 + *  @released
  659.44 + *
  659.45 + *	This class encapsulates the time field and the related zero or 
  659.46 + *  more repeat times fields and an optional time zone adjustment
  659.47 + *  field of the Session Description Protocol.
  659.48 + *
  659.49 + *	The normative reference for correct formatting and values is
  659.50 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  659.51 + *  member documentation. The implementation supports this normative
  659.52 + *  reference, but does not enforce it fully. 
  659.53 + *
  659.54 + *  @lib sdpcodec.lib
  659.55 + */
  659.56 +class CSdpTimeField : public CBase
  659.57 +	{
  659.58 +    public: // Constructors and destructor
  659.59 +        /**
  659.60 +         *	Constructs a time field.
  659.61 +		 * 
  659.62 +         *	@param aText A correctly formatted time field value
  659.63 +         *         terminated by a CRLF followed by zero or more repeat 
  659.64 +         *         times and zero or one time zone adjustment fields 
  659.65 +         *         separeted by a CRLF.
  659.66 +		 *	@param aRecurse Flag to specify whether to decode subfields 
  659.67 +		 *         also (ETrue) or only the time field (EFalse).
  659.68 +         *	@return a new instance.
  659.69 +         */
  659.70 +		IMPORT_C static CSdpTimeField * DecodeL(const TDesC8& aText, 
  659.71 +                                                TBool aRecurse = ETrue);
  659.72 +
  659.73 +        /**
  659.74 +         *	Constructs a time field and adds the pointer to the cleanup stack.
  659.75 +		 *	
  659.76 +         *	@param aText A correctly formatted time field value 
  659.77 +         *         terminated by a CRLF followed by zero or more repeat 
  659.78 +         *         times and zero or one time zone adjustment fields 
  659.79 +         *         separeted by a CRLF.
  659.80 +		 *	@param aRecurse Flag to specify whether to decode subfields 
  659.81 +		 *         also (ETrue) or only the time field (EFalse).
  659.82 +         *	@return a new instance.
  659.83 +         */
  659.84 +		IMPORT_C static CSdpTimeField * DecodeLC(const TDesC8& aText,
  659.85 +                                                TBool aRecurse = ETrue);
  659.86 +
  659.87 +        /**
  659.88 +         *	Constructs a time field.
  659.89 +		 *	
  659.90 +         *	@param aStartTime Session start time.
  659.91 +         *	@param aStopTime Session end time that must be 
  659.92 +         *         greater than or equal to the start time.
  659.93 +         *	@return a new instance.
  659.94 +         */
  659.95 +		IMPORT_C static CSdpTimeField * NewL(const TDesC8& aStartTime,
  659.96 +									        const TDesC8& aStopTime);
  659.97 +
  659.98 +        /**
  659.99 +         *	Constructs a time field and adds the pointer to the cleanup stack.
 659.100 +		 *	
 659.101 +         *	@param aStartTime Session start time.
 659.102 +         *	@param aStopTime Session end time that must be 
 659.103 +         *         greater than or equal to the start time.
 659.104 +         *	@return a new instance.
 659.105 +         */
 659.106 +		IMPORT_C static CSdpTimeField * NewLC(const TDesC8& aStartTime,
 659.107 +									        const TDesC8& aStopTime);
 659.108 +
 659.109 +		/**
 659.110 +		 *	Deletes the resources held by the instance.
 659.111 +		 */
 659.112 +		IMPORT_C ~CSdpTimeField();
 659.113 +
 659.114 +    public: // New functions
 659.115 +		/**
 659.116 +		 *	Outputs the field formatted according to SDP syntax and including
 659.117 +		 *  the terminating CRLF. Optionally output also the related repeat
 659.118 +		 *  times.
 659.119 +		 * 
 659.120 +		 *	@param aStream Stream used for output. On return 
 659.121 +         *         the stream includes correctly formatted time field with 
 659.122 +         *         repeat fields if aRecurse is ETrue.
 659.123 +		 *	@param aRecurse Flag to specify whether to output subfields
 659.124 +		 *         also (ETrue) or only the time field (EFalse).
 659.125 +		 */
 659.126 +		IMPORT_C void EncodeL(RWriteStream& aStream, TBool aRecurse = ETrue) const;
 659.127 +
 659.128 +		/**
 659.129 +		 *	Creates a new instance that is equal to the target.
 659.130 +		 *  Optionally also related repeat times are cloned.
 659.131 +		 *
 659.132 +		 *	@param aRecurse Flag to specify whether to clone subfields 
 659.133 +		 *         also (ETrue) or only the time field (EFalse).
 659.134 +		 *	@return a new instance.
 659.135 +		 */
 659.136 +		IMPORT_C CSdpTimeField * CloneL(TBool aRecurse = ETrue) const;
 659.137 +
 659.138 +		/**	
 659.139 +		 *	Compares this instance to another for equality. Subfields are
 659.140 +		 *	included in comparison if present.
 659.141 +		 *
 659.142 +		 *	@param aObj The instance to compare to.
 659.143 +		 *	@return ETrue if equal, EFalse if not.
 659.144 +		 */
 659.145 +		IMPORT_C TBool operator == (const CSdpTimeField & aObj) const;
 659.146 +
 659.147 +		/**
 659.148 +		 *	Checks the consistency of the time description and it's subfields.
 659.149 +		 *.
 659.150 +		 *	@return	ETrue if time description is valid and EFalse if not.
 659.151 +		 */
 659.152 +		IMPORT_C TBool IsValid() const;
 659.153 +
 659.154 +		/**
 659.155 +		 *	Gets the session start time.
 659.156 +		 *
 659.157 +		 *	@return The session start time.
 659.158 +		 */
 659.159 +		IMPORT_C const TDesC8& StartTime() const;
 659.160 +
 659.161 +		/**
 659.162 +		 *	Gets the session stop time.
 659.163 +		 *
 659.164 +		 *	@return The session stop time.
 659.165 +		 */
 659.166 +		IMPORT_C const TDesC8& StopTime() const;
 659.167 +
 659.168 +		/**
 659.169 +		 *	Sets the session start and stop times.
 659.170 +		 *
 659.171 +         *	@param aStartTime Session start time..
 659.172 +         *	@param aStopTime Session end time that must be 
 659.173 +         *         greater than or equal to the start time.
 659.174 +		 *	@leave KErrSdpCodecTimeField if start time and stop time are not 
 659.175 +         *         correct as defined draft-ietf-mmusic-sdp-new-14.
 659.176 +		 */
 659.177 +		IMPORT_C void SetTimesL(const TDesC8& aStartTime, const TDesC8& aStopTime);
 659.178 +
 659.179 +		/**
 659.180 +		 *	Gets the set of repeat times fields related to this time field.
 659.181 +		 *  This array is used directly for element insertion and removal.
 659.182 +		 *
 659.183 +		 *	The objects referenced from the array are owned by the media field
 659.184 +		 *  instance and must not be deleted. An object can be removed from the 
 659.185 +		 *  media description by setting the corresponding element to zero. By
 659.186 +		 *  doing so, the calling party receives ownership of the removed object.
 659.187 +		 *
 659.188 +		 *	@return The set of repeat fields.
 659.189 +		 */
 659.190 +		IMPORT_C RPointerArray<CSdpRepeatField>& RepeatFields();
 659.191 +	
 659.192 +    public:
 659.193 +		/**
 659.194 +         *  Externalizes the object to stream
 659.195 +         *
 659.196 +         *  @param aStream Stream where the object's state will be stored
 659.197 +         */
 659.198 +		void ExternalizeL(RWriteStream& aStream) const;
 659.199 +		
 659.200 +		/**
 659.201 +         *  Creates object from the stream data
 659.202 +         *
 659.203 +         *  @param aStream Stream where the object's state will be read
 659.204 +         *  @return Initialized object
 659.205 +         */
 659.206 +		static CSdpTimeField* InternalizeL(RReadStream& aStream);
 659.207 +        
 659.208 +        /**
 659.209 +         *  Creates object from the stream data.
 659.210 +         *	Does the "2nd phase construction" of internalization.
 659.211 +         *
 659.212 +         *  @param aStream Stream where the object's state will be read
 659.213 +         */
 659.214 +        void DoInternalizeL(RReadStream& aStream);
 659.215 +
 659.216 +	private:
 659.217 +   		CSdpTimeField();
 659.218 +
 659.219 +		void ConstructL(const TDesC8& aText, TBool aRecurse=ETrue);
 659.220 +		void ConstructL(const TDesC8& aStartTime, const TDesC8& aStopTime);
 659.221 +
 659.222 +        TBool RepeatFieldsCompare(const CSdpTimeField& aObj) const;
 659.223 +
 659.224 +    private: // Data
 659.225 +		HBufC8* iStartTime;
 659.226 +		HBufC8* iStopTime;
 659.227 +		RPointerArray<CSdpRepeatField> iRFields;
 659.228 +        RStringPool iStringPool;
 659.229 +
 659.230 +		__DECLARE_TEST;
 659.231 +	};
 659.232 +
 659.233 +#endif // CSDPTIMESFIELD_H
   660.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   660.2 +++ b/epoc32/include/mw/sdptypedtime.h	Wed Mar 31 12:27:01 2010 +0100
   660.3 @@ -0,0 +1,143 @@
   660.4 +/*
   660.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   660.6 +* All rights reserved.
   660.7 +* This component and the accompanying materials are made available
   660.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   660.9 +* which accompanies this distribution, and is available
  660.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  660.11 +*
  660.12 +* Initial Contributors:
  660.13 +* Nokia Corporation - initial contribution.
  660.14 +*
  660.15 +* Contributors:
  660.16 +*
  660.17 +* Description:
  660.18 +* Name          : SdpTypedTime.h
  660.19 +* Part of       : SDP Codec
  660.20 +* Interface     : SDK API, SDP Codec API
  660.21 +* Version       : 1.0
  660.22 +*
  660.23 +*/
  660.24 +
  660.25 +
  660.26 +
  660.27 +#ifndef TSDPTYPEDTIME_H
  660.28 +#define TSDPTYPEDTIME_H
  660.29 +
  660.30 +//  INCLUDES
  660.31 +#include <e32std.h>
  660.32 +#include "_sdpdefs.h"
  660.33 +
  660.34 +// FORWARD DECLARATIONS
  660.35 +class RReadStream;
  660.36 +class RWriteStream;
  660.37 +
  660.38 +// CLASS DECLARATION
  660.39 +/**
  660.40 + *  @publishedAll
  660.41 + *  @released
  660.42 + *
  660.43 + *	This class implements the typed time element of the Session
  660.44 + *	Description Protocol.
  660.45 + *
  660.46 + *	The normative reference for correct formatting and values is
  660.47 + *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  660.48 + *  member documentation. The implementation supports this normative
  660.49 + *  reference, but does not enforce it fully. 
  660.50 + *
  660.51 + *  @lib sdpcodec.lib
  660.52 + */
  660.53 +class TSdpTypedTime
  660.54 +	{
  660.55 +    public: // enums
  660.56 +
  660.57 +        /** Time units. */
  660.58 +        enum TUnit
  660.59 +            {
  660.60 +            ETimeUnitDays,      /** d */
  660.61 +            ETimeUnitHours,     /** h */
  660.62 +		    ETimeUnitMinutes,   /** m */
  660.63 +		    ETimeUnitSeconds,   /** s */
  660.64 +		    ETimeUnitNone,
  660.65 +            };
  660.66 +
  660.67 +    public: // Constructors and destructor
  660.68 +		/**
  660.69 +		 *	Constructs a typed time equal to zero and with no time unit set.
  660.70 +		 */
  660.71 +		IMPORT_C TSdpTypedTime();
  660.72 +
  660.73 +		/**
  660.74 +		 *	Constructs a typed time equal to specified value and time unit.
  660.75 +		 *
  660.76 +		 *	@param aValue Time value.
  660.77 +		 *	@param aUnit Time unit.
  660.78 +		 */
  660.79 +		IMPORT_C TSdpTypedTime(TInt64 aValue, TUnit aUnit);
  660.80 +
  660.81 +    public: // New functions
  660.82 +		/**	
  660.83 +		 *	Compares this instance to another for equality.
  660.84 +		 *
  660.85 +		 *	@param aObj Another instance to compare with.
  660.86 +		 *	@return ETrue if equal, EFalse if not.
  660.87 +		 */
  660.88 +		IMPORT_C TBool operator == (const TSdpTypedTime& aObj) const;
  660.89 +
  660.90 +		/**
  660.91 +		 *	Sets the typed time value.
  660.92 +		 *
  660.93 +		 *	@param aValue Time value.
  660.94 +		 *	@param aUnit Time unit.
  660.95 +		 */
  660.96 +		IMPORT_C void SetValue(TInt64 aValue, TUnit aUnit);
  660.97 +
  660.98 +    public:
  660.99 +		
 660.100 +		/**
 660.101 +         *  Externalizes the object to stream
 660.102 +         *
 660.103 +         *  @param aStream Stream where the object's state will be stored
 660.104 +         */
 660.105 +		void ExternalizeL(RWriteStream& aStream) const;
 660.106 +		
 660.107 +		/**
 660.108 +         *  Creates object from the stream data
 660.109 +         *
 660.110 +         *  @param aStream Stream where the object's state will be read
 660.111 +         *  @return Initialized object
 660.112 +         */
 660.113 +		static TSdpTypedTime InternalizeL(RReadStream& aStream);
 660.114 +        
 660.115 +        /**
 660.116 +		 *	Output the field formatted according to SDP syntax and including
 660.117 +		 *  the terminating CRLF.
 660.118 +		 * 
 660.119 +		 *	@param aStream	Stream used for output.
 660.120 +		 */
 660.121 +        void EncodeL(RWriteStream& aStream) const;
 660.122 +        
 660.123 +        /**
 660.124 +         *	Construct a new origin field.
 660.125 +		 *		 
 660.126 +         *	@param aText A string containing a correctly formatted field value
 660.127 +		 *               terminated by a CRLF.
 660.128 +         *	@return The new instance.
 660.129 +         */
 660.130 +        static TSdpTypedTime DecodeL(const TDesC8& aText);
 660.131 +
 660.132 +    public: // Data
 660.133 +    
 660.134 +        /**
 660.135 +        * @internalComponent
 660.136 +        */
 660.137 +		TInt64 iValue;
 660.138 +		
 660.139 +		/**
 660.140 +		* @internalComponent
 660.141 +		*/
 660.142 +		TInt iUnit;
 660.143 +
 660.144 +	};
 660.145 +
 660.146 +#endif // TSDPTYPEDTIME_H
   661.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   661.2 +++ b/epoc32/include/mw/sendas2.h	Wed Mar 31 12:27:01 2010 +0100
   661.3 @@ -0,0 +1,30 @@
   661.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   661.5 +// All rights reserved.
   661.6 +// This component and the accompanying materials are made available
   661.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   661.8 +// which accompanies this distribution, and is available
   661.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  661.10 +//
  661.11 +// Initial Contributors:
  661.12 +// Nokia Corporation - initial contribution.
  661.13 +//
  661.14 +// Contributors:
  661.15 +//
  661.16 +// Description:
  661.17 +//
  661.18 +
  661.19 +
  661.20 +
  661.21 +/**
  661.22 + @file
  661.23 + @publishedAll
  661.24 + @released
  661.25 +*/
  661.26 +#ifndef __SENDAS2_H__
  661.27 +#define __SENDAS2_H__
  661.28 +
  661.29 +#include <rsendas.h>
  661.30 +#include <rsendasmessage.h>
  661.31 +#include <csendasmessagetypes.h>
  661.32 +
  661.33 +#endif //__SENDAS2_H__
   662.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   662.2 +++ b/epoc32/include/mw/sendasserver.rh	Wed Mar 31 12:27:01 2010 +0100
   662.3 @@ -0,0 +1,35 @@
   662.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   662.5 +// All rights reserved.
   662.6 +// This component and the accompanying materials are made available
   662.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   662.8 +// which accompanies this distribution, and is available
   662.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  662.10 +//
  662.11 +// Initial Contributors:
  662.12 +// Nokia Corporation - initial contribution.
  662.13 +//
  662.14 +// Contributors:
  662.15 +//
  662.16 +// Description:
  662.17 +//
  662.18 +
  662.19 +
  662.20 +
  662.21 +/**
  662.22 + @file
  662.23 + @publishedAll
  662.24 + @released
  662.25 +*/
  662.26 +
  662.27 +
  662.28 +#ifndef __SENDASSERVER_RH__
  662.29 +#define __SENDASSERVER_RH__
  662.30 +
  662.31 +STRUCT SENDAS_RES
  662.32 +	{
  662.33 +	LONG version;
  662.34 +	LONG editUtilsUid;
  662.35 +	LONG notifierUid;
  662.36 +	}
  662.37 +
  662.38 +#endif // __SENDASSERVER_RH__
   663.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   663.2 +++ b/epoc32/include/mw/sip.h	Wed Mar 31 12:27:01 2010 +0100
   663.3 @@ -0,0 +1,162 @@
   663.4 +/*
   663.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   663.6 +* All rights reserved.
   663.7 +* This component and the accompanying materials are made available
   663.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   663.9 +* which accompanies this distribution, and is available
  663.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  663.11 +*
  663.12 +* Initial Contributors:
  663.13 +* Nokia Corporation - initial contribution.
  663.14 +*
  663.15 +* Contributors:
  663.16 +*
  663.17 +* Description:
  663.18 +* Name        : sip.h
  663.19 +* Part of     : SIP Client
  663.20 +* Interface   : SDK API, SIP Client API
  663.21 +* Version     : 2.0
  663.22 +*
  663.23 +*/
  663.24 +
  663.25 +
  663.26 +
  663.27 +#ifndef CSIP_H
  663.28 +#define CSIP_H
  663.29 +
  663.30 +// INCLUDES
  663.31 +#include <e32base.h>
  663.32 +#include "_sipcodecdefs.h"
  663.33 +
  663.34 +// FORWARD DECLARATIONS
  663.35 +class CDesC8Array;
  663.36 +class MSIPObserver;
  663.37 +class CSIPConnection;
  663.38 +class CSIPImplementation;
  663.39 +
  663.40 +// CLASS DECLARATION
  663.41 +
  663.42 +/**
  663.43 +*  @publishedAll
  663.44 +*  @released
  663.45 +*
  663.46 +*  Class for connecting to SIP server.
  663.47 +*
  663.48 +*  This class provides the connection to the SIP server and
  663.49 +*  provides functions for quering supported SIP security mechanisms and
  663.50 +*  the support of signalling compression (SigComp).
  663.51 +*
  663.52 +*  Note that the implementation uses strings defined in the SIP Codec
  663.53 +*  string pool. During instantiation the class will open SIP codec string pool 
  663.54 +*  for getting static strings and getting and setting dynamic strings.
  663.55 +* 
  663.56 +*  The user can create only one instance of this class. (a singleton class).
  663.57 +*
  663.58 +*  @lib sipclient.lib
  663.59 +*/
  663.60 +class CSIP : public CBase
  663.61 +	{
  663.62 +    public: // Constructors and destructor
  663.63 +
  663.64 +	    /**
  663.65 +        * Two-phased constructor.
  663.66 +		* @param aUid an unique id that identifies client
  663.67 +		* @param aObserver a observer for asynchronous event
  663.68 +        * @return New object, ownership is transferred
  663.69 +        * @capability WriteDeviceData
  663.70 +        */
  663.71 +		IMPORT_C static CSIP* NewL(const TUid& aUid,
  663.72 +                                   MSIPObserver& aObserver);
  663.73 +
  663.74 +	    /**
  663.75 +        * Two-phased constructor.
  663.76 +		* Constructs an object and adds the pointer to the cleanup stack.
  663.77 +		* @param aUid an unique id that identifies client
  663.78 +		* @param aObserver a observer for asynchronous event
  663.79 +        * @return New object, ownership is transferred
  663.80 +        * @capability WriteDeviceData
  663.81 +        */
  663.82 +		IMPORT_C static CSIP* NewLC(const TUid& aUid,
  663.83 +                                    MSIPObserver& aObserver);                                   
  663.84 +
  663.85 +        /**
  663.86 +        * Destructor.               
  663.87 +        */
  663.88 +		IMPORT_C ~CSIP();
  663.89 +
  663.90 +    public: // New functions
  663.91 +
  663.92 +		/**
  663.93 +		* Gets all supported security mechanisms
  663.94 +		* @return supported SIP security mechanisms names (e.g. digest);
  663.95 +        *         the ownership is transferred
  663.96 +		*/
  663.97 +		IMPORT_C CDesC8Array* SupportedSecurityMechanismsL() const;
  663.98 +
  663.99 +		/**
 663.100 +		* Checks if the signalling compression (SigComp) is supported.
 663.101 +        * Leaves on failure with a system wide error code.
 663.102 +		* @return ETrue if supported, EFalse otherwise
 663.103 +		*/
 663.104 +		IMPORT_C TBool IsSigCompSupportedL() const;
 663.105 +
 663.106 +		/**
 663.107 +		* Gets negotiated security mechanism with the next hop
 663.108 +		* on the signaling path.
 663.109 +		* @param aHop the next hop's FQDN or numeric IP address
 663.110 +		* @return negotiated security mechanism or zero-pointer in case no
 663.111 +		*		  security mechanism was negotiated with the next hop;
 663.112 +		*		  the ownership is transferred
 663.113 +		*/
 663.114 +		IMPORT_C HBufC8* NegotiatedSecurityMechanismL(const TDesC8& aHop);
 663.115 +
 663.116 +		/**
 663.117 +		* Checks if the user has a connection created for given IAP-id
 663.118 +		* @param aIapId IAP-id
 663.119 + 		* @return sip connection or 0-pointer if connection does not exist.
 663.120 +        *         Ownership is not transferred.
 663.121 +		*/
 663.122 +		IMPORT_C CSIPConnection* Connection(TUint32 aIapId) const;
 663.123 +		
 663.124 +        /*
 663.125 +        * By default the SIP built-in security mechanisms are enabled.
 663.126 +        * @param aEnabled if set to EFalse the build-in SIP security handling 
 663.127 +        *        mechanism is disabled.
 663.128 +        */
 663.129 +        IMPORT_C void SetSecurityHandlingL(TBool aEnabled);
 663.130 +
 663.131 +        /*
 663.132 +        * Tests if SIP security handling mechanism is enabled/disabled
 663.133 +        * @return ETrue if built-in mechanisms are enabled, EFalse otherwise.
 663.134 +        */
 663.135 +        IMPORT_C TBool IsSecurityHandlingEnabled() const;		
 663.136 +
 663.137 +	public: // New functions, for internal use
 663.138 +
 663.139 +		/**
 663.140 +		* Returns the CSIPImplementation.
 663.141 +		*
 663.142 + 		* @return CSIPImplementation
 663.143 +		*/
 663.144 +		CSIPImplementation& Implementation();
 663.145 +		
 663.146 +    private: // Constructors
 663.147 +        CSIP();
 663.148 +
 663.149 +        void ConstructL(const TUid& aUid, MSIPObserver& aObserver);
 663.150 +
 663.151 +	private: // Data
 663.152 +		CSIPImplementation* iImplementation;
 663.153 +
 663.154 +	private: // For testing purposes
 663.155 +
 663.156 +	    UNIT_TEST(CSIP_Test)
 663.157 +        UNIT_TEST(CSIPRegistrationBinding_Test)
 663.158 +        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 663.159 +        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 663.160 +        UNIT_TEST(CSIPReferDialogAssoc_Test)
 663.161 +
 663.162 +		__DECLARE_TEST;
 663.163 +		};
 663.164 +
 663.165 +#endif
   664.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   664.2 +++ b/epoc32/include/mw/sip_subconevents.h	Wed Mar 31 12:27:01 2010 +0100
   664.3 @@ -0,0 +1,141 @@
   664.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   664.5 +// All rights reserved.
   664.6 +// This component and the accompanying materials are made available
   664.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   664.8 +// which accompanies this distribution, and is available
   664.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  664.10 +//
  664.11 +// Initial Contributors:
  664.12 +// Nokia Corporation - initial contribution.
  664.13 +//
  664.14 +// Contributors:
  664.15 +//
  664.16 +// Description:
  664.17 +// SIPSCPR_subconevents.h
  664.18 +// SIP extension events definition
  664.19 +// 
  664.20 +//
  664.21 +
  664.22 +
  664.23 +
  664.24 +/**
  664.25 + @file
  664.26 + @publishedAll
  664.27 + @released since v9.2
  664.28 +*/
  664.29 + 
  664.30 +#ifndef SIPSCPR_SUBCONEVENTS_H
  664.31 +#define SIPSCPR_SUBCONEVENTS_H
  664.32 +
  664.33 +#include <es_sock.h>
  664.34 +#include <comms-infras/metabuffer.h>
  664.35 +
  664.36 +/** The numeric value of ECOM plugin identifier for this SubConnection SIP event parameter.See the assisting *.rss file. */
  664.37 +const TInt KSubConSIPEventsUid = 0x10274CAE;
  664.38 +
  664.39 +/** The numeric value of Response event type identifier for SIP extension parameter set  */
  664.40 +const TInt KSubConSIPResponseEventType = 1;
  664.41 +
  664.42 +/** The numeric value of AuthenticationRequired event type identifier for SIP extension parameter set  */
  664.43 +const TInt KSubConSIPAuthenticationRequiredEventType = 2;
  664.44 +
  664.45 +/** The numeric value of Notification event type identifier for SIP extension parameter set  */
  664.46 +const TInt KSubConSIPNotificationEventType = 3;
  664.47 +
  664.48 +
  664.49 +class CSubConSIPResponseEvent : public CSubConNotificationEvent
  664.50 +/** CSubConSIPResponseEvent is used to get and set the response elements of the most recent response  
  664.51 +
  664.52 +@publishedAll
  664.53 +@released since v9.2 */
  664.54 +	{
  664.55 +public:
  664.56 +	/**
  664.57 +	 Identifies the  predefined type of Response 		 .
  664.58 +	 */
  664.59 +    enum PredefinedResponses
  664.60 +        {
  664.61 +        /** The numeric value of Invalid Response */
  664.62 +        EInvalidResponse = 0
  664.63 +        };
  664.64 +        
  664.65 +	inline static CSubConSIPResponseEvent* NewL();
  664.66 +	/** Constructor. */
  664.67 +	inline CSubConSIPResponseEvent();
  664.68 +	/** Destructor. */
  664.69 +	virtual ~CSubConSIPResponseEvent();
  664.70 +	/** Sets Response Code of the SIP Response. **/	
  664.71 +	inline void SetResponse(TInt aResponse);
  664.72 +	/** Gets Response Code of the SIP Response. **/	
  664.73 +	inline TInt GetResponse() const;
  664.74 +
  664.75 +protected:
  664.76 +	/** The Response Code of the SIP reasponse. */
  664.77 +    TInt iResponse;
  664.78 +	DATA_VTABLE
  664.79 +	};
  664.80 +	
  664.81 +
  664.82 +class CSubConSIPAuthenticationRequiredEvent : public CSubConNotificationEvent
  664.83 +/** CSubConSIPAuthenticationRequiredEvent is used  when SIP authentication is required
  664.84 +
  664.85 +@publishedAll
  664.86 +@released since v9.2 */
  664.87 +	{
  664.88 +public:
  664.89 +        
  664.90 +	inline static CSubConSIPAuthenticationRequiredEvent* NewL();
  664.91 +	/** Constructor. */
  664.92 +	inline CSubConSIPAuthenticationRequiredEvent();
  664.93 +	/** Destructor. */
  664.94 +	virtual ~CSubConSIPAuthenticationRequiredEvent();
  664.95 +	/** Sets Realm field of the SIP header. **/	
  664.96 +	inline void SetRealmL(const TPtrC8& aRealm);
  664.97 +	/** Gets Realm field of the SIP header. **/	
  664.98 +	inline const TPtrC8& GetRealm() const;
  664.99 +
 664.100 +protected:
 664.101 +	/** The Realm entry of Authenticate field in a SIP header. */
 664.102 +	RBuf8	iRealm;
 664.103 +	DATA_VTABLE
 664.104 +	};
 664.105 +
 664.106 +
 664.107 +class CSubConSIPNotificationEvent : public CSubConNotificationEvent
 664.108 +/** CSubConSIPNotificationEvent is used for receiving SIP event notifications 
 664.109 +
 664.110 +@publishedAll
 664.111 +@released since v9.2 */
 664.112 +	{
 664.113 +public:
 664.114 +  	inline static CSubConSIPNotificationEvent* NewL();
 664.115 +  	/** Constructor. */
 664.116 +	inline CSubConSIPNotificationEvent();
 664.117 +	/** Destructor. */
 664.118 +	virtual ~CSubConSIPNotificationEvent();
 664.119 +	/** Sets Notification for an event. **/	
 664.120 +	inline void SetNotificationL(const TPtrC8 & aNotification);
 664.121 +	/** Gets Notification for an event. **/	
 664.122 +	inline const TPtrC8& GetNotification() const;
 664.123 +
 664.124 +protected:
 664.125 +	/** The Notification entry. */
 664.126 +    RBuf8 iNotification;
 664.127 +	DATA_VTABLE
 664.128 +	};	
 664.129 +	
 664.130 +
 664.131 +class CSIPSubConnExtensionEventsFactory : public CBase
 664.132 +/** Factory used to create instances of the SIP SubConnection Extension Events
 664.133 +
 664.134 +@publishedAll
 664.135 +@released since v9.2 
 664.136 +*/
 664.137 +	{
 664.138 +public:
 664.139 +	static CSubConNotificationEvent* NewL(TAny* aConstructionParameters);
 664.140 +	};
 664.141 +
 664.142 +#include <sip_subconevents.inl>
 664.143 +
 664.144 +#endif // SIPSCPR_SUBCONEVENTS_H
   665.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   665.2 +++ b/epoc32/include/mw/sip_subconevents.inl	Wed Mar 31 12:27:01 2010 +0100
   665.3 @@ -0,0 +1,91 @@
   665.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   665.5 +// All rights reserved.
   665.6 +// This component and the accompanying materials are made available
   665.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   665.8 +// which accompanies this distribution, and is available
   665.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  665.10 +//
  665.11 +// Initial Contributors:
  665.12 +// Nokia Corporation - initial contribution.
  665.13 +//
  665.14 +// Contributors:
  665.15 +//
  665.16 +// Description:
  665.17 +// SIPSCPR_subconevents.inl
  665.18 +// SIP extension events definition
  665.19 +// 
  665.20 +//
  665.21 +
  665.22 +
  665.23 +
  665.24 +/**
  665.25 + @file
  665.26 + @publishedAll
  665.27 +*/
  665.28 +
  665.29 +
  665.30 +inline CSubConSIPResponseEvent::CSubConSIPResponseEvent()
  665.31 +:iResponse(EInvalidResponse)
  665.32 +    {
  665.33 +    }
  665.34 +
  665.35 +
  665.36 +inline void CSubConSIPResponseEvent::SetResponse(TInt aResponse)
  665.37 +    {
  665.38 +    iResponse = aResponse;
  665.39 +    }
  665.40 +
  665.41 +inline TInt CSubConSIPResponseEvent::GetResponse() const
  665.42 +    {
  665.43 +    return iResponse;
  665.44 +    }
  665.45 +	
  665.46 +inline CSubConSIPResponseEvent* CSubConSIPResponseEvent::NewL()
  665.47 +	{
  665.48 +	STypeId typeId(KSubConSIPEventsUid, KSubConSIPResponseEventType);
  665.49 +	return static_cast<CSubConSIPResponseEvent*>(CSubConNotificationEvent::NewL(typeId));
  665.50 +	}
  665.51 +
  665.52 +        
  665.53 +inline CSubConSIPAuthenticationRequiredEvent* CSubConSIPAuthenticationRequiredEvent::NewL()
  665.54 +	{
  665.55 +	STypeId typeId(KSubConSIPEventsUid, KSubConSIPAuthenticationRequiredEventType);
  665.56 +	return static_cast<CSubConSIPAuthenticationRequiredEvent*>(CSubConNotificationEvent::NewL(typeId));
  665.57 +	}
  665.58 +
  665.59 +inline CSubConSIPAuthenticationRequiredEvent::CSubConSIPAuthenticationRequiredEvent()
  665.60 +    {
  665.61 +    }
  665.62 +
  665.63 +inline void CSubConSIPAuthenticationRequiredEvent::SetRealmL(const TPtrC8& aRealm)
  665.64 +    {
  665.65 +    iRealm.Close();
  665.66 +    iRealm.CreateL(aRealm);
  665.67 +    }
  665.68 +
  665.69 +inline const TPtrC8& CSubConSIPAuthenticationRequiredEvent::GetRealm() const
  665.70 +    {
  665.71 +	return iRealm.LeftTPtr(iRealm.Length());    
  665.72 +    }
  665.73 +
  665.74 +
  665.75 +inline CSubConSIPNotificationEvent::CSubConSIPNotificationEvent()
  665.76 +    {
  665.77 +    }
  665.78 +
  665.79 +inline void CSubConSIPNotificationEvent::SetNotificationL(const TPtrC8 & aNotification)
  665.80 +    {
  665.81 +    iNotification.Close();
  665.82 +    iNotification.CreateL(aNotification); 
  665.83 +    }
  665.84 +
  665.85 +inline const TPtrC8& CSubConSIPNotificationEvent::GetNotification() const
  665.86 +    {
  665.87 +    return iNotification.LeftTPtr(iNotification.Length());
  665.88 +    }
  665.89 +	
  665.90 +inline CSubConSIPNotificationEvent* CSubConSIPNotificationEvent::NewL()
  665.91 +	{
  665.92 +	STypeId typeId(KSubConSIPEventsUid, KSubConSIPNotificationEventType);
  665.93 +	return static_cast<CSubConSIPNotificationEvent*>(CSubConNotificationEvent::NewL(typeId));
  665.94 +	}
   666.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   666.2 +++ b/epoc32/include/mw/sip_subconparams.h	Wed Mar 31 12:27:01 2010 +0100
   666.3 @@ -0,0 +1,278 @@
   666.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   666.5 +// All rights reserved.
   666.6 +// This component and the accompanying materials are made available
   666.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   666.8 +// which accompanies this distribution, and is available
   666.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  666.10 +//
  666.11 +// Initial Contributors:
  666.12 +// Nokia Corporation - initial contribution.
  666.13 +//
  666.14 +// Contributors:
  666.15 +//
  666.16 +// Description:
  666.17 +// SIPSCPR_subconparams.h
  666.18 +// SIP extension parameters definition
  666.19 +// 
  666.20 +//
  666.21 +
  666.22 +
  666.23 +
  666.24 +/**
  666.25 + @file
  666.26 + @publishedAll
  666.27 + @released since v9.2
  666.28 +*/
  666.29 +
  666.30 +#ifndef SIP_SUBCONPARAMS_H
  666.31 +#define SIP_SUBCONPARAMS_H
  666.32 +
  666.33 +#include <es_sock.h>
  666.34 +#include <comms-infras/metabuffer.h>
  666.35 +
  666.36 +/** The numeric value of ECOM plugin identifier for this SubConnection parameter extension.See the assisting *.rss file. */
  666.37 +const TInt KSubConSIPParametersUid = 0x10274C18;
  666.38 +
  666.39 +/** The numeric value of Invite identifier for SIP extension parameter set  */
  666.40 +const TInt KSubConSIPInviteParamsType = 1;
  666.41 +
  666.42 +/** The numeric value of Subscribe identifier for SIP extension parameter set  */
  666.43 +const TInt KSubConSIPSubscribeParamsType = 2;
  666.44 +
  666.45 +/** The numeric value of Authentication of SIP extension parameter set  */
  666.46 +const TInt KSubConSIPAuthenticateParamsType = 3;
  666.47 +
  666.48 +class CSubConSIPInviteParamSet : public CSubConExtensionParameterSet
  666.49 +/** 
  666.50 +This contains the SIP Invite parameters that will be passed via subconnection
  666.51 +to the SIP stack
  666.52 +@publishedAll
  666.53 +@released since v9.2 
  666.54 +*/
  666.55 +{
  666.56 +public:
  666.57 +     /**
  666.58 +	 Creates a new SubConSIPInvite parameter set object.  
  666.59 +	 @param     aFamily ,contains family related info 
  666.60 +	 @param		aType contains parameter Type such as (Requested, Acceptable and Granted)
  666.61 +	 @return    A pointer to the newly allocated object.
  666.62 +	 @leave 	KErrArgument if the data is not of type TParameterSetType.
  666.63 +	 */   
  666.64 +	inline static CSubConSIPInviteParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
  666.65 +	inline static CSubConSIPInviteParamSet* NewL();
  666.66 +	
  666.67 +	/** Constructor. */
  666.68 +	inline CSubConSIPInviteParamSet();
  666.69 +	/** Destructor. */
  666.70 +	virtual ~CSubConSIPInviteParamSet();
  666.71 +	
  666.72 +	/** Getters for SIP header. */
  666.73 +	/** Gets Request URI field of the SIP header. **/
  666.74 +	inline const TPtrC8 GetRequestUri() const;
  666.75 +	/** Gets From field of the SIP header. **/	
  666.76 +	inline const TPtrC8 GetFrom() const;
  666.77 +	/** Gets To field of the SIP header. **/	
  666.78 +	inline const TPtrC8 GetTo() const;
  666.79 +	/** Gets Contact field of the SIP header. **/	
  666.80 +	inline const TPtrC8 GetContact() const;
  666.81 +	/** Gets ContentType field of the SIP header. **/	
  666.82 +	inline const TPtrC8 GetContentType() const;
  666.83 +	/** Gets ContentSubType field of the SIP header. **/	
  666.84 +	inline const TPtrC8 GetContentSubType() const;
  666.85 +	/** Gets Content field of the SIP header. **/
  666.86 +	inline const TPtrC8 GetContent() const;
  666.87 +	
  666.88 +	/** Setters for SIP header. 
  666.89 +	/** Sets Request URI field of the SIP header. **/
  666.90 +	inline void   SetRequestUriL(const TPtrC8 & aReqUri);
  666.91 +	/** Sets From field of the SIP header. **/	
  666.92 +	inline void   SetFromL(const TPtrC8 & aFrom);
  666.93 +	/** Sets To field of the SIP header. **/	
  666.94 +	inline void   SetToL(const TPtrC8 & aTo);
  666.95 +	/** Sets Contact field of the SIP header. **/	
  666.96 +	inline void   SetContactL(const TPtrC8 & aContact);
  666.97 +	/** Sets Content Type field of the SIP header. **/		
  666.98 +	inline void   SetContentTypeL(const TPtrC8 & aContentType);
  666.99 +	/** Sets Content Sub Type field of the SIP header. **/	
 666.100 +	inline void   SetContentSubTypeL(const TPtrC8 & aContentSubType);
 666.101 +	/** Sets Content field of the SIP header. **/		
 666.102 +	inline void	  SetContentL(const TPtrC8 & aContent);
 666.103 +	
 666.104 +	DATA_VTABLE
 666.105 +protected:
 666.106 +
 666.107 +	/** The Request URI field of the SIP header. */
 666.108 +	RBuf8	iReqUri;
 666.109 +	/** The From field of the SIP header. */
 666.110 +	RBuf8	iFrom;
 666.111 +	/** The To field of the SIP header. */
 666.112 +	RBuf8	iTo;
 666.113 +	/** The Contact field of the SIP header. */
 666.114 +	RBuf8	iContact;
 666.115 +	/** The Content Type field of the SIP header. */
 666.116 +	RBuf8	iContentType;
 666.117 +	/** The Content Sub Type field of the SIP header. */
 666.118 +	RBuf8	iContentSubType;
 666.119 +	/** The Content field of the SIP header. */
 666.120 +	RBuf8	iContent;
 666.121 +	};
 666.122 +	
 666.123 +	
 666.124 +	
 666.125 +class CSubConSIPSubscribeParamSet : public CSubConExtensionParameterSet
 666.126 +/** 
 666.127 +This contains the SIP Subscribe parameters that will be passed via subconnection
 666.128 +to the SIP stack
 666.129 +@publishedAll
 666.130 +@released since v9.2 
 666.131 +*/
 666.132 +{
 666.133 +public:
 666.134 +    /**
 666.135 +	 Creates a new SubConSIPSubscribe parameter set object.  
 666.136 +	 @param     aFamily ,contains family related info 
 666.137 +	 @param		aType contains parameter Type such as (Requested, Acceptable and Granted)
 666.138 +	 @return    A pointer to the newly allocated object.
 666.139 +	 @leave 	KErrArgument if the data is not of type TParameterSetType.
 666.140 +	 */    
 666.141 +	inline static CSubConSIPSubscribeParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
 666.142 +	inline static CSubConSIPSubscribeParamSet* NewL();
 666.143 +	
 666.144 +	/** Constructor. */
 666.145 +	inline CSubConSIPSubscribeParamSet();
 666.146 +	
 666.147 +	/** Destructor. */
 666.148 +    virtual ~CSubConSIPSubscribeParamSet();
 666.149 +    
 666.150 +	/** Getters for SIP header. */
 666.151 +	/** Gets Request URI field of the SIP header. **/
 666.152 +	inline const TPtrC8 GetRequestUri() const;	
 666.153 +	/** Gets From field of the SIP header. **/
 666.154 +	inline const TPtrC8 GetFrom() const;
 666.155 +	/** Gets To field of the SIP header. **/	
 666.156 +	inline const TPtrC8 GetTo() const;
 666.157 +	/** Gets Contact field of the SIP header. **/
 666.158 +	inline const TPtrC8 GetContact() const;
 666.159 +	/** Gets Event Type field of the SIP header. **/
 666.160 +	inline const TPtrC8 GetEventType() const;
 666.161 +	/** Gets Accept Type field of the SIP header. **/
 666.162 +	inline const TPtrC8 GetAcceptType() const;
 666.163 +	/** Gets Accept Sub Type field of the SIP header. **/
 666.164 +	inline const TPtrC8 GetAcceptSubType() const;
 666.165 +	/** Gets Expires field of the SIP header. **/
 666.166 +	inline const TInt   GetExpires() const;
 666.167 +	/** Gets Auto Refresh field of the SIP header. **/
 666.168 +	inline const TBool  GetAutoRefresh() const;
 666.169 +	
 666.170 +	/** Setters for SIP header. */
 666.171 +	/** Sets Request URI field of the SIP header. **/
 666.172 +	inline void  SetRequestUriL(const TPtrC8 & aReqUri);
 666.173 +	/** Sets From field of the SIP header. **/	
 666.174 +	inline void  SetFromL(const TPtrC8 & aFrom);
 666.175 +	/** Sets To field of the SIP header. **/	
 666.176 +	inline void  SetToL(const TPtrC8 & aTo);
 666.177 +	/** Sets Contact field of the SIP header. **/
 666.178 +	inline void  SetContactL(const TPtrC8 & aContact);
 666.179 +	/** Sets Event Type field of the SIP header. **/
 666.180 +	inline void  SetEventTypeL(const TPtrC8 & aEventType);
 666.181 +	/** Sets Accept Type field of the SIP header. **/
 666.182 +	inline void  SetAcceptTypeL(const TPtrC8 & aAcceptType);
 666.183 +	/** Sets Accept Sub Type field of the SIP header. **/
 666.184 +	inline void  SetAcceptSubTypeL(const TPtrC8 & aAcceptSubType);
 666.185 +	/** Sets Expires Sub Type field of the SIP header. **/
 666.186 +	inline void  SetExpires(TInt aExpires);
 666.187 +	/** Sets AutoRfresh field of the SIP header. **/
 666.188 +	inline void  SetAutoRefresh(TBool aAutoRefresh);
 666.189 +	
 666.190 +	
 666.191 +	DATA_VTABLE
 666.192 +protected:
 666.193 +	
 666.194 +	/** The Request URI field of the SIP header. */
 666.195 +	RBuf8	iReqUri;
 666.196 +	/** The From field of the SIP header. */
 666.197 +	RBuf8	iFrom;
 666.198 +	/** The To field of the SIP header. */
 666.199 +	RBuf8	iTo;
 666.200 +	/** The Contact field of the SIP header. */
 666.201 +	RBuf8	iContact;
 666.202 +	/** The Event Type field of the SIP header. */
 666.203 +	RBuf8	iEventType;
 666.204 +	/** The Accept Type field of the SIP header. */
 666.205 +	RBuf8	iAcceptType;
 666.206 +	/** The Accept Sub Type field of the SIP header. */
 666.207 +	RBuf8	iAcceptSubType;
 666.208 +	/** The Expires field of the SIP header. */
 666.209 +	TInt	iExpires;
 666.210 +	/** The AutoRefresh field of the SIP header. */
 666.211 +	TBool   iAutoRefresh;
 666.212 +};
 666.213 +	
 666.214 +class CSubConSIPAuthenticateParamSet : public CSubConExtensionParameterSet
 666.215 +/** 
 666.216 +This contains the SIP Authenticate parameters that will be passed via subconnection
 666.217 +to the SIP stack
 666.218 +@publishedAll
 666.219 +@released since v9.2 
 666.220 +*/
 666.221 +{
 666.222 +public:
 666.223 +    /**
 666.224 +	 Creates a new SubConSIPAuthenticate parameter set object.  
 666.225 +	 @param     aFamily ,contains family related info 
 666.226 +	 @param		aType contains parameter Type such as (Requested, Acceptable and Granted)
 666.227 +	 @return    A pointer to the newly allocated object.
 666.228 +	 @leave 	KErrArgument if the data is not of type TParameterSetType.
 666.229 +	 */    
 666.230 +	inline static CSubConSIPAuthenticateParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
 666.231 +	inline static CSubConSIPAuthenticateParamSet* NewL();
 666.232 +	
 666.233 +	/** Constructor. */
 666.234 +	inline CSubConSIPAuthenticateParamSet();
 666.235 +	
 666.236 +	/** Destructor. */
 666.237 +	virtual ~CSubConSIPAuthenticateParamSet();
 666.238 +	
 666.239 +	/** Getters for SIP header. */
 666.240 +	/** Gets Username field of the SIP header. **/
 666.241 +	inline const TPtrC8 GetUserName() const;
 666.242 +	/** Gets Password field of the SIP header. **/	
 666.243 +	inline const TPtrC8 GetPassword() const;
 666.244 +	/** Gets Realm field of the SIP header. **/		
 666.245 +	inline const TPtrC8 GetRealm() const;
 666.246 +	
 666.247 +	/** Setters for SIP header. */
 666.248 +	/** Sets Username field of the SIP header. **/
 666.249 +	inline void  SetUserNameL(const TPtrC8 & aUserName);
 666.250 +	/** Sets Password field of the SIP header. **/	
 666.251 +	inline void  SetPasswordL(const TPtrC8 & aPassword);
 666.252 +	/** Sets Realm field of the SIP header. **/	
 666.253 +	inline void  SetRealmL(const TPtrC8 & aRealm);
 666.254 +	
 666.255 +	DATA_VTABLE
 666.256 +protected:
 666.257 +
 666.258 +	/** The Username entry of Authenticate field in a SIP header. */
 666.259 +	RBuf8	iUserName;
 666.260 +	/** The Password entry of Authenticate field in a SIP header. */
 666.261 +	RBuf8	iPassword;
 666.262 +	/** The Realm entry of Authenticate field in a SIP header. */
 666.263 +	RBuf8	iRealm;	
 666.264 +};
 666.265 +
 666.266 +
 666.267 +
 666.268 +class CSIPSubConnExtensionParamsFactory : public CBase
 666.269 +/** Factory used to create instances of the SIP SubConnection Parameter Extension Sets.
 666.270 +
 666.271 +@publishedAll
 666.272 +@released since v9.2 
 666.273 +*/
 666.274 +	{
 666.275 +public:
 666.276 +	static CSubConExtensionParameterSet* NewL(TAny* aConstructionParameters);
 666.277 +	};
 666.278 +
 666.279 +#include <sip_subconparams.inl>
 666.280 +
 666.281 +#endif // SIP_SUBCONPARAMS_H
   667.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   667.2 +++ b/epoc32/include/mw/sip_subconparams.inl	Wed Mar 31 12:27:01 2010 +0100
   667.3 @@ -0,0 +1,321 @@
   667.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   667.5 +// All rights reserved.
   667.6 +// This component and the accompanying materials are made available
   667.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   667.8 +// which accompanies this distribution, and is available
   667.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  667.10 +//
  667.11 +// Initial Contributors:
  667.12 +// Nokia Corporation - initial contribution.
  667.13 +//
  667.14 +// Contributors:
  667.15 +//
  667.16 +// Description:
  667.17 +// SIPSCPR_subconparams.inl
  667.18 +// SIP extension parameters inline implementation
  667.19 +// / CSubConSIPInviteParamSet
  667.20 +// 
  667.21 +//
  667.22 +
  667.23 +
  667.24 +
  667.25 +
  667.26 +/**
  667.27 + @file
  667.28 + @publishedAll
  667.29 +*/
  667.30 +
  667.31 +inline CSubConSIPInviteParamSet* CSubConSIPInviteParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
  667.32 +	{
  667.33 +	CSubConSIPInviteParamSet* obj = NewL();
  667.34 +	CleanupStack::PushL(obj);
  667.35 +	aFamily.AddExtensionSetL(*obj, aType);
  667.36 +	CleanupStack::Pop(obj);
  667.37 +	return obj;
  667.38 +	}
  667.39 +
  667.40 +inline CSubConSIPInviteParamSet* CSubConSIPInviteParamSet::NewL()
  667.41 +	{
  667.42 +	STypeId typeId(KSubConSIPParametersUid, KSubConSIPInviteParamsType);
  667.43 +	return static_cast<CSubConSIPInviteParamSet*>(CSubConParameterSet::NewL(typeId));
  667.44 +	}
  667.45 +
  667.46 +inline CSubConSIPInviteParamSet::CSubConSIPInviteParamSet()
  667.47 +:CSubConExtensionParameterSet()
  667.48 +	{
  667.49 +	}	
  667.50 +	
  667.51 +inline const TPtrC8 CSubConSIPInviteParamSet::GetRequestUri() const
  667.52 +	{
  667.53 +	return iReqUri.LeftTPtr(iReqUri.Length());	
  667.54 +	}
  667.55 +	
  667.56 +inline const TPtrC8 CSubConSIPInviteParamSet::GetFrom() const
  667.57 +	{
  667.58 +	return iFrom.LeftTPtr(iFrom.Length());	
  667.59 +	}
  667.60 +	
  667.61 +inline const TPtrC8 CSubConSIPInviteParamSet::GetTo() const
  667.62 +	{
  667.63 +	return iTo.LeftTPtr(iTo.Length());	
  667.64 +	}
  667.65 +	
  667.66 +inline const TPtrC8 CSubConSIPInviteParamSet::GetContact() const
  667.67 +	{
  667.68 +	return iContact.LeftTPtr(iContact.Length());		
  667.69 +	}
  667.70 +	
  667.71 +inline const TPtrC8 CSubConSIPInviteParamSet::GetContentType() const
  667.72 +	{
  667.73 +	return iContentType.LeftTPtr(iContentType.Length());		
  667.74 +	}
  667.75 +	
  667.76 +inline const TPtrC8 CSubConSIPInviteParamSet::GetContentSubType() const
  667.77 +	{
  667.78 +	return iContentSubType.LeftTPtr(iContentSubType.Length());			
  667.79 +	}
  667.80 +	
  667.81 +inline const TPtrC8 CSubConSIPInviteParamSet::GetContent() const
  667.82 +	{
  667.83 +	return iContent.LeftTPtr(iContent.Length());
  667.84 +	}
  667.85 +	
  667.86 +// Setters
  667.87 +inline void CSubConSIPInviteParamSet::SetRequestUriL(const TPtrC8& aReqUri)
  667.88 +	{
  667.89 +    iReqUri.Close();
  667.90 +   	iReqUri.CreateL(aReqUri);
  667.91 +	}
  667.92 +	
  667.93 +inline void CSubConSIPInviteParamSet::SetFromL(const TPtrC8& aFrom) 
  667.94 +	{
  667.95 +    iFrom.Close();
  667.96 +	iFrom.CreateL(aFrom);
  667.97 +	}
  667.98 +	
  667.99 +inline void CSubConSIPInviteParamSet::SetToL(const TPtrC8& aTo)
 667.100 +	{
 667.101 +    iTo.Close();
 667.102 +	iTo.CreateL(aTo);
 667.103 +	}
 667.104 +	
 667.105 +inline void CSubConSIPInviteParamSet::SetContactL(const TPtrC8& aContact)
 667.106 +	{
 667.107 +    iContact.Close();
 667.108 +	iContact.CreateL(aContact);
 667.109 +	}
 667.110 +	
 667.111 +inline void CSubConSIPInviteParamSet::SetContentTypeL(const TPtrC8& aContentType)
 667.112 +	{
 667.113 +    iContentType.Close();
 667.114 +	iContentType.CreateL(aContentType);
 667.115 +	}
 667.116 +	
 667.117 +inline void CSubConSIPInviteParamSet::SetContentSubTypeL(const TPtrC8& aContentSubType)
 667.118 +	{
 667.119 +    iContentSubType.Close();
 667.120 +	iContentSubType.CreateL(aContentSubType);
 667.121 +	}
 667.122 +	
 667.123 +inline void	CSubConSIPInviteParamSet::SetContentL(const TPtrC8& aContent)
 667.124 +	{
 667.125 +    iContent.Close();	
 667.126 +	iContent.CreateL(aContent);
 667.127 +	}
 667.128 +	
 667.129 +	
 667.130 +	
 667.131 +	
 667.132 +	
 667.133 +	
 667.134 +
 667.135 +/*-===========================================================
 667.136 +/
 667.137 +/ CSubConSIPSubscribeParamSet
 667.138 +/
 667.139 +/*-=========================================================*/
 667.140 +inline CSubConSIPSubscribeParamSet* CSubConSIPSubscribeParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
 667.141 +	{
 667.142 +	CSubConSIPSubscribeParamSet* obj = NewL();
 667.143 +	CleanupStack::PushL(obj);
 667.144 +	aFamily.AddExtensionSetL(*obj, aType);
 667.145 +	CleanupStack::Pop(obj);
 667.146 +	return obj;
 667.147 +	}
 667.148 +
 667.149 +inline CSubConSIPSubscribeParamSet* CSubConSIPSubscribeParamSet::NewL()
 667.150 +	{
 667.151 +	STypeId typeId(KSubConSIPParametersUid, KSubConSIPSubscribeParamsType);
 667.152 +	return static_cast<CSubConSIPSubscribeParamSet*>(CSubConParameterSet::NewL(typeId));
 667.153 +	}
 667.154 +
 667.155 +// Constructor
 667.156 +inline CSubConSIPSubscribeParamSet::CSubConSIPSubscribeParamSet()
 667.157 +:CSubConExtensionParameterSet()
 667.158 +    {
 667.159 +    }
 667.160 +    
 667.161 +// Getters
 667.162 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetRequestUri() const
 667.163 +    {
 667.164 +    return iReqUri.LeftTPtr(iReqUri.Length());	
 667.165 +    }
 667.166 +	
 667.167 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetFrom() const
 667.168 +    {
 667.169 +    return iFrom.LeftTPtr(iFrom.Length());	
 667.170 +    }
 667.171 +
 667.172 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetTo() const
 667.173 +    {
 667.174 +    return iTo.LeftTPtr(iTo.Length());	
 667.175 +    }
 667.176 +
 667.177 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetContact() const
 667.178 +    {
 667.179 +    return iContact.LeftTPtr(iContact.Length());	
 667.180 +    }
 667.181 +
 667.182 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetEventType() const
 667.183 +    {
 667.184 +    return iEventType.LeftTPtr(iEventType.Length());	
 667.185 +    }
 667.186 +
 667.187 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetAcceptType() const
 667.188 +    {
 667.189 +    return iAcceptType.LeftTPtr(iAcceptType.Length());	
 667.190 +    }
 667.191 +
 667.192 +inline const TPtrC8 CSubConSIPSubscribeParamSet::GetAcceptSubType() const
 667.193 +    {
 667.194 +    return iAcceptSubType.LeftTPtr(iAcceptSubType.Length());	
 667.195 +    }
 667.196 +
 667.197 +inline const TInt CSubConSIPSubscribeParamSet::GetExpires() const
 667.198 +    {
 667.199 +    return iExpires;
 667.200 +    }
 667.201 +    
 667.202 +inline const TBool CSubConSIPSubscribeParamSet::GetAutoRefresh() const
 667.203 +    {
 667.204 +    return iAutoRefresh;
 667.205 +    }   
 667.206 +    
 667.207 +
 667.208 +// Setters
 667.209 +inline void  CSubConSIPSubscribeParamSet::SetRequestUriL(const TPtrC8& aReqUri)
 667.210 +	{
 667.211 +    iReqUri.Close();
 667.212 +	iReqUri.CreateL(aReqUri);
 667.213 +	}
 667.214 +	
 667.215 +inline void  CSubConSIPSubscribeParamSet::SetFromL(const TPtrC8& aFrom)
 667.216 +    {
 667.217 +    iFrom.Close();
 667.218 +	iFrom.CreateL(aFrom);
 667.219 +    }
 667.220 +
 667.221 +inline void  CSubConSIPSubscribeParamSet::SetToL(const TPtrC8& aTo)
 667.222 +    {
 667.223 +    iTo.Close();
 667.224 +	iTo.CreateL(aTo);
 667.225 +    }
 667.226 +
 667.227 +inline void  CSubConSIPSubscribeParamSet::SetContactL(const TPtrC8& aContact)
 667.228 +    {
 667.229 +    iContact.Close();
 667.230 +	iContact.CreateL(aContact);
 667.231 +    }
 667.232 +
 667.233 +inline void  CSubConSIPSubscribeParamSet::SetEventTypeL(const TPtrC8& aEventType)
 667.234 +    {
 667.235 +    iEventType.Close();
 667.236 +	iEventType.CreateL(aEventType);
 667.237 +    }
 667.238 +
 667.239 +inline void  CSubConSIPSubscribeParamSet::SetAcceptTypeL(const TPtrC8& aAcceptType)
 667.240 +    {
 667.241 +    iAcceptType.Close();
 667.242 +	iAcceptType.CreateL(aAcceptType);
 667.243 +    }
 667.244 +
 667.245 +inline void  CSubConSIPSubscribeParamSet::SetAcceptSubTypeL(const TPtrC8& aAcceptSubType)
 667.246 +    {
 667.247 +    iAcceptSubType.Close();
 667.248 +	iAcceptSubType.CreateL(aAcceptSubType);
 667.249 +    }
 667.250 +
 667.251 +inline void  CSubConSIPSubscribeParamSet::SetExpires(TInt aExpires)
 667.252 +    {
 667.253 +    iExpires = aExpires;
 667.254 +    }
 667.255 +
 667.256 +inline void CSubConSIPSubscribeParamSet::SetAutoRefresh(TBool aAutoRefresh)
 667.257 +    {
 667.258 +    iAutoRefresh = aAutoRefresh;
 667.259 +    }
 667.260 +	
 667.261 +	
 667.262 +	
 667.263 +	
 667.264 +	
 667.265 +/*-===========================================================
 667.266 +/
 667.267 +/ CSubConSIPAuthenticateParamSet
 667.268 +/
 667.269 +/*-=========================================================*/
 667.270 +inline CSubConSIPAuthenticateParamSet* CSubConSIPAuthenticateParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
 667.271 +	{
 667.272 +	CSubConSIPAuthenticateParamSet* obj = NewL();
 667.273 +	CleanupStack::PushL(obj);
 667.274 +	aFamily.AddExtensionSetL(*obj, aType);
 667.275 +	CleanupStack::Pop(obj);
 667.276 +	return obj;
 667.277 +	}
 667.278 +
 667.279 +inline CSubConSIPAuthenticateParamSet* CSubConSIPAuthenticateParamSet::NewL()
 667.280 +	{
 667.281 +	STypeId typeId(KSubConSIPParametersUid, KSubConSIPAuthenticateParamsType);
 667.282 +	return static_cast<CSubConSIPAuthenticateParamSet*>(CSubConParameterSet::NewL(typeId));
 667.283 +	}
 667.284 +
 667.285 +// Constructor
 667.286 +inline CSubConSIPAuthenticateParamSet::CSubConSIPAuthenticateParamSet()
 667.287 +:CSubConExtensionParameterSet()
 667.288 +	{
 667.289 +	}
 667.290 +
 667.291 +// Getters
 667.292 +inline const TPtrC8 CSubConSIPAuthenticateParamSet::GetUserName() const
 667.293 +    {
 667.294 +    return iUserName.LeftTPtr(iUserName.Length());
 667.295 +    }
 667.296 +	
 667.297 +inline const TPtrC8 CSubConSIPAuthenticateParamSet::GetPassword() const	
 667.298 +    {
 667.299 +    return iPassword.LeftTPtr(iPassword.Length());
 667.300 +    }
 667.301 +
 667.302 +inline const TPtrC8 CSubConSIPAuthenticateParamSet::GetRealm() const
 667.303 +    {
 667.304 +    return iRealm.LeftTPtr(iRealm.Length());
 667.305 +    }
 667.306 +
 667.307 +// Setters
 667.308 +inline void CSubConSIPAuthenticateParamSet::SetUserNameL(const TPtrC8 & aUserName)
 667.309 +    {
 667.310 +    iUserName.Close();
 667.311 +	iUserName.CreateL(aUserName);
 667.312 +    }
 667.313 +
 667.314 +inline void CSubConSIPAuthenticateParamSet::SetPasswordL(const TPtrC8 & aPassword)
 667.315 +    {
 667.316 +    iPassword.Close();    
 667.317 +	iPassword.CreateL(aPassword);
 667.318 +    }
 667.319 +
 667.320 +inline void CSubConSIPAuthenticateParamSet::SetRealmL(const TPtrC8 & aRealm)
 667.321 +    {
 667.322 +    iRealm.Close();
 667.323 +    iRealm.CreateL(aRealm);
 667.324 +    }
   668.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   668.2 +++ b/epoc32/include/mw/sipacceptcontactheader.h	Wed Mar 31 12:27:01 2010 +0100
   668.3 @@ -0,0 +1,172 @@
   668.4 +/*
   668.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   668.6 +* All rights reserved.
   668.7 +* This component and the accompanying materials are made available
   668.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   668.9 +* which accompanies this distribution, and is available
  668.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  668.11 +*
  668.12 +* Initial Contributors:
  668.13 +* Nokia Corporation - initial contribution.
  668.14 +*
  668.15 +* Contributors:
  668.16 +*
  668.17 +* Description:
  668.18 +* Name        : sipacceptcontactheader.h
  668.19 +* Part of     : SIP Codec
  668.20 +* Interface   : SDK API, SIP Codec API
  668.21 +* Version     : SIP/4.0 
  668.22 +*
  668.23 +*/
  668.24 +
  668.25 +
  668.26 +
  668.27 +
  668.28 +#ifndef CSIPACCEPTCONTACTHEADER_H
  668.29 +#define CSIPACCEPTCONTACTHEADER_H
  668.30 +
  668.31 +//  INCLUDES
  668.32 +#include "sipparameterheaderbase.h"
  668.33 +#include "_sipcodecdefs.h"
  668.34 +
  668.35 +// FORWARD DECLARATIONS
  668.36 +class CSIPAcceptContactHeaderParams;
  668.37 +
  668.38 +// CLASS DECLARATION
  668.39 +/**
  668.40 +* @publishedAll
  668.41 +* @released
  668.42 +*
  668.43 +* Class provides functions for setting and getting parameters in SIP 
  668.44 +* "Accept-Contact" header.
  668.45 +*
  668.46 +*  @lib sipcodec.lib
  668.47 +*/
  668.48 +class CSIPAcceptContactHeader : public CSIPParameterHeaderBase
  668.49 +	{
  668.50 +	public:	// Constructors and destructor
  668.51 +
  668.52 +		/**
  668.53 +		* Constructs a CSIPAcceptContactHeader from textual representation 
  668.54 +		* of the header's value part.
  668.55 +		* @param aValue a value part of a "Accept-Contact"-header 
  668.56 +		*        (e.g. "*;param=value")
  668.57 +		* @return an array containing one to many instances 
  668.58 +        *         of CSIPAcceptContactHeader   
  668.59 +		*/
  668.60 +		IMPORT_C static RPointerArray<CSIPAcceptContactHeader>
  668.61 +            DecodeL(const TDesC8& aValue);
  668.62 +
  668.63 +		/**
  668.64 +		* Creates a new instance of CSIPAcceptContactHeader
  668.65 +		* @return a new instance of CSIPAcceptContactHeader
  668.66 +		*/
  668.67 +        IMPORT_C static CSIPAcceptContactHeader* NewL();
  668.68 +
  668.69 +		/**
  668.70 +		* Creates a new instance of CSIPAcceptContactHeader
  668.71 +        * On return the new instance has left to the CleanupStack.
  668.72 +		* @return a new instance of CSIPAcceptContactHeader
  668.73 +		*/
  668.74 +        IMPORT_C static CSIPAcceptContactHeader* NewLC();
  668.75 +
  668.76 +        /**
  668.77 +		* Destructor, deletes the resources of CSIPAcceptContactHeader.
  668.78 +		*/
  668.79 +		IMPORT_C virtual ~CSIPAcceptContactHeader();
  668.80 +
  668.81 +
  668.82 +	public: // New functions
  668.83 +
  668.84 +		/**
  668.85 +		* Compares this instance to another "Accept-Contact" header object.
  668.86 +		* Two Accept-Contact-headers are equal, 
  668.87 +		* if both contain exactly the same parameters. 
  668.88 +		* The order of the parameters is not sufficient.
  668.89 +		* @param aHeader a header to compare to
  668.90 +		* @return ETrue, if the objects are equal otherwise EFalse
  668.91 +		*/
  668.92 +		IMPORT_C TBool operator==(const CSIPAcceptContactHeader& aHeader) const;
  668.93 +
  668.94 +        /**
  668.95 +		* Constructs an instance of a CSIPAcceptContactHeader from a RReadStream
  668.96 +		* @param aReadStream a stream containing the value of the
  668.97 +		*        externalized object (header name not included). 
  668.98 +		* @return an instance of a CSIPAcceptContactHeader
  668.99 +		*/
 668.100 +		IMPORT_C static CSIPHeaderBase* 
 668.101 +            InternalizeValueL(RReadStream& aReadStream);
 668.102 +        
 668.103 +
 668.104 +	public: // From CSIPHeaderBase
 668.105 +
 668.106 +		/**
 668.107 +		* From CSIPHeaderBase CloneL
 668.108 +		*/
 668.109 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 668.110 +
 668.111 +		/**
 668.112 +		* From CSIPHeaderBase Name
 668.113 +		*/
 668.114 +		IMPORT_C RStringF Name() const;
 668.115 +
 668.116 +
 668.117 +	public: // From CSIPHeaderBase, for internal use
 668.118 +
 668.119 +        /**
 668.120 +		* @internalComponent
 668.121 +		*/
 668.122 +        TBool HasCompactName() const;
 668.123 +        
 668.124 +        /**
 668.125 +		* @internalComponent
 668.126 +		*/        
 668.127 +        RStringF CompactName() const;
 668.128 +        
 668.129 +        /**
 668.130 +		* @internalComponent
 668.131 +		*/        
 668.132 +        TBool MoreThanOneAllowed() const;
 668.133 +        
 668.134 +        /**
 668.135 +		* @internalComponent
 668.136 +		*/        
 668.137 +		TPreferredPlace PreferredPlaceInMessage() const;
 668.138 +
 668.139 +	public: // New functions, for internal use
 668.140 +
 668.141 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 668.142 +
 668.143 +	private: // From CSIPHeaderBase
 668.144 +
 668.145 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 668.146 +
 668.147 +	private: // From CSIPParameterHeaderBase
 668.148 +
 668.149 +		HBufC8* ToTextMandatoryPartLC() const;
 668.150 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 668.151 +		const CSIPParamContainerBase& Params() const;
 668.152 +		CSIPParamContainerBase& Params();
 668.153 +
 668.154 +	private: // Constructors
 668.155 +
 668.156 +        CSIPAcceptContactHeader();
 668.157 +        void ConstructL();
 668.158 +		void ConstructL(const CSIPAcceptContactHeader& aAcceptContactHeader);
 668.159 +
 668.160 +	private: // New functions
 668.161 +
 668.162 +		void DoInternalizeValueL(RReadStream& aReadStream);
 668.163 +
 668.164 +	private: // Data
 668.165 +
 668.166 +		CSIPAcceptContactHeaderParams* iParams;
 668.167 +
 668.168 +	private: // For testing purposes
 668.169 +	
 668.170 +		UNIT_TEST(CSIPAcceptContactHeaderTest)
 668.171 +	};
 668.172 +
 668.173 +#endif // CSIPACCEPTCONTACTHEADER_H
 668.174 +
 668.175 +// End of File
   669.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   669.2 +++ b/epoc32/include/mw/sipacceptencodingheader.h	Wed Mar 31 12:27:01 2010 +0100
   669.3 @@ -0,0 +1,179 @@
   669.4 +/*
   669.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   669.6 +* All rights reserved.
   669.7 +* This component and the accompanying materials are made available
   669.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   669.9 +* which accompanies this distribution, and is available
  669.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  669.11 +*
  669.12 +* Initial Contributors:
  669.13 +* Nokia Corporation - initial contribution.
  669.14 +*
  669.15 +* Contributors:
  669.16 +*
  669.17 +* Description:
  669.18 +* Name        : sipacceptencodingheader.h
  669.19 +* Part of     : SIP Codec
  669.20 +* Interface   : SDK API, SIP Codec API
  669.21 +* Version     : SIP/4.0 
  669.22 +*
  669.23 +*/
  669.24 +
  669.25 +
  669.26 +
  669.27 +
  669.28 +#ifndef CSIPACCEPTENCODINGHEADER_H
  669.29 +#define CSIPACCEPTENCODINGHEADER_H
  669.30 +
  669.31 +//  INCLUDES
  669.32 +#include "sipparameterheaderbase.h"
  669.33 +#include "_sipcodecdefs.h"
  669.34 +
  669.35 +// FORWARD DECLARATIONS
  669.36 +class CSIPAcceptHeaderParams;
  669.37 +
  669.38 +// CLASS DECLARATION
  669.39 +/**
  669.40 +* @publishedAll
  669.41 +* @released
  669.42 +*
  669.43 +* Class provides functions for setting and getting media types and
  669.44 +* parameters in SIP "Accept-Encoding" header.
  669.45 +*
  669.46 +*  @lib sipcodec.lib
  669.47 +*/
  669.48 +class CSIPAcceptEncodingHeader : public CSIPParameterHeaderBase
  669.49 +	{
  669.50 +	public:	// Constructors and destructor
  669.51 +
  669.52 +		/**
  669.53 +		* Constructs a CSIPAcceptEncodingHeader from textual representation 
  669.54 +		* of the header's value part.
  669.55 +		* @param aValue a value part of a "Accept-Encoding"-header
  669.56 +		* @return An array containing one to many CSIPAcceptEncodingHeader
  669.57 +		*         instances
  669.58 +		*/
  669.59 +		IMPORT_C static RPointerArray<CSIPAcceptEncodingHeader> 
  669.60 +			DecodeL(const TDesC8& aValue);
  669.61 +
  669.62 +		/**
  669.63 +		* Creates a new instance of CSIPAcceptEncodingHeader
  669.64 +		* @param aCodings a codings to set.
  669.65 +		* @return a new instance of CSIPAcceptEncodingHeader
  669.66 +		*/
  669.67 +		IMPORT_C static CSIPAcceptEncodingHeader* NewL(const TDesC8& aCodings);
  669.68 +
  669.69 +		/**
  669.70 +		* Creates a new instance of CSIPAcceptEncodingHeader 
  669.71 +		* and puts it onto the cleanup stack
  669.72 +		* @param aCodings a codings to set.
  669.73 +		* @return a new instance of CSIPAcceptEncodingHeader
  669.74 +		*/
  669.75 +		IMPORT_C static CSIPAcceptEncodingHeader* NewLC(const TDesC8& aCodings);
  669.76 +
  669.77 +		/**
  669.78 +		* Destructor, deletes the resources of CSIPAcceptEncodingHeader.
  669.79 +		*/
  669.80 +		IMPORT_C ~CSIPAcceptEncodingHeader();
  669.81 +
  669.82 +	
  669.83 +	public:	// New functions  
  669.84 +
  669.85 +		/**
  669.86 +		* Gets the codings from the "Accept-Encoding" header
  669.87 +		* @return codings
  669.88 +		*/
  669.89 +		IMPORT_C const TDesC8& Codings() const;
  669.90 +
  669.91 +		/**
  669.92 +		* Sets the codings in the "Accept-Encoding" header
  669.93 +		* @param aCodings the codings
  669.94 +		*/
  669.95 +		IMPORT_C void SetCodingsL(const TDesC8& aCodings);
  669.96 +
  669.97 +		/**
  669.98 +		* Gets the value of "q"-parameter
  669.99 +		* @return the "q"-parameter value
 669.100 +		*/
 669.101 +		IMPORT_C TReal QParameter() const;
 669.102 +
 669.103 +		/**
 669.104 +		* Sets the "q"-parameter value
 669.105 +		* @param aQValue a "q"-parameter value to set´
 669.106 +		*/
 669.107 +		IMPORT_C void SetQParameterL(TReal aQValue);
 669.108 +
 669.109 +		/**
 669.110 +		* Constructs an instance of a CSIPAcceptEncodingHeader from a RReadStream
 669.111 +		* @param aReadStream a stream containing the value of the
 669.112 +		*        externalized header object (header name not included).
 669.113 +		* @return An instance of a CSIPAcceptEncodingHeader
 669.114 +		*/
 669.115 +		IMPORT_C static CSIPHeaderBase* 
 669.116 +			InternalizeValueL(RReadStream& aReadStream);
 669.117 +
 669.118 +
 669.119 +	public: // From CSIPHeaderBase
 669.120 +
 669.121 +		/**
 669.122 +		* From CSIPHeaderBase CloneL
 669.123 +		*/
 669.124 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 669.125 +
 669.126 +		/**
 669.127 +		* From CSIPHeaderBase Name
 669.128 +		*/
 669.129 +		IMPORT_C RStringF Name() const;
 669.130 +
 669.131 +
 669.132 +	public: // From CSIPHeaderBase, for internal use
 669.133 +
 669.134 +        /**
 669.135 +		* @internalComponent
 669.136 +		*/
 669.137 +		TBool MoreThanOneAllowed() const;
 669.138 +		
 669.139 +        /**
 669.140 +		* @internalComponent
 669.141 +		*/		
 669.142 +		TPreferredPlace PreferredPlaceInMessage() const;
 669.143 +
 669.144 +	public: // New functions, for internal use
 669.145 +
 669.146 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 669.147 +
 669.148 +	private: // From CSIPHeaderBase
 669.149 +
 669.150 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 669.151 +
 669.152 +	private: // From CSIPParameterHeaderBase
 669.153 +
 669.154 +		HBufC8* ToTextMandatoryPartLC() const;
 669.155 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 669.156 +		const CSIPParamContainerBase& Params() const;
 669.157 +		CSIPParamContainerBase& Params();
 669.158 +	
 669.159 +	private: // Constructors
 669.160 +
 669.161 +		CSIPAcceptEncodingHeader();
 669.162 +		void ConstructL();
 669.163 +		void ConstructL(const TDesC8& aCodings);
 669.164 +		void ConstructL(const CSIPAcceptEncodingHeader& aAcceptEncodingHeader);
 669.165 +
 669.166 +	private: // New functions
 669.167 +
 669.168 +		void DoInternalizeValueL(RReadStream& aReadStream);
 669.169 +
 669.170 +	private: // Data
 669.171 +
 669.172 +		HBufC8* iCodings;
 669.173 +		CSIPAcceptHeaderParams* iParams;
 669.174 +
 669.175 +	private: // For testing purposes
 669.176 +	
 669.177 +		UNIT_TEST(CSIPAcceptEncodingHeaderTest)
 669.178 +	};
 669.179 +
 669.180 +#endif // CSIPACCEPTENCODINGHEADER_H
 669.181 +
 669.182 +// End of File
   670.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   670.2 +++ b/epoc32/include/mw/sipacceptheader.h	Wed Mar 31 12:27:01 2010 +0100
   670.3 @@ -0,0 +1,207 @@
   670.4 +/*
   670.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   670.6 +* All rights reserved.
   670.7 +* This component and the accompanying materials are made available
   670.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   670.9 +* which accompanies this distribution, and is available
  670.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  670.11 +*
  670.12 +* Initial Contributors:
  670.13 +* Nokia Corporation - initial contribution.
  670.14 +*
  670.15 +* Contributors:
  670.16 +*
  670.17 +* Description:
  670.18 +* Name        : sipacceptheader.h
  670.19 +* Part of     : SIP Codec
  670.20 +* Interface   : SDK API, SIP Codec API
  670.21 +* Version     : SIP/4.0 
  670.22 +*
  670.23 +*/
  670.24 +
  670.25 +
  670.26 +
  670.27 +
  670.28 +#ifndef CSIPACCEPTHEADER_H
  670.29 +#define CSIPACCEPTHEADER_H
  670.30 +
  670.31 +//  INCLUDES
  670.32 +#include "sipparameterheaderbase.h"
  670.33 +#include "_sipcodecdefs.h"
  670.34 +
  670.35 +// FORWARD DECLARATIONS
  670.36 +class CSIPAcceptHeaderParams;
  670.37 +
  670.38 +
  670.39 +// CLASS DECLARATION
  670.40 +/**
  670.41 +* @publishedAll
  670.42 +* @released
  670.43 +*
  670.44 +* Class provides functions for setting and getting media types and
  670.45 +* parameters in SIP "Accept" header.
  670.46 +*
  670.47 +*  @lib sipcodec.lib
  670.48 +*/
  670.49 +class CSIPAcceptHeader : public CSIPParameterHeaderBase
  670.50 +	{
  670.51 +	public:	// Constructors and destructor
  670.52 +
  670.53 +		/**
  670.54 +		* Constructs a CSIPAcceptHeader from textual representation 
  670.55 +		* of the header's value part.
  670.56 +		* An empty Accept-header can be created using this function
  670.57 +		* by passing a KNullDesC8 as a parameter.
  670.58 +		* @param aValue a value part of a "Accept"-header
  670.59 +		* @return an array containing one to many instances of CSIPAcceptHeader.
  670.60 +		*/
  670.61 +		IMPORT_C static RPointerArray<CSIPAcceptHeader> 
  670.62 +			DecodeL(const TDesC8& aValue);
  670.63 +
  670.64 +		/**
  670.65 +		* Creates a new instance of CSIPAcceptHeader
  670.66 +		* @param aMediaType a media type to set. For example "application"
  670.67 +		* @param aMediaSubtype a media subtype to set. For example "sdp"
  670.68 +		* @return a new instance of CSIPAcceptHeader
  670.69 +		*/
  670.70 +		IMPORT_C static CSIPAcceptHeader* NewL(const TDesC8& aMediaType,
  670.71 +		                                       const TDesC8& aMediaSubtype);
  670.72 +
  670.73 +		/**
  670.74 +		* Creates a new instance of CSIPAcceptHeader and puts it into 
  670.75 +		* the cleanup stack
  670.76 +		* @param aMediaType a media type to set. For example "application"
  670.77 +		* @param aMediaSubtype a media subtype to set. For example "sdp"
  670.78 +		* @return a new instance of CSIPAcceptHeader
  670.79 +		*/
  670.80 +		IMPORT_C static CSIPAcceptHeader* NewLC(const TDesC8& aMediaType,
  670.81 +		                                        const TDesC8& aMediaSubtype);
  670.82 +
  670.83 +		/**
  670.84 +		* Destructor, deletes the resources of CSIPAcceptHeader.
  670.85 +		*/
  670.86 +		IMPORT_C ~CSIPAcceptHeader();
  670.87 +
  670.88 +
  670.89 +	public: // New functions
  670.90 +
  670.91 +		/**
  670.92 +		* Check if the header is empty. If so, 
  670.93 +		* the other getters will not return a meaningful value.
  670.94 +		* @return ETrue if empty, EFalse otherwise.
  670.95 +		*/
  670.96 +		IMPORT_C TBool IsEmpty() const;
  670.97 +    
  670.98 +		/**
  670.99 +		* Gets the media type from the "Accept" header
 670.100 +		* @return a media type
 670.101 +		*/
 670.102 +		IMPORT_C const TDesC8& MediaType() const;
 670.103 +
 670.104 +		/**
 670.105 +		* Sets the media type in the "Accept" header
 670.106 +		* @pre IsEmpty() == EFalse
 670.107 +		* @param aMediaType a media type
 670.108 +		*/
 670.109 +		IMPORT_C void SetMediaTypeL(const TDesC8& aMediaType);
 670.110 +
 670.111 +		/**
 670.112 +		* Gets the media subtype from the "Accept" header
 670.113 +		* @return a media subtype
 670.114 +		*/
 670.115 +		IMPORT_C const TDesC8& MediaSubtype() const;
 670.116 +		/**
 670.117 +		* Sets the media subtype in the "Accept" header
 670.118 +		* @pre IsEmpty() == EFalse
 670.119 +		* @param aMediaSubtype a media subtype
 670.120 +		*/
 670.121 +		IMPORT_C void SetMediaSubtypeL(const TDesC8& aMediaSubtype);
 670.122 +
 670.123 +		/**
 670.124 +		* Gets the value of "q"-parameter
 670.125 +		* @return the "q"-parameter value
 670.126 +		*/
 670.127 +		IMPORT_C TReal QParameter() const;
 670.128 +
 670.129 +		/**
 670.130 +		* Sets the "q"-parameter value
 670.131 +		* @param aQValue a "q"-parameter value to set
 670.132 +		*/
 670.133 +		IMPORT_C void SetQParameterL(TReal aQValue);
 670.134 +
 670.135 +		/**
 670.136 +		* Constructs an instance of a CSIPAcceptHeader from a RReadStream
 670.137 +		* @param aReadStream a stream containing the value of the
 670.138 +		*        externalized header object (header name not included).
 670.139 +		* @return An instance of a CSIPAcceptHeader
 670.140 +		*/
 670.141 +		IMPORT_C static CSIPHeaderBase* 
 670.142 +			InternalizeValueL(RReadStream& aReadStream);
 670.143 +
 670.144 +
 670.145 +	public: // From CSIPHeaderBase
 670.146 +
 670.147 +		/**
 670.148 +		* From CSIPHeaderBase CloneL
 670.149 +		*/
 670.150 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 670.151 +
 670.152 +		/**
 670.153 +		* From CSIPHeaderBase Name
 670.154 +		*/
 670.155 +		IMPORT_C RStringF Name() const;
 670.156 +
 670.157 +
 670.158 +	public: // From CSIPHeaderBase, for internal use
 670.159 +
 670.160 +        /**
 670.161 +        * @internalComponent
 670.162 +        */
 670.163 +		TBool MoreThanOneAllowed() const;
 670.164 +		
 670.165 +        /**
 670.166 +        * @internalComponent
 670.167 +        */		
 670.168 +		TPreferredPlace PreferredPlaceInMessage() const;
 670.169 +
 670.170 +	public: // New functions, for internal use
 670.171 +
 670.172 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 670.173 +
 670.174 +	private: // From CSIPHeaderBase
 670.175 +
 670.176 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 670.177 +
 670.178 +	private: // From CSIPParameterHeaderBase
 670.179 +
 670.180 +		HBufC8* ToTextMandatoryPartLC() const;
 670.181 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 670.182 +		const CSIPParamContainerBase& Params() const;
 670.183 +		CSIPParamContainerBase& Params();
 670.184 +
 670.185 +	private: // Constructors
 670.186 +
 670.187 +		CSIPAcceptHeader(TBool aEmpty=EFalse);
 670.188 +		void ConstructL();
 670.189 +		void ConstructL(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
 670.190 +		void ConstructL(const CSIPAcceptHeader& aAcceptHeader);
 670.191 +
 670.192 +	private: // New functions
 670.193 +
 670.194 +		void DoInternalizeValueL(RReadStream& aReadStream);
 670.195 +
 670.196 +	private: // Data
 670.197 +
 670.198 +		TBool iEmpty;
 670.199 +		HBufC8* iMediaType;
 670.200 +		HBufC8* iMediaSubtype;
 670.201 +		CSIPAcceptHeaderParams* iParams;
 670.202 +
 670.203 +	private: // For testing purposes
 670.204 +	
 670.205 +		UNIT_TEST(CSIPAcceptHeaderTest)
 670.206 +	};
 670.207 +
 670.208 +#endif // CSIPACCEPTHEADER_H
 670.209 +
 670.210 +// End of File
   671.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   671.2 +++ b/epoc32/include/mw/sipacceptlanguageheader.h	Wed Mar 31 12:27:01 2010 +0100
   671.3 @@ -0,0 +1,178 @@
   671.4 +/*
   671.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   671.6 +* All rights reserved.
   671.7 +* This component and the accompanying materials are made available
   671.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   671.9 +* which accompanies this distribution, and is available
  671.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  671.11 +*
  671.12 +* Initial Contributors:
  671.13 +* Nokia Corporation - initial contribution.
  671.14 +*
  671.15 +* Contributors:
  671.16 +*
  671.17 +* Description:
  671.18 +* Name        : sipacceptlanguageheader.h
  671.19 +* Part of     : SIP Codec
  671.20 +* Interface   : SDK API, SIP Codec API
  671.21 +* Version     : SIP/4.0 
  671.22 +*
  671.23 +*/
  671.24 +
  671.25 +
  671.26 +
  671.27 +
  671.28 +#ifndef CSIPACCEPTLANGUAGEHEADER_H
  671.29 +#define CSIPACCEPTLANGUAGEHEADER_H
  671.30 +
  671.31 +//  INCLUDES
  671.32 +#include "sipparameterheaderbase.h"
  671.33 +#include "_sipcodecdefs.h"
  671.34 +
  671.35 +// FORWARD DECLARATIONS
  671.36 +class CSIPAcceptHeaderParams;
  671.37 +
  671.38 +// CLASS DECLARATION
  671.39 +/**
  671.40 +* @publishedAll
  671.41 +* @released
  671.42 +*
  671.43 +* Class provides functions for setting and getting media types and
  671.44 +* parameters in SIP "Accept-Language" header.
  671.45 +*
  671.46 +* @lib sipcodec.lib
  671.47 +*/
  671.48 +class CSIPAcceptLanguageHeader : public CSIPParameterHeaderBase
  671.49 +	{
  671.50 +	public: // Constructors and destructor
  671.51 +
  671.52 +		/**
  671.53 +		* Constructs a CSIPAcceptLanguageHeader from textual representation 
  671.54 +		* of the header's value part.
  671.55 +		* @param aValue a value part of a "Accept-Language"-header
  671.56 +		* @return an array containing one to many instances of 
  671.57 +		* 		   CSIPAcceptLanguageHeader. 
  671.58 +		*/
  671.59 +		IMPORT_C static RPointerArray<CSIPAcceptLanguageHeader> 
  671.60 +			DecodeL(const TDesC8& aValue);
  671.61 +
  671.62 +		/**
  671.63 +		* Creates a new instance of CSIPAcceptLanguageHeader
  671.64 +		* @param aLanguageRange a language-range to set
  671.65 +		* @return a new instance of CSIPAcceptLanguageHeader
  671.66 +		*/
  671.67 +		IMPORT_C static CSIPAcceptLanguageHeader* 
  671.68 +			NewL(const TDesC8& aLanguageRange);
  671.69 +
  671.70 +		/**
  671.71 +		* Creates a new instance of CSIPAcceptLanguageHeader and puts it onto
  671.72 +		* the cleanup stack
  671.73 +		* @param aLanguageRange a language-range to set
  671.74 +		* @return a new instance of CSIPAcceptLanguageHeader
  671.75 +		*/
  671.76 +		IMPORT_C static CSIPAcceptLanguageHeader* 
  671.77 +			NewLC(const TDesC8& aLanguageRange);
  671.78 +
  671.79 +		/**
  671.80 +		* Destructor, deletes the resources of CSIPAcceptLanguageHeader.
  671.81 +		*/
  671.82 +		IMPORT_C ~CSIPAcceptLanguageHeader();
  671.83 +
  671.84 +
  671.85 +	public: // New functions
  671.86 +
  671.87 +		/**
  671.88 +		* Gets the language-range from the "Accept-Language" header
  671.89 +		* @return a language-range
  671.90 +		*/
  671.91 +		IMPORT_C const TDesC8& LanguageRange() const;
  671.92 +
  671.93 +		/**
  671.94 +		* Sets the language-range in the "Accept-Language" header
  671.95 +		* @param aLanguageRange a language-range
  671.96 +		*/
  671.97 +		IMPORT_C void SetLanguageRangeL(const TDesC8& aLanguageRange);
  671.98 +
  671.99 +		/**
 671.100 +		* Gets the value of "q"-parameter
 671.101 +		* @return the "q"-parameter value
 671.102 +		*/
 671.103 +		IMPORT_C TReal QParameter() const;
 671.104 +
 671.105 +		/**
 671.106 +		* Sets the "q"-parameter value
 671.107 +		* @param aQValue a "q"-parameter value to set
 671.108 +		*/
 671.109 +		IMPORT_C void SetQParameterL(TReal aQValue);
 671.110 +
 671.111 +		/**
 671.112 +		* Constructs an instance of a CSIPAcceptLanguageHeader from a RReadStream
 671.113 +		* @param aReadStream a stream containing the value of the
 671.114 +		*        externalized header object (header name not included).
 671.115 +		* @return an instance of a CSIPAcceptLanguageHeader
 671.116 +		*/
 671.117 +		IMPORT_C static CSIPHeaderBase* 
 671.118 +			InternalizeValueL(RReadStream& aReadStream);
 671.119 +
 671.120 +
 671.121 +	public: // From CSIPHeaderBase
 671.122 +
 671.123 +		/**
 671.124 +		* From CSIPHeaderBase CloneL
 671.125 +		*/
 671.126 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 671.127 +		
 671.128 +		/**
 671.129 +		* From CSIPHeaderBase Name
 671.130 +		*/
 671.131 +		IMPORT_C RStringF Name() const;
 671.132 +
 671.133 +
 671.134 +	public: // From CSIPHeaderBase, for internal use
 671.135 +
 671.136 +        /**
 671.137 +        * @internalComponent
 671.138 +        */
 671.139 +		TBool MoreThanOneAllowed() const;
 671.140 +		
 671.141 +        /**
 671.142 +        * @internalComponent
 671.143 +        */
 671.144 +		TPreferredPlace PreferredPlaceInMessage() const;
 671.145 +
 671.146 +	public: // New functions, for internal use
 671.147 +
 671.148 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 671.149 +
 671.150 +	private: // From CSIPHeaderBase
 671.151 +
 671.152 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 671.153 +
 671.154 +	private: // From CSIPParameterHeaderBase
 671.155 +
 671.156 +		HBufC8* ToTextMandatoryPartLC() const;
 671.157 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 671.158 +		const CSIPParamContainerBase& Params() const;
 671.159 +		CSIPParamContainerBase& Params();
 671.160 +
 671.161 +	private: // New functions
 671.162 +
 671.163 +		CSIPAcceptLanguageHeader();
 671.164 +		void ConstructL();
 671.165 +		void ConstructL(const TDesC8& aLanguageRange);
 671.166 +		void ConstructL(const CSIPAcceptLanguageHeader& aAcceptLanguageHeader);
 671.167 +		void DoInternalizeValueL(RReadStream& aReadStream);
 671.168 +
 671.169 +	private: // Data
 671.170 +
 671.171 +		HBufC8* iLanguageRange;
 671.172 +		CSIPAcceptHeaderParams* iParams;
 671.173 +
 671.174 +	private: // For testing purposes
 671.175 +	
 671.176 +		UNIT_TEST(CSIPAcceptLanguageHeaderTest)
 671.177 +	};
 671.178 +
 671.179 +#endif // CSIPACCEPTLANGUAGEHEADER_H
 671.180 +
 671.181 +// End of File
   672.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   672.2 +++ b/epoc32/include/mw/sipaddress.h	Wed Mar 31 12:27:01 2010 +0100
   672.3 @@ -0,0 +1,209 @@
   672.4 +/*
   672.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   672.6 +* All rights reserved.
   672.7 +* This component and the accompanying materials are made available
   672.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   672.9 +* which accompanies this distribution, and is available
  672.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  672.11 +*
  672.12 +* Initial Contributors:
  672.13 +* Nokia Corporation - initial contribution.
  672.14 +*
  672.15 +* Contributors:
  672.16 +*
  672.17 +* Description:
  672.18 +* Name        : sipaddress.h
  672.19 +* Part of     : SIP Codec
  672.20 +* Interface   : SDK API, SIP Codec API
  672.21 +* Version     : SIP/4.0 
  672.22 +*
  672.23 +*/
  672.24 +
  672.25 +
  672.26 +
  672.27 +
  672.28 +#ifndef CSIPADDRESS_H
  672.29 +#define CSIPADDRESS_H
  672.30 +
  672.31 +//  INCLUDES
  672.32 +#include <e32base.h>
  672.33 +#include <s32mem.h>
  672.34 +#include <uri8.h>
  672.35 +#include "_sipcodecdefs.h"
  672.36 +
  672.37 +// FORWARD DECLARATIONS
  672.38 +class CURIContainer;
  672.39 +
  672.40 +// CLASS DECLARATION
  672.41 +/**
  672.42 +* @publishedAll
  672.43 +* @released
  672.44 +*
  672.45 +* Class provides functions for setting and getting parameters in SIP 
  672.46 +* name-addr structure
  672.47 +*
  672.48 +* @lib sipcodec.lib
  672.49 +*/
  672.50 +class CSIPAddress : public CBase
  672.51 +	{
  672.52 +	public:	// Constructors and destructor
  672.53 +
  672.54 +		/**
  672.55 +		* Constructs a CSIPAddress from textual representation 
  672.56 +		* @param aValue SIP name-addr as text
  672.57 +		* @return a new instance of CSIPAddress
  672.58 +		*/
  672.59 +		IMPORT_C static CSIPAddress* DecodeL(const TDesC8& aValue);
  672.60 +
  672.61 +		/**
  672.62 +		* Creates a new instance of CSIPAddress
  672.63 +		* @pre aUri != 0
  672.64 +		* @param aUri the ownership is transferred.
  672.65 +		* @return a new instance of CSIPAddress
  672.66 +		*/
  672.67 +		IMPORT_C static CSIPAddress* NewL(CUri8* aUri8);
  672.68 +
  672.69 +		/**
  672.70 +		* Creates a new instance of CSIPAddress and puts it to CleanupStack
  672.71 +		* @pre aUri != 0 
  672.72 +		* @param aUri the ownership is transferred.
  672.73 +		* @return a new instance of CSIPAddress
  672.74 +		*/
  672.75 +		IMPORT_C static CSIPAddress* NewLC(CUri8* aUri8);
  672.76 +
  672.77 +		/**
  672.78 +		* Creates a new instance of CSIPAddress
  672.79 +		* @pre aUri != 0
  672.80 +		* @param aDisplayName a SIP token or a SIP quoted-string
  672.81 +		* @param aUri the ownership is transferred.
  672.82 +		* @return a new instance of CSIPAddress
  672.83 +		*/
  672.84 +		IMPORT_C static CSIPAddress* NewL(const TDesC8& aDisplayName, 
  672.85 +		                                  CUri8* aUri8);
  672.86 +
  672.87 +		/**
  672.88 +		* Creates a new instance of CSIPAddress and puts it to CleanupStack
  672.89 +		* @pre aUri != 0
  672.90 +		* @param aDisplayName a SIP token or a SIP quoted-string
  672.91 +		* @param aUri the ownership is transferred.
  672.92 +		* @return a new instance of CSIPAddress
  672.93 +		*/
  672.94 +		IMPORT_C static CSIPAddress* NewLC(const TDesC8& aDisplayName,
  672.95 +									       CUri8* aUri8);
  672.96 +
  672.97 +		/**
  672.98 +		* Creates a deep-copy of a CSIPAddress
  672.99 +		* @param aSIPAddress the address to be copied
 672.100 +		* @return a new instance of CSIPAddress
 672.101 +		*/
 672.102 +		IMPORT_C static CSIPAddress* NewL(const CSIPAddress& aSIPAddress);
 672.103 +
 672.104 +		/**
 672.105 +		* Creates a deep-copy of a CSIPAddress and puts it to CleanupStack
 672.106 +		* @param aSIPAddress the address to be copied
 672.107 +		* @return a new instance of CSIPAddress
 672.108 +		*/
 672.109 +		IMPORT_C static CSIPAddress* NewLC(const CSIPAddress& aSIPAddress);
 672.110 +
 672.111 +		/**
 672.112 +		* Destructor, deletes the resources of CSIPAddress.
 672.113 +		*/
 672.114 +		IMPORT_C ~CSIPAddress();
 672.115 +
 672.116 +
 672.117 +	public: // New functions
 672.118 +
 672.119 +		/**
 672.120 +		* Compares this object to another instance of CSIPAddress
 672.121 +		* @param aSIPAddress a CSIPAddress to compare to
 672.122 +		* @return ETrue if the objects are equal otherwise EFalse
 672.123 +		*/
 672.124 +		IMPORT_C TBool operator==(const CSIPAddress& aSIPAddress) const;
 672.125 +	
 672.126 +		/**
 672.127 +		* Gets the display name
 672.128 +		* @return the display name if present, 
 672.129 +		* 		   otherwise a zero-length descriptor 
 672.130 +		*/
 672.131 +		IMPORT_C const TDesC8& DisplayName() const;
 672.132 +	
 672.133 +		/**
 672.134 +		* Sets the display name
 672.135 +		* @param aDisplayName a SIP token or a SIP quoted-string
 672.136 +		*/
 672.137 +		IMPORT_C void SetDisplayNameL(const TDesC8& aDisplayName);
 672.138 +
 672.139 +		/**
 672.140 +		* Gets the URI part of the address as const
 672.141 +		* @return a reference to the URI object
 672.142 +		*/
 672.143 +		IMPORT_C const CUri8& Uri8() const;
 672.144 +	
 672.145 +		/**
 672.146 +		* Sets the URI part of the address
 672.147 +		* @pre aUri!= 0
 672.148 +		* @param aUri a pointer to the URI object, the ownership is transferred
 672.149 +		*/
 672.150 +		IMPORT_C void SetUri8L(CUri8* aUri8);
 672.151 +
 672.152 +		/**
 672.153 +		* Creates a textual representation and pushes it to CleanupStack
 672.154 +		* @param aUseAngleBrackets if ETrue, sets the anglebrackets
 672.155 +		* @return a textual representation of the object,
 672.156 +		*          the ownership is transferred
 672.157 +		*/
 672.158 +		IMPORT_C HBufC8* ToTextLC(TBool aUseAngleBrackets=EFalse) const;
 672.159 +
 672.160 +		/**
 672.161 +		* Constructs an instance of a CSIPAddress from a RReadStream
 672.162 +		* @param aReadStream a stream containing the externalized object
 672.163 +		* @return an instance of a CSIPAddress
 672.164 +		*/
 672.165 +		IMPORT_C static CSIPAddress* InternalizeL(RReadStream& aReadStream);
 672.166 +	
 672.167 +		/**
 672.168 +		* Writes the object to a RWriteStream
 672.169 +		* @param aWriteStream a stream where the object is to be externalized
 672.170 +		*/
 672.171 +		IMPORT_C void ExternalizeL(RWriteStream& aWriteStream);
 672.172 +
 672.173 +
 672.174 +	public: // For internal use:
 672.175 +
 672.176 +		IMPORT_C CURIContainer& URI();
 672.177 +		IMPORT_C const CURIContainer& URI() const;
 672.178 +		static CSIPAddress* NewLC(CURIContainer* aURI);
 672.179 +		
 672.180 +
 672.181 +	private: // Constructors
 672.182 +	
 672.183 +		CSIPAddress();
 672.184 +		void ConstructL();
 672.185 +		void ConstructL(CUri8* aUri);
 672.186 +		void ConstructL(const TDesC8& aDisplayName, CUri8* aUri);
 672.187 +		void ConstructL(const CSIPAddress& aSIPAddress);
 672.188 +		void ConstructL(CURIContainer* aURI);
 672.189 +
 672.190 +	private: // New functions
 672.191 +
 672.192 +		void DoInternalizeL(RReadStream& aReadStream);
 672.193 +		TInt QuotedStringLength(const TDesC8& aValue);
 672.194 +		TBool CheckDisplayName(const TDesC8& aValue);
 672.195 +		void ParseURIInAngleBracketsL(const TDesC8& aValue);
 672.196 +		void ParseURIL(const TDesC8& aValue);
 672.197 +		TBool ContainsSeparators(const TDesC8& aValue) const;
 672.198 +		TBool HasDisplayName() const;
 672.199 +
 672.200 +	private: // Data
 672.201 +
 672.202 +		HBufC8* iDisplayName;
 672.203 +		CURIContainer* iURI;
 672.204 +
 672.205 +	private: // For testing purposes
 672.206 +	
 672.207 +		UNIT_TEST(CSIPAddressTest)
 672.208 +    };
 672.209 +
 672.210 +#endif // end of __SIP_ADDRESS_H__
 672.211 +
 672.212 +// End of File
   673.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   673.2 +++ b/epoc32/include/mw/sipaddressheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   673.3 @@ -0,0 +1,118 @@
   673.4 +/*
   673.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   673.6 +* All rights reserved.
   673.7 +* This component and the accompanying materials are made available
   673.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   673.9 +* which accompanies this distribution, and is available
  673.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  673.11 +*
  673.12 +* Initial Contributors:
  673.13 +* Nokia Corporation - initial contribution.
  673.14 +*
  673.15 +* Contributors:
  673.16 +*
  673.17 +* Description:
  673.18 +* Name        : sipaddressheaderbase.h
  673.19 +* Part of     : SIP Codec
  673.20 +* Interface   : SDK API, SIP Codec API
  673.21 +* Version     : SIP/4.0 
  673.22 +*
  673.23 +*/
  673.24 +
  673.25 +
  673.26 +
  673.27 +
  673.28 +#ifndef CSIPADDRESSHEADERBASE_H
  673.29 +#define CSIPADDRESSHEADERBASE_H
  673.30 +
  673.31 +//  INCLUDES
  673.32 +#include "sipparameterheaderbase.h"
  673.33 +#include "_sipcodecdefs.h"
  673.34 +
  673.35 +// FORWARD DECLARATIONS
  673.36 +class CSIPAddress;
  673.37 +class CSIPHeaderGenericParams;
  673.38 +
  673.39 +// CLASS DECLARATION
  673.40 +/**
  673.41 +* @publishedAll
  673.42 +* @released
  673.43 +*
  673.44 +* A base class for SIP headers having syntax
  673.45 +* ( name-addr/ addr-spec ) *(generic-param)
  673.46 +*
  673.47 +*  @lib sipcodec.lib
  673.48 +*/
  673.49 +class CSIPAddressHeaderBase : public CSIPParameterHeaderBase
  673.50 +	{
  673.51 +	public:	// Constructors and destructor
  673.52 +
  673.53 +		/**
  673.54 +		* Destructor, deletes the resources of CSIPAddressHeaderBase.
  673.55 +		*/
  673.56 +        IMPORT_C virtual ~CSIPAddressHeaderBase();
  673.57 +
  673.58 +
  673.59 +	public: // New functions
  673.60 +
  673.61 +		/**
  673.62 +		* Sets the name-address
  673.63 +		* @pre aSIPAddress != 0
  673.64 +		* @param aSIPAddress a name-address to set, the ownership is transferred
  673.65 +		*/
  673.66 +		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
  673.67 +
  673.68 +		/**
  673.69 +		* Gets the name-address as const
  673.70 +		* @return name-address object
  673.71 +		*/
  673.72 +		IMPORT_C const CSIPAddress& SIPAddress() const;
  673.73 +
  673.74 +		/**
  673.75 +		* Gets the name-address
  673.76 +		* @return name-address object
  673.77 +		*/
  673.78 +		IMPORT_C CSIPAddress& SIPAddress();
  673.79 +
  673.80 +
  673.81 +	protected: // Constructors
  673.82 +
  673.83 +		CSIPAddressHeaderBase();
  673.84 +        void ConstructL();
  673.85 +		void ConstructL(CSIPAddress* aSIPAddress);
  673.86 +        void ConstructL(const CSIPAddressHeaderBase& aHeader);
  673.87 +
  673.88 +	protected: // Data
  673.89 +
  673.90 +        /**
  673.91 +        * @internalComponent
  673.92 +        */
  673.93 +		CSIPAddress* iSIPAddress;
  673.94 +		
  673.95 +        /**
  673.96 +        * @internalComponent
  673.97 +        */		
  673.98 +		CSIPHeaderGenericParams* iParams;
  673.99 +
 673.100 +	protected: // New functions
 673.101 +
 673.102 +		void DoInternalizeValueL(RReadStream& aReadStream);
 673.103 +
 673.104 +	protected: // From CSIPHeaderBase
 673.105 +
 673.106 +        /**
 673.107 +        * @internalComponent
 673.108 +        */
 673.109 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 673.110 +
 673.111 +	private: // From CSIPParameterHeaderBase
 673.112 +
 673.113 +		HBufC8* ToTextMandatoryPartLC() const;
 673.114 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 673.115 +		const CSIPParamContainerBase& Params() const;
 673.116 +		CSIPParamContainerBase& Params();
 673.117 +	};
 673.118 +
 673.119 +#endif // end of CSIPADDRESSHEADERBASE_H
 673.120 +
 673.121 +// End of File
   674.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   674.2 +++ b/epoc32/include/mw/sipalloweventsheader.h	Wed Mar 31 12:27:01 2010 +0100
   674.3 @@ -0,0 +1,190 @@
   674.4 +/*
   674.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   674.6 +* All rights reserved.
   674.7 +* This component and the accompanying materials are made available
   674.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   674.9 +* which accompanies this distribution, and is available
  674.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  674.11 +*
  674.12 +* Initial Contributors:
  674.13 +* Nokia Corporation - initial contribution.
  674.14 +*
  674.15 +* Contributors:
  674.16 +*
  674.17 +* Description:
  674.18 +* Name        : sipalloweventsheader.h
  674.19 +* Part of     : SIP Codec
  674.20 +* Interface   : SDK API, SIP Codec API
  674.21 +* Version     : SIP/4.0 
  674.22 +*
  674.23 +*/
  674.24 +
  674.25 +
  674.26 +
  674.27 +
  674.28 +#ifndef CSIPALLOWEVENTSHEADER_H
  674.29 +#define CSIPALLOWEVENTSHEADER_H
  674.30 +
  674.31 +//  INCLUDES
  674.32 +#include <badesca.h>
  674.33 +#include "sipheaderbase.h"
  674.34 +#include "_sipcodecdefs.h"
  674.35 +
  674.36 +// CLASS DECLARATION
  674.37 +/**
  674.38 +* @publishedAll
  674.39 +* @released
  674.40 +*
  674.41 +* Class provides functions for setting and getting parameters in 
  674.42 +* SIP "Allow-Events" header.
  674.43 +*
  674.44 +*  @lib sipcodec.lib
  674.45 +*/
  674.46 +class CSIPAllowEventsHeader : public CSIPHeaderBase
  674.47 +	{
  674.48 +	public: // Constructors and destructor
  674.49 +	
  674.50 +		/**
  674.51 +		* Constructs a CSIPAllowEventsHeader from textual representation 
  674.52 +		* of the header's value part.
  674.53 +		* @param aValue a value part of a "Allow-Events"-header
  674.54 +		* @return An array containing one to many instances of 
  674.55 +		*         CSIPAllowEventsHeader  
  674.56 +		*/
  674.57 +		IMPORT_C static RPointerArray<CSIPAllowEventsHeader> 
  674.58 +			DecodeL(const TDesC8& aValue);
  674.59 +
  674.60 +		/**
  674.61 +		* Creates a new instance of CSIPAllowEventsHeader
  674.62 +		* @param aEventPackage a Event-Package value
  674.63 +		* @return a new instance of CSIPAllowEventsHeader
  674.64 +		*/
  674.65 +		IMPORT_C static CSIPAllowEventsHeader* 
  674.66 +			NewL(const TDesC8& aEventPackage);
  674.67 +
  674.68 +		/**
  674.69 +		* Creates a new instance of CSIPAllowEventsHeader and 
  674.70 +		* puts it to CleanupStack
  674.71 +		* @param aEventPackage a Event-Package value
  674.72 +		* @return a new instance of CSIPAllowEventsHeader
  674.73 +		*/
  674.74 +		IMPORT_C static CSIPAllowEventsHeader* NewLC(const TDesC8& aEventPackage);
  674.75 +
  674.76 +		/**
  674.77 +		* Destructor. deletes the resources of CSIPAllowEventsHeader.
  674.78 +		*/
  674.79 +		IMPORT_C ~CSIPAllowEventsHeader();
  674.80 +
  674.81 +	public: // New functions
  674.82 +
  674.83 +		/**
  674.84 +		* Gets the Event-Package parameter from the "Allow-Events" header
  674.85 +		* @return the Event-Package parameter
  674.86 +		*/
  674.87 +		IMPORT_C const TDesC8& EventPackage() const;
  674.88 +
  674.89 +		/**
  674.90 +		* Sets the Event-Package parameter in the "Allow-Events" header; 
  674.91 +		* @param aEventPackage a Event-Package parameter to set
  674.92 +		*/
  674.93 +		IMPORT_C void SetEventPackageL(const TDesC8& aEventPackage);
  674.94 +
  674.95 +		/**
  674.96 +		* Sets the event templates overwriting all the existing ones.
  674.97 +		* @param aEventTemplates
  674.98 +		*/
  674.99 +		IMPORT_C void SetEventTemplatesL(const MDesC8Array& aEventTemplates);
 674.100 +	
 674.101 +		/**
 674.102 +		* Gets the event templates.
 674.103 +		* @return a reference to the currently set event templates.
 674.104 +		*/
 674.105 +
 674.106 +		IMPORT_C const MDesC8Array& EventTemplates() const;
 674.107 +
 674.108 +		/**
 674.109 +		* Constructs an instance of a CSIPAllowEventsHeader from a RReadStream
 674.110 +		* @param aReadStream a stream containing the value of the
 674.111 +		*        externalized object (header name not included). 
 674.112 +		*/
 674.113 +
 674.114 +		IMPORT_C static CSIPHeaderBase* 
 674.115 +			InternalizeValueL(RReadStream& aReadStream);
 674.116 +
 674.117 +
 674.118 +	public: // From CSIPHeaderBase
 674.119 +
 674.120 +		/**
 674.121 +		* From CSIPHeaderBase CloneL
 674.122 +		*/
 674.123 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 674.124 +
 674.125 +		/**
 674.126 +		* From CSIPHeaderBase Name
 674.127 +		*/
 674.128 +		IMPORT_C RStringF Name() const;
 674.129 +
 674.130 +		/**
 674.131 +		* From CSIPHeaderBase ToTextValueL
 674.132 +		*/
 674.133 +		IMPORT_C HBufC8* ToTextValueL() const;
 674.134 +
 674.135 +
 674.136 +	public: // New functions, for internal use
 674.137 +
 674.138 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 674.139 +
 674.140 +	public: // From CSIPHeaderBase, for internal use 
 674.141 +
 674.142 +        /**
 674.143 +        * @internalComponent
 674.144 +        */	
 674.145 +		TBool MoreThanOneAllowed() const;
 674.146 +		
 674.147 +        /**
 674.148 +        * @internalComponent
 674.149 +        */		
 674.150 +		TBool HasCompactName() const;
 674.151 +		
 674.152 +        /**
 674.153 +        * @internalComponent
 674.154 +        */		
 674.155 +		RStringF CompactName() const;
 674.156 +		
 674.157 +        /**
 674.158 +        * @internalComponent
 674.159 +        */		
 674.160 +		TPreferredPlace PreferredPlaceInMessage() const;
 674.161 +
 674.162 +	private: // From CSIPHeaderBase
 674.163 +
 674.164 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 674.165 +
 674.166 +	private: // Contructors
 674.167 +
 674.168 +		CSIPAllowEventsHeader();
 674.169 +		void ConstructL();
 674.170 +		void ConstructL(const TDesC8& aEventPackage);
 674.171 +		void ConstructL (const CSIPAllowEventsHeader& aSIPAllowEventsHeader);
 674.172 +
 674.173 +	private: // New functions
 674.174 +
 674.175 +		void DoInternalizeValueL(RReadStream& aReadStream);
 674.176 +		void ParseL(const TDesC8& aValue);
 674.177 +		void CheckTemplateL(const TDesC8& aParam) const;
 674.178 +		// Needed for cleanup of a RPointerArray<HBufC8>:
 674.179 +		static void ResetAndDestroy(TAny* anArray);
 674.180 +
 674.181 +	private: // Data
 674.182 +
 674.183 +		HBufC8* iEventPackage;
 674.184 +		CDesC8ArraySeg* iEventTemplates;
 674.185 +
 674.186 +	private: // For testing purposes
 674.187 +	
 674.188 +		UNIT_TEST(CSIPAllowEventsHeaderTest)
 674.189 +	};
 674.190 +
 674.191 +#endif // CSIPALLOWEVENTSHEADER_H
 674.192 +
 674.193 +// End of File
   675.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   675.2 +++ b/epoc32/include/mw/sipallowheader.h	Wed Mar 31 12:27:01 2010 +0100
   675.3 @@ -0,0 +1,119 @@
   675.4 +/*
   675.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   675.6 +* All rights reserved.
   675.7 +* This component and the accompanying materials are made available
   675.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   675.9 +* which accompanies this distribution, and is available
  675.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  675.11 +*
  675.12 +* Initial Contributors:
  675.13 +* Nokia Corporation - initial contribution.
  675.14 +*
  675.15 +* Contributors:
  675.16 +*
  675.17 +* Description:
  675.18 +* Name        : sipallowheader.h
  675.19 +* Part of     : SIP Codec
  675.20 +* Interface   : SDK API, SIP Codec API
  675.21 +* Version     : SIP/4.0 
  675.22 +*
  675.23 +*/
  675.24 +
  675.25 +
  675.26 +
  675.27 +
  675.28 +#ifndef CSIPALLOWHEADER_H
  675.29 +#define CSIPALLOWHEADER_H
  675.30 +
  675.31 +//  INCLUDES
  675.32 +#include "siptokenheaderbase.h"
  675.33 +#include "_sipcodecdefs.h"
  675.34 +
  675.35 +// CLASS DECLARATION
  675.36 +/**
  675.37 +* @publishedAll
  675.38 +* @released
  675.39 +*
  675.40 +* Class provides functions for setting and getting parameters 
  675.41 +* in SIP "Allow" header.
  675.42 +*
  675.43 +*  @lib sipcodec.lib
  675.44 +*/
  675.45 +class CSIPAllowHeader : public CSIPTokenHeaderBase
  675.46 +	{
  675.47 +	public:	// Constructors and destructor
  675.48 +
  675.49 +		/**
  675.50 +		* Constructs a CSIPAllowHeader from textual representation 
  675.51 +		* of the header's value part.
  675.52 +		* @param aValue a value part of a "Allow"-header
  675.53 +		* @return an array containing one to many instances of CSIPAllowHeader
  675.54 +		*/
  675.55 +		IMPORT_C static RPointerArray<CSIPAllowHeader> 
  675.56 +			DecodeL(const TDesC8& aValue);
  675.57 +
  675.58 +		/**
  675.59 +		* Creates a new instance of CSIPAllowHeader
  675.60 +		* @param aValue a value 
  675.61 +		* @return a new instance of CSIPAllowHeader
  675.62 +		*/
  675.63 +		IMPORT_C static CSIPAllowHeader* NewL(RStringF aValue);
  675.64 +
  675.65 +		/**
  675.66 +		* Creates a new instance of CSIPAllowHeader and puts it to CleanupStack
  675.67 +		* @param aValue a value   
  675.68 +		* @return a new instance of CSIPAllowHeader
  675.69 +		*/
  675.70 +		IMPORT_C static CSIPAllowHeader* NewLC(RStringF aValue);
  675.71 +
  675.72 +		/**
  675.73 +		* Destructor, deletes the resources of CSIPAllowHeader.
  675.74 +		*/
  675.75 +		IMPORT_C ~CSIPAllowHeader();
  675.76 +
  675.77 +
  675.78 +	public: // New functions
  675.79 +
  675.80 +		/**
  675.81 +		* Constructs an instance of a CSIPAllowHeader from a RReadStream
  675.82 +		* @param aReadStream a stream containing the value of the
  675.83 +		*        externalized object (header name not included). 
  675.84 +		* @return an instance of a CSIPAllowHeader
  675.85 +		*/
  675.86 +		IMPORT_C static CSIPHeaderBase* 
  675.87 +			InternalizeValueL(RReadStream& aReadStream);
  675.88 +
  675.89 +
  675.90 +	public: // From CSIPHeaderBase
  675.91 +		
  675.92 +		/**
  675.93 +		* From CSIPHeaderBase CloneL
  675.94 +		*/
  675.95 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  675.96 +
  675.97 +		/**
  675.98 +		* From CSIPHeaderBase Name
  675.99 +		*/
 675.100 +		IMPORT_C RStringF Name() const;
 675.101 +
 675.102 +
 675.103 +	public: // From CSIPHeaderBase, for internal use
 675.104 +
 675.105 +        /**
 675.106 +        * @internalComponent
 675.107 +        */
 675.108 +		TPreferredPlace PreferredPlaceInMessage() const;
 675.109 +
 675.110 +	public: // New functions, for internal use
 675.111 +
 675.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 675.113 +
 675.114 +	private: // Constructors
 675.115 +
 675.116 +		CSIPAllowHeader();
 675.117 +		CSIPAllowHeader(const CSIPAllowHeader& aHeader);
 675.118 +	};
 675.119 +
 675.120 +#endif // CSIPALLOWHEADER_H
 675.121 +
 675.122 +// End of File
   676.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   676.2 +++ b/epoc32/include/mw/sipauthenticateheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   676.3 @@ -0,0 +1,94 @@
   676.4 +/*
   676.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   676.6 +* All rights reserved.
   676.7 +* This component and the accompanying materials are made available
   676.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   676.9 +* which accompanies this distribution, and is available
  676.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  676.11 +*
  676.12 +* Initial Contributors:
  676.13 +* Nokia Corporation - initial contribution.
  676.14 +*
  676.15 +* Contributors:
  676.16 +*
  676.17 +* Description:
  676.18 +* Name          : sipauthenticateheaderbase.h
  676.19 +* Part of       : SIP Codec
  676.20 +* Version       : SIP/5.0 
  676.21 +*
  676.22 +*/
  676.23 +
  676.24 +
  676.25 +
  676.26 +#ifndef CSIPAUTHENTICATEHEADERBASE_H
  676.27 +#define CSIPAUTHENTICATEHEADERBASE_H
  676.28 +
  676.29 +//  INCLUDES
  676.30 +#include "sipauthheaderbase.h"
  676.31 +#include "_sipcodecdefs.h"
  676.32 +
  676.33 +// FORWARD DECLARATIONS
  676.34 +class CSIPAuthenticateHeaderParams;
  676.35 +
  676.36 +// CLASS DECLARATION
  676.37 +/**
  676.38 +* @publishedAll
  676.39 +* @released
  676.40 +*
  676.41 +* A base class for SIP Proxy-Authenticate- and WWW-Authenticate-headers
  676.42 +*
  676.43 +* @lib sipcodec.lib
  676.44 +*/
  676.45 +class CSIPAuthenticateHeaderBase : public CSIPAuthHeaderBase
  676.46 +	{
  676.47 +	public: // Constructors and destructor
  676.48 +
  676.49 +		/**
  676.50 +		* Destructor.
  676.51 +		*/
  676.52 +		IMPORT_C virtual ~CSIPAuthenticateHeaderBase();
  676.53 +
  676.54 +
  676.55 +	public: // New functions
  676.56 +
  676.57 +		/**
  676.58 +		* Check whether a qop-value in qop-options is present. 
  676.59 +		* @param aQopValue the qop-value
  676.60 +		* @return ETrue if present, otherwise EFalse. 
  676.61 +		*/
  676.62 +		IMPORT_C TBool HasQopValueL(const TDesC8& aQopValue) const;
  676.63 +
  676.64 +	public: // From CSIPHeaderBase
  676.65 +
  676.66 +		/**
  676.67 +		* From CSIPHeaderBase ExternalizeSupported
  676.68 +		*/
  676.69 +		IMPORT_C virtual TBool ExternalizeSupported() const;
  676.70 +		
  676.71 +	protected: // Constructors
  676.72 +
  676.73 +		CSIPAuthenticateHeaderBase();
  676.74 +		void ConstructL();
  676.75 +		void ConstructL(const CSIPAuthenticateHeaderBase& aHeader);
  676.76 +
  676.77 +	protected: // From CSIPHeaderBase
  676.78 +
  676.79 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
  676.80 +
  676.81 +	protected: // From CSIPAuthBase
  676.82 +
  676.83 +		const CSIPParamContainerBase& Params() const;
  676.84 +		CSIPParamContainerBase& Params();
  676.85 +
  676.86 +	protected: // New functions
  676.87 +
  676.88 +		void DoInternalizeValueL(RReadStream& aReadStream);
  676.89 +
  676.90 +	protected: // Data
  676.91 +
  676.92 +		CSIPAuthenticateHeaderParams* iParams;
  676.93 +	};
  676.94 +
  676.95 +#endif // CSIPAUTHENTICATEHEADERBASE_H
  676.96 +
  676.97 +// End of File
   677.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   677.2 +++ b/epoc32/include/mw/sipauthheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   677.3 @@ -0,0 +1,165 @@
   677.4 +/*
   677.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   677.6 +* All rights reserved.
   677.7 +* This component and the accompanying materials are made available
   677.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   677.9 +* which accompanies this distribution, and is available
  677.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  677.11 +*
  677.12 +* Initial Contributors:
  677.13 +* Nokia Corporation - initial contribution.
  677.14 +*
  677.15 +* Contributors:
  677.16 +*
  677.17 +* Description:
  677.18 +* Name          : sipauthheaderbase.h
  677.19 +* Part of       : SIP Codec
  677.20 +* Version       : SIP/5.0 
  677.21 +*
  677.22 +*/
  677.23 +
  677.24 +
  677.25 +
  677.26 +#ifndef CSIPAUTHHEADERBASE_H
  677.27 +#define CSIPAUTHHEADERBASE_H
  677.28 +
  677.29 +//  INCLUDES
  677.30 +#include "sipheaderbase.h"
  677.31 +#include "_sipcodecdefs.h"
  677.32 +
  677.33 +// FORWARD DECLARATIONS
  677.34 +class CSIPParamContainerBase;
  677.35 +
  677.36 +// CLASS DECLARATION
  677.37 +/**
  677.38 +* @publishedAll
  677.39 +* @released
  677.40 +*
  677.41 +* A base class for SIP Authorization-, Proxy-Authenticate-, 
  677.42 +* Proxy-Authorization- and WWW-Authenticate-headers
  677.43 +*
  677.44 +* @lib sipcodec.lib
  677.45 +*/
  677.46 +class CSIPAuthHeaderBase : public CSIPHeaderBase
  677.47 +	{
  677.48 +	public: // Constructors and destructor
  677.49 +
  677.50 +		/**
  677.51 +		* Destructor.
  677.52 +		*/
  677.53 +		IMPORT_C virtual ~CSIPAuthHeaderBase();
  677.54 +
  677.55 +
  677.56 +	public:	// New functions
  677.57 +
  677.58 +		/**
  677.59 +		* @return the value of the auth-scheme
  677.60 +		*/
  677.61 +		IMPORT_C RStringF AuthScheme() const;
  677.62 +
  677.63 +		/**
  677.64 +		* Checks if a parameter is present
  677.65 +		* @param aName the name of the parameter
  677.66 +		* @return ETrue if present, otherwise EFalse
  677.67 +		*/
  677.68 +		IMPORT_C TBool HasParam(RStringF aName) const;
  677.69 +
  677.70 +		/**
  677.71 +		* Gets a parameter value
  677.72 +		* @pre HasParam(aName) == ETrue
  677.73 +		* @param aName the name of the parameter
  677.74 +		* @return the parameter value if present,
  677.75 +		*         otherwise a zero-length length value.
  677.76 +		*/
  677.77 +		IMPORT_C RStringF ParamValue(RStringF aName) const;
  677.78 +
  677.79 +		/**
  677.80 +		* Gets a parameter value stored as a descriptor
  677.81 +		* @pre HasParam(aName) == ETrue
  677.82 +		* @param aName the name of the parameter
  677.83 +		* @return the parameter value if present,
  677.84 +		*         otherwise a zero-length length value.
  677.85 +		*/
  677.86 +		IMPORT_C const TDesC8& DesParamValue(RStringF aName) const;
  677.87 +
  677.88 +		/**
  677.89 +		* Sets a parameter with a value. 
  677.90 +		* Takes copies of the name and value,
  677.91 +		* so if the RStringFs have been dynamically allocated,
  677.92 +		* they can be closed if necessary after the function returns.
  677.93 +		* @pre HasParam(aName) == EFalse
  677.94 +		* @param aName the name of the parameter
  677.95 +		* @param aValue the parameter value to set
  677.96 +		*/
  677.97 +		IMPORT_C void SetParamL(RStringF aName, RStringF aValue);
  677.98 +
  677.99 +		/**
 677.100 +		* Sets a parameter with a value. 
 677.101 +		* Takes copies of the name 
 677.102 +		* so if the RStringF have been dynamically allocated,
 677.103 +		* they can be closed if necessary after the function returns.
 677.104 +		* Stores the parameter value as a descriptor, so that the 
 677.105 +		* case-sensitivity is not lost in RStringF-descriptor conversions. 
 677.106 +		* @pre HasParam(aName) == EFalse
 677.107 +		* @param aName the name of the parameter
 677.108 +		* @param aValue the parameter value to set
 677.109 +		*/
 677.110 +		IMPORT_C void SetDesParamL(RStringF aName, const TDesC8& aValue);
 677.111 +
 677.112 +		/**
 677.113 +		* Sets a parameter with a value and adds double quotes 
 677.114 +		* as the first and the last character in the value.
 677.115 +		* Takes copy of the name,
 677.116 +		* so if the RStringF has been dynamically allocated,
 677.117 +		* it can be closed if necessary after the function returns.
 677.118 +		* @pre HasParam(aName) == EFalse
 677.119 +		* @param aName the name of the parameter
 677.120 +		* @param aValue the parameter value 
 677.121 +		*        to which the double quotes will be added
 677.122 +		*/
 677.123 +		IMPORT_C void SetParamAndAddQuotesL(RStringF aName,
 677.124 +			                                const TDesC8& aValue);
 677.125 +
 677.126 +		/**
 677.127 +		* Deletes a parameter
 677.128 +		* @param aName the parameter name to delete
 677.129 +		*/
 677.130 +		IMPORT_C void DeleteParam(RStringF aName);
 677.131 +
 677.132 +
 677.133 +	public: // From CSIPHeaderBase
 677.134 +
 677.135 +		/**
 677.136 +		* From CSIPHeaderBase ExternalizeSupported
 677.137 +		*/
 677.138 +		IMPORT_C virtual TBool ExternalizeSupported() const;
 677.139 +
 677.140 +
 677.141 +	public: // From CSIPHeaderBase, for internal use
 677.142 +
 677.143 +		TBool EncodeMultipleToOneLine() const;
 677.144 +		TBool MoreThanOneAllowed() const;
 677.145 +		TPreferredPlace PreferredPlaceInMessage() const;
 677.146 +        virtual HBufC8* ToTextValueL() const;
 677.147 +
 677.148 +	protected: // Constructors
 677.149 +
 677.150 +		CSIPAuthHeaderBase();
 677.151 +		void ConstructL(RStringF aAuthScheme);
 677.152 +
 677.153 +	protected: // New functions
 677.154 +
 677.155 +		void SetAuthSchemeL(const TDesC8& aAuthScheme);
 677.156 +        void ParseL(const TDesC8& aValue);
 677.157 +        virtual const CSIPParamContainerBase& Params() const = 0;
 677.158 +        virtual CSIPParamContainerBase& Params() = 0;
 677.159 +
 677.160 +	private: // Data
 677.161 +
 677.162 +		RStringF iAuthScheme;
 677.163 +        TChar iSeparator;
 677.164 +	};
 677.165 +
 677.166 +#endif // CSIPAUTHHEADERBASE_H
 677.167 +
 677.168 +// End of File
   678.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   678.2 +++ b/epoc32/include/mw/sipauthorizationheader.h	Wed Mar 31 12:27:01 2010 +0100
   678.3 @@ -0,0 +1,131 @@
   678.4 +/*
   678.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   678.6 +* All rights reserved.
   678.7 +* This component and the accompanying materials are made available
   678.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   678.9 +* which accompanies this distribution, and is available
  678.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  678.11 +*
  678.12 +* Initial Contributors:
  678.13 +* Nokia Corporation - initial contribution.
  678.14 +*
  678.15 +* Contributors:
  678.16 +*
  678.17 +* Description:
  678.18 +* Name          : sipauthorizationheader.h
  678.19 +* Part of       : SIP Codec
  678.20 +* Version       : SIP/6.0 
  678.21 +*
  678.22 +*/
  678.23 +
  678.24 +
  678.25 +
  678.26 +#ifndef CSIPAUTHORIZATIONHEADER_H
  678.27 +#define CSIPAUTHORIZATIONHEADER_H
  678.28 +
  678.29 +//  INCLUDES
  678.30 +#include "sipauthorizationheaderbase.h"
  678.31 +#include "_sipcodecdefs.h"
  678.32 +
  678.33 +// CLASS DECLARATION
  678.34 +/**
  678.35 +* @publishedAll
  678.36 +* @released
  678.37 +*
  678.38 +* Class for SIP Authorization-header manipulation.
  678.39 +* @lib sipcodec.lib
  678.40 +*/
  678.41 +class CSIPAuthorizationHeader : public CSIPAuthorizationHeaderBase
  678.42 +	{
  678.43 +	public:	// Constructors and destructor
  678.44 +
  678.45 +		/**
  678.46 +		* Constructs a CSIPAuthorizationHeader 
  678.47 +		* from textual representation of the header's value part.
  678.48 +		* @param aValue a value part of a "Proxy-Authenticate"-header 
  678.49 +		* @return a new instance of CSIPAuthorizationHeader
  678.50 +		*/
  678.51 +		IMPORT_C static CSIPAuthorizationHeader* 
  678.52 +			DecodeL(const TDesC8& aValue);
  678.53 +
  678.54 +		/**
  678.55 +		* Creates a new instance of CSIPAuthorizationHeader
  678.56 +		* @return a new instance of CSIPAuthorizationHeader
  678.57 +		*/
  678.58 +		IMPORT_C static CSIPAuthorizationHeader* 
  678.59 +			NewL(RStringF aAuthScheme);
  678.60 +
  678.61 +		/**
  678.62 +		* Creates a new instance of CSIPAuthorizationHeader
  678.63 +		* @return a new instance of CSIPAuthorizationHeader
  678.64 +		*/
  678.65 +		IMPORT_C static CSIPAuthorizationHeader* 
  678.66 +			NewLC(RStringF aAuthScheme);
  678.67 +
  678.68 +		/**
  678.69 +		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  678.70 +		* @param aAuthenticateHeaderBase to be copied
  678.71 +		* @return a new instance of CSIPAuthorizationHeader
  678.72 +		*/
  678.73 +		IMPORT_C static CSIPAuthorizationHeader* 
  678.74 +			NewL(const CSIPAuthorizationHeaderBase& aHeader);
  678.75 +
  678.76 +		/**
  678.77 +		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  678.78 +		* @param aAuthenticateHeaderBase to be copied
  678.79 +		* @return a new instance of CSIPAuthorizationHeader
  678.80 +		*/
  678.81 +		IMPORT_C static CSIPAuthorizationHeader* 
  678.82 +			NewLC(const CSIPAuthorizationHeaderBase& aHeader);
  678.83 +
  678.84 +		/**
  678.85 +		* Destructor
  678.86 +		*/
  678.87 +		IMPORT_C ~CSIPAuthorizationHeader();
  678.88 +
  678.89 +	public: // From CSIPHeaderBase
  678.90 +
  678.91 +		/**
  678.92 +		* From CSIPHeaderBase ExternalizeSupported
  678.93 +		*/
  678.94 +		IMPORT_C TBool ExternalizeSupported() const;
  678.95 +
  678.96 +		/**
  678.97 +		* From CSIPHeaderBase CloneL
  678.98 +		*/
  678.99 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 678.100 +		
 678.101 +		/**
 678.102 +		* From CSIPHeaderBase Name
 678.103 +		*/		
 678.104 +		IMPORT_C RStringF Name() const;
 678.105 +
 678.106 +
 678.107 +	public: // New functions, for internal use
 678.108 +
 678.109 +        /**
 678.110 +        * @internalComponent
 678.111 +        */
 678.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 678.113 +		
 678.114 +        /**
 678.115 +        * @internalComponent
 678.116 +        */		
 678.117 +		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
 678.118 +
 678.119 +	private: // Constructors
 678.120 +
 678.121 +		CSIPAuthorizationHeader();
 678.122 +
 678.123 +	private: // From CSIPHeaderBase
 678.124 +
 678.125 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 678.126 +
 678.127 +    private: // For testing purposes
 678.128 +
 678.129 +        UNIT_TEST(CSIPAuthorizationHeaderTest)
 678.130 +	};
 678.131 +
 678.132 +#endif // CSIPAUTHORIZATIONHEADER_H
 678.133 +
 678.134 +// End of File
   679.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   679.2 +++ b/epoc32/include/mw/sipauthorizationheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   679.3 @@ -0,0 +1,72 @@
   679.4 +/*
   679.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   679.6 +* All rights reserved.
   679.7 +* This component and the accompanying materials are made available
   679.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   679.9 +* which accompanies this distribution, and is available
  679.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  679.11 +*
  679.12 +* Initial Contributors:
  679.13 +* Nokia Corporation - initial contribution.
  679.14 +*
  679.15 +* Contributors:
  679.16 +*
  679.17 +* Description:
  679.18 +* Name          : sipauthorizationheaderbase.h
  679.19 +* Part of       : SIP Codec
  679.20 +* Version       : SIP/6.0 
  679.21 +*
  679.22 +*/
  679.23 +
  679.24 +
  679.25 +
  679.26 +#ifndef CSIPAUTHORIZATIONHEADERBASE_H
  679.27 +#define CSIPAUTHORIZATIONHEADERBASE_H
  679.28 +
  679.29 +//  INCLUDES
  679.30 +#include "sipauthheaderbase.h"
  679.31 +#include "_sipcodecdefs.h"
  679.32 +
  679.33 +// FORWARD DECLARATIONS
  679.34 +class CSIPAuthorizationHeaderParams;
  679.35 +
  679.36 +// CLASS DECLARATION
  679.37 +/**
  679.38 +* @publishedAll
  679.39 +* @released
  679.40 +*
  679.41 +* A base class for SIP Authorization- and Proxy-Authorization-headers
  679.42 +* @lib sipcodec.lib
  679.43 +*/
  679.44 +class CSIPAuthorizationHeaderBase : public CSIPAuthHeaderBase
  679.45 +	{
  679.46 +	public: // Constructors and destructor
  679.47 +
  679.48 +		/**
  679.49 +		* Destructor.
  679.50 +		*/
  679.51 +		IMPORT_C virtual ~CSIPAuthorizationHeaderBase();
  679.52 +
  679.53 +	protected: // Constructors
  679.54 +
  679.55 +		CSIPAuthorizationHeaderBase();
  679.56 +		void ConstructL();
  679.57 +		void ConstructL(const CSIPAuthorizationHeaderBase& aHeader);
  679.58 +
  679.59 +	protected: // From CSIPAuthHeaderBase
  679.60 +
  679.61 +		const CSIPParamContainerBase& Params() const;
  679.62 +		CSIPParamContainerBase& Params();
  679.63 +
  679.64 +    protected: // New functions
  679.65 +
  679.66 +		void DoInternalizeValueL(RReadStream& aReadStream);
  679.67 +
  679.68 +    protected: // Data
  679.69 +
  679.70 +		CSIPAuthorizationHeaderParams* iParams;
  679.71 +	};
  679.72 +
  679.73 +#endif // CSIPAUTHORIZATIONHEADERBASE_H
  679.74 +
  679.75 +// End of File
   680.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   680.2 +++ b/epoc32/include/mw/sipcallidheader.h	Wed Mar 31 12:27:01 2010 +0100
   680.3 @@ -0,0 +1,140 @@
   680.4 +/*
   680.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   680.6 +* All rights reserved.
   680.7 +* This component and the accompanying materials are made available
   680.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   680.9 +* which accompanies this distribution, and is available
  680.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  680.11 +*
  680.12 +* Initial Contributors:
  680.13 +* Nokia Corporation - initial contribution.
  680.14 +*
  680.15 +* Contributors:
  680.16 +*
  680.17 +* Description:
  680.18 +* Name          : sipcallidheader.h
  680.19 +* Part of       : SIP Codec
  680.20 +* Version       : SIP/4.0 
  680.21 +*
  680.22 +*/
  680.23 +
  680.24 +
  680.25 +
  680.26 +
  680.27 +#ifndef CSIPCALLIDHEADER_H
  680.28 +#define CSIPCALLIDHEADER_H
  680.29 +
  680.30 +//  INCLUDES
  680.31 +#include "sipheaderbase.h"
  680.32 +#include "_sipcodecdefs.h"
  680.33 +
  680.34 +// CLASS DECLARATION
  680.35 +/**
  680.36 +* @publishedAll
  680.37 +* @released
  680.38 +*
  680.39 +* Class for a SIP Call-ID header.
  680.40 +*
  680.41 +* @lib sipcodec.lib
  680.42 +*/
  680.43 +class CSIPCallIDHeader : public CSIPHeaderBase
  680.44 +	{
  680.45 +	public:	// Constructors and destructor
  680.46 +
  680.47 +		/**
  680.48 +		* Constructs a CSIPCallIDHeader from textual representation 
  680.49 +		* of the header's value part.
  680.50 +		* @param aValue a value part of a "Call-ID"-header (e.g. "ab2x@zb7y")
  680.51 +		* @returns a new instance of CSIPCallIDHeader
  680.52 +		*/
  680.53 +		IMPORT_C static CSIPCallIDHeader* DecodeL(const TDesC8& aValue);
  680.54 +
  680.55 +		/**
  680.56 +		* Destructor
  680.57 +		*/
  680.58 +		IMPORT_C ~CSIPCallIDHeader ();
  680.59 +
  680.60 +
  680.61 +	public: // New functions
  680.62 +
  680.63 +		/**
  680.64 +		* Compares this instance to another "Call-ID" header object
  680.65 +		* @param aCallIDHeader a header to compare to
  680.66 +		* @returns ETrue if "Call-ID" headers are similar
  680.67 +		*/
  680.68 +		IMPORT_C TBool operator==(const CSIPCallIDHeader& aCallIDHeader);
  680.69 +		
  680.70 +		/**
  680.71 +		* Constructs an instance of a CSIPCallIDHeader from a RReadStream
  680.72 +		* @param aReadStream a stream containing the value of the
  680.73 +		*	     externalized object (header name not included). 
  680.74 +		* @return an instance of a CSIPCallIDHeader
  680.75 +		*/
  680.76 +		IMPORT_C static CSIPHeaderBase* 
  680.77 +			InternalizeValueL(RReadStream& aReadStream);		
  680.78 +
  680.79 +
  680.80 +	public: // From CSIPHeaderBase
  680.81 +
  680.82 +		/**
  680.83 +		* From CSIPHeaderBase CloneL
  680.84 +		*/
  680.85 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  680.86 +		
  680.87 +		/**
  680.88 +		* From CSIPHeaderBase Name
  680.89 +		*/		
  680.90 +		IMPORT_C RStringF Name() const;
  680.91 +
  680.92 +		/**
  680.93 +		* From CSIPHeaderBase ToTextValueL
  680.94 +		*/
  680.95 +		IMPORT_C HBufC8* ToTextValueL() const;
  680.96 +		
  680.97 +
  680.98 +	public: // From CSIPHeaderBase, for internal use
  680.99 +        
 680.100 +        /**
 680.101 +        * @internalComponent
 680.102 +        */	
 680.103 +		TBool HasCompactName() const;
 680.104 +
 680.105 +        /**
 680.106 +        * @internalComponent
 680.107 +        */		
 680.108 +		RStringF CompactName() const;
 680.109 +		
 680.110 +        /**
 680.111 +        * @internalComponent
 680.112 +        */		
 680.113 +		TPreferredPlace PreferredPlaceInMessage() const;
 680.114 +
 680.115 +	public: // New functions, for internal use
 680.116 +
 680.117 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 680.118 +
 680.119 +	private: // From CSIPHeaderBase
 680.120 +
 680.121 +		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 680.122 +
 680.123 +	private: // Constructors
 680.124 +
 680.125 +		CSIPCallIDHeader();
 680.126 +
 680.127 +	private: // New functions
 680.128 +
 680.129 +		void ParseL(const TDesC8& aValue);
 680.130 +
 680.131 +	private: // Data
 680.132 +
 680.133 +		HBufC8* iCallID;
 680.134 +
 680.135 +	private: // For testing purposes
 680.136 +	
 680.137 +		UNIT_TEST(CSIPCallIDHeaderTest)
 680.138 +	};
 680.139 +
 680.140 +
 680.141 +#endif // end of CSIPCALLIDHEADER_H
 680.142 +
 680.143 +// End of File
   681.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   681.2 +++ b/epoc32/include/mw/sipclientresolverconfigcrkeys.h	Wed Mar 31 12:27:01 2010 +0100
   681.3 @@ -0,0 +1,67 @@
   681.4 +/*
   681.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   681.6 +* All rights reserved.
   681.7 +* This component and the accompanying materials are made available
   681.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   681.9 +* which accompanies this distribution, and is available
  681.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  681.11 +*
  681.12 +* Initial Contributors:
  681.13 +* Nokia Corporation - initial contribution.
  681.14 +*
  681.15 +* Contributors:
  681.16 +*
  681.17 +* Description:
  681.18 +* Name        : sipclientresolverconfigcrkeys.h
  681.19 +* Part of     : SIP / SIP Client Resolver
  681.20 +* Interface   : SIP Client Resolver API
  681.21 +* Version     : 1.0
  681.22 +*
  681.23 +*/
  681.24 +
  681.25 +
  681.26 +
  681.27 +#ifndef SIPCLIENTRESOLVERCONFIGCRKEYS_H
  681.28 +#define SIPCLIENTRESOLVERCONFIGCRKEYS_H
  681.29 +
  681.30 +// INCLUDES
  681.31 +#include <e32def.h>
  681.32 +
  681.33 +/**
  681.34 +* @file
  681.35 +* @publishedAll
  681.36 +* @released
  681.37 +*/
  681.38 +
  681.39 +/// Defines configuration parameters used by SIP Client Resolver
  681.40 +const TUid KCRUidSIPClientResolverConfig = { 0x10282EE7 };
  681.41 +
  681.42 +/// Mask for the less significant bits in setting keys.
  681.43 +/// These bits are reserved for field type information.
  681.44 +const TUint32 KSIPClientResolverFieldTypeMask = 0xf0000000;
  681.45 +
  681.46 +/// Mask for the most significant bits in setting keys.
  681.47 +/// These bits are reserved for the actual key part.
  681.48 +const TUint32 KSIPClientResolverKeyMask = 0x0fffffff;
  681.49 +
  681.50 +/** 
  681.51 +* Mask for username field.
  681.52 +* Field type is TDesC8.
  681.53 +*/
  681.54 +const TUint32 KSIPClientResolverUserNameMask = 0x10000000;
  681.55 +
  681.56 +/** 
  681.57 +* Mask for plug-in implementation UID field.
  681.58 +* Field type is TInt32.
  681.59 +*/
  681.60 +const TUint32 KSIPClientResolverPluginUIDMask = 0x20000000;
  681.61 +
  681.62 +/** 
  681.63 +* Mask for client UID field.
  681.64 +* Field type is TInt32.
  681.65 +*/
  681.66 +const TUint32 KSIPClientResolverClientUIDMask = 0x30000000;
  681.67 +
  681.68 +#endif // SIPCLIENTRESOLVERCONFIGCRKEYS_H
  681.69 +
  681.70 +// End of File
   682.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   682.2 +++ b/epoc32/include/mw/sipclienttransaction.h	Wed Mar 31 12:27:01 2010 +0100
   682.3 @@ -0,0 +1,173 @@
   682.4 +/*
   682.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   682.6 +* All rights reserved.
   682.7 +* This component and the accompanying materials are made available
   682.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   682.9 +* which accompanies this distribution, and is available
  682.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  682.11 +*
  682.12 +* Initial Contributors:
  682.13 +* Nokia Corporation - initial contribution.
  682.14 +*
  682.15 +* Contributors:
  682.16 +*
  682.17 +* Description:
  682.18 +* Name        : sipclienttransaction.h
  682.19 +* Part of     : SIP Client
  682.20 +* Interface   :
  682.21 +* Version     : 1.0
  682.22 +*
  682.23 +*/
  682.24 +
  682.25 +
  682.26 +
  682.27 +
  682.28 +#ifndef CSIPCLIENTTRANSACTION_H
  682.29 +#define CSIPCLIENTTRANSACTION_H
  682.30 +
  682.31 +// INCLUDES
  682.32 +#include "siptransactionbase.h"
  682.33 +
  682.34 +// FORWARD DECLARATIONS
  682.35 +class CSIPRefresh;
  682.36 +
  682.37 +// CLASS DECLARATION
  682.38 +
  682.39 +/**
  682.40 +*  @publishedAll
  682.41 +*  @released
  682.42 +*
  682.43 +*  Class for managing SIP client transactions.
  682.44 +*  It provides services for ending and getting the SIP client transaction
  682.45 +*  parameters. Some client transactions can also be canceled.
  682.46 +*
  682.47 +*  The user of the class cannot instante this class.
  682.48 +*  @lib sipclient
  682.49 +*/
  682.50 +class CSIPClientTransaction: public CSIPTransactionBase
  682.51 +	{
  682.52 +	public: // Destructor
  682.53 +
  682.54 +        /**
  682.55 +        * Destructor
  682.56 +		*/
  682.57 +		IMPORT_C ~CSIPClientTransaction();
  682.58 +
  682.59 +	public: // New functions
  682.60 +
  682.61 +        /**
  682.62 +        * Gets response elements of the most recent response.
  682.63 +        * @return Response elements. Ownership isn't transferred.
  682.64 +        */
  682.65 +		IMPORT_C const CSIPResponseElements* ResponseElements() const;
  682.66 +
  682.67 +        /**
  682.68 +		* Cancels client transaction i.e. creates a CANCEL request and sends it
  682.69 +		* to the remote UA.		
  682.70 +		* @pre State()==EProceeding
  682.71 +		* @pre CancelAllowed()==ETrue
  682.72 +		* @pre Connection().State()==EActive
  682.73 +		* @return SIP CANCEL transaction, ownership is transferred.		
  682.74 +		* @leave KErrSIPInvalidTransactionState if canceling is not possible
  682.75 +		*	at all, or because the transaction is not in a proper state or the
  682.76 +        *   transaction is not related to a dialog.
  682.77 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  682.78 +		*	object has been deleted
  682.79 +		* @capability NetworkServices
  682.80 +		*/
  682.81 +		IMPORT_C CSIPClientTransaction* CancelL();
  682.82 +
  682.83 +		/**
  682.84 +		* Gets the associated refresh with the transaction.
  682.85 +		* If the refresh is associated with the transaction,
  682.86 +		* transaction will be refreshed at defined interval.
  682.87 +		* @return associated refresh or 0-pointer if there's no
  682.88 +		*         associated refresh. Ownership isn't transferred.
  682.89 +		*/
  682.90 +		IMPORT_C const CSIPRefresh* Refresh() const;
  682.91 +
  682.92 +        /**
  682.93 +		* Checks if the client transaction is such that it can be cancelled.
  682.94 +        * This does no check whether the transaction is currently in such a
  682.95 +        * state that the canceling can be done now.
  682.96 +        *
  682.97 +		* @return ETrue if client transaction can be cancelled;
  682.98 +		*         EFalse otherwise
  682.99 +		*/
 682.100 +		IMPORT_C virtual TBool CancelAllowed() const;
 682.101 +
 682.102 +	public: // Constructors, for internal use
 682.103 +
 682.104 +        /**
 682.105 +		* Instantiates a CSIPClientTransaction object, leaves on failure.
 682.106 +        *
 682.107 +        * @param aType Identifies the transaction type        
 682.108 +        * @param aAssociation Object to which the transaction is associated
 682.109 +        *   with.
 682.110 +        * @param aRefresh If transaction is refreshed, this points to a
 682.111 +        *   CSIPRefresh, otherwise this is NULL. Ownership is not transferred.
 682.112 +		* @return SIP client transaction, ownership is transferred.
 682.113 +		*/
 682.114 +		static CSIPClientTransaction*
 682.115 +            NewL(RStringF aType,
 682.116 +                 MTransactionAssociation& aAssociation,
 682.117 +                 CSIPRefresh* aRefresh=0);
 682.118 +
 682.119 +        /**
 682.120 +		* Instantiates a CSIPClientTransaction object and pushes it into
 682.121 +        * CleanupStack, leaves on failure.
 682.122 +        *
 682.123 +        * @param aType Identifies the transaction type        
 682.124 +        * @param aAssociation Object to which the transaction is associated
 682.125 +        *   with.
 682.126 +        * @param aRefresh If transaction is refreshed, this points to a
 682.127 +        *   CSIPRefresh, otherwise this is NULL. Ownership is not transferred.
 682.128 +		* @return SIP client transaction, ownership is transferred.
 682.129 +		*/
 682.130 +		static CSIPClientTransaction*
 682.131 +            NewLC(RStringF aType,
 682.132 +                  MTransactionAssociation& aAssociation,
 682.133 +                  CSIPRefresh* aRefresh=0);
 682.134 +
 682.135 +	public: // New functions, for internal use
 682.136 +
 682.137 +        /**
 682.138 +		* Sets the RequestId.
 682.139 +        *
 682.140 +        * @pre iRequestId == 0
 682.141 +        * @pre aRequestId != 0
 682.142 +		* @param aRequestId RequestId obtained from SIP client
 682.143 +		*/
 682.144 +		void SetRequestId(TUint32 aRequestId);
 682.145 +
 682.146 +        /**
 682.147 +		* Gets the associated refresh with the transaction and allows
 682.148 +        * modification fo the refresh. This method is for internal use only.
 682.149 +        *
 682.150 +		* @return associated refresh or 0-pointer if there's no
 682.151 +		*         associated refresh. Ownership isn't transferred.
 682.152 +		*/
 682.153 +        CSIPRefresh* Refresh();
 682.154 +
 682.155 +        /**
 682.156 +	    * Clears the association from ClientTransaction to CSIPRefresh
 682.157 +	    */
 682.158 +        void RemoveRefresh();	
 682.159 +
 682.160 +    protected: // Constructor
 682.161 +
 682.162 +		CSIPClientTransaction(MTransactionAssociation& aAssociation,
 682.163 +                              CSIPRefresh* aRefresh);
 682.164 +
 682.165 +    private: // Data
 682.166 +
 682.167 +        //Points to the refresh object if this transaction is refreshed.
 682.168 +        //NULL if not refreshed. Not owned.
 682.169 +        CSIPRefresh* iRefresh;
 682.170 +
 682.171 +	private: // For testing purposes
 682.172 +
 682.173 +	    UNIT_TEST(CSIP_Test)
 682.174 +	};
 682.175 +
 682.176 +#endif
   683.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   683.2 +++ b/epoc32/include/mw/sipcodecerr.h	Wed Mar 31 12:27:01 2010 +0100
   683.3 @@ -0,0 +1,116 @@
   683.4 +/*
   683.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   683.6 +* All rights reserved.
   683.7 +* This component and the accompanying materials are made available
   683.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   683.9 +* which accompanies this distribution, and is available
  683.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  683.11 +*
  683.12 +* Initial Contributors:
  683.13 +* Nokia Corporation - initial contribution.
  683.14 +*
  683.15 +* Contributors:
  683.16 +*
  683.17 +* Description:
  683.18 +* Name        : sipcodecerr.h
  683.19 +* Part of     : SIP Codec
  683.20 +* Interface   : SDK API, SIP Codec API
  683.21 +* Version     : SIP/6.0 
  683.22 +*
  683.23 +*/
  683.24 +
  683.25 +
  683.26 +
  683.27 +#ifndef SIPCODECERR_H
  683.28 +#define SIPCODECERR_H
  683.29 +
  683.30 +/**
  683.31 +* @file
  683.32 +* @publishedAll
  683.33 +* @released
  683.34 +*/
  683.35 +
  683.36 +/** SIP parsing (decoding) errors */
  683.37 +// General errors
  683.38 +const TInt KErrSipCodecPreParser=-17750;
  683.39 +const TInt KErrSipCodecTokenizer=-17751;
  683.40 +const TInt KErrSipCodecNotAllowed=-17752;
  683.41 +const TInt KErrSipCodecHeaderName=-17753;
  683.42 +const TInt KErrSipCodecHeaderValue=-17754;
  683.43 +const TInt KErrSipCodecRequestLine=-17755;
  683.44 +const TInt KErrSipCodecResponseLine=-17756;
  683.45 +const TInt KErrSipCodecResponseCode=-17757;
  683.46 +const TInt KErrSipCodecSIPVersion=-17758;
  683.47 +const TInt KErrSipCodecSIPMethod=-17759;
  683.48 +const TInt KErrSipCodecReasonPhrase=-17760;
  683.49 +const TInt KErrSipCodecAnyParam=-17761;
  683.50 +const TInt KErrSipCodecAnyParamName=-17762;
  683.51 +const TInt KErrSipCodecAnyParamValue=-17763;
  683.52 +const TInt KErrSipCodecDuplicateParam=-17764;
  683.53 +const TInt KErrSipCodecHostPort=-17765;
  683.54 +const TInt KErrSipCodecHost=-17766;
  683.55 +const TInt KErrSipCodecPort=-17767;
  683.56 +// sip-address
  683.57 +const TInt KErrSipCodecSIPAddress=-17768;
  683.58 +const TInt KErrSipCodecDisplayName=-17769;
  683.59 +// URI
  683.60 +const TInt KErrSipCodecURI=-17770;
  683.61 +const TInt KErrSipCodecURIScheme=-17771;
  683.62 +const TInt KErrSipCodecURIParams=-17772;
  683.63 +const TInt KErrSipCodecURIHeaders=-17773;
  683.64 +// From and To
  683.65 +const TInt KErrSipCodecFromOrToAddress=-17774;
  683.66 +const TInt KErrSipCodecFromOrToParams=-17775;
  683.67 +// Contact
  683.68 +const TInt KErrSipCodecContactHeader=-17776;
  683.69 +const TInt KErrSipCodecContactSetToStar=-17777;
  683.70 +const TInt KErrSipCodecContactAddress=-17778;
  683.71 +const TInt KErrSipCodecContactParams=-17779;
  683.72 +// Other SIP headers
  683.73 +const TInt KErrSipCodecViaHeader=-17780;
  683.74 +const TInt KErrSipCodecCallIdHeader=-17781;
  683.75 +const TInt KErrSipCodecCSeqHeader=-17782;
  683.76 +const TInt KErrSipCodecContentLengthHeader=-17783;
  683.77 +const TInt KErrSipCodecExpiresHeader=-17784;
  683.78 +const TInt KErrSipCodecMaxForwardsHeader=-17785;
  683.79 +const TInt KErrSipCodecContentTypeHeader=-17786;
  683.80 +const TInt KErrSipCodecRouteHeader=-17787;
  683.81 +const TInt KErrSipCodecMinExpiresHeader=-17788;
  683.82 +const TInt KErrSipCodecTokenBaseHeader=-17789;
  683.83 +const TInt KErrSipCodecRequireHeader=-17790;
  683.84 +const TInt KErrSipCodecContentEncodingHeader=-17791;
  683.85 +const TInt KErrSipCodecProxyRequireHeader=-17792;
  683.86 +const TInt KErrSipCodecSupportedHeader=-17793;
  683.87 +const TInt KErrSipCodecUnsupportedHeader=-17794;
  683.88 +const TInt KErrSipCodecAllowHeader=-17795;
  683.89 +const TInt KErrSipCodecSecurityHeader=-17796;
  683.90 +const TInt KErrSipCodecContentDispositionHeader=-17797;
  683.91 +const TInt KErrSipCodecSubscriptionStateHeader=-17798;
  683.92 +const TInt KErrSipCodecAcceptHeader=-17799;
  683.93 +const TInt KErrSipCodecAcceptEncodingHeader=-17800;
  683.94 +const TInt KErrSipCodecAcceptLanguageHeader= -17801;
  683.95 +const TInt KErrSipCodecAcceptParams=-17802;
  683.96 +const TInt KErrSipCodecEventHeader=-17803;
  683.97 +const TInt KErrSipCodecAllowEventsHeader=-17804;
  683.98 +const TInt KErrSipCodecAuthenticationInfoHeader=-17805;
  683.99 +const TInt KErrSipCodecReferToHeader=-17806;
 683.100 +const TInt KErrSipCodecAuthenticationHeader=-17807;
 683.101 +const TInt KErrSipCodecAuthScheme=-17808;
 683.102 +const TInt KErrSipCodecAuthorizationHeader=-17809;
 683.103 +const TInt KErrSipCodecURIContainer=-17810;
 683.104 +const TInt KErrSipCodecRAckHeader=-17811;
 683.105 +const TInt KErrSipCodecRSeqHeader=-17812;
 683.106 +const TInt KErrSipCodecReplyToHeader=-17813;
 683.107 +const TInt KErrSipCodecTimestampHeader=-17814;
 683.108 +const TInt KErrSipCodecRetryAfterHeader=-17815;
 683.109 +const TInt KErrSipCodecRetryAfterParams=-17816;
 683.110 +const TInt KErrSipCodecAcceptContactHeader=-17817;
 683.111 +const TInt KErrSipCodecPAssociatedURIHeader=-17818;
 683.112 +const TInt KErrSipCodecPAccessNetworkInfoHeader=-17819;
 683.113 +
 683.114 +// Last error code allocated to SIP Codec is -17874.
 683.115 +// This value must not be exceeded.
 683.116 +
 683.117 +#endif // SIPCODECERR_H
 683.118 +
 683.119 +// End of File
   684.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   684.2 +++ b/epoc32/include/mw/sipconcreteprofileobserver.h	Wed Mar 31 12:27:01 2010 +0100
   684.3 @@ -0,0 +1,102 @@
   684.4 +/*
   684.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   684.6 +* All rights reserved.
   684.7 +* This component and the accompanying materials are made available
   684.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   684.9 +* which accompanies this distribution, and is available
  684.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  684.11 +*
  684.12 +* Initial Contributors:
  684.13 +* Nokia Corporation - initial contribution.
  684.14 +*
  684.15 +* Contributors:
  684.16 +*
  684.17 +* Description:
  684.18 +* Name        : sipconcreteprofileobserver.h
  684.19 +* Part of     : SIP Profile Client
  684.20 +* Interface   : private
  684.21 +* The observer class that must be implemented by users of 
  684.22 +* CSIPConcreteProfile
  684.23 +* Version     : 1.0
  684.24 +*
  684.25 +*/
  684.26 +
  684.27 +
  684.28 +
  684.29 +#ifndef MSIPCONCRETEPROFILEOBSERVER_H
  684.30 +#define MSIPCONCRETEPROFILEOBSERVER_H
  684.31 +
  684.32 +//  INCLUDES
  684.33 +
  684.34 +#include <e32base.h>
  684.35 +
  684.36 +// FORWARD DECLARATIONS
  684.37 +
  684.38 +
  684.39 +// CLASS DECLARATION
  684.40 +/**
  684.41 +* @publishedAll
  684.42 +* @released
  684.43 +*
  684.44 +* Observer class to be implemented by users of CSIPConcreteProfile
  684.45 +* It provides event notifications related to profiles.
  684.46 +*/
  684.47 +class MSIPConcreteProfileObserver
  684.48 +    {
  684.49 +    public:
  684.50 +
  684.51 +        /**
  684.52 +        * SIP profile registration status changed event
  684.53 +        * Event is send to those observers, who have the
  684.54 +        * corresponding profile instantiated.
  684.55 +        * @param aProfileId id of profile which registration 
  684.56 +        *        status has been changed.
  684.57 +        * @param aStatus new status of the profile
  684.58 +        * @param aStatusId id related to registration
  684.59 +        */
  684.60 +        virtual void RegistrationStatusChangedL(
  684.61 +            TUint32 aProfileId, 
  684.62 +            TInt aStatus,
  684.63 +            TUint32 aStatusId) = 0;
  684.64 +
  684.65 +        /** 
  684.66 +        * SIP profile creation event.
  684.67 +        * Event is send to all observers.
  684.68 +        * @param aProfileId id of new SIP Profile
  684.69 +        */
  684.70 +        virtual void AddedL(TUint32 aProfileId) = 0;
  684.71 +
  684.72 +        /**
  684.73 +        * SIP profile destruction event.
  684.74 +        * Event is send to those observers, who have the
  684.75 +        * corresponding profile instantiated.
  684.76 +        * @param aProfileId id of profile which was destroyed
  684.77 +        */        
  684.78 +        virtual void RemovedL(TUint32 aProfileId) = 0;
  684.79 +
  684.80 +        /** 
  684.81 +        * SIP profile information update event
  684.82 +        * Event is send to those observers, who have the
  684.83 +        * corresponding profile instantiated.
  684.84 +        * @param aProfileId id of updated SIP Profile
  684.85 +        * @param aSize size of updated SIP Profile
  684.86 +        */
  684.87 +        virtual void UpdatedL(TUint32 aProfileId, TUint aSize) = 0;
  684.88 +
  684.89 +        /**
  684.90 +        * An asynchronous error has occurred related to SIP profile
  684.91 +        * Event is send to those observers, who have the
  684.92 +        * corresponding profile instantiated.
  684.93 +        * @param aProfileId the id of failed profile 
  684.94 +        * @param aStatus status indicating if error occurred
  684.95 +        *          during registering (ERegistrationInProgress)
  684.96 +        *          or deregistering (EUnregistrationInProgress)
  684.97 +        * @param aError a error code
  684.98 +        */
  684.99 +        virtual void ErrorOccurredL(
 684.100 +            TUint32 aProfileId,
 684.101 +            TInt aStatus,
 684.102 +            TInt aError) = 0;
 684.103 +    };
 684.104 +
 684.105 +#endif // MSIPCONCRETEPROFILEOBSERVER_H
   685.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   685.2 +++ b/epoc32/include/mw/sipconnection.h	Wed Mar 31 12:27:01 2010 +0100
   685.3 @@ -0,0 +1,344 @@
   685.4 +/*
   685.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   685.6 +* All rights reserved.
   685.7 +* This component and the accompanying materials are made available
   685.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   685.9 +* which accompanies this distribution, and is available
  685.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  685.11 +*
  685.12 +* Initial Contributors:
  685.13 +* Nokia Corporation - initial contribution.
  685.14 +*
  685.15 +* Contributors:
  685.16 +*
  685.17 +* Description:
  685.18 +* Name        : sipconnection.h
  685.19 +* Part of     : SIP Client
  685.20 +* Interface   : SDK API, SIP API
  685.21 +* Version     : 1.0
  685.22 +*
  685.23 +*/
  685.24 +
  685.25 +
  685.26 +
  685.27 +#ifndef CSIPCONNECTION_H
  685.28 +#define CSIPCONNECTION_H
  685.29 +
  685.30 +// INCLUDES
  685.31 +#include <e32base.h>
  685.32 +#include <in_sock.h>
  685.33 +#include "_sipcodecdefs.h"
  685.34 +
  685.35 +// FORWARD DECLARATIONS
  685.36 +class CSIP;
  685.37 +class MSIPConnectionObserver;
  685.38 +class CSIPClientTransaction;
  685.39 +class MSIPRegistrationContext;
  685.40 +class CSIPRefresh;
  685.41 +class CSIPRequestElements;
  685.42 +class CSIPConnectionImplementation;
  685.43 +
  685.44 +// CONSTANTS
  685.45 +
  685.46 +// CLASS DECLARATION
  685.47 +
  685.48 +/**
  685.49 +* @publishedAll
  685.50 +* @released
  685.51 +*
  685.52 +* Class for monitoring connection's state and sending SIP requests outside
  685.53 +* the dialog associations. Class must not be used
  685.54 +* - for sending requests to which received non-failure response creates a dialog
  685.55 +* - for sending requests that must be sent within SIP dialog
  685.56 +*  
  685.57 +* Note that the user can have only one instance of the class per same IAP-id.
  685.58 +*/
  685.59 +class CSIPConnection : public CBase
  685.60 +	{
  685.61 +    public:
  685.62 +        /** Connection states */
  685.63 +        enum TState 
  685.64 +            {
  685.65 +            /** Connection initializing */
  685.66 +			EInit=1,
  685.67 +			/** Connection active */
  685.68 +			EActive,
  685.69 +			/** Connection suspended */
  685.70 +			ESuspended,
  685.71 +			/** Connection is inactive */
  685.72 +			EInactive,
  685.73 +			/** Connection is permanently unavailable */
  685.74 +			EUnavailable
  685.75 +            };
  685.76 +
  685.77 +    public:  // Constructors and destructor
  685.78 +
  685.79 +	    /**
  685.80 +        * Two-phased constructor.
  685.81 +		* @param aSip a handle to the SIP server
  685.82 +		* @param aIapId IAP-id
  685.83 +		* @param aObserver a observer for receiving asynchonous events on this
  685.84 +        *   connection
  685.85 +        * @return New object, ownership is transferred
  685.86 +        * @capability NetworkServices
  685.87 +        */
  685.88 +		IMPORT_C static CSIPConnection*
  685.89 +            NewL(CSIP& aSIP,
  685.90 +				 TUint32 aIapId,
  685.91 +				 MSIPConnectionObserver& aObserver);
  685.92 +
  685.93 +	    /**
  685.94 +        * Two-phased constructor.
  685.95 +		* Constructs an object and adds the pointer to the cleanup stack;
  685.96 +		* @param aSip a handle to the SIP server
  685.97 +		* @param aIapId IAP-id
  685.98 +		* @param aObserver a observer for receiving asynchonous events on this
  685.99 +        *   connection
 685.100 +        * @return New object, ownership is transferred
 685.101 +        * @capability NetworkServices
 685.102 +        */
 685.103 +		IMPORT_C static CSIPConnection*
 685.104 +            NewLC(CSIP& aSIP,
 685.105 +				  TUint32 aIapId,
 685.106 +				  MSIPConnectionObserver& aObserver);
 685.107 +
 685.108 +		/**
 685.109 +		* Destructor
 685.110 +        * @capability NetworkServices
 685.111 +		*/
 685.112 +		IMPORT_C ~CSIPConnection();
 685.113 +
 685.114 +    public: // New functions
 685.115 +
 685.116 +        /**
 685.117 +		* Gets current state of the connection        
 685.118 +        * @return current state of the connection
 685.119 +        */
 685.120 +		IMPORT_C TState State() const;
 685.121 +
 685.122 +        /**
 685.123 +		* Creates SIP request and sends it to the given destination.
 685.124 +		* The function must not be used with SIP requests that creates
 685.125 +		* SIP dialog associations or must be sent within SIP dialog
 685.126 +		* association.
 685.127 +		* This provokes the Non-invite state machine.
 685.128 +		* This function must be used if the user has created the
 685.129 +		* registration binding.
 685.130 +		* @pre State() == EActive.
 685.131 +		* @pre aContext.IsContextActive() == ETrue
 685.132 +		* @param aElements contains local and remote addresses,
 685.133 +		*		 optional SIP message headers and body.
 685.134 +		*        The ownership is transferred.
 685.135 +		* @param aContext defines outbound proxy to be used. If the user
 685.136 +		*        does not provide from-address it will be constucted using
 685.137 +		*        user's AOR used during the registration.
 685.138 +        * @return SIP client transaction, ownership is transferred
 685.139 +        * @leave KErrArgument if aElements == 0
 685.140 +        * @leave KErrSIPInvalidRegistrationState if aContext.IsContextActive()
 685.141 +        *	== EFalse
 685.142 +		* @capability NetworkServices
 685.143 +        */
 685.144 +		IMPORT_C CSIPClientTransaction*
 685.145 +            SendRequestL(CSIPRequestElements* aElements,
 685.146 +                         const MSIPRegistrationContext& aContext);
 685.147 +
 685.148 +        /**
 685.149 +		* Creates SIP request and sends it to the given destination.
 685.150 +		* The function must not be used with SIP requests that creates
 685.151 +		* SIP dialog associations or must be sent within SIP dialog
 685.152 +		* association.
 685.153 +		* This provokes the Non-invite state machine.
 685.154 +		* This function must be used if the user has created the
 685.155 +		* registration binding.
 685.156 +		* @pre State() == EActive.
 685.157 +		* @pre aContext.IsContextActive() == ETrue
 685.158 +		* @param aElements contains local and remote addresses,
 685.159 +		*		 optional SIP message headers and body.
 685.160 +		*        The ownership is transferred.
 685.161 +		* @param aContext defines outbound proxy to be used. If the user
 685.162 +		*        does not provide from-address it will 
 685.163 +		*        be constucted using user's AOR used during the registration.
 685.164 +		* @param aRefresh defines the refresh interval for this transaction.
 685.165 +        * @return SIP client transaction, ownership is transferred
 685.166 +        * @leave KErrArgument if aElements == 0
 685.167 +        * @leave KErrSIPInvalidRegistrationState if aContext.IsContextActive()
 685.168 +        *	== EFalse
 685.169 +        * @capability NetworkServices
 685.170 +        */
 685.171 +		IMPORT_C CSIPClientTransaction*
 685.172 +            SendRequestL(CSIPRequestElements* aElements,                                        
 685.173 +                         const MSIPRegistrationContext& aContext,
 685.174 +						 CSIPRefresh& aRefresh); 
 685.175 +
 685.176 +        /**
 685.177 +		* Creates SIP request and sends it to the given destination.
 685.178 +		* The function must not be used with SIP requests that creates SIP
 685.179 +		* dialog associations or must be sent within SIP dialog association.
 685.180 +		* This invokes the Non-invite state machine.
 685.181 +		* @pre State() == EActive.
 685.182 +		* @pre aElements.FromHeader() != 0
 685.183 +		* @param aElements contains local and remote addresses,
 685.184 +		*		 optional SIP message headers and body.
 685.185 +		*        The ownership is transferred.
 685.186 +        * @return SIP client transaction, ownership is transferred
 685.187 +        * @leave KErrArgument if aElements == 0 or if From-header is not
 685.188 +        *	present in aElements
 685.189 +        * @capability NetworkServices
 685.190 +        */
 685.191 +		IMPORT_C CSIPClientTransaction*
 685.192 +            SendRequestL(CSIPRequestElements* aElements);
 685.193 +
 685.194 +        /**
 685.195 +		* Creates SIP request and sends it to the given destination.
 685.196 +		* The function must not be used with SIP requests that creates SIP
 685.197 +		* dialog associations or must be sent within SIP dialog association.
 685.198 +		* This invokes the Non-invite state machine.
 685.199 +		* @pre State() == EActive.
 685.200 +		* @pre aElements.FromHeader() != 0
 685.201 +		* @param aElements contains local and remote addresses,
 685.202 +		*		 optional SIP message headers and body.
 685.203 +		*        The ownership is transferred.
 685.204 +		* @param aRefresh indicates that transaction will be refreshed
 685.205 +        * @return SIP client transaction, ownership is transferred
 685.206 +        * @leave KErrArgument if aElements == 0 or if From-header is not
 685.207 +        *	present in aElements
 685.208 +        * @capability NetworkServices
 685.209 +        */
 685.210 +		IMPORT_C CSIPClientTransaction*
 685.211 +            SendRequestL(CSIPRequestElements* aElements,
 685.212 +						 CSIPRefresh& aRefresh);
 685.213 +
 685.214 +		/**
 685.215 +		* Creates SIP REGISTER request and sends it to the given destination.
 685.216 +		* User must no define any Contact or Expires-headers
 685.217 +		* in the provided elements.
 685.218 +		* @pre State() == EActive
 685.219 +        * @pre aElements != 0
 685.220 +        * @pre aElements->Method().DesC().Length()==0
 685.221 +		* @param aElements contains local and remote addresses, optional SIP
 685.222 +        *        message headers and body. User must not set any expires values
 685.223 +        *        to aElements. The ownership is transferred.
 685.224 +        * @return SIP REGISTER client transaction, ownership is transferred
 685.225 +        * @leave KErrArgument if aElements == 0 or if the request method has
 685.226 +        *	been defined in aElements
 685.227 +        * @capability NetworkServices
 685.228 +        */
 685.229 +		IMPORT_C CSIPClientTransaction*
 685.230 +            FetchRegistrationsL(CSIPRequestElements* aElements);
 685.231 +
 685.232 +		/**
 685.233 +		* Gets Iap-id used for this connection
 685.234 +		* @return Iap-id
 685.235 +		*/
 685.236 +        IMPORT_C TUint32 IapId() const;
 685.237 +
 685.238 +		/**
 685.239 +        * Gets SIP server handle
 685.240 +        * @return handle to SIP server, or 0-pointer if SIP server does not
 685.241 +        *	exist any more
 685.242 +        */        
 685.243 +        IMPORT_C CSIP* SIP();
 685.244 +
 685.245 +        /**
 685.246 +        * Gets SIP server handle
 685.247 +        * @return handle to SIP server, or 0-pointer if SIP server does not
 685.248 +        *	exist any more
 685.249 +        */        
 685.250 +        IMPORT_C const CSIP* SIP() const;
 685.251 +      
 685.252 +		/**
 685.253 +		* Sets a RSocket option used for all the sockets used for sending 
 685.254 +		* SIP requests and responses in this CSIPConnection.
 685.255 +		* @pre State() == EActive
 685.256 +		* @param aOptionName An integer constant which identifies an option.
 685.257 +        * @param aOptionLevel An integer constant which identifies 
 685.258 +        *        level of an option.
 685.259 +        * @param aOption Option value packaged in a descriptor.
 685.260 +        * @leave A system-wide error code
 685.261 +        * @capability NetworkControl
 685.262 +        * @capability NetworkServices
 685.263 +        * @capability Location
 685.264 +        * @capability ReadDeviceData
 685.265 +        * @capability WriteDeviceData        
 685.266 +        */        
 685.267 +	    IMPORT_C void SetOptL(TUint aOptionName,
 685.268 +	                      	  TUint aOptionLevel,
 685.269 +	                      	  const TDesC8& aOption=KNullDesC8);
 685.270 +
 685.271 +		/**
 685.272 +		* Sets a RSocket option used for all the sockets used for sending 
 685.273 +		* SIP requests and responses in this CSIPConnection.
 685.274 +		* @pre State() == EActive
 685.275 +		* @param aOptionName An integer constant which identifies an option.
 685.276 +        * @param aOptionLevel An integer constant which identifies 
 685.277 +        *        level of an option.
 685.278 +        * @param aOption Option value as an integer.
 685.279 +        * @leave A system-wide error codes
 685.280 +        * @capability NetworkControl
 685.281 +        * @capability NetworkServices
 685.282 +        * @capability Location
 685.283 +        * @capability ReadDeviceData
 685.284 +        * @capability WriteDeviceData
 685.285 +        */ 	                         
 685.286 +	    IMPORT_C void SetOptL(TUint aOptionName,
 685.287 +	                          TUint aOptionLevel,
 685.288 +	                          TInt aOption);
 685.289 +
 685.290 +        /**
 685.291 +        * Gets the local IP address of this CSIPConnection 
 685.292 +        * that is used by the SIP implementation.
 685.293 +        * The user should re-new the call whenever the connection state changes
 685.294 +        * to the CSIPConnection::EActive in order to verify the correctness of
 685.295 +        * the previously retrieved local IP address. The local IP address might
 685.296 +        * be different as a result of the connection state change.
 685.297 +        * @pre State() == CSIPConnection::EActive
 685.298 +        * @param aAddr on return filled with local IP address
 685.299 +        * @leave a system-wide error code
 685.300 +        */ 	                         
 685.301 +	    IMPORT_C void GetLocalAddrL(TInetAddr& aAddr) const;
 685.302 +	    
 685.303 +	/**
 685.304 +	* Refreshes the connection.
 685.305 +	* This will retrieve the Bearer Monitor Instance if any, is available for this  CSIPConnection and issue a Connection Refresh Request to it.
 685.306 +	* The state of the Connection can be retrieved from State() to check if there is any change after Refreshing the connection.
 685.307 +	* @capability NetworkServices.
 685.308 +	*/
 685.309 +	    
 685.310 +	  IMPORT_C void RefreshConnection() const;
 685.311 +
 685.312 +	public: // New functions, for internal use
 685.313 +	
 685.314 +		/**
 685.315 +		* Returns the implementation instance.
 685.316 +		*
 685.317 + 		* @return CSIPConnectionImplementation
 685.318 +		*/
 685.319 +		CSIPConnectionImplementation& Implementation();
 685.320 +
 685.321 +    private: // Constructors
 685.322 +    
 685.323 +        CSIPConnection();
 685.324 +
 685.325 +        void ConstructL(CSIP& aSIP,
 685.326 +                        TUint32 aIapId,
 685.327 +                        MSIPConnectionObserver& aObserver);
 685.328 +
 685.329 +	private: // Data
 685.330 +	
 685.331 +		CSIPConnectionImplementation* iImplementation;
 685.332 +		        
 685.333 +	private: // For testing purposes
 685.334 +	
 685.335 +	    UNIT_TEST(CSIP_Test)
 685.336 +        UNIT_TEST(CSIPConnection_Test)
 685.337 +        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 685.338 +        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 685.339 +        UNIT_TEST(CSIPReferDialogAssoc_Test)
 685.340 +        UNIT_TEST(CSIPNotifyDialogAssoc_Test)
 685.341 +        UNIT_TEST(CSIPDialogTrying_Test)
 685.342 +        UNIT_TEST(CSIPRegistrationBinding_Test)
 685.343 +        
 685.344 +        __DECLARE_TEST;
 685.345 +	};
 685.346 +
 685.347 +#endif
   686.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   686.2 +++ b/epoc32/include/mw/sipconnectionobserver.h	Wed Mar 31 12:27:01 2010 +0100
   686.3 @@ -0,0 +1,231 @@
   686.4 +/*
   686.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   686.6 +* All rights reserved.
   686.7 +* This component and the accompanying materials are made available
   686.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   686.9 +* which accompanies this distribution, and is available
  686.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  686.11 +*
  686.12 +* Initial Contributors:
  686.13 +* Nokia Corporation - initial contribution.
  686.14 +*
  686.15 +* Contributors:
  686.16 +*
  686.17 +* Description:
  686.18 +* Name        : sipconnectionobserver.h
  686.19 +* Part of     : SIP Client
  686.20 +* Interface   : SDK API, SIP Client API
  686.21 +* Version     : 1.0
  686.22 +*
  686.23 +*/
  686.24 +
  686.25 +
  686.26 +
  686.27 +#ifndef MSIPCONNECTIONOBSERVER_H
  686.28 +#define MSIPCONNECTIONOBSERVER_H
  686.29 +
  686.30 +//  INCLUDES
  686.31 +#include "sipconnection.h"
  686.32 +
  686.33 +// FORWARD DECLARATIONS
  686.34 +class CSIPDialogAssocBase;
  686.35 +class CSIPInviteDialogAssoc;
  686.36 +class CSIPRegistrationBinding;
  686.37 +class CSIPDialog;
  686.38 +class CSIPTransactionBase;
  686.39 +class CSIPServerTransaction;
  686.40 +
  686.41 +// CLASS DECLARATION
  686.42 +
  686.43 +/**
  686.44 +*  @publishedAll
  686.45 +*  @released
  686.46 +*
  686.47 +*  An interface to be implemented by users of CSIPConnection.
  686.48 +*  Interface allows to be able to receive requests, responses, connection state
  686.49 +*  notifications and error notifications from sip stack.
  686.50 +*
  686.51 +*  Note: The client must not delete related CSIPConnection object 
  686.52 +*  during the execution of the interface function.
  686.53 +*
  686.54 +*  @lib n/a
  686.55 +*/
  686.56 +
  686.57 +class MSIPConnectionObserver
  686.58 +	{    	
  686.59 +    public:
  686.60 +		/**
  686.61 +		* A SIP request outside a dialog has been received from the network.
  686.62 +        *
  686.63 +        * @pre aTransaction != 0
  686.64 +		* @param aTransaction SIP server transaction. The ownership is
  686.65 +        *   transferred.
  686.66 +        */
  686.67 +		virtual void IncomingRequest (CSIPServerTransaction*
  686.68 +									  aTransaction) = 0;
  686.69 +
  686.70 +		/**
  686.71 +		* A SIP request within a dialog has been received from the network.
  686.72 +		* The client must resolve the actual dialog association to which
  686.73 +		* this request belongs.
  686.74 +		*
  686.75 +        * @pre aTransaction != 0
  686.76 +		* @param aTransaction SIP server transaction. The ownership is
  686.77 +        *   transferred.
  686.78 +		* @param aDialog the dialog that this transaction belongs to.        
  686.79 +		*/
  686.80 +		virtual void IncomingRequest (CSIPServerTransaction* aTransaction,
  686.81 +					                  CSIPDialog& aDialog) = 0;
  686.82 +
  686.83 +		/**
  686.84 +		* A SIP response received from the network.
  686.85 +		*
  686.86 +		* @param aTransaction contains response elements.
  686.87 +		*/
  686.88 +		virtual void IncomingResponse (CSIPClientTransaction&
  686.89 +                                       aTransaction) = 0;
  686.90 +
  686.91 +		/**
  686.92 +		* A SIP response received from the network that is within a dialog
  686.93 +		* association or creates a dialog association.
  686.94 +		*
  686.95 +		* @param aTransaction contains response elements.
  686.96 +		* @param aDialogAssoc a dialog association.        
  686.97 +		*/		
  686.98 +		virtual void IncomingResponse (
  686.99 +					CSIPClientTransaction& aTransaction,
 686.100 +					CSIPDialogAssocBase& aDialogAssoc) = 0;
 686.101 +
 686.102 +        /**
 686.103 +		* Multiple SIP responses have been received to the single INVITE due
 686.104 +		* to the forking proxy. Note that each response creates a separate
 686.105 +		* INVITE dialog association.
 686.106 +        * Multiple responses can arrive until SIP stack completes UAC core
 686.107 +		* INVITE transaction.
 686.108 +        * If clients deletes INVITE transaction after first SIP response
 686.109 +		* other possible responses will be consumed by the implementation.
 686.110 +		* 
 686.111 +		* @param aTransaction contains response elements
 686.112 +		* @param aDialogAssoc INVITE dialog association; the ownership is 
 686.113 +		*        transferred
 686.114 +		*/
 686.115 +		virtual void IncomingResponse (
 686.116 +					CSIPClientTransaction& aTransaction,
 686.117 +					CSIPInviteDialogAssoc* aDialogAssoc) = 0;
 686.118 +
 686.119 +		/**
 686.120 +		* A SIP response related a registration binding or an error response
 686.121 +		* that is related to registration binding has been received
 686.122 +        * from the network.
 686.123 +        *
 686.124 +		* @param aTransaction contains response elements
 686.125 +		* @param aRegistration registration binding this transaction belongs to
 686.126 +		*/
 686.127 +		virtual void
 686.128 +			IncomingResponse (CSIPClientTransaction& aTransaction,
 686.129 +                              CSIPRegistrationBinding& aRegistration) = 0;
 686.130 +
 686.131 + 		/**
 686.132 +		* An asynchronous error has occurred in the stack related to the
 686.133 +		* request indicated by the given transaction.
 686.134 +		*
 686.135 +		* @param aError system wide or SIP error code
 686.136 +		* @param aTransaction failed transaction
 686.137 +		* @param aSIPConnection a SIP connection        
 686.138 +		*/
 686.139 +		virtual void ErrorOccured (TInt aError,
 686.140 +                                   CSIPTransactionBase& aTransaction) = 0;
 686.141 +
 686.142 +		/**
 686.143 +		* An asynchronous error has occurred in the stack related
 686.144 +		* to the request indicated by the given transaction.
 686.145 +        *
 686.146 +		* @param aError system wide or SIP error code
 686.147 +		* @param aTransaction the failed transaction
 686.148 +		* @param aRegistration the failed registration binding
 686.149 +		*/
 686.150 +		virtual void ErrorOccured (TInt aError,
 686.151 +				                   CSIPClientTransaction& aTransaction,
 686.152 +					               CSIPRegistrationBinding& aRegistration) = 0;
 686.153 +
 686.154 +		/**
 686.155 +		* An asynchronous error has occured related to a request within
 686.156 +		* an existing dialog.
 686.157 +        *
 686.158 +		* @param aError system wide or SIP error code
 686.159 +		* @param aTransaction the failed transaction.
 686.160 +		* @param aDialogAssoc the failed dialog associoation.        
 686.161 +		*/
 686.162 +		virtual void ErrorOccured (
 686.163 +					TInt aError,
 686.164 +				    CSIPTransactionBase& aTransaction,
 686.165 +					CSIPDialogAssocBase& aDialogAssoc) = 0;
 686.166 +
 686.167 +		/**
 686.168 +		* An asynchronous error has occured related to a refresh 
 686.169 +        *
 686.170 +		* @param aError system wide or SIP error code
 686.171 +		* @param aSIPRefresh original refresh object.        
 686.172 +		*/
 686.173 +		virtual void ErrorOccured (TInt aError, CSIPRefresh& aSIPRefresh) = 0;
 686.174 +
 686.175 +		/**
 686.176 +		* An asynchronous error has occured related to a periodical refresh
 686.177 +        * that relates to a registration.
 686.178 +        *
 686.179 +		* @param aError system wide or SIP error code; 
 686.180 +		*		 KErrCouldNotConnect if the refresh has failed
 686.181 +		*		 due to the suspended connection.
 686.182 +		* @param aRegistration associated registration binding
 686.183 +		*/
 686.184 +		virtual void ErrorOccured (TInt aError,					
 686.185 +					               CSIPRegistrationBinding& aRegistration) = 0;
 686.186 +
 686.187 +		/**
 686.188 +		* An asynchronous error has occured related to a periodical refresh
 686.189 +        * that belongs to SIP dialog association.
 686.190 +        *
 686.191 +		* @param aError system wide or SIP error code; 
 686.192 +		*        KErrCouldNotConnect if the refresh has failed
 686.193 +		*		 due to the suspended connection.
 686.194 +		* @param aDialogAssoc SIP dialog association.        
 686.195 +		*/
 686.196 +		virtual void ErrorOccured (TInt aError,			
 686.197 +					               CSIPDialogAssocBase& aDialogAssoc) = 0;
 686.198 +
 686.199 +        /**
 686.200 +		* SIP stack has completed UAC core INVITE transaction 64*T1 seconds
 686.201 +        * after the reception of the first 2xx response. No more 2xx responses
 686.202 +        * can be received to the issued single INVITE.
 686.203 +        *
 686.204 +        * If the INVITE transaction does not create a dialog, or the INVITE
 686.205 +        * transaction encounters an error, this event will not be sent.
 686.206 +        *
 686.207 +		* @param aTransaction a complete UAC core INVITE transaction
 686.208 +		*/
 686.209 +        virtual void InviteCompleted (CSIPClientTransaction& aTransaction) = 0;
 686.210 +
 686.211 +		/**
 686.212 +        * Invite was canceled with the CANCEL
 686.213 +        * @param aTransaction a canceled INVITE UAS transaction
 686.214 +        */
 686.215 +        virtual void InviteCanceled (CSIPServerTransaction& aTransaction) = 0;
 686.216 +                
 686.217 +		/**
 686.218 +		* Connection state has changed.
 686.219 +        * If connection state has changed to EInactive or EUnavailable,
 686.220 +		* SIP stack has removed all stand-alone SIP refreshes, registrations 
 686.221 +		* and dialog associations that client requested to refresh. Client may
 686.222 +		* re-issue refresh requests (stand-alone, registration or dialog 
 686.223 +		* association related) when connection becomes EActive again.
 686.224 +		* SIP stack also terminates all pending SIP client transactions and no
 686.225 +        * errors are reported back to the client about the terminated
 686.226 +        * transactions nor about removed refreshes in order to avoid event
 686.227 +        * flood.
 686.228 +		* 
 686.229 +		* @param aState indicates the current connection state        
 686.230 +		*/
 686.231 +		virtual void ConnectionStateChanged (CSIPConnection::TState aState) = 0;
 686.232 +	};
 686.233 +
 686.234 +#endif
   687.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   687.2 +++ b/epoc32/include/mw/sipconnpref.h	Wed Mar 31 12:27:01 2010 +0100
   687.3 @@ -0,0 +1,73 @@
   687.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   687.5 +// All rights reserved.
   687.6 +// This component and the accompanying materials are made available
   687.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   687.8 +// which accompanies this distribution, and is available
   687.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  687.10 +//
  687.11 +// Initial Contributors:
  687.12 +// Nokia Corporation - initial contribution.
  687.13 +//
  687.14 +// Contributors:
  687.15 +//
  687.16 +// Description:
  687.17 +// SIP extension events definition
  687.18 +// 
  687.19 +//
  687.20 +
  687.21 +
  687.22 +
  687.23 +/**
  687.24 + @file
  687.25 + @publishedAll
  687.26 + @released since v9.2
  687.27 +*/
  687.28 +
  687.29 +
  687.30 +#ifndef SIPCONNPREFS_H
  687.31 +#define SIPCONNPREFS_H
  687.32 +	
  687.33 +#include <connpref.h>
  687.34 +#include <cdbcols.h>
  687.35 +
  687.36 +/** The numeric value of SIP protocol family ID .*/
  687.37 +const TUint KAFSip = 0x10000; 
  687.38 +
  687.39 +
  687.40 +struct SSipConnPref
  687.41 +/** 
  687.42 +This contains the information about the Id of the profile
  687.43 +@publishedAll
  687.44 +@released since v9.2 
  687.45 +*/
  687.46 +	{
  687.47 +	/** The numeric value of SIP Profile ID **/
  687.48 +	TUint32 iProfileId;
  687.49 +	};
  687.50 +
  687.51 +	
  687.52 +class TSipConnPref : public TConnPref
  687.53 +/** 
  687.54 +This contains the information about the type of the connection preferences used by the SIP in the form of the profiles
  687.55 +@publishedAll
  687.56 +@released since v9.2 
  687.57 +*/
  687.58 +	{
  687.59 +public:
  687.60 +	/** Constructor. */
  687.61 +	TSipConnPref();
  687.62 +	/** Sets the profile ID same as the prameter **/
  687.63 +	inline void 	SetProfileId(TUint32 aProfileId);
  687.64 +	/** Gets the default profile ID  **/
  687.65 +	inline TUint32  GetProfileId() const;
  687.66 +	/** cast to appropriate SIP connection provider type  **/
  687.67 +	inline static TSipConnPref& TSipConnPref::Cast(const TConnPref& aPref);
  687.68 +	
  687.69 +protected:
  687.70 +	inline SSipConnPref* PrefPtr() const;
  687.71 +
  687.72 +	};
  687.73 +
  687.74 +#include <sipconnpref.inl>
  687.75 +
  687.76 +#endif  // sipconnpref.h
   688.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   688.2 +++ b/epoc32/include/mw/sipconnpref.inl	Wed Mar 31 12:27:01 2010 +0100
   688.3 @@ -0,0 +1,51 @@
   688.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   688.5 +// All rights reserved.
   688.6 +// This component and the accompanying materials are made available
   688.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   688.8 +// which accompanies this distribution, and is available
   688.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  688.10 +//
  688.11 +// Initial Contributors:
  688.12 +// Nokia Corporation - initial contribution.
  688.13 +//
  688.14 +// Contributors:
  688.15 +//
  688.16 +// Description:
  688.17 +// SIP extension events definition
  688.18 +// 
  688.19 +//
  688.20 +
  688.21 +
  688.22 +
  688.23 +/**
  688.24 + @file
  688.25 + @publishedAll
  688.26 +*/
  688.27 +
  688.28 +
  688.29 +inline TSipConnPref::TSipConnPref() 
  688.30 +	: TConnPref(TConnPref::EConnPrefSip)
  688.31 +	{
  688.32 +	SetProfileId(0);
  688.33 +	}
  688.34 +
  688.35 +inline void TSipConnPref::SetProfileId(TUint32 aProfileId)
  688.36 +	{
  688.37 +	PrefPtr()->iProfileId = aProfileId;
  688.38 +	}
  688.39 +	
  688.40 +inline TUint32 TSipConnPref::GetProfileId() const
  688.41 +	{
  688.42 +	return PrefPtr()->iProfileId;
  688.43 +	}
  688.44 +	
  688.45 +inline TSipConnPref& TSipConnPref::Cast(const TConnPref& aPref)
  688.46 +	{
  688.47 +	return (TSipConnPref&)aPref;
  688.48 +	}
  688.49 +
  688.50 +inline SSipConnPref* TSipConnPref::PrefPtr() const
  688.51 +	{
  688.52 +	return (SSipConnPref*)UserPtr();
  688.53 +	}
  688.54 +	
   689.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   689.2 +++ b/epoc32/include/mw/sipcontactheader.h	Wed Mar 31 12:27:01 2010 +0100
   689.3 @@ -0,0 +1,233 @@
   689.4 +/*
   689.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   689.6 +* All rights reserved.
   689.7 +* This component and the accompanying materials are made available
   689.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   689.9 +* which accompanies this distribution, and is available
  689.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  689.11 +*
  689.12 +* Initial Contributors:
  689.13 +* Nokia Corporation - initial contribution.
  689.14 +*
  689.15 +* Contributors:
  689.16 +*
  689.17 +* Description:
  689.18 +* Name        : sipcontactheader.h
  689.19 +* Part of     : SIP Codec
  689.20 +* Interface   : SDK API, SIP Codec API
  689.21 +* Version     : SIP/4.0 
  689.22 +*
  689.23 +*/
  689.24 +
  689.25 +
  689.26 +
  689.27 +
  689.28 +#ifndef CSIPCONTACTHEADER_H
  689.29 +#define CSIPCONTACTHEADER_H
  689.30 +
  689.31 +//  INCLUDES
  689.32 +#include "sipparameterheaderbase.h"
  689.33 +#include "_sipcodecdefs.h"
  689.34 +
  689.35 +// FORWARD DECLARATIONS
  689.36 +class CSIPAddress;
  689.37 +class CSIPContactHeaderParams;
  689.38 +
  689.39 +// CLASS DECLARATION
  689.40 +/**
  689.41 +* @publishedAll
  689.42 +* @released
  689.43 +*
  689.44 +* Class provides functions for setting and getting SIP "Contact"
  689.45 +* header fields.
  689.46 +*
  689.47 +*  @lib sipcodec.lib
  689.48 +*/
  689.49 +class CSIPContactHeader : public CSIPParameterHeaderBase
  689.50 +	{
  689.51 +	public: // Constructors and destructor
  689.52 +
  689.53 +		/**
  689.54 +		* Constructs a CSIPContactHeader from textual representation 
  689.55 +		* of the header's value part.
  689.56 +		* Note that "Contact: *" can be only created using this function.
  689.57 +		* @param aValue a value part of a "Contact"-header
  689.58 +		* @return an array containing 1..n instances of CSIPContactHeader
  689.59 +		*/
  689.60 +		IMPORT_C static RPointerArray<CSIPContactHeader> 
  689.61 +			DecodeL(const TDesC8& aValue);
  689.62 +
  689.63 +		/**
  689.64 +		* Creates a new instance of CSIPContactHeader
  689.65 +		* @pre aSIPAddress != 0
  689.66 +		* @param aSIPAddress a name-address, the ownership is transferred 
  689.67 +		* @return a new instance of CSIPContactHeader
  689.68 +		*/
  689.69 +		IMPORT_C static CSIPContactHeader* NewL(CSIPAddress* aSIPAddress);
  689.70 +
  689.71 +		/**
  689.72 +		* Creates a new instance of CSIPContactHeader and puts it to CleanupStack
  689.73 +		* @pre aSIPAddress != 0
  689.74 +		* @param aSIPAddress a name-address, the ownership is transferred 
  689.75 +		* @return a new instance of CSIPContactHeader
  689.76 +		*/
  689.77 +		IMPORT_C static CSIPContactHeader* NewLC(CSIPAddress* aSIPAddress);
  689.78 +
  689.79 +		/**
  689.80 +		* Destructor, deletes the resources of CSIPContactHeader.
  689.81 +		*/
  689.82 +		IMPORT_C ~CSIPContactHeader();
  689.83 +
  689.84 +	
  689.85 +	public: // New functions
  689.86 +
  689.87 +		/**
  689.88 +		* Compares this object to another instance of CSIPContactHeader
  689.89 +		* @param aHeader a CSIPContactHeader header to compare to
  689.90 +		* @return ETrue if the objects are equal otherwise EFalse
  689.91 +		*/
  689.92 +		IMPORT_C TBool operator==(const CSIPContactHeader& aHeader) const;
  689.93 +
  689.94 +		/**
  689.95 +		* Checks if the address is set to a STAR ("*")
  689.96 +		* @return ETrue, if the address is a "*" otherwise EFalse
  689.97 +		*/
  689.98 +		IMPORT_C TBool Star() const;
  689.99 +
 689.100 +		/**
 689.101 +		* Gets the value of the "expires"-parameter
 689.102 +		* @return the "expires"-parameter, or 
 689.103 +		*         KErrNotFound if the parameter is not present.
 689.104 +		*/
 689.105 +		IMPORT_C TInt ExpiresParameter() const;
 689.106 +
 689.107 +		/**
 689.108 +		* Sets the "expires"-parameter
 689.109 +		* @pre aExpiresParam >= 0
 689.110 +		* @param aExpiresParam a "expires"-parameter value to set
 689.111 +		*/
 689.112 +		IMPORT_C void SetExpiresParameterL(TInt aExpiresParam);
 689.113 +
 689.114 +		/**
 689.115 +		* Gets the value of "q"-parameter
 689.116 +		* @pre Star() == EFalse
 689.117 +		* @return the "q"-parameter value, 
 689.118 +		*         or zero if the parameter is not present.
 689.119 +		*/
 689.120 +		IMPORT_C TReal QParameter() const;
 689.121 +
 689.122 +		/**
 689.123 +		* Sets the "q"-parameter value in the "Contact" header
 689.124 +		* @pre Star() == EFalse
 689.125 +		* @param aQValue a "q"-parameter value to set
 689.126 +		*/
 689.127 +		IMPORT_C void SetQParameterL(TReal aQValue);
 689.128 +
 689.129 +		/**
 689.130 +		* Gets the name-address as const
 689.131 +		* @return name-address or 0 if not present
 689.132 +		*         The ownership is NOT transferred.
 689.133 +		*/
 689.134 +		IMPORT_C const CSIPAddress* SIPAddress() const;
 689.135 +
 689.136 +		/**
 689.137 +		* Gets the name-address
 689.138 +		* @return name-address or 0 if not present
 689.139 +		*         The ownership is NOT transferred.
 689.140 +		*/
 689.141 +		IMPORT_C CSIPAddress* SIPAddress();
 689.142 +
 689.143 +		/**
 689.144 +		* Sets the name-address
 689.145 +		* @pre Star() == EFalse
 689.146 +		* @pre aSIPAddress != 0
 689.147 +		* @param aSIPAddress a name-address to set, the ownership is transferred
 689.148 +		*/
 689.149 +		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
 689.150 +
 689.151 +		/**
 689.152 +		* Constructs an instance of a CSIPContactHeader from a RReadStream
 689.153 +		* @param aReadStream a stream containing the value of the
 689.154 +		*        externalized object (header name not included). 
 689.155 +		* @return an instance of a CSIPContactHeader
 689.156 +		*/
 689.157 +		IMPORT_C static CSIPHeaderBase* 
 689.158 +			InternalizeValueL(RReadStream& aReadStream);
 689.159 +
 689.160 +
 689.161 +	public: // From CSIPHeaderBase
 689.162 +		
 689.163 +		/**
 689.164 +		* From CSIPHeaderBase CloneL
 689.165 +		*/
 689.166 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 689.167 +
 689.168 +		/**
 689.169 +		* From CSIPHeaderBase Name
 689.170 +		*/
 689.171 +		IMPORT_C RStringF Name() const;
 689.172 +
 689.173 +
 689.174 +	public: // From CSIPHeaderBase, for internal use
 689.175 +
 689.176 +        /**
 689.177 +        * @internalComponent
 689.178 +        */
 689.179 +		TBool MoreThanOneAllowed() const;
 689.180 +		
 689.181 +        /**
 689.182 +        * @internalComponent
 689.183 +        */		
 689.184 +		TBool HasCompactName() const;
 689.185 +		
 689.186 +        /**
 689.187 +        * @internalComponent
 689.188 +        */		
 689.189 +		RStringF CompactName() const;
 689.190 +		
 689.191 +        /**
 689.192 +        * @internalComponent
 689.193 +        */		
 689.194 +		TPreferredPlace PreferredPlaceInMessage() const;
 689.195 +
 689.196 +	public: // New functions, for internal use
 689.197 +
 689.198 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 689.199 +
 689.200 +	private: // From CSIPHeaderBase
 689.201 +
 689.202 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 689.203 +
 689.204 +	private: // From CSIPParameterHeaderBase
 689.205 +
 689.206 +		TBool ParamInsertionAllowed() const;
 689.207 +		HBufC8* ToTextMandatoryPartLC() const;
 689.208 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 689.209 +		const CSIPParamContainerBase& Params() const;
 689.210 +		CSIPParamContainerBase& Params();
 689.211 +
 689.212 +	private: // Constructors
 689.213 +
 689.214 +		CSIPContactHeader(TBool aIsStar=EFalse);
 689.215 +		void ConstructL();
 689.216 +		void ConstructL(CSIPAddress* aSIPAddress);
 689.217 +		void ConstructL(const CSIPContactHeader& aContactHeader);
 689.218 +
 689.219 +	private: // New functions 
 689.220 +
 689.221 +		void DoInternalizeValueL(RReadStream& aReadStream);
 689.222 +
 689.223 +	private: // Data
 689.224 +
 689.225 +		CSIPAddress* iSIPAddress;
 689.226 +		CSIPContactHeaderParams* iParams;
 689.227 +		TBool iIsStar;
 689.228 +
 689.229 +	private: // For testing purposes
 689.230 +	
 689.231 +		UNIT_TEST(CSIPContactHeaderTest)
 689.232 +	};
 689.233 +
 689.234 +#endif // CSIPCONTACTHEADER_H
 689.235 +
 689.236 +// End of File
   690.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   690.2 +++ b/epoc32/include/mw/sipcontentdispositionheader.h	Wed Mar 31 12:27:01 2010 +0100
   690.3 @@ -0,0 +1,165 @@
   690.4 +/*
   690.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   690.6 +* All rights reserved.
   690.7 +* This component and the accompanying materials are made available
   690.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   690.9 +* which accompanies this distribution, and is available
  690.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  690.11 +*
  690.12 +* Initial Contributors:
  690.13 +* Nokia Corporation - initial contribution.
  690.14 +*
  690.15 +* Contributors:
  690.16 +*
  690.17 +* Description:
  690.18 +* Name        : sipcontentdispositionheader.h
  690.19 +* Part of     : SIP Codec
  690.20 +* Interface   : SDK API, SIP Codec API
  690.21 +* Version     : SIP/4.0 
  690.22 +*
  690.23 +*/
  690.24 +
  690.25 +
  690.26 +
  690.27 +
  690.28 +#ifndef CSIPCONTENTDISPOSITIONHEADER_H
  690.29 +#define CSIPCONTENTDISPOSITIONHEADER_H
  690.30 +
  690.31 +//  INCLUDES
  690.32 +#include "sipparameterheaderbase.h"
  690.33 +#include "_sipcodecdefs.h"
  690.34 +
  690.35 +// FORWARD DECLARATIONS
  690.36 +class CSIPHeaderGenericParams;
  690.37 +
  690.38 +// CLASS DECLARATION
  690.39 +/**
  690.40 +* @publishedAll
  690.41 +* @released
  690.42 +*
  690.43 +* Class provides functions for setting and getting parameters in 
  690.44 +* SIP "Content-Disposition" header.
  690.45 +*
  690.46 +*  @lib sipcodec.lib
  690.47 +*/
  690.48 +class CSIPContentDispositionHeader : public CSIPParameterHeaderBase
  690.49 +	{
  690.50 +	public:	// Constructors and destructor
  690.51 +	
  690.52 +		/**
  690.53 +		* Constructs a CSIPContentDispositionHeader from textual representation 
  690.54 +		* of the header's value part.
  690.55 +		* @param aValue a value part of a "Content-Disposition"-header
  690.56 +		* @return a new instance of CSIPContentDispositionHeader
  690.57 +		*/
  690.58 +		IMPORT_C static CSIPContentDispositionHeader* 
  690.59 +			DecodeL (const TDesC8& aValue);
  690.60 +
  690.61 +		/**
  690.62 +		* Creates a new instance of CSIPContentDispositionHeader
  690.63 +		* @param aDispType a Disp-Type value
  690.64 +		* @return a new instance of CSIPContentDispositionHeader
  690.65 +		*/
  690.66 +		IMPORT_C static CSIPContentDispositionHeader* 
  690.67 +			NewL(const TDesC8& aDispType);
  690.68 +
  690.69 +		/**
  690.70 +		* Creates a new instance of CSIPContentDispositionHeader 
  690.71 +		* and puts it to CleanupStack
  690.72 +		* @param aDispType a Disp-Type value
  690.73 +		* @return a new instance of CSIPContentDispositionHeader
  690.74 +		*/
  690.75 +		IMPORT_C static CSIPContentDispositionHeader* 
  690.76 +			NewLC(const TDesC8& aDispType);
  690.77 +
  690.78 +		/**
  690.79 +		* Destructor. deletes the resources of CSIPContentDispositionHeader.
  690.80 +		*/
  690.81 +		IMPORT_C ~CSIPContentDispositionHeader();
  690.82 +
  690.83 +
  690.84 +	public: // New functions
  690.85 +
  690.86 +		/**
  690.87 +		* Gets the disp-type parameter from the "Content-Disposition" header
  690.88 +		* @return the disp-type parameter
  690.89 +		*/
  690.90 +		IMPORT_C const TDesC8& DispType() const;
  690.91 +
  690.92 +		/**
  690.93 +		* Sets the disp-type parameter in the "Content-Disposition" header; 
  690.94 +		* @param aTag a disp-type parameter to set
  690.95 +		*/
  690.96 +		IMPORT_C void SetDispTypeL(const TDesC8& aDispType);
  690.97 +	
  690.98 +		/**
  690.99 +		* Constructs an instance of a CSIPContentDispositionHeader 
 690.100 +		* from a RReadStream
 690.101 +		* @param aReadStream a stream containing the value of the
 690.102 +		*        externalized object (header name not included). 
 690.103 +		* @return an instance of a CSIPContentDispositionHeader
 690.104 +		*/
 690.105 +		IMPORT_C static CSIPHeaderBase* 
 690.106 +			InternalizeValueL(RReadStream& aReadStream);
 690.107 +
 690.108 +
 690.109 +	public: // From CSIPHeaderBase
 690.110 +
 690.111 +		/**
 690.112 +		* From CSIPHeaderBase CloneL
 690.113 +		*/
 690.114 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 690.115 +
 690.116 +		/**
 690.117 +		* From CSIPHeaderBase Name
 690.118 +		*/
 690.119 +		IMPORT_C RStringF Name() const;
 690.120 +
 690.121 +
 690.122 +	public: // From CSIPHeaderBase, for internal use
 690.123 +
 690.124 +        /**
 690.125 +        * @internalComponent
 690.126 +        */	
 690.127 +		TPreferredPlace PreferredPlaceInMessage() const;
 690.128 +
 690.129 +	public: // New functions, for internal use
 690.130 +
 690.131 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 690.132 +
 690.133 +	private: // From CSIPHeaderBase
 690.134 +
 690.135 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 690.136 +
 690.137 +	private: // From CSIPParameterHeaderBase
 690.138 +	
 690.139 +		HBufC8* ToTextMandatoryPartLC() const;
 690.140 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 690.141 +		const CSIPParamContainerBase& Params() const;
 690.142 +		CSIPParamContainerBase& Params();
 690.143 +
 690.144 +	private: // Constructors
 690.145 +
 690.146 +		CSIPContentDispositionHeader();
 690.147 +		void ConstructL();
 690.148 +		void ConstructL(const TDesC8& aDispType);
 690.149 +		void ConstructL(const TDesC8& aDispType, const TDesC8& aHandlingParam);
 690.150 +		void ConstructL(const CSIPContentDispositionHeader& aHeader);
 690.151 +
 690.152 +	private: // New functions
 690.153 +
 690.154 +		void DoInternalizeValueL(RReadStream& aReadStream);
 690.155 +
 690.156 +	private: // Data
 690.157 +
 690.158 +		HBufC8* iDispType;
 690.159 +		CSIPHeaderGenericParams* iParams;
 690.160 +
 690.161 +	private: // For testing purposes
 690.162 +	
 690.163 +		UNIT_TEST(CSIPContentDispositionHeaderTest)
 690.164 +	};
 690.165 +
 690.166 +#endif // CSIPCONTENTDISPOSITIONHEADER_H
 690.167 +
 690.168 +// End of File
   691.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   691.2 +++ b/epoc32/include/mw/sipcontentencodingheader.h	Wed Mar 31 12:27:01 2010 +0100
   691.3 @@ -0,0 +1,133 @@
   691.4 +/*
   691.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   691.6 +* All rights reserved.
   691.7 +* This component and the accompanying materials are made available
   691.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   691.9 +* which accompanies this distribution, and is available
  691.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  691.11 +*
  691.12 +* Initial Contributors:
  691.13 +* Nokia Corporation - initial contribution.
  691.14 +*
  691.15 +* Contributors:
  691.16 +*
  691.17 +* Description:
  691.18 +* Name        : sipcontentencodingheader.h
  691.19 +* Part of     : SIP Codec
  691.20 +* Interface   : SDK API, SIP Codec API
  691.21 +* Version     : SIP/4.0 
  691.22 +*
  691.23 +*/
  691.24 +
  691.25 +
  691.26 +
  691.27 +
  691.28 +#ifndef CSIPCONTENTENCODINGHEADER_H
  691.29 +#define CSIPCONTENTENCODINGHEADER_H
  691.30 +
  691.31 +//  INCLUDES
  691.32 +#include "siptokenheaderbase.h"
  691.33 +#include "_sipcodecdefs.h"
  691.34 +
  691.35 +// CLASS DECLARATION
  691.36 +/**
  691.37 +* @publishedAll
  691.38 +* @released
  691.39 +*
  691.40 +* Class provides functions for setting and getting parameters 
  691.41 +* in SIP "Content-Encoding" header.
  691.42 +*
  691.43 +*  @lib sipcodec.lib
  691.44 +*/
  691.45 +class CSIPContentEncodingHeader : public CSIPTokenHeaderBase
  691.46 +	{
  691.47 +	public:	// Constructors and destructor
  691.48 +
  691.49 +		/**
  691.50 +		* Constructs a CSIPContentEncodingHeader from textual representation
  691.51 +		* of the header's value part.
  691.52 +		* @param aValue a value part of a "Content-Encoding"-header
  691.53 +		* @return an array containing 1..n instances of 
  691.54 +		*         CSIPContentEncodingHeader
  691.55 +		*/
  691.56 +		IMPORT_C static RPointerArray<CSIPContentEncodingHeader> 
  691.57 +			DecodeL(const TDesC8& aValue);
  691.58 +
  691.59 +		/**
  691.60 +		* Creates a new instance of CSIPContentEncodingHeader
  691.61 +		* @param aValue a content-coding value 
  691.62 +		* @return a new instance of CSIPContentEncodingHeader
  691.63 +		*/
  691.64 +		IMPORT_C static CSIPContentEncodingHeader* NewL(RStringF aValue);
  691.65 +
  691.66 +		/**
  691.67 +		* Creates a new instance of CSIPContentEncodingHeader 
  691.68 +		* and puts it to CleanupStack
  691.69 +		* @param aValue a content-coding value
  691.70 +		* @return a new instance of CSIPContentEncodingHeader
  691.71 +		*/
  691.72 +		IMPORT_C static CSIPContentEncodingHeader* NewLC(RStringF aValue);
  691.73 +
  691.74 +		/**
  691.75 +		* Destructor, deletes the resources of CSIPContentEncodingHeader.
  691.76 +		*/
  691.77 +		IMPORT_C ~CSIPContentEncodingHeader();
  691.78 +
  691.79 +
  691.80 +	public: // New functions
  691.81 +
  691.82 +		/**
  691.83 +		* Constructs an instance of a CSIPContentEncodingHeader 
  691.84 +		* from a RReadStream
  691.85 +		* @param aReadStream a stream containing the value of the
  691.86 +		*        externalized object (header name not included).
  691.87 +		* @return an instance of a CSIPContentEncodingHeader
  691.88 +		*/
  691.89 +
  691.90 +		IMPORT_C static CSIPHeaderBase* 
  691.91 +			InternalizeValueL(RReadStream& aReadStream);
  691.92 +
  691.93 +
  691.94 +	public: // From CSIPHeaderBase
  691.95 +
  691.96 +		/**
  691.97 +		* From CSIPHeaderBase CloneL
  691.98 +		*/
  691.99 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 691.100 +
 691.101 +		/**
 691.102 +		* From CSIPHeaderBase Name
 691.103 +		*/
 691.104 +		IMPORT_C RStringF Name() const;
 691.105 +
 691.106 +
 691.107 +	public: // From CSIPHeaderBase, for internal use
 691.108 +
 691.109 +        /**
 691.110 +        * @internalComponent
 691.111 +        */
 691.112 +		TBool HasCompactName() const;
 691.113 +		
 691.114 +        /**
 691.115 +        * @internalComponent
 691.116 +        */		
 691.117 +		RStringF CompactName() const;
 691.118 +		
 691.119 +        /**
 691.120 +        * @internalComponent
 691.121 +        */		
 691.122 +		TPreferredPlace PreferredPlaceInMessage() const;
 691.123 +
 691.124 +	public: // New functions, for internal use
 691.125 +
 691.126 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 691.127 +
 691.128 +	private: // Constructors
 691.129 +
 691.130 +		CSIPContentEncodingHeader();
 691.131 +		CSIPContentEncodingHeader(const CSIPContentEncodingHeader& aHeader);
 691.132 +		};
 691.133 +
 691.134 +#endif // CSIPCONTENTENCODINGHEADER_H
 691.135 +
 691.136 +// End of File
   692.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   692.2 +++ b/epoc32/include/mw/sipcontenttypeheader.h	Wed Mar 31 12:27:01 2010 +0100
   692.3 @@ -0,0 +1,187 @@
   692.4 +/*
   692.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   692.6 +* All rights reserved.
   692.7 +* This component and the accompanying materials are made available
   692.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   692.9 +* which accompanies this distribution, and is available
  692.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  692.11 +*
  692.12 +* Initial Contributors:
  692.13 +* Nokia Corporation - initial contribution.
  692.14 +*
  692.15 +* Contributors:
  692.16 +*
  692.17 +* Description:
  692.18 +* Name        : sipcontenttypeheader.h
  692.19 +* Part of     : SIP Codec
  692.20 +* Interface   : SDK API, SIP Codec API
  692.21 +* Version     : SIP/4.0 
  692.22 +*
  692.23 +*/
  692.24 +
  692.25 +
  692.26 +
  692.27 +
  692.28 +#ifndef CSIPCONTENTTYPEHEADER_H
  692.29 +#define CSIPCONTENTTYPEHEADER_H
  692.30 +
  692.31 +//  INCLUDES
  692.32 +#include "sipparameterheaderbase.h"
  692.33 +#include "_sipcodecdefs.h"
  692.34 +
  692.35 +// FORWARD DECLARATIONS
  692.36 +class CSIPContentTypeHeaderParams;
  692.37 +
  692.38 +// CLASS DECLARATION
  692.39 +/**
  692.40 +* @publishedAll
  692.41 +* @released
  692.42 +*
  692.43 +* Class provides functions for setting and getting media types and
  692.44 +* parameters in SIP "Content-Type" header.
  692.45 +*
  692.46 +*  @lib sipcodec.lib
  692.47 +*/
  692.48 +class CSIPContentTypeHeader : public CSIPParameterHeaderBase
  692.49 +	{
  692.50 +	public:	// Constructors and destructor
  692.51 +
  692.52 +		/**
  692.53 +		* Constructs a CSIPContentTypeHeader from textual representation 
  692.54 +		* of the header's value part.
  692.55 +		* @param aValue a value part of a "Content-Type"-header
  692.56 +		* @return a new instance of CSIPContentTypeHeader
  692.57 +		*/
  692.58 +		IMPORT_C static CSIPContentTypeHeader* DecodeL(const TDesC8& aValue);
  692.59 +
  692.60 +		/**
  692.61 +		* Creates a new instance of CSIPContentTypeHeader
  692.62 +		* @param aMediaType a media type to set. For example "application"
  692.63 +		* @param aMediaSubtype a media subtype to set. For example "sdp"
  692.64 +		* @return a new instance of CSIPContentTypeHeader
  692.65 +		*/
  692.66 +		IMPORT_C static CSIPContentTypeHeader* 
  692.67 +			NewL(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
  692.68 +
  692.69 +		/**
  692.70 +		* Creates a new instance of CSIPContentTypeHeader 
  692.71 +		* and puts it onto the cleanup stack
  692.72 +		* @param aMediaType a media type to set. For example "application"
  692.73 +		* @param aMediaSubtype a media subtype to set. For example "sdp"
  692.74 +		* @return a new instance of CSIPContentTypeHeader
  692.75 +		*/
  692.76 +		IMPORT_C static CSIPContentTypeHeader* 
  692.77 +			NewLC(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
  692.78 +
  692.79 +		/**
  692.80 +		* Destructor, deletes the resources of CSIPContentTypeHeader.
  692.81 +		*/
  692.82 +		IMPORT_C ~CSIPContentTypeHeader();
  692.83 +
  692.84 +	public: // New functions
  692.85 +
  692.86 +		/**
  692.87 +		* Gets the media type from the "Content-Type" header
  692.88 +		* @return a media type
  692.89 +		*/
  692.90 +		IMPORT_C const TDesC8& MediaType() const;
  692.91 +
  692.92 +		/**
  692.93 +		* Sets the media type in the "Content-Type" header
  692.94 +		* @param aMediaType a media type
  692.95 +		*/
  692.96 +		IMPORT_C void SetMediaTypeL(const TDesC8& aMediaType);
  692.97 +
  692.98 +		/**
  692.99 +		* Gets the media subtype from the "Content-Type" header
 692.100 +		* @return a media subtype
 692.101 +		*/
 692.102 +		IMPORT_C const TDesC8& MediaSubtype() const;
 692.103 +
 692.104 +		/**
 692.105 +		* Sets the media subtype in the "Content-Type" header
 692.106 +		* @param aMediaSubtype a media subtype
 692.107 +		*/
 692.108 +		IMPORT_C void SetMediaSubtypeL(const TDesC8& aMediaSubtype);
 692.109 +
 692.110 +		/**
 692.111 +		* Constructs an instance of a CSIPContentTypeHeader from a RReadStream
 692.112 +		* @param aReadStream a stream containing the value of the
 692.113 +		*        externalized header object (header name not included).
 692.114 +		* @return an instance of a CSIPContentTypeHeader
 692.115 +		*/
 692.116 +
 692.117 +		IMPORT_C static CSIPHeaderBase* 
 692.118 +			InternalizeValueL(RReadStream& aReadStream);
 692.119 +
 692.120 +
 692.121 +	public: // From CSIPHeaderBase
 692.122 +
 692.123 +		/**
 692.124 +		* From CSIPHeaderBase CloneL
 692.125 +		*/
 692.126 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 692.127 +
 692.128 +		/**
 692.129 +		* From CSIPHeaderBase Name
 692.130 +		*/	
 692.131 +		IMPORT_C RStringF Name() const;
 692.132 +
 692.133 +
 692.134 +	public: // From CSIPHeaderBase, for internal use
 692.135 +
 692.136 +        /**
 692.137 +        * @internalComponent
 692.138 +        */
 692.139 +		TBool HasCompactName() const;
 692.140 +		
 692.141 +        /**
 692.142 +        * @internalComponent
 692.143 +        */		
 692.144 +		RStringF CompactName() const;
 692.145 +		
 692.146 +        /**
 692.147 +        * @internalComponent
 692.148 +        */		
 692.149 +		TPreferredPlace PreferredPlaceInMessage() const;
 692.150 +
 692.151 +	public: // New functions, for internal use
 692.152 +
 692.153 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 692.154 +
 692.155 +	private: // From CSIPHeaderBase
 692.156 +
 692.157 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 692.158 +
 692.159 +	private: // CSIPParameterHeaderBase
 692.160 +
 692.161 +		HBufC8* ToTextMandatoryPartLC() const;
 692.162 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 692.163 +		const CSIPParamContainerBase& Params() const;
 692.164 +		CSIPParamContainerBase& Params();
 692.165 +
 692.166 +	private: // Constructors
 692.167 +
 692.168 +		CSIPContentTypeHeader();
 692.169 +		void ConstructL();
 692.170 +		void ConstructL(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
 692.171 +		void ConstructL(const CSIPContentTypeHeader& aContentTypeHeader);
 692.172 +
 692.173 +	private: // New functions
 692.174 +
 692.175 +		void DoInternalizeValueL(RReadStream& aReadStream);
 692.176 +
 692.177 +	private: // Data
 692.178 +
 692.179 +		HBufC8* iMediaType;
 692.180 +		HBufC8* iMediaSubtype;
 692.181 +		CSIPContentTypeHeaderParams* iParams;
 692.182 +
 692.183 +	private: // For testing purposes
 692.184 +	
 692.185 +		UNIT_TEST(CSIPContentTypeHeaderTest)
 692.186 +	};
 692.187 +
 692.188 +#endif // CSIPCONTENTTYPEHEADER_H
 692.189 +
 692.190 +// End of File
   693.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   693.2 +++ b/epoc32/include/mw/sipcseqheader.h	Wed Mar 31 12:27:01 2010 +0100
   693.3 @@ -0,0 +1,168 @@
   693.4 +/*
   693.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   693.6 +* All rights reserved.
   693.7 +* This component and the accompanying materials are made available
   693.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   693.9 +* which accompanies this distribution, and is available
  693.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  693.11 +*
  693.12 +* Initial Contributors:
  693.13 +* Nokia Corporation - initial contribution.
  693.14 +*
  693.15 +* Contributors:
  693.16 +*
  693.17 +* Description:
  693.18 +* Name        : sipcseqheader.h
  693.19 +* Part of     : SIP Codec
  693.20 +* Interface   : SDK API, SIP Codec API
  693.21 +* Version     : SIP/4.0 
  693.22 +*
  693.23 +*/
  693.24 +
  693.25 +
  693.26 +
  693.27 +
  693.28 +#ifndef CSIPCSEQHEADER_H
  693.29 +#define CSIPCSEQHEADER_H
  693.30 +
  693.31 +//  INCLUDES
  693.32 +#include "sipheaderbase.h"
  693.33 +#include "_sipcodecdefs.h"
  693.34 +
  693.35 +// CLASS DECLARATION
  693.36 +/**
  693.37 +* @publishedAll
  693.38 +* @released
  693.39 +*
  693.40 +* Class provides functions for setting and getting sequence number and
  693.41 +* method in SIP "CSeq" header.
  693.42 +*
  693.43 +*  @lib sipcodec.lib
  693.44 +*/
  693.45 +class CSIPCSeqHeader : public CSIPHeaderBase
  693.46 +	{
  693.47 +	public: // Constructors and destructor
  693.48 +
  693.49 +		/**
  693.50 +		* Constructs a CSIPCSeqHeader from textual representation 
  693.51 +		* of the header's value part.
  693.52 +		* @param aValue a value part of a "CSeq"-header (e.g. "1 REGISTER")
  693.53 +		* @return a new instance of CSIPCSeqHeader.  
  693.54 +		*/
  693.55 +		IMPORT_C static CSIPCSeqHeader* DecodeL(const TDesC8& aValue);
  693.56 +
  693.57 +		/**
  693.58 +		* Creates a new instance of CSIPCSeqHeader
  693.59 +		* @param aSeq a sequence number to set.
  693.60 +		* @param aMethod a method to set. For example "REGISTER"
  693.61 +		* @return a new instance of CSIPCSeqHeader
  693.62 +		*/
  693.63 +		IMPORT_C static CSIPCSeqHeader* NewL(TUint aSeq, RStringF aMethod);
  693.64 +
  693.65 +		/**
  693.66 +		* Creates a new instance of CSIPCSeqHeader and puts it to CleanupStack
  693.67 +		* @param aSeq a sequence number to set.
  693.68 +		* @param aMethod a method to set. For example "REGISTER"
  693.69 +		* @return a new instance of CSIPCSeqHeader
  693.70 +		*/
  693.71 +		IMPORT_C static CSIPCSeqHeader* NewLC(TUint aSeq, RStringF aMethod);
  693.72 +
  693.73 +		/**
  693.74 +		* Destructor, deletes the resources of CSIPCSeqHeader.
  693.75 +		*/
  693.76 +		IMPORT_C ~CSIPCSeqHeader();
  693.77 +
  693.78 +
  693.79 +	public: // New functions
  693.80 +
  693.81 +		/**
  693.82 +		* Gets the sequence number from the "CSeq" header
  693.83 +		* @return the current sequence number
  693.84 +		*/
  693.85 +		IMPORT_C TUint Seq() const;
  693.86 +
  693.87 +		/**
  693.88 +		* Sets the sequence number in the "CSeq" header
  693.89 +		* @param aSeq a sequence number to set
  693.90 +		*/
  693.91 +		IMPORT_C void SetSeq(TUint aSeq);
  693.92 +
  693.93 +		/**
  693.94 +		* Gets the method from the "CSeq" header
  693.95 +		* @return the method 
  693.96 +		*/
  693.97 +		IMPORT_C RStringF Method() const;
  693.98 +
  693.99 +		/**
 693.100 +		* Sets the method in the "CSeq" header
 693.101 +		* @param aMethod a method to set
 693.102 +		*/
 693.103 +		IMPORT_C void SetMethodL(RStringF aMethod);
 693.104 +
 693.105 +		/**
 693.106 +		* Constructs an instance of a CSIPCSeqHeader from a RReadStream
 693.107 +		* @param aReadStream a stream containing the value of the
 693.108 +		*	     externalized object (header name not included). 
 693.109 +		* @return an instance of a CSIPCSeqHeader
 693.110 +		*/
 693.111 +		IMPORT_C static CSIPHeaderBase* 
 693.112 +			InternalizeValueL(RReadStream& aReadStream);
 693.113 +
 693.114 +
 693.115 +	public: // From CSIPHeaderBase
 693.116 +
 693.117 +		/**
 693.118 +		* From CSIPHeaderBase CloneL
 693.119 +		*/
 693.120 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 693.121 +
 693.122 +		/**
 693.123 +		* From CSIPHeaderBase Name
 693.124 +		*/
 693.125 +		IMPORT_C RStringF Name() const;
 693.126 +
 693.127 +		/**
 693.128 +		* From CSIPHeaderBase ToTextValueL
 693.129 +		*/
 693.130 +		IMPORT_C HBufC8* ToTextValueL() const;
 693.131 +
 693.132 +
 693.133 +	public: // From CSIPHeaderBase, for internal use
 693.134 +
 693.135 +        /**
 693.136 +        * @internalComponent
 693.137 +        */
 693.138 +		TPreferredPlace PreferredPlaceInMessage () const;
 693.139 +
 693.140 +	public: // New functions, for internal use
 693.141 +
 693.142 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 693.143 +
 693.144 +	private: // From CSIPHeaderBase
 693.145 +
 693.146 +		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 693.147 +
 693.148 +	private: // Constructors
 693.149 +
 693.150 +		CSIPCSeqHeader();
 693.151 +		void ConstructL(TUint aCSeq, RStringF aMethod);
 693.152 +	
 693.153 +	private: // New functions
 693.154 +		
 693.155 +		void DoInternalizeValueL(RReadStream& aReadStream);
 693.156 +		void ParseL(const TDesC8& aValue);
 693.157 +		void SetMethodL(const TDesC8& aMethod);
 693.158 +
 693.159 +	private: // Data
 693.160 +
 693.161 +		TUint iSeq;
 693.162 +		RStringF iMethod;
 693.163 +
 693.164 +	private: // For testing purposes
 693.165 +	
 693.166 +		UNIT_TEST(CSIPCSeqHeaderTest)
 693.167 +	};
 693.168 +
 693.169 +#endif // CSIPCSEQHEADER_H
 693.170 +
 693.171 +// End of File
   694.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   694.2 +++ b/epoc32/include/mw/sipdefs.h	Wed Mar 31 12:27:01 2010 +0100
   694.3 @@ -0,0 +1,40 @@
   694.4 +/*
   694.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   694.6 +* All rights reserved.
   694.7 +* This component and the accompanying materials are made available
   694.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   694.9 +* which accompanies this distribution, and is available
  694.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  694.11 +*
  694.12 +* Initial Contributors:
  694.13 +* Nokia Corporation - initial contribution.
  694.14 +*
  694.15 +* Contributors:
  694.16 +*
  694.17 +* Description:
  694.18 +* Name          : sipdefs.h
  694.19 +* Part of       : SIP Client API
  694.20 +* Interface     : SDK API, SIP Client API
  694.21 +* Version       : 1.0
  694.22 +*
  694.23 +*/
  694.24 +
  694.25 +
  694.26 +
  694.27 +#ifndef SIPDEFS_H
  694.28 +#define SIPDEFS_H
  694.29 +
  694.30 +// INCLUDES
  694.31 +#include <e32base.h>
  694.32 +
  694.33 +/**
  694.34 +* @file
  694.35 +* @publishedAll
  694.36 +* @released
  694.37 +*/
  694.38 +
  694.39 +// CONSTANTS
  694.40 +/** SIP minimum value for the expiration in seconds*/
  694.41 +const TUint KSIPMinExpirationValue=60;
  694.42 +
  694.43 +#endif // SIPDEFS_H
   695.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   695.2 +++ b/epoc32/include/mw/sipdialog.h	Wed Mar 31 12:27:01 2010 +0100
   695.3 @@ -0,0 +1,252 @@
   695.4 +/*
   695.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   695.6 +* All rights reserved.
   695.7 +* This component and the accompanying materials are made available
   695.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   695.9 +* which accompanies this distribution, and is available
  695.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  695.11 +*
  695.12 +* Initial Contributors:
  695.13 +* Nokia Corporation - initial contribution.
  695.14 +*
  695.15 +* Contributors:
  695.16 +*
  695.17 +* Description:
  695.18 +* Name        : sipdialog.h
  695.19 +* Part of     : SIP Client
  695.20 +* Interface   : SDK API, SIP Client API
  695.21 +* Version     : 1.0
  695.22 +*
  695.23 +*/
  695.24 +
  695.25 +
  695.26 +
  695.27 +
  695.28 +#ifndef CSIPDIALOG_H
  695.29 +#define CSIPDIALOG_H
  695.30 +
  695.31 +// INCLUDES
  695.32 +#include <e32base.h>
  695.33 +#include <stringpool.h>
  695.34 +#include "_sipcodecdefs.h"
  695.35 +
  695.36 +// FORWARD DECLARATIONS
  695.37 +class CSIPConnection;
  695.38 +class CSIPConnectionImplementation;
  695.39 +class MSIPRegistrationContext;
  695.40 +class CSIPDialogAssocBase;
  695.41 +class CSIPFromHeader;
  695.42 +class CSIPToHeader;
  695.43 +class CSIPCallIDHeader;
  695.44 +class CUri8;
  695.45 +class CSIPDialogImplementation;
  695.46 +
  695.47 +// CLASS DECLARATION
  695.48 +
  695.49 +/**
  695.50 +*  @publishedAll
  695.51 +*  @released
  695.52 +*
  695.53 +*  Class for managing SIP dialogs.
  695.54 +*  It provides services querying dialog state, obtaining the dialog related
  695.55 +*  SIP headers and getting all dialog associations.
  695.56 +*
  695.57 +*  The user of the class cannot instantiate this class.
  695.58 +*  @lib sipclient
  695.59 +*/
  695.60 +
  695.61 +class CSIPDialog: public CBase
  695.62 +	{
  695.63 +	public:
  695.64 +		/** Dialog states */
  695.65 +		enum TState
  695.66 +			{
  695.67 +			/** Initiliazed state */
  695.68 +			EInit,
  695.69 +			/** Early state */
  695.70 +			EEarly,
  695.71 +			/** Confirmed state */
  695.72 +			EConfirmed,
  695.73 +			/** Terminated state */
  695.74 +			ETerminated
  695.75 +			};
  695.76 +
  695.77 +	public: //New functions
  695.78 +		/**
  695.79 +		* Gets dialog state		
  695.80 +		* @return dialog state
  695.81 +		*/
  695.82 +        IMPORT_C CSIPDialog::TState State() const;
  695.83 +
  695.84 +		/**
  695.85 +		* Gets all dialog associations. 		
  695.86 +		* @return All dialog associations. Ownership of the array or the items
  695.87 +        *   inside it, is not transferred.
  695.88 +		*/
  695.89 +		IMPORT_C const RPointerArray<CSIPDialogAssocBase>&
  695.90 +					   SIPDialogAssociations() const;
  695.91 +
  695.92 +        /**
  695.93 +        * Gets used registration context for this dialog
  695.94 +        * @return associated registration or 0-pointer otherwise.
  695.95 +        *   Ownership is not transferred.
  695.96 +        */
  695.97 +        IMPORT_C const MSIPRegistrationContext* RegistrationContext() const;
  695.98 +	
  695.99 +        /**
 695.100 +		* Checks if the dialog association belongs to this dialog
 695.101 +		* @param aDialogAssoc a dialog association
 695.102 +		* @return ETrue if belongs, EFalse otherwise
 695.103 +		*/
 695.104 +		IMPORT_C TBool
 695.105 +            IsAssociated(const CSIPDialogAssocBase& aDialogAssoc) const;
 695.106 +
 695.107 +        /**
 695.108 +		* Gets the SIP connection used for this dialog
 695.109 +		* @return SIP connection used for the dialog, or 0-pointer if the
 695.110 +        *   connection has been deleted. Ownership isn't transferred.
 695.111 +		*/
 695.112 +        IMPORT_C CSIPConnection* Connection();
 695.113 +
 695.114 +        /**
 695.115 +		* Gets the SIP connection used for this dialog.
 695.116 +		* @return SIP connection used for the dialog, or 0-pointer if the
 695.117 +        *   connection has been deleted. Ownership isn't transferred.
 695.118 +		*/
 695.119 +        IMPORT_C const CSIPConnection* Connection() const;
 695.120 +
 695.121 +        /**
 695.122 +		* Gets originator's address
 695.123 +		* @return originator's address (From-header)
 695.124 +		*/
 695.125 +		IMPORT_C const CSIPFromHeader& FromHeader() const;
 695.126 +
 695.127 +		/**
 695.128 +		* Gets recipient's address
 695.129 +		* @return recipient's address (To-header)
 695.130 +		*/
 695.131 +		IMPORT_C const CSIPToHeader& ToHeader() const;
 695.132 +
 695.133 +		/**
 695.134 +		* Gets remote-uri used during dialog creation
 695.135 +		* @return Remote target uri
 695.136 +		*/
 695.137 +		IMPORT_C const CUri8& RemoteURI() const;
 695.138 +
 695.139 +		/**
 695.140 +		* Gets Call-ID of SIP dialog
 695.141 +		* @pre State()==CSIPDialog::EEarly || State()==CSIPDialog::EConfirmed
 695.142 +		* @return Call-ID of SIP dialog
 695.143 +		* @leave KErrSIPInvalidDialogState if dialog doesn't yet have a Call-ID
 695.144 +		*/
 695.145 +		IMPORT_C const CSIPCallIDHeader& CallIdL() const;
 695.146 +
 695.147 +        /**
 695.148 +		* Compares this object to another object
 695.149 +		* @param aDialog CSIPDialog object to compare
 695.150 +		* @returns ETrue if the objects are equal, otherwise EFalse
 695.151 +		*/
 695.152 +        IMPORT_C TBool operator==(const CSIPDialog& aDialog) const;
 695.153 +        
 695.154 +        /**
 695.155 +        * Sets the dialog to state to CSIPDialog::EInit.
 695.156 +        * The local dialog identifier data 
 695.157 +        * (Call-ID, CSeq and From-header's tag) will be reused. 
 695.158 +        * After calling this function, the dialog that was already terminated 
 695.159 +        * can be used for sending the dialog initiating request such as 
 695.160 +        * INVITE or SUBSCRIBE reusing the stored Call-ID and From-header's tag
 695.161 +        * and the stored CSeq incremented by one.
 695.162 +        * @pre State()==CSIPDialog::ETerminated
 695.163 +        * @returns KErrNone if succesful and KErrNoMemory if the memory is low.
 695.164 +        */
 695.165 +        IMPORT_C TInt ReuseInitialRequestData();
 695.166 +
 695.167 +	public: //Constructors and destructor, for internal use
 695.168 +		/**
 695.169 +		* Two-phased constructor. 
 695.170 +		* This constructor should be used if the user has received
 695.171 +		* SIP request that creates a SIP dialog association.
 695.172 +        *
 695.173 +        * @param aConnImplementation Implementation of the used SIP connection
 695.174 +        * @return New object, ownership is transferred.
 695.175 +        */
 695.176 +		static CSIPDialog*
 695.177 +			NewL(CSIPConnectionImplementation& aConnImplementation);
 695.178 +
 695.179 +		/**
 695.180 +		* Two-phased constructor
 695.181 +		* This constructor should be used if the user has received
 695.182 +		* SIP request that creates a SIP dialog association.
 695.183 +        *
 695.184 +		* @param aConnImplementation Implementation of the used SIP connection
 695.185 +        * @return New object, ownership is transferred.
 695.186 +       	*/
 695.187 +		static CSIPDialog*
 695.188 +			NewLC(CSIPConnectionImplementation& aConnImplementation);
 695.189 +
 695.190 +		/**
 695.191 +		* Two-phased constructor
 695.192 +		* This constructor should be used if the user has received
 695.193 +		* SIP request that creates a SIP dialog association.
 695.194 +        *
 695.195 +        * @param aConnImplementation Implementation of the used SIP connection
 695.196 +		* @param aContext Registration context whose outbound proxy and other
 695.197 +		*        parameters are to be used.
 695.198 +        * @return New object, ownership is transferred.
 695.199 +       	*/
 695.200 +		static CSIPDialog*
 695.201 +			NewL(CSIPConnectionImplementation& aConnImplementation,
 695.202 +                 const MSIPRegistrationContext& aContext);
 695.203 +
 695.204 +		/**
 695.205 +		* Two-phased constructor
 695.206 +		* This constructor should be used if the user has received
 695.207 +		* SIP request that creates a SIP dialog association.
 695.208 +        *
 695.209 +        * @param aConnImplementation Implementation of the used SIP connection
 695.210 +		* @param aContext Registration context whose outbound proxy and other
 695.211 +		*        parameters are to be used.
 695.212 +        * @return New object, ownership is transferred.
 695.213 +        */
 695.214 +		static CSIPDialog*
 695.215 +			NewLC(CSIPConnectionImplementation& aConnImplementation,
 695.216 +                  const MSIPRegistrationContext& aContext);
 695.217 +
 695.218 +		/**
 695.219 +		* Destructor
 695.220 +		*/
 695.221 +		~CSIPDialog();
 695.222 +
 695.223 +	public: // New functions, for internal use
 695.224 +
 695.225 +		/**
 695.226 +		* Returns the CSIPDialogImplementation.
 695.227 + 		* @return CSIPDialogImplementation
 695.228 + 		*/
 695.229 +		CSIPDialogImplementation& Implementation();
 695.230 +
 695.231 +    private: // Constructors
 695.232 +
 695.233 +        CSIPDialog();        
 695.234 +
 695.235 +        void ConstructL(CSIPConnectionImplementation& aConnImplementation);
 695.236 +        
 695.237 +        void ConstructL(CSIPConnectionImplementation& aConnImplementation,
 695.238 +                   		const MSIPRegistrationContext& aContext);
 695.239 +
 695.240 +private: // Data
 695.241 +
 695.242 +		//Implementation instance, CSIPDialog doesn't own it
 695.243 +		CSIPDialogImplementation* iImplementation;
 695.244 +
 695.245 +private: // For testing purposes
 695.246 +
 695.247 +	    UNIT_TEST(CSIP_Test)
 695.248 +        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 695.249 +        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 695.250 +        UNIT_TEST(CSIPReferDialogAssoc_Test)
 695.251 +
 695.252 +        __DECLARE_TEST;
 695.253 +	};
 695.254 +
 695.255 +#endif
   696.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   696.2 +++ b/epoc32/include/mw/sipdialogassocbase.h	Wed Mar 31 12:27:01 2010 +0100
   696.3 @@ -0,0 +1,164 @@
   696.4 +/*
   696.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   696.6 +* All rights reserved.
   696.7 +* This component and the accompanying materials are made available
   696.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   696.9 +* which accompanies this distribution, and is available
  696.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  696.11 +*
  696.12 +* Initial Contributors:
  696.13 +* Nokia Corporation - initial contribution.
  696.14 +*
  696.15 +* Contributors:
  696.16 +*
  696.17 +* Description:
  696.18 +* Name        : sipdialogassocbase.h
  696.19 +* Part of     : SIP Client
  696.20 +* Interface   : SDK API, SIP Client API
  696.21 +* Version     : 1.0
  696.22 +*
  696.23 +*/
  696.24 +
  696.25 +
  696.26 +
  696.27 +#ifndef CSIPDIALOGASSOCBASE_H
  696.28 +#define CSIPDIALOGASSOCBASE_H
  696.29 +
  696.30 +// INCLUDES
  696.31 +#include <stringpool.h>
  696.32 +#include "_sipcodecdefs.h"
  696.33 +
  696.34 +// FORWARD DECLARATIONS
  696.35 +class CSIPMessageElements;
  696.36 +class CSIPClientTransaction;
  696.37 +class CSIPDialog;
  696.38 +class CSIPRefresh;
  696.39 +class CSIPServerTransaction;
  696.40 +class CSIPDialogAssocImplementation;
  696.41 +
  696.42 +// CLASS DECLARATION
  696.43 +
  696.44 +/**
  696.45 +*  @publishedAll
  696.46 +*  @released
  696.47 +*
  696.48 +*  Base class for SIP dialog associations. It provides services for getting
  696.49 +*  associated SIP dialog, actual dialog association type and for sending non
  696.50 +*  target refresh requests within the dialog association.
  696.51 +*  @lib sipclient
  696.52 +*/
  696.53 +class CSIPDialogAssocBase : public CBase
  696.54 +	{
  696.55 +	public: // Destructor
  696.56 +
  696.57 +		/**
  696.58 +		* Destructor
  696.59 +        * @internalComponent		
  696.60 +		*/
  696.61 +		virtual ~CSIPDialogAssocBase();    
  696.62 +
  696.63 +	public: // New functions
  696.64 +
  696.65 +		/**
  696.66 +		* Gets the dialog this dialog association belongs to
  696.67 +		* @return associated dialog
  696.68 +		*/
  696.69 +		IMPORT_C const CSIPDialog& Dialog() const;
  696.70 +
  696.71 +		/**
  696.72 +		* Gets dialog this dialog association belongs to
  696.73 +		* @return associated dialog
  696.74 +		*/
  696.75 +		IMPORT_C CSIPDialog& Dialog();
  696.76 +
  696.77 +		/**
  696.78 +		* Creates SIP request and sends it to the remote target.
  696.79 +		* This function should be used for sending SIP extension
  696.80 +		* requests within dialog assocation that do not cause 
  696.81 +		* sip dialog associations to be created. In SIP terms
  696.82 +		* this request is non target refresh request.
  696.83 +		* @pre SIPDialog().State() != CSIPDialog::EInit &&
  696.84 +		*      SIPDialog().State() != CSIPDialog::ETerminated
  696.85 +        * @pre Dialog().Connection().State() == EActive
  696.86 +		* @pre aMethod != "REGISTER" |"INVITE" | "BYE" | "CANCEL" | "ACK" |
  696.87 +        *   "SUBSCRIBE" | "NOTIFY" | "UPDATE" | "PRACK" | "REFER"
  696.88 +		* @param aElements contains optional SIP message headers and body.
  696.89 +        *   Ownership is transferred.
  696.90 +		* @return SIP extension client transaction. Ownership is transferred.
  696.91 +		* @leave KErrSIPInvalidDialogState If dialog's state is not correct
  696.92 +		* @leave KErrArgument if invalid value has been set to aMethod		
  696.93 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  696.94 +		*	object has been deleted
  696.95 +		* @capability NetworkServices
  696.96 +		*/
  696.97 +		IMPORT_C virtual CSIPClientTransaction*
  696.98 +            SendNonTargetRefreshRequestL(RStringF aMethod,
  696.99 +                                         CSIPMessageElements* aElements);
 696.100 +
 696.101 +        /**
 696.102 +        * Gets dialog association type.
 696.103 +        *
 696.104 +        * @return dialog association type e.g. "INVITE", "SUBSCRIBE" etc...
 696.105 +        */
 696.106 +        IMPORT_C RStringF Type() const;
 696.107 +
 696.108 +		/**
 696.109 +        * Tests if the request is a non target refresh request
 696.110 +        * @param aMethod a method to test
 696.111 +        * @return ETrue if is non target refresh request; EFalse otherwise
 696.112 +        */        
 696.113 +        IMPORT_C TBool IsNonTargetRefreshRequest(RStringF aMethod) const;
 696.114 +
 696.115 +	public: // New functions, for internal use
 696.116 +
 696.117 +		/**
 696.118 +		* Returns the implementation instance.
 696.119 + 		* @return CSIPDialogAssocImplementation
 696.120 +		*/
 696.121 +		CSIPDialogAssocImplementation& Implementation();
 696.122 +
 696.123 +		/**
 696.124 +        * Searches for a refresh with the matching id. Default implementation
 696.125 +        * returns NULL. Those classes derived from CSIPDialogAssocBase, which
 696.126 +        * can contain refreshes must implement this function for searching the
 696.127 +        * correct refresh.
 696.128 +        *
 696.129 +        * @return CSIPRefresh if found, NULL otherwise. 
 696.130 +        *         The ownership is not transferred.
 696.131 +        * @internalComponent
 696.132 +        */
 696.133 +        virtual CSIPRefresh* FindRefresh(TUint32 aRefreshId);
 696.134 +
 696.135 +        /**
 696.136 +        * @internalComponent
 696.137 +        */
 696.138 +		virtual void DeletingRefresh(CSIPRefresh& aRefresh, TUint32 aRefreshId);
 696.139 +		
 696.140 +	protected: // Constructors, for internal use
 696.141 +
 696.142 +        /*
 696.143 +		* Constructor
 696.144 +		*/
 696.145 +        CSIPDialogAssocBase();
 696.146 +
 696.147 +        void ConstructL(RStringF aType, CSIPDialog& aDialog);
 696.148 +        void ConstructL(RStringF aType,
 696.149 +        				CSIPDialog& aDialog,
 696.150 +        				CSIPServerTransaction& aTransaction);
 696.151 +
 696.152 +    protected: // Data
 696.153 +
 696.154 +        /**
 696.155 +        * Implementation instance, CSIPDialogAssocBase owns it
 696.156 +        * @internalComponent
 696.157 +        */
 696.158 +		CSIPDialogAssocImplementation* iImplementation;
 696.159 +
 696.160 +	private: // For testing purposes
 696.161 +
 696.162 +        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 696.163 +        
 696.164 +        __DECLARE_TEST;
 696.165 +	};
 696.166 +
 696.167 +#endif
   697.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   697.2 +++ b/epoc32/include/mw/siperr.h	Wed Mar 31 12:27:01 2010 +0100
   697.3 @@ -0,0 +1,96 @@
   697.4 +/*
   697.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   697.6 +* All rights reserved.
   697.7 +* This component and the accompanying materials are made available
   697.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   697.9 +* which accompanies this distribution, and is available
  697.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  697.11 +*
  697.12 +* Initial Contributors:
  697.13 +* Nokia Corporation - initial contribution.
  697.14 +*
  697.15 +* Contributors:
  697.16 +*
  697.17 +* Description:
  697.18 +* Name          : siperr.h
  697.19 +* Part of       : SIP Client API
  697.20 +* Interface     : SDK, SIP Client API
  697.21 +* Version       : 1.0
  697.22 +*
  697.23 +*/
  697.24 +
  697.25 +
  697.26 +
  697.27 +#ifndef SIPERR_H
  697.28 +#define SIPERR_H
  697.29 +
  697.30 +#include <e32base.h>
  697.31 +
  697.32 +/** @file 
  697.33 +* @publishedAll
  697.34 +* @released
  697.35 +*/
  697.36 +
  697.37 +/** SIP message was malformed */
  697.38 +const TInt KErrSIPMalformedMessage = -17700;
  697.39 +
  697.40 +/** Invalid SIP response received from registrar*/
  697.41 +const TInt KErrSIPInvalidRegistrarResponse = -17701;
  697.42 +
  697.43 +/** SIP Request pending */
  697.44 +const TInt KErrSIPRequestPending = -17702;
  697.45 +
  697.46 +/** The action cannot be performed in the current transaction state */
  697.47 +const TInt KErrSIPInvalidTransactionState = -17703;
  697.48 +
  697.49 +/** Not allowed in dialogs current state */
  697.50 +const TInt KErrSIPInvalidDialogState = -17704;
  697.51 +
  697.52 +/** Invalid request in SIP dialog */
  697.53 +const TInt KErrSIPInvalidDialogRequest = -17705;
  697.54 +
  697.55 +/** Invalid response in SIP dialog */
  697.56 +const TInt KErrSIPInvalidDialogResponse = -17706;
  697.57 +
  697.58 +/** Sending a SIP message failed. For example ICMP error occured */
  697.59 +const TInt KErrSIPTransportFailure = -17707;
  697.60 +
  697.61 +/** No ACK was received after sending a 2xx response */
  697.62 +const TInt KErrSIPNoAckReceived = -17708;
  697.63 +
  697.64 +/** Not allowed in registration's current state */
  697.65 +const TInt KErrSIPInvalidRegistrationState = -17709;
  697.66 +
  697.67 +/** The contact given did not contain user part */
  697.68 +const TInt KErrSIPInvalidContact = -17710;
  697.69 +
  697.70 +/** Object can't access a resource, since that has been deleted by user.
  697.71 +The user is expected to delete this object as it can no longer be used. */
  697.72 +const TInt KErrSIPResourceNotAvailable = -17711;
  697.73 +
  697.74 +/** DNS query for the remote address failed */
  697.75 +const TInt KErrSIPResolvingFailure = -17712;
  697.76 +
  697.77 +/** Authentication with a server failed */
  697.78 +const TInt KErrSIPForbidden = -17713;
  697.79 +
  697.80 +/** Maximum number of allowed SigComp compartments exceeded */
  697.81 +const TInt KErrSIPMaxCompartmentsInUse = -17714;
  697.82 +
  697.83 +/** Refresh initiated client transaction was terminated with
  697.84 +a 3xx, 4xx, 5xx or 6xx response.*/
  697.85 +const TInt KErrSIPTerminatedWithResponse = -17715;
  697.86 +
  697.87 +/** Provided SIP outbound proxy is not responding*/
  697.88 +const TInt KErrSIPOutboundProxyNotResponding = -17716;
  697.89 +
  697.90 +/** The URI type is not allowed in some field of the particular SIP message. 
  697.91 +Note that this does not mean that the URI type is forbidden in general. 
  697.92 +For example Contact-header of an INVITE must always contain a SIP-URI. 
  697.93 +Any other types are rejected with this error code. */
  697.94 +const TInt KErrSIPInvalidURIType = -17717;
  697.95 +
  697.96 +/** ICMP error has occured */
  697.97 +const TInt KErrSIPICMPFailure = -17718;
  697.98 +
  697.99 +#endif //SIPERR_H
   698.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   698.2 +++ b/epoc32/include/mw/sipeventheader.h	Wed Mar 31 12:27:01 2010 +0100
   698.3 @@ -0,0 +1,195 @@
   698.4 +/*
   698.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   698.6 +* All rights reserved.
   698.7 +* This component and the accompanying materials are made available
   698.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   698.9 +* which accompanies this distribution, and is available
  698.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  698.11 +*
  698.12 +* Initial Contributors:
  698.13 +* Nokia Corporation - initial contribution.
  698.14 +*
  698.15 +* Contributors:
  698.16 +*
  698.17 +* Description:
  698.18 +* Name        : sipeventheader.h
  698.19 +* Part of     : SIP Codec
  698.20 +* Interface   : SDK API, SIP Codec API
  698.21 +* Version     : SIP/4.0 
  698.22 +*
  698.23 +*/
  698.24 +
  698.25 +
  698.26 +
  698.27 +
  698.28 +#ifndef CSIPEVENTHEADER_H
  698.29 +#define CSIPEVENTHEADER_H
  698.30 +
  698.31 +//  INCLUDES
  698.32 +#include <bamdesca.h>
  698.33 +#include <badesca.h>
  698.34 +#include "sipparameterheaderbase.h"
  698.35 +#include "_sipcodecdefs.h"
  698.36 +
  698.37 +// FORWARD DECLARATIONS
  698.38 +class CSIPEventHeaderParams;
  698.39 +
  698.40 +// CLASS DECLARATION
  698.41 +/**
  698.42 +* @publishedAll
  698.43 +* @released
  698.44 +*
  698.45 +* Class provides functions for setting and getting parameters in 
  698.46 +* SIP "Event" header.
  698.47 +*
  698.48 +*  @lib sipcodec.lib
  698.49 +*/
  698.50 +class CSIPEventHeader : public CSIPParameterHeaderBase
  698.51 +	{
  698.52 +	public:	// Constructors and destructor
  698.53 +	
  698.54 +		/**
  698.55 +		* Constructs a CSIPEventHeader from textual representation 
  698.56 +		* of the header's value part.
  698.57 +		* @param aValue a value part of a "Event"-header
  698.58 +		* @return a new instance of CSIPEventHeader
  698.59 +		*/
  698.60 +		IMPORT_C static CSIPEventHeader* DecodeL(const TDesC8& aValue);
  698.61 +
  698.62 +		/**
  698.63 +		* Creates a new instance of CSIPEventHeader
  698.64 +		* @param aEventPackage a Event-Package value
  698.65 +		* @return a new instance of CSIPEventHeader
  698.66 +		*/
  698.67 +		IMPORT_C static CSIPEventHeader* NewL(const TDesC8& aEventPackage);
  698.68 +
  698.69 +		/**
  698.70 +		* Creates a new instance of CSIPEventHeader and puts it to CleanupStack
  698.71 +		* @param aEventPackage a Event-Package value
  698.72 +		* @return a new instance of CSIPEventHeader
  698.73 +		*/
  698.74 +
  698.75 +		IMPORT_C static CSIPEventHeader* NewLC(const TDesC8& aEventPackage);
  698.76 +
  698.77 +		/**
  698.78 +		* Destructor, deletes the resources of CSIPEventHeader.
  698.79 +		*/
  698.80 +		IMPORT_C ~CSIPEventHeader();
  698.81 +
  698.82 +
  698.83 +	public:	// New functions
  698.84 +
  698.85 +		/**
  698.86 +		* Compares this instance to another CSIPEventHeader instance
  698.87 +		* @param aHeader a header to compare to
  698.88 +		* @return ETrue if the objects are equal otherwise EFalse
  698.89 +		*/
  698.90 +		IMPORT_C TBool operator==(const CSIPEventHeader& aHeader) const;
  698.91 +
  698.92 +		/**
  698.93 +		* Gets the Event-Package parameter from the "Event" header
  698.94 +		* @return the Event-Package parameter
  698.95 +		*/
  698.96 +		IMPORT_C const TDesC8& EventPackage() const;
  698.97 +
  698.98 +		/**
  698.99 +		* Sets the Event-Package parameter in the "Event" header; 
 698.100 +		* @param aEventPackage a Event-Package parameter to set
 698.101 +		*/
 698.102 +		IMPORT_C void SetEventPackageL(const TDesC8& aEventPackage);
 698.103 +
 698.104 +		/**
 698.105 +		* Sets the event templates overwriting all the existing ones.
 698.106 +		* @param aEventTemplates an array of event templates
 698.107 +		*/
 698.108 +		IMPORT_C void SetEventTemplatesL(const MDesC8Array& aEventTemplates);
 698.109 +
 698.110 +		/**
 698.111 +		* Gets the event templates.
 698.112 +		* @return a reference to the currently set event templates.
 698.113 +		*/
 698.114 +		IMPORT_C const MDesC8Array& EventTemplates() const;
 698.115 +	
 698.116 +		/**
 698.117 +		* Constructs an instance of a CSIPEventHeader from a RReadStream
 698.118 +		* @param aReadStream a stream containing the value of the
 698.119 +		*        externalized object (header name not included).
 698.120 +		* @return an instance of a CSIPEventHeader 
 698.121 +		*/
 698.122 +		IMPORT_C static CSIPHeaderBase* 
 698.123 +			InternalizeValueL(RReadStream& aReadStream);
 698.124 +
 698.125 +
 698.126 +	public: // From CSIPHeaderBase
 698.127 +
 698.128 +		/**
 698.129 +		* From CSIPHeaderBase CloneL
 698.130 +		*/
 698.131 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 698.132 +
 698.133 +		/**
 698.134 +		* From CSIPHeaderBase Name
 698.135 +		*/
 698.136 +		IMPORT_C RStringF Name() const;
 698.137 +
 698.138 +
 698.139 +	public: // From CSIPHeaderBase, for internal use
 698.140 +
 698.141 +        /**
 698.142 +        * @internalComponent
 698.143 +        */
 698.144 +		TBool HasCompactName() const;
 698.145 +		
 698.146 +        /**
 698.147 +        * @internalComponent
 698.148 +        */		
 698.149 +		RStringF CompactName() const;
 698.150 +		
 698.151 +        /**
 698.152 +        * @internalComponent
 698.153 +        */		
 698.154 +		TPreferredPlace PreferredPlaceInMessage() const;
 698.155 +
 698.156 +	public: // New functions, for internal use
 698.157 +
 698.158 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 698.159 +
 698.160 +	private: // From CSIPHeaderBase
 698.161 +
 698.162 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 698.163 +
 698.164 +	private: // From CSIPParameterHeaderBase
 698.165 +
 698.166 +		HBufC8* ToTextMandatoryPartLC() const;
 698.167 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 698.168 +		const CSIPParamContainerBase& Params() const;
 698.169 +		CSIPParamContainerBase& Params();
 698.170 +
 698.171 +	private: // Constructors
 698.172 +
 698.173 +		CSIPEventHeader();
 698.174 +		void ConstructL();
 698.175 +		void ConstructL(const TDesC8& aEventPackage);
 698.176 +		void ConstructL(const CSIPEventHeader& aSIPEventHeader);
 698.177 +
 698.178 +	private: // New functions
 698.179 +
 698.180 +		void DoInternalizeValueL(RReadStream& aReadStream);
 698.181 +		void CheckTemplateL(const TDesC8& aParam) const;
 698.182 +		// Needed for cleanup of a RPointerArray<HBufC8>:
 698.183 +		static void ResetAndDestroy(TAny* anArray);
 698.184 +
 698.185 +	private: // Data
 698.186 +
 698.187 +		HBufC8* iEventPackage;
 698.188 +		CSIPEventHeaderParams* iParams;
 698.189 +		CDesC8ArraySeg* iEventTemplates;
 698.190 +
 698.191 +	private: // For testing purposes
 698.192 +	
 698.193 +		UNIT_TEST(CSIPEventHeaderTest)
 698.194 +	};
 698.195 +
 698.196 +#endif // CSIPEVENTHEADER_H
 698.197 +
 698.198 +// End of File
   699.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   699.2 +++ b/epoc32/include/mw/sipexpiresheader.h	Wed Mar 31 12:27:01 2010 +0100
   699.3 @@ -0,0 +1,108 @@
   699.4 +/*
   699.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   699.6 +* All rights reserved.
   699.7 +* This component and the accompanying materials are made available
   699.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   699.9 +* which accompanies this distribution, and is available
  699.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  699.11 +*
  699.12 +* Initial Contributors:
  699.13 +* Nokia Corporation - initial contribution.
  699.14 +*
  699.15 +* Contributors:
  699.16 +*
  699.17 +* Description:
  699.18 +* Name        : sipexpiresheader.h
  699.19 +* Part of     : SIP Codec
  699.20 +* Interface   : SDK API, SIP Codec API
  699.21 +* Version     : SIP/4.0 
  699.22 +*
  699.23 +*/
  699.24 +
  699.25 +
  699.26 +
  699.27 +
  699.28 +#ifndef CSIPEXPIRESHEADER_H
  699.29 +#define CSIPEXPIRESHEADER_H
  699.30 +
  699.31 +//  INCLUDES
  699.32 +#include "sipunsignedintheaderbase.h"
  699.33 +#include "_sipcodecdefs.h"
  699.34 +
  699.35 +// CLASS DECLARATION
  699.36 +/**
  699.37 +* @publishedAll
  699.38 +* @released
  699.39 +*
  699.40 +* Class encapsulates a "Expires" header value.
  699.41 +*
  699.42 +*  @lib sipcodec.lib
  699.43 +*/
  699.44 +class CSIPExpiresHeader : public CSIPUnsignedIntHeaderBase
  699.45 +	{
  699.46 +	public:	// Constructors and destructor
  699.47 +
  699.48 +		/**
  699.49 +		* Constructs a CSIPExpiresHeader from textual representation 
  699.50 +		* of the header's value part.
  699.51 +		* @param aValue a value part of a "Expires"-header (e.g. "3600")
  699.52 +		* @return a new instance of CSIPExpiresHeader
  699.53 +		*/
  699.54 +		IMPORT_C static CSIPExpiresHeader* DecodeL(const TDesC8& aValue);
  699.55 +	
  699.56 +		/**
  699.57 +		* Constructor
  699.58 +		* @param aValue the value to set
  699.59 +		*/
  699.60 +		IMPORT_C CSIPExpiresHeader(TUint aValue);
  699.61 +	
  699.62 +		/**
  699.63 +		* Destructor, deletes the resources of CSIPExpiresHeader.
  699.64 +		*/
  699.65 +		IMPORT_C ~CSIPExpiresHeader();
  699.66 +
  699.67 +
  699.68 +	public: // New functions
  699.69 +
  699.70 +		/**
  699.71 +		* Constructs an instance of a CSIPExpiresHeader from a RReadStream
  699.72 +		* @param aReadStream a stream containing the value of the
  699.73 +		*        externalized header object (header name not included).
  699.74 +		* @return an instance of a CSIPExpiresHeader
  699.75 +		*/
  699.76 +		IMPORT_C static CSIPHeaderBase* 
  699.77 +			InternalizeValueL(RReadStream& aReadStream);
  699.78 +
  699.79 +
  699.80 +	public: // From CSIPHeaderBase
  699.81 +
  699.82 +		/**
  699.83 +		* From CSIPHeaderBase CloneL
  699.84 +		*/
  699.85 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  699.86 +
  699.87 +		/**
  699.88 +		* From CSIPHeaderBase Name
  699.89 +		*/
  699.90 +		IMPORT_C RStringF Name() const;
  699.91 +
  699.92 +
  699.93 +	public: // From CSIPHeaderBase, for internal use
  699.94 +
  699.95 +        /**
  699.96 +        * @internalComponent
  699.97 +        */
  699.98 +		TPreferredPlace PreferredPlaceInMessage() const;
  699.99 +
 699.100 +	public: // New functions, for internal use
 699.101 +
 699.102 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 699.103 +
 699.104 +	private: // For testing purposes
 699.105 +	
 699.106 +		UNIT_TEST(CSIPExpiresHeaderTest)
 699.107 +	};
 699.108 +
 699.109 +#endif // CSIPEXPIRESHEADER_H
 699.110 +
 699.111 +// End of File
   700.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   700.2 +++ b/epoc32/include/mw/sipextensionheader.h	Wed Mar 31 12:27:01 2010 +0100
   700.3 @@ -0,0 +1,186 @@
   700.4 +/*
   700.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   700.6 +* All rights reserved.
   700.7 +* This component and the accompanying materials are made available
   700.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   700.9 +* which accompanies this distribution, and is available
  700.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  700.11 +*
  700.12 +* Initial Contributors:
  700.13 +* Nokia Corporation - initial contribution.
  700.14 +*
  700.15 +* Contributors:
  700.16 +*
  700.17 +* Description:
  700.18 +* Name        : sipextensionheader.h
  700.19 +* Part of     : SIP Codec
  700.20 +* Interface   : SDK API, SIP Codec API
  700.21 +* Version     : SIP/4.0 
  700.22 +*
  700.23 +*/
  700.24 +
  700.25 +
  700.26 +
  700.27 +
  700.28 +#ifndef CSIPEXTENSIONHEADER_H
  700.29 +#define CSIPEXTENSIONHEADER_H
  700.30 +
  700.31 +//  INCLUDES
  700.32 +#include "sipheaderbase.h"
  700.33 +#include "_sipcodecdefs.h"
  700.34 +
  700.35 +
  700.36 +// CLASS DECLARATION
  700.37 +/**
  700.38 +* @publishedAll
  700.39 +* @released
  700.40 +*
  700.41 +* The class stores unknown and extension headers that are either not 
  700.42 +* supported by the current SIP codec implementation or not specified in
  700.43 +* current SIP RFC or both.
  700.44 +*
  700.45 +*  @lib sipcodec.lib
  700.46 +*/
  700.47 +class CSIPExtensionHeader : public CSIPHeaderBase
  700.48 +	{
  700.49 +	public:	// Constructors and destructor
  700.50 +
  700.51 +		/**
  700.52 +		* Creates a new instance of CSIPExtensionHeader
  700.53 +		* @param aName the full or compact name of the header
  700.54 +		* @param aValue the value of the header
  700.55 +		* @return a new instance of CSIPExtensionHeader
  700.56 +		*/
  700.57 +		IMPORT_C static CSIPExtensionHeader* 
  700.58 +			NewL(const TDesC8& aName, const TDesC8& aValue);
  700.59 +
  700.60 +		/**
  700.61 +		* Creates a new instance of CSIPExtensionHeader 
  700.62 +		* and puts it to CleanupStack
  700.63 +		* @param aName the full or compact name of the header
  700.64 +		* @param aValue the value of the header
  700.65 +		* @return a new instance of CSIPExtensionHeader
  700.66 +		*/
  700.67 +		IMPORT_C static CSIPExtensionHeader* 
  700.68 +			NewLC(const TDesC8& aName, const TDesC8& aValue);
  700.69 +
  700.70 +		/**
  700.71 +		* Destructor, deletes the resources of CSIPExtensionHeader.
  700.72 +		*/
  700.73 +		IMPORT_C ~CSIPExtensionHeader();
  700.74 +
  700.75 +
  700.76 +	public: // New functions
  700.77 +
  700.78 +		/**
  700.79 +		* Sets the header value
  700.80 +		* @param aValue the header value to be set
  700.81 +		*/
  700.82 +		IMPORT_C void SetValueL(const TDesC8& aValue);
  700.83 +
  700.84 +		/**
  700.85 +		* Gets the header value
  700.86 +		* @return the header value
  700.87 +		*/
  700.88 +		IMPORT_C const TDesC8& Value() const;
  700.89 +
  700.90 +		/**
  700.91 +		* Constructs an instance of a CSIPExtensionHeader from a RReadStream
  700.92 +		* @param aReadStream a stream containing the value of the
  700.93 +		*        externalized header object (header name not included).
  700.94 +		* @return an instance of a CSIPExtensionHeader
  700.95 +		*/
  700.96 +
  700.97 +		IMPORT_C static CSIPExtensionHeader* 
  700.98 +			InternalizeValueL(RReadStream& aReadStream);
  700.99 +
 700.100 +
 700.101 +	public: // From CSIPHeaderBase
 700.102 +
 700.103 +		/**
 700.104 +		* From CSIPHeaderBase CloneL
 700.105 +		*/
 700.106 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 700.107 +
 700.108 +		/**
 700.109 +		* From CSIPHeaderBase Name
 700.110 +		*/
 700.111 +		IMPORT_C RStringF Name() const;
 700.112 +
 700.113 +		/**
 700.114 +		* From CSIPHeaderBase ToTextValueL
 700.115 +		*/
 700.116 +		IMPORT_C HBufC8* ToTextValueL() const;
 700.117 +
 700.118 +		/**
 700.119 +		* From CSIPHeaderBase ExternalizeSupported
 700.120 +		*/
 700.121 +		IMPORT_C TBool ExternalizeSupported() const;
 700.122 +
 700.123 +
 700.124 +	public: // New functions, for internal use
 700.125 +
 700.126 +		void SetNameL(const TDesC8& aName);
 700.127 +
 700.128 +	public: // From CSIPHeaderBase, for internal use
 700.129 +
 700.130 +        /**
 700.131 +        * @internalComponent
 700.132 +        */	
 700.133 +		TBool IsExtensionHeader() const;
 700.134 +		
 700.135 +        /**
 700.136 +        * @internalComponent
 700.137 +        */		
 700.138 +		TBool EncodeMultipleToOneLine() const;
 700.139 +		
 700.140 +        /**
 700.141 +        * @internalComponent
 700.142 +        */		
 700.143 +		TBool MoreThanOneAllowed() const;
 700.144 +		
 700.145 +        /**
 700.146 +        * @internalComponent
 700.147 +        */		
 700.148 +		TBool HasCompactName() const;
 700.149 +		
 700.150 +        /**
 700.151 +        * @internalComponent
 700.152 +        */		
 700.153 +		RStringF CompactName() const;
 700.154 +		
 700.155 +        /**
 700.156 +        * @internalComponent
 700.157 +        */		
 700.158 +		TPreferredPlace PreferredPlaceInMessage() const;
 700.159 +
 700.160 +	private: // From CSIPHeaderBase
 700.161 +
 700.162 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 700.163 +
 700.164 +	private: // Constructors
 700.165 +
 700.166 +		CSIPExtensionHeader();
 700.167 +		void ConstructL(const TDesC8& aName, const TDesC8& aValue);
 700.168 +		void ConstructL(const CSIPExtensionHeader& aExtensionHeader);
 700.169 +		void DoInternalizeValueL(RReadStream& aReadStream);
 700.170 +
 700.171 +	private: // New functions
 700.172 +
 700.173 +		TBool CheckValue (const TDesC8& aValue);
 700.174 +	
 700.175 +	private: // Data
 700.176 +
 700.177 +		// data
 700.178 +		RStringF iName;
 700.179 +		HBufC8* iValue;
 700.180 +
 700.181 +	private: // For testing purposes
 700.182 +	
 700.183 +		UNIT_TEST(CSIPExtensionHeaderTest)
 700.184 +		UNIT_TEST(CSIPHeaderLookupTest)
 700.185 +	};
 700.186 +
 700.187 +#endif // CSIPEXTENSIONHEADER_H
 700.188 +
 700.189 +// End of File
   701.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   701.2 +++ b/epoc32/include/mw/sipfromheader.h	Wed Mar 31 12:27:01 2010 +0100
   701.3 @@ -0,0 +1,139 @@
   701.4 +/*
   701.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   701.6 +* All rights reserved.
   701.7 +* This component and the accompanying materials are made available
   701.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   701.9 +* which accompanies this distribution, and is available
  701.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  701.11 +*
  701.12 +* Initial Contributors:
  701.13 +* Nokia Corporation - initial contribution.
  701.14 +*
  701.15 +* Contributors:
  701.16 +*
  701.17 +* Description:
  701.18 +* Name        : sipfromheader.h
  701.19 +* Part of     : SIP Codec
  701.20 +* Interface   : SDK API, SIP Codec API
  701.21 +* Version     : SIP/4.0 
  701.22 +*
  701.23 +*/
  701.24 +
  701.25 +
  701.26 +
  701.27 +
  701.28 +#ifndef CSIPFROMHEADER_H
  701.29 +#define CSIPFROMHEADER_H
  701.30 +
  701.31 +//  INCLUDES
  701.32 +#include "sipfromtoheaderbase.h"
  701.33 +#include "_sipcodecdefs.h"
  701.34 +
  701.35 +// CLASS DECLARATION
  701.36 +/**
  701.37 +* @publishedAll
  701.38 +* @released
  701.39 +*
  701.40 +* Class provides functions for setting and getting SIP "From" header.
  701.41 +*
  701.42 +*  @lib sipcodec.lib
  701.43 +*/
  701.44 +class CSIPFromHeader : public CSIPFromToHeaderBase
  701.45 +	{
  701.46 +	public:	// Constructors and destructor
  701.47 +
  701.48 +		/**
  701.49 +		* Constructs a CSIPFromHeader from textual representation 
  701.50 +		* of the header's value part.
  701.51 +		* @param aValue a value part of a "From"-header (e.g. "<user@host>...")
  701.52 +		* @return a new instance of CSIPFromHeader    
  701.53 +		*/
  701.54 +		IMPORT_C static CSIPFromHeader* DecodeL(const TDesC8& aValue);
  701.55 +
  701.56 +		/**
  701.57 +		* Creates a new instance of CSIPFromHeader
  701.58 +		* @pre aSIPAddress != 0
  701.59 +		* @param aSIPAddress a name-address, the ownership is transferred.
  701.60 +		* @return a new instance of CSIPFromHeader
  701.61 +		*/
  701.62 +		IMPORT_C static CSIPFromHeader* NewL(CSIPAddress* aSIPAddress);
  701.63 +
  701.64 +		/**
  701.65 +		* Creates a new instance of CSIPFromHeader and puts it to CleanupStack
  701.66 +		* @pre aSIPAddress != 0
  701.67 +		* @param aSIPAddress a name-address, the ownership is transferred,
  701.68 +		* @return a new instance of CSIPFromHeader
  701.69 +		*/
  701.70 +		IMPORT_C static CSIPFromHeader* NewLC(CSIPAddress* aSIPAddress);
  701.71 +
  701.72 +		/**
  701.73 +		* Creates a deep-copy of a CSIPFromToHeaderBase
  701.74 +		* Note that this function can be used for creating a From-header
  701.75 +		* using an existing To-header.
  701.76 +		* @param aHeader CSIPFromToHeaderBase to be copied
  701.77 +		* @return a new instance of CSIPFromHeader
  701.78 +		*/
  701.79 +		IMPORT_C static CSIPFromHeader* 
  701.80 +			NewL(const CSIPFromToHeaderBase& aHeader);
  701.81 +
  701.82 +		/**
  701.83 +		* Creates a deep-copy of a CSIPFromToHeaderBase and 
  701.84 +		* puts it to CleanupStack
  701.85 +		* Note that this function can be used for creating a From-header
  701.86 +		* using an existing To-header.
  701.87 +		* @param aHeader CSIPFromToHeaderBase to be copied
  701.88 +		* @return a new instance of CSIPFromHeader
  701.89 +		*/
  701.90 +		IMPORT_C static CSIPFromHeader* 
  701.91 +			NewLC(const CSIPFromToHeaderBase& aHeader);
  701.92 +
  701.93 +		/**
  701.94 +		* Destructor, deletes the resources of CSIPFromHeader.
  701.95 +		*/
  701.96 +		IMPORT_C ~CSIPFromHeader();
  701.97 +
  701.98 +
  701.99 +	public: // New functions
 701.100 +
 701.101 +		/**
 701.102 +		* Constructs an instance of a CSIPFromHeader from a RReadStream
 701.103 +		* @param aReadStream a stream containing the value of the
 701.104 +		*        externalized object (header name not included). 
 701.105 +		* @return an instance of a CSIPFromHeader
 701.106 +		*/
 701.107 +		IMPORT_C static CSIPHeaderBase* 
 701.108 +			InternalizeValueL(RReadStream& aReadStream);
 701.109 +
 701.110 +
 701.111 +	public: // From CSIPHeaderBase
 701.112 +
 701.113 +		/**
 701.114 +		* From CSIPHeaderBase CloneL
 701.115 +		*/
 701.116 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 701.117 +
 701.118 +		/**
 701.119 +		* From CSIPHeaderBase Name
 701.120 +		*/
 701.121 +		IMPORT_C RStringF Name() const;
 701.122 +
 701.123 +
 701.124 +	public: // From CSIPHeaderBase, for internal use
 701.125 +
 701.126 +        /**
 701.127 +        * @internalComponent
 701.128 +        */
 701.129 +		RStringF CompactName() const;
 701.130 +
 701.131 +	public: // New functions, for internal use
 701.132 +
 701.133 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 701.134 +
 701.135 +	private: // Constructors
 701.136 +
 701.137 +		CSIPFromHeader();
 701.138 +	};
 701.139 +
 701.140 +#endif // CSIPFROMHEADER_H
 701.141 +
 701.142 +// End of File
   702.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   702.2 +++ b/epoc32/include/mw/sipfromtoheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   702.3 @@ -0,0 +1,135 @@
   702.4 +/*
   702.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   702.6 +* All rights reserved.
   702.7 +* This component and the accompanying materials are made available
   702.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   702.9 +* which accompanies this distribution, and is available
  702.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  702.11 +*
  702.12 +* Initial Contributors:
  702.13 +* Nokia Corporation - initial contribution.
  702.14 +*
  702.15 +* Contributors:
  702.16 +*
  702.17 +* Description:
  702.18 +* Name        : sipfromtoheaderbase.h
  702.19 +* Part of     : SIP Codec
  702.20 +* Interface   : SDK API, SIP Codec API
  702.21 +* Version     : SIP/4.0 
  702.22 +*
  702.23 +*/
  702.24 +
  702.25 +
  702.26 +
  702.27 +
  702.28 +#ifndef CSIPFROMTOHEADERBASE_H
  702.29 +#define CSIPFROMTOHEADERBASE_H
  702.30 +
  702.31 +//  INCLUDES
  702.32 +#include "sipparameterheaderbase.h"
  702.33 +#include "_sipcodecdefs.h"
  702.34 +
  702.35 +// FORWARD DECLARATIONS
  702.36 +class CSIPAddress;
  702.37 +class CSIPFromToHeaderParams;
  702.38 +
  702.39 +// CLASS DECLARATION
  702.40 +/**
  702.41 +* @publishedAll
  702.42 +* @released
  702.43 +*
  702.44 +* Class provides functions for setting and getting parameters in SIP "From"
  702.45 +* and "To" header.
  702.46 +*
  702.47 +* This is an abstract class and cannot be instantiated.
  702.48 +*
  702.49 +* @lib sipcodec.lib
  702.50 +*/
  702.51 +class CSIPFromToHeaderBase : public CSIPParameterHeaderBase
  702.52 +	{
  702.53 +	public: // Constructors and destructor
  702.54 +
  702.55 +		/**
  702.56 +		* Destructor, deletes the resources of CSIPFromToHeaderBase.
  702.57 +		*/
  702.58 +		IMPORT_C virtual ~CSIPFromToHeaderBase();
  702.59 +
  702.60 +
  702.61 +	public: // New functions
  702.62 +
  702.63 +		/**
  702.64 +		* Compares this instance to another "From" or "To" header object
  702.65 +		* @param aHeader a header to compare to
  702.66 +		* @return ETrue, if the objects are equal otherwise EFalse
  702.67 +		*/
  702.68 +		IMPORT_C TBool operator==(const CSIPFromToHeaderBase& aHeader) const;
  702.69 +
  702.70 +		/**
  702.71 +		* Sets the name-address
  702.72 +		* @pre aSIPAddress != 0
  702.73 +		* @param aSIPAddress a name-address to set, the ownership is transferred
  702.74 +		*/
  702.75 +		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
  702.76 +
  702.77 +		/**
  702.78 +		* Gets the name-address as const
  702.79 +		* @return name-address object
  702.80 +		*/
  702.81 +		IMPORT_C const CSIPAddress& SIPAddress() const;
  702.82 +
  702.83 +		/**
  702.84 +		* Gets the name-address
  702.85 +		* @return name-address object
  702.86 +		*/
  702.87 +		IMPORT_C CSIPAddress& SIPAddress();
  702.88 +
  702.89 +
  702.90 +	public: // From CSIPHeaderBase, for internal use
  702.91 +
  702.92 +        /**
  702.93 +        * @internalComponent
  702.94 +        */
  702.95 +		TBool HasCompactName() const;
  702.96 +		
  702.97 +        /**
  702.98 +        * @internalComponent
  702.99 +        */		
 702.100 +		TPreferredPlace PreferredPlaceInMessage() const;
 702.101 +
 702.102 +	protected: // Constructors
 702.103 +
 702.104 +		CSIPFromToHeaderBase();
 702.105 +		void ConstructL();
 702.106 +		void ConstructL(CSIPAddress* aSIPAddress);
 702.107 +		void ConstructL(CSIPAddress* aSIPAddress, const TDesC8& aTag);
 702.108 +		void ConstructL(const CSIPFromToHeaderBase& aSIPFromToHeaderBase);
 702.109 +
 702.110 +	protected: // New functions
 702.111 +
 702.112 +		void DoInternalizeValueL(RReadStream& aReadStream);
 702.113 +
 702.114 +	private: // From CSIPHeaderBase
 702.115 +
 702.116 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 702.117 +
 702.118 +	private: // From CSIPParameterHeaderBase
 702.119 +
 702.120 +		HBufC8* ToTextMandatoryPartLC() const;
 702.121 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 702.122 +		const CSIPParamContainerBase& Params() const;
 702.123 +		CSIPParamContainerBase& Params();
 702.124 +
 702.125 +	private: // Data
 702.126 +
 702.127 +		CSIPAddress* iSIPAddress;
 702.128 +		CSIPFromToHeaderParams* iParams;
 702.129 +
 702.130 +private: // For testing purposes
 702.131 +	
 702.132 +		UNIT_TEST(CSIPFromToHeaderTest)
 702.133 +	};
 702.134 +
 702.135 +
 702.136 +#endif // CSIPFROMTOHEADERBASE_H
 702.137 +
 702.138 +// End of File
   703.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   703.2 +++ b/epoc32/include/mw/sipheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   703.3 @@ -0,0 +1,193 @@
   703.4 +/*
   703.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   703.6 +* All rights reserved.
   703.7 +* This component and the accompanying materials are made available
   703.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   703.9 +* which accompanies this distribution, and is available
  703.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  703.11 +*
  703.12 +* Initial Contributors:
  703.13 +* Nokia Corporation - initial contribution.
  703.14 +*
  703.15 +* Contributors:
  703.16 +*
  703.17 +* Description:
  703.18 +* Name        : sipheaderbase.h
  703.19 +* Part of     : SIP Codec
  703.20 +* Interface   : SDK API, SIP Codec API
  703.21 +* Version     : SIP/4.0 
  703.22 +*
  703.23 +*/
  703.24 +
  703.25 +
  703.26 +
  703.27 +
  703.28 +#ifndef CSIPHEADERBASE_H
  703.29 +#define CSIPHEADERBASE_H
  703.30 +
  703.31 +//  INCLUDES
  703.32 +#include <e32base.h>
  703.33 +#include <s32mem.h>
  703.34 +#include <stringpool.h>
  703.35 +#include "_sipcodecdefs.h"
  703.36 +
  703.37 +// CLASS DECLARATION
  703.38 +/**
  703.39 +* @publishedAll
  703.40 +* @released
  703.41 +*
  703.42 +* Class provides a generic interface for all the SIP headers.
  703.43 +*
  703.44 +*  @lib sipcodec.lib
  703.45 +*/
  703.46 +class CSIPHeaderBase : public CBase
  703.47 +	{
  703.48 +	public: // Constructors and destructors
  703.49 +
  703.50 +		/**
  703.51 +		* Destructor, deletes the resources of CSIPHeaderBase.
  703.52 +		*/
  703.53 +		IMPORT_C virtual ~CSIPHeaderBase();
  703.54 +
  703.55 +	
  703.56 +	public: // New functions
  703.57 +	
  703.58 +		/**
  703.59 +		* Creates a deep-copy of this CSIPHeaderBase object. 
  703.60 +		* The function has to be implemented in each of the sub-classes.
  703.61 +		* @return the deep-copied object, the ownership is transferred.
  703.62 +		*/
  703.63 +		IMPORT_C virtual CSIPHeaderBase* CloneL() const = 0;
  703.64 +
  703.65 +		/**
  703.66 +		* Gets the full name of the header
  703.67 +		* The function is implemented in each of the sub-classes.
  703.68 +		* @return the full name of the header for example "From"
  703.69 +		*/
  703.70 +		IMPORT_C virtual RStringF Name() const = 0;
  703.71 +
  703.72 +		/**
  703.73 +		* Encodes the header (name and value) into its textual representation.
  703.74 +		* @return a textual representation of the complete header,
  703.75 +		*         the ownership is transferred
  703.76 +		*/
  703.77 +		IMPORT_C HBufC8* ToTextL() const;
  703.78 +
  703.79 +		/**
  703.80 +		* Encodes the header (name and value) into its textual representation
  703.81 +		* and pushes it to the CleanupStack.
  703.82 +		* @return a textual representation of the complete header,
  703.83 +		*         the ownership is transferred
  703.84 +		*/
  703.85 +		IMPORT_C HBufC8* ToTextLC() const;
  703.86 +
  703.87 +		/**
  703.88 +		* Encodes the header's value into its textual representation.
  703.89 +		* @return a textual representation of the header's value,
  703.90 +		*         the ownership is transferred
  703.91 +		*/
  703.92 +		IMPORT_C virtual HBufC8* ToTextValueL() const = 0;
  703.93 +
  703.94 +		/**
  703.95 +		* Encodes the header's value into its textual representation
  703.96 +		* and pushes it to the CleanupStack.
  703.97 +		* @return a textual representation of the header's value,
  703.98 +		*         the ownership is transferred
  703.99 +		*/
 703.100 +		IMPORT_C HBufC8* ToTextValueLC() const;
 703.101 +
 703.102 +		/**
 703.103 +		* Writes the object to a RWriteStream
 703.104 +		* @param aWriteStream a stream where the object is to be externalized
 703.105 +		* @param aAddName if ETrue the name of the header is 
 703.106 +		*        also written to the stream
 703.107 +		*/
 703.108 +		IMPORT_C void ExternalizeL(RWriteStream& aWriteStream,
 703.109 +                                   TBool aAddName=ETrue) const;
 703.110 +
 703.111 +		/**
 703.112 +		* Checks, if the header supports serialization.
 703.113 +		* In practice all the headers part of the API support it.
 703.114 +		* @return ETrue, if the header supports serialization, 
 703.115 +		*         otherwise EFalse
 703.116 +		*/
 703.117 +		IMPORT_C virtual TBool ExternalizeSupported() const;
 703.118 +
 703.119 +		/**
 703.120 +		* Can be used when a RPointerArray<CSIPHeaderBase> needs to be pushed
 703.121 +		* to the CleanupStack for ResetAndDestroy.
 703.122 +		* @param aArray an array of CSIPHeaderBase pointers, 
 703.123 +		*        the ownership of the array is transferred
 703.124 +		*/
 703.125 +		IMPORT_C static void PushLC(RPointerArray<CSIPHeaderBase>* aArray);
 703.126 +
 703.127 +
 703.128 +	public: // For internal use
 703.129 +
 703.130 +        /**
 703.131 +        * @internalComponent
 703.132 +        */
 703.133 +		enum TPreferredPlace
 703.134 +			{
 703.135 +			ETop,
 703.136 +			EMiddleTop,
 703.137 +			EMiddle,
 703.138 +			EMiddleBottom,
 703.139 +			EBottom
 703.140 +			};
 703.141 +
 703.142 +        /**
 703.143 +        * @internalComponent
 703.144 +        */	
 703.145 +		TSglQueLink iLink;
 703.146 +
 703.147 +        /**
 703.148 +        * @internalComponent
 703.149 +        */
 703.150 +		virtual TBool EncodeMultipleToOneLine() const;
 703.151 +		
 703.152 +        /**
 703.153 +        * @internalComponent
 703.154 +        */		
 703.155 +		virtual TBool MoreThanOneAllowed() const;
 703.156 +		
 703.157 +        /**
 703.158 +        * @internalComponent
 703.159 +        */		
 703.160 +		virtual TBool IsExtensionHeader() const;
 703.161 +		
 703.162 +        /**
 703.163 +        * @internalComponent
 703.164 +        */		
 703.165 +		virtual TBool HasCompactName() const;
 703.166 +		
 703.167 +        /**
 703.168 +        * @internalComponent
 703.169 +        */		
 703.170 +		virtual RStringF CompactName() const;
 703.171 +		
 703.172 +        /**
 703.173 +        * @internalComponent
 703.174 +        */		
 703.175 +		virtual TPreferredPlace PreferredPlaceInMessage() const = 0;
 703.176 +
 703.177 +	protected: // Constructors
 703.178 +
 703.179 +		CSIPHeaderBase();
 703.180 +
 703.181 +	protected: // New functions
 703.182 +
 703.183 +		void ExternalizeNameL(RWriteStream& aWriteStream) const;
 703.184 +		
 703.185 +        /**
 703.186 +        * @internalComponent
 703.187 +        */		
 703.188 +		virtual void ExternalizeValueL(RWriteStream& aWriteStream) const;
 703.189 +		
 703.190 +		// Needed for cleanup of a RPointerArray<CSIPHeaderBase>:
 703.191 +		static void ResetAndDestroy(TAny* anArray);
 703.192 +	};
 703.193 +
 703.194 +#endif // CSIPHEADERBASE_H
 703.195 +
 703.196 +// End of File
   704.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   704.2 +++ b/epoc32/include/mw/siphlerr.h	Wed Mar 31 12:27:01 2010 +0100
   704.3 @@ -0,0 +1,33 @@
   704.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   704.5 +// All rights reserved.
   704.6 +// This component and the accompanying materials are made available
   704.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   704.8 +// which accompanies this distribution, and is available
   704.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  704.10 +//
  704.11 +// Initial Contributors:
  704.12 +// Nokia Corporation - initial contribution.
  704.13 +//
  704.14 +// Contributors:
  704.15 +//
  704.16 +// Description:
  704.17 +// SIP High Level Error Definition file
  704.18 +// 
  704.19 +//
  704.20 +
  704.21 +
  704.22 +
  704.23 +/**
  704.24 + @file 
  704.25 + @publishedAll
  704.26 + @released
  704.27 +*/
  704.28 +
  704.29 +
  704.30 +#ifndef SIPHLERR_H
  704.31 +#define SIPHLERR_H
  704.32 +
  704.33 +/** Returned on sip error messages i.e, for all the responses between 3XX to 6XX which are not specifically handled by SIP Stack.*/
  704.34 +const TInt KErrSIPErrorResponse = -18101;
  704.35 +
  704.36 +#endif
   705.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   705.2 +++ b/epoc32/include/mw/siphttpdigest.h	Wed Mar 31 12:27:01 2010 +0100
   705.3 @@ -0,0 +1,312 @@
   705.4 +/*
   705.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   705.6 +* All rights reserved.
   705.7 +* This component and the accompanying materials are made available
   705.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   705.9 +* which accompanies this distribution, and is available
  705.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  705.11 +*
  705.12 +* Initial Contributors:
  705.13 +* Nokia Corporation - initial contribution.
  705.14 +*
  705.15 +* Contributors:
  705.16 +*
  705.17 +* Description:
  705.18 +* Name        : siphttpdigest.h
  705.19 +* Part of     : SIP Client
  705.20 +* Interface   : SDK API, SIP Client API
  705.21 +* Version     : 2.0
  705.22 +*
  705.23 +*/
  705.24 +
  705.25 +
  705.26 +
  705.27 +#ifndef CSIPHTTPDIGEST_H
  705.28 +#define CSIPHTTPDIGEST_H
  705.29 +
  705.30 +// INCLUDES 
  705.31 +#include <e32base.h>
  705.32 +#include "_sipcodecdefs.h"
  705.33 +
  705.34 +// FORWARD DECLARATIONS
  705.35 +class CSIP;
  705.36 +class MSIPHttpDigestChallengeObserver;
  705.37 +class MSIPHttpDigestChallengeObserver2;
  705.38 +class CSIPClientTransaction;
  705.39 +class CSIPRefresh;
  705.40 +
  705.41 +// CLASS DECLARATION
  705.42 +
  705.43 +/**
  705.44 +* @publishedAll
  705.45 +* @released
  705.46 +*
  705.47 +* Class for managing SIP HTTP Digest security settings.
  705.48 +* Class provides functions for setting/removing
  705.49 +* HTTP Digest security mechanism related parameters.
  705.50 +* If the user does not use the class for the providing credentials for the
  705.51 +* received challenges, an error will be returned to the original request in
  705.52 +* case it was challenged.
  705.53 +* 
  705.54 +* Note that the user will be asked to provide credentials one realm
  705.55 +* at the time.
  705.56 +*
  705.57 +*  @lib sipclient.lib
  705.58 +*/
  705.59 +class CSIPHttpDigest : public CBase
  705.60 +	{
  705.61 +	public: // Constructors and destructor
  705.62 +	
  705.63 +		/**
  705.64 +		* Two-phased constructor.
  705.65 +		* @param aSIP a handle to SIP server
  705.66 +		* @param aObserver an observer for the received challenges
  705.67 +		* @return New object, ownership is transferred.
  705.68 +		*/
  705.69 +		IMPORT_C static CSIPHttpDigest*
  705.70 +			NewL(CSIP& aSIP,
  705.71 +				 MSIPHttpDigestChallengeObserver& aObserver);
  705.72 +				 
  705.73 +		/**
  705.74 +		* Two-phased constructor.
  705.75 +		* @param aSIP a handle to SIP server
  705.76 +		* @param aObserver an observer for the received challenges
  705.77 +		* @return New object, ownership is transferred.
  705.78 +		*/
  705.79 +		IMPORT_C static CSIPHttpDigest*
  705.80 +			NewLC(CSIP& aSIP,
  705.81 +				  MSIPHttpDigestChallengeObserver& aObserver);
  705.82 +
  705.83 +		/**
  705.84 +		* Two-phased constructor.
  705.85 +		* @param aSIP a handle to SIP server
  705.86 +		* @param aObserver2 an observer for the received challenges
  705.87 +		* @return New object, ownership is transferred.
  705.88 +		*/
  705.89 +		IMPORT_C static CSIPHttpDigest*
  705.90 +			NewL(CSIP& aSIP,
  705.91 +				 MSIPHttpDigestChallengeObserver2& aObserver2);
  705.92 +				 
  705.93 +		/**
  705.94 +		* Two-phased constructor.
  705.95 +		* @param aSIP a handle to SIP server
  705.96 +		* @param aObserver2 an observer for the received challenges
  705.97 +		* @return New object, ownership is transferred.
  705.98 +		*/
  705.99 +		IMPORT_C static CSIPHttpDigest*
 705.100 +			NewLC(CSIP& aSIP,
 705.101 +				  MSIPHttpDigestChallengeObserver2& aObserver2);
 705.102 +				  
 705.103 +		IMPORT_C ~CSIPHttpDigest();
 705.104 +
 705.105 +	public: // New functions
 705.106 +
 705.107 +        /**
 705.108 +		* Sets credentials for the realm of the outbound proxy.
 705.109 +		* Must be used in case the realm is the realm of the outbound proxy and
 705.110 +		* the request for credentials was received from callback
 705.111 +		* MSIPHttpDigestChallengeObserver::ChallengeReceived.		
 705.112 +		* The user can set credentials only upon request from the
 705.113 +		* SIP implementation.
 705.114 +		* @pre aOutboundProxy, aRealm, aUsername and aPasswd must not be empty
 705.115 +		*	   descriptors.
 705.116 +		* @param aOutboundProxy an outbound proxy (FQDN or IP address)
 705.117 +		* @param aRealm servers's realm
 705.118 +		* @param aUsername user's name
 705.119 +		* @param aPasswd user's password for the given server's realm
 705.120 +		* @leave KErrNoMemory if out of memory
 705.121 +		* @leave KErrArgument if some of the parameters is an empty descriptor
 705.122 +		* @leave KErrSIPResourceNotAvailable if a required object has been
 705.123 +		*		 deleted
 705.124 +		*/
 705.125 +		IMPORT_C void SetCredentialsL(const TDesC8& aOutboundProxy,
 705.126 +			                          const TDesC8& aRealm,
 705.127 +			                          const TDesC8& aUsername,
 705.128 +			                          const TDesC8& aPasswd);
 705.129 +        /**
 705.130 +		* Sets parameters for the realm.
 705.131 +		* Should be used in case the realm is not a realm of an outbound proxy 
 705.132 +		* and the request for credentials was received from callback
 705.133 +		* MSIPHttpDigestChallengeObserver::ChallengeReceived.		
 705.134 +		* The user can set credentials only upon request from the
 705.135 +		* SIP implementation.
 705.136 +		* @pre aRealm, aUsername and aPasswd must not be empty descriptors.
 705.137 +		* @param aRealm servers's realm
 705.138 +		* @param aUsername user's name
 705.139 +		* @param aPasswd user's password for the given server's realm
 705.140 +		* @leave KErrNoMemory if out of memory
 705.141 +		* @leave KErrArgument if some of the parameters is an empty descriptor
 705.142 +		* @leave KErrSIPResourceNotAvailable if a required object has been
 705.143 +		*		 deleted
 705.144 +		*/
 705.145 +		IMPORT_C void SetCredentialsL(const TDesC8& aRealm,
 705.146 +			                          const TDesC8& aUsername,
 705.147 +			                          const TDesC8& aPasswd);
 705.148 +
 705.149 +        /**
 705.150 +		* Sets credentials for the realm for the specific transaction.
 705.151 +		* Must be used when the request for credentials was received 
 705.152 +		* from callback MSIPHttpDigestChallengeObserver2::ChallengeReceived with 
 705.153 +		* CSIPClientTransaction as the parameter.
 705.154 +		* @pre aRealm, aUsername and aPasswd must not be empty descriptors.
 705.155 +		* @param aTransaction the transaction that was passed as a parameter
 705.156 +		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived
 705.157 +		* @param aOutboundProxy an outbound proxy (FQDN or IP address) if
 705.158 +		*        the challenge received had Proxy-Authenticate-header(s).
 705.159 +		*        Otherwise KNullDesC8 should passed.
 705.160 +		* @param aRealm servers's realm
 705.161 +		* @param aUsername user's name
 705.162 +		* @param aPasswd user's password for the given server's realm
 705.163 +		* @leave KErrNoMemory if out of memory
 705.164 +		* @leave KErrArgument if some of the parameters is an empty descriptor
 705.165 +		* @leave KErrSIPResourceNotAvailable if a required object has been
 705.166 +		*		 deleted
 705.167 +		*/
 705.168 +		IMPORT_C void SetCredentialsL(const CSIPClientTransaction& aTransaction,
 705.169 +		                              const TDesC8& aOutboundProxy,
 705.170 +			                          const TDesC8& aRealm,
 705.171 +			                          const TDesC8& aUsername,
 705.172 +			                          const TDesC8& aPasswd);
 705.173 +
 705.174 +        /**
 705.175 +		* Sets credentials for the realm for the specific refresh.
 705.176 +		* Must be used when the request for credentials was received 
 705.177 +		* from callback MSIPHttpDigestChallengeObserver2::ChallengeReceived with 
 705.178 +		* CSIPRefresh as the parameter.
 705.179 +		* @pre aRealm, aUsername and aPasswd must not be empty descriptors.
 705.180 +		* @param aRefresh the refresh that was passed as a parameter
 705.181 +		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived
 705.182 +		* @param aOutboundProxy an outbound proxy (FQDN or IP address) if
 705.183 +		*        the challenge received had Proxy-Authenticate-header(s).
 705.184 +		*        Otherwise KNullDesC8 should passed.
 705.185 +		* @param aRealm servers's realm
 705.186 +		* @param aUsername user's name
 705.187 +		* @param aPasswd user's password for the given server's realm
 705.188 +		* @leave KErrNoMemory if out of memory
 705.189 +		* @leave KErrArgument if some of the parameters is an empty descriptor
 705.190 +		* @leave KErrSIPResourceNotAvailable if a required object has been
 705.191 +		*		 deleted
 705.192 +		*/
 705.193 +		IMPORT_C void SetCredentialsL(const CSIPRefresh& aRefresh,
 705.194 +		                              const TDesC8& aOutboundProxy,
 705.195 +			                          const TDesC8& aRealm,
 705.196 +			                          const TDesC8& aUsername,
 705.197 +			                          const TDesC8& aPasswd);
 705.198 +			            
 705.199 +        /**
 705.200 +		* Removes all set credentials for the realm.
 705.201 +		* Must not be used if the user implements 
 705.202 +		* MSIPHttpDigestChallengeObserver2.
 705.203 +		* @pre aRealm must not be an empty descriptor
 705.204 +		* @param aRealm servers's realm
 705.205 +		* @return KErrNone if no error
 705.206 +		*		  KErrArgument if aRealm is an empty descriptor
 705.207 +		*		  KErrNoMemory if out of memory
 705.208 +		*		  KErrNotFound if the given realm was not found
 705.209 +        */
 705.210 +		IMPORT_C TInt RemoveCredentials(const TDesC8& aRealm);
 705.211 +		
 705.212 +        /**
 705.213 +		* Removes all set credentials by the user.
 705.214 +		* Must not be used if the user implements 
 705.215 +		* MSIPHttpDigestChallengeObserver2.		
 705.216 +		* @return KErrNone if succesful; KErrNoMemory if out of memory 
 705.217 +        */
 705.218 +		IMPORT_C TInt RemoveCredentials();
 705.219 +					                                                        
 705.220 +		/**
 705.221 +		* Sets the observer	to listen for the possible received challenges. 
 705.222 +		* Replaces the existing MSIPHttpDigestChallengeObserver or
 705.223 +		* MSIPHttpDigestChallengeObserver2.
 705.224 +		* @param aObserver an observer for the received challenges. 
 705.225 +		*/
 705.226 +		IMPORT_C void SetObserver(MSIPHttpDigestChallengeObserver& aObserver);
 705.227 +		
 705.228 +		/**
 705.229 +		* Sets the observer	to listen for the possible received challenges. 
 705.230 +		* Replaces the existing MSIPHttpDigestChallengeObserver or
 705.231 +		* MSIPHttpDigestChallengeObserver2.
 705.232 +		* @param aObserver an observer for the received challenges. 
 705.233 +		*/
 705.234 +		IMPORT_C void SetObserver(MSIPHttpDigestChallengeObserver2& aObserver);		
 705.235 +		
 705.236 +		/**
 705.237 +		* Ignores the challenge for the realm. As a result the error will be
 705.238 +		* generated to the original SIP request. 
 705.239 +		* @pre aRealm must not be an empty descriptor
 705.240 +		* @param aRealm a realm for which the challenge was ignored
 705.241 +		* @return KErrNone if no error
 705.242 +		*		  KErrNotFound if the given realm was not found
 705.243 +		*		  KErrArgument if aRealm is an empty descriptor
 705.244 +		*/
 705.245 +		IMPORT_C TInt IgnoreChallenge(const TDesC8& aRealm);
 705.246 +
 705.247 +		/**
 705.248 +		* Ignores the challenge for the realm for the specific transaction.
 705.249 +		* As a result KErrForbidden will be generated 
 705.250 +		* to the original SIP request.
 705.251 +		* @pre aRealm must not be an empty descriptor
 705.252 +		* @param aTransaction the transaction that was passed as a parameter
 705.253 +		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived		
 705.254 +		* @param aRealm a realm for which the challenge was ignored
 705.255 +		* @return KErrNone if no error
 705.256 +		*		  KErrNotFound if the given realm was not found
 705.257 +		*		  KErrArgument if aRealm is an empty descriptor
 705.258 +		*/
 705.259 +		IMPORT_C TInt IgnoreChallenge(const CSIPClientTransaction& aTransaction,
 705.260 +		                              const TDesC8& aRealm);
 705.261 +
 705.262 +		/**
 705.263 +		* Ignores the challenge for the realm for the specific refresh.
 705.264 +		* As a result the error will be generated 
 705.265 +		* to the original SIP request.
 705.266 +		* @pre aRealm must not be an empty descriptor
 705.267 +		* @param aRefresh the refresh that was passed as a parameter
 705.268 +		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived		
 705.269 +		* @param aRealm a realm for which the challenge was ignored
 705.270 +		* @return KErrNone if no error
 705.271 +		*		  KErrNotFound if the given realm was not found
 705.272 +		*		  KErrArgument if aRealm is an empty descriptor
 705.273 +		*/
 705.274 +		IMPORT_C TInt IgnoreChallenge(const CSIPRefresh& aRefresh,
 705.275 +		                              const TDesC8& aRealm);
 705.276 +
 705.277 +	public: // New functions, for internal use
 705.278 +
 705.279 +		void CSIPDeleted();
 705.280 +
 705.281 +	private: // Constructors
 705.282 +
 705.283 +        CSIPHttpDigest(CSIP& aSIP);
 705.284 +		CSIPHttpDigest(const CSIPHttpDigest& aHttpDigest);
 705.285 +		CSIPHttpDigest& operator=(const CSIPHttpDigest& aHttpDigest);
 705.286 +
 705.287 +		void ConstructL(MSIPHttpDigestChallengeObserver& aObserver);
 705.288 +		
 705.289 +		void ConstructL(MSIPHttpDigestChallengeObserver2& aObserver2);
 705.290 +       
 705.291 +    private: // New functions
 705.292 +    
 705.293 +		TInt RemoveCredentialParams(const TDesC8& aRealm) const;
 705.294 +
 705.295 +		void SetCredentialParamsL(TUint32 aRequestId,
 705.296 +		                          TUint32 aRefreshId,
 705.297 +		                          const TDesC8& aOutboundProxy,
 705.298 +		                          const TDesC8& aRealm,
 705.299 +				                  const TDesC8& aUsername,
 705.300 +				                  const TDesC8& aPasswd) const;		
 705.301 +		
 705.302 +		TInt IgnoreChallenge(TUint32 aRequestId,
 705.303 +		                     TUint32 aRefreshId,
 705.304 +		                     const TDesC8& aRealm);       
 705.305 +          
 705.306 +    private: // Data
 705.307 +
 705.308 +        CSIP* iSIP;
 705.309 +
 705.310 +	private: // For testing purposes
 705.311 +
 705.312 +	    UNIT_TEST(CSIP_Test)
 705.313 +	};
 705.314 +
 705.315 +#endif // CSIPHTTPDIGEST_H
   706.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   706.2 +++ b/epoc32/include/mw/siphttpdigestchallengeobserver.h	Wed Mar 31 12:27:01 2010 +0100
   706.3 @@ -0,0 +1,55 @@
   706.4 +/*
   706.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   706.6 +* All rights reserved.
   706.7 +* This component and the accompanying materials are made available
   706.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   706.9 +* which accompanies this distribution, and is available
  706.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  706.11 +*
  706.12 +* Initial Contributors:
  706.13 +* Nokia Corporation - initial contribution.
  706.14 +*
  706.15 +* Contributors:
  706.16 +*
  706.17 +* Description:
  706.18 +* Name        : siphttpdigestchallengeobserver.h
  706.19 +* Part of     : SIP Client
  706.20 +* Interface   : SDK API, SIP Client API
  706.21 +* Version     : 1.0
  706.22 +*
  706.23 +*/
  706.24 +
  706.25 +
  706.26 +
  706.27 +#ifndef MSIPHTTPDIGESTCHALLENGEOBSERVER_H
  706.28 +#define MSIPHTTPDIGESTCHALLENGEOBSERVER_H
  706.29 +
  706.30 +// FORWARD DECLARATIONS
  706.31 +
  706.32 +// CLASS DECLARATION
  706.33 +
  706.34 +/**
  706.35 +* @publishedAll
  706.36 +* @released
  706.37 +*
  706.38 +* The user must implement this interface if it intends to
  706.39 +* provide HTTP Digest credentials upon received challenges
  706.40 +* from the SIP servers on the signaling path.
  706.41 +* The user should provide credentials or ignore the challenge
  706.42 +* using functions defined in TSIPHttpDigest class.
  706.43 +*
  706.44 +*  @lib n/a
  706.45 +*/
  706.46 +class MSIPHttpDigestChallengeObserver
  706.47 +	{
  706.48 +    public: // New functions
  706.49 +		/**
  706.50 +		* SIP request resulted in 401/407 response that contains
  706.51 +		* a challenge.
  706.52 +		*
  706.53 +		* @param aRealm a realm for which the challenge was received
  706.54 +		*/
  706.55 +		virtual void ChallengeReceived(const TDesC8& aRealm) = 0;
  706.56 +	};
  706.57 +
  706.58 +#endif
   707.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   707.2 +++ b/epoc32/include/mw/siphttpdigestchallengeobserver2.h	Wed Mar 31 12:27:01 2010 +0100
   707.3 @@ -0,0 +1,81 @@
   707.4 +/*
   707.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   707.6 +* All rights reserved.
   707.7 +* This component and the accompanying materials are made available
   707.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   707.9 +* which accompanies this distribution, and is available
  707.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  707.11 +*
  707.12 +* Initial Contributors:
  707.13 +* Nokia Corporation - initial contribution.
  707.14 +*
  707.15 +* Contributors:
  707.16 +*
  707.17 +* Description:
  707.18 +* Name        : siphttpdigestchallengeobserver2.h
  707.19 +* Part of     : SIP Client
  707.20 +* Interface   : SDK API, SIP Client API
  707.21 +* Version     : 1.0
  707.22 +*
  707.23 +*/
  707.24 +
  707.25 +
  707.26 +
  707.27 +#ifndef MSIPHTTPDIGESTCHALLENGEOBSERVER2_H
  707.28 +#define MSIPHTTPDIGESTCHALLENGEOBSERVER2_H
  707.29 +
  707.30 +// INCLUDES
  707.31 +#include <e32std.h>
  707.32 +
  707.33 +// FORWARD DECLARATIONS
  707.34 +class CSIPClientTransaction;
  707.35 +class CSIPRefresh;
  707.36 +
  707.37 +// CLASS DECLARATION
  707.38 +/**
  707.39 +* @publishedAll
  707.40 +* @released
  707.41 +*
  707.42 +* The user should implement this interface if it intends to
  707.43 +* provide HTTP Digest credentials upon received challenges
  707.44 +* from the SIP servers on the signaling path.
  707.45 +* The user should provide credentials or ignore the challenge
  707.46 +* using functions defined in CSIPHttpDigest class.
  707.47 +*
  707.48 +*  @lib n/a
  707.49 +*/
  707.50 +class MSIPHttpDigestChallengeObserver2
  707.51 +	{
  707.52 +    public: // New functions
  707.53 +		/**
  707.54 +		* A SIP request resulted in 401/407 response that contains
  707.55 +		* 1..n challenges. 
  707.56 +		* The challenges can be obtained from Proxy-Authenticate- and/or
  707.57 +		* WWW-Authenticate-headers in the CSIPResponseElements
  707.58 +		* attached to the CSIPClientTransaction.
  707.59 +		* The user must call CSIPHttpDigest::SetCredentialsL or
  707.60 +		* CSIPHttpDigest::IgnoreChallenge for each challenge.
  707.61 +		*
  707.62 +		* @param aTransaction transaction which was completed with 
  707.63 +		*        a response containing HTTP Digest challenge.
  707.64 +		*/
  707.65 +		virtual void ChallengeReceived(
  707.66 +		    const CSIPClientTransaction& aTransaction) = 0;
  707.67 +
  707.68 +		/**
  707.69 +		* A refreshed SIP request resulted in 401/407 response that contains
  707.70 +		* 1..n challenges.
  707.71 +		* The challenges can be obtained from Proxy-Authenticate- and/or
  707.72 +		* WWW-Authenticate-headers in the CSIPResponseElements
  707.73 +		* attached to the CSIPClientTransaction attached to the CSIPRefresh.
  707.74 +		* The user must call CSIPHttpDigest::SetCredentialsL or
  707.75 +		* CSIPHttpDigest::IgnoreChallenge for each challenge.		 
  707.76 +		*
  707.77 +		* @param aRefresh the refresh for which a transaction completed with 
  707.78 +		*        a response containing HTTP Digest challenge.
  707.79 +		*/		    
  707.80 +		virtual void ChallengeReceived(
  707.81 +		    const CSIPRefresh& aRefresh) = 0;		    
  707.82 +	};
  707.83 +
  707.84 +#endif // MSIPHTTPDIGESTCHALLENGEOBSERVER2_H
   708.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   708.2 +++ b/epoc32/include/mw/sipinvitedialogassoc.h	Wed Mar 31 12:27:01 2010 +0100
   708.3 @@ -0,0 +1,423 @@
   708.4 +/*
   708.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   708.6 +* All rights reserved.
   708.7 +* This component and the accompanying materials are made available
   708.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   708.9 +* which accompanies this distribution, and is available
  708.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  708.11 +*
  708.12 +* Initial Contributors:
  708.13 +* Nokia Corporation - initial contribution.
  708.14 +*
  708.15 +* Contributors:
  708.16 +*
  708.17 +* Description:
  708.18 +* Name        : sipinvitedialogassoc.h
  708.19 +* Part of     : SIP Client
  708.20 +* Interface   : SDK API, SIP Client API
  708.21 +* Version     : 1.0
  708.22 +*
  708.23 +*/
  708.24 +
  708.25 +
  708.26 +
  708.27 +
  708.28 +#ifndef CSIPINVITEDIALOGASSOC_H
  708.29 +#define CSIPINVITEDIALOGASSOC_H
  708.30 +
  708.31 +// INCLUDES
  708.32 +#include "sipdialogassocbase.h"
  708.33 +
  708.34 +// CONSTANTS
  708.35 +
  708.36 +// FORWARD DECLARATIONS
  708.37 +class CUri8;
  708.38 +class CSIPConnection;
  708.39 +class CSIPServerTransaction;
  708.40 +class CSIPFromHeader;
  708.41 +class CSIPToHeader;
  708.42 +class CSIPContactHeader;
  708.43 +class MSIPRegistrationContext;
  708.44 +
  708.45 +// CLASS DECLARATION
  708.46 +
  708.47 +/**
  708.48 +*  @publishedAll
  708.49 +*  @released
  708.50 +*
  708.51 +*  Class for managing SIP dialog association created with INVITE.
  708.52 +*  It provides services for creating, using and
  708.53 +*  terminating SIP INVITE dialog association.
  708.54 +*
  708.55 +*  The user can have only one INVITE dialog association per dialog.
  708.56 +* 
  708.57 +*  @lib sipclient.lib
  708.58 +*/
  708.59 +class CSIPInviteDialogAssoc : public CSIPDialogAssocBase
  708.60 +	{
  708.61 +	public: // Constructors and destructor
  708.62 +
  708.63 +		/**
  708.64 +		* Two-phased constructor.
  708.65 +		* @param aDialog a dialog to be associated with
  708.66 +        * @return New object, ownership is transferred.
  708.67 +		*/
  708.68 +		IMPORT_C static CSIPInviteDialogAssoc* NewL(CSIPDialog& aDialog);
  708.69 +
  708.70 +        /**
  708.71 +		* Two-phased constructor.
  708.72 +		* @param aDialog a dialog to be associated with
  708.73 +        * @return New object, ownership is transferred.
  708.74 +		*/
  708.75 +		IMPORT_C static CSIPInviteDialogAssoc* NewLC(CSIPDialog& aDialog);
  708.76 +
  708.77 +        /**
  708.78 +        * Two-phased constructor.
  708.79 +        * Should be used if response to the received SIP request will create
  708.80 +        * a SIP dialog association.
  708.81 +        * The server transaction must be a INVITE transaction.
  708.82 +        * If SIP server transaction was received within an existing SIP dialog
  708.83 +        * the created SIP dialog association will be correlated to that SIP
  708.84 +        * dialog. Otherwise a new SIP dialog is created.
  708.85 +        * @pre aTransaction.State() == CSIPTransactionBase::EProceeding
  708.86 +        * @pre aTransaction.Type() == SipStrConsts::EInvite
  708.87 +        * @param aTransaction a SIP server transaction 
  708.88 +        * @return New object, ownership is transferred.
  708.89 +        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
  708.90 +        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
  708.91 +        *	CSIPTransactionBase::EProceeding
  708.92 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
  708.93 +		*	object has been deleted
  708.94 +        */
  708.95 +        IMPORT_C static CSIPInviteDialogAssoc*
  708.96 +            NewL(CSIPServerTransaction& aTransaction);
  708.97 +
  708.98 +        /**
  708.99 +        * Two-phased constructor.
 708.100 +        * Should be used if response to the received SIP request will create a
 708.101 +        * SIP dialog association.
 708.102 +        * The server transaction must be a INVITE transaction.
 708.103 +        * If SIP server transaction was received within the existing SIP dialog
 708.104 +        * the created SIP dialog association will be correlated to that
 708.105 +        * SIP dialog.  Otherwise a new SIP dialog is created.
 708.106 +		* @pre aTransaction.State() == CSIPTransactionBase::EProceeding
 708.107 +		* @pre aTransaction.Type() == SipStrConsts::EInvite
 708.108 +        * @param aTransaction a SIP server transaction
 708.109 +        * @return New object, ownership is transferred.
 708.110 +        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
 708.111 +        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
 708.112 +        *	CSIPTransactionBase::EProceeding
 708.113 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.114 +		*	object has been deleted
 708.115 +        */
 708.116 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.117 +            NewLC(CSIPServerTransaction& aTransaction);
 708.118 +
 708.119 +        /**
 708.120 +        * Two-phased constructor.
 708.121 +        * Should be used if response to the received SIP request will create
 708.122 +        * a SIP dialog association.
 708.123 +        * The server transaction must be a INVITE transaction.
 708.124 +        * If SIP server transaction was received within an existing SIP dialog
 708.125 +        * the created SIP dialog association will be correlated to that SIP
 708.126 +        * dialog. Otherwise a new SIP dialog is created.
 708.127 +        * @pre aTransaction.State() == CSIPTransactionBase::EProceeding
 708.128 +        * @pre aTransaction.Type() == SipStrConsts::EInvite
 708.129 +		* @pre aContext.IsContextActive() == ETrue        
 708.130 +        * @param aTransaction a SIP server transaction 
 708.131 +        * @param aContext that will be used for populating 
 708.132 +        *        the Contact-header of the response to aTransaction
 708.133 +        * @return New object, ownership is transferred.
 708.134 +        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
 708.135 +        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
 708.136 +        *	CSIPTransactionBase::EProceeding
 708.137 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.138 +		*	object has been deleted
 708.139 +        */
 708.140 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.141 +            NewL(CSIPServerTransaction& aTransaction,
 708.142 +                 const MSIPRegistrationContext& aContext);
 708.143 +
 708.144 +        /**
 708.145 +        * Two-phased constructor.
 708.146 +        * Should be used if response to the received SIP request will create a
 708.147 +        * SIP dialog association.
 708.148 +        * The server transaction must be a INVITE transaction.
 708.149 +        * If SIP server transaction was received within the existing SIP dialog
 708.150 +        * the created SIP dialog association will be correlated to that
 708.151 +        * SIP dialog.  Otherwise a new SIP dialog is created.
 708.152 +		* @pre aTransaction.State() == CSIPTransactionBase::EProceeding
 708.153 +		* @pre aTransaction.Type() == SipStrConsts::EInvite
 708.154 +		* @pre aContext.IsContextActive() == ETrue 
 708.155 +        * @param aTransaction a SIP server transaction
 708.156 +        * @param aContext that will be used for populating 
 708.157 +        *        the Contact-header of the response to aTransaction        
 708.158 +        * @return New object, ownership is transferred.
 708.159 +        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
 708.160 +        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
 708.161 +        *	CSIPTransactionBase::EProceeding
 708.162 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.163 +		*	object has been deleted
 708.164 +        */
 708.165 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.166 +            NewLC(CSIPServerTransaction& aTransaction,
 708.167 +                  const MSIPRegistrationContext& aContext);
 708.168 +
 708.169 +        /**
 708.170 +        * Two-phased constructor
 708.171 +        * @pre aFrom != 0
 708.172 +        * @pre aRemoteUri != 0
 708.173 +		* The user of the class must not define tags in From-header
 708.174 +		* and To-header.        
 708.175 +        * @param aConnection a SIP connection to be used with
 708.176 +        *        dialog association
 708.177 +        * @param aFrom originator's address; the ownership is transfered
 708.178 +        * @param aRemoteUri a remote target URI that identifies a resource that
 708.179 +        *		 the request is addressed to. The ownership is transferred.
 708.180 +        * @param aTo logical recipient's address; if not defined
 708.181 +        *        the remote target uri will be used for To-header
 708.182 +        *        construction; the ownership is transfered
 708.183 +        * @param aContact a contact to be used in dialog creation. Must be
 708.184 +        *        given only if user intends to re-direct future requests; 
 708.185 +        *        the ownership is transfered        
 708.186 +        * @return New object, ownership is transferred.
 708.187 +        * @leave KErrArgument if aFrom == 0 or aRemoteUri == 0
 708.188 +        */
 708.189 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.190 +            NewL(CSIPConnection& aConnection,
 708.191 +                 CSIPFromHeader* aFrom,
 708.192 +                 CUri8* aRemoteUri,
 708.193 +                 CSIPToHeader* aTo=0,
 708.194 +                 CSIPContactHeader* aContact=0);
 708.195 +
 708.196 +        /**
 708.197 +        * Two-phased constructor
 708.198 +        * @pre aFrom != 0
 708.199 +        * @pre aRemoteUri != 0
 708.200 +		* The user of the class must not define tags in From-header
 708.201 +		* and To-header.
 708.202 +        * @param aSIPConnection a SIP connection to be used with
 708.203 +        *        dialog association
 708.204 +        * @param aFrom originator's address; the ownership is transfered
 708.205 +        * @param aRemoteUri a remote target URI that identifies a resource that
 708.206 +        *		 the request is addressed to. The ownership is transferred.
 708.207 +        * @param aTo logical recipient's address; if not defined
 708.208 +        *        the remote target uri will be used for To-header
 708.209 +        *        construction; the ownership is transfered
 708.210 +        * @param aContact a contact to be used in dialog creation. Must be
 708.211 +        *        given only if user intends to re-direct future requests; 
 708.212 +        *        the ownership is transfered
 708.213 +        * @return New object, ownership is transferred.
 708.214 +        * @leave KErrArgument if aFrom == 0 or aRemoteUri == 0
 708.215 +        */
 708.216 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.217 +            NewLC(CSIPConnection& aConnection,
 708.218 +                  CSIPFromHeader* aFrom,
 708.219 +                  CUri8* aRemoteUri,
 708.220 +                  CSIPToHeader* aTo=0,
 708.221 +                  CSIPContactHeader* aContact=0);
 708.222 +
 708.223 +        /**
 708.224 +        * Two-phased constructor
 708.225 +		* @pre aRemoteUri != 0
 708.226 +		* The user of the class must not define tags in From-header
 708.227 +		* and To-header.
 708.228 +        * @pre aContext.IsContextActive() == ETrue
 708.229 +        * @param aConnection a SIP connection to be used with
 708.230 +        *        dialog association        
 708.231 +        * @param aRemoteUri a remote target URI that identifies a resource
 708.232 +        *		 that the request is targeted to. The ownership is transferred.
 708.233 +        * @param aContext used for selecting outbound 
 708.234 +        *        proxy and originator's address (AOR) and contact
 708.235 +        * @param aFrom originator's address. If not defined it will
 708.236 +        *        constructed using registration context (User's AOR);
 708.237 +        *        the ownership is transfered
 708.238 +        * @param aTo logical recipient's address; if not defined
 708.239 +        *        the remote target uri will be used for To-header
 708.240 +        *        construction; the ownership is transfered
 708.241 +        * @param aContact a contact to be used in dialog creation. Must be
 708.242 +        *        given only if user intends to re-direct future requests; 
 708.243 +        *        the ownership is transfered
 708.244 +        * @return New object, ownership is transferred.
 708.245 +        * @leave KErrArgument if aRemoteUri == 0
 708.246 +        * @leave KErrSIPInvalidRegistrationState
 708.247 +        *		 if aContext.IsContextActive() == EFalse
 708.248 +        */
 708.249 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.250 +            NewL(CSIPConnection& aConnection,                                    
 708.251 +                 CUri8* aRemoteUri,
 708.252 +                 const MSIPRegistrationContext& aContext,
 708.253 +                 CSIPFromHeader* aFrom=0,
 708.254 +	             CSIPToHeader* aTo=0,
 708.255 +	             CSIPContactHeader* aContact=0);
 708.256 +
 708.257 +        /**
 708.258 +		* Two-phased constructor		
 708.259 +		* @pre aRemoteUri != 0
 708.260 +		* The user of the class must not define tags in From-header
 708.261 +		* and To-header.
 708.262 +		* @pre aContext.IsContextActive() == ETrue
 708.263 +		* @param aConnection a SIP connection to be used with
 708.264 +		*        dialog association		
 708.265 +		* @param aRemoteUri a remote target URI that identifies a resource
 708.266 +		*		 that the request is targeted to. The ownership is transferred.
 708.267 +        * @param aContext used for selecting outbound 
 708.268 +        *        proxy and originator's address (AOR) and contact
 708.269 +        * @param aFrom originator's address. If not defined it will
 708.270 +        *        constructed using registration context (User's AOR);
 708.271 +        *        the ownership is transfered
 708.272 +        * @param aTo logical recipient's address; if not defined
 708.273 +        *        the remote target uri will be used for To-header
 708.274 +        *        construction; the ownership is transfered
 708.275 +        * @param aContact a contact to be used in dialog creation. Must be
 708.276 +        *        given only if user intends to re-direct future requests; 
 708.277 +        *        the ownership is transfered
 708.278 +        * @return New object, ownership is transferred.
 708.279 +        * @leave KErrArgument if aRemoteUri == 0
 708.280 +        * @leave KErrSIPInvalidRegistrationState
 708.281 +        *		 if aContext.IsContextActive() == EFalse
 708.282 +		*/
 708.283 +        IMPORT_C static CSIPInviteDialogAssoc*
 708.284 +            NewLC(CSIPConnection& aConnection,			                        
 708.285 +			      CUri8* aRemoteUri,
 708.286 +                  const MSIPRegistrationContext& aContext,
 708.287 +                  CSIPFromHeader* aFrom=0,
 708.288 +	              CSIPToHeader* aTo=0,
 708.289 +	              CSIPContactHeader* aContact=0);
 708.290 +
 708.291 +		/**
 708.292 +		* Destructor
 708.293 +		*/
 708.294 +		IMPORT_C ~CSIPInviteDialogAssoc();
 708.295 +			                                  
 708.296 +	public: // New functions
 708.297 +
 708.298 +		/**
 708.299 +		* Creates INVITE and sends it to the remote target.
 708.300 +		* 101-199 or 2xx response will create INVITE dialog association in case
 708.301 +		* of first INVITE within this dialog association. Subsequent INVITE
 708.302 +		* requests are re-INVITEs.
 708.303 +		* @pre Dialog().Connection().State()==EActive
 708.304 +		* @pre Dialog().State()==CSIPDialog::EInit ||
 708.305 +		*      Dialog().State()==CSIPDialog::EConfirmed
 708.306 +		* @param aElements contains user SIP headers and content. Ownership is
 708.307 +        *   transferred.
 708.308 +		* @return INVITE SIP transaction. Ownership is transferred.
 708.309 +		* @leave KErrSIPInvalidDialogState if dialog is not in a correct state
 708.310 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.311 +		*	object has been deleted
 708.312 +		* @capability NetworkServices
 708.313 +		*/
 708.314 +		IMPORT_C CSIPClientTransaction*
 708.315 +            SendInviteL(CSIPMessageElements* aElements=0);
 708.316 +
 708.317 +        /**
 708.318 +		* Creates PRACK and sends it to the remote target.		
 708.319 +		* @pre Dialog().Connection().State()==EActive
 708.320 +		* @pre Dialog().State()==CSIPDialog::EEarly || 
 708.321 +		*      Dialog().State()==CSIPDialog::EConfirmed
 708.322 +        * @pre aElements must not contain Contact headers
 708.323 +		* @param aElements contains user SIP headers and content. Ownership is
 708.324 +        *   transferred.
 708.325 +		* @return PRACK SIP transaction. Ownership is transferred.
 708.326 +		* @leave KErrSIPInvalidDialogState if dialog is not in a correct state
 708.327 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.328 +		*	object has been deleted
 708.329 +		* @capability NetworkServices
 708.330 +		*/
 708.331 +		IMPORT_C CSIPClientTransaction*
 708.332 +            SendPrackL(CSIPMessageElements* aElements=0);
 708.333 +
 708.334 +	    /**
 708.335 +		* Creates UPDATE and sends it to the remote target.
 708.336 +		* @pre Dialog().Connection().State()==EActive
 708.337 +		* @pre Dialog().State()==CSIPDialog::EEarly || 
 708.338 +		*      Dialog().State()==CSIPDialog::EConfirmed
 708.339 +		* @param aElements contains user SIP headers and content. Ownership is
 708.340 +        *   transferred.
 708.341 +		* @return UPDATE SIP transaction. Ownership is transferred.
 708.342 +		* @leave KErrSIPInvalidDialogState if dialog is not in a correct state
 708.343 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.344 +		*	object has been deleted
 708.345 +		* @capability NetworkServices
 708.346 +		*/
 708.347 +		IMPORT_C CSIPClientTransaction*
 708.348 +            SendUpdateL(CSIPMessageElements* aElements=0);
 708.349 +
 708.350 +		/**
 708.351 +		* Creates SIP ACK request and sends it to the remote target.
 708.352 +		* The client transaction must be an INVITE transaction.
 708.353 +		* @pre Dialog().Connection().State()==EActive
 708.354 +		* @pre Dialog().State()==CSIPDialog::EConfirmed
 708.355 +		* @param aTransaction a SIP INVITE client transaction to acknowledge
 708.356 +		* @param aElements optional SIP message headers and body. Ownership is
 708.357 +        *   transferred.
 708.358 +        * @leave KErrArgument if aTransaction is not an INVITE transaction.
 708.359 +        * @leave KErrSIPInvalidDialogState if ACK can't be sent in the current
 708.360 +		*	dialog state
 708.361 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.362 +		*	object has been deleted
 708.363 +		* @capability NetworkServices
 708.364 +		*/
 708.365 +		IMPORT_C void SendAckL(const CSIPClientTransaction& aTransaction,
 708.366 +			                   CSIPMessageElements* aElements=0);
 708.367 +
 708.368 +	    /**
 708.369 +		* Creates SIP BYE request and sends it to the remote target.		
 708.370 +		* @pre Dialog().Connection().State()==EActive
 708.371 +		* @pre Dialog().State()==CSIPDialog::EEarly || 
 708.372 +		*      Dialog().State()==CSIPDialog::EConfirmed
 708.373 +		* @param aElements contains user SIP headers and content. Ownership is
 708.374 +        *   transferred.
 708.375 +		* @return SIP BYE transaction. Ownership is transferred.
 708.376 +		* @leave KErrSIPInvalidDialogState if BYE can't be sent in the current
 708.377 +		*	dialog state
 708.378 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 708.379 +		*	object has been deleted
 708.380 +		* @capability NetworkServices
 708.381 +		*/		
 708.382 +		IMPORT_C CSIPClientTransaction*
 708.383 +            SendByeL(CSIPMessageElements* aElements=0);
 708.384 +
 708.385 +	public: // New functions, for internal use
 708.386 +	
 708.387 +        /**
 708.388 +		* Sends initial INVITE creating a dialog and creates a transaction for
 708.389 +        * it.
 708.390 +		* @param aElements contains user SIP headers and content. Ownership is
 708.391 +        *   transferred.
 708.392 +		* @return INVITE SIP transaction. Ownership is transferred.
 708.393 +		*/
 708.394 +        CSIPClientTransaction* DoSendInviteL(CSIPMessageElements* aElements);
 708.395 +
 708.396 +        /**
 708.397 +		* Sends ACK		
 708.398 +		* @param aTransaction a SIP INVITE client transaction to acknowledge
 708.399 +		* @param aElements optional SIP message headers and body. Ownership is
 708.400 +        *   transferred.
 708.401 +		*/
 708.402 +        void DoSendAckL(const CSIPClientTransaction& aTransaction,
 708.403 +                        CSIPMessageElements* aElements);
 708.404 +
 708.405 +		CSIPClientTransaction*
 708.406 +			DoSendRequestWithinDialogL(RStringF aMethod,
 708.407 +									   CSIPMessageElements* aElements);
 708.408 +
 708.409 +        CSIPClientTransaction* DoSendCancelL(TUint32 aRequestId);
 708.410 +
 708.411 +   	private: // Constructors
 708.412 +   	   	
 708.413 +		static CSIPInviteDialogAssoc* NewLC(CSIPConnection& aConnection,
 708.414 +								 CUri8* aRemoteUri,
 708.415 +	                             CSIPFromHeader* aFrom,
 708.416 +	                             CSIPToHeader* aTo,
 708.417 +		                         CSIPContactHeader* aContact,
 708.418 +		                         const MSIPRegistrationContext* aContext);
 708.419 +
 708.420 +		CSIPInviteDialogAssoc();
 708.421 +		
 708.422 +		void ConstructL(CSIPServerTransaction& aTransaction,
 708.423 +                        const MSIPRegistrationContext* aContext);
 708.424 +	};
 708.425 +
 708.426 +#endif
   709.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   709.2 +++ b/epoc32/include/mw/sipmanagedprofile.h	Wed Mar 31 12:27:01 2010 +0100
   709.3 @@ -0,0 +1,226 @@
   709.4 +/*
   709.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   709.6 +* All rights reserved.
   709.7 +* This component and the accompanying materials are made available
   709.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   709.9 +* which accompanies this distribution, and is available
  709.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  709.11 +*
  709.12 +* Initial Contributors:
  709.13 +* Nokia Corporation - initial contribution.
  709.14 +*
  709.15 +* Contributors:
  709.16 +*
  709.17 +* Description:
  709.18 +* Name        : sipmanagedprofile.h
  709.19 +* Part of     : SIP Profile Client
  709.20 +* Interface   : SDK API, SIP Profile API
  709.21 +* The class providing profile management of SIP service provider
  709.22 +* Version     : 1.0
  709.23 +*
  709.24 +*/
  709.25 +
  709.26 +
  709.27 +
  709.28 +#ifndef CSIPMANAGEDPROFILE_H
  709.29 +#define CSIPMANAGEDPROFILE_H
  709.30 +
  709.31 +// INCLUDES
  709.32 +
  709.33 +#include <e32base.h>
  709.34 +#include <e32std.h>
  709.35 +#include <badesca.h>
  709.36 +
  709.37 +#include "sipprofile.h"
  709.38 +
  709.39 +//CONSTANTS
  709.40 +
  709.41 +/** SIP Provider Name which value is type of TDesC8.
  709.42 +* Note that this parameter can only be retrieved
  709.43 +* if it has been explicitly configured */
  709.44 +const TUint32 KSIPPrivateIdentity = 500;
  709.45 +
  709.46 +/** SIP HTTP Digest password which value is type of TDesC8.
  709.47 +* Note that this parameter cannot be retrieved */
  709.48 +const TUint32 KSIPDigestPassword = 501;
  709.49 +
  709.50 +/** 
  709.51 +* SIP headers to be added to outgoing SIP requests generated 
  709.52 +* by SIP Profile Agent. The value is of type MDesC8Array.
  709.53 +* Each array element represents a complete SIP header (name and value). */
  709.54 +const TUint32 KSIPHeaders = 502;
  709.55 +
  709.56 +/** 
  709.57 +* Setting for enabling/disabling IMS registration with certain types of
  709.58 +* smart card applications. The value is of type TUint32.
  709.59 +* If no value for this setting is configured, registration is allowed 
  709.60 +* with all types of smart card applications (SIM/USIM/ISIM).
  709.61 +* If the value is configured, the following values are possible:
  709.62 +* 1: Registration is allowed only when USIM or ISIM is present.
  709.63 +* 2: Registration is allowed only when ISIM present */
  709.64 +const TUint32 KSIPAllowIMSRegistration = 503;
  709.65 +
  709.66 +/**
  709.67 +* Setting for enabling/disabling editing the profile after its creation.
  709.68 +* Serves as an indication for the clients that the profile 
  709.69 +* update and deletion operations are restricted. 
  709.70 +* The SIP Profile Agent implementation does not understand
  709.71 +* the semantics of the parameter.
  709.72 +* The value is of type TBool. */
  709.73 +const TUint32 KSIPProfileLocked = 504;
  709.74 +
  709.75 +/**
  709.76 +* Defines how autoregistration profile behaves on home network/roaming
  709.77 +* situations. If value is ETrue, automatic registration is not allowed
  709.78 +* while roaming.
  709.79 +* The value is of type TBool. */
  709.80 +const TUint32 KSIPAllowAutoRegistrationOnlyOnHomeNetwork = 505;
  709.81 +
  709.82 +// FORWARD DECLARATIONS
  709.83 +
  709.84 +class CSIPManagedProfileRegistry;
  709.85 +
  709.86 +
  709.87 +// CLASS DECLARATION
  709.88 +
  709.89 +/**
  709.90 +*  @publishedAll
  709.91 +*  @released
  709.92 +*
  709.93 +*  Class contains profile information of particular SIP service
  709.94 +*  provider. Class provides functions for setting and 
  709.95 +*  getting profile parameters.
  709.96 +* 
  709.97 +*  @lib sipprofilecli.lib
  709.98 +*/
  709.99 +class CSIPManagedProfile: public CSIPProfile
 709.100 +    {
 709.101 +    public:  // Constructors and destructor
 709.102 +        /**
 709.103 +        * Destructor. 
 709.104 +        */                
 709.105 +        IMPORT_C ~CSIPManagedProfile();
 709.106 +
 709.107 +    public: // New functions
 709.108 +        /**
 709.109 +        * Sets profile type information; 
 709.110 +        * @param aSIPProfileTypeInfo profile type information
 709.111 +        */
 709.112 +        IMPORT_C void SetType(const TSIPProfileTypeInfo& aSIPProfileTypeInfo);
 709.113 +
 709.114 +        /** 
 709.115 +        * Sets profile parameter
 709.116 +        * @param aParam a parameter to set; zero-length descriptor resets the value
 709.117 +        * @param aVal a value to set
 709.118 +        * @return KErrNotFound if parameter was not found,
 709.119 +        *         KErrNoMemory if out of memory;
 709.120 +        *         KErrNone otherwise
 709.121 +        */
 709.122 +        IMPORT_C TInt SetParameter(TUint32 aParam, const TDesC8& aVal); 
 709.123 +
 709.124 +        /** 
 709.125 +        * Sets profile parameter
 709.126 +        * @param aParam a parameter to set
 709.127 +        * @param aVal a value to set
 709.128 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 709.129 +        */
 709.130 +        IMPORT_C TInt SetParameter(TUint32 aParam, TUint32 aVal);
 709.131 +
 709.132 +        /** 
 709.133 +        * Sets profile parameter
 709.134 +        * @param aParam a parameter to set
 709.135 +        * @param aVal a value to set
 709.136 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 709.137 +        */
 709.138 +        IMPORT_C TInt SetParameter(TUint32 aParam, TBool aVal);
 709.139 +    
 709.140 +        /** 
 709.141 +        * Sets profile parameter
 709.142 +        * @param aParam a parameter to set
 709.143 +        * @param aVal values to set; an empty array resets the value
 709.144 +        * @return KErrNotFound if parameter was not found, 
 709.145 +        *         KErrNoMemory if out of memory          
 709.146 +        *          KErrNone otherwise        
 709.147 +        */
 709.148 +        IMPORT_C TInt SetParameter(TUint32 aParam, const MDesC8Array& aVal);
 709.149 +        
 709.150 +        /** 
 709.151 +        * Sets profile parameter that is defined for a particular SIP server
 709.152 +        * @param aServerType a SIP server type
 709.153 +        * @param aParam a parameter to set
 709.154 +        * @param aVal a value to set; zero-length descriptor resets the value
 709.155 +        * @return KErrNotFound if parameter was not found,
 709.156 +        *          KErrNoMemory if out of memory;
 709.157 +        *         KErrNone otherwise
 709.158 +        */
 709.159 +        IMPORT_C TInt SetParameter(TUint32 aServerType, TUint32 aParam, const TDesC8& aVal);
 709.160 +
 709.161 +        /** 
 709.162 +        * Creates deep copy of the object
 709.163 +        * @return deep copied instance
 709.164 +        * @leave KErrNoMemory if out of memory
 709.165 +        */
 709.166 +        IMPORT_C CSIPManagedProfile* CloneL() const;
 709.167 +
 709.168 +    public:
 709.169 +        /**
 709.170 +        * Two-phased constructor.
 709.171 +        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 709.172 +        *         profile server.
 709.173 +        */
 709.174 +        static CSIPManagedProfile* NewL(CSIPManagedProfileRegistry* aSIPRegistry);
 709.175 +
 709.176 +        /**
 709.177 +        * Two-phased constructor.
 709.178 +        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 709.179 +        *         profile server.
 709.180 +        * Constructs an object and adds the pointer to the cleanup stack;
 709.181 +        */
 709.182 +        static CSIPManagedProfile* NewLC(CSIPManagedProfileRegistry* aSIPRegistry);
 709.183 +
 709.184 +    private:
 709.185 +
 709.186 +        /**
 709.187 +        * Constructor. 
 709.188 +        */                
 709.189 +        CSIPManagedProfile(CSIPManagedProfileRegistry* aSIPRegistry);
 709.190 +
 709.191 +        /** 
 709.192 +        * Sets profile parameter
 709.193 +        * @param aParam a parameter to set; zero-length descriptor resets the value
 709.194 +        * @param aVal a value to set
 709.195 +        */
 709.196 +        void SetParameterL(TUint32 aParam, const TDesC8& aVal);
 709.197 +
 709.198 +        /** 
 709.199 +        * Sets profile parameter
 709.200 +        * @param aParam a parameter to set
 709.201 +        * @param aVal a value to set
 709.202 +        */
 709.203 +        void SetParameterL(TUint32 aParam, TUint32 aVal);
 709.204 +
 709.205 +        /** 
 709.206 +        * Sets profile parameter
 709.207 +        * @param aParam a parameter to set
 709.208 +        * @param aVal a value to set
 709.209 +        */
 709.210 +        void SetParameterL(TUint32 aParam, TBool aVal);
 709.211 +
 709.212 +        /** 
 709.213 +        * Sets profile parameter that is defined for a particular SIP server
 709.214 +        * @param aServerType a SIP server type
 709.215 +        * @param aParam a parameter to set
 709.216 +        * @param aVal a value to set; zero-length descriptor resets the value
 709.217 +        */
 709.218 +        void SetParameterL(TUint32 aServerType,
 709.219 +            TUint32 aParam, const TDesC8& aVal);
 709.220 +
 709.221 +        /** 
 709.222 +        * Sets profile parameter
 709.223 +        * @param aParam a parameter to set
 709.224 +        * @param aVal values to set; an empty array resets the value
 709.225 +        */
 709.226 +        IMPORT_C void SetParameterL(TUint32 aParam, const MDesC8Array& aVal);
 709.227 +    };
 709.228 +
 709.229 +#endif // CSIPMANAGEDPROFILE_H
   710.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   710.2 +++ b/epoc32/include/mw/sipmanagedprofileregistry.h	Wed Mar 31 12:27:01 2010 +0100
   710.3 @@ -0,0 +1,131 @@
   710.4 +/*
   710.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   710.6 +* All rights reserved.
   710.7 +* This component and the accompanying materials are made available
   710.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   710.9 +* which accompanies this distribution, and is available
  710.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  710.11 +*
  710.12 +* Initial Contributors:
  710.13 +* Nokia Corporation - initial contribution.
  710.14 +*
  710.15 +* Contributors:
  710.16 +*
  710.17 +* Description:
  710.18 +* Name        : sipmanagedprofileregistry.h
  710.19 +* Part of     : SIP Profile Client
  710.20 +* Interface   : SDK API, SIP Profile API
  710.21 +* The class for managing SIP profiles
  710.22 +* Version     : 1.0
  710.23 +*
  710.24 +*/
  710.25 +
  710.26 +
  710.27 +
  710.28 +#ifndef CSIPMANAGEDPROFILEREGISTRY_H
  710.29 +#define CSIPMANAGEDPROFILEREGISTRY_H
  710.30 +
  710.31 +//  INCLUDES
  710.32 +#include <e32base.h>
  710.33 +#include <e32std.h>
  710.34 +#include "sipprofileregistrybase.h"
  710.35 +
  710.36 +// FORWARD DECLARATIONS
  710.37 +class CSIPProfile;
  710.38 +class CSIPManagedProfile;
  710.39 +class MSIPProfileRegistryObserver;
  710.40 +
  710.41 +
  710.42 +// CLASS DECLARATION
  710.43 +/**
  710.44 +*  @publishedAll
  710.45 +*  @released
  710.46 +*
  710.47 +*  The class for managing SIP profiles.
  710.48 +*  This class provides the functions for
  710.49 +*  adding/updating/removing profiles.
  710.50 +*
  710.51 +*  @lib sipprofilecli.lib
  710.52 +*/
  710.53 +class CSIPManagedProfileRegistry: public CSIPProfileRegistryBase
  710.54 +    {
  710.55 +    public:  // Constructors and destructor
  710.56 +        /**
  710.57 +        * Two-phased constructor.
  710.58 +        * @param aObserver a observer for SIP profile change events.
  710.59 +        */
  710.60 +        IMPORT_C static CSIPManagedProfileRegistry* NewL(
  710.61 +                        MSIPProfileRegistryObserver& aObserver);
  710.62 +
  710.63 +        /**
  710.64 +        * Two-phased constructor.
  710.65 +        * Constructs an object and adds the pointer to the cleanup stack;
  710.66 +        * @param aObserver a observer for SIP profile change events.
  710.67 +        */
  710.68 +        IMPORT_C static CSIPManagedProfileRegistry* NewLC(
  710.69 +                        MSIPProfileRegistryObserver& aObserver);
  710.70 +
  710.71 +        /**
  710.72 +        * Destructor
  710.73 +        */
  710.74 +        IMPORT_C ~CSIPManagedProfileRegistry();
  710.75 +    public: //new functions
  710.76 +
  710.77 +        /**
  710.78 +        * Instantiates new profile with default values 
  710.79 +        * for given type.
  710.80 +        * @param aType a SIP profile type to be created
  710.81 +        * @return pre-filled instance of given type profile type;
  710.82 +                * the ownership is transferred
  710.83 +        */
  710.84 +        IMPORT_C CSIPManagedProfile* CreateL(const TSIPProfileTypeInfo& aType); 
  710.85 +
  710.86 +        /**
  710.87 +        * Checks if profile is not used by other applications. 
  710.88 +        * If no other application is using the profile, profile
  710.89 +        * can be updated.
  710.90 +        * @param aSIPProfile a SIP profile
  710.91 +        * @return ETrue if available for update, EFalse otherwise
  710.92 +        * @capability ReadUserData
  710.93 +        */
  710.94 +        IMPORT_C TBool IsInUseL(const CSIPProfile& aSIPProfile) const; 
  710.95 +
  710.96 +        /**
  710.97 +        * Saves new profile or changes to a profile to the persistent storage.
  710.98 +        * This function must be called after desired values are set or updated
  710.99 +        * in the SIP profile. 
 710.100 +        * If the profile is marked for auto-registration and the profile is 
 710.101 +        * updated the profile will be re-registered.
 710.102 +        * Function leaves on failure.
 710.103 +        * @pre IsInUse(aSIPProfile)==EFalse
 710.104 +        * @param aSIPProfile a sip profile to save
 710.105 +        * @capability WriteDeviceData
 710.106 +        * @capability NetworkServices
 710.107 +        */
 710.108 +        IMPORT_C void SaveL(CSIPProfile& aSIPProfile);
 710.109 +
 710.110 +        /**
 710.111 +        * Removes and deletes SIP profile from the persistent storage.
 710.112 +        * Function leaves on failure.
 710.113 +        * If the profile is registered it will be de-registered before the
 710.114 +        * removal from the persistent storage.
 710.115 +        * @param aSIPProfile a sip profile to delete
 710.116 +        * @capability WriteDeviceData
 710.117 +        * @capability NetworkServices
 710.118 +        */
 710.119 +        IMPORT_C void DestroyL(CSIPProfile& aSIPProfile);
 710.120 +
 710.121 +    private:
 710.122 +
 710.123 +        CSIPManagedProfileRegistry(MSIPProfileRegistryObserver& aObserver);
 710.124 +
 710.125 +        void ConstructL();
 710.126 +
 710.127 +        /**
 710.128 +        * Creates a new instance of type CSIPManagedProfile
 710.129 +        * @return new instance
 710.130 +        */
 710.131 +        CSIPProfile* NewInstanceL();
 710.132 +    };
 710.133 +
 710.134 +#endif // CSIPMANAGEDPROFILEREGISTRY_H
   711.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   711.2 +++ b/epoc32/include/mw/sipmessageelements.h	Wed Mar 31 12:27:01 2010 +0100
   711.3 @@ -0,0 +1,174 @@
   711.4 +/*
   711.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   711.6 +* All rights reserved.
   711.7 +* This component and the accompanying materials are made available
   711.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   711.9 +* which accompanies this distribution, and is available
  711.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  711.11 +*
  711.12 +* Initial Contributors:
  711.13 +* Nokia Corporation - initial contribution.
  711.14 +*
  711.15 +* Contributors:
  711.16 +*
  711.17 +* Description:
  711.18 +* Name        : sipmessageelements.h
  711.19 +* Part of     : SIP Client
  711.20 +* Interface   : SDK API, SIP API
  711.21 +* Version     : 1.0
  711.22 +*
  711.23 +*/
  711.24 +
  711.25 +
  711.26 +
  711.27 +#ifndef CSIPMESSAGEELEMENTS_H
  711.28 +#define CSIPMESSAGEELEMENTS_H
  711.29 +
  711.30 +// INCLUDES
  711.31 +#include <e32base.h>
  711.32 +#include <s32strm.h>
  711.33 +#include <stringpool.h>
  711.34 +#include "_sipcodecdefs.h"
  711.35 +
  711.36 +// FORWARD DECLARATIONS
  711.37 +class CSIPHeaderBase;
  711.38 +class CSIPContentTypeHeader;
  711.39 +class CSIPFromHeader;
  711.40 +class CSIPToHeader;
  711.41 +class CSIPCSeqHeader;
  711.42 +class CSIPExtensionHeader;
  711.43 +
  711.44 +// CLASS DECLARATION
  711.45 +
  711.46 +/**
  711.47 +* @publishedAll
  711.48 +* @released
  711.49 +*
  711.50 +* Class for creation and manipulation optional elements in a SIP message.
  711.51 +* 
  711.52 +* Class provides functions for setting and getting optional elements in a 
  711.53 +* SIP message. Optional elements include user SIP message headers, 
  711.54 +* content and content type.
  711.55 +* Following headers are not considered to be user SIP message headers and 
  711.56 +* cannot be set or retrieved using functions of this class: 
  711.57 +* "Authentication-Info", "Call-Id", "CSeq", "From" 
  711.58 +* "Max-Forwards", "Min-Expires", "Record-Route",
  711.59 +* "Security-Verify", "Service-Route", "To", "Via", "Security-Server" and
  711.60 +* "Proxy-Authorization".
  711.61 +*
  711.62 +*  @lib sipclient.lib
  711.63 +*/
  711.64 +class CSIPMessageElements : public CBase
  711.65 +	{
  711.66 +    public:  // Constructors and destructor    
  711.67 +	    /**
  711.68 +        * Two-phased constructor.
  711.69 +        */
  711.70 +		IMPORT_C static CSIPMessageElements* NewL();
  711.71 +
  711.72 +	    /**
  711.73 +        * Two-phased constructor.
  711.74 +        */
  711.75 +		IMPORT_C static CSIPMessageElements* NewLC();
  711.76 +
  711.77 +        /**
  711.78 +        * Destructor.
  711.79 +        */
  711.80 +		IMPORT_C ~CSIPMessageElements();
  711.81 +
  711.82 +    public: //new functions
  711.83 +		/**
  711.84 +		* Sets an array of user headers i.e. headers that user is allowed
  711.85 +		* manipulate to a SIP message. An empty array resets the user headers.
  711.86 +		* Note that the Content-Type header must be set using SetContentL. 
  711.87 +		*
  711.88 +		* @param aHeaders an array of SIP headers.
  711.89 +        *        The ownership of objects in the array is transferred.
  711.90 +		*/
  711.91 +		IMPORT_C void SetUserHeadersL(RPointerArray<CSIPHeaderBase>& aHeaders);
  711.92 +
  711.93 +		/**
  711.94 +		* Gets all user SIP headers this class contains
  711.95 +		* @return SIP headers. Ownership is not transferred.
  711.96 +		*/
  711.97 +		IMPORT_C const RPointerArray<CSIPHeaderBase>& UserHeaders() const;
  711.98 +
  711.99 +		/**
 711.100 +		* Sets the SIP message content and its type.
 711.101 +		* A zero length content can be set by providing a pointer
 711.102 +		* to a zero length HBufC8 instance (the ownership is transferred).
 711.103 +		* @pre aContent != 0 && aContentType != 0
 711.104 +		* @param aContent the content of a SIP message,
 711.105 +		*        		  the ownership is transferred
 711.106 +		* @param aContentType the SIP message content type,
 711.107 +		*        			  the ownership is transferred
 711.108 +		* @leave KErrArgument if aContent == 0 or
 711.109 +		*						 aContentType == 0
 711.110 +		*/
 711.111 +		IMPORT_C void SetContentL(HBufC8* aContent,
 711.112 +							      CSIPContentTypeHeader* aContentType);
 711.113 +
 711.114 +		/**
 711.115 +		* Gets the SIP message content
 711.116 +		* @return SIP message content. If content does not exist, an empty
 711.117 +        *   descriptor is returned.
 711.118 +		*/
 711.119 +		IMPORT_C const TDesC8& Content() const;
 711.120 +
 711.121 +		/**
 711.122 +		* Gets the content type
 711.123 +		* @return Content-Type-header or a 0-pointer if not present; the ownership
 711.124 +        *         is not transferred.
 711.125 +		*/
 711.126 +		IMPORT_C const CSIPContentTypeHeader* ContentType() const;
 711.127 +
 711.128 +		/*
 711.129 +		* Removes the SIP message content and destroys
 711.130 +        * Content-Type header as well.
 711.131 +		* @return SIP message content; the ownership is transferred.
 711.132 +		*/
 711.133 +		IMPORT_C HBufC8* ExtractContent();
 711.134 +
 711.135 +    public: // New functions, for internal use
 711.136 +
 711.137 +	    static CSIPMessageElements* InternalizeL(RReadStream& aReadStream);
 711.138 +    	void ExternalizeL(RWriteStream& aWriteStream) const;
 711.139 +        TInt UserHeaderCount(RStringF aName) const;
 711.140 +        const RPointerArray<CSIPHeaderBase> UserHeadersL(RStringF aName) const;
 711.141 +        TInt RemoveHeaders(RStringF aName);
 711.142 +        void DetachUserHeader(CSIPHeaderBase* aHeader);
 711.143 +	    void AddHeaderL(CSIPHeaderBase* aHeader);
 711.144 +        void SetToL(CSIPToHeader* aTo);
 711.145 +        const CSIPToHeader* To() const;
 711.146 +        void SetFromL (CSIPFromHeader* aFrom);
 711.147 +        const CSIPFromHeader* From() const;
 711.148 +        const CSIPCSeqHeader* CSeq() const;
 711.149 +        void SetContent(HBufC8* aContent);
 711.150 +        void DetachContent();
 711.151 +
 711.152 +    private:
 711.153 +
 711.154 +        CSIPMessageElements();
 711.155 +	    void ConstructL();
 711.156 +	    void DoInternalizeL(RReadStream& aReadStream);
 711.157 +	    void CheckUserHeaderL(const CSIPHeaderBase* aHeader) const;
 711.158 +        void ExternalizeUserHeadersL(RWriteStream& aWriteStream) const;
 711.159 +        void ExternalizeL(const CSIPExtensionHeader* aHeader,
 711.160 +                          RWriteStream& aWriteStream) const;
 711.161 +
 711.162 +	private: // Data
 711.163 +	
 711.164 +	    RPointerArray<CSIPHeaderBase> iUserHeaders;
 711.165 +	    HBufC8* iContent;
 711.166 +        CSIPFromHeader* iFromHeader;
 711.167 +        CSIPToHeader* iToHeader;
 711.168 +        CSIPCSeqHeader* iCSeqHeader;
 711.169 +        CSIPContentTypeHeader* iContentTypeHeader;
 711.170 +        TBool iHeaderLookupOpen;
 711.171 +
 711.172 +	private: // For testing purposes
 711.173 +
 711.174 +	    UNIT_TEST(CSIPMessageElementsTest)
 711.175 +	};
 711.176 +
 711.177 +#endif
   712.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   712.2 +++ b/epoc32/include/mw/sipnotifydialogassoc.h	Wed Mar 31 12:27:01 2010 +0100
   712.3 @@ -0,0 +1,232 @@
   712.4 +/*
   712.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   712.6 +* All rights reserved.
   712.7 +* This component and the accompanying materials are made available
   712.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   712.9 +* which accompanies this distribution, and is available
  712.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  712.11 +*
  712.12 +* Initial Contributors:
  712.13 +* Nokia Corporation - initial contribution.
  712.14 +*
  712.15 +* Contributors:
  712.16 +*
  712.17 +* Description:
  712.18 +* Name        : sipnotifydialogassoc.h
  712.19 +* Part of     : SIP Client
  712.20 +* Interface   : SDK API, SIP Client API
  712.21 +* Version     : 1.0
  712.22 +*
  712.23 +*/
  712.24 +
  712.25 +
  712.26 +
  712.27 +
  712.28 +#ifndef CSIPNOTIFYDIALOGASSOC_H
  712.29 +#define CSIPNOTIFYDIALOGASSOC_H
  712.30 +
  712.31 +// INCLUDES
  712.32 +#include <e32base.h>
  712.33 +#include "sipdialogassocbase.h"
  712.34 +
  712.35 +// CONSTANTS
  712.36 +
  712.37 +// FORWARD DECLARATIONS
  712.38 +class CSIPEventHeader;
  712.39 +class CSIPSubscriptionStateHeader;
  712.40 +class MSIPRegistrationContext;
  712.41 +
  712.42 +// CLASS DECLARATION
  712.43 +
  712.44 +/**
  712.45 +* @publishedAll
  712.46 +* @released
  712.47 +*
  712.48 +* Class for managing SIP NOTIFY dialog associations.
  712.49 +* It provides services for creating, using and
  712.50 +* terminating SIP NOTIFY dialog associations. The user can have multiple
  712.51 +* NOTIFY dialog associations per same SIP dialog.
  712.52 +* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
  712.53 +* local and remote tags; user is responsible for "Event" and
  712.54 +* "Subscription-State" header semantics.
  712.55 +* @lib sipclient.lib
  712.56 +*/
  712.57 +class CSIPNotifyDialogAssoc: public CSIPDialogAssocBase
  712.58 +	{
  712.59 +	public: // Constructors and destructor
  712.60 +
  712.61 +        /**
  712.62 +		* Two-phased constructor.
  712.63 +		* The response to the received SIP request will create a SIP NOTIFY
  712.64 +		* dialog association that will be correlated with the SIP dialog in
  712.65 +		* which SIP server transaction was received. If the server transaction
  712.66 +		* was not received within a SIP dialog, a new SIP dialog is created.
  712.67 +		* The server transaction must be either SUBSCRIBE or REFER transaction.
  712.68 +		* @pre aTransaction.State()==ETrying || EProceeding
  712.69 +		* @pre aTransaction.Type() == 
  712.70 +		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer	
  712.71 +        * @pre aEvent != 0 && aState != 0
  712.72 +		* @param aTransaction a SIP server transaction 
  712.73 +		* @param aEvent an event to send a notification about; the ownership
  712.74 +		*        is transferred.
  712.75 +		* @param aState a subscription state; the ownership is transferred.
  712.76 +		* @return New object; the ownership is transferred
  712.77 +		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
  712.78 +		*	transaction, or aEvent == 0 or aState == 0.
  712.79 +		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
  712.80 +		*	state
  712.81 +		*/
  712.82 +		IMPORT_C static CSIPNotifyDialogAssoc*
  712.83 +			NewL(CSIPServerTransaction& aTransaction,
  712.84 +			     CSIPEventHeader* aEvent,
  712.85 +				 CSIPSubscriptionStateHeader* aState);
  712.86 +
  712.87 +		/**
  712.88 +		* Two-phased constructor.
  712.89 +		* The response to the received SIP request will create a SIP NOTIFY
  712.90 +		* dialog association that will be correlated with the SIP dialog in
  712.91 +		* which SIP server transaction was received. If the server transaction
  712.92 +		* was not received within a SIP dialog, a new SIP dialog is created.
  712.93 +		* The server transaction must be either SUBSCRIBE or REFER transaction.
  712.94 +		* @pre aTransaction.State()==ETrying || EProceeding
  712.95 +		* @pre aTransaction.Type() == 
  712.96 +		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer	
  712.97 +        * @pre aEvent != 0 && aState != 0
  712.98 +		* @param aTransaction a SIP server transaction
  712.99 +		* @param aEvent an event to send a notification about; the ownership
 712.100 +		*        is transferred.
 712.101 +		* @param aState a subscription state; the ownership is transferred.
 712.102 +		* @return New object; the ownership is transferred
 712.103 +		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
 712.104 +		*	transaction, or aEvent == 0 or aState == 0.
 712.105 +		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
 712.106 +		*	state
 712.107 +		*/
 712.108 +		IMPORT_C static CSIPNotifyDialogAssoc*
 712.109 +			NewLC(CSIPServerTransaction& aTransaction,
 712.110 +			      CSIPEventHeader* aEvent,
 712.111 +				  CSIPSubscriptionStateHeader* aState);
 712.112 +				  
 712.113 +        /**
 712.114 +		* Two-phased constructor.
 712.115 +		* The response to the received SIP request will create a SIP NOTIFY
 712.116 +		* dialog association that will be correlated with the SIP dialog in
 712.117 +		* which SIP server transaction was received. If the server transaction
 712.118 +		* was not received within a SIP dialog, a new SIP dialog is created.
 712.119 +		* The server transaction must be either SUBSCRIBE or REFER transaction.
 712.120 +		* @pre aTransaction.State()==ETrying || EProceeding
 712.121 +		* @pre aTransaction.Type() == 
 712.122 +		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer
 712.123 +		* @pre aContext.IsContextActive() == ETrue	
 712.124 +        * @pre aEvent != 0 && aState != 0
 712.125 +		* @param aTransaction a SIP server transaction
 712.126 +        * @param aContext that will be used for populating 
 712.127 +        *        the Contact-header of the response to aTransaction		
 712.128 +		* @param aEvent an event to send a notification about; the ownership
 712.129 +		*        is transferred.
 712.130 +		* @param aState a subscription state; the ownership is transferred.
 712.131 +		* @return New object; the ownership is transferred
 712.132 +		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
 712.133 +		*	transaction, or aEvent == 0 or aState == 0.
 712.134 +		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
 712.135 +		*	state
 712.136 +		*/
 712.137 +		IMPORT_C static CSIPNotifyDialogAssoc*
 712.138 +			NewL(CSIPServerTransaction& aTransaction,
 712.139 +                 const MSIPRegistrationContext& aContext,			
 712.140 +			     CSIPEventHeader* aEvent,
 712.141 +				 CSIPSubscriptionStateHeader* aState);
 712.142 +
 712.143 +		/**
 712.144 +		* Two-phased constructor.
 712.145 +		* The response to the received SIP request will create a SIP NOTIFY
 712.146 +		* dialog association that will be correlated with the SIP dialog in
 712.147 +		* which SIP server transaction was received. If the server transaction
 712.148 +		* was not received within a SIP dialog, a new SIP dialog is created.
 712.149 +		* The server transaction must be either SUBSCRIBE or REFER transaction.
 712.150 +		* @pre aTransaction.State()==ETrying || EProceeding
 712.151 +		* @pre aTransaction.Type() == 
 712.152 +		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer
 712.153 +		* @pre aContext.IsContextActive() == ETrue	
 712.154 +        * @pre aEvent != 0 && aState != 0
 712.155 +		* @param aTransaction a SIP server transaction
 712.156 +        * @param aContext that will be used for populating 
 712.157 +        *        the Contact-header of the response to aTransaction		
 712.158 +		* @param aEvent an event to send a notification about; the ownership
 712.159 +		*        is transferred.
 712.160 +		* @param aState a subscription state; the ownership is transferred.
 712.161 +		* @return New object; the ownership is transferred
 712.162 +		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
 712.163 +		*	transaction, or aEvent == 0 or aState == 0.
 712.164 +		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
 712.165 +		*	state
 712.166 +		*/
 712.167 +		IMPORT_C static CSIPNotifyDialogAssoc*
 712.168 +			NewLC(CSIPServerTransaction& aTransaction,
 712.169 +                  const MSIPRegistrationContext& aContext,
 712.170 +			      CSIPEventHeader* aEvent,
 712.171 +				  CSIPSubscriptionStateHeader* aState);				  
 712.172 +
 712.173 +		/**
 712.174 +		* Destructor
 712.175 +		*/
 712.176 +		IMPORT_C ~CSIPNotifyDialogAssoc();
 712.177 +			                                  
 712.178 +	public: // New functions
 712.179 +
 712.180 +        /**
 712.181 +		* Creates NOTIFY and sends it to the remote target.		
 712.182 +		* If client provides optional SIP headers they must
 712.183 +		* not contain Event and Subscription-State headers.		
 712.184 +		* @pre Dialog().Connection().State()==EActive
 712.185 +		* @pre Dialog().State()==CSIPDialog::TState::EConfirmed		
 712.186 +		* @param aElements optional SIP message headers and body.
 712.187 +		*	Ownership is transferred.
 712.188 +		* @return NOTIFY SIP UAC transaction
 712.189 +		* @leave KErrSIPInvalidDialogState if dialog's state is incorrect
 712.190 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 712.191 +		*	object has been deleted.
 712.192 +		* @capability NetworkServices
 712.193 +		*/
 712.194 +		IMPORT_C CSIPClientTransaction*
 712.195 +            SendNotifyL(CSIPMessageElements* aElements=0);
 712.196 +
 712.197 +		/**
 712.198 +		* Gets an event about which the notification is done
 712.199 +		* @return an event
 712.200 +		*/
 712.201 +		IMPORT_C const CSIPEventHeader& Event() const;
 712.202 +
 712.203 +		/**
 712.204 +		* Gets subscription state
 712.205 +		* @return subscription state
 712.206 +		*/
 712.207 +		IMPORT_C CSIPSubscriptionStateHeader& SubscriptionState();
 712.208 +		
 712.209 +		/**
 712.210 +		* Gets subscription state
 712.211 +		* @return subscription state
 712.212 +		*/
 712.213 +		IMPORT_C const CSIPSubscriptionStateHeader& SubscriptionState() const;
 712.214 +
 712.215 +	public: // New functions, for internal use
 712.216 +
 712.217 +		CSIPClientTransaction*
 712.218 +			DoSendNotifyWithinDialogL(CSIPMessageElements* aElements);
 712.219 +
 712.220 +	private: // Constructors
 712.221 +
 712.222 +		CSIPNotifyDialogAssoc();
 712.223 +
 712.224 +        void ConstructL(CSIPServerTransaction& aTransaction,
 712.225 +                        const MSIPRegistrationContext* aContext,
 712.226 +                        CSIPEventHeader* aEvent,
 712.227 +                        CSIPSubscriptionStateHeader* aState);
 712.228 +
 712.229 +	private: // Data
 712.230 +
 712.231 +		CSIPEventHeader* iEvent;
 712.232 +		CSIPSubscriptionStateHeader* iSubscriptionState;
 712.233 +	};
 712.234 +
 712.235 +#endif
   713.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   713.2 +++ b/epoc32/include/mw/sipobserver.h	Wed Mar 31 12:27:01 2010 +0100
   713.3 @@ -0,0 +1,72 @@
   713.4 +/*
   713.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   713.6 +* All rights reserved.
   713.7 +* This component and the accompanying materials are made available
   713.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   713.9 +* which accompanies this distribution, and is available
  713.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  713.11 +*
  713.12 +* Initial Contributors:
  713.13 +* Nokia Corporation - initial contribution.
  713.14 +*
  713.15 +* Contributors:
  713.16 +*
  713.17 +* Description:
  713.18 +* Name        : sipobserver.h
  713.19 +* Part of     : SIP Client
  713.20 +* Interface   : SDK API, SIP Client API
  713.21 +* Version     : 1.0
  713.22 +*
  713.23 +*/
  713.24 +
  713.25 +
  713.26 +
  713.27 +#ifndef MSIPOBSERVER_H
  713.28 +#define MSIPOBSERVER_H
  713.29 +
  713.30 +// INCLUDES
  713.31 +#include <e32std.h>
  713.32 +
  713.33 +// FORWARD DECLARATIONS
  713.34 +class CSIPServerTransaction;
  713.35 +
  713.36 +// CLASS DECLARATION
  713.37 +
  713.38 +/**
  713.39 +*  @publishedAll
  713.40 +*  @released
  713.41 +*
  713.42 +*  An interface to be implemented by user of CSIP.
  713.43 +*  Interface allows to be able to receive SIP request from the SIP connection
  713.44 +*  that has not been initialized by the user.
  713.45 +*
  713.46 +*  @lib n/a
  713.47 +*/
  713.48 +class MSIPObserver
  713.49 +    {    
  713.50 +    public: // New functions
  713.51 +        /**
  713.52 +        * A SIP request has been received from the network.
  713.53 +        * This function is called when the SIP request was received using such
  713.54 +        * an IAP, for which the application has not created a CSIPConnection
  713.55 +        * object.
  713.56 +        * @pre aTransaction != 0
  713.57 +        * @param aIapId The IapId from which the SIP request was received.
  713.58 +        * @param aTransaction contains local address, remote address of a SIP
  713.59 +        *        message, as well as optional SIP message method, headers and
  713.60 +        *        body. The ownership is transferred.
  713.61 +        */
  713.62 +        virtual void IncomingRequest(TUint32 aIapId,
  713.63 +                                     CSIPServerTransaction* aTransaction) = 0;
  713.64 +
  713.65 +        /**
  713.66 +        * The received SIP request time-outed and it is invalid i.e. cannot be used
  713.67 +        * anymore.
  713.68 +        * This will be called if the user fails to create a SIP connection and
  713.69 +        * does not send an appropriate SIP response.
  713.70 +        * @param aTransaction The time-outed transaction.
  713.71 +        */
  713.72 +        virtual void TimedOut(CSIPServerTransaction& aTransaction) = 0;
  713.73 +    };
  713.74 +
  713.75 +#endif
   714.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   714.2 +++ b/epoc32/include/mw/sipparameterheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   714.3 @@ -0,0 +1,181 @@
   714.4 +/*
   714.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   714.6 +* All rights reserved.
   714.7 +* This component and the accompanying materials are made available
   714.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   714.9 +* which accompanies this distribution, and is available
  714.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  714.11 +*
  714.12 +* Initial Contributors:
  714.13 +* Nokia Corporation - initial contribution.
  714.14 +*
  714.15 +* Contributors:
  714.16 +*
  714.17 +* Description:
  714.18 +* Name        : sipparameterheaderbase.h
  714.19 +* Part of     : SIP Codec
  714.20 +* Interface   : SDK API, SIP Codec API
  714.21 +* Version     : SIP/4.0
  714.22 +*
  714.23 +*/
  714.24 +
  714.25 +
  714.26 +
  714.27 +
  714.28 +#ifndef CSIPPARAMETERHEADERBASE_H
  714.29 +#define CSIPPARAMETERHEADERBASE_H
  714.30 +
  714.31 +//  INCLUDES
  714.32 +#include "sipheaderbase.h"
  714.33 +#include "_sipcodecdefs.h"
  714.34 +
  714.35 +// FORWARD DECLARATIONS
  714.36 +class CSIPParamContainerBase;
  714.37 +
  714.38 +// CLASS DECLARATION
  714.39 +/**
  714.40 +* @publishedAll
  714.41 +* @released
  714.42 +*
  714.43 +* A base class for SIP headers that have structure
  714.44 +*        "mandatory part"delimiter"parameters"
  714.45 +*
  714.46 +* This is an abstract class and cannot be instantiated.
  714.47 +*
  714.48 +*  @lib sipcodec.lib
  714.49 +*/
  714.50 +class CSIPParameterHeaderBase : public CSIPHeaderBase
  714.51 +    {
  714.52 +    public:    // Constructors and destructor
  714.53 +
  714.54 +        /**
  714.55 +        * Destructor, deletes the resources of CSIPParameterHeaderBase.
  714.56 +        */
  714.57 +        IMPORT_C virtual ~CSIPParameterHeaderBase();
  714.58 +
  714.59 +
  714.60 +    public: // New functions
  714.61 +
  714.62 +        /**
  714.63 +        * Checks if a parameter is present
  714.64 +        * @param aName the name of the parameter
  714.65 +        * @return ETrue if present, otherwise EFalse
  714.66 +        */
  714.67 +        IMPORT_C TBool HasParam(RStringF aName) const;
  714.68 +
  714.69 +        /**
  714.70 +        * Gets a parameter value
  714.71 +        * @pre HasParam(aName) == ETrue
  714.72 +        * @param aName the name of the parameter
  714.73 +        * @return the parameter value if present,
  714.74 +        *         otherwise a zero-length length value.
  714.75 +        */
  714.76 +        IMPORT_C RStringF ParamValue(RStringF aName) const;
  714.77 +
  714.78 +        /**
  714.79 +        * Sets a parameter with a value. 
  714.80 +        * Takes copies of the name and value,
  714.81 +        * so if the RStringFs have been dynamically allocated,
  714.82 +        * they can be closed if necessary after the function returns.
  714.83 +        * @pre HasParam(aName) == EFalse
  714.84 +        * @param aName the name of the parameter
  714.85 +        * @param aValue the parameter value to set
  714.86 +        */
  714.87 +        IMPORT_C void SetParamL(RStringF aName, RStringF aValue);
  714.88 +
  714.89 +        /**
  714.90 +        * Sets a parameter without a value
  714.91 +        * Takes copy of the name,
  714.92 +        * so if the RStringF has been dynamically allocated,
  714.93 +        * it can be closed if necessary after the function returns.
  714.94 +        * @pre HasParam(aName) == EFalse
  714.95 +        * @param aName the parameter name to set
  714.96 +        */
  714.97 +        IMPORT_C void SetParamL(RStringF aName);
  714.98 +
  714.99 +        /**
 714.100 +        * Deletes a parameter
 714.101 +        * @param aName the parameter name to delete
 714.102 +        */
 714.103 +        IMPORT_C void DeleteParam(RStringF aName);
 714.104 +
 714.105 +        /**
 714.106 +        * Gets the count of header parameters
 714.107 +        * @return count of header parameters
 714.108 +        */
 714.109 +        IMPORT_C TInt ParamCount() const;
 714.110 +
 714.111 +        /**
 714.112 +        * Gets a header parameter name by index.
 714.113 +        * This function can be used when looping through
 714.114 +        * all the header parameters.
 714.115 +        * @param aIndex the index of the parameter
 714.116 +        * @param aName copy of the parameter name that must be 
 714.117 +        *        closed by the caller.       
 714.118 +        * @return KErrNotFound if aIndex is invalid. Otherwise EFalse.
 714.119 +        */
 714.120 +        IMPORT_C TInt Param(TInt aIndex, RStringF& aName) const;
 714.121 +
 714.122 +    public: // From CSIPHeaderBase
 714.123 +
 714.124 +        /**
 714.125 +        * From CSIPHeaderBase ToTextValueL
 714.126 +        */
 714.127 +        IMPORT_C HBufC8* ToTextValueL() const;
 714.128 +
 714.129 +
 714.130 +    protected: // Contructors
 714.131 +
 714.132 +        CSIPParameterHeaderBase(const TChar& aSeparator);        
 714.133 +
 714.134 +    protected: // New functions
 714.135 +
 714.136 +        void ParseL(const TDesC8& aValue, 
 714.137 +        				  TBool aIgnoreParenthesis=ETrue, 
 714.138 +        				  TBool aSkipSeparatorsBeforeAt=EFalse);
 714.139 +
 714.140 +    protected: // Virtual functions
 714.141 +
 714.142 +        /**
 714.143 +        * @internalComponent
 714.144 +        */    
 714.145 +        virtual TBool ParamInsertionAllowed() const;
 714.146 +
 714.147 +    protected: // Pure virtual functions
 714.148 +
 714.149 +        /**
 714.150 +        * @internalComponent
 714.151 +        */
 714.152 +        virtual HBufC8* ToTextMandatoryPartLC() const = 0;
 714.153 +        
 714.154 +        /**
 714.155 +        * @internalComponent
 714.156 +        */        
 714.157 +        virtual void ParseMandatoryPartL(const TDesC8& aMandatoryPart) = 0;
 714.158 +        
 714.159 +        /**
 714.160 +        * @internalComponent
 714.161 +        */        
 714.162 +        virtual const CSIPParamContainerBase& Params() const = 0;
 714.163 +        
 714.164 +        /**
 714.165 +        * @internalComponent
 714.166 +        */        
 714.167 +        virtual CSIPParamContainerBase& Params() = 0;
 714.168 +
 714.169 +    private: // Contructors
 714.170 +
 714.171 +        CSIPParameterHeaderBase();
 714.172 +
 714.173 +    private: // Data
 714.174 +    
 714.175 +        TChar iSeparator;
 714.176 +
 714.177 +    private: // For testing purposes
 714.178 +    
 714.179 +        UNIT_TEST(CSIPParameterHeaderBaseTest)
 714.180 +    };
 714.181 +
 714.182 +#endif // CSIPPARAMETERHEADERBASE_H
 714.183 +
 714.184 +// End of File
   715.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   715.2 +++ b/epoc32/include/mw/sippassociateduriheader.h	Wed Mar 31 12:27:01 2010 +0100
   715.3 @@ -0,0 +1,137 @@
   715.4 +/*
   715.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   715.6 +* All rights reserved.
   715.7 +* This component and the accompanying materials are made available
   715.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   715.9 +* which accompanies this distribution, and is available
  715.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  715.11 +*
  715.12 +* Initial Contributors:
  715.13 +* Nokia Corporation - initial contribution.
  715.14 +*
  715.15 +* Contributors:
  715.16 +*
  715.17 +* Description:
  715.18 +* Name        : sippassociateduriheader.h
  715.19 +* Part of     : SIP Codec
  715.20 +* Interface   : SDK API, SIP Codec API
  715.21 +* Version     : SIP/4.0 
  715.22 +*
  715.23 +*/
  715.24 +
  715.25 +
  715.26 +
  715.27 +
  715.28 +#ifndef CSIPPASSOCIATEDURIHEADER_H
  715.29 +#define CSIPPASSOCIATEDURIHEADER_H
  715.30 +
  715.31 +//  INCLUDES
  715.32 +#include "sipaddressheaderbase.h"
  715.33 +#include "_sipcodecdefs.h"
  715.34 +
  715.35 +// FORWARD DECLARATIONS
  715.36 +class CSIPAddress;
  715.37 +class CSIPHeaderGenericParams;
  715.38 +
  715.39 +// CLASS DECLARATION
  715.40 +/**
  715.41 +* @publishedAll
  715.42 +* @released
  715.43 +*
  715.44 +* Class provides functions for setting and getting parameters in SIP 
  715.45 +* "P-Associated-URI" header.
  715.46 +*
  715.47 +*  @lib sipcodec.lib
  715.48 +*/
  715.49 +class CSIPPAssociatedURIHeader : public CSIPAddressHeaderBase
  715.50 +	{
  715.51 +	public:	// Constructors and destructor
  715.52 +
  715.53 +		/**
  715.54 +		* Constructs a CSIPPAssociatedURIHeader from textual representation 
  715.55 +		* of the header's value part.
  715.56 +		* @param aValue a value part of a "P-Associated-URI"-header 
  715.57 +		*        (e.g. "User <user@host>;param=value")
  715.58 +		* @return an array containing one to many instances 
  715.59 +        *         of CSIPPAssociatedURIHeader   
  715.60 +		*/
  715.61 +		IMPORT_C static RPointerArray<CSIPPAssociatedURIHeader> 
  715.62 +			DecodeL(const TDesC8& aValue);
  715.63 +
  715.64 +		/**
  715.65 +		* Creates a new instance of CSIPPAssociatedURIHeader
  715.66 +		* @pre aSIPAddress != 0
  715.67 +		* @param aSIPAddress a name-address, the ownership is transferred.
  715.68 +		* @return a new instance of CSIPPAssociatedURIHeader
  715.69 +		*/
  715.70 +		IMPORT_C static CSIPPAssociatedURIHeader* 
  715.71 +            NewL(CSIPAddress* aSIPAddress);
  715.72 +
  715.73 +		/**
  715.74 +		* Creates a new instance of CSIPPAssociatedURIHeader and 
  715.75 +        * puts it to CleanupStack
  715.76 +		* @pre aSIPAddress != 0
  715.77 +		* @param aSIPAddress a name-address, the ownership is transferred,
  715.78 +		* @return a new instance of CSIPPAssociatedURIHeader
  715.79 +		*/
  715.80 +		IMPORT_C static CSIPPAssociatedURIHeader* 
  715.81 +            NewLC(CSIPAddress* aSIPAddress);
  715.82 +
  715.83 +		/**
  715.84 +		* Destructor, deletes the resources of CSIPPAssociatedURIHeader.
  715.85 +		*/
  715.86 +		IMPORT_C virtual ~CSIPPAssociatedURIHeader();
  715.87 +
  715.88 +
  715.89 +	public: // New functions
  715.90 +
  715.91 +        /**
  715.92 +		* Constructs an instance of a CSIPPAssociatedURIHeader from 
  715.93 +        * a RReadStream
  715.94 +		* @param aReadStream a stream containing the value of the
  715.95 +		*        externalized object (header name not included). 
  715.96 +		* @return an instance of a CSIPPAssociatedURIHeader
  715.97 +		*/
  715.98 +		IMPORT_C static CSIPHeaderBase* 
  715.99 +            InternalizeValueL(RReadStream& aReadStream);
 715.100 +
 715.101 +	public: // From CSIPHeaderBase
 715.102 +
 715.103 +		/**
 715.104 +		* From CSIPHeaderBase CloneL
 715.105 +		*/
 715.106 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 715.107 +
 715.108 +		/**
 715.109 +		* From CSIPHeaderBase Name
 715.110 +		*/
 715.111 +		IMPORT_C RStringF Name() const;
 715.112 +
 715.113 +	public: // From CSIPHeaderBase, for internal use
 715.114 +
 715.115 +        /**
 715.116 +        * @internalComponent
 715.117 +        */
 715.118 +		TPreferredPlace PreferredPlaceInMessage() const;
 715.119 +        
 715.120 +        /**
 715.121 +        * @internalComponent
 715.122 +        */        
 715.123 +        TBool MoreThanOneAllowed() const;
 715.124 +
 715.125 +	public: // New functions, for internal use
 715.126 +
 715.127 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 715.128 +
 715.129 +	private: // Constructors
 715.130 +
 715.131 +		CSIPPAssociatedURIHeader();
 715.132 +
 715.133 +    private: // For testing purposes
 715.134 +
 715.135 +        UNIT_TEST(CSIPPAssociatedURIHeaderTest)
 715.136 +	};
 715.137 +
 715.138 +#endif // end of CSIPPASSOCIATEDURIHEADER_H
 715.139 +
 715.140 +// End of File
   716.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   716.2 +++ b/epoc32/include/mw/sipprofile.h	Wed Mar 31 12:27:01 2010 +0100
   716.3 @@ -0,0 +1,374 @@
   716.4 +/*
   716.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   716.6 +* All rights reserved.
   716.7 +* This component and the accompanying materials are made available
   716.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   716.9 +* which accompanies this distribution, and is available
  716.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  716.11 +*
  716.12 +* Initial Contributors:
  716.13 +* Nokia Corporation - initial contribution.
  716.14 +*
  716.15 +* Contributors:
  716.16 +*
  716.17 +* Description:
  716.18 +* Name        : sipprofile.h
  716.19 +* Part of     : SIP Profile Client
  716.20 +* Interface   : SDK API, SIP Profile API
  716.21 +* The class providing profile data of SIP service provider
  716.22 +* Version     : 1.0
  716.23 +*
  716.24 +*/
  716.25 +
  716.26 +
  716.27 +
  716.28 +#ifndef CSIPPROFILE_H
  716.29 +#define CSIPPROFILE_H
  716.30 +
  716.31 +//  INCLUDES
  716.32 +#include <e32base.h>
  716.33 +#include <e32std.h>
  716.34 +#include <badesca.h>
  716.35 +#include "sipregistrationcontext.h"
  716.36 +#include "sipprofiletypeinfo.h"
  716.37 +
  716.38 +// FORWARD DECLARATIONS
  716.39 +class CSIPConcreteProfile;
  716.40 +class CSIPProfileRegistry;
  716.41 +class CSIPProfileRegistryBase;
  716.42 +
  716.43 +/** 
  716.44 +* SIP Profile ID which value is type of TUint32
  716.45 +*/
  716.46 +const TUint32 KSIPProfileId = 1;
  716.47 +
  716.48 +/** 
  716.49 +* SIP Provider Name which value is type of TDesC8
  716.50 +*/
  716.51 +const TUint32 KSIPProviderName = 2;
  716.52 +
  716.53 +/** 
  716.54 +* Access Point ID which value is type of TUint32
  716.55 +*/
  716.56 +const TUint32 KSIPAccessPointId = 3;
  716.57 +
  716.58 +/** 
  716.59 +* Signaling compression (SigComp) which value is type of TBool. 
  716.60 +* ETrue indicates that SigComp is enabled
  716.61 +*/
  716.62 +const TUint32 KSIPSigComp = 4;
  716.63 +
  716.64 +/** 
  716.65 +* Security Negotiation which value is type of TBool. ETrue indicates that
  716.66 +* Security Negotiation is enabled
  716.67 +*/
  716.68 +const TUint32 KSIPSecurityNegotiation = 5;
  716.69 +
  716.70 +/** 
  716.71 +* Auto Registration which value is type of TBool. ETrue indicates that 
  716.72 +* profile is enabled for auto registration
  716.73 +*/
  716.74 +const TUint32 KSIPAutoRegistration = 6;
  716.75 +
  716.76 +/** 
  716.77 +* Defined user's address-of-record which value is type of TDesC8 
  716.78 +*/
  716.79 +const TUint32 KSIPUserAor = 7;
  716.80 +
  716.81 +/** 
  716.82 +* Registration which value is type of TBool. ETrue indicates that
  716.83 +* profile is registered 
  716.84 +*/
  716.85 +const TUint32 KSIPProfileRegistered = 8;
  716.86 +
  716.87 +/** 
  716.88 +* Users's registered address-of-records which value is of type MDesC8Array.
  716.89 +* Note that array will contain AORs only in case the profile is registered.
  716.90 +*/
  716.91 +const TUint32 KSIPRegisteredAors = 9;
  716.92 +
  716.93 +/** 
  716.94 +* Negotiated security mechanism during registration procedure which value
  716.95 +* is of type TDesC8.
  716.96 +* Note that descriptor will contain value only in case the profile is 
  716.97 +* registered.
  716.98 +*/
  716.99 +const TUint32 KSIPNegotiatedSecurityMechanism = 10;
 716.100 +
 716.101 +/** 
 716.102 +* Default profile which value is type of TBool. 
 716.103 +* ETrue indicates that profile is default  
 716.104 +*/
 716.105 +const TUint32 KSIPDefaultProfile = 11;
 716.106 +
 716.107 +/** 
 716.108 +* "Contact" header parameters used during registration which value
 716.109 +* is of type MDesC8Array. Each array element contains one "Contact"-header
 716.110 +* parameter.
 716.111 +*/
 716.112 +const TUint32 KSIPContactHeaderParams = 12;
 716.113 +
 716.114 +/** 
 716.115 +* The user's registered "Contact"-header including the whole value of the header
 716.116 +* except for the header's name ("Contact:"). 
 716.117 +* The value is of type TDesC8.
 716.118 +* Note that the value is available only in case the profile is registered.
 716.119 +*/
 716.120 +const TUint32 KSIPRegisteredContact = 13;
 716.121 +
 716.122 +/** 
 716.123 +* SNAP (Service Network Access Point) ID which value is type of TUint32.
 716.124 +* This is an optional parameter. When this parameter is configured, 
 716.125 +* KSIPAccessPointId has a meaningful value only when the profile is registered.
 716.126 +* The value of KSIPSnapId must be greater than zero.
 716.127 +*/
 716.128 +const TUint32 KSIPSnapId = 14;
 716.129 +
 716.130 +/** 
 716.131 +* A unique Contact-header's user-part 
 716.132 +* generated automatically by the SIP implementation.
 716.133 +* The value is of type TDesC8.
 716.134 +* This parameter is read-only and 
 716.135 +* trying to set it will fail with KErrAccessDenied.
 716.136 +*/
 716.137 +const TUint32 KSIPContactHeaderUser = 15;
 716.138 +
 716.139 +/** 
 716.140 +* Sets the KSoIpTOS socket option (see in_sock.h) for 
 716.141 +* all SIP signalling related to this profile.
 716.142 +* The value is of type TUint32.
 716.143 +*/
 716.144 +const TUint32 KSIPSoIpTOS = 16;
 716.145 +
 716.146 +/**
 716.147 +* Sets the Access Point Name.
 716.148 +* This is an Optional Parameter. 
 716.149 +* Access Point Name which value is type of TDesC8,
 716.150 +*/
 716.151 +const TUint32 KSIPAccessPointName = 17;
 716.152 +
 716.153 +/**
 716.154 + * Sets the SNAP Name.
 716.155 + * This is an Optional Parameter. 
 716.156 + * SNAP Name which value is type of TDesC8,
 716.157 +*/
 716.158 +const TUint32 KSIPSnapName = 18;
 716.159 +
 716.160 +/** 
 716.161 +* SIP Registrar  
 716.162 +*/
 716.163 +const TUint32 KSIPRegistrar = 130;
 716.164 +
 716.165 +/** 
 716.166 +* SIP Outbound Proxy
 716.167 +*/
 716.168 +const TUint32 KSIPOutboundProxy = 131;
 716.169 +
 716.170 +/** 
 716.171 +* HTTP Digest user name which value is type of TDesC8 
 716.172 +*/
 716.173 +const TUint32 KSIPDigestUserName = 150;
 716.174 +
 716.175 +/** 
 716.176 +* HTTP Digest realm which value is type of TDesC8
 716.177 +*/
 716.178 +const TUint32 KSIPDigestRealm = 151;
 716.179 +
 716.180 +/** 
 716.181 +* SIP server's address which value is of type TDesC8
 716.182 +*/
 716.183 +const TUint32 KSIPServerAddress = 152;
 716.184 +
 716.185 +// CLASS DECLARATION
 716.186 +/**
 716.187 +* @publishedAll
 716.188 +* @released
 716.189 +*
 716.190 +* Class contains profile information of particular SIP service
 716.191 +* provider. Class provides functions for quering profile parameter
 716.192 +* values.
 716.193 +*  @lib sipprofilecli.lib
 716.194 +*/
 716.195 +class CSIPProfile: public CBase, public MSIPRegistrationContext
 716.196 +    {    
 716.197 +    public:  // Constructors and destructor
 716.198 +        /**
 716.199 +        * Destructor.
 716.200 +        * @capability NetworkServices
 716.201 +        */
 716.202 +        IMPORT_C ~CSIPProfile();
 716.203 +
 716.204 +    public: // New functions
 716.205 +        /**
 716.206 +        * Gets profile type information
 716.207 +        * @return profile type information
 716.208 +        */
 716.209 +        IMPORT_C const TSIPProfileTypeInfo& Type() const;
 716.210 +
 716.211 +        /** 
 716.212 +        * Gets profile parameter
 716.213 +        * @param aParam a parameter to get
 716.214 +        * @param aVal on return will contain parameter value
 716.215 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 716.216 +        */
 716.217 +        IMPORT_C TInt GetParameter(TUint32 aParam, TDesC8 const *& aVal) const; 
 716.218 +
 716.219 +        /** 
 716.220 +        * Gets profile parameter
 716.221 +        * @param aParam a parameter to get
 716.222 +        * @param aVal on return will contain parameter value
 716.223 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 716.224 +        */
 716.225 +        IMPORT_C TInt GetParameter(TUint32 aParam, TUint32& aVal) const;
 716.226 +
 716.227 +        /** 
 716.228 +        * Gets profile parameter
 716.229 +        * @param aParam a parameter to get
 716.230 +        * @param aVal on return will contain parameter value
 716.231 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 716.232 +        */
 716.233 +        IMPORT_C TInt GetParameter(TUint32 aParam, TBool& aVal) const;
 716.234 +
 716.235 +        /** 
 716.236 +        * Gets profile parameter
 716.237 +        * @param aParam a parameter to get
 716.238 +        * @param aVal on return will contain parameter value
 716.239 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 716.240 +        */
 716.241 +        IMPORT_C TInt GetParameter(TUint32 aParam, MDesC8Array const *& aVal) const;
 716.242 +
 716.243 +        /** 
 716.244 +        * Gets profile parameter that is defined for a particular SIP server
 716.245 +        * @param aServer a SIP server type
 716.246 +        * @param aParam a parameter to get
 716.247 +        * @param aVal on return will contain parameter value
 716.248 +        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 716.249 +        */
 716.250 +        IMPORT_C TInt GetParameter(TUint32 aServerType, TUint32 aParam, TDesC8 const *& aVal) const;
 716.251 +
 716.252 +    public: //Functions from base class
 716.253 +        /**
 716.254 +        * Tests if the registration context can be
 716.255 +        * used for creating SIP messages/dialogs
 716.256 +        * Profile can be used, when CSIPProfileRegistry::IsEnabled() == ETrue
 716.257 +        * and Status() == ERegistered.
 716.258 +        * @return ETrue if can be used, EFalse otherwise
 716.259 +        * @internalComponent       
 716.260 +        */
 716.261 +        TBool IsContextActive() const;
 716.262 +
 716.263 +        /**
 716.264 +        * 
 716.265 +        * For internal use only
 716.266 +        * @return context id
 716.267 +        * @internalComponent        
 716.268 +        */
 716.269 +        TUint32 ContextId() const;
 716.270 +        
 716.271 +
 716.272 +    public: //New functions
 716.273 +
 716.274 +        /**
 716.275 +        * Two-phased constructor.
 716.276 +        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 716.277 +        *         profile server.
 716.278 +        */
 716.279 +
 716.280 +        static CSIPProfile* NewL(CSIPProfileRegistry* aSIPRegistry);
 716.281 +
 716.282 +        /**
 716.283 +        * Two-phased constructor.
 716.284 +        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 716.285 +        *         profile server.
 716.286 +        * Constructs an object and adds the pointer to the cleanup stack;
 716.287 +        */
 716.288 +
 716.289 +        static CSIPProfile* NewLC(CSIPProfileRegistry* aSIPRegistry);
 716.290 +
 716.291 +        /**
 716.292 +        * Sets profiles enabled state
 716.293 +        * @param aEnabled ETrue if enabled
 716.294 +        */
 716.295 +
 716.296 +        void SetEnabled(TBool aEnabled);
 716.297 +
 716.298 +        /**
 716.299 +        * Sets concrete profile that holds actual data 
 716.300 +        * @param aProfile profile instance containing data
 716.301 +        */
 716.302 +
 716.303 +        void SetConcreteProfile(CSIPConcreteProfile* aProfile);
 716.304 +
 716.305 +        /**
 716.306 +        * Clears concrete profile that holds actual data 
 716.307 +        */
 716.308 +
 716.309 +        void ClearConcreteProfile();
 716.310 +
 716.311 +        /**
 716.312 +        * Gets concrete profile that holds actual data
 716.313 +        * @return concrete profile holding data
 716.314 +        */
 716.315 +
 716.316 +        CSIPConcreteProfile& ConcreteProfile();
 716.317 +
 716.318 +        /**
 716.319 +        * Gets concrete profile that holds actual data
 716.320 +        * @return concrete profile holding data
 716.321 +        */
 716.322 +
 716.323 +        const CSIPConcreteProfile& ConcreteProfile() const;
 716.324 +
 716.325 +        /**
 716.326 +        * Checks if the profile is enabled
 716.327 +        * @return ETrue if enabled, EFalse otherwise
 716.328 +        */
 716.329 +
 716.330 +        TBool IsEnabled() const;
 716.331 +
 716.332 +        /**
 716.333 +        * Gets last occurred error during registration
 716.334 +        * @return last occurred error code, KErrNone if no error
 716.335 +        */
 716.336 +        TInt LastRegistrationError() const;
 716.337 +
 716.338 +        /**
 716.339 +        * sets pointer to registry for profile
 716.340 +        */
 716.341 +        void SetRegistry(CSIPProfileRegistryBase* aRegistry);
 716.342 +        
 716.343 +        /**
 716.344 +        * Clears pointer to registry from profile
 716.345 +        */
 716.346 +        void ClearRegistry();
 716.347 +        
 716.348 +    protected:
 716.349 +
 716.350 +        /**
 716.351 +        * Constructor. 
 716.352 +        */                
 716.353 +        CSIPProfile(CSIPProfileRegistryBase* aRegistry);
 716.354 +        
 716.355 +        /**
 716.356 +        * 2nd phase constructor. 
 716.357 +        */                
 716.358 +        void ConstructL();
 716.359 +
 716.360 +    protected:
 716.361 +    
 716.362 +        /**
 716.363 +        * @internalComponent
 716.364 +        */    
 716.365 +        CSIPConcreteProfile* iSIPProfile;
 716.366 +        
 716.367 +        /**
 716.368 +        * @internalComponent
 716.369 +        */        
 716.370 +        CSIPProfileRegistryBase* iSIPProfileRegistry;
 716.371 +
 716.372 +    private:
 716.373 +    
 716.374 +        TBool iEnabled;
 716.375 +    };
 716.376 +
 716.377 +#endif // CSIPPROFILE_H
   717.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   717.2 +++ b/epoc32/include/mw/sipprofilealrcontroller.h	Wed Mar 31 12:27:01 2010 +0100
   717.3 @@ -0,0 +1,132 @@
   717.4 +/*
   717.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   717.6 +* All rights reserved.
   717.7 +* This component and the accompanying materials are made available
   717.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   717.9 +* which accompanies this distribution, and is available
  717.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  717.11 +*
  717.12 +* Initial Contributors:
  717.13 +* Nokia Corporation - initial contribution.
  717.14 +*
  717.15 +* Contributors:
  717.16 +*
  717.17 +* Description:
  717.18 +* Name          : sipprofilealrcontroller.h
  717.19 +* Part of       : SIP / SIP Profile Agent
  717.20 +* Version       : SIP/6.0 
  717.21 +*
  717.22 +*/
  717.23 +
  717.24 +
  717.25 +
  717.26 +#ifndef CSIPPROFILEALRCONTROLLER_H
  717.27 +#define CSIPPROFILEALRCONTROLLER_H
  717.28 +
  717.29 +// INCLUDES
  717.30 +#include <e32base.h>
  717.31 +
  717.32 +// FORWARD DECLARATIONS
  717.33 +class CSIPProfileRegistryBase;
  717.34 +class MSipProfileAlrObserver;
  717.35 +
  717.36 +// CLASS DECLARATION
  717.37 +/**
  717.38 +*  @publishedAll
  717.39 +*  @released
  717.40 +*
  717.41 +*  This class provides functions to control 
  717.42 +*  ALR (Application Level Roaming) for SIP profiles that have 
  717.43 +*  a SNAP (Service Network Access Point) ID configured. 
  717.44 +*  By default the clients allow automatic roaming between 
  717.45 +*  IAPs (Internet Access Point) for a SIP profile. 
  717.46 +*  The clients wanting to control the roaming must instantiate this class.
  717.47 +*  After that all the IAP availability events received through 
  717.48 +*  MSipProfileAlrObserver::AlrEvent must be allowed or disallowed.
  717.49 +*
  717.50 +*  @lib sipprofilecli.lib
  717.51 +*/
  717.52 +class CSipProfileAlrController : public CBase
  717.53 +    {
  717.54 +    public: // Constructors and destructor
  717.55 +    
  717.56 +        /**
  717.57 +        * Two-phased constructor.
  717.58 +        * @param aRegistry a SIP profile registry instance.
  717.59 +        * @param aObserver a observer for IAP migration events.
  717.60 +        */
  717.61 +        IMPORT_C static CSipProfileAlrController* NewL(
  717.62 +            CSIPProfileRegistryBase& aRegistry,
  717.63 +            MSipProfileAlrObserver& aObserver );
  717.64 +
  717.65 +        /**
  717.66 +        * Two-phased constructor.
  717.67 +        * Constructs an object and adds the pointer to the cleanup stack.
  717.68 +        * @param aRegistry a SIP profile registry instance.
  717.69 +        * @param aObserver a observer for IAP migration events.
  717.70 +        */
  717.71 +        IMPORT_C static CSipProfileAlrController* NewLC(
  717.72 +            CSIPProfileRegistryBase& aRegistry,
  717.73 +            MSipProfileAlrObserver& aObserver );   
  717.74 +    
  717.75 +        /**
  717.76 +        * Destructor.
  717.77 +        */
  717.78 +        ~CSipProfileAlrController();
  717.79 +
  717.80 +    public: // New functions
  717.81 +
  717.82 +        /**
  717.83 +        * Allows SIP Profile Agent to start the migration 
  717.84 +        * to a new IAP for the profile.
  717.85 +        * If also all the other clients allow the migration,
  717.86 +        * migration will be started and all the clients are informed
  717.87 +        * with MSipProfileAlrObserver::AlrEvent(EMigrationStarted,...).
  717.88 +        * When MSipProfileAlrObserver::AlrEvent(EMigrationCompleted,...)
  717.89 +        * gets called the migration has been completed and
  717.90 +        * the related SIP profile has been registered via the new IAP. 
  717.91 +        * @param aProfileId the SIP profile id
  717.92 +        * @param aIapId the new IAP id. 
  717.93 +        */
  717.94 +        IMPORT_C void AllowMigrationL( TUint32 aProfileId,
  717.95 +                                       TUint32 aIapId );
  717.96 +
  717.97 +        /**
  717.98 +        * Disallows SIP Profile Agent to migrate 
  717.99 +        * to a new IAP for the profile.
 717.100 +        * After the client calls this function all the clients are informed
 717.101 +        * with MSipProfileAlrObserver::AlrError(...).
 717.102 +        * @param aProfileId the SIP profile id
 717.103 +        * @param aIapId the new IAP id. 
 717.104 +        */
 717.105 +        IMPORT_C void DisallowMigrationL( TUint32 aProfileId,
 717.106 +                                          TUint32 aIapId );
 717.107 +                                          
 717.108 +        /**
 717.109 +        * Refreshes the list of available IAPs for 
 717.110 +        * the SNAP configured for the profile.
 717.111 +        * If a new better IAP is available, it is offered via
 717.112 +        * MSipProfileAlrObserver::AlrEvent(EIapAvailable,...).
 717.113 +        * This function should be called if migration 
 717.114 +        * to a IAP has been previously disallowed and the client wants to 
 717.115 +        * check whether the better IAP is still available.
 717.116 +        * @param aProfileId the SIP profile id 
 717.117 +        */
 717.118 +        IMPORT_C void RefreshIapAvailabilityL( TUint32 aProfileId ); 
 717.119 +
 717.120 +
 717.121 +    private: // Constructors:
 717.122 +
 717.123 +        CSipProfileAlrController( CSIPProfileRegistryBase& aRegistry );        
 717.124 +        void ConstructL( MSipProfileAlrObserver& aObserver );
 717.125 +        
 717.126 +    private: // Data
 717.127 +    
 717.128 +    	CSIPProfileRegistryBase& iRegistry;
 717.129 +    
 717.130 +    private: // For testing purposes	
 717.131 +
 717.132 +	    friend class CSIPProfileAlrControllerTest;        
 717.133 +    };
 717.134 +
 717.135 +#endif // CSIPPROFILEALRCONTROLLER_H
   718.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   718.2 +++ b/epoc32/include/mw/sipprofilealrobserver.h	Wed Mar 31 12:27:01 2010 +0100
   718.3 @@ -0,0 +1,87 @@
   718.4 +/*
   718.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   718.6 +* All rights reserved.
   718.7 +* This component and the accompanying materials are made available
   718.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   718.9 +* which accompanies this distribution, and is available
  718.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  718.11 +*
  718.12 +* Initial Contributors:
  718.13 +* Nokia Corporation - initial contribution.
  718.14 +*
  718.15 +* Contributors:
  718.16 +*
  718.17 +* Description:
  718.18 +* Name          : sipprofilealrobserver.h
  718.19 +* Part of       : SIP / SIP Profile Agent
  718.20 +* Version       : SIP/6.0 
  718.21 +*
  718.22 +*/
  718.23 +
  718.24 +
  718.25 +
  718.26 +#ifndef MSIPPROFILEALROBSERVER_H
  718.27 +#define MSIPPROFILEALROBSERVER_H
  718.28 +
  718.29 +// INCLUDES
  718.30 +#include <e32std.h>
  718.31 +
  718.32 +// CLASS DECLARATION
  718.33 +/**
  718.34 +* @publishedAll
  718.35 +* @released
  718.36 +*
  718.37 +* Callback to receive notifications about ALR (Application Level Roaming) 
  718.38 +* related events and errors.
  718.39 +*/
  718.40 +class MSipProfileAlrObserver
  718.41 +    {
  718.42 +    public:
  718.43 +    
  718.44 +        /** SIP Profile ALR events */
  718.45 +        enum TEvent
  718.46 +            {
  718.47 +             /** 
  718.48 +            * A new IAP became available.
  718.49 +            * When receiving this event the client must call 
  718.50 +            * CSipProfileAlrController::AllowMigrationL or DisallowMigrationL.
  718.51 +            */           
  718.52 +            EIapAvailable = 0,
  718.53 +            /** 
  718.54 +            * All the clients have allowed the migration to the new IAP and
  718.55 +            * the migration to the new IAP for the SIP profile has started. 
  718.56 +            */
  718.57 +            EMigrationStarted,
  718.58 +            /** 
  718.59 +            * Migration to a new IAP for a SIP profile has been completed and
  718.60 +            * the related SIP profile has been registered via the new IAP.
  718.61 +            */
  718.62 +            EMigrationCompleted
  718.63 +            };
  718.64 +                                   
  718.65 +        /**
  718.66 +        * ALR related event occurred.
  718.67 +        * @param aEvent the event that occurred
  718.68 +        * @param aProfileId identifies the SIP profile related to the event
  718.69 +        * @param aSnapId the SNAP related to the event
  718.70 +        * @param aIapId the IAP related to the event
  718.71 +        */
  718.72 +        virtual void AlrEvent( TEvent aEvent,
  718.73 +                               TUint32 aProfileId,
  718.74 +                               TUint32 aSnapId,
  718.75 +                               TUint32 aIapId ) = 0;
  718.76 +                               
  718.77 +        /**
  718.78 +        * ALR related error occurred.
  718.79 +        * @param aError the error that occurred
  718.80 +        * @param aProfileId identifies the SIP profile related to the error
  718.81 +        * @param aSnapId the SNAP related to the error
  718.82 +        * @param aIapId the IAP related to the error
  718.83 +        */
  718.84 +        virtual void AlrError( TInt aError,
  718.85 +                               TUint32 aProfileId,
  718.86 +                               TUint32 aSnapId,
  718.87 +                               TUint32 aIapId ) = 0;                                                                  
  718.88 +    };
  718.89 +
  718.90 +#endif // MSIPPROFILEALROBSERVER_H
   719.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   719.2 +++ b/epoc32/include/mw/sipprofileregistry.h	Wed Mar 31 12:27:01 2010 +0100
   719.3 @@ -0,0 +1,180 @@
   719.4 +/*
   719.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   719.6 +* All rights reserved.
   719.7 +* This component and the accompanying materials are made available
   719.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   719.9 +* which accompanies this distribution, and is available
  719.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  719.11 +*
  719.12 +* Initial Contributors:
  719.13 +* Nokia Corporation - initial contribution.
  719.14 +*
  719.15 +* Contributors:
  719.16 +*
  719.17 +* Description:
  719.18 +* Name        : sipprofileregistry.h
  719.19 +* Part of     : SIP Profile Client
  719.20 +* Interface   : SDK API, SIP Profile API
  719.21 +* The class for using SIP profiles
  719.22 +* Version     : 1.0
  719.23 +*
  719.24 +*/
  719.25 +
  719.26 +
  719.27 +
  719.28 +#ifndef CSIPPROFILEREGISTRY_H
  719.29 +#define CSIPPROFILEREGISTRY_H
  719.30 +
  719.31 +//  INCLUDES
  719.32 +#include <e32base.h>
  719.33 +#include <e32std.h>
  719.34 +#include <badesca.h>
  719.35 +#include "sipprofileregistrybase.h"
  719.36 +
  719.37 +// FORWARD DECLARATIONS
  719.38 +class CSIP;
  719.39 +class CSIPConnection;
  719.40 +class CSIPProfile;
  719.41 +class MSIPProfileRegistryObserver;
  719.42 +class MSIPConnectionObserver;
  719.43 +
  719.44 +
  719.45 +// CLASS DECLARATION
  719.46 +/**
  719.47 +*  @publishedAll
  719.48 +*  @released
  719.49 +*
  719.50 +*  The class for retrieving SIP profiles from permanent storage.
  719.51 +*  This class provides services for retreiving SIP profiles
  719.52 +*  and enabling/disabling them for the usage.
  719.53 +*
  719.54 +*  The user can create only one instance of this class (a singleton class).
  719.55 +*
  719.56 +*  @lib sipprofilecli.lib
  719.57 +*/
  719.58 +class CSIPProfileRegistry: public CSIPProfileRegistryBase
  719.59 +    {
  719.60 +    public:  // Constructors and destructor
  719.61 +        /**
  719.62 +        * Two-phased constructor.
  719.63 +        * This constructor should be used if the client intends
  719.64 +        * to use SIP services with profiles.
  719.65 +        * @param aSip a SIP client providing connection to SIP stack.
  719.66 +        * @param aObserver a observer for SIP profile change events.
  719.67 +        */
  719.68 +        IMPORT_C static CSIPProfileRegistry* NewL(
  719.69 +            CSIP& aSip,
  719.70 +            MSIPProfileRegistryObserver& aObserver);
  719.71 +
  719.72 +        /**
  719.73 +        * Two-phased constructor.
  719.74 +        * This constructor should be used if the client intends
  719.75 +        * to use SIP services with profiles.
  719.76 +        * Constructs an object and adds the pointer to the cleanup stack;
  719.77 +        * @param aSip a SIP client providing connection to SIP stack.
  719.78 +        * @param aObserver a observer for SIP profile change events.
  719.79 +        */
  719.80 +        IMPORT_C static CSIPProfileRegistry* NewLC(
  719.81 +            CSIP& aSip,
  719.82 +            MSIPProfileRegistryObserver& aObserver);
  719.83 +
  719.84 +        /**
  719.85 +        * Destructor
  719.86 +        */
  719.87 +        IMPORT_C ~CSIPProfileRegistry();
  719.88 +
  719.89 +    public: // New functions
  719.90 +        /**
  719.91 +        * Gets handle to the SIP server
  719.92 +        * @return handle to the SIP server
  719.93 +        */
  719.94 +        IMPORT_C CSIP& SIP() const;
  719.95 +
  719.96 +        /**
  719.97 +        * Gets the SIP connection to be used with this SIP profile.
  719.98 +        * @pre IsEnabled() == ETrue
  719.99 +        * @param aProfile a sip profile
 719.100 +        * @return a SIP connection to be used; the owneship is transfered
 719.101 +        * @leave KErrNoMemory if out of memory
 719.102 +        * @capability NetworkServices
 719.103 +        */
 719.104 +        IMPORT_C CSIPConnection* ConnectionL(
 719.105 +            CSIPProfile& aProfile);
 719.106 +
 719.107 +        /**
 719.108 +        * Enables the SIP profile for use.
 719.109 +        * Enabling the SIP profile will cause the SIP profile to
 719.110 +        * be registered if its status was unregistered.
 719.111 +        * The user must check the profile status after calling this
 719.112 +        * function. In case the profile is not registered the user must
 719.113 +        * wait until the it is notified about profile registration 
 719.114 +        * on MSIPProfileRegistryObserver-callback interface.
 719.115 +        * @param aProfile a sip profile to enable
 719.116 +        * @param aObserver a observer for SIP connection events
 719.117 +        * @leave KErrNotFound if non-existing profile is provided
 719.118 +        * @capability NetworkServices
 719.119 +        */
 719.120 +        IMPORT_C void EnableL(
 719.121 +            CSIPProfile& aProfile,
 719.122 +            MSIPConnectionObserver &aObserver);
 719.123 +        
 719.124 +        /**
 719.125 +        * Disables the usage of SIP profile
 719.126 +        * @param aProfile a sip profile to disable
 719.127 +        * @return KErrNone if SIP profile was successfully disabled; 
 719.128 +        *         system wide error otherwise
 719.129 +        * @capability NetworkServices
 719.130 +        */
 719.131 +        IMPORT_C TInt Disable(CSIPProfile& aProfile);
 719.132 +
 719.133 +        /**
 719.134 +        * Tests is the SIP profile enabled for the use
 719.135 +        * @param aProfile a SIP profile to be checked
 719.136 +        * @return ETrue if SIP profile is enabled; EFalse otherwise
 719.137 +        */
 719.138 +        IMPORT_C TBool IsEnabled(const CSIPProfile& aProfile) const;
 719.139 +        
 719.140 +        /**
 719.141 +        * Force disables the usage of SIP profile
 719.142 +        * All Profile related activities will be stopped ungracefully
 719.143 +        * @param aProfile a sip profile to disable
 719.144 +        * @return KErrNone if SIP profile was successfully disabled; 
 719.145 +        *         system wide error otherwise
 719.146 +        * @capability NetworkControl
 719.147 +        */
 719.148 +        IMPORT_C TInt ForceDisable(CSIPProfile& aProfile);
 719.149 +        
 719.150 +        /**
 719.151 +        * Refreshes the Enabled SIP profile for use.
 719.152 +        * Refreshing the Enabled Profile will cause the SIP Profile to
 719.153 +        * get Registered if its status was not registered. 
 719.154 +        * This function has to be used when the profile is in Enabled state and 
 719.155 +        * might be unregistered due to a connection loss.
 719.156 +        * @param aProfile a sip profile to enable
 719.157 +        * @leave KErrNotFound if non-existing profile is provided
 719.158 +        * @leave KErrArgument if the profile is not previously Enabled and in Unregistered state.
 719.159 +        * @capability NetworkServices
 719.160 +        */
 719.161 +        
 719.162 +        IMPORT_C void RefreshEnableL(CSIPProfile& aProfile);
 719.163 +
 719.164 +    public: 
 719.165 +
 719.166 +        /**
 719.167 +        * @internalComponent
 719.168 +        */
 719.169 +        CSIPProfile* NewInstanceL();
 719.170 +    
 719.171 +    private:
 719.172 +        
 719.173 +        CSIPProfileRegistry();
 719.174 +        CSIPProfileRegistry(CSIP& aSip, MSIPProfileRegistryObserver& aObserver);
 719.175 +        void ConstructL();
 719.176 +        
 719.177 +    private: 
 719.178 +
 719.179 +        CSIP& iSip;
 719.180 +        MSIPConnectionObserver* iConnectionObserver;
 719.181 +    };
 719.182 +
 719.183 +#endif // CSIPPROFILEREGISTRY_H
   720.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   720.2 +++ b/epoc32/include/mw/sipprofileregistrybase.h	Wed Mar 31 12:27:01 2010 +0100
   720.3 @@ -0,0 +1,422 @@
   720.4 +/*
   720.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   720.6 +* All rights reserved.
   720.7 +* This component and the accompanying materials are made available
   720.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   720.9 +* which accompanies this distribution, and is available
  720.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  720.11 +*
  720.12 +* Initial Contributors:
  720.13 +* Nokia Corporation - initial contribution.
  720.14 +*
  720.15 +* Contributors:
  720.16 +*
  720.17 +* Description:
  720.18 +* Name        : sipprofileregistrybase.h
  720.19 +* Part of     : SIP Profile Client
  720.20 +* Interface   : SDK API, SIP Profile API
  720.21 +* The class for retrieving SIP profiles from permanent storage.
  720.22 +* Version     : 1.0
  720.23 +*
  720.24 +*/
  720.25 +
  720.26 +
  720.27 +
  720.28 +#ifndef CSIPPROFILEREGISTRYBASE_H
  720.29 +#define CSIPPROFILEREGISTRYBASE_H
  720.30 +
  720.31 +//  INCLUDES
  720.32 +#include <e32base.h>
  720.33 +#include <badesca.h>
  720.34 +#include "sipconcreteprofileobserver.h"
  720.35 +
  720.36 +// FORWARD DECLARATIONS
  720.37 +class CSIPProfile;
  720.38 +class CSIPConcreteProfile;
  720.39 +class TSIPProfileTypeInfo;
  720.40 +class CSIPProfileCleanupItem;
  720.41 +class CSIPProfileItem;
  720.42 +class CSIPProfileITCReceiver;
  720.43 +class CSIPProfileITC;
  720.44 +class CSIPProfilePlugins;
  720.45 +class MSIPProfileRegistryObserver;
  720.46 +class RSIPProfile;
  720.47 +class CSIPConcreteProfileHolder;
  720.48 +
  720.49 +// CLASS DECLARATION
  720.50 +/**
  720.51 +* @publishedAll
  720.52 +* @released
  720.53 +*
  720.54 +* The class functions for retrieving SIP profiles from permanent storage.
  720.55 +* It enables retrieval of single or more profiles from permanent
  720.56 +* storage located in profile server.
  720.57 +*  
  720.58 +* The class enables also the query of supported profile types.
  720.59 +*
  720.60 +* This class is an abstract class and cannot be instantiated.
  720.61 +*
  720.62 +* @lib sipprofilecli.lib
  720.63 +*/
  720.64 +class CSIPProfileRegistryBase: public CBase, public MSIPConcreteProfileObserver
  720.65 +    {
  720.66 +    public:  // Constructors and destructor
  720.67 +
  720.68 +        IMPORT_C ~CSIPProfileRegistryBase();
  720.69 +
  720.70 +    public: //new functions
  720.71 +        /**
  720.72 +        * Gets all SIP profiles
  720.73 +        * @pre aProfiles.Count() == 0
  720.74 +        * @param aProfiles a reference to a client-owned array, which
  720.75 +        *        on return is filled with all existing SIP profiles
  720.76 +        * @leave KErrNoMemory if out of memory
  720.77 +        * @capability ReadUserData
  720.78 +        */
  720.79 +        IMPORT_C void ProfilesL(RPointerArray<CSIPProfile>& aProfiles);
  720.80 +
  720.81 +        /**
  720.82 +        * Gets all SIP profiles of particular type
  720.83 +        * The owneship of profiles are transferred.
  720.84 +        * @pre aProfiles.Count() == 0
  720.85 +        * @param aType a SIP profile type that is used for a query
  720.86 +        * @param aProfiles a reference to a client-owned array, which
  720.87 +        *        on return is filled with profiles of the given type.
  720.88 +        * @leave KErrNoMemory if out of memory
  720.89 +        * @capability ReadUserData
  720.90 +        */        
  720.91 +        IMPORT_C void ProfilesL(
  720.92 +                     const TSIPProfileTypeInfo& aType,
  720.93 +                     RPointerArray<CSIPProfile>& aProfiles);
  720.94 +
  720.95 +        /**
  720.96 +        * Gets SIP profile for a particular SIP AOR
  720.97 +        * The owneship of profiles are transferred.
  720.98 +        * @pre aProfiles.Count() == 0
  720.99 +        * @param aAOR a SIP AOR e.g. user@domain.com
 720.100 +        * @param aProfiles a reference to a client-owned array, which
 720.101 +        *        on return is filled with profiles of the given type.
 720.102 +        * @leave KErrNoMemory if out memory
 720.103 +        * @capability ReadUserData
 720.104 +        */
 720.105 +        IMPORT_C void ProfilesL(
 720.106 +                     const TDesC8& aAOR,
 720.107 +                     RPointerArray<CSIPProfile>& aProfiles);
 720.108 +
 720.109 +        /**
 720.110 +        * Gets SIP profile identified by the Id
 720.111 +        * The owneship of profile is transferred.
 720.112 +        * @param aId a SIP profile Id
 720.113 +        * @return SIP profile 
 720.114 +        * @leave KErrNotFound if profile is not found
 720.115 +        * @capability ReadUserData
 720.116 +        */
 720.117 +        IMPORT_C CSIPProfile* ProfileL(TUint32 aId);
 720.118 +
 720.119 +        /**
 720.120 +        * Gets the default profile
 720.121 +        * @return default profile; the owneship is transfered
 720.122 +        * @leave KErrNotFound if profile not found
 720.123 +        * @leave KErrNoMemory if out of memory
 720.124 +        * @capability ReadUserData
 720.125 +        */
 720.126 +        IMPORT_C CSIPProfile* DefaultProfileL();
 720.127 +
 720.128 +        /**
 720.129 +        * Gets supported profile types
 720.130 +        * The owneship of returned objects are transferred.
 720.131 +        * @pre aSupportedProfileTypes.Count() == 0
 720.132 +        * @param aSupportedProfileTypes a reference to  client-owned array,
 720.133 +        *        which on return is filled with supported profile types.
 720.134 +        *         Any existing data in the array is destroyed.
 720.135 +        * @leave KErrNoMemory if out of memory
 720.136 +        */
 720.137 +        IMPORT_C void SupportedProfileTypesL(
 720.138 +                    RArray<TSIPProfileTypeInfo>& aSupportedProfileTypes);
 720.139 +
 720.140 +        /**
 720.141 +        * Gets the last occurred error during registration
 720.142 +        * @param aProfile 
 720.143 +        * @return last occurred registration error, KErrNone if no error
 720.144 +        */
 720.145 +        IMPORT_C TInt LastRegistrationError(const CSIPProfile& aProfile) const;
 720.146 +
 720.147 +    public:
 720.148 +
 720.149 +        /**
 720.150 +        * Enable profile
 720.151 +        * @param aProfile to be enabled
 720.152 +        * @internalComponent        
 720.153 +        */
 720.154 +        void EnableProfileL(CSIPProfile& aProfile);
 720.155 +        
 720.156 +        /**
 720.157 +        * Gets count of clients that have a profile enabled
 720.158 +        * @param aProfile profile to be checked
 720.159 +        * @return number of clients that have the profile enabled
 720.160 +        * @internalComponent
 720.161 +        */
 720.162 +        TInt UsageL(const CSIPProfile& aProfile) const;
 720.163 +
 720.164 +        /**
 720.165 +        * Disable profile
 720.166 +        * @param aProfile to be disabled
 720.167 +        * @internalComponent
 720.168 +        */
 720.169 +        void DisableProfileL(CSIPProfile& aProfile);
 720.170 +        
 720.171 +        /**
 720.172 +        * Force disable profile
 720.173 +    	* All Profile related activities will be stopped ungracefully
 720.174 +        * @param aProfile to be disabled
 720.175 +        * @internalComponent
 720.176 +        */
 720.177 +        void ForceDisableProfileL(CSIPProfile& aProfile);
 720.178 +
 720.179 +        /**
 720.180 +        * Add profile
 720.181 +        * @param aProfile to be added
 720.182 +        * @internalComponent
 720.183 +        */
 720.184 +        void AddProfileL(CSIPProfile& aProfile);
 720.185 +
 720.186 +        /**
 720.187 +        * Update profile
 720.188 +        * @param aProfile to be updated
 720.189 +        * @internalComponent
 720.190 +        */
 720.191 +        void UpdateProfileL(CSIPProfile& aProfile);
 720.192 +
 720.193 +        /**
 720.194 +        * Remove profile
 720.195 +        * @pre UsageL(aProfile) == 0
 720.196 +        * @param aProfile to be removed
 720.197 +        * @internalComponent
 720.198 +        */
 720.199 +        void RemoveProfileL(CSIPProfile& aProfile);
 720.200 +
 720.201 +        /**
 720.202 +        * Informs destruction of local profile object instance
 720.203 +        * @param aProfile instance of deleted profile
 720.204 +        * @internalComponent
 720.205 +        */
 720.206 +        void ProfileDeleted(CSIPProfile& aProfile);
 720.207 +
 720.208 +        /**
 720.209 +        * Checks whether profile is default or not
 720.210 +        * @param aProfile checked profile
 720.211 +        * @return ETrue if is default, otherwise EFalse
 720.212 +        * @internalComponent
 720.213 +        */
 720.214 +        TBool IsDefaultProfileL(const CSIPProfile& aProfile);
 720.215 +
 720.216 +        /**
 720.217 +        * Updates SIP profile value for negotiated security mechanism; leaves on failure
 720.218 +        * @param aProfile a SIP profile
 720.219 +        * @internalComponent
 720.220 +        */
 720.221 +        void NegotiatedSecurityMechanismL(CSIPConcreteProfile& aProfile);
 720.222 +
 720.223 +        /**
 720.224 +        * Updates SIP profile value for registered AORs; leaves on failure
 720.225 +        * @param aProfile a SIP profile
 720.226 +        * @internalComponent
 720.227 +        */
 720.228 +        void RegisteredAORsL(CSIPConcreteProfile& aProfile);
 720.229 +
 720.230 +        /**
 720.231 +        * Gets new instance of either type CSIPProfile or CSIPManagedProfile
 720.232 +        * @return new instance
 720.233 +        * @internalComponent
 720.234 +        */        
 720.235 +        virtual CSIPProfile* NewInstanceL() = 0;
 720.236 +
 720.237 +        /**
 720.238 +        * Roll back in case of failure
 720.239 +        * @param aItem object to be cleaned
 720.240 +        * @internalComponent
 720.241 +        */
 720.242 +        static void CrashRevert (TAny* aItem);
 720.243 +
 720.244 +        /**
 720.245 +        * Roll back in case of failure
 720.246 +        * @param aItem object to be cleaned
 720.247 +        * @internalComponent
 720.248 +        */
 720.249 +        static void LocalCrashRevert (TAny* aItem);
 720.250 +        
 720.251 +        /**
 720.252 +        * Gets the ITC member variable.
 720.253 +        * The owneship of ITC is not transferred.
 720.254 +        * @return Reference to ITC member variable.
 720.255 +        * @internalComponent 
 720.256 +        */
 720.257 +        CSIPProfileITC& Itc(); 
 720.258 +        
 720.259 +        /**
 720.260 +        * Gets the ITC receiver member variable.
 720.261 +        * The owneship of ITC receiver is not transferred.
 720.262 +        * @return Reference to ITC receiver member variable.
 720.263 +        * @internalComponent 
 720.264 +        */
 720.265 +        CSIPProfileITCReceiver& ItcReceiver(); 
 720.266 +
 720.267 +
 720.268 +    public: // From MSIPConcreteProfileObserver
 720.269 +
 720.270 +        /**
 720.271 +        * SIP profile registration status changed event
 720.272 +        * @param aProfileId id of profile which registration 
 720.273 +        *        status has been changed.
 720.274 +        * @param aStatus new status of the profile
 720.275 +        * @param aStatusId id related to registration
 720.276 +        * @internalComponent
 720.277 +        */
 720.278 +        void RegistrationStatusChangedL(TUint32 aProfileId, 
 720.279 +                                       TInt aStatus,
 720.280 +                                       TUint32 aStatusId);
 720.281 +
 720.282 +        /** 
 720.283 +        * SIP profile creation event.
 720.284 +        * @param aProfileId id of new SIP Profile
 720.285 +        * @internalComponent
 720.286 +        */
 720.287 +        void AddedL(TUint32 aProfileId);
 720.288 +
 720.289 +        /**
 720.290 +        * SIP profile destruction event.
 720.291 +        * @param aProfileId id of profile which was destroyed
 720.292 +        * @internalComponent
 720.293 +        */    
 720.294 +        void RemovedL(TUint32 aProfileId);
 720.295 +
 720.296 +        /** 
 720.297 +        * SIP profile information update event
 720.298 +        * @param aProfileId id of updated SIP Profile
 720.299 +        * @param aSize size of updated SIP Profile
 720.300 +        * @internalComponent
 720.301 +        */
 720.302 +        void UpdatedL(TUint32 aProfileId, TUint aSize);
 720.303 +
 720.304 +        /**
 720.305 +        * An asynchronous error has occurred related to SIP profile
 720.306 +        * @param aProfileId the id of failed profile 
 720.307 +        * @param aStatus
 720.308 +        * @param aError a error code
 720.309 +        * @internalComponent
 720.310 +        */
 720.311 +        void ErrorOccurredL(TUint32 aProfileId,
 720.312 +                            TInt aStatus,
 720.313 +                            TInt aError);
 720.314 +
 720.315 +    protected: 
 720.316 +                                            
 720.317 +        /**
 720.318 +        * Constructor
 720.319 +        * @param aObserver observer to send events to
 720.320 +        * @internalComponent 
 720.321 +        */
 720.322 +        CSIPProfileRegistryBase(MSIPProfileRegistryObserver& aObserver); 
 720.323 +
 720.324 +        /**
 720.325 +        * Symbian 2nd phase base class constructor
 720.326 +        * @internalComponent
 720.327 +        */
 720.328 +        void BaseConstructL();
 720.329 +
 720.330 +        /**
 720.331 +        * Store profile into client cache
 720.332 +        * @param aItem a cleanup item for roll back in case of failure
 720.333 +        * @internalComponent
 720.334 +        */
 720.335 +        void StoreProfileL(CSIPProfileCleanupItem* aItem);
 720.336 +
 720.337 +        /**
 720.338 +        * Store array of profiles into client cache
 720.339 +        * @param aProfiles a array containing the profiles
 720.340 +        * @param aRetProfiles returned array containing profiles
 720.341 +        * @internalComponent
 720.342 +        */
 720.343 +        void StoreArrayL(
 720.344 +            RPointerArray<CSIPConcreteProfile>& aProfiles,
 720.345 +            RPointerArray<CSIPProfile>& aRetProfiles);
 720.346 +
 720.347 +        /**
 720.348 +        * Gets profile cache item
 720.349 +        * @param aProfileId a profile id to be found
 720.350 +        * @return local cache item of the profile
 720.351 +        * @internalComponent
 720.352 +        */        
 720.353 +        CSIPProfileItem* ProfileItemL(TUint aProfileId);
 720.354 +
 720.355 +        /**
 720.356 +        * Gets profile cache item index
 720.357 +        * @param aProfileId a profile id to be found
 720.358 +        * @return local cache item index of the profile
 720.359 +        * @internalComponent
 720.360 +        */        
 720.361 +        TInt ProfileIndex (TUint aProfileId);
 720.362 +
 720.363 +        /**
 720.364 +        * Gets profile cache item by index
 720.365 +        * @param aIndex a index of the profile to be found
 720.366 +        * @return local cache item of the profile
 720.367 +        * @internalComponent
 720.368 +        */        
 720.369 +        CSIPProfileItem* ProfileItemByIndex(TUint aIndex);
 720.370 +
 720.371 +        /**
 720.372 +        * Gets SIP profile identified by the Id; leaves on failure
 720.373 +        * The owneship of profile is transferred.
 720.374 +        * @param aId a SIP profile Id
 720.375 +        * @param aSize of profile if known
 720.376 +        * @return SIP profile or 0 pointer if there's no such SIP profile
 720.377 +        * @internalComponent
 720.378 +        */
 720.379 +        CSIPProfile* SIPProfileL(TUint32 aId, TInt aSize = 0);
 720.380 +        
 720.381 +    protected: // Data
 720.382 +
 720.383 +        /**
 720.384 +        * @internalComponent
 720.385 +        */
 720.386 +        RSIPProfile* iSipClient;
 720.387 +        
 720.388 +        /**
 720.389 +        * @internalComponent
 720.390 +        */        
 720.391 +        CSIPProfileITCReceiver* iITCReceiver;
 720.392 +        
 720.393 +        /**
 720.394 +        * @internalComponent
 720.395 +        */        
 720.396 +        CSIPProfileITC* iITC;
 720.397 +        
 720.398 +        /**
 720.399 +        * @internalComponent
 720.400 +        */        
 720.401 +        MSIPProfileRegistryObserver& iObserver;
 720.402 +        
 720.403 +        /**
 720.404 +        * @internalComponent
 720.405 +        */        
 720.406 +        RPointerArray<CSIPProfileItem> iProfiles;
 720.407 +        
 720.408 +        /**
 720.409 +        * @internalComponent
 720.410 +        */        
 720.411 +        CSIPProfilePlugins* iProfilePlugins;
 720.412 +        
 720.413 +        /**
 720.414 +        * @internalComponent
 720.415 +        */        
 720.416 +        CSIPProfileItem* iFindEntry;
 720.417 +        
 720.418 +    private:
 720.419 +        
 720.420 +        void ProfilesCommonL(RPointerArray<CSIPProfile>& aProfiles, 
 720.421 +                             CSIPConcreteProfileHolder* aHolder);
 720.422 +
 720.423 +    };
 720.424 +
 720.425 +#endif // CSIPPROFILEREGISTRYBASE_H
   721.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   721.2 +++ b/epoc32/include/mw/sipprofileregistryobserver.h	Wed Mar 31 12:27:01 2010 +0100
   721.3 @@ -0,0 +1,120 @@
   721.4 +/*
   721.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   721.6 +* All rights reserved.
   721.7 +* This component and the accompanying materials are made available
   721.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   721.9 +* which accompanies this distribution, and is available
  721.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  721.11 +*
  721.12 +* Initial Contributors:
  721.13 +* Nokia Corporation - initial contribution.
  721.14 +*
  721.15 +* Contributors:
  721.16 +*
  721.17 +* Description:
  721.18 +* Name        : sipprofileregistryobserver.h
  721.19 +* Part of     : SIP Profile Client
  721.20 +* Interface   : SDK API, SIP Profile API
  721.21 +* The observer class for monitoring SIP profiles.
  721.22 +* Version     : 1.0
  721.23 +*
  721.24 +*/
  721.25 +
  721.26 +
  721.27 +
  721.28 +#ifndef MSIPPROFILEOREGISTRYBSERVER_H
  721.29 +#define MSIPPROFILEOREGISTRYBSERVER_H
  721.30 +
  721.31 +//  INCLUDES
  721.32 +#include <e32base.h>
  721.33 +#include <e32std.h>
  721.34 +
  721.35 +// FORWARD DECLARATIONS
  721.36 +
  721.37 +// CLASS DECLARATION
  721.38 +/**
  721.39 +*  @publishedAll
  721.40 +*  @released
  721.41 +*
  721.42 +*  The observer class for monitoring SIP profiles.
  721.43 +*  Class must be implemented by the user in order to 
  721.44 +*  observe changes in the SIP profiles.
  721.45 +*/
  721.46 +class MSIPProfileRegistryObserver 
  721.47 +    {
  721.48 +    public: 
  721.49 +        /** Profile Registry events */
  721.50 +        enum TEvent
  721.51 +            {
  721.52 +            /** 
  721.53 +            * Signals the creation of a SIP profile, indicating that a new
  721.54 +            * profile is added into permanent store. This event is sent to
  721.55 +            * all observers.
  721.56 +            */
  721.57 +            EProfileCreated = 0,
  721.58 +            /** 
  721.59 +            * Signals the updating of a SIP profile, indicating that the data of 
  721.60 +            * an existing profile is updated into permanent store. This event is
  721.61 +            * sent to those observers who have the corresponding profile 
  721.62 +            * instantiated. 
  721.63 +            * Newly updated values of the profile are available for clients after
  721.64 +            * they receive this signal.If profile was registered while updated,
  721.65 +            * reregistration of the profile may occur. Updated values of the 
  721.66 +            * profile are uploaded into network when SIP registration process
  721.67 +            * is completed.It is possible (but not recommended) that profile is
  721.68 +            * updated even when it is being enabled by the client. If client 
  721.69 +            * receives this event for enabled profile, client should react as if
  721.70 +            * error was occurred in the exception that profile is disabled
  721.71 +            * or deleted first.
  721.72 +            */
  721.73 +            EProfileUpdated,
  721.74 +            /**
  721.75 +            * Signals the changing of the registration status of a SIP profile
  721.76 +            * to registered.
  721.77 +            * This event is sent to those observers who have the corresponding
  721.78 +            * profile instantiated.
  721.79 +            */
  721.80 +            EProfileRegistered,
  721.81 +            /**
  721.82 +            * Signals the changing of the registration status of a SIP profile
  721.83 +            * to deregistered.
  721.84 +            * This event is sent to those observers who have the corresponding
  721.85 +            * profile instantiated.
  721.86 +            */
  721.87 +            EProfileDeregistered,
  721.88 +            /**
  721.89 +            * Signals the destruction of a SIP profile, indicating that the 
  721.90 +            * profile has been removed from the permanent store and cannot 
  721.91 +            * be used anymore.This event is sent to those observers who have 
  721.92 +            * the corresponding profile instantiated.
  721.93 +            */
  721.94 +            EProfileDestroyed,
  721.95 +            /**
  721.96 +             * Signals the force disabling of a SIP profile, indicating that 
  721.97 +             * all the users attached to the profile are detached. This event
  721.98 +             * is sent to all the observers but ForceDisable API can be invoked
  721.99 +			 * only by application with Network Control capability.
 721.100 +             */
 721.101 +            EProfileForciblyDisabled
 721.102 +            };
 721.103 +
 721.104 +        /** 
 721.105 +        * An event related to SIP Profile has accorred
 721.106 +        * @param aProfileId a profile Id
 721.107 +        * @param aEvent an occurred event
 721.108 +        **/
 721.109 +        virtual void ProfileRegistryEventOccurred(TUint32 aProfileId,
 721.110 +                                                  TEvent aEvent)=0;
 721.111 +
 721.112 +        /**
 721.113 +        * An asynchronous error has occurred related to SIP profile
 721.114 +        * Event is send to those observers, who have the
 721.115 +        * corresponding profile instantiated.
 721.116 +        * @param aProfileId the id of failed profile 
 721.117 +        * @param aError an occurred error
 721.118 +        */
 721.119 +        virtual void ProfileRegistryErrorOccurred(TUint32 aProfileId,
 721.120 +                                                  TInt aError)=0;
 721.121 +    };
 721.122 +
 721.123 +#endif // MSIPPROFILEOREGISTRYBSERVER_H
   722.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   722.2 +++ b/epoc32/include/mw/sipprofileservercrkeys.h	Wed Mar 31 12:27:01 2010 +0100
   722.3 @@ -0,0 +1,50 @@
   722.4 +/*
   722.5 +* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   722.6 +* All rights reserved.
   722.7 +* This component and the accompanying materials are made available
   722.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   722.9 +* which accompanies this distribution, and is available
  722.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  722.11 +*
  722.12 +* Initial Contributors:
  722.13 +* Nokia Corporation - initial contribution.
  722.14 +*
  722.15 +* Contributors:
  722.16 +*
  722.17 +* Description:
  722.18 +* Name          : sipprofileservercrkeys.h
  722.19 +* Part of       : SIP ProfileAgent API
  722.20 +*
  722.21 +*/
  722.22 +
  722.23 +
  722.24 +
  722.25 +#ifndef PROFILESERVERCRKEYS_H_
  722.26 +#define PROFILESERVERCRKEYS_H_
  722.27 +
  722.28 +// INCLUDES
  722.29 +#include <e32def.h>
  722.30 +
  722.31 +/**
  722.32 +* @file
  722.33 +* @publishedAll
  722.34 +* @released
  722.35 +*/
  722.36 +
  722.37 +/**
  722.38 +* Key space configuration used by the SIP ProfileAgent.
  722.39 +*/
  722.40 +const TUid KCRUidProfileSrv = { 0x2001F889 };
  722.41 +
  722.42 +#define KSIPProfileTableMask 0xFF000000
  722.43 +#define KSIPProfileTableShift 24
  722.44 +
  722.45 +#define KSIPProfileTypeMask  0x00FF0000
  722.46 +#define KSIPProfileTypeShift  16
  722.47 +
  722.48 +#define KSIPProfilePropertyMask  0x0000FFFF
  722.49 +#define KSIPProfilePropertyShift  0
  722.50 +
  722.51 +#define KSIPProfilePropertiesTable 0x01000000
  722.52 +
  722.53 +#endif /*PROFILESERVERCRKEYS_H_*/
   723.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   723.2 +++ b/epoc32/include/mw/sipprofiletypeinfo.h	Wed Mar 31 12:27:01 2010 +0100
   723.3 @@ -0,0 +1,70 @@
   723.4 +/*
   723.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   723.6 +* All rights reserved.
   723.7 +* This component and the accompanying materials are made available
   723.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   723.9 +* which accompanies this distribution, and is available
  723.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  723.11 +*
  723.12 +* Initial Contributors:
  723.13 +* Nokia Corporation - initial contribution.
  723.14 +*
  723.15 +* Contributors:
  723.16 +*
  723.17 +* Description:
  723.18 +* Name        : sipprofiletypeinfo.h
  723.19 +* Part of     : SIP Profile Client
  723.20 +* Interface   : SDK API, SIP Profile API
  723.21 +* The class provides a container for the profile type information
  723.22 +* Version     : 1.0
  723.23 +*
  723.24 +*/
  723.25 +
  723.26 +
  723.27 +
  723.28 +#ifndef TSIPPROFILETYPEINFO_H
  723.29 +#define TSIPPROFILETYPEINFO_H
  723.30 +
  723.31 +//  INCLUDES
  723.32 +#include <e32base.h>
  723.33 +
  723.34 +// FORWARD DECLARATIONS
  723.35 +
  723.36 +// CLASS DECLARATION
  723.37 +/**
  723.38 +*  @publishedAll
  723.39 +*  @released
  723.40 +*
  723.41 +*  Container for the profile type information.
  723.42 +*
  723.43 +*  @lib sipprofilecli.lib
  723.44 +*/
  723.45 +class TSIPProfileTypeInfo
  723.46 +    {
  723.47 +    public:
  723.48 +
  723.49 +        /** Profile type name */
  723.50 +        typedef TBuf8<25> TSIPProfileName;
  723.51 +
  723.52 +        /** Profile classes */
  723.53 +        enum TSIPProfileClass
  723.54 +            {
  723.55 +            /** Network compliant with IETF standards */
  723.56 +            EInternet,
  723.57 +            /** Network compliant with 3GPP standards */
  723.58 +            EIms,
  723.59 +            /** Other */
  723.60 +            EOther,
  723.61 +            EMaxSIPProfileClass
  723.62 +            };
  723.63 +
  723.64 +    public:  // data members
  723.65 +
  723.66 +        /** Profile class */
  723.67 +        TSIPProfileClass iSIPProfileClass;
  723.68 +
  723.69 +        /** Profile type name */
  723.70 +        TSIPProfileName iSIPProfileName;
  723.71 +    };
  723.72 +
  723.73 +#endif // TSIPPROFILETYPEINFO_H
   724.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   724.2 +++ b/epoc32/include/mw/sipproxyauthenticateheader.h	Wed Mar 31 12:27:01 2010 +0100
   724.3 @@ -0,0 +1,100 @@
   724.4 +/*
   724.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   724.6 +* All rights reserved.
   724.7 +* This component and the accompanying materials are made available
   724.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   724.9 +* which accompanies this distribution, and is available
  724.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  724.11 +*
  724.12 +* Initial Contributors:
  724.13 +* Nokia Corporation - initial contribution.
  724.14 +*
  724.15 +* Contributors:
  724.16 +*
  724.17 +* Description:
  724.18 +* Name          : sipproxyauthenticateheader.h
  724.19 +* Part of       : SIP Codec
  724.20 +* Version       : SIP/5.0 
  724.21 +*
  724.22 +*/
  724.23 +
  724.24 +
  724.25 +
  724.26 +#ifndef CSIPPROXYAUTHENTICATEHEADER_H
  724.27 +#define CSIPPROXYAUTHENTICATEHEADER_H
  724.28 +
  724.29 +//  INCLUDES
  724.30 +#include "sipauthenticateheaderbase.h"
  724.31 +#include "_sipcodecdefs.h"
  724.32 +
  724.33 +// CLASS DECLARATION
  724.34 +/**
  724.35 +* @publishedAll
  724.36 +* @released
  724.37 +*
  724.38 +* Class for SIP Proxy-Authenticate-header manipulation.
  724.39 +*
  724.40 +* @lib sipcodec.lib
  724.41 +*/
  724.42 +class CSIPProxyAuthenticateHeader : public CSIPAuthenticateHeaderBase
  724.43 +	{
  724.44 +	public:	// Constructors and destructor
  724.45 +
  724.46 +		/**
  724.47 +		* Constructs a CSIPProxyAuthenticateHeader from textual representation
  724.48 +		* of the header's value part.
  724.49 +		* @param aValue a value part of a "Proxy-Authenticate"-header 
  724.50 +		* @return a new instance of CSIPProxyAuthenticateHeader
  724.51 +		*/
  724.52 +		IMPORT_C static CSIPProxyAuthenticateHeader* 
  724.53 +			DecodeL(const TDesC8& aValue);
  724.54 +
  724.55 +		/**
  724.56 +		* Creates a new instance of CSIPProxyAuthenticateHeader
  724.57 +		* @return a new instance of CSIPProxyAuthenticateHeader
  724.58 +		*/
  724.59 +		IMPORT_C static CSIPProxyAuthenticateHeader* 
  724.60 +			NewL(RStringF aAuthScheme);
  724.61 +
  724.62 +		/**
  724.63 +		* Creates a new instance of CSIPProxyAuthenticateHeader
  724.64 +		* @return a new instance of CSIPProxyAuthenticateHeader
  724.65 +		*/
  724.66 +		IMPORT_C static CSIPProxyAuthenticateHeader* 
  724.67 +			NewLC(RStringF aAuthScheme);
  724.68 +
  724.69 +		/**
  724.70 +		* Destructor
  724.71 +		*/
  724.72 +		IMPORT_C ~CSIPProxyAuthenticateHeader();
  724.73 +
  724.74 +	public: // From CSIPHeaderBase
  724.75 +
  724.76 +		/**
  724.77 +		* From CSIPHeaderBase CloneL
  724.78 +		*/
  724.79 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  724.80 +		
  724.81 +		/**
  724.82 +		* From CSIPHeaderBase Name
  724.83 +		*/		
  724.84 +		IMPORT_C RStringF Name() const;
  724.85 +
  724.86 +
  724.87 +	public: // New functions, for internal use
  724.88 +
  724.89 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
  724.90 +		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  724.91 +
  724.92 +	private: // Constructors
  724.93 +
  724.94 +		CSIPProxyAuthenticateHeader();
  724.95 +
  724.96 +    private: // For testing purposes
  724.97 +
  724.98 +        UNIT_TEST(CSIPProxyAuthenticateHeaderTest)
  724.99 +	};
 724.100 +
 724.101 +#endif // CSIPPROXYAUTHENTICATEHEADER_H
 724.102 +
 724.103 +// End of File
   725.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   725.2 +++ b/epoc32/include/mw/sipproxyauthorizationheader.h	Wed Mar 31 12:27:01 2010 +0100
   725.3 @@ -0,0 +1,131 @@
   725.4 +/*
   725.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   725.6 +* All rights reserved.
   725.7 +* This component and the accompanying materials are made available
   725.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   725.9 +* which accompanies this distribution, and is available
  725.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  725.11 +*
  725.12 +* Initial Contributors:
  725.13 +* Nokia Corporation - initial contribution.
  725.14 +*
  725.15 +* Contributors:
  725.16 +*
  725.17 +* Description:
  725.18 +* Name          : sipproxyauthorizationheader.h
  725.19 +* Part of       : SIP Codec
  725.20 +* Version       : SIP/6.0 
  725.21 +*
  725.22 +*/
  725.23 +
  725.24 +
  725.25 +
  725.26 +#ifndef CSIPPROXYAUTHORIZATIONHEADER_H
  725.27 +#define CSIPPROXYAUTHORIZATIONHEADER_H
  725.28 +
  725.29 +//  INCLUDES
  725.30 +#include "sipauthorizationheaderbase.h"
  725.31 +#include "_sipcodecdefs.h"
  725.32 +
  725.33 +// CLASS DECLARATION
  725.34 +/**
  725.35 +* @publishedAll
  725.36 +* @released
  725.37 +*
  725.38 +* Class for SIP Proxy-Authorization-header manipulation.
  725.39 +*
  725.40 +* @lib sipcodec.lib
  725.41 +*/
  725.42 +class CSIPProxyAuthorizationHeader : public CSIPAuthorizationHeaderBase
  725.43 +	{
  725.44 +	public:	// Constructors and destructor
  725.45 +
  725.46 +		/**
  725.47 +		* Constructs a CSIPProxyAuthorizationHeader 
  725.48 +		* from textual representation of the header's value part.
  725.49 +		* @param aValue a value part of a "Proxy-Authenticate"-header 
  725.50 +		* @return a new instance of CSIPProxyAuthorizationHeader
  725.51 +		*/
  725.52 +		IMPORT_C static CSIPProxyAuthorizationHeader* 
  725.53 +			DecodeL(const TDesC8& aValue);
  725.54 +
  725.55 +		/**
  725.56 +		* Creates a new instance of CSIPProxyAuthorizationHeader
  725.57 +		* @return a new instance of CSIPProxyAuthorizationHeader
  725.58 +		*/
  725.59 +		IMPORT_C static CSIPProxyAuthorizationHeader* 
  725.60 +			NewL(RStringF aAuthScheme);
  725.61 +
  725.62 +		/**
  725.63 +		* Creates a new instance of CSIPProxyAuthorizationHeader
  725.64 +		* @return a new instance of CSIPProxyAuthorizationHeader
  725.65 +		*/
  725.66 +		IMPORT_C static CSIPProxyAuthorizationHeader* 
  725.67 +			NewLC(RStringF aAuthScheme);
  725.68 +
  725.69 +		/**
  725.70 +		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  725.71 +		* @param aAuthenticateHeaderBase to be copied
  725.72 +		* @return a new instance of CSIPProxyAuthorizationHeader
  725.73 +		*/
  725.74 +		IMPORT_C static CSIPProxyAuthorizationHeader* 
  725.75 +			NewL(const CSIPAuthorizationHeaderBase& aHeader);
  725.76 +
  725.77 +		/**
  725.78 +		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  725.79 +		* @param aAuthenticateHeaderBase to be copied
  725.80 +		* @return a new instance of CSIPProxyAuthorizationHeader
  725.81 +		*/
  725.82 +		IMPORT_C static CSIPProxyAuthorizationHeader* 
  725.83 +			NewLC(const CSIPAuthorizationHeaderBase& aHeader);
  725.84 +
  725.85 +		/**
  725.86 +		* Destructor
  725.87 +		*/
  725.88 +		IMPORT_C ~CSIPProxyAuthorizationHeader();
  725.89 +
  725.90 +	public: // From CSIPHeaderBase
  725.91 +
  725.92 +		/**
  725.93 +		* From CSIPHeaderBase ExternalizeSupported
  725.94 +		*/
  725.95 +		IMPORT_C TBool ExternalizeSupported() const;
  725.96 +
  725.97 +		/**
  725.98 +		* From CSIPHeaderBase CloneL
  725.99 +		*/
 725.100 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 725.101 +		
 725.102 +		/**
 725.103 +		* From CSIPHeaderBase Name
 725.104 +		*/		
 725.105 +		IMPORT_C RStringF Name() const;
 725.106 +
 725.107 +	public: // New functions, for internal use
 725.108 +
 725.109 +        /**
 725.110 +        * @internalComponent
 725.111 +        */
 725.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 725.113 +		
 725.114 +        /**
 725.115 +        * @internalComponent
 725.116 +        */		
 725.117 +		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
 725.118 +
 725.119 +	private: // Constructors
 725.120 +
 725.121 +		CSIPProxyAuthorizationHeader();
 725.122 +
 725.123 +	private: // From CSIPHeaderBase
 725.124 +
 725.125 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 725.126 +
 725.127 +    private: // For testing purposes
 725.128 +
 725.129 +        UNIT_TEST(CSIPProxyAuthorizationHeaderTest)
 725.130 +	};
 725.131 +
 725.132 +#endif // CSIPPROXYAUTHORIZATIONHEADER_H
 725.133 +
 725.134 +// End of File
   726.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   726.2 +++ b/epoc32/include/mw/sipproxyrequireheader.h	Wed Mar 31 12:27:01 2010 +0100
   726.3 @@ -0,0 +1,119 @@
   726.4 +/*
   726.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   726.6 +* All rights reserved.
   726.7 +* This component and the accompanying materials are made available
   726.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   726.9 +* which accompanies this distribution, and is available
  726.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  726.11 +*
  726.12 +* Initial Contributors:
  726.13 +* Nokia Corporation - initial contribution.
  726.14 +*
  726.15 +* Contributors:
  726.16 +*
  726.17 +* Description:
  726.18 +* Name        : sipproxyrequireheader.h
  726.19 +* Part of     : SIP Codec
  726.20 +* Interface   : SDK API, SIP Codec API
  726.21 +* Version     : SIP/4.0 
  726.22 +*
  726.23 +*/
  726.24 +
  726.25 +
  726.26 +
  726.27 +
  726.28 +#ifndef CSIPPROXYREQUIREHEADER_H
  726.29 +#define CSIPPROXYREQUIREHEADER_H
  726.30 +
  726.31 +//  INCLUDES
  726.32 +#include "siptokenheaderbase.h"
  726.33 +#include "_sipcodecdefs.h"
  726.34 +
  726.35 +// CLASS DECLARATION
  726.36 +/**
  726.37 +* @publishedAll
  726.38 +* @released
  726.39 +*
  726.40 +* Class provides functions for setting and getting parameters in 
  726.41 +* SIP "Proxy-Require" header.
  726.42 +*
  726.43 +*  @lib sipcodec.lib
  726.44 +*/
  726.45 +class CSIPProxyRequireHeader : public CSIPTokenHeaderBase
  726.46 +	{
  726.47 +	public:	// Constructors and destructor
  726.48 +
  726.49 +		/**
  726.50 +		* Constructs a CSIPProxyRequireHeader from textual representation 
  726.51 +		* of the header's value part.
  726.52 +		* @param aValue a value part of a "Proxy-Require"-header
  726.53 +		* @return an array containing 1..n instances of CSIPProxyRequireHeader   
  726.54 +		*/
  726.55 +		IMPORT_C static RPointerArray<CSIPProxyRequireHeader> 
  726.56 +			DecodeL(const TDesC8& aValue);
  726.57 +
  726.58 +		/**
  726.59 +		* Creates a new instance of CSIPProxyRequireHeader
  726.60 +		* @param aValue a tag value 
  726.61 +		* @return a new instance of CSIPProxyRequireHeader
  726.62 +		*/
  726.63 +		IMPORT_C static CSIPProxyRequireHeader* NewL(RStringF aValue);
  726.64 +
  726.65 +		/**
  726.66 +		* Creates a new instance of CSIPProxyRequireHeader 
  726.67 +		* and puts it to CleanupStack
  726.68 +		* @param aValue a tag value   
  726.69 +		* @return a new instance of CSIPProxyRequireHeader 
  726.70 +		*/
  726.71 +		IMPORT_C static CSIPProxyRequireHeader* NewLC(RStringF aValue);
  726.72 +
  726.73 +		/**
  726.74 +		* Destructor, deletes the resources of CSIPProxyRequireHeader.
  726.75 +		*/
  726.76 +		IMPORT_C ~CSIPProxyRequireHeader();
  726.77 +
  726.78 +
  726.79 +	public: // New functions
  726.80 +
  726.81 +		/**
  726.82 +		* Constructs an instance of a CSIPProxyRequireHeader from a RReadStream
  726.83 +		* @param aReadStream a stream containing the value of the
  726.84 +		*        externalized object (header name not included).
  726.85 +		* @return an instance of a CSIPProxyRequireHeader 
  726.86 +		*/
  726.87 +		IMPORT_C static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  726.88 +
  726.89 +
  726.90 +	public: // From CSIPHeaderBase
  726.91 +
  726.92 +		/**
  726.93 +		* From CSIPHeaderBase CloneL
  726.94 +		*/
  726.95 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  726.96 +
  726.97 +		/**
  726.98 +		* From CSIPHeaderBase Name
  726.99 +		*/
 726.100 +		IMPORT_C RStringF Name() const;
 726.101 +
 726.102 +
 726.103 +	public: // From CSIPHeaderBase, For internal use
 726.104 +	
 726.105 +        /**
 726.106 +        * @internalComponent
 726.107 +        */	
 726.108 +		TPreferredPlace PreferredPlaceInMessage() const;
 726.109 +
 726.110 +	public: // New functions, for internal use
 726.111 +
 726.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 726.113 +
 726.114 +	private: // Constructors
 726.115 +
 726.116 +		CSIPProxyRequireHeader();
 726.117 +		CSIPProxyRequireHeader(const CSIPProxyRequireHeader& aHeader);
 726.118 +	};
 726.119 +
 726.120 +#endif // end of CSIPPROXYREQUIREHEADER_H
 726.121 +
 726.122 +// End of File
   727.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   727.2 +++ b/epoc32/include/mw/siprackheader.h	Wed Mar 31 12:27:01 2010 +0100
   727.3 @@ -0,0 +1,190 @@
   727.4 +/*
   727.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   727.6 +* All rights reserved.
   727.7 +* This component and the accompanying materials are made available
   727.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   727.9 +* which accompanies this distribution, and is available
  727.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  727.11 +*
  727.12 +* Initial Contributors:
  727.13 +* Nokia Corporation - initial contribution.
  727.14 +*
  727.15 +* Contributors:
  727.16 +*
  727.17 +* Description:
  727.18 +* Name        : siprackheader.h
  727.19 +* Part of     : SIP Codec
  727.20 +* Interface   : SDK API, SIP Codec API
  727.21 +* Version     : SIP/4.0 
  727.22 +*
  727.23 +*/
  727.24 +
  727.25 +
  727.26 +
  727.27 +
  727.28 +#ifndef CSIPRACKHEADER_H
  727.29 +#define CSIPRACKHEADER_H
  727.30 +
  727.31 +//  INCLUDES
  727.32 +#include "sipheaderbase.h"
  727.33 +#include "_sipcodecdefs.h"
  727.34 +
  727.35 +// CLASS DECLARATION
  727.36 +/**
  727.37 +* @publishedAll
  727.38 +* @released
  727.39 +*
  727.40 +* Class provides functions for setting and getting sequence number and
  727.41 +* method in SIP "RAck"-header.
  727.42 +*
  727.43 +*  @lib sipcodec.lib
  727.44 +*/
  727.45 +class CSIPRAckHeader : public CSIPHeaderBase
  727.46 +	{
  727.47 +	public: // Constructors and destructor
  727.48 +
  727.49 +		/**
  727.50 +		* Constructs a CSIPRAckHeader from textual representation 
  727.51 +		* of the header's value part.
  727.52 +		* @param aValue a value part of a "RAck"-header (e.g. "1 2 INVITE")
  727.53 +		* @return a new instance of CSIPRAckHeader.  
  727.54 +		*/
  727.55 +		IMPORT_C static CSIPRAckHeader* DecodeL(const TDesC8& aValue);
  727.56 +
  727.57 +		/**
  727.58 +		* Creates a new instance of CSIPRAckHeader
  727.59 +		* @param aSeq a sequence number to set
  727.60 +        * @param aCSeqNum a sequence number from CSeq-header
  727.61 +		* @param aMethod a method to set. For example "REGISTER"
  727.62 +		* @return a new instance of CSIPRAckHeader
  727.63 +		*/
  727.64 +		IMPORT_C static CSIPRAckHeader* NewL(TUint aSeq,
  727.65 +                                             TUint aCSeqNum,
  727.66 +                                             RStringF aMethod);
  727.67 +
  727.68 +
  727.69 +		/**
  727.70 +		* Creates a new instance of CSIPRAckHeader and puts it to CleanupStack
  727.71 +		* @param aSeq a sequence number to set
  727.72 +        * @param aCSeqNum a sequence number from CSeq-header
  727.73 +		* @param aMethod a method to set. For example "REGISTER"
  727.74 +		* @return a new instance of CSIPRAckHeader
  727.75 +		*/
  727.76 +		IMPORT_C static CSIPRAckHeader* NewLC(TUint aSeq,
  727.77 +                                              TUint aCSeqNum,
  727.78 +                                              RStringF aMethod);
  727.79 +
  727.80 +		/**
  727.81 +		* Destructor, deletes the resources of CSIPRAckHeader.
  727.82 +		*/
  727.83 +		IMPORT_C ~CSIPRAckHeader();
  727.84 +
  727.85 +
  727.86 +	public: // New functions
  727.87 +
  727.88 +		/**
  727.89 +		* Gets the sequence number from the "RAck" header
  727.90 +		* @return the current sequence number
  727.91 +		*/
  727.92 +		IMPORT_C TUint Seq() const;
  727.93 +
  727.94 +		/**
  727.95 +		* Sets the sequence number in the "RAck" header
  727.96 +		* @param aSeq a sequence number to set
  727.97 +		*/
  727.98 +		IMPORT_C void SetSeq(TUint aSeq);
  727.99 +
 727.100 +		/**
 727.101 +		* Gets the sequence number from the "RAck" header
 727.102 +		* @return the current sequence number
 727.103 +		*/
 727.104 +		IMPORT_C TUint CSeqNum() const;
 727.105 +
 727.106 +		/**
 727.107 +		* Sets the sequence number in the "RAck" header
 727.108 +		* @param aCSeqNum a sequence number to set
 727.109 +		*/
 727.110 +		IMPORT_C void SetCSeqNum(TUint aCSeqNum);
 727.111 +
 727.112 +		/**
 727.113 +		* Gets the method from the "RAck" header
 727.114 +		* @return the method 
 727.115 +		*/
 727.116 +		IMPORT_C RStringF Method() const;
 727.117 +
 727.118 +		/**
 727.119 +		* Sets the method in the "RAck" header
 727.120 +		* @param aMethod a method to set
 727.121 +		*/
 727.122 +		IMPORT_C void SetMethodL(RStringF aMethod);
 727.123 +
 727.124 +		/**
 727.125 +		* Constructs an instance of a CSIPRAckHeader from a RReadStream
 727.126 +		* @param aReadStream a stream containing the value of the
 727.127 +		*	     externalized object (header name not included). 
 727.128 +		* @return an instance of a CSIPRAckHeader
 727.129 +		*/
 727.130 +		IMPORT_C static CSIPHeaderBase* 
 727.131 +			InternalizeValueL(RReadStream& aReadStream);
 727.132 +
 727.133 +
 727.134 +	public: // From CSIPHeaderBase
 727.135 +
 727.136 +		/**
 727.137 +		* From CSIPHeaderBase CloneL
 727.138 +		*/
 727.139 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 727.140 +
 727.141 +		/**
 727.142 +		* From CSIPHeaderBase Name
 727.143 +		*/
 727.144 +		IMPORT_C RStringF Name() const;
 727.145 +
 727.146 +		/**
 727.147 +		* From CSIPHeaderBase ToTextValueL
 727.148 +		*/
 727.149 +		IMPORT_C HBufC8* ToTextValueL() const;
 727.150 +
 727.151 +
 727.152 +	public: // From CSIPHeaderBase, for internal use
 727.153 +
 727.154 +        /**
 727.155 +        * @internalComponent
 727.156 +        */
 727.157 +		TPreferredPlace PreferredPlaceInMessage() const;
 727.158 +
 727.159 +	public: // New functions, for internal use
 727.160 +
 727.161 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 727.162 +
 727.163 +	private: // From CSIPHeaderBase
 727.164 +
 727.165 +		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 727.166 +
 727.167 +	private: // Constructors
 727.168 +
 727.169 +        CSIPRAckHeader();
 727.170 +		CSIPRAckHeader(TUint aSeq, TUint aCSeqNum);
 727.171 +		void ConstructL(RStringF aMethod);
 727.172 +		void ConstructL(const CSIPRAckHeader& aRAckHeader);
 727.173 +	
 727.174 +	private: // New functions
 727.175 +		
 727.176 +		void DoInternalizeValueL(RReadStream& aReadStream);
 727.177 +		void ParseL(const TDesC8& aValue);
 727.178 +		void SetMethodL(const TDesC8& aMethod);
 727.179 +
 727.180 +	private: // Data
 727.181 +
 727.182 +		TUint iSeq;
 727.183 +        TUint iCSeqNum;
 727.184 +		RStringF iMethod;
 727.185 +
 727.186 +	private: // For testing purposes
 727.187 +	
 727.188 +		UNIT_TEST(CSIPRAckHeaderTest)
 727.189 +	};
 727.190 +
 727.191 +#endif // CSIPRACKHEADER_H
 727.192 +
 727.193 +// End of File
   728.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   728.2 +++ b/epoc32/include/mw/sipreferdialogassoc.h	Wed Mar 31 12:27:01 2010 +0100
   728.3 @@ -0,0 +1,287 @@
   728.4 +/*
   728.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   728.6 +* All rights reserved.
   728.7 +* This component and the accompanying materials are made available
   728.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   728.9 +* which accompanies this distribution, and is available
  728.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  728.11 +*
  728.12 +* Initial Contributors:
  728.13 +* Nokia Corporation - initial contribution.
  728.14 +*
  728.15 +* Contributors:
  728.16 +*
  728.17 +* Description:
  728.18 +* Name        : sipreferdialogassoc.h
  728.19 +* Part of     : SIP Client
  728.20 +* Interface   : SDK API, SIP Client API
  728.21 +* Version     : 1.0
  728.22 +*
  728.23 +*/
  728.24 +
  728.25 +
  728.26 +
  728.27 +#ifndef CSIPREFERDIALOGASSOC_H
  728.28 +#define CSIPREFERDIALOGASSOC_H
  728.29 +
  728.30 +// INCLUDES
  728.31 +#include "sipdialogassocbase.h"
  728.32 +
  728.33 +// CONSTANTS
  728.34 +
  728.35 +// FORWARD DECLARATIONS
  728.36 +class CUri8;
  728.37 +class CSIPToHeader;
  728.38 +class CSIPFromHeader;
  728.39 +class CSIPContactHeader;
  728.40 +class CSIPReferToHeader;
  728.41 +class MSIPRegistrationContext;
  728.42 +class CSIPConnection;
  728.43 +
  728.44 +// CLASS DECLARATION
  728.45 +
  728.46 +/**
  728.47 +* @publishedAll
  728.48 +* @released
  728.49 +*
  728.50 +* Class for managing SIP REFER dialog associations.
  728.51 +* It provides services for creating, using and terminating SIP REFER
  728.52 +* dialog associations. User can have multiple REFER dialog associations
  728.53 +* per same SIP dialog.
  728.54 +* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
  728.55 +* local and remote tags;
  728.56 +* User is responsible for "Refer-to" header semantics.
  728.57 +* @lib sipclient.lib
  728.58 +*/
  728.59 +class CSIPReferDialogAssoc: public CSIPDialogAssocBase
  728.60 +	{
  728.61 +	public: // Constructors and destructor
  728.62 +
  728.63 +		/**
  728.64 +		* Two-phased constructor.
  728.65 +		* Should be used if response to the SIP request to be sent
  728.66 +		* will create a SIP dialog association.
  728.67 +		* @pre aReferTo != 0
  728.68 +		* @param aDialog a dialog to be associated with
  728.69 +		* @param aReferTo referred-to resource
  728.70 +        * @return New object; the ownership is transferred
  728.71 +        * @leave KErrArgument if aReferTo == 0
  728.72 +		*/
  728.73 +		IMPORT_C static CSIPReferDialogAssoc*
  728.74 +			NewL(CSIPDialog& aDialog,
  728.75 +				 CSIPReferToHeader* aReferTo);
  728.76 +
  728.77 +		/**
  728.78 +		* Two-phased constructor.
  728.79 +		* Must be used if response to the SIP request to be sent
  728.80 +		* will create a SIP dialog association.
  728.81 +		* @pre aReferTo != 0
  728.82 +		* @param aDialog a dialog to be associated with
  728.83 +		* @param aReferTo referred-to resource
  728.84 +        * @return New object; the ownership is transferred
  728.85 +        * @leave KErrArgument if aReferTo == 0
  728.86 +		*/
  728.87 +		IMPORT_C static CSIPReferDialogAssoc*
  728.88 +			NewLC(CSIPDialog& aDialog,
  728.89 +				  CSIPReferToHeader* aReferTo);
  728.90 +
  728.91 +       /**
  728.92 +        * Two-phased constructor
  728.93 +        * @pre aFrom != 0 
  728.94 +        * @pre aReferTo != 0
  728.95 +		* @pre aRemoteUri != 0
  728.96 +		* The user of the class must not define tags in From-header
  728.97 +		* and To-header.
  728.98 +        * @param aConnection a SIP connection to be used with
  728.99 +        *        dialog association
 728.100 +        * @param aFrom originator's address; the ownership is transfered
 728.101 +        * @param aRemoteUri a remote target URI that identifies a resource that
 728.102 +        *		 the request is addressed to.
 728.103 +		* @param aReferTo referred-to resource
 728.104 +        * @param aTo logical recipient's address; if not defined
 728.105 +        *        the remote target uri will be used for To-header
 728.106 +        *        construction; the ownership is transfered
 728.107 +        * @param aContact a contact to be used in dialog creation. Must be
 728.108 +        *        given only if user intends to re-direct future requests; 
 728.109 +        *        the ownership is transfered
 728.110 +        * @return New object; the ownership is transferred.
 728.111 +        * @leave KErrArgument if aFrom == 0 or aRemoteuri == 0 or aReferTo == 0
 728.112 +        */
 728.113 +        IMPORT_C static CSIPReferDialogAssoc*
 728.114 +            NewL(CSIPConnection& aConnection,
 728.115 +                 CSIPFromHeader* aFrom,
 728.116 +				 CUri8* aRemoteUri,
 728.117 +				 CSIPReferToHeader* aReferTo,
 728.118 +                 CSIPToHeader* aTo=0,                 
 728.119 +                 CSIPContactHeader* aContact=0);
 728.120 +
 728.121 +       /**
 728.122 +        * Two-phased constructor
 728.123 +        * @pre aFrom != 0
 728.124 +        * @pre aReferTo != 0
 728.125 +		* @pre aRemoteUri != 0
 728.126 +		* The user of the class must not define tags in From-header
 728.127 +		* and To-header.
 728.128 +        * @param aConnection a SIP connection to be used with
 728.129 +        *        dialog association
 728.130 +        * @param aFrom originator's address; the ownership is transfered
 728.131 +        * @param aRemoteUri a remote target URI that identifies a resource that
 728.132 +        *		 the request is addressed to.
 728.133 +		* @param aReferTo referred-to resource
 728.134 +        * @param aTo logical recipient's address; if not defined
 728.135 +        *        the remote target uri will be used for To-header
 728.136 +        *        construction; the ownership is transfered
 728.137 +        * @param aContact a contact to be used in dialog creation. Must be
 728.138 +        *        given only if user intends to re-direct future requests; 
 728.139 +        *        the ownership is transfered
 728.140 +        * @return New object; the ownership is transferred.
 728.141 +        * @leave KErrArgument if aFrom == 0 or aRemoteuri == 0 or aReferTo == 0
 728.142 +        */
 728.143 +        IMPORT_C static CSIPReferDialogAssoc*
 728.144 +            NewLC(CSIPConnection& aConnection,
 728.145 +                  CSIPFromHeader* aFrom,
 728.146 +				  CUri8* aRemoteUri,
 728.147 +				  CSIPReferToHeader* aReferTo,
 728.148 +                  CSIPToHeader* aTo=0,                 
 728.149 +                  CSIPContactHeader* aContact=0);
 728.150 +
 728.151 +       /**
 728.152 +        * Two-phased constructor
 728.153 +        * @pre aReferTo != 0
 728.154 +		* @pre aRemoteUri != 0
 728.155 +		* The user of the class must not define tags in From-header
 728.156 +		* and To-header.
 728.157 +        * @pre aContext.IsContextActive() == ETrue
 728.158 +        * @param aConnection a SIP connection to be used with
 728.159 +        *        dialog association 
 728.160 +        * @param aRemoteUri a remote target URI that identifies a resource that
 728.161 +        *		 the request is targeted to.
 728.162 +        * @param aContext used for selecting outbound 
 728.163 +        *        proxy and originator's address (AOR) and contact
 728.164 +        * @param aReferTo referred-to resource
 728.165 +        * @param aFrom originator's address. If not defined it will
 728.166 +        *        constructed using registration context (User's AOR);
 728.167 +        *        the ownership is transfered
 728.168 +        * @param aTo logical recipient's address; if not defined
 728.169 +        *        the remote target uri will be used for To-header
 728.170 +        *        construction; the ownership is transfered
 728.171 +        * @param aContact a contact to be used in dialog creation. Must be
 728.172 +        *        given only if user intends to re-direct future requests; 
 728.173 +        *        the ownership is transfered
 728.174 +        * @return New object: the ownership is transferred.
 728.175 +        * @leave KErrArgument if aRemoteuri == 0 or aReferTo == 0
 728.176 +        * @leave KErrSIPInvalidRegistrationState
 728.177 +        *		 if aContext.IsContextActive() == EFalse
 728.178 +        */
 728.179 +        IMPORT_C static CSIPReferDialogAssoc*
 728.180 +            NewL(CSIPConnection& aConnection,                                    
 728.181 +                 CUri8* aRemoteUri,
 728.182 +                 const MSIPRegistrationContext& aContext,
 728.183 +                 CSIPReferToHeader* aReferTo,
 728.184 +                 CSIPFromHeader* aFrom=0,
 728.185 +	             CSIPToHeader* aTo=0,
 728.186 +	             CSIPContactHeader* aContact=0);
 728.187 +
 728.188 +       /**
 728.189 +        * Two-phased constructor        
 728.190 +        * @pre aReferTo != 0
 728.191 +		* @pre aRemoteUri != 0
 728.192 +		* The user of the class must not define tags in From-header
 728.193 +		* and To-header.
 728.194 +        * @pre aContext.IsContextActive()==ETrue
 728.195 +        * @param aConnection a SIP connection to be used with
 728.196 +        *        dialog association 
 728.197 +        * @param aRemoteUri a remote target URI that identifies a resource that
 728.198 +        *		 the request is targeted to.
 728.199 +        * @param aContext used for selecting outbound 
 728.200 +        *        proxy and originator's address (AOR) and contact
 728.201 +        * @param aReferTo referred-to resource
 728.202 +        * @param aFrom originator's address. If not defined it will
 728.203 +        *        constructed using registration context (User's AOR);
 728.204 +        *        the ownership is transfered
 728.205 +        * @param aTo logical recipient's address; if not defined
 728.206 +        *        the remote target uri will be used for To-header
 728.207 +        *        construction; the ownership is transfered
 728.208 +        * @param aContact a contact to be used in dialog creation. Must be
 728.209 +        *        given only if user intends to re-direct future requests; 
 728.210 +        *        the ownership is transfered
 728.211 +        * @return New object; the ownership is transferred.
 728.212 +        * @leave KErrArgument if aRemoteuri == 0 or aReferTo == 0
 728.213 +        * @leave KErrSIPInvalidRegistrationState
 728.214 +        *		 if aContext.IsContextActive() == EFalse
 728.215 +        */
 728.216 +        IMPORT_C static CSIPReferDialogAssoc*
 728.217 +            NewLC(CSIPConnection& aConnection,                                    
 728.218 +                 CUri8* aRemoteUri,
 728.219 +                 const MSIPRegistrationContext& aContext,
 728.220 +                 CSIPReferToHeader* aReferTo,
 728.221 +                 CSIPFromHeader* aFrom=0,
 728.222 +	             CSIPToHeader* aTo=0,
 728.223 +	             CSIPContactHeader* aContact=0);
 728.224 +
 728.225 +		/**
 728.226 +		* Destructor
 728.227 +		*/
 728.228 +		IMPORT_C ~CSIPReferDialogAssoc();
 728.229 +
 728.230 +	public: //New functions
 728.231 +
 728.232 +		/**
 728.233 +		* Creates REFER and sends it to the remote target.
 728.234 +		* leaves on failure.
 728.235 +		* 101-199 or 2xx response will create REFER dialog 
 728.236 +		* association in case of first REFER request within
 728.237 +		* this dialog association.
 728.238 +		* @pre Dialog().Connection().State()==EActive
 728.239 +		* @pre Dialog().State()==CSIPDialog::EInit ||
 728.240 +		*      Dialog().State()==CSIPDialog::EConfirmed
 728.241 +		* @param aElements optional SIP message headers and body. Ownership is
 728.242 +        *   transferred.
 728.243 +		* @return REFER SIP transaction. Ownership is transferred.
 728.244 +		* @leave KErrSIPInvalidDialogState if dialog is in wrong state
 728.245 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 728.246 +		*	object has been deleted.
 728.247 +		* @capability NetworkServices
 728.248 +		*/
 728.249 +		IMPORT_C CSIPClientTransaction*
 728.250 +            SendReferL(CSIPMessageElements* aElements=0);
 728.251 +        
 728.252 +        /**
 728.253 +        * Gets referred-to resouce
 728.254 +        * @return referred-to resource
 728.255 +        */
 728.256 +        IMPORT_C const CSIPReferToHeader& ReferTo() const;
 728.257 +
 728.258 +	public: // New functions, for internal use
 728.259 +	
 728.260 +		/**
 728.261 +		* Sends a REFER request.
 728.262 +		*
 728.263 +		* @pre Dialog().Connection().State()==EActive
 728.264 +		* @param aElements optional SIP message headers and body.
 728.265 +		*	Ownership is transferred.
 728.266 +		* @param aWithinDialog ETrue if REFER is sent within dialog,
 728.267 +		*	EFalse if REFER creates the dialog.
 728.268 +		* @return REFER SIP transaction. Ownership is transferred.
 728.269 +		*/
 728.270 +		CSIPClientTransaction* DoSendReferL(CSIPMessageElements* aElements,
 728.271 +								   			TBool aWithinDialog);
 728.272 +
 728.273 + 	private: // Constructors
 728.274 +
 728.275 +        CSIPReferDialogAssoc();
 728.276 +        
 728.277 +        static CSIPReferDialogAssoc* NewLC(CSIPConnection& aConnection,
 728.278 +								CUri8* aRemoteUri,
 728.279 +								CSIPReferToHeader* aReferTo,
 728.280 +								CSIPFromHeader* aFrom,
 728.281 +                                CSIPToHeader* aTo,
 728.282 +			                    CSIPContactHeader* aContact,
 728.283 +			                    const MSIPRegistrationContext* aContext);
 728.284 +
 728.285 +    private: // Data
 728.286 +
 728.287 +        CSIPReferToHeader* iReferTo;
 728.288 +	};
 728.289 +
 728.290 +#endif
   729.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   729.2 +++ b/epoc32/include/mw/siprefertoheader.h	Wed Mar 31 12:27:01 2010 +0100
   729.3 @@ -0,0 +1,137 @@
   729.4 +/*
   729.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   729.6 +* All rights reserved.
   729.7 +* This component and the accompanying materials are made available
   729.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   729.9 +* which accompanies this distribution, and is available
  729.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  729.11 +*
  729.12 +* Initial Contributors:
  729.13 +* Nokia Corporation - initial contribution.
  729.14 +*
  729.15 +* Contributors:
  729.16 +*
  729.17 +* Description:
  729.18 +* Name        : siprefertoheader.h
  729.19 +* Part of     : SIP Codec
  729.20 +* Interface   : SDK API, SIP Codec API
  729.21 +* Version     : SIP/4.0 
  729.22 +*
  729.23 +*/
  729.24 +
  729.25 +
  729.26 +
  729.27 +
  729.28 +#ifndef CSIPREFERTOHEADER_H
  729.29 +#define CSIPREFERTOHEADER_H
  729.30 +
  729.31 +//  INCLUDES
  729.32 +#include "sipaddressheaderbase.h"
  729.33 +#include "_sipcodecdefs.h"
  729.34 +
  729.35 +// FORWARD DECLARATIONS
  729.36 +class CSIPAddress;
  729.37 +class CSIPHeaderGenericParams;
  729.38 +
  729.39 +// CLASS DECLARATION
  729.40 +/**
  729.41 +* @publishedAll
  729.42 +* @released
  729.43 +*
  729.44 +* Class provides functions for setting and getting parameters in SIP 
  729.45 +* "Refer-To" header.
  729.46 +*
  729.47 +*  @lib sipcodec.lib
  729.48 +*/
  729.49 +class CSIPReferToHeader : public CSIPAddressHeaderBase
  729.50 +	{
  729.51 +	public:	// Constructors and destructor
  729.52 +
  729.53 +		/**
  729.54 +		* Constructs a CSIPReferToHeader from textual representation 
  729.55 +		* of the header's value part.
  729.56 +		* @param aValue a value part of a "Refer-To"-header 
  729.57 +		*        (e.g. "User <user@host>")
  729.58 +		* @return a new instance of CSIPReferToHeader   
  729.59 +		*/
  729.60 +		IMPORT_C static CSIPReferToHeader* DecodeL(const TDesC8& aValue);
  729.61 +
  729.62 +		/**
  729.63 +		* Creates a new instance of CSIPReferToHeader
  729.64 +		* @pre aSIPAddress != 0
  729.65 +		* @param aSIPAddress a name-address, the ownership is transferred.
  729.66 +		* @return a new instance of CSIPReferToHeader
  729.67 +		*/
  729.68 +		IMPORT_C static CSIPReferToHeader* NewL(CSIPAddress* aSIPAddress);
  729.69 +
  729.70 +		/**
  729.71 +		* Creates a new instance of CSIPReferToHeader and puts it to CleanupStack
  729.72 +		* @pre aSIPAddress != 0
  729.73 +		* @param aSIPAddress a name-address, the ownership is transferred,
  729.74 +		* @return a new instance of CSIPReferToHeader
  729.75 +		*/
  729.76 +		IMPORT_C static CSIPReferToHeader* NewLC(CSIPAddress* aSIPAddress);
  729.77 +
  729.78 +		/**
  729.79 +		* Destructor, deletes the resources of CSIPReferToHeader.
  729.80 +		*/
  729.81 +		IMPORT_C virtual ~CSIPReferToHeader();
  729.82 +
  729.83 +
  729.84 +	public: // New functions
  729.85 +
  729.86 +		/**
  729.87 +		* Constructs an instance of a CSIPReferToHeader from a RReadStream
  729.88 +		* @param aReadStream a stream containing the value of the
  729.89 +		*        externalized object (header name not included). 
  729.90 +		* @return an instance of a CSIPReferToHeader
  729.91 +		*/
  729.92 +		IMPORT_C static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  729.93 +
  729.94 +
  729.95 +	public: // From CSIPHeaderBase
  729.96 +
  729.97 +		/**
  729.98 +		* From CSIPHeaderBase CloneL
  729.99 +		*/
 729.100 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 729.101 +
 729.102 +		/**
 729.103 +		* From CSIPHeaderBase Name
 729.104 +		*/
 729.105 +		IMPORT_C RStringF Name() const;
 729.106 +
 729.107 +
 729.108 +	public: // From CSIPHeaderBase, for internal use
 729.109 +
 729.110 +        /**
 729.111 +        * @internalComponent
 729.112 +        */
 729.113 +		TBool HasCompactName() const;
 729.114 +		
 729.115 +        /**
 729.116 +        * @internalComponent
 729.117 +        */		
 729.118 +		RStringF CompactName() const;
 729.119 +		
 729.120 +        /**
 729.121 +        * @internalComponent
 729.122 +        */		
 729.123 +		TPreferredPlace PreferredPlaceInMessage() const;
 729.124 +
 729.125 +	public: // New functions, for internal use
 729.126 +
 729.127 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 729.128 +
 729.129 +	private: // Constructors
 729.130 +
 729.131 +		CSIPReferToHeader();
 729.132 +
 729.133 +    private: // For testing purposes
 729.134 +	
 729.135 +		UNIT_TEST(CSIPReferToHeaderTest)
 729.136 +	};
 729.137 +
 729.138 +#endif // end of CSIPREFERTOHEADER_H
 729.139 +
 729.140 +// End of File
   730.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   730.2 +++ b/epoc32/include/mw/siprefresh.h	Wed Mar 31 12:27:01 2010 +0100
   730.3 @@ -0,0 +1,250 @@
   730.4 +/*
   730.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   730.6 +* All rights reserved.
   730.7 +* This component and the accompanying materials are made available
   730.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   730.9 +* which accompanies this distribution, and is available
  730.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  730.11 +*
  730.12 +* Initial Contributors:
  730.13 +* Nokia Corporation - initial contribution.
  730.14 +*
  730.15 +* Contributors:
  730.16 +*
  730.17 +* Description:
  730.18 +* Name        : siprefresh.h
  730.19 +* Part of     : SIP Client
  730.20 +* Interface   : SDK API, SIP Client API
  730.21 +* Version     : 1.0
  730.22 +*
  730.23 +*/
  730.24 +
  730.25 +
  730.26 +
  730.27 +
  730.28 +#ifndef CSIPREFRESH_H
  730.29 +#define CSIPREFRESH_H
  730.30 +
  730.31 +// INCLUDES
  730.32 +#include <e32base.h>
  730.33 +#include <stringpool.h>
  730.34 +#include "_sipcodecdefs.h"
  730.35 +
  730.36 +// FORWARD DECLARATIONS
  730.37 +class CSIPClientTransaction;
  730.38 +class CSIPMessageElements;
  730.39 +class MSIPRefreshAssociation;
  730.40 +
  730.41 +// CLASS DECLARATION
  730.42 +
  730.43 +/**
  730.44 +*  @publishedAll
  730.45 +*  @released
  730.46 +*
  730.47 +*  Class for managing SIP refresh.
  730.48 +*  It provides functions for getting associated sip transaction
  730.49 +*  and state. Class also provides functions for updating and terminating 
  730.50 +*  stand-alone refreshes.
  730.51 +*
  730.52 +*  Note that only stand-alone refreshes (i.e. refreshes that are not associated
  730.53 +*  with registration binding or dialog associations) can be terminated or
  730.54 +*  updated using functions defined in this class.
  730.55 +*
  730.56 +*  @lib sipclient.lib
  730.57 +*/
  730.58 +class CSIPRefresh: public CBase
  730.59 +	{
  730.60 +	public:
  730.61 +
  730.62 +		/** SIP refresh states */
  730.63 +		enum TState
  730.64 +			{
  730.65 +			/** SIP refresh is inactive */
  730.66 +			EInactive,
  730.67 +			/** SIP refresh active */
  730.68 +			EActive,
  730.69 +			/** SIP refresh is terminated */
  730.70 +			ETerminated,
  730.71 +			/** Object is being constructed and is not yet ready for use */
  730.72 +			EConstructing
  730.73 +			};
  730.74 +
  730.75 +	public: // Constructors and destructor
  730.76 +
  730.77 +		/**
  730.78 +		* Two-phased constructor
  730.79 +        * @return New object. Ownership is transferred.
  730.80 +		*/
  730.81 +		IMPORT_C static CSIPRefresh* NewL();
  730.82 +
  730.83 +		/**
  730.84 +		* Two-phased constructor
  730.85 +        * @return New object. Ownership is transferred.
  730.86 +		*/
  730.87 +		IMPORT_C static CSIPRefresh* NewLC();
  730.88 +
  730.89 +		/**
  730.90 +		* Destructor
  730.91 +		*/
  730.92 +		IMPORT_C ~CSIPRefresh();
  730.93 +
  730.94 +	public: // New functions
  730.95 +
  730.96 +		/**
  730.97 +		* Gets the state of the refresh
  730.98 +		* @return refresh state
  730.99 +		*/
 730.100 +        IMPORT_C CSIPRefresh::TState State() const;
 730.101 +
 730.102 +		/**
 730.103 +		* Tests if the refresh is a stand-alone refresh
 730.104 +		* @return ETrue if refresh is a stand-alone; EFalse otherwise
 730.105 +		*/
 730.106 +		IMPORT_C TBool IsStandAlone() const;
 730.107 +		
 730.108 +		/**
 730.109 +		* Gets the associated SIP transaction with this refresh.
 730.110 +        *
 730.111 +		* @return Associated SIP transaction or 0-pointer. Ownership is not
 730.112 +        *   transferred.
 730.113 +		*/
 730.114 +		IMPORT_C const CSIPClientTransaction* SIPTransaction() const;
 730.115 +
 730.116 +		/**
 730.117 +		* Terminates the refresh by sending SIP request to the remote
 730.118 +        * destination. The new client transactation will be of the same type
 730.119 +        * as the first transaction associated with this request.
 730.120 +		* @pre State()==EActive
 730.121 +		* @pre IsStandAlone()==ETrue
 730.122 +		* @param aElements contains optional SIP message headers and body.
 730.123 +        *   Ownership is transferred.
 730.124 +		* @return SIP client transaction. Ownership is transferred.
 730.125 +		* @leave KErrSIPInvalidTransactionState if State() is not EActive
 730.126 +		*		 KErrNotFound if the CSIPRefresh is no longer associated to
 730.127 +        *        anything
 730.128 +        *        KSIPErrInvalidRegistrationState if trying to terminate a
 730.129 +        *        REGISTER refresh.
 730.130 +        *        KErrSIPInvalidDialogState if trying to terminate a dialog
 730.131 +        *		 association being refreshed. 
 730.132 +        * @capability NetworkServices
 730.133 +		*/
 730.134 +		IMPORT_C CSIPClientTransaction*
 730.135 +            TerminateL(CSIPMessageElements* aElements=0);
 730.136 +
 730.137 +		/**
 730.138 +		* Updates the refresh by sending SIP request to the remote destination.
 730.139 +        * The new client transactation will be of the same type as the first
 730.140 +        * transaction associated with this request.
 730.141 +		* @pre State()==EActive
 730.142 +		* @pre IsStandAlone()==ETrue
 730.143 +		* @param aElements contains optional SIP message headers and body.
 730.144 +        *   Ownership is transferred.
 730.145 +		* @return SIP client transaction. Ownership is transferred.
 730.146 +        * @leave KErrSIPInvalidTransactionState if State() is not EActive
 730.147 +		*		 KErrNotFound if the CSIPRefresh is no longer associated to
 730.148 +        *        anything
 730.149 +        *        KErrSIPInvalidRegistrationState if trying to update a
 730.150 +        *        REGISTER refresh. 
 730.151 +        *        KSIPErrInvalidDialogState if trying to update a
 730.152 +        *        dialog association being refreshed. 
 730.153 +        * @capability NetworkServices
 730.154 +		*/
 730.155 +		IMPORT_C CSIPClientTransaction*
 730.156 +            UpdateL(CSIPMessageElements* aElements=0);
 730.157 +
 730.158 +		/**
 730.159 +		* Compares this object to another object 
 730.160 +		* @param aRefresh a CSIPRefresh type object to compare
 730.161 +		* @return ETrue if the objects are equal otherwise EFalse
 730.162 +		*/
 730.163 +	    IMPORT_C TBool operator==(const CSIPRefresh& aRefresh) const;
 730.164 +
 730.165 +		/**
 730.166 +		* Gets current refresh interval
 730.167 +		* @pre State()==CSIPRefresh::EActive
 730.168 +		* @return current refresh interval in seconds
 730.169 +		* @leave KErrSIPInvalidTransactionState if State() is not EActive
 730.170 +		* @leave KErrSIPResourceNotAvailable if SIP server can't be contacted
 730.171 +		*	because a required resource has been deleted.		
 730.172 +		*/
 730.173 +		IMPORT_C TUint IntervalL() const;
 730.174 +
 730.175 +		/**
 730.176 +		* Sets refresh interval. 
 730.177 +		* Note that SIP server choses the refresh interval. This function should
 730.178 +		* be used only if SIP server has indicated new refresh interval using
 730.179 +		* SIP messages that are not associated to the refresh needing the update.
 730.180 +		* @pre State()==CSIPRefresh::EActive
 730.181 +		* @pre aInterval > 0
 730.182 +		* @param aInterval a new interval in seconds
 730.183 +		* @leave KErrArgument if aInterval == 0
 730.184 +		* @leave KErrSIPInvalidTransactionState if State() is not EActive
 730.185 +		* @leave KErrSIPResourceNotAvailable if SIP server can't be contacted
 730.186 +		*	because a required resource has been deleted.
 730.187 +		*/
 730.188 +		IMPORT_C void SetIntervalL(TUint aInterval);
 730.189 +
 730.190 +	public: // New functions, for internal use
 730.191 +
 730.192 +	    TBool DoesMatch(TUint32 aRefreshId) const;
 730.193 +
 730.194 +        /**
 730.195 +		* Associate the CSIPRefresh with another object.
 730.196 +		* @param aAssoc Object associated with the CSIPRefresh
 730.197 +		* @return ETrue if the objects are equal otherwise EFalse
 730.198 +		*/
 730.199 +        void SetRefreshOwner(MSIPRefreshAssociation& aAssoc);
 730.200 +
 730.201 +        void RemoveRefreshOwner(const MSIPRefreshAssociation& aAssoc);
 730.202 +
 730.203 +        void ChangeState(CSIPRefresh::TState aNextState);
 730.204 +
 730.205 +        void UpdateRefreshState(TUint aStatusCode);
 730.206 +
 730.207 +        TUint32 RefreshId() const;
 730.208 +
 730.209 +        void SetRefreshIdIfEmpty(TUint32 aRefreshId);        
 730.210 +
 730.211 +        RStringF RequestType() const;
 730.212 +
 730.213 +        void SetRequestType(RStringF aType);
 730.214 +
 730.215 +        void AddTransaction(CSIPClientTransaction& aTransaction);
 730.216 +
 730.217 +        void RemoveTransaction();
 730.218 +
 730.219 +        CSIPClientTransaction* Transaction();
 730.220 +
 730.221 +	private: // Constructors
 730.222 +
 730.223 +		CSIPRefresh();
 730.224 +
 730.225 +		void ConstructL();
 730.226 +
 730.227 +	private:
 730.228 +
 730.229 +		void CheckStateL() const;
 730.230 +		
 730.231 +	private: // Data
 730.232 +
 730.233 +        MSIPRefreshAssociation* iOwner;
 730.234 +
 730.235 +        //Client transaction which is refreshed, not owned by CSIPRefresh.        
 730.236 +        CSIPClientTransaction* iClientTransaction;
 730.237 +
 730.238 +		//Current state of the refresh
 730.239 +        TState iState;
 730.240 +
 730.241 +        //RefreshId received from SIP client        
 730.242 +        TUint32 iRefreshId;
 730.243 +
 730.244 +        //Identifies the request method which is being refreshed
 730.245 +        RStringF iRequestType;
 730.246 +
 730.247 +	private: // For testing purposes
 730.248 +
 730.249 +	    UNIT_TEST(CSIP_Test)
 730.250 +        UNIT_TEST(CSIPConnection_Test)
 730.251 +	};
 730.252 +
 730.253 +#endif
   731.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   731.2 +++ b/epoc32/include/mw/sipregistrationbinding.h	Wed Mar 31 12:27:01 2010 +0100
   731.3 @@ -0,0 +1,336 @@
   731.4 +/*
   731.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   731.6 +* All rights reserved.
   731.7 +* This component and the accompanying materials are made available
   731.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   731.9 +* which accompanies this distribution, and is available
  731.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  731.11 +*
  731.12 +* Initial Contributors:
  731.13 +* Nokia Corporation - initial contribution.
  731.14 +*
  731.15 +* Contributors:
  731.16 +*
  731.17 +* Description:
  731.18 +* Name        : sipregistrationbinding.h
  731.19 +* Part of     : SIP Client
  731.20 +* Interface   : SDK API, SIP Client API
  731.21 +* Version     : 1.0
  731.22 +*
  731.23 +*/
  731.24 +
  731.25 +
  731.26 +
  731.27 +#ifndef CSIPREGISTRATIONBINDING_H
  731.28 +#define CSIPREGISTRATIONBINDING_H
  731.29 +
  731.30 +// INCLUDES
  731.31 +#include "sipregistrationcontext.h"
  731.32 +#include "_sipcodecdefs.h"
  731.33 +
  731.34 +// FORWARD DECLARATIONS
  731.35 +class CUri8;
  731.36 +class CSIPToHeader;
  731.37 +class CSIPFromHeader;
  731.38 +class CSIPContactHeader;
  731.39 +class CSIPRouteHeader;
  731.40 +class CSIPMessageElements;
  731.41 +class CSIPConnection;
  731.42 +class CSIPRefresh;
  731.43 +class CSIPClientTransaction;
  731.44 +class CRegBindingImplementation;
  731.45 +
  731.46 +// CLASS DECLARATION
  731.47 +
  731.48 +/**
  731.49 +*  @publishedAll
  731.50 +*  @released
  731.51 +*
  731.52 +*  Class for managing SIP registration binding.
  731.53 +*  Class provides functions for creating and updating SIP registration bindings.
  731.54 +*
  731.55 +*  @lib sipclient.lib
  731.56 +*/
  731.57 +class CSIPRegistrationBinding :
  731.58 +    public CBase,
  731.59 +    public MSIPRegistrationContext    
  731.60 +	{
  731.61 +    public: // Constructors and destructor
  731.62 +
  731.63 +        /**
  731.64 +        * Two-phased constructor.
  731.65 +		* @pre aAor != 0 &&		
  731.66 +		*      aContact != 0
  731.67 +        * @pre "Expires" parameter in aContact must be >= KSIPMinExpirationValue
  731.68 +		* @param aConnection a SIP connection to be used
  731.69 +		* @param aAor contains user's address-of-record to register;
  731.70 +		*        the ownership is transfered
  731.71 +		* @param aContact contact(s) to be registered. The "expires" parameter
  731.72 +		*        indicates how long the client would like the binding to be
  731.73 +        *        valid.
  731.74 +		*        "expires" parameter value must be >= KSIPMinExpirationValue; 
  731.75 +		*		 the ownership is transfered
  731.76 + 		* @param aRefresh if set, created binding will be refreshed;
  731.77 +		*        the ownership is transfered
  731.78 +		* @param aOutboundProxy an outbound proxy address;
  731.79 +		*        the ownership is transfered
  731.80 +		* @param aRemoteUri if set, will be used in request-uri construction;
  731.81 +		*        the ownership is transfered
  731.82 +        * @param aFrom From header, the ownership is transferred
  731.83 +        * @return New object, ownership is transferred.
  731.84 +        * @leave KErrArgument if aAor == 0, aContact == 0 or if "Expires"
  731.85 +        *	parameter in aContact is less than KSIPMinExpirationValue
  731.86 +		*/
  731.87 +		IMPORT_C static CSIPRegistrationBinding*
  731.88 +            NewL(CSIPConnection& aConnection,
  731.89 +			     CSIPToHeader* aAor,
  731.90 +			     CSIPContactHeader* aContact,
  731.91 + 			     CSIPRefresh* aRefresh=0,
  731.92 +			     CSIPRouteHeader* aOutboundProxy=0,
  731.93 +			     CUri8* aRemoteUri=0,
  731.94 +                 CSIPFromHeader* aFrom=0);
  731.95 +
  731.96 +		/**
  731.97 +        * Two-phased constructor.
  731.98 +		* @pre aAor != 0 &&
  731.99 +		*      aContact != 0
 731.100 +        * @pre "Expires" parameter in aContact must be >= KSIPMinExpirationValue
 731.101 +		* @param aConnection a SIP connection to be used
 731.102 +		* @param aAor contains user's address-of-record to register;
 731.103 +		*        the ownership is transfered		
 731.104 +		* @param aContact contact to be registered; The "expires" parameter
 731.105 +		*        indicates how long the client would like the binding to be
 731.106 +        *        valid.
 731.107 +        *        "expires" parameter value must be >= KSIPMinExpirationValue;
 731.108 +		*		 the ownership is transfered
 731.109 +		* @param aRefresh if set, created binding will be refreshed;
 731.110 +		*        the ownership is transfered
 731.111 +		* @param aOutboundProxy an outbound proxy address;
 731.112 +		*        the ownership is transfered
 731.113 +		* @param aRemoteUri if set, will be used in request-uri construction;
 731.114 +		*        the ownership is transfered
 731.115 +        * @param aFrom From header, the ownership is transferred
 731.116 +        * @return New object, ownership is transferred.
 731.117 +        * @leave KErrArgument if aAor == 0, aContact == 0 or if "Expires"
 731.118 +        *	parameter in aContact is less than KSIPMinExpirationValue
 731.119 +		*/
 731.120 +		IMPORT_C static CSIPRegistrationBinding*
 731.121 +            NewLC(CSIPConnection& aConnection,
 731.122 +			      CSIPToHeader* aAor,
 731.123 +			      CSIPContactHeader* aContact,
 731.124 +			      CSIPRefresh* aRefresh=0,
 731.125 +			      CSIPRouteHeader* aOutboundProxy=0,
 731.126 +			      CUri8* aRemoteUri=0,
 731.127 +                  CSIPFromHeader* aFrom=0);
 731.128 +
 731.129 +		/**
 731.130 +		* Destructor
 731.131 +		*/
 731.132 +		IMPORT_C ~CSIPRegistrationBinding();
 731.133 +
 731.134 +	public: //From MSIPRegistrationContext:
 731.135 +
 731.136 +        /**
 731.137 +        * Checks if the registration context can be
 731.138 +        * used for creating SIP messages/dialogs
 731.139 +        * @return ETrue if the registration binding exists; EFalse
 731.140 +        *         otherwise
 731.141 +        */
 731.142 +        IMPORT_C TBool IsContextActive() const;
 731.143 +
 731.144 +        /**
 731.145 +        * Gets the context id
 731.146 +        * @return context id
 731.147 +        * For internal use only
 731.148 +        */        
 731.149 +        IMPORT_C TUint32 ContextId() const;               
 731.150 +        
 731.151 +    public: // New functions
 731.152 +        /**
 731.153 +		* Creates SIP REGISTER request, sends it to the given destination.
 731.154 +		* Received 2xx response will create at least one registration
 731.155 +		* binding.
 731.156 +		* @pre Connection().State()==EActive
 731.157 +		* @param aElements contains user SIP headers and content; the ownership
 731.158 +		*        is taken
 731.159 +        * @return SIP REGISTER transaction; the ownership is transfered
 731.160 +        * @leave KErrSIPMalformedMessage if aElements contains contact or
 731.161 +        *		 expires headers
 731.162 +        * @leave KErrSIPInvalidRegistrationState if already registered or
 731.163 +        *	registering is in progress or deregistering is in progress.
 731.164 +        * @capability NetworkServices
 731.165 +        */
 731.166 +		IMPORT_C CSIPClientTransaction*
 731.167 +            RegisterL(CSIPMessageElements* aElements=0);
 731.168 +
 731.169 +        /**
 731.170 +		* Creates SIP (de)REGISTER request, sends it to the given destination.
 731.171 +		* This function will remove registration binding.
 731.172 +		* Any SIP response (2xx - 6xx) to this request removes the binding.
 731.173 +		* Note that deregistration can be done then the 2xx is received to the
 731.174 +		* initial REGISTER transaction and there is no on-going registration
 731.175 +		* updates.
 731.176 +		* @pre Connection().State()==EActive
 731.177 +		* @pre IsContextActive()==ETrue
 731.178 +		* @param aElements contains user SIP headers and content; the ownership
 731.179 +		*        is transfered. If set, user SIP headers must not contain any 
 731.180 +		*        Contact-header nor Expires-header
 731.181 +        * @return SIP REGISTER transaction; the ownership is transfered
 731.182 +        * @leave KErrSIPInvalidRegistrationState if IsContextActive()==EFalse
 731.183 +        * @capability NetworkServices
 731.184 +        */
 731.185 +		IMPORT_C CSIPClientTransaction*
 731.186 +            DeregisterL(CSIPMessageElements* aElements=0);
 731.187 +
 731.188 +		/**
 731.189 +		* Updates the registration binding. Note that update can be done
 731.190 +		* then the 2xx is received to the REGISTER transaction that relates
 731.191 +		* to the initial registration or to update.
 731.192 +		* @pre aElements!=0
 731.193 +		* @pre Connection().State()==EActive
 731.194 +		* @pre IsContextActive()==ETrue
 731.195 +		* @param aElements contains user SIP header and content, must not
 731.196 +        *        contain any Contact-header nor Expires-header; 
 731.197 +		*        the ownership is transferred.
 731.198 +        * @return SIP REGISTER transaction; the ownership is transfered
 731.199 +        * @leave KErrArgument if aElements == NULL
 731.200 +        * @leave KErrSIPInvalidRegistrationState if IsContextActive()==EFalse
 731.201 +        * @capability NetworkServices
 731.202 +		*/
 731.203 +		IMPORT_C CSIPClientTransaction* UpdateL(CSIPMessageElements* aElements);
 731.204 +
 731.205 +		/**
 731.206 +		* Updates the regisration binding. Note that update can be done
 731.207 +		* then the 2xx is received to the REGISTER transaction that relates
 731.208 +		* to the initial registration or to update.
 731.209 +		* @pre aExpirationValue >= KSIPMinExpirationValue
 731.210 +		* @pre Connection().State()==EActive
 731.211 +		* @pre IsContextActive()==ETrue
 731.212 +		* @param aExpirationValue a new expiration value in seconds
 731.213 +		* @param aElements contains user SIP headers and content; must not
 731.214 +        *        contain any Contact-header nor Expires-header;
 731.215 +        *        the ownership is transferred.
 731.216 +        * @return SIP REGISTER transaction; the ownership is transfered
 731.217 +        * @leave KErrSIPInvalidRegistrationState if IsContextActive()==EFalse
 731.218 +        * @capability NetworkServices
 731.219 +		*/
 731.220 +		IMPORT_C CSIPClientTransaction*
 731.221 +            UpdateL(TUint aExpirationValue, CSIPMessageElements* aElements=0);
 731.222 +
 731.223 +        /**
 731.224 +		* Gets the SIP connection used for the registration.
 731.225 +		* @return SIP connection used for the registration, or 0-pointer if the
 731.226 +        *   	  connection has been deleted. Ownership is not transferred.
 731.227 +		*/
 731.228 +        IMPORT_C CSIPConnection* Connection();
 731.229 +
 731.230 +        /**
 731.231 +		* Gets the SIP connection used for the registration.
 731.232 +		* @return SIP connection used for the registration, or 0-pointer if the
 731.233 +        *   	  connection has been deleted. Ownership is not transferred.
 731.234 +		*/
 731.235 +        IMPORT_C const CSIPConnection* Connection() const;
 731.236 +
 731.237 +		/**
 731.238 +		* Sets/resets outbound proxy.
 731.239 +		* If a 0-pointer is given the outbound proxy will be reset.
 731.240 +		* @param aOutboundProxy an outbound proxy. Ownership is transferred.
 731.241 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 731.242 +		*	object has been deleted
 731.243 +		*/
 731.244 +		IMPORT_C void SetOutboundProxyL(CSIPRouteHeader* aOutboundProxy);
 731.245 +
 731.246 +		/**
 731.247 +		* Gets the address-of-record (AOR) used for creating binding
 731.248 +		* @return address-of-record (AOR)
 731.249 +		*/		
 731.250 +		IMPORT_C const CSIPToHeader& Aor() const;
 731.251 +
 731.252 +		/**
 731.253 +		* Gets Contact header associated with the registration binding
 731.254 +		* @return Contact header
 731.255 +		*/
 731.256 +		IMPORT_C const CSIPContactHeader& ContactHeader() const;
 731.257 +
 731.258 +		/**
 731.259 +		* Gets Contact header associated with the registration binding
 731.260 +		* @return Contact header
 731.261 +		*/
 731.262 +		IMPORT_C CSIPContactHeader& ContactHeader();
 731.263 +		
 731.264 +		/**
 731.265 +		* Gets used outbound proxy
 731.266 +		* @return outbound proxy or a 0-pointer if not set. Ownership is not
 731.267 +        *   transferred.
 731.268 +		*/
 731.269 +		IMPORT_C const CSIPRouteHeader* OutboundProxy() const;
 731.270 +
 731.271 +        /**
 731.272 +		* Gets associated refresh in case the user has requested the refresh of
 731.273 +        * the registration. Note that client cannot use update or terminate
 731.274 +        * functions defined in the CSIPRefresh class. 
 731.275 +		* @return Associated refresh or a 0-pointer if the user has not
 731.276 +        *   requested a refresh of registration binding. Ownership is not
 731.277 +        *	transferred.
 731.278 +		*/
 731.279 +		IMPORT_C const CSIPRefresh* SIPRefresh() const;
 731.280 +
 731.281 +       /**
 731.282 +		* Gets associated refresh in case the user has requested the refresh of
 731.283 +        * the registration. Note that client cannot use update or terminate
 731.284 +        * functions defined in the CSIPRefresh class. 
 731.285 +		* @return Associated refresh or a 0-pointer if the user has not
 731.286 +        *  requested a refresh of registration binding. Ownership is not
 731.287 +        *  transferred.
 731.288 +		*/
 731.289 +		IMPORT_C CSIPRefresh* SIPRefresh();
 731.290 +		
 731.291 +        /**
 731.292 +		* Compares this object to another object
 731.293 +		* @param aRegistration CSIPRegistrationBinding object to compare
 731.294 +		* @return ETrue if the objects are equal, otherwise EFalse
 731.295 +		*/
 731.296 +        IMPORT_C TBool
 731.297 +        	operator==(const CSIPRegistrationBinding& aRegistration) const;
 731.298 +
 731.299 +        /**
 731.300 +        * Gets the registered Contact-header received in the 200 OK response.
 731.301 +        * @return Contact header, or NULL if IsContextActive() is EFalse.
 731.302 +        *         Ownership is not transferred.
 731.303 +        */
 731.304 +        IMPORT_C const CSIPContactHeader* RegisteredContact() const;
 731.305 +
 731.306 +	public: // New functions, for internal use
 731.307 +		/**
 731.308 +		* Returns the implementation instance.
 731.309 +		*
 731.310 + 		* @return CRegBindingImplementation
 731.311 +		*/
 731.312 +		CRegBindingImplementation& Implementation();
 731.313 +
 731.314 +	private: // Constructors
 731.315 +		CSIPRegistrationBinding();
 731.316 +
 731.317 +        void ConstructL(CSIPConnection& aConnection,
 731.318 +        			    CSIPToHeader* aAor,
 731.319 +						CSIPContactHeader* aContacts,                        
 731.320 +						CSIPRefresh* aRefresh,
 731.321 +						CSIPRouteHeader* aOutboundProxy,
 731.322 +						CUri8* aRemoteUri,
 731.323 +                        CSIPFromHeader* aFrom);        
 731.324 +
 731.325 +	private: // Data
 731.326 +		CRegBindingImplementation* iImplementation;
 731.327 +
 731.328 +	private: // For testing purposes		        
 731.329 +
 731.330 +		UNIT_TEST(CSIP_Test)
 731.331 +        UNIT_TEST(CSIPRegistrationBinding_Test)
 731.332 +        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 731.333 +        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 731.334 +        UNIT_TEST(CSIPReferDialogAssoc_Test)
 731.335 +
 731.336 +		__DECLARE_TEST;
 731.337 +	};
 731.338 +
 731.339 +#endif
   732.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   732.2 +++ b/epoc32/include/mw/sipregistrationcontext.h	Wed Mar 31 12:27:01 2010 +0100
   732.3 @@ -0,0 +1,68 @@
   732.4 +/*
   732.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   732.6 +* All rights reserved.
   732.7 +* This component and the accompanying materials are made available
   732.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   732.9 +* which accompanies this distribution, and is available
  732.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  732.11 +*
  732.12 +* Initial Contributors:
  732.13 +* Nokia Corporation - initial contribution.
  732.14 +*
  732.15 +* Contributors:
  732.16 +*
  732.17 +* Description:
  732.18 +* Name        : sipregistrationcontext.h
  732.19 +* Part of     : SIP Client
  732.20 +* Interface   : SDK API, SIP API
  732.21 +* Version     : 1.0
  732.22 +*
  732.23 +*/
  732.24 +
  732.25 +
  732.26 +
  732.27 +
  732.28 +#ifndef MSIPREGISTRATIONCONTEXT_H
  732.29 +#define MSIPREGISTRATIONCONTEXT_H
  732.30 +
  732.31 +//  INCLUDES
  732.32 +#include <e32base.h>
  732.33 +
  732.34 +// CLASS DECLARATION
  732.35 +
  732.36 +/**
  732.37 +*  @publishedAll
  732.38 +*  @released
  732.39 +*
  732.40 +*  The interface for providing
  732.41 +*  information for the SIP request and
  732.42 +*  dialog creation.
  732.43 +*
  732.44 +*  @lib n/a
  732.45 +*/
  732.46 +class MSIPRegistrationContext
  732.47 +	{
  732.48 +     public: // New functions
  732.49 +        /**
  732.50 +		* Destructor
  732.51 +		*/
  732.52 +        virtual ~MSIPRegistrationContext() {}
  732.53 +
  732.54 +		/**
  732.55 +		* Checks if the registration context can be
  732.56 +		* used for creating SIP messages/dialogs
  732.57 +        *
  732.58 +		* @return ETrue if can be used, EFalse otherwise
  732.59 +		*/
  732.60 +		virtual TBool IsContextActive() const = 0;
  732.61 +
  732.62 +		/**
  732.63 +		* Gets the context id.
  732.64 +        *
  732.65 +		* @return Context id
  732.66 +		* For internal use only
  732.67 +		*/
  732.68 +		virtual TUint32 ContextId() const = 0;
  732.69 +	};
  732.70 +
  732.71 +#endif
   733.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   733.2 +++ b/epoc32/include/mw/sipreplytoheader.h	Wed Mar 31 12:27:01 2010 +0100
   733.3 @@ -0,0 +1,128 @@
   733.4 +/*
   733.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   733.6 +* All rights reserved.
   733.7 +* This component and the accompanying materials are made available
   733.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   733.9 +* which accompanies this distribution, and is available
  733.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  733.11 +*
  733.12 +* Initial Contributors:
  733.13 +* Nokia Corporation - initial contribution.
  733.14 +*
  733.15 +* Contributors:
  733.16 +*
  733.17 +* Description:
  733.18 +* Name        : sipreplytoheader.h
  733.19 +* Part of     : SIP Codec
  733.20 +* Interface   : SDK API, SIP Codec API
  733.21 +* Version     : SIP/4.0 
  733.22 +*
  733.23 +*/
  733.24 +
  733.25 +
  733.26 +
  733.27 +
  733.28 +#ifndef CSIPREPLYTOHEADER_H
  733.29 +#define CSIPREPLYTOHEADER_H
  733.30 +
  733.31 +//  INCLUDES
  733.32 +#include "sipaddressheaderbase.h"
  733.33 +#include "_sipcodecdefs.h"
  733.34 +
  733.35 +// FORWARD DECLARATIONS
  733.36 +class CSIPAddress;
  733.37 +class CSIPHeaderGenericParams;
  733.38 +
  733.39 +// CLASS DECLARATION
  733.40 +/**
  733.41 +* @publishedAll
  733.42 +* @released
  733.43 +*
  733.44 +* Class provides functions for setting and getting parameters in SIP 
  733.45 +* "Reply-To" header.
  733.46 +*
  733.47 +*  @lib sipcodec.lib
  733.48 +*/
  733.49 +class CSIPReplyToHeader : public CSIPAddressHeaderBase
  733.50 +	{
  733.51 +	public:	// Constructors and destructor
  733.52 +
  733.53 +		/**
  733.54 +		* Constructs a CSIPReplyToHeader from textual representation 
  733.55 +		* of the header's value part.
  733.56 +		* @param aValue a value part of a "Refer-To"-header 
  733.57 +		*        (e.g. "User <user@host>")
  733.58 +		* @return a new instance of CSIPReplyToHeader   
  733.59 +		*/
  733.60 +		IMPORT_C static CSIPReplyToHeader* DecodeL(const TDesC8& aValue);
  733.61 +
  733.62 +		/**
  733.63 +		* Creates a new instance of CSIPReplyToHeader
  733.64 +		* @pre aSIPAddress != 0
  733.65 +		* @param aSIPAddress a name-address, the ownership is transferred.
  733.66 +		* @return a new instance of CSIPReplyToHeader
  733.67 +		*/
  733.68 +		IMPORT_C static CSIPReplyToHeader* NewL(CSIPAddress* aSIPAddress);
  733.69 +
  733.70 +		/**
  733.71 +		* Creates a new instance of CSIPReplyToHeader and puts it to CleanupStack
  733.72 +		* @pre aSIPAddress != 0
  733.73 +		* @param aSIPAddress a name-address, the ownership is transferred,
  733.74 +		* @return a new instance of CSIPReplyToHeader
  733.75 +		*/
  733.76 +		IMPORT_C static CSIPReplyToHeader* NewLC(CSIPAddress* aSIPAddress);
  733.77 +
  733.78 +		/**
  733.79 +		* Destructor, deletes the resources of CSIPReplyToHeader.
  733.80 +		*/
  733.81 +		IMPORT_C virtual ~CSIPReplyToHeader();
  733.82 +
  733.83 +
  733.84 +	public: // New functions
  733.85 +
  733.86 +		/**
  733.87 +		* Constructs an instance of a CSIPReplyToHeader from a RReadStream
  733.88 +		* @param aReadStream a stream containing the value of the
  733.89 +		*        externalized object (header name not included). 
  733.90 +		* @return an instance of a CSIPReplyToHeader
  733.91 +		*/
  733.92 +		IMPORT_C static CSIPHeaderBase* 
  733.93 +            InternalizeValueL(RReadStream& aReadStream);
  733.94 +
  733.95 +
  733.96 +	public: // From CSIPHeaderBase
  733.97 +
  733.98 +		/**
  733.99 +		* From CSIPHeaderBase CloneL
 733.100 +		*/
 733.101 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 733.102 +
 733.103 +		/**
 733.104 +		* From CSIPHeaderBase Name
 733.105 +		*/
 733.106 +		IMPORT_C RStringF Name() const;
 733.107 +
 733.108 +
 733.109 +	public: // From CSIPHeaderBase, for internal use
 733.110 +
 733.111 +        /**
 733.112 +        * @internalComponent
 733.113 +        */
 733.114 +		TPreferredPlace PreferredPlaceInMessage() const;
 733.115 +
 733.116 +	public: // New functions, for internal use
 733.117 +
 733.118 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 733.119 +
 733.120 +	private: // Constructors
 733.121 +
 733.122 +		CSIPReplyToHeader();
 733.123 +
 733.124 +	private: // For testing purposes
 733.125 +	
 733.126 +		UNIT_TEST(CSIPReplyToHeaderTest)
 733.127 +	};
 733.128 +
 733.129 +#endif // end of CSIPREPLYTOHEADER_H
 733.130 +
 733.131 +// End of File
   734.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   734.2 +++ b/epoc32/include/mw/siprequestelements.h	Wed Mar 31 12:27:01 2010 +0100
   734.3 @@ -0,0 +1,179 @@
   734.4 +/*
   734.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   734.6 +* All rights reserved.
   734.7 +* This component and the accompanying materials are made available
   734.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   734.9 +* which accompanies this distribution, and is available
  734.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  734.11 +*
  734.12 +* Initial Contributors:
  734.13 +* Nokia Corporation - initial contribution.
  734.14 +*
  734.15 +* Contributors:
  734.16 +*
  734.17 +* Description:
  734.18 +* Name        : siprequestelements.h
  734.19 +* Part of     : SIP Client
  734.20 +* Interface   : SDK API, SIP API
  734.21 +* Version     : 1.0
  734.22 +*
  734.23 +*/
  734.24 +
  734.25 +
  734.26 +
  734.27 +#ifndef CSIPREQUESTELEMENTS_H
  734.28 +#define CSIPREQUESTELEMENTS_H
  734.29 +
  734.30 +//  INCLUDES
  734.31 +#include <e32base.h>
  734.32 +#include <s32strm.h>
  734.33 +#include <stringpool.h>
  734.34 +#include <uri8.h>
  734.35 +#include "_sipcodecdefs.h"
  734.36 +
  734.37 +// FORWARD DECLARATIONS
  734.38 +class CSIPMessageElements;
  734.39 +class CSIPFromHeader;
  734.40 +class CSIPToHeader;
  734.41 +class CSIPCSeqHeader;
  734.42 +class CURIContainer;
  734.43 +
  734.44 +// CLASS DECLARATION
  734.45 +
  734.46 +/**
  734.47 +*  @publishedAll
  734.48 +*  @released
  734.49 +*
  734.50 +*  Class provides functions for creation and manipulation of originator's and
  734.51 +*  recipient's addresses in a SIP request. It also provide functions for
  734.52 +*  manipulation of SIP method for unknown SIP requests.
  734.53 +*  @lib sipclient.lib
  734.54 +*/
  734.55 +class CSIPRequestElements : public CBase
  734.56 +    {
  734.57 +    public:  // Constructors and destructor      
  734.58 +        /**
  734.59 +        * Two-phased constructor.
  734.60 +        * If the URI is SIP URI, no SIP URI headers are allowed.
  734.61 +        * @pre aRemoteURi != 0
  734.62 +        * @param aRemoteUri Remote target URI that identifies a resource that
  734.63 +        *        the request is addressed to. The ownership is transferred.
  734.64 +        */
  734.65 +        IMPORT_C static CSIPRequestElements* NewL(CUri8* aRemoteUri);
  734.66 +
  734.67 +        /**
  734.68 +        * Two-phased constructor.
  734.69 +        * If the URI is SIP URI, no SIP URI headers are allowed.
  734.70 +        * @pre aRemoteURi != 0
  734.71 +        * @param aRemoteUri Remote target URI that identifies a resource that
  734.72 +        *        the request is addressed to. The ownership is transferred.
  734.73 +        */
  734.74 +        IMPORT_C static CSIPRequestElements* NewLC(CUri8* aRemoteUri);
  734.75 +
  734.76 +        /**
  734.77 +        * Destructor.
  734.78 +        */
  734.79 +        IMPORT_C ~CSIPRequestElements();
  734.80 +
  734.81 +    public: // New functions
  734.82 +        /**
  734.83 +        * Sets/resets the recipient's To-header
  734.84 +        * To-header must not contain tag-parameter.
  734.85 +        * @pre aTo != 0
  734.86 +        * @param aTo a To-header to be set, the ownership is transferred.
  734.87 +        */
  734.88 +        IMPORT_C void SetToHeaderL(CSIPToHeader* aTo);
  734.89 +            
  734.90 +        /**
  734.91 +        * Gets the recipient's To-header 
  734.92 +        * @return To-header or a 0-pointer if not present. Ownership is not
  734.93 +        *   transferred.
  734.94 +        */
  734.95 +        IMPORT_C const CSIPToHeader* ToHeader() const;
  734.96 +
  734.97 +        /**
  734.98 +        * Sets/resets the originator's From-header.
  734.99 +        * From-header must not contain tag-parameter.
 734.100 +        * @pre aFrom != 0
 734.101 +         * @param aFrom a From-header to be set, the ownership is transferred.
 734.102 +        * @leave KErrArgument if aFrom == 0 
 734.103 +        */
 734.104 +        IMPORT_C void SetFromHeaderL(CSIPFromHeader* aFrom);
 734.105 +            
 734.106 +        /**
 734.107 +        * Gets the originator's From-header 
 734.108 +        * @return From-header or a 0-pointer if not present. Ownership is not
 734.109 +        *   transferred.
 734.110 +        */
 734.111 +        IMPORT_C const CSIPFromHeader* FromHeader() const;
 734.112 +
 734.113 +        /**
 734.114 +        * Gets CSeq-header. Available for only incoming requests.
 734.115 +        * @return a CSeq-header or a 0-pointer if not present. 
 734.116 +        *         Ownership is not transferred.
 734.117 +        */        
 734.118 +        IMPORT_C const CSIPCSeqHeader* CSeqHeader() const;
 734.119 +
 734.120 +        /**
 734.121 +        * Sets the remote URI.
 734.122 +        * If the URI is a SIP URI, no SIP URI headers are allowed.
 734.123 +        * @pre aRemoteUri != 0
 734.124 +         * @param aRemoteUri
 734.125 +        * @leave KErrArgument if aRemoteUri==0
 734.126 +        */
 734.127 +        IMPORT_C void SetRemoteUriL(CUri8* aRemoteUri);
 734.128 +
 734.129 +        /**
 734.130 +        * Gets the remote target URI
 734.131 +        * @return remote target URI
 734.132 +        */
 734.133 +        IMPORT_C const CUri8& RemoteUri() const; 
 734.134 +
 734.135 +        /**
 734.136 +        * Sets the SIP request method
 734.137 +        * @param aMethod a SIP method name.
 734.138 +        * @leave KErrArgument if method name given is syntactically
 734.139 +        *        incorrect
 734.140 +        */
 734.141 +        IMPORT_C void SetMethodL(RStringF aMethod);
 734.142 +
 734.143 +        /**
 734.144 +        * Gets the SIP Method for a request
 734.145 +        * @return a SIP method name or a an empty string if the method
 734.146 +        *         is not defined
 734.147 +        */
 734.148 +        IMPORT_C RStringF Method() const;
 734.149 +
 734.150 +        /**
 734.151 +        * Gets message elements (contains all SIP user headers and content)
 734.152 +        * @return message elements
 734.153 +        */
 734.154 +        IMPORT_C const CSIPMessageElements& MessageElements() const;
 734.155 +
 734.156 +        /**
 734.157 +        * Gets message elements (contains all SIP user headers and content)
 734.158 +        * The response elements can be populated with SIP user headers
 734.159 +        * and content using returned reference to the message elements.
 734.160 +        * @return message elements
 734.161 +        */
 734.162 +        IMPORT_C CSIPMessageElements& MessageElements();
 734.163 +
 734.164 +    public: // New functions, for internal use
 734.165 +        static CSIPRequestElements* InternalizeL (RReadStream& aReadStream);
 734.166 +        void ExternalizeL (RWriteStream& aWriteStream) const;
 734.167 +
 734.168 +    private:
 734.169 +        CSIPRequestElements();
 734.170 +        void ConstructL(CUri8* aRemoteUri);
 734.171 +        void DoInternalizeL(RReadStream& aReadStream);
 734.172 +
 734.173 +    private: // Data
 734.174 +        RStringF iMethod;
 734.175 +        CURIContainer* iRemoteURI;
 734.176 +        CSIPMessageElements* iMessageElements;
 734.177 +
 734.178 +    private: // For testing purposes
 734.179 +        UNIT_TEST(CSIPRequestElementsTest)
 734.180 +    };
 734.181 +
 734.182 +#endif
   735.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   735.2 +++ b/epoc32/include/mw/siprequireheader.h	Wed Mar 31 12:27:01 2010 +0100
   735.3 @@ -0,0 +1,119 @@
   735.4 +/*
   735.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   735.6 +* All rights reserved.
   735.7 +* This component and the accompanying materials are made available
   735.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   735.9 +* which accompanies this distribution, and is available
  735.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  735.11 +*
  735.12 +* Initial Contributors:
  735.13 +* Nokia Corporation - initial contribution.
  735.14 +*
  735.15 +* Contributors:
  735.16 +*
  735.17 +* Description:
  735.18 +* Name        : siprequireheader.h
  735.19 +* Part of     : SIP Codec
  735.20 +* Interface   : SDK API, SIP Codec API
  735.21 +* Version     : SIP/4.0 
  735.22 +*
  735.23 +*/
  735.24 +
  735.25 +
  735.26 +
  735.27 +
  735.28 +#ifndef CSIPREQUIREHEADER_H
  735.29 +#define CSIPREQUIREHEADER_H
  735.30 +
  735.31 +//  INCLUDES
  735.32 +#include "siptokenheaderbase.h"
  735.33 +#include "_sipcodecdefs.h"
  735.34 +
  735.35 +// CLASS DECLARATION
  735.36 +/**
  735.37 +* @publishedAll
  735.38 +* @released
  735.39 +*
  735.40 +* Class provides functions for setting and getting parameters in 
  735.41 +* SIP "Require" header.
  735.42 +*
  735.43 +*  @lib sipcodec.lib
  735.44 +*/
  735.45 +class CSIPRequireHeader : public CSIPTokenHeaderBase
  735.46 +	{
  735.47 +	public:	// Constructors and destructor
  735.48 +
  735.49 +		/**
  735.50 +		* Constructs a CSIPRequireHeader from textual representation 
  735.51 +		* of the header's value part.
  735.52 +		* @param aValue a value part of a "Require"-header
  735.53 +		* @return an array containing 1..n instances of CSIPRequireHeader   
  735.54 +		*/
  735.55 +		IMPORT_C static RPointerArray<CSIPRequireHeader> 
  735.56 +			DecodeL(const TDesC8& aValue);
  735.57 +
  735.58 +		/**
  735.59 +		* Creates a new instance of CSIPRequireHeader
  735.60 +		* @param aValue a tag value 
  735.61 +		* @return a new instance of CSIPRequireHeader
  735.62 +		*/
  735.63 +		IMPORT_C static CSIPRequireHeader* NewL(RStringF aValue);
  735.64 +
  735.65 +		/**
  735.66 +		* Creates a new instance of CSIPRequireHeader 
  735.67 +		* and puts it to CleanupStack
  735.68 +		* @param aValue a tag value   
  735.69 +		* @return a new instance of CSIPRequireHeader 
  735.70 +		*/
  735.71 +		IMPORT_C static CSIPRequireHeader* NewLC(RStringF aValue);
  735.72 +
  735.73 +		/**
  735.74 +		* Destructor, deletes the resources of CSIPRequireHeader.
  735.75 +		*/
  735.76 +		IMPORT_C ~CSIPRequireHeader();
  735.77 +
  735.78 +
  735.79 +	public: // New functions
  735.80 +
  735.81 +		/**
  735.82 +		* Constructs an instance of a CSIPRequireHeader from a RReadStream
  735.83 +		* @param aReadStream a stream containing the value of the
  735.84 +		*        externalized object (header name not included).
  735.85 +		* @return an instance of a CSIPRequireHeader 
  735.86 +		*/
  735.87 +		IMPORT_C static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  735.88 +
  735.89 +
  735.90 +	public: // From CSIPHeaderBase
  735.91 +
  735.92 +		/**
  735.93 +		* From CSIPHeaderBase CloneL
  735.94 +		*/
  735.95 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  735.96 +
  735.97 +		/**
  735.98 +		* From CSIPHeaderBase Name
  735.99 +		*/
 735.100 +		IMPORT_C RStringF Name() const;
 735.101 +
 735.102 +
 735.103 +	public: // From CSIPHeaderBase, For internal use
 735.104 +
 735.105 +        /**
 735.106 +        * @internalComponent
 735.107 +        */	
 735.108 +		TPreferredPlace PreferredPlaceInMessage() const;
 735.109 +
 735.110 +	public: // New functions, for internal use
 735.111 +
 735.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 735.113 +
 735.114 +	private: // Constructors
 735.115 +
 735.116 +		CSIPRequireHeader();
 735.117 +		CSIPRequireHeader(const CSIPRequireHeader& aHeader);		
 735.118 +	};
 735.119 +
 735.120 +#endif // end of CSIPREQUIREHEADER_H
 735.121 +
 735.122 +// End of File
   736.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   736.2 +++ b/epoc32/include/mw/sipresolvedclient.h	Wed Mar 31 12:27:01 2010 +0100
   736.3 @@ -0,0 +1,109 @@
   736.4 +/*
   736.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   736.6 +* All rights reserved.
   736.7 +* This component and the accompanying materials are made available
   736.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   736.9 +* which accompanies this distribution, and is available
  736.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  736.11 +*
  736.12 +* Initial Contributors:
  736.13 +* Nokia Corporation - initial contribution.
  736.14 +*
  736.15 +* Contributors:
  736.16 +*
  736.17 +* Description:
  736.18 +* Name        : SipResolvedClient.h
  736.19 +* Part of     : SDK API, SIP Client Resolver API
  736.20 +* Version     : 1.0
  736.21 +*
  736.22 +*/
  736.23 +
  736.24 +
  736.25 +
  736.26 +#ifndef CSIPRESOLVEDCLIENT_H
  736.27 +#define CSIPRESOLVEDCLIENT_H
  736.28 +
  736.29 +// INCLUDES
  736.30 +#include <ecom/ecom.h>
  736.31 +#include <stringpool.h>
  736.32 +
  736.33 +//FORWARD DECLARATIONS
  736.34 +class CSIPHeaderBase;
  736.35 +class CSIPContentTypeHeader;
  736.36 +
  736.37 +// CONSTANTS
  736.38 +/** Interface UID of this ECOM interface*/
  736.39 +const TUid KSIPResolvedClientIFUid = { 0x102010dd };
  736.40 +
  736.41 +// CLASS DEFINITION
  736.42 +/**
  736.43 +* @publishedAll
  736.44 +* @released
  736.45 +*
  736.46 +* Interface that clients must realize
  736.47 +* in order to enable client resolution mechanism upon the reception
  736.48 +* of SIP request outside the SIP dialog. Data provided in 
  736.49 +* the ECOM resource file or optionally requested from the interface implementation 
  736.50 +* will be used for target client determination by the SIP implementation.
  736.51 +* Note that channel UIDs must be unique accross all SIP clients e.g. clients may
  736.52 +* use UIDs assigned for binaries.
  736.53 +*/
  736.54 +class CSIPResolvedClient : public CBase
  736.55 +	{
  736.56 +	public:	// Destructor
  736.57 +
  736.58 +		/**
  736.59 +		* Destructor
  736.60 +		*/
  736.61 +		virtual inline ~CSIPResolvedClient();
  736.62 +
  736.63 +	public: // Abstract methods
  736.64 +
  736.65 +		/**
  736.66 +		* Returns the SIP client's channel UID that indicates client's
  736.67 +		* channel UID for connection with SIP e.g. CSIP::NewL()
  736.68 +		* @param aMethod the method of the SIP request
  736.69 +        * @param aRequestUri the request-URI of the SIP request
  736.70 +        * @param aHeaders all the headers in the SIP request
  736.71 +        * @param aContent SIP request body; zero-length descriptor if not present
  736.72 +        * @param aContentType the content-type of the SIP request. 
  736.73 +        *        Zero-pointer if body is not present.
  736.74 +		* @return SIP client's communication channel's UID
  736.75 +		*/
  736.76 +		virtual TUid ChannelL(RStringF aMethod,
  736.77 +                              const TDesC8& aRequestUri,
  736.78 +                              const RPointerArray<CSIPHeaderBase>& aHeaders,
  736.79 +                              const TDesC8& aContent,
  736.80 +                              const CSIPContentTypeHeader* aContentType=0) = 0;
  736.81 +
  736.82 +		/**
  736.83 +		* Requests the client to connect to SIP with resolved
  736.84 +		* UID in case there's no connection with resolved channel UID.
  736.85 +		* @param aUid previously resolved channel UID
  736.86 +		* @leave KErrNoMemory if out of memory
  736.87 +		* @leave KErrNotFound in case non-existing channel UID was provided
  736.88 +		*/
  736.89 +		virtual void ConnectL(TUid aUid) = 0;
  736.90 +
  736.91 +		/**
  736.92 +		* Requests the implementation to provide capabilities in XML format
  736.93 +		* in case they were not defined in the ECOM resource file. The cabablities
  736.94 +		* to be returned must be defined according to the same DTD.
  736.95 +		* This function will be invoked only if the capabilities are not
  736.96 +		* defined in the ECOM resource file.
  736.97 +		*/
  736.98 +		virtual const TDesC8& Capabilities();
  736.99 +
 736.100 +	public: // Data
 736.101 +
 736.102 +		/// Unique key for implementations of this interface.
 736.103 +		TUid iInstanceKey;
 736.104 +
 736.105 +	protected: // Constructors:
 736.106 +
 736.107 +		inline CSIPResolvedClient();
 736.108 +	};
 736.109 +
 736.110 +#include <sipresolvedclient.inl>
 736.111 +
 736.112 +#endif // CSIPRESOLVEDCLIENT_H
   737.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   737.2 +++ b/epoc32/include/mw/sipresolvedclient2.h	Wed Mar 31 12:27:01 2010 +0100
   737.3 @@ -0,0 +1,230 @@
   737.4 +/*
   737.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   737.6 +* All rights reserved.
   737.7 +* This component and the accompanying materials are made available
   737.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   737.9 +* which accompanies this distribution, and is available
  737.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  737.11 +*
  737.12 +* Initial Contributors:
  737.13 +* Nokia Corporation - initial contribution.
  737.14 +*
  737.15 +* Contributors:
  737.16 +*
  737.17 +* Description:
  737.18 +* Name        : sipresolvedclient2.h
  737.19 +* Part of     : SIP Client Resolver API
  737.20 +* Version     : 1.0
  737.21 +*
  737.22 +*/
  737.23 +
  737.24 +
  737.25 +
  737.26 +#ifndef CSIPRESOLVEDCLIENT2_H
  737.27 +#define CSIPRESOLVEDCLIENT2_H
  737.28 +
  737.29 +// INCLUDES
  737.30 +#include <sipacceptcontactheader.h>
  737.31 +#include <sipeventheader.h>
  737.32 +#include <stringpool.h>
  737.33 +#include <uri8.h>
  737.34 +#include <sipheaderbase.h>
  737.35 +#include <sipcontenttypeheader.h>
  737.36 +#include <e32base.h>
  737.37 +
  737.38 +// FORWARD DECLARATIONS
  737.39 +class CSdpMediaField;
  737.40 +
  737.41 +// CONSTANTS
  737.42 +/** Interface UID of this ECOM interface*/
  737.43 +const TUid KSIPResolvedClient2IFUid = { 0x10282EE5 };
  737.44 +
  737.45 +// CLASS DEFINITION
  737.46 +/**
  737.47 +* @publishedAll
  737.48 +* @released
  737.49 +*
  737.50 +* Interface that SIP stack's clients must realize 
  737.51 +* in order to be able to receive incoming SIP requests outside SIP dialogs.
  737.52 +* Note that channel UIDs must be unique accross all SIP clients 
  737.53 +* e.g. clients may use UIDs assigned for binaries.
  737.54 +* 
  737.55 +* SIP stack utilizes the plug-ins that implement 
  737.56 +* this interface in the following manner:
  737.57 +*
  737.58 +* 1) If the SIP request does not contain Accept-Contact-header(s), go to step 2.
  737.59 +*    SIP stack calls CSIPResolvedClient2::MatchAcceptContactsL 
  737.60 +*    for all the plug-ins and applies the following logic: 
  737.61 +*    a) None of the clients match -> go to step 2
  737.62 +*    b) One client matches -> the SIP request is routed to the matching client
  737.63 +*    c) Several clients match -> go to step 2
  737.64 +*
  737.65 +* 2) If the SIP request does not contain Event-header, go to step 3.
  737.66 +*    SIP stack calls CSIPResolvedClient2::MatchEventL 
  737.67 +*    for all the plug-ins and applies the following logic:
  737.68 +*    a) None of the clients match -> go to step 3
  737.69 +*    b) One client matches -> the SIP request is routed to the matching client
  737.70 +*    c) Several clients match -> go to step 3
  737.71 +*
  737.72 +* 3) SIP stack calls CSIPResolvedClient2::MatchRequestL for all the plug-ins.
  737.73 +*    a) None of the clients match -> SIP generates an error response
  737.74 +*    b) One client matches -> the SIP request is routed to the matching client
  737.75 +*    c) Several clients match -> 
  737.76 +*       SIP picks one of these clients randomly and routes the request to it. 
  737.77 +*       The ROM-based clients are preferred.
  737.78 +*/
  737.79 +class CSIPResolvedClient2 : public CBase
  737.80 +    {
  737.81 +    public:    // Destructor
  737.82 +
  737.83 +        /**
  737.84 +        * Destructor
  737.85 +        */
  737.86 +        inline ~CSIPResolvedClient2();
  737.87 +
  737.88 +    public: // Abstract methods
  737.89 +
  737.90 +        /**
  737.91 +        * Matches the Accept-Contact-headers 
  737.92 +        * to the client(s) represented by this plug-in.
  737.93 +        * This function is called for an incoming SIP request 
  737.94 +        * if it contains Accept-Contact-header(s).
  737.95 +        * @param aMethod the method of the SIP request
  737.96 +        * @param aRequestUri the request-URI of the SIP request
  737.97 +        * @param aHeaders all the headers in the SIP request
  737.98 +        * @param aContent SIP request body; 
  737.99 +        *        zero-length descriptor if not present
 737.100 +        * @param aContentType the content-type of the SIP request. 
 737.101 +        *        Zero-pointer if body is not present.
 737.102 +        * @param aClientUid indicates client's UID for 
 737.103 +        *        SIP e.g. the one passed as a parameter to CSIP::NewL().
 737.104 +        * @return ETrue, if the Accept-Contact-headers match to the client
 737.105 +        *         represented by this plug-in, otherwise EFalse. 
 737.106 +        */
 737.107 +        virtual TBool MatchAcceptContactsL(
 737.108 +            RStringF aMethod,
 737.109 +            const CUri8& aRequestUri,
 737.110 +            const RPointerArray<CSIPHeaderBase>& aHeaders,
 737.111 +            const TDesC8& aContent,
 737.112 +            const CSIPContentTypeHeader* aContentType,
 737.113 +            TUid& aClientUid) = 0;
 737.114 +
 737.115 +        /**
 737.116 +        * Matches the Event-header to the client(s) represented by this plug-in.
 737.117 +        * This function is called for an incoming SIP request, 
 737.118 +        * if it contains an Event-header and 
 737.119 +        * MatchAcceptContactsL returned EFalse.
 737.120 +        * @param aMethod the method of the SIP request
 737.121 +        * @param aRequestUri the request-URI of the SIP request
 737.122 +        * @param aHeaders all the headers in the SIP request
 737.123 +        * @param aContent SIP request body; 
 737.124 +        *        zero-length descriptor if not present
 737.125 +        * @param aContentType the content-type of the SIP request. 
 737.126 +        *        Zero-pointer if body is not present.
 737.127 +        * @param aClientUid indicates client's UID for 
 737.128 +        *        SIP e.g. the one passed as a parameter to CSIP::NewL().
 737.129 +        * @return ETrue, if the Event-header matches to the client
 737.130 +        *         represented by this plug-in, otherwise EFalse. 
 737.131 +        */
 737.132 +        virtual TBool MatchEventL(
 737.133 +            RStringF aMethod,
 737.134 +            const CUri8& aRequestUri,
 737.135 +            const RPointerArray<CSIPHeaderBase>& aHeaders,
 737.136 +            const TDesC8& aContent,
 737.137 +            const CSIPContentTypeHeader* aContentType,
 737.138 +            TUid& aClientUid) = 0;
 737.139 +
 737.140 +        /**
 737.141 +        * Matches the whole SIP request to the client(s) 
 737.142 +        * represented by this plug-in.
 737.143 +        * This function is called if the SIP request does not contain 
 737.144 +        * Accept- or Event-headers or  
 737.145 +        * MatchAcceptContactsL and MatchEventL returned EFalse.
 737.146 +        * @param aMethod the method of the SIP request
 737.147 +        * @param aRequestUri the request-URI of the SIP request
 737.148 +        * @param aHeaders all the headers in the SIP request
 737.149 +        * @param aContent SIP request body; 
 737.150 +        *        zero-length descriptor if not present
 737.151 +        * @param aContentType the content-type of the SIP request. 
 737.152 +        *        Zero-pointer if body is not present.
 737.153 +        * @param aClientUid indicates client's UID for 
 737.154 +        *        SIP e.g. the one passed as a parameter to CSIP::NewL().
 737.155 +        * @return ETrue, if the request can be handled by the client
 737.156 +        *         represented by this plug-in, otherwise EFalse. 
 737.157 +        */
 737.158 +        virtual TBool MatchRequestL(
 737.159 +            RStringF aMethod,
 737.160 +            const CUri8& aRequestUri,
 737.161 +            const RPointerArray<CSIPHeaderBase>& aHeaders,
 737.162 +            const TDesC8& aContent,
 737.163 +            const CSIPContentTypeHeader* aContentType,
 737.164 +            TUid& aClientUid) = 0;
 737.165 +
 737.166 +        /**
 737.167 +        * Indicates whether the plug-in implements CSIPResolvedClient2::ConnectL
 737.168 +        * and by calling CSIPResolvedClient2::ConnectL 
 737.169 +        * SIP stack is able to force the client to connect to SIP stack.
 737.170 +        * @return ETrue, if the plug-in supports 
 737.171 +        *         CSIPResolvedClient2::ConnectL, otherwise EFalse.
 737.172 +        */
 737.173 +        virtual TBool ConnectSupported() = 0;
 737.174 +
 737.175 +        /**
 737.176 +        * Requests the client to connect to SIP with 
 737.177 +        * the resolved UID in case there's no client connection with the UID.
 737.178 +        * @param aClientUid previously resolved client UID
 737.179 +        */
 737.180 +        virtual void ConnectL(const TUid& aClientUid) = 0;
 737.181 +        
 737.182 +        /**
 737.183 +        * Cancels a ConnectL request for a client.
 737.184 +        * Is called when for example a CANCEL for an INVITE is received 
 737.185 +        * before the client connects to SIP stack.
 737.186 +        * @param aClientUid a UID for which ConnectL was previously called
 737.187 +        */
 737.188 +        virtual void CancelConnect(const TUid& aClientUid) = 0;
 737.189 +
 737.190 +        /** 
 737.191 +        * Gets all the SIP message content types supported by the client.
 737.192 +        * @return 0..n SIP Content-Type-headers.
 737.193 +        *         The ownership of the headers is transferred. 
 737.194 +        */
 737.195 +        virtual RPointerArray<CSIPContentTypeHeader> 
 737.196 +            SupportedContentTypesL() = 0;
 737.197 +
 737.198 +        /** 
 737.199 +        * Gets all the SDP media-fields supported by the client.
 737.200 +        * @return 0..n SDP media-fields describing the client's media support.
 737.201 +        *         The ownership of the media-fields is transferred. 
 737.202 +        */
 737.203 +        virtual RPointerArray<CSdpMediaField> 
 737.204 +            SupportedSdpMediasL() = 0;
 737.205 +            
 737.206 +
 737.207 +        /**
 737.208 +        * Adds client specific SIP-headers for the 200 OK for OPTIONS.
 737.209 +        * Each plug-in must check that the header to be added
 737.210 +        * is not yet in the array. For example when adding header 
 737.211 +        * "Allow: INVITE" the client must check that 
 737.212 +        * the header is not already present in the array.
 737.213 +        * @param aHeaders headers to be added to 200 OK for OPTIONS. 
 737.214 +        *        The ownership of the added headers is transferred to the caller.
 737.215 +        */            
 737.216 +        virtual void AddClientSpecificHeadersForOptionsResponseL(
 737.217 +            RPointerArray<CSIPHeaderBase>& aHeaders) = 0;
 737.218 +
 737.219 +    public: // Data
 737.220 +
 737.221 +        /// Unique key for implementations of this interface.
 737.222 +        TUid iInstanceKey;
 737.223 +		
 737.224 +		TUid iImplementationUid;
 737.225 +		
 737.226 +    protected: // Constructors:
 737.227 +
 737.228 +        inline CSIPResolvedClient2();
 737.229 +    };
 737.230 +
 737.231 +#include "sipresolvedclient2.inl"
 737.232 +
 737.233 +#endif // CSIPRESOLVEDCLIENT2_H
   738.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   738.2 +++ b/epoc32/include/mw/sipresponseelements.h	Wed Mar 31 12:27:01 2010 +0100
   738.3 @@ -0,0 +1,158 @@
   738.4 +/*
   738.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   738.6 +* All rights reserved.
   738.7 +* This component and the accompanying materials are made available
   738.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   738.9 +* which accompanies this distribution, and is available
  738.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  738.11 +*
  738.12 +* Initial Contributors:
  738.13 +* Nokia Corporation - initial contribution.
  738.14 +*
  738.15 +* Contributors:
  738.16 +*
  738.17 +* Description:
  738.18 +* Name        : sipresponseelements.h
  738.19 +* Part of     : SIP Client
  738.20 +* Interface   : SDK API, SIP API
  738.21 +* Version     : 1.0
  738.22 +*
  738.23 +*/
  738.24 +
  738.25 +
  738.26 +
  738.27 +#ifndef CSIPRESPONSEELEMENTS_H
  738.28 +#define CSIPRESPONSEELEMENTS_H
  738.29 +
  738.30 +//  INCLUDES
  738.31 +#include <e32base.h>
  738.32 +#include <s32strm.h>
  738.33 +#include <stringpool.h>
  738.34 +#include "_sipcodecdefs.h"
  738.35 +
  738.36 +// FORWARD DECLARATIONS
  738.37 +class CSIPMessageElements;
  738.38 +class CSIPFromHeader;
  738.39 +class CSIPToHeader;
  738.40 +class CSIPCSeqHeader;
  738.41 +
  738.42 +// CLASS DECLARATION
  738.43 +
  738.44 +/**
  738.45 +*  @publishedAll
  738.46 +*  @released
  738.47 +*
  738.48 +*  Class provides services for creating and manipulating SIP responses
  738.49 +*  This class is used for creating and manipulating SIP responses including
  738.50 +*  status code, reason phrase and optional elements such user headers,
  738.51 +*  content and its type.
  738.52 +*
  738.53 +*  @lib sipclient.lib
  738.54 +*/
  738.55 +class CSIPResponseElements : public CBase
  738.56 +	{
  738.57 +    public:  // Constructors and destructor       
  738.58 +	    /**
  738.59 +        * Two-phased constructor.
  738.60 +        * @pre aStatusCode > 100 && aStatusCode < 700
  738.61 +	    * @param aStatusCode a known SIP response status code. Cannot be 100.
  738.62 +		* @param aReasonPhrase a SIP response reason phrase.
  738.63 +        */
  738.64 +		IMPORT_C static CSIPResponseElements* NewL(TUint aStatusCode,
  738.65 +		                                           RStringF aReasonPhrase);
  738.66 +										
  738.67 +	    /**
  738.68 +        * Two-phased constructor.
  738.69 +        * @pre aStatusCode > 100 && aStatusCode < 700
  738.70 +	    * @param aStatusCode a known SIP response status code. Cannot be 100.
  738.71 +		* @param aReasonPhrase a SIP response reason phrase.
  738.72 +        */
  738.73 +		IMPORT_C static CSIPResponseElements* NewLC(TUint aStatusCode,
  738.74 +		                                            RStringF aReasonPhrase);
  738.75 +											
  738.76 +        /**
  738.77 +        * Destructor.
  738.78 +        */
  738.79 +		IMPORT_C ~CSIPResponseElements();
  738.80 +
  738.81 +    public: // New functions
  738.82 +		/**
  738.83 +		* Sets a SIP Response extension status code. It is not possible to set
  738.84 +        * value 100.
  738.85 +        * @pre aStatusCode > 100 && aStatusCode < 700
  738.86 +		* @param aStatusCode extension status code
  738.87 +		* @leave KErrArgument if aStatusCode < 100 or aStatusCode >= 700
  738.88 +		*/
  738.89 +		IMPORT_C void SetStatusCodeL(TUint aStatusCode);
  738.90 +
  738.91 +		/**
  738.92 +		* Gets the SIP Response status code
  738.93 +		* @return SIP Response status code
  738.94 +		*/
  738.95 +		IMPORT_C TUint StatusCode() const;
  738.96 +
  738.97 +		/**
  738.98 +		* Sets a SIP Response Reason Phrase.
  738.99 +		* @param aReasonPhrase a SIP response reason phrase.
 738.100 +		*/
 738.101 +		IMPORT_C void SetReasonPhraseL(RStringF aReasonPhrase);
 738.102 +			
 738.103 +		/**
 738.104 +		* Gets a SIP Response Reason Phrase.
 738.105 +		* @return a SIP response reason phrase or an empty string if
 738.106 +        *   the reason phrase is not defined.
 738.107 +		*/
 738.108 +		IMPORT_C RStringF ReasonPhrase() const;
 738.109 +
 738.110 +		/**
 738.111 +		* Gets the originator's From-header
 738.112 +		* @return a From-header or a 0-pointer if not present. Ownership is
 738.113 +        *   not transferred.
 738.114 +		*/
 738.115 +		IMPORT_C const CSIPFromHeader* FromHeader() const;
 738.116 +
 738.117 +		/**
 738.118 +		* Gets the recipient's To-header
 738.119 +		* @return a To-header or a 0-pointer if not present. Ownership is
 738.120 +        *   not transferred.
 738.121 +		*/
 738.122 +		IMPORT_C const CSIPToHeader* ToHeader() const;
 738.123 +
 738.124 +		/**
 738.125 +		* Gets CSeq-header
 738.126 +		* @return a CSeq-header or a 0-pointer if not present. Ownership is
 738.127 +        *   not transferred.
 738.128 +		*/		
 738.129 +		IMPORT_C const CSIPCSeqHeader* CSeqHeader() const;
 738.130 +
 738.131 +		/**
 738.132 +		* Gets message elements (contains all SIP user headers and content)
 738.133 +		* @return message elements
 738.134 +		*/
 738.135 +		IMPORT_C const CSIPMessageElements& MessageElements() const;
 738.136 +
 738.137 +		/**
 738.138 +		* Gets message elements (contains all SIP user headers and content)
 738.139 +		* The response elements can be populated with SIP user headers
 738.140 +		* and content using returned reference to the message elements.
 738.141 +		* @return message elements
 738.142 +		*/
 738.143 +		IMPORT_C CSIPMessageElements& MessageElements();
 738.144 +
 738.145 +    public: // New functions, for internal use
 738.146 +        static CSIPResponseElements* InternalizeL (RReadStream& aReadStream);
 738.147 +        static CSIPResponseElements* InternalizeLC (RReadStream& aReadStream);
 738.148 +        void ExternalizeL (RWriteStream& aWriteStream) const;
 738.149 +
 738.150 +    private:
 738.151 +	    CSIPResponseElements();
 738.152 +	    void ConstructL(TUint aStatusCode, RStringF aReasonPhrase);
 738.153 +	    void DoInternalizeL (RReadStream& aReadStream);
 738.154 +
 738.155 +    private: // Data
 738.156 +	    TUint iStatusCode;
 738.157 +	    RStringF iReasonPhrase;
 738.158 +        CSIPMessageElements* iMessageElements;
 738.159 +	};
 738.160 +
 738.161 +#endif // end of CSIPRESPONSEELEMENTS_H
   739.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   739.2 +++ b/epoc32/include/mw/sipretryafterheader.h	Wed Mar 31 12:27:01 2010 +0100
   739.3 @@ -0,0 +1,179 @@
   739.4 +/*
   739.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   739.6 +* All rights reserved.
   739.7 +* This component and the accompanying materials are made available
   739.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   739.9 +* which accompanies this distribution, and is available
  739.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  739.11 +*
  739.12 +* Initial Contributors:
  739.13 +* Nokia Corporation - initial contribution.
  739.14 +*
  739.15 +* Contributors:
  739.16 +*
  739.17 +* Description:
  739.18 +* Name        : sipretryafterheader.h
  739.19 +* Part of     : SIP Codec
  739.20 +* Interface   : SDK API, SIP Codec API
  739.21 +* Version     : SIP/4.0 
  739.22 +*
  739.23 +*/
  739.24 +
  739.25 +
  739.26 +
  739.27 +
  739.28 +#ifndef CSIPRETRYAFTERHEADER_H
  739.29 +#define CSIPRETRYAFTERHEADER_H
  739.30 +
  739.31 +//  INCLUDES
  739.32 +#include "sipparameterheaderbase.h"
  739.33 +#include "_sipcodecdefs.h"
  739.34 +
  739.35 +// FORWARD DECLARATIONS
  739.36 +class CSIPRetryAfterHeaderParams;
  739.37 +
  739.38 +// CLASS DECLARATION
  739.39 +/**
  739.40 +* @publishedAll
  739.41 +* @released
  739.42 +*
  739.43 +* Class provides functions for setting and getting parameters in SIP 
  739.44 +* "Retry-After" header.
  739.45 +*
  739.46 +*  @lib sipcodec.lib
  739.47 +*/
  739.48 +class CSIPRetryAfterHeader : public CSIPParameterHeaderBase
  739.49 +	{
  739.50 +	public:	// Constructors and destructor
  739.51 +
  739.52 +		/**
  739.53 +		* Constructs a CSIPRetryAfterHeader from textual representation 
  739.54 +		* of the header's value part.
  739.55 +		* @param aValue a value part of a "Retry-After"-header 
  739.56 +		*        (e.g. "18000;duration=3600")
  739.57 +		* @return a new instance of CSIPRetryAfterHeader   
  739.58 +		*/
  739.59 +		IMPORT_C static CSIPRetryAfterHeader* DecodeL(const TDesC8& aValue);
  739.60 +
  739.61 +		/**
  739.62 +		* Creates a new instance of CSIPRetryAfterHeader
  739.63 +		* @param aRetryAfter a retry after value.
  739.64 +		* @return a new instance of CSIPRetryAfterHeader
  739.65 +		*/
  739.66 +        IMPORT_C static CSIPRetryAfterHeader* NewL(TUint aRetryAfter);
  739.67 +
  739.68 +		/**
  739.69 +		* Creates a new instance of CSIPRetryAfterHeader
  739.70 +        * On return the new instance has left to the CleanupStack.
  739.71 +		* @param aRetryAfter a retry after value.
  739.72 +		* @return a new instance of CSIPRetryAfterHeader
  739.73 +		*/
  739.74 +        IMPORT_C static CSIPRetryAfterHeader* NewLC(TUint aRetryAfter);
  739.75 +
  739.76 +        /**
  739.77 +		* Destructor, deletes the resources of CSIPRetryAfterHeader.
  739.78 +		*/
  739.79 +		IMPORT_C virtual ~CSIPRetryAfterHeader();
  739.80 +
  739.81 +
  739.82 +	public: // New functions
  739.83 +
  739.84 +		/**
  739.85 +		* Sets the retry after value
  739.86 +		* @param aValue a new retry after value to set.
  739.87 +		*/
  739.88 +		IMPORT_C void SetRetryAfter(TUint aValue);
  739.89 +
  739.90 +		/**
  739.91 +		* Gets the retry after value
  739.92 +		* @return a retry after value
  739.93 +		*/
  739.94 +		IMPORT_C TUint RetryAfter() const;
  739.95 +
  739.96 +		/**
  739.97 +		* Gets the comment value
  739.98 +		* @return a comment value or KNullDesC8
  739.99 +		*/
 739.100 +		IMPORT_C const TDesC8& Comment() const;
 739.101 +
 739.102 +		/**
 739.103 +		* Gets the value of the "duration"-parameter
 739.104 +		* @return the "duration"-parameter, or 
 739.105 +		*         KErrNotFound if the parameter is not present.
 739.106 +		*/
 739.107 +		IMPORT_C TInt DurationParam() const;
 739.108 +
 739.109 +		/**
 739.110 +		* Sets the "duration"-parameter
 739.111 +		* @pre aDurationParam >= 0
 739.112 +		* @param aDurationParam a "duration"-parameter value to set
 739.113 +		*/
 739.114 +		IMPORT_C void SetDurationParamL(TInt aDurationParam);
 739.115 +
 739.116 +        /**
 739.117 +		* Constructs an instance of a CSIPRetryAfterHeader from a RReadStream
 739.118 +		* @param aReadStream a stream containing the value of the
 739.119 +		*        externalized object (header name not included). 
 739.120 +		* @return an instance of a CSIPRetryAfterHeader
 739.121 +		*/
 739.122 +		IMPORT_C static CSIPHeaderBase* 
 739.123 +            InternalizeValueL(RReadStream& aReadStream);
 739.124 +        
 739.125 +
 739.126 +	public: // From CSIPHeaderBase
 739.127 +
 739.128 +		/**
 739.129 +		* From CSIPHeaderBase CloneL
 739.130 +		*/
 739.131 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 739.132 +
 739.133 +		/**
 739.134 +		* From CSIPHeaderBase Name
 739.135 +		*/
 739.136 +		IMPORT_C RStringF Name() const;
 739.137 +
 739.138 +
 739.139 +	public: // From CSIPHeaderBase, for internal use
 739.140 +
 739.141 +		TPreferredPlace PreferredPlaceInMessage() const;
 739.142 +
 739.143 +	public: // New functions, for internal use
 739.144 +
 739.145 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 739.146 +
 739.147 +	private: // From CSIPHeaderBase
 739.148 +
 739.149 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 739.150 +
 739.151 +	private: // From CSIPParameterHeaderBase
 739.152 +
 739.153 +		HBufC8* ToTextMandatoryPartLC() const;
 739.154 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 739.155 +		const CSIPParamContainerBase& Params() const;
 739.156 +		CSIPParamContainerBase& Params();
 739.157 +
 739.158 +	private: // Constructors
 739.159 +
 739.160 +        CSIPRetryAfterHeader();
 739.161 +		CSIPRetryAfterHeader(TUint aRetryAfter);
 739.162 +        void ConstructL();
 739.163 +		void ConstructL(const CSIPRetryAfterHeader& aRetryAfterHeader);
 739.164 +
 739.165 +	private: // New functions
 739.166 +
 739.167 +		void DoInternalizeValueL(RReadStream& aReadStream);
 739.168 +
 739.169 +	private: // Data
 739.170 +
 739.171 +		TUint iRetryAfter;
 739.172 +        HBufC8* iComment;
 739.173 +		CSIPRetryAfterHeaderParams* iParams;
 739.174 +
 739.175 +	private: // For testing purposes
 739.176 +	
 739.177 +		UNIT_TEST(CSIPRetryAfterHeaderTest)
 739.178 +	};
 739.179 +
 739.180 +#endif // end of CSIPRETRYAFTERHEADER_H
 739.181 +
 739.182 +// End of File
   740.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   740.2 +++ b/epoc32/include/mw/siprouteheader.h	Wed Mar 31 12:27:01 2010 +0100
   740.3 @@ -0,0 +1,122 @@
   740.4 +/*
   740.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   740.6 +* All rights reserved.
   740.7 +* This component and the accompanying materials are made available
   740.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   740.9 +* which accompanies this distribution, and is available
  740.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  740.11 +*
  740.12 +* Initial Contributors:
  740.13 +* Nokia Corporation - initial contribution.
  740.14 +*
  740.15 +* Contributors:
  740.16 +*
  740.17 +* Description:
  740.18 +* Name        : siprouteheader.h
  740.19 +* Part of     : SIP Codec
  740.20 +* Interface   : SDK API, SIP Codec API
  740.21 +* Version     : SIP/4.0 
  740.22 +*
  740.23 +*/
  740.24 +
  740.25 +
  740.26 +
  740.27 +
  740.28 +#ifndef CSIPROUTEHEADER_H
  740.29 +#define CSIPROUTEHEADER_H
  740.30 +
  740.31 +//  INCLUDES
  740.32 +#include "siprouteheaderbase.h"
  740.33 +#include "_sipcodecdefs.h"
  740.34 +
  740.35 +// CLASS DECLARATION
  740.36 +/**
  740.37 +* @publishedAll
  740.38 +* @released
  740.39 +*
  740.40 +* Class for SIP "Route"-header manipulation.
  740.41 +*
  740.42 +*  @lib sipcodec.lib
  740.43 +*/
  740.44 +class CSIPRouteHeader : public CSIPRouteHeaderBase
  740.45 +	{
  740.46 +	public:	// Constructors and destructor
  740.47 +
  740.48 +		/**
  740.49 +		* Constructs a CSIPRouteHeader from textual representation 
  740.50 +		* of the header's value part.
  740.51 +		* @param aValue a value part of a "Route"-header
  740.52 +		* @return an array containing one to many instances of CSIPRouteHeader
  740.53 +		*/
  740.54 +		IMPORT_C static RPointerArray<CSIPRouteHeader> 
  740.55 +			DecodeL(const TDesC8& aValue);
  740.56 +
  740.57 +		/**
  740.58 +		* Creates a new instance of CSIPRouteHeader
  740.59 +		* @pre aSIPAddress != 0
  740.60 +		* @param aSIPAddress a name-address, the ownership is transferred 
  740.61 +		* @return a new instance of CSIPRouteHeader
  740.62 +		*/
  740.63 +		IMPORT_C static CSIPRouteHeader* NewL(CSIPAddress* aSIPAddress);
  740.64 +
  740.65 +		/**
  740.66 +		* Creates a new instance of CSIPRouteHeader and puts it to CleanupStack
  740.67 +		* @pre aSIPAddress != 0
  740.68 +		* @pre aSIPAddress->Address().HostPort().HasHost() == ETrue
  740.69 +		* @param aSIPAddress a name-address, the ownership is transferred 
  740.70 +		* @return a new instance of CSIPRouteHeader
  740.71 +		*/
  740.72 +		IMPORT_C static CSIPRouteHeader* NewLC(CSIPAddress* aSIPAddress);
  740.73 +
  740.74 +		/**
  740.75 +		* Destructor, deletes the resources of CSIPRouteHeader.
  740.76 +		*/
  740.77 +		IMPORT_C ~CSIPRouteHeader();
  740.78 +
  740.79 +
  740.80 +	public: // New functions
  740.81 +
  740.82 +		/**
  740.83 +		* Constructs an instance of a CCSIPRouteHeader from a RReadStream
  740.84 +		* @param aReadStream a stream containing the value of the
  740.85 +		*        externalized object (header name not included). 
  740.86 +		* @return an instance of a CSIPRouteHeader
  740.87 +		*/
  740.88 +		IMPORT_C static CSIPHeaderBase* 
  740.89 +			InternalizeValueL(RReadStream& aReadStream);
  740.90 +
  740.91 +
  740.92 +	public: // From CSIPHeaderBase
  740.93 +		
  740.94 +		/**
  740.95 +		* From CSIPHeaderBase CloneL
  740.96 +		*/
  740.97 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  740.98 +
  740.99 +		/**
 740.100 +		* From CSIPHeaderBase Name
 740.101 +		*/
 740.102 +		IMPORT_C RStringF Name() const;
 740.103 +
 740.104 +
 740.105 +	public: // New functions, for internal use
 740.106 +
 740.107 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 740.108 +		static CSIPRouteHeader* NewL(const CSIPRouteHeaderBase& aHeader);		
 740.109 +
 740.110 +	private: // From CSIPHeaderbase
 740.111 +
 740.112 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 740.113 +
 740.114 +	private: // Constructors
 740.115 +
 740.116 +		CSIPRouteHeader();
 740.117 +
 740.118 +	private: // New functions
 740.119 +
 740.120 +		void DoInternalizeValueL(RReadStream& aReadStream);
 740.121 +	};
 740.122 +
 740.123 +#endif // CSIPROUTEHEADER_H
 740.124 +
 740.125 +// End of File
   741.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   741.2 +++ b/epoc32/include/mw/siprouteheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   741.3 @@ -0,0 +1,122 @@
   741.4 +/*
   741.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   741.6 +* All rights reserved.
   741.7 +* This component and the accompanying materials are made available
   741.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   741.9 +* which accompanies this distribution, and is available
  741.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  741.11 +*
  741.12 +* Initial Contributors:
  741.13 +* Nokia Corporation - initial contribution.
  741.14 +*
  741.15 +* Contributors:
  741.16 +*
  741.17 +* Description:
  741.18 +* Name        : siprouteheaderbase.h
  741.19 +* Part of     : SIP Codec
  741.20 +* Interface   : SDK API, SIP Codec API
  741.21 +* Version     : SIP/4.0 
  741.22 +*
  741.23 +*/
  741.24 +
  741.25 +
  741.26 +
  741.27 +
  741.28 +#ifndef CSIPROUTEHEADERBASE_H
  741.29 +#define CSIPROUTEHEADERBASE_H
  741.30 +
  741.31 +//  INCLUDES
  741.32 +#include "sipparameterheaderbase.h"
  741.33 +#include "_sipcodecdefs.h"
  741.34 +
  741.35 +// FORWARD DECLARATIONS
  741.36 +class CSIPAddress;
  741.37 +class CSIPHeaderGenericParams;
  741.38 +
  741.39 +// CLASS DECLARATION
  741.40 +/**
  741.41 +* @publishedAll
  741.42 +* @released
  741.43 +*
  741.44 +* A base class for "Route"-, "Record-Route"- and "Service-Route"-headers.
  741.45 +*
  741.46 +*  @lib sipcodec.lib
  741.47 +*/
  741.48 +class CSIPRouteHeaderBase : public CSIPParameterHeaderBase
  741.49 +	{
  741.50 +	public:	// Constructors and destructor
  741.51 +
  741.52 +		/**
  741.53 +		* Destructor, deletes the resources of CSIPRouteHeaderBase.
  741.54 +		*/
  741.55 +		IMPORT_C virtual ~CSIPRouteHeaderBase();
  741.56 +
  741.57 +
  741.58 +	public:	// New functions
  741.59 +		
  741.60 +		/**
  741.61 +		* Sets the name-address
  741.62 +		* @pre aSIPAddress != 0
  741.63 +		* @param aSIPAddress a name-address, the ownership is transferred
  741.64 +		*/
  741.65 +		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
  741.66 +	
  741.67 +		/**
  741.68 +		* Gets the name-address as const
  741.69 +		* @return name-address
  741.70 +		*/
  741.71 +		IMPORT_C const CSIPAddress& SIPAddress() const;
  741.72 +
  741.73 +		/**
  741.74 +		* Gets the name-address
  741.75 +		* @return name-address
  741.76 +		*/
  741.77 +		IMPORT_C CSIPAddress& SIPAddress();
  741.78 +
  741.79 +
  741.80 +	public: // From CSIPHeaderBase, for internal use
  741.81 +
  741.82 +        /**
  741.83 +        * @internalComponent
  741.84 +        */	
  741.85 +		TBool MoreThanOneAllowed() const;
  741.86 +		
  741.87 +        /**
  741.88 +        * @internalComponent
  741.89 +        */		
  741.90 +		TPreferredPlace PreferredPlaceInMessage() const;
  741.91 +
  741.92 +	protected: // Contructors
  741.93 +
  741.94 +		CSIPRouteHeaderBase();
  741.95 +		void ConstructL();
  741.96 +		void ConstructL(CSIPAddress* aSIPAddress);
  741.97 +		void ConstructL(const CSIPRouteHeaderBase& aRouteHeaderBase);
  741.98 +
  741.99 +	protected: // Data
 741.100 +
 741.101 +        /**
 741.102 +        * @internalComponent
 741.103 +        */
 741.104 +		CSIPAddress* iSIPAddress;
 741.105 +		
 741.106 +        /**
 741.107 +        * @internalComponent
 741.108 +        */		
 741.109 +		CSIPHeaderGenericParams* iParams;
 741.110 +
 741.111 +	private: // From CSIPParameterHeaderBase
 741.112 +
 741.113 +		HBufC8* ToTextMandatoryPartLC() const;
 741.114 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 741.115 +		const CSIPParamContainerBase& Params() const;
 741.116 +		CSIPParamContainerBase& Params();
 741.117 +
 741.118 +	private: // For testing purposes
 741.119 +	
 741.120 +		UNIT_TEST(CSIPRouteHeaderBaseTest)
 741.121 +	};
 741.122 +
 741.123 +#endif // CSIPROUTEHEADERBASE_H
 741.124 +
 741.125 +// End of File
   742.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   742.2 +++ b/epoc32/include/mw/siprseqheader.h	Wed Mar 31 12:27:01 2010 +0100
   742.3 @@ -0,0 +1,108 @@
   742.4 +/*
   742.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   742.6 +* All rights reserved.
   742.7 +* This component and the accompanying materials are made available
   742.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   742.9 +* which accompanies this distribution, and is available
  742.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  742.11 +*
  742.12 +* Initial Contributors:
  742.13 +* Nokia Corporation - initial contribution.
  742.14 +*
  742.15 +* Contributors:
  742.16 +*
  742.17 +* Description:
  742.18 +* Name        : siprseqheader.h
  742.19 +* Part of     : SIP Codec
  742.20 +* Interface   : SDK API, SIP Codec API
  742.21 +* Version     : SIP/4.0 
  742.22 +*
  742.23 +*/
  742.24 +
  742.25 +
  742.26 +
  742.27 +
  742.28 +#ifndef CSIPRSEQHEADER_H
  742.29 +#define CSIPRSEQHEADER_H
  742.30 +
  742.31 +//  INCLUDES
  742.32 +#include "sipunsignedintheaderbase.h"
  742.33 +#include "_sipcodecdefs.h"
  742.34 +
  742.35 +// CLASS DECLARATION
  742.36 +/**
  742.37 +* @publishedAll
  742.38 +* @released
  742.39 +*
  742.40 +* Class encapsulates a "RSeq"-header value.
  742.41 +*
  742.42 +*  @lib sipcodec.lib
  742.43 +*/
  742.44 +class CSIPRSeqHeader : public CSIPUnsignedIntHeaderBase
  742.45 +    {
  742.46 +    public: // Constructors and destructor
  742.47 +
  742.48 +        /**
  742.49 +        * Constructs a CSIPRSeqHeader from textual representation 
  742.50 +        * of the header's value part.
  742.51 +        * @param aValue a value part of a "RSeq"-header (e.g. "123")
  742.52 +        * @return a new instance of CSIPRSeqHeader
  742.53 +        */
  742.54 +        IMPORT_C static CSIPRSeqHeader* DecodeL(const TDesC8& aValue);
  742.55 +    
  742.56 +        /**
  742.57 +        * Constructor
  742.58 +        * @param aValue the value to set
  742.59 +        */
  742.60 +        IMPORT_C CSIPRSeqHeader(TUint aValue);
  742.61 +    
  742.62 +        /**
  742.63 +        * Destructor, deletes the resources of CSIPRSeqHeader.
  742.64 +        */
  742.65 +        IMPORT_C ~CSIPRSeqHeader();
  742.66 +
  742.67 +
  742.68 +    public: // New functions
  742.69 +
  742.70 +        /**
  742.71 +        * Constructs an instance of a CSIPRSeqHeader from a RReadStream
  742.72 +        * @param aReadStream a stream containing the value of the
  742.73 +        *        externalized header object (header name not included).
  742.74 +        * @return an instance of a CSIPRSeqHeader
  742.75 +        */
  742.76 +        IMPORT_C static CSIPHeaderBase* 
  742.77 +            InternalizeValueL(RReadStream& aReadStream);
  742.78 +
  742.79 +
  742.80 +    public: // From CSIPHeaderBase
  742.81 +
  742.82 +        /**
  742.83 +        * From CSIPHeaderBase CloneL
  742.84 +        */
  742.85 +        IMPORT_C CSIPHeaderBase* CloneL() const;
  742.86 +
  742.87 +        /**
  742.88 +        * From CSIPHeaderBase Name
  742.89 +        */
  742.90 +        IMPORT_C RStringF Name() const;
  742.91 +
  742.92 +
  742.93 +    public: // From CSIPHeaderBase, for internal use
  742.94 +
  742.95 +        /**
  742.96 +        * @internalComponent
  742.97 +        */
  742.98 +        TPreferredPlace PreferredPlaceInMessage() const;
  742.99 +
 742.100 +    public: // New functions, for internal use
 742.101 +
 742.102 +        static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 742.103 +
 742.104 +    private: // For testing purposes
 742.105 +    
 742.106 +        UNIT_TEST(CSIPRSeqHeaderTest)
 742.107 +    };
 742.108 +
 742.109 +#endif // CSIPRSEQHEADER_H
 742.110 +
 742.111 +// End of File
   743.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   743.2 +++ b/epoc32/include/mw/sipsdkcrkeys.h	Wed Mar 31 12:27:01 2010 +0100
   743.3 @@ -0,0 +1,72 @@
   743.4 +/*
   743.5 +* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   743.6 +* All rights reserved.
   743.7 +* This component and the accompanying materials are made available
   743.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   743.9 +* which accompanies this distribution, and is available
  743.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  743.11 +*
  743.12 +* Initial Contributors:
  743.13 +* Nokia Corporation - initial contribution.
  743.14 +*
  743.15 +* Contributors:
  743.16 +*
  743.17 +* Description:
  743.18 +* Name          : sipcrkeys.h
  743.19 +* Part of       : SIP API
  743.20 +* Version       : SIP/6.0
  743.21 +*
  743.22 +*/
  743.23 +
  743.24 +
  743.25 +
  743.26 +#ifndef SIPCRKEYS_H
  743.27 +#define SIPCRKEYS_H
  743.28 +
  743.29 +// INCLUDES
  743.30 +#include <e32def.h>
  743.31 +
  743.32 +/**
  743.33 +* @file
  743.34 +* @publishedAll
  743.35 +* @released
  743.36 +*/
  743.37 +
  743.38 +/**
  743.39 +* Defines configuration parameters used by the SIP stack.
  743.40 +*/
  743.41 +const TUid KCRUidSIP = { 0x101FED88 };
  743.42 +
  743.43 +/**
  743.44 +* Defines SIP transaction timer T1 in milliseconds as per RFC3261.
  743.45 +*/
  743.46 +const TUint32 KSIPTransactionTimerT1 = 0x01;
  743.47 +
  743.48 +/**
  743.49 +* Defines SIP transaction timer T2 in milliseconds as per RFC3261.
  743.50 +*/
  743.51 +const TUint32 KSIPTransactionTimerT2 = 0x02;
  743.52 +
  743.53 +/**
  743.54 +* Defines SIP transaction timer T4 in milliseconds as per RFC3261.
  743.55 +*/
  743.56 +const TUint32 KSIPTransactionTimerT4 = 0x03;	
  743.57 +
  743.58 +/**
  743.59 +* Defines SIP transaction timer T1 for LAN Bearer in milliseconds as per RFC3261.
  743.60 +*/
  743.61 +const TUint32 KSIPTransactionTimerLANT1 = 0x0b;
  743.62 +
  743.63 +/**
  743.64 +* Defines SIP transaction timer T2 for LAN Bearer in milliseconds as per RFC3261.
  743.65 +*/
  743.66 +const TUint32 KSIPTransactionTimerLANT2 = 0x0c;
  743.67 +
  743.68 +/**
  743.69 +* Defines SIP transaction timer T4 for LAN Bearer in milliseconds as per RFC3261.
  743.70 +*/
  743.71 +const TUint32 KSIPTransactionTimerLANT4 = 0x0d;
  743.72 +
  743.73 +#endif // SIPCRKEYS_H
  743.74 +
  743.75 +// End of File
   744.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   744.2 +++ b/epoc32/include/mw/sipsecurityclientheader.h	Wed Mar 31 12:27:01 2010 +0100
   744.3 @@ -0,0 +1,122 @@
   744.4 +/*
   744.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   744.6 +* All rights reserved.
   744.7 +* This component and the accompanying materials are made available
   744.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   744.9 +* which accompanies this distribution, and is available
  744.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  744.11 +*
  744.12 +* Initial Contributors:
  744.13 +* Nokia Corporation - initial contribution.
  744.14 +*
  744.15 +* Contributors:
  744.16 +*
  744.17 +* Description:
  744.18 +* Name        : sipsecurityclientheader.h
  744.19 +* Part of     : SIP Codec
  744.20 +* Interface   : SDK API, SIP Codec API
  744.21 +* Version     : SIP/4.0 
  744.22 +*
  744.23 +*/
  744.24 +
  744.25 +
  744.26 +
  744.27 +
  744.28 +#ifndef CSIPSECURITYCLIENTHEADER_H
  744.29 +#define CSIPSECURITYCLIENTHEADER_H
  744.30 +
  744.31 +//  INCLUDES
  744.32 +#include "sipsecurityheaderbase.h"
  744.33 +#include "_sipcodecdefs.h"
  744.34 +
  744.35 +// CLASS DECLARATION
  744.36 +/**
  744.37 +* @publishedAll
  744.38 +* @released
  744.39 +*
  744.40 +* Class provides functions for setting and getting SIP "Security-Client"
  744.41 +* header fields.
  744.42 +*
  744.43 +*  @lib sipcodec.lib
  744.44 +*/
  744.45 +class CSIPSecurityClientHeader : public CSIPSecurityHeaderBase
  744.46 +	{
  744.47 +	public:	// Constructors and destructor
  744.48 +
  744.49 +		/**
  744.50 +		* Constructs a CSIPSecurityClientHeader from textual representation
  744.51 +		* of the header's value part.
  744.52 +		* @param aValue a value part of a "Security-Client"-header
  744.53 +		* @return an array containing 1..n instances of CSIPSecurityClientHeader
  744.54 +		*/
  744.55 +		IMPORT_C static RPointerArray<CSIPSecurityClientHeader> 
  744.56 +			DecodeL(const TDesC8& aValue);
  744.57 +
  744.58 +		/**
  744.59 +		* Creates a new instance of CSIPSecurityClientHeader
  744.60 +		* @param aMechanism a Mechanism-Name parameter 
  744.61 +		*        in the "Security-Client" header
  744.62 +		* @return a new instance of CSIPSecurityClientHeader
  744.63 +		*/
  744.64 +		IMPORT_C static CSIPSecurityClientHeader* 
  744.65 +			NewL(const TDesC8& aMechanism);
  744.66 +
  744.67 +		/**
  744.68 +		* Creates a new instance of CSIPSecurityClientHeader 
  744.69 +		* and puts it to CleanupStack
  744.70 +		* @param aMechanism a Mechanism-Name parameter 
  744.71 +		* in the "Security-Client" header
  744.72 +		* @return a new instance of CSIPSecurityClientHeader
  744.73 +		*/
  744.74 +		IMPORT_C static CSIPSecurityClientHeader* 
  744.75 +			NewLC(const TDesC8& aMechanism);
  744.76 +
  744.77 +		/**
  744.78 +		* Destructor, deletes the resources of CSIPSecurityClientHeader.
  744.79 +		*/
  744.80 +		IMPORT_C ~CSIPSecurityClientHeader();
  744.81 +
  744.82 +
  744.83 +	public: // New functions
  744.84 +
  744.85 +		/**
  744.86 +		* Constructs an instance of a CSIPSecurityClientHeader 
  744.87 +		* from a RReadStream
  744.88 +		* @param aReadStream a stream containing the value of the
  744.89 +		*        externalized object (header name not included). 
  744.90 +		* @return an instance of a CSIPSecurityClientHeader
  744.91 +		*/
  744.92 +
  744.93 +		IMPORT_C static CSIPHeaderBase* 
  744.94 +			InternalizeValueL(RReadStream& aReadStream);
  744.95 +
  744.96 +
  744.97 +	public: // From CSIPHeaderBase
  744.98 +
  744.99 +		/**
 744.100 +		* From CSIPHeaderBase CloneL
 744.101 +		*/
 744.102 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 744.103 +
 744.104 +		/**
 744.105 +		* From CSIPHeaderBase Name
 744.106 +		*/
 744.107 +		IMPORT_C RStringF Name() const;
 744.108 +
 744.109 +
 744.110 +	public: // New functions, for internal use
 744.111 +
 744.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 744.113 +
 744.114 +	private: // New functions
 744.115 +
 744.116 +		CSIPSecurityClientHeader() ;
 744.117 +
 744.118 +	private: // For testing purposes
 744.119 +	
 744.120 +		UNIT_TEST(CSIPSecurityHeaderBaseTest)
 744.121 +    };
 744.122 +
 744.123 +#endif // CSIPSECURITYCLIENTHEADER_H
 744.124 +
 744.125 +// End of File
   745.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   745.2 +++ b/epoc32/include/mw/sipsecurityheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   745.3 @@ -0,0 +1,125 @@
   745.4 +/*
   745.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   745.6 +* All rights reserved.
   745.7 +* This component and the accompanying materials are made available
   745.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   745.9 +* which accompanies this distribution, and is available
  745.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  745.11 +*
  745.12 +* Initial Contributors:
  745.13 +* Nokia Corporation - initial contribution.
  745.14 +*
  745.15 +* Contributors:
  745.16 +*
  745.17 +* Description:
  745.18 +* Name        : sipsecurityheaderbase.h
  745.19 +* Part of     : SIP Codec
  745.20 +* Interface   : SDK API, SIP Codec API
  745.21 +* Version     : SIP/4.0 
  745.22 +*
  745.23 +*/
  745.24 +
  745.25 +
  745.26 +
  745.27 +
  745.28 +#ifndef CSIPSECURITYHEADERBASE_H
  745.29 +#define CSIPSECURITYHEADERBASE_H
  745.30 +
  745.31 +//  INCLUDES
  745.32 +#include "sipparameterheaderbase.h"
  745.33 +#include "_sipcodecdefs.h"
  745.34 +
  745.35 +// FORWARD DECLARATIONS
  745.36 +class CSIPSecurityHeaderBaseParams;
  745.37 +
  745.38 +// CLASS DECLARATION
  745.39 +/**
  745.40 +* @publishedAll
  745.41 +* @released
  745.42 +*
  745.43 +* A base class for Security-Client, Security-Server and Security-Verify.
  745.44 +*
  745.45 +*  @lib sipcodec.lib
  745.46 +*/
  745.47 +class CSIPSecurityHeaderBase : public CSIPParameterHeaderBase
  745.48 +	{
  745.49 +	public:	// Constructors and destructor
  745.50 +
  745.51 +		/**
  745.52 +		* Destructor, deletes the resources of CSIPSecurityHeaderBase.
  745.53 +		*/
  745.54 +		IMPORT_C virtual ~CSIPSecurityHeaderBase();
  745.55 +
  745.56 +	public: // New functions
  745.57 +
  745.58 +		/**
  745.59 +		* Gets the value of "q"-parameter
  745.60 +		* @return the "q"-parameter value, zero if not present 
  745.61 +		*/
  745.62 +		IMPORT_C TReal PreferenceParam() const;
  745.63 +
  745.64 +		/**
  745.65 +		* Sets the "q"-parameter value
  745.66 +		* @param aPreferenceValue a "q"-parameter value to set
  745.67 +		*/
  745.68 +		IMPORT_C void SetPreferenceParamL(TReal aPreferenceValue);
  745.69 +
  745.70 +		/**
  745.71 +		* Gets the Mechanism-Name from the Security header
  745.72 +		* @return a Mechanism-Name
  745.73 +		*/
  745.74 +		IMPORT_C const TDesC8& MechanismName() const;
  745.75 +
  745.76 +		/**
  745.77 +		* Sets the Mechanism-Name in the Security header
  745.78 +		* @param aMechanismName a Mechanism-Name
  745.79 +		*/
  745.80 +		IMPORT_C void SetMechanismNameL(const TDesC8& aMechanismName);
  745.81 +
  745.82 +	public: // From CSIPHeaderBase, for internal use
  745.83 +
  745.84 +        /**
  745.85 +        * @internalComponent
  745.86 +        */
  745.87 +		TBool MoreThanOneAllowed() const;
  745.88 +		
  745.89 +        /**
  745.90 +        * @internalComponent
  745.91 +        */		
  745.92 +		TPreferredPlace PreferredPlaceInMessage() const;
  745.93 +
  745.94 +	protected: // Constructors
  745.95 +
  745.96 +		CSIPSecurityHeaderBase();
  745.97 +		void ConstructL();
  745.98 +		void ConstructL(const TDesC8& aMechanismName);
  745.99 +		void ConstructL(const CSIPSecurityHeaderBase& aSecurityHeaderBase);
 745.100 +	
 745.101 +	protected: // New functions	
 745.102 +		
 745.103 +		void DoInternalizeValueL(RReadStream& aReadStream);
 745.104 +
 745.105 +	private: // From CSIPHeaderBase
 745.106 +
 745.107 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 745.108 +
 745.109 +	private: // From CSIPParameterHeaderBase
 745.110 +
 745.111 +		HBufC8* ToTextMandatoryPartLC() const;
 745.112 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 745.113 +		const CSIPParamContainerBase& Params() const;
 745.114 +		CSIPParamContainerBase& Params();
 745.115 +
 745.116 +	private: // Data
 745.117 +
 745.118 +		HBufC8* iMechanismName;
 745.119 +		CSIPSecurityHeaderBaseParams* iParams;
 745.120 +
 745.121 +	private: // For testing purposes
 745.122 +	
 745.123 +		UNIT_TEST(CSIPSecurityHeaderBaseTest)
 745.124 +	};
 745.125 +
 745.126 +#endif // CSIPSECURITYHEADERBASE_H
 745.127 +
 745.128 +// End of File
   746.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   746.2 +++ b/epoc32/include/mw/sipservertransaction.h	Wed Mar 31 12:27:01 2010 +0100
   746.3 @@ -0,0 +1,190 @@
   746.4 +/*
   746.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   746.6 +* All rights reserved.
   746.7 +* This component and the accompanying materials are made available
   746.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   746.9 +* which accompanies this distribution, and is available
  746.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  746.11 +*
  746.12 +* Initial Contributors:
  746.13 +* Nokia Corporation - initial contribution.
  746.14 +*
  746.15 +* Contributors:
  746.16 +*
  746.17 +* Description:
  746.18 +* Name        : sipservertransaction.h
  746.19 +* Part of     : SIP Client
  746.20 +* Interface   : SDK API, SIP API
  746.21 +* Version     : 1.0
  746.22 +*
  746.23 +*/
  746.24 +
  746.25 +
  746.26 +
  746.27 +#ifndef CSIPSERVERTRANSACTION_H
  746.28 +#define CSIPSERVERTRANSACTION_H
  746.29 +
  746.30 +// INCLUDES
  746.31 +#include "siptransactionbase.h"
  746.32 +
  746.33 +// FORWARD DECLARATIONS
  746.34 +class CSIPRequestElements;
  746.35 +class MSIPResponseSender;
  746.36 +class CSIPConnection;
  746.37 +class CSIPDialogImplementation;
  746.38 +
  746.39 +// CLASS DECLARATION
  746.40 +
  746.41 +/**
  746.42 +*  @publishedAll
  746.43 +*  @released
  746.44 +*
  746.45 +*  Class for managing SIP server transactions.
  746.46 +*  It provides services for creating, ending
  746.47 +*  and getting SIP transaction parameters.
  746.48 +*  Client cannot instantiate this class.
  746.49 +*  
  746.50 +*  @lib sipclient
  746.51 +*/
  746.52 +class CSIPServerTransaction: public CSIPTransactionBase
  746.53 +	{
  746.54 +	public: // Destructor
  746.55 +    
  746.56 +        /**
  746.57 +        * Destructor
  746.58 +		*/
  746.59 +		IMPORT_C ~CSIPServerTransaction();
  746.60 +
  746.61 +	public: // New functions
  746.62 +	
  746.63 +        /**
  746.64 +		* Sends response and ends the transaction;
  746.65 +		* The user must not send 100 Trying response. Leaves on failure.
  746.66 +        * @pre aElements!=0
  746.67 +        * @pre State()==ETrying || State()==EProceeding
  746.68 +		* @pre CSIPConnection::State()==EActive
  746.69 +		* @pre ResponseAllowed()==ETrue		
  746.70 +		* @param aElements contains Status Code, optional Reason Phrase and
  746.71 +        *   optional SIP message headers and body. Ownership is transferred.
  746.72 +		* @leave KErrArgument if aElements == NULL
  746.73 +		* @leave KErrGeneral if ResponseAllowed() == EFalse
  746.74 +		* @leave KErrSIPInvalidTransactionState if State()!=ETrying and
  746.75 +		*	State()!=EProceeding
  746.76 +		* @leave KErrSIPInvalidDialogState if sending response to a request
  746.77 +		*	within dialog, and the dialog is in terminated state.
  746.78 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  746.79 +		*	object has been deleted
  746.80 +		* @capability NetworkServices
  746.81 +		*/
  746.82 +		IMPORT_C void SendResponseL(CSIPResponseElements *aElements);
  746.83 +
  746.84 +	    /**
  746.85 +		* Gets the request elements
  746.86 +		* @return Request elements. Ownership is not transferred.
  746.87 +		*/
  746.88 +		IMPORT_C const CSIPRequestElements* RequestElements() const;
  746.89 +
  746.90 +        /**
  746.91 +		* Checks if the response sending is allowed for this server
  746.92 +        * transaction. For instance response is not allowed in ACK transaction.
  746.93 +		* @return ETrue if response sending is allowed, EFalse otherwise
  746.94 +		*/
  746.95 +		IMPORT_C TBool ResponseAllowed() const;
  746.96 +        
  746.97 +	public: // New functions, for internal use
  746.98 +	
  746.99 +        /**
 746.100 +		* Sets a new respose sender, replacing the current sender.
 746.101 +		*
 746.102 +        * @param aSender Response sender to be used from now on. Ownership is
 746.103 +        *   	 transferred.		
 746.104 +		*/
 746.105 +        void SetResponseSender(MSIPResponseSender* aSender);
 746.106 +
 746.107 +		/**
 746.108 +		* If the request was received inside a dialog, returns the dialog.		
 746.109 +		*
 746.110 +        * @return CSIPDialogImplementation* The dialog inside which the request
 746.111 +        *	was received, or NULL. Ownership is not transferred.
 746.112 +		*/
 746.113 +		CSIPDialogImplementation* Dialog() const;
 746.114 +
 746.115 +        /**
 746.116 +	    * Obtains the associated CSIPConnection instance. If connection can't
 746.117 +        * be accessed anymore, this function leaves.
 746.118 +        *	
 746.119 +	    * @return CSIPConnection
 746.120 +	    */
 746.121 +        CSIPConnection& SIPConnectionL();
 746.122 +
 746.123 +        /**
 746.124 +		* Update the MTransactionAssociation to point to aAssociation.
 746.125 +		*
 746.126 +        * @param aAssociation Associated object		
 746.127 +		*/
 746.128 +        void ReAssociateL(MTransactionAssociation& aAssociation);
 746.129 +
 746.130 +        /**
 746.131 +		* Removes, but does not delete, request elements from
 746.132 +        * aServerTransaction.
 746.133 +        *
 746.134 +		* @param aServerTransaction Server transaction from which response
 746.135 +        *   elements are removed. Ownership is not transferred.
 746.136 +		*/
 746.137 +        static void DetachRequestElements(TAny* aServerTransaction);
 746.138 +
 746.139 +	public: // Constructors, for internal use
 746.140 +        /**
 746.141 +		* Creates a server transaction.
 746.142 +		*
 746.143 +        * @param aRequestId RequestId for the transaction to use
 746.144 +        * @param aAssociation Object with which the transaction is associated
 746.145 +        * @param aElements Request elements. Ownership is transferred.
 746.146 +        * @return New object. Ownership is transferred.
 746.147 +		*/
 746.148 +		static CSIPServerTransaction*
 746.149 +            NewL(TUint32 aRequestId,
 746.150 +                 MTransactionAssociation& aAssociation,
 746.151 +                 CSIPRequestElements* aElements);
 746.152 +
 746.153 +        /**
 746.154 +		* Creates a server transaction and pushes it to cleanup stack.
 746.155 +		*
 746.156 +        * @param aRequestId RequestId for the transaction to use
 746.157 +        * @param aAssociation Object with which the transaction is associated
 746.158 +        * @param aElements Request elements. Ownership is transferred.
 746.159 +        * @return New object. Ownership is transferred.
 746.160 +		*/
 746.161 +		static CSIPServerTransaction*
 746.162 +            NewLC(TUint32 aRequestId,
 746.163 +                  MTransactionAssociation& aAssociation,
 746.164 +                  CSIPRequestElements* aElements);
 746.165 +
 746.166 +	private: // Constructors
 746.167 +		CSIPServerTransaction(TUint32 aRequestId,
 746.168 +                              MTransactionAssociation& aAssociation);
 746.169 +
 746.170 +        /**
 746.171 +		* Second phase constructor.
 746.172 +		*
 746.173 +		* @pre aElements!=0
 746.174 +        * @param aElements Request elements. Ownership is transferred.        
 746.175 +		*/
 746.176 +        void ConstructL(CSIPRequestElements* aElements);
 746.177 +
 746.178 +	private: // Data
 746.179 +        CSIPRequestElements* iRequestElements;
 746.180 +
 746.181 +        //This interface is used for sending the response.
 746.182 +        //CSIPServerTransaction owns iResponseSender.
 746.183 +        MSIPResponseSender* iResponseSender;
 746.184 +
 746.185 +	private: // For testing purposes        
 746.186 +
 746.187 +	    UNIT_TEST(CSIPServerTransaction_Test)
 746.188 +        UNIT_TEST(CSIP_Test)
 746.189 +
 746.190 +		__DECLARE_TEST;
 746.191 +	};
 746.192 +
 746.193 +#endif
   747.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   747.2 +++ b/epoc32/include/mw/sipstrings.h	Wed Mar 31 12:27:01 2010 +0100
   747.3 @@ -0,0 +1,99 @@
   747.4 +/*
   747.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   747.6 +* All rights reserved.
   747.7 +* This component and the accompanying materials are made available
   747.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   747.9 +* which accompanies this distribution, and is available
  747.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  747.11 +*
  747.12 +* Initial Contributors:
  747.13 +* Nokia Corporation - initial contribution.
  747.14 +*
  747.15 +* Contributors:
  747.16 +*
  747.17 +* Description:
  747.18 +* Name        : sipstrings.h
  747.19 +* Part of     : SIP Codec
  747.20 +* Interface   : SDK API, SIP Codec API
  747.21 +* Version     : SIP/4.0 
  747.22 +*
  747.23 +*/
  747.24 +
  747.25 +
  747.26 +
  747.27 +#ifndef SIPSTRINGS_H
  747.28 +#define SIPSTRINGS_H
  747.29 +
  747.30 +//  INCLUDES
  747.31 +#include <e32base.h>
  747.32 +#include <stringpool.h>
  747.33 +#include "_sipcodecdefs.h"
  747.34 +
  747.35 +// FORWARD DECLARATIONS
  747.36 +class CSIPStrings;
  747.37 +
  747.38 +// CLASS DECLARATION
  747.39 +/**
  747.40 + * @publishedAll
  747.41 + * @released
  747.42 + *
  747.43 + * This class defines string pool for SIP Codec.
  747.44 + * The client of SIP Codec must call OpenL() before 
  747.45 + * invoking any function of SIP Codec classes.
  747.46 + * The client must close the string pool when finished using
  747.47 + * SIP Codec classes.
  747.48 + *
  747.49 + * @lib sipcodec.lib
  747.50 + */
  747.51 +class SIPStrings
  747.52 +	{
  747.53 +	public:	// Constructors and destructor
  747.54 + 		
  747.55 +		/**
  747.56 +		* Opens SIP Codec string pool.
  747.57 +		* Implemented with a reference count.
  747.58 +		*/
  747.59 +		IMPORT_C static void OpenL();
  747.60 +
  747.61 +		/**
  747.62 +		* Closes SIP Codec string pool.
  747.63 +		* In other words decrements reference count and if it reaches
  747.64 +		* zero, closes the string pool.	 
  747.65 +		* The user must not call Close() if it has not called OpenL().
  747.66 +		*/
  747.67 +		IMPORT_C static void Close(); 
  747.68 +
  747.69 +
  747.70 +	public: // New functions
  747.71 +	
  747.72 +		/**
  747.73 +		* Gets a case-insensitive string specified 
  747.74 +		* in the original string table.
  747.75 +		*
  747.76 +		* @param aIndex The string table enumeration value
  747.77 +		* @return Initialised RStringF object
  747.78 +		*/
  747.79 +		IMPORT_C static RStringF StringF(TInt aIndex);
  747.80 +
  747.81 +		/**
  747.82 +		* Gets the string pool used by SIP Codec.
  747.83 +		*
  747.84 +		* @return RStringPool: A handle to a string pool
  747.85 +		*/
  747.86 +		IMPORT_C static RStringPool Pool();
  747.87 +
  747.88 +		/**
  747.89 +		* Gets the string table used by SIP Codec.
  747.90 +		*
  747.91 +		* @return TStringTable&: The string pool table
  747.92 +		*/
  747.93 +		IMPORT_C static const TStringTable& Table();
  747.94 +	
  747.95 +	private:
  747.96 +
  747.97 +		static CSIPStrings* Strings();
  747.98 +		};
  747.99 +
 747.100 +#endif // SIPSTRINGS_H
 747.101 +
 747.102 +// End of File
   748.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   748.2 +++ b/epoc32/include/mw/sipsubscribedialogassoc.h	Wed Mar 31 12:27:01 2010 +0100
   748.3 @@ -0,0 +1,354 @@
   748.4 +/*
   748.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   748.6 +* All rights reserved.
   748.7 +* This component and the accompanying materials are made available
   748.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   748.9 +* which accompanies this distribution, and is available
  748.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  748.11 +*
  748.12 +* Initial Contributors:
  748.13 +* Nokia Corporation - initial contribution.
  748.14 +*
  748.15 +* Contributors:
  748.16 +*
  748.17 +* Description:
  748.18 +* Name        : sipsubscribedialogassoc.h
  748.19 +* Part of     : SIP Client
  748.20 +* Interface   : SDK API, SIP Client API
  748.21 +* Version     : 1.0
  748.22 +*
  748.23 +*/
  748.24 +
  748.25 +
  748.26 +
  748.27 +#ifndef CSIPSUBSCRIBEDIALOGASSOC_H
  748.28 +#define CSIPSUBSCRIBEDIALOGASSOC_H
  748.29 +
  748.30 +// INCLUDES
  748.31 +#include "sipdialogassocbase.h"
  748.32 +
  748.33 +// CONSTANTS
  748.34 +
  748.35 +// FORWARD DECLARATIONS
  748.36 +class CUri8;
  748.37 +class CSIPToHeader;
  748.38 +class CSIPFromHeader;
  748.39 +class CSIPContactHeader;
  748.40 +class CSIPEventHeader;
  748.41 +class CSIPMessageElements;
  748.42 +class MSIPRegistrationContext;
  748.43 +class CSIPConnection;
  748.44 +
  748.45 +// CLASS DECLARATION
  748.46 +
  748.47 +/** 
  748.48 +* @publishedAll
  748.49 +* @released
  748.50 +*
  748.51 +* Class for managing SIP SUBSCRIBE dialog associations.
  748.52 +* It provides services for creating, using and terminating SIP SUBSCRIBE
  748.53 +* dialog associations. The client can have multiple SUBSRIBE dialog 
  748.54 +* associations per same SIP dialog.
  748.55 +* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
  748.56 +* local and remote tags; "Event" header semantics are client's responsibility
  748.57 +* 
  748.58 +* @lib sipclient.lib
  748.59 +*/
  748.60 +class CSIPSubscribeDialogAssoc : public CSIPDialogAssocBase    
  748.61 +	{
  748.62 +	public: // Constructors and destructor
  748.63 +		/**
  748.64 +		* Two-phased constructor.
  748.65 +		* Should be used if response to the SIP request to be sent
  748.66 +		* will create a SIP dialog association.
  748.67 +		* @pre aEvent != 0
  748.68 +		* @param aDialog a dialog to be associated with
  748.69 +		* @param aEvent an event to subscribe to; the ownership is transferred
  748.70 +        * @return New object; the ownership is transferred
  748.71 +        * @leave KErrArgument if aEvent == 0
  748.72 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
  748.73 +		*	object has been deleted
  748.74 +		*/
  748.75 +		IMPORT_C static CSIPSubscribeDialogAssoc*
  748.76 +			NewL(CSIPDialog& aDialog,
  748.77 +				 CSIPEventHeader* aEvent);
  748.78 +
  748.79 +		/**
  748.80 +		* Two-phased constructor.
  748.81 +		* Must be used if response to the SIP request to be sent
  748.82 +		* will create a SIP dialog association.
  748.83 +		* @param aDialog a dialog to be associated with
  748.84 +		* @param aEvent an event to subscribe to; the ownership is transferred
  748.85 +        * @return New object, ownership is transferred
  748.86 +        * @leave KErrArgument if aEvent == 0
  748.87 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
  748.88 +		*	object has been deleted
  748.89 +		*/
  748.90 +		IMPORT_C static CSIPSubscribeDialogAssoc*
  748.91 +			NewLC(CSIPDialog& aDialog,
  748.92 +				  CSIPEventHeader* aEvent);
  748.93 +
  748.94 +        /**
  748.95 +        * Two-phased constructor
  748.96 +        * @pre aFrom != 0 
  748.97 +		* @pre aRemoteUri != 0
  748.98 +		* @pre aEvent != 0
  748.99 +		* The user of the class must not define tags in From-header and
 748.100 +		* To-header.
 748.101 +        * @param aConnection a SIP connection to be used with
 748.102 +        *        dialog association
 748.103 +        * @param aFrom originator's address; the ownership is transfered
 748.104 +        * @param aRemoteUri a remote target URI that identifies a resource that
 748.105 +        *		 the request is addressed to.
 748.106 +		* @param aEvent an event to subscribe to; the ownership is transferred
 748.107 +        * @param aTo logical recipient's address; if not defined
 748.108 +        *        the remote target uri will be used for To-header
 748.109 +        *        construction; the ownership is transfered
 748.110 +        * @param aContact a contact to be used in dialog creation. Must be
 748.111 +        *        given only if user intends to re-direct future requests; 
 748.112 +        *        the ownership is transfered
 748.113 +        * @return New object; the ownership is transferred.
 748.114 +        * @leave KErrArgument if aFrom == 0, aRemoteUri == 0 or aEvent == 0
 748.115 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 748.116 +		*	object has been deleted
 748.117 +        */
 748.118 +        IMPORT_C static CSIPSubscribeDialogAssoc*
 748.119 +            NewL(CSIPConnection& aConnection,
 748.120 +                 CSIPFromHeader* aFrom,
 748.121 +				 CUri8* aRemoteUri,
 748.122 +				 CSIPEventHeader* aEvent,
 748.123 +                 CSIPToHeader* aTo=0,
 748.124 +                 CSIPContactHeader* aContact=0);
 748.125 +
 748.126 +        /**
 748.127 +        * Two-phased constructor
 748.128 +        * @pre aFrom != 0 
 748.129 +		* @pre aRemoteUri != 0
 748.130 +		* @pre aEvent != 0
 748.131 +		* The user of the class must not define tags in From-header and
 748.132 +		* To-header.
 748.133 +        * @param aConnection a SIP connection to be used with
 748.134 +        *        dialog association
 748.135 +        * @param aFrom originator's address; the ownership is transfered
 748.136 +        * @param aRemoteUri a remote target URI that identifies a resource that
 748.137 +        *		 the request is addressed to.
 748.138 +		* @param aEvent an event to subscribe to; the ownership is transferred
 748.139 +        * @param aTo logical recipient's address; if not defined
 748.140 +        *        the remote target uri will be used for To-header
 748.141 +        *        construction; the ownership is transfered
 748.142 +        * @param aContact a contact to be used in dialog creation. Must be
 748.143 +        *        given only if user intends to re-direct future requests; 
 748.144 +        *        the ownership is transfered
 748.145 +        * @return New object; the ownership is transferred.
 748.146 +        * @leave KErrArgument if aFrom == 0, aRemoteUri == 0 or aEvent == 0
 748.147 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 748.148 +		*	object has been deleted
 748.149 +        */
 748.150 +        IMPORT_C static CSIPSubscribeDialogAssoc*
 748.151 +            NewLC(CSIPConnection& aConnection,
 748.152 +                  CSIPFromHeader* aFrom,
 748.153 +				  CUri8* aRemoteUri,
 748.154 +				  CSIPEventHeader* aEvent,
 748.155 +                  CSIPToHeader* aTo =0,                 
 748.156 +                  CSIPContactHeader* aContact=0);
 748.157 +        
 748.158 +        /**
 748.159 +        * Two-phased constructor
 748.160 +		* @pre aRemoteUri != 0
 748.161 +		* @pre aEvent != 0
 748.162 +		* The user of the class must not define tags in From-header
 748.163 +		* and To-header.
 748.164 +        * @pre aContext.IsContextActive()==ETrue
 748.165 +        * @param aConnection a SIP connection to be used with
 748.166 +        *        dialog association 
 748.167 +        * @param aRemoteUri a remote target URI that identifies a resource that
 748.168 +        *		 the request is targeted to.
 748.169 +        * @param aContext used for selecting outbound 
 748.170 +        *        proxy and originator's address (AOR) and contact		
 748.171 +        * @param aEvent an event to subscribe to; the ownership is transferred
 748.172 +        * @param aFrom originator's address. If not defined it will be
 748.173 +        *        constructed using registration context (User's AOR);
 748.174 +        *        the ownership is transfered
 748.175 +        * @param aTo logical recipient's address; if not defined
 748.176 +        *        the remote target uri will be used for To-header
 748.177 +        *        construction; the ownership is transfered
 748.178 +        * @param aContact a contact to be used in dialog creation. Must be
 748.179 +        *        given only if user intends to re-direct future requests; 
 748.180 +        *        the ownership is transfered
 748.181 +        * @return New object; the ownership is transferred.
 748.182 +        * @leave KErrArgument if aRemoteUri == 0 or aEvent == 0
 748.183 +        * @leave KErrSIPInvalidRegistrationState
 748.184 +        *        if aContext.IsContextActive()==EFalse
 748.185 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 748.186 +		*	object has been deleted
 748.187 +        */
 748.188 +        IMPORT_C static CSIPSubscribeDialogAssoc*
 748.189 +            NewL(CSIPConnection& aConnection,                                    
 748.190 +                 CUri8* aRemoteUri,
 748.191 +                 const MSIPRegistrationContext& aContext,
 748.192 +                 CSIPEventHeader* aEvent,
 748.193 +                 CSIPFromHeader* aFrom = 0,
 748.194 +	             CSIPToHeader* aTo = 0,
 748.195 +	             CSIPContactHeader* aContact = 0);
 748.196 +
 748.197 +       /**
 748.198 +        * Two-phased constructor        
 748.199 +		* @pre aRemoteUri != 0
 748.200 +		* @pre aEvent != 0
 748.201 +		* The user of the class must not define tags in From-header
 748.202 +		* and To-header.
 748.203 +        * @pre aContext.IsContextActive()==ETrue
 748.204 +        * @param aConnection a SIP connection to be used with
 748.205 +        *        dialog association 
 748.206 +        * @param aRemoteUri a remote target URI that identifies a resource that
 748.207 +        *		 the request is targeted to.
 748.208 +        * @param aContext used for selecting outbound 
 748.209 +        *        proxy and originator's address (AOR) and contact
 748.210 +        * @param aEvent an event to subscribe to; the ownership is transferred
 748.211 +        * @param aFrom originator's address. If not defined it will be
 748.212 +        *        constructed using registration context (User's AOR);
 748.213 +        *        the ownership is transfered
 748.214 +        * @param aTo logical recipient's address; if not defined
 748.215 +        *        the remote target uri will be used for To-header
 748.216 +        *        construction; the ownership is transfered
 748.217 +        * @param aContact a contact to be used in dialog creation. Must be
 748.218 +        *        given only if user intends to re-direct future requests; 
 748.219 +        *        the ownership is transfered
 748.220 +        * @return New object; the ownership is transferred.
 748.221 +        * @leave KErrArgument if aRemoteUri == 0 or aEvent == 0
 748.222 +        * @leave KErrSIPInvalidRegistrationState
 748.223 +        *        if aContext.IsContextActive()==EFalse
 748.224 +        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 748.225 +		*	object has been deleted
 748.226 +        */
 748.227 +        IMPORT_C static CSIPSubscribeDialogAssoc*
 748.228 +            NewLC(CSIPConnection& aConnection,                                    
 748.229 +                  CUri8* aRemoteUri,
 748.230 +                  const MSIPRegistrationContext& aContext,
 748.231 +                  CSIPEventHeader* aEvent,
 748.232 +                  CSIPFromHeader* aFrom = 0,
 748.233 +	              CSIPToHeader* aTo = 0,
 748.234 +	              CSIPContactHeader* aContact = 0);
 748.235 +
 748.236 +		/**
 748.237 +		* Destructor
 748.238 +		*/
 748.239 +		IMPORT_C ~CSIPSubscribeDialogAssoc();
 748.240 +
 748.241 +	public: //New functions
 748.242 +		/**
 748.243 +		* Creates SUBSCRIBE and sends it to the remote target.		
 748.244 +		* 101-199 or 2xx response to SUBSCRIBE will create a dialog association
 748.245 +		* in case of the first SUBSCRIBE request within this dialog.
 748.246 +		* Client must not provide Event-header in the optional message headers.
 748.247 +        *
 748.248 +		* @pre Dialog().Connection().State()==EActive
 748.249 +		* @pre Dialog().State()==CSIPDialog::EInit ||
 748.250 +		*      Dialog().State()==CSIPDialog::EConfirmed
 748.251 +		* @param aElements optional SIP message headers and body. Ownership is
 748.252 +        *   transferred.
 748.253 +		* @param aRefresh if set the transaction will be refreshed at given
 748.254 +		*                 interval. Interval must be defined by including
 748.255 +		*                 Expires-header. Ownership is transferred.
 748.256 +		* @return SUBSCRIBE SIP transaction. Ownership is transferred.
 748.257 +		* @leave KErrSIPInvalidDialogState if Dialog().State() is incorrect
 748.258 +		* @capability NetworkServices
 748.259 +		*/
 748.260 +		IMPORT_C CSIPClientTransaction*
 748.261 +            SendSubscribeL(CSIPMessageElements* aElements=0,
 748.262 +						   CSIPRefresh* aRefresh=0);
 748.263 +
 748.264 +		/**
 748.265 +        * Updates the subscription. Note that update can be done when 2xx
 748.266 +        * response is received to the initial SUBSCRIBE or to update.
 748.267 +        * Client must not provide Event-header in the optional message headers.
 748.268 +        * @pre aElements != 0
 748.269 + 		* @pre Dialog().Connection().State()==EActive
 748.270 +		*      Dialog().State()==CSIPDialog::EConfirmed       
 748.271 +        * @param aElements contains user SIP headers and content; the ownership
 748.272 +        *		 is transferred
 748.273 +        * @return SUBSCRIBE SIP client transaction; the ownership is transferred
 748.274 +        * @leave KErrArgument if aElements == 0 or aElements contain
 748.275 +        *	Event-header
 748.276 +        * @leave KErrSIPInvalidDialogState if Dialog().State() is incorrect
 748.277 +        * @capability NetworkServices
 748.278 +        */            			   
 748.279 +        IMPORT_C CSIPClientTransaction* UpdateL(CSIPMessageElements* aElements);
 748.280 +        
 748.281 +		/**
 748.282 +		* Creates (un)SUBSCRIBE and sends it to the remote target.
 748.283 +		* Possible associated refresh will be terminated as well.
 748.284 +		* Client must not provide Event-header in the optional message headers.
 748.285 +		* @pre Dialog().Connection().State()==EActive
 748.286 +		* @pre Dialog().State()==CSIPDialog::EConfirmed
 748.287 +		* @param aElements optional SIP message headers and body. Ownership is
 748.288 +        *   transferred.
 748.289 +		* @return SUBSCRIBE SIP transaction. Ownership is transferred.
 748.290 +		* @leave KErrSIPInvalidDialogState if Dialog().State() is incorrect
 748.291 +		* @capability NetworkServices
 748.292 +		*/
 748.293 +		IMPORT_C CSIPClientTransaction*
 748.294 +            SendUnsubscribeL(CSIPMessageElements* aElements=0);
 748.295 +
 748.296 +		/**
 748.297 +		* Gets associated refresh in case the user has requested
 748.298 +		* the refresh of the SIP subscription.
 748.299 +		* Note that refreshed SUBSCRIBE dialog association cannot be
 748.300 +		* terminated nor updated using the returned object.
 748.301 +		* @return Associated refresh or 0 pointer if the user has not requested
 748.302 +        *   a refresh. Ownership is not transferred.
 748.303 +		*/
 748.304 +		IMPORT_C const CSIPRefresh* SIPRefresh() const;
 748.305 +
 748.306 +		/**
 748.307 +		* Gets an event to which the subscription is done
 748.308 +		* @return an event
 748.309 +		*/
 748.310 +		IMPORT_C const CSIPEventHeader& Event() const;    
 748.311 +
 748.312 +	public: // New functions, for internal use
 748.313 +        
 748.314 +        /**
 748.315 +        * @internalComponent
 748.316 +        */        
 748.317 +        CSIPRefresh* FindRefresh(TUint32 aRefreshId);
 748.318 +        
 748.319 +        static CSIPSubscribeDialogAssoc* NewLC(CSIPConnection& aConnection,
 748.320 +								CUri8* aRemoteUri,
 748.321 +								CSIPEventHeader* aEvent,
 748.322 +                                CSIPFromHeader* aFrom,
 748.323 +                                CSIPToHeader* aTo,
 748.324 +			                    CSIPContactHeader* aContact,
 748.325 +			                    const MSIPRegistrationContext* aContext);
 748.326 +
 748.327 +        void ConnectionLost();
 748.328 +
 748.329 +        CSIPClientTransaction*
 748.330 +            DoSendSubscribeL(CSIPMessageElements* aElements,
 748.331 +                             CSIPRefresh* aRefresh,
 748.332 +                             TBool aWithinDialog);        
 748.333 +
 748.334 +        CSIPClientTransaction* 
 748.335 +            DoSendUnsubscribeL(CSIPMessageElements* aElements);
 748.336 +
 748.337 +        /**
 748.338 +        * @internalComponent
 748.339 +        */            
 748.340 +        void DeletingRefresh(CSIPRefresh& aRefresh, TUint32 aRefreshId);
 748.341 +
 748.342 + 	private: // Constructors
 748.343 +        CSIPSubscribeDialogAssoc();
 748.344 +
 748.345 +    private: // Data
 748.346 +        //If the subscription is refreshed, this is the used CSIPRefresh
 748.347 +        //instance, otherwise this is NULL. CSIPSubscribeDialogAssoc owns this.
 748.348 +        CSIPRefresh* iRefresh;
 748.349 +
 748.350 +        CSIPEventHeader* iEvent;
 748.351 +
 748.352 +	private: // For testing purposes
 748.353 +        UNIT_TEST(CSIP_Test)
 748.354 +        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 748.355 +	};
 748.356 +
 748.357 +#endif
   749.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   749.2 +++ b/epoc32/include/mw/sipsubscriptionstateheader.h	Wed Mar 31 12:27:01 2010 +0100
   749.3 @@ -0,0 +1,191 @@
   749.4 +/*
   749.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   749.6 +* All rights reserved.
   749.7 +* This component and the accompanying materials are made available
   749.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   749.9 +* which accompanies this distribution, and is available
  749.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  749.11 +*
  749.12 +* Initial Contributors:
  749.13 +* Nokia Corporation - initial contribution.
  749.14 +*
  749.15 +* Contributors:
  749.16 +*
  749.17 +* Description:
  749.18 +* Name        : sipsubscriptionstateheader.h
  749.19 +* Part of     : SIP Codec
  749.20 +* Interface   : SDK API, SIP Codec API
  749.21 +* Version     : SIP/4.0 
  749.22 +*
  749.23 +*/
  749.24 +
  749.25 +
  749.26 +
  749.27 +
  749.28 +#ifndef CSIPSUBSCRIPTIONSTATEHEADER_H
  749.29 +#define CSIPSUBSCRIPTIONSTATEHEADER_H
  749.30 +
  749.31 +//  INCLUDES
  749.32 +#include "sipparameterheaderbase.h"
  749.33 +#include "_sipcodecdefs.h"
  749.34 +
  749.35 +// FORWARD DECLARATIONS
  749.36 +class CSIPSubscriptionStateHeaderParams;
  749.37 +
  749.38 +// CLASS DECLARATION
  749.39 +/**
  749.40 +* @publishedAll
  749.41 +* @released
  749.42 +*
  749.43 +* Class provides functions for setting and getting SIP "Subscription-State"
  749.44 +* header fields.
  749.45 +*
  749.46 +*  @lib sipcodec.lib
  749.47 +*/
  749.48 +class CSIPSubscriptionStateHeader : public CSIPParameterHeaderBase
  749.49 +	{
  749.50 +	public:	// Constructors and destructor
  749.51 +
  749.52 +		/**
  749.53 +		* Constructs a CSIPSubscriptionStateHeader from textual representation 
  749.54 +		* of the header's value part.
  749.55 +		* @param aValue a value part of a "Subscription-State"-header
  749.56 +		* @return a new instance of CSIPSubscriptionStateHeader
  749.57 +		*/
  749.58 +		IMPORT_C static CSIPSubscriptionStateHeader* DecodeL(const TDesC8& aValue);
  749.59 +
  749.60 +		/**
  749.61 +		* Creates a new instance of CSIPSubscriptionStateHeader
  749.62 +		* @param aSubStateValue a substate-value value
  749.63 +		* @return a new instance of CSIPSubscriptionStateHeader
  749.64 +		*/
  749.65 +		IMPORT_C static CSIPSubscriptionStateHeader* 
  749.66 +			NewL(const TDesC8& aSubStateValue);
  749.67 +
  749.68 +		/**
  749.69 +		* Creates a new instance of CSIPSubscriptionStateHeader 
  749.70 +		* and puts it to CleanupStack
  749.71 +		* @param aSubStateValue a substate-value value
  749.72 +		* @return a new instance of CSIPSubscriptionStateHeader
  749.73 +		*/
  749.74 +		IMPORT_C static CSIPSubscriptionStateHeader* 
  749.75 +			NewLC(const TDesC8& aSubStateValue);
  749.76 +
  749.77 +		/**
  749.78 +		* Destructor, deletes the resources of CSIPSubscriptionStateHeader.
  749.79 +		*/
  749.80 +		IMPORT_C ~CSIPSubscriptionStateHeader();
  749.81 +
  749.82 +
  749.83 +	public: // New functions
  749.84 +	
  749.85 +		/**
  749.86 +		* Gets the substate-value parameter from the "Subscription-State" header
  749.87 +		* @return the substate-value parameter
  749.88 +		*/
  749.89 +		IMPORT_C const TDesC8& SubStateValue() const;
  749.90 +
  749.91 +		/**
  749.92 +		* Sets the substate-value parameter in the "Subscription-State" header; 
  749.93 +		* @param aSubStateValue a substate-value parameter to set
  749.94 +		*/
  749.95 +		IMPORT_C void SetSubStateValueL(const TDesC8& aSubStateValue);
  749.96 +
  749.97 +		/**
  749.98 +		* Gets the value of the "expires"-parameter
  749.99 +		* @return "expires"-parameter or KErrNotFound if not present
 749.100 +		*/
 749.101 +		IMPORT_C TInt ExpiresParameter() const;
 749.102 +
 749.103 +		/**
 749.104 +		* Sets the "expires"-parameter
 749.105 +		* @pre aExpiresParam >= 0
 749.106 +		* @param aExpiresParam a "expires"-parameter value to set
 749.107 +		*/
 749.108 +		IMPORT_C void SetExpiresParameterL(TInt aExpiresParam);
 749.109 +
 749.110 +		/**
 749.111 +		* Gets the value of the "retry-after"-parameter
 749.112 +		* @return "retry-after"-parameter or KErrNotFound if not present
 749.113 +		*/
 749.114 +		IMPORT_C TInt RetryAfterParameter() const;
 749.115 +
 749.116 +		/**
 749.117 +		* Sets the "retry-after"-parameter
 749.118 +		* @pre aRetryAfterParam >= 0
 749.119 +		* @param aRetryAfterParam a "retry-after"-parameter value to set
 749.120 +		*/
 749.121 +		IMPORT_C void SetRetryAfterParameterL(TInt aRetryAfterParam);
 749.122 +	
 749.123 +		/**
 749.124 +		* Constructs an instance of a CSIPSubscriptionStateHeader 
 749.125 +		* from a RReadStream
 749.126 +		* @param aReadStream a stream containing the value of the
 749.127 +		*        externalized object (header name not included). 
 749.128 +		* @return an instance of a CSIPSubscriptionStateHeader
 749.129 +		*/
 749.130 +		IMPORT_C static CSIPHeaderBase* 
 749.131 +			InternalizeValueL(RReadStream& aReadStream);
 749.132 +
 749.133 +
 749.134 +	public: // From CSIPHeaderBase
 749.135 +		
 749.136 +		/**
 749.137 +		* From CSIPHeaderBase CloneL
 749.138 +		*/
 749.139 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 749.140 +
 749.141 +		/**
 749.142 +		* From CSIPHeaderBase Name
 749.143 +		*/
 749.144 +		IMPORT_C RStringF Name() const;
 749.145 +
 749.146 +
 749.147 +	public: // From CSIPHeaderBase, for internal use
 749.148 +
 749.149 +        /**
 749.150 +        * @internalComponent
 749.151 +        */
 749.152 +		TPreferredPlace PreferredPlaceInMessage() const;
 749.153 +	
 749.154 +	public: // New functions, for internal use
 749.155 +
 749.156 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 749.157 +
 749.158 +	private: // From CSIPHeaderBase
 749.159 +
 749.160 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 749.161 +
 749.162 +	private: // From CSIPParameterHeaderBase
 749.163 +
 749.164 +		HBufC8* ToTextMandatoryPartLC() const;
 749.165 +		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 749.166 +		const CSIPParamContainerBase& Params() const;
 749.167 +		CSIPParamContainerBase& Params();
 749.168 +
 749.169 +	private: // Constructors
 749.170 +
 749.171 +		CSIPSubscriptionStateHeader();
 749.172 +		void ConstructL();
 749.173 +		void ConstructL(const TDesC8& aSubStateValue);
 749.174 +        void ConstructL (const CSIPSubscriptionStateHeader&
 749.175 +            aSubscriptionStateHeader);
 749.176 +	
 749.177 +	private: // New functions 
 749.178 +
 749.179 +		void DoInternalizeValueL(RReadStream& aReadStream);
 749.180 +
 749.181 +	private: // Data
 749.182 +
 749.183 +		HBufC8* iSubStateValue;
 749.184 +		CSIPSubscriptionStateHeaderParams* iParams;
 749.185 +
 749.186 +	private: // For testing purposes
 749.187 +	
 749.188 +		UNIT_TEST(CSIPSubscriptionStateHeaderTest)
 749.189 +	};
 749.190 +
 749.191 +
 749.192 +#endif // CSIPSUBSCRIPTIONSTATEHEADER_H
 749.193 +
 749.194 +// End of File
   750.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   750.2 +++ b/epoc32/include/mw/sipsupportedheader.h	Wed Mar 31 12:27:01 2010 +0100
   750.3 @@ -0,0 +1,133 @@
   750.4 +/*
   750.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   750.6 +* All rights reserved.
   750.7 +* This component and the accompanying materials are made available
   750.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   750.9 +* which accompanies this distribution, and is available
  750.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  750.11 +*
  750.12 +* Initial Contributors:
  750.13 +* Nokia Corporation - initial contribution.
  750.14 +*
  750.15 +* Contributors:
  750.16 +*
  750.17 +* Description:
  750.18 +* Name        : sipsupportedheader.h
  750.19 +* Part of     : SIP Codec
  750.20 +* Interface   : SDK API, SIP Codec API
  750.21 +* Version     : SIP/4.0 
  750.22 +*
  750.23 +*/
  750.24 +
  750.25 +
  750.26 +
  750.27 +
  750.28 +#ifndef CSIPSUPPORTEDHEADER_H
  750.29 +#define CSIPSUPPORTEDHEADER_H
  750.30 +
  750.31 +//  INCLUDES
  750.32 +#include "siptokenheaderbase.h"
  750.33 +#include "_sipcodecdefs.h"
  750.34 +
  750.35 +// CLASS DECLARATION
  750.36 +/**
  750.37 +* @publishedAll
  750.38 +* @released
  750.39 +*
  750.40 +* Class provides functions for setting and getting SIP "Supported" header.
  750.41 +*
  750.42 +* @lib sipcodec.lib
  750.43 +*/
  750.44 +class CSIPSupportedHeader : public CSIPTokenHeaderBase
  750.45 +	{
  750.46 +	public:	// Constructors and destructor
  750.47 +
  750.48 +		/**
  750.49 +		* Constructs a CSIPSupportedHeader from textual representation 
  750.50 +		* of the header's value part.
  750.51 +		* @param aValue a value part of a "Supported"-header
  750.52 +		* @return an array containing 1..n instances of CSIPSupportedHeader  
  750.53 +		*/
  750.54 +		IMPORT_C static RPointerArray<CSIPSupportedHeader> 
  750.55 +			DecodeL(const TDesC8& aValue);
  750.56 +
  750.57 +		/**
  750.58 +		* Creates a new instance of CSIPSupportedHeader
  750.59 +		* @param aValue a tag value 
  750.60 +		* @return a new instance of CSIPSupportedHeader
  750.61 +		*/
  750.62 +		IMPORT_C static CSIPSupportedHeader* NewL(RStringF aValue);
  750.63 +
  750.64 +		/**
  750.65 +		* Creates a new instance of CSIPSupportedHeader 
  750.66 +		* and puts it to CleanupStack
  750.67 +		* @param aValue a tag value   
  750.68 +		* @return a new instance of CSIPSupportedHeader
  750.69 +		*/
  750.70 +		IMPORT_C static CSIPSupportedHeader* NewLC(RStringF aValue);
  750.71 +
  750.72 +		/**
  750.73 +		* Destructor, deletes the resources of CSIPSupportedHeader.
  750.74 +		*/
  750.75 +		IMPORT_C ~CSIPSupportedHeader();
  750.76 +
  750.77 +
  750.78 +	public: // New functions
  750.79 +
  750.80 +		/**
  750.81 +		* Constructs an instance of a CSIPSupportedHeader from a RReadStream
  750.82 +		* @param aReadStream a stream containing the value of the
  750.83 +		*        externalized object (header name not included). 
  750.84 +		* @return an instance of a CSIPSupportedHeader
  750.85 +		*/
  750.86 +		IMPORT_C static CSIPHeaderBase* 
  750.87 +			InternalizeValueL(RReadStream& aReadStream);
  750.88 +
  750.89 +
  750.90 +	public: // From CSIPHeaderBase
  750.91 +		
  750.92 +		/**
  750.93 +		* From CSIPHeaderBase CloneL
  750.94 +		*/
  750.95 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  750.96 +
  750.97 +		/**
  750.98 +		* From CSIPHeaderBase Name
  750.99 +		*/
 750.100 +		IMPORT_C RStringF Name() const;
 750.101 +
 750.102 +
 750.103 +	public: // From CSIPHeaderBase, for internal use
 750.104 +
 750.105 +        /**
 750.106 +        * @internalComponent
 750.107 +        */
 750.108 +		TBool HasCompactName() const;
 750.109 +		
 750.110 +        /**
 750.111 +        * @internalComponent
 750.112 +        */		
 750.113 +		RStringF CompactName() const;
 750.114 +		
 750.115 +        /**
 750.116 +        * @internalComponent
 750.117 +        */		
 750.118 +		TPreferredPlace PreferredPlaceInMessage() const;
 750.119 +
 750.120 +	public: // New functions, for internal use
 750.121 +
 750.122 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 750.123 +
 750.124 +	private: // New functions
 750.125 +
 750.126 +		CSIPSupportedHeader();
 750.127 +		CSIPSupportedHeader(const CSIPSupportedHeader& aHeader);
 750.128 +
 750.129 +	private: // For testing purposes
 750.130 +	
 750.131 +		UNIT_TEST(CSIPSupportedHeaderTest)
 750.132 +	};
 750.133 +
 750.134 +#endif // CSIPSUPPORTEDHEADER_H
 750.135 +
 750.136 +// End of File
   751.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   751.2 +++ b/epoc32/include/mw/siptimestampheader.h	Wed Mar 31 12:27:01 2010 +0100
   751.3 @@ -0,0 +1,159 @@
   751.4 +/*
   751.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   751.6 +* All rights reserved.
   751.7 +* This component and the accompanying materials are made available
   751.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   751.9 +* which accompanies this distribution, and is available
  751.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  751.11 +*
  751.12 +* Initial Contributors:
  751.13 +* Nokia Corporation - initial contribution.
  751.14 +*
  751.15 +* Contributors:
  751.16 +*
  751.17 +* Description:
  751.18 +* Name          : siptimestampheader.h
  751.19 +* Part of       : SIP Codec
  751.20 +* Version       : SIP/4.0 
  751.21 +*
  751.22 +*/
  751.23 +
  751.24 +
  751.25 +
  751.26 +
  751.27 +#ifndef CSIPTIMESTAMPHEADER_H
  751.28 +#define CSIPTIMESTAMPHEADER_H
  751.29 +
  751.30 +//  INCLUDES
  751.31 +#include "sipheaderbase.h"
  751.32 +#include "_sipcodecdefs.h"
  751.33 +
  751.34 +// CLASS DECLARATION
  751.35 +/**
  751.36 +* @publishedAll
  751.37 +* @released
  751.38 +*
  751.39 +* Class for a SIP Timestamp header.
  751.40 +*
  751.41 +* @lib sipcodec.lib
  751.42 +*/
  751.43 +class CSIPTimestampHeader : public CSIPHeaderBase
  751.44 +	{
  751.45 +	public:	// Constructors and destructor
  751.46 +
  751.47 +		/**
  751.48 +		* Constructs a CSIPTimestampHeader from textual representation 
  751.49 +		* of the header's value part.
  751.50 +		* @param aValue a value part of a "Timestamp"-header (e.g. "12 3.4")
  751.51 +		* @returns a new instance of CSIPTimestampHeader
  751.52 +		*/
  751.53 +		IMPORT_C static CSIPTimestampHeader* DecodeL(const TDesC8& aValue);
  751.54 +
  751.55 +        /**
  751.56 +		* Constructor
  751.57 +        * @param aTimestamp a timestamp value to set.
  751.58 +        * @param aDealy a delay value to set.
  751.59 +		*/
  751.60 +		IMPORT_C CSIPTimestampHeader(TReal aTimestamp);
  751.61 +
  751.62 +        /**
  751.63 +		* Destructor
  751.64 +		*/
  751.65 +		IMPORT_C ~CSIPTimestampHeader ();
  751.66 +
  751.67 +
  751.68 +	public: // New functions
  751.69 +
  751.70 +        /**
  751.71 +        * Set the timestamp from the "Timestamp" header.
  751.72 +        * @param aTimestamp a timestamp to set.
  751.73 +        */
  751.74 +        IMPORT_C void SetTimestamp(TReal aTimestamp);
  751.75 +
  751.76 +        /**
  751.77 +        * Gets the timestamp from the "Timestamp" header.
  751.78 +        * @return a timestamp value.
  751.79 +        */
  751.80 +        IMPORT_C TReal Timestamp() const;
  751.81 +
  751.82 +        /**
  751.83 +        * Check if the delay-part is present
  751.84 +        * @return a delay value.
  751.85 +        */
  751.86 +        IMPORT_C TBool HasDelay() const;
  751.87 +
  751.88 +        /**
  751.89 +        * Set the delay-part of the "Timestamp" header.
  751.90 +        * @param aDelay a delay to set.
  751.91 +        */
  751.92 +        IMPORT_C void SetDelay(TReal aDelay);
  751.93 +
  751.94 +        /**
  751.95 +        * Gets the delay-part of the "Timestamp" header, 
  751.96 +        * if delay-part is present
  751.97 +        * @return a delay value or zero if HasDelay() == EFalse
  751.98 +        */
  751.99 +        IMPORT_C TReal Delay() const;
 751.100 +
 751.101 +		/**
 751.102 +		* Constructs an instance of a CSIPTimestampHeader from a RReadStream
 751.103 +		* @param aReadStream a stream containing the value of the
 751.104 +		*	     externalized object (header name not included). 
 751.105 +		* @return an instance of a CSIPTimestampHeader
 751.106 +		*/
 751.107 +		IMPORT_C static CSIPHeaderBase* 
 751.108 +			InternalizeValueL(RReadStream& aReadStream);
 751.109 +
 751.110 +	public: // From CSIPHeaderBase
 751.111 +
 751.112 +		/**
 751.113 +		* From CSIPHeaderBase CloneL
 751.114 +		*/
 751.115 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 751.116 +		
 751.117 +		/**
 751.118 +		* From CSIPHeaderBase Name
 751.119 +		*/		
 751.120 +		IMPORT_C RStringF Name() const;
 751.121 +
 751.122 +		/**
 751.123 +		* From CSIPHeaderBase ToTextValueL
 751.124 +		*/
 751.125 +		IMPORT_C HBufC8* ToTextValueL() const;
 751.126 +
 751.127 +
 751.128 +	public: // From CSIPHeaderBase, for internal use
 751.129 +
 751.130 +        /**
 751.131 +        * @internalComponent
 751.132 +        */	
 751.133 +		TPreferredPlace PreferredPlaceInMessage() const;
 751.134 +
 751.135 +	public: // New functions, for internal use
 751.136 +
 751.137 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 751.138 +
 751.139 +	private: // From CSIPHeaderBase
 751.140 +
 751.141 +		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 751.142 +
 751.143 +	private: // New functions
 751.144 +
 751.145 +		void ParseL(const TDesC8& aValue);
 751.146 +        void DoInternalizeValueL(RReadStream& aReadStream);
 751.147 +
 751.148 +	private: // Data
 751.149 +
 751.150 +		TReal iTimestamp;
 751.151 +        TBool iHasDelay;
 751.152 +        TReal iDelay;
 751.153 +
 751.154 +	private: // For testing purposes
 751.155 +	
 751.156 +		UNIT_TEST(CSIPTimestampHeaderTest)
 751.157 +	};
 751.158 +
 751.159 +
 751.160 +#endif // end of CSIPTIMESTAMPHEADER_H
 751.161 +
 751.162 +// End of File
   752.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   752.2 +++ b/epoc32/include/mw/siptoheader.h	Wed Mar 31 12:27:01 2010 +0100
   752.3 @@ -0,0 +1,140 @@
   752.4 +/*
   752.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   752.6 +* All rights reserved.
   752.7 +* This component and the accompanying materials are made available
   752.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   752.9 +* which accompanies this distribution, and is available
  752.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  752.11 +*
  752.12 +* Initial Contributors:
  752.13 +* Nokia Corporation - initial contribution.
  752.14 +*
  752.15 +* Contributors:
  752.16 +*
  752.17 +* Description:
  752.18 +* Name        : siptoheader.h
  752.19 +* Part of     : SIP Codec
  752.20 +* Interface   : SDK API, SIP Codec API
  752.21 +* Version     : SIP/4.0 
  752.22 +*
  752.23 +*/
  752.24 +
  752.25 +
  752.26 +
  752.27 +
  752.28 +#ifndef CSIPTOHEADER_H
  752.29 +#define CSIPTOHEADER_H
  752.30 +
  752.31 +//  INCLUDES
  752.32 +#include "sipfromtoheaderbase.h"
  752.33 +#include "_sipcodecdefs.h"
  752.34 +
  752.35 +// CLASS DECLARATION
  752.36 +/**
  752.37 +* @publishedAll
  752.38 +* @released
  752.39 +*
  752.40 +* Class provides functions for setting and getting SIP "To" header fields.
  752.41 +*
  752.42 +* @lib sipcodec.lib
  752.43 +*/
  752.44 +class CSIPToHeader : public CSIPFromToHeaderBase
  752.45 +	{
  752.46 +	public:	// Constructors and destructor
  752.47 +
  752.48 +		/**
  752.49 +		* Constructs a CSIPToHeader from textual representation 
  752.50 +		* of the header's value part.
  752.51 +		* @param aValue a value part of a "To"-header (e.g. "User <user@host>")
  752.52 +		* @return a new instance of CSIPToHeader 
  752.53 +		*/
  752.54 +		IMPORT_C static CSIPToHeader* DecodeL(const TDesC8& aValue);
  752.55 +
  752.56 +		/**
  752.57 +		* Creates a new instance of CSIPToHeader
  752.58 +		* @pre aSIPAddress != 0
  752.59 +		* @param aSIPAddress a name-address, the ownership is transferred,
  752.60 +		* @return a new instance of CSIPToHeader
  752.61 +		*/
  752.62 +		IMPORT_C static CSIPToHeader* NewL(CSIPAddress* aSIPAddress);
  752.63 +
  752.64 +		/**
  752.65 +		* Creates a new instance of CSIPToHeader and puts it to CleanupStack
  752.66 +		* @pre aSIPAddress != 0
  752.67 +		* @param aSIPAddress a name-address, the ownership is transferred,
  752.68 +		* @return a new instance of CSIPToHeader
  752.69 +		*/
  752.70 +		IMPORT_C static CSIPToHeader* NewLC(CSIPAddress* aSIPAddress);
  752.71 +
  752.72 +		/**
  752.73 +		* Creates a deep-copy of a CSIPFromToHeaderBase
  752.74 +		* Note that this function can be used for creating a To-header
  752.75 +		* using an existing From-header.
  752.76 +		* @param aHeader CSIPFromToHeaderBase to be copied
  752.77 +		* @return a new instance of CSIPToHeader
  752.78 +		*/
  752.79 +
  752.80 +		IMPORT_C static CSIPToHeader* 
  752.81 +			NewL(const CSIPFromToHeaderBase& aHeader);
  752.82 +
  752.83 +		/**
  752.84 +		* Creates a deep-copy of a CSIPFromToHeaderBase and 
  752.85 +		* puts it to CleanupStack
  752.86 +		* Note that this function can be used for creating a To-header
  752.87 +		* using an existing From-header.
  752.88 +		* @param aHeader CSIPFromToHeaderBaseto to be copied
  752.89 +		* @return a new instance of CSIPToHeader
  752.90 +		*/
  752.91 +		IMPORT_C static CSIPToHeader* 
  752.92 +			NewLC(const CSIPFromToHeaderBase& aHeader);
  752.93 +
  752.94 +		/**
  752.95 +		* Destructor, deletes the resources of CSIPToHeader.
  752.96 +		*/
  752.97 +		IMPORT_C ~CSIPToHeader();
  752.98 +
  752.99 +
 752.100 +	public: // New functions
 752.101 +
 752.102 +		/**
 752.103 +		* Constructs an instance of a CSIPToHeader from a RReadStream
 752.104 +		* @param aReadStream a stream containing the value of the
 752.105 +		*        externalized object (header name not included). 
 752.106 +		* @return an instance of a CSIPToHeader
 752.107 +		*/
 752.108 +		IMPORT_C static CSIPHeaderBase* 
 752.109 +			InternalizeValueL(RReadStream& aReadStream);
 752.110 +
 752.111 +
 752.112 +	public: // From CSIPHeaderBase
 752.113 +		
 752.114 +		/**
 752.115 +		* From CSIPHeaderBase CloneL
 752.116 +		*/
 752.117 +		IMPORT_C CSIPHeaderBase* CloneL() const;
 752.118 +
 752.119 +		/**
 752.120 +		* From CSIPHeaderBase Name
 752.121 +		*/
 752.122 +		IMPORT_C RStringF Name() const;
 752.123 +
 752.124 +
 752.125 +	public: // From CSIPHeaderBase, for internal use
 752.126 +
 752.127 +        /**
 752.128 +        * @internalComponent
 752.129 +        */
 752.130 +		RStringF CompactName() const;
 752.131 +
 752.132 +	public: // New functions, for internal use
 752.133 +
 752.134 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 752.135 +
 752.136 +	private: // Constructors
 752.137 +
 752.138 +		CSIPToHeader();
 752.139 +	};
 752.140 +
 752.141 +#endif // CSIPTOHEADER_H
 752.142 +
 752.143 +// End of File
   753.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   753.2 +++ b/epoc32/include/mw/siptokenheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   753.3 @@ -0,0 +1,114 @@
   753.4 +/*
   753.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   753.6 +* All rights reserved.
   753.7 +* This component and the accompanying materials are made available
   753.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   753.9 +* which accompanies this distribution, and is available
  753.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  753.11 +*
  753.12 +* Initial Contributors:
  753.13 +* Nokia Corporation - initial contribution.
  753.14 +*
  753.15 +* Contributors:
  753.16 +*
  753.17 +* Description:
  753.18 +* Name        : siptokenheaderbase.h
  753.19 +* Part of     : SIP Codec
  753.20 +* Interface   : SDK API, SIP Codec API
  753.21 +* Version     : SIP/4.0 
  753.22 +*
  753.23 +*/
  753.24 +
  753.25 +
  753.26 +
  753.27 +
  753.28 +#ifndef CSIPTOKENHEADERBASE_H
  753.29 +#define CSIPTOKENHEADERBASE_H
  753.30 +
  753.31 +//  INCLUDES
  753.32 +#include "sipheaderbase.h"
  753.33 +#include "_sipcodecdefs.h"
  753.34 +
  753.35 +// CLASS DECLARATION
  753.36 +/**
  753.37 +* @publishedAll
  753.38 +* @released
  753.39 +*
  753.40 +* A base class for SIP headers having form "Name: token *(COMMA token)"
  753.41 +*
  753.42 +* @lib sipcodec.lib
  753.43 +*/
  753.44 +class CSIPTokenHeaderBase : public CSIPHeaderBase
  753.45 +	{
  753.46 +	public:	// Constructors and destructor
  753.47 +
  753.48 +		/**
  753.49 +		* Destructor, deletes the resources of CSIPTokenHeaderBase.
  753.50 +		*/
  753.51 +		IMPORT_C virtual ~CSIPTokenHeaderBase();
  753.52 +
  753.53 +
  753.54 +	public: // New functions
  753.55 +
  753.56 +		/**
  753.57 +		* Sets the header value as a token 
  753.58 +		* @param aValue a value to set
  753.59 +		*/
  753.60 +		IMPORT_C void SetValueL(RStringF aValue);
  753.61 +	
  753.62 +		/**
  753.63 +		* Gets the header value as a token 
  753.64 +		* @return the header value
  753.65 +		*/
  753.66 +		IMPORT_C RStringF Value() const;
  753.67 +
  753.68 +
  753.69 +	public: // From CSIPHeaderBase
  753.70 +
  753.71 +		/**
  753.72 +		* From CSIPHeaderBase ToTextValueL
  753.73 +		*/
  753.74 +		IMPORT_C HBufC8* ToTextValueL() const;
  753.75 +
  753.76 +
  753.77 +	public: // From CSIPHeaderBase, for internal use
  753.78 +
  753.79 +        /**
  753.80 +        * @internalComponent
  753.81 +        */
  753.82 +		virtual TBool MoreThanOneAllowed() const;
  753.83 +
  753.84 +	protected: // Constructors
  753.85 +
  753.86 +		CSIPTokenHeaderBase();
  753.87 +	    CSIPTokenHeaderBase(const CSIPTokenHeaderBase& aHeader);
  753.88 +		void ConstructL(const TDesC8& aValue, TBool aEmptyValueAllowed=EFalse);
  753.89 +		void ConstructL(RStringF aValue, TBool aEmptyValueAllowed=EFalse);
  753.90 +		
  753.91 +	protected: // New functions		
  753.92 +		
  753.93 +		void DoInternalizeValueL(RReadStream& aReadStream);
  753.94 +
  753.95 +	protected: // Data	
  753.96 +	
  753.97 +        /**
  753.98 +        * @internalComponent
  753.99 +        */	
 753.100 +		RStringF iValue;
 753.101 +
 753.102 +	private: // From CSIPHeaderBase
 753.103 +
 753.104 +		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 753.105 +
 753.106 +	private: // New functions
 753.107 +
 753.108 +		void SetValueL(const TDesC8& aValue);	
 753.109 +
 753.110 +	private: // For testing purposes
 753.111 +	
 753.112 +		UNIT_TEST(CSIPTokenHeaderBaseTest)
 753.113 +	};
 753.114 +
 753.115 +#endif // CSIPTOKENHEADERBASE_H
 753.116 +
 753.117 +// End of File
   754.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   754.2 +++ b/epoc32/include/mw/siptransactionbase.h	Wed Mar 31 12:27:01 2010 +0100
   754.3 @@ -0,0 +1,230 @@
   754.4 +/*
   754.5 +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   754.6 +* All rights reserved.
   754.7 +* This component and the accompanying materials are made available
   754.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   754.9 +* which accompanies this distribution, and is available
  754.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  754.11 +*
  754.12 +* Initial Contributors:
  754.13 +* Nokia Corporation - initial contribution.
  754.14 +*
  754.15 +* Contributors:
  754.16 +*
  754.17 +* Description:
  754.18 +* Name        : siptransactionbase.h
  754.19 +* Part of     : SIP Client
  754.20 +* Interface   : SDK API, SIP Client API
  754.21 +* Version     : 1.0
  754.22 +*
  754.23 +*/
  754.24 +
  754.25 +
  754.26 +
  754.27 +#ifndef CSIPTRANSACTIONBASE_H
  754.28 +#define CSIPTRANSACTIONBASE_H
  754.29 +
  754.30 +// INCLUDES
  754.31 +#include <e32base.h>
  754.32 +#include <stringpool.h>
  754.33 +#include "_sipcodecdefs.h"
  754.34 +
  754.35 +// FORWARD DECLARATIONS
  754.36 +class CSIPResponseElements;
  754.37 +class MTransactionAssociation;
  754.38 +
  754.39 +// CLASS DECLARATION
  754.40 +
  754.41 +/**
  754.42 +*  @publishedAll
  754.43 +*  @released
  754.44 +*
  754.45 +*  Base class for managing SIP transactions.
  754.46 +*  It provides services for querying transaction type and its state.
  754.47 +*
  754.48 +*  This class is an abstract class and cannot be instantiated.
  754.49 +*  @lib sipclient
  754.50 +*/
  754.51 +class CSIPTransactionBase: public CBase
  754.52 +	{
  754.53 +	public:
  754.54 +		/** SIP transaction state */
  754.55 +		enum TState
  754.56 +			{
  754.57 +			/** Trying state */
  754.58 +			ETrying,
  754.59 +			/** Calling state */
  754.60 +			ECalling,
  754.61 +			/** Proceeding state */
  754.62 +			EProceeding,
  754.63 +			/** Completed state */
  754.64 +			ECompleted,
  754.65 +			/** Confirmed state */
  754.66 +			EConfirmed,
  754.67 +			/** Terminated state */
  754.68 +			ETerminated,
  754.69 +			/** Object is being constructed and is not yet ready for use */
  754.70 +			EConstructing
  754.71 +			};
  754.72 +
  754.73 +	public: // Destructor
  754.74 +        /**
  754.75 +        * Destructor
  754.76 +        * @internalComponent       
  754.77 +		*/
  754.78 +		virtual ~CSIPTransactionBase();
  754.79 +
  754.80 +	public: // New functions
  754.81 +        /**
  754.82 +        * Gets the SIP transaction type
  754.83 +        * @return SIP transaction type
  754.84 +        */
  754.85 +		IMPORT_C RStringF Type() const;
  754.86 +
  754.87 +		/**
  754.88 +		* Gets SIP transaction state
  754.89 +		* @return SIP transaction state
  754.90 +		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  754.91 +		*	object has been deleted
  754.92 +		*/
  754.93 +		IMPORT_C CSIPTransactionBase::TState StateL();
  754.94 +
  754.95 +		/**
  754.96 +		* Checks the if the actual object
  754.97 +		* is of type CSIPClientTransaction.
  754.98 +		* @return ETrue if object is of type CSIPClientTransaction and
  754.99 +		*         EFalse otherwise
 754.100 +		*/
 754.101 +		IMPORT_C TBool IsSIPClientTransaction() const;
 754.102 +
 754.103 +		/**
 754.104 +		* Compares this object to another object also having
 754.105 +		* CSIPTransactionBase base class
 754.106 +		* The function has to be implemented in each of the sub-classes.
 754.107 +		* @param aTransaction a CSIPTransactionBase object to compare
 754.108 +		* @return ETrue if the objects are equal otherwise EFalse
 754.109 +		*/
 754.110 +        IMPORT_C TBool
 754.111 +            operator==(const CSIPTransactionBase& aTransaction) const;
 754.112 +
 754.113 +	public: // New functions, for internal use
 754.114 +        /**
 754.115 +		* Obtains the RequestId of the transaction.
 754.116 +		*
 754.117 +        * @return RequestId
 754.118 +		*/
 754.119 +        TUint32 RequestId() const;
 754.120 +
 754.121 +        /**
 754.122 +		* Clears the MTransactionAssociation. After this the object can't be
 754.123 +        * used anymore and it is expected that user will delete it soon.
 754.124 +        *
 754.125 +        * @param aAssociation Object requesting the detach
 754.126 +        * @internalComponent      
 754.127 +		*/
 754.128 +        virtual void Detach(const MTransactionAssociation& aAssociation);
 754.129 +
 754.130 +        /**
 754.131 +		* Changes the transaction state.
 754.132 +        *
 754.133 +        * @param aNextState State into which transaction moves
 754.134 +		*/
 754.135 +        void ChangeState(CSIPTransactionBase::TState aNextState);
 754.136 +
 754.137 +        /**
 754.138 +        * Determines whether this transaction has an effect on the associated
 754.139 +        * dialog's state.
 754.140 +        *
 754.141 +		* @return ETrue if transaction has an effect on the dialog's state,
 754.142 +        *   EFalse otherwise.
 754.143 +		*/
 754.144 +        TBool AffectsDialogState() const;
 754.145 +
 754.146 +        /**
 754.147 +		* Sets this transaction to affect the dialog state.
 754.148 +		*/
 754.149 +        void SetAffectsDialogState();
 754.150 +
 754.151 +        /**
 754.152 +		* Determines whether the transaction type is a target refresh request.
 754.153 +        *
 754.154 +        * @param aType Type of transaction
 754.155 +        * @return ETrue If the transaction is a target refresh request, EFalse
 754.156 +        *   otherwise.
 754.157 +		*/
 754.158 +        static TBool IsTargetRefresh(RStringF aType);
 754.159 +
 754.160 +        /**
 754.161 +		* Stores response elements. Depending on the status code, transaction
 754.162 +        * may enter another state.
 754.163 +        *
 754.164 +        * @param aElements Response elements, ownership is transferred.
 754.165 +		*/
 754.166 +        void SetResponseElements(CSIPResponseElements* aElements);
 754.167 +
 754.168 +    protected: // Constructors
 754.169 +        CSIPTransactionBase(TBool aIsClientTransaction,
 754.170 +                            TUint32 aRequestId,
 754.171 +                            MTransactionAssociation& aAssociation);
 754.172 +
 754.173 +        void ConstructL(RStringF aType);
 754.174 +
 754.175 +	protected: // New functions, for internal use
 754.176 +        /**
 754.177 +		* Checks that iAssociation is available (not NULL). If iAssociation is
 754.178 +        * NULL, it means user has deleted a resource needed by
 754.179 +        * CSIPTransactionBase, and this function leaves.
 754.180 +		*/
 754.181 +        void CheckAssociationL() const;
 754.182 +
 754.183 +        /**
 754.184 +		* Gets response elements.
 754.185 +        *
 754.186 +		* @return Response elements. Ownership isn't transferred.
 754.187 +		*/
 754.188 +        const CSIPResponseElements* ResponseElements() const;
 754.189 +
 754.190 +	protected: // Data
 754.191 +	
 754.192 +        /**
 754.193 +        * RequestId received from SIP client
 754.194 +        * @internalComponent
 754.195 +        */       
 754.196 +        TUint32 iRequestId;
 754.197 +
 754.198 +        /**
 754.199 +        * Every transaction is associated to exactly one other object:
 754.200 +        * CSIP, CSIPConnection, CSIPRegistrationBinding or CSIPDialogAssocBase
 754.201 +        * @internalComponent
 754.202 +        */        
 754.203 +        MTransactionAssociation* iAssociation;
 754.204 +
 754.205 +    private: // Data
 754.206 +		RStringF iType;
 754.207 +
 754.208 +        //ETrue is the transaction is a client transaction, EFalse otherwise
 754.209 +        TBool iIsClientTransaction;
 754.210 +
 754.211 +        //Current transaction state
 754.212 +        CSIPTransactionBase::TState iState;
 754.213 +
 754.214 +        //ETrue if the transaction has an effect on the dialog state in case
 754.215 +        //the transaction is associated with a dialog.
 754.216 +        //EFalse otherwise.
 754.217 +        TBool iAffectsDialogState;
 754.218 +
 754.219 +        //SIP response elements
 754.220 +        CSIPResponseElements* iResponseElements;
 754.221 +
 754.222 +	private: // For testing purposes
 754.223 +	    UNIT_TEST(CSIP_Test)
 754.224 +        UNIT_TEST(CSIPServerTransaction_Test)
 754.225 +        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 754.226 +        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 754.227 +        UNIT_TEST(CSIPNotifyDialogAssoc_Test)
 754.228 +        UNIT_TEST(CSIPConnection_Test)
 754.229 +
 754.230 +        __DECLARE_TEST;
 754.231 +    };
 754.232 +
 754.233 +#endif
   755.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   755.2 +++ b/epoc32/include/mw/sipunsignedintheaderbase.h	Wed Mar 31 12:27:01 2010 +0100
   755.3 @@ -0,0 +1,102 @@
   755.4 +/*
   755.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   755.6 +* All rights reserved.
   755.7 +* This component and the accompanying materials are made available
   755.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   755.9 +* which accompanies this distribution, and is available
  755.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  755.11 +*
  755.12 +* Initial Contributors:
  755.13 +* Nokia Corporation - initial contribution.
  755.14 +*
  755.15 +* Contributors:
  755.16 +*
  755.17 +* Description:
  755.18 +* Name        : sipunsignedintheaderbase.h
  755.19 +* Part of     : SIP Codec
  755.20 +* Interface   : SDK API, SIP Codec API
  755.21 +* Version     : SIP/4.0 
  755.22 +*
  755.23 +*/
  755.24 +
  755.25 +
  755.26 +
  755.27 +
  755.28 +#ifndef CSIPUNSIGNEDINTHEADERBASE_H
  755.29 +#define CSIPUNSIGNEDINTHEADERBASE_H
  755.30 +
  755.31 +//  INCLUDES
  755.32 +#include "sipheaderbase.h"
  755.33 +#include "_sipcodecdefs.h"
  755.34 +
  755.35 +
  755.36 +// CLASS DECLARATION
  755.37 +/**
  755.38 +* @publishedAll
  755.39 +* @released
  755.40 +*
  755.41 +* A base class for SIP headers having form: "Name: 1*DIGIT"
  755.42 +*
  755.43 +* @lib sipcodec.lib
  755.44 +*/
  755.45 +class CSIPUnsignedIntHeaderBase : public CSIPHeaderBase
  755.46 +	{
  755.47 +	public:	// Constructors and destructor
  755.48 +
  755.49 +		/**
  755.50 +		* Destructor, deletes the resources of CSIPUnsignedIntHeaderBase.
  755.51 +		*/
  755.52 +		IMPORT_C virtual ~CSIPUnsignedIntHeaderBase();
  755.53 +
  755.54 +
  755.55 +	public: // New functions
  755.56 +
  755.57 +		/**
  755.58 +		* Sets the header value as an unsigned integer 
  755.59 +		* @param aValue a value to set
  755.60 +		*/
  755.61 +		IMPORT_C void SetValue(TUint aValue);
  755.62 +	
  755.63 +		/**
  755.64 +		* Gets the header value as an unsigned integer 
  755.65 +		* @return the header value
  755.66 +		*/
  755.67 +		IMPORT_C TUint Value() const;
  755.68 +
  755.69 +
  755.70 +	public: // From CSIPHeaderBase
  755.71 +
  755.72 +		/**
  755.73 +		* From CSIPHeaderBase ToTextValueL
  755.74 +		*/
  755.75 +		IMPORT_C HBufC8* ToTextValueL() const;
  755.76 +
  755.77 +
  755.78 +	protected: // Constructors
  755.79 +
  755.80 +		CSIPUnsignedIntHeaderBase();
  755.81 +		CSIPUnsignedIntHeaderBase(TUint aValue);
  755.82 +
  755.83 +	protected: // New functions
  755.84 +
  755.85 +		void ParseL(const TDesC8& aValue, TInt aErrorIfParsingFails);
  755.86 +		void DoInternalizeValueL(RReadStream& aReadStream);
  755.87 +
  755.88 +	protected: // From CSIPHeaderBase
  755.89 +
  755.90 +        /**
  755.91 +        * @internalComponent
  755.92 +        */
  755.93 +		void ExternalizeValueL (RWriteStream& aWriteStream) const;
  755.94 +
  755.95 +	protected: // Data
  755.96 +
  755.97 +        /**
  755.98 +        * @internalComponent
  755.99 +        */	
 755.100 +		TUint iValue;
 755.101 +	};
 755.102 +
 755.103 +#endif // CSIPUNSIGNEDINTHEADERBASE_H
 755.104 +
 755.105 +// End of File
   756.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   756.2 +++ b/epoc32/include/mw/sipunsupportedheader.h	Wed Mar 31 12:27:01 2010 +0100
   756.3 @@ -0,0 +1,119 @@
   756.4 +/*
   756.5 +* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   756.6 +* All rights reserved.
   756.7 +* This component and the accompanying materials are made available
   756.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   756.9 +* which accompanies this distribution, and is available
  756.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  756.11 +*
  756.12 +* Initial Contributors:
  756.13 +* Nokia Corporation - initial contribution.
  756.14 +*
  756.15 +* Contributors:
  756.16 +*
  756.17 +* Description:
  756.18 +* Name        : sipunsupportedheader.h
  756.19 +* Part of     : SIP Codec
  756.20 +* Interface   : SDK API, SIP Codec API
  756.21 +* Version     : SIP/4.0 
  756.22 +*
  756.23 +*/
  756.24 +
  756.25 +
  756.26 +
  756.27 +
  756.28 +#ifndef CSIPUNSUPPORTEDHEADER_H
  756.29 +#define CSIPUNSUPPORTEDHEADER_H
  756.30 +
  756.31 +//  INCLUDES
  756.32 +#include "siptokenheaderbase.h"
  756.33 +#include "_sipcodecdefs.h"
  756.34 +
  756.35 +// CLASS DECLARATION
  756.36 +/**
  756.37 +* @publishedAll
  756.38 +* @released
  756.39 +*
  756.40 +* Class provides functions for setting and getting SIP "Unsupported" header.
  756.41 +*
  756.42 +* @lib sipcodec.lib
  756.43 +*/
  756.44 +class CSIPUnsupportedHeader : public CSIPTokenHeaderBase
  756.45 +	{
  756.46 +	public:	// Constructors and destructor
  756.47 +
  756.48 +		/**
  756.49 +		* Constructs a CSIPUnsupportedHeader from textual representation 
  756.50 +		* of the header's value part.
  756.51 +		* @param aValue a value part of a "Unsupported"-header
  756.52 +		* @return an array containing 1..n instances of CSIPUnsupportedHeader 
  756.53 +		*/
  756.54 +		IMPORT_C static RPointerArray<CSIPUnsupportedHeader> 
  756.55 +			DecodeL(const TDesC8& aValue);
  756.56 +
  756.57 +		/**
  756.58 +		* Creates a new instance of CSIPUnsupportedHeader
  756.59 +		* @param aValue a tag value 
  756.60 +		* @return a new instance of CSIPUnsupportedHeader
  756.61 +		*/
  756.62 +		IMPORT_C static CSIPUnsupportedHeader* NewL (RStringF aValue);
  756.63 +
  756.64 +		/**
  756.65 +		* Creates a new instance of CSIPUnsupportedHeader 
  756.66 +		* and puts it to CleanupStack
  756.67 +		* @param aValue a tag value   
  756.68 +		* @return a new instance of CSIPUnsupportedHeader
  756.69 +		*/
  756.70 +		IMPORT_C static CSIPUnsupportedHeader* NewLC(RStringF aValue);
  756.71 +
  756.72 +		/**
  756.73 +		* Destructor, deletes the resources of CSIPUnsupportedHeader.
  756.74 +		*/
  756.75 +		IMPORT_C ~CSIPUnsupportedHeader();
  756.76 +
  756.77 +
  756.78 +	public: // New functions
  756.79 +
  756.80 +		/**
  756.81 +		* Constructs an instance of a CSIPUnsupportedHeader from a RReadStream
  756.82 +		* @param aReadStream a stream containing the value of the
  756.83 +		*        externalized object (header name not included). 
  756.84 +		* @return an instance of a CSIPUnsupportedHeader
  756.85 +		*/
  756.86 +		IMPORT_C static CSIPHeaderBase* 
  756.87 +			InternalizeValueL(RReadStream& aReadStream);
  756.88 +
  756.89 +
  756.90 +	public: // From CSIPHeaderBase
  756.91 +		
  756.92 +		/**
  756.93 +		* From CSIPHeaderBase CloneL
  756.94 +		*/
  756.95 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  756.96 +
  756.97 +		/**
  756.98 +		* From CSIPHeaderBase Name
  756.99 +		*/
 756.100 +		IMPORT_C RStringF Name() const;
 756.101 +
 756.102 +
 756.103 +	public: // From CSIPHeaderBase, for internal use
 756.104 +
 756.105 +        /**
 756.106 +        * @internalComponent
 756.107 +        */
 756.108 +		TPreferredPlace PreferredPlaceInMessage() const;
 756.109 +
 756.110 +	public: // New functions, for internal use
 756.111 +
 756.112 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 756.113 +
 756.114 +	private: // Constructors
 756.115 +
 756.116 +		CSIPUnsupportedHeader();
 756.117 +		CSIPUnsupportedHeader(const CSIPUnsupportedHeader& aHeader);
 756.118 +	};
 756.119 +
 756.120 +#endif // CSIPUNSUPPORTEDHEADER_H
 756.121 +
 756.122 +// End of File
   757.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   757.2 +++ b/epoc32/include/mw/sipwwwauthenticateheader.h	Wed Mar 31 12:27:01 2010 +0100
   757.3 @@ -0,0 +1,99 @@
   757.4 +/*
   757.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   757.6 +* All rights reserved.
   757.7 +* This component and the accompanying materials are made available
   757.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   757.9 +* which accompanies this distribution, and is available
  757.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  757.11 +*
  757.12 +* Initial Contributors:
  757.13 +* Nokia Corporation - initial contribution.
  757.14 +*
  757.15 +* Contributors:
  757.16 +*
  757.17 +* Description:
  757.18 +* Name          : sipwwwauthenticateheader.h
  757.19 +* Part of       : SIP Codec
  757.20 +* Version       : SIP/5.0 
  757.21 +*
  757.22 +*/
  757.23 +
  757.24 +
  757.25 +
  757.26 +#ifndef CSIPWWWAUTHENTICATEHEADER_H
  757.27 +#define CSIPWWWAUTHENTICATEHEADER_H
  757.28 +
  757.29 +//  INCLUDES
  757.30 +#include "sipauthenticateheaderbase.h"
  757.31 +#include "_sipcodecdefs.h"
  757.32 +
  757.33 +// CLASS DECLARATION
  757.34 +/**
  757.35 +* @publishedAll
  757.36 +* @released
  757.37 +*
  757.38 +* Class for SIP WWW-Authenticate-header manipulation.
  757.39 +*
  757.40 +* @lib sipcodec.lib
  757.41 +*/
  757.42 +class CSIPWWWAuthenticateHeader : public CSIPAuthenticateHeaderBase
  757.43 +	{
  757.44 +	public:	// Constructors and destructor
  757.45 +
  757.46 +		/**
  757.47 +		* Constructs a CSIPWWWAuthenticateHeader from textual representation
  757.48 +		* of the header's value part.
  757.49 +		* @param aValue a value part of a "WWW-Authenticate"-header 
  757.50 +		* @return a new instance of CSIPWWWAuthenticateHeader
  757.51 +		*/
  757.52 +		IMPORT_C static CSIPWWWAuthenticateHeader* 
  757.53 +			DecodeL(const TDesC8& aValue);
  757.54 +
  757.55 +		/**
  757.56 +		* Creates a new instance of CSIPWWWAuthenticateHeader
  757.57 +		* @return a new instance of CSIPWWWAuthenticateHeader
  757.58 +		*/
  757.59 +		IMPORT_C static CSIPWWWAuthenticateHeader* 
  757.60 +			NewL(RStringF aAuthScheme);
  757.61 +
  757.62 +		/**
  757.63 +		* Creates a new instance of CSIPWWWAuthenticateHeader
  757.64 +		* @return a new instance of CSIPWWWAuthenticateHeader
  757.65 +		*/
  757.66 +		IMPORT_C static CSIPWWWAuthenticateHeader* 
  757.67 +			NewLC(RStringF aAuthScheme);
  757.68 +
  757.69 +		/**
  757.70 +		* Destructor
  757.71 +		*/
  757.72 +		IMPORT_C ~CSIPWWWAuthenticateHeader();
  757.73 +
  757.74 +	public: // From CSIPHeaderBase
  757.75 +
  757.76 +		/**
  757.77 +		* From CSIPHeaderBase CloneL
  757.78 +		*/
  757.79 +		IMPORT_C CSIPHeaderBase* CloneL() const;
  757.80 +		
  757.81 +		/**
  757.82 +		* From CSIPHeaderBase Name
  757.83 +		*/		
  757.84 +		IMPORT_C RStringF Name() const;
  757.85 +
  757.86 +	public: // New functions, for internal use
  757.87 +
  757.88 +		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
  757.89 +		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  757.90 +
  757.91 +	private: // Constructors
  757.92 +
  757.93 +		CSIPWWWAuthenticateHeader();
  757.94 +	
  757.95 +    private: // For testing purposes
  757.96 +	
  757.97 +		UNIT_TEST(CSIPWWWAuthenticateHeaderTest)
  757.98 +	};
  757.99 +
 757.100 +#endif // CSIPWWWAUTHENTICATEHEADER_H
 757.101 +
 757.102 +// End of File
   758.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   758.2 +++ b/epoc32/include/mw/spriteanimation.h	Wed Mar 31 12:27:01 2010 +0100
   758.3 @@ -0,0 +1,109 @@
   758.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   758.5 +// All rights reserved.
   758.6 +// This component and the accompanying materials are made available
   758.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   758.8 +// which accompanies this distribution, and is available
   758.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  758.10 +//
  758.11 +// Initial Contributors:
  758.12 +// Nokia Corporation - initial contribution.
  758.13 +//
  758.14 +// Contributors:
  758.15 +//
  758.16 +// Description:
  758.17 +//
  758.18 +
  758.19 +#ifndef __SPRITEANIMATION_H__
  758.20 +#define __SPRITEANIMATION_H__
  758.21 +
  758.22 +#include <animation.h>
  758.23 +
  758.24 +#include <e32base.h>
  758.25 +#include <w32std.h>
  758.26 +
  758.27 +#include <animationconfig.h>
  758.28 +#include <spriteanimationclient.h>
  758.29 +
  758.30 +class CAnimationDataProvider;
  758.31 +class CCoeControl;
  758.32 +class CSpriteAnimationExt;
  758.33 +
  758.34 +/**
  758.35 +Implementation of CAnimation for sprite based animations.
  758.36 +
  758.37 +A sprite animation displays the image using a sprite, which is a server side
  758.38 +graphic object.  This is likely to be more efficient than a basic animation,
  758.39 +and requires slightly less work in the client application.  However, it also
  758.40 +provides less control over the actual rendering of the image.
  758.41 +
  758.42 +A sprite animation must be associated with an RWindow.  However, no redraw
  758.43 +events will be generated for it by the animation, and the client application
  758.44 +does not need to take any action once the animation has started.  Holding the
  758.45 +animation when the sprite is not visible is handled automatically on the server
  758.46 +side.
  758.47 +
  758.48 +@see CAnimationDataProvider
  758.49 +@publishedAll
  758.50 +@released
  758.51 +*/
  758.52 +class CSpriteAnimation : public CAnimation, public MAnimationDataProviderObserver
  758.53 +	{
  758.54 +public:
  758.55 +	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWsSession, RWindow& aWindow, MAnimationObserver* aObserver = 0);
  758.56 +	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWsSession, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver = 0);
  758.57 +	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver = NULL, const CCoeControl* aHost = NULL);
  758.58 +	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, const TDesC8& aDataType, MAnimationObserver* aObserver = NULL, const CCoeControl* aHost = NULL);
  758.59 +	IMPORT_C ~CSpriteAnimation();
  758.60 +	IMPORT_C TSize Size() const;
  758.61 +
  758.62 +	/** Provides an CSpriteAnimation DataProvider interface to the client application.
  758.63 +	@return iDataProvider A CAnimationDataProvider */
  758.64 +	inline CAnimationDataProvider* DataProvider() { return iDataProvider; }
  758.65 +	// From CAnimationBase:
  758.66 +	virtual void Start(const TAnimationConfig& aConfig);
  758.67 +	virtual void Stop();
  758.68 +	virtual void Pause();
  758.69 +	virtual void Resume();
  758.70 +	virtual void Hold();
  758.71 +	virtual void Unhold();
  758.72 +	virtual void SetPosition(const TPoint& aPoint);
  758.73 +	virtual void Freeze();
  758.74 +	virtual void Unfreeze();	
  758.75 +public:
  758.76 +	IMPORT_C virtual void SetHostL(const CCoeControl* aHost);
  758.77 +		
  758.78 +protected:
  758.79 +	CSpriteAnimation();
  758.80 +	CSpriteAnimation(CAnimationDataProvider* aDataProvider, RWsSession& aWsSession);
  758.81 +	CSpriteAnimation(CAnimationDataProvider* aDataProvider, MAnimationObserver* aObserver, const CCoeControl* aHost);
  758.82 +	void ConstructL(const TPoint& aPoint, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver);
  758.83 +	virtual void CSpriteAnimation_Reserved2();
  758.84 +	void ConstructL(const TPoint& aPoint, const TDesC8& aDataType);
  758.85 +	void ConstructL();
  758.86 +private:
  758.87 +	CSpriteAnimation(const CSpriteAnimation&);	// no implementation
  758.88 +	CSpriteAnimation& operator=(const CSpriteAnimation&);			// no implementation
  758.89 +	void InitializeL();
  758.90 +	void Reset();
  758.91 +	// from MAnimationDataProviderObserver
  758.92 +	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize);
  758.93 +
  758.94 +private:
  758.95 +	enum TFlags 
  758.96 +		{
  758.97 +		EAnimationInitialized = 0x1	// Is the animation initialized?
  758.98 +		};
  758.99 +private:
 758.100 +	CSpriteAnimationExt* iSpriteAnimationExt;
 758.101 +	MAnimationObserver* iObserver;
 758.102 +//note the following data member is accessed via an inline function!
 758.103 +	CAnimationDataProvider* iDataProvider;
 758.104 +	RWsSession* iWsSession;
 758.105 +	RWsSprite* iWsSprite;
 758.106 +	RAnimDll iAnimDll;
 758.107 +	RSpriteAnimationClient* iClient;
 758.108 +	const CCoeControl* iHost;
 758.109 +	TInt iFlags;
 758.110 +	};
 758.111 +
 758.112 +#endif
   759.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   759.2 +++ b/epoc32/include/mw/swi/pkgremover.h	Wed Mar 31 12:27:01 2010 +0100
   759.3 @@ -0,0 +1,200 @@
   759.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   759.5 +// All rights reserved.
   759.6 +// This component and the accompanying materials are made available
   759.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   759.8 +// which accompanies this distribution, and is available
   759.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  759.10 +//
  759.11 +// Initial Contributors:
  759.12 +// Nokia Corporation - initial contribution.
  759.13 +//
  759.14 +// Contributors:
  759.15 +//
  759.16 +// Description:
  759.17 +// Interface class for listing/removing uninstalled packages from a removable drive
  759.18 +// 
  759.19 +//
  759.20 +
  759.21 +
  759.22 +
  759.23 +/**
  759.24 + @file 
  759.25 + @publishedAll
  759.26 + @released
  759.27 +*/
  759.28 +
  759.29 +#ifndef __PKGREMOVER_H__
  759.30 +#define __PKGREMOVER_H__
  759.31 +
  759.32 +#include <e32base.h>
  759.33 +#include <f32fsys.h>
  759.34 +#include <s32mem.h>
  759.35 +
  759.36 +namespace Swi
  759.37 +{
  759.38 +
  759.39 +class CUninstalledPackageEntry;
  759.40 +
  759.41 +
  759.42 +/**
  759.43 + * This class provides static methods for managing uninstalled native packages
  759.44 + * (SIS files) that are taking up space on removable drives.
  759.45 + *
  759.46 + * @publishedAll
  759.47 + * @released
  759.48 + */
  759.49 +
  759.50 +NONSHARABLE_CLASS(UninstalledSisPackages)
  759.51 +{
  759.52 +public:
  759.53 +
  759.54 +	/**
  759.55 +	 * Get the list of uninstalled packages on a specified removable drive. In
  759.56 +	 * this context uninstalled means 'not known by this phone'. This will list
  759.57 +	 * uninstalled PA & PP files found in the SWI Daemon's private directory, and
  759.58 +	 * will also search the sis registry files on the drive for uninstalled
  759.59 +	 * applications.
  759.60 +	 *
  759.61 +	 * @param aDrive    		Removable drive number (@see TDriveNumber)
  759.62 +	 * @param aPackageList      Array of pointers to the uninstalled packages
  759.63 +	 *							found on the specified drive (@see
  759.64 +	 *                          CUninstalledPackageEntry). This array is assumed to be empty.
  759.65 +	 *							The caller takes ownership of the elements added to the array.
  759.66 +	 * @leave					One of the system-wide error codes.
  759.67 +	 * @leave                   KErrNotRemovable If the drive is not removable or is substed
  759.68 +	 * @leave					KErrPackageFileCorrupt If an error occurs during the processing of files
  759.69 +	 * @capability              ReadDeviceData Required to access protected directories during listing operation
  759.70 +	 * @capability              ProtServ Required to access services of software installer
  759.71 +	 * @capability             	TrustedUI Required to access services of software installer
  759.72 +	 */
  759.73 +	IMPORT_C static void ListL(TDriveNumber aDrive, RPointerArray<CUninstalledPackageEntry>& aPackageList);
  759.74 +
  759.75 +	/**
  759.76 +	 * Remove the specified uninstalled package. The following restrictions apply to the files that will be removed:
  759.77 +	 * <ul>
  759.78 +	 * <li> For security reasons only files on the same drive as the package controller will be removed. Files on other drives will be orphaned.
  759.79 +	 * <li> Files belonging to other packages will not be removed.
  759.80 +	 * </ul>
  759.81 +	 *
  759.82 +	 * @param aPackage			The uninstalled package to remove (@see CUninstalledPackageEntry)
  759.83 +	 * @leave					One of the system-wide error codes.
  759.84 +	 * @leave                   KErrNotRemovable If the drive is not removable or is substed
  759.85 +	 * @leave					KErrPackageIsInstalled If the specified package is installed on the device
  759.86 +	 * @leave					KErrPackageFileCorrupt If an error occurs during the processing of files
  759.87 +	 * @capability				WriteDeviceData Required to write to protected directories during remove operation
  759.88 +	 * @capability				ProtServ Required to access services of software installer
  759.89 +	 * @capability				TrustedUI Required to access services of software installer
  759.90 +	 */
  759.91 +	IMPORT_C static void RemoveL(const CUninstalledPackageEntry& aPackage);
  759.92 +};
  759.93 +
  759.94 +
  759.95 +/**
  759.96 + * Uninstalled application entry class.
  759.97 + *
  759.98 + * This class is not externally instantiable. It is returned as a result of 
  759.99 + * querying for a list of uninstalled packages present on a removable drive. 
 759.100 + * Each object of this type represents one uninstalled package. Methods can 
 759.101 + * be called on this object to retrieve the package details such as 
 759.102 + * Package UID, Name, Vendor, Version and Type.
 759.103 + *
 759.104 + * @publishedAll
 759.105 + * @released
 759.106 + */
 759.107 +
 759.108 +NONSHARABLE_CLASS(CUninstalledPackageEntry) : public CBase
 759.109 +{
 759.110 +public:
 759.111 +	enum TPackageType
 759.112 +	{
 759.113 +	    ESaPackage,       ///< Standard Application
 759.114 +		ESpPackage,       ///< Standard Patch (augmentation)
 759.115 +		EPuPackage,       ///< Partial Upgrade
 759.116 +		EPaPackage,       ///< Preinstalled Application
 759.117 +		EPpPackage        ///< Preinstalled Patch
 759.118 +	};
 759.119 +
 759.120 +	/**
 759.121 +	 * Get the package Uid
 759.122 +	 *
 759.123 +	 * @return The Uid of this package
 759.124 +	 */
 759.125 +	IMPORT_C const TUid& Uid() const;
 759.126 +
 759.127 +	/**
 759.128 +	 * Get the package name
 759.129 +	 *
 759.130 +	 * @return The name of this package as reference to TDesC
 759.131 +	 */
 759.132 +	IMPORT_C const TDesC& Name() const;
 759.133 +
 759.134 +	/**
 759.135 +	 * Get the package unique vendor name
 759.136 +	 *
 759.137 +	 * @return The unique vendor name of this package as reference to TDesC
 759.138 +	 */
 759.139 +	IMPORT_C const TDesC& Vendor() const;
 759.140 +
 759.141 +	/**
 759.142 +	 * Get the package version
 759.143 +	 *
 759.144 +	 * @return The version number of this package
 759.145 +	 */
 759.146 +	IMPORT_C const TVersion& Version() const;
 759.147 +
 759.148 +	/**
 759.149 +	 * Get the package type
 759.150 +	 *
 759.151 +	 * @return The package type of this package
 759.152 +	 */
 759.153 +	IMPORT_C const TPackageType& PackageType() const;
 759.154 +
 759.155 +	/**
 759.156 +	* Destructor
 759.157 +	*/
 759.158 +	virtual ~CUninstalledPackageEntry();
 759.159 +
 759.160 +private:
 759.161 +	static CUninstalledPackageEntry* NewLC(const TUid& aUid, const TDesC& aPackageName,
 759.162 +		const TDesC& aVendorName, const TVersion& aVersion, const TPackageType aPackageType,
 759.163 +		const TDesC& aPackageFile, const TDesC& aAssocStubSisFile);
 759.164 +
 759.165 +private:
 759.166 +	CUninstalledPackageEntry();
 759.167 +
 759.168 +private:
 759.169 +	void ConstructL(const TUid& aUid, const TDesC& aPackageName, const TDesC& aVendorName, 
 759.170 +		const TVersion& aVersion, const TPackageType aPackageType, const TDesC& aPackageFile,
 759.171 +		const TDesC& aAssocStubSisFile);
 759.172 +
 759.173 +	const TDesC& PackageFile() const;
 759.174 +	const TDesC& AssociatedStubSisFile() const;
 759.175 +
 759.176 +private:
 759.177 +	/// The package Uid
 759.178 +	TUid iUid;
 759.179 +
 759.180 +    /// The package name
 759.181 +	HBufC* iPackageName;
 759.182 +
 759.183 +    /// The package unique vendor name
 759.184 +	HBufC* iVendorName;
 759.185 +
 759.186 +    /// The package version
 759.187 +	TVersion iVersion; 
 759.188 +
 759.189 +	/// The package type
 759.190 +	TPackageType iType;
 759.191 +
 759.192 +	// The sis/controller file name with full path
 759.193 +	HBufC* iPackageFile;
 759.194 +
 759.195 +	// The stub sis file name with full path (if the package file is a controller file)
 759.196 +	HBufC* iAssocStubSisFile;
 759.197 +private:
 759.198 +	friend class UninstalledSisPackages;
 759.199 +};
 759.200 +
 759.201 +} // namespace Swi
 759.202 +
 759.203 +#endif // __PKGREMOVER_H__
   760.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   760.2 +++ b/epoc32/include/mw/swi/pkgremovererrors.h	Wed Mar 31 12:27:01 2010 +0100
   760.3 @@ -0,0 +1,56 @@
   760.4 +// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   760.5 +// All rights reserved.
   760.6 +// This component and the accompanying materials are made available
   760.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   760.8 +// which accompanies this distribution, and is available
   760.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  760.10 +//
  760.11 +// Initial Contributors:
  760.12 +// Nokia Corporation - initial contribution.
  760.13 +//
  760.14 +// Contributors:
  760.15 +//
  760.16 +// Description:
  760.17 +// Definition of the package list/remove error codes
  760.18 +// 
  760.19 +//
  760.20 +
  760.21 +
  760.22 +
  760.23 +/**
  760.24 + @file 
  760.25 + @publishedAll
  760.26 + @released
  760.27 +*/
  760.28 +
  760.29 +#ifndef __PKGREMOVERERRORS_H__
  760.30 +#define __PKGREMOVERERRORS_H__
  760.31 +
  760.32 +#include <e32std.h>
  760.33 +
  760.34 +/**
  760.35 +*
  760.36 +* A non-removable drive was passed.
  760.37 +*
  760.38 +*/
  760.39 +const TInt KErrNotRemovable = -10280;
  760.40 +/**
  760.41 +*
  760.42 +* No uninstalled packages were found.
  760.43 +*
  760.44 +*/
  760.45 +const TInt KErrNoUninstalledPackages = -10281;
  760.46 +/**
  760.47 +*
  760.48 +* The package being attempted to remove is installed on the device.
  760.49 +*
  760.50 +*/
  760.51 +const TInt KErrPackageIsInstalled = -10282;
  760.52 +/**
  760.53 +*
  760.54 +* The package being attempted to list/remove is corrupted.
  760.55 +*
  760.56 +*/
  760.57 +const TInt KErrPackageFileCorrupt = -10283;
  760.58 +
  760.59 +#endif
   761.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   761.2 +++ b/epoc32/include/mw/telsess.h	Wed Mar 31 12:27:01 2010 +0100
   761.3 @@ -0,0 +1,314 @@
   761.4 +/**
   761.5 +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   761.6 +* All rights reserved.
   761.7 +* This component and the accompanying materials are made available
   761.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   761.9 +* which accompanies this distribution, and is available
  761.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  761.11 +*
  761.12 +* Initial Contributors:
  761.13 +* Nokia Corporation - initial contribution.
  761.14 +*
  761.15 +* Contributors:
  761.16 +*
  761.17 +* Description:
  761.18 +* Telnet Session API
  761.19 +* 
  761.20 +*
  761.21 +*/
  761.22 +
  761.23 +
  761.24 +
  761.25 +
  761.26 +
  761.27 +/**
  761.28 + @file TELSESS.H
  761.29 +*/
  761.30 +
  761.31 +#ifndef _TELSESS_H_
  761.32 +#define _TELSESS_H_
  761.33 +
  761.34 +#include <in_sock.h>
  761.35 +#include <e32std.h>
  761.36 +#include <e32cons.h>
  761.37 +#include <f32file.h>
  761.38 +
  761.39 +#define __TELNETSESSDEBUG__ // Put in Debug mode
  761.40 +
  761.41 +class CTelnetControl;
  761.42 +
  761.43 +// Used by client to retrieve RFC option state
  761.44 +// Flags for Telnet negotiated options
  761.45 +// 1 = Enabled 0 = Disabled
  761.46 +
  761.47 +/**
  761.48 +Defines the supported, RFC-defined, option status.
  761.49 +
  761.50 +@publishedAll
  761.51 +@released 
  761.52 +*/
  761.53 +typedef struct
  761.54 +    {
  761.55 +	/** If ETrue, the server is sending in binary (RFC 856). */
  761.56 +    TBool    iServerBinary; ///< RFC 856  (Server Sending in Binary)
  761.57 +	/** If ETrue, the client is sending in binary (RFC 856). */
  761.58 +    TBool    iClientBinary; ///< RFC 856  (Client Sending in Binary)
  761.59 +	/** If ETrue, the server is echoing data back to the client (RFC 857). */
  761.60 +    TBool    iEcho;         ///< RFC 857  (Server Echoing Data from Client)
  761.61 +	/** If ETrue, the client will negotiate about window size (RFC 1073). */
  761.62 +    TBool    iNAWS;         ///< RFC 1073 (Client Providing Window Size Information)
  761.63 +	/** If ETrue, the terminal speed option is enabled (RFC 1079). */
  761.64 +    TBool    iTerminalSpeed;///< RFC 1079 (Client Providing Terminal Speed Information)
  761.65 +	/** If ETrue, the client is providing terminal type information (RFC 1091). */
  761.66 +    TBool    iTerminalType; ///< RFC 1091 (Client Providing Terminal Type Information)
  761.67 +	/** If ETrue, if the server is providing status information (RFC 859). */
  761.68 +    TBool    iServerStatus; ///< RFC 859  (Server Providing Status Information)
  761.69 +	/** If ETrue, if the client is providing status information (RFC 859). */
  761.70 +    TBool    iClientStatus; ///< RFC 859  (Client Providing Status Information)
  761.71 +    }TOptionStatus;
  761.72 +
  761.73 +// Used by client to configure the Symbian Telnet
  761.74 +class TTelnetConfig
  761.75 +/**
  761.76 +* Specifies telnet session configuration information.
  761.77 +* 
  761.78 +* The client must provide a reference to an instance of this class as a parameter 
  761.79 +* to the CTelnetSession::NewL() function. 
  761.80 +* 
  761.81 +* Configuration options can be modified, when the session is in progress, using 
  761.82 +* the CTelnetSession::DoModifyConfig() function. 
  761.83 +* 
  761.84 +* Configuration option state can be obtained using the CTelnetSession::OptionStatus() 
  761.85 +* function.
  761.86 +* @publishedAll
  761.87 +* @released 
  761.88 +*/
  761.89 +    {
  761.90 + public:
  761.91 +
  761.92 +	/** Constructor. */
  761.93 +	 TTelnetConfig() {
  761.94 +		              iAllowLogout = TRUE;        // RFC 727  - Default TRUE = Server Can Logout Client
  761.95 +					  iWindowSize.x = (TInt16)80; // RFC 1073 - Default 80 x 24
  761.96 +					  iWindowSize.y = (TInt16)24;
  761.97 +					  iTermSpeed = _L8("38400");  // RFC 1079 - Default to 38400 Baud Terminal
  761.98 +					  iTermType  = _L8("dumb");   // RFC 1091 - Default to base NVT Terminal
  761.99 +					}
 761.100 +	/** Destructor. */
 761.101 +	 ~TTelnetConfig(){}
 761.102 +
 761.103 +	typedef struct
 761.104 +		/** 
 761.105 +		* Specifies the client's window size.
 761.106 +		* 
 761.107 +		* The default is 80 columns by 24 rows which constructs to x=80, y=24. 
 761.108 +		*/
 761.109 +		{
 761.110 +		/** The client window's width (number of columns). */
 761.111 +		TInt16 x;
 761.112 +		/** The client window's height (number of rows). */
 761.113 +		TInt16 y;
 761.114 +		}TWindowSize;
 761.115 +
 761.116 +	/** 
 761.117 +	* Specifies the client's window size.
 761.118 +	* 
 761.119 +	* The default is 80 columns by 24 rows. 
 761.120 +	* 
 761.121 +	* (RFC 1073 -- Set to Configure Window Size) 
 761.122 +	*/
 761.123 +	TWindowSize	iWindowSize; 
 761.124 +	
 761.125 +	/**
 761.126 +	* Specifies the speed of the telnet connection.
 761.127 +	* 
 761.128 +	* The default is "38400" (in ASCII characters). Must be set to a server-supported rate.
 761.129 +	* 
 761.130 +	* (RFC 1079 -- Set to Configure Terminal Speed) 
 761.131 +	*/
 761.132 +	TBuf8<20>	iTermSpeed;  
 761.133 +	
 761.134 +	/**
 761.135 +	* Specifies the terminal type.
 761.136 +	* 
 761.137 +	* The default is "dumb" (in ASCII characters). 
 761.138 +	* 
 761.139 +	* (RFC 1091 -- Set to Configure Terminal Type) 
 761.140 +	*/
 761.141 +	TBuf8<20>	iTermType;
 761.142 +	
 761.143 +	/**
 761.144 +	* Specifies whether the telnet server can logout the client.
 761.145 +	* 
 761.146 +	* The default, ETrue, enables the server to logout the client. If EFalse any 
 761.147 +	* logout request from the telnet server is rejected by the client.
 761.148 +	*
 761.149 +	* (RFC 727 -- Set/Clear to Enable/Disable Server Logout) 
 761.150 +	*/
 761.151 +	TBool		iAllowLogout;
 761.152 +	
 761.153 +	/**
 761.154 +	* Enables or disables telnet server echo to client.
 761.155 +	* 
 761.156 +	* The default, ETrue, enables server echo. Note that although this is normal 
 761.157 +	* telnet server behaviour, it is not a formal telnet requirement. It is therefore 
 761.158 +	* recommended that the client implement an optional local echo. 
 761.159 +	*
 761.160 +	* (RFC 857 -- Set/Clear to Enable/Disable Server Echo to client) 
 761.161 +	*/
 761.162 +	TBool		iServerEcho;
 761.163 +    };
 761.164 +
 761.165 +// Client can pass these in overloaded CTelnetSession::Write(TTelnetUserControl& aControlCode);
 761.166 +
 761.167 +/**
 761.168 +* Specifies the telnet control code to send to the server.
 761.169 +*
 761.170 +* This is done using the overloaded CTelnetSession::Write() function.
 761.171 +* @publishedAll
 761.172 +* @released 
 761.173 +*/
 761.174 +enum TTelnetUserControl 
 761.175 +    {
 761.176 +	/** Control code not supported. */
 761.177 +    ENotSupported = 0,
 761.178 +	
 761.179 +	/**
 761.180 +	* Break (the NVT 129th ASCII break code).
 761.181 +	* The default is 243. This is not a valid control in Binary mode. 
 761.182 +	*/
 761.183 +    EBrk	= 243,
 761.184 +	
 761.185 +	/**
 761.186 +	* Interupt Process.
 761.187 +	* The default is 244.
 761.188 +	*/
 761.189 +    EIp		= 244,
 761.190 +	
 761.191 +	/** 
 761.192 +	* Abort Output.
 761.193 +	* The default is 245. 
 761.194 +	*/
 761.195 +    EAo		= 245,
 761.196 +	
 761.197 +	/**
 761.198 +	Are you there?
 761.199 +	* The default is 246. 
 761.200 +	*/
 761.201 +    EAyt	= 246,
 761.202 +	
 761.203 +	/**
 761.204 +	* Erase Character. 
 761.205 +	* The default is 247. This is not a valid control in Binary mode. 
 761.206 +	*/
 761.207 +    EEc		= 247,
 761.208 +	
 761.209 +	/** 
 761.210 +	* Erase Line.
 761.211 +	* The default is 248. This is not a valid control in Binary mode. 
 761.212 +	*/
 761.213 +    EEl		= 248,
 761.214 +    };
 761.215 +
 761.216 +// Client MUST override this class
 761.217 +// Client MUST provide a pointer to an instance of this class as a parameter to CTelnetSession::NewL()
 761.218 +class MTelnetNotification
 761.219 +/**
 761.220 +* Symbian telnet notification interface.
 761.221 +* 
 761.222 +* Informs the client when an error occurs, when reads and writes have completed, 
 761.223 +* when a connection is made or closed and when configuration options change.
 761.224 +* @publishedAll
 761.225 +* @released 
 761.226 +*/
 761.227 +    {
 761.228 + public:
 761.229 +	/** 
 761.230 +	* Reports errors on the Telnet connection.
 761.231 +	*
 761.232 +	* The error code is supplied by the server. If this function is called, it is 
 761.233 +	* likely that the connection has failed. Therefore it is recommended that the 
 761.234 +	* client disconnects and resets its state.
 761.235 +	* 
 761.236 +	* @param aError	Error code from server. 
 761.237 +	 */
 761.238 +    virtual void Error(TInt aError) = 0; ///< Miscellaneous Error callback
 761.239 +	
 761.240 +	/** 
 761.241 +	* Passes the data that was received from the server to the client.
 761.242 +	* 
 761.243 +	* It is recommended that the client copies the data from this buffer, as it 
 761.244 +	* is owned by the Symbian telnet.
 761.245 +	* 
 761.246 +	* @param aBuffer	Data received from server. 
 761.247 +	*/
 761.248 +    virtual void ReadComplete(const TDesC8& aBuffer) = 0; ///< Last Read to Server completion callback
 761.249 +	
 761.250 +	/** Notifies the client that a write to the server from the client has completed. */
 761.251 +    virtual void WriteComplete() = 0; ///< Last Write to Server completion callback
 761.252 +	
 761.253 +	/** Notifies the client that the connection to the server has been closed. */
 761.254 +    virtual void ConnectionClosed() = 0; ///< Telnet Connection Closed callback
 761.255 +	
 761.256 +	/** Notifies the client that a connection to the server has been made. */
 761.257 +    virtual void Connected() = 0; ///< Telnet Connected callback
 761.258 +	
 761.259 +	/** Notifies the client that telnet configuration options have changed. */
 761.260 +    virtual void OptionsChanged() = 0;                    ///< Telnet RFC Options Changed callback
 761.261 +    };
 761.262 +
 761.263 +class CTelnetControl;
 761.264 +
 761.265 +class CTelnetSession : public CBase
 761.266 +/**
 761.267 +* The main Symbian telnet class.
 761.268 +* 
 761.269 +* Consists of a connection interface and a protocol interface. The connection 
 761.270 +* interface comprises member functions that: connect to, read from, write to 
 761.271 +* and disconnect from a telnet server.
 761.272 +* 
 761.273 +* The protocol interface includes member functions that get and set telnet configuration.
 761.274 +*
 761.275 +* @publishedAll
 761.276 +* @released 
 761.277 +*/
 761.278 +    {
 761.279 +    //public:
 761.280 +    // Data Structures
 761.281 + public:
 761.282 +    ~CTelnetSession();
 761.283 +    // Construction
 761.284 +    // Need to add max buffer size to constructor [check]
 761.285 +    IMPORT_C static CTelnetSession* NewL(const TTelnetConfig& aConfig,const MTelnetNotification* aNotifier);
 761.286 + protected:
 761.287 +    IMPORT_C void ConstructL(const TTelnetConfig& aConfig,const MTelnetNotification* aNotifier);
 761.288 +    //
 761.289 +    // Connection Interface
 761.290 +    //
 761.291 + public:
 761.292 +    IMPORT_C TInt Connect(const TInetAddr& aNetAddr); ///< Connects to aNetAddr on the standard telnet port (port 23)
 761.293 +    IMPORT_C TInt Connect(const TInetAddr& aNetAddr, TUint aPort); ///< Connects to aNetAddr on user specified port
 761.294 +    IMPORT_C TInt Connect(const TDesC& aServerName); ///< Connects to aSeverName on the standard telnet port (port 23)
 761.295 +    IMPORT_C TInt Connect(const TDesC& aServerName, TUint aPort); ///< Connects to aServerName on user specified port
 761.296 +    IMPORT_C TInt Disconnect(); ///< Disconnects current connection 
 761.297 +    IMPORT_C TInt Write(const TDesC8& aBuffer); ///< Writes a byte stream over the open telnet connection.
 761.298 +    IMPORT_C TInt Write(TTelnetUserControl& aControlCode); ///< Writes NVT code to stream. Prepends \<IAC\> code (255)
 761.299 +    IMPORT_C TInt Read(); ///< Read data received over telnet buffer.
 761.300 +    
 761.301 +	//
 761.302 +	// Protocol Interface 
 761.303 +	//
 761.304 +	IMPORT_C TInt DoForceLogout();
 761.305 +	IMPORT_C TInt DoModifyConfig(TTelnetConfig& aConfig);
 761.306 +	IMPORT_C TInt OptionStatus(TOptionStatus& aStatus);
 761.307 + private:
 761.308 +    CTelnetSession();
 761.309 +
 761.310 + private:
 761.311 +    MTelnetNotification* iNotifier;
 761.312 +    CTelnetControl* iTelnetProtocol;
 761.313 +
 761.314 +    };
 761.315 +
 761.316 +
 761.317 +#endif // _TELNETPROTOCOLAPI_H_
   762.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   762.2 +++ b/epoc32/include/mw/thttpfields.h	Wed Mar 31 12:27:01 2010 +0100
   762.3 @@ -0,0 +1,544 @@
   762.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   762.5 +// All rights reserved.
   762.6 +// This component and the accompanying materials are made available
   762.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   762.8 +// which accompanies this distribution, and is available
   762.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  762.10 +//
  762.11 +// Initial Contributors:
  762.12 +// Nokia Corporation - initial contribution.
  762.13 +//
  762.14 +// Contributors:
  762.15 +//
  762.16 +// Description:
  762.17 +// Purpose:  This file contains definitions of types THttpStatusCode,
  762.18 +// THttpParameter, THttpHeaderField, KHttpContentTypes,
  762.19 +// KHttpCharacterSetNames and KHttpCharacterSetCodes
  762.20 +// This header is a direct transcoding of [WSP] Appendix A - Assigned
  762.21 +// Numbers, which contains the following assignment tables:
  762.22 +// Table 34 : PDU Type Assignments
  762.23 +// 35 : Abort Reason Code Assignments
  762.24 +// 36 : Status Code Assignments
  762.25 +// 37 : Capability Assignments
  762.26 +// 38 : Well-Known Parameter Assignments
  762.27 +// 39 : Header Field Name Assignments
  762.28 +// 40 : Content-Type Assignments
  762.29 +// 41 : ISO-639 Language Assignments
  762.30 +// 42 : Character Set Assignments
  762.31 +// 
  762.32 +//
  762.33 +
  762.34 +#if !defined(__THTTPFIELDS_H__)
  762.35 +#define __THTTPFIELDS_H__
  762.36 +
  762.37 +//
  762.38 +// Table 34 not implemented
  762.39 +//
  762.40 +
  762.41 +
  762.42 +//
  762.43 +// Table 35 not implemented
  762.44 +//
  762.45 +
  762.46 +
  762.47 +/**
  762.48 +HTTP/1.1 Status Codes: WSP Code Assignments
  762.49 +
  762.50 +(see [WSP] Appdx A Table 36)
  762.51 +Codes from RFC-2616 added where necessary for HTTP Caching
  762.52 +@publishedAll
  762.53 +@deprecated
  762.54 +*/
  762.55 +enum THttpStatusCode
  762.56 +    {
  762.57 +    EHttpUnknown = 0, 
  762.58 +    EHttpContinue = 100, 
  762.59 +    EHttpSwitchingProtocols, 
  762.60 +	EHttpWarnStaleContent = 110, 		// From RFC-2616
  762.61 +	EHttpWarnRevalidationFailed, 		//		"
  762.62 +	EHttpWarnDisconnectedOperation, 	//		"
  762.63 +	EHttpWarnHeuristicExpiration, 		//		"
  762.64 +	EHttpWarnMiscellaneous, 			//		"
  762.65 +    EHttpOK = 200, 
  762.66 +    EHttpCreated, 
  762.67 +    EHttpAccepted, 
  762.68 +    EHttpNonAuthorativeInformation, 
  762.69 +    EHttpNoContent, 
  762.70 +    EHttpResetContent, 
  762.71 +    EHttpPartialContent, 
  762.72 +	EHttpWarnTransformationApplied, 	// From RFC-2616
  762.73 +	EHttpWarnPersistentMiscellanous, 	//		"
  762.74 +    EHttpMultipleChoices = 300, 
  762.75 +    EHttpMovedPermanently, 
  762.76 +    EHttpMovedTemporarily, 	
  762.77 +    EHttpSeeOther, 
  762.78 +    EHttpNotModified, 
  762.79 +    EHttpUseProxy,
  762.80 +	EHttpTemporaryRedirect = 307, 		// From RFC-2616
  762.81 +    EHttpBadRequest = 400, 
  762.82 +    EHttpUnauthorized, 
  762.83 +    EHttpPaymentRequired, 
  762.84 +    EHttpForbidden, 
  762.85 +    EHttpNotFound, 
  762.86 +    EHttpMethodNotAllowed, 
  762.87 +    EHttpNotAcceptable, 
  762.88 +    EHttpProxyAuthenticationRequired, 
  762.89 +    EHttpRequestTimeout, 
  762.90 +    EHttpConflict, 
  762.91 +    EHttpGone, 
  762.92 +    EHttpLengthRequired, 
  762.93 +    EHttpPreconditionFailed, 
  762.94 +    EHttpRequestEntityTooLarge, 
  762.95 +    EHttpRequestURITooLong, 
  762.96 +    EHttpUnsupportedMediaType, 
  762.97 +	EHttpRequestRangeNotSatisfiable, 	// From RFC-2616
  762.98 +	EHttpExpectationFailed, 			// From RFC-2616
  762.99 +    EHttpInternalServerError = 500, 
 762.100 +    EHttpNotImplemented, 
 762.101 +    EHttpBadGateway, 
 762.102 +    EHttpServiceUnavailable, 
 762.103 +    EHttpGatewayTimeout, 
 762.104 +    EHttpHTTPVersionNotSupported
 762.105 +	// All other codes are extension codes
 762.106 +    };
 762.107 +
 762.108 +
 762.109 +//
 762.110 +// Table 37 not implemented
 762.111 +//
 762.112 +
 762.113 +
 762.114 +/**
 762.115 +HTTP/1.1 Parameters: WSP Well-known Parameter Assignments
 762.116 +
 762.117 +(see [WSP] Appdx A Table 38)
 762.118 +@publishedAll
 762.119 +@deprecated
 762.120 +*/
 762.121 +enum THttpParameter
 762.122 +    {
 762.123 +    EHttpQ			= 0x00, 
 762.124 +	EHttpCharset	= 0x01, 
 762.125 +	EHttpLevel		= 0x02, 
 762.126 +	EHttpType		= 0x03, 
 762.127 +	EHttpName		= 0x04, 
 762.128 +	EHttpFilename	= 0x05, 
 762.129 +	EHttpDifferences = 0x06, 
 762.130 +	EHttpPadding	= 0x07
 762.131 +	};
 762.132 +
 762.133 +
 762.134 +/**
 762.135 +HTTP/1.1 Headers: WSP Field Name Assignments
 762.136 +
 762.137 +(see [WSP] Appdx A Table 39)
 762.138 +@publishedAll
 762.139 +@deprecated
 762.140 +*/
 762.141 +enum THttpHeaderField
 762.142 +    {
 762.143 +    EHttpAccept	 			= 0x00,
 762.144 +    EHttpAcceptCharset, 
 762.145 +    EHttpAcceptEncoding, 
 762.146 +    EHttpAcceptLanguage, 
 762.147 +    EHttpAcceptRanges, 
 762.148 +    EHttpAge, 
 762.149 +    EHttpAllow, 
 762.150 +    EHttpAuthorization, 
 762.151 +    EHttpCacheControl 		= 0x08,
 762.152 +    EHttpConnection, 
 762.153 +    EHttpContentBase, 
 762.154 +    EHttpContentEncoding, 
 762.155 +    EHttpContentLanguage, 
 762.156 +    EHttpContentLength, 
 762.157 +    EHttpContentLocation, 
 762.158 +    EHttpContentMD5, 
 762.159 +    EHttpContentRange 		= 0x10,
 762.160 +    EHttpContentType, 
 762.161 +    EHttpDate, 
 762.162 +    EHttpETag, 
 762.163 +    EHttpExpires, 
 762.164 +    EHttpFrom, 
 762.165 +    EHttpHost, 
 762.166 +    EHttpIfModifiedSince, 
 762.167 +    EHttpIfMatch			= 0x18, 
 762.168 +    EHttpIfNoneMatch, 
 762.169 +    EHttpIfRange, 
 762.170 +    EHttpIfUnmodifiedSince, 
 762.171 +    EHttpLocation, 
 762.172 +    EHttpLastModified, 
 762.173 +    EHttpMaxForwards, 
 762.174 +    EHttpPragma, 
 762.175 +    EHttpProxyAuthenticate = 0x20, 
 762.176 +    EHttpProxyAuthorization, 
 762.177 +    EHttpPublic, 
 762.178 +    EHttpRange, 
 762.179 +    EHttpReferer, 
 762.180 +    EHttpRetryAfter, 
 762.181 +    EHttpServer, 
 762.182 +    EHttpTransferEncoding, 
 762.183 +    EHttpUpgrade			= 0x28, 
 762.184 +    EHttpUserAgent, 
 762.185 +    EHttpVary, 
 762.186 +    EHttpVia, 
 762.187 +    EHttpWarning, 
 762.188 +    EHttpWWWAuthenticate, 
 762.189 +    EHttpContentDisposition,
 762.190 +	EHttpXWapApplicationID	= 0x2F,  // Additional Enums required for WAP1.2 Push
 762.191 +	EHttpXWapContentURI,
 762.192 +	EHttpXWapInitiatorURI,
 762.193 +	EHttpAcceptApplication,
 762.194 +	EHttpBearerIndication,
 762.195 +	EHttpPushFlag,
 762.196 +	EHttpProfile,
 762.197 +	EHttpProfileDiff,
 762.198 +	EHttpProfileWarning
 762.199 +    };
 762.200 +
 762.201 +
 762.202 +//
 762.203 +// WSP Content-Type Assignments
 762.204 +//
 762.205 +// (see [WSP] Appdx A Table 40)
 762.206 +//
 762.207 +/**
 762.208 +@publishedAll
 762.209 +@deprecated
 762.210 +*/
 762.211 +const TInt KHttpNumContentTypes = 77;	
 762.212 +
 762.213 +/**
 762.214 +@publishedAll
 762.215 +@deprecated
 762.216 +*/
 762.217 +const TInt KHttpMaxLenghtOfContentType = 42;
 762.218 +
 762.219 +/**
 762.220 +@publishedAll
 762.221 +@deprecated
 762.222 +*/
 762.223 +static const TText8* const KHttpContentTypes[] = 
 762.224 +    {
 762.225 +    _S8("*/*"),  //0x00
 762.226 +    _S8("text/*"), 
 762.227 +    _S8("text/html"), 
 762.228 +    _S8("text/plain"), 
 762.229 +    _S8("text/x-hdml"), 
 762.230 +    _S8("text/x-ttml"), 
 762.231 +    _S8("text/x-vCalendar"), 
 762.232 +    _S8("text/x-vCard"), 
 762.233 +    _S8("text/vnd.wap.wml"), // 0x08
 762.234 +    _S8("text/vnd.wap.wmlscript"),
 762.235 +    _S8("application/vnd.wap.catc"),
 762.236 +    _S8("Multipart/*"),
 762.237 +    _S8("Multipart/mixed"),
 762.238 +    _S8("Multipart/form-data"),
 762.239 +    _S8("Multipart/byteranges"),
 762.240 +    _S8("multipart/alternative"),
 762.241 +	_S8("application/*"), // 0x10
 762.242 +    _S8("application/java-vm"),
 762.243 +    _S8("application/x-www-form-urlencoded"),
 762.244 +    _S8("application/x-hdmlc"),
 762.245 +    _S8("application/vnd.wap.wmlc"),
 762.246 +    _S8("application/vnd.wap.wmlscriptc"),
 762.247 +    _S8("application/vnd.wap.wsic"),
 762.248 +    _S8("application/vnd.wap.uaprof"),
 762.249 +    _S8("application/vnd.wap.wtls-ca-certificate"), // 0x18
 762.250 +    _S8("application/vnd.wap.wtls-user-certificate"),
 762.251 +    _S8("application/x-x509-ca-cert"),
 762.252 +    _S8("application/x-x509-user-cert"),
 762.253 +    _S8("image/*"),
 762.254 +    _S8("image/gif"),
 762.255 +    _S8("image/jpeg"),
 762.256 +    _S8("image/tiff"),
 762.257 +    _S8("image/png"), // 0x20
 762.258 +    _S8("image/vnd.wap.wbmp"),
 762.259 +    _S8("application/vnd.wap.multipart.*"),
 762.260 +    _S8("application/vnd.wap.multipart.mixed"),
 762.261 +    _S8("application/vnd.wap.multipart.form-data"),
 762.262 +    _S8("application/vnd.wap.multipart.byteranges"),
 762.263 +    _S8("application/vnd.wap.multipart.alternative"),
 762.264 +    _S8("application/xml"),
 762.265 +    _S8("text/xml"), // 0x28
 762.266 +    _S8("application/vnd.wap.wbxml"),
 762.267 +	_S8("application/x-x968-cross-cert"),   //Additional C-Types in WAP 1.2
 762.268 +	_S8("application/x-x968-ca-cert"),
 762.269 +	_S8("application/x-x968-user-cert"),
 762.270 +	_S8("text/vnd.wap.si"),
 762.271 +	_S8("application/vnd.wap.sic"), 
 762.272 +	_S8("text/vnd.wap.sl"),
 762.273 +	_S8("application/vnd.wap.slc"),	//0x30
 762.274 +	_S8("text/vnd.wap.co"),
 762.275 +	_S8("application/vnd.wap.coc"),
 762.276 +	_S8("application/vnd.wap.multipart.related"),
 762.277 +	_S8("application/vnd.wap.sia"),	//0x34  or 52 in decimal
 762.278 + 	_S8("text/vnd.wap.connectivity-xml"),
 762.279 + 	_S8("application/vnd.wap.connectivity-wbxml"),
 762.280 + 	_S8("application/pkcs7-mime"),
 762.281 + 	_S8("application/vnd.wap.hashed-certificate"),
 762.282 + 	_S8("application/vnd.wap.signed-certificate"),
 762.283 + 	_S8("application/vnd.wap.cert-response"),
 762.284 + 	_S8("application/xhtml+xml"),
 762.285 + 	_S8("application/wml+xml"),
 762.286 + 	_S8("text/css"),
 762.287 + 	_S8("application/vnd.wap.mms-message"),
 762.288 + 	_S8("application/vnd.wap.rollover-certificate"),
 762.289 + 	_S8("application/vnd.wap.locc+wbxml"),
 762.290 + 	_S8("application/vnd.wap.loc+xml"),
 762.291 + 	_S8("application/vnd.syncml.dm+wbxml"),
 762.292 + 	_S8("application/vnd.syncml.dm+xml"),
 762.293 + 	_S8("application/vnd.syncml.notification"),
 762.294 + 	_S8("application/vnd.wap.xhtml+xml"),
 762.295 + 	_S8("application/vnd.wv.csp.cir"),
 762.296 + 	_S8("application/vnd.oma.dd+xml"),
 762.297 + 	_S8("application/vnd.oma.drm.message"),
 762.298 + 	_S8("application/vnd.oma.drm.content"),
 762.299 + 	_S8("application/vnd.oma.drm.rights+xml"),
 762.300 + 	_S8("application/vnd.oma.drm.rights+wbxml"),
 762.301 +  	_S8("application/vnd.oma.drm.roap-trigger+xml"),
 762.302 + 	_S8("application/vnd.oma.drm.roap-trigger+wbxml"),//0x4D	
 762.303 +    };
 762.304 +
 762.305 +
 762.306 +//
 762.307 +// Table 41. Languages 
 762.308 +//
 762.309 +/**
 762.310 +@publishedAll
 762.311 +@deprecated
 762.312 +*/
 762.313 +const TInt KHttpNumLanguages = 0x8D;
 762.314 +
 762.315 +/**
 762.316 +@publishedAll
 762.317 +@deprecated
 762.318 +*/
 762.319 +static const TText8* const KHttpLanguages[] = 
 762.320 +	{
 762.321 + 	_S8("AFAR AA"),
 762.322 +	_S8("ABKHAZIAN AB"),
 762.323 +	_S8("AFRIKAANS AF"),
 762.324 +	_S8("AMHARIC AM"),
 762.325 +	_S8("ARABIC AR"),
 762.326 +	_S8("ASSAMESE AS"),
 762.327 +	_S8("AYMARA AY"),
 762.328 +	_S8("AZERBAIJANI AZ"),
 762.329 +	_S8("BASHKIR BA"),
 762.330 +	_S8("BYELORUSSIAN BE"),
 762.331 +	_S8("BULGARIAN BG"),
 762.332 +	_S8("BIHARI BH"),
 762.333 +	_S8("BISLAMA BI"),
 762.334 +	_S8("BENGALI BANGLA  BN"),
 762.335 +	_S8("TIBETAN BO"),
 762.336 +	_S8("BRETON BR"),
 762.337 +	_S8("CATALAN CA"),
 762.338 +	_S8("CORSICAN CO"),
 762.339 +	_S8("CZECH CS"),
 762.340 +	_S8("WELSH CY"),
 762.341 +	_S8("DANISH DA"),
 762.342 +	_S8("GERMAN DE"),
 762.343 +	_S8("BHUTANI DZ"),
 762.344 +	_S8("GREEK EL"),
 762.345 +	_S8("ENGLISH EN"),
 762.346 +	_S8("ESPERANTO EO"),
 762.347 +	_S8("SPANISH ES"),
 762.348 +	_S8("ESTONIAN ET"),
 762.349 +	_S8("BASQUE EU"),
 762.350 +	_S8("PERSIAN farsi FA"),
 762.351 +	_S8("FINNISH FI"),
 762.352 +	_S8("FIJI FJ"),
 762.353 +	_S8("URDU UR"),
 762.354 +	_S8("FRENCH FR"),
 762.355 +	_S8("UZBEK UZ"),
 762.356 +	_S8("IRISH GA"),
 762.357 +	_S8("SCOTS-GAELIC GD"),
 762.358 +	_S8("GALICIAN GL"),
 762.359 +	_S8("GUARANI GN"),
 762.360 +	_S8("GUJARATI GU"),
 762.361 +	_S8("HAUSA HA"),
 762.362 +	_S8("HEBREW HE"),
 762.363 +	_S8("HINDI HI"),
 762.364 +	_S8("CROATIAN HR"),
 762.365 +	_S8("HUNGARIAN HU"),
 762.366 +	_S8("ARMENIAN HY"),
 762.367 +	_S8("VIETNAMESE VI"),
 762.368 +	_S8("INDONESIAN ID"),
 762.369 +	_S8("WOLOF WO"),
 762.370 +	_S8("XHOSA XH"),
 762.371 +	_S8("ICELANDIC IS"),
 762.372 +	_S8("ITALIAN IT"),
 762.373 +	_S8("YORUBA YO"),
 762.374 +	_S8("JAPANESE JA"),
 762.375 +	_S8("JAVANESE JV"),
 762.376 +	_S8("GEORGIAN KA"),
 762.377 +	_S8("KAZAKH KK"),
 762.378 +	_S8("ZHUANG ZA"),
 762.379 +	_S8("CAMBODIAN KM"),
 762.380 +	_S8("KANNADA KN"),
 762.381 +	_S8("KOREAN KO"),
 762.382 +	_S8("KASHMIRI KS"),
 762.383 +	_S8("KURDISH KU"),
 762.384 +	_S8("KIRGHIZ KY"),
 762.385 +	_S8("CHINESE ZH"),
 762.386 +	_S8("LINGALA LN"),
 762.387 +	_S8("LAOTHIAN LO"),
 762.388 +	_S8("LITHUANIAN LT"),
 762.389 +	_S8("LATVIAN LETTISH LV"),
 762.390 +	_S8("MALAGASY MG"),
 762.391 +	_S8("MAORI MI"),
 762.392 +	_S8("MACEDONIAN MK"),
 762.393 +	_S8("MALAYALAM ML"),
 762.394 +	_S8("MONGOLIAN MN"),
 762.395 +	_S8("MOLDAVIAN MO"),
 762.396 +	_S8("MARATHI MR"),
 762.397 +	_S8("MALAY MS"),
 762.398 +	_S8("MALTESE MT"),
 762.399 +	_S8("BURMESE MY"),
 762.400 +	_S8("UKRAINIAN UK"),
 762.401 +	_S8("NEPALI NE"),
 762.402 +	_S8("DUTCH NL"),
 762.403 +	_S8("NORWEGIAN NO"),
 762.404 +	_S8("OCCITAN OC"),
 762.405 +	_S8("AFAN OROMO OM"),
 762.406 +	_S8("ORIYA OR"),
 762.407 +	_S8("PUNJABI PA"),
 762.408 +	_S8("POLISH PL"),
 762.409 +	_S8("PASHTO PUSHTO PS"),
 762.410 +	_S8("PORTUGUESE PT"),
 762.411 +	_S8("QUECHUA QU"),
 762.412 +	_S8("ZULU ZU"),
 762.413 +	_S8("KURUNDI RN"),
 762.414 +	_S8("ROMANIAN RO"),
 762.415 +	_S8("RUSSIAN RU"),
 762.416 +	_S8("KINYARWANDA RW"),
 762.417 +	_S8("SANSKRIT SA"),
 762.418 +	_S8("SINDHI SD"),
 762.419 +	_S8("SANGHO SG"),
 762.420 +	_S8("SERBO-CROATIAN SH"),
 762.421 +	_S8("SINGHALESE SI"),
 762.422 +	_S8("SLOVAK SK"),
 762.423 +	_S8("SLOVENIAN SL"),
 762.424 +	_S8("SAMOAN SM"),
 762.425 +	_S8("SHONA SN"),
 762.426 +	_S8("SOMALI SO"),
 762.427 +	_S8("ALBANIAN SQ"),
 762.428 +	_S8("SERBIAN SR"),
 762.429 +	_S8("SISWATI SS"),
 762.430 +	_S8("SESOTHO ST"),
 762.431 +	_S8("SUNDANESE SU"),
 762.432 +	_S8("SWEDISH SV"),
 762.433 +	_S8("SWAHILI SW"),
 762.434 +	_S8("TAMIL TA"),
 762.435 +	_S8("TELUGU TE"),
 762.436 +	_S8("TAJIK TG"),
 762.437 +	_S8("THAI TH"),
 762.438 +	_S8("TIGRINYA TI"),
 762.439 +	_S8("TURKMEN TK"),
 762.440 +	_S8("TAGALOG TL"),
 762.441 +	_S8("SETSWANA TN"),
 762.442 +	_S8("TONGA TO"),
 762.443 +	_S8("TURKISH TR"),
 762.444 +	_S8("TSONGA TS"),
 762.445 +	_S8("TATAR TT"),
 762.446 +	_S8("TWI TW"),
 762.447 +	_S8("UIGUR UG"),
 762.448 +	_S8(""),
 762.449 +	_S8("NAURU NA"),
 762.450 +	_S8("FAROESE FO"),
 762.451 +	_S8("FRISIAN FY"),
 762.452 +	_S8("INTERLINGUA IA"),
 762.453 +	_S8("VOLAPUK VO"),
 762.454 +	_S8("INTERLINGUE IE"),
 762.455 +	_S8("INUPIAK IK"),
 762.456 +	_S8("YIDDISH YI"),
 762.457 +	_S8("INUKTITUT IU"),
 762.458 +	_S8("GREENLANDIC KL"),
 762.459 +	_S8("LATIN LA"),
 762.460 +	_S8("RHAETO-ROMANCE RM")
 762.461 +	};
 762.462 +
 762.463 +//
 762.464 +// WSP Character Set Assignments
 762.465 +//
 762.466 +// (see [WSP] Appdx A Table 42)
 762.467 +//
 762.468 +// The following two arrays form a paired look-up table
 762.469 +//
 762.470 +/**
 762.471 +@publishedAll
 762.472 +@deprecated
 762.473 +*/
 762.474 +const TInt KHttpNumCharacterSets = 15;
 762.475 +
 762.476 +/**
 762.477 +@publishedAll
 762.478 +@deprecated
 762.479 +*/
 762.480 +static const TText8* const KHttpCharacterSetNames[] = 
 762.481 +    {
 762.482 +    _S8("big5"),
 762.483 +    _S8("iso-10646-ucs-2"),
 762.484 +    _S8("iso-8859-1"),
 762.485 +    _S8("iso-8859-2"),
 762.486 +    _S8("iso-8859-3"),
 762.487 +    _S8("iso-8859-4"),
 762.488 +    _S8("iso-8859-5"),
 762.489 +    _S8("iso-8859-6"),
 762.490 +    _S8("iso-8859-7"),
 762.491 +    _S8("iso-8859-8"),
 762.492 +    _S8("iso-8859-9"),
 762.493 +    _S8("shift_JIS"),
 762.494 +    _S8("us-ascii"),
 762.495 +    _S8("utf-8"),
 762.496 +    _S8("gsm-default-alphabet") // (not yet assigned)
 762.497 +    };
 762.498 +    
 762.499 +/**
 762.500 +@publishedAll
 762.501 +@deprecated
 762.502 +*/
 762.503 +static const TInt KHttpCharacterSetCodes[] = 
 762.504 +    {
 762.505 +    0x07ea,	// big5
 762.506 +	0x03e8,	// iso-10646-ucs-2
 762.507 +    0x04,	// iso-8859-1
 762.508 +    0x05,	// iso-8859-2
 762.509 +    0x06,	// iso-8859-3
 762.510 +    0x07,	// iso-8859-4
 762.511 +    0x08,	// iso-8859-5
 762.512 +    0x09,	// iso-8859-6
 762.513 +    0x0a,	// iso-8859-7
 762.514 +    0x0b,	// iso-8859-8
 762.515 +    0x0c,	// iso-8859-9
 762.516 +    0x11,	// shift_JIS
 762.517 +    0x03,	// us-ascii
 762.518 +    0x6a,	// utf-8
 762.519 +    0xffff	// gsm-default-alphabet (not yet assigned)
 762.520 +    };
 762.521 +
 762.522 +
 762.523 +/**
 762.524 +Additional enumeration implementations for well known field values
 762.525 +that may be found in the Cache-Control header
 762.526 +As described in section 14.9 of RFC-2616
 762.527 +Assigned WSP encodings 
 762.528 +@publishedAll
 762.529 +@deprecated
 762.530 +*/
 762.531 +enum TCacheControlFieldValue
 762.532 +	{
 762.533 +	ECacheControlNoCache = 0x80,// "no-cache"
 762.534 +	ECacheCtrlNoStore,			// "no-store"
 762.535 +	ECacheCtrlMaxAge,			// "max-age"
 762.536 +	ECacheCtrlMaxStale,			// "max-stale"
 762.537 +	ECacheCtrlMinFresh,			// "min-fresh"
 762.538 +	ECacheCtrlOnlyIfCached,		// "only-if-cached"
 762.539 +	ECacheCtrlPublic,			// "public"
 762.540 +	ECacheCtrlPrivate,			// "private"
 762.541 +	ECacheCtrlNoTransform,		// "no-transform"
 762.542 +	ECacheCtrlMustRevalidate,	// "must-revalidate"
 762.543 +	ECacheCtrlProxyRevalidate,	// "proxy-revalidate"
 762.544 +	ECacheCtrlCacheExtension	// "cache-extension"
 762.545 +	};
 762.546 +
 762.547 +#endif // __THTTPFIELDS_H__
   763.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   763.2 +++ b/epoc32/include/mw/tmsvsystemprogress.h	Wed Mar 31 12:27:01 2010 +0100
   763.3 @@ -0,0 +1,47 @@
   763.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   763.5 +// All rights reserved.
   763.6 +// This component and the accompanying materials are made available
   763.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   763.8 +// which accompanies this distribution, and is available
   763.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  763.10 +//
  763.11 +// Initial Contributors:
  763.12 +// Nokia Corporation - initial contribution.
  763.13 +//
  763.14 +// Contributors:
  763.15 +//
  763.16 +// Description:
  763.17 +// TMSVSYSTEMPROGRES.H
  763.18 +// 
  763.19 +//
  763.20 +
  763.21 +#ifndef __TMSVSYSTEMPROGRESS_H__
  763.22 +#define __TMSVSYSTEMPROGRESS_H__
  763.23 +
  763.24 +#include <msvstd.h>
  763.25 +
  763.26 +const TUint KUIDMsgMsvSystemProgress = 0x1028308F;
  763.27 +
  763.28 +/**
  763.29 +Progress information that is defined by and understood by the system as well as client MTM's
  763.30 +
  763.31 +@publishedAll
  763.32 +@released
  763.33 +*/
  763.34 +class TMsvSystemProgress
  763.35 +	{
  763.36 +public:
  763.37 +	IMPORT_C TMsvSystemProgress();
  763.38 +	IMPORT_C TMsvSystemProgress(const TMsvSystemProgress& aSysProg);
  763.39 +	IMPORT_C TMsvSystemProgress& operator=(const TMsvSystemProgress& aSysProg);
  763.40 +	
  763.41 +public:
  763.42 +	/** the version number of class */
  763.43 +	const TInt			iVersion;
  763.44 +	/** Operation error code.*/
  763.45 +	TInt				iErrorCode; 
  763.46 +	/** the id of an entry in an operation*/
  763.47 +	TMsvId				iId;	
  763.48 +	};
  763.49 +
  763.50 +#endif // #define __TMSVSYSTEMPROGRESS_H__
   764.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   764.2 +++ b/epoc32/include/mw/tsendasclientpanic.h	Wed Mar 31 12:27:01 2010 +0100
   764.3 @@ -0,0 +1,69 @@
   764.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   764.5 +// All rights reserved.
   764.6 +// This component and the accompanying materials are made available
   764.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   764.8 +// which accompanies this distribution, and is available
   764.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  764.10 +//
  764.11 +// Initial Contributors:
  764.12 +// Nokia Corporation - initial contribution.
  764.13 +//
  764.14 +// Contributors:
  764.15 +//
  764.16 +// Description:
  764.17 +//
  764.18 +
  764.19 +#ifndef __TSENDASCLIENTPANIC_H__
  764.20 +#define __TSENDASCLIENTPANIC_H__
  764.21 +
  764.22 +/**
  764.23 +Defines the SendAs client panic codes.
  764.24 +
  764.25 +@publishedAll
  764.26 +@released
  764.27 +*/
  764.28 +enum TSendAsClientPanic
  764.29 +	{
  764.30 +	/**
  764.31 +	Indicates an invalid request was made.
  764.32 +	*/
  764.33 +	ESendAsClientPanicBadRequest				= 0,
  764.34 +
  764.35 +	/**
  764.36 +	Indicates a request was made on a session with an invalid handle.
  764.37 +	*/
  764.38 +	ESendAsClientPanicBadSubSessionHandle		= 1,
  764.39 +	
  764.40 +	/**
  764.41 +	Indicates a request was made with invalid an argument.
  764.42 +	*/
  764.43 +	ESendAsClientPanicBadRequestArgument		= 2,
  764.44 +	
  764.45 +	/**
  764.46 +	Indicates a request while the session is already in use.
  764.47 +	*/
  764.48 +	ESendAsClientPanicSubsessionInUse			= 3,
  764.49 +	
  764.50 +	/**
  764.51 +	Indicates a request relating to a message was made where no message exists.
  764.52 +	*/
  764.53 +	ESendAsClientPanicNoCurrentMessage			= 4,
  764.54 +
  764.55 +	/**
  764.56 +	Indicates a request deleting a non-existent message was made.
  764.57 +	*/
  764.58 +	ESendAsClientPanicMessageAlreadyDeleted		= 5,
  764.59 +	
  764.60 +	/**
  764.61 +	Indicates a request to send a message encountered a problem.
  764.62 +	*/
  764.63 +	ESendAsClientPanicSendingMessage			= 6,
  764.64 +
  764.65 +	/**
  764.66 +	Indicates a request to add or create an attachment encountered a problem.
  764.67 +	*/
  764.68 +	ESendAsClientPanicAddingCreatingAttachment  = 7
  764.69 +
  764.70 +	};
  764.71 +
  764.72 +#endif	//  __TSENDASCLIENTPANIC_H__
   765.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   765.2 +++ b/epoc32/include/mw/tsendasmessagetypefilter.h	Wed Mar 31 12:27:01 2010 +0100
   765.3 @@ -0,0 +1,43 @@
   765.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   765.5 +// All rights reserved.
   765.6 +// This component and the accompanying materials are made available
   765.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   765.8 +// which accompanies this distribution, and is available
   765.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  765.10 +//
  765.11 +// Initial Contributors:
  765.12 +// Nokia Corporation - initial contribution.
  765.13 +//
  765.14 +// Contributors:
  765.15 +//
  765.16 +// Description:
  765.17 +//
  765.18 +
  765.19 +#ifndef __TSENDASMESSAGETYPEFILTER_H__
  765.20 +#define __TSENDASMESSAGETYPEFILTER_H__
  765.21 +
  765.22 +
  765.23 +#include <rsendas.h>
  765.24 +
  765.25 +/**
  765.26 +This class encapsulates filter information for available message type modules
  765.27 +(MTMs) held by the SendAs session.
  765.28 +
  765.29 +@publishedAll
  765.30 +@released
  765.31 +*/
  765.32 +class TSendAsMessageTypeFilter
  765.33 +	{
  765.34 +public:
  765.35 +	IMPORT_C TSendAsMessageTypeFilter();
  765.36 +	IMPORT_C TSendAsMessageTypeFilter(TUid aMsgCap);
  765.37 +	IMPORT_C TSendAsMessageTypeFilter(TUid aMsgCap, TInt aVal, RSendAs::TSendAsConditionType aCond);
  765.38 +	IMPORT_C void Reset();
  765.39 +public:
  765.40 +	TUid iMessageCapability;
  765.41 +	TInt iValue;
  765.42 +	RSendAs::TSendAsConditionType iCondition;
  765.43 +	};
  765.44 +
  765.45 +
  765.46 +#endif	// __TSENDASMESSAGETYPEFILTER_H__
   766.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   766.2 +++ b/epoc32/include/mw/tuladdressstringtokenizer.h	Wed Mar 31 12:27:01 2010 +0100
   766.3 @@ -0,0 +1,165 @@
   766.4 +/*
   766.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   766.6 +* All rights reserved.
   766.7 +* This component and the accompanying materials are made available
   766.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   766.9 +* which accompanies this distribution, and is available
  766.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  766.11 +*
  766.12 +* Initial Contributors:
  766.13 +* Nokia Corporation - initial contribution.
  766.14 +*
  766.15 +* Contributors:
  766.16 +*
  766.17 +* Description:
  766.18 +*
  766.19 +*/
  766.20 +
  766.21 +
  766.22 +
  766.23 +#ifndef __TULADDRESSSTRINGTOKENIZER_H__
  766.24 +#define __TULADDRESSSTRINGTOKENIZER_H__
  766.25 +
  766.26 +#include <e32base.h>
  766.27 +
  766.28 +/**
  766.29 +Address String Tokenizer API offers methods for parsing phone numbers and e-mail, 
  766.30 +URL and URI addresses from the given text. The API consists of the 
  766.31 +CTulAddressStringTokenizer class.
  766.32 +
  766.33 +Usage:
  766.34 +
  766.35 +@code
  766.36 + #include <tuladdressstringtokenizer.h>
  766.37 +
  766.38 + // SFoundItem instance
  766.39 + CTulAddressStringTokenizer::SFoundItem item;
  766.40 +
  766.41 + // Some text
  766.42 + TBufC<256> strSomeText(_L("Mail to me@someplace.com or call 040 1234567. 
  766.43 + You can also tune in to audio feed at rtsp://someplace.com/somefeed.ra."));
  766.44 +	
  766.45 + // First the user has to create an instance of CTulAddressStringTokenizer by using the
  766.46 + // factory method NewL(). The method takes two parameters. The first 
  766.47 + // parameter defines the text to be searched from and the second parameter 
  766.48 + // tells what exactly is being looked for.
  766.49 + CTulAddressStringTokenizer singleSearch = CTulAddressStringTokenizer::NewL(strSomeText, 
  766.50 +                  CTulAddressStringTokenizer::EFindItemSearchMailAddressBin);
  766.51 +
  766.52 + // The passed text is parsed in construction, and found items can be fetched 
  766.53 + // by using the ItemArray() method. It returns a constant array containing 
  766.54 + // all the found items. The interface also offers helper functions for 
  766.55 + // handling the item array by itself. 
  766.56 +
  766.57 + // Get count of found items.
  766.58 + TInt count(singleSearch->ItemCount());
  766.59 +
  766.60 + // Get currently selected item (me@someplace.com) to the result1 variable.
  766.61 + singleSearch->Item(item);
  766.62 + TPtrC16 result1(strSomeText.Mid(item.iStartPos, item.iLength));
  766.63 +
  766.64 + // Deallocate memory
  766.65 + delete singleSearch;
  766.66 +
  766.67 + // Create an instance of CTulAddressStringTokenizer and look for all possible 
  766.68 + // things (cases work as binary mask).
  766.69 + CTulAddressStringTokenizer* multiSearch = CTulAddressStringTokenizer::NewL(strSomeText,
  766.70 +                  (CTulAddressStringTokenizer::EFindItemSearchPhoneNumberBin |           
  766.71 +                  CTulAddressStringTokenizer::EFindItemSearchURLBin | 
  766.72 +                  CTulAddressStringTokenizer::EFindItemSearchMailAddressBin | 
  766.73 +                  CTulAddressStringTokenizer::EFindItemSearchScheme));
  766.74 +
  766.75 + // Get count of found items.
  766.76 + TInt count2(multiSearch->ItemCount());
  766.77 +
  766.78 + // Get currently selected item to the result2 variable.
  766.79 + multiSearch->Item(item);
  766.80 +
  766.81 + // Debug print all items and their type.
  766.82 + for( TInt i=0; i<count2; i++)
  766.83 +     {
  766.84 +     TPtrC16 result2(strSomeText.Mid(item.iStartPos, item.iLength));
  766.85 +     RDebug::Print(_L("Found type %d item:"), item.iItemType);
  766.86 +     RDebug::Print(_L("%S"), &result2);
  766.87 +     multiSearch->NextItem(item);
  766.88 +     }
  766.89 +
  766.90 + // Deallocate memory
  766.91 + delete multiSearch;
  766.92 +@endcode
  766.93 +
  766.94 +@publishedAll
  766.95 +@released
  766.96 +*/
  766.97 +
  766.98 +class CTulAddressStringTokenizer : public CBase
  766.99 +    {
 766.100 +public:
 766.101 +#define TFindItemSearchCase TTokenizerSearchCase	// For source compatibility with S60 only
 766.102 +    /**
 766.103 +    Enumeration to define the search case. 
 766.104 +    Multiple enumerations can be used as binary mask.
 766.105 +    */
 766.106 +    enum TTokenizerSearchCase
 766.107 +        {
 766.108 +        // Searches phone numbers.
 766.109 +		EFindItemSearchPhoneNumberBin = 4, 
 766.110 +        // Searches mail addresses.
 766.111 +        EFindItemSearchMailAddressBin = 8,
 766.112 +        // Searches fixed start URLs ("http://", "https://", "rtsp://"), "www.", "wap." and IPv4 addresses.
 766.113 +        EFindItemSearchURLBin  = 16,
 766.114 +        // Searches for all URIs containing a scheme.
 766.115 +        EFindItemSearchScheme  = 32
 766.116 +        };
 766.117 +
 766.118 +    // Struct to contain a found item.
 766.119 +    struct SFoundItem
 766.120 +        {
 766.121 +        TInt iStartPos;	// Start position of the found item.
 766.122 +        TInt iLength;	// Length of the found item (characters).
 766.123 +        TTokenizerSearchCase iItemType;		// Search case of the found item
 766.124 +		};
 766.125 +
 766.126 +public:  // Constructors and destructor
 766.127 +    IMPORT_C static CTulAddressStringTokenizer* NewL( const TDesC& aText, TInt aSearchCases );
 766.128 +    IMPORT_C static CTulAddressStringTokenizer* NewL( const TDesC& aText,  TInt aSearchCases, TInt aMinNumbers );
 766.129 +    IMPORT_C ~CTulAddressStringTokenizer();
 766.130 +public:
 766.131 +	IMPORT_C TInt ItemCount() const;
 766.132 +    IMPORT_C TBool Item( SFoundItem& aItem ) const;
 766.133 +    IMPORT_C TBool NextItem( SFoundItem& aItem );
 766.134 +    IMPORT_C TBool PrevItem( SFoundItem& aItem );
 766.135 +    IMPORT_C const CArrayFixFlat<SFoundItem>* ItemArray() const;
 766.136 +	IMPORT_C TInt Position() const;	
 766.137 +    IMPORT_C void ResetPosition();
 766.138 +    IMPORT_C TInt DoNewSearchL( const TDesC& aText, TInt aSearchCases);
 766.139 +    IMPORT_C TInt DoNewSearchL( const TDesC& aText, TInt aSearchCases,  TInt aMinNumbers );
 766.140 +private:
 766.141 +    CTulAddressStringTokenizer();
 766.142 +    void AddItemL( TInt aStartPos, TInt aLength, TTokenizerSearchCase aType );
 766.143 +
 766.144 +    TBool SearchPhoneNumberL( const TDesC& aText );
 766.145 +    TBool SearchMailAddressL( const TDesC& aText );  
 766.146 +    TBool SearchGenericUriL( const TDesC& aText );
 766.147 +    TBool SearchUrlL( const TDesC& aText, TBool aFindFixedSchemas );
 766.148 +    TBool ParseUrlL( const TDesC& aType, const TPtrC& aTokenPtr, TInt aTextOffset );
 766.149 +
 766.150 +    static TBool IsValidEmailChar(const TChar& charac); // Login part of the e-mail address
 766.151 +    static TBool IsValidEmailHostChar(const TChar& charac); // Host part of the e-mail address
 766.152 +    static TBool IsValidPhoneNumberChar(const TChar& charac); // Phone number
 766.153 +    static TBool IsValidUrlChar( const TChar& charac); // URL
 766.154 +
 766.155 +    void ConstructL( const TDesC& aText, TInt aSearchCases, TInt aMinNumbers );
 766.156 +	void PerformSearchL( const TDesC& aText, TInt aSearchCases );
 766.157 +    
 766.158 +    CTulAddressStringTokenizer( const CTulAddressStringTokenizer& );	// Prohibit copy constructor
 766.159 +    CTulAddressStringTokenizer& operator= ( const CTulAddressStringTokenizer& );  // Prohibit assigment operator
 766.160 +private:
 766.161 +    CArrayFixFlat<SFoundItem>* iFoundItems;		// Array of all found items.
 766.162 +    TInt iPosition;		// Engine's position in the iFoundItems.
 766.163 +    TInt iMinNumbers;	// Minimum count of numbers in a phone number
 766.164 +    };
 766.165 +
 766.166 +
 766.167 +#endif      // __TULADDRESSSTRINGTOKENIZER_H__
 766.168 +            
   767.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   767.2 +++ b/epoc32/include/mw/tulpanics.h	Wed Mar 31 12:27:01 2010 +0100
   767.3 @@ -0,0 +1,55 @@
   767.4 +/*
   767.5 +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   767.6 +* All rights reserved.
   767.7 +* This component and the accompanying materials are made available
   767.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   767.9 +* which accompanies this distribution, and is available
  767.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  767.11 +*
  767.12 +* Initial Contributors:
  767.13 +* Nokia Corporation - initial contribution.
  767.14 +*
  767.15 +* Contributors:
  767.16 +*
  767.17 +* Description:
  767.18 +*
  767.19 +*/
  767.20 +
  767.21 +
  767.22 +
  767.23 +#ifndef __TULPANICS_H__
  767.24 +#define __TULPANICS_H__
  767.25 +
  767.26 +// ========== DATA TYPES ===================================
  767.27 +
  767.28 +enum TTulPanic
  767.29 +	{
  767.30 +    ETulPanicDescriptorLength = 0x100,
  767.31 +    ETulPanicInvalidTokenizerSearchCase
  767.32 +	};
  767.33 +
  767.34 +
  767.35 +//Error codes
  767.36 +enum TStringLoaderPanic
  767.37 +    {
  767.38 +    ETooFewArguments        = 0, // Unsolved parameters in resource string.
  767.39 +    ETooManyArguments       = 1, // Already solved all parameters in  resource string.
  767.40 +    EKeyStringNotFound      = 2, // The key string wasn't found in formating.
  767.41 +    EInvalidIndex           = 3, // Invalid index in Format-method
  767.42 +    EDescriptorTooSmall     = 4, // Too small destination descriptor.
  767.43 +    ECCoeEnvNotInitialized  = 5, // CCoeEnv is not initialized
  767.44 +    EInvalidSubstitute      = 6  // Substituted string contains KSubStringSeparator
  767.45 +    };
  767.46 +
  767.47 +
  767.48 +// ========== FUNCTION PROTOTYPES ==========================
  767.49 +
  767.50 +// ---------------------------------------------------------
  767.51 +// Panic
  767.52 +//
  767.53 +// ---------------------------------------------------------
  767.54 +//
  767.55 +GLREF_C void Panic (TTulPanic);
  767.56 +
  767.57 +#endif // __TULPANICS_H__
  767.58 +
   768.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   768.2 +++ b/epoc32/include/mw/tulphonenumberutils.h	Wed Mar 31 12:27:01 2010 +0100
   768.3 @@ -0,0 +1,115 @@
   768.4 +/*
   768.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   768.6 +* All rights reserved.
   768.7 +* This component and the accompanying materials are made available
   768.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   768.9 +* which accompanies this distribution, and is available
  768.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  768.11 +*
  768.12 +* Initial Contributors:
  768.13 +* Nokia Corporation - initial contribution.
  768.14 +*
  768.15 +* Contributors:
  768.16 +*
  768.17 +* Description:
  768.18 +*
  768.19 +*/
  768.20 +
  768.21 +
  768.22 +
  768.23 +#ifndef __TULPHONENUMBERUTILS_H__
  768.24 +#define __TULPHONENUMBERUTILS_H__
  768.25 +
  768.26 +#include    <coemain.h>
  768.27 +
  768.28 +
  768.29 +/**
  768.30 +Class offers static methods for parsing and validating phone numbers. 
  768.31 +Phone Parser API provides methods which are used to parse and validate
  768.32 +phone numbers. The API consists of the TulPhoneNumberUtils class.
  768.33 +
  768.34 +Examples of valid phone numbers:
  768.35 +1.	+358501234567
  768.36 +2.	+358 (50) 123 4567
  768.37 +
  768.38 +Even though both of the above examples are valid phone numbers, only 1) is 
  768.39 +accepted as a phone number by many systems. To convert 2) to 1), use the 
  768.40 +parsing method of the API.
  768.41 +
  768.42 +Usage:
  768.43 +  
  768.44 +@code
  768.45 + #include <tulphonenumberutils.h> 
  768.46 +
  768.47 + // Example shows how to use the parsing method of the API.
  768.48 +
  768.49 + // A number to be parsed. 
  768.50 + TBuf<50> number1 = _L("+358 (40) 123 132");
  768.51 +
  768.52 + // Type of the phone number to be parsed is a regular phone number.
  768.53 + TBool validNumber1 = 
  768.54 + TulPhoneNumberUtils::NormalizePhoneNumber( number1,
  768.55 +                                      TulPhoneNumberUtils::EPlainPhoneNumber );
  768.56 +
  768.57 + // The phone number number1 is a valid regular phone number.
  768.58 + // After parsing validNumber1 is ETrue and 
  768.59 + // number1 is "+35840123132".
  768.60 + // Do something like SendSMS( number1 ) etc.
  768.61 +
  768.62 + // A number to be parsed. 
  768.63 + TBuf<50> number2 = _L("+358 (40) 123p132"); // note 'p'
  768.64 +
  768.65 + // Type of the phone number to be parsed is a regular phone number.
  768.66 + TBool validNumber2 = 
  768.67 + TulPhoneNumberUtils::NormalizePhoneNumber( number2,
  768.68 +                                      TulPhoneNumberUtils::EPlainPhoneNumber );
  768.69 +
  768.70 + // The phone number number2 is not a valid regular phone number.
  768.71 + // After parsing validNumber2 is EFalse and 
  768.72 + // number2 is "+358 (40) 123p132" (unchanged).
  768.73 +@endcode
  768.74 +
  768.75 +@publishedAll
  768.76 +@released
  768.77 +*/
  768.78 +NONSHARABLE_CLASS(TulPhoneNumberUtils)
  768.79 +    {
  768.80 +public:
  768.81 +    /** 
  768.82 +    * Enumeration for phone number types. 
  768.83 +    * Used to specify the type of phone numbers in methods of 
  768.84 +    * TulPhoneNumberUtils class.
  768.85 +    */
  768.86 +    enum TPhoneNumberType
  768.87 +        {
  768.88 +        /** The supplied phone number is a regular phone number. */
  768.89 +        EPlainPhoneNumber,
  768.90 +        /** The supplied phone number is a contact card number. */
  768.91 +        EContactCardNumber,
  768.92 +        /** The supplied phone number is is a phone client number. */
  768.93 +        EPhoneClientNumber,
  768.94 +        /** The supplied phone number is an SMS number. */
  768.95 +        ESMSNumber
  768.96 +        };
  768.97 +
  768.98 +    IMPORT_C static TBool Normalize( TDes& aNumber, TPhoneNumberType aType = EPlainPhoneNumber);
  768.99 +    IMPORT_C static TBool IsValid( const TDesC& aNumber, TPhoneNumberType aType = EPlainPhoneNumber );
 768.100 +public: // deprecated
 768.101 +    inline static TBool ParsePhoneNumber( TDes& aNumber, TInt aType );
 768.102 +    inline static TBool IsValidPhoneNumber( const TDesC& aNumber, TInt aType );
 768.103 +private:    
 768.104 +    static TBool IsValidPhoneNumber( const TDesC& aNumber, const TDesC& aValidChars);
 768.105 +    static void ParseInvalidChars( TDes& aNumber, const TDesC& aInvalidChars);
 768.106 +    };
 768.107 +
 768.108 +// For source compatibility with S60
 768.109 +
 768.110 +/** @deprecated */
 768.111 +inline TBool TulPhoneNumberUtils::ParsePhoneNumber( TDes& aNumber, TInt aType )
 768.112 +	{ return TulPhoneNumberUtils::Normalize(aNumber, static_cast<TPhoneNumberType>(aType)); }
 768.113 +/** @deprecated */
 768.114 +inline TBool TulPhoneNumberUtils::IsValidPhoneNumber( const TDesC& aNumber, TInt aType )
 768.115 +	{ return TulPhoneNumberUtils::IsValid(aNumber, static_cast<TPhoneNumberType>(aType)); }
 768.116 +	
 768.117 +#endif      // __TULPHONENUMBERUTILS_H__
 768.118 +            
   769.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   769.2 +++ b/epoc32/include/mw/tulstringresourcereader.h	Wed Mar 31 12:27:01 2010 +0100
   769.3 @@ -0,0 +1,76 @@
   769.4 +/*
   769.5 +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   769.6 +* All rights reserved.
   769.7 +* This component and the accompanying materials are made available
   769.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   769.9 +* which accompanies this distribution, and is available
  769.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  769.11 +*
  769.12 +* Initial Contributors:
  769.13 +* Nokia Corporation - initial contribution.
  769.14 +*
  769.15 +* Contributors:
  769.16 +*
  769.17 +* Description:
  769.18 +*
  769.19 +*/
  769.20 +
  769.21 +
  769.22 +
  769.23 +#ifndef TULSTRINGRESOURCEREADER_H
  769.24 +#define TULSTRINGRESOURCEREADER_H
  769.25 +
  769.26 +#include <coemain.h> // RResourceReader
  769.27 +
  769.28 +/**
  769.29 +CTulStringResourceReader reads strings from resource without CCoeEnv.
  769.30 +If resource file given to the constructor is not found, the constructor leaves.
  769.31 +This module is mainly for server usage, where there is the need to read resources,
  769.32 +but no CCoeEnv instance is present.     
  769.33 +
  769.34 +Usage:
  769.35 + 
  769.36 +@code
  769.37 +#include <stringresourcereader.h>
  769.38 +#include <errorres.rsg> // Resource to be read header 
  769.39 +
  769.40 +TFileName myFileName( _L("z:\\resource\\errorres.rsc") );
  769.41 +CTulStringResourceReader* test = CTulStringResourceReader::NewL( myFileName );
  769.42 +
  769.43 +TPtrC buf;
  769.44 +buf.Set(test-> ReadResourceString(R_ERROR_RES_GENERAL)); 
  769.45 +  
  769.46 +// Note that buf will only be valid as long as CTulStringResourceReader 
  769.47 +// instance is alive and no new string is read by the same instance.
  769.48 +// If you need to read multiple strings, make copies.
  769.49 +
  769.50 +delete test;
  769.51 +@endcode
  769.52 +
  769.53 +@publishedAll
  769.54 +@released 
  769.55 +*/
  769.56 +class CTulStringResourceReader : public CBase
  769.57 +    {
  769.58 +public:  // Constructors and destructor
  769.59 +    IMPORT_C static CTulStringResourceReader* NewL(TFileName& aResFile);
  769.60 +    IMPORT_C static CTulStringResourceReader* NewLC(TFileName& aResFile);     
  769.61 +    IMPORT_C static CTulStringResourceReader* NewL(TFileName& aResFile, RFs& aFs);
  769.62 +    IMPORT_C static CTulStringResourceReader* NewLC(TFileName& aResFile, RFs& aFs);         
  769.63 +    ~CTulStringResourceReader();
  769.64 +public:
  769.65 +	IMPORT_C const TDesC& ReadResourceString( TInt aResourceId );
  769.66 +private:
  769.67 +    CTulStringResourceReader();
  769.68 +    void ConstructL(TFileName& aResFile);
  769.69 +    void ConstructL(TFileName& aResFile, RFs& aFs);
  769.70 +private:
  769.71 +    RResourceFile iResourceFile;
  769.72 +    HBufC* iResourceBuffer;
  769.73 +    RFs iFsSession;
  769.74 +    TPtrC iTruncatedTextPointer;
  769.75 +    TBool iFsConnected; // ETrue if connected to the file server, else EFalse
  769.76 +    };
  769.77 +
  769.78 +#endif      // TULSTRINGRESOURCEREADER_H
  769.79 +            
   770.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   770.2 +++ b/epoc32/include/mw/tultextresourceutils.h	Wed Mar 31 12:27:01 2010 +0100
   770.3 @@ -0,0 +1,250 @@
   770.4 +/*
   770.5 +* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   770.6 +* All rights reserved.
   770.7 +* This component and the accompanying materials are made available
   770.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   770.9 +* which accompanies this distribution, and is available
  770.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  770.11 +*
  770.12 +* Initial Contributors:
  770.13 +* Nokia Corporation - initial contribution.
  770.14 +*
  770.15 +* Contributors:
  770.16 +*
  770.17 +* Description:
  770.18 +*
  770.19 +*/
  770.20 +
  770.21 +
  770.22 +
  770.23 +#ifndef __TULTEXTRESOURCEUTILS_H__
  770.24 +#define __TULTEXTRESOURCEUTILS_H__
  770.25 +
  770.26 +#include <e32std.h>
  770.27 +#include <e32base.h>	// class CArrayFix
  770.28 +#include <bamdesca.h>	// class MDesCArray
  770.29 +#include <biditext.h>	// class TBidiText
  770.30 +class CCoeEnv;
  770.31 +
  770.32 +
  770.33 +/**
  770.34 +Utility that provides methods to load and format resource strings.
  770.35 +String Loader API provides an interface to load and format resource strings
  770.36 +that may contain parameter(s) (\%U for (unicode) text or or \%N for numerical).
  770.37 +Resource strings are usually defined in an RSS file.
  770.38 +
  770.39 +The API consists of the TulTextResourceUtils class. All methods are static, so there is
  770.40 +no need to explicitly allocate memory for the interface class.
  770.41 +The implementation needs a CCoeEnv instance to access for example the
  770.42 +resource files.
  770.43 +
  770.44 +
  770.45 +Usage:
  770.46 +
  770.47 +Applications load and format resource strings from normal resources with
  770.48 +static methods of the TulTextResourceUtils class. The loading is done with the LoadL
  770.49 +and LoadLC methods and with the Load method in situations where memory
  770.50 +allocation from the heap is not possible. Formatting is done automatically
  770.51 +after loading in the LoadL and LoadLC methods, but it can also be done
  770.52 +separately with the Format method in situations where memory allocation from
  770.53 +the heap is not possible. For reading the resource strings with the Load,
  770.54 +LoadL and LoadLC methods, the user should provide a pointer to CCoeEnv for
  770.55 +efficiency reasons. If the pointer is not provided, the implementation uses
  770.56 +the CCoeEnv::Static method internally to get it.
  770.57 +
  770.58 +Different size displays can handle different length strings. To take full
  770.59 +advantage of this fact, TulTextResourceUtils supports resource strings with multiple
  770.60 +options for strings, separated by the character 0x0001. Each such string can
  770.61 +contain the same or different sub string keys (\%U and \%N). TulTextResourceUtils returns
  770.62 +all strings, it is the responsibility of the caller to parse the result and
  770.63 +choose the proper string to display.
  770.64 +
  770.65 +Setting the maximum sub string length may be done in the text resources. Sub
  770.66 +string maximum lengths can be localized separately for every language.
  770.67 +The maximum sub string length is of the format: \%U[NN]
  770.68 +where NN is a number [01..99]. Please note that NN must always consist of two
  770.69 +characters, i.e. if the sub string maximum length is eight characters, the
  770.70 +value to be used is 08, not plain 8. If the number of characters exceeds the
  770.71 +maximum length, the sub string is cut to fit and the last character is
  770.72 +replaced with an ellipsis character.
  770.73 +
  770.74 +The following examples describe the usage of the String Loader API.
  770.75 +
  770.76 +Usage when one TInt is added:
  770.77 +
  770.78 +@code
  770.79 + // In .loc -file
  770.80 + // #define text_example "You have %N undone tasks."
  770.81 +
  770.82 + // In .rss -file
  770.83 + // RESOURCE TBUF r_text_example { buf = text_example; }
  770.84 +
  770.85 + // (In the .cpp -file)
  770.86 + #include <coeutils.h>
  770.87 +
  770.88 + // Get CCoeEnv instance
  770.89 + CEikonEnv* iEikonEnv = CEikonEnv::Static();
  770.90 +
  770.91 + TInt number(324);
  770.92 +
  770.93 + // Method reads a resource string with memory allocation
  770.94 + // and replaces the first %N-string in it with replacement TInt.
  770.95 + // The heap descriptor must be destroyed when it is no longer needed.
  770.96 + // iEikonEnv is needed for loading the resource string.
  770.97 + HBufC* stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE, number, iEikonEnv);
  770.98 +
  770.99 + // The 'number' is added to the resource string. The result is
 770.100 + // that stringholder points to a heap descriptor containing string:
 770.101 + // "You have 324 undone tasks."
 770.102 +
 770.103 + // Delete the heap descriptor
 770.104 + delete stringholder;
 770.105 +@endcode
 770.106 +
 770.107 +
 770.108 +Usage when several strings are added:
 770.109 +
 770.110 +An index can be included to parameters. Several parameters can have same index
 770.111 +if the same replacement is needed multiple times.
 770.112 +
 770.113 +@code
 770.114 + // In .loc -file
 770.115 + // #define text_example "I'm %2U%1U %3U%0U fine."
 770.116 +
 770.117 + // In .rss -file
 770.118 + // RESOURCE TBUF r_text_example { buf = text_example; }
 770.119 +
 770.120 + // In the .cpp -file
 770.121 + #include <coeutils.h>
 770.122 +
 770.123 + // Get CCoeEnv instance
 770.124 + CEikonEnv* iEikonEnv = CEikonEnv::Static();
 770.125 +
 770.126 + CDesCArrayFlat* strings = new CDesCArrayFlat(4);
 770.127 + CleanupStack::PushL(strings);
 770.128 +
 770.129 + strings->AppendL(_L("orking")); //First string
 770.130 +
 770.131 + strings->AppendL(_L("ll")); //Second string
 770.132 +
 770.133 + strings->AppendL(_L("sti")); //Third string
 770.134 +
 770.135 + strings->AppendL(_L("w")); //Fourth string
 770.136 +
 770.137 + // Method reads a resource string with memory allocation and replaces
 770.138 + // the %(index)U strings in it with replacement strings from an array.
 770.139 + // The heap descriptor must be destroyed when it is no longer needed.
 770.140 + // iEikonEnv is needed for loading the resource string.
 770.141 + HBufC* stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE, *strings, iEikonEnv);
 770.142 +
 770.143 + // Four strings are added to the resource string. The result is
 770.144 + // that stringholder points to a heap descriptor containing string:
 770.145 + // "I'm still working fine."
 770.146 +
 770.147 + // Pop and delete strings array
 770.148 + CleanupStack::PopAndDestroy();
 770.149 +
 770.150 + // Delete the heap descriptor
 770.151 + delete stringholder;
 770.152 +@endcode
 770.153 +
 770.154 +
 770.155 +Usage with scalable UI support:
 770.156 +
 770.157 +@code
 770.158 + // In .loc -file
 770.159 + // #define TEXT_EXAMPLE "You have missed %N messages from %U."<0x0001>"Missed %N msgs from %U."<0x0001>"Missed %N msgs."
 770.160 +
 770.161 + // In .rss -file
 770.162 + // RESOURCE TBUF R_TEXT_EXAMPLE { buf = TEXT_EXAMPLE; }
 770.163 +
 770.164 + // In the .cpp -file
 770.165 + #include <coeutils.h>
 770.166 +
 770.167 + // Get CCoeEnv instance
 770.168 + CEikonEnv* iEikonEnv = CEikonEnv::Static();
 770.169 +
 770.170 + TInt number(12);
 770.171 + _LIT(name, "John Doe");
 770.172 +
 770.173 + // Method reads a resource string with memory allocation,
 770.174 + // replaces all %N strings in it with a replacement TInt and
 770.175 + // all %U strings in it with a replacement string.
 770.176 + // The heap descriptor must be destroyed  when it is no longer needed.
 770.177 + // iEikonEnv is needed for loading the resource string.
 770.178 + HBufC stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE, name, number, iEikonEnv);
 770.179 +
 770.180 + // The number and name are added to the resource string. The result is
 770.181 + // that stringholder points to a heap descriptor containing string:
 770.182 + // "You have missed 12 messages from John Doe.\001Missed 12 msgs from John
 770.183 + // Doe.\001Missed 12 msgs."
 770.184 +
 770.185 + // Delete the heap descriptor
 770.186 + delete stringholder;
 770.187 +@endcode
 770.188 +
 770.189 +
 770.190 +Error handling:
 770.191 +
 770.192 +The leave mechanism of the Symbian OS environment is used to handle memory
 770.193 +exhaustion. The panic mechanism is used to handle programming errors while
 770.194 +debugging. TulTextResourceUtils panics for seven different reasons. The panic 
 770.195 +category is named TulTextResourceUtils. The panic codes are:
 770.196 +
 770.197 +- ETooFewArguments        = 0 (Unsolved parameters in resource string.)
 770.198 +- ETooManyArguments       = 1 (Already solved all parameters in  resource string.)
 770.199 +- EKeyStringNotFound      = 2 (The key string wasn't found in formatting.)
 770.200 +- EInvalidIndex           = 3 (Invalid index in Format-method)
 770.201 +- EDescriptorTooSmall     = 4 (Too small destination descriptor.)
 770.202 +- ECCoeEnvNotInitialized  = 5 (CCoeEnv is not initialized)
 770.203 +- EInvalidSubstitute      = 6 (Substituted string contains KSubStringSeparator)
 770.204 +
 770.205 +@publishedAll
 770.206 +@released
 770.207 +*/
 770.208 +NONSHARABLE_CLASS(TulTextResourceUtils)
 770.209 +    {
 770.210 +public:
 770.211 +    IMPORT_C static void Load(TDes& aDest, TInt aResourceId, CCoeEnv* aLoaderEnv = NULL);
 770.212 +    IMPORT_C static void Format(TDes& aDest, const TDesC& aSource, TInt aPosition, TInt aSubs);
 770.213 +    IMPORT_C static void Format(TDes& aDest, const TDesC& aSource, TInt aPosition, const TDesC& aSubs);
 770.214 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, CCoeEnv* aLoaderEnv = NULL);
 770.215 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
 770.216 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, const TDesC& aString, CCoeEnv* aLoaderEnv = NULL);
 770.217 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, const TDesC& aString, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
 770.218 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
 770.219 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, const MDesCArray& aStrings, CCoeEnv* aLoaderEnv = NULL);
 770.220 +    IMPORT_C static HBufC* LoadL(TInt aResourceId, const MDesCArray& aStrings, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
 770.221 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, CCoeEnv* aLoaderEnv = NULL);
 770.222 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
 770.223 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const TDesC& aString, CCoeEnv* aLoaderEnv = NULL);
 770.224 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const TDesC& aString, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
 770.225 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
 770.226 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const MDesCArray& aStrings, CCoeEnv* aLoaderEnv = NULL);
 770.227 +    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const MDesCArray& aStrings, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
 770.228 +private:
 770.229 +    TulTextResourceUtils();
 770.230 +    TulTextResourceUtils(const TulTextResourceUtils&);	// Prohibit copy constructor
 770.231 +    TulTextResourceUtils& operator= (const TulTextResourceUtils&);	// Prohibit assigment operator
 770.232 +    static HBufC* FormatStringL(const TDesC& aSource, const TDesC& aKey, const TDesC& aSubs, TBidiText::TDirectionality aDir);
 770.233 +    static HBufC* FormatStringL(const TDesC& aSource, const TDesC& aKey, const TDesC& aSubs,
 770.234 +        						 TBidiText::TDirectionality aDirectionality, TInt& aParamCount, TInt aSubCount);
 770.235 +    static HBufC* FormatStringL(TDesC& aSource, const CArrayFix<TInt>& aInts, TInt aMax, TBidiText::TDirectionality aDir);
 770.236 +    static HBufC* FormatStringL(TDesC& aSource, const MDesCArray& aStrings, TInt aMax, TBidiText::TDirectionality aDir);
 770.237 +    static TInt Formater(TDes& aDest, const TDesC& aSource, const TDesC& aKey,
 770.238 +        					const TDesC& aSubs, TBidiText::TDirectionality aDirectionality);
 770.239 +
 770.240 +    static void KeyStringFormater(TDes& aDest, const TText& aKey, TInt aPosition, const TDesC& aKeyString);
 770.241 +    static TBidiText::TDirectionality ResolveDirectionality(TDes& aText, TBool* aFound);
 770.242 +    static TInt GetParamCount(const TDesC& aText, TInt aIndex = -1);
 770.243 +    static TInt GetSubStringCount(const TDesC& aText);
 770.244 +        
 770.245 +    static TBidiText::TDirectionality DirectionalityL(const TDesC& aText, TBool* aFound);
 770.246 +    static HBufC* ResolveSubStringDirsL(TDes& aText, TInt aCount, TBool* aMarker);
 770.247 +    static HBufC* ResolveSubStringL(TDes& aText, TBool* aMarker);
 770.248 +    static void RemoveNoDirMarkers(TDes& aText);
 770.249 +    static void FormatL(TDes& aDest, const TDesC& aSource, const TDesC& aKeybuf, const TDesC& aSubs);
 770.250 +    };
 770.251 +
 770.252 +
 770.253 +#endif	// __TULTEXTRESOURCEUTILS_H__
   771.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   771.2 +++ b/epoc32/include/mw/tz.h	Wed Mar 31 12:27:01 2010 +0100
   771.3 @@ -0,0 +1,347 @@
   771.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   771.5 +// All rights reserved.
   771.6 +// This component and the accompanying materials are made available
   771.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   771.8 +// which accompanies this distribution, and is available
   771.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  771.10 +//
  771.11 +// Initial Contributors:
  771.12 +// Nokia Corporation - initial contribution.
  771.13 +//
  771.14 +// Contributors:
  771.15 +//
  771.16 +// Description:
  771.17 +//
  771.18 +
  771.19 +#ifndef __TIMEZONE_H__
  771.20 +#define __TIMEZONE_H__
  771.21 +
  771.22 +#include <e32base.h>
  771.23 +#include <s32std.h>
  771.24 +#include <tzdefines.h>
  771.25 +#include <tzupdate.h>
  771.26 +
  771.27 +class CTzChangeNotifier;
  771.28 +class CTzRules;
  771.29 +class CTzRuleHolder;
  771.30 +
  771.31 +//-------------------------------------------------------------------------
  771.32 +/**
  771.33 +Encapsulates a time zone identifier.
  771.34 +
  771.35 +The identifier may be either a name or a number.
  771.36 +@publishedAll
  771.37 +@released
  771.38 +@since 9.1
  771.39 +*/
  771.40 +class CTzId : public CBase
  771.41 +	{
  771.42 +public:
  771.43 +
  771.44 +	IMPORT_C ~CTzId();
  771.45 +	
  771.46 +	/** 
  771.47 +	@internalComponent 
  771.48 +	*/
  771.49 +	IMPORT_C CTzId* CloneL() const;
  771.50 +	
  771.51 +	IMPORT_C static CTzId* NewL(TUint aNumericId);
  771.52 +	
  771.53 +	IMPORT_C static CTzId* NewL(const TDesC8& aNameIdentity);
  771.54 +	
  771.55 +	/** 
  771.56 +	@internalComponent 
  771.57 +	*/
  771.58 +	IMPORT_C static CTzId* NewL(RReadStream& aStream);
  771.59 +	
  771.60 +	/** 
  771.61 +	@internalComponent 
  771.62 +	*/
  771.63 +	IMPORT_C void SetId(TUint aNumericId);
  771.64 +	
  771.65 +	/** 
  771.66 +	@internalComponent 
  771.67 +	*/
  771.68 +	IMPORT_C void SetIdL(const TDesC8& aNameIdentity);
  771.69 +	
  771.70 +	/** 
  771.71 +	@internalComponent 
  771.72 +	*/
  771.73 +	IMPORT_C void InternalizeL(RReadStream& aStream);
  771.74 +	
  771.75 +	/** 
  771.76 +	@internalComponent 
  771.77 +	*/
  771.78 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
  771.79 +
  771.80 +	IMPORT_C const TDesC8& TimeZoneNameID() const;
  771.81 +	
  771.82 +	IMPORT_C TUint TimeZoneNumericID() const;
  771.83 +	
  771.84 +	IMPORT_C TBool operator==(const CTzId& aTZId) const;
  771.85 +
  771.86 +	inline TBool operator!=(const CTzId& aTZId) const;
  771.87 +
  771.88 +public:
  771.89 +	static CTzId* NewL(TUint aReferenceId, const TDesC8& aZoneIdentity);
  771.90 +	void SetIdL(TUint aNumRefId, const TDesC8& aZoneIdentity);
  771.91 +
  771.92 +private:
  771.93 +	void ConstructL(const TDesC8& aZoneIdentity);
  771.94 +	CTzId();
  771.95 +	CTzId(TUint aNumericId);
  771.96 +
  771.97 +private:
  771.98 +	HBufC8* iZoneId;
  771.99 +	TUint32 iReferenceId;
 771.100 +	};
 771.101 +
 771.102 +
 771.103 +/** 
 771.104 +The client interface to the time zone server. 
 771.105 +
 771.106 +This class performs two basic functions:
 771.107 +1. Converts between UTC time and local time.
 771.108 +2. Sets the current local time zone.
 771.109 +
 771.110 +NOTE: The presence of a time zone server will alter the behaviour of the 
 771.111 +time zone related function calls User::SetUTCOffset() and 
 771.112 +User::SetUTCTimeAndOffset(). The time zone server is shutdown when the 
 771.113 +last session (RTz) is closed. Therefore, to maintain consistent time related behaviour, 
 771.114 +licensees may want to keep a system level time zone server session open at all times.
 771.115 +
 771.116 +@see User
 771.117 +
 771.118 +Exceptional cases occur when a user requests conversion 
 771.119 +for a non-existent local time or a double local time. 
 771.120 +
 771.121 +Non-existent local times occur when the local time 
 771.122 +changes from winter to summer for DST.
 771.123 +
 771.124 +For example, 01:59 local time is non-existent on the day of a change to BST
 771.125 +in Europe/London since the time changes directly from 12:59:59 to 2:00.
 771.126 +
 771.127 +A double local time occurs when the local time changes from
 771.128 +summer to winter. 
 771.129 +
 771.130 +For example, if the time changes at 02:00 AM BST to 01:00 AM GMT
 771.131 +then local times between 01:00 and 01:59 occur twice.
 771.132 +
 771.133 +The conversion applies the DST offset if the local time value is double and applies
 771.134 +the standard UTC offset if the local time does not exists.
 771.135 +
 771.136 +This decision makes the conversion process asymmetrical around
 771.137 +the discontinuity in the local time when there is a DST change.
 771.138 +
 771.139 +An example conversion from a double local time to UTC and 
 771.140 +from UTC to a double local time is:
 771.141 +
 771.142 +	01:59 AM BST => 00:59 AM UTC
 771.143 +	01:59 AM UTC => 01:59 AM GMT
 771.144 +	
 771.145 +An example conversion from a non-existent local time to UTC 
 771.146 +and from UTC to local time is:
 771.147 +
 771.148 +    01:59 AM GMT => 01:59 AM UTC
 771.149 +    01:59 AM UTC => 02:59 AM BST 	
 771.150 +	
 771.151 +
 771.152 +@publishedAll
 771.153 +@released
 771.154 +@since 9.1
 771.155 +*/
 771.156 +class RTz : public RSessionBase
 771.157 +	{
 771.158 +public:
 771.159 +	/**
 771.160 +	These enumerators are to describe different modes of the automatic 
 771.161 +	DST event handling.
 771.162 +
 771.163 +	These are used both as arguments for the API SetAutoUpdateBehaviorL, 
 771.164 +	and as notifications for the publish and subscribe.
 771.165 +	*/
 771.166 +	enum TTzAutoDSTUpdateModes
 771.167 +		{
 771.168 +		/** No auto update notification when a DST event occurs. */
 771.169 +		ETZAutoDSTUpdateOff = 0,
 771.170 +
 771.171 +		/** Automatic time update will occur and the client app will be notified. */
 771.172 +		ETZAutoDSTUpdateOn,
 771.173 +
 771.174 +		/** Client app needs to confirm that the time should be updated whenever a DST event occurs. */
 771.175 +		ETZAutoDSTNotificationOnly,
 771.176 +		};
 771.177 +
 771.178 +	enum TTzChanges
 771.179 +		{
 771.180 +		/** Used for notifying that the timezone database has changed.*/
 771.181 +		ETZDatabaseChanged = 1,
 771.182 +		/** Used for notifying that the system timezone database has changed.*/
 771.183 +		ETZSystemTimeZoneChanged,
 771.184 +		/** Used for notifying that the DST rule has changed. */
 771.185 +		ETZDSTRuleChanged,
 771.186 +		/** Used for notifying that an automatic time update has taken place. */
 771.187 +		ETZAutomaticTimeUpdate
 771.188 +		};
 771.189 +
 771.190 +	enum TPanic
 771.191 +		{
 771.192 +		/** This panic indicates that the time zone server has not been found.*/
 771.193 +		EPanicServerNotFound = 1,
 771.194 +		/** This panic indicates that the server has died.*/
 771.195 +		EPanicServerDead,
 771.196 +		/** This panic indicates that the time zone ID is not set.*/
 771.197 +		EPanicTimeZoneNameIdNotSet,
 771.198 +		/** This panic indicates that an out of range index was accessed.*/
 771.199 +		EPanicRulesIndexOutofRange,
 771.200 +		/** This panic indicates that there are no rules present for this time zone.*/
 771.201 +		EPanicTimeNotCoveredByRules,
 771.202 +		/** This panic indicates that the time zone rules are unusable.*/
 771.203 +		EPanicBadTimeZoneRules,
 771.204 +		/** This panic indicates  that an unsupported time reference has been accessed.*/
 771.205 +		EPanicUnsupportedTimeReference,
 771.206 +		/** This panic indicates that the time zone ID is not supported.*/
 771.207 +		EPanicUnsupportedTimeZoneNoId,
 771.208 +		/** This panic indicates that a request for notification is already pending from the client.*/
 771.209 +		EPanicNotificationRequestPending,
 771.210 +		/** This panic indicates that an incorrect data has been sent to the server.*/
 771.211 +		EPanicInvalidArgument
 771.212 +		};
 771.213 +	
 771.214 +	/** 
 771.215 +	@internalComponent 
 771.216 +	*/
 771.217 +	IMPORT_C static void Panic(TPanic aPanic);
 771.218 +	
 771.219 +	/** 
 771.220 +	@internalTechnology
 771.221 +	*/
 771.222 +	IMPORT_C CTzId* GetTimeZoneIdL() const;
 771.223 +	
 771.224 +	/** 
 771.225 +	@internalTechnology
 771.226 +	*/
 771.227 +	IMPORT_C void SetTimeZoneL(CTzId& aZone) const;
 771.228 +
 771.229 +	IMPORT_C void Close();
 771.230 +	
 771.231 +	IMPORT_C TInt Connect();
 771.232 +
 771.233 +	IMPORT_C ~RTz();
 771.234 +	
 771.235 +	IMPORT_C RTz();
 771.236 +	
 771.237 +	IMPORT_C TInt ConvertToLocalTime(TTime& aTime) const;
 771.238 +	
 771.239 +	IMPORT_C TInt ConvertToLocalTime(TTime& aTime, const CTzId& aZone) const;
 771.240 +
 771.241 +	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime) const;
 771.242 +	
 771.243 +	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime, const CTzId& aZone) const;
 771.244 +	
 771.245 +	IMPORT_C void GetOffsetsForTimeZoneIdsL(const RArray<TInt>& aTzNumericIds, RArray<TInt>& aOffsets) const; 
 771.246 +	
 771.247 +	IMPORT_C TInt AutoUpdateSettingL();
 771.248 +	
 771.249 +    IMPORT_C void SetAutoUpdateBehaviorL(TTzAutoDSTUpdateModes aUpdateEnabled);
 771.250 +    
 771.251 +    // Methods for setting the system time.
 771.252 +    IMPORT_C TInt SetHomeTime(const TTime& aLocalTime) const;
 771.253 +
 771.254 +    IMPORT_C TBool IsDaylightSavingOnL(CTzId& aZone) const;
 771.255 +    
 771.256 +    IMPORT_C TBool IsDaylightSavingOnL(CTzId& aZone, const TTime& aUTCTime) const;
 771.257 +
 771.258 + 	// Get Encoded Rules for Current Local Time Zone
 771.259 +	IMPORT_C CTzRules* GetTimeZoneRulesL(const TTime& aStartTime, const TTime& aEndTime, TTzTimeReference aTimeRef) const;
 771.260 +	
 771.261 +	IMPORT_C CTzRules* GetTimeZoneRulesL(const CTzId& aZone, const TTime& aStartTime, const TTime& aEndTime, TTzTimeReference aTimeRef) const;
 771.262 +	
 771.263 +	void RegisterTzChangeNotifier(TRequestStatus& aStatus) const;
 771.264 +	TInt CancelRequestForNotice() const;
 771.265 +	TVersion Version() const;
 771.266 +	
 771.267 +	IMPORT_C void NotifyHomeTimeZoneChangedL(const NTzUpdate::TTimeZoneChange& aChange) const;
 771.268 +	
 771.269 +	IMPORT_C void SetUnknownZoneTimeL(const TTime& aUTCTime, const TInt aUTCOffset);
 771.270 +	
 771.271 +	IMPORT_C void SetUnknownZoneTimeL(const TTime& aUTCTime, const TInt aUTCOffset, TBool aPersistInCenRep);
 771.272 +
 771.273 +	IMPORT_C void __dbgClearCacheL(TBool aRestartCaching);
 771.274 +
 771.275 +    TBool StartCachingL();
 771.276 +    TUint16 CurrentCachedTzId();
 771.277 +
 771.278 +private:
 771.279 +	static TInt StartServer();
 771.280 +	TInt DoConnect();
 771.281 +	void doConvertL(const CTzId& aZone, TTime& aTime,
 771.282 +					TTzTimeReference aTimerRef) const;
 771.283 +	void doConvertL(TTime& aTime, 
 771.284 +					TTzTimeReference aTimerRef) const;
 771.285 +private:
 771.286 +	CTzRuleHolder* iRulesHolder;
 771.287 +	};
 771.288 +
 771.289 +/**
 771.290 +Encapsulates a TTime and a TTzTimeReference.
 771.291 +Use, for example, for iCalendar's DTSTART.
 771.292 +
 771.293 +@publishedAll
 771.294 +@released
 771.295 +*/
 771.296 +class TTimeWithReference
 771.297 +	{
 771.298 +public:
 771.299 +	static inline TTimeWithReference Max();
 771.300 +	inline TTimeWithReference();
 771.301 +	inline TTimeWithReference(TTime aTime, TTzTimeReference aTimeReference=ETzUtcTimeReference);
 771.302 +	inline TTimeWithReference(TDateTime aTime, TTzTimeReference aTimeReference=ETzUtcTimeReference);
 771.303 +	inline bool operator==(const TTimeWithReference& aTime) const;
 771.304 +	inline bool operator!=(const TTimeWithReference& aTime) const;
 771.305 +
 771.306 +	TTime iTime;
 771.307 +	TTzTimeReference iTimeReference;
 771.308 +	};
 771.309 +
 771.310 +/** Inequality operator.
 771.311 +
 771.312 +@param aTZId The time zone ID to compare with this one.
 771.313 +@return True if the two IDs are different. False if they are the same.
 771.314 +*/
 771.315 +inline TBool CTzId::operator!=(const CTzId& aTZId) const
 771.316 +	{
 771.317 +	return (!operator==(aTZId));
 771.318 +	}
 771.319 +
 771.320 +//////////////////////////////////
 771.321 +// TTimeWithReference
 771.322 +//////////////////////////////////
 771.323 +inline TTimeWithReference TTimeWithReference::Max()
 771.324 +	{
 771.325 +	return TTimeWithReference(
 771.326 +		TDateTime(9999,EDecember,30,23,59,59,0), 
 771.327 +		ETzUtcTimeReference);
 771.328 +	}
 771.329 +
 771.330 +inline TTimeWithReference::TTimeWithReference() 
 771.331 +		: iTime(0), iTimeReference(ETzUtcTimeReference)
 771.332 +	{
 771.333 +	}
 771.334 +inline TTimeWithReference::TTimeWithReference(TTime aTime, TTzTimeReference aTimeReference)
 771.335 +		: iTime(aTime), iTimeReference(aTimeReference)
 771.336 +	{
 771.337 +	}
 771.338 +inline TTimeWithReference::TTimeWithReference(TDateTime aTime, TTzTimeReference aTimeReference)
 771.339 +		: iTime(aTime), iTimeReference(aTimeReference)
 771.340 +	{
 771.341 +	}
 771.342 +inline bool TTimeWithReference::operator==(const TTimeWithReference& aTime) const
 771.343 +	{
 771.344 +	return(aTime.iTime == iTime && aTime.iTimeReference == iTimeReference);
 771.345 +	}
 771.346 +inline bool TTimeWithReference::operator!=(const TTimeWithReference& aTime) const
 771.347 +	{
 771.348 +	return(!(*this == aTime));
 771.349 +	}
 771.350 +#endif
   772.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   772.2 +++ b/epoc32/include/mw/tzconverter.h	Wed Mar 31 12:27:01 2010 +0100
   772.3 @@ -0,0 +1,62 @@
   772.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   772.5 +// All rights reserved.
   772.6 +// This component and the accompanying materials are made available
   772.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   772.8 +// which accompanies this distribution, and is available
   772.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  772.10 +//
  772.11 +// Initial Contributors:
  772.12 +// Nokia Corporation - initial contribution.
  772.13 +//
  772.14 +// Contributors:
  772.15 +//
  772.16 +// Description:
  772.17 +//
  772.18 +
  772.19 +#ifndef __TZ_CONVERTER_H__
  772.20 +#define __TZ_CONVERTER_H__
  772.21 +
  772.22 +#include <e32base.h>
  772.23 +#include <tz.h>
  772.24 +#include <tzdefines.h>
  772.25 +
  772.26 +class CTzChangeNotifier;
  772.27 +class CVTzActualisedRules;
  772.28 +class CTzRuleHolder;
  772.29 +
  772.30 +/**
  772.31 +Converts between time expressed in UTC and local time. 
  772.32 +
  772.33 +@publishedAll
  772.34 +@released
  772.35 +
  772.36 +@see RTz
  772.37 +@since 9.1
  772.38 +*/
  772.39 +class CTzConverter : public CBase
  772.40 +	{
  772.41 +public:
  772.42 +
  772.43 +	IMPORT_C static CTzConverter* NewL(RTz& aTzServer);
  772.44 +	IMPORT_C ~CTzConverter();
  772.45 +	IMPORT_C TInt ConvertToLocalTime(TTime& aTime);
  772.46 +	IMPORT_C TInt ConvertToLocalTime(TTime& aTime, const CTzId& aZone);
  772.47 +	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime);
  772.48 +	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime, const CTzId& aZone);
  772.49 +	IMPORT_C TUint16 CurrentTzId();
  772.50 +
  772.51 +	void NotifyTimeZoneChangeL(RTz::TTzChanges aChange);
  772.52 +	const RTz& Server() const; 
  772.53 +private:
  772.54 +	CTzConverter(RTz& aTzServer);
  772.55 +	void ConstructL();
  772.56 +
  772.57 +
  772.58 +private:
  772.59 +	RTz& iTzServer;
  772.60 +
  772.61 +	TAny* iReserved; 
  772.62 +	TAny* iReserved2; 
  772.63 +	};
  772.64 +
  772.65 +#endif
   773.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   773.2 +++ b/epoc32/include/mw/tzdefines.h	Wed Mar 31 12:27:01 2010 +0100
   773.3 @@ -0,0 +1,55 @@
   773.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   773.5 +// All rights reserved.
   773.6 +// This component and the accompanying materials are made available
   773.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   773.8 +// which accompanies this distribution, and is available
   773.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  773.10 +//
  773.11 +// Initial Contributors:
  773.12 +// Nokia Corporation - initial contribution.
  773.13 +//
  773.14 +// Contributors:
  773.15 +//
  773.16 +// Description:
  773.17 +//
  773.18 +
  773.19 +#ifndef __TZDEFINES_H__
  773.20 +#define __TZDEFINES_H__
  773.21 +
  773.22 +/** Time Zone Rule Day Rules.
  773.23 +@publishedAll
  773.24 +@released
  773.25 +*/
  773.26 +enum TTzRuleDay
  773.27 +	{
  773.28 +	ETzFixedDate			= 0,	// e.g. 11th October
  773.29 +	ETzDayAfterDate,				// e.g. first Sunday after 8th October
  773.30 +	ETzDayBeforeDate,				// e.g. Sunday before 7th October
  773.31 +	ETzDayInLastWeekOfMonth			// e.g. last Sunday in October
  773.32 +	};
  773.33 +
  773.34 +/**
  773.35 +this const must match the last TTzRuleDay enumeration;
  773.36 +'int' is deliberately used because this file is shared with non Symbian C++ environments 
  773.37 +@internalComponent
  773.38 +*/
  773.39 +const int KValidatedLastDayRule = ETzDayInLastWeekOfMonth;
  773.40 +
  773.41 +/** Time reference.
  773.42 +@publishedAll
  773.43 +@released
  773.44 +*/
  773.45 +enum TTzTimeReference
  773.46 +	{
  773.47 +	ETzUtcTimeReference	= 0,
  773.48 +	ETzStdTimeReference,
  773.49 +	ETzWallTimeReference	// Local time
  773.50 +	};
  773.51 +
  773.52 +/**
  773.53 +this const must match the last TTzTimeReference enumeration 
  773.54 +'int' is deliberately used because this file is shared with non Symbian C++ environments 
  773.55 +@internalComponent
  773.56 +*/
  773.57 +const int KValidatedLastTimeReference = ETzWallTimeReference;
  773.58 +#endif
   774.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   774.2 +++ b/epoc32/include/mw/tzlocalizationdatatypes.h	Wed Mar 31 12:27:01 2010 +0100
   774.3 @@ -0,0 +1,295 @@
   774.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   774.5 +// All rights reserved.
   774.6 +// This component and the accompanying materials are made available
   774.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   774.8 +// which accompanies this distribution, and is available
   774.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  774.10 +//
  774.11 +// Initial Contributors:
  774.12 +// Nokia Corporation - initial contribution.
  774.13 +//
  774.14 +// Contributors:
  774.15 +//
  774.16 +// Description:
  774.17 +//
  774.18 +
  774.19 +#ifndef __TZLOCAL_DATATYPES_H__
  774.20 +#define __TZLOCAL_DATATYPES_H__
  774.21 +
  774.22 +#include <e32base.h>	//CBase
  774.23 +
  774.24 +/**
  774.25 +Encapsulates the correspondence between a time zone ID and a resource ID and
  774.26 +facilitates fast finding of resources in the resource file.  For internal use only.
  774.27 +
  774.28 +@internalTechnology
  774.29 +*/
  774.30 +class TTzLocalizedId
  774.31 +	{
  774.32 +	public:
  774.33 +		// Represents an invalid UTC offset of 25 hours and 1 minutes, in minutes
  774.34 +		enum TTzUTCOffset
  774.35 +			{
  774.36 +			ETzInvalidUTCOffset = 1501
  774.37 +			};
  774.38 +
  774.39 +	public:
  774.40 +		TTzLocalizedId(const TUint16 aTzId, const TUint aResourceId =0);
  774.41 +
  774.42 +		//Accessor methods
  774.43 +		inline TUint16 TimeZoneId() const;
  774.44 +		inline TUint ResourceId() const;
  774.45 +		inline TInt UTCOffset() const;
  774.46 +		inline void SetUTCOffset(TInt aOffsetInMinutes);
  774.47 +
  774.48 +	private:
  774.49 +		TUint16 iTzId;
  774.50 +		TUint iResourceId;
  774.51 +		TInt iUTCOffset;	//UTC offset stored in minutes
  774.52 +	};
  774.53 +
  774.54 +/**
  774.55 +Encapsulates a localized (exemplar) city.
  774.56 +
  774.57 +@publishedAll
  774.58 +@released
  774.59 +*/
  774.60 +class CTzLocalizedCity : public CBase
  774.61 +	{
  774.62 +	public:
  774.63 +		static CTzLocalizedCity* NewL(
  774.64 +			const TDesC& aName,
  774.65 +			const TTzLocalizedId& aTzLocalizedId,
  774.66 +			const TUint8 aGroupId =0);
  774.67 +		static CTzLocalizedCity* NewLC(
  774.68 +			const TDesC& aName,
  774.69 +			const TTzLocalizedId& aTzLocalizedId,
  774.70 +			const TUint8 aGroupId =0);
  774.71 +		~CTzLocalizedCity();
  774.72 +
  774.73 +		//Accessor methods
  774.74 +		IMPORT_C TPtrC Name() const;
  774.75 +		IMPORT_C TUint16 TimeZoneId() const;
  774.76 +		IMPORT_C TUint8 GroupId() const;
  774.77 +		TTzLocalizedId TzLocalizedId() const;
  774.78 +		TInt UTCOffset() const;
  774.79 +		void SetUTCOffset(TInt aUTCoffset);
  774.80 +        void SetCityIndex(TInt aIndex);
  774.81 +       	TInt CityIndex() const;
  774.82 +
  774.83 +	private:
  774.84 +		void ConstructL(const TDesC& aName);
  774.85 +		CTzLocalizedCity(const TUint8 aGroupId, const TTzLocalizedId& aTzLocalizedId);
  774.86 +
  774.87 +	private:
  774.88 +		//Member data
  774.89 +		HBufC* iName;
  774.90 +		TUint8 iGroupId;
  774.91 +		TTzLocalizedId iTzLocalizedId;
  774.92 +        TInt iCityIndex;
  774.93 +	};
  774.94 +
  774.95 +/**
  774.96 +Encapsulates a localized group of (exemplar) cities.
  774.97 +
  774.98 +@publishedAll
  774.99 +@released
 774.100 +*/
 774.101 +class CTzLocalizedCityGroup : public CBase
 774.102 +	{
 774.103 +	public:
 774.104 +		static CTzLocalizedCityGroup* NewL(const TDesC& aName, const TUint8 aGroupId);
 774.105 +		static CTzLocalizedCityGroup* NewLC(const TDesC& aName, const TUint8 aGroupId);
 774.106 +		~CTzLocalizedCityGroup();
 774.107 +
 774.108 +		//Accessor methods
 774.109 +		IMPORT_C TPtrC Name() const;
 774.110 +		IMPORT_C TUint8 Id() const;
 774.111 +
 774.112 +	private:
 774.113 +		void ConstructL(const TDesC& aName);
 774.114 +		CTzLocalizedCityGroup(const TUint8 aGroupId);
 774.115 +
 774.116 +	private:
 774.117 +		//Member data
 774.118 +		HBufC* iName;
 774.119 +		TUint8 iGroupId;
 774.120 +	};
 774.121 +
 774.122 +/**
 774.123 +Encapsulates a group of LDML localized timezone names.
 774.124 +LDML stands for Locale Data Markup Language. For details, see 
 774.125 +http://www.openi18n.org/specs/ldml/1.0/ldml-spec.htm.
 774.126 +
 774.127 +@publishedAll
 774.128 +@released
 774.129 +*/
 774.130 +class CTzLocalizedTimeZone : public CBase
 774.131 +	{
 774.132 +	public: //enums
 774.133 +		/**
 774.134 +		Flags to identify a cached zone.
 774.135 +		@publishedAll
 774.136 +		@released
 774.137 +		*/
 774.138 +		enum TTzFrequentlyUsedZone
 774.139 +			{
 774.140 +			/** The current zone. */
 774.141 +			ECurrentZone,
 774.142 +			/** The home zone. */
 774.143 +			EHomeZone,
 774.144 +			/** The zone of interest. */
 774.145 +			EInterestZone,
 774.146 +			/** The first recently-used zone. */
 774.147 +			ERecentZone1,
 774.148 +			/** The second recently-used zone. */
 774.149 +			ERecentZone2,
 774.150 +			/** Specifies the number of cached zones. Not to be used as an API argument. */
 774.151 +			ECachedTimeZones	// If new items are added to this enum, this must 
 774.152 +								// left as last item, because it is used to keep 
 774.153 +								// count of the number of cached zones
 774.154 +			};
 774.155 +
 774.156 +	public:
 774.157 +		static CTzLocalizedTimeZone* NewL(
 774.158 +			const TTzLocalizedId& aTzLocalizedId,
 774.159 +			const TDesC& aStandardName,
 774.160 +			const TDesC& aDaylightName,
 774.161 +			const TDesC& aShortStandardName,
 774.162 +			const TDesC& aShortDaylightName);
 774.163 +
 774.164 +		static CTzLocalizedTimeZone* NewLC(
 774.165 +			const TTzLocalizedId& aTzLocalizedId,
 774.166 +			const TDesC& aStandardName,
 774.167 +			const TDesC& aDaylightName,
 774.168 +			const TDesC& aShortStandardName,
 774.169 +			const TDesC& aShortDaylightName);
 774.170 +
 774.171 +		~CTzLocalizedTimeZone();
 774.172 +
 774.173 +		//Accessor methods
 774.174 +		IMPORT_C TUint16 TimeZoneId() const;
 774.175 +		IMPORT_C TPtrC StandardName() const;
 774.176 +		IMPORT_C TPtrC DaylightName() const;
 774.177 +		IMPORT_C TPtrC ShortStandardName() const;
 774.178 +		IMPORT_C TPtrC ShortDaylightName() const;
 774.179 +		TTzLocalizedId TzLocalizedId() const;
 774.180 +		TInt UTCOffset() const;
 774.181 +		void SetUTCOffset(TInt aUTCoffset);
 774.182 +
 774.183 +	private:
 774.184 +		void ConstructL(
 774.185 +			const TDesC& aStandardName,
 774.186 +			const TDesC& aDaylightName,
 774.187 +			const TDesC& aShortStandardName,
 774.188 +			const TDesC& aShortDaylightName);
 774.189 +		CTzLocalizedTimeZone(const TTzLocalizedId& aTzLocalizedId);
 774.190 +
 774.191 +	private:
 774.192 +		//Member data
 774.193 +		TTzLocalizedId iTzLocalizedId;
 774.194 +		HBufC* iStandardName;
 774.195 +		HBufC* iDaylightName;
 774.196 +		HBufC* iShortStandardName;
 774.197 +		HBufC* iShortDaylightName;
 774.198 +	};
 774.199 +
 774.200 +/**
 774.201 +Template for arrays of localized objects. Implemented using a thin template. 
 774.202 +All functions are inline.
 774.203 +
 774.204 +@publishedAll
 774.205 +@released
 774.206 +*/
 774.207 +template <class T>
 774.208 +class CTzLocalizedArray : public CBase
 774.209 +	{
 774.210 +	protected:
 774.211 +		inline ~CTzLocalizedArray();
 774.212 +
 774.213 +		inline T& At(TInt aIndex) const;
 774.214 +		inline TInt Count() const;
 774.215 +		inline void AppendL(T* aElement);
 774.216 +		inline void Remove(TInt aIndex);
 774.217 +		inline void Sort(TLinearOrder<T> aOrder);
 774.218 +		inline TInt Find(T* aEntry,TIdentityRelation<T> aIdentityRelation);
 774.219 +
 774.220 +		inline CTzLocalizedArray();
 774.221 +
 774.222 +	private:
 774.223 +		//Member data
 774.224 +		RPointerArray<T> iArray;
 774.225 +	};
 774.226 +
 774.227 +// Assign concrete classes for each of the arrays that will be used
 774.228 +// This guards against future BC problems
 774.229 +
 774.230 +/**
 774.231 +An array of cities. This just passes function calls on to its templated base
 774.232 +class, CTzLocalizedArray.
 774.233 +
 774.234 +@publishedAll
 774.235 +@released
 774.236 +*/
 774.237 +class CTzLocalizedCityArray : public CTzLocalizedArray<CTzLocalizedCity>
 774.238 +	{
 774.239 +	public:
 774.240 +		IMPORT_C static CTzLocalizedCityArray* NewL();
 774.241 +		IMPORT_C static CTzLocalizedCityArray* NewLC();
 774.242 +
 774.243 +		IMPORT_C CTzLocalizedCity& At(TInt aIndex) const;
 774.244 +		IMPORT_C TInt Count() const;
 774.245 +		IMPORT_C void AppendL(CTzLocalizedCity* aCity);
 774.246 +		IMPORT_C void Remove(TInt aIndex);
 774.247 +		IMPORT_C void Sort(TLinearOrder<CTzLocalizedCity> anOrder);
 774.248 +		IMPORT_C TInt Find(CTzLocalizedCity* anEntry,TIdentityRelation<CTzLocalizedCity> aIdentityRelation);
 774.249 +	};
 774.250 +	
 774.251 +/**
 774.252 +An array of city groups. This just passes function calls on to its templated base
 774.253 +class, CTzLocalizedArray.
 774.254 +
 774.255 +@publishedAll
 774.256 +@released
 774.257 +*/
 774.258 +class CTzLocalizedCityGroupArray : public CTzLocalizedArray<CTzLocalizedCityGroup>
 774.259 +	{
 774.260 +	public:
 774.261 +		IMPORT_C static CTzLocalizedCityGroupArray* NewL();
 774.262 +		IMPORT_C static CTzLocalizedCityGroupArray* NewLC();
 774.263 +
 774.264 +		IMPORT_C CTzLocalizedCityGroup& At(TInt aIndex) const;
 774.265 +		IMPORT_C TInt Count() const;
 774.266 +		IMPORT_C void AppendL(CTzLocalizedCityGroup* aGroup);
 774.267 +		IMPORT_C void Remove(TInt aIndex);
 774.268 +		IMPORT_C void Sort(TLinearOrder<CTzLocalizedCityGroup> anOrder);
 774.269 +		IMPORT_C TInt Find(CTzLocalizedCityGroup* anEntry,TIdentityRelation<CTzLocalizedCityGroup> aIdentityRelation);
 774.270 +	};
 774.271 +
 774.272 +/**
 774.273 +An array of time zones. This just passes function calls on to its templated base
 774.274 +class, CTzLocalizedArray.
 774.275 +
 774.276 +@publishedAll
 774.277 +@released
 774.278 +*/
 774.279 +class CTzLocalizedTimeZoneArray : public CTzLocalizedArray<CTzLocalizedTimeZone>
 774.280 +	{
 774.281 +	public:
 774.282 +		IMPORT_C static CTzLocalizedTimeZoneArray* NewL();
 774.283 +		IMPORT_C static CTzLocalizedTimeZoneArray* NewLC();
 774.284 +
 774.285 +		IMPORT_C CTzLocalizedTimeZone& At(TInt aIndex) const;
 774.286 +		IMPORT_C TInt Count() const;
 774.287 +		IMPORT_C void AppendL(CTzLocalizedTimeZone* aElement);
 774.288 +		IMPORT_C void Remove(TInt aIndex);
 774.289 +		IMPORT_C void Sort(TLinearOrder<CTzLocalizedTimeZone> anOrder);
 774.290 +		IMPORT_C TInt Find(CTzLocalizedTimeZone* anEntry,TIdentityRelation<CTzLocalizedTimeZone> aIdentityRelation);
 774.291 +	};
 774.292 +
 774.293 +#include <tzlocalizationdatatypes.inl>
 774.294 +
 774.295 +#endif //__TZLOCAL_DATATYPES_H__
 774.296 +//==================================================================
 774.297 +// End of file
 774.298 +//==================================================================
   775.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   775.2 +++ b/epoc32/include/mw/tzlocalizationdatatypes.inl	Wed Mar 31 12:27:01 2010 +0100
   775.3 @@ -0,0 +1,152 @@
   775.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   775.5 +// All rights reserved.
   775.6 +// This component and the accompanying materials are made available
   775.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   775.8 +// which accompanies this distribution, and is available
   775.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  775.10 +//
  775.11 +// Initial Contributors:
  775.12 +// Nokia Corporation - initial contribution.
  775.13 +//
  775.14 +// Contributors:
  775.15 +//
  775.16 +// Description:
  775.17 +//
  775.18 +
  775.19 +#ifndef __TZLOCAL_DATATYPES_INL__
  775.20 +#define __TZLOCAL_DATATYPES_INL__
  775.21 +
  775.22 +//==================================================================
  775.23 +// TTzLocalizedId inline Functions
  775.24 +//==================================================================
  775.25 +/**
  775.26 +Returns the time zone ID.
  775.27 +@return The time zone ID.
  775.28 +*/
  775.29 +inline TUint16 TTzLocalizedId::TimeZoneId() const
  775.30 +	{
  775.31 +	return iTzId;
  775.32 +	}
  775.33 +
  775.34 +/**
  775.35 +Returns the resource ID.
  775.36 +@return The resource ID.
  775.37 +*/
  775.38 +inline TUint TTzLocalizedId::ResourceId() const
  775.39 +	{
  775.40 +	return iResourceId;
  775.41 +	}
  775.42 +
  775.43 +/**
  775.44 +Returns the UTC offset in minutes.
  775.45 +This value should only be used for array sorting.
  775.46 +@return The UTC offset in minutes.
  775.47 +*/
  775.48 +inline TInt TTzLocalizedId::UTCOffset() const
  775.49 +	{
  775.50 +	return iUTCOffset;
  775.51 +	}
  775.52 +
  775.53 +/**
  775.54 +Sets the UTC offset in minutes.
  775.55 +This value should only be used for internal array sorting.
  775.56 +@param aOffsetInMinutes The new UTC offset in minutes.
  775.57 +*/
  775.58 +inline void TTzLocalizedId::SetUTCOffset(TInt aOffsetInMinutes)
  775.59 +	{
  775.60 +	iUTCOffset = aOffsetInMinutes;
  775.61 +	}
  775.62 +
  775.63 +//==================================================================
  775.64 +// CTzLocalizedArray's inline functions
  775.65 +//==================================================================
  775.66 +/**
  775.67 +Destructor
  775.68 +@internalTechnology
  775.69 +*/
  775.70 +template <class T>
  775.71 +inline CTzLocalizedArray<T>::~CTzLocalizedArray()
  775.72 +	{
  775.73 +	iArray.ResetAndDestroy();
  775.74 +	}
  775.75 +
  775.76 +/**
  775.77 +Default constructor
  775.78 +@internalTechnology
  775.79 +*/
  775.80 +template <class T>
  775.81 +inline CTzLocalizedArray<T>::CTzLocalizedArray()
  775.82 +	{
  775.83 +	}
  775.84 +/**
  775.85 +Returns the element at the specified index.
  775.86 +@param aIndex Index of the element to get.
  775.87 +@return The element at aIndex.
  775.88 +@internalTechnology
  775.89 +*/
  775.90 +template <class T>
  775.91 +inline T& CTzLocalizedArray<T>::At(TInt aIndex) const
  775.92 +	{
  775.93 +	return *(iArray[aIndex]);
  775.94 +	}
  775.95 +
  775.96 +/**
  775.97 +Returns the number of elements in the array.
  775.98 +@return The number of elements in the array.
  775.99 +@internalTechnology
 775.100 +*/
 775.101 +template <class T>
 775.102 +inline TInt CTzLocalizedArray<T>::Count() const
 775.103 +	{
 775.104 +	return iArray.Count();
 775.105 +	}
 775.106 +
 775.107 +/**
 775.108 +Appends aElement to this array.
 775.109 +@param aElement The element to add.
 775.110 +@internalTechnology
 775.111 +*/
 775.112 +template <class T>
 775.113 +inline void CTzLocalizedArray<T>::AppendL(T* aElement)
 775.114 +	{
 775.115 +	iArray.AppendL(aElement);
 775.116 +	}
 775.117 +
 775.118 +/**
 775.119 +Removes the element at the specified index.
 775.120 +@param aIndex The index of the element to remove.
 775.121 +@internalTechnology
 775.122 +*/
 775.123 +template <class T>
 775.124 +inline void CTzLocalizedArray<T>::Remove(TInt aIndex)
 775.125 +	{
 775.126 +	iArray.Remove(aIndex);
 775.127 +	}
 775.128 +
 775.129 +/**
 775.130 +Sorts this array.
 775.131 +@param aOrder The sorting function to use.
 775.132 +@internalTechnology
 775.133 +*/
 775.134 +template <class T>
 775.135 +inline void CTzLocalizedArray<T>::Sort(TLinearOrder<T> aOrder)
 775.136 +	{
 775.137 +	iArray.Sort(aOrder);
 775.138 +	}
 775.139 +
 775.140 +/**
 775.141 +Finds an element in this array.
 775.142 +@param aIdentityRelation finding function to use.
 775.143 +@internalTechnology
 775.144 +*/
 775.145 +template <class T>
 775.146 +inline TInt CTzLocalizedArray<T>::Find(T* aEntry,TIdentityRelation<T> aIdentityRelation)
 775.147 +	{
 775.148 +	return iArray.Find(aEntry,aIdentityRelation);
 775.149 +	}
 775.150 +
 775.151 +#endif //__TZLOCAL_DATATYPES_INL__
 775.152 +
 775.153 +//==================================================================
 775.154 +// End of file
 775.155 +//==================================================================
   776.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   776.2 +++ b/epoc32/include/mw/tzlocalizer.h	Wed Mar 31 12:27:01 2010 +0100
   776.3 @@ -0,0 +1,175 @@
   776.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   776.5 +// All rights reserved.
   776.6 +// This component and the accompanying materials are made available
   776.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   776.8 +// which accompanies this distribution, and is available
   776.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  776.10 +//
  776.11 +// Initial Contributors:
  776.12 +// Nokia Corporation - initial contribution.
  776.13 +//
  776.14 +// Contributors:
  776.15 +//
  776.16 +// Description:
  776.17 +//
  776.18 +
  776.19 +#ifndef __TzLocalizer_H__
  776.20 +#define __TzLocalizer_H__
  776.21 +
  776.22 +#include <e32base.h> //CBase
  776.23 +
  776.24 +#include <tzlocalizationdatatypes.h> 	//CTzLocalizedCity, CTzLocalizedCityGroup etc
  776.25 +
  776.26 +// Forward Declarations
  776.27 +class MTzLocalizationReader;
  776.28 +class MTzLocalizationWriter;
  776.29 +
  776.30 +/**
  776.31 +Retrieves localized time zone information based on a time zone ID.
  776.32 +
  776.33 +Time zone information is available in the following forms:
  776.34 +- Standard Name, for instance Greenwich Mean Time,
  776.35 +- Short Standard Name, for instance GMT,
  776.36 +- Daylight Savings Name, for instance British Summer Time,
  776.37 +- Short Daylight Savings Name, for instance BST.
  776.38 +
  776.39 +This information is encapsulated in a CTzLocalizedTimeZone object.
  776.40 +
  776.41 +A collection of localizable cities for a specific time zone can also be returned.
  776.42 +New cities can be added to a time zone.  Cities may also be added to groups, but 
  776.43 +a city may only be a member of one group.
  776.44 +
  776.45 +@publishedAll
  776.46 +@released
  776.47 +*/
  776.48 +class CTzLocalizer : public CBase
  776.49 +	{
  776.50 +	public:
  776.51 +		/** Panic reasons for the time zone localization component. */
  776.52 +		enum TTzLocalizerPanics
  776.53 +			{
  776.54 +			/** The time zone server was not found. */
  776.55 +			ETzLocalizerPanicTimeZoneServerNotFound,
  776.56 +			/** A resource file was not found. */
  776.57 +			ETzLocalizerPanicResourceFileNotFound
  776.58 +			};
  776.59 +
  776.60 +		/** Used to specify the sort order of localized time zone information. */
  776.61 +		enum TTzSortOrder
  776.62 +			{
  776.63 +			/** Unsorted. This is the fastest way to get localized data. */
  776.64 +			ETzUnsorted,
  776.65 +			/** Sort by UTC offset starting with the lowest. */
  776.66 +			ETzUTCAscending,
  776.67 +			/** Sort by UTC offset starting with the highest. */
  776.68 +			ETzUTCDescending,
  776.69 +			/** Sort by name (city name/group name/standard time zone name), from A-Z. */
  776.70 +			ETzAlphaNameAscending,
  776.71 +			/** Sort by name (city name/group name/standard time zone name), from Z-A. */
  776.72 +			ETzAlphaNameDescending,
  776.73 +			/** Sort by standard name from A-Z. */
  776.74 +			ETzAlphaStandardNameAscending,
  776.75 +			/** Sort by daylight savings name from A-Z. */
  776.76 +			ETzAlphaDaylightNameAscending,
  776.77 +			/** Sort by short standard name from A-Z. */
  776.78 +			ETzAlphaShortStandardNameAscending,
  776.79 +			/** Sort by short daylight savings name from A-Z. */
  776.80 +			ETzAlphaShortDaylightNameAscending,
  776.81 +			/** Sort by standard name from Z-A. */
  776.82 +			ETzAlphaStandardNameDescending,
  776.83 +			/** Sort by daylight savings name from Z-A. */
  776.84 +			ETzAlphaDaylightNameDescending,
  776.85 +			/** Sort by short standard name from Z-A. */
  776.86 +			ETzAlphaShortStandardNameDescending,
  776.87 +			/** Sort by short daylight savings name from Z-A. */
  776.88 +			ETzAlphaShortDaylightNameDescending
  776.89 +			};
  776.90 +
  776.91 +	public:
  776.92 +		//Construction / Destruction
  776.93 +		IMPORT_C static CTzLocalizer* NewL();
  776.94 +		IMPORT_C static CTzLocalizer* NewLC();
  776.95 +		IMPORT_C ~CTzLocalizer();
  776.96 +
  776.97 +		//Time zones
  776.98 +		IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(TInt aTimeZoneId) const;
  776.99 +		IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(const CTzLocalizedCity& aCity) const;
 776.100 +		IMPORT_C CTzLocalizedTimeZoneArray* GetAllTimeZonesL(const TTzSortOrder aSortOrder = ETzUnsorted);
 776.101 +		
 776.102 +		IMPORT_C void SetTimeZoneL(TInt aTimeZoneId);
 776.103 +
 776.104 +		//City Management
 776.105 +		IMPORT_C CTzLocalizedCity* GetDefaultCityL(TInt aTimeZoneId) const;
 776.106 +		IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedCity& aCity) const;
 776.107 +		IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedTimeZone& aTimeZone) const;
 776.108 +
 776.109 +		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const TTzSortOrder aSortOrder = ETzUnsorted);
 776.110 +		IMPORT_C CTzLocalizedCityArray* GetCitiesL(TInt aTimeZoneId,const TTzSortOrder aSortOrder = ETzUnsorted);
 776.111 +		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedTimeZone& aTimeZone,const TTzSortOrder aSortOrder = ETzUnsorted);
 776.112 +		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted);
 776.113 +
 776.114 +		IMPORT_C CTzLocalizedCity* AddCityL(TInt aTimeZoneId,const TDesC& aCityName, TInt aGroupId = 0);
 776.115 +		IMPORT_C void RemoveCityL(CTzLocalizedCity* aCity);
 776.116 +
 776.117 +		//City Groups
 776.118 +		IMPORT_C CTzLocalizedCityGroupArray* GetAllCityGroupsL(const TTzSortOrder aSortOrder = ETzUnsorted) const;
 776.119 +		IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(TInt aGroupId) const;
 776.120 +		IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(const CTzLocalizedCity& aCity) const ;
 776.121 +
 776.122 +		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(TInt aGroupId,const TTzSortOrder aSortOrder = ETzUnsorted);
 776.123 +		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted);
 776.124 +		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCityGroup& aCityGroup,const TTzSortOrder aSortOrder = ETzUnsorted);
 776.125 +
 776.126 +		//Frequently Used Zones
 776.127 +		IMPORT_C CTzLocalizedTimeZone* GetFrequentlyUsedZoneL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
 776.128 +		IMPORT_C CTzLocalizedCity* GetFrequentlyUsedZoneCityL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
 776.129 +		IMPORT_C void SetFrequentlyUsedZoneL(TInt aTimeZoneId,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
 776.130 +		IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedTimeZone& aTimeZone,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
 776.131 +		IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedCity& aCity,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
 776.132 +
 776.133 +		//Find functions
 776.134 +		IMPORT_C CTzLocalizedCity* FindCityByNameL(const TDesC& aCityName, const TInt aTimeZoneId = 0);
 776.135 +		IMPORT_C CTzLocalizedTimeZone* FindTimeZoneByNameL(const TDesC& aTimeZoneName);
 776.136 +		IMPORT_C CTzLocalizedCityGroup* FindCityGroupByNameL(const TDesC& aCityGroupName);
 776.137 +		
 776.138 +		IMPORT_C TBool CheckLanguage();
 776.139 +		
 776.140 +		//Cities and Time Zones with a specified UTC offset
 776.141 +		IMPORT_C CTzLocalizedCityArray* GetCitiesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted);
 776.142 +		IMPORT_C CTzLocalizedTimeZoneArray* GetTimeZonesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted);
 776.143 +		
 776.144 +	private:
 776.145 +		void ConstructL();
 776.146 +		CTzLocalizer();
 776.147 +		
 776.148 +		TBool PrepareFrequentlyUsedZonesL();
 776.149 +		void UpdateFrequentlyUsedZonesL();
 776.150 +		CTzLocalizedTimeZone* GetFrequentlyUsedDefaultZoneL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone);
 776.151 +		TUint32 GetFrequentlyUsedDefaultZoneCenRepKeyL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone);
 776.152 +		
 776.153 +		void GetCitiesL(CTzLocalizedCityArray& aCities, const TTzLocalizedId& aLocalizedId, const TTzSortOrder aSortOrder = ETzUnsorted);
 776.154 +		
 776.155 +		TLinearOrder<CTzLocalizedCity> CitySortOrderL(const TTzSortOrder aSortOrder);
 776.156 +		TLinearOrder<CTzLocalizedTimeZone> TimeZoneSortOrderL(const TTzSortOrder aSortOrder);
 776.157 +		template <class T> void PrepareForUTCSortL(T& aArray);
 776.158 +		
 776.159 +		TInt GetTimeZoneIdFromTzServerL();
 776.160 +		void DoSetTimeZoneL(TInt aTimeZoneId);
 776.161 +		void ChangeHomeTimeZoneL(TInt aNewId);
 776.162 +		
 776.163 +		void ValidateDbL();
 776.164 +        void RecreateDbL();
 776.165 +        TBool DbNeedsUpdatingL() const;
 776.166 +		TBool DbIsInvalidL() const;
 776.167 +        void UpgradeDbVersionL();
 776.168 +        void FetchCityToUpgradeL(CTzLocalizedTimeZoneArray& aTimeZoneArray, CTzLocalizedCityArray& aCityArray, CTzLocalizedTimeZone::TTzFrequentlyUsedZone aCachedZone);
 776.169 +
 776.170 +	private:
 776.171 +		//Member data
 776.172 +		MTzLocalizationReader* iStaticDataReader;
 776.173 +		MTzLocalizationReader* iPersistedDataReader;
 776.174 +		MTzLocalizationWriter* iPersistedDataWriter;
 776.175 +		TLanguage iLanguage;
 776.176 +	};
 776.177 +
 776.178 +#endif//__TzLocalizer_H__
   777.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   777.2 +++ b/epoc32/include/mw/tzupdate.h	Wed Mar 31 12:27:01 2010 +0100
   777.3 @@ -0,0 +1,78 @@
   777.4 +// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   777.5 +// All rights reserved.
   777.6 +// This component and the accompanying materials are made available
   777.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   777.8 +// which accompanies this distribution, and is available
   777.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  777.10 +//
  777.11 +// Initial Contributors:
  777.12 +// Nokia Corporation - initial contribution.
  777.13 +//
  777.14 +// Contributors:
  777.15 +//
  777.16 +// Description:
  777.17 +//
  777.18 +
  777.19 +#ifndef __TZUPDATE_H__
  777.20 +#define __TZUPDATE_H__
  777.21 +
  777.22 +#include <e32cmn.h> // TUid.
  777.23 +
  777.24 +/** UTC Offset update notification constants. When the UTC offset is automatically
  777.25 +adjusted for Daylight Saving then it is possible to receive
  777.26 +notification using the Publish and Subscribe API with the
  777.27 +values defined here. Note that this property is updated by the Time Zone Server
  777.28 +as this is the only component that can modify the UTC Offset.
  777.29 +
  777.30 +@see RProperty in e32property.h
  777.31 +@publishedAll
  777.32 +@released
  777.33 +@since 9.1
  777.34 +*/
  777.35 +namespace NTzUpdate
  777.36 +    {
  777.37 +    const TUid KPropertyCategory = { 0x1020383E };
  777.38 +
  777.39 +    enum TPropertyKeys
  777.40 +        {
  777.41 +        EUtcOffsetChangeNotification,
  777.42 +        ECurrentTimeZoneId,
  777.43 +        EHomeTimeZoneId,
  777.44 +        ENextDSTChange
  777.45 +        };
  777.46 +
  777.47 +	struct TTimeZoneChange
  777.48 +		{
  777.49 +		TInt iNewTimeZoneId;
  777.50 +		TInt iOldTimeZoneId;
  777.51 +		};
  777.52 +		
  777.53 +	/** This struct is used to publish DST Change info in an RProperty.
  777.54 +	Subscribers to the property will define a copy of this struct
  777.55 +	so that they are not dependant on the tz component.
  777.56 +	If this struct changes then the copies must also be changed.
  777.57 +	@internalTechnology
  777.58 +	*/
  777.59 +	struct TDSTChangeInfo
  777.60 +		{
  777.61 +		/** The version of the struct. Currently always 1 */
  777.62 +		TUint8 iVersion;
  777.63 +
  777.64 +		/** The time of the next offset change in UTC */
  777.65 +		TTime iNextDSTChangeUTC;
  777.66 +		/** The offset from UTC (in minutes) after the next DST change will take place.*/
  777.67 +		TInt iNextUTCOffset;
  777.68 +		
  777.69 +		/** The time of the previous offset change in UTC. This member is only valid if the version is 2 or above. */
  777.70 +		TTime iPreviousDSTChangeUTC;
  777.71 +
  777.72 +		/** The offset from UTC (in minutes) before the previous DST change took place. This member is only valid
  777.73 +		if the version is 2 or above.*/
  777.74 +		TInt iPreviousUTCOffset;
  777.75 +
  777.76 +		/** Reserved for future use. */
  777.77 +		TInt iReserved[12];
  777.78 +		};
  777.79 +    }
  777.80 +
  777.81 +#endif  // __TZUPDATE_H__
   778.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   778.2 +++ b/epoc32/include/mw/uikon/eikalsrv.h	Wed Mar 31 12:27:01 2010 +0100
   778.3 @@ -0,0 +1,133 @@
   778.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   778.5 +// All rights reserved.
   778.6 +// This component and the accompanying materials are made available
   778.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   778.8 +// which accompanies this distribution, and is available
   778.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  778.10 +//
  778.11 +// Initial Contributors:
  778.12 +// Nokia Corporation - initial contribution.
  778.13 +//
  778.14 +// Contributors:
  778.15 +//
  778.16 +// Description:
  778.17 +//
  778.18 +
  778.19 +
  778.20 +
  778.21 +/**
  778.22 + @file
  778.23 + @internalComponent
  778.24 +*/
  778.25 +
  778.26 +#ifndef __EIKALSRV_H__
  778.27 +#define __EIKALSRV_H__
  778.28 +
  778.29 +#include <e32base.h>
  778.30 +#include <asaltdefs.h>
  778.31 +#include <asshddefs.h>
  778.32 +
  778.33 +class MEikServAlarmFactory;
  778.34 +class MEikServAlarm;
  778.35 +class CEikServAlarmAlertSession;
  778.36 +
  778.37 +/** 
  778.38 +@internalComponent
  778.39 +*/
  778.40 +NONSHARABLE_CLASS(CEikServAlarmAlertServer) : public CPolicyServer
  778.41 +	{
  778.42 +public:
  778.43 +	IMPORT_C static CEikServAlarmAlertServer* NewL(MEikServAlarmFactory* aAlarmControlFactory);
  778.44 +	IMPORT_C static CEikServAlarmAlertServer* NewL(MEikServAlarmFactory* aAlarmControlFactory, TInt aMaxAlarms);
  778.45 +	~CEikServAlarmAlertServer();
  778.46 +	IMPORT_C void HandleSwitchOnEvent();
  778.47 +	IMPORT_C void TaskKeyPressedL();
  778.48 +	inline TBool AlarmAlertIsVisible() const;
  778.49 +	inline void SessionDied();
  778.50 +	IMPORT_C void SetQuietPeriodL(TTime aQuietPeriodEndTime);
  778.51 +	IMPORT_C void ClearAllAlarmsL();	
  778.52 +public: // from CPolicyServer
  778.53 +	CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
  778.54 +private:
  778.55 +	CEikServAlarmAlertServer(TInt aPriority, MEikServAlarmFactory& aAlarmControlFactory,  TInt aMaxAlarms);
  778.56 +private:
  778.57 +	CEikServAlarmAlertSession* iSession; // iSession does not *own* what it points to
  778.58 +	MEikServAlarmFactory& iAlarmControlFactory;
  778.59 +	TInt iMaxAlarms;
  778.60 +	};
  778.61 +
  778.62 +
  778.63 +class CEikAlmControlSupervisor;
  778.64 +
  778.65 +/** 
  778.66 +Helper class for CEikServAlarmAlertSession. Holds response data for queuing
  778.67 +@internalComponent
  778.68 +*/
  778.69 +NONSHARABLE_CLASS(TAlarmResponse)
  778.70 +	{
  778.71 +public:	
  778.72 +	TAlarmResponse (TASAltAlertServerResponse  aCode,  TAlarmId aId, TTime aTime);
  778.73 +	TASAltAlertServerResponse ResponseCode () const;
  778.74 +	TAlarmId AlarmId () const;
  778.75 +	TTime TimeToSnooze() const;
  778.76 +private:
  778.77 +	TASAltAlertServerResponse  iCode;
  778.78 +	TAlarmId iId;
  778.79 +	TTime iTime;
  778.80 +	};
  778.81 +	
  778.82 +// supposed to be maximum one response in a queue, because client should resubmit request 
  778.83 +// for response as soon	as it receive previous 
  778.84 +const TInt KAlertResponseQueueSize = 20;	
  778.85 +
  778.86 +/**
  778.87 +Represents a session for a client thread on the server-side.
  778.88 +@internalComponent 
  778.89 +*/
  778.90 +NONSHARABLE_CLASS(CEikServAlarmAlertSession) : public CSession2
  778.91 +	{
  778.92 +public:
  778.93 +	static CEikServAlarmAlertSession* NewL(MEikServAlarmFactory& aAlarmControlFactory, TInt aMaxAlarms);
  778.94 +	~CEikServAlarmAlertSession();
  778.95 +	void TaskKeyPressedL();
  778.96 +	void HandleSwitchOnEvent();
  778.97 +	inline TBool AlarmAlertIsVisible() const;
  778.98 +
  778.99 +	void SetQuietPeriodL(TTime aQuietPeriodEndTime);
 778.100 +	inline TTime QuietPeriodEndTime() const; 
 778.101 +	void RespondEventL(TASAltAlertServerResponse aCode);
 778.102 +	void RespondEventL(TASAltAlertServerResponse aCode, TAlarmId aId, TTime aTimeToSnooze = 0);
 778.103 +	void ClearAllAlarmsL();
 778.104 +private:
 778.105 +	CEikServAlarmAlertServer* AlarmAlertServer() const;
 778.106 +	void ConstructL();
 778.107 +	virtual void ServiceL(const RMessage2 &aMessage);
 778.108 +
 778.109 +	CEikServAlarmAlertSession(MEikServAlarmFactory& aAlarmControl, TInt aMaxAlarms);
 778.110 +	void QueueEventL (TASAltAlertServerResponse&  aCode,TAlarmId& aId, TTime& aTimeToSnooze);
 778.111 +	TInt FindAlarm(TAlarmId aAlarmId) const;
 778.112 +	void DeleteAlarmL(const RMessage2& aMessage);
 778.113 +	void UpdateVisibility();
 778.114 +private:
 778.115 +	TBool iVisible;
 778.116 +	MEikServAlarmFactory& iAlarmControlFactory;
 778.117 +	TTime iQuietPeriodEndTime;
 778.118 +	TInt iMaxAlarms;
 778.119 +	RPointerArray<CEikAlmControlSupervisor> iAlarmSupervisors;
 778.120 +	RArray <TAlarmResponse> iResponseQueue;
 778.121 +	RMessage2 iMessage;
 778.122 +	};
 778.123 +
 778.124 +inline TBool CEikServAlarmAlertServer::AlarmAlertIsVisible() const 
 778.125 +	{ return iSession->AlarmAlertIsVisible(); }
 778.126 +
 778.127 +inline TBool CEikServAlarmAlertSession::AlarmAlertIsVisible() const 
 778.128 +	{ return iVisible; }
 778.129 +
 778.130 +inline void CEikServAlarmAlertServer::SessionDied() 
 778.131 +	{ iSession = NULL; }
 778.132 +
 778.133 +inline TTime CEikServAlarmAlertSession::QuietPeriodEndTime() const 
 778.134 +	{ return iQuietPeriodEndTime; }
 778.135 +
 778.136 +#endif //__EIKALSRV_H__
   779.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   779.2 +++ b/epoc32/include/mw/viewcli.h	Wed Mar 31 12:27:01 2010 +0100
   779.3 @@ -0,0 +1,166 @@
   779.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   779.5 +// All rights reserved.
   779.6 +// This component and the accompanying materials are made available
   779.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   779.8 +// which accompanies this distribution, and is available
   779.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  779.10 +//
  779.11 +// Initial Contributors:
  779.12 +// Nokia Corporation - initial contribution.
  779.13 +//
  779.14 +// Contributors:
  779.15 +//
  779.16 +// Description:
  779.17 +//
  779.18 +
  779.19 +#ifndef __VIEWCLI_H__
  779.20 +#define __VIEWCLI_H__
  779.21 +
  779.22 +#include <e32base.h>
  779.23 +#include <gdi.h>
  779.24 +#include <vwsdef.h>
  779.25 +
  779.26 +//
  779.27 +// Forward declarations.
  779.28 +//
  779.29 +
  779.30 +class RVwsSession;
  779.31 +class CVwsSessionEventHandler;
  779.32 +class MVwsAppStarter;
  779.33 +
  779.34 +class MVwsSessionWrapperObserver
  779.35 +/**
  779.36 +The MVwsSessionObserver specifies an interface through which server events to be handled by the owner of
  779.37 +a client session are notified
  779.38 +
  779.39 +@publishedAll 
  779.40 +@deprecated
  779.41 +*/
  779.42 +//@internalTechnology @released
  779.43 +
  779.44 +	{
  779.45 +public:	
  779.46 +
  779.47 +	/**
  779.48 +	 * Handles the view event aEvent for a view added through the client session being observed.
  779.49 +	 * Handles events for all the views added by the client.
  779.50 +	 */
  779.51 +	virtual void HandleViewEventL(const TVwsViewEvent& aEvent)=0;
  779.52 +	};
  779.53 +
  779.54 +
  779.55 +class CVwsSessionWrapper : public CBase
  779.56 +/**
  779.57 +The CVwsSessionWrapper class mediates access to the view server client session which it creates, and wraps in
  779.58 +support for notification of server events. A session observer will be called back with server events if
  779.59 +it maintains an outstanding request for asynchronous event notification.
  779.60 +
  779.61 +@publishedPartner 
  779.62 +@released 
  779.63 +*/
  779.64 +//@internalTechnology @released
  779.65 +
  779.66 +	{
  779.67 +public:	
  779.68 +	IMPORT_C static CVwsSessionWrapper* NewL();
  779.69 +	IMPORT_C static CVwsSessionWrapper* NewLC();
  779.70 +	IMPORT_C static CVwsSessionWrapper* NewL(MVwsSessionWrapperObserver& aObserver);
  779.71 +	IMPORT_C static CVwsSessionWrapper* NewLC(MVwsSessionWrapperObserver& aObserver);
  779.72 +	IMPORT_C ~CVwsSessionWrapper();
  779.73 +	IMPORT_C static TInt StartViewServer(MVwsAppStarter& aAppStarter);
  779.74 +	IMPORT_C TInt ShutdownViewServer();
  779.75 +	IMPORT_C TInt AddView(const TVwsViewId& aViewId);
  779.76 +	IMPORT_C TInt RemoveView(const TVwsViewId& aViewId) const;
  779.77 +	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId,TInt aMode);
  779.78 +	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId);
  779.79 +	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
  779.80 +	IMPORT_C TInt ActivateViewViaViewEvent(const TVwsViewIdAndMessage& aViewIdAndMessage);
  779.81 +	IMPORT_C TInt RequestCustomMessage(TDes8& aMessageBufPtr) const;
  779.82 +	IMPORT_C void QueueAsyncRequest();
  779.83 +	IMPORT_C TInt StartApp(TUid aAppToStart);
  779.84 +	IMPORT_C TInt DeactivateActiveView();
  779.85 +	IMPORT_C TInt DeactivateActiveViewIfOwnerMatch();
  779.86 +	IMPORT_C TInt NotifyNextDeactivation(const TVwsViewId& aViewId);
  779.87 +	IMPORT_C TInt NotifyNextDeactivation();
  779.88 +	IMPORT_C TInt NotifyNextActivation(const TVwsViewId& aViewId);
  779.89 +	IMPORT_C TInt NotifyNextActivation();
  779.90 +	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId,TInt aMode) const;
  779.91 +	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId) const;
  779.92 +	IMPORT_C TInt GetSystemDefaultView(TVwsViewId& aViewId);
  779.93 +	IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
  779.94 +	IMPORT_C TInt SetClientRequestTimeOut(TTimeIntervalMicroSeconds32 aDuration);
  779.95 +	IMPORT_C TInt SetServerEventTimeOut(TTimeIntervalMicroSeconds32 aDuration);
  779.96 +	IMPORT_C TInt EnableServerEventTimeOut(TBool aEnable);
  779.97 +	IMPORT_C TInt CheckSourceOfViewSwitch(TBool& aResult,const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic);
  779.98 +	IMPORT_C TInt EnableServerBlankScreen(TBool aEnable);
  779.99 +	IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable);
 779.100 +	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus);
 779.101 +	IMPORT_C TInt SetCrossCheckUid(const TUid& aCrossCheckUid);
 779.102 +	IMPORT_C TInt SetWindowBackgroundColor(const TRgb& aBgColor);
 779.103 +public:	
 779.104 +	/**
 779.105 +	@internalComponent
 779.106 +	@released
 779.107 +	*/
 779.108 +	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
 779.109 +	/**
 779.110 +	@internalComponent
 779.111 +	@released
 779.112 +	*/
 779.113 +	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus, TInt aCustomControl);
 779.114 +	/**
 779.115 +	@internalComponent
 779.116 +	@released
 779.117 +	*/IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
 779.118 +	/**
 779.119 +	@internalComponent
 779.120 +	@released
 779.121 +	*/
 779.122 +	IMPORT_C TInt GetCurrentActiveViewInSystem(TVwsViewId& aActiveViewId);
 779.123 +private:
 779.124 +	CVwsSessionWrapper();
 779.125 +	CVwsSessionWrapper(MVwsSessionWrapperObserver& aObserver);
 779.126 +	void ConstructL();
 779.127 +	TInt CheckCreateViewServerSession();
 779.128 +	TBool IsSchedulerRunning();
 779.129 +private:
 779.130 +	RVwsSession* iVwsSession;
 779.131 +	CVwsSessionEventHandler* iViewEventHandler;
 779.132 +	MVwsSessionWrapperObserver* iObserver;
 779.133 +	};
 779.134 +
 779.135 +
 779.136 +//
 779.137 +// Panic.
 779.138 +//
 779.139 +/**
 779.140 +@internalComponent
 779.141 +*/
 779.142 +enum TVwsPanic
 779.143 +	{
 779.144 +	EVwsCreateScheduler=1,
 779.145 +	EVwsThreadRename
 779.146 +	};
 779.147 +
 779.148 +/**
 779.149 +@internalComponent
 779.150 +*/
 779.151 +GLREF_C void Panic(TVwsPanic aPanic);
 779.152 +
 779.153 +/**
 779.154 +Server thread start.
 779.155 +
 779.156 +@internalComponent
 779.157 +*/
 779.158 +GLDEF_C TInt ViewServerThreadStart(TAny* aPtr);
 779.159 +
 779.160 +/**
 779.161 +@internalComponent
 779.162 +*/
 779.163 +struct SVwsCommandLine
 779.164 +	{
 779.165 +	MVwsAppStarter* iAppStarter;
 779.166 +	};
 779.167 +
 779.168 +
 779.169 +#endif
   780.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   780.2 +++ b/epoc32/include/mw/vtzrules.h	Wed Mar 31 12:27:01 2010 +0100
   780.3 @@ -0,0 +1,187 @@
   780.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   780.5 +// All rights reserved.
   780.6 +// This component and the accompanying materials are made available
   780.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   780.8 +// which accompanies this distribution, and is available
   780.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  780.10 +//
  780.11 +// Initial Contributors:
  780.12 +// Nokia Corporation - initial contribution.
  780.13 +//
  780.14 +// Contributors:
  780.15 +//
  780.16 +// Description:
  780.17 +//
  780.18 +
  780.19 +#ifndef __VTZRULES_H__
  780.20 +#define __VTZRULES_H__
  780.21 +
  780.22 +#include <e32base.h>
  780.23 +#include <s32strm.h>
  780.24 +#include <tzdefines.h>
  780.25 +#include <tz.h>
  780.26 +
  780.27 +class CVTzActualisedRules;
  780.28 +class TVTzActualisedRule; 
  780.29 +
  780.30 +const TInt KVTzRulesGranularity = 4;
  780.31 +
  780.32 +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  780.33 + *	Time zone rules
  780.34 + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
  780.35 +
  780.36 +/**
  780.37 +Encapsulates one time zone rule.
  780.38 +
  780.39 +@publishedAll
  780.40 +@released
  780.41 +*/
  780.42 +class TTzRule
  780.43 +	{
  780.44 +public:
  780.45 +	IMPORT_C TTzRule(TInt16 aFromYear, TInt16 aToYear, TInt16 aOldOffset, TInt16 aNewOffset, TMonth aMonth, TTzRuleDay aDayRule, 
  780.46 +				TUint8 aDayOfMonth, TUint8 aDayOfWeek, TTzTimeReference aTimeReference, TUint16 aTimeOfChange);
  780.47 +	IMPORT_C TTzRule();
  780.48 +	IMPORT_C TTzRule(const TTzRule& aRule);
  780.49 +	IMPORT_C TTzRule(TTimeWithReference aFromYear, TTimeWithReference aToYear, TInt16 aOldOffset, TInt16 aNewOffset, TMonth aMonth, TTzRuleDay aDayRule, 
  780.50 +				TUint8 aDayOfMonth, TUint8 aDayOfWeek, TTzTimeReference aTimeReference, TUint16 aTimeOfChange);
  780.51 +
  780.52 +	
  780.53 +	void ExternalizeL(RWriteStream& aStream) const;
  780.54 +	void InternalizeL(RReadStream& aStream);		
  780.55 +	TBool RuleApplies(const TTime& aStart, const TTime& aEnd) const;		
  780.56 +		
  780.57 +	IMPORT_C TVTzActualisedRule Actualise(TInt aYear) const;    // deprecated, replace by the L version
  780.58 +	IMPORT_C TVTzActualisedRule ActualiseL(TInt aYear) const;   
  780.59 +	
  780.60 +public:
  780.61 +	TTimeWithReference iFrom;		// first date the rule applies
  780.62 +	TTimeWithReference iTo;			// last date the rule applies
  780.63 +	TInt16		iOldLocalTimeOffset; // local time offset (in minutes) BEFORE the change (local time = UTC + DST)
  780.64 +	TInt16		iNewLocalTimeOffset; // local time offset (in minutes) AFTER the change
  780.65 +	TMonth		iMonth;
  780.66 +	TTzRuleDay	iDayRule;		// format in which the rule is expressed
  780.67 +	TUint8		iDayOfMonth;
  780.68 +	TUint8		iDayOfWeek;
  780.69 +	TTzTimeReference iTimeReference;
  780.70 +	TUint16		iTimeOfChange;	// number of minutes since midnight
  780.71 +	TUint32		iReserved;
  780.72 +	};
  780.73 +	
  780.74 +
  780.75 +
  780.76 +/**
  780.77 +Encapsulates a collection of time zone rules, and includes the period covered by the rules
  780.78 +and the standard time offset at the start of that period.
  780.79 +
  780.80 +@publishedAll
  780.81 +@released
  780.82 +*/
  780.83 +class CTzRules : public CBase
  780.84 +	{
  780.85 +public:
  780.86 +	IMPORT_C static CTzRules* NewL();
  780.87 +	IMPORT_C static CTzRules* NewL(TInt aStartYear, TInt aEndYear);
  780.88 +	IMPORT_C static CTzRules* NewL(RReadStream& aStream);
  780.89 +	IMPORT_C ~CTzRules();
  780.90 +	IMPORT_C TBool RulesApply(const TTime& aTime) const;
  780.91 +	IMPORT_C void AddRuleL(TTzRule aRule);
  780.92 +	IMPORT_C void RemoveRule(TInt aIndex);
  780.93 +	IMPORT_C TTzRule& operator[](TInt aIndex);
  780.94 +	IMPORT_C TInt Count() const;
  780.95 +	IMPORT_C TInt StartYear() const;
  780.96 +	IMPORT_C TInt EndYear() const;
  780.97 +	IMPORT_C void SetStartYear(TInt aYear);
  780.98 +	IMPORT_C void SetEndYear(TInt aYear);
  780.99 +	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 780.100 +	IMPORT_C void InternalizeL(RReadStream& aStream);
 780.101 +	IMPORT_C TInt InitialStdTimeOffset() const;
 780.102 +	IMPORT_C void SetInitialStdTimeOffset(TInt aOffset);
 780.103 +	IMPORT_C void ConvertToUtcL(TTime& aLocalTime) const;
 780.104 +	IMPORT_C void ConvertToLocalL(TTime& aUtcTime) const;
 780.105 +	IMPORT_C CTzRules* CloneL() const;
 780.106 +	IMPORT_C TBool IsEqualTo(const CTzRules& aRules) const;
 780.107 +	
 780.108 +	IMPORT_C void GetActualisedRulesL(CVTzActualisedRules& aActRules) const;
 780.109 +	IMPORT_C TInt ConvertTime(CVTzActualisedRules& aRules, TTime& aTime, TTzTimeReference aTimerRef) const;
 780.110 +		
 780.111 +private:
 780.112 +	CTzRules();
 780.113 +	CTzRules(TInt aStartYear, TInt aEndYear);
 780.114 +	void GetActualisedRulesL(CVTzActualisedRules& aActRules, TInt aYear) const;
 780.115 +	TInt GetOffsetL(const TTime& aTime, TTzTimeReference aTimeRef) const;
 780.116 +	TInt AddActualisedRulesL(CVTzActualisedRules& aActRules, TInt aYear) const;
 780.117 +	TInt CompareTimesWithRef(TTime aTimeA, TTzTimeReference aTimeARef,
 780.118 +						     TTime aTimeB, TTzTimeReference aTimeBRef, TInt aStdOffset, TInt aWallOffset,
 780.119 +						     TTimeIntervalMinutes* aMinutesDifference) const;
 780.120 +
 780.121 +private:
 780.122 +	TInt16 iStartYear;
 780.123 +	TInt16 iEndYear;
 780.124 +	RArray<TTzRule> iRules;
 780.125 +	TInt iInitialStdTimeOffset;
 780.126 +	};
 780.127 +
 780.128 +
 780.129 +
 780.130 +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 780.131 + *	Actualised time zone rules
 780.132 + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 780.133 +
 780.134 +/**
 780.135 +Encapsulates a local time change.
 780.136 +
 780.137 +@publishedAll
 780.138 +@released
 780.139 +*/
 780.140 +class TVTzActualisedRule
 780.141 +	{
 780.142 +public:	
 780.143 +	IMPORT_C TVTzActualisedRule(TTime aTimeOfChange, TInt aNewOffset, TTzTimeReference aTimeReference);
 780.144 +	IMPORT_C TVTzActualisedRule();
 780.145 +		
 780.146 +	IMPORT_C void operator=(TVTzActualisedRule aRule);
 780.147 +	static TInt Order(const TVTzActualisedRule& aLeft, const TVTzActualisedRule& aRight);	
 780.148 +	
 780.149 +public:
 780.150 +	TTime iTimeOfChange;
 780.151 +	TInt32  iNewOffset;
 780.152 +	TTzTimeReference iTimeReference;
 780.153 +	};
 780.154 +	
 780.155 +	
 780.156 +/**
 780.157 +Encapsulates a collection of the local time changes occurring during a range of years.
 780.158 +
 780.159 +@publishedAll
 780.160 +@released
 780.161 +*/
 780.162 +NONSHARABLE_CLASS(CVTzActualisedRules) : public CBase
 780.163 +	{
 780.164 +public:
 780.165 +	IMPORT_C static CVTzActualisedRules* NewL(TInt aStartYear, TInt aEndYear);
 780.166 +	IMPORT_C ~CVTzActualisedRules();
 780.167 +	IMPORT_C void AddRuleL(const TVTzActualisedRule& aRule);
 780.168 +	IMPORT_C TInt Count() const;
 780.169 +	IMPORT_C TVTzActualisedRule& operator[](TInt aIndex) const;
 780.170 +
 780.171 +	IMPORT_C TInt StartYear() const;
 780.172 +	IMPORT_C TInt EndYear() const;
 780.173 +	
 780.174 +	IMPORT_C TBool IsDaylightSavingOn(TTime& aTime) const;
 780.175 +	IMPORT_C TInt GetOffsetFromRuleL(const TTime& aTime, TTzTimeReference aTimeRef) const;
 780.176 +	
 780.177 +private:
 780.178 +	CVTzActualisedRules(TInt aStartYear, TInt aEndYear);
 780.179 +	CVTzActualisedRules();
 780.180 +	TInt CompareTimesWithRef(TTime aRolloverTime, TTzTimeReference aTimeRefRollover, 
 780.181 +							 TTime aUserTime, TTzTimeReference aTimeRefUser,
 780.182 +							 TInt aOldWallOffset, TTimeIntervalMinutes& aDiffMinutes) const;
 780.183 +	
 780.184 +private:
 780.185 +	TInt32 iStartYear;		// years covered by 
 780.186 +	TInt32 iEndYear;		// the actualised rules
 780.187 +	RArray<TVTzActualisedRule> iRules;	
 780.188 +	};
 780.189 +
 780.190 +#endif
   781.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   781.2 +++ b/epoc32/include/mw/vwsdef.h	Wed Mar 31 12:27:01 2010 +0100
   781.3 @@ -0,0 +1,277 @@
   781.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   781.5 +// All rights reserved.
   781.6 +// This component and the accompanying materials are made available
   781.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   781.8 +// which accompanies this distribution, and is available
   781.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  781.10 +//
  781.11 +// Initial Contributors:
  781.12 +// Nokia Corporation - initial contribution.
  781.13 +//
  781.14 +// Contributors:
  781.15 +//
  781.16 +// Description:
  781.17 +//
  781.18 +
  781.19 +#ifndef __VWSDEF_H__
  781.20 +#define __VWSDEF_H__
  781.21 +
  781.22 +#include <e32std.h>
  781.23 +
  781.24 +/**
  781.25 +@publishedPartner
  781.26 +*/
  781.27 +#define KUidCustomCrossCheckValue 0x80282748
  781.28 +
  781.29 +/**
  781.30 +@publishedPartner
  781.31 +*/
  781.32 +const TUid KUidCustomCrossCheck={KUidCustomCrossCheckValue};
  781.33 +
  781.34 +class TVwsViewId
  781.35 +/** Identifies an application view using two unique identifiers (UIDs): a view 
  781.36 +UID and an application UID. 
  781.37 +
  781.38 +The application UID is required so that the application associated with the view 
  781.39 +can be started if it is not already running.
  781.40 +
  781.41 +@publishedAll 
  781.42 +@released */
  781.43 +	{
  781.44 +public:
  781.45 +	inline TVwsViewId();
  781.46 +	inline TVwsViewId(const TVwsViewId& aUid);
  781.47 +	inline TVwsViewId(TUid aAppUid,TUid aViewUid);
  781.48 +	inline TBool operator==(const TVwsViewId& aUid) const;
  781.49 +	inline TBool operator!=(const TVwsViewId& aUid) const;
  781.50 +public:
  781.51 +	/** A unique application ID (or application UID).
  781.52 +	
  781.53 +	Uniquely identifies the application associated with the view. */
  781.54 +	TUid iAppUid;
  781.55 +	/** A unique view ID (or view UID).
  781.56 +	
  781.57 +	Uniquely identifies the view. */
  781.58 +	TUid iViewUid;
  781.59 +	};
  781.60 +
  781.61 +/** @internalTechnology */
  781.62 +#define KNullViewId TVwsViewId(KNullUid,KNullUid)
  781.63 +
  781.64 +/** @internalTechnology */
  781.65 +const TInt KErrViewWrongMode=1; // !!! Wrong error code - should be -ve & unique
  781.66 +
  781.67 +
  781.68 +class TVwsViewIdAndMessage
  781.69 +/**
  781.70 +The TVwsViewIdAndMessage class identifies a view and encapsulates a message to
  781.71 +be read by the view when it is activated.
  781.72 +
  781.73 +@publishedAll 
  781.74 +@released 
  781.75 +*/
  781.76 +	{
  781.77 +public:
  781.78 +	inline TVwsViewIdAndMessage();
  781.79 +	inline TVwsViewIdAndMessage(const TVwsViewId& aId);
  781.80 +	inline TVwsViewIdAndMessage(const TVwsViewId& aId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
  781.81 +	inline TVwsViewIdAndMessage& operator=(const TVwsViewIdAndMessage& aVwsViewIdAndMessage);
  781.82 +public:
  781.83 +	TVwsViewId iViewId;
  781.84 +	TUid iCustomMessageId;
  781.85 +	TInt iCustomMessageLength;
  781.86 +	TPtrC8 iCustomMessage;
  781.87 +	};
  781.88 +
  781.89 +
  781.90 +
  781.91 +class TVwsViewEvent
  781.92 +/**
  781.93 +The TVwsViewEvent class encapsulates the attributes of a view server event.
  781.94 +These are:
  781.95 +- The event type
  781.96 +- The view ids of the two views associated with the event
  781.97 +- The attributes of any message which can go with the event.
  781.98 +
  781.99 +@publishedPartner
 781.100 +@released 
 781.101 +*/
 781.102 +	{
 781.103 +public:
 781.104 +	enum TVwsViewEventType
 781.105 +		{
 781.106 +		EVwsActivateView,
 781.107 +		EVwsDeactivateView,
 781.108 +		EVwsScreenDeviceChanged,
 781.109 +		EVwsDeactivationNotification,
 781.110 +		EVwsActivationNotification,
 781.111 +		EVwsDeactivateViewDifferentInstance
 781.112 +		};
 781.113 +public:
 781.114 +	inline TVwsViewEvent();
 781.115 +	inline TVwsViewEvent(TVwsViewEventType aEventType);
 781.116 +	inline TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId);
 781.117 +	inline TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId);
 781.118 +	inline TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId,TUid aCustomMessageId,TInt aCustomMessageLength);
 781.119 +public:
 781.120 +	/**
 781.121 +	The event type.
 781.122 +	*/
 781.123 +	TVwsViewEventType iEventType;
 781.124 +	/**
 781.125 +	The first view id associated with the event. This has a different meaning for each of the event types:
 781.126 +	- For ActivateView events, it is the view to activate
 781.127 +	- For DeactivateView events, it is the view to deactivate
 781.128 +	- For ScreenDeviceChange events, it is the id of the currently active view
 781.129 +	- For ActivationNotification events, it is the id of the activated view
 781.130 +	- For DeactivationNotification events, it is the id of the deactivated view
 781.131 +	*/
 781.132 +	TVwsViewId iViewOneId;
 781.133 +	/**
 781.134 +	The second view id associated with the event. This has a different meaning for each of the event types:
 781.135 +	- For ActivateView events, it is the view that will be deactivated
 781.136 +	- For DeactivateView events, it is the view that has been activated
 781.137 +	- For ScreenDeviceChange events, it is unused
 781.138 +	- For ActivationNotification events, it is the view that will be deactivated
 781.139 +	- For DeactivationNotification events, it is the id of the view that has been activated
 781.140 +	*/
 781.141 +	TVwsViewId iViewTwoId;
 781.142 +	/**
 781.143 +	The type of message being passed in the custom message buffer
 781.144 +	*/
 781.145 +	TUid iCustomMessageId;
 781.146 +	/**
 781.147 +	The length of the custom message being held by the server.
 781.148 +	To retrieve the message itself from the server, a buffer of this length must be allocated
 781.149 +	*/
 781.150 +	TInt iCustomMessageLength;
 781.151 +	};
 781.152 +
 781.153 +
 781.154 +//
 781.155 +// Typedefs.
 781.156 +//
 781.157 +/** @internalComponent */
 781.158 +typedef TPckgBuf<TVwsViewIdAndMessage> TVwsViewIdAndMessageBuf;
 781.159 +
 781.160 +/** @internalComponent */
 781.161 +typedef TPckgBuf<TVwsViewEvent> TVwsViewEventBuf;
 781.162 +
 781.163 +
 781.164 +//
 781.165 +// Inlines
 781.166 +//
 781.167 +
 781.168 +inline TVwsViewId::TVwsViewId()
 781.169 +/** Constructs a TVwsViewId object, and initialises both the application UID and 
 781.170 +the view UID to NULL. */
 781.171 +	: iAppUid(KNullUid), iViewUid(KNullUid) {}
 781.172 +
 781.173 +inline TVwsViewId::TVwsViewId(const TVwsViewId& aUid)
 781.174 +/** Constructs a new TVwsViewId object from an existing one. This simply performs 
 781.175 +a member-wise copy, each member variable of the passed in object is individually 
 781.176 +copied to the corresponding member variable of the new object.
 781.177 +
 781.178 +@param aUid A reference to the TVwsViewId object to be copied. */
 781.179 +	: iAppUid(aUid.iAppUid), iViewUid(aUid.iViewUid) {}
 781.180 +
 781.181 +inline TVwsViewId::TVwsViewId(TUid aAppUid,TUid aViewUid)
 781.182 +/** Constructs a TVwsViewId object with the specified application UID and view UID.
 781.183 +
 781.184 +@param aAppUid The application UID.
 781.185 +@param aViewUid The view UID. */
 781.186 +	: iAppUid(aAppUid), iViewUid(aViewUid) {}
 781.187 +
 781.188 +inline TBool TVwsViewId::operator==(const TVwsViewId& aUid) const
 781.189 +/** Checks whether the TVwsViewId object being operated upon and the TVwsViewId 
 781.190 +object specified are the same.
 781.191 +
 781.192 +Returns true if both application UIDs and both view UIDs are the same, otherwise 
 781.193 +returns false.
 781.194 +
 781.195 +@param aUid A reference to a TVwsViewId object.
 781.196 +@return ETrue if objects are the same, EFalse otherwise. */
 781.197 +	{
 781.198 +	return (aUid.iAppUid==iAppUid && aUid.iViewUid==iViewUid);
 781.199 +	}
 781.200 +
 781.201 +inline TBool TVwsViewId::operator!=(const TVwsViewId& aUid) const
 781.202 +/** Checks whether the TVwsViewId object being operated upon and the TVwsViewId 
 781.203 +object specified are different.
 781.204 +
 781.205 +Returns true if either the application UIDs or view UIDs are different, otherwise 
 781.206 +returns false.
 781.207 +
 781.208 +@param aUid A reference to a TVwsViewId object.
 781.209 +@return ETrue if objects are different, EFalse otherwise. */
 781.210 +	{
 781.211 +	return (aUid.iAppUid!=iAppUid || aUid.iViewUid!=iViewUid);
 781.212 +	}
 781.213 +
 781.214 +
 781.215 +/** Constructs a TVwsViewIdAndMessage object, and initialises it to contain a
 781.216 +NULL view UID and an empty message */
 781.217 +inline TVwsViewIdAndMessage::TVwsViewIdAndMessage()
 781.218 +	: iViewId(TVwsViewId()), iCustomMessageLength(0)
 781.219 +	{
 781.220 +	iCustomMessageId.iUid=0;
 781.221 +	iCustomMessage.Set(KNullDesC8);
 781.222 +	}
 781.223 +
 781.224 +/** Constructs a TVwsViewIdAndMessage object, and initialises it to contain the
 781.225 +specified view UID and an empty message
 781.226 +
 781.227 +@param aId A reference to the TVwsViewId to be used
 781.228 +*/
 781.229 +inline TVwsViewIdAndMessage::TVwsViewIdAndMessage(const TVwsViewId& aId)
 781.230 +	: iViewId(aId), iCustomMessageLength(0)
 781.231 +	{
 781.232 +	iCustomMessageId.iUid=0;
 781.233 +	iCustomMessage.Set(KNullDesC8);
 781.234 +	}
 781.235 +
 781.236 +/** Constructs a TVwsViewIdAndMessage object, and initialises it to contain the
 781.237 +specified view UID and the specified message
 781.238 +
 781.239 +@param aId A reference to the TVwsViewId to be used
 781.240 +@param aCustomMessageId The message Id to use
 781.241 +@param aCustomMessage A narrow descriptor containing the message
 781.242 +*/
 781.243 +inline TVwsViewIdAndMessage::TVwsViewIdAndMessage(const TVwsViewId& aId,TUid aCustomMessageId,const TDesC8& aCustomMessage)
 781.244 +	: iViewId(aId), iCustomMessageId(aCustomMessageId)
 781.245 +	{
 781.246 +	iCustomMessageLength=aCustomMessage.Length();
 781.247 +	iCustomMessage.Set(aCustomMessage);
 781.248 +	}
 781.249 +
 781.250 +/** Copies the contents of another TVwsViewIdAndMessage into this one
 781.251 +
 781.252 +@param aVwsViewIdAndMessage A reference to the TVwsViewIdAndMessage to be copied
 781.253 +
 781.254 +@return A reference to the object being copied into
 781.255 +*/
 781.256 +inline TVwsViewIdAndMessage& TVwsViewIdAndMessage::operator=(const TVwsViewIdAndMessage& aVwsViewIdAndMessage)
 781.257 +	{
 781.258 +	iViewId=aVwsViewIdAndMessage.iViewId;
 781.259 +	iCustomMessageId=aVwsViewIdAndMessage.iCustomMessageId;
 781.260 +	iCustomMessageLength=aVwsViewIdAndMessage.iCustomMessage.Length();
 781.261 +	iCustomMessage.Set(aVwsViewIdAndMessage.iCustomMessage);
 781.262 +	return(*this);
 781.263 +	}
 781.264 +
 781.265 +inline TVwsViewEvent::TVwsViewEvent() {}
 781.266 +
 781.267 +inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType)
 781.268 +	: iEventType(aEventType),iViewOneId(),iViewTwoId(),iCustomMessageId(KNullUid),iCustomMessageLength(0) {}
 781.269 +
 781.270 +inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId)
 781.271 +	: iEventType(aEventType),iViewOneId(aViewOneId),iViewTwoId(),iCustomMessageId(KNullUid),iCustomMessageLength(0) {}
 781.272 +
 781.273 +inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId)
 781.274 +	: iEventType(aEventType),iViewOneId(aViewOneId),iViewTwoId(aViewTwoId),iCustomMessageId(KNullUid),iCustomMessageLength(0) {}
 781.275 +
 781.276 +inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId,TUid aCustomMessageId,TInt aCustomMessageLength)
 781.277 +	: iEventType(aEventType),iViewOneId(aViewOneId),iViewTwoId(aViewTwoId),iCustomMessageId(aCustomMessageId),iCustomMessageLength(aCustomMessageLength) {}
 781.278 +
 781.279 +
 781.280 +#endif
   782.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   782.2 +++ b/epoc32/include/mw/wapattrdf.h	Wed Mar 31 12:27:01 2010 +0100
   782.3 @@ -0,0 +1,49 @@
   782.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   782.5 +// All rights reserved.
   782.6 +// This component and the accompanying materials are made available
   782.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   782.8 +// which accompanies this distribution, and is available
   782.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  782.10 +//
  782.11 +// Initial Contributors:
  782.12 +// Nokia Corporation - initial contribution.
  782.13 +//
  782.14 +// Contributors:
  782.15 +//
  782.16 +// Description:
  782.17 +// WAP Attribute Std
  782.18 +// Standard attribute keys
  782.19 +// 
  782.20 +//
  782.21 +
  782.22 +#ifndef __WAPATTRIBUTESTD_H
  782.23 +#define __WAPATTRIBUTESTD_H
  782.24 +
  782.25 +// Document node
  782.26 +//
  782.27 +_LIT(KWAPNodeMimeTypeAttributeName,"KWapAttrNodeMimeType");							// node mime type
  782.28 +_LIT(KWAPNodeContentEncodingTypeAttributeName,"KWapAttrNodeContentEncodingType");	// node content encoding type
  782.29 +_LIT(KWAPDocumentNodeURLAttributeName,"KWapAttrNodeURL");							// URL of node
  782.30 +
  782.31 +
  782.32 +// Data Storage node
  782.33 +//
  782.34 +_LIT(KWAPNodeErrorCodeAttributeName,"KWapAttrNodeErrorCode"); // node error code
  782.35 +
  782.36 +// Image nodes
  782.37 +//
  782.38 +_LIT(KWAPBitmapHandleAttributeName,"KWapAttrImgBmpHnd"); // standard bitmap handle
  782.39 +_LIT(KWAPZoomedBitmapHandleAttributeName,"KWapAttrImgZoomBmpHnd"); // zoomed bitmap handle
  782.40 +_LIT(KWAPZoomedBitmapZoomFactorAttributeName,"KWapAttrImgZoomFactor"); // zoomed bitmap zoom factor
  782.41 +
  782.42 +// Document root node
  782.43 +//
  782.44 +_LIT(KWAPDocumentValidStatusAttributeName,"KWapAttrDocValid"); // set if the doucment has been validated
  782.45 +_LIT(KWAPDocumentCompletedAttributeName,"KWapAttrDocCompleted"); // set if the doucment is complete
  782.46 +_LIT(KWAPDocumentWmlVersion,"KWapAAttrWmlVersion"); //1.1 or 1.2
  782.47 +
  782.48 +// Script Node
  782.49 +_LIT(KWAPScriptReferingCardUrl, "KWapAttrReferingUrl"); // URL to the card that refered to this script
  782.50 +
  782.51 +
  782.52 +#endif // __WAPATTRIBUTESTD_H
   783.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   783.2 +++ b/epoc32/include/mw/wapengstd.h	Wed Mar 31 12:27:01 2010 +0100
   783.3 @@ -0,0 +1,278 @@
   783.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   783.5 +// All rights reserved.
   783.6 +// This component and the accompanying materials are made available
   783.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   783.8 +// which accompanies this distribution, and is available
   783.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  783.10 +//
  783.11 +// Initial Contributors:
  783.12 +// Nokia Corporation - initial contribution.
  783.13 +//
  783.14 +// Contributors:
  783.15 +//
  783.16 +// Description:
  783.17 +// WAP Engine Standard 
  783.18 +// Standard status codes used by data handlers and the WAP engine. Note that some are exact duplicates of error
  783.19 +// codes from sub-components (e.g. HTTP) or from components outside of the WAP Browser (e.g. NetDial, ETEL)
  783.20 +// 
  783.21 +//
  783.22 +
  783.23 +#ifndef __WAPENGINESTANDARD_H__
  783.24 +#define __WAPENGINESTANDARD_H__
  783.25 +
  783.26 +// System includes
  783.27 +//
  783.28 +#include <e32std.h>
  783.29 +
  783.30 +//
  783.31 +// Status code offset for HTTP status values and stack connection progress
  783.32 +// e.g. HTTP/200 becomes KHttpPluginStatusBase + 200
  783.33 +//
  783.34 +const TInt KHttpPluginStatusBase = 1000;
  783.35 +const TInt KWapDocumentLoadStatusBase = 2000;
  783.36 +
  783.37 +typedef enum TWapEngineStatus
  783.38 +{
  783.39 +	// DRAFT
  783.40 +	// Some of these errors MAY be handled in the control level.
  783.41 +
  783.42 +	//
  783.43 +	// HTTP/1.1 Status/Error codes from 40x and 50x series
  783.44 +	//
  783.45 +	EWapErrHttp_505_HTTPVersionNotSupported = -20505,	// has to be 1.1 at the client end; talking to a 1.0 origin server might cause this? Or the client erroneously claiming to do HTTP/3 or something.
  783.46 +	EWapErrHttp_504_GatewayTimeout = -20504,			// not sure if this refers to Gateway in the WAP sense
  783.47 +	EWapErrHttp_503_ServiceUnavailable = -20503,		// ?
  783.48 +	EWapErrHttp_502_BadGateway = -20502,				// could occur with a badly configured WAP GW = e.g. the gateway uses a proxy which cannot be reached = there should probably be some indication to the user.
  783.49 +	EWapErrHttp_501_NotImplemented = -20501,			// duh. Bad server.
  783.50 +	EWapErrHttp_500_InternalServerError = -20500,		// bad news again; this one can either come from the origin server _or_ from the WAP GW, which may convert a different server code into 500 if the WML is bad. Report.
  783.51 +
  783.52 +	EWapErrHttp_415_UnsupportedMediaType = -20415,		// see RFC2068
  783.53 +	EWapErrHttp_414_RequestUriTooLong = -20414,			// report to user
  783.54 +	EWapErrHttp_413_RequestEntityTooLarge = -20413,		// see RFC2068
  783.55 +	EWapErrHttp_412_PreconditionFailed = -20412,		// see RFC2068
  783.56 +	EWapErrHttp_411_LengthRequired = -20411,			// error in our use of HTTP if this occurs.
  783.57 +	EWapErrHttp_410_Gone = -20410,						// like 404, except more definite! report to user.
  783.58 +	EWapErrHttp_409_Conflict = -20409,					// see RFC2068
  783.59 +	EWapErrHttp_408_RequestTimeout = -20408,			//  dealt with in HTTP, shouldn't have to be presented to the user
  783.60 +	EWapErrHttp_407_ProxyAuthenticationRequired = -20407,//  - not sure, we don't correctly deal with this at the moment. Is it needed?
  783.61 +	EWapErrHttp_406_NotAcceptable = -20406,				//  this is returned if the resource requested is not acceptable to the client according to its own accept- strings in the HTTP request header. e.g. accept-charset, accept (content types). accept-language. This shows that we're getting our headers wrong, so should be considered a software error and not be reported. I think.
  783.62 +	EWapErrHttp_405_MethodNotAllowed = -20405,			//  e.g. attempt to POST to a URL that is not appropriate for POSTing. Probably a result of poor site design?
  783.63 +	EWapErrHttp_404_NotFound = -20404,					//  document missing on origin server. This one would be a good one to report to the user since it happens frequently with badly maintained sites!
  783.64 +	EWapErrHttp_403_Forbidden = -20403,					// the server HTTPD does refuses to return the requested document, for internal reasons not necessarily disclosed to the client
  783.65 +	EWapErrHttp_402_PaymentRequired = -20402,			//  I don't think this is used in our world of e-commerce. RFC2068 says it is reserved for future use.
  783.66 +//
  783.67 +//														// NOTE THAT HTTP/401 IS NOT TREATED AS AN ERROR, BECAUSE IT IS
  783.68 +//														// FULLY HANDLED IN HTTP - see HTTP status codes below
  783.69 +//
  783.70 +	EWapErrHttp_400_BadRequest = -20400,				// client sent a request with a malformed syntax (in HTTP request headers) = I assume this indicates a programming error on our part ,and should not happen, or be reported?
  783.71 +
  783.72 +	//
  783.73 +	// HTTP Data Provider plug-in 'inherited' error codes
  783.74 +	//
  783.75 +	EWapErrHttpReceivingErrorDeck		= -20014,	// Could not find document, so receiving an error deck
  783.76 +	EWapErrHttpCancellationAbort		= -20013,	// Error code for leave when cancellation has occured during RunL()
  783.77 +	EWapErrHttpGatewaySessionDisconnect	= -20012,	// The session was disconnected by the WAP Gateway
  783.78 +	EWapErrHttpGatewayTransactionAbort	= -20011,	// A transaction was aborted by the gateway or the stack
  783.79 +	EWapErrHttpGatewayCannotBeReached	= -20010,	// A session could not be established with the WAP Gateway
  783.80 +	// Note that EWapErrHttpAuthenticationFailed and EWapErrHttpAuthenticationCancelled are now information status codes - see below.
  783.81 +	EWapErrHttpWtlsCipherRejected		= -20009,	// The user rejected the cipher strength negotiated in WTLS
  783.82 +	EWapErrHttpWtlsServerCertRejected	= -20008,	// The user rejected the certificate from the WAP GW
  783.83 +	EWapErrHttpWtlsBadServerCert		= -20007,	// WTLS rejected the certificate obtained from the WAP GW
  783.84 +	EWapErrHttpWtlsConfigFailed			= -20006,	// Failed to configure the WTLS layer of the WAP Stack
  783.85 +	EWapErrHttpNetDialSetupFailed		= -20005,	// Failed to configure Net Dial
  783.86 +	EWapErrHttpWapAPReadFailure			= -20004,	// An error occurred when reading the WAP AP from CommsDB
  783.87 +	EWapErrHttpUnsupportedMethod		= -20003,	// An HTTP method was specified that is not supported
  783.88 +	EWapErrHttpCannotFindPlugin			= -20002,	// Plug-in server failed to create an HTTP plugin
  783.89 +	EWapErrHttpCannotFindServer			= -20001,	// URL specified a non-existent or inaccessible domain
  783.90 +	EWapErrHttpGeneralError				= -20000,	// Unspecified error condition
  783.91 +
  783.92 +	//
  783.93 +	//	XMLLIB ERROR CODES
  783.94 +	//
  783.95 +
  783.96 +	// XmlLib
  783.97 +#define XmlLibErrorBase -13200
  783.98 +	EWapErrXmlLibInvalidDocument				= XmlLibErrorBase,
  783.99 +	EWapErrXmlLibDocumentBuffered				= XmlLibErrorBase -  1,
 783.100 +	EWapErrXmlLibDocumentAlreadyValid			= XmlLibErrorBase -  2,
 783.101 +	EWapErrXmlLibInvalidDTD						= XmlLibErrorBase -  3,
 783.102 +
 783.103 +	// Validator
 783.104 +#define XmlValidatorErrorBase -13100
 783.105 +	EWapErrXmlLibIllegalTagName					= XmlValidatorErrorBase,
 783.106 +	EWapErrXmlLibIllegalFixedAttributeValue		= XmlValidatorErrorBase -  1,
 783.107 +	EWapErrXmlLibMissingRequiredAttribute		= XmlValidatorErrorBase -  2,
 783.108 +	EWapErrXmlLibMissingDocument				= XmlValidatorErrorBase -  4,
 783.109 +	EWapErrXmlLibInvalidDocumentStructure		= XmlValidatorErrorBase -  6,
 783.110 +	EWapErrXmlLibIllegalAttributeValue			= XmlValidatorErrorBase -  7,
 783.111 +
 783.112 +	// Parser
 783.113 +#define XmlParserErrorBase -13000
 783.114 +	EWapErrXmlLibMissingCDATASectionEndTag		= XmlParserErrorBase,
 783.115 +	EWapErrXmlLibInvalidAttributeDeclaration	= XmlParserErrorBase -  1,
 783.116 +	EWapErrXmlLibEndTagMismatch					= XmlParserErrorBase -  2,
 783.117 +	EWapErrXmlLibInvalidCharacterReference		= XmlParserErrorBase -  3,
 783.118 +	EWapErrXmlLibUnknownEntityReference			= XmlParserErrorBase -  4,
 783.119 +	EWapErrXmlLibNoDTD							= XmlParserErrorBase -  5,
 783.120 +	EWapErrXmlLibMissingDocumentRootNode		= XmlParserErrorBase -  6,
 783.121 +	EWapErrXmlLibInvalidXmlVersionDefinition	= XmlParserErrorBase -  7,
 783.122 +	EWapErrXmlLibRootElementNameMismatch		= XmlParserErrorBase -  8,
 783.123 +
 783.124 +
 783.125 +	//
 783.126 +	//	WMLLIB ERROR CODES
 783.127 +	//
 783.128 +
 783.129 +	// WmlLib
 783.130 +	// No WmlLib (interface module) specific errors defined
 783.131 +
 783.132 +	// Validator
 783.133 +#define WmlValidatorErrorBase -12100
 783.134 +	EWapErrWmlLibAccessViolation			= WmlValidatorErrorBase -   1,
 783.135 +	EWapErrWmlLibInvalidVariableReference	= WmlValidatorErrorBase - 	2,
 783.136 +	EWapErrWmlLibInvalidConversionMethod	= WmlValidatorErrorBase -   3,
 783.137 +	EWapErrWmlLibIllegalVariableName		= WmlValidatorErrorBase -   4,
 783.138 +	EWapErrWmlLibIllegalTaskCountOnAnchor	= WmlValidatorErrorBase -   5,
 783.139 +	EWapErrWmlLibNULLVariableName			= WmlValidatorErrorBase -   6,
 783.140 +	EWapErrWmlLibNestedTables               = WmlValidatorErrorBase -   7,
 783.141 +	EWapErrWmlLibDuplicateDoNodeName        = WmlValidatorErrorBase -   8,
 783.142 +	EWapErrWmlLibUsageOfReservedWord        = WmlValidatorErrorBase -   9,
 783.143 +	EWapErrWmlLibZeroTableColumns           = WmlValidatorErrorBase -  10,
 783.144 +	EWapErrWmlLibNonWmlDocument				= WmlValidatorErrorBase -  11,
 783.145 +	EWapErrWmlLibMultipleMetaPropertyName   = WmlValidatorErrorBase -  12,
 783.146 +	EWapErrWmlLibEventBindingConflict       = WmlValidatorErrorBase -  14,
 783.147 +	EWapErrWmlLibMultipleAccessElements		= WmlValidatorErrorBase -  15,
 783.148 +	EWapErrWmlLibNonUniqueIds				= WmlValidatorErrorBase -  16,
 783.149 +	EWapErrWmlLibVariableInInvalidLocation	= WmlValidatorErrorBase -  17,
 783.150 +
 783.151 +	// Parser
 783.152 +#define WmlParserErrorBase -12000
 783.153 +	EWapErrWmlLibNullNode					= WmlParserErrorBase,
 783.154 +	EWapErrWmlLibCDATANodeWithoutParent		= WmlParserErrorBase -   1,
 783.155 +
 783.156 +
 783.157 +	// 
 783.158 +	// WAP Engine 'native' error codes
 783.159 +	//
 783.160 +	EWapErrSubDocumentNotFound	= -10027,
 783.161 +	EWapErrCannotCreateDeck		= -10026,			// Failed to create a deck
 783.162 +	EWapErrMimeTypeMissing		= -10025,			// Engine tried to access the mime-type attribute in a
 783.163 +													// tree node but it was missing
 783.164 +	EWapErrUnknownDocument		= -10024,
 783.165 +	EWapErrInvalidDTD			= -10023,
 783.166 +	EWapErrDTDUnavailable		= -10022,			// Document cannot be validated as DTD is not available
 783.167 +
 783.168 +	EWapErrUnknownScheme = -10021,					// unknown scheme
 783.169 +	EWapErrCorruptScheme = -10020,					// scheme contains invalid characters
 783.170 +	EWapErrCorruptUrl	 = -10019,					// part of url contains invalid characters
 783.171 +
 783.172 +	EWapErrPluginNotFound = -10018,					// couldn't find the requested plugin
 783.173 +
 783.174 +	EWapErrImageConversionFailed = -10017,			// image data handler got error from media server
 783.175 +
 783.176 +	EWapErrAccessPointNotSetUpForCSD	=  -10016,	// Access point lacked info for Data call
 783.177 +	EWapErrAccessPointNotSetUpForSMS	=  -10015,
 783.178 +	EWapErrAccessPointNotSetUpForUSSD	=  -10014,
 783.179 +	EWapErrAccessPointNotSetUpGeneric	=  -10013,
 783.180 +	EWapErrProtocolNotSupported			=  -10012,	// Current network does not support the requested service
 783.181 +
 783.182 +	EWapErrAuthorizationFailed			= -10011,
 783.183 +		
 783.184 +	EWapErrScriptObscureLibraryCall	= -10010,		// The script function was unavailable
 783.185 +	EWapErrScriptIllegalAction		= -10009,		// The script attempted an illegal action and was terminated
 783.186 +	EWapErrScriptCorrupt			= -10008,		// Script had errors
 783.187 +	EWapErrScriptError				= -10007,		// Script returned a fatal error
 783.188 +	EWapErrScriptNotFound			= -10006,		// Requested script was not found
 783.189 +		
 783.190 +	EWapErrDataCallUnavailable	= -10005,			// The data call is being used by another application
 783.191 +	EWapErrDataCallDropped		= -10004,			// CSD connection was closed 
 783.192 +
 783.193 +	EWapErrAccessViolation		= -10003,			// Access to the document was denied
 783.194 +	EWapErrDocumentCorrupted	= -10002,
 783.195 +	EWapErrDocumentNotFound		= -10001,
 783.196 +	EWapErrGeneral				= -10000,
 783.197 +
 783.198 +	//
 783.199 +	// PPP connection 'inherited' error codes
 783.200 +	//
 783.201 +	EWapErrPppIfLRDBadLine			   = -3059,	// ??
 783.202 +	EWapErrPppIfDNSNotFound			= -3058,	// ??
 783.203 +	EWapErrPppIfCallbackNotAcceptable = -3057,	// NTRAS: client requested server Callback but was refused
 783.204 +	EWapErrPppIfChangingPassword      = -3056,	// NTRAS: User's password is currently being changed
 783.205 +	EWapErrPppIfNoDialInPermission    = -3055,	// NTRAS: User has not got dial-in permission on the server
 783.206 +	EWapErrPppIfPasswdExpired         = -3054,	// NTRAS: User's password has expired
 783.207 +	EWapErrPppIfRestrictedLogonHours  = -3053,	// NTRAS: User is attempting to log-in outside their hours
 783.208 +	EWapErrPppIfAccountDisabled       = -3052,	// NTRAS: User's account has been disabled
 783.209 +	EWapErrPppIfAuthNotSecure         = -3051,	// ??
 783.210 +	EWapErrPppIfAuthenticationFailure = -3050,	// The supplied password was wrong??
 783.211 +
 783.212 +	//
 783.213 +	// NetDial 'inherited' error codes
 783.214 +	//
 783.215 +	EWapErrNetDialScriptError	= -3005,	// NetDial Exit Condition - Script Error
 783.216 +	EWapErrNetDialScriptTimeOut	= -3004,	// NetDial Exit Condition - Script Timed Out
 783.217 +	EWapErrNetDialLoginFail		= -3003,	// NetDial Exit Condition - Login Failure
 783.218 +	EWapErrNetDialModemError	= -3002,	// NetDial Exit Condition - Modem error
 783.219 +	EWapErrNetDialNoModem		= -3001,	// NetDial Exit Condition - No Modem Response
 783.220 +
 783.221 +	//
 783.222 +	// ETEL 'inherited' error codes
 783.223 +	//
 783.224 +	EWapErrEtelModemSettingsCorrupt		= -2018,
 783.225 +	EWapErrEtelModemNotDetected			= -2017,
 783.226 +	EWapErrEtelAnswerAlreadyOutstanding	= -2016,
 783.227 +	EWapErrEtelUnknownModemCapability		= -2015,
 783.228 +	EWapErrEtelWrongModemType				= -2014,
 783.229 +	EWapErrEtelPortNotLoanedToClient		= -2013,
 783.230 +	EWapErrEtelNotFaxOwner					= -2012,
 783.231 +	EWapErrEtelFaxChunkNotCreated			= -2011,
 783.232 +	EWapErrEtelConfigPortFailure			= -2010,
 783.233 +	EWapErrEtelNoDialTone					= -2009,
 783.234 +	EWapErrEtelNoAnswer					= -2008,
 783.235 +	EWapErrEtelCallNotActive				= -2007,
 783.236 +	EWapErrEtelInitialisationFailure		= -2006,
 783.237 +	EWapErrEtelNoClientInterestedInThisCall= -2005,
 783.238 +	EWapErrEtelBusyDetected				= -2004,
 783.239 +	EWapErrEtelNoCarrier					= -2003,
 783.240 +	EWapErrEtelAlreadyCallOwner			= -2002,
 783.241 +	EWapErrEtelDuplicatePhoneName			= -2001,
 783.242 +	EWapErrEtelNotCallOwner				= -2000,
 783.243 +
 783.244 +	//
 783.245 +	// General EPOC 'inherited' error codes
 783.246 +	//
 783.247 +	EWapErrEpocTimedOut						= -33,
 783.248 +	EWapErrEpocNotFound						= -1,
 783.249 +	EWapErrEpocAccessDenied						= -21,
 783.250 +
 783.251 +	// 
 783.252 +	// 
 783.253 +	// Wap engine status messages
 783.254 +	//
 783.255 +	EWapStatusDownloadProgress = 1,		// Amount complete in aValue (0...100)
 783.256 +	EWapStatusDownloadComplete,			// Document fetch is complete
 783.257 +	EWapStatusSubDocumentChanged,		// XML subdocument (card in WML) has changed 
 783.258 +	EWapStatusRefreshRequest,			// Observer is requested to refresh display
 783.259 +	EWapStatusError,					// Error
 783.260 +	EWapStatusInformational,			// Information other than download progress
 783.261 +	EWapStatusInitialisingConnection	= KHttpPluginStatusBase,
 783.262 +	EWapStatusConnecting				= KHttpPluginStatusBase + 1,
 783.263 +	EWapStatusAuthenticating			= KHttpPluginStatusBase + 2,
 783.264 +	EWapStatusConnected					= KHttpPluginStatusBase + 3,
 783.265 +	EWapStatusDisconnecting				= KHttpPluginStatusBase + 4,
 783.266 +	EWapStatusHttpAuthenticationFailed	= KHttpPluginStatusBase + 10,		// The user's password was rejected by the origin server
 783.267 +	EWapStatusHttpAuthenticationAborted	= KHttpPluginStatusBase + 11,		// The user cancelled the password box
 783.268 +	EWapStatusHttp_401_Unauthorized		= KHttpPluginStatusBase + 401,		// occurs when HTTP authentication is used, username/password dialogs raised as a response. Need to consider how UI deals with authentication failures here.
 783.269 +	EWapStatusValidating				= KWapDocumentLoadStatusBase,		// Validating document
 783.270 +	EWapStatusReceivingErrorDeck		= KWapDocumentLoadStatusBase + 1	// Receiving error deck
 783.271 +
 783.272 +} TWapEngineStatus;
 783.273 +
 783.274 +enum TWmlFetchFlag
 783.275 +	{
 783.276 +	EWmlFetchNoFlag		= 0x00,
 783.277 +	EWmlFetchReload		= 0x01,
 783.278 +	EWmlFetchTimerFetch	= 0x02
 783.279 +	};
 783.280 +
 783.281 +#endif // __WAPENGINESTANDARD_H__
   784.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   784.2 +++ b/epoc32/include/mw/waplog.h	Wed Mar 31 12:27:01 2010 +0100
   784.3 @@ -0,0 +1,37 @@
   784.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   784.5 +// All rights reserved.
   784.6 +// This component and the accompanying materials are made available
   784.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   784.8 +// which accompanies this distribution, and is available
   784.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  784.10 +//
  784.11 +// Initial Contributors:
  784.12 +// Nokia Corporation - initial contribution.
  784.13 +//
  784.14 +// Contributors:
  784.15 +//
  784.16 +// Description:
  784.17 +// WAP Logging public header, defines the name of the 
  784.18 +// file to use for WAP activity logging messages
  784.19 +// 
  784.20 +//
  784.21 +
  784.22 +#if !defined(__WAPLOG_H__)
  784.23 +#define __WAPLOG_H__
  784.24 +
  784.25 +#if !defined(__E32STD_H__)
  784.26 +#include <e32std.h>
  784.27 +#endif
  784.28 +
  784.29 +#ifdef _DEBUG
  784.30 +/**
  784.31 +@publishedAll
  784.32 +@deprecated
  784.33 +*/
  784.34 +_LIT(KWapLogFileName,"WAPLog.html");
  784.35 +#define __LOG_WAP_FILE_NAME KWapLogFileName
  784.36 +#else
  784.37 +#define __LOG_WAP_FILE_NAME
  784.38 +#endif
  784.39 +
  784.40 +#endif
   785.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   785.2 +++ b/epoc32/include/mw/wappdef.h	Wed Mar 31 12:27:01 2010 +0100
   785.3 @@ -0,0 +1,223 @@
   785.4 +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   785.5 +// All rights reserved.
   785.6 +// This component and the accompanying materials are made available
   785.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   785.8 +// which accompanies this distribution, and is available
   785.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  785.10 +//
  785.11 +// Initial Contributors:
  785.12 +// Nokia Corporation - initial contribution.
  785.13 +//
  785.14 +// Contributors:
  785.15 +//
  785.16 +// Description:
  785.17 +// Definitions of WBXML message tokens for use in the Wap  Parser, WAPP
  785.18 +// 
  785.19 +//
  785.20 +
  785.21 +#if !defined (__WAPPDEF_H__)
  785.22 +#define __WAPPDEF_H__
  785.23 +
  785.24 +// *********      GENERAL WBXML TOKENS       ***************
  785.25 +// WBXML global tokens - applicable to all messages
  785.26 +// See WAP Binary XML Content Format, 16-Jun-99, p16.  
  785.27 +// These and our message specific tokens define our DTD
  785.28 +
  785.29 +// As our DTD is hard coded into the app, we don't use the following - 
  785.30 +//		SWITCH_PAGE - not defined as we only have 1 page
  785.31 +//		EXT_I_0, EXT_I_1, EXT_I_2
  785.32 +//		PI - don't define processing inline - all hard coded
  785.33 +//		LITERAL,LITERAL_C,LITERAL_A,LITERAL_AC  - not using literals, don't define elements inline
  785.34 +//		EXT_T_0,EXT_T_1,EXT_T_2, EXT_0, EXT_1, EXT_2  - not using document extensions
  785.35 +//		OPAQUE - not using opaque data
  785.36 +
  785.37 +#define KWAPP_STR_TERM  0x00	// Basically the NULL terminator character for a string
  785.38 +#define KWAPP_END_TAG	0x01    // Code for the end of an element
  785.39 +#define KWAPP_ENTITY	0x02    // indicates the start of a character entity number
  785.40 +#define KWAPP_STR_I		0x03    // indicates the start of an inline string,
  785.41 +								// terminated by '\0', OR STR_TERMINATOR
  785.42 +#define	KWAPP_STR_T		0X83    // a reference to the string table follows. Token is followed
  785.43 +								// by multi byte Int32 referencing an offset in the string table
  785.44 +
  785.45 +#define KWAPP_TAG_CONTENT		0x40 // Bit 6 of the Wap Tag is set when a element has content
  785.46 +#define KWAPP_TAG_ATTRIBUTES	0x80 // Bit 7 of Tag is set when the element has attributes
  785.47 +#define KWAPP_TAG_ATTRIBUTES_CONTENT 0XC0  // Bits 6 & 7 are set - attributes and content
  785.48 +#define KWAPP_MB_INT32_CONTINUATION  0x80  // Continuation Bit of an octet of a Multibyte 32 bit int is set.
  785.49 +// Binary encoding for remote configuration of WAP browser settings
  785.50 +// same as for the Nokia 7110 
  785.51 +
  785.52 +// **********    APPLICATION SPECIFIC CODE LEVEL TAG TOKENS    *************
  785.53 +#define	KWAPP_CHAR_LIST		  0x05	// Code level tag (CLT), indicates start 
  785.54 +									// of a characteristic list element
  785.55 +#define KWAPP_CHARACTERISTIC  0x06	// code level tag (CLT), indicates start 
  785.56 +									// of a characteristic element
  785.57 +#define KWAPP_PARM			  0x07	// CLT  indicating start of a 
  785.58 +									// attribute element of a characteristic
  785.59 +
  785.60 +// ***************	 ATTRIBUTE TOKENS    *****************************
  785.61 +#define KWAPP_TYPE				0x05 // Undocumented token which indicates the 
  785.62 +								  	 // start of a TYPE attribute i.e. "TYPE="
  785.63 +#define KWAPP_ADDR_TYPE			0x06 // Characteristic type  = ADDRESS
  785.64 +#define KWAPP_URL_TYPE			0x07 // Characteristic type = URL 
  785.65 +#define KWAPP_NAME_TYPE			0x08 // Characteristic Type = NAME 
  785.66 +#define KWAPP_ID				0x7D // Characteristic Type = ID 
  785.67 +#define KWAPP_BOOKMARK			0x7F // Characteristic Type = BOOKMARK
  785.68 +
  785.69 +#define KWAPP_NAME_ATTRIB		0x10 // A NAME attribute follows, i.e "NAME="
  785.70 +#define KWAPP_VALUE_ATTRIB		0x11 // A VALUE attribute follows, i.e "VALUE"
  785.71 +
  785.72 +// ***************   PARM TYPES and VALUES  ***************************
  785.73 +#define KWAPP_BEARER			0x12 // This is a BEARER element 
  785.74 +#define KWAPP_PROXY				0x13 // This is a PROXY 
  785.75 +#define KWAPP_PORT				0x14 // PORT element
  785.76 +#define KWAPP_NAME				0x15 // This is a NAME element 
  785.77 +
  785.78 +// IMPORTANT tag 0x16 had different meanings for different versions of the OTA settings 
  785.79 +// Not in Ver 4.0, = ICON token in Version 4.3 but 4.3 NOT SUPPORTED!!
  785.80 +
  785.81 +#define KWAPP_PROXYTYPE			0x16 // PROXY_TYPE in Settings specification version 5.0!
  785.82 +
  785.83 +#define KWAPP_URL				0x17 // Not defined for Version 4.0
  785.84 +									 // Start of a URL, i.e. "TYPE=URL" for Version 5.0 
  785.85 +#define KWAPP_PROXY_AUTHNAME	0x18 // Not defined for Ver. 4.0 - website uses Proxy token and inline string "AUTHNAME"
  785.86 +									 // Version 5.0 - proxy name follows
  785.87 +#define KWAPP_PROXY_AUTHSECRET	0x19 // Not defined for Version 4.0 - use Proxy token and inline string
  785.88 +									 // Versions 5.0 - the password for the proxy follows
  785.89 +#define KWAPP_SMS_SMSC_ADDR		0x1A // Service centre address for SMS service
  785.90 +#define KWAPP_USSD_SERV_CODE	0x1B // Service centre address for USSD service
  785.91 +#define KWAPP_ACCESS_POINT_NAME	0x1C // GPRS access point
  785.92 +#define KWAPP_PPP_LOGIN_TYPE	0x1D 
  785.93 +#define KWAPP_PROXY_LOGIN_TYPE	0x1E 
  785.94 +#define KWAPP_CSD_DIALSTRING	0x21 // Dialing sting for CSD gateway
  785.95 +#define KWAPP_PPP_AUTHTYPE		0x22 // type of authentification
  785.96 +#define KWAPP_PPP_AUTHNAME		0x23 // authentification name
  785.97 +#define KWAPP_PPP_AUTHSECRET	0x24 // authentification password
  785.98 +#define KWAPP_PPP_LOGINTYPE		0x25 // authentification password
  785.99 +#define	KWAPP_CSD_CALLTYPE		0x28 // CSD calltype 
 785.100 +#define KWAPP_CSD_CALLSPEED		0x29 // CSD callspeed
 785.101 +
 785.102 +#define KWAPP_GSM_SMS_OLD		0x41 // Defined as GSM\SMS in Nokia Spec version 4.0,but not 5.0
 785.103 +									 // Distinguish it's Ver 4.0 by WAP Version ( = 1.0 )
 785.104 +									 // For versions 5.0 the WAP  XML version = 1.1, & token = 0x46 
 785.105 +
 785.106 +#define KWAPP_GSM_CSD			0x45 // GSM CSD service 
 785.107 +
 785.108 +// IMPORTANT tag 0x46 has multiple meaning across different versions of the Over the Air settings
 785.109 +#define KWAPP_GSM_SMS_NEW		0x46 // Not defined for Version 4.0
 785.110 +									 //  GSM SMS  Nokia spec version 5.0
 785.111 +
 785.112 +#define KWAPP_GSM_USSD			0x47 //  Unstructured Short Service Data service 
 785.113 +									 //  Not defined for version 4.0  
 785.114 +
 785.115 +//IMPORTANT tag 0x48 has different meanings in different versions of the Over the Air Settings specs
 785.116 +#define KWAPP_IS136				0x48 // Not defined for Version 4.0
 785.117 +									 // IS-136/CSD service in Nokia spec version 5.0
 785.118 +
 785.119 +#define KWAPP_GPRS				0x49 // GSM/GPRS service  - added in OTA v6.0
 785.120 +
 785.121 +
 785.122 +#define KWAPP_PORT_9200			0x60 // Port 9200 - non continuous and not secure
 785.123 +#define KWAPP_PORT_9201			0x61 // Port 9201 - continuous but not secure
 785.124 +#define KWAPP_PORT_9202			0x62 // Indicates port 9202 - secure but non continuous conection
 785.125 +#define KWAPP_PORT_9203			0x63 // Indicates port 9203 - secure and continuous 
 785.126 +#define KWAPP_AUTOMATIC			0x64 
 785.127 +#define KWAPP_MANUAL			0x65 
 785.128 +#define KWAPP_SPEED_AUTO		0x6A // Use auto selection of speed
 785.129 +#define KWAPP_SPEED_9600		0x6B // Indicates comm speed is 9600
 785.130 +#define KWAPP_SPEED_14400		0x6C // Indicates comm speed is 14400
 785.131 +#define	KWAPP_SPEED_19200		0x6D // Comm speed is 19200
 785.132 +#define KWAPP_SPEED_28800		0x6E // Comms speed is 28800
 785.133 +#define KWAPP_SPEED_38400		0x6F // Comms speed is 38400
 785.134 +#define KWAPP_PAP				0x70 // Interface protocol = PAP
 785.135 +#define KWAPP_CHAP				0x71 // Interface protocol = CHAP
 785.136 +#define KWAPP_ANALOGUE			0x72 // Analogue connection
 785.137 +#define KWAPP_ISDN				0x73 // Digital ISDN connection
 785.138 +#define KWAPP_SPEED_43200		0x74 // Communication speed of 42K
 785.139 +#define KWAPP_SPEED_56700		0x75 // Comm speed of 56k
 785.140 +#define KWAPP_MSISDN_NO			0x76 // Proxy type is MSISDN number (relevant for USSD)
 785.141 +#define KWAPP_IPV4				0x77 // Proxy type is an IP address (relevant for USSD)
 785.142 +#define KWAPP_MSCHAP			0x78 // Interface protocol = CHAP
 785.143 +#define KWAPP_NAME_ISP			0X7E // Start of Internet Service Provider follows
 785.144 +#define KWAPP_MMS_URL			0x7C // Address of Multi Media Service Centre -added in OTA v7.0
 785.145 +
 785.146 +
 785.147 +// Labels for use in array of ParsedFields - application specific not Nokia 
 785.148 +
 785.149 +// CHARACTERISTIC DELIMITORS
 785.150 +_LIT(KWappCharAddress,	"CHAR-ADDRESS"); // Start of an Address Characteristic
 785.151 +_LIT(KWappCharName,		"CHAR-NAME");	 // Start of a Name Characteristic
 785.152 +_LIT(KWappCharURL,		"CHAR-URL");	 // Start of a URL Characteristic	
 785.153 +_LIT(KWappCharMMSURL,	"CHAR-MMSURL");	 // Start of a URL Characteristic	
 785.154 +_LIT(KWappCharBookmark, "CHAR-BOOKMARK");// Start of a Bookmark Characteristic
 785.155 +_LIT(KWappCharID,		"CHAR-ID");		 // Start of an ID characteristic
 785.156 +
 785.157 +_LIT(KWappXMLversion,"VERSIONx10");
 785.158 +_LIT(KWappPublicID, "PUBLICID");
 785.159 +_LIT(KWappCharacterSet, "CHARSET");
 785.160 +
 785.161 +//XML Document Characteristic Tags
 785.162 +_LIT(KWappAddr, "ADDRESS");  
 785.163 +_LIT(KWappURL, "URL");
 785.164 +_LIT(KWappMMSURL, "MMSURL"); // Added in v6.6 of Nokia OTA Spec
 785.165 +_LIT(KWappName, "NAME");  
 785.166 +_LIT(KWappBookmark, "BOOKMARK");
 785.167 +_LIT(KWappID, "ID");
 785.168 +
 785.169 +
 785.170 +// General tags
 785.171 +_LIT(KWappBearer, "BEARER");
 785.172 +_LIT(KWappProxy, "PROXY");
 785.173 +_LIT(KWappPort, "PORT");
 785.174 +_LIT(KWappProxyType, "PROXY_TYPE");
 785.175 +
 785.176 +_LIT(KWappProxyAuthName, "PROXY_AUTHNAME");
 785.177 +_LIT(KWappProxyAuthSecret, "PROXY_AUTHSECRET");
 785.178 +_LIT(KWappProxyLoginType, "PROXY_LOGINTYPE");
 785.179 +_LIT(KWappSMSCAddress, "SMS_SMSC_ADDRESS");
 785.180 +_LIT(KWappUSSDCode, "USSD_SERVICE_CODE");
 785.181 +_LIT(KWappISP, "ISP_NAME");
 785.182 +_LIT(KWappAccessPointName, "ACCESS_POINT_NAME");
 785.183 +
 785.184 +_LIT(KWappCsdDial, "CSD_DIALSTRING");
 785.185 +_LIT(KWappPPPAuthType, "PPP_AUTHTYPE");
 785.186 +_LIT(KWappPPPAuthName, "PPP_AUTHNAME");
 785.187 +_LIT(KWappPPPAuthSecret, "PPP_AUTHSECRET");
 785.188 +_LIT(KWappPPPLoginType, "PPP_LOGINTYPE");
 785.189 +_LIT(KWappCsdCallType, "CSD_CALLTYPE");
 785.190 +_LIT(KWappCsdCallSpeed, "CSD_CALLSPEED");
 785.191 +
 785.192 +_LIT(KWappGsmCsd, "GSM/CSD");
 785.193 +_LIT(KWappGsmSms, "GSM/SMS");
 785.194 +_LIT(KWappGsmUssd, "GSM/USSD");
 785.195 +_LIT(KWappIS136Csd, "IS136/CSD");
 785.196 +_LIT(KWappGprs, "GPRS");   // Added in OTA v6.0
 785.197 +
 785.198 +_LIT(KWappPort9200, "9200");
 785.199 +_LIT(KWappPort9201, "9201");
 785.200 +_LIT(KWappPort9202, "9202");
 785.201 +_LIT(KWappPort9203, "9203");
 785.202 +
 785.203 +_LIT(KWappSpeedAuto, "AUTO");
 785.204 +_LIT(KWappSpeed9600, "9600");
 785.205 +_LIT(KWappSpeed14400, "14400");
 785.206 +// Additional speeds added in Version 5.0
 785.207 +_LIT(KWappSpeed19200, "19200");
 785.208 +_LIT(KWappSpeed28800, "28800");
 785.209 +_LIT(KWappSpeed38400, "38400");
 785.210 +_LIT(KWappSpeed43200, "43200");
 785.211 +_LIT(KWappSpeed56700, "57600");
 785.212 +
 785.213 +_LIT(KWappPAP, "PAP");
 785.214 +_LIT(KWappCHAP, "CHAP");
 785.215 +_LIT(KWappMSCHAP, "MSCHAP");
 785.216 +_LIT(KWappAnalogue, "ANALOGUE");
 785.217 +_LIT(KWappISDN, "ISDN");
 785.218 +
 785.219 +_LIT(KWappAuthAutomatic, "AUTOMATIC");
 785.220 +_LIT(KWappAuthManual, "MANUAL");
 785.221 +
 785.222 +_LIT(KWappMsisdnNo, "MSISDN_NO");
 785.223 +_LIT(KWappIpv4, "IPV4");
 785.224 +
 785.225 +
 785.226 +#endif
   786.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   786.2 +++ b/epoc32/include/mw/waptestutils.h	Wed Mar 31 12:27:01 2010 +0100
   786.3 @@ -0,0 +1,146 @@
   786.4 +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
   786.5 +// All rights reserved.
   786.6 +// This component and the accompanying materials are made available
   786.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   786.8 +// which accompanies this distribution, and is available
   786.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  786.10 +//
  786.11 +// Initial Contributors:
  786.12 +// Nokia Corporation - initial contribution.
  786.13 +//
  786.14 +// Contributors:
  786.15 +//
  786.16 +// Description:
  786.17 +//
  786.18 +
  786.19 +#if !defined(__WAPTESTUTILS_H__)
  786.20 +#define __WAPTESTUTILS_H__
  786.21 +
  786.22 +#include <e32base.h>
  786.23 +#include <e32test.h>
  786.24 +#include <f32file.h>
  786.25 +#include <flogger.h>
  786.26 +
  786.27 +#if !defined(__LOGGING)
  786.28 +	#define __LOGGING
  786.29 +#endif
  786.30 +
  786.31 +#include "waplog.h"
  786.32 +#include "logdef.h"
  786.33 +
  786.34 +//	Constants
  786.35 +const TUid KUidWapTestUtils = {0x10005188};
  786.36 +const TInt KMaxUserEntrySize = 50;
  786.37 +
  786.38 +//Test Harness Logging
  786.39 +
  786.40 +#define KLogsDir				_L("c:\\logs\\")
  786.41 +#define KWapLogsDirName			_L("WapTest")
  786.42 +
  786.43 +#define KTestHeader				_L("Test Results")
  786.44 +#define KTestStarting			_L("Test %d Starting")
  786.45 +#define KTestStartingWithDesc	_L("Test %d Starting (%S)")
  786.46 +#define KNextTestStepWithDesc	_L("Test %d Step %d (%S)")
  786.47 +#define KTestPassed				_L("Test %d OK")
  786.48 +#define KTestFailed				_L("Test %d FAILED (error = %d)")
  786.49 +#define KTestHarnessCompleted	_L("Tests Completed Ok")
  786.50 +#define KTestHarnessFailed		_L("Test FAILED (%d failed test(s))")
  786.51 +#define KTestFailInfo			_L("Test %d : %S failed with Error %d") 
  786.52 +#define KTestCommentPrepend		_L("\t")
  786.53 +
  786.54 +
  786.55 +class CWapTestHarness : public CBase
  786.56 +/**
  786.57 +	Test harness providing logging features
  786.58 +	@publishedAll
  786.59 +	@released
  786.60 +*/
  786.61 +
  786.62 +	{
  786.63 +public:
  786.64 +	IMPORT_C static CWapTestHarness* NewLC(const TDesC& aTitle);
  786.65 +	IMPORT_C static CWapTestHarness* NewL(const TDesC& aTitle);
  786.66 +	~CWapTestHarness();
  786.67 +
  786.68 +	IMPORT_C void StartTestL(const TDesC& aName);
  786.69 +	IMPORT_C void NextStep(const TDesC& aStepName);
  786.70 +	IMPORT_C void EndTest(TInt aErrorCode);
  786.71 +	IMPORT_C void LogIt(TRefByValue<const TDesC> aFmt, ...);
  786.72 +	IMPORT_C void operator()(TInt aResult,TInt aLineNum);
  786.73 +	IMPORT_C void operator()(TInt aResult);
  786.74 +	IMPORT_C void PressAnyKey();
  786.75 +	IMPORT_C void DumpData(HBufC8& aData, TBool logIt = EFalse);
  786.76 +	IMPORT_C void GetAnEntry(const TDesC & ourPrompt, TDes & currentstring);
  786.77 +	IMPORT_C TInt GetSelection(const TDesC& ourPrompt, const TDesC& validChoices);
  786.78 +	IMPORT_C void SetScript(RFile& scriptFile);
  786.79 +	inline void DoResourceLeakTest(TBool aValue);
  786.80 +	inline RTest& Test();
  786.81 +
  786.82 +	inline static void DefaultLogFileName(TDes& aFileName);
  786.83 +private:
  786.84 +	CWapTestHarness(const TDesC& aTitle);
  786.85 +	void ConstructL(const TDesC& aTitle);
  786.86 +	void Panic(TInt aPanic);
  786.87 +	void TestHarnessFailed();
  786.88 +	void TestHarnessComplete();
  786.89 +	void ResourceLeakTest();
  786.90 +	inline void CreateFlogger(const TDesC& aFileName, TInt aShowDate=ETrue, TInt aShowTime=ETrue);
  786.91 +	inline void WriteComment(const TDesC& aComment);
  786.92 +	TInt ReadLineFromScript(TDes& aBuffer);
  786.93 +
  786.94 +private:
  786.95 +	//	Helper class to store failed tests
  786.96 +	class CTestInfo;
  786.97 +	enum TPanicCode
  786.98 +		{
  786.99 +		EBadStartTest,
 786.100 +		EBadEndTest,
 786.101 +		EBadCLogPtr
 786.102 +		};
 786.103 +private:
 786.104 +	RTest iTest;
 786.105 +	RFileLogger iFlogger;
 786.106 +	RFile* iScriptFile;
 786.107 +	__DECLARE_LOG;	//	Does CLogClient* iLogPtr;
 786.108 +	TInt iTestCount;
 786.109 +	CArrayPtrFlat<CTestInfo>* iFailedTests;
 786.110 +	TTime iStartTime;
 786.111 +	TBool iCanStartTest;
 786.112 +	TInt iStepNumber;
 786.113 +	TInt iStartHandleCount;
 786.114 +	TBool iDoResourceLeakTest;
 786.115 +	TBool iScriptRunning;
 786.116 +	};
 786.117 +
 786.118 +class CWapTestHarness::CTestInfo : public CBase
 786.119 +
 786.120 +/**
 786.121 +	Holds test number and name
 786.122 +	@publishedAll
 786.123 +	@released
 786.124 +*/
 786.125 +	{
 786.126 +public:
 786.127 +	static CTestInfo* NewLC(const TDesC& aName, TInt aNumber, TInt aErrorCode);
 786.128 +	static CTestInfo* NewL(const TDesC& aName, TInt aNumber, TInt aErrorCode);
 786.129 +	~CTestInfo();
 786.130 +
 786.131 +	void SetNameL(const TDesC& aName);
 786.132 +	void SetNumber(TInt aNumber);
 786.133 +	void SetErrorCode(TInt aErrorCode);
 786.134 +
 786.135 +	inline TPtr Name() const;
 786.136 +	inline TInt Number() const;
 786.137 +	inline TInt ErrorCode() const;
 786.138 +private:
 786.139 +	CTestInfo();
 786.140 +	void ConstructL(const TDesC& aName, TInt aNumber, TInt aErrorCode);
 786.141 +private:
 786.142 +	HBufC* iName;
 786.143 +	TInt iNumber;
 786.144 +	TInt iErrorCode;
 786.145 +	};
 786.146 +
 786.147 +#include <waptestutils.inl>
 786.148 +
 786.149 +#endif	//	__WAPTESTUTILS_H__
   787.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   787.2 +++ b/epoc32/include/mw/wbconverter.h	Wed Mar 31 12:27:01 2010 +0100
   787.3 @@ -0,0 +1,471 @@
   787.4 +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   787.5 +// All rights reserved.
   787.6 +// This component and the accompanying materials are made available
   787.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   787.8 +// which accompanies this distribution, and is available
   787.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  787.10 +//
  787.11 +// Initial Contributors:
  787.12 +// Nokia Corporation - initial contribution.
  787.13 +//
  787.14 +// Contributors:
  787.15 +//
  787.16 +// Description:
  787.17 +//
  787.18 +
  787.19 +#ifndef __WBCONVERTER_H
  787.20 +#define __WBCONVERTER_H
  787.21 +
  787.22 +#include <e32std.h>
  787.23 +#include <s32stor.h>
  787.24 +#include <f32file.h>
  787.25 +
  787.26 +// forward declarations
  787.27 +//
  787.28 +class CWbxmlToken;
  787.29 +class MWbxmlConverterObserver;
  787.30 +class CByteList;
  787.31 +class CCnvCharacterSetConverter;
  787.32 +
  787.33 +// consts, defines, enums
  787.34 +//
  787.35 +/**
  787.36 +@publishedAll
  787.37 +@deprecated
  787.38 +*/
  787.39 +_LIT8(KWbXmlVersion10,"<?xml version=\"1.0\"?>");
  787.40 +
  787.41 +/**
  787.42 +@publishedAll
  787.43 +@deprecated
  787.44 +*/
  787.45 +_LIT8(KWbPublicIdStartWml,"<!DOCTYPE wml PUBLIC \"");
  787.46 +/**
  787.47 +@publishedAll
  787.48 +@deprecated
  787.49 +*/
  787.50 +_LIT8(KWbPublicIdStartSi,"<!DOCTYPE si PUBLIC \"");
  787.51 +/**
  787.52 +@publishedAll
  787.53 +@deprecated
  787.54 +*/
  787.55 +_LIT8(KWbPublicIdStartSl,"<!DOCTYPE sl PUBLIC \"");
  787.56 +
  787.57 +
  787.58 +/**
  787.59 +@publishedAll
  787.60 +@deprecated
  787.61 +*/
  787.62 +_LIT(KWbTokenDatabaseWml11,"\\RESOURCE\\WAPPUSH\\WMLC11.TOK");
  787.63 +/**
  787.64 +@publishedAll
  787.65 +@deprecated
  787.66 +*/
  787.67 +_LIT(KWbTokenDatabaseWml12,"\\RESOURCE\\WAPPUSH\\WMLC12.TOK");
  787.68 +/**
  787.69 +@publishedAll
  787.70 +@deprecated
  787.71 +*/
  787.72 +_LIT(KWbTokenDatabaseSI10,"\\RESOURCE\\WAPPUSH\\SI10.TOK");
  787.73 +/**
  787.74 +@publishedAll
  787.75 +@deprecated
  787.76 +*/
  787.77 +_LIT(KWbTokenDatabaseSL10,"\\RESOURCE\\WAPPUSH\\SL10.TOK");
  787.78 +
  787.79 +/**
  787.80 +@publishedAll
  787.81 +@deprecated
  787.82 +*/
  787.83 +_LIT8(KWbPublicIdEnd11,"\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">");
  787.84 +/**
  787.85 +@publishedAll
  787.86 +@deprecated
  787.87 +*/
  787.88 +_LIT8(KWbPublicIdEnd12,"\" \"http://www.wapforum.org/DTD/wml_1.2.xml\">");
  787.89 +/**
  787.90 +@publishedAll
  787.91 +@deprecated
  787.92 +*/
  787.93 +_LIT8(KWbPublicIdEndSI10,"\" \"http://www.wapforum.org/DTD/si.dtd\">");
  787.94 +/**
  787.95 +@publishedAll
  787.96 +@deprecated
  787.97 +*/
  787.98 +_LIT8(KWbPublicIdEndSL10,"\" \"http://www.wapforum.org/DTD/sl.dtd\">");
  787.99 +
 787.100 +/**
 787.101 +@publishedAll
 787.102 +@deprecated
 787.103 +*/
 787.104 +_LIT8(KWbTagStart,"<");
 787.105 +/**
 787.106 +@publishedAll
 787.107 +@deprecated
 787.108 +*/
 787.109 +_LIT8(KWbTagStartClose,"</");
 787.110 +/**
 787.111 +@publishedAll
 787.112 +@deprecated
 787.113 +*/
 787.114 +_LIT8(KWbTagEndWithContent,">");
 787.115 +/**
 787.116 +@publishedAll
 787.117 +@deprecated
 787.118 +*/
 787.119 +_LIT8(KWbTagEndWithoutContent,"/>");
 787.120 +/**
 787.121 +@publishedAll
 787.122 +@deprecated
 787.123 +*/
 787.124 +_LIT8(KWbVariableStart,"$(");
 787.125 +/**
 787.126 +@publishedAll
 787.127 +@deprecated
 787.128 +*/
 787.129 +_LIT8(KWbVariableEscaped,":E)");
 787.130 +/**
 787.131 +@publishedAll
 787.132 +@deprecated
 787.133 +*/
 787.134 +_LIT8(KWbVariableUnescaped,":U)");
 787.135 +/**
 787.136 +@publishedAll
 787.137 +@deprecated
 787.138 +*/
 787.139 +_LIT8(KWbVariableNoescape,":N)");
 787.140 +/**
 787.141 +@publishedAll
 787.142 +@deprecated
 787.143 +*/
 787.144 +_LIT8(KWbVariableNormal,")");
 787.145 +/**
 787.146 +@publishedAll
 787.147 +@deprecated
 787.148 +*/
 787.149 +_LIT8(KWbQuote,"\"");
 787.150 +/**
 787.151 +@publishedAll
 787.152 +@deprecated
 787.153 +*/
 787.154 +_LIT8(KWbSpace," ");
 787.155 +/**
 787.156 +@publishedAll
 787.157 +@deprecated
 787.158 +*/
 787.159 +_LIT8(KWbTab,"\t");
 787.160 +/**
 787.161 +@publishedAll
 787.162 +@deprecated
 787.163 +*/
 787.164 +_LIT8(KWbLineBreak,"\n");
 787.165 +
 787.166 +/**
 787.167 +@publishedAll
 787.168 +@deprecated
 787.169 +*/
 787.170 +const TInt8 KWbxmlIdIndex = 0;
 787.171 +/**
 787.172 +@publishedAll
 787.173 +@deprecated
 787.174 +*/
 787.175 +const TInt8 KWbxmlIdUnknown = 1;
 787.176 +/**
 787.177 +@publishedAll
 787.178 +@deprecated
 787.179 +*/
 787.180 +const TInt8 KWbxmlIdWml10 = 2;
 787.181 +/**
 787.182 +@publishedAll
 787.183 +@deprecated
 787.184 +*/
 787.185 +const TInt8 KWbxmlIdWta10 = 3;
 787.186 +/**
 787.187 +@publishedAll
 787.188 +@deprecated
 787.189 +*/
 787.190 +const TInt8 KWbxmlIdWml11 = 4;
 787.191 +/**
 787.192 +@publishedAll
 787.193 +@deprecated
 787.194 +*/
 787.195 +const TInt8 KWbxmlIdSI = 5;
 787.196 +/**
 787.197 +@publishedAll
 787.198 +@deprecated
 787.199 +*/
 787.200 +const TInt8 KWbxmlIdSL = 6;
 787.201 +/**
 787.202 +@publishedAll
 787.203 +@deprecated
 787.204 +*/
 787.205 +const TInt8 KWbxmlIdWml12 = 9;
 787.206 +
 787.207 +// Entity translation literals
 787.208 +/**
 787.209 +@publishedAll
 787.210 +@deprecated
 787.211 +*/
 787.212 +_LIT8(KEntityDollar,"$$");
 787.213 +/**
 787.214 +@publishedAll
 787.215 +@deprecated
 787.216 +*/
 787.217 +_LIT8(KEntityAmp,"&amp;");
 787.218 +/**
 787.219 +@publishedAll
 787.220 +@deprecated
 787.221 +*/
 787.222 +_LIT8(KEntityLt,"&lt;");
 787.223 +/**
 787.224 +@publishedAll
 787.225 +@deprecated
 787.226 +*/
 787.227 +_LIT8(KEntityGt,"&gt;");
 787.228 +/**
 787.229 +@publishedAll
 787.230 +@deprecated
 787.231 +*/
 787.232 +_LIT8(KEntityQuot,"&quot;");
 787.233 +/**
 787.234 +@publishedAll
 787.235 +@deprecated
 787.236 +*/
 787.237 +_LIT8(KEntityApos,"&apos;");
 787.238 +/**
 787.239 +@publishedAll
 787.240 +@deprecated
 787.241 +*/
 787.242 +_LIT8(KEntityNbsp,"&nbsp;");
 787.243 +/**
 787.244 +@publishedAll
 787.245 +@deprecated
 787.246 +*/
 787.247 +_LIT8(KEntityShy,"&shy;");
 787.248 +
 787.249 +/**
 787.250 +@publishedAll
 787.251 +@deprecated
 787.252 +*/
 787.253 +const TUint16 KWbxmlSkipLiteralEndTagMagicToken = 0xac1d;
 787.254 +
 787.255 +
 787.256 +///////////////////////////////////////////////////////////////////
 787.257 +// CWbxmlConverter
 787.258 +///////////////////////////////////////////////////////////////////
 787.259 +class RFileReadStream;
 787.260 +//##ModelId=3B6678E20007
 787.261 +class CWbxmlConverter : public CBase
 787.262 +/**
 787.263 +@publishedAll
 787.264 +@deprecated
 787.265 +*/
 787.266 +{
 787.267 +public:	// Methods
 787.268 +	//##ModelId=3B6678E30199
 787.269 +	~CWbxmlConverter();
 787.270 +
 787.271 +	// NOTE: input data really is 8bit bytecode
 787.272 +	//##ModelId=3B6678E300F9
 787.273 +	IMPORT_C static CWbxmlConverter* CWbxmlConverter::NewL(RFs& aFs, MWbxmlConverterObserver* aObserver);
 787.274 +	//##ModelId=3B6678E300BD
 787.275 +	IMPORT_C static CWbxmlConverter* CWbxmlConverter::NewLC(RFs& aFs, MWbxmlConverterObserver* aObserver);
 787.276 +	//##ModelId=3B6678E30135
 787.277 +	IMPORT_C static CWbxmlConverter* CWbxmlConverter::NewL(RFs& aFs, MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding);
 787.278 +	//##ModelId=3B6678E3009F
 787.279 +	IMPORT_C void ProcessDataL(HBufC8& aBuffer);
 787.280 +	//##ModelId=3B6678E3009E
 787.281 +	IMPORT_C void CommitL();
 787.282 +
 787.283 +private:	// Emumerations
 787.284 +
 787.285 +	enum TGotoState
 787.286 +	{
 787.287 +		EGotoStreaming = 1,
 787.288 +		EGotoString,
 787.289 +		EGotoOpaque
 787.290 +	};
 787.291 +	enum TConvertState
 787.292 +	{
 787.293 +		EConvertError = 1,
 787.294 +		EConvertVersion,
 787.295 +		EConvertPublicIdValue,
 787.296 +		EConvertCharset,
 787.297 +		EConvertStringTable,
 787.298 +		EConvertPublicIdName,
 787.299 +		EConvertData,
 787.300 +		EConvertFinished
 787.301 +	};
 787.302 +
 787.303 +private:	// Methods
 787.304 +
 787.305 +	//##ModelId=3B6678E30080
 787.306 +	CWbxmlConverter(RFs& aFs);
 787.307 +	//##ModelId=3B6678E30045
 787.308 +	void ConstructL(MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding);
 787.309 +
 787.310 +	//##ModelId=3B6678E30044
 787.311 +	void HandleDataL();
 787.312 +	//##ModelId=3B6678E30009
 787.313 +	void SetNextStateL(const TInt aResult, const TConvertState aState);
 787.314 +	//##ModelId=3B6678E30008
 787.315 +	TInt ConvertWbxmlVersionL();
 787.316 +	//##ModelId=3B6678E203E8
 787.317 +	TInt ConvertPublicIdValueL();	// Extract PublicId
 787.318 +	//##ModelId=3B6678E203E7
 787.319 +	TInt ConvertPublicIdNameL();	// Report PublicId
 787.320 +	//##ModelId=3B6678E203E6
 787.321 +	TInt ConvertCharsetL();
 787.322 +	//##ModelId=3B6678E203DE
 787.323 +	TInt ConvertStringTableL();
 787.324 +	//##ModelId=3B6678E203DD
 787.325 +	TInt ConvertDataL();
 787.326 +	//##ModelId=3B6678E203DC
 787.327 +	TInt ConvertDataStreamingL();
 787.328 +	//##ModelId=3B6678E203D3
 787.329 +	TInt ConvertDataStringL();
 787.330 +	//##ModelId=3B6678E203D2
 787.331 +	TInt ConvertOpaqueDataL();
 787.332 +	//##ModelId=3B6678E203B4
 787.333 +	HBufC16* FormatDateStringL(TDesC8& aData);
 787.334 +
 787.335 +	//##ModelId=3B6678E20396
 787.336 +	TInt OpenTokenFileL(HBufC& aFileName);
 787.337 +	//##ModelId=3B6678E2035A
 787.338 +	void ReadTokenFileL(RFileReadStream& aStream, HBufC8& aBuffer);
 787.339 +	//##ModelId=3B6678E2033C
 787.340 +	TInt LoadTokensL(HBufC* aBuffer);
 787.341 +
 787.342 +	//##ModelId=3B6678E2030A
 787.343 +	TInt ExtractMultiByte(TUint32* aMultiByte, TInt aSkipHeader);
 787.344 +	//##ModelId=3B6678E202E3
 787.345 +	void Indent(const TInt aCount) const;
 787.346 +	//##ModelId=3B6678E202E2
 787.347 +	void FinishStringL();
 787.348 +	//##ModelId=3B6678E202C4
 787.349 +	HBufC16* CharsetConvertDataL(TDesC8& aData);
 787.350 +
 787.351 +	// Gets the full path to wmlc token table. Input aTokenFilePath is the path, without the drive.
 787.352 +	//
 787.353 +	// In:
 787.354 +	// aTokenFilePath	- the path to the token table file.
 787.355 +	//
 787.356 +	// Rtn: the full path to the token table file. Ownership is transfered to caller.
 787.357 +	//
 787.358 +	//##ModelId=3B6678E202A6
 787.359 +	HBufC* FindTokenFileL(const TDesC& aTokenFilePath) const;
 787.360 +
 787.361 +	// Replaces characters originating from chracter entity references with the reference string
 787.362 +	// For example chracter '&' will be "decoded" back to "&amp;"
 787.363 +	//
 787.364 +	// In:
 787.365 +	// aString - The original string containing the undedcoded characters.
 787.366 +	//			 This string can get ReAllocated during the process - DO NOT USE THIS POINTER
 787.367 +	//           AFTER THE CALL to this method. (use the returned one instead...)
 787.368 +	// Return:
 787.369 +	// HBufC*  - Pointer to the string with replaced stuff
 787.370 +	//
 787.371 +	//##ModelId=3B6678E20288
 787.372 +	HBufC* ReplaceCharacterEntitiesL(HBufC* aString);
 787.373 +
 787.374 +	// MWbxmlConverterObserver interface overloads
 787.375 +	//##ModelId=3B6678E2024C
 787.376 +	void OutputL(const TUint32 aSource) const;
 787.377 +
 787.378 +	//##ModelId=3B6678E2022E
 787.379 +	TBool OutputCheckQuoteL(HBufC8& aSource) const;
 787.380 +
 787.381 +	// Helper method to optimise the OutputL oveloads
 787.382 +	//##ModelId=3B6678E20211
 787.383 +	void BufferAndOutputL(const TDesC8& aSource) const;
 787.384 +
 787.385 +	// Must exist for Binary Compatibility
 787.386 +	//##ModelId=3B6678E20210
 787.387 +	IMPORT_C virtual void CWbxmlConverter_Reserved1();
 787.388 +
 787.389 +private:	// Attributes
 787.390 +	
 787.391 +	// For binary compatibility
 787.392 +	//##ModelId=3B6678E20206
 787.393 +	TAny* CWbxmlConverter_Reserved;
 787.394 +	
 787.395 +	// Attributes
 787.396 +	// Note: conversion table from disk ie. you can change it at runtime
 787.397 +	//##ModelId=3B6678E201F2
 787.398 +	CArrayPtrFlat<CWbxmlToken>* iTagArray;
 787.399 +	//##ModelId=3B6678E201D3
 787.400 +	CArrayPtrFlat<CWbxmlToken>* iAttArray;
 787.401 +
 787.402 +	//##ModelId=3B6678E2018D
 787.403 +	MWbxmlConverterObserver* iObserver;
 787.404 +
 787.405 +	//##ModelId=3B6678E20179
 787.406 +	TUint8 iWbxmlVersion;
 787.407 +	//##ModelId=3B6678E20165
 787.408 +	TUint32 iWbxmlCharset;
 787.409 +	//##ModelId=3B6678E20151
 787.410 +	TUint32 iPublicId;
 787.411 +	//##ModelId=3B6678E2013D
 787.412 +	TUint32 iPublicIdIndex;
 787.413 +
 787.414 +	// Note: must handle source as 8bit data even in Unicode compile!
 787.415 +	//##ModelId=3B6678E2012B
 787.416 +	CByteList* iByteList;
 787.417 +	//##ModelId=3B6678E2011F
 787.418 +	HBufC8* iStringTable;
 787.419 +	//##ModelId=3B6678E2010D
 787.420 +	HBufC8* iPublicIdStr;
 787.421 +	//##ModelId=3B6678E20101
 787.422 +	RFs&	iFs;
 787.423 +
 787.424 +	//##ModelId=3B6678E200ED
 787.425 +	TInt iState;
 787.426 +	//##ModelId=3B6678E200E3
 787.427 +	TUint32 iContinue;
 787.428 +
 787.429 +	//##ModelId=3B6678E200D1
 787.430 +	TUint8 iVariable;
 787.431 +	//##ModelId=3B6678E200C5
 787.432 +	TUint8 hasAttrs;
 787.433 +	//##ModelId=3B6678E200B3
 787.434 +	TUint8 hasContent;
 787.435 +
 787.436 +
 787.437 +	//##ModelId=3B6678E200A7
 787.438 +	TInt iTagIndex;
 787.439 +	//##ModelId=3B6678E20095
 787.440 +	CArrayFixFlat<TUint16>* iTagStack;
 787.441 +	//##ModelId=3B6678E2006B
 787.442 +	TBool iRestrictedOutput;
 787.443 +
 787.444 +	enum TParsing
 787.445 +	{
 787.446 +		EParseNot = 0,
 787.447 +		EParseTag,
 787.448 +		EParseAttrs
 787.449 +	};
 787.450 +	//##ModelId=3B6678E20059
 787.451 +	TParsing iParsing;
 787.452 +	//##ModelId=3B6678E2004F
 787.453 +	TBool iOpenQuote;
 787.454 +
 787.455 +	//##ModelId=3B6678E20045
 787.456 +	mutable HBufC8* iOutputBuffer;		// Buffered output buffer : Optimisation
 787.457 +
 787.458 +	//##ModelId=3B6678E2003B
 787.459 +	CCnvCharacterSetConverter* iCharsetConverter;
 787.460 +
 787.461 +#ifdef __OUTPUT_WMLC
 787.462 +	//##ModelId=3B6678E20031
 787.463 +	RFile iWmlcFile;		// Debug stuff
 787.464 +	//##ModelId=3B6678E20025
 787.465 +	RFs iWmlcFs;			// Debug stuff
 787.466 +#endif
 787.467 +
 787.468 +};
 787.469 +
 787.470 +#endif // __WBCONVERTER_H
 787.471 +
 787.472 +///////////////////////////////////////////////////////////////////
 787.473 +// End of file
 787.474 +///////////////////////////////////////////////////////////////////
   788.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   788.2 +++ b/epoc32/include/mw/wsp/wsptypes.h	Wed Mar 31 12:27:01 2010 +0100
   788.3 @@ -0,0 +1,535 @@
   788.4 +// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   788.5 +// All rights reserved.
   788.6 +// This component and the accompanying materials are made available
   788.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   788.8 +// which accompanies this distribution, and is available
   788.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  788.10 +//
  788.11 +// Initial Contributors:
  788.12 +// Nokia Corporation - initial contribution.
  788.13 +//
  788.14 +// Contributors:
  788.15 +//
  788.16 +// Description:
  788.17 +//
  788.18 +
  788.19 +
  788.20 +
  788.21 +/**
  788.22 + @file WspTypes.h
  788.23 + @warning : This file contains Rose Model ID comments - please do not delete
  788.24 +*/
  788.25 +
  788.26 +#ifndef __WSPTYPES_H__
  788.27 +#define __WSPTYPES_H__
  788.28 +
  788.29 +// System includes
  788.30 +#include <e32base.h>
  788.31 +#include <stringpool.h>
  788.32 +
  788.33 +//TODO - These will move to a common WAPMSG/WSPTransport file at a later stage,
  788.34 +//in the wap-stack subsystem, to be shared with the WAP Messaging API.
  788.35 +
  788.36 +namespace Wap
  788.37 +/**
  788.38 +All type definitions and enumerations used in WSP are in placed in a wider WAP
  788.39 +namespace, to avoid name conflicts with other components.
  788.40 +@publishedAll
  788.41 +@released
  788.42 +*/
  788.43 +{
  788.44 +
  788.45 +/** The TWspPrimitive type represents the WSP primitives defined in the WSP
  788.46 +	Specification, July 2001.
  788.47 +*/
  788.48 +enum TWspPrimitive
  788.49 +	{
  788.50 +	/**
  788.51 +	*/
  788.52 +	ESConnect			= 0,
  788.53 +	/**
  788.54 +	*/
  788.55 +	ESDisconnect,
  788.56 +	/**
  788.57 +	*/
  788.58 +	ESSuspend,
  788.59 +	/**
  788.60 +	*/
  788.61 +	ESResume,
  788.62 +	/**
  788.63 +	*/
  788.64 +	ESException,
  788.65 +	/**
  788.66 +	*/
  788.67 +	ESMethodInvoke,
  788.68 +	/**
  788.69 +	*/
  788.70 +	ESMethodInvokeData,
  788.71 +	/**
  788.72 +	*/
  788.73 +	ESMethodResult,
  788.74 +	/**
  788.75 +	*/
  788.76 +	ESMethodResultData,
  788.77 +	/**
  788.78 +	*/
  788.79 +	ESMethodAbort,
  788.80 +	/**
  788.81 +	*/
  788.82 +	ESPush,
  788.83 +	/**
  788.84 +	*/
  788.85 +	ESConfirmedPush,
  788.86 +	/**
  788.87 +	*/
  788.88 +	ESPushAbort
  788.89 +	};
  788.90 +
  788.91 +/** The TWspProtocolOptions type represents the optional protocol functions 
  788.92 +	defined in the WSP Specification, July 2001. When the client sends the 
  788.93 +	Protocol Capability to the server, it indicates which functions it will
  788.94 +	accept from the server. The server returns from the set of functions sent
  788.95 +	by the client those that it will perform.
  788.96 +*/
  788.97 +enum TWspProtocolOptions
  788.98 +	{
  788.99 +	/** The Large Data Transfer feature includes support for multiple SDU's and
 788.100 +		support for the Data Fragment PDU. Setting this falg indicates support 
 788.101 +		for sending and receiving large data. If a client only wishes to receive
 788.102 +		large data, then it should set the Client and Server Message size fields
 788.103 +		appropriately.
 788.104 +	*/
 788.105 +	ELargeDataTransfer			= 0x08,
 788.106 +	/** The acknowledgement headers flag specifies that the client wishes to send
 788.107 +		acknowledgement headers. If the server cannot process them (indicated by
 788.108 +		negotiating down the flag) the client should not send the headers as they
 788.109 +		will be ignored.
 788.110 +	*/
 788.111 +	EAcknowledgementHeaders		= 0x10,
 788.112 +	/** The client enables the Suspend Resume facility when it wishes to suspend
 788.113 +		and resume the session. If the server does not support suspend and resume
 788.114 +		then this flag must be cleared in the negotiated capabilities.
 788.115 +	*/
 788.116 +	ESessionResumeFacility		= 0x20,
 788.117 +	/** The client uses this flag to indicate that it is able and willing to 
 788.118 +		receive push information. If the server cannot send pushes then this flag 
 788.119 +		must be cleared in the negotiated capabilities.
 788.120 +	*/
 788.121 +	EPushFacility				= 0x40,
 788.122 +	/** The client uses this flag to indicate that it is able and willing to 
 788.123 +		receive confirmed push information. If the server cannot send pushes 
 788.124 +		then this flag must be cleared in the negotiated capabilities.
 788.125 +	*/
 788.126 +	EConfirmedPushFacility		= 0x80
 788.127 +	};
 788.128 +
 788.129 +/** The TWspSessionState type represents the states of a WSP session, as defined
 788.130 +	by the WSP Specification, July 2001.
 788.131 +*/
 788.132 +enum TWspSessionState
 788.133 +	{
 788.134 +	/** 
 788.135 +	*/
 788.136 +	ENull			= 0,
 788.137 +	/**
 788.138 +	*/
 788.139 +	EConnecting,
 788.140 +	/**
 788.141 +	*/
 788.142 +	EConnected,
 788.143 +	/**
 788.144 +	*/
 788.145 +	ESuspending,
 788.146 +	/**
 788.147 +	*/
 788.148 +	ESuspended,
 788.149 +	/**
 788.150 +	*/
 788.151 +	EClosing,
 788.152 +	/**
 788.153 +	*/
 788.154 +	EResuming
 788.155 +	};
 788.156 +
 788.157 +/** The TWspMethodState type represents the states of a WSP method transaction,
 788.158 +	as defined by the WSP Specification, July 2001.
 788.159 +*/
 788.160 +enum TWspMethodState
 788.161 +	{
 788.162 +	/**
 788.163 +	*/
 788.164 +	ENullMethod			=0,
 788.165 +	/**
 788.166 +	*/
 788.167 +	ERequesting,
 788.168 +	/**
 788.169 +	*/
 788.170 +	EWaiting,
 788.171 +	/**
 788.172 +	*/
 788.173 +	EWaiting2,
 788.174 +	/**
 788.175 +	*/
 788.176 +	ECompleting,
 788.177 +	/**
 788.178 +	*/
 788.179 +	EAborting
 788.180 +	};
 788.181 +
 788.182 +/** The TWspBearer type defines the set of supported bearers.
 788.183 +*/
 788.184 +enum TWspBearer
 788.185 +	{
 788.186 +	/** Specifier for any bearer.
 788.187 +	*/
 788.188 +	EAny		= 0,
 788.189 +	/** IP bearer.
 788.190 +	*/
 788.191 +	EIP,
 788.192 +	/** A 7-bit SMS bearer.
 788.193 +	*/
 788.194 +	ESMS7,
 788.195 +	/** An 8-bit SMS bearer.
 788.196 +	*/
 788.197 +	ESMS,
 788.198 +	/** A 7-bit WAP SMS bearer.
 788.199 +	*/
 788.200 +	EWAPSMS7,
 788.201 +	/** An 8-bit WAP SMS bearer.
 788.202 +	*/
 788.203 +	EWAPSMS
 788.204 +	};
 788.205 +
 788.206 +/** The TWspSession type defines the 2 types of WSP Session Service; Connection
 788.207 +	Oriented and Connectionless.
 788.208 +*/
 788.209 +enum TWspSession
 788.210 +	{
 788.211 +	/** Specifier for Connection Oriented Session Service.
 788.212 +	*/
 788.213 +	EWspConnectionOriented			= 0,
 788.214 +	/** Specifier for Connectionless Session Service.
 788.215 +	*/
 788.216 +	EWspConnectionLess
 788.217 +	};
 788.218 +
 788.219 +/** The TWspReason type is used by to report the cause of a particular indication 
 788.220 +	primitive. The WSP Specification, July 2001, specifies a given set that MUST
 788.221 +	be recognised (6.2.5). Further values may be added.
 788.222 +*/
 788.223 +enum TWspReason
 788.224 +	{
 788.225 +	/** The rules of the protocol were broken and in its current state, the peer
 788.226 +		could not perform the specified operation. E.g. the PDU was not allowed.
 788.227 +	*/
 788.228 +	EProtoErr			= 0xE0,
 788.229 +	/** The session was disconnected while the operation was still in progress.
 788.230 +	*/
 788.231 +	EDisconnect			= 0xE1,
 788.232 +	/** The session was suspended while the operation was still in progress.
 788.233 +	*/
 788.234 +	ESuspend			= 0xE2,
 788.235 +	/** The session was resumed while the operation was still in progress.
 788.236 +	*/
 788.237 +	EResume				= 0xE3,
 788.238 +	/** The request could not be processed due to a lack of resources.
 788.239 +	*/
 788.240 +	ECongestion			= 0xE4,
 788.241 +	/** The connection was prevented due to an error.
 788.242 +	*/ 
 788.243 +	EConnectErr			= 0xE5,
 788.244 +	/** The SDU size in a request exceeded the maximum negotiated SDU size.
 788.245 +	*/
 788.246 +	EMRUExceeded		= 0xE6,
 788.247 +	/** The negotiated value of the maximum outstanding transactions (either for
 788.248 +		push or method transactions) has been exceeded.
 788.249 +	*/
 788.250 +	EMORExceeded		= 0xE7,
 788.251 +	/** The operation was aborted by the Provider. 
 788.252 +	*/
 788.253 +	EPeerReq			= 0xE8,
 788.254 +	/** An underlying network error prevented the completion of a request.
 788.255 +	*/
 788.256 +	ENetErr				= 0xE9,
 788.257 +	/** The cause of the indication was an action by the Client.
 788.258 +	*/
 788.259 +	EUserReq			= 0xEA,
 788.260 +	/** The client has refesed the Push message, no specific reason, no retries.
 788.261 +	*/
 788.262 +	EUserRfs			= 0xEB,
 788.263 +	/** The Push message cannot be delivered to the intended destination.
 788.264 +	*/
 788.265 +	EUserPnd			= 0xEC,
 788.266 +	/** The Push message was discarded due to resource shortage.
 788.267 +	*/
 788.268 +	EUserDcr			= 0xED,
 788.269 +	/** The content-type of the Push message cannot be processed.
 788.270 +	*/
 788.271 +	EUserDcu			= 0xEE,
 788.272 +	/** The session connect request has been redirected to a new proxy. This is
 788.273 +		a temporary redirection and the original proxy should be used in the
 788.274 +		future when trying to access this service. This is not defined by the 
 788.275 +		WSP Specification.
 788.276 +	*/
 788.277 +	ETemporaryRedirectedProxy	=0,
 788.278 +	/** The session connect request has been redirected to a new proxy. This is
 788.279 +		a permanent redirection and the new proxy should be used in the future 
 788.280 +		when trying to access this service. The client will be notified of this
 788.281 +		event and the HTTP session property EWspProxyAddressnew will contain the
 788.282 +		new proxy's address. The client should update its access point database.
 788.283 +		This is not defined by the WSP Specification.
 788.284 +	*/
 788.285 +	EPermanentRedirectedProxy,
 788.286 +	/** The client had disconnected the session, but as Suspend Resume facility
 788.287 +		was being used, the session was suspended. The client then changed the
 788.288 +		proxy and did a connect. The suspended session cannot be resumed, so the
 788.289 +		the current session must be disconnected (with this reason) and a 
 788.290 +		session connect initiated with the new proxy. This is not defined by the
 788.291 +		WSP Specification.
 788.292 +	*/
 788.293 +	EChangedProxyInSuspendedSession,
 788.294 +	/** The client's WSP session was disconnected in the Connecting state because
 788.295 +		configuration of the underlying WTLS layer failed prior to the phase 1
 788.296 +		WTLS handshake.
 788.297 +	*/
 788.298 +	EWtlsConfigurationFailed,
 788.299 +	/** The client's WSP session was disconnected in the Connecting state because
 788.300 +		phase 1 of the WTLS handshake failed.
 788.301 +	*/
 788.302 +	EWtlsPhase1HandshakeFailed,
 788.303 +	/** The client's WSP session was disconnected in the Connecting state because
 788.304 +		phase 2 of the WTLS handshake failed.
 788.305 +	*/
 788.306 +	EWtlsPhase2HandshakeFailed,
 788.307 +	/** The client's WSP session was disconnected in the Connecting state because
 788.308 +		the proxy's WTLS certificate was invalid - e.g. badly formed, or out of date.
 788.309 +	*/
 788.310 +	EWtlsInvalidServerCert,
 788.311 +	/** The client's WSP session was disconnected in the Connecting state because
 788.312 +		the proxy's WTLS certificate could not be trusted.  This means it was not signed
 788.313 +		by any root certificate on the device, and the security policy criteria could not
 788.314 +		determine further whether it could be trusted or not.
 788.315 +	*/
 788.316 +	EWtlsUntrustedServerCert,
 788.317 +	/** The client's WSP session was disconnected in the Connecting state because
 788.318 +		the negotiated WTLS configuration at completion of the secure handshake was
 788.319 +		rejected by criteria in the security policy.
 788.320 +	*/
 788.321 +	EWtlsNegotiatedConfigRejected,
 788.322 +	/** The client's transaction or session has failed due to an out-of-memory situation.
 788.323 +	*/
 788.324 +	EOutOfMemory,
 788.325 +	/** The client's session has entered an inconsistent state, probably due to a failure caused
 788.326 +		by an out-of-memory situation.
 788.327 +	*/
 788.328 +	ESessionStateFailure
 788.329 +	};
 788.330 +
 788.331 +/**	The enum TWspCapabilty is used to select a capability to reset (if required) 
 788.332 +	before setting the value of the capability.
 788.333 +*/
 788.334 +enum TWspCapability
 788.335 +	{
 788.336 +	/** Specifies the Alias Addresses capability.
 788.337 +	*/
 788.338 +	EAliasAddresses				= 0,
 788.339 +	/** Specifies the Extended Methods capability.
 788.340 +	*/
 788.341 +	EExtendedMethods,
 788.342 +	/** Specifies the Header Code Pages capability.
 788.343 +	*/
 788.344 +	EHeaderCodePages,
 788.345 +	/** Specifies the Method Maximum Outstanding Requests capability. Default value is 1.
 788.346 +	*/
 788.347 +	EMethodMOR,
 788.348 +	/** Specifies the Push Maximum Outstanding Requests capability. Default value is 1.
 788.349 +	*/
 788.350 +	EPushMOR,
 788.351 +	/** Specifies the Protocol Options capability. Default value is 0x00.
 788.352 +	*/
 788.353 +	EProtocolOptions,
 788.354 +	/** Specifies the Client SDU size capability. Default value is 1400 octets.
 788.355 +	*/
 788.356 +	EClientSDUSize,
 788.357 +	/** Specifies the Server SDU size capability. Default value is 1400 octets.
 788.358 +	*/
 788.359 +	EServerSDUSize,
 788.360 +	/** Specifies the Client Message size capability. Default value is 1400 octets.
 788.361 +	*/
 788.362 +	EClientMessageSize,
 788.363 +	/** Specifies the Server Message size capability. Default value is 1400 octets.
 788.364 +	*/
 788.365 +	EServerMessageSize,
 788.366 +	/** Specifies the Unknown capabilities.
 788.367 +	*/
 788.368 +	EUnknownCapabilities,
 788.369 +	/** Specifies all the capabilities.
 788.370 +	*/
 788.371 +	EAllCapabilities
 788.372 +	};
 788.373 +
 788.374 +} // end of namespace Wap
 788.375 +
 788.376 +
 788.377 +/**
 788.378 +Maximum Proxy address length, this is large enough for a full IPv6 address.
 788.379 +@publishedAll
 788.380 +@released
 788.381 +*/
 788.382 +const TInt KMaxProxyAddrLen = 40;
 788.383 +
 788.384 +//##ModelId=3C4C41B20079
 788.385 +class TWspRedirectedAddress
 788.386 +/**	
 788.387 +The TWspRedirectedAddress type represents an alternate address to which 
 788.388 +Clients must use to establish a session with the same service that was 
 788.389 +initially contacted. If the bearer or port fields have been excluded, then
 788.390 +the orginal bearer and port should be used to contact the new server. The 
 788.391 +WSP Specification, July 2001, defines an Address Type (8.2.2.3) upon which 
 788.392 +this class is based.
 788.393 +@publishedAll
 788.394 +@released
 788.395 +*/
 788.396 +	{
 788.397 +public:	// Attributes
 788.398 +
 788.399 +	/** A flag to indicate that the port field is set.
 788.400 +	*/
 788.401 +	//##ModelId=3C4C41B200DD
 788.402 +	TBool		iHasPort;
 788.403 +
 788.404 +	/** A flag to indicate that the bearer field is set.
 788.405 +	*/
 788.406 +	//##ModelId=3C4C41B200CB
 788.407 +	TBool		iHasBearer;
 788.408 +
 788.409 +	/** The proxy address.
 788.410 +	*/
 788.411 +	//##ModelId=3C4C41B200C1
 788.412 +	TBuf8<KMaxProxyAddrLen>	iProxyAddress;
 788.413 +
 788.414 +	/** The port number. 
 788.415 +	*/
 788.416 +	//##ModelId=3C4C41B200B5
 788.417 +	TUint16		iPort;
 788.418 +
 788.419 +	/** The bearer type.
 788.420 +	*/
 788.421 +	//##ModelId=3C4C41B200A3
 788.422 +	Wap::TWspBearer	iBearer;
 788.423 +	};
 788.424 +
 788.425 +/**
 788.426 +Maximum length of a key ID for WTLS
 788.427 +@publishedAll
 788.428 +@released
 788.429 +*/
 788.430 +const TInt KWtlsMaxKeyIdLength = 512;
 788.431 +
 788.432 +class TWtlsKeyExchangeSuite
 788.433 +/**
 788.434 +The class TWtlsKeyExchangeSuite contain the definitions of WTLS
 788.435 +Key Exchange Suites as defined in the WAP WTLS Specification, July 2001
 788.436 +@publishedAll
 788.437 +@released 
 788.438 +*/
 788.439 +	{
 788.440 +public:
 788.441 +	enum TKeyExchangeSuite
 788.442 +		{
 788.443 +		ENULL					=0,
 788.444 +		ESHARED_SECRET			=1,
 788.445 +		EDH_anon				=2,
 788.446 +		EDH_anon_512			=3,
 788.447 +		EDH_anon_768			=4,
 788.448 +		ERSA_anon				=5,
 788.449 +		ERSA_anon_512			=6,
 788.450 +		ERSA_anon_768			=7,
 788.451 +		ERSA					=8,
 788.452 +		ERSA_512				=9,
 788.453 +		ERSA_768				=10,
 788.454 +		EECDH_anon				=11,
 788.455 +		EECDH_anon_113			=12,
 788.456 +		EECDH_anon_131			=13,
 788.457 +		EECDH_ECDSA				=14,
 788.458 +		EECDH_anon_uncomp		=15,
 788.459 +		EECDH_anon_uncomp_113	=16,
 788.460 +		EECDH_anon_uncomp_131	=17,
 788.461 +		EECDH_ECDSA_uncomp		=18
 788.462 +		};
 788.463 +	enum TKeyIdType 
 788.464 +		{
 788.465 +		EIdNull			= 0,
 788.466 +		EText			= 1, 
 788.467 +		EBinary			= 2, 
 788.468 +		EKeyHashSha		= 254, 
 788.469 +		EX509Name		= 255
 788.470 +		};
 788.471 +
 788.472 +public:
 788.473 +	TWtlsKeyExchangeSuite(TKeyExchangeSuite aKeyExchangeSuite, TKeyIdType aKeyIdType, const TBuf8<KWtlsMaxKeyIdLength>& aKeyId);
 788.474 +
 788.475 +public:
 788.476 +	TKeyExchangeSuite iKeyExchangeSuite;
 788.477 +	TKeyIdType iKeyIdType;
 788.478 +	TBuf8<KWtlsMaxKeyIdLength> iKeyId;
 788.479 +	};
 788.480 +
 788.481 +class TWtlsCipherSuite
 788.482 +/**
 788.483 +The class TWtlsCipherSuite encapsulates a WTLS cipher suite as defined in
 788.484 +the WAP WTLS Specification, July 2001
 788.485 +This is a pair made up of a Bulk Encryption Algorithm and a Mac Algorithm
 788.486 +@publishedAll
 788.487 +@released
 788.488 +*/
 788.489 +	{
 788.490 +public:
 788.491 +			
 788.492 +	enum TBulkEncryptionAlgorithm
 788.493 +		{
 788.494 +		ENULL			=0,
 788.495 +		ERC5_CBC_40		=1,
 788.496 +		ERC5_CBC_56		=2,
 788.497 +		ERC5_CBC		=3,
 788.498 +		EDES_CBC_40		=4,
 788.499 +		EDES_CBC		=5,
 788.500 +		E3DES_CBC_EDE	=6,
 788.501 +		EIDEA_CBC_40	=7,
 788.502 +		EIDEA_CBC_56	=8,
 788.503 +		EIDEA_CBC		=9,
 788.504 +		ERC5_CBC_64		=10,
 788.505 +		EIDEA_CBC_64	=11
 788.506 +		};
 788.507 +
 788.508 +	enum TMacAlgorithm
 788.509 +		{
 788.510 +		ESHA_0			=0,
 788.511 +		ESHA_40			=1,
 788.512 +		ESHA_80			=2,
 788.513 +		ESHA			=3,
 788.514 +//		N/A (removed)	=4,
 788.515 +		EMD5_40			=5,
 788.516 +		EMD5_80			=6,
 788.517 +		EMD5			=7,
 788.518 +		};
 788.519 +
 788.520 +	TWtlsCipherSuite(TBulkEncryptionAlgorithm aBulkEncryptionAlgorithm, TMacAlgorithm aMacAlgorithm);
 788.521 +
 788.522 +public:
 788.523 +	TBulkEncryptionAlgorithm iBulkEncryptionAlgorithm;
 788.524 +	TMacAlgorithm iMacAlgorithm;
 788.525 +	};
 788.526 +
 788.527 +inline TWtlsCipherSuite::TWtlsCipherSuite(TBulkEncryptionAlgorithm aBulkEncryptionAlgorithm, TMacAlgorithm aMacAlgorithm)
 788.528 +	: iBulkEncryptionAlgorithm(aBulkEncryptionAlgorithm), iMacAlgorithm(aMacAlgorithm)
 788.529 +	{
 788.530 +	}
 788.531 +
 788.532 +inline TWtlsKeyExchangeSuite::TWtlsKeyExchangeSuite(TKeyExchangeSuite aKeyExchangeSuite, TKeyIdType aKeyIdType, const TBuf8<KWtlsMaxKeyIdLength>& aKeyId)
 788.533 +	: iKeyExchangeSuite(aKeyExchangeSuite), iKeyIdType(aKeyIdType), iKeyId(aKeyId)
 788.534 +	{
 788.535 +	}
 788.536 +
 788.537 +
 788.538 +#endif	// __WSPTYPES_H__
   789.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   789.2 +++ b/epoc32/include/mw/xmlelemt.h	Wed Mar 31 12:27:01 2010 +0100
   789.3 @@ -0,0 +1,192 @@
   789.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   789.5 +// All rights reserved.
   789.6 +// This component and the accompanying materials are made available
   789.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   789.8 +// which accompanies this distribution, and is available
   789.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  789.10 +//
  789.11 +// Initial Contributors:
  789.12 +// Nokia Corporation - initial contribution.
  789.13 +//
  789.14 +// Contributors:
  789.15 +//
  789.16 +// Description:
  789.17 +// XmlElement.h
  789.18 +// XML Element class
  789.19 +// Derived from CTypedNode. Adds functionality
  789.20 +// to make the use of the node simpler
  789.21 +// 
  789.22 +//
  789.23 +
  789.24 +#ifndef __XMLELEMT_H
  789.25 +#define __XMLELEMT_H
  789.26 +
  789.27 +//
  789.28 +//  INCLUDES
  789.29 +//
  789.30 +#include <e32base.h>
  789.31 +#include <cnode.h>
  789.32 +
  789.33 +//
  789.34 +//  CONSTANTS  
  789.35 +//
  789.36 +/**
  789.37 +@publishedAll
  789.38 +@deprecated
  789.39 +*/
  789.40 +_LIT(KXmlElementDataItemAttributeName, "__XML_DI");
  789.41 +
  789.42 +//
  789.43 +//  DATA TYPES  
  789.44 +//
  789.45 +enum TXmlElementPanic
  789.46 +/**
  789.47 +@publishedAll
  789.48 +@deprecated
  789.49 +*/
  789.50 +{
  789.51 +	EXmlElPanicInvalidDataItem = 1
  789.52 +};
  789.53 +
  789.54 +// Type of an attribute in a node
  789.55 +typedef const TDesC* TXmlAttributeType;
  789.56 +// Type of an element (type of node)
  789.57 +typedef const TDesC* TXmlElementType;
  789.58 +
  789.59 +//
  789.60 +//  FUNCTION PROTOTYPES  
  789.61 +//
  789.62 +/**
  789.63 +@publishedAll
  789.64 +@deprecated
  789.65 +*/
  789.66 +GLREF_C void Panic(TXmlElementPanic aPanic);
  789.67 +
  789.68 +//
  789.69 +//  FORWARD DECLARATIONS
  789.70 +//
  789.71 +class RFile;
  789.72 +class CAttributeLookupTable;
  789.73 +
  789.74 +//
  789.75 +//  CLASS DEFINITIONS 
  789.76 +//
  789.77 +//##ModelId=3B66798702FF
  789.78 +class CXmlElement : public CTypedNode<TXmlElementType, TXmlAttributeType>
  789.79 +/**
  789.80 +@publishedAll
  789.81 +@deprecated
  789.82 +*/
  789.83 +{
  789.84 +public:
  789.85 +	// Construction
  789.86 +	//##ModelId=3B6679870364
  789.87 +	static inline CXmlElement* NewL(TXmlElementType aType,CNode* aParent);
  789.88 +
  789.89 +	// Attributes
  789.90 +	// Return the value of a particular attribute
  789.91 +	//##ModelId=3B667987035D
  789.92 +	IMPORT_C const TDesC* Attribute(const TDesC& aAttributeName) const;
  789.93 +	// Return the value of an aIndexth attribute
  789.94 +	//##ModelId=3B6679870362
  789.95 +	inline const TDesC* Attribute(TInt aIndex) const;
  789.96 +
  789.97 +	// Set attribute value
  789.98 +	//##ModelId=3B6679870359
  789.99 +	IMPORT_C void SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue, CAttributeLookupTable& aAttributeLUT);
 789.100 +
 789.101 +	// Store a unicode descriptor as data value. 
 789.102 +	//##ModelId=3B6679870357
 789.103 +	IMPORT_C void SetTextL(const TDesC& aData);
 789.104 +	// Get data value
 789.105 +	//##ModelId=3B6679870352
 789.106 +	inline const TDesC* Text() const;
 789.107 +
 789.108 +	// Children
 789.109 +	//##ModelId=3B6679870350
 789.110 +	inline void AppendChildL(CXmlElement* aElement);
 789.111 +
 789.112 +	//##ModelId=3B667987034D
 789.113 +	IMPORT_C void InsertChildL(TInt aIndexToInsertBefore, CXmlElement* aElement);
 789.114 +
 789.115 +	//##ModelId=3B6679870347
 789.116 +	inline TInt Count() const;
 789.117 +
 789.118 +	//##ModelId=3B6679870345
 789.119 +	inline CXmlElement* Child(TInt aIndex) const;
 789.120 +
 789.121 +	// Find out the index of this child
 789.122 +	// INPUT:
 789.123 +	// aChild - Pointer to the child node
 789.124 +	// RETURN:
 789.125 +	// TInt - index to the child, -1 if no child found
 789.126 +	//##ModelId=3B6679870343
 789.127 +	IMPORT_C TInt ChildIndex(CXmlElement* aChild) const;
 789.128 +
 789.129 +	// Data item
 789.130 +	//##ModelId=3B667987033C
 789.131 +	IMPORT_C void SetDataItemL(CBase* aDataItem, CAttributeLookupTable& aAttributeLUT); // takes ownership of aDataItem
 789.132 +	//##ModelId=3B667987033B
 789.133 +	IMPORT_C CBase* DataItem() const;
 789.134 +	//##ModelId=3B6679870339
 789.135 +	IMPORT_C void DeleteDataItem(CAttributeLookupTable& aAttributeLUT);
 789.136 +
 789.137 +private:
 789.138 +	// Data Item handling
 789.139 +	class CDataItemAttribute : public CBase
 789.140 +	{
 789.141 +	public:
 789.142 +		~CDataItemAttribute() { delete iDataItem; };
 789.143 +		CBase* iDataItem;
 789.144 +	};
 789.145 +
 789.146 +	//##ModelId=3B6679870335
 789.147 +	CXmlElement() : CTypedNode<TXmlElementType, TXmlAttributeType>(NULL, NULL) {};
 789.148 +
 789.149 +// Debug stuff
 789.150 +//#ifdef _DEBUG
 789.151 +public:
 789.152 +	//##ModelId=3B6679870334
 789.153 +	IMPORT_C void WriteIntoFileL();
 789.154 +	//##ModelId=3B6679870331
 789.155 +	void StartWriteL(RFile& aFile, TInt aIndentation);
 789.156 +private:
 789.157 +	//##ModelId=3B6679870327
 789.158 +	void WriteNameL(RFile& aFile, TInt aIndentation);
 789.159 +//#endif
 789.160 +};
 789.161 +
 789.162 +//
 789.163 +//	INLINE METHODS
 789.164 +//
 789.165 +inline CXmlElement* CXmlElement::NewL(TXmlElementType aType,CNode* aParent) 
 789.166 +{
 789.167 +	return (CXmlElement*)CTypedNode<TXmlElementType, TXmlAttributeType>::NewL(aType, aParent);
 789.168 +}
 789.169 +
 789.170 +inline const TDesC* CXmlElement::Attribute(TInt aIndex) const
 789.171 +{ 
 789.172 +	return (TDesC*)((CDataDelete*)AttributeByIndex(aIndex))->Data();
 789.173 +}
 789.174 +
 789.175 +inline const TDesC* CXmlElement::Text() const
 789.176 +{ 
 789.177 +	return (const TDesC*)CTypedNode<TXmlElementType, TXmlAttributeType>::Data(); 
 789.178 +}
 789.179 +
 789.180 +inline void CXmlElement::AppendChildL(CXmlElement* aElement)
 789.181 +{ 
 789.182 +	CTypedNode<TXmlElementType, TXmlAttributeType>::AppendNodeToThisNodeL(aElement); 
 789.183 +}
 789.184 +
 789.185 +inline TInt CXmlElement::Count() const
 789.186 +{ 
 789.187 +	return NumberImmediateChildren(); 
 789.188 +}
 789.189 +
 789.190 +inline CXmlElement* CXmlElement::Child(TInt aIndex) const
 789.191 +{ 
 789.192 +	return (CXmlElement*)CTypedNode<TXmlElementType, TXmlAttributeType>::Child(aIndex); 
 789.193 +}
 789.194 +
 789.195 +#endif //__XMLELEMT_H
   790.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   790.2 +++ b/epoc32/include/mw/xmllib.h	Wed Mar 31 12:27:01 2010 +0100
   790.3 @@ -0,0 +1,234 @@
   790.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   790.5 +// All rights reserved.
   790.6 +// This component and the accompanying materials are made available
   790.7 +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   790.8 +// which accompanies this distribution, and is available
   790.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  790.10 +//
  790.11 +// Initial Contributors:
  790.12 +// Nokia Corporation - initial contribution.
  790.13 +//
  790.14 +// Contributors:
  790.15 +//
  790.16 +// Description:
  790.17 +// CXmlLibrary is an interface class for a client to access the Xml parsing and validation
  790.18 +// services provided by the library. In general, CXmlLibrary should be concidered as a base
  790.19 +// class for a library which implements the language specific bits of an Xml-language parser.
  790.20 +// USAGE:
  790.21 +// - Construction of the class using NewL or NewL
  790.22 +// - Pass data to parsing by calling ProcessDataL.
  790.23 +// - When all data has been parsed, call CommitL
  790.24 +// 
  790.25 +//
  790.26 +
  790.27 +#ifndef __XMLLIB_H__
  790.28 +#define __XMLLIB_H__
  790.29 +
  790.30 +// System includes
  790.31 +//
  790.32 +#include <e32base.h>
  790.33 +#include <wapengstd.h>
  790.34 +
  790.35 +//	CONSTANT DEFINITIONS
  790.36 +//
  790.37 +
  790.38 +/**
  790.39 +ID for the root node attribute that contains the buffered document in case no DTD was available
  790.40 +@publishedAll
  790.41 +@deprecated
  790.42 +*/
  790.43 +_LIT(KXmlLibBufferedDocumentAttribute, "XmlLibBufferedDocument");
  790.44 +
  790.45 +/**
  790.46 +The Xml version that XML currently parser supports
  790.47 +@publishedAll
  790.48 +@deprecated
  790.49 +*/
  790.50 +_LIT(KSupportedXmlVersion, "1.0");
  790.51 +
  790.52 +/**
  790.53 +ID for node containing text data defined in a CDATA section (i.e. within <![CDATA[ .. ]]> )
  790.54 +@publishedAll
  790.55 +@deprecated
  790.56 +*/
  790.57 +_LIT(KCDataID, "CDATA");
  790.58 +
  790.59 +/**
  790.60 +ID for "normal" text nodes
  790.61 +@publishedAll
  790.62 +@deprecated
  790.63 +*/
  790.64 +_LIT(KPCDataID, "#PCDATA");
  790.65 +
  790.66 +
  790.67 +// Forward class declarations
  790.68 +//
  790.69 +class CXmlElement;
  790.70 +class CXmlParser;
  790.71 +class CBNFNode;
  790.72 +class CAttributeLookupTable;
  790.73 +class MWapPluginSP;
  790.74 +
  790.75 +//	CXmlLibrary
  790.76 +//
  790.77 +//##ModelId=3B6679A401C8
  790.78 +class CXmlLibrary : public CBase
  790.79 +/**
  790.80 +@publishedAll
  790.81 +@deprecated
  790.82 +*/
  790.83 +	{
  790.84 +public:	// Methods
  790.85 +	// Default constuctor
  790.86 +	// Sets default values values iMIMEType, iDefaultDoctype and iDefaultDTDUrl
  790.87 +	// An inheriting class should override this constructor and set the variables
  790.88 +	// with their correct values.
  790.89 +	//##ModelId=3B6679A402CD
  790.90 +	IMPORT_C virtual ~CXmlLibrary();
  790.91 +	//##ModelId=3B6679A402BA
  790.92 +	IMPORT_C static CXmlLibrary* NewL(MWapPluginSP& aPluginSP, CXmlElement* aRootNode);
  790.93 +	//##ModelId=3B6679A402AF
  790.94 +	IMPORT_C static CXmlLibrary* NewLC(MWapPluginSP& aPluginSP, CXmlElement* aRootNode);
  790.95 +
  790.96 +	//##ModelId=3B6679A40287
  790.97 +	IMPORT_C virtual TInt ProcessDataL(TDesC8& aData);
  790.98 +
  790.99 +	// Xml Parse given data and generate document tree to the given root node.
 790.100 +	// INPUT:
 790.101 +	//	aData - document text, or a piece of it
 790.102 +	// RETURN:
 790.103 +	//	TInt - an error code defined above, KErrNone if no errors.
 790.104 +	//##ModelId=3B6679A40291
 790.105 +	IMPORT_C virtual TInt ProcessDataL(HBufC8& aData);
 790.106 +
 790.107 +	// Signal parser that incoming data stream has finished
 790.108 +	// RETURN:
 790.109 +	//	TInt - an error code defined above, KErrNone if no error occured.
 790.110 +	//		   NOTE: In case no DTD was available, the document got buffered and was attached
 790.111 +	//				 to an attribute in the root node and CommitL returns KErrDocumentBuffered.
 790.112 +	//				 The buffered document will be re-parsed when engine receives the requested
 790.113 +	//				 DTD and calls a data handler (defined by iMIMEType) for validation.
 790.114 +	//##ModelId=3B6679A4027E
 790.115 +	IMPORT_C virtual TInt CommitL();
 790.116 +
 790.117 +	// Validate the document according to the given DTD.
 790.118 +	// INPUT:
 790.119 +	//	aDTDRootNode - Root node to the DTD tree which defines the structure of the document.
 790.120 +	//                 This referenced node is the DTD root node created by the engine.
 790.121 +	//                 The actual DTD tree, if any, is attached as a child to this node.
 790.122 +	//				   NO INHERITING CLASS SHOULD OVERRIDE THIS! Override the protected
 790.123 +	//                 ValidateL instead.
 790.124 +	// RETURN:
 790.125 +	//	TInt - an error code defining the reason for validation failure. KErrNone if no errors.
 790.126 +	//##ModelId=3B6679A40274
 790.127 +	IMPORT_C virtual TInt ValidateL(CBNFNode& aDTDRootNode);
 790.128 +
 790.129 +	// Set parser and library to its initial state to start parsing of a new document
 790.130 +	// INPUT:
 790.131 +	//	aRootNode - root node for the new document tree
 790.132 +	//##ModelId=3B6679A4026B
 790.133 +	IMPORT_C virtual void ResetL(CXmlElement* aRootNode);
 790.134 +
 790.135 +	// -----------------------------------------------------------------------
 790.136 +	// (WAP Push Addition)
 790.137 +	// Wap Push specific method to switch off use of XML validator which doesn't work
 790.138 +	// with push messages.
 790.139 +	//	iIgnoreValidator will be set on class construction to False with complies with
 790.140 +	// current code usage; for push messages ONLY set iIgnoreValidator to True
 790.141 +	// -----------------------------------------------------------------------
 790.142 +//	inline void OmitValidator(TBool aIgnoreValidator) { iIgnoreValidator = aIgnoreValidator; } ;
 790.143 +	//
 790.144 +	// -----------------------------------------------------------------------
 790.145 +
 790.146 +protected:
 790.147 +	// A simple, internal utility function to setup the Xml parser
 790.148 +	//##ModelId=3B6679A4026A
 790.149 +	IMPORT_C void PrepareParserL();
 790.150 +
 790.151 +	//##ModelId=3B6679A40269
 790.152 +	IMPORT_C void ConstructL();
 790.153 +
 790.154 +	// Default constructor
 790.155 +	// SEE NOTES ON iMimeType, iDefaultDocType and iDefaultDTDUrl for inheriting class's constuctor
 790.156 +	IMPORT_C CXmlLibrary(MWapPluginSP& aPluginSP, CXmlElement* aRootNode);
 790.157 +
 790.158 +	// Data parsing method for internal usage. Takes ownership of the given data
 790.159 +	// INPUT:
 790.160 +	// aData - Pointer to the UNICODE text data. Parser shall take ownership of this data!
 790.161 +	// RETURN:
 790.162 +	// TInt - Error code, KErrNone if no errors.
 790.163 +	//##ModelId=3B6679A402A5
 790.164 +	TInt ProcessDataL(HBufC16* aData);
 790.165 +
 790.166 +	// Internal utility function for finishing with the parser
 790.167 +	// RETURN:
 790.168 +	// TInt - Error code. KErrNone if no errors.
 790.169 +	//##ModelId=3B6679A40260
 790.170 +	TInt CommitParserL();
 790.171 +
 790.172 +	// Internal utility function for handling return values from parsing and initiating DTD fetch
 790.173 +	// RETURN:
 790.174 +	// TInt - Error code. KErrNone if no errors.
 790.175 +	//##ModelId=3B6679A4025F
 790.176 +	TInt ExecuteDataProcessingL();
 790.177 +
 790.178 +	//##ModelId=3B6679A40255
 790.179 +	CBNFNode* ExtractDTDTree(CBNFNode* aDTDRoot);
 790.180 +
 790.181 +	// Internal validation function that actually performs the validation.
 790.182 +	// INPUT:
 790.183 +	// aDTDRootNode - Pointer to the _actual_ dtd tree root node, NOT the root given by angine
 790.184 +	// OUTPUT:
 790.185 +	// TInt - Error code, KErrNone if no errors
 790.186 +	//##ModelId=3B6679A4024B
 790.187 +	IMPORT_C virtual TInt ExecuteValidateL(CBNFNode* aDTDRootNode);
 790.188 +
 790.189 +protected:	// Attributes
 790.190 +
 790.191 +	/** Plugin Service Provider
 790.192 +	 */
 790.193 +	//##ModelId=3B6679A40239
 790.194 +	MWapPluginSP&		iPluginSP;
 790.195 +
 790.196 +	/** Document Root Node
 790.197 +	 */
 790.198 +	//##ModelId=3B6679A40225
 790.199 +	CXmlElement*		iRootNode;
 790.200 +
 790.201 +	// The default DTD doctype and Url in case no DTD was defined
 790.202 +	// NOTE: Inheriting class should set these values in its constructor!!
 790.203 +	//##ModelId=3B6679A4021B
 790.204 +	const TDesC*		iDefaultDoctype;
 790.205 +
 790.206 +	//##ModelId=3B6679A40211
 790.207 +	const TDesC*		iDefaultDTDUrl;
 790.208 +
 790.209 +	/** The actual DTD tree - not owned
 790.210 +	 */
 790.211 +	//##ModelId=3B6679A401FC
 790.212 +	CBNFNode*			iDTD;
 790.213 +
 790.214 +private:	// Attributes
 790.215 +
 790.216 +	/** The XML parser
 790.217 +	 */
 790.218 +	//##ModelId=3B6679A401F2
 790.219 +	CXmlParser*			iParser;
 790.220 +
 790.221 +private:	// BC-proofing
 790.222 +
 790.223 +/**
 790.224 +	Intended Usage	:	Reserved for future use
 790.225 +	@since			6.0
 790.226 + */
 790.227 +	//##ModelId=3B6679A40241
 790.228 +	IMPORT_C virtual void CXmlLibrary_Reserved1();
 790.229 +
 790.230 +	/** Reserved for future use
 790.231 +	 */
 790.232 +	//##ModelId=3B6679A401E8
 790.233 +	TAny*				iCXmlLibrary_Reserved;
 790.234 +
 790.235 +	};
 790.236 +
 790.237 +#endif // __XMLLIB_H__
   791.1 --- a/epoc32/include/mwappluginsp.h	Tue Mar 16 16:12:26 2010 +0000
   791.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   791.3 @@ -1,112 +0,0 @@
   791.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   791.5 -// All rights reserved.
   791.6 -// This component and the accompanying materials are made available
   791.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   791.8 -// which accompanies this distribution, and is available
   791.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  791.10 -//
  791.11 -// Initial Contributors:
  791.12 -// Nokia Corporation - initial contribution.
  791.13 -//
  791.14 -// Contributors:
  791.15 -//
  791.16 -// Description:
  791.17 -//
  791.18 -
  791.19 -#ifndef __MWAPPLUGINSP_H__
  791.20 -#define __MWAPPLUGINSP_H__
  791.21 -
  791.22 -// System includes
  791.23 -//
  791.24 -#include <e32def.h>
  791.25 -
  791.26 -// Forward class declarations
  791.27 -//
  791.28 -class CDocumentNode;
  791.29 -class CNode;
  791.30 -class CDTDNode;
  791.31 -class CXmlElement;
  791.32 -class CAttributeLookupTable;
  791.33 -
  791.34 -
  791.35 -typedef TAny CWmlLibrary;
  791.36 -
  791.37 -
  791.38 -//##ModelId=3B666FA402F4
  791.39 -class MWapPluginSP
  791.40 -/**
  791.41 -@publishedAll
  791.42 -@deprecated
  791.43 -*/
  791.44 -	{
  791.45 -public:
  791.46 -
  791.47 -/**
  791.48 -	Intended Usage	:	Resets the content data pointers in the given document 
  791.49 -	node and any dependents. This could also reset the data pointer in an 
  791.50 -	associated data dictionary node and its client document nodes.
  791.51 -	@since			6.0
  791.52 -	@param			aDocumentNode	The pointer to the document root node
  791.53 -	@param			aDataPtr		The pointer to the new data content
  791.54 -	@pre 			None
  791.55 -	@post			The data pointers in the specified document node and 
  791.56 -	dependents have been set to the new data
  791.57 - */
  791.58 -	//##ModelId=3B666FA40331
  791.59 -	virtual void ResetDocumentNodeData(CDocumentNode* aDocumentNode, TAny* aDataPtr) const =0;
  791.60 -
  791.61 -/**
  791.62 -	Intended Usage	:	Gets hold of the actual node that holds the data for the
  791.63 -	specified document node. The document data may actually be shared amongst 
  791.64 -	several document nodes and actually held in the data dictionary.
  791.65 -	@since			6.0
  791.66 -	@param			aDocumentNode The pointer to a document node
  791.67 -	@return			A pointer to node that actual holds the data.
  791.68 - */
  791.69 -	//##ModelId=3B666FA4032C
  791.70 -	virtual CNode& DataStorageNode(const CDocumentNode* aDocumentNode) const =0;
  791.71 -
  791.72 -/**
  791.73 -	Intended Usage	:	Preload the specified DTD for validating recieved WML 
  791.74 -	and WMLC decks. The document data handler needs to call this as soon as it
  791.75 -	knows what type of DTD the document is using. When the document completes,
  791.76 -	this DTD will be used to validate it before the 100% complete message is 
  791.77 -	passed up to the engine observer.
  791.78 -	@since			6.0
  791.79 -	@param			aDocType		The specified DTD type
  791.80 -	@param			aDTDURL			The URL of the DTD to be fetched
  791.81 -	@param			aDocRootNode	The root node of the document to be validated
  791.82 -	@return			A pointer to the DTD if the specified DTD is available, 
  791.83 -	otherwise NULL.
  791.84 -	@todo			Add the pre and post conditions.
  791.85 -	@pre 			None
  791.86 -	@post			Unspecified
  791.87 - */
  791.88 -	//##ModelId=3B666FA40328
  791.89 -	virtual const CDTDNode* PrepareDTDL(const TDesC& aDocType, 
  791.90 -										const TDesC& aDTDURL,
  791.91 -										const CDocumentNode* aDocRootNode) =0;
  791.92 -
  791.93 -/**
  791.94 -	Intended Usage	:	Provide a CWmlLibrary object. This object is ready to 
  791.95 -	process data and build a document tree to the given root node.
  791.96 -	@since			6.0
  791.97 -	@warning		The CWmlLibrary object is owned by the WAP Engine.
  791.98 -	@param			aDocRootNode	A pointer to the root node where the document
  791.99 -	tree is to be built.
 791.100 -	@return			A pointer the CWmlLibrary object. 
 791.101 - */
 791.102 -	//##ModelId=3B666FA40326
 791.103 -	virtual CWmlLibrary* WmlLibL(CXmlElement* aDocRootNode) =0;
 791.104 -
 791.105 -/**
 791.106 -	Intended Usage	:	Gets the Attribute Look Up Table.
 791.107 -	@since			6.0
 791.108 -	@return			A reference to the Attribute Look Up Table.
 791.109 - */
 791.110 -	//##ModelId=3B666FA4031C
 791.111 -	virtual CAttributeLookupTable& AttributeLUT() =0;
 791.112 -
 791.113 -	};
 791.114 -
 791.115 -#endif	// __MWAPPLUGINSP_H__
   792.1 --- a/epoc32/include/mwbxmlconverterobserver.h	Tue Mar 16 16:12:26 2010 +0000
   792.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   792.3 @@ -1,54 +0,0 @@
   792.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   792.5 -// All rights reserved.
   792.6 -// This component and the accompanying materials are made available
   792.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   792.8 -// which accompanies this distribution, and is available
   792.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  792.10 -//
  792.11 -// Initial Contributors:
  792.12 -// Nokia Corporation - initial contribution.
  792.13 -//
  792.14 -// Contributors:
  792.15 -//
  792.16 -// Description:
  792.17 -//
  792.18 -
  792.19 -#ifndef __MWBXMLCONVERTEROBSERVER_H__
  792.20 -#define __MWBXMLCONVERTEROBSERVER_H__
  792.21 -
  792.22 -// System includes
  792.23 -//
  792.24 -#include <e32std.h>
  792.25 -
  792.26 -//##ModelId=3B6678E0000E
  792.27 -class MWbxmlConverterObserver
  792.28 -/**
  792.29 -@publishedAll
  792.30 -@deprecated
  792.31 -*/
  792.32 -	{
  792.33 -public:	// Methods
  792.34 -
  792.35 -	//##ModelId=3B6678E00024
  792.36 -	virtual TInt HandleWbxmlOutputL(const HBufC8& aBuffer) = 0;
  792.37 -
  792.38 -	//##ModelId=3B6678E00026
  792.39 -	virtual TInt HandleWbxmlOutputL(HBufC8& aBuffer) = 0;
  792.40 -
  792.41 -	//##ModelId=3B6678E0002D
  792.42 -	virtual TInt HandleWbxmlOutputL(HBufC8* aBuffer) = 0;
  792.43 -
  792.44 -	//##ModelId=3B6678E0002F
  792.45 -	virtual TInt HandleWbxmlOutputL(TUint32 aSource) = 0;
  792.46 -
  792.47 -	//##ModelId=3B6678E00022
  792.48 -	virtual void HandleWbxmlEncodingUpdateL(HBufC8* aCharacterEncoding) = 0;
  792.49 -
  792.50 -private:	// Methods
  792.51 -
  792.52 -	//##ModelId=3B6678E00018
  792.53 -	IMPORT_C virtual void MWbxmlConverterObserver_Reserved1();
  792.54 -
  792.55 -	};
  792.56 -
  792.57 -#endif	// #define __MWBXMLCONVERTEROBSERVER_H__
   793.1 --- a/epoc32/include/obex.h	Tue Mar 16 16:12:26 2010 +0000
   793.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   793.3 @@ -1,36 +0,0 @@
   793.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   793.5 -// All rights reserved.
   793.6 -// This component and the accompanying materials are made available
   793.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   793.8 -// which accompanies this distribution, and is available
   793.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  793.10 -//
  793.11 -// Initial Contributors:
  793.12 -// Nokia Corporation - initial contribution.
  793.13 -//
  793.14 -// Contributors:
  793.15 -//
  793.16 -// Description:
  793.17 -//
  793.18 -
  793.19 -
  793.20 -
  793.21 -/**
  793.22 - @file
  793.23 - @publishedAll
  793.24 - @released
  793.25 -*/
  793.26 -
  793.27 -#ifndef OBEX_H
  793.28 -#define OBEX_H
  793.29 -
  793.30 -#include <obextypes.h>
  793.31 -#include <obexconstants.h>
  793.32 -#include <obexbaseobject.h>
  793.33 -#include <obexobjects.h>
  793.34 -#include <obexheaders.h>
  793.35 -#include <obexbase.h>
  793.36 -#include <obexclient.h>
  793.37 -#include <obexserver.h>
  793.38 -
  793.39 -#endif // OBEX_H
   794.1 --- a/epoc32/include/obexbase.h	Tue Mar 16 16:12:26 2010 +0000
   794.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   794.3 @@ -1,243 +0,0 @@
   794.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   794.5 -// All rights reserved.
   794.6 -// This component and the accompanying materials are made available
   794.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   794.8 -// which accompanies this distribution, and is available
   794.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  794.10 -//
  794.11 -// Initial Contributors:
  794.12 -// Nokia Corporation - initial contribution.
  794.13 -//
  794.14 -// Contributors:
  794.15 -//
  794.16 -// Description:
  794.17 -//
  794.18 -
  794.19 -
  794.20 -
  794.21 -/**
  794.22 - @file
  794.23 - @publishedAll
  794.24 - @released
  794.25 -*/
  794.26 -
  794.27 -#ifndef __OBEXBASE_H
  794.28 -#define __OBEXBASE_H
  794.29 -
  794.30 -#include <obextypes.h>
  794.31 -#include <mobexnotify.h>
  794.32 -
  794.33 -class CObexTransportControllerBase;
  794.34 -class TObexTransportInfo;
  794.35 -class CObexPacket;
  794.36 -class CObexNotifyHandlerBase;
  794.37 -
  794.38 -/**
  794.39 -@publishedAll
  794.40 -@released
  794.41 -
  794.42 -This class is the common base class for any object which wishes
  794.43 -to use the Obex Server or Client.
  794.44 -The class which owns a CObexClient or CObexServer must be provide an object
  794.45 -derived from this class to handle the call from the Server/Client for a request
  794.46 -for a Password.
  794.47 -@see CObex::SetCallBack
  794.48 -*/
  794.49 -class MObexAuthChallengeHandler
  794.50 -	{
  794.51 -public:
  794.52 -	/**
  794.53 -	Indicates that the server/client has received an Authentication challenge. The challenge
  794.54 -	can only be responded to once a password has been retrieved by some means and passed
  794.55 -	back to the calling class. The password is passed back via CObex::UserPasswordL
  794.56 -	@param aRealm This will contain the Realm specified by the unit forcing the
  794.57 -	Authentication, if no UserID was supplied then this parameter will be of zero length. 
  794.58 -	*/
  794.59 -	virtual void GetUserPasswordL(const TDesC& aRealm) = 0;
  794.60 -		
  794.61 -	/**
  794.62 - 	Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
  794.63 -	@param aInterface UID of the interface to return
  794.64 -	@param aObject the container for another interface as specified by aInterface
  794.65 -	*/
  794.66 -	IMPORT_C virtual void MOACH_ExtensionInterfaceL(TUid aInterface, void*& aObject);
  794.67 -	};
  794.68 -
  794.69 -/**
  794.70 -This class is the common base class for CObexClient and CObexServer. It is 
  794.71 -an abstract class and cannot be instantiated in itself. However, it does 
  794.72 -contain user functionality common to both client and server connections.
  794.73 -
  794.74 -Provides the basic OBEX transport functionality (sending and receiving 
  794.75 -files)
  794.76 -Client and server provide the more specialied APIs for
  794.77 -- initiation or response to puts & gets
  794.78 -- (possible) handling of more generalised 'objects' (prob. with data buffered through a file).
  794.79 -
  794.80 -This class is not designed for user derivation
  794.81 -
  794.82 -@publishedAll
  794.83 -@released
  794.84 -*/
  794.85 -NONSHARABLE_CLASS(CObex) : public CBase, protected MObexNotify
  794.86 -	{
  794.87 -public:
  794.88 -	/**
  794.89 -	Describes the information set or received in a SETPATH command.
  794.90 -	
  794.91 -	The first bit of iFlags, 0, can be set to indicate to the receiver of SETPATH to backup a level before applying the path name.
  794.92 -	The second bit of iFlags, 1, can be set to indicate to the receiver of SETPATH to NOT create the directory if it doesn't exist.
  794.93 -	The iConstants variable is always set to zero as it is reserved. 
  794.94 -	The iName variable indicates the directory to create or go to, and does not include the root directory of the receiver (i.e. 
  794.95 -	if the directory to be set is C:\notes then iName is set to "notes").
  794.96 -	 If  a name is not set then set CObex::TSetPathInfo::iNamePresent to false. 
  794.97 -	*/
  794.98 -	NONSHARABLE_CLASS(TSetPathInfo)
  794.99 -		{
 794.100 -	public:
 794.101 -		IMPORT_C TSetPathInfo();
 794.102 -		TSetPathInfo(const TObexSetPathData& aData);
 794.103 -		IMPORT_C TBool Parent() const;
 794.104 -		TUint8 iFlags;
 794.105 -		TUint8 iConstants;
 794.106 -		TBuf<KObexObjectDescriptionSize> iName;
 794.107 -		/** Whether iName is present in this SETPATH info */	
 794.108 -		TBool iNamePresent;	
 794.109 -	private:
 794.110 -		// This data padding has been added to help prevent future binary compatibility breaks	
 794.111 -		// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 794.112 -		TUint32     iPadding1; 
 794.113 -		TUint32     iPadding2; 				
 794.114 -		};
 794.115 -		
 794.116 -	/**
 794.117 -	Current obex connection state
 794.118 -	In general, the further through the enum the values are,
 794.119 -	the further through the connection process the state machine
 794.120 -	will be.
 794.121 -	*/
 794.122 -	enum TConnectState 
 794.123 -		{ 
 794.124 -		EConnIdle,					/** Nothing is happening */
 794.125 -		EConnTransport,				/** Transport Link connected not yet established true Link */
 794.126 -		EConnObex,					/** full connection established */
 794.127 -		ESimpleConnRequest,			/** Connect without Auth has been sent by ClientReceived by Server */
 794.128 -		EConnChallRxed,				/**  Server has issued a challenge, to a Client cionnect */
 794.129 -		ESimpleConnChallIssued,		/** Server, received Simple Connect but Server Challenge issued */
 794.130 -		EChallConnRequested,		/** Connect with Auth has been sent by Client/Received by Server */
 794.131 -		EChallConnChallIssued,		/** Server has sent a Challenge & Resp to a Client EChallConnRequest */
 794.132 -		EWaitForFinalResponse,		/** Client, waiting for final success/fail not chall-response expected
 794.133 -									    Server, Waiting for final Resp fromm Client to Challenge */
 794.134 -		EFinalResponseReceived,		/** Server, the final response has been received */
 794.135 -		EFinalChallRxed,			/** Server, Client connect with challenge, Server responds with challenge, Client re-issued original/new challenge */
 794.136 -		EWaitForUserInput,			/** waiting for the user */
 794.137 -		EDropLink					/** drop the link */
 794.138 -		};
 794.139 -
 794.140 -	/**
 794.141 -	The Obex operation currently being performed.
 794.142 -	*/
 794.143 -	enum TOperation 
 794.144 -		{ 
 794.145 -		EOpConnect		= 0x00, /** Connect */
 794.146 -		EOpDisconnect	= 0x01, /** Disconnect */
 794.147 -		EOpPut			= 0x02, /** Put */
 794.148 -		EOpGet			= 0x03, /** Get */
 794.149 -		EOpSetPath		= 0x05, /** SetPath */
 794.150 -		EOpAbort		= 0xFF,	/** Abort - must fit in one pkt so final bit is always set */
 794.151 -		EOpAbortNoFBit	= 0x7F, /** Abort (internal, never transmitted) */
 794.152 -		EOpGetResponse  = 0xFD,	/** Internal - not actually an obex operation. */
 794.153 -		EOpIdle			= 0xFE,	/** Internal - not actually an obex operation. */
 794.154 -		};
 794.155 -		
 794.156 -	/**
 794.157 -	Flags to suppress the authentication elements of the authentication challenge header.
 794.158 -	*/
 794.159 -	enum TObexSuppressedAuthElements
 794.160 -	{
 794.161 -	EObexNoSuppressedAuthElements				= 0x00,
 794.162 -	EObexSuppressChallengeOptionsAuthElement	= 0x01,
 794.163 -	EObexSuppressRealmAuthElement				= 0x02,
 794.164 -	EObexSuppressAllAuthElements				= EObexSuppressChallengeOptionsAuthElement | EObexSuppressRealmAuthElement // Must be last
 794.165 -	};		
 794.166 -		
 794.167 -	virtual ~CObex();
 794.168 -	IMPORT_C void SetCallBack(MObexAuthChallengeHandler& aCallBack);
 794.169 -	IMPORT_C TBool IsConnected() const;
 794.170 -	IMPORT_C TBool IsStrictPeer() const;
 794.171 -	IMPORT_C const TObexConnectInfo& LocalInfo() const;
 794.172 -	IMPORT_C TInt SetLocalWho(const TDesC8& aInfo); 
 794.173 -    IMPORT_C const TObexConnectInfo& RemoteInfo() const;
 794.174 -   	IMPORT_C void SuppressAuthenticationHeaderElements(TObexSuppressedAuthElements aSuppressedObexAuthElements);
 794.175 -	    
 794.176 -	// Implementation of MObexNotify Interface
 794.177 -	/**
 794.178 -	@internalTechnology
 794.179 -	*/
 794.180 -	virtual void Process(CObexPacket& aPacket);
 794.181 -	/**
 794.182 -	@internalTechnology
 794.183 -	*/
 794.184 -	virtual void Error(TInt aError) ;
 794.185 -	/** Call back to start the obex session
 794.186 -	@internalTechnology
 794.187 -	*/
 794.188 -	virtual void TransportUp();
 794.189 -	/**
 794.190 -	@internalTechnology
 794.191 -	*/
 794.192 -	virtual void TransportDown(TBool aForceTransportDeletion);
 794.193 -	
 794.194 -	virtual void UserPasswordL( const TDesC& aPassword) = 0; 
 794.195 -	IMPORT_C void RemoteAddr(TSockAddr& anAddr); 
 794.196 -
 794.197 -	TConnectState GetConnectState() const;
 794.198 -
 794.199 -	IMPORT_C TBool IsAuthenticating() const;
 794.200 -	
 794.201 -protected:
 794.202 -	CObex();
 794.203 -	virtual void ConstructL(TObexTransportInfo& aObexTransportInfo);
 794.204 -	virtual TInt ParseConnectPacket(CObexPacket& aPacket) = 0;	
 794.205 -	void SetConnectState(TConnectState aNewState);
 794.206 -	IMPORT_C TConnectState ConnectState() const;	// same as GetConnectState - has to be maintained here for BC
 794.207 -	virtual void OnPacketReceive(CObexPacket& aPacket) =0;
 794.208 -	virtual void OnError(TInt aError) =0;
 794.209 -	virtual void OnTransportUp() =0;
 794.210 -	virtual void OnTransportDown() =0;
 794.211 -	void ProcessChallengeL(const TObexInternalHeader& hdr);			//process the received challenge
 794.212 -	void ProcessChallResponseL(const TObexInternalHeader& hdr);		//process the response to challenge
 794.213 -	TInt GenerateChallenge(CObexPacket& aPacket);					//generate a challenge 
 794.214 -	void PrepareChallResponseL(const TDesC& aPassword);			//generate a response a respose to challenge
 794.215 -															//after user Password input
 794.216 -	void ForcedTransportDown();
 794.217 -	void ControlledTransportDown();
 794.218 -	void RemoteInfoCleanup();
 794.219 -	void CObex::CancelObexConnection();
 794.220 -protected:
 794.221 -	TConnectState iConnectState;
 794.222 -	CObexTransportControllerBase* iTransportController;
 794.223 -	TObexConnectInfo iLocalInfo;
 794.224 -	TObexConnectInfo iRemoteInfo;
 794.225 -	MObexAuthChallengeHandler* iCallBack;
 794.226 -	TNonce iOutgoingNonce; //nonce used when challenging
 794.227 -	TNonce iIncomingNonce; //nonce used when receiving a challenge
 794.228 -	HBufC8* iChallPassword; //password used when challenging
 794.229 -	HBufC8* iRespPassword; //password used when responding to a challenge
 794.230 -	HBufC8* iRxChallenge;
 794.231 -	TBuf8<KChallResponseSize> iOutgoingChallResp;//response to the previously issued challenge
 794.232 -								//16 nonce, 16 digest resp, 20 UserID, 3*(tag+size)
 794.233 -	TBuf8<KChallResponseSize> iIncomingChallResp;//response received from previous challenge
 794.234 -	TBuf8<KObexRespSize> iIncomingRequestDigest;
 794.235 -	HBufC* iRemoteUID; //UID of remote device
 794.236 -	HBufC* iRemoteRealm;//Realm of remote device
 794.237 -	CObexAuthenticator* iAuthEngine;
 794.238 -	TBool iChallenge; //to challenge or not to challenge?
 794.239 -	TBool iUserIDRequested; //does the challenge insist that a UserID is returned
 794.240 -	TBool iReserved; //released boolean now available for future use
 794.241 -	TOperation iCurrentOperation;
 794.242 -	CObexNotifyHandlerBase* iNotifyHandler;
 794.243 -	TUint iSuppressedObexAuthElements;
 794.244 -	};
 794.245 -
 794.246 -#endif // __OBEXBASE_H
   795.1 --- a/epoc32/include/obexbaseobject.h	Tue Mar 16 16:12:26 2010 +0000
   795.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   795.3 @@ -1,147 +0,0 @@
   795.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   795.5 -// All rights reserved.
   795.6 -// This component and the accompanying materials are made available
   795.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   795.8 -// which accompanies this distribution, and is available
   795.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  795.10 -//
  795.11 -// Initial Contributors:
  795.12 -// Nokia Corporation - initial contribution.
  795.13 -//
  795.14 -// Contributors:
  795.15 -//
  795.16 -// Description:
  795.17 -//
  795.18 -
  795.19 -
  795.20 -
  795.21 -/**
  795.22 - @file
  795.23 - @publishedAll
  795.24 - @released
  795.25 -*/
  795.26 -
  795.27 -#ifndef __OBEXBASEOBJECT_H
  795.28 -#define __OBEXBASEOBJECT_H
  795.29 -
  795.30 -#include <obextypes.h>
  795.31 -#include <f32file.h>
  795.32 -
  795.33 -const TUint32 KConnIDInvalid = 0xffffffff;
  795.34 -
  795.35 -/**
  795.36 -Objects of this class are used to describe the objects to be transferred and
  795.37 -those received via Obex.
  795.38 -Consists of a number of attributes describing the object, along with
  795.39 -methods to set them. CObexBaseObject is an abstract base class, which defines
  795.40 -attribute setting and transferring functionality, but does not specify the
  795.41 -storage mechanism for the data part (called the object body) of the object.
  795.42 -This body part is defined in derived classes.
  795.43 -
  795.44 -Object description attributes are tracked for validity automatically, so
  795.45 -that only valid attributes are sent to the remote machine. Also has the
  795.46 -concept of "header masks". This selects which of the various attributes
  795.47 -will actually be sent out/read in when the object is used in an operation
  795.48 -with the remote machine. Objects default to transferring all valid
  795.49 -attributes, use the header mask if restriction is required on the headers
  795.50 -exchanged.
  795.51 -
  795.52 -See the various derived classes for description of object body
  795.53 -representation.
  795.54 -
  795.55 -The common attributes are defined to be as close to the underlying OBEX
  795.56 -headers as usefully possible, hence any OBEX header specified as a Unicode
  795.57 -string (e.g. Name) translate to TDes (variant) EPOC descriptors, "byte
  795.58 -sequences" (e.g. Type) are TDes8 (or ASCII invariant), and byte and 32 bit
  795.59 -integers (e.g. Length) are TUint32s.
  795.60 -
  795.61 -This class is not designed for user derivation (ie. outside of this dll).
  795.62 -
  795.63 -@see CObexHeader
  795.64 -@publishedAll
  795.65 -@released
  795.66 -*/
  795.67 -NONSHARABLE_CLASS(CObexBaseObject) : public CBase
  795.68 -	{
  795.69 -// required for access to iValidHeaders in CObexServer::CheckForConnectionID
  795.70 -friend class CObexServer;
  795.71 -
  795.72 -public:
  795.73 -	virtual ~CObexBaseObject();
  795.74 -	IMPORT_C void SetHeaderMask(const TObexHeaderMask aHeaderMask);
  795.75 -	IMPORT_C void SetNameL(const TDesC& aDesc);
  795.76 -	IMPORT_C void SetTypeL(const TDesC8& aDesc);
  795.77 -	IMPORT_C void SetLengthL(const TUint32 aLength);
  795.78 -	IMPORT_C void SetTimeL(const TTime aLocalTime);
  795.79 -	IMPORT_C void SetDescriptionL(const TDesC& aDesc);
  795.80 -	IMPORT_C void SetTargetL(const TDesC8& aDesc);
  795.81 -	IMPORT_C void AddHttpL(const TDesC8& aDesc);
  795.82 -	IMPORT_C void SetAppParamL(const TDesC8& aDesc);
  795.83 -	
  795.84 -	IMPORT_C void AddHeaderL(CObexHeader& aHeader);
  795.85 -	IMPORT_C TInt BytesSent();
  795.86 -	IMPORT_C TInt BytesReceived();
  795.87 -	IMPORT_C TObexHeaderMask HeaderMask();
  795.88 -	IMPORT_C TObexHeaderMask ValidHeaders();
  795.89 -	IMPORT_C const TDesC& Name();
  795.90 -	IMPORT_C const TDesC8& Type();
  795.91 -	IMPORT_C TUint32 Length();
  795.92 -	IMPORT_C const TTime Time();
  795.93 -	IMPORT_C const TDesC& Description();
  795.94 -	IMPORT_C const TDesC8& Target();
  795.95 -	IMPORT_C const RPointerArray<HBufC8>* Http() const;
  795.96 -	IMPORT_C const TDesC8& AppParam() const;
  795.97 -	IMPORT_C void Reset();
  795.98 -	IMPORT_C const CObexHeaderSet& HeaderSet() const;
  795.99 -	IMPORT_C CObexHeaderSet& HeaderSet();
 795.100 -
 795.101 -	// Public unexported functions used by CObexServer, CObexClient, etc
 795.102 -	enum TProgress { EContinue,EComplete,EError,ELastPacket };
 795.103 -	TInt InitSend(TObexOpcode aOpcode);
 795.104 -	TProgress PrepareNextSendPacket(CObexPacket& aPacket);
 795.105 -	TInt InitReceive();
 795.106 -	TProgress ParseNextReceivePacket(CObexPacket& aPacket);
 795.107 -	void PrepareConnectionHeader( CObexPacket& aPacket );
 795.108 -	void SetConnectionIdL(TUint32 aFourByte);
 795.109 -	TUint32 ConnectionID();
 795.110 -	TObexResponse GetLastError() const;
 795.111 -
 795.112 -protected:
 795.113 -	CObexBaseObject();
 795.114 -	void GuessTypeFromExtL(const TDesC& aExt);
 795.115 -	void ResetHeaders();
 795.116 -	// Pure virtuals that all derived objects must implement
 795.117 -	virtual void GetData(TInt aPos, TDes8& aDes) =0;
 795.118 -	virtual void NewData(TInt aPos, TDes8& aDes) =0;
 795.119 -	virtual TInt DataSize() =0;
 795.120 -	virtual void ResetData() =0;
 795.121 -	void CreateHeaderStorageDataL();
 795.122 -	void SetTimeHeaderL(const TDesC8& aTimeDes);
 795.123 -	void SetUtcTimeL(const TTime aUtcTime);
 795.124 -	
 795.125 -// Data
 795.126 -private:
 795.127 -	TObexHeaderMask iHeaderMask;
 795.128 -	TObexHeaderMask iValidHeaders;
 795.129 -
 795.130 -	mutable RPointerArray<HBufC8>* iHttp;
 795.131 -
 795.132 -	CObexHeaderSet* iHeaderSet;
 795.133 -	
 795.134 -	TProgress iSendProgress;
 795.135 -	TProgress iRecvProgress;
 795.136 -	TObexOpcode iSendOpcode;
 795.137 -
 795.138 -	// This data item is used to store a CObexHeader which is used as a temporary
 795.139 -	// store when finding headers
 795.140 -	CObexHeader* iObexHeader;
 795.141 -	
 795.142 -	TObexHeaderMask iSendHeaders; 
 795.143 -	TInt iSendBytes;
 795.144 -	TInt iRecvBytes;
 795.145 -	
 795.146 -	TObexResponse iLastError;
 795.147 -	
 795.148 -	};
 795.149 -
 795.150 -#endif // __OBEXBASEOBJECT_H
   796.1 --- a/epoc32/include/obexbttransportinfo.h	Tue Mar 16 16:12:26 2010 +0000
   796.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   796.3 @@ -1,36 +0,0 @@
   796.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   796.5 -// All rights reserved.
   796.6 -// This component and the accompanying materials are made available
   796.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   796.8 -// which accompanies this distribution, and is available
   796.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  796.10 -//
  796.11 -// Initial Contributors:
  796.12 -// Nokia Corporation - initial contribution.
  796.13 -//
  796.14 -// Contributors:
  796.15 -//
  796.16 -// Description:
  796.17 -//
  796.18 -
  796.19 -#ifndef __OBEXBTTRANSPORTINFO_H__
  796.20 -#define __OBEXBTTRANSPORTINFO_H__
  796.21 -
  796.22 -#include <bt_sock.h>
  796.23 -#include <obextransportinfo.h>
  796.24 -
  796.25 -/**
  796.26 -Concrete transport info type for use when using RFCOMM transport controller.
  796.27 -@publishedAll
  796.28 -@released
  796.29 -*/
  796.30 -NONSHARABLE_CLASS(TObexBtTransportInfo) : public TObexTransportInfo
  796.31 -	{
  796.32 -public:
  796.33 -	/**
  796.34 -	The BT device address of the remote party.
  796.35 -	*/
  796.36 -	TBTSockAddr iAddr;
  796.37 -	};
  796.38 -
  796.39 -#endif // __OBEXBTTRANSPORTINFO_H__
   797.1 --- a/epoc32/include/obexclient.h	Tue Mar 16 16:12:26 2010 +0000
   797.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   797.3 @@ -1,112 +0,0 @@
   797.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   797.5 -// All rights reserved.
   797.6 -// This component and the accompanying materials are made available
   797.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   797.8 -// which accompanies this distribution, and is available
   797.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  797.10 -//
  797.11 -// Initial Contributors:
  797.12 -// Nokia Corporation - initial contribution.
  797.13 -//
  797.14 -// Contributors:
  797.15 -//
  797.16 -// Description:
  797.17 -//
  797.18 -
  797.19 -
  797.20 -
  797.21 -/**
  797.22 - @file
  797.23 - @publishedAll
  797.24 - @released
  797.25 -*/
  797.26 -
  797.27 -#ifndef __OBEXCLIENT_H
  797.28 -#define __OBEXCLIENT_H
  797.29 -
  797.30 -#include <obextypes.h>
  797.31 -#include <obex/internal/obextransportconstants.h>
  797.32 -#include <obexbase.h>
  797.33 -
  797.34 -class CObexPacket;
  797.35 -class MObexFinalPacketObserver;
  797.36 -class CObexPacketSignaller;
  797.37 -class CObexPacketTimer;
  797.38 -class CObexErrorEngine;
  797.39 -
  797.40 -/**
  797.41 -Client side functionality. Connection based.
  797.42 -Supports ...
  797.43 -- Opening IrDA TTP sockets for the OBEX session.
  797.44 -- Opening an OBEX session over a connected socket
  797.45 -- Standard OBEX (spec. version 1.2) operations.
  797.46 - 
  797.47 -This class is not designed for user derivation.
  797.48 -
  797.49 -@publishedAll
  797.50 -@released
  797.51 -*/
  797.52 -NONSHARABLE_CLASS(CObexClient) : public CObex
  797.53 -	{
  797.54 -public:
  797.55 -	IMPORT_C ~CObexClient();
  797.56 -	IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr);
  797.57 -	IMPORT_C static CObexClient* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy);
  797.58 -	IMPORT_C static CObexClient* NewL(TObexTransportInfo& aObexTransportInfo);
  797.59 -	IMPORT_C void Connect(TRequestStatus& aStatus);
  797.60 -	IMPORT_C void Connect(CObexBaseObject& aObject, TRequestStatus& aStatus);	
  797.61 -	IMPORT_C void ConnectL(CObexBaseObject& aObject, const TDesC& aPassword, 
  797.62 -													TRequestStatus& aStatus);
  797.63 -	IMPORT_C void ConnectL(const TDesC& aPassword, TRequestStatus& aStatus);
  797.64 -	IMPORT_C void Disconnect(TRequestStatus& aStatus);						
  797.65 -	IMPORT_C void Put(CObexBaseObject& aObject, TRequestStatus& aStatus);
  797.66 -	IMPORT_C void Get(CObexBaseObject& aObject, TRequestStatus& aStatus);		
  797.67 -	IMPORT_C void SetPath(TSetPathInfo& aPathInfo, TRequestStatus& aStatus);
  797.68 -	IMPORT_C void Abort();					
  797.69 -	IMPORT_C void UserPasswordL( const TDesC& aPassword);
  797.70 -	IMPORT_C const CObexHeaderSet& GetPutFinalResponseHeaders();
  797.71 -	IMPORT_C void SetFinalPacketObserver(MObexFinalPacketObserver* aObserver);
  797.72 -	IMPORT_C TObexResponse LastServerResponseCode() const;
  797.73 -	IMPORT_C void SetCommandTimeOut(TTimeIntervalMicroSeconds32 aTimeOut);
  797.74 -	IMPORT_C TAny* ExtensionInterface(TUid aUid);
  797.75 -
  797.76 -public:	// Called from CObexNotifyExtendClient
  797.77 -	void SignalPacketProcessEvent(TObexPacketProcessEvent aEvent);
  797.78 -	void TimeOutCompletion();
  797.79 -	
  797.80 -private:
  797.81 -	CObexClient();
  797.82 -	void ConstructL(TObexTransportInfo& aObexTransportInfo);
  797.83 -	TBool AlreadyActive(TRequestStatus& aStatus);
  797.84 -	void ClientCommandL(TOperation aOp, TAny* aParam, TRequestStatus& aStatus);
  797.85 -	// Implementation of CObex Events
  797.86 -	virtual void OnPacketReceive(CObexPacket& aPacket);
  797.87 -	virtual void OnError(TInt aError);
  797.88 -	virtual void OnTransportUp();
  797.89 -	virtual void OnTransportDown();
  797.90 -	void SetRequest(TRequestStatus& aStatus, TOperation aOperation);
  797.91 -	void CompleteRequest(const TInt aCompletion);
  797.92 -	TInt PrepareConnectPacket(CObexPacket& aPacket);	// Should be members of TConnectInfo
  797.93 -	TInt ParseConnectPacket(CObexPacket& aPacket);	
  797.94 -	void ResetConnectionID();
  797.95 -	void SetConnectionID(TUint32 aConnectionID);
  797.96 -	void EmptyHeaderSet();
  797.97 -	void SendRequestPacket();
  797.98 -	void SendRequestPacket(TObexOpcode aObexOpcode);
  797.99 -
 797.100 -private: 
 797.101 -	TRequestStatus* iPendingRequest;
 797.102 -	CObexBaseObject* iCurrentObject;
 797.103 -	TUint32 iConnectionID; 
 797.104 -	TBool iConnectionIdSet;
 797.105 -	CObexHeaderSet* iHeaderSet;
 797.106 -	CObexHeader* iHeader;
 797.107 -	CObexPacketSignaller* iPacketProcessSignaller;
 797.108 -	TObexResponse iLastReceivedResponseOpcode;
 797.109 -	CObexErrorEngine* iErrorEngine;
 797.110 -	TBool iIsLastErrorSet;
 797.111 -	TTimeIntervalMicroSeconds32 iCmdTimeOutDuration;
 797.112 -	CObexPacketTimer* iPacketTimer;
 797.113 -	};
 797.114 -
 797.115 -#endif // __OBEXCLIENT_H
   798.1 --- a/epoc32/include/obexconstants.h	Tue Mar 16 16:12:26 2010 +0000
   798.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   798.3 @@ -1,689 +0,0 @@
   798.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   798.5 -// All rights reserved.
   798.6 -// This component and the accompanying materials are made available
   798.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   798.8 -// which accompanies this distribution, and is available
   798.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  798.10 -//
  798.11 -// Initial Contributors:
  798.12 -// Nokia Corporation - initial contribution.
  798.13 -//
  798.14 -// Contributors:
  798.15 -//
  798.16 -// Description:
  798.17 -//
  798.18 -
  798.19 -
  798.20 -
  798.21 -/**
  798.22 - @file
  798.23 - @publishedAll
  798.24 - @released
  798.25 -*/
  798.26 -
  798.27 -#ifndef __OBEXCONSTANTS_H
  798.28 -#define __OBEXCONSTANTS_H
  798.29 -
  798.30 -#include <e32std.h>
  798.31 -#include <es_sock.h>
  798.32 -#include <ir_sock.h>
  798.33 -#include <bt_sock.h>
  798.34 -#include <obexpanics.h>
  798.35 -
  798.36 -//common to request & resp digests
  798.37 -
  798.38 -/** @internalComponent */
  798.39 -const TInt KChallResponseSize = 58;
  798.40 -/** @internalComponent */
  798.41 -const TInt KMinChallResponseSize = 18; //Nonce(16) + tag(1) + size(1)
  798.42 -/** @internalComponent */
  798.43 -const TInt KObexNonceSize = 16;
  798.44 -/** @internalComponent */
  798.45 -const TUint8 KObexRequireUID = 0x01;
  798.46 -
  798.47 -//request or chall
  798.48 -/** @internalComponent */
  798.49 -const TUint KObexChallNonceTag = 0;
  798.50 -/** @internalComponent */
  798.51 -const TUint8 KObexChallOptionsTag = 0x01;
  798.52 -/** @internalComponent */
  798.53 -const TUint8 KObexChallRealmTag = 0x02;
  798.54 -/** @internalComponent */
  798.55 -const TInt KObexChallOptionSize = 1; //this can't be changed from one without making
  798.56 -/** @internalComponent */
  798.57 -const TUint KObexChallHeaderSize = 23; //assuming no Realm data
  798.58 -
  798.59 -//response
  798.60 -/** @internalComponent */
  798.61 -const TUint KObexRespTag = 0;
  798.62 -/** @internalComponent */
  798.63 -const TInt KObexRespSize = 16;
  798.64 -/** @internalComponent */
  798.65 -const TUint8 KObexRespUserIDTag = 0x01;
  798.66 -/** @internalComponent */
  798.67 -const TUint8 KObexRespNonceTag = 0x02;
  798.68 -
  798.69 -/** @internalComponent */
  798.70 -const TUint8 KObexHeaderTypeMask = 0xc0;
  798.71 -/** @internalComponent */
  798.72 -const TUint8 KObexHeaderTypeOffset = 6;
  798.73 -
  798.74 -#ifdef _UNICODE
  798.75 -/** @internalComponent */
  798.76 -const TInt KUidOBEXTransportModule = 0x10003d56;
  798.77 -#else
  798.78 -/** @internalComponent */
  798.79 -const TInt KUidOBEXTransportModule = 0x1000169c;
  798.80 -#endif
  798.81 -
  798.82 -/** @internalComponent */
  798.83 -const TInt KUsbIntStringDescLength = 30;
  798.84 -
  798.85 -/** @internalComponent */
  798.86 -const TUint8 KFourByteTimeHeaderAddress = 0xc4;
  798.87 -
  798.88 -// Header mask definitions.
  798.89 -// Old style accessor for which headers are present or
  798.90 -// should be sent by an object.  Now deprecated, use the
  798.91 -// header iterator instead.
  798.92 -/** @internalComponent */
  798.93 -const TUint16 KObexHdrName				= 0x0001;
  798.94 -/** @internalComponent */
  798.95 -const TUint16 KObexHdrType				= 0x0002;
  798.96 -/** @internalComponent */
  798.97 -const TUint16 KObexHdrLength			= 0x0004;
  798.98 -/** @internalComponent */
  798.99 -const TUint16 KObexHdrTime				= 0x0008;
 798.100 -/** @internalComponent */
 798.101 -const TUint16 KObexHdrDescription		= 0x0010;
 798.102 -/** @internalComponent */
 798.103 -const TUint16 KObexHdrTarget			= 0x0020;
 798.104 -/** @internalComponent */
 798.105 -const TUint16 KObexHdrConnectionID		= 0x0040;
 798.106 -/** @internalComponent */
 798.107 -const TUint16 KObexHdrBody				= 0x0080;
 798.108 -/** @internalComponent */
 798.109 -const TUint16 KObexHdrEndOfBody			= 0x0100;
 798.110 -/** @internalComponent */
 798.111 -const TUint16 KObexHdrHttp				= 0x0200;
 798.112 -/** @internalComponent */
 798.113 -const TUint16 KObexHdrAppParam			= 0x0400;
 798.114 -/** @internalComponent */
 798.115 -const TUint16 KObexHdrUserDefined		= 0x0800;
 798.116 -/** @internalComponent */
 798.117 -const TUint16 KObexHdrCount				= 0x1000;
 798.118 -/** @internalComponent */
 798.119 -const TUint16 KObexHdrCreatorID			= 0x2000;
 798.120 -/** @internalComponent */
 798.121 -const TUint16 KObexHdrWanUUID			= 0x4000;
 798.122 -/** @internalComponent */
 798.123 -const TUint16 KObexHdrObjectClass		= 0x8000;
 798.124 -
 798.125 -/** @internalComponent */
 798.126 -const TUint8  KObexUserDefinedHdrAddrMin	 = 0x30; //start of user defined header address range
 798.127 -/** @internalComponent */
 798.128 -const TUint8  KObexUserDefinedHdrAddrMax	 = 0x3F; //end of user defined header address range
 798.129 -
 798.130 -/** @internalComponent */
 798.131 -const TUint8 KObexVersion           	= 0x10;		///< Version 1.0 (still correct for Obex spec v 1.2)
 798.132 -
 798.133 -/** @internalComponent */
 798.134 -const TUint8 KObexObjectFieldSize   	= 127;
 798.135 -/** @internalComponent */
 798.136 -const TUint8 KObexObjectDescriptionSize = 255;
 798.137 -
 798.138 -// Extended errors for IrObex
 798.139 -
 798.140 -/** Must not use as not in the allocated range */
 798.141 -const TInt KErrIrObexRespBase			= - 5500; 
 798.142 -
 798.143 -/** Extended error for IrObex - No other infrared device found */
 798.144 -const TInt KErrIrObexClientNoDevicesFound = -5501;
 798.145 -
 798.146 -/** Extended error for IrObex - Other IR device cannot handle IrObex */
 798.147 -const TInt KErrIrObexClientPeerDoesNotHaveObex = -5502;
 798.148 -
 798.149 -/** Extended error for IrObex - Other IR device aborted the transfer */
 798.150 -const TInt KErrIrObexClientPutPeerAborted	= -5503;
 798.151 -
 798.152 -/** Extended error for IrObex - Peer device aborted data transmission/obex sending */
 798.153 -const TInt KErrIrObexServerPutPeerAborted = -5507;
 798.154 -
 798.155 -/** Extended error for IrObex - Cannot authorise the challenge so link dropped */
 798.156 -const TInt KErrIrObexConnectChallRejected = -5512;
 798.157 -
 798.158 -// Other Obex errors defined in the system but no longer used
 798.159 -// Do not reuse the number!
 798.160 -// KErrIrObexClientPutPeerCannotHandleObject -5504
 798.161 -// KErrIrObexServerPutFileWriteError		-5509
 798.162 -// KErrIrObexClientFirstPutFailed			-5510
 798.163 -// KErrIrObexClientSubsequentPutFailed		-5511
 798.164 -
 798.165 -/** Unexpected event for the given state */
 798.166 -const TInt KErrIrObexBadEvent = -5513;
 798.167 -
 798.168 -/** Event occurred while Server is stopped */
 798.169 -const TInt KErrIrObexServerStopped = -5514;
 798.170 -
 798.171 -/** Packet received while state machine is in a wait state */
 798.172 -const TInt KErrIrObexPacketDuringWait = -5515;
 798.173 -
 798.174 -// There are other error codes defined at the end of this file,
 798.175 -// which are a direct mapping of specific Obex error codes and
 798.176 -// are returned by the client.
 798.177 -
 798.178 -
 798.179 -// Flags used by Connect
 798.180 -// ...None in OBEX 1.0
 798.181 -
 798.182 -// Flags used by SetPath
 798.183 -/** @internalComponent */
 798.184 -const TUint8 KObexSetPathParent	= 0x01;
 798.185 -
 798.186 -/**
 798.187 -Version number for TObexTransportInfo and derived classes.  
 798.188 -When iVersion is set to this value the following fields of TObexTransportInfo  
 798.189 -must be set:
 798.190 -iTransportName, 
 798.191 -iReceiveMtu
 798.192 -iTransmitMtu
 798.193 -The iVersion member variable must be set to this value. If in future any of the 
 798.194 -iFuture variables are used a new version constant will be created.
 798.195 -
 798.196 -@see TObexTransportInfo
 798.197 -@publishedAll
 798.198 -@released
 798.199 -*/
 798.200 -const TInt KObexTransportInfoVersion0 = 0;	
 798.201 -
 798.202 -/**
 798.203 -Default for the receive and transmit MTU sizes
 798.204 -Use this default value for setting the iReceiveMtu or iTransmitMtu in TObexTransportInfo
 798.205 -objects or derived classes.
 798.206 -
 798.207 -@see TObexTransportInfo
 798.208 -@publishedAll
 798.209 -@released
 798.210 -*/
 798.211 -const TInt KObexDefaultMtuSize = 4000;
 798.212 -
 798.213 -/**
 798.214 -Default value for the number of discovery slots to use.  Use this value as a default 
 798.215 -for iDiscoverySlots in TObexIrdaV2TransportInfo.  
 798.216 -
 798.217 -@see TObexIrdaV2TransportInfo
 798.218 -@publishedAll
 798.219 -@released
 798.220 -*/
 798.221 -const TUint KObexIrdaDefaultDiscoverySlotsToUse = 1;
 798.222 -
 798.223 -/**
 798.224 -Default value for the number of discovery attempts made.  Use this value as a default for iDiscoveryAttempts
 798.225 -in TObexIrdaV2TransportInfo.  
 798.226 -@see TObexIrdaV2TransportInfo
 798.227 -@publishedAll
 798.228 -@released
 798.229 -*/
 798.230 -const TUint KObexIrdaDefaultDiscoveryAttempts = 4;
 798.231 -
 798.232 -// Constants used to define which transport Obex will run over.
 798.233 -// Used in TObexTransportInfo and TObexProtocolInfo's iTransport member.
 798.234 -
 798.235 -/**
 798.236 -Protocol string when running over IrDA
 798.237 -@see TObexIrProtocolInfo
 798.238 -@see TObexTransportInfo
 798.239 -@publishedAll
 798.240 -@released
 798.241 -*/
 798.242 -_LIT(KObexIrTTPProtocol, "IrTinyTP");
 798.243 -
 798.244 -/**
 798.245 -Protocol string when running over IrDA
 798.246 -Using this version indicates that the configuration object contains discovery parameters.
 798.247 -@see TObexIrProtocolInfo
 798.248 -@publishedAll
 798.249 -@released
 798.250 -*/
 798.251 -_LIT(KObexIrTTPProtocolV2, "IrTinyTP-V2");
 798.252 -
 798.253 -/**
 798.254 -Protocol string when running over IrDA
 798.255 -Using this version indicates that the configuration object contains the device nickname.
 798.256 -@see TObexIrProtocolInfo
 798.257 -@publishedAll
 798.258 -
 798.259 -@capability WriteDeviceData If the TObexIrV3TransportInfo is passed as the argument
 798.260 -                            to CObexServer::NewL or CObexClient::NewL and the associated 
 798.261 -                            name is valid.
 798.262 -@released
 798.263 -*/
 798.264 -_LIT(KObexIrTTPProtocolV3, "IrTinyTP-V3");
 798.265 -
 798.266 -/**
 798.267 -Protocol string when running over Bluetooth
 798.268 -@see TObexBluetoothProtocolInfo
 798.269 -@see TObexTransportInfo
 798.270 -@publishedAll
 798.271 -@released
 798.272 -*/
 798.273 -_LIT(KObexRfcommProtocol, "RFCOMM");
 798.274 -
 798.275 -/**
 798.276 -Protocol string when running over USB
 798.277 -@see TObexUsbProtocolInfo
 798.278 -@see TObexTransportInfo
 798.279 -@publishedAll
 798.280 -@released
 798.281 -*/
 798.282 -_LIT(KObexUsbProtocol, "USB");
 798.283 -
 798.284 -/**
 798.285 -Place holder for...
 798.286 -protocol string that should be used 
 798.287 -if a Win32 emulator USB transport were 
 798.288 -to be created for testing.
 798.289 -@see TObexUsbProtocolInfo
 798.290 -@see TObexTransportInfo
 798.291 -@publishedAll
 798.292 -@released
 798.293 -*/
 798.294 -_LIT(KObexWin32UsbProtocol, "Win32Usb");
 798.295 -
 798.296 -/**
 798.297 -Protocol string when running over USB using client driver extensions
 798.298 -@see TObexUsbProtocolInfoV2
 798.299 -@see TObexTransportInfo
 798.300 -@publishedAll
 798.301 -@released
 798.302 -*/
 798.303 -_LIT(KObexUsbProtocolV2, "USB-V2");
 798.304 -
 798.305 -/** 
 798.306 -This class is derived for each underlying transport protocol OBEX 
 798.307 -runs over.
 798.308 -
 798.309 -The iTransport member holds the unique name for the transport. For example for
 798.310 -infra-red (TinyTP) this is "IrTinyTP" or KObexIrTTPProtocol.
 798.311 -
 798.312 -@see TObexIrProtocolInfo for running over TinyTP
 798.313 -@see TObexBluetoothProtocolInfo for running over Rfcomm
 798.314 -@see TObexUsbProtocolInfo for running over USB
 798.315 -@see TObexUsbProtocolInfoV2 for running over USB using client driver extensions
 798.316 -
 798.317 -@see KObexIrTTPProtocol
 798.318 -@see KObexIrTTPProtocolV2
 798.319 -@see KObexRfcommProtocol
 798.320 -@see KObexUsbProtocol
 798.321 -@see KObexUsbProtocolV2
 798.322 -
 798.323 -@publishedAll
 798.324 -@released
 798.325 -*/
 798.326 -NONSHARABLE_CLASS(TObexProtocolInfo)
 798.327 -	{
 798.328 -public:
 798.329 -	/** Holds the unique name for the transport. */
 798.330 -	TBuf<60> iTransport;
 798.331 -private:
 798.332 -	// This data padding has been added to help prevent future binary compatibility breaks	
 798.333 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 798.334 -	TUint32     iPadding1; 
 798.335 -	TUint32     iPadding2; 		
 798.336 -	};
 798.337 -
 798.338 -/** 
 798.339 -Used to describe IrDA specific protocol information
 798.340 -	
 798.341 -To access the default OBEX server, the IAS class value should be "OBEX"
 798.342 -and the IAS attribute name "IrDA:TinyTP:LsapSel". 
 798.343 -
 798.344 -@publishedAll
 798.345 -@released
 798.346 -*/
 798.347 -NONSHARABLE_CLASS(TObexIrProtocolInfo) : public TObexProtocolInfo
 798.348 -	{
 798.349 -public:
 798.350 -	/** IrDA address information for this connection, as used in the IrDA sockets interface.
 798.351 -	Refer to the SDK for more information about this.
 798.352 -	Its main use is for setting the port that the local machine will listen on. */
 798.353 -	TIrdaSockAddr iAddr;
 798.354 -	/** The IAS class value that the OBEX session will register its listener port,
 798.355 -	or request remote port with. */
 798.356 -	TBuf8<KIASClassNameMax> iClassName;
 798.357 -	/** The IAS attribute value that the OBEX session will register its listener port,
 798.358 -	or request remote port with. */
 798.359 -	TBuf8<KIASAttributeNameMax> iAttributeName;
 798.360 -	/** The number of discovery slots to use. */
 798.361 -	TUint8 iDiscoverySlots;
 798.362 -	/** The number of discovery attempts to make. */
 798.363 -	TUint8 iDiscoveryAttempts;
 798.364 -
 798.365 -private:
 798.366 -	// This data padding has been added to help prevent future binary compatibility breaks	
 798.367 -	// None of these padding variables have been zero'd because they are currently not used
 798.368 -	TUint16     iPadding1; 
 798.369 -	TUint32     iPadding2; 		
 798.370 -	TUint32     iPadding3; 
 798.371 -	TUint32     iPadding4; 	
 798.372 -	};
 798.373 -
 798.374 -/** 
 798.375 -Used to describe Bluetooth specific protocol information
 798.376 -	
 798.377 -@publishedAll
 798.378 -@released
 798.379 -*/
 798.380 -NONSHARABLE_CLASS(TObexBluetoothProtocolInfo) : public TObexProtocolInfo
 798.381 -	{
 798.382 -public:
 798.383 -	/** 
 798.384 -	For OBEX servers:
 798.385 -	This defines the server channel on which the OBEX server listens 
 798.386 -	for connections. The server channel is set using SetPort on the 
 798.387 -	TRfcommSockAddr.
 798.388 -	Note:
 798.389 -	1) Unless the channel is defined as KRfcommPassiveAutoBind 
 798.390 -	it may be in use when the obex server attempts to 'bind' to it
 798.391 -	2) If the channel is defined as KRfcommPassiveAutoBind 
 798.392 -	then when the server is FIRST started it will attempt 
 798.393 -	to find a free RFComm channel. If this is successful 
 798.394 -	that free channel will be used as the server channel 
 798.395 -	for the life time of the obex server including
 798.396 -	when it is 'stopped' and re-'started'.
 798.397 -	3) When the obex server is stopped, and very
 798.398 -	briefly when a bluetooth connection comes down, the
 798.399 -	obex server releases its server channel. It is possible
 798.400 -	therefore that during this time another application might bind
 798.401 -	to it. This will cause an error when the obex server tries
 798.402 -	to re-bind.
 798.403 -
 798.404 -	Also note that a Bluetooth OBEX server will itself set the Object Transfer
 798.405 -	bit in the Service Class as required by the Generic Object Exchange
 798.406 -	Profile so the user need not do this.	
 798.407 -	@see CObexServer
 798.408 -	
 798.409 -	For OBEX clients:
 798.410 -	This defines the server channel and the 
 798.411 -	device address to connect to. The server channel 
 798.412 -	and device address are set respectively using SetPort 
 798.413 -	and SetBTAddr on the TRfcommSockAddr.
 798.414 -	*/
 798.415 -	TRfcommSockAddr iAddr;
 798.416 -	
 798.417 -private:
 798.418 -	// This data padding has been added to help prevent future binary compatibility breaks	
 798.419 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 798.420 -	TUint32     iPadding1; 
 798.421 -	TUint32     iPadding2; 	
 798.422 -	};
 798.423 -
 798.424 -/** 
 798.425 -Used to describe USB specific protocol information
 798.426 -	
 798.427 -@publishedAll
 798.428 -@released
 798.429 -*/
 798.430 -NONSHARABLE_CLASS(TObexUsbProtocolInfo) : public TObexProtocolInfo
 798.431 -	{
 798.432 -public:
 798.433 -	/** Provides a string to be attached to the Obex function's Communication Class interface,
 798.434 -	which may be used to identify the Obex service. */
 798.435 -	TBuf16<KUsbIntStringDescLength> iInterfaceStringDescriptor;
 798.436 -	};
 798.437 -
 798.438 -/** 
 798.439 -Used to set options used by the extended USB client driver for improved performance
 798.440 -	
 798.441 -@see TObexUsbProtocolInfo
 798.442 -@see RDevUsbcClient
 798.443 -@publishedAll
 798.444 -@released
 798.445 -*/
 798.446 -NONSHARABLE_CLASS(TObexUsbProtocolInfoV2) : public TObexUsbProtocolInfo
 798.447 -	{
 798.448 -public:
 798.449 -	/** Bitmap containing the bandwidth priorities to use on IN and OUT endpoints
 798.450 -	@see TUsbcBandwidthPriority
 798.451 -	*/
 798.452 -	TInt iBandwidthPriority;
 798.453 -	/** Specifies whether to use DMA on the bulk OUT endpoint */
 798.454 -	TBool iDmaOnOutEndpoint;
 798.455 -	/** Specifies whether to use DMA on the bulk IN endpoint */
 798.456 -	TBool iDmaOnInEndpoint;
 798.457 -	
 798.458 -private:
 798.459 -	// This data padding has been added to help prevent future binary compatibility breaks	
 798.460 -	// None of these padding variables have been zero'd because they are currently not used
 798.461 -	TUint32     iPadding1; 
 798.462 -	TUint32     iPadding2; 		
 798.463 -	TUint32     iPadding3; 
 798.464 -	TUint32     iPadding4; 	
 798.465 -	};
 798.466 -
 798.467 -/**
 798.468 -Contains information about OBEX packet sizing policy, defining the
 798.469 -maximum buffer size for receive and transmit packets
 798.470 -*/
 798.471 -NONSHARABLE_CLASS(TObexProtocolPolicy)
 798.472 -	{
 798.473 -public:
 798.474 -	IMPORT_C TObexProtocolPolicy ();	// Sets version and default values
 798.475 -
 798.476 -	IMPORT_C TInt SetReceiveMtu ( TUint16 aReceiveMtu );
 798.477 -	IMPORT_C TInt SetTransmitMtu ( TUint16 aTransmitMtu );
 798.478 -	IMPORT_C TUint16 Version () const;
 798.479 -	IMPORT_C TUint16 ReceiveMtu () const;
 798.480 -	IMPORT_C TUint16 TransmitMtu () const;
 798.481 -
 798.482 -private:
 798.483 -	TUint16 iVersion;
 798.484 -	TUint16 iReceiveMtu;
 798.485 -	TUint16 iTransmitMtu;
 798.486 -
 798.487 -	// This data padding has been added to help prevent future binary compatibility breaks	
 798.488 -	// None of these padding variables have been zero'd because they are currently not used
 798.489 -	TUint32     iPadding1; 
 798.490 -	TUint32     iPadding2; 		
 798.491 -	TUint32     iPadding3; 
 798.492 -	TUint32     iPadding4; 	
 798.493 -	};
 798.494 -
 798.495 -struct TObexConnectionInfo;
 798.496 -
 798.497 -/**
 798.498 -TObexConnectInfo
 798.499 -This structure contains information used during OBEX connection. iVersion
 798.500 -holds the encoded OBEX version of the machine, use @c VersionMajor() and
 798.501 -@c VersionMinor() to extract the parts of the version number (each having a
 798.502 -value from 0 to 15). @c iFlags holds OBEX connection flags. @c iWho holds 
 798.503 -the Who attribute from the connect packet, if any was specified, or 
 798.504 -otherwise has a length of 0. 
 798.505 -It is recommended that this class is only ever allocated on the heap as it is quite big.
 798.506 -*/
 798.507 -NONSHARABLE_CLASS(TObexConnectInfo)
 798.508 -	{
 798.509 -public:
 798.510 -	IMPORT_C TObexConnectInfo();
 798.511 -	IMPORT_C TUint8 VersionMajor() const;
 798.512 -	IMPORT_C TUint8 VersionMinor() const;
 798.513 -public:
 798.514 -	TUint8 iVersion; /** Encoded OBEX version of the machine*/
 798.515 -	TUint8 iFlags; /** iFlags holds OBEX connection flags*/
 798.516 -	TBuf8<KObexObjectDescriptionSize> iWho; /** the Who attribute from the connect packet, if any was specified */
 798.517 -	TBuf8<KObexObjectDescriptionSize> iTargetHeader; /** the Target header from the connect packet, if any was specified */
 798.518 -	
 798.519 -private:
 798.520 -	// This data padding has been added to help prevent future binary compatibility breaks	
 798.521 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 798.522 -	TUint32     iPadding1; 
 798.523 -	TUint32     iPadding2; 	
 798.524 -	};
 798.525 -
 798.526 -
 798.527 -
 798.528 -//if these codes are extended due to a IRObex spec update ensure 
 798.529 -//that the TInt immediately below are updated 
 798.530 -//and the default in the method IrOBEXUtil::ObexResponse is also updated
 798.531 -enum TObexResponse  
 798.532 -	{ 
 798.533 -/** Response is "Continue" */	
 798.534 -	ERespContinue			= 0x10,
 798.535 -	
 798.536 -/** Response is "Success" */		
 798.537 -	ERespSuccess			= 0x20,
 798.538 -	
 798.539 -/** Response is "Created" */		
 798.540 -	ERespCreated			= 0x21,
 798.541 -	
 798.542 -/** Response is "Accepted" */		
 798.543 -	ERespAccepted			= 0x22,
 798.544 -	
 798.545 -/** Response is "Non-Authenticated Information" */		
 798.546 -	ERespNonAuthInfo		= 0x23,
 798.547 -	
 798.548 -/** Response is "No Content" */			
 798.549 -	ERespNoContent			= 0x24,
 798.550 -	
 798.551 -/** Response is "Reset Content" */				
 798.552 -	ERespResetContent		= 0x25,
 798.553 -	
 798.554 -/** Response is "Partial Content" */					
 798.555 -	ERespPartialContent		= 0x26,
 798.556 -	
 798.557 -/** Response is "Multiple Choices" */						
 798.558 -	ERespMultipleChoices	= 0x30,
 798.559 -	
 798.560 -/** Response is "Moved Permanently" */						
 798.561 -	ERespMovedPerm			= 0x31,
 798.562 -	
 798.563 -/** Response is "Moved Temporarily" */							
 798.564 -	ERespMovedTemp			= 0x32,
 798.565 -
 798.566 -/** Response is "See Other" */								
 798.567 -	ERespSeeOther			= 0x33,
 798.568 -
 798.569 -/** Response is "Not Modified" */									
 798.570 -	ERespNotModified		= 0x34,
 798.571 -
 798.572 -/** Response is "Use Proxy" */									
 798.573 -	ERespUseProxy			= 0x35,
 798.574 -
 798.575 -/** Response is "Bad Request" */									
 798.576 -	ERespBadRequest			= 0x40,
 798.577 -
 798.578 -/** Response is "Unauthorized" */									
 798.579 -	ERespUnauthorized		= 0x41,
 798.580 -
 798.581 -/** Response is "Payment Required" */									
 798.582 -	ERespPaymentRequired	= 0x42,
 798.583 -
 798.584 -/** Response is "Forbidden" */									
 798.585 -	ERespForbidden			= 0x43,
 798.586 -
 798.587 -/** Response is "Not Found" */										
 798.588 -	ERespNotFound			= 0x44,
 798.589 -
 798.590 -/** Response is "Method Not Allowed" */										
 798.591 -	ERespMethodNotAllowed	= 0x45,
 798.592 -
 798.593 -/** Response is "Not Acceptable" */									
 798.594 -	ERespNotAcceptable		= 0x46,
 798.595 -
 798.596 -/** Response is "Proxy Authentication is Required" */										
 798.597 -	ERespProxyAuthenReqd	= 0x47,
 798.598 -
 798.599 -/** Response is "Timed Out" */										
 798.600 -	ERespTimedOut			= 0x48,
 798.601 -
 798.602 -/** Response is "Conflict" */										
 798.603 -	ERespConflict			= 0x49,
 798.604 -
 798.605 -/** Response is "Gone" */										
 798.606 -	ERespGone				= 0x4A,
 798.607 -
 798.608 -/** Response is "Length Required" */										
 798.609 -	ERespLengthReqd			= 0x4B,
 798.610 -
 798.611 -/** Response is "Precondition Failed" */											
 798.612 -	ERespPreCondFailed		= 0x4C,
 798.613 -
 798.614 -/** Response is "Required Entity is Too Large" */											
 798.615 -	ERespReqEntityTooLarge	= 0x4D,
 798.616 -
 798.617 -/** Response is "Required URL is Too Large" */											
 798.618 -	ERespReqURLTooLarge		= 0x4E,
 798.619 -
 798.620 -/** Response is "Unsupported Media Type" */											
 798.621 -	ERespUnsupMediaType		= 0x4F,
 798.622 -
 798.623 -/** Response is "Internal Error" */											
 798.624 -	ERespInternalError		= 0x50,
 798.625 -
 798.626 -/** Response is "Not Implemented" */											
 798.627 -	ERespNotImplemented		= 0x51,
 798.628 -
 798.629 -/** Response is "Bad Gateway" */											
 798.630 -	ERespBadGateway			= 0x52,
 798.631 -
 798.632 -/** Response is "Service Unavailable" */											
 798.633 -	ERespServiceUnavail		= 0x53,
 798.634 -
 798.635 -/** Response is "Gateway Timeout" */											
 798.636 -	ERespGatewayTimeout		= 0x54,
 798.637 -
 798.638 -/** Response is "HTTP Version is Not Supported" */											
 798.639 -	ERespHTTPVerNotSupp		= 0x55,
 798.640 -
 798.641 -/** Response is "Database is Full" */											
 798.642 -	ERespDatabaseFull		= 0x60,
 798.643 -
 798.644 -/** Response is "Database is Locked" */											
 798.645 -	ERespDatabaseLocked		= 0x61,
 798.646 -
 798.647 -/** Response is "Service is Unavailable" */											
 798.648 -	ERespServiceUnavailable = 0xD3,
 798.649 -	};
 798.650 -
 798.651 -
 798.652 -//some error codes to be used specifically by the client
 798.653 -//these shall, be mapped directly to OBEX defined error codes.
 798.654 -const TInt KErrIrObexRespSuccess		= KErrIrObexRespBase - ERespSuccess;			//-5532 returns 0x20 (0xA0)
 798.655 -const TInt KErrIrObexRespCreated		= KErrIrObexRespBase - ERespCreated;			//-5533 returns 0x21 (0xA1)
 798.656 -const TInt KErrIrObexRespAccepted		= KErrIrObexRespBase - ERespAccepted;			//-5534 returns 0x22 (0xA2)
 798.657 -const TInt KErrIrObexRespNonAuthInfo	= KErrIrObexRespBase - ERespNonAuthInfo;		//-5535 returns 0x23 (0xA3)
 798.658 -const TInt KErrIrObexRespNoContent		= KErrIrObexRespBase - ERespNoContent;			//-5536 returns 0x24 (0xA4)
 798.659 -const TInt KErrIrObexRespResetContent	= KErrIrObexRespBase - ERespResetContent;		//-5537 returns 0x25 (0xA5)
 798.660 -const TInt KErrIrObexRespPartialContent = KErrIrObexRespBase - ERespPartialContent;		//-5538 returns 0x26 (0xA6)
 798.661 -const TInt KErrIrObexRespMultipleChoices = KErrIrObexRespBase - ERespMultipleChoices;	//-5548 returns 0x30 (0xB0)
 798.662 -const TInt KErrIrObexRespMovedPerm		= KErrIrObexRespBase - ERespMovedPerm;			//-5549 returns 0x31 (0xB1)
 798.663 -const TInt KErrIrObexRespMovedTemp		= KErrIrObexRespBase - ERespMovedTemp;			//-5550 returns 0x32 (0xB2)
 798.664 -const TInt KErrIrObexRespSeeOther		= KErrIrObexRespBase - ERespSeeOther;			//-5551 returns 0x33 (0xB3)
 798.665 -const TInt KErrIrObexRespNotModified	= KErrIrObexRespBase - ERespNotModified;		//-5552 returns 0x34 (0xB4)
 798.666 -const TInt KErrIrObexRespUseProxy		= KErrIrObexRespBase - ERespUseProxy;			//-5553 returns 0x35 (0xB5)
 798.667 -const TInt KErrIrObexRespBadRequest		= KErrIrObexRespBase - ERespBadRequest;			//-5564 returns 0x40 (0xC0)
 798.668 -const TInt KErrIrObexRespUnauthorized	= KErrIrObexRespBase - ERespUnauthorized;		//-5565 returns 0x41 (0xC1)
 798.669 -const TInt KErrIrObexRespPaymentRequired = KErrIrObexRespBase - ERespPaymentRequired;	//-5566 returns 0x42 (0xC2)
 798.670 -const TInt KErrIrObexRespForbidden		= KErrIrObexRespBase - ERespForbidden;			//-5567 returns 0x43 (0xC3)
 798.671 -const TInt KErrIrObexRespNotFound		= KErrIrObexRespBase - ERespNotFound;			//-5568 returns 0x44 (0xC4)
 798.672 -const TInt KErrIrObexRespMethodNotAllowed = KErrIrObexRespBase - ERespMethodNotAllowed;	//-5569 returns 0x45 (0xC5)
 798.673 -const TInt KErrIrObexRespNotAcceptable	= KErrIrObexRespBase - ERespNotAcceptable;		//-5570 returns 0x46 (0xC6)
 798.674 -const TInt KErrIrObexRespProxyAuthenReqd = KErrIrObexRespBase - ERespProxyAuthenReqd;	//-5571 returns 0x47 (0xC7)
 798.675 -const TInt KErrIrObexRespTimedOut		= KErrIrObexRespBase - ERespTimedOut;			//-5572 returns 0x48 (0xC8)
 798.676 -const TInt KErrIrObexRespConflict		= KErrIrObexRespBase - ERespConflict;			//-5573 returns 0x49 (0xC9)
 798.677 -const TInt KErrIrObexRespGone			= KErrIrObexRespBase - ERespGone;				//-5574 returns 0x4A (0xCA)
 798.678 -const TInt KErrIrObexRespLengthReqd		= KErrIrObexRespBase - ERespLengthReqd;			//-5575 returns 0x4B (0xCB)
 798.679 -const TInt KErrIrObexRespPreCondFailed	= KErrIrObexRespBase - ERespPreCondFailed;		//-5576 returns 0x4C (0xCC)
 798.680 -const TInt KErrIrObexRespReqEntityTooLarge = KErrIrObexRespBase - ERespReqEntityTooLarge;//-5577 returns 0x4D (0xCD)
 798.681 -const TInt KErrIrObexRespReqURLTooLarge	= KErrIrObexRespBase - ERespReqURLTooLarge;		//-5578 returns 0x4E (0xCE)
 798.682 -const TInt KErrIrObexRespUnsupMediaType = KErrIrObexRespBase - ERespUnsupMediaType;		//-5579 returns 0x4F (0xCF)
 798.683 -const TInt KErrIrObexRespInternalError	= KErrIrObexRespBase - ERespInternalError;		//-5580 returns 0x50 (0xD0)
 798.684 -const TInt KErrIrObexRespNotImplemented = KErrIrObexRespBase - ERespNotImplemented;		//-5581 returns 0x51 (0xD1)
 798.685 -const TInt KErrIrObexRespBadGateway		= KErrIrObexRespBase - ERespBadGateway;			//-5582 returns 0x52 (0xD2)
 798.686 -const TInt KErrIrObexRespServiceUnavail = KErrIrObexRespBase - ERespServiceUnavail;		//-5583 returns 0x53 (0xD3)
 798.687 -const TInt KErrIrObexRespGatewayTimeout = KErrIrObexRespBase - ERespGatewayTimeout;		//-5584 returns 0x54 (0xD4)
 798.688 -const TInt KErrIrObexRespHTTPVerNotSupp = KErrIrObexRespBase - ERespHTTPVerNotSupp;		//-5585 returns 0x55 (0xD5)
 798.689 -const TInt KErrIrObexRespDatabaseFull	= KErrIrObexRespBase - ERespDatabaseFull;		//-5596 returns 0x60 (0xE0)
 798.690 -const TInt KErrIrObexRespDatabaseLocked = KErrIrObexRespBase - ERespDatabaseLocked;		//-5597 returns 0x61 (0xE1)
 798.691 -
 798.692 -#endif // __OBEXCONSTANTS_H
   799.1 --- a/epoc32/include/obexfinalpacketobserver.h	Tue Mar 16 16:12:26 2010 +0000
   799.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   799.3 @@ -1,45 +0,0 @@
   799.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   799.5 -// All rights reserved.
   799.6 -// This component and the accompanying materials are made available
   799.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   799.8 -// which accompanies this distribution, and is available
   799.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  799.10 -//
  799.11 -// Initial Contributors:
  799.12 -// Nokia Corporation - initial contribution.
  799.13 -//
  799.14 -// Contributors:
  799.15 -//
  799.16 -// Description:
  799.17 -//
  799.18 -
  799.19 -#ifndef OBEXFINALPACKETOBSERVER_H
  799.20 -#define OBEXFINALPACKETOBSERVER_H
  799.21 -
  799.22 -#include <e32std.h>
  799.23 -
  799.24 -/**
  799.25 -This mixin class must be inherited by any class interested in final packet notifications. 
  799.26 -
  799.27 -@publishedAll
  799.28 -@released
  799.29 -*/
  799.30 -
  799.31 -class MObexFinalPacketObserver
  799.32 -	{
  799.33 -public:
  799.34 -
  799.35 -	/** Indicates start of final packet.
  799.36 -	@publishedAll
  799.37 -	@released
  799.38 -	*/
  799.39 -	virtual void MofpoFinalPacketStarted() {};
  799.40 -
  799.41 -	/** Indicates end of final packet.
  799.42 -	@publishedAll
  799.43 -	@released
  799.44 -	*/
  799.45 -	virtual void MofpoFinalPacketFinished() {};
  799.46 -	};
  799.47 -
  799.48 -#endif // OBEXFINALPACKETOBSERVER_H
   800.1 --- a/epoc32/include/obexheaderlist.h	Tue Mar 16 16:12:26 2010 +0000
   800.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   800.3 @@ -1,155 +0,0 @@
   800.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
   800.5 -// All rights reserved.
   800.6 -// This component and the accompanying materials are made available
   800.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   800.8 -// which accompanies this distribution, and is available
   800.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  800.10 -//
  800.11 -// Initial Contributors:
  800.12 -// Nokia Corporation - initial contribution.
  800.13 -//
  800.14 -// Contributors:
  800.15 -//
  800.16 -// Description:
  800.17 -//
  800.18 -
  800.19 -#ifndef __OBEXHEADERLIST_H__
  800.20 -#define __OBEXHEADERLIST_H__
  800.21 -
  800.22 -
  800.23 -
  800.24 -#include <e32std.h> 
  800.25 -#include <e32base.h>    //CBase 
  800.26 -
  800.27 -//forward declaration
  800.28 -class RReadStream;
  800.29 -class RWriteStream;
  800.30 -class CObexHeader;
  800.31 -class CObexBaseObject;
  800.32 -class CObexServerSendOperation;
  800.33 -
  800.34 -
  800.35 -class CMsvAttachment;
  800.36 -
  800.37 -const TUid KUidObexHeaders = {0x10204282};
  800.38 -
  800.39 -class CObexHeaderList : public CBase
  800.40 -/**
  800.41 -Encapsulates and owns a list of CObexHeader objects.
  800.42 -Public users of this class can add CObexHeader objects 
  800.43 -                        
  800.44 -@publishedAll
  800.45 -@released
  800.46 -*/
  800.47 -	{
  800.48 -public:
  800.49 -
  800.50 -	/*
  800.51 -    It provides functionalities for its friend classes to internalize and 
  800.52 -    externalize itself from a CMsvStore stream, and add all its contained 
  800.53 -    CObexHeader objects to a CObexBaseObject, as well as two general list
  800.54 -    functions to return the number of objects it contained and a contained
  800.55 -    object at a specified index into the list.
  800.56 -    */  
  800.57 -	friend class CObexServerSendOperation;		// requires the use of 'AddHeadersToBaseObjectL'
  800.58 -
  800.59 -	/**
  800.60 -	 * Factory function to return a new CObexHeaderList.
  800.61 -	 @return New CObexHeaderList object 
  800.62 -	 */
  800.63 -	IMPORT_C static CObexHeaderList* NewL();
  800.64 -	
  800.65 -	
  800.66 -	/**
  800.67 -	 * Factory function to return a new CObexHeaderList and leave it on the 
  800.68 -	 * cleanup stack.
  800.69 -	 @return New CObexHeaderList object 
  800.70 -	 */
  800.71 -	IMPORT_C static CObexHeaderList* NewLC();
  800.72 -
  800.73 -
  800.74 -	/**
  800.75 -	 * Destructor which frees all allocated memory with the list.
  800.76 -	 */
  800.77 -    IMPORT_C ~CObexHeaderList();
  800.78 -    
  800.79 -    /**
  800.80 -	 * Add a CObexHeader object to the list. The CObexHeader object added 
  800.81 -	 * should have its attribute, header ID and header value set before
  800.82 -	 * it is added to the list. CObexHeaderlist will not change these
  800.83 -	 * values of its contained CObexHeader objects
  800.84 -	 * @param  aHeader Pointer to a constant CObexHeader object
  800.85 -	 *  
  800.86 -	 * @return KErrNone, if the operation is successful, otherwise
  800.87 -	 *         one of the system wide error codes  
  800.88 -	 */
  800.89 -	IMPORT_C TInt AddHeader(const CObexHeader*  aHeader);
  800.90 -	
  800.91 -	IMPORT_C void ExportToAttachmentL(CMsvAttachment& aAttachment) const;
  800.92 -	
  800.93 -	IMPORT_C void ImportFromAttachmentL(CMsvAttachment& aAttachment);
  800.94 -
  800.95 -	IMPORT_C void ExternalizeL(RWriteStream& aWriteStream) const;
  800.96 -	
  800.97 -	IMPORT_C void InternalizeL(RReadStream& aReadStream);
  800.98 -
  800.99 -protected:
 800.100 -
 800.101 -
 800.102 -
 800.103 -    /**
 800.104 -	 * Add all the CObexHeader objects contained in a list to a 
 800.105 -	 * CObexBaseObject.
 800.106 -	 *
 800.107 -	 *
 800.108 -	 * @param aObexBaseObj CObexBaseObject to add the objects to
 800.109 -	 *  
 800.110 -	 * @leave Error System wide error code 
 800.111 -	 * 
 800.112 -	 */
 800.113 -    IMPORT_C void AddHeadersToBaseObjectL(CObexBaseObject& aObexBaseObj);
 800.114 -
 800.115 -	
 800.116 -	//General list processing functions
 800.117 -
 800.118 -    /**
 800.119 -	 * Return the number of CObexHeader object pointers contained in the list.
 800.120 -	 *
 800.121 -	 * 
 800.122 -	 * @return The number of CObexHeader object pointers in the list
 800.123 -	 */
 800.124 -	IMPORT_C TInt Count() const;
 800.125 -
 800.126 -	/**
 800.127 -	 * Get a non constant reference to the CObexHeader object pointer at 
 800.128 -	 * position aPos into the list.
 800.129 -	 *
 800.130 -	 *
 800.131 -	 * @param aPos A list index specifying the CObexHeader object pointer to 
 800.132 -	 *        be returned
 800.133 -	 *  
 800.134 -	 * @leave KErrArgument aPos is out of range
 800.135 -	 * @leave KErrNotFound The list is empty
 800.136 -	 *        
 800.137 -	 * @return A non constant reference to the CObexHeader object 
 800.138 -	 *         pointer
 800.139 -	 */
 800.140 -	IMPORT_C CObexHeader*& ObexHeaderL(TInt aPos); 
 800.141 -
 800.142 -private:
 800.143 -	/**
 800.144 -	 * Leaving constructor function used in 2 phase construction in NewLC()
 800.145 -	 */
 800.146 -	void ConstructL();
 800.147 -
 800.148 -    /**
 800.149 -	 *  Constructor function used in 2 phase construction in NewLC()
 800.150 -	 */
 800.151 -	CObexHeaderList();
 800.152 -
 800.153 -private:
 800.154 -    ///<pointer to the CObexHeader object pointer array
 800.155 -	RPointerArray<CObexHeader>*	iObexHeaders;
 800.156 -	};
 800.157 -	
 800.158 -#endif	// __OBEXHEADERLIST_H__
   801.1 --- a/epoc32/include/obexheaders.h	Tue Mar 16 16:12:26 2010 +0000
   801.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   801.3 @@ -1,241 +0,0 @@
   801.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   801.5 -// All rights reserved.
   801.6 -// This component and the accompanying materials are made available
   801.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   801.8 -// which accompanies this distribution, and is available
   801.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  801.10 -//
  801.11 -// Initial Contributors:
  801.12 -// Nokia Corporation - initial contribution.
  801.13 -//
  801.14 -// Contributors:
  801.15 -//
  801.16 -// Description:
  801.17 -//
  801.18 -
  801.19 -
  801.20 -
  801.21 -/**
  801.22 - @file
  801.23 - @publishedAll
  801.24 - @released
  801.25 -*/
  801.26 -
  801.27 -#ifndef __OBEXHEADERS_H
  801.28 -#define __OBEXHEADERS_H
  801.29 -
  801.30 -#include <obextypes.h>
  801.31 -
  801.32 -/**
  801.33 -Encapsulates an Obex header.
  801.34 -
  801.35 -This class provides the ability to hold a header of any of the Obex
  801.36 -supported types as a native Symbian OS type.
  801.37 -
  801.38 -A header may also have one or more attributes set.  These are used by
  801.39 -the object which owns the header collection so that it can keep track
  801.40 -of which headers should be sent (!(ESuppressed || EDeleted)), which have
  801.41 -been sent (ESent), and whether the header should be deleted (EDeleted).
  801.42 -Deletion is a special case---any operation on the Object which causes
  801.43 -a scan of the headers will trigger deletion of any marked headers.
  801.44 -This is required as they are owned by the Object, but can be accessed
  801.45 -seperately (including through the creator keeping a pointer to the
  801.46 -header).
  801.47 -
  801.48 -@see CObexBaseObject
  801.49 -@publishedAll
  801.50 -@released
  801.51 -*/
  801.52 -NONSHARABLE_CLASS(CObexHeader) : public CBase
  801.53 -	{
  801.54 -public:
  801.55 -	// Requires friendship with CObexBaseObject to support some aspects of the
  801.56 -	// legacy API (specifically the HTTP accessor method).
  801.57 -	friend class CObexBaseObject;
  801.58 -
  801.59 -	enum THeaderType
  801.60 -		{
  801.61 -		EUnicode  = 0x00,
  801.62 -		EByteSeq  = 0x01,
  801.63 -		EByte     = 0x02,
  801.64 -		EFourByte = 0x03
  801.65 -		};
  801.66 -	
  801.67 -	enum THeaderAttr
  801.68 -		{
  801.69 -		ESuppressed = 0x01,
  801.70 -		ESent       = 0x02,
  801.71 -		EDeleted    = 0x04,
  801.72 -		};
  801.73 -		
  801.74 -	IMPORT_C static CObexHeader* NewL();
  801.75 -	virtual ~CObexHeader();
  801.76 -	IMPORT_C CObexHeader* CopyL() const;
  801.77 -	
  801.78 -	//Sets this object to use the same underlying header as the parameter.
  801.79 -	IMPORT_C void Set(CObexHeader* aHeader);
  801.80 -	//Resets the contents of this header, discarding the underlying data.
  801.81 -	IMPORT_C void Reset();
  801.82 -	
  801.83 -	//Resets and destroys all header attributes.
  801.84 -	IMPORT_C void ResetContents();
  801.85 -	
  801.86 -	IMPORT_C void SetAttributes(TUint16 aAttr);
  801.87 -	IMPORT_C TUint16 Attributes() const;
  801.88 -	
  801.89 -	IMPORT_C THeaderType Type() const;
  801.90 -	
  801.91 -	IMPORT_C TUint8   HI() const;
  801.92 -	IMPORT_C TUint8   AsByte() const;
  801.93 -	IMPORT_C TUint32  AsFourByte() const;
  801.94 -	IMPORT_C const TDesC8&  AsByteSeq() const;
  801.95 -	IMPORT_C const TDesC16& AsUnicode() const;
  801.96 -
  801.97 -	IMPORT_C void SetByte(const TUint8 aHI, const TUint8 aByte);
  801.98 -	IMPORT_C void SetFourByte(const TUint8 aHI, const TUint32 aFourByte);
  801.99 -	IMPORT_C void SetByteSeqL(const TUint8 aHI, const TDesC8& aByteSeq);
 801.100 -	IMPORT_C void SetUnicodeL(const TUint8 aHI, const TDesC16& aUnicode);
 801.101 -
 801.102 -	IMPORT_C TInt EncodedSize() const;
 801.103 -	
 801.104 -private:
 801.105 -	CObexHeader();
 801.106 -	CObexHeader(CObexUnderlyingHeader* aHeader);
 801.107 -	void ConstructL();
 801.108 -	
 801.109 -private:
 801.110 -	CObexUnderlyingHeader* iHeader;
 801.111 -	};
 801.112 -
 801.113 -/**
 801.114 -Used to allow the iterator to decide whether to present a header to
 801.115 -the user, by passing in a possible header HI value.  Headers present
 801.116 -in the object will be presented to the Interested() function in the 
 801.117 -object in which they are held (if received from a remote device
 801.118 -this will be the order in which they were received, otherwise this will
 801.119 -be the order in which they were set).
 801.120 -The function can implement any desired behaviour, including relying on
 801.121 -the order in which the headers are presented.
 801.122 -
 801.123 -In case any state is held, the object also provides a Reset() function.
 801.124 -Reset() provides a default empty implementation.
 801.125 -
 801.126 -Note: there is no destructor. 
 801.127 - 
 801.128 -@publishedAll
 801.129 -@released
 801.130 -*/
 801.131 -class MObexHeaderCheck 
 801.132 -	{
 801.133 -public:
 801.134 -	/**
 801.135 -	Called to discover is the user is interested in the contents of
 801.136 -	this header.
 801.137 -	
 801.138 -	@param aHI The identifier of the header, including type bits.
 801.139 -	@return ETrue if the user is interested in the contents of this
 801.140 -	header.
 801.141 -	@publishedAll
 801.142 -	@released
 801.143 -	*/
 801.144 -	IMPORT_C virtual TBool Interested(TUint8 aHI) =0;
 801.145 -	
 801.146 -	/**
 801.147 -	Called in response to First() being called on the iterator object.
 801.148 -	The default implementation does nothing---some implementations may
 801.149 -	wish to reset state variables.
 801.150 -	
 801.151 -	@publishedAll
 801.152 -	@released
 801.153 -	*/
 801.154 -	IMPORT_C virtual void Reset();
 801.155 -	
 801.156 -	/**
 801.157 - 	Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
 801.158 -	@param aInterface UID of the interface to return
 801.159 -	@param aObject the container for another interface as specified by aInterface
 801.160 -	@internalComponent
 801.161 -	*/
 801.162 -	IMPORT_C virtual void MOHC_ExtensionInterfaceL(TUid aInterface, void*& aObject);
 801.163 -	};
 801.164 -
 801.165 -/**
 801.166 -A collection of headers.  Includes code to filter based on the header HI
 801.167 -value, iterate through the set of interesting headers, and extract headers
 801.168 -with specific HI values.
 801.169 - 
 801.170 -@publishedAll
 801.171 -@released
 801.172 -*/
 801.173 -NONSHARABLE_CLASS(CObexHeaderSet) : public CBase
 801.174 -	{
 801.175 -public:
 801.176 -	IMPORT_C static CObexHeaderSet* NewL();
 801.177 -	IMPORT_C CObexHeaderSet* CopyL();
 801.178 -	IMPORT_C CObexHeaderSet* CopyL(MObexHeaderCheck& aHeaderCheck);
 801.179 -	~CObexHeaderSet();
 801.180 -
 801.181 -	IMPORT_C TInt AddHeader(CObexHeader* aHeader);
 801.182 -	IMPORT_C void DeleteCurrentHeader();
 801.183 -
 801.184 -	IMPORT_C void SetMask(MObexHeaderCheck* aMask);
 801.185 -	IMPORT_C void DeleteMasked();
 801.186 -	
 801.187 -	IMPORT_C void First() const;
 801.188 -	IMPORT_C TInt This(CObexHeader* aHeader) const;
 801.189 -	IMPORT_C TInt Next() const;
 801.190 -	IMPORT_C TInt Next(TInt aSkip) const;
 801.191 -	IMPORT_C TInt Count() const;
 801.192 -	
 801.193 -	IMPORT_C TInt Find(TUint8 aHI, CObexHeader& aHeader) const;
 801.194 -	
 801.195 -private:
 801.196 -	CObexHeaderSet();
 801.197 -
 801.198 -private:
 801.199 -	RPointerArray<CObexHeader> iHeaders;
 801.200 -	mutable MObexHeaderCheck* iMask;
 801.201 -	mutable TInt iPos;
 801.202 -	};
 801.203 -
 801.204 -/** 
 801.205 -@publishedAll
 801.206 -@released
 801.207 -*/
 801.208 -NONSHARABLE_CLASS(TObexMatchHeader) : public MObexHeaderCheck
 801.209 -	{
 801.210 -public:
 801.211 -	virtual EXPORT_C TBool Interested(TUint8 aHI);
 801.212 -	IMPORT_C void SetHeader(TUint8 aHI);
 801.213 -
 801.214 -private:
 801.215 -	TUint8 iHI;
 801.216 -	
 801.217 -private:
 801.218 -	// This data padding has been added to help prevent future binary compatibility breaks	
 801.219 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 801.220 -	TUint32     iPadding1; 
 801.221 -	TUint32     iPadding2; 	
 801.222 -	};
 801.223 -
 801.224 -/** 
 801.225 -@publishedAll
 801.226 -@released
 801.227 -*/
 801.228 -NONSHARABLE_CLASS(TObexMatchHeaderType) : public MObexHeaderCheck
 801.229 -{
 801.230 -public:
 801.231 -	virtual EXPORT_C TBool Interested(TUint8 aHI);
 801.232 -	IMPORT_C void SetType(CObexHeader::THeaderType aType);
 801.233 -
 801.234 -private:
 801.235 -	TInt iType;
 801.236 -
 801.237 -private:
 801.238 -	// This data padding has been added to help prevent future binary compatibility breaks	
 801.239 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 801.240 -	TUint32     iPadding1; 
 801.241 -	TUint32     iPadding2; 	
 801.242 -	};
 801.243 -
 801.244 -#endif // __OBEXHEADERS_H
   802.1 --- a/epoc32/include/obexirtransportinfo.h	Tue Mar 16 16:12:26 2010 +0000
   802.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   802.3 @@ -1,96 +0,0 @@
   802.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   802.5 -// All rights reserved.
   802.6 -// This component and the accompanying materials are made available
   802.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   802.8 -// which accompanies this distribution, and is available
   802.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  802.10 -//
  802.11 -// Initial Contributors:
  802.12 -// Nokia Corporation - initial contribution.
  802.13 -//
  802.14 -// Contributors:
  802.15 -//
  802.16 -// Description:
  802.17 -//
  802.18 -
  802.19 -#ifndef __OBEXIRTRANSPORTINFO_H__
  802.20 -#define __OBEXIRTRANSPORTINFO_H__
  802.21 -
  802.22 -#include <ir_sock.h>
  802.23 -#include <obextransportinfo.h>
  802.24 -
  802.25 -/**
  802.26 -Concrete transport info type for use when using Irda ttp  transport controller.
  802.27 -@see KObexIrTTPProtocol
  802.28 -@publishedAll
  802.29 -@released
  802.30 -*/
  802.31 -NONSHARABLE_CLASS(TObexIrTransportInfo) : public TObexTransportInfo
  802.32 -
  802.33 -	{
  802.34 -//From TObexIrProtocolInfo
  802.35 -public:
  802.36 -	/** IrDA address information for this connection, as used in the IrDA sockets interface.
  802.37 -	Refer to the SDK for more information about this.
  802.38 -	Its main use is for setting the port that the local machine will listen on. */
  802.39 -	TIrdaSockAddr iAddr;
  802.40 -	/** The IAS class value that the OBEX session will register its listener port,
  802.41 -	or request remote port with. */
  802.42 -	TBuf8<KIASClassNameMax> iClassName;
  802.43 -	/** The IAS attribute value that the OBEX session will register its listener port,
  802.44 -	or request remote port with. */
  802.45 -	TBuf8<KIASAttributeNameMax> iAttributeName;
  802.46 -	};
  802.47 -
  802.48 -/**
  802.49 -Concrete transport info type for use when using Irda ttp  transport controller, with discovery extensions.
  802.50 -@see KObexIrTTPProtocolV2
  802.51 -@publishedAll
  802.52 -@released
  802.53 -*/
  802.54 -NONSHARABLE_CLASS(TObexIrV2TransportInfo) : public TObexIrTransportInfo
  802.55 -
  802.56 -	{
  802.57 -//From TObexIrProtocolInfo
  802.58 -public:
  802.59 -	/** The number of discovery slots to use. */
  802.60 -	TUint8 iDiscoverySlots;
  802.61 -	/** The number of discovery attempts to make. */
  802.62 -	TUint8 iDiscoveryAttempts;
  802.63 -	
  802.64 -private:
  802.65 -	// This data padding has been added to help prevent future binary compatibility breaks	
  802.66 -	// None of these padding variables have been zero'd because they are currently not used
  802.67 -	TUint32     iPadding1; 
  802.68 -	TUint32     iPadding2; 		
  802.69 -	TUint32     iPadding3; 
  802.70 -	TUint32     iPadding4; 	
  802.71 -	};
  802.72 -
  802.73 -
  802.74 -/**
  802.75 -Concrete transport info type for use when using Irda ttp transport controller, with nickname extension.
  802.76 -@see KObexIrTTPProtocolV3
  802.77 -@publishedAll
  802.78 -
  802.79 -@capability WriteDeviceData If the TObexIrV3TransportInfo is passed as the argument
  802.80 -                            to CObexServer::NewL or CObexClient::NewL and the associated 
  802.81 -                            name is valid.
  802.82 -
  802.83 -@released
  802.84 -*/
  802.85 -NONSHARABLE_CLASS(TObexIrV3TransportInfo) : public TObexIrV2TransportInfo
  802.86 -	{
  802.87 -public:
  802.88 -	/** The device nickname.  The maximum length in the IrDA specification
  802.89 -	is defined as 23 - (number of hint octets [2] + 1)  =  20
  802.90 -	*/
  802.91 -	TBuf<20> iLocalDeviceNickname;
  802.92 -	
  802.93 -	/** A flag indicating if the device nickname field is valid.  This
  802.94 -	allows Symbian to make further derivations of this interface without making
  802.95 -	the device nickname mandatory */
  802.96 -	TBool iLocalDeviceNicknameValid;
  802.97 -	};
  802.98 -
  802.99 -#endif // __OBEXIRTRANSPORTINFO_H__
   803.1 --- a/epoc32/include/obexobjects.h	Tue Mar 16 16:12:26 2010 +0000
   803.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   803.3 @@ -1,342 +0,0 @@
   803.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   803.5 -// All rights reserved.
   803.6 -// This component and the accompanying materials are made available
   803.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   803.8 -// which accompanies this distribution, and is available
   803.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  803.10 -//
  803.11 -// Initial Contributors:
  803.12 -// Nokia Corporation - initial contribution.
  803.13 -//
  803.14 -// Contributors:
  803.15 -//
  803.16 -// Description:
  803.17 -//
  803.18 -
  803.19 -
  803.20 -
  803.21 -/**
  803.22 - @file
  803.23 - @publishedAll
  803.24 - @released
  803.25 -*/
  803.26 -
  803.27 -#ifndef __OBEXOBJECTS_H
  803.28 -#define __OBEXOBJECTS_H
  803.29 -
  803.30 -#include <obextypes.h>
  803.31 -#include <obexbaseobject.h>
  803.32 -#include <f32file.h>
  803.33 -
  803.34 -class MObexFileWriter;
  803.35 -class TObexBufferingDetails;
  803.36 -
  803.37 -/**
  803.38 -This class is a concrete derivation of the CObexBaseObject class. Use it to 
  803.39 -store and transfer OBEX objects with the body part stored in an EPOC file. 
  803.40 -Hence this class is particularly suited to OBEX "file" beaming applications 
  803.41 -(c.f. arbitrary object beaming), although there is in reality no 
  803.42 -restriction in what it is used to transfer. Access to the body is acheived 
  803.43 -through an additional attribute to the object; the data file. This is the 
  803.44 -file-system name of the file used to store the body of the object. Note 
  803.45 -that there is no explicit relation between this and the Name of the object, 
  803.46 -although it is expected that most applications would attempt to relate the 
  803.47 -two.
  803.48 -
  803.49 -When ever a valid data file is set (i.e. DataFile().Length > 0), this file 
  803.50 -is effectively open, hence stopping any other application from opening it 
  803.51 -with exclusive rights. Therefore, it is recommended that Reset () be called 
  803.52 -on the object as soon as it is no longer required, and definitely before 
  803.53 -(conceptually) passing ownership of the data file to any other object or 
  803.54 -user.
  803.55 -
  803.56 -CObexFileObject is also suited to situations where an object is expected to 
  803.57 -be received, but no information about the purpose of this object is known. 
  803.58 -This is due to CObexFileObject’s ability to create temporary files "on the 
  803.59 -fly" to store received data into, when a specific file is not provided by 
  803.60 -the application.
  803.61 -
  803.62 -This class is not designed for user derivation.
  803.63 -
  803.64 -@publishedAll
  803.65 -@released
  803.66 -*/
  803.67 -NONSHARABLE_CLASS(CObexFileObject) : public CObexBaseObject
  803.68 -	{
  803.69 -public:
  803.70 -	static IMPORT_C CObexFileObject* NewL();
  803.71 -	static IMPORT_C CObexFileObject* NewL(const TDesC &aDataFile);
  803.72 -	virtual IMPORT_C ~CObexFileObject();
  803.73 -	IMPORT_C void InitFromFileL(const TDesC& aFile);
  803.74 -
  803.75 -private:
  803.76 -	void ConstructL(const TDesC &aDataFile);
  803.77 -	void SetDataFileL(const TDesC& aDesc);
  803.78 -	const TDesC& DataFile();
  803.79 -	TBool RenameFile(const TDesC& aDesC);
  803.80 -	void SetTempFilePath(const TDesC& aPath);
  803.81 -	void QueryTempFilePath(TDes& aPath);
  803.82 -	// From CObexBaseObject
  803.83 -	virtual void GetData(TInt aPos, TDes8& aDes);
  803.84 -	virtual void NewData(TInt aPos, TDes8& aDes);
  803.85 -	virtual TInt DataSize();
  803.86 -	virtual void ResetData();
  803.87 -// Data
  803.88 -private:
  803.89 -	RFs iFs;
  803.90 -	TParse iDataFile;
  803.91 -	RFile iFile;
  803.92 -	TBuf<KObexObjectDescriptionSize> iTempFilePath;
  803.93 -	};
  803.94 -
  803.95 -
  803.96 -
  803.97 -/**
  803.98 -Use this class to hold objects where the body part is stored in a CBufFlat
  803.99 -object. Please note that although parameters are supplied as CBufBase objects,
 803.100 -non-CBufFlat parameters are not supported and will have unpredictable results.
 803.101 -At no point does the CObexBufObject create, or take ownership of any CBaseBuf
 803.102 -object it uses - it is always the responsibility of the creator/owner of the
 803.103 -CBaseBuf to free it when no longer required.
 803.104 -
 803.105 -As this class does not take ownership of the buffers it uses, it equally can
 803.106 -not create its own buffers ad-hoc for storing new data into. Hence at no 
 803.107 -time is it valid for a CObexBufObject to exist with out it having a valid 
 803.108 -data buffer set. If such a situation arises, where it is required that 
 803.109 -received information should be discarded, consider using a CObexNullObject.
 803.110 -
 803.111 -It is also posible to supply a file instead of a memory buffer, or to supply
 803.112 -both.  This functionality is due to the MObexServerNotify class expecting to
 803.113 -work only on CObexBufObjects, so CObexFileObjects cannot be returned from the
 803.114 -upcalls.
 803.115 -To use a file for body storage, call NewL() passing in a NULL pointer, then
 803.116 -call SetDataBufL() manually afterwards.  There are three overloads---to allow
 803.117 -purely memory based objects, purely file based, or a hybrid.  The hybrid object
 803.118 -buffers into a memory buffer (which is not allowed to grow), then writes data
 803.119 -to the file when the buffer is full.  The buffering behaviour can therefore be
 803.120 -tuned to the application by setting the size of the buffer prior to use.
 803.121 -
 803.122 -This class is not designed for user derivation.
 803.123 -
 803.124 -@publishedAll
 803.125 -@released
 803.126 -*/
 803.127 -NONSHARABLE_CLASS(CObexBufObject) : public CObexBaseObject
 803.128 -	{
 803.129 -public:
 803.130 -	/**
 803.131 -	Obex file buffering method.
 803.132 -	
 803.133 -	@publishedAll
 803.134 -	@released
 803.135 -	*/
 803.136 -	enum TFileBuffering
 803.137 -		{
 803.138 -		/** Only the supplied buffer will be used to buffer file writes. */
 803.139 -		ESingleBuffering,
 803.140 -		/** The object will create a second buffer and perform double buffering. */
 803.141 -		EDoubleBuffering
 803.142 -		};
 803.143 -
 803.144 -public:
 803.145 -	static IMPORT_C CObexBufObject* NewL(CBufBase* aDataBuf);
 803.146 -	virtual IMPORT_C ~CObexBufObject();
 803.147 -	IMPORT_C TInt WriteToFile(const TPtrC& aFileName);
 803.148 -	
 803.149 -	IMPORT_C void SetDataBufL(TObexBufferingDetails& aDetails);
 803.150 -	IMPORT_C void SetDataBufL(CBufBase* aDataBuf);
 803.151 -	IMPORT_C void SetDataBufL(const TPtrC& aFilename);
 803.152 -	IMPORT_C void SetDataBufL(const TPtrC& aFilename, CBufBase* aDataBuf);
 803.153 -	IMPORT_C void SetDataBufL(const TPtrC& aFilename, CBufBase& aDataBuf, const TFileBuffering aBufferingStrategy);
 803.154 -	IMPORT_C CBufBase* DataBuf();
 803.155 -	HBufC* FileName();
 803.156 -
 803.157 -private:
 803.158 -	CObexBufObject();
 803.159 -	void ConstructL(CBufBase* aDataBuf);
 803.160 -	
 803.161 -	void PrepareToSetBufferL();
 803.162 -
 803.163 -	void CopyFileL(const TDesC& aFilename);
 803.164 -	TInt NewFileData(TInt aPos, TDes8& aDes);
 803.165 -	void GetFileData(TInt aPos, TDes8& aDes);
 803.166 -
 803.167 -	// From CObexBaseObject
 803.168 -	virtual void GetData(TInt aPos, TDes8& aDes);
 803.169 -	virtual void NewData(TInt aPos, TDes8& aDes);
 803.170 -	virtual TInt DataSize();
 803.171 -	virtual void ResetData();
 803.172 -
 803.173 -	void CloseDataFile();
 803.174 -	TInt OpenDataFile(const TDesC& aFilename);
 803.175 -	void CloseFileServer();
 803.176 -	TInt OpenFileServer();
 803.177 -	TInt WriteBufferToFile(TBool aFinal);
 803.178 -
 803.179 -// Data
 803.180 -private:
 803.181 -	CBufBase* iBuf;
 803.182 -	HBufC* iFilename;
 803.183 -	RFs* iFileServ;
 803.184 -	RFile* iFile;
 803.185 -	TInt iBufOffset;
 803.186 -	TInt iBuffered;
 803.187 -	TInt iBufSegSize;
 803.188 -
 803.189 -// Added for double-buffering
 803.190 -private:
 803.191 -	// Owned
 803.192 -	MObexFileWriter*	iWriter;
 803.193 -	CBufBase*			iDoubleBuf;
 803.194 -	};
 803.195 -
 803.196 -
 803.197 -
 803.198 -/**
 803.199 -Wraps parameters which can affect the buffering method used by the
 803.200 -CObexBufObject.
 803.201 -This version provides a single memory buffer which holds the entire object.
 803.202 -Subclasses will always use a memory buffer, but can override the way that
 803.203 -Obex uses it.
 803.204 -
 803.205 -@publishedAll
 803.206 -@released
 803.207 -*/
 803.208 -NONSHARABLE_CLASS(TObexBufferingDetails)
 803.209 -	{
 803.210 -public:
 803.211 -	/**
 803.212 -	Versions (subclasses) of the buffering style object.
 803.213 -	@internalComponent
 803.214 -	*/
 803.215 -	enum TVersion
 803.216 -		{
 803.217 -		EBasicBuffer,
 803.218 -		EPureFile,
 803.219 -		EFilenameBackedBuffer,
 803.220 -		ERFileBackedBuffer,
 803.221 -		ELastVersion
 803.222 -		};
 803.223 -	
 803.224 -	IMPORT_C TObexBufferingDetails(CBufBase& aBuffer);
 803.225 -	
 803.226 -	TVersion Version();	// Return the version of this object
 803.227 -	CBufBase* Buffer();
 803.228 -
 803.229 -protected:
 803.230 -	TObexBufferingDetails(TVersion aVersion, CBufBase* aBuffer);
 803.231 -
 803.232 -private:
 803.233 -	TVersion iVersion;
 803.234 -	CBufBase* iBuffer;
 803.235 -
 803.236 -	// This data padding has been added to help prevent future binary compatibility breaks	
 803.237 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 803.238 -	TUint32     iPadding1; 
 803.239 -	TUint32     iPadding2; 	
 803.240 -	};
 803.241 -
 803.242 -
 803.243 -/**
 803.244 -Provides alternate behaviour for a CObexBufObject, allowing use of a file
 803.245 -to hold the object in its entirety.  No memory buffer is used.  This is a
 803.246 -special case option provided to cater for the MObexServerNotify interface
 803.247 -which requires the use of CObexBufObject objects.  It is generally better to
 803.248 -use a buffered variant.
 803.249 -
 803.250 -@publishedAll
 803.251 -@released
 803.252 -*/
 803.253 -NONSHARABLE_CLASS(TObexPureFileBuffer) : public TObexBufferingDetails
 803.254 -	{
 803.255 -public:
 803.256 -	IMPORT_C TObexPureFileBuffer(const TPtrC& aFilename);
 803.257 -	const TPtrC& Filename();
 803.258 -
 803.259 -private:
 803.260 -	const TPtrC& iFilename;
 803.261 -
 803.262 -	// This data padding has been added to help prevent future binary compatibility breaks	
 803.263 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 803.264 -	TUint32     iPadding1; 
 803.265 -	TUint32     iPadding2; 
 803.266 -	};
 803.267 -
 803.268 -/**
 803.269 -Provides alternate behaviour for a CObexBufObject, allowing use of a file
 803.270 -to hold the object in its entirety.  Writes to this object are buffered through
 803.271 -the supplied CBufBase derived object, which is never enlarged.  Once
 803.272 -it is full, the data is flushed to the file.
 803.273 -
 803.274 -@publishedAll
 803.275 -@released
 803.276 -*/
 803.277 -NONSHARABLE_CLASS(TObexFilenameBackedBuffer) : public TObexBufferingDetails
 803.278 -	{
 803.279 -public:
 803.280 -	IMPORT_C TObexFilenameBackedBuffer(CBufBase& aBuffer, const TPtrC& aFilename, CObexBufObject::TFileBuffering aBufferingStrategy);
 803.281 -	const TPtrC& Filename();
 803.282 -	CObexBufObject::TFileBuffering Strategy();
 803.283 -	
 803.284 -private:
 803.285 -	const TPtrC& iFilename;
 803.286 -	CObexBufObject::TFileBuffering iBufferingStrategy;
 803.287 -
 803.288 -	// This data padding has been added to help prevent future binary compatibility breaks	
 803.289 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 803.290 -	TUint32     iPadding1; 
 803.291 -	TUint32     iPadding2; 	
 803.292 -	};
 803.293 -
 803.294 -
 803.295 -
 803.296 -/**
 803.297 -Provides alternate behaviour for a CObexBufObject, allowing use of a file
 803.298 -to hold the object in its entirety.  Writes to this object are buffered through
 803.299 -the supplied CBufBase derived object, which is never enlarged.  Once
 803.300 -it is full, the data is flushed to the file.
 803.301 -
 803.302 -@publishedAll
 803.303 -@released
 803.304 -*/
 803.305 -NONSHARABLE_CLASS(TObexRFileBackedBuffer) : public TObexBufferingDetails
 803.306 -	{
 803.307 -public:
 803.308 -	IMPORT_C TObexRFileBackedBuffer(CBufBase& aBuffer, RFile aFile, CObexBufObject::TFileBuffering aBufferingStrategy);
 803.309 -	RFile File();
 803.310 -	CObexBufObject::TFileBuffering Strategy();
 803.311 -	
 803.312 -private:
 803.313 -	RFile iFile;
 803.314 -	CObexBufObject::TFileBuffering iBufferingStrategy;
 803.315 -
 803.316 -	// This data padding has been added to help prevent future binary compatibility breaks	
 803.317 -	// Neither iPadding1 nor iPadding2 have been zero'd because they are currently not used
 803.318 -	TUint32     iPadding1; 
 803.319 -	TUint32     iPadding2; 
 803.320 -	};
 803.321 -
 803.322 -
 803.323 -
 803.324 -/**
 803.325 -Concrete OBEX object with NULL data representation. Use when only the 
 803.326 -headers of an object are required, and the data (if any) can safely be 
 803.327 -discarded.
 803.328 -
 803.329 -@publishedAll
 803.330 -@released
 803.331 -*/
 803.332 -NONSHARABLE_CLASS(CObexNullObject) : public CObexBaseObject
 803.333 -	{
 803.334 -public:
 803.335 -	IMPORT_C static CObexNullObject* NewL ();
 803.336 -private:
 803.337 -	// From CObexBaseObject
 803.338 -	void ConstructL();
 803.339 -	virtual void GetData (TInt aPos, TDes8& aDes);
 803.340 -	virtual void NewData (TInt aPos, TDes8& aDes);
 803.341 -	virtual TInt DataSize ();
 803.342 -	virtual void ResetData ();
 803.343 -	};
 803.344 -
 803.345 -#endif // __OBEXOBJECTS_H
   804.1 --- a/epoc32/include/obexpanics.h	Tue Mar 16 16:12:26 2010 +0000
   804.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   804.3 @@ -1,157 +0,0 @@
   804.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   804.5 -// All rights reserved.
   804.6 -// This component and the accompanying materials are made available
   804.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   804.8 -// which accompanies this distribution, and is available
   804.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  804.10 -//
  804.11 -// Initial Contributors:
  804.12 -// Nokia Corporation - initial contribution.
  804.13 -//
  804.14 -// Contributors:
  804.15 -//
  804.16 -// Description:
  804.17 -//
  804.18 -
  804.19 -#ifndef OBEX_PANICS_H
  804.20 -#define OBEX_PANICS_H
  804.21 -
  804.22 -/**
  804.23 -@file
  804.24 -@publishedAll
  804.25 -@released
  804.26 -
  804.27 -This file contains details of all OBEX and OBEX Transport panics which may be raised
  804.28 -as a result programming error by the users of OBEX (e.g. Client or Server Application
  804.29 -or a proprietry transport controller).
  804.30 -
  804.31 -Internal panic codes should not be raised due to user errors but would reflect
  804.32 -internal Obex programming errors - see inc/obexfaults.h
  804.33 -*/
  804.34 -
  804.35 -
  804.36 -/**
  804.37 -Category for Obex panics
  804.38 -@see TObexPanicCode
  804.39 -*/
  804.40 -_LIT(KObexPanicCategory, "Obex");
  804.41 -
  804.42 -/**
  804.43 -@publishedAll
  804.44 -@released
  804.45 -
  804.46 -All Obex panics which may be raised as a result of a client (i.e. external) programming error.
  804.47 -Internal Obex panics are errors listed in TObexFaultCode
  804.48 -@see TObexFaultCode
  804.49 -*/
  804.50 -enum TObexPanicCode
  804.51 -	{
  804.52 -	/** A NULL value was supplied for the data buffer.  Note that this
  804.53 -	pointer can refer to either a memory buffer or a pointer to a RFile object.
  804.54 - 	@see CObexBufObject
  804.55 - 	*/
  804.56 -	ENullPointer					= 0,
  804.57 -	
  804.58 -	
  804.59 -	/** The supplied buffer is of zero length.
  804.60 -	@see CObexBufObject
  804.61 -	*/
  804.62 -	EEmptyBuffer					= 1,
  804.63 -	
  804.64 -	
  804.65 -	/** The header is not of the requested type.
  804.66 -	@see CObexHeader
  804.67 -	*/
  804.68 -	EHeaderAsBadType				= 2,
  804.69 -	
  804.70 -	
  804.71 -	/** An unknown TFileBuffering value was supplied.
  804.72 - 	@see CObexBufObject
  804.73 - 	*/
  804.74 -	EInvalidBufferStrategy			= 3,
  804.75 -	
  804.76 -	
  804.77 - 	/** The RFile object does not point to a valid (open) file.
  804.78 - 	@see CObexBufObject
  804.79 - 	*/
  804.80 - 	ENullFileHandle					= 4,
  804.81 - 	
  804.82 - 	
  804.83 - 	/** An unknown TObexBufferingDetails object was supplied to a buffer object.
  804.84 - 	@see CObexBufObject
  804.85 - 	*/
  804.86 - 	EInvalidBufferDetails			= 5,
  804.87 - 	
  804.88 - 	
  804.89 -	/** A call has been made to CObexServer::RequestIndicationCallback when no
  804.90 -	asynchronous request is outstanding.
  804.91 -	@see MObexNotifyAsync
  804.92 -	@see CObexServer
  804.93 -	*/
  804.94 -	ENoNotificationToComplete		= 6,
  804.95 -
  804.96 -
  804.97 -	/** A call has been made to CObexServer::Start when an asynchronous request
  804.98 -	is outstanding.
  804.99 -	@see MObexNotifyAsync
 804.100 -	@see CObexServer
 804.101 -	*/
 804.102 -	EChangeInterfaceDuringWait		= 7,
 804.103 -
 804.104 -
 804.105 -
 804.106 - 	/** An invalid packet process event has been signalled.
 804.107 -	*/
 804.108 -	EBadPacketProcessEvent			= 8,
 804.109 -
 804.110 -
 804.111 -	/** An event is available for signalling, but there is no observer set.
 804.112 -	*/
 804.113 -	ENoPacketProcessObserverSet		= 9,
 804.114 -	
 804.115 -	/** In CObexServer, a call has been made to RequestCompleteIndicationCallback(TObexResponse)
 804.116 -	or RequestIndicationCallback(TObexResponse) with invalid response code or 
 804.117 -    RequestCompleteIndicationCallback(TInt) with invalid Symbian error code
 804.118 -	*/
 804.119 -	EInvalidResponseCodeFromServerApp = 10,
 804.120 -	
 804.121 -	/** In CObexServer, RequestCompleteIndicationCallback has been called in response to Put/GetRequestIndication
 804.122 -	or ReuqestIndicationCallback has been called in response to Put/GetComplete or SetPath Indication
 804.123 -	*/
 804.124 -	EInvalidResponseCallback = 11,
 804.125 -
 804.126 -	/** The last server response code has been requested prior to a response from the server.
 804.127 -	*/
 804.128 -	ENoResponseCodeToReturn			= 12,
 804.129 -
 804.130 -	/** Adding End of Body header when there is data in the object. 
 804.131 -	*/
 804.132 -	EAddingInvalidEoBHeader = 13,
 804.133 -	
 804.134 -	/** A user has requested to override the handling of a request
 804.135 -	packet at an invalid time.
 804.136 -	*/
 804.137 -	EOverrideRequestHandlingInBadState = 14,
 804.138 -	};
 804.139 -
 804.140 -
 804.141 -
 804.142 -/** 
 804.143 -The category for obex transport panics
 804.144 -*/
 804.145 -_LIT(KObexTransportPanicCat, "ObexTransPanics");
 804.146 -
 804.147 -/**
 804.148 -Obex transport panics raised as a result of client programming error
 804.149 -*/
 804.150 -enum TObexTransportPanicCode
 804.151 -	{
 804.152 -	/**
 804.153 -	The number of transport implementations for a given transport name is more than what is allowed.  
 804.154 -	Check that there is not more than the allowed number of plugin resource files containing the same default
 804.155 -	data and inteface uid.
 804.156 -	*/
 804.157 - 	EInvalidNumberOfTransportImplementations	= 0,	
 804.158 -	};
 804.159 -
 804.160 -#endif
   805.1 --- a/epoc32/include/obexserver.h	Tue Mar 16 16:12:26 2010 +0000
   805.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   805.3 @@ -1,693 +0,0 @@
   805.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   805.5 -// All rights reserved.
   805.6 -// This component and the accompanying materials are made available
   805.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   805.8 -// which accompanies this distribution, and is available
   805.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  805.10 -//
  805.11 -// Initial Contributors:
  805.12 -// Nokia Corporation - initial contribution.
  805.13 -//
  805.14 -// Contributors:
  805.15 -//
  805.16 -// Description:
  805.17 -//
  805.18 -
  805.19 -
  805.20 -
  805.21 -/**
  805.22 - @file
  805.23 - @publishedAll
  805.24 - @released
  805.25 -*/
  805.26 -
  805.27 -#ifndef __OBEXSERVER_H
  805.28 -#define __OBEXSERVER_H
  805.29 -
  805.30 -#include <obextypes.h>
  805.31 -#include <obex/internal/obextransportconstants.h>
  805.32 -#include <obexbase.h>
  805.33 -
  805.34 -class TObexTransportInfo;
  805.35 -class CObexServerRequestPacketEngine;
  805.36 -class CObexPacketSignaller;
  805.37 -class MObexReadActivityObserver;
  805.38 -
  805.39 -/** OBEX server.
  805.40 -
  805.41 -CObexServer provides a framework for servicing OBEX requests from remote clients. 
  805.42 -It is designed to be able to act as either a "default" application (in IrDA 
  805.43 -terms, registering on the IrDA:OBEX IAS class), or as a application specific 
  805.44 -server (registering itself on a private IAS class). 
  805.45 -
  805.46 -You implement service-specific behaviour by providing a MObexServerNotify 
  805.47 -interface implementation to the server object. The server calls the interface's 
  805.48 -functions to provide notification of server events, which specific implementations 
  805.49 -can process (or ignore) as appropriate.
  805.50 -
  805.51 -This class is not designed for user derivation. 
  805.52 -
  805.53 -@publishedAll
  805.54 -@released
  805.55 -*/
  805.56 -NONSHARABLE_CLASS(CObexServer) : public CObex
  805.57 -	{
  805.58 -	// CObexServer is friends with the core Server State Machine class so
  805.59 -	// that it can access the CObex::ControlledTransportDown() method
  805.60 -	friend class CObexServerStateMachine;
  805.61 -
  805.62 -	// CObexServer is friends with the TObexServerStateObexConnecting class so
  805.63 -	// that it can access the CObex::SetConnectState(TConnectState aNewState) method
  805.64 -	friend class TObexServerStateObexConnecting;
  805.65 -	
  805.66 -	// CObexServer is friends with the Server Request Packet Engine so that
  805.67 -	// it can NULL the iServerRequestPacketEngine pointer ready for another 
  805.68 -	// extension interface 
  805.69 -	friend class CObexServerRequestPacketEngine;
  805.70 -		
  805.71 -public:
  805.72 -	/**
  805.73 -	@publishedAll
  805.74 -	@released
  805.75 -	
  805.76 -	The target header checking to apply to incoming connection requests.  Defaults to
  805.77 -	EIfPresent.
  805.78 -	@see CObexServer::SetTargetChecking
  805.79 -	*/
  805.80 -	enum TTargetChecking
  805.81 -		{
  805.82 -		ENoChecking,	/** Allow all target headers to connect. */
  805.83 -		EIfPresent,		/** Only check target header in response to receiving one. Allows all clients
  805.84 -							specifying an Inbox service to connect. */
  805.85 -		EAlways,		/** Strict checking. Only allow connections if target header matches or no header
  805.86 -							received and none expected. */
  805.87 -		};
  805.88 -
  805.89 -	IMPORT_C static CObexServer* NewL(TObexProtocolInfo& aObexProtocolInfoPtr);
  805.90 -	IMPORT_C static CObexServer* NewL(TObexProtocolInfo& aObexProtocolInfoPtr, TObexProtocolPolicy& aObexProtocolPolicy);
  805.91 -	IMPORT_C static CObexServer* NewL(TObexTransportInfo& aObexTransportInfo);
  805.92 -	IMPORT_C ~CObexServer();
  805.93 -	IMPORT_C TInt Start(MObexServerNotify* aOwner);
  805.94 -	IMPORT_C TInt Start(MObexServerNotifyAsync* aOwner);
  805.95 -	IMPORT_C void Stop();
  805.96 -	IMPORT_C TBool IsStarted();
  805.97 -	IMPORT_C TOperation CurrentOperation() const;
  805.98 -	void SetCurrentOperation(const TOperation aOperation);	// used internally by state machine
  805.99 -	IMPORT_C void SetChallengeL(const TDesC& aPassword);
 805.100 -	IMPORT_C void ResetChallenge();
 805.101 -	IMPORT_C void UserPasswordL( const TDesC& aPassword); 
 805.102 -	IMPORT_C void SetTargetChecking(TTargetChecking aChecking);
 805.103 -	IMPORT_C TInt SetPutFinalResponseHeaders(CObexHeaderSet* aHeaderSet);
 805.104 -	IMPORT_C TInt RequestIndicationCallback(CObexBaseObject* aObject);
 805.105 -    IMPORT_C TInt RequestIndicationCallbackWithError(TObexResponse aResponseCode);
 805.106 -    IMPORT_C TInt RequestIndicationCallbackWithError(TInt aErrorCode);
 805.107 -    IMPORT_C TInt RequestCompleteIndicationCallback(TObexResponse aResponseCode);
 805.108 -    IMPORT_C TInt RequestCompleteIndicationCallback(TInt aErrorCode);
 805.109 -    // @publishedPartner
 805.110 -	IMPORT_C TInt PacketHeaders(CObexHeaderSet*& aHeaderSet);
 805.111 -	IMPORT_C TInt PacketHeaders(CObexHeaderSet*& aHeaderSet, MObexHeaderCheck& aHeaderCheck);
 805.112 -	IMPORT_C void SetReadActivityObserver(MObexReadActivityObserver* aObserver);
 805.113 -	// @internalTechnology
 805.114 -	IMPORT_C TAny* ExtensionInterfaceL(TUid aUid);
 805.115 -	IMPORT_C const TObexTransportInfo* TransportInfo() const;
 805.116 -
 805.117 -public:
 805.118 -	// Called from CObexNotifyExtendServer
 805.119 -	void SignalPacketProcessEvent(TObexPacketProcessEvent aEvent);
 805.120 -	
 805.121 -	// Unexported functions used by the Server state machine
 805.122 -	TBool CheckObjectForConnectionId(CObexBaseObject& aObject);
 805.123 -	TBool CheckPacketForConnectionId(CObexPacket& aObject);
 805.124 -
 805.125 -private:
 805.126 -	CObexServer();
 805.127 -	void ConstructL(TObexTransportInfo& aObexTransportInfo);
 805.128 -	TInt AcceptConnection();
 805.129 -	// Implementation of CObex Events
 805.130 -	virtual void OnPacketReceive(CObexPacket& aPacket);
 805.131 -	virtual void OnError(TInt aError);
 805.132 -	virtual void OnTransportUp();
 805.133 -	virtual void OnTransportDown();
 805.134 -
 805.135 -public:
 805.136 -	// These three functions need to be public so the Server state machine can use them
 805.137 -	// However ParseConnectPacket cannot be moved as it is a virtual function (from CObex)
 805.138 -	TInt PrepareConnectPacket(CObexPacket& aPacket);	
 805.139 -	TInt PrepareErroredConnectPacket(CObexPacket& aPacket);
 805.140 -	void SignalReadActivity();
 805.141 -	TInt ParseConnectPacket(CObexPacket& aPacket);
 805.142 -
 805.143 -private:
 805.144 -	TInt AddConnectionIDHeader(CObexPacket& aPacket);
 805.145 -	TInt PrepareFinalChallResponse(CObexPacket& aPacket, TConnectState& aNextState);
 805.146 -	void CheckTarget(TConnectState& aNextState, TInt& aRetVal);
 805.147 -	void ResetConnectionID();
 805.148 -	void SetConnectionID(TUint32 aConnectionID);
 805.149 -	TUint32 ConnectionID();
 805.150 -	void CheckServerAppResponseCode(TObexOpcode aOpcode, TObexResponse aResponse);
 805.151 -	TInt DoPacketHeaders(CObexHeaderSet*& aHeaderSet, MObexHeaderCheck* aHeaderCheck);
 805.152 -
 805.153 -private:
 805.154 -	MObexServerNotifyAsync* iOwner;
 805.155 -	TBool iEnabled;
 805.156 -	TBool iSpecDone;
 805.157 -	TBool iTargetReceived;
 805.158 -	TTargetChecking iTargetChecking;
 805.159 -	TUint32 iConnectionID;
 805.160 -	TBool iConnectionIdSet;
 805.161 -	CObexHeader*	iHeader;
 805.162 -	CObexServerStateMachine* iStateMachine;
 805.163 -	CObexServerNotifySyncWrapper* iSyncWrapper;
 805.164 -	CObexServerRequestPacketEngine* iServerRequestPacketEngine;
 805.165 -	CObexPacketSignaller* iPacketProcessSignaller;
 805.166 -	};
 805.167 -
 805.168 -
 805.169 -/** OBEX synchronous server notification interface.
 805.170 -
 805.171 -Any service that provides OBEX server functionality must implement one of the two
 805.172 -server observer classes -- this one or MObexServerNotifyAsync.
 805.173 -
 805.174 -The CObexServer object handles the protocol side of an OBEX server session, 
 805.175 -while this class provides the server policy for a particular session.
 805.176 -
 805.177 -PUT and GET requests are handled synchronously, with the implementer returning a
 805.178 -CObexBufObject which will be processed immediately.
 805.179 -
 805.180 -@publishedAll
 805.181 -@released
 805.182 -@see MObexServerNotifyAsync
 805.183 -@see CObexServer
 805.184 -*/
 805.185 -class MObexServerNotify
 805.186 -	{
 805.187 -public:
 805.188 -	/**
 805.189 -	 Returns a null aObject if the extension is not implemented, or a pointer to another interface if it is.
 805.190 -	 @param aInterface UID of the interface to return
 805.191 -	 @param aObject the container for another interface as specified by aInterface
 805.192 -	 */
 805.193 -	IMPORT_C virtual void MOSN_ExtensionInterfaceL(TUid aInterface, void*& aObject);
 805.194 -
 805.195 -	/** Called if an OBEX protocol error occurs.
 805.196 -	
 805.197 -	It is only called for fatal errors that cause the OBEX connection to terminate. 
 805.198 -	An error that does not terminate the connection, for example the server issuing 
 805.199 -	a semantically valid, but unrecognised command, will not be indicated.
 805.200 -	
 805.201 -	@param aError Error code that describes the OBEX error. OBEX specific error 
 805.202 -	codes are listed from KErrIrObexClientNoDevicesFound. 
 805.203 -	
 805.204 -	@publishedAll
 805.205 -	@released
 805.206 -	*/
 805.207 -	virtual void ErrorIndication(TInt aError) =0;
 805.208 -	
 805.209 -	
 805.210 -	
 805.211 -	/** Called when the underlying transport connection is made from a remote 
 805.212 -	client to the server.
 805.213 -	
 805.214 -	Note that this does not, however, indicate an OBEX connection has been successfully 
 805.215 -	established.
 805.216 -	
 805.217 -	You can define any low-level connection policy here. It is also a good place 
 805.218 -	to set up the local connection information (CObex::LocalInfo()), if any non-defaults 
 805.219 -	are required. 
 805.220 -
 805.221 -	@publishedAll
 805.222 -	@released
 805.223 -	*/
 805.224 -	virtual void TransportUpIndication() =0;
 805.225 -	
 805.226 -	
 805.227 -
 805.228 -	/** Called when the transport connection is dropped (by either party).
 805.229 -	
 805.230 -	It is called whether the OBEX connection was gracefully disconnected or not. 
 805.231 -	The function is the definitive place for disconnection processing.
 805.232 -	
 805.233 -	@publishedAll
 805.234 -	@released
 805.235 -	*/
 805.236 -	virtual void TransportDownIndication() =0;
 805.237 -	
 805.238 -	
 805.239 -	
 805.240 -	/** Called when an OBEX connection is made from a remote client.
 805.241 -	
 805.242 -	Override this function to provide any extra OBEX connection processing.
 805.243 -	Despite this method returning a value, implementers cannot use this to
 805.244 -	refuse the connection attempt.
 805.245 -	
 805.246 -	@param aRemoteInfo Connection information supplied by that remote machine
 805.247 -	@param aInfo Further information about the requested connection (reserved)
 805.248 -	@return Ignored
 805.249 -	
 805.250 -	@publishedAll
 805.251 -	@released
 805.252 -	*/
 805.253 -	virtual TInt ObexConnectIndication(const TObexConnectInfo& aRemoteInfo, const TDesC8& aInfo) =0;
 805.254 -
 805.255 -
 805.256 -
 805.257 -	/** Called on a (graceful) OBEX disconnection by the client.
 805.258 -	
 805.259 -	Override this to provide any extra processing OBEX disconnection processing.
 805.260 -	
 805.261 -	Note that this indication will not be raised if the remote machine simply 
 805.262 -	drops the transport connection. However, ErrorIndication() will be called 
 805.263 -	if the disconnection is unexpected/ invalid (i.e. another operation was in 
 805.264 -	progress at the time). In all cases, TransportDownIndication() will be called.
 805.265 -	
 805.266 -	@param aInfo Contains information about the disconnection (reserved) 
 805.267 -	
 805.268 -	@publishedAll
 805.269 -	@released
 805.270 -	*/
 805.271 -	virtual void ObexDisconnectIndication(const TDesC8& aInfo) =0;
 805.272 -
 805.273 -
 805.274 -
 805.275 -	/** Called on receipt of the first packet of a (valid) put request. 
 805.276 -	
 805.277 -	It is called before any parsing of the packet is performed, simply to establish 
 805.278 -	whether this server is interested in receiving objects at all.
 805.279 -	
 805.280 -	Note if the returned object cannot be initialised for receiving, ERespInternalError
 805.281 -	is returned to the client.
 805.282 -	
 805.283 -	@return CObexBaseObject-derived object, which the object being put will be 
 805.284 -	parsed into. If this is NULL, ERespForbidden is returned to the client. 
 805.285 -	
 805.286 -	@publishedAll
 805.287 -	@released
 805.288 -	*/
 805.289 -	virtual CObexBufObject* PutRequestIndication() =0;
 805.290 -
 805.291 -
 805.292 -
 805.293 -	/** Called on receipt of every packet of an OBEX PUT operation.
 805.294 -	
 805.295 -	It will always be preceded by a PutRequestIndication(). The object returned 
 805.296 -	by the request indication will be updated to reflect all the information received 
 805.297 -	concerning the object which the client is sending, from packets up to and 
 805.298 -	including the current one. 
 805.299 -	
 805.300 -	You can use this function to provide periodic user notification on the progress 
 805.301 -	of the transfer (noting that the Length attribute may take an arbitrary number 
 805.302 -	of packets to become non-zero, and the constraints on its accuracy). Due to 
 805.303 -	the nature of OBEX operations, where any header attribute can be sent at any 
 805.304 -	point in the transfer, this is also a good place to marshal the details of 
 805.305 -	a received object, and possibly prompt for action on the received object (e.g. 
 805.306 -	renaming on filename clashes).
 805.307 -	
 805.308 -	Note that this function could be hit quite heavily, in proportion to the size 
 805.309 -	of the object transferred. Therefore more consideration should be given to 
 805.310 -	the speed of execution of this function than that of the other indications.
 805.311 -	
 805.312 -	@return KErrNone instructs the server to allow the client to continue the put 
 805.313 -	operation. Any other value cancels the operation with an appropriate OBEX 
 805.314 -	server response code. 
 805.315 -	
 805.316 -	@publishedAll
 805.317 -	@released
 805.318 -	*/
 805.319 -	virtual TInt PutPacketIndication() =0;
 805.320 -
 805.321 -
 805.322 -
 805.323 -	/** Called after the final put packet has been successfully received and parsed. 
 805.324 -	
 805.325 -	Note that there will not necessarily be a call to this function corresponding 
 805.326 -	to each PutRequestIndication() as, if an error occurs while the put is being 
 805.327 -	carried out, ErrorIndication() will be called instead.
 805.328 -	
 805.329 -	Before version 6.1, the return type was void.
 805.330 -
 805.331 -	@return KErrNoneinstructs the remote client that the put completed successfully. 
 805.332 -	Any other value cancels the operation with an appropriate OBEX server response 
 805.333 -	code.
 805.334 -	
 805.335 -	@publishedAll
 805.336 -	@released
 805.337 -	*/
 805.338 -	virtual TInt PutCompleteIndication() =0;
 805.339 -
 805.340 -
 805.341 -
 805.342 -	/** Called when a full get request has been received from the client. 
 805.343 -	
 805.344 -	aRequestedObject holds all the details about the object the remote client 
 805.345 -	has requested. Use this function to analyse the client's request, and return 
 805.346 -	a pointer to the object to be returned to the client, or NULL to return no 
 805.347 -	object. 
 805.348 -	
 805.349 -	If NULL is returned, the server will send ERespForbidden to the client; if 
 805.350 -	an error occurs in returning the object, ERespInternalError is returned, otherwise 
 805.351 -	the returned object is sent back to the client.
 805.352 -	
 805.353 -	@param aRequiredObject Details about the object the remote client has requested
 805.354 -	@return Object to return to the client 
 805.355 -	
 805.356 -	@publishedAll
 805.357 -	@released
 805.358 -	*/
 805.359 -	virtual CObexBufObject* GetRequestIndication(CObexBaseObject *aRequiredObject) =0;
 805.360 -
 805.361 -
 805.362 -
 805.363 -	/** Called for every packet of get reply sent by the server back to the client. 
 805.364 -	
 805.365 -	The function is only called while an object is being sent to the client, not 
 805.366 -	while the client is providing its initial specification for the object it 
 805.367 -	requires. 
 805.368 -	
 805.369 -	You can use this function to provide user notification on the object being 
 805.370 -	sent, and its progress. As with PutPacketIndication(), you should consider 
 805.371 -	that this function might get called often, especially for large objects and 
 805.372 -	small OBEX packet sizes, so the speed of execution here is important.
 805.373 -	
 805.374 -	@return KErrNone to continue sending the object, or any other error code to 
 805.375 -	cancel the operation 
 805.376 -
 805.377 -	@publishedAll
 805.378 -	@released
 805.379 -	*/
 805.380 -	virtual TInt GetPacketIndication() =0;
 805.381 -
 805.382 -
 805.383 -
 805.384 -	/** Called when the final packet of the object has been returned to the client.
 805.385 -	
 805.386 -	Note like PutCompleteIndication(), this function might not be called for each 
 805.387 -	GetRequestIndication(), if the operation is interrupted by an error.
 805.388 -	
 805.389 -	Before version 6.1, the return type was void.
 805.390 -	
 805.391 -	@return KErrNoneinstructs the remote client that the get completed successfully. 
 805.392 -	Any other value cancels the operation with an appropriate OBEX server response 
 805.393 -	code. 
 805.394 -	
 805.395 -	@publishedAll
 805.396 -	@released
 805.397 -	*/
 805.398 -	virtual TInt GetCompleteIndication() =0;
 805.399 -
 805.400 -
 805.401 -
 805.402 -	/** Called when an OBEX SETPATH command is received by the server. 
 805.403 -	
 805.404 -	@param aPathInfo SETPATH command parameters
 805.405 -	@param aInfo Not currently used
 805.406 -	@return System wide error code indicating the success of the setpath command 
 805.407 -	
 805.408 -	@publishedAll
 805.409 -	@released
 805.410 -	*/
 805.411 -	virtual TInt SetPathIndication(const CObex::TSetPathInfo& aPathInfo, const TDesC8& aInfo) =0;
 805.412 -
 805.413 -
 805.414 -
 805.415 -	/** Called when an abort packet is received from the client. 
 805.416 -	
 805.417 -	An OBEX abort command simply cancels the current operation, and does not necessarily 
 805.418 -	have to cause the connection to be dropped. On return, a ERespSuccess packet 
 805.419 -	is sent to the client. 
 805.420 -	
 805.421 -	@publishedAll
 805.422 -	@released
 805.423 -	*/
 805.424 -	virtual void AbortIndication() =0;
 805.425 -	};
 805.426 -
 805.427 -
 805.428 -
 805.429 -/** OBEX asynchronous server notification interface.
 805.430 -
 805.431 -Any service that provides OBEX server functionality must implement one of the two
 805.432 -server observer classes -- this one or MObexServerNotify.
 805.433 -
 805.434 -The CObexServer object handles the protocol side of an OBEX server session, 
 805.435 -while this class provides the server policy for a particular session.
 805.436 -
 805.437 -PUT and GET requests are handled asynchronously, with the upcall from the server
 805.438 -being followed at some stage in the future by a call to CObexServer::RequestIndicationComplete
 805.439 -to trigger processing.
 805.440 -
 805.441 -@publishedAll
 805.442 -@released
 805.443 -@see MObexServerNotify
 805.444 -@see CObexServer
 805.445 -*/
 805.446 -class MObexServerNotifyAsync
 805.447 -	{
 805.448 -public:
 805.449 -
 805.450 -	/**
 805.451 - 	 Returns a null aObject if the extension is not implemented, or a pointer to another
 805.452 - 	 interface if it is.
 805.453 -	 @param aInterface UID of the interface to return
 805.454 -	 @param aObject the container for another interface as specified by aInterface
 805.455 -	 */
 805.456 -	IMPORT_C virtual void MOSNA_ExtensionInterfaceL(TUid aInterface, void*& aObject);		
 805.457 -
 805.458 -
 805.459 -
 805.460 -	/** Called if an OBEX protocol error occurs.
 805.461 -	
 805.462 -	It is only called for fatal errors that cause the OBEX connection to terminate. 
 805.463 -	An error that does not terminate the connection, for example the server issuing 
 805.464 -	a semantically valid, but unrecognised command, will not be indicated.
 805.465 -	
 805.466 -	@param aError Error code that describes the OBEX error. OBEX specific error 
 805.467 -	codes are listed from KErrIrObexClientNoDevicesFound. 
 805.468 -	
 805.469 -	@publishedAll
 805.470 -	@released
 805.471 -	*/
 805.472 -	virtual void ErrorIndication(TInt aError) =0;
 805.473 -	
 805.474 -
 805.475 -	
 805.476 -	/** Called when the underlying transport connection is made from a remote 
 805.477 -	client to the server.
 805.478 -	
 805.479 -	Note that this does not, however, indicate an OBEX connection has been successfully 
 805.480 -	established.
 805.481 -	
 805.482 -	You can define any low-level connection policy here. It is also a good place 
 805.483 -	to set up the local connection information (CObex::LocalInfo()), if any non-defaults 
 805.484 -	are required. 
 805.485 -
 805.486 -	@publishedAll
 805.487 -	@released
 805.488 -	*/
 805.489 -	virtual void TransportUpIndication() =0;
 805.490 -	
 805.491 -	
 805.492 -	
 805.493 -	/** Called when the transport connection is dropped (by either party).
 805.494 -	
 805.495 -	It is called whether the OBEX connection was gracefully disconnected or not. 
 805.496 -	The function is the definitive place for disconnection processing.
 805.497 -	
 805.498 -	@publishedAll
 805.499 -	@released
 805.500 -	*/
 805.501 -	virtual void TransportDownIndication() =0;
 805.502 -	
 805.503 -	
 805.504 -	
 805.505 -	/** Called when an OBEX connection is made from a remote client.
 805.506 -	
 805.507 -	Override this function to provide any extra OBEX connection processing.
 805.508 -	
 805.509 -	@param aRemoteInfo Connection information supplied by that remote machine
 805.510 -	@param aInfo Further information about the requested connection (reserved)
 805.511 -
 805.512 -	@publishedAll
 805.513 -	@released
 805.514 -	*/
 805.515 -	virtual void ObexConnectIndication(const TObexConnectInfo& aRemoteInfo, const TDesC8& aInfo) =0;
 805.516 -
 805.517 -
 805.518 -
 805.519 -	/** Called on a (graceful) OBEX disconnection by the client.
 805.520 -	
 805.521 -	Override this to provide any extra processing OBEX disconnection processing.
 805.522 -	
 805.523 -	Note that this indication will not be raised if the remote machine simply
 805.524 -	drops the transport connection. However, ErrorIndication() will be called 
 805.525 -	if the disconnection is unexpected/ invalid (i.e. another operation was in 
 805.526 -	progress at the time). In all cases, TransportDownIndication() will be called.
 805.527 -	
 805.528 -	@param aInfo Contains information about the disconnection (reserved) 
 805.529 -	
 805.530 -	@publishedAll
 805.531 -	@released
 805.532 -	*/
 805.533 -	virtual void ObexDisconnectIndication(const TDesC8& aInfo) =0;
 805.534 -
 805.535 -
 805.536 -
 805.537 -	/** Called on receipt of the first packet of a (valid) put request. 
 805.538 -	
 805.539 -	It is called before any parsing of the packet is performed, simply to establish 
 805.540 -	whether this server is interested in receiving objects at all.
 805.541 -	
 805.542 -	Following this notification, the server will wait for a call to
 805.543 -	CObexServer::RequestIndicationCallback supplying a CObexBaseObject derived
 805.544 -	object to receive into or a response code specifying the error.
 805.545 -	
 805.546 -	@publishedAll
 805.547 -	@released
 805.548 -	*/
 805.549 -	virtual void PutRequestIndication() =0;
 805.550 -
 805.551 -
 805.552 -
 805.553 -	/** Called on receipt of every packet of an OBEX PUT operation.
 805.554 -	
 805.555 -	It will always be preceded by a PutRequestIndication(). The object returned 
 805.556 -	by the request indication will be updated to reflect all the information received 
 805.557 -	concerning the object which the client is sending, from packets up to and 
 805.558 -	including the current one. 
 805.559 -	
 805.560 -	You can use this function to provide periodic user notification on the progress 
 805.561 -	of the transfer (noting that the Length attribute may take an arbitrary number 
 805.562 -	of packets to become non-zero, and the constraints on its accuracy). Due to 
 805.563 -	the nature of OBEX operations, where any header attribute can be sent at any 
 805.564 -	point in the transfer, this is also a good place to marshal the details of 
 805.565 -	a received object, and possibly prompt for action on the received object (e.g. 
 805.566 -	renaming on filename clashes).
 805.567 -	
 805.568 -	Note that this function could be hit quite heavily, in proportion to the size 
 805.569 -	of the object transferred. Therefore more consideration should be given to 
 805.570 -	the speed of execution of this function than that of the other indications.
 805.571 -	
 805.572 -	@return KErrNone instructs the server to allow the client to continue the put 
 805.573 -	operation. Any other value cancels the operation with an appropriate OBEX 
 805.574 -	server response code. 
 805.575 -	
 805.576 -	@publishedAll
 805.577 -	@released
 805.578 -	*/
 805.579 -	virtual TInt PutPacketIndication() =0;
 805.580 -
 805.581 -
 805.582 -
 805.583 -	/** Called after the final put packet has been successfully received and parsed. 
 805.584 -	
 805.585 -	Note that there will not necessarily be a call to this function corresponding 
 805.586 -	to each PutRequestIndication() as, if an error occurs while the put is being 
 805.587 -	carried out, ErrorIndication() will be called instead.
 805.588 -	
 805.589 -	Following this notification, the server will wait for a call to
 805.590 -	CObexServer::RequestCompleteIndicationCallback supplying a Obex response code.
 805.591 -
 805.592 -	@publishedAll
 805.593 -	@released
 805.594 -	*/
 805.595 -	virtual void PutCompleteIndication() =0;
 805.596 -
 805.597 -
 805.598 -
 805.599 -	/** Called when a full get request has been received from the client. 
 805.600 -	
 805.601 -	aRequestedObject holds all the details about the object the remote client 
 805.602 -	has requested. Use this function to analyse the client's request, and return 
 805.603 -	a pointer to the object to be returned to the client, or NULL to return no 
 805.604 -	object. 
 805.605 -	
 805.606 -	Following this notification, the server will wait for a call to
 805.607 -	CObexServer::RequestIndicationCallback supplying a CObexBaseObject derived
 805.608 -	object to send to the client or a response code specifying the error.
 805.609 -
 805.610 -	@param aRequiredObject Details about the object the remote client has requested
 805.611 -	
 805.612 -	@publishedAll
 805.613 -	@released
 805.614 -	*/
 805.615 -	virtual void GetRequestIndication(CObexBaseObject* aRequiredObject) =0;
 805.616 -
 805.617 -
 805.618 -
 805.619 -	/** Called for every packet of get reply sent by the server back to the client. 
 805.620 -	
 805.621 -	The function is only called while an object is being sent to the client, not 
 805.622 -	while the client is providing its initial specification for the object it 
 805.623 -	requires. 
 805.624 -	
 805.625 -	You can use this function to provide user notification on the object being 
 805.626 -	sent, and its progress. As with PutPacketIndication(), you should consider 
 805.627 -	that this function might get called often, especially for large objects and 
 805.628 -	small OBEX packet sizes, so the speed of execution here is important.
 805.629 -	
 805.630 -	@return KErrNone to continue sending the object, or any other error code to 
 805.631 -	cancel the operation
 805.632 -	
 805.633 -	@publishedAll
 805.634 -	@released
 805.635 -	*/
 805.636 -	virtual TInt GetPacketIndication() =0;
 805.637 -
 805.638 -
 805.639 -
 805.640 -	/** Called when the final packet of the object has been returned to the client.
 805.641 -	
 805.642 -	Note like PutCompleteIndication(), this function might not be called for each
 805.643 -	GetRequestIndication(), if the operation is interrupted by an error.
 805.644 -	
 805.645 -	Following this notification, the server will wait for a call to
 805.646 -	CObexServer::RequestCompleteIndicationCallback supplying a Obex response code.
 805.647 -
 805.648 -	@publishedAll
 805.649 -	@released
 805.650 -	*/
 805.651 -	virtual void GetCompleteIndication() =0;
 805.652 -
 805.653 -
 805.654 -
 805.655 -	/** Called when an OBEX SETPATH command is received by the server. 
 805.656 -	
 805.657 -	Following this notification, the server will wait for a call to
 805.658 -	CObexServer::RequestCompleteIndicationCallback supplying a Obex response code.
 805.659 -	
 805.660 -	@param aPathInfo SETPATH command parameters
 805.661 -	@param aInfo Not currently used
 805.662 -
 805.663 -	@publishedAll
 805.664 -	@released
 805.665 -	*/
 805.666 -	virtual void SetPathIndication(const CObex::TSetPathInfo& aPathInfo, const TDesC8& aInfo) =0;
 805.667 -
 805.668 -
 805.669 -
 805.670 -	/** Called when an abort packet is received from the client. 
 805.671 -	
 805.672 -	An OBEX abort command simply cancels the current operation, and does not necessarily 
 805.673 -	have to cause the connection to be dropped. On return, a ERespSuccess packet 
 805.674 -	is sent to the client. 
 805.675 -	
 805.676 -	@publishedAll
 805.677 -	@released
 805.678 -	*/
 805.679 -	virtual void AbortIndication() =0;
 805.680 -	
 805.681 -	
 805.682 -	
 805.683 -	/** Cancel an asynchronous callback request (ie. PutRequest/GetRequest/PutComplete/GetComplete/SetPath 
 805.684 -		notification).
 805.685 -	
 805.686 -	Note that ignoring this call will lead to a panic when the indication callback function
 805.687 -	is called.
 805.688 -
 805.689 -	@publishedAll
 805.690 -	@released
 805.691 -	*/
 805.692 -	virtual void CancelIndicationCallback() =0;
 805.693 -	};
 805.694 -
 805.695 -
 805.696 -#endif	// __OBEXSERVER_H
   806.1 --- a/epoc32/include/obextransportinfo.h	Tue Mar 16 16:12:26 2010 +0000
   806.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   806.3 @@ -1,82 +0,0 @@
   806.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   806.5 -// All rights reserved.
   806.6 -// This component and the accompanying materials are made available
   806.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   806.8 -// which accompanies this distribution, and is available
   806.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  806.10 -//
  806.11 -// Initial Contributors:
  806.12 -// Nokia Corporation - initial contribution.
  806.13 -//
  806.14 -// Contributors:
  806.15 -//
  806.16 -// Description:
  806.17 -//
  806.18 -
  806.19 -#ifndef __OBEXTRANSPORTINFO_H__
  806.20 -#define __OBEXTRANSPORTINFO_H__
  806.21 -
  806.22 -#include <e32std.h>
  806.23 -
  806.24 -/**
  806.25 -This class is a combination of the TObexProtocolInfo and TObexProtocolPolicy 
  806.26 -classes.
  806.27 -This class is designed for licensee derivation, to support novel transport 
  806.28 -controllers. Existing superclasses include @c TObexUsbTransportInfo, @c 
  806.29 -TObexUsbV2TransportInfo, @c TObexBtTransportInfo and @c TObexIrTransportInfo. 
  806.30 -It is also designed for 3rd party instantiation, for use when creation a 
  806.31 -CObexServer or a CObexClient.
  806.32 -
  806.33 -Note that, being a T-type, this type and all derived types must hold data by 
  806.34 -value, to support bitwise copying.
  806.35 -
  806.36 -@publishedAll
  806.37 -@released
  806.38 -*/
  806.39 -class TObexTransportInfo
  806.40 -	{
  806.41 -public:
  806.42 -	/**
  806.43 -	The type of the transport over which obex will run.
  806.44 -	The size of the buffer is chosen for historical reasons. This is the size 
  806.45 -	originally used by TObexProtocolInfo.
  806.46 -	@publishedAll
  806.47 -	@released
  806.48 -	*/
  806.49 -	TBuf<60> iTransportName; 
  806.50 -	
  806.51 -	/**
  806.52 -	The version of the protocol policy format that this class supports
  806.53 -	@publishedAll
  806.54 -	@released
  806.55 -	*/
  806.56 -	TUint16 iVersion;
  806.57 -	
  806.58 -	/**
  806.59 -	The maximum size of the receive packet buffer for the policy
  806.60 -	@publishedAll
  806.61 -	@released
  806.62 -	*/
  806.63 -	TUint16 iReceiveMtu;
  806.64 -	
  806.65 -	/**
  806.66 -	The maximum size of the transmit packet buffer for the policy
  806.67 -	@publishedAll
  806.68 -	@released
  806.69 -	*/
  806.70 -	TUint16 iTransmitMtu;
  806.71 -	
  806.72 -	/**	*/
  806.73 -	TUint16 iFuture1;
  806.74 -	
  806.75 -	/**	*/
  806.76 -	TUint32 iFuture2;
  806.77 -	
  806.78 -	/**	*/
  806.79 -	TInt iFuture3;
  806.80 -	
  806.81 -	/**	*/
  806.82 -	TInt iFuture4;
  806.83 -	};
  806.84 -
  806.85 -#endif // __OBEXTRANSPORTINFO_H__
   807.1 --- a/epoc32/include/obextypes.h	Tue Mar 16 16:12:26 2010 +0000
   807.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   807.3 @@ -1,69 +0,0 @@
   807.4 -// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   807.5 -// All rights reserved.
   807.6 -// This component and the accompanying materials are made available
   807.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   807.8 -// which accompanies this distribution, and is available
   807.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  807.10 -//
  807.11 -// Initial Contributors:
  807.12 -// Nokia Corporation - initial contribution.
  807.13 -//
  807.14 -// Contributors:
  807.15 -//
  807.16 -// Description:
  807.17 -//
  807.18 -
  807.19 -
  807.20 -
  807.21 -/**
  807.22 - @file
  807.23 - @publishedAll
  807.24 - @released
  807.25 -*/
  807.26 -
  807.27 -#ifndef __OBEXTYPES_H
  807.28 -#define __OBEXTYPES_H
  807.29 -
  807.30 -#include <e32std.h>
  807.31 -#include <e32des8.h>
  807.32 -#include <e32des16.h>
  807.33 -#include <utf.h> // Required for source compatability
  807.34 -#include <obexconstants.h>
  807.35 -#include <obex/internal/obextransportconstants.h>
  807.36 -
  807.37 -class TObexProtocolInfo;
  807.38 -class TObexIrProtocolInfo;
  807.39 -class TObexBluetoothProtocolInfo;
  807.40 -class TObexUsbProtocolInfo;
  807.41 -class TObexUsbProtocolInfoV2;
  807.42 -class TObexProcotolPolicy;
  807.43 -struct TObexConnectionInfo;
  807.44 -class TObexConnectInfo;
  807.45 -
  807.46 -class CObexPacket;
  807.47 -class CObexHeader;
  807.48 -class CObexUnderlyingHeader;
  807.49 -class MObexHeaderCheck;
  807.50 -class CObexHeaderSet;
  807.51 -class CObexBaseObject;
  807.52 -class CObexFileObject;
  807.53 -class CObexBufObject;
  807.54 -class CObexNullObject;
  807.55 -class MObexNotify;
  807.56 -class MObexAuthChallengeHandler;
  807.57 -class CObexTransport;
  807.58 -class CObexConnector;
  807.59 -class TObexInternalHeader;
  807.60 -class CObexAuthenticator;
  807.61 -class CObex;
  807.62 -class TObexSetPathData;
  807.63 -class CObexClient;
  807.64 -class MObexServerNotify;
  807.65 -class CObexServer;
  807.66 -class CObexServerStateMachine;
  807.67 -class MObexServerNotify;
  807.68 -class MObexServerNotifyAsync;
  807.69 -class CObexServerNotifySyncWrapper;
  807.70 -
  807.71 -
  807.72 -#endif // __OBEXTYPES_H
   808.1 --- a/epoc32/include/obexusbtransportinfo.h	Tue Mar 16 16:12:26 2010 +0000
   808.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   808.3 @@ -1,56 +0,0 @@
   808.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   808.5 -// All rights reserved.
   808.6 -// This component and the accompanying materials are made available
   808.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   808.8 -// which accompanies this distribution, and is available
   808.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  808.10 -//
  808.11 -// Initial Contributors:
  808.12 -// Nokia Corporation - initial contribution.
  808.13 -//
  808.14 -// Contributors:
  808.15 -//
  808.16 -// Description:
  808.17 -//
  808.18 -
  808.19 -#ifndef __OBEXUSBTRANSPORTINFO_H__
  808.20 -#define __OBEXUSBTRANSPORTINFO_H__
  808.21 -
  808.22 -#include "obextransportinfo.h"
  808.23 -#include <obexconstants.h>
  808.24 -
  808.25 -/**
  808.26 -Concrete transport info type for use when using the usb  transport controller.
  808.27 -@publishedAll
  808.28 -@released
  808.29 -*/
  808.30 -NONSHARABLE_CLASS(TObexUsbTransportInfo) : public TObexTransportInfo
  808.31 -	{	
  808.32 -//Data from TObexUsbProtocolInfo class, declared in obex\public\obexconstants.h
  808.33 -public:
  808.34 -		/** Provides a string to be attached to the Obex function's Communication Class interface,
  808.35 -		which may be used to identify the Obex service. */
  808.36 -		TBuf16<KUsbIntStringDescLength> iInterfaceStringDescriptor;
  808.37 -	};
  808.38 -
  808.39 -/**
  808.40 -Concrete transport info type when using the USB transport controller with client driver extensions.
  808.41 -@publishedAll
  808.42 -@released
  808.43 -*/
  808.44 -NONSHARABLE_CLASS(TObexUsbV2TransportInfo) : public TObexUsbTransportInfo
  808.45 -	{
  808.46 -		
  808.47 -	//Data from TObexUsbProtocolInfoV2 class, declared in obex\public\obexconstants.h
  808.48 -public:
  808.49 -	/** Bitmap containing the bandwidth priorities to use on IN and OUT endpoints
  808.50 -	@see TUsbcBandwidthPriority
  808.51 -	*/
  808.52 -	TInt iBandwidthPriority;
  808.53 -	/** Specifies whether to use DMA on the bulk OUT endpoint */
  808.54 -	TBool iDmaOnOutEndpoint;
  808.55 -	/** Specifies whether to use DMA on the bulk IN endpoint */
  808.56 -	TBool iDmaOnInEndpoint;
  808.57 -	};
  808.58 -
  808.59 -#endif
   809.1 --- a/epoc32/include/phbksync.h	Tue Mar 16 16:12:26 2010 +0000
   809.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   809.3 @@ -1,358 +0,0 @@
   809.4 -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
   809.5 -// All rights reserved.
   809.6 -// This component and the accompanying materials are made available
   809.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   809.8 -// which accompanies this distribution, and is available
   809.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  809.10 -//
  809.11 -// Initial Contributors:
  809.12 -// Nokia Corporation - initial contribution.
  809.13 -//
  809.14 -// Contributors:
  809.15 -//
  809.16 -// Description:
  809.17 -// Phonebook Synchroniser API header file.
  809.18 -// Describes the Phonebook Synchroniser API for use by clients of the
  809.19 -// Phonebook Synchroniser Server.
  809.20 -// 
  809.21 -//
  809.22 -
  809.23 -
  809.24 -
  809.25 -/**
  809.26 - @file
  809.27 - @publishedAll
  809.28 - @released
  809.29 -*/
  809.30 -
  809.31 -#ifndef __PHBKSYNC_H__
  809.32 -#define __PHBKSYNC_H__
  809.33 -
  809.34 -#include <e32std.h>
  809.35 -#include <cntdef.h>
  809.36 -#include <cntdb.h>
  809.37 -#include <cntitem.h>
  809.38 -#include <cntfldst.h>
  809.39 -
  809.40 -/**
  809.41 - *  Index not supplied.
  809.42 - */
  809.43 -const TInt KSyncIndexNotSupplied=-1;
  809.44 -
  809.45 -
  809.46 -//
  809.47 -// TUid Phonebook Types used by Contacts Model 
  809.48 -//
  809.49 -#define KUidIccPhonebookNotSpecifiedValue    0x101F7874
  809.50 -#define KUidIccGlobalAdnPhonebookValue       0x101F7875
  809.51 -#define KUidIccGlobalSdnPhonebookValue       0x101F7876
  809.52 -#define KUidIccGlobalLndPhonebookValue       0x101F7877
  809.53 -#define KUidUsimAppAdnPhonebookValue         0x101F7878
  809.54 -#define KUidIccGlobalFdnPhonebookValue       0x101FB2AF
  809.55 -
  809.56 -const TUid  KUidIccPhonebookNotSpecified = {KUidIccPhonebookNotSpecifiedValue};
  809.57 -const TUid  KUidIccGlobalAdnPhonebook    = {KUidIccGlobalAdnPhonebookValue};
  809.58 -const TUid  KUidIccGlobalSdnPhonebook    = {KUidIccGlobalSdnPhonebookValue};
  809.59 -const TUid  KUidIccGlobalLndPhonebook    = {KUidIccGlobalLndPhonebookValue};
  809.60 -const TUid  KUidUsimAppAdnPhonebook      = {KUidUsimAppAdnPhonebookValue};
  809.61 -const TUid  KUidIccGlobalFdnPhonebook    = {KUidIccGlobalFdnPhonebookValue};
  809.62 -
  809.63 -
  809.64 -/**
  809.65 - *  Types of cancel requests for the asynchronous server requests.
  809.66 - *
  809.67 - *  @see RPhoneBookSession::CancelRequest
  809.68 - */
  809.69 -enum TPhonebookSyncRequestCancel
  809.70 -	{
  809.71 -	/** Cancel the asynchronous RPhoneBookSession::DoSynchronisation() request */
  809.72 -	EDoSynchronisationCancelClient,
  809.73 -
  809.74 -	/** Cancel the asynchronous RPhoneBookSession::DeleteContact() request */
  809.75 -	ESyncDeleteCntFromICCCancelClient,
  809.76 -
  809.77 -	/** Cancel the asynchronous RPhoneBookSession::WriteContact() request */
  809.78 -	ESyncWriteCntToICCCancelClient,
  809.79 -
  809.80 -	/** Cancel the asynchronous RPhoneBookSession::NotifyPhBkCacheStateChange() request */
  809.81 -	ESyncNotifyCacheStateChangeCancelClient
  809.82 -	};
  809.83 -
  809.84 -
  809.85 -/**
  809.86 - *  Class to hold the contact field formats.
  809.87 - *
  809.88 - *  @publishedAll
  809.89 - *  @released
  809.90 - */
  809.91 -class TContactFieldFormat
  809.92 -	{
  809.93 -public:
  809.94 -	TContactFieldFormat(TInt aLength, TInt aCount, TBool aDisplayed);
  809.95 -
  809.96 -public:
  809.97 -	/** The maximum length (i.e. number of characters) of the field. If the field is 
  809.98 -	not a string type this attribute should be ignored. */
  809.99 -	TInt  iLength;
 809.100 -
 809.101 -	/** The maximum number of instances of this field within an item. This is set to 
 809.102 -	-1 if this is unlimited. */
 809.103 -	TInt  iCount;
 809.104 -
 809.105 -	/** Indicates whether this is displayed or hidden. */
 809.106 -	TBool iDisplayed;
 809.107 -	};
 809.108 -
 809.109 -
 809.110 -//
 809.111 -// Forward declare the internal data storage class.
 809.112 -//
 809.113 -class CSyncClientData;
 809.114 -
 809.115 -/**
 809.116 - *  Provides the CPhoneBookSyncPlugin client access to a session with the
 809.117 - *  Phonebook Synchronizer Server. 
 809.118 - *
 809.119 - *  A handle to an RPhoneBookSession enables the plug-in class to perform
 809.120 - *  IPC communications with the server.
 809.121 - *
 809.122 - *  @publishedAll
 809.123 - *  @released
 809.124 - */
 809.125 -class RPhoneBookSession : public RSessionBase
 809.126 -	{
 809.127 -public:
 809.128 -	/**
 809.129 -	 *  Structure holding the template ID and buffer size. The client has
 809.130 -	 *  no need to use this structure.
 809.131 -	 *
 809.132 -	 *  @deprecated
 809.133 -	 */
 809.134 -	struct TTemplateAndBufferSize
 809.135 -		{
 809.136 -		TContactItemId  templateId;
 809.137 -		TInt  bufferSize;
 809.138 -		};
 809.139 -
 809.140 -	/**
 809.141 -	 *  The synchronisation mode for phonebooks when the server starts.
 809.142 -	 */
 809.143 -	enum TPhonebookSyncMode
 809.144 -		{
 809.145 -		/** Automatic synchronisation will be performed. */
 809.146 -		EAutoCurrentIcc,
 809.147 -
 809.148 -		/** Automatic synchronisation will only be performed if the current ICC is
 809.149 -		    the same as the last ICC to be synchonised. */
 809.150 -		EAutoSameIcc,
 809.151 -
 809.152 -		/** Manual synchronisation will be performed when requested. */
 809.153 -		EManual
 809.154 -		};
 809.155 -
 809.156 -	/**
 809.157 -	 *  The phonebook cache state.
 809.158 -	 */
 809.159 -	enum TSyncState
 809.160 -		{
 809.161 -		/** The server has not yet populated the Contacts Database. */
 809.162 -		EUnsynchronised,
 809.163 -
 809.164 -		/** The server has finished populating the Contacts Database. */
 809.165 -		ECacheValid,
 809.166 -
 809.167 -		/** The server encountered an error populating the Contacts Database. */
 809.168 -		EErrorDuringSync
 809.169 -		};
 809.170 -
 809.171 -	/**
 809.172 -	 *  Specifies format of phonebook fields within an ICC phonebook entry.
 809.173 -	 *
 809.174 -	 *  @publishedAll
 809.175 -	 *  @released
 809.176 -	 */
 809.177 -	class TContactFieldsV1  
 809.178 -		{
 809.179 -	public:
 809.180 -		/**
 809.181 -		 *  Enumeration to describe the version ID of the Phonebook Synchronizer.
 809.182 -		 */
 809.183 -		enum TContactFieldsExtensionId
 809.184 -			{
 809.185 -			/** Phonebook Synchronizer version 1 */
 809.186 -			KPhBkSyncTContactFieldsV1,
 809.187 -
 809.188 -			/** Phonebook Synchronizer version 2 */
 809.189 -			KPhBkSyncTContactFieldsV2,
 809.190 -
 809.191 -			/** Phonebook Synchronizer version 3 */
 809.192 -			KPhBkSyncTContactFieldsV3
 809.193 -			};
 809.194 -
 809.195 -		/**
 809.196 -		 *  Returns the Phonebook Synchronizer API extension number of the class.
 809.197 -		 *
 809.198 -		 *  @return  The version ID from TContactFieldsExtensionId.
 809.199 -		 */
 809.200 -		IMPORT_C TInt ExtensionId() const;
 809.201 -
 809.202 -		/**
 809.203 -		 *  Standard constructor.
 809.204 -		 */
 809.205 -		IMPORT_C TContactFieldsV1();
 809.206 -
 809.207 -	public:
 809.208 -		/** The format of the name field within an ICC phonebook entry. */
 809.209 -		TContactFieldFormat  iNameField;
 809.210 -
 809.211 -		/** The format of the number field within an ICC phonebook entry. */
 809.212 -		TContactFieldFormat  iNumberField;
 809.213 -
 809.214 -		/** The format of the ICC slot number field within an ICC phonebook entry. */
 809.215 -		TContactFieldFormat  iIccSlotField;
 809.216 -
 809.217 -	protected:
 809.218 -		TInt  iExtensionId;
 809.219 -		};
 809.220 -
 809.221 -	/**
 809.222 -	 *  A packaged instance of TContactFieldsV1.
 809.223 -	 */
 809.224 -	typedef TPckg<TContactFieldsV1>  TContactFieldsV1Pckg;
 809.225 -
 809.226 -	/**
 809.227 -	 *  Specifies format of phonebook fields within an UICC phonebook entry
 809.228 -	 *
 809.229 -	 *  @publishedAll
 809.230 -	 *  @released
 809.231 -	 */
 809.232 -	class TContactFieldsV2 : public TContactFieldsV1 
 809.233 -		{
 809.234 -	public:
 809.235 -		IMPORT_C TContactFieldsV2();
 809.236 -
 809.237 -	public:
 809.238 -		/** The format of any additional number fields within an ICC phonebook entry. */
 809.239 -		TContactFieldFormat  iAdditionalNumString;
 809.240 -
 809.241 -		/** The format of group field within an ICC phonebook entry. */
 809.242 -		TContactFieldFormat  iGroupField;
 809.243 -
 809.244 -		/** The format of email field within an ICC phonebook entry. */
 809.245 -		TContactFieldFormat  iEmailField;
 809.246 -
 809.247 -		/** The UID of the phonebook. */
 809.248 -		TUid  iPhonebook;
 809.249 -		};
 809.250 -
 809.251 -	/**
 809.252 -	 *  A packaged instance of TContactFieldsV2.
 809.253 -	 */
 809.254 -	typedef TPckg<TContactFieldsV2>  TContactFieldsV2Pckg;
 809.255 -
 809.256 -
 809.257 -	/**
 809.258 -	 *  Specifies additional format information for phonebook fields within a
 809.259 -	 *  UICC phonebook entry.
 809.260 -	 *
 809.261 -	 *  @publishedAll
 809.262 -	 *  @released
 809.263 -	 */
 809.264 -	class TContactFieldsV3 : public TContactFieldsV2 
 809.265 -		{
 809.266 -	public:
 809.267 -		IMPORT_C TContactFieldsV3();
 809.268 -
 809.269 -	public:
 809.270 -		/** The format of an addition number's text field within an ICC phonebook entry. */
 809.271 -		TContactFieldFormat  iAdditionalNumAlphaString;
 809.272 -
 809.273 -		/** The format of the second name field within an ICC phonebook entry. */
 809.274 -		TContactFieldFormat  iSecondNameField;
 809.275 -		};
 809.276 -
 809.277 -	/**
 809.278 -	 *  A packaged instance of TContactFieldsV3.
 809.279 -	 */
 809.280 -	typedef TPckg<TContactFieldsV3>  TContactFieldsV3Pckg;
 809.281 -
 809.282 -
 809.283 -	/**
 809.284 -	 *  The phonebook ID type requested from a phonebook. There are two types of IDs
 809.285 -	 *  (group IDs and template IDs).
 809.286 -	 *
 809.287 -	 *  @see RPhoneBookSession::GetPhoneBookId()
 809.288 -	 */
 809.289 -	enum TSyncIdType
 809.290 -		{
 809.291 -		/** Used to allocate a new entry to the right group in the Contacts Database. */
 809.292 -		ESyncGroupId,
 809.293 -
 809.294 -		/** Used to define new ICC entries in the Contacts Database. */
 809.295 -		ESyncTemplateId
 809.296 -		};
 809.297 -
 809.298 -public:
 809.299 -	IMPORT_C RPhoneBookSession();
 809.300 -	IMPORT_C TInt Connect();
 809.301 -	IMPORT_C void Close();
 809.302 -	IMPORT_C TVersion Version() const;
 809.303 -	IMPORT_C TInt ShutdownServer (TBool aUnconditionally);
 809.304 -
 809.305 -	//
 809.306 -	// Single (ADN) phonebook support and functions not requiring a phonebook UID.
 809.307 -	//
 809.308 -	IMPORT_C void DoSynchronisation(TRequestStatus& aReqStatus);
 809.309 -	IMPORT_C TInt ValidateContact(MContactSynchroniser::TValidateOperation aOperation, TContactItemId aId);
 809.310 -	IMPORT_C void WriteContact(TRequestStatus& aReqStatus, CContactICCEntry& aContactItem, 
 809.311 -							   TInt& aSlotNumber);
 809.312 -	IMPORT_C void DeleteContact(TRequestStatus& aReqStatus, TContactItemId aId);
 809.313 -	IMPORT_C TInt GetPhoneBookId(TContactItemId& aId, TSyncIdType aIdType);
 809.314 -	IMPORT_C TInt UpdateLookuptable(TContactItemId aNewUid, TInt aIccSlot);
 809.315 -	IMPORT_C TInt GetContactFormat(TDes8& aContactFields);
 809.316 -	IMPORT_C TInt GetSyncMode(TPhonebookSyncMode& aSyncMode);
 809.317 -	IMPORT_C TInt SetSyncMode(TPhonebookSyncMode aSyncMode);
 809.318 -	IMPORT_C TInt GetPhoneBookCacheState(TSyncState& aState);
 809.319 -	IMPORT_C void CancelRequest(TPhonebookSyncRequestCancel aReqToCancel);
 809.320 -	IMPORT_C TInt GetLastSyncError(TInt& aError);
 809.321 -	IMPORT_C void NotifyPhBkCacheStateChange(TRequestStatus& aStatus);
 809.322 -	IMPORT_C TInt GetNumSlots(TInt& aNumSlots) const;
 809.323 -	IMPORT_C void GetFreeSlotsL(RArray<TInt>& aFreeSlots) const;
 809.324 -	IMPORT_C TInt GetSlotId(TInt aSlot, TContactItemId& aId) const;
 809.325 -
 809.326 -	//
 809.327 -	// Multiple phonebooks support. These should be used in preference to the above
 809.328 -	// ADN specific versions.
 809.329 -	//
 809.330 -	IMPORT_C void DoSynchronisation(TRequestStatus& aReqStatus, TUid aPhonebookUid);
 809.331 -	IMPORT_C void WriteContact(TRequestStatus& aReqStatus, CContactICCEntry& aContactItem, 
 809.332 -							   TInt& aSlotNumber, TUid& aPhonebookUid);
 809.333 -	IMPORT_C TInt GetPhoneBookId(TContactItemId& aId, TSyncIdType aIdType, TUid aPhonebookUid);
 809.334 -	IMPORT_C TInt UpdateLookuptable(TContactItemId aNewUid, TInt aIccSlot, TUid aPhonebookUid);
 809.335 -	IMPORT_C TInt GetSyncMode(TPhonebookSyncMode& aSyncMode, TUid aPhonebookId);
 809.336 -	IMPORT_C TInt SetSyncMode(TPhonebookSyncMode aSyncMode, TUid aPhonebookId);
 809.337 -	IMPORT_C TInt GetPhoneBookCacheState(TSyncState& aState, TUid aPhonebookId);
 809.338 -	IMPORT_C void CancelRequest(TPhonebookSyncRequestCancel aReqToCancel, TUid aPhonebookId);
 809.339 -	IMPORT_C TInt GetLastSyncError(TInt& aError, TUid aPhonebookId);
 809.340 -	IMPORT_C void NotifyPhBkCacheStateChange(TRequestStatus& aStatus, TUid aPhonebookId);
 809.341 -	IMPORT_C TInt GetNumSlots(TInt& aNumSlots, TUid aPhonebookId) const;
 809.342 -	IMPORT_C void GetFreeSlotsL(RArray<TInt>& aFreeSlots, TUid aPhonebookId) const;
 809.343 -	IMPORT_C TInt GetSlotId(TInt aSlot, TContactItemId& aId, TUid aPhonebookId) const;
 809.344 -
 809.345 -	//
 809.346 -	// Memory checking functionality for Debug builds only.
 809.347 -	//
 809.348 -	IMPORT_C TInt __DbgMarkHeap();
 809.349 -	IMPORT_C TInt __DbgCheckHeap(TInt aCount);
 809.350 -	IMPORT_C TInt __DbgMarkEnd(TInt aCount);
 809.351 -	IMPORT_C TInt __DbgFailNext(TInt aCount);
 809.352 -
 809.353 -private:
 809.354 -	RPhoneBookSession(const RPhoneBookSession& aSession);
 809.355 -
 809.356 -private:
 809.357 -	/* Temporary data used by the session. */
 809.358 -	CSyncClientData*  iData;
 809.359 -	};
 809.360 -
 809.361 -#endif
   810.1 --- a/epoc32/include/platform_paths.hrh	Tue Mar 16 16:12:26 2010 +0000
   810.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   810.3 @@ -1,585 +0,0 @@
   810.4 -/*
   810.5 -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
   810.6 -* All rights reserved.
   810.7 -* This component and the accompanying materials are made available
   810.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   810.9 -* which accompanies this distribution, and is available
  810.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  810.11 -*
  810.12 -* Initial Contributors:
  810.13 -* Nokia Corporation - initial contribution.
  810.14 -*
  810.15 -* Contributors:
  810.16 -*
  810.17 -* Description:  Predefined include paths to be used in the mmp-files for the 
  810.18 -*                components in the layered model. There is one definition for
  810.19 -*                each layer. The mmp-file should use the statement that is 
  810.20 -*                intended for the same layer as where the mmp-file resides.
  810.21 -*
  810.22 -*                There is also macros to be used in the bld.inf-files to 
  810.23 -*                export of Public  and Platform headers into 
  810.24 -*                correct locations. 
  810.25 -*
  810.26 -* Usage examples:
  810.27 -*     ---------------------------------------------
  810.28 -*      How to include this file in bld.inf and mmp-files.
  810.29 -*       Reasoning: The build system is such that at the time the 
  810.30 -*                  bld.inf and mmp-files are "compiled" the available
  810.31 -*                  include paths are limited. Only the /epoc32/include
  810.32 -*                  can be guaranteed. Thus to get this file available
  810.33 -*                  you need to make include relative to the mentioned
  810.34 -*                  directory. 
  810.35 -*     ---------------------------------------------
  810.36 -*
  810.37 -*      #include <platform_paths.hrh>
  810.38 -*    
  810.39 -*     *************************************************************
  810.40 -*     * MMP file related macro usages to add the system include paths
  810.41 -*     * 
  810.42 -*     * The include paths has to be related to the layer in which your SW 
  810.43 -*     * resides. Thus as an example: a component residing in middleware
  810.44 -*     * layer should use the MW specific macro.
  810.45 -*     * Keep this as a separate line in the mmp-files. If you need to
  810.46 -*     * add your own SYSTEMINCLUDE paths, please defined them as
  810.47 -*     * separate statement.
  810.48 -*     *************************************************************
  810.49 -*         APP_LAYER_SYSTEMINCLUDE
  810.50 -*         MW_LAYER_SYSTEMINCLUDE
  810.51 -*         OS_LAYER_SYSTEMINCLUDE
  810.52 -**
  810.53 -*     *************************************************************
  810.54 -*     * Macros related to using various parts of stdapis
  810.55 -*     *************************************************************
  810.56 -*       To use STLLIB you need to have this in your mmp-file
  810.57 -*         STLLIB_USAGE_DEFINITIONS
  810.58 -*
  810.59 -*       Depending on what module you are using from stdapis you need to have
  810.60 -*       one or more of the following macros in your mmp-file (every one in 
  810.61 -*       separate line !)
  810.62 -*
  810.63 -*          OS_LAYER_LIBC_SYSTEMINCLUDE
  810.64 -*          OS_LAYER_GLIB_SYSTEMINCLUDE
  810.65 -*          OS_LAYER_SSL_SYSTEMINCLUDE
  810.66 -*          OS_LAYER_STDCPP_SYSTEMINCLUDE
  810.67 -*          OS_LAYER_BOOST_SYSTEMINCLUDE
  810.68 -*          OS_LAYER_DBUS_SYSTEMINCLUDE
  810.69 -*          OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
  810.70 -*
  810.71 -*     *************************************************************
  810.72 -*     * Macros related to exporting Public and Platform APIs into 
  810.73 -*     * correct place in the new system. 
  810.74 -*     *
  810.75 -*     * The macro that you should use depends on 2 things:
  810.76 -*     *  - in which layer your package, which exports the APIs resides
  810.77 -*     *  - what is the visibility of the API (public or platform)
  810.78 -*     *************************************************************
  810.79 -*      // the exporting of public APIs should use one of below macros
  810.80 -*      // depending on which layer the API belogs to
  810.81 -*      APP_LAYER_PUBLIC_EXPORT_PATH
  810.82 -*      MW_LAYER_PUBLIC_EXPORT_PATH
  810.83 -*      OS_LAYER_PUBLIC_EXPORT_PATH
  810.84 -*
  810.85 -*      // the exporting of platform APIs should use one of below macros
  810.86 -*      // depending on which layer the API belogs to
  810.87 -*      APP_LAYER_PLATFORM_EXPORT_PATH
  810.88 -*      MW_LAYER_PLATFORM_EXPORT_PATH
  810.89 -*      OS_LAYER_PLATFORM_EXPORT_PATH
  810.90 -*
  810.91 -*      The hierarchy how APIs should reside in foundation has been specified
  810.92 -*      in developer documentation. See further details from documentation.
  810.93 -*      Below is example case relying on the structure
  810.94 -*        my_own_api/group/bld.inf
  810.95 -*        my_own_api/inc/header1.h
  810.96 -*        my_own_api/inc/subdir/header2.h
  810.97 -*  
  810.98 -*      Assuming that the API is in middleware layer and a public API. 
  810.99 -*      Then the bld.inf should have the following      
 810.100 -*        ../inc/header1.h  APP_LAYER_PUBLIC_EXPORT_PATH(header1.h)
 810.101 -*        ../inc/subdir/header2.h  APP_LAYER_PUBLIC_EXPORT_PATH(subdir/header2.h)
 810.102 -*  
 810.103 -*      In the above case the locations are as follow (with current MACRO settings):
 810.104 -*        header1.h in /epoc32/include/app
 810.105 -*        header2.h in /epoc32/include/app/subdir
 810.106 -*
 810.107 -*
 810.108 -*     *************************************************************
 810.109 -*     * Macros related to IBY file exporting
 810.110 -*     *************************************************************
 810.111 -*			
 810.112 -*	    Component bld.inf files need to include platform_paths.hrh, see
 810.113 -*           beginning of this file on how to do this correctly. Component bld.inf 
 810.114 -*           files need to use these macros in PRJ_EXPORTS to get their IBY files 
 810.115 -*           to ROM image.
 810.116 -*
 810.117 -*     ---------------------------------------------
 810.118 -*     Usage for Core image (ROM+ROFS1):
 810.119 -*     ---------------------------------------------
 810.120 -*	 // Layer specific specific macros. Use the macro, which is specified
 810.121 -*        // for the layer, in which your component resides
 810.122 -*        <somepath>/<file1.iby>  CORE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
 810.123 -*	 <somepath>/<file2.iby>  CORE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
 810.124 -*	 <somepath>/<file3.iby>  CORE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)
 810.125 -*
 810.126 -*	 //stub iby files
 810.127 -*	 <somepath>/<file4.iby>  CORE_IBY_EXPORT_PATH(stubs,<file4.iby>)
 810.128 -*	 //tool iby files
 810.129 -*	 <somepath>/<file5.iby>  CORE_IBY_EXPORT_PATH(tools,<file5.iby>)
 810.130 -*		
 810.131 -*     ---------------------------------------------
 810.132 -*     Usage for Variant image, Language part (ROFS2):
 810.133 -*     ---------------------------------------------
 810.134 -*	 // Layer specific specific macros. Use the macro, which is specified
 810.135 -*        // for the layer, in which your component resides
 810.136 -*        <somepath>/<file1.iby>  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
 810.137 -*	 <somepath>/<file2.iby>  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
 810.138 -*	 <somepath>/<file3.iby>  LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
 810.139 -*
 810.140 -*     ---------------------------------------------
 810.141 -*     Usage for Variant image, Language part  (ROFS2):
 810.142 -*     ---------------------------------------------
 810.143 -*	 // Layer specific specific macros. Use the macro, which is specified
 810.144 -*        // for the layer, in which your component resides
 810.145 -*        <somepath>/<file1.iby>  CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
 810.146 -*	 <somepath>/<file2.iby>  CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
 810.147 -*	 <somepath>/<file3.iby>  CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
 810.148 -*
 810.149 -*     ---------------------------------------------
 810.150 -*     Usage for Customer Variant image, (ROFS3):
 810.151 -*     ---------------------------------------------
 810.152 -*	 // Layer specific specific macros. Use the macro, which is specified
 810.153 -*        // for the layer, in which your component resides
 810.154 -*        <somepath>/<f1.iby> CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(<f1.iby>)
 810.155 -*	 <somepath>/<f2.iby> CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(<f2.iby>)
 810.156 -*	 <somepath>/<f3.iby> CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(<f3.iby>)			
 810.157 -*	
 810.158 -*
 810.159 -*     *************************************************************
 810.160 -*     * Macro related to Exporting localization .loc files into 
 810.161 -*     * correct place in the system. 
 810.162 -*     *************************************************************
 810.163 -*
 810.164 -*     ---------------------------------------------
 810.165 -*     Usage for components:
 810.166 -*     ---------------------------------------------
 810.167 -*	    Component bld.inf files need to include platform_paths.hrh, see
 810.168 -*           beginning of this file on how to do this correctly. Component bld.inf 
 810.169 -*           files need to use these macros in PRJ_EXPORTS to get their loc files 
 810.170 -*           for localization.
 810.171 -*     loc files that should be localized by localisation team should be in 
 810.172 -*     loc-folder in the source tree (see developer guidelines)
 810.173 -*
 810.174 -*	 // Layer specific specific macros. Use the macro, which is specified
 810.175 -*        // for the layer, in which your component resides
 810.176 -*	 <somepath>/loc/<file>.loc  APP_LAYER_LOC_EXPORT_PATH(<file>.loc)
 810.177 -*	 <somepath>/loc/<file>.loc  MW_LAYER_LOC_EXPORT_PATH(<file>.loc)
 810.178 -*	 <somepath>/loc/<file>.loc  OS_LAYER_LOC_EXPORT_PATH(<file>.loc)
 810.179 -*
 810.180 -* 
 810.181 -*
 810.182 -*
 810.183 -*/
 810.184 -
 810.185 -
 810.186 -#ifndef PLATFORM_PATHS_HRH
 810.187 -#define PLATFORM_PATHS_HRH
 810.188 -
 810.189 -/**
 810.190 -**************************************************************************
 810.191 -* General comments about the exporting of headers macros
 810.192 -*  1) The definitions point currently to the old locations. (which makes some 
 810.193 -*     macros to have same values. The idea is that you can already start using
 810.194 -*     them now and those will be later on changed => change affects everybody.
 810.195 -***************************************************************************
 810.196 -*/
 810.197 -
 810.198 -/**
 810.199 -* ---------------------------------------
 810.200 -* Location, where the applications layer specific public headers should be exported
 810.201 -* See usage on top of this hrh-file.
 810.202 -* ---------------------------------------
 810.203 -*/
 810.204 -
 810.205 -#if __GNUC__ >= 3
 810.206 -#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
 810.207 -#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/exported
 810.208 -#else
 810.209 -#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
 810.210 -#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/##exported
 810.211 -#endif
 810.212 -
 810.213 -/**
 810.214 -* ---------------------------------------
 810.215 -* Location, where the applications layer specific platform headers should be exported
 810.216 -* See usage on top of this hrh-file.
 810.217 -* ---------------------------------------
 810.218 -*/
 810.219 -#if __GNUC__ >= 3
 810.220 -#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
 810.221 -#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/exported
 810.222 -#else
 810.223 -#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
 810.224 -#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/##exported
 810.225 -#endif
 810.226 -
 810.227 -/**
 810.228 -* ---------------------------------------
 810.229 -* Location, where the middleware layer specific public headers should be exported
 810.230 -* See usage on top of this hrh-file.
 810.231 -* ---------------------------------------
 810.232 -*/
 810.233 -#if __GNUC__ >= 3
 810.234 -#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
 810.235 -#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/exported
 810.236 -#else
 810.237 -#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
 810.238 -#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/##exported
 810.239 -#endif
 810.240 -
 810.241 -/**
 810.242 -* ---------------------------------------
 810.243 -* Location, where the middleware layer specific platform headers should be exported
 810.244 -* ---------------------------------------
 810.245 -*/
 810.246 -#if __GNUC__ >= 3
 810.247 -#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
 810.248 -#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/exported
 810.249 -#else
 810.250 -#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
 810.251 -#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/##exported
 810.252 -#endif
 810.253 -
 810.254 -/**
 810.255 -* ---------------------------------------
 810.256 -* Location, where the os layer specific public headers should be exported
 810.257 -* ---------------------------------------
 810.258 -*/
 810.259 -#if __GNUC__ >= 3
 810.260 -#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
 810.261 -#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/exported
 810.262 -#else
 810.263 -#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
 810.264 -#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
 810.265 -#endif
 810.266 -
 810.267 -/**
 810.268 -* ---------------------------------------
 810.269 -* Location, where the os specific platform headers should be exported
 810.270 -* ---------------------------------------
 810.271 -*/
 810.272 -#if __GNUC__ >= 3
 810.273 -#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
 810.274 -#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/exported
 810.275 -#else
 810.276 -#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
 810.277 -#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/##exported
 810.278 -#endif
 810.279 -
 810.280 -/**
 810.281 -* ---------------------------------------
 810.282 -* Location, where the  cenrep excel sheets should be exported
 810.283 -* Deprecated: should no longer be used. Kept for compability.
 810.284 -* ---------------------------------------
 810.285 -*/
 810.286 -#if __GNUC__ >= 3
 810.287 -#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/exported
 810.288 -#else
 810.289 -#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
 810.290 -#endif
 810.291 -
 810.292 -/**
 810.293 -**************************************************************************
 810.294 -*  General comments about the 3 define statements related to include paths:
 810.295 -*  1) the /epoc32/include/oem is now defined there for backward compability.
 810.296 -*     Once the directory is empty, the directory will be removed. However this 
 810.297 -*     enables us to ensure that if you use these define statements => you do 
 810.298 -*     not have to remove the statements later on, when the directory no longer 
 810.299 -*     exists.
 810.300 -*  2) These statements should be enough in normal cases. For certain specific 
 810.301 -*     cases you migth need to add some specific directory from /epoc32/include
 810.302 -*     (for instance /epoc32/include/ecom).
 810.303 -*     In normal cases the include staments in code should be relative to one of 
 810.304 -*     the system include paths, but in certain cases, the included files requires
 810.305 -*     that the subdirectory is also part of the system include paths.
 810.306 -****************************************************************************
 810.307 -*/
 810.308 -
 810.309 -/**
 810.310 -* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
 810.311 -* used in the mmp-files that are part of the applications-layer. It includes all 
 810.312 -* the needed directories from the /epoc32/include, that are valid ones for the 
 810.313 -* application-layer components. 
 810.314 -*
 810.315 -* Applications layer is the last one in the list, since most likely the most of 
 810.316 -* the headers come from middleware or os-layer  => thus they are first.
 810.317 -*/
 810.318 -#define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 810.319 - /epoc32/include \
 810.320 - /epoc32/include/mw \
 810.321 - /epoc32/include/platform/mw \
 810.322 - /epoc32/include/platform \
 810.323 - /epoc32/include/app \
 810.324 - /epoc32/include/platform/app \
 810.325 - /epoc32/include/platform/loc \
 810.326 - /epoc32/include/platform/mw/loc \
 810.327 - /epoc32/include/platform/app/loc \
 810.328 - /epoc32/include/platform/loc/sc \
 810.329 - /epoc32/include/platform/mw/loc/sc \
 810.330 - /epoc32/include/platform/app/loc/sc
 810.331 - 
 810.332 -/**
 810.333 -* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
 810.334 -* used in the mmp-files that are part of the middleware-layer. It includes all 
 810.335 -* the needed directories from the /epoc32/include, that are valid ones for the 
 810.336 -* middleware-layer components. 
 810.337 -*/
 810.338 -#define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 810.339 - /epoc32/include \
 810.340 - /epoc32/include/mw \
 810.341 - /epoc32/include/platform/mw \
 810.342 - /epoc32/include/platform \
 810.343 - /epoc32/include/platform/loc \
 810.344 - /epoc32/include/platform/mw/loc \
 810.345 - /epoc32/include/platform/loc/sc \
 810.346 - /epoc32/include/platform/mw/loc/sc
 810.347 -
 810.348 -/**
 810.349 -* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
 810.350 -* used in the mmp-files that are part of the  osextensions-layer. It includes all
 810.351 -* the needed directories from the /epoc32/include, that are valid ones for the
 810.352 -* os-layer components. 
 810.353 -*/
 810.354 -#define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
 810.355 - /epoc32/include \
 810.356 - /epoc32/include/platform \
 810.357 - /epoc32/include/platform/loc \
 810.358 - /epoc32/include/platform/loc/sc
 810.359 -
 810.360 -// Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
 810.361 -// used.
 810.362 -// Removed, use teh OS_LAYER_SYSTEMINCLUDE instead.
 810.363 -// #define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE
 810.364 -
 810.365 -/**
 810.366 -* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
 810.367 -* used in the mmp-files that are part of the os-layer. This is intended 
 810.368 -* to be only used by those components which need to use in their mmp-file either
 810.369 -* kern_ext.mmh or nkern_ext.mmh. Reason is that those
 810.370 -* 2 files already contain the /epoc32/include  as system include path.
 810.371 -* 
 810.372 -*/
 810.373 -#define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE \
 810.374 - /epoc32/include/platform
 810.375 -
 810.376 -// Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
 810.377 -// has to be used.
 810.378 -// Removed, use the OS_LAYER_KERNER_SYSTEMINCLUDE instead.
 810.379 -// #define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE
 810.380 -
 810.381 -/**
 810.382 -****************************************************************************
 810.383 -* Definitions that also define the systeminclude paths for various
 810.384 -* part of stdapis. Each statement has to be in its own line in the using
 810.385 -* mmp-file. There are be more than 1 statement in single mmp-file.
 810.386 -****************************************************************************
 810.387 -*/
 810.388 -#define OS_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
 810.389 -
 810.390 -#define OS_LAYER_GLIB_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
 810.391 -                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
 810.392 -                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject)
 810.393 -
 810.394 -
 810.395 -#define OS_LAYER_SSL_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
 810.396 -                  
 810.397 -#define OS_LAYER_STDCPP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) 
 810.398 -
 810.399 -#define OS_LAYER_BOOST_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost)
 810.400 -
 810.401 -#define OS_LAYER_DBUS_SYSTEMINCLUDE SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
 810.402 -                                                     OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
 810.403 -#define OS_LAYER_LIBUTILITY_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)
 810.404 -
 810.405 -#define OS_LAYER_LIBOIL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/liboil)
 810.406 -
 810.407 -#define MW_LAYER_GSTREAMER_SYSTEMINCLUDE SYSTEMINCLUDE \
 810.408 - /epoc32/include/platform/mw/gstreamer/10_18 \
 810.409 - /epoc32/include/platform/mw/gstreamer/10_18/gst \
 810.410 - /epoc32/include/platform/mw/gstreamer/10_18/gst/gstcontroller \
 810.411 - /epoc32/include/stdapis/machine
 810.412 -
 810.413 -// You need to add STLLIB_USAGE_DEFINITIONS as a separate line into your mmp-file, if you are using
 810.414 -// the stllib. 
 810.415 -#define STLLIB_USAGE_DEFINITIONS OPTION CW -wchar_t on\
 810.416 -        MACRO _WCHAR_T_DECLARED
 810.417 -
 810.418 -
 810.419 -/**
 810.420 -****************************************************************************
 810.421 -* Definitions that also define the paths to the layer specific source directories.
 810.422 -****************************************************************************
 810.423 -*/
 810.424 -/**
 810.425 -* The below 3 macros define the paths to the layer-specific source dirs.
 810.426 -* See usage on top of this hrh-file, these are used the same way as 
 810.427 -* for instance the OS_LAYER_DOMAIN_EXPORT_PATH
 810.428 -* Deprecated: is not allowed to be using in Symbian Foundation
 810.429 -*/
 810.430 -#if __GNUC__ >= 3
 810.431 -#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
 810.432 -#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
 810.433 -#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
 810.434 -#else
 810.435 -#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
 810.436 -#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
 810.437 -#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
 810.438 -#endif
 810.439 -
 810.440 -/**
 810.441 -****************************************************************************
 810.442 -* Definitions to export IBY files to different folders where they will be taken 
 810.443 -* to ROM image
 810.444 -****************************************************************************
 810.445 -*/
 810.446 -
 810.447 -// Following three definitions are used for exporting IBY files to 
 810.448 -// Core image (ROM+ROFS1). IBY files are exported according to their layer.
 810.449 -#if __GNUC__ >= 3
 810.450 -#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/exported
 810.451 -#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/exported
 810.452 -#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.453 -#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/exported
 810.454 -#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
 810.455 -#else
 810.456 -#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/##exported
 810.457 -#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/##exported
 810.458 -#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.459 -#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/##exported
 810.460 -#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
 810.461 -#endif
 810.462 -
 810.463 -// Following three definitions are used for exporting IBY files to Variant image, 
 810.464 -// Language part (ROFS2). IBY files are exported according to their layer.
 810.465 -#if __GNUC__ >= 3
 810.466 -#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/exported
 810.467 -#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/exported
 810.468 -#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.469 -#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/exported
 810.470 -#else
 810.471 -#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/##exported
 810.472 -#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/##exported
 810.473 -#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.474 -#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/##exported
 810.475 -#endif
 810.476 -
 810.477 -// Following three definitions are used for exporting IBY files to Variant image, (ROFS2). 
 810.478 -// BY files are exported according to their layer.
 810.479 -#if __GNUC__ >= 3
 810.480 -#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/exported
 810.481 -#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/exported
 810.482 -#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.483 -#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/exported
 810.484 -#else
 810.485 -#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/##exported
 810.486 -#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/##exported
 810.487 -#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.488 -#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/##exported
 810.489 -#endif
 810.490 -
 810.491 -// Following three definitions are used for exporting IBY files to 
 810.492 -// Variant Customer part, (ROFS3). IBY files are exported according to 
 810.493 -// their layer.
 810.494 -#if __GNUC__ >= 3
 810.495 -#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/exported
 810.496 -#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/exported
 810.497 -#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.498 -#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/exported
 810.499 -#else
 810.500 -#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/##exported
 810.501 -#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/##exported
 810.502 -#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
 810.503 -#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/##exported
 810.504 -#endif
 810.505 -
 810.506 -
 810.507 -// Following definition is used for exporting tools and stubs IBY files to 
 810.508 -// Core image.
 810.509 -#if __GNUC__ >= 3
 810.510 -#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/path/exported
 810.511 -#else
 810.512 -#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/##path##/##exported
 810.513 -#endif
 810.514 -
 810.515 -/**
 810.516 -* ---------------------------------------
 810.517 -* Location, where the localization .loc file should be exported
 810.518 -* ---------------------------------------
 810.519 -*/
 810.520 -// Location, where the os layer localization .loc file should be 
 810.521 -// exported
 810.522 -#if __GNUC__ >= 3
 810.523 -// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
 810.524 -#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
 810.525 -#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/exported
 810.526 -
 810.527 -// Location, where the middleware layer localization .loc file should be 
 810.528 -// exported
 810.529 -#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/exported
 810.530 -
 810.531 -// Location, where the application layer localization .loc file should be 
 810.532 -// exported
 810.533 -#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/exported
 810.534 -
 810.535 -#else
 810.536 -
 810.537 -// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
 810.538 -#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
 810.539 -#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/##exported
 810.540 -
 810.541 -// Location, where the middleware layer localization .loc file should be exported
 810.542 -#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/##exported
 810.543 -
 810.544 -// Location, where the application layer localization .loc file should be exported
 810.545 -#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/##exported
 810.546 -#endif
 810.547 -
 810.548 -/**
 810.549 -* ---------------------------------------
 810.550 -* Macros for Configuration tool migration. 
 810.551 -* The below macros define the location under epoc32, where the confml 
 810.552 -* (Configuration Markup Language) and crml (Central Repository Markup Language) 
 810.553 -* files should be exported.
 810.554 -* ---------------------------------------
 810.555 -*/
 810.556 -#if __GNUC__ >= 3
 810.557 -#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/category/file
 810.558 -#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/category/file
 810.559 -#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/category/file
 810.560 -#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/category/config/file
 810.561 -#else
 810.562 -#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/##category##/##file
 810.563 -#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/##category##/##file
 810.564 -#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/##category##/##file
 810.565 -#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/##category##/config/##file
 810.566 -#endif
 810.567 -
 810.568 -#define APP_LAYER_CONFML(exported)                  CONFML_EXPORT_PATH(exported,s60)
 810.569 -#define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
 810.570 -#define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
 810.571 -#define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
 810.572 -                                                    
 810.573 -#define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
 810.574 -#define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
 810.575 -#define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
 810.576 -#define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
 810.577 -       
 810.578 -// Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
 810.579 -#define OSEXT_LAYER_CONFML(exported)                do not use intentionally generates error
 810.580 -#define OSEXT_LAYER_CRML(exported)                  do not use intentionally generates error
 810.581 -#define OSEXT_LAYER_GCFML(exported)                 do not use intentionally generates error
 810.582 -#define OSEXT_LAYER_CONFML_CONFIG(exported)         do not use intentionally generates error
 810.583 -#define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
 810.584 -#define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
 810.585 -#define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
 810.586 -#define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
 810.587 -
 810.588 -#endif  // end of PLATFORM_PATHS_HRH
   811.1 --- a/epoc32/include/playerinformationtarget.h	Tue Mar 16 16:12:26 2010 +0000
   811.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   811.3 @@ -1,171 +0,0 @@
   811.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   811.5 -// All rights reserved.
   811.6 -// This component and the accompanying materials are made available
   811.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   811.8 -// which accompanies this distribution, and is available
   811.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  811.10 -//
  811.11 -// Initial Contributors:
  811.12 -// Nokia Corporation - initial contribution.
  811.13 -//
  811.14 -// Contributors:
  811.15 -//
  811.16 -// Description:
  811.17 -//
  811.18 -
  811.19 -
  811.20 -
  811.21 -/**
  811.22 - @file
  811.23 - @publishedAll
  811.24 - @released
  811.25 -*/
  811.26 -
  811.27 -#ifndef REMCONPLAYERINFORMATIONTARGET_H
  811.28 -#define REMCONPLAYERINFORMATIONTARGET_H
  811.29 -
  811.30 -#include <e32base.h>
  811.31 -#include <s32mem.h>
  811.32 -#include <e32hashtab.h>
  811.33 -
  811.34 -#include <remcon/remconinterfacebase.h>
  811.35 -#include <remcon/remconinterfaceif.h>
  811.36 -#include <remcon/avrcpspec.h>
  811.37 -#include <playerinformationtargetobserver.h>
  811.38 -
  811.39 -class CRemConInterfaceSelector;
  811.40 -class CPlayerApplicationSettings;
  811.41 -
  811.42 -// This is the maximum length of the player application setting attribute and value strings
  811.43 -const TInt KMaxPlayerApplicationSettingsValue = 255 ;
  811.44 -// This is the minimum length of the player application setting attribute and value strings
  811.45 -const TInt KMinPlayerApplicationSettingsValue = 1 ;
  811.46 -
  811.47 -/**
  811.48 -Client-instantiable class supporting player information responses.
  811.49 -This is the container class for the three interface parts
  811.50 -*/
  811.51 -NONSHARABLE_CLASS(CPlayerInfoTarget) : 	public CRemConInterfaceBase,
  811.52 -								       	public MRemConInterfaceIf2, 
  811.53 -								       	private MPlayerCapabilitiesObserver,
  811.54 -										private MPlayerApplicationSettingsObserver,
  811.55 -										private MPlayerEventsObserver
  811.56 -								           
  811.57 -	{
  811.58 -public:
  811.59 -	/**
  811.60 -	Factory function.
  811.61 -	@param aInterfaceSelector The interface selector. The client must have 
  811.62 -	created one of these first.
  811.63 -	@param aPlayerCapabilitiesObserver Returns a pointer to a MPlayerCapabilitiesObserver for this interface, owned by the CPlayerInfoTarget.
  811.64 -	@param aPlayerApplicationSettingsObserver Returns a pointer to a MPlayerApplicationSettingsObserver for this interface, owned by the CPlayerInfoTarget
  811.65 -	@param aPlayerEventsObserver Returns a pointer to a MPlayerEventsObserver for this interface, owned by the CPlayerInfoTarget
  811.66 -	@return A new CPlayerInfoTarget, owned by the interface selector.
  811.67 -	*/
  811.68 -	IMPORT_C static CPlayerInfoTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector,
  811.69 -								       	MPlayerCapabilitiesObserver*& aPlayerCapabilitiesObserver,
  811.70 -										MPlayerApplicationSettingsObserver*& aPlayerApplicationSettingsObserver,
  811.71 -										MPlayerEventsObserver*& aPlayerEventsObserver,
  811.72 -										MPlayerApplicationSettingsNotify& aApplicationSettingNotifier );
  811.73 -	
  811.74 -	/** Destructor */
  811.75 -	IMPORT_C ~CPlayerInfoTarget();
  811.76 -
  811.77 -
  811.78 -
  811.79 -private:
  811.80 -	/** 
  811.81 -	Constructor.
  811.82 -	@param aInterfaceSelector The interface selector.
  811.83 -	*/
  811.84 -	CPlayerInfoTarget(CRemConInterfaceSelector& aInterfaceSelector, MPlayerApplicationSettingsNotify& aApplicationSettingNotifier );
  811.85 -
  811.86 -	void ConstructL(MPlayerCapabilitiesObserver*& aPlayerCapabilitiesObserver,
  811.87 -							MPlayerApplicationSettingsObserver*& aPlayerApplicationSettingsObserver,
  811.88 -							MPlayerEventsObserver*& aPlayerEventsObserver );
  811.89 -	
  811.90 -private: // from CRemConInterfaceBase
  811.91 -	TAny* GetInterfaceIf(TUid aUid);
  811.92 -
  811.93 -private: // from MRemConInterfaceIf
  811.94 -	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData, TRemConMessageSubType aMsgSubType);
  811.95 -
  811.96 -private: 
  811.97 -	// Bearer attributes (settings) processing
  811.98 -	void ProcessListPlayerApplicationAttributes( TInt aOperationId );
  811.99 -	void ProcessGetPlayerApplicationAttributeText( const TDesC8& aData, TInt aOperationId );
 811.100 -	void ProcessListPlayerApplicationValues( const TDesC8& aData, TInt aOperationId );
 811.101 -	void ProcessGetPlayerApplicationValueText( const TDesC8& aData, TInt aOperationId );
 811.102 -	void ProcessGetCurrentPlayerApplicationValue( const TDesC8& aData, TInt aOperationId );
 811.103 -	void ProcessSetPlayerApplicationValue( const TDesC8& aData, TInt aOperationId );
 811.104 -
 811.105 -	// Bearer attributes (settings) API implementation from MPlayerApplicationSettingsObserver
 811.106 -	void DoDefineAttributeL(TUint aAttributeID, TDesC8& aAttributeText, RArray<TUint> &aValues, RArray<TPtrC8> &aValueTexts, TUint aInitialValue);
 811.107 -	void DoSetAttributeL(TUint aAttributeID, TUint aValue);
 811.108 -
 811.109 -	// Notifier Events API implementation from MPlayerEventsObserver
 811.110 -	void DoPlaybackStatusChanged(TPlaybackStatus aStatus);
 811.111 -	void DoTrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds);
 811.112 -	void DoTrackReachedEnd();
 811.113 -	void DoTrackReachedStart();
 811.114 -	void DoSetPlaybackPosition(TUint32 aMilliseconds);	
 811.115 -	void DoSetBatteryStatus(TTargetBatteryStatus aBatteryStatus);
 811.116 -
 811.117 -	// Notifier Events bearer processing  
 811.118 -	void ProcessGetPlayStatus();
 811.119 -	void ProcessGetStatusAndBeginObserving(TUint aOperationId, TRegisterNotificationEvent aEventId, const TDesC8& aData);
 811.120 -	void ProcessGetStatus(TUint aOperationId, TRegisterNotificationEvent aEventId);
 811.121 -	void SendNotificationResponse(TRegisterNotificationEvent aEventId, TRemConMessageSubType aMsgSubType);
 811.122 -	
 811.123 -	// Capabilities API implementation from MPlayerCapabilitiesObserver
 811.124 -	void DoClearEvents();
 811.125 -	TInt DoAddEvent(TRegisterNotificationEvent aEvent);
 811.126 -	TInt DoRemoveEvent(TRegisterNotificationEvent aEvent);
 811.127 -	void DoClearCompanyIds();
 811.128 -	TInt DoAddCompanyId(TInt aID);
 811.129 -	TInt DoRemoveCompanyID(TInt aID);
 811.130 -
 811.131 -	// Capabilities bearer processing 
 811.132 -	void ProcessGetCapabilities( const TDesC8& aData );
 811.133 -	
 811.134 -	// Miscellaneous
 811.135 -	TBool AttributeSettingExists(TUint anAttribute);
 811.136 -	TBool IsValidAttributeValue(TUint anAttributeId, TUint aAttributeValue);
 811.137 -	TBool AttributeValueCanBeSet(TUint anAttributeId, TUint aAttributeValue);
 811.138 -	void SendError(TInt, TInt);
 811.139 -	void SendError(TInt, TInt, TRemConMessageSubType aSubType);
 811.140 -	CPlayerApplicationSettings* GetSetting(TUint anAttribute);
 811.141 -	
 811.142 -private: // owned
 811.143 -	RBuf8								iOutBuf;
 811.144 -
 811.145 -	MPlayerApplicationSettingsNotify& 	iApplicationSettingNotifier;
 811.146 -		
 811.147 -	// data for MPlayerEventsObserver
 811.148 -	TPlaybackStatus 					iPlayBackStatus;
 811.149 -	TUint64 							iTrackId;
 811.150 -	TUint32 							iLengthInMilliseconds;
 811.151 -	TPlayPosition						iTrackPosition;
 811.152 -	
 811.153 -	// The time interval (received as part if the RegisterNotification) 
 811.154 -	// in which the change in playback position will be notified
 811.155 -	TUint32								iPlayBackIntervalInMilliseconds;
 811.156 -
 811.157 -	TTargetBatteryStatus				iBatteryStatus;
 811.158 -	TUint32 							iPlaybackPositionInMilliseconds;
 811.159 -	TUint32								iLastNotifiedPlaybackPositionInMilliseconds;
 811.160 -	
 811.161 -	// data for MPlayerCapabilitiesObserver
 811.162 -	RArray<TRegisterNotificationEvent> 			iSupportedNotificationEventList;
 811.163 -	RArray<TInt> 						iCompanyIdList;
 811.164 -
 811.165 -	// list of events for which notifications have been request 
 811.166 -	RArray<TRegisterNotificationEvent> 			iPendingNotificationEventList;
 811.167 -
 811.168 -	// Attribute (settings) data MPlayerApplicationSettingsObserver
 811.169 -	RHashMap<TInt, CPlayerApplicationSettings*>		iPlayerApplicationSettings;
 811.170 -
 811.171 -	};
 811.172 -
 811.173 -
 811.174 -#endif // REMCONPLAYERINFORMATIONTARGET_H
   812.1 --- a/epoc32/include/playerinformationtargetobserver.h	Tue Mar 16 16:12:26 2010 +0000
   812.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   812.3 @@ -1,300 +0,0 @@
   812.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   812.5 -// All rights reserved.
   812.6 -// This component and the accompanying materials are made available
   812.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   812.8 -// which accompanies this distribution, and is available
   812.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  812.10 -//
  812.11 -// Initial Contributors:
  812.12 -// Nokia Corporation - initial contribution.
  812.13 -//
  812.14 -// Contributors:
  812.15 -//
  812.16 -// Description:
  812.17 -//
  812.18 -
  812.19 -
  812.20 -
  812.21 -/**
  812.22 - @file
  812.23 - @publishedAll
  812.24 - @released
  812.25 -*/
  812.26 -
  812.27 -#ifndef REMCONPLAYERINFORMATIONTARGETOBSERVER_H
  812.28 -#define REMCONPLAYERINFORMATIONTARGETOBSERVER_H
  812.29 -
  812.30 -#include <e32base.h>
  812.31 -#include <remcon/avrcpspec.h>
  812.32 -#include <barsc2.h>
  812.33 -
  812.34 -
  812.35 -/**
  812.36 -This class is used to define the capabilities of the current application,
  812.37 -and the implementation will generate AVRCP responses to the controller.
  812.38 -For the event part of the API, it is recommended to add all events which make
  812.39 -sense for the media player. In general, this will be everything except
  812.40 -ESystemStatusChanged. The company ID part of the API is only needed if
  812.41 -the media player needs to support vendor extensions other than bluetooth SIG.
  812.42 -The bluetooth SIG company ID is always included in responses to a COMPANY_ID request.
  812.43 -*/
  812.44 -class MPlayerCapabilitiesObserver 
  812.45 -	{
  812.46 -	public:
  812.47 -		/**
  812.48 -		Remove all notification events from the supported list
  812.49 -		*/
  812.50 -		IMPORT_C void ClearEvents();
  812.51 -		/**
  812.52 -		Add a notification event to the supported list of events
  812.53 -		The AVRCP 1.3 specification mandates that PlaybackStatusChanged
  812.54 -		and TrackChanged events must be supported; KErrAlreadyExists will
  812.55 -		be returned if AddEvent() is called with either of these events.
  812.56 -		@param aEvent the event to add
  812.57 -		@return KErrAlreadyExists if the event is already present.
  812.58 -		KErrNotSupported if the event isn't supported by the implementation, e.g.. ESystemStatusChanged
  812.59 -		*/
  812.60 -		IMPORT_C TInt AddEvent(TRegisterNotificationEvent aEvent);
  812.61 -		/**
  812.62 -		Remove a notification event from the supported list of events
  812.63 -		The AVRCP 1.3 specification mandates that PlaybackStatusChanged
  812.64 -		and TrackChanged events must be supported; KErrNotSupported will
  812.65 -		be returned if RemoveEvent() is called with either of these events.
  812.66 -		@param aEvent the event to remove
  812.67 -		@return KErrNone if this completes successfully, KErrNotFound if aID
  812.68 -		was not in the list, or any other system wide error code.
  812.69 -		*/
  812.70 -		IMPORT_C TInt RemoveEvent(TRegisterNotificationEvent aEvent);
  812.71 -
  812.72 -		const static TInt KMaxCompanyID = 0xFFFFFF;
  812.73 -		const static TInt KMaxNrOfCompanyIDs = 255;
  812.74 -		
  812.75 -		/**
  812.76 -		Remove all additional company IDs from the supported list
  812.77 -		*/
  812.78 -		IMPORT_C void ClearCompanyIds();
  812.79 -		/**
  812.80 -		Add a company id to the supported list of company ids.
  812.81 -		The AVRCP 1.3 specification mandates that the Bluetooth SIG vendor id 
  812.82 -		must be supported; KErrAlreadyExists will be returned if AddCompanyId()
  812.83 -		is called with this company id.
  812.84 -		@param aID the id to add
  812.85 -		@return KErrNone if this completes successfully,
  812.86 -		KErrAlreadyExists if aID is already present,
  812.87 -		KErrOverflow if the maximum number of company ids are already listed,
  812.88 -		or any other system wide error code.
  812.89 -		*/
  812.90 -		IMPORT_C TInt AddCompanyId(TInt aID);
  812.91 -		/**
  812.92 -		Remove a company id from the list of supported vendor extensions.
  812.93 -		The Bluetooth SIG id can't be removed, as this must always be supported
  812.94 -		@param aID the id to remove
  812.95 -		@return KErrNone if this completes successfully, KErrNotFound if aID
  812.96 -		was not in the list, or any other system wide error code.
  812.97 -		*/
  812.98 -		IMPORT_C TInt RemoveCompanyID(TInt aID);
  812.99 -		
 812.100 -	private:
 812.101 -		virtual void DoClearEvents() = 0;
 812.102 -		virtual TInt DoAddEvent(TRegisterNotificationEvent aEvent) = 0;
 812.103 -		virtual TInt DoRemoveEvent(TRegisterNotificationEvent aEvent) = 0;
 812.104 -		virtual void DoClearCompanyIds() = 0;
 812.105 -		virtual TInt DoAddCompanyId(TInt aID) = 0;
 812.106 -		virtual TInt DoRemoveCompanyID(TInt aID) = 0;
 812.107 -	};
 812.108 -
 812.109 -/**
 812.110 -This class is for supporting the player application settings PDUs in AVRCP1.3
 812.111 -specification section 5.2. The RegisterNotification PDU for
 812.112 -EVENT_PLAYER_APPLICATION_SETTING_CHANGED is also supported through this API.
 812.113 -
 812.114 -The media player should first define all the attributes it supports, using
 812.115 -DefineAttributeL. When an attribute's value is changed by the media player,
 812.116 -it should call SetAttributeL to inform the controller. When the controller
 812.117 -changes a setting, the media player application receives a callback via the
 812.118 -MPlayerApplicationSettingsNotify interface
 812.119 -*/
 812.120 -class MPlayerApplicationSettingsObserver 
 812.121 -	{
 812.122 -	public:
 812.123 -		/**
 812.124 -		Define an attribute supported by this player.
 812.125 -		It will be included in future responses to the following PDUs:
 812.126 -			ListPlayerApplicationSettingAttributes,
 812.127 -			ListPlayerApplicationSettingValues,
 812.128 -			GetCurrentPlayerApplicationSettingValue,
 812.129 -			GetPlayerApplicationSettingAttributeText,
 812.130 -			GetPlayerApplicationSettingValueText,
 812.131 -		@param aAttributeID The specification or player defined attribute
 812.132 -		@param aAttributeText The UTF8 text name of the attribute(allowed text length is 1-255) - the API will take a copy
 812.133 -		@param aValues The list of defined values
 812.134 -		@param aValueTexts The UTF8 text for each defined value(allowed text length is 1-255) - The API will make copies.
 812.135 -		@param aInitialValue The initial value for this attribute
 812.136 -		@leave KErrNoMemory if memory could not be allocated to store the copies of aAttributeID and relative settings
 812.137 -		@leave KErrNotSupported if attribute or value is out of specification defined range,
 812.138 -			or aValueTexts is not equal length to aValues
 812.139 -		*/
 812.140 -		IMPORT_C void DefineAttributeL(TUint aAttributeID,
 812.141 -										TDesC8& aAttributeText,
 812.142 -										RArray<TUint> &aValues,
 812.143 -										RArray<TPtrC8> &aValueTexts,
 812.144 -										TUint aInitialValue);
 812.145 -
 812.146 -		/**
 812.147 -		Set the current value of a previously defined attribute
 812.148 -		This updates the cache and will cause completion of a 
 812.149 -		pending EVENT_PLAYER_APPLICATION_SETTING_CHANGED notification PDU
 812.150 -		@param aAttributeID The specification or player defined attribute
 812.151 -		@param aValue The current value
 812.152 -		@leave KErrNotFound if the attribute is not defined,
 812.153 -			KErrArgument if the value is not valid according to the definition
 812.154 -		*/
 812.155 -		IMPORT_C void SetAttributeL(TUint aAttributeID, TUint aValue);
 812.156 -
 812.157 -	private:
 812.158 -		virtual void DoDefineAttributeL(TUint aAttributeID,
 812.159 -										TDesC8& aAttributeText,
 812.160 -										RArray<TUint> &aValues,
 812.161 -										RArray<TPtrC8> &aValueTexts,
 812.162 -										TUint aInitialValue) = 0;
 812.163 -		virtual void DoSetAttributeL(TUint aAttributeID, TUint aValue) = 0;
 812.164 -	
 812.165 -	};
 812.166 -
 812.167 -/**
 812.168 -This is a helper API allowing CPlayerApplicationSettings to be initialised
 812.169 -via a resource file. Using a resource file may help to provide localised text
 812.170 -for the attributes and values, according to current language setting of the phone.
 812.171 -*/
 812.172 -class PlayerApplicationSettingsResourceInit
 812.173 -	{
 812.174 -	public:
 812.175 -	/**
 812.176 -	Defines multiple attributes supported by this player, which are listed in a resource file.
 812.177 -	@param aSettings The CPlayerApplicationSettings object on which the attributes should be defined
 812.178 -	@param aResource A fully constructed CResourceFile
 812.179 -	@leave KErrNoMemory, or leave from CResourceFile functions
 812.180 -	*/
 812.181 -	IMPORT_C static void DefineAttributesL(MPlayerApplicationSettingsObserver& aSettings, CResourceFile &aResource);
 812.182 -	};
 812.183 -
 812.184 -/**
 812.185 -This class supports the notification PDUs in AVRCP1.3 specification section 5.4,
 812.186 -with the following exceptions:
 812.187 -   EVENT_SYSTEM_STATUS_CHANGED is not supported, it is only for adaptors that plug into a media player
 812.188 -   EVENT_PLAYER_APPLICATION_SETTING_CHANGED is supported through the CPlayerApplicationSettings API
 812.189 -
 812.190 -Events are pushed by the media player calling functions in this API, where they are
 812.191 -cached until the controller pulls them via a GetPlayStatus or RegisterNotification PDU
 812.192 -@see CPlayerApplicationSettings
 812.193 -*/
 812.194 -class MPlayerEventsObserver 
 812.195 -	{
 812.196 -	public:
 812.197 -		enum TTargetBatteryStatus
 812.198 -			{
 812.199 -			ENormal     = 0,
 812.200 -			EWarning    = 1,
 812.201 -			ECritical   = 2,
 812.202 -			EExternal   = 3,
 812.203 -			EFullCharge = 4,
 812.204 -			EUnknown	= 5
 812.205 -			};	
 812.206 -			
 812.207 -		enum TPlaybackStatus
 812.208 -			{
 812.209 -			EStopped = 0,
 812.210 -			EPlaying = 1,
 812.211 -			EPaused = 2,
 812.212 -			EFwdSeek = 3,
 812.213 -			ERevSeek = 4,
 812.214 -			EError = 0xFF
 812.215 -			};
 812.216 -
 812.217 -		enum TPlayPosition
 812.218 -			{
 812.219 -			EStart = 0,
 812.220 -			EMiddle = 1,
 812.221 -			EEnd= 2,
 812.222 -			};
 812.223 -
 812.224 -		static const TUint64 KNoTrackSelected = KMaxTUint64;
 812.225 -
 812.226 -		static const TUint32 KPlaybackPositionUnknown = 0xFFFFFFFF;
 812.227 -		
 812.228 -		/**
 812.229 -		Call this function whenever the playback status changes.
 812.230 -		It will be used to complete pending EVENT_PLAYBACK_STATUS_CHANGED
 812.231 -		and EVENT_PLAYBACK_POS_CHANGED notifications.
 812.232 -		The value is used to generate the response to a GetPlayStatus PDU.
 812.233 -		@param aStatus The specification defined playback status
 812.234 -		*/
 812.235 -		IMPORT_C void PlaybackStatusChanged(TPlaybackStatus aStatus);
 812.236 -		/**
 812.237 -		Call this function whenever the current media track is changed.
 812.238 -		use KNoTrackSelected to indicate that there is no media selected. 
 812.239 -		This is the default value on construction. It will be used to
 812.240 -		complete pending EVENT_TRACK_CHANGED and EVENT_PLAYBACK_POS_CHANGED notifications.
 812.241 -		The values are used to generate the response to a GetPlayStatus PDU.
 812.242 -		@param aTrackId A handle to the current track.
 812.243 -		@param aLengthInMilliseconds The length of the current track.
 812.244 -		*/
 812.245 -		IMPORT_C void TrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds);
 812.246 -		/**
 812.247 -		Call this function whenever the current track reaches the end position,
 812.248 -		e.g. due to playback or forward seek. It will be used to complete
 812.249 -		pending EVENT_TRACK_REACHED_END and EVENT_PLAYBACK_POS_CHANGED notifications.
 812.250 -		*/
 812.251 -		IMPORT_C void TrackReachedEnd();
 812.252 -		/**
 812.253 -		Call this function whenever the current track reaches the start position,
 812.254 -		e.g. due to reverse seek (rewind). It will be used to complete pending
 812.255 -		EVENT_TRACK_REACHED_START and EVENT_PLAYBACK_POS_CHANGED notifications.
 812.256 -		*/
 812.257 -		IMPORT_C void TrackReachedStart();
 812.258 -		/**
 812.259 -		Call this function during playback or seek operations, to indicate the
 812.260 -		current position within the track. It will be used to complete a pending
 812.261 -		EVENT_PLAYBACK_POS_CHANGED notification. The value is used to generate the
 812.262 -		response to a GetPlayStatus PDU.
 812.263 -		@param aMilliseconds The current playback position. It is recommended to call
 812.264 -		with a resolution <=1000ms to satisfy the 1s resolution of the notification
 812.265 -		playback interval.
 812.266 -		*/
 812.267 -		IMPORT_C void SetPlaybackPosition(TUint32 aMilliseconds);
 812.268 -
 812.269 -		/**
 812.270 -		Call this function to report the current battery status
 812.271 -		@param aBatteryStatus The current battery status.
 812.272 -		*/
 812.273 -		IMPORT_C void SetBatteryStatus(TTargetBatteryStatus aBatteryStatus);
 812.274 -		
 812.275 -	private:
 812.276 -		virtual void DoPlaybackStatusChanged(TPlaybackStatus aStatus) = 0;
 812.277 -		virtual void DoTrackChanged(TUint64 aTrackId, TUint32 aLengthInMilliseconds) = 0;
 812.278 -		virtual void DoTrackReachedEnd() = 0;
 812.279 -		virtual void DoTrackReachedStart() = 0;
 812.280 -		virtual void DoSetPlaybackPosition(TUint32 aMilliseconds) = 0;
 812.281 -		virtual void DoSetBatteryStatus(TTargetBatteryStatus aBatteryStatus) = 0;
 812.282 -	
 812.283 -		
 812.284 -	};
 812.285 -
 812.286 -/**
 812.287 -Clients must implement this interface if they require callbacks 
 812.288 -when the controller has changed the settings via a SetPASValue message
 812.289 -*/
 812.290 -class MPlayerApplicationSettingsNotify  
 812.291 -	{
 812.292 -	public:
 812.293 -		/**
 812.294 -		This is called when the controller has changed a setting
 812.295 -		@param aAttributeID A list of attribute IDs whose value has changed.
 812.296 -		@param aAttributeValue A list of new values for the attributes listed in aAttributeID.
 812.297 -		*/
 812.298 -		virtual void MpasnSetPlayerApplicationValueL(const RArray<TInt>& aAttributeID,
 812.299 -													const RArray<TInt>& aAttributeValue)=0;
 812.300 -	};
 812.301 -	
 812.302 -
 812.303 -#endif // REMCONPLAYERINFORMATIONTARGETOBSERVER_H
   813.1 --- a/epoc32/include/pop3cmds.h	Tue Mar 16 16:12:26 2010 +0000
   813.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   813.3 @@ -1,113 +0,0 @@
   813.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   813.5 -// All rights reserved.
   813.6 -// This component and the accompanying materials are made available
   813.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   813.8 -// which accompanies this distribution, and is available
   813.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  813.10 -//
  813.11 -// Initial Contributors:
  813.12 -// Nokia Corporation - initial contribution.
  813.13 -//
  813.14 -// Contributors:
  813.15 -//
  813.16 -// Description:
  813.17 -//
  813.18 -
  813.19 -#if !defined (__POP3CMDS_H__)
  813.20 -#define __POP3CMDS_H__
  813.21 -
  813.22 -#if !defined (__MSVSTD_HRH__)
  813.23 -#include <msvstd.hrh>
  813.24 -#endif
  813.25 -
  813.26 -/** POP3-specific commands that can be issued through CPop3ClientMtm::InvokeAsyncFunctionL(). 
  813.27 -@publishedAll
  813.28 -@released
  813.29 -*/
  813.30 -enum TPop3Cmds 
  813.31 -	{
  813.32 -	/** Unsupported. */
  813.33 -	KPOP3MTMIsConnected = KMtmFirstFreeMtmFunctionId,
  813.34 -	/** Attempt to connect to the current service. */
  813.35 -	KPOP3MTMConnect,
  813.36 -	/** Disconnect from the current service. */
  813.37 -	KPOP3MTMDisconnect,
  813.38 -	/** Unused. */
  813.39 -	KPOP3MTMCreateReceipt,
  813.40 -
  813.41 -	// need to pass in destination in aParameter
  813.42 -	/** Copy any new messages from the current service, assuming a new connection does 
  813.43 -	not need to be made. */
  813.44 -	KPOP3MTMCopyNewMailWhenAlreadyConnected,
  813.45 -	/** Copy any new messages from the current service, and do not disconnect afterwards. */
  813.46 -	KPOP3MTMConnectAndCopyNewMailAndStayOnline,
  813.47 -	/** Copy any new messages from the current service, and disconnect afterwards. */
  813.48 -	KPOP3MTMConnectAndCopyNewMailAndDisconnect,
  813.49 -	/** Move any new messages from the current service, assuming a new connection does 
  813.50 -	not need to be made. */
  813.51 -	KPOP3MTMMoveNewMailWhenAlreadyConnected,
  813.52 -	/** Move any new messages from the current service, and do not disconnect afterwards. */
  813.53 -	KPOP3MTMConnectAndMoveNewMailAndStayOnline,
  813.54 -	/** Connect to current service, move any new messages, and disconnect afterwards. */
  813.55 -	KPOP3MTMConnectAndMoveNewMailAndDisconnect,
  813.56 -
  813.57 -	// need to pass in destination in aParameter
  813.58 -	/** Copy the specified messages from the current service, assuming a new connection 
  813.59 -	does not need to be made. */
  813.60 -	KPOP3MTMCopyMailSelectionWhenAlreadyConnected,
  813.61 -	/** Connect to current service, copy the specified messages, and do not disconnect 
  813.62 -	afterwards. */
  813.63 -	KPOP3MTMConnectAndCopyMailSelectionAndStayOnline,
  813.64 -	/** Connect to current service, copy the specified messages, and disconnect afterwards. */
  813.65 -	KPOP3MTMConnectAndCopyMailSelectionAndDisconnect,
  813.66 -	/** Move the specified messages from the current service, assuming a new connection 
  813.67 -	does not need to be made. */
  813.68 -	KPOP3MTMMoveMailSelectionWhenAlreadyConnected,
  813.69 -	/** Connect to current service, move the specified messages, and do not disconnect 
  813.70 -	afterwards. */
  813.71 -	KPOP3MTMConnectAndMoveMailSelectionAndStayOnline,
  813.72 -	/** Connect to current service, move the specified messages, and disconnect afterwards. */
  813.73 -	KPOP3MTMConnectAndMoveMailSelectionAndDisconnect,
  813.74 -
  813.75 -	// need to pass in destination in aParameter
  813.76 -	/** Copy all messages from the current service, assuming a new connection does 
  813.77 -	not need to be made. */
  813.78 -	KPOP3MTMCopyAllMailWhenAlreadyConnected,
  813.79 -	/** Connect to current service, copy all messages, and do not disconnect afterwards. */
  813.80 -	KPOP3MTMConnectAndCopyAllMailAndStayOnline,
  813.81 -	/** Connect to current service, copy all messages, and disconnect afterwards. */
  813.82 -	KPOP3MTMConnectAndCopyAllMailAndDisconnect,
  813.83 -	/** Move all messages from the current service, assuming a new connection does 
  813.84 -	not need to be made. */
  813.85 -	KPOP3MTMMoveAllMailWhenAlreadyConnected,
  813.86 -	/** Connect to current service, move all messages, and do not disconnect afterwards. */
  813.87 -	KPOP3MTMConnectAndMoveAllMailAndStayOnline,
  813.88 -	/** Connect to current service, move all messages, and disconnect afterwards. */
  813.89 -	KPOP3MTMConnectAndMoveAllMailAndDisconnect,
  813.90 -
  813.91 -	/** Cancel all offline operations. */
  813.92 -	KPOP3MTMCancelOfflineOperations,
  813.93 -	/** Unused. */
  813.94 -	KPOP3MTMCancelSendOnNextConnection,
  813.95 -	/** Creates a new message. */
  813.96 -	KPOP3MTMCreateNewEmailMessage,
  813.97 -	/** Creates a new reply message. */
  813.98 -	KPOP3MTMCreateReplyEmailMessage,
  813.99 -	/** Creates a new forwarded message. */
 813.100 -	KPOP3MTMCreateForwardEmailMessage,
 813.101 -	/** Creates a new forwarded message as an attachment. */
 813.102 -	KPOP3MTMCreateForwardAsAttachmentEmailMessage,
 813.103 -	/** Creates a new message-receipt message. */
 813.104 -	KPOP3MTMCreateReceiptEmailMessage,
 813.105 -	/** Populates the selection of messages from the current service, assuming a new connection does 
 813.106 -	not need to be made. */
 813.107 -	KPOP3MTMPopulate,
 813.108 -	/** Populates any new messages from the current service, assuming a new connection does 
 813.109 -	not need to be made. */
 813.110 -	KPOP3MTMPopulateNew,
 813.111 -	/** Populates all messages from the current service, assuming a new connection does 
 813.112 -	not need to be made. */
 813.113 -	KPOP3MTMPopulateAll 
 813.114 -	};
 813.115 -
 813.116 -#endif
   814.1 --- a/epoc32/include/pop3set.h	Tue Mar 16 16:12:26 2010 +0000
   814.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   814.3 @@ -1,293 +0,0 @@
   814.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   814.5 -// All rights reserved.
   814.6 -// This component and the accompanying materials are made available
   814.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   814.8 -// which accompanies this distribution, and is available
   814.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  814.10 -//
  814.11 -// Initial Contributors:
  814.12 -// Nokia Corporation - initial contribution.
  814.13 -//
  814.14 -// Contributors:
  814.15 -//
  814.16 -// Description:
  814.17 -//
  814.18 -
  814.19 -#if !defined (__POP3SET_H__)
  814.20 -#define __POP3SET_H__
  814.21 -
  814.22 - 
  814.23 -
  814.24 -
  814.25 -#include <msvuids.h>
  814.26 -#include <miutset.h>
  814.27 -#include <miut_err.h>
  814.28 -
  814.29 -
  814.30 -
  814.31 -/** Default POP3 server port number. */
  814.32 -const TUint32 KPOP3DefaultPortNumber = 110;
  814.33 -
  814.34 -/** @deprecated */
  814.35 -const TInt32 KImPop3SynchroniseAll	 = -1;
  814.36 -
  814.37 -/** @deprecated */
  814.38 -const TInt32 KImPop3SynchroniseNone	 = 0;
  814.39 -
  814.40 -/**
  814.41 -Specifies which parts of a POP3 message to download. Used when configuring the
  814.42 -POP3 service settings.
  814.43 -
  814.44 -@see
  814.45 -CImPop3Settings 
  814.46 -
  814.47 -@publishedAll
  814.48 -@released
  814.49 -*/
  814.50 -enum TPop3GetMailOptions
  814.51 -	{
  814.52 -	/** Message headers only. */
  814.53 -	EGetPop3EmailHeaders,
  814.54 -	/** Complete message. */
  814.55 -	EGetPop3EmailMessages
  814.56 -	};			   
  814.57 -
  814.58 -
  814.59 -class TPop3Progress
  814.60 -/**
  814.61 -Progress information for a POP3 operation. 
  814.62 -
  814.63 -@publishedAll
  814.64 -@released
  814.65 -*/
  814.66 -	{
  814.67 -public:
  814.68 -	IMPORT_C TInt ConnectionState() const;
  814.69 -	IMPORT_C TInt ConnectionIAP() const;
  814.70 -
  814.71 -public:
  814.72 -	/** Defines types of POP3 operations. */
  814.73 -	enum TPop3ProgressType 
  814.74 -		{
  814.75 -	/** Refreshing view of remote mail box. */
  814.76 -		EPopRefreshing,
  814.77 -	/** Copying messages. */
  814.78 -		EPopCopying,
  814.79 -	/** Deleting messages. */
  814.80 -		EPopDeleting,
  814.81 -	/** Connecting to remote mail box. */
  814.82 -		EPopConnecting,
  814.83 -	/** Internal reorganisation. */
  814.84 -		EPopTidying,
  814.85 -	/** Connected to remote mail box and no current operations. */
  814.86 -		EPopConnectedAndIdle,
  814.87 -	/** Disconnecting from remote mail box. */
  814.88 -		EPopDisconnecting,
  814.89 -	/** Disconnected from remote mail box. */
  814.90 -		EPopDisconnected,
  814.91 -	/** Moving messages. */
  814.92 -		EPopMoving,
  814.93 -	/** Copying new messages. */
  814.94 -		EPopCopyNewMail,
  814.95 -	/** Moving new messages. */
  814.96 -		EPopMoveNewMail,
  814.97 -	/** Copying a selection of messages. */
  814.98 -		EPopCopyMailSelection,
  814.99 -	/** Moving a selection of messages. */
 814.100 -		EPopMoveMailSelection,
 814.101 -	/** Copying all messages. */
 814.102 -		EPopCopyAllMail,
 814.103 -	/** Moving all messages. */
 814.104 -		EPopMoveAllMail,
 814.105 -	/** Populating view of remote mail box. */
 814.106 -		EPopPopulating,
 814.107 -	/** Cancelling all off-line operations. */
 814.108 -		EPopCancellingOfflineOps,
 814.109 -	/** Populating mailbox with top command */
 814.110 -		EPopTopPopulating,
 814.111 -	/** Defines the maximum value for this enumeration. */
 814.112 -		EPopMaxProgressValue=EPopTopPopulating
 814.113 -		};
 814.114 -
 814.115 -	/** Type of operation for which progress is being reported. */
 814.116 -	TPop3ProgressType	iPop3Progress;	// holds the progress for a 'super operation'
 814.117 -	/** When in the EPopConnecting state, this member holds the connection 
 814.118 -	stage. Otherwise it holds the total number of messages for the operation. */
 814.119 -	TInt				iTotalMsgs;
 814.120 -	/** Remaining number of messages to process. */
 814.121 -	TInt				iMsgsToProcess;
 814.122 -	/** Number of bytes processed by the operation. */
 814.123 -	TInt				iBytesDone;
 814.124 -	/** When in the EPopConnecting state, this member holds the connection 
 814.125 -	iap value. Otherwise it holds the total number of bytes to progress for the
 814.126 -	operation. */
 814.127 -	TInt				iTotalBytes;
 814.128 -	/** Operation error code. */
 814.129 -	TInt				iErrorCode; // client side needs to be informed of an error
 814.130 -	/** Type of the sub-operation, where a nested operations is occurring. */
 814.131 -	TPop3ProgressType	iPop3SubStateProgress; // holds the progress for the substate of the 'super operation'
 814.132 -	/** Service performing the operation. */
 814.133 -	TMsvId				iServiceId;
 814.134 -	/** The total size of messages to be downloaded. */
 814.135 -	TInt				iTotalSize; // The total size of messages to be downloaded.
 814.136 -	};
 814.137 -
 814.138 -
 814.139 -class TImPop3GetMailInfo
 814.140 -/**
 814.141 -Use to specify the maximum message size and the destination folder ID for
 814.142 -certain POP3 operations.
 814.143 -
 814.144 -@see
 814.145 -CPop3ClientMtm
 814.146 -
 814.147 -@publishedAll
 814.148 -@released
 814.149 -*/
 814.150 -	{
 814.151 -public:
 814.152 -	/** Maximum message size for the operation. */
 814.153 -	TInt32		iMaxEmailSize;
 814.154 -	/** ID of the destination folder for the operation. */
 814.155 -	TMsvId		iDestinationFolder;
 814.156 -	};
 814.157 -
 814.158 -class TImPop3PopulateOptions
 814.159 -/**
 814.160 -Use to specify the population limit for the POP3 top command
 814.161 -
 814.162 -@see
 814.163 -CPop3ClientMtm
 814.164 -
 814.165 -@publishedAll
 814.166 -@released
 814.167 -*/
 814.168 -	{
 814.169 -private:
 814.170 -	/** Version of this GetMailInfo class, breaks coding standard by putting a private member at 
 814.171 -	    the beginning to enable unpacking code to check the version before unpacking the rest of the class */
 814.172 -	TInt32	iVersion;
 814.173 -
 814.174 -public:
 814.175 -	IMPORT_C TImPop3PopulateOptions();
 814.176 -	IMPORT_C static void UnpackL(const TDesC8& aDesc, TImPop3PopulateOptions &aUnpackTo);
 814.177 -
 814.178 -	IMPORT_C TInt MaxEmailSize();
 814.179 -	IMPORT_C void SetMaxEmailSize(TInt aMaxEmailSize);
 814.180 -	IMPORT_C TInt PopulationLimit();
 814.181 -	IMPORT_C void SetPopulationLimit(TInt aPopulationLimit);
 814.182 -	
 814.183 -private:
 814.184 -	/** Maximum message size for the operation. */
 814.185 -	TInt32		iMaxEmailSize;
 814.186 -	/** Population limit for Populate operation, set to -1 for total populate */
 814.187 -	TInt32		iPopulationLimit;
 814.188 -	/** Construction utility function */
 814.189 -	};
 814.190 -
 814.191 -
 814.192 -class CImPop3Settings : public CImBaseEmailSettings
 814.193 -/**
 814.194 -Run-time configuration settings for POP3.
 814.195 -
 814.196 -Messaging clients should use an instance of this class to specify
 814.197 -and retrieve configuration settings that are used by the POP3 service when
 814.198 -executing email operations.  
 814.199 -
 814.200 -Service settings such as the user name and password, whether to authenticate
 814.201 -using APOP or plain text, the maximum size of an email to download, and the
 814.202 -maximum number of messages to synchronise can be specified using this class.
 814.203 -Storing and restoring from the message store is also supported.
 814.204 -
 814.205 -To use this class to change a setting:
 814.206 -1) Set the current context to the POP3 service entry using CMsvStore.
 814.207 -2) Create an instance of CImPop3Settings and put it on the cleanup stack.
 814.208 -3) Retrieve the existing settings by calling CImPop3Settings::RestoreL().
 814.209 -4) Change the inbox synchronisation limit setting by calling CImPop3Settings::SetInboxSynchronisationLimit().
 814.210 -5) Save the new settings by calling CImPop3Settings::StoreL().
 814.211 -6) Pop and destroy the CImPop3Settings instance.
 814.212 -
 814.213 -@see CMsvStore
 814.214 -@publishedAll
 814.215 -@released
 814.216 -*/
 814.217 -	{
 814.218 -public:
 814.219 -	IMPORT_C CImPop3Settings();
 814.220 -	IMPORT_C virtual ~CImPop3Settings();
 814.221 -	IMPORT_C void Reset();
 814.222 -	IMPORT_C const TPtrC8 LoginName() const;
 814.223 -	IMPORT_C void SetLoginNameL(const TDesC8&);
 814.224 -	IMPORT_C const TPtrC8 Password() const;
 814.225 -	IMPORT_C void SetPasswordL(const TDesC8&);
 814.226 -	IMPORT_C TBool AutoSendOnConnect() const;
 814.227 -	IMPORT_C void SetAutoSendOnConnect(TBool aFlag);
 814.228 -	IMPORT_C TBool Apop() const;
 814.229 -	IMPORT_C void SetApop(TBool aFlag);
 814.230 -	IMPORT_C TBool DisconnectedUserMode() const;
 814.231 -	IMPORT_C void SetDisconnectedUserMode(TBool aFlag);
 814.232 -	IMPORT_C TBool DeleteEmailsWhenDisconnecting() const;
 814.233 -	IMPORT_C void SetDeleteEmailsWhenDisconnecting(TBool aFlag);
 814.234 -	IMPORT_C TBool AcknowledgeReceipts() const;
 814.235 -	IMPORT_C void SetAcknowledgeReceipts(TBool aFlag);
 814.236 -	IMPORT_C TInt MaxEmailSize() const;
 814.237 -	IMPORT_C void SetMaxEmailSize(const TInt aMaxEmailSize);
 814.238 -	IMPORT_C TPop3GetMailOptions GetMailOptions() const;
 814.239 -	IMPORT_C void SetGetMailOptions(TPop3GetMailOptions aGetMailOptions);
 814.240 -	IMPORT_C CImPop3Settings& CopyL(const CImPop3Settings& aCImPop3Settings);
 814.241 -	IMPORT_C TBool operator==(const CImPop3Settings& aCImPop3Settings) const;
 814.242 -	IMPORT_C TInt32 InboxSynchronisationLimit() const;
 814.243 -	IMPORT_C void SetInboxSynchronisationLimit(const TInt32 aInboxSyncLimit);
 814.244 -	IMPORT_C TInt32 PopulationLimit() const;
 814.245 -	IMPORT_C void SetPopulationLimitL(const TInt32 aPopulationLimit);
 814.246 -	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
 814.247 -	IMPORT_C TPtrC8 TlsSslDomain() const;
 814.248 -
 814.249 -private:
 814.250 -	class TImPop3SettingsExtension
 814.251 -		{
 814.252 -	public:
 814.253 -		inline TImPop3SettingsExtension();
 814.254 -	public:
 814.255 -		HBufC8* iLoginName;
 814.256 -		HBufC8* iPassword;
 814.257 -		HBufC8* iTlsSslDomain;
 814.258 -		TInt32 iPopulationLimit;
 814.259 -		};
 814.260 -	inline TImPop3SettingsExtension* Extension() const;
 814.261 -	inline void CheckExtensionExistsL();
 814.262 -
 814.263 -	enum TImPop3EmailSettings
 814.264 -		{
 814.265 -		KPop3SettingsClearFlag					= 0x00000000,
 814.266 -		KPop3BaseEmailSettingsLastUsedFlag		= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag,	//0x00000002
 814.267 -		KPop3ApopFlag							= KPop3BaseEmailSettingsLastUsedFlag << 1,		//0x00000004
 814.268 -		KPop3AutoSendFlag						= KPop3ApopFlag << 1,							//0x00000008
 814.269 -		KPop3DisconnectedModeFlag				= KPop3AutoSendFlag << 1,						//0x00000010
 814.270 -		KPop3DeleteEmailsWhenDisconnectingFlag	= KPop3DisconnectedModeFlag << 1,				//0x00000020
 814.271 -		KPop3AcknowledgeReceipts				= KPop3DeleteEmailsWhenDisconnectingFlag << 1,	//0x00000040
 814.272 -		KPop3EmailSettingsLastUsedFlag			= KPop3AcknowledgeReceipts						//0x00000040
 814.273 -		};
 814.274 -
 814.275 -	TImPop3SettingsExtension*	iExtension; // renamed iReceiptAddress
 814.276 -	TInt32  iInboxSyncLimit;
 814.277 -	TInt32	iMaxEmailSize;
 814.278 -	TPop3GetMailOptions iGetMailOptions;
 814.279 -	};
 814.280 -
 814.281 -inline CImPop3Settings::TImPop3SettingsExtension* CImPop3Settings::Extension() const
 814.282 -	{
 814.283 -	return iExtension;
 814.284 -	}
 814.285 -
 814.286 -inline void CImPop3Settings::CheckExtensionExistsL()
 814.287 -	{
 814.288 -	if (!iExtension)
 814.289 -		iExtension=new (ELeave) CImPop3Settings::TImPop3SettingsExtension;
 814.290 -	}
 814.291 -
 814.292 -inline CImPop3Settings::TImPop3SettingsExtension::TImPop3SettingsExtension() : iLoginName(NULL) , iPassword(NULL), iTlsSslDomain(NULL)
 814.293 -	{
 814.294 -	}
 814.295 -
 814.296 -#endif // #define __POP3SET_H__
   815.1 --- a/epoc32/include/popcmtm.h	Tue Mar 16 16:12:26 2010 +0000
   815.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   815.3 @@ -1,233 +0,0 @@
   815.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   815.5 -// All rights reserved.
   815.6 -// This component and the accompanying materials are made available
   815.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   815.8 -// which accompanies this distribution, and is available
   815.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  815.10 -//
  815.11 -// Initial Contributors:
  815.12 -// Nokia Corporation - initial contribution.
  815.13 -//
  815.14 -// Contributors:
  815.15 -//
  815.16 -// Description:
  815.17 -// Client MTM for the POP3 protocol
  815.18 -// 
  815.19 -//
  815.20 -
  815.21 -
  815.22 -#if !defined (__POPCMTM_H__)
  815.23 -#define __POPCMTM_H__
  815.24 -
  815.25 -#if !defined (__MIUTMSG_H__)
  815.26 -#include <miutmsg.h>
  815.27 -#endif
  815.28 -#if !defined (__MIUTPARS_H__)
  815.29 -#include <miutpars.h>		//TImMessageField
  815.30 -#endif
  815.31 -#if !defined (__POP3CMDS_H__)
  815.32 -#include <pop3cmds.h>		// KPOP3MTMConnect etc
  815.33 -#endif
  815.34 -#if !defined (__POP3SET_H__)
  815.35 -#include <pop3set.h>		// KPOP3MTMConnect etc
  815.36 -#endif
  815.37 -
  815.38 -class CImPOP3GetMail;
  815.39 -class CImEmailAutoSend;
  815.40 - 
  815.41 -///////  Pop3 Client MTM  /////////////////////////////////////////////////////////////////////////////
  815.42 -class CPop3ClientMtm : public CBaseMtm
  815.43 -/** POP3 client MTM interface.
  815.44 -
  815.45 -Most of the functions in this class are implementations of the virtual functions 
  815.46 -defined by the base class CBaseMtm. 
  815.47 -@publishedAll
  815.48 -@released
  815.49 -*/
  815.50 -	{
  815.51 -/** 
  815.52 -@deprecated
  815.53 -*/
  815.54 -
  815.55 -public:
  815.56 -	enum TImPopcNewEmailHeaderType
  815.57 -		{
  815.58 -		EForwardedEmail,
  815.59 -		EReplyToEmail,
  815.60 -		EReceiptToEmail
  815.61 -		};
  815.62 -
  815.63 -public:
  815.64 -	IMPORT_C static CPop3ClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
  815.65 -	~CPop3ClientMtm();
  815.66 -
  815.67 -	void SaveMessageL();
  815.68 -	void LoadMessageL();
  815.69 -
  815.70 -	IMPORT_C void StoreSettingsL();
  815.71 -	IMPORT_C void RestoreSettingsL();
  815.72 -
  815.73 -	CMsvOperation* ReplyL  (TMsvId aId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus);
  815.74 -	CMsvOperation* ForwardL(TMsvId aId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
  815.75 -
  815.76 -	TUint ValidateMessage(TMsvPartList aPartList);
  815.77 -	TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
  815.78 -
  815.79 -	void AddAddresseeL(const TDesC& aRealAddress);
  815.80 -	void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
  815.81 -	void RemoveAddressee(TInt aIndex);
  815.82 -
  815.83 -	IMPORT_C void SetSettingsL(const CImPop3Settings& aSettings);
  815.84 -	IMPORT_C const CImPop3Settings& Settings() const; 
  815.85 -
  815.86 -	// --- RTTI functions ---
  815.87 -	TInt QueryCapability(TUid aCapability, TInt& aResponse);
  815.88 -	void InvokeSyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter);
  815.89 -	CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId, const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
  815.90 -
  815.91 -	// Attachment functions to support the SendAs API
  815.92 -	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  815.93 -	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  815.94 -	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  815.95 -	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);	
  815.96 -	EXPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
  815.97 -	IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
  815.98 -
  815.99 -	IMPORT_C virtual TMsvId DefaultServiceL() const;
 815.100 -	IMPORT_C virtual void RemoveDefaultServiceL();
 815.101 -	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 815.102 -
 815.103 -protected:
 815.104 -	CPop3ClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
 815.105 -	void ConstructL();
 815.106 -	void ContextEntrySwitched();
 815.107 -
 815.108 -private:
 815.109 -	TBool ValidateAddress(const TPtrC& anAddress);
 815.110 -	void SendOnNextConnectionL();
 815.111 -	TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
 815.112 -	CMsvEntrySelection* FilteredChildrenLC(TBool aNewOnly, TInt aMaxEmailSize);
 815.113 -	CMsvEntrySelection* FilteredSelectionLC(TInt aMaxEmailSize, const CMsvEntrySelection& aSelection);
 815.114 -		
 815.115 -
 815.116 -
 815.117 -private:
 815.118 -	CImPop3Settings* iImPop3Settings;
 815.119 -	TImMessageField iTImMessageField;
 815.120 -	CImHeader* iHeader;
 815.121 -
 815.122 -	HBufC* iEmailAddressFormatString;	// defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>")
 815.123 -	CImEmailOperation* iImEmailOperation;
 815.124 -	CImPOP3GetMail* iImPOP3GetMail;
 815.125 -	};
 815.126 -
 815.127 -
 815.128 -class CImPOP3GetMail : public CMsvOperation
 815.129 -/** Encapsulates an operation to copy/move POP3 emails from the remote inbox to 
 815.130 -any local folder.
 815.131 -
 815.132 -Functionality is provided to:
 815.133 -
 815.134 -1. copy/move any new emails
 815.135 -
 815.136 -2. copy/move a selection of emails
 815.137 -
 815.138 -3. copy/move all emails
 815.139 -
 815.140 -4. in the Remote Inbox to a local folder.
 815.141 -
 815.142 -There are three cases for copying/moving the emails from the Remote Inbox:
 815.143 -
 815.144 -1. the user is connected to the account so just copy/move the emails
 815.145 -
 815.146 -2. the user is not connected to the account so connect, copy/move the emails, 
 815.147 -and then disconnect
 815.148 -
 815.149 -3. the user is not connected to the account so connect, copy/move the emails, 
 815.150 -and then stay online
 815.151 -
 815.152 -Objects of this type are returned from CPop3ClientMtm::InvokeAsyncFunctionL() 
 815.153 -when a suitable get command is requested. 
 815.154 -@publishedAll
 815.155 -@released
 815.156 -*/
 815.157 -	{
 815.158 -public:
 815.159 -	/** Defines types of get mail operation. */
 815.160 -	enum TImPOP3GetMailType
 815.161 -	{
 815.162 -	/** Connect and copy new mail and stay online. */
 815.163 -		EConnectAndCopyNewMailAndStayOnline,
 815.164 -	/** Connect and copy new mail and disconnect. */
 815.165 -		EConnectAndCopyNewMailAndDisconnect,
 815.166 -	/** Connect and move new mail and stay online. */
 815.167 -		EConnectAndMoveNewMailAndStayOnline,
 815.168 -	/** Connect and move new mail and disconnect. */
 815.169 -		EConnectAndMoveNewMailAndDisconnect,
 815.170 -	/** Connect and copy mail selection and stay online. */
 815.171 -		EConnectAndCopyMailSelectionAndStayOnline,
 815.172 -	/** Connect and copy mail selection and disconnect. */
 815.173 -		EConnectAndCopyMailSelectionAndDisconnect,
 815.174 -	/** Connect and move mail selection and stay online. */
 815.175 -		EConnectAndMoveMailSelectionAndStayOnline,
 815.176 -	/** Connect and move mail selection and disconnect. */
 815.177 -		EConnectAndMoveMailSelectionAndDisconnect,
 815.178 -	/** Connect and copy all mail and stay online. */
 815.179 -		EConnectAndCopyAllMailAndStayOnline,
 815.180 -	/** Connect and copy all mail and disconnect. */
 815.181 -		EConnectAndCopyAllMailAndDisconnect,
 815.182 -	/** Connect and move all mail and stay online. */
 815.183 -		EConnectAndMoveAllMailAndStayOnline,
 815.184 -	/** Connect and move all mail and disconnect. */
 815.185 -		EConnectAndMoveAllMailAndDisconnect
 815.186 -	};
 815.187 -
 815.188 -public:
 815.189 -	IMPORT_C CMsvOperation* GetMailL(CPop3ClientMtm& aPop3ClientMtm, TRequestStatus& aObserverRequestStatus, const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo, TImPOP3GetMailType aPOP3GetMailType);
 815.190 -	IMPORT_C const TDesC8& FinalProgress();
 815.191 -	IMPORT_C ~CImPOP3GetMail();
 815.192 -	void DoCancel();
 815.193 -	void RunL();
 815.194 -	const TDesC8& ProgressL();
 815.195 -private:
 815.196 -	CImPOP3GetMail(CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus, CPop3ClientMtm& aPop3ClientMtm, TImPOP3GetMailType aPOP3GetMailType);
 815.197 -	void ConstructL(const CMsvEntrySelection& aMsvEntrySelection, TDes8& aPop3GetMailInfo);
 815.198 -	void SelectNextStateL();					// selects next state to go to
 815.199 -	void ChangeStateL();					// initiates the next state operation
 815.200 -	void SelectAndChangeToNextStateL();
 815.201 -	void RequestComplete(TInt aError);
 815.202 -	void Complete();
 815.203 -	void ConnectToMailboxL();
 815.204 -	void CopyMoveNewMessagesL(TBool aCopy);
 815.205 -	void CopyMoveMessageSelectionL(TBool aCopy);
 815.206 -	void CopyMoveAllMessagesL(TBool aCopy);
 815.207 -	void DisconnectFromMailboxL();
 815.208 -	void ResetProgress();
 815.209 -	void StoreProgressL();
 815.210 -private:
 815.211 -	enum TImPOP3GetMailState
 815.212 -		{
 815.213 -		EConnectToMailbox,
 815.214 -		ECopyNewMessages,
 815.215 -		EMoveNewMessages,
 815.216 -		ECopyMessageSelection,
 815.217 -		EMoveMessageSelection,
 815.218 -		ECopyAllMessages,
 815.219 -		EMoveAllMessages,
 815.220 -		EDisconnectFromMailbox,
 815.221 -		EFinished
 815.222 -		};
 815.223 -	
 815.224 -	CPop3ClientMtm& iPop3ClientMtm;
 815.225 -	CMsvEntrySelection* iMsvEntrySelection;
 815.226 -	CMsvOperation* iMsvOperation;
 815.227 -
 815.228 -	TPop3Progress iProgress;
 815.229 -	TPop3Progress iErrorProgress;
 815.230 -	TImPOP3GetMailState iState;
 815.231 -	TImPOP3GetMailType iPOP3GetMailType;
 815.232 -	TPckgBuf<TPop3Progress> iProgressBuf;
 815.233 -	TPckgBuf<TImPop3GetMailInfo> iPop3GetMailInfo;
 815.234 -	};
 815.235 -
 815.236 -#endif // __POPCMTM_H__
   816.1 --- a/epoc32/include/pragmamessage.h	Tue Mar 16 16:12:26 2010 +0000
   816.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   816.3 @@ -1,32 +0,0 @@
   816.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   816.5 -// All rights reserved.
   816.6 -// This component and the accompanying materials are made available
   816.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   816.8 -// which accompanies this distribution, and is available
   816.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  816.10 -//
  816.11 -// Initial Contributors:
  816.12 -// Nokia Corporation - initial contribution.
  816.13 -//
  816.14 -// Contributors:
  816.15 -//
  816.16 -// Description:
  816.17 -// Created at: 20-Dec-99 10:38:03 AM
  816.18 -// Defines a macro for the file line pragma message
  816.19 -// 
  816.20 -//
  816.21 -
  816.22 -
  816.23 -#if !defined __PRAGMAMESSAGE_H__
  816.24 -#define __PRAGMAMESSAGE_H__
  816.25 -
  816.26 -#define _QUOTE(x) # x
  816.27 -#define QUOTE(x) _QUOTE(x)
  816.28 -
  816.29 -// Use __FILE__LINE__ as a string containing "File.x(line#)" for example:
  816.30 -//     #pragma message( __FILE__LINE__ "Remove this line after testing.")
  816.31 -// The above example will display the file name and line number in the build window
  816.32 -// in such a way as to allow you to double click on it to go to the line.
  816.33 -#define __FILE__LINE__ __FILE__ "(" QUOTE(__LINE__) ") : "
  816.34 -
  816.35 -#endif	// __PRAGMAMESSAGE_H__
   817.1 --- a/epoc32/include/prninf.h	Tue Mar 16 16:12:26 2010 +0000
   817.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   817.3 @@ -1,254 +0,0 @@
   817.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   817.5 -// All rights reserved.
   817.6 -// This component and the accompanying materials are made available
   817.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   817.8 -// which accompanies this distribution, and is available
   817.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  817.10 -//
  817.11 -// Initial Contributors:
  817.12 -// Nokia Corporation - initial contribution.
  817.13 -//
  817.14 -// Contributors:
  817.15 -//
  817.16 -// Description:
  817.17 -//
  817.18 -
  817.19 -#ifndef __PRNINF_H__
  817.20 -#define __PRNINF_H__
  817.21 -
  817.22 -#if !defined(__E32STD_H__)
  817.23 -#include <e32std.h>
  817.24 -#endif
  817.25 -#if !defined(__GDI_H__)
  817.26 -#include <gdi.h>
  817.27 -#endif
  817.28 -#if !defined(__FLDBASE_H__)
  817.29 -#include <fldbase.h>
  817.30 -#endif
  817.31 -
  817.32 -// Classes defined
  817.33 -//class TPageNumbers;
  817.34 -class CHeaderFooter;
  817.35 -class TPrintParameters;		
  817.36 -class TPageMargins;
  817.37 -class MPrintProcessObserver;	
  817.38 -
  817.39 -// classes referenced
  817.40 -class RReadStream;
  817.41 -class RWriteStream;
  817.42 -class CRichText;
  817.43 -class CParaFormatLayer;
  817.44 -class CCharFormatLayer;
  817.45 -class MFieldFileNameInfo;
  817.46 -class MFieldPageNumInfo;
  817.47 -class MFieldNumPagesInfo;
  817.48 -//////////////////
  817.49 -
  817.50 -
  817.51 -class TPrintParameters
  817.52 -/** Print parameters.
  817.53 -
  817.54 -This data is associated with a particular print request, not with the document 
  817.55 -to be printed, so is separate from the print setup information.
  817.56 -
  817.57 -An object of this class is passed to CPrintSetup::StartPrintL() and to CPrintSetup::StartPreviewPrintL().
  817.58 -
  817.59 -@see CPrintSetup 
  817.60 -@publishedAll 
  817.61 -@released */
  817.62 -	{
  817.63 -public:
  817.64 -	IMPORT_C TPrintParameters(); // sets to 1,0,0
  817.65 -public:
  817.66 -	/** The number of copies to print. */
  817.67 -	TInt iNumCopies;									
  817.68 -	/** The first page to be printed. 
  817.69 -	
  817.70 -	This value should be less than or equal to iLastPage. Zero indicates the first page 
  817.71 -	in the document. */
  817.72 -	TInt iFirstPage;			
  817.73 -	/** The last page to be printed. 
  817.74 -	
  817.75 -	This value should be greater than or equal to iFirstPage. Zero indicates the first 
  817.76 -	page in the document. */
  817.77 -	TInt iLastPage;
  817.78 -	};
  817.79 -
  817.80 -class TPageMargins
  817.81 -/** Page margins.
  817.82 -
  817.83 -Page margins are accessed via the public iPageMarginsInTwips member of class 
  817.84 -CPrintSetup. A single margin settings object applies throughout a document, 
  817.85 -so that gutter margins are not supported.
  817.86 -
  817.87 -If the document contains headers and footers, they are located within the 
  817.88 -top and bottom margins respectively. 
  817.89 -
  817.90 -@publishedAll 
  817.91 -@released */
  817.92 -	{
  817.93 -public:
  817.94 -	IMPORT_C void InternalizeL(RReadStream& aStream); 	
  817.95 -	IMPORT_C void ExternalizeL(RWriteStream& aStream)const;
  817.96 -public:
  817.97 -	/** The distance between the top of the header and the top of the page in twips 
  817.98 -	or pixels.
  817.99 -	
 817.100 -	This must be less than the height of the top margin to ensure that the header 
 817.101 -	is visible. */
 817.102 -	TInt iHeaderOffset;
 817.103 -	/** The distance between the top of the footer and the top of the bottom margin 
 817.104 -	in twips or pixels. 
 817.105 -	
 817.106 -	This must be less than the height of the bottom margin to ensure that the 
 817.107 -	footer is visible. */
 817.108 -	TInt iFooterOffset;
 817.109 -	/** The widths of each of the four margins in twips or pixels.
 817.110 -	
 817.111 -	@see TMargins */
 817.112 -	TMargins iMargins;
 817.113 -	};
 817.114 -
 817.115 -class CHeaderFooter : public CBase, private MTextFieldFactory
 817.116 -/** A document header or footer.
 817.117 -
 817.118 -The header is located in the top page margin and the footer in the 
 817.119 -bottom page margin. No more than one header or footer can exist in a document.
 817.120 -
 817.121 -CHeaderFooter derives from MTextFieldFactory. This allows the insertion of 
 817.122 -various fields, including page number, current date or time and filename.
 817.123 -
 817.124 -Rich text manipulation and formatting functions can be accessed through 
 817.125 -the rich text object which is owned by the header/footer.
 817.126 -
 817.127 -The header and footer are retrieved using the CPrintSetup::Header() and Footer() 
 817.128 -functions and they are stored and restored together with the rest of the print 
 817.129 -setup information.
 817.130 -
 817.131 -@publishedAll 
 817.132 -@released */
 817.133 -	{
 817.134 -public:
 817.135 -	IMPORT_C static CHeaderFooter* NewL();
 817.136 -	IMPORT_C virtual ~CHeaderFooter();
 817.137 -	//
 817.138 -	IMPORT_C void CreateTextL();
 817.139 -	IMPORT_C void SetFirstPageToPrintTo(TInt aPageNum); // allows the first few pages of a doc not to have a header on them
 817.140 -	inline TInt FirstPageToPrintTo()const; // relative to the first page being numbered 0
 817.141 -	//
 817.142 -	// persistence
 817.143 -	IMPORT_C TStreamId StoreL(CStreamStore& aStore)const;
 817.144 -	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aStreamId,MPictureFactory* aFactory);
 817.145 -	IMPORT_C void StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap)const;
 817.146 -	IMPORT_C void RestoreComponentsL(const CStreamStore& aStore,MPictureFactory* aFactory);
 817.147 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 817.148 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 817.149 -	//
 817.150 -	// text bits
 817.151 -	IMPORT_C CRichText* Text()const;
 817.152 -	IMPORT_C CParaFormatLayer* ParaFormat()const;
 817.153 -	IMPORT_C CCharFormatLayer* CharFormat()const;
 817.154 -	IMPORT_C void SetText(CRichText* aText); // takes ownership
 817.155 -	IMPORT_C void SetParaFormat(CParaFormatLayer* aParaFormat); // takes ownership
 817.156 -	IMPORT_C void SetCharFormat(CCharFormatLayer* aCharFormat); // takes ownership
 817.157 -	//
 817.158 -	// field bits
 817.159 -	IMPORT_C void SetFileNameInfo(const MFieldFileNameInfo& aFileNameInfo); // call if you want headers/footers to support filename fields
 817.160 -	IMPORT_C void SetNumPagesInfo(const MFieldNumPagesInfo& aNumPagesInfo); // call if you want headers/footers to support "total number of pages" fields
 817.161 -	inline MFieldFileNameInfo* FileNameFieldInfo()const;
 817.162 -	inline MFieldNumPagesInfo* NumPagesFieldInfo()const;
 817.163 -	//
 817.164 -	void SetPageNumInfo(const MFieldPageNumInfo& aPageNumInfo); // called by CPrintSetup
 817.165 -private:
 817.166 -	CHeaderFooter();
 817.167 -	void CreateFormatLayersL();
 817.168 -	// from MTextFieldFactory
 817.169 -	CTextField* NewFieldL(TUid aFieldType);
 817.170 -private:
 817.171 -	TInt iFirstPageToPrintTo; // relative to the first page being numbered 0
 817.172 -	MFieldFileNameInfo* iFileNameInfo;
 817.173 -	MFieldPageNumInfo* iPageNumInfo;
 817.174 -	MFieldNumPagesInfo* iNumPagesInfo;
 817.175 -	CRichText* iText; // RichText Doc Handle
 817.176 -	CParaFormatLayer* iParaLayer;
 817.177 -	CCharFormatLayer* iCharLayer;
 817.178 -private:
 817.179 -	enum { ETextExists = 0x0001 };
 817.180 -	};
 817.181 -
 817.182 -class MPrintProcessObserver
 817.183 -/** Print progress and status notification interface class.
 817.184 -
 817.185 -The notification functions are called before, during and after a print or 
 817.186 -print preview operation, to give notification of its progress.
 817.187 -
 817.188 -The print process observer will often be the GUI's standard print progress 
 817.189 -or print preview dialog.
 817.190 -
 817.191 -An object of a class which implements this interface may be passed as a parameter 
 817.192 -to CPrintSetup::StartPrintL(), or to CPrintSetup::StartPreviewPrintL(). 
 817.193 -
 817.194 -@publishedAll 
 817.195 -@released */
 817.196 -	{
 817.197 -public:
 817.198 -	/** Notifies that a print or print preview operation is about to begin.
 817.199 -	
 817.200 -	It may be used to display information about the document to be printed. It 
 817.201 -	is called once, immediately before printing or print previewing begins.
 817.202 -	
 817.203 -	When subclassing, add variables to store initialisation information as required.
 817.204 -	
 817.205 -	@param aPrintParams The parameters for the print job. */
 817.206 -	virtual void NotifyPrintStarted(TPrintParameters aPrintParams)=0;
 817.207 -	/** Notifies that a band is about to be printed.
 817.208 -	
 817.209 -	It may be used to display print progress information, including the current 
 817.210 -	page number. It is called immediately before each band is printed.
 817.211 -	
 817.212 -	@param aPercentageOfPagePrinted The percentage of the page that has been printed.
 817.213 -	@param aCurrentPageNum The number of the page currently being printed.
 817.214 -	@param aCurrentCopyNum The number of the copy currently being printed (if multiple 
 817.215 -	copies are being printed). */
 817.216 -	virtual void NotifyBandPrinted(TInt aPercentageOfPagePrinted, TInt aCurrentPageNum, TInt aCurrentCopyNum)=0;
 817.217 -	/** Notifies that the print or print preview operation has completed.
 817.218 -	
 817.219 -	It may be used to display information about how the operation completed, for 
 817.220 -	example any errors that occurred. It is called once, immediately after the 
 817.221 -	print job terminates.
 817.222 -	
 817.223 -	@param anErrorCode KErrNone if the print job completed successfully, otherwise 
 817.224 -	another of the system-wide error codes. */
 817.225 -	virtual void NotifyPrintEnded(TInt anErrorCode)=0;
 817.226 -	//
 817.227 -	};
 817.228 -
 817.229 -
 817.230 -//
 817.231 -// inlines
 817.232 -//
 817.233 -
 817.234 -inline TInt CHeaderFooter::FirstPageToPrintTo()const
 817.235 -/** Gets the first page on which the header or footer is to be printed.
 817.236 -
 817.237 -Page numbering begins at zero.
 817.238 -
 817.239 -@return The number of the first page on which the header or footer is to be 
 817.240 -printed. */
 817.241 -	{ return iFirstPageToPrintTo; }
 817.242 -
 817.243 -inline MFieldFileNameInfo* CHeaderFooter::FileNameFieldInfo()const
 817.244 -/** Gets the object which implements the MFieldFileNameInfo interface, as set by 
 817.245 -SetFileNameInfo().
 817.246 -
 817.247 -@return The object which implements the MFieldFileNameInfo interface. */
 817.248 -	{ return iFileNameInfo; }
 817.249 -
 817.250 -inline MFieldNumPagesInfo* CHeaderFooter::NumPagesFieldInfo()const
 817.251 -/** Gets the object which implements the MFieldNumPagesInfo interface, as set by 
 817.252 -SetNumPagesInfo().
 817.253 -
 817.254 -@return The object which implements the MFieldNumPagesInfo interface. */
 817.255 -	{ return iNumPagesInfo; }
 817.256 -
 817.257 -#endif
   818.1 --- a/epoc32/include/prnprev.h	Tue Mar 16 16:12:26 2010 +0000
   818.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   818.3 @@ -1,200 +0,0 @@
   818.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   818.5 -// All rights reserved.
   818.6 -// This component and the accompanying materials are made available
   818.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   818.8 -// which accompanies this distribution, and is available
   818.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  818.10 -//
  818.11 -// Initial Contributors:
  818.12 -// Nokia Corporation - initial contribution.
  818.13 -//
  818.14 -// Contributors:
  818.15 -//
  818.16 -// Description:
  818.17 -//
  818.18 -
  818.19 -#if !defined (__PRNPREV_H__)
  818.20 -#define __PRNPREV_H__
  818.21 -
  818.22 -#if !defined(__E32STD_H__)
  818.23 -#include  <e32std.h>
  818.24 -#endif
  818.25 -#if !defined(__E32BASE_H__)
  818.26 -#include  <e32base.h>
  818.27 -#endif
  818.28 -#if !defined(__PRNSETUP_H__)
  818.29 -#include <prnsetup.h>
  818.30 -#endif
  818.31 -
  818.32 -// classes defined:
  818.33 -class TPrintPreviewFormat;
  818.34 -class TPreviewPanel;
  818.35 -class CPrintPreviewImage;
  818.36 -//
  818.37 -
  818.38 -// forward references:
  818.39 -class RWsSession;
  818.40 -class RWindow;
  818.41 -class CPrintPreviewDevice;
  818.42 -//
  818.43 -
  818.44 -
  818.45 -class TPrintPreviewFormat
  818.46 -/** Print preview format information.
  818.47 -
  818.48 -The print preview format information is accessed via its public data members. 
  818.49 -Typically there is a system wide TPrintPreviewFormat supplied by the GUI framework. 
  818.50 -
  818.51 -Preview information includes:
  818.52 -
  818.53 -- panel settings: multiple pages can be previewed at once; the display area 
  818.54 -for each page is termed a panel.
  818.55 -
  818.56 -- label settings: each panel can have an associated label, which specifies the 
  818.57 -corresponding document page number 
  818.58 -
  818.59 -@publishedAll 
  818.60 -@released */
  818.61 -	{
  818.62 -public:
  818.63 -	/** The minimum panel gutter size, in pixels. */
  818.64 -	TSize iMinPanelGutterInPixels;
  818.65 -	/** The width of the panel shadow, in pixels. */
  818.66 -	TInt iPanelShadowWidthInPixels;
  818.67 -	/** The colour of the panel shadow. */
  818.68 -	TRgb iPanelShadowColor;
  818.69 -	/** The panel margin colour. */
  818.70 -	TRgb iPanelMarginColor;
  818.71 -	/** The color of both the paper and the window background. */
  818.72 -	TRgb iPreviewBackgroundColor;
  818.73 -	/** X pixel offset of the label text from the panel edge. */
  818.74 -	TInt iLabelOffsetInPixels;
  818.75 -	/** Font specification for the label text. */
  818.76 -	TFontSpec iLabelFontSpecInPixels;
  818.77 -	};
  818.78 -
  818.79 -
  818.80 -class CPrintPreviewImage : public CBase, private MPrintProcessObserver, private MPageRegionPrinter
  818.81 -/** Print preview image.
  818.82 -
  818.83 -This class provides a standard print preview image. An object of this type 
  818.84 -should be owned by a control, which is in turn owned by the print preview 
  818.85 -dialog. The control's window provides the region into which this object draws 
  818.86 -the preview image.
  818.87 -
  818.88 -The class provides a callback to the application code that draws the preview 
  818.89 -pages. 
  818.90 -
  818.91 -@publishedAll 
  818.92 -@released */
  818.93 -	{
  818.94 -public:
  818.95 -	/** Margin display state flags. */
  818.96 -	enum TMarginState {
  818.97 -		/** Show margins in print preview image. */
  818.98 -		EShowMargins,
  818.99 -		/** Hide margins in print preview image. */
 818.100 -		EHideMargins
 818.101 -		};
 818.102 -public:
 818.103 -	IMPORT_C static CPrintPreviewImage* NewL(CPrintSetup& aPrintSetup,MPageRegionPrinter& aBodyPrinter,
 818.104 -											RWsSession& aWsSession,RWindow& aWindow,const TSize& aMaxWindowSize,
 818.105 -											const TPrintPreviewFormat& aStaticFormat);
 818.106 -	IMPORT_C virtual ~CPrintPreviewImage();
 818.107 -	IMPORT_C void SetMargins(TMarginState aState); // whether  or not to show margins
 818.108 -	IMPORT_C void SetObserver(MPrintProcessObserver& aObserver);
 818.109 -	IMPORT_C void SetNumBands(TInt aNum);
 818.110 -	IMPORT_C void FormatL(TInt aNumPagesInDoc,TInt aFirstPageToDisplay,TInt aNumPagesToView); // call when scrolling or changing num pages to view
 818.111 -	IMPORT_C void DrawL(const TPoint& aOrigin,const TRect& aInvalidRegion); // aOrigin is the point in the window I will treat as the origin (ie offset)
 818.112 -	//
 818.113 -private:
 818.114 -	class TPreviewPanel;
 818.115 -	class TRange
 818.116 -		{
 818.117 -	public:
 818.118 -		TInt iFrom;
 818.119 -		TInt iTo;
 818.120 -		};
 818.121 -private:
 818.122 -	CPrintPreviewImage(CPrintSetup& aPrintSetup,MPageRegionPrinter& aBodyPrinter,RWsSession& aWsSession,
 818.123 -						RWindow& aWindow,const TSize& aMaxWindowSize,const TPrintPreviewFormat& aStaticFormat);
 818.124 -	void ConstructL();
 818.125 -	void CalculateHeaderFooterRects(TRect& aHeaderRectInPixels,TRect& aFooterRectInPixels);
 818.126 -	TInt SetPanelArrayL(const TInt aFirstPage,const TInt aNumPagesToView); 
 818.127 -	void SetLabelWidth();
 818.128 -	void ScrollPanels();
 818.129 -	void DrawBorder(CGraphicsContext* aGc); // and shadow
 818.130 -	void DrawMargins(CGraphicsContext* aGc); // including header/footer lines
 818.131 -	void DrawLabel(CGraphicsContext* aGc,TInt aPageNo);
 818.132 -	void DrawToGutter(CGraphicsContext* aGc,TInt aPageNo); // blanks all the gutter areas associated to a particular panel
 818.133 -	void DrawExtremities(CGraphicsContext* aGc); // blanks very left and right of the window
 818.134 -	inline TBool IsFirstPanel(TInt aPageNum);
 818.135 -	inline TBool IsLastPanel(TInt aPageNum);
 818.136 -	// from MPrintProcessObserver
 818.137 -	virtual void NotifyPrintStarted(TPrintParameters aPrintParams);
 818.138 -	virtual void NotifyBandPrinted(TInt aPercentageOfPagePrinted, TInt aCurrentPageNum, TInt aCurrentCopyNum);
 818.139 -	virtual void NotifyPrintEnded(TInt anErrorCode);
 818.140 -	// from MPageRegionPrinter
 818.141 -	virtual void PrintBandL(CGraphicsDevice* aDevice,TInt aPageNo,const TBandAttributes& aBand);
 818.142 -private:
 818.143 -	CPrintPreviewDevice* iDevice;
 818.144 -	CPrintSetup* iPrintSetup;
 818.145 -	MPageRegionPrinter* iAppBodyPrinter;
 818.146 -	MPrintProcessObserver* iObserver; // may be null
 818.147 -	RWsSession* iWsSession;
 818.148 -	RWindow* iWindow;
 818.149 -	CFont* iLabelFont;
 818.150 -	CArrayFix<TPreviewPanel>* iPanelArray;
 818.151 -	//
 818.152 -	TPrintPreviewFormat iFormat;
 818.153 -	TPrintParameters iPrintParams; // current preview range
 818.154 -	TMarginState iMarginState; // whether the margins are on or not
 818.155 -	TSize iPanelSizeInPixels;
 818.156 -	TSize iWinSize; // size of the window (for layout purposes)
 818.157 -	TPoint iOrigin; // origin in the window to use for drawing
 818.158 -	TSize iLabelSize;
 818.159 -	TSize iActualGutter; // gap from the edge of the panel to either screen edge or adjacent panel
 818.160 -	TInt iNumPagesInDoc; 
 818.161 -	TInt iNumBands;
 818.162 -	TSize iRndError; // rounding error from calculation of iActualGutter
 818.163 -	TRange iDrawRange; // the pages that actually require drawing - ie have not been scrolled 
 818.164 -	};
 818.165 -
 818.166 -
 818.167 -/** Internalises the margin state from a read stream.
 818.168 -
 818.169 -@param aThing The margin state to be internalised - on or off.
 818.170 -@param aStream The read stream from which the margin state is to be internalised. 
 818.171 -
 818.172 -@publishedAll 
 818.173 -@released */
 818.174 -IMPORT_C void InternalizeL(CPrintPreviewImage::TMarginState& aThing,RReadStream& aStream);
 818.175 -
 818.176 -inline RWriteStream& operator<<(RWriteStream& aStream,const CPrintPreviewImage::TMarginState& aThing) 
 818.177 -/**
 818.178 -@publishedAll 
 818.179 -@released 
 818.180 -*/
 818.181 -	{aStream.WriteUint8L(aThing);return aStream;}
 818.182 -
 818.183 -inline RReadStream& operator>>(RReadStream& aStream,CPrintPreviewImage::TMarginState& aThing) 
 818.184 -/**
 818.185 -@publishedAll 
 818.186 -@released 
 818.187 -*/
 818.188 -	{InternalizeL(aThing,aStream);return aStream;}
 818.189 -
 818.190 -//
 818.191 -// inlines
 818.192 -//
 818.193 -
 818.194 -// move to private source...
 818.195 -
 818.196 -inline TBool CPrintPreviewImage::IsFirstPanel(TInt aPageNum) 
 818.197 -	{ return aPageNum==iPrintParams.iFirstPage; }
 818.198 -
 818.199 -inline TBool CPrintPreviewImage::IsLastPanel(TInt aPageNum) 
 818.200 -	{ return aPageNum==iPrintParams.iLastPage; }
 818.201 -
 818.202 -
 818.203 -#endif
   819.1 --- a/epoc32/include/prnsetup.h	Tue Mar 16 16:12:26 2010 +0000
   819.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   819.3 @@ -1,168 +0,0 @@
   819.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   819.5 -// All rights reserved.
   819.6 -// This component and the accompanying materials are made available
   819.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   819.8 -// which accompanies this distribution, and is available
   819.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  819.10 -//
  819.11 -// Initial Contributors:
  819.12 -// Nokia Corporation - initial contribution.
  819.13 -//
  819.14 -// Contributors:
  819.15 -//
  819.16 -// Description:
  819.17 -//
  819.18 -
  819.19 -#ifndef __PRNSETUP_H__
  819.20 -#define __PRNSETUP_H__
  819.21 -
  819.22 -#if !defined(__E32STD_H__)
  819.23 -#include <e32std.h>
  819.24 -#endif
  819.25 -#if !defined(__E32BASE_H__)
  819.26 -#include <e32base.h>
  819.27 -#endif
  819.28 -#if !defined(__FLDBLTIN_H__)
  819.29 -#include <fldbltin.h>
  819.30 -#endif
  819.31 -#if !defined(__PRNINF_H__)
  819.32 -#include <prninf.h>
  819.33 -#endif
  819.34 -
  819.35 -/** @publishedPartner */
  819.36 -const TInt KErrMorePages=4747; // Leave with this error code to print extra pages in PrintBandL
  819.37 -
  819.38 -/** @internalTechnology */
  819.39 -_LIT( KDefaultPrinterDriverPath, "\\resource\\printers\\" );
  819.40 -
  819.41 -// Classes defined //
  819.42 -class CPrintSetup;
  819.43 -//
  819.44 -
  819.45 -// Forward Reference
  819.46 -class CPreviewProcess;
  819.47 -class CPrintProcess;
  819.48 -class CPdrModelList;
  819.49 -class CPdrDevice;
  819.50 -class CHeaderFooter;
  819.51 -class TPageSpec;
  819.52 -class RReadStream;
  819.53 -class RWriteStream;
  819.54 -class MPageRegionPrinter;
  819.55 -class RFs;
  819.56 -class CPrinterDriver;
  819.57 -class CPrinterDriverUI;
  819.58 -//
  819.59 -
  819.60 -class CPrintSetup : public CBase, private MFieldPageNumInfo
  819.61 -/** Print setup information.
  819.62 -
  819.63 -This class stores the information needed to set up, start and stop a print 
  819.64 -job. This includes the target printer device, the page margins and 
  819.65 -the header and footer. The page specification, (page orientation and page 
  819.66 -dimensions) can be set via the printer device.
  819.67 -
  819.68 -Print setup information is associated with a document and is stored as part 
  819.69 -of the persistent form of the document. Print parameters on the other hand, 
  819.70 -(class TPrintParameters) are associated with a particular print request, 
  819.71 -not with the document itself, so are not part of the print setup information. 
  819.72 -
  819.73 -@publishedAll
  819.74 -@released */
  819.75 -	{
  819.76 -public:
  819.77 -	IMPORT_C static CPrintSetup* NewL();
  819.78 -	IMPORT_C virtual ~CPrintSetup();
  819.79 -	//
  819.80 -	// printer model selection/control functions
  819.81 -	IMPORT_C void AddPrinterDriverDirL(const TDesC& aDriverDir);
  819.82 -	IMPORT_C CPrinterModelList* ModelNameListL(RFs& aFs);
  819.83 -	IMPORT_C void FreeModelList();
  819.84 -	IMPORT_C void CreatePrinterDeviceL(TInt aModelIndex); // requires ModelList to exist
  819.85 -	IMPORT_C void CreatePrinterDeviceL(TUid aModelUid,RFs& aFs);
  819.86 -	IMPORT_C CPrinterDevice* PrinterDevice()const;
  819.87 -	IMPORT_C CPrinterDriverUI* CreatePrinterDriverUIL(); // ownership is transfered to the caller
  819.88 -	//
  819.89 -	// print functions
  819.90 -	IMPORT_C void EndPrint();
  819.91 -	IMPORT_C TInt StartPrintL(const TPrintParameters& aPrintParams,MPageRegionPrinter& aBodyPrinter,
  819.92 -				CPrinterPort* aPort,MPrintProcessObserver* anObserver);
  819.93 -	IMPORT_C TInt StartPreviewPrintL(const TPrintParameters& aPrintParams,MPageRegionPrinter& aBodyPrinter,
  819.94 -				MPrintProcessObserver* anObserver,CGraphicsDevice& aPreviewDev,const TRect& aHeaderRectInPixels,
  819.95 -				const TRect& aFooterRectInPixels,TInt aNumBands);
  819.96 -	//
  819.97 -	// accessors
  819.98 -	inline CHeaderFooter* Header()const;
  819.99 -	inline CHeaderFooter* Footer()const;
 819.100 -	//
 819.101 -	// persistence
 819.102 -	IMPORT_C TStreamId StoreL(CStreamStore& aStore)const;
 819.103 -	IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aStreamId,const MFieldFileNameInfo* aFileNameInfo=NULL,const MFieldNumPagesInfo* aNumPagesInfo=NULL,MPictureFactory* aFactory=NULL);
 819.104 -	IMPORT_C void StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap)const;
 819.105 -	IMPORT_C void RestoreComponentsL(const CStreamStore& aStore,const MFieldFileNameInfo* aFileNameInfo=NULL,const MFieldNumPagesInfo* aNumPagesInfo=NULL,MPictureFactory* aFactory=NULL);
 819.106 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 819.107 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 819.108 -	//
 819.109 -private:
 819.110 -	CPrintSetup();
 819.111 -	void ConstructL();
 819.112 -	void DoStartPrintL(const TPrintParameters& aPrintParams,MPageRegionPrinter& aBodyPrinter,MPrintProcessObserver* aObserver,CPrinterPort* aPort);
 819.113 -	void InitializePrintingL(CGraphicsDevice* aPrinterDev,const TPrintParameters& aPrintParams,MPrintProcessObserver* aObserver);
 819.114 -	void InitializePrintingL(const TPrintParameters& aPrintParams,MPrintProcessObserver* aObserver,
 819.115 -									 const TRect& aHeaderRectInPixels,const TRect& aFooterRectInPixels);
 819.116 -	// from MFieldPageNumInfo
 819.117 -	TInt UpdateFieldPageNum()const;
 819.118 -public:
 819.119 -	// Info regarding print setup etc.
 819.120 -	/** The header and footer offset and the width of the four margins. 
 819.121 -	
 819.122 -	All measurements are in twips.
 819.123 -	
 819.124 -	@see TPageMargins */
 819.125 -	TPageMargins iPageMarginsInTwips;
 819.126 -	/** The number of the first page in the document.
 819.127 -	
 819.128 -	This value is used for printing or displaying page numbering. Note that all 
 819.129 -	other page numbering is zero indexed, to preserve independence from user-defined 
 819.130 -	page numbering. */
 819.131 -	TInt iNumOfFirstPage; // value to start page numbering at
 819.132 -private:
 819.133 -	enum {
 819.134 -		ENumberFirstPage = 0x0001,
 819.135 -		};
 819.136 -private:
 819.137 -	CHeaderFooter* iHeader;
 819.138 -	CHeaderFooter* iFooter;
 819.139 -	CPrinterDriver* iPrinterDriver; // the target printer driver
 819.140 -	CPreviewProcess* iPrintProcess;
 819.141 -	CPdrModelList* iModelList;
 819.142 -	MPrintProcessObserver* iPrintObserver;
 819.143 -	TPrintParameters iPrintParams; // not persisted
 819.144 -	CArrayFixSeg<TFileName>* iDriverDirList;
 819.145 -	};
 819.146 -
 819.147 -
 819.148 -//
 819.149 -// inlines
 819.150 -//
 819.151 -
 819.152 -inline CHeaderFooter* CPrintSetup::Header()const
 819.153 -/** Gets the header.
 819.154 -
 819.155 -The CPrintSetup object owns the header and footer. CPrintSetup implements 
 819.156 -the MFieldPageNumInfo interface, which allows page numbering to be easily 
 819.157 -added to fields.
 819.158 -
 819.159 -@return The header. */
 819.160 -	{ return iHeader; }
 819.161 -
 819.162 -inline CHeaderFooter* CPrintSetup::Footer()const
 819.163 -/** Gets the footer.
 819.164 -
 819.165 -@return The footer. */
 819.166 -	{ return iFooter; }
 819.167 -
 819.168 -
 819.169 -
 819.170 -
 819.171 -#endif
   820.1 --- a/epoc32/include/prnuids.h	Tue Mar 16 16:12:26 2010 +0000
   820.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   820.3 @@ -1,32 +0,0 @@
   820.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
   820.5 -// All rights reserved.
   820.6 -// This component and the accompanying materials are made available
   820.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   820.8 -// which accompanies this distribution, and is available
   820.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  820.10 -//
  820.11 -// Initial Contributors:
  820.12 -// Nokia Corporation - initial contribution.
  820.13 -//
  820.14 -// Contributors:
  820.15 -//
  820.16 -// Description:
  820.17 -//
  820.18 -
  820.19 -#ifndef __PRNUIDS_H__
  820.20 -#define __PRNUIDS_H__
  820.21 -
  820.22 -#if !defined(__E32STD_H__)
  820.23 -#include <e32std.h>
  820.24 -#endif
  820.25 -
  820.26 -
  820.27 -/**
  820.28 -@publishedAll
  820.29 -@released
  820.30 -*/
  820.31 -// Uid of the stream in which CPrintSetup data should be stored
  820.32 -const TUid KUidPrintSetupStream={268435717};
  820.33 -
  820.34 -
  820.35 -#endif
   821.1 --- a/epoc32/include/remconbatterytarget.h	Tue Mar 16 16:12:26 2010 +0000
   821.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   821.3 @@ -1,83 +0,0 @@
   821.4 -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   821.5 -// All rights reserved.
   821.6 -// This component and the accompanying materials are made available
   821.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   821.8 -// which accompanies this distribution, and is available
   821.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  821.10 -//
  821.11 -// Initial Contributors:
  821.12 -// Nokia Corporation - initial contribution.
  821.13 -//
  821.14 -// Contributors:
  821.15 -//
  821.16 -// Description:
  821.17 -//
  821.18 -
  821.19 -
  821.20 -
  821.21 -/**
  821.22 - @file
  821.23 - @publishedAll
  821.24 - @released  
  821.25 -*/
  821.26 -
  821.27 -#ifndef REMCONBATTERYTARGET_H
  821.28 -#define REMCONBATTERYTARGET_H
  821.29 -
  821.30 -#include <e32base.h>
  821.31 -#include <remcon/remconinterfacebase.h>
  821.32 -#include <remcon/remconinterfaceif.h>
  821.33 -
  821.34 -class MRemConBatteryTargetObserver;
  821.35 -class MRemConCoreApiTargetObserver;
  821.36 -class CRemConInterfaceSelector;
  821.37 -
  821.38 -/**
  821.39 -Client-instantiable type supporting sending Battery Status responses.
  821.40 -*/
  821.41 -NONSHARABLE_CLASS(CRemConBatteryApiTarget) : public CRemConInterfaceBase, 
  821.42 -								          		public MRemConInterfaceIf
  821.43 -	{
  821.44 -public:
  821.45 -	/**
  821.46 -	Factory function.
  821.47 -	@see CRemConInterfaceSelector
  821.48 -	@see MRemConBatteryTargetObserver
  821.49 -	@param aInterfaceSelector The interface selector. The client must have 
  821.50 -	created one of these first.
  821.51 -	@param aObserver The observer of this interface.
  821.52 -	@return A new CRemConBatteryApiTarget, owned by the interface selector.
  821.53 -	*/
  821.54 -	IMPORT_C static CRemConBatteryApiTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  821.55 -		MRemConBatteryTargetObserver& aObserver);
  821.56 -	
  821.57 -	/** Destructor */
  821.58 -	IMPORT_C ~CRemConBatteryApiTarget();
  821.59 -
  821.60 -private:
  821.61 -	/** 
  821.62 -	Constructor.
  821.63 -	@param aInterfaceSelector The interface selector.
  821.64 -	@param aObserver The observer of this interface.
  821.65 -	*/
  821.66 -	CRemConBatteryApiTarget(CRemConInterfaceSelector& aInterfaceSelector, 
  821.67 -		MRemConBatteryTargetObserver& aObserver);
  821.68 -
  821.69 -	void ConstructL();
  821.70 -
  821.71 -private: // from CRemConInterfaceBase
  821.72 -	TAny* GetInterfaceIf(TUid aUid);
  821.73 -
  821.74 -private: // from MRemConInterfaceIf
  821.75 -	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
  821.76 -
  821.77 -private: // unowned
  821.78 -	MRemConBatteryTargetObserver& iObserver;
  821.79 -
  821.80 -private: // owned
  821.81 -	CBufFlat*       iOutData;
  821.82 -	
  821.83 -	
  821.84 -	};
  821.85 -
  821.86 -#endif // REMCONBATTERYTARGET_H
   822.1 --- a/epoc32/include/remconbatterytargetobserver.h	Tue Mar 16 16:12:26 2010 +0000
   822.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   822.3 @@ -1,46 +0,0 @@
   822.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   822.5 -// All rights reserved.
   822.6 -// This component and the accompanying materials are made available
   822.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   822.8 -// which accompanies this distribution, and is available
   822.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  822.10 -//
  822.11 -// Initial Contributors:
  822.12 -// Nokia Corporation - initial contribution.
  822.13 -//
  822.14 -// Contributors:
  822.15 -//
  822.16 -// Description:
  822.17 -//
  822.18 -
  822.19 -
  822.20 -
  822.21 -/**
  822.22 - @file
  822.23 - @publishedAll
  822.24 - @released
  822.25 -*/
  822.26 -
  822.27 -#ifndef REMCONBATTERYTARGETOBSERVER_H
  822.28 -#define REMCONBATTERYTARGETOBSERVER_H
  822.29 -
  822.30 -#include <e32base.h>
  822.31 -#include <remcon/remconbattery.h>
  822.32 -
  822.33 -/**
  822.34 -Clients must implement this interface in order to instantiate objects of type 
  822.35 -CRemConBatteryTarget. This interface passes incoming commands from RemCon to 
  822.36 -the client. 
  822.37 -*/
  822.38 -class MRemConBatteryTargetObserver
  822.39 -	{
  822.40 -public:
  822.41 -	/** 
  822.42 -	A 'InformBatteryStatusOfCT' has been received.
  822.43 -	@param aBatteryStatus The current battery status.
  822.44 -	*/
  822.45 -	virtual void MrcbstoBatteryStatus(TControllerBatteryStatus& aBatteryStatus) = 0;
  822.46 -
  822.47 -	};
  822.48 -
  822.49 -#endif // REMCONBATTERYSTATUSTARGETOBSERVER_H
   823.1 --- a/epoc32/include/remcongroupnavigationtarget.h	Tue Mar 16 16:12:26 2010 +0000
   823.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   823.3 @@ -1,106 +0,0 @@
   823.4 -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   823.5 -// All rights reserved.
   823.6 -// This component and the accompanying materials are made available
   823.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   823.8 -// which accompanies this distribution, and is available
   823.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  823.10 -//
  823.11 -// Initial Contributors:
  823.12 -// Nokia Corporation - initial contribution.
  823.13 -//
  823.14 -// Contributors:
  823.15 -//
  823.16 -// Description:
  823.17 -//
  823.18 -
  823.19 -
  823.20 -
  823.21 -/**
  823.22 - @file
  823.23 - @publishedAll
  823.24 - @released
  823.25 -*/
  823.26 -
  823.27 -#ifndef REMCONGROUPNAVIGATIONTARGET_H
  823.28 -#define REMCONGROUPNAVIGATIONTARGET_H
  823.29 -
  823.30 -#include <e32base.h>
  823.31 -#include <s32mem.h>
  823.32 -#include <remconcoreapi.h>
  823.33 -#include <remcon/avrcpspec.h>
  823.34 -
  823.35 -#include <remcon/remcongroupnavigation.h>
  823.36 -#include <remcon/remconinterfacebase.h>
  823.37 -#include <remcon/remconinterfaceif.h>
  823.38 -
  823.39 -class MRemConGroupNavigationTargetObserver;
  823.40 -class CRemConInterfaceSelector;
  823.41 -
  823.42 -/**
  823.43 -Client-instantiable type supporting sending Battery Status responses.
  823.44 -*/
  823.45 -NONSHARABLE_CLASS(CRemConGroupNavigationApiTarget) : public CRemConInterfaceBase, 
  823.46 -								          		public MRemConInterfaceIf
  823.47 -	{
  823.48 -public:
  823.49 -	/**
  823.50 -	Factory function.
  823.51 -	@see CRemConInterfaceSelector
  823.52 -	@param aInterfaceSelector The interface selector. The client must have 
  823.53 -	created one of these first.
  823.54 -	@param aObserver The observer of this interface.
  823.55 -	@return A new CRemConGroupNavigationApiTarget, owned by the interface selector.
  823.56 -	*/
  823.57 -	IMPORT_C static CRemConGroupNavigationApiTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  823.58 -		MRemConGroupNavigationTargetObserver& aObserver);
  823.59 -	
  823.60 -	/** Destructor */
  823.61 -	IMPORT_C ~CRemConGroupNavigationApiTarget();
  823.62 -
  823.63 -public:
  823.64 -	/** Send a 'next group' response.
  823.65 -	Called by the client after receiving a MRemConGroupNavigationTargetObserver::MrcgntoNextGroup().
  823.66 -	@param aStatus Used by RemCon to indicate completion of the send request.
  823.67 -	aStatus may be NULL if no completion indication required.
  823.68 -	@param aError The response error.
  823.69 -	*/
  823.70 -	IMPORT_C void NextGroupResponse(TRequestStatus*& aStatus, TInt aError);
  823.71 -
  823.72 -	/** Send a 'previous group' response.
  823.73 -	Called by the client after receiving a MRemConGroupNavigationTargetObserver::MrcgntoPreviousGroup().
  823.74 -	@param aStatus Used by RemCon to indicate completion of the send request.
  823.75 -	aStatus may be NULL if no completion indication required.
  823.76 -	@param aError The response error.
  823.77 -	*/
  823.78 -	IMPORT_C void PreviousGroupResponse(TRequestStatus*& aStatus, TInt aError);
  823.79 -
  823.80 -private:
  823.81 -	/** 
  823.82 -	Constructor.
  823.83 -	@param aInterfaceSelector The interface selector.
  823.84 -	@param aObserver The observer of this interface.
  823.85 -	*/
  823.86 -	CRemConGroupNavigationApiTarget(CRemConInterfaceSelector& aInterfaceSelector, 
  823.87 -		MRemConGroupNavigationTargetObserver& aObserver);
  823.88 -
  823.89 -	void SendGroupResponse(TGroupNavigationPassthroughOperationIds aId, TRequestStatus*& aStatus, TInt aError);
  823.90 -
  823.91 -	void ConstructL();
  823.92 -
  823.93 -private: // from CRemConInterfaceBase
  823.94 -	TAny* GetInterfaceIf(TUid aUid);
  823.95 -
  823.96 -private: // from MRemConInterfaceIf
  823.97 -	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
  823.98 -
  823.99 -private: // unowned
 823.100 -	MRemConGroupNavigationTargetObserver& iObserver;
 823.101 -
 823.102 -private: // owned
 823.103 -	CBufFlat*		iOutData;
 823.104 -	TPtr8			iPtr;
 823.105 -	RBufWriteStream iStream;
 823.106 -			
 823.107 -	};
 823.108 -
 823.109 -#endif // REMCONGROUPNAVIGATIONTARGET_H
   824.1 --- a/epoc32/include/remcongroupnavigationtargetobserver.h	Tue Mar 16 16:12:26 2010 +0000
   824.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   824.3 @@ -1,54 +0,0 @@
   824.4 -// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   824.5 -// All rights reserved.
   824.6 -// This component and the accompanying materials are made available
   824.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   824.8 -// which accompanies this distribution, and is available
   824.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  824.10 -//
  824.11 -// Initial Contributors:
  824.12 -// Nokia Corporation - initial contribution.
  824.13 -//
  824.14 -// Contributors:
  824.15 -//
  824.16 -// Description:
  824.17 -//
  824.18 -
  824.19 -
  824.20 -
  824.21 -/**
  824.22 - @file
  824.23 - @publishedAll
  824.24 - @released
  824.25 -*/
  824.26 -
  824.27 -#ifndef REMCONGROUPNAVIGATIONTARGETOBSERVER_H
  824.28 -#define REMCONGROUPNAVIGATIONTARGETOBSERVER_H
  824.29 -
  824.30 -#include <e32base.h>
  824.31 -#include <remconcoreapi.h>
  824.32 -
  824.33 -/**
  824.34 -Clients must implement this interface in order to instantiate objects of type 
  824.35 -CRemConGroupNavigation. This interface passes incoming commands from RemCon to 
  824.36 -the client. 
  824.37 -*/
  824.38 -class MRemConGroupNavigationTargetObserver
  824.39 -	{
  824.40 -public:
  824.41 -	/** 
  824.42 -	A 'Next Group' has been received.
  824.43 -	@see TRemConCoreApiButtonAction
  824.44 -	@param aButtonAct The button action associated with the command.
  824.45 -	*/
  824.46 -	virtual void MrcgntoNextGroup(TRemConCoreApiButtonAction aButtonAct) = 0;
  824.47 -	
  824.48 -	/** 
  824.49 -	A 'Previous Group' has been received.
  824.50 -	@see TRemConCoreApiButtonAction
  824.51 -	@param aButtonAct The button action associated with the command.
  824.52 -	*/
  824.53 -	virtual void MrcgntoPreviousGroup(TRemConCoreApiButtonAction aButtonAct) =0;
  824.54 -
  824.55 -	};
  824.56 -
  824.57 -#endif // REMCONGROUPNAVIGATIONTARGETOBSERVER_H
   825.1 --- a/epoc32/include/remconmediainformationtarget.h	Tue Mar 16 16:12:26 2010 +0000
   825.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   825.3 @@ -1,128 +0,0 @@
   825.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   825.5 -// All rights reserved.
   825.6 -// This component and the accompanying materials are made available
   825.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   825.8 -// which accompanies this distribution, and is available
   825.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  825.10 -//
  825.11 -// Initial Contributors:
  825.12 -// Nokia Corporation - initial contribution.
  825.13 -//
  825.14 -// Contributors:
  825.15 -//
  825.16 -// Description:
  825.17 -//
  825.18 -
  825.19 -
  825.20 -
  825.21 -/**
  825.22 - @file
  825.23 - @publishedAll
  825.24 - @released
  825.25 -*/
  825.26 -
  825.27 -#ifndef REMCONMEDIAINFORMATIONTARGET_H
  825.28 -#define REMCONMEDIAINFORMATIONTARGET_H
  825.29 -
  825.30 -#include <e32base.h>
  825.31 -#include <remcon/remconinterfacebase.h>
  825.32 -#include <remcon/remconinterfaceif.h>
  825.33 -#include <remcon/mediainformation.h>
  825.34 -#include <remconmediainformationtargetobserver.h>
  825.35 -
  825.36 -class CRemConInterfaceSelector;
  825.37 -
  825.38 -NONSHARABLE_CLASS(CRemConMediaInformationQueuedMessage): public CBase
  825.39 -	{
  825.40 -public:
  825.41 -	static CRemConMediaInformationQueuedMessage* NewL(const TDesC8& aData);
  825.42 -	~CRemConMediaInformationQueuedMessage();
  825.43 -	
  825.44 -	const TDesC8& Data();
  825.45 -private:
  825.46 -	CRemConMediaInformationQueuedMessage();
  825.47 -	void ConstructL(const TDesC8& aData);
  825.48 -public:
  825.49 -	TSglQueLink iLink;
  825.50 -private:
  825.51 -	RBuf8 iData;
  825.52 -	};
  825.53 -
  825.54 -/**
  825.55 -Client-instantiable type supporting sending media information.
  825.56 -*/
  825.57 -NONSHARABLE_CLASS(CRemConMediaInformationTarget) : public CRemConInterfaceBase, 
  825.58 -								          		public MRemConInterfaceIf
  825.59 -	{
  825.60 -public:
  825.61 -
  825.62 -	/**
  825.63 -	Factory function.
  825.64 -	@param aInterfaceSelector The interface selector. The client must have 
  825.65 -	created one of these first.
  825.66 -	@param aObserver The observer of this interface.
  825.67 -	@return A new CRemConMediaInformationTarget, owned by the interface selector.
  825.68 -	*/
  825.69 -	IMPORT_C static CRemConMediaInformationTarget* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  825.70 -		MRemConMediaInformationTargetObserver& aObserver);
  825.71 -	
  825.72 -	/** Destructor */
  825.73 -	IMPORT_C ~CRemConMediaInformationTarget();
  825.74 -
  825.75 -public:
  825.76 -	/** Called by the client in response to a MrcmitoGetCurrentlyPlayingMetadata() call.
  825.77 -	Each call provides one of the attribute values requested.
  825.78 -	This is repeatedly called until all attributes requested have been supplied and then followed by Completed().
  825.79 -	@param aAttribute The ID of the attribute supplied.
  825.80 -	@param aValue A reference to a descriptor containing the attribute data.  
  825.81 -	This must be valid until Completed() has been called. 
  825.82 -	@see MRemConMediaInformationTargetObserver::MrcmitoGetCurrentlyPlayingMetadata()
  825.83 -	@see CRemConMediaInformationTarget::Completed()
  825.84 -	*/
  825.85 -	IMPORT_C TInt AttributeValue( TMediaAttributeId aAttributeId, TDesC8& aAttributeData);
  825.86 -	
  825.87 -	/** Signal that all attributes requested by MrcmitoGetCurrentlyPlayingMetadata() have been supplied
  825.88 -	using the AttributeValue() method.
  825.89 -	@see MRemConMediaInformationTargetObserver::MrcmitoGetCurrentlyPlayingMetadata()
  825.90 -	@see CRemConMediaInformationTarget::AttributeValue()
  825.91 -	*/
  825.92 -	IMPORT_C void Completed();
  825.93 -	
  825.94 -private:
  825.95 -	/** 
  825.96 -	Constructor.
  825.97 -	@param aInterfaceSelector The interface selector.
  825.98 -	@param aObserver The observer of this interface.
  825.99 -	*/
 825.100 -	CRemConMediaInformationTarget(CRemConInterfaceSelector& aInterfaceSelector, 
 825.101 -		MRemConMediaInformationTargetObserver& aObserver);
 825.102 -
 825.103 -	void ConstructL();
 825.104 -
 825.105 -private: // from CRemConInterfaceBase
 825.106 -	TAny* GetInterfaceIf(TUid aUid);
 825.107 -
 825.108 -private: // from MRemConInterfaceIf
 825.109 -	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
 825.110 -
 825.111 -private: // utility
 825.112 -	void SendError(TInt aError);
 825.113 -	void ProcessMessage(const TDesC8& aData);
 825.114 -	
 825.115 -	static int NextMessageCb(TAny* aThis);
 825.116 -	void DoNextMessage();
 825.117 -private: // unowned
 825.118 -	MRemConMediaInformationTargetObserver& iObserver;
 825.119 -
 825.120 -private: // owned
 825.121 -	RRemConGetElementAttributesResponse iResponse;
 825.122 -
 825.123 -	RArray<TMediaAttributeId>  	iMediaAttributeIDs;
 825.124 -	TMediaAttributeIter 		iAttributeIterator;
 825.125 -	TBool						iInProgress;
 825.126 -	TSglQue<CRemConMediaInformationQueuedMessage> iMsgQueue;
 825.127 -	
 825.128 -	CAsyncCallBack* iNextMessageCallBack;
 825.129 -	};
 825.130 -
 825.131 -#endif // REMCONMEDIAINFORMATIONTARGET_H
   826.1 --- a/epoc32/include/remconmediainformationtargetobserver.h	Tue Mar 16 16:12:26 2010 +0000
   826.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   826.3 @@ -1,77 +0,0 @@
   826.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   826.5 -// All rights reserved.
   826.6 -// This component and the accompanying materials are made available
   826.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   826.8 -// which accompanies this distribution, and is available
   826.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  826.10 -//
  826.11 -// Initial Contributors:
  826.12 -// Nokia Corporation - initial contribution.
  826.13 -//
  826.14 -// Contributors:
  826.15 -//
  826.16 -// Description:
  826.17 -//
  826.18 -
  826.19 -
  826.20 -
  826.21 -/**
  826.22 - @file
  826.23 - @publishedAll
  826.24 - @released
  826.25 -*/
  826.26 -
  826.27 -#ifndef REMCONMEDIAINFORMATIONTARGETOBSERVER_H
  826.28 -#define REMCONMEDIAINFORMATIONTARGETOBSERVER_H
  826.29 -
  826.30 -#include <e32base.h>
  826.31 -
  826.32 -enum TMediaAttributeId
  826.33 -	{
  826.34 -	ETitleOfMedia 			=0x1,
  826.35 -	ENameOfArtist			=0x2,
  826.36 -	ENameOfAlbum			=0x3,
  826.37 -	ETrackNumber			=0x4,		/* for example the CD track number */
  826.38 -	ENumberOfTracks			=0x5,		/* for example the total track number of the CD */
  826.39 -	EGenre					=0x6,
  826.40 -	EPlayingTime			=0x7
  826.41 -	};
  826.42 -
  826.43 -/**
  826.44 - * Provide an iterator wrapper class 
  826.45 - */
  826.46 -class TMediaAttributeIter
  826.47 -	{
  826.48 -public:
  826.49 -	TMediaAttributeIter(RArray<TMediaAttributeId>& aMediaAttributeIDs);
  826.50 -	IMPORT_C void Start();
  826.51 -	IMPORT_C TBool Next(TMediaAttributeId& aId);
  826.52 -	
  826.53 -private:
  826.54 -	RArray<TMediaAttributeId>& iMediaAttributeIDs;
  826.55 -	TInt iterator;
  826.56 -	};
  826.57 -
  826.58 -
  826.59 -/**
  826.60 -Clients must implement this interface in order to instantiate objects of type 
  826.61 -CRemConMediaInformationTarget. This interface passes incoming commands from RemCon to 
  826.62 -the client. 
  826.63 -*/
  826.64 -NONSHARABLE_CLASS(MRemConMediaInformationTargetObserver)
  826.65 -	{
  826.66 -public:
  826.67 -
  826.68 -	/**
  826.69 -	For each element in aAttributeList for which the requested Metadata is available,
  826.70 -	the client shall respond by calling CRemConMediaInformationTarget::AttributeValue(). 
  826.71 -	After all attributes have been supplied the client shall call CRemConMediaInformationTarget::Completed().
  826.72 -	@param aAttributeList A CMediaAttributeIDs containing a list of TMediaAttributeIds requested by the controller
  826.73 -	@see CRemConMediaInformationTarget::AttributeValue()
  826.74 -	@see CRemConMediaInformationTarget::Completed()
  826.75 -	*/
  826.76 -	virtual void MrcmitoGetCurrentlyPlayingMetadata( TMediaAttributeIter& aAttributeIter ) = 0;
  826.77 -
  826.78 -	};
  826.79 -
  826.80 -#endif // REMCONMEDIAINFORMATIONTARGETOBSERVER_H
   827.1 --- a/epoc32/include/remconstatusapicontroller.h	Tue Mar 16 16:12:26 2010 +0000
   827.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   827.3 @@ -1,92 +0,0 @@
   827.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   827.5 -// All rights reserved.
   827.6 -// This component and the accompanying materials are made available
   827.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   827.8 -// which accompanies this distribution, and is available
   827.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  827.10 -//
  827.11 -// Initial Contributors:
  827.12 -// Nokia Corporation - initial contribution.
  827.13 -//
  827.14 -// Contributors:
  827.15 -//
  827.16 -// Description:
  827.17 -//
  827.18 -
  827.19 -
  827.20 -
  827.21 -/**
  827.22 - @file
  827.23 - @publishedAll
  827.24 - @released
  827.25 -*/
  827.26 -
  827.27 -#ifndef REMCONSTATUSAPICONTROLLER_H
  827.28 -#define REMCONSTATUSAPICONTROLLER_H
  827.29 -
  827.30 -#include <e32base.h>
  827.31 -#include <remcon/remconinterfacebase.h>
  827.32 -#include <remcon/remconinterfaceif.h>
  827.33 -#include <remconstatusapi.h>
  827.34 -
  827.35 -_LIT(KStatusApiPanicName, "Status Api Panic");
  827.36 -
  827.37 -class MRemConStatusApiControllerObserver;
  827.38 -class CRemConInterfaceSelector;
  827.39 -
  827.40 -/**
  827.41 -A controller which sends Status API commands.
  827.42 -@publishedAll
  827.43 -@released
  827.44 -*/
  827.45 -NONSHARABLE_CLASS(CRemConStatusApiController) : public CRemConInterfaceBase,
  827.46 -								                public MRemConInterfaceIf
  827.47 -	{
  827.48 -private:
  827.49 -	enum TStatusApiPanic
  827.50 -		{
  827.51 -		EStatusApiCommandDataSectionTooLong,
  827.52 -		};
  827.53 -
  827.54 -public:
  827.55 -	IMPORT_C static CRemConStatusApiController* NewL(CRemConInterfaceSelector& aInterfaceSelector, 
  827.56 -		MRemConStatusApiControllerObserver& aObserver);
  827.57 -	IMPORT_C ~CRemConStatusApiController();
  827.58 -
  827.59 -	// Commands
  827.60 -	IMPORT_C void UnitInfo(TRequestStatus& aStatus, TUint& aNumRemotes);
  827.61 -	IMPORT_C void SubunitInfo(TRequestStatus& aStatus, TUint& aNumRemotes);
  827.62 -
  827.63 -private:
  827.64 -	CRemConStatusApiController(CRemConInterfaceSelector& aInterfaceSelector, 
  827.65 -		MRemConStatusApiControllerObserver& aObserver);
  827.66 -
  827.67 -	// from CRemConInterfaceBase
  827.68 -	void MrcibNewMessage(TUint aOperationId, const TDesC8& aData);
  827.69 -	TAny* GetInterfaceIf(TUid aUid);
  827.70 -	
  827.71 -	// Utility functions
  827.72 -	void SetUnitInfoResponseData(const TDesC8& aCommandData,
  827.73 -		TInt& aVendorId, 
  827.74 -		TInt& aUnit, 
  827.75 -		TInt& aUnitType, 
  827.76 -		TInt& aExtendedUnitType);
  827.77 -		
  827.78 -	void SetSubunitInfoResponseData(const TDesC8& aCommandData,
  827.79 -		TInt& aPage, 
  827.80 -		TInt& aExtension, 
  827.81 -		TPtrC8& aPageData);
  827.82 -		
  827.83 -	void ReadCommandDataToInt(const TDesC8& aCommandData, 
  827.84 -		TInt aOffset, 
  827.85 -		TInt aLength, 
  827.86 -		TInt& aValue);
  827.87 -		
  827.88 -	static void Panic(TStatusApiPanic aPanic);
  827.89 -
  827.90 -private:
  827.91 -	MRemConStatusApiControllerObserver& iObserver;
  827.92 -	TBuf8<KRemConStatusApiMaxOperationSpecificDataSize> iOutData;
  827.93 -	};
  827.94 -
  827.95 -#endif // REMCONSTATUSAPICONTROLLER_H
   828.1 --- a/epoc32/include/remconstatusapicontrollerobserver.h	Tue Mar 16 16:12:26 2010 +0000
   828.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   828.3 @@ -1,83 +0,0 @@
   828.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   828.5 -// All rights reserved.
   828.6 -// This component and the accompanying materials are made available
   828.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   828.8 -// which accompanies this distribution, and is available
   828.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  828.10 -//
  828.11 -// Initial Contributors:
  828.12 -// Nokia Corporation - initial contribution.
  828.13 -//
  828.14 -// Contributors:
  828.15 -//
  828.16 -// Description:
  828.17 -//
  828.18 -
  828.19 -
  828.20 -
  828.21 -/**
  828.22 - @file
  828.23 - @publishedAll
  828.24 - @released
  828.25 -*/
  828.26 -
  828.27 -#ifndef REMCONSTATUSAPICONTROLLEROBSERVER_H
  828.28 -#define REMCONSTATUSAPICONTROLLEROBSERVER_H
  828.29 -
  828.30 -#include <e32std.h>
  828.31 -
  828.32 -/**
  828.33 -Interface to observe responses from a Status API controller.
  828.34 -@publishedAll
  828.35 -@released
  828.36 -*/
  828.37 -class MRemConStatusApiControllerObserver
  828.38 -	{
  828.39 -public:
  828.40 -	/**	A UnitInfo response has been received. 
  828.41 -	
  828.42 -	For details on the meanings on the fields please refer to the 
  828.43 -	AV/C Digital Interface Command Set General Specification, 
  828.44 -	section 11.2.1.
  828.45 -	
  828.46 -	If all values are zero there was an error with the command.
  828.47 -	@param aVendorId The VendorId
  828.48 -	@param aUnit Unit
  828.49 -	@param aUnitType UnitType
  828.50 -	@param aExtendedUnitType Extended Unit type. This data is only 
  828.51 -		valid if Unit type is 0x1e. The second byte is only valid 
  828.52 -		if the first byte is 0xff.
  828.53 -	*/
  828.54 -	virtual void MrcsacoUnitInfoResponse(TInt aVendorId, 
  828.55 -		TInt aUnit, 
  828.56 -		TInt aUnitType, 
  828.57 -		TInt aExtendedUnitType) = 0;
  828.58 -
  828.59 -	/** A SubunitInfo response has been received. 
  828.60 -	
  828.61 -	For details on the meanings on the fields please
  828.62 -	refer to the AV/C Digital Interface Command Set
  828.63 -	General Specification, section 11.2.2.
  828.64 -	
  828.65 -	If all values are zero there was an error with the command.
  828.66 -	@param aPage Page
  828.67 -	@param aExtension Extension.
  828.68 -	@param aPageData Page Data. This data remains valid only for
  828.69 -		the duration of this call.  If the client wishes to store
  828.70 -		the data it must be copied.
  828.71 -	*/
  828.72 -	virtual void MrcsacoSubunitInfoResponse(TInt aPage,
  828.73 -		TInt aExtension,
  828.74 -		TDesC8& aPageData) = 0;
  828.75 -		
  828.76 -	/**
  828.77 - 	 Returns a null aObject if the extension is not implemented, or 
  828.78 - 	 a pointer to another interface if it is.
  828.79 - 	 
  828.80 -	 @param aInterface UID of the interface to return
  828.81 -	 @param aObject the container for another interface as specified by aInterface
  828.82 -	 */
  828.83 -	IMPORT_C virtual void Mrcsaco_ExtensionInterfaceL(TUid aInterface, void*& aObject);
  828.84 -	};
  828.85 -
  828.86 -#endif // REMCONSTATUSAPICONTROLLEROBSERVER_H
   829.1 --- a/epoc32/include/rsendas.h	Tue Mar 16 16:12:26 2010 +0000
   829.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   829.3 @@ -1,117 +0,0 @@
   829.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   829.5 -// All rights reserved.
   829.6 -// This component and the accompanying materials are made available
   829.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   829.8 -// which accompanies this distribution, and is available
   829.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  829.10 -//
  829.11 -// Initial Contributors:
  829.12 -// Nokia Corporation - initial contribution.
  829.13 -//
  829.14 -// Contributors:
  829.15 -//
  829.16 -// Description:
  829.17 -//
  829.18 -
  829.19 -#ifndef __RSENDAS_H__
  829.20 -#define __RSENDAS_H__
  829.21 -
  829.22 -#include <e32base.h>
  829.23 -
  829.24 -class CSendAsMessageTypes;
  829.25 -class CSendAsAccounts;
  829.26 -
  829.27 -/**
  829.28 -The default number of message slots available to a session. This determines the
  829.29 -number of outstanding requests the client may have with the server at any one
  829.30 -time.
  829.31 -*/
  829.32 -const TInt KSendAsDefaultMessageSlots = 4;
  829.33 -
  829.34 -/**
  829.35 -Encapsulates a session with the SendAs Server.
  829.36 -
  829.37 -This class allows a user to determine the message types available to the SendAs
  829.38 -server and also provides functionality for clients to filter this list to find 
  829.39 -the UIDs required to create messages.
  829.40 -
  829.41 -@publishedAll
  829.42 -@released
  829.43 -*/
  829.44 -class RSendAs : public RSessionBase
  829.45 -	{
  829.46 -public:
  829.47 -
  829.48 -/**
  829.49 -Defines the condition-checking of message capabilities. These are progressively
  829.50 -added to refine the list of available MTMs.
  829.51 -*/
  829.52 -	enum TSendAsConditionType
  829.53 -		{
  829.54 -		/**
  829.55 -		No MTMs are removed as a result of applying this condition to the
  829.56 -		filtering.
  829.57 -		*/
  829.58 -		ESendAsNoCondition,
  829.59 -		/**
  829.60 -		Only MTMs whose capabilities match the given value will remain as a
  829.61 -		result of applying this condition to the filtering.
  829.62 -		*/
  829.63 -		ESendAsEquals,
  829.64 -		/**
  829.65 -		Only MTMs whose capabilities do not match the given value will remain 
  829.66 -		as a result of applying this condition to the filtering.
  829.67 -		*/
  829.68 -		ESendAsNotEquals,
  829.69 -		/**
  829.70 -		Only MTMs whose capabilities greater than the given value will remain
  829.71 -		as a result of applying this condition to the filtering.
  829.72 -		*/
  829.73 -		ESendAsGreaterThan,
  829.74 -		/**
  829.75 -		Only MTMs whose capabilities less than the given value will remain as a
  829.76 -		result of applying this condition to the filtering.
  829.77 -		*/
  829.78 -		ESendAsLessThan,
  829.79 -		/**
  829.80 -		Only MTMs whose capabilities result non-zero value when bitwise ANDed
  829.81 -		with the given value will remain as a result of applying this condition
  829.82 -		to the filtering.
  829.83 -		*/
  829.84 -		ESendAsBitwiseAnd,
  829.85 -		/**
  829.86 -		Only MTMs whose capabilities result non-zero value when bitwise ORed
  829.87 -		with the given value will remain as a result of applying this condition
  829.88 -		to the filtering.
  829.89 -		*/
  829.90 -		ESendAsBitwiseOr,
  829.91 -		/**
  829.92 -		Only MTMs whose capabilities result non-zero value when bitwise NANDed
  829.93 -		with the given value will remain as a result of applying this condition
  829.94 -		to the filtering.
  829.95 -		*/
  829.96 -		ESendAsBitwiseNand,
  829.97 -		/**
  829.98 -		Only MTMs whose capabilities result non-zero value when bitwise NORed
  829.99 -		with the given value will remain as a result of applying this condition
 829.100 -		to the filtering.
 829.101 -		*/
 829.102 -		ESendAsBitwiseNor
 829.103 -		};
 829.104 -
 829.105 -public:
 829.106 -	IMPORT_C TInt Connect();
 829.107 -	IMPORT_C TInt Connect(TInt aMessageSlots);
 829.108 -	
 829.109 -	IMPORT_C void FilteredMessageTypesL(CSendAsMessageTypes& aMessageTypeInfo);
 829.110 -	IMPORT_C TInt FilterAgainstCapability(TUid aMessageCapability);
 829.111 -	IMPORT_C TInt FilterAgainstCapability(TUid aMessageCapability, TInt aValue, TSendAsConditionType aConditionType);
 829.112 -	IMPORT_C TInt ResetMessageFilter();
 829.113 -	
 829.114 -	IMPORT_C void AvailableAccountsL(TUid aMessageType, CSendAsAccounts& aAccounts);
 829.115 -
 829.116 -private:
 829.117 -	TAny* iAny; // Future proofing.
 829.118 -	};
 829.119 -
 829.120 -#endif	//  __RSENDAS_H__
   830.1 --- a/epoc32/include/rsendasmessage.h	Tue Mar 16 16:12:26 2010 +0000
   830.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   830.3 @@ -1,150 +0,0 @@
   830.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   830.5 -// All rights reserved.
   830.6 -// This component and the accompanying materials are made available
   830.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   830.8 -// which accompanies this distribution, and is available
   830.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  830.10 -//
  830.11 -// Initial Contributors:
  830.12 -// Nokia Corporation - initial contribution.
  830.13 -//
  830.14 -// Contributors:
  830.15 -//
  830.16 -// Description:
  830.17 -//
  830.18 -
  830.19 -#ifndef __RSENDASMESSAGE_H__
  830.20 -#define __RSENDASMESSAGE_H__
  830.21 -
  830.22 -#include <msvapi.h>
  830.23 -#include <csendasaccounts.h>
  830.24 -#include <cmsvrecipientlist.h>
  830.25 -
  830.26 -class RSendAs;
  830.27 -class CRichText;
  830.28 -class RFile;
  830.29 -
  830.30 -/**
  830.31 -Send as progress
  830.32 -
  830.33 -@publishedAll
  830.34 -@released
  830.35 -*/
  830.36 -typedef CMsvSendOperation::TSendOperationProgress TSendAsProgress;
  830.37 -
  830.38 -/**
  830.39 -Encapsulates creating and sending a message.  This class requires
  830.40 -a connected RSendAs session.
  830.41 -
  830.42 -A client application can have several RSendAsMessage objects created simultaneously.
  830.43 -Each RSendAsMessage object corresponds to a single message.
  830.44 -
  830.45 -With the RSendAsMessage class, a client application can perform the following
  830.46 -operations:
  830.47 -
  830.48 --Creating and managing a message
  830.49 -
  830.50 --Modifying a message created using SendAs
  830.51 -
  830.52 --Sending a message
  830.53 -
  830.54 --Launching a message editor
  830.55 -
  830.56 -Client applications do not require any capabilities in order to use the RSendAs
  830.57 -and RSendAsMessage APIs. However, if an application does not have the necessary security
  830.58 -capabilities to send a message, the SendAs server ensures that a message is only sent
  830.59 -after the user's authorization.
  830.60 -
  830.61 -A message created using RSendAsMessage can be saved, sent, or passed to the appropriate
  830.62 -message editor. There are two types of send operation:  
  830.63 -
  830.64 --A confirmed send is forwarded to the UI MTM for the message type. Typically this
  830.65 -results in the user being asked to confirm that the message should be sent.
  830.66 -
  830.67 --An unconfirmed send fails if the client application does not have the
  830.68 -required capabilities to use the server MTM for the message type.
  830.69 -
  830.70 -There are asynchronous and synchronous forms of these sending methods. Progress information for  
  830.71 -sending is available when the asynchronous forms are used. The synchronous forms, and the
  830.72 -methods for saving the message and for launching it in a message editor, all close the handle to the
  830.73 -RSendAsMessage, so the message cannot be further accessed through the API.
  830.74 -
  830.75 -@publishedAll
  830.76 -@released
  830.77 -*/
  830.78 -class RSendAsMessage : public RSubSessionBase
  830.79 -	{
  830.80 -public:
  830.81 -/**
  830.82 -Defines the recipient types available when adding a recipient to a message
  830.83 -*/
  830.84 -	enum TSendAsRecipientType
  830.85 -		{
  830.86 -		/**
  830.87 -		Designates a 'To' recipient.
  830.88 -		*/
  830.89 -		ESendAsRecipientTo = EMsvRecipientTo,
  830.90 -			
  830.91 -		/**
  830.92 -		Designates a 'Cc' recipient.
  830.93 -		*/
  830.94 -		ESendAsRecipientCc,
  830.95 -		
  830.96 -		/**
  830.97 -		Designates a 'Bcc' recipient.
  830.98 -		*/
  830.99 -		ESendAsRecipientBcc
 830.100 -		};
 830.101 -public:
 830.102 -	IMPORT_C void CreateL(RSendAs& aSendAs, TSendAsAccount aAccount);
 830.103 -	IMPORT_C void CreateL(RSendAs& aSendAs, TUid aMessageType);
 830.104 -	//
 830.105 -	IMPORT_C void SendMessage(TRequestStatus& aStatus);
 830.106 -	IMPORT_C void SendMessageAndCloseL(); // Sends in background
 830.107 -	IMPORT_C void SendMessageConfirmed(TRequestStatus& aStatus);
 830.108 -	IMPORT_C void SendMessageConfirmedAndCloseL(); // Sends in background
 830.109 -	IMPORT_C void LaunchEditorAndCloseL();
 830.110 -	IMPORT_C void SaveMessageAndCloseL();
 830.111 -	//
 830.112 -	IMPORT_C void ProgressL(TSendAsProgress& aProgress);
 830.113 -
 830.114 -	IMPORT_C void SetBodyTextL(const CRichText& aBody);
 830.115 -	IMPORT_C void SetBodyTextL(const TDesC& aBody);
 830.116 -	IMPORT_C void SetSubjectL(const TDesC& aSubject);
 830.117 -	IMPORT_C void SetBioTypeL(TUid aBioType);
 830.118 -	//
 830.119 -	IMPORT_C void AddRecipientL(const TDesC& aAddress, TSendAsRecipientType aRecipientType);
 830.120 -	IMPORT_C void AddRecipientL(const TDesC& aAddress, const TDesC& aAlias, TSendAsRecipientType aRecipientType);
 830.121 -	//
 830.122 -	IMPORT_C void AddAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 830.123 -	IMPORT_C void AddAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TRequestStatus& aStatus);
 830.124 -	IMPORT_C void AddAttachment(const TDesC& aFilePath, TRequestStatus& aStatus);
 830.125 -
 830.126 -	IMPORT_C void AddAttachment(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 830.127 -	IMPORT_C void AddAttachment(RFile& aFile, const TDesC8& aMimeType, TRequestStatus& aStatus);
 830.128 -	IMPORT_C void AddAttachment(RFile& aFile, TRequestStatus& aStatus);
 830.129 -
 830.130 -	IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 830.131 -	IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, const TDesC8& aMimeType, TRequestStatus& aStatus);
 830.132 -	IMPORT_C void AddLinkedAttachment(const TDesC& aFilePath, TRequestStatus& aStatus);
 830.133 -	
 830.134 -	IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile);
 830.135 -	IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType);
 830.136 -	IMPORT_C void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset);
 830.137 -	
 830.138 -	//
 830.139 -	IMPORT_C void Cancel();
 830.140 -	IMPORT_C void Close();
 830.141 -	
 830.142 -	/** 
 830.143 -	Sets the character encoding value. The character encoding value options are 7-bit,
 830.144 -	8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding.
 830.145 -	*/
 830.146 -	IMPORT_C void SetCharacterSetL(const TUint aCharset);
 830.147 -
 830.148 -
 830.149 -private:
 830.150 -	TAny* iAny; // Future proofing.
 830.151 -	};
 830.152 -
 830.153 -#endif	//  __RSENDASMESSAGE_H__
   831.1 --- a/epoc32/include/rtcp.h	Tue Mar 16 16:12:26 2010 +0000
   831.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   831.3 @@ -1,248 +0,0 @@
   831.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   831.5 -// All rights reserved.
   831.6 -// This component and the accompanying materials are made available
   831.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   831.8 -// which accompanies this distribution, and is available
   831.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  831.10 -//
  831.11 -// Initial Contributors:
  831.12 -// Nokia Corporation - initial contribution.
  831.13 -//
  831.14 -// Contributors:
  831.15 -//
  831.16 -// Description:
  831.17 -//
  831.18 -
  831.19 -#ifndef RTCP_H
  831.20 -#define RTCP_H
  831.21 -
  831.22 -#include <e32std.h>
  831.23 -
  831.24 -/** @file
  831.25 -
  831.26 -RTCP is a protocol that only makes sense in the context of RTP, so
  831.27 -the RTCP implementation is an extension of the RTP code, and most
  831.28 -of the relevant classes are defined in rtp.h
  831.29 -*/
  831.30 -
  831.31 -class TRtcpRRItem;
  831.32 -class TRtcpRRPart;
  831.33 -class TRtcpSRPart;
  831.34 -
  831.35 -/**
  831.36 -@publishedPartner
  831.37 -@released
  831.38 -
  831.39 -A handle to an RR (Receiver Report) RTP packet.
  831.40 -
  831.41 -An instance of this class represents the reception report of one host
  831.42 -about another host; it may have come from either a SR (Sender Report) or
  831.43 -a RR (Receiver Report) packet, which may contain
  831.44 -other RRs (Receiver Reports) as well.
  831.45 -
  831.46 -An object of this type is returned from a call to the RRtcpRRPart
  831.47 -indexing operator and specifying the index of the required RR.
  831.48 -
  831.49 -Note that resources accessed thorugh this handle are owned by other objects
  831.50 -and therefore has no Close() member function.
  831.51 -
  831.52 -@see RRtcpRRPart
  831.53 -*/
  831.54 -class RRtcpRRItem 
  831.55 -	{
  831.56 -public:
  831.57 -    /**
  831.58 -    Default constructor.
  831.59 -    */
  831.60 -	IMPORT_C RRtcpRRItem();
  831.61 -
  831.62 -    /**
  831.63 -    Gets the sender's SSRC, i.e. the sender's 32-bit numeric
  831.64 -    synchronisation source identifier.
  831.65 -    
  831.66 -    @return The sender's SSRC.
  831.67 -    */
  831.68 -	IMPORT_C TUint SenderSSRC() const;
  831.69 -
  831.70 -
  831.71 -    /**
  831.72 -    Gets the number of packets lost.
  831.73 -    
  831.74 -    @return The number of packets lost.
  831.75 -    */
  831.76 -	IMPORT_C TUint PacketsLost() const;
  831.77 -
  831.78 -
  831.79 -	/** 
  831.80 -	Gets the SSRC related to this packet.
  831.81 -	
  831.82 -	@return The sender's SSRC.
  831.83 -	*/
  831.84 -	IMPORT_C TUint AboutSSRC() const;
  831.85 -
  831.86 -
  831.87 -	/**
  831.88 -	Gets the number of packets lost, in 256ths of the total number.
  831.89 -	
  831.90 -	@return The number of last packets, in 256ths of the total number.
  831.91 -	*/
  831.92 -	IMPORT_C TUint FractionLost() const;
  831.93 -
  831.94 -
  831.95 -	/**
  831.96 -	Gets the extended highest sequence number recieved.
  831.97 -	
  831.98 -	@return The extended highest sequence number.
  831.99 -	*/
 831.100 -	IMPORT_C TUint ExtendedHighestSequenceNumber() const;
 831.101 -     
 831.102 -     
 831.103 -	/**
 831.104 -	Gets the interarrival jitter value.
 831.105 -	
 831.106 -	@return The interarrival jitter value.
 831.107 -
 831.108 -	*/
 831.109 -	IMPORT_C TUint InterarrivalJitter() const;
 831.110 -
 831.111 -
 831.112 -	/**
 831.113 -	Gets the time of the last received SR (Sender Report)
 831.114 -	
 831.115 -	@return The time of the last received SR.
 831.116 -	*/
 831.117 -	IMPORT_C TUint LastSRTimestamp() const;
 831.118 -
 831.119 -
 831.120 -	/**
 831.121 -    Gets the time between the receipt of the last SR (Sender Report) and 
 831.122 -  	the time when this packet was sent.
 831.123 -  	
 831.124 -  	@return The tme difference in 65,536ths of a second. 
 831.125 -	*/
 831.126 -	IMPORT_C TUint DelaySinceLastSR() const;
 831.127 -
 831.128 -private:
 831.129 -	friend class RRtcpRRPart;
 831.130 -	TRtcpRRItem* iPtr;
 831.131 -	};
 831.132 -
 831.133 -/**
 831.134 -@publishedPartner
 831.135 -@released
 831.136 -
 831.137 -An array containing the most recent RRs (Receiver Reports) from
 831.138 -all hosts who are reporting on our send stream.
 831.139 -
 831.140 -An object of this type is returned by calling RRs() on a handle to
 831.141 -an RTP session (an RRtpSession object).
 831.142 -
 831.143 -@see RRtpSession::RRs()
 831.144 -*/	
 831.145 -class RRtcpRRPart
 831.146 -	{
 831.147 -public:
 831.148 -	IMPORT_C RRtcpRRPart(TRtcpRRPart& aRR);
 831.149 - 	/**
 831.150 -	Gets the number of Receiver Reports.
 831.151 -	
 831.152 -	@return The number fo receiver reports.
 831.153 -	*/
 831.154 -	IMPORT_C TInt Count() const;
 831.155 -
 831.156 -	IMPORT_C TUint SenderSSRC() const;
 831.157 -
 831.158 -	/**
 831.159 -	Gets a specific RR (Receiver Report) as identified by
 831.160 -	the specified index value.
 831.161 -	
 831.162 -	@param aIndex An index value identifying the specific RR.
 831.163 -	              The index is relative to zero, i.e. zero implies
 831.164 -	              the first RR report.
 831.165 -	              The value must not be negative and must be less than
 831.166 -	              the the value returned by Count().
 831.167 -	
 831.168 -	@return A handle to the RR (Receiver Report).
 831.169 -	*/
 831.170 -	IMPORT_C RRtcpRRItem operator [](TInt aIndex) const;
 831.171 -private:
 831.172 -	TRtcpRRPart&		iRRPart;
 831.173 -	};
 831.174 -
 831.175 -/**
 831.176 -@publishedPartner
 831.177 -@released
 831.178 -
 831.179 -A handle to a SR (Sender Report) packet.
 831.180 -
 831.181 -RRs (Receiver Reports) received as part of a SR (Sender Report) are classified
 831.182 -with the RRs. The resources accessed through this handle are owned by 
 831.183 -the receive stream object, a RRtpReceiveStream instance, and therefore has no
 831.184 -Close() member function.
 831.185 -*/
 831.186 -class RRtcpSRPart
 831.187 -	{
 831.188 - public:
 831.189 -    /**
 831.190 -    Default constructor.
 831.191 -    */
 831.192 -	IMPORT_C RRtcpSRPart(TRtcpSRPart& aSr);
 831.193 -
 831.194 -
 831.195 -	/**
 831.196 -	Gets the absolute time when this SR was sent, in TTime format.
 831.197 -	
 831.198 -	@return The time in NTP format. 
 831.199 -	*/
 831.200 -	IMPORT_C void NTPTimestamp(TTime& aTime) const;
 831.201 -
 831.202 -
 831.203 -	/**
 831.204 -	Gets the RTP time when this packet was sent.
 831.205 -	
 831.206 -	Note that RTP time is profile dependant and may have an arbitrary start
 831.207 -	time, but this is useful for tying the SR with the timestamps in the
 831.208 -	data stream 
 831.209 -	
 831.210 -	@return The time when the packet was sent.
 831.211 -	*/
 831.212 -	IMPORT_C TUint RTPTimestamp() const;
 831.213 -
 831.214 -
 831.215 -	/**
 831.216 -	Gets the number of packets that have been sent.
 831.217 -	
 831.218 -	@return The number of packets.
 831.219 -    */
 831.220 -	IMPORT_C TUint PacketCount() const;
 831.221 -
 831.222 -
 831.223 -	/**
 831.224 -	Gets the number of bytes that have been sent.
 831.225 -	
 831.226 -	@return The number of bytes sent.
 831.227 -	*/
 831.228 -	IMPORT_C TUint ByteCount() const;
 831.229 -
 831.230 -
 831.231 -	/**
 831.232 -	Gets the profile-specific extension.
 831.233 -	
 831.234 -	@return An un-modifiable descriptor reference to the extension data.
 831.235 -	*/
 831.236 -	IMPORT_C const TDesC8& Extension();
 831.237 -	
 831.238 -	/**
 831.239 -	// added as Fix to Defect PDEF101761  
 831.240 -	Gets the timestamp when this SR was sent, in seconds and fraction
 831.241 -	
 831.242 -	@ return The time in Seconds  and Fraction
 831.243 -	*/
 831.244 -	IMPORT_C void NTPTimestamp(TUint32& aSec,TUint32& aFrac) const;
 831.245 -
 831.246 -
 831.247 -private:
 831.248 -	TRtcpSRPart& iSrPtr;
 831.249 -	};
 831.250 -
 831.251 -#endif // RTCP_H
   832.1 --- a/epoc32/include/rtp.h	Tue Mar 16 16:12:26 2010 +0000
   832.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   832.3 @@ -1,1352 +0,0 @@
   832.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   832.5 -// All rights reserved.
   832.6 -// This component and the accompanying materials are made available
   832.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   832.8 -// which accompanies this distribution, and is available
   832.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  832.10 -//
  832.11 -// Initial Contributors:
  832.12 -// Nokia Corporation - initial contribution.
  832.13 -//
  832.14 -// Contributors:
  832.15 -//
  832.16 -// Description:
  832.17 -//
  832.18 -
  832.19 -#ifndef RTP_H
  832.20 -#define RTP_H
  832.21 -
  832.22 -#include <es_sock.h>
  832.23 - 
  832.24 -class TRtpEvent;
  832.25 -class RRtpSession;
  832.26 -class RRtpSendPacket;
  832.27 -class RRtpReceivePacket;
  832.28 -class RRtpReceiveSource;
  832.29 -class RRtpSendSource;
  832.30 -class RRtpHeaderExtension;
  832.31 -class RRtpCSRCs;
  832.32 -class CRtpSession;
  832.33 -class CRtpReceiveSource;
  832.34 -class CRtpSendSource;
  832.35 -class TRtpPacket;
  832.36 -
  832.37 -class RRtcpRRPart;
  832.38 -class RRtcpSRPart;
  832.39 -
  832.40 -/**
  832.41 -@publishedAll
  832.42 -@released
  832.43 -
  832.44 -A set of values that defines the event types that may be handled.
  832.45 -
  832.46 -See all variants of the RegisterEventCallbackL() function. 
  832.47 -
  832.48 -@see TRtpEvent
  832.49 -*/
  832.50 -enum TRtpEventType
  832.51 -	{
  832.52 -	/** 
  832.53 -	A special event type that is interpreted by all of
  832.54 -	the RegisterEventCallbackL() set of functions to mean that the registered
  832.55 -	callback function is to be called for any event except failure events.
  832.56 -    */
  832.57 -	ERtpAnyEvent = 0,
  832.58 -	
  832.59 -	
  832.60 -    /**
  832.61 -    Defines a base value for session events.
  832.62 -   
  832.63 -    All session event types have values that are greater than this.
  832.64 -    */
  832.65 -	ERtpSessionEventBase = 0x100,
  832.66 -	
  832.67 -	
  832.68 -	/**
  832.69 -	An event type that indicates that a session-level error has occurred.
  832.70 -	
  832.71 -	The event status is a standard Symbian OS error code.
  832.72 -	The callback parameter is used to register interest in only one 
  832.73 -	type of error.
  832.74 -	*/
  832.75 -	ERtpSessionFail      = 0x101, 
  832.76 -	
  832.77 -	
  832.78 -	/**
  832.79 -    An event type that indicates that a new stream has been received.
  832.80 -	
  832.81 -	The event status is the	SSRC of the stream.
  832.82 -	*/
  832.83 -	ERtpNewSource        = 0x102,
  832.84 -	
  832.85 -	
  832.86 -	/**
  832.87 -	An event type that indicates that an RTCP RR (Receiver Report) has been
  832.88 -	received.
  832.89 -	
  832.90 -	The event status is the SSRC of the sender.
  832.91 -
  832.92 -	Note - This event type has not been implemented yet.
  832.93 -	*/
  832.94 -	ERtpNewRR            = 0x103,
  832.95 -	
  832.96 -	
  832.97 -	/**
  832.98 -	An event type that indicates that a packet bigger than the expected maximum
  832.99 -	has been received.
 832.100 -	
 832.101 -	When this event occurs, the packet is deleted.
 832.102 -	*/
 832.103 -	ERtpBufferOverflow   = 0x104,
 832.104 -	
 832.105 -	
 832.106 -	/**
 832.107 -	An event type that indicates that a packet has been recived that
 832.108 -	is smaller than its header.
 832.109 -	
 832.110 -	When this event occurs, the packet is deleted.
 832.111 -	*/
 832.112 -	ERtpUndersizedPacket = 0x105,
 832.113 - 
 832.114 - 	
 832.115 -	/**
 832.116 -	Not an event type, but defines the upper limit for session event
 832.117 -	type values.
 832.118 -    */
 832.119 -	ERtpSessionEventEnd  = 0x1ff,
 832.120 -
 832.121 -
 832.122 -    /**
 832.123 -    Not an event type but defines a base value for send stream events.
 832.124 -   
 832.125 -    All send stream event types have values that are greater than this.
 832.126 -    */
 832.127 -	ERtpSendEventBase    = 0x200,
 832.128 -
 832.129 -
 832.130 -	/**
 832.131 -	An event type that indicates that an error has occurred while sending
 832.132 -	a packet.
 832.133 -	
 832.134 -	The event status is a standard Symbian OS error code. The callback parameter
 832.135 -	is used only to register interest in one type of error.
 832.136 -	*/
 832.137 -	ERtpSendFail         = 0x201, 
 832.138 -	
 832.139 -	
 832.140 -	/**
 832.141 -	An event type that indicates that a send packet operation has succeeded.
 832.142 -	*/
 832.143 -	ERtpSendSucceeded    = 0x202,
 832.144 -	
 832.145 -	
 832.146 -	/**
 832.147 -	Not an event type, but defines the upper limit for send stream event 
 832.148 -	type values.
 832.149 -	*/
 832.150 -	ERtpSendEventEnd     = 0x2ff,
 832.151 -
 832.152 -
 832.153 -    /**
 832.154 -    Not an event type but defines a base value for receive stream events.
 832.155 -   
 832.156 -    All receive stream event types have values that are greater than this.
 832.157 -    */
 832.158 -	ERtpSourceEventBase  = 0x300,
 832.159 -	
 832.160 -	
 832.161 -	/**
 832.162 -	An event type that indicates that an error has occurred.
 832.163 -	
 832.164 -    The event status is a standard Symbian OS error code. The callback parameter
 832.165 -    is used only to register interest in one type of error.
 832.166 -    */
 832.167 -	ERtpSourceFail       = 0x301,
 832.168 -	
 832.169 -	
 832.170 -	/**
 832.171 -	An event type that indicates that an in-sequence packet has been received.
 832.172 -	*/
 832.173 -	ERtpPacketReceived   = 0x302,
 832.174 -	
 832.175 -	
 832.176 -	/**
 832.177 -	An event type that indicates that the  codec has changed.
 832.178 -	
 832.179 -	The event status is the new payload type.
 832.180 -	*/
 832.181 -	ERtpCodecChange      = 0x303,
 832.182 -	
 832.183 -	
 832.184 -	/**
 832.185 -	An event type that indicates that a marker packet has arrived.
 832.186 -	*/
 832.187 -	ERtpMarker           = 0x304,
 832.188 -	
 832.189 -	
 832.190 -	/**
 832.191 -	An event type that indicates that a misordered packet has arrived.
 832.192 -	*/
 832.193 -	ERtpMisorder         = 0x305,
 832.194 -	
 832.195 -	
 832.196 -	/**
 832.197 -	An event type that indicates that a dropout has been detected.
 832.198 -	*/
 832.199 -	ERtpDropout          = 0x306,
 832.200 -	
 832.201 -	
 832.202 -	/**
 832.203 -	An event type that indicates that a SDES (Source Description) RTCP packet
 832.204 -	has been received.
 832.205 -	
 832.206 -	For SDES events, the callback parameter is used to specify the type of 
 832.207 -	SDES. Use a value from TRtpSendPacketType
 832.208 -	
 832.209 -	The event status is the SSRC of the sender.
 832.210 -
 832.211 -	@see RRtpSession::TRtpSendPacketType
 832.212 -	*/
 832.213 -	ERtpSDES             = 0x307, 
 832.214 -
 832.215 -
 832.216 -	/**
 832.217 -	An event type that indicates that a APP (Application Defined) RTCP packet
 832.218 -	has been received.
 832.219 -	
 832.220 -	The event status is the SSRC of the sender.
 832.221 -
 832.222 -	*/
 832.223 -	ERtpAPP              = 0x308,
 832.224 -	
 832.225 -	
 832.226 -	/**
 832.227 -	An event type that indicates that a SR (Sender Report) RTCP packet
 832.228 -	has been received.
 832.229 -
 832.230 -	The event status is the SSRC of the sender.
 832.231 -	
 832.232 -	*/
 832.233 -	ERtpSR               = 0x309,
 832.234 -	
 832.235 -	
 832.236 -	/**
 832.237 -	An event type that indicates that a RR (Receiver Report) RTCP packet
 832.238 -	has been received.
 832.239 -
 832.240 -	The event status is the SSRC of the sender.
 832.241 -	*/
 832.242 -	ERtpRR               = 0x30a,
 832.243 -
 832.244 -
 832.245 -	/**
 832.246 -	An event type that indicates that a BYE (Goodbye) RTCP packet
 832.247 -	has been received.
 832.248 -
 832.249 -	The event status is the SSRC of the sender.
 832.250 -	*/
 832.251 -	ERtpBYE              = 0x30b,
 832.252 -
 832.253 -	
 832.254 -	/**
 832.255 -	Not an event type, but defines the upper limit for receive stream event 
 832.256 -	type values.
 832.257 -	*/
 832.258 -	ERtpSourceEventEnd   = 0x3ff
 832.259 -	};
 832.260 -
 832.261 -
 832.262 -/**
 832.263 -@publishedAll
 832.264 -@released
 832.265 -
 832.266 -Indicates whether a callback function can be called once, or more than once.
 832.267 -
 832.268 -The appropriate enum value is passed as an argument to the
 832.269 -RegisterEventCallbackL() functions of RRtpSession, RRtpSendSource,
 832.270 -and RRtpReceiveSource, or to the equivalent static functions.
 832.271 -
 832.272 -@see RRtpSession
 832.273 -@see RRtpSendSource
 832.274 -@see RRtpReceiveSource
 832.275 -*/
 832.276 -enum TRtpOneShotness 
 832.277 -	{
 832.278 -	/**
 832.279 -	Indicates that the call back function can be called more than once.
 832.280 -	*/
 832.281 -	ERtpNotOneShot = 0,
 832.282 -
 832.283 -	
 832.284 -	/**
 832.285 -	Indicates that the call back function is only called once.
 832.286 -	*/
 832.287 -	ERtpOneShot = 0x40000000
 832.288 -	};
 832.289 -
 832.290 -
 832.291 -
 832.292 -
 832.293 -/**
 832.294 -@publishedAll
 832.295 -*/
 832.296 -typedef void (*TRtpCallbackFunction)(TAny* aPtr, const TRtpEvent& aEvent);
 832.297 -
 832.298 -
 832.299 -
 832.300 -/**
 832.301 -@internalComponent
 832.302 -*/
 832.303 -const TInt KRtpNoParameter = KRequestPending;
 832.304 -
 832.305 -
 832.306 -//Needed for recv-only option for RTP or RTCP
 832.307 -//This must map to TRtpType
 832.308 -enum TPacketType
 832.309 -	{	
 832.310 -	EPacketRtp,	
 832.311 -	EPacketRtcp
 832.312 -	};
 832.313 -
 832.314 -
 832.315 -
 832.316 -
 832.317 -/**
 832.318 -@publishedAll
 832.319 -@released
 832.320 -
 832.321 -A value that can be passed as the second parameter in a call to either
 832.322 -RRtpSendSource::NewSendPacketL() or RRtpSendSource::NewSendPacketLC()
 832.323 -to indicate that no exension is required for the RTP send packet.
 832.324 -*/
 832.325 -const TInt KRtpNoExtension = -1;
 832.326 -
 832.327 -
 832.328 -
 832.329 -/**
 832.330 -@publishedAll
 832.331 -@released
 832.332 -
 832.333 -A handle to an RTP session.
 832.334 -
 832.335 -This is the interface to the socket-level RTP service, and provides additional
 832.336 -facilities such as header parsing, re-ordering out-of-order packets,
 832.337 -demultiplexing multiple sources etc.
 832.338 -
 832.339 -The class abstracts all RTP information going to/from a RTP socket, and its
 832.340 -corresponding RTCP data.
 832.341 -
 832.342 -Each RTP endpoint on a device needs its own RTP session.
 832.343 -
 832.344 -Multiple hosts streaming to a port on this device correspond
 832.345 -to different RRtpReceiveSource objects associated with the session.
 832.346 -
 832.347 -The class behaviour assumes that an active scheduler has already been created
 832.348 -and started; the class does not function correctly if not.
 832.349 -*/
 832.350 -class RRtpSession
 832.351 -	{
 832.352 - public:
 832.353 -    /**
 832.354 -    A set of bit values passed as a parameter to RRtpSession::SendRTCPPacketL()
 832.355 -    to specify the SDES (Source Description) items that are to be sent with
 832.356 -    the packet. One or more of these may be set.
 832.357 -    
 832.358 -    @see RRtpSession::SendRTCPPacketL()
 832.359 -	*/
 832.360 -	enum TRtpSendPacketType
 832.361 -		{
 832.362 -        /**
 832.363 -        Canonical End-Point Identifier SDES Item.
 832.364 -        */
 832.365 -		ERtcpPacketCNAME = 1, 
 832.366 -		
 832.367 -		/**
 832.368 -        User Name SDES Item.
 832.369 -	    */
 832.370 -		ERtcpPacketNAME  = 2, 
 832.371 -		
 832.372 -	    /**
 832.373 -        Electronic Mail Address SDES Item.
 832.374 -	    */
 832.375 -		ERtcpPacketEMAIL = 4, 
 832.376 -		
 832.377 -        /**
 832.378 -	    Phone Number SDES Item.
 832.379 -	    */		
 832.380 -		ERtcpPacketPHONE = 8, 
 832.381 -		
 832.382 -		/**
 832.383 -	    Geographic User Location SDES Item.
 832.384 -	    */
 832.385 -		ERtcpPacketLOC   = 16,
 832.386 -		
 832.387 -		/**
 832.388 -        Application or Tool Name SDES Item 
 832.389 -	    */
 832.390 -		ERtcpPacketTOOL  = 32,
 832.391 -		
 832.392 -		/**
 832.393 -	    Notice/Status SDES Item 
 832.394 -	    */
 832.395 -		ERtcpPacketNOTE  = 64,
 832.396 -		
 832.397 -		/**
 832.398 -	    Private Extensions SDES Item 
 832.399 -	    */
 832.400 -		ERtcpPacketPRIV  = 128
 832.401 -		};
 832.402 -
 832.403 -	inline RRtpSession();
 832.404 -	inline TBool IsOpen() const;
 832.405 -
 832.406 -	IMPORT_C void OpenL(RSocketServ& aServer, TSockAddr& aLocalAddr,
 832.407 -						TSockAddr& aRemoteAddr,
 832.408 -						TInt aMaxRXSize, RConnection& aConnection, TInt aPriority = EPriorityNormal, 
 832.409 -						const TDesC8& aCNAME = KNullDesC8);
 832.410 -
 832.411 -	
 832.412 -	IMPORT_C void OpenL(RSocketServ& aServer, TSockAddr& aLocalAddr,
 832.413 -						TSockAddr& aRemoteAddr,
 832.414 -						TInt aMaxRXSize, TInt aPriority = EPriorityNormal, 
 832.415 -						const TDesC8& aCNAME = KNullDesC8);
 832.416 -
 832.417 -    /**
 832.418 -	@publishedPartner
 832.419 -	@released
 832.420 -   	
 832.421 -    Opens the session and initialises it.
 832.422 -
 832.423 -    No events will be generated until after control returns to the
 832.424 -    active scheduler. The client has this time to initialise the
 832.425 -    object by adding event callbacks.
 832.426 -
 832.427 -    @param aSocket     The connected socket.
 832.428 -    @param aMaxRXSize  The maximum size of a received packet.
 832.429 -    @param aRtcpSocket The RTCP socket.
 832.430 -    @param aPriority   The priority to be used for internal active objects
 832.431 -    @param aCNAME      The CNAME. A sensible default is supplied if none is
 832.432 -                       provided.
 832.433 -    */
 832.434 -	IMPORT_C void OpenL(RSocket& aSocket, TInt aMaxRXSize, 
 832.435 -						RSocket& aRtcpSocket,
 832.436 -						TInt aPriority = EPriorityNormal, 
 832.437 -						const TDesC8& aCNAME = KNullDesC8);
 832.438 -
 832.439 -	IMPORT_C void OpenL(RSocket& aSocket, TInt aMaxRXSize,
 832.440 -						TInt aPriority = EPriorityNormal);
 832.441 -
 832.442 -	IMPORT_C void Close();
 832.443 -
 832.444 -	IMPORT_C void SetMaxRXSize(TInt aMaxRXSize);
 832.445 -
 832.446 -	IMPORT_C TInt MaxRXSize();
 832.447 -    
 832.448 -    
 832.449 -    /** 
 832.450 -	@publishedPartner
 832.451 -	@released
 832.452 -	
 832.453 -    Sets the estimated bandwidth used by the session.
 832.454 -    
 832.455 -    This is used to decide when to send RTCP status packets.
 832.456 -    The default	value is read from a resource file and should be a reasonably
 832.457 -	sensible default based on the maximum bandwidth of the handset.
 832.458 -	
 832.459 -	@param aBandwidth The bandwidth in bps.
 832.460 -    */
 832.461 -	IMPORT_C void SetBandwidth(TUint aBandwidth);
 832.462 -
 832.463 -
 832.464 -    /**
 832.465 -	@publishedPartner
 832.466 -	@released
 832.467 -   	
 832.468 -   	Supplies information about the profile-specific RTP
 832.469 -    timestamps. 
 832.470 -    
 832.471 -    This is used to generate the RTP timestamps in RTCP packets.
 832.472 -    It is not used to generate timestamps in RTP packets as they must
 832.473 -    accurately relate to the time of the sample.
 832.474 -   	
 832.475 -   	@param aNow        The time now in RTP format
 832.476 -	@param aConversion The number of nanoseconds per RTP timer tick.
 832.477 -    */
 832.478 -	IMPORT_C void SetRTPTimeConversion(TUint aNow, TUint aConversion);
 832.479 -	IMPORT_C RRtpReceiveSource NewReceiveSourceL();
 832.480 -	IMPORT_C RRtpReceiveSource NewReceiveSourceLC();
 832.481 -
 832.482 -    /**
 832.483 -    Registers a callback for the specified event.
 832.484 -
 832.485 -	Some compilers may not support templated member functions. A static version
 832.486 -	of this function is available that offers the same behaviour:
 832.487 -    RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness,TInt)
 832.488 -
 832.489 -    @param aType      The type of event.
 832.490 -    @param aCallback  The callback function. The function is templated, and is
 832.491 -                      prototyped to take a pointer to an object of the template
 832.492 -                      type and a const reference to a TRtpEvent. The function
 832.493 -                      returns void.
 832.494 -	@param aPtr       A pointer that is passed to the callback function when
 832.495 -	                  that function is called.
 832.496 -	@param aOneShot   Indicates whether the callback function is only
 832.497 -	                  called once, or can be called more than once.
 832.498 -	@param aParameter A parameter to be passed to the registration function.
 832.499 -	                  The meaning of this depends entirely on the event type.
 832.500 -	                  The parameter is optional - the other overload of this
 832.501 -	                  function is available for registrations that don't need
 832.502 -                      to pass a parameter.                      
 832.503 -	*/
 832.504 -	template <class T> inline void 
 832.505 -		RegisterEventCallbackL(TRtpEventType aType, 
 832.506 -							   void (*aCallback)(T*, const TRtpEvent&), 
 832.507 -							   T* aPtr, 
 832.508 -							   TRtpOneShotness aOneShot,
 832.509 -							   TInt aParameter)
 832.510 -			{
 832.511 -			PrivRegisterEventCallbackL(
 832.512 -				aType|aOneShot, 
 832.513 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 832.514 -				static_cast<TAny*>(aPtr), aParameter);
 832.515 -			}
 832.516 -
 832.517 -    /**
 832.518 -    Registers a callback for the specified event.
 832.519 -
 832.520 -	Some compilers may not support templated member functions. A static version
 832.521 -	of this function is available that offers the same behaviour:
 832.522 -	RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness)
 832.523 -
 832.524 -    @param aType      The type of event.
 832.525 -    @param aCallback  The callback function. The function is templated, and is
 832.526 -                      prototyped to take a pointer to an object of the template
 832.527 -                      type and a const reference to a TRtpEvent. The function
 832.528 -                      returns void.
 832.529 -	@param aPtr       A pointer that is passed to the callback function when
 832.530 -	                  that function is called.
 832.531 -	@param aOneShot   Indicates whether the callback function is only
 832.532 -	                  called once, or can be called more than once. If not
 832.533 -	                  specified, the default is to allow the callback function
 832.534 -	                  to be called more than once.
 832.535 -	*/
 832.536 -	template <class T> inline void 
 832.537 -		RegisterEventCallbackL(TRtpEventType aType, 
 832.538 -							   void (*aCallback)(T*, const TRtpEvent&), 
 832.539 -							   T* aPtr, 
 832.540 -							   TRtpOneShotness aOneShot = ERtpNotOneShot)
 832.541 -			{
 832.542 -			PrivRegisterEventCallbackL(
 832.543 -				aType|aOneShot, 
 832.544 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 832.545 -				static_cast<TAny*>(aPtr));
 832.546 -			}
 832.547 -
 832.548 -
 832.549 -	/**
 832.550 -	@publishedPartner
 832.551 -	@released
 832.552 -	
 832.553 -	Gets an array contining the most recent RR (Receiver Report) from
 832.554 -	all hosts who are reporting on our send stream.
 832.555 -	
 832.556 -	@return The array of RRs.
 832.557 -	*/
 832.558 -	IMPORT_C RRtcpRRPart GetRRs();
 832.559 -
 832.560 -
 832.561 -	/**
 832.562 -	@publishedPartner
 832.563 -	@released
 832.564 -	
 832.565 -	Gets the data associated with the specified RTCP SDES (Source Description)
 832.566 -	item.
 832.567 -
 832.568 -	Note a that the PRIV (Private Extensions) SDES item is not supported
 832.569 -	by this mechanism.
 832.570 -	
 832.571 -	@param aType  The value identifying the RTCP SDES item.
 832.572 -	
 832.573 -	@param aValue A descriptor reference to the SDES item data. 
 832.574 -	
 832.575 -	@return KErrNotFound if the item type was not found in the most recent RTCP packet
 832.576 -			KErrNone if the operation is successful
 832.577 -	*/
 832.578 -	IMPORT_C TInt GetSDES(const TInt aType, TDes8& aValue);
 832.579 -
 832.580 -	
 832.581 -	/**
 832.582 -	@publishedPartner
 832.583 -	@released
 832.584 -	
 832.585 -	Sets the data associated with the specified RTCP SDES (Source Description)
 832.586 -	item for sending in the next SDES packet only.
 832.587 -
 832.588 -	The function Leaves if duplicate values are set for the same CNAME.
 832.589 -	
 832.590 -	Note a that the PRIV (Private Extensions) SDES item is not supported
 832.591 -	by this mechanism.
 832.592 -	
 832.593 -	NOTE - This call cannot be used to set a different CNAME for this session.
 832.594 -	The default CNAME is send with every SDES packets.
 832.595 -	
 832.596 -	@param aType  The value identfying the RTCP SDES item.
 832.597 -	@param aValue The SDES item data.
 832.598 -
 832.599 -	@return KErrTooBig if the length of the aValue is more than KMaxSdesItemLength(=255)
 832.600 -			KErrNone if the operation is successful
 832.601 -	*/
 832.602 -	IMPORT_C TInt SetSDESL(TInt aType, const TDesC8& aValue);
 832.603 -
 832.604 -	/**
 832.605 -	@publishedPartner
 832.606 -	@released
 832.607 -	
 832.608 -	Sets the data associated with the PRIV (Private Extensions) SDES item.
 832.609 -	
 832.610 -	@param aPrefix The value identfying the RTCP SDES item.
 832.611 -	@param aValue The SDES item data.
 832.612 -
 832.613 -  	@return KErrTooBig if the length of the aValue and aPrefix combined is more 
 832.614 -	                   than KMaxSdesItemLength(=255)
 832.615 -			KErrNone if the operation is successful
 832.616 -	*/
 832.617 -	IMPORT_C TInt SetPRIVL(const TDesC8& aPrefix, const TDesC8& aValue);
 832.618 -
 832.619 -    
 832.620 -	/**
 832.621 -	@publishedPartner
 832.622 -	@released
 832.623 -	Sends an APP (Application Defined) RTCP Packet.
 832.624 -	
 832.625 -	The packet is sent immediately.
 832.626 -	
 832.627 -	If used with RTCP auto-send, the function disrupts the auto-send
 832.628 -	intervals. Note however that Symbian reserves the right to fix this.
 832.629 -	
 832.630 -	@param aApp A handle to a RTCP APP (Application Defined) packet,
 832.631 -	            for experimental extensions to RTCP.
 832.632 -	*/
 832.633 -	IMPORT_C void SendAPPL(const TDesC8& aName, const TDesC8& aAppData = KNullDesC8, TUint8 aSubType = 0);
 832.634 -
 832.635 -
 832.636 -	/**
 832.637 -	@publishedPartner
 832.638 -	@released
 832.639 -	
 832.640 -	Enables or disables the automatic sending of RTCP SR (Sender Report),
 832.641 -	RR (Receiver Report), and SDES (Source Description) packets.
 832.642 -	
 832.643 -	Note that if automatic sending is not enabled and RTCP sending is required,
 832.644 -	then explicit calls to SendRTCPPacketL() will be required.
 832.645 -	
 832.646 -	@param aAutoSend ETrue, if RTCP packets need to be send automatically
 832.647 -	                 EFalse otherwise.
 832.648 -	
 832.649 -	@see RRtpSession::SendRTCPPacketL()
 832.650 -	*/
 832.651 -	IMPORT_C void SetRTCPAutoSend(TBool aAutoSend);
 832.652 -
 832.653 -
 832.654 -	/** 
 832.655 -	@publishedPartner
 832.656 -	@released
 832.657 -	
 832.658 -	Gets the RTCP Auto Send status. 
 832.659 -
 832.660 -	@return True, if RTCP SR, RR and SDES packets are automatically sent,
 832.661 -	        false otherwise
 832.662 -	
 832.663 -	@see RRtpSession::SetRTCPAutoSend()
 832.664 -	*/
 832.665 -	IMPORT_C TBool RTCPAutoSend() const;
 832.666 -
 832.667 -	/** 
 832.668 -	@publishedPartner
 832.669 -	@released
 832.670 -	
 832.671 -	Sets the RTCP Auto Send interval.
 832.672 -	This disables the RFC based calculation of RTCP intervals.
 832.673 -	To re-enable auto calculation, set the interval to zero.
 832.674 -
 832.675 -  	@param aInterval Time interval after which an RTCP auto-send will take place
 832.676 -	*/
 832.677 -	IMPORT_C void SetRtcpInterval(TTimeIntervalMicroSeconds32& aInterval);
 832.678 -	
 832.679 -	/** 
 832.680 -	@publishedPartner
 832.681 -	@released	
 832.682 -	Enables Receive only option for rtp or rtcp
 832.683 -
 832.684 -	@param aRtpOrRtcp Takes the values from the enum TPacketType
 832.685 -
 832.686 -	@see RRtpSession::DontReceive()
 832.687 -	*/
 832.688 -	IMPORT_C void DontReceive(TInt aRtpOrRtcp);
 832.689 -	
 832.690 -	/** 
 832.691 -	@publishedPartner
 832.692 -	@released
 832.693 -    Sends an RTCP packet now. 
 832.694 -
 832.695 -	Calling this function doesn't make much sense if auto-send is
 832.696 -	on, as it will result in packets being sent at rather
 832.697 -	incoherent intervals.
 832.698 -
 832.699 -	@param aPacketType  Zero or more of the bit values defined by
 832.700 -	                    the TRtpSendPacketType enum. The packet sent will
 832.701 -	                    contain a SR (Sender Report) or RR (Receiver Report),
 832.702 -	                    depending on whether any packets have actually been
 832.703 -	                    sent, together with all SDES (Source Description) items
 832.704 -	                    specified by this parameter.
 832.705 -
 832.706 -    @see TRtpSendPacketType
 832.707 -	*/
 832.708 -	IMPORT_C void SendRTCPPacketL(TDesC8& aPacket);
 832.709 -
 832.710 -	
 832.711 -	/**
 832.712 -	@publishedPartner
 832.713 -	@released
 832.714 -	Creates a new send stream, and returns the send stream handle.
 832.715 -
 832.716 -	Only one send stream per session is permitted, which means that you must not
 832.717 -	call this function if the send stream has already been created.
 832.718 -
 832.719 -	As the send stream is an active object, it cannot handle request
 832.720 -	completion events until control returns to the active scheduler.
 832.721 -	Typically, clients will want to add event registrations before that.
 832.722 -
 832.723 -	The Code panics if the SendSource has alredy been opened.
 832.724 -
 832.725 -	@return The send stream handle.
 832.726 -
 832.727 -	This function may leave if memory is not enough.
 832.728 -	*/
 832.729 -	IMPORT_C RRtpSendSource NewSendSourceL(); 
 832.730 -
 832.731 -
 832.732 -	/**
 832.733 -	@publishedPartner
 832.734 -	@released
 832.735 -	
 832.736 -	Gets the handle to the send stream object associated with this session.
 832.737 -
 832.738 -	The send stream object is the one created in a previous call
 832.739 -	to NewSendSourceL(). If the send stream object has not been created, then
 832.740 -	the returned handle will refer to a closed send stream.
 832.741 -
 832.742 -    @return The handle to the send stream object.
 832.743 -    
 832.744 -    @see RRtpSendSource NewSendSourceL()
 832.745 -    */
 832.746 -	IMPORT_C RRtpSendSource SendSource(); 
 832.747 -
 832.748 -
 832.749 -    /**
 832.750 -	@publishedPartner
 832.751 -	@released
 832.752 -    
 832.753 -    Sets the number of sequential packets that must be received
 832.754 -	before a stream is considered good.
 832.755 -	
 832.756 -	Sets the maximum number of dropped packets to be considered a
 832.757 -	dropout, as opposed to an ended and restarted stream.
 832.758 -	
 832.759 -	Sets the maximum number of packets by which a packet can be delayed 
 832.760 -	before it is considered dropped.
 832.761 -			
 832.762 -	@param aMaxMisorder The maximum number of packets.
 832.763 -		
 832.764 -	@param aMaxDropout The number of sequential packets.
 832.765 -		
 832.766 -	@param aMinSequential The number of sequential packets.
 832.767 -	@post The session will be 'restarted', 
 832.768 -			i.e. it resets the sequence number sequence and resets all RTCP statistics.
 832.769 -	*/
 832.770 -	IMPORT_C void SetRtpStreamParameters(TInt aMinSequential, TInt aMaxMisorder, TInt aMaxDropout);
 832.771 -
 832.772 -	inline TBool operator == (RRtpSession aThat) const;
 832.773 -	inline TBool operator != (RRtpSession aThat) const;
 832.774 -
 832.775 -	/**
 832.776 -	@publishedPartner
 832.777 -	@released
 832.778 -
 832.779 -    The event manager contains a number of callback registrations, each of which 
 832.780 -	binds a function and pointer (normally an object) to a particular kind of
 832.781 -    event. Registrations can be bound to all events on a stream.
 832.782 -
 832.783 -	If a function is registered for a particular event, it will be called when 
 832.784 -	that event occurs. One callback function can be associated with more than 1
 832.785 -	callback registration. Callback functions take a pointer argument
 832.786 -	which was supplied as part of the registration
 832.787 -
 832.788 -    @param aType Event type
 832.789 -		
 832.790 -	@param aCallback Callback object
 832.791 -		
 832.792 -	@param aPtr Pointer to data that needs to be passed to the callback function
 832.793 -
 832.794 -  	@param aParameter Parameter to be passed to internal callback subsystem
 832.795 -	*/
 832.796 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 832.797 -										  TRtpCallbackFunction aCallback, 
 832.798 -										  TAny* aPtr, 
 832.799 -										  TInt aParameter);
 832.800 -
 832.801 -	/**
 832.802 -	@publishedPartner
 832.803 -	@released
 832.804 -
 832.805 -    The event manager contains a number of callback registrations, each of which 
 832.806 -	binds a function and pointer (normally an object) to a particular kind of
 832.807 -    event. Registrations can be bound to all events on a stream.
 832.808 -
 832.809 -	If a function is registered for a particular event, it will be called when 
 832.810 -	that event occurs. One callback function can be associated with more than 1
 832.811 -	callback registration. Callback functions take a pointer argument
 832.812 -	which was supplied as part of the registration
 832.813 -
 832.814 -    @param aType Event type
 832.815 -		
 832.816 -	@param aCallback Callback object
 832.817 -		
 832.818 -	@param aPtr Pointer to data that needs to be passed to the callback function
 832.819 -	*/
 832.820 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 832.821 -										  TRtpCallbackFunction aCallback, 
 832.822 -										  TAny* aPtr);
 832.823 -
 832.824 - private:
 832.825 -	friend class TRtpEvent;
 832.826 -	CRtpSession* iPtr;
 832.827 -	// Note: Comments that start with //\ are pseudo-variables used to get
 832.828 -	// Doxygen collaboration diagrams to look right. Ignore them.
 832.829 -	//\ RRtpSendSource sndSource_1_01;
 832.830 -	//\ RRtpReceiveSource rcvSource_1_n;
 832.831 -	//\ TRtpCallback callbacks_1_n;
 832.832 -	//\ TRtpEvent events_1_n;
 832.833 -	};
 832.834 -
 832.835 -
 832.836 -
 832.837 -
 832.838 -/**
 832.839 -@publishedAll
 832.840 -@released
 832.841 -
 832.842 -A handle to a send stream.
 832.843 -
 832.844 -Use this class to manage the creation and sending of packets. 
 832.845 -A session can have only one send stream.
 832.846 -
 832.847 -Only one packet can be sent at any one time.
 832.848 -Once a packet has been sent, the packet cannot be closed and no further packets
 832.849 -can be sent until an event signalling the completion of the send operation has
 832.850 -occurred. This will be one of the events defined by the enum values:
 832.851 -ERtpSendSucceeded and ERtpSendFail.
 832.852 -
 832.853 -A client must monitor these events so that it can schedule the sending of
 832.854 -subsequent packets.
 832.855 -It does this by implementing and registering callback functions that 
 832.856 -handle these events.
 832.857 -
 832.858 -@see TRtpEventType
 832.859 -*/
 832.860 -class RRtpSendSource
 832.861 -	{
 832.862 - public:
 832.863 -	inline RRtpSendSource();
 832.864 -	inline TBool IsOpen() const;
 832.865 -	IMPORT_C void Close();
 832.866 -
 832.867 -	IMPORT_C void Cancel();
 832.868 -    
 832.869 -	template <class T> inline void 
 832.870 -		RegisterEventCallbackL(TRtpEventType aType, 
 832.871 -							   void (*aCallback)(T*, const TRtpEvent&), 
 832.872 -							   T* aPtr, 
 832.873 -							   TRtpOneShotness aOneShot,
 832.874 -							   TInt aParameter)
 832.875 -	{
 832.876 -	PrivRegisterEventCallbackL(aType|aOneShot,
 832.877 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 832.878 -				static_cast<TAny*>(aPtr), aParameter);
 832.879 -	}
 832.880 -
 832.881 -
 832.882 -	template <class T> inline void 
 832.883 -		RegisterEventCallbackL(TRtpEventType aType, 
 832.884 -							   void (*aCallback)(T*, const TRtpEvent&), 
 832.885 -							   T* aPtr, 
 832.886 -							   TRtpOneShotness aOneShot = ERtpNotOneShot)
 832.887 -	{
 832.888 -	PrivRegisterEventCallbackL(aType|aOneShot,
 832.889 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
 832.890 -				static_cast<TAny*>(aPtr));
 832.891 -	}
 832.892 -
 832.893 -
 832.894 -	
 832.895 -	IMPORT_C RRtpSendPacket NewSendPacketL(TInt aPayloadSize = 0, 
 832.896 -										   TInt aHeaderExtensionSize = 
 832.897 -										   KRtpNoExtension);
 832.898 -	
 832.899 -	IMPORT_C RRtpSendPacket NewSendPacketLC(TInt aPayloadSize = 0, 
 832.900 -											TInt aHeaderExtensionSize = 
 832.901 -											KRtpNoExtension);
 832.902 -
 832.903 -	IMPORT_C TBool IsSending();
 832.904 -	IMPORT_C void SetPayloadType(TUint aPayloadType);
 832.905 -	IMPORT_C void SetDefaultPayloadSize(TInt aPayloadSize);
 832.906 -	/**
 832.907 -	@publishedPartner
 832.908 -	@released
 832.909 -	
 832.910 -	Sends a Bye RTCP packet.
 832.911 -	
 832.912 -	@param aReason The reason for sending the Bye RTCP packet.
 832.913 -	*/
 832.914 -	IMPORT_C void ByeL(TDesC8& aReason);
 832.915 -	IMPORT_C TUint32 GetLocalSSRC();
 832.916 -
 832.917 -	IMPORT_C void SetAlignment(TInt aAlignment);
 832.918 -	IMPORT_C TInt Alignment() const;
 832.919 -
 832.920 -	inline TBool operator == (RRtpSendSource aThat) const;
 832.921 -	inline TBool operator != (RRtpSendSource aThat) const;
 832.922 -	
 832.923 -	/**
 832.924 -	@publishedPartner
 832.925 -	@released
 832.926 -
 832.927 -    The event manager contains a number of callback registrations, each of which 
 832.928 -	binds a function and pointer (normally an object) to a particular kind of
 832.929 -    event. Registrations can be bound to all events on a stream.
 832.930 -
 832.931 -	If a function is registered for a particular event, it will be called when 
 832.932 -	that event occurs. One callback function can be associated with more than 1
 832.933 -	callback registration. Callback functions take a pointer argument
 832.934 -	which was supplied as part of the registration
 832.935 -
 832.936 -    @param aType Event type
 832.937 -		
 832.938 -	@param aCallback Callback object
 832.939 -		
 832.940 -	@param aPtr Pointer to data that needs to be passed to the callback function
 832.941 -
 832.942 -  	@param aParameter Parameter to be passed to internal callback subsystem
 832.943 -	*/
 832.944 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 832.945 -										  TRtpCallbackFunction aCallback, 
 832.946 -										  TAny* aPtr, 
 832.947 -										  TInt aParameter);
 832.948 -
 832.949 -	/**
 832.950 -	@publishedPartner
 832.951 -	@released
 832.952 -
 832.953 -    The event manager contains a number of callback registrations, each of which 
 832.954 -	binds a function and pointer (normally an object) to a particular kind of
 832.955 -    event. Registrations can be bound to all events on a stream.
 832.956 -
 832.957 -	If a function is registered for a particular event, it will be called when 
 832.958 -	that event occurs. One callback function can be associated with more than 1
 832.959 -	callback registration. Callback functions take a pointer argument
 832.960 -	which was supplied as part of the registration
 832.961 -
 832.962 -    @param aType Event type
 832.963 -		
 832.964 -	@param aCallback Callback object
 832.965 -		
 832.966 -	@param aPtr Pointer to data that needs to be passed to the callback function
 832.967 -	*/
 832.968 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
 832.969 -										  TRtpCallbackFunction aCallback, 
 832.970 -										  TAny* aPtr);
 832.971 - private:
 832.972 -	friend class RRtpSession;
 832.973 -	friend class TRtpEvent;
 832.974 -	CRtpSendSource* iPtr;
 832.975 -	// Note: Comments that start with //\ are pseudo-variables used to get
 832.976 -	// Doxygen collaboration diagrams to look right. Ignore them.
 832.977 -	//\ TRtpCallback callbacks_1_n;
 832.978 -	//\ TRtpEvent events_1_n;
 832.979 -	//\ TRtpSendPacket packets_1_n;
 832.980 -	};
 832.981 -
 832.982 -
 832.983 -
 832.984 -
 832.985 -/**
 832.986 -@publishedAll
 832.987 -@released
 832.988 -
 832.989 -A handle to a receive stream.
 832.990 -
 832.991 -An object of this type represents the stream of data on a single SSRC and
 832.992 -delivers the RTP packets and RTCP information in the order they
 832.993 -arrive.
 832.994 -
 832.995 -Note that RTP does not guarantee the order of delivery, which means that the 
 832.996 -client may want to buffer the data.
 832.997 -*/
 832.998 -class RRtpReceiveSource 
 832.999 -	{
832.1000 - public:
832.1001 -	RRtpReceiveSource();
832.1002 -	inline TBool IsOpen() const;
832.1003 -
832.1004 -	IMPORT_C void Close();
832.1005 -
832.1006 -	
832.1007 -	template <class T> inline void 
832.1008 -		RegisterEventCallbackL(TRtpEventType aType, 
832.1009 -							   void (*aCallback)(T*, const TRtpEvent&), 
832.1010 -							   T* aPtr, 
832.1011 -							   TRtpOneShotness aOneShot,
832.1012 -							   TInt aParameter)
832.1013 -	{
832.1014 -	PrivRegisterEventCallbackL(aType|aOneShot, 
832.1015 -			reinterpret_cast<TRtpCallbackFunction>(aCallback),
832.1016 -			static_cast<TAny*>(aPtr), aParameter);
832.1017 -	}
832.1018 -
832.1019 -
832.1020 -	template <class T> inline void 
832.1021 -		RegisterEventCallbackL(TRtpEventType aType, 
832.1022 -							   void (*aCallback)(T*, const TRtpEvent&), 
832.1023 -							   T* aPtr, 
832.1024 -							   TRtpOneShotness aOneShot = ERtpNotOneShot)	
832.1025 -	{
832.1026 -	PrivRegisterEventCallbackL(aType|aOneShot, 
832.1027 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
832.1028 -				static_cast<TAny*>(aPtr));
832.1029 -	}
832.1030 -
832.1031 -	/**
832.1032 -	@publishedPartner
832.1033 -	@released
832.1034 -	
832.1035 -	Gets the data associated with the specified RTCP SDES (Source Description)
832.1036 -	item.
832.1037 -
832.1038 -	Note a that the PRIV (Private Extensions) SDES item is not supported
832.1039 -	by this mechanism.
832.1040 -
832.1041 -	@param aType  The value identifying the RTCP SDES item.
832.1042 -	
832.1043 -	@return A descriptor reference to the SDES item data. 
832.1044 -	*/
832.1045 -	IMPORT_C TInt GetSDES(const TInt aType, TDes8& aValue);
832.1046 -
832.1047 -
832.1048 -	/**
832.1049 -	@publishedPartner
832.1050 -	@released
832.1051 -	
832.1052 -	Gets the most recent SR ((Sender Report) from this SSRC.
832.1053 - 
832.1054 -    @return A handle to the SR.
832.1055 -    */
832.1056 -	IMPORT_C RRtcpSRPart GetSR();
832.1057 -
832.1058 -
832.1059 -	/**
832.1060 -	@publishedPartner
832.1061 -	@released
832.1062 -	
832.1063 -	Gets the reason for a BYE packet.
832.1064 -	
832.1065 -	@return A descriptor contaning the BYE message. This is
832.1066 -	        KNullDesC if the source has not sent a BYE packet.
832.1067 -    */
832.1068 -	IMPORT_C TDesC8& GetByeReason();
832.1069 -
832.1070 -
832.1071 -	/**
832.1072 -	@publishedPartner
832.1073 -	@released
832.1074 -	
832.1075 -	Parameters from the last APP (Application Defined) packet.
832.1076 -
832.1077 -  	@param aName  Four-bytes application name
832.1078 -	@param aAppData  Applciation specific data
832.1079 -	@param aSubType  Application defined sub-type of the APP packet
832.1080 -	*/
832.1081 -	IMPORT_C void GetLastApp(TPtrC8& aName, TPtrC8& aAppData, TUint& aSubType);
832.1082 -
832.1083 -	IMPORT_C RRtpReceivePacket Packet();
832.1084 -
832.1085 -	/**
832.1086 -	@publishedPartner
832.1087 -	@released
832.1088 -	
832.1089 -	Gets the SSRC of the remote end
832.1090 -
832.1091 -	@return The SSRC of the remote end
832.1092 -	*/
832.1093 -	IMPORT_C TUint SSRC() const;
832.1094 -
832.1095 -	inline TBool operator == (RRtpReceiveSource aThat) const;
832.1096 -	inline TBool operator != (RRtpReceiveSource aThat) const;
832.1097 -
832.1098 -	/**
832.1099 -	@publishedPartner
832.1100 -	@released
832.1101 -
832.1102 -    The event manager contains a number of callback registrations, each of which 
832.1103 -	binds a function and pointer (normally an object) to a particular kind of
832.1104 -    event. Registrations can be bound to all events on a stream.
832.1105 -
832.1106 -	If a function is registered for a particular event, it will be called when 
832.1107 -	that event occurs. One callback function can be associated with more than 1
832.1108 -	callback registration. Callback functions take a pointer argument
832.1109 -	which was supplied as part of the registration
832.1110 -
832.1111 -    @param aType Event type
832.1112 -		
832.1113 -	@param aCallback Callback object
832.1114 -		
832.1115 -	@param aPtr Pointer to data that needs to be passed to the callback function
832.1116 -
832.1117 -  	@param aParameter Parameter to be passed to internal callback subsystem
832.1118 -	*/
832.1119 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
832.1120 -										  TRtpCallbackFunction aCallback, 
832.1121 -										  TAny* aPtr, TInt aParameter);
832.1122 -
832.1123 -	/**
832.1124 -	@publishedPartner
832.1125 -	@released
832.1126 -
832.1127 -    The event manager contains a number of callback registrations, each of which 
832.1128 -	binds a function and pointer (normally an object) to a particular kind of
832.1129 -    event. Registrations can be bound to all events on a stream.
832.1130 -
832.1131 -	If a function is registered for a particular event, it will be called when 
832.1132 -	that event occurs. One callback function can be associated with more than 1
832.1133 -	callback registration. Callback functions take a pointer argument
832.1134 -	which was supplied as part of the registration
832.1135 -
832.1136 -    @param aType Event type
832.1137 -		
832.1138 -	@param aCallback Callback object
832.1139 -		
832.1140 -	@param aPtr Pointer to data that needs to be passed to the callback function
832.1141 -	*/
832.1142 -
832.1143 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
832.1144 -										  TRtpCallbackFunction aCallback, 
832.1145 -										  TAny* aPtr);
832.1146 - private:
832.1147 -	friend class RRtpSession;
832.1148 -	friend class TRtpEvent;
832.1149 -	CRtpReceiveSource* iPtr;
832.1150 -	// Note: Comments that start with //\ are pseudo-variables used to get
832.1151 -	// Doxygen collaboration diagrams to look right. Ignore them.
832.1152 -	//\ TRtpCallback callbacks_1_n;
832.1153 -	//\ TRtpEvent events_1_n;
832.1154 -	//\ TRtpReceivePacket packets_1_n;
832.1155 -	};
832.1156 -
832.1157 -
832.1158 -
832.1159 -
832.1160 -/**
832.1161 -@publishedAll
832.1162 -@released
832.1163 -
832.1164 -A handle to an RTP packet.
832.1165 -
832.1166 -The packet is accessed through the interface provided by this handle.
832.1167 -*/
832.1168 -class RRtpPacket
832.1169 -	{
832.1170 - public:
832.1171 -	inline RRtpPacket();
832.1172 -	inline TBool IsOpen() const;
832.1173 -
832.1174 -	IMPORT_C void Close();
832.1175 -	IMPORT_C TPtrC8 Payload() const;
832.1176 -	IMPORT_C TUint SequenceNumber() const;
832.1177 -	IMPORT_C TUint Timestamp() const;
832.1178 -	IMPORT_C TUint SSRC() const;
832.1179 -	IMPORT_C RRtpCSRCs CSRCs() const;
832.1180 -	IMPORT_C TBool ExtensionPresent() const;
832.1181 -	IMPORT_C RRtpHeaderExtension Extension() const; 
832.1182 -	IMPORT_C TBool Marker() const;
832.1183 -	IMPORT_C TUint PayloadType() const;
832.1184 -	IMPORT_C TUint Flags() const;
832.1185 -
832.1186 -	inline TBool operator == (RRtpPacket aThat) const;
832.1187 -	inline TBool operator != (RRtpPacket aThat) const;
832.1188 -
832.1189 - protected:
832.1190 -	TRtpPacket* iPtr;
832.1191 -	// Note: Comments that start with //\ are pseudo-variables used to get
832.1192 -	// Doxygen collaboration diagrams to look right. Ignore them.
832.1193 -	//\ RRtpHeaderExtension extension_1_01;
832.1194 -	//\ RRtpCSRCs csrcs_1_01;
832.1195 -	};
832.1196 -
832.1197 -
832.1198 -
832.1199 -
832.1200 -/**
832.1201 -@publishedAll
832.1202 -@released
832.1203 -
832.1204 -A handle to an RTP packet to be sent (an RTP send packet).
832.1205 -
832.1206 -@see RRtpSendSource
832.1207 -*/
832.1208 -class RRtpSendPacket : public RRtpPacket
832.1209 -	{
832.1210 - public:
832.1211 -	IMPORT_C void Send();
832.1212 -	IMPORT_C TDes8& WritePayload();
832.1213 -	IMPORT_C void SetTimestamp(TUint aTimestamp);
832.1214 -	IMPORT_C void SetMarker(TBool aMark);
832.1215 -	IMPORT_C void SetPayloadType(TUint aPayloadType);
832.1216 -	IMPORT_C void SetFlags(TUint aFlags);
832.1217 -
832.1218 -	friend class RRtpSendSource;
832.1219 -	};
832.1220 -
832.1221 -
832.1222 -
832.1223 -
832.1224 -/**
832.1225 -@publishedAll
832.1226 -@released
832.1227 -
832.1228 -A handle to an RTP packet received from another source.
832.1229 -*/
832.1230 -class RRtpReceivePacket : public RRtpPacket
832.1231 -	{
832.1232 -	friend class RRtpReceiveSource;
832.1233 -	friend class TRtpReceivePacket;
832.1234 -	};
832.1235 -
832.1236 -
832.1237 -
832.1238 -
832.1239 -/**
832.1240 -@publishedAll
832.1241 -@released
832.1242 -
832.1243 -An RTP event.
832.1244 -
832.1245 -An event is generated when anything happens that a client might want
832.1246 -to know about. The class encapulates two pieces of information:
832.1247 -1. An event type as defined by a TRtpEventType value.
832.1248 -2. Additional information whose meaning is dependent on the event type.
832.1249 -
832.1250 -Additional information may be implicitly associated with the event, but still
832.1251 -needs to be fetched from another object, for example, when processing
832.1252 -an ERtpPacketReceived event, the packet (represented by a RRtpReceivePacket
832.1253 -handle) must be obtained from the receive stream (represented by a
832.1254 -RRtpReceiveStream handle).
832.1255 -
832.1256 -Events are always associated with either an RTP session, a send stream or
832.1257 -a receive stream, and this class has functions for getting the corresponding
832.1258 -handle.
832.1259 -
832.1260 -@see RRtpSession
832.1261 -@see RRtpSendSource
832.1262 -@see RRtpReceiveSource
832.1263 -*/
832.1264 -class TRtpEvent
832.1265 -	{
832.1266 - public:
832.1267 -	IMPORT_C TRtpEvent(TRtpEventType aType, TInt aStatus, TAny* aData);
832.1268 -	IMPORT_C RRtpSession Session() const;
832.1269 -	IMPORT_C RRtpSendSource SendSource() const;
832.1270 -	IMPORT_C RRtpReceiveSource ReceiveSource() const;
832.1271 -	IMPORT_C TBool IsSessionEvent() const;
832.1272 -	IMPORT_C TBool IsSendSourceEvent() const;
832.1273 -	IMPORT_C TBool IsReceiveSourceEvent() const;
832.1274 -        
832.1275 -	inline TRtpEventType Type() const;
832.1276 -	inline TInt Status() const;
832.1277 - private:
832.1278 -	TRtpEventType iType;
832.1279 -	TInt iStatus;
832.1280 -	TAny* iData;
832.1281 -	};
832.1282 -
832.1283 -
832.1284 -
832.1285 -
832.1286 -/**
832.1287 -@publishedAll
832.1288 -@released
832.1289 -
832.1290 -Reresents an RTP packet's header extension.
832.1291 -
832.1292 -The format of a header extension is profile-defined.
832.1293 -*/
832.1294 -class RRtpHeaderExtension
832.1295 -	{
832.1296 - public:
832.1297 -	IMPORT_C TUint16 Type() const;
832.1298 -	IMPORT_C void SetType(TUint16 aType);
832.1299 -	IMPORT_C TPtrC8 Data();
832.1300 - private:
832.1301 -	friend class RRtpPacket;
832.1302 -	TRtpPacket* iPtr;
832.1303 -	};
832.1304 -
832.1305 -
832.1306 -
832.1307 -
832.1308 -/**
832.1309 -@publishedAll
832.1310 -@released
832.1311 -
832.1312 -A handle representing the list of CSRCs in an RTP packet.
832.1313 -*/
832.1314 -class RRtpCSRCs
832.1315 -	{
832.1316 - public:
832.1317 -	IMPORT_C TInt Count() const;
832.1318 -	IMPORT_C TUint operator [](TUint aIndex) const;
832.1319 - private:
832.1320 -	friend class RRtpPacket;
832.1321 -	
832.1322 -	TRtpPacket* iPtr;
832.1323 -	};
832.1324 -
832.1325 -
832.1326 -/**
832.1327 -@publishedPartner
832.1328 -
832.1329 -A set of panic codes.
832.1330 -
832.1331 -in release mode, different panic codes, such as
832.1332 -KERN-EXEC 3 may be generated instead.
832.1333 -*/
832.1334 -enum TRtpPanicCode
832.1335 -	{
832.1336 -	ERtpPacketIsClosed = 1, 
832.1337 -	ERtpPayloadTypeOutOfRange = 2,
832.1338 -	ERtpSessionIsClosed = 3,
832.1339 -	ERtpSourceIsClosed = 4,
832.1340 -	ERtpNoExtension = 5,
832.1341 -	ERtpLeaveInResponseToError = 6,
832.1342 -	ERtpCantSend2PacketsAtOnce = 7,
832.1343 -	ERtpWrongEventType = 8,
832.1344 -	ERtpWrongParameter = 9,
832.1345 -	ERtpSendSourceAlreadyOpen = 10,
832.1346 -	ERtpSessionAlreadyOpen = 11,
832.1347 -	//
832.1348 -	ERtpCoreController = 100,
832.1349 -	};
832.1350 -
832.1351 -GLREF_C void Panic(TRtpPanicCode aPanicCode);
832.1352 -
832.1353 -#include "rtp.inl"
832.1354 -
832.1355 -#endif // RTP_H
   833.1 --- a/epoc32/include/schedulebaseservermtm.h	Tue Mar 16 16:12:26 2010 +0000
   833.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   833.3 @@ -1,117 +0,0 @@
   833.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   833.5 -// All rights reserved.
   833.6 -// This component and the accompanying materials are made available
   833.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   833.8 -// which accompanies this distribution, and is available
   833.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  833.10 -//
  833.11 -// Initial Contributors:
  833.12 -// Nokia Corporation - initial contribution.
  833.13 -//
  833.14 -// Contributors:
  833.15 -//
  833.16 -// Description:
  833.17 -//
  833.18 -
  833.19 -
  833.20 -#ifndef SCHEDULE_BASE_SERVER_MTM_H_
  833.21 -#define SCHEDULE_BASE_SERVER_MTM_H_
  833.22 -
  833.23 -/////////////////////////////////////////////////////////////////////////////
  833.24 -//
  833.25 -//	CScheduleBaseServerMtm Declaration
  833.26 -//
  833.27 -/////////////////////////////////////////////////////////////////////////////
  833.28 -
  833.29 - 
  833.30 -
  833.31 -#include <mtsr.h>
  833.32 -#include <barsc.h>
  833.33 -
  833.34 -
  833.35 -class CMsvScheduleSend;
  833.36 -class CMsvSysAgentActions;
  833.37 -class TMsvSendErrorAction;
  833.38 -class TMsvSchedulePackage;
  833.39 -class CRepository;
  833.40 -
  833.41 -class CScheduleBaseServerMtm : public CBaseServerMtm
  833.42 -/**
  833.43 -Base class for Server MTMs that support scheduling.
  833.44 -
  833.45 -It contains pure virtual functions which must be implemented by the Server 
  833.46 -MTM. These functions are not required for interoperability with any other 
  833.47 -classes, however they are essential functionality that must be implemented 
  833.48 -by a Server MTM that support scheduling.
  833.49 -
  833.50 -CScheduleBaseServerMtm uses a class derived from CMsvScheduleSend to
  833.51 -interface with the task scheduler.
  833.52 -
  833.53 -@see CMsvScheduleSend
  833.54 -@publishedAll
  833.55 -@released
  833.56 -*/
  833.57 -	{
  833.58 -protected:
  833.59 -
  833.60 -//	--- Construction ---
  833.61 -
  833.62 -	IMPORT_C CScheduleBaseServerMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvServerEntry* aServerEntry);
  833.63 -
  833.64 -//	--- Send the Scheduled Messages ---
  833.65 -
  833.66 -	IMPORT_C virtual void SendScheduledL(CMsvEntrySelection& aSelection, const TBool aMove, const TDesC8& aParameter, TRequestStatus& aStatus);
  833.67 -	IMPORT_C virtual void ScheduleL(CMsvEntrySelection& aSelection, const TBool aMove, const TDesC8& aParameter, TRequestStatus& aStatus);
  833.68 -	IMPORT_C virtual void ConstructL();
  833.69 -	IMPORT_C void LoadResourceFileL(const TDesC& aResFileName);
  833.70 -
  833.71 -// Other Schedule Commands
  833.72 -
  833.73 -	IMPORT_C virtual void CheckScheduleL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
  833.74 -	IMPORT_C virtual void DeleteScheduleL(const CMsvEntrySelection& aSelection, const TDesC8& aParameter, TRequestStatus& aStatus);
  833.75 -
  833.76 -//	--- Pure virtual functions that must be implemented in a derived class ---
  833.77 -
  833.78 -	/**
  833.79 -	Populates a TMsvSchedulePackage object with scheduling information.
  833.80 -	
  833.81 -	@param aParameter Parameter information for the package
  833.82 -	@param aMove Flag that signals whether a move or copy is required
  833.83 -	@param aPackage On return, a populated object
  833.84 -	*/
  833.85 -	virtual void PopulateSchedulePackage(const TDesC8& aParameter, const TBool aMove, TMsvSchedulePackage& aPackage) const = 0;
  833.86 -	
  833.87 -	/**
  833.88 -	Loads the resource file (if any) for the MTM.
  833.89 -	*/
  833.90 -	virtual void LoadResourceFileL() = 0;
  833.91 -
  833.92 -
  833.93 -	IMPORT_C void Queue(TRequestStatus& aStatus);
  833.94 -
  833.95 -	IMPORT_C void LoadScheduleSettingsL(CRepository& aRepository, TBool aRestoreErrorsFromResource = EFalse, TInt aErrorsResourceId = 0);
  833.96 -
  833.97 -protected:
  833.98 -
  833.99 -	IMPORT_C ~CScheduleBaseServerMtm();
 833.100 -
 833.101 -private:
 833.102 -
 833.103 -	void RequestComplete(TRequestStatus* aStatus, TInt aError);
 833.104 -
 833.105 -protected:
 833.106 -
 833.107 -//	--- Data Member ---
 833.108 -
 833.109 -	/** Message scheduler. */
 833.110 -	CMsvScheduleSend* iScheduleSend; //Should be constructed and deleted by the derived class
 833.111 -
 833.112 -	/** MTM resource file. */
 833.113 -	RResourceFile iResourceFile;
 833.114 -	/** File server handle. */
 833.115 -	RFs iFs;
 833.116 -	/** Asynchronous status word. */
 833.117 -	TRequestStatus* iReport;
 833.118 -	};
 833.119 -
 833.120 -#endif
   834.1 --- a/epoc32/include/schsend.rh	Tue Mar 16 16:12:26 2010 +0000
   834.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   834.3 @@ -1,39 +0,0 @@
   834.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   834.5 -// All rights reserved.
   834.6 -// This component and the accompanying materials are made available
   834.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   834.8 -// which accompanies this distribution, and is available
   834.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  834.10 -//
  834.11 -// Initial Contributors:
  834.12 -// Nokia Corporation - initial contribution.
  834.13 -//
  834.14 -// Contributors:
  834.15 -//
  834.16 -// Description:
  834.17 -//
  834.18 -
  834.19 -#include <schsend.hrh>
  834.20 -
  834.21 -#if !defined(__SCHSEND_RH__)
  834.22 -#define __SCHSEND_RH__
  834.23 -
  834.24 -STRUCT SEND_ERROR
  834.25 -	{
  834.26 -	LONG error;
  834.27 -	}
  834.28 -
  834.29 -STRUCT SEND_ERROR_ACTION
  834.30 -	{
  834.31 -	BYTE flags;
  834.32 -	WORD max_retries = 0;
  834.33 -	STRUCT errors[];
  834.34 -	}
  834.35 -
  834.36 -STRUCT SEND_ERROR_ACTIONS
  834.37 -	{
  834.38 -	STRUCT default;
  834.39 -	STRUCT actions[];
  834.40 -	}
  834.41 -
  834.42 -#endif
   835.1 --- a/epoc32/include/sdpattributefield.h	Tue Mar 16 16:12:26 2010 +0000
   835.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   835.3 @@ -1,391 +0,0 @@
   835.4 -/*
   835.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   835.6 -* All rights reserved.
   835.7 -* This component and the accompanying materials are made available
   835.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   835.9 -* which accompanies this distribution, and is available
  835.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  835.11 -*
  835.12 -* Initial Contributors:
  835.13 -* Nokia Corporation - initial contribution.
  835.14 -*
  835.15 -* Contributors:
  835.16 -*
  835.17 -* Description:
  835.18 -* Name          : SdpAttributeField.h
  835.19 -* Part of       : SDP Codec
  835.20 -* Interface     : SDK API, SDP Codec API
  835.21 -* Version       : 1.0
  835.22 -*
  835.23 -*/
  835.24 -
  835.25 -
  835.26 -
  835.27 -#ifndef CSDPATTRIBUTEFIELD_H
  835.28 -#define CSDPATTRIBUTEFIELD_H
  835.29 -
  835.30 -//  INCLUDES
  835.31 -#include <e32base.h>
  835.32 -#include <stringpool.h>
  835.33 -#include "sdpcodecstringconstants.h"
  835.34 -#include "_sdpdefs.h"
  835.35 -
  835.36 -// FORWARD DECLARATIONS
  835.37 -class RReadStream;
  835.38 -class RWriteStream;
  835.39 -class CSdpFmtAttributeField;
  835.40 -class CSdpAttributeFieldPtrs;
  835.41 -
  835.42 -// CLASS DECLARATION
  835.43 -/**
  835.44 - *  @publishedAll
  835.45 - *  @released
  835.46 - *
  835.47 - *	This class encapsulates the attribute field of Session Description Protocol
  835.48 - *	for media and session level attributes. Media format/payload type level
  835.49 - *  attributes are supported by the CSdpFmtAttributeField class. 
  835.50 - * 
  835.51 - *	The normative reference for correct formatting and values is
  835.52 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  835.53 - *  member documentation. The implementation supports this normative
  835.54 - *  reference, but does not enforce it fully. 
  835.55 - *
  835.56 - *  @lib sdpcodec.lib
  835.57 - */
  835.58 -class CSdpAttributeField : public CBase
  835.59 -	{
  835.60 -    public:     // Constructors and destructor
  835.61 -
  835.62 -        /**
  835.63 -         *	Constructs a new attribute field.
  835.64 -		 *			 
  835.65 -         *	@param aText A string containing a correctly 
  835.66 -         *         formatted field value terminated by a CRLF.
  835.67 -         *	@return a new instance.
  835.68 -         */
  835.69 -		IMPORT_C static CSdpAttributeField* DecodeL( const TDesC8& aText );
  835.70 -
  835.71 -        /**
  835.72 -         *	Constructs a new attribute field and adds the pointer to the 
  835.73 -         *  cleanup stack.
  835.74 -		 *		 
  835.75 -         *	@param aTest A string containing a correctly 
  835.76 -         *         formatted field value terminated by a CRLF.
  835.77 -         *	@return a new instance.
  835.78 -         */
  835.79 -		IMPORT_C static CSdpAttributeField* DecodeLC( const TDesC8& aText );
  835.80 -
  835.81 -        /**
  835.82 -         *	Constructs a new attribute field. 
  835.83 -		 *
  835.84 -         *	@param aAttribute The attribute name. It can be a pre-
  835.85 -         *         defined name in the SDP string pool or defined by the 
  835.86 -         *         client.
  835.87 -         *	@param aValue A valid attribute value or an empty 
  835.88 -         *         descriptor to omit the value part.
  835.89 -         *	@return a new instance.
  835.90 -		 */
  835.91 -		IMPORT_C static CSdpAttributeField* NewL(
  835.92 -            RStringF aAttribute, const TDesC8& aValue );
  835.93 -
  835.94 -        /**
  835.95 -         *	Constructs a new attribute field and adds the pointer to the 
  835.96 -         *  cleanup stack. 
  835.97 -		 *
  835.98 -         *	@param aAttribute The attribute name. It can be a pre-defined 
  835.99 -         *         name in the SDP string pool or defined by the client.
 835.100 -         *	@param aValue A valid attribute value or an empty 
 835.101 -         *         descriptor to omit the value part.
 835.102 -         *	@return a new instance.
 835.103 -		 */
 835.104 -		IMPORT_C static CSdpAttributeField* NewLC(
 835.105 -            RStringF aAttribute, const TDesC8& aValue );
 835.106 -
 835.107 - 		/**
 835.108 -		 *	Deletes the resources held by the instance.
 835.109 -		 */
 835.110 -		IMPORT_C ~CSdpAttributeField();
 835.111 -
 835.112 -    public:     // New functions
 835.113 -	
 835.114 -    	/**
 835.115 -		 *	Outputs the field formatted according to SDP syntax and including
 835.116 -		 *  the terminating CRLF.
 835.117 -		 * 
 835.118 -		 *	@param aStream Stream used for output. On return the 
 835.119 -         *         stream includes correctly formatted attribute field.
 835.120 -		 */
 835.121 -		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 835.122 -
 835.123 -		/**
 835.124 -		 *	Creates a new instance that is equal to the target.
 835.125 -		 *
 835.126 -		 *	@return a new instance.
 835.127 -		 */
 835.128 -		IMPORT_C CSdpAttributeField* CloneL() const;
 835.129 -
 835.130 -		/**	
 835.131 -		 *	Compares this instance to another for equality.
 835.132 -		 *
 835.133 -		 *	@param aObj: The instance to compare to.
 835.134 -		 *	@return ETrue if equal, EFalse if not.
 835.135 -		 */
 835.136 -		IMPORT_C TBool operator == ( const CSdpAttributeField& aObj ) const;
 835.137 -
 835.138 -		/**
 835.139 -		 *	Gets the attribute name.
 835.140 -		 *	
 835.141 -		 *	@return	The attribute name. The name can be pre-defined 
 835.142 -         *          name in the SDP string table or defined by the client.
 835.143 -		 */
 835.144 -		IMPORT_C RStringF Attribute() const;
 835.145 -
 835.146 -		/**
 835.147 -		 *	Gets the attribute.
 835.148 -		 *
 835.149 - 		 *	@return	The value or an empty descriptor if there is no value part.
 835.150 -		 */
 835.151 -		IMPORT_C const TDesC8& Value() const;
 835.152 -
 835.153 -		/**
 835.154 -		 *	Sets the attribute and attribute value.
 835.155 -		 *
 835.156 -         *	@param aAttribute A valid attribute name. It can be a 
 835.157 -         *         pre-defined name in the SDP string pool or 
 835.158 -         *         defined by the client.
 835.159 -         *	@param aValue A valid attribute value or an empty 
 835.160 -         *         descriptor to omit the value part.
 835.161 -		 *  @leave KErrSdpCodecAttributeField if the attribute part is not 
 835.162 -		 *         pre-defined EAttributeFmtp or EAttributeRtpmap.
 835.163 -		 */
 835.164 -		IMPORT_C void SetL( RStringF aAttribute, const TDesC8& aValue );
 835.165 -		
 835.166 -		/**
 835.167 - 		 *	Assigns attribute to the format level attribute.
 835.168 - 		 *  In the final output the attribute will placed after format level
 835.169 -		 *  attribute.
 835.170 - 		 *
 835.171 - 		 *	@param aFmtAttribute A format level 
 835.172 - 		 *         attribute this attribute is assigned to.
 835.173 - 		 */
 835.174 - 		IMPORT_C void AssignTo(const CSdpFmtAttributeField& aFmtAttribute);
 835.175 -		
 835.176 -		/**
 835.177 -		 *	Test if the attribute belongs to the given format level attribute.
 835.178 -		 *  Note, that the check can be true for the media level paremeter if
 835.179 -		 *  it appears after the last format level attribute.
 835.180 -		 *
 835.181 -		 *	@param  aFmtAttribute: A format level 
 835.182 -		 *          attribute this attribute belongs to.
 835.183 -		 *	@return	ETrue if attribute belongs to the format level attribute, 
 835.184 -		 *          EFalse otherwise.
 835.185 -		 */
 835.186 -		IMPORT_C TBool BelongsTo(const CSdpFmtAttributeField& aFmtAttribute) const;
 835.187 -
 835.188 -    public:     // Internal to codec
 835.189 -
 835.190 -        /**
 835.191 -         *  Externalizes the object to stream
 835.192 -         *
 835.193 -         *  @param aStream Stream where the object's state will be stored
 835.194 -         */
 835.195 -		void ExternalizeL( RWriteStream& aStream ) const;
 835.196 -
 835.197 -        /**
 835.198 -         *  Creates object from the stream data
 835.199 -         *
 835.200 -         *  @param aStream Stream where the object's state will be read
 835.201 -         *  @return Initialized object
 835.202 -         */
 835.203 -        static CSdpAttributeField* InternalizeL( RReadStream& aStream );
 835.204 -        
 835.205 -        /**
 835.206 -         *  Informs if the attribute belongs to any format level attribute.
 835.207 -         *
 835.208 -         *  @return ETrue if attribute belongs to any format level 
 835.209 -		 *			attribute, EFalse otherwise.
 835.210 -         */
 835.211 -        TBool IsFmtAttribute();
 835.212 -    
 835.213 -	private:    // Constructors
 835.214 -
 835.215 -        /**
 835.216 -         *  Constructor
 835.217 -         */
 835.218 -		CSdpAttributeField();
 835.219 -
 835.220 -        /**
 835.221 -         *  Second phase constructor
 835.222 -         *
 835.223 -         *  @param aText Text string ending to LF character
 835.224 -         */
 835.225 -        void ConstructL( const TDesC8& aText );
 835.226 -
 835.227 -        /**
 835.228 -         *  Second phase constructor
 835.229 -         *
 835.230 -         *  @param aAttribute Attribute identifier
 835.231 -         *  @param aValue Value of the attribute of KNullDesC8
 835.232 -         */
 835.233 -        void ConstructL( RStringF aAttribute, const TDesC8& aValue );
 835.234 -    
 835.235 -    private:    // Internal
 835.236 -
 835.237 -        /**
 835.238 -         *  Verifies that attribute is valid property attribute and initializes
 835.239 -         *  the member variables of class accordingly
 835.240 -         *
 835.241 -         *  @param aAttribute Attribute in descriptor
 835.242 -         */
 835.243 -        void FormatProperyAttributeL( const TDesC8& aAttribute );
 835.244 -
 835.245 -        /**
 835.246 -         *  Verifies that attribute is valid value attribute and initializes
 835.247 -         *  the member variables of class accordingly
 835.248 -         *
 835.249 -         *  @param aArray Array of the attributes
 835.250 -         */
 835.251 -        void FormatValueAttributeL( const TDesC8& aAttribute,
 835.252 -                                    const TDesC8& aValue );
 835.253 -
 835.254 -        /**
 835.255 -         *  Verifies that the value is valid for the attribute
 835.256 -         *
 835.257 -         *  @param aAttribute The attribute
 835.258 -         *  @param aArray Array containing the values (and attribute)
 835.259 -         */
 835.260 -        void VerifyValueAttributeL( SdpCodecStringConstants::TStrings aString,
 835.261 -                                    const TDesC8& aValue );
 835.262 -                                    
 835.263 -        /**
 835.264 -         *  Forms attribute and value strings out of the token array
 835.265 -         *  and pushes both (aAttribute & aValue) into cleanup stack
 835.266 -         *
 835.267 -         *  @param aArray Token array
 835.268 -         *  @param aAttribute Attribute string (in cleanup stack)
 835.269 -         *  @param aValue Value string (in cleanup stack)
 835.270 -         */
 835.271 -        void CreateAttributeAndValueStringsLC( RArray<TPtrC8>& aArray,
 835.272 -                                               HBufC8*& aAttribute,
 835.273 -                                               HBufC8*& aValue );
 835.274 -
 835.275 -        /**
 835.276 -         *  Checks if the value is among the valid orient attributes
 835.277 -         *
 835.278 -         *  @param aValue Value string
 835.279 -         */
 835.280 -        void CheckValidOrientL( const TDesC8& aValue );
 835.281 -
 835.282 -        /**
 835.283 -         *  Checks if the value is valid language attribute as
 835.284 -         *  specified in RFC 3066
 835.285 -         *
 835.286 -         *  @param aValue Value string
 835.287 -         */
 835.288 -        void CheckValidLangStrL( const TDesC8& aValue );
 835.289 -
 835.290 -        /**
 835.291 -         *  Checks if the value is valid framerate attribute
 835.292 -         *
 835.293 -         *  @param aValue Value string
 835.294 -         */
 835.295 -        void CheckValidFrameRateL( const TDesC8& aValue );
 835.296 -        
 835.297 -        /**
 835.298 -         *  Checks if the value is among valid uri value for control attribute
 835.299 -         *
 835.300 -         *  @param aValue Value string
 835.301 -         */       
 835.302 -        void CheckValidControlL( const TDesC8& aValue );
 835.303 -
 835.304 -        /**
 835.305 -         *  Checks if the value is valid value for group attribute as
 835.306 -         *  specified in RFC 3388
 835.307 -         *
 835.308 -         *  @param aValue Value string
 835.309 -         */       
 835.310 -        void CheckValidGroupL( const TDesC8& aValue );
 835.311 -
 835.312 -        /**
 835.313 -         *  Checks if the value is valid value for des attribute as
 835.314 -         *  specified in RFC 3312
 835.315 -         *
 835.316 -         *  @param aValue Value string
 835.317 -         */       
 835.318 -        void CheckValidDesL( const TDesC8& aValue );
 835.319 -
 835.320 -        /**
 835.321 -         *  Checks if the value is valid value for curr and conf attribute as
 835.322 -         *  specified in RFC 3312
 835.323 -         *
 835.324 -         *  @param aValue Value string
 835.325 -         */       
 835.326 -        void CheckValidCurrAndConfL( const TDesC8& aValue );
 835.327 -
 835.328 -        /**
 835.329 -         *  Checks if value is included in the list of predefined values
 835.330 -         *
 835.331 -         *  @param aItemsCount Predefined values count
 835.332 -         *  @param aValuesList List of predefined values
 835.333 -         *  @param aValue Value string
 835.334 -         */       
 835.335 -        void ValidValueInListL( TInt aItemsCount, 
 835.336 -                                const TText8* const aValuesList[], 
 835.337 -                                const TDesC8& aValue );
 835.338 -
 835.339 -        /**
 835.340 -         *  Checks if the value is valid value for range attribute as
 835.341 -         *  specified in RFC 2326
 835.342 -         *
 835.343 -         *  @param aValue Value string
 835.344 -         */       
 835.345 -        void CheckValidRangeL( const TDesC8& aValue );
 835.346 -
 835.347 -
 835.348 -        /**
 835.349 -         *  Checks if the value is valid rtpmap string
 835.350 -         *
 835.351 -         *  @param aValue Value string
 835.352 -         */   
 835.353 -        void CheckValidRtpmapL( const TDesC8& aValue );
 835.354 -
 835.355 -        /**
 835.356 -         *  Checks if the value is valid fmtp string
 835.357 -         *
 835.358 -         *  @param aValue Value string
 835.359 -         */   
 835.360 -        void CheckValidFmtpL( const TDesC8& aValue );
 835.361 -        
 835.362 -        /**
 835.363 -         *  Set attribute and values. Attribute is not one of predefined ones.
 835.364 -         *
 835.365 -         *  @param aAttribute Attribute string (in cleanup stack)
 835.366 -         *  @param aValue Value string
 835.367 -         */   
 835.368 -        void SetNotPredefinedAttributeL( const TDesC8& aAttribute, 
 835.369 -                                         const TDesC8& aValue );
 835.370 -        
 835.371 -        void CreateAttributeFieldPtrsL();
 835.372 -        
 835.373 -        inline CSdpAttributeFieldPtrs& AttributeFieldPtrs();      
 835.374 -        
 835.375 -        inline const CSdpAttributeFieldPtrs& AttributeFieldPtrs() const;
 835.376 -        
 835.377 -        __DECLARE_TEST;
 835.378 -
 835.379 -    private:    // Data
 835.380 -
 835.381 -        // String pool
 835.382 -        RStringPool iPool;
 835.383 -
 835.384 -        // Attribute name
 835.385 -        RStringF iAttribute;
 835.386 -
 835.387 -        // Flag indicating if the attribute is a property attribute
 835.388 -        TBool iPropertyAttribute;
 835.389 -
 835.390 -        // Value field
 835.391 -        HBufC8* iValue;
 835.392 -	};
 835.393 -
 835.394 -#endif // CSDPATTRIBUTEFIELD_H
   836.1 --- a/epoc32/include/sdpbandwidthfield.h	Tue Mar 16 16:12:26 2010 +0000
   836.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   836.3 @@ -1,190 +0,0 @@
   836.4 -/*
   836.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   836.6 -* All rights reserved.
   836.7 -* This component and the accompanying materials are made available
   836.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   836.9 -* which accompanies this distribution, and is available
  836.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  836.11 -*
  836.12 -* Initial Contributors:
  836.13 -* Nokia Corporation - initial contribution.
  836.14 -*
  836.15 -* Contributors:
  836.16 -*
  836.17 -* Description:
  836.18 -* Name          : SdpBandwidthField.h
  836.19 -* Part of       : SDP Codec
  836.20 -* Interface     : SDK API, SDP Codec API
  836.21 -* Version       : 1.0
  836.22 -*
  836.23 -*/
  836.24 -
  836.25 -
  836.26 -
  836.27 -#ifndef CSDPBANDWIDTHFIELD_H
  836.28 -#define CSDPBANDWIDTHFIELD_H
  836.29 -
  836.30 -//  INCLUDES
  836.31 -#include <e32base.h>
  836.32 -#include <stringpool.h>
  836.33 -#include "_sdpdefs.h"
  836.34 -
  836.35 -// FORWARD DECLARATIONS
  836.36 -class RReadStream;
  836.37 -class RWriteStream;
  836.38 -
  836.39 -// CLASS DECLARATION
  836.40 -/**
  836.41 - *  @publishedAll
  836.42 - *  @released
  836.43 - *
  836.44 - *	This class encapsulates the bandwidth field of 
  836.45 - *  the Session Description Protocol.
  836.46 - * 
  836.47 - *	The normative reference for correct formatting and values is
  836.48 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  836.49 - *  member documentation. The implementation supports this normative
  836.50 - *  reference, but does not enforce it fully. 
  836.51 - *
  836.52 - *  @lib sdpcodec.lib
  836.53 - */
  836.54 -class CSdpBandwidthField : public CBase
  836.55 -	{
  836.56 -	public:// Constructors and destructor
  836.57 -       /**
  836.58 -         *	Constructs a new bandwidth field.
  836.59 -		 *	
  836.60 -         *	@param aText A string containing a correctly 
  836.61 -         *         formatted field value terminated by a CRLF.
  836.62 -         *	@return a new instance.
  836.63 -         */
  836.64 -		IMPORT_C static CSdpBandwidthField* DecodeL(const TDesC8& aText);
  836.65 -
  836.66 -         /**
  836.67 -         *	Constructs a new bandwidth field and adds the pointer to the 
  836.68 -         *  cleanup stack.
  836.69 -		 *	
  836.70 -         *	@param aText A string containing a correctly 
  836.71 -         *         formatted field value terminated by a CRLF.
  836.72 -         *	@return a new instance.
  836.73 -         */
  836.74 -		IMPORT_C static CSdpBandwidthField* DecodeLC(const TDesC8& aText);
  836.75 -
  836.76 -        /**
  836.77 -         *	Constructs a new bandwidth field.
  836.78 -		 *
  836.79 -         *	@param aModifier Bandwidth modifier.
  836.80 -		 *  @param aValue Bandwidth value.
  836.81 -         *	@return a new instance.
  836.82 -		 */
  836.83 -		IMPORT_C static CSdpBandwidthField* NewL(RStringF aModifier,
  836.84 -												 TUint32 aValue);
  836.85 -
  836.86 -        /**
  836.87 -         *	Constructs a new bandwidth field and adds the pointer to the 
  836.88 -         *  cleanup stack.
  836.89 -		 *
  836.90 -         *	@param aModifier Bandwidth modifier.
  836.91 -		 *  @param aValue Bandwidth value.
  836.92 -         *	@return a new instance.
  836.93 -		 */
  836.94 -		IMPORT_C static CSdpBandwidthField* NewLC(RStringF aModifier,
  836.95 -												  TUint32 aValue);
  836.96 -
  836.97 - 
  836.98 -        /**
  836.99 -		 *	Deletes the resources held by the instance.
 836.100 -		 */
 836.101 -		IMPORT_C ~CSdpBandwidthField();
 836.102 -
 836.103 -    public: // New functions
 836.104 -		/**
 836.105 -		 *	Outputs the field formatted according to SDP syntax and including
 836.106 -		 *  the terminating CRLF.
 836.107 -		 * 
 836.108 -		 *	@param aStream Stream used for output. On return 
 836.109 -         *         the stream includes correctly formatted bandwidth field.
 836.110 -		 */
 836.111 -		IMPORT_C void EncodeL(RWriteStream& aStream) const;
 836.112 -
 836.113 -		/**
 836.114 -		 *	Creates a new instance that is equal to the target.
 836.115 -		 *
 836.116 -		 *	@return a new instance.
 836.117 -		 */
 836.118 -		IMPORT_C CSdpBandwidthField * CloneL() const;
 836.119 -
 836.120 -		/**	
 836.121 -		 *	Compares this instance to another for equality.
 836.122 -		 *
 836.123 -		 *	@param aObj The instance to compare to.
 836.124 -		 *	@return ETrue if equal, EFalse if not.
 836.125 -		 */
 836.126 -		IMPORT_C TBool operator == (const CSdpBandwidthField& aObj) const;
 836.127 -
 836.128 -		/**
 836.129 -		 *	Gets the bandwidth modifier.
 836.130 -		 *
 836.131 -		 *	@return The modifier that can be pre-defined in the 
 836.132 -		 *          SDP string table or defined by the user.
 836.133 -		 */
 836.134 -		IMPORT_C RStringF Modifier() const;
 836.135 -
 836.136 -		/**
 836.137 -		 *	Sets the bandwidth modifier.
 836.138 -		 *
 836.139 -         *	@param aModifier A valid bandwidth modifier name.
 836.140 -		 */
 836.141 -		IMPORT_C void SetModifier(RStringF aModifier);
 836.142 -
 836.143 -		/**
 836.144 -		 *	Gets the bandwidth value.
 836.145 -		 *
 836.146 -		 *	@return The value.
 836.147 -		 */
 836.148 -		IMPORT_C TUint32 Value() const;
 836.149 -
 836.150 -		/**
 836.151 -		 *	Sets the bandwidth value.
 836.152 -		 *
 836.153 -		 *	@param aValue The Value.
 836.154 -		 */
 836.155 -		IMPORT_C void SetValue(TUint32 aValue);
 836.156 -
 836.157 -    public:
 836.158 -		/**
 836.159 -		 *	Externalize the instance in a memory optimized format.
 836.160 -		 *
 836.161 -		 *	@param aStream The stream used for externalization.
 836.162 -		 */
 836.163 -		void ExternalizeL(RWriteStream& aStream) const;
 836.164 -
 836.165 -		/**
 836.166 -		 *	Create a new instance from value created with ExternalizeL().
 836.167 -		 *
 836.168 -		 *	@param aStream The stream used for internalization.
 836.169 -		 *	@return	The new instance.
 836.170 -		 */
 836.171 -        static CSdpBandwidthField* InternalizeL(RReadStream& aStream);
 836.172 -
 836.173 -    private:
 836.174 -        CSdpBandwidthField();
 836.175 -		void ConstructL(const TDesC8& aText);
 836.176 -		void ConstructL(RStringF aModifier, TUint32 aValue);
 836.177 -		void ConstructL(const TDesC8& aModifier, TUint32 aValue);
 836.178 -
 836.179 -        /**
 836.180 -         *  Copies given modifier to iModifier. If aModifier is none of 
 836.181 -         *  predefined ones, new modifier is added to stringPool.
 836.182 -         *
 836.183 -         *  @param aModifier Given modifier
 836.184 -         */
 836.185 -        void CopyModifierL(const TDesC8& aModifier);
 836.186 -
 836.187 -    private: // Data
 836.188 -		RStringF iModifier;
 836.189 -        TUint32 iValue;
 836.190 -        RStringPool iStringPool;
 836.191 -	};
 836.192 -
 836.193 -#endif // CSDPBANDWIDTHFIELD_H
   837.1 --- a/epoc32/include/sdpcodecconstants.h	Tue Mar 16 16:12:26 2010 +0000
   837.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   837.3 @@ -1,59 +0,0 @@
   837.4 -/*
   837.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   837.6 -* All rights reserved.
   837.7 -* This component and the accompanying materials are made available
   837.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   837.9 -* which accompanies this distribution, and is available
  837.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  837.11 -*
  837.12 -* Initial Contributors:
  837.13 -* Nokia Corporation - initial contribution.
  837.14 -*
  837.15 -* Contributors:
  837.16 -*
  837.17 -* Description:
  837.18 -* Name          : SdpCodecConstants.h
  837.19 -* Part of       : SDPCodec
  837.20 -* Constants defination file 
  837.21 -* Version       : 1.0 
  837.22 -*
  837.23 -*/
  837.24 -
  837.25 -
  837.26 -
  837.27 -
  837.28 -#ifndef __SDPCODECCONSTANTS_H__
  837.29 -#define __SDPCODECCONSTANTS_H__
  837.30 -
  837.31 -/**
  837.32 -* @file
  837.33 -* @publishedAll
  837.34 -* @released
  837.35 -*/
  837.36 -
  837.37 -
  837.38 -// Delimiter constants
  837.39 -const TText8 KDotChar = '.';
  837.40 -const TText8 KColonChar = ':';
  837.41 -const TText8 KSPChar = ' ';  
  837.42 -const TText8 KEqualChar = '=';
  837.43 -const TText8 KSlashChar = '/';
  837.44 -const TText8 KHyphenChar = '-';
  837.45 -const TText8 KLFChar = '\n';
  837.46 -const TText8 KCRChar = '\r';
  837.47 -const TText8 KEofChar = '\0';
  837.48 -
  837.49 -_LIT8(KDotStr, ".");
  837.50 -_LIT8(KColonStr, ":");
  837.51 -_LIT8(KSPStr, " ");
  837.52 -_LIT8(KEqualStr, "=");
  837.53 -_LIT8(KSlashStr, "/");
  837.54 -_LIT8(KHyphenStr, "-");
  837.55 -_LIT8(KCRLFStr, "\r\n");
  837.56 -_LIT8(KLFStr, "\n");
  837.57 -_LIT8(KCRStr, "\r");
  837.58 -_LIT8(KEofStr, "\0");
  837.59 -_LIT8(KValidFQDNChars, 
  837.60 -      "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-");
  837.61 -
  837.62 -#endif
   838.1 --- a/epoc32/include/sdpcodecerr.h	Tue Mar 16 16:12:26 2010 +0000
   838.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   838.3 @@ -1,65 +0,0 @@
   838.4 -/*
   838.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   838.6 -* All rights reserved.
   838.7 -* This component and the accompanying materials are made available
   838.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   838.9 -* which accompanies this distribution, and is available
  838.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  838.11 -*
  838.12 -* Initial Contributors:
  838.13 -* Nokia Corporation - initial contribution.
  838.14 -*
  838.15 -* Contributors:
  838.16 -*
  838.17 -* Description:
  838.18 -* Name          : SdpCodecErr.h
  838.19 -* Part of       : SDP Codec
  838.20 -* Interface     : SDK API, SDP Codec API
  838.21 -* Version       : 1.0
  838.22 -*
  838.23 -*/
  838.24 -
  838.25 -
  838.26 -
  838.27 -#ifndef SDPCODECERR_H
  838.28 -#define SDPCODECERR_H
  838.29 -
  838.30 -/**
  838.31 -* @file
  838.32 -* @publishedAll
  838.33 -* @released
  838.34 -*/
  838.35 -
  838.36 -/**
  838.37 - * Base value for the SdpCode error code range
  838.38 - */
  838.39 -const TInt KSdpCodecErrorBase = -17875;
  838.40 -/**
  838.41 - * Codec encoding errors for SDP fields
  838.42 - */
  838.43 -const TInt KErrSdpCodecVersionField			= KSdpCodecErrorBase;
  838.44 -const TInt KErrSdpCodecOriginField			= KSdpCodecErrorBase - 1; 
  838.45 -const TInt KErrSdpCodecSessionField			= KSdpCodecErrorBase - 2; 
  838.46 -const TInt KErrSdpCodecInfoField			= KSdpCodecErrorBase - 3; 
  838.47 -const TInt KErrSdpCodecUriField				= KSdpCodecErrorBase - 4; 
  838.48 -const TInt KErrSdpCodecEmailField			= KSdpCodecErrorBase - 5; 
  838.49 -const TInt KErrSdpCodecPhoneField			= KSdpCodecErrorBase - 6; 
  838.50 -const TInt KErrSdpCodecConnectionField		= KSdpCodecErrorBase - 7; 
  838.51 -const TInt KErrSdpCodecBandwidthField		= KSdpCodecErrorBase - 8; 
  838.52 -const TInt KErrSdpCodecTimeField			= KSdpCodecErrorBase - 9; 
  838.53 -const TInt KErrSdpCodecRepeatField			= KSdpCodecErrorBase - 10; 
  838.54 -const TInt KErrSdpCodecZoneField			= KSdpCodecErrorBase - 11; 
  838.55 -const TInt KErrSdpCodecKeyField				= KSdpCodecErrorBase - 12; 
  838.56 -const TInt KErrSdpCodecAttributeField		= KSdpCodecErrorBase - 13; 
  838.57 -const TInt KErrSdpCodecMediaField			= KSdpCodecErrorBase - 14; 
  838.58 -const TInt KErrSdpCodecMediaInfoField		= KSdpCodecErrorBase - 15; 
  838.59 -const TInt KErrSdpCodecMediaConnectionField	= KSdpCodecErrorBase - 16; 
  838.60 -const TInt KErrSdpCodecMediaBandwidthField	= KSdpCodecErrorBase - 17; 
  838.61 -const TInt KErrSdpCodecMediaKeyField	    = KSdpCodecErrorBase - 18; 
  838.62 -const TInt KErrSdpCodecMediaAttributeField	= KSdpCodecErrorBase - 19; 
  838.63 -const TInt KErrSdpCodecTypedTime            = KSdpCodecErrorBase - 20;
  838.64 -
  838.65 -const TInt KErrSdpCodecStringPool           = KSdpCodecErrorBase - 21;
  838.66 -const TInt KErrSdpCodecDecode				= KSdpCodecErrorBase - 22;
  838.67 -
  838.68 -#endif //SDPCODECERR_H
   839.1 --- a/epoc32/include/sdpcodecstringpool.h	Tue Mar 16 16:12:26 2010 +0000
   839.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   839.3 @@ -1,88 +0,0 @@
   839.4 -/*
   839.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   839.6 -* All rights reserved.
   839.7 -* This component and the accompanying materials are made available
   839.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   839.9 -* which accompanies this distribution, and is available
  839.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  839.11 -*
  839.12 -* Initial Contributors:
  839.13 -* Nokia Corporation - initial contribution.
  839.14 -*
  839.15 -* Contributors:
  839.16 -*
  839.17 -* Description:
  839.18 -* Name          : SdpCodecStringPool.h
  839.19 -* Part of       : SDP Codec
  839.20 -* Interface     : SDK API, SDP Codec API
  839.21 -* Version       : 1.0
  839.22 -*
  839.23 -*/
  839.24 -
  839.25 -
  839.26 -
  839.27 -#ifndef SDPCODECSTRINGPOOL_H
  839.28 -#define SDPCODECSTRINGPOOL_H
  839.29 -
  839.30 -//  INCLUDES
  839.31 -#include <e32base.h>
  839.32 -#include "_sdpdefs.h"
  839.33 -#include <stringpool.h>
  839.34 -
  839.35 -class CSdpCodecStringPool;
  839.36 -
  839.37 -// CLASS DECLARATION
  839.38 -/**
  839.39 -* @publishedAll
  839.40 -* @released
  839.41 -*
  839.42 -* This class defines string pool for SDP Codec.
  839.43 -* The client of SDP Codec must call OpenL() before 
  839.44 -* invoking any function of SDP Codec classes.
  839.45 -* The client must close the string pool when finished using
  839.46 -* SDP Codec classes.
  839.47 -*
  839.48 -* Note: the client must not close the string pool while
  839.49 -*       using SDP Codec classes.
  839.50 -* 
  839.51 -* @lib sdpcodec.lib
  839.52 -*/
  839.53 -class SdpCodecStringPool
  839.54 -	{
  839.55 -public: // Constructors and destructor
  839.56 - 		
  839.57 -	/**
  839.58 -	* Opens SDP Codec string pool.
  839.59 -	*
  839.60 -    * @leave KErrAlreadyExists if pool already exists in TLS.
  839.61 -	*/
  839.62 -	IMPORT_C static void OpenL();
  839.63 -
  839.64 -	/**
  839.65 -	* Closes SDP Codec string pool.
  839.66 -	*
  839.67 -	*/
  839.68 -	IMPORT_C static void Close(); 
  839.69 -
  839.70 -public: 
  839.71 -	
  839.72 -	/**
  839.73 -	* Gets the string pool used by SDP Codec.
  839.74 -	*
  839.75 -	* @return RStringPool: A handle to a string pool
  839.76 -	* @leave KErrSdpCodecStringPool if the pool is not opened.
  839.77 -	*
  839.78 -	*/
  839.79 -	IMPORT_C static RStringPool StringPoolL();
  839.80 -
  839.81 -	/**
  839.82 -	* Gets the string table used by SDP Codec.
  839.83 -	*
  839.84 -	* @return TStringTable&: The string pool table
  839.85 -	* @leave KErrSdpCodecStringPool if the pool is not opened.
  839.86 -	*
  839.87 -	*/
  839.88 -	IMPORT_C static const TStringTable& StringTableL();
  839.89 -	};
  839.90 -
  839.91 -#endif
   840.1 --- a/epoc32/include/sdpconnectionfield.h	Tue Mar 16 16:12:26 2010 +0000
   840.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   840.3 @@ -1,443 +0,0 @@
   840.4 -/*
   840.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   840.6 -* All rights reserved.
   840.7 -* This component and the accompanying materials are made available
   840.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   840.9 -* which accompanies this distribution, and is available
  840.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  840.11 -*
  840.12 -* Initial Contributors:
  840.13 -* Nokia Corporation - initial contribution.
  840.14 -*
  840.15 -* Contributors:
  840.16 -*
  840.17 -* Description:
  840.18 -* Name          : SdpConnectionField.h
  840.19 -* Part of       : SDP Codec
  840.20 -* Interface     : SDK API, SDP Codec API
  840.21 -* Version       : 1.0
  840.22 -*
  840.23 -*/
  840.24 -
  840.25 -
  840.26 -
  840.27 -#ifndef CSDPCONNECTIONFIELD_H
  840.28 -#define CSDPCONNECTIONFIELD_H
  840.29 -
  840.30 -//  INCLUDES
  840.31 -#include <e32base.h>
  840.32 -#include <in_sock.h>
  840.33 -#include <stringpool.h>
  840.34 -#include "_sdpdefs.h"
  840.35 -
  840.36 -// CONSTANTS
  840.37 -const TUint KDefaultNumOfAddress = 1;
  840.38 -
  840.39 -// FORWARD DECLARATIONS
  840.40 -class RReadStream;
  840.41 -class RWriteStream;
  840.42 -
  840.43 -// CLASS DECLARATION
  840.44 -/**
  840.45 - *  @publishedAll
  840.46 - *  @released
  840.47 - *
  840.48 - *	This class encapsulates the connection information field of 
  840.49 - *  the Session Description Protocol.
  840.50 - *
  840.51 - *	The normative reference for correct formatting and values is
  840.52 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  840.53 - *  member documentation. The implementation supports this normative
  840.54 - *  reference, but does not enforce it fully. 
  840.55 - *
  840.56 - *  @lib sdpcodec.lib
  840.57 - */
  840.58 -class CSdpConnectionField : public CBase
  840.59 -	{
  840.60 -    public: // Constructors and destructor
  840.61 -
  840.62 -        /**
  840.63 -         *	Constructs a new connection field.
  840.64 -		 * 
  840.65 -         *	@param aText A string containing a correctly 
  840.66 -         *         formatted field value terminated by a CRLF.
  840.67 -         *	@return a new instance.
  840.68 -         */
  840.69 -		IMPORT_C static CSdpConnectionField* DecodeL( const TDesC8& aText );
  840.70 -
  840.71 -        /**
  840.72 -         *	Constructs a new connection field and adds the pointer to the 
  840.73 -         *  cleanup stack.
  840.74 -		 *	
  840.75 -         *	@param aText A string containing a correctly 
  840.76 -         *         formatted field value terminated by a CRLF.
  840.77 -         *	@return a new instance.
  840.78 -         */
  840.79 -		IMPORT_C static CSdpConnectionField* DecodeLC( const TDesC8& aText );
  840.80 -
  840.81 -        /**
  840.82 -         *	Constructs a new connection field.
  840.83 -		 *	Also sets the network type to "IN" and address type to "IP4" or
  840.84 -		 *  "IP6" depending on the address family of aAddress.
  840.85 -		 *	
  840.86 -		 *	@param aAddress IP address from either KAfInet 
  840.87 -         *         or KAfInet6 family
  840.88 -         *  @param aTTL Time-To-Live for IP4 multicasts, set it as
  840.89 -         *         KErrNotFound if IPv6 multicast or IPv4 unicast
  840.90 -         *  @param aNumOfAddress Number of addresses in multicast,
  840.91 -         *         if unicast, must be 1
  840.92 -         *	@return a new instance.
  840.93 -         */
  840.94 -		IMPORT_C static CSdpConnectionField* NewL(            
  840.95 -            const TInetAddr& aAddress,
  840.96 -            TInt aTTL = KErrNotFound, 
  840.97 -            TUint aNumOfAddress = KDefaultNumOfAddress );
  840.98 -
  840.99 -        /**
 840.100 -         *	Constructs a new connection field.
 840.101 -		 *	
 840.102 -         *	@param aNetType A valid network type name from the pre-
 840.103 -         *              defined SDP string table or defined by the user.
 840.104 -		 *  @paramaAddressType A valid address type name from the 
 840.105 -         *              pre-defined SDP string table or defined by the user.
 840.106 -		 *	@param  const TDesC8& aAddress: A valid address of the address type.
 840.107 -         *              Can contain TTL & number of addresses parameter as well.
 840.108 -         *	@return a new instance.
 840.109 -         */
 840.110 -		IMPORT_C static CSdpConnectionField* NewL(
 840.111 -			RStringF aNetType, 
 840.112 -			RStringF aAddressType, 
 840.113 -			const TDesC8& aAddress );
 840.114 -
 840.115 -		/**
 840.116 -         *	Constructs a new connection field and adds the pointer to the 
 840.117 -         *  cleanup stack. Also sets the network type to "IN" and address type
 840.118 -		 *	to "IP4" or "IP6" depending on the address family of aAddress.
 840.119 -		 *
 840.120 -		 *	@param aAddress IP address from either KAfInet 
 840.121 -         *              or KAfInet6 family
 840.122 -         *  @param aTTL Time-To-Live for IP4 multicasts, set it as
 840.123 -         *              KErrNotFound if IPv6 multicast or IPv4 unicast
 840.124 -         *  @param aNumOfAddress Number of addresses in multicast,
 840.125 -         *              if unicast, must be 1
 840.126 -         *	@return a new instance.
 840.127 -         */
 840.128 -		IMPORT_C static CSdpConnectionField* NewLC(       
 840.129 -            const TInetAddr& aAddress, 
 840.130 -            TInt aTTL = KErrNotFound,
 840.131 -            TUint aNumOfAddress = KDefaultNumOfAddress );
 840.132 -
 840.133 -        /**
 840.134 -         *	Construct a new connection field  and adds the pointer to the
 840.135 -         *  cleanup stack.
 840.136 -		 *	
 840.137 -         *	@param aNetType A valid network type name from the pre-
 840.138 -         *         defined SDP string table or defined by the user
 840.139 -		 *  @paramaAddressType A valid address type name from the 
 840.140 -         *              pre-defined SDP string table or defined by the user
 840.141 -		 *	@param  const TDesC8& aAddress: A valid address of the address type.
 840.142 -         *              Can contain TTL & number of addresses parameter as well.
 840.143 -         *	@return a new instance.
 840.144 -         */
 840.145 -		IMPORT_C static CSdpConnectionField* NewLC(
 840.146 -            RStringF aNetType, RStringF aAddressType, const TDesC8& aAddress );
 840.147 -
 840.148 -		/**
 840.149 -		 *	Deletes the resources held by the instance.
 840.150 -		 */
 840.151 -		IMPORT_C ~CSdpConnectionField();
 840.152 -
 840.153 -    public: // New functions
 840.154 -
 840.155 -		/**
 840.156 -		 *	Outputs the field formatted according to SDP syntax and including
 840.157 -		 *  the terminating CRLF.
 840.158 -		 * 
 840.159 -		 *	@param aStream: Stream used for output. On return the
 840.160 -         *         stream includes correctly formatted connection field.
 840.161 -		 */
 840.162 -		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 840.163 -
 840.164 -		/**
 840.165 -		 *	Creates a new instance that is equal to the target.
 840.166 -		 *
 840.167 -		 *	@return a new instance.
 840.168 -		 */
 840.169 -		IMPORT_C CSdpConnectionField* CloneL() const;
 840.170 -
 840.171 -		/**	
 840.172 -		 *	Compares this instance to another for equality.
 840.173 -		 *
 840.174 -		 *	@param const CSdpConnectionField& aObj: The instance to compare to.
 840.175 -		 *	@return ETrue if equal, EFalse if not.
 840.176 -		 */
 840.177 -		IMPORT_C TBool operator== ( const CSdpConnectionField& aObj ) const;
 840.178 -
 840.179 -		/**
 840.180 -		 *	Gets the network type that is from the pre-defined SDP string table
 840.181 -         *  or given by the user.
 840.182 -		 *
 840.183 -		 *	@return The network type.
 840.184 -		 */
 840.185 -		IMPORT_C RStringF NetType() const;
 840.186 -
 840.187 -		/**
 840.188 -		 *	Gets the address type that is from the pre-defined SDP string table 
 840.189 -         *  or given by the user.
 840.190 -		 *
 840.191 -		 *	@return The address type.
 840.192 -		 */
 840.193 -		IMPORT_C RStringF AddressType() const;
 840.194 -
 840.195 -		/**
 840.196 -		 *	Gets the address.
 840.197 -		 *
 840.198 -		 *	@return Address as an IP address or null if it is
 840.199 -         *          not an IP address. This may be e.g. when the address
 840.200 -		 *          has been specified as a FQDN. In this case, the address
 840.201 -         *          can be accessed using the other getters.
 840.202 -		 */
 840.203 -		IMPORT_C const TInetAddr* InetAddress() const;
 840.204 -
 840.205 -		/**
 840.206 -		 *	Gets the address.
 840.207 -		 *
 840.208 -		 *  @return Address as a string.
 840.209 -		 */
 840.210 -		IMPORT_C const TDesC8& Address() const;
 840.211 -
 840.212 -		/**
 840.213 -		 *	Sets the address, network and address type. Also sets the network 
 840.214 -		 *	type to "IN" and address type to "IP4" or "IP6" depending on the 
 840.215 -		 *  address family of aAddress.
 840.216 -		 *
 840.217 -		 *	@param aValue The new address.
 840.218 -         *  @param aTTL Time-To-Live for IP4 multicasts, set it as
 840.219 -         *         KErrNotFound if IPv6 multicast or IPv4 unicast
 840.220 -         *  @param aNumOfAddress Number of addresses in multicast,
 840.221 -         *         if unicast, must be 1.
 840.222 -         *  @leave KErrSdpCodecConnectionField ifaddress to be set is wrongly 
 840.223 -         *         formatted.
 840.224 -         */
 840.225 -		IMPORT_C void SetInetAddressL( const TInetAddr& aValue, 
 840.226 -                                   TInt aTTL = KErrNotFound,
 840.227 -                                   TUint aNumOfAddress = KDefaultNumOfAddress);
 840.228 -
 840.229 -		/**
 840.230 -		 *	Sets the address, network and address type.
 840.231 -		 *
 840.232 -         *	@param aNetType A valid network type name from the pre-
 840.233 -         *         defined SDP string table or defined by the user
 840.234 -		 *  @param aAddressType A valid address type name from the 
 840.235 -         *         pre-defined SDP string table or defined by the user
 840.236 -		 *	@param aAddress A valid address of the address type.
 840.237 -		 */
 840.238 -		IMPORT_C void SetAddressL( RStringF aNetType, 
 840.239 -								   RStringF aAddressType, 
 840.240 -								   const TDesC8& aAddress );
 840.241 -
 840.242 -        /**
 840.243 -         *  Gets TTL attribute.
 840.244 -         *
 840.245 -         *  @return TTL or KErrNotFound, if one is not available for the address
 840.246 -         */
 840.247 -        IMPORT_C TInt TTLValue() const;
 840.248 -
 840.249 -        /**
 840.250 -         *  Sets TTL attribute (only valid for IP4 multicasts).
 840.251 -         *  Leaves if trying to set TTL to address that doesn't support it.
 840.252 -         *
 840.253 -         *  @param aTTL Time-To-Live for IP4 multicasts
 840.254 -         *	@leave KErrSdpCodecConnectionField if aTTL is invalid.
 840.255 -         */
 840.256 -        IMPORT_C void SetTTLL( TInt aTTL );
 840.257 -
 840.258 -        /**
 840.259 -         *  Gets the number of addresses (can be more than 1 for multicasts).
 840.260 -         *  Multicast addresses are contiguously allocated above the base 
 840.261 -         *  address.
 840.262 -         *
 840.263 -         *  @return Number of addresses
 840.264 -         */
 840.265 -        IMPORT_C TInt NumOfAddress() const;
 840.266 -         
 840.267 -        /**
 840.268 -         *  Sets the number of addreses allocated for multicast. 
 840.269 -         *  
 840.270 -         *	@param aNumOfAddress Number of addresses in multicast
 840.271 -         *  @leave KErrSdpCodecConnectionField if the address is unicast.
 840.272 -         */
 840.273 -        IMPORT_C void SetNumOfAddressL( TUint aNumOfAddress );
 840.274 -
 840.275 -    public:     // Internal to codec
 840.276 -
 840.277 -        /**
 840.278 -         *  Externalizes the object to stream
 840.279 -         *
 840.280 -         *  @param aStream Stream where the object's state will be stored
 840.281 -         */
 840.282 -		void ExternalizeL( RWriteStream& aStream ) const;
 840.283 -
 840.284 -        /**
 840.285 -         *  Creates object from the stream data
 840.286 -         *
 840.287 -         *  @param aStream Stream where the object's state will be read
 840.288 -         *  @return Initialized object
 840.289 -         */
 840.290 -		static CSdpConnectionField* InternalizeL( RReadStream& aStream );
 840.291 -
 840.292 -    private:    // Internal
 840.293 -
 840.294 -        /**
 840.295 -         *  Constructor
 840.296 -         */
 840.297 -        CSdpConnectionField();
 840.298 -
 840.299 -        /**
 840.300 -         *  2nd phase constructor
 840.301 -         *
 840.302 -         *	@param aText A string containing a correctly formatted field value
 840.303 -		 *         terminated by a CRLF.         
 840.304 -         */         
 840.305 -        void ConstructL( const TDesC8& aText );
 840.306 -        
 840.307 -        /**
 840.308 -         *  2nd phase constructor
 840.309 -         *
 840.310 -         *	@param aAddress IP address from either KAfInet or KAfInet6 family
 840.311 -         *  @param aTTL Time-To-Live for IP4 multicasts
 840.312 -         *  @param aNumOfAddress Nubmer of addresses in multicast
 840.313 -         */
 840.314 -        void ConstructL( const TInetAddr& aAddress,
 840.315 -                         TInt aTTL, TUint aNumOfAddress );
 840.316 -
 840.317 -        /**
 840.318 -         *  2nd phase constructor
 840.319 -         *
 840.320 -         *	@param aNetType A valid network type name from the pre-defined
 840.321 -		 *         SDP string table or defined by the user
 840.322 -		 *  @param aAddressType A valid address type name from the pre-defined
 840.323 -		 *         SDP string table or defined by the user
 840.324 -		 *	@param aAddress A valid address of the address type
 840.325 -         */
 840.326 -        void ConstructL( RStringF aNetType, RStringF aAddressType, 
 840.327 -	                     const TDesC8& aAddress );
 840.328 -
 840.329 -        /**
 840.330 -         *  Checks if the address is valid against given arguments
 840.331 -         *
 840.332 -         *  @param aAddressTypeIP4 The given type of address (EFalse = IP6)
 840.333 -         *  @param aAddress Address with possibly TTL & number of addresses
 840.334 -         *  @return error code (KErrNone if valid)
 840.335 -         */
 840.336 -        TInt IsValidAddress( TBool aAddressTypeIP4,
 840.337 -                             const TDesC8& aAddress ) const;
 840.338 -
 840.339 -        /**
 840.340 -         *  Checks if the address is valid against given arguments
 840.341 -         *         
 840.342 -         *  @param aAddress Address in TInetAddr format
 840.343 -         *  @param aTTL TTL attribute
 840.344 -         *  @param aNumOfAddress Number off addresses
 840.345 -         *  @return error code (KErrNone if valid)
 840.346 -         */
 840.347 -        TInt IsValidAddress( const TInetAddr& aAddress, 
 840.348 -                             TInt aTTL, TUint aNumOfAddress ) const;
 840.349 -        
 840.350 -        /**
 840.351 -         *  Parses address field
 840.352 -         *
 840.353 -         *  @param aAddressTypeIP4 The given type of address (EFalse = IP6)
 840.354 -         *  @param aAddress Address with possibly TTL & number of addresses
 840.355 -         *  @param aTTL TTL value is stored here (or KErrNotFound)
 840.356 -         *  @param aNumberOfAddresses Range of addreses
 840.357 -         *  @return The address
 840.358 -         */
 840.359 -        HBufC8* ParseAddressFieldL( TBool aAddressTypeIP4,
 840.360 -                                    const TDesC8& aAddress,
 840.361 -                                    TInt& aTTL,
 840.362 -                                    TUint& aNumberOfAddresses ) const;
 840.363 -
 840.364 -        /**
 840.365 -         *  Parses IP4 address
 840.366 -         *
 840.367 -         *  @param aPos Position of the (first) separation mark         
 840.368 -         *  @param aTTL TTL value is stored here (or KErrNotFound)
 840.369 -         *  @param aAddr Addres in TInetAddr format
 840.370 -         *  @param aAddress The whole address field
 840.371 -         *  @param aNumberOfAddresses Range of addreses
 840.372 -         *  @return The address
 840.373 -         */
 840.374 -        HBufC8* ParseIP4AddressL( TInt aPos, 
 840.375 -                                  TInetAddr& aAddr,
 840.376 -                                  const TDesC8& aAddress,
 840.377 -                                  TInt& aTTL,
 840.378 -                                  TUint& aNumberOfAddresses ) const;
 840.379 -
 840.380 -        /**
 840.381 -         *  Parses IP6 address
 840.382 -         *
 840.383 -         *  @param aPos Position of the (first) separation mark         
 840.384 -         *  @param aTTL TTL value is stored here (or KErrNotFound)
 840.385 -         *  @param aAddr Addres in TInetAddr format
 840.386 -         *  @param aAddress The whole address field
 840.387 -         *  @param aNumberOfAddresses Range of addreses
 840.388 -         *  @return The address
 840.389 -         */
 840.390 -        HBufC8* ParseIP6AddressL( TInt aPos, 
 840.391 -                                  TInetAddr& aAddr,
 840.392 -                                  const TDesC8& aAddress,
 840.393 -                                  TInt& aTTL,
 840.394 -                                  TUint& aNumberOfAddresses ) const;
 840.395 -
 840.396 -        /**
 840.397 -         *  Copies given network type to iNetType and verifies aNetType to
 840.398 -         *  be valid
 840.399 -         *
 840.400 -         *  @param aNetType Given network type                
 840.401 -         */
 840.402 -        void CopyNetTypeL( const TDesC8& aNetType );
 840.403 -
 840.404 -        /**
 840.405 -         *  Copies given address type to iAddressType and verifies aAddrType
 840.406 -         *  to be valid
 840.407 -         * 
 840.408 -         *  @param aAddrType Given address type     
 840.409 -         */
 840.410 -        void CopyAddressTypeL( const TDesC8& aAddrType );
 840.411 -
 840.412 -        /**
 840.413 -         *  Copies address to iAddress, and initalizes TTL & number of addresses,
 840.414 -         *  leaves on error
 840.415 -         *  
 840.416 -         *  @param aAddress Address string, which can also contain TTL
 840.417 -         *                  and number of addresses attributes
 840.418 -         */
 840.419 -        void CopyAddressL( const TDesC8& aAddress, RStringPool aPool );
 840.420 -
 840.421 -    private:    // Data
 840.422 -
 840.423 -        // <network type>
 840.424 -        RStringF iNetType;
 840.425 -        
 840.426 -        // <address type>        
 840.427 -        RStringF iAddressType;
 840.428 -
 840.429 -        // mutable TInetAddr for InetAddress()
 840.430 -        mutable TInetAddr iInetAddress;
 840.431 -
 840.432 -        // Address in text format
 840.433 -        HBufC8* iAddress;
 840.434 -
 840.435 -        // TTL for IP4 multicast addresses
 840.436 -        TInt iTTL;
 840.437 -        // Number of addresses
 840.438 -        TUint iNumOfAddress;
 840.439 -
 840.440 -        // String pool
 840.441 -        RStringPool iPool;
 840.442 -
 840.443 -        __DECLARE_TEST;
 840.444 -	};
 840.445 -
 840.446 -#endif // CSDPCONNECTIONFIELD_H
   841.1 --- a/epoc32/include/sdpdocument.h	Tue Mar 16 16:12:26 2010 +0000
   841.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   841.3 @@ -1,446 +0,0 @@
   841.4 -/*
   841.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   841.6 -* All rights reserved.
   841.7 -* This component and the accompanying materials are made available
   841.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   841.9 -* which accompanies this distribution, and is available
  841.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  841.11 -*
  841.12 -* Initial Contributors:
  841.13 -* Nokia Corporation - initial contribution.
  841.14 -*
  841.15 -* Contributors:
  841.16 -*
  841.17 -* Description:
  841.18 -* Name          : SdpDocument.h
  841.19 -* Part of       : SDP Codec
  841.20 -* Interface     : SDK API, SDP Codec API
  841.21 -* Version       : 1.0
  841.22 -*
  841.23 -*/
  841.24 -
  841.25 -
  841.26 -
  841.27 -#ifndef CSDPDOCUMENT_H
  841.28 -#define CSDPDOCUMENT_H
  841.29 -
  841.30 -//  INCLUDES
  841.31 -#include <e32base.h>
  841.32 -#include <badesca.h>
  841.33 -#include "_sdpdefs.h"
  841.34 -#include <stringpool.h>
  841.35 -
  841.36 -// FORWARD DECLARATIONS
  841.37 -class SdpUtil;
  841.38 -class RReadStream;
  841.39 -class RWriteStream;
  841.40 -class CUri8;
  841.41 -class CDesC8Array;
  841.42 -class CSdpOriginField;
  841.43 -class CSdpEmailField;
  841.44 -class CSdpPhoneField;
  841.45 -class CSdpConnectionField;
  841.46 -class CSdpBandwidthField;
  841.47 -class CSdpTimeField;
  841.48 -class CSdpAttributeField;
  841.49 -class CSdpMediaField;
  841.50 -class CSdpKeyField;
  841.51 -class CSdpCodecParseUtil;
  841.52 -
  841.53 -// CLASS DECLARATION
  841.54 -/**
  841.55 - *  @publishedAll
  841.56 - *  @released
  841.57 - *
  841.58 - *    This class encapsulates the Session Description Protocol (SDP) document.
  841.59 - *  The SDP document is a collection of SDP fields and related values
  841.60 - *    describing a session.
  841.61 - *
  841.62 - *    The normative reference for correct formatting and values is
  841.63 - *    draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  841.64 - *  member documentation. The implementation supports this normative
  841.65 - *  reference, but does not enforce it fully. 
  841.66 - *
  841.67 - *  @lib sdpcodec.lib
  841.68 - */
  841.69 -class CSdpDocument : public CBase
  841.70 -    {
  841.71 -    public: // Constructors and destructor
  841.72 -        /**
  841.73 -        * Constructs a new SDP document.
  841.74 -        *    
  841.75 -        * @param aText A string containing a correctly formatted SDP document.
  841.76 -        * @return a new instance.
  841.77 -        */
  841.78 -        IMPORT_C static CSdpDocument* DecodeL(const TDesC8& aText);
  841.79 -
  841.80 -        /**
  841.81 -        * Constructs a new SDP document and adds the pointer to the cleanup stack.
  841.82 -        *    
  841.83 -        * @param aText A string containing a correctly formatted SDP document.
  841.84 -        * @return a new instance.
  841.85 -        */
  841.86 -        IMPORT_C static CSdpDocument* DecodeLC(const TDesC8& aText);
  841.87 -            
  841.88 -        /**
  841.89 -        * Constructs a new, empty SDP document.
  841.90 -        * The instance will have the following initial values:
  841.91 -        *      v=0
  841.92 -        *      s=-
  841.93 -        *      t=0 0
  841.94 -        *
  841.95 -        * @return a new instance.
  841.96 -        */
  841.97 -        IMPORT_C static CSdpDocument* NewL();
  841.98 -
  841.99 -        /**
 841.100 -        * Constructs a new, empty SDP document document and adds the pointer to 
 841.101 -        * the cleanup stack.
 841.102 -        * The instance will have the following initial values:
 841.103 -        *      v=0
 841.104 -        *      s=-
 841.105 -        *      t=0 0
 841.106 -        *
 841.107 -        * @return a new instance.
 841.108 -        */
 841.109 -        IMPORT_C static CSdpDocument* NewLC();
 841.110 -
 841.111 -        /**
 841.112 -        * Deletes the resources held by the instance.
 841.113 -        */
 841.114 -        IMPORT_C ~CSdpDocument();
 841.115 -
 841.116 -    public: 
 841.117 -        /**
 841.118 -        * Externalizes the object state in an internal, memory optimized format.
 841.119 -        *
 841.120 -        * @param aStream The output stream.
 841.121 -        */
 841.122 -        IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 841.123 -
 841.124 -        /**
 841.125 -        * Internalizes the object state from an internal, memory optimized format.
 841.126 -        *
 841.127 -        * @param aStream The input stream.
 841.128 -        * @return A new SDP document internalized from the input stream.
 841.129 -        */
 841.130 -        IMPORT_C static CSdpDocument* InternalizeL(RReadStream& aStream);
 841.131 -
 841.132 -        /**
 841.133 -        * Outputs the SDP document formatted according to SDP syntax.
 841.134 -        * It is possible to output the document even though it is
 841.135 -        * incomplete in the sense that all mandatory SDP fields are
 841.136 -        * not present.When creating an SDP document to be used e.g.
 841.137 -        * as part of SIP signalling, caller should first ensure the
 841.138 -        * validity of the document using the IsValid() function.
 841.139 -        * 
 841.140 -        * @param aStream Stream used for output. On return the 
 841.141 -        *        stream includes correctly formatted SDP description.
 841.142 -        */
 841.143 -        IMPORT_C void EncodeL(RWriteStream& aStream) const;
 841.144 -
 841.145 -        /**
 841.146 -        * Creates a new instance that is equal to the target.
 841.147 -        *
 841.148 -        * @return a new instance.
 841.149 -        */
 841.150 -        IMPORT_C CSdpDocument* CloneL() const;
 841.151 -
 841.152 -        /**
 841.153 -        * Checks if the instance represents a valid SDP document.
 841.154 -        *
 841.155 -        * @return ETrue if SDP document is valid and EFalse if not.
 841.156 -        */
 841.157 -        IMPORT_C TBool IsValid() const;
 841.158 -
 841.159 -        /**
 841.160 -        * Gets the SDP version used in the version field.
 841.161 -        * Note, that the current implementation supports only version number 0.
 841.162 -        *
 841.163 -        * @return The SDP version number.
 841.164 -        */ 
 841.165 -        IMPORT_C TUint SdpVersion() const;
 841.166 -
 841.167 -        /**
 841.168 -        * Gets a reference to the session origin field.
 841.169 -        * Note, that the ownership is not transferred and
 841.170 -        * the instance must not be deleted by the caller.
 841.171 -        *
 841.172 -        * @return The origin field or zero if not present.
 841.173 -        */
 841.174 -        IMPORT_C CSdpOriginField* OriginField();
 841.175 -
 841.176 -        /**
 841.177 -        * Gets a reference to the session origin field.
 841.178 -        *
 841.179 -        * @return The origin field or zero if not present.
 841.180 -        */
 841.181 -        IMPORT_C const CSdpOriginField* OriginField() const;
 841.182 -
 841.183 -        /**
 841.184 -        * Sets or removes the session origin field.
 841.185 -        * Note, that the ownership of the argument is 
 841.186 -        * transferred to the SDP document object.
 841.187 -        *
 841.188 -        * @param aObj New origin field or null to remove the field.
 841.189 -        */
 841.190 -        IMPORT_C void SetOriginField(CSdpOriginField* aObj);
 841.191 -
 841.192 -        /**
 841.193 -        * Gets the session name field value.
 841.194 -        *
 841.195 -        * @return The session name or empty descriptor if not present.
 841.196 -        */
 841.197 -        IMPORT_C const TDesC8& SessionName() const;
 841.198 -
 841.199 -        /**
 841.200 -        * Sets the session name field value.
 841.201 -        *
 841.202 -        * @param aValue Valid session name value. 
 841.203 -        *        Note that an empty value is not accepted.
 841.204 -        * @leave KErrSdpCodecSessionField if
 841.205 -        *        aValue is not empty or aValue includes invalid byte strings 
 841.206 -        *        (´\0´, ´\n´, ´\r´).
 841.207 -        */
 841.208 -        IMPORT_C void SetSessionNameL(const TDesC8& aValue);
 841.209 -
 841.210 -        /**
 841.211 -        * Gets the session information field value.
 841.212 -        *
 841.213 -        * @return Info field value or an empty descriptor if not present.
 841.214 -        */
 841.215 -        IMPORT_C const TDesC8& Info() const;
 841.216 -
 841.217 -        /**
 841.218 -        * Sets or removes the session information field value.
 841.219 -        *
 841.220 -        * @param New field value or an empty descriptor to remove the field.
 841.221 -        * @leave KErrSdpCodecInfoField if aValue is not empty or aValue includes 
 841.222 -        *        invalid byte strings (´\0´, ´\n´, ´\r´).
 841.223 -        */
 841.224 -        IMPORT_C void SetInfoL(const TDesC8& aValue);
 841.225 -
 841.226 -        /**
 841.227 -        *    Gets the session URI field value.
 841.228 -        *    Note, that the ownership is not transferred and
 841.229 -        *    the instance must not be deleted by the caller.
 841.230 -        *
 841.231 -        *    @return CUri8*: Session URI or zero if the field is not present.
 841.232 -        */
 841.233 -        IMPORT_C CUri8* Uri();
 841.234 -
 841.235 -        /**
 841.236 -        * Gets the session URI field value.
 841.237 -        *
 841.238 -        * @return Session URI or zero if the field is not present.
 841.239 -        */
 841.240 -        IMPORT_C const CUri8* Uri() const;
 841.241 -
 841.242 -        /**
 841.243 -        * Sets or removes the session level URI field.
 841.244 -        * Note, that the ownership of the argument is 
 841.245 -        * transferred to the SDP document object.
 841.246 -        *
 841.247 -        * @param New value of the field or zero to remove the field.
 841.248 -        */
 841.249 -        IMPORT_C void SetUri(CUri8* aValue);
 841.250 -
 841.251 -        /**
 841.252 -        * Gets the set of session level email field values. This array is used to
 841.253 -        * add and remove fields into the document.
 841.254 -        * Note, that only correctly formatted email field values should be placed
 841.255 -        * into the array. Empty values in the array will be ignored.
 841.256 -        *
 841.257 -        * @return Email fields in array or empty array if no email fields.
 841.258 -        */
 841.259 -        IMPORT_C CDesC8Array& EmailFields();
 841.260 -
 841.261 -        /**
 841.262 -        * Gets the set of session level phone field values. This array is used to
 841.263 -        * add and remove fields into the document.
 841.264 -        * Note, that only correctly formatted phone field values should be placed
 841.265 -        * into the array. Empty values in the array will be ignored.
 841.266 -        *  
 841.267 -        * @return Phone fields in array or empty array if no phone fields.
 841.268 -        */
 841.269 -        IMPORT_C CDesC8Array& PhoneFields();
 841.270 -
 841.271 -        /**
 841.272 -        * Gets the session level connection field.
 841.273 -        * Note, that the ownership is not transferred and the instance must not be
 841.274 -        * deleted by the caller.
 841.275 -        *
 841.276 -        * @return Connection field or zero if not present.
 841.277 -        */
 841.278 -        IMPORT_C CSdpConnectionField* ConnectionField();
 841.279 -
 841.280 -        /**
 841.281 -        * Gets the session level connection field.
 841.282 -        *
 841.283 -        * @return Connection field or zero if not present.
 841.284 -        */
 841.285 -        IMPORT_C const CSdpConnectionField* ConnectionField() const;
 841.286 -
 841.287 -        /**
 841.288 -        * Sets or removes the session level connection field.
 841.289 -        * Note, that the ownership of the argument is 
 841.290 -        * transferred to the SDP document object.
 841.291 -        *
 841.292 -        * @param New connection field or zero to remove the field.
 841.293 -        */    
 841.294 -        IMPORT_C void SetConnectionField(CSdpConnectionField* aObj);
 841.295 -
 841.296 -        /**
 841.297 -        * Gets the possibly empty set of session level bandwidth fields.
 841.298 -        * This array is used directly for element insertion and removal.
 841.299 -        * The array may contain zero references and these are ignored.
 841.300 -        *
 841.301 -        * The objects referenced from the array are owned by the document
 841.302 -        * instance and must not be deleted. An object can be removed from
 841.303 -        * the document by setting the corresponding element to zero. By
 841.304 -        * doing so, the calling party receives ownership of the removed object.
 841.305 -        *
 841.306 -        * @return Set of bandwidth fields.
 841.307 -        */
 841.308 -        IMPORT_C RPointerArray<CSdpBandwidthField>& BandwidthFields();
 841.309 -
 841.310 -        /**
 841.311 -        * Gets the set of session level time description fields.
 841.312 -        * This array is used directly for element insertion and removal.
 841.313 -        * There must be at least one time description field in a valid SDP
 841.314 -        * document.The array may contain zero references and these are ignored.
 841.315 -        *
 841.316 -        * The objects referenced from the array are owned by the document 
 841.317 -        * instance and must not be deleted. An object can be removed from the
 841.318 -        * document by setting the corresponding element to zero. By doing so,
 841.319 -        * the calling party receives ownership of the removed object.  
 841.320 -        *
 841.321 -        * @return Set of time fields.
 841.322 -        */
 841.323 -        IMPORT_C RPointerArray<CSdpTimeField>& TimeFields();
 841.324 -
 841.325 -        /** 
 841.326 -        * Gets the zone adjustments field value.
 841.327 -        *
 841.328 -        * @return The field value or an empty descriptor if the
 841.329 -        *         field is not present.
 841.330 -        */
 841.331 -        IMPORT_C const TDesC8& ZoneAdjustments() const;
 841.332 -
 841.333 -        /** 
 841.334 -        * Sets the zone adjustments field value.
 841.335 -        *
 841.336 -        * @param aValue A valid field value or an empty descriptor
 841.337 -        *        if field is not present.
 841.338 -        */
 841.339 -        IMPORT_C void SetZoneAdjustmentsL(const TDesC8& aValue);
 841.340 -
 841.341 -        /**
 841.342 -        * Gets the session level encryption key field.
 841.343 -        * Note, that the ownership is not transferred and
 841.344 -        * the instance must not be deleted by the caller.
 841.345 -        *
 841.346 -        * @return The encryption key or zero if not present.
 841.347 -        */
 841.348 -        IMPORT_C CSdpKeyField* Key();
 841.349 -
 841.350 -        /**
 841.351 -        * Gets the session level encryption key field.
 841.352 -        *
 841.353 -        * @return The encryption key or zero if not present.
 841.354 -        */
 841.355 -        IMPORT_C const CSdpKeyField* Key() const;
 841.356 -
 841.357 -        /**
 841.358 -        * Sets or removes the encryption key field.
 841.359 -        * Note, that the ownership of the argument is 
 841.360 -        * transferred to the SDP document object.
 841.361 -        *
 841.362 -        * @param aObj New value of the field or zero to remove the field.
 841.363 -        */
 841.364 -        IMPORT_C void SetKey(CSdpKeyField* aObj);
 841.365 -
 841.366 -        /**
 841.367 -        * Gets the possibly empty set of session level attribute fields.
 841.368 -        * This array is used directly for element insertion and removal.
 841.369 -        * The array may contain zero references and these are ignored.
 841.370 -        *
 841.371 -        * The objects referenced from the array are owned by the document
 841.372 -        * instance and must not be deleted. An object can be removed from the
 841.373 -        * document by setting the corresponding element to zero. By doing so,
 841.374 -        * the calling party receives ownership of the removed object.
 841.375 -        *
 841.376 -        * @return Set of session level attributes.
 841.377 -        */
 841.378 -        IMPORT_C RPointerArray<CSdpAttributeField>& AttributeFields();
 841.379 -
 841.380 -        /**
 841.381 -        * Gets the possibly empty set of media description fields.
 841.382 -        * This array is used directly for element insertion and removal.
 841.383 -        * Note, that media level attributes and fields are managed 
 841.384 -        * through the corresponding media field instance and not through
 841.385 -        * the document instance.
 841.386 -        * The array may contain zero references and these are ignored.
 841.387 -        *
 841.388 -        * The objects referenced from the array are owned by the document
 841.389 -        * instance and must not be deleted. An object can be removed from the
 841.390 -        * document by setting the corresponding element to zero. By doing so,
 841.391 -        * the calling party receives ownership of the removed object.
 841.392 -        *
 841.393 -        * @return Set of media description fields.
 841.394 -        */
 841.395 -        IMPORT_C RPointerArray<CSdpMediaField>& MediaFields();
 841.396 -
 841.397 -    private:
 841.398 -        CSdpDocument();
 841.399 -        void ConstructL();
 841.400 -        void ConstructL(const CSdpDocument& aSdpDocument);
 841.401 -        void DoInternalizeL(RReadStream& aStream);
 841.402 -
 841.403 -        void ParseL (const TDesC8& aText);
 841.404 -        void ParseSessionVersionL();
 841.405 -        void ParseSessionOwnerL();
 841.406 -        void ParseSessionNameL();
 841.407 -        void ParseSessionInformationL();
 841.408 -        void ParseUriL();
 841.409 -        void ParseEmailL();
 841.410 -        void ParsePhoneL();
 841.411 -        void ParseConnectionL();
 841.412 -        void ParseBandwidthL();
 841.413 -        void ParseTimeFieldL();
 841.414 -        void ParseZoneAdjustmentL();
 841.415 -        void ParseEncryptionKeyL();
 841.416 -        void ParseAttributeFieldL();
 841.417 -        void ParseMediaLevelL ();
 841.418 -        void ExternalizeDesCArrayL(CDesC8ArraySeg& aArray,
 841.419 -                               RWriteStream& aStream) const;
 841.420 -        void EncodeDesCArrayL(CDesC8ArraySeg& aArray,TInt aIndex,
 841.421 -                                            RWriteStream& aStream) const;
 841.422 -
 841.423 -        TDesC8& GetTokenFromStreamL(RReadStream& aStream);
 841.424 -
 841.425 -        CSdpDocument(const CSdpDocument&); // Hidden.
 841.426 -        CSdpDocument& operator = (const CSdpDocument&); // Hidden
 841.427 -
 841.428 -    private: // Data
 841.429 -            
 841.430 -        HBufC8* iInfo;
 841.431 -        HBufC8* iSessionName;
 841.432 -        HBufC8* iZoneAdjustments;
 841.433 -        CSdpKeyField* iSdpKeyField;
 841.434 -        CSdpOriginField* iSdpOriginField;
 841.435 -        CSdpConnectionField* iSdpConnectionField;
 841.436 -        TUint iSdpVersion;
 841.437 -        RPointerArray<CSdpTimeField>* iTimeFields;
 841.438 -        RPointerArray<CSdpBandwidthField>* iBandwidthFields;
 841.439 -        RPointerArray<CSdpAttributeField>* iAttributeFields;
 841.440 -        RPointerArray<CSdpMediaField>* iMediaFields;
 841.441 -        CUri8* iUri;
 841.442 -        CDesC8ArraySeg* iEmailFields;
 841.443 -        CDesC8ArraySeg* iPhoneFields;
 841.444 -        RStringPool iPool;
 841.445 -        HBufC8* iToken;
 841.446 -        CSdpCodecParseUtil* iSdpCodecParseUtil;
 841.447 -    };
 841.448 -
 841.449 -#endif // CSDPDOCUMENT_H
   842.1 --- a/epoc32/include/sdpfmtattributefield.h	Tue Mar 16 16:12:26 2010 +0000
   842.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   842.3 @@ -1,263 +0,0 @@
   842.4 -/*
   842.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   842.6 -* All rights reserved.
   842.7 -* This component and the accompanying materials are made available
   842.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   842.9 -* which accompanies this distribution, and is available
  842.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  842.11 -*
  842.12 -* Initial Contributors:
  842.13 -* Nokia Corporation - initial contribution.
  842.14 -*
  842.15 -* Contributors:
  842.16 -*
  842.17 -* Description:
  842.18 -* Name          : SdpFmtAttributeField.h
  842.19 -* Part of       : SDP Codec
  842.20 -* Interface     : SDK API, SDP Codec API
  842.21 -* Version       : 1.0
  842.22 -*
  842.23 -*/
  842.24 -
  842.25 -
  842.26 -
  842.27 -#ifndef CSDPFMTATTRIBUTEFIELD_H
  842.28 -#define CSDPFMTATTRIBUTEFIELD_H
  842.29 -
  842.30 -//  INCLUDES
  842.31 -#include <e32base.h>
  842.32 -#include <stringpool.h>
  842.33 -#include "_sdpdefs.h"
  842.34 -
  842.35 -// FORWARD DECLARATIONS
  842.36 -class RReadStream;
  842.37 -class RWriteStream;
  842.38 -class CSdpAttributeField;
  842.39 -class TSdpRtpmapValue;
  842.40 -
  842.41 -// CLASS DECLARATION
  842.42 -/**
  842.43 - *  @publishedAll
  842.44 - *  @released
  842.45 - *
  842.46 - *	This class encapsulates the attribute field of the Session Description
  842.47 - *  Protocol for media format/payload type level attributes. Media and session
  842.48 - *  level attributes are supported by the CSdpAttributeField class. 
  842.49 - *
  842.50 - *	The normative reference for correct formatting and values is
  842.51 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  842.52 - *  member documentation. The implementation supports this normative
  842.53 - *  reference, but does not enforce it fully. 
  842.54 - *
  842.55 - *  @lib sdpcodec.lib
  842.56 - */
  842.57 -class CSdpFmtAttributeField : public CBase
  842.58 -	{
  842.59 -    public: // Constructors and destructor
  842.60 -        /**
  842.61 -         *	Constructs a new media format level attribute field.
  842.62 -		 * 
  842.63 -		 *	@param aText A string containing a correctly 
  842.64 -         *         formatted field value terminated by a CRLF.
  842.65 -         *  @return a new instance.
  842.66 -         */
  842.67 -		IMPORT_C static CSdpFmtAttributeField* DecodeL( const TDesC8& aText );
  842.68 -
  842.69 -        /**
  842.70 -         *	Constructs a new media format level attribute field  and adds the 
  842.71 -         *  pointer to the cleanup stack.
  842.72 -		 *			 
  842.73 -         *	@param aText A string containing a correctly 
  842.74 -         *         formatted field value terminated by a CRLF.
  842.75 -         *	@return a new instance.
  842.76 -         */
  842.77 -		IMPORT_C static CSdpFmtAttributeField* DecodeLC( const TDesC8& aText);
  842.78 -
  842.79 -        /**
  842.80 -         *	Constructs a new media level format attribute field.
  842.81 -		 *
  842.82 -         *	@param aAttribute The attribute name. It can be a pre-defined
  842.83 -         *         name in the SDP string pool or defined by the client.
  842.84 -         *	@param aFormat A valid format/payload identifier 
  842.85 -         *         used in the format list of the media description.
  842.86 -         *	@param aValue A valid attribute value or an empty 
  842.87 -         *         descriptor to omit the value part.
  842.88 -         *	@return a new instance.
  842.89 -		 */
  842.90 -		IMPORT_C static CSdpFmtAttributeField* NewL(
  842.91 -            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );
  842.92 -
  842.93 -        /**
  842.94 -         *	Constructs a new media format level attribute field and adds the 
  842.95 -         *  pointer to the cleanup stack.
  842.96 -		 *
  842.97 -         *	@param aAttribute The attribute name. It can be a pre-defined 
  842.98 -         *         name in the SDP string pool or defined by the client.
  842.99 -         *	@param aFormat A valid format/payload identifier 
 842.100 -         *         used in the format list of the media description.
 842.101 -         *	@param aValue A valid attribute value or an empty 
 842.102 -         *         descriptor to omit the value part.
 842.103 -         *	@return a new instance.
 842.104 -		 */
 842.105 -		IMPORT_C static CSdpFmtAttributeField* NewLC(
 842.106 -            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );
 842.107 -
 842.108 -		/**
 842.109 -		 *	Deletes the resources held by the instance.
 842.110 -		 */
 842.111 -		IMPORT_C ~CSdpFmtAttributeField();
 842.112 -
 842.113 -    public: // New functions
 842.114 -
 842.115 -		/**
 842.116 -		 *	Outputs the field formatted according to SDP syntax and including
 842.117 -		 *  the terminating CRLF.
 842.118 -		 * 
 842.119 -		 *	@param aStream Stream used for output. On return 
 842.120 -         *         the stream includes correctly formatted attribute field.
 842.121 -		 */
 842.122 -		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 842.123 -
 842.124 -		/**
 842.125 -		 *	Creates a new instance that is equal to the target.
 842.126 -		 *
 842.127 -		 *	@return a new instance.
 842.128 -		 */
 842.129 -		IMPORT_C CSdpFmtAttributeField * CloneL() const;
 842.130 -
 842.131 -		/**	
 842.132 -		 *	Compares this instance to another for equality. 
 842.133 -		 *
 842.134 -		 *	@param aObj The instance to compare to.
 842.135 -		 *	@return ETrue if equal, EFalse if not.
 842.136 -		 */
 842.137 -		IMPORT_C TBool operator== ( const CSdpFmtAttributeField& aObj ) const;
 842.138 -
 842.139 -		/**
 842.140 -		 *	Gets the attribute.
 842.141 -		 *	
 842.142 -		 *	@return	The attribute name. The name can be pre-defined 
 842.143 -         *          name in the SDP string table or defined by the client.
 842.144 -         */
 842.145 -		IMPORT_C RStringF Attribute() const;
 842.146 -
 842.147 -		/**
 842.148 -		 *	Gets the format.
 842.149 -		 *	
 842.150 -		 *	@return	The format.
 842.151 -		 */
 842.152 -		IMPORT_C const TDesC8& Format() const;
 842.153 -
 842.154 -		/**
 842.155 -		 *	Gets the attribute value.
 842.156 -		 *	
 842.157 -		 *	@return The value  or an empty descriptor if there is no value part.
 842.158 -		 */
 842.159 -		IMPORT_C const TDesC8& Value() const;
 842.160 -
 842.161 -		/**
 842.162 -		 *	Sets the attribute, format/payload type and attribute value.
 842.163 -		 *
 842.164 -         *	@param aAttribute A valid attribute name. It can be a 
 842.165 -         *         pre-defined name in the SDP string pool or defined by 
 842.166 -         *         the client.
 842.167 -         *	@param aFormat A valid format/payload identifier 
 842.168 -         *         used in the formatlist of the media description.
 842.169 -         *	@param aValue A valid attribute value or an empty 
 842.170 -         *         descriptor to omit the value part.
 842.171 -         *  @leave KErrSdpCodecMediaAttributeField if aAttribute is not rtpmap
 842.172 -         *         or fmtp attribute.
 842.173 -		 */
 842.174 -		IMPORT_C void SetL(
 842.175 -            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );
 842.176 -
 842.177 -    public: // Internal to codec
 842.178 -
 842.179 -        /**
 842.180 -         *  Externalizes the object to stream
 842.181 -         *
 842.182 -         *  @param aStream Stream where the object's state will be stored
 842.183 -         */
 842.184 -		void ExternalizeL( RWriteStream& aStream ) const;
 842.185 -
 842.186 -        /**
 842.187 -         *  Creates object from the stream data
 842.188 -         *
 842.189 -         *  @param aStream Stream where the object's state will be read        
 842.190 -         *  @return Initialized object
 842.191 -         */
 842.192 -		static CSdpFmtAttributeField* InternalizeL( RReadStream& aStream );
 842.193 -
 842.194 -        /**
 842.195 -         *  Returns attribute field
 842.196 -         *
 842.197 -         *  @return Attribute field
 842.198 -         */
 842.199 -        const CSdpAttributeField* AttributeField() const;
 842.200 -
 842.201 -    private: // New methods
 842.202 -
 842.203 -        /**
 842.204 -         *  Creates object from the stream data.
 842.205 -         *	Does the "2nd phase construction" of internalization.
 842.206 -         *
 842.207 -         *  @param aStream Stream where the object's state will be read
 842.208 -         */
 842.209 -        void DoInternalizeL( RReadStream& aStream );
 842.210 -
 842.211 -        /**
 842.212 -         *  Formats value parameters
 842.213 -         *
 842.214 -         *  @param aField Attribute field object
 842.215 -         */
 842.216 -        void FormatValueParamsL( CSdpAttributeField* aField );
 842.217 -
 842.218 -    private: // Construction and destruction
 842.219 -        
 842.220 -        /**
 842.221 -         *  Constructor
 842.222 -         */
 842.223 -        CSdpFmtAttributeField();
 842.224 -
 842.225 -        /**
 842.226 -         *  Second phase construction
 842.227 -         *         
 842.228 -         *  @param aText A string containing a correctly formatted field value
 842.229 -		 *         terminated by a CRLF.
 842.230 -         */
 842.231 -        void ConstructL( const TDesC8& aText );
 842.232 -
 842.233 -        /**
 842.234 -         *  Second phase construction
 842.235 -         *
 842.236 -         *	@param aAttribute The attribute from the pre-defined SDP string 
 842.237 -		 *         table or defined by the user
 842.238 -         *	@param aFormat A valid format/payload identifier used in the format
 842.239 -		 *         list of the media description.
 842.240 -         *	@param aValue A valid attribute value or an empty descriptor
 842.241 -		 *         to omit the value part.         
 842.242 -		 */
 842.243 -		void ConstructL(
 842.244 -            RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue );    
 842.245 -
 842.246 -        
 842.247 -        /**
 842.248 -         *  Decode format parameter from string
 842.249 -         *
 842.250 -         *	@param aText A text includeing format parameter.
 842.251 -		 */
 842.252 -        void DecodeFormatL(const TDesC8& aText);
 842.253 -        
 842.254 -        __DECLARE_TEST;
 842.255 -
 842.256 -    private:
 842.257 -
 842.258 -        RStringPool iPool;
 842.259 -        CSdpAttributeField* iAttributeField;       
 842.260 -		/** Pointer to the format part*/
 842.261 -		TPtrC8 iFormat;
 842.262 -        /** Pointer to the format parameters*/
 842.263 -		TPtrC8 iValuePart;
 842.264 -	};
 842.265 -
 842.266 -#endif // CSDPFMTATTRIBUTEFIELD_H
   843.1 --- a/epoc32/include/sdpkeyfield.h	Tue Mar 16 16:12:26 2010 +0000
   843.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   843.3 @@ -1,193 +0,0 @@
   843.4 -/*
   843.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   843.6 -* All rights reserved.
   843.7 -* This component and the accompanying materials are made available
   843.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   843.9 -* which accompanies this distribution, and is available
  843.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  843.11 -*
  843.12 -* Initial Contributors:
  843.13 -* Nokia Corporation - initial contribution.
  843.14 -*
  843.15 -* Contributors:
  843.16 -*
  843.17 -* Description:
  843.18 -* Name          : SdpKeyField.h
  843.19 -* Part of       : SDP Codec
  843.20 -* Interface     : SDK API, SDP Codec API
  843.21 -* Version       : 1.0
  843.22 -*
  843.23 -*/
  843.24 -
  843.25 -
  843.26 -
  843.27 -#ifndef CSDPKEYFIELD_H
  843.28 -#define CSDPKEYFIELD_H
  843.29 -
  843.30 -//  INCLUDES
  843.31 -#include <e32base.h>
  843.32 -#include <stringpool.h>
  843.33 -#include "_sdpdefs.h"
  843.34 -
  843.35 -// FORWARD DECLARATIONS
  843.36 -class RReadStream;
  843.37 -class RWriteStream;
  843.38 -
  843.39 -// CLASS DECLARATION
  843.40 -/**
  843.41 - *  @publishedAll
  843.42 - *  @released
  843.43 - *
  843.44 - *	This class encapsulates the encryption key field of 
  843.45 - *  the Session Description Protocol.
  843.46 - * 
  843.47 - *	The normative reference for correct formatting and values is
  843.48 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  843.49 - *  member documentation. The implementation supports this normative
  843.50 - *  reference, but does not enforce it fully. 
  843.51 - *
  843.52 - *  @lib sdpcodec.lib
  843.53 - */
  843.54 -class CSdpKeyField : public CBase
  843.55 -	{
  843.56 -    public: // Constructors and destructor
  843.57 -        /**
  843.58 -         *	Constructs a new encryption key field.
  843.59 -		 *	
  843.60 -         *	@param aFieldValue A string containing a correctly 
  843.61 -         *         formatted field value terminated by a CRLF.
  843.62 -         *	@return a new instance.
  843.63 -         */
  843.64 -		IMPORT_C static CSdpKeyField* DecodeL(const TDesC8& aFieldValue);
  843.65 -
  843.66 -        /**
  843.67 -         *	Constructs a new encryption key field and adds the pointer to 
  843.68 -         *  the cleanup stack.
  843.69 -		 *	
  843.70 -         *	@param aFieldValue A string containing a correctly 
  843.71 -         *              formatted field value terminated by a CRLF.
  843.72 -         *	@return a new instance.
  843.73 -         *  @leave  In error case function leaves.
  843.74 -         */
  843.75 -		IMPORT_C static CSdpKeyField* DecodeLC(const TDesC8& aFieldValue);
  843.76 -
  843.77 -        /**
  843.78 -         *	Constructs a new encryption key field.
  843.79 -		 *	
  843.80 -         *	@param aMethod Encryption method from the pre-defined 
  843.81 -         *         SDP string table. User defined values are not accepted.
  843.82 -		 *  @param aEncryptionKey A valid encryption key value 
  843.83 -         *         or an empty descriptor to omit the key part.
  843.84 -         *	@return a new instance.
  843.85 -         */
  843.86 -		IMPORT_C static CSdpKeyField* NewL(RStringF aMethod,
  843.87 -											const TDesC8& aEncryptionKey);
  843.88 -
  843.89 -        /**
  843.90 -         *	Constructs a new encryption key field and adds the pointer to 
  843.91 -         *  the cleanup stack.
  843.92 -		 *	
  843.93 -         *	@param aMethod Encryption method from the pre-defined 
  843.94 -         *         SDP string table. User defined values are not accepted.
  843.95 -		 *  @param aEncryptionKey A valid encryption key value 
  843.96 -         *         or an empty descriptor to omit the key part.
  843.97 -         *	@return a new instance.
  843.98 -         */
  843.99 -		IMPORT_C static CSdpKeyField* NewLC(RStringF aMethod,
 843.100 -											const TDesC8& aEncryptionKey);
 843.101 -
 843.102 -		/**
 843.103 -		 *	Deletes the resources held by the instance.
 843.104 -		 */
 843.105 -		IMPORT_C ~CSdpKeyField();
 843.106 -
 843.107 -    public: // New functions
 843.108 -		/**
 843.109 -		 *	Writes the instance as a complete SDP field encoded as UTF-8
 843.110 -		 *	and formatted as defined in draft-ietf-mmusic-sdp-new-14.
 843.111 -         *
 843.112 -		 *	@param aStream Stream used for output. On return 
 843.113 -         *         the stream includes correctly formatted key field.
 843.114 -		 */
 843.115 -		IMPORT_C void EncodeL(RWriteStream& aStream) const;
 843.116 -
 843.117 -		/**
 843.118 -		 *	Creates a new instance that is equal to the target.
 843.119 -		 *
 843.120 -		 *	@return a new instance.
 843.121 -		 */
 843.122 -		IMPORT_C CSdpKeyField * CloneL() const;
 843.123 -
 843.124 -		/**	
 843.125 -		 *	Compares this instance to another for equality.
 843.126 -		 *
 843.127 -		 *	@param aObj The instance to compare to.
 843.128 -		 *	@return ETrue if equal, EFalse if not.
 843.129 -		 */
 843.130 -		IMPORT_C TBool operator == (const CSdpKeyField& aObj) const;
 843.131 -
 843.132 -		/**
 843.133 -		 *	Gets the encryption method.
 843.134 -		 *
 843.135 -		 *	@return The method.
 843.136 -		 */
 843.137 -		IMPORT_C RStringF Method() const;
 843.138 -
 843.139 -		/**
 843.140 -		 *	Gets the encryption key.
 843.141 -		 *
 843.142 -		 *	@return The key or an empty descriptor if there is no key part.
 843.143 -		 */
 843.144 -		IMPORT_C const TDesC8& EncryptionKey() const;
 843.145 -
 843.146 -		/**
 843.147 -		 *	Sets the encryption method and key.
 843.148 -		 *
 843.149 -         *	@param aMethod Encryption method from the pre-defined 
 843.150 -         *         SDP string table. User defined values are not accepted.
 843.151 -		 *  @param aEncryptionKey A valid encryption key value 
 843.152 -         *         or an empty descriptor to omit the key part.
 843.153 -		 */
 843.154 -		IMPORT_C void SetL(RStringF aMethod,
 843.155 -						   const TDesC8& aEncryptionKey);
 843.156 -
 843.157 -    public:
 843.158 -    	/**
 843.159 -         *  Externalizes the object to stream
 843.160 -         *
 843.161 -         *  @param aStream Stream where the object's state will be stored
 843.162 -         */
 843.163 -		void ExternalizeL(RWriteStream& aStream) const;
 843.164 -		
 843.165 -		/**
 843.166 -         *  Creates object from the stream data
 843.167 -         *
 843.168 -         *  @param aStream Stream where the object's state will be read        
 843.169 -         *  @return Initialized object
 843.170 -         */
 843.171 -		static CSdpKeyField* InternalizeL(RReadStream& aStream);
 843.172 -
 843.173 -	private:
 843.174 -		CSdpKeyField();
 843.175 -		void ConstructL(const TDesC8& aText);
 843.176 -		void ConstructL(RStringF aMethod, const TDesC8& aEncryptionKey);
 843.177 -        void DoInternalizeL(RReadStream& aStream);
 843.178 -        void SetMethodAndKeyL(RStringF aMethod, 
 843.179 -                              const TDesC8& aEncryptionKey,
 843.180 -                              TBool aAllowEmptyKeyValue);
 843.181 -        void SetMethodClearAndKeyL(RStringF aMethod, const TDesC8& aEncryptionKey);
 843.182 -        void SetMethodBase64AndKeyL(RStringF aMethod, const TDesC8& aText);
 843.183 -        void SetMethodUriAndKeyL(RStringF aMethod, const TDesC8& aText);
 843.184 -        void SetMethodPromptL(RStringF aMethod, const TDesC8& aText);
 843.185 -        RArray<TPtrC8> GetElementsFromLineL( TLex8& aLexer);
 843.186 -
 843.187 -    private: // Data
 843.188 -		RStringF iMethod;
 843.189 -        TBool iMethodOpen;
 843.190 -		HBufC8* iEncryptionKey;
 843.191 -        RStringPool iStringPool;
 843.192 -
 843.193 -		__DECLARE_TEST;
 843.194 -	};
 843.195 -
 843.196 -#endif // CSDPKEYFIELD_H
   844.1 --- a/epoc32/include/sdpmediafield.h	Tue Mar 16 16:12:26 2010 +0000
   844.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   844.3 @@ -1,445 +0,0 @@
   844.4 -/*
   844.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   844.6 -* All rights reserved.
   844.7 -* This component and the accompanying materials are made available
   844.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   844.9 -* which accompanies this distribution, and is available
  844.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  844.11 -*
  844.12 -* Initial Contributors:
  844.13 -* Nokia Corporation - initial contribution.
  844.14 -*
  844.15 -* Contributors:
  844.16 -*
  844.17 -* Description:
  844.18 -* Name          : SdpMediaField.h
  844.19 -* Part of       : SDP Codec
  844.20 -* Interface     : SDK API, SDP Codec API
  844.21 -* Version       : 1.0
  844.22 -*
  844.23 -*/
  844.24 -
  844.25 -
  844.26 -
  844.27 -#ifndef CSDPMEDIAFIELD_H
  844.28 -#define CSDPMEDIAFIELD_H
  844.29 -
  844.30 -//  INCLUDES
  844.31 -#include <e32base.h>
  844.32 -#include "_sdpdefs.h"
  844.33 -#include <stringpool.h>
  844.34 -
  844.35 -// FORWARD DECLARATIONS
  844.36 -class RReadStream;
  844.37 -class RWriteStream;
  844.38 -class CSdpConnectionField;
  844.39 -class CSdpBandwidthField;
  844.40 -class CSdpAttributeField;
  844.41 -class CSdpKeyField;
  844.42 -class CSdpFmtAttributeField;
  844.43 -class CSdpCodecParseUtil;
  844.44 -
  844.45 -// CLASS DECLARATION
  844.46 -/**
  844.47 - *  @publishedAll
  844.48 - *  @released
  844.49 - *
  844.50 - *	This class encapsulates the media description field and related media
  844.51 - *  specific subfields of the Session Description Protocol.
  844.52 - *
  844.53 - *	The normative reference for correct formatting and values is
  844.54 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  844.55 - *  member documentation. The implementation supports this normative
  844.56 - *  reference, but does not enforce it fully. 
  844.57 - *
  844.58 - *  @lib sdpcodec.lib
  844.59 - */
  844.60 -class CSdpMediaField : public CBase
  844.61 -	{
  844.62 -
  844.63 -	public:
  844.64 -
  844.65 -
  844.66 -    public: // Constructors and destructor
  844.67 -        /**
  844.68 -         *	Constructs a new media description field.
  844.69 -		 *	
  844.70 -         *	@param aText A correctly formatted media field 
  844.71 -         *         terminated by a CRLF followed by zero or more media 
  844.72 -         *         attribute fields separated by a CRLF.
  844.73 -         *	@param aRecurse If ETrue, attempts to construct also media 
  844.74 -         *         attributes following the CRLF terminating the media field.
  844.75 -         *	@return a new instance.
  844.76 -         */
  844.77 -		IMPORT_C static	CSdpMediaField* DecodeL(const TDesC8& aText,
  844.78 -												TBool aRecurse = ETrue);
  844.79 -
  844.80 -        /**
  844.81 -         *	Constructs a new media description field and adds the pointer to 
  844.82 -         *  the cleanup stack.
  844.83 -		 *	
  844.84 -         *	@param aText A correctly formatted media field 
  844.85 -         *         terminated by a CRLF followed by zero or more media 
  844.86 -         *         attribute fields separated by a CRLF.
  844.87 -         *	@param aRecurse If ETrue, attempts to construct also media 
  844.88 -         *         attributes following the CRLF terminating the media field.
  844.89 -		 *  @return a new instance.
  844.90 -         */
  844.91 -		IMPORT_C static	CSdpMediaField* DecodeLC(const TDesC8& aText,
  844.92 -												 TBool aRecurse = ETrue);
  844.93 -
  844.94 -        /**
  844.95 -         *	Constructs a new media description field.
  844.96 -		 *  The optional portcount component of the field is initialized to 1.
  844.97 -		 *
  844.98 -		 *	@param aMedia A valid media type name.
  844.99 -         *	@param aPort Port number.
 844.100 -         *	@param aProtocol A valid media protocol name.
 844.101 -         *	@param aFormatList A valid format list.
 844.102 -         *	@return a new instance.
 844.103 -         */
 844.104 -		IMPORT_C static CSdpMediaField* NewL(RStringF aMedia,
 844.105 -											 TUint aPort,
 844.106 -											 RStringF aProtocol,
 844.107 -											 const TDesC8& aFormatList);
 844.108 -
 844.109 -		/**
 844.110 -         *	Constructs a new media description field and adds the pointer to 
 844.111 -         *  the cleanup stack.
 844.112 -		 *  The optional portcount component of the field is initialized to 1.
 844.113 -		 *	
 844.114 -		 *	@param aMedia A valid media type name.
 844.115 -         *	@param aPort Port number.
 844.116 -         *	@param aProtocol A valid media protocol name.
 844.117 -         *	@param aFormatList A valid format list.
 844.118 -         *	@return a new instance.
 844.119 -         */
 844.120 -		IMPORT_C static CSdpMediaField* NewLC(RStringF aMedia,
 844.121 -											  TUint aPort,
 844.122 -										      RStringF aProtocol,
 844.123 -										      const TDesC8& aFormatList);
 844.124 -
 844.125 -		/**
 844.126 -		 *	Deletes the resources held by the instance.
 844.127 -		 */
 844.128 -		IMPORT_C ~CSdpMediaField();
 844.129 -
 844.130 -    public: // New functions
 844.131 -		/**
 844.132 -		 *	Outputs the field formatted according to SDP syntax and including
 844.133 -		 *  the terminating CRLF. Optionally output also the related media 
 844.134 -		 *  level fields. 
 844.135 -		 * 
 844.136 -		 *	@param aStream Stream used for output. On return the
 844.137 -         *         stream includes correctly formatted media field with 
 844.138 -         *         media part fields if aRecurse is defined to ETrue.
 844.139 -		 *	@param aRecurse Flag to specify whether to output media 
 844.140 -		 *         attributes also (ETrue) or only the media field (EFalse).
 844.141 -		 */
 844.142 -		IMPORT_C void 
 844.143 -			EncodeL(RWriteStream& aStream, TBool aRecurse = ETrue) const;
 844.144 -
 844.145 -		/**
 844.146 -		 *	Creates a new instance that is equal to the target.
 844.147 -		 *  Optionally also related subfields are cloned.
 844.148 -		 *
 844.149 -		 *	@param aRecurse Flag to specify whether to clone subfields
 844.150 -		 *         also (ETrue) or only the media field (EFalse).
 844.151 -		 *	@return a new instance.
 844.152 -		 */
 844.153 -		IMPORT_C CSdpMediaField * CloneL(TBool aRecurse = ETrue) const;
 844.154 -
 844.155 -		/**	
 844.156 -		 *	Compares this instance to another for equality. Subfields are
 844.157 -		 *  included in the comparison if present.
 844.158 -		 *
 844.159 -		 *	@param aObj The instance to compare to.
 844.160 -		 *	@return ETrue if equal, EFalse if not.
 844.161 -		 */
 844.162 -		IMPORT_C TBool operator == (const CSdpMediaField& aObj) const;
 844.163 -
 844.164 -		/**
 844.165 -		 *	Checks the consistency between the media field and it's subfields.
 844.166 -		 *  In particular, this function checks that each format specific 
 844.167 -		 *  attribute is related to a format in the format list of the
 844.168 -		 *  media field.
 844.169 -		 *
 844.170 -		 *	@return	ETrue if media description is consistent and EFalse if not.
 844.171 -		 */
 844.172 -		IMPORT_C TBool IsValid() const;
 844.173 -
 844.174 -		/**
 844.175 -		 *	Gets the media type.
 844.176 -		 *
 844.177 -		 *	@return The media type.
 844.178 -		 */
 844.179 -		IMPORT_C RStringF Media() const;
 844.180 -
 844.181 -		/**
 844.182 -		 *	Sets the media type.
 844.183 -		 *
 844.184 -		 *	@param aMedia The media type.
 844.185 -		 *  @leave KErrSdpCodecMediaField if aMedia is not valid character
 844.186 -		 */
 844.187 -		IMPORT_C void SetMediaL(RStringF aMedia);
 844.188 -
 844.189 -		/**
 844.190 -		 *	Gets the media protocol.
 844.191 -		 *
 844.192 -		 *	@return The media protocol.
 844.193 -		 */
 844.194 -		IMPORT_C RStringF Protocol() const;
 844.195 -
 844.196 -		/**
 844.197 -		 *	Sets the media protocol.
 844.198 -		 *
 844.199 -		 *	@param aProtocol The media protocol.
 844.200 -		 *  @leave KErrSdpCodecMediaField if 
 844.201 -		 *		   aProtocol containing two elements divided by slash are not 
 844.202 -         *         valid tokens.
 844.203 -		 */
 844.204 -		IMPORT_C void SetProtocolL(RStringF aProtocol);
 844.205 -
 844.206 -		/**
 844.207 -		 *	Gets the port number.
 844.208 -		 *
 844.209 -		 *	@return The port number.
 844.210 -		 */
 844.211 -		IMPORT_C TUint Port() const;
 844.212 -
 844.213 -		/**
 844.214 -		 *	Sets the port number.
 844.215 -		 *
 844.216 -		 *	@param aPort The port number.
 844.217 -		 *  @leave KErrSdpCodecMediaField if port is not valid number as 
 844.218 -         *         defined in draft-ietf-mmusic-sdp-new-14
 844.219 -		 */
 844.220 -		IMPORT_C void SetPortL(TUint aPort);
 844.221 -
 844.222 -		/**
 844.223 -		 *	Gets the port count.
 844.224 -		 *
 844.225 -		 *	@return The port count.
 844.226 -		 */
 844.227 -		IMPORT_C TUint PortCount() const;
 844.228 -
 844.229 -		/**
 844.230 -		 *	Sets the port count.
 844.231 -		 *
 844.232 -		 *	@param aCount The port count that must be greater than zero.
 844.233 -		 *  @leave KErrSdpCodecMediaField if aCount equals to zero.
 844.234 -		 */
 844.235 -		IMPORT_C void SetPortCountL(TUint aCount);
 844.236 -
 844.237 -		/**
 844.238 -		 *	Gets the format list.
 844.239 -		 *
 844.240 -		 *	@return The format list.
 844.241 -		 */
 844.242 -		IMPORT_C const TDesC8& FormatList() const;
 844.243 -
 844.244 -		/**
 844.245 -		 *	Sets the format list.
 844.246 -		 *  The format list should contain one or more format tokens separated
 844.247 -		 *  by a single whitespace character.
 844.248 -		 *
 844.249 -		 *	@param aValue A valid format list.
 844.250 -		 *  @leave KErrSdpCodecMediaField if aValue contains invalid tokens
 844.251 -		 */
 844.252 -		IMPORT_C void SetFormatListL(const TDesC8& aValue);
 844.253 -
 844.254 -		/**
 844.255 -		 *	Return the media level info field value.
 844.256 -		 *
 844.257 -		 *	@return The value or an empty descriptor if not present.
 844.258 -		 */
 844.259 -		IMPORT_C const TDesC8& Info() const;
 844.260 -
 844.261 -		/**
 844.262 -		 *	Sets the media level info field value.
 844.263 -		 *
 844.264 -		 *	@param aValue A valid info field value.
 844.265 -		 *	@leave KErrSdpCodecMediaInfoField if aValue is not KNullDesC8 or 
 844.266 -         *         aValue includes invalid byte strings (´\0´, ´\n´, ´\r´).
 844.267 -		 */
 844.268 -		IMPORT_C void SetInfoL(const TDesC8& aValue);
 844.269 -
 844.270 -		/**
 844.271 -		 *	Gets the media level encryption key field.
 844.272 -		 *	Note, that the ownership is not transferred and
 844.273 -		 *	the instance must not be deleted by the caller.
 844.274 -		 *
 844.275 -		 *	@return Encryption key field or null if not present.
 844.276 -		 */
 844.277 -		IMPORT_C CSdpKeyField* Key();
 844.278 -
 844.279 -		/**
 844.280 -		 *	Gets the media level encryption key field.
 844.281 -		 *
 844.282 -		 *	@return Encryption key field or null if not present.
 844.283 -		 */
 844.284 -		IMPORT_C const CSdpKeyField* Key() const;
 844.285 -
 844.286 -		/**
 844.287 -		 *	Sets or removes the media level encryption key field.
 844.288 -		 *
 844.289 -		 *	@param aObj The new key field or null if field is 
 844.290 -         *         to be removed. Ownership of the referenced object
 844.291 -		 *         is transferred to the media field instance.
 844.292 -		 */
 844.293 -		IMPORT_C void SetKey(CSdpKeyField* aObj);
 844.294 -
 844.295 -		/**
 844.296 -		 *	Gets the set of media format level attributes.
 844.297 -		 *  This array is used directly for element insertion and removal.
 844.298 -		 *
 844.299 -		 *	The objects referenced from the array are owned by the media
 844.300 -		 *  field instance and must not be deleted. An object can be
 844.301 -		 *  removed from the media description by setting the corresponding
 844.302 -		 *  element to zero. By doing so, the calling party receives ownership
 844.303 -		 *  of the removed object.
 844.304 -		 *
 844.305 -		 *	@return The set of media format level attributes.
 844.306 -		 */
 844.307 -		IMPORT_C RPointerArray<CSdpFmtAttributeField>& FormatAttributeFields();
 844.308 -
 844.309 -		/**
 844.310 -		 *	Gets the set of media level, format independent attributes.
 844.311 -		 *  This array is used directly for element insertion and removal.
 844.312 -		 *
 844.313 -		 *	The objects referenced from the array are owned by the media
 844.314 -		 *  field instance and must not be deleted. An object can be
 844.315 -		 *  removed from the media description by setting the corresponding
 844.316 -		 *  element to zero. By doing so, the calling party receives ownership
 844.317 -		 *  of the removed object.
 844.318 -		 *
 844.319 -		 *	@return The set of media level attributes.
 844.320 -		 */
 844.321 -		IMPORT_C RPointerArray<CSdpAttributeField>& AttributeFields();
 844.322 -
 844.323 -		/**
 844.324 -		 *	Gets the set of media level bandwidth fields.
 844.325 -		 *  This array is used directly for element insertion and removal.
 844.326 -		 *
 844.327 -		 *	The objects referenced from the array are owned by the media
 844.328 -		 *  field instance and must not be deleted. An object can be
 844.329 -		 *  removed from the media description by setting the corresponding
 844.330 -		 *  element to zero. By doing so, the calling party receives ownership
 844.331 -		 *  of the removed object.
 844.332 -		 *
 844.333 -		 *	@return The set of media level bandwidth fields.
 844.334 -		 */
 844.335 -		IMPORT_C RPointerArray<CSdpBandwidthField>& BandwidthFields();
 844.336 -
 844.337 -		/**
 844.338 -		 *	Gets the set of media level connection fields.
 844.339 -		 *  This array is used directly for element insertion and removal.
 844.340 -		 *
 844.341 -		 *	The objects referenced from the array are owned by the media
 844.342 -		 *  field instance and must not be deleted. An object can be
 844.343 -		 *  removed from the media description by setting the corresponding
 844.344 -		 *  element to zero. By doing so, the calling party receives ownership
 844.345 -		 *  of the removed object.
 844.346 -		 *
 844.347 -		 *	@return The set of media level connection fields.
 844.348 -		 */
 844.349 -		IMPORT_C RPointerArray<CSdpConnectionField>& ConnectionFields();
 844.350 -
 844.351 -		/**
 844.352 -		 *	Removes a specific format from the media description.
 844.353 -		 *  The function will remove the named format from the format list if
 844.354 -		 *  found and then delete all format level attributes of type 
 844.355 -		 *  CSdpFmtAttributeField related to the removed format. 
 844.356 -		 *
 844.357 -		 *	@param aFormat The name of the format to remove.
 844.358 -		 */
 844.359 -		IMPORT_C void RemoveFormatL(const TDesC8& aFormat);
 844.360 -
 844.361 -		/**
 844.362 -		 *	Removes all formats except one from the media description.
 844.363 -		 *  The function will set the format list to only contain the one
 844.364 -		 *  format to keep and then delete all format level attributes that
 844.365 -		 *  are related to the removed formats. If the format is not found
 844.366 -		 *  from the format list, it is added there. If there are no format
 844.367 -		 *  level attributes for the specified format, the format level
 844.368 -		 *  attribute set will be empty.
 844.369 -		 *
 844.370 -		 *	@param aFormat The name of the format to keep after 
 844.371 -		 *         removing all others.
 844.372 -		 */
 844.373 -		IMPORT_C void KeepFormatL(const TDesC8& aFormat);
 844.374 -
 844.375 -		/**
 844.376 -		 *	Sets this media description into rejected state.
 844.377 -		 *  The rejected state is defined by the offer/answer model in
 844.378 -		 *  RFC3264. The function sets the port number to 0 and removes
 844.379 -		 *  all formats except one. The remaining format is determined
 844.380 -		 *  by the implementation.
 844.381 -		 */
 844.382 -		IMPORT_C void RejectMedia();
 844.383 -
 844.384 -    public:
 844.385 -		/**
 844.386 -		 *	Shows if contact is present
 844.387 -		 *
 844.388 -		 *	@return ETrue if contact present, otherwise EFalse
 844.389 -		 */
 844.390 -		TBool IsContactPresent() const;
 844.391 -		
 844.392 -		/**
 844.393 -         *  Externalizes the object to stream
 844.394 -         *
 844.395 -         *  @param aStream Stream where the object's state will be stored
 844.396 -         */
 844.397 -		void ExternalizeL(RWriteStream& aStream) const;
 844.398 -		
 844.399 -		/**
 844.400 -         *  Creates object from the stream data
 844.401 -         *
 844.402 -         *  @param aStream Stream where the object's state will be read	
 844.403 -         *  @return Initialized object
 844.404 -         */
 844.405 -		static CSdpMediaField* InternalizeL(RReadStream& aStream);
 844.406 -
 844.407 -	private:
 844.408 -		CSdpMediaField();
 844.409 -		void ConstructL();
 844.410 -		void ConstructL(TBool aRecurse);
 844.411 -		void ConstructL(RStringF aMedia, TUint aPort, RStringF aProtocol, 
 844.412 -						const TDesC8& aFormatList);
 844.413 -
 844.414 -		void ConstructL(const CSdpMediaField& aSdpMediaField);
 844.415 -		void DoInternalizeL(RReadStream& aStream);
 844.416 -		void ParseL (const TDesC8& aText);
 844.417 -		void ParseMediaL();
 844.418 -		void ParseInformationL();
 844.419 -		void ParseConnectionL();
 844.420 -		void ParseBandwithL();
 844.421 -		void ParseEncryptionKeyL();
 844.422 -		void ParseAttributeFieldsL();
 844.423 -		TDesC8& GetTokenFromStreamL(RReadStream& aStream);
 844.424 -
 844.425 -
 844.426 -		CSdpMediaField(const CSdpMediaField&); // Hidden.
 844.427 -		CSdpMediaField& operator = (const CSdpMediaField&); // Hidden
 844.428 -
 844.429 -    private: // Data
 844.430 -		HBufC8* iInfo;
 844.431 -		CSdpKeyField* iSdpKeyField;
 844.432 -		RArray<TPtrC8> iElementArray;
 844.433 -		RStringPool iPool;
 844.434 -		TBool iRecurse;
 844.435 -		RStringF iMedia;
 844.436 -		RStringF iProtocol;
 844.437 -		TUint iPort;
 844.438 -		TUint iPortCount;
 844.439 -		HBufC8* iFormatList;
 844.440 -		RPointerArray<CSdpBandwidthField>* iBandwidthFields;
 844.441 -		RPointerArray<CSdpAttributeField>* iAttributeFields;
 844.442 -		RPointerArray<CSdpConnectionField>* iConnectionFields;
 844.443 -		RPointerArray<CSdpFmtAttributeField>* iFmtAttrFields;
 844.444 -		HBufC8* iToken;
 844.445 -		CSdpCodecParseUtil* iSdpCodecParseUtil;
 844.446 -	};
 844.447 -
 844.448 -#endif // CSDPMEDIAFIELD_H
   845.1 --- a/epoc32/include/sdporiginfield.h	Tue Mar 16 16:12:26 2010 +0000
   845.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   845.3 @@ -1,460 +0,0 @@
   845.4 -/*
   845.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   845.6 -* All rights reserved.
   845.7 -* This component and the accompanying materials are made available
   845.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   845.9 -* which accompanies this distribution, and is available
  845.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  845.11 -*
  845.12 -* Initial Contributors:
  845.13 -* Nokia Corporation - initial contribution.
  845.14 -*
  845.15 -* Contributors:
  845.16 -*
  845.17 -* Description:
  845.18 -* Name          : SdpOriginField.h
  845.19 -* Part of       : SDP Codec
  845.20 -* Interface     : SDK API, SDP Codec API
  845.21 -* Version       : 1.0
  845.22 -*
  845.23 -*/
  845.24 -
  845.25 -
  845.26 -
  845.27 -#ifndef CSDPORIGINFIELD_H
  845.28 -#define CSDPORIGINFIELD_H
  845.29 -
  845.30 -//  INCLUDES
  845.31 -#include <e32base.h>
  845.32 -#include <in_sock.h>
  845.33 -#include <stringpool.h>
  845.34 -#include "_sdpdefs.h"
  845.35 -
  845.36 -//  CONSTANTS
  845.37 -const TInt KMaxAddressLength = 256;
  845.38 -
  845.39 -//  FORWARD DECLARATIONS
  845.40 -class RReadStream;
  845.41 -class RWriteStream;
  845.42 -class CSdpOriginFieldPtrs;
  845.43 -
  845.44 -// CLASS DECLARATION
  845.45 -/**
  845.46 - *  @publishedAll
  845.47 - *  @released
  845.48 - *
  845.49 - *	This class encapsulates the origin field of 
  845.50 - *  the Session Description Protocol.
  845.51 - * 
  845.52 - *	The normative reference for correct formatting and values is
  845.53 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  845.54 - *  member documentation. The implementation supports this normative
  845.55 - *  reference, but does not enforce it fully. 
  845.56 - *
  845.57 - *  @lib sdpcodec.lib
  845.58 - */
  845.59 -class CSdpOriginField : public CBase
  845.60 -	{
  845.61 -    public:     // Constructors and destructor
  845.62 -
  845.63 -        /**
  845.64 -         *	Constructs a new origin field.
  845.65 -		 *		 
  845.66 -         *	@param aText A string containing a correctly 
  845.67 -         *         formatted field value terminated by a CRLF.
  845.68 -         *	@return a new instance.
  845.69 -         */
  845.70 -		IMPORT_C static	CSdpOriginField* DecodeL( const TDesC8& aText );
  845.71 -
  845.72 -        /**
  845.73 -         *	Constructs a new origin field and adds the pointer to the cleanup 
  845.74 -         *  stack.
  845.75 -		 * 		
  845.76 -         *	@param aText A string containing a correctly 
  845.77 -         *         formatted field value terminated by a CRLF.
  845.78 -         *	@return a new instance.
  845.79 -         */
  845.80 -		IMPORT_C static	CSdpOriginField* DecodeLC( const TDesC8& aText );
  845.81 -
  845.82 -        /**
  845.83 -         *	Constructs a new origin field.
  845.84 -		 *	         
  845.85 -         *	@param aUserName A valid user name value.
  845.86 -         *	@param aSessionId A valid session id value.
  845.87 -         *	@param aSessionVersion A valid announcement version value.
  845.88 -         *	@param aAddress A unicast IP address from either
  845.89 -		 *         KAfInet or KAfInet6 family.
  845.90 -         *	@return a new instance.
  845.91 -         */
  845.92 -		IMPORT_C static	CSdpOriginField* NewL( const TDesC8& aUserName, 
  845.93 -											   TInt64 aSessionId, 
  845.94 -											   TInt64 aSessionVersion, 
  845.95 -											   TInetAddr& aAddress );
  845.96 -
  845.97 -        /**
  845.98 -         *	Constructs a new origin field and adds the pointer to the cleanup 
  845.99 -         *  stack.
 845.100 -		 *	         
 845.101 -         *	@param aUserName A valid user name value.
 845.102 -         *	@param aSessionId A valid session id value.
 845.103 -         *	@param aSessionVersion A valid announcement version value.
 845.104 -         *	@param aAddress A unicast IP address from either
 845.105 -		 *         KAfInet or KAfInet6 family.
 845.106 -         *	@return a new instance.
 845.107 -         */
 845.108 -		IMPORT_C static	CSdpOriginField* NewLC( const TDesC8& aUserName, 
 845.109 -											    TInt64 aSessionId, 
 845.110 -											    TInt64 aSessionVersion, 
 845.111 -											    TInetAddr& aAddress );
 845.112 -
 845.113 -		/**
 845.114 -         *	Constructs a new origin field.
 845.115 -		 *	
 845.116 -         *	@param aUserName A valid user name value.
 845.117 -         *	@param aSessionId A valid session id value.
 845.118 -         *	@param aSessionVersion A valid announcement version value.
 845.119 -         *	@param aNetType A valid network type value (typically "IN").
 845.120 -		 *  @param aAddressType A valid address type value 
 845.121 -		 *         (typically "IP4" or "IP6").
 845.122 -		 *	@param aAddress A unicast IP Address, Fully 
 845.123 -         *         Qualified Domain Name (FQDN), or an other type of 
 845.124 -         *         address allowed for the address type.
 845.125 -         *	@return a new instance.
 845.126 -         */
 845.127 -		IMPORT_C static	CSdpOriginField* NewL( const TDesC8& aUserName, 
 845.128 -											TInt64 aSessionId, 
 845.129 -											TInt64 aSessionVersion, 
 845.130 -											RStringF aNetType, 
 845.131 -											RStringF aAddressType, 
 845.132 -											const TDesC8& aAddress );
 845.133 -
 845.134 -		/**
 845.135 -         *	Constructs a new origin field and adds the pointer to the cleanup 
 845.136 -         *  stack.
 845.137 -		 *	
 845.138 -         *	@param aUserName A valid user name value.
 845.139 -         *	@param aSessionId A valid session id value.
 845.140 -         *	@param aSessionVersion A valid announcement version value.
 845.141 -         *	@param aNetType A valid network type value (typically "IN").
 845.142 -		 *  @param aAddressType A valid address type value 
 845.143 -		 *         (typically "IP4" or "IP6").
 845.144 -		 *	@param aAddress A unicast IP Address, Fully Qualified Domain
 845.145 -		 *         Name (FQDN), or an other type of address allowed
 845.146 -		 *         for the address type.
 845.147 -         *	@return a new instance.
 845.148 -         */
 845.149 -		IMPORT_C static	CSdpOriginField* NewLC( const TDesC8& aUserName, 
 845.150 -											TInt64 aSessionId, 
 845.151 -											TInt64 aSessionVersion, 
 845.152 -											RStringF aNetType, 
 845.153 -											RStringF aAddressType, 
 845.154 -											const TDesC8& aAddress );
 845.155 -
 845.156 -		/**
 845.157 -		 *	Deletes the resources held by the instance.
 845.158 -		 */
 845.159 -		IMPORT_C ~CSdpOriginField();
 845.160 -
 845.161 -    public: // New functions
 845.162 -
 845.163 -		/**
 845.164 -		 *	Outputs the field formatted according to SDP syntax and including
 845.165 -		 *  the terminating CRLF.
 845.166 -		 * 
 845.167 -		 *	@param aStream Stream used for output. On return 
 845.168 -         *         the stream includes correctly formatted origin field.
 845.169 -		 */
 845.170 -		IMPORT_C void EncodeL( RWriteStream& aStream ) const;
 845.171 -
 845.172 -		/**
 845.173 -    	 *	Creates a new instance that is equal to the target.
 845.174 -		 *
 845.175 -		 *	@return a new instance.
 845.176 -		 */
 845.177 -		IMPORT_C CSdpOriginField* CloneL() const;
 845.178 -
 845.179 -		/**	
 845.180 -		 *	Compares this instance to another for equality.
 845.181 -		 *
 845.182 -		 *	@param aObj The instance to compare to.
 845.183 -		 *	@return ETrue if equal, EFalse if not.
 845.184 -		 */
 845.185 -		IMPORT_C TBool operator == ( const CSdpOriginField& aObj ) const;
 845.186 -
 845.187 -		/**
 845.188 -		 *	Gets the user name.
 845.189 -		 *
 845.190 -		 *	@return User name.
 845.191 -		 */
 845.192 -		IMPORT_C const TDesC8& UserName() const;
 845.193 -
 845.194 -		/**
 845.195 -		 *	Sets the user name.
 845.196 -		 *
 845.197 -		 *	@param aValue A valid user name value.
 845.198 -		 *	@leave KErrSdpCodecOriginField if aValue is not a valid user name.
 845.199 -		 */
 845.200 -		IMPORT_C void SetUserNameL( const TDesC8& aValue );
 845.201 -
 845.202 -		/**
 845.203 -		 *	Gets the session id of the origin field.
 845.204 -		 *  
 845.205 -		 *	@return Session id.
 845.206 -		 */
 845.207 -		IMPORT_C TInt64 SessionId() const;
 845.208 -
 845.209 -		/**
 845.210 -		 *	Sets the session id.
 845.211 -		 *
 845.212 -		 *	@param aValue A valid session id value.
 845.213 -		 */
 845.214 -		IMPORT_C void SetSessionId( TInt64 aValue );
 845.215 -		
 845.216 -		/**
 845.217 -		 *	Gets the announcement version.
 845.218 -		 *	
 845.219 -		 *	@return Version.
 845.220 -		 */
 845.221 -		IMPORT_C TInt64 Version() const;
 845.222 -
 845.223 -		/**
 845.224 -		 *	Sets the announcement version..
 845.225 -		 *
 845.226 -		 *	@param aValue A valid version value.
 845.227 -		 */
 845.228 -		IMPORT_C void SetVersion( TInt64 aValue );
 845.229 -
 845.230 -		/**
 845.231 -		 *	Gets the network type.
 845.232 -		 *
 845.233 -		 *	@return The network type from pre-defined SDP string 
 845.234 -         *          table or given by the user.
 845.235 -		 */
 845.236 -		IMPORT_C RStringF NetType() const;
 845.237 -
 845.238 -		/**
 845.239 -		 *	Gets the address type.
 845.240 -		 *
 845.241 -		 *	@return The address type from pre-defined SDP string 
 845.242 -         *          table or given by the user.
 845.243 -		 */
 845.244 -		IMPORT_C RStringF AddressType() const;
 845.245 -		
 845.246 -		/**
 845.247 -		 *	Gets the address.
 845.248 -		 *
 845.249 -		 *	@return Address as an IP address or null if it is
 845.250 -		 *          not an IP address. This may be e.g. when the address has 
 845.251 -		 *          been specified as a FQDN. In this case, the address can be 
 845.252 -		 *          accessed using the other getters.
 845.253 -		 */
 845.254 -		IMPORT_C const TInetAddr* InetAddress() const;
 845.255 -
 845.256 -		/**
 845.257 -		 *	Gets the address.
 845.258 -		 *
 845.259 -		 *  @return Address as a string.
 845.260 -		 */
 845.261 -		IMPORT_C const TDesC8& Address() const;
 845.262 -
 845.263 -		/**
 845.264 -		 *	Sets the address, network and address type.
 845.265 -		 *	Also sets the network type to "IN" and address type to "IP4" or 
 845.266 -		 *  "IP6" depending on the address family of aValue.
 845.267 -		 *
 845.268 -         *	@param aValue A unicast IP address from either KAfInet 
 845.269 -         *         or KAfInet6 family.
 845.270 -		 */
 845.271 -		IMPORT_C void SetInetAddress( const TInetAddr& aValue );
 845.272 -
 845.273 -		/**
 845.274 -		 *	Sets the address, network and address type.
 845.275 -		 *
 845.276 -		 *	@param aAddress A unicast IP Address, Fully Qualified Domain
 845.277 -		 *         Name (FQDN), or an other type of address allowed for the
 845.278 -		 *         address type.
 845.279 -         *	@param aNetType A valid network type value (typically "IN").
 845.280 -		 *  @param aAddressType A valid address type value 
 845.281 -		 *         (typically "IP4" or "IP6").
 845.282 -		 *	@leave KErrSdpCodecOriginField if aNetType or aAddressType are not
 845.283 -		 *		   valid tokens, or aAddress is invalid, or aAddress type 
 845.284 -		 *		   is not aligned with the address format
 845.285 -		 */
 845.286 -		IMPORT_C void SetAddressL( const TDesC8& aAddress, 
 845.287 -								   RStringF aNetType, 
 845.288 -								   RStringF aAddressType );
 845.289 -        
 845.290 -    public:     // Internal to codec
 845.291 -
 845.292 -        /**
 845.293 -         *  Externalizes the object to stream
 845.294 -         *
 845.295 -         *  @param aStream Stream where the object's state will be stored
 845.296 -         */
 845.297 -		void ExternalizeL( RWriteStream& aStream ) const;
 845.298 -
 845.299 -        /**
 845.300 -         *  Creates object from the stream data
 845.301 -         *
 845.302 -         *  @param aStream Stream where the object's state will be read	
 845.303 -         *  @return Initialized object
 845.304 -         */
 845.305 -		static CSdpOriginField* InternalizeL( RReadStream& aStream );
 845.306 -
 845.307 -	private:    // Constructors
 845.308 -
 845.309 -        /**
 845.310 -         *  Constructor
 845.311 -         */
 845.312 -		CSdpOriginField();
 845.313 -
 845.314 -        /**
 845.315 -         *  Second phase constructor. Parses the text string and initializes
 845.316 -         *  the member variables
 845.317 -         *         
 845.318 -         *  @param aText Line of text that will be parsed (ends on the newline)
 845.319 -         */
 845.320 -		void ConstructL( const TDesC8& aText );
 845.321 -        
 845.322 -        /**
 845.323 -         *  Second phase constructor. Constructs the object.
 845.324 -         *
 845.325 -         *  @param aUserName  A valid user name value.
 845.326 -         *  @param aSessionId A valid session id value.
 845.327 -         *  @param aSessionVersion A valid announcement version value.
 845.328 -         *  @param aAddress A unicast IP address from either
 845.329 -		 *                  KAfInet or KAfInet6 family.        
 845.330 -         */
 845.331 -		void ConstructL( const TDesC8& aUserName, 
 845.332 -						 TInt64 aSessionId, 
 845.333 -                         TInt64 aSessionVersion, 
 845.334 -						 TInetAddr& aUnicastAddress );
 845.335 -         
 845.336 -        /**                        
 845.337 -         *	Second phase constructor. Constructs the object.
 845.338 -		 *	
 845.339 -         *	@param aUserName  A valid user name value.
 845.340 -         *	@param aSessionId A valid session id value.
 845.341 -         *	@param aSessionVersion A valid announcement version value.
 845.342 -         *	@param aNetType A valid network type value (typically "IN").
 845.343 -		 *  @param aAddressType A valid address type value 
 845.344 -		 *         (typically "IP4" or "IP6").
 845.345 -		 *	@param aAddress A unicast IP Address, Fully Qualified Domain
 845.346 -		 *         Name (FQDN), or an other type of address allowed
 845.347 -		 *         for the address type.
 845.348 -         */
 845.349 -        void ConstructL( const TDesC8& aUserName, 
 845.350 -	                     TInt64 aSessionId, 
 845.351 -	                     TInt64 aSessionVersion, 
 845.352 -	                     RStringF aNetType, 
 845.353 -					     RStringF aAddressType, 
 845.354 -	                     const TDesC8& aAddress );
 845.355 -
 845.356 -        // These are unnecessary? Derived from CBase, prevents the use
 845.357 -		CSdpOriginField( const CSdpOriginField& ); // Hidden.
 845.358 -		CSdpOriginField& operator = ( const CSdpOriginField& ); // Hidden
 845.359 -
 845.360 -    private:        // New methods
 845.361 -
 845.362 -        /**
 845.363 -         *  Checks if the given address is valid
 845.364 -         *
 845.365 -         *  @param aAddress Address to be checked
 845.366 -         *  @return Valid address or not
 845.367 -         */
 845.368 -        TBool IsValidAddress( const TDesC8& aAddress ) const;   
 845.369 -        
 845.370 -        /**
 845.371 -         *  Checks if the given address is valid
 845.372 -         *
 845.373 -         *  @param aAddr Address to be checked
 845.374 -         *  @return Valid address or not
 845.375 -         */             
 845.376 -        TBool IsValidAddress( const TInetAddr& addr ) const;
 845.377 -
 845.378 -        /**
 845.379 -         *  Checks that address type matches with address format
 845.380 -         *
 845.381 -         *  @param aAddress Address
 845.382 -         *  @param aType Address type
 845.383 -         *  @param aPool String pool
 845.384 -         *  @return Type Matches with format or not
 845.385 -         */
 845.386 -        TBool TypeMatchesWithFormat( 
 845.387 -            const TDesC8& aAddress, const TDesC8& aType, 
 845.388 -            RStringPool aPool ) const;
 845.389 -
 845.390 -        /**
 845.391 -         *  Checks if the given username is valid
 845.392 -         *
 845.393 -         *  @param aUserName Username
 845.394 -         *  @return Validity of the given username
 845.395 -         */
 845.396 -        TBool IsValidUserName( const TDesC8& aUserName ) const;
 845.397 -
 845.398 -        /**
 845.399 -         *  Parses username, initializes iUserName
 845.400 -         *
 845.401 -         *  @param aArray Array containing all the elements
 845.402 -         */
 845.403 -        void ParseUserNameL( RArray<TPtrC8>& aArray );
 845.404 -
 845.405 -        /**
 845.406 -         *  Parses session ID and version, initializes iSessionId
 845.407 -         *  and iSessionVersion
 845.408 -         *
 845.409 -         *  @param aArray Array containing all the elements
 845.410 -         */
 845.411 -        void ParseSessionIDAndVersionL( RArray<TPtrC8>& aArray );
 845.412 -
 845.413 -        /**
 845.414 -         *  Parses network type and address type, initializes
 845.415 -         *  iNetType and iAddressType
 845.416 -         *
 845.417 -         *  @param aArray Array containing all the elements
 845.418 -         */
 845.419 -       void ParseNetTypeAndAddressTypeL( RArray<TPtrC8>& aArray );
 845.420 -
 845.421 -        /**
 845.422 -         *  Parses address, checks address against address type,
 845.423 -         *  initializes iAddress
 845.424 -         *
 845.425 -         *  @param aArray Array containing all the elements
 845.426 -         */
 845.427 -        void ParseAddressL( RArray<TPtrC8>& aArray );
 845.428 -
 845.429 -		inline CSdpOriginFieldPtrs& OriginFieldPtrs();
 845.430 -
 845.431 -		inline const CSdpOriginFieldPtrs& OriginFieldPtrs() const;
 845.432 -
 845.433 -		TInt64 Get63Msbs( const TDesC8& aDecimalValue ) const;
 845.434 -		void SetIPAddressType( const TInetAddr& aAddr );
 845.435 -
 845.436 -    private:    // Data
 845.437 -
 845.438 -        RStringPool iPool;
 845.439 -
 845.440 -        // <username>
 845.441 -		HBufC8* iUserName;
 845.442 -        // <session id>
 845.443 -		TInt64 iSessionId;
 845.444 -        // <version>
 845.445 -		TInt64 iSessionVersion;
 845.446 -        // <net type>
 845.447 -        RStringF iNetType;
 845.448 -        // <address type>        
 845.449 -        RStringF iAddressType;
 845.450 -        // <address>
 845.451 -        // Either one is used (this or iAddressType/iAddress combo)
 845.452 -        // Can be defined as mutable because this variable does not affect
 845.453 -        // to the state of the object, but it is needed as const pointer
 845.454 -        // is returned on InetAddr() method
 845.455 -		mutable TInetAddr iUnicastAddress;        
 845.456 -        TBuf8<KMaxAddressLength> iAddress; 
 845.457 -        // For configuring the address into TInetAddr
 845.458 -        TBuf<KMaxAddressLength> iAddress16;          
 845.459 -
 845.460 -		__DECLARE_TEST;
 845.461 -	};
 845.462 -
 845.463 -#endif // CSDPORIGINFIELD_H
   846.1 --- a/epoc32/include/sdprepeatfield.h	Tue Mar 16 16:12:26 2010 +0000
   846.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   846.3 @@ -1,211 +0,0 @@
   846.4 -/*
   846.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   846.6 -* All rights reserved.
   846.7 -* This component and the accompanying materials are made available
   846.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   846.9 -* which accompanies this distribution, and is available
  846.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  846.11 -*
  846.12 -* Initial Contributors:
  846.13 -* Nokia Corporation - initial contribution.
  846.14 -*
  846.15 -* Contributors:
  846.16 -*
  846.17 -* Description:
  846.18 -* Name          : SdpRepeatField.h
  846.19 -* Part of       : SDP Codec
  846.20 -* Interface     : SDK API, SDP Codec API
  846.21 -* Version       : 1.0
  846.22 -*
  846.23 -*/
  846.24 -
  846.25 -
  846.26 -
  846.27 -#ifndef CSDPREPEATFIELD_H
  846.28 -#define CSDPREPEATFIELD_H
  846.29 -
  846.30 -//  INCLUDES
  846.31 -#include <e32base.h>
  846.32 -#include <stringpool.h>
  846.33 -#include "_sdpdefs.h"
  846.34 -#include <sdptypedtime.h>
  846.35 -
  846.36 -// FORWARD DECLARATIONS
  846.37 -class RReadStream;
  846.38 -class RWriteStream;
  846.39 -
  846.40 -// CLASS DECLARATION
  846.41 -/**
  846.42 - *  @publishedAll
  846.43 - *  @released
  846.44 - *
  846.45 - *	This class encapsulates the repeat times field of the 
  846.46 - *  Session Description Protocol.
  846.47 - *
  846.48 - *	The normative reference for correct formatting and values is
  846.49 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  846.50 - *  member documentation. The implementation supports this normative
  846.51 - *  reference, but does not enforce it fully. 
  846.52 - *
  846.53 - *  @lib sdpcodec.lib
  846.54 - */
  846.55 -class CSdpRepeatField : public CBase
  846.56 -	{
  846.57 -    public: // Constructors and destructor
  846.58 -        /**
  846.59 -         *	Constructs a new repeat times field.
  846.60 -		 *	
  846.61 -         *	@param aText A string containing a correctly 
  846.62 -         *         formatted field value terminated by a CRLF.
  846.63 -         *	@return a new instance.
  846.64 -         */
  846.65 -		IMPORT_C static	CSdpRepeatField* DecodeL(const TDesC8& aText);
  846.66 -
  846.67 -        /**
  846.68 -         *	Constructs a new repeat times field and adds the pointer to the 
  846.69 -         *  cleanup stack.
  846.70 -		 *	
  846.71 -         *	@param aText A string containing a correctly 
  846.72 -         *         formatted field value terminated by a CRLF.
  846.73 -         *	@return a new instance.
  846.74 -         */
  846.75 -		IMPORT_C static	CSdpRepeatField* DecodeLC(const TDesC8& aText);
  846.76 -
  846.77 -        /**
  846.78 -         *	Constructs a new repeat times field.
  846.79 -		 *	
  846.80 -         *	@param aRepeatInterval Repeat interval value 
  846.81 -         *         greater than zero.
  846.82 -         *	@param aActiveDuration Active duration.
  846.83 -         *	@param aOffsets At least one time offset.
  846.84 -         *	@return a new instance.
  846.85 -         */
  846.86 -		IMPORT_C static	CSdpRepeatField* NewL(
  846.87 -                                        const TSdpTypedTime  aRepeatInterval,
  846.88 -										const TSdpTypedTime  aActiveDuration,
  846.89 -										const RArray<TSdpTypedTime>& aOffsets);
  846.90 -
  846.91 -        /**
  846.92 -         *	Constructs a new repeat times field and adds the pointer to the 
  846.93 -         *  cleanup stack.
  846.94 -		 *	
  846.95 -         *	@param aRepeatInterval Repeat interval value 
  846.96 -         *         greater than zero.
  846.97 -         *	@param aActiveDuration Active duration.
  846.98 -         *	@param aOffsets At least one time offset.
  846.99 -         *	@return a new instance.
 846.100 -         */
 846.101 -		IMPORT_C static	CSdpRepeatField* NewLC(
 846.102 -                                        const TSdpTypedTime  aRepeatInterval,
 846.103 -										const TSdpTypedTime aActiveDuration,
 846.104 -										const RArray<TSdpTypedTime>& aOffsets);
 846.105 -
 846.106 -		/**
 846.107 -		 *	Deletes the resources held by the instance.
 846.108 -		 */
 846.109 -		IMPORT_C ~CSdpRepeatField();
 846.110 -
 846.111 -    public: // New functions
 846.112 -		/**
 846.113 -		 *	Outputs the field formatted according to SDP syntax and including
 846.114 -		 *  the terminating CRLF.
 846.115 -		 * 
 846.116 -		 *	@param aStream Stream used for output. On return 
 846.117 -         *         the stream includes correctly formatted repeat field.
 846.118 -		 */
 846.119 -		IMPORT_C void EncodeL(RWriteStream& aStream) const;
 846.120 -
 846.121 -		/**
 846.122 -		 *	Creates a new instance that is equal to the target.
 846.123 -		 *
 846.124 -		 *	@return a new instance.
 846.125 -		 */
 846.126 -		IMPORT_C CSdpRepeatField * CloneL() const;
 846.127 -
 846.128 -		/**	
 846.129 -		 *	Compares this instance to another for equality.
 846.130 -		 *
 846.131 -		 *	@param aObj The instance to compare to.
 846.132 -		 *	@return ETrue if equal, EFalse if not.
 846.133 -		 */
 846.134 -		IMPORT_C TBool operator == (const CSdpRepeatField & aObj) const;
 846.135 -
 846.136 -		/**
 846.137 -		 *	Gets the repeat interval.
 846.138 -		 *
 846.139 -		 *	@return The repeat interval.
 846.140 -		 */
 846.141 -		IMPORT_C const TSdpTypedTime RepeatInterval() const;
 846.142 -
 846.143 -		/**
 846.144 -		 *	Sets the repeat interval.
 846.145 -		 *
 846.146 -         *	@param aValue Repeat interval value greater than zero.
 846.147 -         *	@leave KErrSdpCodecRepeatField if aValue is not positive integer 
 846.148 -         *         value.
 846.149 -		 */
 846.150 -		IMPORT_C void SetRepeatIntervalL(const TSdpTypedTime  aValue);
 846.151 -
 846.152 -		/**
 846.153 -		 *	Gets the active duration..
 846.154 -		 *
 846.155 -		 *	@return The active duration.
 846.156 -		 */
 846.157 -		IMPORT_C const TSdpTypedTime ActiveDuration() const;
 846.158 -
 846.159 -		/**
 846.160 -		 *	Sets the active duration.
 846.161 -		 *
 846.162 -         *	@param Active duration.
 846.163 -		 */
 846.164 -		IMPORT_C void SetActiveDuration(const TSdpTypedTime aValue);
 846.165 -
 846.166 -		/**
 846.167 -		 *	Gets the array of time offsets.
 846.168 -		 *  This array is used directly for element insertion and removal.
 846.169 -		 *
 846.170 -		 *	@return The offsets.
 846.171 -		 */
 846.172 -		IMPORT_C const RArray<TSdpTypedTime>& TimeOffsets() const;
 846.173 -
 846.174 -		/**
 846.175 -		 *	Sets the time offsets.
 846.176 -		 *
 846.177 -         *	@param aOffsets At least one time offset.
 846.178 -		 */
 846.179 -		IMPORT_C void SetTimeOffsetsL(const RArray<TSdpTypedTime>& aValue);
 846.180 -
 846.181 -    public:
 846.182 -		/**
 846.183 -         *  Externalizes the object to stream
 846.184 -         *
 846.185 -         *  @param aStream Stream where the object's state will be stored
 846.186 -         */
 846.187 -		void ExternalizeL(RWriteStream& aStream) const;
 846.188 -		
 846.189 -		/**
 846.190 -         *  Creates object from the stream data
 846.191 -         *
 846.192 -         *  @param aStream Stream where the object's state will be read	
 846.193 -         *  @return Initialized object
 846.194 -         */
 846.195 -		static CSdpRepeatField* InternalizeL(RReadStream& aStream);
 846.196 -
 846.197 -	private:
 846.198 -		CSdpRepeatField(const TSdpTypedTime aRepeatInterval,
 846.199 -						const TSdpTypedTime aActiveDuration);
 846.200 -		CSdpRepeatField();
 846.201 -		void ConstructL(const TDesC8& aText);
 846.202 -		void ConstructL(const RArray<TSdpTypedTime>& aOffsets);
 846.203 -        
 846.204 -
 846.205 -    private: // Data
 846.206 -        RStringPool iPool;
 846.207 -		TSdpTypedTime iRepeatInterval;
 846.208 -		TSdpTypedTime iActiveDuration;
 846.209 -		RArray<TSdpTypedTime> iTimeOffsets;
 846.210 -
 846.211 -		__DECLARE_TEST;
 846.212 -	};
 846.213 -
 846.214 -#endif // CSDPREPEATFIELD_H
   847.1 --- a/epoc32/include/sdprtpmapvalue.h	Tue Mar 16 16:12:26 2010 +0000
   847.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   847.3 @@ -1,117 +0,0 @@
   847.4 -/*
   847.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   847.6 -* All rights reserved.
   847.7 -* This component and the accompanying materials are made available
   847.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   847.9 -* which accompanies this distribution, and is available
  847.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  847.11 -*
  847.12 -* Initial Contributors:
  847.13 -* Nokia Corporation - initial contribution.
  847.14 -*
  847.15 -* Contributors:
  847.16 -*
  847.17 -* Description:
  847.18 -* Name          : SdpRtpmapValue.h
  847.19 -* Part of       : SDP Codec
  847.20 -* Interface     : SDK API, SDP Codec API
  847.21 -* Version       : 1.0
  847.22 -*
  847.23 -*/
  847.24 -
  847.25 -
  847.26 -
  847.27 -#ifndef TSDPRTPMAPVALUE_H
  847.28 -#define TSDPRTPMAPVALUE_H
  847.29 -
  847.30 -// INCLUDES
  847.31 -#include <e32std.h>
  847.32 -#include <stringpool.h>
  847.33 -#include "_sdpdefs.h"
  847.34 -
  847.35 -// FORWARD DECLARATIONS
  847.36 -class RWriteStream;
  847.37 -
  847.38 -// CLASS DECLARATION
  847.39 -/**
  847.40 - *  @publishedAll
  847.41 - *  @released
  847.42 - *
  847.43 - *	Utility class for manipulating the value of an rtpmap-attribute.
  847.44 - *
  847.45 - *	The normative reference for correct formatting and values is
  847.46 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  847.47 - *  member documentation. The implementation supports this normative
  847.48 - *  reference, but does not enforce it fully. 
  847.49 - *
  847.50 - *  @lib sdpcodec.lib
  847.51 - */
  847.52 -class TSdpRtpmapValue
  847.53 -	{
  847.54 -    public: // Constructors and destructor
  847.55 -
  847.56 -		/**
  847.57 -		 *	Initializes the instance to refer to the given rtpmap components.
  847.58 -		 *	The parameters must stay in scope as long as this instance exists.
  847.59 -		 *	Otherwise, the member variables of this class will point to
  847.60 -		 *	a released memory.
  847.61 -		 *  
  847.62 -		 *	@param aEncodingName Valid rtpmap encoding name value.	
  847.63 -		 *	@param aClockrate Valid rtpmap clockrate value.	
  847.64 -		 *	@param aEncodingParameters Valid rtpmap encoding 
  847.65 -         *         parameter list.	
  847.66 -		 */
  847.67 -		IMPORT_C TSdpRtpmapValue( 
  847.68 -						const TPtrC8& aEncodingName,
  847.69 -						const TPtrC8& aClockrate,
  847.70 -						const TPtrC8& aEncodingParameters );
  847.71 -
  847.72 -    public: // New functions
  847.73 -
  847.74 -		/**
  847.75 -		 *	Tries to parse a string as an rtpmap attribute value up to the end 
  847.76 -		 *	of the string or CRLF, whichever comes first, and set pointers to 
  847.77 -		 *	the components found. The parameter must stay in scope as long as 
  847.78 -         *  this instance exists. Otherwise, the member variables of this class 
  847.79 -         *  will point to a released memory.
  847.80 -		 *         
  847.81 -		 *	@param aText String containing the value of an rtpmap attribute.
  847.82 -         *  @return a new instance 
  847.83 -		 *	@leave  KErrArgument if parsing fails.
  847.84 -		 */
  847.85 -		IMPORT_C static TSdpRtpmapValue DecodeL( const TDesC8& aText );
  847.86 -
  847.87 -		/**
  847.88 -		 *	Outputs the attribute value formatted according to SDP syntax.
  847.89 -		 *  The field terminating CRLF is not included in the output.
  847.90 -         *  When constructing CSdpFmtAttributeField, return value of this 
  847.91 -         *  function can be used as aValue in CSdpFmtAttributeField::NewL
  847.92 -         *  (RStringF aAttribute, const TDesC8& aFormat, const TDesC8& aValue)
  847.93 -         *  function.
  847.94 -		 * 
  847.95 -         *  @return Encoded value. Ovnership of buffer is changed to caller.
  847.96 -		 */
  847.97 -		IMPORT_C HBufC8* EncodeL() const;        
  847.98 -
  847.99 -    public: // Data
 847.100 -
 847.101 -		/** 
 847.102 -		* Encoding name part of an rtpmap value 
 847.103 -		* @internalComponent
 847.104 -		*/
 847.105 -		TPtrC8 iEncName;
 847.106 -
 847.107 -		/** 
 847.108 -		* Clockrate part of an rtpmap value. 
 847.109 -		* @internalComponent
 847.110 -		*/
 847.111 -		TPtrC8 iClockrate;
 847.112 -
 847.113 -		/** 
 847.114 -		* Encoding parameters part of an rtpmap value. 
 847.115 -		* @internalComponent
 847.116 -		*/
 847.117 -		TPtrC8 iEncParams;
 847.118 -	};
 847.119 -
 847.120 -#endif // TSDPRTPMAPVALUE_H
   848.1 --- a/epoc32/include/sdptimefield.h	Tue Mar 16 16:12:26 2010 +0000
   848.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   848.3 @@ -1,230 +0,0 @@
   848.4 -/*
   848.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   848.6 -* All rights reserved.
   848.7 -* This component and the accompanying materials are made available
   848.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   848.9 -* which accompanies this distribution, and is available
  848.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  848.11 -*
  848.12 -* Initial Contributors:
  848.13 -* Nokia Corporation - initial contribution.
  848.14 -*
  848.15 -* Contributors:
  848.16 -*
  848.17 -* Description:
  848.18 -* Name          : SdpTimeField.h
  848.19 -* Part of       : SDP Codec
  848.20 -* Interface     : SDK API, SDP Codec API
  848.21 -* Version       : 1.0
  848.22 -*
  848.23 -*/
  848.24 -
  848.25 -
  848.26 -
  848.27 -#ifndef CSDPTIMESFIELD_H
  848.28 -#define CSDPTIMESFIELD_H
  848.29 -
  848.30 -//  INCLUDES
  848.31 -#include <e32base.h>
  848.32 -#include <stringpool.h>
  848.33 -#include "_sdpdefs.h"
  848.34 -
  848.35 -// FORWARD DECLARATIONS
  848.36 -class RReadStream;
  848.37 -class RWriteStream;
  848.38 -class CSdpRepeatField;
  848.39 -
  848.40 -// CLASS DECLARATION
  848.41 -/**
  848.42 - *  @publishedAll
  848.43 - *  @released
  848.44 - *
  848.45 - *	This class encapsulates the time field and the related zero or 
  848.46 - *  more repeat times fields and an optional time zone adjustment
  848.47 - *  field of the Session Description Protocol.
  848.48 - *
  848.49 - *	The normative reference for correct formatting and values is
  848.50 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  848.51 - *  member documentation. The implementation supports this normative
  848.52 - *  reference, but does not enforce it fully. 
  848.53 - *
  848.54 - *  @lib sdpcodec.lib
  848.55 - */
  848.56 -class CSdpTimeField : public CBase
  848.57 -	{
  848.58 -    public: // Constructors and destructor
  848.59 -        /**
  848.60 -         *	Constructs a time field.
  848.61 -		 * 
  848.62 -         *	@param aText A correctly formatted time field value
  848.63 -         *         terminated by a CRLF followed by zero or more repeat 
  848.64 -         *         times and zero or one time zone adjustment fields 
  848.65 -         *         separeted by a CRLF.
  848.66 -		 *	@param aRecurse Flag to specify whether to decode subfields 
  848.67 -		 *         also (ETrue) or only the time field (EFalse).
  848.68 -         *	@return a new instance.
  848.69 -         */
  848.70 -		IMPORT_C static CSdpTimeField * DecodeL(const TDesC8& aText, 
  848.71 -                                                TBool aRecurse = ETrue);
  848.72 -
  848.73 -        /**
  848.74 -         *	Constructs a time field and adds the pointer to the cleanup stack.
  848.75 -		 *	
  848.76 -         *	@param aText A correctly formatted time field value 
  848.77 -         *         terminated by a CRLF followed by zero or more repeat 
  848.78 -         *         times and zero or one time zone adjustment fields 
  848.79 -         *         separeted by a CRLF.
  848.80 -		 *	@param aRecurse Flag to specify whether to decode subfields 
  848.81 -		 *         also (ETrue) or only the time field (EFalse).
  848.82 -         *	@return a new instance.
  848.83 -         */
  848.84 -		IMPORT_C static CSdpTimeField * DecodeLC(const TDesC8& aText,
  848.85 -                                                TBool aRecurse = ETrue);
  848.86 -
  848.87 -        /**
  848.88 -         *	Constructs a time field.
  848.89 -		 *	
  848.90 -         *	@param aStartTime Session start time.
  848.91 -         *	@param aStopTime Session end time that must be 
  848.92 -         *         greater than or equal to the start time.
  848.93 -         *	@return a new instance.
  848.94 -         */
  848.95 -		IMPORT_C static CSdpTimeField * NewL(const TDesC8& aStartTime,
  848.96 -									        const TDesC8& aStopTime);
  848.97 -
  848.98 -        /**
  848.99 -         *	Constructs a time field and adds the pointer to the cleanup stack.
 848.100 -		 *	
 848.101 -         *	@param aStartTime Session start time.
 848.102 -         *	@param aStopTime Session end time that must be 
 848.103 -         *         greater than or equal to the start time.
 848.104 -         *	@return a new instance.
 848.105 -         */
 848.106 -		IMPORT_C static CSdpTimeField * NewLC(const TDesC8& aStartTime,
 848.107 -									        const TDesC8& aStopTime);
 848.108 -
 848.109 -		/**
 848.110 -		 *	Deletes the resources held by the instance.
 848.111 -		 */
 848.112 -		IMPORT_C ~CSdpTimeField();
 848.113 -
 848.114 -    public: // New functions
 848.115 -		/**
 848.116 -		 *	Outputs the field formatted according to SDP syntax and including
 848.117 -		 *  the terminating CRLF. Optionally output also the related repeat
 848.118 -		 *  times.
 848.119 -		 * 
 848.120 -		 *	@param aStream Stream used for output. On return 
 848.121 -         *         the stream includes correctly formatted time field with 
 848.122 -         *         repeat fields if aRecurse is ETrue.
 848.123 -		 *	@param aRecurse Flag to specify whether to output subfields
 848.124 -		 *         also (ETrue) or only the time field (EFalse).
 848.125 -		 */
 848.126 -		IMPORT_C void EncodeL(RWriteStream& aStream, TBool aRecurse = ETrue) const;
 848.127 -
 848.128 -		/**
 848.129 -		 *	Creates a new instance that is equal to the target.
 848.130 -		 *  Optionally also related repeat times are cloned.
 848.131 -		 *
 848.132 -		 *	@param aRecurse Flag to specify whether to clone subfields 
 848.133 -		 *         also (ETrue) or only the time field (EFalse).
 848.134 -		 *	@return a new instance.
 848.135 -		 */
 848.136 -		IMPORT_C CSdpTimeField * CloneL(TBool aRecurse = ETrue) const;
 848.137 -
 848.138 -		/**	
 848.139 -		 *	Compares this instance to another for equality. Subfields are
 848.140 -		 *	included in comparison if present.
 848.141 -		 *
 848.142 -		 *	@param aObj The instance to compare to.
 848.143 -		 *	@return ETrue if equal, EFalse if not.
 848.144 -		 */
 848.145 -		IMPORT_C TBool operator == (const CSdpTimeField & aObj) const;
 848.146 -
 848.147 -		/**
 848.148 -		 *	Checks the consistency of the time description and it's subfields.
 848.149 -		 *.
 848.150 -		 *	@return	ETrue if time description is valid and EFalse if not.
 848.151 -		 */
 848.152 -		IMPORT_C TBool IsValid() const;
 848.153 -
 848.154 -		/**
 848.155 -		 *	Gets the session start time.
 848.156 -		 *
 848.157 -		 *	@return The session start time.
 848.158 -		 */
 848.159 -		IMPORT_C const TDesC8& StartTime() const;
 848.160 -
 848.161 -		/**
 848.162 -		 *	Gets the session stop time.
 848.163 -		 *
 848.164 -		 *	@return The session stop time.
 848.165 -		 */
 848.166 -		IMPORT_C const TDesC8& StopTime() const;
 848.167 -
 848.168 -		/**
 848.169 -		 *	Sets the session start and stop times.
 848.170 -		 *
 848.171 -         *	@param aStartTime Session start time..
 848.172 -         *	@param aStopTime Session end time that must be 
 848.173 -         *         greater than or equal to the start time.
 848.174 -		 *	@leave KErrSdpCodecTimeField if start time and stop time are not 
 848.175 -         *         correct as defined draft-ietf-mmusic-sdp-new-14.
 848.176 -		 */
 848.177 -		IMPORT_C void SetTimesL(const TDesC8& aStartTime, const TDesC8& aStopTime);
 848.178 -
 848.179 -		/**
 848.180 -		 *	Gets the set of repeat times fields related to this time field.
 848.181 -		 *  This array is used directly for element insertion and removal.
 848.182 -		 *
 848.183 -		 *	The objects referenced from the array are owned by the media field
 848.184 -		 *  instance and must not be deleted. An object can be removed from the 
 848.185 -		 *  media description by setting the corresponding element to zero. By
 848.186 -		 *  doing so, the calling party receives ownership of the removed object.
 848.187 -		 *
 848.188 -		 *	@return The set of repeat fields.
 848.189 -		 */
 848.190 -		IMPORT_C RPointerArray<CSdpRepeatField>& RepeatFields();
 848.191 -	
 848.192 -    public:
 848.193 -		/**
 848.194 -         *  Externalizes the object to stream
 848.195 -         *
 848.196 -         *  @param aStream Stream where the object's state will be stored
 848.197 -         */
 848.198 -		void ExternalizeL(RWriteStream& aStream) const;
 848.199 -		
 848.200 -		/**
 848.201 -         *  Creates object from the stream data
 848.202 -         *
 848.203 -         *  @param aStream Stream where the object's state will be read
 848.204 -         *  @return Initialized object
 848.205 -         */
 848.206 -		static CSdpTimeField* InternalizeL(RReadStream& aStream);
 848.207 -        
 848.208 -        /**
 848.209 -         *  Creates object from the stream data.
 848.210 -         *	Does the "2nd phase construction" of internalization.
 848.211 -         *
 848.212 -         *  @param aStream Stream where the object's state will be read
 848.213 -         */
 848.214 -        void DoInternalizeL(RReadStream& aStream);
 848.215 -
 848.216 -	private:
 848.217 -   		CSdpTimeField();
 848.218 -
 848.219 -		void ConstructL(const TDesC8& aText, TBool aRecurse=ETrue);
 848.220 -		void ConstructL(const TDesC8& aStartTime, const TDesC8& aStopTime);
 848.221 -
 848.222 -        TBool RepeatFieldsCompare(const CSdpTimeField& aObj) const;
 848.223 -
 848.224 -    private: // Data
 848.225 -		HBufC8* iStartTime;
 848.226 -		HBufC8* iStopTime;
 848.227 -		RPointerArray<CSdpRepeatField> iRFields;
 848.228 -        RStringPool iStringPool;
 848.229 -
 848.230 -		__DECLARE_TEST;
 848.231 -	};
 848.232 -
 848.233 -#endif // CSDPTIMESFIELD_H
   849.1 --- a/epoc32/include/sdptypedtime.h	Tue Mar 16 16:12:26 2010 +0000
   849.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   849.3 @@ -1,143 +0,0 @@
   849.4 -/*
   849.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   849.6 -* All rights reserved.
   849.7 -* This component and the accompanying materials are made available
   849.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   849.9 -* which accompanies this distribution, and is available
  849.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  849.11 -*
  849.12 -* Initial Contributors:
  849.13 -* Nokia Corporation - initial contribution.
  849.14 -*
  849.15 -* Contributors:
  849.16 -*
  849.17 -* Description:
  849.18 -* Name          : SdpTypedTime.h
  849.19 -* Part of       : SDP Codec
  849.20 -* Interface     : SDK API, SDP Codec API
  849.21 -* Version       : 1.0
  849.22 -*
  849.23 -*/
  849.24 -
  849.25 -
  849.26 -
  849.27 -#ifndef TSDPTYPEDTIME_H
  849.28 -#define TSDPTYPEDTIME_H
  849.29 -
  849.30 -//  INCLUDES
  849.31 -#include <e32std.h>
  849.32 -#include "_sdpdefs.h"
  849.33 -
  849.34 -// FORWARD DECLARATIONS
  849.35 -class RReadStream;
  849.36 -class RWriteStream;
  849.37 -
  849.38 -// CLASS DECLARATION
  849.39 -/**
  849.40 - *  @publishedAll
  849.41 - *  @released
  849.42 - *
  849.43 - *	This class implements the typed time element of the Session
  849.44 - *	Description Protocol.
  849.45 - *
  849.46 - *	The normative reference for correct formatting and values is
  849.47 - *	draft-ietf-mmusic-sdp-new-14 unless specified otherwise in
  849.48 - *  member documentation. The implementation supports this normative
  849.49 - *  reference, but does not enforce it fully. 
  849.50 - *
  849.51 - *  @lib sdpcodec.lib
  849.52 - */
  849.53 -class TSdpTypedTime
  849.54 -	{
  849.55 -    public: // enums
  849.56 -
  849.57 -        /** Time units. */
  849.58 -        enum TUnit
  849.59 -            {
  849.60 -            ETimeUnitDays,      /** d */
  849.61 -            ETimeUnitHours,     /** h */
  849.62 -		    ETimeUnitMinutes,   /** m */
  849.63 -		    ETimeUnitSeconds,   /** s */
  849.64 -		    ETimeUnitNone,
  849.65 -            };
  849.66 -
  849.67 -    public: // Constructors and destructor
  849.68 -		/**
  849.69 -		 *	Constructs a typed time equal to zero and with no time unit set.
  849.70 -		 */
  849.71 -		IMPORT_C TSdpTypedTime();
  849.72 -
  849.73 -		/**
  849.74 -		 *	Constructs a typed time equal to specified value and time unit.
  849.75 -		 *
  849.76 -		 *	@param aValue Time value.
  849.77 -		 *	@param aUnit Time unit.
  849.78 -		 */
  849.79 -		IMPORT_C TSdpTypedTime(TInt64 aValue, TUnit aUnit);
  849.80 -
  849.81 -    public: // New functions
  849.82 -		/**	
  849.83 -		 *	Compares this instance to another for equality.
  849.84 -		 *
  849.85 -		 *	@param aObj Another instance to compare with.
  849.86 -		 *	@return ETrue if equal, EFalse if not.
  849.87 -		 */
  849.88 -		IMPORT_C TBool operator == (const TSdpTypedTime& aObj) const;
  849.89 -
  849.90 -		/**
  849.91 -		 *	Sets the typed time value.
  849.92 -		 *
  849.93 -		 *	@param aValue Time value.
  849.94 -		 *	@param aUnit Time unit.
  849.95 -		 */
  849.96 -		IMPORT_C void SetValue(TInt64 aValue, TUnit aUnit);
  849.97 -
  849.98 -    public:
  849.99 -		
 849.100 -		/**
 849.101 -         *  Externalizes the object to stream
 849.102 -         *
 849.103 -         *  @param aStream Stream where the object's state will be stored
 849.104 -         */
 849.105 -		void ExternalizeL(RWriteStream& aStream) const;
 849.106 -		
 849.107 -		/**
 849.108 -         *  Creates object from the stream data
 849.109 -         *
 849.110 -         *  @param aStream Stream where the object's state will be read
 849.111 -         *  @return Initialized object
 849.112 -         */
 849.113 -		static TSdpTypedTime InternalizeL(RReadStream& aStream);
 849.114 -        
 849.115 -        /**
 849.116 -		 *	Output the field formatted according to SDP syntax and including
 849.117 -		 *  the terminating CRLF.
 849.118 -		 * 
 849.119 -		 *	@param aStream	Stream used for output.
 849.120 -		 */
 849.121 -        void EncodeL(RWriteStream& aStream) const;
 849.122 -        
 849.123 -        /**
 849.124 -         *	Construct a new origin field.
 849.125 -		 *		 
 849.126 -         *	@param aText A string containing a correctly formatted field value
 849.127 -		 *               terminated by a CRLF.
 849.128 -         *	@return The new instance.
 849.129 -         */
 849.130 -        static TSdpTypedTime DecodeL(const TDesC8& aText);
 849.131 -
 849.132 -    public: // Data
 849.133 -    
 849.134 -        /**
 849.135 -        * @internalComponent
 849.136 -        */
 849.137 -		TInt64 iValue;
 849.138 -		
 849.139 -		/**
 849.140 -		* @internalComponent
 849.141 -		*/
 849.142 -		TInt iUnit;
 849.143 -
 849.144 -	};
 849.145 -
 849.146 -#endif // TSDPTYPEDTIME_H
   850.1 --- a/epoc32/include/sendas2.h	Tue Mar 16 16:12:26 2010 +0000
   850.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   850.3 @@ -1,30 +0,0 @@
   850.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   850.5 -// All rights reserved.
   850.6 -// This component and the accompanying materials are made available
   850.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   850.8 -// which accompanies this distribution, and is available
   850.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  850.10 -//
  850.11 -// Initial Contributors:
  850.12 -// Nokia Corporation - initial contribution.
  850.13 -//
  850.14 -// Contributors:
  850.15 -//
  850.16 -// Description:
  850.17 -//
  850.18 -
  850.19 -
  850.20 -
  850.21 -/**
  850.22 - @file
  850.23 - @publishedAll
  850.24 - @released
  850.25 -*/
  850.26 -#ifndef __SENDAS2_H__
  850.27 -#define __SENDAS2_H__
  850.28 -
  850.29 -#include <rsendas.h>
  850.30 -#include <rsendasmessage.h>
  850.31 -#include <csendasmessagetypes.h>
  850.32 -
  850.33 -#endif //__SENDAS2_H__
   851.1 --- a/epoc32/include/sendasserver.rh	Tue Mar 16 16:12:26 2010 +0000
   851.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   851.3 @@ -1,35 +0,0 @@
   851.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   851.5 -// All rights reserved.
   851.6 -// This component and the accompanying materials are made available
   851.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   851.8 -// which accompanies this distribution, and is available
   851.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  851.10 -//
  851.11 -// Initial Contributors:
  851.12 -// Nokia Corporation - initial contribution.
  851.13 -//
  851.14 -// Contributors:
  851.15 -//
  851.16 -// Description:
  851.17 -//
  851.18 -
  851.19 -
  851.20 -
  851.21 -/**
  851.22 - @file
  851.23 - @publishedAll
  851.24 - @released
  851.25 -*/
  851.26 -
  851.27 -
  851.28 -#ifndef __SENDASSERVER_RH__
  851.29 -#define __SENDASSERVER_RH__
  851.30 -
  851.31 -STRUCT SENDAS_RES
  851.32 -	{
  851.33 -	LONG version;
  851.34 -	LONG editUtilsUid;
  851.35 -	LONG notifierUid;
  851.36 -	}
  851.37 -
  851.38 -#endif // __SENDASSERVER_RH__
   852.1 --- a/epoc32/include/sip.h	Tue Mar 16 16:12:26 2010 +0000
   852.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   852.3 @@ -1,162 +0,0 @@
   852.4 -/*
   852.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   852.6 -* All rights reserved.
   852.7 -* This component and the accompanying materials are made available
   852.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   852.9 -* which accompanies this distribution, and is available
  852.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  852.11 -*
  852.12 -* Initial Contributors:
  852.13 -* Nokia Corporation - initial contribution.
  852.14 -*
  852.15 -* Contributors:
  852.16 -*
  852.17 -* Description:
  852.18 -* Name        : sip.h
  852.19 -* Part of     : SIP Client
  852.20 -* Interface   : SDK API, SIP Client API
  852.21 -* Version     : 2.0
  852.22 -*
  852.23 -*/
  852.24 -
  852.25 -
  852.26 -
  852.27 -#ifndef CSIP_H
  852.28 -#define CSIP_H
  852.29 -
  852.30 -// INCLUDES
  852.31 -#include <e32base.h>
  852.32 -#include "_sipcodecdefs.h"
  852.33 -
  852.34 -// FORWARD DECLARATIONS
  852.35 -class CDesC8Array;
  852.36 -class MSIPObserver;
  852.37 -class CSIPConnection;
  852.38 -class CSIPImplementation;
  852.39 -
  852.40 -// CLASS DECLARATION
  852.41 -
  852.42 -/**
  852.43 -*  @publishedAll
  852.44 -*  @released
  852.45 -*
  852.46 -*  Class for connecting to SIP server.
  852.47 -*
  852.48 -*  This class provides the connection to the SIP server and
  852.49 -*  provides functions for quering supported SIP security mechanisms and
  852.50 -*  the support of signalling compression (SigComp).
  852.51 -*
  852.52 -*  Note that the implementation uses strings defined in the SIP Codec
  852.53 -*  string pool. During instantiation the class will open SIP codec string pool 
  852.54 -*  for getting static strings and getting and setting dynamic strings.
  852.55 -* 
  852.56 -*  The user can create only one instance of this class. (a singleton class).
  852.57 -*
  852.58 -*  @lib sipclient.lib
  852.59 -*/
  852.60 -class CSIP : public CBase
  852.61 -	{
  852.62 -    public: // Constructors and destructor
  852.63 -
  852.64 -	    /**
  852.65 -        * Two-phased constructor.
  852.66 -		* @param aUid an unique id that identifies client
  852.67 -		* @param aObserver a observer for asynchronous event
  852.68 -        * @return New object, ownership is transferred
  852.69 -        * @capability WriteDeviceData
  852.70 -        */
  852.71 -		IMPORT_C static CSIP* NewL(const TUid& aUid,
  852.72 -                                   MSIPObserver& aObserver);
  852.73 -
  852.74 -	    /**
  852.75 -        * Two-phased constructor.
  852.76 -		* Constructs an object and adds the pointer to the cleanup stack.
  852.77 -		* @param aUid an unique id that identifies client
  852.78 -		* @param aObserver a observer for asynchronous event
  852.79 -        * @return New object, ownership is transferred
  852.80 -        * @capability WriteDeviceData
  852.81 -        */
  852.82 -		IMPORT_C static CSIP* NewLC(const TUid& aUid,
  852.83 -                                    MSIPObserver& aObserver);                                   
  852.84 -
  852.85 -        /**
  852.86 -        * Destructor.               
  852.87 -        */
  852.88 -		IMPORT_C ~CSIP();
  852.89 -
  852.90 -    public: // New functions
  852.91 -
  852.92 -		/**
  852.93 -		* Gets all supported security mechanisms
  852.94 -		* @return supported SIP security mechanisms names (e.g. digest);
  852.95 -        *         the ownership is transferred
  852.96 -		*/
  852.97 -		IMPORT_C CDesC8Array* SupportedSecurityMechanismsL() const;
  852.98 -
  852.99 -		/**
 852.100 -		* Checks if the signalling compression (SigComp) is supported.
 852.101 -        * Leaves on failure with a system wide error code.
 852.102 -		* @return ETrue if supported, EFalse otherwise
 852.103 -		*/
 852.104 -		IMPORT_C TBool IsSigCompSupportedL() const;
 852.105 -
 852.106 -		/**
 852.107 -		* Gets negotiated security mechanism with the next hop
 852.108 -		* on the signaling path.
 852.109 -		* @param aHop the next hop's FQDN or numeric IP address
 852.110 -		* @return negotiated security mechanism or zero-pointer in case no
 852.111 -		*		  security mechanism was negotiated with the next hop;
 852.112 -		*		  the ownership is transferred
 852.113 -		*/
 852.114 -		IMPORT_C HBufC8* NegotiatedSecurityMechanismL(const TDesC8& aHop);
 852.115 -
 852.116 -		/**
 852.117 -		* Checks if the user has a connection created for given IAP-id
 852.118 -		* @param aIapId IAP-id
 852.119 - 		* @return sip connection or 0-pointer if connection does not exist.
 852.120 -        *         Ownership is not transferred.
 852.121 -		*/
 852.122 -		IMPORT_C CSIPConnection* Connection(TUint32 aIapId) const;
 852.123 -		
 852.124 -        /*
 852.125 -        * By default the SIP built-in security mechanisms are enabled.
 852.126 -        * @param aEnabled if set to EFalse the build-in SIP security handling 
 852.127 -        *        mechanism is disabled.
 852.128 -        */
 852.129 -        IMPORT_C void SetSecurityHandlingL(TBool aEnabled);
 852.130 -
 852.131 -        /*
 852.132 -        * Tests if SIP security handling mechanism is enabled/disabled
 852.133 -        * @return ETrue if built-in mechanisms are enabled, EFalse otherwise.
 852.134 -        */
 852.135 -        IMPORT_C TBool IsSecurityHandlingEnabled() const;		
 852.136 -
 852.137 -	public: // New functions, for internal use
 852.138 -
 852.139 -		/**
 852.140 -		* Returns the CSIPImplementation.
 852.141 -		*
 852.142 - 		* @return CSIPImplementation
 852.143 -		*/
 852.144 -		CSIPImplementation& Implementation();
 852.145 -		
 852.146 -    private: // Constructors
 852.147 -        CSIP();
 852.148 -
 852.149 -        void ConstructL(const TUid& aUid, MSIPObserver& aObserver);
 852.150 -
 852.151 -	private: // Data
 852.152 -		CSIPImplementation* iImplementation;
 852.153 -
 852.154 -	private: // For testing purposes
 852.155 -
 852.156 -	    UNIT_TEST(CSIP_Test)
 852.157 -        UNIT_TEST(CSIPRegistrationBinding_Test)
 852.158 -        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 852.159 -        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 852.160 -        UNIT_TEST(CSIPReferDialogAssoc_Test)
 852.161 -
 852.162 -		__DECLARE_TEST;
 852.163 -		};
 852.164 -
 852.165 -#endif
   853.1 --- a/epoc32/include/sip_subconevents.h	Tue Mar 16 16:12:26 2010 +0000
   853.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   853.3 @@ -1,141 +0,0 @@
   853.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   853.5 -// All rights reserved.
   853.6 -// This component and the accompanying materials are made available
   853.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   853.8 -// which accompanies this distribution, and is available
   853.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  853.10 -//
  853.11 -// Initial Contributors:
  853.12 -// Nokia Corporation - initial contribution.
  853.13 -//
  853.14 -// Contributors:
  853.15 -//
  853.16 -// Description:
  853.17 -// SIPSCPR_subconevents.h
  853.18 -// SIP extension events definition
  853.19 -// 
  853.20 -//
  853.21 -
  853.22 -
  853.23 -
  853.24 -/**
  853.25 - @file
  853.26 - @publishedAll
  853.27 - @released since v9.2
  853.28 -*/
  853.29 - 
  853.30 -#ifndef SIPSCPR_SUBCONEVENTS_H
  853.31 -#define SIPSCPR_SUBCONEVENTS_H
  853.32 -
  853.33 -#include <es_sock.h>
  853.34 -#include <comms-infras/metabuffer.h>
  853.35 -
  853.36 -/** The numeric value of ECOM plugin identifier for this SubConnection SIP event parameter.See the assisting *.rss file. */
  853.37 -const TInt KSubConSIPEventsUid = 0x10274CAE;
  853.38 -
  853.39 -/** The numeric value of Response event type identifier for SIP extension parameter set  */
  853.40 -const TInt KSubConSIPResponseEventType = 1;
  853.41 -
  853.42 -/** The numeric value of AuthenticationRequired event type identifier for SIP extension parameter set  */
  853.43 -const TInt KSubConSIPAuthenticationRequiredEventType = 2;
  853.44 -
  853.45 -/** The numeric value of Notification event type identifier for SIP extension parameter set  */
  853.46 -const TInt KSubConSIPNotificationEventType = 3;
  853.47 -
  853.48 -
  853.49 -class CSubConSIPResponseEvent : public CSubConNotificationEvent
  853.50 -/** CSubConSIPResponseEvent is used to get and set the response elements of the most recent response  
  853.51 -
  853.52 -@publishedAll
  853.53 -@released since v9.2 */
  853.54 -	{
  853.55 -public:
  853.56 -	/**
  853.57 -	 Identifies the  predefined type of Response 		 .
  853.58 -	 */
  853.59 -    enum PredefinedResponses
  853.60 -        {
  853.61 -        /** The numeric value of Invalid Response */
  853.62 -        EInvalidResponse = 0
  853.63 -        };
  853.64 -        
  853.65 -	inline static CSubConSIPResponseEvent* NewL();
  853.66 -	/** Constructor. */
  853.67 -	inline CSubConSIPResponseEvent();
  853.68 -	/** Destructor. */
  853.69 -	virtual ~CSubConSIPResponseEvent();
  853.70 -	/** Sets Response Code of the SIP Response. **/	
  853.71 -	inline void SetResponse(TInt aResponse);
  853.72 -	/** Gets Response Code of the SIP Response. **/	
  853.73 -	inline TInt GetResponse() const;
  853.74 -
  853.75 -protected:
  853.76 -	/** The Response Code of the SIP reasponse. */
  853.77 -    TInt iResponse;
  853.78 -	DATA_VTABLE
  853.79 -	};
  853.80 -	
  853.81 -
  853.82 -class CSubConSIPAuthenticationRequiredEvent : public CSubConNotificationEvent
  853.83 -/** CSubConSIPAuthenticationRequiredEvent is used  when SIP authentication is required
  853.84 -
  853.85 -@publishedAll
  853.86 -@released since v9.2 */
  853.87 -	{
  853.88 -public:
  853.89 -        
  853.90 -	inline static CSubConSIPAuthenticationRequiredEvent* NewL();
  853.91 -	/** Constructor. */
  853.92 -	inline CSubConSIPAuthenticationRequiredEvent();
  853.93 -	/** Destructor. */
  853.94 -	virtual ~CSubConSIPAuthenticationRequiredEvent();
  853.95 -	/** Sets Realm field of the SIP header. **/	
  853.96 -	inline void SetRealmL(const TPtrC8& aRealm);
  853.97 -	/** Gets Realm field of the SIP header. **/	
  853.98 -	inline const TPtrC8& GetRealm() const;
  853.99 -
 853.100 -protected:
 853.101 -	/** The Realm entry of Authenticate field in a SIP header. */
 853.102 -	RBuf8	iRealm;
 853.103 -	DATA_VTABLE
 853.104 -	};
 853.105 -
 853.106 -
 853.107 -class CSubConSIPNotificationEvent : public CSubConNotificationEvent
 853.108 -/** CSubConSIPNotificationEvent is used for receiving SIP event notifications 
 853.109 -
 853.110 -@publishedAll
 853.111 -@released since v9.2 */
 853.112 -	{
 853.113 -public:
 853.114 -  	inline static CSubConSIPNotificationEvent* NewL();
 853.115 -  	/** Constructor. */
 853.116 -	inline CSubConSIPNotificationEvent();
 853.117 -	/** Destructor. */
 853.118 -	virtual ~CSubConSIPNotificationEvent();
 853.119 -	/** Sets Notification for an event. **/	
 853.120 -	inline void SetNotificationL(const TPtrC8 & aNotification);
 853.121 -	/** Gets Notification for an event. **/	
 853.122 -	inline const TPtrC8& GetNotification() const;
 853.123 -
 853.124 -protected:
 853.125 -	/** The Notification entry. */
 853.126 -    RBuf8 iNotification;
 853.127 -	DATA_VTABLE
 853.128 -	};	
 853.129 -	
 853.130 -
 853.131 -class CSIPSubConnExtensionEventsFactory : public CBase
 853.132 -/** Factory used to create instances of the SIP SubConnection Extension Events
 853.133 -
 853.134 -@publishedAll
 853.135 -@released since v9.2 
 853.136 -*/
 853.137 -	{
 853.138 -public:
 853.139 -	static CSubConNotificationEvent* NewL(TAny* aConstructionParameters);
 853.140 -	};
 853.141 -
 853.142 -#include <sip_subconevents.inl>
 853.143 -
 853.144 -#endif // SIPSCPR_SUBCONEVENTS_H
   854.1 --- a/epoc32/include/sip_subconevents.inl	Tue Mar 16 16:12:26 2010 +0000
   854.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   854.3 @@ -1,91 +0,0 @@
   854.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   854.5 -// All rights reserved.
   854.6 -// This component and the accompanying materials are made available
   854.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   854.8 -// which accompanies this distribution, and is available
   854.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  854.10 -//
  854.11 -// Initial Contributors:
  854.12 -// Nokia Corporation - initial contribution.
  854.13 -//
  854.14 -// Contributors:
  854.15 -//
  854.16 -// Description:
  854.17 -// SIPSCPR_subconevents.inl
  854.18 -// SIP extension events definition
  854.19 -// 
  854.20 -//
  854.21 -
  854.22 -
  854.23 -
  854.24 -/**
  854.25 - @file
  854.26 - @publishedAll
  854.27 -*/
  854.28 -
  854.29 -
  854.30 -inline CSubConSIPResponseEvent::CSubConSIPResponseEvent()
  854.31 -:iResponse(EInvalidResponse)
  854.32 -    {
  854.33 -    }
  854.34 -
  854.35 -
  854.36 -inline void CSubConSIPResponseEvent::SetResponse(TInt aResponse)
  854.37 -    {
  854.38 -    iResponse = aResponse;
  854.39 -    }
  854.40 -
  854.41 -inline TInt CSubConSIPResponseEvent::GetResponse() const
  854.42 -    {
  854.43 -    return iResponse;
  854.44 -    }
  854.45 -	
  854.46 -inline CSubConSIPResponseEvent* CSubConSIPResponseEvent::NewL()
  854.47 -	{
  854.48 -	STypeId typeId(KSubConSIPEventsUid, KSubConSIPResponseEventType);
  854.49 -	return static_cast<CSubConSIPResponseEvent*>(CSubConNotificationEvent::NewL(typeId));
  854.50 -	}
  854.51 -
  854.52 -        
  854.53 -inline CSubConSIPAuthenticationRequiredEvent* CSubConSIPAuthenticationRequiredEvent::NewL()
  854.54 -	{
  854.55 -	STypeId typeId(KSubConSIPEventsUid, KSubConSIPAuthenticationRequiredEventType);
  854.56 -	return static_cast<CSubConSIPAuthenticationRequiredEvent*>(CSubConNotificationEvent::NewL(typeId));
  854.57 -	}
  854.58 -
  854.59 -inline CSubConSIPAuthenticationRequiredEvent::CSubConSIPAuthenticationRequiredEvent()
  854.60 -    {
  854.61 -    }
  854.62 -
  854.63 -inline void CSubConSIPAuthenticationRequiredEvent::SetRealmL(const TPtrC8& aRealm)
  854.64 -    {
  854.65 -    iRealm.Close();
  854.66 -    iRealm.CreateL(aRealm);
  854.67 -    }
  854.68 -
  854.69 -inline const TPtrC8& CSubConSIPAuthenticationRequiredEvent::GetRealm() const
  854.70 -    {
  854.71 -	return iRealm.LeftTPtr(iRealm.Length());    
  854.72 -    }
  854.73 -
  854.74 -
  854.75 -inline CSubConSIPNotificationEvent::CSubConSIPNotificationEvent()
  854.76 -    {
  854.77 -    }
  854.78 -
  854.79 -inline void CSubConSIPNotificationEvent::SetNotificationL(const TPtrC8 & aNotification)
  854.80 -    {
  854.81 -    iNotification.Close();
  854.82 -    iNotification.CreateL(aNotification); 
  854.83 -    }
  854.84 -
  854.85 -inline const TPtrC8& CSubConSIPNotificationEvent::GetNotification() const
  854.86 -    {
  854.87 -    return iNotification.LeftTPtr(iNotification.Length());
  854.88 -    }
  854.89 -	
  854.90 -inline CSubConSIPNotificationEvent* CSubConSIPNotificationEvent::NewL()
  854.91 -	{
  854.92 -	STypeId typeId(KSubConSIPEventsUid, KSubConSIPNotificationEventType);
  854.93 -	return static_cast<CSubConSIPNotificationEvent*>(CSubConNotificationEvent::NewL(typeId));
  854.94 -	}
   855.1 --- a/epoc32/include/sip_subconparams.h	Tue Mar 16 16:12:26 2010 +0000
   855.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   855.3 @@ -1,278 +0,0 @@
   855.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   855.5 -// All rights reserved.
   855.6 -// This component and the accompanying materials are made available
   855.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   855.8 -// which accompanies this distribution, and is available
   855.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  855.10 -//
  855.11 -// Initial Contributors:
  855.12 -// Nokia Corporation - initial contribution.
  855.13 -//
  855.14 -// Contributors:
  855.15 -//
  855.16 -// Description:
  855.17 -// SIPSCPR_subconparams.h
  855.18 -// SIP extension parameters definition
  855.19 -// 
  855.20 -//
  855.21 -
  855.22 -
  855.23 -
  855.24 -/**
  855.25 - @file
  855.26 - @publishedAll
  855.27 - @released since v9.2
  855.28 -*/
  855.29 -
  855.30 -#ifndef SIP_SUBCONPARAMS_H
  855.31 -#define SIP_SUBCONPARAMS_H
  855.32 -
  855.33 -#include <es_sock.h>
  855.34 -#include <comms-infras/metabuffer.h>
  855.35 -
  855.36 -/** The numeric value of ECOM plugin identifier for this SubConnection parameter extension.See the assisting *.rss file. */
  855.37 -const TInt KSubConSIPParametersUid = 0x10274C18;
  855.38 -
  855.39 -/** The numeric value of Invite identifier for SIP extension parameter set  */
  855.40 -const TInt KSubConSIPInviteParamsType = 1;
  855.41 -
  855.42 -/** The numeric value of Subscribe identifier for SIP extension parameter set  */
  855.43 -const TInt KSubConSIPSubscribeParamsType = 2;
  855.44 -
  855.45 -/** The numeric value of Authentication of SIP extension parameter set  */
  855.46 -const TInt KSubConSIPAuthenticateParamsType = 3;
  855.47 -
  855.48 -class CSubConSIPInviteParamSet : public CSubConExtensionParameterSet
  855.49 -/** 
  855.50 -This contains the SIP Invite parameters that will be passed via subconnection
  855.51 -to the SIP stack
  855.52 -@publishedAll
  855.53 -@released since v9.2 
  855.54 -*/
  855.55 -{
  855.56 -public:
  855.57 -     /**
  855.58 -	 Creates a new SubConSIPInvite parameter set object.  
  855.59 -	 @param     aFamily ,contains family related info 
  855.60 -	 @param		aType contains parameter Type such as (Requested, Acceptable and Granted)
  855.61 -	 @return    A pointer to the newly allocated object.
  855.62 -	 @leave 	KErrArgument if the data is not of type TParameterSetType.
  855.63 -	 */   
  855.64 -	inline static CSubConSIPInviteParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
  855.65 -	inline static CSubConSIPInviteParamSet* NewL();
  855.66 -	
  855.67 -	/** Constructor. */
  855.68 -	inline CSubConSIPInviteParamSet();
  855.69 -	/** Destructor. */
  855.70 -	virtual ~CSubConSIPInviteParamSet();
  855.71 -	
  855.72 -	/** Getters for SIP header. */
  855.73 -	/** Gets Request URI field of the SIP header. **/
  855.74 -	inline const TPtrC8 GetRequestUri() const;
  855.75 -	/** Gets From field of the SIP header. **/	
  855.76 -	inline const TPtrC8 GetFrom() const;
  855.77 -	/** Gets To field of the SIP header. **/	
  855.78 -	inline const TPtrC8 GetTo() const;
  855.79 -	/** Gets Contact field of the SIP header. **/	
  855.80 -	inline const TPtrC8 GetContact() const;
  855.81 -	/** Gets ContentType field of the SIP header. **/	
  855.82 -	inline const TPtrC8 GetContentType() const;
  855.83 -	/** Gets ContentSubType field of the SIP header. **/	
  855.84 -	inline const TPtrC8 GetContentSubType() const;
  855.85 -	/** Gets Content field of the SIP header. **/
  855.86 -	inline const TPtrC8 GetContent() const;
  855.87 -	
  855.88 -	/** Setters for SIP header. 
  855.89 -	/** Sets Request URI field of the SIP header. **/
  855.90 -	inline void   SetRequestUriL(const TPtrC8 & aReqUri);
  855.91 -	/** Sets From field of the SIP header. **/	
  855.92 -	inline void   SetFromL(const TPtrC8 & aFrom);
  855.93 -	/** Sets To field of the SIP header. **/	
  855.94 -	inline void   SetToL(const TPtrC8 & aTo);
  855.95 -	/** Sets Contact field of the SIP header. **/	
  855.96 -	inline void   SetContactL(const TPtrC8 & aContact);
  855.97 -	/** Sets Content Type field of the SIP header. **/		
  855.98 -	inline void   SetContentTypeL(const TPtrC8 & aContentType);
  855.99 -	/** Sets Content Sub Type field of the SIP header. **/	
 855.100 -	inline void   SetContentSubTypeL(const TPtrC8 & aContentSubType);
 855.101 -	/** Sets Content field of the SIP header. **/		
 855.102 -	inline void	  SetContentL(const TPtrC8 & aContent);
 855.103 -	
 855.104 -	DATA_VTABLE
 855.105 -protected:
 855.106 -
 855.107 -	/** The Request URI field of the SIP header. */
 855.108 -	RBuf8	iReqUri;
 855.109 -	/** The From field of the SIP header. */
 855.110 -	RBuf8	iFrom;
 855.111 -	/** The To field of the SIP header. */
 855.112 -	RBuf8	iTo;
 855.113 -	/** The Contact field of the SIP header. */
 855.114 -	RBuf8	iContact;
 855.115 -	/** The Content Type field of the SIP header. */
 855.116 -	RBuf8	iContentType;
 855.117 -	/** The Content Sub Type field of the SIP header. */
 855.118 -	RBuf8	iContentSubType;
 855.119 -	/** The Content field of the SIP header. */
 855.120 -	RBuf8	iContent;
 855.121 -	};
 855.122 -	
 855.123 -	
 855.124 -	
 855.125 -class CSubConSIPSubscribeParamSet : public CSubConExtensionParameterSet
 855.126 -/** 
 855.127 -This contains the SIP Subscribe parameters that will be passed via subconnection
 855.128 -to the SIP stack
 855.129 -@publishedAll
 855.130 -@released since v9.2 
 855.131 -*/
 855.132 -{
 855.133 -public:
 855.134 -    /**
 855.135 -	 Creates a new SubConSIPSubscribe parameter set object.  
 855.136 -	 @param     aFamily ,contains family related info 
 855.137 -	 @param		aType contains parameter Type such as (Requested, Acceptable and Granted)
 855.138 -	 @return    A pointer to the newly allocated object.
 855.139 -	 @leave 	KErrArgument if the data is not of type TParameterSetType.
 855.140 -	 */    
 855.141 -	inline static CSubConSIPSubscribeParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
 855.142 -	inline static CSubConSIPSubscribeParamSet* NewL();
 855.143 -	
 855.144 -	/** Constructor. */
 855.145 -	inline CSubConSIPSubscribeParamSet();
 855.146 -	
 855.147 -	/** Destructor. */
 855.148 -    virtual ~CSubConSIPSubscribeParamSet();
 855.149 -    
 855.150 -	/** Getters for SIP header. */
 855.151 -	/** Gets Request URI field of the SIP header. **/
 855.152 -	inline const TPtrC8 GetRequestUri() const;	
 855.153 -	/** Gets From field of the SIP header. **/
 855.154 -	inline const TPtrC8 GetFrom() const;
 855.155 -	/** Gets To field of the SIP header. **/	
 855.156 -	inline const TPtrC8 GetTo() const;
 855.157 -	/** Gets Contact field of the SIP header. **/
 855.158 -	inline const TPtrC8 GetContact() const;
 855.159 -	/** Gets Event Type field of the SIP header. **/
 855.160 -	inline const TPtrC8 GetEventType() const;
 855.161 -	/** Gets Accept Type field of the SIP header. **/
 855.162 -	inline const TPtrC8 GetAcceptType() const;
 855.163 -	/** Gets Accept Sub Type field of the SIP header. **/
 855.164 -	inline const TPtrC8 GetAcceptSubType() const;
 855.165 -	/** Gets Expires field of the SIP header. **/
 855.166 -	inline const TInt   GetExpires() const;
 855.167 -	/** Gets Auto Refresh field of the SIP header. **/
 855.168 -	inline const TBool  GetAutoRefresh() const;
 855.169 -	
 855.170 -	/** Setters for SIP header. */
 855.171 -	/** Sets Request URI field of the SIP header. **/
 855.172 -	inline void  SetRequestUriL(const TPtrC8 & aReqUri);
 855.173 -	/** Sets From field of the SIP header. **/	
 855.174 -	inline void  SetFromL(const TPtrC8 & aFrom);
 855.175 -	/** Sets To field of the SIP header. **/	
 855.176 -	inline void  SetToL(const TPtrC8 & aTo);
 855.177 -	/** Sets Contact field of the SIP header. **/
 855.178 -	inline void  SetContactL(const TPtrC8 & aContact);
 855.179 -	/** Sets Event Type field of the SIP header. **/
 855.180 -	inline void  SetEventTypeL(const TPtrC8 & aEventType);
 855.181 -	/** Sets Accept Type field of the SIP header. **/
 855.182 -	inline void  SetAcceptTypeL(const TPtrC8 & aAcceptType);
 855.183 -	/** Sets Accept Sub Type field of the SIP header. **/
 855.184 -	inline void  SetAcceptSubTypeL(const TPtrC8 & aAcceptSubType);
 855.185 -	/** Sets Expires Sub Type field of the SIP header. **/
 855.186 -	inline void  SetExpires(TInt aExpires);
 855.187 -	/** Sets AutoRfresh field of the SIP header. **/
 855.188 -	inline void  SetAutoRefresh(TBool aAutoRefresh);
 855.189 -	
 855.190 -	
 855.191 -	DATA_VTABLE
 855.192 -protected:
 855.193 -	
 855.194 -	/** The Request URI field of the SIP header. */
 855.195 -	RBuf8	iReqUri;
 855.196 -	/** The From field of the SIP header. */
 855.197 -	RBuf8	iFrom;
 855.198 -	/** The To field of the SIP header. */
 855.199 -	RBuf8	iTo;
 855.200 -	/** The Contact field of the SIP header. */
 855.201 -	RBuf8	iContact;
 855.202 -	/** The Event Type field of the SIP header. */
 855.203 -	RBuf8	iEventType;
 855.204 -	/** The Accept Type field of the SIP header. */
 855.205 -	RBuf8	iAcceptType;
 855.206 -	/** The Accept Sub Type field of the SIP header. */
 855.207 -	RBuf8	iAcceptSubType;
 855.208 -	/** The Expires field of the SIP header. */
 855.209 -	TInt	iExpires;
 855.210 -	/** The AutoRefresh field of the SIP header. */
 855.211 -	TBool   iAutoRefresh;
 855.212 -};
 855.213 -	
 855.214 -class CSubConSIPAuthenticateParamSet : public CSubConExtensionParameterSet
 855.215 -/** 
 855.216 -This contains the SIP Authenticate parameters that will be passed via subconnection
 855.217 -to the SIP stack
 855.218 -@publishedAll
 855.219 -@released since v9.2 
 855.220 -*/
 855.221 -{
 855.222 -public:
 855.223 -    /**
 855.224 -	 Creates a new SubConSIPAuthenticate parameter set object.  
 855.225 -	 @param     aFamily ,contains family related info 
 855.226 -	 @param		aType contains parameter Type such as (Requested, Acceptable and Granted)
 855.227 -	 @return    A pointer to the newly allocated object.
 855.228 -	 @leave 	KErrArgument if the data is not of type TParameterSetType.
 855.229 -	 */    
 855.230 -	inline static CSubConSIPAuthenticateParamSet* NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType);
 855.231 -	inline static CSubConSIPAuthenticateParamSet* NewL();
 855.232 -	
 855.233 -	/** Constructor. */
 855.234 -	inline CSubConSIPAuthenticateParamSet();
 855.235 -	
 855.236 -	/** Destructor. */
 855.237 -	virtual ~CSubConSIPAuthenticateParamSet();
 855.238 -	
 855.239 -	/** Getters for SIP header. */
 855.240 -	/** Gets Username field of the SIP header. **/
 855.241 -	inline const TPtrC8 GetUserName() const;
 855.242 -	/** Gets Password field of the SIP header. **/	
 855.243 -	inline const TPtrC8 GetPassword() const;
 855.244 -	/** Gets Realm field of the SIP header. **/		
 855.245 -	inline const TPtrC8 GetRealm() const;
 855.246 -	
 855.247 -	/** Setters for SIP header. */
 855.248 -	/** Sets Username field of the SIP header. **/
 855.249 -	inline void  SetUserNameL(const TPtrC8 & aUserName);
 855.250 -	/** Sets Password field of the SIP header. **/	
 855.251 -	inline void  SetPasswordL(const TPtrC8 & aPassword);
 855.252 -	/** Sets Realm field of the SIP header. **/	
 855.253 -	inline void  SetRealmL(const TPtrC8 & aRealm);
 855.254 -	
 855.255 -	DATA_VTABLE
 855.256 -protected:
 855.257 -
 855.258 -	/** The Username entry of Authenticate field in a SIP header. */
 855.259 -	RBuf8	iUserName;
 855.260 -	/** The Password entry of Authenticate field in a SIP header. */
 855.261 -	RBuf8	iPassword;
 855.262 -	/** The Realm entry of Authenticate field in a SIP header. */
 855.263 -	RBuf8	iRealm;	
 855.264 -};
 855.265 -
 855.266 -
 855.267 -
 855.268 -class CSIPSubConnExtensionParamsFactory : public CBase
 855.269 -/** Factory used to create instances of the SIP SubConnection Parameter Extension Sets.
 855.270 -
 855.271 -@publishedAll
 855.272 -@released since v9.2 
 855.273 -*/
 855.274 -	{
 855.275 -public:
 855.276 -	static CSubConExtensionParameterSet* NewL(TAny* aConstructionParameters);
 855.277 -	};
 855.278 -
 855.279 -#include <sip_subconparams.inl>
 855.280 -
 855.281 -#endif // SIP_SUBCONPARAMS_H
   856.1 --- a/epoc32/include/sip_subconparams.inl	Tue Mar 16 16:12:26 2010 +0000
   856.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   856.3 @@ -1,321 +0,0 @@
   856.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   856.5 -// All rights reserved.
   856.6 -// This component and the accompanying materials are made available
   856.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   856.8 -// which accompanies this distribution, and is available
   856.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  856.10 -//
  856.11 -// Initial Contributors:
  856.12 -// Nokia Corporation - initial contribution.
  856.13 -//
  856.14 -// Contributors:
  856.15 -//
  856.16 -// Description:
  856.17 -// SIPSCPR_subconparams.inl
  856.18 -// SIP extension parameters inline implementation
  856.19 -// / CSubConSIPInviteParamSet
  856.20 -// 
  856.21 -//
  856.22 -
  856.23 -
  856.24 -
  856.25 -
  856.26 -/**
  856.27 - @file
  856.28 - @publishedAll
  856.29 -*/
  856.30 -
  856.31 -inline CSubConSIPInviteParamSet* CSubConSIPInviteParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
  856.32 -	{
  856.33 -	CSubConSIPInviteParamSet* obj = NewL();
  856.34 -	CleanupStack::PushL(obj);
  856.35 -	aFamily.AddExtensionSetL(*obj, aType);
  856.36 -	CleanupStack::Pop(obj);
  856.37 -	return obj;
  856.38 -	}
  856.39 -
  856.40 -inline CSubConSIPInviteParamSet* CSubConSIPInviteParamSet::NewL()
  856.41 -	{
  856.42 -	STypeId typeId(KSubConSIPParametersUid, KSubConSIPInviteParamsType);
  856.43 -	return static_cast<CSubConSIPInviteParamSet*>(CSubConParameterSet::NewL(typeId));
  856.44 -	}
  856.45 -
  856.46 -inline CSubConSIPInviteParamSet::CSubConSIPInviteParamSet()
  856.47 -:CSubConExtensionParameterSet()
  856.48 -	{
  856.49 -	}	
  856.50 -	
  856.51 -inline const TPtrC8 CSubConSIPInviteParamSet::GetRequestUri() const
  856.52 -	{
  856.53 -	return iReqUri.LeftTPtr(iReqUri.Length());	
  856.54 -	}
  856.55 -	
  856.56 -inline const TPtrC8 CSubConSIPInviteParamSet::GetFrom() const
  856.57 -	{
  856.58 -	return iFrom.LeftTPtr(iFrom.Length());	
  856.59 -	}
  856.60 -	
  856.61 -inline const TPtrC8 CSubConSIPInviteParamSet::GetTo() const
  856.62 -	{
  856.63 -	return iTo.LeftTPtr(iTo.Length());	
  856.64 -	}
  856.65 -	
  856.66 -inline const TPtrC8 CSubConSIPInviteParamSet::GetContact() const
  856.67 -	{
  856.68 -	return iContact.LeftTPtr(iContact.Length());		
  856.69 -	}
  856.70 -	
  856.71 -inline const TPtrC8 CSubConSIPInviteParamSet::GetContentType() const
  856.72 -	{
  856.73 -	return iContentType.LeftTPtr(iContentType.Length());		
  856.74 -	}
  856.75 -	
  856.76 -inline const TPtrC8 CSubConSIPInviteParamSet::GetContentSubType() const
  856.77 -	{
  856.78 -	return iContentSubType.LeftTPtr(iContentSubType.Length());			
  856.79 -	}
  856.80 -	
  856.81 -inline const TPtrC8 CSubConSIPInviteParamSet::GetContent() const
  856.82 -	{
  856.83 -	return iContent.LeftTPtr(iContent.Length());
  856.84 -	}
  856.85 -	
  856.86 -// Setters
  856.87 -inline void CSubConSIPInviteParamSet::SetRequestUriL(const TPtrC8& aReqUri)
  856.88 -	{
  856.89 -    iReqUri.Close();
  856.90 -   	iReqUri.CreateL(aReqUri);
  856.91 -	}
  856.92 -	
  856.93 -inline void CSubConSIPInviteParamSet::SetFromL(const TPtrC8& aFrom) 
  856.94 -	{
  856.95 -    iFrom.Close();
  856.96 -	iFrom.CreateL(aFrom);
  856.97 -	}
  856.98 -	
  856.99 -inline void CSubConSIPInviteParamSet::SetToL(const TPtrC8& aTo)
 856.100 -	{
 856.101 -    iTo.Close();
 856.102 -	iTo.CreateL(aTo);
 856.103 -	}
 856.104 -	
 856.105 -inline void CSubConSIPInviteParamSet::SetContactL(const TPtrC8& aContact)
 856.106 -	{
 856.107 -    iContact.Close();
 856.108 -	iContact.CreateL(aContact);
 856.109 -	}
 856.110 -	
 856.111 -inline void CSubConSIPInviteParamSet::SetContentTypeL(const TPtrC8& aContentType)
 856.112 -	{
 856.113 -    iContentType.Close();
 856.114 -	iContentType.CreateL(aContentType);
 856.115 -	}
 856.116 -	
 856.117 -inline void CSubConSIPInviteParamSet::SetContentSubTypeL(const TPtrC8& aContentSubType)
 856.118 -	{
 856.119 -    iContentSubType.Close();
 856.120 -	iContentSubType.CreateL(aContentSubType);
 856.121 -	}
 856.122 -	
 856.123 -inline void	CSubConSIPInviteParamSet::SetContentL(const TPtrC8& aContent)
 856.124 -	{
 856.125 -    iContent.Close();	
 856.126 -	iContent.CreateL(aContent);
 856.127 -	}
 856.128 -	
 856.129 -	
 856.130 -	
 856.131 -	
 856.132 -	
 856.133 -	
 856.134 -
 856.135 -/*-===========================================================
 856.136 -/
 856.137 -/ CSubConSIPSubscribeParamSet
 856.138 -/
 856.139 -/*-=========================================================*/
 856.140 -inline CSubConSIPSubscribeParamSet* CSubConSIPSubscribeParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
 856.141 -	{
 856.142 -	CSubConSIPSubscribeParamSet* obj = NewL();
 856.143 -	CleanupStack::PushL(obj);
 856.144 -	aFamily.AddExtensionSetL(*obj, aType);
 856.145 -	CleanupStack::Pop(obj);
 856.146 -	return obj;
 856.147 -	}
 856.148 -
 856.149 -inline CSubConSIPSubscribeParamSet* CSubConSIPSubscribeParamSet::NewL()
 856.150 -	{
 856.151 -	STypeId typeId(KSubConSIPParametersUid, KSubConSIPSubscribeParamsType);
 856.152 -	return static_cast<CSubConSIPSubscribeParamSet*>(CSubConParameterSet::NewL(typeId));
 856.153 -	}
 856.154 -
 856.155 -// Constructor
 856.156 -inline CSubConSIPSubscribeParamSet::CSubConSIPSubscribeParamSet()
 856.157 -:CSubConExtensionParameterSet()
 856.158 -    {
 856.159 -    }
 856.160 -    
 856.161 -// Getters
 856.162 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetRequestUri() const
 856.163 -    {
 856.164 -    return iReqUri.LeftTPtr(iReqUri.Length());	
 856.165 -    }
 856.166 -	
 856.167 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetFrom() const
 856.168 -    {
 856.169 -    return iFrom.LeftTPtr(iFrom.Length());	
 856.170 -    }
 856.171 -
 856.172 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetTo() const
 856.173 -    {
 856.174 -    return iTo.LeftTPtr(iTo.Length());	
 856.175 -    }
 856.176 -
 856.177 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetContact() const
 856.178 -    {
 856.179 -    return iContact.LeftTPtr(iContact.Length());	
 856.180 -    }
 856.181 -
 856.182 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetEventType() const
 856.183 -    {
 856.184 -    return iEventType.LeftTPtr(iEventType.Length());	
 856.185 -    }
 856.186 -
 856.187 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetAcceptType() const
 856.188 -    {
 856.189 -    return iAcceptType.LeftTPtr(iAcceptType.Length());	
 856.190 -    }
 856.191 -
 856.192 -inline const TPtrC8 CSubConSIPSubscribeParamSet::GetAcceptSubType() const
 856.193 -    {
 856.194 -    return iAcceptSubType.LeftTPtr(iAcceptSubType.Length());	
 856.195 -    }
 856.196 -
 856.197 -inline const TInt CSubConSIPSubscribeParamSet::GetExpires() const
 856.198 -    {
 856.199 -    return iExpires;
 856.200 -    }
 856.201 -    
 856.202 -inline const TBool CSubConSIPSubscribeParamSet::GetAutoRefresh() const
 856.203 -    {
 856.204 -    return iAutoRefresh;
 856.205 -    }   
 856.206 -    
 856.207 -
 856.208 -// Setters
 856.209 -inline void  CSubConSIPSubscribeParamSet::SetRequestUriL(const TPtrC8& aReqUri)
 856.210 -	{
 856.211 -    iReqUri.Close();
 856.212 -	iReqUri.CreateL(aReqUri);
 856.213 -	}
 856.214 -	
 856.215 -inline void  CSubConSIPSubscribeParamSet::SetFromL(const TPtrC8& aFrom)
 856.216 -    {
 856.217 -    iFrom.Close();
 856.218 -	iFrom.CreateL(aFrom);
 856.219 -    }
 856.220 -
 856.221 -inline void  CSubConSIPSubscribeParamSet::SetToL(const TPtrC8& aTo)
 856.222 -    {
 856.223 -    iTo.Close();
 856.224 -	iTo.CreateL(aTo);
 856.225 -    }
 856.226 -
 856.227 -inline void  CSubConSIPSubscribeParamSet::SetContactL(const TPtrC8& aContact)
 856.228 -    {
 856.229 -    iContact.Close();
 856.230 -	iContact.CreateL(aContact);
 856.231 -    }
 856.232 -
 856.233 -inline void  CSubConSIPSubscribeParamSet::SetEventTypeL(const TPtrC8& aEventType)
 856.234 -    {
 856.235 -    iEventType.Close();
 856.236 -	iEventType.CreateL(aEventType);
 856.237 -    }
 856.238 -
 856.239 -inline void  CSubConSIPSubscribeParamSet::SetAcceptTypeL(const TPtrC8& aAcceptType)
 856.240 -    {
 856.241 -    iAcceptType.Close();
 856.242 -	iAcceptType.CreateL(aAcceptType);
 856.243 -    }
 856.244 -
 856.245 -inline void  CSubConSIPSubscribeParamSet::SetAcceptSubTypeL(const TPtrC8& aAcceptSubType)
 856.246 -    {
 856.247 -    iAcceptSubType.Close();
 856.248 -	iAcceptSubType.CreateL(aAcceptSubType);
 856.249 -    }
 856.250 -
 856.251 -inline void  CSubConSIPSubscribeParamSet::SetExpires(TInt aExpires)
 856.252 -    {
 856.253 -    iExpires = aExpires;
 856.254 -    }
 856.255 -
 856.256 -inline void CSubConSIPSubscribeParamSet::SetAutoRefresh(TBool aAutoRefresh)
 856.257 -    {
 856.258 -    iAutoRefresh = aAutoRefresh;
 856.259 -    }
 856.260 -	
 856.261 -	
 856.262 -	
 856.263 -	
 856.264 -	
 856.265 -/*-===========================================================
 856.266 -/
 856.267 -/ CSubConSIPAuthenticateParamSet
 856.268 -/
 856.269 -/*-=========================================================*/
 856.270 -inline CSubConSIPAuthenticateParamSet* CSubConSIPAuthenticateParamSet::NewL(CSubConParameterFamily& aFamily, CSubConParameterFamily::TParameterSetType aType)
 856.271 -	{
 856.272 -	CSubConSIPAuthenticateParamSet* obj = NewL();
 856.273 -	CleanupStack::PushL(obj);
 856.274 -	aFamily.AddExtensionSetL(*obj, aType);
 856.275 -	CleanupStack::Pop(obj);
 856.276 -	return obj;
 856.277 -	}
 856.278 -
 856.279 -inline CSubConSIPAuthenticateParamSet* CSubConSIPAuthenticateParamSet::NewL()
 856.280 -	{
 856.281 -	STypeId typeId(KSubConSIPParametersUid, KSubConSIPAuthenticateParamsType);
 856.282 -	return static_cast<CSubConSIPAuthenticateParamSet*>(CSubConParameterSet::NewL(typeId));
 856.283 -	}
 856.284 -
 856.285 -// Constructor
 856.286 -inline CSubConSIPAuthenticateParamSet::CSubConSIPAuthenticateParamSet()
 856.287 -:CSubConExtensionParameterSet()
 856.288 -	{
 856.289 -	}
 856.290 -
 856.291 -// Getters
 856.292 -inline const TPtrC8 CSubConSIPAuthenticateParamSet::GetUserName() const
 856.293 -    {
 856.294 -    return iUserName.LeftTPtr(iUserName.Length());
 856.295 -    }
 856.296 -	
 856.297 -inline const TPtrC8 CSubConSIPAuthenticateParamSet::GetPassword() const	
 856.298 -    {
 856.299 -    return iPassword.LeftTPtr(iPassword.Length());
 856.300 -    }
 856.301 -
 856.302 -inline const TPtrC8 CSubConSIPAuthenticateParamSet::GetRealm() const
 856.303 -    {
 856.304 -    return iRealm.LeftTPtr(iRealm.Length());
 856.305 -    }
 856.306 -
 856.307 -// Setters
 856.308 -inline void CSubConSIPAuthenticateParamSet::SetUserNameL(const TPtrC8 & aUserName)
 856.309 -    {
 856.310 -    iUserName.Close();
 856.311 -	iUserName.CreateL(aUserName);
 856.312 -    }
 856.313 -
 856.314 -inline void CSubConSIPAuthenticateParamSet::SetPasswordL(const TPtrC8 & aPassword)
 856.315 -    {
 856.316 -    iPassword.Close();    
 856.317 -	iPassword.CreateL(aPassword);
 856.318 -    }
 856.319 -
 856.320 -inline void CSubConSIPAuthenticateParamSet::SetRealmL(const TPtrC8 & aRealm)
 856.321 -    {
 856.322 -    iRealm.Close();
 856.323 -    iRealm.CreateL(aRealm);
 856.324 -    }
   857.1 --- a/epoc32/include/sipacceptcontactheader.h	Tue Mar 16 16:12:26 2010 +0000
   857.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   857.3 @@ -1,172 +0,0 @@
   857.4 -/*
   857.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   857.6 -* All rights reserved.
   857.7 -* This component and the accompanying materials are made available
   857.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   857.9 -* which accompanies this distribution, and is available
  857.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  857.11 -*
  857.12 -* Initial Contributors:
  857.13 -* Nokia Corporation - initial contribution.
  857.14 -*
  857.15 -* Contributors:
  857.16 -*
  857.17 -* Description:
  857.18 -* Name        : sipacceptcontactheader.h
  857.19 -* Part of     : SIP Codec
  857.20 -* Interface   : SDK API, SIP Codec API
  857.21 -* Version     : SIP/4.0 
  857.22 -*
  857.23 -*/
  857.24 -
  857.25 -
  857.26 -
  857.27 -
  857.28 -#ifndef CSIPACCEPTCONTACTHEADER_H
  857.29 -#define CSIPACCEPTCONTACTHEADER_H
  857.30 -
  857.31 -//  INCLUDES
  857.32 -#include "sipparameterheaderbase.h"
  857.33 -#include "_sipcodecdefs.h"
  857.34 -
  857.35 -// FORWARD DECLARATIONS
  857.36 -class CSIPAcceptContactHeaderParams;
  857.37 -
  857.38 -// CLASS DECLARATION
  857.39 -/**
  857.40 -* @publishedAll
  857.41 -* @released
  857.42 -*
  857.43 -* Class provides functions for setting and getting parameters in SIP 
  857.44 -* "Accept-Contact" header.
  857.45 -*
  857.46 -*  @lib sipcodec.lib
  857.47 -*/
  857.48 -class CSIPAcceptContactHeader : public CSIPParameterHeaderBase
  857.49 -	{
  857.50 -	public:	// Constructors and destructor
  857.51 -
  857.52 -		/**
  857.53 -		* Constructs a CSIPAcceptContactHeader from textual representation 
  857.54 -		* of the header's value part.
  857.55 -		* @param aValue a value part of a "Accept-Contact"-header 
  857.56 -		*        (e.g. "*;param=value")
  857.57 -		* @return an array containing one to many instances 
  857.58 -        *         of CSIPAcceptContactHeader   
  857.59 -		*/
  857.60 -		IMPORT_C static RPointerArray<CSIPAcceptContactHeader>
  857.61 -            DecodeL(const TDesC8& aValue);
  857.62 -
  857.63 -		/**
  857.64 -		* Creates a new instance of CSIPAcceptContactHeader
  857.65 -		* @return a new instance of CSIPAcceptContactHeader
  857.66 -		*/
  857.67 -        IMPORT_C static CSIPAcceptContactHeader* NewL();
  857.68 -
  857.69 -		/**
  857.70 -		* Creates a new instance of CSIPAcceptContactHeader
  857.71 -        * On return the new instance has left to the CleanupStack.
  857.72 -		* @return a new instance of CSIPAcceptContactHeader
  857.73 -		*/
  857.74 -        IMPORT_C static CSIPAcceptContactHeader* NewLC();
  857.75 -
  857.76 -        /**
  857.77 -		* Destructor, deletes the resources of CSIPAcceptContactHeader.
  857.78 -		*/
  857.79 -		IMPORT_C virtual ~CSIPAcceptContactHeader();
  857.80 -
  857.81 -
  857.82 -	public: // New functions
  857.83 -
  857.84 -		/**
  857.85 -		* Compares this instance to another "Accept-Contact" header object.
  857.86 -		* Two Accept-Contact-headers are equal, 
  857.87 -		* if both contain exactly the same parameters. 
  857.88 -		* The order of the parameters is not sufficient.
  857.89 -		* @param aHeader a header to compare to
  857.90 -		* @return ETrue, if the objects are equal otherwise EFalse
  857.91 -		*/
  857.92 -		IMPORT_C TBool operator==(const CSIPAcceptContactHeader& aHeader) const;
  857.93 -
  857.94 -        /**
  857.95 -		* Constructs an instance of a CSIPAcceptContactHeader from a RReadStream
  857.96 -		* @param aReadStream a stream containing the value of the
  857.97 -		*        externalized object (header name not included). 
  857.98 -		* @return an instance of a CSIPAcceptContactHeader
  857.99 -		*/
 857.100 -		IMPORT_C static CSIPHeaderBase* 
 857.101 -            InternalizeValueL(RReadStream& aReadStream);
 857.102 -        
 857.103 -
 857.104 -	public: // From CSIPHeaderBase
 857.105 -
 857.106 -		/**
 857.107 -		* From CSIPHeaderBase CloneL
 857.108 -		*/
 857.109 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 857.110 -
 857.111 -		/**
 857.112 -		* From CSIPHeaderBase Name
 857.113 -		*/
 857.114 -		IMPORT_C RStringF Name() const;
 857.115 -
 857.116 -
 857.117 -	public: // From CSIPHeaderBase, for internal use
 857.118 -
 857.119 -        /**
 857.120 -		* @internalComponent
 857.121 -		*/
 857.122 -        TBool HasCompactName() const;
 857.123 -        
 857.124 -        /**
 857.125 -		* @internalComponent
 857.126 -		*/        
 857.127 -        RStringF CompactName() const;
 857.128 -        
 857.129 -        /**
 857.130 -		* @internalComponent
 857.131 -		*/        
 857.132 -        TBool MoreThanOneAllowed() const;
 857.133 -        
 857.134 -        /**
 857.135 -		* @internalComponent
 857.136 -		*/        
 857.137 -		TPreferredPlace PreferredPlaceInMessage() const;
 857.138 -
 857.139 -	public: // New functions, for internal use
 857.140 -
 857.141 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 857.142 -
 857.143 -	private: // From CSIPHeaderBase
 857.144 -
 857.145 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 857.146 -
 857.147 -	private: // From CSIPParameterHeaderBase
 857.148 -
 857.149 -		HBufC8* ToTextMandatoryPartLC() const;
 857.150 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 857.151 -		const CSIPParamContainerBase& Params() const;
 857.152 -		CSIPParamContainerBase& Params();
 857.153 -
 857.154 -	private: // Constructors
 857.155 -
 857.156 -        CSIPAcceptContactHeader();
 857.157 -        void ConstructL();
 857.158 -		void ConstructL(const CSIPAcceptContactHeader& aAcceptContactHeader);
 857.159 -
 857.160 -	private: // New functions
 857.161 -
 857.162 -		void DoInternalizeValueL(RReadStream& aReadStream);
 857.163 -
 857.164 -	private: // Data
 857.165 -
 857.166 -		CSIPAcceptContactHeaderParams* iParams;
 857.167 -
 857.168 -	private: // For testing purposes
 857.169 -	
 857.170 -		UNIT_TEST(CSIPAcceptContactHeaderTest)
 857.171 -	};
 857.172 -
 857.173 -#endif // CSIPACCEPTCONTACTHEADER_H
 857.174 -
 857.175 -// End of File
   858.1 --- a/epoc32/include/sipacceptencodingheader.h	Tue Mar 16 16:12:26 2010 +0000
   858.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   858.3 @@ -1,179 +0,0 @@
   858.4 -/*
   858.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   858.6 -* All rights reserved.
   858.7 -* This component and the accompanying materials are made available
   858.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   858.9 -* which accompanies this distribution, and is available
  858.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  858.11 -*
  858.12 -* Initial Contributors:
  858.13 -* Nokia Corporation - initial contribution.
  858.14 -*
  858.15 -* Contributors:
  858.16 -*
  858.17 -* Description:
  858.18 -* Name        : sipacceptencodingheader.h
  858.19 -* Part of     : SIP Codec
  858.20 -* Interface   : SDK API, SIP Codec API
  858.21 -* Version     : SIP/4.0 
  858.22 -*
  858.23 -*/
  858.24 -
  858.25 -
  858.26 -
  858.27 -
  858.28 -#ifndef CSIPACCEPTENCODINGHEADER_H
  858.29 -#define CSIPACCEPTENCODINGHEADER_H
  858.30 -
  858.31 -//  INCLUDES
  858.32 -#include "sipparameterheaderbase.h"
  858.33 -#include "_sipcodecdefs.h"
  858.34 -
  858.35 -// FORWARD DECLARATIONS
  858.36 -class CSIPAcceptHeaderParams;
  858.37 -
  858.38 -// CLASS DECLARATION
  858.39 -/**
  858.40 -* @publishedAll
  858.41 -* @released
  858.42 -*
  858.43 -* Class provides functions for setting and getting media types and
  858.44 -* parameters in SIP "Accept-Encoding" header.
  858.45 -*
  858.46 -*  @lib sipcodec.lib
  858.47 -*/
  858.48 -class CSIPAcceptEncodingHeader : public CSIPParameterHeaderBase
  858.49 -	{
  858.50 -	public:	// Constructors and destructor
  858.51 -
  858.52 -		/**
  858.53 -		* Constructs a CSIPAcceptEncodingHeader from textual representation 
  858.54 -		* of the header's value part.
  858.55 -		* @param aValue a value part of a "Accept-Encoding"-header
  858.56 -		* @return An array containing one to many CSIPAcceptEncodingHeader
  858.57 -		*         instances
  858.58 -		*/
  858.59 -		IMPORT_C static RPointerArray<CSIPAcceptEncodingHeader> 
  858.60 -			DecodeL(const TDesC8& aValue);
  858.61 -
  858.62 -		/**
  858.63 -		* Creates a new instance of CSIPAcceptEncodingHeader
  858.64 -		* @param aCodings a codings to set.
  858.65 -		* @return a new instance of CSIPAcceptEncodingHeader
  858.66 -		*/
  858.67 -		IMPORT_C static CSIPAcceptEncodingHeader* NewL(const TDesC8& aCodings);
  858.68 -
  858.69 -		/**
  858.70 -		* Creates a new instance of CSIPAcceptEncodingHeader 
  858.71 -		* and puts it onto the cleanup stack
  858.72 -		* @param aCodings a codings to set.
  858.73 -		* @return a new instance of CSIPAcceptEncodingHeader
  858.74 -		*/
  858.75 -		IMPORT_C static CSIPAcceptEncodingHeader* NewLC(const TDesC8& aCodings);
  858.76 -
  858.77 -		/**
  858.78 -		* Destructor, deletes the resources of CSIPAcceptEncodingHeader.
  858.79 -		*/
  858.80 -		IMPORT_C ~CSIPAcceptEncodingHeader();
  858.81 -
  858.82 -	
  858.83 -	public:	// New functions  
  858.84 -
  858.85 -		/**
  858.86 -		* Gets the codings from the "Accept-Encoding" header
  858.87 -		* @return codings
  858.88 -		*/
  858.89 -		IMPORT_C const TDesC8& Codings() const;
  858.90 -
  858.91 -		/**
  858.92 -		* Sets the codings in the "Accept-Encoding" header
  858.93 -		* @param aCodings the codings
  858.94 -		*/
  858.95 -		IMPORT_C void SetCodingsL(const TDesC8& aCodings);
  858.96 -
  858.97 -		/**
  858.98 -		* Gets the value of "q"-parameter
  858.99 -		* @return the "q"-parameter value
 858.100 -		*/
 858.101 -		IMPORT_C TReal QParameter() const;
 858.102 -
 858.103 -		/**
 858.104 -		* Sets the "q"-parameter value
 858.105 -		* @param aQValue a "q"-parameter value to set´
 858.106 -		*/
 858.107 -		IMPORT_C void SetQParameterL(TReal aQValue);
 858.108 -
 858.109 -		/**
 858.110 -		* Constructs an instance of a CSIPAcceptEncodingHeader from a RReadStream
 858.111 -		* @param aReadStream a stream containing the value of the
 858.112 -		*        externalized header object (header name not included).
 858.113 -		* @return An instance of a CSIPAcceptEncodingHeader
 858.114 -		*/
 858.115 -		IMPORT_C static CSIPHeaderBase* 
 858.116 -			InternalizeValueL(RReadStream& aReadStream);
 858.117 -
 858.118 -
 858.119 -	public: // From CSIPHeaderBase
 858.120 -
 858.121 -		/**
 858.122 -		* From CSIPHeaderBase CloneL
 858.123 -		*/
 858.124 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 858.125 -
 858.126 -		/**
 858.127 -		* From CSIPHeaderBase Name
 858.128 -		*/
 858.129 -		IMPORT_C RStringF Name() const;
 858.130 -
 858.131 -
 858.132 -	public: // From CSIPHeaderBase, for internal use
 858.133 -
 858.134 -        /**
 858.135 -		* @internalComponent
 858.136 -		*/
 858.137 -		TBool MoreThanOneAllowed() const;
 858.138 -		
 858.139 -        /**
 858.140 -		* @internalComponent
 858.141 -		*/		
 858.142 -		TPreferredPlace PreferredPlaceInMessage() const;
 858.143 -
 858.144 -	public: // New functions, for internal use
 858.145 -
 858.146 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 858.147 -
 858.148 -	private: // From CSIPHeaderBase
 858.149 -
 858.150 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 858.151 -
 858.152 -	private: // From CSIPParameterHeaderBase
 858.153 -
 858.154 -		HBufC8* ToTextMandatoryPartLC() const;
 858.155 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 858.156 -		const CSIPParamContainerBase& Params() const;
 858.157 -		CSIPParamContainerBase& Params();
 858.158 -	
 858.159 -	private: // Constructors
 858.160 -
 858.161 -		CSIPAcceptEncodingHeader();
 858.162 -		void ConstructL();
 858.163 -		void ConstructL(const TDesC8& aCodings);
 858.164 -		void ConstructL(const CSIPAcceptEncodingHeader& aAcceptEncodingHeader);
 858.165 -
 858.166 -	private: // New functions
 858.167 -
 858.168 -		void DoInternalizeValueL(RReadStream& aReadStream);
 858.169 -
 858.170 -	private: // Data
 858.171 -
 858.172 -		HBufC8* iCodings;
 858.173 -		CSIPAcceptHeaderParams* iParams;
 858.174 -
 858.175 -	private: // For testing purposes
 858.176 -	
 858.177 -		UNIT_TEST(CSIPAcceptEncodingHeaderTest)
 858.178 -	};
 858.179 -
 858.180 -#endif // CSIPACCEPTENCODINGHEADER_H
 858.181 -
 858.182 -// End of File
   859.1 --- a/epoc32/include/sipacceptheader.h	Tue Mar 16 16:12:26 2010 +0000
   859.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   859.3 @@ -1,207 +0,0 @@
   859.4 -/*
   859.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   859.6 -* All rights reserved.
   859.7 -* This component and the accompanying materials are made available
   859.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   859.9 -* which accompanies this distribution, and is available
  859.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  859.11 -*
  859.12 -* Initial Contributors:
  859.13 -* Nokia Corporation - initial contribution.
  859.14 -*
  859.15 -* Contributors:
  859.16 -*
  859.17 -* Description:
  859.18 -* Name        : sipacceptheader.h
  859.19 -* Part of     : SIP Codec
  859.20 -* Interface   : SDK API, SIP Codec API
  859.21 -* Version     : SIP/4.0 
  859.22 -*
  859.23 -*/
  859.24 -
  859.25 -
  859.26 -
  859.27 -
  859.28 -#ifndef CSIPACCEPTHEADER_H
  859.29 -#define CSIPACCEPTHEADER_H
  859.30 -
  859.31 -//  INCLUDES
  859.32 -#include "sipparameterheaderbase.h"
  859.33 -#include "_sipcodecdefs.h"
  859.34 -
  859.35 -// FORWARD DECLARATIONS
  859.36 -class CSIPAcceptHeaderParams;
  859.37 -
  859.38 -
  859.39 -// CLASS DECLARATION
  859.40 -/**
  859.41 -* @publishedAll
  859.42 -* @released
  859.43 -*
  859.44 -* Class provides functions for setting and getting media types and
  859.45 -* parameters in SIP "Accept" header.
  859.46 -*
  859.47 -*  @lib sipcodec.lib
  859.48 -*/
  859.49 -class CSIPAcceptHeader : public CSIPParameterHeaderBase
  859.50 -	{
  859.51 -	public:	// Constructors and destructor
  859.52 -
  859.53 -		/**
  859.54 -		* Constructs a CSIPAcceptHeader from textual representation 
  859.55 -		* of the header's value part.
  859.56 -		* An empty Accept-header can be created using this function
  859.57 -		* by passing a KNullDesC8 as a parameter.
  859.58 -		* @param aValue a value part of a "Accept"-header
  859.59 -		* @return an array containing one to many instances of CSIPAcceptHeader.
  859.60 -		*/
  859.61 -		IMPORT_C static RPointerArray<CSIPAcceptHeader> 
  859.62 -			DecodeL(const TDesC8& aValue);
  859.63 -
  859.64 -		/**
  859.65 -		* Creates a new instance of CSIPAcceptHeader
  859.66 -		* @param aMediaType a media type to set. For example "application"
  859.67 -		* @param aMediaSubtype a media subtype to set. For example "sdp"
  859.68 -		* @return a new instance of CSIPAcceptHeader
  859.69 -		*/
  859.70 -		IMPORT_C static CSIPAcceptHeader* NewL(const TDesC8& aMediaType,
  859.71 -		                                       const TDesC8& aMediaSubtype);
  859.72 -
  859.73 -		/**
  859.74 -		* Creates a new instance of CSIPAcceptHeader and puts it into 
  859.75 -		* the cleanup stack
  859.76 -		* @param aMediaType a media type to set. For example "application"
  859.77 -		* @param aMediaSubtype a media subtype to set. For example "sdp"
  859.78 -		* @return a new instance of CSIPAcceptHeader
  859.79 -		*/
  859.80 -		IMPORT_C static CSIPAcceptHeader* NewLC(const TDesC8& aMediaType,
  859.81 -		                                        const TDesC8& aMediaSubtype);
  859.82 -
  859.83 -		/**
  859.84 -		* Destructor, deletes the resources of CSIPAcceptHeader.
  859.85 -		*/
  859.86 -		IMPORT_C ~CSIPAcceptHeader();
  859.87 -
  859.88 -
  859.89 -	public: // New functions
  859.90 -
  859.91 -		/**
  859.92 -		* Check if the header is empty. If so, 
  859.93 -		* the other getters will not return a meaningful value.
  859.94 -		* @return ETrue if empty, EFalse otherwise.
  859.95 -		*/
  859.96 -		IMPORT_C TBool IsEmpty() const;
  859.97 -    
  859.98 -		/**
  859.99 -		* Gets the media type from the "Accept" header
 859.100 -		* @return a media type
 859.101 -		*/
 859.102 -		IMPORT_C const TDesC8& MediaType() const;
 859.103 -
 859.104 -		/**
 859.105 -		* Sets the media type in the "Accept" header
 859.106 -		* @pre IsEmpty() == EFalse
 859.107 -		* @param aMediaType a media type
 859.108 -		*/
 859.109 -		IMPORT_C void SetMediaTypeL(const TDesC8& aMediaType);
 859.110 -
 859.111 -		/**
 859.112 -		* Gets the media subtype from the "Accept" header
 859.113 -		* @return a media subtype
 859.114 -		*/
 859.115 -		IMPORT_C const TDesC8& MediaSubtype() const;
 859.116 -		/**
 859.117 -		* Sets the media subtype in the "Accept" header
 859.118 -		* @pre IsEmpty() == EFalse
 859.119 -		* @param aMediaSubtype a media subtype
 859.120 -		*/
 859.121 -		IMPORT_C void SetMediaSubtypeL(const TDesC8& aMediaSubtype);
 859.122 -
 859.123 -		/**
 859.124 -		* Gets the value of "q"-parameter
 859.125 -		* @return the "q"-parameter value
 859.126 -		*/
 859.127 -		IMPORT_C TReal QParameter() const;
 859.128 -
 859.129 -		/**
 859.130 -		* Sets the "q"-parameter value
 859.131 -		* @param aQValue a "q"-parameter value to set
 859.132 -		*/
 859.133 -		IMPORT_C void SetQParameterL(TReal aQValue);
 859.134 -
 859.135 -		/**
 859.136 -		* Constructs an instance of a CSIPAcceptHeader from a RReadStream
 859.137 -		* @param aReadStream a stream containing the value of the
 859.138 -		*        externalized header object (header name not included).
 859.139 -		* @return An instance of a CSIPAcceptHeader
 859.140 -		*/
 859.141 -		IMPORT_C static CSIPHeaderBase* 
 859.142 -			InternalizeValueL(RReadStream& aReadStream);
 859.143 -
 859.144 -
 859.145 -	public: // From CSIPHeaderBase
 859.146 -
 859.147 -		/**
 859.148 -		* From CSIPHeaderBase CloneL
 859.149 -		*/
 859.150 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 859.151 -
 859.152 -		/**
 859.153 -		* From CSIPHeaderBase Name
 859.154 -		*/
 859.155 -		IMPORT_C RStringF Name() const;
 859.156 -
 859.157 -
 859.158 -	public: // From CSIPHeaderBase, for internal use
 859.159 -
 859.160 -        /**
 859.161 -        * @internalComponent
 859.162 -        */
 859.163 -		TBool MoreThanOneAllowed() const;
 859.164 -		
 859.165 -        /**
 859.166 -        * @internalComponent
 859.167 -        */		
 859.168 -		TPreferredPlace PreferredPlaceInMessage() const;
 859.169 -
 859.170 -	public: // New functions, for internal use
 859.171 -
 859.172 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 859.173 -
 859.174 -	private: // From CSIPHeaderBase
 859.175 -
 859.176 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 859.177 -
 859.178 -	private: // From CSIPParameterHeaderBase
 859.179 -
 859.180 -		HBufC8* ToTextMandatoryPartLC() const;
 859.181 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 859.182 -		const CSIPParamContainerBase& Params() const;
 859.183 -		CSIPParamContainerBase& Params();
 859.184 -
 859.185 -	private: // Constructors
 859.186 -
 859.187 -		CSIPAcceptHeader(TBool aEmpty=EFalse);
 859.188 -		void ConstructL();
 859.189 -		void ConstructL(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
 859.190 -		void ConstructL(const CSIPAcceptHeader& aAcceptHeader);
 859.191 -
 859.192 -	private: // New functions
 859.193 -
 859.194 -		void DoInternalizeValueL(RReadStream& aReadStream);
 859.195 -
 859.196 -	private: // Data
 859.197 -
 859.198 -		TBool iEmpty;
 859.199 -		HBufC8* iMediaType;
 859.200 -		HBufC8* iMediaSubtype;
 859.201 -		CSIPAcceptHeaderParams* iParams;
 859.202 -
 859.203 -	private: // For testing purposes
 859.204 -	
 859.205 -		UNIT_TEST(CSIPAcceptHeaderTest)
 859.206 -	};
 859.207 -
 859.208 -#endif // CSIPACCEPTHEADER_H
 859.209 -
 859.210 -// End of File
   860.1 --- a/epoc32/include/sipacceptlanguageheader.h	Tue Mar 16 16:12:26 2010 +0000
   860.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   860.3 @@ -1,178 +0,0 @@
   860.4 -/*
   860.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   860.6 -* All rights reserved.
   860.7 -* This component and the accompanying materials are made available
   860.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   860.9 -* which accompanies this distribution, and is available
  860.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  860.11 -*
  860.12 -* Initial Contributors:
  860.13 -* Nokia Corporation - initial contribution.
  860.14 -*
  860.15 -* Contributors:
  860.16 -*
  860.17 -* Description:
  860.18 -* Name        : sipacceptlanguageheader.h
  860.19 -* Part of     : SIP Codec
  860.20 -* Interface   : SDK API, SIP Codec API
  860.21 -* Version     : SIP/4.0 
  860.22 -*
  860.23 -*/
  860.24 -
  860.25 -
  860.26 -
  860.27 -
  860.28 -#ifndef CSIPACCEPTLANGUAGEHEADER_H
  860.29 -#define CSIPACCEPTLANGUAGEHEADER_H
  860.30 -
  860.31 -//  INCLUDES
  860.32 -#include "sipparameterheaderbase.h"
  860.33 -#include "_sipcodecdefs.h"
  860.34 -
  860.35 -// FORWARD DECLARATIONS
  860.36 -class CSIPAcceptHeaderParams;
  860.37 -
  860.38 -// CLASS DECLARATION
  860.39 -/**
  860.40 -* @publishedAll
  860.41 -* @released
  860.42 -*
  860.43 -* Class provides functions for setting and getting media types and
  860.44 -* parameters in SIP "Accept-Language" header.
  860.45 -*
  860.46 -* @lib sipcodec.lib
  860.47 -*/
  860.48 -class CSIPAcceptLanguageHeader : public CSIPParameterHeaderBase
  860.49 -	{
  860.50 -	public: // Constructors and destructor
  860.51 -
  860.52 -		/**
  860.53 -		* Constructs a CSIPAcceptLanguageHeader from textual representation 
  860.54 -		* of the header's value part.
  860.55 -		* @param aValue a value part of a "Accept-Language"-header
  860.56 -		* @return an array containing one to many instances of 
  860.57 -		* 		   CSIPAcceptLanguageHeader. 
  860.58 -		*/
  860.59 -		IMPORT_C static RPointerArray<CSIPAcceptLanguageHeader> 
  860.60 -			DecodeL(const TDesC8& aValue);
  860.61 -
  860.62 -		/**
  860.63 -		* Creates a new instance of CSIPAcceptLanguageHeader
  860.64 -		* @param aLanguageRange a language-range to set
  860.65 -		* @return a new instance of CSIPAcceptLanguageHeader
  860.66 -		*/
  860.67 -		IMPORT_C static CSIPAcceptLanguageHeader* 
  860.68 -			NewL(const TDesC8& aLanguageRange);
  860.69 -
  860.70 -		/**
  860.71 -		* Creates a new instance of CSIPAcceptLanguageHeader and puts it onto
  860.72 -		* the cleanup stack
  860.73 -		* @param aLanguageRange a language-range to set
  860.74 -		* @return a new instance of CSIPAcceptLanguageHeader
  860.75 -		*/
  860.76 -		IMPORT_C static CSIPAcceptLanguageHeader* 
  860.77 -			NewLC(const TDesC8& aLanguageRange);
  860.78 -
  860.79 -		/**
  860.80 -		* Destructor, deletes the resources of CSIPAcceptLanguageHeader.
  860.81 -		*/
  860.82 -		IMPORT_C ~CSIPAcceptLanguageHeader();
  860.83 -
  860.84 -
  860.85 -	public: // New functions
  860.86 -
  860.87 -		/**
  860.88 -		* Gets the language-range from the "Accept-Language" header
  860.89 -		* @return a language-range
  860.90 -		*/
  860.91 -		IMPORT_C const TDesC8& LanguageRange() const;
  860.92 -
  860.93 -		/**
  860.94 -		* Sets the language-range in the "Accept-Language" header
  860.95 -		* @param aLanguageRange a language-range
  860.96 -		*/
  860.97 -		IMPORT_C void SetLanguageRangeL(const TDesC8& aLanguageRange);
  860.98 -
  860.99 -		/**
 860.100 -		* Gets the value of "q"-parameter
 860.101 -		* @return the "q"-parameter value
 860.102 -		*/
 860.103 -		IMPORT_C TReal QParameter() const;
 860.104 -
 860.105 -		/**
 860.106 -		* Sets the "q"-parameter value
 860.107 -		* @param aQValue a "q"-parameter value to set
 860.108 -		*/
 860.109 -		IMPORT_C void SetQParameterL(TReal aQValue);
 860.110 -
 860.111 -		/**
 860.112 -		* Constructs an instance of a CSIPAcceptLanguageHeader from a RReadStream
 860.113 -		* @param aReadStream a stream containing the value of the
 860.114 -		*        externalized header object (header name not included).
 860.115 -		* @return an instance of a CSIPAcceptLanguageHeader
 860.116 -		*/
 860.117 -		IMPORT_C static CSIPHeaderBase* 
 860.118 -			InternalizeValueL(RReadStream& aReadStream);
 860.119 -
 860.120 -
 860.121 -	public: // From CSIPHeaderBase
 860.122 -
 860.123 -		/**
 860.124 -		* From CSIPHeaderBase CloneL
 860.125 -		*/
 860.126 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 860.127 -		
 860.128 -		/**
 860.129 -		* From CSIPHeaderBase Name
 860.130 -		*/
 860.131 -		IMPORT_C RStringF Name() const;
 860.132 -
 860.133 -
 860.134 -	public: // From CSIPHeaderBase, for internal use
 860.135 -
 860.136 -        /**
 860.137 -        * @internalComponent
 860.138 -        */
 860.139 -		TBool MoreThanOneAllowed() const;
 860.140 -		
 860.141 -        /**
 860.142 -        * @internalComponent
 860.143 -        */
 860.144 -		TPreferredPlace PreferredPlaceInMessage() const;
 860.145 -
 860.146 -	public: // New functions, for internal use
 860.147 -
 860.148 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 860.149 -
 860.150 -	private: // From CSIPHeaderBase
 860.151 -
 860.152 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 860.153 -
 860.154 -	private: // From CSIPParameterHeaderBase
 860.155 -
 860.156 -		HBufC8* ToTextMandatoryPartLC() const;
 860.157 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 860.158 -		const CSIPParamContainerBase& Params() const;
 860.159 -		CSIPParamContainerBase& Params();
 860.160 -
 860.161 -	private: // New functions
 860.162 -
 860.163 -		CSIPAcceptLanguageHeader();
 860.164 -		void ConstructL();
 860.165 -		void ConstructL(const TDesC8& aLanguageRange);
 860.166 -		void ConstructL(const CSIPAcceptLanguageHeader& aAcceptLanguageHeader);
 860.167 -		void DoInternalizeValueL(RReadStream& aReadStream);
 860.168 -
 860.169 -	private: // Data
 860.170 -
 860.171 -		HBufC8* iLanguageRange;
 860.172 -		CSIPAcceptHeaderParams* iParams;
 860.173 -
 860.174 -	private: // For testing purposes
 860.175 -	
 860.176 -		UNIT_TEST(CSIPAcceptLanguageHeaderTest)
 860.177 -	};
 860.178 -
 860.179 -#endif // CSIPACCEPTLANGUAGEHEADER_H
 860.180 -
 860.181 -// End of File
   861.1 --- a/epoc32/include/sipaddress.h	Tue Mar 16 16:12:26 2010 +0000
   861.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   861.3 @@ -1,209 +0,0 @@
   861.4 -/*
   861.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   861.6 -* All rights reserved.
   861.7 -* This component and the accompanying materials are made available
   861.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   861.9 -* which accompanies this distribution, and is available
  861.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  861.11 -*
  861.12 -* Initial Contributors:
  861.13 -* Nokia Corporation - initial contribution.
  861.14 -*
  861.15 -* Contributors:
  861.16 -*
  861.17 -* Description:
  861.18 -* Name        : sipaddress.h
  861.19 -* Part of     : SIP Codec
  861.20 -* Interface   : SDK API, SIP Codec API
  861.21 -* Version     : SIP/4.0 
  861.22 -*
  861.23 -*/
  861.24 -
  861.25 -
  861.26 -
  861.27 -
  861.28 -#ifndef CSIPADDRESS_H
  861.29 -#define CSIPADDRESS_H
  861.30 -
  861.31 -//  INCLUDES
  861.32 -#include <e32base.h>
  861.33 -#include <s32mem.h>
  861.34 -#include <uri8.h>
  861.35 -#include "_sipcodecdefs.h"
  861.36 -
  861.37 -// FORWARD DECLARATIONS
  861.38 -class CURIContainer;
  861.39 -
  861.40 -// CLASS DECLARATION
  861.41 -/**
  861.42 -* @publishedAll
  861.43 -* @released
  861.44 -*
  861.45 -* Class provides functions for setting and getting parameters in SIP 
  861.46 -* name-addr structure
  861.47 -*
  861.48 -* @lib sipcodec.lib
  861.49 -*/
  861.50 -class CSIPAddress : public CBase
  861.51 -	{
  861.52 -	public:	// Constructors and destructor
  861.53 -
  861.54 -		/**
  861.55 -		* Constructs a CSIPAddress from textual representation 
  861.56 -		* @param aValue SIP name-addr as text
  861.57 -		* @return a new instance of CSIPAddress
  861.58 -		*/
  861.59 -		IMPORT_C static CSIPAddress* DecodeL(const TDesC8& aValue);
  861.60 -
  861.61 -		/**
  861.62 -		* Creates a new instance of CSIPAddress
  861.63 -		* @pre aUri != 0
  861.64 -		* @param aUri the ownership is transferred.
  861.65 -		* @return a new instance of CSIPAddress
  861.66 -		*/
  861.67 -		IMPORT_C static CSIPAddress* NewL(CUri8* aUri8);
  861.68 -
  861.69 -		/**
  861.70 -		* Creates a new instance of CSIPAddress and puts it to CleanupStack
  861.71 -		* @pre aUri != 0 
  861.72 -		* @param aUri the ownership is transferred.
  861.73 -		* @return a new instance of CSIPAddress
  861.74 -		*/
  861.75 -		IMPORT_C static CSIPAddress* NewLC(CUri8* aUri8);
  861.76 -
  861.77 -		/**
  861.78 -		* Creates a new instance of CSIPAddress
  861.79 -		* @pre aUri != 0
  861.80 -		* @param aDisplayName a SIP token or a SIP quoted-string
  861.81 -		* @param aUri the ownership is transferred.
  861.82 -		* @return a new instance of CSIPAddress
  861.83 -		*/
  861.84 -		IMPORT_C static CSIPAddress* NewL(const TDesC8& aDisplayName, 
  861.85 -		                                  CUri8* aUri8);
  861.86 -
  861.87 -		/**
  861.88 -		* Creates a new instance of CSIPAddress and puts it to CleanupStack
  861.89 -		* @pre aUri != 0
  861.90 -		* @param aDisplayName a SIP token or a SIP quoted-string
  861.91 -		* @param aUri the ownership is transferred.
  861.92 -		* @return a new instance of CSIPAddress
  861.93 -		*/
  861.94 -		IMPORT_C static CSIPAddress* NewLC(const TDesC8& aDisplayName,
  861.95 -									       CUri8* aUri8);
  861.96 -
  861.97 -		/**
  861.98 -		* Creates a deep-copy of a CSIPAddress
  861.99 -		* @param aSIPAddress the address to be copied
 861.100 -		* @return a new instance of CSIPAddress
 861.101 -		*/
 861.102 -		IMPORT_C static CSIPAddress* NewL(const CSIPAddress& aSIPAddress);
 861.103 -
 861.104 -		/**
 861.105 -		* Creates a deep-copy of a CSIPAddress and puts it to CleanupStack
 861.106 -		* @param aSIPAddress the address to be copied
 861.107 -		* @return a new instance of CSIPAddress
 861.108 -		*/
 861.109 -		IMPORT_C static CSIPAddress* NewLC(const CSIPAddress& aSIPAddress);
 861.110 -
 861.111 -		/**
 861.112 -		* Destructor, deletes the resources of CSIPAddress.
 861.113 -		*/
 861.114 -		IMPORT_C ~CSIPAddress();
 861.115 -
 861.116 -
 861.117 -	public: // New functions
 861.118 -
 861.119 -		/**
 861.120 -		* Compares this object to another instance of CSIPAddress
 861.121 -		* @param aSIPAddress a CSIPAddress to compare to
 861.122 -		* @return ETrue if the objects are equal otherwise EFalse
 861.123 -		*/
 861.124 -		IMPORT_C TBool operator==(const CSIPAddress& aSIPAddress) const;
 861.125 -	
 861.126 -		/**
 861.127 -		* Gets the display name
 861.128 -		* @return the display name if present, 
 861.129 -		* 		   otherwise a zero-length descriptor 
 861.130 -		*/
 861.131 -		IMPORT_C const TDesC8& DisplayName() const;
 861.132 -	
 861.133 -		/**
 861.134 -		* Sets the display name
 861.135 -		* @param aDisplayName a SIP token or a SIP quoted-string
 861.136 -		*/
 861.137 -		IMPORT_C void SetDisplayNameL(const TDesC8& aDisplayName);
 861.138 -
 861.139 -		/**
 861.140 -		* Gets the URI part of the address as const
 861.141 -		* @return a reference to the URI object
 861.142 -		*/
 861.143 -		IMPORT_C const CUri8& Uri8() const;
 861.144 -	
 861.145 -		/**
 861.146 -		* Sets the URI part of the address
 861.147 -		* @pre aUri!= 0
 861.148 -		* @param aUri a pointer to the URI object, the ownership is transferred
 861.149 -		*/
 861.150 -		IMPORT_C void SetUri8L(CUri8* aUri8);
 861.151 -
 861.152 -		/**
 861.153 -		* Creates a textual representation and pushes it to CleanupStack
 861.154 -		* @param aUseAngleBrackets if ETrue, sets the anglebrackets
 861.155 -		* @return a textual representation of the object,
 861.156 -		*          the ownership is transferred
 861.157 -		*/
 861.158 -		IMPORT_C HBufC8* ToTextLC(TBool aUseAngleBrackets=EFalse) const;
 861.159 -
 861.160 -		/**
 861.161 -		* Constructs an instance of a CSIPAddress from a RReadStream
 861.162 -		* @param aReadStream a stream containing the externalized object
 861.163 -		* @return an instance of a CSIPAddress
 861.164 -		*/
 861.165 -		IMPORT_C static CSIPAddress* InternalizeL(RReadStream& aReadStream);
 861.166 -	
 861.167 -		/**
 861.168 -		* Writes the object to a RWriteStream
 861.169 -		* @param aWriteStream a stream where the object is to be externalized
 861.170 -		*/
 861.171 -		IMPORT_C void ExternalizeL(RWriteStream& aWriteStream);
 861.172 -
 861.173 -
 861.174 -	public: // For internal use:
 861.175 -
 861.176 -		IMPORT_C CURIContainer& URI();
 861.177 -		IMPORT_C const CURIContainer& URI() const;
 861.178 -		static CSIPAddress* NewLC(CURIContainer* aURI);
 861.179 -		
 861.180 -
 861.181 -	private: // Constructors
 861.182 -	
 861.183 -		CSIPAddress();
 861.184 -		void ConstructL();
 861.185 -		void ConstructL(CUri8* aUri);
 861.186 -		void ConstructL(const TDesC8& aDisplayName, CUri8* aUri);
 861.187 -		void ConstructL(const CSIPAddress& aSIPAddress);
 861.188 -		void ConstructL(CURIContainer* aURI);
 861.189 -
 861.190 -	private: // New functions
 861.191 -
 861.192 -		void DoInternalizeL(RReadStream& aReadStream);
 861.193 -		TInt QuotedStringLength(const TDesC8& aValue);
 861.194 -		TBool CheckDisplayName(const TDesC8& aValue);
 861.195 -		void ParseURIInAngleBracketsL(const TDesC8& aValue);
 861.196 -		void ParseURIL(const TDesC8& aValue);
 861.197 -		TBool ContainsSeparators(const TDesC8& aValue) const;
 861.198 -		TBool HasDisplayName() const;
 861.199 -
 861.200 -	private: // Data
 861.201 -
 861.202 -		HBufC8* iDisplayName;
 861.203 -		CURIContainer* iURI;
 861.204 -
 861.205 -	private: // For testing purposes
 861.206 -	
 861.207 -		UNIT_TEST(CSIPAddressTest)
 861.208 -    };
 861.209 -
 861.210 -#endif // end of __SIP_ADDRESS_H__
 861.211 -
 861.212 -// End of File
   862.1 --- a/epoc32/include/sipaddressheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   862.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   862.3 @@ -1,118 +0,0 @@
   862.4 -/*
   862.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   862.6 -* All rights reserved.
   862.7 -* This component and the accompanying materials are made available
   862.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   862.9 -* which accompanies this distribution, and is available
  862.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  862.11 -*
  862.12 -* Initial Contributors:
  862.13 -* Nokia Corporation - initial contribution.
  862.14 -*
  862.15 -* Contributors:
  862.16 -*
  862.17 -* Description:
  862.18 -* Name        : sipaddressheaderbase.h
  862.19 -* Part of     : SIP Codec
  862.20 -* Interface   : SDK API, SIP Codec API
  862.21 -* Version     : SIP/4.0 
  862.22 -*
  862.23 -*/
  862.24 -
  862.25 -
  862.26 -
  862.27 -
  862.28 -#ifndef CSIPADDRESSHEADERBASE_H
  862.29 -#define CSIPADDRESSHEADERBASE_H
  862.30 -
  862.31 -//  INCLUDES
  862.32 -#include "sipparameterheaderbase.h"
  862.33 -#include "_sipcodecdefs.h"
  862.34 -
  862.35 -// FORWARD DECLARATIONS
  862.36 -class CSIPAddress;
  862.37 -class CSIPHeaderGenericParams;
  862.38 -
  862.39 -// CLASS DECLARATION
  862.40 -/**
  862.41 -* @publishedAll
  862.42 -* @released
  862.43 -*
  862.44 -* A base class for SIP headers having syntax
  862.45 -* ( name-addr/ addr-spec ) *(generic-param)
  862.46 -*
  862.47 -*  @lib sipcodec.lib
  862.48 -*/
  862.49 -class CSIPAddressHeaderBase : public CSIPParameterHeaderBase
  862.50 -	{
  862.51 -	public:	// Constructors and destructor
  862.52 -
  862.53 -		/**
  862.54 -		* Destructor, deletes the resources of CSIPAddressHeaderBase.
  862.55 -		*/
  862.56 -        IMPORT_C virtual ~CSIPAddressHeaderBase();
  862.57 -
  862.58 -
  862.59 -	public: // New functions
  862.60 -
  862.61 -		/**
  862.62 -		* Sets the name-address
  862.63 -		* @pre aSIPAddress != 0
  862.64 -		* @param aSIPAddress a name-address to set, the ownership is transferred
  862.65 -		*/
  862.66 -		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
  862.67 -
  862.68 -		/**
  862.69 -		* Gets the name-address as const
  862.70 -		* @return name-address object
  862.71 -		*/
  862.72 -		IMPORT_C const CSIPAddress& SIPAddress() const;
  862.73 -
  862.74 -		/**
  862.75 -		* Gets the name-address
  862.76 -		* @return name-address object
  862.77 -		*/
  862.78 -		IMPORT_C CSIPAddress& SIPAddress();
  862.79 -
  862.80 -
  862.81 -	protected: // Constructors
  862.82 -
  862.83 -		CSIPAddressHeaderBase();
  862.84 -        void ConstructL();
  862.85 -		void ConstructL(CSIPAddress* aSIPAddress);
  862.86 -        void ConstructL(const CSIPAddressHeaderBase& aHeader);
  862.87 -
  862.88 -	protected: // Data
  862.89 -
  862.90 -        /**
  862.91 -        * @internalComponent
  862.92 -        */
  862.93 -		CSIPAddress* iSIPAddress;
  862.94 -		
  862.95 -        /**
  862.96 -        * @internalComponent
  862.97 -        */		
  862.98 -		CSIPHeaderGenericParams* iParams;
  862.99 -
 862.100 -	protected: // New functions
 862.101 -
 862.102 -		void DoInternalizeValueL(RReadStream& aReadStream);
 862.103 -
 862.104 -	protected: // From CSIPHeaderBase
 862.105 -
 862.106 -        /**
 862.107 -        * @internalComponent
 862.108 -        */
 862.109 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 862.110 -
 862.111 -	private: // From CSIPParameterHeaderBase
 862.112 -
 862.113 -		HBufC8* ToTextMandatoryPartLC() const;
 862.114 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 862.115 -		const CSIPParamContainerBase& Params() const;
 862.116 -		CSIPParamContainerBase& Params();
 862.117 -	};
 862.118 -
 862.119 -#endif // end of CSIPADDRESSHEADERBASE_H
 862.120 -
 862.121 -// End of File
   863.1 --- a/epoc32/include/sipalloweventsheader.h	Tue Mar 16 16:12:26 2010 +0000
   863.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   863.3 @@ -1,190 +0,0 @@
   863.4 -/*
   863.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   863.6 -* All rights reserved.
   863.7 -* This component and the accompanying materials are made available
   863.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   863.9 -* which accompanies this distribution, and is available
  863.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  863.11 -*
  863.12 -* Initial Contributors:
  863.13 -* Nokia Corporation - initial contribution.
  863.14 -*
  863.15 -* Contributors:
  863.16 -*
  863.17 -* Description:
  863.18 -* Name        : sipalloweventsheader.h
  863.19 -* Part of     : SIP Codec
  863.20 -* Interface   : SDK API, SIP Codec API
  863.21 -* Version     : SIP/4.0 
  863.22 -*
  863.23 -*/
  863.24 -
  863.25 -
  863.26 -
  863.27 -
  863.28 -#ifndef CSIPALLOWEVENTSHEADER_H
  863.29 -#define CSIPALLOWEVENTSHEADER_H
  863.30 -
  863.31 -//  INCLUDES
  863.32 -#include <badesca.h>
  863.33 -#include "sipheaderbase.h"
  863.34 -#include "_sipcodecdefs.h"
  863.35 -
  863.36 -// CLASS DECLARATION
  863.37 -/**
  863.38 -* @publishedAll
  863.39 -* @released
  863.40 -*
  863.41 -* Class provides functions for setting and getting parameters in 
  863.42 -* SIP "Allow-Events" header.
  863.43 -*
  863.44 -*  @lib sipcodec.lib
  863.45 -*/
  863.46 -class CSIPAllowEventsHeader : public CSIPHeaderBase
  863.47 -	{
  863.48 -	public: // Constructors and destructor
  863.49 -	
  863.50 -		/**
  863.51 -		* Constructs a CSIPAllowEventsHeader from textual representation 
  863.52 -		* of the header's value part.
  863.53 -		* @param aValue a value part of a "Allow-Events"-header
  863.54 -		* @return An array containing one to many instances of 
  863.55 -		*         CSIPAllowEventsHeader  
  863.56 -		*/
  863.57 -		IMPORT_C static RPointerArray<CSIPAllowEventsHeader> 
  863.58 -			DecodeL(const TDesC8& aValue);
  863.59 -
  863.60 -		/**
  863.61 -		* Creates a new instance of CSIPAllowEventsHeader
  863.62 -		* @param aEventPackage a Event-Package value
  863.63 -		* @return a new instance of CSIPAllowEventsHeader
  863.64 -		*/
  863.65 -		IMPORT_C static CSIPAllowEventsHeader* 
  863.66 -			NewL(const TDesC8& aEventPackage);
  863.67 -
  863.68 -		/**
  863.69 -		* Creates a new instance of CSIPAllowEventsHeader and 
  863.70 -		* puts it to CleanupStack
  863.71 -		* @param aEventPackage a Event-Package value
  863.72 -		* @return a new instance of CSIPAllowEventsHeader
  863.73 -		*/
  863.74 -		IMPORT_C static CSIPAllowEventsHeader* NewLC(const TDesC8& aEventPackage);
  863.75 -
  863.76 -		/**
  863.77 -		* Destructor. deletes the resources of CSIPAllowEventsHeader.
  863.78 -		*/
  863.79 -		IMPORT_C ~CSIPAllowEventsHeader();
  863.80 -
  863.81 -	public: // New functions
  863.82 -
  863.83 -		/**
  863.84 -		* Gets the Event-Package parameter from the "Allow-Events" header
  863.85 -		* @return the Event-Package parameter
  863.86 -		*/
  863.87 -		IMPORT_C const TDesC8& EventPackage() const;
  863.88 -
  863.89 -		/**
  863.90 -		* Sets the Event-Package parameter in the "Allow-Events" header; 
  863.91 -		* @param aEventPackage a Event-Package parameter to set
  863.92 -		*/
  863.93 -		IMPORT_C void SetEventPackageL(const TDesC8& aEventPackage);
  863.94 -
  863.95 -		/**
  863.96 -		* Sets the event templates overwriting all the existing ones.
  863.97 -		* @param aEventTemplates
  863.98 -		*/
  863.99 -		IMPORT_C void SetEventTemplatesL(const MDesC8Array& aEventTemplates);
 863.100 -	
 863.101 -		/**
 863.102 -		* Gets the event templates.
 863.103 -		* @return a reference to the currently set event templates.
 863.104 -		*/
 863.105 -
 863.106 -		IMPORT_C const MDesC8Array& EventTemplates() const;
 863.107 -
 863.108 -		/**
 863.109 -		* Constructs an instance of a CSIPAllowEventsHeader from a RReadStream
 863.110 -		* @param aReadStream a stream containing the value of the
 863.111 -		*        externalized object (header name not included). 
 863.112 -		*/
 863.113 -
 863.114 -		IMPORT_C static CSIPHeaderBase* 
 863.115 -			InternalizeValueL(RReadStream& aReadStream);
 863.116 -
 863.117 -
 863.118 -	public: // From CSIPHeaderBase
 863.119 -
 863.120 -		/**
 863.121 -		* From CSIPHeaderBase CloneL
 863.122 -		*/
 863.123 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 863.124 -
 863.125 -		/**
 863.126 -		* From CSIPHeaderBase Name
 863.127 -		*/
 863.128 -		IMPORT_C RStringF Name() const;
 863.129 -
 863.130 -		/**
 863.131 -		* From CSIPHeaderBase ToTextValueL
 863.132 -		*/
 863.133 -		IMPORT_C HBufC8* ToTextValueL() const;
 863.134 -
 863.135 -
 863.136 -	public: // New functions, for internal use
 863.137 -
 863.138 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 863.139 -
 863.140 -	public: // From CSIPHeaderBase, for internal use 
 863.141 -
 863.142 -        /**
 863.143 -        * @internalComponent
 863.144 -        */	
 863.145 -		TBool MoreThanOneAllowed() const;
 863.146 -		
 863.147 -        /**
 863.148 -        * @internalComponent
 863.149 -        */		
 863.150 -		TBool HasCompactName() const;
 863.151 -		
 863.152 -        /**
 863.153 -        * @internalComponent
 863.154 -        */		
 863.155 -		RStringF CompactName() const;
 863.156 -		
 863.157 -        /**
 863.158 -        * @internalComponent
 863.159 -        */		
 863.160 -		TPreferredPlace PreferredPlaceInMessage() const;
 863.161 -
 863.162 -	private: // From CSIPHeaderBase
 863.163 -
 863.164 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 863.165 -
 863.166 -	private: // Contructors
 863.167 -
 863.168 -		CSIPAllowEventsHeader();
 863.169 -		void ConstructL();
 863.170 -		void ConstructL(const TDesC8& aEventPackage);
 863.171 -		void ConstructL (const CSIPAllowEventsHeader& aSIPAllowEventsHeader);
 863.172 -
 863.173 -	private: // New functions
 863.174 -
 863.175 -		void DoInternalizeValueL(RReadStream& aReadStream);
 863.176 -		void ParseL(const TDesC8& aValue);
 863.177 -		void CheckTemplateL(const TDesC8& aParam) const;
 863.178 -		// Needed for cleanup of a RPointerArray<HBufC8>:
 863.179 -		static void ResetAndDestroy(TAny* anArray);
 863.180 -
 863.181 -	private: // Data
 863.182 -
 863.183 -		HBufC8* iEventPackage;
 863.184 -		CDesC8ArraySeg* iEventTemplates;
 863.185 -
 863.186 -	private: // For testing purposes
 863.187 -	
 863.188 -		UNIT_TEST(CSIPAllowEventsHeaderTest)
 863.189 -	};
 863.190 -
 863.191 -#endif // CSIPALLOWEVENTSHEADER_H
 863.192 -
 863.193 -// End of File
   864.1 --- a/epoc32/include/sipallowheader.h	Tue Mar 16 16:12:26 2010 +0000
   864.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   864.3 @@ -1,119 +0,0 @@
   864.4 -/*
   864.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   864.6 -* All rights reserved.
   864.7 -* This component and the accompanying materials are made available
   864.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   864.9 -* which accompanies this distribution, and is available
  864.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  864.11 -*
  864.12 -* Initial Contributors:
  864.13 -* Nokia Corporation - initial contribution.
  864.14 -*
  864.15 -* Contributors:
  864.16 -*
  864.17 -* Description:
  864.18 -* Name        : sipallowheader.h
  864.19 -* Part of     : SIP Codec
  864.20 -* Interface   : SDK API, SIP Codec API
  864.21 -* Version     : SIP/4.0 
  864.22 -*
  864.23 -*/
  864.24 -
  864.25 -
  864.26 -
  864.27 -
  864.28 -#ifndef CSIPALLOWHEADER_H
  864.29 -#define CSIPALLOWHEADER_H
  864.30 -
  864.31 -//  INCLUDES
  864.32 -#include "siptokenheaderbase.h"
  864.33 -#include "_sipcodecdefs.h"
  864.34 -
  864.35 -// CLASS DECLARATION
  864.36 -/**
  864.37 -* @publishedAll
  864.38 -* @released
  864.39 -*
  864.40 -* Class provides functions for setting and getting parameters 
  864.41 -* in SIP "Allow" header.
  864.42 -*
  864.43 -*  @lib sipcodec.lib
  864.44 -*/
  864.45 -class CSIPAllowHeader : public CSIPTokenHeaderBase
  864.46 -	{
  864.47 -	public:	// Constructors and destructor
  864.48 -
  864.49 -		/**
  864.50 -		* Constructs a CSIPAllowHeader from textual representation 
  864.51 -		* of the header's value part.
  864.52 -		* @param aValue a value part of a "Allow"-header
  864.53 -		* @return an array containing one to many instances of CSIPAllowHeader
  864.54 -		*/
  864.55 -		IMPORT_C static RPointerArray<CSIPAllowHeader> 
  864.56 -			DecodeL(const TDesC8& aValue);
  864.57 -
  864.58 -		/**
  864.59 -		* Creates a new instance of CSIPAllowHeader
  864.60 -		* @param aValue a value 
  864.61 -		* @return a new instance of CSIPAllowHeader
  864.62 -		*/
  864.63 -		IMPORT_C static CSIPAllowHeader* NewL(RStringF aValue);
  864.64 -
  864.65 -		/**
  864.66 -		* Creates a new instance of CSIPAllowHeader and puts it to CleanupStack
  864.67 -		* @param aValue a value   
  864.68 -		* @return a new instance of CSIPAllowHeader
  864.69 -		*/
  864.70 -		IMPORT_C static CSIPAllowHeader* NewLC(RStringF aValue);
  864.71 -
  864.72 -		/**
  864.73 -		* Destructor, deletes the resources of CSIPAllowHeader.
  864.74 -		*/
  864.75 -		IMPORT_C ~CSIPAllowHeader();
  864.76 -
  864.77 -
  864.78 -	public: // New functions
  864.79 -
  864.80 -		/**
  864.81 -		* Constructs an instance of a CSIPAllowHeader from a RReadStream
  864.82 -		* @param aReadStream a stream containing the value of the
  864.83 -		*        externalized object (header name not included). 
  864.84 -		* @return an instance of a CSIPAllowHeader
  864.85 -		*/
  864.86 -		IMPORT_C static CSIPHeaderBase* 
  864.87 -			InternalizeValueL(RReadStream& aReadStream);
  864.88 -
  864.89 -
  864.90 -	public: // From CSIPHeaderBase
  864.91 -		
  864.92 -		/**
  864.93 -		* From CSIPHeaderBase CloneL
  864.94 -		*/
  864.95 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  864.96 -
  864.97 -		/**
  864.98 -		* From CSIPHeaderBase Name
  864.99 -		*/
 864.100 -		IMPORT_C RStringF Name() const;
 864.101 -
 864.102 -
 864.103 -	public: // From CSIPHeaderBase, for internal use
 864.104 -
 864.105 -        /**
 864.106 -        * @internalComponent
 864.107 -        */
 864.108 -		TPreferredPlace PreferredPlaceInMessage() const;
 864.109 -
 864.110 -	public: // New functions, for internal use
 864.111 -
 864.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 864.113 -
 864.114 -	private: // Constructors
 864.115 -
 864.116 -		CSIPAllowHeader();
 864.117 -		CSIPAllowHeader(const CSIPAllowHeader& aHeader);
 864.118 -	};
 864.119 -
 864.120 -#endif // CSIPALLOWHEADER_H
 864.121 -
 864.122 -// End of File
   865.1 --- a/epoc32/include/sipauthenticateheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   865.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   865.3 @@ -1,94 +0,0 @@
   865.4 -/*
   865.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   865.6 -* All rights reserved.
   865.7 -* This component and the accompanying materials are made available
   865.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   865.9 -* which accompanies this distribution, and is available
  865.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  865.11 -*
  865.12 -* Initial Contributors:
  865.13 -* Nokia Corporation - initial contribution.
  865.14 -*
  865.15 -* Contributors:
  865.16 -*
  865.17 -* Description:
  865.18 -* Name          : sipauthenticateheaderbase.h
  865.19 -* Part of       : SIP Codec
  865.20 -* Version       : SIP/5.0 
  865.21 -*
  865.22 -*/
  865.23 -
  865.24 -
  865.25 -
  865.26 -#ifndef CSIPAUTHENTICATEHEADERBASE_H
  865.27 -#define CSIPAUTHENTICATEHEADERBASE_H
  865.28 -
  865.29 -//  INCLUDES
  865.30 -#include "sipauthheaderbase.h"
  865.31 -#include "_sipcodecdefs.h"
  865.32 -
  865.33 -// FORWARD DECLARATIONS
  865.34 -class CSIPAuthenticateHeaderParams;
  865.35 -
  865.36 -// CLASS DECLARATION
  865.37 -/**
  865.38 -* @publishedAll
  865.39 -* @released
  865.40 -*
  865.41 -* A base class for SIP Proxy-Authenticate- and WWW-Authenticate-headers
  865.42 -*
  865.43 -* @lib sipcodec.lib
  865.44 -*/
  865.45 -class CSIPAuthenticateHeaderBase : public CSIPAuthHeaderBase
  865.46 -	{
  865.47 -	public: // Constructors and destructor
  865.48 -
  865.49 -		/**
  865.50 -		* Destructor.
  865.51 -		*/
  865.52 -		IMPORT_C virtual ~CSIPAuthenticateHeaderBase();
  865.53 -
  865.54 -
  865.55 -	public: // New functions
  865.56 -
  865.57 -		/**
  865.58 -		* Check whether a qop-value in qop-options is present. 
  865.59 -		* @param aQopValue the qop-value
  865.60 -		* @return ETrue if present, otherwise EFalse. 
  865.61 -		*/
  865.62 -		IMPORT_C TBool HasQopValueL(const TDesC8& aQopValue) const;
  865.63 -
  865.64 -	public: // From CSIPHeaderBase
  865.65 -
  865.66 -		/**
  865.67 -		* From CSIPHeaderBase ExternalizeSupported
  865.68 -		*/
  865.69 -		IMPORT_C virtual TBool ExternalizeSupported() const;
  865.70 -		
  865.71 -	protected: // Constructors
  865.72 -
  865.73 -		CSIPAuthenticateHeaderBase();
  865.74 -		void ConstructL();
  865.75 -		void ConstructL(const CSIPAuthenticateHeaderBase& aHeader);
  865.76 -
  865.77 -	protected: // From CSIPHeaderBase
  865.78 -
  865.79 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
  865.80 -
  865.81 -	protected: // From CSIPAuthBase
  865.82 -
  865.83 -		const CSIPParamContainerBase& Params() const;
  865.84 -		CSIPParamContainerBase& Params();
  865.85 -
  865.86 -	protected: // New functions
  865.87 -
  865.88 -		void DoInternalizeValueL(RReadStream& aReadStream);
  865.89 -
  865.90 -	protected: // Data
  865.91 -
  865.92 -		CSIPAuthenticateHeaderParams* iParams;
  865.93 -	};
  865.94 -
  865.95 -#endif // CSIPAUTHENTICATEHEADERBASE_H
  865.96 -
  865.97 -// End of File
   866.1 --- a/epoc32/include/sipauthheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   866.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   866.3 @@ -1,165 +0,0 @@
   866.4 -/*
   866.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   866.6 -* All rights reserved.
   866.7 -* This component and the accompanying materials are made available
   866.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   866.9 -* which accompanies this distribution, and is available
  866.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  866.11 -*
  866.12 -* Initial Contributors:
  866.13 -* Nokia Corporation - initial contribution.
  866.14 -*
  866.15 -* Contributors:
  866.16 -*
  866.17 -* Description:
  866.18 -* Name          : sipauthheaderbase.h
  866.19 -* Part of       : SIP Codec
  866.20 -* Version       : SIP/5.0 
  866.21 -*
  866.22 -*/
  866.23 -
  866.24 -
  866.25 -
  866.26 -#ifndef CSIPAUTHHEADERBASE_H
  866.27 -#define CSIPAUTHHEADERBASE_H
  866.28 -
  866.29 -//  INCLUDES
  866.30 -#include "sipheaderbase.h"
  866.31 -#include "_sipcodecdefs.h"
  866.32 -
  866.33 -// FORWARD DECLARATIONS
  866.34 -class CSIPParamContainerBase;
  866.35 -
  866.36 -// CLASS DECLARATION
  866.37 -/**
  866.38 -* @publishedAll
  866.39 -* @released
  866.40 -*
  866.41 -* A base class for SIP Authorization-, Proxy-Authenticate-, 
  866.42 -* Proxy-Authorization- and WWW-Authenticate-headers
  866.43 -*
  866.44 -* @lib sipcodec.lib
  866.45 -*/
  866.46 -class CSIPAuthHeaderBase : public CSIPHeaderBase
  866.47 -	{
  866.48 -	public: // Constructors and destructor
  866.49 -
  866.50 -		/**
  866.51 -		* Destructor.
  866.52 -		*/
  866.53 -		IMPORT_C virtual ~CSIPAuthHeaderBase();
  866.54 -
  866.55 -
  866.56 -	public:	// New functions
  866.57 -
  866.58 -		/**
  866.59 -		* @return the value of the auth-scheme
  866.60 -		*/
  866.61 -		IMPORT_C RStringF AuthScheme() const;
  866.62 -
  866.63 -		/**
  866.64 -		* Checks if a parameter is present
  866.65 -		* @param aName the name of the parameter
  866.66 -		* @return ETrue if present, otherwise EFalse
  866.67 -		*/
  866.68 -		IMPORT_C TBool HasParam(RStringF aName) const;
  866.69 -
  866.70 -		/**
  866.71 -		* Gets a parameter value
  866.72 -		* @pre HasParam(aName) == ETrue
  866.73 -		* @param aName the name of the parameter
  866.74 -		* @return the parameter value if present,
  866.75 -		*         otherwise a zero-length length value.
  866.76 -		*/
  866.77 -		IMPORT_C RStringF ParamValue(RStringF aName) const;
  866.78 -
  866.79 -		/**
  866.80 -		* Gets a parameter value stored as a descriptor
  866.81 -		* @pre HasParam(aName) == ETrue
  866.82 -		* @param aName the name of the parameter
  866.83 -		* @return the parameter value if present,
  866.84 -		*         otherwise a zero-length length value.
  866.85 -		*/
  866.86 -		IMPORT_C const TDesC8& DesParamValue(RStringF aName) const;
  866.87 -
  866.88 -		/**
  866.89 -		* Sets a parameter with a value. 
  866.90 -		* Takes copies of the name and value,
  866.91 -		* so if the RStringFs have been dynamically allocated,
  866.92 -		* they can be closed if necessary after the function returns.
  866.93 -		* @pre HasParam(aName) == EFalse
  866.94 -		* @param aName the name of the parameter
  866.95 -		* @param aValue the parameter value to set
  866.96 -		*/
  866.97 -		IMPORT_C void SetParamL(RStringF aName, RStringF aValue);
  866.98 -
  866.99 -		/**
 866.100 -		* Sets a parameter with a value. 
 866.101 -		* Takes copies of the name 
 866.102 -		* so if the RStringF have been dynamically allocated,
 866.103 -		* they can be closed if necessary after the function returns.
 866.104 -		* Stores the parameter value as a descriptor, so that the 
 866.105 -		* case-sensitivity is not lost in RStringF-descriptor conversions. 
 866.106 -		* @pre HasParam(aName) == EFalse
 866.107 -		* @param aName the name of the parameter
 866.108 -		* @param aValue the parameter value to set
 866.109 -		*/
 866.110 -		IMPORT_C void SetDesParamL(RStringF aName, const TDesC8& aValue);
 866.111 -
 866.112 -		/**
 866.113 -		* Sets a parameter with a value and adds double quotes 
 866.114 -		* as the first and the last character in the value.
 866.115 -		* Takes copy of the name,
 866.116 -		* so if the RStringF has been dynamically allocated,
 866.117 -		* it can be closed if necessary after the function returns.
 866.118 -		* @pre HasParam(aName) == EFalse
 866.119 -		* @param aName the name of the parameter
 866.120 -		* @param aValue the parameter value 
 866.121 -		*        to which the double quotes will be added
 866.122 -		*/
 866.123 -		IMPORT_C void SetParamAndAddQuotesL(RStringF aName,
 866.124 -			                                const TDesC8& aValue);
 866.125 -
 866.126 -		/**
 866.127 -		* Deletes a parameter
 866.128 -		* @param aName the parameter name to delete
 866.129 -		*/
 866.130 -		IMPORT_C void DeleteParam(RStringF aName);
 866.131 -
 866.132 -
 866.133 -	public: // From CSIPHeaderBase
 866.134 -
 866.135 -		/**
 866.136 -		* From CSIPHeaderBase ExternalizeSupported
 866.137 -		*/
 866.138 -		IMPORT_C virtual TBool ExternalizeSupported() const;
 866.139 -
 866.140 -
 866.141 -	public: // From CSIPHeaderBase, for internal use
 866.142 -
 866.143 -		TBool EncodeMultipleToOneLine() const;
 866.144 -		TBool MoreThanOneAllowed() const;
 866.145 -		TPreferredPlace PreferredPlaceInMessage() const;
 866.146 -        virtual HBufC8* ToTextValueL() const;
 866.147 -
 866.148 -	protected: // Constructors
 866.149 -
 866.150 -		CSIPAuthHeaderBase();
 866.151 -		void ConstructL(RStringF aAuthScheme);
 866.152 -
 866.153 -	protected: // New functions
 866.154 -
 866.155 -		void SetAuthSchemeL(const TDesC8& aAuthScheme);
 866.156 -        void ParseL(const TDesC8& aValue);
 866.157 -        virtual const CSIPParamContainerBase& Params() const = 0;
 866.158 -        virtual CSIPParamContainerBase& Params() = 0;
 866.159 -
 866.160 -	private: // Data
 866.161 -
 866.162 -		RStringF iAuthScheme;
 866.163 -        TChar iSeparator;
 866.164 -	};
 866.165 -
 866.166 -#endif // CSIPAUTHHEADERBASE_H
 866.167 -
 866.168 -// End of File
   867.1 --- a/epoc32/include/sipauthorizationheader.h	Tue Mar 16 16:12:26 2010 +0000
   867.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   867.3 @@ -1,131 +0,0 @@
   867.4 -/*
   867.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   867.6 -* All rights reserved.
   867.7 -* This component and the accompanying materials are made available
   867.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   867.9 -* which accompanies this distribution, and is available
  867.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  867.11 -*
  867.12 -* Initial Contributors:
  867.13 -* Nokia Corporation - initial contribution.
  867.14 -*
  867.15 -* Contributors:
  867.16 -*
  867.17 -* Description:
  867.18 -* Name          : sipauthorizationheader.h
  867.19 -* Part of       : SIP Codec
  867.20 -* Version       : SIP/6.0 
  867.21 -*
  867.22 -*/
  867.23 -
  867.24 -
  867.25 -
  867.26 -#ifndef CSIPAUTHORIZATIONHEADER_H
  867.27 -#define CSIPAUTHORIZATIONHEADER_H
  867.28 -
  867.29 -//  INCLUDES
  867.30 -#include "sipauthorizationheaderbase.h"
  867.31 -#include "_sipcodecdefs.h"
  867.32 -
  867.33 -// CLASS DECLARATION
  867.34 -/**
  867.35 -* @publishedAll
  867.36 -* @released
  867.37 -*
  867.38 -* Class for SIP Authorization-header manipulation.
  867.39 -* @lib sipcodec.lib
  867.40 -*/
  867.41 -class CSIPAuthorizationHeader : public CSIPAuthorizationHeaderBase
  867.42 -	{
  867.43 -	public:	// Constructors and destructor
  867.44 -
  867.45 -		/**
  867.46 -		* Constructs a CSIPAuthorizationHeader 
  867.47 -		* from textual representation of the header's value part.
  867.48 -		* @param aValue a value part of a "Proxy-Authenticate"-header 
  867.49 -		* @return a new instance of CSIPAuthorizationHeader
  867.50 -		*/
  867.51 -		IMPORT_C static CSIPAuthorizationHeader* 
  867.52 -			DecodeL(const TDesC8& aValue);
  867.53 -
  867.54 -		/**
  867.55 -		* Creates a new instance of CSIPAuthorizationHeader
  867.56 -		* @return a new instance of CSIPAuthorizationHeader
  867.57 -		*/
  867.58 -		IMPORT_C static CSIPAuthorizationHeader* 
  867.59 -			NewL(RStringF aAuthScheme);
  867.60 -
  867.61 -		/**
  867.62 -		* Creates a new instance of CSIPAuthorizationHeader
  867.63 -		* @return a new instance of CSIPAuthorizationHeader
  867.64 -		*/
  867.65 -		IMPORT_C static CSIPAuthorizationHeader* 
  867.66 -			NewLC(RStringF aAuthScheme);
  867.67 -
  867.68 -		/**
  867.69 -		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  867.70 -		* @param aAuthenticateHeaderBase to be copied
  867.71 -		* @return a new instance of CSIPAuthorizationHeader
  867.72 -		*/
  867.73 -		IMPORT_C static CSIPAuthorizationHeader* 
  867.74 -			NewL(const CSIPAuthorizationHeaderBase& aHeader);
  867.75 -
  867.76 -		/**
  867.77 -		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  867.78 -		* @param aAuthenticateHeaderBase to be copied
  867.79 -		* @return a new instance of CSIPAuthorizationHeader
  867.80 -		*/
  867.81 -		IMPORT_C static CSIPAuthorizationHeader* 
  867.82 -			NewLC(const CSIPAuthorizationHeaderBase& aHeader);
  867.83 -
  867.84 -		/**
  867.85 -		* Destructor
  867.86 -		*/
  867.87 -		IMPORT_C ~CSIPAuthorizationHeader();
  867.88 -
  867.89 -	public: // From CSIPHeaderBase
  867.90 -
  867.91 -		/**
  867.92 -		* From CSIPHeaderBase ExternalizeSupported
  867.93 -		*/
  867.94 -		IMPORT_C TBool ExternalizeSupported() const;
  867.95 -
  867.96 -		/**
  867.97 -		* From CSIPHeaderBase CloneL
  867.98 -		*/
  867.99 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 867.100 -		
 867.101 -		/**
 867.102 -		* From CSIPHeaderBase Name
 867.103 -		*/		
 867.104 -		IMPORT_C RStringF Name() const;
 867.105 -
 867.106 -
 867.107 -	public: // New functions, for internal use
 867.108 -
 867.109 -        /**
 867.110 -        * @internalComponent
 867.111 -        */
 867.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 867.113 -		
 867.114 -        /**
 867.115 -        * @internalComponent
 867.116 -        */		
 867.117 -		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
 867.118 -
 867.119 -	private: // Constructors
 867.120 -
 867.121 -		CSIPAuthorizationHeader();
 867.122 -
 867.123 -	private: // From CSIPHeaderBase
 867.124 -
 867.125 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 867.126 -
 867.127 -    private: // For testing purposes
 867.128 -
 867.129 -        UNIT_TEST(CSIPAuthorizationHeaderTest)
 867.130 -	};
 867.131 -
 867.132 -#endif // CSIPAUTHORIZATIONHEADER_H
 867.133 -
 867.134 -// End of File
   868.1 --- a/epoc32/include/sipauthorizationheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   868.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   868.3 @@ -1,72 +0,0 @@
   868.4 -/*
   868.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   868.6 -* All rights reserved.
   868.7 -* This component and the accompanying materials are made available
   868.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   868.9 -* which accompanies this distribution, and is available
  868.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  868.11 -*
  868.12 -* Initial Contributors:
  868.13 -* Nokia Corporation - initial contribution.
  868.14 -*
  868.15 -* Contributors:
  868.16 -*
  868.17 -* Description:
  868.18 -* Name          : sipauthorizationheaderbase.h
  868.19 -* Part of       : SIP Codec
  868.20 -* Version       : SIP/6.0 
  868.21 -*
  868.22 -*/
  868.23 -
  868.24 -
  868.25 -
  868.26 -#ifndef CSIPAUTHORIZATIONHEADERBASE_H
  868.27 -#define CSIPAUTHORIZATIONHEADERBASE_H
  868.28 -
  868.29 -//  INCLUDES
  868.30 -#include "sipauthheaderbase.h"
  868.31 -#include "_sipcodecdefs.h"
  868.32 -
  868.33 -// FORWARD DECLARATIONS
  868.34 -class CSIPAuthorizationHeaderParams;
  868.35 -
  868.36 -// CLASS DECLARATION
  868.37 -/**
  868.38 -* @publishedAll
  868.39 -* @released
  868.40 -*
  868.41 -* A base class for SIP Authorization- and Proxy-Authorization-headers
  868.42 -* @lib sipcodec.lib
  868.43 -*/
  868.44 -class CSIPAuthorizationHeaderBase : public CSIPAuthHeaderBase
  868.45 -	{
  868.46 -	public: // Constructors and destructor
  868.47 -
  868.48 -		/**
  868.49 -		* Destructor.
  868.50 -		*/
  868.51 -		IMPORT_C virtual ~CSIPAuthorizationHeaderBase();
  868.52 -
  868.53 -	protected: // Constructors
  868.54 -
  868.55 -		CSIPAuthorizationHeaderBase();
  868.56 -		void ConstructL();
  868.57 -		void ConstructL(const CSIPAuthorizationHeaderBase& aHeader);
  868.58 -
  868.59 -	protected: // From CSIPAuthHeaderBase
  868.60 -
  868.61 -		const CSIPParamContainerBase& Params() const;
  868.62 -		CSIPParamContainerBase& Params();
  868.63 -
  868.64 -    protected: // New functions
  868.65 -
  868.66 -		void DoInternalizeValueL(RReadStream& aReadStream);
  868.67 -
  868.68 -    protected: // Data
  868.69 -
  868.70 -		CSIPAuthorizationHeaderParams* iParams;
  868.71 -	};
  868.72 -
  868.73 -#endif // CSIPAUTHORIZATIONHEADERBASE_H
  868.74 -
  868.75 -// End of File
   869.1 --- a/epoc32/include/sipcallidheader.h	Tue Mar 16 16:12:26 2010 +0000
   869.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   869.3 @@ -1,140 +0,0 @@
   869.4 -/*
   869.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   869.6 -* All rights reserved.
   869.7 -* This component and the accompanying materials are made available
   869.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   869.9 -* which accompanies this distribution, and is available
  869.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  869.11 -*
  869.12 -* Initial Contributors:
  869.13 -* Nokia Corporation - initial contribution.
  869.14 -*
  869.15 -* Contributors:
  869.16 -*
  869.17 -* Description:
  869.18 -* Name          : sipcallidheader.h
  869.19 -* Part of       : SIP Codec
  869.20 -* Version       : SIP/4.0 
  869.21 -*
  869.22 -*/
  869.23 -
  869.24 -
  869.25 -
  869.26 -
  869.27 -#ifndef CSIPCALLIDHEADER_H
  869.28 -#define CSIPCALLIDHEADER_H
  869.29 -
  869.30 -//  INCLUDES
  869.31 -#include "sipheaderbase.h"
  869.32 -#include "_sipcodecdefs.h"
  869.33 -
  869.34 -// CLASS DECLARATION
  869.35 -/**
  869.36 -* @publishedAll
  869.37 -* @released
  869.38 -*
  869.39 -* Class for a SIP Call-ID header.
  869.40 -*
  869.41 -* @lib sipcodec.lib
  869.42 -*/
  869.43 -class CSIPCallIDHeader : public CSIPHeaderBase
  869.44 -	{
  869.45 -	public:	// Constructors and destructor
  869.46 -
  869.47 -		/**
  869.48 -		* Constructs a CSIPCallIDHeader from textual representation 
  869.49 -		* of the header's value part.
  869.50 -		* @param aValue a value part of a "Call-ID"-header (e.g. "ab2x@zb7y")
  869.51 -		* @returns a new instance of CSIPCallIDHeader
  869.52 -		*/
  869.53 -		IMPORT_C static CSIPCallIDHeader* DecodeL(const TDesC8& aValue);
  869.54 -
  869.55 -		/**
  869.56 -		* Destructor
  869.57 -		*/
  869.58 -		IMPORT_C ~CSIPCallIDHeader ();
  869.59 -
  869.60 -
  869.61 -	public: // New functions
  869.62 -
  869.63 -		/**
  869.64 -		* Compares this instance to another "Call-ID" header object
  869.65 -		* @param aCallIDHeader a header to compare to
  869.66 -		* @returns ETrue if "Call-ID" headers are similar
  869.67 -		*/
  869.68 -		IMPORT_C TBool operator==(const CSIPCallIDHeader& aCallIDHeader);
  869.69 -		
  869.70 -		/**
  869.71 -		* Constructs an instance of a CSIPCallIDHeader from a RReadStream
  869.72 -		* @param aReadStream a stream containing the value of the
  869.73 -		*	     externalized object (header name not included). 
  869.74 -		* @return an instance of a CSIPCallIDHeader
  869.75 -		*/
  869.76 -		IMPORT_C static CSIPHeaderBase* 
  869.77 -			InternalizeValueL(RReadStream& aReadStream);		
  869.78 -
  869.79 -
  869.80 -	public: // From CSIPHeaderBase
  869.81 -
  869.82 -		/**
  869.83 -		* From CSIPHeaderBase CloneL
  869.84 -		*/
  869.85 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  869.86 -		
  869.87 -		/**
  869.88 -		* From CSIPHeaderBase Name
  869.89 -		*/		
  869.90 -		IMPORT_C RStringF Name() const;
  869.91 -
  869.92 -		/**
  869.93 -		* From CSIPHeaderBase ToTextValueL
  869.94 -		*/
  869.95 -		IMPORT_C HBufC8* ToTextValueL() const;
  869.96 -		
  869.97 -
  869.98 -	public: // From CSIPHeaderBase, for internal use
  869.99 -        
 869.100 -        /**
 869.101 -        * @internalComponent
 869.102 -        */	
 869.103 -		TBool HasCompactName() const;
 869.104 -
 869.105 -        /**
 869.106 -        * @internalComponent
 869.107 -        */		
 869.108 -		RStringF CompactName() const;
 869.109 -		
 869.110 -        /**
 869.111 -        * @internalComponent
 869.112 -        */		
 869.113 -		TPreferredPlace PreferredPlaceInMessage() const;
 869.114 -
 869.115 -	public: // New functions, for internal use
 869.116 -
 869.117 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 869.118 -
 869.119 -	private: // From CSIPHeaderBase
 869.120 -
 869.121 -		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 869.122 -
 869.123 -	private: // Constructors
 869.124 -
 869.125 -		CSIPCallIDHeader();
 869.126 -
 869.127 -	private: // New functions
 869.128 -
 869.129 -		void ParseL(const TDesC8& aValue);
 869.130 -
 869.131 -	private: // Data
 869.132 -
 869.133 -		HBufC8* iCallID;
 869.134 -
 869.135 -	private: // For testing purposes
 869.136 -	
 869.137 -		UNIT_TEST(CSIPCallIDHeaderTest)
 869.138 -	};
 869.139 -
 869.140 -
 869.141 -#endif // end of CSIPCALLIDHEADER_H
 869.142 -
 869.143 -// End of File
   870.1 --- a/epoc32/include/sipclientresolverconfigcrkeys.h	Tue Mar 16 16:12:26 2010 +0000
   870.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   870.3 @@ -1,67 +0,0 @@
   870.4 -/*
   870.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   870.6 -* All rights reserved.
   870.7 -* This component and the accompanying materials are made available
   870.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   870.9 -* which accompanies this distribution, and is available
  870.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  870.11 -*
  870.12 -* Initial Contributors:
  870.13 -* Nokia Corporation - initial contribution.
  870.14 -*
  870.15 -* Contributors:
  870.16 -*
  870.17 -* Description:
  870.18 -* Name        : sipclientresolverconfigcrkeys.h
  870.19 -* Part of     : SIP / SIP Client Resolver
  870.20 -* Interface   : SIP Client Resolver API
  870.21 -* Version     : 1.0
  870.22 -*
  870.23 -*/
  870.24 -
  870.25 -
  870.26 -
  870.27 -#ifndef SIPCLIENTRESOLVERCONFIGCRKEYS_H
  870.28 -#define SIPCLIENTRESOLVERCONFIGCRKEYS_H
  870.29 -
  870.30 -// INCLUDES
  870.31 -#include <e32def.h>
  870.32 -
  870.33 -/**
  870.34 -* @file
  870.35 -* @publishedAll
  870.36 -* @released
  870.37 -*/
  870.38 -
  870.39 -/// Defines configuration parameters used by SIP Client Resolver
  870.40 -const TUid KCRUidSIPClientResolverConfig = { 0x10282EE7 };
  870.41 -
  870.42 -/// Mask for the less significant bits in setting keys.
  870.43 -/// These bits are reserved for field type information.
  870.44 -const TUint32 KSIPClientResolverFieldTypeMask = 0xf0000000;
  870.45 -
  870.46 -/// Mask for the most significant bits in setting keys.
  870.47 -/// These bits are reserved for the actual key part.
  870.48 -const TUint32 KSIPClientResolverKeyMask = 0x0fffffff;
  870.49 -
  870.50 -/** 
  870.51 -* Mask for username field.
  870.52 -* Field type is TDesC8.
  870.53 -*/
  870.54 -const TUint32 KSIPClientResolverUserNameMask = 0x10000000;
  870.55 -
  870.56 -/** 
  870.57 -* Mask for plug-in implementation UID field.
  870.58 -* Field type is TInt32.
  870.59 -*/
  870.60 -const TUint32 KSIPClientResolverPluginUIDMask = 0x20000000;
  870.61 -
  870.62 -/** 
  870.63 -* Mask for client UID field.
  870.64 -* Field type is TInt32.
  870.65 -*/
  870.66 -const TUint32 KSIPClientResolverClientUIDMask = 0x30000000;
  870.67 -
  870.68 -#endif // SIPCLIENTRESOLVERCONFIGCRKEYS_H
  870.69 -
  870.70 -// End of File
   871.1 --- a/epoc32/include/sipclienttransaction.h	Tue Mar 16 16:12:26 2010 +0000
   871.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   871.3 @@ -1,173 +0,0 @@
   871.4 -/*
   871.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   871.6 -* All rights reserved.
   871.7 -* This component and the accompanying materials are made available
   871.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   871.9 -* which accompanies this distribution, and is available
  871.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  871.11 -*
  871.12 -* Initial Contributors:
  871.13 -* Nokia Corporation - initial contribution.
  871.14 -*
  871.15 -* Contributors:
  871.16 -*
  871.17 -* Description:
  871.18 -* Name        : sipclienttransaction.h
  871.19 -* Part of     : SIP Client
  871.20 -* Interface   :
  871.21 -* Version     : 1.0
  871.22 -*
  871.23 -*/
  871.24 -
  871.25 -
  871.26 -
  871.27 -
  871.28 -#ifndef CSIPCLIENTTRANSACTION_H
  871.29 -#define CSIPCLIENTTRANSACTION_H
  871.30 -
  871.31 -// INCLUDES
  871.32 -#include "siptransactionbase.h"
  871.33 -
  871.34 -// FORWARD DECLARATIONS
  871.35 -class CSIPRefresh;
  871.36 -
  871.37 -// CLASS DECLARATION
  871.38 -
  871.39 -/**
  871.40 -*  @publishedAll
  871.41 -*  @released
  871.42 -*
  871.43 -*  Class for managing SIP client transactions.
  871.44 -*  It provides services for ending and getting the SIP client transaction
  871.45 -*  parameters. Some client transactions can also be canceled.
  871.46 -*
  871.47 -*  The user of the class cannot instante this class.
  871.48 -*  @lib sipclient
  871.49 -*/
  871.50 -class CSIPClientTransaction: public CSIPTransactionBase
  871.51 -	{
  871.52 -	public: // Destructor
  871.53 -
  871.54 -        /**
  871.55 -        * Destructor
  871.56 -		*/
  871.57 -		IMPORT_C ~CSIPClientTransaction();
  871.58 -
  871.59 -	public: // New functions
  871.60 -
  871.61 -        /**
  871.62 -        * Gets response elements of the most recent response.
  871.63 -        * @return Response elements. Ownership isn't transferred.
  871.64 -        */
  871.65 -		IMPORT_C const CSIPResponseElements* ResponseElements() const;
  871.66 -
  871.67 -        /**
  871.68 -		* Cancels client transaction i.e. creates a CANCEL request and sends it
  871.69 -		* to the remote UA.		
  871.70 -		* @pre State()==EProceeding
  871.71 -		* @pre CancelAllowed()==ETrue
  871.72 -		* @pre Connection().State()==EActive
  871.73 -		* @return SIP CANCEL transaction, ownership is transferred.		
  871.74 -		* @leave KErrSIPInvalidTransactionState if canceling is not possible
  871.75 -		*	at all, or because the transaction is not in a proper state or the
  871.76 -        *   transaction is not related to a dialog.
  871.77 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  871.78 -		*	object has been deleted
  871.79 -		* @capability NetworkServices
  871.80 -		*/
  871.81 -		IMPORT_C CSIPClientTransaction* CancelL();
  871.82 -
  871.83 -		/**
  871.84 -		* Gets the associated refresh with the transaction.
  871.85 -		* If the refresh is associated with the transaction,
  871.86 -		* transaction will be refreshed at defined interval.
  871.87 -		* @return associated refresh or 0-pointer if there's no
  871.88 -		*         associated refresh. Ownership isn't transferred.
  871.89 -		*/
  871.90 -		IMPORT_C const CSIPRefresh* Refresh() const;
  871.91 -
  871.92 -        /**
  871.93 -		* Checks if the client transaction is such that it can be cancelled.
  871.94 -        * This does no check whether the transaction is currently in such a
  871.95 -        * state that the canceling can be done now.
  871.96 -        *
  871.97 -		* @return ETrue if client transaction can be cancelled;
  871.98 -		*         EFalse otherwise
  871.99 -		*/
 871.100 -		IMPORT_C virtual TBool CancelAllowed() const;
 871.101 -
 871.102 -	public: // Constructors, for internal use
 871.103 -
 871.104 -        /**
 871.105 -		* Instantiates a CSIPClientTransaction object, leaves on failure.
 871.106 -        *
 871.107 -        * @param aType Identifies the transaction type        
 871.108 -        * @param aAssociation Object to which the transaction is associated
 871.109 -        *   with.
 871.110 -        * @param aRefresh If transaction is refreshed, this points to a
 871.111 -        *   CSIPRefresh, otherwise this is NULL. Ownership is not transferred.
 871.112 -		* @return SIP client transaction, ownership is transferred.
 871.113 -		*/
 871.114 -		static CSIPClientTransaction*
 871.115 -            NewL(RStringF aType,
 871.116 -                 MTransactionAssociation& aAssociation,
 871.117 -                 CSIPRefresh* aRefresh=0);
 871.118 -
 871.119 -        /**
 871.120 -		* Instantiates a CSIPClientTransaction object and pushes it into
 871.121 -        * CleanupStack, leaves on failure.
 871.122 -        *
 871.123 -        * @param aType Identifies the transaction type        
 871.124 -        * @param aAssociation Object to which the transaction is associated
 871.125 -        *   with.
 871.126 -        * @param aRefresh If transaction is refreshed, this points to a
 871.127 -        *   CSIPRefresh, otherwise this is NULL. Ownership is not transferred.
 871.128 -		* @return SIP client transaction, ownership is transferred.
 871.129 -		*/
 871.130 -		static CSIPClientTransaction*
 871.131 -            NewLC(RStringF aType,
 871.132 -                  MTransactionAssociation& aAssociation,
 871.133 -                  CSIPRefresh* aRefresh=0);
 871.134 -
 871.135 -	public: // New functions, for internal use
 871.136 -
 871.137 -        /**
 871.138 -		* Sets the RequestId.
 871.139 -        *
 871.140 -        * @pre iRequestId == 0
 871.141 -        * @pre aRequestId != 0
 871.142 -		* @param aRequestId RequestId obtained from SIP client
 871.143 -		*/
 871.144 -		void SetRequestId(TUint32 aRequestId);
 871.145 -
 871.146 -        /**
 871.147 -		* Gets the associated refresh with the transaction and allows
 871.148 -        * modification fo the refresh. This method is for internal use only.
 871.149 -        *
 871.150 -		* @return associated refresh or 0-pointer if there's no
 871.151 -		*         associated refresh. Ownership isn't transferred.
 871.152 -		*/
 871.153 -        CSIPRefresh* Refresh();
 871.154 -
 871.155 -        /**
 871.156 -	    * Clears the association from ClientTransaction to CSIPRefresh
 871.157 -	    */
 871.158 -        void RemoveRefresh();	
 871.159 -
 871.160 -    protected: // Constructor
 871.161 -
 871.162 -		CSIPClientTransaction(MTransactionAssociation& aAssociation,
 871.163 -                              CSIPRefresh* aRefresh);
 871.164 -
 871.165 -    private: // Data
 871.166 -
 871.167 -        //Points to the refresh object if this transaction is refreshed.
 871.168 -        //NULL if not refreshed. Not owned.
 871.169 -        CSIPRefresh* iRefresh;
 871.170 -
 871.171 -	private: // For testing purposes
 871.172 -
 871.173 -	    UNIT_TEST(CSIP_Test)
 871.174 -	};
 871.175 -
 871.176 -#endif
   872.1 --- a/epoc32/include/sipcodecerr.h	Tue Mar 16 16:12:26 2010 +0000
   872.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   872.3 @@ -1,116 +0,0 @@
   872.4 -/*
   872.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   872.6 -* All rights reserved.
   872.7 -* This component and the accompanying materials are made available
   872.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   872.9 -* which accompanies this distribution, and is available
  872.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  872.11 -*
  872.12 -* Initial Contributors:
  872.13 -* Nokia Corporation - initial contribution.
  872.14 -*
  872.15 -* Contributors:
  872.16 -*
  872.17 -* Description:
  872.18 -* Name        : sipcodecerr.h
  872.19 -* Part of     : SIP Codec
  872.20 -* Interface   : SDK API, SIP Codec API
  872.21 -* Version     : SIP/6.0 
  872.22 -*
  872.23 -*/
  872.24 -
  872.25 -
  872.26 -
  872.27 -#ifndef SIPCODECERR_H
  872.28 -#define SIPCODECERR_H
  872.29 -
  872.30 -/**
  872.31 -* @file
  872.32 -* @publishedAll
  872.33 -* @released
  872.34 -*/
  872.35 -
  872.36 -/** SIP parsing (decoding) errors */
  872.37 -// General errors
  872.38 -const TInt KErrSipCodecPreParser=-17750;
  872.39 -const TInt KErrSipCodecTokenizer=-17751;
  872.40 -const TInt KErrSipCodecNotAllowed=-17752;
  872.41 -const TInt KErrSipCodecHeaderName=-17753;
  872.42 -const TInt KErrSipCodecHeaderValue=-17754;
  872.43 -const TInt KErrSipCodecRequestLine=-17755;
  872.44 -const TInt KErrSipCodecResponseLine=-17756;
  872.45 -const TInt KErrSipCodecResponseCode=-17757;
  872.46 -const TInt KErrSipCodecSIPVersion=-17758;
  872.47 -const TInt KErrSipCodecSIPMethod=-17759;
  872.48 -const TInt KErrSipCodecReasonPhrase=-17760;
  872.49 -const TInt KErrSipCodecAnyParam=-17761;
  872.50 -const TInt KErrSipCodecAnyParamName=-17762;
  872.51 -const TInt KErrSipCodecAnyParamValue=-17763;
  872.52 -const TInt KErrSipCodecDuplicateParam=-17764;
  872.53 -const TInt KErrSipCodecHostPort=-17765;
  872.54 -const TInt KErrSipCodecHost=-17766;
  872.55 -const TInt KErrSipCodecPort=-17767;
  872.56 -// sip-address
  872.57 -const TInt KErrSipCodecSIPAddress=-17768;
  872.58 -const TInt KErrSipCodecDisplayName=-17769;
  872.59 -// URI
  872.60 -const TInt KErrSipCodecURI=-17770;
  872.61 -const TInt KErrSipCodecURIScheme=-17771;
  872.62 -const TInt KErrSipCodecURIParams=-17772;
  872.63 -const TInt KErrSipCodecURIHeaders=-17773;
  872.64 -// From and To
  872.65 -const TInt KErrSipCodecFromOrToAddress=-17774;
  872.66 -const TInt KErrSipCodecFromOrToParams=-17775;
  872.67 -// Contact
  872.68 -const TInt KErrSipCodecContactHeader=-17776;
  872.69 -const TInt KErrSipCodecContactSetToStar=-17777;
  872.70 -const TInt KErrSipCodecContactAddress=-17778;
  872.71 -const TInt KErrSipCodecContactParams=-17779;
  872.72 -// Other SIP headers
  872.73 -const TInt KErrSipCodecViaHeader=-17780;
  872.74 -const TInt KErrSipCodecCallIdHeader=-17781;
  872.75 -const TInt KErrSipCodecCSeqHeader=-17782;
  872.76 -const TInt KErrSipCodecContentLengthHeader=-17783;
  872.77 -const TInt KErrSipCodecExpiresHeader=-17784;
  872.78 -const TInt KErrSipCodecMaxForwardsHeader=-17785;
  872.79 -const TInt KErrSipCodecContentTypeHeader=-17786;
  872.80 -const TInt KErrSipCodecRouteHeader=-17787;
  872.81 -const TInt KErrSipCodecMinExpiresHeader=-17788;
  872.82 -const TInt KErrSipCodecTokenBaseHeader=-17789;
  872.83 -const TInt KErrSipCodecRequireHeader=-17790;
  872.84 -const TInt KErrSipCodecContentEncodingHeader=-17791;
  872.85 -const TInt KErrSipCodecProxyRequireHeader=-17792;
  872.86 -const TInt KErrSipCodecSupportedHeader=-17793;
  872.87 -const TInt KErrSipCodecUnsupportedHeader=-17794;
  872.88 -const TInt KErrSipCodecAllowHeader=-17795;
  872.89 -const TInt KErrSipCodecSecurityHeader=-17796;
  872.90 -const TInt KErrSipCodecContentDispositionHeader=-17797;
  872.91 -const TInt KErrSipCodecSubscriptionStateHeader=-17798;
  872.92 -const TInt KErrSipCodecAcceptHeader=-17799;
  872.93 -const TInt KErrSipCodecAcceptEncodingHeader=-17800;
  872.94 -const TInt KErrSipCodecAcceptLanguageHeader= -17801;
  872.95 -const TInt KErrSipCodecAcceptParams=-17802;
  872.96 -const TInt KErrSipCodecEventHeader=-17803;
  872.97 -const TInt KErrSipCodecAllowEventsHeader=-17804;
  872.98 -const TInt KErrSipCodecAuthenticationInfoHeader=-17805;
  872.99 -const TInt KErrSipCodecReferToHeader=-17806;
 872.100 -const TInt KErrSipCodecAuthenticationHeader=-17807;
 872.101 -const TInt KErrSipCodecAuthScheme=-17808;
 872.102 -const TInt KErrSipCodecAuthorizationHeader=-17809;
 872.103 -const TInt KErrSipCodecURIContainer=-17810;
 872.104 -const TInt KErrSipCodecRAckHeader=-17811;
 872.105 -const TInt KErrSipCodecRSeqHeader=-17812;
 872.106 -const TInt KErrSipCodecReplyToHeader=-17813;
 872.107 -const TInt KErrSipCodecTimestampHeader=-17814;
 872.108 -const TInt KErrSipCodecRetryAfterHeader=-17815;
 872.109 -const TInt KErrSipCodecRetryAfterParams=-17816;
 872.110 -const TInt KErrSipCodecAcceptContactHeader=-17817;
 872.111 -const TInt KErrSipCodecPAssociatedURIHeader=-17818;
 872.112 -const TInt KErrSipCodecPAccessNetworkInfoHeader=-17819;
 872.113 -
 872.114 -// Last error code allocated to SIP Codec is -17874.
 872.115 -// This value must not be exceeded.
 872.116 -
 872.117 -#endif // SIPCODECERR_H
 872.118 -
 872.119 -// End of File
   873.1 --- a/epoc32/include/sipconcreteprofileobserver.h	Tue Mar 16 16:12:26 2010 +0000
   873.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   873.3 @@ -1,102 +0,0 @@
   873.4 -/*
   873.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   873.6 -* All rights reserved.
   873.7 -* This component and the accompanying materials are made available
   873.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   873.9 -* which accompanies this distribution, and is available
  873.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  873.11 -*
  873.12 -* Initial Contributors:
  873.13 -* Nokia Corporation - initial contribution.
  873.14 -*
  873.15 -* Contributors:
  873.16 -*
  873.17 -* Description:
  873.18 -* Name        : sipconcreteprofileobserver.h
  873.19 -* Part of     : SIP Profile Client
  873.20 -* Interface   : private
  873.21 -* The observer class that must be implemented by users of 
  873.22 -* CSIPConcreteProfile
  873.23 -* Version     : 1.0
  873.24 -*
  873.25 -*/
  873.26 -
  873.27 -
  873.28 -
  873.29 -#ifndef MSIPCONCRETEPROFILEOBSERVER_H
  873.30 -#define MSIPCONCRETEPROFILEOBSERVER_H
  873.31 -
  873.32 -//  INCLUDES
  873.33 -
  873.34 -#include <e32base.h>
  873.35 -
  873.36 -// FORWARD DECLARATIONS
  873.37 -
  873.38 -
  873.39 -// CLASS DECLARATION
  873.40 -/**
  873.41 -* @publishedAll
  873.42 -* @released
  873.43 -*
  873.44 -* Observer class to be implemented by users of CSIPConcreteProfile
  873.45 -* It provides event notifications related to profiles.
  873.46 -*/
  873.47 -class MSIPConcreteProfileObserver
  873.48 -    {
  873.49 -    public:
  873.50 -
  873.51 -        /**
  873.52 -        * SIP profile registration status changed event
  873.53 -        * Event is send to those observers, who have the
  873.54 -        * corresponding profile instantiated.
  873.55 -        * @param aProfileId id of profile which registration 
  873.56 -        *        status has been changed.
  873.57 -        * @param aStatus new status of the profile
  873.58 -        * @param aStatusId id related to registration
  873.59 -        */
  873.60 -        virtual void RegistrationStatusChangedL(
  873.61 -            TUint32 aProfileId, 
  873.62 -            TInt aStatus,
  873.63 -            TUint32 aStatusId) = 0;
  873.64 -
  873.65 -        /** 
  873.66 -        * SIP profile creation event.
  873.67 -        * Event is send to all observers.
  873.68 -        * @param aProfileId id of new SIP Profile
  873.69 -        */
  873.70 -        virtual void AddedL(TUint32 aProfileId) = 0;
  873.71 -
  873.72 -        /**
  873.73 -        * SIP profile destruction event.
  873.74 -        * Event is send to those observers, who have the
  873.75 -        * corresponding profile instantiated.
  873.76 -        * @param aProfileId id of profile which was destroyed
  873.77 -        */        
  873.78 -        virtual void RemovedL(TUint32 aProfileId) = 0;
  873.79 -
  873.80 -        /** 
  873.81 -        * SIP profile information update event
  873.82 -        * Event is send to those observers, who have the
  873.83 -        * corresponding profile instantiated.
  873.84 -        * @param aProfileId id of updated SIP Profile
  873.85 -        * @param aSize size of updated SIP Profile
  873.86 -        */
  873.87 -        virtual void UpdatedL(TUint32 aProfileId, TUint aSize) = 0;
  873.88 -
  873.89 -        /**
  873.90 -        * An asynchronous error has occurred related to SIP profile
  873.91 -        * Event is send to those observers, who have the
  873.92 -        * corresponding profile instantiated.
  873.93 -        * @param aProfileId the id of failed profile 
  873.94 -        * @param aStatus status indicating if error occurred
  873.95 -        *          during registering (ERegistrationInProgress)
  873.96 -        *          or deregistering (EUnregistrationInProgress)
  873.97 -        * @param aError a error code
  873.98 -        */
  873.99 -        virtual void ErrorOccurredL(
 873.100 -            TUint32 aProfileId,
 873.101 -            TInt aStatus,
 873.102 -            TInt aError) = 0;
 873.103 -    };
 873.104 -
 873.105 -#endif // MSIPCONCRETEPROFILEOBSERVER_H
   874.1 --- a/epoc32/include/sipconnection.h	Tue Mar 16 16:12:26 2010 +0000
   874.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   874.3 @@ -1,344 +0,0 @@
   874.4 -/*
   874.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   874.6 -* All rights reserved.
   874.7 -* This component and the accompanying materials are made available
   874.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   874.9 -* which accompanies this distribution, and is available
  874.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  874.11 -*
  874.12 -* Initial Contributors:
  874.13 -* Nokia Corporation - initial contribution.
  874.14 -*
  874.15 -* Contributors:
  874.16 -*
  874.17 -* Description:
  874.18 -* Name        : sipconnection.h
  874.19 -* Part of     : SIP Client
  874.20 -* Interface   : SDK API, SIP API
  874.21 -* Version     : 1.0
  874.22 -*
  874.23 -*/
  874.24 -
  874.25 -
  874.26 -
  874.27 -#ifndef CSIPCONNECTION_H
  874.28 -#define CSIPCONNECTION_H
  874.29 -
  874.30 -// INCLUDES
  874.31 -#include <e32base.h>
  874.32 -#include <in_sock.h>
  874.33 -#include "_sipcodecdefs.h"
  874.34 -
  874.35 -// FORWARD DECLARATIONS
  874.36 -class CSIP;
  874.37 -class MSIPConnectionObserver;
  874.38 -class CSIPClientTransaction;
  874.39 -class MSIPRegistrationContext;
  874.40 -class CSIPRefresh;
  874.41 -class CSIPRequestElements;
  874.42 -class CSIPConnectionImplementation;
  874.43 -
  874.44 -// CONSTANTS
  874.45 -
  874.46 -// CLASS DECLARATION
  874.47 -
  874.48 -/**
  874.49 -* @publishedAll
  874.50 -* @released
  874.51 -*
  874.52 -* Class for monitoring connection's state and sending SIP requests outside
  874.53 -* the dialog associations. Class must not be used
  874.54 -* - for sending requests to which received non-failure response creates a dialog
  874.55 -* - for sending requests that must be sent within SIP dialog
  874.56 -*  
  874.57 -* Note that the user can have only one instance of the class per same IAP-id.
  874.58 -*/
  874.59 -class CSIPConnection : public CBase
  874.60 -	{
  874.61 -    public:
  874.62 -        /** Connection states */
  874.63 -        enum TState 
  874.64 -            {
  874.65 -            /** Connection initializing */
  874.66 -			EInit=1,
  874.67 -			/** Connection active */
  874.68 -			EActive,
  874.69 -			/** Connection suspended */
  874.70 -			ESuspended,
  874.71 -			/** Connection is inactive */
  874.72 -			EInactive,
  874.73 -			/** Connection is permanently unavailable */
  874.74 -			EUnavailable
  874.75 -            };
  874.76 -
  874.77 -    public:  // Constructors and destructor
  874.78 -
  874.79 -	    /**
  874.80 -        * Two-phased constructor.
  874.81 -		* @param aSip a handle to the SIP server
  874.82 -		* @param aIapId IAP-id
  874.83 -		* @param aObserver a observer for receiving asynchonous events on this
  874.84 -        *   connection
  874.85 -        * @return New object, ownership is transferred
  874.86 -        * @capability NetworkServices
  874.87 -        */
  874.88 -		IMPORT_C static CSIPConnection*
  874.89 -            NewL(CSIP& aSIP,
  874.90 -				 TUint32 aIapId,
  874.91 -				 MSIPConnectionObserver& aObserver);
  874.92 -
  874.93 -	    /**
  874.94 -        * Two-phased constructor.
  874.95 -		* Constructs an object and adds the pointer to the cleanup stack;
  874.96 -		* @param aSip a handle to the SIP server
  874.97 -		* @param aIapId IAP-id
  874.98 -		* @param aObserver a observer for receiving asynchonous events on this
  874.99 -        *   connection
 874.100 -        * @return New object, ownership is transferred
 874.101 -        * @capability NetworkServices
 874.102 -        */
 874.103 -		IMPORT_C static CSIPConnection*
 874.104 -            NewLC(CSIP& aSIP,
 874.105 -				  TUint32 aIapId,
 874.106 -				  MSIPConnectionObserver& aObserver);
 874.107 -
 874.108 -		/**
 874.109 -		* Destructor
 874.110 -        * @capability NetworkServices
 874.111 -		*/
 874.112 -		IMPORT_C ~CSIPConnection();
 874.113 -
 874.114 -    public: // New functions
 874.115 -
 874.116 -        /**
 874.117 -		* Gets current state of the connection        
 874.118 -        * @return current state of the connection
 874.119 -        */
 874.120 -		IMPORT_C TState State() const;
 874.121 -
 874.122 -        /**
 874.123 -		* Creates SIP request and sends it to the given destination.
 874.124 -		* The function must not be used with SIP requests that creates
 874.125 -		* SIP dialog associations or must be sent within SIP dialog
 874.126 -		* association.
 874.127 -		* This provokes the Non-invite state machine.
 874.128 -		* This function must be used if the user has created the
 874.129 -		* registration binding.
 874.130 -		* @pre State() == EActive.
 874.131 -		* @pre aContext.IsContextActive() == ETrue
 874.132 -		* @param aElements contains local and remote addresses,
 874.133 -		*		 optional SIP message headers and body.
 874.134 -		*        The ownership is transferred.
 874.135 -		* @param aContext defines outbound proxy to be used. If the user
 874.136 -		*        does not provide from-address it will be constucted using
 874.137 -		*        user's AOR used during the registration.
 874.138 -        * @return SIP client transaction, ownership is transferred
 874.139 -        * @leave KErrArgument if aElements == 0
 874.140 -        * @leave KErrSIPInvalidRegistrationState if aContext.IsContextActive()
 874.141 -        *	== EFalse
 874.142 -		* @capability NetworkServices
 874.143 -        */
 874.144 -		IMPORT_C CSIPClientTransaction*
 874.145 -            SendRequestL(CSIPRequestElements* aElements,
 874.146 -                         const MSIPRegistrationContext& aContext);
 874.147 -
 874.148 -        /**
 874.149 -		* Creates SIP request and sends it to the given destination.
 874.150 -		* The function must not be used with SIP requests that creates
 874.151 -		* SIP dialog associations or must be sent within SIP dialog
 874.152 -		* association.
 874.153 -		* This provokes the Non-invite state machine.
 874.154 -		* This function must be used if the user has created the
 874.155 -		* registration binding.
 874.156 -		* @pre State() == EActive.
 874.157 -		* @pre aContext.IsContextActive() == ETrue
 874.158 -		* @param aElements contains local and remote addresses,
 874.159 -		*		 optional SIP message headers and body.
 874.160 -		*        The ownership is transferred.
 874.161 -		* @param aContext defines outbound proxy to be used. If the user
 874.162 -		*        does not provide from-address it will 
 874.163 -		*        be constucted using user's AOR used during the registration.
 874.164 -		* @param aRefresh defines the refresh interval for this transaction.
 874.165 -        * @return SIP client transaction, ownership is transferred
 874.166 -        * @leave KErrArgument if aElements == 0
 874.167 -        * @leave KErrSIPInvalidRegistrationState if aContext.IsContextActive()
 874.168 -        *	== EFalse
 874.169 -        * @capability NetworkServices
 874.170 -        */
 874.171 -		IMPORT_C CSIPClientTransaction*
 874.172 -            SendRequestL(CSIPRequestElements* aElements,                                        
 874.173 -                         const MSIPRegistrationContext& aContext,
 874.174 -						 CSIPRefresh& aRefresh); 
 874.175 -
 874.176 -        /**
 874.177 -		* Creates SIP request and sends it to the given destination.
 874.178 -		* The function must not be used with SIP requests that creates SIP
 874.179 -		* dialog associations or must be sent within SIP dialog association.
 874.180 -		* This invokes the Non-invite state machine.
 874.181 -		* @pre State() == EActive.
 874.182 -		* @pre aElements.FromHeader() != 0
 874.183 -		* @param aElements contains local and remote addresses,
 874.184 -		*		 optional SIP message headers and body.
 874.185 -		*        The ownership is transferred.
 874.186 -        * @return SIP client transaction, ownership is transferred
 874.187 -        * @leave KErrArgument if aElements == 0 or if From-header is not
 874.188 -        *	present in aElements
 874.189 -        * @capability NetworkServices
 874.190 -        */
 874.191 -		IMPORT_C CSIPClientTransaction*
 874.192 -            SendRequestL(CSIPRequestElements* aElements);
 874.193 -
 874.194 -        /**
 874.195 -		* Creates SIP request and sends it to the given destination.
 874.196 -		* The function must not be used with SIP requests that creates SIP
 874.197 -		* dialog associations or must be sent within SIP dialog association.
 874.198 -		* This invokes the Non-invite state machine.
 874.199 -		* @pre State() == EActive.
 874.200 -		* @pre aElements.FromHeader() != 0
 874.201 -		* @param aElements contains local and remote addresses,
 874.202 -		*		 optional SIP message headers and body.
 874.203 -		*        The ownership is transferred.
 874.204 -		* @param aRefresh indicates that transaction will be refreshed
 874.205 -        * @return SIP client transaction, ownership is transferred
 874.206 -        * @leave KErrArgument if aElements == 0 or if From-header is not
 874.207 -        *	present in aElements
 874.208 -        * @capability NetworkServices
 874.209 -        */
 874.210 -		IMPORT_C CSIPClientTransaction*
 874.211 -            SendRequestL(CSIPRequestElements* aElements,
 874.212 -						 CSIPRefresh& aRefresh);
 874.213 -
 874.214 -		/**
 874.215 -		* Creates SIP REGISTER request and sends it to the given destination.
 874.216 -		* User must no define any Contact or Expires-headers
 874.217 -		* in the provided elements.
 874.218 -		* @pre State() == EActive
 874.219 -        * @pre aElements != 0
 874.220 -        * @pre aElements->Method().DesC().Length()==0
 874.221 -		* @param aElements contains local and remote addresses, optional SIP
 874.222 -        *        message headers and body. User must not set any expires values
 874.223 -        *        to aElements. The ownership is transferred.
 874.224 -        * @return SIP REGISTER client transaction, ownership is transferred
 874.225 -        * @leave KErrArgument if aElements == 0 or if the request method has
 874.226 -        *	been defined in aElements
 874.227 -        * @capability NetworkServices
 874.228 -        */
 874.229 -		IMPORT_C CSIPClientTransaction*
 874.230 -            FetchRegistrationsL(CSIPRequestElements* aElements);
 874.231 -
 874.232 -		/**
 874.233 -		* Gets Iap-id used for this connection
 874.234 -		* @return Iap-id
 874.235 -		*/
 874.236 -        IMPORT_C TUint32 IapId() const;
 874.237 -
 874.238 -		/**
 874.239 -        * Gets SIP server handle
 874.240 -        * @return handle to SIP server, or 0-pointer if SIP server does not
 874.241 -        *	exist any more
 874.242 -        */        
 874.243 -        IMPORT_C CSIP* SIP();
 874.244 -
 874.245 -        /**
 874.246 -        * Gets SIP server handle
 874.247 -        * @return handle to SIP server, or 0-pointer if SIP server does not
 874.248 -        *	exist any more
 874.249 -        */        
 874.250 -        IMPORT_C const CSIP* SIP() const;
 874.251 -      
 874.252 -		/**
 874.253 -		* Sets a RSocket option used for all the sockets used for sending 
 874.254 -		* SIP requests and responses in this CSIPConnection.
 874.255 -		* @pre State() == EActive
 874.256 -		* @param aOptionName An integer constant which identifies an option.
 874.257 -        * @param aOptionLevel An integer constant which identifies 
 874.258 -        *        level of an option.
 874.259 -        * @param aOption Option value packaged in a descriptor.
 874.260 -        * @leave A system-wide error code
 874.261 -        * @capability NetworkControl
 874.262 -        * @capability NetworkServices
 874.263 -        * @capability Location
 874.264 -        * @capability ReadDeviceData
 874.265 -        * @capability WriteDeviceData        
 874.266 -        */        
 874.267 -	    IMPORT_C void SetOptL(TUint aOptionName,
 874.268 -	                      	  TUint aOptionLevel,
 874.269 -	                      	  const TDesC8& aOption=KNullDesC8);
 874.270 -
 874.271 -		/**
 874.272 -		* Sets a RSocket option used for all the sockets used for sending 
 874.273 -		* SIP requests and responses in this CSIPConnection.
 874.274 -		* @pre State() == EActive
 874.275 -		* @param aOptionName An integer constant which identifies an option.
 874.276 -        * @param aOptionLevel An integer constant which identifies 
 874.277 -        *        level of an option.
 874.278 -        * @param aOption Option value as an integer.
 874.279 -        * @leave A system-wide error codes
 874.280 -        * @capability NetworkControl
 874.281 -        * @capability NetworkServices
 874.282 -        * @capability Location
 874.283 -        * @capability ReadDeviceData
 874.284 -        * @capability WriteDeviceData
 874.285 -        */ 	                         
 874.286 -	    IMPORT_C void SetOptL(TUint aOptionName,
 874.287 -	                          TUint aOptionLevel,
 874.288 -	                          TInt aOption);
 874.289 -
 874.290 -        /**
 874.291 -        * Gets the local IP address of this CSIPConnection 
 874.292 -        * that is used by the SIP implementation.
 874.293 -        * The user should re-new the call whenever the connection state changes
 874.294 -        * to the CSIPConnection::EActive in order to verify the correctness of
 874.295 -        * the previously retrieved local IP address. The local IP address might
 874.296 -        * be different as a result of the connection state change.
 874.297 -        * @pre State() == CSIPConnection::EActive
 874.298 -        * @param aAddr on return filled with local IP address
 874.299 -        * @leave a system-wide error code
 874.300 -        */ 	                         
 874.301 -	    IMPORT_C void GetLocalAddrL(TInetAddr& aAddr) const;
 874.302 -	    
 874.303 -	/**
 874.304 -	* Refreshes the connection.
 874.305 -	* This will retrieve the Bearer Monitor Instance if any, is available for this  CSIPConnection and issue a Connection Refresh Request to it.
 874.306 -	* The state of the Connection can be retrieved from State() to check if there is any change after Refreshing the connection.
 874.307 -	* @capability NetworkServices.
 874.308 -	*/
 874.309 -	    
 874.310 -	  IMPORT_C void RefreshConnection() const;
 874.311 -
 874.312 -	public: // New functions, for internal use
 874.313 -	
 874.314 -		/**
 874.315 -		* Returns the implementation instance.
 874.316 -		*
 874.317 - 		* @return CSIPConnectionImplementation
 874.318 -		*/
 874.319 -		CSIPConnectionImplementation& Implementation();
 874.320 -
 874.321 -    private: // Constructors
 874.322 -    
 874.323 -        CSIPConnection();
 874.324 -
 874.325 -        void ConstructL(CSIP& aSIP,
 874.326 -                        TUint32 aIapId,
 874.327 -                        MSIPConnectionObserver& aObserver);
 874.328 -
 874.329 -	private: // Data
 874.330 -	
 874.331 -		CSIPConnectionImplementation* iImplementation;
 874.332 -		        
 874.333 -	private: // For testing purposes
 874.334 -	
 874.335 -	    UNIT_TEST(CSIP_Test)
 874.336 -        UNIT_TEST(CSIPConnection_Test)
 874.337 -        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 874.338 -        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 874.339 -        UNIT_TEST(CSIPReferDialogAssoc_Test)
 874.340 -        UNIT_TEST(CSIPNotifyDialogAssoc_Test)
 874.341 -        UNIT_TEST(CSIPDialogTrying_Test)
 874.342 -        UNIT_TEST(CSIPRegistrationBinding_Test)
 874.343 -        
 874.344 -        __DECLARE_TEST;
 874.345 -	};
 874.346 -
 874.347 -#endif
   875.1 --- a/epoc32/include/sipconnectionobserver.h	Tue Mar 16 16:12:26 2010 +0000
   875.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   875.3 @@ -1,231 +0,0 @@
   875.4 -/*
   875.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   875.6 -* All rights reserved.
   875.7 -* This component and the accompanying materials are made available
   875.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   875.9 -* which accompanies this distribution, and is available
  875.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  875.11 -*
  875.12 -* Initial Contributors:
  875.13 -* Nokia Corporation - initial contribution.
  875.14 -*
  875.15 -* Contributors:
  875.16 -*
  875.17 -* Description:
  875.18 -* Name        : sipconnectionobserver.h
  875.19 -* Part of     : SIP Client
  875.20 -* Interface   : SDK API, SIP Client API
  875.21 -* Version     : 1.0
  875.22 -*
  875.23 -*/
  875.24 -
  875.25 -
  875.26 -
  875.27 -#ifndef MSIPCONNECTIONOBSERVER_H
  875.28 -#define MSIPCONNECTIONOBSERVER_H
  875.29 -
  875.30 -//  INCLUDES
  875.31 -#include "sipconnection.h"
  875.32 -
  875.33 -// FORWARD DECLARATIONS
  875.34 -class CSIPDialogAssocBase;
  875.35 -class CSIPInviteDialogAssoc;
  875.36 -class CSIPRegistrationBinding;
  875.37 -class CSIPDialog;
  875.38 -class CSIPTransactionBase;
  875.39 -class CSIPServerTransaction;
  875.40 -
  875.41 -// CLASS DECLARATION
  875.42 -
  875.43 -/**
  875.44 -*  @publishedAll
  875.45 -*  @released
  875.46 -*
  875.47 -*  An interface to be implemented by users of CSIPConnection.
  875.48 -*  Interface allows to be able to receive requests, responses, connection state
  875.49 -*  notifications and error notifications from sip stack.
  875.50 -*
  875.51 -*  Note: The client must not delete related CSIPConnection object 
  875.52 -*  during the execution of the interface function.
  875.53 -*
  875.54 -*  @lib n/a
  875.55 -*/
  875.56 -
  875.57 -class MSIPConnectionObserver
  875.58 -	{    	
  875.59 -    public:
  875.60 -		/**
  875.61 -		* A SIP request outside a dialog has been received from the network.
  875.62 -        *
  875.63 -        * @pre aTransaction != 0
  875.64 -		* @param aTransaction SIP server transaction. The ownership is
  875.65 -        *   transferred.
  875.66 -        */
  875.67 -		virtual void IncomingRequest (CSIPServerTransaction*
  875.68 -									  aTransaction) = 0;
  875.69 -
  875.70 -		/**
  875.71 -		* A SIP request within a dialog has been received from the network.
  875.72 -		* The client must resolve the actual dialog association to which
  875.73 -		* this request belongs.
  875.74 -		*
  875.75 -        * @pre aTransaction != 0
  875.76 -		* @param aTransaction SIP server transaction. The ownership is
  875.77 -        *   transferred.
  875.78 -		* @param aDialog the dialog that this transaction belongs to.        
  875.79 -		*/
  875.80 -		virtual void IncomingRequest (CSIPServerTransaction* aTransaction,
  875.81 -					                  CSIPDialog& aDialog) = 0;
  875.82 -
  875.83 -		/**
  875.84 -		* A SIP response received from the network.
  875.85 -		*
  875.86 -		* @param aTransaction contains response elements.
  875.87 -		*/
  875.88 -		virtual void IncomingResponse (CSIPClientTransaction&
  875.89 -                                       aTransaction) = 0;
  875.90 -
  875.91 -		/**
  875.92 -		* A SIP response received from the network that is within a dialog
  875.93 -		* association or creates a dialog association.
  875.94 -		*
  875.95 -		* @param aTransaction contains response elements.
  875.96 -		* @param aDialogAssoc a dialog association.        
  875.97 -		*/		
  875.98 -		virtual void IncomingResponse (
  875.99 -					CSIPClientTransaction& aTransaction,
 875.100 -					CSIPDialogAssocBase& aDialogAssoc) = 0;
 875.101 -
 875.102 -        /**
 875.103 -		* Multiple SIP responses have been received to the single INVITE due
 875.104 -		* to the forking proxy. Note that each response creates a separate
 875.105 -		* INVITE dialog association.
 875.106 -        * Multiple responses can arrive until SIP stack completes UAC core
 875.107 -		* INVITE transaction.
 875.108 -        * If clients deletes INVITE transaction after first SIP response
 875.109 -		* other possible responses will be consumed by the implementation.
 875.110 -		* 
 875.111 -		* @param aTransaction contains response elements
 875.112 -		* @param aDialogAssoc INVITE dialog association; the ownership is 
 875.113 -		*        transferred
 875.114 -		*/
 875.115 -		virtual void IncomingResponse (
 875.116 -					CSIPClientTransaction& aTransaction,
 875.117 -					CSIPInviteDialogAssoc* aDialogAssoc) = 0;
 875.118 -
 875.119 -		/**
 875.120 -		* A SIP response related a registration binding or an error response
 875.121 -		* that is related to registration binding has been received
 875.122 -        * from the network.
 875.123 -        *
 875.124 -		* @param aTransaction contains response elements
 875.125 -		* @param aRegistration registration binding this transaction belongs to
 875.126 -		*/
 875.127 -		virtual void
 875.128 -			IncomingResponse (CSIPClientTransaction& aTransaction,
 875.129 -                              CSIPRegistrationBinding& aRegistration) = 0;
 875.130 -
 875.131 - 		/**
 875.132 -		* An asynchronous error has occurred in the stack related to the
 875.133 -		* request indicated by the given transaction.
 875.134 -		*
 875.135 -		* @param aError system wide or SIP error code
 875.136 -		* @param aTransaction failed transaction
 875.137 -		* @param aSIPConnection a SIP connection        
 875.138 -		*/
 875.139 -		virtual void ErrorOccured (TInt aError,
 875.140 -                                   CSIPTransactionBase& aTransaction) = 0;
 875.141 -
 875.142 -		/**
 875.143 -		* An asynchronous error has occurred in the stack related
 875.144 -		* to the request indicated by the given transaction.
 875.145 -        *
 875.146 -		* @param aError system wide or SIP error code
 875.147 -		* @param aTransaction the failed transaction
 875.148 -		* @param aRegistration the failed registration binding
 875.149 -		*/
 875.150 -		virtual void ErrorOccured (TInt aError,
 875.151 -				                   CSIPClientTransaction& aTransaction,
 875.152 -					               CSIPRegistrationBinding& aRegistration) = 0;
 875.153 -
 875.154 -		/**
 875.155 -		* An asynchronous error has occured related to a request within
 875.156 -		* an existing dialog.
 875.157 -        *
 875.158 -		* @param aError system wide or SIP error code
 875.159 -		* @param aTransaction the failed transaction.
 875.160 -		* @param aDialogAssoc the failed dialog associoation.        
 875.161 -		*/
 875.162 -		virtual void ErrorOccured (
 875.163 -					TInt aError,
 875.164 -				    CSIPTransactionBase& aTransaction,
 875.165 -					CSIPDialogAssocBase& aDialogAssoc) = 0;
 875.166 -
 875.167 -		/**
 875.168 -		* An asynchronous error has occured related to a refresh 
 875.169 -        *
 875.170 -		* @param aError system wide or SIP error code
 875.171 -		* @param aSIPRefresh original refresh object.        
 875.172 -		*/
 875.173 -		virtual void ErrorOccured (TInt aError, CSIPRefresh& aSIPRefresh) = 0;
 875.174 -
 875.175 -		/**
 875.176 -		* An asynchronous error has occured related to a periodical refresh
 875.177 -        * that relates to a registration.
 875.178 -        *
 875.179 -		* @param aError system wide or SIP error code; 
 875.180 -		*		 KErrCouldNotConnect if the refresh has failed
 875.181 -		*		 due to the suspended connection.
 875.182 -		* @param aRegistration associated registration binding
 875.183 -		*/
 875.184 -		virtual void ErrorOccured (TInt aError,					
 875.185 -					               CSIPRegistrationBinding& aRegistration) = 0;
 875.186 -
 875.187 -		/**
 875.188 -		* An asynchronous error has occured related to a periodical refresh
 875.189 -        * that belongs to SIP dialog association.
 875.190 -        *
 875.191 -		* @param aError system wide or SIP error code; 
 875.192 -		*        KErrCouldNotConnect if the refresh has failed
 875.193 -		*		 due to the suspended connection.
 875.194 -		* @param aDialogAssoc SIP dialog association.        
 875.195 -		*/
 875.196 -		virtual void ErrorOccured (TInt aError,			
 875.197 -					               CSIPDialogAssocBase& aDialogAssoc) = 0;
 875.198 -
 875.199 -        /**
 875.200 -		* SIP stack has completed UAC core INVITE transaction 64*T1 seconds
 875.201 -        * after the reception of the first 2xx response. No more 2xx responses
 875.202 -        * can be received to the issued single INVITE.
 875.203 -        *
 875.204 -        * If the INVITE transaction does not create a dialog, or the INVITE
 875.205 -        * transaction encounters an error, this event will not be sent.
 875.206 -        *
 875.207 -		* @param aTransaction a complete UAC core INVITE transaction
 875.208 -		*/
 875.209 -        virtual void InviteCompleted (CSIPClientTransaction& aTransaction) = 0;
 875.210 -
 875.211 -		/**
 875.212 -        * Invite was canceled with the CANCEL
 875.213 -        * @param aTransaction a canceled INVITE UAS transaction
 875.214 -        */
 875.215 -        virtual void InviteCanceled (CSIPServerTransaction& aTransaction) = 0;
 875.216 -                
 875.217 -		/**
 875.218 -		* Connection state has changed.
 875.219 -        * If connection state has changed to EInactive or EUnavailable,
 875.220 -		* SIP stack has removed all stand-alone SIP refreshes, registrations 
 875.221 -		* and dialog associations that client requested to refresh. Client may
 875.222 -		* re-issue refresh requests (stand-alone, registration or dialog 
 875.223 -		* association related) when connection becomes EActive again.
 875.224 -		* SIP stack also terminates all pending SIP client transactions and no
 875.225 -        * errors are reported back to the client about the terminated
 875.226 -        * transactions nor about removed refreshes in order to avoid event
 875.227 -        * flood.
 875.228 -		* 
 875.229 -		* @param aState indicates the current connection state        
 875.230 -		*/
 875.231 -		virtual void ConnectionStateChanged (CSIPConnection::TState aState) = 0;
 875.232 -	};
 875.233 -
 875.234 -#endif
   876.1 --- a/epoc32/include/sipconnpref.h	Tue Mar 16 16:12:26 2010 +0000
   876.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   876.3 @@ -1,73 +0,0 @@
   876.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   876.5 -// All rights reserved.
   876.6 -// This component and the accompanying materials are made available
   876.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   876.8 -// which accompanies this distribution, and is available
   876.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  876.10 -//
  876.11 -// Initial Contributors:
  876.12 -// Nokia Corporation - initial contribution.
  876.13 -//
  876.14 -// Contributors:
  876.15 -//
  876.16 -// Description:
  876.17 -// SIP extension events definition
  876.18 -// 
  876.19 -//
  876.20 -
  876.21 -
  876.22 -
  876.23 -/**
  876.24 - @file
  876.25 - @publishedAll
  876.26 - @released since v9.2
  876.27 -*/
  876.28 -
  876.29 -
  876.30 -#ifndef SIPCONNPREFS_H
  876.31 -#define SIPCONNPREFS_H
  876.32 -	
  876.33 -#include <connpref.h>
  876.34 -#include <cdbcols.h>
  876.35 -
  876.36 -/** The numeric value of SIP protocol family ID .*/
  876.37 -const TUint KAFSip = 0x10000; 
  876.38 -
  876.39 -
  876.40 -struct SSipConnPref
  876.41 -/** 
  876.42 -This contains the information about the Id of the profile
  876.43 -@publishedAll
  876.44 -@released since v9.2 
  876.45 -*/
  876.46 -	{
  876.47 -	/** The numeric value of SIP Profile ID **/
  876.48 -	TUint32 iProfileId;
  876.49 -	};
  876.50 -
  876.51 -	
  876.52 -class TSipConnPref : public TConnPref
  876.53 -/** 
  876.54 -This contains the information about the type of the connection preferences used by the SIP in the form of the profiles
  876.55 -@publishedAll
  876.56 -@released since v9.2 
  876.57 -*/
  876.58 -	{
  876.59 -public:
  876.60 -	/** Constructor. */
  876.61 -	TSipConnPref();
  876.62 -	/** Sets the profile ID same as the prameter **/
  876.63 -	inline void 	SetProfileId(TUint32 aProfileId);
  876.64 -	/** Gets the default profile ID  **/
  876.65 -	inline TUint32  GetProfileId() const;
  876.66 -	/** cast to appropriate SIP connection provider type  **/
  876.67 -	inline static TSipConnPref& TSipConnPref::Cast(const TConnPref& aPref);
  876.68 -	
  876.69 -protected:
  876.70 -	inline SSipConnPref* PrefPtr() const;
  876.71 -
  876.72 -	};
  876.73 -
  876.74 -#include <sipconnpref.inl>
  876.75 -
  876.76 -#endif  // sipconnpref.h
   877.1 --- a/epoc32/include/sipconnpref.inl	Tue Mar 16 16:12:26 2010 +0000
   877.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   877.3 @@ -1,51 +0,0 @@
   877.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   877.5 -// All rights reserved.
   877.6 -// This component and the accompanying materials are made available
   877.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   877.8 -// which accompanies this distribution, and is available
   877.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  877.10 -//
  877.11 -// Initial Contributors:
  877.12 -// Nokia Corporation - initial contribution.
  877.13 -//
  877.14 -// Contributors:
  877.15 -//
  877.16 -// Description:
  877.17 -// SIP extension events definition
  877.18 -// 
  877.19 -//
  877.20 -
  877.21 -
  877.22 -
  877.23 -/**
  877.24 - @file
  877.25 - @publishedAll
  877.26 -*/
  877.27 -
  877.28 -
  877.29 -inline TSipConnPref::TSipConnPref() 
  877.30 -	: TConnPref(TConnPref::EConnPrefSip)
  877.31 -	{
  877.32 -	SetProfileId(0);
  877.33 -	}
  877.34 -
  877.35 -inline void TSipConnPref::SetProfileId(TUint32 aProfileId)
  877.36 -	{
  877.37 -	PrefPtr()->iProfileId = aProfileId;
  877.38 -	}
  877.39 -	
  877.40 -inline TUint32 TSipConnPref::GetProfileId() const
  877.41 -	{
  877.42 -	return PrefPtr()->iProfileId;
  877.43 -	}
  877.44 -	
  877.45 -inline TSipConnPref& TSipConnPref::Cast(const TConnPref& aPref)
  877.46 -	{
  877.47 -	return (TSipConnPref&)aPref;
  877.48 -	}
  877.49 -
  877.50 -inline SSipConnPref* TSipConnPref::PrefPtr() const
  877.51 -	{
  877.52 -	return (SSipConnPref*)UserPtr();
  877.53 -	}
  877.54 -	
   878.1 --- a/epoc32/include/sipcontactheader.h	Tue Mar 16 16:12:26 2010 +0000
   878.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   878.3 @@ -1,233 +0,0 @@
   878.4 -/*
   878.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   878.6 -* All rights reserved.
   878.7 -* This component and the accompanying materials are made available
   878.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   878.9 -* which accompanies this distribution, and is available
  878.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  878.11 -*
  878.12 -* Initial Contributors:
  878.13 -* Nokia Corporation - initial contribution.
  878.14 -*
  878.15 -* Contributors:
  878.16 -*
  878.17 -* Description:
  878.18 -* Name        : sipcontactheader.h
  878.19 -* Part of     : SIP Codec
  878.20 -* Interface   : SDK API, SIP Codec API
  878.21 -* Version     : SIP/4.0 
  878.22 -*
  878.23 -*/
  878.24 -
  878.25 -
  878.26 -
  878.27 -
  878.28 -#ifndef CSIPCONTACTHEADER_H
  878.29 -#define CSIPCONTACTHEADER_H
  878.30 -
  878.31 -//  INCLUDES
  878.32 -#include "sipparameterheaderbase.h"
  878.33 -#include "_sipcodecdefs.h"
  878.34 -
  878.35 -// FORWARD DECLARATIONS
  878.36 -class CSIPAddress;
  878.37 -class CSIPContactHeaderParams;
  878.38 -
  878.39 -// CLASS DECLARATION
  878.40 -/**
  878.41 -* @publishedAll
  878.42 -* @released
  878.43 -*
  878.44 -* Class provides functions for setting and getting SIP "Contact"
  878.45 -* header fields.
  878.46 -*
  878.47 -*  @lib sipcodec.lib
  878.48 -*/
  878.49 -class CSIPContactHeader : public CSIPParameterHeaderBase
  878.50 -	{
  878.51 -	public: // Constructors and destructor
  878.52 -
  878.53 -		/**
  878.54 -		* Constructs a CSIPContactHeader from textual representation 
  878.55 -		* of the header's value part.
  878.56 -		* Note that "Contact: *" can be only created using this function.
  878.57 -		* @param aValue a value part of a "Contact"-header
  878.58 -		* @return an array containing 1..n instances of CSIPContactHeader
  878.59 -		*/
  878.60 -		IMPORT_C static RPointerArray<CSIPContactHeader> 
  878.61 -			DecodeL(const TDesC8& aValue);
  878.62 -
  878.63 -		/**
  878.64 -		* Creates a new instance of CSIPContactHeader
  878.65 -		* @pre aSIPAddress != 0
  878.66 -		* @param aSIPAddress a name-address, the ownership is transferred 
  878.67 -		* @return a new instance of CSIPContactHeader
  878.68 -		*/
  878.69 -		IMPORT_C static CSIPContactHeader* NewL(CSIPAddress* aSIPAddress);
  878.70 -
  878.71 -		/**
  878.72 -		* Creates a new instance of CSIPContactHeader and puts it to CleanupStack
  878.73 -		* @pre aSIPAddress != 0
  878.74 -		* @param aSIPAddress a name-address, the ownership is transferred 
  878.75 -		* @return a new instance of CSIPContactHeader
  878.76 -		*/
  878.77 -		IMPORT_C static CSIPContactHeader* NewLC(CSIPAddress* aSIPAddress);
  878.78 -
  878.79 -		/**
  878.80 -		* Destructor, deletes the resources of CSIPContactHeader.
  878.81 -		*/
  878.82 -		IMPORT_C ~CSIPContactHeader();
  878.83 -
  878.84 -	
  878.85 -	public: // New functions
  878.86 -
  878.87 -		/**
  878.88 -		* Compares this object to another instance of CSIPContactHeader
  878.89 -		* @param aHeader a CSIPContactHeader header to compare to
  878.90 -		* @return ETrue if the objects are equal otherwise EFalse
  878.91 -		*/
  878.92 -		IMPORT_C TBool operator==(const CSIPContactHeader& aHeader) const;
  878.93 -
  878.94 -		/**
  878.95 -		* Checks if the address is set to a STAR ("*")
  878.96 -		* @return ETrue, if the address is a "*" otherwise EFalse
  878.97 -		*/
  878.98 -		IMPORT_C TBool Star() const;
  878.99 -
 878.100 -		/**
 878.101 -		* Gets the value of the "expires"-parameter
 878.102 -		* @return the "expires"-parameter, or 
 878.103 -		*         KErrNotFound if the parameter is not present.
 878.104 -		*/
 878.105 -		IMPORT_C TInt ExpiresParameter() const;
 878.106 -
 878.107 -		/**
 878.108 -		* Sets the "expires"-parameter
 878.109 -		* @pre aExpiresParam >= 0
 878.110 -		* @param aExpiresParam a "expires"-parameter value to set
 878.111 -		*/
 878.112 -		IMPORT_C void SetExpiresParameterL(TInt aExpiresParam);
 878.113 -
 878.114 -		/**
 878.115 -		* Gets the value of "q"-parameter
 878.116 -		* @pre Star() == EFalse
 878.117 -		* @return the "q"-parameter value, 
 878.118 -		*         or zero if the parameter is not present.
 878.119 -		*/
 878.120 -		IMPORT_C TReal QParameter() const;
 878.121 -
 878.122 -		/**
 878.123 -		* Sets the "q"-parameter value in the "Contact" header
 878.124 -		* @pre Star() == EFalse
 878.125 -		* @param aQValue a "q"-parameter value to set
 878.126 -		*/
 878.127 -		IMPORT_C void SetQParameterL(TReal aQValue);
 878.128 -
 878.129 -		/**
 878.130 -		* Gets the name-address as const
 878.131 -		* @return name-address or 0 if not present
 878.132 -		*         The ownership is NOT transferred.
 878.133 -		*/
 878.134 -		IMPORT_C const CSIPAddress* SIPAddress() const;
 878.135 -
 878.136 -		/**
 878.137 -		* Gets the name-address
 878.138 -		* @return name-address or 0 if not present
 878.139 -		*         The ownership is NOT transferred.
 878.140 -		*/
 878.141 -		IMPORT_C CSIPAddress* SIPAddress();
 878.142 -
 878.143 -		/**
 878.144 -		* Sets the name-address
 878.145 -		* @pre Star() == EFalse
 878.146 -		* @pre aSIPAddress != 0
 878.147 -		* @param aSIPAddress a name-address to set, the ownership is transferred
 878.148 -		*/
 878.149 -		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
 878.150 -
 878.151 -		/**
 878.152 -		* Constructs an instance of a CSIPContactHeader from a RReadStream
 878.153 -		* @param aReadStream a stream containing the value of the
 878.154 -		*        externalized object (header name not included). 
 878.155 -		* @return an instance of a CSIPContactHeader
 878.156 -		*/
 878.157 -		IMPORT_C static CSIPHeaderBase* 
 878.158 -			InternalizeValueL(RReadStream& aReadStream);
 878.159 -
 878.160 -
 878.161 -	public: // From CSIPHeaderBase
 878.162 -		
 878.163 -		/**
 878.164 -		* From CSIPHeaderBase CloneL
 878.165 -		*/
 878.166 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 878.167 -
 878.168 -		/**
 878.169 -		* From CSIPHeaderBase Name
 878.170 -		*/
 878.171 -		IMPORT_C RStringF Name() const;
 878.172 -
 878.173 -
 878.174 -	public: // From CSIPHeaderBase, for internal use
 878.175 -
 878.176 -        /**
 878.177 -        * @internalComponent
 878.178 -        */
 878.179 -		TBool MoreThanOneAllowed() const;
 878.180 -		
 878.181 -        /**
 878.182 -        * @internalComponent
 878.183 -        */		
 878.184 -		TBool HasCompactName() const;
 878.185 -		
 878.186 -        /**
 878.187 -        * @internalComponent
 878.188 -        */		
 878.189 -		RStringF CompactName() const;
 878.190 -		
 878.191 -        /**
 878.192 -        * @internalComponent
 878.193 -        */		
 878.194 -		TPreferredPlace PreferredPlaceInMessage() const;
 878.195 -
 878.196 -	public: // New functions, for internal use
 878.197 -
 878.198 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 878.199 -
 878.200 -	private: // From CSIPHeaderBase
 878.201 -
 878.202 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 878.203 -
 878.204 -	private: // From CSIPParameterHeaderBase
 878.205 -
 878.206 -		TBool ParamInsertionAllowed() const;
 878.207 -		HBufC8* ToTextMandatoryPartLC() const;
 878.208 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 878.209 -		const CSIPParamContainerBase& Params() const;
 878.210 -		CSIPParamContainerBase& Params();
 878.211 -
 878.212 -	private: // Constructors
 878.213 -
 878.214 -		CSIPContactHeader(TBool aIsStar=EFalse);
 878.215 -		void ConstructL();
 878.216 -		void ConstructL(CSIPAddress* aSIPAddress);
 878.217 -		void ConstructL(const CSIPContactHeader& aContactHeader);
 878.218 -
 878.219 -	private: // New functions 
 878.220 -
 878.221 -		void DoInternalizeValueL(RReadStream& aReadStream);
 878.222 -
 878.223 -	private: // Data
 878.224 -
 878.225 -		CSIPAddress* iSIPAddress;
 878.226 -		CSIPContactHeaderParams* iParams;
 878.227 -		TBool iIsStar;
 878.228 -
 878.229 -	private: // For testing purposes
 878.230 -	
 878.231 -		UNIT_TEST(CSIPContactHeaderTest)
 878.232 -	};
 878.233 -
 878.234 -#endif // CSIPCONTACTHEADER_H
 878.235 -
 878.236 -// End of File
   879.1 --- a/epoc32/include/sipcontentdispositionheader.h	Tue Mar 16 16:12:26 2010 +0000
   879.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   879.3 @@ -1,165 +0,0 @@
   879.4 -/*
   879.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   879.6 -* All rights reserved.
   879.7 -* This component and the accompanying materials are made available
   879.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   879.9 -* which accompanies this distribution, and is available
  879.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  879.11 -*
  879.12 -* Initial Contributors:
  879.13 -* Nokia Corporation - initial contribution.
  879.14 -*
  879.15 -* Contributors:
  879.16 -*
  879.17 -* Description:
  879.18 -* Name        : sipcontentdispositionheader.h
  879.19 -* Part of     : SIP Codec
  879.20 -* Interface   : SDK API, SIP Codec API
  879.21 -* Version     : SIP/4.0 
  879.22 -*
  879.23 -*/
  879.24 -
  879.25 -
  879.26 -
  879.27 -
  879.28 -#ifndef CSIPCONTENTDISPOSITIONHEADER_H
  879.29 -#define CSIPCONTENTDISPOSITIONHEADER_H
  879.30 -
  879.31 -//  INCLUDES
  879.32 -#include "sipparameterheaderbase.h"
  879.33 -#include "_sipcodecdefs.h"
  879.34 -
  879.35 -// FORWARD DECLARATIONS
  879.36 -class CSIPHeaderGenericParams;
  879.37 -
  879.38 -// CLASS DECLARATION
  879.39 -/**
  879.40 -* @publishedAll
  879.41 -* @released
  879.42 -*
  879.43 -* Class provides functions for setting and getting parameters in 
  879.44 -* SIP "Content-Disposition" header.
  879.45 -*
  879.46 -*  @lib sipcodec.lib
  879.47 -*/
  879.48 -class CSIPContentDispositionHeader : public CSIPParameterHeaderBase
  879.49 -	{
  879.50 -	public:	// Constructors and destructor
  879.51 -	
  879.52 -		/**
  879.53 -		* Constructs a CSIPContentDispositionHeader from textual representation 
  879.54 -		* of the header's value part.
  879.55 -		* @param aValue a value part of a "Content-Disposition"-header
  879.56 -		* @return a new instance of CSIPContentDispositionHeader
  879.57 -		*/
  879.58 -		IMPORT_C static CSIPContentDispositionHeader* 
  879.59 -			DecodeL (const TDesC8& aValue);
  879.60 -
  879.61 -		/**
  879.62 -		* Creates a new instance of CSIPContentDispositionHeader
  879.63 -		* @param aDispType a Disp-Type value
  879.64 -		* @return a new instance of CSIPContentDispositionHeader
  879.65 -		*/
  879.66 -		IMPORT_C static CSIPContentDispositionHeader* 
  879.67 -			NewL(const TDesC8& aDispType);
  879.68 -
  879.69 -		/**
  879.70 -		* Creates a new instance of CSIPContentDispositionHeader 
  879.71 -		* and puts it to CleanupStack
  879.72 -		* @param aDispType a Disp-Type value
  879.73 -		* @return a new instance of CSIPContentDispositionHeader
  879.74 -		*/
  879.75 -		IMPORT_C static CSIPContentDispositionHeader* 
  879.76 -			NewLC(const TDesC8& aDispType);
  879.77 -
  879.78 -		/**
  879.79 -		* Destructor. deletes the resources of CSIPContentDispositionHeader.
  879.80 -		*/
  879.81 -		IMPORT_C ~CSIPContentDispositionHeader();
  879.82 -
  879.83 -
  879.84 -	public: // New functions
  879.85 -
  879.86 -		/**
  879.87 -		* Gets the disp-type parameter from the "Content-Disposition" header
  879.88 -		* @return the disp-type parameter
  879.89 -		*/
  879.90 -		IMPORT_C const TDesC8& DispType() const;
  879.91 -
  879.92 -		/**
  879.93 -		* Sets the disp-type parameter in the "Content-Disposition" header; 
  879.94 -		* @param aTag a disp-type parameter to set
  879.95 -		*/
  879.96 -		IMPORT_C void SetDispTypeL(const TDesC8& aDispType);
  879.97 -	
  879.98 -		/**
  879.99 -		* Constructs an instance of a CSIPContentDispositionHeader 
 879.100 -		* from a RReadStream
 879.101 -		* @param aReadStream a stream containing the value of the
 879.102 -		*        externalized object (header name not included). 
 879.103 -		* @return an instance of a CSIPContentDispositionHeader
 879.104 -		*/
 879.105 -		IMPORT_C static CSIPHeaderBase* 
 879.106 -			InternalizeValueL(RReadStream& aReadStream);
 879.107 -
 879.108 -
 879.109 -	public: // From CSIPHeaderBase
 879.110 -
 879.111 -		/**
 879.112 -		* From CSIPHeaderBase CloneL
 879.113 -		*/
 879.114 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 879.115 -
 879.116 -		/**
 879.117 -		* From CSIPHeaderBase Name
 879.118 -		*/
 879.119 -		IMPORT_C RStringF Name() const;
 879.120 -
 879.121 -
 879.122 -	public: // From CSIPHeaderBase, for internal use
 879.123 -
 879.124 -        /**
 879.125 -        * @internalComponent
 879.126 -        */	
 879.127 -		TPreferredPlace PreferredPlaceInMessage() const;
 879.128 -
 879.129 -	public: // New functions, for internal use
 879.130 -
 879.131 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 879.132 -
 879.133 -	private: // From CSIPHeaderBase
 879.134 -
 879.135 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 879.136 -
 879.137 -	private: // From CSIPParameterHeaderBase
 879.138 -	
 879.139 -		HBufC8* ToTextMandatoryPartLC() const;
 879.140 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 879.141 -		const CSIPParamContainerBase& Params() const;
 879.142 -		CSIPParamContainerBase& Params();
 879.143 -
 879.144 -	private: // Constructors
 879.145 -
 879.146 -		CSIPContentDispositionHeader();
 879.147 -		void ConstructL();
 879.148 -		void ConstructL(const TDesC8& aDispType);
 879.149 -		void ConstructL(const TDesC8& aDispType, const TDesC8& aHandlingParam);
 879.150 -		void ConstructL(const CSIPContentDispositionHeader& aHeader);
 879.151 -
 879.152 -	private: // New functions
 879.153 -
 879.154 -		void DoInternalizeValueL(RReadStream& aReadStream);
 879.155 -
 879.156 -	private: // Data
 879.157 -
 879.158 -		HBufC8* iDispType;
 879.159 -		CSIPHeaderGenericParams* iParams;
 879.160 -
 879.161 -	private: // For testing purposes
 879.162 -	
 879.163 -		UNIT_TEST(CSIPContentDispositionHeaderTest)
 879.164 -	};
 879.165 -
 879.166 -#endif // CSIPCONTENTDISPOSITIONHEADER_H
 879.167 -
 879.168 -// End of File
   880.1 --- a/epoc32/include/sipcontentencodingheader.h	Tue Mar 16 16:12:26 2010 +0000
   880.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   880.3 @@ -1,133 +0,0 @@
   880.4 -/*
   880.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   880.6 -* All rights reserved.
   880.7 -* This component and the accompanying materials are made available
   880.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   880.9 -* which accompanies this distribution, and is available
  880.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  880.11 -*
  880.12 -* Initial Contributors:
  880.13 -* Nokia Corporation - initial contribution.
  880.14 -*
  880.15 -* Contributors:
  880.16 -*
  880.17 -* Description:
  880.18 -* Name        : sipcontentencodingheader.h
  880.19 -* Part of     : SIP Codec
  880.20 -* Interface   : SDK API, SIP Codec API
  880.21 -* Version     : SIP/4.0 
  880.22 -*
  880.23 -*/
  880.24 -
  880.25 -
  880.26 -
  880.27 -
  880.28 -#ifndef CSIPCONTENTENCODINGHEADER_H
  880.29 -#define CSIPCONTENTENCODINGHEADER_H
  880.30 -
  880.31 -//  INCLUDES
  880.32 -#include "siptokenheaderbase.h"
  880.33 -#include "_sipcodecdefs.h"
  880.34 -
  880.35 -// CLASS DECLARATION
  880.36 -/**
  880.37 -* @publishedAll
  880.38 -* @released
  880.39 -*
  880.40 -* Class provides functions for setting and getting parameters 
  880.41 -* in SIP "Content-Encoding" header.
  880.42 -*
  880.43 -*  @lib sipcodec.lib
  880.44 -*/
  880.45 -class CSIPContentEncodingHeader : public CSIPTokenHeaderBase
  880.46 -	{
  880.47 -	public:	// Constructors and destructor
  880.48 -
  880.49 -		/**
  880.50 -		* Constructs a CSIPContentEncodingHeader from textual representation
  880.51 -		* of the header's value part.
  880.52 -		* @param aValue a value part of a "Content-Encoding"-header
  880.53 -		* @return an array containing 1..n instances of 
  880.54 -		*         CSIPContentEncodingHeader
  880.55 -		*/
  880.56 -		IMPORT_C static RPointerArray<CSIPContentEncodingHeader> 
  880.57 -			DecodeL(const TDesC8& aValue);
  880.58 -
  880.59 -		/**
  880.60 -		* Creates a new instance of CSIPContentEncodingHeader
  880.61 -		* @param aValue a content-coding value 
  880.62 -		* @return a new instance of CSIPContentEncodingHeader
  880.63 -		*/
  880.64 -		IMPORT_C static CSIPContentEncodingHeader* NewL(RStringF aValue);
  880.65 -
  880.66 -		/**
  880.67 -		* Creates a new instance of CSIPContentEncodingHeader 
  880.68 -		* and puts it to CleanupStack
  880.69 -		* @param aValue a content-coding value
  880.70 -		* @return a new instance of CSIPContentEncodingHeader
  880.71 -		*/
  880.72 -		IMPORT_C static CSIPContentEncodingHeader* NewLC(RStringF aValue);
  880.73 -
  880.74 -		/**
  880.75 -		* Destructor, deletes the resources of CSIPContentEncodingHeader.
  880.76 -		*/
  880.77 -		IMPORT_C ~CSIPContentEncodingHeader();
  880.78 -
  880.79 -
  880.80 -	public: // New functions
  880.81 -
  880.82 -		/**
  880.83 -		* Constructs an instance of a CSIPContentEncodingHeader 
  880.84 -		* from a RReadStream
  880.85 -		* @param aReadStream a stream containing the value of the
  880.86 -		*        externalized object (header name not included).
  880.87 -		* @return an instance of a CSIPContentEncodingHeader
  880.88 -		*/
  880.89 -
  880.90 -		IMPORT_C static CSIPHeaderBase* 
  880.91 -			InternalizeValueL(RReadStream& aReadStream);
  880.92 -
  880.93 -
  880.94 -	public: // From CSIPHeaderBase
  880.95 -
  880.96 -		/**
  880.97 -		* From CSIPHeaderBase CloneL
  880.98 -		*/
  880.99 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 880.100 -
 880.101 -		/**
 880.102 -		* From CSIPHeaderBase Name
 880.103 -		*/
 880.104 -		IMPORT_C RStringF Name() const;
 880.105 -
 880.106 -
 880.107 -	public: // From CSIPHeaderBase, for internal use
 880.108 -
 880.109 -        /**
 880.110 -        * @internalComponent
 880.111 -        */
 880.112 -		TBool HasCompactName() const;
 880.113 -		
 880.114 -        /**
 880.115 -        * @internalComponent
 880.116 -        */		
 880.117 -		RStringF CompactName() const;
 880.118 -		
 880.119 -        /**
 880.120 -        * @internalComponent
 880.121 -        */		
 880.122 -		TPreferredPlace PreferredPlaceInMessage() const;
 880.123 -
 880.124 -	public: // New functions, for internal use
 880.125 -
 880.126 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 880.127 -
 880.128 -	private: // Constructors
 880.129 -
 880.130 -		CSIPContentEncodingHeader();
 880.131 -		CSIPContentEncodingHeader(const CSIPContentEncodingHeader& aHeader);
 880.132 -		};
 880.133 -
 880.134 -#endif // CSIPCONTENTENCODINGHEADER_H
 880.135 -
 880.136 -// End of File
   881.1 --- a/epoc32/include/sipcontenttypeheader.h	Tue Mar 16 16:12:26 2010 +0000
   881.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   881.3 @@ -1,187 +0,0 @@
   881.4 -/*
   881.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   881.6 -* All rights reserved.
   881.7 -* This component and the accompanying materials are made available
   881.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   881.9 -* which accompanies this distribution, and is available
  881.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  881.11 -*
  881.12 -* Initial Contributors:
  881.13 -* Nokia Corporation - initial contribution.
  881.14 -*
  881.15 -* Contributors:
  881.16 -*
  881.17 -* Description:
  881.18 -* Name        : sipcontenttypeheader.h
  881.19 -* Part of     : SIP Codec
  881.20 -* Interface   : SDK API, SIP Codec API
  881.21 -* Version     : SIP/4.0 
  881.22 -*
  881.23 -*/
  881.24 -
  881.25 -
  881.26 -
  881.27 -
  881.28 -#ifndef CSIPCONTENTTYPEHEADER_H
  881.29 -#define CSIPCONTENTTYPEHEADER_H
  881.30 -
  881.31 -//  INCLUDES
  881.32 -#include "sipparameterheaderbase.h"
  881.33 -#include "_sipcodecdefs.h"
  881.34 -
  881.35 -// FORWARD DECLARATIONS
  881.36 -class CSIPContentTypeHeaderParams;
  881.37 -
  881.38 -// CLASS DECLARATION
  881.39 -/**
  881.40 -* @publishedAll
  881.41 -* @released
  881.42 -*
  881.43 -* Class provides functions for setting and getting media types and
  881.44 -* parameters in SIP "Content-Type" header.
  881.45 -*
  881.46 -*  @lib sipcodec.lib
  881.47 -*/
  881.48 -class CSIPContentTypeHeader : public CSIPParameterHeaderBase
  881.49 -	{
  881.50 -	public:	// Constructors and destructor
  881.51 -
  881.52 -		/**
  881.53 -		* Constructs a CSIPContentTypeHeader from textual representation 
  881.54 -		* of the header's value part.
  881.55 -		* @param aValue a value part of a "Content-Type"-header
  881.56 -		* @return a new instance of CSIPContentTypeHeader
  881.57 -		*/
  881.58 -		IMPORT_C static CSIPContentTypeHeader* DecodeL(const TDesC8& aValue);
  881.59 -
  881.60 -		/**
  881.61 -		* Creates a new instance of CSIPContentTypeHeader
  881.62 -		* @param aMediaType a media type to set. For example "application"
  881.63 -		* @param aMediaSubtype a media subtype to set. For example "sdp"
  881.64 -		* @return a new instance of CSIPContentTypeHeader
  881.65 -		*/
  881.66 -		IMPORT_C static CSIPContentTypeHeader* 
  881.67 -			NewL(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
  881.68 -
  881.69 -		/**
  881.70 -		* Creates a new instance of CSIPContentTypeHeader 
  881.71 -		* and puts it onto the cleanup stack
  881.72 -		* @param aMediaType a media type to set. For example "application"
  881.73 -		* @param aMediaSubtype a media subtype to set. For example "sdp"
  881.74 -		* @return a new instance of CSIPContentTypeHeader
  881.75 -		*/
  881.76 -		IMPORT_C static CSIPContentTypeHeader* 
  881.77 -			NewLC(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
  881.78 -
  881.79 -		/**
  881.80 -		* Destructor, deletes the resources of CSIPContentTypeHeader.
  881.81 -		*/
  881.82 -		IMPORT_C ~CSIPContentTypeHeader();
  881.83 -
  881.84 -	public: // New functions
  881.85 -
  881.86 -		/**
  881.87 -		* Gets the media type from the "Content-Type" header
  881.88 -		* @return a media type
  881.89 -		*/
  881.90 -		IMPORT_C const TDesC8& MediaType() const;
  881.91 -
  881.92 -		/**
  881.93 -		* Sets the media type in the "Content-Type" header
  881.94 -		* @param aMediaType a media type
  881.95 -		*/
  881.96 -		IMPORT_C void SetMediaTypeL(const TDesC8& aMediaType);
  881.97 -
  881.98 -		/**
  881.99 -		* Gets the media subtype from the "Content-Type" header
 881.100 -		* @return a media subtype
 881.101 -		*/
 881.102 -		IMPORT_C const TDesC8& MediaSubtype() const;
 881.103 -
 881.104 -		/**
 881.105 -		* Sets the media subtype in the "Content-Type" header
 881.106 -		* @param aMediaSubtype a media subtype
 881.107 -		*/
 881.108 -		IMPORT_C void SetMediaSubtypeL(const TDesC8& aMediaSubtype);
 881.109 -
 881.110 -		/**
 881.111 -		* Constructs an instance of a CSIPContentTypeHeader from a RReadStream
 881.112 -		* @param aReadStream a stream containing the value of the
 881.113 -		*        externalized header object (header name not included).
 881.114 -		* @return an instance of a CSIPContentTypeHeader
 881.115 -		*/
 881.116 -
 881.117 -		IMPORT_C static CSIPHeaderBase* 
 881.118 -			InternalizeValueL(RReadStream& aReadStream);
 881.119 -
 881.120 -
 881.121 -	public: // From CSIPHeaderBase
 881.122 -
 881.123 -		/**
 881.124 -		* From CSIPHeaderBase CloneL
 881.125 -		*/
 881.126 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 881.127 -
 881.128 -		/**
 881.129 -		* From CSIPHeaderBase Name
 881.130 -		*/	
 881.131 -		IMPORT_C RStringF Name() const;
 881.132 -
 881.133 -
 881.134 -	public: // From CSIPHeaderBase, for internal use
 881.135 -
 881.136 -        /**
 881.137 -        * @internalComponent
 881.138 -        */
 881.139 -		TBool HasCompactName() const;
 881.140 -		
 881.141 -        /**
 881.142 -        * @internalComponent
 881.143 -        */		
 881.144 -		RStringF CompactName() const;
 881.145 -		
 881.146 -        /**
 881.147 -        * @internalComponent
 881.148 -        */		
 881.149 -		TPreferredPlace PreferredPlaceInMessage() const;
 881.150 -
 881.151 -	public: // New functions, for internal use
 881.152 -
 881.153 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 881.154 -
 881.155 -	private: // From CSIPHeaderBase
 881.156 -
 881.157 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 881.158 -
 881.159 -	private: // CSIPParameterHeaderBase
 881.160 -
 881.161 -		HBufC8* ToTextMandatoryPartLC() const;
 881.162 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 881.163 -		const CSIPParamContainerBase& Params() const;
 881.164 -		CSIPParamContainerBase& Params();
 881.165 -
 881.166 -	private: // Constructors
 881.167 -
 881.168 -		CSIPContentTypeHeader();
 881.169 -		void ConstructL();
 881.170 -		void ConstructL(const TDesC8& aMediaType, const TDesC8& aMediaSubtype);
 881.171 -		void ConstructL(const CSIPContentTypeHeader& aContentTypeHeader);
 881.172 -
 881.173 -	private: // New functions
 881.174 -
 881.175 -		void DoInternalizeValueL(RReadStream& aReadStream);
 881.176 -
 881.177 -	private: // Data
 881.178 -
 881.179 -		HBufC8* iMediaType;
 881.180 -		HBufC8* iMediaSubtype;
 881.181 -		CSIPContentTypeHeaderParams* iParams;
 881.182 -
 881.183 -	private: // For testing purposes
 881.184 -	
 881.185 -		UNIT_TEST(CSIPContentTypeHeaderTest)
 881.186 -	};
 881.187 -
 881.188 -#endif // CSIPCONTENTTYPEHEADER_H
 881.189 -
 881.190 -// End of File
   882.1 --- a/epoc32/include/sipcseqheader.h	Tue Mar 16 16:12:26 2010 +0000
   882.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   882.3 @@ -1,168 +0,0 @@
   882.4 -/*
   882.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   882.6 -* All rights reserved.
   882.7 -* This component and the accompanying materials are made available
   882.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   882.9 -* which accompanies this distribution, and is available
  882.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  882.11 -*
  882.12 -* Initial Contributors:
  882.13 -* Nokia Corporation - initial contribution.
  882.14 -*
  882.15 -* Contributors:
  882.16 -*
  882.17 -* Description:
  882.18 -* Name        : sipcseqheader.h
  882.19 -* Part of     : SIP Codec
  882.20 -* Interface   : SDK API, SIP Codec API
  882.21 -* Version     : SIP/4.0 
  882.22 -*
  882.23 -*/
  882.24 -
  882.25 -
  882.26 -
  882.27 -
  882.28 -#ifndef CSIPCSEQHEADER_H
  882.29 -#define CSIPCSEQHEADER_H
  882.30 -
  882.31 -//  INCLUDES
  882.32 -#include "sipheaderbase.h"
  882.33 -#include "_sipcodecdefs.h"
  882.34 -
  882.35 -// CLASS DECLARATION
  882.36 -/**
  882.37 -* @publishedAll
  882.38 -* @released
  882.39 -*
  882.40 -* Class provides functions for setting and getting sequence number and
  882.41 -* method in SIP "CSeq" header.
  882.42 -*
  882.43 -*  @lib sipcodec.lib
  882.44 -*/
  882.45 -class CSIPCSeqHeader : public CSIPHeaderBase
  882.46 -	{
  882.47 -	public: // Constructors and destructor
  882.48 -
  882.49 -		/**
  882.50 -		* Constructs a CSIPCSeqHeader from textual representation 
  882.51 -		* of the header's value part.
  882.52 -		* @param aValue a value part of a "CSeq"-header (e.g. "1 REGISTER")
  882.53 -		* @return a new instance of CSIPCSeqHeader.  
  882.54 -		*/
  882.55 -		IMPORT_C static CSIPCSeqHeader* DecodeL(const TDesC8& aValue);
  882.56 -
  882.57 -		/**
  882.58 -		* Creates a new instance of CSIPCSeqHeader
  882.59 -		* @param aSeq a sequence number to set.
  882.60 -		* @param aMethod a method to set. For example "REGISTER"
  882.61 -		* @return a new instance of CSIPCSeqHeader
  882.62 -		*/
  882.63 -		IMPORT_C static CSIPCSeqHeader* NewL(TUint aSeq, RStringF aMethod);
  882.64 -
  882.65 -		/**
  882.66 -		* Creates a new instance of CSIPCSeqHeader and puts it to CleanupStack
  882.67 -		* @param aSeq a sequence number to set.
  882.68 -		* @param aMethod a method to set. For example "REGISTER"
  882.69 -		* @return a new instance of CSIPCSeqHeader
  882.70 -		*/
  882.71 -		IMPORT_C static CSIPCSeqHeader* NewLC(TUint aSeq, RStringF aMethod);
  882.72 -
  882.73 -		/**
  882.74 -		* Destructor, deletes the resources of CSIPCSeqHeader.
  882.75 -		*/
  882.76 -		IMPORT_C ~CSIPCSeqHeader();
  882.77 -
  882.78 -
  882.79 -	public: // New functions
  882.80 -
  882.81 -		/**
  882.82 -		* Gets the sequence number from the "CSeq" header
  882.83 -		* @return the current sequence number
  882.84 -		*/
  882.85 -		IMPORT_C TUint Seq() const;
  882.86 -
  882.87 -		/**
  882.88 -		* Sets the sequence number in the "CSeq" header
  882.89 -		* @param aSeq a sequence number to set
  882.90 -		*/
  882.91 -		IMPORT_C void SetSeq(TUint aSeq);
  882.92 -
  882.93 -		/**
  882.94 -		* Gets the method from the "CSeq" header
  882.95 -		* @return the method 
  882.96 -		*/
  882.97 -		IMPORT_C RStringF Method() const;
  882.98 -
  882.99 -		/**
 882.100 -		* Sets the method in the "CSeq" header
 882.101 -		* @param aMethod a method to set
 882.102 -		*/
 882.103 -		IMPORT_C void SetMethodL(RStringF aMethod);
 882.104 -
 882.105 -		/**
 882.106 -		* Constructs an instance of a CSIPCSeqHeader from a RReadStream
 882.107 -		* @param aReadStream a stream containing the value of the
 882.108 -		*	     externalized object (header name not included). 
 882.109 -		* @return an instance of a CSIPCSeqHeader
 882.110 -		*/
 882.111 -		IMPORT_C static CSIPHeaderBase* 
 882.112 -			InternalizeValueL(RReadStream& aReadStream);
 882.113 -
 882.114 -
 882.115 -	public: // From CSIPHeaderBase
 882.116 -
 882.117 -		/**
 882.118 -		* From CSIPHeaderBase CloneL
 882.119 -		*/
 882.120 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 882.121 -
 882.122 -		/**
 882.123 -		* From CSIPHeaderBase Name
 882.124 -		*/
 882.125 -		IMPORT_C RStringF Name() const;
 882.126 -
 882.127 -		/**
 882.128 -		* From CSIPHeaderBase ToTextValueL
 882.129 -		*/
 882.130 -		IMPORT_C HBufC8* ToTextValueL() const;
 882.131 -
 882.132 -
 882.133 -	public: // From CSIPHeaderBase, for internal use
 882.134 -
 882.135 -        /**
 882.136 -        * @internalComponent
 882.137 -        */
 882.138 -		TPreferredPlace PreferredPlaceInMessage () const;
 882.139 -
 882.140 -	public: // New functions, for internal use
 882.141 -
 882.142 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 882.143 -
 882.144 -	private: // From CSIPHeaderBase
 882.145 -
 882.146 -		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 882.147 -
 882.148 -	private: // Constructors
 882.149 -
 882.150 -		CSIPCSeqHeader();
 882.151 -		void ConstructL(TUint aCSeq, RStringF aMethod);
 882.152 -	
 882.153 -	private: // New functions
 882.154 -		
 882.155 -		void DoInternalizeValueL(RReadStream& aReadStream);
 882.156 -		void ParseL(const TDesC8& aValue);
 882.157 -		void SetMethodL(const TDesC8& aMethod);
 882.158 -
 882.159 -	private: // Data
 882.160 -
 882.161 -		TUint iSeq;
 882.162 -		RStringF iMethod;
 882.163 -
 882.164 -	private: // For testing purposes
 882.165 -	
 882.166 -		UNIT_TEST(CSIPCSeqHeaderTest)
 882.167 -	};
 882.168 -
 882.169 -#endif // CSIPCSEQHEADER_H
 882.170 -
 882.171 -// End of File
   883.1 --- a/epoc32/include/sipdefs.h	Tue Mar 16 16:12:26 2010 +0000
   883.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   883.3 @@ -1,40 +0,0 @@
   883.4 -/*
   883.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   883.6 -* All rights reserved.
   883.7 -* This component and the accompanying materials are made available
   883.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   883.9 -* which accompanies this distribution, and is available
  883.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  883.11 -*
  883.12 -* Initial Contributors:
  883.13 -* Nokia Corporation - initial contribution.
  883.14 -*
  883.15 -* Contributors:
  883.16 -*
  883.17 -* Description:
  883.18 -* Name          : sipdefs.h
  883.19 -* Part of       : SIP Client API
  883.20 -* Interface     : SDK API, SIP Client API
  883.21 -* Version       : 1.0
  883.22 -*
  883.23 -*/
  883.24 -
  883.25 -
  883.26 -
  883.27 -#ifndef SIPDEFS_H
  883.28 -#define SIPDEFS_H
  883.29 -
  883.30 -// INCLUDES
  883.31 -#include <e32base.h>
  883.32 -
  883.33 -/**
  883.34 -* @file
  883.35 -* @publishedAll
  883.36 -* @released
  883.37 -*/
  883.38 -
  883.39 -// CONSTANTS
  883.40 -/** SIP minimum value for the expiration in seconds*/
  883.41 -const TUint KSIPMinExpirationValue=60;
  883.42 -
  883.43 -#endif // SIPDEFS_H
   884.1 --- a/epoc32/include/sipdialog.h	Tue Mar 16 16:12:26 2010 +0000
   884.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   884.3 @@ -1,252 +0,0 @@
   884.4 -/*
   884.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   884.6 -* All rights reserved.
   884.7 -* This component and the accompanying materials are made available
   884.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   884.9 -* which accompanies this distribution, and is available
  884.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  884.11 -*
  884.12 -* Initial Contributors:
  884.13 -* Nokia Corporation - initial contribution.
  884.14 -*
  884.15 -* Contributors:
  884.16 -*
  884.17 -* Description:
  884.18 -* Name        : sipdialog.h
  884.19 -* Part of     : SIP Client
  884.20 -* Interface   : SDK API, SIP Client API
  884.21 -* Version     : 1.0
  884.22 -*
  884.23 -*/
  884.24 -
  884.25 -
  884.26 -
  884.27 -
  884.28 -#ifndef CSIPDIALOG_H
  884.29 -#define CSIPDIALOG_H
  884.30 -
  884.31 -// INCLUDES
  884.32 -#include <e32base.h>
  884.33 -#include <stringpool.h>
  884.34 -#include "_sipcodecdefs.h"
  884.35 -
  884.36 -// FORWARD DECLARATIONS
  884.37 -class CSIPConnection;
  884.38 -class CSIPConnectionImplementation;
  884.39 -class MSIPRegistrationContext;
  884.40 -class CSIPDialogAssocBase;
  884.41 -class CSIPFromHeader;
  884.42 -class CSIPToHeader;
  884.43 -class CSIPCallIDHeader;
  884.44 -class CUri8;
  884.45 -class CSIPDialogImplementation;
  884.46 -
  884.47 -// CLASS DECLARATION
  884.48 -
  884.49 -/**
  884.50 -*  @publishedAll
  884.51 -*  @released
  884.52 -*
  884.53 -*  Class for managing SIP dialogs.
  884.54 -*  It provides services querying dialog state, obtaining the dialog related
  884.55 -*  SIP headers and getting all dialog associations.
  884.56 -*
  884.57 -*  The user of the class cannot instantiate this class.
  884.58 -*  @lib sipclient
  884.59 -*/
  884.60 -
  884.61 -class CSIPDialog: public CBase
  884.62 -	{
  884.63 -	public:
  884.64 -		/** Dialog states */
  884.65 -		enum TState
  884.66 -			{
  884.67 -			/** Initiliazed state */
  884.68 -			EInit,
  884.69 -			/** Early state */
  884.70 -			EEarly,
  884.71 -			/** Confirmed state */
  884.72 -			EConfirmed,
  884.73 -			/** Terminated state */
  884.74 -			ETerminated
  884.75 -			};
  884.76 -
  884.77 -	public: //New functions
  884.78 -		/**
  884.79 -		* Gets dialog state		
  884.80 -		* @return dialog state
  884.81 -		*/
  884.82 -        IMPORT_C CSIPDialog::TState State() const;
  884.83 -
  884.84 -		/**
  884.85 -		* Gets all dialog associations. 		
  884.86 -		* @return All dialog associations. Ownership of the array or the items
  884.87 -        *   inside it, is not transferred.
  884.88 -		*/
  884.89 -		IMPORT_C const RPointerArray<CSIPDialogAssocBase>&
  884.90 -					   SIPDialogAssociations() const;
  884.91 -
  884.92 -        /**
  884.93 -        * Gets used registration context for this dialog
  884.94 -        * @return associated registration or 0-pointer otherwise.
  884.95 -        *   Ownership is not transferred.
  884.96 -        */
  884.97 -        IMPORT_C const MSIPRegistrationContext* RegistrationContext() const;
  884.98 -	
  884.99 -        /**
 884.100 -		* Checks if the dialog association belongs to this dialog
 884.101 -		* @param aDialogAssoc a dialog association
 884.102 -		* @return ETrue if belongs, EFalse otherwise
 884.103 -		*/
 884.104 -		IMPORT_C TBool
 884.105 -            IsAssociated(const CSIPDialogAssocBase& aDialogAssoc) const;
 884.106 -
 884.107 -        /**
 884.108 -		* Gets the SIP connection used for this dialog
 884.109 -		* @return SIP connection used for the dialog, or 0-pointer if the
 884.110 -        *   connection has been deleted. Ownership isn't transferred.
 884.111 -		*/
 884.112 -        IMPORT_C CSIPConnection* Connection();
 884.113 -
 884.114 -        /**
 884.115 -		* Gets the SIP connection used for this dialog.
 884.116 -		* @return SIP connection used for the dialog, or 0-pointer if the
 884.117 -        *   connection has been deleted. Ownership isn't transferred.
 884.118 -		*/
 884.119 -        IMPORT_C const CSIPConnection* Connection() const;
 884.120 -
 884.121 -        /**
 884.122 -		* Gets originator's address
 884.123 -		* @return originator's address (From-header)
 884.124 -		*/
 884.125 -		IMPORT_C const CSIPFromHeader& FromHeader() const;
 884.126 -
 884.127 -		/**
 884.128 -		* Gets recipient's address
 884.129 -		* @return recipient's address (To-header)
 884.130 -		*/
 884.131 -		IMPORT_C const CSIPToHeader& ToHeader() const;
 884.132 -
 884.133 -		/**
 884.134 -		* Gets remote-uri used during dialog creation
 884.135 -		* @return Remote target uri
 884.136 -		*/
 884.137 -		IMPORT_C const CUri8& RemoteURI() const;
 884.138 -
 884.139 -		/**
 884.140 -		* Gets Call-ID of SIP dialog
 884.141 -		* @pre State()==CSIPDialog::EEarly || State()==CSIPDialog::EConfirmed
 884.142 -		* @return Call-ID of SIP dialog
 884.143 -		* @leave KErrSIPInvalidDialogState if dialog doesn't yet have a Call-ID
 884.144 -		*/
 884.145 -		IMPORT_C const CSIPCallIDHeader& CallIdL() const;
 884.146 -
 884.147 -        /**
 884.148 -		* Compares this object to another object
 884.149 -		* @param aDialog CSIPDialog object to compare
 884.150 -		* @returns ETrue if the objects are equal, otherwise EFalse
 884.151 -		*/
 884.152 -        IMPORT_C TBool operator==(const CSIPDialog& aDialog) const;
 884.153 -        
 884.154 -        /**
 884.155 -        * Sets the dialog to state to CSIPDialog::EInit.
 884.156 -        * The local dialog identifier data 
 884.157 -        * (Call-ID, CSeq and From-header's tag) will be reused. 
 884.158 -        * After calling this function, the dialog that was already terminated 
 884.159 -        * can be used for sending the dialog initiating request such as 
 884.160 -        * INVITE or SUBSCRIBE reusing the stored Call-ID and From-header's tag
 884.161 -        * and the stored CSeq incremented by one.
 884.162 -        * @pre State()==CSIPDialog::ETerminated
 884.163 -        * @returns KErrNone if succesful and KErrNoMemory if the memory is low.
 884.164 -        */
 884.165 -        IMPORT_C TInt ReuseInitialRequestData();
 884.166 -
 884.167 -	public: //Constructors and destructor, for internal use
 884.168 -		/**
 884.169 -		* Two-phased constructor. 
 884.170 -		* This constructor should be used if the user has received
 884.171 -		* SIP request that creates a SIP dialog association.
 884.172 -        *
 884.173 -        * @param aConnImplementation Implementation of the used SIP connection
 884.174 -        * @return New object, ownership is transferred.
 884.175 -        */
 884.176 -		static CSIPDialog*
 884.177 -			NewL(CSIPConnectionImplementation& aConnImplementation);
 884.178 -
 884.179 -		/**
 884.180 -		* Two-phased constructor
 884.181 -		* This constructor should be used if the user has received
 884.182 -		* SIP request that creates a SIP dialog association.
 884.183 -        *
 884.184 -		* @param aConnImplementation Implementation of the used SIP connection
 884.185 -        * @return New object, ownership is transferred.
 884.186 -       	*/
 884.187 -		static CSIPDialog*
 884.188 -			NewLC(CSIPConnectionImplementation& aConnImplementation);
 884.189 -
 884.190 -		/**
 884.191 -		* Two-phased constructor
 884.192 -		* This constructor should be used if the user has received
 884.193 -		* SIP request that creates a SIP dialog association.
 884.194 -        *
 884.195 -        * @param aConnImplementation Implementation of the used SIP connection
 884.196 -		* @param aContext Registration context whose outbound proxy and other
 884.197 -		*        parameters are to be used.
 884.198 -        * @return New object, ownership is transferred.
 884.199 -       	*/
 884.200 -		static CSIPDialog*
 884.201 -			NewL(CSIPConnectionImplementation& aConnImplementation,
 884.202 -                 const MSIPRegistrationContext& aContext);
 884.203 -
 884.204 -		/**
 884.205 -		* Two-phased constructor
 884.206 -		* This constructor should be used if the user has received
 884.207 -		* SIP request that creates a SIP dialog association.
 884.208 -        *
 884.209 -        * @param aConnImplementation Implementation of the used SIP connection
 884.210 -		* @param aContext Registration context whose outbound proxy and other
 884.211 -		*        parameters are to be used.
 884.212 -        * @return New object, ownership is transferred.
 884.213 -        */
 884.214 -		static CSIPDialog*
 884.215 -			NewLC(CSIPConnectionImplementation& aConnImplementation,
 884.216 -                  const MSIPRegistrationContext& aContext);
 884.217 -
 884.218 -		/**
 884.219 -		* Destructor
 884.220 -		*/
 884.221 -		~CSIPDialog();
 884.222 -
 884.223 -	public: // New functions, for internal use
 884.224 -
 884.225 -		/**
 884.226 -		* Returns the CSIPDialogImplementation.
 884.227 - 		* @return CSIPDialogImplementation
 884.228 - 		*/
 884.229 -		CSIPDialogImplementation& Implementation();
 884.230 -
 884.231 -    private: // Constructors
 884.232 -
 884.233 -        CSIPDialog();        
 884.234 -
 884.235 -        void ConstructL(CSIPConnectionImplementation& aConnImplementation);
 884.236 -        
 884.237 -        void ConstructL(CSIPConnectionImplementation& aConnImplementation,
 884.238 -                   		const MSIPRegistrationContext& aContext);
 884.239 -
 884.240 -private: // Data
 884.241 -
 884.242 -		//Implementation instance, CSIPDialog doesn't own it
 884.243 -		CSIPDialogImplementation* iImplementation;
 884.244 -
 884.245 -private: // For testing purposes
 884.246 -
 884.247 -	    UNIT_TEST(CSIP_Test)
 884.248 -        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 884.249 -        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 884.250 -        UNIT_TEST(CSIPReferDialogAssoc_Test)
 884.251 -
 884.252 -        __DECLARE_TEST;
 884.253 -	};
 884.254 -
 884.255 -#endif
   885.1 --- a/epoc32/include/sipdialogassocbase.h	Tue Mar 16 16:12:26 2010 +0000
   885.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   885.3 @@ -1,164 +0,0 @@
   885.4 -/*
   885.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   885.6 -* All rights reserved.
   885.7 -* This component and the accompanying materials are made available
   885.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   885.9 -* which accompanies this distribution, and is available
  885.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  885.11 -*
  885.12 -* Initial Contributors:
  885.13 -* Nokia Corporation - initial contribution.
  885.14 -*
  885.15 -* Contributors:
  885.16 -*
  885.17 -* Description:
  885.18 -* Name        : sipdialogassocbase.h
  885.19 -* Part of     : SIP Client
  885.20 -* Interface   : SDK API, SIP Client API
  885.21 -* Version     : 1.0
  885.22 -*
  885.23 -*/
  885.24 -
  885.25 -
  885.26 -
  885.27 -#ifndef CSIPDIALOGASSOCBASE_H
  885.28 -#define CSIPDIALOGASSOCBASE_H
  885.29 -
  885.30 -// INCLUDES
  885.31 -#include <stringpool.h>
  885.32 -#include "_sipcodecdefs.h"
  885.33 -
  885.34 -// FORWARD DECLARATIONS
  885.35 -class CSIPMessageElements;
  885.36 -class CSIPClientTransaction;
  885.37 -class CSIPDialog;
  885.38 -class CSIPRefresh;
  885.39 -class CSIPServerTransaction;
  885.40 -class CSIPDialogAssocImplementation;
  885.41 -
  885.42 -// CLASS DECLARATION
  885.43 -
  885.44 -/**
  885.45 -*  @publishedAll
  885.46 -*  @released
  885.47 -*
  885.48 -*  Base class for SIP dialog associations. It provides services for getting
  885.49 -*  associated SIP dialog, actual dialog association type and for sending non
  885.50 -*  target refresh requests within the dialog association.
  885.51 -*  @lib sipclient
  885.52 -*/
  885.53 -class CSIPDialogAssocBase : public CBase
  885.54 -	{
  885.55 -	public: // Destructor
  885.56 -
  885.57 -		/**
  885.58 -		* Destructor
  885.59 -        * @internalComponent		
  885.60 -		*/
  885.61 -		virtual ~CSIPDialogAssocBase();    
  885.62 -
  885.63 -	public: // New functions
  885.64 -
  885.65 -		/**
  885.66 -		* Gets the dialog this dialog association belongs to
  885.67 -		* @return associated dialog
  885.68 -		*/
  885.69 -		IMPORT_C const CSIPDialog& Dialog() const;
  885.70 -
  885.71 -		/**
  885.72 -		* Gets dialog this dialog association belongs to
  885.73 -		* @return associated dialog
  885.74 -		*/
  885.75 -		IMPORT_C CSIPDialog& Dialog();
  885.76 -
  885.77 -		/**
  885.78 -		* Creates SIP request and sends it to the remote target.
  885.79 -		* This function should be used for sending SIP extension
  885.80 -		* requests within dialog assocation that do not cause 
  885.81 -		* sip dialog associations to be created. In SIP terms
  885.82 -		* this request is non target refresh request.
  885.83 -		* @pre SIPDialog().State() != CSIPDialog::EInit &&
  885.84 -		*      SIPDialog().State() != CSIPDialog::ETerminated
  885.85 -        * @pre Dialog().Connection().State() == EActive
  885.86 -		* @pre aMethod != "REGISTER" |"INVITE" | "BYE" | "CANCEL" | "ACK" |
  885.87 -        *   "SUBSCRIBE" | "NOTIFY" | "UPDATE" | "PRACK" | "REFER"
  885.88 -		* @param aElements contains optional SIP message headers and body.
  885.89 -        *   Ownership is transferred.
  885.90 -		* @return SIP extension client transaction. Ownership is transferred.
  885.91 -		* @leave KErrSIPInvalidDialogState If dialog's state is not correct
  885.92 -		* @leave KErrArgument if invalid value has been set to aMethod		
  885.93 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  885.94 -		*	object has been deleted
  885.95 -		* @capability NetworkServices
  885.96 -		*/
  885.97 -		IMPORT_C virtual CSIPClientTransaction*
  885.98 -            SendNonTargetRefreshRequestL(RStringF aMethod,
  885.99 -                                         CSIPMessageElements* aElements);
 885.100 -
 885.101 -        /**
 885.102 -        * Gets dialog association type.
 885.103 -        *
 885.104 -        * @return dialog association type e.g. "INVITE", "SUBSCRIBE" etc...
 885.105 -        */
 885.106 -        IMPORT_C RStringF Type() const;
 885.107 -
 885.108 -		/**
 885.109 -        * Tests if the request is a non target refresh request
 885.110 -        * @param aMethod a method to test
 885.111 -        * @return ETrue if is non target refresh request; EFalse otherwise
 885.112 -        */        
 885.113 -        IMPORT_C TBool IsNonTargetRefreshRequest(RStringF aMethod) const;
 885.114 -
 885.115 -	public: // New functions, for internal use
 885.116 -
 885.117 -		/**
 885.118 -		* Returns the implementation instance.
 885.119 - 		* @return CSIPDialogAssocImplementation
 885.120 -		*/
 885.121 -		CSIPDialogAssocImplementation& Implementation();
 885.122 -
 885.123 -		/**
 885.124 -        * Searches for a refresh with the matching id. Default implementation
 885.125 -        * returns NULL. Those classes derived from CSIPDialogAssocBase, which
 885.126 -        * can contain refreshes must implement this function for searching the
 885.127 -        * correct refresh.
 885.128 -        *
 885.129 -        * @return CSIPRefresh if found, NULL otherwise. 
 885.130 -        *         The ownership is not transferred.
 885.131 -        * @internalComponent
 885.132 -        */
 885.133 -        virtual CSIPRefresh* FindRefresh(TUint32 aRefreshId);
 885.134 -
 885.135 -        /**
 885.136 -        * @internalComponent
 885.137 -        */
 885.138 -		virtual void DeletingRefresh(CSIPRefresh& aRefresh, TUint32 aRefreshId);
 885.139 -		
 885.140 -	protected: // Constructors, for internal use
 885.141 -
 885.142 -        /*
 885.143 -		* Constructor
 885.144 -		*/
 885.145 -        CSIPDialogAssocBase();
 885.146 -
 885.147 -        void ConstructL(RStringF aType, CSIPDialog& aDialog);
 885.148 -        void ConstructL(RStringF aType,
 885.149 -        				CSIPDialog& aDialog,
 885.150 -        				CSIPServerTransaction& aTransaction);
 885.151 -
 885.152 -    protected: // Data
 885.153 -
 885.154 -        /**
 885.155 -        * Implementation instance, CSIPDialogAssocBase owns it
 885.156 -        * @internalComponent
 885.157 -        */
 885.158 -		CSIPDialogAssocImplementation* iImplementation;
 885.159 -
 885.160 -	private: // For testing purposes
 885.161 -
 885.162 -        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 885.163 -        
 885.164 -        __DECLARE_TEST;
 885.165 -	};
 885.166 -
 885.167 -#endif
   886.1 --- a/epoc32/include/siperr.h	Tue Mar 16 16:12:26 2010 +0000
   886.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   886.3 @@ -1,96 +0,0 @@
   886.4 -/*
   886.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   886.6 -* All rights reserved.
   886.7 -* This component and the accompanying materials are made available
   886.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   886.9 -* which accompanies this distribution, and is available
  886.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  886.11 -*
  886.12 -* Initial Contributors:
  886.13 -* Nokia Corporation - initial contribution.
  886.14 -*
  886.15 -* Contributors:
  886.16 -*
  886.17 -* Description:
  886.18 -* Name          : siperr.h
  886.19 -* Part of       : SIP Client API
  886.20 -* Interface     : SDK, SIP Client API
  886.21 -* Version       : 1.0
  886.22 -*
  886.23 -*/
  886.24 -
  886.25 -
  886.26 -
  886.27 -#ifndef SIPERR_H
  886.28 -#define SIPERR_H
  886.29 -
  886.30 -#include <e32base.h>
  886.31 -
  886.32 -/** @file 
  886.33 -* @publishedAll
  886.34 -* @released
  886.35 -*/
  886.36 -
  886.37 -/** SIP message was malformed */
  886.38 -const TInt KErrSIPMalformedMessage = -17700;
  886.39 -
  886.40 -/** Invalid SIP response received from registrar*/
  886.41 -const TInt KErrSIPInvalidRegistrarResponse = -17701;
  886.42 -
  886.43 -/** SIP Request pending */
  886.44 -const TInt KErrSIPRequestPending = -17702;
  886.45 -
  886.46 -/** The action cannot be performed in the current transaction state */
  886.47 -const TInt KErrSIPInvalidTransactionState = -17703;
  886.48 -
  886.49 -/** Not allowed in dialogs current state */
  886.50 -const TInt KErrSIPInvalidDialogState = -17704;
  886.51 -
  886.52 -/** Invalid request in SIP dialog */
  886.53 -const TInt KErrSIPInvalidDialogRequest = -17705;
  886.54 -
  886.55 -/** Invalid response in SIP dialog */
  886.56 -const TInt KErrSIPInvalidDialogResponse = -17706;
  886.57 -
  886.58 -/** Sending a SIP message failed. For example ICMP error occured */
  886.59 -const TInt KErrSIPTransportFailure = -17707;
  886.60 -
  886.61 -/** No ACK was received after sending a 2xx response */
  886.62 -const TInt KErrSIPNoAckReceived = -17708;
  886.63 -
  886.64 -/** Not allowed in registration's current state */
  886.65 -const TInt KErrSIPInvalidRegistrationState = -17709;
  886.66 -
  886.67 -/** The contact given did not contain user part */
  886.68 -const TInt KErrSIPInvalidContact = -17710;
  886.69 -
  886.70 -/** Object can't access a resource, since that has been deleted by user.
  886.71 -The user is expected to delete this object as it can no longer be used. */
  886.72 -const TInt KErrSIPResourceNotAvailable = -17711;
  886.73 -
  886.74 -/** DNS query for the remote address failed */
  886.75 -const TInt KErrSIPResolvingFailure = -17712;
  886.76 -
  886.77 -/** Authentication with a server failed */
  886.78 -const TInt KErrSIPForbidden = -17713;
  886.79 -
  886.80 -/** Maximum number of allowed SigComp compartments exceeded */
  886.81 -const TInt KErrSIPMaxCompartmentsInUse = -17714;
  886.82 -
  886.83 -/** Refresh initiated client transaction was terminated with
  886.84 -a 3xx, 4xx, 5xx or 6xx response.*/
  886.85 -const TInt KErrSIPTerminatedWithResponse = -17715;
  886.86 -
  886.87 -/** Provided SIP outbound proxy is not responding*/
  886.88 -const TInt KErrSIPOutboundProxyNotResponding = -17716;
  886.89 -
  886.90 -/** The URI type is not allowed in some field of the particular SIP message. 
  886.91 -Note that this does not mean that the URI type is forbidden in general. 
  886.92 -For example Contact-header of an INVITE must always contain a SIP-URI. 
  886.93 -Any other types are rejected with this error code. */
  886.94 -const TInt KErrSIPInvalidURIType = -17717;
  886.95 -
  886.96 -/** ICMP error has occured */
  886.97 -const TInt KErrSIPICMPFailure = -17718;
  886.98 -
  886.99 -#endif //SIPERR_H
   887.1 --- a/epoc32/include/sipeventheader.h	Tue Mar 16 16:12:26 2010 +0000
   887.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   887.3 @@ -1,195 +0,0 @@
   887.4 -/*
   887.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   887.6 -* All rights reserved.
   887.7 -* This component and the accompanying materials are made available
   887.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   887.9 -* which accompanies this distribution, and is available
  887.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  887.11 -*
  887.12 -* Initial Contributors:
  887.13 -* Nokia Corporation - initial contribution.
  887.14 -*
  887.15 -* Contributors:
  887.16 -*
  887.17 -* Description:
  887.18 -* Name        : sipeventheader.h
  887.19 -* Part of     : SIP Codec
  887.20 -* Interface   : SDK API, SIP Codec API
  887.21 -* Version     : SIP/4.0 
  887.22 -*
  887.23 -*/
  887.24 -
  887.25 -
  887.26 -
  887.27 -
  887.28 -#ifndef CSIPEVENTHEADER_H
  887.29 -#define CSIPEVENTHEADER_H
  887.30 -
  887.31 -//  INCLUDES
  887.32 -#include <bamdesca.h>
  887.33 -#include <badesca.h>
  887.34 -#include "sipparameterheaderbase.h"
  887.35 -#include "_sipcodecdefs.h"
  887.36 -
  887.37 -// FORWARD DECLARATIONS
  887.38 -class CSIPEventHeaderParams;
  887.39 -
  887.40 -// CLASS DECLARATION
  887.41 -/**
  887.42 -* @publishedAll
  887.43 -* @released
  887.44 -*
  887.45 -* Class provides functions for setting and getting parameters in 
  887.46 -* SIP "Event" header.
  887.47 -*
  887.48 -*  @lib sipcodec.lib
  887.49 -*/
  887.50 -class CSIPEventHeader : public CSIPParameterHeaderBase
  887.51 -	{
  887.52 -	public:	// Constructors and destructor
  887.53 -	
  887.54 -		/**
  887.55 -		* Constructs a CSIPEventHeader from textual representation 
  887.56 -		* of the header's value part.
  887.57 -		* @param aValue a value part of a "Event"-header
  887.58 -		* @return a new instance of CSIPEventHeader
  887.59 -		*/
  887.60 -		IMPORT_C static CSIPEventHeader* DecodeL(const TDesC8& aValue);
  887.61 -
  887.62 -		/**
  887.63 -		* Creates a new instance of CSIPEventHeader
  887.64 -		* @param aEventPackage a Event-Package value
  887.65 -		* @return a new instance of CSIPEventHeader
  887.66 -		*/
  887.67 -		IMPORT_C static CSIPEventHeader* NewL(const TDesC8& aEventPackage);
  887.68 -
  887.69 -		/**
  887.70 -		* Creates a new instance of CSIPEventHeader and puts it to CleanupStack
  887.71 -		* @param aEventPackage a Event-Package value
  887.72 -		* @return a new instance of CSIPEventHeader
  887.73 -		*/
  887.74 -
  887.75 -		IMPORT_C static CSIPEventHeader* NewLC(const TDesC8& aEventPackage);
  887.76 -
  887.77 -		/**
  887.78 -		* Destructor, deletes the resources of CSIPEventHeader.
  887.79 -		*/
  887.80 -		IMPORT_C ~CSIPEventHeader();
  887.81 -
  887.82 -
  887.83 -	public:	// New functions
  887.84 -
  887.85 -		/**
  887.86 -		* Compares this instance to another CSIPEventHeader instance
  887.87 -		* @param aHeader a header to compare to
  887.88 -		* @return ETrue if the objects are equal otherwise EFalse
  887.89 -		*/
  887.90 -		IMPORT_C TBool operator==(const CSIPEventHeader& aHeader) const;
  887.91 -
  887.92 -		/**
  887.93 -		* Gets the Event-Package parameter from the "Event" header
  887.94 -		* @return the Event-Package parameter
  887.95 -		*/
  887.96 -		IMPORT_C const TDesC8& EventPackage() const;
  887.97 -
  887.98 -		/**
  887.99 -		* Sets the Event-Package parameter in the "Event" header; 
 887.100 -		* @param aEventPackage a Event-Package parameter to set
 887.101 -		*/
 887.102 -		IMPORT_C void SetEventPackageL(const TDesC8& aEventPackage);
 887.103 -
 887.104 -		/**
 887.105 -		* Sets the event templates overwriting all the existing ones.
 887.106 -		* @param aEventTemplates an array of event templates
 887.107 -		*/
 887.108 -		IMPORT_C void SetEventTemplatesL(const MDesC8Array& aEventTemplates);
 887.109 -
 887.110 -		/**
 887.111 -		* Gets the event templates.
 887.112 -		* @return a reference to the currently set event templates.
 887.113 -		*/
 887.114 -		IMPORT_C const MDesC8Array& EventTemplates() const;
 887.115 -	
 887.116 -		/**
 887.117 -		* Constructs an instance of a CSIPEventHeader from a RReadStream
 887.118 -		* @param aReadStream a stream containing the value of the
 887.119 -		*        externalized object (header name not included).
 887.120 -		* @return an instance of a CSIPEventHeader 
 887.121 -		*/
 887.122 -		IMPORT_C static CSIPHeaderBase* 
 887.123 -			InternalizeValueL(RReadStream& aReadStream);
 887.124 -
 887.125 -
 887.126 -	public: // From CSIPHeaderBase
 887.127 -
 887.128 -		/**
 887.129 -		* From CSIPHeaderBase CloneL
 887.130 -		*/
 887.131 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 887.132 -
 887.133 -		/**
 887.134 -		* From CSIPHeaderBase Name
 887.135 -		*/
 887.136 -		IMPORT_C RStringF Name() const;
 887.137 -
 887.138 -
 887.139 -	public: // From CSIPHeaderBase, for internal use
 887.140 -
 887.141 -        /**
 887.142 -        * @internalComponent
 887.143 -        */
 887.144 -		TBool HasCompactName() const;
 887.145 -		
 887.146 -        /**
 887.147 -        * @internalComponent
 887.148 -        */		
 887.149 -		RStringF CompactName() const;
 887.150 -		
 887.151 -        /**
 887.152 -        * @internalComponent
 887.153 -        */		
 887.154 -		TPreferredPlace PreferredPlaceInMessage() const;
 887.155 -
 887.156 -	public: // New functions, for internal use
 887.157 -
 887.158 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 887.159 -
 887.160 -	private: // From CSIPHeaderBase
 887.161 -
 887.162 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 887.163 -
 887.164 -	private: // From CSIPParameterHeaderBase
 887.165 -
 887.166 -		HBufC8* ToTextMandatoryPartLC() const;
 887.167 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 887.168 -		const CSIPParamContainerBase& Params() const;
 887.169 -		CSIPParamContainerBase& Params();
 887.170 -
 887.171 -	private: // Constructors
 887.172 -
 887.173 -		CSIPEventHeader();
 887.174 -		void ConstructL();
 887.175 -		void ConstructL(const TDesC8& aEventPackage);
 887.176 -		void ConstructL(const CSIPEventHeader& aSIPEventHeader);
 887.177 -
 887.178 -	private: // New functions
 887.179 -
 887.180 -		void DoInternalizeValueL(RReadStream& aReadStream);
 887.181 -		void CheckTemplateL(const TDesC8& aParam) const;
 887.182 -		// Needed for cleanup of a RPointerArray<HBufC8>:
 887.183 -		static void ResetAndDestroy(TAny* anArray);
 887.184 -
 887.185 -	private: // Data
 887.186 -
 887.187 -		HBufC8* iEventPackage;
 887.188 -		CSIPEventHeaderParams* iParams;
 887.189 -		CDesC8ArraySeg* iEventTemplates;
 887.190 -
 887.191 -	private: // For testing purposes
 887.192 -	
 887.193 -		UNIT_TEST(CSIPEventHeaderTest)
 887.194 -	};
 887.195 -
 887.196 -#endif // CSIPEVENTHEADER_H
 887.197 -
 887.198 -// End of File
   888.1 --- a/epoc32/include/sipexpiresheader.h	Tue Mar 16 16:12:26 2010 +0000
   888.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   888.3 @@ -1,108 +0,0 @@
   888.4 -/*
   888.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   888.6 -* All rights reserved.
   888.7 -* This component and the accompanying materials are made available
   888.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   888.9 -* which accompanies this distribution, and is available
  888.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  888.11 -*
  888.12 -* Initial Contributors:
  888.13 -* Nokia Corporation - initial contribution.
  888.14 -*
  888.15 -* Contributors:
  888.16 -*
  888.17 -* Description:
  888.18 -* Name        : sipexpiresheader.h
  888.19 -* Part of     : SIP Codec
  888.20 -* Interface   : SDK API, SIP Codec API
  888.21 -* Version     : SIP/4.0 
  888.22 -*
  888.23 -*/
  888.24 -
  888.25 -
  888.26 -
  888.27 -
  888.28 -#ifndef CSIPEXPIRESHEADER_H
  888.29 -#define CSIPEXPIRESHEADER_H
  888.30 -
  888.31 -//  INCLUDES
  888.32 -#include "sipunsignedintheaderbase.h"
  888.33 -#include "_sipcodecdefs.h"
  888.34 -
  888.35 -// CLASS DECLARATION
  888.36 -/**
  888.37 -* @publishedAll
  888.38 -* @released
  888.39 -*
  888.40 -* Class encapsulates a "Expires" header value.
  888.41 -*
  888.42 -*  @lib sipcodec.lib
  888.43 -*/
  888.44 -class CSIPExpiresHeader : public CSIPUnsignedIntHeaderBase
  888.45 -	{
  888.46 -	public:	// Constructors and destructor
  888.47 -
  888.48 -		/**
  888.49 -		* Constructs a CSIPExpiresHeader from textual representation 
  888.50 -		* of the header's value part.
  888.51 -		* @param aValue a value part of a "Expires"-header (e.g. "3600")
  888.52 -		* @return a new instance of CSIPExpiresHeader
  888.53 -		*/
  888.54 -		IMPORT_C static CSIPExpiresHeader* DecodeL(const TDesC8& aValue);
  888.55 -	
  888.56 -		/**
  888.57 -		* Constructor
  888.58 -		* @param aValue the value to set
  888.59 -		*/
  888.60 -		IMPORT_C CSIPExpiresHeader(TUint aValue);
  888.61 -	
  888.62 -		/**
  888.63 -		* Destructor, deletes the resources of CSIPExpiresHeader.
  888.64 -		*/
  888.65 -		IMPORT_C ~CSIPExpiresHeader();
  888.66 -
  888.67 -
  888.68 -	public: // New functions
  888.69 -
  888.70 -		/**
  888.71 -		* Constructs an instance of a CSIPExpiresHeader from a RReadStream
  888.72 -		* @param aReadStream a stream containing the value of the
  888.73 -		*        externalized header object (header name not included).
  888.74 -		* @return an instance of a CSIPExpiresHeader
  888.75 -		*/
  888.76 -		IMPORT_C static CSIPHeaderBase* 
  888.77 -			InternalizeValueL(RReadStream& aReadStream);
  888.78 -
  888.79 -
  888.80 -	public: // From CSIPHeaderBase
  888.81 -
  888.82 -		/**
  888.83 -		* From CSIPHeaderBase CloneL
  888.84 -		*/
  888.85 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  888.86 -
  888.87 -		/**
  888.88 -		* From CSIPHeaderBase Name
  888.89 -		*/
  888.90 -		IMPORT_C RStringF Name() const;
  888.91 -
  888.92 -
  888.93 -	public: // From CSIPHeaderBase, for internal use
  888.94 -
  888.95 -        /**
  888.96 -        * @internalComponent
  888.97 -        */
  888.98 -		TPreferredPlace PreferredPlaceInMessage() const;
  888.99 -
 888.100 -	public: // New functions, for internal use
 888.101 -
 888.102 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 888.103 -
 888.104 -	private: // For testing purposes
 888.105 -	
 888.106 -		UNIT_TEST(CSIPExpiresHeaderTest)
 888.107 -	};
 888.108 -
 888.109 -#endif // CSIPEXPIRESHEADER_H
 888.110 -
 888.111 -// End of File
   889.1 --- a/epoc32/include/sipextensionheader.h	Tue Mar 16 16:12:26 2010 +0000
   889.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   889.3 @@ -1,186 +0,0 @@
   889.4 -/*
   889.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   889.6 -* All rights reserved.
   889.7 -* This component and the accompanying materials are made available
   889.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   889.9 -* which accompanies this distribution, and is available
  889.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  889.11 -*
  889.12 -* Initial Contributors:
  889.13 -* Nokia Corporation - initial contribution.
  889.14 -*
  889.15 -* Contributors:
  889.16 -*
  889.17 -* Description:
  889.18 -* Name        : sipextensionheader.h
  889.19 -* Part of     : SIP Codec
  889.20 -* Interface   : SDK API, SIP Codec API
  889.21 -* Version     : SIP/4.0 
  889.22 -*
  889.23 -*/
  889.24 -
  889.25 -
  889.26 -
  889.27 -
  889.28 -#ifndef CSIPEXTENSIONHEADER_H
  889.29 -#define CSIPEXTENSIONHEADER_H
  889.30 -
  889.31 -//  INCLUDES
  889.32 -#include "sipheaderbase.h"
  889.33 -#include "_sipcodecdefs.h"
  889.34 -
  889.35 -
  889.36 -// CLASS DECLARATION
  889.37 -/**
  889.38 -* @publishedAll
  889.39 -* @released
  889.40 -*
  889.41 -* The class stores unknown and extension headers that are either not 
  889.42 -* supported by the current SIP codec implementation or not specified in
  889.43 -* current SIP RFC or both.
  889.44 -*
  889.45 -*  @lib sipcodec.lib
  889.46 -*/
  889.47 -class CSIPExtensionHeader : public CSIPHeaderBase
  889.48 -	{
  889.49 -	public:	// Constructors and destructor
  889.50 -
  889.51 -		/**
  889.52 -		* Creates a new instance of CSIPExtensionHeader
  889.53 -		* @param aName the full or compact name of the header
  889.54 -		* @param aValue the value of the header
  889.55 -		* @return a new instance of CSIPExtensionHeader
  889.56 -		*/
  889.57 -		IMPORT_C static CSIPExtensionHeader* 
  889.58 -			NewL(const TDesC8& aName, const TDesC8& aValue);
  889.59 -
  889.60 -		/**
  889.61 -		* Creates a new instance of CSIPExtensionHeader 
  889.62 -		* and puts it to CleanupStack
  889.63 -		* @param aName the full or compact name of the header
  889.64 -		* @param aValue the value of the header
  889.65 -		* @return a new instance of CSIPExtensionHeader
  889.66 -		*/
  889.67 -		IMPORT_C static CSIPExtensionHeader* 
  889.68 -			NewLC(const TDesC8& aName, const TDesC8& aValue);
  889.69 -
  889.70 -		/**
  889.71 -		* Destructor, deletes the resources of CSIPExtensionHeader.
  889.72 -		*/
  889.73 -		IMPORT_C ~CSIPExtensionHeader();
  889.74 -
  889.75 -
  889.76 -	public: // New functions
  889.77 -
  889.78 -		/**
  889.79 -		* Sets the header value
  889.80 -		* @param aValue the header value to be set
  889.81 -		*/
  889.82 -		IMPORT_C void SetValueL(const TDesC8& aValue);
  889.83 -
  889.84 -		/**
  889.85 -		* Gets the header value
  889.86 -		* @return the header value
  889.87 -		*/
  889.88 -		IMPORT_C const TDesC8& Value() const;
  889.89 -
  889.90 -		/**
  889.91 -		* Constructs an instance of a CSIPExtensionHeader from a RReadStream
  889.92 -		* @param aReadStream a stream containing the value of the
  889.93 -		*        externalized header object (header name not included).
  889.94 -		* @return an instance of a CSIPExtensionHeader
  889.95 -		*/
  889.96 -
  889.97 -		IMPORT_C static CSIPExtensionHeader* 
  889.98 -			InternalizeValueL(RReadStream& aReadStream);
  889.99 -
 889.100 -
 889.101 -	public: // From CSIPHeaderBase
 889.102 -
 889.103 -		/**
 889.104 -		* From CSIPHeaderBase CloneL
 889.105 -		*/
 889.106 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 889.107 -
 889.108 -		/**
 889.109 -		* From CSIPHeaderBase Name
 889.110 -		*/
 889.111 -		IMPORT_C RStringF Name() const;
 889.112 -
 889.113 -		/**
 889.114 -		* From CSIPHeaderBase ToTextValueL
 889.115 -		*/
 889.116 -		IMPORT_C HBufC8* ToTextValueL() const;
 889.117 -
 889.118 -		/**
 889.119 -		* From CSIPHeaderBase ExternalizeSupported
 889.120 -		*/
 889.121 -		IMPORT_C TBool ExternalizeSupported() const;
 889.122 -
 889.123 -
 889.124 -	public: // New functions, for internal use
 889.125 -
 889.126 -		void SetNameL(const TDesC8& aName);
 889.127 -
 889.128 -	public: // From CSIPHeaderBase, for internal use
 889.129 -
 889.130 -        /**
 889.131 -        * @internalComponent
 889.132 -        */	
 889.133 -		TBool IsExtensionHeader() const;
 889.134 -		
 889.135 -        /**
 889.136 -        * @internalComponent
 889.137 -        */		
 889.138 -		TBool EncodeMultipleToOneLine() const;
 889.139 -		
 889.140 -        /**
 889.141 -        * @internalComponent
 889.142 -        */		
 889.143 -		TBool MoreThanOneAllowed() const;
 889.144 -		
 889.145 -        /**
 889.146 -        * @internalComponent
 889.147 -        */		
 889.148 -		TBool HasCompactName() const;
 889.149 -		
 889.150 -        /**
 889.151 -        * @internalComponent
 889.152 -        */		
 889.153 -		RStringF CompactName() const;
 889.154 -		
 889.155 -        /**
 889.156 -        * @internalComponent
 889.157 -        */		
 889.158 -		TPreferredPlace PreferredPlaceInMessage() const;
 889.159 -
 889.160 -	private: // From CSIPHeaderBase
 889.161 -
 889.162 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 889.163 -
 889.164 -	private: // Constructors
 889.165 -
 889.166 -		CSIPExtensionHeader();
 889.167 -		void ConstructL(const TDesC8& aName, const TDesC8& aValue);
 889.168 -		void ConstructL(const CSIPExtensionHeader& aExtensionHeader);
 889.169 -		void DoInternalizeValueL(RReadStream& aReadStream);
 889.170 -
 889.171 -	private: // New functions
 889.172 -
 889.173 -		TBool CheckValue (const TDesC8& aValue);
 889.174 -	
 889.175 -	private: // Data
 889.176 -
 889.177 -		// data
 889.178 -		RStringF iName;
 889.179 -		HBufC8* iValue;
 889.180 -
 889.181 -	private: // For testing purposes
 889.182 -	
 889.183 -		UNIT_TEST(CSIPExtensionHeaderTest)
 889.184 -		UNIT_TEST(CSIPHeaderLookupTest)
 889.185 -	};
 889.186 -
 889.187 -#endif // CSIPEXTENSIONHEADER_H
 889.188 -
 889.189 -// End of File
   890.1 --- a/epoc32/include/sipfromheader.h	Tue Mar 16 16:12:26 2010 +0000
   890.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   890.3 @@ -1,139 +0,0 @@
   890.4 -/*
   890.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   890.6 -* All rights reserved.
   890.7 -* This component and the accompanying materials are made available
   890.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   890.9 -* which accompanies this distribution, and is available
  890.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  890.11 -*
  890.12 -* Initial Contributors:
  890.13 -* Nokia Corporation - initial contribution.
  890.14 -*
  890.15 -* Contributors:
  890.16 -*
  890.17 -* Description:
  890.18 -* Name        : sipfromheader.h
  890.19 -* Part of     : SIP Codec
  890.20 -* Interface   : SDK API, SIP Codec API
  890.21 -* Version     : SIP/4.0 
  890.22 -*
  890.23 -*/
  890.24 -
  890.25 -
  890.26 -
  890.27 -
  890.28 -#ifndef CSIPFROMHEADER_H
  890.29 -#define CSIPFROMHEADER_H
  890.30 -
  890.31 -//  INCLUDES
  890.32 -#include "sipfromtoheaderbase.h"
  890.33 -#include "_sipcodecdefs.h"
  890.34 -
  890.35 -// CLASS DECLARATION
  890.36 -/**
  890.37 -* @publishedAll
  890.38 -* @released
  890.39 -*
  890.40 -* Class provides functions for setting and getting SIP "From" header.
  890.41 -*
  890.42 -*  @lib sipcodec.lib
  890.43 -*/
  890.44 -class CSIPFromHeader : public CSIPFromToHeaderBase
  890.45 -	{
  890.46 -	public:	// Constructors and destructor
  890.47 -
  890.48 -		/**
  890.49 -		* Constructs a CSIPFromHeader from textual representation 
  890.50 -		* of the header's value part.
  890.51 -		* @param aValue a value part of a "From"-header (e.g. "<user@host>...")
  890.52 -		* @return a new instance of CSIPFromHeader    
  890.53 -		*/
  890.54 -		IMPORT_C static CSIPFromHeader* DecodeL(const TDesC8& aValue);
  890.55 -
  890.56 -		/**
  890.57 -		* Creates a new instance of CSIPFromHeader
  890.58 -		* @pre aSIPAddress != 0
  890.59 -		* @param aSIPAddress a name-address, the ownership is transferred.
  890.60 -		* @return a new instance of CSIPFromHeader
  890.61 -		*/
  890.62 -		IMPORT_C static CSIPFromHeader* NewL(CSIPAddress* aSIPAddress);
  890.63 -
  890.64 -		/**
  890.65 -		* Creates a new instance of CSIPFromHeader and puts it to CleanupStack
  890.66 -		* @pre aSIPAddress != 0
  890.67 -		* @param aSIPAddress a name-address, the ownership is transferred,
  890.68 -		* @return a new instance of CSIPFromHeader
  890.69 -		*/
  890.70 -		IMPORT_C static CSIPFromHeader* NewLC(CSIPAddress* aSIPAddress);
  890.71 -
  890.72 -		/**
  890.73 -		* Creates a deep-copy of a CSIPFromToHeaderBase
  890.74 -		* Note that this function can be used for creating a From-header
  890.75 -		* using an existing To-header.
  890.76 -		* @param aHeader CSIPFromToHeaderBase to be copied
  890.77 -		* @return a new instance of CSIPFromHeader
  890.78 -		*/
  890.79 -		IMPORT_C static CSIPFromHeader* 
  890.80 -			NewL(const CSIPFromToHeaderBase& aHeader);
  890.81 -
  890.82 -		/**
  890.83 -		* Creates a deep-copy of a CSIPFromToHeaderBase and 
  890.84 -		* puts it to CleanupStack
  890.85 -		* Note that this function can be used for creating a From-header
  890.86 -		* using an existing To-header.
  890.87 -		* @param aHeader CSIPFromToHeaderBase to be copied
  890.88 -		* @return a new instance of CSIPFromHeader
  890.89 -		*/
  890.90 -		IMPORT_C static CSIPFromHeader* 
  890.91 -			NewLC(const CSIPFromToHeaderBase& aHeader);
  890.92 -
  890.93 -		/**
  890.94 -		* Destructor, deletes the resources of CSIPFromHeader.
  890.95 -		*/
  890.96 -		IMPORT_C ~CSIPFromHeader();
  890.97 -
  890.98 -
  890.99 -	public: // New functions
 890.100 -
 890.101 -		/**
 890.102 -		* Constructs an instance of a CSIPFromHeader from a RReadStream
 890.103 -		* @param aReadStream a stream containing the value of the
 890.104 -		*        externalized object (header name not included). 
 890.105 -		* @return an instance of a CSIPFromHeader
 890.106 -		*/
 890.107 -		IMPORT_C static CSIPHeaderBase* 
 890.108 -			InternalizeValueL(RReadStream& aReadStream);
 890.109 -
 890.110 -
 890.111 -	public: // From CSIPHeaderBase
 890.112 -
 890.113 -		/**
 890.114 -		* From CSIPHeaderBase CloneL
 890.115 -		*/
 890.116 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 890.117 -
 890.118 -		/**
 890.119 -		* From CSIPHeaderBase Name
 890.120 -		*/
 890.121 -		IMPORT_C RStringF Name() const;
 890.122 -
 890.123 -
 890.124 -	public: // From CSIPHeaderBase, for internal use
 890.125 -
 890.126 -        /**
 890.127 -        * @internalComponent
 890.128 -        */
 890.129 -		RStringF CompactName() const;
 890.130 -
 890.131 -	public: // New functions, for internal use
 890.132 -
 890.133 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 890.134 -
 890.135 -	private: // Constructors
 890.136 -
 890.137 -		CSIPFromHeader();
 890.138 -	};
 890.139 -
 890.140 -#endif // CSIPFROMHEADER_H
 890.141 -
 890.142 -// End of File
   891.1 --- a/epoc32/include/sipfromtoheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   891.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   891.3 @@ -1,135 +0,0 @@
   891.4 -/*
   891.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   891.6 -* All rights reserved.
   891.7 -* This component and the accompanying materials are made available
   891.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   891.9 -* which accompanies this distribution, and is available
  891.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  891.11 -*
  891.12 -* Initial Contributors:
  891.13 -* Nokia Corporation - initial contribution.
  891.14 -*
  891.15 -* Contributors:
  891.16 -*
  891.17 -* Description:
  891.18 -* Name        : sipfromtoheaderbase.h
  891.19 -* Part of     : SIP Codec
  891.20 -* Interface   : SDK API, SIP Codec API
  891.21 -* Version     : SIP/4.0 
  891.22 -*
  891.23 -*/
  891.24 -
  891.25 -
  891.26 -
  891.27 -
  891.28 -#ifndef CSIPFROMTOHEADERBASE_H
  891.29 -#define CSIPFROMTOHEADERBASE_H
  891.30 -
  891.31 -//  INCLUDES
  891.32 -#include "sipparameterheaderbase.h"
  891.33 -#include "_sipcodecdefs.h"
  891.34 -
  891.35 -// FORWARD DECLARATIONS
  891.36 -class CSIPAddress;
  891.37 -class CSIPFromToHeaderParams;
  891.38 -
  891.39 -// CLASS DECLARATION
  891.40 -/**
  891.41 -* @publishedAll
  891.42 -* @released
  891.43 -*
  891.44 -* Class provides functions for setting and getting parameters in SIP "From"
  891.45 -* and "To" header.
  891.46 -*
  891.47 -* This is an abstract class and cannot be instantiated.
  891.48 -*
  891.49 -* @lib sipcodec.lib
  891.50 -*/
  891.51 -class CSIPFromToHeaderBase : public CSIPParameterHeaderBase
  891.52 -	{
  891.53 -	public: // Constructors and destructor
  891.54 -
  891.55 -		/**
  891.56 -		* Destructor, deletes the resources of CSIPFromToHeaderBase.
  891.57 -		*/
  891.58 -		IMPORT_C virtual ~CSIPFromToHeaderBase();
  891.59 -
  891.60 -
  891.61 -	public: // New functions
  891.62 -
  891.63 -		/**
  891.64 -		* Compares this instance to another "From" or "To" header object
  891.65 -		* @param aHeader a header to compare to
  891.66 -		* @return ETrue, if the objects are equal otherwise EFalse
  891.67 -		*/
  891.68 -		IMPORT_C TBool operator==(const CSIPFromToHeaderBase& aHeader) const;
  891.69 -
  891.70 -		/**
  891.71 -		* Sets the name-address
  891.72 -		* @pre aSIPAddress != 0
  891.73 -		* @param aSIPAddress a name-address to set, the ownership is transferred
  891.74 -		*/
  891.75 -		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
  891.76 -
  891.77 -		/**
  891.78 -		* Gets the name-address as const
  891.79 -		* @return name-address object
  891.80 -		*/
  891.81 -		IMPORT_C const CSIPAddress& SIPAddress() const;
  891.82 -
  891.83 -		/**
  891.84 -		* Gets the name-address
  891.85 -		* @return name-address object
  891.86 -		*/
  891.87 -		IMPORT_C CSIPAddress& SIPAddress();
  891.88 -
  891.89 -
  891.90 -	public: // From CSIPHeaderBase, for internal use
  891.91 -
  891.92 -        /**
  891.93 -        * @internalComponent
  891.94 -        */
  891.95 -		TBool HasCompactName() const;
  891.96 -		
  891.97 -        /**
  891.98 -        * @internalComponent
  891.99 -        */		
 891.100 -		TPreferredPlace PreferredPlaceInMessage() const;
 891.101 -
 891.102 -	protected: // Constructors
 891.103 -
 891.104 -		CSIPFromToHeaderBase();
 891.105 -		void ConstructL();
 891.106 -		void ConstructL(CSIPAddress* aSIPAddress);
 891.107 -		void ConstructL(CSIPAddress* aSIPAddress, const TDesC8& aTag);
 891.108 -		void ConstructL(const CSIPFromToHeaderBase& aSIPFromToHeaderBase);
 891.109 -
 891.110 -	protected: // New functions
 891.111 -
 891.112 -		void DoInternalizeValueL(RReadStream& aReadStream);
 891.113 -
 891.114 -	private: // From CSIPHeaderBase
 891.115 -
 891.116 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 891.117 -
 891.118 -	private: // From CSIPParameterHeaderBase
 891.119 -
 891.120 -		HBufC8* ToTextMandatoryPartLC() const;
 891.121 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 891.122 -		const CSIPParamContainerBase& Params() const;
 891.123 -		CSIPParamContainerBase& Params();
 891.124 -
 891.125 -	private: // Data
 891.126 -
 891.127 -		CSIPAddress* iSIPAddress;
 891.128 -		CSIPFromToHeaderParams* iParams;
 891.129 -
 891.130 -private: // For testing purposes
 891.131 -	
 891.132 -		UNIT_TEST(CSIPFromToHeaderTest)
 891.133 -	};
 891.134 -
 891.135 -
 891.136 -#endif // CSIPFROMTOHEADERBASE_H
 891.137 -
 891.138 -// End of File
   892.1 --- a/epoc32/include/sipheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   892.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   892.3 @@ -1,193 +0,0 @@
   892.4 -/*
   892.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   892.6 -* All rights reserved.
   892.7 -* This component and the accompanying materials are made available
   892.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   892.9 -* which accompanies this distribution, and is available
  892.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  892.11 -*
  892.12 -* Initial Contributors:
  892.13 -* Nokia Corporation - initial contribution.
  892.14 -*
  892.15 -* Contributors:
  892.16 -*
  892.17 -* Description:
  892.18 -* Name        : sipheaderbase.h
  892.19 -* Part of     : SIP Codec
  892.20 -* Interface   : SDK API, SIP Codec API
  892.21 -* Version     : SIP/4.0 
  892.22 -*
  892.23 -*/
  892.24 -
  892.25 -
  892.26 -
  892.27 -
  892.28 -#ifndef CSIPHEADERBASE_H
  892.29 -#define CSIPHEADERBASE_H
  892.30 -
  892.31 -//  INCLUDES
  892.32 -#include <e32base.h>
  892.33 -#include <s32mem.h>
  892.34 -#include <stringpool.h>
  892.35 -#include "_sipcodecdefs.h"
  892.36 -
  892.37 -// CLASS DECLARATION
  892.38 -/**
  892.39 -* @publishedAll
  892.40 -* @released
  892.41 -*
  892.42 -* Class provides a generic interface for all the SIP headers.
  892.43 -*
  892.44 -*  @lib sipcodec.lib
  892.45 -*/
  892.46 -class CSIPHeaderBase : public CBase
  892.47 -	{
  892.48 -	public: // Constructors and destructors
  892.49 -
  892.50 -		/**
  892.51 -		* Destructor, deletes the resources of CSIPHeaderBase.
  892.52 -		*/
  892.53 -		IMPORT_C virtual ~CSIPHeaderBase();
  892.54 -
  892.55 -	
  892.56 -	public: // New functions
  892.57 -	
  892.58 -		/**
  892.59 -		* Creates a deep-copy of this CSIPHeaderBase object. 
  892.60 -		* The function has to be implemented in each of the sub-classes.
  892.61 -		* @return the deep-copied object, the ownership is transferred.
  892.62 -		*/
  892.63 -		IMPORT_C virtual CSIPHeaderBase* CloneL() const = 0;
  892.64 -
  892.65 -		/**
  892.66 -		* Gets the full name of the header
  892.67 -		* The function is implemented in each of the sub-classes.
  892.68 -		* @return the full name of the header for example "From"
  892.69 -		*/
  892.70 -		IMPORT_C virtual RStringF Name() const = 0;
  892.71 -
  892.72 -		/**
  892.73 -		* Encodes the header (name and value) into its textual representation.
  892.74 -		* @return a textual representation of the complete header,
  892.75 -		*         the ownership is transferred
  892.76 -		*/
  892.77 -		IMPORT_C HBufC8* ToTextL() const;
  892.78 -
  892.79 -		/**
  892.80 -		* Encodes the header (name and value) into its textual representation
  892.81 -		* and pushes it to the CleanupStack.
  892.82 -		* @return a textual representation of the complete header,
  892.83 -		*         the ownership is transferred
  892.84 -		*/
  892.85 -		IMPORT_C HBufC8* ToTextLC() const;
  892.86 -
  892.87 -		/**
  892.88 -		* Encodes the header's value into its textual representation.
  892.89 -		* @return a textual representation of the header's value,
  892.90 -		*         the ownership is transferred
  892.91 -		*/
  892.92 -		IMPORT_C virtual HBufC8* ToTextValueL() const = 0;
  892.93 -
  892.94 -		/**
  892.95 -		* Encodes the header's value into its textual representation
  892.96 -		* and pushes it to the CleanupStack.
  892.97 -		* @return a textual representation of the header's value,
  892.98 -		*         the ownership is transferred
  892.99 -		*/
 892.100 -		IMPORT_C HBufC8* ToTextValueLC() const;
 892.101 -
 892.102 -		/**
 892.103 -		* Writes the object to a RWriteStream
 892.104 -		* @param aWriteStream a stream where the object is to be externalized
 892.105 -		* @param aAddName if ETrue the name of the header is 
 892.106 -		*        also written to the stream
 892.107 -		*/
 892.108 -		IMPORT_C void ExternalizeL(RWriteStream& aWriteStream,
 892.109 -                                   TBool aAddName=ETrue) const;
 892.110 -
 892.111 -		/**
 892.112 -		* Checks, if the header supports serialization.
 892.113 -		* In practice all the headers part of the API support it.
 892.114 -		* @return ETrue, if the header supports serialization, 
 892.115 -		*         otherwise EFalse
 892.116 -		*/
 892.117 -		IMPORT_C virtual TBool ExternalizeSupported() const;
 892.118 -
 892.119 -		/**
 892.120 -		* Can be used when a RPointerArray<CSIPHeaderBase> needs to be pushed
 892.121 -		* to the CleanupStack for ResetAndDestroy.
 892.122 -		* @param aArray an array of CSIPHeaderBase pointers, 
 892.123 -		*        the ownership of the array is transferred
 892.124 -		*/
 892.125 -		IMPORT_C static void PushLC(RPointerArray<CSIPHeaderBase>* aArray);
 892.126 -
 892.127 -
 892.128 -	public: // For internal use
 892.129 -
 892.130 -        /**
 892.131 -        * @internalComponent
 892.132 -        */
 892.133 -		enum TPreferredPlace
 892.134 -			{
 892.135 -			ETop,
 892.136 -			EMiddleTop,
 892.137 -			EMiddle,
 892.138 -			EMiddleBottom,
 892.139 -			EBottom
 892.140 -			};
 892.141 -
 892.142 -        /**
 892.143 -        * @internalComponent
 892.144 -        */	
 892.145 -		TSglQueLink iLink;
 892.146 -
 892.147 -        /**
 892.148 -        * @internalComponent
 892.149 -        */
 892.150 -		virtual TBool EncodeMultipleToOneLine() const;
 892.151 -		
 892.152 -        /**
 892.153 -        * @internalComponent
 892.154 -        */		
 892.155 -		virtual TBool MoreThanOneAllowed() const;
 892.156 -		
 892.157 -        /**
 892.158 -        * @internalComponent
 892.159 -        */		
 892.160 -		virtual TBool IsExtensionHeader() const;
 892.161 -		
 892.162 -        /**
 892.163 -        * @internalComponent
 892.164 -        */		
 892.165 -		virtual TBool HasCompactName() const;
 892.166 -		
 892.167 -        /**
 892.168 -        * @internalComponent
 892.169 -        */		
 892.170 -		virtual RStringF CompactName() const;
 892.171 -		
 892.172 -        /**
 892.173 -        * @internalComponent
 892.174 -        */		
 892.175 -		virtual TPreferredPlace PreferredPlaceInMessage() const = 0;
 892.176 -
 892.177 -	protected: // Constructors
 892.178 -
 892.179 -		CSIPHeaderBase();
 892.180 -
 892.181 -	protected: // New functions
 892.182 -
 892.183 -		void ExternalizeNameL(RWriteStream& aWriteStream) const;
 892.184 -		
 892.185 -        /**
 892.186 -        * @internalComponent
 892.187 -        */		
 892.188 -		virtual void ExternalizeValueL(RWriteStream& aWriteStream) const;
 892.189 -		
 892.190 -		// Needed for cleanup of a RPointerArray<CSIPHeaderBase>:
 892.191 -		static void ResetAndDestroy(TAny* anArray);
 892.192 -	};
 892.193 -
 892.194 -#endif // CSIPHEADERBASE_H
 892.195 -
 892.196 -// End of File
   893.1 --- a/epoc32/include/siphlerr.h	Tue Mar 16 16:12:26 2010 +0000
   893.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   893.3 @@ -1,33 +0,0 @@
   893.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   893.5 -// All rights reserved.
   893.6 -// This component and the accompanying materials are made available
   893.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   893.8 -// which accompanies this distribution, and is available
   893.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  893.10 -//
  893.11 -// Initial Contributors:
  893.12 -// Nokia Corporation - initial contribution.
  893.13 -//
  893.14 -// Contributors:
  893.15 -//
  893.16 -// Description:
  893.17 -// SIP High Level Error Definition file
  893.18 -// 
  893.19 -//
  893.20 -
  893.21 -
  893.22 -
  893.23 -/**
  893.24 - @file 
  893.25 - @publishedAll
  893.26 - @released
  893.27 -*/
  893.28 -
  893.29 -
  893.30 -#ifndef SIPHLERR_H
  893.31 -#define SIPHLERR_H
  893.32 -
  893.33 -/** Returned on sip error messages i.e, for all the responses between 3XX to 6XX which are not specifically handled by SIP Stack.*/
  893.34 -const TInt KErrSIPErrorResponse = -18101;
  893.35 -
  893.36 -#endif
   894.1 --- a/epoc32/include/siphttpdigest.h	Tue Mar 16 16:12:26 2010 +0000
   894.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   894.3 @@ -1,312 +0,0 @@
   894.4 -/*
   894.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   894.6 -* All rights reserved.
   894.7 -* This component and the accompanying materials are made available
   894.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   894.9 -* which accompanies this distribution, and is available
  894.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  894.11 -*
  894.12 -* Initial Contributors:
  894.13 -* Nokia Corporation - initial contribution.
  894.14 -*
  894.15 -* Contributors:
  894.16 -*
  894.17 -* Description:
  894.18 -* Name        : siphttpdigest.h
  894.19 -* Part of     : SIP Client
  894.20 -* Interface   : SDK API, SIP Client API
  894.21 -* Version     : 2.0
  894.22 -*
  894.23 -*/
  894.24 -
  894.25 -
  894.26 -
  894.27 -#ifndef CSIPHTTPDIGEST_H
  894.28 -#define CSIPHTTPDIGEST_H
  894.29 -
  894.30 -// INCLUDES 
  894.31 -#include <e32base.h>
  894.32 -#include "_sipcodecdefs.h"
  894.33 -
  894.34 -// FORWARD DECLARATIONS
  894.35 -class CSIP;
  894.36 -class MSIPHttpDigestChallengeObserver;
  894.37 -class MSIPHttpDigestChallengeObserver2;
  894.38 -class CSIPClientTransaction;
  894.39 -class CSIPRefresh;
  894.40 -
  894.41 -// CLASS DECLARATION
  894.42 -
  894.43 -/**
  894.44 -* @publishedAll
  894.45 -* @released
  894.46 -*
  894.47 -* Class for managing SIP HTTP Digest security settings.
  894.48 -* Class provides functions for setting/removing
  894.49 -* HTTP Digest security mechanism related parameters.
  894.50 -* If the user does not use the class for the providing credentials for the
  894.51 -* received challenges, an error will be returned to the original request in
  894.52 -* case it was challenged.
  894.53 -* 
  894.54 -* Note that the user will be asked to provide credentials one realm
  894.55 -* at the time.
  894.56 -*
  894.57 -*  @lib sipclient.lib
  894.58 -*/
  894.59 -class CSIPHttpDigest : public CBase
  894.60 -	{
  894.61 -	public: // Constructors and destructor
  894.62 -	
  894.63 -		/**
  894.64 -		* Two-phased constructor.
  894.65 -		* @param aSIP a handle to SIP server
  894.66 -		* @param aObserver an observer for the received challenges
  894.67 -		* @return New object, ownership is transferred.
  894.68 -		*/
  894.69 -		IMPORT_C static CSIPHttpDigest*
  894.70 -			NewL(CSIP& aSIP,
  894.71 -				 MSIPHttpDigestChallengeObserver& aObserver);
  894.72 -				 
  894.73 -		/**
  894.74 -		* Two-phased constructor.
  894.75 -		* @param aSIP a handle to SIP server
  894.76 -		* @param aObserver an observer for the received challenges
  894.77 -		* @return New object, ownership is transferred.
  894.78 -		*/
  894.79 -		IMPORT_C static CSIPHttpDigest*
  894.80 -			NewLC(CSIP& aSIP,
  894.81 -				  MSIPHttpDigestChallengeObserver& aObserver);
  894.82 -
  894.83 -		/**
  894.84 -		* Two-phased constructor.
  894.85 -		* @param aSIP a handle to SIP server
  894.86 -		* @param aObserver2 an observer for the received challenges
  894.87 -		* @return New object, ownership is transferred.
  894.88 -		*/
  894.89 -		IMPORT_C static CSIPHttpDigest*
  894.90 -			NewL(CSIP& aSIP,
  894.91 -				 MSIPHttpDigestChallengeObserver2& aObserver2);
  894.92 -				 
  894.93 -		/**
  894.94 -		* Two-phased constructor.
  894.95 -		* @param aSIP a handle to SIP server
  894.96 -		* @param aObserver2 an observer for the received challenges
  894.97 -		* @return New object, ownership is transferred.
  894.98 -		*/
  894.99 -		IMPORT_C static CSIPHttpDigest*
 894.100 -			NewLC(CSIP& aSIP,
 894.101 -				  MSIPHttpDigestChallengeObserver2& aObserver2);
 894.102 -				  
 894.103 -		IMPORT_C ~CSIPHttpDigest();
 894.104 -
 894.105 -	public: // New functions
 894.106 -
 894.107 -        /**
 894.108 -		* Sets credentials for the realm of the outbound proxy.
 894.109 -		* Must be used in case the realm is the realm of the outbound proxy and
 894.110 -		* the request for credentials was received from callback
 894.111 -		* MSIPHttpDigestChallengeObserver::ChallengeReceived.		
 894.112 -		* The user can set credentials only upon request from the
 894.113 -		* SIP implementation.
 894.114 -		* @pre aOutboundProxy, aRealm, aUsername and aPasswd must not be empty
 894.115 -		*	   descriptors.
 894.116 -		* @param aOutboundProxy an outbound proxy (FQDN or IP address)
 894.117 -		* @param aRealm servers's realm
 894.118 -		* @param aUsername user's name
 894.119 -		* @param aPasswd user's password for the given server's realm
 894.120 -		* @leave KErrNoMemory if out of memory
 894.121 -		* @leave KErrArgument if some of the parameters is an empty descriptor
 894.122 -		* @leave KErrSIPResourceNotAvailable if a required object has been
 894.123 -		*		 deleted
 894.124 -		*/
 894.125 -		IMPORT_C void SetCredentialsL(const TDesC8& aOutboundProxy,
 894.126 -			                          const TDesC8& aRealm,
 894.127 -			                          const TDesC8& aUsername,
 894.128 -			                          const TDesC8& aPasswd);
 894.129 -        /**
 894.130 -		* Sets parameters for the realm.
 894.131 -		* Should be used in case the realm is not a realm of an outbound proxy 
 894.132 -		* and the request for credentials was received from callback
 894.133 -		* MSIPHttpDigestChallengeObserver::ChallengeReceived.		
 894.134 -		* The user can set credentials only upon request from the
 894.135 -		* SIP implementation.
 894.136 -		* @pre aRealm, aUsername and aPasswd must not be empty descriptors.
 894.137 -		* @param aRealm servers's realm
 894.138 -		* @param aUsername user's name
 894.139 -		* @param aPasswd user's password for the given server's realm
 894.140 -		* @leave KErrNoMemory if out of memory
 894.141 -		* @leave KErrArgument if some of the parameters is an empty descriptor
 894.142 -		* @leave KErrSIPResourceNotAvailable if a required object has been
 894.143 -		*		 deleted
 894.144 -		*/
 894.145 -		IMPORT_C void SetCredentialsL(const TDesC8& aRealm,
 894.146 -			                          const TDesC8& aUsername,
 894.147 -			                          const TDesC8& aPasswd);
 894.148 -
 894.149 -        /**
 894.150 -		* Sets credentials for the realm for the specific transaction.
 894.151 -		* Must be used when the request for credentials was received 
 894.152 -		* from callback MSIPHttpDigestChallengeObserver2::ChallengeReceived with 
 894.153 -		* CSIPClientTransaction as the parameter.
 894.154 -		* @pre aRealm, aUsername and aPasswd must not be empty descriptors.
 894.155 -		* @param aTransaction the transaction that was passed as a parameter
 894.156 -		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived
 894.157 -		* @param aOutboundProxy an outbound proxy (FQDN or IP address) if
 894.158 -		*        the challenge received had Proxy-Authenticate-header(s).
 894.159 -		*        Otherwise KNullDesC8 should passed.
 894.160 -		* @param aRealm servers's realm
 894.161 -		* @param aUsername user's name
 894.162 -		* @param aPasswd user's password for the given server's realm
 894.163 -		* @leave KErrNoMemory if out of memory
 894.164 -		* @leave KErrArgument if some of the parameters is an empty descriptor
 894.165 -		* @leave KErrSIPResourceNotAvailable if a required object has been
 894.166 -		*		 deleted
 894.167 -		*/
 894.168 -		IMPORT_C void SetCredentialsL(const CSIPClientTransaction& aTransaction,
 894.169 -		                              const TDesC8& aOutboundProxy,
 894.170 -			                          const TDesC8& aRealm,
 894.171 -			                          const TDesC8& aUsername,
 894.172 -			                          const TDesC8& aPasswd);
 894.173 -
 894.174 -        /**
 894.175 -		* Sets credentials for the realm for the specific refresh.
 894.176 -		* Must be used when the request for credentials was received 
 894.177 -		* from callback MSIPHttpDigestChallengeObserver2::ChallengeReceived with 
 894.178 -		* CSIPRefresh as the parameter.
 894.179 -		* @pre aRealm, aUsername and aPasswd must not be empty descriptors.
 894.180 -		* @param aRefresh the refresh that was passed as a parameter
 894.181 -		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived
 894.182 -		* @param aOutboundProxy an outbound proxy (FQDN or IP address) if
 894.183 -		*        the challenge received had Proxy-Authenticate-header(s).
 894.184 -		*        Otherwise KNullDesC8 should passed.
 894.185 -		* @param aRealm servers's realm
 894.186 -		* @param aUsername user's name
 894.187 -		* @param aPasswd user's password for the given server's realm
 894.188 -		* @leave KErrNoMemory if out of memory
 894.189 -		* @leave KErrArgument if some of the parameters is an empty descriptor
 894.190 -		* @leave KErrSIPResourceNotAvailable if a required object has been
 894.191 -		*		 deleted
 894.192 -		*/
 894.193 -		IMPORT_C void SetCredentialsL(const CSIPRefresh& aRefresh,
 894.194 -		                              const TDesC8& aOutboundProxy,
 894.195 -			                          const TDesC8& aRealm,
 894.196 -			                          const TDesC8& aUsername,
 894.197 -			                          const TDesC8& aPasswd);
 894.198 -			            
 894.199 -        /**
 894.200 -		* Removes all set credentials for the realm.
 894.201 -		* Must not be used if the user implements 
 894.202 -		* MSIPHttpDigestChallengeObserver2.
 894.203 -		* @pre aRealm must not be an empty descriptor
 894.204 -		* @param aRealm servers's realm
 894.205 -		* @return KErrNone if no error
 894.206 -		*		  KErrArgument if aRealm is an empty descriptor
 894.207 -		*		  KErrNoMemory if out of memory
 894.208 -		*		  KErrNotFound if the given realm was not found
 894.209 -        */
 894.210 -		IMPORT_C TInt RemoveCredentials(const TDesC8& aRealm);
 894.211 -		
 894.212 -        /**
 894.213 -		* Removes all set credentials by the user.
 894.214 -		* Must not be used if the user implements 
 894.215 -		* MSIPHttpDigestChallengeObserver2.		
 894.216 -		* @return KErrNone if succesful; KErrNoMemory if out of memory 
 894.217 -        */
 894.218 -		IMPORT_C TInt RemoveCredentials();
 894.219 -					                                                        
 894.220 -		/**
 894.221 -		* Sets the observer	to listen for the possible received challenges. 
 894.222 -		* Replaces the existing MSIPHttpDigestChallengeObserver or
 894.223 -		* MSIPHttpDigestChallengeObserver2.
 894.224 -		* @param aObserver an observer for the received challenges. 
 894.225 -		*/
 894.226 -		IMPORT_C void SetObserver(MSIPHttpDigestChallengeObserver& aObserver);
 894.227 -		
 894.228 -		/**
 894.229 -		* Sets the observer	to listen for the possible received challenges. 
 894.230 -		* Replaces the existing MSIPHttpDigestChallengeObserver or
 894.231 -		* MSIPHttpDigestChallengeObserver2.
 894.232 -		* @param aObserver an observer for the received challenges. 
 894.233 -		*/
 894.234 -		IMPORT_C void SetObserver(MSIPHttpDigestChallengeObserver2& aObserver);		
 894.235 -		
 894.236 -		/**
 894.237 -		* Ignores the challenge for the realm. As a result the error will be
 894.238 -		* generated to the original SIP request. 
 894.239 -		* @pre aRealm must not be an empty descriptor
 894.240 -		* @param aRealm a realm for which the challenge was ignored
 894.241 -		* @return KErrNone if no error
 894.242 -		*		  KErrNotFound if the given realm was not found
 894.243 -		*		  KErrArgument if aRealm is an empty descriptor
 894.244 -		*/
 894.245 -		IMPORT_C TInt IgnoreChallenge(const TDesC8& aRealm);
 894.246 -
 894.247 -		/**
 894.248 -		* Ignores the challenge for the realm for the specific transaction.
 894.249 -		* As a result KErrForbidden will be generated 
 894.250 -		* to the original SIP request.
 894.251 -		* @pre aRealm must not be an empty descriptor
 894.252 -		* @param aTransaction the transaction that was passed as a parameter
 894.253 -		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived		
 894.254 -		* @param aRealm a realm for which the challenge was ignored
 894.255 -		* @return KErrNone if no error
 894.256 -		*		  KErrNotFound if the given realm was not found
 894.257 -		*		  KErrArgument if aRealm is an empty descriptor
 894.258 -		*/
 894.259 -		IMPORT_C TInt IgnoreChallenge(const CSIPClientTransaction& aTransaction,
 894.260 -		                              const TDesC8& aRealm);
 894.261 -
 894.262 -		/**
 894.263 -		* Ignores the challenge for the realm for the specific refresh.
 894.264 -		* As a result the error will be generated 
 894.265 -		* to the original SIP request.
 894.266 -		* @pre aRealm must not be an empty descriptor
 894.267 -		* @param aRefresh the refresh that was passed as a parameter
 894.268 -		*        to MSIPHttpDigestChallengeObserver2::ChallengeReceived		
 894.269 -		* @param aRealm a realm for which the challenge was ignored
 894.270 -		* @return KErrNone if no error
 894.271 -		*		  KErrNotFound if the given realm was not found
 894.272 -		*		  KErrArgument if aRealm is an empty descriptor
 894.273 -		*/
 894.274 -		IMPORT_C TInt IgnoreChallenge(const CSIPRefresh& aRefresh,
 894.275 -		                              const TDesC8& aRealm);
 894.276 -
 894.277 -	public: // New functions, for internal use
 894.278 -
 894.279 -		void CSIPDeleted();
 894.280 -
 894.281 -	private: // Constructors
 894.282 -
 894.283 -        CSIPHttpDigest(CSIP& aSIP);
 894.284 -		CSIPHttpDigest(const CSIPHttpDigest& aHttpDigest);
 894.285 -		CSIPHttpDigest& operator=(const CSIPHttpDigest& aHttpDigest);
 894.286 -
 894.287 -		void ConstructL(MSIPHttpDigestChallengeObserver& aObserver);
 894.288 -		
 894.289 -		void ConstructL(MSIPHttpDigestChallengeObserver2& aObserver2);
 894.290 -       
 894.291 -    private: // New functions
 894.292 -    
 894.293 -		TInt RemoveCredentialParams(const TDesC8& aRealm) const;
 894.294 -
 894.295 -		void SetCredentialParamsL(TUint32 aRequestId,
 894.296 -		                          TUint32 aRefreshId,
 894.297 -		                          const TDesC8& aOutboundProxy,
 894.298 -		                          const TDesC8& aRealm,
 894.299 -				                  const TDesC8& aUsername,
 894.300 -				                  const TDesC8& aPasswd) const;		
 894.301 -		
 894.302 -		TInt IgnoreChallenge(TUint32 aRequestId,
 894.303 -		                     TUint32 aRefreshId,
 894.304 -		                     const TDesC8& aRealm);       
 894.305 -          
 894.306 -    private: // Data
 894.307 -
 894.308 -        CSIP* iSIP;
 894.309 -
 894.310 -	private: // For testing purposes
 894.311 -
 894.312 -	    UNIT_TEST(CSIP_Test)
 894.313 -	};
 894.314 -
 894.315 -#endif // CSIPHTTPDIGEST_H
   895.1 --- a/epoc32/include/siphttpdigestchallengeobserver.h	Tue Mar 16 16:12:26 2010 +0000
   895.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   895.3 @@ -1,55 +0,0 @@
   895.4 -/*
   895.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   895.6 -* All rights reserved.
   895.7 -* This component and the accompanying materials are made available
   895.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   895.9 -* which accompanies this distribution, and is available
  895.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  895.11 -*
  895.12 -* Initial Contributors:
  895.13 -* Nokia Corporation - initial contribution.
  895.14 -*
  895.15 -* Contributors:
  895.16 -*
  895.17 -* Description:
  895.18 -* Name        : siphttpdigestchallengeobserver.h
  895.19 -* Part of     : SIP Client
  895.20 -* Interface   : SDK API, SIP Client API
  895.21 -* Version     : 1.0
  895.22 -*
  895.23 -*/
  895.24 -
  895.25 -
  895.26 -
  895.27 -#ifndef MSIPHTTPDIGESTCHALLENGEOBSERVER_H
  895.28 -#define MSIPHTTPDIGESTCHALLENGEOBSERVER_H
  895.29 -
  895.30 -// FORWARD DECLARATIONS
  895.31 -
  895.32 -// CLASS DECLARATION
  895.33 -
  895.34 -/**
  895.35 -* @publishedAll
  895.36 -* @released
  895.37 -*
  895.38 -* The user must implement this interface if it intends to
  895.39 -* provide HTTP Digest credentials upon received challenges
  895.40 -* from the SIP servers on the signaling path.
  895.41 -* The user should provide credentials or ignore the challenge
  895.42 -* using functions defined in TSIPHttpDigest class.
  895.43 -*
  895.44 -*  @lib n/a
  895.45 -*/
  895.46 -class MSIPHttpDigestChallengeObserver
  895.47 -	{
  895.48 -    public: // New functions
  895.49 -		/**
  895.50 -		* SIP request resulted in 401/407 response that contains
  895.51 -		* a challenge.
  895.52 -		*
  895.53 -		* @param aRealm a realm for which the challenge was received
  895.54 -		*/
  895.55 -		virtual void ChallengeReceived(const TDesC8& aRealm) = 0;
  895.56 -	};
  895.57 -
  895.58 -#endif
   896.1 --- a/epoc32/include/siphttpdigestchallengeobserver2.h	Tue Mar 16 16:12:26 2010 +0000
   896.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   896.3 @@ -1,81 +0,0 @@
   896.4 -/*
   896.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   896.6 -* All rights reserved.
   896.7 -* This component and the accompanying materials are made available
   896.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   896.9 -* which accompanies this distribution, and is available
  896.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  896.11 -*
  896.12 -* Initial Contributors:
  896.13 -* Nokia Corporation - initial contribution.
  896.14 -*
  896.15 -* Contributors:
  896.16 -*
  896.17 -* Description:
  896.18 -* Name        : siphttpdigestchallengeobserver2.h
  896.19 -* Part of     : SIP Client
  896.20 -* Interface   : SDK API, SIP Client API
  896.21 -* Version     : 1.0
  896.22 -*
  896.23 -*/
  896.24 -
  896.25 -
  896.26 -
  896.27 -#ifndef MSIPHTTPDIGESTCHALLENGEOBSERVER2_H
  896.28 -#define MSIPHTTPDIGESTCHALLENGEOBSERVER2_H
  896.29 -
  896.30 -// INCLUDES
  896.31 -#include <e32std.h>
  896.32 -
  896.33 -// FORWARD DECLARATIONS
  896.34 -class CSIPClientTransaction;
  896.35 -class CSIPRefresh;
  896.36 -
  896.37 -// CLASS DECLARATION
  896.38 -/**
  896.39 -* @publishedAll
  896.40 -* @released
  896.41 -*
  896.42 -* The user should implement this interface if it intends to
  896.43 -* provide HTTP Digest credentials upon received challenges
  896.44 -* from the SIP servers on the signaling path.
  896.45 -* The user should provide credentials or ignore the challenge
  896.46 -* using functions defined in CSIPHttpDigest class.
  896.47 -*
  896.48 -*  @lib n/a
  896.49 -*/
  896.50 -class MSIPHttpDigestChallengeObserver2
  896.51 -	{
  896.52 -    public: // New functions
  896.53 -		/**
  896.54 -		* A SIP request resulted in 401/407 response that contains
  896.55 -		* 1..n challenges. 
  896.56 -		* The challenges can be obtained from Proxy-Authenticate- and/or
  896.57 -		* WWW-Authenticate-headers in the CSIPResponseElements
  896.58 -		* attached to the CSIPClientTransaction.
  896.59 -		* The user must call CSIPHttpDigest::SetCredentialsL or
  896.60 -		* CSIPHttpDigest::IgnoreChallenge for each challenge.
  896.61 -		*
  896.62 -		* @param aTransaction transaction which was completed with 
  896.63 -		*        a response containing HTTP Digest challenge.
  896.64 -		*/
  896.65 -		virtual void ChallengeReceived(
  896.66 -		    const CSIPClientTransaction& aTransaction) = 0;
  896.67 -
  896.68 -		/**
  896.69 -		* A refreshed SIP request resulted in 401/407 response that contains
  896.70 -		* 1..n challenges.
  896.71 -		* The challenges can be obtained from Proxy-Authenticate- and/or
  896.72 -		* WWW-Authenticate-headers in the CSIPResponseElements
  896.73 -		* attached to the CSIPClientTransaction attached to the CSIPRefresh.
  896.74 -		* The user must call CSIPHttpDigest::SetCredentialsL or
  896.75 -		* CSIPHttpDigest::IgnoreChallenge for each challenge.		 
  896.76 -		*
  896.77 -		* @param aRefresh the refresh for which a transaction completed with 
  896.78 -		*        a response containing HTTP Digest challenge.
  896.79 -		*/		    
  896.80 -		virtual void ChallengeReceived(
  896.81 -		    const CSIPRefresh& aRefresh) = 0;		    
  896.82 -	};
  896.83 -
  896.84 -#endif // MSIPHTTPDIGESTCHALLENGEOBSERVER2_H
   897.1 --- a/epoc32/include/sipinvitedialogassoc.h	Tue Mar 16 16:12:26 2010 +0000
   897.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   897.3 @@ -1,423 +0,0 @@
   897.4 -/*
   897.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   897.6 -* All rights reserved.
   897.7 -* This component and the accompanying materials are made available
   897.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   897.9 -* which accompanies this distribution, and is available
  897.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  897.11 -*
  897.12 -* Initial Contributors:
  897.13 -* Nokia Corporation - initial contribution.
  897.14 -*
  897.15 -* Contributors:
  897.16 -*
  897.17 -* Description:
  897.18 -* Name        : sipinvitedialogassoc.h
  897.19 -* Part of     : SIP Client
  897.20 -* Interface   : SDK API, SIP Client API
  897.21 -* Version     : 1.0
  897.22 -*
  897.23 -*/
  897.24 -
  897.25 -
  897.26 -
  897.27 -
  897.28 -#ifndef CSIPINVITEDIALOGASSOC_H
  897.29 -#define CSIPINVITEDIALOGASSOC_H
  897.30 -
  897.31 -// INCLUDES
  897.32 -#include "sipdialogassocbase.h"
  897.33 -
  897.34 -// CONSTANTS
  897.35 -
  897.36 -// FORWARD DECLARATIONS
  897.37 -class CUri8;
  897.38 -class CSIPConnection;
  897.39 -class CSIPServerTransaction;
  897.40 -class CSIPFromHeader;
  897.41 -class CSIPToHeader;
  897.42 -class CSIPContactHeader;
  897.43 -class MSIPRegistrationContext;
  897.44 -
  897.45 -// CLASS DECLARATION
  897.46 -
  897.47 -/**
  897.48 -*  @publishedAll
  897.49 -*  @released
  897.50 -*
  897.51 -*  Class for managing SIP dialog association created with INVITE.
  897.52 -*  It provides services for creating, using and
  897.53 -*  terminating SIP INVITE dialog association.
  897.54 -*
  897.55 -*  The user can have only one INVITE dialog association per dialog.
  897.56 -* 
  897.57 -*  @lib sipclient.lib
  897.58 -*/
  897.59 -class CSIPInviteDialogAssoc : public CSIPDialogAssocBase
  897.60 -	{
  897.61 -	public: // Constructors and destructor
  897.62 -
  897.63 -		/**
  897.64 -		* Two-phased constructor.
  897.65 -		* @param aDialog a dialog to be associated with
  897.66 -        * @return New object, ownership is transferred.
  897.67 -		*/
  897.68 -		IMPORT_C static CSIPInviteDialogAssoc* NewL(CSIPDialog& aDialog);
  897.69 -
  897.70 -        /**
  897.71 -		* Two-phased constructor.
  897.72 -		* @param aDialog a dialog to be associated with
  897.73 -        * @return New object, ownership is transferred.
  897.74 -		*/
  897.75 -		IMPORT_C static CSIPInviteDialogAssoc* NewLC(CSIPDialog& aDialog);
  897.76 -
  897.77 -        /**
  897.78 -        * Two-phased constructor.
  897.79 -        * Should be used if response to the received SIP request will create
  897.80 -        * a SIP dialog association.
  897.81 -        * The server transaction must be a INVITE transaction.
  897.82 -        * If SIP server transaction was received within an existing SIP dialog
  897.83 -        * the created SIP dialog association will be correlated to that SIP
  897.84 -        * dialog. Otherwise a new SIP dialog is created.
  897.85 -        * @pre aTransaction.State() == CSIPTransactionBase::EProceeding
  897.86 -        * @pre aTransaction.Type() == SipStrConsts::EInvite
  897.87 -        * @param aTransaction a SIP server transaction 
  897.88 -        * @return New object, ownership is transferred.
  897.89 -        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
  897.90 -        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
  897.91 -        *	CSIPTransactionBase::EProceeding
  897.92 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
  897.93 -		*	object has been deleted
  897.94 -        */
  897.95 -        IMPORT_C static CSIPInviteDialogAssoc*
  897.96 -            NewL(CSIPServerTransaction& aTransaction);
  897.97 -
  897.98 -        /**
  897.99 -        * Two-phased constructor.
 897.100 -        * Should be used if response to the received SIP request will create a
 897.101 -        * SIP dialog association.
 897.102 -        * The server transaction must be a INVITE transaction.
 897.103 -        * If SIP server transaction was received within the existing SIP dialog
 897.104 -        * the created SIP dialog association will be correlated to that
 897.105 -        * SIP dialog.  Otherwise a new SIP dialog is created.
 897.106 -		* @pre aTransaction.State() == CSIPTransactionBase::EProceeding
 897.107 -		* @pre aTransaction.Type() == SipStrConsts::EInvite
 897.108 -        * @param aTransaction a SIP server transaction
 897.109 -        * @return New object, ownership is transferred.
 897.110 -        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
 897.111 -        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
 897.112 -        *	CSIPTransactionBase::EProceeding
 897.113 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.114 -		*	object has been deleted
 897.115 -        */
 897.116 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.117 -            NewLC(CSIPServerTransaction& aTransaction);
 897.118 -
 897.119 -        /**
 897.120 -        * Two-phased constructor.
 897.121 -        * Should be used if response to the received SIP request will create
 897.122 -        * a SIP dialog association.
 897.123 -        * The server transaction must be a INVITE transaction.
 897.124 -        * If SIP server transaction was received within an existing SIP dialog
 897.125 -        * the created SIP dialog association will be correlated to that SIP
 897.126 -        * dialog. Otherwise a new SIP dialog is created.
 897.127 -        * @pre aTransaction.State() == CSIPTransactionBase::EProceeding
 897.128 -        * @pre aTransaction.Type() == SipStrConsts::EInvite
 897.129 -		* @pre aContext.IsContextActive() == ETrue        
 897.130 -        * @param aTransaction a SIP server transaction 
 897.131 -        * @param aContext that will be used for populating 
 897.132 -        *        the Contact-header of the response to aTransaction
 897.133 -        * @return New object, ownership is transferred.
 897.134 -        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
 897.135 -        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
 897.136 -        *	CSIPTransactionBase::EProceeding
 897.137 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.138 -		*	object has been deleted
 897.139 -        */
 897.140 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.141 -            NewL(CSIPServerTransaction& aTransaction,
 897.142 -                 const MSIPRegistrationContext& aContext);
 897.143 -
 897.144 -        /**
 897.145 -        * Two-phased constructor.
 897.146 -        * Should be used if response to the received SIP request will create a
 897.147 -        * SIP dialog association.
 897.148 -        * The server transaction must be a INVITE transaction.
 897.149 -        * If SIP server transaction was received within the existing SIP dialog
 897.150 -        * the created SIP dialog association will be correlated to that
 897.151 -        * SIP dialog.  Otherwise a new SIP dialog is created.
 897.152 -		* @pre aTransaction.State() == CSIPTransactionBase::EProceeding
 897.153 -		* @pre aTransaction.Type() == SipStrConsts::EInvite
 897.154 -		* @pre aContext.IsContextActive() == ETrue 
 897.155 -        * @param aTransaction a SIP server transaction
 897.156 -        * @param aContext that will be used for populating 
 897.157 -        *        the Contact-header of the response to aTransaction        
 897.158 -        * @return New object, ownership is transferred.
 897.159 -        * @leave KErrArgument if aTransaction.Type() != SipStrConsts::EInvite
 897.160 -        * @leave KErrSIPInvalidTransactionState if aTransaction.State() !=
 897.161 -        *	CSIPTransactionBase::EProceeding
 897.162 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.163 -		*	object has been deleted
 897.164 -        */
 897.165 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.166 -            NewLC(CSIPServerTransaction& aTransaction,
 897.167 -                  const MSIPRegistrationContext& aContext);
 897.168 -
 897.169 -        /**
 897.170 -        * Two-phased constructor
 897.171 -        * @pre aFrom != 0
 897.172 -        * @pre aRemoteUri != 0
 897.173 -		* The user of the class must not define tags in From-header
 897.174 -		* and To-header.        
 897.175 -        * @param aConnection a SIP connection to be used with
 897.176 -        *        dialog association
 897.177 -        * @param aFrom originator's address; the ownership is transfered
 897.178 -        * @param aRemoteUri a remote target URI that identifies a resource that
 897.179 -        *		 the request is addressed to. The ownership is transferred.
 897.180 -        * @param aTo logical recipient's address; if not defined
 897.181 -        *        the remote target uri will be used for To-header
 897.182 -        *        construction; the ownership is transfered
 897.183 -        * @param aContact a contact to be used in dialog creation. Must be
 897.184 -        *        given only if user intends to re-direct future requests; 
 897.185 -        *        the ownership is transfered        
 897.186 -        * @return New object, ownership is transferred.
 897.187 -        * @leave KErrArgument if aFrom == 0 or aRemoteUri == 0
 897.188 -        */
 897.189 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.190 -            NewL(CSIPConnection& aConnection,
 897.191 -                 CSIPFromHeader* aFrom,
 897.192 -                 CUri8* aRemoteUri,
 897.193 -                 CSIPToHeader* aTo=0,
 897.194 -                 CSIPContactHeader* aContact=0);
 897.195 -
 897.196 -        /**
 897.197 -        * Two-phased constructor
 897.198 -        * @pre aFrom != 0
 897.199 -        * @pre aRemoteUri != 0
 897.200 -		* The user of the class must not define tags in From-header
 897.201 -		* and To-header.
 897.202 -        * @param aSIPConnection a SIP connection to be used with
 897.203 -        *        dialog association
 897.204 -        * @param aFrom originator's address; the ownership is transfered
 897.205 -        * @param aRemoteUri a remote target URI that identifies a resource that
 897.206 -        *		 the request is addressed to. The ownership is transferred.
 897.207 -        * @param aTo logical recipient's address; if not defined
 897.208 -        *        the remote target uri will be used for To-header
 897.209 -        *        construction; the ownership is transfered
 897.210 -        * @param aContact a contact to be used in dialog creation. Must be
 897.211 -        *        given only if user intends to re-direct future requests; 
 897.212 -        *        the ownership is transfered
 897.213 -        * @return New object, ownership is transferred.
 897.214 -        * @leave KErrArgument if aFrom == 0 or aRemoteUri == 0
 897.215 -        */
 897.216 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.217 -            NewLC(CSIPConnection& aConnection,
 897.218 -                  CSIPFromHeader* aFrom,
 897.219 -                  CUri8* aRemoteUri,
 897.220 -                  CSIPToHeader* aTo=0,
 897.221 -                  CSIPContactHeader* aContact=0);
 897.222 -
 897.223 -        /**
 897.224 -        * Two-phased constructor
 897.225 -		* @pre aRemoteUri != 0
 897.226 -		* The user of the class must not define tags in From-header
 897.227 -		* and To-header.
 897.228 -        * @pre aContext.IsContextActive() == ETrue
 897.229 -        * @param aConnection a SIP connection to be used with
 897.230 -        *        dialog association        
 897.231 -        * @param aRemoteUri a remote target URI that identifies a resource
 897.232 -        *		 that the request is targeted to. The ownership is transferred.
 897.233 -        * @param aContext used for selecting outbound 
 897.234 -        *        proxy and originator's address (AOR) and contact
 897.235 -        * @param aFrom originator's address. If not defined it will
 897.236 -        *        constructed using registration context (User's AOR);
 897.237 -        *        the ownership is transfered
 897.238 -        * @param aTo logical recipient's address; if not defined
 897.239 -        *        the remote target uri will be used for To-header
 897.240 -        *        construction; the ownership is transfered
 897.241 -        * @param aContact a contact to be used in dialog creation. Must be
 897.242 -        *        given only if user intends to re-direct future requests; 
 897.243 -        *        the ownership is transfered
 897.244 -        * @return New object, ownership is transferred.
 897.245 -        * @leave KErrArgument if aRemoteUri == 0
 897.246 -        * @leave KErrSIPInvalidRegistrationState
 897.247 -        *		 if aContext.IsContextActive() == EFalse
 897.248 -        */
 897.249 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.250 -            NewL(CSIPConnection& aConnection,                                    
 897.251 -                 CUri8* aRemoteUri,
 897.252 -                 const MSIPRegistrationContext& aContext,
 897.253 -                 CSIPFromHeader* aFrom=0,
 897.254 -	             CSIPToHeader* aTo=0,
 897.255 -	             CSIPContactHeader* aContact=0);
 897.256 -
 897.257 -        /**
 897.258 -		* Two-phased constructor		
 897.259 -		* @pre aRemoteUri != 0
 897.260 -		* The user of the class must not define tags in From-header
 897.261 -		* and To-header.
 897.262 -		* @pre aContext.IsContextActive() == ETrue
 897.263 -		* @param aConnection a SIP connection to be used with
 897.264 -		*        dialog association		
 897.265 -		* @param aRemoteUri a remote target URI that identifies a resource
 897.266 -		*		 that the request is targeted to. The ownership is transferred.
 897.267 -        * @param aContext used for selecting outbound 
 897.268 -        *        proxy and originator's address (AOR) and contact
 897.269 -        * @param aFrom originator's address. If not defined it will
 897.270 -        *        constructed using registration context (User's AOR);
 897.271 -        *        the ownership is transfered
 897.272 -        * @param aTo logical recipient's address; if not defined
 897.273 -        *        the remote target uri will be used for To-header
 897.274 -        *        construction; the ownership is transfered
 897.275 -        * @param aContact a contact to be used in dialog creation. Must be
 897.276 -        *        given only if user intends to re-direct future requests; 
 897.277 -        *        the ownership is transfered
 897.278 -        * @return New object, ownership is transferred.
 897.279 -        * @leave KErrArgument if aRemoteUri == 0
 897.280 -        * @leave KErrSIPInvalidRegistrationState
 897.281 -        *		 if aContext.IsContextActive() == EFalse
 897.282 -		*/
 897.283 -        IMPORT_C static CSIPInviteDialogAssoc*
 897.284 -            NewLC(CSIPConnection& aConnection,			                        
 897.285 -			      CUri8* aRemoteUri,
 897.286 -                  const MSIPRegistrationContext& aContext,
 897.287 -                  CSIPFromHeader* aFrom=0,
 897.288 -	              CSIPToHeader* aTo=0,
 897.289 -	              CSIPContactHeader* aContact=0);
 897.290 -
 897.291 -		/**
 897.292 -		* Destructor
 897.293 -		*/
 897.294 -		IMPORT_C ~CSIPInviteDialogAssoc();
 897.295 -			                                  
 897.296 -	public: // New functions
 897.297 -
 897.298 -		/**
 897.299 -		* Creates INVITE and sends it to the remote target.
 897.300 -		* 101-199 or 2xx response will create INVITE dialog association in case
 897.301 -		* of first INVITE within this dialog association. Subsequent INVITE
 897.302 -		* requests are re-INVITEs.
 897.303 -		* @pre Dialog().Connection().State()==EActive
 897.304 -		* @pre Dialog().State()==CSIPDialog::EInit ||
 897.305 -		*      Dialog().State()==CSIPDialog::EConfirmed
 897.306 -		* @param aElements contains user SIP headers and content. Ownership is
 897.307 -        *   transferred.
 897.308 -		* @return INVITE SIP transaction. Ownership is transferred.
 897.309 -		* @leave KErrSIPInvalidDialogState if dialog is not in a correct state
 897.310 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.311 -		*	object has been deleted
 897.312 -		* @capability NetworkServices
 897.313 -		*/
 897.314 -		IMPORT_C CSIPClientTransaction*
 897.315 -            SendInviteL(CSIPMessageElements* aElements=0);
 897.316 -
 897.317 -        /**
 897.318 -		* Creates PRACK and sends it to the remote target.		
 897.319 -		* @pre Dialog().Connection().State()==EActive
 897.320 -		* @pre Dialog().State()==CSIPDialog::EEarly || 
 897.321 -		*      Dialog().State()==CSIPDialog::EConfirmed
 897.322 -        * @pre aElements must not contain Contact headers
 897.323 -		* @param aElements contains user SIP headers and content. Ownership is
 897.324 -        *   transferred.
 897.325 -		* @return PRACK SIP transaction. Ownership is transferred.
 897.326 -		* @leave KErrSIPInvalidDialogState if dialog is not in a correct state
 897.327 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.328 -		*	object has been deleted
 897.329 -		* @capability NetworkServices
 897.330 -		*/
 897.331 -		IMPORT_C CSIPClientTransaction*
 897.332 -            SendPrackL(CSIPMessageElements* aElements=0);
 897.333 -
 897.334 -	    /**
 897.335 -		* Creates UPDATE and sends it to the remote target.
 897.336 -		* @pre Dialog().Connection().State()==EActive
 897.337 -		* @pre Dialog().State()==CSIPDialog::EEarly || 
 897.338 -		*      Dialog().State()==CSIPDialog::EConfirmed
 897.339 -		* @param aElements contains user SIP headers and content. Ownership is
 897.340 -        *   transferred.
 897.341 -		* @return UPDATE SIP transaction. Ownership is transferred.
 897.342 -		* @leave KErrSIPInvalidDialogState if dialog is not in a correct state
 897.343 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.344 -		*	object has been deleted
 897.345 -		* @capability NetworkServices
 897.346 -		*/
 897.347 -		IMPORT_C CSIPClientTransaction*
 897.348 -            SendUpdateL(CSIPMessageElements* aElements=0);
 897.349 -
 897.350 -		/**
 897.351 -		* Creates SIP ACK request and sends it to the remote target.
 897.352 -		* The client transaction must be an INVITE transaction.
 897.353 -		* @pre Dialog().Connection().State()==EActive
 897.354 -		* @pre Dialog().State()==CSIPDialog::EConfirmed
 897.355 -		* @param aTransaction a SIP INVITE client transaction to acknowledge
 897.356 -		* @param aElements optional SIP message headers and body. Ownership is
 897.357 -        *   transferred.
 897.358 -        * @leave KErrArgument if aTransaction is not an INVITE transaction.
 897.359 -        * @leave KErrSIPInvalidDialogState if ACK can't be sent in the current
 897.360 -		*	dialog state
 897.361 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.362 -		*	object has been deleted
 897.363 -		* @capability NetworkServices
 897.364 -		*/
 897.365 -		IMPORT_C void SendAckL(const CSIPClientTransaction& aTransaction,
 897.366 -			                   CSIPMessageElements* aElements=0);
 897.367 -
 897.368 -	    /**
 897.369 -		* Creates SIP BYE request and sends it to the remote target.		
 897.370 -		* @pre Dialog().Connection().State()==EActive
 897.371 -		* @pre Dialog().State()==CSIPDialog::EEarly || 
 897.372 -		*      Dialog().State()==CSIPDialog::EConfirmed
 897.373 -		* @param aElements contains user SIP headers and content. Ownership is
 897.374 -        *   transferred.
 897.375 -		* @return SIP BYE transaction. Ownership is transferred.
 897.376 -		* @leave KErrSIPInvalidDialogState if BYE can't be sent in the current
 897.377 -		*	dialog state
 897.378 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 897.379 -		*	object has been deleted
 897.380 -		* @capability NetworkServices
 897.381 -		*/		
 897.382 -		IMPORT_C CSIPClientTransaction*
 897.383 -            SendByeL(CSIPMessageElements* aElements=0);
 897.384 -
 897.385 -	public: // New functions, for internal use
 897.386 -	
 897.387 -        /**
 897.388 -		* Sends initial INVITE creating a dialog and creates a transaction for
 897.389 -        * it.
 897.390 -		* @param aElements contains user SIP headers and content. Ownership is
 897.391 -        *   transferred.
 897.392 -		* @return INVITE SIP transaction. Ownership is transferred.
 897.393 -		*/
 897.394 -        CSIPClientTransaction* DoSendInviteL(CSIPMessageElements* aElements);
 897.395 -
 897.396 -        /**
 897.397 -		* Sends ACK		
 897.398 -		* @param aTransaction a SIP INVITE client transaction to acknowledge
 897.399 -		* @param aElements optional SIP message headers and body. Ownership is
 897.400 -        *   transferred.
 897.401 -		*/
 897.402 -        void DoSendAckL(const CSIPClientTransaction& aTransaction,
 897.403 -                        CSIPMessageElements* aElements);
 897.404 -
 897.405 -		CSIPClientTransaction*
 897.406 -			DoSendRequestWithinDialogL(RStringF aMethod,
 897.407 -									   CSIPMessageElements* aElements);
 897.408 -
 897.409 -        CSIPClientTransaction* DoSendCancelL(TUint32 aRequestId);
 897.410 -
 897.411 -   	private: // Constructors
 897.412 -   	   	
 897.413 -		static CSIPInviteDialogAssoc* NewLC(CSIPConnection& aConnection,
 897.414 -								 CUri8* aRemoteUri,
 897.415 -	                             CSIPFromHeader* aFrom,
 897.416 -	                             CSIPToHeader* aTo,
 897.417 -		                         CSIPContactHeader* aContact,
 897.418 -		                         const MSIPRegistrationContext* aContext);
 897.419 -
 897.420 -		CSIPInviteDialogAssoc();
 897.421 -		
 897.422 -		void ConstructL(CSIPServerTransaction& aTransaction,
 897.423 -                        const MSIPRegistrationContext* aContext);
 897.424 -	};
 897.425 -
 897.426 -#endif
   898.1 --- a/epoc32/include/sipmanagedprofile.h	Tue Mar 16 16:12:26 2010 +0000
   898.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   898.3 @@ -1,226 +0,0 @@
   898.4 -/*
   898.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   898.6 -* All rights reserved.
   898.7 -* This component and the accompanying materials are made available
   898.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   898.9 -* which accompanies this distribution, and is available
  898.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  898.11 -*
  898.12 -* Initial Contributors:
  898.13 -* Nokia Corporation - initial contribution.
  898.14 -*
  898.15 -* Contributors:
  898.16 -*
  898.17 -* Description:
  898.18 -* Name        : sipmanagedprofile.h
  898.19 -* Part of     : SIP Profile Client
  898.20 -* Interface   : SDK API, SIP Profile API
  898.21 -* The class providing profile management of SIP service provider
  898.22 -* Version     : 1.0
  898.23 -*
  898.24 -*/
  898.25 -
  898.26 -
  898.27 -
  898.28 -#ifndef CSIPMANAGEDPROFILE_H
  898.29 -#define CSIPMANAGEDPROFILE_H
  898.30 -
  898.31 -// INCLUDES
  898.32 -
  898.33 -#include <e32base.h>
  898.34 -#include <e32std.h>
  898.35 -#include <badesca.h>
  898.36 -
  898.37 -#include "sipprofile.h"
  898.38 -
  898.39 -//CONSTANTS
  898.40 -
  898.41 -/** SIP Provider Name which value is type of TDesC8.
  898.42 -* Note that this parameter can only be retrieved
  898.43 -* if it has been explicitly configured */
  898.44 -const TUint32 KSIPPrivateIdentity = 500;
  898.45 -
  898.46 -/** SIP HTTP Digest password which value is type of TDesC8.
  898.47 -* Note that this parameter cannot be retrieved */
  898.48 -const TUint32 KSIPDigestPassword = 501;
  898.49 -
  898.50 -/** 
  898.51 -* SIP headers to be added to outgoing SIP requests generated 
  898.52 -* by SIP Profile Agent. The value is of type MDesC8Array.
  898.53 -* Each array element represents a complete SIP header (name and value). */
  898.54 -const TUint32 KSIPHeaders = 502;
  898.55 -
  898.56 -/** 
  898.57 -* Setting for enabling/disabling IMS registration with certain types of
  898.58 -* smart card applications. The value is of type TUint32.
  898.59 -* If no value for this setting is configured, registration is allowed 
  898.60 -* with all types of smart card applications (SIM/USIM/ISIM).
  898.61 -* If the value is configured, the following values are possible:
  898.62 -* 1: Registration is allowed only when USIM or ISIM is present.
  898.63 -* 2: Registration is allowed only when ISIM present */
  898.64 -const TUint32 KSIPAllowIMSRegistration = 503;
  898.65 -
  898.66 -/**
  898.67 -* Setting for enabling/disabling editing the profile after its creation.
  898.68 -* Serves as an indication for the clients that the profile 
  898.69 -* update and deletion operations are restricted. 
  898.70 -* The SIP Profile Agent implementation does not understand
  898.71 -* the semantics of the parameter.
  898.72 -* The value is of type TBool. */
  898.73 -const TUint32 KSIPProfileLocked = 504;
  898.74 -
  898.75 -/**
  898.76 -* Defines how autoregistration profile behaves on home network/roaming
  898.77 -* situations. If value is ETrue, automatic registration is not allowed
  898.78 -* while roaming.
  898.79 -* The value is of type TBool. */
  898.80 -const TUint32 KSIPAllowAutoRegistrationOnlyOnHomeNetwork = 505;
  898.81 -
  898.82 -// FORWARD DECLARATIONS
  898.83 -
  898.84 -class CSIPManagedProfileRegistry;
  898.85 -
  898.86 -
  898.87 -// CLASS DECLARATION
  898.88 -
  898.89 -/**
  898.90 -*  @publishedAll
  898.91 -*  @released
  898.92 -*
  898.93 -*  Class contains profile information of particular SIP service
  898.94 -*  provider. Class provides functions for setting and 
  898.95 -*  getting profile parameters.
  898.96 -* 
  898.97 -*  @lib sipprofilecli.lib
  898.98 -*/
  898.99 -class CSIPManagedProfile: public CSIPProfile
 898.100 -    {
 898.101 -    public:  // Constructors and destructor
 898.102 -        /**
 898.103 -        * Destructor. 
 898.104 -        */                
 898.105 -        IMPORT_C ~CSIPManagedProfile();
 898.106 -
 898.107 -    public: // New functions
 898.108 -        /**
 898.109 -        * Sets profile type information; 
 898.110 -        * @param aSIPProfileTypeInfo profile type information
 898.111 -        */
 898.112 -        IMPORT_C void SetType(const TSIPProfileTypeInfo& aSIPProfileTypeInfo);
 898.113 -
 898.114 -        /** 
 898.115 -        * Sets profile parameter
 898.116 -        * @param aParam a parameter to set; zero-length descriptor resets the value
 898.117 -        * @param aVal a value to set
 898.118 -        * @return KErrNotFound if parameter was not found,
 898.119 -        *         KErrNoMemory if out of memory;
 898.120 -        *         KErrNone otherwise
 898.121 -        */
 898.122 -        IMPORT_C TInt SetParameter(TUint32 aParam, const TDesC8& aVal); 
 898.123 -
 898.124 -        /** 
 898.125 -        * Sets profile parameter
 898.126 -        * @param aParam a parameter to set
 898.127 -        * @param aVal a value to set
 898.128 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 898.129 -        */
 898.130 -        IMPORT_C TInt SetParameter(TUint32 aParam, TUint32 aVal);
 898.131 -
 898.132 -        /** 
 898.133 -        * Sets profile parameter
 898.134 -        * @param aParam a parameter to set
 898.135 -        * @param aVal a value to set
 898.136 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 898.137 -        */
 898.138 -        IMPORT_C TInt SetParameter(TUint32 aParam, TBool aVal);
 898.139 -    
 898.140 -        /** 
 898.141 -        * Sets profile parameter
 898.142 -        * @param aParam a parameter to set
 898.143 -        * @param aVal values to set; an empty array resets the value
 898.144 -        * @return KErrNotFound if parameter was not found, 
 898.145 -        *         KErrNoMemory if out of memory          
 898.146 -        *          KErrNone otherwise        
 898.147 -        */
 898.148 -        IMPORT_C TInt SetParameter(TUint32 aParam, const MDesC8Array& aVal);
 898.149 -        
 898.150 -        /** 
 898.151 -        * Sets profile parameter that is defined for a particular SIP server
 898.152 -        * @param aServerType a SIP server type
 898.153 -        * @param aParam a parameter to set
 898.154 -        * @param aVal a value to set; zero-length descriptor resets the value
 898.155 -        * @return KErrNotFound if parameter was not found,
 898.156 -        *          KErrNoMemory if out of memory;
 898.157 -        *         KErrNone otherwise
 898.158 -        */
 898.159 -        IMPORT_C TInt SetParameter(TUint32 aServerType, TUint32 aParam, const TDesC8& aVal);
 898.160 -
 898.161 -        /** 
 898.162 -        * Creates deep copy of the object
 898.163 -        * @return deep copied instance
 898.164 -        * @leave KErrNoMemory if out of memory
 898.165 -        */
 898.166 -        IMPORT_C CSIPManagedProfile* CloneL() const;
 898.167 -
 898.168 -    public:
 898.169 -        /**
 898.170 -        * Two-phased constructor.
 898.171 -        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 898.172 -        *         profile server.
 898.173 -        */
 898.174 -        static CSIPManagedProfile* NewL(CSIPManagedProfileRegistry* aSIPRegistry);
 898.175 -
 898.176 -        /**
 898.177 -        * Two-phased constructor.
 898.178 -        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 898.179 -        *         profile server.
 898.180 -        * Constructs an object and adds the pointer to the cleanup stack;
 898.181 -        */
 898.182 -        static CSIPManagedProfile* NewLC(CSIPManagedProfileRegistry* aSIPRegistry);
 898.183 -
 898.184 -    private:
 898.185 -
 898.186 -        /**
 898.187 -        * Constructor. 
 898.188 -        */                
 898.189 -        CSIPManagedProfile(CSIPManagedProfileRegistry* aSIPRegistry);
 898.190 -
 898.191 -        /** 
 898.192 -        * Sets profile parameter
 898.193 -        * @param aParam a parameter to set; zero-length descriptor resets the value
 898.194 -        * @param aVal a value to set
 898.195 -        */
 898.196 -        void SetParameterL(TUint32 aParam, const TDesC8& aVal);
 898.197 -
 898.198 -        /** 
 898.199 -        * Sets profile parameter
 898.200 -        * @param aParam a parameter to set
 898.201 -        * @param aVal a value to set
 898.202 -        */
 898.203 -        void SetParameterL(TUint32 aParam, TUint32 aVal);
 898.204 -
 898.205 -        /** 
 898.206 -        * Sets profile parameter
 898.207 -        * @param aParam a parameter to set
 898.208 -        * @param aVal a value to set
 898.209 -        */
 898.210 -        void SetParameterL(TUint32 aParam, TBool aVal);
 898.211 -
 898.212 -        /** 
 898.213 -        * Sets profile parameter that is defined for a particular SIP server
 898.214 -        * @param aServerType a SIP server type
 898.215 -        * @param aParam a parameter to set
 898.216 -        * @param aVal a value to set; zero-length descriptor resets the value
 898.217 -        */
 898.218 -        void SetParameterL(TUint32 aServerType,
 898.219 -            TUint32 aParam, const TDesC8& aVal);
 898.220 -
 898.221 -        /** 
 898.222 -        * Sets profile parameter
 898.223 -        * @param aParam a parameter to set
 898.224 -        * @param aVal values to set; an empty array resets the value
 898.225 -        */
 898.226 -        IMPORT_C void SetParameterL(TUint32 aParam, const MDesC8Array& aVal);
 898.227 -    };
 898.228 -
 898.229 -#endif // CSIPMANAGEDPROFILE_H
   899.1 --- a/epoc32/include/sipmanagedprofileregistry.h	Tue Mar 16 16:12:26 2010 +0000
   899.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   899.3 @@ -1,131 +0,0 @@
   899.4 -/*
   899.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   899.6 -* All rights reserved.
   899.7 -* This component and the accompanying materials are made available
   899.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   899.9 -* which accompanies this distribution, and is available
  899.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  899.11 -*
  899.12 -* Initial Contributors:
  899.13 -* Nokia Corporation - initial contribution.
  899.14 -*
  899.15 -* Contributors:
  899.16 -*
  899.17 -* Description:
  899.18 -* Name        : sipmanagedprofileregistry.h
  899.19 -* Part of     : SIP Profile Client
  899.20 -* Interface   : SDK API, SIP Profile API
  899.21 -* The class for managing SIP profiles
  899.22 -* Version     : 1.0
  899.23 -*
  899.24 -*/
  899.25 -
  899.26 -
  899.27 -
  899.28 -#ifndef CSIPMANAGEDPROFILEREGISTRY_H
  899.29 -#define CSIPMANAGEDPROFILEREGISTRY_H
  899.30 -
  899.31 -//  INCLUDES
  899.32 -#include <e32base.h>
  899.33 -#include <e32std.h>
  899.34 -#include "sipprofileregistrybase.h"
  899.35 -
  899.36 -// FORWARD DECLARATIONS
  899.37 -class CSIPProfile;
  899.38 -class CSIPManagedProfile;
  899.39 -class MSIPProfileRegistryObserver;
  899.40 -
  899.41 -
  899.42 -// CLASS DECLARATION
  899.43 -/**
  899.44 -*  @publishedAll
  899.45 -*  @released
  899.46 -*
  899.47 -*  The class for managing SIP profiles.
  899.48 -*  This class provides the functions for
  899.49 -*  adding/updating/removing profiles.
  899.50 -*
  899.51 -*  @lib sipprofilecli.lib
  899.52 -*/
  899.53 -class CSIPManagedProfileRegistry: public CSIPProfileRegistryBase
  899.54 -    {
  899.55 -    public:  // Constructors and destructor
  899.56 -        /**
  899.57 -        * Two-phased constructor.
  899.58 -        * @param aObserver a observer for SIP profile change events.
  899.59 -        */
  899.60 -        IMPORT_C static CSIPManagedProfileRegistry* NewL(
  899.61 -                        MSIPProfileRegistryObserver& aObserver);
  899.62 -
  899.63 -        /**
  899.64 -        * Two-phased constructor.
  899.65 -        * Constructs an object and adds the pointer to the cleanup stack;
  899.66 -        * @param aObserver a observer for SIP profile change events.
  899.67 -        */
  899.68 -        IMPORT_C static CSIPManagedProfileRegistry* NewLC(
  899.69 -                        MSIPProfileRegistryObserver& aObserver);
  899.70 -
  899.71 -        /**
  899.72 -        * Destructor
  899.73 -        */
  899.74 -        IMPORT_C ~CSIPManagedProfileRegistry();
  899.75 -    public: //new functions
  899.76 -
  899.77 -        /**
  899.78 -        * Instantiates new profile with default values 
  899.79 -        * for given type.
  899.80 -        * @param aType a SIP profile type to be created
  899.81 -        * @return pre-filled instance of given type profile type;
  899.82 -                * the ownership is transferred
  899.83 -        */
  899.84 -        IMPORT_C CSIPManagedProfile* CreateL(const TSIPProfileTypeInfo& aType); 
  899.85 -
  899.86 -        /**
  899.87 -        * Checks if profile is not used by other applications. 
  899.88 -        * If no other application is using the profile, profile
  899.89 -        * can be updated.
  899.90 -        * @param aSIPProfile a SIP profile
  899.91 -        * @return ETrue if available for update, EFalse otherwise
  899.92 -        * @capability ReadUserData
  899.93 -        */
  899.94 -        IMPORT_C TBool IsInUseL(const CSIPProfile& aSIPProfile) const; 
  899.95 -
  899.96 -        /**
  899.97 -        * Saves new profile or changes to a profile to the persistent storage.
  899.98 -        * This function must be called after desired values are set or updated
  899.99 -        * in the SIP profile. 
 899.100 -        * If the profile is marked for auto-registration and the profile is 
 899.101 -        * updated the profile will be re-registered.
 899.102 -        * Function leaves on failure.
 899.103 -        * @pre IsInUse(aSIPProfile)==EFalse
 899.104 -        * @param aSIPProfile a sip profile to save
 899.105 -        * @capability WriteDeviceData
 899.106 -        * @capability NetworkServices
 899.107 -        */
 899.108 -        IMPORT_C void SaveL(CSIPProfile& aSIPProfile);
 899.109 -
 899.110 -        /**
 899.111 -        * Removes and deletes SIP profile from the persistent storage.
 899.112 -        * Function leaves on failure.
 899.113 -        * If the profile is registered it will be de-registered before the
 899.114 -        * removal from the persistent storage.
 899.115 -        * @param aSIPProfile a sip profile to delete
 899.116 -        * @capability WriteDeviceData
 899.117 -        * @capability NetworkServices
 899.118 -        */
 899.119 -        IMPORT_C void DestroyL(CSIPProfile& aSIPProfile);
 899.120 -
 899.121 -    private:
 899.122 -
 899.123 -        CSIPManagedProfileRegistry(MSIPProfileRegistryObserver& aObserver);
 899.124 -
 899.125 -        void ConstructL();
 899.126 -
 899.127 -        /**
 899.128 -        * Creates a new instance of type CSIPManagedProfile
 899.129 -        * @return new instance
 899.130 -        */
 899.131 -        CSIPProfile* NewInstanceL();
 899.132 -    };
 899.133 -
 899.134 -#endif // CSIPMANAGEDPROFILEREGISTRY_H
   900.1 --- a/epoc32/include/sipmessageelements.h	Tue Mar 16 16:12:26 2010 +0000
   900.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   900.3 @@ -1,174 +0,0 @@
   900.4 -/*
   900.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   900.6 -* All rights reserved.
   900.7 -* This component and the accompanying materials are made available
   900.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   900.9 -* which accompanies this distribution, and is available
  900.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  900.11 -*
  900.12 -* Initial Contributors:
  900.13 -* Nokia Corporation - initial contribution.
  900.14 -*
  900.15 -* Contributors:
  900.16 -*
  900.17 -* Description:
  900.18 -* Name        : sipmessageelements.h
  900.19 -* Part of     : SIP Client
  900.20 -* Interface   : SDK API, SIP API
  900.21 -* Version     : 1.0
  900.22 -*
  900.23 -*/
  900.24 -
  900.25 -
  900.26 -
  900.27 -#ifndef CSIPMESSAGEELEMENTS_H
  900.28 -#define CSIPMESSAGEELEMENTS_H
  900.29 -
  900.30 -// INCLUDES
  900.31 -#include <e32base.h>
  900.32 -#include <s32strm.h>
  900.33 -#include <stringpool.h>
  900.34 -#include "_sipcodecdefs.h"
  900.35 -
  900.36 -// FORWARD DECLARATIONS
  900.37 -class CSIPHeaderBase;
  900.38 -class CSIPContentTypeHeader;
  900.39 -class CSIPFromHeader;
  900.40 -class CSIPToHeader;
  900.41 -class CSIPCSeqHeader;
  900.42 -class CSIPExtensionHeader;
  900.43 -
  900.44 -// CLASS DECLARATION
  900.45 -
  900.46 -/**
  900.47 -* @publishedAll
  900.48 -* @released
  900.49 -*
  900.50 -* Class for creation and manipulation optional elements in a SIP message.
  900.51 -* 
  900.52 -* Class provides functions for setting and getting optional elements in a 
  900.53 -* SIP message. Optional elements include user SIP message headers, 
  900.54 -* content and content type.
  900.55 -* Following headers are not considered to be user SIP message headers and 
  900.56 -* cannot be set or retrieved using functions of this class: 
  900.57 -* "Authentication-Info", "Call-Id", "CSeq", "From" 
  900.58 -* "Max-Forwards", "Min-Expires", "Record-Route",
  900.59 -* "Security-Verify", "Service-Route", "To", "Via", "Security-Server" and
  900.60 -* "Proxy-Authorization".
  900.61 -*
  900.62 -*  @lib sipclient.lib
  900.63 -*/
  900.64 -class CSIPMessageElements : public CBase
  900.65 -	{
  900.66 -    public:  // Constructors and destructor    
  900.67 -	    /**
  900.68 -        * Two-phased constructor.
  900.69 -        */
  900.70 -		IMPORT_C static CSIPMessageElements* NewL();
  900.71 -
  900.72 -	    /**
  900.73 -        * Two-phased constructor.
  900.74 -        */
  900.75 -		IMPORT_C static CSIPMessageElements* NewLC();
  900.76 -
  900.77 -        /**
  900.78 -        * Destructor.
  900.79 -        */
  900.80 -		IMPORT_C ~CSIPMessageElements();
  900.81 -
  900.82 -    public: //new functions
  900.83 -		/**
  900.84 -		* Sets an array of user headers i.e. headers that user is allowed
  900.85 -		* manipulate to a SIP message. An empty array resets the user headers.
  900.86 -		* Note that the Content-Type header must be set using SetContentL. 
  900.87 -		*
  900.88 -		* @param aHeaders an array of SIP headers.
  900.89 -        *        The ownership of objects in the array is transferred.
  900.90 -		*/
  900.91 -		IMPORT_C void SetUserHeadersL(RPointerArray<CSIPHeaderBase>& aHeaders);
  900.92 -
  900.93 -		/**
  900.94 -		* Gets all user SIP headers this class contains
  900.95 -		* @return SIP headers. Ownership is not transferred.
  900.96 -		*/
  900.97 -		IMPORT_C const RPointerArray<CSIPHeaderBase>& UserHeaders() const;
  900.98 -
  900.99 -		/**
 900.100 -		* Sets the SIP message content and its type.
 900.101 -		* A zero length content can be set by providing a pointer
 900.102 -		* to a zero length HBufC8 instance (the ownership is transferred).
 900.103 -		* @pre aContent != 0 && aContentType != 0
 900.104 -		* @param aContent the content of a SIP message,
 900.105 -		*        		  the ownership is transferred
 900.106 -		* @param aContentType the SIP message content type,
 900.107 -		*        			  the ownership is transferred
 900.108 -		* @leave KErrArgument if aContent == 0 or
 900.109 -		*						 aContentType == 0
 900.110 -		*/
 900.111 -		IMPORT_C void SetContentL(HBufC8* aContent,
 900.112 -							      CSIPContentTypeHeader* aContentType);
 900.113 -
 900.114 -		/**
 900.115 -		* Gets the SIP message content
 900.116 -		* @return SIP message content. If content does not exist, an empty
 900.117 -        *   descriptor is returned.
 900.118 -		*/
 900.119 -		IMPORT_C const TDesC8& Content() const;
 900.120 -
 900.121 -		/**
 900.122 -		* Gets the content type
 900.123 -		* @return Content-Type-header or a 0-pointer if not present; the ownership
 900.124 -        *         is not transferred.
 900.125 -		*/
 900.126 -		IMPORT_C const CSIPContentTypeHeader* ContentType() const;
 900.127 -
 900.128 -		/*
 900.129 -		* Removes the SIP message content and destroys
 900.130 -        * Content-Type header as well.
 900.131 -		* @return SIP message content; the ownership is transferred.
 900.132 -		*/
 900.133 -		IMPORT_C HBufC8* ExtractContent();
 900.134 -
 900.135 -    public: // New functions, for internal use
 900.136 -
 900.137 -	    static CSIPMessageElements* InternalizeL(RReadStream& aReadStream);
 900.138 -    	void ExternalizeL(RWriteStream& aWriteStream) const;
 900.139 -        TInt UserHeaderCount(RStringF aName) const;
 900.140 -        const RPointerArray<CSIPHeaderBase> UserHeadersL(RStringF aName) const;
 900.141 -        TInt RemoveHeaders(RStringF aName);
 900.142 -        void DetachUserHeader(CSIPHeaderBase* aHeader);
 900.143 -	    void AddHeaderL(CSIPHeaderBase* aHeader);
 900.144 -        void SetToL(CSIPToHeader* aTo);
 900.145 -        const CSIPToHeader* To() const;
 900.146 -        void SetFromL (CSIPFromHeader* aFrom);
 900.147 -        const CSIPFromHeader* From() const;
 900.148 -        const CSIPCSeqHeader* CSeq() const;
 900.149 -        void SetContent(HBufC8* aContent);
 900.150 -        void DetachContent();
 900.151 -
 900.152 -    private:
 900.153 -
 900.154 -        CSIPMessageElements();
 900.155 -	    void ConstructL();
 900.156 -	    void DoInternalizeL(RReadStream& aReadStream);
 900.157 -	    void CheckUserHeaderL(const CSIPHeaderBase* aHeader) const;
 900.158 -        void ExternalizeUserHeadersL(RWriteStream& aWriteStream) const;
 900.159 -        void ExternalizeL(const CSIPExtensionHeader* aHeader,
 900.160 -                          RWriteStream& aWriteStream) const;
 900.161 -
 900.162 -	private: // Data
 900.163 -	
 900.164 -	    RPointerArray<CSIPHeaderBase> iUserHeaders;
 900.165 -	    HBufC8* iContent;
 900.166 -        CSIPFromHeader* iFromHeader;
 900.167 -        CSIPToHeader* iToHeader;
 900.168 -        CSIPCSeqHeader* iCSeqHeader;
 900.169 -        CSIPContentTypeHeader* iContentTypeHeader;
 900.170 -        TBool iHeaderLookupOpen;
 900.171 -
 900.172 -	private: // For testing purposes
 900.173 -
 900.174 -	    UNIT_TEST(CSIPMessageElementsTest)
 900.175 -	};
 900.176 -
 900.177 -#endif
   901.1 --- a/epoc32/include/sipnotifydialogassoc.h	Tue Mar 16 16:12:26 2010 +0000
   901.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   901.3 @@ -1,232 +0,0 @@
   901.4 -/*
   901.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   901.6 -* All rights reserved.
   901.7 -* This component and the accompanying materials are made available
   901.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   901.9 -* which accompanies this distribution, and is available
  901.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  901.11 -*
  901.12 -* Initial Contributors:
  901.13 -* Nokia Corporation - initial contribution.
  901.14 -*
  901.15 -* Contributors:
  901.16 -*
  901.17 -* Description:
  901.18 -* Name        : sipnotifydialogassoc.h
  901.19 -* Part of     : SIP Client
  901.20 -* Interface   : SDK API, SIP Client API
  901.21 -* Version     : 1.0
  901.22 -*
  901.23 -*/
  901.24 -
  901.25 -
  901.26 -
  901.27 -
  901.28 -#ifndef CSIPNOTIFYDIALOGASSOC_H
  901.29 -#define CSIPNOTIFYDIALOGASSOC_H
  901.30 -
  901.31 -// INCLUDES
  901.32 -#include <e32base.h>
  901.33 -#include "sipdialogassocbase.h"
  901.34 -
  901.35 -// CONSTANTS
  901.36 -
  901.37 -// FORWARD DECLARATIONS
  901.38 -class CSIPEventHeader;
  901.39 -class CSIPSubscriptionStateHeader;
  901.40 -class MSIPRegistrationContext;
  901.41 -
  901.42 -// CLASS DECLARATION
  901.43 -
  901.44 -/**
  901.45 -* @publishedAll
  901.46 -* @released
  901.47 -*
  901.48 -* Class for managing SIP NOTIFY dialog associations.
  901.49 -* It provides services for creating, using and
  901.50 -* terminating SIP NOTIFY dialog associations. The user can have multiple
  901.51 -* NOTIFY dialog associations per same SIP dialog.
  901.52 -* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
  901.53 -* local and remote tags; user is responsible for "Event" and
  901.54 -* "Subscription-State" header semantics.
  901.55 -* @lib sipclient.lib
  901.56 -*/
  901.57 -class CSIPNotifyDialogAssoc: public CSIPDialogAssocBase
  901.58 -	{
  901.59 -	public: // Constructors and destructor
  901.60 -
  901.61 -        /**
  901.62 -		* Two-phased constructor.
  901.63 -		* The response to the received SIP request will create a SIP NOTIFY
  901.64 -		* dialog association that will be correlated with the SIP dialog in
  901.65 -		* which SIP server transaction was received. If the server transaction
  901.66 -		* was not received within a SIP dialog, a new SIP dialog is created.
  901.67 -		* The server transaction must be either SUBSCRIBE or REFER transaction.
  901.68 -		* @pre aTransaction.State()==ETrying || EProceeding
  901.69 -		* @pre aTransaction.Type() == 
  901.70 -		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer	
  901.71 -        * @pre aEvent != 0 && aState != 0
  901.72 -		* @param aTransaction a SIP server transaction 
  901.73 -		* @param aEvent an event to send a notification about; the ownership
  901.74 -		*        is transferred.
  901.75 -		* @param aState a subscription state; the ownership is transferred.
  901.76 -		* @return New object; the ownership is transferred
  901.77 -		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
  901.78 -		*	transaction, or aEvent == 0 or aState == 0.
  901.79 -		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
  901.80 -		*	state
  901.81 -		*/
  901.82 -		IMPORT_C static CSIPNotifyDialogAssoc*
  901.83 -			NewL(CSIPServerTransaction& aTransaction,
  901.84 -			     CSIPEventHeader* aEvent,
  901.85 -				 CSIPSubscriptionStateHeader* aState);
  901.86 -
  901.87 -		/**
  901.88 -		* Two-phased constructor.
  901.89 -		* The response to the received SIP request will create a SIP NOTIFY
  901.90 -		* dialog association that will be correlated with the SIP dialog in
  901.91 -		* which SIP server transaction was received. If the server transaction
  901.92 -		* was not received within a SIP dialog, a new SIP dialog is created.
  901.93 -		* The server transaction must be either SUBSCRIBE or REFER transaction.
  901.94 -		* @pre aTransaction.State()==ETrying || EProceeding
  901.95 -		* @pre aTransaction.Type() == 
  901.96 -		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer	
  901.97 -        * @pre aEvent != 0 && aState != 0
  901.98 -		* @param aTransaction a SIP server transaction
  901.99 -		* @param aEvent an event to send a notification about; the ownership
 901.100 -		*        is transferred.
 901.101 -		* @param aState a subscription state; the ownership is transferred.
 901.102 -		* @return New object; the ownership is transferred
 901.103 -		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
 901.104 -		*	transaction, or aEvent == 0 or aState == 0.
 901.105 -		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
 901.106 -		*	state
 901.107 -		*/
 901.108 -		IMPORT_C static CSIPNotifyDialogAssoc*
 901.109 -			NewLC(CSIPServerTransaction& aTransaction,
 901.110 -			      CSIPEventHeader* aEvent,
 901.111 -				  CSIPSubscriptionStateHeader* aState);
 901.112 -				  
 901.113 -        /**
 901.114 -		* Two-phased constructor.
 901.115 -		* The response to the received SIP request will create a SIP NOTIFY
 901.116 -		* dialog association that will be correlated with the SIP dialog in
 901.117 -		* which SIP server transaction was received. If the server transaction
 901.118 -		* was not received within a SIP dialog, a new SIP dialog is created.
 901.119 -		* The server transaction must be either SUBSCRIBE or REFER transaction.
 901.120 -		* @pre aTransaction.State()==ETrying || EProceeding
 901.121 -		* @pre aTransaction.Type() == 
 901.122 -		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer
 901.123 -		* @pre aContext.IsContextActive() == ETrue	
 901.124 -        * @pre aEvent != 0 && aState != 0
 901.125 -		* @param aTransaction a SIP server transaction
 901.126 -        * @param aContext that will be used for populating 
 901.127 -        *        the Contact-header of the response to aTransaction		
 901.128 -		* @param aEvent an event to send a notification about; the ownership
 901.129 -		*        is transferred.
 901.130 -		* @param aState a subscription state; the ownership is transferred.
 901.131 -		* @return New object; the ownership is transferred
 901.132 -		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
 901.133 -		*	transaction, or aEvent == 0 or aState == 0.
 901.134 -		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
 901.135 -		*	state
 901.136 -		*/
 901.137 -		IMPORT_C static CSIPNotifyDialogAssoc*
 901.138 -			NewL(CSIPServerTransaction& aTransaction,
 901.139 -                 const MSIPRegistrationContext& aContext,			
 901.140 -			     CSIPEventHeader* aEvent,
 901.141 -				 CSIPSubscriptionStateHeader* aState);
 901.142 -
 901.143 -		/**
 901.144 -		* Two-phased constructor.
 901.145 -		* The response to the received SIP request will create a SIP NOTIFY
 901.146 -		* dialog association that will be correlated with the SIP dialog in
 901.147 -		* which SIP server transaction was received. If the server transaction
 901.148 -		* was not received within a SIP dialog, a new SIP dialog is created.
 901.149 -		* The server transaction must be either SUBSCRIBE or REFER transaction.
 901.150 -		* @pre aTransaction.State()==ETrying || EProceeding
 901.151 -		* @pre aTransaction.Type() == 
 901.152 -		*      SipStrConsts::ESubscribe || SipStrConsts::ERefer
 901.153 -		* @pre aContext.IsContextActive() == ETrue	
 901.154 -        * @pre aEvent != 0 && aState != 0
 901.155 -		* @param aTransaction a SIP server transaction
 901.156 -        * @param aContext that will be used for populating 
 901.157 -        *        the Contact-header of the response to aTransaction		
 901.158 -		* @param aEvent an event to send a notification about; the ownership
 901.159 -		*        is transferred.
 901.160 -		* @param aState a subscription state; the ownership is transferred.
 901.161 -		* @return New object; the ownership is transferred
 901.162 -		* @leave KErrArgument if aTransaction is not a SUBSCRIBE or REFER
 901.163 -		*	transaction, or aEvent == 0 or aState == 0.
 901.164 -		* @leave KErrSIPInvalidTransactionState if aTransaction is in a wrong
 901.165 -		*	state
 901.166 -		*/
 901.167 -		IMPORT_C static CSIPNotifyDialogAssoc*
 901.168 -			NewLC(CSIPServerTransaction& aTransaction,
 901.169 -                  const MSIPRegistrationContext& aContext,
 901.170 -			      CSIPEventHeader* aEvent,
 901.171 -				  CSIPSubscriptionStateHeader* aState);				  
 901.172 -
 901.173 -		/**
 901.174 -		* Destructor
 901.175 -		*/
 901.176 -		IMPORT_C ~CSIPNotifyDialogAssoc();
 901.177 -			                                  
 901.178 -	public: // New functions
 901.179 -
 901.180 -        /**
 901.181 -		* Creates NOTIFY and sends it to the remote target.		
 901.182 -		* If client provides optional SIP headers they must
 901.183 -		* not contain Event and Subscription-State headers.		
 901.184 -		* @pre Dialog().Connection().State()==EActive
 901.185 -		* @pre Dialog().State()==CSIPDialog::TState::EConfirmed		
 901.186 -		* @param aElements optional SIP message headers and body.
 901.187 -		*	Ownership is transferred.
 901.188 -		* @return NOTIFY SIP UAC transaction
 901.189 -		* @leave KErrSIPInvalidDialogState if dialog's state is incorrect
 901.190 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 901.191 -		*	object has been deleted.
 901.192 -		* @capability NetworkServices
 901.193 -		*/
 901.194 -		IMPORT_C CSIPClientTransaction*
 901.195 -            SendNotifyL(CSIPMessageElements* aElements=0);
 901.196 -
 901.197 -		/**
 901.198 -		* Gets an event about which the notification is done
 901.199 -		* @return an event
 901.200 -		*/
 901.201 -		IMPORT_C const CSIPEventHeader& Event() const;
 901.202 -
 901.203 -		/**
 901.204 -		* Gets subscription state
 901.205 -		* @return subscription state
 901.206 -		*/
 901.207 -		IMPORT_C CSIPSubscriptionStateHeader& SubscriptionState();
 901.208 -		
 901.209 -		/**
 901.210 -		* Gets subscription state
 901.211 -		* @return subscription state
 901.212 -		*/
 901.213 -		IMPORT_C const CSIPSubscriptionStateHeader& SubscriptionState() const;
 901.214 -
 901.215 -	public: // New functions, for internal use
 901.216 -
 901.217 -		CSIPClientTransaction*
 901.218 -			DoSendNotifyWithinDialogL(CSIPMessageElements* aElements);
 901.219 -
 901.220 -	private: // Constructors
 901.221 -
 901.222 -		CSIPNotifyDialogAssoc();
 901.223 -
 901.224 -        void ConstructL(CSIPServerTransaction& aTransaction,
 901.225 -                        const MSIPRegistrationContext* aContext,
 901.226 -                        CSIPEventHeader* aEvent,
 901.227 -                        CSIPSubscriptionStateHeader* aState);
 901.228 -
 901.229 -	private: // Data
 901.230 -
 901.231 -		CSIPEventHeader* iEvent;
 901.232 -		CSIPSubscriptionStateHeader* iSubscriptionState;
 901.233 -	};
 901.234 -
 901.235 -#endif
   902.1 --- a/epoc32/include/sipobserver.h	Tue Mar 16 16:12:26 2010 +0000
   902.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   902.3 @@ -1,72 +0,0 @@
   902.4 -/*
   902.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   902.6 -* All rights reserved.
   902.7 -* This component and the accompanying materials are made available
   902.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   902.9 -* which accompanies this distribution, and is available
  902.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  902.11 -*
  902.12 -* Initial Contributors:
  902.13 -* Nokia Corporation - initial contribution.
  902.14 -*
  902.15 -* Contributors:
  902.16 -*
  902.17 -* Description:
  902.18 -* Name        : sipobserver.h
  902.19 -* Part of     : SIP Client
  902.20 -* Interface   : SDK API, SIP Client API
  902.21 -* Version     : 1.0
  902.22 -*
  902.23 -*/
  902.24 -
  902.25 -
  902.26 -
  902.27 -#ifndef MSIPOBSERVER_H
  902.28 -#define MSIPOBSERVER_H
  902.29 -
  902.30 -// INCLUDES
  902.31 -#include <e32std.h>
  902.32 -
  902.33 -// FORWARD DECLARATIONS
  902.34 -class CSIPServerTransaction;
  902.35 -
  902.36 -// CLASS DECLARATION
  902.37 -
  902.38 -/**
  902.39 -*  @publishedAll
  902.40 -*  @released
  902.41 -*
  902.42 -*  An interface to be implemented by user of CSIP.
  902.43 -*  Interface allows to be able to receive SIP request from the SIP connection
  902.44 -*  that has not been initialized by the user.
  902.45 -*
  902.46 -*  @lib n/a
  902.47 -*/
  902.48 -class MSIPObserver
  902.49 -    {    
  902.50 -    public: // New functions
  902.51 -        /**
  902.52 -        * A SIP request has been received from the network.
  902.53 -        * This function is called when the SIP request was received using such
  902.54 -        * an IAP, for which the application has not created a CSIPConnection
  902.55 -        * object.
  902.56 -        * @pre aTransaction != 0
  902.57 -        * @param aIapId The IapId from which the SIP request was received.
  902.58 -        * @param aTransaction contains local address, remote address of a SIP
  902.59 -        *        message, as well as optional SIP message method, headers and
  902.60 -        *        body. The ownership is transferred.
  902.61 -        */
  902.62 -        virtual void IncomingRequest(TUint32 aIapId,
  902.63 -                                     CSIPServerTransaction* aTransaction) = 0;
  902.64 -
  902.65 -        /**
  902.66 -        * The received SIP request time-outed and it is invalid i.e. cannot be used
  902.67 -        * anymore.
  902.68 -        * This will be called if the user fails to create a SIP connection and
  902.69 -        * does not send an appropriate SIP response.
  902.70 -        * @param aTransaction The time-outed transaction.
  902.71 -        */
  902.72 -        virtual void TimedOut(CSIPServerTransaction& aTransaction) = 0;
  902.73 -    };
  902.74 -
  902.75 -#endif
   903.1 --- a/epoc32/include/sipparameterheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   903.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   903.3 @@ -1,181 +0,0 @@
   903.4 -/*
   903.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   903.6 -* All rights reserved.
   903.7 -* This component and the accompanying materials are made available
   903.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   903.9 -* which accompanies this distribution, and is available
  903.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  903.11 -*
  903.12 -* Initial Contributors:
  903.13 -* Nokia Corporation - initial contribution.
  903.14 -*
  903.15 -* Contributors:
  903.16 -*
  903.17 -* Description:
  903.18 -* Name        : sipparameterheaderbase.h
  903.19 -* Part of     : SIP Codec
  903.20 -* Interface   : SDK API, SIP Codec API
  903.21 -* Version     : SIP/4.0
  903.22 -*
  903.23 -*/
  903.24 -
  903.25 -
  903.26 -
  903.27 -
  903.28 -#ifndef CSIPPARAMETERHEADERBASE_H
  903.29 -#define CSIPPARAMETERHEADERBASE_H
  903.30 -
  903.31 -//  INCLUDES
  903.32 -#include "sipheaderbase.h"
  903.33 -#include "_sipcodecdefs.h"
  903.34 -
  903.35 -// FORWARD DECLARATIONS
  903.36 -class CSIPParamContainerBase;
  903.37 -
  903.38 -// CLASS DECLARATION
  903.39 -/**
  903.40 -* @publishedAll
  903.41 -* @released
  903.42 -*
  903.43 -* A base class for SIP headers that have structure
  903.44 -*        "mandatory part"delimiter"parameters"
  903.45 -*
  903.46 -* This is an abstract class and cannot be instantiated.
  903.47 -*
  903.48 -*  @lib sipcodec.lib
  903.49 -*/
  903.50 -class CSIPParameterHeaderBase : public CSIPHeaderBase
  903.51 -    {
  903.52 -    public:    // Constructors and destructor
  903.53 -
  903.54 -        /**
  903.55 -        * Destructor, deletes the resources of CSIPParameterHeaderBase.
  903.56 -        */
  903.57 -        IMPORT_C virtual ~CSIPParameterHeaderBase();
  903.58 -
  903.59 -
  903.60 -    public: // New functions
  903.61 -
  903.62 -        /**
  903.63 -        * Checks if a parameter is present
  903.64 -        * @param aName the name of the parameter
  903.65 -        * @return ETrue if present, otherwise EFalse
  903.66 -        */
  903.67 -        IMPORT_C TBool HasParam(RStringF aName) const;
  903.68 -
  903.69 -        /**
  903.70 -        * Gets a parameter value
  903.71 -        * @pre HasParam(aName) == ETrue
  903.72 -        * @param aName the name of the parameter
  903.73 -        * @return the parameter value if present,
  903.74 -        *         otherwise a zero-length length value.
  903.75 -        */
  903.76 -        IMPORT_C RStringF ParamValue(RStringF aName) const;
  903.77 -
  903.78 -        /**
  903.79 -        * Sets a parameter with a value. 
  903.80 -        * Takes copies of the name and value,
  903.81 -        * so if the RStringFs have been dynamically allocated,
  903.82 -        * they can be closed if necessary after the function returns.
  903.83 -        * @pre HasParam(aName) == EFalse
  903.84 -        * @param aName the name of the parameter
  903.85 -        * @param aValue the parameter value to set
  903.86 -        */
  903.87 -        IMPORT_C void SetParamL(RStringF aName, RStringF aValue);
  903.88 -
  903.89 -        /**
  903.90 -        * Sets a parameter without a value
  903.91 -        * Takes copy of the name,
  903.92 -        * so if the RStringF has been dynamically allocated,
  903.93 -        * it can be closed if necessary after the function returns.
  903.94 -        * @pre HasParam(aName) == EFalse
  903.95 -        * @param aName the parameter name to set
  903.96 -        */
  903.97 -        IMPORT_C void SetParamL(RStringF aName);
  903.98 -
  903.99 -        /**
 903.100 -        * Deletes a parameter
 903.101 -        * @param aName the parameter name to delete
 903.102 -        */
 903.103 -        IMPORT_C void DeleteParam(RStringF aName);
 903.104 -
 903.105 -        /**
 903.106 -        * Gets the count of header parameters
 903.107 -        * @return count of header parameters
 903.108 -        */
 903.109 -        IMPORT_C TInt ParamCount() const;
 903.110 -
 903.111 -        /**
 903.112 -        * Gets a header parameter name by index.
 903.113 -        * This function can be used when looping through
 903.114 -        * all the header parameters.
 903.115 -        * @param aIndex the index of the parameter
 903.116 -        * @param aName copy of the parameter name that must be 
 903.117 -        *        closed by the caller.       
 903.118 -        * @return KErrNotFound if aIndex is invalid. Otherwise EFalse.
 903.119 -        */
 903.120 -        IMPORT_C TInt Param(TInt aIndex, RStringF& aName) const;
 903.121 -
 903.122 -    public: // From CSIPHeaderBase
 903.123 -
 903.124 -        /**
 903.125 -        * From CSIPHeaderBase ToTextValueL
 903.126 -        */
 903.127 -        IMPORT_C HBufC8* ToTextValueL() const;
 903.128 -
 903.129 -
 903.130 -    protected: // Contructors
 903.131 -
 903.132 -        CSIPParameterHeaderBase(const TChar& aSeparator);        
 903.133 -
 903.134 -    protected: // New functions
 903.135 -
 903.136 -        void ParseL(const TDesC8& aValue, 
 903.137 -        				  TBool aIgnoreParenthesis=ETrue, 
 903.138 -        				  TBool aSkipSeparatorsBeforeAt=EFalse);
 903.139 -
 903.140 -    protected: // Virtual functions
 903.141 -
 903.142 -        /**
 903.143 -        * @internalComponent
 903.144 -        */    
 903.145 -        virtual TBool ParamInsertionAllowed() const;
 903.146 -
 903.147 -    protected: // Pure virtual functions
 903.148 -
 903.149 -        /**
 903.150 -        * @internalComponent
 903.151 -        */
 903.152 -        virtual HBufC8* ToTextMandatoryPartLC() const = 0;
 903.153 -        
 903.154 -        /**
 903.155 -        * @internalComponent
 903.156 -        */        
 903.157 -        virtual void ParseMandatoryPartL(const TDesC8& aMandatoryPart) = 0;
 903.158 -        
 903.159 -        /**
 903.160 -        * @internalComponent
 903.161 -        */        
 903.162 -        virtual const CSIPParamContainerBase& Params() const = 0;
 903.163 -        
 903.164 -        /**
 903.165 -        * @internalComponent
 903.166 -        */        
 903.167 -        virtual CSIPParamContainerBase& Params() = 0;
 903.168 -
 903.169 -    private: // Contructors
 903.170 -
 903.171 -        CSIPParameterHeaderBase();
 903.172 -
 903.173 -    private: // Data
 903.174 -    
 903.175 -        TChar iSeparator;
 903.176 -
 903.177 -    private: // For testing purposes
 903.178 -    
 903.179 -        UNIT_TEST(CSIPParameterHeaderBaseTest)
 903.180 -    };
 903.181 -
 903.182 -#endif // CSIPPARAMETERHEADERBASE_H
 903.183 -
 903.184 -// End of File
   904.1 --- a/epoc32/include/sippassociateduriheader.h	Tue Mar 16 16:12:26 2010 +0000
   904.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   904.3 @@ -1,137 +0,0 @@
   904.4 -/*
   904.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   904.6 -* All rights reserved.
   904.7 -* This component and the accompanying materials are made available
   904.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   904.9 -* which accompanies this distribution, and is available
  904.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  904.11 -*
  904.12 -* Initial Contributors:
  904.13 -* Nokia Corporation - initial contribution.
  904.14 -*
  904.15 -* Contributors:
  904.16 -*
  904.17 -* Description:
  904.18 -* Name        : sippassociateduriheader.h
  904.19 -* Part of     : SIP Codec
  904.20 -* Interface   : SDK API, SIP Codec API
  904.21 -* Version     : SIP/4.0 
  904.22 -*
  904.23 -*/
  904.24 -
  904.25 -
  904.26 -
  904.27 -
  904.28 -#ifndef CSIPPASSOCIATEDURIHEADER_H
  904.29 -#define CSIPPASSOCIATEDURIHEADER_H
  904.30 -
  904.31 -//  INCLUDES
  904.32 -#include "sipaddressheaderbase.h"
  904.33 -#include "_sipcodecdefs.h"
  904.34 -
  904.35 -// FORWARD DECLARATIONS
  904.36 -class CSIPAddress;
  904.37 -class CSIPHeaderGenericParams;
  904.38 -
  904.39 -// CLASS DECLARATION
  904.40 -/**
  904.41 -* @publishedAll
  904.42 -* @released
  904.43 -*
  904.44 -* Class provides functions for setting and getting parameters in SIP 
  904.45 -* "P-Associated-URI" header.
  904.46 -*
  904.47 -*  @lib sipcodec.lib
  904.48 -*/
  904.49 -class CSIPPAssociatedURIHeader : public CSIPAddressHeaderBase
  904.50 -	{
  904.51 -	public:	// Constructors and destructor
  904.52 -
  904.53 -		/**
  904.54 -		* Constructs a CSIPPAssociatedURIHeader from textual representation 
  904.55 -		* of the header's value part.
  904.56 -		* @param aValue a value part of a "P-Associated-URI"-header 
  904.57 -		*        (e.g. "User <user@host>;param=value")
  904.58 -		* @return an array containing one to many instances 
  904.59 -        *         of CSIPPAssociatedURIHeader   
  904.60 -		*/
  904.61 -		IMPORT_C static RPointerArray<CSIPPAssociatedURIHeader> 
  904.62 -			DecodeL(const TDesC8& aValue);
  904.63 -
  904.64 -		/**
  904.65 -		* Creates a new instance of CSIPPAssociatedURIHeader
  904.66 -		* @pre aSIPAddress != 0
  904.67 -		* @param aSIPAddress a name-address, the ownership is transferred.
  904.68 -		* @return a new instance of CSIPPAssociatedURIHeader
  904.69 -		*/
  904.70 -		IMPORT_C static CSIPPAssociatedURIHeader* 
  904.71 -            NewL(CSIPAddress* aSIPAddress);
  904.72 -
  904.73 -		/**
  904.74 -		* Creates a new instance of CSIPPAssociatedURIHeader and 
  904.75 -        * puts it to CleanupStack
  904.76 -		* @pre aSIPAddress != 0
  904.77 -		* @param aSIPAddress a name-address, the ownership is transferred,
  904.78 -		* @return a new instance of CSIPPAssociatedURIHeader
  904.79 -		*/
  904.80 -		IMPORT_C static CSIPPAssociatedURIHeader* 
  904.81 -            NewLC(CSIPAddress* aSIPAddress);
  904.82 -
  904.83 -		/**
  904.84 -		* Destructor, deletes the resources of CSIPPAssociatedURIHeader.
  904.85 -		*/
  904.86 -		IMPORT_C virtual ~CSIPPAssociatedURIHeader();
  904.87 -
  904.88 -
  904.89 -	public: // New functions
  904.90 -
  904.91 -        /**
  904.92 -		* Constructs an instance of a CSIPPAssociatedURIHeader from 
  904.93 -        * a RReadStream
  904.94 -		* @param aReadStream a stream containing the value of the
  904.95 -		*        externalized object (header name not included). 
  904.96 -		* @return an instance of a CSIPPAssociatedURIHeader
  904.97 -		*/
  904.98 -		IMPORT_C static CSIPHeaderBase* 
  904.99 -            InternalizeValueL(RReadStream& aReadStream);
 904.100 -
 904.101 -	public: // From CSIPHeaderBase
 904.102 -
 904.103 -		/**
 904.104 -		* From CSIPHeaderBase CloneL
 904.105 -		*/
 904.106 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 904.107 -
 904.108 -		/**
 904.109 -		* From CSIPHeaderBase Name
 904.110 -		*/
 904.111 -		IMPORT_C RStringF Name() const;
 904.112 -
 904.113 -	public: // From CSIPHeaderBase, for internal use
 904.114 -
 904.115 -        /**
 904.116 -        * @internalComponent
 904.117 -        */
 904.118 -		TPreferredPlace PreferredPlaceInMessage() const;
 904.119 -        
 904.120 -        /**
 904.121 -        * @internalComponent
 904.122 -        */        
 904.123 -        TBool MoreThanOneAllowed() const;
 904.124 -
 904.125 -	public: // New functions, for internal use
 904.126 -
 904.127 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 904.128 -
 904.129 -	private: // Constructors
 904.130 -
 904.131 -		CSIPPAssociatedURIHeader();
 904.132 -
 904.133 -    private: // For testing purposes
 904.134 -
 904.135 -        UNIT_TEST(CSIPPAssociatedURIHeaderTest)
 904.136 -	};
 904.137 -
 904.138 -#endif // end of CSIPPASSOCIATEDURIHEADER_H
 904.139 -
 904.140 -// End of File
   905.1 --- a/epoc32/include/sipprofile.h	Tue Mar 16 16:12:26 2010 +0000
   905.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   905.3 @@ -1,374 +0,0 @@
   905.4 -/*
   905.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   905.6 -* All rights reserved.
   905.7 -* This component and the accompanying materials are made available
   905.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   905.9 -* which accompanies this distribution, and is available
  905.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  905.11 -*
  905.12 -* Initial Contributors:
  905.13 -* Nokia Corporation - initial contribution.
  905.14 -*
  905.15 -* Contributors:
  905.16 -*
  905.17 -* Description:
  905.18 -* Name        : sipprofile.h
  905.19 -* Part of     : SIP Profile Client
  905.20 -* Interface   : SDK API, SIP Profile API
  905.21 -* The class providing profile data of SIP service provider
  905.22 -* Version     : 1.0
  905.23 -*
  905.24 -*/
  905.25 -
  905.26 -
  905.27 -
  905.28 -#ifndef CSIPPROFILE_H
  905.29 -#define CSIPPROFILE_H
  905.30 -
  905.31 -//  INCLUDES
  905.32 -#include <e32base.h>
  905.33 -#include <e32std.h>
  905.34 -#include <badesca.h>
  905.35 -#include "sipregistrationcontext.h"
  905.36 -#include "sipprofiletypeinfo.h"
  905.37 -
  905.38 -// FORWARD DECLARATIONS
  905.39 -class CSIPConcreteProfile;
  905.40 -class CSIPProfileRegistry;
  905.41 -class CSIPProfileRegistryBase;
  905.42 -
  905.43 -/** 
  905.44 -* SIP Profile ID which value is type of TUint32
  905.45 -*/
  905.46 -const TUint32 KSIPProfileId = 1;
  905.47 -
  905.48 -/** 
  905.49 -* SIP Provider Name which value is type of TDesC8
  905.50 -*/
  905.51 -const TUint32 KSIPProviderName = 2;
  905.52 -
  905.53 -/** 
  905.54 -* Access Point ID which value is type of TUint32
  905.55 -*/
  905.56 -const TUint32 KSIPAccessPointId = 3;
  905.57 -
  905.58 -/** 
  905.59 -* Signaling compression (SigComp) which value is type of TBool. 
  905.60 -* ETrue indicates that SigComp is enabled
  905.61 -*/
  905.62 -const TUint32 KSIPSigComp = 4;
  905.63 -
  905.64 -/** 
  905.65 -* Security Negotiation which value is type of TBool. ETrue indicates that
  905.66 -* Security Negotiation is enabled
  905.67 -*/
  905.68 -const TUint32 KSIPSecurityNegotiation = 5;
  905.69 -
  905.70 -/** 
  905.71 -* Auto Registration which value is type of TBool. ETrue indicates that 
  905.72 -* profile is enabled for auto registration
  905.73 -*/
  905.74 -const TUint32 KSIPAutoRegistration = 6;
  905.75 -
  905.76 -/** 
  905.77 -* Defined user's address-of-record which value is type of TDesC8 
  905.78 -*/
  905.79 -const TUint32 KSIPUserAor = 7;
  905.80 -
  905.81 -/** 
  905.82 -* Registration which value is type of TBool. ETrue indicates that
  905.83 -* profile is registered 
  905.84 -*/
  905.85 -const TUint32 KSIPProfileRegistered = 8;
  905.86 -
  905.87 -/** 
  905.88 -* Users's registered address-of-records which value is of type MDesC8Array.
  905.89 -* Note that array will contain AORs only in case the profile is registered.
  905.90 -*/
  905.91 -const TUint32 KSIPRegisteredAors = 9;
  905.92 -
  905.93 -/** 
  905.94 -* Negotiated security mechanism during registration procedure which value
  905.95 -* is of type TDesC8.
  905.96 -* Note that descriptor will contain value only in case the profile is 
  905.97 -* registered.
  905.98 -*/
  905.99 -const TUint32 KSIPNegotiatedSecurityMechanism = 10;
 905.100 -
 905.101 -/** 
 905.102 -* Default profile which value is type of TBool. 
 905.103 -* ETrue indicates that profile is default  
 905.104 -*/
 905.105 -const TUint32 KSIPDefaultProfile = 11;
 905.106 -
 905.107 -/** 
 905.108 -* "Contact" header parameters used during registration which value
 905.109 -* is of type MDesC8Array. Each array element contains one "Contact"-header
 905.110 -* parameter.
 905.111 -*/
 905.112 -const TUint32 KSIPContactHeaderParams = 12;
 905.113 -
 905.114 -/** 
 905.115 -* The user's registered "Contact"-header including the whole value of the header
 905.116 -* except for the header's name ("Contact:"). 
 905.117 -* The value is of type TDesC8.
 905.118 -* Note that the value is available only in case the profile is registered.
 905.119 -*/
 905.120 -const TUint32 KSIPRegisteredContact = 13;
 905.121 -
 905.122 -/** 
 905.123 -* SNAP (Service Network Access Point) ID which value is type of TUint32.
 905.124 -* This is an optional parameter. When this parameter is configured, 
 905.125 -* KSIPAccessPointId has a meaningful value only when the profile is registered.
 905.126 -* The value of KSIPSnapId must be greater than zero.
 905.127 -*/
 905.128 -const TUint32 KSIPSnapId = 14;
 905.129 -
 905.130 -/** 
 905.131 -* A unique Contact-header's user-part 
 905.132 -* generated automatically by the SIP implementation.
 905.133 -* The value is of type TDesC8.
 905.134 -* This parameter is read-only and 
 905.135 -* trying to set it will fail with KErrAccessDenied.
 905.136 -*/
 905.137 -const TUint32 KSIPContactHeaderUser = 15;
 905.138 -
 905.139 -/** 
 905.140 -* Sets the KSoIpTOS socket option (see in_sock.h) for 
 905.141 -* all SIP signalling related to this profile.
 905.142 -* The value is of type TUint32.
 905.143 -*/
 905.144 -const TUint32 KSIPSoIpTOS = 16;
 905.145 -
 905.146 -/**
 905.147 -* Sets the Access Point Name.
 905.148 -* This is an Optional Parameter. 
 905.149 -* Access Point Name which value is type of TDesC8,
 905.150 -*/
 905.151 -const TUint32 KSIPAccessPointName = 17;
 905.152 -
 905.153 -/**
 905.154 - * Sets the SNAP Name.
 905.155 - * This is an Optional Parameter. 
 905.156 - * SNAP Name which value is type of TDesC8,
 905.157 -*/
 905.158 -const TUint32 KSIPSnapName = 18;
 905.159 -
 905.160 -/** 
 905.161 -* SIP Registrar  
 905.162 -*/
 905.163 -const TUint32 KSIPRegistrar = 130;
 905.164 -
 905.165 -/** 
 905.166 -* SIP Outbound Proxy
 905.167 -*/
 905.168 -const TUint32 KSIPOutboundProxy = 131;
 905.169 -
 905.170 -/** 
 905.171 -* HTTP Digest user name which value is type of TDesC8 
 905.172 -*/
 905.173 -const TUint32 KSIPDigestUserName = 150;
 905.174 -
 905.175 -/** 
 905.176 -* HTTP Digest realm which value is type of TDesC8
 905.177 -*/
 905.178 -const TUint32 KSIPDigestRealm = 151;
 905.179 -
 905.180 -/** 
 905.181 -* SIP server's address which value is of type TDesC8
 905.182 -*/
 905.183 -const TUint32 KSIPServerAddress = 152;
 905.184 -
 905.185 -// CLASS DECLARATION
 905.186 -/**
 905.187 -* @publishedAll
 905.188 -* @released
 905.189 -*
 905.190 -* Class contains profile information of particular SIP service
 905.191 -* provider. Class provides functions for quering profile parameter
 905.192 -* values.
 905.193 -*  @lib sipprofilecli.lib
 905.194 -*/
 905.195 -class CSIPProfile: public CBase, public MSIPRegistrationContext
 905.196 -    {    
 905.197 -    public:  // Constructors and destructor
 905.198 -        /**
 905.199 -        * Destructor.
 905.200 -        * @capability NetworkServices
 905.201 -        */
 905.202 -        IMPORT_C ~CSIPProfile();
 905.203 -
 905.204 -    public: // New functions
 905.205 -        /**
 905.206 -        * Gets profile type information
 905.207 -        * @return profile type information
 905.208 -        */
 905.209 -        IMPORT_C const TSIPProfileTypeInfo& Type() const;
 905.210 -
 905.211 -        /** 
 905.212 -        * Gets profile parameter
 905.213 -        * @param aParam a parameter to get
 905.214 -        * @param aVal on return will contain parameter value
 905.215 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 905.216 -        */
 905.217 -        IMPORT_C TInt GetParameter(TUint32 aParam, TDesC8 const *& aVal) const; 
 905.218 -
 905.219 -        /** 
 905.220 -        * Gets profile parameter
 905.221 -        * @param aParam a parameter to get
 905.222 -        * @param aVal on return will contain parameter value
 905.223 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 905.224 -        */
 905.225 -        IMPORT_C TInt GetParameter(TUint32 aParam, TUint32& aVal) const;
 905.226 -
 905.227 -        /** 
 905.228 -        * Gets profile parameter
 905.229 -        * @param aParam a parameter to get
 905.230 -        * @param aVal on return will contain parameter value
 905.231 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 905.232 -        */
 905.233 -        IMPORT_C TInt GetParameter(TUint32 aParam, TBool& aVal) const;
 905.234 -
 905.235 -        /** 
 905.236 -        * Gets profile parameter
 905.237 -        * @param aParam a parameter to get
 905.238 -        * @param aVal on return will contain parameter value
 905.239 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 905.240 -        */
 905.241 -        IMPORT_C TInt GetParameter(TUint32 aParam, MDesC8Array const *& aVal) const;
 905.242 -
 905.243 -        /** 
 905.244 -        * Gets profile parameter that is defined for a particular SIP server
 905.245 -        * @param aServer a SIP server type
 905.246 -        * @param aParam a parameter to get
 905.247 -        * @param aVal on return will contain parameter value
 905.248 -        * @return KErrNotFound if parameter was not found, KErrNone otherwise
 905.249 -        */
 905.250 -        IMPORT_C TInt GetParameter(TUint32 aServerType, TUint32 aParam, TDesC8 const *& aVal) const;
 905.251 -
 905.252 -    public: //Functions from base class
 905.253 -        /**
 905.254 -        * Tests if the registration context can be
 905.255 -        * used for creating SIP messages/dialogs
 905.256 -        * Profile can be used, when CSIPProfileRegistry::IsEnabled() == ETrue
 905.257 -        * and Status() == ERegistered.
 905.258 -        * @return ETrue if can be used, EFalse otherwise
 905.259 -        * @internalComponent       
 905.260 -        */
 905.261 -        TBool IsContextActive() const;
 905.262 -
 905.263 -        /**
 905.264 -        * 
 905.265 -        * For internal use only
 905.266 -        * @return context id
 905.267 -        * @internalComponent        
 905.268 -        */
 905.269 -        TUint32 ContextId() const;
 905.270 -        
 905.271 -
 905.272 -    public: //New functions
 905.273 -
 905.274 -        /**
 905.275 -        * Two-phased constructor.
 905.276 -        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 905.277 -        *         profile server.
 905.278 -        */
 905.279 -
 905.280 -        static CSIPProfile* NewL(CSIPProfileRegistry* aSIPRegistry);
 905.281 -
 905.282 -        /**
 905.283 -        * Two-phased constructor.
 905.284 -        * @param aSIPRegistry a SIP profile client providing connection to SIP 
 905.285 -        *         profile server.
 905.286 -        * Constructs an object and adds the pointer to the cleanup stack;
 905.287 -        */
 905.288 -
 905.289 -        static CSIPProfile* NewLC(CSIPProfileRegistry* aSIPRegistry);
 905.290 -
 905.291 -        /**
 905.292 -        * Sets profiles enabled state
 905.293 -        * @param aEnabled ETrue if enabled
 905.294 -        */
 905.295 -
 905.296 -        void SetEnabled(TBool aEnabled);
 905.297 -
 905.298 -        /**
 905.299 -        * Sets concrete profile that holds actual data 
 905.300 -        * @param aProfile profile instance containing data
 905.301 -        */
 905.302 -
 905.303 -        void SetConcreteProfile(CSIPConcreteProfile* aProfile);
 905.304 -
 905.305 -        /**
 905.306 -        * Clears concrete profile that holds actual data 
 905.307 -        */
 905.308 -
 905.309 -        void ClearConcreteProfile();
 905.310 -
 905.311 -        /**
 905.312 -        * Gets concrete profile that holds actual data
 905.313 -        * @return concrete profile holding data
 905.314 -        */
 905.315 -
 905.316 -        CSIPConcreteProfile& ConcreteProfile();
 905.317 -
 905.318 -        /**
 905.319 -        * Gets concrete profile that holds actual data
 905.320 -        * @return concrete profile holding data
 905.321 -        */
 905.322 -
 905.323 -        const CSIPConcreteProfile& ConcreteProfile() const;
 905.324 -
 905.325 -        /**
 905.326 -        * Checks if the profile is enabled
 905.327 -        * @return ETrue if enabled, EFalse otherwise
 905.328 -        */
 905.329 -
 905.330 -        TBool IsEnabled() const;
 905.331 -
 905.332 -        /**
 905.333 -        * Gets last occurred error during registration
 905.334 -        * @return last occurred error code, KErrNone if no error
 905.335 -        */
 905.336 -        TInt LastRegistrationError() const;
 905.337 -
 905.338 -        /**
 905.339 -        * sets pointer to registry for profile
 905.340 -        */
 905.341 -        void SetRegistry(CSIPProfileRegistryBase* aRegistry);
 905.342 -        
 905.343 -        /**
 905.344 -        * Clears pointer to registry from profile
 905.345 -        */
 905.346 -        void ClearRegistry();
 905.347 -        
 905.348 -    protected:
 905.349 -
 905.350 -        /**
 905.351 -        * Constructor. 
 905.352 -        */                
 905.353 -        CSIPProfile(CSIPProfileRegistryBase* aRegistry);
 905.354 -        
 905.355 -        /**
 905.356 -        * 2nd phase constructor. 
 905.357 -        */                
 905.358 -        void ConstructL();
 905.359 -
 905.360 -    protected:
 905.361 -    
 905.362 -        /**
 905.363 -        * @internalComponent
 905.364 -        */    
 905.365 -        CSIPConcreteProfile* iSIPProfile;
 905.366 -        
 905.367 -        /**
 905.368 -        * @internalComponent
 905.369 -        */        
 905.370 -        CSIPProfileRegistryBase* iSIPProfileRegistry;
 905.371 -
 905.372 -    private:
 905.373 -    
 905.374 -        TBool iEnabled;
 905.375 -    };
 905.376 -
 905.377 -#endif // CSIPPROFILE_H
   906.1 --- a/epoc32/include/sipprofilealrcontroller.h	Tue Mar 16 16:12:26 2010 +0000
   906.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   906.3 @@ -1,132 +0,0 @@
   906.4 -/*
   906.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   906.6 -* All rights reserved.
   906.7 -* This component and the accompanying materials are made available
   906.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   906.9 -* which accompanies this distribution, and is available
  906.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  906.11 -*
  906.12 -* Initial Contributors:
  906.13 -* Nokia Corporation - initial contribution.
  906.14 -*
  906.15 -* Contributors:
  906.16 -*
  906.17 -* Description:
  906.18 -* Name          : sipprofilealrcontroller.h
  906.19 -* Part of       : SIP / SIP Profile Agent
  906.20 -* Version       : SIP/6.0 
  906.21 -*
  906.22 -*/
  906.23 -
  906.24 -
  906.25 -
  906.26 -#ifndef CSIPPROFILEALRCONTROLLER_H
  906.27 -#define CSIPPROFILEALRCONTROLLER_H
  906.28 -
  906.29 -// INCLUDES
  906.30 -#include <e32base.h>
  906.31 -
  906.32 -// FORWARD DECLARATIONS
  906.33 -class CSIPProfileRegistryBase;
  906.34 -class MSipProfileAlrObserver;
  906.35 -
  906.36 -// CLASS DECLARATION
  906.37 -/**
  906.38 -*  @publishedAll
  906.39 -*  @released
  906.40 -*
  906.41 -*  This class provides functions to control 
  906.42 -*  ALR (Application Level Roaming) for SIP profiles that have 
  906.43 -*  a SNAP (Service Network Access Point) ID configured. 
  906.44 -*  By default the clients allow automatic roaming between 
  906.45 -*  IAPs (Internet Access Point) for a SIP profile. 
  906.46 -*  The clients wanting to control the roaming must instantiate this class.
  906.47 -*  After that all the IAP availability events received through 
  906.48 -*  MSipProfileAlrObserver::AlrEvent must be allowed or disallowed.
  906.49 -*
  906.50 -*  @lib sipprofilecli.lib
  906.51 -*/
  906.52 -class CSipProfileAlrController : public CBase
  906.53 -    {
  906.54 -    public: // Constructors and destructor
  906.55 -    
  906.56 -        /**
  906.57 -        * Two-phased constructor.
  906.58 -        * @param aRegistry a SIP profile registry instance.
  906.59 -        * @param aObserver a observer for IAP migration events.
  906.60 -        */
  906.61 -        IMPORT_C static CSipProfileAlrController* NewL(
  906.62 -            CSIPProfileRegistryBase& aRegistry,
  906.63 -            MSipProfileAlrObserver& aObserver );
  906.64 -
  906.65 -        /**
  906.66 -        * Two-phased constructor.
  906.67 -        * Constructs an object and adds the pointer to the cleanup stack.
  906.68 -        * @param aRegistry a SIP profile registry instance.
  906.69 -        * @param aObserver a observer for IAP migration events.
  906.70 -        */
  906.71 -        IMPORT_C static CSipProfileAlrController* NewLC(
  906.72 -            CSIPProfileRegistryBase& aRegistry,
  906.73 -            MSipProfileAlrObserver& aObserver );   
  906.74 -    
  906.75 -        /**
  906.76 -        * Destructor.
  906.77 -        */
  906.78 -        ~CSipProfileAlrController();
  906.79 -
  906.80 -    public: // New functions
  906.81 -
  906.82 -        /**
  906.83 -        * Allows SIP Profile Agent to start the migration 
  906.84 -        * to a new IAP for the profile.
  906.85 -        * If also all the other clients allow the migration,
  906.86 -        * migration will be started and all the clients are informed
  906.87 -        * with MSipProfileAlrObserver::AlrEvent(EMigrationStarted,...).
  906.88 -        * When MSipProfileAlrObserver::AlrEvent(EMigrationCompleted,...)
  906.89 -        * gets called the migration has been completed and
  906.90 -        * the related SIP profile has been registered via the new IAP. 
  906.91 -        * @param aProfileId the SIP profile id
  906.92 -        * @param aIapId the new IAP id. 
  906.93 -        */
  906.94 -        IMPORT_C void AllowMigrationL( TUint32 aProfileId,
  906.95 -                                       TUint32 aIapId );
  906.96 -
  906.97 -        /**
  906.98 -        * Disallows SIP Profile Agent to migrate 
  906.99 -        * to a new IAP for the profile.
 906.100 -        * After the client calls this function all the clients are informed
 906.101 -        * with MSipProfileAlrObserver::AlrError(...).
 906.102 -        * @param aProfileId the SIP profile id
 906.103 -        * @param aIapId the new IAP id. 
 906.104 -        */
 906.105 -        IMPORT_C void DisallowMigrationL( TUint32 aProfileId,
 906.106 -                                          TUint32 aIapId );
 906.107 -                                          
 906.108 -        /**
 906.109 -        * Refreshes the list of available IAPs for 
 906.110 -        * the SNAP configured for the profile.
 906.111 -        * If a new better IAP is available, it is offered via
 906.112 -        * MSipProfileAlrObserver::AlrEvent(EIapAvailable,...).
 906.113 -        * This function should be called if migration 
 906.114 -        * to a IAP has been previously disallowed and the client wants to 
 906.115 -        * check whether the better IAP is still available.
 906.116 -        * @param aProfileId the SIP profile id 
 906.117 -        */
 906.118 -        IMPORT_C void RefreshIapAvailabilityL( TUint32 aProfileId ); 
 906.119 -
 906.120 -
 906.121 -    private: // Constructors:
 906.122 -
 906.123 -        CSipProfileAlrController( CSIPProfileRegistryBase& aRegistry );        
 906.124 -        void ConstructL( MSipProfileAlrObserver& aObserver );
 906.125 -        
 906.126 -    private: // Data
 906.127 -    
 906.128 -    	CSIPProfileRegistryBase& iRegistry;
 906.129 -    
 906.130 -    private: // For testing purposes	
 906.131 -
 906.132 -	    friend class CSIPProfileAlrControllerTest;        
 906.133 -    };
 906.134 -
 906.135 -#endif // CSIPPROFILEALRCONTROLLER_H
   907.1 --- a/epoc32/include/sipprofilealrobserver.h	Tue Mar 16 16:12:26 2010 +0000
   907.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   907.3 @@ -1,87 +0,0 @@
   907.4 -/*
   907.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   907.6 -* All rights reserved.
   907.7 -* This component and the accompanying materials are made available
   907.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   907.9 -* which accompanies this distribution, and is available
  907.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  907.11 -*
  907.12 -* Initial Contributors:
  907.13 -* Nokia Corporation - initial contribution.
  907.14 -*
  907.15 -* Contributors:
  907.16 -*
  907.17 -* Description:
  907.18 -* Name          : sipprofilealrobserver.h
  907.19 -* Part of       : SIP / SIP Profile Agent
  907.20 -* Version       : SIP/6.0 
  907.21 -*
  907.22 -*/
  907.23 -
  907.24 -
  907.25 -
  907.26 -#ifndef MSIPPROFILEALROBSERVER_H
  907.27 -#define MSIPPROFILEALROBSERVER_H
  907.28 -
  907.29 -// INCLUDES
  907.30 -#include <e32std.h>
  907.31 -
  907.32 -// CLASS DECLARATION
  907.33 -/**
  907.34 -* @publishedAll
  907.35 -* @released
  907.36 -*
  907.37 -* Callback to receive notifications about ALR (Application Level Roaming) 
  907.38 -* related events and errors.
  907.39 -*/
  907.40 -class MSipProfileAlrObserver
  907.41 -    {
  907.42 -    public:
  907.43 -    
  907.44 -        /** SIP Profile ALR events */
  907.45 -        enum TEvent
  907.46 -            {
  907.47 -             /** 
  907.48 -            * A new IAP became available.
  907.49 -            * When receiving this event the client must call 
  907.50 -            * CSipProfileAlrController::AllowMigrationL or DisallowMigrationL.
  907.51 -            */           
  907.52 -            EIapAvailable = 0,
  907.53 -            /** 
  907.54 -            * All the clients have allowed the migration to the new IAP and
  907.55 -            * the migration to the new IAP for the SIP profile has started. 
  907.56 -            */
  907.57 -            EMigrationStarted,
  907.58 -            /** 
  907.59 -            * Migration to a new IAP for a SIP profile has been completed and
  907.60 -            * the related SIP profile has been registered via the new IAP.
  907.61 -            */
  907.62 -            EMigrationCompleted
  907.63 -            };
  907.64 -                                   
  907.65 -        /**
  907.66 -        * ALR related event occurred.
  907.67 -        * @param aEvent the event that occurred
  907.68 -        * @param aProfileId identifies the SIP profile related to the event
  907.69 -        * @param aSnapId the SNAP related to the event
  907.70 -        * @param aIapId the IAP related to the event
  907.71 -        */
  907.72 -        virtual void AlrEvent( TEvent aEvent,
  907.73 -                               TUint32 aProfileId,
  907.74 -                               TUint32 aSnapId,
  907.75 -                               TUint32 aIapId ) = 0;
  907.76 -                               
  907.77 -        /**
  907.78 -        * ALR related error occurred.
  907.79 -        * @param aError the error that occurred
  907.80 -        * @param aProfileId identifies the SIP profile related to the error
  907.81 -        * @param aSnapId the SNAP related to the error
  907.82 -        * @param aIapId the IAP related to the error
  907.83 -        */
  907.84 -        virtual void AlrError( TInt aError,
  907.85 -                               TUint32 aProfileId,
  907.86 -                               TUint32 aSnapId,
  907.87 -                               TUint32 aIapId ) = 0;                                                                  
  907.88 -    };
  907.89 -
  907.90 -#endif // MSIPPROFILEALROBSERVER_H
   908.1 --- a/epoc32/include/sipprofileregistry.h	Tue Mar 16 16:12:26 2010 +0000
   908.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   908.3 @@ -1,180 +0,0 @@
   908.4 -/*
   908.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   908.6 -* All rights reserved.
   908.7 -* This component and the accompanying materials are made available
   908.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   908.9 -* which accompanies this distribution, and is available
  908.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  908.11 -*
  908.12 -* Initial Contributors:
  908.13 -* Nokia Corporation - initial contribution.
  908.14 -*
  908.15 -* Contributors:
  908.16 -*
  908.17 -* Description:
  908.18 -* Name        : sipprofileregistry.h
  908.19 -* Part of     : SIP Profile Client
  908.20 -* Interface   : SDK API, SIP Profile API
  908.21 -* The class for using SIP profiles
  908.22 -* Version     : 1.0
  908.23 -*
  908.24 -*/
  908.25 -
  908.26 -
  908.27 -
  908.28 -#ifndef CSIPPROFILEREGISTRY_H
  908.29 -#define CSIPPROFILEREGISTRY_H
  908.30 -
  908.31 -//  INCLUDES
  908.32 -#include <e32base.h>
  908.33 -#include <e32std.h>
  908.34 -#include <badesca.h>
  908.35 -#include "sipprofileregistrybase.h"
  908.36 -
  908.37 -// FORWARD DECLARATIONS
  908.38 -class CSIP;
  908.39 -class CSIPConnection;
  908.40 -class CSIPProfile;
  908.41 -class MSIPProfileRegistryObserver;
  908.42 -class MSIPConnectionObserver;
  908.43 -
  908.44 -
  908.45 -// CLASS DECLARATION
  908.46 -/**
  908.47 -*  @publishedAll
  908.48 -*  @released
  908.49 -*
  908.50 -*  The class for retrieving SIP profiles from permanent storage.
  908.51 -*  This class provides services for retreiving SIP profiles
  908.52 -*  and enabling/disabling them for the usage.
  908.53 -*
  908.54 -*  The user can create only one instance of this class (a singleton class).
  908.55 -*
  908.56 -*  @lib sipprofilecli.lib
  908.57 -*/
  908.58 -class CSIPProfileRegistry: public CSIPProfileRegistryBase
  908.59 -    {
  908.60 -    public:  // Constructors and destructor
  908.61 -        /**
  908.62 -        * Two-phased constructor.
  908.63 -        * This constructor should be used if the client intends
  908.64 -        * to use SIP services with profiles.
  908.65 -        * @param aSip a SIP client providing connection to SIP stack.
  908.66 -        * @param aObserver a observer for SIP profile change events.
  908.67 -        */
  908.68 -        IMPORT_C static CSIPProfileRegistry* NewL(
  908.69 -            CSIP& aSip,
  908.70 -            MSIPProfileRegistryObserver& aObserver);
  908.71 -
  908.72 -        /**
  908.73 -        * Two-phased constructor.
  908.74 -        * This constructor should be used if the client intends
  908.75 -        * to use SIP services with profiles.
  908.76 -        * Constructs an object and adds the pointer to the cleanup stack;
  908.77 -        * @param aSip a SIP client providing connection to SIP stack.
  908.78 -        * @param aObserver a observer for SIP profile change events.
  908.79 -        */
  908.80 -        IMPORT_C static CSIPProfileRegistry* NewLC(
  908.81 -            CSIP& aSip,
  908.82 -            MSIPProfileRegistryObserver& aObserver);
  908.83 -
  908.84 -        /**
  908.85 -        * Destructor
  908.86 -        */
  908.87 -        IMPORT_C ~CSIPProfileRegistry();
  908.88 -
  908.89 -    public: // New functions
  908.90 -        /**
  908.91 -        * Gets handle to the SIP server
  908.92 -        * @return handle to the SIP server
  908.93 -        */
  908.94 -        IMPORT_C CSIP& SIP() const;
  908.95 -
  908.96 -        /**
  908.97 -        * Gets the SIP connection to be used with this SIP profile.
  908.98 -        * @pre IsEnabled() == ETrue
  908.99 -        * @param aProfile a sip profile
 908.100 -        * @return a SIP connection to be used; the owneship is transfered
 908.101 -        * @leave KErrNoMemory if out of memory
 908.102 -        * @capability NetworkServices
 908.103 -        */
 908.104 -        IMPORT_C CSIPConnection* ConnectionL(
 908.105 -            CSIPProfile& aProfile);
 908.106 -
 908.107 -        /**
 908.108 -        * Enables the SIP profile for use.
 908.109 -        * Enabling the SIP profile will cause the SIP profile to
 908.110 -        * be registered if its status was unregistered.
 908.111 -        * The user must check the profile status after calling this
 908.112 -        * function. In case the profile is not registered the user must
 908.113 -        * wait until the it is notified about profile registration 
 908.114 -        * on MSIPProfileRegistryObserver-callback interface.
 908.115 -        * @param aProfile a sip profile to enable
 908.116 -        * @param aObserver a observer for SIP connection events
 908.117 -        * @leave KErrNotFound if non-existing profile is provided
 908.118 -        * @capability NetworkServices
 908.119 -        */
 908.120 -        IMPORT_C void EnableL(
 908.121 -            CSIPProfile& aProfile,
 908.122 -            MSIPConnectionObserver &aObserver);
 908.123 -        
 908.124 -        /**
 908.125 -        * Disables the usage of SIP profile
 908.126 -        * @param aProfile a sip profile to disable
 908.127 -        * @return KErrNone if SIP profile was successfully disabled; 
 908.128 -        *         system wide error otherwise
 908.129 -        * @capability NetworkServices
 908.130 -        */
 908.131 -        IMPORT_C TInt Disable(CSIPProfile& aProfile);
 908.132 -
 908.133 -        /**
 908.134 -        * Tests is the SIP profile enabled for the use
 908.135 -        * @param aProfile a SIP profile to be checked
 908.136 -        * @return ETrue if SIP profile is enabled; EFalse otherwise
 908.137 -        */
 908.138 -        IMPORT_C TBool IsEnabled(const CSIPProfile& aProfile) const;
 908.139 -        
 908.140 -        /**
 908.141 -        * Force disables the usage of SIP profile
 908.142 -        * All Profile related activities will be stopped ungracefully
 908.143 -        * @param aProfile a sip profile to disable
 908.144 -        * @return KErrNone if SIP profile was successfully disabled; 
 908.145 -        *         system wide error otherwise
 908.146 -        * @capability NetworkControl
 908.147 -        */
 908.148 -        IMPORT_C TInt ForceDisable(CSIPProfile& aProfile);
 908.149 -        
 908.150 -        /**
 908.151 -        * Refreshes the Enabled SIP profile for use.
 908.152 -        * Refreshing the Enabled Profile will cause the SIP Profile to
 908.153 -        * get Registered if its status was not registered. 
 908.154 -        * This function has to be used when the profile is in Enabled state and 
 908.155 -        * might be unregistered due to a connection loss.
 908.156 -        * @param aProfile a sip profile to enable
 908.157 -        * @leave KErrNotFound if non-existing profile is provided
 908.158 -        * @leave KErrArgument if the profile is not previously Enabled and in Unregistered state.
 908.159 -        * @capability NetworkServices
 908.160 -        */
 908.161 -        
 908.162 -        IMPORT_C void RefreshEnableL(CSIPProfile& aProfile);
 908.163 -
 908.164 -    public: 
 908.165 -
 908.166 -        /**
 908.167 -        * @internalComponent
 908.168 -        */
 908.169 -        CSIPProfile* NewInstanceL();
 908.170 -    
 908.171 -    private:
 908.172 -        
 908.173 -        CSIPProfileRegistry();
 908.174 -        CSIPProfileRegistry(CSIP& aSip, MSIPProfileRegistryObserver& aObserver);
 908.175 -        void ConstructL();
 908.176 -        
 908.177 -    private: 
 908.178 -
 908.179 -        CSIP& iSip;
 908.180 -        MSIPConnectionObserver* iConnectionObserver;
 908.181 -    };
 908.182 -
 908.183 -#endif // CSIPPROFILEREGISTRY_H
   909.1 --- a/epoc32/include/sipprofileregistrybase.h	Tue Mar 16 16:12:26 2010 +0000
   909.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   909.3 @@ -1,422 +0,0 @@
   909.4 -/*
   909.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   909.6 -* All rights reserved.
   909.7 -* This component and the accompanying materials are made available
   909.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   909.9 -* which accompanies this distribution, and is available
  909.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  909.11 -*
  909.12 -* Initial Contributors:
  909.13 -* Nokia Corporation - initial contribution.
  909.14 -*
  909.15 -* Contributors:
  909.16 -*
  909.17 -* Description:
  909.18 -* Name        : sipprofileregistrybase.h
  909.19 -* Part of     : SIP Profile Client
  909.20 -* Interface   : SDK API, SIP Profile API
  909.21 -* The class for retrieving SIP profiles from permanent storage.
  909.22 -* Version     : 1.0
  909.23 -*
  909.24 -*/
  909.25 -
  909.26 -
  909.27 -
  909.28 -#ifndef CSIPPROFILEREGISTRYBASE_H
  909.29 -#define CSIPPROFILEREGISTRYBASE_H
  909.30 -
  909.31 -//  INCLUDES
  909.32 -#include <e32base.h>
  909.33 -#include <badesca.h>
  909.34 -#include "sipconcreteprofileobserver.h"
  909.35 -
  909.36 -// FORWARD DECLARATIONS
  909.37 -class CSIPProfile;
  909.38 -class CSIPConcreteProfile;
  909.39 -class TSIPProfileTypeInfo;
  909.40 -class CSIPProfileCleanupItem;
  909.41 -class CSIPProfileItem;
  909.42 -class CSIPProfileITCReceiver;
  909.43 -class CSIPProfileITC;
  909.44 -class CSIPProfilePlugins;
  909.45 -class MSIPProfileRegistryObserver;
  909.46 -class RSIPProfile;
  909.47 -class CSIPConcreteProfileHolder;
  909.48 -
  909.49 -// CLASS DECLARATION
  909.50 -/**
  909.51 -* @publishedAll
  909.52 -* @released
  909.53 -*
  909.54 -* The class functions for retrieving SIP profiles from permanent storage.
  909.55 -* It enables retrieval of single or more profiles from permanent
  909.56 -* storage located in profile server.
  909.57 -*  
  909.58 -* The class enables also the query of supported profile types.
  909.59 -*
  909.60 -* This class is an abstract class and cannot be instantiated.
  909.61 -*
  909.62 -* @lib sipprofilecli.lib
  909.63 -*/
  909.64 -class CSIPProfileRegistryBase: public CBase, public MSIPConcreteProfileObserver
  909.65 -    {
  909.66 -    public:  // Constructors and destructor
  909.67 -
  909.68 -        IMPORT_C ~CSIPProfileRegistryBase();
  909.69 -
  909.70 -    public: //new functions
  909.71 -        /**
  909.72 -        * Gets all SIP profiles
  909.73 -        * @pre aProfiles.Count() == 0
  909.74 -        * @param aProfiles a reference to a client-owned array, which
  909.75 -        *        on return is filled with all existing SIP profiles
  909.76 -        * @leave KErrNoMemory if out of memory
  909.77 -        * @capability ReadUserData
  909.78 -        */
  909.79 -        IMPORT_C void ProfilesL(RPointerArray<CSIPProfile>& aProfiles);
  909.80 -
  909.81 -        /**
  909.82 -        * Gets all SIP profiles of particular type
  909.83 -        * The owneship of profiles are transferred.
  909.84 -        * @pre aProfiles.Count() == 0
  909.85 -        * @param aType a SIP profile type that is used for a query
  909.86 -        * @param aProfiles a reference to a client-owned array, which
  909.87 -        *        on return is filled with profiles of the given type.
  909.88 -        * @leave KErrNoMemory if out of memory
  909.89 -        * @capability ReadUserData
  909.90 -        */        
  909.91 -        IMPORT_C void ProfilesL(
  909.92 -                     const TSIPProfileTypeInfo& aType,
  909.93 -                     RPointerArray<CSIPProfile>& aProfiles);
  909.94 -
  909.95 -        /**
  909.96 -        * Gets SIP profile for a particular SIP AOR
  909.97 -        * The owneship of profiles are transferred.
  909.98 -        * @pre aProfiles.Count() == 0
  909.99 -        * @param aAOR a SIP AOR e.g. user@domain.com
 909.100 -        * @param aProfiles a reference to a client-owned array, which
 909.101 -        *        on return is filled with profiles of the given type.
 909.102 -        * @leave KErrNoMemory if out memory
 909.103 -        * @capability ReadUserData
 909.104 -        */
 909.105 -        IMPORT_C void ProfilesL(
 909.106 -                     const TDesC8& aAOR,
 909.107 -                     RPointerArray<CSIPProfile>& aProfiles);
 909.108 -
 909.109 -        /**
 909.110 -        * Gets SIP profile identified by the Id
 909.111 -        * The owneship of profile is transferred.
 909.112 -        * @param aId a SIP profile Id
 909.113 -        * @return SIP profile 
 909.114 -        * @leave KErrNotFound if profile is not found
 909.115 -        * @capability ReadUserData
 909.116 -        */
 909.117 -        IMPORT_C CSIPProfile* ProfileL(TUint32 aId);
 909.118 -
 909.119 -        /**
 909.120 -        * Gets the default profile
 909.121 -        * @return default profile; the owneship is transfered
 909.122 -        * @leave KErrNotFound if profile not found
 909.123 -        * @leave KErrNoMemory if out of memory
 909.124 -        * @capability ReadUserData
 909.125 -        */
 909.126 -        IMPORT_C CSIPProfile* DefaultProfileL();
 909.127 -
 909.128 -        /**
 909.129 -        * Gets supported profile types
 909.130 -        * The owneship of returned objects are transferred.
 909.131 -        * @pre aSupportedProfileTypes.Count() == 0
 909.132 -        * @param aSupportedProfileTypes a reference to  client-owned array,
 909.133 -        *        which on return is filled with supported profile types.
 909.134 -        *         Any existing data in the array is destroyed.
 909.135 -        * @leave KErrNoMemory if out of memory
 909.136 -        */
 909.137 -        IMPORT_C void SupportedProfileTypesL(
 909.138 -                    RArray<TSIPProfileTypeInfo>& aSupportedProfileTypes);
 909.139 -
 909.140 -        /**
 909.141 -        * Gets the last occurred error during registration
 909.142 -        * @param aProfile 
 909.143 -        * @return last occurred registration error, KErrNone if no error
 909.144 -        */
 909.145 -        IMPORT_C TInt LastRegistrationError(const CSIPProfile& aProfile) const;
 909.146 -
 909.147 -    public:
 909.148 -
 909.149 -        /**
 909.150 -        * Enable profile
 909.151 -        * @param aProfile to be enabled
 909.152 -        * @internalComponent        
 909.153 -        */
 909.154 -        void EnableProfileL(CSIPProfile& aProfile);
 909.155 -        
 909.156 -        /**
 909.157 -        * Gets count of clients that have a profile enabled
 909.158 -        * @param aProfile profile to be checked
 909.159 -        * @return number of clients that have the profile enabled
 909.160 -        * @internalComponent
 909.161 -        */
 909.162 -        TInt UsageL(const CSIPProfile& aProfile) const;
 909.163 -
 909.164 -        /**
 909.165 -        * Disable profile
 909.166 -        * @param aProfile to be disabled
 909.167 -        * @internalComponent
 909.168 -        */
 909.169 -        void DisableProfileL(CSIPProfile& aProfile);
 909.170 -        
 909.171 -        /**
 909.172 -        * Force disable profile
 909.173 -    	* All Profile related activities will be stopped ungracefully
 909.174 -        * @param aProfile to be disabled
 909.175 -        * @internalComponent
 909.176 -        */
 909.177 -        void ForceDisableProfileL(CSIPProfile& aProfile);
 909.178 -
 909.179 -        /**
 909.180 -        * Add profile
 909.181 -        * @param aProfile to be added
 909.182 -        * @internalComponent
 909.183 -        */
 909.184 -        void AddProfileL(CSIPProfile& aProfile);
 909.185 -
 909.186 -        /**
 909.187 -        * Update profile
 909.188 -        * @param aProfile to be updated
 909.189 -        * @internalComponent
 909.190 -        */
 909.191 -        void UpdateProfileL(CSIPProfile& aProfile);
 909.192 -
 909.193 -        /**
 909.194 -        * Remove profile
 909.195 -        * @pre UsageL(aProfile) == 0
 909.196 -        * @param aProfile to be removed
 909.197 -        * @internalComponent
 909.198 -        */
 909.199 -        void RemoveProfileL(CSIPProfile& aProfile);
 909.200 -
 909.201 -        /**
 909.202 -        * Informs destruction of local profile object instance
 909.203 -        * @param aProfile instance of deleted profile
 909.204 -        * @internalComponent
 909.205 -        */
 909.206 -        void ProfileDeleted(CSIPProfile& aProfile);
 909.207 -
 909.208 -        /**
 909.209 -        * Checks whether profile is default or not
 909.210 -        * @param aProfile checked profile
 909.211 -        * @return ETrue if is default, otherwise EFalse
 909.212 -        * @internalComponent
 909.213 -        */
 909.214 -        TBool IsDefaultProfileL(const CSIPProfile& aProfile);
 909.215 -
 909.216 -        /**
 909.217 -        * Updates SIP profile value for negotiated security mechanism; leaves on failure
 909.218 -        * @param aProfile a SIP profile
 909.219 -        * @internalComponent
 909.220 -        */
 909.221 -        void NegotiatedSecurityMechanismL(CSIPConcreteProfile& aProfile);
 909.222 -
 909.223 -        /**
 909.224 -        * Updates SIP profile value for registered AORs; leaves on failure
 909.225 -        * @param aProfile a SIP profile
 909.226 -        * @internalComponent
 909.227 -        */
 909.228 -        void RegisteredAORsL(CSIPConcreteProfile& aProfile);
 909.229 -
 909.230 -        /**
 909.231 -        * Gets new instance of either type CSIPProfile or CSIPManagedProfile
 909.232 -        * @return new instance
 909.233 -        * @internalComponent
 909.234 -        */        
 909.235 -        virtual CSIPProfile* NewInstanceL() = 0;
 909.236 -
 909.237 -        /**
 909.238 -        * Roll back in case of failure
 909.239 -        * @param aItem object to be cleaned
 909.240 -        * @internalComponent
 909.241 -        */
 909.242 -        static void CrashRevert (TAny* aItem);
 909.243 -
 909.244 -        /**
 909.245 -        * Roll back in case of failure
 909.246 -        * @param aItem object to be cleaned
 909.247 -        * @internalComponent
 909.248 -        */
 909.249 -        static void LocalCrashRevert (TAny* aItem);
 909.250 -        
 909.251 -        /**
 909.252 -        * Gets the ITC member variable.
 909.253 -        * The owneship of ITC is not transferred.
 909.254 -        * @return Reference to ITC member variable.
 909.255 -        * @internalComponent 
 909.256 -        */
 909.257 -        CSIPProfileITC& Itc(); 
 909.258 -        
 909.259 -        /**
 909.260 -        * Gets the ITC receiver member variable.
 909.261 -        * The owneship of ITC receiver is not transferred.
 909.262 -        * @return Reference to ITC receiver member variable.
 909.263 -        * @internalComponent 
 909.264 -        */
 909.265 -        CSIPProfileITCReceiver& ItcReceiver(); 
 909.266 -
 909.267 -
 909.268 -    public: // From MSIPConcreteProfileObserver
 909.269 -
 909.270 -        /**
 909.271 -        * SIP profile registration status changed event
 909.272 -        * @param aProfileId id of profile which registration 
 909.273 -        *        status has been changed.
 909.274 -        * @param aStatus new status of the profile
 909.275 -        * @param aStatusId id related to registration
 909.276 -        * @internalComponent
 909.277 -        */
 909.278 -        void RegistrationStatusChangedL(TUint32 aProfileId, 
 909.279 -                                       TInt aStatus,
 909.280 -                                       TUint32 aStatusId);
 909.281 -
 909.282 -        /** 
 909.283 -        * SIP profile creation event.
 909.284 -        * @param aProfileId id of new SIP Profile
 909.285 -        * @internalComponent
 909.286 -        */
 909.287 -        void AddedL(TUint32 aProfileId);
 909.288 -
 909.289 -        /**
 909.290 -        * SIP profile destruction event.
 909.291 -        * @param aProfileId id of profile which was destroyed
 909.292 -        * @internalComponent
 909.293 -        */    
 909.294 -        void RemovedL(TUint32 aProfileId);
 909.295 -
 909.296 -        /** 
 909.297 -        * SIP profile information update event
 909.298 -        * @param aProfileId id of updated SIP Profile
 909.299 -        * @param aSize size of updated SIP Profile
 909.300 -        * @internalComponent
 909.301 -        */
 909.302 -        void UpdatedL(TUint32 aProfileId, TUint aSize);
 909.303 -
 909.304 -        /**
 909.305 -        * An asynchronous error has occurred related to SIP profile
 909.306 -        * @param aProfileId the id of failed profile 
 909.307 -        * @param aStatus
 909.308 -        * @param aError a error code
 909.309 -        * @internalComponent
 909.310 -        */
 909.311 -        void ErrorOccurredL(TUint32 aProfileId,
 909.312 -                            TInt aStatus,
 909.313 -                            TInt aError);
 909.314 -
 909.315 -    protected: 
 909.316 -                                            
 909.317 -        /**
 909.318 -        * Constructor
 909.319 -        * @param aObserver observer to send events to
 909.320 -        * @internalComponent 
 909.321 -        */
 909.322 -        CSIPProfileRegistryBase(MSIPProfileRegistryObserver& aObserver); 
 909.323 -
 909.324 -        /**
 909.325 -        * Symbian 2nd phase base class constructor
 909.326 -        * @internalComponent
 909.327 -        */
 909.328 -        void BaseConstructL();
 909.329 -
 909.330 -        /**
 909.331 -        * Store profile into client cache
 909.332 -        * @param aItem a cleanup item for roll back in case of failure
 909.333 -        * @internalComponent
 909.334 -        */
 909.335 -        void StoreProfileL(CSIPProfileCleanupItem* aItem);
 909.336 -
 909.337 -        /**
 909.338 -        * Store array of profiles into client cache
 909.339 -        * @param aProfiles a array containing the profiles
 909.340 -        * @param aRetProfiles returned array containing profiles
 909.341 -        * @internalComponent
 909.342 -        */
 909.343 -        void StoreArrayL(
 909.344 -            RPointerArray<CSIPConcreteProfile>& aProfiles,
 909.345 -            RPointerArray<CSIPProfile>& aRetProfiles);
 909.346 -
 909.347 -        /**
 909.348 -        * Gets profile cache item
 909.349 -        * @param aProfileId a profile id to be found
 909.350 -        * @return local cache item of the profile
 909.351 -        * @internalComponent
 909.352 -        */        
 909.353 -        CSIPProfileItem* ProfileItemL(TUint aProfileId);
 909.354 -
 909.355 -        /**
 909.356 -        * Gets profile cache item index
 909.357 -        * @param aProfileId a profile id to be found
 909.358 -        * @return local cache item index of the profile
 909.359 -        * @internalComponent
 909.360 -        */        
 909.361 -        TInt ProfileIndex (TUint aProfileId);
 909.362 -
 909.363 -        /**
 909.364 -        * Gets profile cache item by index
 909.365 -        * @param aIndex a index of the profile to be found
 909.366 -        * @return local cache item of the profile
 909.367 -        * @internalComponent
 909.368 -        */        
 909.369 -        CSIPProfileItem* ProfileItemByIndex(TUint aIndex);
 909.370 -
 909.371 -        /**
 909.372 -        * Gets SIP profile identified by the Id; leaves on failure
 909.373 -        * The owneship of profile is transferred.
 909.374 -        * @param aId a SIP profile Id
 909.375 -        * @param aSize of profile if known
 909.376 -        * @return SIP profile or 0 pointer if there's no such SIP profile
 909.377 -        * @internalComponent
 909.378 -        */
 909.379 -        CSIPProfile* SIPProfileL(TUint32 aId, TInt aSize = 0);
 909.380 -        
 909.381 -    protected: // Data
 909.382 -
 909.383 -        /**
 909.384 -        * @internalComponent
 909.385 -        */
 909.386 -        RSIPProfile* iSipClient;
 909.387 -        
 909.388 -        /**
 909.389 -        * @internalComponent
 909.390 -        */        
 909.391 -        CSIPProfileITCReceiver* iITCReceiver;
 909.392 -        
 909.393 -        /**
 909.394 -        * @internalComponent
 909.395 -        */        
 909.396 -        CSIPProfileITC* iITC;
 909.397 -        
 909.398 -        /**
 909.399 -        * @internalComponent
 909.400 -        */        
 909.401 -        MSIPProfileRegistryObserver& iObserver;
 909.402 -        
 909.403 -        /**
 909.404 -        * @internalComponent
 909.405 -        */        
 909.406 -        RPointerArray<CSIPProfileItem> iProfiles;
 909.407 -        
 909.408 -        /**
 909.409 -        * @internalComponent
 909.410 -        */        
 909.411 -        CSIPProfilePlugins* iProfilePlugins;
 909.412 -        
 909.413 -        /**
 909.414 -        * @internalComponent
 909.415 -        */        
 909.416 -        CSIPProfileItem* iFindEntry;
 909.417 -        
 909.418 -    private:
 909.419 -        
 909.420 -        void ProfilesCommonL(RPointerArray<CSIPProfile>& aProfiles, 
 909.421 -                             CSIPConcreteProfileHolder* aHolder);
 909.422 -
 909.423 -    };
 909.424 -
 909.425 -#endif // CSIPPROFILEREGISTRYBASE_H
   910.1 --- a/epoc32/include/sipprofileregistryobserver.h	Tue Mar 16 16:12:26 2010 +0000
   910.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   910.3 @@ -1,120 +0,0 @@
   910.4 -/*
   910.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   910.6 -* All rights reserved.
   910.7 -* This component and the accompanying materials are made available
   910.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   910.9 -* which accompanies this distribution, and is available
  910.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  910.11 -*
  910.12 -* Initial Contributors:
  910.13 -* Nokia Corporation - initial contribution.
  910.14 -*
  910.15 -* Contributors:
  910.16 -*
  910.17 -* Description:
  910.18 -* Name        : sipprofileregistryobserver.h
  910.19 -* Part of     : SIP Profile Client
  910.20 -* Interface   : SDK API, SIP Profile API
  910.21 -* The observer class for monitoring SIP profiles.
  910.22 -* Version     : 1.0
  910.23 -*
  910.24 -*/
  910.25 -
  910.26 -
  910.27 -
  910.28 -#ifndef MSIPPROFILEOREGISTRYBSERVER_H
  910.29 -#define MSIPPROFILEOREGISTRYBSERVER_H
  910.30 -
  910.31 -//  INCLUDES
  910.32 -#include <e32base.h>
  910.33 -#include <e32std.h>
  910.34 -
  910.35 -// FORWARD DECLARATIONS
  910.36 -
  910.37 -// CLASS DECLARATION
  910.38 -/**
  910.39 -*  @publishedAll
  910.40 -*  @released
  910.41 -*
  910.42 -*  The observer class for monitoring SIP profiles.
  910.43 -*  Class must be implemented by the user in order to 
  910.44 -*  observe changes in the SIP profiles.
  910.45 -*/
  910.46 -class MSIPProfileRegistryObserver 
  910.47 -    {
  910.48 -    public: 
  910.49 -        /** Profile Registry events */
  910.50 -        enum TEvent
  910.51 -            {
  910.52 -            /** 
  910.53 -            * Signals the creation of a SIP profile, indicating that a new
  910.54 -            * profile is added into permanent store. This event is sent to
  910.55 -            * all observers.
  910.56 -            */
  910.57 -            EProfileCreated = 0,
  910.58 -            /** 
  910.59 -            * Signals the updating of a SIP profile, indicating that the data of 
  910.60 -            * an existing profile is updated into permanent store. This event is
  910.61 -            * sent to those observers who have the corresponding profile 
  910.62 -            * instantiated. 
  910.63 -            * Newly updated values of the profile are available for clients after
  910.64 -            * they receive this signal.If profile was registered while updated,
  910.65 -            * reregistration of the profile may occur. Updated values of the 
  910.66 -            * profile are uploaded into network when SIP registration process
  910.67 -            * is completed.It is possible (but not recommended) that profile is
  910.68 -            * updated even when it is being enabled by the client. If client 
  910.69 -            * receives this event for enabled profile, client should react as if
  910.70 -            * error was occurred in the exception that profile is disabled
  910.71 -            * or deleted first.
  910.72 -            */
  910.73 -            EProfileUpdated,
  910.74 -            /**
  910.75 -            * Signals the changing of the registration status of a SIP profile
  910.76 -            * to registered.
  910.77 -            * This event is sent to those observers who have the corresponding
  910.78 -            * profile instantiated.
  910.79 -            */
  910.80 -            EProfileRegistered,
  910.81 -            /**
  910.82 -            * Signals the changing of the registration status of a SIP profile
  910.83 -            * to deregistered.
  910.84 -            * This event is sent to those observers who have the corresponding
  910.85 -            * profile instantiated.
  910.86 -            */
  910.87 -            EProfileDeregistered,
  910.88 -            /**
  910.89 -            * Signals the destruction of a SIP profile, indicating that the 
  910.90 -            * profile has been removed from the permanent store and cannot 
  910.91 -            * be used anymore.This event is sent to those observers who have 
  910.92 -            * the corresponding profile instantiated.
  910.93 -            */
  910.94 -            EProfileDestroyed,
  910.95 -            /**
  910.96 -             * Signals the force disabling of a SIP profile, indicating that 
  910.97 -             * all the users attached to the profile are detached. This event
  910.98 -             * is sent to all the observers but ForceDisable API can be invoked
  910.99 -			 * only by application with Network Control capability.
 910.100 -             */
 910.101 -            EProfileForciblyDisabled
 910.102 -            };
 910.103 -
 910.104 -        /** 
 910.105 -        * An event related to SIP Profile has accorred
 910.106 -        * @param aProfileId a profile Id
 910.107 -        * @param aEvent an occurred event
 910.108 -        **/
 910.109 -        virtual void ProfileRegistryEventOccurred(TUint32 aProfileId,
 910.110 -                                                  TEvent aEvent)=0;
 910.111 -
 910.112 -        /**
 910.113 -        * An asynchronous error has occurred related to SIP profile
 910.114 -        * Event is send to those observers, who have the
 910.115 -        * corresponding profile instantiated.
 910.116 -        * @param aProfileId the id of failed profile 
 910.117 -        * @param aError an occurred error
 910.118 -        */
 910.119 -        virtual void ProfileRegistryErrorOccurred(TUint32 aProfileId,
 910.120 -                                                  TInt aError)=0;
 910.121 -    };
 910.122 -
 910.123 -#endif // MSIPPROFILEOREGISTRYBSERVER_H
   911.1 --- a/epoc32/include/sipprofileservercrkeys.h	Tue Mar 16 16:12:26 2010 +0000
   911.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   911.3 @@ -1,50 +0,0 @@
   911.4 -/*
   911.5 -* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
   911.6 -* All rights reserved.
   911.7 -* This component and the accompanying materials are made available
   911.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   911.9 -* which accompanies this distribution, and is available
  911.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  911.11 -*
  911.12 -* Initial Contributors:
  911.13 -* Nokia Corporation - initial contribution.
  911.14 -*
  911.15 -* Contributors:
  911.16 -*
  911.17 -* Description:
  911.18 -* Name          : sipprofileservercrkeys.h
  911.19 -* Part of       : SIP ProfileAgent API
  911.20 -*
  911.21 -*/
  911.22 -
  911.23 -
  911.24 -
  911.25 -#ifndef PROFILESERVERCRKEYS_H_
  911.26 -#define PROFILESERVERCRKEYS_H_
  911.27 -
  911.28 -// INCLUDES
  911.29 -#include <e32def.h>
  911.30 -
  911.31 -/**
  911.32 -* @file
  911.33 -* @publishedAll
  911.34 -* @released
  911.35 -*/
  911.36 -
  911.37 -/**
  911.38 -* Key space configuration used by the SIP ProfileAgent.
  911.39 -*/
  911.40 -const TUid KCRUidProfileSrv = { 0x2001F889 };
  911.41 -
  911.42 -#define KSIPProfileTableMask 0xFF000000
  911.43 -#define KSIPProfileTableShift 24
  911.44 -
  911.45 -#define KSIPProfileTypeMask  0x00FF0000
  911.46 -#define KSIPProfileTypeShift  16
  911.47 -
  911.48 -#define KSIPProfilePropertyMask  0x0000FFFF
  911.49 -#define KSIPProfilePropertyShift  0
  911.50 -
  911.51 -#define KSIPProfilePropertiesTable 0x01000000
  911.52 -
  911.53 -#endif /*PROFILESERVERCRKEYS_H_*/
   912.1 --- a/epoc32/include/sipprofiletypeinfo.h	Tue Mar 16 16:12:26 2010 +0000
   912.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   912.3 @@ -1,70 +0,0 @@
   912.4 -/*
   912.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
   912.6 -* All rights reserved.
   912.7 -* This component and the accompanying materials are made available
   912.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   912.9 -* which accompanies this distribution, and is available
  912.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  912.11 -*
  912.12 -* Initial Contributors:
  912.13 -* Nokia Corporation - initial contribution.
  912.14 -*
  912.15 -* Contributors:
  912.16 -*
  912.17 -* Description:
  912.18 -* Name        : sipprofiletypeinfo.h
  912.19 -* Part of     : SIP Profile Client
  912.20 -* Interface   : SDK API, SIP Profile API
  912.21 -* The class provides a container for the profile type information
  912.22 -* Version     : 1.0
  912.23 -*
  912.24 -*/
  912.25 -
  912.26 -
  912.27 -
  912.28 -#ifndef TSIPPROFILETYPEINFO_H
  912.29 -#define TSIPPROFILETYPEINFO_H
  912.30 -
  912.31 -//  INCLUDES
  912.32 -#include <e32base.h>
  912.33 -
  912.34 -// FORWARD DECLARATIONS
  912.35 -
  912.36 -// CLASS DECLARATION
  912.37 -/**
  912.38 -*  @publishedAll
  912.39 -*  @released
  912.40 -*
  912.41 -*  Container for the profile type information.
  912.42 -*
  912.43 -*  @lib sipprofilecli.lib
  912.44 -*/
  912.45 -class TSIPProfileTypeInfo
  912.46 -    {
  912.47 -    public:
  912.48 -
  912.49 -        /** Profile type name */
  912.50 -        typedef TBuf8<25> TSIPProfileName;
  912.51 -
  912.52 -        /** Profile classes */
  912.53 -        enum TSIPProfileClass
  912.54 -            {
  912.55 -            /** Network compliant with IETF standards */
  912.56 -            EInternet,
  912.57 -            /** Network compliant with 3GPP standards */
  912.58 -            EIms,
  912.59 -            /** Other */
  912.60 -            EOther,
  912.61 -            EMaxSIPProfileClass
  912.62 -            };
  912.63 -
  912.64 -    public:  // data members
  912.65 -
  912.66 -        /** Profile class */
  912.67 -        TSIPProfileClass iSIPProfileClass;
  912.68 -
  912.69 -        /** Profile type name */
  912.70 -        TSIPProfileName iSIPProfileName;
  912.71 -    };
  912.72 -
  912.73 -#endif // TSIPPROFILETYPEINFO_H
   913.1 --- a/epoc32/include/sipproxyauthenticateheader.h	Tue Mar 16 16:12:26 2010 +0000
   913.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   913.3 @@ -1,100 +0,0 @@
   913.4 -/*
   913.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   913.6 -* All rights reserved.
   913.7 -* This component and the accompanying materials are made available
   913.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   913.9 -* which accompanies this distribution, and is available
  913.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  913.11 -*
  913.12 -* Initial Contributors:
  913.13 -* Nokia Corporation - initial contribution.
  913.14 -*
  913.15 -* Contributors:
  913.16 -*
  913.17 -* Description:
  913.18 -* Name          : sipproxyauthenticateheader.h
  913.19 -* Part of       : SIP Codec
  913.20 -* Version       : SIP/5.0 
  913.21 -*
  913.22 -*/
  913.23 -
  913.24 -
  913.25 -
  913.26 -#ifndef CSIPPROXYAUTHENTICATEHEADER_H
  913.27 -#define CSIPPROXYAUTHENTICATEHEADER_H
  913.28 -
  913.29 -//  INCLUDES
  913.30 -#include "sipauthenticateheaderbase.h"
  913.31 -#include "_sipcodecdefs.h"
  913.32 -
  913.33 -// CLASS DECLARATION
  913.34 -/**
  913.35 -* @publishedAll
  913.36 -* @released
  913.37 -*
  913.38 -* Class for SIP Proxy-Authenticate-header manipulation.
  913.39 -*
  913.40 -* @lib sipcodec.lib
  913.41 -*/
  913.42 -class CSIPProxyAuthenticateHeader : public CSIPAuthenticateHeaderBase
  913.43 -	{
  913.44 -	public:	// Constructors and destructor
  913.45 -
  913.46 -		/**
  913.47 -		* Constructs a CSIPProxyAuthenticateHeader from textual representation
  913.48 -		* of the header's value part.
  913.49 -		* @param aValue a value part of a "Proxy-Authenticate"-header 
  913.50 -		* @return a new instance of CSIPProxyAuthenticateHeader
  913.51 -		*/
  913.52 -		IMPORT_C static CSIPProxyAuthenticateHeader* 
  913.53 -			DecodeL(const TDesC8& aValue);
  913.54 -
  913.55 -		/**
  913.56 -		* Creates a new instance of CSIPProxyAuthenticateHeader
  913.57 -		* @return a new instance of CSIPProxyAuthenticateHeader
  913.58 -		*/
  913.59 -		IMPORT_C static CSIPProxyAuthenticateHeader* 
  913.60 -			NewL(RStringF aAuthScheme);
  913.61 -
  913.62 -		/**
  913.63 -		* Creates a new instance of CSIPProxyAuthenticateHeader
  913.64 -		* @return a new instance of CSIPProxyAuthenticateHeader
  913.65 -		*/
  913.66 -		IMPORT_C static CSIPProxyAuthenticateHeader* 
  913.67 -			NewLC(RStringF aAuthScheme);
  913.68 -
  913.69 -		/**
  913.70 -		* Destructor
  913.71 -		*/
  913.72 -		IMPORT_C ~CSIPProxyAuthenticateHeader();
  913.73 -
  913.74 -	public: // From CSIPHeaderBase
  913.75 -
  913.76 -		/**
  913.77 -		* From CSIPHeaderBase CloneL
  913.78 -		*/
  913.79 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  913.80 -		
  913.81 -		/**
  913.82 -		* From CSIPHeaderBase Name
  913.83 -		*/		
  913.84 -		IMPORT_C RStringF Name() const;
  913.85 -
  913.86 -
  913.87 -	public: // New functions, for internal use
  913.88 -
  913.89 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
  913.90 -		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  913.91 -
  913.92 -	private: // Constructors
  913.93 -
  913.94 -		CSIPProxyAuthenticateHeader();
  913.95 -
  913.96 -    private: // For testing purposes
  913.97 -
  913.98 -        UNIT_TEST(CSIPProxyAuthenticateHeaderTest)
  913.99 -	};
 913.100 -
 913.101 -#endif // CSIPPROXYAUTHENTICATEHEADER_H
 913.102 -
 913.103 -// End of File
   914.1 --- a/epoc32/include/sipproxyauthorizationheader.h	Tue Mar 16 16:12:26 2010 +0000
   914.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   914.3 @@ -1,131 +0,0 @@
   914.4 -/*
   914.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   914.6 -* All rights reserved.
   914.7 -* This component and the accompanying materials are made available
   914.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   914.9 -* which accompanies this distribution, and is available
  914.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  914.11 -*
  914.12 -* Initial Contributors:
  914.13 -* Nokia Corporation - initial contribution.
  914.14 -*
  914.15 -* Contributors:
  914.16 -*
  914.17 -* Description:
  914.18 -* Name          : sipproxyauthorizationheader.h
  914.19 -* Part of       : SIP Codec
  914.20 -* Version       : SIP/6.0 
  914.21 -*
  914.22 -*/
  914.23 -
  914.24 -
  914.25 -
  914.26 -#ifndef CSIPPROXYAUTHORIZATIONHEADER_H
  914.27 -#define CSIPPROXYAUTHORIZATIONHEADER_H
  914.28 -
  914.29 -//  INCLUDES
  914.30 -#include "sipauthorizationheaderbase.h"
  914.31 -#include "_sipcodecdefs.h"
  914.32 -
  914.33 -// CLASS DECLARATION
  914.34 -/**
  914.35 -* @publishedAll
  914.36 -* @released
  914.37 -*
  914.38 -* Class for SIP Proxy-Authorization-header manipulation.
  914.39 -*
  914.40 -* @lib sipcodec.lib
  914.41 -*/
  914.42 -class CSIPProxyAuthorizationHeader : public CSIPAuthorizationHeaderBase
  914.43 -	{
  914.44 -	public:	// Constructors and destructor
  914.45 -
  914.46 -		/**
  914.47 -		* Constructs a CSIPProxyAuthorizationHeader 
  914.48 -		* from textual representation of the header's value part.
  914.49 -		* @param aValue a value part of a "Proxy-Authenticate"-header 
  914.50 -		* @return a new instance of CSIPProxyAuthorizationHeader
  914.51 -		*/
  914.52 -		IMPORT_C static CSIPProxyAuthorizationHeader* 
  914.53 -			DecodeL(const TDesC8& aValue);
  914.54 -
  914.55 -		/**
  914.56 -		* Creates a new instance of CSIPProxyAuthorizationHeader
  914.57 -		* @return a new instance of CSIPProxyAuthorizationHeader
  914.58 -		*/
  914.59 -		IMPORT_C static CSIPProxyAuthorizationHeader* 
  914.60 -			NewL(RStringF aAuthScheme);
  914.61 -
  914.62 -		/**
  914.63 -		* Creates a new instance of CSIPProxyAuthorizationHeader
  914.64 -		* @return a new instance of CSIPProxyAuthorizationHeader
  914.65 -		*/
  914.66 -		IMPORT_C static CSIPProxyAuthorizationHeader* 
  914.67 -			NewLC(RStringF aAuthScheme);
  914.68 -
  914.69 -		/**
  914.70 -		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  914.71 -		* @param aAuthenticateHeaderBase to be copied
  914.72 -		* @return a new instance of CSIPProxyAuthorizationHeader
  914.73 -		*/
  914.74 -		IMPORT_C static CSIPProxyAuthorizationHeader* 
  914.75 -			NewL(const CSIPAuthorizationHeaderBase& aHeader);
  914.76 -
  914.77 -		/**
  914.78 -		* Creates a deep-copy of a CSIPAuthorizationHeaderBase
  914.79 -		* @param aAuthenticateHeaderBase to be copied
  914.80 -		* @return a new instance of CSIPProxyAuthorizationHeader
  914.81 -		*/
  914.82 -		IMPORT_C static CSIPProxyAuthorizationHeader* 
  914.83 -			NewLC(const CSIPAuthorizationHeaderBase& aHeader);
  914.84 -
  914.85 -		/**
  914.86 -		* Destructor
  914.87 -		*/
  914.88 -		IMPORT_C ~CSIPProxyAuthorizationHeader();
  914.89 -
  914.90 -	public: // From CSIPHeaderBase
  914.91 -
  914.92 -		/**
  914.93 -		* From CSIPHeaderBase ExternalizeSupported
  914.94 -		*/
  914.95 -		IMPORT_C TBool ExternalizeSupported() const;
  914.96 -
  914.97 -		/**
  914.98 -		* From CSIPHeaderBase CloneL
  914.99 -		*/
 914.100 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 914.101 -		
 914.102 -		/**
 914.103 -		* From CSIPHeaderBase Name
 914.104 -		*/		
 914.105 -		IMPORT_C RStringF Name() const;
 914.106 -
 914.107 -	public: // New functions, for internal use
 914.108 -
 914.109 -        /**
 914.110 -        * @internalComponent
 914.111 -        */
 914.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 914.113 -		
 914.114 -        /**
 914.115 -        * @internalComponent
 914.116 -        */		
 914.117 -		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
 914.118 -
 914.119 -	private: // Constructors
 914.120 -
 914.121 -		CSIPProxyAuthorizationHeader();
 914.122 -
 914.123 -	private: // From CSIPHeaderBase
 914.124 -
 914.125 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 914.126 -
 914.127 -    private: // For testing purposes
 914.128 -
 914.129 -        UNIT_TEST(CSIPProxyAuthorizationHeaderTest)
 914.130 -	};
 914.131 -
 914.132 -#endif // CSIPPROXYAUTHORIZATIONHEADER_H
 914.133 -
 914.134 -// End of File
   915.1 --- a/epoc32/include/sipproxyrequireheader.h	Tue Mar 16 16:12:26 2010 +0000
   915.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   915.3 @@ -1,119 +0,0 @@
   915.4 -/*
   915.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   915.6 -* All rights reserved.
   915.7 -* This component and the accompanying materials are made available
   915.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   915.9 -* which accompanies this distribution, and is available
  915.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  915.11 -*
  915.12 -* Initial Contributors:
  915.13 -* Nokia Corporation - initial contribution.
  915.14 -*
  915.15 -* Contributors:
  915.16 -*
  915.17 -* Description:
  915.18 -* Name        : sipproxyrequireheader.h
  915.19 -* Part of     : SIP Codec
  915.20 -* Interface   : SDK API, SIP Codec API
  915.21 -* Version     : SIP/4.0 
  915.22 -*
  915.23 -*/
  915.24 -
  915.25 -
  915.26 -
  915.27 -
  915.28 -#ifndef CSIPPROXYREQUIREHEADER_H
  915.29 -#define CSIPPROXYREQUIREHEADER_H
  915.30 -
  915.31 -//  INCLUDES
  915.32 -#include "siptokenheaderbase.h"
  915.33 -#include "_sipcodecdefs.h"
  915.34 -
  915.35 -// CLASS DECLARATION
  915.36 -/**
  915.37 -* @publishedAll
  915.38 -* @released
  915.39 -*
  915.40 -* Class provides functions for setting and getting parameters in 
  915.41 -* SIP "Proxy-Require" header.
  915.42 -*
  915.43 -*  @lib sipcodec.lib
  915.44 -*/
  915.45 -class CSIPProxyRequireHeader : public CSIPTokenHeaderBase
  915.46 -	{
  915.47 -	public:	// Constructors and destructor
  915.48 -
  915.49 -		/**
  915.50 -		* Constructs a CSIPProxyRequireHeader from textual representation 
  915.51 -		* of the header's value part.
  915.52 -		* @param aValue a value part of a "Proxy-Require"-header
  915.53 -		* @return an array containing 1..n instances of CSIPProxyRequireHeader   
  915.54 -		*/
  915.55 -		IMPORT_C static RPointerArray<CSIPProxyRequireHeader> 
  915.56 -			DecodeL(const TDesC8& aValue);
  915.57 -
  915.58 -		/**
  915.59 -		* Creates a new instance of CSIPProxyRequireHeader
  915.60 -		* @param aValue a tag value 
  915.61 -		* @return a new instance of CSIPProxyRequireHeader
  915.62 -		*/
  915.63 -		IMPORT_C static CSIPProxyRequireHeader* NewL(RStringF aValue);
  915.64 -
  915.65 -		/**
  915.66 -		* Creates a new instance of CSIPProxyRequireHeader 
  915.67 -		* and puts it to CleanupStack
  915.68 -		* @param aValue a tag value   
  915.69 -		* @return a new instance of CSIPProxyRequireHeader 
  915.70 -		*/
  915.71 -		IMPORT_C static CSIPProxyRequireHeader* NewLC(RStringF aValue);
  915.72 -
  915.73 -		/**
  915.74 -		* Destructor, deletes the resources of CSIPProxyRequireHeader.
  915.75 -		*/
  915.76 -		IMPORT_C ~CSIPProxyRequireHeader();
  915.77 -
  915.78 -
  915.79 -	public: // New functions
  915.80 -
  915.81 -		/**
  915.82 -		* Constructs an instance of a CSIPProxyRequireHeader from a RReadStream
  915.83 -		* @param aReadStream a stream containing the value of the
  915.84 -		*        externalized object (header name not included).
  915.85 -		* @return an instance of a CSIPProxyRequireHeader 
  915.86 -		*/
  915.87 -		IMPORT_C static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  915.88 -
  915.89 -
  915.90 -	public: // From CSIPHeaderBase
  915.91 -
  915.92 -		/**
  915.93 -		* From CSIPHeaderBase CloneL
  915.94 -		*/
  915.95 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  915.96 -
  915.97 -		/**
  915.98 -		* From CSIPHeaderBase Name
  915.99 -		*/
 915.100 -		IMPORT_C RStringF Name() const;
 915.101 -
 915.102 -
 915.103 -	public: // From CSIPHeaderBase, For internal use
 915.104 -	
 915.105 -        /**
 915.106 -        * @internalComponent
 915.107 -        */	
 915.108 -		TPreferredPlace PreferredPlaceInMessage() const;
 915.109 -
 915.110 -	public: // New functions, for internal use
 915.111 -
 915.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 915.113 -
 915.114 -	private: // Constructors
 915.115 -
 915.116 -		CSIPProxyRequireHeader();
 915.117 -		CSIPProxyRequireHeader(const CSIPProxyRequireHeader& aHeader);
 915.118 -	};
 915.119 -
 915.120 -#endif // end of CSIPPROXYREQUIREHEADER_H
 915.121 -
 915.122 -// End of File
   916.1 --- a/epoc32/include/siprackheader.h	Tue Mar 16 16:12:26 2010 +0000
   916.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   916.3 @@ -1,190 +0,0 @@
   916.4 -/*
   916.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   916.6 -* All rights reserved.
   916.7 -* This component and the accompanying materials are made available
   916.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   916.9 -* which accompanies this distribution, and is available
  916.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  916.11 -*
  916.12 -* Initial Contributors:
  916.13 -* Nokia Corporation - initial contribution.
  916.14 -*
  916.15 -* Contributors:
  916.16 -*
  916.17 -* Description:
  916.18 -* Name        : siprackheader.h
  916.19 -* Part of     : SIP Codec
  916.20 -* Interface   : SDK API, SIP Codec API
  916.21 -* Version     : SIP/4.0 
  916.22 -*
  916.23 -*/
  916.24 -
  916.25 -
  916.26 -
  916.27 -
  916.28 -#ifndef CSIPRACKHEADER_H
  916.29 -#define CSIPRACKHEADER_H
  916.30 -
  916.31 -//  INCLUDES
  916.32 -#include "sipheaderbase.h"
  916.33 -#include "_sipcodecdefs.h"
  916.34 -
  916.35 -// CLASS DECLARATION
  916.36 -/**
  916.37 -* @publishedAll
  916.38 -* @released
  916.39 -*
  916.40 -* Class provides functions for setting and getting sequence number and
  916.41 -* method in SIP "RAck"-header.
  916.42 -*
  916.43 -*  @lib sipcodec.lib
  916.44 -*/
  916.45 -class CSIPRAckHeader : public CSIPHeaderBase
  916.46 -	{
  916.47 -	public: // Constructors and destructor
  916.48 -
  916.49 -		/**
  916.50 -		* Constructs a CSIPRAckHeader from textual representation 
  916.51 -		* of the header's value part.
  916.52 -		* @param aValue a value part of a "RAck"-header (e.g. "1 2 INVITE")
  916.53 -		* @return a new instance of CSIPRAckHeader.  
  916.54 -		*/
  916.55 -		IMPORT_C static CSIPRAckHeader* DecodeL(const TDesC8& aValue);
  916.56 -
  916.57 -		/**
  916.58 -		* Creates a new instance of CSIPRAckHeader
  916.59 -		* @param aSeq a sequence number to set
  916.60 -        * @param aCSeqNum a sequence number from CSeq-header
  916.61 -		* @param aMethod a method to set. For example "REGISTER"
  916.62 -		* @return a new instance of CSIPRAckHeader
  916.63 -		*/
  916.64 -		IMPORT_C static CSIPRAckHeader* NewL(TUint aSeq,
  916.65 -                                             TUint aCSeqNum,
  916.66 -                                             RStringF aMethod);
  916.67 -
  916.68 -
  916.69 -		/**
  916.70 -		* Creates a new instance of CSIPRAckHeader and puts it to CleanupStack
  916.71 -		* @param aSeq a sequence number to set
  916.72 -        * @param aCSeqNum a sequence number from CSeq-header
  916.73 -		* @param aMethod a method to set. For example "REGISTER"
  916.74 -		* @return a new instance of CSIPRAckHeader
  916.75 -		*/
  916.76 -		IMPORT_C static CSIPRAckHeader* NewLC(TUint aSeq,
  916.77 -                                              TUint aCSeqNum,
  916.78 -                                              RStringF aMethod);
  916.79 -
  916.80 -		/**
  916.81 -		* Destructor, deletes the resources of CSIPRAckHeader.
  916.82 -		*/
  916.83 -		IMPORT_C ~CSIPRAckHeader();
  916.84 -
  916.85 -
  916.86 -	public: // New functions
  916.87 -
  916.88 -		/**
  916.89 -		* Gets the sequence number from the "RAck" header
  916.90 -		* @return the current sequence number
  916.91 -		*/
  916.92 -		IMPORT_C TUint Seq() const;
  916.93 -
  916.94 -		/**
  916.95 -		* Sets the sequence number in the "RAck" header
  916.96 -		* @param aSeq a sequence number to set
  916.97 -		*/
  916.98 -		IMPORT_C void SetSeq(TUint aSeq);
  916.99 -
 916.100 -		/**
 916.101 -		* Gets the sequence number from the "RAck" header
 916.102 -		* @return the current sequence number
 916.103 -		*/
 916.104 -		IMPORT_C TUint CSeqNum() const;
 916.105 -
 916.106 -		/**
 916.107 -		* Sets the sequence number in the "RAck" header
 916.108 -		* @param aCSeqNum a sequence number to set
 916.109 -		*/
 916.110 -		IMPORT_C void SetCSeqNum(TUint aCSeqNum);
 916.111 -
 916.112 -		/**
 916.113 -		* Gets the method from the "RAck" header
 916.114 -		* @return the method 
 916.115 -		*/
 916.116 -		IMPORT_C RStringF Method() const;
 916.117 -
 916.118 -		/**
 916.119 -		* Sets the method in the "RAck" header
 916.120 -		* @param aMethod a method to set
 916.121 -		*/
 916.122 -		IMPORT_C void SetMethodL(RStringF aMethod);
 916.123 -
 916.124 -		/**
 916.125 -		* Constructs an instance of a CSIPRAckHeader from a RReadStream
 916.126 -		* @param aReadStream a stream containing the value of the
 916.127 -		*	     externalized object (header name not included). 
 916.128 -		* @return an instance of a CSIPRAckHeader
 916.129 -		*/
 916.130 -		IMPORT_C static CSIPHeaderBase* 
 916.131 -			InternalizeValueL(RReadStream& aReadStream);
 916.132 -
 916.133 -
 916.134 -	public: // From CSIPHeaderBase
 916.135 -
 916.136 -		/**
 916.137 -		* From CSIPHeaderBase CloneL
 916.138 -		*/
 916.139 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 916.140 -
 916.141 -		/**
 916.142 -		* From CSIPHeaderBase Name
 916.143 -		*/
 916.144 -		IMPORT_C RStringF Name() const;
 916.145 -
 916.146 -		/**
 916.147 -		* From CSIPHeaderBase ToTextValueL
 916.148 -		*/
 916.149 -		IMPORT_C HBufC8* ToTextValueL() const;
 916.150 -
 916.151 -
 916.152 -	public: // From CSIPHeaderBase, for internal use
 916.153 -
 916.154 -        /**
 916.155 -        * @internalComponent
 916.156 -        */
 916.157 -		TPreferredPlace PreferredPlaceInMessage() const;
 916.158 -
 916.159 -	public: // New functions, for internal use
 916.160 -
 916.161 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 916.162 -
 916.163 -	private: // From CSIPHeaderBase
 916.164 -
 916.165 -		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 916.166 -
 916.167 -	private: // Constructors
 916.168 -
 916.169 -        CSIPRAckHeader();
 916.170 -		CSIPRAckHeader(TUint aSeq, TUint aCSeqNum);
 916.171 -		void ConstructL(RStringF aMethod);
 916.172 -		void ConstructL(const CSIPRAckHeader& aRAckHeader);
 916.173 -	
 916.174 -	private: // New functions
 916.175 -		
 916.176 -		void DoInternalizeValueL(RReadStream& aReadStream);
 916.177 -		void ParseL(const TDesC8& aValue);
 916.178 -		void SetMethodL(const TDesC8& aMethod);
 916.179 -
 916.180 -	private: // Data
 916.181 -
 916.182 -		TUint iSeq;
 916.183 -        TUint iCSeqNum;
 916.184 -		RStringF iMethod;
 916.185 -
 916.186 -	private: // For testing purposes
 916.187 -	
 916.188 -		UNIT_TEST(CSIPRAckHeaderTest)
 916.189 -	};
 916.190 -
 916.191 -#endif // CSIPRACKHEADER_H
 916.192 -
 916.193 -// End of File
   917.1 --- a/epoc32/include/sipreferdialogassoc.h	Tue Mar 16 16:12:26 2010 +0000
   917.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   917.3 @@ -1,287 +0,0 @@
   917.4 -/*
   917.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   917.6 -* All rights reserved.
   917.7 -* This component and the accompanying materials are made available
   917.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   917.9 -* which accompanies this distribution, and is available
  917.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  917.11 -*
  917.12 -* Initial Contributors:
  917.13 -* Nokia Corporation - initial contribution.
  917.14 -*
  917.15 -* Contributors:
  917.16 -*
  917.17 -* Description:
  917.18 -* Name        : sipreferdialogassoc.h
  917.19 -* Part of     : SIP Client
  917.20 -* Interface   : SDK API, SIP Client API
  917.21 -* Version     : 1.0
  917.22 -*
  917.23 -*/
  917.24 -
  917.25 -
  917.26 -
  917.27 -#ifndef CSIPREFERDIALOGASSOC_H
  917.28 -#define CSIPREFERDIALOGASSOC_H
  917.29 -
  917.30 -// INCLUDES
  917.31 -#include "sipdialogassocbase.h"
  917.32 -
  917.33 -// CONSTANTS
  917.34 -
  917.35 -// FORWARD DECLARATIONS
  917.36 -class CUri8;
  917.37 -class CSIPToHeader;
  917.38 -class CSIPFromHeader;
  917.39 -class CSIPContactHeader;
  917.40 -class CSIPReferToHeader;
  917.41 -class MSIPRegistrationContext;
  917.42 -class CSIPConnection;
  917.43 -
  917.44 -// CLASS DECLARATION
  917.45 -
  917.46 -/**
  917.47 -* @publishedAll
  917.48 -* @released
  917.49 -*
  917.50 -* Class for managing SIP REFER dialog associations.
  917.51 -* It provides services for creating, using and terminating SIP REFER
  917.52 -* dialog associations. User can have multiple REFER dialog associations
  917.53 -* per same SIP dialog.
  917.54 -* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
  917.55 -* local and remote tags;
  917.56 -* User is responsible for "Refer-to" header semantics.
  917.57 -* @lib sipclient.lib
  917.58 -*/
  917.59 -class CSIPReferDialogAssoc: public CSIPDialogAssocBase
  917.60 -	{
  917.61 -	public: // Constructors and destructor
  917.62 -
  917.63 -		/**
  917.64 -		* Two-phased constructor.
  917.65 -		* Should be used if response to the SIP request to be sent
  917.66 -		* will create a SIP dialog association.
  917.67 -		* @pre aReferTo != 0
  917.68 -		* @param aDialog a dialog to be associated with
  917.69 -		* @param aReferTo referred-to resource
  917.70 -        * @return New object; the ownership is transferred
  917.71 -        * @leave KErrArgument if aReferTo == 0
  917.72 -		*/
  917.73 -		IMPORT_C static CSIPReferDialogAssoc*
  917.74 -			NewL(CSIPDialog& aDialog,
  917.75 -				 CSIPReferToHeader* aReferTo);
  917.76 -
  917.77 -		/**
  917.78 -		* Two-phased constructor.
  917.79 -		* Must be used if response to the SIP request to be sent
  917.80 -		* will create a SIP dialog association.
  917.81 -		* @pre aReferTo != 0
  917.82 -		* @param aDialog a dialog to be associated with
  917.83 -		* @param aReferTo referred-to resource
  917.84 -        * @return New object; the ownership is transferred
  917.85 -        * @leave KErrArgument if aReferTo == 0
  917.86 -		*/
  917.87 -		IMPORT_C static CSIPReferDialogAssoc*
  917.88 -			NewLC(CSIPDialog& aDialog,
  917.89 -				  CSIPReferToHeader* aReferTo);
  917.90 -
  917.91 -       /**
  917.92 -        * Two-phased constructor
  917.93 -        * @pre aFrom != 0 
  917.94 -        * @pre aReferTo != 0
  917.95 -		* @pre aRemoteUri != 0
  917.96 -		* The user of the class must not define tags in From-header
  917.97 -		* and To-header.
  917.98 -        * @param aConnection a SIP connection to be used with
  917.99 -        *        dialog association
 917.100 -        * @param aFrom originator's address; the ownership is transfered
 917.101 -        * @param aRemoteUri a remote target URI that identifies a resource that
 917.102 -        *		 the request is addressed to.
 917.103 -		* @param aReferTo referred-to resource
 917.104 -        * @param aTo logical recipient's address; if not defined
 917.105 -        *        the remote target uri will be used for To-header
 917.106 -        *        construction; the ownership is transfered
 917.107 -        * @param aContact a contact to be used in dialog creation. Must be
 917.108 -        *        given only if user intends to re-direct future requests; 
 917.109 -        *        the ownership is transfered
 917.110 -        * @return New object; the ownership is transferred.
 917.111 -        * @leave KErrArgument if aFrom == 0 or aRemoteuri == 0 or aReferTo == 0
 917.112 -        */
 917.113 -        IMPORT_C static CSIPReferDialogAssoc*
 917.114 -            NewL(CSIPConnection& aConnection,
 917.115 -                 CSIPFromHeader* aFrom,
 917.116 -				 CUri8* aRemoteUri,
 917.117 -				 CSIPReferToHeader* aReferTo,
 917.118 -                 CSIPToHeader* aTo=0,                 
 917.119 -                 CSIPContactHeader* aContact=0);
 917.120 -
 917.121 -       /**
 917.122 -        * Two-phased constructor
 917.123 -        * @pre aFrom != 0
 917.124 -        * @pre aReferTo != 0
 917.125 -		* @pre aRemoteUri != 0
 917.126 -		* The user of the class must not define tags in From-header
 917.127 -		* and To-header.
 917.128 -        * @param aConnection a SIP connection to be used with
 917.129 -        *        dialog association
 917.130 -        * @param aFrom originator's address; the ownership is transfered
 917.131 -        * @param aRemoteUri a remote target URI that identifies a resource that
 917.132 -        *		 the request is addressed to.
 917.133 -		* @param aReferTo referred-to resource
 917.134 -        * @param aTo logical recipient's address; if not defined
 917.135 -        *        the remote target uri will be used for To-header
 917.136 -        *        construction; the ownership is transfered
 917.137 -        * @param aContact a contact to be used in dialog creation. Must be
 917.138 -        *        given only if user intends to re-direct future requests; 
 917.139 -        *        the ownership is transfered
 917.140 -        * @return New object; the ownership is transferred.
 917.141 -        * @leave KErrArgument if aFrom == 0 or aRemoteuri == 0 or aReferTo == 0
 917.142 -        */
 917.143 -        IMPORT_C static CSIPReferDialogAssoc*
 917.144 -            NewLC(CSIPConnection& aConnection,
 917.145 -                  CSIPFromHeader* aFrom,
 917.146 -				  CUri8* aRemoteUri,
 917.147 -				  CSIPReferToHeader* aReferTo,
 917.148 -                  CSIPToHeader* aTo=0,                 
 917.149 -                  CSIPContactHeader* aContact=0);
 917.150 -
 917.151 -       /**
 917.152 -        * Two-phased constructor
 917.153 -        * @pre aReferTo != 0
 917.154 -		* @pre aRemoteUri != 0
 917.155 -		* The user of the class must not define tags in From-header
 917.156 -		* and To-header.
 917.157 -        * @pre aContext.IsContextActive() == ETrue
 917.158 -        * @param aConnection a SIP connection to be used with
 917.159 -        *        dialog association 
 917.160 -        * @param aRemoteUri a remote target URI that identifies a resource that
 917.161 -        *		 the request is targeted to.
 917.162 -        * @param aContext used for selecting outbound 
 917.163 -        *        proxy and originator's address (AOR) and contact
 917.164 -        * @param aReferTo referred-to resource
 917.165 -        * @param aFrom originator's address. If not defined it will
 917.166 -        *        constructed using registration context (User's AOR);
 917.167 -        *        the ownership is transfered
 917.168 -        * @param aTo logical recipient's address; if not defined
 917.169 -        *        the remote target uri will be used for To-header
 917.170 -        *        construction; the ownership is transfered
 917.171 -        * @param aContact a contact to be used in dialog creation. Must be
 917.172 -        *        given only if user intends to re-direct future requests; 
 917.173 -        *        the ownership is transfered
 917.174 -        * @return New object: the ownership is transferred.
 917.175 -        * @leave KErrArgument if aRemoteuri == 0 or aReferTo == 0
 917.176 -        * @leave KErrSIPInvalidRegistrationState
 917.177 -        *		 if aContext.IsContextActive() == EFalse
 917.178 -        */
 917.179 -        IMPORT_C static CSIPReferDialogAssoc*
 917.180 -            NewL(CSIPConnection& aConnection,                                    
 917.181 -                 CUri8* aRemoteUri,
 917.182 -                 const MSIPRegistrationContext& aContext,
 917.183 -                 CSIPReferToHeader* aReferTo,
 917.184 -                 CSIPFromHeader* aFrom=0,
 917.185 -	             CSIPToHeader* aTo=0,
 917.186 -	             CSIPContactHeader* aContact=0);
 917.187 -
 917.188 -       /**
 917.189 -        * Two-phased constructor        
 917.190 -        * @pre aReferTo != 0
 917.191 -		* @pre aRemoteUri != 0
 917.192 -		* The user of the class must not define tags in From-header
 917.193 -		* and To-header.
 917.194 -        * @pre aContext.IsContextActive()==ETrue
 917.195 -        * @param aConnection a SIP connection to be used with
 917.196 -        *        dialog association 
 917.197 -        * @param aRemoteUri a remote target URI that identifies a resource that
 917.198 -        *		 the request is targeted to.
 917.199 -        * @param aContext used for selecting outbound 
 917.200 -        *        proxy and originator's address (AOR) and contact
 917.201 -        * @param aReferTo referred-to resource
 917.202 -        * @param aFrom originator's address. If not defined it will
 917.203 -        *        constructed using registration context (User's AOR);
 917.204 -        *        the ownership is transfered
 917.205 -        * @param aTo logical recipient's address; if not defined
 917.206 -        *        the remote target uri will be used for To-header
 917.207 -        *        construction; the ownership is transfered
 917.208 -        * @param aContact a contact to be used in dialog creation. Must be
 917.209 -        *        given only if user intends to re-direct future requests; 
 917.210 -        *        the ownership is transfered
 917.211 -        * @return New object; the ownership is transferred.
 917.212 -        * @leave KErrArgument if aRemoteuri == 0 or aReferTo == 0
 917.213 -        * @leave KErrSIPInvalidRegistrationState
 917.214 -        *		 if aContext.IsContextActive() == EFalse
 917.215 -        */
 917.216 -        IMPORT_C static CSIPReferDialogAssoc*
 917.217 -            NewLC(CSIPConnection& aConnection,                                    
 917.218 -                 CUri8* aRemoteUri,
 917.219 -                 const MSIPRegistrationContext& aContext,
 917.220 -                 CSIPReferToHeader* aReferTo,
 917.221 -                 CSIPFromHeader* aFrom=0,
 917.222 -	             CSIPToHeader* aTo=0,
 917.223 -	             CSIPContactHeader* aContact=0);
 917.224 -
 917.225 -		/**
 917.226 -		* Destructor
 917.227 -		*/
 917.228 -		IMPORT_C ~CSIPReferDialogAssoc();
 917.229 -
 917.230 -	public: //New functions
 917.231 -
 917.232 -		/**
 917.233 -		* Creates REFER and sends it to the remote target.
 917.234 -		* leaves on failure.
 917.235 -		* 101-199 or 2xx response will create REFER dialog 
 917.236 -		* association in case of first REFER request within
 917.237 -		* this dialog association.
 917.238 -		* @pre Dialog().Connection().State()==EActive
 917.239 -		* @pre Dialog().State()==CSIPDialog::EInit ||
 917.240 -		*      Dialog().State()==CSIPDialog::EConfirmed
 917.241 -		* @param aElements optional SIP message headers and body. Ownership is
 917.242 -        *   transferred.
 917.243 -		* @return REFER SIP transaction. Ownership is transferred.
 917.244 -		* @leave KErrSIPInvalidDialogState if dialog is in wrong state
 917.245 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 917.246 -		*	object has been deleted.
 917.247 -		* @capability NetworkServices
 917.248 -		*/
 917.249 -		IMPORT_C CSIPClientTransaction*
 917.250 -            SendReferL(CSIPMessageElements* aElements=0);
 917.251 -        
 917.252 -        /**
 917.253 -        * Gets referred-to resouce
 917.254 -        * @return referred-to resource
 917.255 -        */
 917.256 -        IMPORT_C const CSIPReferToHeader& ReferTo() const;
 917.257 -
 917.258 -	public: // New functions, for internal use
 917.259 -	
 917.260 -		/**
 917.261 -		* Sends a REFER request.
 917.262 -		*
 917.263 -		* @pre Dialog().Connection().State()==EActive
 917.264 -		* @param aElements optional SIP message headers and body.
 917.265 -		*	Ownership is transferred.
 917.266 -		* @param aWithinDialog ETrue if REFER is sent within dialog,
 917.267 -		*	EFalse if REFER creates the dialog.
 917.268 -		* @return REFER SIP transaction. Ownership is transferred.
 917.269 -		*/
 917.270 -		CSIPClientTransaction* DoSendReferL(CSIPMessageElements* aElements,
 917.271 -								   			TBool aWithinDialog);
 917.272 -
 917.273 - 	private: // Constructors
 917.274 -
 917.275 -        CSIPReferDialogAssoc();
 917.276 -        
 917.277 -        static CSIPReferDialogAssoc* NewLC(CSIPConnection& aConnection,
 917.278 -								CUri8* aRemoteUri,
 917.279 -								CSIPReferToHeader* aReferTo,
 917.280 -								CSIPFromHeader* aFrom,
 917.281 -                                CSIPToHeader* aTo,
 917.282 -			                    CSIPContactHeader* aContact,
 917.283 -			                    const MSIPRegistrationContext* aContext);
 917.284 -
 917.285 -    private: // Data
 917.286 -
 917.287 -        CSIPReferToHeader* iReferTo;
 917.288 -	};
 917.289 -
 917.290 -#endif
   918.1 --- a/epoc32/include/siprefertoheader.h	Tue Mar 16 16:12:26 2010 +0000
   918.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   918.3 @@ -1,137 +0,0 @@
   918.4 -/*
   918.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   918.6 -* All rights reserved.
   918.7 -* This component and the accompanying materials are made available
   918.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   918.9 -* which accompanies this distribution, and is available
  918.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  918.11 -*
  918.12 -* Initial Contributors:
  918.13 -* Nokia Corporation - initial contribution.
  918.14 -*
  918.15 -* Contributors:
  918.16 -*
  918.17 -* Description:
  918.18 -* Name        : siprefertoheader.h
  918.19 -* Part of     : SIP Codec
  918.20 -* Interface   : SDK API, SIP Codec API
  918.21 -* Version     : SIP/4.0 
  918.22 -*
  918.23 -*/
  918.24 -
  918.25 -
  918.26 -
  918.27 -
  918.28 -#ifndef CSIPREFERTOHEADER_H
  918.29 -#define CSIPREFERTOHEADER_H
  918.30 -
  918.31 -//  INCLUDES
  918.32 -#include "sipaddressheaderbase.h"
  918.33 -#include "_sipcodecdefs.h"
  918.34 -
  918.35 -// FORWARD DECLARATIONS
  918.36 -class CSIPAddress;
  918.37 -class CSIPHeaderGenericParams;
  918.38 -
  918.39 -// CLASS DECLARATION
  918.40 -/**
  918.41 -* @publishedAll
  918.42 -* @released
  918.43 -*
  918.44 -* Class provides functions for setting and getting parameters in SIP 
  918.45 -* "Refer-To" header.
  918.46 -*
  918.47 -*  @lib sipcodec.lib
  918.48 -*/
  918.49 -class CSIPReferToHeader : public CSIPAddressHeaderBase
  918.50 -	{
  918.51 -	public:	// Constructors and destructor
  918.52 -
  918.53 -		/**
  918.54 -		* Constructs a CSIPReferToHeader from textual representation 
  918.55 -		* of the header's value part.
  918.56 -		* @param aValue a value part of a "Refer-To"-header 
  918.57 -		*        (e.g. "User <user@host>")
  918.58 -		* @return a new instance of CSIPReferToHeader   
  918.59 -		*/
  918.60 -		IMPORT_C static CSIPReferToHeader* DecodeL(const TDesC8& aValue);
  918.61 -
  918.62 -		/**
  918.63 -		* Creates a new instance of CSIPReferToHeader
  918.64 -		* @pre aSIPAddress != 0
  918.65 -		* @param aSIPAddress a name-address, the ownership is transferred.
  918.66 -		* @return a new instance of CSIPReferToHeader
  918.67 -		*/
  918.68 -		IMPORT_C static CSIPReferToHeader* NewL(CSIPAddress* aSIPAddress);
  918.69 -
  918.70 -		/**
  918.71 -		* Creates a new instance of CSIPReferToHeader and puts it to CleanupStack
  918.72 -		* @pre aSIPAddress != 0
  918.73 -		* @param aSIPAddress a name-address, the ownership is transferred,
  918.74 -		* @return a new instance of CSIPReferToHeader
  918.75 -		*/
  918.76 -		IMPORT_C static CSIPReferToHeader* NewLC(CSIPAddress* aSIPAddress);
  918.77 -
  918.78 -		/**
  918.79 -		* Destructor, deletes the resources of CSIPReferToHeader.
  918.80 -		*/
  918.81 -		IMPORT_C virtual ~CSIPReferToHeader();
  918.82 -
  918.83 -
  918.84 -	public: // New functions
  918.85 -
  918.86 -		/**
  918.87 -		* Constructs an instance of a CSIPReferToHeader from a RReadStream
  918.88 -		* @param aReadStream a stream containing the value of the
  918.89 -		*        externalized object (header name not included). 
  918.90 -		* @return an instance of a CSIPReferToHeader
  918.91 -		*/
  918.92 -		IMPORT_C static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  918.93 -
  918.94 -
  918.95 -	public: // From CSIPHeaderBase
  918.96 -
  918.97 -		/**
  918.98 -		* From CSIPHeaderBase CloneL
  918.99 -		*/
 918.100 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 918.101 -
 918.102 -		/**
 918.103 -		* From CSIPHeaderBase Name
 918.104 -		*/
 918.105 -		IMPORT_C RStringF Name() const;
 918.106 -
 918.107 -
 918.108 -	public: // From CSIPHeaderBase, for internal use
 918.109 -
 918.110 -        /**
 918.111 -        * @internalComponent
 918.112 -        */
 918.113 -		TBool HasCompactName() const;
 918.114 -		
 918.115 -        /**
 918.116 -        * @internalComponent
 918.117 -        */		
 918.118 -		RStringF CompactName() const;
 918.119 -		
 918.120 -        /**
 918.121 -        * @internalComponent
 918.122 -        */		
 918.123 -		TPreferredPlace PreferredPlaceInMessage() const;
 918.124 -
 918.125 -	public: // New functions, for internal use
 918.126 -
 918.127 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 918.128 -
 918.129 -	private: // Constructors
 918.130 -
 918.131 -		CSIPReferToHeader();
 918.132 -
 918.133 -    private: // For testing purposes
 918.134 -	
 918.135 -		UNIT_TEST(CSIPReferToHeaderTest)
 918.136 -	};
 918.137 -
 918.138 -#endif // end of CSIPREFERTOHEADER_H
 918.139 -
 918.140 -// End of File
   919.1 --- a/epoc32/include/siprefresh.h	Tue Mar 16 16:12:26 2010 +0000
   919.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   919.3 @@ -1,250 +0,0 @@
   919.4 -/*
   919.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   919.6 -* All rights reserved.
   919.7 -* This component and the accompanying materials are made available
   919.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   919.9 -* which accompanies this distribution, and is available
  919.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  919.11 -*
  919.12 -* Initial Contributors:
  919.13 -* Nokia Corporation - initial contribution.
  919.14 -*
  919.15 -* Contributors:
  919.16 -*
  919.17 -* Description:
  919.18 -* Name        : siprefresh.h
  919.19 -* Part of     : SIP Client
  919.20 -* Interface   : SDK API, SIP Client API
  919.21 -* Version     : 1.0
  919.22 -*
  919.23 -*/
  919.24 -
  919.25 -
  919.26 -
  919.27 -
  919.28 -#ifndef CSIPREFRESH_H
  919.29 -#define CSIPREFRESH_H
  919.30 -
  919.31 -// INCLUDES
  919.32 -#include <e32base.h>
  919.33 -#include <stringpool.h>
  919.34 -#include "_sipcodecdefs.h"
  919.35 -
  919.36 -// FORWARD DECLARATIONS
  919.37 -class CSIPClientTransaction;
  919.38 -class CSIPMessageElements;
  919.39 -class MSIPRefreshAssociation;
  919.40 -
  919.41 -// CLASS DECLARATION
  919.42 -
  919.43 -/**
  919.44 -*  @publishedAll
  919.45 -*  @released
  919.46 -*
  919.47 -*  Class for managing SIP refresh.
  919.48 -*  It provides functions for getting associated sip transaction
  919.49 -*  and state. Class also provides functions for updating and terminating 
  919.50 -*  stand-alone refreshes.
  919.51 -*
  919.52 -*  Note that only stand-alone refreshes (i.e. refreshes that are not associated
  919.53 -*  with registration binding or dialog associations) can be terminated or
  919.54 -*  updated using functions defined in this class.
  919.55 -*
  919.56 -*  @lib sipclient.lib
  919.57 -*/
  919.58 -class CSIPRefresh: public CBase
  919.59 -	{
  919.60 -	public:
  919.61 -
  919.62 -		/** SIP refresh states */
  919.63 -		enum TState
  919.64 -			{
  919.65 -			/** SIP refresh is inactive */
  919.66 -			EInactive,
  919.67 -			/** SIP refresh active */
  919.68 -			EActive,
  919.69 -			/** SIP refresh is terminated */
  919.70 -			ETerminated,
  919.71 -			/** Object is being constructed and is not yet ready for use */
  919.72 -			EConstructing
  919.73 -			};
  919.74 -
  919.75 -	public: // Constructors and destructor
  919.76 -
  919.77 -		/**
  919.78 -		* Two-phased constructor
  919.79 -        * @return New object. Ownership is transferred.
  919.80 -		*/
  919.81 -		IMPORT_C static CSIPRefresh* NewL();
  919.82 -
  919.83 -		/**
  919.84 -		* Two-phased constructor
  919.85 -        * @return New object. Ownership is transferred.
  919.86 -		*/
  919.87 -		IMPORT_C static CSIPRefresh* NewLC();
  919.88 -
  919.89 -		/**
  919.90 -		* Destructor
  919.91 -		*/
  919.92 -		IMPORT_C ~CSIPRefresh();
  919.93 -
  919.94 -	public: // New functions
  919.95 -
  919.96 -		/**
  919.97 -		* Gets the state of the refresh
  919.98 -		* @return refresh state
  919.99 -		*/
 919.100 -        IMPORT_C CSIPRefresh::TState State() const;
 919.101 -
 919.102 -		/**
 919.103 -		* Tests if the refresh is a stand-alone refresh
 919.104 -		* @return ETrue if refresh is a stand-alone; EFalse otherwise
 919.105 -		*/
 919.106 -		IMPORT_C TBool IsStandAlone() const;
 919.107 -		
 919.108 -		/**
 919.109 -		* Gets the associated SIP transaction with this refresh.
 919.110 -        *
 919.111 -		* @return Associated SIP transaction or 0-pointer. Ownership is not
 919.112 -        *   transferred.
 919.113 -		*/
 919.114 -		IMPORT_C const CSIPClientTransaction* SIPTransaction() const;
 919.115 -
 919.116 -		/**
 919.117 -		* Terminates the refresh by sending SIP request to the remote
 919.118 -        * destination. The new client transactation will be of the same type
 919.119 -        * as the first transaction associated with this request.
 919.120 -		* @pre State()==EActive
 919.121 -		* @pre IsStandAlone()==ETrue
 919.122 -		* @param aElements contains optional SIP message headers and body.
 919.123 -        *   Ownership is transferred.
 919.124 -		* @return SIP client transaction. Ownership is transferred.
 919.125 -		* @leave KErrSIPInvalidTransactionState if State() is not EActive
 919.126 -		*		 KErrNotFound if the CSIPRefresh is no longer associated to
 919.127 -        *        anything
 919.128 -        *        KSIPErrInvalidRegistrationState if trying to terminate a
 919.129 -        *        REGISTER refresh.
 919.130 -        *        KErrSIPInvalidDialogState if trying to terminate a dialog
 919.131 -        *		 association being refreshed. 
 919.132 -        * @capability NetworkServices
 919.133 -		*/
 919.134 -		IMPORT_C CSIPClientTransaction*
 919.135 -            TerminateL(CSIPMessageElements* aElements=0);
 919.136 -
 919.137 -		/**
 919.138 -		* Updates the refresh by sending SIP request to the remote destination.
 919.139 -        * The new client transactation will be of the same type as the first
 919.140 -        * transaction associated with this request.
 919.141 -		* @pre State()==EActive
 919.142 -		* @pre IsStandAlone()==ETrue
 919.143 -		* @param aElements contains optional SIP message headers and body.
 919.144 -        *   Ownership is transferred.
 919.145 -		* @return SIP client transaction. Ownership is transferred.
 919.146 -        * @leave KErrSIPInvalidTransactionState if State() is not EActive
 919.147 -		*		 KErrNotFound if the CSIPRefresh is no longer associated to
 919.148 -        *        anything
 919.149 -        *        KErrSIPInvalidRegistrationState if trying to update a
 919.150 -        *        REGISTER refresh. 
 919.151 -        *        KSIPErrInvalidDialogState if trying to update a
 919.152 -        *        dialog association being refreshed. 
 919.153 -        * @capability NetworkServices
 919.154 -		*/
 919.155 -		IMPORT_C CSIPClientTransaction*
 919.156 -            UpdateL(CSIPMessageElements* aElements=0);
 919.157 -
 919.158 -		/**
 919.159 -		* Compares this object to another object 
 919.160 -		* @param aRefresh a CSIPRefresh type object to compare
 919.161 -		* @return ETrue if the objects are equal otherwise EFalse
 919.162 -		*/
 919.163 -	    IMPORT_C TBool operator==(const CSIPRefresh& aRefresh) const;
 919.164 -
 919.165 -		/**
 919.166 -		* Gets current refresh interval
 919.167 -		* @pre State()==CSIPRefresh::EActive
 919.168 -		* @return current refresh interval in seconds
 919.169 -		* @leave KErrSIPInvalidTransactionState if State() is not EActive
 919.170 -		* @leave KErrSIPResourceNotAvailable if SIP server can't be contacted
 919.171 -		*	because a required resource has been deleted.		
 919.172 -		*/
 919.173 -		IMPORT_C TUint IntervalL() const;
 919.174 -
 919.175 -		/**
 919.176 -		* Sets refresh interval. 
 919.177 -		* Note that SIP server choses the refresh interval. This function should
 919.178 -		* be used only if SIP server has indicated new refresh interval using
 919.179 -		* SIP messages that are not associated to the refresh needing the update.
 919.180 -		* @pre State()==CSIPRefresh::EActive
 919.181 -		* @pre aInterval > 0
 919.182 -		* @param aInterval a new interval in seconds
 919.183 -		* @leave KErrArgument if aInterval == 0
 919.184 -		* @leave KErrSIPInvalidTransactionState if State() is not EActive
 919.185 -		* @leave KErrSIPResourceNotAvailable if SIP server can't be contacted
 919.186 -		*	because a required resource has been deleted.
 919.187 -		*/
 919.188 -		IMPORT_C void SetIntervalL(TUint aInterval);
 919.189 -
 919.190 -	public: // New functions, for internal use
 919.191 -
 919.192 -	    TBool DoesMatch(TUint32 aRefreshId) const;
 919.193 -
 919.194 -        /**
 919.195 -		* Associate the CSIPRefresh with another object.
 919.196 -		* @param aAssoc Object associated with the CSIPRefresh
 919.197 -		* @return ETrue if the objects are equal otherwise EFalse
 919.198 -		*/
 919.199 -        void SetRefreshOwner(MSIPRefreshAssociation& aAssoc);
 919.200 -
 919.201 -        void RemoveRefreshOwner(const MSIPRefreshAssociation& aAssoc);
 919.202 -
 919.203 -        void ChangeState(CSIPRefresh::TState aNextState);
 919.204 -
 919.205 -        void UpdateRefreshState(TUint aStatusCode);
 919.206 -
 919.207 -        TUint32 RefreshId() const;
 919.208 -
 919.209 -        void SetRefreshIdIfEmpty(TUint32 aRefreshId);        
 919.210 -
 919.211 -        RStringF RequestType() const;
 919.212 -
 919.213 -        void SetRequestType(RStringF aType);
 919.214 -
 919.215 -        void AddTransaction(CSIPClientTransaction& aTransaction);
 919.216 -
 919.217 -        void RemoveTransaction();
 919.218 -
 919.219 -        CSIPClientTransaction* Transaction();
 919.220 -
 919.221 -	private: // Constructors
 919.222 -
 919.223 -		CSIPRefresh();
 919.224 -
 919.225 -		void ConstructL();
 919.226 -
 919.227 -	private:
 919.228 -
 919.229 -		void CheckStateL() const;
 919.230 -		
 919.231 -	private: // Data
 919.232 -
 919.233 -        MSIPRefreshAssociation* iOwner;
 919.234 -
 919.235 -        //Client transaction which is refreshed, not owned by CSIPRefresh.        
 919.236 -        CSIPClientTransaction* iClientTransaction;
 919.237 -
 919.238 -		//Current state of the refresh
 919.239 -        TState iState;
 919.240 -
 919.241 -        //RefreshId received from SIP client        
 919.242 -        TUint32 iRefreshId;
 919.243 -
 919.244 -        //Identifies the request method which is being refreshed
 919.245 -        RStringF iRequestType;
 919.246 -
 919.247 -	private: // For testing purposes
 919.248 -
 919.249 -	    UNIT_TEST(CSIP_Test)
 919.250 -        UNIT_TEST(CSIPConnection_Test)
 919.251 -	};
 919.252 -
 919.253 -#endif
   920.1 --- a/epoc32/include/sipregistrationbinding.h	Tue Mar 16 16:12:26 2010 +0000
   920.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   920.3 @@ -1,336 +0,0 @@
   920.4 -/*
   920.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   920.6 -* All rights reserved.
   920.7 -* This component and the accompanying materials are made available
   920.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   920.9 -* which accompanies this distribution, and is available
  920.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  920.11 -*
  920.12 -* Initial Contributors:
  920.13 -* Nokia Corporation - initial contribution.
  920.14 -*
  920.15 -* Contributors:
  920.16 -*
  920.17 -* Description:
  920.18 -* Name        : sipregistrationbinding.h
  920.19 -* Part of     : SIP Client
  920.20 -* Interface   : SDK API, SIP Client API
  920.21 -* Version     : 1.0
  920.22 -*
  920.23 -*/
  920.24 -
  920.25 -
  920.26 -
  920.27 -#ifndef CSIPREGISTRATIONBINDING_H
  920.28 -#define CSIPREGISTRATIONBINDING_H
  920.29 -
  920.30 -// INCLUDES
  920.31 -#include "sipregistrationcontext.h"
  920.32 -#include "_sipcodecdefs.h"
  920.33 -
  920.34 -// FORWARD DECLARATIONS
  920.35 -class CUri8;
  920.36 -class CSIPToHeader;
  920.37 -class CSIPFromHeader;
  920.38 -class CSIPContactHeader;
  920.39 -class CSIPRouteHeader;
  920.40 -class CSIPMessageElements;
  920.41 -class CSIPConnection;
  920.42 -class CSIPRefresh;
  920.43 -class CSIPClientTransaction;
  920.44 -class CRegBindingImplementation;
  920.45 -
  920.46 -// CLASS DECLARATION
  920.47 -
  920.48 -/**
  920.49 -*  @publishedAll
  920.50 -*  @released
  920.51 -*
  920.52 -*  Class for managing SIP registration binding.
  920.53 -*  Class provides functions for creating and updating SIP registration bindings.
  920.54 -*
  920.55 -*  @lib sipclient.lib
  920.56 -*/
  920.57 -class CSIPRegistrationBinding :
  920.58 -    public CBase,
  920.59 -    public MSIPRegistrationContext    
  920.60 -	{
  920.61 -    public: // Constructors and destructor
  920.62 -
  920.63 -        /**
  920.64 -        * Two-phased constructor.
  920.65 -		* @pre aAor != 0 &&		
  920.66 -		*      aContact != 0
  920.67 -        * @pre "Expires" parameter in aContact must be >= KSIPMinExpirationValue
  920.68 -		* @param aConnection a SIP connection to be used
  920.69 -		* @param aAor contains user's address-of-record to register;
  920.70 -		*        the ownership is transfered
  920.71 -		* @param aContact contact(s) to be registered. The "expires" parameter
  920.72 -		*        indicates how long the client would like the binding to be
  920.73 -        *        valid.
  920.74 -		*        "expires" parameter value must be >= KSIPMinExpirationValue; 
  920.75 -		*		 the ownership is transfered
  920.76 - 		* @param aRefresh if set, created binding will be refreshed;
  920.77 -		*        the ownership is transfered
  920.78 -		* @param aOutboundProxy an outbound proxy address;
  920.79 -		*        the ownership is transfered
  920.80 -		* @param aRemoteUri if set, will be used in request-uri construction;
  920.81 -		*        the ownership is transfered
  920.82 -        * @param aFrom From header, the ownership is transferred
  920.83 -        * @return New object, ownership is transferred.
  920.84 -        * @leave KErrArgument if aAor == 0, aContact == 0 or if "Expires"
  920.85 -        *	parameter in aContact is less than KSIPMinExpirationValue
  920.86 -		*/
  920.87 -		IMPORT_C static CSIPRegistrationBinding*
  920.88 -            NewL(CSIPConnection& aConnection,
  920.89 -			     CSIPToHeader* aAor,
  920.90 -			     CSIPContactHeader* aContact,
  920.91 - 			     CSIPRefresh* aRefresh=0,
  920.92 -			     CSIPRouteHeader* aOutboundProxy=0,
  920.93 -			     CUri8* aRemoteUri=0,
  920.94 -                 CSIPFromHeader* aFrom=0);
  920.95 -
  920.96 -		/**
  920.97 -        * Two-phased constructor.
  920.98 -		* @pre aAor != 0 &&
  920.99 -		*      aContact != 0
 920.100 -        * @pre "Expires" parameter in aContact must be >= KSIPMinExpirationValue
 920.101 -		* @param aConnection a SIP connection to be used
 920.102 -		* @param aAor contains user's address-of-record to register;
 920.103 -		*        the ownership is transfered		
 920.104 -		* @param aContact contact to be registered; The "expires" parameter
 920.105 -		*        indicates how long the client would like the binding to be
 920.106 -        *        valid.
 920.107 -        *        "expires" parameter value must be >= KSIPMinExpirationValue;
 920.108 -		*		 the ownership is transfered
 920.109 -		* @param aRefresh if set, created binding will be refreshed;
 920.110 -		*        the ownership is transfered
 920.111 -		* @param aOutboundProxy an outbound proxy address;
 920.112 -		*        the ownership is transfered
 920.113 -		* @param aRemoteUri if set, will be used in request-uri construction;
 920.114 -		*        the ownership is transfered
 920.115 -        * @param aFrom From header, the ownership is transferred
 920.116 -        * @return New object, ownership is transferred.
 920.117 -        * @leave KErrArgument if aAor == 0, aContact == 0 or if "Expires"
 920.118 -        *	parameter in aContact is less than KSIPMinExpirationValue
 920.119 -		*/
 920.120 -		IMPORT_C static CSIPRegistrationBinding*
 920.121 -            NewLC(CSIPConnection& aConnection,
 920.122 -			      CSIPToHeader* aAor,
 920.123 -			      CSIPContactHeader* aContact,
 920.124 -			      CSIPRefresh* aRefresh=0,
 920.125 -			      CSIPRouteHeader* aOutboundProxy=0,
 920.126 -			      CUri8* aRemoteUri=0,
 920.127 -                  CSIPFromHeader* aFrom=0);
 920.128 -
 920.129 -		/**
 920.130 -		* Destructor
 920.131 -		*/
 920.132 -		IMPORT_C ~CSIPRegistrationBinding();
 920.133 -
 920.134 -	public: //From MSIPRegistrationContext:
 920.135 -
 920.136 -        /**
 920.137 -        * Checks if the registration context can be
 920.138 -        * used for creating SIP messages/dialogs
 920.139 -        * @return ETrue if the registration binding exists; EFalse
 920.140 -        *         otherwise
 920.141 -        */
 920.142 -        IMPORT_C TBool IsContextActive() const;
 920.143 -
 920.144 -        /**
 920.145 -        * Gets the context id
 920.146 -        * @return context id
 920.147 -        * For internal use only
 920.148 -        */        
 920.149 -        IMPORT_C TUint32 ContextId() const;               
 920.150 -        
 920.151 -    public: // New functions
 920.152 -        /**
 920.153 -		* Creates SIP REGISTER request, sends it to the given destination.
 920.154 -		* Received 2xx response will create at least one registration
 920.155 -		* binding.
 920.156 -		* @pre Connection().State()==EActive
 920.157 -		* @param aElements contains user SIP headers and content; the ownership
 920.158 -		*        is taken
 920.159 -        * @return SIP REGISTER transaction; the ownership is transfered
 920.160 -        * @leave KErrSIPMalformedMessage if aElements contains contact or
 920.161 -        *		 expires headers
 920.162 -        * @leave KErrSIPInvalidRegistrationState if already registered or
 920.163 -        *	registering is in progress or deregistering is in progress.
 920.164 -        * @capability NetworkServices
 920.165 -        */
 920.166 -		IMPORT_C CSIPClientTransaction*
 920.167 -            RegisterL(CSIPMessageElements* aElements=0);
 920.168 -
 920.169 -        /**
 920.170 -		* Creates SIP (de)REGISTER request, sends it to the given destination.
 920.171 -		* This function will remove registration binding.
 920.172 -		* Any SIP response (2xx - 6xx) to this request removes the binding.
 920.173 -		* Note that deregistration can be done then the 2xx is received to the
 920.174 -		* initial REGISTER transaction and there is no on-going registration
 920.175 -		* updates.
 920.176 -		* @pre Connection().State()==EActive
 920.177 -		* @pre IsContextActive()==ETrue
 920.178 -		* @param aElements contains user SIP headers and content; the ownership
 920.179 -		*        is transfered. If set, user SIP headers must not contain any 
 920.180 -		*        Contact-header nor Expires-header
 920.181 -        * @return SIP REGISTER transaction; the ownership is transfered
 920.182 -        * @leave KErrSIPInvalidRegistrationState if IsContextActive()==EFalse
 920.183 -        * @capability NetworkServices
 920.184 -        */
 920.185 -		IMPORT_C CSIPClientTransaction*
 920.186 -            DeregisterL(CSIPMessageElements* aElements=0);
 920.187 -
 920.188 -		/**
 920.189 -		* Updates the registration binding. Note that update can be done
 920.190 -		* then the 2xx is received to the REGISTER transaction that relates
 920.191 -		* to the initial registration or to update.
 920.192 -		* @pre aElements!=0
 920.193 -		* @pre Connection().State()==EActive
 920.194 -		* @pre IsContextActive()==ETrue
 920.195 -		* @param aElements contains user SIP header and content, must not
 920.196 -        *        contain any Contact-header nor Expires-header; 
 920.197 -		*        the ownership is transferred.
 920.198 -        * @return SIP REGISTER transaction; the ownership is transfered
 920.199 -        * @leave KErrArgument if aElements == NULL
 920.200 -        * @leave KErrSIPInvalidRegistrationState if IsContextActive()==EFalse
 920.201 -        * @capability NetworkServices
 920.202 -		*/
 920.203 -		IMPORT_C CSIPClientTransaction* UpdateL(CSIPMessageElements* aElements);
 920.204 -
 920.205 -		/**
 920.206 -		* Updates the regisration binding. Note that update can be done
 920.207 -		* then the 2xx is received to the REGISTER transaction that relates
 920.208 -		* to the initial registration or to update.
 920.209 -		* @pre aExpirationValue >= KSIPMinExpirationValue
 920.210 -		* @pre Connection().State()==EActive
 920.211 -		* @pre IsContextActive()==ETrue
 920.212 -		* @param aExpirationValue a new expiration value in seconds
 920.213 -		* @param aElements contains user SIP headers and content; must not
 920.214 -        *        contain any Contact-header nor Expires-header;
 920.215 -        *        the ownership is transferred.
 920.216 -        * @return SIP REGISTER transaction; the ownership is transfered
 920.217 -        * @leave KErrSIPInvalidRegistrationState if IsContextActive()==EFalse
 920.218 -        * @capability NetworkServices
 920.219 -		*/
 920.220 -		IMPORT_C CSIPClientTransaction*
 920.221 -            UpdateL(TUint aExpirationValue, CSIPMessageElements* aElements=0);
 920.222 -
 920.223 -        /**
 920.224 -		* Gets the SIP connection used for the registration.
 920.225 -		* @return SIP connection used for the registration, or 0-pointer if the
 920.226 -        *   	  connection has been deleted. Ownership is not transferred.
 920.227 -		*/
 920.228 -        IMPORT_C CSIPConnection* Connection();
 920.229 -
 920.230 -        /**
 920.231 -		* Gets the SIP connection used for the registration.
 920.232 -		* @return SIP connection used for the registration, or 0-pointer if the
 920.233 -        *   	  connection has been deleted. Ownership is not transferred.
 920.234 -		*/
 920.235 -        IMPORT_C const CSIPConnection* Connection() const;
 920.236 -
 920.237 -		/**
 920.238 -		* Sets/resets outbound proxy.
 920.239 -		* If a 0-pointer is given the outbound proxy will be reset.
 920.240 -		* @param aOutboundProxy an outbound proxy. Ownership is transferred.
 920.241 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
 920.242 -		*	object has been deleted
 920.243 -		*/
 920.244 -		IMPORT_C void SetOutboundProxyL(CSIPRouteHeader* aOutboundProxy);
 920.245 -
 920.246 -		/**
 920.247 -		* Gets the address-of-record (AOR) used for creating binding
 920.248 -		* @return address-of-record (AOR)
 920.249 -		*/		
 920.250 -		IMPORT_C const CSIPToHeader& Aor() const;
 920.251 -
 920.252 -		/**
 920.253 -		* Gets Contact header associated with the registration binding
 920.254 -		* @return Contact header
 920.255 -		*/
 920.256 -		IMPORT_C const CSIPContactHeader& ContactHeader() const;
 920.257 -
 920.258 -		/**
 920.259 -		* Gets Contact header associated with the registration binding
 920.260 -		* @return Contact header
 920.261 -		*/
 920.262 -		IMPORT_C CSIPContactHeader& ContactHeader();
 920.263 -		
 920.264 -		/**
 920.265 -		* Gets used outbound proxy
 920.266 -		* @return outbound proxy or a 0-pointer if not set. Ownership is not
 920.267 -        *   transferred.
 920.268 -		*/
 920.269 -		IMPORT_C const CSIPRouteHeader* OutboundProxy() const;
 920.270 -
 920.271 -        /**
 920.272 -		* Gets associated refresh in case the user has requested the refresh of
 920.273 -        * the registration. Note that client cannot use update or terminate
 920.274 -        * functions defined in the CSIPRefresh class. 
 920.275 -		* @return Associated refresh or a 0-pointer if the user has not
 920.276 -        *   requested a refresh of registration binding. Ownership is not
 920.277 -        *	transferred.
 920.278 -		*/
 920.279 -		IMPORT_C const CSIPRefresh* SIPRefresh() const;
 920.280 -
 920.281 -       /**
 920.282 -		* Gets associated refresh in case the user has requested the refresh of
 920.283 -        * the registration. Note that client cannot use update or terminate
 920.284 -        * functions defined in the CSIPRefresh class. 
 920.285 -		* @return Associated refresh or a 0-pointer if the user has not
 920.286 -        *  requested a refresh of registration binding. Ownership is not
 920.287 -        *  transferred.
 920.288 -		*/
 920.289 -		IMPORT_C CSIPRefresh* SIPRefresh();
 920.290 -		
 920.291 -        /**
 920.292 -		* Compares this object to another object
 920.293 -		* @param aRegistration CSIPRegistrationBinding object to compare
 920.294 -		* @return ETrue if the objects are equal, otherwise EFalse
 920.295 -		*/
 920.296 -        IMPORT_C TBool
 920.297 -        	operator==(const CSIPRegistrationBinding& aRegistration) const;
 920.298 -
 920.299 -        /**
 920.300 -        * Gets the registered Contact-header received in the 200 OK response.
 920.301 -        * @return Contact header, or NULL if IsContextActive() is EFalse.
 920.302 -        *         Ownership is not transferred.
 920.303 -        */
 920.304 -        IMPORT_C const CSIPContactHeader* RegisteredContact() const;
 920.305 -
 920.306 -	public: // New functions, for internal use
 920.307 -		/**
 920.308 -		* Returns the implementation instance.
 920.309 -		*
 920.310 - 		* @return CRegBindingImplementation
 920.311 -		*/
 920.312 -		CRegBindingImplementation& Implementation();
 920.313 -
 920.314 -	private: // Constructors
 920.315 -		CSIPRegistrationBinding();
 920.316 -
 920.317 -        void ConstructL(CSIPConnection& aConnection,
 920.318 -        			    CSIPToHeader* aAor,
 920.319 -						CSIPContactHeader* aContacts,                        
 920.320 -						CSIPRefresh* aRefresh,
 920.321 -						CSIPRouteHeader* aOutboundProxy,
 920.322 -						CUri8* aRemoteUri,
 920.323 -                        CSIPFromHeader* aFrom);        
 920.324 -
 920.325 -	private: // Data
 920.326 -		CRegBindingImplementation* iImplementation;
 920.327 -
 920.328 -	private: // For testing purposes		        
 920.329 -
 920.330 -		UNIT_TEST(CSIP_Test)
 920.331 -        UNIT_TEST(CSIPRegistrationBinding_Test)
 920.332 -        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 920.333 -        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 920.334 -        UNIT_TEST(CSIPReferDialogAssoc_Test)
 920.335 -
 920.336 -		__DECLARE_TEST;
 920.337 -	};
 920.338 -
 920.339 -#endif
   921.1 --- a/epoc32/include/sipregistrationcontext.h	Tue Mar 16 16:12:26 2010 +0000
   921.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   921.3 @@ -1,68 +0,0 @@
   921.4 -/*
   921.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   921.6 -* All rights reserved.
   921.7 -* This component and the accompanying materials are made available
   921.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   921.9 -* which accompanies this distribution, and is available
  921.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  921.11 -*
  921.12 -* Initial Contributors:
  921.13 -* Nokia Corporation - initial contribution.
  921.14 -*
  921.15 -* Contributors:
  921.16 -*
  921.17 -* Description:
  921.18 -* Name        : sipregistrationcontext.h
  921.19 -* Part of     : SIP Client
  921.20 -* Interface   : SDK API, SIP API
  921.21 -* Version     : 1.0
  921.22 -*
  921.23 -*/
  921.24 -
  921.25 -
  921.26 -
  921.27 -
  921.28 -#ifndef MSIPREGISTRATIONCONTEXT_H
  921.29 -#define MSIPREGISTRATIONCONTEXT_H
  921.30 -
  921.31 -//  INCLUDES
  921.32 -#include <e32base.h>
  921.33 -
  921.34 -// CLASS DECLARATION
  921.35 -
  921.36 -/**
  921.37 -*  @publishedAll
  921.38 -*  @released
  921.39 -*
  921.40 -*  The interface for providing
  921.41 -*  information for the SIP request and
  921.42 -*  dialog creation.
  921.43 -*
  921.44 -*  @lib n/a
  921.45 -*/
  921.46 -class MSIPRegistrationContext
  921.47 -	{
  921.48 -     public: // New functions
  921.49 -        /**
  921.50 -		* Destructor
  921.51 -		*/
  921.52 -        virtual ~MSIPRegistrationContext() {}
  921.53 -
  921.54 -		/**
  921.55 -		* Checks if the registration context can be
  921.56 -		* used for creating SIP messages/dialogs
  921.57 -        *
  921.58 -		* @return ETrue if can be used, EFalse otherwise
  921.59 -		*/
  921.60 -		virtual TBool IsContextActive() const = 0;
  921.61 -
  921.62 -		/**
  921.63 -		* Gets the context id.
  921.64 -        *
  921.65 -		* @return Context id
  921.66 -		* For internal use only
  921.67 -		*/
  921.68 -		virtual TUint32 ContextId() const = 0;
  921.69 -	};
  921.70 -
  921.71 -#endif
   922.1 --- a/epoc32/include/sipreplytoheader.h	Tue Mar 16 16:12:26 2010 +0000
   922.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   922.3 @@ -1,128 +0,0 @@
   922.4 -/*
   922.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   922.6 -* All rights reserved.
   922.7 -* This component and the accompanying materials are made available
   922.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   922.9 -* which accompanies this distribution, and is available
  922.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  922.11 -*
  922.12 -* Initial Contributors:
  922.13 -* Nokia Corporation - initial contribution.
  922.14 -*
  922.15 -* Contributors:
  922.16 -*
  922.17 -* Description:
  922.18 -* Name        : sipreplytoheader.h
  922.19 -* Part of     : SIP Codec
  922.20 -* Interface   : SDK API, SIP Codec API
  922.21 -* Version     : SIP/4.0 
  922.22 -*
  922.23 -*/
  922.24 -
  922.25 -
  922.26 -
  922.27 -
  922.28 -#ifndef CSIPREPLYTOHEADER_H
  922.29 -#define CSIPREPLYTOHEADER_H
  922.30 -
  922.31 -//  INCLUDES
  922.32 -#include "sipaddressheaderbase.h"
  922.33 -#include "_sipcodecdefs.h"
  922.34 -
  922.35 -// FORWARD DECLARATIONS
  922.36 -class CSIPAddress;
  922.37 -class CSIPHeaderGenericParams;
  922.38 -
  922.39 -// CLASS DECLARATION
  922.40 -/**
  922.41 -* @publishedAll
  922.42 -* @released
  922.43 -*
  922.44 -* Class provides functions for setting and getting parameters in SIP 
  922.45 -* "Reply-To" header.
  922.46 -*
  922.47 -*  @lib sipcodec.lib
  922.48 -*/
  922.49 -class CSIPReplyToHeader : public CSIPAddressHeaderBase
  922.50 -	{
  922.51 -	public:	// Constructors and destructor
  922.52 -
  922.53 -		/**
  922.54 -		* Constructs a CSIPReplyToHeader from textual representation 
  922.55 -		* of the header's value part.
  922.56 -		* @param aValue a value part of a "Refer-To"-header 
  922.57 -		*        (e.g. "User <user@host>")
  922.58 -		* @return a new instance of CSIPReplyToHeader   
  922.59 -		*/
  922.60 -		IMPORT_C static CSIPReplyToHeader* DecodeL(const TDesC8& aValue);
  922.61 -
  922.62 -		/**
  922.63 -		* Creates a new instance of CSIPReplyToHeader
  922.64 -		* @pre aSIPAddress != 0
  922.65 -		* @param aSIPAddress a name-address, the ownership is transferred.
  922.66 -		* @return a new instance of CSIPReplyToHeader
  922.67 -		*/
  922.68 -		IMPORT_C static CSIPReplyToHeader* NewL(CSIPAddress* aSIPAddress);
  922.69 -
  922.70 -		/**
  922.71 -		* Creates a new instance of CSIPReplyToHeader and puts it to CleanupStack
  922.72 -		* @pre aSIPAddress != 0
  922.73 -		* @param aSIPAddress a name-address, the ownership is transferred,
  922.74 -		* @return a new instance of CSIPReplyToHeader
  922.75 -		*/
  922.76 -		IMPORT_C static CSIPReplyToHeader* NewLC(CSIPAddress* aSIPAddress);
  922.77 -
  922.78 -		/**
  922.79 -		* Destructor, deletes the resources of CSIPReplyToHeader.
  922.80 -		*/
  922.81 -		IMPORT_C virtual ~CSIPReplyToHeader();
  922.82 -
  922.83 -
  922.84 -	public: // New functions
  922.85 -
  922.86 -		/**
  922.87 -		* Constructs an instance of a CSIPReplyToHeader from a RReadStream
  922.88 -		* @param aReadStream a stream containing the value of the
  922.89 -		*        externalized object (header name not included). 
  922.90 -		* @return an instance of a CSIPReplyToHeader
  922.91 -		*/
  922.92 -		IMPORT_C static CSIPHeaderBase* 
  922.93 -            InternalizeValueL(RReadStream& aReadStream);
  922.94 -
  922.95 -
  922.96 -	public: // From CSIPHeaderBase
  922.97 -
  922.98 -		/**
  922.99 -		* From CSIPHeaderBase CloneL
 922.100 -		*/
 922.101 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 922.102 -
 922.103 -		/**
 922.104 -		* From CSIPHeaderBase Name
 922.105 -		*/
 922.106 -		IMPORT_C RStringF Name() const;
 922.107 -
 922.108 -
 922.109 -	public: // From CSIPHeaderBase, for internal use
 922.110 -
 922.111 -        /**
 922.112 -        * @internalComponent
 922.113 -        */
 922.114 -		TPreferredPlace PreferredPlaceInMessage() const;
 922.115 -
 922.116 -	public: // New functions, for internal use
 922.117 -
 922.118 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 922.119 -
 922.120 -	private: // Constructors
 922.121 -
 922.122 -		CSIPReplyToHeader();
 922.123 -
 922.124 -	private: // For testing purposes
 922.125 -	
 922.126 -		UNIT_TEST(CSIPReplyToHeaderTest)
 922.127 -	};
 922.128 -
 922.129 -#endif // end of CSIPREPLYTOHEADER_H
 922.130 -
 922.131 -// End of File
   923.1 --- a/epoc32/include/siprequestelements.h	Tue Mar 16 16:12:26 2010 +0000
   923.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   923.3 @@ -1,179 +0,0 @@
   923.4 -/*
   923.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   923.6 -* All rights reserved.
   923.7 -* This component and the accompanying materials are made available
   923.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   923.9 -* which accompanies this distribution, and is available
  923.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  923.11 -*
  923.12 -* Initial Contributors:
  923.13 -* Nokia Corporation - initial contribution.
  923.14 -*
  923.15 -* Contributors:
  923.16 -*
  923.17 -* Description:
  923.18 -* Name        : siprequestelements.h
  923.19 -* Part of     : SIP Client
  923.20 -* Interface   : SDK API, SIP API
  923.21 -* Version     : 1.0
  923.22 -*
  923.23 -*/
  923.24 -
  923.25 -
  923.26 -
  923.27 -#ifndef CSIPREQUESTELEMENTS_H
  923.28 -#define CSIPREQUESTELEMENTS_H
  923.29 -
  923.30 -//  INCLUDES
  923.31 -#include <e32base.h>
  923.32 -#include <s32strm.h>
  923.33 -#include <stringpool.h>
  923.34 -#include <uri8.h>
  923.35 -#include "_sipcodecdefs.h"
  923.36 -
  923.37 -// FORWARD DECLARATIONS
  923.38 -class CSIPMessageElements;
  923.39 -class CSIPFromHeader;
  923.40 -class CSIPToHeader;
  923.41 -class CSIPCSeqHeader;
  923.42 -class CURIContainer;
  923.43 -
  923.44 -// CLASS DECLARATION
  923.45 -
  923.46 -/**
  923.47 -*  @publishedAll
  923.48 -*  @released
  923.49 -*
  923.50 -*  Class provides functions for creation and manipulation of originator's and
  923.51 -*  recipient's addresses in a SIP request. It also provide functions for
  923.52 -*  manipulation of SIP method for unknown SIP requests.
  923.53 -*  @lib sipclient.lib
  923.54 -*/
  923.55 -class CSIPRequestElements : public CBase
  923.56 -    {
  923.57 -    public:  // Constructors and destructor      
  923.58 -        /**
  923.59 -        * Two-phased constructor.
  923.60 -        * If the URI is SIP URI, no SIP URI headers are allowed.
  923.61 -        * @pre aRemoteURi != 0
  923.62 -        * @param aRemoteUri Remote target URI that identifies a resource that
  923.63 -        *        the request is addressed to. The ownership is transferred.
  923.64 -        */
  923.65 -        IMPORT_C static CSIPRequestElements* NewL(CUri8* aRemoteUri);
  923.66 -
  923.67 -        /**
  923.68 -        * Two-phased constructor.
  923.69 -        * If the URI is SIP URI, no SIP URI headers are allowed.
  923.70 -        * @pre aRemoteURi != 0
  923.71 -        * @param aRemoteUri Remote target URI that identifies a resource that
  923.72 -        *        the request is addressed to. The ownership is transferred.
  923.73 -        */
  923.74 -        IMPORT_C static CSIPRequestElements* NewLC(CUri8* aRemoteUri);
  923.75 -
  923.76 -        /**
  923.77 -        * Destructor.
  923.78 -        */
  923.79 -        IMPORT_C ~CSIPRequestElements();
  923.80 -
  923.81 -    public: // New functions
  923.82 -        /**
  923.83 -        * Sets/resets the recipient's To-header
  923.84 -        * To-header must not contain tag-parameter.
  923.85 -        * @pre aTo != 0
  923.86 -        * @param aTo a To-header to be set, the ownership is transferred.
  923.87 -        */
  923.88 -        IMPORT_C void SetToHeaderL(CSIPToHeader* aTo);
  923.89 -            
  923.90 -        /**
  923.91 -        * Gets the recipient's To-header 
  923.92 -        * @return To-header or a 0-pointer if not present. Ownership is not
  923.93 -        *   transferred.
  923.94 -        */
  923.95 -        IMPORT_C const CSIPToHeader* ToHeader() const;
  923.96 -
  923.97 -        /**
  923.98 -        * Sets/resets the originator's From-header.
  923.99 -        * From-header must not contain tag-parameter.
 923.100 -        * @pre aFrom != 0
 923.101 -         * @param aFrom a From-header to be set, the ownership is transferred.
 923.102 -        * @leave KErrArgument if aFrom == 0 
 923.103 -        */
 923.104 -        IMPORT_C void SetFromHeaderL(CSIPFromHeader* aFrom);
 923.105 -            
 923.106 -        /**
 923.107 -        * Gets the originator's From-header 
 923.108 -        * @return From-header or a 0-pointer if not present. Ownership is not
 923.109 -        *   transferred.
 923.110 -        */
 923.111 -        IMPORT_C const CSIPFromHeader* FromHeader() const;
 923.112 -
 923.113 -        /**
 923.114 -        * Gets CSeq-header. Available for only incoming requests.
 923.115 -        * @return a CSeq-header or a 0-pointer if not present. 
 923.116 -        *         Ownership is not transferred.
 923.117 -        */        
 923.118 -        IMPORT_C const CSIPCSeqHeader* CSeqHeader() const;
 923.119 -
 923.120 -        /**
 923.121 -        * Sets the remote URI.
 923.122 -        * If the URI is a SIP URI, no SIP URI headers are allowed.
 923.123 -        * @pre aRemoteUri != 0
 923.124 -         * @param aRemoteUri
 923.125 -        * @leave KErrArgument if aRemoteUri==0
 923.126 -        */
 923.127 -        IMPORT_C void SetRemoteUriL(CUri8* aRemoteUri);
 923.128 -
 923.129 -        /**
 923.130 -        * Gets the remote target URI
 923.131 -        * @return remote target URI
 923.132 -        */
 923.133 -        IMPORT_C const CUri8& RemoteUri() const; 
 923.134 -
 923.135 -        /**
 923.136 -        * Sets the SIP request method
 923.137 -        * @param aMethod a SIP method name.
 923.138 -        * @leave KErrArgument if method name given is syntactically
 923.139 -        *        incorrect
 923.140 -        */
 923.141 -        IMPORT_C void SetMethodL(RStringF aMethod);
 923.142 -
 923.143 -        /**
 923.144 -        * Gets the SIP Method for a request
 923.145 -        * @return a SIP method name or a an empty string if the method
 923.146 -        *         is not defined
 923.147 -        */
 923.148 -        IMPORT_C RStringF Method() const;
 923.149 -
 923.150 -        /**
 923.151 -        * Gets message elements (contains all SIP user headers and content)
 923.152 -        * @return message elements
 923.153 -        */
 923.154 -        IMPORT_C const CSIPMessageElements& MessageElements() const;
 923.155 -
 923.156 -        /**
 923.157 -        * Gets message elements (contains all SIP user headers and content)
 923.158 -        * The response elements can be populated with SIP user headers
 923.159 -        * and content using returned reference to the message elements.
 923.160 -        * @return message elements
 923.161 -        */
 923.162 -        IMPORT_C CSIPMessageElements& MessageElements();
 923.163 -
 923.164 -    public: // New functions, for internal use
 923.165 -        static CSIPRequestElements* InternalizeL (RReadStream& aReadStream);
 923.166 -        void ExternalizeL (RWriteStream& aWriteStream) const;
 923.167 -
 923.168 -    private:
 923.169 -        CSIPRequestElements();
 923.170 -        void ConstructL(CUri8* aRemoteUri);
 923.171 -        void DoInternalizeL(RReadStream& aReadStream);
 923.172 -
 923.173 -    private: // Data
 923.174 -        RStringF iMethod;
 923.175 -        CURIContainer* iRemoteURI;
 923.176 -        CSIPMessageElements* iMessageElements;
 923.177 -
 923.178 -    private: // For testing purposes
 923.179 -        UNIT_TEST(CSIPRequestElementsTest)
 923.180 -    };
 923.181 -
 923.182 -#endif
   924.1 --- a/epoc32/include/siprequireheader.h	Tue Mar 16 16:12:26 2010 +0000
   924.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   924.3 @@ -1,119 +0,0 @@
   924.4 -/*
   924.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   924.6 -* All rights reserved.
   924.7 -* This component and the accompanying materials are made available
   924.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   924.9 -* which accompanies this distribution, and is available
  924.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  924.11 -*
  924.12 -* Initial Contributors:
  924.13 -* Nokia Corporation - initial contribution.
  924.14 -*
  924.15 -* Contributors:
  924.16 -*
  924.17 -* Description:
  924.18 -* Name        : siprequireheader.h
  924.19 -* Part of     : SIP Codec
  924.20 -* Interface   : SDK API, SIP Codec API
  924.21 -* Version     : SIP/4.0 
  924.22 -*
  924.23 -*/
  924.24 -
  924.25 -
  924.26 -
  924.27 -
  924.28 -#ifndef CSIPREQUIREHEADER_H
  924.29 -#define CSIPREQUIREHEADER_H
  924.30 -
  924.31 -//  INCLUDES
  924.32 -#include "siptokenheaderbase.h"
  924.33 -#include "_sipcodecdefs.h"
  924.34 -
  924.35 -// CLASS DECLARATION
  924.36 -/**
  924.37 -* @publishedAll
  924.38 -* @released
  924.39 -*
  924.40 -* Class provides functions for setting and getting parameters in 
  924.41 -* SIP "Require" header.
  924.42 -*
  924.43 -*  @lib sipcodec.lib
  924.44 -*/
  924.45 -class CSIPRequireHeader : public CSIPTokenHeaderBase
  924.46 -	{
  924.47 -	public:	// Constructors and destructor
  924.48 -
  924.49 -		/**
  924.50 -		* Constructs a CSIPRequireHeader from textual representation 
  924.51 -		* of the header's value part.
  924.52 -		* @param aValue a value part of a "Require"-header
  924.53 -		* @return an array containing 1..n instances of CSIPRequireHeader   
  924.54 -		*/
  924.55 -		IMPORT_C static RPointerArray<CSIPRequireHeader> 
  924.56 -			DecodeL(const TDesC8& aValue);
  924.57 -
  924.58 -		/**
  924.59 -		* Creates a new instance of CSIPRequireHeader
  924.60 -		* @param aValue a tag value 
  924.61 -		* @return a new instance of CSIPRequireHeader
  924.62 -		*/
  924.63 -		IMPORT_C static CSIPRequireHeader* NewL(RStringF aValue);
  924.64 -
  924.65 -		/**
  924.66 -		* Creates a new instance of CSIPRequireHeader 
  924.67 -		* and puts it to CleanupStack
  924.68 -		* @param aValue a tag value   
  924.69 -		* @return a new instance of CSIPRequireHeader 
  924.70 -		*/
  924.71 -		IMPORT_C static CSIPRequireHeader* NewLC(RStringF aValue);
  924.72 -
  924.73 -		/**
  924.74 -		* Destructor, deletes the resources of CSIPRequireHeader.
  924.75 -		*/
  924.76 -		IMPORT_C ~CSIPRequireHeader();
  924.77 -
  924.78 -
  924.79 -	public: // New functions
  924.80 -
  924.81 -		/**
  924.82 -		* Constructs an instance of a CSIPRequireHeader from a RReadStream
  924.83 -		* @param aReadStream a stream containing the value of the
  924.84 -		*        externalized object (header name not included).
  924.85 -		* @return an instance of a CSIPRequireHeader 
  924.86 -		*/
  924.87 -		IMPORT_C static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  924.88 -
  924.89 -
  924.90 -	public: // From CSIPHeaderBase
  924.91 -
  924.92 -		/**
  924.93 -		* From CSIPHeaderBase CloneL
  924.94 -		*/
  924.95 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  924.96 -
  924.97 -		/**
  924.98 -		* From CSIPHeaderBase Name
  924.99 -		*/
 924.100 -		IMPORT_C RStringF Name() const;
 924.101 -
 924.102 -
 924.103 -	public: // From CSIPHeaderBase, For internal use
 924.104 -
 924.105 -        /**
 924.106 -        * @internalComponent
 924.107 -        */	
 924.108 -		TPreferredPlace PreferredPlaceInMessage() const;
 924.109 -
 924.110 -	public: // New functions, for internal use
 924.111 -
 924.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 924.113 -
 924.114 -	private: // Constructors
 924.115 -
 924.116 -		CSIPRequireHeader();
 924.117 -		CSIPRequireHeader(const CSIPRequireHeader& aHeader);		
 924.118 -	};
 924.119 -
 924.120 -#endif // end of CSIPREQUIREHEADER_H
 924.121 -
 924.122 -// End of File
   925.1 --- a/epoc32/include/sipresolvedclient.h	Tue Mar 16 16:12:26 2010 +0000
   925.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   925.3 @@ -1,109 +0,0 @@
   925.4 -/*
   925.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   925.6 -* All rights reserved.
   925.7 -* This component and the accompanying materials are made available
   925.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   925.9 -* which accompanies this distribution, and is available
  925.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  925.11 -*
  925.12 -* Initial Contributors:
  925.13 -* Nokia Corporation - initial contribution.
  925.14 -*
  925.15 -* Contributors:
  925.16 -*
  925.17 -* Description:
  925.18 -* Name        : SipResolvedClient.h
  925.19 -* Part of     : SDK API, SIP Client Resolver API
  925.20 -* Version     : 1.0
  925.21 -*
  925.22 -*/
  925.23 -
  925.24 -
  925.25 -
  925.26 -#ifndef CSIPRESOLVEDCLIENT_H
  925.27 -#define CSIPRESOLVEDCLIENT_H
  925.28 -
  925.29 -// INCLUDES
  925.30 -#include <ecom/ecom.h>
  925.31 -#include <stringpool.h>
  925.32 -
  925.33 -//FORWARD DECLARATIONS
  925.34 -class CSIPHeaderBase;
  925.35 -class CSIPContentTypeHeader;
  925.36 -
  925.37 -// CONSTANTS
  925.38 -/** Interface UID of this ECOM interface*/
  925.39 -const TUid KSIPResolvedClientIFUid = { 0x102010dd };
  925.40 -
  925.41 -// CLASS DEFINITION
  925.42 -/**
  925.43 -* @publishedAll
  925.44 -* @released
  925.45 -*
  925.46 -* Interface that clients must realize
  925.47 -* in order to enable client resolution mechanism upon the reception
  925.48 -* of SIP request outside the SIP dialog. Data provided in 
  925.49 -* the ECOM resource file or optionally requested from the interface implementation 
  925.50 -* will be used for target client determination by the SIP implementation.
  925.51 -* Note that channel UIDs must be unique accross all SIP clients e.g. clients may
  925.52 -* use UIDs assigned for binaries.
  925.53 -*/
  925.54 -class CSIPResolvedClient : public CBase
  925.55 -	{
  925.56 -	public:	// Destructor
  925.57 -
  925.58 -		/**
  925.59 -		* Destructor
  925.60 -		*/
  925.61 -		virtual inline ~CSIPResolvedClient();
  925.62 -
  925.63 -	public: // Abstract methods
  925.64 -
  925.65 -		/**
  925.66 -		* Returns the SIP client's channel UID that indicates client's
  925.67 -		* channel UID for connection with SIP e.g. CSIP::NewL()
  925.68 -		* @param aMethod the method of the SIP request
  925.69 -        * @param aRequestUri the request-URI of the SIP request
  925.70 -        * @param aHeaders all the headers in the SIP request
  925.71 -        * @param aContent SIP request body; zero-length descriptor if not present
  925.72 -        * @param aContentType the content-type of the SIP request. 
  925.73 -        *        Zero-pointer if body is not present.
  925.74 -		* @return SIP client's communication channel's UID
  925.75 -		*/
  925.76 -		virtual TUid ChannelL(RStringF aMethod,
  925.77 -                              const TDesC8& aRequestUri,
  925.78 -                              const RPointerArray<CSIPHeaderBase>& aHeaders,
  925.79 -                              const TDesC8& aContent,
  925.80 -                              const CSIPContentTypeHeader* aContentType=0) = 0;
  925.81 -
  925.82 -		/**
  925.83 -		* Requests the client to connect to SIP with resolved
  925.84 -		* UID in case there's no connection with resolved channel UID.
  925.85 -		* @param aUid previously resolved channel UID
  925.86 -		* @leave KErrNoMemory if out of memory
  925.87 -		* @leave KErrNotFound in case non-existing channel UID was provided
  925.88 -		*/
  925.89 -		virtual void ConnectL(TUid aUid) = 0;
  925.90 -
  925.91 -		/**
  925.92 -		* Requests the implementation to provide capabilities in XML format
  925.93 -		* in case they were not defined in the ECOM resource file. The cabablities
  925.94 -		* to be returned must be defined according to the same DTD.
  925.95 -		* This function will be invoked only if the capabilities are not
  925.96 -		* defined in the ECOM resource file.
  925.97 -		*/
  925.98 -		virtual const TDesC8& Capabilities();
  925.99 -
 925.100 -	public: // Data
 925.101 -
 925.102 -		/// Unique key for implementations of this interface.
 925.103 -		TUid iInstanceKey;
 925.104 -
 925.105 -	protected: // Constructors:
 925.106 -
 925.107 -		inline CSIPResolvedClient();
 925.108 -	};
 925.109 -
 925.110 -#include <sipresolvedclient.inl>
 925.111 -
 925.112 -#endif // CSIPRESOLVEDCLIENT_H
   926.1 --- a/epoc32/include/sipresolvedclient2.h	Tue Mar 16 16:12:26 2010 +0000
   926.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   926.3 @@ -1,230 +0,0 @@
   926.4 -/*
   926.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   926.6 -* All rights reserved.
   926.7 -* This component and the accompanying materials are made available
   926.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   926.9 -* which accompanies this distribution, and is available
  926.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  926.11 -*
  926.12 -* Initial Contributors:
  926.13 -* Nokia Corporation - initial contribution.
  926.14 -*
  926.15 -* Contributors:
  926.16 -*
  926.17 -* Description:
  926.18 -* Name        : sipresolvedclient2.h
  926.19 -* Part of     : SIP Client Resolver API
  926.20 -* Version     : 1.0
  926.21 -*
  926.22 -*/
  926.23 -
  926.24 -
  926.25 -
  926.26 -#ifndef CSIPRESOLVEDCLIENT2_H
  926.27 -#define CSIPRESOLVEDCLIENT2_H
  926.28 -
  926.29 -// INCLUDES
  926.30 -#include <sipacceptcontactheader.h>
  926.31 -#include <sipeventheader.h>
  926.32 -#include <stringpool.h>
  926.33 -#include <uri8.h>
  926.34 -#include <sipheaderbase.h>
  926.35 -#include <sipcontenttypeheader.h>
  926.36 -#include <e32base.h>
  926.37 -
  926.38 -// FORWARD DECLARATIONS
  926.39 -class CSdpMediaField;
  926.40 -
  926.41 -// CONSTANTS
  926.42 -/** Interface UID of this ECOM interface*/
  926.43 -const TUid KSIPResolvedClient2IFUid = { 0x10282EE5 };
  926.44 -
  926.45 -// CLASS DEFINITION
  926.46 -/**
  926.47 -* @publishedAll
  926.48 -* @released
  926.49 -*
  926.50 -* Interface that SIP stack's clients must realize 
  926.51 -* in order to be able to receive incoming SIP requests outside SIP dialogs.
  926.52 -* Note that channel UIDs must be unique accross all SIP clients 
  926.53 -* e.g. clients may use UIDs assigned for binaries.
  926.54 -* 
  926.55 -* SIP stack utilizes the plug-ins that implement 
  926.56 -* this interface in the following manner:
  926.57 -*
  926.58 -* 1) If the SIP request does not contain Accept-Contact-header(s), go to step 2.
  926.59 -*    SIP stack calls CSIPResolvedClient2::MatchAcceptContactsL 
  926.60 -*    for all the plug-ins and applies the following logic: 
  926.61 -*    a) None of the clients match -> go to step 2
  926.62 -*    b) One client matches -> the SIP request is routed to the matching client
  926.63 -*    c) Several clients match -> go to step 2
  926.64 -*
  926.65 -* 2) If the SIP request does not contain Event-header, go to step 3.
  926.66 -*    SIP stack calls CSIPResolvedClient2::MatchEventL 
  926.67 -*    for all the plug-ins and applies the following logic:
  926.68 -*    a) None of the clients match -> go to step 3
  926.69 -*    b) One client matches -> the SIP request is routed to the matching client
  926.70 -*    c) Several clients match -> go to step 3
  926.71 -*
  926.72 -* 3) SIP stack calls CSIPResolvedClient2::MatchRequestL for all the plug-ins.
  926.73 -*    a) None of the clients match -> SIP generates an error response
  926.74 -*    b) One client matches -> the SIP request is routed to the matching client
  926.75 -*    c) Several clients match -> 
  926.76 -*       SIP picks one of these clients randomly and routes the request to it. 
  926.77 -*       The ROM-based clients are preferred.
  926.78 -*/
  926.79 -class CSIPResolvedClient2 : public CBase
  926.80 -    {
  926.81 -    public:    // Destructor
  926.82 -
  926.83 -        /**
  926.84 -        * Destructor
  926.85 -        */
  926.86 -        inline ~CSIPResolvedClient2();
  926.87 -
  926.88 -    public: // Abstract methods
  926.89 -
  926.90 -        /**
  926.91 -        * Matches the Accept-Contact-headers 
  926.92 -        * to the client(s) represented by this plug-in.
  926.93 -        * This function is called for an incoming SIP request 
  926.94 -        * if it contains Accept-Contact-header(s).
  926.95 -        * @param aMethod the method of the SIP request
  926.96 -        * @param aRequestUri the request-URI of the SIP request
  926.97 -        * @param aHeaders all the headers in the SIP request
  926.98 -        * @param aContent SIP request body; 
  926.99 -        *        zero-length descriptor if not present
 926.100 -        * @param aContentType the content-type of the SIP request. 
 926.101 -        *        Zero-pointer if body is not present.
 926.102 -        * @param aClientUid indicates client's UID for 
 926.103 -        *        SIP e.g. the one passed as a parameter to CSIP::NewL().
 926.104 -        * @return ETrue, if the Accept-Contact-headers match to the client
 926.105 -        *         represented by this plug-in, otherwise EFalse. 
 926.106 -        */
 926.107 -        virtual TBool MatchAcceptContactsL(
 926.108 -            RStringF aMethod,
 926.109 -            const CUri8& aRequestUri,
 926.110 -            const RPointerArray<CSIPHeaderBase>& aHeaders,
 926.111 -            const TDesC8& aContent,
 926.112 -            const CSIPContentTypeHeader* aContentType,
 926.113 -            TUid& aClientUid) = 0;
 926.114 -
 926.115 -        /**
 926.116 -        * Matches the Event-header to the client(s) represented by this plug-in.
 926.117 -        * This function is called for an incoming SIP request, 
 926.118 -        * if it contains an Event-header and 
 926.119 -        * MatchAcceptContactsL returned EFalse.
 926.120 -        * @param aMethod the method of the SIP request
 926.121 -        * @param aRequestUri the request-URI of the SIP request
 926.122 -        * @param aHeaders all the headers in the SIP request
 926.123 -        * @param aContent SIP request body; 
 926.124 -        *        zero-length descriptor if not present
 926.125 -        * @param aContentType the content-type of the SIP request. 
 926.126 -        *        Zero-pointer if body is not present.
 926.127 -        * @param aClientUid indicates client's UID for 
 926.128 -        *        SIP e.g. the one passed as a parameter to CSIP::NewL().
 926.129 -        * @return ETrue, if the Event-header matches to the client
 926.130 -        *         represented by this plug-in, otherwise EFalse. 
 926.131 -        */
 926.132 -        virtual TBool MatchEventL(
 926.133 -            RStringF aMethod,
 926.134 -            const CUri8& aRequestUri,
 926.135 -            const RPointerArray<CSIPHeaderBase>& aHeaders,
 926.136 -            const TDesC8& aContent,
 926.137 -            const CSIPContentTypeHeader* aContentType,
 926.138 -            TUid& aClientUid) = 0;
 926.139 -
 926.140 -        /**
 926.141 -        * Matches the whole SIP request to the client(s) 
 926.142 -        * represented by this plug-in.
 926.143 -        * This function is called if the SIP request does not contain 
 926.144 -        * Accept- or Event-headers or  
 926.145 -        * MatchAcceptContactsL and MatchEventL returned EFalse.
 926.146 -        * @param aMethod the method of the SIP request
 926.147 -        * @param aRequestUri the request-URI of the SIP request
 926.148 -        * @param aHeaders all the headers in the SIP request
 926.149 -        * @param aContent SIP request body; 
 926.150 -        *        zero-length descriptor if not present
 926.151 -        * @param aContentType the content-type of the SIP request. 
 926.152 -        *        Zero-pointer if body is not present.
 926.153 -        * @param aClientUid indicates client's UID for 
 926.154 -        *        SIP e.g. the one passed as a parameter to CSIP::NewL().
 926.155 -        * @return ETrue, if the request can be handled by the client
 926.156 -        *         represented by this plug-in, otherwise EFalse. 
 926.157 -        */
 926.158 -        virtual TBool MatchRequestL(
 926.159 -            RStringF aMethod,
 926.160 -            const CUri8& aRequestUri,
 926.161 -            const RPointerArray<CSIPHeaderBase>& aHeaders,
 926.162 -            const TDesC8& aContent,
 926.163 -            const CSIPContentTypeHeader* aContentType,
 926.164 -            TUid& aClientUid) = 0;
 926.165 -
 926.166 -        /**
 926.167 -        * Indicates whether the plug-in implements CSIPResolvedClient2::ConnectL
 926.168 -        * and by calling CSIPResolvedClient2::ConnectL 
 926.169 -        * SIP stack is able to force the client to connect to SIP stack.
 926.170 -        * @return ETrue, if the plug-in supports 
 926.171 -        *         CSIPResolvedClient2::ConnectL, otherwise EFalse.
 926.172 -        */
 926.173 -        virtual TBool ConnectSupported() = 0;
 926.174 -
 926.175 -        /**
 926.176 -        * Requests the client to connect to SIP with 
 926.177 -        * the resolved UID in case there's no client connection with the UID.
 926.178 -        * @param aClientUid previously resolved client UID
 926.179 -        */
 926.180 -        virtual void ConnectL(const TUid& aClientUid) = 0;
 926.181 -        
 926.182 -        /**
 926.183 -        * Cancels a ConnectL request for a client.
 926.184 -        * Is called when for example a CANCEL for an INVITE is received 
 926.185 -        * before the client connects to SIP stack.
 926.186 -        * @param aClientUid a UID for which ConnectL was previously called
 926.187 -        */
 926.188 -        virtual void CancelConnect(const TUid& aClientUid) = 0;
 926.189 -
 926.190 -        /** 
 926.191 -        * Gets all the SIP message content types supported by the client.
 926.192 -        * @return 0..n SIP Content-Type-headers.
 926.193 -        *         The ownership of the headers is transferred. 
 926.194 -        */
 926.195 -        virtual RPointerArray<CSIPContentTypeHeader> 
 926.196 -            SupportedContentTypesL() = 0;
 926.197 -
 926.198 -        /** 
 926.199 -        * Gets all the SDP media-fields supported by the client.
 926.200 -        * @return 0..n SDP media-fields describing the client's media support.
 926.201 -        *         The ownership of the media-fields is transferred. 
 926.202 -        */
 926.203 -        virtual RPointerArray<CSdpMediaField> 
 926.204 -            SupportedSdpMediasL() = 0;
 926.205 -            
 926.206 -
 926.207 -        /**
 926.208 -        * Adds client specific SIP-headers for the 200 OK for OPTIONS.
 926.209 -        * Each plug-in must check that the header to be added
 926.210 -        * is not yet in the array. For example when adding header 
 926.211 -        * "Allow: INVITE" the client must check that 
 926.212 -        * the header is not already present in the array.
 926.213 -        * @param aHeaders headers to be added to 200 OK for OPTIONS. 
 926.214 -        *        The ownership of the added headers is transferred to the caller.
 926.215 -        */            
 926.216 -        virtual void AddClientSpecificHeadersForOptionsResponseL(
 926.217 -            RPointerArray<CSIPHeaderBase>& aHeaders) = 0;
 926.218 -
 926.219 -    public: // Data
 926.220 -
 926.221 -        /// Unique key for implementations of this interface.
 926.222 -        TUid iInstanceKey;
 926.223 -		
 926.224 -		TUid iImplementationUid;
 926.225 -		
 926.226 -    protected: // Constructors:
 926.227 -
 926.228 -        inline CSIPResolvedClient2();
 926.229 -    };
 926.230 -
 926.231 -#include "sipresolvedclient2.inl"
 926.232 -
 926.233 -#endif // CSIPRESOLVEDCLIENT2_H
   927.1 --- a/epoc32/include/sipresponseelements.h	Tue Mar 16 16:12:26 2010 +0000
   927.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   927.3 @@ -1,158 +0,0 @@
   927.4 -/*
   927.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   927.6 -* All rights reserved.
   927.7 -* This component and the accompanying materials are made available
   927.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   927.9 -* which accompanies this distribution, and is available
  927.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  927.11 -*
  927.12 -* Initial Contributors:
  927.13 -* Nokia Corporation - initial contribution.
  927.14 -*
  927.15 -* Contributors:
  927.16 -*
  927.17 -* Description:
  927.18 -* Name        : sipresponseelements.h
  927.19 -* Part of     : SIP Client
  927.20 -* Interface   : SDK API, SIP API
  927.21 -* Version     : 1.0
  927.22 -*
  927.23 -*/
  927.24 -
  927.25 -
  927.26 -
  927.27 -#ifndef CSIPRESPONSEELEMENTS_H
  927.28 -#define CSIPRESPONSEELEMENTS_H
  927.29 -
  927.30 -//  INCLUDES
  927.31 -#include <e32base.h>
  927.32 -#include <s32strm.h>
  927.33 -#include <stringpool.h>
  927.34 -#include "_sipcodecdefs.h"
  927.35 -
  927.36 -// FORWARD DECLARATIONS
  927.37 -class CSIPMessageElements;
  927.38 -class CSIPFromHeader;
  927.39 -class CSIPToHeader;
  927.40 -class CSIPCSeqHeader;
  927.41 -
  927.42 -// CLASS DECLARATION
  927.43 -
  927.44 -/**
  927.45 -*  @publishedAll
  927.46 -*  @released
  927.47 -*
  927.48 -*  Class provides services for creating and manipulating SIP responses
  927.49 -*  This class is used for creating and manipulating SIP responses including
  927.50 -*  status code, reason phrase and optional elements such user headers,
  927.51 -*  content and its type.
  927.52 -*
  927.53 -*  @lib sipclient.lib
  927.54 -*/
  927.55 -class CSIPResponseElements : public CBase
  927.56 -	{
  927.57 -    public:  // Constructors and destructor       
  927.58 -	    /**
  927.59 -        * Two-phased constructor.
  927.60 -        * @pre aStatusCode > 100 && aStatusCode < 700
  927.61 -	    * @param aStatusCode a known SIP response status code. Cannot be 100.
  927.62 -		* @param aReasonPhrase a SIP response reason phrase.
  927.63 -        */
  927.64 -		IMPORT_C static CSIPResponseElements* NewL(TUint aStatusCode,
  927.65 -		                                           RStringF aReasonPhrase);
  927.66 -										
  927.67 -	    /**
  927.68 -        * Two-phased constructor.
  927.69 -        * @pre aStatusCode > 100 && aStatusCode < 700
  927.70 -	    * @param aStatusCode a known SIP response status code. Cannot be 100.
  927.71 -		* @param aReasonPhrase a SIP response reason phrase.
  927.72 -        */
  927.73 -		IMPORT_C static CSIPResponseElements* NewLC(TUint aStatusCode,
  927.74 -		                                            RStringF aReasonPhrase);
  927.75 -											
  927.76 -        /**
  927.77 -        * Destructor.
  927.78 -        */
  927.79 -		IMPORT_C ~CSIPResponseElements();
  927.80 -
  927.81 -    public: // New functions
  927.82 -		/**
  927.83 -		* Sets a SIP Response extension status code. It is not possible to set
  927.84 -        * value 100.
  927.85 -        * @pre aStatusCode > 100 && aStatusCode < 700
  927.86 -		* @param aStatusCode extension status code
  927.87 -		* @leave KErrArgument if aStatusCode < 100 or aStatusCode >= 700
  927.88 -		*/
  927.89 -		IMPORT_C void SetStatusCodeL(TUint aStatusCode);
  927.90 -
  927.91 -		/**
  927.92 -		* Gets the SIP Response status code
  927.93 -		* @return SIP Response status code
  927.94 -		*/
  927.95 -		IMPORT_C TUint StatusCode() const;
  927.96 -
  927.97 -		/**
  927.98 -		* Sets a SIP Response Reason Phrase.
  927.99 -		* @param aReasonPhrase a SIP response reason phrase.
 927.100 -		*/
 927.101 -		IMPORT_C void SetReasonPhraseL(RStringF aReasonPhrase);
 927.102 -			
 927.103 -		/**
 927.104 -		* Gets a SIP Response Reason Phrase.
 927.105 -		* @return a SIP response reason phrase or an empty string if
 927.106 -        *   the reason phrase is not defined.
 927.107 -		*/
 927.108 -		IMPORT_C RStringF ReasonPhrase() const;
 927.109 -
 927.110 -		/**
 927.111 -		* Gets the originator's From-header
 927.112 -		* @return a From-header or a 0-pointer if not present. Ownership is
 927.113 -        *   not transferred.
 927.114 -		*/
 927.115 -		IMPORT_C const CSIPFromHeader* FromHeader() const;
 927.116 -
 927.117 -		/**
 927.118 -		* Gets the recipient's To-header
 927.119 -		* @return a To-header or a 0-pointer if not present. Ownership is
 927.120 -        *   not transferred.
 927.121 -		*/
 927.122 -		IMPORT_C const CSIPToHeader* ToHeader() const;
 927.123 -
 927.124 -		/**
 927.125 -		* Gets CSeq-header
 927.126 -		* @return a CSeq-header or a 0-pointer if not present. Ownership is
 927.127 -        *   not transferred.
 927.128 -		*/		
 927.129 -		IMPORT_C const CSIPCSeqHeader* CSeqHeader() const;
 927.130 -
 927.131 -		/**
 927.132 -		* Gets message elements (contains all SIP user headers and content)
 927.133 -		* @return message elements
 927.134 -		*/
 927.135 -		IMPORT_C const CSIPMessageElements& MessageElements() const;
 927.136 -
 927.137 -		/**
 927.138 -		* Gets message elements (contains all SIP user headers and content)
 927.139 -		* The response elements can be populated with SIP user headers
 927.140 -		* and content using returned reference to the message elements.
 927.141 -		* @return message elements
 927.142 -		*/
 927.143 -		IMPORT_C CSIPMessageElements& MessageElements();
 927.144 -
 927.145 -    public: // New functions, for internal use
 927.146 -        static CSIPResponseElements* InternalizeL (RReadStream& aReadStream);
 927.147 -        static CSIPResponseElements* InternalizeLC (RReadStream& aReadStream);
 927.148 -        void ExternalizeL (RWriteStream& aWriteStream) const;
 927.149 -
 927.150 -    private:
 927.151 -	    CSIPResponseElements();
 927.152 -	    void ConstructL(TUint aStatusCode, RStringF aReasonPhrase);
 927.153 -	    void DoInternalizeL (RReadStream& aReadStream);
 927.154 -
 927.155 -    private: // Data
 927.156 -	    TUint iStatusCode;
 927.157 -	    RStringF iReasonPhrase;
 927.158 -        CSIPMessageElements* iMessageElements;
 927.159 -	};
 927.160 -
 927.161 -#endif // end of CSIPRESPONSEELEMENTS_H
   928.1 --- a/epoc32/include/sipretryafterheader.h	Tue Mar 16 16:12:26 2010 +0000
   928.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   928.3 @@ -1,179 +0,0 @@
   928.4 -/*
   928.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   928.6 -* All rights reserved.
   928.7 -* This component and the accompanying materials are made available
   928.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   928.9 -* which accompanies this distribution, and is available
  928.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  928.11 -*
  928.12 -* Initial Contributors:
  928.13 -* Nokia Corporation - initial contribution.
  928.14 -*
  928.15 -* Contributors:
  928.16 -*
  928.17 -* Description:
  928.18 -* Name        : sipretryafterheader.h
  928.19 -* Part of     : SIP Codec
  928.20 -* Interface   : SDK API, SIP Codec API
  928.21 -* Version     : SIP/4.0 
  928.22 -*
  928.23 -*/
  928.24 -
  928.25 -
  928.26 -
  928.27 -
  928.28 -#ifndef CSIPRETRYAFTERHEADER_H
  928.29 -#define CSIPRETRYAFTERHEADER_H
  928.30 -
  928.31 -//  INCLUDES
  928.32 -#include "sipparameterheaderbase.h"
  928.33 -#include "_sipcodecdefs.h"
  928.34 -
  928.35 -// FORWARD DECLARATIONS
  928.36 -class CSIPRetryAfterHeaderParams;
  928.37 -
  928.38 -// CLASS DECLARATION
  928.39 -/**
  928.40 -* @publishedAll
  928.41 -* @released
  928.42 -*
  928.43 -* Class provides functions for setting and getting parameters in SIP 
  928.44 -* "Retry-After" header.
  928.45 -*
  928.46 -*  @lib sipcodec.lib
  928.47 -*/
  928.48 -class CSIPRetryAfterHeader : public CSIPParameterHeaderBase
  928.49 -	{
  928.50 -	public:	// Constructors and destructor
  928.51 -
  928.52 -		/**
  928.53 -		* Constructs a CSIPRetryAfterHeader from textual representation 
  928.54 -		* of the header's value part.
  928.55 -		* @param aValue a value part of a "Retry-After"-header 
  928.56 -		*        (e.g. "18000;duration=3600")
  928.57 -		* @return a new instance of CSIPRetryAfterHeader   
  928.58 -		*/
  928.59 -		IMPORT_C static CSIPRetryAfterHeader* DecodeL(const TDesC8& aValue);
  928.60 -
  928.61 -		/**
  928.62 -		* Creates a new instance of CSIPRetryAfterHeader
  928.63 -		* @param aRetryAfter a retry after value.
  928.64 -		* @return a new instance of CSIPRetryAfterHeader
  928.65 -		*/
  928.66 -        IMPORT_C static CSIPRetryAfterHeader* NewL(TUint aRetryAfter);
  928.67 -
  928.68 -		/**
  928.69 -		* Creates a new instance of CSIPRetryAfterHeader
  928.70 -        * On return the new instance has left to the CleanupStack.
  928.71 -		* @param aRetryAfter a retry after value.
  928.72 -		* @return a new instance of CSIPRetryAfterHeader
  928.73 -		*/
  928.74 -        IMPORT_C static CSIPRetryAfterHeader* NewLC(TUint aRetryAfter);
  928.75 -
  928.76 -        /**
  928.77 -		* Destructor, deletes the resources of CSIPRetryAfterHeader.
  928.78 -		*/
  928.79 -		IMPORT_C virtual ~CSIPRetryAfterHeader();
  928.80 -
  928.81 -
  928.82 -	public: // New functions
  928.83 -
  928.84 -		/**
  928.85 -		* Sets the retry after value
  928.86 -		* @param aValue a new retry after value to set.
  928.87 -		*/
  928.88 -		IMPORT_C void SetRetryAfter(TUint aValue);
  928.89 -
  928.90 -		/**
  928.91 -		* Gets the retry after value
  928.92 -		* @return a retry after value
  928.93 -		*/
  928.94 -		IMPORT_C TUint RetryAfter() const;
  928.95 -
  928.96 -		/**
  928.97 -		* Gets the comment value
  928.98 -		* @return a comment value or KNullDesC8
  928.99 -		*/
 928.100 -		IMPORT_C const TDesC8& Comment() const;
 928.101 -
 928.102 -		/**
 928.103 -		* Gets the value of the "duration"-parameter
 928.104 -		* @return the "duration"-parameter, or 
 928.105 -		*         KErrNotFound if the parameter is not present.
 928.106 -		*/
 928.107 -		IMPORT_C TInt DurationParam() const;
 928.108 -
 928.109 -		/**
 928.110 -		* Sets the "duration"-parameter
 928.111 -		* @pre aDurationParam >= 0
 928.112 -		* @param aDurationParam a "duration"-parameter value to set
 928.113 -		*/
 928.114 -		IMPORT_C void SetDurationParamL(TInt aDurationParam);
 928.115 -
 928.116 -        /**
 928.117 -		* Constructs an instance of a CSIPRetryAfterHeader from a RReadStream
 928.118 -		* @param aReadStream a stream containing the value of the
 928.119 -		*        externalized object (header name not included). 
 928.120 -		* @return an instance of a CSIPRetryAfterHeader
 928.121 -		*/
 928.122 -		IMPORT_C static CSIPHeaderBase* 
 928.123 -            InternalizeValueL(RReadStream& aReadStream);
 928.124 -        
 928.125 -
 928.126 -	public: // From CSIPHeaderBase
 928.127 -
 928.128 -		/**
 928.129 -		* From CSIPHeaderBase CloneL
 928.130 -		*/
 928.131 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 928.132 -
 928.133 -		/**
 928.134 -		* From CSIPHeaderBase Name
 928.135 -		*/
 928.136 -		IMPORT_C RStringF Name() const;
 928.137 -
 928.138 -
 928.139 -	public: // From CSIPHeaderBase, for internal use
 928.140 -
 928.141 -		TPreferredPlace PreferredPlaceInMessage() const;
 928.142 -
 928.143 -	public: // New functions, for internal use
 928.144 -
 928.145 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 928.146 -
 928.147 -	private: // From CSIPHeaderBase
 928.148 -
 928.149 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 928.150 -
 928.151 -	private: // From CSIPParameterHeaderBase
 928.152 -
 928.153 -		HBufC8* ToTextMandatoryPartLC() const;
 928.154 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 928.155 -		const CSIPParamContainerBase& Params() const;
 928.156 -		CSIPParamContainerBase& Params();
 928.157 -
 928.158 -	private: // Constructors
 928.159 -
 928.160 -        CSIPRetryAfterHeader();
 928.161 -		CSIPRetryAfterHeader(TUint aRetryAfter);
 928.162 -        void ConstructL();
 928.163 -		void ConstructL(const CSIPRetryAfterHeader& aRetryAfterHeader);
 928.164 -
 928.165 -	private: // New functions
 928.166 -
 928.167 -		void DoInternalizeValueL(RReadStream& aReadStream);
 928.168 -
 928.169 -	private: // Data
 928.170 -
 928.171 -		TUint iRetryAfter;
 928.172 -        HBufC8* iComment;
 928.173 -		CSIPRetryAfterHeaderParams* iParams;
 928.174 -
 928.175 -	private: // For testing purposes
 928.176 -	
 928.177 -		UNIT_TEST(CSIPRetryAfterHeaderTest)
 928.178 -	};
 928.179 -
 928.180 -#endif // end of CSIPRETRYAFTERHEADER_H
 928.181 -
 928.182 -// End of File
   929.1 --- a/epoc32/include/siprouteheader.h	Tue Mar 16 16:12:26 2010 +0000
   929.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   929.3 @@ -1,122 +0,0 @@
   929.4 -/*
   929.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   929.6 -* All rights reserved.
   929.7 -* This component and the accompanying materials are made available
   929.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   929.9 -* which accompanies this distribution, and is available
  929.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  929.11 -*
  929.12 -* Initial Contributors:
  929.13 -* Nokia Corporation - initial contribution.
  929.14 -*
  929.15 -* Contributors:
  929.16 -*
  929.17 -* Description:
  929.18 -* Name        : siprouteheader.h
  929.19 -* Part of     : SIP Codec
  929.20 -* Interface   : SDK API, SIP Codec API
  929.21 -* Version     : SIP/4.0 
  929.22 -*
  929.23 -*/
  929.24 -
  929.25 -
  929.26 -
  929.27 -
  929.28 -#ifndef CSIPROUTEHEADER_H
  929.29 -#define CSIPROUTEHEADER_H
  929.30 -
  929.31 -//  INCLUDES
  929.32 -#include "siprouteheaderbase.h"
  929.33 -#include "_sipcodecdefs.h"
  929.34 -
  929.35 -// CLASS DECLARATION
  929.36 -/**
  929.37 -* @publishedAll
  929.38 -* @released
  929.39 -*
  929.40 -* Class for SIP "Route"-header manipulation.
  929.41 -*
  929.42 -*  @lib sipcodec.lib
  929.43 -*/
  929.44 -class CSIPRouteHeader : public CSIPRouteHeaderBase
  929.45 -	{
  929.46 -	public:	// Constructors and destructor
  929.47 -
  929.48 -		/**
  929.49 -		* Constructs a CSIPRouteHeader from textual representation 
  929.50 -		* of the header's value part.
  929.51 -		* @param aValue a value part of a "Route"-header
  929.52 -		* @return an array containing one to many instances of CSIPRouteHeader
  929.53 -		*/
  929.54 -		IMPORT_C static RPointerArray<CSIPRouteHeader> 
  929.55 -			DecodeL(const TDesC8& aValue);
  929.56 -
  929.57 -		/**
  929.58 -		* Creates a new instance of CSIPRouteHeader
  929.59 -		* @pre aSIPAddress != 0
  929.60 -		* @param aSIPAddress a name-address, the ownership is transferred 
  929.61 -		* @return a new instance of CSIPRouteHeader
  929.62 -		*/
  929.63 -		IMPORT_C static CSIPRouteHeader* NewL(CSIPAddress* aSIPAddress);
  929.64 -
  929.65 -		/**
  929.66 -		* Creates a new instance of CSIPRouteHeader and puts it to CleanupStack
  929.67 -		* @pre aSIPAddress != 0
  929.68 -		* @pre aSIPAddress->Address().HostPort().HasHost() == ETrue
  929.69 -		* @param aSIPAddress a name-address, the ownership is transferred 
  929.70 -		* @return a new instance of CSIPRouteHeader
  929.71 -		*/
  929.72 -		IMPORT_C static CSIPRouteHeader* NewLC(CSIPAddress* aSIPAddress);
  929.73 -
  929.74 -		/**
  929.75 -		* Destructor, deletes the resources of CSIPRouteHeader.
  929.76 -		*/
  929.77 -		IMPORT_C ~CSIPRouteHeader();
  929.78 -
  929.79 -
  929.80 -	public: // New functions
  929.81 -
  929.82 -		/**
  929.83 -		* Constructs an instance of a CCSIPRouteHeader from a RReadStream
  929.84 -		* @param aReadStream a stream containing the value of the
  929.85 -		*        externalized object (header name not included). 
  929.86 -		* @return an instance of a CSIPRouteHeader
  929.87 -		*/
  929.88 -		IMPORT_C static CSIPHeaderBase* 
  929.89 -			InternalizeValueL(RReadStream& aReadStream);
  929.90 -
  929.91 -
  929.92 -	public: // From CSIPHeaderBase
  929.93 -		
  929.94 -		/**
  929.95 -		* From CSIPHeaderBase CloneL
  929.96 -		*/
  929.97 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  929.98 -
  929.99 -		/**
 929.100 -		* From CSIPHeaderBase Name
 929.101 -		*/
 929.102 -		IMPORT_C RStringF Name() const;
 929.103 -
 929.104 -
 929.105 -	public: // New functions, for internal use
 929.106 -
 929.107 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 929.108 -		static CSIPRouteHeader* NewL(const CSIPRouteHeaderBase& aHeader);		
 929.109 -
 929.110 -	private: // From CSIPHeaderbase
 929.111 -
 929.112 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 929.113 -
 929.114 -	private: // Constructors
 929.115 -
 929.116 -		CSIPRouteHeader();
 929.117 -
 929.118 -	private: // New functions
 929.119 -
 929.120 -		void DoInternalizeValueL(RReadStream& aReadStream);
 929.121 -	};
 929.122 -
 929.123 -#endif // CSIPROUTEHEADER_H
 929.124 -
 929.125 -// End of File
   930.1 --- a/epoc32/include/siprouteheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   930.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   930.3 @@ -1,122 +0,0 @@
   930.4 -/*
   930.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   930.6 -* All rights reserved.
   930.7 -* This component and the accompanying materials are made available
   930.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   930.9 -* which accompanies this distribution, and is available
  930.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  930.11 -*
  930.12 -* Initial Contributors:
  930.13 -* Nokia Corporation - initial contribution.
  930.14 -*
  930.15 -* Contributors:
  930.16 -*
  930.17 -* Description:
  930.18 -* Name        : siprouteheaderbase.h
  930.19 -* Part of     : SIP Codec
  930.20 -* Interface   : SDK API, SIP Codec API
  930.21 -* Version     : SIP/4.0 
  930.22 -*
  930.23 -*/
  930.24 -
  930.25 -
  930.26 -
  930.27 -
  930.28 -#ifndef CSIPROUTEHEADERBASE_H
  930.29 -#define CSIPROUTEHEADERBASE_H
  930.30 -
  930.31 -//  INCLUDES
  930.32 -#include "sipparameterheaderbase.h"
  930.33 -#include "_sipcodecdefs.h"
  930.34 -
  930.35 -// FORWARD DECLARATIONS
  930.36 -class CSIPAddress;
  930.37 -class CSIPHeaderGenericParams;
  930.38 -
  930.39 -// CLASS DECLARATION
  930.40 -/**
  930.41 -* @publishedAll
  930.42 -* @released
  930.43 -*
  930.44 -* A base class for "Route"-, "Record-Route"- and "Service-Route"-headers.
  930.45 -*
  930.46 -*  @lib sipcodec.lib
  930.47 -*/
  930.48 -class CSIPRouteHeaderBase : public CSIPParameterHeaderBase
  930.49 -	{
  930.50 -	public:	// Constructors and destructor
  930.51 -
  930.52 -		/**
  930.53 -		* Destructor, deletes the resources of CSIPRouteHeaderBase.
  930.54 -		*/
  930.55 -		IMPORT_C virtual ~CSIPRouteHeaderBase();
  930.56 -
  930.57 -
  930.58 -	public:	// New functions
  930.59 -		
  930.60 -		/**
  930.61 -		* Sets the name-address
  930.62 -		* @pre aSIPAddress != 0
  930.63 -		* @param aSIPAddress a name-address, the ownership is transferred
  930.64 -		*/
  930.65 -		IMPORT_C void SetSIPAddressL(CSIPAddress* aSIPAddress);
  930.66 -	
  930.67 -		/**
  930.68 -		* Gets the name-address as const
  930.69 -		* @return name-address
  930.70 -		*/
  930.71 -		IMPORT_C const CSIPAddress& SIPAddress() const;
  930.72 -
  930.73 -		/**
  930.74 -		* Gets the name-address
  930.75 -		* @return name-address
  930.76 -		*/
  930.77 -		IMPORT_C CSIPAddress& SIPAddress();
  930.78 -
  930.79 -
  930.80 -	public: // From CSIPHeaderBase, for internal use
  930.81 -
  930.82 -        /**
  930.83 -        * @internalComponent
  930.84 -        */	
  930.85 -		TBool MoreThanOneAllowed() const;
  930.86 -		
  930.87 -        /**
  930.88 -        * @internalComponent
  930.89 -        */		
  930.90 -		TPreferredPlace PreferredPlaceInMessage() const;
  930.91 -
  930.92 -	protected: // Contructors
  930.93 -
  930.94 -		CSIPRouteHeaderBase();
  930.95 -		void ConstructL();
  930.96 -		void ConstructL(CSIPAddress* aSIPAddress);
  930.97 -		void ConstructL(const CSIPRouteHeaderBase& aRouteHeaderBase);
  930.98 -
  930.99 -	protected: // Data
 930.100 -
 930.101 -        /**
 930.102 -        * @internalComponent
 930.103 -        */
 930.104 -		CSIPAddress* iSIPAddress;
 930.105 -		
 930.106 -        /**
 930.107 -        * @internalComponent
 930.108 -        */		
 930.109 -		CSIPHeaderGenericParams* iParams;
 930.110 -
 930.111 -	private: // From CSIPParameterHeaderBase
 930.112 -
 930.113 -		HBufC8* ToTextMandatoryPartLC() const;
 930.114 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 930.115 -		const CSIPParamContainerBase& Params() const;
 930.116 -		CSIPParamContainerBase& Params();
 930.117 -
 930.118 -	private: // For testing purposes
 930.119 -	
 930.120 -		UNIT_TEST(CSIPRouteHeaderBaseTest)
 930.121 -	};
 930.122 -
 930.123 -#endif // CSIPROUTEHEADERBASE_H
 930.124 -
 930.125 -// End of File
   931.1 --- a/epoc32/include/siprseqheader.h	Tue Mar 16 16:12:26 2010 +0000
   931.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   931.3 @@ -1,108 +0,0 @@
   931.4 -/*
   931.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   931.6 -* All rights reserved.
   931.7 -* This component and the accompanying materials are made available
   931.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   931.9 -* which accompanies this distribution, and is available
  931.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  931.11 -*
  931.12 -* Initial Contributors:
  931.13 -* Nokia Corporation - initial contribution.
  931.14 -*
  931.15 -* Contributors:
  931.16 -*
  931.17 -* Description:
  931.18 -* Name        : siprseqheader.h
  931.19 -* Part of     : SIP Codec
  931.20 -* Interface   : SDK API, SIP Codec API
  931.21 -* Version     : SIP/4.0 
  931.22 -*
  931.23 -*/
  931.24 -
  931.25 -
  931.26 -
  931.27 -
  931.28 -#ifndef CSIPRSEQHEADER_H
  931.29 -#define CSIPRSEQHEADER_H
  931.30 -
  931.31 -//  INCLUDES
  931.32 -#include "sipunsignedintheaderbase.h"
  931.33 -#include "_sipcodecdefs.h"
  931.34 -
  931.35 -// CLASS DECLARATION
  931.36 -/**
  931.37 -* @publishedAll
  931.38 -* @released
  931.39 -*
  931.40 -* Class encapsulates a "RSeq"-header value.
  931.41 -*
  931.42 -*  @lib sipcodec.lib
  931.43 -*/
  931.44 -class CSIPRSeqHeader : public CSIPUnsignedIntHeaderBase
  931.45 -    {
  931.46 -    public: // Constructors and destructor
  931.47 -
  931.48 -        /**
  931.49 -        * Constructs a CSIPRSeqHeader from textual representation 
  931.50 -        * of the header's value part.
  931.51 -        * @param aValue a value part of a "RSeq"-header (e.g. "123")
  931.52 -        * @return a new instance of CSIPRSeqHeader
  931.53 -        */
  931.54 -        IMPORT_C static CSIPRSeqHeader* DecodeL(const TDesC8& aValue);
  931.55 -    
  931.56 -        /**
  931.57 -        * Constructor
  931.58 -        * @param aValue the value to set
  931.59 -        */
  931.60 -        IMPORT_C CSIPRSeqHeader(TUint aValue);
  931.61 -    
  931.62 -        /**
  931.63 -        * Destructor, deletes the resources of CSIPRSeqHeader.
  931.64 -        */
  931.65 -        IMPORT_C ~CSIPRSeqHeader();
  931.66 -
  931.67 -
  931.68 -    public: // New functions
  931.69 -
  931.70 -        /**
  931.71 -        * Constructs an instance of a CSIPRSeqHeader from a RReadStream
  931.72 -        * @param aReadStream a stream containing the value of the
  931.73 -        *        externalized header object (header name not included).
  931.74 -        * @return an instance of a CSIPRSeqHeader
  931.75 -        */
  931.76 -        IMPORT_C static CSIPHeaderBase* 
  931.77 -            InternalizeValueL(RReadStream& aReadStream);
  931.78 -
  931.79 -
  931.80 -    public: // From CSIPHeaderBase
  931.81 -
  931.82 -        /**
  931.83 -        * From CSIPHeaderBase CloneL
  931.84 -        */
  931.85 -        IMPORT_C CSIPHeaderBase* CloneL() const;
  931.86 -
  931.87 -        /**
  931.88 -        * From CSIPHeaderBase Name
  931.89 -        */
  931.90 -        IMPORT_C RStringF Name() const;
  931.91 -
  931.92 -
  931.93 -    public: // From CSIPHeaderBase, for internal use
  931.94 -
  931.95 -        /**
  931.96 -        * @internalComponent
  931.97 -        */
  931.98 -        TPreferredPlace PreferredPlaceInMessage() const;
  931.99 -
 931.100 -    public: // New functions, for internal use
 931.101 -
 931.102 -        static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 931.103 -
 931.104 -    private: // For testing purposes
 931.105 -    
 931.106 -        UNIT_TEST(CSIPRSeqHeaderTest)
 931.107 -    };
 931.108 -
 931.109 -#endif // CSIPRSEQHEADER_H
 931.110 -
 931.111 -// End of File
   932.1 --- a/epoc32/include/sipsdkcrkeys.h	Tue Mar 16 16:12:26 2010 +0000
   932.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   932.3 @@ -1,72 +0,0 @@
   932.4 -/*
   932.5 -* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
   932.6 -* All rights reserved.
   932.7 -* This component and the accompanying materials are made available
   932.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   932.9 -* which accompanies this distribution, and is available
  932.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  932.11 -*
  932.12 -* Initial Contributors:
  932.13 -* Nokia Corporation - initial contribution.
  932.14 -*
  932.15 -* Contributors:
  932.16 -*
  932.17 -* Description:
  932.18 -* Name          : sipcrkeys.h
  932.19 -* Part of       : SIP API
  932.20 -* Version       : SIP/6.0
  932.21 -*
  932.22 -*/
  932.23 -
  932.24 -
  932.25 -
  932.26 -#ifndef SIPCRKEYS_H
  932.27 -#define SIPCRKEYS_H
  932.28 -
  932.29 -// INCLUDES
  932.30 -#include <e32def.h>
  932.31 -
  932.32 -/**
  932.33 -* @file
  932.34 -* @publishedAll
  932.35 -* @released
  932.36 -*/
  932.37 -
  932.38 -/**
  932.39 -* Defines configuration parameters used by the SIP stack.
  932.40 -*/
  932.41 -const TUid KCRUidSIP = { 0x101FED88 };
  932.42 -
  932.43 -/**
  932.44 -* Defines SIP transaction timer T1 in milliseconds as per RFC3261.
  932.45 -*/
  932.46 -const TUint32 KSIPTransactionTimerT1 = 0x01;
  932.47 -
  932.48 -/**
  932.49 -* Defines SIP transaction timer T2 in milliseconds as per RFC3261.
  932.50 -*/
  932.51 -const TUint32 KSIPTransactionTimerT2 = 0x02;
  932.52 -
  932.53 -/**
  932.54 -* Defines SIP transaction timer T4 in milliseconds as per RFC3261.
  932.55 -*/
  932.56 -const TUint32 KSIPTransactionTimerT4 = 0x03;	
  932.57 -
  932.58 -/**
  932.59 -* Defines SIP transaction timer T1 for LAN Bearer in milliseconds as per RFC3261.
  932.60 -*/
  932.61 -const TUint32 KSIPTransactionTimerLANT1 = 0x0b;
  932.62 -
  932.63 -/**
  932.64 -* Defines SIP transaction timer T2 for LAN Bearer in milliseconds as per RFC3261.
  932.65 -*/
  932.66 -const TUint32 KSIPTransactionTimerLANT2 = 0x0c;
  932.67 -
  932.68 -/**
  932.69 -* Defines SIP transaction timer T4 for LAN Bearer in milliseconds as per RFC3261.
  932.70 -*/
  932.71 -const TUint32 KSIPTransactionTimerLANT4 = 0x0d;
  932.72 -
  932.73 -#endif // SIPCRKEYS_H
  932.74 -
  932.75 -// End of File
   933.1 --- a/epoc32/include/sipsecurityclientheader.h	Tue Mar 16 16:12:26 2010 +0000
   933.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   933.3 @@ -1,122 +0,0 @@
   933.4 -/*
   933.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   933.6 -* All rights reserved.
   933.7 -* This component and the accompanying materials are made available
   933.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   933.9 -* which accompanies this distribution, and is available
  933.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  933.11 -*
  933.12 -* Initial Contributors:
  933.13 -* Nokia Corporation - initial contribution.
  933.14 -*
  933.15 -* Contributors:
  933.16 -*
  933.17 -* Description:
  933.18 -* Name        : sipsecurityclientheader.h
  933.19 -* Part of     : SIP Codec
  933.20 -* Interface   : SDK API, SIP Codec API
  933.21 -* Version     : SIP/4.0 
  933.22 -*
  933.23 -*/
  933.24 -
  933.25 -
  933.26 -
  933.27 -
  933.28 -#ifndef CSIPSECURITYCLIENTHEADER_H
  933.29 -#define CSIPSECURITYCLIENTHEADER_H
  933.30 -
  933.31 -//  INCLUDES
  933.32 -#include "sipsecurityheaderbase.h"
  933.33 -#include "_sipcodecdefs.h"
  933.34 -
  933.35 -// CLASS DECLARATION
  933.36 -/**
  933.37 -* @publishedAll
  933.38 -* @released
  933.39 -*
  933.40 -* Class provides functions for setting and getting SIP "Security-Client"
  933.41 -* header fields.
  933.42 -*
  933.43 -*  @lib sipcodec.lib
  933.44 -*/
  933.45 -class CSIPSecurityClientHeader : public CSIPSecurityHeaderBase
  933.46 -	{
  933.47 -	public:	// Constructors and destructor
  933.48 -
  933.49 -		/**
  933.50 -		* Constructs a CSIPSecurityClientHeader from textual representation
  933.51 -		* of the header's value part.
  933.52 -		* @param aValue a value part of a "Security-Client"-header
  933.53 -		* @return an array containing 1..n instances of CSIPSecurityClientHeader
  933.54 -		*/
  933.55 -		IMPORT_C static RPointerArray<CSIPSecurityClientHeader> 
  933.56 -			DecodeL(const TDesC8& aValue);
  933.57 -
  933.58 -		/**
  933.59 -		* Creates a new instance of CSIPSecurityClientHeader
  933.60 -		* @param aMechanism a Mechanism-Name parameter 
  933.61 -		*        in the "Security-Client" header
  933.62 -		* @return a new instance of CSIPSecurityClientHeader
  933.63 -		*/
  933.64 -		IMPORT_C static CSIPSecurityClientHeader* 
  933.65 -			NewL(const TDesC8& aMechanism);
  933.66 -
  933.67 -		/**
  933.68 -		* Creates a new instance of CSIPSecurityClientHeader 
  933.69 -		* and puts it to CleanupStack
  933.70 -		* @param aMechanism a Mechanism-Name parameter 
  933.71 -		* in the "Security-Client" header
  933.72 -		* @return a new instance of CSIPSecurityClientHeader
  933.73 -		*/
  933.74 -		IMPORT_C static CSIPSecurityClientHeader* 
  933.75 -			NewLC(const TDesC8& aMechanism);
  933.76 -
  933.77 -		/**
  933.78 -		* Destructor, deletes the resources of CSIPSecurityClientHeader.
  933.79 -		*/
  933.80 -		IMPORT_C ~CSIPSecurityClientHeader();
  933.81 -
  933.82 -
  933.83 -	public: // New functions
  933.84 -
  933.85 -		/**
  933.86 -		* Constructs an instance of a CSIPSecurityClientHeader 
  933.87 -		* from a RReadStream
  933.88 -		* @param aReadStream a stream containing the value of the
  933.89 -		*        externalized object (header name not included). 
  933.90 -		* @return an instance of a CSIPSecurityClientHeader
  933.91 -		*/
  933.92 -
  933.93 -		IMPORT_C static CSIPHeaderBase* 
  933.94 -			InternalizeValueL(RReadStream& aReadStream);
  933.95 -
  933.96 -
  933.97 -	public: // From CSIPHeaderBase
  933.98 -
  933.99 -		/**
 933.100 -		* From CSIPHeaderBase CloneL
 933.101 -		*/
 933.102 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 933.103 -
 933.104 -		/**
 933.105 -		* From CSIPHeaderBase Name
 933.106 -		*/
 933.107 -		IMPORT_C RStringF Name() const;
 933.108 -
 933.109 -
 933.110 -	public: // New functions, for internal use
 933.111 -
 933.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 933.113 -
 933.114 -	private: // New functions
 933.115 -
 933.116 -		CSIPSecurityClientHeader() ;
 933.117 -
 933.118 -	private: // For testing purposes
 933.119 -	
 933.120 -		UNIT_TEST(CSIPSecurityHeaderBaseTest)
 933.121 -    };
 933.122 -
 933.123 -#endif // CSIPSECURITYCLIENTHEADER_H
 933.124 -
 933.125 -// End of File
   934.1 --- a/epoc32/include/sipsecurityheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   934.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   934.3 @@ -1,125 +0,0 @@
   934.4 -/*
   934.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   934.6 -* All rights reserved.
   934.7 -* This component and the accompanying materials are made available
   934.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   934.9 -* which accompanies this distribution, and is available
  934.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  934.11 -*
  934.12 -* Initial Contributors:
  934.13 -* Nokia Corporation - initial contribution.
  934.14 -*
  934.15 -* Contributors:
  934.16 -*
  934.17 -* Description:
  934.18 -* Name        : sipsecurityheaderbase.h
  934.19 -* Part of     : SIP Codec
  934.20 -* Interface   : SDK API, SIP Codec API
  934.21 -* Version     : SIP/4.0 
  934.22 -*
  934.23 -*/
  934.24 -
  934.25 -
  934.26 -
  934.27 -
  934.28 -#ifndef CSIPSECURITYHEADERBASE_H
  934.29 -#define CSIPSECURITYHEADERBASE_H
  934.30 -
  934.31 -//  INCLUDES
  934.32 -#include "sipparameterheaderbase.h"
  934.33 -#include "_sipcodecdefs.h"
  934.34 -
  934.35 -// FORWARD DECLARATIONS
  934.36 -class CSIPSecurityHeaderBaseParams;
  934.37 -
  934.38 -// CLASS DECLARATION
  934.39 -/**
  934.40 -* @publishedAll
  934.41 -* @released
  934.42 -*
  934.43 -* A base class for Security-Client, Security-Server and Security-Verify.
  934.44 -*
  934.45 -*  @lib sipcodec.lib
  934.46 -*/
  934.47 -class CSIPSecurityHeaderBase : public CSIPParameterHeaderBase
  934.48 -	{
  934.49 -	public:	// Constructors and destructor
  934.50 -
  934.51 -		/**
  934.52 -		* Destructor, deletes the resources of CSIPSecurityHeaderBase.
  934.53 -		*/
  934.54 -		IMPORT_C virtual ~CSIPSecurityHeaderBase();
  934.55 -
  934.56 -	public: // New functions
  934.57 -
  934.58 -		/**
  934.59 -		* Gets the value of "q"-parameter
  934.60 -		* @return the "q"-parameter value, zero if not present 
  934.61 -		*/
  934.62 -		IMPORT_C TReal PreferenceParam() const;
  934.63 -
  934.64 -		/**
  934.65 -		* Sets the "q"-parameter value
  934.66 -		* @param aPreferenceValue a "q"-parameter value to set
  934.67 -		*/
  934.68 -		IMPORT_C void SetPreferenceParamL(TReal aPreferenceValue);
  934.69 -
  934.70 -		/**
  934.71 -		* Gets the Mechanism-Name from the Security header
  934.72 -		* @return a Mechanism-Name
  934.73 -		*/
  934.74 -		IMPORT_C const TDesC8& MechanismName() const;
  934.75 -
  934.76 -		/**
  934.77 -		* Sets the Mechanism-Name in the Security header
  934.78 -		* @param aMechanismName a Mechanism-Name
  934.79 -		*/
  934.80 -		IMPORT_C void SetMechanismNameL(const TDesC8& aMechanismName);
  934.81 -
  934.82 -	public: // From CSIPHeaderBase, for internal use
  934.83 -
  934.84 -        /**
  934.85 -        * @internalComponent
  934.86 -        */
  934.87 -		TBool MoreThanOneAllowed() const;
  934.88 -		
  934.89 -        /**
  934.90 -        * @internalComponent
  934.91 -        */		
  934.92 -		TPreferredPlace PreferredPlaceInMessage() const;
  934.93 -
  934.94 -	protected: // Constructors
  934.95 -
  934.96 -		CSIPSecurityHeaderBase();
  934.97 -		void ConstructL();
  934.98 -		void ConstructL(const TDesC8& aMechanismName);
  934.99 -		void ConstructL(const CSIPSecurityHeaderBase& aSecurityHeaderBase);
 934.100 -	
 934.101 -	protected: // New functions	
 934.102 -		
 934.103 -		void DoInternalizeValueL(RReadStream& aReadStream);
 934.104 -
 934.105 -	private: // From CSIPHeaderBase
 934.106 -
 934.107 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 934.108 -
 934.109 -	private: // From CSIPParameterHeaderBase
 934.110 -
 934.111 -		HBufC8* ToTextMandatoryPartLC() const;
 934.112 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 934.113 -		const CSIPParamContainerBase& Params() const;
 934.114 -		CSIPParamContainerBase& Params();
 934.115 -
 934.116 -	private: // Data
 934.117 -
 934.118 -		HBufC8* iMechanismName;
 934.119 -		CSIPSecurityHeaderBaseParams* iParams;
 934.120 -
 934.121 -	private: // For testing purposes
 934.122 -	
 934.123 -		UNIT_TEST(CSIPSecurityHeaderBaseTest)
 934.124 -	};
 934.125 -
 934.126 -#endif // CSIPSECURITYHEADERBASE_H
 934.127 -
 934.128 -// End of File
   935.1 --- a/epoc32/include/sipservertransaction.h	Tue Mar 16 16:12:26 2010 +0000
   935.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   935.3 @@ -1,190 +0,0 @@
   935.4 -/*
   935.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   935.6 -* All rights reserved.
   935.7 -* This component and the accompanying materials are made available
   935.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   935.9 -* which accompanies this distribution, and is available
  935.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  935.11 -*
  935.12 -* Initial Contributors:
  935.13 -* Nokia Corporation - initial contribution.
  935.14 -*
  935.15 -* Contributors:
  935.16 -*
  935.17 -* Description:
  935.18 -* Name        : sipservertransaction.h
  935.19 -* Part of     : SIP Client
  935.20 -* Interface   : SDK API, SIP API
  935.21 -* Version     : 1.0
  935.22 -*
  935.23 -*/
  935.24 -
  935.25 -
  935.26 -
  935.27 -#ifndef CSIPSERVERTRANSACTION_H
  935.28 -#define CSIPSERVERTRANSACTION_H
  935.29 -
  935.30 -// INCLUDES
  935.31 -#include "siptransactionbase.h"
  935.32 -
  935.33 -// FORWARD DECLARATIONS
  935.34 -class CSIPRequestElements;
  935.35 -class MSIPResponseSender;
  935.36 -class CSIPConnection;
  935.37 -class CSIPDialogImplementation;
  935.38 -
  935.39 -// CLASS DECLARATION
  935.40 -
  935.41 -/**
  935.42 -*  @publishedAll
  935.43 -*  @released
  935.44 -*
  935.45 -*  Class for managing SIP server transactions.
  935.46 -*  It provides services for creating, ending
  935.47 -*  and getting SIP transaction parameters.
  935.48 -*  Client cannot instantiate this class.
  935.49 -*  
  935.50 -*  @lib sipclient
  935.51 -*/
  935.52 -class CSIPServerTransaction: public CSIPTransactionBase
  935.53 -	{
  935.54 -	public: // Destructor
  935.55 -    
  935.56 -        /**
  935.57 -        * Destructor
  935.58 -		*/
  935.59 -		IMPORT_C ~CSIPServerTransaction();
  935.60 -
  935.61 -	public: // New functions
  935.62 -	
  935.63 -        /**
  935.64 -		* Sends response and ends the transaction;
  935.65 -		* The user must not send 100 Trying response. Leaves on failure.
  935.66 -        * @pre aElements!=0
  935.67 -        * @pre State()==ETrying || State()==EProceeding
  935.68 -		* @pre CSIPConnection::State()==EActive
  935.69 -		* @pre ResponseAllowed()==ETrue		
  935.70 -		* @param aElements contains Status Code, optional Reason Phrase and
  935.71 -        *   optional SIP message headers and body. Ownership is transferred.
  935.72 -		* @leave KErrArgument if aElements == NULL
  935.73 -		* @leave KErrGeneral if ResponseAllowed() == EFalse
  935.74 -		* @leave KErrSIPInvalidTransactionState if State()!=ETrying and
  935.75 -		*	State()!=EProceeding
  935.76 -		* @leave KErrSIPInvalidDialogState if sending response to a request
  935.77 -		*	within dialog, and the dialog is in terminated state.
  935.78 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  935.79 -		*	object has been deleted
  935.80 -		* @capability NetworkServices
  935.81 -		*/
  935.82 -		IMPORT_C void SendResponseL(CSIPResponseElements *aElements);
  935.83 -
  935.84 -	    /**
  935.85 -		* Gets the request elements
  935.86 -		* @return Request elements. Ownership is not transferred.
  935.87 -		*/
  935.88 -		IMPORT_C const CSIPRequestElements* RequestElements() const;
  935.89 -
  935.90 -        /**
  935.91 -		* Checks if the response sending is allowed for this server
  935.92 -        * transaction. For instance response is not allowed in ACK transaction.
  935.93 -		* @return ETrue if response sending is allowed, EFalse otherwise
  935.94 -		*/
  935.95 -		IMPORT_C TBool ResponseAllowed() const;
  935.96 -        
  935.97 -	public: // New functions, for internal use
  935.98 -	
  935.99 -        /**
 935.100 -		* Sets a new respose sender, replacing the current sender.
 935.101 -		*
 935.102 -        * @param aSender Response sender to be used from now on. Ownership is
 935.103 -        *   	 transferred.		
 935.104 -		*/
 935.105 -        void SetResponseSender(MSIPResponseSender* aSender);
 935.106 -
 935.107 -		/**
 935.108 -		* If the request was received inside a dialog, returns the dialog.		
 935.109 -		*
 935.110 -        * @return CSIPDialogImplementation* The dialog inside which the request
 935.111 -        *	was received, or NULL. Ownership is not transferred.
 935.112 -		*/
 935.113 -		CSIPDialogImplementation* Dialog() const;
 935.114 -
 935.115 -        /**
 935.116 -	    * Obtains the associated CSIPConnection instance. If connection can't
 935.117 -        * be accessed anymore, this function leaves.
 935.118 -        *	
 935.119 -	    * @return CSIPConnection
 935.120 -	    */
 935.121 -        CSIPConnection& SIPConnectionL();
 935.122 -
 935.123 -        /**
 935.124 -		* Update the MTransactionAssociation to point to aAssociation.
 935.125 -		*
 935.126 -        * @param aAssociation Associated object		
 935.127 -		*/
 935.128 -        void ReAssociateL(MTransactionAssociation& aAssociation);
 935.129 -
 935.130 -        /**
 935.131 -		* Removes, but does not delete, request elements from
 935.132 -        * aServerTransaction.
 935.133 -        *
 935.134 -		* @param aServerTransaction Server transaction from which response
 935.135 -        *   elements are removed. Ownership is not transferred.
 935.136 -		*/
 935.137 -        static void DetachRequestElements(TAny* aServerTransaction);
 935.138 -
 935.139 -	public: // Constructors, for internal use
 935.140 -        /**
 935.141 -		* Creates a server transaction.
 935.142 -		*
 935.143 -        * @param aRequestId RequestId for the transaction to use
 935.144 -        * @param aAssociation Object with which the transaction is associated
 935.145 -        * @param aElements Request elements. Ownership is transferred.
 935.146 -        * @return New object. Ownership is transferred.
 935.147 -		*/
 935.148 -		static CSIPServerTransaction*
 935.149 -            NewL(TUint32 aRequestId,
 935.150 -                 MTransactionAssociation& aAssociation,
 935.151 -                 CSIPRequestElements* aElements);
 935.152 -
 935.153 -        /**
 935.154 -		* Creates a server transaction and pushes it to cleanup stack.
 935.155 -		*
 935.156 -        * @param aRequestId RequestId for the transaction to use
 935.157 -        * @param aAssociation Object with which the transaction is associated
 935.158 -        * @param aElements Request elements. Ownership is transferred.
 935.159 -        * @return New object. Ownership is transferred.
 935.160 -		*/
 935.161 -		static CSIPServerTransaction*
 935.162 -            NewLC(TUint32 aRequestId,
 935.163 -                  MTransactionAssociation& aAssociation,
 935.164 -                  CSIPRequestElements* aElements);
 935.165 -
 935.166 -	private: // Constructors
 935.167 -		CSIPServerTransaction(TUint32 aRequestId,
 935.168 -                              MTransactionAssociation& aAssociation);
 935.169 -
 935.170 -        /**
 935.171 -		* Second phase constructor.
 935.172 -		*
 935.173 -		* @pre aElements!=0
 935.174 -        * @param aElements Request elements. Ownership is transferred.        
 935.175 -		*/
 935.176 -        void ConstructL(CSIPRequestElements* aElements);
 935.177 -
 935.178 -	private: // Data
 935.179 -        CSIPRequestElements* iRequestElements;
 935.180 -
 935.181 -        //This interface is used for sending the response.
 935.182 -        //CSIPServerTransaction owns iResponseSender.
 935.183 -        MSIPResponseSender* iResponseSender;
 935.184 -
 935.185 -	private: // For testing purposes        
 935.186 -
 935.187 -	    UNIT_TEST(CSIPServerTransaction_Test)
 935.188 -        UNIT_TEST(CSIP_Test)
 935.189 -
 935.190 -		__DECLARE_TEST;
 935.191 -	};
 935.192 -
 935.193 -#endif
   936.1 --- a/epoc32/include/sipstrings.h	Tue Mar 16 16:12:26 2010 +0000
   936.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   936.3 @@ -1,99 +0,0 @@
   936.4 -/*
   936.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   936.6 -* All rights reserved.
   936.7 -* This component and the accompanying materials are made available
   936.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   936.9 -* which accompanies this distribution, and is available
  936.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  936.11 -*
  936.12 -* Initial Contributors:
  936.13 -* Nokia Corporation - initial contribution.
  936.14 -*
  936.15 -* Contributors:
  936.16 -*
  936.17 -* Description:
  936.18 -* Name        : sipstrings.h
  936.19 -* Part of     : SIP Codec
  936.20 -* Interface   : SDK API, SIP Codec API
  936.21 -* Version     : SIP/4.0 
  936.22 -*
  936.23 -*/
  936.24 -
  936.25 -
  936.26 -
  936.27 -#ifndef SIPSTRINGS_H
  936.28 -#define SIPSTRINGS_H
  936.29 -
  936.30 -//  INCLUDES
  936.31 -#include <e32base.h>
  936.32 -#include <stringpool.h>
  936.33 -#include "_sipcodecdefs.h"
  936.34 -
  936.35 -// FORWARD DECLARATIONS
  936.36 -class CSIPStrings;
  936.37 -
  936.38 -// CLASS DECLARATION
  936.39 -/**
  936.40 - * @publishedAll
  936.41 - * @released
  936.42 - *
  936.43 - * This class defines string pool for SIP Codec.
  936.44 - * The client of SIP Codec must call OpenL() before 
  936.45 - * invoking any function of SIP Codec classes.
  936.46 - * The client must close the string pool when finished using
  936.47 - * SIP Codec classes.
  936.48 - *
  936.49 - * @lib sipcodec.lib
  936.50 - */
  936.51 -class SIPStrings
  936.52 -	{
  936.53 -	public:	// Constructors and destructor
  936.54 - 		
  936.55 -		/**
  936.56 -		* Opens SIP Codec string pool.
  936.57 -		* Implemented with a reference count.
  936.58 -		*/
  936.59 -		IMPORT_C static void OpenL();
  936.60 -
  936.61 -		/**
  936.62 -		* Closes SIP Codec string pool.
  936.63 -		* In other words decrements reference count and if it reaches
  936.64 -		* zero, closes the string pool.	 
  936.65 -		* The user must not call Close() if it has not called OpenL().
  936.66 -		*/
  936.67 -		IMPORT_C static void Close(); 
  936.68 -
  936.69 -
  936.70 -	public: // New functions
  936.71 -	
  936.72 -		/**
  936.73 -		* Gets a case-insensitive string specified 
  936.74 -		* in the original string table.
  936.75 -		*
  936.76 -		* @param aIndex The string table enumeration value
  936.77 -		* @return Initialised RStringF object
  936.78 -		*/
  936.79 -		IMPORT_C static RStringF StringF(TInt aIndex);
  936.80 -
  936.81 -		/**
  936.82 -		* Gets the string pool used by SIP Codec.
  936.83 -		*
  936.84 -		* @return RStringPool: A handle to a string pool
  936.85 -		*/
  936.86 -		IMPORT_C static RStringPool Pool();
  936.87 -
  936.88 -		/**
  936.89 -		* Gets the string table used by SIP Codec.
  936.90 -		*
  936.91 -		* @return TStringTable&: The string pool table
  936.92 -		*/
  936.93 -		IMPORT_C static const TStringTable& Table();
  936.94 -	
  936.95 -	private:
  936.96 -
  936.97 -		static CSIPStrings* Strings();
  936.98 -		};
  936.99 -
 936.100 -#endif // SIPSTRINGS_H
 936.101 -
 936.102 -// End of File
   937.1 --- a/epoc32/include/sipsubscribedialogassoc.h	Tue Mar 16 16:12:26 2010 +0000
   937.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   937.3 @@ -1,354 +0,0 @@
   937.4 -/*
   937.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   937.6 -* All rights reserved.
   937.7 -* This component and the accompanying materials are made available
   937.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   937.9 -* which accompanies this distribution, and is available
  937.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  937.11 -*
  937.12 -* Initial Contributors:
  937.13 -* Nokia Corporation - initial contribution.
  937.14 -*
  937.15 -* Contributors:
  937.16 -*
  937.17 -* Description:
  937.18 -* Name        : sipsubscribedialogassoc.h
  937.19 -* Part of     : SIP Client
  937.20 -* Interface   : SDK API, SIP Client API
  937.21 -* Version     : 1.0
  937.22 -*
  937.23 -*/
  937.24 -
  937.25 -
  937.26 -
  937.27 -#ifndef CSIPSUBSCRIBEDIALOGASSOC_H
  937.28 -#define CSIPSUBSCRIBEDIALOGASSOC_H
  937.29 -
  937.30 -// INCLUDES
  937.31 -#include "sipdialogassocbase.h"
  937.32 -
  937.33 -// CONSTANTS
  937.34 -
  937.35 -// FORWARD DECLARATIONS
  937.36 -class CUri8;
  937.37 -class CSIPToHeader;
  937.38 -class CSIPFromHeader;
  937.39 -class CSIPContactHeader;
  937.40 -class CSIPEventHeader;
  937.41 -class CSIPMessageElements;
  937.42 -class MSIPRegistrationContext;
  937.43 -class CSIPConnection;
  937.44 -
  937.45 -// CLASS DECLARATION
  937.46 -
  937.47 -/** 
  937.48 -* @publishedAll
  937.49 -* @released
  937.50 -*
  937.51 -* Class for managing SIP SUBSCRIBE dialog associations.
  937.52 -* It provides services for creating, using and terminating SIP SUBSCRIBE
  937.53 -* dialog associations. The client can have multiple SUBSRIBE dialog 
  937.54 -* associations per same SIP dialog.
  937.55 -* Implementation handles SUBSCRIBE on the dialog level defined by Call-Id,
  937.56 -* local and remote tags; "Event" header semantics are client's responsibility
  937.57 -* 
  937.58 -* @lib sipclient.lib
  937.59 -*/
  937.60 -class CSIPSubscribeDialogAssoc : public CSIPDialogAssocBase    
  937.61 -	{
  937.62 -	public: // Constructors and destructor
  937.63 -		/**
  937.64 -		* Two-phased constructor.
  937.65 -		* Should be used if response to the SIP request to be sent
  937.66 -		* will create a SIP dialog association.
  937.67 -		* @pre aEvent != 0
  937.68 -		* @param aDialog a dialog to be associated with
  937.69 -		* @param aEvent an event to subscribe to; the ownership is transferred
  937.70 -        * @return New object; the ownership is transferred
  937.71 -        * @leave KErrArgument if aEvent == 0
  937.72 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
  937.73 -		*	object has been deleted
  937.74 -		*/
  937.75 -		IMPORT_C static CSIPSubscribeDialogAssoc*
  937.76 -			NewL(CSIPDialog& aDialog,
  937.77 -				 CSIPEventHeader* aEvent);
  937.78 -
  937.79 -		/**
  937.80 -		* Two-phased constructor.
  937.81 -		* Must be used if response to the SIP request to be sent
  937.82 -		* will create a SIP dialog association.
  937.83 -		* @param aDialog a dialog to be associated with
  937.84 -		* @param aEvent an event to subscribe to; the ownership is transferred
  937.85 -        * @return New object, ownership is transferred
  937.86 -        * @leave KErrArgument if aEvent == 0
  937.87 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
  937.88 -		*	object has been deleted
  937.89 -		*/
  937.90 -		IMPORT_C static CSIPSubscribeDialogAssoc*
  937.91 -			NewLC(CSIPDialog& aDialog,
  937.92 -				  CSIPEventHeader* aEvent);
  937.93 -
  937.94 -        /**
  937.95 -        * Two-phased constructor
  937.96 -        * @pre aFrom != 0 
  937.97 -		* @pre aRemoteUri != 0
  937.98 -		* @pre aEvent != 0
  937.99 -		* The user of the class must not define tags in From-header and
 937.100 -		* To-header.
 937.101 -        * @param aConnection a SIP connection to be used with
 937.102 -        *        dialog association
 937.103 -        * @param aFrom originator's address; the ownership is transfered
 937.104 -        * @param aRemoteUri a remote target URI that identifies a resource that
 937.105 -        *		 the request is addressed to.
 937.106 -		* @param aEvent an event to subscribe to; the ownership is transferred
 937.107 -        * @param aTo logical recipient's address; if not defined
 937.108 -        *        the remote target uri will be used for To-header
 937.109 -        *        construction; the ownership is transfered
 937.110 -        * @param aContact a contact to be used in dialog creation. Must be
 937.111 -        *        given only if user intends to re-direct future requests; 
 937.112 -        *        the ownership is transfered
 937.113 -        * @return New object; the ownership is transferred.
 937.114 -        * @leave KErrArgument if aFrom == 0, aRemoteUri == 0 or aEvent == 0
 937.115 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 937.116 -		*	object has been deleted
 937.117 -        */
 937.118 -        IMPORT_C static CSIPSubscribeDialogAssoc*
 937.119 -            NewL(CSIPConnection& aConnection,
 937.120 -                 CSIPFromHeader* aFrom,
 937.121 -				 CUri8* aRemoteUri,
 937.122 -				 CSIPEventHeader* aEvent,
 937.123 -                 CSIPToHeader* aTo=0,
 937.124 -                 CSIPContactHeader* aContact=0);
 937.125 -
 937.126 -        /**
 937.127 -        * Two-phased constructor
 937.128 -        * @pre aFrom != 0 
 937.129 -		* @pre aRemoteUri != 0
 937.130 -		* @pre aEvent != 0
 937.131 -		* The user of the class must not define tags in From-header and
 937.132 -		* To-header.
 937.133 -        * @param aConnection a SIP connection to be used with
 937.134 -        *        dialog association
 937.135 -        * @param aFrom originator's address; the ownership is transfered
 937.136 -        * @param aRemoteUri a remote target URI that identifies a resource that
 937.137 -        *		 the request is addressed to.
 937.138 -		* @param aEvent an event to subscribe to; the ownership is transferred
 937.139 -        * @param aTo logical recipient's address; if not defined
 937.140 -        *        the remote target uri will be used for To-header
 937.141 -        *        construction; the ownership is transfered
 937.142 -        * @param aContact a contact to be used in dialog creation. Must be
 937.143 -        *        given only if user intends to re-direct future requests; 
 937.144 -        *        the ownership is transfered
 937.145 -        * @return New object; the ownership is transferred.
 937.146 -        * @leave KErrArgument if aFrom == 0, aRemoteUri == 0 or aEvent == 0
 937.147 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 937.148 -		*	object has been deleted
 937.149 -        */
 937.150 -        IMPORT_C static CSIPSubscribeDialogAssoc*
 937.151 -            NewLC(CSIPConnection& aConnection,
 937.152 -                  CSIPFromHeader* aFrom,
 937.153 -				  CUri8* aRemoteUri,
 937.154 -				  CSIPEventHeader* aEvent,
 937.155 -                  CSIPToHeader* aTo =0,                 
 937.156 -                  CSIPContactHeader* aContact=0);
 937.157 -        
 937.158 -        /**
 937.159 -        * Two-phased constructor
 937.160 -		* @pre aRemoteUri != 0
 937.161 -		* @pre aEvent != 0
 937.162 -		* The user of the class must not define tags in From-header
 937.163 -		* and To-header.
 937.164 -        * @pre aContext.IsContextActive()==ETrue
 937.165 -        * @param aConnection a SIP connection to be used with
 937.166 -        *        dialog association 
 937.167 -        * @param aRemoteUri a remote target URI that identifies a resource that
 937.168 -        *		 the request is targeted to.
 937.169 -        * @param aContext used for selecting outbound 
 937.170 -        *        proxy and originator's address (AOR) and contact		
 937.171 -        * @param aEvent an event to subscribe to; the ownership is transferred
 937.172 -        * @param aFrom originator's address. If not defined it will be
 937.173 -        *        constructed using registration context (User's AOR);
 937.174 -        *        the ownership is transfered
 937.175 -        * @param aTo logical recipient's address; if not defined
 937.176 -        *        the remote target uri will be used for To-header
 937.177 -        *        construction; the ownership is transfered
 937.178 -        * @param aContact a contact to be used in dialog creation. Must be
 937.179 -        *        given only if user intends to re-direct future requests; 
 937.180 -        *        the ownership is transfered
 937.181 -        * @return New object; the ownership is transferred.
 937.182 -        * @leave KErrArgument if aRemoteUri == 0 or aEvent == 0
 937.183 -        * @leave KErrSIPInvalidRegistrationState
 937.184 -        *        if aContext.IsContextActive()==EFalse
 937.185 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 937.186 -		*	object has been deleted
 937.187 -        */
 937.188 -        IMPORT_C static CSIPSubscribeDialogAssoc*
 937.189 -            NewL(CSIPConnection& aConnection,                                    
 937.190 -                 CUri8* aRemoteUri,
 937.191 -                 const MSIPRegistrationContext& aContext,
 937.192 -                 CSIPEventHeader* aEvent,
 937.193 -                 CSIPFromHeader* aFrom = 0,
 937.194 -	             CSIPToHeader* aTo = 0,
 937.195 -	             CSIPContactHeader* aContact = 0);
 937.196 -
 937.197 -       /**
 937.198 -        * Two-phased constructor        
 937.199 -		* @pre aRemoteUri != 0
 937.200 -		* @pre aEvent != 0
 937.201 -		* The user of the class must not define tags in From-header
 937.202 -		* and To-header.
 937.203 -        * @pre aContext.IsContextActive()==ETrue
 937.204 -        * @param aConnection a SIP connection to be used with
 937.205 -        *        dialog association 
 937.206 -        * @param aRemoteUri a remote target URI that identifies a resource that
 937.207 -        *		 the request is targeted to.
 937.208 -        * @param aContext used for selecting outbound 
 937.209 -        *        proxy and originator's address (AOR) and contact
 937.210 -        * @param aEvent an event to subscribe to; the ownership is transferred
 937.211 -        * @param aFrom originator's address. If not defined it will be
 937.212 -        *        constructed using registration context (User's AOR);
 937.213 -        *        the ownership is transfered
 937.214 -        * @param aTo logical recipient's address; if not defined
 937.215 -        *        the remote target uri will be used for To-header
 937.216 -        *        construction; the ownership is transfered
 937.217 -        * @param aContact a contact to be used in dialog creation. Must be
 937.218 -        *        given only if user intends to re-direct future requests; 
 937.219 -        *        the ownership is transfered
 937.220 -        * @return New object; the ownership is transferred.
 937.221 -        * @leave KErrArgument if aRemoteUri == 0 or aEvent == 0
 937.222 -        * @leave KErrSIPInvalidRegistrationState
 937.223 -        *        if aContext.IsContextActive()==EFalse
 937.224 -        * @leave KErrSIPResourceNotAvailable if a required SIP Client API
 937.225 -		*	object has been deleted
 937.226 -        */
 937.227 -        IMPORT_C static CSIPSubscribeDialogAssoc*
 937.228 -            NewLC(CSIPConnection& aConnection,                                    
 937.229 -                  CUri8* aRemoteUri,
 937.230 -                  const MSIPRegistrationContext& aContext,
 937.231 -                  CSIPEventHeader* aEvent,
 937.232 -                  CSIPFromHeader* aFrom = 0,
 937.233 -	              CSIPToHeader* aTo = 0,
 937.234 -	              CSIPContactHeader* aContact = 0);
 937.235 -
 937.236 -		/**
 937.237 -		* Destructor
 937.238 -		*/
 937.239 -		IMPORT_C ~CSIPSubscribeDialogAssoc();
 937.240 -
 937.241 -	public: //New functions
 937.242 -		/**
 937.243 -		* Creates SUBSCRIBE and sends it to the remote target.		
 937.244 -		* 101-199 or 2xx response to SUBSCRIBE will create a dialog association
 937.245 -		* in case of the first SUBSCRIBE request within this dialog.
 937.246 -		* Client must not provide Event-header in the optional message headers.
 937.247 -        *
 937.248 -		* @pre Dialog().Connection().State()==EActive
 937.249 -		* @pre Dialog().State()==CSIPDialog::EInit ||
 937.250 -		*      Dialog().State()==CSIPDialog::EConfirmed
 937.251 -		* @param aElements optional SIP message headers and body. Ownership is
 937.252 -        *   transferred.
 937.253 -		* @param aRefresh if set the transaction will be refreshed at given
 937.254 -		*                 interval. Interval must be defined by including
 937.255 -		*                 Expires-header. Ownership is transferred.
 937.256 -		* @return SUBSCRIBE SIP transaction. Ownership is transferred.
 937.257 -		* @leave KErrSIPInvalidDialogState if Dialog().State() is incorrect
 937.258 -		* @capability NetworkServices
 937.259 -		*/
 937.260 -		IMPORT_C CSIPClientTransaction*
 937.261 -            SendSubscribeL(CSIPMessageElements* aElements=0,
 937.262 -						   CSIPRefresh* aRefresh=0);
 937.263 -
 937.264 -		/**
 937.265 -        * Updates the subscription. Note that update can be done when 2xx
 937.266 -        * response is received to the initial SUBSCRIBE or to update.
 937.267 -        * Client must not provide Event-header in the optional message headers.
 937.268 -        * @pre aElements != 0
 937.269 - 		* @pre Dialog().Connection().State()==EActive
 937.270 -		*      Dialog().State()==CSIPDialog::EConfirmed       
 937.271 -        * @param aElements contains user SIP headers and content; the ownership
 937.272 -        *		 is transferred
 937.273 -        * @return SUBSCRIBE SIP client transaction; the ownership is transferred
 937.274 -        * @leave KErrArgument if aElements == 0 or aElements contain
 937.275 -        *	Event-header
 937.276 -        * @leave KErrSIPInvalidDialogState if Dialog().State() is incorrect
 937.277 -        * @capability NetworkServices
 937.278 -        */            			   
 937.279 -        IMPORT_C CSIPClientTransaction* UpdateL(CSIPMessageElements* aElements);
 937.280 -        
 937.281 -		/**
 937.282 -		* Creates (un)SUBSCRIBE and sends it to the remote target.
 937.283 -		* Possible associated refresh will be terminated as well.
 937.284 -		* Client must not provide Event-header in the optional message headers.
 937.285 -		* @pre Dialog().Connection().State()==EActive
 937.286 -		* @pre Dialog().State()==CSIPDialog::EConfirmed
 937.287 -		* @param aElements optional SIP message headers and body. Ownership is
 937.288 -        *   transferred.
 937.289 -		* @return SUBSCRIBE SIP transaction. Ownership is transferred.
 937.290 -		* @leave KErrSIPInvalidDialogState if Dialog().State() is incorrect
 937.291 -		* @capability NetworkServices
 937.292 -		*/
 937.293 -		IMPORT_C CSIPClientTransaction*
 937.294 -            SendUnsubscribeL(CSIPMessageElements* aElements=0);
 937.295 -
 937.296 -		/**
 937.297 -		* Gets associated refresh in case the user has requested
 937.298 -		* the refresh of the SIP subscription.
 937.299 -		* Note that refreshed SUBSCRIBE dialog association cannot be
 937.300 -		* terminated nor updated using the returned object.
 937.301 -		* @return Associated refresh or 0 pointer if the user has not requested
 937.302 -        *   a refresh. Ownership is not transferred.
 937.303 -		*/
 937.304 -		IMPORT_C const CSIPRefresh* SIPRefresh() const;
 937.305 -
 937.306 -		/**
 937.307 -		* Gets an event to which the subscription is done
 937.308 -		* @return an event
 937.309 -		*/
 937.310 -		IMPORT_C const CSIPEventHeader& Event() const;    
 937.311 -
 937.312 -	public: // New functions, for internal use
 937.313 -        
 937.314 -        /**
 937.315 -        * @internalComponent
 937.316 -        */        
 937.317 -        CSIPRefresh* FindRefresh(TUint32 aRefreshId);
 937.318 -        
 937.319 -        static CSIPSubscribeDialogAssoc* NewLC(CSIPConnection& aConnection,
 937.320 -								CUri8* aRemoteUri,
 937.321 -								CSIPEventHeader* aEvent,
 937.322 -                                CSIPFromHeader* aFrom,
 937.323 -                                CSIPToHeader* aTo,
 937.324 -			                    CSIPContactHeader* aContact,
 937.325 -			                    const MSIPRegistrationContext* aContext);
 937.326 -
 937.327 -        void ConnectionLost();
 937.328 -
 937.329 -        CSIPClientTransaction*
 937.330 -            DoSendSubscribeL(CSIPMessageElements* aElements,
 937.331 -                             CSIPRefresh* aRefresh,
 937.332 -                             TBool aWithinDialog);        
 937.333 -
 937.334 -        CSIPClientTransaction* 
 937.335 -            DoSendUnsubscribeL(CSIPMessageElements* aElements);
 937.336 -
 937.337 -        /**
 937.338 -        * @internalComponent
 937.339 -        */            
 937.340 -        void DeletingRefresh(CSIPRefresh& aRefresh, TUint32 aRefreshId);
 937.341 -
 937.342 - 	private: // Constructors
 937.343 -        CSIPSubscribeDialogAssoc();
 937.344 -
 937.345 -    private: // Data
 937.346 -        //If the subscription is refreshed, this is the used CSIPRefresh
 937.347 -        //instance, otherwise this is NULL. CSIPSubscribeDialogAssoc owns this.
 937.348 -        CSIPRefresh* iRefresh;
 937.349 -
 937.350 -        CSIPEventHeader* iEvent;
 937.351 -
 937.352 -	private: // For testing purposes
 937.353 -        UNIT_TEST(CSIP_Test)
 937.354 -        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 937.355 -	};
 937.356 -
 937.357 -#endif
   938.1 --- a/epoc32/include/sipsubscriptionstateheader.h	Tue Mar 16 16:12:26 2010 +0000
   938.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   938.3 @@ -1,191 +0,0 @@
   938.4 -/*
   938.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   938.6 -* All rights reserved.
   938.7 -* This component and the accompanying materials are made available
   938.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   938.9 -* which accompanies this distribution, and is available
  938.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  938.11 -*
  938.12 -* Initial Contributors:
  938.13 -* Nokia Corporation - initial contribution.
  938.14 -*
  938.15 -* Contributors:
  938.16 -*
  938.17 -* Description:
  938.18 -* Name        : sipsubscriptionstateheader.h
  938.19 -* Part of     : SIP Codec
  938.20 -* Interface   : SDK API, SIP Codec API
  938.21 -* Version     : SIP/4.0 
  938.22 -*
  938.23 -*/
  938.24 -
  938.25 -
  938.26 -
  938.27 -
  938.28 -#ifndef CSIPSUBSCRIPTIONSTATEHEADER_H
  938.29 -#define CSIPSUBSCRIPTIONSTATEHEADER_H
  938.30 -
  938.31 -//  INCLUDES
  938.32 -#include "sipparameterheaderbase.h"
  938.33 -#include "_sipcodecdefs.h"
  938.34 -
  938.35 -// FORWARD DECLARATIONS
  938.36 -class CSIPSubscriptionStateHeaderParams;
  938.37 -
  938.38 -// CLASS DECLARATION
  938.39 -/**
  938.40 -* @publishedAll
  938.41 -* @released
  938.42 -*
  938.43 -* Class provides functions for setting and getting SIP "Subscription-State"
  938.44 -* header fields.
  938.45 -*
  938.46 -*  @lib sipcodec.lib
  938.47 -*/
  938.48 -class CSIPSubscriptionStateHeader : public CSIPParameterHeaderBase
  938.49 -	{
  938.50 -	public:	// Constructors and destructor
  938.51 -
  938.52 -		/**
  938.53 -		* Constructs a CSIPSubscriptionStateHeader from textual representation 
  938.54 -		* of the header's value part.
  938.55 -		* @param aValue a value part of a "Subscription-State"-header
  938.56 -		* @return a new instance of CSIPSubscriptionStateHeader
  938.57 -		*/
  938.58 -		IMPORT_C static CSIPSubscriptionStateHeader* DecodeL(const TDesC8& aValue);
  938.59 -
  938.60 -		/**
  938.61 -		* Creates a new instance of CSIPSubscriptionStateHeader
  938.62 -		* @param aSubStateValue a substate-value value
  938.63 -		* @return a new instance of CSIPSubscriptionStateHeader
  938.64 -		*/
  938.65 -		IMPORT_C static CSIPSubscriptionStateHeader* 
  938.66 -			NewL(const TDesC8& aSubStateValue);
  938.67 -
  938.68 -		/**
  938.69 -		* Creates a new instance of CSIPSubscriptionStateHeader 
  938.70 -		* and puts it to CleanupStack
  938.71 -		* @param aSubStateValue a substate-value value
  938.72 -		* @return a new instance of CSIPSubscriptionStateHeader
  938.73 -		*/
  938.74 -		IMPORT_C static CSIPSubscriptionStateHeader* 
  938.75 -			NewLC(const TDesC8& aSubStateValue);
  938.76 -
  938.77 -		/**
  938.78 -		* Destructor, deletes the resources of CSIPSubscriptionStateHeader.
  938.79 -		*/
  938.80 -		IMPORT_C ~CSIPSubscriptionStateHeader();
  938.81 -
  938.82 -
  938.83 -	public: // New functions
  938.84 -	
  938.85 -		/**
  938.86 -		* Gets the substate-value parameter from the "Subscription-State" header
  938.87 -		* @return the substate-value parameter
  938.88 -		*/
  938.89 -		IMPORT_C const TDesC8& SubStateValue() const;
  938.90 -
  938.91 -		/**
  938.92 -		* Sets the substate-value parameter in the "Subscription-State" header; 
  938.93 -		* @param aSubStateValue a substate-value parameter to set
  938.94 -		*/
  938.95 -		IMPORT_C void SetSubStateValueL(const TDesC8& aSubStateValue);
  938.96 -
  938.97 -		/**
  938.98 -		* Gets the value of the "expires"-parameter
  938.99 -		* @return "expires"-parameter or KErrNotFound if not present
 938.100 -		*/
 938.101 -		IMPORT_C TInt ExpiresParameter() const;
 938.102 -
 938.103 -		/**
 938.104 -		* Sets the "expires"-parameter
 938.105 -		* @pre aExpiresParam >= 0
 938.106 -		* @param aExpiresParam a "expires"-parameter value to set
 938.107 -		*/
 938.108 -		IMPORT_C void SetExpiresParameterL(TInt aExpiresParam);
 938.109 -
 938.110 -		/**
 938.111 -		* Gets the value of the "retry-after"-parameter
 938.112 -		* @return "retry-after"-parameter or KErrNotFound if not present
 938.113 -		*/
 938.114 -		IMPORT_C TInt RetryAfterParameter() const;
 938.115 -
 938.116 -		/**
 938.117 -		* Sets the "retry-after"-parameter
 938.118 -		* @pre aRetryAfterParam >= 0
 938.119 -		* @param aRetryAfterParam a "retry-after"-parameter value to set
 938.120 -		*/
 938.121 -		IMPORT_C void SetRetryAfterParameterL(TInt aRetryAfterParam);
 938.122 -	
 938.123 -		/**
 938.124 -		* Constructs an instance of a CSIPSubscriptionStateHeader 
 938.125 -		* from a RReadStream
 938.126 -		* @param aReadStream a stream containing the value of the
 938.127 -		*        externalized object (header name not included). 
 938.128 -		* @return an instance of a CSIPSubscriptionStateHeader
 938.129 -		*/
 938.130 -		IMPORT_C static CSIPHeaderBase* 
 938.131 -			InternalizeValueL(RReadStream& aReadStream);
 938.132 -
 938.133 -
 938.134 -	public: // From CSIPHeaderBase
 938.135 -		
 938.136 -		/**
 938.137 -		* From CSIPHeaderBase CloneL
 938.138 -		*/
 938.139 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 938.140 -
 938.141 -		/**
 938.142 -		* From CSIPHeaderBase Name
 938.143 -		*/
 938.144 -		IMPORT_C RStringF Name() const;
 938.145 -
 938.146 -
 938.147 -	public: // From CSIPHeaderBase, for internal use
 938.148 -
 938.149 -        /**
 938.150 -        * @internalComponent
 938.151 -        */
 938.152 -		TPreferredPlace PreferredPlaceInMessage() const;
 938.153 -	
 938.154 -	public: // New functions, for internal use
 938.155 -
 938.156 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 938.157 -
 938.158 -	private: // From CSIPHeaderBase
 938.159 -
 938.160 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 938.161 -
 938.162 -	private: // From CSIPParameterHeaderBase
 938.163 -
 938.164 -		HBufC8* ToTextMandatoryPartLC() const;
 938.165 -		void ParseMandatoryPartL(const TDesC8& aMandatoryPart);
 938.166 -		const CSIPParamContainerBase& Params() const;
 938.167 -		CSIPParamContainerBase& Params();
 938.168 -
 938.169 -	private: // Constructors
 938.170 -
 938.171 -		CSIPSubscriptionStateHeader();
 938.172 -		void ConstructL();
 938.173 -		void ConstructL(const TDesC8& aSubStateValue);
 938.174 -        void ConstructL (const CSIPSubscriptionStateHeader&
 938.175 -            aSubscriptionStateHeader);
 938.176 -	
 938.177 -	private: // New functions 
 938.178 -
 938.179 -		void DoInternalizeValueL(RReadStream& aReadStream);
 938.180 -
 938.181 -	private: // Data
 938.182 -
 938.183 -		HBufC8* iSubStateValue;
 938.184 -		CSIPSubscriptionStateHeaderParams* iParams;
 938.185 -
 938.186 -	private: // For testing purposes
 938.187 -	
 938.188 -		UNIT_TEST(CSIPSubscriptionStateHeaderTest)
 938.189 -	};
 938.190 -
 938.191 -
 938.192 -#endif // CSIPSUBSCRIPTIONSTATEHEADER_H
 938.193 -
 938.194 -// End of File
   939.1 --- a/epoc32/include/sipsupportedheader.h	Tue Mar 16 16:12:26 2010 +0000
   939.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   939.3 @@ -1,133 +0,0 @@
   939.4 -/*
   939.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   939.6 -* All rights reserved.
   939.7 -* This component and the accompanying materials are made available
   939.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   939.9 -* which accompanies this distribution, and is available
  939.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  939.11 -*
  939.12 -* Initial Contributors:
  939.13 -* Nokia Corporation - initial contribution.
  939.14 -*
  939.15 -* Contributors:
  939.16 -*
  939.17 -* Description:
  939.18 -* Name        : sipsupportedheader.h
  939.19 -* Part of     : SIP Codec
  939.20 -* Interface   : SDK API, SIP Codec API
  939.21 -* Version     : SIP/4.0 
  939.22 -*
  939.23 -*/
  939.24 -
  939.25 -
  939.26 -
  939.27 -
  939.28 -#ifndef CSIPSUPPORTEDHEADER_H
  939.29 -#define CSIPSUPPORTEDHEADER_H
  939.30 -
  939.31 -//  INCLUDES
  939.32 -#include "siptokenheaderbase.h"
  939.33 -#include "_sipcodecdefs.h"
  939.34 -
  939.35 -// CLASS DECLARATION
  939.36 -/**
  939.37 -* @publishedAll
  939.38 -* @released
  939.39 -*
  939.40 -* Class provides functions for setting and getting SIP "Supported" header.
  939.41 -*
  939.42 -* @lib sipcodec.lib
  939.43 -*/
  939.44 -class CSIPSupportedHeader : public CSIPTokenHeaderBase
  939.45 -	{
  939.46 -	public:	// Constructors and destructor
  939.47 -
  939.48 -		/**
  939.49 -		* Constructs a CSIPSupportedHeader from textual representation 
  939.50 -		* of the header's value part.
  939.51 -		* @param aValue a value part of a "Supported"-header
  939.52 -		* @return an array containing 1..n instances of CSIPSupportedHeader  
  939.53 -		*/
  939.54 -		IMPORT_C static RPointerArray<CSIPSupportedHeader> 
  939.55 -			DecodeL(const TDesC8& aValue);
  939.56 -
  939.57 -		/**
  939.58 -		* Creates a new instance of CSIPSupportedHeader
  939.59 -		* @param aValue a tag value 
  939.60 -		* @return a new instance of CSIPSupportedHeader
  939.61 -		*/
  939.62 -		IMPORT_C static CSIPSupportedHeader* NewL(RStringF aValue);
  939.63 -
  939.64 -		/**
  939.65 -		* Creates a new instance of CSIPSupportedHeader 
  939.66 -		* and puts it to CleanupStack
  939.67 -		* @param aValue a tag value   
  939.68 -		* @return a new instance of CSIPSupportedHeader
  939.69 -		*/
  939.70 -		IMPORT_C static CSIPSupportedHeader* NewLC(RStringF aValue);
  939.71 -
  939.72 -		/**
  939.73 -		* Destructor, deletes the resources of CSIPSupportedHeader.
  939.74 -		*/
  939.75 -		IMPORT_C ~CSIPSupportedHeader();
  939.76 -
  939.77 -
  939.78 -	public: // New functions
  939.79 -
  939.80 -		/**
  939.81 -		* Constructs an instance of a CSIPSupportedHeader from a RReadStream
  939.82 -		* @param aReadStream a stream containing the value of the
  939.83 -		*        externalized object (header name not included). 
  939.84 -		* @return an instance of a CSIPSupportedHeader
  939.85 -		*/
  939.86 -		IMPORT_C static CSIPHeaderBase* 
  939.87 -			InternalizeValueL(RReadStream& aReadStream);
  939.88 -
  939.89 -
  939.90 -	public: // From CSIPHeaderBase
  939.91 -		
  939.92 -		/**
  939.93 -		* From CSIPHeaderBase CloneL
  939.94 -		*/
  939.95 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  939.96 -
  939.97 -		/**
  939.98 -		* From CSIPHeaderBase Name
  939.99 -		*/
 939.100 -		IMPORT_C RStringF Name() const;
 939.101 -
 939.102 -
 939.103 -	public: // From CSIPHeaderBase, for internal use
 939.104 -
 939.105 -        /**
 939.106 -        * @internalComponent
 939.107 -        */
 939.108 -		TBool HasCompactName() const;
 939.109 -		
 939.110 -        /**
 939.111 -        * @internalComponent
 939.112 -        */		
 939.113 -		RStringF CompactName() const;
 939.114 -		
 939.115 -        /**
 939.116 -        * @internalComponent
 939.117 -        */		
 939.118 -		TPreferredPlace PreferredPlaceInMessage() const;
 939.119 -
 939.120 -	public: // New functions, for internal use
 939.121 -
 939.122 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 939.123 -
 939.124 -	private: // New functions
 939.125 -
 939.126 -		CSIPSupportedHeader();
 939.127 -		CSIPSupportedHeader(const CSIPSupportedHeader& aHeader);
 939.128 -
 939.129 -	private: // For testing purposes
 939.130 -	
 939.131 -		UNIT_TEST(CSIPSupportedHeaderTest)
 939.132 -	};
 939.133 -
 939.134 -#endif // CSIPSUPPORTEDHEADER_H
 939.135 -
 939.136 -// End of File
   940.1 --- a/epoc32/include/siptimestampheader.h	Tue Mar 16 16:12:26 2010 +0000
   940.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   940.3 @@ -1,159 +0,0 @@
   940.4 -/*
   940.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   940.6 -* All rights reserved.
   940.7 -* This component and the accompanying materials are made available
   940.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   940.9 -* which accompanies this distribution, and is available
  940.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  940.11 -*
  940.12 -* Initial Contributors:
  940.13 -* Nokia Corporation - initial contribution.
  940.14 -*
  940.15 -* Contributors:
  940.16 -*
  940.17 -* Description:
  940.18 -* Name          : siptimestampheader.h
  940.19 -* Part of       : SIP Codec
  940.20 -* Version       : SIP/4.0 
  940.21 -*
  940.22 -*/
  940.23 -
  940.24 -
  940.25 -
  940.26 -
  940.27 -#ifndef CSIPTIMESTAMPHEADER_H
  940.28 -#define CSIPTIMESTAMPHEADER_H
  940.29 -
  940.30 -//  INCLUDES
  940.31 -#include "sipheaderbase.h"
  940.32 -#include "_sipcodecdefs.h"
  940.33 -
  940.34 -// CLASS DECLARATION
  940.35 -/**
  940.36 -* @publishedAll
  940.37 -* @released
  940.38 -*
  940.39 -* Class for a SIP Timestamp header.
  940.40 -*
  940.41 -* @lib sipcodec.lib
  940.42 -*/
  940.43 -class CSIPTimestampHeader : public CSIPHeaderBase
  940.44 -	{
  940.45 -	public:	// Constructors and destructor
  940.46 -
  940.47 -		/**
  940.48 -		* Constructs a CSIPTimestampHeader from textual representation 
  940.49 -		* of the header's value part.
  940.50 -		* @param aValue a value part of a "Timestamp"-header (e.g. "12 3.4")
  940.51 -		* @returns a new instance of CSIPTimestampHeader
  940.52 -		*/
  940.53 -		IMPORT_C static CSIPTimestampHeader* DecodeL(const TDesC8& aValue);
  940.54 -
  940.55 -        /**
  940.56 -		* Constructor
  940.57 -        * @param aTimestamp a timestamp value to set.
  940.58 -        * @param aDealy a delay value to set.
  940.59 -		*/
  940.60 -		IMPORT_C CSIPTimestampHeader(TReal aTimestamp);
  940.61 -
  940.62 -        /**
  940.63 -		* Destructor
  940.64 -		*/
  940.65 -		IMPORT_C ~CSIPTimestampHeader ();
  940.66 -
  940.67 -
  940.68 -	public: // New functions
  940.69 -
  940.70 -        /**
  940.71 -        * Set the timestamp from the "Timestamp" header.
  940.72 -        * @param aTimestamp a timestamp to set.
  940.73 -        */
  940.74 -        IMPORT_C void SetTimestamp(TReal aTimestamp);
  940.75 -
  940.76 -        /**
  940.77 -        * Gets the timestamp from the "Timestamp" header.
  940.78 -        * @return a timestamp value.
  940.79 -        */
  940.80 -        IMPORT_C TReal Timestamp() const;
  940.81 -
  940.82 -        /**
  940.83 -        * Check if the delay-part is present
  940.84 -        * @return a delay value.
  940.85 -        */
  940.86 -        IMPORT_C TBool HasDelay() const;
  940.87 -
  940.88 -        /**
  940.89 -        * Set the delay-part of the "Timestamp" header.
  940.90 -        * @param aDelay a delay to set.
  940.91 -        */
  940.92 -        IMPORT_C void SetDelay(TReal aDelay);
  940.93 -
  940.94 -        /**
  940.95 -        * Gets the delay-part of the "Timestamp" header, 
  940.96 -        * if delay-part is present
  940.97 -        * @return a delay value or zero if HasDelay() == EFalse
  940.98 -        */
  940.99 -        IMPORT_C TReal Delay() const;
 940.100 -
 940.101 -		/**
 940.102 -		* Constructs an instance of a CSIPTimestampHeader from a RReadStream
 940.103 -		* @param aReadStream a stream containing the value of the
 940.104 -		*	     externalized object (header name not included). 
 940.105 -		* @return an instance of a CSIPTimestampHeader
 940.106 -		*/
 940.107 -		IMPORT_C static CSIPHeaderBase* 
 940.108 -			InternalizeValueL(RReadStream& aReadStream);
 940.109 -
 940.110 -	public: // From CSIPHeaderBase
 940.111 -
 940.112 -		/**
 940.113 -		* From CSIPHeaderBase CloneL
 940.114 -		*/
 940.115 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 940.116 -		
 940.117 -		/**
 940.118 -		* From CSIPHeaderBase Name
 940.119 -		*/		
 940.120 -		IMPORT_C RStringF Name() const;
 940.121 -
 940.122 -		/**
 940.123 -		* From CSIPHeaderBase ToTextValueL
 940.124 -		*/
 940.125 -		IMPORT_C HBufC8* ToTextValueL() const;
 940.126 -
 940.127 -
 940.128 -	public: // From CSIPHeaderBase, for internal use
 940.129 -
 940.130 -        /**
 940.131 -        * @internalComponent
 940.132 -        */	
 940.133 -		TPreferredPlace PreferredPlaceInMessage() const;
 940.134 -
 940.135 -	public: // New functions, for internal use
 940.136 -
 940.137 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 940.138 -
 940.139 -	private: // From CSIPHeaderBase
 940.140 -
 940.141 -		void ExternalizeValueL (RWriteStream& aWriteStream) const;
 940.142 -
 940.143 -	private: // New functions
 940.144 -
 940.145 -		void ParseL(const TDesC8& aValue);
 940.146 -        void DoInternalizeValueL(RReadStream& aReadStream);
 940.147 -
 940.148 -	private: // Data
 940.149 -
 940.150 -		TReal iTimestamp;
 940.151 -        TBool iHasDelay;
 940.152 -        TReal iDelay;
 940.153 -
 940.154 -	private: // For testing purposes
 940.155 -	
 940.156 -		UNIT_TEST(CSIPTimestampHeaderTest)
 940.157 -	};
 940.158 -
 940.159 -
 940.160 -#endif // end of CSIPTIMESTAMPHEADER_H
 940.161 -
 940.162 -// End of File
   941.1 --- a/epoc32/include/siptoheader.h	Tue Mar 16 16:12:26 2010 +0000
   941.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   941.3 @@ -1,140 +0,0 @@
   941.4 -/*
   941.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   941.6 -* All rights reserved.
   941.7 -* This component and the accompanying materials are made available
   941.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   941.9 -* which accompanies this distribution, and is available
  941.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  941.11 -*
  941.12 -* Initial Contributors:
  941.13 -* Nokia Corporation - initial contribution.
  941.14 -*
  941.15 -* Contributors:
  941.16 -*
  941.17 -* Description:
  941.18 -* Name        : siptoheader.h
  941.19 -* Part of     : SIP Codec
  941.20 -* Interface   : SDK API, SIP Codec API
  941.21 -* Version     : SIP/4.0 
  941.22 -*
  941.23 -*/
  941.24 -
  941.25 -
  941.26 -
  941.27 -
  941.28 -#ifndef CSIPTOHEADER_H
  941.29 -#define CSIPTOHEADER_H
  941.30 -
  941.31 -//  INCLUDES
  941.32 -#include "sipfromtoheaderbase.h"
  941.33 -#include "_sipcodecdefs.h"
  941.34 -
  941.35 -// CLASS DECLARATION
  941.36 -/**
  941.37 -* @publishedAll
  941.38 -* @released
  941.39 -*
  941.40 -* Class provides functions for setting and getting SIP "To" header fields.
  941.41 -*
  941.42 -* @lib sipcodec.lib
  941.43 -*/
  941.44 -class CSIPToHeader : public CSIPFromToHeaderBase
  941.45 -	{
  941.46 -	public:	// Constructors and destructor
  941.47 -
  941.48 -		/**
  941.49 -		* Constructs a CSIPToHeader from textual representation 
  941.50 -		* of the header's value part.
  941.51 -		* @param aValue a value part of a "To"-header (e.g. "User <user@host>")
  941.52 -		* @return a new instance of CSIPToHeader 
  941.53 -		*/
  941.54 -		IMPORT_C static CSIPToHeader* DecodeL(const TDesC8& aValue);
  941.55 -
  941.56 -		/**
  941.57 -		* Creates a new instance of CSIPToHeader
  941.58 -		* @pre aSIPAddress != 0
  941.59 -		* @param aSIPAddress a name-address, the ownership is transferred,
  941.60 -		* @return a new instance of CSIPToHeader
  941.61 -		*/
  941.62 -		IMPORT_C static CSIPToHeader* NewL(CSIPAddress* aSIPAddress);
  941.63 -
  941.64 -		/**
  941.65 -		* Creates a new instance of CSIPToHeader and puts it to CleanupStack
  941.66 -		* @pre aSIPAddress != 0
  941.67 -		* @param aSIPAddress a name-address, the ownership is transferred,
  941.68 -		* @return a new instance of CSIPToHeader
  941.69 -		*/
  941.70 -		IMPORT_C static CSIPToHeader* NewLC(CSIPAddress* aSIPAddress);
  941.71 -
  941.72 -		/**
  941.73 -		* Creates a deep-copy of a CSIPFromToHeaderBase
  941.74 -		* Note that this function can be used for creating a To-header
  941.75 -		* using an existing From-header.
  941.76 -		* @param aHeader CSIPFromToHeaderBase to be copied
  941.77 -		* @return a new instance of CSIPToHeader
  941.78 -		*/
  941.79 -
  941.80 -		IMPORT_C static CSIPToHeader* 
  941.81 -			NewL(const CSIPFromToHeaderBase& aHeader);
  941.82 -
  941.83 -		/**
  941.84 -		* Creates a deep-copy of a CSIPFromToHeaderBase and 
  941.85 -		* puts it to CleanupStack
  941.86 -		* Note that this function can be used for creating a To-header
  941.87 -		* using an existing From-header.
  941.88 -		* @param aHeader CSIPFromToHeaderBaseto to be copied
  941.89 -		* @return a new instance of CSIPToHeader
  941.90 -		*/
  941.91 -		IMPORT_C static CSIPToHeader* 
  941.92 -			NewLC(const CSIPFromToHeaderBase& aHeader);
  941.93 -
  941.94 -		/**
  941.95 -		* Destructor, deletes the resources of CSIPToHeader.
  941.96 -		*/
  941.97 -		IMPORT_C ~CSIPToHeader();
  941.98 -
  941.99 -
 941.100 -	public: // New functions
 941.101 -
 941.102 -		/**
 941.103 -		* Constructs an instance of a CSIPToHeader from a RReadStream
 941.104 -		* @param aReadStream a stream containing the value of the
 941.105 -		*        externalized object (header name not included). 
 941.106 -		* @return an instance of a CSIPToHeader
 941.107 -		*/
 941.108 -		IMPORT_C static CSIPHeaderBase* 
 941.109 -			InternalizeValueL(RReadStream& aReadStream);
 941.110 -
 941.111 -
 941.112 -	public: // From CSIPHeaderBase
 941.113 -		
 941.114 -		/**
 941.115 -		* From CSIPHeaderBase CloneL
 941.116 -		*/
 941.117 -		IMPORT_C CSIPHeaderBase* CloneL() const;
 941.118 -
 941.119 -		/**
 941.120 -		* From CSIPHeaderBase Name
 941.121 -		*/
 941.122 -		IMPORT_C RStringF Name() const;
 941.123 -
 941.124 -
 941.125 -	public: // From CSIPHeaderBase, for internal use
 941.126 -
 941.127 -        /**
 941.128 -        * @internalComponent
 941.129 -        */
 941.130 -		RStringF CompactName() const;
 941.131 -
 941.132 -	public: // New functions, for internal use
 941.133 -
 941.134 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 941.135 -
 941.136 -	private: // Constructors
 941.137 -
 941.138 -		CSIPToHeader();
 941.139 -	};
 941.140 -
 941.141 -#endif // CSIPTOHEADER_H
 941.142 -
 941.143 -// End of File
   942.1 --- a/epoc32/include/siptokenheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   942.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   942.3 @@ -1,114 +0,0 @@
   942.4 -/*
   942.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   942.6 -* All rights reserved.
   942.7 -* This component and the accompanying materials are made available
   942.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   942.9 -* which accompanies this distribution, and is available
  942.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  942.11 -*
  942.12 -* Initial Contributors:
  942.13 -* Nokia Corporation - initial contribution.
  942.14 -*
  942.15 -* Contributors:
  942.16 -*
  942.17 -* Description:
  942.18 -* Name        : siptokenheaderbase.h
  942.19 -* Part of     : SIP Codec
  942.20 -* Interface   : SDK API, SIP Codec API
  942.21 -* Version     : SIP/4.0 
  942.22 -*
  942.23 -*/
  942.24 -
  942.25 -
  942.26 -
  942.27 -
  942.28 -#ifndef CSIPTOKENHEADERBASE_H
  942.29 -#define CSIPTOKENHEADERBASE_H
  942.30 -
  942.31 -//  INCLUDES
  942.32 -#include "sipheaderbase.h"
  942.33 -#include "_sipcodecdefs.h"
  942.34 -
  942.35 -// CLASS DECLARATION
  942.36 -/**
  942.37 -* @publishedAll
  942.38 -* @released
  942.39 -*
  942.40 -* A base class for SIP headers having form "Name: token *(COMMA token)"
  942.41 -*
  942.42 -* @lib sipcodec.lib
  942.43 -*/
  942.44 -class CSIPTokenHeaderBase : public CSIPHeaderBase
  942.45 -	{
  942.46 -	public:	// Constructors and destructor
  942.47 -
  942.48 -		/**
  942.49 -		* Destructor, deletes the resources of CSIPTokenHeaderBase.
  942.50 -		*/
  942.51 -		IMPORT_C virtual ~CSIPTokenHeaderBase();
  942.52 -
  942.53 -
  942.54 -	public: // New functions
  942.55 -
  942.56 -		/**
  942.57 -		* Sets the header value as a token 
  942.58 -		* @param aValue a value to set
  942.59 -		*/
  942.60 -		IMPORT_C void SetValueL(RStringF aValue);
  942.61 -	
  942.62 -		/**
  942.63 -		* Gets the header value as a token 
  942.64 -		* @return the header value
  942.65 -		*/
  942.66 -		IMPORT_C RStringF Value() const;
  942.67 -
  942.68 -
  942.69 -	public: // From CSIPHeaderBase
  942.70 -
  942.71 -		/**
  942.72 -		* From CSIPHeaderBase ToTextValueL
  942.73 -		*/
  942.74 -		IMPORT_C HBufC8* ToTextValueL() const;
  942.75 -
  942.76 -
  942.77 -	public: // From CSIPHeaderBase, for internal use
  942.78 -
  942.79 -        /**
  942.80 -        * @internalComponent
  942.81 -        */
  942.82 -		virtual TBool MoreThanOneAllowed() const;
  942.83 -
  942.84 -	protected: // Constructors
  942.85 -
  942.86 -		CSIPTokenHeaderBase();
  942.87 -	    CSIPTokenHeaderBase(const CSIPTokenHeaderBase& aHeader);
  942.88 -		void ConstructL(const TDesC8& aValue, TBool aEmptyValueAllowed=EFalse);
  942.89 -		void ConstructL(RStringF aValue, TBool aEmptyValueAllowed=EFalse);
  942.90 -		
  942.91 -	protected: // New functions		
  942.92 -		
  942.93 -		void DoInternalizeValueL(RReadStream& aReadStream);
  942.94 -
  942.95 -	protected: // Data	
  942.96 -	
  942.97 -        /**
  942.98 -        * @internalComponent
  942.99 -        */	
 942.100 -		RStringF iValue;
 942.101 -
 942.102 -	private: // From CSIPHeaderBase
 942.103 -
 942.104 -		void ExternalizeValueL(RWriteStream& aWriteStream) const;
 942.105 -
 942.106 -	private: // New functions
 942.107 -
 942.108 -		void SetValueL(const TDesC8& aValue);	
 942.109 -
 942.110 -	private: // For testing purposes
 942.111 -	
 942.112 -		UNIT_TEST(CSIPTokenHeaderBaseTest)
 942.113 -	};
 942.114 -
 942.115 -#endif // CSIPTOKENHEADERBASE_H
 942.116 -
 942.117 -// End of File
   943.1 --- a/epoc32/include/siptransactionbase.h	Tue Mar 16 16:12:26 2010 +0000
   943.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   943.3 @@ -1,230 +0,0 @@
   943.4 -/*
   943.5 -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
   943.6 -* All rights reserved.
   943.7 -* This component and the accompanying materials are made available
   943.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   943.9 -* which accompanies this distribution, and is available
  943.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  943.11 -*
  943.12 -* Initial Contributors:
  943.13 -* Nokia Corporation - initial contribution.
  943.14 -*
  943.15 -* Contributors:
  943.16 -*
  943.17 -* Description:
  943.18 -* Name        : siptransactionbase.h
  943.19 -* Part of     : SIP Client
  943.20 -* Interface   : SDK API, SIP Client API
  943.21 -* Version     : 1.0
  943.22 -*
  943.23 -*/
  943.24 -
  943.25 -
  943.26 -
  943.27 -#ifndef CSIPTRANSACTIONBASE_H
  943.28 -#define CSIPTRANSACTIONBASE_H
  943.29 -
  943.30 -// INCLUDES
  943.31 -#include <e32base.h>
  943.32 -#include <stringpool.h>
  943.33 -#include "_sipcodecdefs.h"
  943.34 -
  943.35 -// FORWARD DECLARATIONS
  943.36 -class CSIPResponseElements;
  943.37 -class MTransactionAssociation;
  943.38 -
  943.39 -// CLASS DECLARATION
  943.40 -
  943.41 -/**
  943.42 -*  @publishedAll
  943.43 -*  @released
  943.44 -*
  943.45 -*  Base class for managing SIP transactions.
  943.46 -*  It provides services for querying transaction type and its state.
  943.47 -*
  943.48 -*  This class is an abstract class and cannot be instantiated.
  943.49 -*  @lib sipclient
  943.50 -*/
  943.51 -class CSIPTransactionBase: public CBase
  943.52 -	{
  943.53 -	public:
  943.54 -		/** SIP transaction state */
  943.55 -		enum TState
  943.56 -			{
  943.57 -			/** Trying state */
  943.58 -			ETrying,
  943.59 -			/** Calling state */
  943.60 -			ECalling,
  943.61 -			/** Proceeding state */
  943.62 -			EProceeding,
  943.63 -			/** Completed state */
  943.64 -			ECompleted,
  943.65 -			/** Confirmed state */
  943.66 -			EConfirmed,
  943.67 -			/** Terminated state */
  943.68 -			ETerminated,
  943.69 -			/** Object is being constructed and is not yet ready for use */
  943.70 -			EConstructing
  943.71 -			};
  943.72 -
  943.73 -	public: // Destructor
  943.74 -        /**
  943.75 -        * Destructor
  943.76 -        * @internalComponent       
  943.77 -		*/
  943.78 -		virtual ~CSIPTransactionBase();
  943.79 -
  943.80 -	public: // New functions
  943.81 -        /**
  943.82 -        * Gets the SIP transaction type
  943.83 -        * @return SIP transaction type
  943.84 -        */
  943.85 -		IMPORT_C RStringF Type() const;
  943.86 -
  943.87 -		/**
  943.88 -		* Gets SIP transaction state
  943.89 -		* @return SIP transaction state
  943.90 -		* @leave KErrSIPResourceNotAvailable if a required SIP Client API
  943.91 -		*	object has been deleted
  943.92 -		*/
  943.93 -		IMPORT_C CSIPTransactionBase::TState StateL();
  943.94 -
  943.95 -		/**
  943.96 -		* Checks the if the actual object
  943.97 -		* is of type CSIPClientTransaction.
  943.98 -		* @return ETrue if object is of type CSIPClientTransaction and
  943.99 -		*         EFalse otherwise
 943.100 -		*/
 943.101 -		IMPORT_C TBool IsSIPClientTransaction() const;
 943.102 -
 943.103 -		/**
 943.104 -		* Compares this object to another object also having
 943.105 -		* CSIPTransactionBase base class
 943.106 -		* The function has to be implemented in each of the sub-classes.
 943.107 -		* @param aTransaction a CSIPTransactionBase object to compare
 943.108 -		* @return ETrue if the objects are equal otherwise EFalse
 943.109 -		*/
 943.110 -        IMPORT_C TBool
 943.111 -            operator==(const CSIPTransactionBase& aTransaction) const;
 943.112 -
 943.113 -	public: // New functions, for internal use
 943.114 -        /**
 943.115 -		* Obtains the RequestId of the transaction.
 943.116 -		*
 943.117 -        * @return RequestId
 943.118 -		*/
 943.119 -        TUint32 RequestId() const;
 943.120 -
 943.121 -        /**
 943.122 -		* Clears the MTransactionAssociation. After this the object can't be
 943.123 -        * used anymore and it is expected that user will delete it soon.
 943.124 -        *
 943.125 -        * @param aAssociation Object requesting the detach
 943.126 -        * @internalComponent      
 943.127 -		*/
 943.128 -        virtual void Detach(const MTransactionAssociation& aAssociation);
 943.129 -
 943.130 -        /**
 943.131 -		* Changes the transaction state.
 943.132 -        *
 943.133 -        * @param aNextState State into which transaction moves
 943.134 -		*/
 943.135 -        void ChangeState(CSIPTransactionBase::TState aNextState);
 943.136 -
 943.137 -        /**
 943.138 -        * Determines whether this transaction has an effect on the associated
 943.139 -        * dialog's state.
 943.140 -        *
 943.141 -		* @return ETrue if transaction has an effect on the dialog's state,
 943.142 -        *   EFalse otherwise.
 943.143 -		*/
 943.144 -        TBool AffectsDialogState() const;
 943.145 -
 943.146 -        /**
 943.147 -		* Sets this transaction to affect the dialog state.
 943.148 -		*/
 943.149 -        void SetAffectsDialogState();
 943.150 -
 943.151 -        /**
 943.152 -		* Determines whether the transaction type is a target refresh request.
 943.153 -        *
 943.154 -        * @param aType Type of transaction
 943.155 -        * @return ETrue If the transaction is a target refresh request, EFalse
 943.156 -        *   otherwise.
 943.157 -		*/
 943.158 -        static TBool IsTargetRefresh(RStringF aType);
 943.159 -
 943.160 -        /**
 943.161 -		* Stores response elements. Depending on the status code, transaction
 943.162 -        * may enter another state.
 943.163 -        *
 943.164 -        * @param aElements Response elements, ownership is transferred.
 943.165 -		*/
 943.166 -        void SetResponseElements(CSIPResponseElements* aElements);
 943.167 -
 943.168 -    protected: // Constructors
 943.169 -        CSIPTransactionBase(TBool aIsClientTransaction,
 943.170 -                            TUint32 aRequestId,
 943.171 -                            MTransactionAssociation& aAssociation);
 943.172 -
 943.173 -        void ConstructL(RStringF aType);
 943.174 -
 943.175 -	protected: // New functions, for internal use
 943.176 -        /**
 943.177 -		* Checks that iAssociation is available (not NULL). If iAssociation is
 943.178 -        * NULL, it means user has deleted a resource needed by
 943.179 -        * CSIPTransactionBase, and this function leaves.
 943.180 -		*/
 943.181 -        void CheckAssociationL() const;
 943.182 -
 943.183 -        /**
 943.184 -		* Gets response elements.
 943.185 -        *
 943.186 -		* @return Response elements. Ownership isn't transferred.
 943.187 -		*/
 943.188 -        const CSIPResponseElements* ResponseElements() const;
 943.189 -
 943.190 -	protected: // Data
 943.191 -	
 943.192 -        /**
 943.193 -        * RequestId received from SIP client
 943.194 -        * @internalComponent
 943.195 -        */       
 943.196 -        TUint32 iRequestId;
 943.197 -
 943.198 -        /**
 943.199 -        * Every transaction is associated to exactly one other object:
 943.200 -        * CSIP, CSIPConnection, CSIPRegistrationBinding or CSIPDialogAssocBase
 943.201 -        * @internalComponent
 943.202 -        */        
 943.203 -        MTransactionAssociation* iAssociation;
 943.204 -
 943.205 -    private: // Data
 943.206 -		RStringF iType;
 943.207 -
 943.208 -        //ETrue is the transaction is a client transaction, EFalse otherwise
 943.209 -        TBool iIsClientTransaction;
 943.210 -
 943.211 -        //Current transaction state
 943.212 -        CSIPTransactionBase::TState iState;
 943.213 -
 943.214 -        //ETrue if the transaction has an effect on the dialog state in case
 943.215 -        //the transaction is associated with a dialog.
 943.216 -        //EFalse otherwise.
 943.217 -        TBool iAffectsDialogState;
 943.218 -
 943.219 -        //SIP response elements
 943.220 -        CSIPResponseElements* iResponseElements;
 943.221 -
 943.222 -	private: // For testing purposes
 943.223 -	    UNIT_TEST(CSIP_Test)
 943.224 -        UNIT_TEST(CSIPServerTransaction_Test)
 943.225 -        UNIT_TEST(CSIPSubscribeDialogAssoc_Test)
 943.226 -        UNIT_TEST(CSIPInviteDialogAssoc_Test)
 943.227 -        UNIT_TEST(CSIPNotifyDialogAssoc_Test)
 943.228 -        UNIT_TEST(CSIPConnection_Test)
 943.229 -
 943.230 -        __DECLARE_TEST;
 943.231 -    };
 943.232 -
 943.233 -#endif
   944.1 --- a/epoc32/include/sipunsignedintheaderbase.h	Tue Mar 16 16:12:26 2010 +0000
   944.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   944.3 @@ -1,102 +0,0 @@
   944.4 -/*
   944.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   944.6 -* All rights reserved.
   944.7 -* This component and the accompanying materials are made available
   944.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   944.9 -* which accompanies this distribution, and is available
  944.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  944.11 -*
  944.12 -* Initial Contributors:
  944.13 -* Nokia Corporation - initial contribution.
  944.14 -*
  944.15 -* Contributors:
  944.16 -*
  944.17 -* Description:
  944.18 -* Name        : sipunsignedintheaderbase.h
  944.19 -* Part of     : SIP Codec
  944.20 -* Interface   : SDK API, SIP Codec API
  944.21 -* Version     : SIP/4.0 
  944.22 -*
  944.23 -*/
  944.24 -
  944.25 -
  944.26 -
  944.27 -
  944.28 -#ifndef CSIPUNSIGNEDINTHEADERBASE_H
  944.29 -#define CSIPUNSIGNEDINTHEADERBASE_H
  944.30 -
  944.31 -//  INCLUDES
  944.32 -#include "sipheaderbase.h"
  944.33 -#include "_sipcodecdefs.h"
  944.34 -
  944.35 -
  944.36 -// CLASS DECLARATION
  944.37 -/**
  944.38 -* @publishedAll
  944.39 -* @released
  944.40 -*
  944.41 -* A base class for SIP headers having form: "Name: 1*DIGIT"
  944.42 -*
  944.43 -* @lib sipcodec.lib
  944.44 -*/
  944.45 -class CSIPUnsignedIntHeaderBase : public CSIPHeaderBase
  944.46 -	{
  944.47 -	public:	// Constructors and destructor
  944.48 -
  944.49 -		/**
  944.50 -		* Destructor, deletes the resources of CSIPUnsignedIntHeaderBase.
  944.51 -		*/
  944.52 -		IMPORT_C virtual ~CSIPUnsignedIntHeaderBase();
  944.53 -
  944.54 -
  944.55 -	public: // New functions
  944.56 -
  944.57 -		/**
  944.58 -		* Sets the header value as an unsigned integer 
  944.59 -		* @param aValue a value to set
  944.60 -		*/
  944.61 -		IMPORT_C void SetValue(TUint aValue);
  944.62 -	
  944.63 -		/**
  944.64 -		* Gets the header value as an unsigned integer 
  944.65 -		* @return the header value
  944.66 -		*/
  944.67 -		IMPORT_C TUint Value() const;
  944.68 -
  944.69 -
  944.70 -	public: // From CSIPHeaderBase
  944.71 -
  944.72 -		/**
  944.73 -		* From CSIPHeaderBase ToTextValueL
  944.74 -		*/
  944.75 -		IMPORT_C HBufC8* ToTextValueL() const;
  944.76 -
  944.77 -
  944.78 -	protected: // Constructors
  944.79 -
  944.80 -		CSIPUnsignedIntHeaderBase();
  944.81 -		CSIPUnsignedIntHeaderBase(TUint aValue);
  944.82 -
  944.83 -	protected: // New functions
  944.84 -
  944.85 -		void ParseL(const TDesC8& aValue, TInt aErrorIfParsingFails);
  944.86 -		void DoInternalizeValueL(RReadStream& aReadStream);
  944.87 -
  944.88 -	protected: // From CSIPHeaderBase
  944.89 -
  944.90 -        /**
  944.91 -        * @internalComponent
  944.92 -        */
  944.93 -		void ExternalizeValueL (RWriteStream& aWriteStream) const;
  944.94 -
  944.95 -	protected: // Data
  944.96 -
  944.97 -        /**
  944.98 -        * @internalComponent
  944.99 -        */	
 944.100 -		TUint iValue;
 944.101 -	};
 944.102 -
 944.103 -#endif // CSIPUNSIGNEDINTHEADERBASE_H
 944.104 -
 944.105 -// End of File
   945.1 --- a/epoc32/include/sipunsupportedheader.h	Tue Mar 16 16:12:26 2010 +0000
   945.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   945.3 @@ -1,119 +0,0 @@
   945.4 -/*
   945.5 -* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   945.6 -* All rights reserved.
   945.7 -* This component and the accompanying materials are made available
   945.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   945.9 -* which accompanies this distribution, and is available
  945.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  945.11 -*
  945.12 -* Initial Contributors:
  945.13 -* Nokia Corporation - initial contribution.
  945.14 -*
  945.15 -* Contributors:
  945.16 -*
  945.17 -* Description:
  945.18 -* Name        : sipunsupportedheader.h
  945.19 -* Part of     : SIP Codec
  945.20 -* Interface   : SDK API, SIP Codec API
  945.21 -* Version     : SIP/4.0 
  945.22 -*
  945.23 -*/
  945.24 -
  945.25 -
  945.26 -
  945.27 -
  945.28 -#ifndef CSIPUNSUPPORTEDHEADER_H
  945.29 -#define CSIPUNSUPPORTEDHEADER_H
  945.30 -
  945.31 -//  INCLUDES
  945.32 -#include "siptokenheaderbase.h"
  945.33 -#include "_sipcodecdefs.h"
  945.34 -
  945.35 -// CLASS DECLARATION
  945.36 -/**
  945.37 -* @publishedAll
  945.38 -* @released
  945.39 -*
  945.40 -* Class provides functions for setting and getting SIP "Unsupported" header.
  945.41 -*
  945.42 -* @lib sipcodec.lib
  945.43 -*/
  945.44 -class CSIPUnsupportedHeader : public CSIPTokenHeaderBase
  945.45 -	{
  945.46 -	public:	// Constructors and destructor
  945.47 -
  945.48 -		/**
  945.49 -		* Constructs a CSIPUnsupportedHeader from textual representation 
  945.50 -		* of the header's value part.
  945.51 -		* @param aValue a value part of a "Unsupported"-header
  945.52 -		* @return an array containing 1..n instances of CSIPUnsupportedHeader 
  945.53 -		*/
  945.54 -		IMPORT_C static RPointerArray<CSIPUnsupportedHeader> 
  945.55 -			DecodeL(const TDesC8& aValue);
  945.56 -
  945.57 -		/**
  945.58 -		* Creates a new instance of CSIPUnsupportedHeader
  945.59 -		* @param aValue a tag value 
  945.60 -		* @return a new instance of CSIPUnsupportedHeader
  945.61 -		*/
  945.62 -		IMPORT_C static CSIPUnsupportedHeader* NewL (RStringF aValue);
  945.63 -
  945.64 -		/**
  945.65 -		* Creates a new instance of CSIPUnsupportedHeader 
  945.66 -		* and puts it to CleanupStack
  945.67 -		* @param aValue a tag value   
  945.68 -		* @return a new instance of CSIPUnsupportedHeader
  945.69 -		*/
  945.70 -		IMPORT_C static CSIPUnsupportedHeader* NewLC(RStringF aValue);
  945.71 -
  945.72 -		/**
  945.73 -		* Destructor, deletes the resources of CSIPUnsupportedHeader.
  945.74 -		*/
  945.75 -		IMPORT_C ~CSIPUnsupportedHeader();
  945.76 -
  945.77 -
  945.78 -	public: // New functions
  945.79 -
  945.80 -		/**
  945.81 -		* Constructs an instance of a CSIPUnsupportedHeader from a RReadStream
  945.82 -		* @param aReadStream a stream containing the value of the
  945.83 -		*        externalized object (header name not included). 
  945.84 -		* @return an instance of a CSIPUnsupportedHeader
  945.85 -		*/
  945.86 -		IMPORT_C static CSIPHeaderBase* 
  945.87 -			InternalizeValueL(RReadStream& aReadStream);
  945.88 -
  945.89 -
  945.90 -	public: // From CSIPHeaderBase
  945.91 -		
  945.92 -		/**
  945.93 -		* From CSIPHeaderBase CloneL
  945.94 -		*/
  945.95 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  945.96 -
  945.97 -		/**
  945.98 -		* From CSIPHeaderBase Name
  945.99 -		*/
 945.100 -		IMPORT_C RStringF Name() const;
 945.101 -
 945.102 -
 945.103 -	public: // From CSIPHeaderBase, for internal use
 945.104 -
 945.105 -        /**
 945.106 -        * @internalComponent
 945.107 -        */
 945.108 -		TPreferredPlace PreferredPlaceInMessage() const;
 945.109 -
 945.110 -	public: // New functions, for internal use
 945.111 -
 945.112 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
 945.113 -
 945.114 -	private: // Constructors
 945.115 -
 945.116 -		CSIPUnsupportedHeader();
 945.117 -		CSIPUnsupportedHeader(const CSIPUnsupportedHeader& aHeader);
 945.118 -	};
 945.119 -
 945.120 -#endif // CSIPUNSUPPORTEDHEADER_H
 945.121 -
 945.122 -// End of File
   946.1 --- a/epoc32/include/sipwwwauthenticateheader.h	Tue Mar 16 16:12:26 2010 +0000
   946.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   946.3 @@ -1,99 +0,0 @@
   946.4 -/*
   946.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
   946.6 -* All rights reserved.
   946.7 -* This component and the accompanying materials are made available
   946.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   946.9 -* which accompanies this distribution, and is available
  946.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  946.11 -*
  946.12 -* Initial Contributors:
  946.13 -* Nokia Corporation - initial contribution.
  946.14 -*
  946.15 -* Contributors:
  946.16 -*
  946.17 -* Description:
  946.18 -* Name          : sipwwwauthenticateheader.h
  946.19 -* Part of       : SIP Codec
  946.20 -* Version       : SIP/5.0 
  946.21 -*
  946.22 -*/
  946.23 -
  946.24 -
  946.25 -
  946.26 -#ifndef CSIPWWWAUTHENTICATEHEADER_H
  946.27 -#define CSIPWWWAUTHENTICATEHEADER_H
  946.28 -
  946.29 -//  INCLUDES
  946.30 -#include "sipauthenticateheaderbase.h"
  946.31 -#include "_sipcodecdefs.h"
  946.32 -
  946.33 -// CLASS DECLARATION
  946.34 -/**
  946.35 -* @publishedAll
  946.36 -* @released
  946.37 -*
  946.38 -* Class for SIP WWW-Authenticate-header manipulation.
  946.39 -*
  946.40 -* @lib sipcodec.lib
  946.41 -*/
  946.42 -class CSIPWWWAuthenticateHeader : public CSIPAuthenticateHeaderBase
  946.43 -	{
  946.44 -	public:	// Constructors and destructor
  946.45 -
  946.46 -		/**
  946.47 -		* Constructs a CSIPWWWAuthenticateHeader from textual representation
  946.48 -		* of the header's value part.
  946.49 -		* @param aValue a value part of a "WWW-Authenticate"-header 
  946.50 -		* @return a new instance of CSIPWWWAuthenticateHeader
  946.51 -		*/
  946.52 -		IMPORT_C static CSIPWWWAuthenticateHeader* 
  946.53 -			DecodeL(const TDesC8& aValue);
  946.54 -
  946.55 -		/**
  946.56 -		* Creates a new instance of CSIPWWWAuthenticateHeader
  946.57 -		* @return a new instance of CSIPWWWAuthenticateHeader
  946.58 -		*/
  946.59 -		IMPORT_C static CSIPWWWAuthenticateHeader* 
  946.60 -			NewL(RStringF aAuthScheme);
  946.61 -
  946.62 -		/**
  946.63 -		* Creates a new instance of CSIPWWWAuthenticateHeader
  946.64 -		* @return a new instance of CSIPWWWAuthenticateHeader
  946.65 -		*/
  946.66 -		IMPORT_C static CSIPWWWAuthenticateHeader* 
  946.67 -			NewLC(RStringF aAuthScheme);
  946.68 -
  946.69 -		/**
  946.70 -		* Destructor
  946.71 -		*/
  946.72 -		IMPORT_C ~CSIPWWWAuthenticateHeader();
  946.73 -
  946.74 -	public: // From CSIPHeaderBase
  946.75 -
  946.76 -		/**
  946.77 -		* From CSIPHeaderBase CloneL
  946.78 -		*/
  946.79 -		IMPORT_C CSIPHeaderBase* CloneL() const;
  946.80 -		
  946.81 -		/**
  946.82 -		* From CSIPHeaderBase Name
  946.83 -		*/		
  946.84 -		IMPORT_C RStringF Name() const;
  946.85 -
  946.86 -	public: // New functions, for internal use
  946.87 -
  946.88 -		static RPointerArray<CSIPHeaderBase> BaseDecodeL(const TDesC8& aValue);
  946.89 -		static CSIPHeaderBase* InternalizeValueL(RReadStream& aReadStream);
  946.90 -
  946.91 -	private: // Constructors
  946.92 -
  946.93 -		CSIPWWWAuthenticateHeader();
  946.94 -	
  946.95 -    private: // For testing purposes
  946.96 -	
  946.97 -		UNIT_TEST(CSIPWWWAuthenticateHeaderTest)
  946.98 -	};
  946.99 -
 946.100 -#endif // CSIPWWWAUTHENTICATEHEADER_H
 946.101 -
 946.102 -// End of File
   947.1 --- a/epoc32/include/smcmmain.h	Tue Mar 16 16:12:26 2010 +0000
   947.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   947.3 @@ -1,91 +0,0 @@
   947.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   947.5 -// All rights reserved.
   947.6 -// This component and the accompanying materials are made available
   947.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   947.8 -// which accompanies this distribution, and is available
   947.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  947.10 -//
  947.11 -// Initial Contributors:
  947.12 -// Nokia Corporation - initial contribution.
  947.13 -//
  947.14 -// Contributors:
  947.15 -//
  947.16 -// Description:
  947.17 -//
  947.18 -
  947.19 -#ifndef __SMUTMAIN_H__
  947.20 -#define __SMUTMAIN_H__
  947.21 -
  947.22 -#include <e32base.h>
  947.23 -
  947.24 -/**
  947.25 -@deprecated
  947.26 -@internalComponent
  947.27 -*/
  947.28 -const TInt KSmscSessionPriority = CActive::EPriorityStandard;
  947.29 -
  947.30 -/**
  947.31 -@deprecated
  947.32 -@internalComponent
  947.33 -*/
  947.34 -_LIT(KSmcmDllName,"SMCM");
  947.35 -
  947.36 -/**
  947.37 -The panic codes used by the SMS client MTM.
  947.38 -
  947.39 -@internalComponent
  947.40 -@released
  947.41 -*/
  947.42 -enum TSmcmPanic
  947.43 -	{
  947.44 -	ESmutPanicUnsupportedMsgType		= 0,
  947.45 -	ESmscEntryNotSet					= 1,
  947.46 -	ESmscWrongContextType				= 2,
  947.47 -	ESmscPanicUnexpectedCommand			= 3,
  947.48 -	ESmscUnrecognizedEntryType			= 4,
  947.49 -	ESmscAddresseeIndexOutOfRange		= 5,
  947.50 -	ESmscRecpAddresseeMiscount			= 6,
  947.51 -	ESmscDefaultSCOutOfRange			= 7,
  947.52 -	ESmscVPOutOfRange					= 8,
  947.53 -/**
  947.54 -@deprecated	Currently not used.
  947.55 -*/
  947.56 -	ESmscRetryLimitOutOfRange			= 9,
  947.57 -	ESmscBioMsgIdTypeError				= 10,
  947.58 -	ESmscSettingsNotSet					= 11,
  947.59 -	ESmscServiceIdNotSet				= 12,
  947.60 -/**
  947.61 -@deprecated	Currently not used.
  947.62 -*/
  947.63 -	ESmscSimParamWrongType				= 13,
  947.64 -/**
  947.65 -@deprecated	Currently not used.
  947.66 -*/
  947.67 -	ESmscSimParamExistingOperation		= 14,
  947.68 -/**
  947.69 -@deprecated	Currently not used.
  947.70 -*/
  947.71 -	ESmscSimParamInvalidProgressCount	= 15,
  947.72 -/**
  947.73 -@deprecated	Currently not used.
  947.74 -*/
  947.75 -	ESmscWrongCommDbAction				= 16,
  947.76 -
  947.77 -	ESmscFunctionNotSupported			= 17
  947.78 -	};
  947.79 -
  947.80 -/**
  947.81 -Panic function.
  947.82 -
  947.83 -@param	aPanic	The panic code.
  947.84 -
  947.85 -@internalComponent
  947.86 -@released
  947.87 -*/
  947.88 -inline void Panic(TSmcmPanic aPanic)
  947.89 -	{
  947.90 -	_LIT(KSmcmPanic, "SMCM");
  947.91 -	User::Panic(KSmcmPanic, aPanic);
  947.92 -	}
  947.93 -
  947.94 -#endif	// __SMUTMAIN_H__
   948.1 --- a/epoc32/include/smsclnt.h	Tue Mar 16 16:12:26 2010 +0000
   948.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   948.3 @@ -1,209 +0,0 @@
   948.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   948.5 -// All rights reserved.
   948.6 -// This component and the accompanying materials are made available
   948.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   948.8 -// which accompanies this distribution, and is available
   948.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  948.10 -//
  948.11 -// Initial Contributors:
  948.12 -// Nokia Corporation - initial contribution.
  948.13 -//
  948.14 -// Contributors:
  948.15 -//
  948.16 -// Description:
  948.17 -//
  948.18 -
  948.19 -#ifndef __SMSCLNT_H__
  948.20 -#define __SMSCLNT_H__
  948.21 -
  948.22 -#include <mtclbase.h>
  948.23 -#include <smuthdr.h>
  948.24 -
  948.25 -
  948.26 -/**
  948.27 -The UID that indentifies the SMS message editor application.
  948.28 -
  948.29 -This is the response to the query for the KUidMsvMtmQueryEditorUidValue
  948.30 -capability.
  948.31 -
  948.32 -@see	CSmsClientMtm::QueryCapability
  948.33 -
  948.34 -@publishedPartner
  948.35 -@released
  948.36 -*/
  948.37 -const TInt KUidMsgSmsEditorAppVal=0x1000163f;
  948.38 -
  948.39 -/**
  948.40 -The maximum number of SMS PDUs allowed in a concatenated SMS message.
  948.41 -
  948.42 -Together with KSmcmMaxCharsInMessageConcatenated7Bit, this is the response to
  948.43 -the query for the KUidMtmQueryMaxTotalMsgSizeValue capability.
  948.44 -
  948.45 -@see	CSmsClientMtm::QueryCapability
  948.46 -@see	KSmcmMaxCharsInMessageConcatenated7Bit
  948.47 -
  948.48 -@internalComponent
  948.49 -@released
  948.50 -*/
  948.51 -const TInt KSmcmMaxMessageNumber=0x32;
  948.52 -
  948.53 -/**
  948.54 -The maximum number of characters in a concatenated SMS PDU.
  948.55 -
  948.56 -Together with KSmcmMaxMessageNumber, this is the response to the query for the
  948.57 -KUidMtmQueryMaxTotalMsgSizeValue capability.
  948.58 -
  948.59 -@see	CSmsClientMtm::QueryCapability
  948.60 -@see	KSmcmMaxCharsInMessageConcatenated7Bit
  948.61 -
  948.62 -@internalComponent
  948.63 -@released
  948.64 -*/
  948.65 -const TInt KSmcmMaxCharsInMessageConcatenated7Bit=0x99;
  948.66 -
  948.67 -/**
  948.68 -The maximum number of characters in a non-concatenated SMS PDU.
  948.69 -
  948.70 -This is the response to the query for the KUidMtmQueryMaxBodySizeValue
  948.71 -capability.
  948.72 -
  948.73 -@see	CSmsClientMtm::QueryCapability
  948.74 -
  948.75 -@internalComponent
  948.76 -@released
  948.77 -*/
  948.78 -const TInt KSmcmMaxTotalMsgSize=160;
  948.79 -
  948.80 -/**
  948.81 -The granularity of the in-memory buffer for CRichText objects.
  948.82 -
  948.83 -@see	CRichText::NewL
  948.84 -
  948.85 -@internalComponent
  948.86 -@released
  948.87 -*/
  948.88 -const TInt KSmcmRichTextConstant=256;
  948.89 -
  948.90 -class CSmsHeader;
  948.91 -class CSmsMessage;
  948.92 -class CSmsSettings;
  948.93 -class TSmsUtilities;
  948.94 -class CSmsSimParamOperation;
  948.95 -class CMobilePhoneSmspList;
  948.96 -class RResourceFile;
  948.97 -
  948.98 -/** 
  948.99 -The SMS client MTM interface.
 948.100 -
 948.101 -Most of the functions in this class are implementations of the virtual functions 
 948.102 -defined by the base class CBaseMtm.
 948.103 -
 948.104 -An object of this class can be obtained from the Client MTM registry. The message
 948.105 -server provides the necessary information required by the registry to provide
 948.106 -the SMS client MTM.
 948.107 -
 948.108 -All client MTM objects have a current context. This is an entry in the message 
 948.109 -store that will be manipulated by certain APIs supplied by the MTM. If the 
 948.110 -current context is not set then certain APIs will panic. 
 948.111 -
 948.112 -The CBaseMtm::HasContext API can be used to check that the current context has 
 948.113 -been set. It can be set using either the CBaseMtm::SwitchCurrenEntryL API or the
 948.114 -CBaseMtm::SetCurrentEntryL API.
 948.115 -
 948.116 -@see	CClientMtmRegistry
 948.117 -@see	CBaseMtm::HasContext
 948.118 -@see	CBaseMtm::SetCurrentEntryL
 948.119 -@see	CBaseMtm::SwitchCurrenEntryL
 948.120 -
 948.121 -@publishedAll
 948.122 -@released
 948.123 -*/
 948.124 -class CSmsClientMtm : public CBaseMtm
 948.125 -	{
 948.126 -public:
 948.127 -
 948.128 -	IMPORT_C static CSmsClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll,CMsvSession& aSession);
 948.129 -	virtual ~CSmsClientMtm();
 948.130 -
 948.131 -	void HandleEntryEvent(enum MMsvEntryObserver::TMsvEntryEvent,TAny*,TAny*,TAny*);
 948.132 -
 948.133 -	inline CSmsHeader& SmsHeader();
 948.134 -	inline const CSmsHeader& SmsHeader() const;
 948.135 -	inline CSmsSettings& ServiceSettings();
 948.136 -	inline const CSmsSettings& ServiceSettings() const;
 948.137 -	inline TInt ServiceId() const;
 948.138 -
 948.139 -	IMPORT_C void RestoreServiceAndSettingsL();
 948.140 -	IMPORT_C CSmsSimParamOperation* ReadSimParamsL(TRequestStatus& aObserverRequestStatus);
 948.141 -	IMPORT_C CSmsSimParamOperation* WriteSimParamsL(const CMobilePhoneSmspList& aList, TRequestStatus& aObserverRequestStatus); 
 948.142 -	
 948.143 -	/** 
 948.144 -	Sets the character encoding value. The character encoding value options are 7-bit,
 948.145 -	8-bit and 16-Bit Unicode. By default the character set encoding is 7 bit encoding.
 948.146 -	*/
 948.147 -	void SetMessageCharacterSetL(TSmsDataCodingScheme::TSmsAlphabet aTsmsAlphabet);
 948.148 -
 948.149 -public:	// methods from CBaseMtm
 948.150 -
 948.151 -	virtual void SaveMessageL(); 
 948.152 -	virtual void LoadMessageL();
 948.153 -	virtual TMsvPartList ValidateMessage(TMsvPartList aPartList);
 948.154 -	virtual TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
 948.155 -	virtual CMsvOperation* ReplyL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
 948.156 -	virtual CMsvOperation* ForwardL(TMsvId aDestination, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
 948.157 -	virtual void AddAddresseeL(const TDesC& aRealAddress);
 948.158 -	virtual void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
 948.159 -	virtual void RemoveAddressee(TInt aIndex);
 948.160 -	virtual TInt QueryCapability(TUid aCapability, TInt& aResponse);
 948.161 -	virtual void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter);
 948.162 -	virtual CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
 948.163 -
 948.164 -	IMPORT_C void CreateMessageL(TMsvId aServiceId);
 948.165 -	IMPORT_C void BioTypeChangedL(TUid aBioTypeUid);
 948.166 -	
 948.167 -protected: 
 948.168 -	/**
 948.169 -	Methods from CBaseMtm, The implementation of this function assumes that
 948.170 -    the new service for setting the charset encoding value for a SMS message is supported.
 948.171 -    */
 948.172 -	IMPORT_C virtual TInt Extension_(TUint aExtensionId, TAny*& a0, TAny* a1);
 948.173 - 
 948.174 -private:
 948.175 -
 948.176 -	CSmsClientMtm(CRegisteredMtmDll& aRegisteredMtmDll,CMsvSession& aSession);
 948.177 -	void ConstructL();
 948.178 -
 948.179 -	void BasicReplyForwardEntry(TMsvEntry& aNewEntry) const;
 948.180 -	CMsvOperation* CreateNewEntryL(TMsvEntry& aNewEntry, TMsvId aDestination,CSmsHeader& aSmsHeader,const CRichText& aBody, TRequestStatus& aCompletionStatus);
 948.181 -	TBool ValidRecipients() const;
 948.182 -	TBool ValidNumber(const TDesC& aNumber) const;
 948.183 -
 948.184 -private:	// methods from CBaseMtm
 948.185 -
 948.186 -	virtual void ContextEntrySwitched(); 
 948.187 -
 948.188 -private:
 948.189 -
 948.190 -	void DoAddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
 948.191 -	void AddRecipientL(const TDesC& aRealAddress, const TDesC& aAlias);
 948.192 -	void DoAddRecipientL(CSmsHeader* aSmsHeader, const TDesC& aRealAddress, const TDesC& aAlias);
 948.193 -	void ResetHeader();
 948.194 -	TMsvPartList DoFindL(const TDesC& aTextToFind,TMsvPartList aPartList);
 948.195 -	void FindL(const TDesC& aTextToFind, const TMsvPartList aPartList,TMsvPartList& aFoundList);
 948.196 -	void FindInBodyL(const TDesC& aTextToFind, const TMsvPartList& aFoundList, TMsvPartList& aResult);
 948.197 -	HBufC* ReadEmailSubjectFormatL(RResourceFile& aResourceFile, TInt aResourceId, const TDesC& aDefaultFormat);
 948.198 -
 948.199 -private:
 948.200 -
 948.201 -	CSmsSettings*	iServiceSettings;
 948.202 -	TMsvId			iServiceId;
 948.203 -	CSmsHeader*		iSmsHeader;
 948.204 -	TChar			iRealAddressOpen;
 948.205 -	TChar			iRealAddressClose;
 948.206 -	HBufC*			iEmailForwardSubjectFormat;
 948.207 -	HBufC*			iEmailReplySubjectFormat;
 948.208 -	};
 948.209 -
 948.210 -#include <smsclnt.inl>
 948.211 -
 948.212 -#endif	// __SMSCLNT_H__
   949.1 --- a/epoc32/include/smscmds.h	Tue Mar 16 16:12:26 2010 +0000
   949.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   949.3 @@ -1,329 +0,0 @@
   949.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   949.5 -// All rights reserved.
   949.6 -// This component and the accompanying materials are made available
   949.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   949.8 -// which accompanies this distribution, and is available
   949.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  949.10 -//
  949.11 -// Initial Contributors:
  949.12 -// Nokia Corporation - initial contribution.
  949.13 -//
  949.14 -// Contributors:
  949.15 -//
  949.16 -// Description:
  949.17 -//
  949.18 -
  949.19 -#ifndef __SMSCMDS_H__
  949.20 -#define __SMSCMDS_H__
  949.21 -
  949.22 -#include <e32def.h>
  949.23 -
  949.24 -/**
  949.25 -Numeric value of the first SMS-specific command.
  949.26 -
  949.27 -This is only used by TSmsMtmCommand.
  949.28 -
  949.29 -@see	TSmsMtmCommand
  949.30 -
  949.31 -@internalComponent
  949.32 -@released
  949.33 -*/
  949.34 -const TInt KMinCommandExpected = 10000;
  949.35 -
  949.36 -/**
  949.37 -The SMS-specific commands that can be issued through CSmsClientMtm::InvokeAsyncFunctionL.
  949.38 -
  949.39 -SMS messages can be stored in a medium other than the message store itself. For
  949.40 -instance, SMS messages can be stored on the SIM card. This alternative storage
  949.41 -is referred to as the phone store.
  949.42 -
  949.43 -Some of the commands defined allow the contents of the phone store to accessed
  949.44 -and manipulated.
  949.45 -
  949.46 -@see	CSmsClientMtm::InvokeAsyncFunctionL
  949.47 -@see	CSmsClientMtm::ReadSimParamsL
  949.48 -@see	CSmsClientMtm::WriteSimParamsL
  949.49 -@see	TSmsProgress 
  949.50 -
  949.51 -@publishedAll
  949.52 -@released
  949.53 -*/
  949.54 -enum TSmsMtmCommand 
  949.55 -	{
  949.56 -/**
  949.57 -Gets the service centre address (i.e. telephone number) from the GSM handset.
  949.58 -
  949.59 -The result may be retrieved from the iServiceCenterAddress member variable 
  949.60 -in the TSmsProgress progress object for this operation. 
  949.61 -
  949.62 -The aSelection and aParameter arguments are not used by this command, except 
  949.63 -that aSelection must contain at least one member, preferably the SMS Service 
  949.64 -ID. 
  949.65 -
  949.66 -If the telephone handset is unable to supply the service centre address, then 
  949.67 -the progress object for this operation will contain the error. 
  949.68 -
  949.69 -NOTE - ESmsMtmCommandReadServiceCenter should only be used if the telephone 
  949.70 -handset or TSY module does not support reading the SMS parameters on the SIM. 
  949.71 -ESmsMtmCommandReadServiceCenter should only be used if the operation 
  949.72 -returned by CSmsClientMtm::ReadSimParamsL completes with KErrNotSupported.
  949.73 -
  949.74 -@removed	
  949.75 -This command is not supported from v7.0. The function CSmsClientMtm::ReadSimParamsL
  949.76 -should be used instead to obtain Service Centre number from the phone store.
  949.77 -
  949.78 -@see	CSmsClientMtm::ReadSimParamsL
  949.79 -@see	TSmsProgress
  949.80 -*/
  949.81 -	ESmsMtmCommandReadServiceCenter			= KMinCommandExpected,
  949.82 -
  949.83 -/** 
  949.84 -Sets a new service centre address (i.e. telephone number) on the GSM handset. 
  949.85 -
  949.86 -The new telephone number is passed in aParameter as an 8-bit descriptor containing 
  949.87 -a packaged TSmsServiceCenterAddress. 
  949.88 -
  949.89 -The aSelection parameter argument is not used by this command, except that 
  949.90 -aSelection must contain at least one member, preferably the SMS Service ID. 
  949.91 -
  949.92 -@removed
  949.93 -This command is not supported from v7.0. The function CSmsClientMtm::WriteSimParamsL
  949.94 -should be used instead to write the Service Centre number to the phone store.
  949.95 -
  949.96 -@see	CSmsClientMtm::WriteSimParamsL
  949.97 -@see	TSmsServiceCenterAddress
  949.98 -*/
  949.99 -	ESmsMtmCommandWriteServiceCenter,
 949.100 -
 949.101 -/**
 949.102 -Schedules the selected SMS messages to be sent.
 949.103 -
 949.104 -The aSelection argument contains the TMsvId of the SMS messages to be sent. An 
 949.105 -empty selection will cause a panic in debug mode. In release mode nothing will 
 949.106 -happen.
 949.107 -
 949.108 -The time that each message is scheduled to be sent is set by the date field in
 949.109 -the TMsvEntry for that message. Each message in the selection must have the same
 949.110 -scheduled time as the first message in the selection. A send task is scheduled 
 949.111 -to occur at this time.
 949.112 -
 949.113 -In debug mode a panic will occur if all the messages in the selection do not 
 949.114 -have the safe scheduled time. In release mode, the scheduled time sending all 
 949.115 -the messages in the selection will be that of the last message in the selection.
 949.116 -
 949.117 -When the scheduled task occurs not only will the selected messages be sent but
 949.118 -also any waiting SMS messages in the Outbox.
 949.119 -
 949.120 -If the messages are successfully sent by the scheduled task, then all the sent
 949.121 -messages are moved to the Sent folder.
 949.122 -
 949.123 -If any message fails to be sent then the message is marked as failed. Also it
 949.124 -may be re-scheduled to be sent at a later time if that particular error has been
 949.125 -specified as a re-schedulable error. The message remains in its current folder.
 949.126 -
 949.127 -The aParameter agrument is not used.
 949.128 -
 949.129 -@see	CMsvSession::TransferCommandL
 949.130 -
 949.131 -@see	CBaseMtm::InvokeAsyncCommandL
 949.132 -
 949.133 -*/
 949.134 -	ESmsMtmCommandScheduleCopy,
 949.135 -
 949.136 -/**
 949.137 -Not supported by the SMS MTM.
 949.138 -
 949.139 -@internalComponent
 949.140 -*/
 949.141 -	ESmsMtmCommandScheduleMove,
 949.142 -
 949.143 -/**
 949.144 -Removes all messages specified in aSelection from the task scheduler list.
 949.145 -
 949.146 -If successful, the messages will have their SendingState() set to KMsvSendStateSuspended 
 949.147 -on completion of this operation. 
 949.148 -
 949.149 -The aParameter argument is not used by this function. 
 949.150 -
 949.151 -@see	TMsvEntry::SendingState() 
 949.152 -*/
 949.153 -	ESmsMtmCommandDeleteSchedule,
 949.154 -
 949.155 -/** 
 949.156 -Checks the current scheduled status of the messages specified by aSelection. 
 949.157 -
 949.158 -If successful, the Scheduled() and iDate members of each TMsvEntry identified 
 949.159 -in the selection will be changed to represent that messages's current status. 
 949.160 -
 949.161 -The aParameter argument is not used by this function. 
 949.162 -
 949.163 -@see	TMsvEntry
 949.164 -*/
 949.165 -	ESmsMtmCommandCheckSchedule,
 949.166 -
 949.167 -/**
 949.168 -Starts sending the specified selection of SMS messages.
 949.169 -
 949.170 -When a selection of SMS messages are scheduled to be sent using the ESmsMtmCommandScheduleCopy
 949.171 -command this is the actual command that is executed the scheduled time occurs.
 949.172 -
 949.173 -The SMS server MTM creates a package contain this command. The package is passed
 949.174 -to the task scheduler who then passes it to the schedule send exe. The exe then
 949.175 -uses the package to ask the SMS server MTM to send the messages. As such this
 949.176 -command should not be used be external clients.
 949.177 -
 949.178 -When the scheduled task occurs not only will the selected messages be sent but
 949.179 -also any waiting SMS messages in the Outbox.
 949.180 -
 949.181 -If the messages are successfully sent by the scheduled task, then all the sent
 949.182 -messages are moved to the Sent folder.
 949.183 -
 949.184 -If any message fails to be sent then the message is marked as failed. Also it
 949.185 -may be re-scheduled to be sent at a later time if that particular error has been
 949.186 -specified as a re-schedulable error. The message remains in its current folder.
 949.187 -
 949.188 -@internalComponent
 949.189 -*/
 949.190 -	ESmsMtmCommandSendScheduledCopy,
 949.191 -
 949.192 -/**
 949.193 -Not supported by the SMS MTM.
 949.194 -
 949.195 -@internalComponent
 949.196 -*/
 949.197 -	ESmsMtmCommandSendScheduledMove,
 949.198 -
 949.199 -/**
 949.200 -Reads the SMS messages on the phone store and creates a copy of those messages
 949.201 -in an invisible folder under the SMS service in the message store. 
 949.202 -
 949.203 -If successful, the iEnumerateFolder member of the operation's progress will 
 949.204 -identify the invisible folder which contains the messages read from the phone 
 949.205 -store.
 949.206 -
 949.207 -The aSelection argument must contain at least the SMS servive ID. The aParameter 
 949.208 -argument can optionally be a TPckgC containing the ID of an existing folder to
 949.209 -use for the enumeration. The contents of this folder will be replaced with the
 949.210 -current messages in the phone store.
 949.211 -
 949.212 -The operation will fail with KErrArgument if the ID in aParameter is one of the
 949.213 -following - KMsvRootIndexEntryId, KMsvLocalServiceIndexEntryId, KMsvGlobalInBoxIndexEntryId,
 949.214 -KMsvGlobalOutBoxIndexEntryId, KMsvDraftEntryId or KMsvSentEntryId.
 949.215 -
 949.216 -This command must be called before using ESmsMtmCommandCopyFromPhoneStore, 
 949.217 -ESmsMtmCommandMoveFromPhoneStore or ESmsMtmCommandDeleteFromPhoneStore. 
 949.218 -
 949.219 -Pre v7.0, this was named ESmsMtmCommandEnumerateSim.
 949.220 -
 949.221 -@see	TSmsProgress
 949.222 -*/
 949.223 -	ESmsMtmCommandEnumeratePhoneStores,
 949.224 -
 949.225 -/** 
 949.226 -Moves the messages identified in aSelection to the folder identified in aParameter 
 949.227 -(e.g. the inbox). 
 949.228 -	
 949.229 -The associated SMS messages are not deleted from the phone store.
 949.230 -
 949.231 -The first entry ID in aSelection must be the SMS service ID. All following 
 949.232 -entry IDs in the selection must then represent each message to be transferred. 
 949.233 -aParameter should contain a packaged TMsvId, which identifies the folder to 
 949.234 -which the messages in aSelection will be moved. 
 949.235 -
 949.236 -The command ESmsMtmCommandEnumeratePhoneStores must be called before using 
 949.237 -this command. 
 949.238 -
 949.239 -Pre v7.0, this was named ESmsMtmCommandCopyFromSim.
 949.240 -
 949.241 -@see	TSmsMtmCommand::ESmsMtmCommandEnumeratePhoneStores
 949.242 -*/
 949.243 -	ESmsMtmCommandCopyFromPhoneStore,  
 949.244 -
 949.245 -/**
 949.246 -Moves the messages identified in aSelection to the folder identified in aParameter 
 949.247 -(e.g. the inbox), and then deletes the messages from the phone store. 
 949.248 -
 949.249 -The first entry ID in aSelection must be the SMS service ID. All following 
 949.250 -entry IDs in the selection must then represent each message to be transferred. 
 949.251 -aParameter should contain a packaged TMsvId, which identifies the folder to 
 949.252 -which the messages in aSelection will be moved. 
 949.253 -
 949.254 -The command ESmsMtmCommandEnumeratePhoneStores must be called before using 
 949.255 -this command. 
 949.256 -
 949.257 -Pre v7.0, this was named ESmsMtmCommandMoveFromSim.
 949.258 -
 949.259 -@see	TSmsMtmCommand::ESmsMtmCommandEnumeratePhoneStores
 949.260 -*/
 949.261 -	ESmsMtmCommandMoveFromPhoneStore,  
 949.262 -
 949.263 -/**
 949.264 -Deletes the specified messages from the phone store.
 949.265 -
 949.266 -The first entry ID in aSelection must be the SMS service ID. All following 
 949.267 -entry IDs in the selection must then represent each message to be deleted. 
 949.268 -aParameter is not used.
 949.269 -
 949.270 -The command ESmsMtmCommandEnumeratePhoneStores must be called before using 
 949.271 -this command. 
 949.272 -
 949.273 -Pre v7.0, this was named ESmsMtmCommandDeleteFromSim.
 949.274 -
 949.275 -@see	TSmsMtmCommand::ESmsMtmCommandEnumeratePhoneStores
 949.276 -*/
 949.277 -	ESmsMtmCommandDeleteFromPhoneStore,  
 949.278 -
 949.279 -/**
 949.280 -Reads the SIM parameters.
 949.281 -
 949.282 -This should not be used in the CSmsClientMtm::InvokeAsyncFunctionL function. The
 949.283 -CSmsClientMtm::ReadSimParamsL function should be used to read the SIM parameters.
 949.284 -
 949.285 -@see	CSmsClientMtm::ReadSimParamsL
 949.286 -
 949.287 -@internalComponent
 949.288 -*/
 949.289 -	ESmsMtmCommandReadSimParams,
 949.290 -
 949.291 -/**
 949.292 -Writes the specified SIM parameters.
 949.293 -
 949.294 -This should not be used in the CSmsClientMtm::InvokeAsyncFunctionL function. The
 949.295 -CSmsClientMtm::WriteSimParamsL function should be used to write the SIM parameters.
 949.296 -
 949.297 -@see	CSmsClientMtm::WriteSimParamsL
 949.298 -
 949.299 -@internalComponent
 949.300 -*/
 949.301 -	ESmsMtmCommandWriteSimParams,
 949.302 -
 949.303 -/**
 949.304 -Copies the SMS messages identified in aSelection to the phone store.
 949.305 -
 949.306 -The first entry ID in aSelection must be the SMS service ID. All following 
 949.307 -entry IDs in the selection must then represent each message to be copied.
 949.308 -Single message with multiple recipients is copied onto SIM as multiple messages,
 949.309 -one message for each recipient.Copy/Move from SIM will result in multiple messages,
 949.310 -single message will not be reformed out of the mutiple messages on SIM.
 949.311 -
 949.312 -
 949.313 -Pre v7.0, this was named ESmsMtmCommandCopyToSim.
 949.314 -*/
 949.315 -	ESmsMtmCommandCopyToPhoneStore,  
 949.316 -
 949.317 -/**
 949.318 -Moves the SMS messages identified in aSelection to the phone store.
 949.319 -
 949.320 -The first entry ID in aSelection must be the SMS service ID. All following 
 949.321 -entry IDs in the selection must then represent each message to be moved.
 949.322 -SSingle message with multiple recipients is moved onto SIM as multiple messages,
 949.323 -one message for each recipient.Copy/Move from SIM will result in multiple messages,
 949.324 -single message will not be reformed out of the mutiple messages on SIM.
 949.325 -
 949.326 -
 949.327 -Pre v7.0, this was named ESmsMtmCommandMoveToSim.
 949.328 -*/
 949.329 -	ESmsMtmCommandMoveToPhoneStore
 949.330 -	};
 949.331 -
 949.332 -#endif	// __SMSCMDS_H__
   950.1 --- a/epoc32/include/smtcmtm.h	Tue Mar 16 16:12:26 2010 +0000
   950.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   950.3 @@ -1,154 +0,0 @@
   950.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   950.5 -// All rights reserved.
   950.6 -// This component and the accompanying materials are made available
   950.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   950.8 -// which accompanies this distribution, and is available
   950.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  950.10 -//
  950.11 -// Initial Contributors:
  950.12 -// Nokia Corporation - initial contribution.
  950.13 -//
  950.14 -// Contributors:
  950.15 -//
  950.16 -// Description:
  950.17 -// SMTCPMTM.H
  950.18 -// Client MTM for the SMTP protocol
  950.19 -// 
  950.20 -//
  950.21 -
  950.22 -#if !defined (__SMTCMTM_H__)
  950.23 -#define __SMTCMTM_H__
  950.24 -
  950.25 -#if !defined (__E32BASE_H__)
  950.26 -#include <e32base.h>		// CActive, TFileName)
  950.27 -#endif
  950.28 -
  950.29 -#if !defined(__BADESCA_H__)
  950.30 -#include <badesca.h>
  950.31 -#endif
  950.32 -
  950.33 -#if !defined (__MSVAPI_H__)
  950.34 -#include <msvapi.h>
  950.35 -#endif
  950.36 -
  950.37 -#if !defined (__MTCLBASE_H__)
  950.38 -#include <mtclbase.h>
  950.39 -#endif
  950.40 -
  950.41 -#if !defined (__MIUTHDR_H__)
  950.42 -#include <miuthdr.h>
  950.43 -#endif
  950.44 -
  950.45 -#if !defined (__MIUTPARS_H__)
  950.46 -#include <miutpars.h>		//TImMessageField
  950.47 -#endif
  950.48 -
  950.49 -#if !defined (__MIUTMSG_H__)
  950.50 -#include <miutmsg.h>		//CImEmailMessage
  950.51 -#endif
  950.52 -
  950.53 -#if !defined (__SMTPSET_H__)
  950.54 -#include <smtpset.h>
  950.55 -#endif
  950.56 -
  950.57 -#if !defined (__SMTPCMDS_H__)
  950.58 -#include <smtpcmds.h>
  950.59 -#endif
  950.60 -
  950.61 -class CMsvEntry;
  950.62 -class CMtmDllRegistry;
  950.63 -class CRichText;
  950.64 -class TMsvEntry;
  950.65 -class CRegisteredMtmDll;
  950.66 -class CImSmtpSettings;
  950.67 -class CMsvSession;
  950.68 -class CImAttachmentWaiter;
  950.69 -
  950.70 -///////  Smtp Client MTM  /////////////////////////////////////////////////////////////////////////////
  950.71 -class CSmtpClientMtm : public CBaseMtm
  950.72 -/** SMTP client MTM interface.
  950.73 -
  950.74 -Most of the functions in this class are implementations of the virtual functions 
  950.75 -defined by the base class CBaseMtm. 
  950.76 -@publishedAll
  950.77 -@released
  950.78 -*/
  950.79 -	{
  950.80 -public:
  950.81 -	IMPORT_C static CSmtpClientMtm* NewL(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
  950.82 -	~CSmtpClientMtm();
  950.83 -
  950.84 -	void SaveMessageL();
  950.85 -	void LoadMessageL();
  950.86 -
  950.87 -	IMPORT_C void StoreSettingsL();
  950.88 -	IMPORT_C void RestoreSettingsL();
  950.89 -
  950.90 -	CMsvOperation* ReplyL  (TMsvId aReplyEntryId, TMsvPartList aPartlist, TRequestStatus& aCompletionStatus);
  950.91 -	CMsvOperation* ForwardL(TMsvId aForwardEntryId, TMsvPartList aPartList, TRequestStatus& aCompletionStatus);
  950.92 -
  950.93 -	TMsvPartList ValidateMessage(TMsvPartList aPartList);
  950.94 -	TMsvPartList Find(const TDesC& aTextToFind, TMsvPartList aPartList);
  950.95 -
  950.96 -	// addresssee list (used by objects with no MTM knowledge)
  950.97 -	void AddAddresseeL(const TDesC& aRealAddress);
  950.98 -	void AddAddresseeL(const TDesC& aRealAddress, const TDesC& aAlias);
  950.99 -	void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress);
 950.100 -	void AddAddresseeL(TMsvRecipientType aType, const TDesC& aRealAddress, const TDesC& aAlias);
 950.101 -	void RemoveAddressee(TInt aIndex);
 950.102 -
 950.103 -	IMPORT_C void SetSettingsL(const CImSmtpSettings& aSettings);
 950.104 -	IMPORT_C const CImSmtpSettings& Settings() const; 
 950.105 -	IMPORT_C void SetSubjectL(const TDesC& aSubject);
 950.106 -	IMPORT_C const TPtrC SubjectL() const;
 950.107 -
 950.108 -	// --- RTTI functions ---
 950.109 -	TInt QueryCapability(TUid aCapability, TInt& aResponse);
 950.110 -	void InvokeSyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter);
 950.111 -	CMsvOperation* InvokeAsyncFunctionL(TInt aFunctionId,const CMsvEntrySelection& aSelection, TDes8& aParameter, TRequestStatus& aCompletionStatus);
 950.112 -
 950.113 -	// Attachment functions to support the SendAs API
 950.114 -	IMPORT_C virtual void AddAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 950.115 -	IMPORT_C virtual void AddAttachmentL(RFile& aFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 950.116 -	IMPORT_C virtual void AddLinkedAttachmentL(const TDesC& aFilePath, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 950.117 -	IMPORT_C virtual void AddEntryAsAttachmentL(TMsvId aAttachmentId, TRequestStatus& aStatus);
 950.118 -	IMPORT_C virtual void CreateAttachmentL(const TDesC& aFileName, RFile& aAttachmentFile, const TDesC8& aMimeType, TUint aCharset, TRequestStatus& aStatus);
 950.119 -	IMPORT_C virtual void CreateMessageL(TMsvId aServiceId);
 950.120 -
 950.121 -	IMPORT_C virtual TMsvId DefaultServiceL() const;
 950.122 -	IMPORT_C virtual void RemoveDefaultServiceL();
 950.123 -	IMPORT_C virtual void ChangeDefaultServiceL(const TMsvId& aService);
 950.124 -	IMPORT_C void CancelAttachmentOperation();
 950.125 -
 950.126 -protected:
 950.127 -	CSmtpClientMtm(CRegisteredMtmDll& aRegisteredMtmDll, CMsvSession& aMsvSession);
 950.128 -	void ConstructL();
 950.129 -	
 950.130 -	void ContextEntrySwitched(); // called after the context of this instance has been changed to another entry
 950.131 -private:
 950.132 -	TBool ValidateAddress(const TPtrC& anAddress);
 950.133 -	void ResetData();
 950.134 -
 950.135 -	void RestoreEmailMessageL();
 950.136 -	void StoreEmailMessageL();
 950.137 -	void SetAddresseeListL();
 950.138 -	void GetBodyTextL(CImEmailMessage& aMessage, TMsvId aMsvId);
 950.139 -	TInt32 GetAttachmentSizeL(CImEmailMessage& aMessage, TMsvId aMsvId);
 950.140 -	TMsvPartList DoFindL(const TDesC& aTextToFind, TMsvPartList aPartList);
 950.141 -
 950.142 -private:
 950.143 -	CMsvOperationActiveSchedulerWait* iWait;
 950.144 -	CImSmtpSettings* iImSmtpSettings;
 950.145 -	CImHeader* iHeader;
 950.146 -	HBufC* iSubject;
 950.147 -
 950.148 -	TImMessageField iTImMessageField;
 950.149 -	HBufC* iEmailAddressFormatString;	// defines format of email address used by "Send as" API eg _LIT("/"%S/" <%S>")
 950.150 -	CMsvEntrySelection* iEntrySelection;
 950.151 -	CImEmailOperation*	iImEmailOperation;
 950.152 -	CImAttachmentWaiter* iAttachmentWaiter;
 950.153 -	CImEmailMessage* iEmailMessage;
 950.154 -	};
 950.155 -
 950.156 -
 950.157 -#endif // __SMTCMTM_H__
   951.1 --- a/epoc32/include/smtpcmds.h	Tue Mar 16 16:12:26 2010 +0000
   951.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   951.3 @@ -1,56 +0,0 @@
   951.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   951.5 -// All rights reserved.
   951.6 -// This component and the accompanying materials are made available
   951.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   951.8 -// which accompanies this distribution, and is available
   951.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  951.10 -//
  951.11 -// Initial Contributors:
  951.12 -// Nokia Corporation - initial contribution.
  951.13 -//
  951.14 -// Contributors:
  951.15 -//
  951.16 -// Description:
  951.17 -//
  951.18 -
  951.19 -#if !defined (__SMTPCMDS_H__)
  951.20 -#define __SMTPCMDS_H__
  951.21 -
  951.22 -#if !defined (__MSVSTD_HRH__)
  951.23 -#include <msvstd.hrh>
  951.24 -#endif
  951.25 -
  951.26 -/** SMTP-specific commands that can be issued through CSmtpClientMtm::InvokeAsyncFunctionL(). 
  951.27 -@publishedAll
  951.28 -@released
  951.29 -*/
  951.30 -enum TSmtpCmds 
  951.31 -	{
  951.32 -	/** Not supported. */
  951.33 -	KSMTPMTMIsConnected = KMtmFirstFreeMtmFunctionId,
  951.34 -	/** Send messages on next connection.
  951.35 -	
  951.36 -	The first entry in aSelection specifies the SMTP service entry that is to 
  951.37 -	be used to send the email messages. aSelection may contain only one entry 
  951.38 -	ID. The SMTP MTM will append the Ids of all "ready" email messages which exist 
  951.39 -	in the outbox that match the IAP of the specified SMTP service. Whether an 
  951.40 -	email message is "ready" is determined from its TMsvEntry::SendingState() 
  951.41 -	flag.
  951.42 -	
  951.43 -	If an Internet connection has already been established by another client, 
  951.44 -	then this function may fail with KSmtpNoMsgsToSendWithActiveSettings if none 
  951.45 -	of the messages specified in aSelection match the IAP currently in use. */
  951.46 -	KSMTPMTMSendOnNextConnection,
  951.47 -	/** Creates a new message. */
  951.48 -	KSMTPMTMCreateNewEmailMessage,
  951.49 -	/** Creates a new reply message. */
  951.50 -	KSMTPMTMCreateReplyEmailMessage,
  951.51 -	/** Creates a new forwarded message. */
  951.52 -	KSMTPMTMCreateForwardEmailMessage,
  951.53 -	/** Creates a new forwarded message as an attachment. */
  951.54 -	KSMTPMTMCreateForwardAsAttachmentEmailMessage,
  951.55 -	/** Creates a new message-receipt message. */
  951.56 -	KSMTPMTMCreateReceiptEmailMessage
  951.57 -	};
  951.58 -
  951.59 -#endif
   952.1 --- a/epoc32/include/smtpset.h	Tue Mar 16 16:12:26 2010 +0000
   952.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   952.3 @@ -1,325 +0,0 @@
   952.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
   952.5 -// All rights reserved.
   952.6 -// This component and the accompanying materials are made available
   952.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   952.8 -// which accompanies this distribution, and is available
   952.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  952.10 -//
  952.11 -// Initial Contributors:
  952.12 -// Nokia Corporation - initial contribution.
  952.13 -//
  952.14 -// Contributors:
  952.15 -//
  952.16 -// Description:
  952.17 -//
  952.18 -
  952.19 -#if !defined (__SMTPSET_H__)
  952.20 -#define __SMTPSET_H__
  952.21 -
  952.22 - 
  952.23 -#include <msvuids.h>
  952.24 -#include <miutset.h>
  952.25 -
  952.26 -/** Default SMTP server port number.*/
  952.27 -const TUint32 KSMTPDefaultPortNumber = 25;
  952.28 -
  952.29 -/** Default/maximum addresses to include in body header of reply/forward messages */
  952.30 -const TInt KSmtpToCcIncludeLimitDefault = 0;
  952.31 -const TInt KSmtpToCcIncludeLimitMax = KMaxTInt;
  952.32 -
  952.33 -
  952.34 -/**
  952.35 -Defines options that allows the user to automatically email themselves a copy 
  952.36 -of all emails that are sent from the phone.
  952.37 -
  952.38 -@see CImSmtpSettings::SendCopyToSelf() 
  952.39 -
  952.40 -@publishedAll
  952.41 -@released
  952.42 -*/
  952.43 -enum TImSMTPSendCopyToSelf
  952.44 -	{
  952.45 -	/** Do not send a copy. */
  952.46 -	ESendNoCopy,
  952.47 -	/** Send a copy, with the user's address added to the To address list. */
  952.48 -	ESendCopyAsToRecipient,
  952.49 -	/** Send a copy, with the user's address added to the Cc: address list. */
  952.50 -	ESendCopyAsCcRecipient,
  952.51 -	/** Send a copy, with the user's address added to the Bcc: address list. */
  952.52 -	ESendCopyAsBccRecipient
  952.53 -	};
  952.54 -/**
  952.55 -Defines sending options for new email messages.
  952.56 -
  952.57 -The option has no direct effect on the SMTP MTM, although messages in the 
  952.58 -outbox which are marked as ESendMessageOnNextConnection or ESendMessageImmediately 
  952.59 -will be appended automatically to the list of messages supplied by the client 
  952.60 -when either CBaseServerMtm::CopyFromLocal() or CBaseServerMtm::MoveFromLocal() 
  952.61 -are called. 
  952.62 -
  952.63 -@publishedAll
  952.64 -@released
  952.65 -*/
  952.66 -enum TImSMTPSendMessageOption
  952.67 -	{
  952.68 -	/** Send message immediately. */
  952.69 -	ESendMessageImmediately,
  952.70 -	/** Send message when the next connection occurs. */
  952.71 -	ESendMessageOnNextConnection,
  952.72 -	/** Send message only when the user requests this. */
  952.73 -	ESendMessageOnRequest
  952.74 -	};
  952.75 -
  952.76 -/**
  952.77 -Defines status values for the SMTP MTM. 
  952.78 -
  952.79 -@publishedAll
  952.80 -@released
  952.81 -*/
  952.82 -enum TMsgImOutboxSendState
  952.83 -	{
  952.84 -	/** Idle. */
  952.85 -	EMsgOutboxProgressWaiting,
  952.86 -	/** Connecting to server. */
  952.87 -	EMsgOutboxProgressConnecting,
  952.88 -	/** Sending messages. */
  952.89 -	EMsgOutboxProgressSending,
  952.90 -	/** Sending complete. */
  952.91 -	EMsgOutboxProgressDone
  952.92 -	};
  952.93 -
  952.94 -/** Sending state for SMTP. 
  952.95 -
  952.96 -@publishedAll
  952.97 -@released
  952.98 -*/
  952.99 -enum TSmtpSessionState
 952.100 -	{
 952.101 -	/** Dialling, looking up DNS, or connecting to SMTP server. */
 952.102 -	EConnectingToSmtp,
 952.103 -	/** Waiting for the SMTP server to send welcome message. */
 952.104 -	EWaitingForReply,
 952.105 -	/** Sending HELO/EHLO command to the server. */
 952.106 -	EAuthorisingSmtp,
 952.107 -	/** Sending the STARTTLS command, if a secure connection was requested. */
 952.108 -	ESendingStarttls,
 952.109 -	/** Exchanging certificates with server, if a secure connection was requested. */
 952.110 -	ESettingSecurity,
 952.111 -	/** Sending a message to the server. */
 952.112 -	ESendingImail,
 952.113 -	/** Logging result. */
 952.114 -	ELogDataEvent,
 952.115 -	/** Disconnecting from the SMTP server. */
 952.116 -	EClosingSmtp,
 952.117 -	/** AUTH in progress. */
 952.118 -	EAuthInProgress,
 952.119 -	/** RSET in progress. */
 952.120 -	EResetSmtp
 952.121 -	};
 952.122 -
 952.123 -class TImImailFileProgress				
 952.124 -/** 
 952.125 -Status information about the SMTP message which is being sent. 
 952.126 -
 952.127 -@publishedAll
 952.128 -@released
 952.129 -*/
 952.130 -	{
 952.131 -public:
 952.132 -	/**
 952.133 -	Amount of data from the message already sent to the server in bytes.
 952.134 -	
 952.135 -	Note that the SMTP MTM encodes the text and binary data inside an email message 
 952.136 -	while it is sending the data. As a result, iBytesToSend is likely to increase 
 952.137 -	(by as much as one third) while a message is being sent. The size increase 
 952.138 -	represents all additional bytes which have been added to the RFC 822 message 
 952.139 -	to encode the data.
 952.140 -	*/
 952.141 -	TInt				iBytesSent;
 952.142 -	/** Amount of data from the message still to be sent to the server in bytes. */
 952.143 -	TInt				iBytesToSend;
 952.144 -	/** Sending state. */
 952.145 -	TSmtpSessionState	iSessionState;
 952.146 -	};
 952.147 -
 952.148 -class TImSmtpProgress
 952.149 -/**
 952.150 -Progress information for SMTP operations on the Internet Mail MTM.
 952.151 -
 952.152 -The information is obtained through calling CMsvOperation::Progress() 
 952.153 -on the operation. It is packaged into an 8-bit descriptor. 
 952.154 -
 952.155 -Messaging clients use the getter functions to get various types
 952.156 -of information about an operation's progress. The setter functions
 952.157 -are for use by the MTM.
 952.158 -
 952.159 -@publishedAll
 952.160 -@released
 952.161 -*/
 952.162 -	{
 952.163 -
 952.164 -public:
 952.165 -	IMPORT_C TMsgImOutboxSendState	Status() const; // Progress: current progress status of mail session
 952.166 -	IMPORT_C TInt MsgNo() const;		            // Progress: No. of message currently being sent; zero=1st message
 952.167 -	IMPORT_C TInt Error() const;			        // Summary: completion code from end of last session
 952.168 -	IMPORT_C TInt Sent() const;			            // Summary: No. messages sent successfully
 952.169 -	IMPORT_C TInt NotSent() const;		            // Summary: No. messages I didn't attempt to send
 952.170 -	IMPORT_C TInt FailedToSend() const;	            // Summary: No. messages attempted to send but failed
 952.171 -	IMPORT_C TInt SendTotal() const;		        // Sent() + NotSent() + FailedToSend() = SendTotal()
 952.172 -	IMPORT_C void SetError(TInt anError);
 952.173 -	IMPORT_C void SetStatus(TMsgImOutboxSendState aStatus);
 952.174 -	IMPORT_C void SetMsgNo(TInt aMsgNo);
 952.175 -	IMPORT_C void InitialiseTotal(const TInt& aTotal);
 952.176 -	IMPORT_C void UpdateSent();
 952.177 -	IMPORT_C void UpdateFailedToSend();
 952.178 -	IMPORT_C void DecrementSendTotal();
 952.179 -	IMPORT_C TMsvId	ServiceId() const;
 952.180 -	IMPORT_C void SetServiceId(TMsvId aServiceId);
 952.181 -	IMPORT_C TInt ConnectionState() const;
 952.182 -	IMPORT_C TInt ConnectionIAP() const;
 952.183 -	IMPORT_C void SetConnectionIAP(TInt aConnectionIAP);
 952.184 -
 952.185 -public:
 952.186 -	/** Status information about the message that is currently being sent (if 
 952.187 -	sending is in progress). */
 952.188 -	TImImailFileProgress			iSendFileProgress;
 952.189 -
 952.190 -private:
 952.191 -	TMsgImOutboxSendState	iStatus;
 952.192 -	TInt					iError;
 952.193 -	TInt					iMsgNo;
 952.194 -	TInt					iSent;
 952.195 -	TInt					iNotSent;
 952.196 -	TInt					iFailedToSend;
 952.197 -	TInt					iSendTotal;
 952.198 -	TMsvId					iServiceId;
 952.199 -	};
 952.200 -
 952.201 -class CImSmtpSettings : public CImBaseEmailSettings
 952.202 -/**
 952.203 -Run-time configuration settings for an SMTP account.
 952.204 -
 952.205 -Messaging clients should use an instance of this class to specify
 952.206 -and retrieve configuration settings that are used by the SMTP service when
 952.207 -executing email operations.  
 952.208 -
 952.209 -Service settings such as the email body encoding, reply address, character set,
 952.210 -and whether to attach a signature or vCard can be specified using this class.
 952.211 -Storing and restoring from the message store is also supported.
 952.212 -
 952.213 -To use this class to change a setting:
 952.214 -
 952.215 -1) Set the current context to the SMTP service entry using CMsvStore.
 952.216 -
 952.217 -2) Create an instance of CImSmtpSettings and put it on the cleanup stack.
 952.218 -
 952.219 -3) Retrieve the existing settings by calling CImSmtpSettings::RestoreL().
 952.220 -
 952.221 -4) Specify whether to add a vCard to outbound email by calling CImSmtpSettings::SetAddVCardToEmail().
 952.222 -
 952.223 -5) Save the new settings by calling CImSmtpSettings::StoreL().
 952.224 -
 952.225 -6) Pop and destroy the CImSmtpSettings instance.
 952.226 -
 952.227 -@see CMsvStore
 952.228 -
 952.229 -@publishedAll
 952.230 -@released
 952.231 -*/
 952.232 -	{
 952.233 -public:
 952.234 -	IMPORT_C CImSmtpSettings();
 952.235 -	IMPORT_C virtual ~CImSmtpSettings();
 952.236 -	IMPORT_C void Reset();
 952.237 -	IMPORT_C const TPtrC EmailAlias() const;
 952.238 -	IMPORT_C void SetEmailAliasL(const TDesC& aEmailAlias);
 952.239 -	IMPORT_C const TPtrC EmailAddress() const;
 952.240 -	IMPORT_C void SetEmailAddressL(const TDesC& aEmailAddress);
 952.241 -	IMPORT_C const TPtrC ReplyToAddress() const;
 952.242 -	IMPORT_C void SetReplyToAddressL(const TDesC& aReplyToAddress);
 952.243 -	IMPORT_C const TPtrC ReceiptAddress() const;
 952.244 -	IMPORT_C void SetReceiptAddressL(const TDesC& aReceiptAddress);
 952.245 -	IMPORT_C TMsgOutboxBodyEncoding BodyEncoding() const;
 952.246 -	IMPORT_C void SetBodyEncoding(TMsgOutboxBodyEncoding aBodyEncoding);
 952.247 -	IMPORT_C const TUid DefaultMsgCharSet() const;
 952.248 -	IMPORT_C void SetDefaultMsgCharSet(TUid aDefaultMsgCharSet);
 952.249 -	IMPORT_C TBool AddVCardToEmail() const;
 952.250 -	IMPORT_C void SetAddVCardToEmail(TBool aFlag);
 952.251 -	IMPORT_C TBool AddSignatureToEmail() const;
 952.252 -	IMPORT_C void SetAddSignatureToEmail(TBool aFlag);
 952.253 -	IMPORT_C TBool RequestReceipts() const;
 952.254 -	IMPORT_C void SetRequestReceipts(TBool aFlag);
 952.255 -	IMPORT_C TImSMTPSendCopyToSelf SendCopyToSelf() const;
 952.256 -	IMPORT_C void SetSendCopyToSelf(TImSMTPSendCopyToSelf aSendCopyToSelf);
 952.257 -	IMPORT_C TImSMTPSendMessageOption SendMessageOption() const;
 952.258 -	IMPORT_C void SetSendMessageOption(TImSMTPSendMessageOption aSendMessageOption);
 952.259 -	IMPORT_C CImSmtpSettings& CopyL(const CImSmtpSettings& aCImSmtpSettings);
 952.260 -	IMPORT_C TBool operator==(const CImSmtpSettings& aCImSmtpSettings) const;
 952.261 -	IMPORT_C const TPtrC8 LoginName() const;
 952.262 -	IMPORT_C void SetLoginNameL(const TDesC8&);
 952.263 -	IMPORT_C const TPtrC8 Password() const;
 952.264 -	IMPORT_C void SetPasswordL(const TDesC8&);
 952.265 -	IMPORT_C TBool SMTPAuth() const;
 952.266 -	IMPORT_C void SetSMTPAuth(TBool aFlag);
 952.267 -	IMPORT_C TBool InboxLoginDetails() const;
 952.268 -	IMPORT_C void SetInboxLoginDetails(TBool aFlag);
 952.269 -	IMPORT_C TInt ToCcIncludeLimit() const;
 952.270 -	IMPORT_C void SetToCcIncludeLimitL(TInt aLimit);
 952.271 -	IMPORT_C void SetTlsSslDomainL(const TDesC8& aDomainName);
 952.272 -	IMPORT_C TPtrC8 TlsSslDomain() const;
 952.273 -
 952.274 -private:
 952.275 -	class TImSmtpSettingsExtension
 952.276 -		{
 952.277 -	public:
 952.278 -		inline TImSmtpSettingsExtension();
 952.279 -	public:
 952.280 -		HBufC*	iReceiptAddress;
 952.281 -		HBufC8* iLoginName;
 952.282 -		HBufC8* iPassword;
 952.283 -		HBufC8*	iTlsSslDomain;
 952.284 -		TInt	iToCcIncludeLimit;
 952.285 -		};
 952.286 -
 952.287 -	inline TImSmtpSettingsExtension* Extension() const;
 952.288 -	inline void CheckExtensionExistsL();
 952.289 -
 952.290 -private:
 952.291 -	enum TImSMTPEmailSettings
 952.292 -		{
 952.293 -		KSmtpSettingsClearFlag				= 0x00000000,
 952.294 -		KSmtpBaseEmailSettingsLastUsedFlag	= CImBaseEmailSettings::EBaseEmailSettingsLastUsedFlag,	//0x00000002
 952.295 -		KSmtpAddVCardToEmailFlag			= KSmtpBaseEmailSettingsLastUsedFlag << 1,	//0x00000004
 952.296 -		KSmtpAddSignatureToEmailFlag		= KSmtpAddVCardToEmailFlag << 1,			//0x00000008
 952.297 -		KSmtpRequestReceipts				= KSmtpAddSignatureToEmailFlag << 1,		//0x00000010
 952.298 -		KSmtpSmtpAuthFlag					= KSmtpRequestReceipts << 1,				//0x00000020
 952.299 -		KSmtpInboxLoginDetails				= KSmtpSmtpAuthFlag << 1,					//0x00000040
 952.300 -		KSmtpEmailSettingsLastUsedFlag		= KSmtpInboxLoginDetails					//0x00000040
 952.301 -		};
 952.302 -
 952.303 -	HBufC*						iEmailAlias;
 952.304 -	HBufC*						iEmailAddress;
 952.305 -	HBufC*						iReplyToAddress;
 952.306 -	TImSmtpSettingsExtension*	iExtension; // renamed iReceiptAddress
 952.307 -	TMsgOutboxBodyEncoding		iBodyEncoding;
 952.308 -	TUid						iDefaultMsgCharSet;
 952.309 -	TImSMTPSendCopyToSelf		iSendCopyToSelf;
 952.310 -	TImSMTPSendMessageOption	iSendMessageOption;
 952.311 -	};
 952.312 -	
 952.313 -inline CImSmtpSettings::TImSmtpSettingsExtension* CImSmtpSettings::Extension() const
 952.314 -	{
 952.315 -	return iExtension;
 952.316 -	}
 952.317 -
 952.318 -inline void CImSmtpSettings::CheckExtensionExistsL()
 952.319 -	{
 952.320 -	if (!iExtension)
 952.321 -		iExtension=new (ELeave) CImSmtpSettings::TImSmtpSettingsExtension;
 952.322 -	}
 952.323 -
 952.324 -inline CImSmtpSettings::TImSmtpSettingsExtension::TImSmtpSettingsExtension() : iReceiptAddress(NULL),iLoginName(NULL),iPassword(NULL),iTlsSslDomain(NULL),iToCcIncludeLimit(KSmtpToCcIncludeLimitDefault)
 952.325 -	{
 952.326 -	}
 952.327 -
 952.328 -#endif    // #define __SMTPSET_H__
   953.1 --- a/epoc32/include/smut.h	Tue Mar 16 16:12:26 2010 +0000
   953.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   953.3 @@ -1,154 +0,0 @@
   953.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   953.5 -// All rights reserved.
   953.6 -// This component and the accompanying materials are made available
   953.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   953.8 -// which accompanies this distribution, and is available
   953.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  953.10 -//
  953.11 -// Initial Contributors:
  953.12 -// Nokia Corporation - initial contribution.
  953.13 -//
  953.14 -// Contributors:
  953.15 -//
  953.16 -// Description:
  953.17 -//
  953.18 -
  953.19 -#ifndef __SMUT_H__
  953.20 -#define __SMUT_H__
  953.21 -
  953.22 -#include <msvstd.h>
  953.23 -#include <msvids.h>
  953.24 -#include <barsc.h>
  953.25 -
  953.26 -class CSmsMessage;
  953.27 -class CContactItemField;
  953.28 -class TResourceReader;
  953.29 -class CMsvSession;
  953.30 -class CMsvServerEntry;
  953.31 -class CMsvEntry;
  953.32 -class CSmsSettings;
  953.33 -
  953.34 -/**
  953.35 -The SMS MTM UID.
  953.36 -
  953.37 -Used to identify the MTMs used for handling SMS messages.
  953.38 -
  953.39 -@publishedAll
  953.40 -@released
  953.41 -*/
  953.42 -const TUid KUidMsgTypeSMS			= {0x1000102C};
  953.43 -
  953.44 -/**
  953.45 -The default maximum length used when extracting a description for an SMS message.
  953.46 -
  953.47 -Used as default value of aMaxLength in TSmsUtilities::GetDescription. This
  953.48 -function is used to extract a string to used as a suitable description field in
  953.49 -the message index for a particular SMS message.
  953.50 -
  953.51 -The CSmsSettings provides accessors to get and set the preferred maximum
  953.52 -description length.
  953.53 -
  953.54 -@deprecated
  953.55 -This should not really be used outside of the SMS client MTM. The value provided
  953.56 -by the CSmsSettings class should be used.
  953.57 -
  953.58 -@see	CSmsSettings::GetDescriptionLength
  953.59 -*/
  953.60 -const TInt KSmsDescriptionLength	= 32;
  953.61 -
  953.62 -/**
  953.63 -The default maximum length used when extracting the sender/recipiant details for
  953.64 -an SMS message.
  953.65 -
  953.66 -Used as default value of aMaxLength in TSmsUtilities::GetDetails. This function
  953.67 -is used to extract a string to used as the details field in the message index
  953.68 -for a particular SMS message.
  953.69 -
  953.70 -@deprecated
  953.71 -This should really be used at all.
  953.72 -*/
  953.73 -const TInt KSmsDetailsLength		= 32;
  953.74 -
  953.75 -_LIT(KSmsResourceFile, "\\resource\\messaging\\SMSS.RSC");
  953.76 -
  953.77 -/**
  953.78 -SMS Messaging utility functions.
  953.79 -
  953.80 -@publishedAll
  953.81 -@released
  953.82 -*/
  953.83 -class TSmsUtilities
  953.84 -	{
  953.85 -public:
  953.86 -
  953.87 -/**
  953.88 -Special SMS Message Indication Type.
  953.89 -
  953.90 -A special SMS message indication is used to notify of waiting services, for
  953.91 -instance a voicemail message.
  953.92 -
  953.93 -The TSmsUtilitiesSpecialMessageType enum represents the flags for the known
  953.94 -indication types.
  953.95 -*/
  953.96 -	enum TSmsUtilitiesSpecialMessageType
  953.97 -		{
  953.98 -/**
  953.99 -Voice message waiting.
 953.100 -*/
 953.101 -		EVoiceMessageWaiting = 0,
 953.102 -/**
 953.103 -Fax message waiting.
 953.104 -*/
 953.105 -		EFaxMessageWaiting,
 953.106 -/**
 953.107 -E-mail message waiting.
 953.108 -*/
 953.109 -		EEmailMessageWaiting,
 953.110 -/**
 953.111 -Other message-type waiting (see 3GPP TS 23.038 [9] for definition of "other").
 953.112 -*/
 953.113 -		EOtherMessageWaiting,
 953.114 -/**
 953.115 -Mask used to obtain the mesasge indication type from the SMS data.
 953.116 -*/
 953.117 -		ESpecialMessageTypeMask = 0x7F
 953.118 -		};
 953.119 -
 953.120 -	/**
 953.121 -	@internalComponent
 953.122 -	@removed
 953.123 -	*/
 953.124 -	IMPORT_C void Dummy_Export_1();
 953.125 -	/**
 953.126 -	@internalComponent
 953.127 -	@removed
 953.128 -	*/
 953.129 -	IMPORT_C void Dummy_Export_2();
 953.130 -
 953.131 -	IMPORT_C static void ServiceIdL(CMsvServerEntry& aEntry, TMsvId& aFirstId, TUid aMtm = KUidMsgTypeSMS, CMsvEntrySelection* aServiceIds = NULL);
 953.132 -	IMPORT_C static void ServiceIdL(CMsvEntry& aEntry, TMsvId& aFirstId, TUid aMtm = KUidMsgTypeSMS, CMsvEntrySelection* aServiceIds = NULL);
 953.133 -	IMPORT_C static void ServiceIdL(CMsvSession& aSession, TMsvId& aFirstId, TUid aMtm = KUidMsgTypeSMS, CMsvEntrySelection* aServiceIds = NULL); //more efficient version of the previous one
 953.134 -
 953.135 -	IMPORT_C static void PopulateMsgEntry(TMsvEntry& aEntry, const CSmsMessage& aMessage, TMsvId aServiceId, TUid aMtm = KUidMsgTypeSMS);
 953.136 -	IMPORT_C static void PopulateMsgEntry(TMsvEntry& aEntry, const CSmsMessage& aMessage, TMsvId aServiceId, const CSmsSettings& aSettings, TUid aMtm = KUidMsgTypeSMS);
 953.137 -
 953.138 -	IMPORT_C static TInt GetDetails(RFs& aFs, const CSmsMessage& aMessage, TDes& aDetails, TInt aMaxLength = KSmsDetailsLength);
 953.139 -	IMPORT_C static TInt GetDetails(RFs& aFs, const TDesC& aFromAddress, TDes& aDetails, TInt aMaxLength = KSmsDetailsLength);
 953.140 -	IMPORT_C static TInt GetDescription(const CSmsMessage& aMessage, TDes& aDescription, TInt aMaxLength = KSmsDescriptionLength);
 953.141 -
 953.142 -	IMPORT_C static RResourceFile OpenResourceFileL(RFs& aFs);
 953.143 -	IMPORT_C static void ReadResourceStringL(RResourceFile aResourceFile, TInt aResourceId, TDes& aString);
 953.144 -
 953.145 -private:
 953.146 -	static void CompareEntryL(const TMsvEntry& aEntry, TUid aMtm, TMsvId& aFirstId, CMsvEntrySelection* aServiceIds);
 953.147 -	static void GetName(CContactItemField& aField, TUid aFieldType, TDes& aName);
 953.148 -	static void DoGetDetailsL(RFs& aFs, const TDesC& aFromAddress, TDes& aDetails, TInt aMaxLength);
 953.149 -	static void Replace(const TDesC& aOld, const TDesC& aNew, TDes& aString);
 953.150 -
 953.151 -	static TBool DoGetDescriptionL(const CSmsMessage& aMessage, TDes& aDescription, TInt aMaxLength);
 953.152 -	static void ExtractDescriptionFromMessage(const CSmsMessage& aMessage, TDes& aDescription, TInt aMaxLength);
 953.153 -
 953.154 -	static TBool ValidGsmNumber(const TDesC& aTelephone);
 953.155 -	};
 953.156 -
 953.157 -#endif	// __SMUT_H__
   954.1 --- a/epoc32/include/smuthdr.h	Tue Mar 16 16:12:26 2010 +0000
   954.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   954.3 @@ -1,270 +0,0 @@
   954.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   954.5 -// All rights reserved.
   954.6 -// This component and the accompanying materials are made available
   954.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   954.8 -// which accompanies this distribution, and is available
   954.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  954.10 -//
  954.11 -// Initial Contributors:
  954.12 -// Nokia Corporation - initial contribution.
  954.13 -//
  954.14 -// Contributors:
  954.15 -//
  954.16 -// Description:
  954.17 -//
  954.18 -
  954.19 -#ifndef __SMUTHDR_H__
  954.20 -#define __SMUTHDR_H__
  954.21 -
  954.22 -#include <e32base.h>
  954.23 -#include <gsmubuf.h>
  954.24 -#include <bif.h>
  954.25 -#include <gsmupdu.h>
  954.26 -#include <msvstd.h>
  954.27 -#include <smutset.h>
  954.28 -
  954.29 -class RMsvReadStream;
  954.30 -class RMsvWriteStream;
  954.31 -class CMsvStore;
  954.32 -class CSmsEmailFields;
  954.33 -
  954.34 -/** 
  954.35 -The SMS MTM encapsulation of an SMS message.
  954.36 -
  954.37 -This class allows a messaging client to access the lower-level message encapsulation 
  954.38 -used by the SMS stack.
  954.39 -
  954.40 -It also provides functionality to restore and store an SMS message from/to the
  954.41 -message store.
  954.42 -
  954.43 -An SMS message is encapsulated in a Protocol Data Unit (PDU). In GSM there are 
  954.44 -six types of SMS message PDU. In the descriptions below, SC means Service Center 
  954.45 -and MS means Mobile Station (the phone).
  954.46 -
  954.47 -1. SMS-DELIVER - sent from SC to MS
  954.48 -
  954.49 -2. SMS-DELIVER-REPORT - sent from MS to SC
  954.50 -
  954.51 -3. SMS-SUBMIT - sent from MS to SC
  954.52 -
  954.53 -4. SMS-SUBMIT-REPORT - sent from SC to MS
  954.54 -
  954.55 -5. SMS-STATUS-REPORT - sent from SC to MS
  954.56 -
  954.57 -6. SMS-COMMAND - sent from MS to SC
  954.58 -
  954.59 -@publishedAll
  954.60 -@released
  954.61 -*/
  954.62 -class CSmsHeader : public CBase
  954.63 -	{
  954.64 -public:
  954.65 -
  954.66 -	IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText);
  954.67 -	IMPORT_C static CSmsHeader* NewL(CSmsPDU::TSmsPDUType aType,CEditableText& aText,RFs& aFs);
  954.68 -	IMPORT_C static CSmsHeader* NewL(CSmsMessage* aMessage);
  954.69 -	IMPORT_C ~CSmsHeader();
  954.70 -
  954.71 -	inline CSmsPDU::TSmsPDUType Type() const;
  954.72 -
  954.73 -	inline CSmsSubmit& Submit();
  954.74 -	inline const CSmsSubmit& Submit() const;
  954.75 -	inline CSmsDeliver& Deliver();
  954.76 -	inline const CSmsDeliver& Deliver() const;
  954.77 -	inline CSmsCommand& Command();
  954.78 -	inline const CSmsCommand& Command() const;
  954.79 -	inline CSmsStatusReport& StatusReport();
  954.80 -	inline const CSmsStatusReport& StatusReport() const;
  954.81 -	
  954.82 -	inline CSmsMessage& Message();
  954.83 -	inline const CSmsMessage& Message() const;
  954.84 -
  954.85 -	inline TBool ReplyPathProvided() const;
  954.86 -	inline void SetReplyPathProvided(TBool aReplyPathProvided);
  954.87 -
  954.88 -	inline TBioMsgIdType BioMsgIdType() const;
  954.89 -	inline void SetBioMsgIdType(TBioMsgIdType aBioMsgIdType = EBioMsgIdNbs);
  954.90 -	
  954.91 -	inline TPtrC ServiceCenterAddress() const;
  954.92 -	inline void SetServiceCenterAddressL(const TDesC& aAddress);
  954.93 -
  954.94 -	IMPORT_C void SetSmsSettingsL(const CSmsMessageSettings& aSmsSettings);
  954.95 -	IMPORT_C void GetSmsSettingsL(CSmsMessageSettings& aSmsSettings) const;
  954.96 -
  954.97 -	inline const CArrayPtrFlat<CSmsNumber>& Recipients() const;
  954.98 -	inline CArrayPtrFlat<CSmsNumber>& Recipients();
  954.99 -
 954.100 -	inline void SetFromAddressL(const TDesC& aAddress);
 954.101 -	inline TPtrC FromAddress() const;
 954.102 -	
 954.103 -	TPtrC ReplyAddressL() const;
 954.104 -	
 954.105 -	IMPORT_C void SetEmailFieldsL(const CSmsEmailFields& aEmailFields);
 954.106 -	void SetReplyEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aReplySubjectFormat);
 954.107 -	void SetForwardEmailFieldsL(const CSmsEmailFields& aEmailFields, const TDesC& aForwardSubjectFormat);
 954.108 -	IMPORT_C const CSmsEmailFields& EmailFields() const;
 954.109 -
 954.110 -	IMPORT_C void InternalizeL( RMsvReadStream& aStream);
 954.111 -	IMPORT_C void ExternalizeL( RMsvWriteStream& aStream) const;
 954.112 -
 954.113 -	IMPORT_C void RestoreL(CMsvStore& aStore);
 954.114 -	IMPORT_C void StoreL(CMsvStore& aStore) const;
 954.115 -
 954.116 -	IMPORT_C  TBool ContainsSmsHeaderL(const CMsvStore& aStore); 
 954.117 -	
 954.118 -private:
 954.119 -	CSmsHeader(CSmsMessage* aSmsMessage = NULL);
 954.120 -	void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText);
 954.121 -	void ConstructL(CSmsPDU::TSmsPDUType aType, CEditableText& aText, RFs& aFs);
 954.122 -	void ConstructL();
 954.123 -
 954.124 -	enum TSmsHeaderFlags
 954.125 -		{
 954.126 -		ESmsHeaderNoFlags			= 0x00,
 954.127 -		ESmsHeaderReplyPathProvided = 0x01,
 954.128 -		ESmsHeaderCanConcatenate	= 0x02
 954.129 -		};
 954.130 -
 954.131 -	TBool CanConcatenate() const;
 954.132 -	void SetCanConcatenate(TBool aCanConcatenate);
 954.133 -	
 954.134 -	void SetEmailReplyForwardSubjectL(CSmsEmailFields* aEmailFields, const TDesC& aSubject, const TDesC& aSubjectFormat);
 954.135 -	
 954.136 -private:
 954.137 -	CArrayPtrFlat<CSmsNumber> iRecipients;
 954.138 -	CSmsMessage* iMessage;
 954.139 -	TUint32 iFlags;
 954.140 -	RFs iFs;
 954.141 -
 954.142 -	// iBioMsgIdType is only used during sending and will be ignored if the 
 954.143 -	// TMsvEntry.iBioType == 0. The default is EBioMsgIdNbs.
 954.144 -	TBioMsgIdType iBioMsgIdType;
 954.145 -	CSmsEmailFields*	iEmailFields;
 954.146 -	TBool			iCloseFs;
 954.147 -	};
 954.148 -	
 954.149 -/**
 954.150 -A specialisation of the message server index class for SMS message entries.
 954.151 -
 954.152 -It provides accessers for SMS message specific data, for instance the class type
 954.153 -of the SMS message.
 954.154 -
 954.155 -@publishedPartner
 954.156 -@released
 954.157 -*/
 954.158 -class TMsvSmsEntry : public TMsvEntry
 954.159 -	{
 954.160 -public:
 954.161 -
 954.162 -/**
 954.163 -Defines a set flags used to access message entry data specific to an SMS message.
 954.164 -
 954.165 -@internalTechnology
 954.166 -@released
 954.167 -
 954.168 -*/
 954.169 -	enum TMsvSmsEntryFlags
 954.170 -		{
 954.171 -/**
 954.172 -Clears the entire set of SMS flags.
 954.173 -*/
 954.174 -		EMsvSmsEntryClearFlag				= 0x00000000,
 954.175 -/**
 954.176 -Mask for the protocol identifier data.
 954.177 -*/
 954.178 -		EMsvSmsEntryProtocolIdentifier		= 0x000000FF,
 954.179 -/**
 954.180 -Mask for the User Prompt Indicator flag.
 954.181 -*/
 954.182 -		EMsvSmsEntryUserPromptIndicator 	= 0x00000100,
 954.183 -/**
 954.184 -Mask for the SMS class data.
 954.185 -*/
 954.186 -		EMsvSmsEntryClass					= 0x00000E00,
 954.187 -/**
 954.188 -Mask for the flag indicating whether the class data has been defined.
 954.189 -*/
 954.190 -		EMsvSmsEntryClassDefined			= 0x00001000,
 954.191 -/**
 954.192 -Mask for the flag indicating whether the message ID is valid. 
 954.193 -*/
 954.194 -		EMsvSmsMessageValid					= 0x00002000,
 954.195 -/**
 954.196 -Mask for the delivery acknowledgement information.
 954.197 -*/
 954.198 -		EMsvSmsEntryDeliveryAckSummary		= 0x0001C000,
 954.199 -/**
 954.200 -Parameter defining the number of bits to be shifted in order for the SMS class
 954.201 -data to be at the LSB of the data block.
 954.202 -*/
 954.203 -		EMsvSmsEntryClassShift				= 9,
 954.204 -/**
 954.205 -Parameter defining the number of bits to be shifted in order for the delivery
 954.206 -acknowlwdgement information to be at the LSB of the data block.
 954.207 -*/
 954.208 -		EMsvSmsEntryDeliveryAckSummaryShift	= 14
 954.209 -		};
 954.210 -
 954.211 -/**
 954.212 -Defines the summary acknowledgement information.
 954.213 -
 954.214 -This information indicates whether the SMS message is not supplying a summary 
 954.215 -for an acknowledgement, is still expecting acknowledgments or it has received 
 954.216 -all expected acknowledgements.
 954.217 -
 954.218 -If all acknowledgements have been received the summary indicates whether all 
 954.219 -the recipients have successfully acknowledged the message, all failed or there
 954.220 -was a mixture of successful and failed acknowledgements from the recipients. 
 954.221 -*/
 954.222 -	enum TMsvSmsEntryAckSummary
 954.223 -		{
 954.224 -/**
 954.225 -No summary information is being formed.
 954.226 -*/
 954.227 -		ENoAckSummary			= 0,
 954.228 -/**
 954.229 -The message is waiting for acknowledgements to be received for all recipients
 954.230 -of this message. Some recipients may have received their acknowledgements but
 954.231 -there are still some recipients that have not.
 954.232 -*/
 954.233 -		EPendingAcks,
 954.234 -/**
 954.235 -The summary indicates that the message was successfully acknowledged by all recipients.
 954.236 -*/
 954.237 -		EAllSuccessful,
 954.238 -/**
 954.239 -The summary indicates that the message failed to be acknowledged by all recipients.
 954.240 -*/
 954.241 -		EAllFailed,
 954.242 -/**
 954.243 -The summary indicates a mixture of successful and failed acknowledgements from 
 954.244 -the recipients of the message. All recipients of this message have received 
 954.245 -their acknowledgements.
 954.246 -*/
 954.247 -		EMixed
 954.248 -		};
 954.249 -
 954.250 -public:
 954.251 -	inline TMsvSmsEntry();
 954.252 -	inline TMsvSmsEntry(const TMsvEntry& aEntry);
 954.253 -
 954.254 -	inline void SetUserPromptIndicator(TBool aUPI);
 954.255 -	inline TBool UserPromptIndicator() const;
 954.256 -
 954.257 -	inline TUint8 ProtocolIdentifier() const;
 954.258 -	inline void SetProtocolIdentifier(TSmsProtocolIdentifier aPID);
 954.259 -	inline void SetProtocolIdentifier(TUint8 aPID);
 954.260 -
 954.261 -	inline TBool Class(TSmsDataCodingScheme::TSmsClass& aClass) const;
 954.262 -	inline void SetClass(TBool aClassDefined,TSmsDataCodingScheme::TSmsClass aClass = TSmsDataCodingScheme::ESmsClass0);
 954.263 -
 954.264 -	IMPORT_C TMsvSmsEntryAckSummary AckSummary(TSmsAckType aAckType) const;
 954.265 -	IMPORT_C void SetAckSummary(TSmsAckType aAckType, TMsvSmsEntryAckSummary aAckSummary);
 954.266 -
 954.267 -	IMPORT_C TBool MessageId(TInt32& aMessageId) const;
 954.268 -	IMPORT_C void SetMessageId(TInt32 aMessageId, TBool aIsValid);
 954.269 -	};
 954.270 -
 954.271 -#include <smuthdr.inl>
 954.272 -
 954.273 -#endif	// __SMUTHDR_H__
   955.1 --- a/epoc32/include/smutset.h	Tue Mar 16 16:12:26 2010 +0000
   955.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   955.3 @@ -1,752 +0,0 @@
   955.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   955.5 -// All rights reserved.
   955.6 -// This component and the accompanying materials are made available
   955.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   955.8 -// which accompanies this distribution, and is available
   955.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  955.10 -//
  955.11 -// Initial Contributors:
  955.12 -// Nokia Corporation - initial contribution.
  955.13 -//
  955.14 -// Contributors:
  955.15 -//
  955.16 -// Description:
  955.17 -//
  955.18 -
  955.19 -#ifndef __SMUTSET_H__
  955.20 -#define __SMUTSET_H__
  955.21 -
  955.22 - 
  955.23 -
  955.24 -
  955.25 -#include <gsmumsg.h>
  955.26 -#include <msvrcpt.h>
  955.27 -#include <msvstore.h>
  955.28 -#include <logwrap.h>
  955.29 -
  955.30 -class CSmsServiceCenter;
  955.31 -class CSmsEmailFields;
  955.32 -
  955.33 -// Both the recipient's number  and SC number (TP-Destination-Address and RP-Destination-Address) 
  955.34 -// can be 12 octets which means that there can be 21 characters (including + sign) in the number string. 
  955.35 -
  955.36 -/**
  955.37 -The maximum length of recipient's number.
  955.38 -
  955.39 -The number returned by CSmsNumber::Address() and CSmsServiceCenter::Address() is limited this maximum length.
  955.40 -
  955.41 -@see	CSmsNumber::Address
  955.42 -@see	CSmsServiceCenter::Address
  955.43 -
  955.44 -@publishedAll
  955.45 -@released
  955.46 -*/
  955.47 -const TInt KSmcmSmsNumberMaxNumberLength = 21;
  955.48 -
  955.49 -/**
  955.50 -The maximum length of recipient's name.
  955.51 -
  955.52 -The number returned by CSmsNumber::Name() and CSmsServiceCenter::Name() is limited this maximum length.
  955.53 -
  955.54 -@see	CSmsNumber::Name
  955.55 -@see	CSmsServiceCenter::Name
  955.56 -
  955.57 -@publishedAll
  955.58 -@released
  955.59 -*/
  955.60 -const TInt KSmcmSmsNumberMaxNameLength = 256;
  955.61 -
  955.62 -/** 
  955.63 -Defines the possible forms in which an SMS message should be delivered to the 
  955.64 -recipient by the service centre.
  955.65 -
  955.66 -The specified format may or may not actually be supported by the service centre. 
  955.67 -Note that the format of the recipient address(es) may need to be different 
  955.68 -to a normal telephone number if the conversion is set to any other value than 
  955.69 -ESmsConvPIDNone, ESmsConvFax, ESmsConvPaging or ESmsConvErmes. 
  955.70 -
  955.71 -@publishedAll
  955.72 -@released
  955.73 -*/
  955.74 -enum TSmsPIDConversion
  955.75 -		{
  955.76 -/**
  955.77 -No conversion (i.e. use SMS itself). 
  955.78 -*/
  955.79 -		ESmsConvPIDNone	= TSmsProtocolIdentifier::ESmsNoTelematicDevice,
  955.80 -/** 
  955.81 -Convert to fax. 
  955.82 -*/
  955.83 -		ESmsConvFax		= TSmsProtocolIdentifier::ESmsGroup3TeleFax,
  955.84 -/** 
  955.85 -Convert to X.400. 
  955.86 -*/
  955.87 -		ESmsConvX400	= TSmsProtocolIdentifier::ESmsX400MessageHandlingSystem,
  955.88 -/** 
  955.89 -Convert to pager message. 
  955.90 -*/
  955.91 -		ESmsConvPaging	= TSmsProtocolIdentifier::ESmsNationalPagingSystem,
  955.92 -/** 
  955.93 -Convert to Internet email. 
  955.94 -*/
  955.95 -		ESmsConvMail	= TSmsProtocolIdentifier::ESmsInternetElectronicMail,
  955.96 -/** 
  955.97 -Convert to ERMES paging. 
  955.98 -*/
  955.99 -		ESmsConvErmes	= TSmsProtocolIdentifier::ESmsERMES,
 955.100 -/**
 955.101 -Convert to sppech. 
 955.102 -*/
 955.103 -		ESmsConvSpeech	= TSmsProtocolIdentifier::ESmsVoiceTelephone
 955.104 -		};
 955.105 -
 955.106 -/**
 955.107 -Defines the set of possible validity periods for mobile originated messages.
 955.108 -
 955.109 -Mobile originated messages have a PDU type of SMS-SUBMIT.
 955.110 -
 955.111 -@publishedAll
 955.112 -@released
 955.113 -*/
 955.114 -enum TSmcmValidityPeriod
 955.115 -	{
 955.116 -/**
 955.117 -Validity period of an hour.
 955.118 -*/
 955.119 -	ESmsVPHour			= TSmsValidityPeriod::EHalfHourUnitInMinutes*2,
 955.120 -/**
 955.121 -Validity period of six hours.
 955.122 -*/
 955.123 -	ESmsVPSixHours		= TSmsValidityPeriod::EHalfHourUnitInMinutes*12,
 955.124 -/**
 955.125 -Validity period of 24 hours.
 955.126 -*/
 955.127 -	ESmsVP24Hours		= TSmsValidityPeriod::EOneDayUnitInMinutes,
 955.128 -/**
 955.129 -Validity period of a week.
 955.130 -*/
 955.131 -	ESmsVPWeek			= TSmsValidityPeriod::EOneWeekUnitInMinutes,
 955.132 -/**
 955.133 -The maximum validity period - currently set as 63 weeks.
 955.134 -*/
 955.135 -	ESmsVPMaximum		= TSmsValidityPeriod::EOneWeekUnitInMinutes*63,
 955.136 -/**
 955.137 -An enum that specifies that a validity period is not supported.
 955.138 -*/
 955.139 -	ESmsVPNotSupported	= KErrNotSupported,
 955.140 -/**
 955.141 -The default validy period - currently set to a week.
 955.142 -*/
 955.143 -	ESmsVPDefault		= ESmsVPWeek
 955.144 -	}; 
 955.145 -
 955.146 -/** 
 955.147 -Defines options for the preferred default sending schedule type of a new message
 955.148 -created using the SMS client MTM.
 955.149 -
 955.150 -The option has no direct effect on the SMS MTM. When it is sending an SMS
 955.151 -message it automatically appends other SMS messages in the outbox whose send
 955.152 -states are marked as KMsvSendStatewaiting or KMsvSendSateUnknown.
 955.153 -
 955.154 -Therefore it is the responsibility of the messaging client to set the correct
 955.155 -send state of new SMS messages correctly given the preferred sending schedule.
 955.156 -
 955.157 -@publishedAll
 955.158 -@released
 955.159 -*/
 955.160 -enum TSmsDelivery
 955.161 -	{
 955.162 -/** 
 955.163 -Send message immediately. The message send state should be set to KMsvSendStateWaiting. 
 955.164 -*/
 955.165 -	ESmsDeliveryImmediately,
 955.166 -/** 
 955.167 -Send message when client requests. The message send state should be set to KMsvSendStateUponRequest.
 955.168 -*/
 955.169 -	ESmsDeliveryUponRequest,
 955.170 -/**
 955.171 -Send message at scheduled time. The message send state should be set to KMsvSendStateScheduled.
 955.172 -*/
 955.173 -	ESmsDeliveryScheduled
 955.174 -	};
 955.175 -
 955.176 -/**
 955.177 -Defines the flags and masks for some of the message settings.
 955.178 -
 955.179 -The settings classes CSmsMessageSettings and CSmsSettings use these flags to 
 955.180 -store the specified information.
 955.181 -
 955.182 -@internalComponent
 955.183 -@released
 955.184 -*/
 955.185 -enum TSmsSettingsFlags
 955.186 -	{
 955.187 -/**
 955.188 -Mask that resets the flags.
 955.189 -*/
 955.190 -	ESmsSettingsNoFlags					=0,
 955.191 -/**
 955.192 -Flag that indicates if messages can be concatenated.
 955.193 -
 955.194 -If true, the UI should pass a long message in one piece to the MTM. If false, 
 955.195 -it should split the message manually into 140 byte parts. The value of this 
 955.196 -flag does not affect the behaviour of the SMS MTM.
 955.197 -*/
 955.198 -	ESmsSettingsCanConcatenate			=0x00000001,
 955.199 -/**
 955.200 -Flag that indicates whether the original message should be included in relpy
 955.201 -messages.
 955.202 -
 955.203 -If true, the received message should be quoted at the beginning of the reply 
 955.204 -message. If false, reply messages should be initially empty.
 955.205 -*/
 955.206 -	ESmsSettingsReplyQuoted				=0x00000002,
 955.207 -/**
 955.208 -Flag that indicates whether duplicate messages should be rejected.
 955.209 -*/
 955.210 -	ESmsSettingsRejectDuplicate			=0x00000004,
 955.211 -/**
 955.212 -Flag that indicates if a status report (TP-SRR in GSM spec 03.40) should be 
 955.213 -requested from the Service Centre.
 955.214 -*/
 955.215 -	ESmsSettingsDeliveryReport			=0x00000008,
 955.216 -/**
 955.217 -Flag that indicates if the reply path (Service Centre address) should be included
 955.218 -in the delivered message (TP-RP in GSM spec 03.40).
 955.219 -*/
 955.220 -	ESmsSettingsReplyPathRequested		=0x00000010,
 955.221 -/**  
 955.222 -Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment
 955.223 -should be requested from the Service Centre.
 955.224 -*/
 955.225 -	ESmsSettingsLastSegmentDeliveryReport	=0x00000020	,
 955.226 -	
 955.227 -/**
 955.228 -Flag that indicates if a status report (TP-SRR in GSM spec 03.40) for the last segment 
 955.229 -is not requested from the Service Centre.
 955.230 -*/
 955.231 -	ENoSmsSettingsLastSegmentDeliveryReport	=0x00000040,
 955.232 -/**
 955.233 -Flag that indicates that the service center time stamp should be used for the date
 955.234 -field in any TMsvEntry that corresponds to a SMS message.
 955.235 -*/
 955.236 -	ESmsSettingsUseServiceCenterTimeStamp =0x00000080,
 955.237 -/**
 955.238 -Mask for the set of flags defined.
 955.239 -*/
 955.240 -	ESmsSettingsMask                    =0x000000FF,
 955.241 -	};
 955.242 -
 955.243 -
 955.244 -/**
 955.245 -Defines the types of acknowledgements that can be received from recipients.
 955.246 -*/
 955.247 -enum TSmsAckType
 955.248 -	{
 955.249 -/**
 955.250 -Acknowlwdgement of delivery to a recipient.
 955.251 -*/
 955.252 -	ESmsAckTypeDelivery		=0	
 955.253 -	};
 955.254 -
 955.255 -/** 
 955.256 -Progress information for SMS MTM operations.
 955.257 -
 955.258 -This information is returned by CMsvOperation::ProgressL() in a TSmsProgressBuf 
 955.259 -package.
 955.260 -
 955.261 -@see	CMsvOperation::ProgressL
 955.262 -
 955.263 -@publishedAll
 955.264 -@released
 955.265 -*/
 955.266 -class TSmsProgress 
 955.267 -	{
 955.268 -public:
 955.269 -/** 
 955.270 -Defines type of operation for which progress information is being given.
 955.271 -
 955.272 -These types correspond to the commands defined in TSmsMtmCommand.
 955.273 -
 955.274 -@see	TSmsMtmCommand
 955.275 -*/
 955.276 -	enum TSmsProgressType
 955.277 -		{
 955.278 -/** 
 955.279 -The default operation type - no operation.
 955.280 -*/
 955.281 -		ESmsProgressTypeDefault,
 955.282 -/** 
 955.283 -Reading SIM parameters.
 955.284 -		
 955.285 -Pre v7.0, this was named ESmsProgressTypeReadingServiceCenterAddress.
 955.286 -*/
 955.287 -		ESmsProgressTypeReadSimParams,
 955.288 -/**
 955.289 -Writing SIM parameters.
 955.290 -		
 955.291 -Pre v7.0 this was named ESmsProgressTypeWritingServiceCenterAddress. 
 955.292 -*/
 955.293 -		ESmsProgressTypeWriteSimParams,
 955.294 -/**
 955.295 -Sending messages.
 955.296 -*/
 955.297 -		ESmsProgressTypeSending,
 955.298 -/**
 955.299 -Scheduling sending messages.
 955.300 -*/
 955.301 -		ESmsProgressTypeScheduling,
 955.302 -/**
 955.303 -Enumerating phone stores.
 955.304 -		
 955.305 -Pre v7.0, this was named ESmsProgressTypeEnumeratingSim.
 955.306 -*/
 955.307 -		ESmsProgressTypeEnumeratingPhoneStores, 
 955.308 -/**
 955.309 -Copying messages from phone stores.
 955.310 -		
 955.311 -Pre v7.0, this was named ESmsProgressTypeCopyFromSim.
 955.312 -*/
 955.313 -		ESmsProgressTypeCopyFromPhoneStore, 
 955.314 -/**
 955.315 -Moving messages from phone stores.
 955.316 -		
 955.317 -Pre v7.0, this was named ESmsProgressTypeMoveFromSim.
 955.318 -*/
 955.319 -		ESmsProgressTypeMoveFromPhoneStore, 
 955.320 -/**
 955.321 -Deleting messages from phone stores.
 955.322 -		
 955.323 -Pre v7.0, this was named ESmsProgressTypeDeleteFromSim.
 955.324 -*/
 955.325 -		ESmsProgressTypeDeleteFromPhoneStore, 
 955.326 -/**
 955.327 -Removing all messages from the task scheduler list.
 955.328 -*/
 955.329 -		ESmsProgressTypeDeleteSchedule,
 955.330 -/**
 955.331 -Checking the current scheduled status of the messages.
 955.332 -*/
 955.333 -		ESmsProgressTypeCheckSchedule,
 955.334 -/**
 955.335 -Recursively deleting messages.
 955.336 -*/
 955.337 -		ESmsProgressTypeDeleteAll,
 955.338 -/**
 955.339 -Copying messages to a phone store.
 955.340 -		
 955.341 -Pre v7.0, this was named ESmsProgressTypeCopyToSim.
 955.342 -*/
 955.343 -		ESmsProgressTypeCopyToPhoneStore,  
 955.344 -/**
 955.345 -Moving messages to a phone store.
 955.346 -		
 955.347 -Pre v7.0, this was named ESmsProgressTypeMoveToSim.
 955.348 -*/
 955.349 -		ESmsProgressTypeMoveToPhoneStore,
 955.350 -/**
 955.351 -Moving message entries.
 955.352 -
 955.353 -This is the second part of ESmsProgressTypeMoveFromPhoneStore. The first part
 955.354 -deletes the messages from the phone storageSIM. This second part moves the 
 955.355 -messages from the folder that represents the phone storage to the specified
 955.356 -destination.
 955.357 -*/
 955.358 -		ESmsProgressTypeMovingEntries
 955.359 -		};
 955.360 -	
 955.361 -	inline TSmsProgress(TSmsProgressType aType = ESmsProgressTypeDefault);
 955.362 -
 955.363 -public:
 955.364 -	
 955.365 -/** 
 955.366 -The error code.
 955.367 -*/
 955.368 -	TInt iError; 
 955.369 -/** 
 955.370 -The type of operation. 
 955.371 -
 955.372 -@see	TSmsProgress::TSmsProgressType
 955.373 -*/
 955.374 -	TSmsProgressType iType;
 955.375 -/** 
 955.376 -The state of the operation.
 955.377 -*/
 955.378 -	TInt iState;
 955.379 -/** 
 955.380 -The number of recipients processed so far for the current message.
 955.381 -*/
 955.382 -	TInt iRcpDone;
 955.383 -/**
 955.384 -The total number of recipients in the current message.
 955.385 -*/
 955.386 -	TInt iRcpCount;
 955.387 -/** 
 955.388 -The nmber of messages processed so far for the current operation.
 955.389 -*/
 955.390 -	TInt iMsgDone;
 955.391 -/**
 955.392 -The total number of messages for the current operation.
 955.393 -*/
 955.394 -	TInt iMsgCount; 
 955.395 -/** 
 955.396 -The Service Centre address.
 955.397 -	
 955.398 -This is set by the command ESmsMtmCommandReadServiceCenter.
 955.399 -
 955.400 -@removed
 955.401 -This is no longer used since v7.0.
 955.402 -*/
 955.403 -	TBuf<14> iServiceCenterAddress;
 955.404 -/** 
 955.405 -The invisible folder that contains the messages read from the SIM by the command
 955.406 -ESmsMtmCommandEnumeratePhoneStores.
 955.407 -*/
 955.408 -	TMsvId iEnumerateFolder;
 955.409 -	};
 955.410 -
 955.411 -/** 
 955.412 -Package buffer for TSmsProgress. 
 955.413 -
 955.414 -@see	TSmsProgress
 955.415 -
 955.416 -@publishedAll
 955.417 -@released
 955.418 -*/
 955.419 -typedef TPckgBuf<TSmsProgress> TSmsProgressBuf;
 955.420 -
 955.421 -
 955.422 -/**
 955.423 -The SMS settings that are relevant on a per message basis.
 955.424 -
 955.425 -Each SMS message has its own settings. Initially they have a default set of 
 955.426 -values derived from the SMS service settings. They can be changed on an
 955.427 -individual message basis. For instance, a messaging application may allow a
 955.428 -user to specify/not specify status reports individually for each message.
 955.429 -
 955.430 -These settings are only relevant to mobile originated messages - those of 
 955.431 -SMS-SUBMIT type.
 955.432 -
 955.433 -@publishedAll
 955.434 -@released
 955.435 -*/
 955.436 -class CSmsMessageSettings : public CBase
 955.437 -	{
 955.438 -public:
 955.439 -	IMPORT_C virtual void InternalizeL(RReadStream& aReadStream);
 955.440 -	IMPORT_C virtual void ExternalizeL(RWriteStream& aWriteStream) const;
 955.441 -
 955.442 -	inline const TTimeIntervalMinutes& ValidityPeriod() const;
 955.443 -	inline void SetValidityPeriod(TTimeIntervalMinutes);
 955.444 -
 955.445 -	inline void SetValidityPeriodFormat(TSmsFirstOctet::TSmsValidityPeriodFormat aValidityPeriodFormat);
 955.446 -	inline const TSmsFirstOctet::TSmsValidityPeriodFormat ValidityPeriodFormat() const;
 955.447 -
 955.448 -	inline TBool RejectDuplicate() const;
 955.449 -	inline void SetRejectDuplicate(TBool);
 955.450 -
 955.451 -	inline TBool DeliveryReport() const;
 955.452 -	inline void SetDeliveryReport(TBool);
 955.453 -
 955.454 -	inline TBool ReplyPath() const;
 955.455 -	inline void SetReplyPath(TBool);
 955.456 -
 955.457 -	inline TSmsPIDConversion MessageConversion() const;
 955.458 -	inline void SetMessageConversion(TSmsPIDConversion);
 955.459 -
 955.460 -	inline TBool CanConcatenate() const;
 955.461 -	inline void SetCanConcatenate(TBool);
 955.462 -
 955.463 -	inline enum TSmsDataCodingScheme::TSmsAlphabet CharacterSet() const;
 955.464 -	inline void SetCharacterSet(TSmsDataCodingScheme::TSmsAlphabet);
 955.465 -
 955.466 -    IMPORT_C virtual void CopyL(const CSmsMessageSettings& aSettings);
 955.467 -
 955.468 -	TUint32 MessageFlags() const;
 955.469 -	void SetMessageFlags(TUint32 aMsgFlags);
 955.470 -	inline TBool LastSegmentDeliveryReport() const;
 955.471 -	inline void SetLastSegmentDeliveryReport(TBool);
 955.472 -
 955.473 -	inline void SetUseServiceCenterTimeStampForDate(TBool aUseServiceCenterTimestamp);
 955.474 -	inline TBool UseServiceCenterTimeStampForDate() const;
 955.475 -
 955.476 -protected:
 955.477 -
 955.478 -	CSmsMessageSettings();
 955.479 -
 955.480 -private:
 955.481 -
 955.482 -	TUint32 iMsgFlags;
 955.483 -	TSmsPIDConversion iMessageConversion;
 955.484 -	TSmsDataCodingScheme::TSmsAlphabet iAlphabet;
 955.485 -	TTimeIntervalMinutes iValidityPeriod;
 955.486 -	TSmsFirstOctet::TSmsValidityPeriodFormat iValidityPeriodFormat;
 955.487 -	};
 955.488 -
 955.489 -/** 
 955.490 -The SMS Service settings.
 955.491 -
 955.492 -An SMS service entry stores an object of this type in its message store. These
 955.493 -settings define the default settings for mobile originated messages (SMS-SUBMIT
 955.494 -type messages). They also provide some global settings that are applied to all
 955.495 -messages, both outward going and received messages.
 955.496 -
 955.497 -The SMS service also uses this class to store the set of avilable Servive Centre
 955.498 -numbers. The default Service Centre is defined from this set.
 955.499 -
 955.500 -@publishedAll
 955.501 -@released
 955.502 -*/
 955.503 -class CSmsSettings : public CSmsMessageSettings
 955.504 -	{
 955.505 -public:
 955.506 -
 955.507 -/**
 955.508 -Defines the ways in which status reports that are received by the watcher may
 955.509 -be handled.
 955.510 -
 955.511 -This can be applied to both SMS-STATUS-REPORT type messages and Special Messages
 955.512 -(e.g. Voice Mail Indication messages).
 955.513 -*/
 955.514 -	enum TSmsReportHandling
 955.515 -		{
 955.516 -/** 
 955.517 -The reports are put in the inbox and made invisible. 
 955.518 -*/
 955.519 -		EMoveReportToInboxInvisible,
 955.520 -/** 
 955.521 -The reports are put in the inbox and made visible.
 955.522 -*/
 955.523 -		EMoveReportToInboxVisible,
 955.524 -/**
 955.525 -The reports are deleted.
 955.526 -*/
 955.527 -		EDiscardReport,
 955.528 -/** 
 955.529 -Not supported.
 955.530 -*/
 955.531 -		EDoNotWatchForReport,
 955.532 -/**
 955.533 -Reports are put in the inbox and made invisible. The status report 
 955.534 -is matched against the sent mesasge and its summary info updated.
 955.535 -*/
 955.536 -		EMoveReportToInboxInvisibleAndMatch,
 955.537 -/**
 955.538 -Reports are put in the inbox and made visible. The status report 
 955.539 -is matched against the sent mesasge and its summary info updated.
 955.540 -*/
 955.541 -		EMoveReportToInboxVisibleAndMatch,
 955.542 -/**
 955.543 -Reports are deleted. The status report is matched against the sent
 955.544 -mesasge and its summary info updated.
 955.545 -*/
 955.546 -		EDiscardReportAndMatch
 955.547 -		};
 955.548 -
 955.549 -/** 
 955.550 -Sets whether the service settings should be used to update the communications 
 955.551 -database. 
 955.552 -
 955.553 -If the update is specified, it is done when the Service settings are stored into
 955.554 -the message store.
 955.555 -*/
 955.556 -	enum TSmsSettingsCommDbAction
 955.557 -		{
 955.558 -/** 
 955.559 -The comms database should not be updated.
 955.560 -*/
 955.561 -		ENone,
 955.562 -/** 
 955.563 -Use the Service settings to update the comms datebase.
 955.564 -*/
 955.565 -		EStoreToCommDb
 955.566 -		};
 955.567 -
 955.568 -/** Defines the SMS bearer.
 955.569 -Modes: GSM */
 955.570 -enum TMobileSmsBearer
 955.571 -	{
 955.572 -	/** SMS messages will only be sent over a packet-switched (GPRS) network. */
 955.573 -		ESmsBearerPacketOnly,
 955.574 -	/** SMS messages will only be sent over a circuit-switched (GSM) network. */
 955.575 -		ESmsBearerCircuitOnly,
 955.576 -	/** SMS messages will be sent over the packet-switched (GPRS) network if possible, 
 955.577 -	otherwise over circuit-switched (GSM) network. */
 955.578 -		ESmsBearerPacketPreferred,
 955.579 -	/** SMS messages will be sent over the circuit-switched (GSM) network if possible, 
 955.580 -	otherwise over packet-switched (GPRS) network. */
 955.581 -		ESmsBearerCircuitPreferred
 955.582 -	};
 955.583 -
 955.584 -public:
 955.585 -
 955.586 -	IMPORT_C static CSmsSettings* NewL();
 955.587 -	IMPORT_C static CSmsSettings* NewLC();
 955.588 -	IMPORT_C virtual ~CSmsSettings();
 955.589 -
 955.590 -	IMPORT_C TInt ServiceCenterCount() const;
 955.591 -	IMPORT_C CSmsServiceCenter& GetServiceCenter(TInt aIndex) const;
 955.592 -	IMPORT_C void AddServiceCenterL(const TDesC& aName,const TDesC& aNumber);
 955.593 -	IMPORT_C void RemoveServiceCenter(TInt aIndex);
 955.594 -	IMPORT_C TInt DefaultServiceCenter() const;
 955.595 -	IMPORT_C void SetDefaultServiceCenter(TInt aDefaultSC);
 955.596 -	inline TSmsDelivery Delivery() const;
 955.597 -	inline void SetDelivery(TSmsDelivery);
 955.598 -
 955.599 -	inline TBool ReplyQuoted() const;
 955.600 -	inline void SetReplyQuoted(TBool);
 955.601 -
 955.602 -    IMPORT_C void CopyL(const CSmsSettings& aSmsSettings);
 955.603 -
 955.604 -	inline TSmsReportHandling StatusReportHandling() const;
 955.605 -	inline void SetStatusReportHandling(TSmsReportHandling aStatusReportHandling);
 955.606 -	inline TSmsReportHandling SpecialMessageHandling() const;
 955.607 -	inline void SetSpecialMessageHandling(TSmsReportHandling aSpecialMessageHandling);
 955.608 -
 955.609 -	inline void SetCommDbAction(TSmsSettingsCommDbAction aCommDbAction);
 955.610 -	inline TSmsSettingsCommDbAction CommDbAction() const;
 955.611 -
 955.612 -	inline void SetSmsBearerAction(TSmsSettingsCommDbAction aSmsBearerAction);
 955.613 -	inline TSmsSettingsCommDbAction SmsBearerAction() const;
 955.614 -
 955.615 -	inline void SetSmsBearer(TMobileSmsBearer aSmsBearer);
 955.616 -	inline TMobileSmsBearer SmsBearer() const;
 955.617 -
 955.618 -	inline void SetClass2Folder(TMsvId aId);
 955.619 -	inline TMsvId Class2Folder() const;
 955.620 -
 955.621 -	inline void SetDescriptionLength(TInt aLength);
 955.622 -	inline TInt DescriptionLength() const;
 955.623 -
 955.624 -	TUint32 SettingsFlags() const;
 955.625 -	void SetSettingsFlags(TUint32 aSetFlags);
 955.626 -
 955.627 -	void RemoveSCAddresses();
 955.628 -	void StoreToCommDbL() const;
 955.629 -
 955.630 -private:
 955.631 -
 955.632 -	CSmsSettings();
 955.633 -	void ConstructL();
 955.634 -
 955.635 -private:
 955.636 -
 955.637 -	TUint32 iSetFlags;
 955.638 -	CArrayPtrFlat<CSmsServiceCenter> *iServiceCenters;
 955.639 -	TSmsDelivery iDelivery;
 955.640 -	TInt iDefaultSC;
 955.641 -	TSmsReportHandling iStatusReportHandling;
 955.642 -	TSmsReportHandling iSpecialMessageHandling;
 955.643 -	TSmsSettingsCommDbAction iCommDbAction;
 955.644 -	TSmsSettingsCommDbAction iSmsBearerAction;
 955.645 -	TMobileSmsBearer iSmsBearer;
 955.646 -	TMsvId iClass2Folder;
 955.647 -	TInt iDescriptionLength;
 955.648 -	};
 955.649 -
 955.650 -/** 
 955.651 -Recipient information for an SMS message.
 955.652 -
 955.653 -A SMS-SUBMIT message may have several recipients
 955.654 -
 955.655 -@publishedAll
 955.656 -@released
 955.657 -*/
 955.658 -class CSmsNumber : public CMsvRecipient 
 955.659 -	{
 955.660 -public:
 955.661 -
 955.662 -/**
 955.663 -Defines the status of an acknowledgement for a recipient.
 955.664 -*/
 955.665 -	enum TSmsAckStatus
 955.666 -		{
 955.667 -/**
 955.668 -An acknowledgement for this recipient has not been requested.
 955.669 -*/
 955.670 -		ENoAckRequested		= 0,
 955.671 -/**
 955.672 -The delivery status for this recipient has been requested, but the status report
 955.673 -has not yet been received.
 955.674 -*/
 955.675 -		EPendingAck,
 955.676 -/**
 955.677 -A successful acknowledgement for this recipient has been received.
 955.678 -*/
 955.679 -		EAckSuccessful,
 955.680 -/**
 955.681 -A failed acknowledgement for this recipient has been received.
 955.682 -*/
 955.683 -		EAckError
 955.684 -		};
 955.685 -
 955.686 -public:
 955.687 -
 955.688 -	IMPORT_C static CSmsNumber* NewL();
 955.689 -	IMPORT_C static CSmsNumber* NewL(const CSmsNumber& aSmsNumber);
 955.690 -	IMPORT_C virtual ~CSmsNumber();
 955.691 -
 955.692 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 955.693 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 955.694 -
 955.695 -	IMPORT_C TPtrC Address() const;
 955.696 -	IMPORT_C void SetAddressL(const TDesC& aAddress);
 955.697 -	void SetEmailAddressL(const TDesC& aAddress, CSmsEmailFields* aEmailFields, const TDesC& aAlias);
 955.698 -
 955.699 -	IMPORT_C TPtrC Name() const;
 955.700 -	IMPORT_C void SetNameL(const TDesC& aName);
 955.701 -
 955.702 -	inline TLogId LogId() const;
 955.703 -	inline void SetLogId(TLogId aLogId);
 955.704 -
 955.705 -	IMPORT_C CSmsNumber& CopyL(const CSmsNumber& aSmsNumber);
 955.706 -
 955.707 -	IMPORT_C TSmsAckStatus AckStatus(TSmsAckType aAckType) const;
 955.708 -	IMPORT_C void SetAckStatus(TSmsAckType aAckType, TSmsAckStatus aAckStatus);
 955.709 -	
 955.710 -private:
 955.711 -
 955.712 -	CSmsNumber();
 955.713 -	TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
 955.714 -
 955.715 -private:
 955.716 -
 955.717 -	HBufC* iNumber;
 955.718 -	HBufC* iName;
 955.719 -	TLogId iLogId;
 955.720 -	TSmsAckStatus iDeliveryStatus;
 955.721 -	};
 955.722 -
 955.723 -/** 
 955.724 -Used to store Service Centre numbers and their associated name.
 955.725 -
 955.726 -@publishedAll
 955.727 -@released
 955.728 -*/
 955.729 -class CSmsServiceCenter : public CBase
 955.730 -	{
 955.731 -public:
 955.732 -	IMPORT_C static CSmsServiceCenter* NewL();
 955.733 -	IMPORT_C static CSmsServiceCenter* NewL(const CSmsServiceCenter& aSmsSC);
 955.734 -	IMPORT_C ~CSmsServiceCenter();
 955.735 -
 955.736 -	IMPORT_C TPtrC Address() const;
 955.737 -	IMPORT_C void SetAddressL(const TDesC& aAddress);
 955.738 -
 955.739 -	IMPORT_C TPtrC Name() const;
 955.740 -	IMPORT_C void SetNameL(const TDesC& aName);
 955.741 -	
 955.742 -	IMPORT_C CSmsServiceCenter& CopyL(const CSmsServiceCenter& aSmsSc);
 955.743 -
 955.744 -private:
 955.745 -	CSmsServiceCenter();
 955.746 -	TPtrC LimitStringSize(const TPtrC& aString, TInt aMaxLength) const;
 955.747 -	
 955.748 -private:
 955.749 -	HBufC* iNumber;
 955.750 -	HBufC* iName;
 955.751 -	};
 955.752 -
 955.753 -#include <smutset.inl>
 955.754 -
 955.755 -#endif // __SMUTSET_H__
   956.1 --- a/epoc32/include/smutsimparam.h	Tue Mar 16 16:12:26 2010 +0000
   956.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   956.3 @@ -1,147 +0,0 @@
   956.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
   956.5 -// All rights reserved.
   956.6 -// This component and the accompanying materials are made available
   956.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   956.8 -// which accompanies this distribution, and is available
   956.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  956.10 -//
  956.11 -// Initial Contributors:
  956.12 -// Nokia Corporation - initial contribution.
  956.13 -//
  956.14 -// Contributors:
  956.15 -//
  956.16 -// Description:
  956.17 -//
  956.18 -
  956.19 -#ifndef __SMUTSIMPARAM_H__
  956.20 -#define __SMUTSIMPARAM_H__
  956.21 -
  956.22 -#include <msvapi.h>
  956.23 -#include <smcmmain.h>
  956.24 -
  956.25 -/**
  956.26 -The UID for the stream into which the SIM parameters are stored.
  956.27 -
  956.28 -@internalComponent
  956.29 -@deprecated
  956.30 -Should be moved to the cpp file for this class.
  956.31 -*/
  956.32 -const TUid KUidMsvSimSmsParams = {0x100081BC};
  956.33 -
  956.34 -class CMobilePhoneSmspList;
  956.35 -class TSmsProgress;
  956.36 -
  956.37 -/**
  956.38 -A packaged TInt value.
  956.39 -
  956.40 -This is used by CSmsSimParamOperation.
  956.41 -
  956.42 -@see CSmsSimParamOperation::ProgressL()
  956.43 -
  956.44 -@internalComponent
  956.45 -@released
  956.46 -*/
  956.47 -typedef TPckgBuf<TInt> TIntBuf;
  956.48 -
  956.49 -/**
  956.50 -Encapsulates an operation to read/write an array of SMS parameters from a SIM.
  956.51 -
  956.52 -An operation of this type if returned by the SMS client MTM for the read and
  956.53 -write SIM paramter operations.
  956.54 -
  956.55 -These operations are generated from calling the SMS client MTM APIs 
  956.56 -CSmsClientMtm::ReadSimParamsL and CSmsClientMtm::WriteSimParamsL. The 
  956.57 -CSmsClientMtm::InvokeAsyncFunctionL API should not be used for these operations.
  956.58 -
  956.59 -@see	CSmsClientMtm::ReadSimParamsL
  956.60 -@see	CSmsClientMtm::WriteSimParamsL
  956.61 -
  956.62 -@publishedAll
  956.63 -@released
  956.64 -*/
  956.65 -class CSmsSimParamOperation : public CMsvOperation
  956.66 -	{
  956.67 -public:
  956.68 -
  956.69 -	static CSmsSimParamOperation* ReadSimParamsL(TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  956.70 -	static CSmsSimParamOperation* WriteSimParamsL(const CMobilePhoneSmspList& aList, TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  956.71 -	virtual ~CSmsSimParamOperation();
  956.72 -
  956.73 -	inline const CMobilePhoneSmspList& SmspList() const;
  956.74 -
  956.75 -	IMPORT_C CMobilePhoneSmspList* ServiceCentersLC() const;
  956.76 -	IMPORT_C const TDesC8& ProgressL();
  956.77 -
  956.78 -	IMPORT_C static void RestoreSimParamsL(CMsvStore& aStore, CMobilePhoneSmspList& aList);
  956.79 -	IMPORT_C static void StoreSimParamsL(CMsvStore& aStore, const CMobilePhoneSmspList& aList);
  956.80 -
  956.81 -private:	// methods from CActive
  956.82 -
  956.83 -	virtual void RunL();
  956.84 -	virtual void DoCancel();
  956.85 -	virtual TInt RunError(TInt aError);
  956.86 -
  956.87 -private:
  956.88 -
  956.89 -	CSmsSimParamOperation(TUid aMtm, TMsvId aService, CMsvSession& aMsvSession, TRequestStatus& aObserverRequestStatus);
  956.90 -
  956.91 -	void DoReadSimParamsL();
  956.92 -	void DoRunReadSimParamsL(/*TSmsProgress aProgress*/);
  956.93 -	void DoWriteSimParamsL(const CMobilePhoneSmspList& aList);
  956.94 -
  956.95 -	void TransferCommandL(TInt aCommandId);
  956.96 -	void Complete();
  956.97 -
  956.98 -private:
  956.99 -
 956.100 -/**
 956.101 -This defines the state machine.
 956.102 -*/
 956.103 -	enum TReadSimParamsState
 956.104 -		{
 956.105 -/**
 956.106 -Specifies waiting state
 956.107 -*/
 956.108 -		EStateWaiting,
 956.109 -/**
 956.110 -Specifies reading state
 956.111 -*/
 956.112 -		EStateReadingSimParams,	 
 956.113 -/**
 956.114 -Specifies writing state
 956.115 -*/
 956.116 -		EStateWritingSimParams
 956.117 -		} iState;
 956.118 -
 956.119 -/**
 956.120 -A list containing the SMS parameters
 956.121 -*/
 956.122 -	CMobilePhoneSmspList* iSimParams;	
 956.123 -	TInt iError;
 956.124 -	TIntBuf iProgressBuf;
 956.125 -	CMsvOperation* iOperation;
 956.126 -	};
 956.127 -
 956.128 -/**
 956.129 -Gets the list of SMS parameters on the SIM, after a successfully completed 
 956.130 -read operation.
 956.131 -
 956.132 -If the operation has not successfully completed, this function returns an 
 956.133 -empty list.
 956.134 -
 956.135 -This function should ot be used with a write SIM parameters operation.
 956.136 -
 956.137 -@return
 956.138 -The list of SMS parameters read from the SIM.
 956.139 -
 956.140 -@panic	SMCM	3
 956.141 -This operation was not reading the SIM parameters. The operation was not returned
 956.142 -from CSmsClientMtm::ReadSimParamsL (debug only).
 956.143 -*/
 956.144 -inline const CMobilePhoneSmspList& CSmsSimParamOperation::SmspList() const
 956.145 -	{
 956.146 -	__ASSERT_DEBUG(iState == EStateReadingSimParams, Panic(ESmscPanicUnexpectedCommand));
 956.147 -	return *iSimParams;
 956.148 -	}
 956.149 -
 956.150 -#endif // __SMUTSIMPARAM_H__
   957.1 --- a/epoc32/include/spriteanimation.h	Tue Mar 16 16:12:26 2010 +0000
   957.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   957.3 @@ -1,109 +0,0 @@
   957.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
   957.5 -// All rights reserved.
   957.6 -// This component and the accompanying materials are made available
   957.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
   957.8 -// which accompanies this distribution, and is available
   957.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
  957.10 -//
  957.11 -// Initial Contributors:
  957.12 -// Nokia Corporation - initial contribution.
  957.13 -//
  957.14 -// Contributors:
  957.15 -//
  957.16 -// Description:
  957.17 -//
  957.18 -
  957.19 -#ifndef __SPRITEANIMATION_H__
  957.20 -#define __SPRITEANIMATION_H__
  957.21 -
  957.22 -#include <animation.h>
  957.23 -
  957.24 -#include <e32base.h>
  957.25 -#include <w32std.h>
  957.26 -
  957.27 -#include <animationconfig.h>
  957.28 -#include <spriteanimationclient.h>
  957.29 -
  957.30 -class CAnimationDataProvider;
  957.31 -class CCoeControl;
  957.32 -class CSpriteAnimationExt;
  957.33 -
  957.34 -/**
  957.35 -Implementation of CAnimation for sprite based animations.
  957.36 -
  957.37 -A sprite animation displays the image using a sprite, which is a server side
  957.38 -graphic object.  This is likely to be more efficient than a basic animation,
  957.39 -and requires slightly less work in the client application.  However, it also
  957.40 -provides less control over the actual rendering of the image.
  957.41 -
  957.42 -A sprite animation must be associated with an RWindow.  However, no redraw
  957.43 -events will be generated for it by the animation, and the client application
  957.44 -does not need to take any action once the animation has started.  Holding the
  957.45 -animation when the sprite is not visible is handled automatically on the server
  957.46 -side.
  957.47 -
  957.48 -@see CAnimationDataProvider
  957.49 -@publishedAll
  957.50 -@released
  957.51 -*/
  957.52 -class CSpriteAnimation : public CAnimation, public MAnimationDataProviderObserver
  957.53 -	{
  957.54 -public:
  957.55 -	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWsSession, RWindow& aWindow, MAnimationObserver* aObserver = 0);
  957.56 -	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, RWsSession& aWsSession, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver = 0);
  957.57 -	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, MAnimationObserver* aObserver = NULL, const CCoeControl* aHost = NULL);
  957.58 -	IMPORT_C static CSpriteAnimation* NewL(CAnimationDataProvider* aDataProvider, const TPoint& aPoint, const TDesC8& aDataType, MAnimationObserver* aObserver = NULL, const CCoeControl* aHost = NULL);
  957.59 -	IMPORT_C ~CSpriteAnimation();
  957.60 -	IMPORT_C TSize Size() const;
  957.61 -
  957.62 -	/** Provides an CSpriteAnimation DataProvider interface to the client application.
  957.63 -	@return iDataProvider A CAnimationDataProvider */
  957.64 -	inline CAnimationDataProvider* DataProvider() { return iDataProvider; }
  957.65 -	// From CAnimationBase:
  957.66 -	virtual void Start(const TAnimationConfig& aConfig);
  957.67 -	virtual void Stop();
  957.68 -	virtual void Pause();
  957.69 -	virtual void Resume();
  957.70 -	virtual void Hold();
  957.71 -	virtual void Unhold();
  957.72 -	virtual void SetPosition(const TPoint& aPoint);
  957.73 -	virtual void Freeze();
  957.74 -	virtual void Unfreeze();	
  957.75 -public:
  957.76 -	IMPORT_C virtual void SetHostL(const CCoeControl* aHost);
  957.77 -		
  957.78 -protected:
  957.79 -	CSpriteAnimation();
  957.80 -	CSpriteAnimation(CAnimationDataProvider* aDataProvider, RWsSession& aWsSession);
  957.81 -	CSpriteAnimation(CAnimationDataProvider* aDataProvider, MAnimationObserver* aObserver, const CCoeControl* aHost);
  957.82 -	void ConstructL(const TPoint& aPoint, RWindow& aWindow, const TDesC8& aDataType, MAnimationObserver* aObserver);
  957.83 -	virtual void CSpriteAnimation_Reserved2();
  957.84 -	void ConstructL(const TPoint& aPoint, const TDesC8& aDataType);
  957.85 -	void ConstructL();
  957.86 -private:
  957.87 -	CSpriteAnimation(const CSpriteAnimation&);	// no implementation
  957.88 -	CSpriteAnimation& operator=(const CSpriteAnimation&);			// no implementation
  957.89 -	void InitializeL();
  957.90 -	void Reset();
  957.91 -	// from MAnimationDataProviderObserver
  957.92 -	virtual void DataProviderEventL(TInt aEvent, TAny* aData, TInt aDataSize);
  957.93 -
  957.94 -private:
  957.95 -	enum TFlags 
  957.96 -		{
  957.97 -		EAnimationInitialized = 0x1	// Is the animation initialized?
  957.98 -		};
  957.99 -private:
 957.100 -	CSpriteAnimationExt* iSpriteAnimationExt;
 957.101 -	MAnimationObserver* iObserver;
 957.102 -//note the following data member is accessed via an inline function!
 957.103 -	CAnimationDataProvider* iDataProvider;
 957.104 -	RWsSession* iWsSession;
 957.105 -	RWsSprite* iWsSprite;
 957.106 -	RAnimDll iAnimDll;
 957.107 -	RSpriteAnimationClient* iClient;
 957.108 -	const CCoeControl* iHost;
 957.109 -	TInt iFlags;
 957.110 -	};
 957.111 -
 957.112 -#endif
   958.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   958.2 +++ b/epoc32/include/stdapis/boost/aligned_storage.hpp	Wed Mar 31 12:27:01 2010 +0100
   958.3 @@ -0,0 +1,13 @@
   958.4 +
   958.5 +//  Copyright (C) John Maddock 2005.
   958.6 +//  Use, modification and distribution are subject to the Boost Software License,
   958.7 +//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
   958.8 +//  http://www.boost.org/LICENSE_1_0.txt).
   958.9 +//
  958.10 +//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
  958.11 +
  958.12 +#ifndef BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
  958.13 +#  define BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
  958.14 +#  include <boost/aligned_storage.hpp>
  958.15 +#endif // BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
  958.16 +
   959.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   959.2 +++ b/epoc32/include/stdapis/boost/archive/detail/abi_prefix.hpp	Wed Mar 31 12:27:01 2010 +0100
   959.3 @@ -0,0 +1,20 @@
   959.4 +//  abi_prefix header  -------------------------------------------------------//
   959.5 +
   959.6 +// © Copyright John Maddock 2003
   959.7 +   
   959.8 +// Use, modification and distribution are subject to the Boost Software License,
   959.9 +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  959.10 +// http://www.boost.org/LICENSE_1_0.txt).
  959.11 +
  959.12 +#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
  959.13 +# define BOOST_CONFIG_ABI_PREFIX_HPP
  959.14 +#else
  959.15 +# error double inclusion of header boost/config/abi_prefix.hpp is an error
  959.16 +#endif
  959.17 +
  959.18 +#include <boost/config.hpp>
  959.19 +
  959.20 +// this must occur after all other includes and before any code appears:
  959.21 +#ifdef BOOST_HAS_ABI_HEADERS
  959.22 +#  include BOOST_ABI_PREFIX
  959.23 +#endif
   960.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   960.2 +++ b/epoc32/include/stdapis/boost/archive/detail/abi_suffix.hpp	Wed Mar 31 12:27:01 2010 +0100
   960.3 @@ -0,0 +1,23 @@
   960.4 +//  abi_sufffix header  -------------------------------------------------------//
   960.5 +
   960.6 +// © Copyright John Maddock 2003
   960.7 +   
   960.8 +// Use, modification and distribution are subject to the Boost Software License,
   960.9 +// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  960.10 +// http://www.boost.org/LICENSE_1_0.txt).
  960.11 +
  960.12 +// This header should be #included AFTER code that was preceded by a #include
  960.13 +// <boost/config/abi_prefix.hpp>.
  960.14 +
  960.15 +#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
  960.16 +# error Header boost/config/abi_prefix.hpp must only be used after boost/config/abi_prefix.hpp
  960.17 +#else
  960.18 +# undef BOOST_CONFIG_ABI_PREFIX_HPP
  960.19 +#endif
  960.20 +
  960.21 +// the suffix header occurs after all of our code:
  960.22 +#ifdef BOOST_HAS_ABI_HEADERS
  960.23 +#  include BOOST_ABI_SUFFIX
  960.24 +#endif
  960.25 +
  960.26 +
   961.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   961.2 +++ b/epoc32/include/stdapis/boost/array.hpp	Wed Mar 31 12:27:01 2010 +0100
   961.3 @@ -0,0 +1,27 @@
   961.4 +# /* **************************************************************************
   961.5 +#  *                                                                          *
   961.6 +#  *     (C) Copyright Paul Mensonides 2002.
   961.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
   961.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
   961.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
  961.10 +#  *                                                                          *
  961.11 +#  ************************************************************************** */
  961.12 +#
  961.13 +# /* See http://www.boost.org for most recent version. */
  961.14 +#
  961.15 +# ifndef BOOST_PREPROCESSOR_ARRAY_HPP
  961.16 +# define BOOST_PREPROCESSOR_ARRAY_HPP
  961.17 +#
  961.18 +# include <boost/preprocessor/array/data.hpp>
  961.19 +# include <boost/preprocessor/array/elem.hpp>
  961.20 +# include <boost/preprocessor/array/insert.hpp>
  961.21 +# include <boost/preprocessor/array/pop_back.hpp>
  961.22 +# include <boost/preprocessor/array/pop_front.hpp>
  961.23 +# include <boost/preprocessor/array/push_back.hpp>
  961.24 +# include <boost/preprocessor/array/push_front.hpp>
  961.25 +# include <boost/preprocessor/array/remove.hpp>
  961.26 +# include <boost/preprocessor/array/replace.hpp>
  961.27 +# include <boost/preprocessor/array/reverse.hpp>
  961.28 +# include <boost/preprocessor/array/size.hpp>
  961.29 +#
  961.30 +# endif
   962.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   962.2 +++ b/epoc32/include/stdapis/boost/assert.hpp	Wed Mar 31 12:27:01 2010 +0100
   962.3 @@ -0,0 +1,44 @@
   962.4 +# /* Copyright (C) 2001
   962.5 +#  * Housemarque Oy
   962.6 +#  * http://www.housemarque.com
   962.7 +#  *
   962.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
   962.9 +#  * accompanying file LICENSE_1_0.txt or copy at
  962.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
  962.11 +#  */
  962.12 +#
  962.13 +# /* Revised by Paul Mensonides (2002) */
  962.14 +#
  962.15 +# /* See http://www.boost.org for most recent version. */
  962.16 +#
  962.17 +# ifndef BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP
  962.18 +# define BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP
  962.19 +#
  962.20 +# include <boost/preprocessor/config/config.hpp>
  962.21 +# include <boost/preprocessor/control/expr_iif.hpp>
  962.22 +# include <boost/preprocessor/control/iif.hpp>
  962.23 +# include <boost/preprocessor/logical/not.hpp>
  962.24 +# include <boost/preprocessor/tuple/eat.hpp>
  962.25 +#
  962.26 +# /* BOOST_PP_ASSERT */
  962.27 +#
  962.28 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
  962.29 +#    define BOOST_PP_ASSERT BOOST_PP_ASSERT_D
  962.30 +# else
  962.31 +#    define BOOST_PP_ASSERT(cond) BOOST_PP_ASSERT_D(cond)
  962.32 +# endif
  962.33 +#
  962.34 +# define BOOST_PP_ASSERT_D(cond) BOOST_PP_IIF(BOOST_PP_NOT(cond), BOOST_PP_ASSERT_ERROR, BOOST_PP_TUPLE_EAT_1)(...)
  962.35 +# define BOOST_PP_ASSERT_ERROR(x, y, z)
  962.36 +#
  962.37 +# /* BOOST_PP_ASSERT_MSG */
  962.38 +#
  962.39 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
  962.40 +#    define BOOST_PP_ASSERT_MSG BOOST_PP_ASSERT_MSG_D
  962.41 +# else
  962.42 +#    define BOOST_PP_ASSERT_MSG(cond, msg) BOOST_PP_ASSERT_MSG_D(cond, msg)
  962.43 +# endif
  962.44 +#
  962.45 +# define BOOST_PP_ASSERT_MSG_D(cond, msg) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(cond), msg)
  962.46 +#
  962.47 +# endif
   963.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   963.2 +++ b/epoc32/include/stdapis/boost/bind.hpp	Wed Mar 31 12:27:01 2010 +0100
   963.3 @@ -0,0 +1,547 @@
   963.4 +
   963.5 +#if !defined(BOOST_PP_IS_ITERATING)
   963.6 +
   963.7 +///// header body
   963.8 +
   963.9 +#ifndef BOOST_MPL_BIND_HPP_INCLUDED
  963.10 +#define BOOST_MPL_BIND_HPP_INCLUDED
  963.11 +
  963.12 +// Copyright Peter Dimov 2001
  963.13 +// Copyright Aleksey Gurtovoy 2001-2004
  963.14 +//
  963.15 +// Distributed under the Boost Software License, Version 1.0. 
  963.16 +// (See accompanying file LICENSE_1_0.txt or copy at 
  963.17 +// http://www.boost.org/LICENSE_1_0.txt)
  963.18 +//
  963.19 +// See http://www.boost.org/libs/mpl for documentation.
  963.20 +
  963.21 +// $Source: /cvsroot/boost/boost/boost/mpl/bind.hpp,v $
  963.22 +// $Date: 2004/10/26 14:51:04 $
  963.23 +// $Revision: 1.13 $
  963.24 +
  963.25 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
  963.26 +#   include <boost/mpl/bind_fwd.hpp>
  963.27 +#   include <boost/mpl/placeholders.hpp>
  963.28 +#   include <boost/mpl/next.hpp>
  963.29 +#   include <boost/mpl/protect.hpp>
  963.30 +#   include <boost/mpl/apply_wrap.hpp>
  963.31 +#   include <boost/mpl/limits/arity.hpp>
  963.32 +#   include <boost/mpl/aux_/na.hpp>
  963.33 +#   include <boost/mpl/aux_/arity_spec.hpp>
  963.34 +#   include <boost/mpl/aux_/type_wrapper.hpp>
  963.35 +#   include <boost/mpl/aux_/yes_no.hpp>
  963.36 +#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  963.37 +#       include <boost/type_traits/is_reference.hpp>
  963.38 +#   endif 
  963.39 +#endif
  963.40 +
  963.41 +#include <boost/mpl/aux_/config/bind.hpp>
  963.42 +#include <boost/mpl/aux_/config/static_constant.hpp>
  963.43 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
  963.44 +
  963.45 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
  963.46 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
  963.47 +
  963.48 +#   if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  963.49 +#       define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
  963.50 +#   else
  963.51 +#       define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
  963.52 +#   endif
  963.53 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
  963.54 +
  963.55 +#else
  963.56 +
  963.57 +#   include <boost/mpl/aux_/preprocessor/params.hpp>
  963.58 +#   include <boost/mpl/aux_/preprocessor/default_params.hpp>
  963.59 +#   include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
  963.60 +#   include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
  963.61 +#   include <boost/mpl/aux_/preprocessor/ext_params.hpp>
  963.62 +#   include <boost/mpl/aux_/preprocessor/repeat.hpp>
  963.63 +#   include <boost/mpl/aux_/preprocessor/enum.hpp>
  963.64 +#   include <boost/mpl/aux_/preprocessor/add.hpp>
  963.65 +#   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
  963.66 +#   include <boost/mpl/aux_/config/ctps.hpp>
  963.67 +#   include <boost/mpl/aux_/config/ttp.hpp>
  963.68 +#   include <boost/mpl/aux_/config/dtp.hpp>
  963.69 +#   include <boost/mpl/aux_/nttp_decl.hpp>
  963.70 +
  963.71 +#   include <boost/preprocessor/iterate.hpp>
  963.72 +#   include <boost/preprocessor/comma_if.hpp>
  963.73 +#   include <boost/preprocessor/cat.hpp>
  963.74 +#   include <boost/preprocessor/inc.hpp>
  963.75 +
  963.76 +namespace boost { namespace mpl {
  963.77 +
  963.78 +// local macros, #undef-ined at the end of the header
  963.79 +#   define AUX778076_APPLY \
  963.80 +    BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
  963.81 +    /**/
  963.82 +
  963.83 +#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
  963.84 +#       define AUX778076_DMC_PARAM() , int dummy_
  963.85 +#   else
  963.86 +#       define AUX778076_DMC_PARAM()
  963.87 +#   endif
  963.88 +
  963.89 +#   define AUX778076_BIND_PARAMS(param) \
  963.90 +    BOOST_MPL_PP_PARAMS( \
  963.91 +          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
  963.92 +        , param \
  963.93 +        ) \
  963.94 +    /**/
  963.95 +
  963.96 +#   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
  963.97 +    BOOST_MPL_PP_DEFAULT_PARAMS( \
  963.98 +          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
  963.99 +        , param \
 963.100 +        , value \
 963.101 +        ) \
 963.102 +    /**/
 963.103 +
 963.104 +#   define AUX778076_BIND_N_PARAMS(n, param) \
 963.105 +    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
 963.106 +    /**/
 963.107 +
 963.108 +#   define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
 963.109 +    BOOST_PP_COMMA_IF(n) \
 963.110 +    BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
 963.111 +    /**/
 963.112 +
 963.113 +#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
 963.114 +#   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
 963.115 +    AUX778076_BIND_DEFAULT_PARAMS(param, value) \
 963.116 +    /**/
 963.117 +#else
 963.118 +#   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
 963.119 +    AUX778076_BIND_PARAMS(param) \
 963.120 +    /**/
 963.121 +#endif
 963.122 +
 963.123 +namespace aux {
 963.124 +
 963.125 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 963.126 +
 963.127 +template<
 963.128 +      typename T, AUX778076_BIND_PARAMS(typename U)
 963.129 +    >
 963.130 +struct resolve_bind_arg
 963.131 +{
 963.132 +    typedef T type;
 963.133 +};
 963.134 +
 963.135 +#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 963.136 +
 963.137 +template<
 963.138 +      typename T
 963.139 +    , typename Arg
 963.140 +    >
 963.141 +struct replace_unnamed_arg
 963.142 +{
 963.143 +    typedef Arg next;
 963.144 +    typedef T type;
 963.145 +};
 963.146 +
 963.147 +template<
 963.148 +      typename Arg
 963.149 +    >
 963.150 +struct replace_unnamed_arg< arg<-1>,Arg >
 963.151 +{
 963.152 +    typedef typename Arg::next next;
 963.153 +    typedef Arg type;
 963.154 +};
 963.155 +
 963.156 +#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 963.157 +
 963.158 +template<
 963.159 +      BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
 963.160 +    >
 963.161 +struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
 963.162 +{
 963.163 +    typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
 963.164 +};
 963.165 +
 963.166 +#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
 963.167 +template<
 963.168 +      typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
 963.169 +    >
 963.170 +struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(U) >
 963.171 +{
 963.172 +    typedef bind<F,AUX778076_BIND_PARAMS(T)> f_;
 963.173 +    typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
 963.174 +};
 963.175 +#endif
 963.176 +
 963.177 +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 963.178 +
 963.179 +// agurt, 15/jan/02: it's not a intended to be used as a function class, and 
 963.180 +// MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
 963.181 +// work), so I went with the 'result_' here, and in all other similar cases
 963.182 +template< bool >
 963.183 +struct resolve_arg_impl
 963.184 +{
 963.185 +    template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
 963.186 +    {
 963.187 +        typedef T type;
 963.188 +    };
 963.189 +};
 963.190 +
 963.191 +template<> 
 963.192 +struct resolve_arg_impl<true>
 963.193 +{
 963.194 +    template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
 963.195 +    {
 963.196 +        typedef typename AUX778076_APPLY<
 963.197 +              T
 963.198 +            , AUX778076_BIND_PARAMS(U)
 963.199 +            >::type type;
 963.200 +    };
 963.201 +};
 963.202 +
 963.203 +// for 'resolve_bind_arg'
 963.204 +template< typename T > struct is_bind_template;
 963.205 +
 963.206 +template< 
 963.207 +      typename T, AUX778076_BIND_PARAMS(typename U)
 963.208 +    >
 963.209 +struct resolve_bind_arg
 963.210 +    : resolve_arg_impl< is_bind_template<T>::value >
 963.211 +            ::template result_< T,AUX778076_BIND_PARAMS(U) >
 963.212 +{
 963.213 +};
 963.214 +
 963.215 +#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 963.216 +
 963.217 +template< typename T > 
 963.218 +struct replace_unnamed_arg_impl
 963.219 +{
 963.220 +    template< typename Arg > struct result_
 963.221 +    {
 963.222 +        typedef Arg next;
 963.223 +        typedef T type;
 963.224 +    };
 963.225 +};
 963.226 +
 963.227 +template<> 
 963.228 +struct replace_unnamed_arg_impl< arg<-1> >
 963.229 +{
 963.230 +    template< typename Arg > struct result_
 963.231 +    {
 963.232 +        typedef typename next<Arg>::type next;
 963.233 +        typedef Arg type;
 963.234 +    };
 963.235 +};
 963.236 +
 963.237 +template< typename T, typename Arg > 
 963.238 +struct replace_unnamed_arg
 963.239 +    : replace_unnamed_arg_impl<T>::template result_<Arg>
 963.240 +{
 963.241 +};
 963.242 +
 963.243 +#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 963.244 +
 963.245 +// agurt, 10/mar/02: the forward declaration has to appear before any of
 963.246 +// 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
 963.247 +template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
 963.248 +
 963.249 +aux::no_tag is_bind_helper(...);
 963.250 +template< typename T > aux::no_tag is_bind_helper(protect<T>*);
 963.251 +
 963.252 +// overload for "main" form
 963.253 +// agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload 
 963.254 +// in case if we use 'aux::type_wrapper< bind<...> >' here, and all 
 963.255 +// 'bind' instantiations form a complete type anyway
 963.256 +#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
 963.257 +template<
 963.258 +      typename F, AUX778076_BIND_PARAMS(typename T)
 963.259 +    >
 963.260 +aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
 963.261 +#endif
 963.262 +
 963.263 +template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
 963.264 +aux::yes_tag is_bind_helper(arg<N>*);
 963.265 +
 963.266 +template< bool is_ref_ = true >
 963.267 +struct is_bind_template_impl
 963.268 +{
 963.269 +    template< typename T > struct result_
 963.270 +    {
 963.271 +        BOOST_STATIC_CONSTANT(bool, value = false);
 963.272 +    };
 963.273 +};
 963.274 +
 963.275 +template<>
 963.276 +struct is_bind_template_impl<false>
 963.277 +{
 963.278 +    template< typename T > struct result_
 963.279 +    {
 963.280 +        BOOST_STATIC_CONSTANT(bool, value = 
 963.281 +              sizeof(aux::is_bind_helper(static_cast<T*>(0))) 
 963.282 +                == sizeof(aux::yes_tag)
 963.283 +            );
 963.284 +    };
 963.285 +};
 963.286 +
 963.287 +template< typename T > struct is_bind_template
 963.288 +    : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
 963.289 +        ::template result_<T>
 963.290 +{
 963.291 +};
 963.292 +
 963.293 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 963.294 +
 963.295 +} // namespace aux
 963.296 +
 963.297 +
 963.298 +#define BOOST_PP_ITERATION_PARAMS_1 \
 963.299 +    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind.hpp>))
 963.300 +#include BOOST_PP_ITERATE()
 963.301 +
 963.302 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 963.303 +    && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
 963.304 +/// if_/eval_if specializations
 963.305 +#   define AUX778076_SPEC_NAME if_
 963.306 +#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
 963.307 +#   include BOOST_PP_ITERATE()
 963.308 +
 963.309 +#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 963.310 +#   define AUX778076_SPEC_NAME eval_if
 963.311 +#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
 963.312 +#   include BOOST_PP_ITERATE()
 963.313 +#endif
 963.314 +#endif
 963.315 +
 963.316 +// real C++ version is already taken care of
 963.317 +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 963.318 +    && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
 963.319 +
 963.320 +namespace aux {
 963.321 +// apply_count_args
 963.322 +#define AUX778076_COUNT_ARGS_PREFIX bind
 963.323 +#define AUX778076_COUNT_ARGS_DEFAULT na
 963.324 +#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
 963.325 +#include <boost/mpl/aux_/count_args.hpp>
 963.326 +}
 963.327 +
 963.328 +// bind
 963.329 +template<
 963.330 +      typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM()
 963.331 +    >
 963.332 +struct bind
 963.333 +    : aux::bind_chooser<
 963.334 +          aux::bind_count_args<AUX778076_BIND_PARAMS(T)>::value
 963.335 +        >::template result_< F,AUX778076_BIND_PARAMS(T) >::type
 963.336 +{
 963.337 +};
 963.338 +
 963.339 +BOOST_MPL_AUX_ARITY_SPEC(
 963.340 +      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 963.341 +    , bind
 963.342 +    )
 963.343 +
 963.344 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
 963.345 +      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 963.346 +    , bind
 963.347 +    )
 963.348 +
 963.349 +
 963.350 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 963.351 +
 963.352 +#   undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
 963.353 +#   undef AUX778076_BIND_N_SPEC_PARAMS
 963.354 +#   undef AUX778076_BIND_N_PARAMS
 963.355 +#   undef AUX778076_BIND_DEFAULT_PARAMS
 963.356 +#   undef AUX778076_BIND_PARAMS
 963.357 +#   undef AUX778076_DMC_PARAM
 963.358 +#   undef AUX778076_APPLY
 963.359 +
 963.360 +}}
 963.361 +
 963.362 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 963.363 +#endif // BOOST_MPL_BIND_HPP_INCLUDED
 963.364 +
 963.365 +///// iteration, depth == 1
 963.366 +
 963.367 +#elif BOOST_PP_ITERATION_DEPTH() == 1
 963.368 +
 963.369 +#   define i_ BOOST_PP_FRAME_ITERATION(1)
 963.370 +
 963.371 +#if defined(AUX778076_SPEC_NAME)
 963.372 +
 963.373 +// lazy metafunction specialization
 963.374 +template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
 963.375 +struct BOOST_PP_CAT(quote,i_);
 963.376 +
 963.377 +template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
 963.378 +
 963.379 +template<
 963.380 +      typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
 963.381 +    >
 963.382 +struct BOOST_PP_CAT(bind,i_)< 
 963.383 +      BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
 963.384 +    AUX778076_BIND_N_PARAMS(i_,T)
 963.385 +    >
 963.386 +{
 963.387 +    template<
 963.388 +          AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
 963.389 +        >
 963.390 +    struct apply
 963.391 +    {
 963.392 +     private:
 963.393 +        typedef mpl::arg<1> n1;
 963.394 +#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
 963.395 +#       include BOOST_PP_ITERATE()
 963.396 +
 963.397 +        typedef typename AUX778076_SPEC_NAME<
 963.398 +              typename t1::type
 963.399 +            , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
 963.400 +            >::type f_;
 963.401 +
 963.402 +     public:
 963.403 +        typedef typename f_::type type;
 963.404 +    };
 963.405 +};
 963.406 +
 963.407 +#undef AUX778076_SPEC_NAME
 963.408 +
 963.409 +#else // AUX778076_SPEC_NAME
 963.410 +
 963.411 +template<
 963.412 +      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
 963.413 +    >
 963.414 +struct BOOST_PP_CAT(bind,i_)
 963.415 +{
 963.416 +    template<
 963.417 +          AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
 963.418 +        >
 963.419 +    struct apply
 963.420 +    {
 963.421 +     private:
 963.422 +#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 963.423 +
 963.424 +        typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
 963.425 +        typedef typename r0::type a0;
 963.426 +        typedef typename r0::next n1;
 963.427 +        typedef typename aux::resolve_bind_arg<a0,AUX778076_BIND_PARAMS(U)>::type f_;
 963.428 +        ///
 963.429 +#   else
 963.430 +        typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
 963.431 +
 963.432 +#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
 963.433 +
 963.434 +#   if i_ > 0
 963.435 +#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
 963.436 +#       include BOOST_PP_ITERATE()
 963.437 +#   endif
 963.438 +
 963.439 +     public:
 963.440 +
 963.441 +#   define AUX778076_ARG(unused, i_, t) \
 963.442 +    BOOST_PP_COMMA_IF(i_) \
 963.443 +    typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
 963.444 +/**/
 963.445 +
 963.446 +        typedef typename BOOST_PP_CAT(apply_wrap,i_)<
 963.447 +              f_ 
 963.448 +            BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
 963.449 +            >::type type;
 963.450 +
 963.451 +#   undef AUX778076_ARG
 963.452 +    };
 963.453 +};
 963.454 +
 963.455 +namespace aux {
 963.456 +
 963.457 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 963.458 +
 963.459 +template<
 963.460 +      typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
 963.461 +    >
 963.462 +struct resolve_bind_arg<
 963.463 +      BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
 963.464 +    >
 963.465 +{
 963.466 +    typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
 963.467 +    typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
 963.468 +};
 963.469 +
 963.470 +#else
 963.471 +
 963.472 +template<
 963.473 +      typename F AUX778076_BIND_N_PARAMS(i_, typename T)
 963.474 +    >
 963.475 +aux::yes_tag
 963.476 +is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
 963.477 +
 963.478 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 963.479 +
 963.480 +} // namespace aux
 963.481 +
 963.482 +BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
 963.483 +BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
 963.484 +
 963.485 +#   if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
 963.486 +#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 963.487 +    
 963.488 +#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
 963.489 +/// primary template (not a specialization!)
 963.490 +template<
 963.491 +      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
 963.492 +    >
 963.493 +struct bind
 963.494 +    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
 963.495 +{
 963.496 +};
 963.497 +#else
 963.498 +template<
 963.499 +      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
 963.500 +    >
 963.501 +struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
 963.502 +    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
 963.503 +{
 963.504 +};
 963.505 +#endif
 963.506 +
 963.507 +#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 963.508 +
 963.509 +namespace aux {
 963.510 +
 963.511 +template<>
 963.512 +struct bind_chooser<i_>
 963.513 +{
 963.514 +    template<
 963.515 +          typename F, AUX778076_BIND_PARAMS(typename T)
 963.516 +        >
 963.517 +    struct result_
 963.518 +    {
 963.519 +        typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
 963.520 +    };
 963.521 +};
 963.522 +
 963.523 +} // namespace aux
 963.524 +
 963.525 +#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 963.526 +#   endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
 963.527 +
 963.528 +#endif // AUX778076_SPEC_NAME
 963.529 +
 963.530 +#   undef i_
 963.531 +
 963.532 +///// iteration, depth == 2
 963.533 +
 963.534 +#elif BOOST_PP_ITERATION_DEPTH() == 2
 963.535 +
 963.536 +#   define j_ BOOST_PP_FRAME_ITERATION(2)
 963.537 +#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 963.538 +
 963.539 +        typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
 963.540 +        typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
 963.541 +        typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
 963.542 +        typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
 963.543 +        ///
 963.544 +#   else
 963.545 +        typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
 963.546 +
 963.547 +#   endif
 963.548 +#   undef j_
 963.549 +
 963.550 +#endif // BOOST_PP_IS_ITERATING
   964.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   964.2 +++ b/epoc32/include/stdapis/boost/bind/arg.hpp	Wed Mar 31 12:27:01 2010 +0100
   964.3 @@ -0,0 +1,123 @@
   964.4 +
   964.5 +// Copyright Peter Dimov 2001-2002
   964.6 +// Copyright Aleksey Gurtovoy 2001-2004
   964.7 +//
   964.8 +// Distributed under the Boost Software License, Version 1.0. 
   964.9 +// (See accompanying file LICENSE_1_0.txt or copy at 
  964.10 +// http://www.boost.org/LICENSE_1_0.txt)
  964.11 +//
  964.12 +
  964.13 +// Preprocessed version of "boost/mpl/arg.hpp" header
  964.14 +// -- DO NOT modify by hand!
  964.15 +
  964.16 +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
  964.17 +template<> struct arg< -1 >
  964.18 +{
  964.19 +    BOOST_STATIC_CONSTANT(int, value  = -1);
  964.20 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  964.21 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  964.22 +
  964.23 +    template<
  964.24 +          typename U1 = na, typename U2 = na, typename U3 = na
  964.25 +        , typename U4 = na, typename U5 = na
  964.26 +        >
  964.27 +    struct apply
  964.28 +    {
  964.29 +        typedef U1 type;
  964.30 +        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
  964.31 +    };
  964.32 +};
  964.33 +
  964.34 +template<> struct arg<1>
  964.35 +{
  964.36 +    BOOST_STATIC_CONSTANT(int, value  = 1);
  964.37 +    typedef arg<2> next;
  964.38 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  964.39 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  964.40 +
  964.41 +    template<
  964.42 +          typename U1 = na, typename U2 = na, typename U3 = na
  964.43 +        , typename U4 = na, typename U5 = na
  964.44 +        >
  964.45 +    struct apply
  964.46 +    {
  964.47 +        typedef U1 type;
  964.48 +        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
  964.49 +    };
  964.50 +};
  964.51 +
  964.52 +template<> struct arg<2>
  964.53 +{
  964.54 +    BOOST_STATIC_CONSTANT(int, value  = 2);
  964.55 +    typedef arg<3> next;
  964.56 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  964.57 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  964.58 +
  964.59 +    template<
  964.60 +          typename U1 = na, typename U2 = na, typename U3 = na
  964.61 +        , typename U4 = na, typename U5 = na
  964.62 +        >
  964.63 +    struct apply
  964.64 +    {
  964.65 +        typedef U2 type;
  964.66 +        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
  964.67 +    };
  964.68 +};
  964.69 +
  964.70 +template<> struct arg<3>
  964.71 +{
  964.72 +    BOOST_STATIC_CONSTANT(int, value  = 3);
  964.73 +    typedef arg<4> next;
  964.74 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  964.75 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  964.76 +
  964.77 +    template<
  964.78 +          typename U1 = na, typename U2 = na, typename U3 = na
  964.79 +        , typename U4 = na, typename U5 = na
  964.80 +        >
  964.81 +    struct apply
  964.82 +    {
  964.83 +        typedef U3 type;
  964.84 +        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
  964.85 +    };
  964.86 +};
  964.87 +
  964.88 +template<> struct arg<4>
  964.89 +{
  964.90 +    BOOST_STATIC_CONSTANT(int, value  = 4);
  964.91 +    typedef arg<5> next;
  964.92 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
  964.93 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
  964.94 +
  964.95 +    template<
  964.96 +          typename U1 = na, typename U2 = na, typename U3 = na
  964.97 +        , typename U4 = na, typename U5 = na
  964.98 +        >
  964.99 +    struct apply
 964.100 +    {
 964.101 +        typedef U4 type;
 964.102 +        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
 964.103 +    };
 964.104 +};
 964.105 +
 964.106 +template<> struct arg<5>
 964.107 +{
 964.108 +    BOOST_STATIC_CONSTANT(int, value  = 5);
 964.109 +    typedef arg<6> next;
 964.110 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
 964.111 +    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 964.112 +
 964.113 +    template<
 964.114 +          typename U1 = na, typename U2 = na, typename U3 = na
 964.115 +        , typename U4 = na, typename U5 = na
 964.116 +        >
 964.117 +    struct apply
 964.118 +    {
 964.119 +        typedef U5 type;
 964.120 +        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
 964.121 +    };
 964.122 +};
 964.123 +
 964.124 +BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
 964.125 +
 964.126 +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
   965.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   965.2 +++ b/epoc32/include/stdapis/boost/bind/placeholders.hpp	Wed Mar 31 12:27:01 2010 +0100
   965.3 @@ -0,0 +1,100 @@
   965.4 +
   965.5 +#if !defined(BOOST_PP_IS_ITERATING)
   965.6 +
   965.7 +///// header body
   965.8 +
   965.9 +#ifndef BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
  965.10 +#define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
  965.11 +
  965.12 +// Copyright Aleksey Gurtovoy 2001-2004
  965.13 +// Copyright Peter Dimov 2001-2003
  965.14 +//
  965.15 +// Distributed under the Boost Software License, Version 1.0. 
  965.16 +// (See accompanying file LICENSE_1_0.txt or copy at 
  965.17 +// http://www.boost.org/LICENSE_1_0.txt)
  965.18 +//
  965.19 +// See http://www.boost.org/libs/mpl for documentation.
  965.20 +
  965.21 +// $Source: /cvsroot/boost/boost/boost/mpl/placeholders.hpp,v $
  965.22 +// $Date: 2004/09/16 14:08:46 $
  965.23 +// $Revision: 1.4 $
  965.24 +
  965.25 +
  965.26 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
  965.27 +#   include <boost/mpl/arg.hpp>
  965.28 +#   include <boost/mpl/aux_/adl_barrier.hpp>
  965.29 +
  965.30 +#   if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
  965.31 +#       define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
  965.32 +        using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
  965.33 +        /**/
  965.34 +#   else
  965.35 +#       define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
  965.36 +#   endif
  965.37 +
  965.38 +#endif
  965.39 +
  965.40 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
  965.41 +
  965.42 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
  965.43 + && !defined(BOOST_MPL_PREPROCESSING_MODE)
  965.44 +
  965.45 +#   define BOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
  965.46 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
  965.47 +
  965.48 +#else
  965.49 +
  965.50 +#   include <boost/mpl/aux_/nttp_decl.hpp>
  965.51 +#   include <boost/mpl/limits/arity.hpp>
  965.52 +#   include <boost/preprocessor/iterate.hpp>
  965.53 +#   include <boost/preprocessor/cat.hpp>
  965.54 +
  965.55 +// watch out for GNU gettext users, who #define _(x)
  965.56 +#if !defined(_) || defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
  965.57 +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
  965.58 +typedef arg<-1> _;
  965.59 +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
  965.60 +
  965.61 +namespace boost { namespace mpl { 
  965.62 +
  965.63 +BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
  965.64 +
  965.65 +namespace placeholders {
  965.66 +using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
  965.67 +}
  965.68 +
  965.69 +}}
  965.70 +#endif
  965.71 +
  965.72 +/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
  965.73 +/// specialization
  965.74 +#define BOOST_PP_ITERATION_PARAMS_1 \
  965.75 +    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <boost/mpl/placeholders.hpp>))
  965.76 +#include BOOST_PP_ITERATE()
  965.77 +
  965.78 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
  965.79 +#endif // BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
  965.80 +
  965.81 +///// iteration
  965.82 +
  965.83 +#else
  965.84 +#define i_ BOOST_PP_FRAME_ITERATION(1)
  965.85 +
  965.86 +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
  965.87 +
  965.88 +typedef arg<i_> BOOST_PP_CAT(_,i_);
  965.89 +
  965.90 +BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
  965.91 +
  965.92 +namespace boost { namespace mpl { 
  965.93 +
  965.94 +BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(BOOST_PP_CAT(_,i_))
  965.95 +
  965.96 +namespace placeholders {
  965.97 +using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::BOOST_PP_CAT(_,i_);
  965.98 +}
  965.99 +
 965.100 +}}
 965.101 +
 965.102 +#undef i_
 965.103 +#endif // BOOST_PP_IS_ITERATING
   966.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   966.2 +++ b/epoc32/include/stdapis/boost/call_traits.hpp	Wed Mar 31 12:27:01 2010 +0100
   966.3 @@ -0,0 +1,164 @@
   966.4 +//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
   966.5 +//  Use, modification and distribution are subject to the Boost Software License,
   966.6 +//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
   966.7 +//  http://www.boost.org/LICENSE_1_0.txt).
   966.8 +//
   966.9 +//  See http://www.boost.org/libs/utility for most recent version including documentation.
  966.10 +
  966.11 +// call_traits: defines typedefs for function usage
  966.12 +// (see libs/utility/call_traits.htm)
  966.13 +
  966.14 +/* Release notes:
  966.15 +   23rd July 2000:
  966.16 +      Fixed array specialization. (JM)
  966.17 +      Added Borland specific fixes for reference types
  966.18 +      (issue raised by Steve Cleary).
  966.19 +*/
  966.20 +
  966.21 +#ifndef BOOST_DETAIL_CALL_TRAITS_HPP
  966.22 +#define BOOST_DETAIL_CALL_TRAITS_HPP
  966.23 +
  966.24 +#ifndef BOOST_CONFIG_HPP
  966.25 +#include <boost/config.hpp>
  966.26 +#endif
  966.27 +#include <cstddef>
  966.28 +
  966.29 +#include <boost/type_traits/is_arithmetic.hpp>
  966.30 +#include <boost/type_traits/is_pointer.hpp>
  966.31 +#include <boost/detail/workaround.hpp>
  966.32 +
  966.33 +namespace boost{
  966.34 +
  966.35 +namespace detail{
  966.36 +
  966.37 +template <typename T, bool small_>
  966.38 +struct ct_imp2
  966.39 +{
  966.40 +   typedef const T& param_type;
  966.41 +};
  966.42 +
  966.43 +template <typename T>
  966.44 +struct ct_imp2<T, true>
  966.45 +{
  966.46 +   typedef const T param_type;
  966.47 +};
  966.48 +
  966.49 +template <typename T, bool isp, bool b1>
  966.50 +struct ct_imp
  966.51 +{
  966.52 +   typedef const T& param_type;
  966.53 +};
  966.54 +
  966.55 +template <typename T, bool isp>
  966.56 +struct ct_imp<T, isp, true>
  966.57 +{
  966.58 +   typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
  966.59 +};
  966.60 +
  966.61 +template <typename T, bool b1>
  966.62 +struct ct_imp<T, true, b1>
  966.63 +{
  966.64 +   typedef const T param_type;
  966.65 +};
  966.66 +
  966.67 +}
  966.68 +
  966.69 +template <typename T>
  966.70 +struct call_traits
  966.71 +{
  966.72 +public:
  966.73 +   typedef T value_type;
  966.74 +   typedef T& reference;
  966.75 +   typedef const T& const_reference;
  966.76 +   //
  966.77 +   // C++ Builder workaround: we should be able to define a compile time
  966.78 +   // constant and pass that as a single template parameter to ct_imp<T,bool>,
  966.79 +   // however compiler bugs prevent this - instead pass three bool's to
  966.80 +   // ct_imp<T,bool,bool,bool> and add an extra partial specialisation
  966.81 +   // of ct_imp to handle the logic. (JM)
  966.82 +   typedef typename boost::detail::ct_imp<
  966.83 +      T,
  966.84 +      ::boost::is_pointer<T>::value,
  966.85 +      ::boost::is_arithmetic<T>::value
  966.86 +   >::param_type param_type;
  966.87 +};
  966.88 +
  966.89 +template <typename T>
  966.90 +struct call_traits<T&>
  966.91 +{
  966.92 +   typedef T& value_type;
  966.93 +   typedef T& reference;
  966.94 +   typedef const T& const_reference;
  966.95 +   typedef T& param_type;  // hh removed const
  966.96 +};
  966.97 +
  966.98 +#if BOOST_WORKAROUND( __BORLANDC__,  BOOST_TESTED_AT( 0x581 ) )
  966.99 +// these are illegal specialisations; cv-qualifies applied to
 966.100 +// references have no effect according to [8.3.2p1],
 966.101 +// C++ Builder requires them though as it treats cv-qualified
 966.102 +// references as distinct types...
 966.103 +template <typename T>
 966.104 +struct call_traits<T&const>
 966.105 +{
 966.106 +   typedef T& value_type;
 966.107 +   typedef T& reference;
 966.108 +   typedef const T& const_reference;
 966.109 +   typedef T& param_type;  // hh removed const
 966.110 +};
 966.111 +template <typename T>
 966.112 +struct call_traits<T&volatile>
 966.113 +{
 966.114 +   typedef T& value_type;
 966.115 +   typedef T& reference;
 966.116 +   typedef const T& const_reference;
 966.117 +   typedef T& param_type;  // hh removed const
 966.118 +};
 966.119 +template <typename T>
 966.120 +struct call_traits<T&const volatile>
 966.121 +{
 966.122 +   typedef T& value_type;
 966.123 +   typedef T& reference;
 966.124 +   typedef const T& const_reference;
 966.125 +   typedef T& param_type;  // hh removed const
 966.126 +};
 966.127 +
 966.128 +template <typename T>
 966.129 +struct call_traits< T * >
 966.130 +{
 966.131 +   typedef T * value_type;
 966.132 +   typedef T * & reference;
 966.133 +   typedef T * const & const_reference;
 966.134 +   typedef T * const param_type;  // hh removed const
 966.135 +};
 966.136 +#endif
 966.137 +#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
 966.138 +template <typename T, std::size_t N>
 966.139 +struct call_traits<T [N]>
 966.140 +{
 966.141 +private:
 966.142 +   typedef T array_type[N];
 966.143 +public:
 966.144 +   // degrades array to pointer:
 966.145 +   typedef const T* value_type;
 966.146 +   typedef array_type& reference;
 966.147 +   typedef const array_type& const_reference;
 966.148 +   typedef const T* const param_type;
 966.149 +};
 966.150 +
 966.151 +template <typename T, std::size_t N>
 966.152 +struct call_traits<const T [N]>
 966.153 +{
 966.154 +private:
 966.155 +   typedef const T array_type[N];
 966.156 +public:
 966.157 +   // degrades array to pointer:
 966.158 +   typedef const T* value_type;
 966.159 +   typedef array_type& reference;
 966.160 +   typedef const array_type& const_reference;
 966.161 +   typedef const T* const param_type;
 966.162 +};
 966.163 +#endif
 966.164 +
 966.165 +}
 966.166 +
 966.167 +#endif // BOOST_DETAIL_CALL_TRAITS_HPP
   967.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   967.2 +++ b/epoc32/include/stdapis/boost/cast.hpp	Wed Mar 31 12:27:01 2010 +0100
   967.3 @@ -0,0 +1,51 @@
   967.4 +//  © Copyright Fernando Luis Cacciola Carballal 2000-2004
   967.5 +//  Use, modification, and distribution is subject to the Boost Software
   967.6 +//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
   967.7 +//  http://www.boost.org/LICENSE_1_0.txt)
   967.8 +
   967.9 +//  See library home page at http://www.boost.org/libs/numeric/conversion
  967.10 +//
  967.11 +// Contact the author at: fernando_cacciola@hotmail.com
  967.12 +//
  967.13 +//
  967.14 +//  Revision History
  967.15 +//
  967.16 +//    19 Nov 2001 Syntatic changes as suggested by Darin Adler (Fernando Cacciola)
  967.17 +//    08 Nov 2001 Fixes to accommodate MSVC (Fernando Cacciola)
  967.18 +//    04 Nov 2001 Fixes to accommodate gcc2.92 (Fernando Cacciola)
  967.19 +//    30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)
  967.20 +//    25 Oct 2001 Initial boostification (Fernando Cacciola)
  967.21 +//    23 Jan 2004 Inital add to cvs (post review)s
  967.22 +//
  967.23 +#ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
  967.24 +#define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
  967.25 +
  967.26 +#include <boost/detail/workaround.hpp>
  967.27 +
  967.28 +#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
  967.29 +
  967.30 +#  include<boost/numeric/conversion/detail/old_numeric_cast.hpp>
  967.31 +
  967.32 +#else
  967.33 +
  967.34 +#include <boost/type.hpp>
  967.35 +#include <boost/numeric/conversion/converter.hpp>
  967.36 +
  967.37 +namespace boost
  967.38 +{
  967.39 +  template<typename Target, typename Source>
  967.40 +  inline
  967.41 +  Target numeric_cast ( Source arg )
  967.42 +  {
  967.43 +    typedef boost::numeric::converter<Target,Source> Converter ;
  967.44 +    return Converter::convert(arg);
  967.45 +  }
  967.46 +
  967.47 +  using numeric::bad_numeric_cast;
  967.48 +
  967.49 +} // namespace boost
  967.50 +
  967.51 +#endif
  967.52 +
  967.53 +
  967.54 +#endif
   968.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   968.2 +++ b/epoc32/include/stdapis/boost/compressed_pair.hpp	Wed Mar 31 12:27:01 2010 +0100
   968.3 @@ -0,0 +1,443 @@
   968.4 +//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
   968.5 +//  Use, modification and distribution are subject to the Boost Software License,
   968.6 +//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
   968.7 +//  http://www.boost.org/LICENSE_1_0.txt).
   968.8 +//
   968.9 +//  See http://www.boost.org/libs/utility for most recent version including documentation.
  968.10 +
  968.11 +// compressed_pair: pair that "compresses" empty members
  968.12 +// (see libs/utility/compressed_pair.htm)
  968.13 +//
  968.14 +// JM changes 25 Jan 2004:
  968.15 +// For the case where T1 == T2 and both are empty, then first() and second()
  968.16 +// should return different objects.
  968.17 +// JM changes 25 Jan 2000:
  968.18 +// Removed default arguments from compressed_pair_switch to get
  968.19 +// C++ Builder 4 to accept them
  968.20 +// rewriten swap to get gcc and C++ builder to compile.
  968.21 +// added partial specialisations for case T1 == T2 to avoid duplicate constructor defs.
  968.22 +
  968.23 +#ifndef BOOST_DETAIL_COMPRESSED_PAIR_HPP
  968.24 +#define BOOST_DETAIL_COMPRESSED_PAIR_HPP
  968.25 +
  968.26 +#include <algorithm>
  968.27 +
  968.28 +#include <boost/type_traits/remove_cv.hpp>
  968.29 +#include <boost/type_traits/is_empty.hpp>
  968.30 +#include <boost/type_traits/is_same.hpp>
  968.31 +#include <boost/call_traits.hpp>
  968.32 +
  968.33 +#ifdef BOOST_MSVC
  968.34 +# pragma warning(push)
  968.35 +# pragma warning(disable:4512)
  968.36 +#endif 
  968.37 +namespace boost
  968.38 +{
  968.39 +
  968.40 +template <class T1, class T2>
  968.41 +class compressed_pair;
  968.42 +
  968.43 +
  968.44 +// compressed_pair
  968.45 +
  968.46 +namespace details
  968.47 +{
  968.48 +   // JM altered 26 Jan 2000:
  968.49 +   template <class T1, class T2, bool IsSame, bool FirstEmpty, bool SecondEmpty>
  968.50 +   struct compressed_pair_switch;
  968.51 +
  968.52 +   template <class T1, class T2>
  968.53 +   struct compressed_pair_switch<T1, T2, false, false, false>
  968.54 +      {static const int value = 0;};
  968.55 +
  968.56 +   template <class T1, class T2>
  968.57 +   struct compressed_pair_switch<T1, T2, false, true, true>
  968.58 +      {static const int value = 3;};
  968.59 +
  968.60 +   template <class T1, class T2>
  968.61 +   struct compressed_pair_switch<T1, T2, false, true, false>
  968.62 +      {static const int value = 1;};
  968.63 +
  968.64 +   template <class T1, class T2>
  968.65 +   struct compressed_pair_switch<T1, T2, false, false, true>
  968.66 +      {static const int value = 2;};
  968.67 +
  968.68 +   template <class T1, class T2>
  968.69 +   struct compressed_pair_switch<T1, T2, true, true, true>
  968.70 +      {static const int value = 4;};
  968.71 +
  968.72 +   template <class T1, class T2>
  968.73 +   struct compressed_pair_switch<T1, T2, true, false, false>
  968.74 +      {static const int value = 5;};
  968.75 +
  968.76 +   template <class T1, class T2, int Version> class compressed_pair_imp;
  968.77 +
  968.78 +#ifdef __GNUC__
  968.79 +   // workaround for GCC (JM):
  968.80 +   using std::swap;
  968.81 +#endif
  968.82 +   //
  968.83 +   // can't call unqualified swap from within classname::swap
  968.84 +   // as Koenig lookup rules will find only the classname::swap
  968.85 +   // member function not the global declaration, so use cp_swap
  968.86 +   // as a forwarding function (JM):
  968.87 +   template <typename T>
  968.88 +   inline void cp_swap(T& t1, T& t2)
  968.89 +   {
  968.90 +#ifndef __GNUC__
  968.91 +      using std::swap;
  968.92 +#endif
  968.93 +      swap(t1, t2);
  968.94 +   }
  968.95 +
  968.96 +   // 0    derive from neither
  968.97 +
  968.98 +   template <class T1, class T2>
  968.99 +   class compressed_pair_imp<T1, T2, 0>
 968.100 +   {
 968.101 +   public:
 968.102 +      typedef T1                                                 first_type;
 968.103 +      typedef T2                                                 second_type;
 968.104 +      typedef typename call_traits<first_type>::param_type       first_param_type;
 968.105 +      typedef typename call_traits<second_type>::param_type      second_param_type;
 968.106 +      typedef typename call_traits<first_type>::reference        first_reference;
 968.107 +      typedef typename call_traits<second_type>::reference       second_reference;
 968.108 +      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.109 +      typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.110 +
 968.111 +      compressed_pair_imp() {} 
 968.112 +
 968.113 +      compressed_pair_imp(first_param_type x, second_param_type y)
 968.114 +         : first_(x), second_(y) {}
 968.115 +
 968.116 +      compressed_pair_imp(first_param_type x)
 968.117 +         : first_(x) {}
 968.118 +
 968.119 +      compressed_pair_imp(second_param_type y)
 968.120 +         : second_(y) {}
 968.121 +
 968.122 +      first_reference       first()       {return first_;}
 968.123 +      first_const_reference first() const {return first_;}
 968.124 +
 968.125 +      second_reference       second()       {return second_;}
 968.126 +      second_const_reference second() const {return second_;}
 968.127 +
 968.128 +      void swap(::boost::compressed_pair<T1, T2>& y)
 968.129 +      {
 968.130 +         cp_swap(first_, y.first());
 968.131 +         cp_swap(second_, y.second());
 968.132 +      }
 968.133 +   private:
 968.134 +      first_type first_;
 968.135 +      second_type second_;
 968.136 +   };
 968.137 +
 968.138 +   // 1    derive from T1
 968.139 +
 968.140 +   template <class T1, class T2>
 968.141 +   class compressed_pair_imp<T1, T2, 1>
 968.142 +      : protected ::boost::remove_cv<T1>::type
 968.143 +   {
 968.144 +   public:
 968.145 +      typedef T1                                                 first_type;
 968.146 +      typedef T2                                                 second_type;
 968.147 +      typedef typename call_traits<first_type>::param_type       first_param_type;
 968.148 +      typedef typename call_traits<second_type>::param_type      second_param_type;
 968.149 +      typedef typename call_traits<first_type>::reference        first_reference;
 968.150 +      typedef typename call_traits<second_type>::reference       second_reference;
 968.151 +      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.152 +      typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.153 +
 968.154 +      compressed_pair_imp() {}
 968.155 +
 968.156 +      compressed_pair_imp(first_param_type x, second_param_type y)
 968.157 +         : first_type(x), second_(y) {}
 968.158 +
 968.159 +      compressed_pair_imp(first_param_type x)
 968.160 +         : first_type(x) {}
 968.161 +
 968.162 +      compressed_pair_imp(second_param_type y)
 968.163 +         : second_(y) {}
 968.164 +
 968.165 +      first_reference       first()       {return *this;}
 968.166 +      first_const_reference first() const {return *this;}
 968.167 +
 968.168 +      second_reference       second()       {return second_;}
 968.169 +      second_const_reference second() const {return second_;}
 968.170 +
 968.171 +      void swap(::boost::compressed_pair<T1,T2>& y)
 968.172 +      {
 968.173 +         // no need to swap empty base class:
 968.174 +         cp_swap(second_, y.second());
 968.175 +      }
 968.176 +   private:
 968.177 +      second_type second_;
 968.178 +   };
 968.179 +
 968.180 +   // 2    derive from T2
 968.181 +
 968.182 +   template <class T1, class T2>
 968.183 +   class compressed_pair_imp<T1, T2, 2>
 968.184 +      : protected ::boost::remove_cv<T2>::type
 968.185 +   {
 968.186 +   public:
 968.187 +      typedef T1                                                 first_type;
 968.188 +      typedef T2                                                 second_type;
 968.189 +      typedef typename call_traits<first_type>::param_type       first_param_type;
 968.190 +      typedef typename call_traits<second_type>::param_type      second_param_type;
 968.191 +      typedef typename call_traits<first_type>::reference        first_reference;
 968.192 +      typedef typename call_traits<second_type>::reference       second_reference;
 968.193 +      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.194 +      typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.195 +
 968.196 +      compressed_pair_imp() {}
 968.197 +
 968.198 +      compressed_pair_imp(first_param_type x, second_param_type y)
 968.199 +         : second_type(y), first_(x) {}
 968.200 +
 968.201 +      compressed_pair_imp(first_param_type x)
 968.202 +         : first_(x) {}
 968.203 +
 968.204 +      compressed_pair_imp(second_param_type y)
 968.205 +         : second_type(y) {}
 968.206 +
 968.207 +      first_reference       first()       {return first_;}
 968.208 +      first_const_reference first() const {return first_;}
 968.209 +
 968.210 +      second_reference       second()       {return *this;}
 968.211 +      second_const_reference second() const {return *this;}
 968.212 +
 968.213 +      void swap(::boost::compressed_pair<T1,T2>& y)
 968.214 +      {
 968.215 +         // no need to swap empty base class:
 968.216 +         cp_swap(first_, y.first());
 968.217 +      }
 968.218 +
 968.219 +   private:
 968.220 +      first_type first_;
 968.221 +   };
 968.222 +
 968.223 +   // 3    derive from T1 and T2
 968.224 +
 968.225 +   template <class T1, class T2>
 968.226 +   class compressed_pair_imp<T1, T2, 3>
 968.227 +      : protected ::boost::remove_cv<T1>::type,
 968.228 +        protected ::boost::remove_cv<T2>::type
 968.229 +   {
 968.230 +   public:
 968.231 +      typedef T1                                                 first_type;
 968.232 +      typedef T2                                                 second_type;
 968.233 +      typedef typename call_traits<first_type>::param_type       first_param_type;
 968.234 +      typedef typename call_traits<second_type>::param_type      second_param_type;
 968.235 +      typedef typename call_traits<first_type>::reference        first_reference;
 968.236 +      typedef typename call_traits<second_type>::reference       second_reference;
 968.237 +      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.238 +      typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.239 +
 968.240 +      compressed_pair_imp() {}
 968.241 +
 968.242 +      compressed_pair_imp(first_param_type x, second_param_type y)
 968.243 +         : first_type(x), second_type(y) {}
 968.244 +
 968.245 +      compressed_pair_imp(first_param_type x)
 968.246 +         : first_type(x) {}
 968.247 +
 968.248 +      compressed_pair_imp(second_param_type y)
 968.249 +         : second_type(y) {}
 968.250 +
 968.251 +      first_reference       first()       {return *this;}
 968.252 +      first_const_reference first() const {return *this;}
 968.253 +
 968.254 +      second_reference       second()       {return *this;}
 968.255 +      second_const_reference second() const {return *this;}
 968.256 +      //
 968.257 +      // no need to swap empty bases:
 968.258 +      void swap(::boost::compressed_pair<T1,T2>&) {}
 968.259 +   };
 968.260 +
 968.261 +   // JM
 968.262 +   // 4    T1 == T2, T1 and T2 both empty
 968.263 +   //      Originally this did not store an instance of T2 at all
 968.264 +   //      but that led to problems beause it meant &x.first() == &x.second()
 968.265 +   //      which is not true for any other kind of pair, so now we store an instance
 968.266 +   //      of T2 just in case the user is relying on first() and second() returning
 968.267 +   //      different objects (albeit both empty).
 968.268 +   template <class T1, class T2>
 968.269 +   class compressed_pair_imp<T1, T2, 4>
 968.270 +      : protected ::boost::remove_cv<T1>::type
 968.271 +   {
 968.272 +   public:
 968.273 +      typedef T1                                                 first_type;
 968.274 +      typedef T2                                                 second_type;
 968.275 +      typedef typename call_traits<first_type>::param_type       first_param_type;
 968.276 +      typedef typename call_traits<second_type>::param_type      second_param_type;
 968.277 +      typedef typename call_traits<first_type>::reference        first_reference;
 968.278 +      typedef typename call_traits<second_type>::reference       second_reference;
 968.279 +      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.280 +      typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.281 +
 968.282 +      compressed_pair_imp() {}
 968.283 +
 968.284 +      compressed_pair_imp(first_param_type x, second_param_type y)
 968.285 +         : first_type(x), m_second(y) {}
 968.286 +
 968.287 +      compressed_pair_imp(first_param_type x)
 968.288 +         : first_type(x), m_second(x) {}
 968.289 +
 968.290 +      first_reference       first()       {return *this;}
 968.291 +      first_const_reference first() const {return *this;}
 968.292 +
 968.293 +      second_reference       second()       {return m_second;}
 968.294 +      second_const_reference second() const {return m_second;}
 968.295 +
 968.296 +      void swap(::boost::compressed_pair<T1,T2>&) {}
 968.297 +   private:
 968.298 +      T2 m_second;
 968.299 +   };
 968.300 +
 968.301 +   // 5    T1 == T2 and are not empty:   //JM
 968.302 +
 968.303 +   template <class T1, class T2>
 968.304 +   class compressed_pair_imp<T1, T2, 5>
 968.305 +   {
 968.306 +   public:
 968.307 +      typedef T1                                                 first_type;
 968.308 +      typedef T2                                                 second_type;
 968.309 +      typedef typename call_traits<first_type>::param_type       first_param_type;
 968.310 +      typedef typename call_traits<second_type>::param_type      second_param_type;
 968.311 +      typedef typename call_traits<first_type>::reference        first_reference;
 968.312 +      typedef typename call_traits<second_type>::reference       second_reference;
 968.313 +      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.314 +      typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.315 +
 968.316 +      compressed_pair_imp() {}
 968.317 +
 968.318 +      compressed_pair_imp(first_param_type x, second_param_type y)
 968.319 +         : first_(x), second_(y) {}
 968.320 +
 968.321 +      compressed_pair_imp(first_param_type x)
 968.322 +         : first_(x), second_(x) {}
 968.323 +
 968.324 +      first_reference       first()       {return first_;}
 968.325 +      first_const_reference first() const {return first_;}
 968.326 +
 968.327 +      second_reference       second()       {return second_;}
 968.328 +      second_const_reference second() const {return second_;}
 968.329 +
 968.330 +      void swap(::boost::compressed_pair<T1, T2>& y)
 968.331 +      {
 968.332 +         cp_swap(first_, y.first());
 968.333 +         cp_swap(second_, y.second());
 968.334 +      }
 968.335 +   private:
 968.336 +      first_type first_;
 968.337 +      second_type second_;
 968.338 +   };
 968.339 +
 968.340 +}  // details
 968.341 +
 968.342 +template <class T1, class T2>
 968.343 +class compressed_pair
 968.344 +   : private ::boost::details::compressed_pair_imp<T1, T2,
 968.345 +             ::boost::details::compressed_pair_switch<
 968.346 +                    T1,
 968.347 +                    T2,
 968.348 +                    ::boost::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value,
 968.349 +                    ::boost::is_empty<T1>::value,
 968.350 +                    ::boost::is_empty<T2>::value>::value>
 968.351 +{
 968.352 +private:
 968.353 +   typedef details::compressed_pair_imp<T1, T2,
 968.354 +             ::boost::details::compressed_pair_switch<
 968.355 +                    T1,
 968.356 +                    T2,
 968.357 +                    ::boost::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value,
 968.358 +                    ::boost::is_empty<T1>::value,
 968.359 +                    ::boost::is_empty<T2>::value>::value> base;
 968.360 +public:
 968.361 +   typedef T1                                                 first_type;
 968.362 +   typedef T2                                                 second_type;
 968.363 +   typedef typename call_traits<first_type>::param_type       first_param_type;
 968.364 +   typedef typename call_traits<second_type>::param_type      second_param_type;
 968.365 +   typedef typename call_traits<first_type>::reference        first_reference;
 968.366 +   typedef typename call_traits<second_type>::reference       second_reference;
 968.367 +   typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.368 +   typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.369 +
 968.370 +            compressed_pair() : base() {}
 968.371 +            compressed_pair(first_param_type x, second_param_type y) : base(x, y) {}
 968.372 +   explicit compressed_pair(first_param_type x) : base(x) {}
 968.373 +   explicit compressed_pair(second_param_type y) : base(y) {}
 968.374 +
 968.375 +   first_reference       first()       {return base::first();}
 968.376 +   first_const_reference first() const {return base::first();}
 968.377 +
 968.378 +   second_reference       second()       {return base::second();}
 968.379 +   second_const_reference second() const {return base::second();}
 968.380 +
 968.381 +   void swap(compressed_pair& y) { base::swap(y); }
 968.382 +};
 968.383 +
 968.384 +// JM
 968.385 +// Partial specialisation for case where T1 == T2:
 968.386 +//
 968.387 +template <class T>
 968.388 +class compressed_pair<T, T>
 968.389 +   : private details::compressed_pair_imp<T, T,
 968.390 +             ::boost::details::compressed_pair_switch<
 968.391 +                    T,
 968.392 +                    T,
 968.393 +                    ::boost::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value,
 968.394 +                    ::boost::is_empty<T>::value,
 968.395 +                    ::boost::is_empty<T>::value>::value>
 968.396 +{
 968.397 +private:
 968.398 +   typedef details::compressed_pair_imp<T, T,
 968.399 +             ::boost::details::compressed_pair_switch<
 968.400 +                    T,
 968.401 +                    T,
 968.402 +                    ::boost::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value,
 968.403 +                    ::boost::is_empty<T>::value,
 968.404 +                    ::boost::is_empty<T>::value>::value> base;
 968.405 +public:
 968.406 +   typedef T                                                  first_type;
 968.407 +   typedef T                                                  second_type;
 968.408 +   typedef typename call_traits<first_type>::param_type       first_param_type;
 968.409 +   typedef typename call_traits<second_type>::param_type      second_param_type;
 968.410 +   typedef typename call_traits<first_type>::reference        first_reference;
 968.411 +   typedef typename call_traits<second_type>::reference       second_reference;
 968.412 +   typedef typename call_traits<first_type>::const_reference  first_const_reference;
 968.413 +   typedef typename call_traits<second_type>::const_reference second_const_reference;
 968.414 +
 968.415 +            compressed_pair() : base() {}
 968.416 +            compressed_pair(first_param_type x, second_param_type y) : base(x, y) {}
 968.417 +#if !(defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530))
 968.418 +   explicit 
 968.419 +#endif
 968.420 +      compressed_pair(first_param_type x) : base(x) {}
 968.421 +
 968.422 +   first_reference       first()       {return base::first();}
 968.423 +   first_const_reference first() const {return base::first();}
 968.424 +
 968.425 +   second_reference       second()       {return base::second();}
 968.426 +   second_const_reference second() const {return base::second();}
 968.427 +
 968.428 +   void swap(::boost::compressed_pair<T,T>& y) { base::swap(y); }
 968.429 +};
 968.430 +
 968.431 +template <class T1, class T2>
 968.432 +inline
 968.433 +void
 968.434 +swap(compressed_pair<T1, T2>& x, compressed_pair<T1, T2>& y)
 968.435 +{
 968.436 +   x.swap(y);
 968.437 +}
 968.438 +
 968.439 +} // boost
 968.440 +
 968.441 +#ifdef BOOST_MSVC
 968.442 +# pragma warning(pop)
 968.443 +#endif 
 968.444 +
 968.445 +#endif // BOOST_DETAIL_COMPRESSED_PAIR_HPP
 968.446 +
   969.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   969.2 +++ b/epoc32/include/stdapis/boost/config.hpp	Wed Mar 31 12:27:01 2010 +0100
   969.3 @@ -0,0 +1,38 @@
   969.4 +//-----------------------------------------------------------------------------
   969.5 +// boost variant/detail/config.hpp header file
   969.6 +// See http://www.boost.org for updates, documentation, and revision history.
   969.7 +//-----------------------------------------------------------------------------
   969.8 +//
   969.9 +// Copyright (c) 2003
  969.10 +// Eric Friedman
  969.11 +//
  969.12 +// Distributed under the Boost Software License, Version 1.0. (See
  969.13 +// accompanying file LICENSE_1_0.txt or copy at
  969.14 +// http://www.boost.org/LICENSE_1_0.txt)
  969.15 +
  969.16 +#ifndef BOOST_VARIANT_DETAIL_CONFIG_HPP
  969.17 +#define BOOST_VARIANT_DETAIL_CONFIG_HPP
  969.18 +
  969.19 +#include "boost/config.hpp"
  969.20 +#include "boost/detail/workaround.hpp"
  969.21 +
  969.22 +///////////////////////////////////////////////////////////////////////////////
  969.23 +// macro BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING
  969.24 +//
  969.25 +#if BOOST_WORKAROUND(__MWERKS__, <= 0x3201) \
  969.26 + || BOOST_WORKAROUND(BOOST_INTEL, <= 700) \
  969.27 + || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
  969.28 + && !defined(BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING)
  969.29 +#   define BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING
  969.30 +#endif
  969.31 +
  969.32 +///////////////////////////////////////////////////////////////////////////////
  969.33 +// macro BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND
  969.34 +//
  969.35 +#if !defined(BOOST_NO_SFINAE) \
  969.36 + && !BOOST_WORKAROUND(BOOST_INTEL, <= 700) \
  969.37 + && !defined(BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND)
  969.38 +#   define BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND
  969.39 +#endif
  969.40 +
  969.41 +#endif // BOOST_VARIANT_DETAIL_CONFIG_HPP
   970.1 --- a/epoc32/include/stdapis/boost/config/abi_prefix.hpp	Tue Mar 16 16:12:26 2010 +0000
   970.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   970.3 @@ -1,20 +0,0 @@
   970.4 -//  abi_prefix header  -------------------------------------------------------//
   970.5 -
   970.6 -// © Copyright John Maddock 2003
   970.7 -   
   970.8 -// Use, modification and distribution are subject to the Boost Software License,
   970.9 -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  970.10 -// http://www.boost.org/LICENSE_1_0.txt).
  970.11 -
  970.12 -#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
  970.13 -# define BOOST_CONFIG_ABI_PREFIX_HPP
  970.14 -#else
  970.15 -# error double inclusion of header boost/config/abi_prefix.hpp is an error
  970.16 -#endif
  970.17 -
  970.18 -#include <boost/config.hpp>
  970.19 -
  970.20 -// this must occur after all other includes and before any code appears:
  970.21 -#ifdef BOOST_HAS_ABI_HEADERS
  970.22 -#  include BOOST_ABI_PREFIX
  970.23 -#endif
   971.1 --- a/epoc32/include/stdapis/boost/config/abi_suffix.hpp	Tue Mar 16 16:12:26 2010 +0000
   971.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   971.3 @@ -1,23 +0,0 @@
   971.4 -//  abi_sufffix header  -------------------------------------------------------//
   971.5 -
   971.6 -// © Copyright John Maddock 2003
   971.7 -   
   971.8 -// Use, modification and distribution are subject to the Boost Software License,
   971.9 -// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  971.10 -// http://www.boost.org/LICENSE_1_0.txt).
  971.11 -
  971.12 -// This header should be #included AFTER code that was preceded by a #include
  971.13 -// <boost/config/abi_prefix.hpp>.
  971.14 -
  971.15 -#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
  971.16 -# error Header boost/config/abi_prefix.hpp must only be used after boost/config/abi_prefix.hpp
  971.17 -#else
  971.18 -# undef BOOST_CONFIG_ABI_PREFIX_HPP
  971.19 -#endif
  971.20 -
  971.21 -// the suffix header occurs after all of our code:
  971.22 -#ifdef BOOST_HAS_ABI_HEADERS
  971.23 -#  include BOOST_ABI_SUFFIX
  971.24 -#endif
  971.25 -
  971.26 -
   972.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   972.2 +++ b/epoc32/include/stdapis/boost/config/no_tr1/complex.hpp	Wed Mar 31 12:27:01 2010 +0100
   972.3 @@ -0,0 +1,32 @@
   972.4 +//  (C) Copyright John Maddock 2005.
   972.5 +//  Use, modification and distribution are subject to the
   972.6 +//  Boost Software License, Version 1.0. (See accompanying file
   972.7 +//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
   972.8 +
   972.9 +#ifndef BOOST_MATH_COMPLEX_INCLUDED
  972.10 +#define BOOST_MATH_COMPLEX_INCLUDED
  972.11 +
  972.12 +#ifndef BOOST_MATH_COMPLEX_ASIN_INCLUDED
  972.13 +#  include <boost/math/complex/asin.hpp>
  972.14 +#endif
  972.15 +#ifndef BOOST_MATH_COMPLEX_ASINH_INCLUDED
  972.16 +#  include <boost/math/complex/asinh.hpp>
  972.17 +#endif
  972.18 +#ifndef BOOST_MATH_COMPLEX_ACOS_INCLUDED
  972.19 +#  include <boost/math/complex/acos.hpp>
  972.20 +#endif
  972.21 +#ifndef BOOST_MATH_COMPLEX_ACOSH_INCLUDED
  972.22 +#  include <boost/math/complex/acosh.hpp>
  972.23 +#endif
  972.24 +#ifndef BOOST_MATH_COMPLEX_ATAN_INCLUDED
  972.25 +#  include <boost/math/complex/atan.hpp>
  972.26 +#endif
  972.27 +#ifndef BOOST_MATH_COMPLEX_ATANH_INCLUDED
  972.28 +#  include <boost/math/complex/atanh.hpp>
  972.29 +#endif
  972.30 +#ifndef BOOST_MATH_COMPLEX_FABS_INCLUDED
  972.31 +#  include <boost/math/complex/fabs.hpp>
  972.32 +#endif
  972.33 +
  972.34 +
  972.35 +#endif // BOOST_MATH_COMPLEX_INCLUDED
   973.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   973.2 +++ b/epoc32/include/stdapis/boost/config/no_tr1/utility.hpp	Wed Mar 31 12:27:01 2010 +0100
   973.3 @@ -0,0 +1,19 @@
   973.4 +//  Boost utility.hpp header file  -------------------------------------------//
   973.5 +
   973.6 +//  Copyright 1999-2003 Aleksey Gurtovoy.  Use, modification, and distribution are
   973.7 +//  subject to the Boost Software License, Version 1.0.  (See accompanying file
   973.8 +//  LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
   973.9 +
  973.10 +//  See <http://www.boost.org/libs/utility/> for the library's home page.
  973.11 +
  973.12 +#ifndef BOOST_UTILITY_HPP
  973.13 +#define BOOST_UTILITY_HPP
  973.14 +
  973.15 +#include <boost/utility/addressof.hpp>
  973.16 +#include <boost/utility/base_from_member.hpp>  
  973.17 +#include <boost/utility/enable_if.hpp>
  973.18 +#include <boost/checked_delete.hpp>
  973.19 +#include <boost/next_prior.hpp>
  973.20 +#include <boost/noncopyable.hpp>
  973.21 +
  973.22 +#endif  // BOOST_UTILITY_HPP
   974.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   974.2 +++ b/epoc32/include/stdapis/boost/detail/algorithm.hpp	Wed Mar 31 12:27:01 2010 +0100
   974.3 @@ -0,0 +1,103 @@
   974.4 +#ifndef BOOST_ALGORITHM_RG071801_HPP
   974.5 +#define BOOST_ALGORITHM_RG071801_HPP
   974.6 +
   974.7 +//
   974.8 +//
   974.9 +// Copyright (c) 1994
  974.10 +// Hewlett-Packard Company
  974.11 +//
  974.12 +// Permission to use, copy, modify, distribute and sell this software
  974.13 +// and its documentation for any purpose is hereby granted without fee,
  974.14 +// provided that the above copyright notice appear in all copies and
  974.15 +// that both that copyright notice and this permission notice appear
  974.16 +// in supporting documentation.  Hewlett-Packard Company makes no
  974.17 +// representations about the suitability of this software for any
  974.18 +// purpose.  It is provided "as is" without express or implied warranty.
  974.19 +//
  974.20 +//
  974.21 +// Copyright (c) 1996-1998
  974.22 +// Silicon Graphics Computer Systems, Inc.
  974.23 +//
  974.24 +// Permission to use, copy, modify, distribute and sell this software
  974.25 +// and its documentation for any purpose is hereby granted without fee,
  974.26 +// provided that the above copyright notice appear in all copies and
  974.27 +// that both that copyright notice and this permission notice appear
  974.28 +// in supporting documentation.  Silicon Graphics makes no
  974.29 +// representations about the suitability of this software for any
  974.30 +// purpose.  It is provided "as is" without express or implied warranty.
  974.31 +//
  974.32 +
  974.33 +// Copyright 2002 The Trustees of Indiana University.
  974.34 +
  974.35 +// Use, modification and distribution is subject to the Boost Software 
  974.36 +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  974.37 +// http://www.boost.org/LICENSE_1_0.txt)
  974.38 +
  974.39 +//  Boost.MultiArray Library
  974.40 +//  Authors: Ronald Garcia
  974.41 +//           Jeremy Siek
  974.42 +//           Andrew Lumsdaine
  974.43 +//  See http://www.boost.org/libs/multi_array for documentation.
  974.44 +
  974.45 +
  974.46 +#include "boost/iterator.hpp"
  974.47 +
  974.48 +namespace boost {
  974.49 +namespace detail {
  974.50 +namespace multi_array {
  974.51 +//--------------------------------------------------
  974.52 +// copy_n (not part of the C++ standard)
  974.53 +#if 1
  974.54 +
  974.55 +template <class InputIter, class Size, class OutputIter>
  974.56 +OutputIter copy_n(InputIter first, Size count,
  974.57 +                  OutputIter result) {
  974.58 +  for ( ; count > 0; --count) {
  974.59 +    *result = *first;
  974.60 +    ++first;
  974.61 +    ++result;
  974.62 +  }
  974.63 +  return result;
  974.64 +}
  974.65 +#else // !1
  974.66 +
  974.67 +template <class InputIter, class Size, class OutputIter>
  974.68 +OutputIter copy_n__(InputIter first, Size count,
  974.69 +                                       OutputIter result,
  974.70 +                                       std::input_iterator_tag) {
  974.71 +  for ( ; count > 0; --count) {
  974.72 +    *result = *first;
  974.73 +    ++first;
  974.74 +    ++result;
  974.75 +  }
  974.76 +  return result;
  974.77 +}
  974.78 +
  974.79 +template <class RAIter, class Size, class OutputIter>
  974.80 +inline OutputIter
  974.81 +copy_n__(RAIter first, Size count,
  974.82 +         OutputIter result,
  974.83 +         std::random_access_iterator_tag) {
  974.84 +  RAIter last = first + count;
  974.85 +  return std::copy(first, last, result);
  974.86 +}
  974.87 +
  974.88 +template <class InputIter, class Size, class OutputIter>
  974.89 +inline OutputIter
  974.90 +copy_n__(InputIter first, Size count, OutputIter result) {
  974.91 +  typedef typename std::iterator_traits<InputIter>::iterator_category cat;
  974.92 +  return copy_n__(first, count, result, cat());
  974.93 +}
  974.94 +
  974.95 +template <class InputIter, class Size, class OutputIter>
  974.96 +inline OutputIter
  974.97 +copy_n(InputIter first, Size count, OutputIter result) {
  974.98 +  return copy_n__(first, count, result);
  974.99 +}
 974.100 +
 974.101 +#endif // 1
 974.102 +} // namespace multi_array
 974.103 +} // namespace detail
 974.104 +} // namespace boost
 974.105 +
 974.106 +#endif // BOOST_ALGORITHM_RG071801_HPP
   975.1 --- a/epoc32/include/stdapis/boost/detail/call_traits.hpp	Tue Mar 16 16:12:26 2010 +0000
   975.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   975.3 @@ -1,164 +0,0 @@
   975.4 -//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
   975.5 -//  Use, modification and distribution are subject to the Boost Software License,
   975.6 -//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
   975.7 -//  http://www.boost.org/LICENSE_1_0.txt).
   975.8 -//
   975.9 -//  See http://www.boost.org/libs/utility for most recent version including documentation.
  975.10 -
  975.11 -// call_traits: defines typedefs for function usage
  975.12 -// (see libs/utility/call_traits.htm)
  975.13 -
  975.14 -/* Release notes:
  975.15 -   23rd July 2000:
  975.16 -      Fixed array specialization. (JM)
  975.17 -      Added Borland specific fixes for reference types
  975.18 -      (issue raised by Steve Cleary).
  975.19 -*/
  975.20 -
  975.21 -#ifndef BOOST_DETAIL_CALL_TRAITS_HPP
  975.22 -#define BOOST_DETAIL_CALL_TRAITS_HPP
  975.23 -
  975.24 -#ifndef BOOST_CONFIG_HPP
  975.25 -#include <boost/config.hpp>
  975.26 -#endif
  975.27 -#include <cstddef>
  975.28 -
  975.29 -#include <boost/type_traits/is_arithmetic.hpp>
  975.30 -#include <boost/type_traits/is_pointer.hpp>
  975.31 -#include <boost/detail/workaround.hpp>
  975.32 -
  975.33 -namespace boost{
  975.34 -
  975.35 -namespace detail{
  975.36 -
  975.37 -template <typename T, bool small_>
  975.38 -struct ct_imp2
  975.39 -{
  975.40 -   typedef const T& param_type;
  975.41 -};
  975.42 -
  975.43 -template <typename T>
  975.44 -struct ct_imp2<T, true>
  975.45 -{
  975.46 -   typedef const T param_type;
  975.47 -};
  975.48 -
  975.49 -template <typename T, bool isp, bool b1>
  975.50 -struct ct_imp
  975.51 -{
  975.52 -   typedef const T& param_type;
  975.53 -};
  975.54 -
  975.55 -template <typename T, bool isp>
  975.56 -struct ct_imp<T, isp, true>
  975.57 -{
  975.58 -   typedef typename ct_imp2<T, sizeof(T) <= sizeof(void*)>::param_type param_type;
  975.59 -};
  975.60 -
  975.61 -template <typename T, bool b1>
  975.62 -struct ct_imp<T, true, b1>
  975.63 -{
  975.64 -   typedef const T param_type;
  975.65 -};
  975.66 -
  975.67 -}
  975.68 -
  975.69 -template <typename T>
  975.70 -struct call_traits
  975.71 -{
  975.72 -public:
  975.73 -   typedef T value_type;
  975.74 -   typedef T& reference;
  975.75 -   typedef const T& const_reference;
  975.76 -   //
  975.77 -   // C++ Builder workaround: we should be able to define a compile time
  975.78 -   // constant and pass that as a single template parameter to ct_imp<T,bool>,
  975.79 -   // however compiler bugs prevent this - instead pass three bool's to
  975.80 -   // ct_imp<T,bool,bool,bool> and add an extra partial specialisation
  975.81 -   // of ct_imp to handle the logic. (JM)
  975.82 -   typedef typename boost::detail::ct_imp<
  975.83 -      T,
  975.84 -      ::boost::is_pointer<T>::value,
  975.85 -      ::boost::is_arithmetic<T>::value
  975.86 -   >::param_type param_type;
  975.87 -};
  975.88 -
  975.89 -template <typename T>
  975.90 -struct call_traits<T&>
  975.91 -{
  975.92 -   typedef T& value_type;
  975.93 -   typedef T& reference;
  975.94 -   typedef const T& const_reference;
  975.95 -   typedef T& param_type;  // hh removed const
  975.96 -};
  975.97 -
  975.98 -#if BOOST_WORKAROUND( __BORLANDC__,  BOOST_TESTED_AT( 0x581 ) )
  975.99 -// these are illegal specialisations; cv-qualifies applied to
 975.100 -// references have no effect according to [8.3.2p1],
 975.101 -// C++ Builder requires them though as it treats cv-qualified
 975.102 -// references as distinct types...
 975.103 -template <typename T>
 975.104 -struct call_traits<T&const>
 975.105 -{
 975.106 -   typedef T& value_type;
 975.107 -   typedef T& reference;
 975.108 -   typedef const T& const_reference;
 975.109 -   typedef T& param_type;  // hh removed const
 975.110 -};
 975.111 -template <typename T>
 975.112 -struct call_traits<T&volatile>
 975.113 -{
 975.114 -   typedef T& value_type;
 975.115 -   typedef T& reference;
 975.116 -   typedef const T& const_reference;
 975.117 -   typedef T& param_type;  // hh removed const
 975.118 -};
 975.119 -template <typename T>
 975.120 -struct call_traits<T&const volatile>
 975.121 -{
 975.122 -   typedef T& value_type;
 975.123 -   typedef T& reference;
 975.124 -   typedef const T& const_reference;
 975.125 -   typedef T& param_type;  // hh removed const
 975.126 -};
 975.127 -
 975.128 -template <typename T>
 975.129 -struct call_traits< T * >
 975.130 -{
 975.131 -   typedef T * value_type;
 975.132 -   typedef T * & reference;
 975.133 -   typedef T * const & const_reference;
 975.134 -   typedef T * const param_type;  // hh removed const
 975.135 -};
 975.136 -#endif
 975.137 -#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
 975.138 -template <typename T, std::size_t N>
 975.139 -struct call_traits<T [N]>
 975.140 -{
 975.141 -private:
 975.142 -   typedef T array_type[N];
 975.143 -public:
 975.144 -   // degrades array to pointer:
 975.145 -   typedef const T* value_type;
 975.146 -   typedef array_type& reference;
 975.147 -   typedef const array_type& const_reference;
 975.148 -   typedef const T* const param_type;
 975.149 -};
 975.150 -
 975.151 -template <typename T, std::size_t N>
 975.152 -struct call_traits<const T [N]>
 975.153 -{
 975.154 -private:
 975.155 -   typedef const T array_type[N];
 975.156 -public:
 975.157 -   // degrades array to pointer:
 975.158 -   typedef const T* value_type;
 975.159 -   typedef array_type& reference;
 975.160 -   typedef const array_type& const_reference;
 975.161 -   typedef const T* const param_type;
 975.162 -};
 975.163 -#endif
 975.164 -
 975.165 -}
 975.166 -
 975.167 -#endif // BOOST_DETAIL_CALL_TRAITS_HPP
   976.1 --- a/epoc32/include/stdapis/boost/detail/compressed_pair.hpp	Tue Mar 16 16:12:26 2010 +0000
   976.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   976.3 @@ -1,443 +0,0 @@
   976.4 -//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
   976.5 -//  Use, modification and distribution are subject to the Boost Software License,
   976.6 -//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
   976.7 -//  http://www.boost.org/LICENSE_1_0.txt).
   976.8 -//
   976.9 -//  See http://www.boost.org/libs/utility for most recent version including documentation.
  976.10 -
  976.11 -// compressed_pair: pair that "compresses" empty members
  976.12 -// (see libs/utility/compressed_pair.htm)
  976.13 -//
  976.14 -// JM changes 25 Jan 2004:
  976.15 -// For the case where T1 == T2 and both are empty, then first() and second()
  976.16 -// should return different objects.
  976.17 -// JM changes 25 Jan 2000:
  976.18 -// Removed default arguments from compressed_pair_switch to get
  976.19 -// C++ Builder 4 to accept them
  976.20 -// rewriten swap to get gcc and C++ builder to compile.
  976.21 -// added partial specialisations for case T1 == T2 to avoid duplicate constructor defs.
  976.22 -
  976.23 -#ifndef BOOST_DETAIL_COMPRESSED_PAIR_HPP
  976.24 -#define BOOST_DETAIL_COMPRESSED_PAIR_HPP
  976.25 -
  976.26 -#include <algorithm>
  976.27 -
  976.28 -#include <boost/type_traits/remove_cv.hpp>
  976.29 -#include <boost/type_traits/is_empty.hpp>
  976.30 -#include <boost/type_traits/is_same.hpp>
  976.31 -#include <boost/call_traits.hpp>
  976.32 -
  976.33 -#ifdef BOOST_MSVC
  976.34 -# pragma warning(push)
  976.35 -# pragma warning(disable:4512)
  976.36 -#endif 
  976.37 -namespace boost
  976.38 -{
  976.39 -
  976.40 -template <class T1, class T2>
  976.41 -class compressed_pair;
  976.42 -
  976.43 -
  976.44 -// compressed_pair
  976.45 -
  976.46 -namespace details
  976.47 -{
  976.48 -   // JM altered 26 Jan 2000:
  976.49 -   template <class T1, class T2, bool IsSame, bool FirstEmpty, bool SecondEmpty>
  976.50 -   struct compressed_pair_switch;
  976.51 -
  976.52 -   template <class T1, class T2>
  976.53 -   struct compressed_pair_switch<T1, T2, false, false, false>
  976.54 -      {static const int value = 0;};
  976.55 -
  976.56 -   template <class T1, class T2>
  976.57 -   struct compressed_pair_switch<T1, T2, false, true, true>
  976.58 -      {static const int value = 3;};
  976.59 -
  976.60 -   template <class T1, class T2>
  976.61 -   struct compressed_pair_switch<T1, T2, false, true, false>
  976.62 -      {static const int value = 1;};
  976.63 -
  976.64 -   template <class T1, class T2>
  976.65 -   struct compressed_pair_switch<T1, T2, false, false, true>
  976.66 -      {static const int value = 2;};
  976.67 -
  976.68 -   template <class T1, class T2>
  976.69 -   struct compressed_pair_switch<T1, T2, true, true, true>
  976.70 -      {static const int value = 4;};
  976.71 -
  976.72 -   template <class T1, class T2>
  976.73 -   struct compressed_pair_switch<T1, T2, true, false, false>
  976.74 -      {static const int value = 5;};
  976.75 -
  976.76 -   template <class T1, class T2, int Version> class compressed_pair_imp;
  976.77 -
  976.78 -#ifdef __GNUC__
  976.79 -   // workaround for GCC (JM):
  976.80 -   using std::swap;
  976.81 -#endif
  976.82 -   //
  976.83 -   // can't call unqualified swap from within classname::swap
  976.84 -   // as Koenig lookup rules will find only the classname::swap
  976.85 -   // member function not the global declaration, so use cp_swap
  976.86 -   // as a forwarding function (JM):
  976.87 -   template <typename T>
  976.88 -   inline void cp_swap(T& t1, T& t2)
  976.89 -   {
  976.90 -#ifndef __GNUC__
  976.91 -      using std::swap;
  976.92 -#endif
  976.93 -      swap(t1, t2);
  976.94 -   }
  976.95 -
  976.96 -   // 0    derive from neither
  976.97 -
  976.98 -   template <class T1, class T2>
  976.99 -   class compressed_pair_imp<T1, T2, 0>
 976.100 -   {
 976.101 -   public:
 976.102 -      typedef T1                                                 first_type;
 976.103 -      typedef T2                                                 second_type;
 976.104 -      typedef typename call_traits<first_type>::param_type       first_param_type;
 976.105 -      typedef typename call_traits<second_type>::param_type      second_param_type;
 976.106 -      typedef typename call_traits<first_type>::reference        first_reference;
 976.107 -      typedef typename call_traits<second_type>::reference       second_reference;
 976.108 -      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.109 -      typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.110 -
 976.111 -      compressed_pair_imp() {} 
 976.112 -
 976.113 -      compressed_pair_imp(first_param_type x, second_param_type y)
 976.114 -         : first_(x), second_(y) {}
 976.115 -
 976.116 -      compressed_pair_imp(first_param_type x)
 976.117 -         : first_(x) {}
 976.118 -
 976.119 -      compressed_pair_imp(second_param_type y)
 976.120 -         : second_(y) {}
 976.121 -
 976.122 -      first_reference       first()       {return first_;}
 976.123 -      first_const_reference first() const {return first_;}
 976.124 -
 976.125 -      second_reference       second()       {return second_;}
 976.126 -      second_const_reference second() const {return second_;}
 976.127 -
 976.128 -      void swap(::boost::compressed_pair<T1, T2>& y)
 976.129 -      {
 976.130 -         cp_swap(first_, y.first());
 976.131 -         cp_swap(second_, y.second());
 976.132 -      }
 976.133 -   private:
 976.134 -      first_type first_;
 976.135 -      second_type second_;
 976.136 -   };
 976.137 -
 976.138 -   // 1    derive from T1
 976.139 -
 976.140 -   template <class T1, class T2>
 976.141 -   class compressed_pair_imp<T1, T2, 1>
 976.142 -      : protected ::boost::remove_cv<T1>::type
 976.143 -   {
 976.144 -   public:
 976.145 -      typedef T1                                                 first_type;
 976.146 -      typedef T2                                                 second_type;
 976.147 -      typedef typename call_traits<first_type>::param_type       first_param_type;
 976.148 -      typedef typename call_traits<second_type>::param_type      second_param_type;
 976.149 -      typedef typename call_traits<first_type>::reference        first_reference;
 976.150 -      typedef typename call_traits<second_type>::reference       second_reference;
 976.151 -      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.152 -      typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.153 -
 976.154 -      compressed_pair_imp() {}
 976.155 -
 976.156 -      compressed_pair_imp(first_param_type x, second_param_type y)
 976.157 -         : first_type(x), second_(y) {}
 976.158 -
 976.159 -      compressed_pair_imp(first_param_type x)
 976.160 -         : first_type(x) {}
 976.161 -
 976.162 -      compressed_pair_imp(second_param_type y)
 976.163 -         : second_(y) {}
 976.164 -
 976.165 -      first_reference       first()       {return *this;}
 976.166 -      first_const_reference first() const {return *this;}
 976.167 -
 976.168 -      second_reference       second()       {return second_;}
 976.169 -      second_const_reference second() const {return second_;}
 976.170 -
 976.171 -      void swap(::boost::compressed_pair<T1,T2>& y)
 976.172 -      {
 976.173 -         // no need to swap empty base class:
 976.174 -         cp_swap(second_, y.second());
 976.175 -      }
 976.176 -   private:
 976.177 -      second_type second_;
 976.178 -   };
 976.179 -
 976.180 -   // 2    derive from T2
 976.181 -
 976.182 -   template <class T1, class T2>
 976.183 -   class compressed_pair_imp<T1, T2, 2>
 976.184 -      : protected ::boost::remove_cv<T2>::type
 976.185 -   {
 976.186 -   public:
 976.187 -      typedef T1                                                 first_type;
 976.188 -      typedef T2                                                 second_type;
 976.189 -      typedef typename call_traits<first_type>::param_type       first_param_type;
 976.190 -      typedef typename call_traits<second_type>::param_type      second_param_type;
 976.191 -      typedef typename call_traits<first_type>::reference        first_reference;
 976.192 -      typedef typename call_traits<second_type>::reference       second_reference;
 976.193 -      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.194 -      typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.195 -
 976.196 -      compressed_pair_imp() {}
 976.197 -
 976.198 -      compressed_pair_imp(first_param_type x, second_param_type y)
 976.199 -         : second_type(y), first_(x) {}
 976.200 -
 976.201 -      compressed_pair_imp(first_param_type x)
 976.202 -         : first_(x) {}
 976.203 -
 976.204 -      compressed_pair_imp(second_param_type y)
 976.205 -         : second_type(y) {}
 976.206 -
 976.207 -      first_reference       first()       {return first_;}
 976.208 -      first_const_reference first() const {return first_;}
 976.209 -
 976.210 -      second_reference       second()       {return *this;}
 976.211 -      second_const_reference second() const {return *this;}
 976.212 -
 976.213 -      void swap(::boost::compressed_pair<T1,T2>& y)
 976.214 -      {
 976.215 -         // no need to swap empty base class:
 976.216 -         cp_swap(first_, y.first());
 976.217 -      }
 976.218 -
 976.219 -   private:
 976.220 -      first_type first_;
 976.221 -   };
 976.222 -
 976.223 -   // 3    derive from T1 and T2
 976.224 -
 976.225 -   template <class T1, class T2>
 976.226 -   class compressed_pair_imp<T1, T2, 3>
 976.227 -      : protected ::boost::remove_cv<T1>::type,
 976.228 -        protected ::boost::remove_cv<T2>::type
 976.229 -   {
 976.230 -   public:
 976.231 -      typedef T1                                                 first_type;
 976.232 -      typedef T2                                                 second_type;
 976.233 -      typedef typename call_traits<first_type>::param_type       first_param_type;
 976.234 -      typedef typename call_traits<second_type>::param_type      second_param_type;
 976.235 -      typedef typename call_traits<first_type>::reference        first_reference;
 976.236 -      typedef typename call_traits<second_type>::reference       second_reference;
 976.237 -      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.238 -      typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.239 -
 976.240 -      compressed_pair_imp() {}
 976.241 -
 976.242 -      compressed_pair_imp(first_param_type x, second_param_type y)
 976.243 -         : first_type(x), second_type(y) {}
 976.244 -
 976.245 -      compressed_pair_imp(first_param_type x)
 976.246 -         : first_type(x) {}
 976.247 -
 976.248 -      compressed_pair_imp(second_param_type y)
 976.249 -         : second_type(y) {}
 976.250 -
 976.251 -      first_reference       first()       {return *this;}
 976.252 -      first_const_reference first() const {return *this;}
 976.253 -
 976.254 -      second_reference       second()       {return *this;}
 976.255 -      second_const_reference second() const {return *this;}
 976.256 -      //
 976.257 -      // no need to swap empty bases:
 976.258 -      void swap(::boost::compressed_pair<T1,T2>&) {}
 976.259 -   };
 976.260 -
 976.261 -   // JM
 976.262 -   // 4    T1 == T2, T1 and T2 both empty
 976.263 -   //      Originally this did not store an instance of T2 at all
 976.264 -   //      but that led to problems beause it meant &x.first() == &x.second()
 976.265 -   //      which is not true for any other kind of pair, so now we store an instance
 976.266 -   //      of T2 just in case the user is relying on first() and second() returning
 976.267 -   //      different objects (albeit both empty).
 976.268 -   template <class T1, class T2>
 976.269 -   class compressed_pair_imp<T1, T2, 4>
 976.270 -      : protected ::boost::remove_cv<T1>::type
 976.271 -   {
 976.272 -   public:
 976.273 -      typedef T1                                                 first_type;
 976.274 -      typedef T2                                                 second_type;
 976.275 -      typedef typename call_traits<first_type>::param_type       first_param_type;
 976.276 -      typedef typename call_traits<second_type>::param_type      second_param_type;
 976.277 -      typedef typename call_traits<first_type>::reference        first_reference;
 976.278 -      typedef typename call_traits<second_type>::reference       second_reference;
 976.279 -      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.280 -      typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.281 -
 976.282 -      compressed_pair_imp() {}
 976.283 -
 976.284 -      compressed_pair_imp(first_param_type x, second_param_type y)
 976.285 -         : first_type(x), m_second(y) {}
 976.286 -
 976.287 -      compressed_pair_imp(first_param_type x)
 976.288 -         : first_type(x), m_second(x) {}
 976.289 -
 976.290 -      first_reference       first()       {return *this;}
 976.291 -      first_const_reference first() const {return *this;}
 976.292 -
 976.293 -      second_reference       second()       {return m_second;}
 976.294 -      second_const_reference second() const {return m_second;}
 976.295 -
 976.296 -      void swap(::boost::compressed_pair<T1,T2>&) {}
 976.297 -   private:
 976.298 -      T2 m_second;
 976.299 -   };
 976.300 -
 976.301 -   // 5    T1 == T2 and are not empty:   //JM
 976.302 -
 976.303 -   template <class T1, class T2>
 976.304 -   class compressed_pair_imp<T1, T2, 5>
 976.305 -   {
 976.306 -   public:
 976.307 -      typedef T1                                                 first_type;
 976.308 -      typedef T2                                                 second_type;
 976.309 -      typedef typename call_traits<first_type>::param_type       first_param_type;
 976.310 -      typedef typename call_traits<second_type>::param_type      second_param_type;
 976.311 -      typedef typename call_traits<first_type>::reference        first_reference;
 976.312 -      typedef typename call_traits<second_type>::reference       second_reference;
 976.313 -      typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.314 -      typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.315 -
 976.316 -      compressed_pair_imp() {}
 976.317 -
 976.318 -      compressed_pair_imp(first_param_type x, second_param_type y)
 976.319 -         : first_(x), second_(y) {}
 976.320 -
 976.321 -      compressed_pair_imp(first_param_type x)
 976.322 -         : first_(x), second_(x) {}
 976.323 -
 976.324 -      first_reference       first()       {return first_;}
 976.325 -      first_const_reference first() const {return first_;}
 976.326 -
 976.327 -      second_reference       second()       {return second_;}
 976.328 -      second_const_reference second() const {return second_;}
 976.329 -
 976.330 -      void swap(::boost::compressed_pair<T1, T2>& y)
 976.331 -      {
 976.332 -         cp_swap(first_, y.first());
 976.333 -         cp_swap(second_, y.second());
 976.334 -      }
 976.335 -   private:
 976.336 -      first_type first_;
 976.337 -      second_type second_;
 976.338 -   };
 976.339 -
 976.340 -}  // details
 976.341 -
 976.342 -template <class T1, class T2>
 976.343 -class compressed_pair
 976.344 -   : private ::boost::details::compressed_pair_imp<T1, T2,
 976.345 -             ::boost::details::compressed_pair_switch<
 976.346 -                    T1,
 976.347 -                    T2,
 976.348 -                    ::boost::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value,
 976.349 -                    ::boost::is_empty<T1>::value,
 976.350 -                    ::boost::is_empty<T2>::value>::value>
 976.351 -{
 976.352 -private:
 976.353 -   typedef details::compressed_pair_imp<T1, T2,
 976.354 -             ::boost::details::compressed_pair_switch<
 976.355 -                    T1,
 976.356 -                    T2,
 976.357 -                    ::boost::is_same<typename remove_cv<T1>::type, typename remove_cv<T2>::type>::value,
 976.358 -                    ::boost::is_empty<T1>::value,
 976.359 -                    ::boost::is_empty<T2>::value>::value> base;
 976.360 -public:
 976.361 -   typedef T1                                                 first_type;
 976.362 -   typedef T2                                                 second_type;
 976.363 -   typedef typename call_traits<first_type>::param_type       first_param_type;
 976.364 -   typedef typename call_traits<second_type>::param_type      second_param_type;
 976.365 -   typedef typename call_traits<first_type>::reference        first_reference;
 976.366 -   typedef typename call_traits<second_type>::reference       second_reference;
 976.367 -   typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.368 -   typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.369 -
 976.370 -            compressed_pair() : base() {}
 976.371 -            compressed_pair(first_param_type x, second_param_type y) : base(x, y) {}
 976.372 -   explicit compressed_pair(first_param_type x) : base(x) {}
 976.373 -   explicit compressed_pair(second_param_type y) : base(y) {}
 976.374 -
 976.375 -   first_reference       first()       {return base::first();}
 976.376 -   first_const_reference first() const {return base::first();}
 976.377 -
 976.378 -   second_reference       second()       {return base::second();}
 976.379 -   second_const_reference second() const {return base::second();}
 976.380 -
 976.381 -   void swap(compressed_pair& y) { base::swap(y); }
 976.382 -};
 976.383 -
 976.384 -// JM
 976.385 -// Partial specialisation for case where T1 == T2:
 976.386 -//
 976.387 -template <class T>
 976.388 -class compressed_pair<T, T>
 976.389 -   : private details::compressed_pair_imp<T, T,
 976.390 -             ::boost::details::compressed_pair_switch<
 976.391 -                    T,
 976.392 -                    T,
 976.393 -                    ::boost::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value,
 976.394 -                    ::boost::is_empty<T>::value,
 976.395 -                    ::boost::is_empty<T>::value>::value>
 976.396 -{
 976.397 -private:
 976.398 -   typedef details::compressed_pair_imp<T, T,
 976.399 -             ::boost::details::compressed_pair_switch<
 976.400 -                    T,
 976.401 -                    T,
 976.402 -                    ::boost::is_same<typename remove_cv<T>::type, typename remove_cv<T>::type>::value,
 976.403 -                    ::boost::is_empty<T>::value,
 976.404 -                    ::boost::is_empty<T>::value>::value> base;
 976.405 -public:
 976.406 -   typedef T                                                  first_type;
 976.407 -   typedef T                                                  second_type;
 976.408 -   typedef typename call_traits<first_type>::param_type       first_param_type;
 976.409 -   typedef typename call_traits<second_type>::param_type      second_param_type;
 976.410 -   typedef typename call_traits<first_type>::reference        first_reference;
 976.411 -   typedef typename call_traits<second_type>::reference       second_reference;
 976.412 -   typedef typename call_traits<first_type>::const_reference  first_const_reference;
 976.413 -   typedef typename call_traits<second_type>::const_reference second_const_reference;
 976.414 -
 976.415 -            compressed_pair() : base() {}
 976.416 -            compressed_pair(first_param_type x, second_param_type y) : base(x, y) {}
 976.417 -#if !(defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530))
 976.418 -   explicit 
 976.419 -#endif
 976.420 -      compressed_pair(first_param_type x) : base(x) {}
 976.421 -
 976.422 -   first_reference       first()       {return base::first();}
 976.423 -   first_const_reference first() const {return base::first();}
 976.424 -
 976.425 -   second_reference       second()       {return base::second();}
 976.426 -   second_const_reference second() const {return base::second();}
 976.427 -
 976.428 -   void swap(::boost::compressed_pair<T,T>& y) { base::swap(y); }
 976.429 -};
 976.430 -
 976.431 -template <class T1, class T2>
 976.432 -inline
 976.433 -void
 976.434 -swap(compressed_pair<T1, T2>& x, compressed_pair<T1, T2>& y)
 976.435 -{
 976.436 -   x.swap(y);
 976.437 -}
 976.438 -
 976.439 -} // boost
 976.440 -
 976.441 -#ifdef BOOST_MSVC
 976.442 -# pragma warning(pop)
 976.443 -#endif 
 976.444 -
 976.445 -#endif // BOOST_DETAIL_COMPRESSED_PAIR_HPP
 976.446 -
   977.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   977.2 +++ b/epoc32/include/stdapis/boost/detail/dynamic_bitset.hpp	Wed Mar 31 12:27:01 2010 +0100
   977.3 @@ -0,0 +1,1800 @@
   977.4 +// --------------------------------------------------
   977.5 +//
   977.6 +// (C) Copyright Chuck Allison and Jeremy Siek 2001 - 2002.
   977.7 +// (C) Copyright Gennaro Prota                 2003 - 2004.
   977.8 +//
   977.9 +// Distributed under the Boost Software License, Version 1.0.
  977.10 +//    (See accompanying file LICENSE_1_0.txt or copy at
  977.11 +//          http://www.boost.org/LICENSE_1_0.txt)
  977.12 +//
  977.13 +// -----------------------------------------------------------
  977.14 +
  977.15 +//  See http://www.boost.org/libs/dynamic_bitset for documentation.
  977.16 +
  977.17 +
  977.18 +
  977.19 +#ifndef BOOST_DYNAMIC_BITSET_DYNAMIC_BITSET_HPP
  977.20 +#define BOOST_DYNAMIC_BITSET_DYNAMIC_BITSET_HPP
  977.21 +
  977.22 +#include <cassert>
  977.23 +#include <string>
  977.24 +#include <stdexcept>           // for std::overflow_error
  977.25 +#include <algorithm>           // for std::swap, std::min, std::copy, std::fill
  977.26 +#include <vector>
  977.27 +#include <climits>             // for CHAR_BIT
  977.28 +
  977.29 +#include "boost/dynamic_bitset/config.hpp"
  977.30 +
  977.31 +#ifndef BOOST_NO_STD_LOCALE
  977.32 +# include <locale> // G.P.S
  977.33 +#endif
  977.34 +
  977.35 +#if defined(BOOST_OLD_IOSTREAMS)
  977.36 +#  include <iostream.h>
  977.37 +#  include <ctype.h> // for isspace
  977.38 +#else
  977.39 +#  include <istream>
  977.40 +#  include <ostream>
  977.41 +#endif
  977.42 +
  977.43 +#include "boost/dynamic_bitset_fwd.hpp"
  977.44 +#include "boost/detail/dynamic_bitset.hpp"
  977.45 +#include "boost/detail/iterator.hpp" // used to implement append(Iter, Iter)
  977.46 +#include "boost/static_assert.hpp"
  977.47 +#include "boost/limits.hpp"
  977.48 +#include "boost/pending/lowest_bit.hpp" // used by find_first/next
  977.49 +
  977.50 +
  977.51 +namespace boost {
  977.52 +
  977.53 +template
  977.54 +
  977.55 +#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, <= 1300)  // 1300 == VC++ 7.0
  977.56 +   // VC++ (up to 7.0) wants the default arguments again
  977.57 +   <typename Block = unsigned long, typename Allocator = std::allocator<Block> >
  977.58 +# else
  977.59 +   <typename Block, typename Allocator>
  977.60 +# endif
  977.61 +
  977.62 +class dynamic_bitset
  977.63 +{
  977.64 +  // Portability note: member function templates are defined inside
  977.65 +  // this class definition to avoid problems with VC++. Similarly,
  977.66 +  // with the member functions of nested classes.
  977.67 +
  977.68 +  BOOST_STATIC_ASSERT(detail::dynamic_bitset_allowed_block_type<Block>::value);
  977.69 +
  977.70 +public:
  977.71 +    typedef Block block_type;
  977.72 +    typedef Allocator allocator_type;
  977.73 +    typedef std::size_t size_type;
  977.74 +    typedef int block_width_type; // gps
  977.75 +
  977.76 +    BOOST_STATIC_CONSTANT(block_width_type, bits_per_block = (std::numeric_limits<Block>::digits));
  977.77 +    BOOST_STATIC_CONSTANT(size_type, npos = static_cast<size_type>(-1));
  977.78 +
  977.79 +
  977.80 +public:
  977.81 +
  977.82 +    // A proxy class to simulate lvalues of bit type.
  977.83 +    // Shouldn't it be private? [gps]
  977.84 +    //
  977.85 +    class reference
  977.86 +    {
  977.87 +        friend class dynamic_bitset<Block, Allocator>;
  977.88 +
  977.89 +
  977.90 +        // the one and only non-copy ctor
  977.91 +        reference(block_type & b, int pos)
  977.92 +            :m_block(b), m_mask(block_type(1) << pos)
  977.93 +        {}
  977.94 +
  977.95 +        void operator&(); // left undefined
  977.96 +
  977.97 +    public:
  977.98 +
  977.99 +        // copy constructor: compiler generated
 977.100 +
 977.101 +        operator bool() const { return (m_block & m_mask) != 0; }
 977.102 +        bool operator~() const { return (m_block & m_mask) == 0; }
 977.103 +
 977.104 +        reference& flip() { do_flip(); return *this; }
 977.105 +
 977.106 +        reference& operator=(bool x)               { do_assign(x);   return *this; } // for b[i] = x
 977.107 +        reference& operator=(const reference& rhs) { do_assign(rhs); return *this; } // for b[i] = b[j]
 977.108 +
 977.109 +        reference& operator|=(bool x) { if  (x) do_set();   return *this; }
 977.110 +        reference& operator&=(bool x) { if (!x) do_reset(); return *this; }
 977.111 +        reference& operator^=(bool x) { if  (x) do_flip();  return *this; }
 977.112 +        reference& operator-=(bool x) { if  (x) do_reset(); return *this; }
 977.113 +
 977.114 +     private:
 977.115 +        block_type & m_block;
 977.116 +        const block_type m_mask;
 977.117 +
 977.118 +        void do_set() { m_block |= m_mask; }
 977.119 +        void do_reset() { m_block &= ~m_mask; }
 977.120 +        void do_flip() { m_block ^= m_mask; }
 977.121 +        void do_assign(bool x) { x? do_set() : do_reset(); }
 977.122 +    };
 977.123 +
 977.124 +    typedef bool const_reference;
 977.125 +
 977.126 +    // constructors, etc.
 977.127 +    explicit
 977.128 +    dynamic_bitset(const Allocator& alloc = Allocator());
 977.129 +
 977.130 +    explicit
 977.131 +    dynamic_bitset(size_type num_bits, unsigned long value = 0,
 977.132 +               const Allocator& alloc = Allocator());
 977.133 +
 977.134 +
 977.135 +    // The presence of this constructor is a concession to ease of
 977.136 +    // use, especially for the novice user. A conversion from string
 977.137 +    // is, in most cases, formatting, and should be done by the standard
 977.138 +    // formatting convention: operator>>.
 977.139 +    //
 977.140 +    // NOTE:
 977.141 +    // Leave the parentheses around std::basic_string<CharT, Traits, Alloc>::npos.
 977.142 +    // g++ 3.2 requires them and probably the standard will - see core issue 325
 977.143 +    // NOTE 2: 
 977.144 +    // split into two constructors because of bugs in MSVC 6.0sp5 with STLport
 977.145 +
 977.146 +    template <typename CharT, typename Traits, typename Alloc>
 977.147 +    dynamic_bitset(const std::basic_string<CharT, Traits, Alloc>& s,
 977.148 +        typename std::basic_string<CharT, Traits, Alloc>::size_type pos,
 977.149 +        typename std::basic_string<CharT, Traits, Alloc>::size_type n,
 977.150 +        size_type num_bits = npos,
 977.151 +        const Allocator& alloc = Allocator())
 977.152 +
 977.153 +    :m_bits(alloc),
 977.154 +     m_num_bits(0)
 977.155 +    {
 977.156 +      init_from_string(s, pos, n, num_bits, alloc);
 977.157 +    }
 977.158 +
 977.159 +    template <typename CharT, typename Traits, typename Alloc>
 977.160 +    explicit
 977.161 +    dynamic_bitset(const std::basic_string<CharT, Traits, Alloc>& s,
 977.162 +      typename std::basic_string<CharT, Traits, Alloc>::size_type pos = 0)
 977.163 +
 977.164 +    :m_bits(Allocator()),
 977.165 +     m_num_bits(0)
 977.166 +    {
 977.167 +      init_from_string(s, pos, (std::basic_string<CharT, Traits, Alloc>::npos),
 977.168 +                       npos, Allocator());
 977.169 +    }
 977.170 +
 977.171 +    // The first bit in *first is the least significant bit, and the
 977.172 +    // last bit in the block just before *last is the most significant bit.
 977.173 +    template <typename BlockInputIterator>
 977.174 +    dynamic_bitset(BlockInputIterator first, BlockInputIterator last,
 977.175 +                   const Allocator& alloc = Allocator())
 977.176 +
 977.177 +    :m_bits(first, last, alloc),
 977.178 +     m_num_bits(m_bits.size() * bits_per_block)
 977.179 +    {}
 977.180 +
 977.181 +
 977.182 +    // copy constructor
 977.183 +    dynamic_bitset(const dynamic_bitset& b);
 977.184 +
 977.185 +    ~dynamic_bitset();
 977.186 +
 977.187 +    void swap(dynamic_bitset& b);
 977.188 +    dynamic_bitset& operator=(const dynamic_bitset& b);
 977.189 +
 977.190 +    allocator_type get_allocator() const;
 977.191 +
 977.192 +    // size changing operations
 977.193 +    void resize(size_type num_bits, bool value = false);
 977.194 +    void clear();
 977.195 +    void push_back(bool bit);
 977.196 +    void append(Block block);
 977.197 +
 977.198 +    template <typename BlockInputIterator>
 977.199 +    void m_append(BlockInputIterator first, BlockInputIterator last, std::input_iterator_tag)
 977.200 +    {
 977.201 +        std::vector<Block, Allocator> v(first, last);
 977.202 +        m_append(v.begin(), v.end(), std::random_access_iterator_tag());
 977.203 +    }
 977.204 +    template <typename BlockInputIterator>
 977.205 +    void m_append(BlockInputIterator first, BlockInputIterator last, std::forward_iterator_tag)
 977.206 +    {
 977.207 +        assert(first != last);
 977.208 +        block_width_type r = count_extra_bits();
 977.209 +        std::size_t d = boost::detail::distance(first, last);
 977.210 +        m_bits.reserve(num_blocks() + d);
 977.211 +        if (r == 0) {
 977.212 +            for( ; first != last; ++first)
 977.213 +                m_bits.push_back(*first); // could use vector<>::insert()
 977.214 +        }
 977.215 +        else {
 977.216 +            m_highest_block() |= (*first << r);
 977.217 +            do {
 977.218 +                Block b = *first >> (bits_per_block - r);
 977.219 +                ++first;
 977.220 +                m_bits.push_back(b | (first==last? 0 : *first << r));
 977.221 +            } while (first != last);
 977.222 +        }
 977.223 +        m_num_bits += bits_per_block * d;
 977.224 +    }
 977.225 +    template <typename BlockInputIterator>
 977.226 +    void append(BlockInputIterator first, BlockInputIterator last) // strong guarantee
 977.227 +    {
 977.228 +        if (first != last) {
 977.229 +            typename detail::iterator_traits<BlockInputIterator>::iterator_category cat;
 977.230 +            m_append(first, last, cat);
 977.231 +        }
 977.232 +    }
 977.233 +
 977.234 +
 977.235 +    // bitset operations
 977.236 +    dynamic_bitset& operator&=(const dynamic_bitset& b);
 977.237 +    dynamic_bitset& operator|=(const dynamic_bitset& b);
 977.238 +    dynamic_bitset& operator^=(const dynamic_bitset& b);
 977.239 +    dynamic_bitset& operator-=(const dynamic_bitset& b);
 977.240 +    dynamic_bitset& operator<<=(size_type n);
 977.241 +    dynamic_bitset& operator>>=(size_type n);
 977.242 +    dynamic_bitset operator<<(size_type n) const;
 977.243 +    dynamic_bitset operator>>(size_type n) const;
 977.244 +
 977.245 +    // basic bit operations
 977.246 +    dynamic_bitset& set(size_type n, bool val = true);
 977.247 +    dynamic_bitset& set();
 977.248 +    dynamic_bitset& reset(size_type n);
 977.249 +    dynamic_bitset& reset();
 977.250 +    dynamic_bitset& flip(size_type n);
 977.251 +    dynamic_bitset& flip();
 977.252 +    bool test(size_type n) const;
 977.253 +    bool any() const;
 977.254 +    bool none() const;
 977.255 +    dynamic_bitset operator~() const;
 977.256 +    size_type count() const;
 977.257 +
 977.258 +    // subscript
 977.259 +    reference operator[](size_type pos) {
 977.260 +        return reference(m_bits[block_index(pos)], bit_index(pos));
 977.261 +    }
 977.262 +    bool operator[](size_type pos) const { return test(pos); }
 977.263 +
 977.264 +    unsigned long to_ulong() const;
 977.265 +
 977.266 +    size_type size() const;
 977.267 +    size_type num_blocks() const;
 977.268 +    size_type max_size() const;
 977.269 +    bool empty() const;
 977.270 +#if 0 // gps
 977.271 +    void reserve(size_type n);
 977.272 +    size_type capacity() const;
 977.273 +#endif
 977.274 +
 977.275 +    bool is_subset_of(const dynamic_bitset& a) const;
 977.276 +    bool is_proper_subset_of(const dynamic_bitset& a) const;
 977.277 +    bool intersects(const dynamic_bitset & a) const;
 977.278 +
 977.279 +    // lookup
 977.280 +    size_type find_first() const;
 977.281 +    size_type find_next(size_type pos) const;
 977.282 +
 977.283 +
 977.284 +#if !defined BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS
 977.285 +    // lexicographical comparison
 977.286 +    template <typename B, typename A>
 977.287 +    friend bool operator==(const dynamic_bitset<B, A>& a,
 977.288 +                           const dynamic_bitset<B, A>& b);
 977.289 +
 977.290 +    template <typename B, typename A>
 977.291 +    friend bool operator<(const dynamic_bitset<B, A>& a,
 977.292 +                          const dynamic_bitset<B, A>& b);
 977.293 +
 977.294 +
 977.295 +    template <typename B, typename A, typename BlockOutputIterator>
 977.296 +    friend void to_block_range(const dynamic_bitset<B, A>& b,
 977.297 +                               BlockOutputIterator result);
 977.298 +
 977.299 +    template <typename BlockIterator, typename B, typename A>
 977.300 +    friend void from_block_range(BlockIterator first, BlockIterator last,
 977.301 +                                 dynamic_bitset<B, A>& result);
 977.302 +
 977.303 +
 977.304 +    template <typename CharT, typename Traits, typename B, typename A>
 977.305 +    friend std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is,
 977.306 +                                                         dynamic_bitset<B, A>& b);
 977.307 +
 977.308 +    template <typename B, typename A, typename stringT>
 977.309 +    friend void to_string_helper(const dynamic_bitset<B, A> & b, stringT & s, bool dump_all);
 977.310 +
 977.311 +
 977.312 +#endif
 977.313 +
 977.314 +
 977.315 +private:
 977.316 +    BOOST_STATIC_CONSTANT(block_width_type, ulong_width = std::numeric_limits<unsigned long>::digits);
 977.317 +    typedef std::vector<block_type, allocator_type> buffer_type;
 977.318 +
 977.319 +    void m_zero_unused_bits();
 977.320 +    bool m_check_invariants() const;
 977.321 +
 977.322 +    size_type m_do_find_from(size_type first_block) const;
 977.323 +
 977.324 +    block_width_type count_extra_bits() const { return bit_index(size()); }
 977.325 +    static size_type block_index(size_type pos) { return pos / bits_per_block; }
 977.326 +    static block_width_type bit_index(size_type pos) { return static_cast<int>(pos % bits_per_block); }
 977.327 +    static Block bit_mask(size_type pos) { return Block(1) << bit_index(pos); }
 977.328 +
 977.329 +    template <typename CharT, typename Traits, typename Alloc>
 977.330 +    void init_from_string(const std::basic_string<CharT, Traits, Alloc>& s,
 977.331 +        typename std::basic_string<CharT, Traits, Alloc>::size_type pos,
 977.332 +        typename std::basic_string<CharT, Traits, Alloc>::size_type n,
 977.333 +        size_type num_bits,
 977.334 +        const Allocator& alloc)
 977.335 +    {
 977.336 +        assert(pos <= s.size());
 977.337 +
 977.338 +        typedef typename std::basic_string<CharT, Traits, Alloc> StrT;
 977.339 +        typedef typename StrT::traits_type Tr;
 977.340 +
 977.341 +        const typename StrT::size_type rlen = (std::min)(n, s.size() - pos); // gps
 977.342 +        const size_type sz = ( num_bits != npos? num_bits : rlen);
 977.343 +        m_bits.resize(calc_num_blocks(sz));
 977.344 +        m_num_bits = sz;
 977.345 +
 977.346 +
 977.347 +        BOOST_DYNAMIC_BITSET_CTYPE_FACET(CharT, fac, std::locale());
 977.348 +        const CharT one = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
 977.349 +
 977.350 +        const size_type m = num_bits < rlen ? num_bits : rlen; // [gps]
 977.351 +        typename StrT::size_type i = 0;
 977.352 +        for( ; i < m; ++i) {
 977.353 +
 977.354 +            const CharT c = s[(pos + m - 1) - i];
 977.355 +
 977.356 +            assert( Tr::eq(c, one)
 977.357 +                    || Tr::eq(c, BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0')) );
 977.358 +
 977.359 +            if (Tr::eq(c, one))
 977.360 +                set(i);
 977.361 +
 977.362 +        }
 977.363 +
 977.364 +    }
 977.365 +
 977.366 +BOOST_DYNAMIC_BITSET_PRIVATE:
 977.367 +
 977.368 +    bool m_unchecked_test(size_type pos) const;
 977.369 +    static size_type calc_num_blocks(size_type num_bits);
 977.370 +
 977.371 +    Block&        m_highest_block();
 977.372 +    const Block&  m_highest_block() const;
 977.373 +
 977.374 +    buffer_type m_bits; // [gps] to be renamed
 977.375 +    size_type   m_num_bits;
 977.376 +
 977.377 +
 977.378 +    class bit_appender;
 977.379 +    friend class bit_appender;
 977.380 +    class bit_appender {
 977.381 +      // helper for stream >>
 977.382 +      // Supplies to the lack of an efficient append at the less
 977.383 +      // significant end: bits are actually appended "at left" but
 977.384 +      // rearranged in the destructor. Everything works just as if
 977.385 +      // dynamic_bitset<> had an append_at_right() function (which
 977.386 +      // threw, in case, the same exceptions as push_back) except
 977.387 +      // that the function is actually called bit_appender::do_append().
 977.388 +      //
 977.389 +      dynamic_bitset & bs;
 977.390 +      size_type n;
 977.391 +      Block mask;
 977.392 +      Block * current;
 977.393 +    public:
 977.394 +        bit_appender(dynamic_bitset & r) : bs(r), n(0), mask(0), current(0) {}
 977.395 +        ~bit_appender() {
 977.396 +            // reverse the order of blocks, shift
 977.397 +            // if needed, and then resize
 977.398 +            //
 977.399 +            std::reverse(bs.m_bits.begin(), bs.m_bits.end());
 977.400 +            const block_width_type offs = bit_index(n);
 977.401 +            if (offs)
 977.402 +                bs >>= (bits_per_block - offs);
 977.403 +            bs.resize(n); // doesn't enlarge, so can't throw
 977.404 +            assert(bs.m_check_invariants());
 977.405 +        }
 977.406 +        inline void do_append(bool value) {
 977.407 +
 977.408 +            if (mask == 0) {
 977.409 +                bs.append(Block(0));
 977.410 +                current = &bs.m_highest_block();
 977.411 +                mask = Block(1) << (bits_per_block - 1);
 977.412 +            }
 977.413 +
 977.414 +            if(value)
 977.415 +                *current |= mask;
 977.416 +
 977.417 +            mask /= 2;
 977.418 +            ++n;
 977.419 +        }
 977.420 +        size_type get_count() const { return n; }
 977.421 +    };
 977.422 +
 977.423 +};
 977.424 +
 977.425 +#if BOOST_WORKAROUND( __IBMCPP__, <=600 )
 977.426 +
 977.427 +// Workaround for IBM's AIX platform.
 977.428 +// See http://comments.gmane.org/gmane.comp.lib.boost.user/15331
 977.429 +
 977.430 +template<typename Block, typename Allocator>
 977.431 +dynamic_bitset<Block, Allocator>::block_width_type const
 977.432 +dynamic_bitset<Block, Allocator>::bits_per_block;
 977.433 +
 977.434 +template<typename Block, typename Allocator>
 977.435 +dynamic_bitset<Block, Allocator>::block_width_type const
 977.436 +dynamic_bitset<Block, Allocator>::ulong_width;
 977.437 +
 977.438 +#endif
 977.439 +
 977.440 +// Global Functions:
 977.441 +
 977.442 +// comparison
 977.443 +template <typename Block, typename Allocator>
 977.444 +bool operator!=(const dynamic_bitset<Block, Allocator>& a,
 977.445 +                const dynamic_bitset<Block, Allocator>& b);
 977.446 +
 977.447 +template <typename Block, typename Allocator>
 977.448 +bool operator<=(const dynamic_bitset<Block, Allocator>& a,
 977.449 +                const dynamic_bitset<Block, Allocator>& b);
 977.450 +
 977.451 +template <typename Block, typename Allocator>
 977.452 +bool operator>(const dynamic_bitset<Block, Allocator>& a,
 977.453 +               const dynamic_bitset<Block, Allocator>& b);
 977.454 +
 977.455 +template <typename Block, typename Allocator>
 977.456 +bool operator>=(const dynamic_bitset<Block, Allocator>& a,
 977.457 +                const dynamic_bitset<Block, Allocator>& b);
 977.458 +
 977.459 +// stream operators
 977.460 +#ifdef BOOST_OLD_IOSTREAMS
 977.461 +template <typename Block, typename Allocator>
 977.462 +std::ostream& operator<<(std::ostream& os,
 977.463 +                         const dynamic_bitset<Block, Allocator>& b);
 977.464 +
 977.465 +template <typename Block, typename Allocator>
 977.466 +std::istream& operator>>(std::istream& is, dynamic_bitset<Block,Allocator>& b);
 977.467 +#else
 977.468 +// NOTE: Digital Mars wants the same template parameter names
 977.469 +//       here and in the definition! [last tested: 8.48.10]
 977.470 +//
 977.471 +template <typename Ch, typename Tr, typename Block, typename Alloc>
 977.472 +std::basic_ostream<Ch, Tr>&
 977.473 +operator<<(std::basic_ostream<Ch, Tr>& os,
 977.474 +           const dynamic_bitset<Block, Alloc>& b);
 977.475 +
 977.476 +template <typename Ch, typename Tr, typename Block, typename Alloc>
 977.477 +std::basic_istream<Ch, Tr>&
 977.478 +operator>>(std::basic_istream<Ch, Tr>& is,
 977.479 +           dynamic_bitset<Block, Alloc>& b);
 977.480 +#endif
 977.481 +
 977.482 +// bitset operations
 977.483 +template <typename Block, typename Allocator>
 977.484 +dynamic_bitset<Block, Allocator>
 977.485 +operator&(const dynamic_bitset<Block, Allocator>& b1,
 977.486 +          const dynamic_bitset<Block, Allocator>& b2);
 977.487 +
 977.488 +template <typename Block, typename Allocator>
 977.489 +dynamic_bitset<Block, Allocator>
 977.490 +operator|(const dynamic_bitset<Block, Allocator>& b1,
 977.491 +          const dynamic_bitset<Block, Allocator>& b2);
 977.492 +
 977.493 +template <typename Block, typename Allocator>
 977.494 +dynamic_bitset<Block, Allocator>
 977.495 +operator^(const dynamic_bitset<Block, Allocator>& b1,
 977.496 +          const dynamic_bitset<Block, Allocator>& b2);
 977.497 +
 977.498 +template <typename Block, typename Allocator>
 977.499 +dynamic_bitset<Block, Allocator>
 977.500 +operator-(const dynamic_bitset<Block, Allocator>& b1,
 977.501 +          const dynamic_bitset<Block, Allocator>& b2);
 977.502 +
 977.503 +// namespace scope swap
 977.504 +template<typename Block, typename Allocator>
 977.505 +void swap(dynamic_bitset<Block, Allocator>& b1,
 977.506 +          dynamic_bitset<Block, Allocator>& b2);
 977.507 +
 977.508 +
 977.509 +template <typename Block, typename Allocator, typename stringT>
 977.510 +void
 977.511 +to_string(const dynamic_bitset<Block, Allocator>& b, stringT & s); // gps
 977.512 +
 977.513 +template <typename Block, typename Allocator, typename BlockOutputIterator>
 977.514 +void
 977.515 +to_block_range(const dynamic_bitset<Block, Allocator>& b,
 977.516 +               BlockOutputIterator result);
 977.517 +
 977.518 +
 977.519 +// gps - check docs with Jeremy
 977.520 +//
 977.521 +template <typename BlockIterator, typename B, typename A>
 977.522 +inline void
 977.523 +from_block_range(BlockIterator first, BlockIterator last,
 977.524 +                 dynamic_bitset<B, A>& result)
 977.525 +{
 977.526 +    // PRE: distance(first, last) <= numblocks()
 977.527 +    std::copy (first, last, result.m_bits.begin()); //[gps]
 977.528 +}
 977.529 +
 977.530 +//=============================================================================
 977.531 +// dynamic_bitset implementation
 977.532 +
 977.533 +
 977.534 +//-----------------------------------------------------------------------------
 977.535 +// constructors, etc.
 977.536 +
 977.537 +template <typename Block, typename Allocator>
 977.538 +dynamic_bitset<Block, Allocator>::dynamic_bitset(const Allocator& alloc)
 977.539 +  : m_bits(alloc), m_num_bits(0)
 977.540 +{
 977.541 +
 977.542 +}
 977.543 +
 977.544 +template <typename Block, typename Allocator>
 977.545 +dynamic_bitset<Block, Allocator>::
 977.546 +dynamic_bitset(size_type num_bits, unsigned long value, const Allocator& alloc)
 977.547 +  : m_bits(calc_num_blocks(num_bits), Block(0), alloc),
 977.548 +    m_num_bits(num_bits)
 977.549 +{
 977.550 +
 977.551 +  if (num_bits == 0)
 977.552 +      return;
 977.553 +
 977.554 +  typedef unsigned long num_type;
 977.555 +
 977.556 +  // cut off all bits in value that have pos >= num_bits, if any
 977.557 +  if (num_bits < static_cast<size_type>(ulong_width)) {
 977.558 +      const num_type mask = (num_type(1) << num_bits) - 1;
 977.559 +      value &= mask;
 977.560 +  }
 977.561 +
 977.562 +  if (bits_per_block >= ulong_width) {
 977.563 +      m_bits[0] = static_cast<block_type>(value);
 977.564 +  }
 977.565 +  else {
 977.566 +      for(size_type i = 0; value != 0; ++i) {
 977.567 +
 977.568 +          m_bits[i] = static_cast<block_type>(value);
 977.569 +          value >>= BOOST_DYNAMIC_BITSET_WRAP_CONSTANT(bits_per_block);
 977.570 +      }
 977.571 +  }
 977.572 +
 977.573 +}
 977.574 +
 977.575 +// copy constructor
 977.576 +template <typename Block, typename Allocator>
 977.577 +inline dynamic_bitset<Block, Allocator>::
 977.578 +dynamic_bitset(const dynamic_bitset& b)
 977.579 +  : m_bits(b.m_bits), m_num_bits(b.m_num_bits)  // [gps]
 977.580 +{
 977.581 +
 977.582 +}
 977.583 +
 977.584 +template <typename Block, typename Allocator>
 977.585 +inline dynamic_bitset<Block, Allocator>::
 977.586 +~dynamic_bitset()
 977.587 +{
 977.588 +    assert(m_check_invariants());
 977.589 +}
 977.590 +
 977.591 +template <typename Block, typename Allocator>
 977.592 +inline void dynamic_bitset<Block, Allocator>::
 977.593 +swap(dynamic_bitset<Block, Allocator>& b) // no throw
 977.594 +{
 977.595 +    std::swap(m_bits, b.m_bits);
 977.596 +    std::swap(m_num_bits, b.m_num_bits);
 977.597 +}
 977.598 +
 977.599 +template <typename Block, typename Allocator>
 977.600 +dynamic_bitset<Block, Allocator>& dynamic_bitset<Block, Allocator>::
 977.601 +operator=(const dynamic_bitset<Block, Allocator>& b)
 977.602 +{
 977.603 +#if 0 // gps
 977.604 +    dynamic_bitset<Block, Allocator> tmp(b);
 977.605 +    this->swap(tmp);
 977.606 +    return *this;
 977.607 +#else
 977.608 +    m_bits = b.m_bits;
 977.609 +    m_num_bits = b.m_num_bits;
 977.610 +    return *this;
 977.611 +#endif
 977.612 +}
 977.613 +
 977.614 +template <typename Block, typename Allocator>
 977.615 +inline typename dynamic_bitset<Block, Allocator>::allocator_type
 977.616 +dynamic_bitset<Block, Allocator>::get_allocator() const
 977.617 +{
 977.618 +    return m_bits.get_allocator();
 977.619 +}
 977.620 +
 977.621 +//-----------------------------------------------------------------------------
 977.622 +// size changing operations
 977.623 +
 977.624 +template <typename Block, typename Allocator>
 977.625 +void dynamic_bitset<Block, Allocator>::
 977.626 +resize(size_type num_bits, bool value) // strong guarantee
 977.627 +{
 977.628 +
 977.629 +  const size_type old_num_blocks = num_blocks();
 977.630 +  const size_type required_blocks = calc_num_blocks(num_bits);
 977.631 +
 977.632 +  const block_type v = value? ~Block(0) : Block(0);
 977.633 +
 977.634 +  if (required_blocks != old_num_blocks) {
 977.635 +    m_bits.resize(required_blocks, v); // s.g. (copy) [gps]
 977.636 +  }
 977.637 +
 977.638 +
 977.639 +  // At this point:
 977.640 +  //
 977.641 +  //  - if the buffer was shrunk, there's nothing to do, except
 977.642 +  //    a call to m_zero_unused_bits()
 977.643 +  //
 977.644 +  //  - if it it is enlarged, all the (used) bits in the new blocks have
 977.645 +  //    the correct value, but we should also take care of the bits,
 977.646 +  //    if any, that were 'unused bits' before enlarging: if value == true,
 977.647 +  //    they must be set.
 977.648 +
 977.649 +  if (value && (num_bits > m_num_bits)) {
 977.650 +
 977.651 +    const size_type extra_bits = count_extra_bits(); // gps
 977.652 +    if (extra_bits) {
 977.653 +        assert(old_num_blocks >= 1 && old_num_blocks <= m_bits.size());
 977.654 +
 977.655 +        // Set them.
 977.656 +        m_bits[old_num_blocks - 1] |= (v << extra_bits); // gps
 977.657 +    }
 977.658 +
 977.659 +  }
 977.660 +
 977.661 +
 977.662 +
 977.663 +  m_num_bits = num_bits;
 977.664 +  m_zero_unused_bits();
 977.665 +
 977.666 +}
 977.667 +
 977.668 +template <typename Block, typename Allocator>
 977.669 +void dynamic_bitset<Block, Allocator>::
 977.670 +clear() // no throw
 977.671 +{
 977.672 +  m_bits.clear();
 977.673 +  m_num_bits = 0;
 977.674 +}
 977.675 +
 977.676 +
 977.677 +template <typename Block, typename Allocator>
 977.678 +void dynamic_bitset<Block, Allocator>::
 977.679 +push_back(bool bit)
 977.680 +{
 977.681 +  resize(size() + 1);
 977.682 +  set(size() - 1, bit);
 977.683 +}
 977.684 +
 977.685 +template <typename Block, typename Allocator>
 977.686 +void dynamic_bitset<Block, Allocator>::
 977.687 +append(Block value) // strong guarantee
 977.688 +{
 977.689 +    // G.P.S. to be reviewed...
 977.690 +
 977.691 +    const block_width_type r = count_extra_bits();
 977.692 +
 977.693 +    if (r == 0) {
 977.694 +        // the buffer is empty, or all blocks are filled
 977.695 +        m_bits.push_back(value);
 977.696 +    }
 977.697 +    else {
 977.698 +        m_bits.push_back(value >> (bits_per_block - r));
 977.699 +        m_bits[m_bits.size() - 2] |= (value << r); // m_bits.size() >= 2
 977.700 +    }
 977.701 +
 977.702 +    m_num_bits += bits_per_block;
 977.703 +    assert(m_check_invariants());
 977.704 +
 977.705 +}
 977.706 +
 977.707 +
 977.708 +//-----------------------------------------------------------------------------
 977.709 +// bitset operations
 977.710 +template <typename Block, typename Allocator>
 977.711 +dynamic_bitset<Block, Allocator>&
 977.712 +dynamic_bitset<Block, Allocator>::operator&=(const dynamic_bitset& rhs)
 977.713 +{
 977.714 +    assert(size() == rhs.size());
 977.715 +    for (size_type i = 0; i < num_blocks(); ++i)
 977.716 +        m_bits[i] &= rhs.m_bits[i];
 977.717 +    return *this;
 977.718 +}
 977.719 +
 977.720 +template <typename Block, typename Allocator>
 977.721 +dynamic_bitset<Block, Allocator>&
 977.722 +dynamic_bitset<Block, Allocator>::operator|=(const dynamic_bitset& rhs)
 977.723 +{
 977.724 +    assert(size() == rhs.size());
 977.725 +    for (size_type i = 0; i < num_blocks(); ++i)
 977.726 +        m_bits[i] |= rhs.m_bits[i];
 977.727 +    //m_zero_unused_bits();
 977.728 +    return *this;
 977.729 +}
 977.730 +
 977.731 +template <typename Block, typename Allocator>
 977.732 +dynamic_bitset<Block, Allocator>&
 977.733 +dynamic_bitset<Block, Allocator>::operator^=(const dynamic_bitset& rhs)
 977.734 +{
 977.735 +    assert(size() == rhs.size());
 977.736 +    for (size_type i = 0; i < this->num_blocks(); ++i)
 977.737 +        m_bits[i] ^= rhs.m_bits[i];
 977.738 +    //m_zero_unused_bits();
 977.739 +    return *this;
 977.740 +}
 977.741 +
 977.742 +template <typename Block, typename Allocator>
 977.743 +dynamic_bitset<Block, Allocator>&
 977.744 +dynamic_bitset<Block, Allocator>::operator-=(const dynamic_bitset& rhs)
 977.745 +{
 977.746 +    assert(size() == rhs.size());
 977.747 +    for (size_type i = 0; i < num_blocks(); ++i)
 977.748 +        m_bits[i] &= ~rhs.m_bits[i];
 977.749 +    //m_zero_unused_bits();
 977.750 +    return *this;
 977.751 +}
 977.752 +
 977.753 +//
 977.754 +// NOTE:
 977.755 +//  Note that the 'if (r != 0)' is crucial to avoid undefined
 977.756 +//  behavior when the left hand operand of >> isn't promoted to a
 977.757 +//  wider type (because rs would be too large).
 977.758 +//
 977.759 +template <typename Block, typename Allocator>
 977.760 +dynamic_bitset<Block, Allocator>&
 977.761 +dynamic_bitset<Block, Allocator>::operator<<=(size_type n)
 977.762 +{
 977.763 +    if (n >= m_num_bits)
 977.764 +        return reset();
 977.765 +    //else
 977.766 +    if (n > 0) {
 977.767 +
 977.768 +        size_type    const last = num_blocks() - 1;  // num_blocks() is >= 1
 977.769 +        size_type    const div  = n / bits_per_block; // div is <= last
 977.770 +        block_width_type const r = bit_index(n);
 977.771 +        block_type * const b    = &m_bits[0];
 977.772 +
 977.773 +        if (r != 0) {
 977.774 +
 977.775 +            block_width_type const rs = bits_per_block - r;
 977.776 +
 977.777 +            for (size_type i = last-div; i>0; --i) {
 977.778 +                b[i+div] = (b[i] << r) | (b[i-1] >> rs);
 977.779 +            }
 977.780 +            b[div] = b[0] << r;
 977.781 +
 977.782 +        }
 977.783 +        else {
 977.784 +            for (size_type i = last-div; i>0; --i) {
 977.785 +                b[i+div] = b[i];
 977.786 +            }
 977.787 +            b[div] = b[0];
 977.788 +        }
 977.789 +
 977.790 +
 977.791 +        // zero out div blocks at the less significant end
 977.792 +        std::fill_n(b, div, static_cast<block_type>(0));
 977.793 +
 977.794 +        // zero out any 1 bit that flowed into the unused part
 977.795 +        m_zero_unused_bits(); // thanks to Lester Gong
 977.796 +
 977.797 +
 977.798 +    }
 977.799 +
 977.800 +    return *this;
 977.801 +
 977.802 +
 977.803 +}
 977.804 +
 977.805 +
 977.806 +//
 977.807 +// NOTE:
 977.808 +//  see the comments to operator <<=
 977.809 +//
 977.810 +template <typename B, typename A>
 977.811 +dynamic_bitset<B, A> & dynamic_bitset<B, A>::operator>>=(size_type n) {
 977.812 +    if (n >= m_num_bits) {
 977.813 +        return reset();
 977.814 +    }
 977.815 +    //else
 977.816 +    if (n>0) {
 977.817 +
 977.818 +        size_type  const last  = num_blocks() - 1; // num_blocks() is >= 1
 977.819 +        size_type  const div   = n / bits_per_block;   // div is <= last
 977.820 +        block_width_type const r     = bit_index(n);
 977.821 +        block_type * const b   = &m_bits[0];
 977.822 +
 977.823 +
 977.824 +        if (r != 0) {
 977.825 +
 977.826 +            block_width_type const ls = bits_per_block - r;
 977.827 +
 977.828 +            for (size_type i = div; i < last; ++i) {
 977.829 +                b[i-div] = (b[i] >> r) | (b[i+1]  << ls);
 977.830 +            }
 977.831 +            // r bits go to zero
 977.832 +            b[last-div] = b[last] >> r;
 977.833 +        }
 977.834 +
 977.835 +        else {
 977.836 +            for (size_type i = div; i <= last; ++i) {
 977.837 +                b[i-div] = b[i];
 977.838 +            }
 977.839 +            // note the '<=': the last iteration 'absorbs'
 977.840 +            // b[last-div] = b[last] >> 0;
 977.841 +        }
 977.842 +
 977.843 +
 977.844 +
 977.845 +        // div blocks are zero filled at the most significant end
 977.846 +        std::fill_n(b + (num_blocks()-div), div, static_cast<block_type>(0));
 977.847 +    }
 977.848 +
 977.849 +    return *this;
 977.850 +}
 977.851 +
 977.852 +
 977.853 +template <typename Block, typename Allocator>
 977.854 +dynamic_bitset<Block, Allocator>
 977.855 +dynamic_bitset<Block, Allocator>::operator<<(size_type n) const
 977.856 +{
 977.857 +    dynamic_bitset r(*this);
 977.858 +    return r <<= n;
 977.859 +}
 977.860 +
 977.861 +template <typename Block, typename Allocator>
 977.862 +dynamic_bitset<Block, Allocator>
 977.863 +dynamic_bitset<Block, Allocator>::operator>>(size_type n) const
 977.864 +{
 977.865 +    dynamic_bitset r(*this);
 977.866 +    return r >>= n;
 977.867 +}
 977.868 +
 977.869 +
 977.870 +//-----------------------------------------------------------------------------
 977.871 +// basic bit operations
 977.872 +
 977.873 +template <typename Block, typename Allocator>
 977.874 +dynamic_bitset<Block, Allocator>&
 977.875 +dynamic_bitset<Block, Allocator>::set(size_type pos, bool val)
 977.876 +{
 977.877 +    // [gps]
 977.878 +    //
 977.879 +    // Below we have no set(size_type) function to call when
 977.880 +    // value == true; instead of using a helper, I think
 977.881 +    // overloading set (rather than giving it a default bool
 977.882 +    // argument) would be more elegant.
 977.883 +
 977.884 +    assert(pos < m_num_bits);
 977.885 +
 977.886 +    if (val)
 977.887 +        m_bits[block_index(pos)] |= bit_mask(pos);
 977.888 +    else
 977.889 +        reset(pos);
 977.890 +
 977.891 +    return *this;
 977.892 +}
 977.893 +
 977.894 +template <typename Block, typename Allocator>
 977.895 +dynamic_bitset<Block, Allocator>&
 977.896 +dynamic_bitset<Block, Allocator>::set()
 977.897 +{
 977.898 +  std::fill(m_bits.begin(), m_bits.end(), ~Block(0));
 977.899 +  m_zero_unused_bits();
 977.900 +  return *this;
 977.901 +}
 977.902 +
 977.903 +template <typename Block, typename Allocator>
 977.904 +dynamic_bitset<Block, Allocator>&
 977.905 +dynamic_bitset<Block, Allocator>::reset(size_type pos)
 977.906 +{
 977.907 +    assert(pos < m_num_bits);
 977.908 +    #if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x
 977.909 +    // CodeWarrior 8 generates incorrect code when the &=~ is compiled,
 977.910 +    // use the |^ variation instead.. <grafik>
 977.911 +    m_bits[block_index(pos)] |= bit_mask(pos);
 977.912 +    m_bits[block_index(pos)] ^= bit_mask(pos);
 977.913 +    #else
 977.914 +    m_bits[block_index(pos)] &= ~bit_mask(pos);
 977.915 +    #endif
 977.916 +    return *this;
 977.917 +}
 977.918 +
 977.919 +template <typename Block, typename Allocator>
 977.920 +dynamic_bitset<Block, Allocator>&
 977.921 +dynamic_bitset<Block, Allocator>::reset()
 977.922 +{
 977.923 +  std::fill(m_bits.begin(), m_bits.end(), Block(0));
 977.924 +  return *this;
 977.925 +}
 977.926 +
 977.927 +template <typename Block, typename Allocator>
 977.928 +dynamic_bitset<Block, Allocator>&
 977.929 +dynamic_bitset<Block, Allocator>::flip(size_type pos)
 977.930 +{
 977.931 +    assert(pos < m_num_bits);
 977.932 +    m_bits[block_index(pos)] ^= bit_mask(pos);
 977.933 +    return *this;
 977.934 +}
 977.935 +
 977.936 +template <typename Block, typename Allocator>
 977.937 +dynamic_bitset<Block, Allocator>&
 977.938 +dynamic_bitset<Block, Allocator>::flip()
 977.939 +{
 977.940 +    for (size_type i = 0; i < num_blocks(); ++i)
 977.941 +        m_bits[i] = ~m_bits[i];
 977.942 +    m_zero_unused_bits();
 977.943 +    return *this;
 977.944 +}
 977.945 +
 977.946 +template <typename Block, typename Allocator>
 977.947 +bool dynamic_bitset<Block, Allocator>::m_unchecked_test(size_type pos) const
 977.948 +{
 977.949 +    return (m_bits[block_index(pos)] & bit_mask(pos)) != 0;
 977.950 +}
 977.951 +
 977.952 +template <typename Block, typename Allocator>
 977.953 +bool dynamic_bitset<Block, Allocator>::test(size_type pos) const
 977.954 +{
 977.955 +    assert(pos < m_num_bits);
 977.956 +    return m_unchecked_test(pos);
 977.957 +}
 977.958 +
 977.959 +template <typename Block, typename Allocator>
 977.960 +bool dynamic_bitset<Block, Allocator>::any() const
 977.961 +{
 977.962 +    for (size_type i = 0; i < num_blocks(); ++i)
 977.963 +        if (m_bits[i])
 977.964 +            return true;
 977.965 +    return false;
 977.966 +}
 977.967 +
 977.968 +template <typename Block, typename Allocator>
 977.969 +inline bool dynamic_bitset<Block, Allocator>::none() const
 977.970 +{
 977.971 +    return !any();
 977.972 +}
 977.973 +
 977.974 +template <typename Block, typename Allocator>
 977.975 +dynamic_bitset<Block, Allocator>
 977.976 +dynamic_bitset<Block, Allocator>::operator~() const
 977.977 +{
 977.978 +    dynamic_bitset b(*this);
 977.979 +    b.flip();
 977.980 +    return b;
 977.981 +}
 977.982 +
 977.983 +
 977.984 +/*
 977.985 +
 977.986 +The following is the straightforward implementation of count(), which
 977.987 +we leave here in a comment for documentation purposes.
 977.988 +
 977.989 +template <typename Block, typename Allocator>
 977.990 +typename dynamic_bitset<Block, Allocator>::size_type
 977.991 +dynamic_bitset<Block, Allocator>::count() const
 977.992 +{
 977.993 +    size_type sum = 0;
 977.994 +    for (size_type i = 0; i != this->m_num_bits; ++i)
 977.995 +        if (test(i))
 977.996 +            ++sum;
 977.997 +    return sum;
 977.998 +}
 977.999 +
977.1000 +The actual algorithm uses a lookup table.
977.1001 +
977.1002 +
977.1003 +  The basic idea of the method is to pick up X bits at a time
977.1004 +  from the internal array of blocks and consider those bits as
977.1005 +  the binary representation of a number N. Then, to use a table
977.1006 +  of 1<<X elements where table[N] is the number of '1' digits
977.1007 +  in the binary representation of N (i.e. in our X bits).
977.1008 +
977.1009 +
977.1010 +  In this implementation X is 8 (but can be easily changed: you
977.1011 +  just have to modify the definition of table_width and shrink/enlarge
977.1012 +  the table accordingly - it could be useful, for instance, to expand
977.1013 +  the table to 512 elements on an implementation with 9-bit bytes) and
977.1014 +  the internal array of blocks is seen, if possible, as an array of bytes.
977.1015 +  In practice the "reinterpretation" as array of bytes is possible if and
977.1016 +  only if X >= CHAR_BIT and Block has no padding bits (that would be counted
977.1017 +  together with the "real ones" if we saw the array as array of bytes).
977.1018 +  Otherwise we simply 'extract' X bits at a time from each Block.
977.1019 +
977.1020 +*/
977.1021 +
977.1022 +
977.1023 +template <typename Block, typename Allocator>
977.1024 +typename dynamic_bitset<Block, Allocator>::size_type
977.1025 +dynamic_bitset<Block, Allocator>::count() const
977.1026 +{
977.1027 +    using namespace detail::dynamic_bitset_count_impl;
977.1028 +
977.1029 +    const bool no_padding = bits_per_block == CHAR_BIT * sizeof(Block);
977.1030 +    const bool enough_table_width = table_width >= CHAR_BIT;
977.1031 +
977.1032 +    typedef mode_to_type< (no_padding && enough_table_width ?
977.1033 +                          access_by_bytes : access_by_blocks) > m;
977.1034 +
977.1035 +    return do_count(m_bits.begin(), num_blocks(), Block(0), static_cast<m*>(0));
977.1036 +
977.1037 +}
977.1038 +
977.1039 +
977.1040 +//-----------------------------------------------------------------------------
977.1041 +// conversions
977.1042 +
977.1043 +
977.1044 +template <typename B, typename A, typename stringT>
977.1045 +void to_string_helper(const dynamic_bitset<B, A> & b, stringT & s,
977.1046 +                      bool dump_all)
977.1047 +{
977.1048 +    typedef typename stringT::traits_type Tr;
977.1049 +    typedef typename stringT::value_type  Ch;
977.1050 +
977.1051 +    BOOST_DYNAMIC_BITSET_CTYPE_FACET(Ch, fac, std::locale());
977.1052 +    const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0');
977.1053 +    const Ch one  = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
977.1054 +
977.1055 +    // Note that this function may access (when
977.1056 +    // dump_all == true) bits beyond position size() - 1
977.1057 +
977.1058 +    typedef typename dynamic_bitset<B, A>::size_type size_type;
977.1059 +
977.1060 +    const size_type len = dump_all?
977.1061 +         dynamic_bitset<B, A>::bits_per_block * b.num_blocks():
977.1062 +         b.size();
977.1063 +    s.assign (len, zero);
977.1064 +
977.1065 +    for (size_type i = 0; i < len; ++i) {
977.1066 +        if (b.m_unchecked_test(i))
977.1067 +            Tr::assign(s[len - 1 - i], one);
977.1068 +
977.1069 +    }
977.1070 +
977.1071 +}
977.1072 +
977.1073 +
977.1074 +// A comment similar to the one about the constructor from
977.1075 +// basic_string can be done here. Thanks to James Kanze for
977.1076 +// making me (Gennaro) realize this important separation of
977.1077 +// concerns issue, as well as many things about i18n.
977.1078 +//
977.1079 +template <typename Block, typename Allocator, typename stringT> // G.P.S.
977.1080 +inline void
977.1081 +to_string(const dynamic_bitset<Block, Allocator>& b, stringT& s)
977.1082 +{
977.1083 +    to_string_helper(b, s, false);
977.1084 +}
977.1085 +
977.1086 +
977.1087 +// Differently from to_string this function dumps out
977.1088 +// every bit of the internal representation (may be
977.1089 +// useful for debugging purposes)
977.1090 +//
977.1091 +template <typename B, typename A, typename stringT>
977.1092 +inline void
977.1093 +dump_to_string(const dynamic_bitset<B, A>& b, stringT& s) // G.P.S.
977.1094 +{
977.1095 +    to_string_helper(b, s, true /* =dump_all*/);
977.1096 +}
977.1097 +
977.1098 +template <typename Block, typename Allocator, typename BlockOutputIterator>
977.1099 +inline void
977.1100 +to_block_range(const dynamic_bitset<Block, Allocator>& b,
977.1101 +               BlockOutputIterator result)
977.1102 +{
977.1103 +    // note how this copies *all* bits, including the
977.1104 +    // unused ones in the last block (which are zero)
977.1105 +    std::copy(b.m_bits.begin(), b.m_bits.end(), result); // [gps]
977.1106 +}
977.1107 +
977.1108 +template <typename Block, typename Allocator>
977.1109 +unsigned long dynamic_bitset<Block, Allocator>::
977.1110 +to_ulong() const
977.1111 +{
977.1112 +
977.1113 +  if (m_num_bits == 0)
977.1114 +      return 0; // convention
977.1115 +
977.1116 +  // Check for overflows. This may be a performance burden on very
977.1117 +  // large bitsets but is required by the specification, sorry
977.1118 +  if (find_next(ulong_width - 1) != npos)
977.1119 +    throw std::overflow_error("boost::dynamic_bitset::to_ulong overflow");
977.1120 +
977.1121 +
977.1122 +  // Ok, from now on we can be sure there's no "on" bit beyond
977.1123 +  // the allowed positions
977.1124 +
977.1125 +  if (bits_per_block >= ulong_width)
977.1126 +      return m_bits[0];
977.1127 +
977.1128 +
977.1129 +  size_type last_block = block_index((std::min)(m_num_bits-1, // gps
977.1130 +                                    (size_type)(ulong_width-1)));
977.1131 +  unsigned long result = 0;
977.1132 +  for (size_type i = 0; i <= last_block; ++i) {
977.1133 +
977.1134 +    assert((size_type)bits_per_block * i < (size_type)ulong_width); // gps
977.1135 +
977.1136 +    unsigned long piece = m_bits[i];
977.1137 +    result |= (piece << (bits_per_block * i));
977.1138 +  }
977.1139 +
977.1140 +  return result;
977.1141 +
977.1142 +}
977.1143 +
977.1144 +
977.1145 +template <typename Block, typename Allocator>
977.1146 +inline typename dynamic_bitset<Block, Allocator>::size_type
977.1147 +dynamic_bitset<Block, Allocator>::size() const
977.1148 +{
977.1149 +    return m_num_bits;
977.1150 +}
977.1151 +
977.1152 +template <typename Block, typename Allocator>
977.1153 +inline typename dynamic_bitset<Block, Allocator>::size_type
977.1154 +dynamic_bitset<Block, Allocator>::num_blocks() const
977.1155 +{
977.1156 +    return m_bits.size();
977.1157 +}
977.1158 +
977.1159 +template <typename Block, typename Allocator>
977.1160 +inline typename dynamic_bitset<Block, Allocator>::size_type
977.1161 +dynamic_bitset<Block, Allocator>::max_size() const
977.1162 +{
977.1163 +    // Semantics of vector<>::max_size() aren't very clear
977.1164 +    // (see lib issue 197) and many library implementations
977.1165 +    // simply return dummy values, _unrelated_ to the underlying
977.1166 +    // allocator.
977.1167 +    //
977.1168 +    // Given these problems, I was tempted to not provide this
977.1169 +    // function at all but the user could need it if he provides
977.1170 +    // his own allocator.
977.1171 +    //
977.1172 +
977.1173 +    const size_type m = detail::vector_max_size_workaround(m_bits);
977.1174 +
977.1175 +    return m <= (size_type(-1)/bits_per_block) ?
977.1176 +        m * bits_per_block :
977.1177 +        size_type(-1);
977.1178 +}
977.1179 +
977.1180 +template <typename Block, typename Allocator>
977.1181 +inline bool dynamic_bitset<Block, Allocator>::empty() const
977.1182 +{
977.1183 +  return size() == 0;
977.1184 +}
977.1185 +
977.1186 +#if 0 // gps
977.1187 +template <typename Block, typename Allocator>
977.1188 +inline void dynamic_bitset<Block, Allocator>::reserve(size_type n)
977.1189 +{
977.1190 +    assert(n <= max_size()); // PRE - G.P.S.
977.1191 +    m_bits.reserve(calc_num_blocks(n));
977.1192 +}
977.1193 +
977.1194 +template <typename Block, typename Allocator>
977.1195 +typename dynamic_bitset<Block, Allocator>::size_type
977.1196 +dynamic_bitset<Block, Allocator>::capacity() const
977.1197 +{
977.1198 +    // capacity is m_bits.capacity() * bits_per_block
977.1199 +    // unless that one overflows
977.1200 +    const size_type m = static_cast<size_type>(-1);
977.1201 +    const size_type q = m / bits_per_block;
977.1202 +
977.1203 +    const size_type c = m_bits.capacity();
977.1204 +
977.1205 +    return c <= q ?
977.1206 +        c * bits_per_block :
977.1207 +        m;
977.1208 +}
977.1209 +#endif
977.1210 +
977.1211 +template <typename Block, typename Allocator>
977.1212 +bool dynamic_bitset<Block, Allocator>::
977.1213 +is_subset_of(const dynamic_bitset<Block, Allocator>& a) const
977.1214 +{
977.1215 +    assert(size() == a.size());
977.1216 +    for (size_type i = 0; i < num_blocks(); ++i)
977.1217 +        if (m_bits[i] & ~a.m_bits[i])
977.1218 +            return false;
977.1219 +    return true;
977.1220 +}
977.1221 +
977.1222 +template <typename Block, typename Allocator>
977.1223 +bool dynamic_bitset<Block, Allocator>::
977.1224 +is_proper_subset_of(const dynamic_bitset<Block, Allocator>& a) const
977.1225 +{
977.1226 +    assert(size() == a.size());
977.1227 +    bool proper = false;
977.1228 +    for (size_type i = 0; i < num_blocks(); ++i) {
977.1229 +        Block bt = m_bits[i], ba = a.m_bits[i];
977.1230 +        if (ba & ~bt)
977.1231 +            proper = true;
977.1232 +        if (bt & ~ba)
977.1233 +            return false;
977.1234 +    }
977.1235 +    return proper;
977.1236 +}
977.1237 +
977.1238 +template <typename Block, typename Allocator>
977.1239 +bool dynamic_bitset<Block, Allocator>::intersects(const dynamic_bitset & b) const
977.1240 +{
977.1241 +    size_type common_blocks = num_blocks() < b.num_blocks()
977.1242 +                              ? num_blocks() : b.num_blocks();
977.1243 +
977.1244 +    for(size_type i = 0; i < common_blocks; ++i) {
977.1245 +        if(m_bits[i] & b.m_bits[i])
977.1246 +            return true;
977.1247 +    }
977.1248 +    return false;
977.1249 +}
977.1250 +
977.1251 +// --------------------------------
977.1252 +// lookup
977.1253 +
977.1254 +
977.1255 +// look for the first bit "on", starting
977.1256 +// from the block with index first_block
977.1257 +//
977.1258 +template <typename Block, typename Allocator>
977.1259 +typename dynamic_bitset<Block, Allocator>::size_type
977.1260 +dynamic_bitset<Block, Allocator>::m_do_find_from(size_type first_block) const
977.1261 +{
977.1262 +    size_type i = first_block;
977.1263 +
977.1264 +    // skip null blocks
977.1265 +    while (i < num_blocks() && m_bits[i] == 0)
977.1266 +        ++i;
977.1267 +
977.1268 +    if (i >= num_blocks())
977.1269 +        return npos; // not found
977.1270 +
977.1271 +    return i * bits_per_block + boost::lowest_bit(m_bits[i]);
977.1272 +
977.1273 +}
977.1274 +
977.1275 +
977.1276 +template <typename Block, typename Allocator>
977.1277 +typename dynamic_bitset<Block, Allocator>::size_type
977.1278 +dynamic_bitset<Block, Allocator>::find_first() const
977.1279 +{
977.1280 +    return m_do_find_from(0);
977.1281 +}
977.1282 +
977.1283 +
977.1284 +template <typename Block, typename Allocator>
977.1285 +typename dynamic_bitset<Block, Allocator>::size_type
977.1286 +dynamic_bitset<Block, Allocator>::find_next(size_type pos) const
977.1287 +{
977.1288 +
977.1289 +    const size_type sz = size();
977.1290 +    if (pos >= (sz-1) || sz == 0)
977.1291 +        return npos;
977.1292 +
977.1293 +    ++pos;
977.1294 +
977.1295 +    const size_type blk = block_index(pos);
977.1296 +    const block_width_type ind = bit_index(pos);
977.1297 +
977.1298 +    // mask out bits before pos
977.1299 +    const Block fore = m_bits[blk] & ( ~Block(0) << ind );
977.1300 +
977.1301 +    return fore?
977.1302 +        blk * bits_per_block + lowest_bit(fore)
977.1303 +        :
977.1304 +        m_do_find_from(blk + 1);
977.1305 +
977.1306 +}
977.1307 +
977.1308 +
977.1309 +
977.1310 +//-----------------------------------------------------------------------------
977.1311 +// comparison
977.1312 +
977.1313 +template <typename Block, typename Allocator>
977.1314 +bool operator==(const dynamic_bitset<Block, Allocator>& a,
977.1315 +                const dynamic_bitset<Block, Allocator>& b)
977.1316 +{
977.1317 +    return (a.m_num_bits == b.m_num_bits)
977.1318 +           && (a.m_bits == b.m_bits); // [gps]
977.1319 +}
977.1320 +
977.1321 +template <typename Block, typename Allocator>
977.1322 +inline bool operator!=(const dynamic_bitset<Block, Allocator>& a,
977.1323 +                       const dynamic_bitset<Block, Allocator>& b)
977.1324 +{
977.1325 +    return !(a == b);
977.1326 +}
977.1327 +
977.1328 +template <typename Block, typename Allocator>
977.1329 +bool operator<(const dynamic_bitset<Block, Allocator>& a,
977.1330 +               const dynamic_bitset<Block, Allocator>& b)
977.1331 +{
977.1332 +    assert(a.size() == b.size());
977.1333 +    typedef typename dynamic_bitset<Block, Allocator>::size_type size_type;
977.1334 +
977.1335 +    if (a.size() == 0)
977.1336 +      return false;
977.1337 +
977.1338 +    // Since we are storing the most significant bit
977.1339 +    // at pos == size() - 1, we need to do the comparisons in reverse.
977.1340 +
977.1341 +    // Compare a block at a time
977.1342 +    for (size_type i = a.num_blocks() - 1; i > 0; --i)
977.1343 +      if (a.m_bits[i] < b.m_bits[i])
977.1344 +        return true;
977.1345 +      else if (a.m_bits[i] > b.m_bits[i])
977.1346 +        return false;
977.1347 +
977.1348 +    if (a.m_bits[0] < b.m_bits[0])
977.1349 +      return true;
977.1350 +    else
977.1351 +      return false;
977.1352 +}
977.1353 +
977.1354 +template <typename Block, typename Allocator>
977.1355 +inline bool operator<=(const dynamic_bitset<Block, Allocator>& a,
977.1356 +                       const dynamic_bitset<Block, Allocator>& b)
977.1357 +{
977.1358 +    return !(a > b);
977.1359 +}
977.1360 +
977.1361 +template <typename Block, typename Allocator>
977.1362 +inline bool operator>(const dynamic_bitset<Block, Allocator>& a,
977.1363 +                      const dynamic_bitset<Block, Allocator>& b)
977.1364 +{
977.1365 +    return b < a;
977.1366 +}
977.1367 +
977.1368 +template <typename Block, typename Allocator>
977.1369 +inline bool operator>=(const dynamic_bitset<Block, Allocator>& a,
977.1370 +                       const dynamic_bitset<Block, Allocator>& b)
977.1371 +{
977.1372 +    return !(a < b);
977.1373 +}
977.1374 +
977.1375 +//-----------------------------------------------------------------------------
977.1376 +// stream operations
977.1377 +
977.1378 +#ifdef BOOST_OLD_IOSTREAMS
977.1379 +template < typename Block, typename Alloc>
977.1380 +std::ostream&
977.1381 +operator<<(std::ostream& os, const dynamic_bitset<Block, Alloc>& b)
977.1382 +{
977.1383 +    // NOTE: since this is aimed at "classic" iostreams, exception
977.1384 +    // masks on the stream are not supported. The library that
977.1385 +    // ships with gcc 2.95 has an exceptions() member function but
977.1386 +    // nothing is actually implemented; not even the class ios::failure.
977.1387 +
977.1388 +    using namespace std;
977.1389 +
977.1390 +    const ios::iostate ok = ios::goodbit;
977.1391 +    ios::iostate err = ok;
977.1392 +
977.1393 +    if (os.opfx()) { // gps
977.1394 +
977.1395 +        //try
977.1396 +        typedef typename dynamic_bitset<Block, Alloc>::size_type bitsetsize_type;
977.1397 +
977.1398 +        const bitsetsize_type sz = b.size();
977.1399 +        std::streambuf * buf = os.rdbuf();
977.1400 +        size_t npad = os.width() <= 0  // careful: os.width() is signed (and can be < 0)
977.1401 +            || (bitsetsize_type) os.width() <= sz? 0 : os.width() - sz; //- gps
977.1402 +
977.1403 +        const char fill_char = os.fill();
977.1404 +        const ios::fmtflags adjustfield = os.flags() & ios::adjustfield;
977.1405 +
977.1406 +        // if needed fill at left; pad is decresed along the way
977.1407 +        if (adjustfield != ios::left) {
977.1408 +            for (; 0 < npad; --npad)
977.1409 +                if (fill_char != buf->sputc(fill_char)) {
977.1410 +                    err |= ios::failbit;   // gps
977.1411 +                    break;
977.1412 +                }
977.1413 +        }
977.1414 +
977.1415 +        if (err == ok) {
977.1416 +            // output the bitset
977.1417 +            for (bitsetsize_type i = b.size(); 0 < i; --i) {// G.P.S.
977.1418 +                const char dig = b.test(i-1)? '1' : '0';
977.1419 +                if (EOF == buf->sputc(dig)) { // ok?? gps
977.1420 +                    err |= ios::failbit;
977.1421 +                    break;
977.1422 +                }
977.1423 +            }
977.1424 +        }
977.1425 +
977.1426 +        if (err == ok) {
977.1427 +            // if needed fill at right
977.1428 +            for (; 0 < npad; --npad) {
977.1429 +                if (fill_char != buf->sputc(fill_char)) {
977.1430 +                    err |= ios::failbit;
977.1431 +                    break;
977.1432 +                }
977.1433 +            }
977.1434 +        }
977.1435 +
977.1436 +        os.osfx();
977.1437 +        os.width(0);
977.1438 +
977.1439 +    } // if opfx
977.1440 +
977.1441 +    if(err != ok)
977.1442 +        os.setstate(err); // assume this does NOT throw - gps
977.1443 +    return os;
977.1444 +
977.1445 +}
977.1446 +#else
977.1447 +
977.1448 +template <typename Ch, typename Tr, typename Block, typename Alloc>
977.1449 +std::basic_ostream<Ch, Tr>&
977.1450 +operator<<(std::basic_ostream<Ch, Tr>& os,
977.1451 +           const dynamic_bitset<Block, Alloc>& b)
977.1452 +{
977.1453 +
977.1454 +    using namespace std;
977.1455 +
977.1456 +    const ios_base::iostate ok = ios_base::goodbit;
977.1457 +    ios_base::iostate err = ok;
977.1458 +
977.1459 +    typename basic_ostream<Ch, Tr>::sentry cerberos(os);
977.1460 +    if (cerberos) {
977.1461 +
977.1462 +        BOOST_DYNAMIC_BITSET_CTYPE_FACET(Ch, fac, os.getloc());
977.1463 +        const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0');
977.1464 +        const Ch one  = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
977.1465 +
977.1466 +        try {
977.1467 +
977.1468 +            typedef typename dynamic_bitset<Block, Alloc>::size_type bitsetsize_type;
977.1469 +            typedef basic_streambuf<Ch, Tr> buffer_type; // G.P.S.
977.1470 +
977.1471 +            buffer_type * buf = os.rdbuf();
977.1472 +            size_t npad = os.width() <= 0  // careful: os.width() is signed (and can be < 0)
977.1473 +                || (bitsetsize_type) os.width() <= b.size()? 0 : os.width() - b.size(); //- G.P.S.
977.1474 +
977.1475 +            const Ch fill_char = os.fill();
977.1476 +            const ios_base::fmtflags adjustfield = os.flags() & ios_base::adjustfield;
977.1477 +
977.1478 +            // if needed fill at left; pad is decresed along the way
977.1479 +            if (adjustfield != ios_base::left) {
977.1480 +                for (; 0 < npad; --npad)
977.1481 +                    if (Tr::eq_int_type(Tr::eof(), buf->sputc(fill_char))) {
977.1482 +                          err |= ios_base::failbit;   // G.P.S.
977.1483 +                          break;
977.1484 +                    }
977.1485 +            }
977.1486 +
977.1487 +            if (err == ok) {
977.1488 +                // output the bitset
977.1489 +                for (bitsetsize_type i = b.size(); 0 < i; --i) {// G.P.S.
977.1490 +                    typename buffer_type::int_type
977.1491 +                        ret = buf->sputc(b.test(i-1)? one : zero);
977.1492 +                    if (Tr::eq_int_type(Tr::eof(), ret)) {
977.1493 +                        err |= ios_base::failbit;
977.1494 +                        break;
977.1495 +                    }
977.1496 +                }
977.1497 +            }
977.1498 +
977.1499 +            if (err == ok) {
977.1500 +                // if needed fill at right
977.1501 +                for (; 0 < npad; --npad) {
977.1502 +                    if (Tr::eq_int_type(Tr::eof(), buf->sputc(fill_char))) {
977.1503 +                        err |= ios_base::failbit;
977.1504 +                        break;
977.1505 +                    }
977.1506 +                }
977.1507 +            }
977.1508 +
977.1509 +
977.1510 +            os.width(0);
977.1511 +
977.1512 +        } catch (...) { // see std 27.6.1.1/4
977.1513 +            bool rethrow = false;
977.1514 +            try { os.setstate(ios_base::failbit); } catch (...) { rethrow = true; }
977.1515 +
977.1516 +            if (rethrow)
977.1517 +                throw;
977.1518 +        }
977.1519 +    }
977.1520 +
977.1521 +    if(err != ok)
977.1522 +        os.setstate(err); // may throw exception
977.1523 +    return os;
977.1524 +
977.1525 +}
977.1526 +#endif
977.1527 +
977.1528 +
977.1529 +#ifdef BOOST_OLD_IOSTREAMS
977.1530 +
977.1531 +    // gps - A sentry-like class that calls isfx in its
977.1532 +    // destructor. Necessary because bit_appender::do_append may throw.
977.1533 +    class pseudo_sentry {
977.1534 +        std::istream & m_r;
977.1535 +        const bool m_ok;
977.1536 +    public:
977.1537 +        explicit pseudo_sentry(std::istream & r) : m_r(r), m_ok(r.ipfx(0)) { }
977.1538 +        ~pseudo_sentry() { m_r.isfx(); }
977.1539 +        operator bool() const { return m_ok; }
977.1540 +    };
977.1541 +
977.1542 +template <typename Block, typename Alloc>
977.1543 +std::istream&
977.1544 +operator>>(std::istream& is, dynamic_bitset<Block, Alloc>& b)
977.1545 +{
977.1546 +
977.1547 +// Extractor for classic IO streams (libstdc++ < 3.0)
977.1548 +// ----------------------------------------------------//
977.1549 +//  It's assumed that the stream buffer functions, and
977.1550 +//  the stream's setstate() _cannot_ throw.
977.1551 +
977.1552 +
977.1553 +    typedef dynamic_bitset<Block, Alloc> bitset_type;
977.1554 +    typedef typename bitset_type::size_type size_type;
977.1555 +
977.1556 +    std::ios::iostate err = std::ios::goodbit; // gps
977.1557 +    pseudo_sentry cerberos(is); // skips whitespaces
977.1558 +    if(cerberos) {
977.1559 +
977.1560 +        b.clear();
977.1561 +
977.1562 +        const std::streamsize w = is.width();
977.1563 +        const size_type limit = w > 0 && static_cast<size_type>(w) < b.max_size()// gps
977.1564 +                                                         ? w : b.max_size();
977.1565 +        typename bitset_type::bit_appender appender(b);
977.1566 +        std::streambuf * buf = is.rdbuf();
977.1567 +        for(int c = buf->sgetc(); appender.get_count() < limit; c = buf->snextc() ) {
977.1568 +
977.1569 +            if (c == EOF) {
977.1570 +                err |= std::ios::eofbit; // G.P.S.
977.1571 +                break;
977.1572 +            }
977.1573 +            else if (char(c) != '0' && char(c) != '1')
977.1574 +                break; // non digit character
977.1575 +
977.1576 +            else {
977.1577 +                try {
977.1578 +                    //throw std::bad_alloc(); // gps
977.1579 +                    appender.do_append(char(c) == '1');
977.1580 +                }
977.1581 +                catch(...) {
977.1582 +                    is.setstate(std::ios::failbit); // assume this can't throw
977.1583 +                    throw;
977.1584 +                }
977.1585 +            }
977.1586 +
977.1587 +        } // for
977.1588 +    }
977.1589 +
977.1590 +    is.width(0); // gps
977.1591 +    if (b.size() == 0)
977.1592 +        err |= std::ios::failbit;
977.1593 +    if (err != std::ios::goodbit) // gps
977.1594 +        is.setstate (err); // may throw
977.1595 +
977.1596 +    return is;
977.1597 +}
977.1598 +
977.1599 +#else // BOOST_OLD_IOSTREAMS
977.1600 +
977.1601 +template <typename Ch, typename Tr, typename Block, typename Alloc>
977.1602 +std::basic_istream<Ch, Tr>&
977.1603 +operator>>(std::basic_istream<Ch, Tr>& is, dynamic_bitset<Block, Alloc>& b)
977.1604 +{
977.1605 +
977.1606 +    using namespace std;
977.1607 +
977.1608 +    typedef dynamic_bitset<Block, Alloc> bitset_type;
977.1609 +    typedef typename bitset_type::size_type size_type;
977.1610 +
977.1611 +    const streamsize w = is.width();
977.1612 +    const size_type limit = 0 < w && static_cast<size_type>(w) < b.max_size()? // gps
977.1613 +                                         w : b.max_size();
977.1614 +
977.1615 +    ios_base::iostate err = ios_base::goodbit; // gps
977.1616 +    typename basic_istream<Ch, Tr>::sentry cerberos(is); // skips whitespaces
977.1617 +    if(cerberos) {
977.1618 +
977.1619 +        // in accordance with prop. resol. of lib DR 303 [last checked 4 Feb 2004]
977.1620 +        BOOST_DYNAMIC_BITSET_CTYPE_FACET(Ch, fac, is.getloc());
977.1621 +        const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0');
977.1622 +        const Ch one  = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
977.1623 +
977.1624 +        b.clear();
977.1625 +        try {
977.1626 +            typename bitset_type::bit_appender appender(b);
977.1627 +            basic_streambuf <Ch, Tr> * buf = is.rdbuf();
977.1628 +            typename Tr::int_type c = buf->sgetc(); // G.P.S.
977.1629 +            for( ; appender.get_count() < limit; c = buf->snextc() ) {
977.1630 +
977.1631 +                if (Tr::eq_int_type(Tr::eof(), c)) {
977.1632 +                    err |= ios_base::eofbit; // G.P.S.
977.1633 +                    break;
977.1634 +                }
977.1635 +                else {
977.1636 +                    const Ch to_c = Tr::to_char_type(c);
977.1637 +                    const bool is_one = Tr::eq(to_c, one);
977.1638 +
977.1639 +                    if (!is_one && !Tr::eq(to_c, zero))
977.1640 +                        break; // non digit character
977.1641 +
977.1642 +                    appender.do_append(is_one);
977.1643 +
977.1644 +                }
977.1645 +
977.1646 +            } // for
977.1647 +        }
977.1648 +        catch (...) {
977.1649 +            // catches from stream buf, or from vector:
977.1650 +            //
977.1651 +            // bits_stored bits have been extracted and stored, and
977.1652 +            // either no further character is extractable or we can't
977.1653 +            // append to the underlying vector (out of memory) gps
977.1654 +
977.1655 +            bool rethrow = false;   // see std 27.6.1.1/4
977.1656 +            try { is.setstate(ios_base::badbit); }
977.1657 +            catch(...) { rethrow = true; }
977.1658 +
977.1659 +            if (rethrow)
977.1660 +                throw;
977.1661 +
977.1662 +        }
977.1663 +    }
977.1664 +
977.1665 +    is.width(0); // gps
977.1666 +    if (b.size() == 0 /*|| !cerberos*/)
977.1667 +        err |= ios_base::failbit;
977.1668 +    if (err != ios_base::goodbit) // gps
977.1669 +        is.setstate (err); // may throw
977.1670 +
977.1671 +    return is;
977.1672 +
977.1673 +}
977.1674 +
977.1675 +
977.1676 +#endif
977.1677 +
977.1678 +
977.1679 +//-----------------------------------------------------------------------------
977.1680 +// bitset operations
977.1681 +
977.1682 +template <typename Block, typename Allocator>
977.1683 +dynamic_bitset<Block, Allocator>
977.1684 +operator&(const dynamic_bitset<Block, Allocator>& x,
977.1685 +          const dynamic_bitset<Block, Allocator>& y)
977.1686 +{
977.1687 +    dynamic_bitset<Block, Allocator> b(x);
977.1688 +    return b &= y;
977.1689 +}
977.1690 +
977.1691 +template <typename Block, typename Allocator>
977.1692 +dynamic_bitset<Block, Allocator>
977.1693 +operator|(const dynamic_bitset<Block, Allocator>& x,
977.1694 +          const dynamic_bitset<Block, Allocator>& y)
977.1695 +{
977.1696 +    dynamic_bitset<Block, Allocator> b(x);
977.1697 +    return b |= y;
977.1698 +}
977.1699 +
977.1700 +template <typename Block, typename Allocator>
977.1701 +dynamic_bitset<Block, Allocator>
977.1702 +operator^(const dynamic_bitset<Block, Allocator>& x,
977.1703 +          const dynamic_bitset<Block, Allocator>& y)
977.1704 +{
977.1705 +    dynamic_bitset<Block, Allocator> b(x);
977.1706 +    return b ^= y;
977.1707 +}
977.1708 +
977.1709 +template <typename Block, typename Allocator>
977.1710 +dynamic_bitset<Block, Allocator>
977.1711 +operator-(const dynamic_bitset<Block, Allocator>& x,
977.1712 +          const dynamic_bitset<Block, Allocator>& y)
977.1713 +{
977.1714 +    dynamic_bitset<Block, Allocator> b(x);
977.1715 +    return b -= y;
977.1716 +}
977.1717 +
977.1718 +//-----------------------------------------------------------------------------
977.1719 +// namespace scope swap
977.1720 +
977.1721 +template<typename Block, typename Allocator>
977.1722 +inline void
977.1723 +swap(dynamic_bitset<Block, Allocator>& left,
977.1724 +     dynamic_bitset<Block, Allocator>& right) // no throw
977.1725 +{
977.1726 +    left.swap(right); // gps
977.1727 +}
977.1728 +
977.1729 +
977.1730 +//-----------------------------------------------------------------------------
977.1731 +// private (on conforming compilers) member functions
977.1732 +
977.1733 +
977.1734 +template <typename Block, typename Allocator>
977.1735 +inline typename dynamic_bitset<Block, Allocator>::size_type
977.1736 +dynamic_bitset<Block, Allocator>::calc_num_blocks(size_type num_bits)
977.1737 +{
977.1738 +    return num_bits / bits_per_block
977.1739 +           + static_cast<int>( num_bits % bits_per_block != 0 );
977.1740 +}
977.1741 +
977.1742 +// gives a reference to the highest block
977.1743 +//
977.1744 +template <typename Block, typename Allocator>
977.1745 +inline Block& dynamic_bitset<Block, Allocator>::m_highest_block()
977.1746 +{
977.1747 +    return const_cast<Block &>
977.1748 +           (static_cast<const dynamic_bitset *>(this)->m_highest_block());
977.1749 +}
977.1750 +
977.1751 +// gives a const-reference to the highest block
977.1752 +//
977.1753 +template <typename Block, typename Allocator>
977.1754 +inline const Block& dynamic_bitset<Block, Allocator>::m_highest_block() const
977.1755 +{
977.1756 +    assert(size() > 0 && num_blocks() > 0);
977.1757 +    return m_bits.back();
977.1758 +}
977.1759 +
977.1760 +
977.1761 +// If size() is not a multiple of bits_per_block
977.1762 +// then not all the bits in the last block are used.
977.1763 +// This function resets the unused bits (convenient
977.1764 +// for the implementation of many member functions)
977.1765 +//
977.1766 +template <typename Block, typename Allocator>
977.1767 +inline void dynamic_bitset<Block, Allocator>::m_zero_unused_bits()
977.1768 +{
977.1769 +    assert (num_blocks() == calc_num_blocks(m_num_bits));
977.1770 +
977.1771 +    // if != 0 this is the number of bits used in the last block
977.1772 +    const block_width_type extra_bits = count_extra_bits();
977.1773 +
977.1774 +    if (extra_bits != 0)
977.1775 +        m_highest_block() &= ~(~static_cast<Block>(0) << extra_bits);
977.1776 +
977.1777 +}
977.1778 +
977.1779 +// check class invariants
977.1780 +template <typename Block, typename Allocator>
977.1781 +bool dynamic_bitset<Block, Allocator>::m_check_invariants() const
977.1782 +{
977.1783 +    const block_width_type extra_bits = count_extra_bits();
977.1784 +    if (extra_bits > 0) {
977.1785 +        block_type const mask = (~static_cast<Block>(0) << extra_bits);
977.1786 +        if ((m_highest_block() & mask) != 0)
977.1787 +            return false;
977.1788 +    }
977.1789 +    if (m_bits.size() > m_bits.capacity() || num_blocks() != calc_num_blocks(size()))
977.1790 +        return false;
977.1791 +
977.1792 +    return true;
977.1793 +
977.1794 +}
977.1795 +
977.1796 +
977.1797 +} // namespace boost
977.1798 +
977.1799 +
977.1800 +#undef BOOST_BITSET_CHAR
977.1801 +
977.1802 +#endif // include guard
977.1803 +
   978.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   978.2 +++ b/epoc32/include/stdapis/boost/detail/iterator.hpp	Wed Mar 31 12:27:01 2010 +0100
   978.3 @@ -0,0 +1,128 @@
   978.4 +// Boost.Range library
   978.5 +//
   978.6 +//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
   978.7 +//  distribution is subject to the Boost Software License, Version
   978.8 +//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
   978.9 +//  http://www.boost.org/LICENSE_1_0.txt)
  978.10 +//
  978.11 +// For more information, see http://www.boost.org/libs/range/
  978.12 +//
  978.13 +
  978.14 +#ifndef BOOST_RANGE_ITERATOR_HPP
  978.15 +#define BOOST_RANGE_ITERATOR_HPP
  978.16 +
  978.17 +#if defined(_MSC_VER) && (_MSC_VER >= 1200)
  978.18 +# pragma once
  978.19 +#endif
  978.20 +
  978.21 +#include <boost/range/config.hpp>
  978.22 +
  978.23 +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  978.24 +#include <boost/range/detail/iterator.hpp>
  978.25 +#else
  978.26 +
  978.27 +#include <boost/iterator/iterator_traits.hpp>
  978.28 +#include <cstddef>
  978.29 +#include <utility>
  978.30 +
  978.31 +namespace boost
  978.32 +{
  978.33 +    //////////////////////////////////////////////////////////////////////////
  978.34 +    // default
  978.35 +    //////////////////////////////////////////////////////////////////////////
  978.36 +    
  978.37 +    template< typename C >
  978.38 +    struct range_iterator
  978.39 +    {
  978.40 +        typedef BOOST_DEDUCED_TYPENAME C::iterator type;
  978.41 +    };
  978.42 +    
  978.43 +    //////////////////////////////////////////////////////////////////////////
  978.44 +    // pair
  978.45 +    //////////////////////////////////////////////////////////////////////////
  978.46 +
  978.47 +    template< typename Iterator >
  978.48 +    struct range_iterator< std::pair<Iterator,Iterator> >
  978.49 +    {
  978.50 +        typedef Iterator type;
  978.51 +    };
  978.52 +    
  978.53 +    template< typename Iterator >
  978.54 +    struct range_iterator< const std::pair<Iterator,Iterator> >
  978.55 +    {
  978.56 +        typedef Iterator type;
  978.57 +    };
  978.58 +
  978.59 +    //////////////////////////////////////////////////////////////////////////
  978.60 +    // array
  978.61 +    //////////////////////////////////////////////////////////////////////////
  978.62 +
  978.63 +    template< typename T, std::size_t sz >
  978.64 +    struct range_iterator< T[sz] >
  978.65 +    {
  978.66 +        typedef T* type;
  978.67 +    };
  978.68 +
  978.69 +    template< typename T, std::size_t sz >
  978.70 +    struct range_iterator< const T[sz] >
  978.71 +    {
  978.72 +        typedef const T* type;
  978.73 +    };
  978.74 +
  978.75 +    //////////////////////////////////////////////////////////////////////////
  978.76 +    // string
  978.77 +    //////////////////////////////////////////////////////////////////////////
  978.78 +
  978.79 +    template<>
  978.80 +    struct range_iterator< char* >
  978.81 +    {
  978.82 +        typedef char* type;
  978.83 +    };
  978.84 +
  978.85 +    template<>
  978.86 +    struct range_iterator< wchar_t* >
  978.87 +    {
  978.88 +        typedef wchar_t* type;
  978.89 +    };
  978.90 +
  978.91 +    template<>
  978.92 +    struct range_iterator< const char* >
  978.93 +    {
  978.94 +        typedef const char* type;
  978.95 +    };
  978.96 +
  978.97 +    template<>
  978.98 +    struct range_iterator< const wchar_t* >
  978.99 +    {
 978.100 +        typedef const wchar_t* type;
 978.101 +    };
 978.102 +
 978.103 +    template<>
 978.104 +    struct range_iterator< char* const >
 978.105 +    {
 978.106 +        typedef char* type;
 978.107 +    };
 978.108 +
 978.109 +    template<>
 978.110 +    struct range_iterator< wchar_t* const >
 978.111 +    {
 978.112 +        typedef wchar_t* type;
 978.113 +    };
 978.114 +
 978.115 +    template<>
 978.116 +    struct range_iterator< const char* const >
 978.117 +    {
 978.118 +        typedef const char* type;
 978.119 +    };
 978.120 +
 978.121 +    template<>
 978.122 +    struct range_iterator< const wchar_t* const >
 978.123 +    {
 978.124 +        typedef const wchar_t* type;
 978.125 +    };
 978.126 +
 978.127 +} // namespace boost
 978.128 +
 978.129 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 978.130 +
 978.131 +#endif
   979.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   979.2 +++ b/epoc32/include/stdapis/boost/detail/workaround.hpp	Wed Mar 31 12:27:01 2010 +0100
   979.3 @@ -0,0 +1,19 @@
   979.4 +
   979.5 +#ifndef BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
   979.6 +#define BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
   979.7 +
   979.8 +// Copyright Aleksey Gurtovoy 2002-2004
   979.9 +//
  979.10 +// Distributed under the Boost Software License, Version 1.0. 
  979.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
  979.12 +// http://www.boost.org/LICENSE_1_0.txt)
  979.13 +//
  979.14 +// See http://www.boost.org/libs/mpl for documentation.
  979.15 +
  979.16 +// $Source: /cvsroot/boost/boost/boost/mpl/aux_/config/workaround.hpp,v $
  979.17 +// $Date: 2004/09/02 15:40:45 $
  979.18 +// $Revision: 1.3 $
  979.19 +
  979.20 +#include <boost/detail/workaround.hpp>
  979.21 +
  979.22 +#endif // BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
   980.1 --- a/epoc32/include/stdapis/boost/dynamic_bitset/dynamic_bitset.hpp	Tue Mar 16 16:12:26 2010 +0000
   980.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   980.3 @@ -1,1800 +0,0 @@
   980.4 -// --------------------------------------------------
   980.5 -//
   980.6 -// (C) Copyright Chuck Allison and Jeremy Siek 2001 - 2002.
   980.7 -// (C) Copyright Gennaro Prota                 2003 - 2004.
   980.8 -//
   980.9 -// Distributed under the Boost Software License, Version 1.0.
  980.10 -//    (See accompanying file LICENSE_1_0.txt or copy at
  980.11 -//          http://www.boost.org/LICENSE_1_0.txt)
  980.12 -//
  980.13 -// -----------------------------------------------------------
  980.14 -
  980.15 -//  See http://www.boost.org/libs/dynamic_bitset for documentation.
  980.16 -
  980.17 -
  980.18 -
  980.19 -#ifndef BOOST_DYNAMIC_BITSET_DYNAMIC_BITSET_HPP
  980.20 -#define BOOST_DYNAMIC_BITSET_DYNAMIC_BITSET_HPP
  980.21 -
  980.22 -#include <cassert>
  980.23 -#include <string>
  980.24 -#include <stdexcept>           // for std::overflow_error
  980.25 -#include <algorithm>           // for std::swap, std::min, std::copy, std::fill
  980.26 -#include <vector>
  980.27 -#include <climits>             // for CHAR_BIT
  980.28 -
  980.29 -#include "boost/dynamic_bitset/config.hpp"
  980.30 -
  980.31 -#ifndef BOOST_NO_STD_LOCALE
  980.32 -# include <locale> // G.P.S
  980.33 -#endif
  980.34 -
  980.35 -#if defined(BOOST_OLD_IOSTREAMS)
  980.36 -#  include <iostream.h>
  980.37 -#  include <ctype.h> // for isspace
  980.38 -#else
  980.39 -#  include <istream>
  980.40 -#  include <ostream>
  980.41 -#endif
  980.42 -
  980.43 -#include "boost/dynamic_bitset_fwd.hpp"
  980.44 -#include "boost/detail/dynamic_bitset.hpp"
  980.45 -#include "boost/detail/iterator.hpp" // used to implement append(Iter, Iter)
  980.46 -#include "boost/static_assert.hpp"
  980.47 -#include "boost/limits.hpp"
  980.48 -#include "boost/pending/lowest_bit.hpp" // used by find_first/next
  980.49 -
  980.50 -
  980.51 -namespace boost {
  980.52 -
  980.53 -template
  980.54 -
  980.55 -#if defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, <= 1300)  // 1300 == VC++ 7.0
  980.56 -   // VC++ (up to 7.0) wants the default arguments again
  980.57 -   <typename Block = unsigned long, typename Allocator = std::allocator<Block> >
  980.58 -# else
  980.59 -   <typename Block, typename Allocator>
  980.60 -# endif
  980.61 -
  980.62 -class dynamic_bitset
  980.63 -{
  980.64 -  // Portability note: member function templates are defined inside
  980.65 -  // this class definition to avoid problems with VC++. Similarly,
  980.66 -  // with the member functions of nested classes.
  980.67 -
  980.68 -  BOOST_STATIC_ASSERT(detail::dynamic_bitset_allowed_block_type<Block>::value);
  980.69 -
  980.70 -public:
  980.71 -    typedef Block block_type;
  980.72 -    typedef Allocator allocator_type;
  980.73 -    typedef std::size_t size_type;
  980.74 -    typedef int block_width_type; // gps
  980.75 -
  980.76 -    BOOST_STATIC_CONSTANT(block_width_type, bits_per_block = (std::numeric_limits<Block>::digits));
  980.77 -    BOOST_STATIC_CONSTANT(size_type, npos = static_cast<size_type>(-1));
  980.78 -
  980.79 -
  980.80 -public:
  980.81 -
  980.82 -    // A proxy class to simulate lvalues of bit type.
  980.83 -    // Shouldn't it be private? [gps]
  980.84 -    //
  980.85 -    class reference
  980.86 -    {
  980.87 -        friend class dynamic_bitset<Block, Allocator>;
  980.88 -
  980.89 -
  980.90 -        // the one and only non-copy ctor
  980.91 -        reference(block_type & b, int pos)
  980.92 -            :m_block(b), m_mask(block_type(1) << pos)
  980.93 -        {}
  980.94 -
  980.95 -        void operator&(); // left undefined
  980.96 -
  980.97 -    public:
  980.98 -
  980.99 -        // copy constructor: compiler generated
 980.100 -
 980.101 -        operator bool() const { return (m_block & m_mask) != 0; }
 980.102 -        bool operator~() const { return (m_block & m_mask) == 0; }
 980.103 -
 980.104 -        reference& flip() { do_flip(); return *this; }
 980.105 -
 980.106 -        reference& operator=(bool x)               { do_assign(x);   return *this; } // for b[i] = x
 980.107 -        reference& operator=(const reference& rhs) { do_assign(rhs); return *this; } // for b[i] = b[j]
 980.108 -
 980.109 -        reference& operator|=(bool x) { if  (x) do_set();   return *this; }
 980.110 -        reference& operator&=(bool x) { if (!x) do_reset(); return *this; }
 980.111 -        reference& operator^=(bool x) { if  (x) do_flip();  return *this; }
 980.112 -        reference& operator-=(bool x) { if  (x) do_reset(); return *this; }
 980.113 -
 980.114 -     private:
 980.115 -        block_type & m_block;
 980.116 -        const block_type m_mask;
 980.117 -
 980.118 -        void do_set() { m_block |= m_mask; }
 980.119 -        void do_reset() { m_block &= ~m_mask; }
 980.120 -        void do_flip() { m_block ^= m_mask; }
 980.121 -        void do_assign(bool x) { x? do_set() : do_reset(); }
 980.122 -    };
 980.123 -
 980.124 -    typedef bool const_reference;
 980.125 -
 980.126 -    // constructors, etc.
 980.127 -    explicit
 980.128 -    dynamic_bitset(const Allocator& alloc = Allocator());
 980.129 -
 980.130 -    explicit
 980.131 -    dynamic_bitset(size_type num_bits, unsigned long value = 0,
 980.132 -               const Allocator& alloc = Allocator());
 980.133 -
 980.134 -
 980.135 -    // The presence of this constructor is a concession to ease of
 980.136 -    // use, especially for the novice user. A conversion from string
 980.137 -    // is, in most cases, formatting, and should be done by the standard
 980.138 -    // formatting convention: operator>>.
 980.139 -    //
 980.140 -    // NOTE:
 980.141 -    // Leave the parentheses around std::basic_string<CharT, Traits, Alloc>::npos.
 980.142 -    // g++ 3.2 requires them and probably the standard will - see core issue 325
 980.143 -    // NOTE 2: 
 980.144 -    // split into two constructors because of bugs in MSVC 6.0sp5 with STLport
 980.145 -
 980.146 -    template <typename CharT, typename Traits, typename Alloc>
 980.147 -    dynamic_bitset(const std::basic_string<CharT, Traits, Alloc>& s,
 980.148 -        typename std::basic_string<CharT, Traits, Alloc>::size_type pos,
 980.149 -        typename std::basic_string<CharT, Traits, Alloc>::size_type n,
 980.150 -        size_type num_bits = npos,
 980.151 -        const Allocator& alloc = Allocator())
 980.152 -
 980.153 -    :m_bits(alloc),
 980.154 -     m_num_bits(0)
 980.155 -    {
 980.156 -      init_from_string(s, pos, n, num_bits, alloc);
 980.157 -    }
 980.158 -
 980.159 -    template <typename CharT, typename Traits, typename Alloc>
 980.160 -    explicit
 980.161 -    dynamic_bitset(const std::basic_string<CharT, Traits, Alloc>& s,
 980.162 -      typename std::basic_string<CharT, Traits, Alloc>::size_type pos = 0)
 980.163 -
 980.164 -    :m_bits(Allocator()),
 980.165 -     m_num_bits(0)
 980.166 -    {
 980.167 -      init_from_string(s, pos, (std::basic_string<CharT, Traits, Alloc>::npos),
 980.168 -                       npos, Allocator());
 980.169 -    }
 980.170 -
 980.171 -    // The first bit in *first is the least significant bit, and the
 980.172 -    // last bit in the block just before *last is the most significant bit.
 980.173 -    template <typename BlockInputIterator>
 980.174 -    dynamic_bitset(BlockInputIterator first, BlockInputIterator last,
 980.175 -                   const Allocator& alloc = Allocator())
 980.176 -
 980.177 -    :m_bits(first, last, alloc),
 980.178 -     m_num_bits(m_bits.size() * bits_per_block)
 980.179 -    {}
 980.180 -
 980.181 -
 980.182 -    // copy constructor
 980.183 -    dynamic_bitset(const dynamic_bitset& b);
 980.184 -
 980.185 -    ~dynamic_bitset();
 980.186 -
 980.187 -    void swap(dynamic_bitset& b);
 980.188 -    dynamic_bitset& operator=(const dynamic_bitset& b);
 980.189 -
 980.190 -    allocator_type get_allocator() const;
 980.191 -
 980.192 -    // size changing operations
 980.193 -    void resize(size_type num_bits, bool value = false);
 980.194 -    void clear();
 980.195 -    void push_back(bool bit);
 980.196 -    void append(Block block);
 980.197 -
 980.198 -    template <typename BlockInputIterator>
 980.199 -    void m_append(BlockInputIterator first, BlockInputIterator last, std::input_iterator_tag)
 980.200 -    {
 980.201 -        std::vector<Block, Allocator> v(first, last);
 980.202 -        m_append(v.begin(), v.end(), std::random_access_iterator_tag());
 980.203 -    }
 980.204 -    template <typename BlockInputIterator>
 980.205 -    void m_append(BlockInputIterator first, BlockInputIterator last, std::forward_iterator_tag)
 980.206 -    {
 980.207 -        assert(first != last);
 980.208 -        block_width_type r = count_extra_bits();
 980.209 -        std::size_t d = boost::detail::distance(first, last);
 980.210 -        m_bits.reserve(num_blocks() + d);
 980.211 -        if (r == 0) {
 980.212 -            for( ; first != last; ++first)
 980.213 -                m_bits.push_back(*first); // could use vector<>::insert()
 980.214 -        }
 980.215 -        else {
 980.216 -            m_highest_block() |= (*first << r);
 980.217 -            do {
 980.218 -                Block b = *first >> (bits_per_block - r);
 980.219 -                ++first;
 980.220 -                m_bits.push_back(b | (first==last? 0 : *first << r));
 980.221 -            } while (first != last);
 980.222 -        }
 980.223 -        m_num_bits += bits_per_block * d;
 980.224 -    }
 980.225 -    template <typename BlockInputIterator>
 980.226 -    void append(BlockInputIterator first, BlockInputIterator last) // strong guarantee
 980.227 -    {
 980.228 -        if (first != last) {
 980.229 -            typename detail::iterator_traits<BlockInputIterator>::iterator_category cat;
 980.230 -            m_append(first, last, cat);
 980.231 -        }
 980.232 -    }
 980.233 -
 980.234 -
 980.235 -    // bitset operations
 980.236 -    dynamic_bitset& operator&=(const dynamic_bitset& b);
 980.237 -    dynamic_bitset& operator|=(const dynamic_bitset& b);
 980.238 -    dynamic_bitset& operator^=(const dynamic_bitset& b);
 980.239 -    dynamic_bitset& operator-=(const dynamic_bitset& b);
 980.240 -    dynamic_bitset& operator<<=(size_type n);
 980.241 -    dynamic_bitset& operator>>=(size_type n);
 980.242 -    dynamic_bitset operator<<(size_type n) const;
 980.243 -    dynamic_bitset operator>>(size_type n) const;
 980.244 -
 980.245 -    // basic bit operations
 980.246 -    dynamic_bitset& set(size_type n, bool val = true);
 980.247 -    dynamic_bitset& set();
 980.248 -    dynamic_bitset& reset(size_type n);
 980.249 -    dynamic_bitset& reset();
 980.250 -    dynamic_bitset& flip(size_type n);
 980.251 -    dynamic_bitset& flip();
 980.252 -    bool test(size_type n) const;
 980.253 -    bool any() const;
 980.254 -    bool none() const;
 980.255 -    dynamic_bitset operator~() const;
 980.256 -    size_type count() const;
 980.257 -
 980.258 -    // subscript
 980.259 -    reference operator[](size_type pos) {
 980.260 -        return reference(m_bits[block_index(pos)], bit_index(pos));
 980.261 -    }
 980.262 -    bool operator[](size_type pos) const { return test(pos); }
 980.263 -
 980.264 -    unsigned long to_ulong() const;
 980.265 -
 980.266 -    size_type size() const;
 980.267 -    size_type num_blocks() const;
 980.268 -    size_type max_size() const;
 980.269 -    bool empty() const;
 980.270 -#if 0 // gps
 980.271 -    void reserve(size_type n);
 980.272 -    size_type capacity() const;
 980.273 -#endif
 980.274 -
 980.275 -    bool is_subset_of(const dynamic_bitset& a) const;
 980.276 -    bool is_proper_subset_of(const dynamic_bitset& a) const;
 980.277 -    bool intersects(const dynamic_bitset & a) const;
 980.278 -
 980.279 -    // lookup
 980.280 -    size_type find_first() const;
 980.281 -    size_type find_next(size_type pos) const;
 980.282 -
 980.283 -
 980.284 -#if !defined BOOST_DYNAMIC_BITSET_DONT_USE_FRIENDS
 980.285 -    // lexicographical comparison
 980.286 -    template <typename B, typename A>
 980.287 -    friend bool operator==(const dynamic_bitset<B, A>& a,
 980.288 -                           const dynamic_bitset<B, A>& b);
 980.289 -
 980.290 -    template <typename B, typename A>
 980.291 -    friend bool operator<(const dynamic_bitset<B, A>& a,
 980.292 -                          const dynamic_bitset<B, A>& b);
 980.293 -
 980.294 -
 980.295 -    template <typename B, typename A, typename BlockOutputIterator>
 980.296 -    friend void to_block_range(const dynamic_bitset<B, A>& b,
 980.297 -                               BlockOutputIterator result);
 980.298 -
 980.299 -    template <typename BlockIterator, typename B, typename A>
 980.300 -    friend void from_block_range(BlockIterator first, BlockIterator last,
 980.301 -                                 dynamic_bitset<B, A>& result);
 980.302 -
 980.303 -
 980.304 -    template <typename CharT, typename Traits, typename B, typename A>
 980.305 -    friend std::basic_istream<CharT, Traits>& operator>>(std::basic_istream<CharT, Traits>& is,
 980.306 -                                                         dynamic_bitset<B, A>& b);
 980.307 -
 980.308 -    template <typename B, typename A, typename stringT>
 980.309 -    friend void to_string_helper(const dynamic_bitset<B, A> & b, stringT & s, bool dump_all);
 980.310 -
 980.311 -
 980.312 -#endif
 980.313 -
 980.314 -
 980.315 -private:
 980.316 -    BOOST_STATIC_CONSTANT(block_width_type, ulong_width = std::numeric_limits<unsigned long>::digits);
 980.317 -    typedef std::vector<block_type, allocator_type> buffer_type;
 980.318 -
 980.319 -    void m_zero_unused_bits();
 980.320 -    bool m_check_invariants() const;
 980.321 -
 980.322 -    size_type m_do_find_from(size_type first_block) const;
 980.323 -
 980.324 -    block_width_type count_extra_bits() const { return bit_index(size()); }
 980.325 -    static size_type block_index(size_type pos) { return pos / bits_per_block; }
 980.326 -    static block_width_type bit_index(size_type pos) { return static_cast<int>(pos % bits_per_block); }
 980.327 -    static Block bit_mask(size_type pos) { return Block(1) << bit_index(pos); }
 980.328 -
 980.329 -    template <typename CharT, typename Traits, typename Alloc>
 980.330 -    void init_from_string(const std::basic_string<CharT, Traits, Alloc>& s,
 980.331 -        typename std::basic_string<CharT, Traits, Alloc>::size_type pos,
 980.332 -        typename std::basic_string<CharT, Traits, Alloc>::size_type n,
 980.333 -        size_type num_bits,
 980.334 -        const Allocator& alloc)
 980.335 -    {
 980.336 -        assert(pos <= s.size());
 980.337 -
 980.338 -        typedef typename std::basic_string<CharT, Traits, Alloc> StrT;
 980.339 -        typedef typename StrT::traits_type Tr;
 980.340 -
 980.341 -        const typename StrT::size_type rlen = (std::min)(n, s.size() - pos); // gps
 980.342 -        const size_type sz = ( num_bits != npos? num_bits : rlen);
 980.343 -        m_bits.resize(calc_num_blocks(sz));
 980.344 -        m_num_bits = sz;
 980.345 -
 980.346 -
 980.347 -        BOOST_DYNAMIC_BITSET_CTYPE_FACET(CharT, fac, std::locale());
 980.348 -        const CharT one = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
 980.349 -
 980.350 -        const size_type m = num_bits < rlen ? num_bits : rlen; // [gps]
 980.351 -        typename StrT::size_type i = 0;
 980.352 -        for( ; i < m; ++i) {
 980.353 -
 980.354 -            const CharT c = s[(pos + m - 1) - i];
 980.355 -
 980.356 -            assert( Tr::eq(c, one)
 980.357 -                    || Tr::eq(c, BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0')) );
 980.358 -
 980.359 -            if (Tr::eq(c, one))
 980.360 -                set(i);
 980.361 -
 980.362 -        }
 980.363 -
 980.364 -    }
 980.365 -
 980.366 -BOOST_DYNAMIC_BITSET_PRIVATE:
 980.367 -
 980.368 -    bool m_unchecked_test(size_type pos) const;
 980.369 -    static size_type calc_num_blocks(size_type num_bits);
 980.370 -
 980.371 -    Block&        m_highest_block();
 980.372 -    const Block&  m_highest_block() const;
 980.373 -
 980.374 -    buffer_type m_bits; // [gps] to be renamed
 980.375 -    size_type   m_num_bits;
 980.376 -
 980.377 -
 980.378 -    class bit_appender;
 980.379 -    friend class bit_appender;
 980.380 -    class bit_appender {
 980.381 -      // helper for stream >>
 980.382 -      // Supplies to the lack of an efficient append at the less
 980.383 -      // significant end: bits are actually appended "at left" but
 980.384 -      // rearranged in the destructor. Everything works just as if
 980.385 -      // dynamic_bitset<> had an append_at_right() function (which
 980.386 -      // threw, in case, the same exceptions as push_back) except
 980.387 -      // that the function is actually called bit_appender::do_append().
 980.388 -      //
 980.389 -      dynamic_bitset & bs;
 980.390 -      size_type n;
 980.391 -      Block mask;
 980.392 -      Block * current;
 980.393 -    public:
 980.394 -        bit_appender(dynamic_bitset & r) : bs(r), n(0), mask(0), current(0) {}
 980.395 -        ~bit_appender() {
 980.396 -            // reverse the order of blocks, shift
 980.397 -            // if needed, and then resize
 980.398 -            //
 980.399 -            std::reverse(bs.m_bits.begin(), bs.m_bits.end());
 980.400 -            const block_width_type offs = bit_index(n);
 980.401 -            if (offs)
 980.402 -                bs >>= (bits_per_block - offs);
 980.403 -            bs.resize(n); // doesn't enlarge, so can't throw
 980.404 -            assert(bs.m_check_invariants());
 980.405 -        }
 980.406 -        inline void do_append(bool value) {
 980.407 -
 980.408 -            if (mask == 0) {
 980.409 -                bs.append(Block(0));
 980.410 -                current = &bs.m_highest_block();
 980.411 -                mask = Block(1) << (bits_per_block - 1);
 980.412 -            }
 980.413 -
 980.414 -            if(value)
 980.415 -                *current |= mask;
 980.416 -
 980.417 -            mask /= 2;
 980.418 -            ++n;
 980.419 -        }
 980.420 -        size_type get_count() const { return n; }
 980.421 -    };
 980.422 -
 980.423 -};
 980.424 -
 980.425 -#if BOOST_WORKAROUND( __IBMCPP__, <=600 )
 980.426 -
 980.427 -// Workaround for IBM's AIX platform.
 980.428 -// See http://comments.gmane.org/gmane.comp.lib.boost.user/15331
 980.429 -
 980.430 -template<typename Block, typename Allocator>
 980.431 -dynamic_bitset<Block, Allocator>::block_width_type const
 980.432 -dynamic_bitset<Block, Allocator>::bits_per_block;
 980.433 -
 980.434 -template<typename Block, typename Allocator>
 980.435 -dynamic_bitset<Block, Allocator>::block_width_type const
 980.436 -dynamic_bitset<Block, Allocator>::ulong_width;
 980.437 -
 980.438 -#endif
 980.439 -
 980.440 -// Global Functions:
 980.441 -
 980.442 -// comparison
 980.443 -template <typename Block, typename Allocator>
 980.444 -bool operator!=(const dynamic_bitset<Block, Allocator>& a,
 980.445 -                const dynamic_bitset<Block, Allocator>& b);
 980.446 -
 980.447 -template <typename Block, typename Allocator>
 980.448 -bool operator<=(const dynamic_bitset<Block, Allocator>& a,
 980.449 -                const dynamic_bitset<Block, Allocator>& b);
 980.450 -
 980.451 -template <typename Block, typename Allocator>
 980.452 -bool operator>(const dynamic_bitset<Block, Allocator>& a,
 980.453 -               const dynamic_bitset<Block, Allocator>& b);
 980.454 -
 980.455 -template <typename Block, typename Allocator>
 980.456 -bool operator>=(const dynamic_bitset<Block, Allocator>& a,
 980.457 -                const dynamic_bitset<Block, Allocator>& b);
 980.458 -
 980.459 -// stream operators
 980.460 -#ifdef BOOST_OLD_IOSTREAMS
 980.461 -template <typename Block, typename Allocator>
 980.462 -std::ostream& operator<<(std::ostream& os,
 980.463 -                         const dynamic_bitset<Block, Allocator>& b);
 980.464 -
 980.465 -template <typename Block, typename Allocator>
 980.466 -std::istream& operator>>(std::istream& is, dynamic_bitset<Block,Allocator>& b);
 980.467 -#else
 980.468 -// NOTE: Digital Mars wants the same template parameter names
 980.469 -//       here and in the definition! [last tested: 8.48.10]
 980.470 -//
 980.471 -template <typename Ch, typename Tr, typename Block, typename Alloc>
 980.472 -std::basic_ostream<Ch, Tr>&
 980.473 -operator<<(std::basic_ostream<Ch, Tr>& os,
 980.474 -           const dynamic_bitset<Block, Alloc>& b);
 980.475 -
 980.476 -template <typename Ch, typename Tr, typename Block, typename Alloc>
 980.477 -std::basic_istream<Ch, Tr>&
 980.478 -operator>>(std::basic_istream<Ch, Tr>& is,
 980.479 -           dynamic_bitset<Block, Alloc>& b);
 980.480 -#endif
 980.481 -
 980.482 -// bitset operations
 980.483 -template <typename Block, typename Allocator>
 980.484 -dynamic_bitset<Block, Allocator>
 980.485 -operator&(const dynamic_bitset<Block, Allocator>& b1,
 980.486 -          const dynamic_bitset<Block, Allocator>& b2);
 980.487 -
 980.488 -template <typename Block, typename Allocator>
 980.489 -dynamic_bitset<Block, Allocator>
 980.490 -operator|(const dynamic_bitset<Block, Allocator>& b1,
 980.491 -          const dynamic_bitset<Block, Allocator>& b2);
 980.492 -
 980.493 -template <typename Block, typename Allocator>
 980.494 -dynamic_bitset<Block, Allocator>
 980.495 -operator^(const dynamic_bitset<Block, Allocator>& b1,
 980.496 -          const dynamic_bitset<Block, Allocator>& b2);
 980.497 -
 980.498 -template <typename Block, typename Allocator>
 980.499 -dynamic_bitset<Block, Allocator>
 980.500 -operator-(const dynamic_bitset<Block, Allocator>& b1,
 980.501 -          const dynamic_bitset<Block, Allocator>& b2);
 980.502 -
 980.503 -// namespace scope swap
 980.504 -template<typename Block, typename Allocator>
 980.505 -void swap(dynamic_bitset<Block, Allocator>& b1,
 980.506 -          dynamic_bitset<Block, Allocator>& b2);
 980.507 -
 980.508 -
 980.509 -template <typename Block, typename Allocator, typename stringT>
 980.510 -void
 980.511 -to_string(const dynamic_bitset<Block, Allocator>& b, stringT & s); // gps
 980.512 -
 980.513 -template <typename Block, typename Allocator, typename BlockOutputIterator>
 980.514 -void
 980.515 -to_block_range(const dynamic_bitset<Block, Allocator>& b,
 980.516 -               BlockOutputIterator result);
 980.517 -
 980.518 -
 980.519 -// gps - check docs with Jeremy
 980.520 -//
 980.521 -template <typename BlockIterator, typename B, typename A>
 980.522 -inline void
 980.523 -from_block_range(BlockIterator first, BlockIterator last,
 980.524 -                 dynamic_bitset<B, A>& result)
 980.525 -{
 980.526 -    // PRE: distance(first, last) <= numblocks()
 980.527 -    std::copy (first, last, result.m_bits.begin()); //[gps]
 980.528 -}
 980.529 -
 980.530 -//=============================================================================
 980.531 -// dynamic_bitset implementation
 980.532 -
 980.533 -
 980.534 -//-----------------------------------------------------------------------------
 980.535 -// constructors, etc.
 980.536 -
 980.537 -template <typename Block, typename Allocator>
 980.538 -dynamic_bitset<Block, Allocator>::dynamic_bitset(const Allocator& alloc)
 980.539 -  : m_bits(alloc), m_num_bits(0)
 980.540 -{
 980.541 -
 980.542 -}
 980.543 -
 980.544 -template <typename Block, typename Allocator>
 980.545 -dynamic_bitset<Block, Allocator>::
 980.546 -dynamic_bitset(size_type num_bits, unsigned long value, const Allocator& alloc)
 980.547 -  : m_bits(calc_num_blocks(num_bits), Block(0), alloc),
 980.548 -    m_num_bits(num_bits)
 980.549 -{
 980.550 -
 980.551 -  if (num_bits == 0)
 980.552 -      return;
 980.553 -
 980.554 -  typedef unsigned long num_type;
 980.555 -
 980.556 -  // cut off all bits in value that have pos >= num_bits, if any
 980.557 -  if (num_bits < static_cast<size_type>(ulong_width)) {
 980.558 -      const num_type mask = (num_type(1) << num_bits) - 1;
 980.559 -      value &= mask;
 980.560 -  }
 980.561 -
 980.562 -  if (bits_per_block >= ulong_width) {
 980.563 -      m_bits[0] = static_cast<block_type>(value);
 980.564 -  }
 980.565 -  else {
 980.566 -      for(size_type i = 0; value != 0; ++i) {
 980.567 -
 980.568 -          m_bits[i] = static_cast<block_type>(value);
 980.569 -          value >>= BOOST_DYNAMIC_BITSET_WRAP_CONSTANT(bits_per_block);
 980.570 -      }
 980.571 -  }
 980.572 -
 980.573 -}
 980.574 -
 980.575 -// copy constructor
 980.576 -template <typename Block, typename Allocator>
 980.577 -inline dynamic_bitset<Block, Allocator>::
 980.578 -dynamic_bitset(const dynamic_bitset& b)
 980.579 -  : m_bits(b.m_bits), m_num_bits(b.m_num_bits)  // [gps]
 980.580 -{
 980.581 -
 980.582 -}
 980.583 -
 980.584 -template <typename Block, typename Allocator>
 980.585 -inline dynamic_bitset<Block, Allocator>::
 980.586 -~dynamic_bitset()
 980.587 -{
 980.588 -    assert(m_check_invariants());
 980.589 -}
 980.590 -
 980.591 -template <typename Block, typename Allocator>
 980.592 -inline void dynamic_bitset<Block, Allocator>::
 980.593 -swap(dynamic_bitset<Block, Allocator>& b) // no throw
 980.594 -{
 980.595 -    std::swap(m_bits, b.m_bits);
 980.596 -    std::swap(m_num_bits, b.m_num_bits);
 980.597 -}
 980.598 -
 980.599 -template <typename Block, typename Allocator>
 980.600 -dynamic_bitset<Block, Allocator>& dynamic_bitset<Block, Allocator>::
 980.601 -operator=(const dynamic_bitset<Block, Allocator>& b)
 980.602 -{
 980.603 -#if 0 // gps
 980.604 -    dynamic_bitset<Block, Allocator> tmp(b);
 980.605 -    this->swap(tmp);
 980.606 -    return *this;
 980.607 -#else
 980.608 -    m_bits = b.m_bits;
 980.609 -    m_num_bits = b.m_num_bits;
 980.610 -    return *this;
 980.611 -#endif
 980.612 -}
 980.613 -
 980.614 -template <typename Block, typename Allocator>
 980.615 -inline typename dynamic_bitset<Block, Allocator>::allocator_type
 980.616 -dynamic_bitset<Block, Allocator>::get_allocator() const
 980.617 -{
 980.618 -    return m_bits.get_allocator();
 980.619 -}
 980.620 -
 980.621 -//-----------------------------------------------------------------------------
 980.622 -// size changing operations
 980.623 -
 980.624 -template <typename Block, typename Allocator>
 980.625 -void dynamic_bitset<Block, Allocator>::
 980.626 -resize(size_type num_bits, bool value) // strong guarantee
 980.627 -{
 980.628 -
 980.629 -  const size_type old_num_blocks = num_blocks();
 980.630 -  const size_type required_blocks = calc_num_blocks(num_bits);
 980.631 -
 980.632 -  const block_type v = value? ~Block(0) : Block(0);
 980.633 -
 980.634 -  if (required_blocks != old_num_blocks) {
 980.635 -    m_bits.resize(required_blocks, v); // s.g. (copy) [gps]
 980.636 -  }
 980.637 -
 980.638 -
 980.639 -  // At this point:
 980.640 -  //
 980.641 -  //  - if the buffer was shrunk, there's nothing to do, except
 980.642 -  //    a call to m_zero_unused_bits()
 980.643 -  //
 980.644 -  //  - if it it is enlarged, all the (used) bits in the new blocks have
 980.645 -  //    the correct value, but we should also take care of the bits,
 980.646 -  //    if any, that were 'unused bits' before enlarging: if value == true,
 980.647 -  //    they must be set.
 980.648 -
 980.649 -  if (value && (num_bits > m_num_bits)) {
 980.650 -
 980.651 -    const size_type extra_bits = count_extra_bits(); // gps
 980.652 -    if (extra_bits) {
 980.653 -        assert(old_num_blocks >= 1 && old_num_blocks <= m_bits.size());
 980.654 -
 980.655 -        // Set them.
 980.656 -        m_bits[old_num_blocks - 1] |= (v << extra_bits); // gps
 980.657 -    }
 980.658 -
 980.659 -  }
 980.660 -
 980.661 -
 980.662 -
 980.663 -  m_num_bits = num_bits;
 980.664 -  m_zero_unused_bits();
 980.665 -
 980.666 -}
 980.667 -
 980.668 -template <typename Block, typename Allocator>
 980.669 -void dynamic_bitset<Block, Allocator>::
 980.670 -clear() // no throw
 980.671 -{
 980.672 -  m_bits.clear();
 980.673 -  m_num_bits = 0;
 980.674 -}
 980.675 -
 980.676 -
 980.677 -template <typename Block, typename Allocator>
 980.678 -void dynamic_bitset<Block, Allocator>::
 980.679 -push_back(bool bit)
 980.680 -{
 980.681 -  resize(size() + 1);
 980.682 -  set(size() - 1, bit);
 980.683 -}
 980.684 -
 980.685 -template <typename Block, typename Allocator>
 980.686 -void dynamic_bitset<Block, Allocator>::
 980.687 -append(Block value) // strong guarantee
 980.688 -{
 980.689 -    // G.P.S. to be reviewed...
 980.690 -
 980.691 -    const block_width_type r = count_extra_bits();
 980.692 -
 980.693 -    if (r == 0) {
 980.694 -        // the buffer is empty, or all blocks are filled
 980.695 -        m_bits.push_back(value);
 980.696 -    }
 980.697 -    else {
 980.698 -        m_bits.push_back(value >> (bits_per_block - r));
 980.699 -        m_bits[m_bits.size() - 2] |= (value << r); // m_bits.size() >= 2
 980.700 -    }
 980.701 -
 980.702 -    m_num_bits += bits_per_block;
 980.703 -    assert(m_check_invariants());
 980.704 -
 980.705 -}
 980.706 -
 980.707 -
 980.708 -//-----------------------------------------------------------------------------
 980.709 -// bitset operations
 980.710 -template <typename Block, typename Allocator>
 980.711 -dynamic_bitset<Block, Allocator>&
 980.712 -dynamic_bitset<Block, Allocator>::operator&=(const dynamic_bitset& rhs)
 980.713 -{
 980.714 -    assert(size() == rhs.size());
 980.715 -    for (size_type i = 0; i < num_blocks(); ++i)
 980.716 -        m_bits[i] &= rhs.m_bits[i];
 980.717 -    return *this;
 980.718 -}
 980.719 -
 980.720 -template <typename Block, typename Allocator>
 980.721 -dynamic_bitset<Block, Allocator>&
 980.722 -dynamic_bitset<Block, Allocator>::operator|=(const dynamic_bitset& rhs)
 980.723 -{
 980.724 -    assert(size() == rhs.size());
 980.725 -    for (size_type i = 0; i < num_blocks(); ++i)
 980.726 -        m_bits[i] |= rhs.m_bits[i];
 980.727 -    //m_zero_unused_bits();
 980.728 -    return *this;
 980.729 -}
 980.730 -
 980.731 -template <typename Block, typename Allocator>
 980.732 -dynamic_bitset<Block, Allocator>&
 980.733 -dynamic_bitset<Block, Allocator>::operator^=(const dynamic_bitset& rhs)
 980.734 -{
 980.735 -    assert(size() == rhs.size());
 980.736 -    for (size_type i = 0; i < this->num_blocks(); ++i)
 980.737 -        m_bits[i] ^= rhs.m_bits[i];
 980.738 -    //m_zero_unused_bits();
 980.739 -    return *this;
 980.740 -}
 980.741 -
 980.742 -template <typename Block, typename Allocator>
 980.743 -dynamic_bitset<Block, Allocator>&
 980.744 -dynamic_bitset<Block, Allocator>::operator-=(const dynamic_bitset& rhs)
 980.745 -{
 980.746 -    assert(size() == rhs.size());
 980.747 -    for (size_type i = 0; i < num_blocks(); ++i)
 980.748 -        m_bits[i] &= ~rhs.m_bits[i];
 980.749 -    //m_zero_unused_bits();
 980.750 -    return *this;
 980.751 -}
 980.752 -
 980.753 -//
 980.754 -// NOTE:
 980.755 -//  Note that the 'if (r != 0)' is crucial to avoid undefined
 980.756 -//  behavior when the left hand operand of >> isn't promoted to a
 980.757 -//  wider type (because rs would be too large).
 980.758 -//
 980.759 -template <typename Block, typename Allocator>
 980.760 -dynamic_bitset<Block, Allocator>&
 980.761 -dynamic_bitset<Block, Allocator>::operator<<=(size_type n)
 980.762 -{
 980.763 -    if (n >= m_num_bits)
 980.764 -        return reset();
 980.765 -    //else
 980.766 -    if (n > 0) {
 980.767 -
 980.768 -        size_type    const last = num_blocks() - 1;  // num_blocks() is >= 1
 980.769 -        size_type    const div  = n / bits_per_block; // div is <= last
 980.770 -        block_width_type const r = bit_index(n);
 980.771 -        block_type * const b    = &m_bits[0];
 980.772 -
 980.773 -        if (r != 0) {
 980.774 -
 980.775 -            block_width_type const rs = bits_per_block - r;
 980.776 -
 980.777 -            for (size_type i = last-div; i>0; --i) {
 980.778 -                b[i+div] = (b[i] << r) | (b[i-1] >> rs);
 980.779 -            }
 980.780 -            b[div] = b[0] << r;
 980.781 -
 980.782 -        }
 980.783 -        else {
 980.784 -            for (size_type i = last-div; i>0; --i) {
 980.785 -                b[i+div] = b[i];
 980.786 -            }
 980.787 -            b[div] = b[0];
 980.788 -        }
 980.789 -
 980.790 -
 980.791 -        // zero out div blocks at the less significant end
 980.792 -        std::fill_n(b, div, static_cast<block_type>(0));
 980.793 -
 980.794 -        // zero out any 1 bit that flowed into the unused part
 980.795 -        m_zero_unused_bits(); // thanks to Lester Gong
 980.796 -
 980.797 -
 980.798 -    }
 980.799 -
 980.800 -    return *this;
 980.801 -
 980.802 -
 980.803 -}
 980.804 -
 980.805 -
 980.806 -//
 980.807 -// NOTE:
 980.808 -//  see the comments to operator <<=
 980.809 -//
 980.810 -template <typename B, typename A>
 980.811 -dynamic_bitset<B, A> & dynamic_bitset<B, A>::operator>>=(size_type n) {
 980.812 -    if (n >= m_num_bits) {
 980.813 -        return reset();
 980.814 -    }
 980.815 -    //else
 980.816 -    if (n>0) {
 980.817 -
 980.818 -        size_type  const last  = num_blocks() - 1; // num_blocks() is >= 1
 980.819 -        size_type  const div   = n / bits_per_block;   // div is <= last
 980.820 -        block_width_type const r     = bit_index(n);
 980.821 -        block_type * const b   = &m_bits[0];
 980.822 -
 980.823 -
 980.824 -        if (r != 0) {
 980.825 -
 980.826 -            block_width_type const ls = bits_per_block - r;
 980.827 -
 980.828 -            for (size_type i = div; i < last; ++i) {
 980.829 -                b[i-div] = (b[i] >> r) | (b[i+1]  << ls);
 980.830 -            }
 980.831 -            // r bits go to zero
 980.832 -            b[last-div] = b[last] >> r;
 980.833 -        }
 980.834 -
 980.835 -        else {
 980.836 -            for (size_type i = div; i <= last; ++i) {
 980.837 -                b[i-div] = b[i];
 980.838 -            }
 980.839 -            // note the '<=': the last iteration 'absorbs'
 980.840 -            // b[last-div] = b[last] >> 0;
 980.841 -        }
 980.842 -
 980.843 -
 980.844 -
 980.845 -        // div blocks are zero filled at the most significant end
 980.846 -        std::fill_n(b + (num_blocks()-div), div, static_cast<block_type>(0));
 980.847 -    }
 980.848 -
 980.849 -    return *this;
 980.850 -}
 980.851 -
 980.852 -
 980.853 -template <typename Block, typename Allocator>
 980.854 -dynamic_bitset<Block, Allocator>
 980.855 -dynamic_bitset<Block, Allocator>::operator<<(size_type n) const
 980.856 -{
 980.857 -    dynamic_bitset r(*this);
 980.858 -    return r <<= n;
 980.859 -}
 980.860 -
 980.861 -template <typename Block, typename Allocator>
 980.862 -dynamic_bitset<Block, Allocator>
 980.863 -dynamic_bitset<Block, Allocator>::operator>>(size_type n) const
 980.864 -{
 980.865 -    dynamic_bitset r(*this);
 980.866 -    return r >>= n;
 980.867 -}
 980.868 -
 980.869 -
 980.870 -//-----------------------------------------------------------------------------
 980.871 -// basic bit operations
 980.872 -
 980.873 -template <typename Block, typename Allocator>
 980.874 -dynamic_bitset<Block, Allocator>&
 980.875 -dynamic_bitset<Block, Allocator>::set(size_type pos, bool val)
 980.876 -{
 980.877 -    // [gps]
 980.878 -    //
 980.879 -    // Below we have no set(size_type) function to call when
 980.880 -    // value == true; instead of using a helper, I think
 980.881 -    // overloading set (rather than giving it a default bool
 980.882 -    // argument) would be more elegant.
 980.883 -
 980.884 -    assert(pos < m_num_bits);
 980.885 -
 980.886 -    if (val)
 980.887 -        m_bits[block_index(pos)] |= bit_mask(pos);
 980.888 -    else
 980.889 -        reset(pos);
 980.890 -
 980.891 -    return *this;
 980.892 -}
 980.893 -
 980.894 -template <typename Block, typename Allocator>
 980.895 -dynamic_bitset<Block, Allocator>&
 980.896 -dynamic_bitset<Block, Allocator>::set()
 980.897 -{
 980.898 -  std::fill(m_bits.begin(), m_bits.end(), ~Block(0));
 980.899 -  m_zero_unused_bits();
 980.900 -  return *this;
 980.901 -}
 980.902 -
 980.903 -template <typename Block, typename Allocator>
 980.904 -dynamic_bitset<Block, Allocator>&
 980.905 -dynamic_bitset<Block, Allocator>::reset(size_type pos)
 980.906 -{
 980.907 -    assert(pos < m_num_bits);
 980.908 -    #if BOOST_WORKAROUND(__MWERKS__, <= 0x3003) // 8.x
 980.909 -    // CodeWarrior 8 generates incorrect code when the &=~ is compiled,
 980.910 -    // use the |^ variation instead.. <grafik>
 980.911 -    m_bits[block_index(pos)] |= bit_mask(pos);
 980.912 -    m_bits[block_index(pos)] ^= bit_mask(pos);
 980.913 -    #else
 980.914 -    m_bits[block_index(pos)] &= ~bit_mask(pos);
 980.915 -    #endif
 980.916 -    return *this;
 980.917 -}
 980.918 -
 980.919 -template <typename Block, typename Allocator>
 980.920 -dynamic_bitset<Block, Allocator>&
 980.921 -dynamic_bitset<Block, Allocator>::reset()
 980.922 -{
 980.923 -  std::fill(m_bits.begin(), m_bits.end(), Block(0));
 980.924 -  return *this;
 980.925 -}
 980.926 -
 980.927 -template <typename Block, typename Allocator>
 980.928 -dynamic_bitset<Block, Allocator>&
 980.929 -dynamic_bitset<Block, Allocator>::flip(size_type pos)
 980.930 -{
 980.931 -    assert(pos < m_num_bits);
 980.932 -    m_bits[block_index(pos)] ^= bit_mask(pos);
 980.933 -    return *this;
 980.934 -}
 980.935 -
 980.936 -template <typename Block, typename Allocator>
 980.937 -dynamic_bitset<Block, Allocator>&
 980.938 -dynamic_bitset<Block, Allocator>::flip()
 980.939 -{
 980.940 -    for (size_type i = 0; i < num_blocks(); ++i)
 980.941 -        m_bits[i] = ~m_bits[i];
 980.942 -    m_zero_unused_bits();
 980.943 -    return *this;
 980.944 -}
 980.945 -
 980.946 -template <typename Block, typename Allocator>
 980.947 -bool dynamic_bitset<Block, Allocator>::m_unchecked_test(size_type pos) const
 980.948 -{
 980.949 -    return (m_bits[block_index(pos)] & bit_mask(pos)) != 0;
 980.950 -}
 980.951 -
 980.952 -template <typename Block, typename Allocator>
 980.953 -bool dynamic_bitset<Block, Allocator>::test(size_type pos) const
 980.954 -{
 980.955 -    assert(pos < m_num_bits);
 980.956 -    return m_unchecked_test(pos);
 980.957 -}
 980.958 -
 980.959 -template <typename Block, typename Allocator>
 980.960 -bool dynamic_bitset<Block, Allocator>::any() const
 980.961 -{
 980.962 -    for (size_type i = 0; i < num_blocks(); ++i)
 980.963 -        if (m_bits[i])
 980.964 -            return true;
 980.965 -    return false;
 980.966 -}
 980.967 -
 980.968 -template <typename Block, typename Allocator>
 980.969 -inline bool dynamic_bitset<Block, Allocator>::none() const
 980.970 -{
 980.971 -    return !any();
 980.972 -}
 980.973 -
 980.974 -template <typename Block, typename Allocator>
 980.975 -dynamic_bitset<Block, Allocator>
 980.976 -dynamic_bitset<Block, Allocator>::operator~() const
 980.977 -{
 980.978 -    dynamic_bitset b(*this);
 980.979 -    b.flip();
 980.980 -    return b;
 980.981 -}
 980.982 -
 980.983 -
 980.984 -/*
 980.985 -
 980.986 -The following is the straightforward implementation of count(), which
 980.987 -we leave here in a comment for documentation purposes.
 980.988 -
 980.989 -template <typename Block, typename Allocator>
 980.990 -typename dynamic_bitset<Block, Allocator>::size_type
 980.991 -dynamic_bitset<Block, Allocator>::count() const
 980.992 -{
 980.993 -    size_type sum = 0;
 980.994 -    for (size_type i = 0; i != this->m_num_bits; ++i)
 980.995 -        if (test(i))
 980.996 -            ++sum;
 980.997 -    return sum;
 980.998 -}
 980.999 -
980.1000 -The actual algorithm uses a lookup table.
980.1001 -
980.1002 -
980.1003 -  The basic idea of the method is to pick up X bits at a time
980.1004 -  from the internal array of blocks and consider those bits as
980.1005 -  the binary representation of a number N. Then, to use a table
980.1006 -  of 1<<X elements where table[N] is the number of '1' digits
980.1007 -  in the binary representation of N (i.e. in our X bits).
980.1008 -
980.1009 -
980.1010 -  In this implementation X is 8 (but can be easily changed: you
980.1011 -  just have to modify the definition of table_width and shrink/enlarge
980.1012 -  the table accordingly - it could be useful, for instance, to expand
980.1013 -  the table to 512 elements on an implementation with 9-bit bytes) and
980.1014 -  the internal array of blocks is seen, if possible, as an array of bytes.
980.1015 -  In practice the "reinterpretation" as array of bytes is possible if and
980.1016 -  only if X >= CHAR_BIT and Block has no padding bits (that would be counted
980.1017 -  together with the "real ones" if we saw the array as array of bytes).
980.1018 -  Otherwise we simply 'extract' X bits at a time from each Block.
980.1019 -
980.1020 -*/
980.1021 -
980.1022 -
980.1023 -template <typename Block, typename Allocator>
980.1024 -typename dynamic_bitset<Block, Allocator>::size_type
980.1025 -dynamic_bitset<Block, Allocator>::count() const
980.1026 -{
980.1027 -    using namespace detail::dynamic_bitset_count_impl;
980.1028 -
980.1029 -    const bool no_padding = bits_per_block == CHAR_BIT * sizeof(Block);
980.1030 -    const bool enough_table_width = table_width >= CHAR_BIT;
980.1031 -
980.1032 -    typedef mode_to_type< (no_padding && enough_table_width ?
980.1033 -                          access_by_bytes : access_by_blocks) > m;
980.1034 -
980.1035 -    return do_count(m_bits.begin(), num_blocks(), Block(0), static_cast<m*>(0));
980.1036 -
980.1037 -}
980.1038 -
980.1039 -
980.1040 -//-----------------------------------------------------------------------------
980.1041 -// conversions
980.1042 -
980.1043 -
980.1044 -template <typename B, typename A, typename stringT>
980.1045 -void to_string_helper(const dynamic_bitset<B, A> & b, stringT & s,
980.1046 -                      bool dump_all)
980.1047 -{
980.1048 -    typedef typename stringT::traits_type Tr;
980.1049 -    typedef typename stringT::value_type  Ch;
980.1050 -
980.1051 -    BOOST_DYNAMIC_BITSET_CTYPE_FACET(Ch, fac, std::locale());
980.1052 -    const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0');
980.1053 -    const Ch one  = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
980.1054 -
980.1055 -    // Note that this function may access (when
980.1056 -    // dump_all == true) bits beyond position size() - 1
980.1057 -
980.1058 -    typedef typename dynamic_bitset<B, A>::size_type size_type;
980.1059 -
980.1060 -    const size_type len = dump_all?
980.1061 -         dynamic_bitset<B, A>::bits_per_block * b.num_blocks():
980.1062 -         b.size();
980.1063 -    s.assign (len, zero);
980.1064 -
980.1065 -    for (size_type i = 0; i < len; ++i) {
980.1066 -        if (b.m_unchecked_test(i))
980.1067 -            Tr::assign(s[len - 1 - i], one);
980.1068 -
980.1069 -    }
980.1070 -
980.1071 -}
980.1072 -
980.1073 -
980.1074 -// A comment similar to the one about the constructor from
980.1075 -// basic_string can be done here. Thanks to James Kanze for
980.1076 -// making me (Gennaro) realize this important separation of
980.1077 -// concerns issue, as well as many things about i18n.
980.1078 -//
980.1079 -template <typename Block, typename Allocator, typename stringT> // G.P.S.
980.1080 -inline void
980.1081 -to_string(const dynamic_bitset<Block, Allocator>& b, stringT& s)
980.1082 -{
980.1083 -    to_string_helper(b, s, false);
980.1084 -}
980.1085 -
980.1086 -
980.1087 -// Differently from to_string this function dumps out
980.1088 -// every bit of the internal representation (may be
980.1089 -// useful for debugging purposes)
980.1090 -//
980.1091 -template <typename B, typename A, typename stringT>
980.1092 -inline void
980.1093 -dump_to_string(const dynamic_bitset<B, A>& b, stringT& s) // G.P.S.
980.1094 -{
980.1095 -    to_string_helper(b, s, true /* =dump_all*/);
980.1096 -}
980.1097 -
980.1098 -template <typename Block, typename Allocator, typename BlockOutputIterator>
980.1099 -inline void
980.1100 -to_block_range(const dynamic_bitset<Block, Allocator>& b,
980.1101 -               BlockOutputIterator result)
980.1102 -{
980.1103 -    // note how this copies *all* bits, including the
980.1104 -    // unused ones in the last block (which are zero)
980.1105 -    std::copy(b.m_bits.begin(), b.m_bits.end(), result); // [gps]
980.1106 -}
980.1107 -
980.1108 -template <typename Block, typename Allocator>
980.1109 -unsigned long dynamic_bitset<Block, Allocator>::
980.1110 -to_ulong() const
980.1111 -{
980.1112 -
980.1113 -  if (m_num_bits == 0)
980.1114 -      return 0; // convention
980.1115 -
980.1116 -  // Check for overflows. This may be a performance burden on very
980.1117 -  // large bitsets but is required by the specification, sorry
980.1118 -  if (find_next(ulong_width - 1) != npos)
980.1119 -    throw std::overflow_error("boost::dynamic_bitset::to_ulong overflow");
980.1120 -
980.1121 -
980.1122 -  // Ok, from now on we can be sure there's no "on" bit beyond
980.1123 -  // the allowed positions
980.1124 -
980.1125 -  if (bits_per_block >= ulong_width)
980.1126 -      return m_bits[0];
980.1127 -
980.1128 -
980.1129 -  size_type last_block = block_index((std::min)(m_num_bits-1, // gps
980.1130 -                                    (size_type)(ulong_width-1)));
980.1131 -  unsigned long result = 0;
980.1132 -  for (size_type i = 0; i <= last_block; ++i) {
980.1133 -
980.1134 -    assert((size_type)bits_per_block * i < (size_type)ulong_width); // gps
980.1135 -
980.1136 -    unsigned long piece = m_bits[i];
980.1137 -    result |= (piece << (bits_per_block * i));
980.1138 -  }
980.1139 -
980.1140 -  return result;
980.1141 -
980.1142 -}
980.1143 -
980.1144 -
980.1145 -template <typename Block, typename Allocator>
980.1146 -inline typename dynamic_bitset<Block, Allocator>::size_type
980.1147 -dynamic_bitset<Block, Allocator>::size() const
980.1148 -{
980.1149 -    return m_num_bits;
980.1150 -}
980.1151 -
980.1152 -template <typename Block, typename Allocator>
980.1153 -inline typename dynamic_bitset<Block, Allocator>::size_type
980.1154 -dynamic_bitset<Block, Allocator>::num_blocks() const
980.1155 -{
980.1156 -    return m_bits.size();
980.1157 -}
980.1158 -
980.1159 -template <typename Block, typename Allocator>
980.1160 -inline typename dynamic_bitset<Block, Allocator>::size_type
980.1161 -dynamic_bitset<Block, Allocator>::max_size() const
980.1162 -{
980.1163 -    // Semantics of vector<>::max_size() aren't very clear
980.1164 -    // (see lib issue 197) and many library implementations
980.1165 -    // simply return dummy values, _unrelated_ to the underlying
980.1166 -    // allocator.
980.1167 -    //
980.1168 -    // Given these problems, I was tempted to not provide this
980.1169 -    // function at all but the user could need it if he provides
980.1170 -    // his own allocator.
980.1171 -    //
980.1172 -
980.1173 -    const size_type m = detail::vector_max_size_workaround(m_bits);
980.1174 -
980.1175 -    return m <= (size_type(-1)/bits_per_block) ?
980.1176 -        m * bits_per_block :
980.1177 -        size_type(-1);
980.1178 -}
980.1179 -
980.1180 -template <typename Block, typename Allocator>
980.1181 -inline bool dynamic_bitset<Block, Allocator>::empty() const
980.1182 -{
980.1183 -  return size() == 0;
980.1184 -}
980.1185 -
980.1186 -#if 0 // gps
980.1187 -template <typename Block, typename Allocator>
980.1188 -inline void dynamic_bitset<Block, Allocator>::reserve(size_type n)
980.1189 -{
980.1190 -    assert(n <= max_size()); // PRE - G.P.S.
980.1191 -    m_bits.reserve(calc_num_blocks(n));
980.1192 -}
980.1193 -
980.1194 -template <typename Block, typename Allocator>
980.1195 -typename dynamic_bitset<Block, Allocator>::size_type
980.1196 -dynamic_bitset<Block, Allocator>::capacity() const
980.1197 -{
980.1198 -    // capacity is m_bits.capacity() * bits_per_block
980.1199 -    // unless that one overflows
980.1200 -    const size_type m = static_cast<size_type>(-1);
980.1201 -    const size_type q = m / bits_per_block;
980.1202 -
980.1203 -    const size_type c = m_bits.capacity();
980.1204 -
980.1205 -    return c <= q ?
980.1206 -        c * bits_per_block :
980.1207 -        m;
980.1208 -}
980.1209 -#endif
980.1210 -
980.1211 -template <typename Block, typename Allocator>
980.1212 -bool dynamic_bitset<Block, Allocator>::
980.1213 -is_subset_of(const dynamic_bitset<Block, Allocator>& a) const
980.1214 -{
980.1215 -    assert(size() == a.size());
980.1216 -    for (size_type i = 0; i < num_blocks(); ++i)
980.1217 -        if (m_bits[i] & ~a.m_bits[i])
980.1218 -            return false;
980.1219 -    return true;
980.1220 -}
980.1221 -
980.1222 -template <typename Block, typename Allocator>
980.1223 -bool dynamic_bitset<Block, Allocator>::
980.1224 -is_proper_subset_of(const dynamic_bitset<Block, Allocator>& a) const
980.1225 -{
980.1226 -    assert(size() == a.size());
980.1227 -    bool proper = false;
980.1228 -    for (size_type i = 0; i < num_blocks(); ++i) {
980.1229 -        Block bt = m_bits[i], ba = a.m_bits[i];
980.1230 -        if (ba & ~bt)
980.1231 -            proper = true;
980.1232 -        if (bt & ~ba)
980.1233 -            return false;
980.1234 -    }
980.1235 -    return proper;
980.1236 -}
980.1237 -
980.1238 -template <typename Block, typename Allocator>
980.1239 -bool dynamic_bitset<Block, Allocator>::intersects(const dynamic_bitset & b) const
980.1240 -{
980.1241 -    size_type common_blocks = num_blocks() < b.num_blocks()
980.1242 -                              ? num_blocks() : b.num_blocks();
980.1243 -
980.1244 -    for(size_type i = 0; i < common_blocks; ++i) {
980.1245 -        if(m_bits[i] & b.m_bits[i])
980.1246 -            return true;
980.1247 -    }
980.1248 -    return false;
980.1249 -}
980.1250 -
980.1251 -// --------------------------------
980.1252 -// lookup
980.1253 -
980.1254 -
980.1255 -// look for the first bit "on", starting
980.1256 -// from the block with index first_block
980.1257 -//
980.1258 -template <typename Block, typename Allocator>
980.1259 -typename dynamic_bitset<Block, Allocator>::size_type
980.1260 -dynamic_bitset<Block, Allocator>::m_do_find_from(size_type first_block) const
980.1261 -{
980.1262 -    size_type i = first_block;
980.1263 -
980.1264 -    // skip null blocks
980.1265 -    while (i < num_blocks() && m_bits[i] == 0)
980.1266 -        ++i;
980.1267 -
980.1268 -    if (i >= num_blocks())
980.1269 -        return npos; // not found
980.1270 -
980.1271 -    return i * bits_per_block + boost::lowest_bit(m_bits[i]);
980.1272 -
980.1273 -}
980.1274 -
980.1275 -
980.1276 -template <typename Block, typename Allocator>
980.1277 -typename dynamic_bitset<Block, Allocator>::size_type
980.1278 -dynamic_bitset<Block, Allocator>::find_first() const
980.1279 -{
980.1280 -    return m_do_find_from(0);
980.1281 -}
980.1282 -
980.1283 -
980.1284 -template <typename Block, typename Allocator>
980.1285 -typename dynamic_bitset<Block, Allocator>::size_type
980.1286 -dynamic_bitset<Block, Allocator>::find_next(size_type pos) const
980.1287 -{
980.1288 -
980.1289 -    const size_type sz = size();
980.1290 -    if (pos >= (sz-1) || sz == 0)
980.1291 -        return npos;
980.1292 -
980.1293 -    ++pos;
980.1294 -
980.1295 -    const size_type blk = block_index(pos);
980.1296 -    const block_width_type ind = bit_index(pos);
980.1297 -
980.1298 -    // mask out bits before pos
980.1299 -    const Block fore = m_bits[blk] & ( ~Block(0) << ind );
980.1300 -
980.1301 -    return fore?
980.1302 -        blk * bits_per_block + lowest_bit(fore)
980.1303 -        :
980.1304 -        m_do_find_from(blk + 1);
980.1305 -
980.1306 -}
980.1307 -
980.1308 -
980.1309 -
980.1310 -//-----------------------------------------------------------------------------
980.1311 -// comparison
980.1312 -
980.1313 -template <typename Block, typename Allocator>
980.1314 -bool operator==(const dynamic_bitset<Block, Allocator>& a,
980.1315 -                const dynamic_bitset<Block, Allocator>& b)
980.1316 -{
980.1317 -    return (a.m_num_bits == b.m_num_bits)
980.1318 -           && (a.m_bits == b.m_bits); // [gps]
980.1319 -}
980.1320 -
980.1321 -template <typename Block, typename Allocator>
980.1322 -inline bool operator!=(const dynamic_bitset<Block, Allocator>& a,
980.1323 -                       const dynamic_bitset<Block, Allocator>& b)
980.1324 -{
980.1325 -    return !(a == b);
980.1326 -}
980.1327 -
980.1328 -template <typename Block, typename Allocator>
980.1329 -bool operator<(const dynamic_bitset<Block, Allocator>& a,
980.1330 -               const dynamic_bitset<Block, Allocator>& b)
980.1331 -{
980.1332 -    assert(a.size() == b.size());
980.1333 -    typedef typename dynamic_bitset<Block, Allocator>::size_type size_type;
980.1334 -
980.1335 -    if (a.size() == 0)
980.1336 -      return false;
980.1337 -
980.1338 -    // Since we are storing the most significant bit
980.1339 -    // at pos == size() - 1, we need to do the comparisons in reverse.
980.1340 -
980.1341 -    // Compare a block at a time
980.1342 -    for (size_type i = a.num_blocks() - 1; i > 0; --i)
980.1343 -      if (a.m_bits[i] < b.m_bits[i])
980.1344 -        return true;
980.1345 -      else if (a.m_bits[i] > b.m_bits[i])
980.1346 -        return false;
980.1347 -
980.1348 -    if (a.m_bits[0] < b.m_bits[0])
980.1349 -      return true;
980.1350 -    else
980.1351 -      return false;
980.1352 -}
980.1353 -
980.1354 -template <typename Block, typename Allocator>
980.1355 -inline bool operator<=(const dynamic_bitset<Block, Allocator>& a,
980.1356 -                       const dynamic_bitset<Block, Allocator>& b)
980.1357 -{
980.1358 -    return !(a > b);
980.1359 -}
980.1360 -
980.1361 -template <typename Block, typename Allocator>
980.1362 -inline bool operator>(const dynamic_bitset<Block, Allocator>& a,
980.1363 -                      const dynamic_bitset<Block, Allocator>& b)
980.1364 -{
980.1365 -    return b < a;
980.1366 -}
980.1367 -
980.1368 -template <typename Block, typename Allocator>
980.1369 -inline bool operator>=(const dynamic_bitset<Block, Allocator>& a,
980.1370 -                       const dynamic_bitset<Block, Allocator>& b)
980.1371 -{
980.1372 -    return !(a < b);
980.1373 -}
980.1374 -
980.1375 -//-----------------------------------------------------------------------------
980.1376 -// stream operations
980.1377 -
980.1378 -#ifdef BOOST_OLD_IOSTREAMS
980.1379 -template < typename Block, typename Alloc>
980.1380 -std::ostream&
980.1381 -operator<<(std::ostream& os, const dynamic_bitset<Block, Alloc>& b)
980.1382 -{
980.1383 -    // NOTE: since this is aimed at "classic" iostreams, exception
980.1384 -    // masks on the stream are not supported. The library that
980.1385 -    // ships with gcc 2.95 has an exceptions() member function but
980.1386 -    // nothing is actually implemented; not even the class ios::failure.
980.1387 -
980.1388 -    using namespace std;
980.1389 -
980.1390 -    const ios::iostate ok = ios::goodbit;
980.1391 -    ios::iostate err = ok;
980.1392 -
980.1393 -    if (os.opfx()) { // gps
980.1394 -
980.1395 -        //try
980.1396 -        typedef typename dynamic_bitset<Block, Alloc>::size_type bitsetsize_type;
980.1397 -
980.1398 -        const bitsetsize_type sz = b.size();
980.1399 -        std::streambuf * buf = os.rdbuf();
980.1400 -        size_t npad = os.width() <= 0  // careful: os.width() is signed (and can be < 0)
980.1401 -            || (bitsetsize_type) os.width() <= sz? 0 : os.width() - sz; //- gps
980.1402 -
980.1403 -        const char fill_char = os.fill();
980.1404 -        const ios::fmtflags adjustfield = os.flags() & ios::adjustfield;
980.1405 -
980.1406 -        // if needed fill at left; pad is decresed along the way
980.1407 -        if (adjustfield != ios::left) {
980.1408 -            for (; 0 < npad; --npad)
980.1409 -                if (fill_char != buf->sputc(fill_char)) {
980.1410 -                    err |= ios::failbit;   // gps
980.1411 -                    break;
980.1412 -                }
980.1413 -        }
980.1414 -
980.1415 -        if (err == ok) {
980.1416 -            // output the bitset
980.1417 -            for (bitsetsize_type i = b.size(); 0 < i; --i) {// G.P.S.
980.1418 -                const char dig = b.test(i-1)? '1' : '0';
980.1419 -                if (EOF == buf->sputc(dig)) { // ok?? gps
980.1420 -                    err |= ios::failbit;
980.1421 -                    break;
980.1422 -                }
980.1423 -            }
980.1424 -        }
980.1425 -
980.1426 -        if (err == ok) {
980.1427 -            // if needed fill at right
980.1428 -            for (; 0 < npad; --npad) {
980.1429 -                if (fill_char != buf->sputc(fill_char)) {
980.1430 -                    err |= ios::failbit;
980.1431 -                    break;
980.1432 -                }
980.1433 -            }
980.1434 -        }
980.1435 -
980.1436 -        os.osfx();
980.1437 -        os.width(0);
980.1438 -
980.1439 -    } // if opfx
980.1440 -
980.1441 -    if(err != ok)
980.1442 -        os.setstate(err); // assume this does NOT throw - gps
980.1443 -    return os;
980.1444 -
980.1445 -}
980.1446 -#else
980.1447 -
980.1448 -template <typename Ch, typename Tr, typename Block, typename Alloc>
980.1449 -std::basic_ostream<Ch, Tr>&
980.1450 -operator<<(std::basic_ostream<Ch, Tr>& os,
980.1451 -           const dynamic_bitset<Block, Alloc>& b)
980.1452 -{
980.1453 -
980.1454 -    using namespace std;
980.1455 -
980.1456 -    const ios_base::iostate ok = ios_base::goodbit;
980.1457 -    ios_base::iostate err = ok;
980.1458 -
980.1459 -    typename basic_ostream<Ch, Tr>::sentry cerberos(os);
980.1460 -    if (cerberos) {
980.1461 -
980.1462 -        BOOST_DYNAMIC_BITSET_CTYPE_FACET(Ch, fac, os.getloc());
980.1463 -        const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0');
980.1464 -        const Ch one  = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
980.1465 -
980.1466 -        try {
980.1467 -
980.1468 -            typedef typename dynamic_bitset<Block, Alloc>::size_type bitsetsize_type;
980.1469 -            typedef basic_streambuf<Ch, Tr> buffer_type; // G.P.S.
980.1470 -
980.1471 -            buffer_type * buf = os.rdbuf();
980.1472 -            size_t npad = os.width() <= 0  // careful: os.width() is signed (and can be < 0)
980.1473 -                || (bitsetsize_type) os.width() <= b.size()? 0 : os.width() - b.size(); //- G.P.S.
980.1474 -
980.1475 -            const Ch fill_char = os.fill();
980.1476 -            const ios_base::fmtflags adjustfield = os.flags() & ios_base::adjustfield;
980.1477 -
980.1478 -            // if needed fill at left; pad is decresed along the way
980.1479 -            if (adjustfield != ios_base::left) {
980.1480 -                for (; 0 < npad; --npad)
980.1481 -                    if (Tr::eq_int_type(Tr::eof(), buf->sputc(fill_char))) {
980.1482 -                          err |= ios_base::failbit;   // G.P.S.
980.1483 -                          break;
980.1484 -                    }
980.1485 -            }
980.1486 -
980.1487 -            if (err == ok) {
980.1488 -                // output the bitset
980.1489 -                for (bitsetsize_type i = b.size(); 0 < i; --i) {// G.P.S.
980.1490 -                    typename buffer_type::int_type
980.1491 -                        ret = buf->sputc(b.test(i-1)? one : zero);
980.1492 -                    if (Tr::eq_int_type(Tr::eof(), ret)) {
980.1493 -                        err |= ios_base::failbit;
980.1494 -                        break;
980.1495 -                    }
980.1496 -                }
980.1497 -            }
980.1498 -
980.1499 -            if (err == ok) {
980.1500 -                // if needed fill at right
980.1501 -                for (; 0 < npad; --npad) {
980.1502 -                    if (Tr::eq_int_type(Tr::eof(), buf->sputc(fill_char))) {
980.1503 -                        err |= ios_base::failbit;
980.1504 -                        break;
980.1505 -                    }
980.1506 -                }
980.1507 -            }
980.1508 -
980.1509 -
980.1510 -            os.width(0);
980.1511 -
980.1512 -        } catch (...) { // see std 27.6.1.1/4
980.1513 -            bool rethrow = false;
980.1514 -            try { os.setstate(ios_base::failbit); } catch (...) { rethrow = true; }
980.1515 -
980.1516 -            if (rethrow)
980.1517 -                throw;
980.1518 -        }
980.1519 -    }
980.1520 -
980.1521 -    if(err != ok)
980.1522 -        os.setstate(err); // may throw exception
980.1523 -    return os;
980.1524 -
980.1525 -}
980.1526 -#endif
980.1527 -
980.1528 -
980.1529 -#ifdef BOOST_OLD_IOSTREAMS
980.1530 -
980.1531 -    // gps - A sentry-like class that calls isfx in its
980.1532 -    // destructor. Necessary because bit_appender::do_append may throw.
980.1533 -    class pseudo_sentry {
980.1534 -        std::istream & m_r;
980.1535 -        const bool m_ok;
980.1536 -    public:
980.1537 -        explicit pseudo_sentry(std::istream & r) : m_r(r), m_ok(r.ipfx(0)) { }
980.1538 -        ~pseudo_sentry() { m_r.isfx(); }
980.1539 -        operator bool() const { return m_ok; }
980.1540 -    };
980.1541 -
980.1542 -template <typename Block, typename Alloc>
980.1543 -std::istream&
980.1544 -operator>>(std::istream& is, dynamic_bitset<Block, Alloc>& b)
980.1545 -{
980.1546 -
980.1547 -// Extractor for classic IO streams (libstdc++ < 3.0)
980.1548 -// ----------------------------------------------------//
980.1549 -//  It's assumed that the stream buffer functions, and
980.1550 -//  the stream's setstate() _cannot_ throw.
980.1551 -
980.1552 -
980.1553 -    typedef dynamic_bitset<Block, Alloc> bitset_type;
980.1554 -    typedef typename bitset_type::size_type size_type;
980.1555 -
980.1556 -    std::ios::iostate err = std::ios::goodbit; // gps
980.1557 -    pseudo_sentry cerberos(is); // skips whitespaces
980.1558 -    if(cerberos) {
980.1559 -
980.1560 -        b.clear();
980.1561 -
980.1562 -        const std::streamsize w = is.width();
980.1563 -        const size_type limit = w > 0 && static_cast<size_type>(w) < b.max_size()// gps
980.1564 -                                                         ? w : b.max_size();
980.1565 -        typename bitset_type::bit_appender appender(b);
980.1566 -        std::streambuf * buf = is.rdbuf();
980.1567 -        for(int c = buf->sgetc(); appender.get_count() < limit; c = buf->snextc() ) {
980.1568 -
980.1569 -            if (c == EOF) {
980.1570 -                err |= std::ios::eofbit; // G.P.S.
980.1571 -                break;
980.1572 -            }
980.1573 -            else if (char(c) != '0' && char(c) != '1')
980.1574 -                break; // non digit character
980.1575 -
980.1576 -            else {
980.1577 -                try {
980.1578 -                    //throw std::bad_alloc(); // gps
980.1579 -                    appender.do_append(char(c) == '1');
980.1580 -                }
980.1581 -                catch(...) {
980.1582 -                    is.setstate(std::ios::failbit); // assume this can't throw
980.1583 -                    throw;
980.1584 -                }
980.1585 -            }
980.1586 -
980.1587 -        } // for
980.1588 -    }
980.1589 -
980.1590 -    is.width(0); // gps
980.1591 -    if (b.size() == 0)
980.1592 -        err |= std::ios::failbit;
980.1593 -    if (err != std::ios::goodbit) // gps
980.1594 -        is.setstate (err); // may throw
980.1595 -
980.1596 -    return is;
980.1597 -}
980.1598 -
980.1599 -#else // BOOST_OLD_IOSTREAMS
980.1600 -
980.1601 -template <typename Ch, typename Tr, typename Block, typename Alloc>
980.1602 -std::basic_istream<Ch, Tr>&
980.1603 -operator>>(std::basic_istream<Ch, Tr>& is, dynamic_bitset<Block, Alloc>& b)
980.1604 -{
980.1605 -
980.1606 -    using namespace std;
980.1607 -
980.1608 -    typedef dynamic_bitset<Block, Alloc> bitset_type;
980.1609 -    typedef typename bitset_type::size_type size_type;
980.1610 -
980.1611 -    const streamsize w = is.width();
980.1612 -    const size_type limit = 0 < w && static_cast<size_type>(w) < b.max_size()? // gps
980.1613 -                                         w : b.max_size();
980.1614 -
980.1615 -    ios_base::iostate err = ios_base::goodbit; // gps
980.1616 -    typename basic_istream<Ch, Tr>::sentry cerberos(is); // skips whitespaces
980.1617 -    if(cerberos) {
980.1618 -
980.1619 -        // in accordance with prop. resol. of lib DR 303 [last checked 4 Feb 2004]
980.1620 -        BOOST_DYNAMIC_BITSET_CTYPE_FACET(Ch, fac, is.getloc());
980.1621 -        const Ch zero = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '0');
980.1622 -        const Ch one  = BOOST_DYNAMIC_BITSET_WIDEN_CHAR(fac, '1');
980.1623 -
980.1624 -        b.clear();
980.1625 -        try {
980.1626 -            typename bitset_type::bit_appender appender(b);
980.1627 -            basic_streambuf <Ch, Tr> * buf = is.rdbuf();
980.1628 -            typename Tr::int_type c = buf->sgetc(); // G.P.S.
980.1629 -            for( ; appender.get_count() < limit; c = buf->snextc() ) {
980.1630 -
980.1631 -                if (Tr::eq_int_type(Tr::eof(), c)) {
980.1632 -                    err |= ios_base::eofbit; // G.P.S.
980.1633 -                    break;
980.1634 -                }
980.1635 -                else {
980.1636 -                    const Ch to_c = Tr::to_char_type(c);
980.1637 -                    const bool is_one = Tr::eq(to_c, one);
980.1638 -
980.1639 -                    if (!is_one && !Tr::eq(to_c, zero))
980.1640 -                        break; // non digit character
980.1641 -
980.1642 -                    appender.do_append(is_one);
980.1643 -
980.1644 -                }
980.1645 -
980.1646 -            } // for
980.1647 -        }
980.1648 -        catch (...) {
980.1649 -            // catches from stream buf, or from vector:
980.1650 -            //
980.1651 -            // bits_stored bits have been extracted and stored, and
980.1652 -            // either no further character is extractable or we can't
980.1653 -            // append to the underlying vector (out of memory) gps
980.1654 -
980.1655 -            bool rethrow = false;   // see std 27.6.1.1/4
980.1656 -            try { is.setstate(ios_base::badbit); }
980.1657 -            catch(...) { rethrow = true; }
980.1658 -
980.1659 -            if (rethrow)
980.1660 -                throw;
980.1661 -
980.1662 -        }
980.1663 -    }
980.1664 -
980.1665 -    is.width(0); // gps
980.1666 -    if (b.size() == 0 /*|| !cerberos*/)
980.1667 -        err |= ios_base::failbit;
980.1668 -    if (err != ios_base::goodbit) // gps
980.1669 -        is.setstate (err); // may throw
980.1670 -
980.1671 -    return is;
980.1672 -
980.1673 -}
980.1674 -
980.1675 -
980.1676 -#endif
980.1677 -
980.1678 -
980.1679 -//-----------------------------------------------------------------------------
980.1680 -// bitset operations
980.1681 -
980.1682 -template <typename Block, typename Allocator>
980.1683 -dynamic_bitset<Block, Allocator>
980.1684 -operator&(const dynamic_bitset<Block, Allocator>& x,
980.1685 -          const dynamic_bitset<Block, Allocator>& y)
980.1686 -{
980.1687 -    dynamic_bitset<Block, Allocator> b(x);
980.1688 -    return b &= y;
980.1689 -}
980.1690 -
980.1691 -template <typename Block, typename Allocator>
980.1692 -dynamic_bitset<Block, Allocator>
980.1693 -operator|(const dynamic_bitset<Block, Allocator>& x,
980.1694 -          const dynamic_bitset<Block, Allocator>& y)
980.1695 -{
980.1696 -    dynamic_bitset<Block, Allocator> b(x);
980.1697 -    return b |= y;
980.1698 -}
980.1699 -
980.1700 -template <typename Block, typename Allocator>
980.1701 -dynamic_bitset<Block, Allocator>
980.1702 -operator^(const dynamic_bitset<Block, Allocator>& x,
980.1703 -          const dynamic_bitset<Block, Allocator>& y)
980.1704 -{
980.1705 -    dynamic_bitset<Block, Allocator> b(x);
980.1706 -    return b ^= y;
980.1707 -}
980.1708 -
980.1709 -template <typename Block, typename Allocator>
980.1710 -dynamic_bitset<Block, Allocator>
980.1711 -operator-(const dynamic_bitset<Block, Allocator>& x,
980.1712 -          const dynamic_bitset<Block, Allocator>& y)
980.1713 -{
980.1714 -    dynamic_bitset<Block, Allocator> b(x);
980.1715 -    return b -= y;
980.1716 -}
980.1717 -
980.1718 -//-----------------------------------------------------------------------------
980.1719 -// namespace scope swap
980.1720 -
980.1721 -template<typename Block, typename Allocator>
980.1722 -inline void
980.1723 -swap(dynamic_bitset<Block, Allocator>& left,
980.1724 -     dynamic_bitset<Block, Allocator>& right) // no throw
980.1725 -{
980.1726 -    left.swap(right); // gps
980.1727 -}
980.1728 -
980.1729 -
980.1730 -//-----------------------------------------------------------------------------
980.1731 -// private (on conforming compilers) member functions
980.1732 -
980.1733 -
980.1734 -template <typename Block, typename Allocator>
980.1735 -inline typename dynamic_bitset<Block, Allocator>::size_type
980.1736 -dynamic_bitset<Block, Allocator>::calc_num_blocks(size_type num_bits)
980.1737 -{
980.1738 -    return num_bits / bits_per_block
980.1739 -           + static_cast<int>( num_bits % bits_per_block != 0 );
980.1740 -}
980.1741 -
980.1742 -// gives a reference to the highest block
980.1743 -//
980.1744 -template <typename Block, typename Allocator>
980.1745 -inline Block& dynamic_bitset<Block, Allocator>::m_highest_block()
980.1746 -{
980.1747 -    return const_cast<Block &>
980.1748 -           (static_cast<const dynamic_bitset *>(this)->m_highest_block());
980.1749 -}
980.1750 -
980.1751 -// gives a const-reference to the highest block
980.1752 -//
980.1753 -template <typename Block, typename Allocator>
980.1754 -inline const Block& dynamic_bitset<Block, Allocator>::m_highest_block() const
980.1755 -{
980.1756 -    assert(size() > 0 && num_blocks() > 0);
980.1757 -    return m_bits.back();
980.1758 -}
980.1759 -
980.1760 -
980.1761 -// If size() is not a multiple of bits_per_block
980.1762 -// then not all the bits in the last block are used.
980.1763 -// This function resets the unused bits (convenient
980.1764 -// for the implementation of many member functions)
980.1765 -//
980.1766 -template <typename Block, typename Allocator>
980.1767 -inline void dynamic_bitset<Block, Allocator>::m_zero_unused_bits()
980.1768 -{
980.1769 -    assert (num_blocks() == calc_num_blocks(m_num_bits));
980.1770 -
980.1771 -    // if != 0 this is the number of bits used in the last block
980.1772 -    const block_width_type extra_bits = count_extra_bits();
980.1773 -
980.1774 -    if (extra_bits != 0)
980.1775 -        m_highest_block() &= ~(~static_cast<Block>(0) << extra_bits);
980.1776 -
980.1777 -}
980.1778 -
980.1779 -// check class invariants
980.1780 -template <typename Block, typename Allocator>
980.1781 -bool dynamic_bitset<Block, Allocator>::m_check_invariants() const
980.1782 -{
980.1783 -    const block_width_type extra_bits = count_extra_bits();
980.1784 -    if (extra_bits > 0) {
980.1785 -        block_type const mask = (~static_cast<Block>(0) << extra_bits);
980.1786 -        if ((m_highest_block() & mask) != 0)
980.1787 -            return false;
980.1788 -    }
980.1789 -    if (m_bits.size() > m_bits.capacity() || num_blocks() != calc_num_blocks(size()))
980.1790 -        return false;
980.1791 -
980.1792 -    return true;
980.1793 -
980.1794 -}
980.1795 -
980.1796 -
980.1797 -} // namespace boost
980.1798 -
980.1799 -
980.1800 -#undef BOOST_BITSET_CHAR
980.1801 -
980.1802 -#endif // include guard
980.1803 -
   981.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   981.2 +++ b/epoc32/include/stdapis/boost/graph/adjacency_list.hpp	Wed Mar 31 12:27:01 2010 +0100
   981.3 @@ -0,0 +1,2832 @@
   981.4 +// -*- c++ -*-
   981.5 +//=======================================================================
   981.6 +// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
   981.7 +// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
   981.8 +//
   981.9 +// Distributed under the Boost Software License, Version 1.0. (See
  981.10 +// accompanying file LICENSE_1_0.txt or copy at
  981.11 +// http://www.boost.org/LICENSE_1_0.txt)
  981.12 +//=======================================================================
  981.13 +
  981.14 +#ifndef BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP
  981.15 +#define BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP
  981.16 +
  981.17 +#include <map> // for vertex_map in copy_impl
  981.18 +#include <boost/config.hpp>
  981.19 +#include <boost/detail/workaround.hpp>
  981.20 +#include <boost/operators.hpp>
  981.21 +#include <boost/property_map.hpp>
  981.22 +#include <boost/pending/integer_range.hpp>
  981.23 +#include <boost/graph/graph_traits.hpp>
  981.24 +#include <memory>
  981.25 +#include <algorithm>
  981.26 +#include <boost/limits.hpp>
  981.27 +
  981.28 +#include <boost/iterator/iterator_adaptor.hpp>
  981.29 +
  981.30 +#include <boost/pending/ct_if.hpp>
  981.31 +#include <boost/graph/graph_concepts.hpp>
  981.32 +#include <boost/pending/container_traits.hpp>
  981.33 +#include <boost/graph/detail/adj_list_edge_iterator.hpp>
  981.34 +#include <boost/graph/properties.hpp>
  981.35 +#include <boost/pending/property.hpp>
  981.36 +#include <boost/graph/adjacency_iterator.hpp>
  981.37 +#include <boost/static_assert.hpp>
  981.38 +
  981.39 +// Symbol truncation problems with MSVC, trying to shorten names.
  981.40 +#define stored_edge se_
  981.41 +#define stored_edge_property sep_
  981.42 +#define stored_edge_iter sei_
  981.43 +
  981.44 +/*
  981.45 +  Outline for this file:
  981.46 +
  981.47 +  out_edge_iterator and in_edge_iterator implementation
  981.48 +  edge_iterator for undirected graph
  981.49 +  stored edge types (these object live in the out-edge/in-edge lists)
  981.50 +  directed edges helper class
  981.51 +  directed graph helper class
  981.52 +  undirected graph helper class
  981.53 +  bidirectional graph helper class
  981.54 +  bidirectional graph helper class (without edge properties)
  981.55 +  bidirectional graph helper class (with edge properties)
  981.56 +  adjacency_list helper class
  981.57 +  adj_list_impl class
  981.58 +  vec_adj_list_impl class
  981.59 +  adj_list_gen class
  981.60 +  vertex property map
  981.61 +  edge property map
  981.62 +
  981.63 +
  981.64 +  Note: it would be nice to merge some of the undirected and
  981.65 +  bidirectional code... it is awful similar.
  981.66 + */
  981.67 +
  981.68 +
  981.69 +namespace boost {
  981.70 +
  981.71 +  namespace detail {
  981.72 +
  981.73 +    template <typename DirectedS>
  981.74 +    struct directed_category_traits {
  981.75 +      typedef directed_tag directed_category;
  981.76 +    };
  981.77 +
  981.78 +    template <>
  981.79 +    struct directed_category_traits<directedS> {
  981.80 +      typedef directed_tag directed_category;
  981.81 +    };
  981.82 +    template <>
  981.83 +    struct directed_category_traits<undirectedS> {
  981.84 +      typedef undirected_tag directed_category;
  981.85 +    };
  981.86 +    template <>
  981.87 +    struct directed_category_traits<bidirectionalS> {
  981.88 +      typedef bidirectional_tag directed_category;
  981.89 +    };
  981.90 +
  981.91 +    template <class Vertex>
  981.92 +    struct target_is {
  981.93 +      target_is(const Vertex& v) : m_target(v) { }
  981.94 +      template <class StoredEdge>
  981.95 +      bool operator()(const StoredEdge& e) const {
  981.96 +        return e.get_target() == m_target;
  981.97 +      }
  981.98 +      Vertex m_target;
  981.99 +    };
 981.100 +
 981.101 +    // O(E/V)
 981.102 +    template <class EdgeList, class vertex_descriptor>
 981.103 +    void erase_from_incidence_list(EdgeList& el, vertex_descriptor v,
 981.104 +                                   allow_parallel_edge_tag)
 981.105 +    {
 981.106 +      boost::graph_detail::erase_if(el, detail::target_is<vertex_descriptor>(v));
 981.107 +    }
 981.108 +    // O(log(E/V))
 981.109 +    template <class EdgeList, class vertex_descriptor>
 981.110 +    void erase_from_incidence_list(EdgeList& el, vertex_descriptor v,
 981.111 +                                   disallow_parallel_edge_tag)
 981.112 +    {
 981.113 +      typedef typename EdgeList::value_type StoredEdge;
 981.114 +      el.erase(StoredEdge(v));
 981.115 +    }
 981.116 +
 981.117 +    //=========================================================================
 981.118 +    // Out-Edge and In-Edge Iterator Implementation
 981.119 +
 981.120 +    template <class BaseIter, class VertexDescriptor, class EdgeDescriptor, class Difference>
 981.121 +    struct out_edge_iter
 981.122 +      : iterator_adaptor<
 981.123 +            out_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 981.124 +          , BaseIter
 981.125 +          , EdgeDescriptor
 981.126 +          , use_default
 981.127 +          , EdgeDescriptor
 981.128 +          , Difference
 981.129 +        >
 981.130 +    {
 981.131 +      typedef iterator_adaptor<
 981.132 +          out_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 981.133 +        , BaseIter
 981.134 +        , EdgeDescriptor
 981.135 +        , use_default
 981.136 +        , EdgeDescriptor
 981.137 +        , Difference
 981.138 +      > super_t;
 981.139 +        
 981.140 +      inline out_edge_iter() { }
 981.141 +        inline out_edge_iter(const BaseIter& i, const VertexDescriptor& src)
 981.142 +          : super_t(i), m_src(src) { }
 981.143 +
 981.144 +      inline EdgeDescriptor
 981.145 +      dereference() const
 981.146 +      {
 981.147 +        return EdgeDescriptor(m_src, (*this->base()).get_target(), 
 981.148 +                              &(*this->base()).get_property());
 981.149 +      }
 981.150 +      VertexDescriptor m_src;
 981.151 +    };
 981.152 +  
 981.153 +    template <class BaseIter, class VertexDescriptor, class EdgeDescriptor, class Difference>
 981.154 +    struct in_edge_iter
 981.155 +      : iterator_adaptor<
 981.156 +            in_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 981.157 +          , BaseIter
 981.158 +          , EdgeDescriptor
 981.159 +          , use_default
 981.160 +          , EdgeDescriptor
 981.161 +          , Difference
 981.162 +        >
 981.163 +    {
 981.164 +      typedef iterator_adaptor<
 981.165 +          in_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 981.166 +        , BaseIter
 981.167 +        , EdgeDescriptor
 981.168 +        , use_default
 981.169 +        , EdgeDescriptor
 981.170 +        , Difference
 981.171 +      > super_t;
 981.172 +        
 981.173 +      inline in_edge_iter() { }
 981.174 +      inline in_edge_iter(const BaseIter& i, const VertexDescriptor& src) 
 981.175 +        : super_t(i), m_src(src) { }
 981.176 +
 981.177 +      inline EdgeDescriptor
 981.178 +      dereference() const
 981.179 +      {
 981.180 +        return EdgeDescriptor((*this->base()).get_target(), m_src,
 981.181 +                              &this->base()->get_property());
 981.182 +      }
 981.183 +      VertexDescriptor m_src;
 981.184 +    };
 981.185 +
 981.186 +    //=========================================================================
 981.187 +    // Undirected Edge Iterator Implementation
 981.188 +
 981.189 +    template <class EdgeIter, class EdgeDescriptor, class Difference>
 981.190 +    struct undirected_edge_iter
 981.191 +      : iterator_adaptor<
 981.192 +            undirected_edge_iter<EdgeIter, EdgeDescriptor, Difference>
 981.193 +          , EdgeIter
 981.194 +          , EdgeDescriptor
 981.195 +          , use_default
 981.196 +          , EdgeDescriptor
 981.197 +          , Difference
 981.198 +        >
 981.199 +    {
 981.200 +      typedef iterator_adaptor<
 981.201 +          undirected_edge_iter<EdgeIter, EdgeDescriptor, Difference>
 981.202 +        , EdgeIter
 981.203 +        , EdgeDescriptor
 981.204 +        , use_default
 981.205 +        , EdgeDescriptor
 981.206 +        , Difference
 981.207 +      > super_t;
 981.208 +
 981.209 +      undirected_edge_iter() {}
 981.210 +        
 981.211 +      explicit undirected_edge_iter(EdgeIter i)
 981.212 +          : super_t(i) {}
 981.213 +        
 981.214 +      inline EdgeDescriptor
 981.215 +      dereference() const {
 981.216 +        return EdgeDescriptor(
 981.217 +            (*this->base()).m_source
 981.218 +          , (*this->base()).m_target
 981.219 +          , &this->base()->get_property());
 981.220 +      }
 981.221 +    };
 981.222 +
 981.223 +    //=========================================================================
 981.224 +    // Edge Storage Types (stored in the out-edge/in-edge lists)
 981.225 +
 981.226 +    template <class Vertex>
 981.227 +    class stored_edge
 981.228 +      : public boost::equality_comparable1< stored_edge<Vertex>,
 981.229 +        boost::less_than_comparable1< stored_edge<Vertex> > >
 981.230 +    {
 981.231 +    public:
 981.232 +      typedef no_property property_type;
 981.233 +      inline stored_edge() { }
 981.234 +      inline stored_edge(Vertex target, const no_property& = no_property())
 981.235 +        : m_target(target) { }
 981.236 +      // Need to write this explicitly so stored_edge_property can
 981.237 +      // invoke Base::operator= (at least, for SGI MIPSPro compiler)
 981.238 +      inline stored_edge& operator=(const stored_edge& x) {
 981.239 +        m_target = x.m_target;
 981.240 +        return *this;
 981.241 +      }
 981.242 +      inline Vertex& get_target() const { return m_target; }
 981.243 +      inline const no_property& get_property() const { return s_prop; }
 981.244 +      inline bool operator==(const stored_edge& x) const
 981.245 +        { return m_target == x.get_target(); }
 981.246 +      inline bool operator<(const stored_edge& x) const
 981.247 +        { return m_target < x.get_target(); }
 981.248 +      //protected: need to add hash<> as a friend
 981.249 +      static no_property s_prop;
 981.250 +      // Sometimes target not used as key in the set, and in that case
 981.251 +      // it is ok to change the target.
 981.252 +      mutable Vertex m_target;
 981.253 +    };
 981.254 +    template <class Vertex>
 981.255 +    no_property stored_edge<Vertex>::s_prop;
 981.256 +
 981.257 +    template <class Vertex, class Property>
 981.258 +    class stored_edge_property : public stored_edge<Vertex> {
 981.259 +      typedef stored_edge_property self;
 981.260 +      typedef stored_edge<Vertex> Base;
 981.261 +    public:
 981.262 +      typedef Property property_type;
 981.263 +      inline stored_edge_property() { }
 981.264 +      inline stored_edge_property(Vertex target,
 981.265 +                                  const Property& p = Property())
 981.266 +        : stored_edge<Vertex>(target), m_property(new Property(p)) { }
 981.267 +      stored_edge_property(const self& x) 
 981.268 +        : Base(x), m_property(const_cast<self&>(x).m_property) { }
 981.269 +      self& operator=(const self& x) {
 981.270 +        Base::operator=(x);
 981.271 +        m_property = const_cast<self&>(x).m_property; 
 981.272 +        return *this;
 981.273 +      }
 981.274 +      inline Property& get_property() { return *m_property; }
 981.275 +      inline const Property& get_property() const { return *m_property; }
 981.276 +    protected:
 981.277 +      // Holding the property by-value causes edge-descriptor
 981.278 +      // invalidation for add_edge() with EdgeList=vecS. Instead we
 981.279 +      // hold a pointer to the property. std::auto_ptr is not
 981.280 +      // a perfect fit for the job, but it is darn close.
 981.281 +      std::auto_ptr<Property> m_property;
 981.282 +    };
 981.283 +
 981.284 +
 981.285 +    template <class Vertex, class Iter, class Property>
 981.286 +    class stored_edge_iter
 981.287 +      : public stored_edge<Vertex>
 981.288 +    {
 981.289 +    public:
 981.290 +      typedef Property property_type;
 981.291 +      inline stored_edge_iter() { }
 981.292 +      inline stored_edge_iter(Vertex v)
 981.293 +        : stored_edge<Vertex>(v) { }
 981.294 +      inline stored_edge_iter(Vertex v, Iter i, void* = 0)
 981.295 +        : stored_edge<Vertex>(v), m_iter(i) { }
 981.296 +      inline Property& get_property() { return m_iter->get_property(); }
 981.297 +      inline const Property& get_property() const { 
 981.298 +        return m_iter->get_property();
 981.299 +      }
 981.300 +      inline Iter get_iter() const { return m_iter; }
 981.301 +    protected:
 981.302 +      Iter m_iter;
 981.303 +    };
 981.304 +
 981.305 +    // For when the EdgeList is a std::vector.
 981.306 +    // Want to make the iterator stable, so use an offset
 981.307 +    // instead of an iterator into a std::vector
 981.308 +    template <class Vertex, class EdgeVec, class Property>
 981.309 +    class stored_ra_edge_iter
 981.310 +      : public stored_edge<Vertex>
 981.311 +    {
 981.312 +      typedef typename EdgeVec::iterator Iter;
 981.313 +    public:
 981.314 +      typedef Property property_type;
 981.315 +      inline stored_ra_edge_iter() { }
 981.316 +      inline stored_ra_edge_iter(Vertex v, Iter i = Iter(), 
 981.317 +                                 EdgeVec* edge_vec = 0)
 981.318 +        : stored_edge<Vertex>(v), m_i(i - edge_vec->begin()), m_vec(edge_vec){ }
 981.319 +      inline Property& get_property() { return (*m_vec)[m_i].get_property(); }
 981.320 +      inline const Property& get_property() const { 
 981.321 +        return (*m_vec)[m_i].get_property();
 981.322 +      }
 981.323 +      inline Iter get_iter() const { return m_vec->begin() + m_i; }
 981.324 +    protected:
 981.325 +      std::size_t m_i;
 981.326 +      EdgeVec* m_vec;
 981.327 +    };
 981.328 +
 981.329 +  } // namespace detail
 981.330 +    
 981.331 +  template <class Tag, class Vertex, class Property>
 981.332 +  const typename property_value<Property,Tag>::type&
 981.333 +  get(Tag property_tag,
 981.334 +      const detail::stored_edge_property<Vertex, Property>& e)
 981.335 +  {
 981.336 +    return get_property_value(e.get_property(), property_tag);
 981.337 +  }
 981.338 +
 981.339 +  template <class Tag, class Vertex, class Iter, class Property>
 981.340 +  const typename property_value<Property,Tag>::type&
 981.341 +  get(Tag property_tag,
 981.342 +      const detail::stored_edge_iter<Vertex, Iter, Property>& e)
 981.343 +  {
 981.344 +    return get_property_value(e.get_property(), property_tag);
 981.345 +  }
 981.346 +
 981.347 +  template <class Tag, class Vertex, class EdgeVec, class Property>
 981.348 +  const typename property_value<Property,Tag>::type&
 981.349 +  get(Tag property_tag,
 981.350 +      const detail::stored_ra_edge_iter<Vertex, EdgeVec, Property>& e)
 981.351 +  {
 981.352 +    return get_property_value(e.get_property(), property_tag);
 981.353 +  }
 981.354 +    
 981.355 +    //=========================================================================
 981.356 +    // Directed Edges Helper Class
 981.357 +
 981.358 +    namespace detail {
 981.359 +
 981.360 +      // O(E/V)
 981.361 +      template <class edge_descriptor, class EdgeList, class StoredProperty>
 981.362 +      inline void
 981.363 +      remove_directed_edge_dispatch(edge_descriptor, EdgeList& el,
 981.364 +                                    StoredProperty& p)
 981.365 +      {
 981.366 +        for (typename EdgeList::iterator i = el.begin();
 981.367 +             i != el.end(); ++i)
 981.368 +          if (&(*i).get_property() == &p) {
 981.369 +            el.erase(i);
 981.370 +            return;
 981.371 +          }
 981.372 +      }
 981.373 +
 981.374 +      template <class incidence_iterator, class EdgeList, class Predicate>
 981.375 +      inline void
 981.376 +      remove_directed_edge_if_dispatch(incidence_iterator first,
 981.377 +                                       incidence_iterator last, 
 981.378 +                                       EdgeList& el, Predicate pred,
 981.379 +                                       boost::allow_parallel_edge_tag)
 981.380 +      {
 981.381 +        // remove_if
 981.382 +        while (first != last && !pred(*first))
 981.383 +          ++first;
 981.384 +        incidence_iterator i = first;
 981.385 +        if (first != last)
 981.386 +          for (; i != last; ++i)
 981.387 +            if (!pred(*i)) {
 981.388 +              *first.base() = *i.base();
 981.389 +              ++first;
 981.390 +            }
 981.391 +        el.erase(first.base(), el.end());
 981.392 +      }
 981.393 +      template <class incidence_iterator, class EdgeList, class Predicate>
 981.394 +      inline void
 981.395 +      remove_directed_edge_if_dispatch(incidence_iterator first,
 981.396 +                                       incidence_iterator last, 
 981.397 +                                       EdgeList& el, 
 981.398 +                                       Predicate pred,
 981.399 +                                       boost::disallow_parallel_edge_tag)
 981.400 +      {
 981.401 +        for (incidence_iterator next = first;
 981.402 +             first != last; first = next) {
 981.403 +          ++next;
 981.404 +          if (pred(*first))
 981.405 +            el.erase( first.base() );
 981.406 +        }
 981.407 +      }
 981.408 +
 981.409 +      template <class PropT, class Graph, class incidence_iterator, 
 981.410 +                class EdgeList, class Predicate>
 981.411 +      inline void
 981.412 +      undirected_remove_out_edge_if_dispatch(Graph& g, 
 981.413 +                                             incidence_iterator first,
 981.414 +                                             incidence_iterator last, 
 981.415 +                                             EdgeList& el, Predicate pred,
 981.416 +                                             boost::allow_parallel_edge_tag)
 981.417 +      {
 981.418 +        typedef typename Graph::global_edgelist_selector EdgeListS;
 981.419 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.420 +
 981.421 +        // remove_if
 981.422 +        while (first != last && !pred(*first))
 981.423 +          ++first;
 981.424 +        incidence_iterator i = first;
 981.425 +        bool self_loop_removed = false;
 981.426 +        if (first != last)
 981.427 +          for (; i != last; ++i) {
 981.428 +            if (self_loop_removed) {
 981.429 +              /* With self loops, the descriptor will show up
 981.430 +               * twice. The first time it will be removed, and now it
 981.431 +               * will be skipped.
 981.432 +               */
 981.433 +              self_loop_removed = false;
 981.434 +            }
 981.435 +            else if (!pred(*i)) {
 981.436 +              *first.base() = *i.base();
 981.437 +              ++first;
 981.438 +            } else {
 981.439 +              if (source(*i, g) == target(*i, g)) self_loop_removed = true;
 981.440 +              else {
 981.441 +                // Remove the edge from the target
 981.442 +                detail::remove_directed_edge_dispatch
 981.443 +                  (*i, 
 981.444 +                   g.out_edge_list(target(*i, g)), 
 981.445 +                   *(PropT*)(*i).get_property());
 981.446 +              }
 981.447 +
 981.448 +              // Erase the edge property
 981.449 +              g.m_edges.erase( (*i.base()).get_iter() );
 981.450 +            }
 981.451 +          }
 981.452 +        el.erase(first.base(), el.end());
 981.453 +      }
 981.454 +      template <class PropT, class Graph, class incidence_iterator, 
 981.455 +                class EdgeList, class Predicate>
 981.456 +      inline void
 981.457 +      undirected_remove_out_edge_if_dispatch(Graph& g, 
 981.458 +                                             incidence_iterator first,
 981.459 +                                             incidence_iterator last, 
 981.460 +                                             EdgeList& el, 
 981.461 +                                             Predicate pred,
 981.462 +                                             boost::disallow_parallel_edge_tag)
 981.463 +      {
 981.464 +        typedef typename Graph::global_edgelist_selector EdgeListS;
 981.465 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.466 +
 981.467 +        for (incidence_iterator next = first;
 981.468 +             first != last; first = next) {
 981.469 +          ++next;
 981.470 +          if (pred(*first)) {
 981.471 +            if (source(*first, g) != target(*first, g)) {
 981.472 +              // Remove the edge from the target
 981.473 +              detail::remove_directed_edge_dispatch
 981.474 +                (*first, 
 981.475 +                 g.out_edge_list(target(*first, g)), 
 981.476 +                 *(PropT*)(*first).get_property());
 981.477 +            }
 981.478 +
 981.479 +            // Erase the edge property
 981.480 +            g.m_edges.erase( (*first.base()).get_iter() );
 981.481 +
 981.482 +            // Erase the edge in the source
 981.483 +            el.erase( first.base() );
 981.484 +          }
 981.485 +        }
 981.486 +      }
 981.487 +
 981.488 +      // O(E/V)
 981.489 +      template <class edge_descriptor, class EdgeList, class StoredProperty>
 981.490 +      inline void
 981.491 +      remove_directed_edge_dispatch(edge_descriptor e, EdgeList& el,
 981.492 +                                    no_property&)
 981.493 +      {
 981.494 +        for (typename EdgeList::iterator i = el.begin();
 981.495 +             i != el.end(); ++i)
 981.496 +          if ((*i).get_target() == e.m_target) {
 981.497 +            el.erase(i);
 981.498 +            return;
 981.499 +          }
 981.500 +      }
 981.501 +
 981.502 +    } // namespace detail
 981.503 +
 981.504 +    template <class Config>
 981.505 +    struct directed_edges_helper {
 981.506 +
 981.507 +      // Placement of these overloaded remove_edge() functions
 981.508 +      // inside the class avoids a VC++ bug.
 981.509 +      
 981.510 +      // O(E/V)
 981.511 +      inline void
 981.512 +      remove_edge(typename Config::edge_descriptor e)
 981.513 +      {
 981.514 +        typedef typename Config::graph_type graph_type;
 981.515 +        graph_type& g = static_cast<graph_type&>(*this);
 981.516 +        typename Config::OutEdgeList& el = g.out_edge_list(source(e, g));
 981.517 +        typedef typename Config::OutEdgeList::value_type::property_type PType;
 981.518 +        detail::remove_directed_edge_dispatch(e, el,
 981.519 +                                              *(PType*)e.get_property());
 981.520 +      }
 981.521 +
 981.522 +      // O(1)
 981.523 +      inline void
 981.524 +      remove_edge(typename Config::out_edge_iterator iter)
 981.525 +      {
 981.526 +        typedef typename Config::graph_type graph_type;
 981.527 +        graph_type& g = static_cast<graph_type&>(*this);
 981.528 +        typename Config::edge_descriptor e = *iter;
 981.529 +        typename Config::OutEdgeList& el = g.out_edge_list(source(e, g));
 981.530 +        el.erase(iter.base());
 981.531 +      }
 981.532 +
 981.533 +    };
 981.534 +
 981.535 +    // O(1)
 981.536 +    template <class Config>
 981.537 +    inline std::pair<typename Config::edge_iterator, 
 981.538 +                     typename Config::edge_iterator>
 981.539 +    edges(const directed_edges_helper<Config>& g_)
 981.540 +    {
 981.541 +      typedef typename Config::graph_type graph_type;
 981.542 +      typedef typename Config::edge_iterator edge_iterator;
 981.543 +      const graph_type& cg = static_cast<const graph_type&>(g_);
 981.544 +      graph_type& g = const_cast<graph_type&>(cg);
 981.545 +      return std::make_pair( edge_iterator(g.vertex_set().begin(), 
 981.546 +                                           g.vertex_set().begin(), 
 981.547 +                                           g.vertex_set().end(), g),
 981.548 +                             edge_iterator(g.vertex_set().begin(),
 981.549 +                                           g.vertex_set().end(),
 981.550 +                                           g.vertex_set().end(), g) );
 981.551 +    }
 981.552 +
 981.553 +    //=========================================================================
 981.554 +    // Directed Graph Helper Class
 981.555 +
 981.556 +    struct adj_list_dir_traversal_tag :
 981.557 +      public virtual vertex_list_graph_tag,
 981.558 +      public virtual incidence_graph_tag,
 981.559 +      public virtual adjacency_graph_tag,
 981.560 +      public virtual edge_list_graph_tag { };
 981.561 +
 981.562 +    template <class Config>
 981.563 +    struct directed_graph_helper
 981.564 +      : public directed_edges_helper<Config> { 
 981.565 +      typedef typename Config::edge_descriptor edge_descriptor;
 981.566 +      typedef adj_list_dir_traversal_tag traversal_category;
 981.567 +    };
 981.568 +
 981.569 +    // O(E/V)
 981.570 +    template <class Config>
 981.571 +    inline void
 981.572 +    remove_edge(typename Config::vertex_descriptor u,
 981.573 +                typename Config::vertex_descriptor v,
 981.574 +                directed_graph_helper<Config>& g_)
 981.575 +    {
 981.576 +      typedef typename Config::graph_type graph_type;
 981.577 +      typedef typename Config::edge_parallel_category Cat;
 981.578 +      graph_type& g = static_cast<graph_type&>(g_);
 981.579 +      detail::erase_from_incidence_list(g.out_edge_list(u), v, Cat());
 981.580 +    }
 981.581 +
 981.582 +    template <class Config, class Predicate>
 981.583 +    inline void
 981.584 +    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
 981.585 +                       directed_graph_helper<Config>& g_)
 981.586 +    {
 981.587 +      typedef typename Config::graph_type graph_type;
 981.588 +      graph_type& g = static_cast<graph_type&>(g_);
 981.589 +      typename Config::out_edge_iterator first, last;
 981.590 +      tie(first, last) = out_edges(u, g);
 981.591 +      typedef typename Config::edge_parallel_category edge_parallel_category;
 981.592 +      detail::remove_directed_edge_if_dispatch
 981.593 +        (first, last, g.out_edge_list(u), pred, edge_parallel_category());
 981.594 +    }
 981.595 +
 981.596 +    template <class Config, class Predicate>
 981.597 +    inline void
 981.598 +    remove_edge_if(Predicate pred, directed_graph_helper<Config>& g_)
 981.599 +    {
 981.600 +      typedef typename Config::graph_type graph_type;
 981.601 +      graph_type& g = static_cast<graph_type&>(g_);
 981.602 +
 981.603 +      typename Config::vertex_iterator vi, vi_end;
 981.604 +      for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi)
 981.605 +        remove_out_edge_if(*vi, pred, g);
 981.606 +    }    
 981.607 +
 981.608 +    template <class EdgeOrIter, class Config>
 981.609 +    inline void
 981.610 +    remove_edge(EdgeOrIter e_or_iter, directed_graph_helper<Config>& g_)
 981.611 +    {
 981.612 +      g_.remove_edge(e_or_iter);
 981.613 +    }
 981.614 +
 981.615 +    // O(V + E) for allow_parallel_edges
 981.616 +    // O(V * log(E/V)) for disallow_parallel_edges
 981.617 +    template <class Config>
 981.618 +    inline void 
 981.619 +    clear_vertex(typename Config::vertex_descriptor u,
 981.620 +                 directed_graph_helper<Config>& g_)
 981.621 +    {
 981.622 +      typedef typename Config::graph_type graph_type;
 981.623 +      typedef typename Config::edge_parallel_category Cat;
 981.624 +      graph_type& g = static_cast<graph_type&>(g_);
 981.625 +      typename Config::vertex_iterator vi, viend;
 981.626 +      for (boost::tie(vi, viend) = vertices(g); vi != viend; ++vi)
 981.627 +        detail::erase_from_incidence_list(g.out_edge_list(*vi), u, Cat());
 981.628 +      g.out_edge_list(u).clear();
 981.629 +      // clear() should be a req of Sequence and AssociativeContainer,
 981.630 +      // or maybe just Container
 981.631 +    }
 981.632 +
 981.633 +    template <class Config>
 981.634 +    inline void 
 981.635 +    clear_out_edges(typename Config::vertex_descriptor u,
 981.636 +                    directed_graph_helper<Config>& g_)
 981.637 +    {
 981.638 +      typedef typename Config::graph_type graph_type;
 981.639 +      typedef typename Config::edge_parallel_category Cat;
 981.640 +      graph_type& g = static_cast<graph_type&>(g_);
 981.641 +      g.out_edge_list(u).clear();
 981.642 +      // clear() should be a req of Sequence and AssociativeContainer,
 981.643 +      // or maybe just Container
 981.644 +    }
 981.645 +
 981.646 +    // O(V), could do better...
 981.647 +    template <class Config>
 981.648 +    inline typename Config::edges_size_type
 981.649 +    num_edges(const directed_graph_helper<Config>& g_)
 981.650 +    {
 981.651 +      typedef typename Config::graph_type graph_type;
 981.652 +      const graph_type& g = static_cast<const graph_type&>(g_);
 981.653 +      typename Config::edges_size_type num_e = 0;
 981.654 +      typename Config::vertex_iterator vi, vi_end;
 981.655 +      for (boost::tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi)
 981.656 +        num_e += out_degree(*vi, g);
 981.657 +      return num_e;
 981.658 +    }
 981.659 +    // O(1) for allow_parallel_edge_tag
 981.660 +    // O(log(E/V)) for disallow_parallel_edge_tag
 981.661 +    template <class Config>
 981.662 +    inline std::pair<typename directed_graph_helper<Config>::edge_descriptor, bool>
 981.663 +    add_edge(typename Config::vertex_descriptor u, 
 981.664 +             typename Config::vertex_descriptor v,
 981.665 +             const typename Config::edge_property_type& p, 
 981.666 +             directed_graph_helper<Config>& g_)
 981.667 +    {
 981.668 +      typedef typename Config::edge_descriptor edge_descriptor;
 981.669 +      typedef typename Config::graph_type graph_type;
 981.670 +      typedef typename Config::StoredEdge StoredEdge;
 981.671 +      graph_type& g = static_cast<graph_type&>(g_);
 981.672 +      typename Config::OutEdgeList::iterator i; 
 981.673 +      bool inserted;
 981.674 +      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u), 
 981.675 +                                            StoredEdge(v, p));
 981.676 +      return std::make_pair(edge_descriptor(u, v, &(*i).get_property()), 
 981.677 +                            inserted);
 981.678 +    }
 981.679 +    // Did not use default argument here because that
 981.680 +    // causes Visual C++ to get confused.
 981.681 +    template <class Config>
 981.682 +    inline std::pair<typename Config::edge_descriptor, bool>
 981.683 +    add_edge(typename Config::vertex_descriptor u, 
 981.684 +             typename Config::vertex_descriptor v,
 981.685 +             directed_graph_helper<Config>& g_)
 981.686 +    {
 981.687 +      typename Config::edge_property_type p;
 981.688 +      return add_edge(u, v, p, g_);
 981.689 +    }
 981.690 +    //=========================================================================
 981.691 +    // Undirected Graph Helper Class
 981.692 +
 981.693 +    template <class Config>
 981.694 +    struct undirected_graph_helper;
 981.695 +
 981.696 +    struct undir_adj_list_traversal_tag : 
 981.697 +      public virtual vertex_list_graph_tag,
 981.698 +      public virtual incidence_graph_tag,
 981.699 +      public virtual adjacency_graph_tag,
 981.700 +      public virtual edge_list_graph_tag,
 981.701 +      public virtual bidirectional_graph_tag { };
 981.702 +
 981.703 +    namespace detail {
 981.704 +
 981.705 +      // using class with specialization for dispatch is a VC++ workaround.
 981.706 +      template <class StoredProperty>
 981.707 +      struct remove_undirected_edge_dispatch {
 981.708 +
 981.709 +        // O(E/V)
 981.710 +        template <class edge_descriptor, class Config>
 981.711 +        static void
 981.712 +        apply(edge_descriptor e, 
 981.713 +              undirected_graph_helper<Config>& g_, 
 981.714 +              StoredProperty& p)
 981.715 +        {
 981.716 +          typedef typename Config::global_edgelist_selector EdgeListS;
 981.717 +          BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.718 +
 981.719 +          typedef typename Config::graph_type graph_type;
 981.720 +          graph_type& g = static_cast<graph_type&>(g_);
 981.721 +          
 981.722 +          typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g));
 981.723 +          typename Config::OutEdgeList::iterator out_i = out_el.begin();
 981.724 +          for (; out_i != out_el.end(); ++out_i)
 981.725 +            if (&(*out_i).get_property() == &p) {
 981.726 +              out_el.erase(out_i);
 981.727 +              break;
 981.728 +            }
 981.729 +          typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g));
 981.730 +          typename Config::OutEdgeList::iterator in_i = in_el.begin();
 981.731 +          for (; in_i != in_el.end(); ++in_i)
 981.732 +            if (&(*in_i).get_property() == &p) {
 981.733 +              g.m_edges.erase((*in_i).get_iter());
 981.734 +              in_el.erase(in_i);
 981.735 +              return;
 981.736 +            }
 981.737 +        }
 981.738 +      };
 981.739 +
 981.740 +      template <>
 981.741 +      struct remove_undirected_edge_dispatch<no_property> {
 981.742 +        // O(E/V)
 981.743 +        template <class edge_descriptor, class Config>
 981.744 +        static void
 981.745 +        apply(edge_descriptor e,
 981.746 +              undirected_graph_helper<Config>& g_,
 981.747 +              no_property&)
 981.748 +        {
 981.749 +          typedef typename Config::global_edgelist_selector EdgeListS;
 981.750 +          BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.751 +
 981.752 +          typedef typename Config::graph_type graph_type;
 981.753 +          graph_type& g = static_cast<graph_type&>(g_);
 981.754 +          no_property* p = (no_property*)e.get_property();
 981.755 +          typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g));
 981.756 +          typename Config::OutEdgeList::iterator out_i = out_el.begin();
 981.757 +          for (; out_i != out_el.end(); ++out_i)
 981.758 +            if (&(*out_i).get_property() == p) {
 981.759 +              out_el.erase(out_i);
 981.760 +              break;
 981.761 +            }
 981.762 +          typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g));
 981.763 +          typename Config::OutEdgeList::iterator in_i = in_el.begin();
 981.764 +          for (; in_i != in_el.end(); ++in_i)
 981.765 +            if (&(*in_i).get_property() == p) {
 981.766 +              g.m_edges.erase((*in_i).get_iter());
 981.767 +              in_el.erase(in_i);
 981.768 +              return;
 981.769 +            }
 981.770 +        }
 981.771 +      };
 981.772 +
 981.773 +      // O(E/V)
 981.774 +      template <class Graph, class EdgeList, class Vertex>
 981.775 +      inline void
 981.776 +      remove_edge_and_property(Graph& g, EdgeList& el, Vertex v, 
 981.777 +                               boost::allow_parallel_edge_tag cat)
 981.778 +      {
 981.779 +        typedef typename Graph::global_edgelist_selector EdgeListS;
 981.780 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.781 +
 981.782 +        typedef typename EdgeList::value_type StoredEdge;
 981.783 +        typename EdgeList::iterator i = el.begin(), end = el.end();
 981.784 +        for (; i != end; ++i)
 981.785 +          if ((*i).get_target() == v)
 981.786 +            g.m_edges.erase((*i).get_iter());
 981.787 +        detail::erase_from_incidence_list(el, v, cat);
 981.788 +      }
 981.789 +      // O(log(E/V))
 981.790 +      template <class Graph, class EdgeList, class Vertex>
 981.791 +      inline void
 981.792 +      remove_edge_and_property(Graph& g, EdgeList& el, Vertex v, 
 981.793 +                               boost::disallow_parallel_edge_tag)
 981.794 +      {
 981.795 +        typedef typename Graph::global_edgelist_selector EdgeListS;
 981.796 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.797 +
 981.798 +        typedef typename EdgeList::value_type StoredEdge;
 981.799 +        typename EdgeList::iterator i = el.find(StoredEdge(v)), end = el.end();
 981.800 +        if (i != end) {
 981.801 +          g.m_edges.erase((*i).get_iter());
 981.802 +          el.erase(i);
 981.803 +        }
 981.804 +      }
 981.805 +
 981.806 +    } // namespace detail
 981.807 +
 981.808 +    template <class Vertex, class EdgeProperty>
 981.809 +    struct list_edge // short name due to VC++ truncation and linker problems
 981.810 +      : public boost::detail::edge_base<boost::undirected_tag, Vertex>
 981.811 +    {
 981.812 +      typedef EdgeProperty property_type;
 981.813 +      typedef boost::detail::edge_base<boost::undirected_tag, Vertex> Base;
 981.814 +      list_edge(Vertex u, Vertex v, const EdgeProperty& p = EdgeProperty())
 981.815 +        : Base(u, v), m_property(p) { }
 981.816 +      EdgeProperty& get_property() { return m_property; }
 981.817 +      const EdgeProperty& get_property() const { return m_property; }
 981.818 +      // the following methods should never be used, but are needed
 981.819 +      // to make SGI MIPSpro C++ happy
 981.820 +      list_edge() { }
 981.821 +      bool operator==(const list_edge&) const { return false; }
 981.822 +      bool operator<(const list_edge&) const { return false; }
 981.823 +      EdgeProperty m_property;
 981.824 +    };
 981.825 +
 981.826 +    template <class Config>
 981.827 +    struct undirected_graph_helper {
 981.828 +
 981.829 +      typedef undir_adj_list_traversal_tag traversal_category;
 981.830 +
 981.831 +      // Placement of these overloaded remove_edge() functions
 981.832 +      // inside the class avoids a VC++ bug.
 981.833 +
 981.834 +      // O(E/V)
 981.835 +      inline void
 981.836 +      remove_edge(typename Config::edge_descriptor e)
 981.837 +      {
 981.838 +        typedef typename Config::global_edgelist_selector EdgeListS;
 981.839 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.840 +
 981.841 +        typedef typename Config::OutEdgeList::value_type::property_type PType;
 981.842 +        detail::remove_undirected_edge_dispatch<PType>::apply
 981.843 +          (e, *this, *(PType*)e.get_property());
 981.844 +      }
 981.845 +      // O(E/V)
 981.846 +      inline void
 981.847 +      remove_edge(typename Config::out_edge_iterator iter)
 981.848 +      {
 981.849 +        this->remove_edge(*iter);
 981.850 +      }
 981.851 +    };
 981.852 +
 981.853 +    // Had to make these non-members to avoid accidental instantiation
 981.854 +    // on SGI MIPSpro C++
 981.855 +    template <class C>
 981.856 +    inline typename C::InEdgeList& 
 981.857 +    in_edge_list(undirected_graph_helper<C>&, 
 981.858 +                 typename C::vertex_descriptor v)
 981.859 +    {
 981.860 +      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
 981.861 +      return sv->m_out_edges;
 981.862 +    }
 981.863 +    template <class C>
 981.864 +    inline const typename C::InEdgeList& 
 981.865 +    in_edge_list(const undirected_graph_helper<C>&,
 981.866 +                 typename C::vertex_descriptor v) {
 981.867 +      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
 981.868 +      return sv->m_out_edges;
 981.869 +    }
 981.870 +
 981.871 +    // O(E/V)
 981.872 +    template <class EdgeOrIter, class Config>
 981.873 +    inline void
 981.874 +    remove_edge(EdgeOrIter e, undirected_graph_helper<Config>& g_)
 981.875 +    {
 981.876 +      typedef typename Config::global_edgelist_selector EdgeListS;
 981.877 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.878 +
 981.879 +      g_.remove_edge(e);
 981.880 +    }
 981.881 +
 981.882 +    // O(E/V) or O(log(E/V))
 981.883 +    template <class Config>
 981.884 +    void
 981.885 +    remove_edge(typename Config::vertex_descriptor u, 
 981.886 +                typename Config::vertex_descriptor v, 
 981.887 +                undirected_graph_helper<Config>& g_)
 981.888 +    {
 981.889 +      typedef typename Config::global_edgelist_selector EdgeListS;
 981.890 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.891 +
 981.892 +      typedef typename Config::graph_type graph_type;
 981.893 +      graph_type& g = static_cast<graph_type&>(g_);
 981.894 +      typedef typename Config::edge_parallel_category Cat;
 981.895 +      detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat());
 981.896 +      detail::erase_from_incidence_list(g.out_edge_list(v), u, Cat());
 981.897 +    }
 981.898 +  
 981.899 +    template <class Config, class Predicate>
 981.900 +    void
 981.901 +    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
 981.902 +                       undirected_graph_helper<Config>& g_)
 981.903 +    {
 981.904 +      typedef typename Config::global_edgelist_selector EdgeListS;
 981.905 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.906 +        
 981.907 +      typedef typename Config::graph_type graph_type;
 981.908 +      typedef typename Config::OutEdgeList::value_type::property_type PropT;
 981.909 +      graph_type& g = static_cast<graph_type&>(g_);
 981.910 +      typename Config::out_edge_iterator first, last;
 981.911 +      tie(first, last) = out_edges(u, g);
 981.912 +      typedef typename Config::edge_parallel_category Cat;
 981.913 +      detail::undirected_remove_out_edge_if_dispatch<PropT>
 981.914 +        (g, first, last, g.out_edge_list(u), pred, Cat());
 981.915 +    }
 981.916 +    template <class Config, class Predicate>
 981.917 +    void
 981.918 +    remove_in_edge_if(typename Config::vertex_descriptor u, Predicate pred,
 981.919 +                      undirected_graph_helper<Config>& g_)
 981.920 +    {
 981.921 +      typedef typename Config::global_edgelist_selector EdgeListS;
 981.922 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.923 +
 981.924 +      remove_out_edge_if(u, pred, g_);
 981.925 +    }
 981.926 +
 981.927 +    // O(E/V * E) or O(log(E/V) * E)
 981.928 +    template <class Predicate, class Config>
 981.929 +    void
 981.930 +    remove_edge_if(Predicate pred, undirected_graph_helper<Config>& g_)
 981.931 +    {
 981.932 +      typedef typename Config::global_edgelist_selector EdgeListS;
 981.933 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.934 +
 981.935 +      typedef typename Config::graph_type graph_type;
 981.936 +      graph_type& g = static_cast<graph_type&>(g_);
 981.937 +      typename Config::edge_iterator ei, ei_end, next;
 981.938 +      tie(ei, ei_end) = edges(g);
 981.939 +      for (next = ei; ei != ei_end; ei = next) {
 981.940 +        ++next;
 981.941 +        if (pred(*ei))
 981.942 +          remove_edge(*ei, g);
 981.943 +      }
 981.944 +    }
 981.945 +
 981.946 +    // O(1)
 981.947 +    template <class Config>
 981.948 +    inline std::pair<typename Config::edge_iterator, 
 981.949 +                     typename Config::edge_iterator>
 981.950 +    edges(const undirected_graph_helper<Config>& g_)
 981.951 +    {
 981.952 +      typedef typename Config::graph_type graph_type;
 981.953 +      typedef typename Config::edge_iterator edge_iterator;
 981.954 +      const graph_type& cg = static_cast<const graph_type&>(g_);
 981.955 +      graph_type& g = const_cast<graph_type&>(cg);
 981.956 +      return std::make_pair( edge_iterator(g.m_edges.begin()),
 981.957 +                             edge_iterator(g.m_edges.end()) );
 981.958 +    }
 981.959 +    // O(1)
 981.960 +    template <class Config>
 981.961 +    inline typename Config::edges_size_type
 981.962 +    num_edges(const undirected_graph_helper<Config>& g_) 
 981.963 +    {
 981.964 +      typedef typename Config::graph_type graph_type;
 981.965 +      const graph_type& g = static_cast<const graph_type&>(g_);
 981.966 +      return g.m_edges.size();
 981.967 +    }
 981.968 +    // O(E/V * E/V)
 981.969 +    template <class Config>
 981.970 +    inline void 
 981.971 +    clear_vertex(typename Config::vertex_descriptor u,
 981.972 +                 undirected_graph_helper<Config>& g_)
 981.973 +    {
 981.974 +      typedef typename Config::global_edgelist_selector EdgeListS;
 981.975 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 981.976 +
 981.977 +      typedef typename Config::graph_type graph_type;
 981.978 +      typedef typename Config::edge_parallel_category Cat;
 981.979 +      graph_type& g = static_cast<graph_type&>(g_);
 981.980 +      typename Config::OutEdgeList& el = g.out_edge_list(u);
 981.981 +      typename Config::OutEdgeList::iterator 
 981.982 +        ei = el.begin(), ei_end = el.end();
 981.983 +      for (; ei != ei_end; ++ei) {
 981.984 +        detail::erase_from_incidence_list
 981.985 +          (g.out_edge_list((*ei).get_target()), u, Cat());
 981.986 +        g.m_edges.erase((*ei).get_iter());
 981.987 +      }
 981.988 +      g.out_edge_list(u).clear();
 981.989 +    }
 981.990 +    // O(1) for allow_parallel_edge_tag
 981.991 +    // O(log(E/V)) for disallow_parallel_edge_tag
 981.992 +    template <class Config>
 981.993 +    inline std::pair<typename Config::edge_descriptor, bool>
 981.994 +    add_edge(typename Config::vertex_descriptor u, 
 981.995 +             typename Config::vertex_descriptor v, 
 981.996 +             const typename Config::edge_property_type& p,
 981.997 +             undirected_graph_helper<Config>& g_)
 981.998 +    {
 981.999 +      typedef typename Config::StoredEdge StoredEdge;
981.1000 +      typedef typename Config::edge_descriptor edge_descriptor;
981.1001 +      typedef typename Config::graph_type graph_type;
981.1002 +      graph_type& g = static_cast<graph_type&>(g_);
981.1003 +
981.1004 +      bool inserted;
981.1005 +      typename Config::EdgeContainer::value_type e(u, v, p);
981.1006 +      typename Config::EdgeContainer::iterator p_iter 
981.1007 +        = graph_detail::push(g.m_edges, e).first;
981.1008 +
981.1009 +      typename Config::OutEdgeList::iterator i;
981.1010 +      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u), 
981.1011 +                                    StoredEdge(v, p_iter, &g.m_edges));
981.1012 +      if (inserted) {
981.1013 +        boost::graph_detail::push(g.out_edge_list(v), StoredEdge(u, p_iter, &g.m_edges));
981.1014 +        return std::make_pair(edge_descriptor(u, v, &p_iter->get_property()),
981.1015 +                              true);
981.1016 +      } else {
981.1017 +        g.m_edges.erase(p_iter);
981.1018 +        return std::make_pair
981.1019 +          (edge_descriptor(u, v, &i->get_iter()->get_property()), false);
981.1020 +      }
981.1021 +    }
981.1022 +    template <class Config>
981.1023 +    inline std::pair<typename Config::edge_descriptor, bool>
981.1024 +    add_edge(typename Config::vertex_descriptor u, 
981.1025 +             typename Config::vertex_descriptor v, 
981.1026 +             undirected_graph_helper<Config>& g_)
981.1027 +    {
981.1028 +      typename Config::edge_property_type p;
981.1029 +      return add_edge(u, v, p, g_);
981.1030 +    }
981.1031 +
981.1032 +    // O(1)
981.1033 +    template <class Config>
981.1034 +    inline typename Config::degree_size_type
981.1035 +    degree(typename Config::vertex_descriptor u, 
981.1036 +           const undirected_graph_helper<Config>& g_)
981.1037 +    {
981.1038 +      typedef typename Config::graph_type Graph;
981.1039 +      const Graph& g = static_cast<const Graph&>(g_);
981.1040 +      return out_degree(u, g);
981.1041 +    }
981.1042 +
981.1043 +    template <class Config>
981.1044 +    inline std::pair<typename Config::in_edge_iterator, 
981.1045 +                     typename Config::in_edge_iterator>
981.1046 +    in_edges(typename Config::vertex_descriptor u, 
981.1047 +             const undirected_graph_helper<Config>& g_)
981.1048 +    {
981.1049 +      typedef typename Config::graph_type Graph;
981.1050 +      const Graph& cg = static_cast<const Graph&>(g_);
981.1051 +      Graph& g = const_cast<Graph&>(cg);
981.1052 +      typedef typename Config::in_edge_iterator in_edge_iterator;
981.1053 +      return
981.1054 +        std::make_pair(in_edge_iterator(g.out_edge_list(u).begin(), u),
981.1055 +                       in_edge_iterator(g.out_edge_list(u).end(), u));
981.1056 +    }
981.1057 +
981.1058 +    template <class Config>
981.1059 +    inline typename Config::degree_size_type
981.1060 +    in_degree(typename Config::vertex_descriptor u,
981.1061 +              const undirected_graph_helper<Config>& g_)
981.1062 +    { return degree(u, g_); }
981.1063 +
981.1064 +    //=========================================================================
981.1065 +    // Bidirectional Graph Helper Class
981.1066 +
981.1067 +    struct bidir_adj_list_traversal_tag : 
981.1068 +      public virtual vertex_list_graph_tag,
981.1069 +      public virtual incidence_graph_tag,
981.1070 +      public virtual adjacency_graph_tag,
981.1071 +      public virtual edge_list_graph_tag,
981.1072 +      public virtual bidirectional_graph_tag { };
981.1073 +
981.1074 +    template <class Config>
981.1075 +    struct bidirectional_graph_helper
981.1076 +      : public directed_edges_helper<Config> {
981.1077 +      typedef bidir_adj_list_traversal_tag traversal_category;
981.1078 +    };
981.1079 +
981.1080 +    // Had to make these non-members to avoid accidental instantiation
981.1081 +    // on SGI MIPSpro C++
981.1082 +    template <class C>
981.1083 +    inline typename C::InEdgeList& 
981.1084 +    in_edge_list(bidirectional_graph_helper<C>&, 
981.1085 +                 typename C::vertex_descriptor v)
981.1086 +    {
981.1087 +      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
981.1088 +      return sv->m_in_edges;
981.1089 +    }
981.1090 +    template <class C>
981.1091 +    inline const typename C::InEdgeList& 
981.1092 +    in_edge_list(const bidirectional_graph_helper<C>&,
981.1093 +                 typename C::vertex_descriptor v) {
981.1094 +      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
981.1095 +      return sv->m_in_edges;
981.1096 +    }
981.1097 +
981.1098 +    template <class Predicate, class Config>
981.1099 +    inline void
981.1100 +    remove_edge_if(Predicate pred, bidirectional_graph_helper<Config>& g_)
981.1101 +    {
981.1102 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1103 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1104 +
981.1105 +      typedef typename Config::graph_type graph_type;
981.1106 +      graph_type& g = static_cast<graph_type&>(g_);
981.1107 +      typename Config::edge_iterator ei, ei_end, next;
981.1108 +      tie(ei, ei_end) = edges(g);
981.1109 +      for (next = ei; ei != ei_end; ei = next) {
981.1110 +        ++next;
981.1111 +        if (pred(*ei))
981.1112 +          remove_edge(*ei, g);
981.1113 +      }
981.1114 +    }
981.1115 +
981.1116 +    template <class Config>
981.1117 +    inline std::pair<typename Config::in_edge_iterator, 
981.1118 +                     typename Config::in_edge_iterator>
981.1119 +    in_edges(typename Config::vertex_descriptor u, 
981.1120 +             const bidirectional_graph_helper<Config>& g_)
981.1121 +    {
981.1122 +      typedef typename Config::graph_type graph_type;
981.1123 +      const graph_type& cg = static_cast<const graph_type&>(g_);
981.1124 +      graph_type& g = const_cast<graph_type&>(cg);
981.1125 +      typedef typename Config::in_edge_iterator in_edge_iterator;
981.1126 +      return
981.1127 +        std::make_pair(in_edge_iterator(in_edge_list(g, u).begin(), u),
981.1128 +                       in_edge_iterator(in_edge_list(g, u).end(), u));
981.1129 +    }
981.1130 +
981.1131 +    // O(1)
981.1132 +    template <class Config>
981.1133 +    inline std::pair<typename Config::edge_iterator, 
981.1134 +                     typename Config::edge_iterator>
981.1135 +    edges(const bidirectional_graph_helper<Config>& g_)
981.1136 +    {
981.1137 +      typedef typename Config::graph_type graph_type;
981.1138 +      typedef typename Config::edge_iterator edge_iterator;
981.1139 +      const graph_type& cg = static_cast<const graph_type&>(g_);
981.1140 +      graph_type& g = const_cast<graph_type&>(cg);
981.1141 +      return std::make_pair( edge_iterator(g.m_edges.begin()),
981.1142 +                             edge_iterator(g.m_edges.end()) );
981.1143 +    }
981.1144 +
981.1145 +    //=========================================================================
981.1146 +    // Bidirectional Graph Helper Class (with edge properties)
981.1147 +
981.1148 +
981.1149 +    template <class Config>
981.1150 +    struct bidirectional_graph_helper_with_property
981.1151 +      : public bidirectional_graph_helper<Config>
981.1152 +    {
981.1153 +      typedef typename Config::graph_type graph_type;
981.1154 +      typedef typename Config::out_edge_iterator out_edge_iterator;
981.1155 +      
981.1156 +      std::pair<out_edge_iterator, out_edge_iterator>
981.1157 +      get_parallel_edge_sublist(typename Config::edge_descriptor e,
981.1158 +                                const graph_type& g,
981.1159 +                                void*)
981.1160 +      { return out_edges(source(e, g), g); }
981.1161 +
981.1162 +      std::pair<out_edge_iterator, out_edge_iterator>
981.1163 +      get_parallel_edge_sublist(typename Config::edge_descriptor e,
981.1164 +                                const graph_type& g,
981.1165 +                                setS*)
981.1166 +      { return edge_range(source(e, g), target(e, g), g); }
981.1167 +
981.1168 +      std::pair<out_edge_iterator, out_edge_iterator>
981.1169 +      get_parallel_edge_sublist(typename Config::edge_descriptor e,
981.1170 +                                const graph_type& g,
981.1171 +                                multisetS*)
981.1172 +      { return edge_range(source(e, g), target(e, g), g); }
981.1173 +
981.1174 +#if !defined BOOST_NO_HASH
981.1175 +      std::pair<out_edge_iterator, out_edge_iterator>
981.1176 +      get_parallel_edge_sublist(typename Config::edge_descriptor e,
981.1177 +                                const graph_type& g,
981.1178 +                                hash_setS*)
981.1179 +      { return edge_range(source(e, g), target(e, g), g); }
981.1180 +#endif
981.1181 +
981.1182 +      // Placement of these overloaded remove_edge() functions
981.1183 +      // inside the class avoids a VC++ bug.
981.1184 +
981.1185 +      // O(E/V) or O(log(E/V))
981.1186 +      void
981.1187 +      remove_edge(typename Config::edge_descriptor e)
981.1188 +      {
981.1189 +        typedef typename Config::global_edgelist_selector EdgeListS;
981.1190 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1191 +
981.1192 +        graph_type& g = static_cast<graph_type&>(*this);
981.1193 +
981.1194 +        typedef typename Config::edgelist_selector OutEdgeListS;
981.1195 +
981.1196 +        std::pair<out_edge_iterator, out_edge_iterator> rng = 
981.1197 +          get_parallel_edge_sublist(e, g, (OutEdgeListS*)(0));
981.1198 +        rng.first = std::find(rng.first, rng.second, e);
981.1199 +        assert(rng.first != rng.second);
981.1200 +        remove_edge(rng.first);
981.1201 +      }
981.1202 +
981.1203 +      inline void
981.1204 +      remove_edge(typename Config::out_edge_iterator iter)
981.1205 +      {
981.1206 +        typedef typename Config::global_edgelist_selector EdgeListS;
981.1207 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1208 +
981.1209 +        typedef typename Config::graph_type graph_type;
981.1210 +        graph_type& g = static_cast<graph_type&>(*this);
981.1211 +        typename Config::edge_descriptor e = *iter;
981.1212 +        typename Config::OutEdgeList& oel = g.out_edge_list(source(e, g));
981.1213 +        typename Config::InEdgeList& iel = in_edge_list(g, target(e, g));
981.1214 +        typedef typename Config::OutEdgeList::value_type::property_type PType;
981.1215 +        PType& p = *(PType*)e.get_property();
981.1216 +        detail::remove_directed_edge_dispatch(*iter, iel, p);
981.1217 +        g.m_edges.erase(iter.base()->get_iter());
981.1218 +        oel.erase(iter.base());
981.1219 +      }
981.1220 +    };
981.1221 +
981.1222 +    // O(E/V) for allow_parallel_edge_tag
981.1223 +    // O(log(E/V)) for disallow_parallel_edge_tag
981.1224 +    template <class Config>
981.1225 +    inline void
981.1226 +    remove_edge(typename Config::vertex_descriptor u, 
981.1227 +                typename Config::vertex_descriptor v, 
981.1228 +                bidirectional_graph_helper_with_property<Config>& g_)
981.1229 +    {
981.1230 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1231 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1232 +
981.1233 +      typedef typename Config::graph_type graph_type;
981.1234 +      graph_type& g = static_cast<graph_type&>(g_);
981.1235 +      typedef typename Config::edge_parallel_category Cat;
981.1236 +      detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat());
981.1237 +      detail::erase_from_incidence_list(in_edge_list(g, v), u, Cat());
981.1238 +    }
981.1239 +
981.1240 +    // O(E/V) or O(log(E/V))
981.1241 +    template <class EdgeOrIter, class Config>
981.1242 +    inline void
981.1243 +    remove_edge(EdgeOrIter e,
981.1244 +                bidirectional_graph_helper_with_property<Config>& g_)
981.1245 +    {
981.1246 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1247 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1248 +
981.1249 +      g_.remove_edge(e);
981.1250 +    }
981.1251 +
981.1252 +    template <class Config, class Predicate>
981.1253 +    inline void
981.1254 +    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
981.1255 +                       bidirectional_graph_helper_with_property<Config>& g_)
981.1256 +    {
981.1257 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1258 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1259 +
981.1260 +      typedef typename Config::graph_type graph_type;
981.1261 +      typedef typename Config::OutEdgeList::value_type::property_type PropT;
981.1262 +      graph_type& g = static_cast<graph_type&>(g_);
981.1263 +      
981.1264 +      typedef typename Config::EdgeIter EdgeIter;
981.1265 +      typedef std::vector<EdgeIter> Garbage;
981.1266 +      Garbage garbage;
981.1267 +
981.1268 +      // First remove the edges from the targets' in-edge lists and
981.1269 +      // from the graph's edge set list.
981.1270 +      typename Config::out_edge_iterator out_i, out_end;
981.1271 +      for (tie(out_i, out_end) = out_edges(u, g); out_i != out_end; ++out_i)
981.1272 +        if (pred(*out_i)) {
981.1273 +          detail::remove_directed_edge_dispatch
981.1274 +            (*out_i, in_edge_list(g, target(*out_i, g)),
981.1275 +             *(PropT*)(*out_i).get_property());
981.1276 +          // Put in garbage to delete later. Will need the properties
981.1277 +          // for the remove_if of the out-edges.
981.1278 +          garbage.push_back((*out_i.base()).get_iter());
981.1279 +        }
981.1280 +
981.1281 +      // Now remove the edges from this out-edge list.
981.1282 +      typename Config::out_edge_iterator first, last;
981.1283 +      tie(first, last) = out_edges(u, g);
981.1284 +      typedef typename Config::edge_parallel_category Cat;
981.1285 +      detail::remove_directed_edge_if_dispatch
981.1286 +        (first, last, g.out_edge_list(u), pred, Cat());
981.1287 +
981.1288 +      // Now delete the edge properties from the g.m_edges list
981.1289 +      for (typename Garbage::iterator i = garbage.begin();
981.1290 +           i != garbage.end(); ++i)
981.1291 +        g.m_edges.erase(*i);
981.1292 +    }
981.1293 +    template <class Config, class Predicate>
981.1294 +    inline void
981.1295 +    remove_in_edge_if(typename Config::vertex_descriptor v, Predicate pred,
981.1296 +                      bidirectional_graph_helper_with_property<Config>& g_)
981.1297 +    {
981.1298 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1299 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1300 +
981.1301 +      typedef typename Config::graph_type graph_type;
981.1302 +      typedef typename Config::OutEdgeList::value_type::property_type PropT;
981.1303 +      graph_type& g = static_cast<graph_type&>(g_);
981.1304 +
981.1305 +      typedef typename Config::EdgeIter EdgeIter;
981.1306 +      typedef std::vector<EdgeIter> Garbage;
981.1307 +      Garbage garbage;
981.1308 +
981.1309 +      // First remove the edges from the sources' out-edge lists and
981.1310 +      // from the graph's edge set list.
981.1311 +      typename Config::in_edge_iterator in_i, in_end;
981.1312 +      for (tie(in_i, in_end) = in_edges(v, g); in_i != in_end; ++in_i)
981.1313 +        if (pred(*in_i)) {
981.1314 +          typename Config::vertex_descriptor u = source(*in_i, g);
981.1315 +          detail::remove_directed_edge_dispatch
981.1316 +            (*in_i, g.out_edge_list(u), *(PropT*)(*in_i).get_property());
981.1317 +          // Put in garbage to delete later. Will need the properties
981.1318 +          // for the remove_if of the out-edges.
981.1319 +          garbage.push_back((*in_i.base()).get_iter());
981.1320 +        }
981.1321 +      // Now remove the edges from this in-edge list.
981.1322 +      typename Config::in_edge_iterator first, last;
981.1323 +      tie(first, last) = in_edges(v, g);
981.1324 +      typedef typename Config::edge_parallel_category Cat;
981.1325 +      detail::remove_directed_edge_if_dispatch
981.1326 +        (first, last, in_edge_list(g, v), pred, Cat());
981.1327 +
981.1328 +      // Now delete the edge properties from the g.m_edges list
981.1329 +      for (typename Garbage::iterator i = garbage.begin();
981.1330 +           i != garbage.end(); ++i)
981.1331 +        g.m_edges.erase(*i);
981.1332 +    }
981.1333 +
981.1334 +    // O(1)
981.1335 +    template <class Config>
981.1336 +    inline typename Config::edges_size_type
981.1337 +    num_edges(const bidirectional_graph_helper_with_property<Config>& g_) 
981.1338 +    {
981.1339 +      typedef typename Config::graph_type graph_type;
981.1340 +      const graph_type& g = static_cast<const graph_type&>(g_);
981.1341 +      return g.m_edges.size();
981.1342 +    }
981.1343 +    // O(E/V * E/V) for allow_parallel_edge_tag
981.1344 +    // O(E/V * log(E/V)) for disallow_parallel_edge_tag
981.1345 +    template <class Config>
981.1346 +    inline void
981.1347 +    clear_vertex(typename Config::vertex_descriptor u,
981.1348 +                 bidirectional_graph_helper_with_property<Config>& g_)
981.1349 +    {
981.1350 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1351 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1352 +
981.1353 +      typedef typename Config::graph_type graph_type;
981.1354 +      typedef typename Config::edge_parallel_category Cat;
981.1355 +      graph_type& g = static_cast<graph_type&>(g_);
981.1356 +      typename Config::OutEdgeList& el = g.out_edge_list(u);
981.1357 +      typename Config::OutEdgeList::iterator 
981.1358 +        ei = el.begin(), ei_end = el.end();
981.1359 +      for (; ei != ei_end; ++ei) {
981.1360 +        detail::erase_from_incidence_list
981.1361 +          (in_edge_list(g, (*ei).get_target()), u, Cat());
981.1362 +        g.m_edges.erase((*ei).get_iter());
981.1363 +      }      
981.1364 +      typename Config::InEdgeList& in_el = in_edge_list(g, u);
981.1365 +      typename Config::InEdgeList::iterator 
981.1366 +        in_ei = in_el.begin(), in_ei_end = in_el.end();
981.1367 +      for (; in_ei != in_ei_end; ++in_ei) {
981.1368 +        detail::erase_from_incidence_list
981.1369 +          (g.out_edge_list((*in_ei).get_target()), u, Cat());
981.1370 +        g.m_edges.erase((*in_ei).get_iter());   
981.1371 +      }
981.1372 +      g.out_edge_list(u).clear();
981.1373 +      in_edge_list(g, u).clear();
981.1374 +    }
981.1375 +
981.1376 +    template <class Config>
981.1377 +    inline void
981.1378 +    clear_out_edges(typename Config::vertex_descriptor u,
981.1379 +                    bidirectional_graph_helper_with_property<Config>& g_)
981.1380 +    {
981.1381 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1382 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1383 +
981.1384 +      typedef typename Config::graph_type graph_type;
981.1385 +      typedef typename Config::edge_parallel_category Cat;
981.1386 +      graph_type& g = static_cast<graph_type&>(g_);
981.1387 +      typename Config::OutEdgeList& el = g.out_edge_list(u);
981.1388 +      typename Config::OutEdgeList::iterator 
981.1389 +        ei = el.begin(), ei_end = el.end();
981.1390 +      for (; ei != ei_end; ++ei) {
981.1391 +        detail::erase_from_incidence_list
981.1392 +          (in_edge_list(g, (*ei).get_target()), u, Cat());
981.1393 +        g.m_edges.erase((*ei).get_iter());
981.1394 +      }      
981.1395 +      g.out_edge_list(u).clear();
981.1396 +    }
981.1397 +
981.1398 +    template <class Config>
981.1399 +    inline void
981.1400 +    clear_in_edges(typename Config::vertex_descriptor u,
981.1401 +                   bidirectional_graph_helper_with_property<Config>& g_)
981.1402 +    {
981.1403 +      typedef typename Config::global_edgelist_selector EdgeListS;
981.1404 +      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1405 +
981.1406 +      typedef typename Config::graph_type graph_type;
981.1407 +      typedef typename Config::edge_parallel_category Cat;
981.1408 +      graph_type& g = static_cast<graph_type&>(g_);
981.1409 +      typename Config::InEdgeList& in_el = in_edge_list(g, u);
981.1410 +      typename Config::InEdgeList::iterator 
981.1411 +        in_ei = in_el.begin(), in_ei_end = in_el.end();
981.1412 +      for (; in_ei != in_ei_end; ++in_ei) {
981.1413 +        detail::erase_from_incidence_list
981.1414 +          (g.out_edge_list((*in_ei).get_target()), u, Cat());
981.1415 +        g.m_edges.erase((*in_ei).get_iter());   
981.1416 +      }
981.1417 +      in_edge_list(g, u).clear();
981.1418 +    }
981.1419 +
981.1420 +    // O(1) for allow_parallel_edge_tag
981.1421 +    // O(log(E/V)) for disallow_parallel_edge_tag
981.1422 +    template <class Config>
981.1423 +    inline std::pair<typename Config::edge_descriptor, bool>
981.1424 +    add_edge(typename Config::vertex_descriptor u,
981.1425 +             typename Config::vertex_descriptor v, 
981.1426 +             const typename Config::edge_property_type& p,
981.1427 +             bidirectional_graph_helper_with_property<Config>& g_)
981.1428 +    {
981.1429 +      typedef typename Config::graph_type graph_type;
981.1430 +      graph_type& g = static_cast<graph_type&>(g_);
981.1431 +      typedef typename Config::edge_descriptor edge_descriptor;
981.1432 +      typedef typename Config::StoredEdge StoredEdge;
981.1433 +      bool inserted;
981.1434 +      typename Config::EdgeContainer::value_type e(u, v, p);
981.1435 +      typename Config::EdgeContainer::iterator p_iter 
981.1436 +        = graph_detail::push(g.m_edges, e).first;
981.1437 +      typename Config::OutEdgeList::iterator i;
981.1438 +      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u), 
981.1439 +                                        StoredEdge(v, p_iter, &g.m_edges));
981.1440 +      if (inserted) {
981.1441 +        boost::graph_detail::push(in_edge_list(g, v), StoredEdge(u, p_iter, &g.m_edges));
981.1442 +        return std::make_pair(edge_descriptor(u, v, &p_iter->m_property), 
981.1443 +                              true);
981.1444 +      } else {
981.1445 +        g.m_edges.erase(p_iter);
981.1446 +        return std::make_pair(edge_descriptor(u, v, 
981.1447 +                                     &i->get_iter()->get_property()), 
981.1448 +                              false);
981.1449 +      }
981.1450 +    }
981.1451 +
981.1452 +    template <class Config>
981.1453 +    inline std::pair<typename Config::edge_descriptor, bool>
981.1454 +    add_edge(typename Config::vertex_descriptor u,
981.1455 +             typename Config::vertex_descriptor v,
981.1456 +             bidirectional_graph_helper_with_property<Config>& g_)
981.1457 +    {
981.1458 +      typename Config::edge_property_type p;
981.1459 +      return add_edge(u, v, p, g_);
981.1460 +    }
981.1461 +    // O(1)
981.1462 +    template <class Config>
981.1463 +    inline typename Config::degree_size_type
981.1464 +    degree(typename Config::vertex_descriptor u, 
981.1465 +           const bidirectional_graph_helper_with_property<Config>& g_)
981.1466 +    {
981.1467 +      typedef typename Config::graph_type graph_type;
981.1468 +      const graph_type& g = static_cast<const graph_type&>(g_);
981.1469 +      return in_degree(u, g) + out_degree(u, g);
981.1470 +    }
981.1471 +
981.1472 +    //=========================================================================
981.1473 +    // Adjacency List Helper Class
981.1474 +
981.1475 +    template <class Config, class Base>
981.1476 +    struct adj_list_helper : public Base
981.1477 +    {
981.1478 +      typedef typename Config::graph_type AdjList;
981.1479 +      typedef typename Config::vertex_descriptor vertex_descriptor;
981.1480 +      typedef typename Config::edge_descriptor edge_descriptor;
981.1481 +      typedef typename Config::out_edge_iterator out_edge_iterator;
981.1482 +      typedef typename Config::in_edge_iterator in_edge_iterator;
981.1483 +      typedef typename Config::adjacency_iterator adjacency_iterator;
981.1484 +      typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator;
981.1485 +      typedef typename Config::vertex_iterator vertex_iterator;
981.1486 +      typedef typename Config::edge_iterator edge_iterator;
981.1487 +      typedef typename Config::directed_category directed_category;
981.1488 +      typedef typename Config::edge_parallel_category edge_parallel_category;
981.1489 +      typedef typename Config::vertices_size_type vertices_size_type;
981.1490 +      typedef typename Config::edges_size_type edges_size_type;
981.1491 +      typedef typename Config::degree_size_type degree_size_type;
981.1492 +      typedef typename Config::StoredEdge StoredEdge;
981.1493 +      typedef typename Config::edge_property_type edge_property_type;
981.1494 +
981.1495 +      typedef typename Config::global_edgelist_selector
981.1496 +        global_edgelist_selector;
981.1497 +
981.1498 +      //    protected:
981.1499 +
981.1500 +      // The edge_dispatch() functions should be static, but
981.1501 +      // Borland gets confused about constness.
981.1502 +
981.1503 +      // O(E/V)
981.1504 +      inline std::pair<edge_descriptor,bool>      
981.1505 +      edge_dispatch(const AdjList& g, 
981.1506 +                    vertex_descriptor u, vertex_descriptor v, 
981.1507 +                    boost::allow_parallel_edge_tag) const
981.1508 +      {
981.1509 +        bool found;
981.1510 +        const typename Config::OutEdgeList& el = g.out_edge_list(u);
981.1511 +        typename Config::OutEdgeList::const_iterator 
981.1512 +          i = std::find_if(el.begin(), el.end(), 
981.1513 +                           detail::target_is<vertex_descriptor>(v));
981.1514 +        found = (i != g.out_edge_list(u).end());
981.1515 +        if (found)
981.1516 +          return std::make_pair(edge_descriptor(u, v, &(*i).get_property()),
981.1517 +                                true);
981.1518 +        else
981.1519 +          return std::make_pair(edge_descriptor(u, v, 0), false);
981.1520 +      }
981.1521 +      // O(log(E/V))
981.1522 +      inline std::pair<edge_descriptor,bool>      
981.1523 +      edge_dispatch(const AdjList& g, 
981.1524 +                    vertex_descriptor u, vertex_descriptor v, 
981.1525 +                    boost::disallow_parallel_edge_tag) const
981.1526 +      {
981.1527 +        bool found;
981.1528 +        /* According to the standard, this should be iterator, not const_iterator,
981.1529 +           but the VC++ std::set::find() const returns const_iterator.
981.1530 +           And since iterator should be convertible to const_iterator, the
981.1531 +           following should work everywhere. -Jeremy */
981.1532 +        typename Config::OutEdgeList::const_iterator 
981.1533 +          i = g.out_edge_list(u).find(StoredEdge(v)),
981.1534 +          end = g.out_edge_list(u).end();
981.1535 +        found = (i != end);
981.1536 +        if (found)
981.1537 +          return std::make_pair(edge_descriptor(u, v, &(*i).get_property()),
981.1538 +                                true);
981.1539 +        else
981.1540 +          return std::make_pair(edge_descriptor(u, v, 0), false);
981.1541 +      }
981.1542 +    };
981.1543 +
981.1544 +    template <class Config, class Base>
981.1545 +    inline std::pair<typename Config::adjacency_iterator, 
981.1546 +                     typename Config::adjacency_iterator>
981.1547 +    adjacent_vertices(typename Config::vertex_descriptor u, 
981.1548 +                      const adj_list_helper<Config, Base>& g_)
981.1549 +    {
981.1550 +      typedef typename Config::graph_type AdjList;
981.1551 +      const AdjList& cg = static_cast<const AdjList&>(g_);
981.1552 +      AdjList& g = const_cast<AdjList&>(cg);
981.1553 +      typedef typename Config::adjacency_iterator adjacency_iterator;
981.1554 +      typename Config::out_edge_iterator first, last;
981.1555 +      boost::tie(first, last) = out_edges(u, g);
981.1556 +      return std::make_pair(adjacency_iterator(first, &g),
981.1557 +                            adjacency_iterator(last, &g));
981.1558 +    }
981.1559 +    template <class Config, class Base>
981.1560 +    inline std::pair<typename Config::inv_adjacency_iterator, 
981.1561 +                     typename Config::inv_adjacency_iterator>
981.1562 +    inv_adjacent_vertices(typename Config::vertex_descriptor u, 
981.1563 +                          const adj_list_helper<Config, Base>& g_)
981.1564 +    {
981.1565 +      typedef typename Config::graph_type AdjList;
981.1566 +      const AdjList& cg = static_cast<const AdjList&>(g_);
981.1567 +      AdjList& g = const_cast<AdjList&>(cg);
981.1568 +      typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator;
981.1569 +      typename Config::in_edge_iterator first, last;
981.1570 +      boost::tie(first, last) = in_edges(u, g);
981.1571 +      return std::make_pair(inv_adjacency_iterator(first, &g),
981.1572 +                            inv_adjacency_iterator(last, &g));
981.1573 +    }
981.1574 +    template <class Config, class Base>
981.1575 +    inline std::pair<typename Config::out_edge_iterator, 
981.1576 +                     typename Config::out_edge_iterator>
981.1577 +    out_edges(typename Config::vertex_descriptor u, 
981.1578 +              const adj_list_helper<Config, Base>& g_)
981.1579 +    {
981.1580 +      typedef typename Config::graph_type AdjList;
981.1581 +      typedef typename Config::out_edge_iterator out_edge_iterator;
981.1582 +      const AdjList& cg = static_cast<const AdjList&>(g_);
981.1583 +      AdjList& g = const_cast<AdjList&>(cg);
981.1584 +      return
981.1585 +        std::make_pair(out_edge_iterator(g.out_edge_list(u).begin(), u),
981.1586 +                       out_edge_iterator(g.out_edge_list(u).end(), u));
981.1587 +    }
981.1588 +    template <class Config, class Base>
981.1589 +    inline std::pair<typename Config::vertex_iterator, 
981.1590 +                     typename Config::vertex_iterator>
981.1591 +    vertices(const adj_list_helper<Config, Base>& g_)
981.1592 +    {
981.1593 +      typedef typename Config::graph_type AdjList;
981.1594 +      const AdjList& cg = static_cast<const AdjList&>(g_);
981.1595 +      AdjList& g = const_cast<AdjList&>(cg);
981.1596 +      return std::make_pair( g.vertex_set().begin(), g.vertex_set().end() );
981.1597 +    }
981.1598 +    template <class Config, class Base>
981.1599 +    inline typename Config::vertices_size_type
981.1600 +    num_vertices(const adj_list_helper<Config, Base>& g_)
981.1601 +    {
981.1602 +      typedef typename Config::graph_type AdjList;
981.1603 +      const AdjList& g = static_cast<const AdjList&>(g_);
981.1604 +      return g.vertex_set().size();
981.1605 +    }
981.1606 +    template <class Config, class Base>
981.1607 +    inline typename Config::degree_size_type
981.1608 +    out_degree(typename Config::vertex_descriptor u, 
981.1609 +               const adj_list_helper<Config, Base>& g_)
981.1610 +    {
981.1611 +      typedef typename Config::graph_type AdjList;
981.1612 +      const AdjList& g = static_cast<const AdjList&>(g_);
981.1613 +      return g.out_edge_list(u).size();
981.1614 +    }
981.1615 +    template <class Config, class Base>
981.1616 +    inline std::pair<typename Config::edge_descriptor, bool>
981.1617 +    edge(typename Config::vertex_descriptor u, 
981.1618 +         typename Config::vertex_descriptor v, 
981.1619 +         const adj_list_helper<Config, Base>& g_)
981.1620 +    {
981.1621 +      typedef typename Config::graph_type Graph;
981.1622 +      typedef typename Config::edge_parallel_category Cat;
981.1623 +      const Graph& g = static_cast<const Graph&>(g_);
981.1624 +      return g_.edge_dispatch(g, u, v, Cat());
981.1625 +    }
981.1626 +    template <class Config, class Base>
981.1627 +    inline std::pair<typename Config::out_edge_iterator,
981.1628 +                     typename Config::out_edge_iterator>
981.1629 +    edge_range(typename Config::vertex_descriptor u,
981.1630 +               typename Config::vertex_descriptor v,
981.1631 +               const adj_list_helper<Config, Base>& g_)
981.1632 +    {
981.1633 +      typedef typename Config::graph_type Graph;
981.1634 +      typedef typename Config::StoredEdge StoredEdge;
981.1635 +      const Graph& cg = static_cast<const Graph&>(g_);
981.1636 +      Graph& g = const_cast<Graph&>(cg);
981.1637 +      typedef typename Config::out_edge_iterator out_edge_iterator;
981.1638 +      typename Config::OutEdgeList& el = g.out_edge_list(u);
981.1639 +      typename Config::OutEdgeList::iterator first, last;
981.1640 +      typename Config::EdgeContainer fake_edge_container;
981.1641 +      tie(first, last) = 
981.1642 +        std::equal_range(el.begin(), el.end(), 
981.1643 +                         StoredEdge(v, fake_edge_container.end(),
981.1644 +                                    &fake_edge_container));
981.1645 +      return std::make_pair(out_edge_iterator(first, u),
981.1646 +                            out_edge_iterator(last, u));
981.1647 +    }
981.1648 +
981.1649 +    template <class Config>
981.1650 +    inline typename Config::degree_size_type
981.1651 +    in_degree(typename Config::vertex_descriptor u, 
981.1652 +              const directed_edges_helper<Config>& g_)
981.1653 +    {
981.1654 +      typedef typename Config::graph_type Graph;
981.1655 +      const Graph& cg = static_cast<const Graph&>(g_);
981.1656 +      Graph& g = const_cast<Graph&>(cg);
981.1657 +      return in_edge_list(g, u).size();
981.1658 +    }
981.1659 +
981.1660 +    namespace detail {
981.1661 +      template <class Config, class Base, class Property>
981.1662 +      inline
981.1663 +      typename boost::property_map<typename Config::graph_type,
981.1664 +        Property>::type
981.1665 +      get_dispatch(adj_list_helper<Config,Base>&, Property, 
981.1666 +                   boost::edge_property_tag) {
981.1667 +        typedef typename Config::graph_type Graph;
981.1668 +        typedef typename boost::property_map<Graph, Property>::type PA;
981.1669 +        return PA();
981.1670 +      }
981.1671 +      template <class Config, class Base, class Property>
981.1672 +      inline
981.1673 +      typename boost::property_map<typename Config::graph_type, 
981.1674 +        Property>::const_type
981.1675 +      get_dispatch(const adj_list_helper<Config,Base>&, Property, 
981.1676 +                   boost::edge_property_tag) {
981.1677 +        typedef typename Config::graph_type Graph;
981.1678 +        typedef typename boost::property_map<Graph, Property>::const_type PA;
981.1679 +        return PA();
981.1680 +      }
981.1681 +
981.1682 +      template <class Config, class Base, class Property>
981.1683 +      inline
981.1684 +      typename boost::property_map<typename Config::graph_type, 
981.1685 +        Property>::type
981.1686 +      get_dispatch(adj_list_helper<Config,Base>& g, Property, 
981.1687 +                   boost::vertex_property_tag) {
981.1688 +        typedef typename Config::graph_type Graph;
981.1689 +        typedef typename boost::property_map<Graph, Property>::type PA;
981.1690 +        return PA(&static_cast<Graph&>(g));
981.1691 +      }
981.1692 +      template <class Config, class Base, class Property>
981.1693 +      inline
981.1694 +      typename boost::property_map<typename Config::graph_type,
981.1695 +        Property>::const_type
981.1696 +      get_dispatch(const adj_list_helper<Config, Base>& g, Property, 
981.1697 +                   boost::vertex_property_tag) {
981.1698 +        typedef typename Config::graph_type Graph;
981.1699 +        typedef typename boost::property_map<Graph, Property>::const_type PA;
981.1700 +        const Graph& cg = static_cast<const Graph&>(g);
981.1701 +        return PA(&cg);
981.1702 +      }
981.1703 +
981.1704 +    } // namespace detail
981.1705 +
981.1706 +    // Implementation of the PropertyGraph interface
981.1707 +    template <class Config, class Base, class Property>
981.1708 +    inline
981.1709 +    typename boost::property_map<typename Config::graph_type, Property>::type
981.1710 +    get(Property p, adj_list_helper<Config, Base>& g) {
981.1711 +      typedef typename property_kind<Property>::type Kind;
981.1712 +      return detail::get_dispatch(g, p, Kind());
981.1713 +    }
981.1714 +    template <class Config, class Base, class Property>
981.1715 +    inline
981.1716 +    typename boost::property_map<typename Config::graph_type, 
981.1717 +      Property>::const_type
981.1718 +    get(Property p, const adj_list_helper<Config, Base>& g) {
981.1719 +      typedef typename property_kind<Property>::type Kind;
981.1720 +      return detail::get_dispatch(g, p, Kind());
981.1721 +    }
981.1722 +
981.1723 +    template <class Config, class Base, class Property, class Key>
981.1724 +    inline
981.1725 +    typename boost::property_traits<
981.1726 +      typename boost::property_map<typename Config::graph_type, 
981.1727 +        Property>::type
981.1728 +    >::reference
981.1729 +    get(Property p, adj_list_helper<Config, Base>& g, const Key& key) {
981.1730 +      return get(get(p, g), key);
981.1731 +    }
981.1732 +
981.1733 +    template <class Config, class Base, class Property, class Key>
981.1734 +    inline
981.1735 +    typename boost::property_traits<
981.1736 +      typename boost::property_map<typename Config::graph_type, 
981.1737 +        Property>::const_type
981.1738 +    >::reference
981.1739 +    get(Property p, const adj_list_helper<Config, Base>& g, const Key& key) {
981.1740 +      return get(get(p, g), key);
981.1741 +    }
981.1742 +
981.1743 +    template <class Config, class Base, class Property, class Key,class Value>
981.1744 +    inline void
981.1745 +    put(Property p, adj_list_helper<Config, Base>& g, 
981.1746 +        const Key& key, const Value& value)
981.1747 +    {
981.1748 +      typedef typename Config::graph_type Graph;
981.1749 +      typedef typename boost::property_map<Graph, Property>::type Map;
981.1750 +      Map pmap = get(p, static_cast<Graph&>(g));
981.1751 +      put(pmap, key, value);
981.1752 +    }
981.1753 +
981.1754 +
981.1755 +    //=========================================================================
981.1756 +    // Generalize Adjacency List Implementation
981.1757 +
981.1758 +    struct adj_list_tag { };
981.1759 +
981.1760 +    template <class Derived, class Config, class Base>
981.1761 +    class adj_list_impl
981.1762 +      : public adj_list_helper<Config, Base>
981.1763 +    {
981.1764 +      typedef typename Config::OutEdgeList OutEdgeList;
981.1765 +      typedef typename Config::InEdgeList InEdgeList;
981.1766 +      typedef typename Config::StoredVertexList StoredVertexList;
981.1767 +    public:
981.1768 +      typedef typename Config::stored_vertex stored_vertex;
981.1769 +      typedef typename Config::EdgeContainer EdgeContainer;
981.1770 +      typedef typename Config::vertex_descriptor vertex_descriptor;
981.1771 +      typedef typename Config::edge_descriptor edge_descriptor;
981.1772 +      typedef typename Config::vertex_iterator vertex_iterator;
981.1773 +      typedef typename Config::edge_iterator edge_iterator;
981.1774 +      typedef typename Config::edge_parallel_category edge_parallel_category;
981.1775 +      typedef typename Config::vertices_size_type vertices_size_type;
981.1776 +      typedef typename Config::edges_size_type edges_size_type;
981.1777 +      typedef typename Config::degree_size_type degree_size_type;
981.1778 +      typedef typename Config::edge_property_type edge_property_type;
981.1779 +      typedef adj_list_tag graph_tag;
981.1780 +
981.1781 +      static vertex_descriptor null_vertex()
981.1782 +      {
981.1783 +        return 0;
981.1784 +      }
981.1785 +      
981.1786 +      inline adj_list_impl() { }
981.1787 +
981.1788 +      inline adj_list_impl(const adj_list_impl& x) {
981.1789 +        copy_impl(x);
981.1790 +      }
981.1791 +      inline adj_list_impl& operator=(const adj_list_impl& x) {
981.1792 +        this->clear();
981.1793 +        copy_impl(x);
981.1794 +        return *this;
981.1795 +      }
981.1796 +      inline void clear() {
981.1797 +        for (typename StoredVertexList::iterator i = m_vertices.begin();
981.1798 +             i != m_vertices.end(); ++i)
981.1799 +          delete (stored_vertex*)*i;
981.1800 +        m_vertices.clear();
981.1801 +        m_edges.clear();
981.1802 +      }
981.1803 +      inline adj_list_impl(vertices_size_type num_vertices) {
981.1804 +        for (vertices_size_type i = 0; i < num_vertices; ++i)
981.1805 +          add_vertex(static_cast<Derived&>(*this));
981.1806 +      }
981.1807 +      template <class EdgeIterator>
981.1808 +      inline adj_list_impl(vertices_size_type num_vertices,
981.1809 +                           EdgeIterator first, EdgeIterator last)
981.1810 +      {
981.1811 +        vertex_descriptor* v = new vertex_descriptor[num_vertices];
981.1812 +        for (vertices_size_type i = 0; i < num_vertices; ++i)
981.1813 +          v[i] = add_vertex(static_cast<Derived&>(*this));
981.1814 +
981.1815 +        while (first != last) {
981.1816 +          add_edge(v[(*first).first], v[(*first).second], *this);
981.1817 +          ++first;
981.1818 +        }
981.1819 +        delete [] v;
981.1820 +      }
981.1821 +      template <class EdgeIterator, class EdgePropertyIterator>
981.1822 +      inline adj_list_impl(vertices_size_type num_vertices,
981.1823 +                           EdgeIterator first, EdgeIterator last,
981.1824 +                           EdgePropertyIterator ep_iter)
981.1825 +      {
981.1826 +        vertex_descriptor* v = new vertex_descriptor[num_vertices];
981.1827 +        for (vertices_size_type i = 0; i < num_vertices; ++i)
981.1828 +          v[i] = add_vertex(static_cast<Derived&>(*this));
981.1829 +
981.1830 +        while (first != last) {
981.1831 +          add_edge(v[(*first).first], v[(*first).second], *ep_iter, *this);
981.1832 +          ++first;
981.1833 +          ++ep_iter;
981.1834 +        }
981.1835 +        delete [] v;
981.1836 +      }
981.1837 +      ~adj_list_impl() {
981.1838 +        for (typename StoredVertexList::iterator i = m_vertices.begin();
981.1839 +             i != m_vertices.end(); ++i)
981.1840 +          delete (stored_vertex*)*i;
981.1841 +      }
981.1842 +      //    protected:
981.1843 +      inline OutEdgeList& out_edge_list(vertex_descriptor v) {
981.1844 +        stored_vertex* sv = (stored_vertex*)v;
981.1845 +        return sv->m_out_edges;
981.1846 +      }
981.1847 +      inline const OutEdgeList& out_edge_list(vertex_descriptor v) const {
981.1848 +        stored_vertex* sv = (stored_vertex*)v;
981.1849 +        return sv->m_out_edges;
981.1850 +      }
981.1851 +      inline StoredVertexList& vertex_set() { return m_vertices; }
981.1852 +      inline const StoredVertexList& vertex_set() const { return m_vertices; }
981.1853 +
981.1854 +      inline void copy_impl(const adj_list_impl& x_) 
981.1855 +      {
981.1856 +        const Derived& x = static_cast<const Derived&>(x_);
981.1857 +
981.1858 +        // Would be better to have a constant time way to get from
981.1859 +        // vertices in x to the corresponding vertices in *this.
981.1860 +        std::map<stored_vertex*,stored_vertex*> vertex_map;
981.1861 +
981.1862 +        // Copy the stored vertex objects by adding each vertex
981.1863 +        // and copying its property object.
981.1864 +        vertex_iterator vi, vi_end;
981.1865 +        for (tie(vi, vi_end) = vertices(x); vi != vi_end; ++vi) {
981.1866 +          stored_vertex* v = (stored_vertex*)add_vertex(*this);
981.1867 +          v->m_property = ((stored_vertex*)*vi)->m_property;
981.1868 +          vertex_map[(stored_vertex*)*vi] = v;
981.1869 +        }
981.1870 +        // Copy the edges by adding each edge and copying its
981.1871 +        // property object.
981.1872 +        edge_iterator ei, ei_end;
981.1873 +        for (tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) {
981.1874 +          edge_descriptor e;
981.1875 +          bool inserted; 
981.1876 +          vertex_descriptor s = source(*ei,x), t = target(*ei,x);
981.1877 +          tie(e, inserted) = add_edge(vertex_map[(stored_vertex*)s], 
981.1878 +                                      vertex_map[(stored_vertex*)t], *this);
981.1879 +          *((edge_property_type*)e.m_eproperty)
981.1880 +            = *((edge_property_type*)(*ei).m_eproperty);
981.1881 +        }
981.1882 +      }
981.1883 +
981.1884 +
981.1885 +      typename Config::EdgeContainer m_edges;
981.1886 +      StoredVertexList m_vertices;
981.1887 +    };
981.1888 +
981.1889 +    // O(1)
981.1890 +    template <class Derived, class Config, class Base>
981.1891 +    inline typename Config::vertex_descriptor
981.1892 +    add_vertex(adj_list_impl<Derived, Config, Base>& g_)
981.1893 +    {
981.1894 +      Derived& g = static_cast<Derived&>(g_);
981.1895 +      typedef typename Config::stored_vertex stored_vertex;
981.1896 +      stored_vertex* v = new stored_vertex;
981.1897 +      typename Config::StoredVertexList::iterator pos;
981.1898 +      bool inserted;
981.1899 +      boost::tie(pos,inserted) = boost::graph_detail::push(g.m_vertices, v);
981.1900 +      v->m_position = pos;
981.1901 +      return v;
981.1902 +    }
981.1903 +    // O(1)
981.1904 +    template <class Derived, class Config, class Base>
981.1905 +    inline typename Config::vertex_descriptor
981.1906 +    add_vertex(const typename Config::vertex_property_type& p,
981.1907 +               adj_list_impl<Derived, Config, Base>& g_)
981.1908 +    {
981.1909 +      Derived& g = static_cast<Derived&>(g_);
981.1910 +      typedef typename Config::stored_vertex stored_vertex;
981.1911 +      stored_vertex* v = new stored_vertex(p);
981.1912 +      typename Config::StoredVertexList::iterator pos;
981.1913 +      bool inserted;
981.1914 +      boost::tie(pos,inserted) = boost::graph_detail::push(g.m_vertices, v);
981.1915 +      v->m_position = pos;
981.1916 +      return v;
981.1917 +    }
981.1918 +    // O(1)
981.1919 +    template <class Derived, class Config, class Base>
981.1920 +    inline void remove_vertex(typename Config::vertex_descriptor u,
981.1921 +                              adj_list_impl<Derived, Config, Base>& g_)
981.1922 +    {
981.1923 +      typedef typename Config::stored_vertex stored_vertex;
981.1924 +      Derived& g = static_cast<Derived&>(g_);
981.1925 +      stored_vertex* su = (stored_vertex*)u;
981.1926 +      g.m_vertices.erase(su->m_position);
981.1927 +      delete su;
981.1928 +    }
981.1929 +    // O(V)
981.1930 +    template <class Derived, class Config, class Base>
981.1931 +    inline typename Config::vertex_descriptor
981.1932 +    vertex(typename Config::vertices_size_type n, 
981.1933 +           const adj_list_impl<Derived, Config, Base>& g_)
981.1934 +    {
981.1935 +      const Derived& g = static_cast<const Derived&>(g_);
981.1936 +      typename Config::vertex_iterator i = vertices(g).first;
981.1937 +      while (n--) ++i; // std::advance(i, n); (not VC++ portable)
981.1938 +      return *i;
981.1939 +    }
981.1940 +
981.1941 +    //=========================================================================
981.1942 +    // Vector-Backbone Adjacency List Implementation
981.1943 +
981.1944 +    namespace detail {
981.1945 +
981.1946 +      template <class Graph, class vertex_descriptor>
981.1947 +      inline void 
981.1948 +      remove_vertex_dispatch(Graph& g, vertex_descriptor u, 
981.1949 +                             boost::directed_tag)
981.1950 +      {
981.1951 +        typedef typename Graph::edge_parallel_category edge_parallel_category;
981.1952 +        g.m_vertices.erase(g.m_vertices.begin() + u);
981.1953 +        vertex_descriptor V = num_vertices(g);
981.1954 +        if (u != V) {
981.1955 +          for (vertex_descriptor v = 0; v < V; ++v)
981.1956 +            reindex_edge_list(g.out_edge_list(v), u, edge_parallel_category());
981.1957 +        }
981.1958 +      }
981.1959 +
981.1960 +      template <class Graph, class vertex_descriptor>
981.1961 +      inline void 
981.1962 +      remove_vertex_dispatch(Graph& g, vertex_descriptor u, 
981.1963 +                             boost::undirected_tag)
981.1964 +      {
981.1965 +        typedef typename Graph::global_edgelist_selector EdgeListS;
981.1966 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1967 +
981.1968 +        typedef typename Graph::edge_parallel_category edge_parallel_category;
981.1969 +        g.m_vertices.erase(g.m_vertices.begin() + u);
981.1970 +        vertex_descriptor V = num_vertices(g);
981.1971 +        for (vertex_descriptor v = 0; v < V; ++v)
981.1972 +          reindex_edge_list(g.out_edge_list(v), u, 
981.1973 +                            edge_parallel_category());
981.1974 +        typedef typename Graph::EdgeContainer Container;
981.1975 +        typedef typename Container::iterator Iter;
981.1976 +        Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end();
981.1977 +        for (; ei != ei_end; ++ei) {
981.1978 +          if (ei->m_source > u)
981.1979 +            --ei->m_source;
981.1980 +          if (ei->m_target > u)
981.1981 +            --ei->m_target;
981.1982 +        }
981.1983 +      }
981.1984 +      template <class Graph, class vertex_descriptor>
981.1985 +      inline void 
981.1986 +      remove_vertex_dispatch(Graph& g, vertex_descriptor u, 
981.1987 +                             boost::bidirectional_tag)
981.1988 +      {
981.1989 +        typedef typename Graph::global_edgelist_selector EdgeListS;
981.1990 +        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
981.1991 +
981.1992 +        typedef typename Graph::edge_parallel_category edge_parallel_category;
981.1993 +        g.m_vertices.erase(g.m_vertices.begin() + u);
981.1994 +        vertex_descriptor V = num_vertices(g);
981.1995 +        vertex_descriptor v;
981.1996 +        if (u != V) {
981.1997 +          for (v = 0; v < V; ++v)
981.1998 +            reindex_edge_list(g.out_edge_list(v), u, 
981.1999 +                              edge_parallel_category());
981.2000 +          for (v = 0; v < V; ++v)
981.2001 +            reindex_edge_list(in_edge_list(g, v), u, 
981.2002 +                              edge_parallel_category());
981.2003 +
981.2004 +          typedef typename Graph::EdgeContainer Container;
981.2005 +          typedef typename Container::iterator Iter;
981.2006 +          Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end();
981.2007 +          for (; ei != ei_end; ++ei) {
981.2008 +            if (ei->m_source > u)
981.2009 +              --ei->m_source;
981.2010 +            if (ei->m_target > u)
981.2011 +              --ei->m_target;
981.2012 +          }
981.2013 +        }
981.2014 +      }
981.2015 +
981.2016 +      template <class EdgeList, class vertex_descriptor>
981.2017 +      inline void
981.2018 +      reindex_edge_list(EdgeList& el, vertex_descriptor u, 
981.2019 +                        boost::allow_parallel_edge_tag)
981.2020 +      {
981.2021 +        typename EdgeList::iterator ei = el.begin(), e_end = el.end();
981.2022 +        for (; ei != e_end; ++ei)
981.2023 +          if ((*ei).get_target() > u)
981.2024 +            --(*ei).get_target();
981.2025 +      }
981.2026 +      template <class EdgeList, class vertex_descriptor>
981.2027 +      inline void
981.2028 +      reindex_edge_list(EdgeList& el, vertex_descriptor u, 
981.2029 +                        boost::disallow_parallel_edge_tag)
981.2030 +      {
981.2031 +        typename EdgeList::iterator ei = el.begin(), e_end = el.end();
981.2032 +        while (ei != e_end) {
981.2033 +          typename EdgeList::value_type ce = *ei;
981.2034 +          ++ei;
981.2035 +          if (ce.get_target() > u) {
981.2036 +            el.erase(ce);
981.2037 +            --ce.get_target();
981.2038 +            el.insert(ce);
981.2039 +          }
981.2040 +        }
981.2041 +      }
981.2042 +    } // namespace detail
981.2043 +
981.2044 +    struct vec_adj_list_tag { };
981.2045 +    
981.2046 +    template <class Graph, class Config, class Base>
981.2047 +    class vec_adj_list_impl
981.2048 +      : public adj_list_helper<Config, Base>
981.2049 +    {
981.2050 +      typedef typename Config::OutEdgeList OutEdgeList;
981.2051 +      typedef typename Config::InEdgeList InEdgeList;
981.2052 +      typedef typename Config::StoredVertexList StoredVertexList; 
981.2053 +    public:
981.2054 +      typedef typename Config::vertex_descriptor vertex_descriptor;
981.2055 +      typedef typename Config::edge_descriptor edge_descriptor;
981.2056 +      typedef typename Config::out_edge_iterator out_edge_iterator;
981.2057 +      typedef typename Config::edge_iterator edge_iterator;
981.2058 +      typedef typename Config::directed_category directed_category;
981.2059 +      typedef typename Config::vertices_size_type vertices_size_type;
981.2060 +      typedef typename Config::edges_size_type edges_size_type;
981.2061 +      typedef typename Config::degree_size_type degree_size_type;
981.2062 +      typedef typename Config::StoredEdge StoredEdge;
981.2063 +      typedef typename Config::stored_vertex stored_vertex;
981.2064 +      typedef typename Config::EdgeContainer EdgeContainer;
981.2065 +      typedef typename Config::edge_property_type edge_property_type;
981.2066 +      typedef vec_adj_list_tag graph_tag;
981.2067 +
981.2068 +      static vertex_descriptor null_vertex()
981.2069 +      {
981.2070 +        return (std::numeric_limits<vertex_descriptor>::max)();
981.2071 +      }
981.2072 +      
981.2073 +      inline vec_adj_list_impl() { }
981.2074 +
981.2075 +      inline vec_adj_list_impl(const vec_adj_list_impl& x) {
981.2076 +        copy_impl(x);
981.2077 +      }
981.2078 +      inline vec_adj_list_impl& operator=(const vec_adj_list_impl& x) {
981.2079 +        this->clear();
981.2080 +        copy_impl(x);
981.2081 +        return *this;
981.2082 +      }
981.2083 +      inline void clear() {
981.2084 +        m_vertices.clear();
981.2085 +        m_edges.clear();
981.2086 +      }
981.2087 +
981.2088 +      inline vec_adj_list_impl(vertices_size_type _num_vertices)
981.2089 +        : m_vertices(_num_vertices) { }
981.2090 +
981.2091 +      template <class EdgeIterator>
981.2092 +      inline vec_adj_list_impl(vertices_size_type num_vertices,
981.2093 +                               EdgeIterator first, EdgeIterator last)
981.2094 +        : m_vertices(num_vertices)
981.2095 +      {
981.2096 +        while (first != last) {
981.2097 +          add_edge((*first).first, (*first).second, 
981.2098 +                   static_cast<Graph&>(*this));
981.2099 +          ++first;
981.2100 +        }
981.2101 +      }
981.2102 +      template <class EdgeIterator, class EdgePropertyIterator>
981.2103 +      inline vec_adj_list_impl(vertices_size_type num_vertices,
981.2104 +                               EdgeIterator first, EdgeIterator last,
981.2105 +                               EdgePropertyIterator ep_iter)
981.2106 +        : m_vertices(num_vertices)
981.2107 +      {
981.2108 +        while (first != last) {
981.2109 +          add_edge((*first).first, (*first).second, *ep_iter, 
981.2110 +                   static_cast<Graph&>(*this));
981.2111 +          ++first;
981.2112 +          ++ep_iter;
981.2113 +        }
981.2114 +      }
981.2115 +
981.2116 +      //    protected:
981.2117 +      inline boost::integer_range<vertex_descriptor> vertex_set() const {
981.2118 +        return boost::integer_range<vertex_descriptor>(0, m_vertices.size());
981.2119 +      }
981.2120 +      inline OutEdgeList& out_edge_list(vertex_descriptor v) {
981.2121 +        return m_vertices[v].m_out_edges;
981.2122 +      }
981.2123 +      inline const OutEdgeList& out_edge_list(vertex_descriptor v) const {
981.2124 +        return m_vertices[v].m_out_edges;
981.2125 +      }
981.2126 +      inline void copy_impl(const vec_adj_list_impl& x_) 
981.2127 +      {
981.2128 +        const Graph& x = static_cast<const Graph&>(x_);
981.2129 +        // Copy the stored vertex objects by adding each vertex
981.2130 +        // and copying its property object.
981.2131 +        for (vertices_size_type i = 0; i < num_vertices(x); ++i) {
981.2132 +          vertex_descriptor v = add_vertex(*this);
981.2133 +          m_vertices[v].m_property = x.m_vertices[i].m_property;
981.2134 +        }
981.2135 +        // Copy the edges by adding each edge and copying its
981.2136 +        // property object.
981.2137 +        edge_iterator ei, ei_end;
981.2138 +        for (tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) {
981.2139 +          edge_descriptor e;
981.2140 +          bool inserted; 
981.2141 +          tie(e, inserted) = add_edge(source(*ei,x), target(*ei,x) , *this);
981.2142 +          *((edge_property_type*)e.m_eproperty)
981.2143 +            = *((edge_property_type*)(*ei).m_eproperty);
981.2144 +        }
981.2145 +      }
981.2146 +      typename Config::EdgeContainer m_edges;
981.2147 +      StoredVertexList m_vertices;
981.2148 +    };
981.2149 +    // Had to make these non-members to avoid accidental instantiation
981.2150 +    // on SGI MIPSpro C++
981.2151 +    template <class G, class C, class B>
981.2152 +    inline typename C::InEdgeList& 
981.2153 +    in_edge_list(vec_adj_list_impl<G,C,B>& g, 
981.2154 +                 typename C::vertex_descriptor v) {
981.2155 +      return g.m_vertices[v].m_in_edges;
981.2156 +    }
981.2157 +    template <class G, class C, class B>
981.2158 +    inline const typename C::InEdgeList& 
981.2159 +    in_edge_list(const vec_adj_list_impl<G,C,B>& g, 
981.2160 +                 typename C::vertex_descriptor v) {
981.2161 +      return g.m_vertices[v].m_in_edges;
981.2162 +    }
981.2163 +
981.2164 +      // O(1)
981.2165 +    template <class Graph, class Config, class Base>
981.2166 +    inline typename Config::vertex_descriptor
981.2167 +    add_vertex(vec_adj_list_impl<Graph, Config, Base>& g_) {
981.2168 +      Graph& g = static_cast<Graph&>(g_);
981.2169 +      g.m_vertices.resize(g.m_vertices.size() + 1);
981.2170 +      return g.m_vertices.size() - 1;
981.2171 +    }
981.2172 +
981.2173 +    template <class Graph, class Config, class Base>
981.2174 +    inline typename Config::vertex_descriptor
981.2175 +    add_vertex(const typename Config::vertex_property_type& p,
981.2176 +               vec_adj_list_impl<Graph, Config, Base>& g_) {
981.2177 +      Graph& g = static_cast<Graph&>(g_);
981.2178 +      typedef typename Config::stored_vertex stored_vertex;
981.2179 +      g.m_vertices.push_back(stored_vertex(p));
981.2180 +      return g.m_vertices.size() - 1;
981.2181 +    }
981.2182 +
981.2183 +    // Here we override the directed_graph_helper add_edge() function
981.2184 +    // so that the number of vertices is automatically changed if
981.2185 +    // either u or v is greater than the number of vertices.
981.2186 +    template <class Graph, class Config, class Base>
981.2187 +    inline std::pair<typename Config::edge_descriptor, bool>
981.2188 +    add_edge(typename Config::vertex_descriptor u, 
981.2189 +             typename Config::vertex_descriptor v,
981.2190 +             const typename Config::edge_property_type& p,
981.2191 +             vec_adj_list_impl<Graph, Config, Base>& g_)
981.2192 +    {
981.2193 +      BOOST_USING_STD_MAX();
981.2194 +      typename Config::vertex_descriptor x = max BOOST_PREVENT_MACRO_SUBSTITUTION(u, v);
981.2195 +      if (x >= num_vertices(g_))
981.2196 +        g_.m_vertices.resize(x + 1);
981.2197 +      adj_list_helper<Config, Base>& g = g_;
981.2198 +      return add_edge(u, v, p, g);
981.2199 +    }
981.2200 +    template <class Graph, class Config, class Base>
981.2201 +    inline std::pair<typename Config::edge_descriptor, bool>
981.2202 +    add_edge(typename Config::vertex_descriptor u, 
981.2203 +             typename Config::vertex_descriptor v,
981.2204 +             vec_adj_list_impl<Graph, Config, Base>& g_)
981.2205 +    {
981.2206 +      typename Config::edge_property_type p;
981.2207 +      return add_edge(u, v, p, g_);
981.2208 +    }
981.2209 +
981.2210 +
981.2211 +    // O(V + E)
981.2212 +    template <class Graph, class Config, class Base>
981.2213 +    inline void remove_vertex(typename Config::vertex_descriptor v,
981.2214 +                              vec_adj_list_impl<Graph, Config, Base>& g_)
981.2215 +    {
981.2216 +      typedef typename Config::directed_category Cat;
981.2217 +      Graph& g = static_cast<Graph&>(g_);
981.2218 +      detail::remove_vertex_dispatch(g, v, Cat());
981.2219 +    }
981.2220 +    // O(1)
981.2221 +    template <class Graph, class Config, class Base>
981.2222 +    inline typename Config::vertex_descriptor 
981.2223 +    vertex(typename Config::vertices_size_type n, 
981.2224 +           const vec_adj_list_impl<Graph, Config, Base>&)
981.2225 +    {
981.2226 +      return n;
981.2227 +    }
981.2228 +
981.2229 +
981.2230 +  namespace detail {
981.2231 +
981.2232 +    //=========================================================================
981.2233 +    // Adjacency List Generator
981.2234 +
981.2235 +    template <class Graph, class VertexListS, class OutEdgeListS,
981.2236 +              class DirectedS, class VertexProperty, class EdgeProperty, 
981.2237 +              class GraphProperty, class EdgeListS>
981.2238 +    struct adj_list_gen
981.2239 +    {
981.2240 +      typedef typename detail::is_random_access<VertexListS>::type 
981.2241 +        is_rand_access;
981.2242 +      typedef typename has_property<EdgeProperty>::type has_edge_property; 
981.2243 +      typedef typename DirectedS::is_directed_t DirectedT;
981.2244 +      typedef typename DirectedS::is_bidir_t BidirectionalT;
981.2245 +
981.2246 +      struct config
981.2247 +      {
981.2248 +        typedef OutEdgeListS edgelist_selector;
981.2249 +        typedef EdgeListS global_edgelist_selector;
981.2250 +
981.2251 +        typedef Graph graph_type;
981.2252 +        typedef EdgeProperty edge_property_type;
981.2253 +        typedef VertexProperty vertex_property_type;
981.2254 +        typedef GraphProperty graph_property_type;
981.2255 +        typedef std::size_t vertices_size_type;
981.2256 +
981.2257 +        typedef adjacency_list_traits<OutEdgeListS, VertexListS, DirectedS> 
981.2258 +           Traits;
981.2259 +
981.2260 +        typedef typename Traits::directed_category directed_category;
981.2261 +        typedef typename Traits::edge_parallel_category edge_parallel_category;
981.2262 +        typedef typename Traits::vertex_descriptor vertex_descriptor;
981.2263 +        typedef typename Traits::edge_descriptor edge_descriptor;
981.2264 +
981.2265 +        typedef void* vertex_ptr; 
981.2266 +
981.2267 +        // need to reorganize this to avoid instantiating stuff
981.2268 +        // that doesn't get used -JGS
981.2269 +
981.2270 +        // VertexList and vertex_iterator
981.2271 +        typedef typename container_gen<VertexListS, 
981.2272 +          vertex_ptr>::type SeqVertexList;
981.2273 +        typedef boost::integer_range<std::size_t> RandVertexList;
981.2274 +        typedef typename boost::ct_if_t<is_rand_access,
981.2275 +          RandVertexList, SeqVertexList>::type VertexList;
981.2276 +
981.2277 +        typedef typename VertexList::iterator vertex_iterator;
981.2278 +
981.2279 +        // EdgeContainer and StoredEdge
981.2280 +
981.2281 +        typedef typename container_gen<EdgeListS, 
981.2282 +          list_edge<vertex_descriptor, EdgeProperty> >::type EdgeContainer;
981.2283 +
981.2284 +        typedef typename ct_and<DirectedT, 
981.2285 +             typename ct_not<BidirectionalT>::type >::type on_edge_storage;
981.2286 +
981.2287 +        typedef typename boost::ct_if_t<on_edge_storage,
981.2288 +          std::size_t, typename EdgeContainer::size_type
981.2289 +        >::type edges_size_type;
981.2290 +
981.2291 +        typedef typename EdgeContainer::iterator EdgeIter;
981.2292 +
981.2293 +        typedef typename detail::is_random_access<EdgeListS>::type is_edge_ra;
981.2294 +
981.2295 +        typedef typename boost::ct_if_t<on_edge_storage,
981.2296 +          stored_edge_property<vertex_descriptor, EdgeProperty>,
981.2297 +          typename boost::ct_if_t<is_edge_ra,
981.2298 +            stored_ra_edge_iter<vertex_descriptor, EdgeContainer, EdgeProperty>,
981.2299 +            stored_edge_iter<vertex_descriptor, EdgeIter, EdgeProperty>
981.2300 +          >::type
981.2301 +        >::type StoredEdge;
981.2302 +
981.2303 +        // Adjacency Types
981.2304 +
981.2305 +        typedef typename container_gen<OutEdgeListS, StoredEdge>::type 
981.2306 +          OutEdgeList;
981.2307 +        typedef typename OutEdgeList::size_type degree_size_type;
981.2308 +        typedef typename OutEdgeList::iterator OutEdgeIter;
981.2309 +
981.2310 +        typedef boost::detail::iterator_traits<OutEdgeIter> OutEdgeIterTraits;
981.2311 +        typedef typename OutEdgeIterTraits::iterator_category OutEdgeIterCat;
981.2312 +        typedef typename OutEdgeIterTraits::difference_type OutEdgeIterDiff;
981.2313 +
981.2314 +        typedef out_edge_iter<
981.2315 +            OutEdgeIter, vertex_descriptor, edge_descriptor, OutEdgeIterDiff
981.2316 +        > out_edge_iterator;
981.2317 +
981.2318 +        typedef typename adjacency_iterator_generator<graph_type,
981.2319 +           vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
981.2320 +
981.2321 +        typedef OutEdgeList InEdgeList;
981.2322 +        typedef OutEdgeIter InEdgeIter;
981.2323 +        typedef OutEdgeIterCat InEdgeIterCat;
981.2324 +        typedef OutEdgeIterDiff InEdgeIterDiff;
981.2325 +
981.2326 +        typedef in_edge_iter<
981.2327 +            InEdgeIter, vertex_descriptor, edge_descriptor, InEdgeIterDiff
981.2328 +        > in_edge_iterator;
981.2329 +
981.2330 +        typedef typename inv_adjacency_iterator_generator<graph_type,
981.2331 +           vertex_descriptor, in_edge_iterator>::type inv_adjacency_iterator;
981.2332 +
981.2333 +        // Edge Iterator
981.2334 +
981.2335 +        typedef boost::detail::iterator_traits<EdgeIter> EdgeIterTraits;
981.2336 +        typedef typename EdgeIterTraits::iterator_category EdgeIterCat;
981.2337 +        typedef typename EdgeIterTraits::difference_type EdgeIterDiff;
981.2338 +
981.2339 +        typedef undirected_edge_iter<
981.2340 +            EdgeIter
981.2341 +          , edge_descriptor
981.2342 +          , EdgeIterDiff          
981.2343 +        > UndirectedEdgeIter; // also used for bidirectional
981.2344 +
981.2345 +        typedef adj_list_edge_iterator<vertex_iterator, out_edge_iterator, 
981.2346 +           graph_type> DirectedEdgeIter;
981.2347 +
981.2348 +        typedef typename boost::ct_if_t<on_edge_storage,
981.2349 +          DirectedEdgeIter, UndirectedEdgeIter>::type edge_iterator;
981.2350 +
981.2351 +        // stored_vertex and StoredVertexList
981.2352 +        typedef typename container_gen<VertexListS, vertex_ptr>::type
981.2353 +          SeqStoredVertexList;
981.2354 +        struct seq_stored_vertex {
981.2355 +          seq_stored_vertex() { }
981.2356 +          seq_stored_vertex(const VertexProperty& p) : m_property(p) { }
981.2357 +          OutEdgeList m_out_edges;
981.2358 +          VertexProperty m_property;
981.2359 +          typename SeqStoredVertexList::iterator m_position;
981.2360 +        };
981.2361 +        struct bidir_seq_stored_vertex {
981.2362 +          bidir_seq_stored_vertex() { }
981.2363 +          bidir_seq_stored_vertex(const VertexProperty& p) : m_property(p) { }
981.2364 +          OutEdgeList m_out_edges;
981.2365 +          InEdgeList m_in_edges;
981.2366 +          VertexProperty m_property;
981.2367 +          typename SeqStoredVertexList::iterator m_position;
981.2368 +        };
981.2369 +        struct rand_stored_vertex {
981.2370 +          rand_stored_vertex() { }
981.2371 +          rand_stored_vertex(const VertexProperty& p) : m_property(p) { }
981.2372 +          OutEdgeList m_out_edges;
981.2373 +          VertexProperty m_property;
981.2374 +        };
981.2375 +        struct bidir_rand_stored_vertex {
981.2376 +          bidir_rand_stored_vertex() { }
981.2377 +          bidir_rand_stored_vertex(const VertexProperty& p) : m_property(p) { }
981.2378 +          OutEdgeList m_out_edges;
981.2379 +          InEdgeList m_in_edges;
981.2380 +          VertexProperty m_property;
981.2381 +        };
981.2382 +        typedef typename boost::ct_if_t<is_rand_access,
981.2383 +          typename boost::ct_if_t<BidirectionalT,
981.2384 +            bidir_rand_stored_vertex, rand_stored_vertex>::type,
981.2385 +          typename boost::ct_if_t<BidirectionalT,
981.2386 +            bidir_seq_stored_vertex, seq_stored_vertex>::type
981.2387 +        >::type StoredVertex;
981.2388 +        struct stored_vertex : public StoredVertex {
981.2389 +          stored_vertex() { }
981.2390 +          stored_vertex(const VertexProperty& p) : StoredVertex(p) { }
981.2391 +        };
981.2392 +
981.2393 +        typedef typename container_gen<VertexListS, stored_vertex>::type
981.2394 +          RandStoredVertexList;
981.2395 +        typedef typename boost::ct_if_t< is_rand_access,
981.2396 +          RandStoredVertexList, SeqStoredVertexList>::type StoredVertexList;
981.2397 +      }; // end of config
981.2398 +
981.2399 +
981.2400 +      typedef typename boost::ct_if_t<BidirectionalT,
981.2401 +        bidirectional_graph_helper_with_property<config>,
981.2402 +        typename boost::ct_if_t<DirectedT,
981.2403 +          directed_graph_helper<config>,
981.2404 +          undirected_graph_helper<config>
981.2405 +        >::type
981.2406 +      >::type DirectedHelper;
981.2407 +
981.2408 +      typedef typename boost::ct_if_t<is_rand_access,
981.2409 +        vec_adj_list_impl<Graph, config, DirectedHelper>,
981.2410 +        adj_list_impl<Graph, config, DirectedHelper>
981.2411 +      >::type type;
981.2412 +
981.2413 +    };
981.2414 +
981.2415 +  } // namespace detail
981.2416 +
981.2417 +    //=========================================================================
981.2418 +    // Vertex Property Maps
981.2419 +
981.2420 +    template <class Graph, class ValueType, class Reference, class Tag>
981.2421 +    struct adj_list_vertex_property_map
981.2422 +      : public boost::put_get_helper<
981.2423 +          Reference,
981.2424 +          adj_list_vertex_property_map<Graph, ValueType, Reference, Tag>
981.2425 +        >
981.2426 +    {
981.2427 +      typedef typename Graph::stored_vertex StoredVertex;
981.2428 +      typedef ValueType value_type;
981.2429 +      typedef Reference reference;
981.2430 +      typedef typename Graph::vertex_descriptor key_type;
981.2431 +      typedef boost::lvalue_property_map_tag category;
981.2432 +      inline adj_list_vertex_property_map() { }
981.2433 +      inline adj_list_vertex_property_map(const Graph*) { }
981.2434 +      inline Reference operator[](key_type v) const {
981.2435 +        StoredVertex* sv = (StoredVertex*)v;
981.2436 +        return get_property_value(sv->m_property, Tag());
981.2437 +      }
981.2438 +      inline Reference operator()(key_type v) const {
981.2439 +        return this->operator[](v);
981.2440 +      }
981.2441 +    };
981.2442 +
981.2443 +    template <class Graph, class Property, class PropRef>
981.2444 +    struct adj_list_vertex_all_properties_map
981.2445 +      : public boost::put_get_helper<PropRef,
981.2446 +          adj_list_vertex_all_properties_map<Graph, Property, PropRef>
981.2447 +        >
981.2448 +    {
981.2449 +      typedef typename Graph::stored_vertex StoredVertex;
981.2450 +      typedef Property value_type;
981.2451 +      typedef PropRef reference;
981.2452 +      typedef typename Graph::vertex_descriptor key_type;
981.2453 +      typedef boost::lvalue_property_map_tag category;
981.2454 +      inline adj_list_vertex_all_properties_map() { }
981.2455 +      inline adj_list_vertex_all_properties_map(const Graph*) { }
981.2456 +      inline PropRef operator[](key_type v) const {
981.2457 +        StoredVertex* sv = (StoredVertex*)v;
981.2458 +        return sv->m_property;
981.2459 +      }
981.2460 +      inline PropRef operator()(key_type v) const {
981.2461 +        return this->operator[](v);
981.2462 +      }
981.2463 +    };
981.2464 +
981.2465 +    template <class Graph, class GraphPtr, class ValueType, class Reference,
981.2466 +              class Tag>
981.2467 +    struct vec_adj_list_vertex_property_map
981.2468 +      : public boost::put_get_helper<
981.2469 +          Reference,
981.2470 +          vec_adj_list_vertex_property_map<Graph,GraphPtr,ValueType,Reference,
981.2471 +             Tag>
981.2472 +        >
981.2473 +    {
981.2474 +      typedef ValueType value_type;
981.2475 +      typedef Reference reference;
981.2476 +      typedef typename boost::graph_traits<Graph>::vertex_descriptor key_type;
981.2477 +      typedef boost::lvalue_property_map_tag category;
981.2478 +      vec_adj_list_vertex_property_map() { }
981.2479 +      vec_adj_list_vertex_property_map(GraphPtr g) : m_g(g) { }
981.2480 +      inline Reference operator[](key_type v) const {
981.2481 +        return get_property_value(m_g->m_vertices[v].m_property,  Tag());
981.2482 +      }
981.2483 +      inline Reference operator()(key_type v) const {
981.2484 +        return this->operator[](v);
981.2485 +      }
981.2486 +      GraphPtr m_g;
981.2487 +    };
981.2488 +
981.2489 +    template <class Graph, class GraphPtr, class Property, class PropertyRef>
981.2490 +    struct vec_adj_list_vertex_all_properties_map
981.2491 +      : public boost::put_get_helper<PropertyRef,
981.2492 +          vec_adj_list_vertex_all_properties_map<Graph,GraphPtr,Property,
981.2493 +            PropertyRef>
981.2494 +        >
981.2495 +    {
981.2496 +      typedef Property value_type;
981.2497 +      typedef PropertyRef reference;
981.2498 +      typedef typename boost::graph_traits<Graph>::vertex_descriptor key_type;
981.2499 +      typedef boost::lvalue_property_map_tag category;
981.2500 +      vec_adj_list_vertex_all_properties_map() { }
981.2501 +      vec_adj_list_vertex_all_properties_map(GraphPtr g) : m_g(g) { }
981.2502 +      inline PropertyRef operator[](key_type v) const {
981.2503 +        return m_g->m_vertices[v].m_property;
981.2504 +      }
981.2505 +      inline PropertyRef operator()(key_type v) const {
981.2506 +        return this->operator[](v);
981.2507 +      }
981.2508 +      GraphPtr m_g;
981.2509 +    };
981.2510 +
981.2511 +    struct adj_list_any_vertex_pa {
981.2512 +      template <class Tag, class Graph, class Property>
981.2513 +      struct bind_ {
981.2514 +        typedef typename property_value<Property, Tag>::type value_type;
981.2515 +        typedef value_type& reference;
981.2516 +        typedef const value_type& const_reference;
981.2517 +
981.2518 +        typedef adj_list_vertex_property_map
981.2519 +          <Graph, value_type, reference, Tag> type;
981.2520 +        typedef adj_list_vertex_property_map
981.2521 +          <Graph, value_type, const_reference, Tag> const_type;
981.2522 +      };
981.2523 +    };
981.2524 +    struct adj_list_all_vertex_pa {
981.2525 +      template <class Tag, class Graph, class Property>
981.2526 +      struct bind_ {
981.2527 +        typedef typename Graph::vertex_descriptor Vertex;
981.2528 +        typedef adj_list_vertex_all_properties_map<Graph,Property,
981.2529 +          Property&> type;
981.2530 +        typedef adj_list_vertex_all_properties_map<Graph,Property,
981.2531 +          const Property&> const_type;
981.2532 +      };
981.2533 +    };
981.2534 +
981.2535 +    template <class Property, class Vertex>
981.2536 +    struct vec_adj_list_vertex_id_map
981.2537 +      : public boost::put_get_helper<
981.2538 +          Vertex, vec_adj_list_vertex_id_map<Property, Vertex>
981.2539 +        >
981.2540 +    {
981.2541 +      typedef Vertex value_type;
981.2542 +      typedef Vertex key_type;
981.2543 +      typedef Vertex reference;
981.2544 +      typedef boost::readable_property_map_tag category;
981.2545 +      inline vec_adj_list_vertex_id_map() { }
981.2546 +      template <class Graph>
981.2547 +      inline vec_adj_list_vertex_id_map(const Graph&) { }
981.2548 +      inline value_type operator[](key_type v) const { return v; }
981.2549 +      inline value_type operator()(key_type v) const { return v; }
981.2550 +    };
981.2551 +
981.2552 +    struct vec_adj_list_any_vertex_pa {
981.2553 +      template <class Tag, class Graph, class Property>
981.2554 +      struct bind_ {
981.2555 +        typedef typename property_value<Property, Tag>::type value_type;
981.2556 +        typedef value_type& reference;
981.2557 +        typedef const value_type& const_reference;
981.2558 +
981.2559 +        typedef vec_adj_list_vertex_property_map
981.2560 +          <Graph, Graph*, value_type, reference, Tag> type;
981.2561 +        typedef vec_adj_list_vertex_property_map
981.2562 +          <Graph, const Graph*, value_type, const_reference, Tag> const_type;
981.2563 +      };
981.2564 +    };
981.2565 +    struct vec_adj_list_id_vertex_pa {
981.2566 +      template <class Tag, class Graph, class Property>
981.2567 +      struct bind_ {
981.2568 +        typedef typename Graph::vertex_descriptor Vertex;
981.2569 +        typedef vec_adj_list_vertex_id_map<Property, Vertex> type;
981.2570 +        typedef vec_adj_list_vertex_id_map<Property, Vertex> const_type;
981.2571 +      };
981.2572 +    };
981.2573 +    struct vec_adj_list_all_vertex_pa {
981.2574 +      template <class Tag, class Graph, class Property>
981.2575 +      struct bind_ {
981.2576 +        typedef typename Graph::vertex_descriptor Vertex;
981.2577 +        typedef vec_adj_list_vertex_all_properties_map
981.2578 +          <Graph, Graph*, Property, Property&> type;
981.2579 +        typedef vec_adj_list_vertex_all_properties_map
981.2580 +          <Graph, const Graph*, Property, const Property&> const_type;
981.2581 +      };
981.2582 +    };
981.2583 +  namespace detail {
981.2584 +    template <class Tag>
981.2585 +    struct adj_list_choose_vertex_pa_helper {
981.2586 +      typedef adj_list_any_vertex_pa type;
981.2587 +    };
981.2588 +    template <>
981.2589 +    struct adj_list_choose_vertex_pa_helper<vertex_all_t> {
981.2590 +      typedef adj_list_all_vertex_pa type;
981.2591 +    };
981.2592 +    template <class Tag, class Graph, class Property>
981.2593 +    struct adj_list_choose_vertex_pa {
981.2594 +      typedef typename adj_list_choose_vertex_pa_helper<Tag>::type Helper;
981.2595 +      typedef typename Helper::template bind_<Tag,Graph,Property> Bind;
981.2596 +      typedef typename Bind::type type;
981.2597 +      typedef typename Bind::const_type const_type;
981.2598 +    };
981.2599 +
981.2600 +
981.2601 +    template <class Tag>
981.2602 +    struct vec_adj_list_choose_vertex_pa_helper {
981.2603 +      typedef vec_adj_list_any_vertex_pa type;
981.2604 +    };
981.2605 +    template <>
981.2606 +    struct vec_adj_list_choose_vertex_pa_helper<vertex_index_t> {
981.2607 +      typedef vec_adj_list_id_vertex_pa type;
981.2608 +    };
981.2609 +    template <>
981.2610 +    struct vec_adj_list_choose_vertex_pa_helper<vertex_all_t> {
981.2611 +      typedef vec_adj_list_all_vertex_pa type;
981.2612 +    };
981.2613 +    template <class Tag, class Graph, class Property>
981.2614 +    struct vec_adj_list_choose_vertex_pa {
981.2615 +      typedef typename vec_adj_list_choose_vertex_pa_helper<Tag>::type Helper;
981.2616 +      typedef typename Helper::template bind_<Tag,Graph,Property> Bind;
981.2617 +      typedef typename Bind::type type;
981.2618 +      typedef typename Bind::const_type const_type;
981.2619 +    };
981.2620 +  } // namespace detail
981.2621 +    
981.2622 +    //=========================================================================
981.2623 +    // Edge Property Map
981.2624 +
981.2625 +    template <class Directed, class Value, class Ref, class Vertex,
981.2626 +              class Property, class Tag>
981.2627 +    struct adj_list_edge_property_map
981.2628 +      : public put_get_helper< 
981.2629 +          Ref,
981.2630 +          adj_list_edge_property_map<Directed, Value, Ref, Vertex, Property, 
981.2631 +            Tag>
981.2632 +        >
981.2633 +    {
981.2634 +      typedef Value value_type;
981.2635 +      typedef Ref reference;
981.2636 +      typedef detail::edge_desc_impl<Directed, Vertex> key_type;
981.2637 +      typedef boost::lvalue_property_map_tag category;
981.2638 +      inline Ref operator[](key_type e) const {
981.2639 +        Property& p = *(Property*)e.get_property();
981.2640 +        return get_property_value(p, Tag());
981.2641 +      }
981.2642 +      inline Ref operator()(key_type e) const {
981.2643 +        return this->operator[](e);
981.2644 +      }
981.2645 +    };
981.2646 +
981.2647 +    template <class Directed, class Property, class PropRef, class PropPtr,
981.2648 +      class Vertex>
981.2649 +    struct adj_list_edge_all_properties_map
981.2650 +      : public put_get_helper<PropRef,
981.2651 +          adj_list_edge_all_properties_map<Directed, Property, PropRef, 
981.2652 +            PropPtr, Vertex>
981.2653 +        >
981.2654 +    {
981.2655 +      typedef Property value_type;
981.2656 +      typedef PropRef reference;
981.2657 +      typedef detail::edge_desc_impl<Directed, Vertex> key_type;
981.2658 +      typedef boost::lvalue_property_map_tag category;
981.2659 +      inline PropRef operator[](key_type e) const {
981.2660 +        return *(PropPtr)e.get_property();
981.2661 +      }
981.2662 +      inline PropRef operator()(key_type e) const {
981.2663 +        return this->operator[](e);
981.2664 +      }
981.2665 +    };
981.2666 +
981.2667 +  // Edge Property Maps
981.2668 +
981.2669 +  namespace detail {
981.2670 +    struct adj_list_any_edge_pmap {
981.2671 +      template <class Graph, class Property, class Tag>
981.2672 +      struct bind_ {
981.2673 +        typedef typename property_value<Property,Tag>::type value_type;
981.2674 +        typedef value_type& reference;
981.2675 +        typedef const value_type& const_reference;
981.2676 +        
981.2677 +        typedef adj_list_edge_property_map
981.2678 +           <typename Graph::directed_category, value_type, reference, 
981.2679 +            typename Graph::vertex_descriptor,Property,Tag> type;
981.2680 +        typedef adj_list_edge_property_map
981.2681 +           <typename Graph::directed_category, value_type, const_reference, 
981.2682 +            typename Graph::vertex_descriptor,const Property, Tag> const_type;
981.2683 +      };
981.2684 +    };
981.2685 +    struct adj_list_all_edge_pmap {
981.2686 +      template <class Graph, class Property, class Tag>
981.2687 +      struct bind_ {
981.2688 +        typedef adj_list_edge_all_properties_map
981.2689 +        <typename Graph::directed_category, Property, Property&, Property*,
981.2690 +            typename Graph::vertex_descriptor> type;
981.2691 +        typedef adj_list_edge_all_properties_map
981.2692 +        <typename Graph::directed_category, Property, const Property&, 
981.2693 +            const Property*, typename Graph::vertex_descriptor> const_type;
981.2694 +      };
981.2695 +    };
981.2696 +
981.2697 +    template <class Tag>
981.2698 +    struct adj_list_choose_edge_pmap_helper {
981.2699 +      typedef adj_list_any_edge_pmap type;
981.2700 +    };
981.2701 +    template <>
981.2702 +    struct adj_list_choose_edge_pmap_helper<edge_all_t> {
981.2703 +      typedef adj_list_all_edge_pmap type;
981.2704 +    };
981.2705 +    template <class Tag, class Graph, class Property>
981.2706 +    struct adj_list_choose_edge_pmap {
981.2707 +      typedef typename adj_list_choose_edge_pmap_helper<Tag>::type Helper;
981.2708 +      typedef typename Helper::template bind_<Graph,Property,Tag> Bind;
981.2709 +      typedef typename Bind::type type;
981.2710 +      typedef typename Bind::const_type const_type;
981.2711 +    };
981.2712 +    struct adj_list_edge_property_selector {
981.2713 +      template <class Graph, class Property, class Tag>
981.2714 +      struct bind_ {
981.2715 +        typedef adj_list_choose_edge_pmap<Tag,Graph,Property> Choice;
981.2716 +        typedef typename Choice::type type;
981.2717 +        typedef typename Choice::const_type const_type;
981.2718 +      };
981.2719 +    };
981.2720 +  } // namespace detail
981.2721 +
981.2722 +  template <>  
981.2723 +  struct edge_property_selector<adj_list_tag> {
981.2724 +    typedef detail::adj_list_edge_property_selector type;
981.2725 +  };
981.2726 +  template <>  
981.2727 +  struct edge_property_selector<vec_adj_list_tag> {
981.2728 +    typedef detail::adj_list_edge_property_selector type;
981.2729 +  };
981.2730 +
981.2731 +  // Vertex Property Maps
981.2732 +
981.2733 +  struct adj_list_vertex_property_selector {
981.2734 +    template <class Graph, class Property, class Tag>
981.2735 +    struct bind_ {
981.2736 +      typedef detail::adj_list_choose_vertex_pa<Tag,Graph,Property> Choice;
981.2737 +      typedef typename Choice::type type;
981.2738 +      typedef typename Choice::const_type const_type;
981.2739 +    };
981.2740 +  };
981.2741 +  template <>  
981.2742 +  struct vertex_property_selector<adj_list_tag> {
981.2743 +    typedef adj_list_vertex_property_selector type;
981.2744 +  };
981.2745 +
981.2746 +  struct vec_adj_list_vertex_property_selector {
981.2747 +    template <class Graph, class Property, class Tag>
981.2748 +    struct bind_ {
981.2749 +      typedef detail::vec_adj_list_choose_vertex_pa<Tag,Graph,Property> Choice;
981.2750 +      typedef typename Choice::type type;
981.2751 +      typedef typename Choice::const_type const_type;
981.2752 +    };
981.2753 +  };
981.2754 +  template <>  
981.2755 +  struct vertex_property_selector<vec_adj_list_tag> {
981.2756 +    typedef vec_adj_list_vertex_property_selector type;
981.2757 +  };
981.2758 +
981.2759 +} // namespace boost
981.2760 +
981.2761 +#if !defined(BOOST_NO_HASH) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
981.2762 +namespace BOOST_STD_EXTENSION_NAMESPACE {
981.2763 +
981.2764 +  #if BOOST_WORKAROUND( _STLPORT_VERSION, >= 0x500 )
981.2765 +  // STLport 5 already defines a hash<void*> specialization.
981.2766 +  #else
981.2767 +  template <>
981.2768 +  struct hash< void* > // Need this when vertex_descriptor=void*
981.2769 +  {
981.2770 +    std::size_t
981.2771 +    operator()(void* v) const { return (std::size_t)v; }
981.2772 +  };
981.2773 +  #endif
981.2774 +
981.2775 +  template <typename V>
981.2776 +  struct hash< boost::detail::stored_edge<V> > 
981.2777 +  {
981.2778 +    std::size_t
981.2779 +    operator()(const boost::detail::stored_edge<V>& e) const
981.2780 +    {
981.2781 +      return hash<V>()(e.m_target);
981.2782 +    }
981.2783 +  };
981.2784 +
981.2785 +  template <typename V, typename P>
981.2786 +  struct hash< boost::detail::stored_edge_property <V,P> > 
981.2787 +  {
981.2788 +    std::size_t
981.2789 +    operator()(const boost::detail::stored_edge_property<V,P>& e) const
981.2790 +    {
981.2791 +      return hash<V>()(e.m_target);
981.2792 +    }
981.2793 +  };
981.2794 +
981.2795 +  template <typename V, typename I, typename P>
981.2796 +  struct hash< boost::detail::stored_edge_iter<V,I, P> > 
981.2797 +  {
981.2798 +    std::size_t
981.2799 +    operator()(const boost::detail::stored_edge_iter<V,I,P>& e) const
981.2800 +    {
981.2801 +      return hash<V>()(e.m_target);
981.2802 +    }
981.2803 +  };
981.2804 +
981.2805 +}
981.2806 +#endif
981.2807 +
981.2808 +
981.2809 +#undef stored_edge
981.2810 +#undef stored_edge_property
981.2811 +#undef stored_edge_iter
981.2812 +
981.2813 +#endif // BOOST_GRAPH_DETAIL_DETAIL_ADJACENCY_LIST_CCT
981.2814 +
981.2815 +/*
981.2816 +  Implementation Notes:
981.2817 +  
981.2818 +  Many of the public interface functions in this file would have been
981.2819 +  more conveniently implemented as inline friend functions.
981.2820 +  However there are a few compiler bugs that make that approach
981.2821 +  non-portable.
981.2822 + 
981.2823 +  1. g++ inline friend in namespace bug
981.2824 +  2. g++ using clause doesn't work with inline friends
981.2825 +  3. VC++ doesn't have Koenig lookup
981.2826 +
981.2827 +  For these reasons, the functions were all written as non-inline free 
981.2828 +  functions, and static cast was used to convert from the helper
981.2829 +  class to the adjacency_list derived class.
981.2830 +
981.2831 +  Looking back, it might have been better to write out all functions
981.2832 +  in terms of the adjacency_list, and then use a tag to dispatch
981.2833 +  to the various helpers instead of using inheritance.
981.2834 +
981.2835 + */
   982.1 --- a/epoc32/include/stdapis/boost/graph/detail/adjacency_list.hpp	Tue Mar 16 16:12:26 2010 +0000
   982.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   982.3 @@ -1,2832 +0,0 @@
   982.4 -// -*- c++ -*-
   982.5 -//=======================================================================
   982.6 -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
   982.7 -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
   982.8 -//
   982.9 -// Distributed under the Boost Software License, Version 1.0. (See
  982.10 -// accompanying file LICENSE_1_0.txt or copy at
  982.11 -// http://www.boost.org/LICENSE_1_0.txt)
  982.12 -//=======================================================================
  982.13 -
  982.14 -#ifndef BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP
  982.15 -#define BOOST_GRAPH_DETAIL_ADJACENCY_LIST_HPP
  982.16 -
  982.17 -#include <map> // for vertex_map in copy_impl
  982.18 -#include <boost/config.hpp>
  982.19 -#include <boost/detail/workaround.hpp>
  982.20 -#include <boost/operators.hpp>
  982.21 -#include <boost/property_map.hpp>
  982.22 -#include <boost/pending/integer_range.hpp>
  982.23 -#include <boost/graph/graph_traits.hpp>
  982.24 -#include <memory>
  982.25 -#include <algorithm>
  982.26 -#include <boost/limits.hpp>
  982.27 -
  982.28 -#include <boost/iterator/iterator_adaptor.hpp>
  982.29 -
  982.30 -#include <boost/pending/ct_if.hpp>
  982.31 -#include <boost/graph/graph_concepts.hpp>
  982.32 -#include <boost/pending/container_traits.hpp>
  982.33 -#include <boost/graph/detail/adj_list_edge_iterator.hpp>
  982.34 -#include <boost/graph/properties.hpp>
  982.35 -#include <boost/pending/property.hpp>
  982.36 -#include <boost/graph/adjacency_iterator.hpp>
  982.37 -#include <boost/static_assert.hpp>
  982.38 -
  982.39 -// Symbol truncation problems with MSVC, trying to shorten names.
  982.40 -#define stored_edge se_
  982.41 -#define stored_edge_property sep_
  982.42 -#define stored_edge_iter sei_
  982.43 -
  982.44 -/*
  982.45 -  Outline for this file:
  982.46 -
  982.47 -  out_edge_iterator and in_edge_iterator implementation
  982.48 -  edge_iterator for undirected graph
  982.49 -  stored edge types (these object live in the out-edge/in-edge lists)
  982.50 -  directed edges helper class
  982.51 -  directed graph helper class
  982.52 -  undirected graph helper class
  982.53 -  bidirectional graph helper class
  982.54 -  bidirectional graph helper class (without edge properties)
  982.55 -  bidirectional graph helper class (with edge properties)
  982.56 -  adjacency_list helper class
  982.57 -  adj_list_impl class
  982.58 -  vec_adj_list_impl class
  982.59 -  adj_list_gen class
  982.60 -  vertex property map
  982.61 -  edge property map
  982.62 -
  982.63 -
  982.64 -  Note: it would be nice to merge some of the undirected and
  982.65 -  bidirectional code... it is awful similar.
  982.66 - */
  982.67 -
  982.68 -
  982.69 -namespace boost {
  982.70 -
  982.71 -  namespace detail {
  982.72 -
  982.73 -    template <typename DirectedS>
  982.74 -    struct directed_category_traits {
  982.75 -      typedef directed_tag directed_category;
  982.76 -    };
  982.77 -
  982.78 -    template <>
  982.79 -    struct directed_category_traits<directedS> {
  982.80 -      typedef directed_tag directed_category;
  982.81 -    };
  982.82 -    template <>
  982.83 -    struct directed_category_traits<undirectedS> {
  982.84 -      typedef undirected_tag directed_category;
  982.85 -    };
  982.86 -    template <>
  982.87 -    struct directed_category_traits<bidirectionalS> {
  982.88 -      typedef bidirectional_tag directed_category;
  982.89 -    };
  982.90 -
  982.91 -    template <class Vertex>
  982.92 -    struct target_is {
  982.93 -      target_is(const Vertex& v) : m_target(v) { }
  982.94 -      template <class StoredEdge>
  982.95 -      bool operator()(const StoredEdge& e) const {
  982.96 -        return e.get_target() == m_target;
  982.97 -      }
  982.98 -      Vertex m_target;
  982.99 -    };
 982.100 -
 982.101 -    // O(E/V)
 982.102 -    template <class EdgeList, class vertex_descriptor>
 982.103 -    void erase_from_incidence_list(EdgeList& el, vertex_descriptor v,
 982.104 -                                   allow_parallel_edge_tag)
 982.105 -    {
 982.106 -      boost::graph_detail::erase_if(el, detail::target_is<vertex_descriptor>(v));
 982.107 -    }
 982.108 -    // O(log(E/V))
 982.109 -    template <class EdgeList, class vertex_descriptor>
 982.110 -    void erase_from_incidence_list(EdgeList& el, vertex_descriptor v,
 982.111 -                                   disallow_parallel_edge_tag)
 982.112 -    {
 982.113 -      typedef typename EdgeList::value_type StoredEdge;
 982.114 -      el.erase(StoredEdge(v));
 982.115 -    }
 982.116 -
 982.117 -    //=========================================================================
 982.118 -    // Out-Edge and In-Edge Iterator Implementation
 982.119 -
 982.120 -    template <class BaseIter, class VertexDescriptor, class EdgeDescriptor, class Difference>
 982.121 -    struct out_edge_iter
 982.122 -      : iterator_adaptor<
 982.123 -            out_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 982.124 -          , BaseIter
 982.125 -          , EdgeDescriptor
 982.126 -          , use_default
 982.127 -          , EdgeDescriptor
 982.128 -          , Difference
 982.129 -        >
 982.130 -    {
 982.131 -      typedef iterator_adaptor<
 982.132 -          out_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 982.133 -        , BaseIter
 982.134 -        , EdgeDescriptor
 982.135 -        , use_default
 982.136 -        , EdgeDescriptor
 982.137 -        , Difference
 982.138 -      > super_t;
 982.139 -        
 982.140 -      inline out_edge_iter() { }
 982.141 -        inline out_edge_iter(const BaseIter& i, const VertexDescriptor& src)
 982.142 -          : super_t(i), m_src(src) { }
 982.143 -
 982.144 -      inline EdgeDescriptor
 982.145 -      dereference() const
 982.146 -      {
 982.147 -        return EdgeDescriptor(m_src, (*this->base()).get_target(), 
 982.148 -                              &(*this->base()).get_property());
 982.149 -      }
 982.150 -      VertexDescriptor m_src;
 982.151 -    };
 982.152 -  
 982.153 -    template <class BaseIter, class VertexDescriptor, class EdgeDescriptor, class Difference>
 982.154 -    struct in_edge_iter
 982.155 -      : iterator_adaptor<
 982.156 -            in_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 982.157 -          , BaseIter
 982.158 -          , EdgeDescriptor
 982.159 -          , use_default
 982.160 -          , EdgeDescriptor
 982.161 -          , Difference
 982.162 -        >
 982.163 -    {
 982.164 -      typedef iterator_adaptor<
 982.165 -          in_edge_iter<BaseIter, VertexDescriptor, EdgeDescriptor, Difference>
 982.166 -        , BaseIter
 982.167 -        , EdgeDescriptor
 982.168 -        , use_default
 982.169 -        , EdgeDescriptor
 982.170 -        , Difference
 982.171 -      > super_t;
 982.172 -        
 982.173 -      inline in_edge_iter() { }
 982.174 -      inline in_edge_iter(const BaseIter& i, const VertexDescriptor& src) 
 982.175 -        : super_t(i), m_src(src) { }
 982.176 -
 982.177 -      inline EdgeDescriptor
 982.178 -      dereference() const
 982.179 -      {
 982.180 -        return EdgeDescriptor((*this->base()).get_target(), m_src,
 982.181 -                              &this->base()->get_property());
 982.182 -      }
 982.183 -      VertexDescriptor m_src;
 982.184 -    };
 982.185 -
 982.186 -    //=========================================================================
 982.187 -    // Undirected Edge Iterator Implementation
 982.188 -
 982.189 -    template <class EdgeIter, class EdgeDescriptor, class Difference>
 982.190 -    struct undirected_edge_iter
 982.191 -      : iterator_adaptor<
 982.192 -            undirected_edge_iter<EdgeIter, EdgeDescriptor, Difference>
 982.193 -          , EdgeIter
 982.194 -          , EdgeDescriptor
 982.195 -          , use_default
 982.196 -          , EdgeDescriptor
 982.197 -          , Difference
 982.198 -        >
 982.199 -    {
 982.200 -      typedef iterator_adaptor<
 982.201 -          undirected_edge_iter<EdgeIter, EdgeDescriptor, Difference>
 982.202 -        , EdgeIter
 982.203 -        , EdgeDescriptor
 982.204 -        , use_default
 982.205 -        , EdgeDescriptor
 982.206 -        , Difference
 982.207 -      > super_t;
 982.208 -
 982.209 -      undirected_edge_iter() {}
 982.210 -        
 982.211 -      explicit undirected_edge_iter(EdgeIter i)
 982.212 -          : super_t(i) {}
 982.213 -        
 982.214 -      inline EdgeDescriptor
 982.215 -      dereference() const {
 982.216 -        return EdgeDescriptor(
 982.217 -            (*this->base()).m_source
 982.218 -          , (*this->base()).m_target
 982.219 -          , &this->base()->get_property());
 982.220 -      }
 982.221 -    };
 982.222 -
 982.223 -    //=========================================================================
 982.224 -    // Edge Storage Types (stored in the out-edge/in-edge lists)
 982.225 -
 982.226 -    template <class Vertex>
 982.227 -    class stored_edge
 982.228 -      : public boost::equality_comparable1< stored_edge<Vertex>,
 982.229 -        boost::less_than_comparable1< stored_edge<Vertex> > >
 982.230 -    {
 982.231 -    public:
 982.232 -      typedef no_property property_type;
 982.233 -      inline stored_edge() { }
 982.234 -      inline stored_edge(Vertex target, const no_property& = no_property())
 982.235 -        : m_target(target) { }
 982.236 -      // Need to write this explicitly so stored_edge_property can
 982.237 -      // invoke Base::operator= (at least, for SGI MIPSPro compiler)
 982.238 -      inline stored_edge& operator=(const stored_edge& x) {
 982.239 -        m_target = x.m_target;
 982.240 -        return *this;
 982.241 -      }
 982.242 -      inline Vertex& get_target() const { return m_target; }
 982.243 -      inline const no_property& get_property() const { return s_prop; }
 982.244 -      inline bool operator==(const stored_edge& x) const
 982.245 -        { return m_target == x.get_target(); }
 982.246 -      inline bool operator<(const stored_edge& x) const
 982.247 -        { return m_target < x.get_target(); }
 982.248 -      //protected: need to add hash<> as a friend
 982.249 -      static no_property s_prop;
 982.250 -      // Sometimes target not used as key in the set, and in that case
 982.251 -      // it is ok to change the target.
 982.252 -      mutable Vertex m_target;
 982.253 -    };
 982.254 -    template <class Vertex>
 982.255 -    no_property stored_edge<Vertex>::s_prop;
 982.256 -
 982.257 -    template <class Vertex, class Property>
 982.258 -    class stored_edge_property : public stored_edge<Vertex> {
 982.259 -      typedef stored_edge_property self;
 982.260 -      typedef stored_edge<Vertex> Base;
 982.261 -    public:
 982.262 -      typedef Property property_type;
 982.263 -      inline stored_edge_property() { }
 982.264 -      inline stored_edge_property(Vertex target,
 982.265 -                                  const Property& p = Property())
 982.266 -        : stored_edge<Vertex>(target), m_property(new Property(p)) { }
 982.267 -      stored_edge_property(const self& x) 
 982.268 -        : Base(x), m_property(const_cast<self&>(x).m_property) { }
 982.269 -      self& operator=(const self& x) {
 982.270 -        Base::operator=(x);
 982.271 -        m_property = const_cast<self&>(x).m_property; 
 982.272 -        return *this;
 982.273 -      }
 982.274 -      inline Property& get_property() { return *m_property; }
 982.275 -      inline const Property& get_property() const { return *m_property; }
 982.276 -    protected:
 982.277 -      // Holding the property by-value causes edge-descriptor
 982.278 -      // invalidation for add_edge() with EdgeList=vecS. Instead we
 982.279 -      // hold a pointer to the property. std::auto_ptr is not
 982.280 -      // a perfect fit for the job, but it is darn close.
 982.281 -      std::auto_ptr<Property> m_property;
 982.282 -    };
 982.283 -
 982.284 -
 982.285 -    template <class Vertex, class Iter, class Property>
 982.286 -    class stored_edge_iter
 982.287 -      : public stored_edge<Vertex>
 982.288 -    {
 982.289 -    public:
 982.290 -      typedef Property property_type;
 982.291 -      inline stored_edge_iter() { }
 982.292 -      inline stored_edge_iter(Vertex v)
 982.293 -        : stored_edge<Vertex>(v) { }
 982.294 -      inline stored_edge_iter(Vertex v, Iter i, void* = 0)
 982.295 -        : stored_edge<Vertex>(v), m_iter(i) { }
 982.296 -      inline Property& get_property() { return m_iter->get_property(); }
 982.297 -      inline const Property& get_property() const { 
 982.298 -        return m_iter->get_property();
 982.299 -      }
 982.300 -      inline Iter get_iter() const { return m_iter; }
 982.301 -    protected:
 982.302 -      Iter m_iter;
 982.303 -    };
 982.304 -
 982.305 -    // For when the EdgeList is a std::vector.
 982.306 -    // Want to make the iterator stable, so use an offset
 982.307 -    // instead of an iterator into a std::vector
 982.308 -    template <class Vertex, class EdgeVec, class Property>
 982.309 -    class stored_ra_edge_iter
 982.310 -      : public stored_edge<Vertex>
 982.311 -    {
 982.312 -      typedef typename EdgeVec::iterator Iter;
 982.313 -    public:
 982.314 -      typedef Property property_type;
 982.315 -      inline stored_ra_edge_iter() { }
 982.316 -      inline stored_ra_edge_iter(Vertex v, Iter i = Iter(), 
 982.317 -                                 EdgeVec* edge_vec = 0)
 982.318 -        : stored_edge<Vertex>(v), m_i(i - edge_vec->begin()), m_vec(edge_vec){ }
 982.319 -      inline Property& get_property() { return (*m_vec)[m_i].get_property(); }
 982.320 -      inline const Property& get_property() const { 
 982.321 -        return (*m_vec)[m_i].get_property();
 982.322 -      }
 982.323 -      inline Iter get_iter() const { return m_vec->begin() + m_i; }
 982.324 -    protected:
 982.325 -      std::size_t m_i;
 982.326 -      EdgeVec* m_vec;
 982.327 -    };
 982.328 -
 982.329 -  } // namespace detail
 982.330 -    
 982.331 -  template <class Tag, class Vertex, class Property>
 982.332 -  const typename property_value<Property,Tag>::type&
 982.333 -  get(Tag property_tag,
 982.334 -      const detail::stored_edge_property<Vertex, Property>& e)
 982.335 -  {
 982.336 -    return get_property_value(e.get_property(), property_tag);
 982.337 -  }
 982.338 -
 982.339 -  template <class Tag, class Vertex, class Iter, class Property>
 982.340 -  const typename property_value<Property,Tag>::type&
 982.341 -  get(Tag property_tag,
 982.342 -      const detail::stored_edge_iter<Vertex, Iter, Property>& e)
 982.343 -  {
 982.344 -    return get_property_value(e.get_property(), property_tag);
 982.345 -  }
 982.346 -
 982.347 -  template <class Tag, class Vertex, class EdgeVec, class Property>
 982.348 -  const typename property_value<Property,Tag>::type&
 982.349 -  get(Tag property_tag,
 982.350 -      const detail::stored_ra_edge_iter<Vertex, EdgeVec, Property>& e)
 982.351 -  {
 982.352 -    return get_property_value(e.get_property(), property_tag);
 982.353 -  }
 982.354 -    
 982.355 -    //=========================================================================
 982.356 -    // Directed Edges Helper Class
 982.357 -
 982.358 -    namespace detail {
 982.359 -
 982.360 -      // O(E/V)
 982.361 -      template <class edge_descriptor, class EdgeList, class StoredProperty>
 982.362 -      inline void
 982.363 -      remove_directed_edge_dispatch(edge_descriptor, EdgeList& el,
 982.364 -                                    StoredProperty& p)
 982.365 -      {
 982.366 -        for (typename EdgeList::iterator i = el.begin();
 982.367 -             i != el.end(); ++i)
 982.368 -          if (&(*i).get_property() == &p) {
 982.369 -            el.erase(i);
 982.370 -            return;
 982.371 -          }
 982.372 -      }
 982.373 -
 982.374 -      template <class incidence_iterator, class EdgeList, class Predicate>
 982.375 -      inline void
 982.376 -      remove_directed_edge_if_dispatch(incidence_iterator first,
 982.377 -                                       incidence_iterator last, 
 982.378 -                                       EdgeList& el, Predicate pred,
 982.379 -                                       boost::allow_parallel_edge_tag)
 982.380 -      {
 982.381 -        // remove_if
 982.382 -        while (first != last && !pred(*first))
 982.383 -          ++first;
 982.384 -        incidence_iterator i = first;
 982.385 -        if (first != last)
 982.386 -          for (; i != last; ++i)
 982.387 -            if (!pred(*i)) {
 982.388 -              *first.base() = *i.base();
 982.389 -              ++first;
 982.390 -            }
 982.391 -        el.erase(first.base(), el.end());
 982.392 -      }
 982.393 -      template <class incidence_iterator, class EdgeList, class Predicate>
 982.394 -      inline void
 982.395 -      remove_directed_edge_if_dispatch(incidence_iterator first,
 982.396 -                                       incidence_iterator last, 
 982.397 -                                       EdgeList& el, 
 982.398 -                                       Predicate pred,
 982.399 -                                       boost::disallow_parallel_edge_tag)
 982.400 -      {
 982.401 -        for (incidence_iterator next = first;
 982.402 -             first != last; first = next) {
 982.403 -          ++next;
 982.404 -          if (pred(*first))
 982.405 -            el.erase( first.base() );
 982.406 -        }
 982.407 -      }
 982.408 -
 982.409 -      template <class PropT, class Graph, class incidence_iterator, 
 982.410 -                class EdgeList, class Predicate>
 982.411 -      inline void
 982.412 -      undirected_remove_out_edge_if_dispatch(Graph& g, 
 982.413 -                                             incidence_iterator first,
 982.414 -                                             incidence_iterator last, 
 982.415 -                                             EdgeList& el, Predicate pred,
 982.416 -                                             boost::allow_parallel_edge_tag)
 982.417 -      {
 982.418 -        typedef typename Graph::global_edgelist_selector EdgeListS;
 982.419 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.420 -
 982.421 -        // remove_if
 982.422 -        while (first != last && !pred(*first))
 982.423 -          ++first;
 982.424 -        incidence_iterator i = first;
 982.425 -        bool self_loop_removed = false;
 982.426 -        if (first != last)
 982.427 -          for (; i != last; ++i) {
 982.428 -            if (self_loop_removed) {
 982.429 -              /* With self loops, the descriptor will show up
 982.430 -               * twice. The first time it will be removed, and now it
 982.431 -               * will be skipped.
 982.432 -               */
 982.433 -              self_loop_removed = false;
 982.434 -            }
 982.435 -            else if (!pred(*i)) {
 982.436 -              *first.base() = *i.base();
 982.437 -              ++first;
 982.438 -            } else {
 982.439 -              if (source(*i, g) == target(*i, g)) self_loop_removed = true;
 982.440 -              else {
 982.441 -                // Remove the edge from the target
 982.442 -                detail::remove_directed_edge_dispatch
 982.443 -                  (*i, 
 982.444 -                   g.out_edge_list(target(*i, g)), 
 982.445 -                   *(PropT*)(*i).get_property());
 982.446 -              }
 982.447 -
 982.448 -              // Erase the edge property
 982.449 -              g.m_edges.erase( (*i.base()).get_iter() );
 982.450 -            }
 982.451 -          }
 982.452 -        el.erase(first.base(), el.end());
 982.453 -      }
 982.454 -      template <class PropT, class Graph, class incidence_iterator, 
 982.455 -                class EdgeList, class Predicate>
 982.456 -      inline void
 982.457 -      undirected_remove_out_edge_if_dispatch(Graph& g, 
 982.458 -                                             incidence_iterator first,
 982.459 -                                             incidence_iterator last, 
 982.460 -                                             EdgeList& el, 
 982.461 -                                             Predicate pred,
 982.462 -                                             boost::disallow_parallel_edge_tag)
 982.463 -      {
 982.464 -        typedef typename Graph::global_edgelist_selector EdgeListS;
 982.465 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.466 -
 982.467 -        for (incidence_iterator next = first;
 982.468 -             first != last; first = next) {
 982.469 -          ++next;
 982.470 -          if (pred(*first)) {
 982.471 -            if (source(*first, g) != target(*first, g)) {
 982.472 -              // Remove the edge from the target
 982.473 -              detail::remove_directed_edge_dispatch
 982.474 -                (*first, 
 982.475 -                 g.out_edge_list(target(*first, g)), 
 982.476 -                 *(PropT*)(*first).get_property());
 982.477 -            }
 982.478 -
 982.479 -            // Erase the edge property
 982.480 -            g.m_edges.erase( (*first.base()).get_iter() );
 982.481 -
 982.482 -            // Erase the edge in the source
 982.483 -            el.erase( first.base() );
 982.484 -          }
 982.485 -        }
 982.486 -      }
 982.487 -
 982.488 -      // O(E/V)
 982.489 -      template <class edge_descriptor, class EdgeList, class StoredProperty>
 982.490 -      inline void
 982.491 -      remove_directed_edge_dispatch(edge_descriptor e, EdgeList& el,
 982.492 -                                    no_property&)
 982.493 -      {
 982.494 -        for (typename EdgeList::iterator i = el.begin();
 982.495 -             i != el.end(); ++i)
 982.496 -          if ((*i).get_target() == e.m_target) {
 982.497 -            el.erase(i);
 982.498 -            return;
 982.499 -          }
 982.500 -      }
 982.501 -
 982.502 -    } // namespace detail
 982.503 -
 982.504 -    template <class Config>
 982.505 -    struct directed_edges_helper {
 982.506 -
 982.507 -      // Placement of these overloaded remove_edge() functions
 982.508 -      // inside the class avoids a VC++ bug.
 982.509 -      
 982.510 -      // O(E/V)
 982.511 -      inline void
 982.512 -      remove_edge(typename Config::edge_descriptor e)
 982.513 -      {
 982.514 -        typedef typename Config::graph_type graph_type;
 982.515 -        graph_type& g = static_cast<graph_type&>(*this);
 982.516 -        typename Config::OutEdgeList& el = g.out_edge_list(source(e, g));
 982.517 -        typedef typename Config::OutEdgeList::value_type::property_type PType;
 982.518 -        detail::remove_directed_edge_dispatch(e, el,
 982.519 -                                              *(PType*)e.get_property());
 982.520 -      }
 982.521 -
 982.522 -      // O(1)
 982.523 -      inline void
 982.524 -      remove_edge(typename Config::out_edge_iterator iter)
 982.525 -      {
 982.526 -        typedef typename Config::graph_type graph_type;
 982.527 -        graph_type& g = static_cast<graph_type&>(*this);
 982.528 -        typename Config::edge_descriptor e = *iter;
 982.529 -        typename Config::OutEdgeList& el = g.out_edge_list(source(e, g));
 982.530 -        el.erase(iter.base());
 982.531 -      }
 982.532 -
 982.533 -    };
 982.534 -
 982.535 -    // O(1)
 982.536 -    template <class Config>
 982.537 -    inline std::pair<typename Config::edge_iterator, 
 982.538 -                     typename Config::edge_iterator>
 982.539 -    edges(const directed_edges_helper<Config>& g_)
 982.540 -    {
 982.541 -      typedef typename Config::graph_type graph_type;
 982.542 -      typedef typename Config::edge_iterator edge_iterator;
 982.543 -      const graph_type& cg = static_cast<const graph_type&>(g_);
 982.544 -      graph_type& g = const_cast<graph_type&>(cg);
 982.545 -      return std::make_pair( edge_iterator(g.vertex_set().begin(), 
 982.546 -                                           g.vertex_set().begin(), 
 982.547 -                                           g.vertex_set().end(), g),
 982.548 -                             edge_iterator(g.vertex_set().begin(),
 982.549 -                                           g.vertex_set().end(),
 982.550 -                                           g.vertex_set().end(), g) );
 982.551 -    }
 982.552 -
 982.553 -    //=========================================================================
 982.554 -    // Directed Graph Helper Class
 982.555 -
 982.556 -    struct adj_list_dir_traversal_tag :
 982.557 -      public virtual vertex_list_graph_tag,
 982.558 -      public virtual incidence_graph_tag,
 982.559 -      public virtual adjacency_graph_tag,
 982.560 -      public virtual edge_list_graph_tag { };
 982.561 -
 982.562 -    template <class Config>
 982.563 -    struct directed_graph_helper
 982.564 -      : public directed_edges_helper<Config> { 
 982.565 -      typedef typename Config::edge_descriptor edge_descriptor;
 982.566 -      typedef adj_list_dir_traversal_tag traversal_category;
 982.567 -    };
 982.568 -
 982.569 -    // O(E/V)
 982.570 -    template <class Config>
 982.571 -    inline void
 982.572 -    remove_edge(typename Config::vertex_descriptor u,
 982.573 -                typename Config::vertex_descriptor v,
 982.574 -                directed_graph_helper<Config>& g_)
 982.575 -    {
 982.576 -      typedef typename Config::graph_type graph_type;
 982.577 -      typedef typename Config::edge_parallel_category Cat;
 982.578 -      graph_type& g = static_cast<graph_type&>(g_);
 982.579 -      detail::erase_from_incidence_list(g.out_edge_list(u), v, Cat());
 982.580 -    }
 982.581 -
 982.582 -    template <class Config, class Predicate>
 982.583 -    inline void
 982.584 -    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
 982.585 -                       directed_graph_helper<Config>& g_)
 982.586 -    {
 982.587 -      typedef typename Config::graph_type graph_type;
 982.588 -      graph_type& g = static_cast<graph_type&>(g_);
 982.589 -      typename Config::out_edge_iterator first, last;
 982.590 -      tie(first, last) = out_edges(u, g);
 982.591 -      typedef typename Config::edge_parallel_category edge_parallel_category;
 982.592 -      detail::remove_directed_edge_if_dispatch
 982.593 -        (first, last, g.out_edge_list(u), pred, edge_parallel_category());
 982.594 -    }
 982.595 -
 982.596 -    template <class Config, class Predicate>
 982.597 -    inline void
 982.598 -    remove_edge_if(Predicate pred, directed_graph_helper<Config>& g_)
 982.599 -    {
 982.600 -      typedef typename Config::graph_type graph_type;
 982.601 -      graph_type& g = static_cast<graph_type&>(g_);
 982.602 -
 982.603 -      typename Config::vertex_iterator vi, vi_end;
 982.604 -      for (tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi)
 982.605 -        remove_out_edge_if(*vi, pred, g);
 982.606 -    }    
 982.607 -
 982.608 -    template <class EdgeOrIter, class Config>
 982.609 -    inline void
 982.610 -    remove_edge(EdgeOrIter e_or_iter, directed_graph_helper<Config>& g_)
 982.611 -    {
 982.612 -      g_.remove_edge(e_or_iter);
 982.613 -    }
 982.614 -
 982.615 -    // O(V + E) for allow_parallel_edges
 982.616 -    // O(V * log(E/V)) for disallow_parallel_edges
 982.617 -    template <class Config>
 982.618 -    inline void 
 982.619 -    clear_vertex(typename Config::vertex_descriptor u,
 982.620 -                 directed_graph_helper<Config>& g_)
 982.621 -    {
 982.622 -      typedef typename Config::graph_type graph_type;
 982.623 -      typedef typename Config::edge_parallel_category Cat;
 982.624 -      graph_type& g = static_cast<graph_type&>(g_);
 982.625 -      typename Config::vertex_iterator vi, viend;
 982.626 -      for (boost::tie(vi, viend) = vertices(g); vi != viend; ++vi)
 982.627 -        detail::erase_from_incidence_list(g.out_edge_list(*vi), u, Cat());
 982.628 -      g.out_edge_list(u).clear();
 982.629 -      // clear() should be a req of Sequence and AssociativeContainer,
 982.630 -      // or maybe just Container
 982.631 -    }
 982.632 -
 982.633 -    template <class Config>
 982.634 -    inline void 
 982.635 -    clear_out_edges(typename Config::vertex_descriptor u,
 982.636 -                    directed_graph_helper<Config>& g_)
 982.637 -    {
 982.638 -      typedef typename Config::graph_type graph_type;
 982.639 -      typedef typename Config::edge_parallel_category Cat;
 982.640 -      graph_type& g = static_cast<graph_type&>(g_);
 982.641 -      g.out_edge_list(u).clear();
 982.642 -      // clear() should be a req of Sequence and AssociativeContainer,
 982.643 -      // or maybe just Container
 982.644 -    }
 982.645 -
 982.646 -    // O(V), could do better...
 982.647 -    template <class Config>
 982.648 -    inline typename Config::edges_size_type
 982.649 -    num_edges(const directed_graph_helper<Config>& g_)
 982.650 -    {
 982.651 -      typedef typename Config::graph_type graph_type;
 982.652 -      const graph_type& g = static_cast<const graph_type&>(g_);
 982.653 -      typename Config::edges_size_type num_e = 0;
 982.654 -      typename Config::vertex_iterator vi, vi_end;
 982.655 -      for (boost::tie(vi, vi_end) = vertices(g); vi != vi_end; ++vi)
 982.656 -        num_e += out_degree(*vi, g);
 982.657 -      return num_e;
 982.658 -    }
 982.659 -    // O(1) for allow_parallel_edge_tag
 982.660 -    // O(log(E/V)) for disallow_parallel_edge_tag
 982.661 -    template <class Config>
 982.662 -    inline std::pair<typename directed_graph_helper<Config>::edge_descriptor, bool>
 982.663 -    add_edge(typename Config::vertex_descriptor u, 
 982.664 -             typename Config::vertex_descriptor v,
 982.665 -             const typename Config::edge_property_type& p, 
 982.666 -             directed_graph_helper<Config>& g_)
 982.667 -    {
 982.668 -      typedef typename Config::edge_descriptor edge_descriptor;
 982.669 -      typedef typename Config::graph_type graph_type;
 982.670 -      typedef typename Config::StoredEdge StoredEdge;
 982.671 -      graph_type& g = static_cast<graph_type&>(g_);
 982.672 -      typename Config::OutEdgeList::iterator i; 
 982.673 -      bool inserted;
 982.674 -      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u), 
 982.675 -                                            StoredEdge(v, p));
 982.676 -      return std::make_pair(edge_descriptor(u, v, &(*i).get_property()), 
 982.677 -                            inserted);
 982.678 -    }
 982.679 -    // Did not use default argument here because that
 982.680 -    // causes Visual C++ to get confused.
 982.681 -    template <class Config>
 982.682 -    inline std::pair<typename Config::edge_descriptor, bool>
 982.683 -    add_edge(typename Config::vertex_descriptor u, 
 982.684 -             typename Config::vertex_descriptor v,
 982.685 -             directed_graph_helper<Config>& g_)
 982.686 -    {
 982.687 -      typename Config::edge_property_type p;
 982.688 -      return add_edge(u, v, p, g_);
 982.689 -    }
 982.690 -    //=========================================================================
 982.691 -    // Undirected Graph Helper Class
 982.692 -
 982.693 -    template <class Config>
 982.694 -    struct undirected_graph_helper;
 982.695 -
 982.696 -    struct undir_adj_list_traversal_tag : 
 982.697 -      public virtual vertex_list_graph_tag,
 982.698 -      public virtual incidence_graph_tag,
 982.699 -      public virtual adjacency_graph_tag,
 982.700 -      public virtual edge_list_graph_tag,
 982.701 -      public virtual bidirectional_graph_tag { };
 982.702 -
 982.703 -    namespace detail {
 982.704 -
 982.705 -      // using class with specialization for dispatch is a VC++ workaround.
 982.706 -      template <class StoredProperty>
 982.707 -      struct remove_undirected_edge_dispatch {
 982.708 -
 982.709 -        // O(E/V)
 982.710 -        template <class edge_descriptor, class Config>
 982.711 -        static void
 982.712 -        apply(edge_descriptor e, 
 982.713 -              undirected_graph_helper<Config>& g_, 
 982.714 -              StoredProperty& p)
 982.715 -        {
 982.716 -          typedef typename Config::global_edgelist_selector EdgeListS;
 982.717 -          BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.718 -
 982.719 -          typedef typename Config::graph_type graph_type;
 982.720 -          graph_type& g = static_cast<graph_type&>(g_);
 982.721 -          
 982.722 -          typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g));
 982.723 -          typename Config::OutEdgeList::iterator out_i = out_el.begin();
 982.724 -          for (; out_i != out_el.end(); ++out_i)
 982.725 -            if (&(*out_i).get_property() == &p) {
 982.726 -              out_el.erase(out_i);
 982.727 -              break;
 982.728 -            }
 982.729 -          typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g));
 982.730 -          typename Config::OutEdgeList::iterator in_i = in_el.begin();
 982.731 -          for (; in_i != in_el.end(); ++in_i)
 982.732 -            if (&(*in_i).get_property() == &p) {
 982.733 -              g.m_edges.erase((*in_i).get_iter());
 982.734 -              in_el.erase(in_i);
 982.735 -              return;
 982.736 -            }
 982.737 -        }
 982.738 -      };
 982.739 -
 982.740 -      template <>
 982.741 -      struct remove_undirected_edge_dispatch<no_property> {
 982.742 -        // O(E/V)
 982.743 -        template <class edge_descriptor, class Config>
 982.744 -        static void
 982.745 -        apply(edge_descriptor e,
 982.746 -              undirected_graph_helper<Config>& g_,
 982.747 -              no_property&)
 982.748 -        {
 982.749 -          typedef typename Config::global_edgelist_selector EdgeListS;
 982.750 -          BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.751 -
 982.752 -          typedef typename Config::graph_type graph_type;
 982.753 -          graph_type& g = static_cast<graph_type&>(g_);
 982.754 -          no_property* p = (no_property*)e.get_property();
 982.755 -          typename Config::OutEdgeList& out_el = g.out_edge_list(source(e, g));
 982.756 -          typename Config::OutEdgeList::iterator out_i = out_el.begin();
 982.757 -          for (; out_i != out_el.end(); ++out_i)
 982.758 -            if (&(*out_i).get_property() == p) {
 982.759 -              out_el.erase(out_i);
 982.760 -              break;
 982.761 -            }
 982.762 -          typename Config::OutEdgeList& in_el = g.out_edge_list(target(e, g));
 982.763 -          typename Config::OutEdgeList::iterator in_i = in_el.begin();
 982.764 -          for (; in_i != in_el.end(); ++in_i)
 982.765 -            if (&(*in_i).get_property() == p) {
 982.766 -              g.m_edges.erase((*in_i).get_iter());
 982.767 -              in_el.erase(in_i);
 982.768 -              return;
 982.769 -            }
 982.770 -        }
 982.771 -      };
 982.772 -
 982.773 -      // O(E/V)
 982.774 -      template <class Graph, class EdgeList, class Vertex>
 982.775 -      inline void
 982.776 -      remove_edge_and_property(Graph& g, EdgeList& el, Vertex v, 
 982.777 -                               boost::allow_parallel_edge_tag cat)
 982.778 -      {
 982.779 -        typedef typename Graph::global_edgelist_selector EdgeListS;
 982.780 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.781 -
 982.782 -        typedef typename EdgeList::value_type StoredEdge;
 982.783 -        typename EdgeList::iterator i = el.begin(), end = el.end();
 982.784 -        for (; i != end; ++i)
 982.785 -          if ((*i).get_target() == v)
 982.786 -            g.m_edges.erase((*i).get_iter());
 982.787 -        detail::erase_from_incidence_list(el, v, cat);
 982.788 -      }
 982.789 -      // O(log(E/V))
 982.790 -      template <class Graph, class EdgeList, class Vertex>
 982.791 -      inline void
 982.792 -      remove_edge_and_property(Graph& g, EdgeList& el, Vertex v, 
 982.793 -                               boost::disallow_parallel_edge_tag)
 982.794 -      {
 982.795 -        typedef typename Graph::global_edgelist_selector EdgeListS;
 982.796 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.797 -
 982.798 -        typedef typename EdgeList::value_type StoredEdge;
 982.799 -        typename EdgeList::iterator i = el.find(StoredEdge(v)), end = el.end();
 982.800 -        if (i != end) {
 982.801 -          g.m_edges.erase((*i).get_iter());
 982.802 -          el.erase(i);
 982.803 -        }
 982.804 -      }
 982.805 -
 982.806 -    } // namespace detail
 982.807 -
 982.808 -    template <class Vertex, class EdgeProperty>
 982.809 -    struct list_edge // short name due to VC++ truncation and linker problems
 982.810 -      : public boost::detail::edge_base<boost::undirected_tag, Vertex>
 982.811 -    {
 982.812 -      typedef EdgeProperty property_type;
 982.813 -      typedef boost::detail::edge_base<boost::undirected_tag, Vertex> Base;
 982.814 -      list_edge(Vertex u, Vertex v, const EdgeProperty& p = EdgeProperty())
 982.815 -        : Base(u, v), m_property(p) { }
 982.816 -      EdgeProperty& get_property() { return m_property; }
 982.817 -      const EdgeProperty& get_property() const { return m_property; }
 982.818 -      // the following methods should never be used, but are needed
 982.819 -      // to make SGI MIPSpro C++ happy
 982.820 -      list_edge() { }
 982.821 -      bool operator==(const list_edge&) const { return false; }
 982.822 -      bool operator<(const list_edge&) const { return false; }
 982.823 -      EdgeProperty m_property;
 982.824 -    };
 982.825 -
 982.826 -    template <class Config>
 982.827 -    struct undirected_graph_helper {
 982.828 -
 982.829 -      typedef undir_adj_list_traversal_tag traversal_category;
 982.830 -
 982.831 -      // Placement of these overloaded remove_edge() functions
 982.832 -      // inside the class avoids a VC++ bug.
 982.833 -
 982.834 -      // O(E/V)
 982.835 -      inline void
 982.836 -      remove_edge(typename Config::edge_descriptor e)
 982.837 -      {
 982.838 -        typedef typename Config::global_edgelist_selector EdgeListS;
 982.839 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.840 -
 982.841 -        typedef typename Config::OutEdgeList::value_type::property_type PType;
 982.842 -        detail::remove_undirected_edge_dispatch<PType>::apply
 982.843 -          (e, *this, *(PType*)e.get_property());
 982.844 -      }
 982.845 -      // O(E/V)
 982.846 -      inline void
 982.847 -      remove_edge(typename Config::out_edge_iterator iter)
 982.848 -      {
 982.849 -        this->remove_edge(*iter);
 982.850 -      }
 982.851 -    };
 982.852 -
 982.853 -    // Had to make these non-members to avoid accidental instantiation
 982.854 -    // on SGI MIPSpro C++
 982.855 -    template <class C>
 982.856 -    inline typename C::InEdgeList& 
 982.857 -    in_edge_list(undirected_graph_helper<C>&, 
 982.858 -                 typename C::vertex_descriptor v)
 982.859 -    {
 982.860 -      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
 982.861 -      return sv->m_out_edges;
 982.862 -    }
 982.863 -    template <class C>
 982.864 -    inline const typename C::InEdgeList& 
 982.865 -    in_edge_list(const undirected_graph_helper<C>&,
 982.866 -                 typename C::vertex_descriptor v) {
 982.867 -      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
 982.868 -      return sv->m_out_edges;
 982.869 -    }
 982.870 -
 982.871 -    // O(E/V)
 982.872 -    template <class EdgeOrIter, class Config>
 982.873 -    inline void
 982.874 -    remove_edge(EdgeOrIter e, undirected_graph_helper<Config>& g_)
 982.875 -    {
 982.876 -      typedef typename Config::global_edgelist_selector EdgeListS;
 982.877 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.878 -
 982.879 -      g_.remove_edge(e);
 982.880 -    }
 982.881 -
 982.882 -    // O(E/V) or O(log(E/V))
 982.883 -    template <class Config>
 982.884 -    void
 982.885 -    remove_edge(typename Config::vertex_descriptor u, 
 982.886 -                typename Config::vertex_descriptor v, 
 982.887 -                undirected_graph_helper<Config>& g_)
 982.888 -    {
 982.889 -      typedef typename Config::global_edgelist_selector EdgeListS;
 982.890 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.891 -
 982.892 -      typedef typename Config::graph_type graph_type;
 982.893 -      graph_type& g = static_cast<graph_type&>(g_);
 982.894 -      typedef typename Config::edge_parallel_category Cat;
 982.895 -      detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat());
 982.896 -      detail::erase_from_incidence_list(g.out_edge_list(v), u, Cat());
 982.897 -    }
 982.898 -  
 982.899 -    template <class Config, class Predicate>
 982.900 -    void
 982.901 -    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
 982.902 -                       undirected_graph_helper<Config>& g_)
 982.903 -    {
 982.904 -      typedef typename Config::global_edgelist_selector EdgeListS;
 982.905 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.906 -        
 982.907 -      typedef typename Config::graph_type graph_type;
 982.908 -      typedef typename Config::OutEdgeList::value_type::property_type PropT;
 982.909 -      graph_type& g = static_cast<graph_type&>(g_);
 982.910 -      typename Config::out_edge_iterator first, last;
 982.911 -      tie(first, last) = out_edges(u, g);
 982.912 -      typedef typename Config::edge_parallel_category Cat;
 982.913 -      detail::undirected_remove_out_edge_if_dispatch<PropT>
 982.914 -        (g, first, last, g.out_edge_list(u), pred, Cat());
 982.915 -    }
 982.916 -    template <class Config, class Predicate>
 982.917 -    void
 982.918 -    remove_in_edge_if(typename Config::vertex_descriptor u, Predicate pred,
 982.919 -                      undirected_graph_helper<Config>& g_)
 982.920 -    {
 982.921 -      typedef typename Config::global_edgelist_selector EdgeListS;
 982.922 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.923 -
 982.924 -      remove_out_edge_if(u, pred, g_);
 982.925 -    }
 982.926 -
 982.927 -    // O(E/V * E) or O(log(E/V) * E)
 982.928 -    template <class Predicate, class Config>
 982.929 -    void
 982.930 -    remove_edge_if(Predicate pred, undirected_graph_helper<Config>& g_)
 982.931 -    {
 982.932 -      typedef typename Config::global_edgelist_selector EdgeListS;
 982.933 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.934 -
 982.935 -      typedef typename Config::graph_type graph_type;
 982.936 -      graph_type& g = static_cast<graph_type&>(g_);
 982.937 -      typename Config::edge_iterator ei, ei_end, next;
 982.938 -      tie(ei, ei_end) = edges(g);
 982.939 -      for (next = ei; ei != ei_end; ei = next) {
 982.940 -        ++next;
 982.941 -        if (pred(*ei))
 982.942 -          remove_edge(*ei, g);
 982.943 -      }
 982.944 -    }
 982.945 -
 982.946 -    // O(1)
 982.947 -    template <class Config>
 982.948 -    inline std::pair<typename Config::edge_iterator, 
 982.949 -                     typename Config::edge_iterator>
 982.950 -    edges(const undirected_graph_helper<Config>& g_)
 982.951 -    {
 982.952 -      typedef typename Config::graph_type graph_type;
 982.953 -      typedef typename Config::edge_iterator edge_iterator;
 982.954 -      const graph_type& cg = static_cast<const graph_type&>(g_);
 982.955 -      graph_type& g = const_cast<graph_type&>(cg);
 982.956 -      return std::make_pair( edge_iterator(g.m_edges.begin()),
 982.957 -                             edge_iterator(g.m_edges.end()) );
 982.958 -    }
 982.959 -    // O(1)
 982.960 -    template <class Config>
 982.961 -    inline typename Config::edges_size_type
 982.962 -    num_edges(const undirected_graph_helper<Config>& g_) 
 982.963 -    {
 982.964 -      typedef typename Config::graph_type graph_type;
 982.965 -      const graph_type& g = static_cast<const graph_type&>(g_);
 982.966 -      return g.m_edges.size();
 982.967 -    }
 982.968 -    // O(E/V * E/V)
 982.969 -    template <class Config>
 982.970 -    inline void 
 982.971 -    clear_vertex(typename Config::vertex_descriptor u,
 982.972 -                 undirected_graph_helper<Config>& g_)
 982.973 -    {
 982.974 -      typedef typename Config::global_edgelist_selector EdgeListS;
 982.975 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
 982.976 -
 982.977 -      typedef typename Config::graph_type graph_type;
 982.978 -      typedef typename Config::edge_parallel_category Cat;
 982.979 -      graph_type& g = static_cast<graph_type&>(g_);
 982.980 -      typename Config::OutEdgeList& el = g.out_edge_list(u);
 982.981 -      typename Config::OutEdgeList::iterator 
 982.982 -        ei = el.begin(), ei_end = el.end();
 982.983 -      for (; ei != ei_end; ++ei) {
 982.984 -        detail::erase_from_incidence_list
 982.985 -          (g.out_edge_list((*ei).get_target()), u, Cat());
 982.986 -        g.m_edges.erase((*ei).get_iter());
 982.987 -      }
 982.988 -      g.out_edge_list(u).clear();
 982.989 -    }
 982.990 -    // O(1) for allow_parallel_edge_tag
 982.991 -    // O(log(E/V)) for disallow_parallel_edge_tag
 982.992 -    template <class Config>
 982.993 -    inline std::pair<typename Config::edge_descriptor, bool>
 982.994 -    add_edge(typename Config::vertex_descriptor u, 
 982.995 -             typename Config::vertex_descriptor v, 
 982.996 -             const typename Config::edge_property_type& p,
 982.997 -             undirected_graph_helper<Config>& g_)
 982.998 -    {
 982.999 -      typedef typename Config::StoredEdge StoredEdge;
982.1000 -      typedef typename Config::edge_descriptor edge_descriptor;
982.1001 -      typedef typename Config::graph_type graph_type;
982.1002 -      graph_type& g = static_cast<graph_type&>(g_);
982.1003 -
982.1004 -      bool inserted;
982.1005 -      typename Config::EdgeContainer::value_type e(u, v, p);
982.1006 -      typename Config::EdgeContainer::iterator p_iter 
982.1007 -        = graph_detail::push(g.m_edges, e).first;
982.1008 -
982.1009 -      typename Config::OutEdgeList::iterator i;
982.1010 -      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u), 
982.1011 -                                    StoredEdge(v, p_iter, &g.m_edges));
982.1012 -      if (inserted) {
982.1013 -        boost::graph_detail::push(g.out_edge_list(v), StoredEdge(u, p_iter, &g.m_edges));
982.1014 -        return std::make_pair(edge_descriptor(u, v, &p_iter->get_property()),
982.1015 -                              true);
982.1016 -      } else {
982.1017 -        g.m_edges.erase(p_iter);
982.1018 -        return std::make_pair
982.1019 -          (edge_descriptor(u, v, &i->get_iter()->get_property()), false);
982.1020 -      }
982.1021 -    }
982.1022 -    template <class Config>
982.1023 -    inline std::pair<typename Config::edge_descriptor, bool>
982.1024 -    add_edge(typename Config::vertex_descriptor u, 
982.1025 -             typename Config::vertex_descriptor v, 
982.1026 -             undirected_graph_helper<Config>& g_)
982.1027 -    {
982.1028 -      typename Config::edge_property_type p;
982.1029 -      return add_edge(u, v, p, g_);
982.1030 -    }
982.1031 -
982.1032 -    // O(1)
982.1033 -    template <class Config>
982.1034 -    inline typename Config::degree_size_type
982.1035 -    degree(typename Config::vertex_descriptor u, 
982.1036 -           const undirected_graph_helper<Config>& g_)
982.1037 -    {
982.1038 -      typedef typename Config::graph_type Graph;
982.1039 -      const Graph& g = static_cast<const Graph&>(g_);
982.1040 -      return out_degree(u, g);
982.1041 -    }
982.1042 -
982.1043 -    template <class Config>
982.1044 -    inline std::pair<typename Config::in_edge_iterator, 
982.1045 -                     typename Config::in_edge_iterator>
982.1046 -    in_edges(typename Config::vertex_descriptor u, 
982.1047 -             const undirected_graph_helper<Config>& g_)
982.1048 -    {
982.1049 -      typedef typename Config::graph_type Graph;
982.1050 -      const Graph& cg = static_cast<const Graph&>(g_);
982.1051 -      Graph& g = const_cast<Graph&>(cg);
982.1052 -      typedef typename Config::in_edge_iterator in_edge_iterator;
982.1053 -      return
982.1054 -        std::make_pair(in_edge_iterator(g.out_edge_list(u).begin(), u),
982.1055 -                       in_edge_iterator(g.out_edge_list(u).end(), u));
982.1056 -    }
982.1057 -
982.1058 -    template <class Config>
982.1059 -    inline typename Config::degree_size_type
982.1060 -    in_degree(typename Config::vertex_descriptor u,
982.1061 -              const undirected_graph_helper<Config>& g_)
982.1062 -    { return degree(u, g_); }
982.1063 -
982.1064 -    //=========================================================================
982.1065 -    // Bidirectional Graph Helper Class
982.1066 -
982.1067 -    struct bidir_adj_list_traversal_tag : 
982.1068 -      public virtual vertex_list_graph_tag,
982.1069 -      public virtual incidence_graph_tag,
982.1070 -      public virtual adjacency_graph_tag,
982.1071 -      public virtual edge_list_graph_tag,
982.1072 -      public virtual bidirectional_graph_tag { };
982.1073 -
982.1074 -    template <class Config>
982.1075 -    struct bidirectional_graph_helper
982.1076 -      : public directed_edges_helper<Config> {
982.1077 -      typedef bidir_adj_list_traversal_tag traversal_category;
982.1078 -    };
982.1079 -
982.1080 -    // Had to make these non-members to avoid accidental instantiation
982.1081 -    // on SGI MIPSpro C++
982.1082 -    template <class C>
982.1083 -    inline typename C::InEdgeList& 
982.1084 -    in_edge_list(bidirectional_graph_helper<C>&, 
982.1085 -                 typename C::vertex_descriptor v)
982.1086 -    {
982.1087 -      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
982.1088 -      return sv->m_in_edges;
982.1089 -    }
982.1090 -    template <class C>
982.1091 -    inline const typename C::InEdgeList& 
982.1092 -    in_edge_list(const bidirectional_graph_helper<C>&,
982.1093 -                 typename C::vertex_descriptor v) {
982.1094 -      typename C::stored_vertex* sv = (typename C::stored_vertex*)v;
982.1095 -      return sv->m_in_edges;
982.1096 -    }
982.1097 -
982.1098 -    template <class Predicate, class Config>
982.1099 -    inline void
982.1100 -    remove_edge_if(Predicate pred, bidirectional_graph_helper<Config>& g_)
982.1101 -    {
982.1102 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1103 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1104 -
982.1105 -      typedef typename Config::graph_type graph_type;
982.1106 -      graph_type& g = static_cast<graph_type&>(g_);
982.1107 -      typename Config::edge_iterator ei, ei_end, next;
982.1108 -      tie(ei, ei_end) = edges(g);
982.1109 -      for (next = ei; ei != ei_end; ei = next) {
982.1110 -        ++next;
982.1111 -        if (pred(*ei))
982.1112 -          remove_edge(*ei, g);
982.1113 -      }
982.1114 -    }
982.1115 -
982.1116 -    template <class Config>
982.1117 -    inline std::pair<typename Config::in_edge_iterator, 
982.1118 -                     typename Config::in_edge_iterator>
982.1119 -    in_edges(typename Config::vertex_descriptor u, 
982.1120 -             const bidirectional_graph_helper<Config>& g_)
982.1121 -    {
982.1122 -      typedef typename Config::graph_type graph_type;
982.1123 -      const graph_type& cg = static_cast<const graph_type&>(g_);
982.1124 -      graph_type& g = const_cast<graph_type&>(cg);
982.1125 -      typedef typename Config::in_edge_iterator in_edge_iterator;
982.1126 -      return
982.1127 -        std::make_pair(in_edge_iterator(in_edge_list(g, u).begin(), u),
982.1128 -                       in_edge_iterator(in_edge_list(g, u).end(), u));
982.1129 -    }
982.1130 -
982.1131 -    // O(1)
982.1132 -    template <class Config>
982.1133 -    inline std::pair<typename Config::edge_iterator, 
982.1134 -                     typename Config::edge_iterator>
982.1135 -    edges(const bidirectional_graph_helper<Config>& g_)
982.1136 -    {
982.1137 -      typedef typename Config::graph_type graph_type;
982.1138 -      typedef typename Config::edge_iterator edge_iterator;
982.1139 -      const graph_type& cg = static_cast<const graph_type&>(g_);
982.1140 -      graph_type& g = const_cast<graph_type&>(cg);
982.1141 -      return std::make_pair( edge_iterator(g.m_edges.begin()),
982.1142 -                             edge_iterator(g.m_edges.end()) );
982.1143 -    }
982.1144 -
982.1145 -    //=========================================================================
982.1146 -    // Bidirectional Graph Helper Class (with edge properties)
982.1147 -
982.1148 -
982.1149 -    template <class Config>
982.1150 -    struct bidirectional_graph_helper_with_property
982.1151 -      : public bidirectional_graph_helper<Config>
982.1152 -    {
982.1153 -      typedef typename Config::graph_type graph_type;
982.1154 -      typedef typename Config::out_edge_iterator out_edge_iterator;
982.1155 -      
982.1156 -      std::pair<out_edge_iterator, out_edge_iterator>
982.1157 -      get_parallel_edge_sublist(typename Config::edge_descriptor e,
982.1158 -                                const graph_type& g,
982.1159 -                                void*)
982.1160 -      { return out_edges(source(e, g), g); }
982.1161 -
982.1162 -      std::pair<out_edge_iterator, out_edge_iterator>
982.1163 -      get_parallel_edge_sublist(typename Config::edge_descriptor e,
982.1164 -                                const graph_type& g,
982.1165 -                                setS*)
982.1166 -      { return edge_range(source(e, g), target(e, g), g); }
982.1167 -
982.1168 -      std::pair<out_edge_iterator, out_edge_iterator>
982.1169 -      get_parallel_edge_sublist(typename Config::edge_descriptor e,
982.1170 -                                const graph_type& g,
982.1171 -                                multisetS*)
982.1172 -      { return edge_range(source(e, g), target(e, g), g); }
982.1173 -
982.1174 -#if !defined BOOST_NO_HASH
982.1175 -      std::pair<out_edge_iterator, out_edge_iterator>
982.1176 -      get_parallel_edge_sublist(typename Config::edge_descriptor e,
982.1177 -                                const graph_type& g,
982.1178 -                                hash_setS*)
982.1179 -      { return edge_range(source(e, g), target(e, g), g); }
982.1180 -#endif
982.1181 -
982.1182 -      // Placement of these overloaded remove_edge() functions
982.1183 -      // inside the class avoids a VC++ bug.
982.1184 -
982.1185 -      // O(E/V) or O(log(E/V))
982.1186 -      void
982.1187 -      remove_edge(typename Config::edge_descriptor e)
982.1188 -      {
982.1189 -        typedef typename Config::global_edgelist_selector EdgeListS;
982.1190 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1191 -
982.1192 -        graph_type& g = static_cast<graph_type&>(*this);
982.1193 -
982.1194 -        typedef typename Config::edgelist_selector OutEdgeListS;
982.1195 -
982.1196 -        std::pair<out_edge_iterator, out_edge_iterator> rng = 
982.1197 -          get_parallel_edge_sublist(e, g, (OutEdgeListS*)(0));
982.1198 -        rng.first = std::find(rng.first, rng.second, e);
982.1199 -        assert(rng.first != rng.second);
982.1200 -        remove_edge(rng.first);
982.1201 -      }
982.1202 -
982.1203 -      inline void
982.1204 -      remove_edge(typename Config::out_edge_iterator iter)
982.1205 -      {
982.1206 -        typedef typename Config::global_edgelist_selector EdgeListS;
982.1207 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1208 -
982.1209 -        typedef typename Config::graph_type graph_type;
982.1210 -        graph_type& g = static_cast<graph_type&>(*this);
982.1211 -        typename Config::edge_descriptor e = *iter;
982.1212 -        typename Config::OutEdgeList& oel = g.out_edge_list(source(e, g));
982.1213 -        typename Config::InEdgeList& iel = in_edge_list(g, target(e, g));
982.1214 -        typedef typename Config::OutEdgeList::value_type::property_type PType;
982.1215 -        PType& p = *(PType*)e.get_property();
982.1216 -        detail::remove_directed_edge_dispatch(*iter, iel, p);
982.1217 -        g.m_edges.erase(iter.base()->get_iter());
982.1218 -        oel.erase(iter.base());
982.1219 -      }
982.1220 -    };
982.1221 -
982.1222 -    // O(E/V) for allow_parallel_edge_tag
982.1223 -    // O(log(E/V)) for disallow_parallel_edge_tag
982.1224 -    template <class Config>
982.1225 -    inline void
982.1226 -    remove_edge(typename Config::vertex_descriptor u, 
982.1227 -                typename Config::vertex_descriptor v, 
982.1228 -                bidirectional_graph_helper_with_property<Config>& g_)
982.1229 -    {
982.1230 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1231 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1232 -
982.1233 -      typedef typename Config::graph_type graph_type;
982.1234 -      graph_type& g = static_cast<graph_type&>(g_);
982.1235 -      typedef typename Config::edge_parallel_category Cat;
982.1236 -      detail::remove_edge_and_property(g, g.out_edge_list(u), v, Cat());
982.1237 -      detail::erase_from_incidence_list(in_edge_list(g, v), u, Cat());
982.1238 -    }
982.1239 -
982.1240 -    // O(E/V) or O(log(E/V))
982.1241 -    template <class EdgeOrIter, class Config>
982.1242 -    inline void
982.1243 -    remove_edge(EdgeOrIter e,
982.1244 -                bidirectional_graph_helper_with_property<Config>& g_)
982.1245 -    {
982.1246 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1247 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1248 -
982.1249 -      g_.remove_edge(e);
982.1250 -    }
982.1251 -
982.1252 -    template <class Config, class Predicate>
982.1253 -    inline void
982.1254 -    remove_out_edge_if(typename Config::vertex_descriptor u, Predicate pred,
982.1255 -                       bidirectional_graph_helper_with_property<Config>& g_)
982.1256 -    {
982.1257 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1258 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1259 -
982.1260 -      typedef typename Config::graph_type graph_type;
982.1261 -      typedef typename Config::OutEdgeList::value_type::property_type PropT;
982.1262 -      graph_type& g = static_cast<graph_type&>(g_);
982.1263 -      
982.1264 -      typedef typename Config::EdgeIter EdgeIter;
982.1265 -      typedef std::vector<EdgeIter> Garbage;
982.1266 -      Garbage garbage;
982.1267 -
982.1268 -      // First remove the edges from the targets' in-edge lists and
982.1269 -      // from the graph's edge set list.
982.1270 -      typename Config::out_edge_iterator out_i, out_end;
982.1271 -      for (tie(out_i, out_end) = out_edges(u, g); out_i != out_end; ++out_i)
982.1272 -        if (pred(*out_i)) {
982.1273 -          detail::remove_directed_edge_dispatch
982.1274 -            (*out_i, in_edge_list(g, target(*out_i, g)),
982.1275 -             *(PropT*)(*out_i).get_property());
982.1276 -          // Put in garbage to delete later. Will need the properties
982.1277 -          // for the remove_if of the out-edges.
982.1278 -          garbage.push_back((*out_i.base()).get_iter());
982.1279 -        }
982.1280 -
982.1281 -      // Now remove the edges from this out-edge list.
982.1282 -      typename Config::out_edge_iterator first, last;
982.1283 -      tie(first, last) = out_edges(u, g);
982.1284 -      typedef typename Config::edge_parallel_category Cat;
982.1285 -      detail::remove_directed_edge_if_dispatch
982.1286 -        (first, last, g.out_edge_list(u), pred, Cat());
982.1287 -
982.1288 -      // Now delete the edge properties from the g.m_edges list
982.1289 -      for (typename Garbage::iterator i = garbage.begin();
982.1290 -           i != garbage.end(); ++i)
982.1291 -        g.m_edges.erase(*i);
982.1292 -    }
982.1293 -    template <class Config, class Predicate>
982.1294 -    inline void
982.1295 -    remove_in_edge_if(typename Config::vertex_descriptor v, Predicate pred,
982.1296 -                      bidirectional_graph_helper_with_property<Config>& g_)
982.1297 -    {
982.1298 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1299 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1300 -
982.1301 -      typedef typename Config::graph_type graph_type;
982.1302 -      typedef typename Config::OutEdgeList::value_type::property_type PropT;
982.1303 -      graph_type& g = static_cast<graph_type&>(g_);
982.1304 -
982.1305 -      typedef typename Config::EdgeIter EdgeIter;
982.1306 -      typedef std::vector<EdgeIter> Garbage;
982.1307 -      Garbage garbage;
982.1308 -
982.1309 -      // First remove the edges from the sources' out-edge lists and
982.1310 -      // from the graph's edge set list.
982.1311 -      typename Config::in_edge_iterator in_i, in_end;
982.1312 -      for (tie(in_i, in_end) = in_edges(v, g); in_i != in_end; ++in_i)
982.1313 -        if (pred(*in_i)) {
982.1314 -          typename Config::vertex_descriptor u = source(*in_i, g);
982.1315 -          detail::remove_directed_edge_dispatch
982.1316 -            (*in_i, g.out_edge_list(u), *(PropT*)(*in_i).get_property());
982.1317 -          // Put in garbage to delete later. Will need the properties
982.1318 -          // for the remove_if of the out-edges.
982.1319 -          garbage.push_back((*in_i.base()).get_iter());
982.1320 -        }
982.1321 -      // Now remove the edges from this in-edge list.
982.1322 -      typename Config::in_edge_iterator first, last;
982.1323 -      tie(first, last) = in_edges(v, g);
982.1324 -      typedef typename Config::edge_parallel_category Cat;
982.1325 -      detail::remove_directed_edge_if_dispatch
982.1326 -        (first, last, in_edge_list(g, v), pred, Cat());
982.1327 -
982.1328 -      // Now delete the edge properties from the g.m_edges list
982.1329 -      for (typename Garbage::iterator i = garbage.begin();
982.1330 -           i != garbage.end(); ++i)
982.1331 -        g.m_edges.erase(*i);
982.1332 -    }
982.1333 -
982.1334 -    // O(1)
982.1335 -    template <class Config>
982.1336 -    inline typename Config::edges_size_type
982.1337 -    num_edges(const bidirectional_graph_helper_with_property<Config>& g_) 
982.1338 -    {
982.1339 -      typedef typename Config::graph_type graph_type;
982.1340 -      const graph_type& g = static_cast<const graph_type&>(g_);
982.1341 -      return g.m_edges.size();
982.1342 -    }
982.1343 -    // O(E/V * E/V) for allow_parallel_edge_tag
982.1344 -    // O(E/V * log(E/V)) for disallow_parallel_edge_tag
982.1345 -    template <class Config>
982.1346 -    inline void
982.1347 -    clear_vertex(typename Config::vertex_descriptor u,
982.1348 -                 bidirectional_graph_helper_with_property<Config>& g_)
982.1349 -    {
982.1350 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1351 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1352 -
982.1353 -      typedef typename Config::graph_type graph_type;
982.1354 -      typedef typename Config::edge_parallel_category Cat;
982.1355 -      graph_type& g = static_cast<graph_type&>(g_);
982.1356 -      typename Config::OutEdgeList& el = g.out_edge_list(u);
982.1357 -      typename Config::OutEdgeList::iterator 
982.1358 -        ei = el.begin(), ei_end = el.end();
982.1359 -      for (; ei != ei_end; ++ei) {
982.1360 -        detail::erase_from_incidence_list
982.1361 -          (in_edge_list(g, (*ei).get_target()), u, Cat());
982.1362 -        g.m_edges.erase((*ei).get_iter());
982.1363 -      }      
982.1364 -      typename Config::InEdgeList& in_el = in_edge_list(g, u);
982.1365 -      typename Config::InEdgeList::iterator 
982.1366 -        in_ei = in_el.begin(), in_ei_end = in_el.end();
982.1367 -      for (; in_ei != in_ei_end; ++in_ei) {
982.1368 -        detail::erase_from_incidence_list
982.1369 -          (g.out_edge_list((*in_ei).get_target()), u, Cat());
982.1370 -        g.m_edges.erase((*in_ei).get_iter());   
982.1371 -      }
982.1372 -      g.out_edge_list(u).clear();
982.1373 -      in_edge_list(g, u).clear();
982.1374 -    }
982.1375 -
982.1376 -    template <class Config>
982.1377 -    inline void
982.1378 -    clear_out_edges(typename Config::vertex_descriptor u,
982.1379 -                    bidirectional_graph_helper_with_property<Config>& g_)
982.1380 -    {
982.1381 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1382 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1383 -
982.1384 -      typedef typename Config::graph_type graph_type;
982.1385 -      typedef typename Config::edge_parallel_category Cat;
982.1386 -      graph_type& g = static_cast<graph_type&>(g_);
982.1387 -      typename Config::OutEdgeList& el = g.out_edge_list(u);
982.1388 -      typename Config::OutEdgeList::iterator 
982.1389 -        ei = el.begin(), ei_end = el.end();
982.1390 -      for (; ei != ei_end; ++ei) {
982.1391 -        detail::erase_from_incidence_list
982.1392 -          (in_edge_list(g, (*ei).get_target()), u, Cat());
982.1393 -        g.m_edges.erase((*ei).get_iter());
982.1394 -      }      
982.1395 -      g.out_edge_list(u).clear();
982.1396 -    }
982.1397 -
982.1398 -    template <class Config>
982.1399 -    inline void
982.1400 -    clear_in_edges(typename Config::vertex_descriptor u,
982.1401 -                   bidirectional_graph_helper_with_property<Config>& g_)
982.1402 -    {
982.1403 -      typedef typename Config::global_edgelist_selector EdgeListS;
982.1404 -      BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1405 -
982.1406 -      typedef typename Config::graph_type graph_type;
982.1407 -      typedef typename Config::edge_parallel_category Cat;
982.1408 -      graph_type& g = static_cast<graph_type&>(g_);
982.1409 -      typename Config::InEdgeList& in_el = in_edge_list(g, u);
982.1410 -      typename Config::InEdgeList::iterator 
982.1411 -        in_ei = in_el.begin(), in_ei_end = in_el.end();
982.1412 -      for (; in_ei != in_ei_end; ++in_ei) {
982.1413 -        detail::erase_from_incidence_list
982.1414 -          (g.out_edge_list((*in_ei).get_target()), u, Cat());
982.1415 -        g.m_edges.erase((*in_ei).get_iter());   
982.1416 -      }
982.1417 -      in_edge_list(g, u).clear();
982.1418 -    }
982.1419 -
982.1420 -    // O(1) for allow_parallel_edge_tag
982.1421 -    // O(log(E/V)) for disallow_parallel_edge_tag
982.1422 -    template <class Config>
982.1423 -    inline std::pair<typename Config::edge_descriptor, bool>
982.1424 -    add_edge(typename Config::vertex_descriptor u,
982.1425 -             typename Config::vertex_descriptor v, 
982.1426 -             const typename Config::edge_property_type& p,
982.1427 -             bidirectional_graph_helper_with_property<Config>& g_)
982.1428 -    {
982.1429 -      typedef typename Config::graph_type graph_type;
982.1430 -      graph_type& g = static_cast<graph_type&>(g_);
982.1431 -      typedef typename Config::edge_descriptor edge_descriptor;
982.1432 -      typedef typename Config::StoredEdge StoredEdge;
982.1433 -      bool inserted;
982.1434 -      typename Config::EdgeContainer::value_type e(u, v, p);
982.1435 -      typename Config::EdgeContainer::iterator p_iter 
982.1436 -        = graph_detail::push(g.m_edges, e).first;
982.1437 -      typename Config::OutEdgeList::iterator i;
982.1438 -      boost::tie(i, inserted) = boost::graph_detail::push(g.out_edge_list(u), 
982.1439 -                                        StoredEdge(v, p_iter, &g.m_edges));
982.1440 -      if (inserted) {
982.1441 -        boost::graph_detail::push(in_edge_list(g, v), StoredEdge(u, p_iter, &g.m_edges));
982.1442 -        return std::make_pair(edge_descriptor(u, v, &p_iter->m_property), 
982.1443 -                              true);
982.1444 -      } else {
982.1445 -        g.m_edges.erase(p_iter);
982.1446 -        return std::make_pair(edge_descriptor(u, v, 
982.1447 -                                     &i->get_iter()->get_property()), 
982.1448 -                              false);
982.1449 -      }
982.1450 -    }
982.1451 -
982.1452 -    template <class Config>
982.1453 -    inline std::pair<typename Config::edge_descriptor, bool>
982.1454 -    add_edge(typename Config::vertex_descriptor u,
982.1455 -             typename Config::vertex_descriptor v,
982.1456 -             bidirectional_graph_helper_with_property<Config>& g_)
982.1457 -    {
982.1458 -      typename Config::edge_property_type p;
982.1459 -      return add_edge(u, v, p, g_);
982.1460 -    }
982.1461 -    // O(1)
982.1462 -    template <class Config>
982.1463 -    inline typename Config::degree_size_type
982.1464 -    degree(typename Config::vertex_descriptor u, 
982.1465 -           const bidirectional_graph_helper_with_property<Config>& g_)
982.1466 -    {
982.1467 -      typedef typename Config::graph_type graph_type;
982.1468 -      const graph_type& g = static_cast<const graph_type&>(g_);
982.1469 -      return in_degree(u, g) + out_degree(u, g);
982.1470 -    }
982.1471 -
982.1472 -    //=========================================================================
982.1473 -    // Adjacency List Helper Class
982.1474 -
982.1475 -    template <class Config, class Base>
982.1476 -    struct adj_list_helper : public Base
982.1477 -    {
982.1478 -      typedef typename Config::graph_type AdjList;
982.1479 -      typedef typename Config::vertex_descriptor vertex_descriptor;
982.1480 -      typedef typename Config::edge_descriptor edge_descriptor;
982.1481 -      typedef typename Config::out_edge_iterator out_edge_iterator;
982.1482 -      typedef typename Config::in_edge_iterator in_edge_iterator;
982.1483 -      typedef typename Config::adjacency_iterator adjacency_iterator;
982.1484 -      typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator;
982.1485 -      typedef typename Config::vertex_iterator vertex_iterator;
982.1486 -      typedef typename Config::edge_iterator edge_iterator;
982.1487 -      typedef typename Config::directed_category directed_category;
982.1488 -      typedef typename Config::edge_parallel_category edge_parallel_category;
982.1489 -      typedef typename Config::vertices_size_type vertices_size_type;
982.1490 -      typedef typename Config::edges_size_type edges_size_type;
982.1491 -      typedef typename Config::degree_size_type degree_size_type;
982.1492 -      typedef typename Config::StoredEdge StoredEdge;
982.1493 -      typedef typename Config::edge_property_type edge_property_type;
982.1494 -
982.1495 -      typedef typename Config::global_edgelist_selector
982.1496 -        global_edgelist_selector;
982.1497 -
982.1498 -      //    protected:
982.1499 -
982.1500 -      // The edge_dispatch() functions should be static, but
982.1501 -      // Borland gets confused about constness.
982.1502 -
982.1503 -      // O(E/V)
982.1504 -      inline std::pair<edge_descriptor,bool>      
982.1505 -      edge_dispatch(const AdjList& g, 
982.1506 -                    vertex_descriptor u, vertex_descriptor v, 
982.1507 -                    boost::allow_parallel_edge_tag) const
982.1508 -      {
982.1509 -        bool found;
982.1510 -        const typename Config::OutEdgeList& el = g.out_edge_list(u);
982.1511 -        typename Config::OutEdgeList::const_iterator 
982.1512 -          i = std::find_if(el.begin(), el.end(), 
982.1513 -                           detail::target_is<vertex_descriptor>(v));
982.1514 -        found = (i != g.out_edge_list(u).end());
982.1515 -        if (found)
982.1516 -          return std::make_pair(edge_descriptor(u, v, &(*i).get_property()),
982.1517 -                                true);
982.1518 -        else
982.1519 -          return std::make_pair(edge_descriptor(u, v, 0), false);
982.1520 -      }
982.1521 -      // O(log(E/V))
982.1522 -      inline std::pair<edge_descriptor,bool>      
982.1523 -      edge_dispatch(const AdjList& g, 
982.1524 -                    vertex_descriptor u, vertex_descriptor v, 
982.1525 -                    boost::disallow_parallel_edge_tag) const
982.1526 -      {
982.1527 -        bool found;
982.1528 -        /* According to the standard, this should be iterator, not const_iterator,
982.1529 -           but the VC++ std::set::find() const returns const_iterator.
982.1530 -           And since iterator should be convertible to const_iterator, the
982.1531 -           following should work everywhere. -Jeremy */
982.1532 -        typename Config::OutEdgeList::const_iterator 
982.1533 -          i = g.out_edge_list(u).find(StoredEdge(v)),
982.1534 -          end = g.out_edge_list(u).end();
982.1535 -        found = (i != end);
982.1536 -        if (found)
982.1537 -          return std::make_pair(edge_descriptor(u, v, &(*i).get_property()),
982.1538 -                                true);
982.1539 -        else
982.1540 -          return std::make_pair(edge_descriptor(u, v, 0), false);
982.1541 -      }
982.1542 -    };
982.1543 -
982.1544 -    template <class Config, class Base>
982.1545 -    inline std::pair<typename Config::adjacency_iterator, 
982.1546 -                     typename Config::adjacency_iterator>
982.1547 -    adjacent_vertices(typename Config::vertex_descriptor u, 
982.1548 -                      const adj_list_helper<Config, Base>& g_)
982.1549 -    {
982.1550 -      typedef typename Config::graph_type AdjList;
982.1551 -      const AdjList& cg = static_cast<const AdjList&>(g_);
982.1552 -      AdjList& g = const_cast<AdjList&>(cg);
982.1553 -      typedef typename Config::adjacency_iterator adjacency_iterator;
982.1554 -      typename Config::out_edge_iterator first, last;
982.1555 -      boost::tie(first, last) = out_edges(u, g);
982.1556 -      return std::make_pair(adjacency_iterator(first, &g),
982.1557 -                            adjacency_iterator(last, &g));
982.1558 -    }
982.1559 -    template <class Config, class Base>
982.1560 -    inline std::pair<typename Config::inv_adjacency_iterator, 
982.1561 -                     typename Config::inv_adjacency_iterator>
982.1562 -    inv_adjacent_vertices(typename Config::vertex_descriptor u, 
982.1563 -                          const adj_list_helper<Config, Base>& g_)
982.1564 -    {
982.1565 -      typedef typename Config::graph_type AdjList;
982.1566 -      const AdjList& cg = static_cast<const AdjList&>(g_);
982.1567 -      AdjList& g = const_cast<AdjList&>(cg);
982.1568 -      typedef typename Config::inv_adjacency_iterator inv_adjacency_iterator;
982.1569 -      typename Config::in_edge_iterator first, last;
982.1570 -      boost::tie(first, last) = in_edges(u, g);
982.1571 -      return std::make_pair(inv_adjacency_iterator(first, &g),
982.1572 -                            inv_adjacency_iterator(last, &g));
982.1573 -    }
982.1574 -    template <class Config, class Base>
982.1575 -    inline std::pair<typename Config::out_edge_iterator, 
982.1576 -                     typename Config::out_edge_iterator>
982.1577 -    out_edges(typename Config::vertex_descriptor u, 
982.1578 -              const adj_list_helper<Config, Base>& g_)
982.1579 -    {
982.1580 -      typedef typename Config::graph_type AdjList;
982.1581 -      typedef typename Config::out_edge_iterator out_edge_iterator;
982.1582 -      const AdjList& cg = static_cast<const AdjList&>(g_);
982.1583 -      AdjList& g = const_cast<AdjList&>(cg);
982.1584 -      return
982.1585 -        std::make_pair(out_edge_iterator(g.out_edge_list(u).begin(), u),
982.1586 -                       out_edge_iterator(g.out_edge_list(u).end(), u));
982.1587 -    }
982.1588 -    template <class Config, class Base>
982.1589 -    inline std::pair<typename Config::vertex_iterator, 
982.1590 -                     typename Config::vertex_iterator>
982.1591 -    vertices(const adj_list_helper<Config, Base>& g_)
982.1592 -    {
982.1593 -      typedef typename Config::graph_type AdjList;
982.1594 -      const AdjList& cg = static_cast<const AdjList&>(g_);
982.1595 -      AdjList& g = const_cast<AdjList&>(cg);
982.1596 -      return std::make_pair( g.vertex_set().begin(), g.vertex_set().end() );
982.1597 -    }
982.1598 -    template <class Config, class Base>
982.1599 -    inline typename Config::vertices_size_type
982.1600 -    num_vertices(const adj_list_helper<Config, Base>& g_)
982.1601 -    {
982.1602 -      typedef typename Config::graph_type AdjList;
982.1603 -      const AdjList& g = static_cast<const AdjList&>(g_);
982.1604 -      return g.vertex_set().size();
982.1605 -    }
982.1606 -    template <class Config, class Base>
982.1607 -    inline typename Config::degree_size_type
982.1608 -    out_degree(typename Config::vertex_descriptor u, 
982.1609 -               const adj_list_helper<Config, Base>& g_)
982.1610 -    {
982.1611 -      typedef typename Config::graph_type AdjList;
982.1612 -      const AdjList& g = static_cast<const AdjList&>(g_);
982.1613 -      return g.out_edge_list(u).size();
982.1614 -    }
982.1615 -    template <class Config, class Base>
982.1616 -    inline std::pair<typename Config::edge_descriptor, bool>
982.1617 -    edge(typename Config::vertex_descriptor u, 
982.1618 -         typename Config::vertex_descriptor v, 
982.1619 -         const adj_list_helper<Config, Base>& g_)
982.1620 -    {
982.1621 -      typedef typename Config::graph_type Graph;
982.1622 -      typedef typename Config::edge_parallel_category Cat;
982.1623 -      const Graph& g = static_cast<const Graph&>(g_);
982.1624 -      return g_.edge_dispatch(g, u, v, Cat());
982.1625 -    }
982.1626 -    template <class Config, class Base>
982.1627 -    inline std::pair<typename Config::out_edge_iterator,
982.1628 -                     typename Config::out_edge_iterator>
982.1629 -    edge_range(typename Config::vertex_descriptor u,
982.1630 -               typename Config::vertex_descriptor v,
982.1631 -               const adj_list_helper<Config, Base>& g_)
982.1632 -    {
982.1633 -      typedef typename Config::graph_type Graph;
982.1634 -      typedef typename Config::StoredEdge StoredEdge;
982.1635 -      const Graph& cg = static_cast<const Graph&>(g_);
982.1636 -      Graph& g = const_cast<Graph&>(cg);
982.1637 -      typedef typename Config::out_edge_iterator out_edge_iterator;
982.1638 -      typename Config::OutEdgeList& el = g.out_edge_list(u);
982.1639 -      typename Config::OutEdgeList::iterator first, last;
982.1640 -      typename Config::EdgeContainer fake_edge_container;
982.1641 -      tie(first, last) = 
982.1642 -        std::equal_range(el.begin(), el.end(), 
982.1643 -                         StoredEdge(v, fake_edge_container.end(),
982.1644 -                                    &fake_edge_container));
982.1645 -      return std::make_pair(out_edge_iterator(first, u),
982.1646 -                            out_edge_iterator(last, u));
982.1647 -    }
982.1648 -
982.1649 -    template <class Config>
982.1650 -    inline typename Config::degree_size_type
982.1651 -    in_degree(typename Config::vertex_descriptor u, 
982.1652 -              const directed_edges_helper<Config>& g_)
982.1653 -    {
982.1654 -      typedef typename Config::graph_type Graph;
982.1655 -      const Graph& cg = static_cast<const Graph&>(g_);
982.1656 -      Graph& g = const_cast<Graph&>(cg);
982.1657 -      return in_edge_list(g, u).size();
982.1658 -    }
982.1659 -
982.1660 -    namespace detail {
982.1661 -      template <class Config, class Base, class Property>
982.1662 -      inline
982.1663 -      typename boost::property_map<typename Config::graph_type,
982.1664 -        Property>::type
982.1665 -      get_dispatch(adj_list_helper<Config,Base>&, Property, 
982.1666 -                   boost::edge_property_tag) {
982.1667 -        typedef typename Config::graph_type Graph;
982.1668 -        typedef typename boost::property_map<Graph, Property>::type PA;
982.1669 -        return PA();
982.1670 -      }
982.1671 -      template <class Config, class Base, class Property>
982.1672 -      inline
982.1673 -      typename boost::property_map<typename Config::graph_type, 
982.1674 -        Property>::const_type
982.1675 -      get_dispatch(const adj_list_helper<Config,Base>&, Property, 
982.1676 -                   boost::edge_property_tag) {
982.1677 -        typedef typename Config::graph_type Graph;
982.1678 -        typedef typename boost::property_map<Graph, Property>::const_type PA;
982.1679 -        return PA();
982.1680 -      }
982.1681 -
982.1682 -      template <class Config, class Base, class Property>
982.1683 -      inline
982.1684 -      typename boost::property_map<typename Config::graph_type, 
982.1685 -        Property>::type
982.1686 -      get_dispatch(adj_list_helper<Config,Base>& g, Property, 
982.1687 -                   boost::vertex_property_tag) {
982.1688 -        typedef typename Config::graph_type Graph;
982.1689 -        typedef typename boost::property_map<Graph, Property>::type PA;
982.1690 -        return PA(&static_cast<Graph&>(g));
982.1691 -      }
982.1692 -      template <class Config, class Base, class Property>
982.1693 -      inline
982.1694 -      typename boost::property_map<typename Config::graph_type,
982.1695 -        Property>::const_type
982.1696 -      get_dispatch(const adj_list_helper<Config, Base>& g, Property, 
982.1697 -                   boost::vertex_property_tag) {
982.1698 -        typedef typename Config::graph_type Graph;
982.1699 -        typedef typename boost::property_map<Graph, Property>::const_type PA;
982.1700 -        const Graph& cg = static_cast<const Graph&>(g);
982.1701 -        return PA(&cg);
982.1702 -      }
982.1703 -
982.1704 -    } // namespace detail
982.1705 -
982.1706 -    // Implementation of the PropertyGraph interface
982.1707 -    template <class Config, class Base, class Property>
982.1708 -    inline
982.1709 -    typename boost::property_map<typename Config::graph_type, Property>::type
982.1710 -    get(Property p, adj_list_helper<Config, Base>& g) {
982.1711 -      typedef typename property_kind<Property>::type Kind;
982.1712 -      return detail::get_dispatch(g, p, Kind());
982.1713 -    }
982.1714 -    template <class Config, class Base, class Property>
982.1715 -    inline
982.1716 -    typename boost::property_map<typename Config::graph_type, 
982.1717 -      Property>::const_type
982.1718 -    get(Property p, const adj_list_helper<Config, Base>& g) {
982.1719 -      typedef typename property_kind<Property>::type Kind;
982.1720 -      return detail::get_dispatch(g, p, Kind());
982.1721 -    }
982.1722 -
982.1723 -    template <class Config, class Base, class Property, class Key>
982.1724 -    inline
982.1725 -    typename boost::property_traits<
982.1726 -      typename boost::property_map<typename Config::graph_type, 
982.1727 -        Property>::type
982.1728 -    >::reference
982.1729 -    get(Property p, adj_list_helper<Config, Base>& g, const Key& key) {
982.1730 -      return get(get(p, g), key);
982.1731 -    }
982.1732 -
982.1733 -    template <class Config, class Base, class Property, class Key>
982.1734 -    inline
982.1735 -    typename boost::property_traits<
982.1736 -      typename boost::property_map<typename Config::graph_type, 
982.1737 -        Property>::const_type
982.1738 -    >::reference
982.1739 -    get(Property p, const adj_list_helper<Config, Base>& g, const Key& key) {
982.1740 -      return get(get(p, g), key);
982.1741 -    }
982.1742 -
982.1743 -    template <class Config, class Base, class Property, class Key,class Value>
982.1744 -    inline void
982.1745 -    put(Property p, adj_list_helper<Config, Base>& g, 
982.1746 -        const Key& key, const Value& value)
982.1747 -    {
982.1748 -      typedef typename Config::graph_type Graph;
982.1749 -      typedef typename boost::property_map<Graph, Property>::type Map;
982.1750 -      Map pmap = get(p, static_cast<Graph&>(g));
982.1751 -      put(pmap, key, value);
982.1752 -    }
982.1753 -
982.1754 -
982.1755 -    //=========================================================================
982.1756 -    // Generalize Adjacency List Implementation
982.1757 -
982.1758 -    struct adj_list_tag { };
982.1759 -
982.1760 -    template <class Derived, class Config, class Base>
982.1761 -    class adj_list_impl
982.1762 -      : public adj_list_helper<Config, Base>
982.1763 -    {
982.1764 -      typedef typename Config::OutEdgeList OutEdgeList;
982.1765 -      typedef typename Config::InEdgeList InEdgeList;
982.1766 -      typedef typename Config::StoredVertexList StoredVertexList;
982.1767 -    public:
982.1768 -      typedef typename Config::stored_vertex stored_vertex;
982.1769 -      typedef typename Config::EdgeContainer EdgeContainer;
982.1770 -      typedef typename Config::vertex_descriptor vertex_descriptor;
982.1771 -      typedef typename Config::edge_descriptor edge_descriptor;
982.1772 -      typedef typename Config::vertex_iterator vertex_iterator;
982.1773 -      typedef typename Config::edge_iterator edge_iterator;
982.1774 -      typedef typename Config::edge_parallel_category edge_parallel_category;
982.1775 -      typedef typename Config::vertices_size_type vertices_size_type;
982.1776 -      typedef typename Config::edges_size_type edges_size_type;
982.1777 -      typedef typename Config::degree_size_type degree_size_type;
982.1778 -      typedef typename Config::edge_property_type edge_property_type;
982.1779 -      typedef adj_list_tag graph_tag;
982.1780 -
982.1781 -      static vertex_descriptor null_vertex()
982.1782 -      {
982.1783 -        return 0;
982.1784 -      }
982.1785 -      
982.1786 -      inline adj_list_impl() { }
982.1787 -
982.1788 -      inline adj_list_impl(const adj_list_impl& x) {
982.1789 -        copy_impl(x);
982.1790 -      }
982.1791 -      inline adj_list_impl& operator=(const adj_list_impl& x) {
982.1792 -        this->clear();
982.1793 -        copy_impl(x);
982.1794 -        return *this;
982.1795 -      }
982.1796 -      inline void clear() {
982.1797 -        for (typename StoredVertexList::iterator i = m_vertices.begin();
982.1798 -             i != m_vertices.end(); ++i)
982.1799 -          delete (stored_vertex*)*i;
982.1800 -        m_vertices.clear();
982.1801 -        m_edges.clear();
982.1802 -      }
982.1803 -      inline adj_list_impl(vertices_size_type num_vertices) {
982.1804 -        for (vertices_size_type i = 0; i < num_vertices; ++i)
982.1805 -          add_vertex(static_cast<Derived&>(*this));
982.1806 -      }
982.1807 -      template <class EdgeIterator>
982.1808 -      inline adj_list_impl(vertices_size_type num_vertices,
982.1809 -                           EdgeIterator first, EdgeIterator last)
982.1810 -      {
982.1811 -        vertex_descriptor* v = new vertex_descriptor[num_vertices];
982.1812 -        for (vertices_size_type i = 0; i < num_vertices; ++i)
982.1813 -          v[i] = add_vertex(static_cast<Derived&>(*this));
982.1814 -
982.1815 -        while (first != last) {
982.1816 -          add_edge(v[(*first).first], v[(*first).second], *this);
982.1817 -          ++first;
982.1818 -        }
982.1819 -        delete [] v;
982.1820 -      }
982.1821 -      template <class EdgeIterator, class EdgePropertyIterator>
982.1822 -      inline adj_list_impl(vertices_size_type num_vertices,
982.1823 -                           EdgeIterator first, EdgeIterator last,
982.1824 -                           EdgePropertyIterator ep_iter)
982.1825 -      {
982.1826 -        vertex_descriptor* v = new vertex_descriptor[num_vertices];
982.1827 -        for (vertices_size_type i = 0; i < num_vertices; ++i)
982.1828 -          v[i] = add_vertex(static_cast<Derived&>(*this));
982.1829 -
982.1830 -        while (first != last) {
982.1831 -          add_edge(v[(*first).first], v[(*first).second], *ep_iter, *this);
982.1832 -          ++first;
982.1833 -          ++ep_iter;
982.1834 -        }
982.1835 -        delete [] v;
982.1836 -      }
982.1837 -      ~adj_list_impl() {
982.1838 -        for (typename StoredVertexList::iterator i = m_vertices.begin();
982.1839 -             i != m_vertices.end(); ++i)
982.1840 -          delete (stored_vertex*)*i;
982.1841 -      }
982.1842 -      //    protected:
982.1843 -      inline OutEdgeList& out_edge_list(vertex_descriptor v) {
982.1844 -        stored_vertex* sv = (stored_vertex*)v;
982.1845 -        return sv->m_out_edges;
982.1846 -      }
982.1847 -      inline const OutEdgeList& out_edge_list(vertex_descriptor v) const {
982.1848 -        stored_vertex* sv = (stored_vertex*)v;
982.1849 -        return sv->m_out_edges;
982.1850 -      }
982.1851 -      inline StoredVertexList& vertex_set() { return m_vertices; }
982.1852 -      inline const StoredVertexList& vertex_set() const { return m_vertices; }
982.1853 -
982.1854 -      inline void copy_impl(const adj_list_impl& x_) 
982.1855 -      {
982.1856 -        const Derived& x = static_cast<const Derived&>(x_);
982.1857 -
982.1858 -        // Would be better to have a constant time way to get from
982.1859 -        // vertices in x to the corresponding vertices in *this.
982.1860 -        std::map<stored_vertex*,stored_vertex*> vertex_map;
982.1861 -
982.1862 -        // Copy the stored vertex objects by adding each vertex
982.1863 -        // and copying its property object.
982.1864 -        vertex_iterator vi, vi_end;
982.1865 -        for (tie(vi, vi_end) = vertices(x); vi != vi_end; ++vi) {
982.1866 -          stored_vertex* v = (stored_vertex*)add_vertex(*this);
982.1867 -          v->m_property = ((stored_vertex*)*vi)->m_property;
982.1868 -          vertex_map[(stored_vertex*)*vi] = v;
982.1869 -        }
982.1870 -        // Copy the edges by adding each edge and copying its
982.1871 -        // property object.
982.1872 -        edge_iterator ei, ei_end;
982.1873 -        for (tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) {
982.1874 -          edge_descriptor e;
982.1875 -          bool inserted; 
982.1876 -          vertex_descriptor s = source(*ei,x), t = target(*ei,x);
982.1877 -          tie(e, inserted) = add_edge(vertex_map[(stored_vertex*)s], 
982.1878 -                                      vertex_map[(stored_vertex*)t], *this);
982.1879 -          *((edge_property_type*)e.m_eproperty)
982.1880 -            = *((edge_property_type*)(*ei).m_eproperty);
982.1881 -        }
982.1882 -      }
982.1883 -
982.1884 -
982.1885 -      typename Config::EdgeContainer m_edges;
982.1886 -      StoredVertexList m_vertices;
982.1887 -    };
982.1888 -
982.1889 -    // O(1)
982.1890 -    template <class Derived, class Config, class Base>
982.1891 -    inline typename Config::vertex_descriptor
982.1892 -    add_vertex(adj_list_impl<Derived, Config, Base>& g_)
982.1893 -    {
982.1894 -      Derived& g = static_cast<Derived&>(g_);
982.1895 -      typedef typename Config::stored_vertex stored_vertex;
982.1896 -      stored_vertex* v = new stored_vertex;
982.1897 -      typename Config::StoredVertexList::iterator pos;
982.1898 -      bool inserted;
982.1899 -      boost::tie(pos,inserted) = boost::graph_detail::push(g.m_vertices, v);
982.1900 -      v->m_position = pos;
982.1901 -      return v;
982.1902 -    }
982.1903 -    // O(1)
982.1904 -    template <class Derived, class Config, class Base>
982.1905 -    inline typename Config::vertex_descriptor
982.1906 -    add_vertex(const typename Config::vertex_property_type& p,
982.1907 -               adj_list_impl<Derived, Config, Base>& g_)
982.1908 -    {
982.1909 -      Derived& g = static_cast<Derived&>(g_);
982.1910 -      typedef typename Config::stored_vertex stored_vertex;
982.1911 -      stored_vertex* v = new stored_vertex(p);
982.1912 -      typename Config::StoredVertexList::iterator pos;
982.1913 -      bool inserted;
982.1914 -      boost::tie(pos,inserted) = boost::graph_detail::push(g.m_vertices, v);
982.1915 -      v->m_position = pos;
982.1916 -      return v;
982.1917 -    }
982.1918 -    // O(1)
982.1919 -    template <class Derived, class Config, class Base>
982.1920 -    inline void remove_vertex(typename Config::vertex_descriptor u,
982.1921 -                              adj_list_impl<Derived, Config, Base>& g_)
982.1922 -    {
982.1923 -      typedef typename Config::stored_vertex stored_vertex;
982.1924 -      Derived& g = static_cast<Derived&>(g_);
982.1925 -      stored_vertex* su = (stored_vertex*)u;
982.1926 -      g.m_vertices.erase(su->m_position);
982.1927 -      delete su;
982.1928 -    }
982.1929 -    // O(V)
982.1930 -    template <class Derived, class Config, class Base>
982.1931 -    inline typename Config::vertex_descriptor
982.1932 -    vertex(typename Config::vertices_size_type n, 
982.1933 -           const adj_list_impl<Derived, Config, Base>& g_)
982.1934 -    {
982.1935 -      const Derived& g = static_cast<const Derived&>(g_);
982.1936 -      typename Config::vertex_iterator i = vertices(g).first;
982.1937 -      while (n--) ++i; // std::advance(i, n); (not VC++ portable)
982.1938 -      return *i;
982.1939 -    }
982.1940 -
982.1941 -    //=========================================================================
982.1942 -    // Vector-Backbone Adjacency List Implementation
982.1943 -
982.1944 -    namespace detail {
982.1945 -
982.1946 -      template <class Graph, class vertex_descriptor>
982.1947 -      inline void 
982.1948 -      remove_vertex_dispatch(Graph& g, vertex_descriptor u, 
982.1949 -                             boost::directed_tag)
982.1950 -      {
982.1951 -        typedef typename Graph::edge_parallel_category edge_parallel_category;
982.1952 -        g.m_vertices.erase(g.m_vertices.begin() + u);
982.1953 -        vertex_descriptor V = num_vertices(g);
982.1954 -        if (u != V) {
982.1955 -          for (vertex_descriptor v = 0; v < V; ++v)
982.1956 -            reindex_edge_list(g.out_edge_list(v), u, edge_parallel_category());
982.1957 -        }
982.1958 -      }
982.1959 -
982.1960 -      template <class Graph, class vertex_descriptor>
982.1961 -      inline void 
982.1962 -      remove_vertex_dispatch(Graph& g, vertex_descriptor u, 
982.1963 -                             boost::undirected_tag)
982.1964 -      {
982.1965 -        typedef typename Graph::global_edgelist_selector EdgeListS;
982.1966 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1967 -
982.1968 -        typedef typename Graph::edge_parallel_category edge_parallel_category;
982.1969 -        g.m_vertices.erase(g.m_vertices.begin() + u);
982.1970 -        vertex_descriptor V = num_vertices(g);
982.1971 -        for (vertex_descriptor v = 0; v < V; ++v)
982.1972 -          reindex_edge_list(g.out_edge_list(v), u, 
982.1973 -                            edge_parallel_category());
982.1974 -        typedef typename Graph::EdgeContainer Container;
982.1975 -        typedef typename Container::iterator Iter;
982.1976 -        Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end();
982.1977 -        for (; ei != ei_end; ++ei) {
982.1978 -          if (ei->m_source > u)
982.1979 -            --ei->m_source;
982.1980 -          if (ei->m_target > u)
982.1981 -            --ei->m_target;
982.1982 -        }
982.1983 -      }
982.1984 -      template <class Graph, class vertex_descriptor>
982.1985 -      inline void 
982.1986 -      remove_vertex_dispatch(Graph& g, vertex_descriptor u, 
982.1987 -                             boost::bidirectional_tag)
982.1988 -      {
982.1989 -        typedef typename Graph::global_edgelist_selector EdgeListS;
982.1990 -        BOOST_STATIC_ASSERT((!is_same<EdgeListS, vecS>::value));
982.1991 -
982.1992 -        typedef typename Graph::edge_parallel_category edge_parallel_category;
982.1993 -        g.m_vertices.erase(g.m_vertices.begin() + u);
982.1994 -        vertex_descriptor V = num_vertices(g);
982.1995 -        vertex_descriptor v;
982.1996 -        if (u != V) {
982.1997 -          for (v = 0; v < V; ++v)
982.1998 -            reindex_edge_list(g.out_edge_list(v), u, 
982.1999 -                              edge_parallel_category());
982.2000 -          for (v = 0; v < V; ++v)
982.2001 -            reindex_edge_list(in_edge_list(g, v), u, 
982.2002 -                              edge_parallel_category());
982.2003 -
982.2004 -          typedef typename Graph::EdgeContainer Container;
982.2005 -          typedef typename Container::iterator Iter;
982.2006 -          Iter ei = g.m_edges.begin(), ei_end = g.m_edges.end();
982.2007 -          for (; ei != ei_end; ++ei) {
982.2008 -            if (ei->m_source > u)
982.2009 -              --ei->m_source;
982.2010 -            if (ei->m_target > u)
982.2011 -              --ei->m_target;
982.2012 -          }
982.2013 -        }
982.2014 -      }
982.2015 -
982.2016 -      template <class EdgeList, class vertex_descriptor>
982.2017 -      inline void
982.2018 -      reindex_edge_list(EdgeList& el, vertex_descriptor u, 
982.2019 -                        boost::allow_parallel_edge_tag)
982.2020 -      {
982.2021 -        typename EdgeList::iterator ei = el.begin(), e_end = el.end();
982.2022 -        for (; ei != e_end; ++ei)
982.2023 -          if ((*ei).get_target() > u)
982.2024 -            --(*ei).get_target();
982.2025 -      }
982.2026 -      template <class EdgeList, class vertex_descriptor>
982.2027 -      inline void
982.2028 -      reindex_edge_list(EdgeList& el, vertex_descriptor u, 
982.2029 -                        boost::disallow_parallel_edge_tag)
982.2030 -      {
982.2031 -        typename EdgeList::iterator ei = el.begin(), e_end = el.end();
982.2032 -        while (ei != e_end) {
982.2033 -          typename EdgeList::value_type ce = *ei;
982.2034 -          ++ei;
982.2035 -          if (ce.get_target() > u) {
982.2036 -            el.erase(ce);
982.2037 -            --ce.get_target();
982.2038 -            el.insert(ce);
982.2039 -          }
982.2040 -        }
982.2041 -      }
982.2042 -    } // namespace detail
982.2043 -
982.2044 -    struct vec_adj_list_tag { };
982.2045 -    
982.2046 -    template <class Graph, class Config, class Base>
982.2047 -    class vec_adj_list_impl
982.2048 -      : public adj_list_helper<Config, Base>
982.2049 -    {
982.2050 -      typedef typename Config::OutEdgeList OutEdgeList;
982.2051 -      typedef typename Config::InEdgeList InEdgeList;
982.2052 -      typedef typename Config::StoredVertexList StoredVertexList; 
982.2053 -    public:
982.2054 -      typedef typename Config::vertex_descriptor vertex_descriptor;
982.2055 -      typedef typename Config::edge_descriptor edge_descriptor;
982.2056 -      typedef typename Config::out_edge_iterator out_edge_iterator;
982.2057 -      typedef typename Config::edge_iterator edge_iterator;
982.2058 -      typedef typename Config::directed_category directed_category;
982.2059 -      typedef typename Config::vertices_size_type vertices_size_type;
982.2060 -      typedef typename Config::edges_size_type edges_size_type;
982.2061 -      typedef typename Config::degree_size_type degree_size_type;
982.2062 -      typedef typename Config::StoredEdge StoredEdge;
982.2063 -      typedef typename Config::stored_vertex stored_vertex;
982.2064 -      typedef typename Config::EdgeContainer EdgeContainer;
982.2065 -      typedef typename Config::edge_property_type edge_property_type;
982.2066 -      typedef vec_adj_list_tag graph_tag;
982.2067 -
982.2068 -      static vertex_descriptor null_vertex()
982.2069 -      {
982.2070 -        return (std::numeric_limits<vertex_descriptor>::max)();
982.2071 -      }
982.2072 -      
982.2073 -      inline vec_adj_list_impl() { }
982.2074 -
982.2075 -      inline vec_adj_list_impl(const vec_adj_list_impl& x) {
982.2076 -        copy_impl(x);
982.2077 -      }
982.2078 -      inline vec_adj_list_impl& operator=(const vec_adj_list_impl& x) {
982.2079 -        this->clear();
982.2080 -        copy_impl(x);
982.2081 -        return *this;
982.2082 -      }
982.2083 -      inline void clear() {
982.2084 -        m_vertices.clear();
982.2085 -        m_edges.clear();
982.2086 -      }
982.2087 -
982.2088 -      inline vec_adj_list_impl(vertices_size_type _num_vertices)
982.2089 -        : m_vertices(_num_vertices) { }
982.2090 -
982.2091 -      template <class EdgeIterator>
982.2092 -      inline vec_adj_list_impl(vertices_size_type num_vertices,
982.2093 -                               EdgeIterator first, EdgeIterator last)
982.2094 -        : m_vertices(num_vertices)
982.2095 -      {
982.2096 -        while (first != last) {
982.2097 -          add_edge((*first).first, (*first).second, 
982.2098 -                   static_cast<Graph&>(*this));
982.2099 -          ++first;
982.2100 -        }
982.2101 -      }
982.2102 -      template <class EdgeIterator, class EdgePropertyIterator>
982.2103 -      inline vec_adj_list_impl(vertices_size_type num_vertices,
982.2104 -                               EdgeIterator first, EdgeIterator last,
982.2105 -                               EdgePropertyIterator ep_iter)
982.2106 -        : m_vertices(num_vertices)
982.2107 -      {
982.2108 -        while (first != last) {
982.2109 -          add_edge((*first).first, (*first).second, *ep_iter, 
982.2110 -                   static_cast<Graph&>(*this));
982.2111 -          ++first;
982.2112 -          ++ep_iter;
982.2113 -        }
982.2114 -      }
982.2115 -
982.2116 -      //    protected:
982.2117 -      inline boost::integer_range<vertex_descriptor> vertex_set() const {
982.2118 -        return boost::integer_range<vertex_descriptor>(0, m_vertices.size());
982.2119 -      }
982.2120 -      inline OutEdgeList& out_edge_list(vertex_descriptor v) {
982.2121 -        return m_vertices[v].m_out_edges;
982.2122 -      }
982.2123 -      inline const OutEdgeList& out_edge_list(vertex_descriptor v) const {
982.2124 -        return m_vertices[v].m_out_edges;
982.2125 -      }
982.2126 -      inline void copy_impl(const vec_adj_list_impl& x_) 
982.2127 -      {
982.2128 -        const Graph& x = static_cast<const Graph&>(x_);
982.2129 -        // Copy the stored vertex objects by adding each vertex
982.2130 -        // and copying its property object.
982.2131 -        for (vertices_size_type i = 0; i < num_vertices(x); ++i) {
982.2132 -          vertex_descriptor v = add_vertex(*this);
982.2133 -          m_vertices[v].m_property = x.m_vertices[i].m_property;
982.2134 -        }
982.2135 -        // Copy the edges by adding each edge and copying its
982.2136 -        // property object.
982.2137 -        edge_iterator ei, ei_end;
982.2138 -        for (tie(ei, ei_end) = edges(x); ei != ei_end; ++ei) {
982.2139 -          edge_descriptor e;
982.2140 -          bool inserted; 
982.2141 -          tie(e, inserted) = add_edge(source(*ei,x), target(*ei,x) , *this);
982.2142 -          *((edge_property_type*)e.m_eproperty)
982.2143 -            = *((edge_property_type*)(*ei).m_eproperty);
982.2144 -        }
982.2145 -      }
982.2146 -      typename Config::EdgeContainer m_edges;
982.2147 -      StoredVertexList m_vertices;
982.2148 -    };
982.2149 -    // Had to make these non-members to avoid accidental instantiation
982.2150 -    // on SGI MIPSpro C++
982.2151 -    template <class G, class C, class B>
982.2152 -    inline typename C::InEdgeList& 
982.2153 -    in_edge_list(vec_adj_list_impl<G,C,B>& g, 
982.2154 -                 typename C::vertex_descriptor v) {
982.2155 -      return g.m_vertices[v].m_in_edges;
982.2156 -    }
982.2157 -    template <class G, class C, class B>
982.2158 -    inline const typename C::InEdgeList& 
982.2159 -    in_edge_list(const vec_adj_list_impl<G,C,B>& g, 
982.2160 -                 typename C::vertex_descriptor v) {
982.2161 -      return g.m_vertices[v].m_in_edges;
982.2162 -    }
982.2163 -
982.2164 -      // O(1)
982.2165 -    template <class Graph, class Config, class Base>
982.2166 -    inline typename Config::vertex_descriptor
982.2167 -    add_vertex(vec_adj_list_impl<Graph, Config, Base>& g_) {
982.2168 -      Graph& g = static_cast<Graph&>(g_);
982.2169 -      g.m_vertices.resize(g.m_vertices.size() + 1);
982.2170 -      return g.m_vertices.size() - 1;
982.2171 -    }
982.2172 -
982.2173 -    template <class Graph, class Config, class Base>
982.2174 -    inline typename Config::vertex_descriptor
982.2175 -    add_vertex(const typename Config::vertex_property_type& p,
982.2176 -               vec_adj_list_impl<Graph, Config, Base>& g_) {
982.2177 -      Graph& g = static_cast<Graph&>(g_);
982.2178 -      typedef typename Config::stored_vertex stored_vertex;
982.2179 -      g.m_vertices.push_back(stored_vertex(p));
982.2180 -      return g.m_vertices.size() - 1;
982.2181 -    }
982.2182 -
982.2183 -    // Here we override the directed_graph_helper add_edge() function
982.2184 -    // so that the number of vertices is automatically changed if
982.2185 -    // either u or v is greater than the number of vertices.
982.2186 -    template <class Graph, class Config, class Base>
982.2187 -    inline std::pair<typename Config::edge_descriptor, bool>
982.2188 -    add_edge(typename Config::vertex_descriptor u, 
982.2189 -             typename Config::vertex_descriptor v,
982.2190 -             const typename Config::edge_property_type& p,
982.2191 -             vec_adj_list_impl<Graph, Config, Base>& g_)
982.2192 -    {
982.2193 -      BOOST_USING_STD_MAX();
982.2194 -      typename Config::vertex_descriptor x = max BOOST_PREVENT_MACRO_SUBSTITUTION(u, v);
982.2195 -      if (x >= num_vertices(g_))
982.2196 -        g_.m_vertices.resize(x + 1);
982.2197 -      adj_list_helper<Config, Base>& g = g_;
982.2198 -      return add_edge(u, v, p, g);
982.2199 -    }
982.2200 -    template <class Graph, class Config, class Base>
982.2201 -    inline std::pair<typename Config::edge_descriptor, bool>
982.2202 -    add_edge(typename Config::vertex_descriptor u, 
982.2203 -             typename Config::vertex_descriptor v,
982.2204 -             vec_adj_list_impl<Graph, Config, Base>& g_)
982.2205 -    {
982.2206 -      typename Config::edge_property_type p;
982.2207 -      return add_edge(u, v, p, g_);
982.2208 -    }
982.2209 -
982.2210 -
982.2211 -    // O(V + E)
982.2212 -    template <class Graph, class Config, class Base>
982.2213 -    inline void remove_vertex(typename Config::vertex_descriptor v,
982.2214 -                              vec_adj_list_impl<Graph, Config, Base>& g_)
982.2215 -    {
982.2216 -      typedef typename Config::directed_category Cat;
982.2217 -      Graph& g = static_cast<Graph&>(g_);
982.2218 -      detail::remove_vertex_dispatch(g, v, Cat());
982.2219 -    }
982.2220 -    // O(1)
982.2221 -    template <class Graph, class Config, class Base>
982.2222 -    inline typename Config::vertex_descriptor 
982.2223 -    vertex(typename Config::vertices_size_type n, 
982.2224 -           const vec_adj_list_impl<Graph, Config, Base>&)
982.2225 -    {
982.2226 -      return n;
982.2227 -    }
982.2228 -
982.2229 -
982.2230 -  namespace detail {
982.2231 -
982.2232 -    //=========================================================================
982.2233 -    // Adjacency List Generator
982.2234 -
982.2235 -    template <class Graph, class VertexListS, class OutEdgeListS,
982.2236 -              class DirectedS, class VertexProperty, class EdgeProperty, 
982.2237 -              class GraphProperty, class EdgeListS>
982.2238 -    struct adj_list_gen
982.2239 -    {
982.2240 -      typedef typename detail::is_random_access<VertexListS>::type 
982.2241 -        is_rand_access;
982.2242 -      typedef typename has_property<EdgeProperty>::type has_edge_property; 
982.2243 -      typedef typename DirectedS::is_directed_t DirectedT;
982.2244 -      typedef typename DirectedS::is_bidir_t BidirectionalT;
982.2245 -
982.2246 -      struct config
982.2247 -      {
982.2248 -        typedef OutEdgeListS edgelist_selector;
982.2249 -        typedef EdgeListS global_edgelist_selector;
982.2250 -
982.2251 -        typedef Graph graph_type;
982.2252 -        typedef EdgeProperty edge_property_type;
982.2253 -        typedef VertexProperty vertex_property_type;
982.2254 -        typedef GraphProperty graph_property_type;
982.2255 -        typedef std::size_t vertices_size_type;
982.2256 -
982.2257 -        typedef adjacency_list_traits<OutEdgeListS, VertexListS, DirectedS> 
982.2258 -           Traits;
982.2259 -
982.2260 -        typedef typename Traits::directed_category directed_category;
982.2261 -        typedef typename Traits::edge_parallel_category edge_parallel_category;
982.2262 -        typedef typename Traits::vertex_descriptor vertex_descriptor;
982.2263 -        typedef typename Traits::edge_descriptor edge_descriptor;
982.2264 -
982.2265 -        typedef void* vertex_ptr; 
982.2266 -
982.2267 -        // need to reorganize this to avoid instantiating stuff
982.2268 -        // that doesn't get used -JGS
982.2269 -
982.2270 -        // VertexList and vertex_iterator
982.2271 -        typedef typename container_gen<VertexListS, 
982.2272 -          vertex_ptr>::type SeqVertexList;
982.2273 -        typedef boost::integer_range<std::size_t> RandVertexList;
982.2274 -        typedef typename boost::ct_if_t<is_rand_access,
982.2275 -          RandVertexList, SeqVertexList>::type VertexList;
982.2276 -
982.2277 -        typedef typename VertexList::iterator vertex_iterator;
982.2278 -
982.2279 -        // EdgeContainer and StoredEdge
982.2280 -
982.2281 -        typedef typename container_gen<EdgeListS, 
982.2282 -          list_edge<vertex_descriptor, EdgeProperty> >::type EdgeContainer;
982.2283 -
982.2284 -        typedef typename ct_and<DirectedT, 
982.2285 -             typename ct_not<BidirectionalT>::type >::type on_edge_storage;
982.2286 -
982.2287 -        typedef typename boost::ct_if_t<on_edge_storage,
982.2288 -          std::size_t, typename EdgeContainer::size_type
982.2289 -        >::type edges_size_type;
982.2290 -
982.2291 -        typedef typename EdgeContainer::iterator EdgeIter;
982.2292 -
982.2293 -        typedef typename detail::is_random_access<EdgeListS>::type is_edge_ra;
982.2294 -
982.2295 -        typedef typename boost::ct_if_t<on_edge_storage,
982.2296 -          stored_edge_property<vertex_descriptor, EdgeProperty>,
982.2297 -          typename boost::ct_if_t<is_edge_ra,
982.2298 -            stored_ra_edge_iter<vertex_descriptor, EdgeContainer, EdgeProperty>,
982.2299 -            stored_edge_iter<vertex_descriptor, EdgeIter, EdgeProperty>
982.2300 -          >::type
982.2301 -        >::type StoredEdge;
982.2302 -
982.2303 -        // Adjacency Types
982.2304 -
982.2305 -        typedef typename container_gen<OutEdgeListS, StoredEdge>::type 
982.2306 -          OutEdgeList;
982.2307 -        typedef typename OutEdgeList::size_type degree_size_type;
982.2308 -        typedef typename OutEdgeList::iterator OutEdgeIter;
982.2309 -
982.2310 -        typedef boost::detail::iterator_traits<OutEdgeIter> OutEdgeIterTraits;
982.2311 -        typedef typename OutEdgeIterTraits::iterator_category OutEdgeIterCat;
982.2312 -        typedef typename OutEdgeIterTraits::difference_type OutEdgeIterDiff;
982.2313 -
982.2314 -        typedef out_edge_iter<
982.2315 -            OutEdgeIter, vertex_descriptor, edge_descriptor, OutEdgeIterDiff
982.2316 -        > out_edge_iterator;
982.2317 -
982.2318 -        typedef typename adjacency_iterator_generator<graph_type,
982.2319 -           vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
982.2320 -
982.2321 -        typedef OutEdgeList InEdgeList;
982.2322 -        typedef OutEdgeIter InEdgeIter;
982.2323 -        typedef OutEdgeIterCat InEdgeIterCat;
982.2324 -        typedef OutEdgeIterDiff InEdgeIterDiff;
982.2325 -
982.2326 -        typedef in_edge_iter<
982.2327 -            InEdgeIter, vertex_descriptor, edge_descriptor, InEdgeIterDiff
982.2328 -        > in_edge_iterator;
982.2329 -
982.2330 -        typedef typename inv_adjacency_iterator_generator<graph_type,
982.2331 -           vertex_descriptor, in_edge_iterator>::type inv_adjacency_iterator;
982.2332 -
982.2333 -        // Edge Iterator
982.2334 -
982.2335 -        typedef boost::detail::iterator_traits<EdgeIter> EdgeIterTraits;
982.2336 -        typedef typename EdgeIterTraits::iterator_category EdgeIterCat;
982.2337 -        typedef typename EdgeIterTraits::difference_type EdgeIterDiff;
982.2338 -
982.2339 -        typedef undirected_edge_iter<
982.2340 -            EdgeIter
982.2341 -          , edge_descriptor
982.2342 -          , EdgeIterDiff          
982.2343 -        > UndirectedEdgeIter; // also used for bidirectional
982.2344 -
982.2345 -        typedef adj_list_edge_iterator<vertex_iterator, out_edge_iterator, 
982.2346 -           graph_type> DirectedEdgeIter;
982.2347 -
982.2348 -        typedef typename boost::ct_if_t<on_edge_storage,
982.2349 -          DirectedEdgeIter, UndirectedEdgeIter>::type edge_iterator;
982.2350 -
982.2351 -        // stored_vertex and StoredVertexList
982.2352 -        typedef typename container_gen<VertexListS, vertex_ptr>::type
982.2353 -          SeqStoredVertexList;
982.2354 -        struct seq_stored_vertex {
982.2355 -          seq_stored_vertex() { }
982.2356 -          seq_stored_vertex(const VertexProperty& p) : m_property(p) { }
982.2357 -          OutEdgeList m_out_edges;
982.2358 -          VertexProperty m_property;
982.2359 -          typename SeqStoredVertexList::iterator m_position;
982.2360 -        };
982.2361 -        struct bidir_seq_stored_vertex {
982.2362 -          bidir_seq_stored_vertex() { }
982.2363 -          bidir_seq_stored_vertex(const VertexProperty& p) : m_property(p) { }
982.2364 -          OutEdgeList m_out_edges;
982.2365 -          InEdgeList m_in_edges;
982.2366 -          VertexProperty m_property;
982.2367 -          typename SeqStoredVertexList::iterator m_position;
982.2368 -        };
982.2369 -        struct rand_stored_vertex {
982.2370 -          rand_stored_vertex() { }
982.2371 -          rand_stored_vertex(const VertexProperty& p) : m_property(p) { }
982.2372 -          OutEdgeList m_out_edges;
982.2373 -          VertexProperty m_property;
982.2374 -        };
982.2375 -        struct bidir_rand_stored_vertex {
982.2376 -          bidir_rand_stored_vertex() { }
982.2377 -          bidir_rand_stored_vertex(const VertexProperty& p) : m_property(p) { }
982.2378 -          OutEdgeList m_out_edges;
982.2379 -          InEdgeList m_in_edges;
982.2380 -          VertexProperty m_property;
982.2381 -        };
982.2382 -        typedef typename boost::ct_if_t<is_rand_access,
982.2383 -          typename boost::ct_if_t<BidirectionalT,
982.2384 -            bidir_rand_stored_vertex, rand_stored_vertex>::type,
982.2385 -          typename boost::ct_if_t<BidirectionalT,
982.2386 -            bidir_seq_stored_vertex, seq_stored_vertex>::type
982.2387 -        >::type StoredVertex;
982.2388 -        struct stored_vertex : public StoredVertex {
982.2389 -          stored_vertex() { }
982.2390 -          stored_vertex(const VertexProperty& p) : StoredVertex(p) { }
982.2391 -        };
982.2392 -
982.2393 -        typedef typename container_gen<VertexListS, stored_vertex>::type
982.2394 -          RandStoredVertexList;
982.2395 -        typedef typename boost::ct_if_t< is_rand_access,
982.2396 -          RandStoredVertexList, SeqStoredVertexList>::type StoredVertexList;
982.2397 -      }; // end of config
982.2398 -
982.2399 -
982.2400 -      typedef typename boost::ct_if_t<BidirectionalT,
982.2401 -        bidirectional_graph_helper_with_property<config>,
982.2402 -        typename boost::ct_if_t<DirectedT,
982.2403 -          directed_graph_helper<config>,
982.2404 -          undirected_graph_helper<config>
982.2405 -        >::type
982.2406 -      >::type DirectedHelper;
982.2407 -
982.2408 -      typedef typename boost::ct_if_t<is_rand_access,
982.2409 -        vec_adj_list_impl<Graph, config, DirectedHelper>,
982.2410 -        adj_list_impl<Graph, config, DirectedHelper>
982.2411 -      >::type type;
982.2412 -
982.2413 -    };
982.2414 -
982.2415 -  } // namespace detail
982.2416 -
982.2417 -    //=========================================================================
982.2418 -    // Vertex Property Maps
982.2419 -
982.2420 -    template <class Graph, class ValueType, class Reference, class Tag>
982.2421 -    struct adj_list_vertex_property_map
982.2422 -      : public boost::put_get_helper<
982.2423 -          Reference,
982.2424 -          adj_list_vertex_property_map<Graph, ValueType, Reference, Tag>
982.2425 -        >
982.2426 -    {
982.2427 -      typedef typename Graph::stored_vertex StoredVertex;
982.2428 -      typedef ValueType value_type;
982.2429 -      typedef Reference reference;
982.2430 -      typedef typename Graph::vertex_descriptor key_type;
982.2431 -      typedef boost::lvalue_property_map_tag category;
982.2432 -      inline adj_list_vertex_property_map() { }
982.2433 -      inline adj_list_vertex_property_map(const Graph*) { }
982.2434 -      inline Reference operator[](key_type v) const {
982.2435 -        StoredVertex* sv = (StoredVertex*)v;
982.2436 -        return get_property_value(sv->m_property, Tag());
982.2437 -      }
982.2438 -      inline Reference operator()(key_type v) const {
982.2439 -        return this->operator[](v);
982.2440 -      }
982.2441 -    };
982.2442 -
982.2443 -    template <class Graph, class Property, class PropRef>
982.2444 -    struct adj_list_vertex_all_properties_map
982.2445 -      : public boost::put_get_helper<PropRef,
982.2446 -          adj_list_vertex_all_properties_map<Graph, Property, PropRef>
982.2447 -        >
982.2448 -    {
982.2449 -      typedef typename Graph::stored_vertex StoredVertex;
982.2450 -      typedef Property value_type;
982.2451 -      typedef PropRef reference;
982.2452 -      typedef typename Graph::vertex_descriptor key_type;
982.2453 -      typedef boost::lvalue_property_map_tag category;
982.2454 -      inline adj_list_vertex_all_properties_map() { }
982.2455 -      inline adj_list_vertex_all_properties_map(const Graph*) { }
982.2456 -      inline PropRef operator[](key_type v) const {
982.2457 -        StoredVertex* sv = (StoredVertex*)v;
982.2458 -        return sv->m_property;
982.2459 -      }
982.2460 -      inline PropRef operator()(key_type v) const {
982.2461 -        return this->operator[](v);
982.2462 -      }
982.2463 -    };
982.2464 -
982.2465 -    template <class Graph, class GraphPtr, class ValueType, class Reference,
982.2466 -              class Tag>
982.2467 -    struct vec_adj_list_vertex_property_map
982.2468 -      : public boost::put_get_helper<
982.2469 -          Reference,
982.2470 -          vec_adj_list_vertex_property_map<Graph,GraphPtr,ValueType,Reference,
982.2471 -             Tag>
982.2472 -        >
982.2473 -    {
982.2474 -      typedef ValueType value_type;
982.2475 -      typedef Reference reference;
982.2476 -      typedef typename boost::graph_traits<Graph>::vertex_descriptor key_type;
982.2477 -      typedef boost::lvalue_property_map_tag category;
982.2478 -      vec_adj_list_vertex_property_map() { }
982.2479 -      vec_adj_list_vertex_property_map(GraphPtr g) : m_g(g) { }
982.2480 -      inline Reference operator[](key_type v) const {
982.2481 -        return get_property_value(m_g->m_vertices[v].m_property,  Tag());
982.2482 -      }
982.2483 -      inline Reference operator()(key_type v) const {
982.2484 -        return this->operator[](v);
982.2485 -      }
982.2486 -      GraphPtr m_g;
982.2487 -    };
982.2488 -
982.2489 -    template <class Graph, class GraphPtr, class Property, class PropertyRef>
982.2490 -    struct vec_adj_list_vertex_all_properties_map
982.2491 -      : public boost::put_get_helper<PropertyRef,
982.2492 -          vec_adj_list_vertex_all_properties_map<Graph,GraphPtr,Property,
982.2493 -            PropertyRef>
982.2494 -        >
982.2495 -    {
982.2496 -      typedef Property value_type;
982.2497 -      typedef PropertyRef reference;
982.2498 -      typedef typename boost::graph_traits<Graph>::vertex_descriptor key_type;
982.2499 -      typedef boost::lvalue_property_map_tag category;
982.2500 -      vec_adj_list_vertex_all_properties_map() { }
982.2501 -      vec_adj_list_vertex_all_properties_map(GraphPtr g) : m_g(g) { }
982.2502 -      inline PropertyRef operator[](key_type v) const {
982.2503 -        return m_g->m_vertices[v].m_property;
982.2504 -      }
982.2505 -      inline PropertyRef operator()(key_type v) const {
982.2506 -        return this->operator[](v);
982.2507 -      }
982.2508 -      GraphPtr m_g;
982.2509 -    };
982.2510 -
982.2511 -    struct adj_list_any_vertex_pa {
982.2512 -      template <class Tag, class Graph, class Property>
982.2513 -      struct bind_ {
982.2514 -        typedef typename property_value<Property, Tag>::type value_type;
982.2515 -        typedef value_type& reference;
982.2516 -        typedef const value_type& const_reference;
982.2517 -
982.2518 -        typedef adj_list_vertex_property_map
982.2519 -          <Graph, value_type, reference, Tag> type;
982.2520 -        typedef adj_list_vertex_property_map
982.2521 -          <Graph, value_type, const_reference, Tag> const_type;
982.2522 -      };
982.2523 -    };
982.2524 -    struct adj_list_all_vertex_pa {
982.2525 -      template <class Tag, class Graph, class Property>
982.2526 -      struct bind_ {
982.2527 -        typedef typename Graph::vertex_descriptor Vertex;
982.2528 -        typedef adj_list_vertex_all_properties_map<Graph,Property,
982.2529 -          Property&> type;
982.2530 -        typedef adj_list_vertex_all_properties_map<Graph,Property,
982.2531 -          const Property&> const_type;
982.2532 -      };
982.2533 -    };
982.2534 -
982.2535 -    template <class Property, class Vertex>
982.2536 -    struct vec_adj_list_vertex_id_map
982.2537 -      : public boost::put_get_helper<
982.2538 -          Vertex, vec_adj_list_vertex_id_map<Property, Vertex>
982.2539 -        >
982.2540 -    {
982.2541 -      typedef Vertex value_type;
982.2542 -      typedef Vertex key_type;
982.2543 -      typedef Vertex reference;
982.2544 -      typedef boost::readable_property_map_tag category;
982.2545 -      inline vec_adj_list_vertex_id_map() { }
982.2546 -      template <class Graph>
982.2547 -      inline vec_adj_list_vertex_id_map(const Graph&) { }
982.2548 -      inline value_type operator[](key_type v) const { return v; }
982.2549 -      inline value_type operator()(key_type v) const { return v; }
982.2550 -    };
982.2551 -
982.2552 -    struct vec_adj_list_any_vertex_pa {
982.2553 -      template <class Tag, class Graph, class Property>
982.2554 -      struct bind_ {
982.2555 -        typedef typename property_value<Property, Tag>::type value_type;
982.2556 -        typedef value_type& reference;
982.2557 -        typedef const value_type& const_reference;
982.2558 -
982.2559 -        typedef vec_adj_list_vertex_property_map
982.2560 -          <Graph, Graph*, value_type, reference, Tag> type;
982.2561 -        typedef vec_adj_list_vertex_property_map
982.2562 -          <Graph, const Graph*, value_type, const_reference, Tag> const_type;
982.2563 -      };
982.2564 -    };
982.2565 -    struct vec_adj_list_id_vertex_pa {
982.2566 -      template <class Tag, class Graph, class Property>
982.2567 -      struct bind_ {
982.2568 -        typedef typename Graph::vertex_descriptor Vertex;
982.2569 -        typedef vec_adj_list_vertex_id_map<Property, Vertex> type;
982.2570 -        typedef vec_adj_list_vertex_id_map<Property, Vertex> const_type;
982.2571 -      };
982.2572 -    };
982.2573 -    struct vec_adj_list_all_vertex_pa {
982.2574 -      template <class Tag, class Graph, class Property>
982.2575 -      struct bind_ {
982.2576 -        typedef typename Graph::vertex_descriptor Vertex;
982.2577 -        typedef vec_adj_list_vertex_all_properties_map
982.2578 -          <Graph, Graph*, Property, Property&> type;
982.2579 -        typedef vec_adj_list_vertex_all_properties_map
982.2580 -          <Graph, const Graph*, Property, const Property&> const_type;
982.2581 -      };
982.2582 -    };
982.2583 -  namespace detail {
982.2584 -    template <class Tag>
982.2585 -    struct adj_list_choose_vertex_pa_helper {
982.2586 -      typedef adj_list_any_vertex_pa type;
982.2587 -    };
982.2588 -    template <>
982.2589 -    struct adj_list_choose_vertex_pa_helper<vertex_all_t> {
982.2590 -      typedef adj_list_all_vertex_pa type;
982.2591 -    };
982.2592 -    template <class Tag, class Graph, class Property>
982.2593 -    struct adj_list_choose_vertex_pa {
982.2594 -      typedef typename adj_list_choose_vertex_pa_helper<Tag>::type Helper;
982.2595 -      typedef typename Helper::template bind_<Tag,Graph,Property> Bind;
982.2596 -      typedef typename Bind::type type;
982.2597 -      typedef typename Bind::const_type const_type;
982.2598 -    };
982.2599 -
982.2600 -
982.2601 -    template <class Tag>
982.2602 -    struct vec_adj_list_choose_vertex_pa_helper {
982.2603 -      typedef vec_adj_list_any_vertex_pa type;
982.2604 -    };
982.2605 -    template <>
982.2606 -    struct vec_adj_list_choose_vertex_pa_helper<vertex_index_t> {
982.2607 -      typedef vec_adj_list_id_vertex_pa type;
982.2608 -    };
982.2609 -    template <>
982.2610 -    struct vec_adj_list_choose_vertex_pa_helper<vertex_all_t> {
982.2611 -      typedef vec_adj_list_all_vertex_pa type;
982.2612 -    };
982.2613 -    template <class Tag, class Graph, class Property>
982.2614 -    struct vec_adj_list_choose_vertex_pa {
982.2615 -      typedef typename vec_adj_list_choose_vertex_pa_helper<Tag>::type Helper;
982.2616 -      typedef typename Helper::template bind_<Tag,Graph,Property> Bind;
982.2617 -      typedef typename Bind::type type;
982.2618 -      typedef typename Bind::const_type const_type;
982.2619 -    };
982.2620 -  } // namespace detail
982.2621 -    
982.2622 -    //=========================================================================
982.2623 -    // Edge Property Map
982.2624 -
982.2625 -    template <class Directed, class Value, class Ref, class Vertex,
982.2626 -              class Property, class Tag>
982.2627 -    struct adj_list_edge_property_map
982.2628 -      : public put_get_helper< 
982.2629 -          Ref,
982.2630 -          adj_list_edge_property_map<Directed, Value, Ref, Vertex, Property, 
982.2631 -            Tag>
982.2632 -        >
982.2633 -    {
982.2634 -      typedef Value value_type;
982.2635 -      typedef Ref reference;
982.2636 -      typedef detail::edge_desc_impl<Directed, Vertex> key_type;
982.2637 -      typedef boost::lvalue_property_map_tag category;
982.2638 -      inline Ref operator[](key_type e) const {
982.2639 -        Property& p = *(Property*)e.get_property();
982.2640 -        return get_property_value(p, Tag());
982.2641 -      }
982.2642 -      inline Ref operator()(key_type e) const {
982.2643 -        return this->operator[](e);
982.2644 -      }
982.2645 -    };
982.2646 -
982.2647 -    template <class Directed, class Property, class PropRef, class PropPtr,
982.2648 -      class Vertex>
982.2649 -    struct adj_list_edge_all_properties_map
982.2650 -      : public put_get_helper<PropRef,
982.2651 -          adj_list_edge_all_properties_map<Directed, Property, PropRef, 
982.2652 -            PropPtr, Vertex>
982.2653 -        >
982.2654 -    {
982.2655 -      typedef Property value_type;
982.2656 -      typedef PropRef reference;
982.2657 -      typedef detail::edge_desc_impl<Directed, Vertex> key_type;
982.2658 -      typedef boost::lvalue_property_map_tag category;
982.2659 -      inline PropRef operator[](key_type e) const {
982.2660 -        return *(PropPtr)e.get_property();
982.2661 -      }
982.2662 -      inline PropRef operator()(key_type e) const {
982.2663 -        return this->operator[](e);
982.2664 -      }
982.2665 -    };
982.2666 -
982.2667 -  // Edge Property Maps
982.2668 -
982.2669 -  namespace detail {
982.2670 -    struct adj_list_any_edge_pmap {
982.2671 -      template <class Graph, class Property, class Tag>
982.2672 -      struct bind_ {
982.2673 -        typedef typename property_value<Property,Tag>::type value_type;
982.2674 -        typedef value_type& reference;
982.2675 -        typedef const value_type& const_reference;
982.2676 -        
982.2677 -        typedef adj_list_edge_property_map
982.2678 -           <typename Graph::directed_category, value_type, reference, 
982.2679 -            typename Graph::vertex_descriptor,Property,Tag> type;
982.2680 -        typedef adj_list_edge_property_map
982.2681 -           <typename Graph::directed_category, value_type, const_reference, 
982.2682 -            typename Graph::vertex_descriptor,const Property, Tag> const_type;
982.2683 -      };
982.2684 -    };
982.2685 -    struct adj_list_all_edge_pmap {
982.2686 -      template <class Graph, class Property, class Tag>
982.2687 -      struct bind_ {
982.2688 -        typedef adj_list_edge_all_properties_map
982.2689 -        <typename Graph::directed_category, Property, Property&, Property*,
982.2690 -            typename Graph::vertex_descriptor> type;
982.2691 -        typedef adj_list_edge_all_properties_map
982.2692 -        <typename Graph::directed_category, Property, const Property&, 
982.2693 -            const Property*, typename Graph::vertex_descriptor> const_type;
982.2694 -      };
982.2695 -    };
982.2696 -
982.2697 -    template <class Tag>
982.2698 -    struct adj_list_choose_edge_pmap_helper {
982.2699 -      typedef adj_list_any_edge_pmap type;
982.2700 -    };
982.2701 -    template <>
982.2702 -    struct adj_list_choose_edge_pmap_helper<edge_all_t> {
982.2703 -      typedef adj_list_all_edge_pmap type;
982.2704 -    };
982.2705 -    template <class Tag, class Graph, class Property>
982.2706 -    struct adj_list_choose_edge_pmap {
982.2707 -      typedef typename adj_list_choose_edge_pmap_helper<Tag>::type Helper;
982.2708 -      typedef typename Helper::template bind_<Graph,Property,Tag> Bind;
982.2709 -      typedef typename Bind::type type;
982.2710 -      typedef typename Bind::const_type const_type;
982.2711 -    };
982.2712 -    struct adj_list_edge_property_selector {
982.2713 -      template <class Graph, class Property, class Tag>
982.2714 -      struct bind_ {
982.2715 -        typedef adj_list_choose_edge_pmap<Tag,Graph,Property> Choice;
982.2716 -        typedef typename Choice::type type;
982.2717 -        typedef typename Choice::const_type const_type;
982.2718 -      };
982.2719 -    };
982.2720 -  } // namespace detail
982.2721 -
982.2722 -  template <>  
982.2723 -  struct edge_property_selector<adj_list_tag> {
982.2724 -    typedef detail::adj_list_edge_property_selector type;
982.2725 -  };
982.2726 -  template <>  
982.2727 -  struct edge_property_selector<vec_adj_list_tag> {
982.2728 -    typedef detail::adj_list_edge_property_selector type;
982.2729 -  };
982.2730 -
982.2731 -  // Vertex Property Maps
982.2732 -
982.2733 -  struct adj_list_vertex_property_selector {
982.2734 -    template <class Graph, class Property, class Tag>
982.2735 -    struct bind_ {
982.2736 -      typedef detail::adj_list_choose_vertex_pa<Tag,Graph,Property> Choice;
982.2737 -      typedef typename Choice::type type;
982.2738 -      typedef typename Choice::const_type const_type;
982.2739 -    };
982.2740 -  };
982.2741 -  template <>  
982.2742 -  struct vertex_property_selector<adj_list_tag> {
982.2743 -    typedef adj_list_vertex_property_selector type;
982.2744 -  };
982.2745 -
982.2746 -  struct vec_adj_list_vertex_property_selector {
982.2747 -    template <class Graph, class Property, class Tag>
982.2748 -    struct bind_ {
982.2749 -      typedef detail::vec_adj_list_choose_vertex_pa<Tag,Graph,Property> Choice;
982.2750 -      typedef typename Choice::type type;
982.2751 -      typedef typename Choice::const_type const_type;
982.2752 -    };
982.2753 -  };
982.2754 -  template <>  
982.2755 -  struct vertex_property_selector<vec_adj_list_tag> {
982.2756 -    typedef vec_adj_list_vertex_property_selector type;
982.2757 -  };
982.2758 -
982.2759 -} // namespace boost
982.2760 -
982.2761 -#if !defined(BOOST_NO_HASH) && !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
982.2762 -namespace BOOST_STD_EXTENSION_NAMESPACE {
982.2763 -
982.2764 -  #if BOOST_WORKAROUND( _STLPORT_VERSION, >= 0x500 )
982.2765 -  // STLport 5 already defines a hash<void*> specialization.
982.2766 -  #else
982.2767 -  template <>
982.2768 -  struct hash< void* > // Need this when vertex_descriptor=void*
982.2769 -  {
982.2770 -    std::size_t
982.2771 -    operator()(void* v) const { return (std::size_t)v; }
982.2772 -  };
982.2773 -  #endif
982.2774 -
982.2775 -  template <typename V>
982.2776 -  struct hash< boost::detail::stored_edge<V> > 
982.2777 -  {
982.2778 -    std::size_t
982.2779 -    operator()(const boost::detail::stored_edge<V>& e) const
982.2780 -    {
982.2781 -      return hash<V>()(e.m_target);
982.2782 -    }
982.2783 -  };
982.2784 -
982.2785 -  template <typename V, typename P>
982.2786 -  struct hash< boost::detail::stored_edge_property <V,P> > 
982.2787 -  {
982.2788 -    std::size_t
982.2789 -    operator()(const boost::detail::stored_edge_property<V,P>& e) const
982.2790 -    {
982.2791 -      return hash<V>()(e.m_target);
982.2792 -    }
982.2793 -  };
982.2794 -
982.2795 -  template <typename V, typename I, typename P>
982.2796 -  struct hash< boost::detail::stored_edge_iter<V,I, P> > 
982.2797 -  {
982.2798 -    std::size_t
982.2799 -    operator()(const boost::detail::stored_edge_iter<V,I,P>& e) const
982.2800 -    {
982.2801 -      return hash<V>()(e.m_target);
982.2802 -    }
982.2803 -  };
982.2804 -
982.2805 -}
982.2806 -#endif
982.2807 -
982.2808 -
982.2809 -#undef stored_edge
982.2810 -#undef stored_edge_property
982.2811 -#undef stored_edge_iter
982.2812 -
982.2813 -#endif // BOOST_GRAPH_DETAIL_DETAIL_ADJACENCY_LIST_CCT
982.2814 -
982.2815 -/*
982.2816 -  Implementation Notes:
982.2817 -  
982.2818 -  Many of the public interface functions in this file would have been
982.2819 -  more conveniently implemented as inline friend functions.
982.2820 -  However there are a few compiler bugs that make that approach
982.2821 -  non-portable.
982.2822 - 
982.2823 -  1. g++ inline friend in namespace bug
982.2824 -  2. g++ using clause doesn't work with inline friends
982.2825 -  3. VC++ doesn't have Koenig lookup
982.2826 -
982.2827 -  For these reasons, the functions were all written as non-inline free 
982.2828 -  functions, and static cast was used to convert from the helper
982.2829 -  class to the adjacency_list derived class.
982.2830 -
982.2831 -  Looking back, it might have been better to write out all functions
982.2832 -  in terms of the adjacency_list, and then use a tag to dispatch
982.2833 -  to the various helpers instead of using inheritance.
982.2834 -
982.2835 - */
   983.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   983.2 +++ b/epoc32/include/stdapis/boost/graph/detail/incremental_components.hpp	Wed Mar 31 12:27:01 2010 +0100
   983.3 @@ -0,0 +1,170 @@
   983.4 +//
   983.5 +//=======================================================================
   983.6 +// Copyright 1997-2001 University of Notre Dame.
   983.7 +// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
   983.8 +//
   983.9 +// Distributed under the Boost Software License, Version 1.0. (See
  983.10 +// accompanying file LICENSE_1_0.txt or copy at
  983.11 +// http://www.boost.org/LICENSE_1_0.txt)
  983.12 +//=======================================================================
  983.13 +//
  983.14 +
  983.15 +#ifndef BOOST_INCREMENTAL_COMPONENTS_HPP
  983.16 +#define BOOST_INCREMENTAL_COMPONENTS_HPP
  983.17 +
  983.18 +#include <boost/detail/iterator.hpp>
  983.19 +#include <boost/graph/detail/incremental_components.hpp>
  983.20 +
  983.21 +namespace boost {
  983.22 +
  983.23 +  // A connected component algorithm for the case when dynamically
  983.24 +  // adding (but not removing) edges is common.  The
  983.25 +  // incremental_components() function is a preparing operation. Call
  983.26 +  // same_component to check whether two vertices are in the same
  983.27 +  // component, or use disjoint_set::find_set to determine the
  983.28 +  // representative for a vertex.
  983.29 +
  983.30 +  // This version of connected components does not require a full
  983.31 +  // Graph. Instead, it just needs an edge list, where the vertices of
  983.32 +  // each edge need to be of integer type. The edges are assumed to
  983.33 +  // be undirected. The other difference is that the result is stored in
  983.34 +  // a container, instead of just a decorator.  The container should be
  983.35 +  // empty before the algorithm is called. It will grow during the
  983.36 +  // course of the algorithm. The container must be a model of
  983.37 +  // BackInsertionSequence and RandomAccessContainer
  983.38 +  // (std::vector is a good choice). After running the algorithm the
  983.39 +  // index container will map each vertex to the representative
  983.40 +  // vertex of the component to which it belongs.
  983.41 +  //
  983.42 +  // Adapted from an implementation by Alex Stepanov. The disjoint
  983.43 +  // sets data structure is from Tarjan's "Data Structures and Network
  983.44 +  // Algorithms", and the application to connected components is
  983.45 +  // similar to the algorithm described in Ch. 22 of "Intro to
  983.46 +  // Algorithms" by Cormen, et. all.
  983.47 +  //  
  983.48 +  // RankContainer is a random accessable container (operator[] is
  983.49 +  // defined) with a value type that can represent an integer part of
  983.50 +  // a binary log of the value type of the corresponding
  983.51 +  // ParentContainer (char is always enough) its size_type is no less
  983.52 +  // than the size_type of the corresponding ParentContainer
  983.53 +
  983.54 +  // An implementation of disjoint sets can be found in
  983.55 +  // boost/pending/disjoint_sets.hpp
  983.56 +  
  983.57 +  template <class EdgeListGraph, class DisjointSets>
  983.58 +  void incremental_components(EdgeListGraph& g, DisjointSets& ds)
  983.59 +  {
  983.60 +    typename graph_traits<EdgeListGraph>::edge_iterator e, end;
  983.61 +    for (tie(e,end) = edges(g); e != end; ++e)
  983.62 +      ds.union_set(source(*e,g),target(*e,g));
  983.63 +  }
  983.64 +  
  983.65 +  template <class ParentIterator>
  983.66 +  void compress_components(ParentIterator first, ParentIterator last)
  983.67 +  {
  983.68 +    for (ParentIterator current = first; current != last; ++current) 
  983.69 +      detail::find_representative_with_full_compression(first, current-first);
  983.70 +  }
  983.71 +  
  983.72 +  template <class ParentIterator>
  983.73 +  typename boost::detail::iterator_traits<ParentIterator>::difference_type
  983.74 +  component_count(ParentIterator first, ParentIterator last)
  983.75 +  {
  983.76 +    std::ptrdiff_t count = 0;
  983.77 +    for (ParentIterator current = first; current != last; ++current) 
  983.78 +      if (*current == current - first) ++count; 
  983.79 +    return count;
  983.80 +  }
  983.81 +  
  983.82 +  // This algorithm can be applied to the result container of the
  983.83 +  // connected_components algorithm to normalize
  983.84 +  // the components.
  983.85 +  template <class ParentIterator>
  983.86 +  void normalize_components(ParentIterator first, ParentIterator last)
  983.87 +  {
  983.88 +    for (ParentIterator current = first; current != last; ++current) 
  983.89 +      detail::normalize_node(first, current - first);
  983.90 +  }
  983.91 +  
  983.92 +  template <class VertexListGraph, class DisjointSets> 
  983.93 +  void initialize_incremental_components(VertexListGraph& G, DisjointSets& ds)
  983.94 +  {
  983.95 +    typename graph_traits<VertexListGraph>
  983.96 +      ::vertex_iterator v, vend;
  983.97 +    for (tie(v, vend) = vertices(G); v != vend; ++v)
  983.98 +      ds.make_set(*v);
  983.99 +  }
 983.100 +
 983.101 +  template <class Vertex, class DisjointSet>
 983.102 +  inline bool same_component(Vertex u, Vertex v, DisjointSet& ds)
 983.103 +  {
 983.104 +    return ds.find_set(u) == ds.find_set(v);
 983.105 +  }
 983.106 +
 983.107 +  // considering changing the so that it initializes with a pair of
 983.108 +  // vertex iterators and a parent PA.
 983.109 +  
 983.110 +  template <class IndexT>
 983.111 +  class component_index
 983.112 +  {
 983.113 +  public://protected: (avoid friends for now)
 983.114 +    typedef std::vector<IndexT> MyIndexContainer;
 983.115 +    MyIndexContainer header;
 983.116 +    MyIndexContainer index;
 983.117 +    typedef typename MyIndexContainer::size_type SizeT;
 983.118 +    typedef typename MyIndexContainer::const_iterator IndexIter;
 983.119 +  public:
 983.120 +    typedef detail::component_iterator<IndexIter, IndexT, SizeT> 
 983.121 +      component_iterator;
 983.122 +    class component {
 983.123 +      friend class component_index;
 983.124 +    protected:
 983.125 +      IndexT number;
 983.126 +      const component_index<IndexT>* comp_ind_ptr;
 983.127 +      component(IndexT i, const component_index<IndexT>* p) 
 983.128 +        : number(i), comp_ind_ptr(p) {}
 983.129 +    public:
 983.130 +      typedef component_iterator iterator;
 983.131 +      typedef component_iterator const_iterator;
 983.132 +      typedef IndexT value_type;
 983.133 +      iterator begin() const {
 983.134 +        return iterator( comp_ind_ptr->index.begin(),
 983.135 +                         (comp_ind_ptr->header)[number] );
 983.136 +      }
 983.137 +      iterator end() const {
 983.138 +        return iterator( comp_ind_ptr->index.begin(), 
 983.139 +                         comp_ind_ptr->index.size() );
 983.140 +      }
 983.141 +    };
 983.142 +    typedef SizeT size_type;
 983.143 +    typedef component value_type;
 983.144 +    
 983.145 +#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
 983.146 +    template <class Iterator>
 983.147 +    component_index(Iterator first, Iterator last) 
 983.148 +    : index(std::distance(first, last))
 983.149 +    { 
 983.150 +      std::copy(first, last, index.begin());
 983.151 +      detail::construct_component_index(index, header);
 983.152 +    }
 983.153 +#else
 983.154 +    template <class Iterator>
 983.155 +    component_index(Iterator first, Iterator last) 
 983.156 +      : index(first, last)
 983.157 +    { 
 983.158 +      detail::construct_component_index(index, header);
 983.159 +    }
 983.160 +#endif
 983.161 +
 983.162 +    component operator[](IndexT i) const {
 983.163 +      return component(i, this);
 983.164 +    }
 983.165 +    SizeT size() const {
 983.166 +      return header.size();
 983.167 +    }
 983.168 +    
 983.169 +  };
 983.170 +
 983.171 +} // namespace boost
 983.172 +
 983.173 +#endif // BOOST_INCREMENTAL_COMPONENTS_HPP
   984.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   984.2 +++ b/epoc32/include/stdapis/boost/graph/detail/is_same.hpp	Wed Mar 31 12:27:01 2010 +0100
   984.3 @@ -0,0 +1,103 @@
   984.4 +
   984.5 +//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
   984.6 +//      Howard Hinnant and John Maddock 2000. 
   984.7 +//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
   984.8 +
   984.9 +//  Use, modification and distribution are subject to the Boost Software License,
  984.10 +//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  984.11 +//  http://www.boost.org/LICENSE_1_0.txt).
  984.12 +//
  984.13 +//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
  984.14 +
  984.15 +//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
  984.16 +//    is_member_pointer based on the Simulated Partial Specialization work 
  984.17 +//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
  984.18 +//    http://groups.yahoo.com/group/boost/message/5441 
  984.19 +//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
  984.20 +//    Mappings between Types and Values" 
  984.21 +//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
  984.22 +
  984.23 +
  984.24 +#ifndef BOOST_TT_IS_SAME_HPP_INCLUDED
  984.25 +#define BOOST_TT_IS_SAME_HPP_INCLUDED
  984.26 +
  984.27 +#include <boost/type_traits/config.hpp>
  984.28 +#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  984.29 +#include <boost/type_traits/detail/yes_no_type.hpp>
  984.30 +#include <boost/type_traits/detail/ice_and.hpp>
  984.31 +#include <boost/type_traits/is_reference.hpp>
  984.32 +#endif
  984.33 +// should be the last #include
  984.34 +#include <boost/type_traits/detail/bool_trait_def.hpp>
  984.35 +
  984.36 +namespace boost {
  984.37 +
  984.38 +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  984.39 +
  984.40 +BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,false)
  984.41 +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T,T,true)
  984.42 +#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
  984.43 +// without this, Borland's compiler gives the wrong answer for
  984.44 +// references to arrays:
  984.45 +BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T&,T&,true)
  984.46 +#endif
  984.47 +
  984.48 +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
  984.49 +
  984.50 +namespace detail {
  984.51 +
  984.52 +#ifdef BOOST_MSVC
  984.53 +// the following VC6 specific implementation is *NOT* legal
  984.54 +// C++, but has the advantage that it works for incomplete
  984.55 +// types.
  984.56 +
  984.57 +template< typename T1 >
  984.58 +struct is_same_part_1
  984.59 +{
  984.60 +    template<typename T2>  struct part_2     { enum { value = false }; };
  984.61 +    template<>             struct part_2<T1> { enum { value = true }; };
  984.62 +};
  984.63 +
  984.64 +template< typename T1, typename T2 >
  984.65 +struct is_same_impl
  984.66 +{
  984.67 +    enum { value = detail::is_same_part_1<T1>::template part_2<T2>::value };
  984.68 +};
  984.69 +
  984.70 +#else // generic "no-partial-specialization" version
  984.71 +
  984.72 +template <typename T>
  984.73 +::boost::type_traits::yes_type
  984.74 +BOOST_TT_DECL is_same_tester(T*, T*);
  984.75 +
  984.76 +::boost::type_traits::no_type
  984.77 +BOOST_TT_DECL is_same_tester(...);
  984.78 +
  984.79 +template <typename T, typename U>
  984.80 +struct is_same_impl
  984.81 +{
  984.82 +   static T t;
  984.83 +   static U u;
  984.84 +
  984.85 +   BOOST_STATIC_CONSTANT(bool, value =
  984.86 +      (::boost::type_traits::ice_and<
  984.87 +         (sizeof(type_traits::yes_type) == sizeof(detail::is_same_tester(&t,&u))),
  984.88 +         (::boost::is_reference<T>::value == ::boost::is_reference<U>::value),
  984.89 +         (sizeof(T) == sizeof(U))
  984.90 +        >::value));
  984.91 +};
  984.92 +
  984.93 +#endif // BOOST_MSVC
  984.94 +
  984.95 +} // namespace detail
  984.96 +
  984.97 +BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,(::boost::detail::is_same_impl<T,U>::value))
  984.98 +
  984.99 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 984.100 +
 984.101 +} // namespace boost
 984.102 +
 984.103 +#include <boost/type_traits/detail/bool_trait_undef.hpp>
 984.104 +
 984.105 +#endif  // BOOST_TT_IS_SAME_HPP_INCLUDED
 984.106 +
   985.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   985.2 +++ b/epoc32/include/stdapis/boost/graph/exception.hpp	Wed Mar 31 12:27:01 2010 +0100
   985.3 @@ -0,0 +1,58 @@
   985.4 +//
   985.5 +// Boost.Pointer Container
   985.6 +//
   985.7 +//  Copyright Thorsten Ottosen 2003-2005. Use, modification and
   985.8 +//  distribution is subject to the Boost Software License, Version
   985.9 +//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  985.10 +//  http://www.boost.org/LICENSE_1_0.txt)
  985.11 +//
  985.12 +// For more information, see http://www.boost.org/libs/ptr_container/
  985.13 +//
  985.14 +
  985.15 +#ifndef BOOST_PTR_CONTAINER_EXCEPTION_HPP
  985.16 +#define BOOST_PTR_CONTAINER_EXCEPTION_HPP
  985.17 +
  985.18 +#if defined(_MSC_VER) && (_MSC_VER >= 1200)
  985.19 +# pragma once
  985.20 +#endif
  985.21 +
  985.22 +#include <exception>
  985.23 +
  985.24 +namespace boost
  985.25 +{
  985.26 +    class bad_ptr_container_operation : public std::exception
  985.27 +    {
  985.28 +        const char* what_;
  985.29 +    public:
  985.30 +        bad_ptr_container_operation( const char* what ) : what_( what )
  985.31 +        { }
  985.32 +        
  985.33 +        virtual const char* what() const throw()
  985.34 +        {
  985.35 +            return what_;
  985.36 +        }
  985.37 +    };
  985.38 +
  985.39 +
  985.40 +    
  985.41 +    class bad_index : public bad_ptr_container_operation
  985.42 +    {
  985.43 +    public:
  985.44 +        bad_index( const char* what ) : bad_ptr_container_operation( what )
  985.45 +        { }
  985.46 +    };
  985.47 +
  985.48 +
  985.49 +
  985.50 +    class bad_pointer : public bad_ptr_container_operation
  985.51 +    {
  985.52 +    public:
  985.53 +        bad_pointer() : bad_ptr_container_operation( "Null pointer not allowed in a pointer container!" )
  985.54 +        { }
  985.55 +        
  985.56 +        bad_pointer( const char* text ) : bad_ptr_container_operation( text )
  985.57 +        { }
  985.58 +    };
  985.59 +}
  985.60 +
  985.61 +#endif
   986.1 --- a/epoc32/include/stdapis/boost/graph/incremental_components.hpp	Tue Mar 16 16:12:26 2010 +0000
   986.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   986.3 @@ -1,170 +0,0 @@
   986.4 -//
   986.5 -//=======================================================================
   986.6 -// Copyright 1997-2001 University of Notre Dame.
   986.7 -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
   986.8 -//
   986.9 -// Distributed under the Boost Software License, Version 1.0. (See
  986.10 -// accompanying file LICENSE_1_0.txt or copy at
  986.11 -// http://www.boost.org/LICENSE_1_0.txt)
  986.12 -//=======================================================================
  986.13 -//
  986.14 -
  986.15 -#ifndef BOOST_INCREMENTAL_COMPONENTS_HPP
  986.16 -#define BOOST_INCREMENTAL_COMPONENTS_HPP
  986.17 -
  986.18 -#include <boost/detail/iterator.hpp>
  986.19 -#include <boost/graph/detail/incremental_components.hpp>
  986.20 -
  986.21 -namespace boost {
  986.22 -
  986.23 -  // A connected component algorithm for the case when dynamically
  986.24 -  // adding (but not removing) edges is common.  The
  986.25 -  // incremental_components() function is a preparing operation. Call
  986.26 -  // same_component to check whether two vertices are in the same
  986.27 -  // component, or use disjoint_set::find_set to determine the
  986.28 -  // representative for a vertex.
  986.29 -
  986.30 -  // This version of connected components does not require a full
  986.31 -  // Graph. Instead, it just needs an edge list, where the vertices of
  986.32 -  // each edge need to be of integer type. The edges are assumed to
  986.33 -  // be undirected. The other difference is that the result is stored in
  986.34 -  // a container, instead of just a decorator.  The container should be
  986.35 -  // empty before the algorithm is called. It will grow during the
  986.36 -  // course of the algorithm. The container must be a model of
  986.37 -  // BackInsertionSequence and RandomAccessContainer
  986.38 -  // (std::vector is a good choice). After running the algorithm the
  986.39 -  // index container will map each vertex to the representative
  986.40 -  // vertex of the component to which it belongs.
  986.41 -  //
  986.42 -  // Adapted from an implementation by Alex Stepanov. The disjoint
  986.43 -  // sets data structure is from Tarjan's "Data Structures and Network
  986.44 -  // Algorithms", and the application to connected components is
  986.45 -  // similar to the algorithm described in Ch. 22 of "Intro to
  986.46 -  // Algorithms" by Cormen, et. all.
  986.47 -  //  
  986.48 -  // RankContainer is a random accessable container (operator[] is
  986.49 -  // defined) with a value type that can represent an integer part of
  986.50 -  // a binary log of the value type of the corresponding
  986.51 -  // ParentContainer (char is always enough) its size_type is no less
  986.52 -  // than the size_type of the corresponding ParentContainer
  986.53 -
  986.54 -  // An implementation of disjoint sets can be found in
  986.55 -  // boost/pending/disjoint_sets.hpp
  986.56 -  
  986.57 -  template <class EdgeListGraph, class DisjointSets>
  986.58 -  void incremental_components(EdgeListGraph& g, DisjointSets& ds)
  986.59 -  {
  986.60 -    typename graph_traits<EdgeListGraph>::edge_iterator e, end;
  986.61 -    for (tie(e,end) = edges(g); e != end; ++e)
  986.62 -      ds.union_set(source(*e,g),target(*e,g));
  986.63 -  }
  986.64 -  
  986.65 -  template <class ParentIterator>
  986.66 -  void compress_components(ParentIterator first, ParentIterator last)
  986.67 -  {
  986.68 -    for (ParentIterator current = first; current != last; ++current) 
  986.69 -      detail::find_representative_with_full_compression(first, current-first);
  986.70 -  }
  986.71 -  
  986.72 -  template <class ParentIterator>
  986.73 -  typename boost::detail::iterator_traits<ParentIterator>::difference_type
  986.74 -  component_count(ParentIterator first, ParentIterator last)
  986.75 -  {
  986.76 -    std::ptrdiff_t count = 0;
  986.77 -    for (ParentIterator current = first; current != last; ++current) 
  986.78 -      if (*current == current - first) ++count; 
  986.79 -    return count;
  986.80 -  }
  986.81 -  
  986.82 -  // This algorithm can be applied to the result container of the
  986.83 -  // connected_components algorithm to normalize
  986.84 -  // the components.
  986.85 -  template <class ParentIterator>
  986.86 -  void normalize_components(ParentIterator first, ParentIterator last)
  986.87 -  {
  986.88 -    for (ParentIterator current = first; current != last; ++current) 
  986.89 -      detail::normalize_node(first, current - first);
  986.90 -  }
  986.91 -  
  986.92 -  template <class VertexListGraph, class DisjointSets> 
  986.93 -  void initialize_incremental_components(VertexListGraph& G, DisjointSets& ds)
  986.94 -  {
  986.95 -    typename graph_traits<VertexListGraph>
  986.96 -      ::vertex_iterator v, vend;
  986.97 -    for (tie(v, vend) = vertices(G); v != vend; ++v)
  986.98 -      ds.make_set(*v);
  986.99 -  }
 986.100 -
 986.101 -  template <class Vertex, class DisjointSet>
 986.102 -  inline bool same_component(Vertex u, Vertex v, DisjointSet& ds)
 986.103 -  {
 986.104 -    return ds.find_set(u) == ds.find_set(v);
 986.105 -  }
 986.106 -
 986.107 -  // considering changing the so that it initializes with a pair of
 986.108 -  // vertex iterators and a parent PA.
 986.109 -  
 986.110 -  template <class IndexT>
 986.111 -  class component_index
 986.112 -  {
 986.113 -  public://protected: (avoid friends for now)
 986.114 -    typedef std::vector<IndexT> MyIndexContainer;
 986.115 -    MyIndexContainer header;
 986.116 -    MyIndexContainer index;
 986.117 -    typedef typename MyIndexContainer::size_type SizeT;
 986.118 -    typedef typename MyIndexContainer::const_iterator IndexIter;
 986.119 -  public:
 986.120 -    typedef detail::component_iterator<IndexIter, IndexT, SizeT> 
 986.121 -      component_iterator;
 986.122 -    class component {
 986.123 -      friend class component_index;
 986.124 -    protected:
 986.125 -      IndexT number;
 986.126 -      const component_index<IndexT>* comp_ind_ptr;
 986.127 -      component(IndexT i, const component_index<IndexT>* p) 
 986.128 -        : number(i), comp_ind_ptr(p) {}
 986.129 -    public:
 986.130 -      typedef component_iterator iterator;
 986.131 -      typedef component_iterator const_iterator;
 986.132 -      typedef IndexT value_type;
 986.133 -      iterator begin() const {
 986.134 -        return iterator( comp_ind_ptr->index.begin(),
 986.135 -                         (comp_ind_ptr->header)[number] );
 986.136 -      }
 986.137 -      iterator end() const {
 986.138 -        return iterator( comp_ind_ptr->index.begin(), 
 986.139 -                         comp_ind_ptr->index.size() );
 986.140 -      }
 986.141 -    };
 986.142 -    typedef SizeT size_type;
 986.143 -    typedef component value_type;
 986.144 -    
 986.145 -#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
 986.146 -    template <class Iterator>
 986.147 -    component_index(Iterator first, Iterator last) 
 986.148 -    : index(std::distance(first, last))
 986.149 -    { 
 986.150 -      std::copy(first, last, index.begin());
 986.151 -      detail::construct_component_index(index, header);
 986.152 -    }
 986.153 -#else
 986.154 -    template <class Iterator>
 986.155 -    component_index(Iterator first, Iterator last) 
 986.156 -      : index(first, last)
 986.157 -    { 
 986.158 -      detail::construct_component_index(index, header);
 986.159 -    }
 986.160 -#endif
 986.161 -
 986.162 -    component operator[](IndexT i) const {
 986.163 -      return component(i, this);
 986.164 -    }
 986.165 -    SizeT size() const {
 986.166 -      return header.size();
 986.167 -    }
 986.168 -    
 986.169 -  };
 986.170 -
 986.171 -} // namespace boost
 986.172 -
 986.173 -#endif // BOOST_INCREMENTAL_COMPONENTS_HPP
   987.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   987.2 +++ b/epoc32/include/stdapis/boost/graph/random.hpp	Wed Mar 31 12:27:01 2010 +0100
   987.3 @@ -0,0 +1,72 @@
   987.4 +/* boost random.hpp header file
   987.5 + *
   987.6 + * Copyright Jens Maurer 2000-2001
   987.7 + * Distributed under the Boost Software License, Version 1.0. (See
   987.8 + * accompanying file LICENSE_1_0.txt or copy at
   987.9 + * http://www.boost.org/LICENSE_1_0.txt)
  987.10 + *
  987.11 + * See http://www.boost.org/libs/random for documentation.
  987.12 + *
  987.13 + * $Id: random.hpp,v 1.18 2004/07/27 03:43:27 dgregor Exp $
  987.14 + *
  987.15 + * Revision history
  987.16 + *  2000-02-18  portability fixes (thanks to Beman Dawes)
  987.17 + *  2000-02-21  shuffle_output, inversive_congruential_schrage,
  987.18 + *              generator_iterator, uniform_smallint
  987.19 + *  2000-02-23  generic modulus arithmetic helper, removed *_schrage classes,
  987.20 + *              implemented Streamable and EqualityComparable concepts for 
  987.21 + *              generators, added Bernoulli distribution and Box-Muller
  987.22 + *              transform
  987.23 + *  2000-03-01  cauchy, lognormal, triangle distributions; fixed 
  987.24 + *              uniform_smallint; renamed gaussian to normal distribution
  987.25 + *  2000-03-05  implemented iterator syntax for distribution functions
  987.26 + *  2000-04-21  removed some optimizations for better BCC/MSVC compatibility
  987.27 + *  2000-05-10  adapted to BCC and MSVC
  987.28 + *  2000-06-13  incorporated review results
  987.29 + *  2000-07-06  moved basic templates from namespace detail to random
  987.30 + *  2000-09-23  warning removals and int64 fixes (Ed Brey)
  987.31 + *  2000-09-24  added lagged_fibonacci generator (Matthias Troyer)
  987.32 + *  2001-02-18  moved to individual header files
  987.33 + */
  987.34 +
  987.35 +#ifndef BOOST_RANDOM_HPP
  987.36 +#define BOOST_RANDOM_HPP
  987.37 +
  987.38 +// generators
  987.39 +#include <boost/random/linear_congruential.hpp>
  987.40 +#include <boost/random/additive_combine.hpp>
  987.41 +#include <boost/random/inversive_congruential.hpp>
  987.42 +#include <boost/random/shuffle_output.hpp>
  987.43 +#include <boost/random/mersenne_twister.hpp>
  987.44 +#include <boost/random/lagged_fibonacci.hpp>
  987.45 +#include <boost/random/ranlux.hpp>
  987.46 +#include <boost/random/linear_feedback_shift.hpp>
  987.47 +#include <boost/random/xor_combine.hpp>
  987.48 +
  987.49 +namespace boost {
  987.50 +  typedef random::xor_combine<random::xor_combine<random::linear_feedback_shift<uint32_t, 32, 31, 13, 12, 0>, 0,
  987.51 +    random::linear_feedback_shift<uint32_t, 32, 29, 2, 4, 0>, 0, 0>, 0,
  987.52 +                      random::linear_feedback_shift<uint32_t, 32, 28, 3, 17, 0>, 0, 0> taus88;
  987.53 +} // namespace  boost
  987.54 +
  987.55 +// misc
  987.56 +#include <boost/random/random_number_generator.hpp>
  987.57 +
  987.58 +// distributions
  987.59 +#include <boost/random/uniform_smallint.hpp>
  987.60 +#include <boost/random/uniform_int.hpp>
  987.61 +#include <boost/random/uniform_01.hpp>
  987.62 +#include <boost/random/uniform_real.hpp>
  987.63 +#include <boost/random/triangle_distribution.hpp>
  987.64 +#include <boost/random/bernoulli_distribution.hpp>
  987.65 +#include <boost/random/cauchy_distribution.hpp>
  987.66 +#include <boost/random/exponential_distribution.hpp>
  987.67 +#include <boost/random/geometric_distribution.hpp>
  987.68 +#include <boost/random/normal_distribution.hpp>
  987.69 +#include <boost/random/lognormal_distribution.hpp>
  987.70 +#include <boost/random/poisson_distribution.hpp>
  987.71 +#include <boost/random/gamma_distribution.hpp>
  987.72 +#include <boost/random/binomial_distribution.hpp>
  987.73 +#include <boost/random/uniform_on_sphere.hpp>
  987.74 +
  987.75 +#endif // BOOST_RANDOM_HPP
   988.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   988.2 +++ b/epoc32/include/stdapis/boost/iterator/detail/enable_if.hpp	Wed Mar 31 12:27:01 2010 +0100
   988.3 @@ -0,0 +1,119 @@
   988.4 +// Boost enable_if library
   988.5 +
   988.6 +// Copyright 2003 © The Trustees of Indiana University.
   988.7 +
   988.8 +// Use, modification, and distribution is subject to the Boost Software
   988.9 +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  988.10 +// http://www.boost.org/LICENSE_1_0.txt)
  988.11 +
  988.12 +//    Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
  988.13 +//             Jeremiah Willcock (jewillco at osl.iu.edu)
  988.14 +//             Andrew Lumsdaine (lums at osl.iu.edu)
  988.15 +
  988.16 +
  988.17 +#ifndef BOOST_UTILITY_ENABLE_IF_HPP
  988.18 +#define BOOST_UTILITY_ENABLE_IF_HPP
  988.19 +
  988.20 +#include "boost/config.hpp"
  988.21 +
  988.22 +// Even the definition of enable_if causes problems on some compilers,
  988.23 +// so it's macroed out for all compilers that do not support SFINAE
  988.24 +
  988.25 +#ifndef BOOST_NO_SFINAE
  988.26 +
  988.27 +namespace boost
  988.28 +{
  988.29 + 
  988.30 +  template <bool B, class T = void>
  988.31 +  struct enable_if_c {
  988.32 +    typedef T type;
  988.33 +  };
  988.34 +
  988.35 +  template <class T>
  988.36 +  struct enable_if_c<false, T> {};
  988.37 +
  988.38 +  template <class Cond, class T = void> 
  988.39 +  struct enable_if : public enable_if_c<Cond::value, T> {};
  988.40 +
  988.41 +  template <bool B, class T>
  988.42 +  struct lazy_enable_if_c {
  988.43 +    typedef typename T::type type;
  988.44 +  };
  988.45 +
  988.46 +  template <class T>
  988.47 +  struct lazy_enable_if_c<false, T> {};
  988.48 +
  988.49 +  template <class Cond, class T> 
  988.50 +  struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
  988.51 +
  988.52 +
  988.53 +  template <bool B, class T = void>
  988.54 +  struct disable_if_c {
  988.55 +    typedef T type;
  988.56 +  };
  988.57 +
  988.58 +  template <class T>
  988.59 +  struct disable_if_c<true, T> {};
  988.60 +
  988.61 +  template <class Cond, class T = void> 
  988.62 +  struct disable_if : public disable_if_c<Cond::value, T> {};
  988.63 +
  988.64 +  template <bool B, class T>
  988.65 +  struct lazy_disable_if_c {
  988.66 +    typedef typename T::type type;
  988.67 +  };
  988.68 +
  988.69 +  template <class T>
  988.70 +  struct lazy_disable_if_c<true, T> {};
  988.71 +
  988.72 +  template <class Cond, class T> 
  988.73 +  struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
  988.74 +
  988.75 +} // namespace boost
  988.76 +
  988.77 +#else
  988.78 +
  988.79 +namespace boost {
  988.80 +
  988.81 +  namespace detail { typedef void enable_if_default_T; }
  988.82 +
  988.83 +  template <typename T>
  988.84 +  struct enable_if_does_not_work_on_this_compiler;
  988.85 +
  988.86 +  template <bool B, class T = detail::enable_if_default_T>
  988.87 +  struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
  988.88 +  { };
  988.89 +
  988.90 +  template <bool B, class T = detail::enable_if_default_T> 
  988.91 +  struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
  988.92 +  { };
  988.93 +
  988.94 +  template <bool B, class T = detail::enable_if_default_T> 
  988.95 +  struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
  988.96 +  { };
  988.97 +
  988.98 +  template <bool B, class T = detail::enable_if_default_T> 
  988.99 +  struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
 988.100 +  { };
 988.101 +
 988.102 +  template <class Cond, class T = detail::enable_if_default_T> 
 988.103 +  struct enable_if : enable_if_does_not_work_on_this_compiler<T>
 988.104 +  { };
 988.105 +
 988.106 +  template <class Cond, class T = detail::enable_if_default_T> 
 988.107 +  struct disable_if : enable_if_does_not_work_on_this_compiler<T>
 988.108 +  { };
 988.109 +
 988.110 +  template <class Cond, class T = detail::enable_if_default_T> 
 988.111 +  struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
 988.112 +  { };
 988.113 +
 988.114 +  template <class Cond, class T = detail::enable_if_default_T> 
 988.115 +  struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
 988.116 +  { };
 988.117 +
 988.118 +} // namespace boost
 988.119 +
 988.120 +#endif // BOOST_NO_SFINAE
 988.121 +
 988.122 +#endif
   989.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   989.2 +++ b/epoc32/include/stdapis/boost/iterator/reverse_iterator.hpp	Wed Mar 31 12:27:01 2010 +0100
   989.3 @@ -0,0 +1,40 @@
   989.4 +// Boost.Range library
   989.5 +//
   989.6 +//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
   989.7 +//  distribution is subject to the Boost Software License, Version
   989.8 +//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
   989.9 +//  http://www.boost.org/LICENSE_1_0.txt)
  989.10 +//
  989.11 +// For more information, see http://www.boost.org/libs/range/
  989.12 +//
  989.13 +
  989.14 +#ifndef BOOST_RANGE_REVERSE_ITERATOR_HPP
  989.15 +#define BOOST_RANGE_REVERSE_ITERATOR_HPP
  989.16 +
  989.17 +#if defined(_MSC_VER) && (_MSC_VER >= 1200)
  989.18 +# pragma once
  989.19 +#endif
  989.20 +
  989.21 +#include <boost/range/config.hpp>
  989.22 +#include <boost/range/iterator.hpp>
  989.23 +#include <boost/iterator/reverse_iterator.hpp>
  989.24 +
  989.25 +
  989.26 +namespace boost
  989.27 +{
  989.28 +    //////////////////////////////////////////////////////////////////////////
  989.29 +    // default
  989.30 +    //////////////////////////////////////////////////////////////////////////
  989.31 +    
  989.32 +    template< typename C >
  989.33 +    struct range_reverse_iterator
  989.34 +    {
  989.35 +        typedef reverse_iterator< 
  989.36 +            BOOST_DEDUCED_TYPENAME range_iterator<C>::type > type;
  989.37 +    };
  989.38 +    
  989.39 +
  989.40 +} // namespace boost
  989.41 +
  989.42 +
  989.43 +#endif
   990.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   990.2 +++ b/epoc32/include/stdapis/boost/lambda/detail/lambda_fwd.hpp	Wed Mar 31 12:27:01 2010 +0100
   990.3 @@ -0,0 +1,57 @@
   990.4 +
   990.5 +#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
   990.6 +#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
   990.7 +
   990.8 +// Copyright Aleksey Gurtovoy 2001-2004
   990.9 +//
  990.10 +// Distributed under the Boost Software License, Version 1.0. 
  990.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
  990.12 +// http://www.boost.org/LICENSE_1_0.txt)
  990.13 +//
  990.14 +// See http://www.boost.org/libs/mpl for documentation.
  990.15 +
  990.16 +// $Source: /cvsroot/boost/boost/boost/mpl/lambda_fwd.hpp,v $
  990.17 +// $Date: 2004/09/02 15:40:41 $
  990.18 +// $Revision: 1.7 $
  990.19 +
  990.20 +#include <boost/mpl/void_fwd.hpp>
  990.21 +#include <boost/mpl/aux_/na.hpp>
  990.22 +#include <boost/mpl/aux_/config/lambda.hpp>
  990.23 +
  990.24 +#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
  990.25 +
  990.26 +#   include <boost/mpl/int.hpp>
  990.27 +#   include <boost/mpl/aux_/lambda_arity_param.hpp>
  990.28 +#   include <boost/mpl/aux_/template_arity_fwd.hpp>
  990.29 +
  990.30 +namespace boost { namespace mpl {
  990.31 +
  990.32 +template< 
  990.33 +      typename T = na
  990.34 +    , typename Tag = void_
  990.35 +    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(
  990.36 +          typename Arity = int_< aux::template_arity<T>::value >
  990.37 +        )
  990.38 +    >
  990.39 +struct lambda;
  990.40 +
  990.41 +}}
  990.42 +
  990.43 +#else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
  990.44 +
  990.45 +#   include <boost/mpl/bool.hpp>
  990.46 +
  990.47 +namespace boost { namespace mpl {
  990.48 +
  990.49 +template< 
  990.50 +      typename T = na
  990.51 +    , typename Tag = void_
  990.52 +    , typename Protect = true_
  990.53 +    > 
  990.54 +struct lambda;
  990.55 +
  990.56 +}}
  990.57 +
  990.58 +#endif
  990.59 +
  990.60 +#endif // BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
   991.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   991.2 +++ b/epoc32/include/stdapis/boost/lambda/detail/operators.hpp	Wed Mar 31 12:27:01 2010 +0100
   991.3 @@ -0,0 +1,941 @@
   991.4 +//  Boost operators.hpp header file  ----------------------------------------//
   991.5 +
   991.6 +//  (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
   991.7 +//  Distributed under the Boost Software License, Version 1.0. (See
   991.8 +//  accompanying file LICENSE_1_0.txt or copy at
   991.9 +//  http://www.boost.org/LICENSE_1_0.txt)
  991.10 +
  991.11 +//  See http://www.boost.org/libs/utility/operators.htm for documentation.
  991.12 +
  991.13 +//  Revision History
  991.14 +//  21 Oct 02 Modified implementation of operators to allow compilers with a
  991.15 +//            correct named return value optimization (NRVO) to produce optimal
  991.16 +//            code.  (Daniel Frey)
  991.17 +//  02 Dec 01 Bug fixed in random_access_iteratable.  (Helmut Zeisel)
  991.18 +//  28 Sep 01 Factored out iterator operator groups.  (Daryle Walker)
  991.19 +//  27 Aug 01 'left' form for non commutative operators added;
  991.20 +//            additional classes for groups of related operators added;
  991.21 +//            workaround for empty base class optimization
  991.22 +//            bug of GCC 3.0 (Helmut Zeisel)
  991.23 +//  25 Jun 01 output_iterator_helper changes: removed default template 
  991.24 +//            parameters, added support for self-proxying, additional 
  991.25 +//            documentation and tests (Aleksey Gurtovoy)
  991.26 +//  29 May 01 Added operator classes for << and >>.  Added input and output
  991.27 +//            iterator helper classes.  Added classes to connect equality and
  991.28 +//            relational operators.  Added classes for groups of related
  991.29 +//            operators.  Reimplemented example operator and iterator helper
  991.30 +//            classes in terms of the new groups.  (Daryle Walker, with help
  991.31 +//            from Alexy Gurtovoy)
  991.32 +//  11 Feb 01 Fixed bugs in the iterator helpers which prevented explicitly
  991.33 +//            supplied arguments from actually being used (Dave Abrahams)
  991.34 +//  04 Jul 00 Fixed NO_OPERATORS_IN_NAMESPACE bugs, major cleanup and
  991.35 +//            refactoring of compiler workarounds, additional documentation
  991.36 +//            (Alexy Gurtovoy and Mark Rodgers with some help and prompting from
  991.37 +//            Dave Abrahams) 
  991.38 +//  28 Jun 00 General cleanup and integration of bugfixes from Mark Rodgers and
  991.39 +//            Jeremy Siek (Dave Abrahams)
  991.40 +//  20 Jun 00 Changes to accommodate Borland C++Builder 4 and Borland C++ 5.5
  991.41 +//            (Mark Rodgers)
  991.42 +//  20 Jun 00 Minor fixes to the prior revision (Aleksey Gurtovoy)
  991.43 +//  10 Jun 00 Support for the base class chaining technique was added
  991.44 +//            (Aleksey Gurtovoy). See documentation and the comments below 
  991.45 +//            for the details. 
  991.46 +//  12 Dec 99 Initial version with iterator operators (Jeremy Siek)
  991.47 +//  18 Nov 99 Change name "divideable" to "dividable", remove unnecessary
  991.48 +//            specializations of dividable, subtractable, modable (Ed Brey) 
  991.49 +//  17 Nov 99 Add comments (Beman Dawes)
  991.50 +//            Remove unnecessary specialization of operators<> (Ed Brey)
  991.51 +//  15 Nov 99 Fix less_than_comparable<T,U> second operand type for first two
  991.52 +//            operators.(Beman Dawes)
  991.53 +//  12 Nov 99 Add operators templates (Ed Brey)
  991.54 +//  11 Nov 99 Add single template parameter version for compilers without
  991.55 +//            partial specialization (Beman Dawes)
  991.56 +//  10 Nov 99 Initial version
  991.57 +
  991.58 +// 10 Jun 00:
  991.59 +// An additional optional template parameter was added to most of 
  991.60 +// operator templates to support the base class chaining technique (see 
  991.61 +// documentation for the details). Unfortunately, a straightforward
  991.62 +// implementation of this change would have broken compatibility with the
  991.63 +// previous version of the library by making it impossible to use the same
  991.64 +// template name (e.g. 'addable') for both the 1- and 2-argument versions of
  991.65 +// an operator template. This implementation solves the backward-compatibility
  991.66 +// issue at the cost of some simplicity.
  991.67 +//
  991.68 +// One of the complications is an existence of special auxiliary class template
  991.69 +// 'is_chained_base<>' (see 'detail' namespace below), which is used
  991.70 +// to determine whether its template parameter is a library's operator template
  991.71 +// or not. You have to specialize 'is_chained_base<>' for each new 
  991.72 +// operator template you add to the library.
  991.73 +//
  991.74 +// However, most of the non-trivial implementation details are hidden behind 
  991.75 +// several local macros defined below, and as soon as you understand them,
  991.76 +// you understand the whole library implementation. 
  991.77 +
  991.78 +#ifndef BOOST_OPERATORS_HPP
  991.79 +#define BOOST_OPERATORS_HPP
  991.80 +
  991.81 +#include <boost/config.hpp>
  991.82 +#include <boost/iterator.hpp>
  991.83 +#include <boost/detail/workaround.hpp>
  991.84 +
  991.85 +#if defined(__sgi) && !defined(__GNUC__)
  991.86 +#   pragma set woff 1234
  991.87 +#endif
  991.88 +
  991.89 +#if defined(BOOST_MSVC)
  991.90 +#   pragma warning( disable : 4284 ) // complaint about return type of 
  991.91 +#endif                               // operator-> not begin a UDT
  991.92 +
  991.93 +namespace boost {
  991.94 +namespace detail {
  991.95 +
  991.96 +// Helmut Zeisel, empty base class optimization bug with GCC 3.0.0
  991.97 +#if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==0 && __GNU_PATCHLEVEL__==0
  991.98 +class empty_base {
  991.99 +  bool dummy; 
 991.100 +};
 991.101 +#else
 991.102 +class empty_base {};
 991.103 +#endif
 991.104 +
 991.105 +} // namespace detail
 991.106 +} // namespace boost
 991.107 +
 991.108 +// In this section we supply the xxxx1 and xxxx2 forms of the operator
 991.109 +// templates, which are explicitly targeted at the 1-type-argument and
 991.110 +// 2-type-argument operator forms, respectively. Some compilers get confused
 991.111 +// when inline friend functions are overloaded in namespaces other than the
 991.112 +// global namespace. When BOOST_NO_OPERATORS_IN_NAMESPACE is defined, all of
 991.113 +// these templates must go in the global namespace.
 991.114 +
 991.115 +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
 991.116 +namespace boost
 991.117 +{
 991.118 +#endif
 991.119 +
 991.120 +//  Basic operator classes (contributed by Dave Abrahams) ------------------//
 991.121 +
 991.122 +//  Note that friend functions defined in a class are implicitly inline.
 991.123 +//  See the C++ std, 11.4 [class.friend] paragraph 5
 991.124 +
 991.125 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.126 +struct less_than_comparable2 : B
 991.127 +{
 991.128 +     friend bool operator<=(const T& x, const U& y) { return !(x > y); }
 991.129 +     friend bool operator>=(const T& x, const U& y) { return !(x < y); }
 991.130 +     friend bool operator>(const U& x, const T& y)  { return y < x; }
 991.131 +     friend bool operator<(const U& x, const T& y)  { return y > x; }
 991.132 +     friend bool operator<=(const U& x, const T& y) { return !(y < x); }
 991.133 +     friend bool operator>=(const U& x, const T& y) { return !(y > x); }
 991.134 +};
 991.135 +
 991.136 +template <class T, class B = ::boost::detail::empty_base>
 991.137 +struct less_than_comparable1 : B
 991.138 +{
 991.139 +     friend bool operator>(const T& x, const T& y)  { return y < x; }
 991.140 +     friend bool operator<=(const T& x, const T& y) { return !(y < x); }
 991.141 +     friend bool operator>=(const T& x, const T& y) { return !(x < y); }
 991.142 +};
 991.143 +
 991.144 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.145 +struct equality_comparable2 : B
 991.146 +{
 991.147 +     friend bool operator==(const U& y, const T& x) { return x == y; }
 991.148 +     friend bool operator!=(const U& y, const T& x) { return !(x == y); }
 991.149 +     friend bool operator!=(const T& y, const U& x) { return !(y == x); }
 991.150 +};
 991.151 +
 991.152 +template <class T, class B = ::boost::detail::empty_base>
 991.153 +struct equality_comparable1 : B
 991.154 +{
 991.155 +     friend bool operator!=(const T& x, const T& y) { return !(x == y); }
 991.156 +};
 991.157 +
 991.158 +// A macro which produces "name_2left" from "name".
 991.159 +#define BOOST_OPERATOR2_LEFT(name) name##2##_##left
 991.160 +
 991.161 +//  NRVO-friendly implementation (contributed by Daniel Frey) ---------------//
 991.162 +
 991.163 +#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
 991.164 +
 991.165 +// This is the optimal implementation for ISO/ANSI C++,
 991.166 +// but it requires the compiler to implement the NRVO.
 991.167 +// If the compiler has no NRVO, this is the best symmetric
 991.168 +// implementation available.
 991.169 +
 991.170 +#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP )                         \
 991.171 +template <class T, class U, class B = ::boost::detail::empty_base>            \
 991.172 +struct NAME##2 : B                                                            \
 991.173 +{                                                                             \
 991.174 +  friend T operator OP( const T& lhs, const U& rhs )                          \
 991.175 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
 991.176 +  friend T operator OP( const U& lhs, const T& rhs )                          \
 991.177 +    { T nrv( rhs ); nrv OP##= lhs; return nrv; }                              \
 991.178 +};                                                                            \
 991.179 +                                                                              \
 991.180 +template <class T, class B = ::boost::detail::empty_base>                     \
 991.181 +struct NAME##1 : B                                                            \
 991.182 +{                                                                             \
 991.183 +  friend T operator OP( const T& lhs, const T& rhs )                          \
 991.184 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
 991.185 +};
 991.186 +
 991.187 +#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP )           \
 991.188 +template <class T, class U, class B = ::boost::detail::empty_base>  \
 991.189 +struct NAME##2 : B                                                  \
 991.190 +{                                                                   \
 991.191 +  friend T operator OP( const T& lhs, const U& rhs )                \
 991.192 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                    \
 991.193 +};                                                                  \
 991.194 +                                                                    \
 991.195 +template <class T, class U, class B = ::boost::detail::empty_base>  \
 991.196 +struct BOOST_OPERATOR2_LEFT(NAME) : B                               \
 991.197 +{                                                                   \
 991.198 +  friend T operator OP( const U& lhs, const T& rhs )                \
 991.199 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                    \
 991.200 +};                                                                  \
 991.201 +                                                                    \
 991.202 +template <class T, class B = ::boost::detail::empty_base>           \
 991.203 +struct NAME##1 : B                                                  \
 991.204 +{                                                                   \
 991.205 +  friend T operator OP( const T& lhs, const T& rhs )                \
 991.206 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                    \
 991.207 +};
 991.208 +
 991.209 +#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
 991.210 +
 991.211 +// For compilers without NRVO the following code is optimal, but not
 991.212 +// symmetric!  Note that the implementation of
 991.213 +// BOOST_OPERATOR2_LEFT(NAME) only looks cool, but doesn't provide
 991.214 +// optimization opportunities to the compiler :)
 991.215 +
 991.216 +#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP )                         \
 991.217 +template <class T, class U, class B = ::boost::detail::empty_base>            \
 991.218 +struct NAME##2 : B                                                            \
 991.219 +{                                                                             \
 991.220 +  friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; }       \
 991.221 +  friend T operator OP( const U& lhs, T rhs ) { return rhs OP##= lhs; }       \
 991.222 +};                                                                            \
 991.223 +                                                                              \
 991.224 +template <class T, class B = ::boost::detail::empty_base>                     \
 991.225 +struct NAME##1 : B                                                            \
 991.226 +{                                                                             \
 991.227 +  friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; }       \
 991.228 +};
 991.229 +
 991.230 +#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP )               \
 991.231 +template <class T, class U, class B = ::boost::detail::empty_base>      \
 991.232 +struct NAME##2 : B                                                      \
 991.233 +{                                                                       \
 991.234 +  friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
 991.235 +};                                                                      \
 991.236 +                                                                        \
 991.237 +template <class T, class U, class B = ::boost::detail::empty_base>      \
 991.238 +struct BOOST_OPERATOR2_LEFT(NAME) : B                                   \
 991.239 +{                                                                       \
 991.240 +  friend T operator OP( const U& lhs, const T& rhs )                    \
 991.241 +    { return T( lhs ) OP##= rhs; }                                      \
 991.242 +};                                                                      \
 991.243 +                                                                        \
 991.244 +template <class T, class B = ::boost::detail::empty_base>               \
 991.245 +struct NAME##1 : B                                                      \
 991.246 +{                                                                       \
 991.247 +  friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
 991.248 +};
 991.249 +
 991.250 +#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
 991.251 +
 991.252 +BOOST_BINARY_OPERATOR_COMMUTATIVE( multipliable, * )
 991.253 +BOOST_BINARY_OPERATOR_COMMUTATIVE( addable, + )
 991.254 +BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( subtractable, - )
 991.255 +BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( dividable, / )
 991.256 +BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( modable, % )
 991.257 +BOOST_BINARY_OPERATOR_COMMUTATIVE( xorable, ^ )
 991.258 +BOOST_BINARY_OPERATOR_COMMUTATIVE( andable, & )
 991.259 +BOOST_BINARY_OPERATOR_COMMUTATIVE( orable, | )
 991.260 +
 991.261 +#undef BOOST_BINARY_OPERATOR_COMMUTATIVE
 991.262 +#undef BOOST_BINARY_OPERATOR_NON_COMMUTATIVE
 991.263 +#undef BOOST_OPERATOR2_LEFT
 991.264 +
 991.265 +//  incrementable and decrementable contributed by Jeremy Siek
 991.266 +
 991.267 +template <class T, class B = ::boost::detail::empty_base>
 991.268 +struct incrementable : B
 991.269 +{
 991.270 +  friend T operator++(T& x, int)
 991.271 +  {
 991.272 +    incrementable_type nrv(x);
 991.273 +    ++x;
 991.274 +    return nrv;
 991.275 +  }
 991.276 +private: // The use of this typedef works around a Borland bug
 991.277 +  typedef T incrementable_type;
 991.278 +};
 991.279 +
 991.280 +template <class T, class B = ::boost::detail::empty_base>
 991.281 +struct decrementable : B
 991.282 +{
 991.283 +  friend T operator--(T& x, int)
 991.284 +  {
 991.285 +    decrementable_type nrv(x);
 991.286 +    --x;
 991.287 +    return nrv;
 991.288 +  }
 991.289 +private: // The use of this typedef works around a Borland bug
 991.290 +  typedef T decrementable_type;
 991.291 +};
 991.292 +
 991.293 +//  Iterator operator classes (contributed by Jeremy Siek) ------------------//
 991.294 +
 991.295 +template <class T, class P, class B = ::boost::detail::empty_base>
 991.296 +struct dereferenceable : B
 991.297 +{
 991.298 +  P operator->() const
 991.299 +  { 
 991.300 +    return &*static_cast<const T&>(*this); 
 991.301 +  }
 991.302 +};
 991.303 +
 991.304 +template <class T, class I, class R, class B = ::boost::detail::empty_base>
 991.305 +struct indexable : B
 991.306 +{
 991.307 +  R operator[](I n) const
 991.308 +  {
 991.309 +    return *(static_cast<const T&>(*this) + n);
 991.310 +  }
 991.311 +};
 991.312 +
 991.313 +//  More operator classes (contributed by Daryle Walker) --------------------//
 991.314 +//  (NRVO-friendly implementation contributed by Daniel Frey) ---------------//
 991.315 +
 991.316 +#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
 991.317 +
 991.318 +#define BOOST_BINARY_OPERATOR( NAME, OP )                                     \
 991.319 +template <class T, class U, class B = ::boost::detail::empty_base>            \
 991.320 +struct NAME##2 : B                                                            \
 991.321 +{                                                                             \
 991.322 +  friend T operator OP( const T& lhs, const U& rhs )                          \
 991.323 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
 991.324 +};                                                                            \
 991.325 +                                                                              \
 991.326 +template <class T, class B = ::boost::detail::empty_base>                     \
 991.327 +struct NAME##1 : B                                                            \
 991.328 +{                                                                             \
 991.329 +  friend T operator OP( const T& lhs, const T& rhs )                          \
 991.330 +    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
 991.331 +};
 991.332 +
 991.333 +#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
 991.334 +
 991.335 +#define BOOST_BINARY_OPERATOR( NAME, OP )                                     \
 991.336 +template <class T, class U, class B = ::boost::detail::empty_base>            \
 991.337 +struct NAME##2 : B                                                            \
 991.338 +{                                                                             \
 991.339 +  friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; }       \
 991.340 +};                                                                            \
 991.341 +                                                                              \
 991.342 +template <class T, class B = ::boost::detail::empty_base>                     \
 991.343 +struct NAME##1 : B                                                            \
 991.344 +{                                                                             \
 991.345 +  friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; }       \
 991.346 +};
 991.347 +
 991.348 +#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
 991.349 +
 991.350 +BOOST_BINARY_OPERATOR( left_shiftable, << )
 991.351 +BOOST_BINARY_OPERATOR( right_shiftable, >> )
 991.352 +
 991.353 +#undef BOOST_BINARY_OPERATOR
 991.354 +
 991.355 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.356 +struct equivalent2 : B
 991.357 +{
 991.358 +  friend bool operator==(const T& x, const U& y)
 991.359 +  {
 991.360 +    return !(x < y) && !(x > y);
 991.361 +  }
 991.362 +};
 991.363 +
 991.364 +template <class T, class B = ::boost::detail::empty_base>
 991.365 +struct equivalent1 : B
 991.366 +{
 991.367 +  friend bool operator==(const T&x, const T&y)
 991.368 +  {
 991.369 +    return !(x < y) && !(y < x);
 991.370 +  }
 991.371 +};
 991.372 +
 991.373 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.374 +struct partially_ordered2 : B
 991.375 +{
 991.376 +  friend bool operator<=(const T& x, const U& y)
 991.377 +    { return (x < y) || (x == y); }
 991.378 +  friend bool operator>=(const T& x, const U& y)
 991.379 +    { return (x > y) || (x == y); }
 991.380 +  friend bool operator>(const U& x, const T& y)
 991.381 +    { return y < x; }
 991.382 +  friend bool operator<(const U& x, const T& y)
 991.383 +    { return y > x; }
 991.384 +  friend bool operator<=(const U& x, const T& y)
 991.385 +    { return (y > x) || (y == x); }
 991.386 +  friend bool operator>=(const U& x, const T& y)
 991.387 +    { return (y < x) || (y == x); }
 991.388 +};
 991.389 +
 991.390 +template <class T, class B = ::boost::detail::empty_base>
 991.391 +struct partially_ordered1 : B
 991.392 +{
 991.393 +  friend bool operator>(const T& x, const T& y)
 991.394 +    { return y < x; }
 991.395 +  friend bool operator<=(const T& x, const T& y)
 991.396 +    { return (x < y) || (x == y); }
 991.397 +  friend bool operator>=(const T& x, const T& y)
 991.398 +    { return (y < x) || (x == y); }
 991.399 +};
 991.400 +
 991.401 +//  Combined operator classes (contributed by Daryle Walker) ----------------//
 991.402 +
 991.403 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.404 +struct totally_ordered2
 991.405 +    : less_than_comparable2<T, U
 991.406 +    , equality_comparable2<T, U, B
 991.407 +      > > {};
 991.408 +
 991.409 +template <class T, class B = ::boost::detail::empty_base>
 991.410 +struct totally_ordered1
 991.411 +    : less_than_comparable1<T
 991.412 +    , equality_comparable1<T, B
 991.413 +      > > {};
 991.414 +
 991.415 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.416 +struct additive2
 991.417 +    : addable2<T, U
 991.418 +    , subtractable2<T, U, B
 991.419 +      > > {};
 991.420 +
 991.421 +template <class T, class B = ::boost::detail::empty_base>
 991.422 +struct additive1
 991.423 +    : addable1<T
 991.424 +    , subtractable1<T, B
 991.425 +      > > {};
 991.426 +
 991.427 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.428 +struct multiplicative2
 991.429 +    : multipliable2<T, U
 991.430 +    , dividable2<T, U, B
 991.431 +      > > {};
 991.432 +
 991.433 +template <class T, class B = ::boost::detail::empty_base>
 991.434 +struct multiplicative1
 991.435 +    : multipliable1<T
 991.436 +    , dividable1<T, B
 991.437 +      > > {};
 991.438 +
 991.439 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.440 +struct integer_multiplicative2
 991.441 +    : multiplicative2<T, U
 991.442 +    , modable2<T, U, B
 991.443 +      > > {};
 991.444 +
 991.445 +template <class T, class B = ::boost::detail::empty_base>
 991.446 +struct integer_multiplicative1
 991.447 +    : multiplicative1<T
 991.448 +    , modable1<T, B
 991.449 +      > > {};
 991.450 +
 991.451 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.452 +struct arithmetic2
 991.453 +    : additive2<T, U
 991.454 +    , multiplicative2<T, U, B
 991.455 +      > > {};
 991.456 +
 991.457 +template <class T, class B = ::boost::detail::empty_base>
 991.458 +struct arithmetic1
 991.459 +    : additive1<T
 991.460 +    , multiplicative1<T, B
 991.461 +      > > {};
 991.462 +
 991.463 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.464 +struct integer_arithmetic2
 991.465 +    : additive2<T, U
 991.466 +    , integer_multiplicative2<T, U, B
 991.467 +      > > {};
 991.468 +
 991.469 +template <class T, class B = ::boost::detail::empty_base>
 991.470 +struct integer_arithmetic1
 991.471 +    : additive1<T
 991.472 +    , integer_multiplicative1<T, B
 991.473 +      > > {};
 991.474 +
 991.475 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.476 +struct bitwise2
 991.477 +    : xorable2<T, U
 991.478 +    , andable2<T, U
 991.479 +    , orable2<T, U, B
 991.480 +      > > > {};
 991.481 +
 991.482 +template <class T, class B = ::boost::detail::empty_base>
 991.483 +struct bitwise1
 991.484 +    : xorable1<T
 991.485 +    , andable1<T
 991.486 +    , orable1<T, B
 991.487 +      > > > {};
 991.488 +
 991.489 +template <class T, class B = ::boost::detail::empty_base>
 991.490 +struct unit_steppable
 991.491 +    : incrementable<T
 991.492 +    , decrementable<T, B
 991.493 +      > > {};
 991.494 +
 991.495 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.496 +struct shiftable2
 991.497 +    : left_shiftable2<T, U
 991.498 +    , right_shiftable2<T, U, B
 991.499 +      > > {};
 991.500 +
 991.501 +template <class T, class B = ::boost::detail::empty_base>
 991.502 +struct shiftable1
 991.503 +    : left_shiftable1<T
 991.504 +    , right_shiftable1<T, B
 991.505 +      > > {};
 991.506 +
 991.507 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.508 +struct ring_operators2
 991.509 +    : additive2<T, U
 991.510 +    , subtractable2_left<T, U
 991.511 +    , multipliable2<T, U, B
 991.512 +      > > > {};
 991.513 +
 991.514 +template <class T, class B = ::boost::detail::empty_base>
 991.515 +struct ring_operators1
 991.516 +    : additive1<T
 991.517 +    , multipliable1<T, B
 991.518 +      > > {};
 991.519 +
 991.520 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.521 +struct ordered_ring_operators2
 991.522 +    : ring_operators2<T, U
 991.523 +    , totally_ordered2<T, U, B
 991.524 +      > > {};
 991.525 +
 991.526 +template <class T, class B = ::boost::detail::empty_base>
 991.527 +struct ordered_ring_operators1
 991.528 +    : ring_operators1<T
 991.529 +    , totally_ordered1<T, B
 991.530 +      > > {};
 991.531 +
 991.532 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.533 +struct field_operators2
 991.534 +    : ring_operators2<T, U
 991.535 +    , dividable2<T, U
 991.536 +    , dividable2_left<T, U, B
 991.537 +      > > > {};
 991.538 +
 991.539 +template <class T, class B = ::boost::detail::empty_base>
 991.540 +struct field_operators1
 991.541 +    : ring_operators1<T
 991.542 +    , dividable1<T, B
 991.543 +      > > {};
 991.544 +
 991.545 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.546 +struct ordered_field_operators2
 991.547 +    : field_operators2<T, U
 991.548 +    , totally_ordered2<T, U, B
 991.549 +      > > {};
 991.550 +
 991.551 +template <class T, class B = ::boost::detail::empty_base>
 991.552 +struct ordered_field_operators1
 991.553 +    : field_operators1<T
 991.554 +    , totally_ordered1<T, B
 991.555 +      > > {};
 991.556 +
 991.557 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.558 +struct euclidian_ring_operators2
 991.559 +    : ring_operators2<T, U
 991.560 +    , dividable2<T, U
 991.561 +    , dividable2_left<T, U
 991.562 +    , modable2<T, U
 991.563 +    , modable2_left<T, U, B
 991.564 +      > > > > > {};
 991.565 +
 991.566 +template <class T, class B = ::boost::detail::empty_base>
 991.567 +struct euclidian_ring_operators1
 991.568 +    : ring_operators1<T
 991.569 +    , dividable1<T
 991.570 +    , modable1<T, B
 991.571 +      > > > {};
 991.572 +
 991.573 +template <class T, class U, class B = ::boost::detail::empty_base>
 991.574 +struct ordered_euclidian_ring_operators2
 991.575 +    : totally_ordered2<T, U
 991.576 +    , euclidian_ring_operators2<T, U, B
 991.577 +      > > {};
 991.578 +
 991.579 +template <class T, class B = ::boost::detail::empty_base>
 991.580 +struct ordered_euclidian_ring_operators1
 991.581 +    : totally_ordered1<T
 991.582 +    , euclidian_ring_operators1<T, B
 991.583 +      > > {};
 991.584 +      
 991.585 +template <class T, class P, class B = ::boost::detail::empty_base>
 991.586 +struct input_iteratable
 991.587 +    : equality_comparable1<T
 991.588 +    , incrementable<T
 991.589 +    , dereferenceable<T, P, B
 991.590 +      > > > {};
 991.591 +
 991.592 +template <class T, class B = ::boost::detail::empty_base>
 991.593 +struct output_iteratable
 991.594 +    : incrementable<T, B
 991.595 +      > {};
 991.596 +
 991.597 +template <class T, class P, class B = ::boost::detail::empty_base>
 991.598 +struct forward_iteratable
 991.599 +    : input_iteratable<T, P, B
 991.600 +      > {};
 991.601 +
 991.602 +template <class T, class P, class B = ::boost::detail::empty_base>
 991.603 +struct bidirectional_iteratable
 991.604 +    : forward_iteratable<T, P
 991.605 +    , decrementable<T, B
 991.606 +      > > {};
 991.607 +
 991.608 +//  To avoid repeated derivation from equality_comparable,
 991.609 +//  which is an indirect base class of bidirectional_iterable,
 991.610 +//  random_access_iteratable must not be derived from totally_ordered1
 991.611 +//  but from less_than_comparable1 only. (Helmut Zeisel, 02-Dec-2001)
 991.612 +template <class T, class P, class D, class R, class B = ::boost::detail::empty_base>
 991.613 +struct random_access_iteratable
 991.614 +    : bidirectional_iteratable<T, P
 991.615 +    , less_than_comparable1<T
 991.616 +    , additive2<T, D
 991.617 +    , indexable<T, D, R, B
 991.618 +      > > > > {};
 991.619 +
 991.620 +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
 991.621 +} // namespace boost
 991.622 +#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
 991.623 +
 991.624 +
 991.625 +// BOOST_IMPORT_TEMPLATE1 .. BOOST_IMPORT_TEMPLATE4 -
 991.626 +//
 991.627 +// When BOOST_NO_OPERATORS_IN_NAMESPACE is defined we need a way to import an
 991.628 +// operator template into the boost namespace. BOOST_IMPORT_TEMPLATE1 is used
 991.629 +// for one-argument forms of operator templates; BOOST_IMPORT_TEMPLATE2 for
 991.630 +// two-argument forms. Note that these macros expect to be invoked from within
 991.631 +// boost.
 991.632 +
 991.633 +#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
 991.634 +
 991.635 +  // The template is already in boost so we have nothing to do.
 991.636 +# define BOOST_IMPORT_TEMPLATE4(template_name)
 991.637 +# define BOOST_IMPORT_TEMPLATE3(template_name)
 991.638 +# define BOOST_IMPORT_TEMPLATE2(template_name)
 991.639 +# define BOOST_IMPORT_TEMPLATE1(template_name)
 991.640 +
 991.641 +#else // BOOST_NO_OPERATORS_IN_NAMESPACE
 991.642 +
 991.643 +#  ifndef BOOST_NO_USING_TEMPLATE
 991.644 +
 991.645 +     // Bring the names in with a using-declaration
 991.646 +     // to avoid stressing the compiler.
 991.647 +#    define BOOST_IMPORT_TEMPLATE4(template_name) using ::template_name;
 991.648 +#    define BOOST_IMPORT_TEMPLATE3(template_name) using ::template_name;
 991.649 +#    define BOOST_IMPORT_TEMPLATE2(template_name) using ::template_name;
 991.650 +#    define BOOST_IMPORT_TEMPLATE1(template_name) using ::template_name;
 991.651 +
 991.652 +#  else
 991.653 +
 991.654 +     // Otherwise, because a Borland C++ 5.5 bug prevents a using declaration
 991.655 +     // from working, we are forced to use inheritance for that compiler.
 991.656 +#    define BOOST_IMPORT_TEMPLATE4(template_name)                                          \
 991.657 +     template <class T, class U, class V, class W, class B = ::boost::detail::empty_base>  \
 991.658 +     struct template_name : ::template_name<T, U, V, W, B> {};
 991.659 +
 991.660 +#    define BOOST_IMPORT_TEMPLATE3(template_name)                                 \
 991.661 +     template <class T, class U, class V, class B = ::boost::detail::empty_base>  \
 991.662 +     struct template_name : ::template_name<T, U, V, B> {};
 991.663 +
 991.664 +#    define BOOST_IMPORT_TEMPLATE2(template_name)                              \
 991.665 +     template <class T, class U, class B = ::boost::detail::empty_base>        \
 991.666 +     struct template_name : ::template_name<T, U, B> {};
 991.667 +
 991.668 +#    define BOOST_IMPORT_TEMPLATE1(template_name)                              \
 991.669 +     template <class T, class B = ::boost::detail::empty_base>                 \
 991.670 +     struct template_name : ::template_name<T, B> {};
 991.671 +
 991.672 +#  endif // BOOST_NO_USING_TEMPLATE
 991.673 +
 991.674 +#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
 991.675 +
 991.676 +//
 991.677 +// Here's where we put it all together, defining the xxxx forms of the templates
 991.678 +// in namespace boost. We also define specializations of is_chained_base<> for
 991.679 +// the xxxx, xxxx1, and xxxx2 templates, importing them into boost:: as
 991.680 +// necessary.
 991.681 +//
 991.682 +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 991.683 +
 991.684 +// is_chained_base<> - a traits class used to distinguish whether an operator
 991.685 +// template argument is being used for base class chaining, or is specifying a
 991.686 +// 2nd argument type.
 991.687 +
 991.688 +namespace boost {
 991.689 +// A type parameter is used instead of a plain bool because Borland's compiler
 991.690 +// didn't cope well with the more obvious non-type template parameter.
 991.691 +namespace detail {
 991.692 +  struct true_t {};
 991.693 +  struct false_t {};
 991.694 +} // namespace detail
 991.695 +
 991.696 +// Unspecialized version assumes that most types are not being used for base
 991.697 +// class chaining. We specialize for the operator templates defined in this
 991.698 +// library.
 991.699 +template<class T> struct is_chained_base {
 991.700 +  typedef ::boost::detail::false_t value;
 991.701 +};
 991.702 +
 991.703 +} // namespace boost
 991.704 +
 991.705 +// Import a 4-type-argument operator template into boost (if necessary) and
 991.706 +// provide a specialization of 'is_chained_base<>' for it.
 991.707 +# define BOOST_OPERATOR_TEMPLATE4(template_name4)                     \
 991.708 +  BOOST_IMPORT_TEMPLATE4(template_name4)                              \
 991.709 +  template<class T, class U, class V, class W, class B>               \
 991.710 +  struct is_chained_base< ::boost::template_name4<T, U, V, W, B> > {  \
 991.711 +    typedef ::boost::detail::true_t value;                            \
 991.712 +  };
 991.713 +
 991.714 +// Import a 3-type-argument operator template into boost (if necessary) and
 991.715 +// provide a specialization of 'is_chained_base<>' for it.
 991.716 +# define BOOST_OPERATOR_TEMPLATE3(template_name3)                     \
 991.717 +  BOOST_IMPORT_TEMPLATE3(template_name3)                              \
 991.718 +  template<class T, class U, class V, class B>                        \
 991.719 +  struct is_chained_base< ::boost::template_name3<T, U, V, B> > {     \
 991.720 +    typedef ::boost::detail::true_t value;                            \
 991.721 +  };
 991.722 +
 991.723 +// Import a 2-type-argument operator template into boost (if necessary) and
 991.724 +// provide a specialization of 'is_chained_base<>' for it.
 991.725 +# define BOOST_OPERATOR_TEMPLATE2(template_name2)                  \
 991.726 +  BOOST_IMPORT_TEMPLATE2(template_name2)                           \
 991.727 +  template<class T, class U, class B>                              \
 991.728 +  struct is_chained_base< ::boost::template_name2<T, U, B> > {     \
 991.729 +    typedef ::boost::detail::true_t value;                         \
 991.730 +  };
 991.731 +
 991.732 +// Import a 1-type-argument operator template into boost (if necessary) and
 991.733 +// provide a specialization of 'is_chained_base<>' for it.
 991.734 +# define BOOST_OPERATOR_TEMPLATE1(template_name1)                  \
 991.735 +  BOOST_IMPORT_TEMPLATE1(template_name1)                           \
 991.736 +  template<class T, class B>                                       \
 991.737 +  struct is_chained_base< ::boost::template_name1<T, B> > {        \
 991.738 +    typedef ::boost::detail::true_t value;                         \
 991.739 +  };
 991.740 +
 991.741 +// BOOST_OPERATOR_TEMPLATE(template_name) defines template_name<> such that it
 991.742 +// can be used for specifying both 1-argument and 2-argument forms. Requires the
 991.743 +// existence of two previously defined class templates named '<template_name>1'
 991.744 +// and '<template_name>2' which must implement the corresponding 1- and 2-
 991.745 +// argument forms.
 991.746 +//
 991.747 +// The template type parameter O == is_chained_base<U>::value is used to
 991.748 +// distinguish whether the 2nd argument to <template_name> is being used for
 991.749 +// base class chaining from another boost operator template or is describing a
 991.750 +// 2nd operand type. O == true_t only when U is actually an another operator
 991.751 +// template from the library. Partial specialization is used to select an
 991.752 +// implementation in terms of either '<template_name>1' or '<template_name>2'.
 991.753 +//
 991.754 +
 991.755 +# define BOOST_OPERATOR_TEMPLATE(template_name)                    \
 991.756 +template <class T                                                  \
 991.757 +         ,class U = T                                              \
 991.758 +         ,class B = ::boost::detail::empty_base                    \
 991.759 +         ,class O = typename is_chained_base<U>::value             \
 991.760 +         >                                                         \
 991.761 +struct template_name : template_name##2<T, U, B> {};               \
 991.762 +                                                                   \
 991.763 +template<class T, class U, class B>                                \
 991.764 +struct template_name<T, U, B, ::boost::detail::true_t>             \
 991.765 +  : template_name##1<T, U> {};                                     \
 991.766 +                                                                   \
 991.767 +template <class T, class B>                                        \
 991.768 +struct template_name<T, T, B, ::boost::detail::false_t>            \
 991.769 +  : template_name##1<T, B> {};                                     \
 991.770 +                                                                   \
 991.771 +template<class T, class U, class B, class O>                       \
 991.772 +struct is_chained_base< ::boost::template_name<T, U, B, O> > {     \
 991.773 +  typedef ::boost::detail::true_t value;                           \
 991.774 +};                                                                 \
 991.775 +                                                                   \
 991.776 +BOOST_OPERATOR_TEMPLATE2(template_name##2)                         \
 991.777 +BOOST_OPERATOR_TEMPLATE1(template_name##1)
 991.778 +
 991.779 +
 991.780 +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 991.781 +
 991.782 +#  define BOOST_OPERATOR_TEMPLATE4(template_name4) \
 991.783 +        BOOST_IMPORT_TEMPLATE4(template_name4)
 991.784 +#  define BOOST_OPERATOR_TEMPLATE3(template_name3) \
 991.785 +        BOOST_IMPORT_TEMPLATE3(template_name3)
 991.786 +#  define BOOST_OPERATOR_TEMPLATE2(template_name2) \
 991.787 +        BOOST_IMPORT_TEMPLATE2(template_name2)
 991.788 +#  define BOOST_OPERATOR_TEMPLATE1(template_name1) \
 991.789 +        BOOST_IMPORT_TEMPLATE1(template_name1)
 991.790 +
 991.791 +   // In this case we can only assume that template_name<> is equivalent to the
 991.792 +   // more commonly needed template_name1<> form.
 991.793 +#  define BOOST_OPERATOR_TEMPLATE(template_name)                   \
 991.794 +   template <class T, class B = ::boost::detail::empty_base>       \
 991.795 +   struct template_name : template_name##1<T, B> {};
 991.796 +
 991.797 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 991.798 +
 991.799 +namespace boost {
 991.800 +    
 991.801 +BOOST_OPERATOR_TEMPLATE(less_than_comparable)
 991.802 +BOOST_OPERATOR_TEMPLATE(equality_comparable)
 991.803 +BOOST_OPERATOR_TEMPLATE(multipliable)
 991.804 +BOOST_OPERATOR_TEMPLATE(addable)
 991.805 +BOOST_OPERATOR_TEMPLATE(subtractable)
 991.806 +BOOST_OPERATOR_TEMPLATE2(subtractable2_left)
 991.807 +BOOST_OPERATOR_TEMPLATE(dividable)
 991.808 +BOOST_OPERATOR_TEMPLATE2(dividable2_left)
 991.809 +BOOST_OPERATOR_TEMPLATE(modable)
 991.810 +BOOST_OPERATOR_TEMPLATE2(modable2_left)
 991.811 +BOOST_OPERATOR_TEMPLATE(xorable)
 991.812 +BOOST_OPERATOR_TEMPLATE(andable)
 991.813 +BOOST_OPERATOR_TEMPLATE(orable)
 991.814 +
 991.815 +BOOST_OPERATOR_TEMPLATE1(incrementable)
 991.816 +BOOST_OPERATOR_TEMPLATE1(decrementable)
 991.817 +
 991.818 +BOOST_OPERATOR_TEMPLATE2(dereferenceable)
 991.819 +BOOST_OPERATOR_TEMPLATE3(indexable)
 991.820 +
 991.821 +BOOST_OPERATOR_TEMPLATE(left_shiftable)
 991.822 +BOOST_OPERATOR_TEMPLATE(right_shiftable)
 991.823 +BOOST_OPERATOR_TEMPLATE(equivalent)
 991.824 +BOOST_OPERATOR_TEMPLATE(partially_ordered)
 991.825 +
 991.826 +BOOST_OPERATOR_TEMPLATE(totally_ordered)
 991.827 +BOOST_OPERATOR_TEMPLATE(additive)
 991.828 +BOOST_OPERATOR_TEMPLATE(multiplicative)
 991.829 +BOOST_OPERATOR_TEMPLATE(integer_multiplicative)
 991.830 +BOOST_OPERATOR_TEMPLATE(arithmetic)
 991.831 +BOOST_OPERATOR_TEMPLATE(integer_arithmetic)
 991.832 +BOOST_OPERATOR_TEMPLATE(bitwise)
 991.833 +BOOST_OPERATOR_TEMPLATE1(unit_steppable)
 991.834 +BOOST_OPERATOR_TEMPLATE(shiftable)
 991.835 +BOOST_OPERATOR_TEMPLATE(ring_operators)
 991.836 +BOOST_OPERATOR_TEMPLATE(ordered_ring_operators)
 991.837 +BOOST_OPERATOR_TEMPLATE(field_operators)
 991.838 +BOOST_OPERATOR_TEMPLATE(ordered_field_operators)
 991.839 +BOOST_OPERATOR_TEMPLATE(euclidian_ring_operators)
 991.840 +BOOST_OPERATOR_TEMPLATE(ordered_euclidian_ring_operators)
 991.841 +BOOST_OPERATOR_TEMPLATE2(input_iteratable)
 991.842 +BOOST_OPERATOR_TEMPLATE1(output_iteratable)
 991.843 +BOOST_OPERATOR_TEMPLATE2(forward_iteratable)
 991.844 +BOOST_OPERATOR_TEMPLATE2(bidirectional_iteratable)
 991.845 +BOOST_OPERATOR_TEMPLATE4(random_access_iteratable)
 991.846 +
 991.847 +#undef BOOST_OPERATOR_TEMPLATE
 991.848 +#undef BOOST_OPERATOR_TEMPLATE4
 991.849 +#undef BOOST_OPERATOR_TEMPLATE3
 991.850 +#undef BOOST_OPERATOR_TEMPLATE2
 991.851 +#undef BOOST_OPERATOR_TEMPLATE1
 991.852 +#undef BOOST_IMPORT_TEMPLATE1
 991.853 +#undef BOOST_IMPORT_TEMPLATE2
 991.854 +#undef BOOST_IMPORT_TEMPLATE3
 991.855 +#undef BOOST_IMPORT_TEMPLATE4
 991.856 +
 991.857 +// The following 'operators' classes can only be used portably if the derived class
 991.858 +// declares ALL of the required member operators.
 991.859 +template <class T, class U>
 991.860 +struct operators2
 991.861 +    : totally_ordered2<T,U
 991.862 +    , integer_arithmetic2<T,U
 991.863 +    , bitwise2<T,U
 991.864 +      > > > {};
 991.865 +
 991.866 +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 991.867 +template <class T, class U = T>
 991.868 +struct operators : operators2<T, U> {};
 991.869 +
 991.870 +template <class T> struct operators<T, T>
 991.871 +#else
 991.872 +template <class T> struct operators
 991.873 +#endif
 991.874 +    : totally_ordered<T
 991.875 +    , integer_arithmetic<T
 991.876 +    , bitwise<T
 991.877 +    , unit_steppable<T
 991.878 +      > > > > {};
 991.879 +
 991.880 +//  Iterator helper classes (contributed by Jeremy Siek) -------------------//
 991.881 +//  (Input and output iterator helpers contributed by Daryle Walker) -------//
 991.882 +//  (Changed to use combined operator classes by Daryle Walker) ------------//
 991.883 +template <class T,
 991.884 +          class V,
 991.885 +          class D = std::ptrdiff_t,
 991.886 +          class P = V const *,
 991.887 +          class R = V const &>
 991.888 +struct input_iterator_helper
 991.889 +  : input_iteratable<T, P
 991.890 +  , boost::iterator<std::input_iterator_tag, V, D, P, R
 991.891 +    > > {};
 991.892 +
 991.893 +template<class T>
 991.894 +struct output_iterator_helper
 991.895 +  : output_iteratable<T
 991.896 +  , boost::iterator<std::output_iterator_tag, void, void, void, void
 991.897 +  > >
 991.898 +{
 991.899 +  T& operator*()  { return static_cast<T&>(*this); }
 991.900 +  T& operator++() { return static_cast<T&>(*this); }
 991.901 +};
 991.902 +
 991.903 +template <class T,
 991.904 +          class V,
 991.905 +          class D = std::ptrdiff_t,
 991.906 +          class P = V*,
 991.907 +          class R = V&>
 991.908 +struct forward_iterator_helper
 991.909 +  : forward_iteratable<T, P
 991.910 +  , boost::iterator<std::forward_iterator_tag, V, D, P, R
 991.911 +    > > {};
 991.912 +
 991.913 +template <class T,
 991.914 +          class V,
 991.915 +          class D = std::ptrdiff_t,
 991.916 +          class P = V*,
 991.917 +          class R = V&>
 991.918 +struct bidirectional_iterator_helper
 991.919 +  : bidirectional_iteratable<T, P
 991.920 +  , boost::iterator<std::bidirectional_iterator_tag, V, D, P, R
 991.921 +    > > {};
 991.922 +
 991.923 +template <class T,
 991.924 +          class V, 
 991.925 +          class D = std::ptrdiff_t,
 991.926 +          class P = V*,
 991.927 +          class R = V&>
 991.928 +struct random_access_iterator_helper
 991.929 +  : random_access_iteratable<T, P, D, R
 991.930 +  , boost::iterator<std::random_access_iterator_tag, V, D, P, R
 991.931 +    > >
 991.932 +{
 991.933 +  friend D requires_difference_operator(const T& x, const T& y) {
 991.934 +    return x - y;
 991.935 +  }
 991.936 +}; // random_access_iterator_helper
 991.937 +
 991.938 +} // namespace boost
 991.939 +
 991.940 +#if defined(__sgi) && !defined(__GNUC__)
 991.941 +#pragma reset woff 1234
 991.942 +#endif
 991.943 +
 991.944 +#endif // BOOST_OPERATORS_HPP
   992.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   992.2 +++ b/epoc32/include/stdapis/boost/lambda/lambda.hpp	Wed Mar 31 12:27:01 2010 +0100
   992.3 @@ -0,0 +1,29 @@
   992.4 +
   992.5 +#ifndef BOOST_MPL_LAMBDA_HPP_INCLUDED
   992.6 +#define BOOST_MPL_LAMBDA_HPP_INCLUDED
   992.7 +
   992.8 +// Copyright Aleksey Gurtovoy 2001-2004
   992.9 +//
  992.10 +// Distributed under the Boost Software License, Version 1.0. 
  992.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
  992.12 +// http://www.boost.org/LICENSE_1_0.txt)
  992.13 +//
  992.14 +// See http://www.boost.org/libs/mpl for documentation.
  992.15 +
  992.16 +// $Source: /cvsroot/boost/boost/boost/mpl/lambda.hpp,v $
  992.17 +// $Date: 2004/09/02 15:40:41 $
  992.18 +// $Revision: 1.5 $
  992.19 +
  992.20 +#include <boost/mpl/lambda_fwd.hpp>
  992.21 +#include <boost/mpl/bind.hpp>
  992.22 +#include <boost/mpl/aux_/config/lambda.hpp>
  992.23 +
  992.24 +#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
  992.25 +#   include <boost/mpl/aux_/full_lambda.hpp>
  992.26 +#else
  992.27 +#   include <boost/mpl/aux_/lambda_no_ctps.hpp>
  992.28 +#   include <boost/mpl/aux_/lambda_support.hpp>
  992.29 +#   define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
  992.30 +#endif
  992.31 +
  992.32 +#endif // BOOST_MPL_LAMBDA_HPP_INCLUDED
   993.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   993.2 +++ b/epoc32/include/stdapis/boost/limits.hpp	Wed Mar 31 12:27:01 2010 +0100
   993.3 @@ -0,0 +1,29 @@
   993.4 +# /* Copyright (C) 2001
   993.5 +#  * Housemarque Oy
   993.6 +#  * http://www.housemarque.com
   993.7 +#  *
   993.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
   993.9 +#  * accompanying file LICENSE_1_0.txt or copy at
  993.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
  993.11 +#  */
  993.12 +#
  993.13 +# /* Revised by Paul Mensonides (2002) */
  993.14 +#
  993.15 +# /* See http://www.boost.org for most recent version. */
  993.16 +#
  993.17 +# ifndef BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
  993.18 +# define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
  993.19 +#
  993.20 +# define BOOST_PP_LIMIT_MAG 256
  993.21 +# define BOOST_PP_LIMIT_TUPLE 25
  993.22 +# define BOOST_PP_LIMIT_DIM 3
  993.23 +# define BOOST_PP_LIMIT_REPEAT 256
  993.24 +# define BOOST_PP_LIMIT_WHILE 256
  993.25 +# define BOOST_PP_LIMIT_FOR 256
  993.26 +# define BOOST_PP_LIMIT_ITERATION 256
  993.27 +# define BOOST_PP_LIMIT_ITERATION_DIM 3
  993.28 +# define BOOST_PP_LIMIT_SEQ 256
  993.29 +# define BOOST_PP_LIMIT_SLOT_SIG 10
  993.30 +# define BOOST_PP_LIMIT_SLOT_COUNT 5
  993.31 +#
  993.32 +# endif
   994.1 --- a/epoc32/include/stdapis/boost/math/complex.hpp	Tue Mar 16 16:12:26 2010 +0000
   994.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   994.3 @@ -1,32 +0,0 @@
   994.4 -//  (C) Copyright John Maddock 2005.
   994.5 -//  Use, modification and distribution are subject to the
   994.6 -//  Boost Software License, Version 1.0. (See accompanying file
   994.7 -//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
   994.8 -
   994.9 -#ifndef BOOST_MATH_COMPLEX_INCLUDED
  994.10 -#define BOOST_MATH_COMPLEX_INCLUDED
  994.11 -
  994.12 -#ifndef BOOST_MATH_COMPLEX_ASIN_INCLUDED
  994.13 -#  include <boost/math/complex/asin.hpp>
  994.14 -#endif
  994.15 -#ifndef BOOST_MATH_COMPLEX_ASINH_INCLUDED
  994.16 -#  include <boost/math/complex/asinh.hpp>
  994.17 -#endif
  994.18 -#ifndef BOOST_MATH_COMPLEX_ACOS_INCLUDED
  994.19 -#  include <boost/math/complex/acos.hpp>
  994.20 -#endif
  994.21 -#ifndef BOOST_MATH_COMPLEX_ACOSH_INCLUDED
  994.22 -#  include <boost/math/complex/acosh.hpp>
  994.23 -#endif
  994.24 -#ifndef BOOST_MATH_COMPLEX_ATAN_INCLUDED
  994.25 -#  include <boost/math/complex/atan.hpp>
  994.26 -#endif
  994.27 -#ifndef BOOST_MATH_COMPLEX_ATANH_INCLUDED
  994.28 -#  include <boost/math/complex/atanh.hpp>
  994.29 -#endif
  994.30 -#ifndef BOOST_MATH_COMPLEX_FABS_INCLUDED
  994.31 -#  include <boost/math/complex/fabs.hpp>
  994.32 -#endif
  994.33 -
  994.34 -
  994.35 -#endif // BOOST_MATH_COMPLEX_INCLUDED
   995.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   995.2 +++ b/epoc32/include/stdapis/boost/math/complex/acosh.hpp	Wed Mar 31 12:27:01 2010 +0100
   995.3 @@ -0,0 +1,198 @@
   995.4 +//    boost asinh.hpp header file
   995.5 +
   995.6 +//  (C) Copyright Eric Ford 2001 & Hubert Holin.
   995.7 +//  Distributed under the Boost Software License, Version 1.0. (See
   995.8 +//  accompanying file LICENSE_1_0.txt or copy at
   995.9 +//  http://www.boost.org/LICENSE_1_0.txt)
  995.10 +
  995.11 +// See http://www.boost.org for updates, documentation, and revision history.
  995.12 +
  995.13 +#ifndef BOOST_ACOSH_HPP
  995.14 +#define BOOST_ACOSH_HPP
  995.15 +
  995.16 +
  995.17 +#include <cmath>
  995.18 +#include <limits>
  995.19 +#include <string>
  995.20 +#include <stdexcept>
  995.21 +
  995.22 +
  995.23 +#include <boost/config.hpp>
  995.24 +
  995.25 +
  995.26 +// This is the inverse of the hyperbolic cosine function.
  995.27 +
  995.28 +namespace boost
  995.29 +{
  995.30 +    namespace math
  995.31 +    {
  995.32 +#if defined(__GNUC__) && (__GNUC__ < 3)
  995.33 +        // gcc 2.x ignores function scope using declarations,
  995.34 +        // put them in the scope of the enclosing namespace instead:
  995.35 +        
  995.36 +        using    ::std::abs;
  995.37 +        using    ::std::sqrt;
  995.38 +        using    ::std::log;
  995.39 +        
  995.40 +        using    ::std::numeric_limits;
  995.41 +#endif
  995.42 +        
  995.43 +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  995.44 +        // This is the main fare
  995.45 +        
  995.46 +        template<typename T>
  995.47 +        inline T    acosh(const T x)
  995.48 +        {
  995.49 +            using    ::std::abs;
  995.50 +            using    ::std::sqrt;
  995.51 +            using    ::std::log;
  995.52 +            
  995.53 +            using    ::std::numeric_limits;
  995.54 +            
  995.55 +            
  995.56 +            T const    one = static_cast<T>(1);
  995.57 +            T const    two = static_cast<T>(2);
  995.58 +            
  995.59 +            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
  995.60 +            static T const    taylor_n_bound = sqrt(taylor_2_bound);
  995.61 +            static T const    upper_taylor_2_bound = one/taylor_2_bound;
  995.62 +            
  995.63 +            if        (x < one)
  995.64 +            {
  995.65 +                if    (numeric_limits<T>::has_quiet_NaN)
  995.66 +                {
  995.67 +                    return(numeric_limits<T>::quiet_NaN());
  995.68 +                }
  995.69 +                else
  995.70 +                {
  995.71 +                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
  995.72 +                    ::std::domain_error  bad_argument(error_reporting);
  995.73 +                    
  995.74 +                    throw(bad_argument);
  995.75 +                }
  995.76 +            }
  995.77 +            else if    (x >= taylor_n_bound)
  995.78 +            {
  995.79 +                if    (x > upper_taylor_2_bound)
  995.80 +                {
  995.81 +                    // approximation by laurent series in 1/x at 0+ order from -1 to 0
  995.82 +                    return( log( x*two) );
  995.83 +                }
  995.84 +                else
  995.85 +                {
  995.86 +                    return( log( x + sqrt(x*x-one) ) );
  995.87 +                }
  995.88 +            }
  995.89 +            else
  995.90 +            {
  995.91 +                T    y = sqrt(x-one);
  995.92 +                
  995.93 +                // approximation by taylor series in y at 0 up to order 2
  995.94 +                T    result = y;
  995.95 +                
  995.96 +                if    (y >= taylor_2_bound)
  995.97 +                {
  995.98 +                    T    y3 = y*y*y;
  995.99 +                    
 995.100 +                    // approximation by taylor series in y at 0 up to order 4
 995.101 +                    result -= y3/static_cast<T>(12);
 995.102 +                }
 995.103 +                
 995.104 +                return(sqrt(static_cast<T>(2))*result);
 995.105 +            }
 995.106 +        }
 995.107 +#else
 995.108 +        // These are implementation details (for main fare see below)
 995.109 +        
 995.110 +        namespace detail
 995.111 +        {
 995.112 +            template    <
 995.113 +                            typename T,
 995.114 +                            bool QuietNanSupported
 995.115 +                        >
 995.116 +            struct    acosh_helper2_t
 995.117 +            {
 995.118 +                static T    get_NaN()
 995.119 +                {
 995.120 +                    return(::std::numeric_limits<T>::quiet_NaN());
 995.121 +                }
 995.122 +            };  // boost::detail::acosh_helper2_t
 995.123 +            
 995.124 +            
 995.125 +            template<typename T>
 995.126 +            struct    acosh_helper2_t<T, false>
 995.127 +            {
 995.128 +                static T    get_NaN()
 995.129 +                {
 995.130 +                    ::std::string        error_reporting("Argument to acosh is greater than or equal to +1!");
 995.131 +                    ::std::domain_error  bad_argument(error_reporting);
 995.132 +                    
 995.133 +                    throw(bad_argument);
 995.134 +                }
 995.135 +            };  // boost::detail::acosh_helper2_t
 995.136 +        
 995.137 +        }  // boost::detail
 995.138 +        
 995.139 +        
 995.140 +        // This is the main fare
 995.141 +        
 995.142 +        template<typename T>
 995.143 +        inline T    acosh(const T x)
 995.144 +        {
 995.145 +            using    ::std::abs;
 995.146 +            using    ::std::sqrt;
 995.147 +            using    ::std::log;
 995.148 +            
 995.149 +            using    ::std::numeric_limits;
 995.150 +            
 995.151 +            typedef    detail::acosh_helper2_t<T, std::numeric_limits<T>::has_quiet_NaN>    helper2_type;
 995.152 +            
 995.153 +            
 995.154 +            T const    one = static_cast<T>(1);
 995.155 +            T const    two = static_cast<T>(2);
 995.156 +            
 995.157 +            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
 995.158 +            static T const    taylor_n_bound = sqrt(taylor_2_bound);
 995.159 +            static T const    upper_taylor_2_bound = one/taylor_2_bound;
 995.160 +            
 995.161 +            if        (x < one)
 995.162 +            {
 995.163 +                return(helper2_type::get_NaN());
 995.164 +            }
 995.165 +            else if    (x >= taylor_n_bound)
 995.166 +            {
 995.167 +                if    (x > upper_taylor_2_bound)
 995.168 +                {
 995.169 +                    // approximation by laurent series in 1/x at 0+ order from -1 to 0
 995.170 +                    return( log( x*two) );
 995.171 +                }
 995.172 +                else
 995.173 +                {
 995.174 +                    return( log( x + sqrt(x*x-one) ) );
 995.175 +                }
 995.176 +            }
 995.177 +            else
 995.178 +            {
 995.179 +                T    y = sqrt(x-one);
 995.180 +                
 995.181 +                // approximation by taylor series in y at 0 up to order 2
 995.182 +                T    result = y;
 995.183 +                
 995.184 +                if    (y >= taylor_2_bound)
 995.185 +                {
 995.186 +                    T    y3 = y*y*y;
 995.187 +                    
 995.188 +                    // approximation by taylor series in y at 0 up to order 4
 995.189 +                    result -= y3/static_cast<T>(12);
 995.190 +                }
 995.191 +                
 995.192 +                return(sqrt(static_cast<T>(2))*result);
 995.193 +            }
 995.194 +        }
 995.195 +#endif /* defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) */
 995.196 +    }
 995.197 +}
 995.198 +
 995.199 +#endif /* BOOST_ACOSH_HPP */
 995.200 +
 995.201 +
   996.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   996.2 +++ b/epoc32/include/stdapis/boost/math/complex/asinh.hpp	Wed Mar 31 12:27:01 2010 +0100
   996.3 @@ -0,0 +1,101 @@
   996.4 +//    boost asinh.hpp header file
   996.5 +
   996.6 +//  (C) Copyright Eric Ford & Hubert Holin 2001.
   996.7 +//  Distributed under the Boost Software License, Version 1.0. (See
   996.8 +//  accompanying file LICENSE_1_0.txt or copy at
   996.9 +//  http://www.boost.org/LICENSE_1_0.txt)
  996.10 +
  996.11 +// See http://www.boost.org for updates, documentation, and revision history.
  996.12 +
  996.13 +#ifndef BOOST_ASINH_HPP
  996.14 +#define BOOST_ASINH_HPP
  996.15 +
  996.16 +
  996.17 +#include <cmath>
  996.18 +#include <limits>
  996.19 +#include <string>
  996.20 +#include <stdexcept>
  996.21 +
  996.22 +
  996.23 +#include <boost/config.hpp>
  996.24 +
  996.25 +
  996.26 +// This is the inverse of the hyperbolic sine function.
  996.27 +
  996.28 +namespace boost
  996.29 +{
  996.30 +    namespace math
  996.31 +    {
  996.32 +#if defined(__GNUC__) && (__GNUC__ < 3)
  996.33 +        // gcc 2.x ignores function scope using declarations,
  996.34 +        // put them in the scope of the enclosing namespace instead:
  996.35 +        
  996.36 +        using    ::std::abs;
  996.37 +        using    ::std::sqrt;
  996.38 +        using    ::std::log;
  996.39 +        
  996.40 +        using    ::std::numeric_limits;
  996.41 +#endif
  996.42 +        
  996.43 +        template<typename T>
  996.44 +        inline T    asinh(const T x)
  996.45 +        {
  996.46 +            using    ::std::abs;
  996.47 +            using    ::std::sqrt;
  996.48 +            using    ::std::log;
  996.49 +            
  996.50 +            using    ::std::numeric_limits;
  996.51 +            
  996.52 +            
  996.53 +            T const            one = static_cast<T>(1);
  996.54 +            T const            two = static_cast<T>(2);
  996.55 +            
  996.56 +            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
  996.57 +            static T const    taylor_n_bound = sqrt(taylor_2_bound);
  996.58 +            static T const    upper_taylor_2_bound = one/taylor_2_bound;
  996.59 +            static T const    upper_taylor_n_bound = one/taylor_n_bound;
  996.60 +            
  996.61 +            if        (x >= +taylor_n_bound)
  996.62 +            {
  996.63 +                if        (x > upper_taylor_n_bound)
  996.64 +                {
  996.65 +                    if        (x > upper_taylor_2_bound)
  996.66 +                    {
  996.67 +                        // approximation by laurent series in 1/x at 0+ order from -1 to 0
  996.68 +                        return( log( x * two) );
  996.69 +                    }
  996.70 +                    else
  996.71 +                    {
  996.72 +                        // approximation by laurent series in 1/x at 0+ order from -1 to 1
  996.73 +                        return( log( x*two + (one/(x*two)) ) );
  996.74 +                    }
  996.75 +                }
  996.76 +                else
  996.77 +                {
  996.78 +                    return( log( x + sqrt(x*x+one) ) );
  996.79 +                }
  996.80 +            }
  996.81 +            else if    (x <= -taylor_n_bound)
  996.82 +            {
  996.83 +                return(-asinh(-x));
  996.84 +            }
  996.85 +            else
  996.86 +            {
  996.87 +                // approximation by taylor series in x at 0 up to order 2
  996.88 +                T    result = x;
  996.89 +                
  996.90 +                if    (abs(x) >= taylor_2_bound)
  996.91 +                {
  996.92 +                    T    x3 = x*x*x;
  996.93 +                    
  996.94 +                    // approximation by taylor series in x at 0 up to order 4
  996.95 +                    result -= x3/static_cast<T>(6);
  996.96 +                }
  996.97 +                
  996.98 +                return(result);
  996.99 +            }
 996.100 +        }
 996.101 +    }
 996.102 +}
 996.103 +
 996.104 +#endif /* BOOST_ASINH_HPP */
   997.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   997.2 +++ b/epoc32/include/stdapis/boost/math/complex/atanh.hpp	Wed Mar 31 12:27:01 2010 +0100
   997.3 @@ -0,0 +1,267 @@
   997.4 +//    boost atanh.hpp header file
   997.5 +
   997.6 +//  (C) Copyright Hubert Holin 2001.
   997.7 +//  Distributed under the Boost Software License, Version 1.0. (See
   997.8 +//  accompanying file LICENSE_1_0.txt or copy at
   997.9 +//  http://www.boost.org/LICENSE_1_0.txt)
  997.10 +
  997.11 +// See http://www.boost.org for updates, documentation, and revision history.
  997.12 +
  997.13 +#ifndef BOOST_ATANH_HPP
  997.14 +#define BOOST_ATANH_HPP
  997.15 +
  997.16 +
  997.17 +#include <cmath>
  997.18 +#include <limits>
  997.19 +#include <string>
  997.20 +#include <stdexcept>
  997.21 +
  997.22 +
  997.23 +#include <boost/config.hpp>
  997.24 +
  997.25 +
  997.26 +// This is the inverse of the hyperbolic tangent function.
  997.27 +
  997.28 +namespace boost
  997.29 +{
  997.30 +    namespace math
  997.31 +    {
  997.32 +#if defined(__GNUC__) && (__GNUC__ < 3)
  997.33 +        // gcc 2.x ignores function scope using declarations,
  997.34 +        // put them in the scope of the enclosing namespace instead:
  997.35 +        
  997.36 +        using    ::std::abs;
  997.37 +        using    ::std::sqrt;
  997.38 +        using    ::std::log;
  997.39 +        
  997.40 +        using    ::std::numeric_limits;
  997.41 +#endif
  997.42 +        
  997.43 +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  997.44 +        // This is the main fare
  997.45 +        
  997.46 +        template<typename T>
  997.47 +        inline T    atanh(const T x)
  997.48 +        {
  997.49 +            using    ::std::abs;
  997.50 +            using    ::std::sqrt;
  997.51 +            using    ::std::log;
  997.52 +            
  997.53 +            using    ::std::numeric_limits;
  997.54 +            
  997.55 +            T const            one = static_cast<T>(1);
  997.56 +            T const            two = static_cast<T>(2);
  997.57 +            
  997.58 +            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
  997.59 +            static T const    taylor_n_bound = sqrt(taylor_2_bound);
  997.60 +            
  997.61 +            if        (x < -one)
  997.62 +            {
  997.63 +                if    (numeric_limits<T>::has_quiet_NaN)
  997.64 +                {
  997.65 +                    return(numeric_limits<T>::quiet_NaN());
  997.66 +                }
  997.67 +                else
  997.68 +                {
  997.69 +                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
  997.70 +                    ::std::domain_error  bad_argument(error_reporting);
  997.71 +                    
  997.72 +                    throw(bad_argument);
  997.73 +                }
  997.74 +            }
  997.75 +            else if    (x < -one+numeric_limits<T>::epsilon())
  997.76 +            {
  997.77 +                if    (numeric_limits<T>::has_infinity)
  997.78 +                {
  997.79 +                    return(-numeric_limits<T>::infinity());
  997.80 +                }
  997.81 +                else
  997.82 +                {
  997.83 +                    ::std::string        error_reporting("Argument to atanh is -1 (result: -Infinity)!");
  997.84 +                    ::std::out_of_range  bad_argument(error_reporting);
  997.85 +                    
  997.86 +                    throw(bad_argument);
  997.87 +                }
  997.88 +            }
  997.89 +            else if    (x > +one-numeric_limits<T>::epsilon())
  997.90 +            {
  997.91 +                if    (numeric_limits<T>::has_infinity)
  997.92 +                {
  997.93 +                    return(+numeric_limits<T>::infinity());
  997.94 +                }
  997.95 +                else
  997.96 +                {
  997.97 +                    ::std::string        error_reporting("Argument to atanh is +1 (result: +Infinity)!");
  997.98 +                    ::std::out_of_range  bad_argument(error_reporting);
  997.99 +                    
 997.100 +                    throw(bad_argument);
 997.101 +                }
 997.102 +            }
 997.103 +            else if    (x > +one)
 997.104 +            {
 997.105 +                if    (numeric_limits<T>::has_quiet_NaN)
 997.106 +                {
 997.107 +                    return(numeric_limits<T>::quiet_NaN());
 997.108 +                }
 997.109 +                else
 997.110 +                {
 997.111 +                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
 997.112 +                    ::std::domain_error  bad_argument(error_reporting);
 997.113 +                    
 997.114 +                    throw(bad_argument);
 997.115 +                }
 997.116 +            }
 997.117 +            else if    (abs(x) >= taylor_n_bound)
 997.118 +            {
 997.119 +                return(log( (one + x) / (one - x) ) / two);
 997.120 +            }
 997.121 +            else
 997.122 +            {
 997.123 +                // approximation by taylor series in x at 0 up to order 2
 997.124 +                T    result = x;
 997.125 +                
 997.126 +                if    (abs(x) >= taylor_2_bound)
 997.127 +                {
 997.128 +                    T    x3 = x*x*x;
 997.129 +                    
 997.130 +                    // approximation by taylor series in x at 0 up to order 4
 997.131 +                    result += x3/static_cast<T>(3);
 997.132 +                }
 997.133 +                
 997.134 +                return(result);
 997.135 +            }
 997.136 +        }
 997.137 +#else
 997.138 +        // These are implementation details (for main fare see below)
 997.139 +        
 997.140 +        namespace detail
 997.141 +        {
 997.142 +            template    <
 997.143 +                            typename T,
 997.144 +                            bool InfinitySupported
 997.145 +                        >
 997.146 +            struct    atanh_helper1_t
 997.147 +            {
 997.148 +                static T    get_pos_infinity()
 997.149 +                {
 997.150 +                    return(+::std::numeric_limits<T>::infinity());
 997.151 +                }
 997.152 +                
 997.153 +                static T    get_neg_infinity()
 997.154 +                {
 997.155 +                    return(-::std::numeric_limits<T>::infinity());
 997.156 +                }
 997.157 +            };    // boost::math::detail::atanh_helper1_t
 997.158 +            
 997.159 +            
 997.160 +            template<typename T>
 997.161 +            struct    atanh_helper1_t<T, false>
 997.162 +            {
 997.163 +                static T    get_pos_infinity()
 997.164 +                {
 997.165 +                    ::std::string        error_reporting("Argument to atanh is +1 (result: +Infinity)!");
 997.166 +                    ::std::out_of_range  bad_argument(error_reporting);
 997.167 +                    
 997.168 +                    throw(bad_argument);
 997.169 +                }
 997.170 +                
 997.171 +                static T    get_neg_infinity()
 997.172 +                {
 997.173 +                    ::std::string        error_reporting("Argument to atanh is -1 (result: -Infinity)!");
 997.174 +                    ::std::out_of_range  bad_argument(error_reporting);
 997.175 +                    
 997.176 +                    throw(bad_argument);
 997.177 +                }
 997.178 +            };    // boost::math::detail::atanh_helper1_t
 997.179 +            
 997.180 +            
 997.181 +            template    <
 997.182 +                            typename T,
 997.183 +                            bool QuietNanSupported
 997.184 +                        >
 997.185 +            struct    atanh_helper2_t
 997.186 +            {
 997.187 +                static T    get_NaN()
 997.188 +                {
 997.189 +                    return(::std::numeric_limits<T>::quiet_NaN());
 997.190 +                }
 997.191 +            };    // boost::detail::atanh_helper2_t
 997.192 +            
 997.193 +            
 997.194 +            template<typename T>
 997.195 +            struct    atanh_helper2_t<T, false>
 997.196 +            {
 997.197 +                static T    get_NaN()
 997.198 +                {
 997.199 +                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
 997.200 +                    ::std::domain_error  bad_argument(error_reporting);
 997.201 +                    
 997.202 +                    throw(bad_argument);
 997.203 +                }
 997.204 +            };    // boost::detail::atanh_helper2_t
 997.205 +        }    // boost::detail
 997.206 +        
 997.207 +        
 997.208 +        // This is the main fare
 997.209 +        
 997.210 +        template<typename T>
 997.211 +        inline T    atanh(const T x)
 997.212 +        {
 997.213 +            using    ::std::abs;
 997.214 +            using    ::std::sqrt;
 997.215 +            using    ::std::log;
 997.216 +            
 997.217 +            using    ::std::numeric_limits;
 997.218 +            
 997.219 +            typedef  detail::atanh_helper1_t<T, ::std::numeric_limits<T>::has_infinity>    helper1_type;
 997.220 +            typedef  detail::atanh_helper2_t<T, ::std::numeric_limits<T>::has_quiet_NaN>    helper2_type;
 997.221 +            
 997.222 +            
 997.223 +            T const           one = static_cast<T>(1);
 997.224 +            T const           two = static_cast<T>(2);
 997.225 +            
 997.226 +            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
 997.227 +            static T const    taylor_n_bound = sqrt(taylor_2_bound);
 997.228 +            
 997.229 +            if        (x < -one)
 997.230 +            {
 997.231 +                return(helper2_type::get_NaN());
 997.232 +            }
 997.233 +            else if    (x < -one+numeric_limits<T>::epsilon())
 997.234 +            {
 997.235 +                return(helper1_type::get_neg_infinity());
 997.236 +            }
 997.237 +            else if    (x > +one-numeric_limits<T>::epsilon())
 997.238 +            {
 997.239 +                return(helper1_type::get_pos_infinity());
 997.240 +            }
 997.241 +            else if    (x > +one)
 997.242 +            {
 997.243 +                return(helper2_type::get_NaN());
 997.244 +            }
 997.245 +            else if    (abs(x) >= taylor_n_bound)
 997.246 +            {
 997.247 +                return(log( (one + x) / (one - x) ) / two);
 997.248 +            }
 997.249 +            else
 997.250 +            {
 997.251 +                // approximation by taylor series in x at 0 up to order 2
 997.252 +                T    result = x;
 997.253 +                
 997.254 +                if    (abs(x) >= taylor_2_bound)
 997.255 +                {
 997.256 +                    T    x3 = x*x*x;
 997.257 +                    
 997.258 +                    // approximation by taylor series in x at 0 up to order 4
 997.259 +                    result += x3/static_cast<T>(3);
 997.260 +                }
 997.261 +                
 997.262 +                return(result);
 997.263 +            }
 997.264 +        }
 997.265 +#endif /* defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) */
 997.266 +    }
 997.267 +}
 997.268 +
 997.269 +#endif /* BOOST_ATANH_HPP */
 997.270 +
   998.1 --- a/epoc32/include/stdapis/boost/math/special_functions/acosh.hpp	Tue Mar 16 16:12:26 2010 +0000
   998.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   998.3 @@ -1,198 +0,0 @@
   998.4 -//    boost asinh.hpp header file
   998.5 -
   998.6 -//  (C) Copyright Eric Ford 2001 & Hubert Holin.
   998.7 -//  Distributed under the Boost Software License, Version 1.0. (See
   998.8 -//  accompanying file LICENSE_1_0.txt or copy at
   998.9 -//  http://www.boost.org/LICENSE_1_0.txt)
  998.10 -
  998.11 -// See http://www.boost.org for updates, documentation, and revision history.
  998.12 -
  998.13 -#ifndef BOOST_ACOSH_HPP
  998.14 -#define BOOST_ACOSH_HPP
  998.15 -
  998.16 -
  998.17 -#include <cmath>
  998.18 -#include <limits>
  998.19 -#include <string>
  998.20 -#include <stdexcept>
  998.21 -
  998.22 -
  998.23 -#include <boost/config.hpp>
  998.24 -
  998.25 -
  998.26 -// This is the inverse of the hyperbolic cosine function.
  998.27 -
  998.28 -namespace boost
  998.29 -{
  998.30 -    namespace math
  998.31 -    {
  998.32 -#if defined(__GNUC__) && (__GNUC__ < 3)
  998.33 -        // gcc 2.x ignores function scope using declarations,
  998.34 -        // put them in the scope of the enclosing namespace instead:
  998.35 -        
  998.36 -        using    ::std::abs;
  998.37 -        using    ::std::sqrt;
  998.38 -        using    ::std::log;
  998.39 -        
  998.40 -        using    ::std::numeric_limits;
  998.41 -#endif
  998.42 -        
  998.43 -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
  998.44 -        // This is the main fare
  998.45 -        
  998.46 -        template<typename T>
  998.47 -        inline T    acosh(const T x)
  998.48 -        {
  998.49 -            using    ::std::abs;
  998.50 -            using    ::std::sqrt;
  998.51 -            using    ::std::log;
  998.52 -            
  998.53 -            using    ::std::numeric_limits;
  998.54 -            
  998.55 -            
  998.56 -            T const    one = static_cast<T>(1);
  998.57 -            T const    two = static_cast<T>(2);
  998.58 -            
  998.59 -            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
  998.60 -            static T const    taylor_n_bound = sqrt(taylor_2_bound);
  998.61 -            static T const    upper_taylor_2_bound = one/taylor_2_bound;
  998.62 -            
  998.63 -            if        (x < one)
  998.64 -            {
  998.65 -                if    (numeric_limits<T>::has_quiet_NaN)
  998.66 -                {
  998.67 -                    return(numeric_limits<T>::quiet_NaN());
  998.68 -                }
  998.69 -                else
  998.70 -                {
  998.71 -                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
  998.72 -                    ::std::domain_error  bad_argument(error_reporting);
  998.73 -                    
  998.74 -                    throw(bad_argument);
  998.75 -                }
  998.76 -            }
  998.77 -            else if    (x >= taylor_n_bound)
  998.78 -            {
  998.79 -                if    (x > upper_taylor_2_bound)
  998.80 -                {
  998.81 -                    // approximation by laurent series in 1/x at 0+ order from -1 to 0
  998.82 -                    return( log( x*two) );
  998.83 -                }
  998.84 -                else
  998.85 -                {
  998.86 -                    return( log( x + sqrt(x*x-one) ) );
  998.87 -                }
  998.88 -            }
  998.89 -            else
  998.90 -            {
  998.91 -                T    y = sqrt(x-one);
  998.92 -                
  998.93 -                // approximation by taylor series in y at 0 up to order 2
  998.94 -                T    result = y;
  998.95 -                
  998.96 -                if    (y >= taylor_2_bound)
  998.97 -                {
  998.98 -                    T    y3 = y*y*y;
  998.99 -                    
 998.100 -                    // approximation by taylor series in y at 0 up to order 4
 998.101 -                    result -= y3/static_cast<T>(12);
 998.102 -                }
 998.103 -                
 998.104 -                return(sqrt(static_cast<T>(2))*result);
 998.105 -            }
 998.106 -        }
 998.107 -#else
 998.108 -        // These are implementation details (for main fare see below)
 998.109 -        
 998.110 -        namespace detail
 998.111 -        {
 998.112 -            template    <
 998.113 -                            typename T,
 998.114 -                            bool QuietNanSupported
 998.115 -                        >
 998.116 -            struct    acosh_helper2_t
 998.117 -            {
 998.118 -                static T    get_NaN()
 998.119 -                {
 998.120 -                    return(::std::numeric_limits<T>::quiet_NaN());
 998.121 -                }
 998.122 -            };  // boost::detail::acosh_helper2_t
 998.123 -            
 998.124 -            
 998.125 -            template<typename T>
 998.126 -            struct    acosh_helper2_t<T, false>
 998.127 -            {
 998.128 -                static T    get_NaN()
 998.129 -                {
 998.130 -                    ::std::string        error_reporting("Argument to acosh is greater than or equal to +1!");
 998.131 -                    ::std::domain_error  bad_argument(error_reporting);
 998.132 -                    
 998.133 -                    throw(bad_argument);
 998.134 -                }
 998.135 -            };  // boost::detail::acosh_helper2_t
 998.136 -        
 998.137 -        }  // boost::detail
 998.138 -        
 998.139 -        
 998.140 -        // This is the main fare
 998.141 -        
 998.142 -        template<typename T>
 998.143 -        inline T    acosh(const T x)
 998.144 -        {
 998.145 -            using    ::std::abs;
 998.146 -            using    ::std::sqrt;
 998.147 -            using    ::std::log;
 998.148 -            
 998.149 -            using    ::std::numeric_limits;
 998.150 -            
 998.151 -            typedef    detail::acosh_helper2_t<T, std::numeric_limits<T>::has_quiet_NaN>    helper2_type;
 998.152 -            
 998.153 -            
 998.154 -            T const    one = static_cast<T>(1);
 998.155 -            T const    two = static_cast<T>(2);
 998.156 -            
 998.157 -            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
 998.158 -            static T const    taylor_n_bound = sqrt(taylor_2_bound);
 998.159 -            static T const    upper_taylor_2_bound = one/taylor_2_bound;
 998.160 -            
 998.161 -            if        (x < one)
 998.162 -            {
 998.163 -                return(helper2_type::get_NaN());
 998.164 -            }
 998.165 -            else if    (x >= taylor_n_bound)
 998.166 -            {
 998.167 -                if    (x > upper_taylor_2_bound)
 998.168 -                {
 998.169 -                    // approximation by laurent series in 1/x at 0+ order from -1 to 0
 998.170 -                    return( log( x*two) );
 998.171 -                }
 998.172 -                else
 998.173 -                {
 998.174 -                    return( log( x + sqrt(x*x-one) ) );
 998.175 -                }
 998.176 -            }
 998.177 -            else
 998.178 -            {
 998.179 -                T    y = sqrt(x-one);
 998.180 -                
 998.181 -                // approximation by taylor series in y at 0 up to order 2
 998.182 -                T    result = y;
 998.183 -                
 998.184 -                if    (y >= taylor_2_bound)
 998.185 -                {
 998.186 -                    T    y3 = y*y*y;
 998.187 -                    
 998.188 -                    // approximation by taylor series in y at 0 up to order 4
 998.189 -                    result -= y3/static_cast<T>(12);
 998.190 -                }
 998.191 -                
 998.192 -                return(sqrt(static_cast<T>(2))*result);
 998.193 -            }
 998.194 -        }
 998.195 -#endif /* defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) */
 998.196 -    }
 998.197 -}
 998.198 -
 998.199 -#endif /* BOOST_ACOSH_HPP */
 998.200 -
 998.201 -
   999.1 --- a/epoc32/include/stdapis/boost/math/special_functions/asinh.hpp	Tue Mar 16 16:12:26 2010 +0000
   999.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
   999.3 @@ -1,101 +0,0 @@
   999.4 -//    boost asinh.hpp header file
   999.5 -
   999.6 -//  (C) Copyright Eric Ford & Hubert Holin 2001.
   999.7 -//  Distributed under the Boost Software License, Version 1.0. (See
   999.8 -//  accompanying file LICENSE_1_0.txt or copy at
   999.9 -//  http://www.boost.org/LICENSE_1_0.txt)
  999.10 -
  999.11 -// See http://www.boost.org for updates, documentation, and revision history.
  999.12 -
  999.13 -#ifndef BOOST_ASINH_HPP
  999.14 -#define BOOST_ASINH_HPP
  999.15 -
  999.16 -
  999.17 -#include <cmath>
  999.18 -#include <limits>
  999.19 -#include <string>
  999.20 -#include <stdexcept>
  999.21 -
  999.22 -
  999.23 -#include <boost/config.hpp>
  999.24 -
  999.25 -
  999.26 -// This is the inverse of the hyperbolic sine function.
  999.27 -
  999.28 -namespace boost
  999.29 -{
  999.30 -    namespace math
  999.31 -    {
  999.32 -#if defined(__GNUC__) && (__GNUC__ < 3)
  999.33 -        // gcc 2.x ignores function scope using declarations,
  999.34 -        // put them in the scope of the enclosing namespace instead:
  999.35 -        
  999.36 -        using    ::std::abs;
  999.37 -        using    ::std::sqrt;
  999.38 -        using    ::std::log;
  999.39 -        
  999.40 -        using    ::std::numeric_limits;
  999.41 -#endif
  999.42 -        
  999.43 -        template<typename T>
  999.44 -        inline T    asinh(const T x)
  999.45 -        {
  999.46 -            using    ::std::abs;
  999.47 -            using    ::std::sqrt;
  999.48 -            using    ::std::log;
  999.49 -            
  999.50 -            using    ::std::numeric_limits;
  999.51 -            
  999.52 -            
  999.53 -            T const            one = static_cast<T>(1);
  999.54 -            T const            two = static_cast<T>(2);
  999.55 -            
  999.56 -            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
  999.57 -            static T const    taylor_n_bound = sqrt(taylor_2_bound);
  999.58 -            static T const    upper_taylor_2_bound = one/taylor_2_bound;
  999.59 -            static T const    upper_taylor_n_bound = one/taylor_n_bound;
  999.60 -            
  999.61 -            if        (x >= +taylor_n_bound)
  999.62 -            {
  999.63 -                if        (x > upper_taylor_n_bound)
  999.64 -                {
  999.65 -                    if        (x > upper_taylor_2_bound)
  999.66 -                    {
  999.67 -                        // approximation by laurent series in 1/x at 0+ order from -1 to 0
  999.68 -                        return( log( x * two) );
  999.69 -                    }
  999.70 -                    else
  999.71 -                    {
  999.72 -                        // approximation by laurent series in 1/x at 0+ order from -1 to 1
  999.73 -                        return( log( x*two + (one/(x*two)) ) );
  999.74 -                    }
  999.75 -                }
  999.76 -                else
  999.77 -                {
  999.78 -                    return( log( x + sqrt(x*x+one) ) );
  999.79 -                }
  999.80 -            }
  999.81 -            else if    (x <= -taylor_n_bound)
  999.82 -            {
  999.83 -                return(-asinh(-x));
  999.84 -            }
  999.85 -            else
  999.86 -            {
  999.87 -                // approximation by taylor series in x at 0 up to order 2
  999.88 -                T    result = x;
  999.89 -                
  999.90 -                if    (abs(x) >= taylor_2_bound)
  999.91 -                {
  999.92 -                    T    x3 = x*x*x;
  999.93 -                    
  999.94 -                    // approximation by taylor series in x at 0 up to order 4
  999.95 -                    result -= x3/static_cast<T>(6);
  999.96 -                }
  999.97 -                
  999.98 -                return(result);
  999.99 -            }
 999.100 -        }
 999.101 -    }
 999.102 -}
 999.103 -
 999.104 -#endif /* BOOST_ASINH_HPP */
  1000.1 --- a/epoc32/include/stdapis/boost/math/special_functions/atanh.hpp	Tue Mar 16 16:12:26 2010 +0000
  1000.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1000.3 @@ -1,267 +0,0 @@
  1000.4 -//    boost atanh.hpp header file
  1000.5 -
  1000.6 -//  (C) Copyright Hubert Holin 2001.
  1000.7 -//  Distributed under the Boost Software License, Version 1.0. (See
  1000.8 -//  accompanying file LICENSE_1_0.txt or copy at
  1000.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1000.10 -
 1000.11 -// See http://www.boost.org for updates, documentation, and revision history.
 1000.12 -
 1000.13 -#ifndef BOOST_ATANH_HPP
 1000.14 -#define BOOST_ATANH_HPP
 1000.15 -
 1000.16 -
 1000.17 -#include <cmath>
 1000.18 -#include <limits>
 1000.19 -#include <string>
 1000.20 -#include <stdexcept>
 1000.21 -
 1000.22 -
 1000.23 -#include <boost/config.hpp>
 1000.24 -
 1000.25 -
 1000.26 -// This is the inverse of the hyperbolic tangent function.
 1000.27 -
 1000.28 -namespace boost
 1000.29 -{
 1000.30 -    namespace math
 1000.31 -    {
 1000.32 -#if defined(__GNUC__) && (__GNUC__ < 3)
 1000.33 -        // gcc 2.x ignores function scope using declarations,
 1000.34 -        // put them in the scope of the enclosing namespace instead:
 1000.35 -        
 1000.36 -        using    ::std::abs;
 1000.37 -        using    ::std::sqrt;
 1000.38 -        using    ::std::log;
 1000.39 -        
 1000.40 -        using    ::std::numeric_limits;
 1000.41 -#endif
 1000.42 -        
 1000.43 -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1000.44 -        // This is the main fare
 1000.45 -        
 1000.46 -        template<typename T>
 1000.47 -        inline T    atanh(const T x)
 1000.48 -        {
 1000.49 -            using    ::std::abs;
 1000.50 -            using    ::std::sqrt;
 1000.51 -            using    ::std::log;
 1000.52 -            
 1000.53 -            using    ::std::numeric_limits;
 1000.54 -            
 1000.55 -            T const            one = static_cast<T>(1);
 1000.56 -            T const            two = static_cast<T>(2);
 1000.57 -            
 1000.58 -            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
 1000.59 -            static T const    taylor_n_bound = sqrt(taylor_2_bound);
 1000.60 -            
 1000.61 -            if        (x < -one)
 1000.62 -            {
 1000.63 -                if    (numeric_limits<T>::has_quiet_NaN)
 1000.64 -                {
 1000.65 -                    return(numeric_limits<T>::quiet_NaN());
 1000.66 -                }
 1000.67 -                else
 1000.68 -                {
 1000.69 -                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
 1000.70 -                    ::std::domain_error  bad_argument(error_reporting);
 1000.71 -                    
 1000.72 -                    throw(bad_argument);
 1000.73 -                }
 1000.74 -            }
 1000.75 -            else if    (x < -one+numeric_limits<T>::epsilon())
 1000.76 -            {
 1000.77 -                if    (numeric_limits<T>::has_infinity)
 1000.78 -                {
 1000.79 -                    return(-numeric_limits<T>::infinity());
 1000.80 -                }
 1000.81 -                else
 1000.82 -                {
 1000.83 -                    ::std::string        error_reporting("Argument to atanh is -1 (result: -Infinity)!");
 1000.84 -                    ::std::out_of_range  bad_argument(error_reporting);
 1000.85 -                    
 1000.86 -                    throw(bad_argument);
 1000.87 -                }
 1000.88 -            }
 1000.89 -            else if    (x > +one-numeric_limits<T>::epsilon())
 1000.90 -            {
 1000.91 -                if    (numeric_limits<T>::has_infinity)
 1000.92 -                {
 1000.93 -                    return(+numeric_limits<T>::infinity());
 1000.94 -                }
 1000.95 -                else
 1000.96 -                {
 1000.97 -                    ::std::string        error_reporting("Argument to atanh is +1 (result: +Infinity)!");
 1000.98 -                    ::std::out_of_range  bad_argument(error_reporting);
 1000.99 -                    
1000.100 -                    throw(bad_argument);
1000.101 -                }
1000.102 -            }
1000.103 -            else if    (x > +one)
1000.104 -            {
1000.105 -                if    (numeric_limits<T>::has_quiet_NaN)
1000.106 -                {
1000.107 -                    return(numeric_limits<T>::quiet_NaN());
1000.108 -                }
1000.109 -                else
1000.110 -                {
1000.111 -                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
1000.112 -                    ::std::domain_error  bad_argument(error_reporting);
1000.113 -                    
1000.114 -                    throw(bad_argument);
1000.115 -                }
1000.116 -            }
1000.117 -            else if    (abs(x) >= taylor_n_bound)
1000.118 -            {
1000.119 -                return(log( (one + x) / (one - x) ) / two);
1000.120 -            }
1000.121 -            else
1000.122 -            {
1000.123 -                // approximation by taylor series in x at 0 up to order 2
1000.124 -                T    result = x;
1000.125 -                
1000.126 -                if    (abs(x) >= taylor_2_bound)
1000.127 -                {
1000.128 -                    T    x3 = x*x*x;
1000.129 -                    
1000.130 -                    // approximation by taylor series in x at 0 up to order 4
1000.131 -                    result += x3/static_cast<T>(3);
1000.132 -                }
1000.133 -                
1000.134 -                return(result);
1000.135 -            }
1000.136 -        }
1000.137 -#else
1000.138 -        // These are implementation details (for main fare see below)
1000.139 -        
1000.140 -        namespace detail
1000.141 -        {
1000.142 -            template    <
1000.143 -                            typename T,
1000.144 -                            bool InfinitySupported
1000.145 -                        >
1000.146 -            struct    atanh_helper1_t
1000.147 -            {
1000.148 -                static T    get_pos_infinity()
1000.149 -                {
1000.150 -                    return(+::std::numeric_limits<T>::infinity());
1000.151 -                }
1000.152 -                
1000.153 -                static T    get_neg_infinity()
1000.154 -                {
1000.155 -                    return(-::std::numeric_limits<T>::infinity());
1000.156 -                }
1000.157 -            };    // boost::math::detail::atanh_helper1_t
1000.158 -            
1000.159 -            
1000.160 -            template<typename T>
1000.161 -            struct    atanh_helper1_t<T, false>
1000.162 -            {
1000.163 -                static T    get_pos_infinity()
1000.164 -                {
1000.165 -                    ::std::string        error_reporting("Argument to atanh is +1 (result: +Infinity)!");
1000.166 -                    ::std::out_of_range  bad_argument(error_reporting);
1000.167 -                    
1000.168 -                    throw(bad_argument);
1000.169 -                }
1000.170 -                
1000.171 -                static T    get_neg_infinity()
1000.172 -                {
1000.173 -                    ::std::string        error_reporting("Argument to atanh is -1 (result: -Infinity)!");
1000.174 -                    ::std::out_of_range  bad_argument(error_reporting);
1000.175 -                    
1000.176 -                    throw(bad_argument);
1000.177 -                }
1000.178 -            };    // boost::math::detail::atanh_helper1_t
1000.179 -            
1000.180 -            
1000.181 -            template    <
1000.182 -                            typename T,
1000.183 -                            bool QuietNanSupported
1000.184 -                        >
1000.185 -            struct    atanh_helper2_t
1000.186 -            {
1000.187 -                static T    get_NaN()
1000.188 -                {
1000.189 -                    return(::std::numeric_limits<T>::quiet_NaN());
1000.190 -                }
1000.191 -            };    // boost::detail::atanh_helper2_t
1000.192 -            
1000.193 -            
1000.194 -            template<typename T>
1000.195 -            struct    atanh_helper2_t<T, false>
1000.196 -            {
1000.197 -                static T    get_NaN()
1000.198 -                {
1000.199 -                    ::std::string        error_reporting("Argument to atanh is strictly greater than +1 or strictly smaller than -1!");
1000.200 -                    ::std::domain_error  bad_argument(error_reporting);
1000.201 -                    
1000.202 -                    throw(bad_argument);
1000.203 -                }
1000.204 -            };    // boost::detail::atanh_helper2_t
1000.205 -        }    // boost::detail
1000.206 -        
1000.207 -        
1000.208 -        // This is the main fare
1000.209 -        
1000.210 -        template<typename T>
1000.211 -        inline T    atanh(const T x)
1000.212 -        {
1000.213 -            using    ::std::abs;
1000.214 -            using    ::std::sqrt;
1000.215 -            using    ::std::log;
1000.216 -            
1000.217 -            using    ::std::numeric_limits;
1000.218 -            
1000.219 -            typedef  detail::atanh_helper1_t<T, ::std::numeric_limits<T>::has_infinity>    helper1_type;
1000.220 -            typedef  detail::atanh_helper2_t<T, ::std::numeric_limits<T>::has_quiet_NaN>    helper2_type;
1000.221 -            
1000.222 -            
1000.223 -            T const           one = static_cast<T>(1);
1000.224 -            T const           two = static_cast<T>(2);
1000.225 -            
1000.226 -            static T const    taylor_2_bound = sqrt(numeric_limits<T>::epsilon());
1000.227 -            static T const    taylor_n_bound = sqrt(taylor_2_bound);
1000.228 -            
1000.229 -            if        (x < -one)
1000.230 -            {
1000.231 -                return(helper2_type::get_NaN());
1000.232 -            }
1000.233 -            else if    (x < -one+numeric_limits<T>::epsilon())
1000.234 -            {
1000.235 -                return(helper1_type::get_neg_infinity());
1000.236 -            }
1000.237 -            else if    (x > +one-numeric_limits<T>::epsilon())
1000.238 -            {
1000.239 -                return(helper1_type::get_pos_infinity());
1000.240 -            }
1000.241 -            else if    (x > +one)
1000.242 -            {
1000.243 -                return(helper2_type::get_NaN());
1000.244 -            }
1000.245 -            else if    (abs(x) >= taylor_n_bound)
1000.246 -            {
1000.247 -                return(log( (one + x) / (one - x) ) / two);
1000.248 -            }
1000.249 -            else
1000.250 -            {
1000.251 -                // approximation by taylor series in x at 0 up to order 2
1000.252 -                T    result = x;
1000.253 -                
1000.254 -                if    (abs(x) >= taylor_2_bound)
1000.255 -                {
1000.256 -                    T    x3 = x*x*x;
1000.257 -                    
1000.258 -                    // approximation by taylor series in x at 0 up to order 4
1000.259 -                    result += x3/static_cast<T>(3);
1000.260 -                }
1000.261 -                
1000.262 -                return(result);
1000.263 -            }
1000.264 -        }
1000.265 -#endif /* defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) */
1000.266 -    }
1000.267 -}
1000.268 -
1000.269 -#endif /* BOOST_ATANH_HPP */
1000.270 -
  1001.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1001.2 +++ b/epoc32/include/stdapis/boost/mpl/and.hpp	Wed Mar 31 12:27:01 2010 +0100
  1001.3 @@ -0,0 +1,30 @@
  1001.4 +# /* Copyright (C) 2001
  1001.5 +#  * Housemarque Oy
  1001.6 +#  * http://www.housemarque.com
  1001.7 +#  *
  1001.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1001.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1001.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1001.11 +#  */
 1001.12 +#
 1001.13 +# /* Revised by Paul Mensonides (2002) */
 1001.14 +#
 1001.15 +# /* See http://www.boost.org for most recent version. */
 1001.16 +#
 1001.17 +# ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
 1001.18 +# define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
 1001.19 +#
 1001.20 +# include <boost/preprocessor/config/config.hpp>
 1001.21 +# include <boost/preprocessor/logical/bool.hpp>
 1001.22 +# include <boost/preprocessor/logical/bitand.hpp>
 1001.23 +#
 1001.24 +# /* BOOST_PP_AND */
 1001.25 +#
 1001.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1001.27 +#    define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1001.28 +# else
 1001.29 +#    define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q)
 1001.30 +#    define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1001.31 +# endif
 1001.32 +#
 1001.33 +# endif
  1002.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1002.2 +++ b/epoc32/include/stdapis/boost/mpl/apply.hpp	Wed Mar 31 12:27:01 2010 +0100
  1002.3 @@ -0,0 +1,34 @@
  1002.4 +# /* **************************************************************************
  1002.5 +#  *                                                                          *
  1002.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1002.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1002.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1002.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1002.10 +#  *                                                                          *
 1002.11 +#  ************************************************************************** */
 1002.12 +#
 1002.13 +# /* See http://www.boost.org for most recent version. */
 1002.14 +#
 1002.15 +# ifndef BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP
 1002.16 +# define BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP
 1002.17 +#
 1002.18 +# include <boost/preprocessor/config/config.hpp>
 1002.19 +# include <boost/preprocessor/control/expr_iif.hpp>
 1002.20 +# include <boost/preprocessor/detail/is_unary.hpp>
 1002.21 +# include <boost/preprocessor/tuple/rem.hpp>
 1002.22 +#
 1002.23 +# /* BOOST_PP_APPLY */
 1002.24 +#
 1002.25 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1002.26 +#    define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x)
 1002.27 +#    define BOOST_PP_APPLY_I(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x)
 1002.28 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
 1002.29 +#    define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x)
 1002.30 +#    define BOOST_PP_APPLY_I(x) BOOST_PP_APPLY_ ## x
 1002.31 +#    define BOOST_PP_APPLY_(x) x
 1002.32 +#    define BOOST_PP_APPLY_BOOST_PP_NIL
 1002.33 +# else
 1002.34 +#    define BOOST_PP_APPLY(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x)
 1002.35 +# endif
 1002.36 +#
 1002.37 +# endif
  1003.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1003.2 +++ b/epoc32/include/stdapis/boost/mpl/apply_fwd.hpp	Wed Mar 31 12:27:01 2010 +0100
  1003.3 @@ -0,0 +1,52 @@
  1003.4 +
  1003.5 +// Copyright Aleksey Gurtovoy 2000-2004
  1003.6 +//
  1003.7 +// Distributed under the Boost Software License, Version 1.0. 
  1003.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1003.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1003.10 +//
 1003.11 +
 1003.12 +// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
 1003.13 +// -- DO NOT modify by hand!
 1003.14 +
 1003.15 +namespace boost { namespace mpl {
 1003.16 +
 1003.17 +template<
 1003.18 +      typename F, typename T1 = na, typename T2 = na, typename T3 = na
 1003.19 +    , typename T4 = na, typename T5 = na
 1003.20 +    >
 1003.21 +struct apply;
 1003.22 +
 1003.23 +template<
 1003.24 +      typename F
 1003.25 +    >
 1003.26 +struct apply0;
 1003.27 +
 1003.28 +template<
 1003.29 +      typename F, typename T1
 1003.30 +    >
 1003.31 +struct apply1;
 1003.32 +
 1003.33 +template<
 1003.34 +      typename F, typename T1, typename T2
 1003.35 +    >
 1003.36 +struct apply2;
 1003.37 +
 1003.38 +template<
 1003.39 +      typename F, typename T1, typename T2, typename T3
 1003.40 +    >
 1003.41 +struct apply3;
 1003.42 +
 1003.43 +template<
 1003.44 +      typename F, typename T1, typename T2, typename T3, typename T4
 1003.45 +    >
 1003.46 +struct apply4;
 1003.47 +
 1003.48 +template<
 1003.49 +      typename F, typename T1, typename T2, typename T3, typename T4
 1003.50 +    , typename T5
 1003.51 +    >
 1003.52 +struct apply5;
 1003.53 +
 1003.54 +}}
 1003.55 +
  1004.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1004.2 +++ b/epoc32/include/stdapis/boost/mpl/apply_wrap.hpp	Wed Mar 31 12:27:01 2010 +0100
  1004.3 @@ -0,0 +1,84 @@
  1004.4 +
  1004.5 +// Copyright Aleksey Gurtovoy 2000-2004
  1004.6 +//
  1004.7 +// Distributed under the Boost Software License, Version 1.0. 
  1004.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1004.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1004.10 +//
 1004.11 +
 1004.12 +// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
 1004.13 +// -- DO NOT modify by hand!
 1004.14 +
 1004.15 +namespace boost { namespace mpl {
 1004.16 +
 1004.17 +template<
 1004.18 +      typename F
 1004.19 +
 1004.20 +    , typename has_apply_ = typename aux::has_apply<F>::type
 1004.21 +
 1004.22 +    >
 1004.23 +struct apply_wrap0
 1004.24 +
 1004.25 +    : F::template apply<  >
 1004.26 +{
 1004.27 +};
 1004.28 +
 1004.29 +template< typename F >
 1004.30 +struct apply_wrap0< F,true_ >
 1004.31 +    : F::apply
 1004.32 +{
 1004.33 +};
 1004.34 +
 1004.35 +template<
 1004.36 +      typename F, typename T1
 1004.37 +
 1004.38 +    >
 1004.39 +struct apply_wrap1
 1004.40 +
 1004.41 +    : F::template apply<T1>
 1004.42 +{
 1004.43 +};
 1004.44 +
 1004.45 +template<
 1004.46 +      typename F, typename T1, typename T2
 1004.47 +
 1004.48 +    >
 1004.49 +struct apply_wrap2
 1004.50 +
 1004.51 +    : F::template apply< T1,T2 >
 1004.52 +{
 1004.53 +};
 1004.54 +
 1004.55 +template<
 1004.56 +      typename F, typename T1, typename T2, typename T3
 1004.57 +
 1004.58 +    >
 1004.59 +struct apply_wrap3
 1004.60 +
 1004.61 +    : F::template apply< T1,T2,T3 >
 1004.62 +{
 1004.63 +};
 1004.64 +
 1004.65 +template<
 1004.66 +      typename F, typename T1, typename T2, typename T3, typename T4
 1004.67 +
 1004.68 +    >
 1004.69 +struct apply_wrap4
 1004.70 +
 1004.71 +    : F::template apply< T1,T2,T3,T4 >
 1004.72 +{
 1004.73 +};
 1004.74 +
 1004.75 +template<
 1004.76 +      typename F, typename T1, typename T2, typename T3, typename T4
 1004.77 +    , typename T5
 1004.78 +
 1004.79 +    >
 1004.80 +struct apply_wrap5
 1004.81 +
 1004.82 +    : F::template apply< T1,T2,T3,T4,T5 >
 1004.83 +{
 1004.84 +};
 1004.85 +
 1004.86 +}}
 1004.87 +
  1005.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1005.2 +++ b/epoc32/include/stdapis/boost/mpl/at.hpp	Wed Mar 31 12:27:01 2010 +0100
  1005.3 @@ -0,0 +1,39 @@
  1005.4 +# /* Copyright (C) 2001
  1005.5 +#  * Housemarque Oy
  1005.6 +#  * http://www.housemarque.com
  1005.7 +#  *
  1005.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1005.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1005.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1005.11 +#  */
 1005.12 +#
 1005.13 +# /* Revised by Paul Mensonides (2002) */
 1005.14 +#
 1005.15 +# /* See http://www.boost.org for most recent version. */
 1005.16 +#
 1005.17 +# ifndef BOOST_PREPROCESSOR_LIST_AT_HPP
 1005.18 +# define BOOST_PREPROCESSOR_LIST_AT_HPP
 1005.19 +#
 1005.20 +# include <boost/preprocessor/config/config.hpp>
 1005.21 +# include <boost/preprocessor/list/adt.hpp>
 1005.22 +# include <boost/preprocessor/list/rest_n.hpp>
 1005.23 +#
 1005.24 +# /* BOOST_PP_LIST_AT */
 1005.25 +#
 1005.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1005.27 +#    define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
 1005.28 +# else
 1005.29 +#    define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_AT_I(list, index)
 1005.30 +#    define BOOST_PP_LIST_AT_I(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
 1005.31 +# endif
 1005.32 +#
 1005.33 +# /* BOOST_PP_LIST_AT_D */
 1005.34 +#
 1005.35 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1005.36 +#    define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
 1005.37 +# else
 1005.38 +#    define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_AT_D_I(d, list, index)
 1005.39 +#    define BOOST_PP_LIST_AT_D_I(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
 1005.40 +# endif
 1005.41 +#
 1005.42 +# endif
  1006.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1006.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/advance_backward.hpp	Wed Mar 31 12:27:01 2010 +0100
  1006.3 @@ -0,0 +1,97 @@
  1006.4 +
  1006.5 +// Copyright Aleksey Gurtovoy 2000-2004
  1006.6 +//
  1006.7 +// Distributed under the Boost Software License, Version 1.0. 
  1006.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1006.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1006.10 +//
 1006.11 +
 1006.12 +// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
 1006.13 +// -- DO NOT modify by hand!
 1006.14 +
 1006.15 +namespace boost { namespace mpl { namespace aux {
 1006.16 +
 1006.17 +template< long N > struct advance_backward;
 1006.18 +template<>
 1006.19 +struct advance_backward<0>
 1006.20 +{
 1006.21 +    template< typename Iterator > struct apply
 1006.22 +    {
 1006.23 +        typedef Iterator iter0;
 1006.24 +        typedef iter0 type;
 1006.25 +    };
 1006.26 +};
 1006.27 +
 1006.28 +template<>
 1006.29 +struct advance_backward<1>
 1006.30 +{
 1006.31 +    template< typename Iterator > struct apply
 1006.32 +    {
 1006.33 +        typedef Iterator iter0;
 1006.34 +        typedef typename prior<iter0>::type iter1;
 1006.35 +        typedef iter1 type;
 1006.36 +    };
 1006.37 +};
 1006.38 +
 1006.39 +template<>
 1006.40 +struct advance_backward<2>
 1006.41 +{
 1006.42 +    template< typename Iterator > struct apply
 1006.43 +    {
 1006.44 +        typedef Iterator iter0;
 1006.45 +        typedef typename prior<iter0>::type iter1;
 1006.46 +        typedef typename prior<iter1>::type iter2;
 1006.47 +        typedef iter2 type;
 1006.48 +    };
 1006.49 +};
 1006.50 +
 1006.51 +template<>
 1006.52 +struct advance_backward<3>
 1006.53 +{
 1006.54 +    template< typename Iterator > struct apply
 1006.55 +    {
 1006.56 +        typedef Iterator iter0;
 1006.57 +        typedef typename prior<iter0>::type iter1;
 1006.58 +        typedef typename prior<iter1>::type iter2;
 1006.59 +        typedef typename prior<iter2>::type iter3;
 1006.60 +        typedef iter3 type;
 1006.61 +    };
 1006.62 +};
 1006.63 +
 1006.64 +template<>
 1006.65 +struct advance_backward<4>
 1006.66 +{
 1006.67 +    template< typename Iterator > struct apply
 1006.68 +    {
 1006.69 +        typedef Iterator iter0;
 1006.70 +        typedef typename prior<iter0>::type iter1;
 1006.71 +        typedef typename prior<iter1>::type iter2;
 1006.72 +        typedef typename prior<iter2>::type iter3;
 1006.73 +        typedef typename prior<iter3>::type iter4;
 1006.74 +        typedef iter4 type;
 1006.75 +    };
 1006.76 +};
 1006.77 +
 1006.78 +template< long N >
 1006.79 +struct advance_backward
 1006.80 +{
 1006.81 +    template< typename Iterator > struct apply
 1006.82 +    {
 1006.83 +        typedef typename apply_wrap1<
 1006.84 +              advance_backward<4>
 1006.85 +            , Iterator
 1006.86 +            >::type chunk_result_;
 1006.87 +
 1006.88 +        typedef typename apply_wrap1<
 1006.89 +              advance_backward<(
 1006.90 +                (N - 4) < 0
 1006.91 +                    ? 0
 1006.92 +                    : N - 4
 1006.93 +                    )>
 1006.94 +            , chunk_result_
 1006.95 +            >::type type;
 1006.96 +    };
 1006.97 +};
 1006.98 +
 1006.99 +}}}
1006.100 +
  1007.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1007.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/advance_forward.hpp	Wed Mar 31 12:27:01 2010 +0100
  1007.3 @@ -0,0 +1,97 @@
  1007.4 +
  1007.5 +// Copyright Aleksey Gurtovoy 2000-2004
  1007.6 +//
  1007.7 +// Distributed under the Boost Software License, Version 1.0. 
  1007.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1007.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1007.10 +//
 1007.11 +
 1007.12 +// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
 1007.13 +// -- DO NOT modify by hand!
 1007.14 +
 1007.15 +namespace boost { namespace mpl { namespace aux {
 1007.16 +
 1007.17 +template< long N > struct advance_forward;
 1007.18 +template<>
 1007.19 +struct advance_forward<0>
 1007.20 +{
 1007.21 +    template< typename Iterator > struct apply
 1007.22 +    {
 1007.23 +        typedef Iterator iter0;
 1007.24 +        typedef iter0 type;
 1007.25 +    };
 1007.26 +};
 1007.27 +
 1007.28 +template<>
 1007.29 +struct advance_forward<1>
 1007.30 +{
 1007.31 +    template< typename Iterator > struct apply
 1007.32 +    {
 1007.33 +        typedef Iterator iter0;
 1007.34 +        typedef typename next<iter0>::type iter1;
 1007.35 +        typedef iter1 type;
 1007.36 +    };
 1007.37 +};
 1007.38 +
 1007.39 +template<>
 1007.40 +struct advance_forward<2>
 1007.41 +{
 1007.42 +    template< typename Iterator > struct apply
 1007.43 +    {
 1007.44 +        typedef Iterator iter0;
 1007.45 +        typedef typename next<iter0>::type iter1;
 1007.46 +        typedef typename next<iter1>::type iter2;
 1007.47 +        typedef iter2 type;
 1007.48 +    };
 1007.49 +};
 1007.50 +
 1007.51 +template<>
 1007.52 +struct advance_forward<3>
 1007.53 +{
 1007.54 +    template< typename Iterator > struct apply
 1007.55 +    {
 1007.56 +        typedef Iterator iter0;
 1007.57 +        typedef typename next<iter0>::type iter1;
 1007.58 +        typedef typename next<iter1>::type iter2;
 1007.59 +        typedef typename next<iter2>::type iter3;
 1007.60 +        typedef iter3 type;
 1007.61 +    };
 1007.62 +};
 1007.63 +
 1007.64 +template<>
 1007.65 +struct advance_forward<4>
 1007.66 +{
 1007.67 +    template< typename Iterator > struct apply
 1007.68 +    {
 1007.69 +        typedef Iterator iter0;
 1007.70 +        typedef typename next<iter0>::type iter1;
 1007.71 +        typedef typename next<iter1>::type iter2;
 1007.72 +        typedef typename next<iter2>::type iter3;
 1007.73 +        typedef typename next<iter3>::type iter4;
 1007.74 +        typedef iter4 type;
 1007.75 +    };
 1007.76 +};
 1007.77 +
 1007.78 +template< long N >
 1007.79 +struct advance_forward
 1007.80 +{
 1007.81 +    template< typename Iterator > struct apply
 1007.82 +    {
 1007.83 +        typedef typename apply_wrap1<
 1007.84 +              advance_forward<4>
 1007.85 +            , Iterator
 1007.86 +            >::type chunk_result_;
 1007.87 +
 1007.88 +        typedef typename apply_wrap1<
 1007.89 +              advance_forward<(
 1007.90 +                (N - 4) < 0
 1007.91 +                    ? 0
 1007.92 +                    : N - 4
 1007.93 +                    )>
 1007.94 +            , chunk_result_
 1007.95 +            >::type type;
 1007.96 +    };
 1007.97 +};
 1007.98 +
 1007.99 +}}}
1007.100 +
  1008.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1008.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/arity.hpp	Wed Mar 31 12:27:01 2010 +0100
  1008.3 @@ -0,0 +1,21 @@
  1008.4 +
  1008.5 +#ifndef BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
  1008.6 +#define BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
  1008.7 +
  1008.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1008.9 +//
 1008.10 +// Distributed under the Boost Software License, Version 1.0. 
 1008.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1008.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1008.13 +//
 1008.14 +// See http://www.boost.org/libs/mpl for documentation.
 1008.15 +
 1008.16 +// $Source: /cvsroot/boost/boost/boost/mpl/limits/arity.hpp,v $
 1008.17 +// $Date: 2004/09/02 15:40:57 $
 1008.18 +// $Revision: 1.4 $
 1008.19 +
 1008.20 +#if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 1008.21 +#   define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
 1008.22 +#endif
 1008.23 +
 1008.24 +#endif // BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
  1009.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1009.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/at_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1009.3 @@ -0,0 +1,40 @@
  1009.4 +
  1009.5 +#ifndef BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
  1009.6 +#define BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
  1009.7 +
  1009.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1009.9 +//
 1009.10 +// Distributed under the Boost Software License, Version 1.0. 
 1009.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1009.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1009.13 +//
 1009.14 +// See http://www.boost.org/libs/mpl for documentation.
 1009.15 +
 1009.16 +// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/at_impl.hpp,v $
 1009.17 +// $Date: 2004/09/02 15:41:02 $
 1009.18 +// $Revision: 1.2 $
 1009.19 +
 1009.20 +#include <boost/mpl/at_fwd.hpp>
 1009.21 +#include <boost/mpl/set/aux_/has_key_impl.hpp>
 1009.22 +#include <boost/mpl/set/aux_/tag.hpp>
 1009.23 +#include <boost/mpl/if.hpp>
 1009.24 +#include <boost/mpl/void.hpp>
 1009.25 +
 1009.26 +namespace boost { namespace mpl {
 1009.27 +
 1009.28 +template<>
 1009.29 +struct at_impl< aux::set_tag >
 1009.30 +{
 1009.31 +    template< typename Set, typename T > struct apply
 1009.32 +    {
 1009.33 +        typedef typename if_< 
 1009.34 +              has_key_impl<aux::set_tag>::apply<Set,T>
 1009.35 +            , T
 1009.36 +            , void_
 1009.37 +            >::type type;            
 1009.38 +    };
 1009.39 +};
 1009.40 +
 1009.41 +}}
 1009.42 +
 1009.43 +#endif // BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
  1010.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1010.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/begin_end_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1010.3 @@ -0,0 +1,43 @@
  1010.4 +
  1010.5 +#ifndef BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
  1010.6 +#define BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
  1010.7 +
  1010.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1010.9 +// Copyright David Abrahams 2003-2004
 1010.10 +//
 1010.11 +// Distributed under the Boost Software License, Version 1.0. 
 1010.12 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1010.13 +// http://www.boost.org/LICENSE_1_0.txt)
 1010.14 +//
 1010.15 +// See http://www.boost.org/libs/mpl for documentation.
 1010.16 +
 1010.17 +// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/begin_end_impl.hpp,v $
 1010.18 +// $Date: 2004/09/02 15:41:02 $
 1010.19 +// $Revision: 1.3 $
 1010.20 +
 1010.21 +#include <boost/mpl/begin_end_fwd.hpp>
 1010.22 +#include <boost/mpl/set/aux_/iterator.hpp>
 1010.23 +
 1010.24 +namespace boost { namespace mpl {
 1010.25 +
 1010.26 +template<>
 1010.27 +struct begin_impl< aux::set_tag >
 1010.28 +{
 1010.29 +    template< typename Set > struct apply
 1010.30 +    {
 1010.31 +        typedef s_iter<Set,Set> type;
 1010.32 +    };
 1010.33 +};
 1010.34 +
 1010.35 +template<>
 1010.36 +struct end_impl< aux::set_tag >
 1010.37 +{
 1010.38 +    template< typename Set > struct apply
 1010.39 +    {
 1010.40 +        typedef s_iter< Set,set0<> > type;
 1010.41 +    };
 1010.42 +};
 1010.43 +
 1010.44 +}}
 1010.45 +
 1010.46 +#endif // BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
  1011.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1011.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/clear_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1011.3 @@ -0,0 +1,35 @@
  1011.4 +
  1011.5 +#ifndef BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
  1011.6 +#define BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
  1011.7 +
  1011.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1011.9 +// Copyright David Abrahams 2003-2004
 1011.10 +//
 1011.11 +// Distributed under the Boost Software License, Version 1.0. 
 1011.12 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1011.13 +// http://www.boost.org/LICENSE_1_0.txt)
 1011.14 +//
 1011.15 +// See http://www.boost.org/libs/mpl for documentation.
 1011.16 +
 1011.17 +// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/clear_impl.hpp,v $
 1011.18 +// $Date: 2004/09/02 15:41:02 $
 1011.19 +// $Revision: 1.2 $
 1011.20 +
 1011.21 +#include <boost/mpl/clear_fwd.hpp>
 1011.22 +#include <boost/mpl/set/aux_/set0.hpp>
 1011.23 +#include <boost/mpl/set/aux_/tag.hpp>
 1011.24 +
 1011.25 +namespace boost { namespace mpl {
 1011.26 +
 1011.27 +template<>
 1011.28 +struct clear_impl< aux::set_tag >
 1011.29 +{
 1011.30 +    template< typename Set > struct apply
 1011.31 +    {
 1011.32 +        typedef set0<> type;
 1011.33 +    };
 1011.34 +};
 1011.35 +
 1011.36 +}}
 1011.37 +
 1011.38 +#endif // BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
  1012.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1012.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/config/has_apply.hpp	Wed Mar 31 12:27:01 2010 +0100
  1012.3 @@ -0,0 +1,32 @@
  1012.4 +
  1012.5 +#ifndef BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
  1012.6 +#define BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
  1012.7 +
  1012.8 +// Copyright Aleksey Gurtovoy 2004
  1012.9 +//
 1012.10 +// Distributed under the Boost Software License, Version 1.0. 
 1012.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1012.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1012.13 +//
 1012.14 +// See http://www.boost.org/libs/mpl for documentation.
 1012.15 +
 1012.16 +// $Source: /cvsroot/boost/boost/boost/mpl/aux_/has_apply.hpp,v $
 1012.17 +// $Date: 2004/09/03 15:56:55 $
 1012.18 +// $Revision: 1.1 $
 1012.19 +
 1012.20 +#include <boost/mpl/has_xxx.hpp>
 1012.21 +#include <boost/mpl/aux_/config/has_apply.hpp>
 1012.22 +
 1012.23 +namespace boost { namespace mpl { namespace aux {
 1012.24 +#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
 1012.25 +BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false)
 1012.26 +#else
 1012.27 +template< typename T, typename fallback_ = false_ >
 1012.28 +struct has_apply
 1012.29 +    : fallback_
 1012.30 +{
 1012.31 +};
 1012.32 +#endif
 1012.33 +}}}
 1012.34 +
 1012.35 +#endif // BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
  1013.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1013.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/config/preprocessor.hpp	Wed Mar 31 12:27:01 2010 +0100
  1013.3 @@ -0,0 +1,19 @@
  1013.4 +# /* Copyright (C) 2001
  1013.5 +#  * Housemarque Oy
  1013.6 +#  * http://www.housemarque.com
  1013.7 +#  *
  1013.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1013.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1013.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1013.11 +#  */
 1013.12 +#
 1013.13 +# /* Revised by Paul Mensonides (2002) */
 1013.14 +#
 1013.15 +# /* See http://www.boost.org/libs/preprocessor for documentation. */
 1013.16 +#
 1013.17 +# ifndef BOOST_PREPROCESSOR_HPP
 1013.18 +# define BOOST_PREPROCESSOR_HPP
 1013.19 +#
 1013.20 +# include <boost/preprocessor/library.hpp>
 1013.21 +#
 1013.22 +# endif
  1014.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/config/workaround.hpp	Tue Mar 16 16:12:26 2010 +0000
  1014.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1014.3 @@ -1,19 +0,0 @@
  1014.4 -
  1014.5 -#ifndef BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
  1014.6 -#define BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
  1014.7 -
  1014.8 -// Copyright Aleksey Gurtovoy 2002-2004
  1014.9 -//
 1014.10 -// Distributed under the Boost Software License, Version 1.0. 
 1014.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1014.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1014.13 -//
 1014.14 -// See http://www.boost.org/libs/mpl for documentation.
 1014.15 -
 1014.16 -// $Source: /cvsroot/boost/boost/boost/mpl/aux_/config/workaround.hpp,v $
 1014.17 -// $Date: 2004/09/02 15:40:45 $
 1014.18 -// $Revision: 1.3 $
 1014.19 -
 1014.20 -#include <boost/detail/workaround.hpp>
 1014.21 -
 1014.22 -#endif // BOOST_MPL_AUX_CONFIG_WORKAROUND_HPP_INCLUDED
  1015.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1015.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/empty_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1015.3 @@ -0,0 +1,34 @@
  1015.4 +
  1015.5 +#ifndef BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
  1015.6 +#define BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
  1015.7 +
  1015.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1015.9 +//
 1015.10 +// Distributed under the Boost Software License, Version 1.0. 
 1015.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1015.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1015.13 +//
 1015.14 +// See http://www.boost.org/libs/mpl for documentation.
 1015.15 +
 1015.16 +// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/empty_impl.hpp,v $
 1015.17 +// $Date: 2004/09/02 15:41:02 $
 1015.18 +// $Revision: 1.2 $
 1015.19 +
 1015.20 +#include <boost/mpl/empty_fwd.hpp>
 1015.21 +#include <boost/mpl/not.hpp>
 1015.22 +#include <boost/mpl/set/aux_/tag.hpp>
 1015.23 +
 1015.24 +namespace boost { namespace mpl {
 1015.25 +
 1015.26 +template<>
 1015.27 +struct empty_impl< aux::set_tag >
 1015.28 +{
 1015.29 +    template< typename Set > struct apply
 1015.30 +        : not_< typename Set::size >
 1015.31 +    {
 1015.32 +    };
 1015.33 +};
 1015.34 +
 1015.35 +}}
 1015.36 +
 1015.37 +#endif // BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
  1016.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1016.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/fold_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1016.3 @@ -0,0 +1,180 @@
  1016.4 +
  1016.5 +// Copyright Aleksey Gurtovoy 2000-2004
  1016.6 +//
  1016.7 +// Distributed under the Boost Software License, Version 1.0. 
  1016.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1016.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1016.10 +//
 1016.11 +
 1016.12 +// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
 1016.13 +// -- DO NOT modify by hand!
 1016.14 +
 1016.15 +namespace boost { namespace mpl { namespace aux {
 1016.16 +
 1016.17 +/// forward declaration
 1016.18 +
 1016.19 +template<
 1016.20 +      int N
 1016.21 +    , typename First
 1016.22 +    , typename Last
 1016.23 +    , typename State
 1016.24 +    , typename ForwardOp
 1016.25 +    >
 1016.26 +struct fold_impl;
 1016.27 +
 1016.28 +template<
 1016.29 +      typename First
 1016.30 +    , typename Last
 1016.31 +    , typename State
 1016.32 +    , typename ForwardOp
 1016.33 +    >
 1016.34 +struct fold_impl< 0,First,Last,State,ForwardOp >
 1016.35 +{
 1016.36 +    typedef First iter0;
 1016.37 +    typedef State state0;
 1016.38 +    typedef state0 state;
 1016.39 +    typedef iter0 iterator;
 1016.40 +};
 1016.41 +
 1016.42 +template<
 1016.43 +      typename First
 1016.44 +    , typename Last
 1016.45 +    , typename State
 1016.46 +    , typename ForwardOp
 1016.47 +    >
 1016.48 +struct fold_impl< 1,First,Last,State,ForwardOp >
 1016.49 +{
 1016.50 +    typedef First iter0;
 1016.51 +    typedef State state0;
 1016.52 +    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
 1016.53 +    typedef typename mpl::next<iter0>::type iter1;
 1016.54 +    
 1016.55 +
 1016.56 +    typedef state1 state;
 1016.57 +    typedef iter1 iterator;
 1016.58 +};
 1016.59 +
 1016.60 +template<
 1016.61 +      typename First
 1016.62 +    , typename Last
 1016.63 +    , typename State
 1016.64 +    , typename ForwardOp
 1016.65 +    >
 1016.66 +struct fold_impl< 2,First,Last,State,ForwardOp >
 1016.67 +{
 1016.68 +    typedef First iter0;
 1016.69 +    typedef State state0;
 1016.70 +    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
 1016.71 +    typedef typename mpl::next<iter0>::type iter1;
 1016.72 +    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
 1016.73 +    typedef typename mpl::next<iter1>::type iter2;
 1016.74 +    
 1016.75 +
 1016.76 +    typedef state2 state;
 1016.77 +    typedef iter2 iterator;
 1016.78 +};
 1016.79 +
 1016.80 +template<
 1016.81 +      typename First
 1016.82 +    , typename Last
 1016.83 +    , typename State
 1016.84 +    , typename ForwardOp
 1016.85 +    >
 1016.86 +struct fold_impl< 3,First,Last,State,ForwardOp >
 1016.87 +{
 1016.88 +    typedef First iter0;
 1016.89 +    typedef State state0;
 1016.90 +    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
 1016.91 +    typedef typename mpl::next<iter0>::type iter1;
 1016.92 +    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
 1016.93 +    typedef typename mpl::next<iter1>::type iter2;
 1016.94 +    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
 1016.95 +    typedef typename mpl::next<iter2>::type iter3;
 1016.96 +    
 1016.97 +
 1016.98 +    typedef state3 state;
 1016.99 +    typedef iter3 iterator;
1016.100 +};
1016.101 +
1016.102 +template<
1016.103 +      typename First
1016.104 +    , typename Last
1016.105 +    , typename State
1016.106 +    , typename ForwardOp
1016.107 +    >
1016.108 +struct fold_impl< 4,First,Last,State,ForwardOp >
1016.109 +{
1016.110 +    typedef First iter0;
1016.111 +    typedef State state0;
1016.112 +    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
1016.113 +    typedef typename mpl::next<iter0>::type iter1;
1016.114 +    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
1016.115 +    typedef typename mpl::next<iter1>::type iter2;
1016.116 +    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
1016.117 +    typedef typename mpl::next<iter2>::type iter3;
1016.118 +    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
1016.119 +    typedef typename mpl::next<iter3>::type iter4;
1016.120 +    
1016.121 +
1016.122 +    typedef state4 state;
1016.123 +    typedef iter4 iterator;
1016.124 +};
1016.125 +
1016.126 +template<
1016.127 +      int N
1016.128 +    , typename First
1016.129 +    , typename Last
1016.130 +    , typename State
1016.131 +    , typename ForwardOp
1016.132 +    >
1016.133 +struct fold_impl
1016.134 +{
1016.135 +    typedef fold_impl<
1016.136 +          4
1016.137 +        , First
1016.138 +        , Last
1016.139 +        , State
1016.140 +        , ForwardOp
1016.141 +        > chunk_;
1016.142 +
1016.143 +    typedef fold_impl<
1016.144 +          ( (N - 4) < 0 ? 0 : N - 4 )
1016.145 +        , typename chunk_::iterator
1016.146 +        , Last
1016.147 +        , typename chunk_::state
1016.148 +        , ForwardOp
1016.149 +        > res_;
1016.150 +
1016.151 +    typedef typename res_::state state;
1016.152 +    typedef typename res_::iterator iterator;
1016.153 +};
1016.154 +
1016.155 +template<
1016.156 +      typename First
1016.157 +    , typename Last
1016.158 +    , typename State
1016.159 +    , typename ForwardOp
1016.160 +    >
1016.161 +struct fold_impl< -1,First,Last,State,ForwardOp >
1016.162 +    : fold_impl<
1016.163 +          -1
1016.164 +        , typename mpl::next<First>::type
1016.165 +        , Last
1016.166 +        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
1016.167 +        , ForwardOp
1016.168 +        >
1016.169 +{
1016.170 +};
1016.171 +
1016.172 +template<
1016.173 +      typename Last
1016.174 +    , typename State
1016.175 +    , typename ForwardOp
1016.176 +    >
1016.177 +struct fold_impl< -1,Last,Last,State,ForwardOp >
1016.178 +{
1016.179 +    typedef State state;
1016.180 +    typedef Last iterator;
1016.181 +};
1016.182 +
1016.183 +}}}
  1017.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1017.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/full_lambda.hpp	Wed Mar 31 12:27:01 2010 +0100
  1017.3 @@ -0,0 +1,554 @@
  1017.4 +
  1017.5 +// Copyright Aleksey Gurtovoy 2001-2004
  1017.6 +//
  1017.7 +// Distributed under the Boost Software License, Version 1.0. 
  1017.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1017.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1017.10 +//
 1017.11 +
 1017.12 +// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
 1017.13 +// -- DO NOT modify by hand!
 1017.14 +
 1017.15 +namespace boost { namespace mpl {
 1017.16 +
 1017.17 +namespace aux {
 1017.18 +
 1017.19 +template<
 1017.20 +      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
 1017.21 +    , bool C5 = false
 1017.22 +    >
 1017.23 +struct lambda_or
 1017.24 +    : true_
 1017.25 +{
 1017.26 +};
 1017.27 +
 1017.28 +template<>
 1017.29 +struct lambda_or< false,false,false,false,false >
 1017.30 +    : false_
 1017.31 +{
 1017.32 +};
 1017.33 +
 1017.34 +} // namespace aux
 1017.35 +
 1017.36 +template<
 1017.37 +      typename T
 1017.38 +    , typename Tag
 1017.39 +   
 1017.40 +    >
 1017.41 +struct lambda
 1017.42 +{
 1017.43 +    typedef false_ is_le;
 1017.44 +    typedef T result_;
 1017.45 +    typedef T type;
 1017.46 +};
 1017.47 +
 1017.48 +template<
 1017.49 +      typename T
 1017.50 +    >
 1017.51 +struct is_lambda_expression
 1017.52 +    : lambda<T>::is_le
 1017.53 +{
 1017.54 +};
 1017.55 +
 1017.56 +template< int N, typename Tag >
 1017.57 +struct lambda< arg<N>, Tag >
 1017.58 +{
 1017.59 +    typedef true_ is_le;
 1017.60 +    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
 1017.61 +    typedef mpl::protect<result_> type;
 1017.62 +};
 1017.63 +
 1017.64 +template<
 1017.65 +      typename F
 1017.66 +    , typename Tag
 1017.67 +    >
 1017.68 +struct lambda<
 1017.69 +          bind0<F>
 1017.70 +        , Tag
 1017.71 +       
 1017.72 +        >
 1017.73 +{
 1017.74 +    typedef false_ is_le;
 1017.75 +    typedef bind0<
 1017.76 +          F
 1017.77 +        > result_;
 1017.78 +
 1017.79 +    typedef result_ type;
 1017.80 +};
 1017.81 +
 1017.82 +namespace aux {
 1017.83 +
 1017.84 +template<
 1017.85 +      typename IsLE, typename Tag
 1017.86 +    , template< typename P1 > class F
 1017.87 +    , typename L1
 1017.88 +    >
 1017.89 +struct le_result1
 1017.90 +{
 1017.91 +    typedef F<
 1017.92 +          typename L1::type
 1017.93 +        > result_;
 1017.94 +
 1017.95 +    typedef result_ type;
 1017.96 +};
 1017.97 +
 1017.98 +template<
 1017.99 +      typename Tag
1017.100 +    , template< typename P1 > class F
1017.101 +    , typename L1
1017.102 +    >
1017.103 +struct le_result1< true_,Tag,F,L1 >
1017.104 +{
1017.105 +    typedef bind1<
1017.106 +          quote1< F,Tag >
1017.107 +        , typename L1::result_
1017.108 +        > result_;
1017.109 +
1017.110 +    typedef mpl::protect<result_> type;
1017.111 +};
1017.112 +
1017.113 +} // namespace aux
1017.114 +
1017.115 +template<
1017.116 +      template< typename P1 > class F
1017.117 +    , typename T1
1017.118 +    , typename Tag
1017.119 +    >
1017.120 +struct lambda<
1017.121 +          F<T1>
1017.122 +        , Tag
1017.123 +       
1017.124 +        >
1017.125 +{
1017.126 +    typedef lambda< T1,Tag > l1;
1017.127 +    typedef typename l1::is_le is_le1;
1017.128 +    typedef typename aux::lambda_or<
1017.129 +          is_le1::value
1017.130 +        >::type is_le;
1017.131 +
1017.132 +    typedef aux::le_result1<
1017.133 +          is_le, Tag, F, l1
1017.134 +        > le_result_;
1017.135 +
1017.136 +    typedef typename le_result_::result_ result_;
1017.137 +    typedef typename le_result_::type type;
1017.138 +};
1017.139 +
1017.140 +template<
1017.141 +      typename F, typename T1
1017.142 +    , typename Tag
1017.143 +    >
1017.144 +struct lambda<
1017.145 +          bind1< F,T1 >
1017.146 +        , Tag
1017.147 +       
1017.148 +        >
1017.149 +{
1017.150 +    typedef false_ is_le;
1017.151 +    typedef bind1<
1017.152 +          F
1017.153 +        , T1
1017.154 +        > result_;
1017.155 +
1017.156 +    typedef result_ type;
1017.157 +};
1017.158 +
1017.159 +namespace aux {
1017.160 +
1017.161 +template<
1017.162 +      typename IsLE, typename Tag
1017.163 +    , template< typename P1, typename P2 > class F
1017.164 +    , typename L1, typename L2
1017.165 +    >
1017.166 +struct le_result2
1017.167 +{
1017.168 +    typedef F<
1017.169 +          typename L1::type, typename L2::type
1017.170 +        > result_;
1017.171 +
1017.172 +    typedef result_ type;
1017.173 +};
1017.174 +
1017.175 +template<
1017.176 +      typename Tag
1017.177 +    , template< typename P1, typename P2 > class F
1017.178 +    , typename L1, typename L2
1017.179 +    >
1017.180 +struct le_result2< true_,Tag,F,L1,L2 >
1017.181 +{
1017.182 +    typedef bind2<
1017.183 +          quote2< F,Tag >
1017.184 +        , typename L1::result_, typename L2::result_
1017.185 +        > result_;
1017.186 +
1017.187 +    typedef mpl::protect<result_> type;
1017.188 +};
1017.189 +
1017.190 +} // namespace aux
1017.191 +
1017.192 +template<
1017.193 +      template< typename P1, typename P2 > class F
1017.194 +    , typename T1, typename T2
1017.195 +    , typename Tag
1017.196 +    >
1017.197 +struct lambda<
1017.198 +          F< T1,T2 >
1017.199 +        , Tag
1017.200 +       
1017.201 +        >
1017.202 +{
1017.203 +    typedef lambda< T1,Tag > l1;
1017.204 +    typedef lambda< T2,Tag > l2;
1017.205 +    
1017.206 +    typedef typename l1::is_le is_le1;
1017.207 +    typedef typename l2::is_le is_le2;
1017.208 +    
1017.209 +
1017.210 +    typedef typename aux::lambda_or<
1017.211 +          is_le1::value, is_le2::value
1017.212 +        >::type is_le;
1017.213 +
1017.214 +    typedef aux::le_result2<
1017.215 +          is_le, Tag, F, l1, l2
1017.216 +        > le_result_;
1017.217 +
1017.218 +    typedef typename le_result_::result_ result_;
1017.219 +    typedef typename le_result_::type type;
1017.220 +};
1017.221 +
1017.222 +template<
1017.223 +      typename F, typename T1, typename T2
1017.224 +    , typename Tag
1017.225 +    >
1017.226 +struct lambda<
1017.227 +          bind2< F,T1,T2 >
1017.228 +        , Tag
1017.229 +       
1017.230 +        >
1017.231 +{
1017.232 +    typedef false_ is_le;
1017.233 +    typedef bind2<
1017.234 +          F
1017.235 +        , T1, T2
1017.236 +        > result_;
1017.237 +
1017.238 +    typedef result_ type;
1017.239 +};
1017.240 +
1017.241 +namespace aux {
1017.242 +
1017.243 +template<
1017.244 +      typename IsLE, typename Tag
1017.245 +    , template< typename P1, typename P2, typename P3 > class F
1017.246 +    , typename L1, typename L2, typename L3
1017.247 +    >
1017.248 +struct le_result3
1017.249 +{
1017.250 +    typedef F<
1017.251 +          typename L1::type, typename L2::type, typename L3::type
1017.252 +        > result_;
1017.253 +
1017.254 +    typedef result_ type;
1017.255 +};
1017.256 +
1017.257 +template<
1017.258 +      typename Tag
1017.259 +    , template< typename P1, typename P2, typename P3 > class F
1017.260 +    , typename L1, typename L2, typename L3
1017.261 +    >
1017.262 +struct le_result3< true_,Tag,F,L1,L2,L3 >
1017.263 +{
1017.264 +    typedef bind3<
1017.265 +          quote3< F,Tag >
1017.266 +        , typename L1::result_, typename L2::result_, typename L3::result_
1017.267 +        > result_;
1017.268 +
1017.269 +    typedef mpl::protect<result_> type;
1017.270 +};
1017.271 +
1017.272 +} // namespace aux
1017.273 +
1017.274 +template<
1017.275 +      template< typename P1, typename P2, typename P3 > class F
1017.276 +    , typename T1, typename T2, typename T3
1017.277 +    , typename Tag
1017.278 +    >
1017.279 +struct lambda<
1017.280 +          F< T1,T2,T3 >
1017.281 +        , Tag
1017.282 +       
1017.283 +        >
1017.284 +{
1017.285 +    typedef lambda< T1,Tag > l1;
1017.286 +    typedef lambda< T2,Tag > l2;
1017.287 +    typedef lambda< T3,Tag > l3;
1017.288 +    
1017.289 +    typedef typename l1::is_le is_le1;
1017.290 +    typedef typename l2::is_le is_le2;
1017.291 +    typedef typename l3::is_le is_le3;
1017.292 +    
1017.293 +
1017.294 +    typedef typename aux::lambda_or<
1017.295 +          is_le1::value, is_le2::value, is_le3::value
1017.296 +        >::type is_le;
1017.297 +
1017.298 +    typedef aux::le_result3<
1017.299 +          is_le, Tag, F, l1, l2, l3
1017.300 +        > le_result_;
1017.301 +
1017.302 +    typedef typename le_result_::result_ result_;
1017.303 +    typedef typename le_result_::type type;
1017.304 +};
1017.305 +
1017.306 +template<
1017.307 +      typename F, typename T1, typename T2, typename T3
1017.308 +    , typename Tag
1017.309 +    >
1017.310 +struct lambda<
1017.311 +          bind3< F,T1,T2,T3 >
1017.312 +        , Tag
1017.313 +       
1017.314 +        >
1017.315 +{
1017.316 +    typedef false_ is_le;
1017.317 +    typedef bind3<
1017.318 +          F
1017.319 +        , T1, T2, T3
1017.320 +        > result_;
1017.321 +
1017.322 +    typedef result_ type;
1017.323 +};
1017.324 +
1017.325 +namespace aux {
1017.326 +
1017.327 +template<
1017.328 +      typename IsLE, typename Tag
1017.329 +    , template< typename P1, typename P2, typename P3, typename P4 > class F
1017.330 +    , typename L1, typename L2, typename L3, typename L4
1017.331 +    >
1017.332 +struct le_result4
1017.333 +{
1017.334 +    typedef F<
1017.335 +          typename L1::type, typename L2::type, typename L3::type
1017.336 +        , typename L4::type
1017.337 +        > result_;
1017.338 +
1017.339 +    typedef result_ type;
1017.340 +};
1017.341 +
1017.342 +template<
1017.343 +      typename Tag
1017.344 +    , template< typename P1, typename P2, typename P3, typename P4 > class F
1017.345 +    , typename L1, typename L2, typename L3, typename L4
1017.346 +    >
1017.347 +struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
1017.348 +{
1017.349 +    typedef bind4<
1017.350 +          quote4< F,Tag >
1017.351 +        , typename L1::result_, typename L2::result_, typename L3::result_
1017.352 +        , typename L4::result_
1017.353 +        > result_;
1017.354 +
1017.355 +    typedef mpl::protect<result_> type;
1017.356 +};
1017.357 +
1017.358 +} // namespace aux
1017.359 +
1017.360 +template<
1017.361 +      template< typename P1, typename P2, typename P3, typename P4 > class F
1017.362 +    , typename T1, typename T2, typename T3, typename T4
1017.363 +    , typename Tag
1017.364 +    >
1017.365 +struct lambda<
1017.366 +          F< T1,T2,T3,T4 >
1017.367 +        , Tag
1017.368 +       
1017.369 +        >
1017.370 +{
1017.371 +    typedef lambda< T1,Tag > l1;
1017.372 +    typedef lambda< T2,Tag > l2;
1017.373 +    typedef lambda< T3,Tag > l3;
1017.374 +    typedef lambda< T4,Tag > l4;
1017.375 +    
1017.376 +    typedef typename l1::is_le is_le1;
1017.377 +    typedef typename l2::is_le is_le2;
1017.378 +    typedef typename l3::is_le is_le3;
1017.379 +    typedef typename l4::is_le is_le4;
1017.380 +    
1017.381 +
1017.382 +    typedef typename aux::lambda_or<
1017.383 +          is_le1::value, is_le2::value, is_le3::value, is_le4::value
1017.384 +        >::type is_le;
1017.385 +
1017.386 +    typedef aux::le_result4<
1017.387 +          is_le, Tag, F, l1, l2, l3, l4
1017.388 +        > le_result_;
1017.389 +
1017.390 +    typedef typename le_result_::result_ result_;
1017.391 +    typedef typename le_result_::type type;
1017.392 +};
1017.393 +
1017.394 +template<
1017.395 +      typename F, typename T1, typename T2, typename T3, typename T4
1017.396 +    , typename Tag
1017.397 +    >
1017.398 +struct lambda<
1017.399 +          bind4< F,T1,T2,T3,T4 >
1017.400 +        , Tag
1017.401 +       
1017.402 +        >
1017.403 +{
1017.404 +    typedef false_ is_le;
1017.405 +    typedef bind4<
1017.406 +          F
1017.407 +        , T1, T2, T3, T4
1017.408 +        > result_;
1017.409 +
1017.410 +    typedef result_ type;
1017.411 +};
1017.412 +
1017.413 +namespace aux {
1017.414 +
1017.415 +template<
1017.416 +      typename IsLE, typename Tag
1017.417 +    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
1017.418 +    , typename L1, typename L2, typename L3, typename L4, typename L5
1017.419 +    >
1017.420 +struct le_result5
1017.421 +{
1017.422 +    typedef F<
1017.423 +          typename L1::type, typename L2::type, typename L3::type
1017.424 +        , typename L4::type, typename L5::type
1017.425 +        > result_;
1017.426 +
1017.427 +    typedef result_ type;
1017.428 +};
1017.429 +
1017.430 +template<
1017.431 +      typename Tag
1017.432 +    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
1017.433 +    , typename L1, typename L2, typename L3, typename L4, typename L5
1017.434 +    >
1017.435 +struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
1017.436 +{
1017.437 +    typedef bind5<
1017.438 +          quote5< F,Tag >
1017.439 +        , typename L1::result_, typename L2::result_, typename L3::result_
1017.440 +        , typename L4::result_, typename L5::result_
1017.441 +        > result_;
1017.442 +
1017.443 +    typedef mpl::protect<result_> type;
1017.444 +};
1017.445 +
1017.446 +} // namespace aux
1017.447 +
1017.448 +template<
1017.449 +      template<
1017.450 +          typename P1, typename P2, typename P3, typename P4
1017.451 +        , typename P5
1017.452 +        >
1017.453 +      class F
1017.454 +    , typename T1, typename T2, typename T3, typename T4, typename T5
1017.455 +    , typename Tag
1017.456 +    >
1017.457 +struct lambda<
1017.458 +          F< T1,T2,T3,T4,T5 >
1017.459 +        , Tag
1017.460 +       
1017.461 +        >
1017.462 +{
1017.463 +    typedef lambda< T1,Tag > l1;
1017.464 +    typedef lambda< T2,Tag > l2;
1017.465 +    typedef lambda< T3,Tag > l3;
1017.466 +    typedef lambda< T4,Tag > l4;
1017.467 +    typedef lambda< T5,Tag > l5;
1017.468 +    
1017.469 +    typedef typename l1::is_le is_le1;
1017.470 +    typedef typename l2::is_le is_le2;
1017.471 +    typedef typename l3::is_le is_le3;
1017.472 +    typedef typename l4::is_le is_le4;
1017.473 +    typedef typename l5::is_le is_le5;
1017.474 +    
1017.475 +
1017.476 +    typedef typename aux::lambda_or<
1017.477 +          is_le1::value, is_le2::value, is_le3::value, is_le4::value
1017.478 +        , is_le5::value
1017.479 +        >::type is_le;
1017.480 +
1017.481 +    typedef aux::le_result5<
1017.482 +          is_le, Tag, F, l1, l2, l3, l4, l5
1017.483 +        > le_result_;
1017.484 +
1017.485 +    typedef typename le_result_::result_ result_;
1017.486 +    typedef typename le_result_::type type;
1017.487 +};
1017.488 +
1017.489 +template<
1017.490 +      typename F, typename T1, typename T2, typename T3, typename T4
1017.491 +    , typename T5
1017.492 +    , typename Tag
1017.493 +    >
1017.494 +struct lambda<
1017.495 +          bind5< F,T1,T2,T3,T4,T5 >
1017.496 +        , Tag
1017.497 +       
1017.498 +        >
1017.499 +{
1017.500 +    typedef false_ is_le;
1017.501 +    typedef bind5<
1017.502 +          F
1017.503 +        , T1, T2, T3, T4, T5
1017.504 +        > result_;
1017.505 +
1017.506 +    typedef result_ type;
1017.507 +};
1017.508 +
1017.509 +/// special case for 'protect'
1017.510 +template< typename T, typename Tag >
1017.511 +struct lambda< mpl::protect<T>, Tag >
1017.512 +{
1017.513 +    typedef false_ is_le;
1017.514 +    typedef mpl::protect<T> result_;
1017.515 +    typedef result_ type;
1017.516 +};
1017.517 +
1017.518 +/// specializations for the main 'bind' form
1017.519 +
1017.520 +template<
1017.521 +      typename F, typename T1, typename T2, typename T3, typename T4
1017.522 +    , typename T5
1017.523 +    , typename Tag
1017.524 +    >
1017.525 +struct lambda<
1017.526 +          bind< F,T1,T2,T3,T4,T5 >
1017.527 +        , Tag
1017.528 +       
1017.529 +        >
1017.530 +{
1017.531 +    typedef false_ is_le;
1017.532 +    typedef bind< F,T1,T2,T3,T4,T5 > result_;
1017.533 +    typedef result_ type;
1017.534 +};
1017.535 +
1017.536 +/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
1017.537 +
1017.538 +template<
1017.539 +      typename F, typename Tag1, typename Tag2
1017.540 +    >
1017.541 +struct lambda<
1017.542 +          lambda< F,Tag1 >
1017.543 +        , Tag2
1017.544 +        >
1017.545 +{
1017.546 +    typedef lambda< F,Tag2 > l1;
1017.547 +    typedef lambda< Tag1,Tag2 > l2;
1017.548 +    typedef typename l1::is_le is_le;
1017.549 +    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
1017.550 +    typedef typename le_result_::result_ result_;
1017.551 +    typedef typename le_result_::type type;
1017.552 +};
1017.553 +
1017.554 +BOOST_MPL_AUX_NA_SPEC(2, lambda)
1017.555 +
1017.556 +}}
1017.557 +
  1018.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/has_apply.hpp	Tue Mar 16 16:12:26 2010 +0000
  1018.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1018.3 @@ -1,32 +0,0 @@
  1018.4 -
  1018.5 -#ifndef BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
  1018.6 -#define BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
  1018.7 -
  1018.8 -// Copyright Aleksey Gurtovoy 2004
  1018.9 -//
 1018.10 -// Distributed under the Boost Software License, Version 1.0. 
 1018.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1018.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1018.13 -//
 1018.14 -// See http://www.boost.org/libs/mpl for documentation.
 1018.15 -
 1018.16 -// $Source: /cvsroot/boost/boost/boost/mpl/aux_/has_apply.hpp,v $
 1018.17 -// $Date: 2004/09/03 15:56:55 $
 1018.18 -// $Revision: 1.1 $
 1018.19 -
 1018.20 -#include <boost/mpl/has_xxx.hpp>
 1018.21 -#include <boost/mpl/aux_/config/has_apply.hpp>
 1018.22 -
 1018.23 -namespace boost { namespace mpl { namespace aux {
 1018.24 -#if !defined(BOOST_MPL_CFG_NO_HAS_APPLY)
 1018.25 -BOOST_MPL_HAS_XXX_TRAIT_NAMED_DEF(has_apply, apply, false)
 1018.26 -#else
 1018.27 -template< typename T, typename fallback_ = false_ >
 1018.28 -struct has_apply
 1018.29 -    : fallback_
 1018.30 -{
 1018.31 -};
 1018.32 -#endif
 1018.33 -}}}
 1018.34 -
 1018.35 -#endif // BOOST_MPL_AUX_HAS_APPLY_HPP_INCLUDED
  1019.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1019.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/has_key_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1019.3 @@ -0,0 +1,60 @@
  1019.4 +
  1019.5 +#ifndef BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
  1019.6 +#define BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
  1019.7 +
  1019.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1019.9 +// Copyright David Abrahams 2003-2004
 1019.10 +//
 1019.11 +// Distributed under the Boost Software License, Version 1.0. 
 1019.12 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1019.13 +// http://www.boost.org/LICENSE_1_0.txt)
 1019.14 +//
 1019.15 +// See http://www.boost.org/libs/mpl for documentation.
 1019.16 +
 1019.17 +// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/has_key_impl.hpp,v $
 1019.18 +// $Date: 2004/10/13 18:23:37 $
 1019.19 +// $Revision: 1.7 $
 1019.20 +
 1019.21 +#include <boost/mpl/set/aux_/tag.hpp>
 1019.22 +#include <boost/mpl/has_key_fwd.hpp>
 1019.23 +#include <boost/mpl/bool.hpp>
 1019.24 +#include <boost/mpl/aux_/overload_names.hpp>
 1019.25 +#include <boost/mpl/aux_/static_cast.hpp>
 1019.26 +#include <boost/mpl/aux_/yes_no.hpp>
 1019.27 +#include <boost/mpl/aux_/type_wrapper.hpp>
 1019.28 +#include <boost/mpl/aux_/config/workaround.hpp>
 1019.29 +#include <boost/mpl/aux_/config/static_constant.hpp>
 1019.30 +
 1019.31 +namespace boost { namespace mpl {
 1019.32 +
 1019.33 +template<>
 1019.34 +struct has_key_impl< aux::set_tag >
 1019.35 +{
 1019.36 +    template< typename Set, typename T > struct apply
 1019.37 +#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
 1019.38 +    || BOOST_WORKAROUND(__EDG_VERSION__, <= 245)
 1019.39 +    {
 1019.40 +        BOOST_STATIC_CONSTANT(bool, value = 
 1019.41 +              ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(
 1019.42 +                    Set
 1019.43 +                  , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0)
 1019.44 +                  ) ) == sizeof(aux::no_tag) )
 1019.45 +            );
 1019.46 +
 1019.47 +        typedef bool_<value> type;
 1019.48 +
 1019.49 +#else // ISO98 C++
 1019.50 +        : bool_< 
 1019.51 +              ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(
 1019.52 +                    Set
 1019.53 +                  , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0)
 1019.54 +                  ) ) == sizeof(aux::no_tag) )
 1019.55 +            >
 1019.56 +    {
 1019.57 +#endif
 1019.58 +    };
 1019.59 +};
 1019.60 +
 1019.61 +}}
 1019.62 +
 1019.63 +#endif // BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
  1020.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1020.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/has_tag.hpp	Wed Mar 31 12:27:01 2010 +0100
  1020.3 @@ -0,0 +1,42 @@
  1020.4 +/* Copyright 2003-2005 Joaquín M López Muñoz.
  1020.5 + * Distributed under the Boost Software License, Version 1.0.
  1020.6 + * (See accompanying file LICENSE_1_0.txt or copy at
  1020.7 + * http://www.boost.org/LICENSE_1_0.txt)
  1020.8 + *
  1020.9 + * See http://www.boost.org/libs/multi_index for library home page.
 1020.10 + */
 1020.11 +
 1020.12 +#ifndef BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP
 1020.13 +#define BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP
 1020.14 +
 1020.15 +#if defined(_MSC_VER)&&(_MSC_VER>=1200)
 1020.16 +#pragma once
 1020.17 +#endif
 1020.18 +
 1020.19 +#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
 1020.20 +#include <boost/mpl/contains.hpp>
 1020.21 +
 1020.22 +namespace boost{
 1020.23 +
 1020.24 +namespace multi_index{
 1020.25 +
 1020.26 +namespace detail{
 1020.27 +
 1020.28 +/* determines whether an index type has a given tag in its tag list */
 1020.29 +
 1020.30 +template<typename Tag>
 1020.31 +struct has_tag
 1020.32 +{
 1020.33 +  template<typename Index>
 1020.34 +  struct apply:mpl::contains<BOOST_DEDUCED_TYPENAME Index::tag_list,Tag>
 1020.35 +  {
 1020.36 +  }; 
 1020.37 +};
 1020.38 +
 1020.39 +} /* namespace multi_index::detail */
 1020.40 +
 1020.41 +} /* namespace multi_index */
 1020.42 +
 1020.43 +} /* namespace boost */
 1020.44 +
 1020.45 +#endif
  1021.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1021.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/include_preprocessed.hpp	Wed Mar 31 12:27:01 2010 +0100
  1021.3 @@ -0,0 +1,55 @@
  1021.4 +
  1021.5 +// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
  1021.6 +
  1021.7 +// Copyright Aleksey Gurtovoy 2000-2006
  1021.8 +//
  1021.9 +// Distributed under the Boost Software License, Version 1.0. 
 1021.10 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1021.11 +// http://www.boost.org/LICENSE_1_0.txt)
 1021.12 +//
 1021.13 +// See http://www.boost.org/libs/mpl for documentation.
 1021.14 +
 1021.15 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/include_preprocessed.hpp,v $
 1021.16 +// $Date: 2006/11/09 01:21:03 $
 1021.17 +// $Revision: 1.4.8.1 $
 1021.18 +
 1021.19 +#include <boost/mpl/aux_/config/typeof.hpp>
 1021.20 +#include <boost/mpl/aux_/config/ctps.hpp>
 1021.21 +#include <boost/mpl/aux_/config/preprocessor.hpp>
 1021.22 +#include <boost/mpl/aux_/config/workaround.hpp>
 1021.23 +
 1021.24 +#include <boost/preprocessor/cat.hpp>
 1021.25 +#include <boost/preprocessor/stringize.hpp>
 1021.26 +
 1021.27 +#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1021.28 +#   define AUX778076_INCLUDE_DIR typeof_based
 1021.29 +#elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 1021.30 +   || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 1021.31 +#   define AUX778076_INCLUDE_DIR no_ctps
 1021.32 +#else
 1021.33 +#   define AUX778076_INCLUDE_DIR plain
 1021.34 +#endif
 1021.35 +
 1021.36 +#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 1021.37 +#   define AUX778076_HEADER \
 1021.38 +    AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER \
 1021.39 +/**/
 1021.40 +#else
 1021.41 +#   define AUX778076_HEADER \
 1021.42 +    BOOST_PP_CAT(AUX778076_INCLUDE_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
 1021.43 +/**/
 1021.44 +#endif
 1021.45 +
 1021.46 +
 1021.47 +#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
 1021.48 +#   define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
 1021.49 +#   include AUX778076_INCLUDE_STRING
 1021.50 +#   undef AUX778076_INCLUDE_STRING
 1021.51 +#else
 1021.52 +#   include BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
 1021.53 +#endif
 1021.54 +
 1021.55 +#   undef AUX778076_HEADER
 1021.56 +#   undef AUX778076_INCLUDE_DIR
 1021.57 +
 1021.58 +#undef BOOST_MPL_PREPROCESSED_HEADER
  1022.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1022.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/iter_fold_if_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1022.3 @@ -0,0 +1,133 @@
  1022.4 +
  1022.5 +// Copyright Aleksey Gurtovoy 2001-2004
  1022.6 +// Copyright David Abrahams 2001-2002
  1022.7 +//
  1022.8 +// Distributed under the Boost Software License, Version 1.0. 
  1022.9 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1022.10 +// http://www.boost.org/LICENSE_1_0.txt)
 1022.11 +//
 1022.12 +
 1022.13 +// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
 1022.14 +// -- DO NOT modify by hand!
 1022.15 +
 1022.16 +namespace boost { namespace mpl { namespace aux {
 1022.17 +
 1022.18 +template< typename Iterator, typename State >
 1022.19 +struct iter_fold_if_null_step
 1022.20 +{
 1022.21 +    typedef State state;
 1022.22 +    typedef Iterator iterator;
 1022.23 +};
 1022.24 +
 1022.25 +template< bool >
 1022.26 +struct iter_fold_if_step_impl
 1022.27 +{
 1022.28 +    template<
 1022.29 +          typename Iterator
 1022.30 +        , typename State
 1022.31 +        , typename StateOp
 1022.32 +        , typename IteratorOp
 1022.33 +        >
 1022.34 +    struct result_
 1022.35 +    {
 1022.36 +        typedef typename apply2< StateOp,State,Iterator >::type state;
 1022.37 +        typedef typename IteratorOp::type iterator;
 1022.38 +    };
 1022.39 +};
 1022.40 +
 1022.41 +template<>
 1022.42 +struct iter_fold_if_step_impl<false>
 1022.43 +{
 1022.44 +    template<
 1022.45 +          typename Iterator
 1022.46 +        , typename State
 1022.47 +        , typename StateOp
 1022.48 +        , typename IteratorOp
 1022.49 +        >
 1022.50 +    struct result_
 1022.51 +    {
 1022.52 +        typedef State state;
 1022.53 +        typedef Iterator iterator;
 1022.54 +    };
 1022.55 +};
 1022.56 +
 1022.57 +template<
 1022.58 +      typename Iterator
 1022.59 +    , typename State
 1022.60 +    , typename ForwardOp
 1022.61 +    , typename Predicate
 1022.62 +    >
 1022.63 +struct iter_fold_if_forward_step
 1022.64 +{
 1022.65 +    typedef typename apply2< Predicate,State,Iterator >::type not_last;
 1022.66 +    typedef typename iter_fold_if_step_impl<
 1022.67 +          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
 1022.68 +        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 1022.69 +
 1022.70 +    typedef typename impl_::state state;
 1022.71 +    typedef typename impl_::iterator iterator;
 1022.72 +};
 1022.73 +
 1022.74 +template<
 1022.75 +      typename Iterator
 1022.76 +    , typename State
 1022.77 +    , typename BackwardOp
 1022.78 +    , typename Predicate
 1022.79 +    >
 1022.80 +struct iter_fold_if_backward_step
 1022.81 +{
 1022.82 +    typedef typename apply2< Predicate,State,Iterator >::type not_last;
 1022.83 +    typedef typename iter_fold_if_step_impl<
 1022.84 +          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
 1022.85 +        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 1022.86 +
 1022.87 +    typedef typename impl_::state state;
 1022.88 +    typedef typename impl_::iterator iterator;
 1022.89 +};
 1022.90 +
 1022.91 +template<
 1022.92 +      typename Iterator
 1022.93 +    , typename State
 1022.94 +    , typename ForwardOp
 1022.95 +    , typename ForwardPredicate
 1022.96 +    , typename BackwardOp
 1022.97 +    , typename BackwardPredicate
 1022.98 +    >
 1022.99 +struct iter_fold_if_impl
1022.100 +{
1022.101 + private:
1022.102 +    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
1022.103 +    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
1022.104 +    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
1022.105 +    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
1022.106 +    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
1022.107 +    
1022.108 +
1022.109 +    typedef typename if_<
1022.110 +          typename forward_step4::not_last
1022.111 +        , iter_fold_if_impl<
1022.112 +              typename forward_step4::iterator
1022.113 +            , typename forward_step4::state
1022.114 +            , ForwardOp
1022.115 +            , ForwardPredicate
1022.116 +            , BackwardOp
1022.117 +            , BackwardPredicate
1022.118 +            >
1022.119 +        , iter_fold_if_null_step<
1022.120 +              typename forward_step4::iterator
1022.121 +            , typename forward_step4::state
1022.122 +            >
1022.123 +        >::type backward_step4;
1022.124 +
1022.125 +    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
1022.126 +    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
1022.127 +    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
1022.128 +    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
1022.129 +    
1022.130 +
1022.131 + public:
1022.132 +    typedef typename backward_step0::state state;
1022.133 +    typedef typename backward_step4::iterator iterator;
1022.134 +};
1022.135 +
1022.136 +}}}
  1023.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1023.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/iter_fold_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1023.3 @@ -0,0 +1,180 @@
  1023.4 +
  1023.5 +// Copyright Aleksey Gurtovoy 2000-2004
  1023.6 +//
  1023.7 +// Distributed under the Boost Software License, Version 1.0. 
  1023.8 +// (See accompanying file LICENSE_1_0.txt or copy at 
  1023.9 +// http://www.boost.org/LICENSE_1_0.txt)
 1023.10 +//
 1023.11 +
 1023.12 +// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
 1023.13 +// -- DO NOT modify by hand!
 1023.14 +
 1023.15 +namespace boost { namespace mpl { namespace aux {
 1023.16 +
 1023.17 +/// forward declaration
 1023.18 +
 1023.19 +template<
 1023.20 +      int N
 1023.21 +    , typename First
 1023.22 +    , typename Last
 1023.23 +    , typename State
 1023.24 +    , typename ForwardOp
 1023.25 +    >
 1023.26 +struct iter_fold_impl;
 1023.27 +
 1023.28 +template<
 1023.29 +      typename First
 1023.30 +    , typename Last
 1023.31 +    , typename State
 1023.32 +    , typename ForwardOp
 1023.33 +    >
 1023.34 +struct iter_fold_impl< 0,First,Last,State,ForwardOp >
 1023.35 +{
 1023.36 +    typedef First iter0;
 1023.37 +    typedef State state0;
 1023.38 +    typedef state0 state;
 1023.39 +    typedef iter0 iterator;
 1023.40 +};
 1023.41 +
 1023.42 +template<
 1023.43 +      typename First
 1023.44 +    , typename Last
 1023.45 +    , typename State
 1023.46 +    , typename ForwardOp
 1023.47 +    >
 1023.48 +struct iter_fold_impl< 1,First,Last,State,ForwardOp >
 1023.49 +{
 1023.50 +    typedef First iter0;
 1023.51 +    typedef State state0;
 1023.52 +    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
 1023.53 +    typedef typename mpl::next<iter0>::type iter1;
 1023.54 +    
 1023.55 +
 1023.56 +    typedef state1 state;
 1023.57 +    typedef iter1 iterator;
 1023.58 +};
 1023.59 +
 1023.60 +template<
 1023.61 +      typename First
 1023.62 +    , typename Last
 1023.63 +    , typename State
 1023.64 +    , typename ForwardOp
 1023.65 +    >
 1023.66 +struct iter_fold_impl< 2,First,Last,State,ForwardOp >
 1023.67 +{
 1023.68 +    typedef First iter0;
 1023.69 +    typedef State state0;
 1023.70 +    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
 1023.71 +    typedef typename mpl::next<iter0>::type iter1;
 1023.72 +    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
 1023.73 +    typedef typename mpl::next<iter1>::type iter2;
 1023.74 +    
 1023.75 +
 1023.76 +    typedef state2 state;
 1023.77 +    typedef iter2 iterator;
 1023.78 +};
 1023.79 +
 1023.80 +template<
 1023.81 +      typename First
 1023.82 +    , typename Last
 1023.83 +    , typename State
 1023.84 +    , typename ForwardOp
 1023.85 +    >
 1023.86 +struct iter_fold_impl< 3,First,Last,State,ForwardOp >
 1023.87 +{
 1023.88 +    typedef First iter0;
 1023.89 +    typedef State state0;
 1023.90 +    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
 1023.91 +    typedef typename mpl::next<iter0>::type iter1;
 1023.92 +    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
 1023.93 +    typedef typename mpl::next<iter1>::type iter2;
 1023.94 +    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
 1023.95 +    typedef typename mpl::next<iter2>::type iter3;
 1023.96 +    
 1023.97 +
 1023.98 +    typedef state3 state;
 1023.99 +    typedef iter3 iterator;
1023.100 +};
1023.101 +
1023.102 +template<
1023.103 +      typename First
1023.104 +    , typename Last
1023.105 +    , typename State
1023.106 +    , typename ForwardOp
1023.107 +    >
1023.108 +struct iter_fold_impl< 4,First,Last,State,ForwardOp >
1023.109 +{
1023.110 +    typedef First iter0;
1023.111 +    typedef State state0;
1023.112 +    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
1023.113 +    typedef typename mpl::next<iter0>::type iter1;
1023.114 +    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
1023.115 +    typedef typename mpl::next<iter1>::type iter2;
1023.116 +    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
1023.117 +    typedef typename mpl::next<iter2>::type iter3;
1023.118 +    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
1023.119 +    typedef typename mpl::next<iter3>::type iter4;
1023.120 +    
1023.121 +
1023.122 +    typedef state4 state;
1023.123 +    typedef iter4 iterator;
1023.124 +};
1023.125 +
1023.126 +template<
1023.127 +      int N
1023.128 +    , typename First
1023.129 +    , typename Last
1023.130 +    , typename State
1023.131 +    , typename ForwardOp
1023.132 +    >
1023.133 +struct iter_fold_impl
1023.134 +{
1023.135 +    typedef iter_fold_impl<
1023.136 +          4
1023.137 +        , First
1023.138 +        , Last
1023.139 +        , State
1023.140 +        , ForwardOp
1023.141 +        > chunk_;
1023.142 +
1023.143 +    typedef iter_fold_impl<
1023.144 +          ( (N - 4) < 0 ? 0 : N - 4 )
1023.145 +        , typename chunk_::iterator
1023.146 +        , Last
1023.147 +        , typename chunk_::state
1023.148 +        , ForwardOp
1023.149 +        > res_;
1023.150 +
1023.151 +    typedef typename res_::state state;
1023.152 +    typedef typename res_::iterator iterator;
1023.153 +};
1023.154 +
1023.155 +template<
1023.156 +      typename First
1023.157 +    , typename Last
1023.158 +    , typename State
1023.159 +    , typename ForwardOp
1023.160 +    >
1023.161 +struct iter_fold_impl< -1,First,Last,State,ForwardOp >
1023.162 +    : iter_fold_impl<
1023.163 +          -1
1023.164 +        , typename mpl::next<First>::type
1023.165 +        , Last
1023.166 +        , typename apply2< ForwardOp,State,First >::type
1023.167 +        , ForwardOp
1023.168 +        >
1023.169 +{
1023.170 +};
1023.171 +
1023.172 +template<
1023.173 +      typename Last
1023.174 +    , typename State
1023.175 +    , typename ForwardOp
1023.176 +    >
1023.177 +struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
1023.178 +{
1023.179 +    typedef State state;
1023.180 +    typedef Last iterator;
1023.181 +};
1023.182 +
1023.183 +}}}
  1024.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp	Tue Mar 16 16:12:26 2010 +0000
  1024.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1024.3 @@ -1,97 +0,0 @@
  1024.4 -
  1024.5 -// Copyright Aleksey Gurtovoy 2000-2004
  1024.6 -//
  1024.7 -// Distributed under the Boost Software License, Version 1.0. 
  1024.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1024.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1024.10 -//
 1024.11 -
 1024.12 -// Preprocessed version of "boost/mpl/aux_/advance_backward.hpp" header
 1024.13 -// -- DO NOT modify by hand!
 1024.14 -
 1024.15 -namespace boost { namespace mpl { namespace aux {
 1024.16 -
 1024.17 -template< long N > struct advance_backward;
 1024.18 -template<>
 1024.19 -struct advance_backward<0>
 1024.20 -{
 1024.21 -    template< typename Iterator > struct apply
 1024.22 -    {
 1024.23 -        typedef Iterator iter0;
 1024.24 -        typedef iter0 type;
 1024.25 -    };
 1024.26 -};
 1024.27 -
 1024.28 -template<>
 1024.29 -struct advance_backward<1>
 1024.30 -{
 1024.31 -    template< typename Iterator > struct apply
 1024.32 -    {
 1024.33 -        typedef Iterator iter0;
 1024.34 -        typedef typename prior<iter0>::type iter1;
 1024.35 -        typedef iter1 type;
 1024.36 -    };
 1024.37 -};
 1024.38 -
 1024.39 -template<>
 1024.40 -struct advance_backward<2>
 1024.41 -{
 1024.42 -    template< typename Iterator > struct apply
 1024.43 -    {
 1024.44 -        typedef Iterator iter0;
 1024.45 -        typedef typename prior<iter0>::type iter1;
 1024.46 -        typedef typename prior<iter1>::type iter2;
 1024.47 -        typedef iter2 type;
 1024.48 -    };
 1024.49 -};
 1024.50 -
 1024.51 -template<>
 1024.52 -struct advance_backward<3>
 1024.53 -{
 1024.54 -    template< typename Iterator > struct apply
 1024.55 -    {
 1024.56 -        typedef Iterator iter0;
 1024.57 -        typedef typename prior<iter0>::type iter1;
 1024.58 -        typedef typename prior<iter1>::type iter2;
 1024.59 -        typedef typename prior<iter2>::type iter3;
 1024.60 -        typedef iter3 type;
 1024.61 -    };
 1024.62 -};
 1024.63 -
 1024.64 -template<>
 1024.65 -struct advance_backward<4>
 1024.66 -{
 1024.67 -    template< typename Iterator > struct apply
 1024.68 -    {
 1024.69 -        typedef Iterator iter0;
 1024.70 -        typedef typename prior<iter0>::type iter1;
 1024.71 -        typedef typename prior<iter1>::type iter2;
 1024.72 -        typedef typename prior<iter2>::type iter3;
 1024.73 -        typedef typename prior<iter3>::type iter4;
 1024.74 -        typedef iter4 type;
 1024.75 -    };
 1024.76 -};
 1024.77 -
 1024.78 -template< long N >
 1024.79 -struct advance_backward
 1024.80 -{
 1024.81 -    template< typename Iterator > struct apply
 1024.82 -    {
 1024.83 -        typedef typename apply_wrap1<
 1024.84 -              advance_backward<4>
 1024.85 -            , Iterator
 1024.86 -            >::type chunk_result_;
 1024.87 -
 1024.88 -        typedef typename apply_wrap1<
 1024.89 -              advance_backward<(
 1024.90 -                (N - 4) < 0
 1024.91 -                    ? 0
 1024.92 -                    : N - 4
 1024.93 -                    )>
 1024.94 -            , chunk_result_
 1024.95 -            >::type type;
 1024.96 -    };
 1024.97 -};
 1024.98 -
 1024.99 -}}}
1024.100 -
  1025.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp	Tue Mar 16 16:12:26 2010 +0000
  1025.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1025.3 @@ -1,97 +0,0 @@
  1025.4 -
  1025.5 -// Copyright Aleksey Gurtovoy 2000-2004
  1025.6 -//
  1025.7 -// Distributed under the Boost Software License, Version 1.0. 
  1025.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1025.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1025.10 -//
 1025.11 -
 1025.12 -// Preprocessed version of "boost/mpl/aux_/advance_forward.hpp" header
 1025.13 -// -- DO NOT modify by hand!
 1025.14 -
 1025.15 -namespace boost { namespace mpl { namespace aux {
 1025.16 -
 1025.17 -template< long N > struct advance_forward;
 1025.18 -template<>
 1025.19 -struct advance_forward<0>
 1025.20 -{
 1025.21 -    template< typename Iterator > struct apply
 1025.22 -    {
 1025.23 -        typedef Iterator iter0;
 1025.24 -        typedef iter0 type;
 1025.25 -    };
 1025.26 -};
 1025.27 -
 1025.28 -template<>
 1025.29 -struct advance_forward<1>
 1025.30 -{
 1025.31 -    template< typename Iterator > struct apply
 1025.32 -    {
 1025.33 -        typedef Iterator iter0;
 1025.34 -        typedef typename next<iter0>::type iter1;
 1025.35 -        typedef iter1 type;
 1025.36 -    };
 1025.37 -};
 1025.38 -
 1025.39 -template<>
 1025.40 -struct advance_forward<2>
 1025.41 -{
 1025.42 -    template< typename Iterator > struct apply
 1025.43 -    {
 1025.44 -        typedef Iterator iter0;
 1025.45 -        typedef typename next<iter0>::type iter1;
 1025.46 -        typedef typename next<iter1>::type iter2;
 1025.47 -        typedef iter2 type;
 1025.48 -    };
 1025.49 -};
 1025.50 -
 1025.51 -template<>
 1025.52 -struct advance_forward<3>
 1025.53 -{
 1025.54 -    template< typename Iterator > struct apply
 1025.55 -    {
 1025.56 -        typedef Iterator iter0;
 1025.57 -        typedef typename next<iter0>::type iter1;
 1025.58 -        typedef typename next<iter1>::type iter2;
 1025.59 -        typedef typename next<iter2>::type iter3;
 1025.60 -        typedef iter3 type;
 1025.61 -    };
 1025.62 -};
 1025.63 -
 1025.64 -template<>
 1025.65 -struct advance_forward<4>
 1025.66 -{
 1025.67 -    template< typename Iterator > struct apply
 1025.68 -    {
 1025.69 -        typedef Iterator iter0;
 1025.70 -        typedef typename next<iter0>::type iter1;
 1025.71 -        typedef typename next<iter1>::type iter2;
 1025.72 -        typedef typename next<iter2>::type iter3;
 1025.73 -        typedef typename next<iter3>::type iter4;
 1025.74 -        typedef iter4 type;
 1025.75 -    };
 1025.76 -};
 1025.77 -
 1025.78 -template< long N >
 1025.79 -struct advance_forward
 1025.80 -{
 1025.81 -    template< typename Iterator > struct apply
 1025.82 -    {
 1025.83 -        typedef typename apply_wrap1<
 1025.84 -              advance_forward<4>
 1025.85 -            , Iterator
 1025.86 -            >::type chunk_result_;
 1025.87 -
 1025.88 -        typedef typename apply_wrap1<
 1025.89 -              advance_forward<(
 1025.90 -                (N - 4) < 0
 1025.91 -                    ? 0
 1025.92 -                    : N - 4
 1025.93 -                    )>
 1025.94 -            , chunk_result_
 1025.95 -            >::type type;
 1025.96 -    };
 1025.97 -};
 1025.98 -
 1025.99 -}}}
1025.100 -
  1026.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp	Tue Mar 16 16:12:26 2010 +0000
  1026.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1026.3 @@ -1,52 +0,0 @@
  1026.4 -
  1026.5 -// Copyright Aleksey Gurtovoy 2000-2004
  1026.6 -//
  1026.7 -// Distributed under the Boost Software License, Version 1.0. 
  1026.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1026.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1026.10 -//
 1026.11 -
 1026.12 -// Preprocessed version of "boost/mpl/apply_fwd.hpp" header
 1026.13 -// -- DO NOT modify by hand!
 1026.14 -
 1026.15 -namespace boost { namespace mpl {
 1026.16 -
 1026.17 -template<
 1026.18 -      typename F, typename T1 = na, typename T2 = na, typename T3 = na
 1026.19 -    , typename T4 = na, typename T5 = na
 1026.20 -    >
 1026.21 -struct apply;
 1026.22 -
 1026.23 -template<
 1026.24 -      typename F
 1026.25 -    >
 1026.26 -struct apply0;
 1026.27 -
 1026.28 -template<
 1026.29 -      typename F, typename T1
 1026.30 -    >
 1026.31 -struct apply1;
 1026.32 -
 1026.33 -template<
 1026.34 -      typename F, typename T1, typename T2
 1026.35 -    >
 1026.36 -struct apply2;
 1026.37 -
 1026.38 -template<
 1026.39 -      typename F, typename T1, typename T2, typename T3
 1026.40 -    >
 1026.41 -struct apply3;
 1026.42 -
 1026.43 -template<
 1026.44 -      typename F, typename T1, typename T2, typename T3, typename T4
 1026.45 -    >
 1026.46 -struct apply4;
 1026.47 -
 1026.48 -template<
 1026.49 -      typename F, typename T1, typename T2, typename T3, typename T4
 1026.50 -    , typename T5
 1026.51 -    >
 1026.52 -struct apply5;
 1026.53 -
 1026.54 -}}
 1026.55 -
  1027.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp	Tue Mar 16 16:12:26 2010 +0000
  1027.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1027.3 @@ -1,84 +0,0 @@
  1027.4 -
  1027.5 -// Copyright Aleksey Gurtovoy 2000-2004
  1027.6 -//
  1027.7 -// Distributed under the Boost Software License, Version 1.0. 
  1027.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1027.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1027.10 -//
 1027.11 -
 1027.12 -// Preprocessed version of "boost/mpl/apply_wrap.hpp" header
 1027.13 -// -- DO NOT modify by hand!
 1027.14 -
 1027.15 -namespace boost { namespace mpl {
 1027.16 -
 1027.17 -template<
 1027.18 -      typename F
 1027.19 -
 1027.20 -    , typename has_apply_ = typename aux::has_apply<F>::type
 1027.21 -
 1027.22 -    >
 1027.23 -struct apply_wrap0
 1027.24 -
 1027.25 -    : F::template apply<  >
 1027.26 -{
 1027.27 -};
 1027.28 -
 1027.29 -template< typename F >
 1027.30 -struct apply_wrap0< F,true_ >
 1027.31 -    : F::apply
 1027.32 -{
 1027.33 -};
 1027.34 -
 1027.35 -template<
 1027.36 -      typename F, typename T1
 1027.37 -
 1027.38 -    >
 1027.39 -struct apply_wrap1
 1027.40 -
 1027.41 -    : F::template apply<T1>
 1027.42 -{
 1027.43 -};
 1027.44 -
 1027.45 -template<
 1027.46 -      typename F, typename T1, typename T2
 1027.47 -
 1027.48 -    >
 1027.49 -struct apply_wrap2
 1027.50 -
 1027.51 -    : F::template apply< T1,T2 >
 1027.52 -{
 1027.53 -};
 1027.54 -
 1027.55 -template<
 1027.56 -      typename F, typename T1, typename T2, typename T3
 1027.57 -
 1027.58 -    >
 1027.59 -struct apply_wrap3
 1027.60 -
 1027.61 -    : F::template apply< T1,T2,T3 >
 1027.62 -{
 1027.63 -};
 1027.64 -
 1027.65 -template<
 1027.66 -      typename F, typename T1, typename T2, typename T3, typename T4
 1027.67 -
 1027.68 -    >
 1027.69 -struct apply_wrap4
 1027.70 -
 1027.71 -    : F::template apply< T1,T2,T3,T4 >
 1027.72 -{
 1027.73 -};
 1027.74 -
 1027.75 -template<
 1027.76 -      typename F, typename T1, typename T2, typename T3, typename T4
 1027.77 -    , typename T5
 1027.78 -
 1027.79 -    >
 1027.80 -struct apply_wrap5
 1027.81 -
 1027.82 -    : F::template apply< T1,T2,T3,T4,T5 >
 1027.83 -{
 1027.84 -};
 1027.85 -
 1027.86 -}}
 1027.87 -
  1028.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/arg.hpp	Tue Mar 16 16:12:26 2010 +0000
  1028.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1028.3 @@ -1,123 +0,0 @@
  1028.4 -
  1028.5 -// Copyright Peter Dimov 2001-2002
  1028.6 -// Copyright Aleksey Gurtovoy 2001-2004
  1028.7 -//
  1028.8 -// Distributed under the Boost Software License, Version 1.0. 
  1028.9 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1028.10 -// http://www.boost.org/LICENSE_1_0.txt)
 1028.11 -//
 1028.12 -
 1028.13 -// Preprocessed version of "boost/mpl/arg.hpp" header
 1028.14 -// -- DO NOT modify by hand!
 1028.15 -
 1028.16 -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 1028.17 -template<> struct arg< -1 >
 1028.18 -{
 1028.19 -    BOOST_STATIC_CONSTANT(int, value  = -1);
 1028.20 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
 1028.21 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 1028.22 -
 1028.23 -    template<
 1028.24 -          typename U1 = na, typename U2 = na, typename U3 = na
 1028.25 -        , typename U4 = na, typename U5 = na
 1028.26 -        >
 1028.27 -    struct apply
 1028.28 -    {
 1028.29 -        typedef U1 type;
 1028.30 -        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
 1028.31 -    };
 1028.32 -};
 1028.33 -
 1028.34 -template<> struct arg<1>
 1028.35 -{
 1028.36 -    BOOST_STATIC_CONSTANT(int, value  = 1);
 1028.37 -    typedef arg<2> next;
 1028.38 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
 1028.39 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 1028.40 -
 1028.41 -    template<
 1028.42 -          typename U1 = na, typename U2 = na, typename U3 = na
 1028.43 -        , typename U4 = na, typename U5 = na
 1028.44 -        >
 1028.45 -    struct apply
 1028.46 -    {
 1028.47 -        typedef U1 type;
 1028.48 -        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
 1028.49 -    };
 1028.50 -};
 1028.51 -
 1028.52 -template<> struct arg<2>
 1028.53 -{
 1028.54 -    BOOST_STATIC_CONSTANT(int, value  = 2);
 1028.55 -    typedef arg<3> next;
 1028.56 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
 1028.57 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 1028.58 -
 1028.59 -    template<
 1028.60 -          typename U1 = na, typename U2 = na, typename U3 = na
 1028.61 -        , typename U4 = na, typename U5 = na
 1028.62 -        >
 1028.63 -    struct apply
 1028.64 -    {
 1028.65 -        typedef U2 type;
 1028.66 -        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
 1028.67 -    };
 1028.68 -};
 1028.69 -
 1028.70 -template<> struct arg<3>
 1028.71 -{
 1028.72 -    BOOST_STATIC_CONSTANT(int, value  = 3);
 1028.73 -    typedef arg<4> next;
 1028.74 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
 1028.75 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 1028.76 -
 1028.77 -    template<
 1028.78 -          typename U1 = na, typename U2 = na, typename U3 = na
 1028.79 -        , typename U4 = na, typename U5 = na
 1028.80 -        >
 1028.81 -    struct apply
 1028.82 -    {
 1028.83 -        typedef U3 type;
 1028.84 -        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
 1028.85 -    };
 1028.86 -};
 1028.87 -
 1028.88 -template<> struct arg<4>
 1028.89 -{
 1028.90 -    BOOST_STATIC_CONSTANT(int, value  = 4);
 1028.91 -    typedef arg<5> next;
 1028.92 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
 1028.93 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
 1028.94 -
 1028.95 -    template<
 1028.96 -          typename U1 = na, typename U2 = na, typename U3 = na
 1028.97 -        , typename U4 = na, typename U5 = na
 1028.98 -        >
 1028.99 -    struct apply
1028.100 -    {
1028.101 -        typedef U4 type;
1028.102 -        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
1028.103 -    };
1028.104 -};
1028.105 -
1028.106 -template<> struct arg<5>
1028.107 -{
1028.108 -    BOOST_STATIC_CONSTANT(int, value  = 5);
1028.109 -    typedef arg<6> next;
1028.110 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, tag)
1028.111 -    BOOST_MPL_AUX_ARG_TYPEDEF(na, type)
1028.112 -
1028.113 -    template<
1028.114 -          typename U1 = na, typename U2 = na, typename U3 = na
1028.115 -        , typename U4 = na, typename U5 = na
1028.116 -        >
1028.117 -    struct apply
1028.118 -    {
1028.119 -        typedef U5 type;
1028.120 -        BOOST_MPL_AUX_ASSERT_NOT_NA(type);
1028.121 -    };
1028.122 -};
1028.123 -
1028.124 -BOOST_MPL_AUX_NONTYPE_ARITY_SPEC(1,int, arg)
1028.125 -
1028.126 -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
  1029.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1029.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp	Wed Mar 31 12:27:01 2010 +0100
  1029.3 @@ -0,0 +1,99 @@
  1029.4 +
  1029.5 +#if !defined(BOOST_PP_IS_ITERATING)
  1029.6 +
  1029.7 +///// header body
  1029.8 +
  1029.9 +#ifndef BOOST_MPL_BIND_FWD_HPP_INCLUDED
 1029.10 +#define BOOST_MPL_BIND_FWD_HPP_INCLUDED
 1029.11 +
 1029.12 +// Copyright Aleksey Gurtovoy 2000-2004
 1029.13 +//
 1029.14 +// Distributed under the Boost Software License, Version 1.0. 
 1029.15 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1029.16 +// http://www.boost.org/LICENSE_1_0.txt)
 1029.17 +//
 1029.18 +// See http://www.boost.org/libs/mpl for documentation.
 1029.19 +
 1029.20 +// $Source: /cvsroot/boost/boost/boost/mpl/bind_fwd.hpp,v $
 1029.21 +// $Date: 2004/09/02 15:40:41 $
 1029.22 +// $Revision: 1.2 $
 1029.23 +
 1029.24 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1029.25 +#   include <boost/mpl/aux_/na.hpp>
 1029.26 +#endif
 1029.27 +
 1029.28 +#include <boost/mpl/aux_/config/bind.hpp>
 1029.29 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1029.30 +
 1029.31 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1029.32 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1029.33 +
 1029.34 +#   define BOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp
 1029.35 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1029.36 +
 1029.37 +#else
 1029.38 +
 1029.39 +#   include <boost/mpl/limits/arity.hpp>
 1029.40 +#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1029.41 +#   include <boost/mpl/aux_/preprocessor/default_params.hpp>
 1029.42 +#   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
 1029.43 +
 1029.44 +#   include <boost/preprocessor/comma_if.hpp>
 1029.45 +#   include <boost/preprocessor/iterate.hpp>
 1029.46 +#   include <boost/preprocessor/cat.hpp>
 1029.47 +
 1029.48 +namespace boost { namespace mpl {
 1029.49 +
 1029.50 +// local macros, #undef-ined at the end of the header
 1029.51 +
 1029.52 +#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 1029.53 +#       define AUX778076_DMC_PARAM() , int dummy_ = 0
 1029.54 +#   else
 1029.55 +#       define AUX778076_DMC_PARAM()
 1029.56 +#   endif
 1029.57 +
 1029.58 +#   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
 1029.59 +    BOOST_MPL_PP_DEFAULT_PARAMS( \
 1029.60 +          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
 1029.61 +        , param \
 1029.62 +        , value \
 1029.63 +        ) \
 1029.64 +    AUX778076_DMC_PARAM() \
 1029.65 +    /**/
 1029.66 +
 1029.67 +#   define AUX778076_BIND_N_PARAMS(n, param) \
 1029.68 +    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
 1029.69 +    AUX778076_DMC_PARAM() \
 1029.70 +    /**/
 1029.71 +
 1029.72 +#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
 1029.73 +template<
 1029.74 +      typename F, AUX778076_BIND_DEFAULT_PARAMS(typename T, na)
 1029.75 +    >
 1029.76 +struct bind;
 1029.77 +#endif
 1029.78 +
 1029.79 +#define BOOST_PP_ITERATION_PARAMS_1 \
 1029.80 +    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind_fwd.hpp>))
 1029.81 +#include BOOST_PP_ITERATE()
 1029.82 +
 1029.83 +#   undef AUX778076_BIND_N_PARAMS
 1029.84 +#   undef AUX778076_BIND_DEFAULT_PARAMS
 1029.85 +#   undef AUX778076_DMC_PARAM
 1029.86 +}}
 1029.87 +
 1029.88 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1029.89 +#endif // BOOST_MPL_BIND_FWD_HPP_INCLUDED
 1029.90 +
 1029.91 +///// iteration
 1029.92 +
 1029.93 +#else
 1029.94 +#define i_ BOOST_PP_FRAME_ITERATION(1)
 1029.95 +
 1029.96 +template<
 1029.97 +      typename F AUX778076_BIND_N_PARAMS(i_, typename T)
 1029.98 +    >
 1029.99 +struct BOOST_PP_CAT(bind,i_);
1029.100 +
1029.101 +#undef i_
1029.102 +#endif // BOOST_PP_IS_ITERATING
  1030.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1030.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/equal_to.hpp	Wed Mar 31 12:27:01 2010 +0100
  1030.3 @@ -0,0 +1,21 @@
  1030.4 +
  1030.5 +#ifndef BOOST_MPL_EQUAL_TO_HPP_INCLUDED
  1030.6 +#define BOOST_MPL_EQUAL_TO_HPP_INCLUDED
  1030.7 +
  1030.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1030.9 +//
 1030.10 +// Distributed under the Boost Software License, Version 1.0. 
 1030.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1030.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1030.13 +//
 1030.14 +// See http://www.boost.org/libs/mpl for documentation.
 1030.15 +
 1030.16 +// $Source: /cvsroot/boost/boost/boost/mpl/equal_to.hpp,v $
 1030.17 +// $Date: 2004/09/02 15:40:41 $
 1030.18 +// $Revision: 1.3 $
 1030.19 +
 1030.20 +#define AUX778076_OP_NAME equal_to
 1030.21 +#define AUX778076_OP_TOKEN ==
 1030.22 +#include <boost/mpl/aux_/comparison_op.hpp>
 1030.23 +
 1030.24 +#endif // BOOST_MPL_EQUAL_TO_HPP_INCLUDED
  1031.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1031.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1031.3 @@ -1,180 +0,0 @@
  1031.4 -
  1031.5 -// Copyright Aleksey Gurtovoy 2000-2004
  1031.6 -//
  1031.7 -// Distributed under the Boost Software License, Version 1.0. 
  1031.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1031.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1031.10 -//
 1031.11 -
 1031.12 -// Preprocessed version of "boost/mpl/aux_/fold_impl.hpp" header
 1031.13 -// -- DO NOT modify by hand!
 1031.14 -
 1031.15 -namespace boost { namespace mpl { namespace aux {
 1031.16 -
 1031.17 -/// forward declaration
 1031.18 -
 1031.19 -template<
 1031.20 -      int N
 1031.21 -    , typename First
 1031.22 -    , typename Last
 1031.23 -    , typename State
 1031.24 -    , typename ForwardOp
 1031.25 -    >
 1031.26 -struct fold_impl;
 1031.27 -
 1031.28 -template<
 1031.29 -      typename First
 1031.30 -    , typename Last
 1031.31 -    , typename State
 1031.32 -    , typename ForwardOp
 1031.33 -    >
 1031.34 -struct fold_impl< 0,First,Last,State,ForwardOp >
 1031.35 -{
 1031.36 -    typedef First iter0;
 1031.37 -    typedef State state0;
 1031.38 -    typedef state0 state;
 1031.39 -    typedef iter0 iterator;
 1031.40 -};
 1031.41 -
 1031.42 -template<
 1031.43 -      typename First
 1031.44 -    , typename Last
 1031.45 -    , typename State
 1031.46 -    , typename ForwardOp
 1031.47 -    >
 1031.48 -struct fold_impl< 1,First,Last,State,ForwardOp >
 1031.49 -{
 1031.50 -    typedef First iter0;
 1031.51 -    typedef State state0;
 1031.52 -    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
 1031.53 -    typedef typename mpl::next<iter0>::type iter1;
 1031.54 -    
 1031.55 -
 1031.56 -    typedef state1 state;
 1031.57 -    typedef iter1 iterator;
 1031.58 -};
 1031.59 -
 1031.60 -template<
 1031.61 -      typename First
 1031.62 -    , typename Last
 1031.63 -    , typename State
 1031.64 -    , typename ForwardOp
 1031.65 -    >
 1031.66 -struct fold_impl< 2,First,Last,State,ForwardOp >
 1031.67 -{
 1031.68 -    typedef First iter0;
 1031.69 -    typedef State state0;
 1031.70 -    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
 1031.71 -    typedef typename mpl::next<iter0>::type iter1;
 1031.72 -    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
 1031.73 -    typedef typename mpl::next<iter1>::type iter2;
 1031.74 -    
 1031.75 -
 1031.76 -    typedef state2 state;
 1031.77 -    typedef iter2 iterator;
 1031.78 -};
 1031.79 -
 1031.80 -template<
 1031.81 -      typename First
 1031.82 -    , typename Last
 1031.83 -    , typename State
 1031.84 -    , typename ForwardOp
 1031.85 -    >
 1031.86 -struct fold_impl< 3,First,Last,State,ForwardOp >
 1031.87 -{
 1031.88 -    typedef First iter0;
 1031.89 -    typedef State state0;
 1031.90 -    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
 1031.91 -    typedef typename mpl::next<iter0>::type iter1;
 1031.92 -    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
 1031.93 -    typedef typename mpl::next<iter1>::type iter2;
 1031.94 -    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
 1031.95 -    typedef typename mpl::next<iter2>::type iter3;
 1031.96 -    
 1031.97 -
 1031.98 -    typedef state3 state;
 1031.99 -    typedef iter3 iterator;
1031.100 -};
1031.101 -
1031.102 -template<
1031.103 -      typename First
1031.104 -    , typename Last
1031.105 -    , typename State
1031.106 -    , typename ForwardOp
1031.107 -    >
1031.108 -struct fold_impl< 4,First,Last,State,ForwardOp >
1031.109 -{
1031.110 -    typedef First iter0;
1031.111 -    typedef State state0;
1031.112 -    typedef typename apply2< ForwardOp, state0, typename deref<iter0>::type >::type state1;
1031.113 -    typedef typename mpl::next<iter0>::type iter1;
1031.114 -    typedef typename apply2< ForwardOp, state1, typename deref<iter1>::type >::type state2;
1031.115 -    typedef typename mpl::next<iter1>::type iter2;
1031.116 -    typedef typename apply2< ForwardOp, state2, typename deref<iter2>::type >::type state3;
1031.117 -    typedef typename mpl::next<iter2>::type iter3;
1031.118 -    typedef typename apply2< ForwardOp, state3, typename deref<iter3>::type >::type state4;
1031.119 -    typedef typename mpl::next<iter3>::type iter4;
1031.120 -    
1031.121 -
1031.122 -    typedef state4 state;
1031.123 -    typedef iter4 iterator;
1031.124 -};
1031.125 -
1031.126 -template<
1031.127 -      int N
1031.128 -    , typename First
1031.129 -    , typename Last
1031.130 -    , typename State
1031.131 -    , typename ForwardOp
1031.132 -    >
1031.133 -struct fold_impl
1031.134 -{
1031.135 -    typedef fold_impl<
1031.136 -          4
1031.137 -        , First
1031.138 -        , Last
1031.139 -        , State
1031.140 -        , ForwardOp
1031.141 -        > chunk_;
1031.142 -
1031.143 -    typedef fold_impl<
1031.144 -          ( (N - 4) < 0 ? 0 : N - 4 )
1031.145 -        , typename chunk_::iterator
1031.146 -        , Last
1031.147 -        , typename chunk_::state
1031.148 -        , ForwardOp
1031.149 -        > res_;
1031.150 -
1031.151 -    typedef typename res_::state state;
1031.152 -    typedef typename res_::iterator iterator;
1031.153 -};
1031.154 -
1031.155 -template<
1031.156 -      typename First
1031.157 -    , typename Last
1031.158 -    , typename State
1031.159 -    , typename ForwardOp
1031.160 -    >
1031.161 -struct fold_impl< -1,First,Last,State,ForwardOp >
1031.162 -    : fold_impl<
1031.163 -          -1
1031.164 -        , typename mpl::next<First>::type
1031.165 -        , Last
1031.166 -        , typename apply2<ForwardOp,State, typename deref<First>::type>::type
1031.167 -        , ForwardOp
1031.168 -        >
1031.169 -{
1031.170 -};
1031.171 -
1031.172 -template<
1031.173 -      typename Last
1031.174 -    , typename State
1031.175 -    , typename ForwardOp
1031.176 -    >
1031.177 -struct fold_impl< -1,Last,Last,State,ForwardOp >
1031.178 -{
1031.179 -    typedef State state;
1031.180 -    typedef Last iterator;
1031.181 -};
1031.182 -
1031.183 -}}}
  1032.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp	Tue Mar 16 16:12:26 2010 +0000
  1032.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1032.3 @@ -1,554 +0,0 @@
  1032.4 -
  1032.5 -// Copyright Aleksey Gurtovoy 2001-2004
  1032.6 -//
  1032.7 -// Distributed under the Boost Software License, Version 1.0. 
  1032.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1032.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1032.10 -//
 1032.11 -
 1032.12 -// Preprocessed version of "boost/mpl/aux_/full_lambda.hpp" header
 1032.13 -// -- DO NOT modify by hand!
 1032.14 -
 1032.15 -namespace boost { namespace mpl {
 1032.16 -
 1032.17 -namespace aux {
 1032.18 -
 1032.19 -template<
 1032.20 -      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
 1032.21 -    , bool C5 = false
 1032.22 -    >
 1032.23 -struct lambda_or
 1032.24 -    : true_
 1032.25 -{
 1032.26 -};
 1032.27 -
 1032.28 -template<>
 1032.29 -struct lambda_or< false,false,false,false,false >
 1032.30 -    : false_
 1032.31 -{
 1032.32 -};
 1032.33 -
 1032.34 -} // namespace aux
 1032.35 -
 1032.36 -template<
 1032.37 -      typename T
 1032.38 -    , typename Tag
 1032.39 -   
 1032.40 -    >
 1032.41 -struct lambda
 1032.42 -{
 1032.43 -    typedef false_ is_le;
 1032.44 -    typedef T result_;
 1032.45 -    typedef T type;
 1032.46 -};
 1032.47 -
 1032.48 -template<
 1032.49 -      typename T
 1032.50 -    >
 1032.51 -struct is_lambda_expression
 1032.52 -    : lambda<T>::is_le
 1032.53 -{
 1032.54 -};
 1032.55 -
 1032.56 -template< int N, typename Tag >
 1032.57 -struct lambda< arg<N>, Tag >
 1032.58 -{
 1032.59 -    typedef true_ is_le;
 1032.60 -    typedef mpl::arg<N> result_; // qualified for the sake of MIPSpro 7.41
 1032.61 -    typedef mpl::protect<result_> type;
 1032.62 -};
 1032.63 -
 1032.64 -template<
 1032.65 -      typename F
 1032.66 -    , typename Tag
 1032.67 -    >
 1032.68 -struct lambda<
 1032.69 -          bind0<F>
 1032.70 -        , Tag
 1032.71 -       
 1032.72 -        >
 1032.73 -{
 1032.74 -    typedef false_ is_le;
 1032.75 -    typedef bind0<
 1032.76 -          F
 1032.77 -        > result_;
 1032.78 -
 1032.79 -    typedef result_ type;
 1032.80 -};
 1032.81 -
 1032.82 -namespace aux {
 1032.83 -
 1032.84 -template<
 1032.85 -      typename IsLE, typename Tag
 1032.86 -    , template< typename P1 > class F
 1032.87 -    , typename L1
 1032.88 -    >
 1032.89 -struct le_result1
 1032.90 -{
 1032.91 -    typedef F<
 1032.92 -          typename L1::type
 1032.93 -        > result_;
 1032.94 -
 1032.95 -    typedef result_ type;
 1032.96 -};
 1032.97 -
 1032.98 -template<
 1032.99 -      typename Tag
1032.100 -    , template< typename P1 > class F
1032.101 -    , typename L1
1032.102 -    >
1032.103 -struct le_result1< true_,Tag,F,L1 >
1032.104 -{
1032.105 -    typedef bind1<
1032.106 -          quote1< F,Tag >
1032.107 -        , typename L1::result_
1032.108 -        > result_;
1032.109 -
1032.110 -    typedef mpl::protect<result_> type;
1032.111 -};
1032.112 -
1032.113 -} // namespace aux
1032.114 -
1032.115 -template<
1032.116 -      template< typename P1 > class F
1032.117 -    , typename T1
1032.118 -    , typename Tag
1032.119 -    >
1032.120 -struct lambda<
1032.121 -          F<T1>
1032.122 -        , Tag
1032.123 -       
1032.124 -        >
1032.125 -{
1032.126 -    typedef lambda< T1,Tag > l1;
1032.127 -    typedef typename l1::is_le is_le1;
1032.128 -    typedef typename aux::lambda_or<
1032.129 -          is_le1::value
1032.130 -        >::type is_le;
1032.131 -
1032.132 -    typedef aux::le_result1<
1032.133 -          is_le, Tag, F, l1
1032.134 -        > le_result_;
1032.135 -
1032.136 -    typedef typename le_result_::result_ result_;
1032.137 -    typedef typename le_result_::type type;
1032.138 -};
1032.139 -
1032.140 -template<
1032.141 -      typename F, typename T1
1032.142 -    , typename Tag
1032.143 -    >
1032.144 -struct lambda<
1032.145 -          bind1< F,T1 >
1032.146 -        , Tag
1032.147 -       
1032.148 -        >
1032.149 -{
1032.150 -    typedef false_ is_le;
1032.151 -    typedef bind1<
1032.152 -          F
1032.153 -        , T1
1032.154 -        > result_;
1032.155 -
1032.156 -    typedef result_ type;
1032.157 -};
1032.158 -
1032.159 -namespace aux {
1032.160 -
1032.161 -template<
1032.162 -      typename IsLE, typename Tag
1032.163 -    , template< typename P1, typename P2 > class F
1032.164 -    , typename L1, typename L2
1032.165 -    >
1032.166 -struct le_result2
1032.167 -{
1032.168 -    typedef F<
1032.169 -          typename L1::type, typename L2::type
1032.170 -        > result_;
1032.171 -
1032.172 -    typedef result_ type;
1032.173 -};
1032.174 -
1032.175 -template<
1032.176 -      typename Tag
1032.177 -    , template< typename P1, typename P2 > class F
1032.178 -    , typename L1, typename L2
1032.179 -    >
1032.180 -struct le_result2< true_,Tag,F,L1,L2 >
1032.181 -{
1032.182 -    typedef bind2<
1032.183 -          quote2< F,Tag >
1032.184 -        , typename L1::result_, typename L2::result_
1032.185 -        > result_;
1032.186 -
1032.187 -    typedef mpl::protect<result_> type;
1032.188 -};
1032.189 -
1032.190 -} // namespace aux
1032.191 -
1032.192 -template<
1032.193 -      template< typename P1, typename P2 > class F
1032.194 -    , typename T1, typename T2
1032.195 -    , typename Tag
1032.196 -    >
1032.197 -struct lambda<
1032.198 -          F< T1,T2 >
1032.199 -        , Tag
1032.200 -       
1032.201 -        >
1032.202 -{
1032.203 -    typedef lambda< T1,Tag > l1;
1032.204 -    typedef lambda< T2,Tag > l2;
1032.205 -    
1032.206 -    typedef typename l1::is_le is_le1;
1032.207 -    typedef typename l2::is_le is_le2;
1032.208 -    
1032.209 -
1032.210 -    typedef typename aux::lambda_or<
1032.211 -          is_le1::value, is_le2::value
1032.212 -        >::type is_le;
1032.213 -
1032.214 -    typedef aux::le_result2<
1032.215 -          is_le, Tag, F, l1, l2
1032.216 -        > le_result_;
1032.217 -
1032.218 -    typedef typename le_result_::result_ result_;
1032.219 -    typedef typename le_result_::type type;
1032.220 -};
1032.221 -
1032.222 -template<
1032.223 -      typename F, typename T1, typename T2
1032.224 -    , typename Tag
1032.225 -    >
1032.226 -struct lambda<
1032.227 -          bind2< F,T1,T2 >
1032.228 -        , Tag
1032.229 -       
1032.230 -        >
1032.231 -{
1032.232 -    typedef false_ is_le;
1032.233 -    typedef bind2<
1032.234 -          F
1032.235 -        , T1, T2
1032.236 -        > result_;
1032.237 -
1032.238 -    typedef result_ type;
1032.239 -};
1032.240 -
1032.241 -namespace aux {
1032.242 -
1032.243 -template<
1032.244 -      typename IsLE, typename Tag
1032.245 -    , template< typename P1, typename P2, typename P3 > class F
1032.246 -    , typename L1, typename L2, typename L3
1032.247 -    >
1032.248 -struct le_result3
1032.249 -{
1032.250 -    typedef F<
1032.251 -          typename L1::type, typename L2::type, typename L3::type
1032.252 -        > result_;
1032.253 -
1032.254 -    typedef result_ type;
1032.255 -};
1032.256 -
1032.257 -template<
1032.258 -      typename Tag
1032.259 -    , template< typename P1, typename P2, typename P3 > class F
1032.260 -    , typename L1, typename L2, typename L3
1032.261 -    >
1032.262 -struct le_result3< true_,Tag,F,L1,L2,L3 >
1032.263 -{
1032.264 -    typedef bind3<
1032.265 -          quote3< F,Tag >
1032.266 -        , typename L1::result_, typename L2::result_, typename L3::result_
1032.267 -        > result_;
1032.268 -
1032.269 -    typedef mpl::protect<result_> type;
1032.270 -};
1032.271 -
1032.272 -} // namespace aux
1032.273 -
1032.274 -template<
1032.275 -      template< typename P1, typename P2, typename P3 > class F
1032.276 -    , typename T1, typename T2, typename T3
1032.277 -    , typename Tag
1032.278 -    >
1032.279 -struct lambda<
1032.280 -          F< T1,T2,T3 >
1032.281 -        , Tag
1032.282 -       
1032.283 -        >
1032.284 -{
1032.285 -    typedef lambda< T1,Tag > l1;
1032.286 -    typedef lambda< T2,Tag > l2;
1032.287 -    typedef lambda< T3,Tag > l3;
1032.288 -    
1032.289 -    typedef typename l1::is_le is_le1;
1032.290 -    typedef typename l2::is_le is_le2;
1032.291 -    typedef typename l3::is_le is_le3;
1032.292 -    
1032.293 -
1032.294 -    typedef typename aux::lambda_or<
1032.295 -          is_le1::value, is_le2::value, is_le3::value
1032.296 -        >::type is_le;
1032.297 -
1032.298 -    typedef aux::le_result3<
1032.299 -          is_le, Tag, F, l1, l2, l3
1032.300 -        > le_result_;
1032.301 -
1032.302 -    typedef typename le_result_::result_ result_;
1032.303 -    typedef typename le_result_::type type;
1032.304 -};
1032.305 -
1032.306 -template<
1032.307 -      typename F, typename T1, typename T2, typename T3
1032.308 -    , typename Tag
1032.309 -    >
1032.310 -struct lambda<
1032.311 -          bind3< F,T1,T2,T3 >
1032.312 -        , Tag
1032.313 -       
1032.314 -        >
1032.315 -{
1032.316 -    typedef false_ is_le;
1032.317 -    typedef bind3<
1032.318 -          F
1032.319 -        , T1, T2, T3
1032.320 -        > result_;
1032.321 -
1032.322 -    typedef result_ type;
1032.323 -};
1032.324 -
1032.325 -namespace aux {
1032.326 -
1032.327 -template<
1032.328 -      typename IsLE, typename Tag
1032.329 -    , template< typename P1, typename P2, typename P3, typename P4 > class F
1032.330 -    , typename L1, typename L2, typename L3, typename L4
1032.331 -    >
1032.332 -struct le_result4
1032.333 -{
1032.334 -    typedef F<
1032.335 -          typename L1::type, typename L2::type, typename L3::type
1032.336 -        , typename L4::type
1032.337 -        > result_;
1032.338 -
1032.339 -    typedef result_ type;
1032.340 -};
1032.341 -
1032.342 -template<
1032.343 -      typename Tag
1032.344 -    , template< typename P1, typename P2, typename P3, typename P4 > class F
1032.345 -    , typename L1, typename L2, typename L3, typename L4
1032.346 -    >
1032.347 -struct le_result4< true_,Tag,F,L1,L2,L3,L4 >
1032.348 -{
1032.349 -    typedef bind4<
1032.350 -          quote4< F,Tag >
1032.351 -        , typename L1::result_, typename L2::result_, typename L3::result_
1032.352 -        , typename L4::result_
1032.353 -        > result_;
1032.354 -
1032.355 -    typedef mpl::protect<result_> type;
1032.356 -};
1032.357 -
1032.358 -} // namespace aux
1032.359 -
1032.360 -template<
1032.361 -      template< typename P1, typename P2, typename P3, typename P4 > class F
1032.362 -    , typename T1, typename T2, typename T3, typename T4
1032.363 -    , typename Tag
1032.364 -    >
1032.365 -struct lambda<
1032.366 -          F< T1,T2,T3,T4 >
1032.367 -        , Tag
1032.368 -       
1032.369 -        >
1032.370 -{
1032.371 -    typedef lambda< T1,Tag > l1;
1032.372 -    typedef lambda< T2,Tag > l2;
1032.373 -    typedef lambda< T3,Tag > l3;
1032.374 -    typedef lambda< T4,Tag > l4;
1032.375 -    
1032.376 -    typedef typename l1::is_le is_le1;
1032.377 -    typedef typename l2::is_le is_le2;
1032.378 -    typedef typename l3::is_le is_le3;
1032.379 -    typedef typename l4::is_le is_le4;
1032.380 -    
1032.381 -
1032.382 -    typedef typename aux::lambda_or<
1032.383 -          is_le1::value, is_le2::value, is_le3::value, is_le4::value
1032.384 -        >::type is_le;
1032.385 -
1032.386 -    typedef aux::le_result4<
1032.387 -          is_le, Tag, F, l1, l2, l3, l4
1032.388 -        > le_result_;
1032.389 -
1032.390 -    typedef typename le_result_::result_ result_;
1032.391 -    typedef typename le_result_::type type;
1032.392 -};
1032.393 -
1032.394 -template<
1032.395 -      typename F, typename T1, typename T2, typename T3, typename T4
1032.396 -    , typename Tag
1032.397 -    >
1032.398 -struct lambda<
1032.399 -          bind4< F,T1,T2,T3,T4 >
1032.400 -        , Tag
1032.401 -       
1032.402 -        >
1032.403 -{
1032.404 -    typedef false_ is_le;
1032.405 -    typedef bind4<
1032.406 -          F
1032.407 -        , T1, T2, T3, T4
1032.408 -        > result_;
1032.409 -
1032.410 -    typedef result_ type;
1032.411 -};
1032.412 -
1032.413 -namespace aux {
1032.414 -
1032.415 -template<
1032.416 -      typename IsLE, typename Tag
1032.417 -    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
1032.418 -    , typename L1, typename L2, typename L3, typename L4, typename L5
1032.419 -    >
1032.420 -struct le_result5
1032.421 -{
1032.422 -    typedef F<
1032.423 -          typename L1::type, typename L2::type, typename L3::type
1032.424 -        , typename L4::type, typename L5::type
1032.425 -        > result_;
1032.426 -
1032.427 -    typedef result_ type;
1032.428 -};
1032.429 -
1032.430 -template<
1032.431 -      typename Tag
1032.432 -    , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F
1032.433 -    , typename L1, typename L2, typename L3, typename L4, typename L5
1032.434 -    >
1032.435 -struct le_result5< true_,Tag,F,L1,L2,L3,L4,L5 >
1032.436 -{
1032.437 -    typedef bind5<
1032.438 -          quote5< F,Tag >
1032.439 -        , typename L1::result_, typename L2::result_, typename L3::result_
1032.440 -        , typename L4::result_, typename L5::result_
1032.441 -        > result_;
1032.442 -
1032.443 -    typedef mpl::protect<result_> type;
1032.444 -};
1032.445 -
1032.446 -} // namespace aux
1032.447 -
1032.448 -template<
1032.449 -      template<
1032.450 -          typename P1, typename P2, typename P3, typename P4
1032.451 -        , typename P5
1032.452 -        >
1032.453 -      class F
1032.454 -    , typename T1, typename T2, typename T3, typename T4, typename T5
1032.455 -    , typename Tag
1032.456 -    >
1032.457 -struct lambda<
1032.458 -          F< T1,T2,T3,T4,T5 >
1032.459 -        , Tag
1032.460 -       
1032.461 -        >
1032.462 -{
1032.463 -    typedef lambda< T1,Tag > l1;
1032.464 -    typedef lambda< T2,Tag > l2;
1032.465 -    typedef lambda< T3,Tag > l3;
1032.466 -    typedef lambda< T4,Tag > l4;
1032.467 -    typedef lambda< T5,Tag > l5;
1032.468 -    
1032.469 -    typedef typename l1::is_le is_le1;
1032.470 -    typedef typename l2::is_le is_le2;
1032.471 -    typedef typename l3::is_le is_le3;
1032.472 -    typedef typename l4::is_le is_le4;
1032.473 -    typedef typename l5::is_le is_le5;
1032.474 -    
1032.475 -
1032.476 -    typedef typename aux::lambda_or<
1032.477 -          is_le1::value, is_le2::value, is_le3::value, is_le4::value
1032.478 -        , is_le5::value
1032.479 -        >::type is_le;
1032.480 -
1032.481 -    typedef aux::le_result5<
1032.482 -          is_le, Tag, F, l1, l2, l3, l4, l5
1032.483 -        > le_result_;
1032.484 -
1032.485 -    typedef typename le_result_::result_ result_;
1032.486 -    typedef typename le_result_::type type;
1032.487 -};
1032.488 -
1032.489 -template<
1032.490 -      typename F, typename T1, typename T2, typename T3, typename T4
1032.491 -    , typename T5
1032.492 -    , typename Tag
1032.493 -    >
1032.494 -struct lambda<
1032.495 -          bind5< F,T1,T2,T3,T4,T5 >
1032.496 -        , Tag
1032.497 -       
1032.498 -        >
1032.499 -{
1032.500 -    typedef false_ is_le;
1032.501 -    typedef bind5<
1032.502 -          F
1032.503 -        , T1, T2, T3, T4, T5
1032.504 -        > result_;
1032.505 -
1032.506 -    typedef result_ type;
1032.507 -};
1032.508 -
1032.509 -/// special case for 'protect'
1032.510 -template< typename T, typename Tag >
1032.511 -struct lambda< mpl::protect<T>, Tag >
1032.512 -{
1032.513 -    typedef false_ is_le;
1032.514 -    typedef mpl::protect<T> result_;
1032.515 -    typedef result_ type;
1032.516 -};
1032.517 -
1032.518 -/// specializations for the main 'bind' form
1032.519 -
1032.520 -template<
1032.521 -      typename F, typename T1, typename T2, typename T3, typename T4
1032.522 -    , typename T5
1032.523 -    , typename Tag
1032.524 -    >
1032.525 -struct lambda<
1032.526 -          bind< F,T1,T2,T3,T4,T5 >
1032.527 -        , Tag
1032.528 -       
1032.529 -        >
1032.530 -{
1032.531 -    typedef false_ is_le;
1032.532 -    typedef bind< F,T1,T2,T3,T4,T5 > result_;
1032.533 -    typedef result_ type;
1032.534 -};
1032.535 -
1032.536 -/// workaround for MWCW 8.3+/EDG < 303, leads to ambiguity on Digital Mars
1032.537 -
1032.538 -template<
1032.539 -      typename F, typename Tag1, typename Tag2
1032.540 -    >
1032.541 -struct lambda<
1032.542 -          lambda< F,Tag1 >
1032.543 -        , Tag2
1032.544 -        >
1032.545 -{
1032.546 -    typedef lambda< F,Tag2 > l1;
1032.547 -    typedef lambda< Tag1,Tag2 > l2;
1032.548 -    typedef typename l1::is_le is_le;
1032.549 -    typedef aux::le_result2<is_le, Tag2, mpl::lambda, l1, l2> le_result_;
1032.550 -    typedef typename le_result_::result_ result_;
1032.551 -    typedef typename le_result_::type type;
1032.552 -};
1032.553 -
1032.554 -BOOST_MPL_AUX_NA_SPEC(2, lambda)
1032.555 -
1032.556 -}}
1032.557 -
  1033.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1033.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/greater.hpp	Wed Mar 31 12:27:01 2010 +0100
  1033.3 @@ -0,0 +1,38 @@
  1033.4 +# /* Copyright (C) 2001
  1033.5 +#  * Housemarque Oy
  1033.6 +#  * http://www.housemarque.com
  1033.7 +#  *
  1033.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1033.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1033.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1033.11 +#  */
 1033.12 +#
 1033.13 +# /* Revised by Paul Mensonides (2002) */
 1033.14 +#
 1033.15 +# /* See http://www.boost.org for most recent version. */
 1033.16 +#
 1033.17 +# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
 1033.18 +# define BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
 1033.19 +#
 1033.20 +# include <boost/preprocessor/comparison/less.hpp>
 1033.21 +# include <boost/preprocessor/config/config.hpp>
 1033.22 +#
 1033.23 +# /* BOOST_PP_GREATER */
 1033.24 +#
 1033.25 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1033.26 +#    define BOOST_PP_GREATER(x, y) BOOST_PP_LESS(y, x)
 1033.27 +# else
 1033.28 +#    define BOOST_PP_GREATER(x, y) BOOST_PP_GREATER_I(x, y)
 1033.29 +#    define BOOST_PP_GREATER_I(x, y) BOOST_PP_LESS(y, x)
 1033.30 +# endif
 1033.31 +#
 1033.32 +# /* BOOST_PP_GREATER_D */
 1033.33 +#
 1033.34 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1033.35 +#    define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_LESS_D(d, y, x)
 1033.36 +# else
 1033.37 +#    define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_GREATER_D_I(d, x, y)
 1033.38 +#    define BOOST_PP_GREATER_D_I(d, x, y) BOOST_PP_LESS_D(d, y, x)
 1033.39 +# endif
 1033.40 +#
 1033.41 +# endif
  1034.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1034.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp	Wed Mar 31 12:27:01 2010 +0100
  1034.3 @@ -0,0 +1,38 @@
  1034.4 +# /* Copyright (C) 2001
  1034.5 +#  * Housemarque Oy
  1034.6 +#  * http://www.housemarque.com
  1034.7 +#  *
  1034.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1034.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1034.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1034.11 +#  */
 1034.12 +#
 1034.13 +# /* Revised by Paul Mensonides (2002) */
 1034.14 +#
 1034.15 +# /* See http://www.boost.org for most recent version. */
 1034.16 +#
 1034.17 +# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
 1034.18 +# define BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
 1034.19 +#
 1034.20 +# include <boost/preprocessor/comparison/less_equal.hpp>
 1034.21 +# include <boost/preprocessor/config/config.hpp>
 1034.22 +#
 1034.23 +# /* BOOST_PP_GREATER_EQUAL */
 1034.24 +#
 1034.25 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1034.26 +#    define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_LESS_EQUAL(y, x)
 1034.27 +# else
 1034.28 +#    define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_GREATER_EQUAL_I(x, y)
 1034.29 +#    define BOOST_PP_GREATER_EQUAL_I(x, y) BOOST_PP_LESS_EQUAL(y, x)
 1034.30 +# endif
 1034.31 +#
 1034.32 +# /* BOOST_PP_GREATER_EQUAL_D */
 1034.33 +#
 1034.34 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1034.35 +#    define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
 1034.36 +# else
 1034.37 +#    define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_GREATER_EQUAL_D_I(d, x, y)
 1034.38 +#    define BOOST_PP_GREATER_EQUAL_D_I(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
 1034.39 +# endif
 1034.40 +#
 1034.41 +# endif
  1035.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1035.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1035.3 @@ -1,133 +0,0 @@
  1035.4 -
  1035.5 -// Copyright Aleksey Gurtovoy 2001-2004
  1035.6 -// Copyright David Abrahams 2001-2002
  1035.7 -//
  1035.8 -// Distributed under the Boost Software License, Version 1.0. 
  1035.9 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1035.10 -// http://www.boost.org/LICENSE_1_0.txt)
 1035.11 -//
 1035.12 -
 1035.13 -// Preprocessed version of "boost/mpl/aux_/iter_fold_if_impl.hpp" header
 1035.14 -// -- DO NOT modify by hand!
 1035.15 -
 1035.16 -namespace boost { namespace mpl { namespace aux {
 1035.17 -
 1035.18 -template< typename Iterator, typename State >
 1035.19 -struct iter_fold_if_null_step
 1035.20 -{
 1035.21 -    typedef State state;
 1035.22 -    typedef Iterator iterator;
 1035.23 -};
 1035.24 -
 1035.25 -template< bool >
 1035.26 -struct iter_fold_if_step_impl
 1035.27 -{
 1035.28 -    template<
 1035.29 -          typename Iterator
 1035.30 -        , typename State
 1035.31 -        , typename StateOp
 1035.32 -        , typename IteratorOp
 1035.33 -        >
 1035.34 -    struct result_
 1035.35 -    {
 1035.36 -        typedef typename apply2< StateOp,State,Iterator >::type state;
 1035.37 -        typedef typename IteratorOp::type iterator;
 1035.38 -    };
 1035.39 -};
 1035.40 -
 1035.41 -template<>
 1035.42 -struct iter_fold_if_step_impl<false>
 1035.43 -{
 1035.44 -    template<
 1035.45 -          typename Iterator
 1035.46 -        , typename State
 1035.47 -        , typename StateOp
 1035.48 -        , typename IteratorOp
 1035.49 -        >
 1035.50 -    struct result_
 1035.51 -    {
 1035.52 -        typedef State state;
 1035.53 -        typedef Iterator iterator;
 1035.54 -    };
 1035.55 -};
 1035.56 -
 1035.57 -template<
 1035.58 -      typename Iterator
 1035.59 -    , typename State
 1035.60 -    , typename ForwardOp
 1035.61 -    , typename Predicate
 1035.62 -    >
 1035.63 -struct iter_fold_if_forward_step
 1035.64 -{
 1035.65 -    typedef typename apply2< Predicate,State,Iterator >::type not_last;
 1035.66 -    typedef typename iter_fold_if_step_impl<
 1035.67 -          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
 1035.68 -        >::template result_< Iterator,State,ForwardOp, mpl::next<Iterator> > impl_;
 1035.69 -
 1035.70 -    typedef typename impl_::state state;
 1035.71 -    typedef typename impl_::iterator iterator;
 1035.72 -};
 1035.73 -
 1035.74 -template<
 1035.75 -      typename Iterator
 1035.76 -    , typename State
 1035.77 -    , typename BackwardOp
 1035.78 -    , typename Predicate
 1035.79 -    >
 1035.80 -struct iter_fold_if_backward_step
 1035.81 -{
 1035.82 -    typedef typename apply2< Predicate,State,Iterator >::type not_last;
 1035.83 -    typedef typename iter_fold_if_step_impl<
 1035.84 -          BOOST_MPL_AUX_MSVC_VALUE_WKND(not_last)::value
 1035.85 -        >::template result_< Iterator,State,BackwardOp, identity<Iterator> > impl_;
 1035.86 -
 1035.87 -    typedef typename impl_::state state;
 1035.88 -    typedef typename impl_::iterator iterator;
 1035.89 -};
 1035.90 -
 1035.91 -template<
 1035.92 -      typename Iterator
 1035.93 -    , typename State
 1035.94 -    , typename ForwardOp
 1035.95 -    , typename ForwardPredicate
 1035.96 -    , typename BackwardOp
 1035.97 -    , typename BackwardPredicate
 1035.98 -    >
 1035.99 -struct iter_fold_if_impl
1035.100 -{
1035.101 - private:
1035.102 -    typedef iter_fold_if_null_step< Iterator,State > forward_step0;
1035.103 -    typedef iter_fold_if_forward_step< typename forward_step0::iterator, typename forward_step0::state, ForwardOp, ForwardPredicate > forward_step1;
1035.104 -    typedef iter_fold_if_forward_step< typename forward_step1::iterator, typename forward_step1::state, ForwardOp, ForwardPredicate > forward_step2;
1035.105 -    typedef iter_fold_if_forward_step< typename forward_step2::iterator, typename forward_step2::state, ForwardOp, ForwardPredicate > forward_step3;
1035.106 -    typedef iter_fold_if_forward_step< typename forward_step3::iterator, typename forward_step3::state, ForwardOp, ForwardPredicate > forward_step4;
1035.107 -    
1035.108 -
1035.109 -    typedef typename if_<
1035.110 -          typename forward_step4::not_last
1035.111 -        , iter_fold_if_impl<
1035.112 -              typename forward_step4::iterator
1035.113 -            , typename forward_step4::state
1035.114 -            , ForwardOp
1035.115 -            , ForwardPredicate
1035.116 -            , BackwardOp
1035.117 -            , BackwardPredicate
1035.118 -            >
1035.119 -        , iter_fold_if_null_step<
1035.120 -              typename forward_step4::iterator
1035.121 -            , typename forward_step4::state
1035.122 -            >
1035.123 -        >::type backward_step4;
1035.124 -
1035.125 -    typedef iter_fold_if_backward_step< typename forward_step3::iterator, typename backward_step4::state, BackwardOp, BackwardPredicate > backward_step3;
1035.126 -    typedef iter_fold_if_backward_step< typename forward_step2::iterator, typename backward_step3::state, BackwardOp, BackwardPredicate > backward_step2;
1035.127 -    typedef iter_fold_if_backward_step< typename forward_step1::iterator, typename backward_step2::state, BackwardOp, BackwardPredicate > backward_step1;
1035.128 -    typedef iter_fold_if_backward_step< typename forward_step0::iterator, typename backward_step1::state, BackwardOp, BackwardPredicate > backward_step0;
1035.129 -    
1035.130 -
1035.131 - public:
1035.132 -    typedef typename backward_step0::state state;
1035.133 -    typedef typename backward_step4::iterator iterator;
1035.134 -};
1035.135 -
1035.136 -}}}
  1036.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1036.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1036.3 @@ -1,180 +0,0 @@
  1036.4 -
  1036.5 -// Copyright Aleksey Gurtovoy 2000-2004
  1036.6 -//
  1036.7 -// Distributed under the Boost Software License, Version 1.0. 
  1036.8 -// (See accompanying file LICENSE_1_0.txt or copy at 
  1036.9 -// http://www.boost.org/LICENSE_1_0.txt)
 1036.10 -//
 1036.11 -
 1036.12 -// Preprocessed version of "boost/mpl/aux_/iter_fold_impl.hpp" header
 1036.13 -// -- DO NOT modify by hand!
 1036.14 -
 1036.15 -namespace boost { namespace mpl { namespace aux {
 1036.16 -
 1036.17 -/// forward declaration
 1036.18 -
 1036.19 -template<
 1036.20 -      int N
 1036.21 -    , typename First
 1036.22 -    , typename Last
 1036.23 -    , typename State
 1036.24 -    , typename ForwardOp
 1036.25 -    >
 1036.26 -struct iter_fold_impl;
 1036.27 -
 1036.28 -template<
 1036.29 -      typename First
 1036.30 -    , typename Last
 1036.31 -    , typename State
 1036.32 -    , typename ForwardOp
 1036.33 -    >
 1036.34 -struct iter_fold_impl< 0,First,Last,State,ForwardOp >
 1036.35 -{
 1036.36 -    typedef First iter0;
 1036.37 -    typedef State state0;
 1036.38 -    typedef state0 state;
 1036.39 -    typedef iter0 iterator;
 1036.40 -};
 1036.41 -
 1036.42 -template<
 1036.43 -      typename First
 1036.44 -    , typename Last
 1036.45 -    , typename State
 1036.46 -    , typename ForwardOp
 1036.47 -    >
 1036.48 -struct iter_fold_impl< 1,First,Last,State,ForwardOp >
 1036.49 -{
 1036.50 -    typedef First iter0;
 1036.51 -    typedef State state0;
 1036.52 -    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
 1036.53 -    typedef typename mpl::next<iter0>::type iter1;
 1036.54 -    
 1036.55 -
 1036.56 -    typedef state1 state;
 1036.57 -    typedef iter1 iterator;
 1036.58 -};
 1036.59 -
 1036.60 -template<
 1036.61 -      typename First
 1036.62 -    , typename Last
 1036.63 -    , typename State
 1036.64 -    , typename ForwardOp
 1036.65 -    >
 1036.66 -struct iter_fold_impl< 2,First,Last,State,ForwardOp >
 1036.67 -{
 1036.68 -    typedef First iter0;
 1036.69 -    typedef State state0;
 1036.70 -    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
 1036.71 -    typedef typename mpl::next<iter0>::type iter1;
 1036.72 -    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
 1036.73 -    typedef typename mpl::next<iter1>::type iter2;
 1036.74 -    
 1036.75 -
 1036.76 -    typedef state2 state;
 1036.77 -    typedef iter2 iterator;
 1036.78 -};
 1036.79 -
 1036.80 -template<
 1036.81 -      typename First
 1036.82 -    , typename Last
 1036.83 -    , typename State
 1036.84 -    , typename ForwardOp
 1036.85 -    >
 1036.86 -struct iter_fold_impl< 3,First,Last,State,ForwardOp >
 1036.87 -{
 1036.88 -    typedef First iter0;
 1036.89 -    typedef State state0;
 1036.90 -    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
 1036.91 -    typedef typename mpl::next<iter0>::type iter1;
 1036.92 -    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
 1036.93 -    typedef typename mpl::next<iter1>::type iter2;
 1036.94 -    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
 1036.95 -    typedef typename mpl::next<iter2>::type iter3;
 1036.96 -    
 1036.97 -
 1036.98 -    typedef state3 state;
 1036.99 -    typedef iter3 iterator;
1036.100 -};
1036.101 -
1036.102 -template<
1036.103 -      typename First
1036.104 -    , typename Last
1036.105 -    , typename State
1036.106 -    , typename ForwardOp
1036.107 -    >
1036.108 -struct iter_fold_impl< 4,First,Last,State,ForwardOp >
1036.109 -{
1036.110 -    typedef First iter0;
1036.111 -    typedef State state0;
1036.112 -    typedef typename apply2< ForwardOp,state0,iter0 >::type state1;
1036.113 -    typedef typename mpl::next<iter0>::type iter1;
1036.114 -    typedef typename apply2< ForwardOp,state1,iter1 >::type state2;
1036.115 -    typedef typename mpl::next<iter1>::type iter2;
1036.116 -    typedef typename apply2< ForwardOp,state2,iter2 >::type state3;
1036.117 -    typedef typename mpl::next<iter2>::type iter3;
1036.118 -    typedef typename apply2< ForwardOp,state3,iter3 >::type state4;
1036.119 -    typedef typename mpl::next<iter3>::type iter4;
1036.120 -    
1036.121 -
1036.122 -    typedef state4 state;
1036.123 -    typedef iter4 iterator;
1036.124 -};
1036.125 -
1036.126 -template<
1036.127 -      int N
1036.128 -    , typename First
1036.129 -    , typename Last
1036.130 -    , typename State
1036.131 -    , typename ForwardOp
1036.132 -    >
1036.133 -struct iter_fold_impl
1036.134 -{
1036.135 -    typedef iter_fold_impl<
1036.136 -          4
1036.137 -        , First
1036.138 -        , Last
1036.139 -        , State
1036.140 -        , ForwardOp
1036.141 -        > chunk_;
1036.142 -
1036.143 -    typedef iter_fold_impl<
1036.144 -          ( (N - 4) < 0 ? 0 : N - 4 )
1036.145 -        , typename chunk_::iterator
1036.146 -        , Last
1036.147 -        , typename chunk_::state
1036.148 -        , ForwardOp
1036.149 -        > res_;
1036.150 -
1036.151 -    typedef typename res_::state state;
1036.152 -    typedef typename res_::iterator iterator;
1036.153 -};
1036.154 -
1036.155 -template<
1036.156 -      typename First
1036.157 -    , typename Last
1036.158 -    , typename State
1036.159 -    , typename ForwardOp
1036.160 -    >
1036.161 -struct iter_fold_impl< -1,First,Last,State,ForwardOp >
1036.162 -    : iter_fold_impl<
1036.163 -          -1
1036.164 -        , typename mpl::next<First>::type
1036.165 -        , Last
1036.166 -        , typename apply2< ForwardOp,State,First >::type
1036.167 -        , ForwardOp
1036.168 -        >
1036.169 -{
1036.170 -};
1036.171 -
1036.172 -template<
1036.173 -      typename Last
1036.174 -    , typename State
1036.175 -    , typename ForwardOp
1036.176 -    >
1036.177 -struct iter_fold_impl< -1,Last,Last,State,ForwardOp >
1036.178 -{
1036.179 -    typedef State state;
1036.180 -    typedef Last iterator;
1036.181 -};
1036.182 -
1036.183 -}}}
  1037.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1037.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/less.hpp	Wed Mar 31 12:27:01 2010 +0100
  1037.3 @@ -0,0 +1,46 @@
  1037.4 +# /* Copyright (C) 2001
  1037.5 +#  * Housemarque Oy
  1037.6 +#  * http://www.housemarque.com
  1037.7 +#  *
  1037.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1037.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1037.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1037.11 +#  */
 1037.12 +#
 1037.13 +# /* Revised by Paul Mensonides (2002) */
 1037.14 +#
 1037.15 +# /* See http://www.boost.org for most recent version. */
 1037.16 +#
 1037.17 +# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
 1037.18 +# define BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
 1037.19 +#
 1037.20 +# include <boost/preprocessor/comparison/less_equal.hpp>
 1037.21 +# include <boost/preprocessor/comparison/not_equal.hpp>
 1037.22 +# include <boost/preprocessor/config/config.hpp>
 1037.23 +# include <boost/preprocessor/control/iif.hpp>
 1037.24 +# include <boost/preprocessor/logical/bitand.hpp>
 1037.25 +# include <boost/preprocessor/tuple/eat.hpp>
 1037.26 +#
 1037.27 +# /* BOOST_PP_LESS */
 1037.28 +#
 1037.29 +# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
 1037.30 +#    define BOOST_PP_LESS(x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL(x, y))
 1037.31 +# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1037.32 +#    define BOOST_PP_LESS(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
 1037.33 +# else
 1037.34 +#    define BOOST_PP_LESS(x, y) BOOST_PP_LESS_I(x, y)
 1037.35 +#    define BOOST_PP_LESS_I(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
 1037.36 +# endif
 1037.37 +#
 1037.38 +# /* BOOST_PP_LESS_D */
 1037.39 +#
 1037.40 +# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
 1037.41 +#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D(d, x, y))
 1037.42 +# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1037.43 +#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
 1037.44 +# else
 1037.45 +#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_LESS_D_I(d, x, y)
 1037.46 +#    define BOOST_PP_LESS_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
 1037.47 +# endif
 1037.48 +#
 1037.49 +# endif
  1038.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1038.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/list.hpp	Wed Mar 31 12:27:01 2010 +0100
  1038.3 @@ -0,0 +1,35 @@
  1038.4 +# /* Copyright (C) 2001
  1038.5 +#  * Housemarque Oy
  1038.6 +#  * http://www.housemarque.com
  1038.7 +#  *
  1038.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1038.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1038.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1038.11 +#  */
 1038.12 +#
 1038.13 +# /* Revised by Paul Mensonides (2002) */
 1038.14 +#
 1038.15 +# /* See http://www.boost.org for most recent version. */
 1038.16 +#
 1038.17 +# ifndef BOOST_PREPROCESSOR_LIST_HPP
 1038.18 +# define BOOST_PREPROCESSOR_LIST_HPP
 1038.19 +#
 1038.20 +# include <boost/preprocessor/list/adt.hpp>
 1038.21 +# include <boost/preprocessor/list/append.hpp>
 1038.22 +# include <boost/preprocessor/list/at.hpp>
 1038.23 +# include <boost/preprocessor/list/cat.hpp>
 1038.24 +# include <boost/preprocessor/list/enum.hpp>
 1038.25 +# include <boost/preprocessor/list/filter.hpp>
 1038.26 +# include <boost/preprocessor/list/first_n.hpp>
 1038.27 +# include <boost/preprocessor/list/fold_left.hpp>
 1038.28 +# include <boost/preprocessor/list/fold_right.hpp>
 1038.29 +# include <boost/preprocessor/list/for_each.hpp>
 1038.30 +# include <boost/preprocessor/list/for_each_i.hpp>
 1038.31 +# include <boost/preprocessor/list/for_each_product.hpp>
 1038.32 +# include <boost/preprocessor/list/rest_n.hpp>
 1038.33 +# include <boost/preprocessor/list/reverse.hpp>
 1038.34 +# include <boost/preprocessor/list/size.hpp>
 1038.35 +# include <boost/preprocessor/list/to_tuple.hpp>
 1038.36 +# include <boost/preprocessor/list/transform.hpp>
 1038.37 +#
 1038.38 +# endif
  1039.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1039.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/minus.hpp	Wed Mar 31 12:27:01 2010 +0100
  1039.3 @@ -0,0 +1,21 @@
  1039.4 +
  1039.5 +#ifndef BOOST_MPL_MINUS_HPP_INCLUDED
  1039.6 +#define BOOST_MPL_MINUS_HPP_INCLUDED
  1039.7 +
  1039.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1039.9 +//
 1039.10 +// Distributed under the Boost Software License, Version 1.0. 
 1039.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1039.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1039.13 +//
 1039.14 +// See http://www.boost.org/libs/mpl for documentation.
 1039.15 +
 1039.16 +// $Source: /cvsroot/boost/boost/boost/mpl/minus.hpp,v $
 1039.17 +// $Date: 2004/09/02 15:40:41 $
 1039.18 +// $Revision: 1.3 $
 1039.19 +
 1039.20 +#define AUX778076_OP_NAME minus
 1039.21 +#define AUX778076_OP_TOKEN -
 1039.22 +#include <boost/mpl/aux_/arithmetic_op.hpp>
 1039.23 +
 1039.24 +#endif // BOOST_MPL_MINUS_HPP_INCLUDED
  1040.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1040.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/or.hpp	Wed Mar 31 12:27:01 2010 +0100
  1040.3 @@ -0,0 +1,30 @@
  1040.4 +# /* Copyright (C) 2001
  1040.5 +#  * Housemarque Oy
  1040.6 +#  * http://www.housemarque.com
  1040.7 +#  *
  1040.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1040.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1040.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1040.11 +#  */
 1040.12 +#
 1040.13 +# /* Revised by Paul Mensonides (2002) */
 1040.14 +#
 1040.15 +# /* See http://www.boost.org for most recent version. */
 1040.16 +#
 1040.17 +# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
 1040.18 +# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
 1040.19 +#
 1040.20 +# include <boost/preprocessor/config/config.hpp>
 1040.21 +# include <boost/preprocessor/logical/bool.hpp>
 1040.22 +# include <boost/preprocessor/logical/bitor.hpp>
 1040.23 +#
 1040.24 +# /* BOOST_PP_OR */
 1040.25 +#
 1040.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1040.27 +#    define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1040.28 +# else
 1040.29 +#    define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
 1040.30 +#    define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1040.31 +# endif
 1040.32 +#
 1040.33 +# endif
  1041.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1041.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/plus.hpp	Wed Mar 31 12:27:01 2010 +0100
  1041.3 @@ -0,0 +1,21 @@
  1041.4 +
  1041.5 +#ifndef BOOST_MPL_PLUS_HPP_INCLUDED
  1041.6 +#define BOOST_MPL_PLUS_HPP_INCLUDED
  1041.7 +
  1041.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1041.9 +//
 1041.10 +// Distributed under the Boost Software License, Version 1.0. 
 1041.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1041.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1041.13 +//
 1041.14 +// See http://www.boost.org/libs/mpl for documentation.
 1041.15 +
 1041.16 +// $Source: /cvsroot/boost/boost/boost/mpl/plus.hpp,v $
 1041.17 +// $Date: 2004/09/02 15:40:42 $
 1041.18 +// $Revision: 1.4 $
 1041.19 +
 1041.20 +#define AUX778076_OP_NAME plus
 1041.21 +#define AUX778076_OP_TOKEN +
 1041.22 +#include <boost/mpl/aux_/arithmetic_op.hpp>
 1041.23 +
 1041.24 +#endif // BOOST_MPL_PLUS_HPP_INCLUDED
  1042.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1042.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/quote.hpp	Wed Mar 31 12:27:01 2010 +0100
  1042.3 @@ -0,0 +1,140 @@
  1042.4 +
  1042.5 +#if !defined(BOOST_PP_IS_ITERATING)
  1042.6 +
  1042.7 +///// header body
  1042.8 +
  1042.9 +#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
 1042.10 +#define BOOST_MPL_QUOTE_HPP_INCLUDED
 1042.11 +
 1042.12 +// Copyright Aleksey Gurtovoy 2000-2004
 1042.13 +//
 1042.14 +// Distributed under the Boost Software License, Version 1.0. 
 1042.15 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1042.16 +// http://www.boost.org/LICENSE_1_0.txt)
 1042.17 +//
 1042.18 +// See http://www.boost.org/libs/mpl for documentation.
 1042.19 +
 1042.20 +// $Source: /cvsroot/boost/boost/boost/mpl/quote.hpp,v $
 1042.21 +// $Date: 2006/05/03 03:27:58 $
 1042.22 +// $Revision: 1.5.14.2 $
 1042.23 +
 1042.24 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1042.25 +#   include <boost/mpl/void.hpp>
 1042.26 +#   include <boost/mpl/aux_/has_type.hpp>
 1042.27 +#endif
 1042.28 +
 1042.29 +#include <boost/mpl/aux_/config/ttp.hpp>
 1042.30 +
 1042.31 +#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
 1042.32 +#   define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
 1042.33 +#endif
 1042.34 +
 1042.35 +#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
 1042.36 +    && defined(BOOST_MPL_CFG_NO_HAS_XXX)
 1042.37 +#   define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
 1042.38 +#endif
 1042.39 +
 1042.40 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1042.41 +
 1042.42 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1042.43 + && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1042.44 +
 1042.45 +#   define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
 1042.46 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1042.47 +
 1042.48 +#else
 1042.49 +
 1042.50 +#   include <boost/mpl/limits/arity.hpp>
 1042.51 +#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1042.52 +#   include <boost/mpl/aux_/config/ctps.hpp>
 1042.53 +#   include <boost/mpl/aux_/config/workaround.hpp>
 1042.54 +
 1042.55 +#   include <boost/preprocessor/iterate.hpp>
 1042.56 +#   include <boost/preprocessor/cat.hpp>
 1042.57 +
 1042.58 +#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
 1042.59 +
 1042.60 +namespace boost { namespace mpl {
 1042.61 +
 1042.62 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1042.63 +
 1042.64 +template< typename T, bool has_type_ >
 1042.65 +struct quote_impl
 1042.66 +// GCC has a problem with metafunction forwarding when T is a
 1042.67 +// specialization of a template called 'type'.
 1042.68 +# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
 1042.69 +    && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
 1042.70 +    && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2))
 1042.71 +{
 1042.72 +    typedef typename T::type type;
 1042.73 +};
 1042.74 +# else 
 1042.75 +    : T
 1042.76 +{
 1042.77 +};
 1042.78 +# endif 
 1042.79 +
 1042.80 +template< typename T >
 1042.81 +struct quote_impl<T,false>
 1042.82 +{
 1042.83 +    typedef T type;
 1042.84 +};
 1042.85 +
 1042.86 +#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1042.87 +
 1042.88 +template< bool > struct quote_impl
 1042.89 +{
 1042.90 +    template< typename T > struct result_
 1042.91 +        : T
 1042.92 +    {
 1042.93 +    };
 1042.94 +};
 1042.95 +
 1042.96 +template<> struct quote_impl<false>
 1042.97 +{
 1042.98 +    template< typename T > struct result_
 1042.99 +    {
1042.100 +        typedef T type;
1042.101 +    };
1042.102 +};
1042.103 +
1042.104 +#endif 
1042.105 +
1042.106 +#define BOOST_PP_ITERATION_PARAMS_1 \
1042.107 +    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/quote.hpp>))
1042.108 +#include BOOST_PP_ITERATE()
1042.109 +
1042.110 +}}
1042.111 +
1042.112 +#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
1042.113 +
1042.114 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
1042.115 +#endif // BOOST_MPL_QUOTE_HPP_INCLUDED
1042.116 +
1042.117 +///// iteration
1042.118 +
1042.119 +#else
1042.120 +#define i_ BOOST_PP_FRAME_ITERATION(1)
1042.121 +
1042.122 +template<
1042.123 +      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
1042.124 +    , typename Tag = void_
1042.125 +    >
1042.126 +struct BOOST_PP_CAT(quote,i_)
1042.127 +{
1042.128 +    template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
1042.129 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1042.130 +        : quote_impl<
1042.131 +              F< BOOST_MPL_PP_PARAMS(i_, U) >
1042.132 +            , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
1042.133 +            >
1042.134 +#else
1042.135 +        : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value >
1042.136 +            ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > >
1042.137 +#endif
1042.138 +    {
1042.139 +    };
1042.140 +};
1042.141 +
1042.142 +#undef i_
1042.143 +#endif // BOOST_PP_IS_ITERATING
  1043.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1043.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1043.3 @@ -0,0 +1,44 @@
  1043.4 +
  1043.5 +#ifndef BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
  1043.6 +#define BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
  1043.7 +
  1043.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1043.9 +//
 1043.10 +// Distributed under the Boost Software License, Version 1.0. 
 1043.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1043.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1043.13 +//
 1043.14 +// See http://www.boost.org/libs/mpl for documentation.
 1043.15 +
 1043.16 +// $Source: /cvsroot/boost/boost/boost/mpl/aux_/reverse_fold_impl.hpp,v $
 1043.17 +// $Date: 2004/10/01 16:29:34 $
 1043.18 +// $Revision: 1.3 $
 1043.19 +
 1043.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1043.21 +#   include <boost/mpl/next_prior.hpp>
 1043.22 +#   include <boost/mpl/deref.hpp>
 1043.23 +#   include <boost/mpl/apply.hpp>
 1043.24 +#   include <boost/mpl/aux_/config/ctps.hpp>
 1043.25 +#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 1043.26 +    || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 1043.27 +#       include <boost/mpl/if.hpp>
 1043.28 +#       include <boost/type_traits/is_same.hpp>
 1043.29 +#   endif
 1043.30 +#endif
 1043.31 +
 1043.32 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1043.33 +
 1043.34 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1043.35 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1043.36 +
 1043.37 +#   define BOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp
 1043.38 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1043.39 +
 1043.40 +#else
 1043.41 +
 1043.42 +#   define AUX778076_FOLD_IMPL_OP(iter) typename deref<iter>::type
 1043.43 +#   define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold
 1043.44 +#   include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
 1043.45 +
 1043.46 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1043.47 +#endif // BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
  1044.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1044.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1044.3 @@ -0,0 +1,43 @@
  1044.4 +
  1044.5 +#ifndef BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
  1044.6 +#define BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
  1044.7 +
  1044.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1044.9 +//
 1044.10 +// Distributed under the Boost Software License, Version 1.0. 
 1044.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1044.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1044.13 +//
 1044.14 +// See http://www.boost.org/libs/mpl for documentation.
 1044.15 +
 1044.16 +// $Source: /cvsroot/boost/boost/boost/mpl/aux_/reverse_iter_fold_impl.hpp,v $
 1044.17 +// $Date: 2004/09/02 15:40:44 $
 1044.18 +// $Revision: 1.2 $
 1044.19 +
 1044.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1044.21 +#   include <boost/mpl/next_prior.hpp>
 1044.22 +#   include <boost/mpl/apply.hpp>
 1044.23 +#   include <boost/mpl/aux_/config/ctps.hpp>
 1044.24 +#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 1044.25 +    || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 1044.26 +#       include <boost/mpl/if.hpp>
 1044.27 +#       include <boost/type_traits/is_same.hpp>
 1044.28 +#   endif
 1044.29 +#endif
 1044.30 +
 1044.31 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1044.32 +
 1044.33 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1044.34 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1044.35 +
 1044.36 +#   define BOOST_MPL_PREPROCESSED_HEADER reverse_iter_fold_impl.hpp
 1044.37 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1044.38 +
 1044.39 +#else
 1044.40 +
 1044.41 +#   define AUX778076_FOLD_IMPL_OP(iter) iter
 1044.42 +#   define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_iter_fold
 1044.43 +#   include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
 1044.44 +
 1044.45 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1044.46 +#endif // BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
  1045.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1045.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/template_arity.hpp	Wed Mar 31 12:27:01 2010 +0100
  1045.3 @@ -0,0 +1,189 @@
  1045.4 +
  1045.5 +#if !defined(BOOST_PP_IS_ITERATING)
  1045.6 +
  1045.7 +///// header body
  1045.8 +
  1045.9 +#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
 1045.10 +#define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
 1045.11 +
 1045.12 +// Copyright Aleksey Gurtovoy 2001-2004
 1045.13 +//
 1045.14 +// Distributed under the Boost Software License, Version 1.0. 
 1045.15 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1045.16 +// http://www.boost.org/LICENSE_1_0.txt)
 1045.17 +//
 1045.18 +// See http://www.boost.org/libs/mpl for documentation.
 1045.19 +
 1045.20 +// $Source: /cvsroot/boost/boost/boost/mpl/aux_/template_arity.hpp,v $
 1045.21 +// $Date: 2004/09/07 12:24:48 $
 1045.22 +// $Revision: 1.11 $
 1045.23 +
 1045.24 +#include <boost/mpl/aux_/config/ttp.hpp>
 1045.25 +#include <boost/mpl/aux_/config/lambda.hpp>
 1045.26 +
 1045.27 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1045.28 +#   include <boost/mpl/aux_/template_arity_fwd.hpp>
 1045.29 +#   include <boost/mpl/int.hpp>
 1045.30 +#   if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 1045.31 +#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 1045.32 +#       include <boost/mpl/aux_/type_wrapper.hpp>
 1045.33 +#   endif
 1045.34 +#   else
 1045.35 +#       include <boost/mpl/aux_/has_rebind.hpp>
 1045.36 +#   endif
 1045.37 +#endif
 1045.38 +
 1045.39 +#include <boost/mpl/aux_/config/static_constant.hpp>
 1045.40 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1045.41 +
 1045.42 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1045.43 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1045.44 +
 1045.45 +#   define BOOST_MPL_PREPROCESSED_HEADER template_arity.hpp
 1045.46 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1045.47 +
 1045.48 +#else
 1045.49 +
 1045.50 +#   if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 1045.51 +#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 1045.52 +
 1045.53 +#   include <boost/mpl/limits/arity.hpp>
 1045.54 +#   include <boost/mpl/aux_/preprocessor/range.hpp>
 1045.55 +#   include <boost/mpl/aux_/preprocessor/repeat.hpp>
 1045.56 +#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1045.57 +#   include <boost/mpl/aux_/nttp_decl.hpp>
 1045.58 +
 1045.59 +#   include <boost/preprocessor/seq/fold_left.hpp>
 1045.60 +#   include <boost/preprocessor/comma_if.hpp>
 1045.61 +#   include <boost/preprocessor/iterate.hpp>
 1045.62 +#   include <boost/preprocessor/inc.hpp>
 1045.63 +#   include <boost/preprocessor/cat.hpp>
 1045.64 +
 1045.65 +#   define AUX778076_ARITY BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 1045.66 +
 1045.67 +namespace boost { namespace mpl { namespace aux {
 1045.68 +
 1045.69 +template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
 1045.70 +{
 1045.71 +    typedef char (&type)[N + 1];
 1045.72 +};
 1045.73 +
 1045.74 +#   define AUX778076_MAX_ARITY_OP(unused, state, i_) \
 1045.75 +    ( BOOST_PP_CAT(C,i_) > 0 ? BOOST_PP_CAT(C,i_) : state ) \
 1045.76 +/**/
 1045.77 +
 1045.78 +template<
 1045.79 +      BOOST_MPL_PP_PARAMS(AUX778076_ARITY, BOOST_MPL_AUX_NTTP_DECL(int, C))
 1045.80 +    >
 1045.81 +struct max_arity
 1045.82 +{
 1045.83 +    BOOST_STATIC_CONSTANT(int, value = 
 1045.84 +          BOOST_PP_SEQ_FOLD_LEFT(
 1045.85 +              AUX778076_MAX_ARITY_OP
 1045.86 +            , -1
 1045.87 +            , BOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
 1045.88 +            )
 1045.89 +        );
 1045.90 +};
 1045.91 +
 1045.92 +#   undef AUX778076_MAX_ARITY_OP
 1045.93 +
 1045.94 +arity_tag<0>::type arity_helper(...);
 1045.95 +
 1045.96 +#   define BOOST_PP_ITERATION_LIMITS (1, AUX778076_ARITY)
 1045.97 +#   define BOOST_PP_FILENAME_1 <boost/mpl/aux_/template_arity.hpp>
 1045.98 +#   include BOOST_PP_ITERATE()
 1045.99 +
1045.100 +template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
1045.101 +struct template_arity_impl
1045.102 +{
1045.103 +    BOOST_STATIC_CONSTANT(int, value = 
1045.104 +          sizeof(arity_helper(type_wrapper<F>(),arity_tag<N>())) - 1
1045.105 +        );
1045.106 +};
1045.107 +
1045.108 +#   define AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION(unused, i_, F) \
1045.109 +    BOOST_PP_COMMA_IF(i_) template_arity_impl<F,BOOST_PP_INC(i_)>::value \
1045.110 +/**/
1045.111 +
1045.112 +template< typename F >
1045.113 +struct template_arity
1045.114 +{
1045.115 +    BOOST_STATIC_CONSTANT(int, value = (
1045.116 +          max_arity< BOOST_MPL_PP_REPEAT(
1045.117 +              AUX778076_ARITY
1045.118 +            , AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
1045.119 +            , F
1045.120 +            ) >::value
1045.121 +        ));
1045.122 +        
1045.123 +    typedef mpl::int_<value> type;
1045.124 +};
1045.125 +
1045.126 +#   undef AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
1045.127 +
1045.128 +#   undef AUX778076_ARITY
1045.129 +
1045.130 +}}}
1045.131 +
1045.132 +#   endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
1045.133 +#   else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
1045.134 +
1045.135 +#   include <boost/mpl/aux_/config/eti.hpp>
1045.136 +
1045.137 +namespace boost { namespace mpl { namespace aux {
1045.138 +
1045.139 +template< bool >
1045.140 +struct template_arity_impl
1045.141 +{
1045.142 +    template< typename F > struct result_
1045.143 +        : mpl::int_<-1>
1045.144 +    {
1045.145 +    };
1045.146 +};
1045.147 +
1045.148 +template<>
1045.149 +struct template_arity_impl<true>
1045.150 +{
1045.151 +    template< typename F > struct result_
1045.152 +        : F::arity
1045.153 +    {
1045.154 +    };
1045.155 +};
1045.156 +
1045.157 +template< typename F >
1045.158 +struct template_arity
1045.159 +    : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
1045.160 +        ::template result_<F>
1045.161 +{
1045.162 +};
1045.163 +
1045.164 +#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
1045.165 +template<>
1045.166 +struct template_arity<int>
1045.167 +    : mpl::int_<-1>
1045.168 +{
1045.169 +};
1045.170 +#endif
1045.171 +
1045.172 +}}}
1045.173 +
1045.174 +#   endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
1045.175 +
1045.176 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
1045.177 +#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
1045.178 +
1045.179 +///// iteration
1045.180 +
1045.181 +#else
1045.182 +#define i_ BOOST_PP_FRAME_ITERATION(1)
1045.183 +
1045.184 +template<
1045.185 +      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
1045.186 +    , BOOST_MPL_PP_PARAMS(i_, typename T)
1045.187 +    >
1045.188 +typename arity_tag<i_>::type
1045.189 +arity_helper(type_wrapper< F<BOOST_MPL_PP_PARAMS(i_, T)> >, arity_tag<i_>);
1045.190 +
1045.191 +#undef i_
1045.192 +#endif // BOOST_PP_IS_ITERATING
  1046.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1046.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/times.hpp	Wed Mar 31 12:27:01 2010 +0100
  1046.3 @@ -0,0 +1,21 @@
  1046.4 +
  1046.5 +#ifndef BOOST_MPL_TIMES_HPP_INCLUDED
  1046.6 +#define BOOST_MPL_TIMES_HPP_INCLUDED
  1046.7 +
  1046.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1046.9 +//
 1046.10 +// Distributed under the Boost Software License, Version 1.0. 
 1046.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1046.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1046.13 +//
 1046.14 +// See http://www.boost.org/libs/mpl for documentation.
 1046.15 +
 1046.16 +// $Source: /cvsroot/boost/boost/boost/mpl/times.hpp,v $
 1046.17 +// $Date: 2004/09/02 15:40:42 $
 1046.18 +// $Revision: 1.2 $
 1046.19 +
 1046.20 +#define AUX778076_OP_NAME times
 1046.21 +#define AUX778076_OP_TOKEN *
 1046.22 +#include <boost/mpl/aux_/arithmetic_op.hpp>
 1046.23 +
 1046.24 +#endif // BOOST_MPL_TIMES_HPP_INCLUDED
  1047.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1047.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessed/plain/vector.hpp	Wed Mar 31 12:27:01 2010 +0100
  1047.3 @@ -0,0 +1,57 @@
  1047.4 +
  1047.5 +#ifndef BOOST_MPL_VECTOR_HPP_INCLUDED
  1047.6 +#define BOOST_MPL_VECTOR_HPP_INCLUDED
  1047.7 +
  1047.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1047.9 +//
 1047.10 +// Distributed under the Boost Software License, Version 1.0. 
 1047.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1047.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1047.13 +//
 1047.14 +// See http://www.boost.org/libs/mpl for documentation.
 1047.15 +
 1047.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector.hpp,v $
 1047.17 +// $Date: 2004/11/28 01:58:27 $
 1047.18 +// $Revision: 1.8 $
 1047.19 +
 1047.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1047.21 +#   include <boost/mpl/limits/vector.hpp>
 1047.22 +#   include <boost/mpl/aux_/na.hpp>
 1047.23 +#   include <boost/mpl/aux_/config/preprocessor.hpp>
 1047.24 +
 1047.25 +#   include <boost/preprocessor/inc.hpp>
 1047.26 +#   include <boost/preprocessor/cat.hpp>
 1047.27 +#   include <boost/preprocessor/stringize.hpp>
 1047.28 +
 1047.29 +#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 1047.30 +#   define AUX778076_VECTOR_HEADER \
 1047.31 +    BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE).hpp \
 1047.32 +    /**/
 1047.33 +#else
 1047.34 +#   define AUX778076_VECTOR_HEADER \
 1047.35 +    BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE)##.hpp \
 1047.36 +    /**/
 1047.37 +#endif
 1047.38 +
 1047.39 +#   include BOOST_PP_STRINGIZE(boost/mpl/vector/AUX778076_VECTOR_HEADER)
 1047.40 +#   undef AUX778076_VECTOR_HEADER
 1047.41 +#endif
 1047.42 +
 1047.43 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1047.44 +
 1047.45 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1047.46 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1047.47 +
 1047.48 +#   define BOOST_MPL_PREPROCESSED_HEADER vector.hpp
 1047.49 +#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1047.50 +
 1047.51 +#else
 1047.52 +
 1047.53 +#   include <boost/mpl/limits/vector.hpp>
 1047.54 +
 1047.55 +#   define AUX778076_SEQUENCE_NAME vector
 1047.56 +#   define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_VECTOR_SIZE
 1047.57 +#   include <boost/mpl/aux_/sequence_wrapper.hpp>
 1047.58 +
 1047.59 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1047.60 +#endif // BOOST_MPL_VECTOR_HPP_INCLUDED
  1048.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1048.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessor/enum.hpp	Wed Mar 31 12:27:01 2010 +0100
  1048.3 @@ -0,0 +1,288 @@
  1048.4 +# /* **************************************************************************
  1048.5 +#  *                                                                          *
  1048.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1048.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1048.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1048.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1048.10 +#  *                                                                          *
 1048.11 +#  ************************************************************************** */
 1048.12 +#
 1048.13 +# /* See http://www.boost.org for most recent version. */
 1048.14 +#
 1048.15 +# ifndef BOOST_PREPROCESSOR_SEQ_ENUM_HPP
 1048.16 +# define BOOST_PREPROCESSOR_SEQ_ENUM_HPP
 1048.17 +#
 1048.18 +# include <boost/preprocessor/cat.hpp>
 1048.19 +# include <boost/preprocessor/config/config.hpp>
 1048.20 +# include <boost/preprocessor/seq/size.hpp>
 1048.21 +#
 1048.22 +# /* BOOST_PP_SEQ_ENUM */
 1048.23 +#
 1048.24 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1048.25 +#    define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(seq)
 1048.26 +#    define BOOST_PP_SEQ_ENUM_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
 1048.27 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1048.28 +#    define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq)
 1048.29 +#    define BOOST_PP_SEQ_ENUM_I(size, seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq
 1048.30 +# else
 1048.31 +#    define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
 1048.32 +# endif
 1048.33 +#
 1048.34 +# define BOOST_PP_SEQ_ENUM_1(x) x
 1048.35 +# define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1
 1048.36 +# define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2
 1048.37 +# define BOOST_PP_SEQ_ENUM_4(x) x, BOOST_PP_SEQ_ENUM_3
 1048.38 +# define BOOST_PP_SEQ_ENUM_5(x) x, BOOST_PP_SEQ_ENUM_4
 1048.39 +# define BOOST_PP_SEQ_ENUM_6(x) x, BOOST_PP_SEQ_ENUM_5
 1048.40 +# define BOOST_PP_SEQ_ENUM_7(x) x, BOOST_PP_SEQ_ENUM_6
 1048.41 +# define BOOST_PP_SEQ_ENUM_8(x) x, BOOST_PP_SEQ_ENUM_7
 1048.42 +# define BOOST_PP_SEQ_ENUM_9(x) x, BOOST_PP_SEQ_ENUM_8
 1048.43 +# define BOOST_PP_SEQ_ENUM_10(x) x, BOOST_PP_SEQ_ENUM_9
 1048.44 +# define BOOST_PP_SEQ_ENUM_11(x) x, BOOST_PP_SEQ_ENUM_10
 1048.45 +# define BOOST_PP_SEQ_ENUM_12(x) x, BOOST_PP_SEQ_ENUM_11
 1048.46 +# define BOOST_PP_SEQ_ENUM_13(x) x, BOOST_PP_SEQ_ENUM_12
 1048.47 +# define BOOST_PP_SEQ_ENUM_14(x) x, BOOST_PP_SEQ_ENUM_13
 1048.48 +# define BOOST_PP_SEQ_ENUM_15(x) x, BOOST_PP_SEQ_ENUM_14
 1048.49 +# define BOOST_PP_SEQ_ENUM_16(x) x, BOOST_PP_SEQ_ENUM_15
 1048.50 +# define BOOST_PP_SEQ_ENUM_17(x) x, BOOST_PP_SEQ_ENUM_16
 1048.51 +# define BOOST_PP_SEQ_ENUM_18(x) x, BOOST_PP_SEQ_ENUM_17
 1048.52 +# define BOOST_PP_SEQ_ENUM_19(x) x, BOOST_PP_SEQ_ENUM_18
 1048.53 +# define BOOST_PP_SEQ_ENUM_20(x) x, BOOST_PP_SEQ_ENUM_19
 1048.54 +# define BOOST_PP_SEQ_ENUM_21(x) x, BOOST_PP_SEQ_ENUM_20
 1048.55 +# define BOOST_PP_SEQ_ENUM_22(x) x, BOOST_PP_SEQ_ENUM_21
 1048.56 +# define BOOST_PP_SEQ_ENUM_23(x) x, BOOST_PP_SEQ_ENUM_22
 1048.57 +# define BOOST_PP_SEQ_ENUM_24(x) x, BOOST_PP_SEQ_ENUM_23
 1048.58 +# define BOOST_PP_SEQ_ENUM_25(x) x, BOOST_PP_SEQ_ENUM_24
 1048.59 +# define BOOST_PP_SEQ_ENUM_26(x) x, BOOST_PP_SEQ_ENUM_25
 1048.60 +# define BOOST_PP_SEQ_ENUM_27(x) x, BOOST_PP_SEQ_ENUM_26
 1048.61 +# define BOOST_PP_SEQ_ENUM_28(x) x, BOOST_PP_SEQ_ENUM_27
 1048.62 +# define BOOST_PP_SEQ_ENUM_29(x) x, BOOST_PP_SEQ_ENUM_28
 1048.63 +# define BOOST_PP_SEQ_ENUM_30(x) x, BOOST_PP_SEQ_ENUM_29
 1048.64 +# define BOOST_PP_SEQ_ENUM_31(x) x, BOOST_PP_SEQ_ENUM_30
 1048.65 +# define BOOST_PP_SEQ_ENUM_32(x) x, BOOST_PP_SEQ_ENUM_31
 1048.66 +# define BOOST_PP_SEQ_ENUM_33(x) x, BOOST_PP_SEQ_ENUM_32
 1048.67 +# define BOOST_PP_SEQ_ENUM_34(x) x, BOOST_PP_SEQ_ENUM_33
 1048.68 +# define BOOST_PP_SEQ_ENUM_35(x) x, BOOST_PP_SEQ_ENUM_34
 1048.69 +# define BOOST_PP_SEQ_ENUM_36(x) x, BOOST_PP_SEQ_ENUM_35
 1048.70 +# define BOOST_PP_SEQ_ENUM_37(x) x, BOOST_PP_SEQ_ENUM_36
 1048.71 +# define BOOST_PP_SEQ_ENUM_38(x) x, BOOST_PP_SEQ_ENUM_37
 1048.72 +# define BOOST_PP_SEQ_ENUM_39(x) x, BOOST_PP_SEQ_ENUM_38
 1048.73 +# define BOOST_PP_SEQ_ENUM_40(x) x, BOOST_PP_SEQ_ENUM_39
 1048.74 +# define BOOST_PP_SEQ_ENUM_41(x) x, BOOST_PP_SEQ_ENUM_40
 1048.75 +# define BOOST_PP_SEQ_ENUM_42(x) x, BOOST_PP_SEQ_ENUM_41
 1048.76 +# define BOOST_PP_SEQ_ENUM_43(x) x, BOOST_PP_SEQ_ENUM_42
 1048.77 +# define BOOST_PP_SEQ_ENUM_44(x) x, BOOST_PP_SEQ_ENUM_43
 1048.78 +# define BOOST_PP_SEQ_ENUM_45(x) x, BOOST_PP_SEQ_ENUM_44
 1048.79 +# define BOOST_PP_SEQ_ENUM_46(x) x, BOOST_PP_SEQ_ENUM_45
 1048.80 +# define BOOST_PP_SEQ_ENUM_47(x) x, BOOST_PP_SEQ_ENUM_46
 1048.81 +# define BOOST_PP_SEQ_ENUM_48(x) x, BOOST_PP_SEQ_ENUM_47
 1048.82 +# define BOOST_PP_SEQ_ENUM_49(x) x, BOOST_PP_SEQ_ENUM_48
 1048.83 +# define BOOST_PP_SEQ_ENUM_50(x) x, BOOST_PP_SEQ_ENUM_49
 1048.84 +# define BOOST_PP_SEQ_ENUM_51(x) x, BOOST_PP_SEQ_ENUM_50
 1048.85 +# define BOOST_PP_SEQ_ENUM_52(x) x, BOOST_PP_SEQ_ENUM_51
 1048.86 +# define BOOST_PP_SEQ_ENUM_53(x) x, BOOST_PP_SEQ_ENUM_52
 1048.87 +# define BOOST_PP_SEQ_ENUM_54(x) x, BOOST_PP_SEQ_ENUM_53
 1048.88 +# define BOOST_PP_SEQ_ENUM_55(x) x, BOOST_PP_SEQ_ENUM_54
 1048.89 +# define BOOST_PP_SEQ_ENUM_56(x) x, BOOST_PP_SEQ_ENUM_55
 1048.90 +# define BOOST_PP_SEQ_ENUM_57(x) x, BOOST_PP_SEQ_ENUM_56
 1048.91 +# define BOOST_PP_SEQ_ENUM_58(x) x, BOOST_PP_SEQ_ENUM_57
 1048.92 +# define BOOST_PP_SEQ_ENUM_59(x) x, BOOST_PP_SEQ_ENUM_58
 1048.93 +# define BOOST_PP_SEQ_ENUM_60(x) x, BOOST_PP_SEQ_ENUM_59
 1048.94 +# define BOOST_PP_SEQ_ENUM_61(x) x, BOOST_PP_SEQ_ENUM_60
 1048.95 +# define BOOST_PP_SEQ_ENUM_62(x) x, BOOST_PP_SEQ_ENUM_61
 1048.96 +# define BOOST_PP_SEQ_ENUM_63(x) x, BOOST_PP_SEQ_ENUM_62
 1048.97 +# define BOOST_PP_SEQ_ENUM_64(x) x, BOOST_PP_SEQ_ENUM_63
 1048.98 +# define BOOST_PP_SEQ_ENUM_65(x) x, BOOST_PP_SEQ_ENUM_64
 1048.99 +# define BOOST_PP_SEQ_ENUM_66(x) x, BOOST_PP_SEQ_ENUM_65
1048.100 +# define BOOST_PP_SEQ_ENUM_67(x) x, BOOST_PP_SEQ_ENUM_66
1048.101 +# define BOOST_PP_SEQ_ENUM_68(x) x, BOOST_PP_SEQ_ENUM_67
1048.102 +# define BOOST_PP_SEQ_ENUM_69(x) x, BOOST_PP_SEQ_ENUM_68
1048.103 +# define BOOST_PP_SEQ_ENUM_70(x) x, BOOST_PP_SEQ_ENUM_69
1048.104 +# define BOOST_PP_SEQ_ENUM_71(x) x, BOOST_PP_SEQ_ENUM_70
1048.105 +# define BOOST_PP_SEQ_ENUM_72(x) x, BOOST_PP_SEQ_ENUM_71
1048.106 +# define BOOST_PP_SEQ_ENUM_73(x) x, BOOST_PP_SEQ_ENUM_72
1048.107 +# define BOOST_PP_SEQ_ENUM_74(x) x, BOOST_PP_SEQ_ENUM_73
1048.108 +# define BOOST_PP_SEQ_ENUM_75(x) x, BOOST_PP_SEQ_ENUM_74
1048.109 +# define BOOST_PP_SEQ_ENUM_76(x) x, BOOST_PP_SEQ_ENUM_75
1048.110 +# define BOOST_PP_SEQ_ENUM_77(x) x, BOOST_PP_SEQ_ENUM_76
1048.111 +# define BOOST_PP_SEQ_ENUM_78(x) x, BOOST_PP_SEQ_ENUM_77
1048.112 +# define BOOST_PP_SEQ_ENUM_79(x) x, BOOST_PP_SEQ_ENUM_78
1048.113 +# define BOOST_PP_SEQ_ENUM_80(x) x, BOOST_PP_SEQ_ENUM_79
1048.114 +# define BOOST_PP_SEQ_ENUM_81(x) x, BOOST_PP_SEQ_ENUM_80
1048.115 +# define BOOST_PP_SEQ_ENUM_82(x) x, BOOST_PP_SEQ_ENUM_81
1048.116 +# define BOOST_PP_SEQ_ENUM_83(x) x, BOOST_PP_SEQ_ENUM_82
1048.117 +# define BOOST_PP_SEQ_ENUM_84(x) x, BOOST_PP_SEQ_ENUM_83
1048.118 +# define BOOST_PP_SEQ_ENUM_85(x) x, BOOST_PP_SEQ_ENUM_84
1048.119 +# define BOOST_PP_SEQ_ENUM_86(x) x, BOOST_PP_SEQ_ENUM_85
1048.120 +# define BOOST_PP_SEQ_ENUM_87(x) x, BOOST_PP_SEQ_ENUM_86
1048.121 +# define BOOST_PP_SEQ_ENUM_88(x) x, BOOST_PP_SEQ_ENUM_87
1048.122 +# define BOOST_PP_SEQ_ENUM_89(x) x, BOOST_PP_SEQ_ENUM_88
1048.123 +# define BOOST_PP_SEQ_ENUM_90(x) x, BOOST_PP_SEQ_ENUM_89
1048.124 +# define BOOST_PP_SEQ_ENUM_91(x) x, BOOST_PP_SEQ_ENUM_90
1048.125 +# define BOOST_PP_SEQ_ENUM_92(x) x, BOOST_PP_SEQ_ENUM_91
1048.126 +# define BOOST_PP_SEQ_ENUM_93(x) x, BOOST_PP_SEQ_ENUM_92
1048.127 +# define BOOST_PP_SEQ_ENUM_94(x) x, BOOST_PP_SEQ_ENUM_93
1048.128 +# define BOOST_PP_SEQ_ENUM_95(x) x, BOOST_PP_SEQ_ENUM_94
1048.129 +# define BOOST_PP_SEQ_ENUM_96(x) x, BOOST_PP_SEQ_ENUM_95
1048.130 +# define BOOST_PP_SEQ_ENUM_97(x) x, BOOST_PP_SEQ_ENUM_96
1048.131 +# define BOOST_PP_SEQ_ENUM_98(x) x, BOOST_PP_SEQ_ENUM_97
1048.132 +# define BOOST_PP_SEQ_ENUM_99(x) x, BOOST_PP_SEQ_ENUM_98
1048.133 +# define BOOST_PP_SEQ_ENUM_100(x) x, BOOST_PP_SEQ_ENUM_99
1048.134 +# define BOOST_PP_SEQ_ENUM_101(x) x, BOOST_PP_SEQ_ENUM_100
1048.135 +# define BOOST_PP_SEQ_ENUM_102(x) x, BOOST_PP_SEQ_ENUM_101
1048.136 +# define BOOST_PP_SEQ_ENUM_103(x) x, BOOST_PP_SEQ_ENUM_102
1048.137 +# define BOOST_PP_SEQ_ENUM_104(x) x, BOOST_PP_SEQ_ENUM_103
1048.138 +# define BOOST_PP_SEQ_ENUM_105(x) x, BOOST_PP_SEQ_ENUM_104
1048.139 +# define BOOST_PP_SEQ_ENUM_106(x) x, BOOST_PP_SEQ_ENUM_105
1048.140 +# define BOOST_PP_SEQ_ENUM_107(x) x, BOOST_PP_SEQ_ENUM_106
1048.141 +# define BOOST_PP_SEQ_ENUM_108(x) x, BOOST_PP_SEQ_ENUM_107
1048.142 +# define BOOST_PP_SEQ_ENUM_109(x) x, BOOST_PP_SEQ_ENUM_108
1048.143 +# define BOOST_PP_SEQ_ENUM_110(x) x, BOOST_PP_SEQ_ENUM_109
1048.144 +# define BOOST_PP_SEQ_ENUM_111(x) x, BOOST_PP_SEQ_ENUM_110
1048.145 +# define BOOST_PP_SEQ_ENUM_112(x) x, BOOST_PP_SEQ_ENUM_111
1048.146 +# define BOOST_PP_SEQ_ENUM_113(x) x, BOOST_PP_SEQ_ENUM_112
1048.147 +# define BOOST_PP_SEQ_ENUM_114(x) x, BOOST_PP_SEQ_ENUM_113
1048.148 +# define BOOST_PP_SEQ_ENUM_115(x) x, BOOST_PP_SEQ_ENUM_114
1048.149 +# define BOOST_PP_SEQ_ENUM_116(x) x, BOOST_PP_SEQ_ENUM_115
1048.150 +# define BOOST_PP_SEQ_ENUM_117(x) x, BOOST_PP_SEQ_ENUM_116
1048.151 +# define BOOST_PP_SEQ_ENUM_118(x) x, BOOST_PP_SEQ_ENUM_117
1048.152 +# define BOOST_PP_SEQ_ENUM_119(x) x, BOOST_PP_SEQ_ENUM_118
1048.153 +# define BOOST_PP_SEQ_ENUM_120(x) x, BOOST_PP_SEQ_ENUM_119
1048.154 +# define BOOST_PP_SEQ_ENUM_121(x) x, BOOST_PP_SEQ_ENUM_120
1048.155 +# define BOOST_PP_SEQ_ENUM_122(x) x, BOOST_PP_SEQ_ENUM_121
1048.156 +# define BOOST_PP_SEQ_ENUM_123(x) x, BOOST_PP_SEQ_ENUM_122
1048.157 +# define BOOST_PP_SEQ_ENUM_124(x) x, BOOST_PP_SEQ_ENUM_123
1048.158 +# define BOOST_PP_SEQ_ENUM_125(x) x, BOOST_PP_SEQ_ENUM_124
1048.159 +# define BOOST_PP_SEQ_ENUM_126(x) x, BOOST_PP_SEQ_ENUM_125
1048.160 +# define BOOST_PP_SEQ_ENUM_127(x) x, BOOST_PP_SEQ_ENUM_126
1048.161 +# define BOOST_PP_SEQ_ENUM_128(x) x, BOOST_PP_SEQ_ENUM_127
1048.162 +# define BOOST_PP_SEQ_ENUM_129(x) x, BOOST_PP_SEQ_ENUM_128
1048.163 +# define BOOST_PP_SEQ_ENUM_130(x) x, BOOST_PP_SEQ_ENUM_129
1048.164 +# define BOOST_PP_SEQ_ENUM_131(x) x, BOOST_PP_SEQ_ENUM_130
1048.165 +# define BOOST_PP_SEQ_ENUM_132(x) x, BOOST_PP_SEQ_ENUM_131
1048.166 +# define BOOST_PP_SEQ_ENUM_133(x) x, BOOST_PP_SEQ_ENUM_132
1048.167 +# define BOOST_PP_SEQ_ENUM_134(x) x, BOOST_PP_SEQ_ENUM_133
1048.168 +# define BOOST_PP_SEQ_ENUM_135(x) x, BOOST_PP_SEQ_ENUM_134
1048.169 +# define BOOST_PP_SEQ_ENUM_136(x) x, BOOST_PP_SEQ_ENUM_135
1048.170 +# define BOOST_PP_SEQ_ENUM_137(x) x, BOOST_PP_SEQ_ENUM_136
1048.171 +# define BOOST_PP_SEQ_ENUM_138(x) x, BOOST_PP_SEQ_ENUM_137
1048.172 +# define BOOST_PP_SEQ_ENUM_139(x) x, BOOST_PP_SEQ_ENUM_138
1048.173 +# define BOOST_PP_SEQ_ENUM_140(x) x, BOOST_PP_SEQ_ENUM_139
1048.174 +# define BOOST_PP_SEQ_ENUM_141(x) x, BOOST_PP_SEQ_ENUM_140
1048.175 +# define BOOST_PP_SEQ_ENUM_142(x) x, BOOST_PP_SEQ_ENUM_141
1048.176 +# define BOOST_PP_SEQ_ENUM_143(x) x, BOOST_PP_SEQ_ENUM_142
1048.177 +# define BOOST_PP_SEQ_ENUM_144(x) x, BOOST_PP_SEQ_ENUM_143
1048.178 +# define BOOST_PP_SEQ_ENUM_145(x) x, BOOST_PP_SEQ_ENUM_144
1048.179 +# define BOOST_PP_SEQ_ENUM_146(x) x, BOOST_PP_SEQ_ENUM_145
1048.180 +# define BOOST_PP_SEQ_ENUM_147(x) x, BOOST_PP_SEQ_ENUM_146
1048.181 +# define BOOST_PP_SEQ_ENUM_148(x) x, BOOST_PP_SEQ_ENUM_147
1048.182 +# define BOOST_PP_SEQ_ENUM_149(x) x, BOOST_PP_SEQ_ENUM_148
1048.183 +# define BOOST_PP_SEQ_ENUM_150(x) x, BOOST_PP_SEQ_ENUM_149
1048.184 +# define BOOST_PP_SEQ_ENUM_151(x) x, BOOST_PP_SEQ_ENUM_150
1048.185 +# define BOOST_PP_SEQ_ENUM_152(x) x, BOOST_PP_SEQ_ENUM_151
1048.186 +# define BOOST_PP_SEQ_ENUM_153(x) x, BOOST_PP_SEQ_ENUM_152
1048.187 +# define BOOST_PP_SEQ_ENUM_154(x) x, BOOST_PP_SEQ_ENUM_153
1048.188 +# define BOOST_PP_SEQ_ENUM_155(x) x, BOOST_PP_SEQ_ENUM_154
1048.189 +# define BOOST_PP_SEQ_ENUM_156(x) x, BOOST_PP_SEQ_ENUM_155
1048.190 +# define BOOST_PP_SEQ_ENUM_157(x) x, BOOST_PP_SEQ_ENUM_156
1048.191 +# define BOOST_PP_SEQ_ENUM_158(x) x, BOOST_PP_SEQ_ENUM_157
1048.192 +# define BOOST_PP_SEQ_ENUM_159(x) x, BOOST_PP_SEQ_ENUM_158
1048.193 +# define BOOST_PP_SEQ_ENUM_160(x) x, BOOST_PP_SEQ_ENUM_159
1048.194 +# define BOOST_PP_SEQ_ENUM_161(x) x, BOOST_PP_SEQ_ENUM_160
1048.195 +# define BOOST_PP_SEQ_ENUM_162(x) x, BOOST_PP_SEQ_ENUM_161
1048.196 +# define BOOST_PP_SEQ_ENUM_163(x) x, BOOST_PP_SEQ_ENUM_162
1048.197 +# define BOOST_PP_SEQ_ENUM_164(x) x, BOOST_PP_SEQ_ENUM_163
1048.198 +# define BOOST_PP_SEQ_ENUM_165(x) x, BOOST_PP_SEQ_ENUM_164
1048.199 +# define BOOST_PP_SEQ_ENUM_166(x) x, BOOST_PP_SEQ_ENUM_165
1048.200 +# define BOOST_PP_SEQ_ENUM_167(x) x, BOOST_PP_SEQ_ENUM_166
1048.201 +# define BOOST_PP_SEQ_ENUM_168(x) x, BOOST_PP_SEQ_ENUM_167
1048.202 +# define BOOST_PP_SEQ_ENUM_169(x) x, BOOST_PP_SEQ_ENUM_168
1048.203 +# define BOOST_PP_SEQ_ENUM_170(x) x, BOOST_PP_SEQ_ENUM_169
1048.204 +# define BOOST_PP_SEQ_ENUM_171(x) x, BOOST_PP_SEQ_ENUM_170
1048.205 +# define BOOST_PP_SEQ_ENUM_172(x) x, BOOST_PP_SEQ_ENUM_171
1048.206 +# define BOOST_PP_SEQ_ENUM_173(x) x, BOOST_PP_SEQ_ENUM_172
1048.207 +# define BOOST_PP_SEQ_ENUM_174(x) x, BOOST_PP_SEQ_ENUM_173
1048.208 +# define BOOST_PP_SEQ_ENUM_175(x) x, BOOST_PP_SEQ_ENUM_174
1048.209 +# define BOOST_PP_SEQ_ENUM_176(x) x, BOOST_PP_SEQ_ENUM_175
1048.210 +# define BOOST_PP_SEQ_ENUM_177(x) x, BOOST_PP_SEQ_ENUM_176
1048.211 +# define BOOST_PP_SEQ_ENUM_178(x) x, BOOST_PP_SEQ_ENUM_177
1048.212 +# define BOOST_PP_SEQ_ENUM_179(x) x, BOOST_PP_SEQ_ENUM_178
1048.213 +# define BOOST_PP_SEQ_ENUM_180(x) x, BOOST_PP_SEQ_ENUM_179
1048.214 +# define BOOST_PP_SEQ_ENUM_181(x) x, BOOST_PP_SEQ_ENUM_180
1048.215 +# define BOOST_PP_SEQ_ENUM_182(x) x, BOOST_PP_SEQ_ENUM_181
1048.216 +# define BOOST_PP_SEQ_ENUM_183(x) x, BOOST_PP_SEQ_ENUM_182
1048.217 +# define BOOST_PP_SEQ_ENUM_184(x) x, BOOST_PP_SEQ_ENUM_183
1048.218 +# define BOOST_PP_SEQ_ENUM_185(x) x, BOOST_PP_SEQ_ENUM_184
1048.219 +# define BOOST_PP_SEQ_ENUM_186(x) x, BOOST_PP_SEQ_ENUM_185
1048.220 +# define BOOST_PP_SEQ_ENUM_187(x) x, BOOST_PP_SEQ_ENUM_186
1048.221 +# define BOOST_PP_SEQ_ENUM_188(x) x, BOOST_PP_SEQ_ENUM_187
1048.222 +# define BOOST_PP_SEQ_ENUM_189(x) x, BOOST_PP_SEQ_ENUM_188
1048.223 +# define BOOST_PP_SEQ_ENUM_190(x) x, BOOST_PP_SEQ_ENUM_189
1048.224 +# define BOOST_PP_SEQ_ENUM_191(x) x, BOOST_PP_SEQ_ENUM_190
1048.225 +# define BOOST_PP_SEQ_ENUM_192(x) x, BOOST_PP_SEQ_ENUM_191
1048.226 +# define BOOST_PP_SEQ_ENUM_193(x) x, BOOST_PP_SEQ_ENUM_192
1048.227 +# define BOOST_PP_SEQ_ENUM_194(x) x, BOOST_PP_SEQ_ENUM_193
1048.228 +# define BOOST_PP_SEQ_ENUM_195(x) x, BOOST_PP_SEQ_ENUM_194
1048.229 +# define BOOST_PP_SEQ_ENUM_196(x) x, BOOST_PP_SEQ_ENUM_195
1048.230 +# define BOOST_PP_SEQ_ENUM_197(x) x, BOOST_PP_SEQ_ENUM_196
1048.231 +# define BOOST_PP_SEQ_ENUM_198(x) x, BOOST_PP_SEQ_ENUM_197
1048.232 +# define BOOST_PP_SEQ_ENUM_199(x) x, BOOST_PP_SEQ_ENUM_198
1048.233 +# define BOOST_PP_SEQ_ENUM_200(x) x, BOOST_PP_SEQ_ENUM_199
1048.234 +# define BOOST_PP_SEQ_ENUM_201(x) x, BOOST_PP_SEQ_ENUM_200
1048.235 +# define BOOST_PP_SEQ_ENUM_202(x) x, BOOST_PP_SEQ_ENUM_201
1048.236 +# define BOOST_PP_SEQ_ENUM_203(x) x, BOOST_PP_SEQ_ENUM_202
1048.237 +# define BOOST_PP_SEQ_ENUM_204(x) x, BOOST_PP_SEQ_ENUM_203
1048.238 +# define BOOST_PP_SEQ_ENUM_205(x) x, BOOST_PP_SEQ_ENUM_204
1048.239 +# define BOOST_PP_SEQ_ENUM_206(x) x, BOOST_PP_SEQ_ENUM_205
1048.240 +# define BOOST_PP_SEQ_ENUM_207(x) x, BOOST_PP_SEQ_ENUM_206
1048.241 +# define BOOST_PP_SEQ_ENUM_208(x) x, BOOST_PP_SEQ_ENUM_207
1048.242 +# define BOOST_PP_SEQ_ENUM_209(x) x, BOOST_PP_SEQ_ENUM_208
1048.243 +# define BOOST_PP_SEQ_ENUM_210(x) x, BOOST_PP_SEQ_ENUM_209
1048.244 +# define BOOST_PP_SEQ_ENUM_211(x) x, BOOST_PP_SEQ_ENUM_210
1048.245 +# define BOOST_PP_SEQ_ENUM_212(x) x, BOOST_PP_SEQ_ENUM_211
1048.246 +# define BOOST_PP_SEQ_ENUM_213(x) x, BOOST_PP_SEQ_ENUM_212
1048.247 +# define BOOST_PP_SEQ_ENUM_214(x) x, BOOST_PP_SEQ_ENUM_213
1048.248 +# define BOOST_PP_SEQ_ENUM_215(x) x, BOOST_PP_SEQ_ENUM_214
1048.249 +# define BOOST_PP_SEQ_ENUM_216(x) x, BOOST_PP_SEQ_ENUM_215
1048.250 +# define BOOST_PP_SEQ_ENUM_217(x) x, BOOST_PP_SEQ_ENUM_216
1048.251 +# define BOOST_PP_SEQ_ENUM_218(x) x, BOOST_PP_SEQ_ENUM_217
1048.252 +# define BOOST_PP_SEQ_ENUM_219(x) x, BOOST_PP_SEQ_ENUM_218
1048.253 +# define BOOST_PP_SEQ_ENUM_220(x) x, BOOST_PP_SEQ_ENUM_219
1048.254 +# define BOOST_PP_SEQ_ENUM_221(x) x, BOOST_PP_SEQ_ENUM_220
1048.255 +# define BOOST_PP_SEQ_ENUM_222(x) x, BOOST_PP_SEQ_ENUM_221
1048.256 +# define BOOST_PP_SEQ_ENUM_223(x) x, BOOST_PP_SEQ_ENUM_222
1048.257 +# define BOOST_PP_SEQ_ENUM_224(x) x, BOOST_PP_SEQ_ENUM_223
1048.258 +# define BOOST_PP_SEQ_ENUM_225(x) x, BOOST_PP_SEQ_ENUM_224
1048.259 +# define BOOST_PP_SEQ_ENUM_226(x) x, BOOST_PP_SEQ_ENUM_225
1048.260 +# define BOOST_PP_SEQ_ENUM_227(x) x, BOOST_PP_SEQ_ENUM_226
1048.261 +# define BOOST_PP_SEQ_ENUM_228(x) x, BOOST_PP_SEQ_ENUM_227
1048.262 +# define BOOST_PP_SEQ_ENUM_229(x) x, BOOST_PP_SEQ_ENUM_228
1048.263 +# define BOOST_PP_SEQ_ENUM_230(x) x, BOOST_PP_SEQ_ENUM_229
1048.264 +# define BOOST_PP_SEQ_ENUM_231(x) x, BOOST_PP_SEQ_ENUM_230
1048.265 +# define BOOST_PP_SEQ_ENUM_232(x) x, BOOST_PP_SEQ_ENUM_231
1048.266 +# define BOOST_PP_SEQ_ENUM_233(x) x, BOOST_PP_SEQ_ENUM_232
1048.267 +# define BOOST_PP_SEQ_ENUM_234(x) x, BOOST_PP_SEQ_ENUM_233
1048.268 +# define BOOST_PP_SEQ_ENUM_235(x) x, BOOST_PP_SEQ_ENUM_234
1048.269 +# define BOOST_PP_SEQ_ENUM_236(x) x, BOOST_PP_SEQ_ENUM_235
1048.270 +# define BOOST_PP_SEQ_ENUM_237(x) x, BOOST_PP_SEQ_ENUM_236
1048.271 +# define BOOST_PP_SEQ_ENUM_238(x) x, BOOST_PP_SEQ_ENUM_237
1048.272 +# define BOOST_PP_SEQ_ENUM_239(x) x, BOOST_PP_SEQ_ENUM_238
1048.273 +# define BOOST_PP_SEQ_ENUM_240(x) x, BOOST_PP_SEQ_ENUM_239
1048.274 +# define BOOST_PP_SEQ_ENUM_241(x) x, BOOST_PP_SEQ_ENUM_240
1048.275 +# define BOOST_PP_SEQ_ENUM_242(x) x, BOOST_PP_SEQ_ENUM_241
1048.276 +# define BOOST_PP_SEQ_ENUM_243(x) x, BOOST_PP_SEQ_ENUM_242
1048.277 +# define BOOST_PP_SEQ_ENUM_244(x) x, BOOST_PP_SEQ_ENUM_243
1048.278 +# define BOOST_PP_SEQ_ENUM_245(x) x, BOOST_PP_SEQ_ENUM_244
1048.279 +# define BOOST_PP_SEQ_ENUM_246(x) x, BOOST_PP_SEQ_ENUM_245
1048.280 +# define BOOST_PP_SEQ_ENUM_247(x) x, BOOST_PP_SEQ_ENUM_246
1048.281 +# define BOOST_PP_SEQ_ENUM_248(x) x, BOOST_PP_SEQ_ENUM_247
1048.282 +# define BOOST_PP_SEQ_ENUM_249(x) x, BOOST_PP_SEQ_ENUM_248
1048.283 +# define BOOST_PP_SEQ_ENUM_250(x) x, BOOST_PP_SEQ_ENUM_249
1048.284 +# define BOOST_PP_SEQ_ENUM_251(x) x, BOOST_PP_SEQ_ENUM_250
1048.285 +# define BOOST_PP_SEQ_ENUM_252(x) x, BOOST_PP_SEQ_ENUM_251
1048.286 +# define BOOST_PP_SEQ_ENUM_253(x) x, BOOST_PP_SEQ_ENUM_252
1048.287 +# define BOOST_PP_SEQ_ENUM_254(x) x, BOOST_PP_SEQ_ENUM_253
1048.288 +# define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254
1048.289 +# define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255
1048.290 +#
1048.291 +# endif
  1049.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1049.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/preprocessor/repeat.hpp	Wed Mar 31 12:27:01 2010 +0100
  1049.3 @@ -0,0 +1,825 @@
  1049.4 +# /* Copyright (C) 2001
  1049.5 +#  * Housemarque Oy
  1049.6 +#  * http://www.housemarque.com
  1049.7 +#  *
  1049.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1049.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1049.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1049.11 +#  */
 1049.12 +#
 1049.13 +# /* Revised by Paul Mensonides (2002) */
 1049.14 +#
 1049.15 +# /* See http://www.boost.org for most recent version. */
 1049.16 +#
 1049.17 +# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
 1049.18 +# define BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
 1049.19 +#
 1049.20 +# include <boost/preprocessor/cat.hpp>
 1049.21 +# include <boost/preprocessor/config/config.hpp>
 1049.22 +# include <boost/preprocessor/debug/error.hpp>
 1049.23 +# include <boost/preprocessor/detail/auto_rec.hpp>
 1049.24 +# include <boost/preprocessor/tuple/eat.hpp>
 1049.25 +#
 1049.26 +# /* BOOST_PP_REPEAT */
 1049.27 +#
 1049.28 +# if 0
 1049.29 +#    define BOOST_PP_REPEAT(count, macro, data)
 1049.30 +# endif
 1049.31 +#
 1049.32 +# define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
 1049.33 +#
 1049.34 +# define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))
 1049.35 +#
 1049.36 +# define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1
 1049.37 +# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_1(c, m, d) 0
 1049.38 +# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_2(c, m, d) 0
 1049.39 +# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_3(c, m, d) 0
 1049.40 +#
 1049.41 +# define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
 1049.42 +# define BOOST_PP_REPEAT_2(c, m, d) BOOST_PP_REPEAT_2_I(c, m, d)
 1049.43 +# define BOOST_PP_REPEAT_3(c, m, d) BOOST_PP_REPEAT_3_I(c, m, d)
 1049.44 +# define BOOST_PP_REPEAT_4(c, m, d) BOOST_PP_ERROR(0x0003)
 1049.45 +#
 1049.46 +# define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
 1049.47 +# define BOOST_PP_REPEAT_2_I(c, m, d) BOOST_PP_REPEAT_2_ ## c(m, d)
 1049.48 +# define BOOST_PP_REPEAT_3_I(c, m, d) BOOST_PP_REPEAT_3_ ## c(m, d)
 1049.49 +#
 1049.50 +# define BOOST_PP_REPEAT_1ST BOOST_PP_REPEAT_1
 1049.51 +# define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2
 1049.52 +# define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3
 1049.53 +#
 1049.54 +# define BOOST_PP_REPEAT_1_0(m, d)
 1049.55 +# define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
 1049.56 +# define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
 1049.57 +# define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
 1049.58 +# define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
 1049.59 +# define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
 1049.60 +# define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
 1049.61 +# define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
 1049.62 +# define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
 1049.63 +# define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
 1049.64 +# define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
 1049.65 +# define BOOST_PP_REPEAT_1_11(m, d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d)
 1049.66 +# define BOOST_PP_REPEAT_1_12(m, d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d)
 1049.67 +# define BOOST_PP_REPEAT_1_13(m, d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d)
 1049.68 +# define BOOST_PP_REPEAT_1_14(m, d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d)
 1049.69 +# define BOOST_PP_REPEAT_1_15(m, d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d)
 1049.70 +# define BOOST_PP_REPEAT_1_16(m, d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d)
 1049.71 +# define BOOST_PP_REPEAT_1_17(m, d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d)
 1049.72 +# define BOOST_PP_REPEAT_1_18(m, d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d)
 1049.73 +# define BOOST_PP_REPEAT_1_19(m, d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d)
 1049.74 +# define BOOST_PP_REPEAT_1_20(m, d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d)
 1049.75 +# define BOOST_PP_REPEAT_1_21(m, d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d)
 1049.76 +# define BOOST_PP_REPEAT_1_22(m, d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d)
 1049.77 +# define BOOST_PP_REPEAT_1_23(m, d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d)
 1049.78 +# define BOOST_PP_REPEAT_1_24(m, d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d)
 1049.79 +# define BOOST_PP_REPEAT_1_25(m, d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d)
 1049.80 +# define BOOST_PP_REPEAT_1_26(m, d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d)
 1049.81 +# define BOOST_PP_REPEAT_1_27(m, d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d)
 1049.82 +# define BOOST_PP_REPEAT_1_28(m, d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d)
 1049.83 +# define BOOST_PP_REPEAT_1_29(m, d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d)
 1049.84 +# define BOOST_PP_REPEAT_1_30(m, d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d)
 1049.85 +# define BOOST_PP_REPEAT_1_31(m, d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d)
 1049.86 +# define BOOST_PP_REPEAT_1_32(m, d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d)
 1049.87 +# define BOOST_PP_REPEAT_1_33(m, d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d)
 1049.88 +# define BOOST_PP_REPEAT_1_34(m, d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d)
 1049.89 +# define BOOST_PP_REPEAT_1_35(m, d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d)
 1049.90 +# define BOOST_PP_REPEAT_1_36(m, d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d)
 1049.91 +# define BOOST_PP_REPEAT_1_37(m, d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d)
 1049.92 +# define BOOST_PP_REPEAT_1_38(m, d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d)
 1049.93 +# define BOOST_PP_REPEAT_1_39(m, d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d)
 1049.94 +# define BOOST_PP_REPEAT_1_40(m, d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d)
 1049.95 +# define BOOST_PP_REPEAT_1_41(m, d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d)
 1049.96 +# define BOOST_PP_REPEAT_1_42(m, d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d)
 1049.97 +# define BOOST_PP_REPEAT_1_43(m, d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d)
 1049.98 +# define BOOST_PP_REPEAT_1_44(m, d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d)
 1049.99 +# define BOOST_PP_REPEAT_1_45(m, d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d)
1049.100 +# define BOOST_PP_REPEAT_1_46(m, d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d)
1049.101 +# define BOOST_PP_REPEAT_1_47(m, d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d)
1049.102 +# define BOOST_PP_REPEAT_1_48(m, d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d)
1049.103 +# define BOOST_PP_REPEAT_1_49(m, d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d)
1049.104 +# define BOOST_PP_REPEAT_1_50(m, d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d)
1049.105 +# define BOOST_PP_REPEAT_1_51(m, d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d)
1049.106 +# define BOOST_PP_REPEAT_1_52(m, d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d)
1049.107 +# define BOOST_PP_REPEAT_1_53(m, d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d)
1049.108 +# define BOOST_PP_REPEAT_1_54(m, d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d)
1049.109 +# define BOOST_PP_REPEAT_1_55(m, d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d)
1049.110 +# define BOOST_PP_REPEAT_1_56(m, d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d)
1049.111 +# define BOOST_PP_REPEAT_1_57(m, d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d)
1049.112 +# define BOOST_PP_REPEAT_1_58(m, d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d)
1049.113 +# define BOOST_PP_REPEAT_1_59(m, d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d)
1049.114 +# define BOOST_PP_REPEAT_1_60(m, d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d)
1049.115 +# define BOOST_PP_REPEAT_1_61(m, d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d)
1049.116 +# define BOOST_PP_REPEAT_1_62(m, d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d)
1049.117 +# define BOOST_PP_REPEAT_1_63(m, d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d)
1049.118 +# define BOOST_PP_REPEAT_1_64(m, d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d)
1049.119 +# define BOOST_PP_REPEAT_1_65(m, d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d)
1049.120 +# define BOOST_PP_REPEAT_1_66(m, d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d)
1049.121 +# define BOOST_PP_REPEAT_1_67(m, d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d)
1049.122 +# define BOOST_PP_REPEAT_1_68(m, d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d)
1049.123 +# define BOOST_PP_REPEAT_1_69(m, d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d)
1049.124 +# define BOOST_PP_REPEAT_1_70(m, d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d)
1049.125 +# define BOOST_PP_REPEAT_1_71(m, d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d)
1049.126 +# define BOOST_PP_REPEAT_1_72(m, d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d)
1049.127 +# define BOOST_PP_REPEAT_1_73(m, d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d)
1049.128 +# define BOOST_PP_REPEAT_1_74(m, d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d)
1049.129 +# define BOOST_PP_REPEAT_1_75(m, d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d)
1049.130 +# define BOOST_PP_REPEAT_1_76(m, d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d)
1049.131 +# define BOOST_PP_REPEAT_1_77(m, d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d)
1049.132 +# define BOOST_PP_REPEAT_1_78(m, d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d)
1049.133 +# define BOOST_PP_REPEAT_1_79(m, d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d)
1049.134 +# define BOOST_PP_REPEAT_1_80(m, d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d)
1049.135 +# define BOOST_PP_REPEAT_1_81(m, d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d)
1049.136 +# define BOOST_PP_REPEAT_1_82(m, d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d)
1049.137 +# define BOOST_PP_REPEAT_1_83(m, d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d)
1049.138 +# define BOOST_PP_REPEAT_1_84(m, d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d)
1049.139 +# define BOOST_PP_REPEAT_1_85(m, d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d)
1049.140 +# define BOOST_PP_REPEAT_1_86(m, d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d)
1049.141 +# define BOOST_PP_REPEAT_1_87(m, d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d)
1049.142 +# define BOOST_PP_REPEAT_1_88(m, d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d)
1049.143 +# define BOOST_PP_REPEAT_1_89(m, d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d)
1049.144 +# define BOOST_PP_REPEAT_1_90(m, d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d)
1049.145 +# define BOOST_PP_REPEAT_1_91(m, d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d)
1049.146 +# define BOOST_PP_REPEAT_1_92(m, d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d)
1049.147 +# define BOOST_PP_REPEAT_1_93(m, d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d)
1049.148 +# define BOOST_PP_REPEAT_1_94(m, d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d)
1049.149 +# define BOOST_PP_REPEAT_1_95(m, d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d)
1049.150 +# define BOOST_PP_REPEAT_1_96(m, d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d)
1049.151 +# define BOOST_PP_REPEAT_1_97(m, d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d)
1049.152 +# define BOOST_PP_REPEAT_1_98(m, d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d)
1049.153 +# define BOOST_PP_REPEAT_1_99(m, d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d)
1049.154 +# define BOOST_PP_REPEAT_1_100(m, d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d)
1049.155 +# define BOOST_PP_REPEAT_1_101(m, d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d)
1049.156 +# define BOOST_PP_REPEAT_1_102(m, d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d)
1049.157 +# define BOOST_PP_REPEAT_1_103(m, d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d)
1049.158 +# define BOOST_PP_REPEAT_1_104(m, d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d)
1049.159 +# define BOOST_PP_REPEAT_1_105(m, d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d)
1049.160 +# define BOOST_PP_REPEAT_1_106(m, d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d)
1049.161 +# define BOOST_PP_REPEAT_1_107(m, d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d)
1049.162 +# define BOOST_PP_REPEAT_1_108(m, d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d)
1049.163 +# define BOOST_PP_REPEAT_1_109(m, d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d)
1049.164 +# define BOOST_PP_REPEAT_1_110(m, d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d)
1049.165 +# define BOOST_PP_REPEAT_1_111(m, d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d)
1049.166 +# define BOOST_PP_REPEAT_1_112(m, d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d)
1049.167 +# define BOOST_PP_REPEAT_1_113(m, d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d)
1049.168 +# define BOOST_PP_REPEAT_1_114(m, d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d)
1049.169 +# define BOOST_PP_REPEAT_1_115(m, d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d)
1049.170 +# define BOOST_PP_REPEAT_1_116(m, d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d)
1049.171 +# define BOOST_PP_REPEAT_1_117(m, d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d)
1049.172 +# define BOOST_PP_REPEAT_1_118(m, d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d)
1049.173 +# define BOOST_PP_REPEAT_1_119(m, d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d)
1049.174 +# define BOOST_PP_REPEAT_1_120(m, d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d)
1049.175 +# define BOOST_PP_REPEAT_1_121(m, d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d)
1049.176 +# define BOOST_PP_REPEAT_1_122(m, d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d)
1049.177 +# define BOOST_PP_REPEAT_1_123(m, d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d)
1049.178 +# define BOOST_PP_REPEAT_1_124(m, d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d)
1049.179 +# define BOOST_PP_REPEAT_1_125(m, d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d)
1049.180 +# define BOOST_PP_REPEAT_1_126(m, d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d)
1049.181 +# define BOOST_PP_REPEAT_1_127(m, d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d)
1049.182 +# define BOOST_PP_REPEAT_1_128(m, d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d)
1049.183 +# define BOOST_PP_REPEAT_1_129(m, d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d)
1049.184 +# define BOOST_PP_REPEAT_1_130(m, d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d)
1049.185 +# define BOOST_PP_REPEAT_1_131(m, d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d)
1049.186 +# define BOOST_PP_REPEAT_1_132(m, d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d)
1049.187 +# define BOOST_PP_REPEAT_1_133(m, d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d)
1049.188 +# define BOOST_PP_REPEAT_1_134(m, d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d)
1049.189 +# define BOOST_PP_REPEAT_1_135(m, d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d)
1049.190 +# define BOOST_PP_REPEAT_1_136(m, d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d)
1049.191 +# define BOOST_PP_REPEAT_1_137(m, d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d)
1049.192 +# define BOOST_PP_REPEAT_1_138(m, d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d)
1049.193 +# define BOOST_PP_REPEAT_1_139(m, d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d)
1049.194 +# define BOOST_PP_REPEAT_1_140(m, d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d)
1049.195 +# define BOOST_PP_REPEAT_1_141(m, d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d)
1049.196 +# define BOOST_PP_REPEAT_1_142(m, d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d)
1049.197 +# define BOOST_PP_REPEAT_1_143(m, d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d)
1049.198 +# define BOOST_PP_REPEAT_1_144(m, d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d)
1049.199 +# define BOOST_PP_REPEAT_1_145(m, d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d)
1049.200 +# define BOOST_PP_REPEAT_1_146(m, d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d)
1049.201 +# define BOOST_PP_REPEAT_1_147(m, d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d)
1049.202 +# define BOOST_PP_REPEAT_1_148(m, d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d)
1049.203 +# define BOOST_PP_REPEAT_1_149(m, d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d)
1049.204 +# define BOOST_PP_REPEAT_1_150(m, d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d)
1049.205 +# define BOOST_PP_REPEAT_1_151(m, d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d)
1049.206 +# define BOOST_PP_REPEAT_1_152(m, d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d)
1049.207 +# define BOOST_PP_REPEAT_1_153(m, d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d)
1049.208 +# define BOOST_PP_REPEAT_1_154(m, d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d)
1049.209 +# define BOOST_PP_REPEAT_1_155(m, d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d)
1049.210 +# define BOOST_PP_REPEAT_1_156(m, d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d)
1049.211 +# define BOOST_PP_REPEAT_1_157(m, d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d)
1049.212 +# define BOOST_PP_REPEAT_1_158(m, d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d)
1049.213 +# define BOOST_PP_REPEAT_1_159(m, d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d)
1049.214 +# define BOOST_PP_REPEAT_1_160(m, d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d)
1049.215 +# define BOOST_PP_REPEAT_1_161(m, d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d)
1049.216 +# define BOOST_PP_REPEAT_1_162(m, d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d)
1049.217 +# define BOOST_PP_REPEAT_1_163(m, d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d)
1049.218 +# define BOOST_PP_REPEAT_1_164(m, d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d)
1049.219 +# define BOOST_PP_REPEAT_1_165(m, d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d)
1049.220 +# define BOOST_PP_REPEAT_1_166(m, d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d)
1049.221 +# define BOOST_PP_REPEAT_1_167(m, d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d)
1049.222 +# define BOOST_PP_REPEAT_1_168(m, d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d)
1049.223 +# define BOOST_PP_REPEAT_1_169(m, d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d)
1049.224 +# define BOOST_PP_REPEAT_1_170(m, d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d)
1049.225 +# define BOOST_PP_REPEAT_1_171(m, d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d)
1049.226 +# define BOOST_PP_REPEAT_1_172(m, d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d)
1049.227 +# define BOOST_PP_REPEAT_1_173(m, d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d)
1049.228 +# define BOOST_PP_REPEAT_1_174(m, d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d)
1049.229 +# define BOOST_PP_REPEAT_1_175(m, d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d)
1049.230 +# define BOOST_PP_REPEAT_1_176(m, d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d)
1049.231 +# define BOOST_PP_REPEAT_1_177(m, d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d)
1049.232 +# define BOOST_PP_REPEAT_1_178(m, d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d)
1049.233 +# define BOOST_PP_REPEAT_1_179(m, d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d)
1049.234 +# define BOOST_PP_REPEAT_1_180(m, d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d)
1049.235 +# define BOOST_PP_REPEAT_1_181(m, d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d)
1049.236 +# define BOOST_PP_REPEAT_1_182(m, d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d)
1049.237 +# define BOOST_PP_REPEAT_1_183(m, d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d)
1049.238 +# define BOOST_PP_REPEAT_1_184(m, d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d)
1049.239 +# define BOOST_PP_REPEAT_1_185(m, d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d)
1049.240 +# define BOOST_PP_REPEAT_1_186(m, d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d)
1049.241 +# define BOOST_PP_REPEAT_1_187(m, d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d)
1049.242 +# define BOOST_PP_REPEAT_1_188(m, d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d)
1049.243 +# define BOOST_PP_REPEAT_1_189(m, d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d)
1049.244 +# define BOOST_PP_REPEAT_1_190(m, d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d)
1049.245 +# define BOOST_PP_REPEAT_1_191(m, d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d)
1049.246 +# define BOOST_PP_REPEAT_1_192(m, d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d)
1049.247 +# define BOOST_PP_REPEAT_1_193(m, d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d)
1049.248 +# define BOOST_PP_REPEAT_1_194(m, d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d)
1049.249 +# define BOOST_PP_REPEAT_1_195(m, d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d)
1049.250 +# define BOOST_PP_REPEAT_1_196(m, d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d)
1049.251 +# define BOOST_PP_REPEAT_1_197(m, d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d)
1049.252 +# define BOOST_PP_REPEAT_1_198(m, d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d)
1049.253 +# define BOOST_PP_REPEAT_1_199(m, d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d)
1049.254 +# define BOOST_PP_REPEAT_1_200(m, d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d)
1049.255 +# define BOOST_PP_REPEAT_1_201(m, d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d)
1049.256 +# define BOOST_PP_REPEAT_1_202(m, d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d)
1049.257 +# define BOOST_PP_REPEAT_1_203(m, d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d)
1049.258 +# define BOOST_PP_REPEAT_1_204(m, d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d)
1049.259 +# define BOOST_PP_REPEAT_1_205(m, d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d)
1049.260 +# define BOOST_PP_REPEAT_1_206(m, d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d)
1049.261 +# define BOOST_PP_REPEAT_1_207(m, d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d)
1049.262 +# define BOOST_PP_REPEAT_1_208(m, d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d)
1049.263 +# define BOOST_PP_REPEAT_1_209(m, d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d)
1049.264 +# define BOOST_PP_REPEAT_1_210(m, d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d)
1049.265 +# define BOOST_PP_REPEAT_1_211(m, d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d)
1049.266 +# define BOOST_PP_REPEAT_1_212(m, d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d)
1049.267 +# define BOOST_PP_REPEAT_1_213(m, d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d)
1049.268 +# define BOOST_PP_REPEAT_1_214(m, d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d)
1049.269 +# define BOOST_PP_REPEAT_1_215(m, d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d)
1049.270 +# define BOOST_PP_REPEAT_1_216(m, d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d)
1049.271 +# define BOOST_PP_REPEAT_1_217(m, d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d)
1049.272 +# define BOOST_PP_REPEAT_1_218(m, d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d)
1049.273 +# define BOOST_PP_REPEAT_1_219(m, d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d)
1049.274 +# define BOOST_PP_REPEAT_1_220(m, d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d)
1049.275 +# define BOOST_PP_REPEAT_1_221(m, d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d)
1049.276 +# define BOOST_PP_REPEAT_1_222(m, d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d)
1049.277 +# define BOOST_PP_REPEAT_1_223(m, d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d)
1049.278 +# define BOOST_PP_REPEAT_1_224(m, d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d)
1049.279 +# define BOOST_PP_REPEAT_1_225(m, d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d)
1049.280 +# define BOOST_PP_REPEAT_1_226(m, d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d)
1049.281 +# define BOOST_PP_REPEAT_1_227(m, d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d)
1049.282 +# define BOOST_PP_REPEAT_1_228(m, d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d)
1049.283 +# define BOOST_PP_REPEAT_1_229(m, d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d)
1049.284 +# define BOOST_PP_REPEAT_1_230(m, d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d)
1049.285 +# define BOOST_PP_REPEAT_1_231(m, d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d)
1049.286 +# define BOOST_PP_REPEAT_1_232(m, d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d)
1049.287 +# define BOOST_PP_REPEAT_1_233(m, d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d)
1049.288 +# define BOOST_PP_REPEAT_1_234(m, d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d)
1049.289 +# define BOOST_PP_REPEAT_1_235(m, d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d)
1049.290 +# define BOOST_PP_REPEAT_1_236(m, d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d)
1049.291 +# define BOOST_PP_REPEAT_1_237(m, d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d)
1049.292 +# define BOOST_PP_REPEAT_1_238(m, d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d)
1049.293 +# define BOOST_PP_REPEAT_1_239(m, d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d)
1049.294 +# define BOOST_PP_REPEAT_1_240(m, d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d)
1049.295 +# define BOOST_PP_REPEAT_1_241(m, d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d)
1049.296 +# define BOOST_PP_REPEAT_1_242(m, d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d)
1049.297 +# define BOOST_PP_REPEAT_1_243(m, d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d)
1049.298 +# define BOOST_PP_REPEAT_1_244(m, d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d)
1049.299 +# define BOOST_PP_REPEAT_1_245(m, d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d)
1049.300 +# define BOOST_PP_REPEAT_1_246(m, d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d)
1049.301 +# define BOOST_PP_REPEAT_1_247(m, d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d)
1049.302 +# define BOOST_PP_REPEAT_1_248(m, d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d)
1049.303 +# define BOOST_PP_REPEAT_1_249(m, d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d)
1049.304 +# define BOOST_PP_REPEAT_1_250(m, d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d)
1049.305 +# define BOOST_PP_REPEAT_1_251(m, d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d)
1049.306 +# define BOOST_PP_REPEAT_1_252(m, d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d)
1049.307 +# define BOOST_PP_REPEAT_1_253(m, d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d)
1049.308 +# define BOOST_PP_REPEAT_1_254(m, d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d)
1049.309 +# define BOOST_PP_REPEAT_1_255(m, d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d)
1049.310 +# define BOOST_PP_REPEAT_1_256(m, d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d)
1049.311 +#
1049.312 +# define BOOST_PP_REPEAT_2_0(m, d)
1049.313 +# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d)
1049.314 +# define BOOST_PP_REPEAT_2_2(m, d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d)
1049.315 +# define BOOST_PP_REPEAT_2_3(m, d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d)
1049.316 +# define BOOST_PP_REPEAT_2_4(m, d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d)
1049.317 +# define BOOST_PP_REPEAT_2_5(m, d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d)
1049.318 +# define BOOST_PP_REPEAT_2_6(m, d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d)
1049.319 +# define BOOST_PP_REPEAT_2_7(m, d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d)
1049.320 +# define BOOST_PP_REPEAT_2_8(m, d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d)
1049.321 +# define BOOST_PP_REPEAT_2_9(m, d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d)
1049.322 +# define BOOST_PP_REPEAT_2_10(m, d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d)
1049.323 +# define BOOST_PP_REPEAT_2_11(m, d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d)
1049.324 +# define BOOST_PP_REPEAT_2_12(m, d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d)
1049.325 +# define BOOST_PP_REPEAT_2_13(m, d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d)
1049.326 +# define BOOST_PP_REPEAT_2_14(m, d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d)
1049.327 +# define BOOST_PP_REPEAT_2_15(m, d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d)
1049.328 +# define BOOST_PP_REPEAT_2_16(m, d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d)
1049.329 +# define BOOST_PP_REPEAT_2_17(m, d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d)
1049.330 +# define BOOST_PP_REPEAT_2_18(m, d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d)
1049.331 +# define BOOST_PP_REPEAT_2_19(m, d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d)
1049.332 +# define BOOST_PP_REPEAT_2_20(m, d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d)
1049.333 +# define BOOST_PP_REPEAT_2_21(m, d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d)
1049.334 +# define BOOST_PP_REPEAT_2_22(m, d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d)
1049.335 +# define BOOST_PP_REPEAT_2_23(m, d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d)
1049.336 +# define BOOST_PP_REPEAT_2_24(m, d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d)
1049.337 +# define BOOST_PP_REPEAT_2_25(m, d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d)
1049.338 +# define BOOST_PP_REPEAT_2_26(m, d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d)
1049.339 +# define BOOST_PP_REPEAT_2_27(m, d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d)
1049.340 +# define BOOST_PP_REPEAT_2_28(m, d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d)
1049.341 +# define BOOST_PP_REPEAT_2_29(m, d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d)
1049.342 +# define BOOST_PP_REPEAT_2_30(m, d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d)
1049.343 +# define BOOST_PP_REPEAT_2_31(m, d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d)
1049.344 +# define BOOST_PP_REPEAT_2_32(m, d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d)
1049.345 +# define BOOST_PP_REPEAT_2_33(m, d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d)
1049.346 +# define BOOST_PP_REPEAT_2_34(m, d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d)
1049.347 +# define BOOST_PP_REPEAT_2_35(m, d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d)
1049.348 +# define BOOST_PP_REPEAT_2_36(m, d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d)
1049.349 +# define BOOST_PP_REPEAT_2_37(m, d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d)
1049.350 +# define BOOST_PP_REPEAT_2_38(m, d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d)
1049.351 +# define BOOST_PP_REPEAT_2_39(m, d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d)
1049.352 +# define BOOST_PP_REPEAT_2_40(m, d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d)
1049.353 +# define BOOST_PP_REPEAT_2_41(m, d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d)
1049.354 +# define BOOST_PP_REPEAT_2_42(m, d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d)
1049.355 +# define BOOST_PP_REPEAT_2_43(m, d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d)
1049.356 +# define BOOST_PP_REPEAT_2_44(m, d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d)
1049.357 +# define BOOST_PP_REPEAT_2_45(m, d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d)
1049.358 +# define BOOST_PP_REPEAT_2_46(m, d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d)
1049.359 +# define BOOST_PP_REPEAT_2_47(m, d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d)
1049.360 +# define BOOST_PP_REPEAT_2_48(m, d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d)
1049.361 +# define BOOST_PP_REPEAT_2_49(m, d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d)
1049.362 +# define BOOST_PP_REPEAT_2_50(m, d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d)
1049.363 +# define BOOST_PP_REPEAT_2_51(m, d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d)
1049.364 +# define BOOST_PP_REPEAT_2_52(m, d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d)
1049.365 +# define BOOST_PP_REPEAT_2_53(m, d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d)
1049.366 +# define BOOST_PP_REPEAT_2_54(m, d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d)
1049.367 +# define BOOST_PP_REPEAT_2_55(m, d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d)
1049.368 +# define BOOST_PP_REPEAT_2_56(m, d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d)
1049.369 +# define BOOST_PP_REPEAT_2_57(m, d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d)
1049.370 +# define BOOST_PP_REPEAT_2_58(m, d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d)
1049.371 +# define BOOST_PP_REPEAT_2_59(m, d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d)
1049.372 +# define BOOST_PP_REPEAT_2_60(m, d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d)
1049.373 +# define BOOST_PP_REPEAT_2_61(m, d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d)
1049.374 +# define BOOST_PP_REPEAT_2_62(m, d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d)
1049.375 +# define BOOST_PP_REPEAT_2_63(m, d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d)
1049.376 +# define BOOST_PP_REPEAT_2_64(m, d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d)
1049.377 +# define BOOST_PP_REPEAT_2_65(m, d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d)
1049.378 +# define BOOST_PP_REPEAT_2_66(m, d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d)
1049.379 +# define BOOST_PP_REPEAT_2_67(m, d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d)
1049.380 +# define BOOST_PP_REPEAT_2_68(m, d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d)
1049.381 +# define BOOST_PP_REPEAT_2_69(m, d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d)
1049.382 +# define BOOST_PP_REPEAT_2_70(m, d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d)
1049.383 +# define BOOST_PP_REPEAT_2_71(m, d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d)
1049.384 +# define BOOST_PP_REPEAT_2_72(m, d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d)
1049.385 +# define BOOST_PP_REPEAT_2_73(m, d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d)
1049.386 +# define BOOST_PP_REPEAT_2_74(m, d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d)
1049.387 +# define BOOST_PP_REPEAT_2_75(m, d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d)
1049.388 +# define BOOST_PP_REPEAT_2_76(m, d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d)
1049.389 +# define BOOST_PP_REPEAT_2_77(m, d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d)
1049.390 +# define BOOST_PP_REPEAT_2_78(m, d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d)
1049.391 +# define BOOST_PP_REPEAT_2_79(m, d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d)
1049.392 +# define BOOST_PP_REPEAT_2_80(m, d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d)
1049.393 +# define BOOST_PP_REPEAT_2_81(m, d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d)
1049.394 +# define BOOST_PP_REPEAT_2_82(m, d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d)
1049.395 +# define BOOST_PP_REPEAT_2_83(m, d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d)
1049.396 +# define BOOST_PP_REPEAT_2_84(m, d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d)
1049.397 +# define BOOST_PP_REPEAT_2_85(m, d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d)
1049.398 +# define BOOST_PP_REPEAT_2_86(m, d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d)
1049.399 +# define BOOST_PP_REPEAT_2_87(m, d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d)
1049.400 +# define BOOST_PP_REPEAT_2_88(m, d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d)
1049.401 +# define BOOST_PP_REPEAT_2_89(m, d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d)
1049.402 +# define BOOST_PP_REPEAT_2_90(m, d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d)
1049.403 +# define BOOST_PP_REPEAT_2_91(m, d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d)
1049.404 +# define BOOST_PP_REPEAT_2_92(m, d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d)
1049.405 +# define BOOST_PP_REPEAT_2_93(m, d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d)
1049.406 +# define BOOST_PP_REPEAT_2_94(m, d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d)
1049.407 +# define BOOST_PP_REPEAT_2_95(m, d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d)
1049.408 +# define BOOST_PP_REPEAT_2_96(m, d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d)
1049.409 +# define BOOST_PP_REPEAT_2_97(m, d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d)
1049.410 +# define BOOST_PP_REPEAT_2_98(m, d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d)
1049.411 +# define BOOST_PP_REPEAT_2_99(m, d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d)
1049.412 +# define BOOST_PP_REPEAT_2_100(m, d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d)
1049.413 +# define BOOST_PP_REPEAT_2_101(m, d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d)
1049.414 +# define BOOST_PP_REPEAT_2_102(m, d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d)
1049.415 +# define BOOST_PP_REPEAT_2_103(m, d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d)
1049.416 +# define BOOST_PP_REPEAT_2_104(m, d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d)
1049.417 +# define BOOST_PP_REPEAT_2_105(m, d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d)
1049.418 +# define BOOST_PP_REPEAT_2_106(m, d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d)
1049.419 +# define BOOST_PP_REPEAT_2_107(m, d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d)
1049.420 +# define BOOST_PP_REPEAT_2_108(m, d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d)
1049.421 +# define BOOST_PP_REPEAT_2_109(m, d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d)
1049.422 +# define BOOST_PP_REPEAT_2_110(m, d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d)
1049.423 +# define BOOST_PP_REPEAT_2_111(m, d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d)
1049.424 +# define BOOST_PP_REPEAT_2_112(m, d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d)
1049.425 +# define BOOST_PP_REPEAT_2_113(m, d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d)
1049.426 +# define BOOST_PP_REPEAT_2_114(m, d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d)
1049.427 +# define BOOST_PP_REPEAT_2_115(m, d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d)
1049.428 +# define BOOST_PP_REPEAT_2_116(m, d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d)
1049.429 +# define BOOST_PP_REPEAT_2_117(m, d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d)
1049.430 +# define BOOST_PP_REPEAT_2_118(m, d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d)
1049.431 +# define BOOST_PP_REPEAT_2_119(m, d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d)
1049.432 +# define BOOST_PP_REPEAT_2_120(m, d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d)
1049.433 +# define BOOST_PP_REPEAT_2_121(m, d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d)
1049.434 +# define BOOST_PP_REPEAT_2_122(m, d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d)
1049.435 +# define BOOST_PP_REPEAT_2_123(m, d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d)
1049.436 +# define BOOST_PP_REPEAT_2_124(m, d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d)
1049.437 +# define BOOST_PP_REPEAT_2_125(m, d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d)
1049.438 +# define BOOST_PP_REPEAT_2_126(m, d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d)
1049.439 +# define BOOST_PP_REPEAT_2_127(m, d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d)
1049.440 +# define BOOST_PP_REPEAT_2_128(m, d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d)
1049.441 +# define BOOST_PP_REPEAT_2_129(m, d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d)
1049.442 +# define BOOST_PP_REPEAT_2_130(m, d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d)
1049.443 +# define BOOST_PP_REPEAT_2_131(m, d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d)
1049.444 +# define BOOST_PP_REPEAT_2_132(m, d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d)
1049.445 +# define BOOST_PP_REPEAT_2_133(m, d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d)
1049.446 +# define BOOST_PP_REPEAT_2_134(m, d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d)
1049.447 +# define BOOST_PP_REPEAT_2_135(m, d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d)
1049.448 +# define BOOST_PP_REPEAT_2_136(m, d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d)
1049.449 +# define BOOST_PP_REPEAT_2_137(m, d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d)
1049.450 +# define BOOST_PP_REPEAT_2_138(m, d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d)
1049.451 +# define BOOST_PP_REPEAT_2_139(m, d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d)
1049.452 +# define BOOST_PP_REPEAT_2_140(m, d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d)
1049.453 +# define BOOST_PP_REPEAT_2_141(m, d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d)
1049.454 +# define BOOST_PP_REPEAT_2_142(m, d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d)
1049.455 +# define BOOST_PP_REPEAT_2_143(m, d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d)
1049.456 +# define BOOST_PP_REPEAT_2_144(m, d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d)
1049.457 +# define BOOST_PP_REPEAT_2_145(m, d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d)
1049.458 +# define BOOST_PP_REPEAT_2_146(m, d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d)
1049.459 +# define BOOST_PP_REPEAT_2_147(m, d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d)
1049.460 +# define BOOST_PP_REPEAT_2_148(m, d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d)
1049.461 +# define BOOST_PP_REPEAT_2_149(m, d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d)
1049.462 +# define BOOST_PP_REPEAT_2_150(m, d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d)
1049.463 +# define BOOST_PP_REPEAT_2_151(m, d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d)
1049.464 +# define BOOST_PP_REPEAT_2_152(m, d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d)
1049.465 +# define BOOST_PP_REPEAT_2_153(m, d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d)
1049.466 +# define BOOST_PP_REPEAT_2_154(m, d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d)
1049.467 +# define BOOST_PP_REPEAT_2_155(m, d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d)
1049.468 +# define BOOST_PP_REPEAT_2_156(m, d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d)
1049.469 +# define BOOST_PP_REPEAT_2_157(m, d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d)
1049.470 +# define BOOST_PP_REPEAT_2_158(m, d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d)
1049.471 +# define BOOST_PP_REPEAT_2_159(m, d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d)
1049.472 +# define BOOST_PP_REPEAT_2_160(m, d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d)
1049.473 +# define BOOST_PP_REPEAT_2_161(m, d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d)
1049.474 +# define BOOST_PP_REPEAT_2_162(m, d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d)
1049.475 +# define BOOST_PP_REPEAT_2_163(m, d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d)
1049.476 +# define BOOST_PP_REPEAT_2_164(m, d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d)
1049.477 +# define BOOST_PP_REPEAT_2_165(m, d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d)
1049.478 +# define BOOST_PP_REPEAT_2_166(m, d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d)
1049.479 +# define BOOST_PP_REPEAT_2_167(m, d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d)
1049.480 +# define BOOST_PP_REPEAT_2_168(m, d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d)
1049.481 +# define BOOST_PP_REPEAT_2_169(m, d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d)
1049.482 +# define BOOST_PP_REPEAT_2_170(m, d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d)
1049.483 +# define BOOST_PP_REPEAT_2_171(m, d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d)
1049.484 +# define BOOST_PP_REPEAT_2_172(m, d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d)
1049.485 +# define BOOST_PP_REPEAT_2_173(m, d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d)
1049.486 +# define BOOST_PP_REPEAT_2_174(m, d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d)
1049.487 +# define BOOST_PP_REPEAT_2_175(m, d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d)
1049.488 +# define BOOST_PP_REPEAT_2_176(m, d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d)
1049.489 +# define BOOST_PP_REPEAT_2_177(m, d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d)
1049.490 +# define BOOST_PP_REPEAT_2_178(m, d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d)
1049.491 +# define BOOST_PP_REPEAT_2_179(m, d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d)
1049.492 +# define BOOST_PP_REPEAT_2_180(m, d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d)
1049.493 +# define BOOST_PP_REPEAT_2_181(m, d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d)
1049.494 +# define BOOST_PP_REPEAT_2_182(m, d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d)
1049.495 +# define BOOST_PP_REPEAT_2_183(m, d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d)
1049.496 +# define BOOST_PP_REPEAT_2_184(m, d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d)
1049.497 +# define BOOST_PP_REPEAT_2_185(m, d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d)
1049.498 +# define BOOST_PP_REPEAT_2_186(m, d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d)
1049.499 +# define BOOST_PP_REPEAT_2_187(m, d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d)
1049.500 +# define BOOST_PP_REPEAT_2_188(m, d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d)
1049.501 +# define BOOST_PP_REPEAT_2_189(m, d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d)
1049.502 +# define BOOST_PP_REPEAT_2_190(m, d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d)
1049.503 +# define BOOST_PP_REPEAT_2_191(m, d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d)
1049.504 +# define BOOST_PP_REPEAT_2_192(m, d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d)
1049.505 +# define BOOST_PP_REPEAT_2_193(m, d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d)
1049.506 +# define BOOST_PP_REPEAT_2_194(m, d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d)
1049.507 +# define BOOST_PP_REPEAT_2_195(m, d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d)
1049.508 +# define BOOST_PP_REPEAT_2_196(m, d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d)
1049.509 +# define BOOST_PP_REPEAT_2_197(m, d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d)
1049.510 +# define BOOST_PP_REPEAT_2_198(m, d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d)
1049.511 +# define BOOST_PP_REPEAT_2_199(m, d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d)
1049.512 +# define BOOST_PP_REPEAT_2_200(m, d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d)
1049.513 +# define BOOST_PP_REPEAT_2_201(m, d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d)
1049.514 +# define BOOST_PP_REPEAT_2_202(m, d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d)
1049.515 +# define BOOST_PP_REPEAT_2_203(m, d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d)
1049.516 +# define BOOST_PP_REPEAT_2_204(m, d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d)
1049.517 +# define BOOST_PP_REPEAT_2_205(m, d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d)
1049.518 +# define BOOST_PP_REPEAT_2_206(m, d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d)
1049.519 +# define BOOST_PP_REPEAT_2_207(m, d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d)
1049.520 +# define BOOST_PP_REPEAT_2_208(m, d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d)
1049.521 +# define BOOST_PP_REPEAT_2_209(m, d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d)
1049.522 +# define BOOST_PP_REPEAT_2_210(m, d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d)
1049.523 +# define BOOST_PP_REPEAT_2_211(m, d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d)
1049.524 +# define BOOST_PP_REPEAT_2_212(m, d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d)
1049.525 +# define BOOST_PP_REPEAT_2_213(m, d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d)
1049.526 +# define BOOST_PP_REPEAT_2_214(m, d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d)
1049.527 +# define BOOST_PP_REPEAT_2_215(m, d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d)
1049.528 +# define BOOST_PP_REPEAT_2_216(m, d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d)
1049.529 +# define BOOST_PP_REPEAT_2_217(m, d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d)
1049.530 +# define BOOST_PP_REPEAT_2_218(m, d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d)
1049.531 +# define BOOST_PP_REPEAT_2_219(m, d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d)
1049.532 +# define BOOST_PP_REPEAT_2_220(m, d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d)
1049.533 +# define BOOST_PP_REPEAT_2_221(m, d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d)
1049.534 +# define BOOST_PP_REPEAT_2_222(m, d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d)
1049.535 +# define BOOST_PP_REPEAT_2_223(m, d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d)
1049.536 +# define BOOST_PP_REPEAT_2_224(m, d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d)
1049.537 +# define BOOST_PP_REPEAT_2_225(m, d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d)
1049.538 +# define BOOST_PP_REPEAT_2_226(m, d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d)
1049.539 +# define BOOST_PP_REPEAT_2_227(m, d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d)
1049.540 +# define BOOST_PP_REPEAT_2_228(m, d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d)
1049.541 +# define BOOST_PP_REPEAT_2_229(m, d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d)
1049.542 +# define BOOST_PP_REPEAT_2_230(m, d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d)
1049.543 +# define BOOST_PP_REPEAT_2_231(m, d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d)
1049.544 +# define BOOST_PP_REPEAT_2_232(m, d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d)
1049.545 +# define BOOST_PP_REPEAT_2_233(m, d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d)
1049.546 +# define BOOST_PP_REPEAT_2_234(m, d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d)
1049.547 +# define BOOST_PP_REPEAT_2_235(m, d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d)
1049.548 +# define BOOST_PP_REPEAT_2_236(m, d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d)
1049.549 +# define BOOST_PP_REPEAT_2_237(m, d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d)
1049.550 +# define BOOST_PP_REPEAT_2_238(m, d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d)
1049.551 +# define BOOST_PP_REPEAT_2_239(m, d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d)
1049.552 +# define BOOST_PP_REPEAT_2_240(m, d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d)
1049.553 +# define BOOST_PP_REPEAT_2_241(m, d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d)
1049.554 +# define BOOST_PP_REPEAT_2_242(m, d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d)
1049.555 +# define BOOST_PP_REPEAT_2_243(m, d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d)
1049.556 +# define BOOST_PP_REPEAT_2_244(m, d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d)
1049.557 +# define BOOST_PP_REPEAT_2_245(m, d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d)
1049.558 +# define BOOST_PP_REPEAT_2_246(m, d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d)
1049.559 +# define BOOST_PP_REPEAT_2_247(m, d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d)
1049.560 +# define BOOST_PP_REPEAT_2_248(m, d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d)
1049.561 +# define BOOST_PP_REPEAT_2_249(m, d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d)
1049.562 +# define BOOST_PP_REPEAT_2_250(m, d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d)
1049.563 +# define BOOST_PP_REPEAT_2_251(m, d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d)
1049.564 +# define BOOST_PP_REPEAT_2_252(m, d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d)
1049.565 +# define BOOST_PP_REPEAT_2_253(m, d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d)
1049.566 +# define BOOST_PP_REPEAT_2_254(m, d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d)
1049.567 +# define BOOST_PP_REPEAT_2_255(m, d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d)
1049.568 +# define BOOST_PP_REPEAT_2_256(m, d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d)
1049.569 +#
1049.570 +# define BOOST_PP_REPEAT_3_0(m, d)
1049.571 +# define BOOST_PP_REPEAT_3_1(m, d) m(4, 0, d)
1049.572 +# define BOOST_PP_REPEAT_3_2(m, d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d)
1049.573 +# define BOOST_PP_REPEAT_3_3(m, d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d)
1049.574 +# define BOOST_PP_REPEAT_3_4(m, d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d)
1049.575 +# define BOOST_PP_REPEAT_3_5(m, d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d)
1049.576 +# define BOOST_PP_REPEAT_3_6(m, d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d)
1049.577 +# define BOOST_PP_REPEAT_3_7(m, d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d)
1049.578 +# define BOOST_PP_REPEAT_3_8(m, d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d)
1049.579 +# define BOOST_PP_REPEAT_3_9(m, d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d)
1049.580 +# define BOOST_PP_REPEAT_3_10(m, d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d)
1049.581 +# define BOOST_PP_REPEAT_3_11(m, d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d)
1049.582 +# define BOOST_PP_REPEAT_3_12(m, d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d)
1049.583 +# define BOOST_PP_REPEAT_3_13(m, d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d)
1049.584 +# define BOOST_PP_REPEAT_3_14(m, d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d)
1049.585 +# define BOOST_PP_REPEAT_3_15(m, d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d)
1049.586 +# define BOOST_PP_REPEAT_3_16(m, d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d)
1049.587 +# define BOOST_PP_REPEAT_3_17(m, d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d)
1049.588 +# define BOOST_PP_REPEAT_3_18(m, d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d)
1049.589 +# define BOOST_PP_REPEAT_3_19(m, d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d)
1049.590 +# define BOOST_PP_REPEAT_3_20(m, d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d)
1049.591 +# define BOOST_PP_REPEAT_3_21(m, d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d)
1049.592 +# define BOOST_PP_REPEAT_3_22(m, d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d)
1049.593 +# define BOOST_PP_REPEAT_3_23(m, d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d)
1049.594 +# define BOOST_PP_REPEAT_3_24(m, d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d)
1049.595 +# define BOOST_PP_REPEAT_3_25(m, d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d)
1049.596 +# define BOOST_PP_REPEAT_3_26(m, d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d)
1049.597 +# define BOOST_PP_REPEAT_3_27(m, d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d)
1049.598 +# define BOOST_PP_REPEAT_3_28(m, d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d)
1049.599 +# define BOOST_PP_REPEAT_3_29(m, d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d)
1049.600 +# define BOOST_PP_REPEAT_3_30(m, d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d)
1049.601 +# define BOOST_PP_REPEAT_3_31(m, d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d)
1049.602 +# define BOOST_PP_REPEAT_3_32(m, d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d)
1049.603 +# define BOOST_PP_REPEAT_3_33(m, d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d)
1049.604 +# define BOOST_PP_REPEAT_3_34(m, d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d)
1049.605 +# define BOOST_PP_REPEAT_3_35(m, d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d)
1049.606 +# define BOOST_PP_REPEAT_3_36(m, d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d)
1049.607 +# define BOOST_PP_REPEAT_3_37(m, d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d)
1049.608 +# define BOOST_PP_REPEAT_3_38(m, d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d)
1049.609 +# define BOOST_PP_REPEAT_3_39(m, d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d)
1049.610 +# define BOOST_PP_REPEAT_3_40(m, d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d)
1049.611 +# define BOOST_PP_REPEAT_3_41(m, d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d)
1049.612 +# define BOOST_PP_REPEAT_3_42(m, d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d)
1049.613 +# define BOOST_PP_REPEAT_3_43(m, d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d)
1049.614 +# define BOOST_PP_REPEAT_3_44(m, d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d)
1049.615 +# define BOOST_PP_REPEAT_3_45(m, d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d)
1049.616 +# define BOOST_PP_REPEAT_3_46(m, d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d)
1049.617 +# define BOOST_PP_REPEAT_3_47(m, d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d)
1049.618 +# define BOOST_PP_REPEAT_3_48(m, d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d)
1049.619 +# define BOOST_PP_REPEAT_3_49(m, d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d)
1049.620 +# define BOOST_PP_REPEAT_3_50(m, d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d)
1049.621 +# define BOOST_PP_REPEAT_3_51(m, d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d)
1049.622 +# define BOOST_PP_REPEAT_3_52(m, d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d)
1049.623 +# define BOOST_PP_REPEAT_3_53(m, d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d)
1049.624 +# define BOOST_PP_REPEAT_3_54(m, d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d)
1049.625 +# define BOOST_PP_REPEAT_3_55(m, d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d)
1049.626 +# define BOOST_PP_REPEAT_3_56(m, d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d)
1049.627 +# define BOOST_PP_REPEAT_3_57(m, d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d)
1049.628 +# define BOOST_PP_REPEAT_3_58(m, d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d)
1049.629 +# define BOOST_PP_REPEAT_3_59(m, d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d)
1049.630 +# define BOOST_PP_REPEAT_3_60(m, d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d)
1049.631 +# define BOOST_PP_REPEAT_3_61(m, d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d)
1049.632 +# define BOOST_PP_REPEAT_3_62(m, d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d)
1049.633 +# define BOOST_PP_REPEAT_3_63(m, d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d)
1049.634 +# define BOOST_PP_REPEAT_3_64(m, d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d)
1049.635 +# define BOOST_PP_REPEAT_3_65(m, d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d)
1049.636 +# define BOOST_PP_REPEAT_3_66(m, d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d)
1049.637 +# define BOOST_PP_REPEAT_3_67(m, d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d)
1049.638 +# define BOOST_PP_REPEAT_3_68(m, d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d)
1049.639 +# define BOOST_PP_REPEAT_3_69(m, d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d)
1049.640 +# define BOOST_PP_REPEAT_3_70(m, d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d)
1049.641 +# define BOOST_PP_REPEAT_3_71(m, d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d)
1049.642 +# define BOOST_PP_REPEAT_3_72(m, d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d)
1049.643 +# define BOOST_PP_REPEAT_3_73(m, d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d)
1049.644 +# define BOOST_PP_REPEAT_3_74(m, d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d)
1049.645 +# define BOOST_PP_REPEAT_3_75(m, d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d)
1049.646 +# define BOOST_PP_REPEAT_3_76(m, d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d)
1049.647 +# define BOOST_PP_REPEAT_3_77(m, d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d)
1049.648 +# define BOOST_PP_REPEAT_3_78(m, d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d)
1049.649 +# define BOOST_PP_REPEAT_3_79(m, d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d)
1049.650 +# define BOOST_PP_REPEAT_3_80(m, d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d)
1049.651 +# define BOOST_PP_REPEAT_3_81(m, d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d)
1049.652 +# define BOOST_PP_REPEAT_3_82(m, d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d)
1049.653 +# define BOOST_PP_REPEAT_3_83(m, d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d)
1049.654 +# define BOOST_PP_REPEAT_3_84(m, d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d)
1049.655 +# define BOOST_PP_REPEAT_3_85(m, d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d)
1049.656 +# define BOOST_PP_REPEAT_3_86(m, d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d)
1049.657 +# define BOOST_PP_REPEAT_3_87(m, d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d)
1049.658 +# define BOOST_PP_REPEAT_3_88(m, d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d)
1049.659 +# define BOOST_PP_REPEAT_3_89(m, d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d)
1049.660 +# define BOOST_PP_REPEAT_3_90(m, d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d)
1049.661 +# define BOOST_PP_REPEAT_3_91(m, d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d)
1049.662 +# define BOOST_PP_REPEAT_3_92(m, d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d)
1049.663 +# define BOOST_PP_REPEAT_3_93(m, d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d)
1049.664 +# define BOOST_PP_REPEAT_3_94(m, d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d)
1049.665 +# define BOOST_PP_REPEAT_3_95(m, d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d)
1049.666 +# define BOOST_PP_REPEAT_3_96(m, d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d)
1049.667 +# define BOOST_PP_REPEAT_3_97(m, d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d)
1049.668 +# define BOOST_PP_REPEAT_3_98(m, d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d)
1049.669 +# define BOOST_PP_REPEAT_3_99(m, d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d)
1049.670 +# define BOOST_PP_REPEAT_3_100(m, d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d)
1049.671 +# define BOOST_PP_REPEAT_3_101(m, d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d)
1049.672 +# define BOOST_PP_REPEAT_3_102(m, d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d)
1049.673 +# define BOOST_PP_REPEAT_3_103(m, d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d)
1049.674 +# define BOOST_PP_REPEAT_3_104(m, d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d)
1049.675 +# define BOOST_PP_REPEAT_3_105(m, d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d)
1049.676 +# define BOOST_PP_REPEAT_3_106(m, d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d)
1049.677 +# define BOOST_PP_REPEAT_3_107(m, d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d)
1049.678 +# define BOOST_PP_REPEAT_3_108(m, d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d)
1049.679 +# define BOOST_PP_REPEAT_3_109(m, d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d)
1049.680 +# define BOOST_PP_REPEAT_3_110(m, d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d)
1049.681 +# define BOOST_PP_REPEAT_3_111(m, d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d)
1049.682 +# define BOOST_PP_REPEAT_3_112(m, d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d)
1049.683 +# define BOOST_PP_REPEAT_3_113(m, d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d)
1049.684 +# define BOOST_PP_REPEAT_3_114(m, d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d)
1049.685 +# define BOOST_PP_REPEAT_3_115(m, d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d)
1049.686 +# define BOOST_PP_REPEAT_3_116(m, d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d)
1049.687 +# define BOOST_PP_REPEAT_3_117(m, d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d)
1049.688 +# define BOOST_PP_REPEAT_3_118(m, d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d)
1049.689 +# define BOOST_PP_REPEAT_3_119(m, d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d)
1049.690 +# define BOOST_PP_REPEAT_3_120(m, d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d)
1049.691 +# define BOOST_PP_REPEAT_3_121(m, d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d)
1049.692 +# define BOOST_PP_REPEAT_3_122(m, d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d)
1049.693 +# define BOOST_PP_REPEAT_3_123(m, d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d)
1049.694 +# define BOOST_PP_REPEAT_3_124(m, d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d)
1049.695 +# define BOOST_PP_REPEAT_3_125(m, d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d)
1049.696 +# define BOOST_PP_REPEAT_3_126(m, d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d)
1049.697 +# define BOOST_PP_REPEAT_3_127(m, d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d)
1049.698 +# define BOOST_PP_REPEAT_3_128(m, d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d)
1049.699 +# define BOOST_PP_REPEAT_3_129(m, d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d)
1049.700 +# define BOOST_PP_REPEAT_3_130(m, d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d)
1049.701 +# define BOOST_PP_REPEAT_3_131(m, d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d)
1049.702 +# define BOOST_PP_REPEAT_3_132(m, d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d)
1049.703 +# define BOOST_PP_REPEAT_3_133(m, d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d)
1049.704 +# define BOOST_PP_REPEAT_3_134(m, d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d)
1049.705 +# define BOOST_PP_REPEAT_3_135(m, d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d)
1049.706 +# define BOOST_PP_REPEAT_3_136(m, d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d)
1049.707 +# define BOOST_PP_REPEAT_3_137(m, d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d)
1049.708 +# define BOOST_PP_REPEAT_3_138(m, d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d)
1049.709 +# define BOOST_PP_REPEAT_3_139(m, d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d)
1049.710 +# define BOOST_PP_REPEAT_3_140(m, d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d)
1049.711 +# define BOOST_PP_REPEAT_3_141(m, d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d)
1049.712 +# define BOOST_PP_REPEAT_3_142(m, d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d)
1049.713 +# define BOOST_PP_REPEAT_3_143(m, d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d)
1049.714 +# define BOOST_PP_REPEAT_3_144(m, d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d)
1049.715 +# define BOOST_PP_REPEAT_3_145(m, d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d)
1049.716 +# define BOOST_PP_REPEAT_3_146(m, d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d)
1049.717 +# define BOOST_PP_REPEAT_3_147(m, d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d)
1049.718 +# define BOOST_PP_REPEAT_3_148(m, d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d)
1049.719 +# define BOOST_PP_REPEAT_3_149(m, d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d)
1049.720 +# define BOOST_PP_REPEAT_3_150(m, d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d)
1049.721 +# define BOOST_PP_REPEAT_3_151(m, d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d)
1049.722 +# define BOOST_PP_REPEAT_3_152(m, d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d)
1049.723 +# define BOOST_PP_REPEAT_3_153(m, d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d)
1049.724 +# define BOOST_PP_REPEAT_3_154(m, d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d)
1049.725 +# define BOOST_PP_REPEAT_3_155(m, d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d)
1049.726 +# define BOOST_PP_REPEAT_3_156(m, d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d)
1049.727 +# define BOOST_PP_REPEAT_3_157(m, d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d)
1049.728 +# define BOOST_PP_REPEAT_3_158(m, d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d)
1049.729 +# define BOOST_PP_REPEAT_3_159(m, d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d)
1049.730 +# define BOOST_PP_REPEAT_3_160(m, d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d)
1049.731 +# define BOOST_PP_REPEAT_3_161(m, d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d)
1049.732 +# define BOOST_PP_REPEAT_3_162(m, d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d)
1049.733 +# define BOOST_PP_REPEAT_3_163(m, d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d)
1049.734 +# define BOOST_PP_REPEAT_3_164(m, d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d)
1049.735 +# define BOOST_PP_REPEAT_3_165(m, d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d)
1049.736 +# define BOOST_PP_REPEAT_3_166(m, d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d)
1049.737 +# define BOOST_PP_REPEAT_3_167(m, d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d)
1049.738 +# define BOOST_PP_REPEAT_3_168(m, d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d)
1049.739 +# define BOOST_PP_REPEAT_3_169(m, d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d)
1049.740 +# define BOOST_PP_REPEAT_3_170(m, d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d)
1049.741 +# define BOOST_PP_REPEAT_3_171(m, d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d)
1049.742 +# define BOOST_PP_REPEAT_3_172(m, d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d)
1049.743 +# define BOOST_PP_REPEAT_3_173(m, d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d)
1049.744 +# define BOOST_PP_REPEAT_3_174(m, d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d)
1049.745 +# define BOOST_PP_REPEAT_3_175(m, d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d)
1049.746 +# define BOOST_PP_REPEAT_3_176(m, d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d)
1049.747 +# define BOOST_PP_REPEAT_3_177(m, d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d)
1049.748 +# define BOOST_PP_REPEAT_3_178(m, d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d)
1049.749 +# define BOOST_PP_REPEAT_3_179(m, d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d)
1049.750 +# define BOOST_PP_REPEAT_3_180(m, d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d)
1049.751 +# define BOOST_PP_REPEAT_3_181(m, d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d)
1049.752 +# define BOOST_PP_REPEAT_3_182(m, d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d)
1049.753 +# define BOOST_PP_REPEAT_3_183(m, d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d)
1049.754 +# define BOOST_PP_REPEAT_3_184(m, d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d)
1049.755 +# define BOOST_PP_REPEAT_3_185(m, d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d)
1049.756 +# define BOOST_PP_REPEAT_3_186(m, d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d)
1049.757 +# define BOOST_PP_REPEAT_3_187(m, d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d)
1049.758 +# define BOOST_PP_REPEAT_3_188(m, d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d)
1049.759 +# define BOOST_PP_REPEAT_3_189(m, d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d)
1049.760 +# define BOOST_PP_REPEAT_3_190(m, d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d)
1049.761 +# define BOOST_PP_REPEAT_3_191(m, d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d)
1049.762 +# define BOOST_PP_REPEAT_3_192(m, d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d)
1049.763 +# define BOOST_PP_REPEAT_3_193(m, d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d)
1049.764 +# define BOOST_PP_REPEAT_3_194(m, d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d)
1049.765 +# define BOOST_PP_REPEAT_3_195(m, d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d)
1049.766 +# define BOOST_PP_REPEAT_3_196(m, d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d)
1049.767 +# define BOOST_PP_REPEAT_3_197(m, d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d)
1049.768 +# define BOOST_PP_REPEAT_3_198(m, d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d)
1049.769 +# define BOOST_PP_REPEAT_3_199(m, d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d)
1049.770 +# define BOOST_PP_REPEAT_3_200(m, d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d)
1049.771 +# define BOOST_PP_REPEAT_3_201(m, d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d)
1049.772 +# define BOOST_PP_REPEAT_3_202(m, d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d)
1049.773 +# define BOOST_PP_REPEAT_3_203(m, d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d)
1049.774 +# define BOOST_PP_REPEAT_3_204(m, d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d)
1049.775 +# define BOOST_PP_REPEAT_3_205(m, d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d)
1049.776 +# define BOOST_PP_REPEAT_3_206(m, d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d)
1049.777 +# define BOOST_PP_REPEAT_3_207(m, d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d)
1049.778 +# define BOOST_PP_REPEAT_3_208(m, d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d)
1049.779 +# define BOOST_PP_REPEAT_3_209(m, d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d)
1049.780 +# define BOOST_PP_REPEAT_3_210(m, d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d)
1049.781 +# define BOOST_PP_REPEAT_3_211(m, d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d)
1049.782 +# define BOOST_PP_REPEAT_3_212(m, d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d)
1049.783 +# define BOOST_PP_REPEAT_3_213(m, d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d)
1049.784 +# define BOOST_PP_REPEAT_3_214(m, d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d)
1049.785 +# define BOOST_PP_REPEAT_3_215(m, d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d)
1049.786 +# define BOOST_PP_REPEAT_3_216(m, d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d)
1049.787 +# define BOOST_PP_REPEAT_3_217(m, d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d)
1049.788 +# define BOOST_PP_REPEAT_3_218(m, d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d)
1049.789 +# define BOOST_PP_REPEAT_3_219(m, d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d)
1049.790 +# define BOOST_PP_REPEAT_3_220(m, d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d)
1049.791 +# define BOOST_PP_REPEAT_3_221(m, d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d)
1049.792 +# define BOOST_PP_REPEAT_3_222(m, d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d)
1049.793 +# define BOOST_PP_REPEAT_3_223(m, d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d)
1049.794 +# define BOOST_PP_REPEAT_3_224(m, d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d)
1049.795 +# define BOOST_PP_REPEAT_3_225(m, d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d)
1049.796 +# define BOOST_PP_REPEAT_3_226(m, d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d)
1049.797 +# define BOOST_PP_REPEAT_3_227(m, d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d)
1049.798 +# define BOOST_PP_REPEAT_3_228(m, d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d)
1049.799 +# define BOOST_PP_REPEAT_3_229(m, d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d)
1049.800 +# define BOOST_PP_REPEAT_3_230(m, d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d)
1049.801 +# define BOOST_PP_REPEAT_3_231(m, d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d)
1049.802 +# define BOOST_PP_REPEAT_3_232(m, d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d)
1049.803 +# define BOOST_PP_REPEAT_3_233(m, d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d)
1049.804 +# define BOOST_PP_REPEAT_3_234(m, d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d)
1049.805 +# define BOOST_PP_REPEAT_3_235(m, d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d)
1049.806 +# define BOOST_PP_REPEAT_3_236(m, d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d)
1049.807 +# define BOOST_PP_REPEAT_3_237(m, d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d)
1049.808 +# define BOOST_PP_REPEAT_3_238(m, d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d)
1049.809 +# define BOOST_PP_REPEAT_3_239(m, d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d)
1049.810 +# define BOOST_PP_REPEAT_3_240(m, d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d)
1049.811 +# define BOOST_PP_REPEAT_3_241(m, d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d)
1049.812 +# define BOOST_PP_REPEAT_3_242(m, d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d)
1049.813 +# define BOOST_PP_REPEAT_3_243(m, d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d)
1049.814 +# define BOOST_PP_REPEAT_3_244(m, d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d)
1049.815 +# define BOOST_PP_REPEAT_3_245(m, d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d)
1049.816 +# define BOOST_PP_REPEAT_3_246(m, d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d)
1049.817 +# define BOOST_PP_REPEAT_3_247(m, d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d)
1049.818 +# define BOOST_PP_REPEAT_3_248(m, d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d)
1049.819 +# define BOOST_PP_REPEAT_3_249(m, d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d)
1049.820 +# define BOOST_PP_REPEAT_3_250(m, d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d)
1049.821 +# define BOOST_PP_REPEAT_3_251(m, d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d)
1049.822 +# define BOOST_PP_REPEAT_3_252(m, d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d)
1049.823 +# define BOOST_PP_REPEAT_3_253(m, d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d)
1049.824 +# define BOOST_PP_REPEAT_3_254(m, d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d)
1049.825 +# define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d)
1049.826 +# define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d)
1049.827 +#
1049.828 +# endif
  1050.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/reverse_fold_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1050.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1050.3 @@ -1,44 +0,0 @@
  1050.4 -
  1050.5 -#ifndef BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
  1050.6 -#define BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
  1050.7 -
  1050.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1050.9 -//
 1050.10 -// Distributed under the Boost Software License, Version 1.0. 
 1050.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1050.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1050.13 -//
 1050.14 -// See http://www.boost.org/libs/mpl for documentation.
 1050.15 -
 1050.16 -// $Source: /cvsroot/boost/boost/boost/mpl/aux_/reverse_fold_impl.hpp,v $
 1050.17 -// $Date: 2004/10/01 16:29:34 $
 1050.18 -// $Revision: 1.3 $
 1050.19 -
 1050.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1050.21 -#   include <boost/mpl/next_prior.hpp>
 1050.22 -#   include <boost/mpl/deref.hpp>
 1050.23 -#   include <boost/mpl/apply.hpp>
 1050.24 -#   include <boost/mpl/aux_/config/ctps.hpp>
 1050.25 -#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 1050.26 -    || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 1050.27 -#       include <boost/mpl/if.hpp>
 1050.28 -#       include <boost/type_traits/is_same.hpp>
 1050.29 -#   endif
 1050.30 -#endif
 1050.31 -
 1050.32 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1050.33 -
 1050.34 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1050.35 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1050.36 -
 1050.37 -#   define BOOST_MPL_PREPROCESSED_HEADER reverse_fold_impl.hpp
 1050.38 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1050.39 -
 1050.40 -#else
 1050.41 -
 1050.42 -#   define AUX778076_FOLD_IMPL_OP(iter) typename deref<iter>::type
 1050.43 -#   define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_fold
 1050.44 -#   include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
 1050.45 -
 1050.46 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1050.47 -#endif // BOOST_MPL_AUX_REVERSE_FOLD_IMPL_HPP_INCLUDED
  1051.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/reverse_iter_fold_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1051.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1051.3 @@ -1,43 +0,0 @@
  1051.4 -
  1051.5 -#ifndef BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
  1051.6 -#define BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
  1051.7 -
  1051.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1051.9 -//
 1051.10 -// Distributed under the Boost Software License, Version 1.0. 
 1051.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1051.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1051.13 -//
 1051.14 -// See http://www.boost.org/libs/mpl for documentation.
 1051.15 -
 1051.16 -// $Source: /cvsroot/boost/boost/boost/mpl/aux_/reverse_iter_fold_impl.hpp,v $
 1051.17 -// $Date: 2004/09/02 15:40:44 $
 1051.18 -// $Revision: 1.2 $
 1051.19 -
 1051.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1051.21 -#   include <boost/mpl/next_prior.hpp>
 1051.22 -#   include <boost/mpl/apply.hpp>
 1051.23 -#   include <boost/mpl/aux_/config/ctps.hpp>
 1051.24 -#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 1051.25 -    || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 1051.26 -#       include <boost/mpl/if.hpp>
 1051.27 -#       include <boost/type_traits/is_same.hpp>
 1051.28 -#   endif
 1051.29 -#endif
 1051.30 -
 1051.31 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1051.32 -
 1051.33 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1051.34 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1051.35 -
 1051.36 -#   define BOOST_MPL_PREPROCESSED_HEADER reverse_iter_fold_impl.hpp
 1051.37 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1051.38 -
 1051.39 -#else
 1051.40 -
 1051.41 -#   define AUX778076_FOLD_IMPL_OP(iter) iter
 1051.42 -#   define AUX778076_FOLD_IMPL_NAME_PREFIX reverse_iter_fold
 1051.43 -#   include <boost/mpl/aux_/reverse_fold_impl_body.hpp>
 1051.44 -
 1051.45 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1051.46 -#endif // BOOST_MPL_AUX_ITER_FOLD_BACKWARD_IMPL_HPP_INCLUDED
  1052.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1052.2 +++ b/epoc32/include/stdapis/boost/mpl/aux_/size_impl.hpp	Wed Mar 31 12:27:01 2010 +0100
  1052.3 @@ -0,0 +1,33 @@
  1052.4 +
  1052.5 +#ifndef BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
  1052.6 +#define BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
  1052.7 +
  1052.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1052.9 +//
 1052.10 +// Distributed under the Boost Software License, Version 1.0. 
 1052.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1052.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1052.13 +//
 1052.14 +// See http://www.boost.org/libs/mpl for documentation.
 1052.15 +
 1052.16 +// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/size_impl.hpp,v $
 1052.17 +// $Date: 2004/09/02 15:41:02 $
 1052.18 +// $Revision: 1.2 $
 1052.19 +
 1052.20 +#include <boost/mpl/size_fwd.hpp>
 1052.21 +#include <boost/mpl/set/aux_/tag.hpp>
 1052.22 +
 1052.23 +namespace boost { namespace mpl {
 1052.24 +
 1052.25 +template<>
 1052.26 +struct size_impl< aux::set_tag >
 1052.27 +{
 1052.28 +    template< typename Set > struct apply
 1052.29 +        : Set::size
 1052.30 +    {
 1052.31 +    };
 1052.32 +};
 1052.33 +
 1052.34 +}}
 1052.35 +
 1052.36 +#endif // BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
  1053.1 --- a/epoc32/include/stdapis/boost/mpl/aux_/template_arity.hpp	Tue Mar 16 16:12:26 2010 +0000
  1053.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1053.3 @@ -1,189 +0,0 @@
  1053.4 -
  1053.5 -#if !defined(BOOST_PP_IS_ITERATING)
  1053.6 -
  1053.7 -///// header body
  1053.8 -
  1053.9 -#ifndef BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
 1053.10 -#define BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
 1053.11 -
 1053.12 -// Copyright Aleksey Gurtovoy 2001-2004
 1053.13 -//
 1053.14 -// Distributed under the Boost Software License, Version 1.0. 
 1053.15 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1053.16 -// http://www.boost.org/LICENSE_1_0.txt)
 1053.17 -//
 1053.18 -// See http://www.boost.org/libs/mpl for documentation.
 1053.19 -
 1053.20 -// $Source: /cvsroot/boost/boost/boost/mpl/aux_/template_arity.hpp,v $
 1053.21 -// $Date: 2004/09/07 12:24:48 $
 1053.22 -// $Revision: 1.11 $
 1053.23 -
 1053.24 -#include <boost/mpl/aux_/config/ttp.hpp>
 1053.25 -#include <boost/mpl/aux_/config/lambda.hpp>
 1053.26 -
 1053.27 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1053.28 -#   include <boost/mpl/aux_/template_arity_fwd.hpp>
 1053.29 -#   include <boost/mpl/int.hpp>
 1053.30 -#   if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 1053.31 -#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 1053.32 -#       include <boost/mpl/aux_/type_wrapper.hpp>
 1053.33 -#   endif
 1053.34 -#   else
 1053.35 -#       include <boost/mpl/aux_/has_rebind.hpp>
 1053.36 -#   endif
 1053.37 -#endif
 1053.38 -
 1053.39 -#include <boost/mpl/aux_/config/static_constant.hpp>
 1053.40 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1053.41 -
 1053.42 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1053.43 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1053.44 -
 1053.45 -#   define BOOST_MPL_PREPROCESSED_HEADER template_arity.hpp
 1053.46 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1053.47 -
 1053.48 -#else
 1053.49 -
 1053.50 -#   if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 1053.51 -#   if defined(BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING)
 1053.52 -
 1053.53 -#   include <boost/mpl/limits/arity.hpp>
 1053.54 -#   include <boost/mpl/aux_/preprocessor/range.hpp>
 1053.55 -#   include <boost/mpl/aux_/preprocessor/repeat.hpp>
 1053.56 -#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1053.57 -#   include <boost/mpl/aux_/nttp_decl.hpp>
 1053.58 -
 1053.59 -#   include <boost/preprocessor/seq/fold_left.hpp>
 1053.60 -#   include <boost/preprocessor/comma_if.hpp>
 1053.61 -#   include <boost/preprocessor/iterate.hpp>
 1053.62 -#   include <boost/preprocessor/inc.hpp>
 1053.63 -#   include <boost/preprocessor/cat.hpp>
 1053.64 -
 1053.65 -#   define AUX778076_ARITY BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 1053.66 -
 1053.67 -namespace boost { namespace mpl { namespace aux {
 1053.68 -
 1053.69 -template< BOOST_MPL_AUX_NTTP_DECL(int, N) > struct arity_tag
 1053.70 -{
 1053.71 -    typedef char (&type)[N + 1];
 1053.72 -};
 1053.73 -
 1053.74 -#   define AUX778076_MAX_ARITY_OP(unused, state, i_) \
 1053.75 -    ( BOOST_PP_CAT(C,i_) > 0 ? BOOST_PP_CAT(C,i_) : state ) \
 1053.76 -/**/
 1053.77 -
 1053.78 -template<
 1053.79 -      BOOST_MPL_PP_PARAMS(AUX778076_ARITY, BOOST_MPL_AUX_NTTP_DECL(int, C))
 1053.80 -    >
 1053.81 -struct max_arity
 1053.82 -{
 1053.83 -    BOOST_STATIC_CONSTANT(int, value = 
 1053.84 -          BOOST_PP_SEQ_FOLD_LEFT(
 1053.85 -              AUX778076_MAX_ARITY_OP
 1053.86 -            , -1
 1053.87 -            , BOOST_MPL_PP_RANGE(1, AUX778076_ARITY)
 1053.88 -            )
 1053.89 -        );
 1053.90 -};
 1053.91 -
 1053.92 -#   undef AUX778076_MAX_ARITY_OP
 1053.93 -
 1053.94 -arity_tag<0>::type arity_helper(...);
 1053.95 -
 1053.96 -#   define BOOST_PP_ITERATION_LIMITS (1, AUX778076_ARITY)
 1053.97 -#   define BOOST_PP_FILENAME_1 <boost/mpl/aux_/template_arity.hpp>
 1053.98 -#   include BOOST_PP_ITERATE()
 1053.99 -
1053.100 -template< typename F, BOOST_MPL_AUX_NTTP_DECL(int, N) >
1053.101 -struct template_arity_impl
1053.102 -{
1053.103 -    BOOST_STATIC_CONSTANT(int, value = 
1053.104 -          sizeof(arity_helper(type_wrapper<F>(),arity_tag<N>())) - 1
1053.105 -        );
1053.106 -};
1053.107 -
1053.108 -#   define AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION(unused, i_, F) \
1053.109 -    BOOST_PP_COMMA_IF(i_) template_arity_impl<F,BOOST_PP_INC(i_)>::value \
1053.110 -/**/
1053.111 -
1053.112 -template< typename F >
1053.113 -struct template_arity
1053.114 -{
1053.115 -    BOOST_STATIC_CONSTANT(int, value = (
1053.116 -          max_arity< BOOST_MPL_PP_REPEAT(
1053.117 -              AUX778076_ARITY
1053.118 -            , AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
1053.119 -            , F
1053.120 -            ) >::value
1053.121 -        ));
1053.122 -        
1053.123 -    typedef mpl::int_<value> type;
1053.124 -};
1053.125 -
1053.126 -#   undef AUX778076_TEMPLATE_ARITY_IMPL_INVOCATION
1053.127 -
1053.128 -#   undef AUX778076_ARITY
1053.129 -
1053.130 -}}}
1053.131 -
1053.132 -#   endif // BOOST_MPL_CFG_EXTENDED_TEMPLATE_PARAMETERS_MATCHING
1053.133 -#   else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
1053.134 -
1053.135 -#   include <boost/mpl/aux_/config/eti.hpp>
1053.136 -
1053.137 -namespace boost { namespace mpl { namespace aux {
1053.138 -
1053.139 -template< bool >
1053.140 -struct template_arity_impl
1053.141 -{
1053.142 -    template< typename F > struct result_
1053.143 -        : mpl::int_<-1>
1053.144 -    {
1053.145 -    };
1053.146 -};
1053.147 -
1053.148 -template<>
1053.149 -struct template_arity_impl<true>
1053.150 -{
1053.151 -    template< typename F > struct result_
1053.152 -        : F::arity
1053.153 -    {
1053.154 -    };
1053.155 -};
1053.156 -
1053.157 -template< typename F >
1053.158 -struct template_arity
1053.159 -    : template_arity_impl< ::boost::mpl::aux::has_rebind<F>::value >
1053.160 -        ::template result_<F>
1053.161 -{
1053.162 -};
1053.163 -
1053.164 -#if defined(BOOST_MPL_CFG_MSVC_ETI_BUG)
1053.165 -template<>
1053.166 -struct template_arity<int>
1053.167 -    : mpl::int_<-1>
1053.168 -{
1053.169 -};
1053.170 -#endif
1053.171 -
1053.172 -}}}
1053.173 -
1053.174 -#   endif // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
1053.175 -
1053.176 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
1053.177 -#endif // BOOST_MPL_AUX_TEMPLATE_ARITY_HPP_INCLUDED
1053.178 -
1053.179 -///// iteration
1053.180 -
1053.181 -#else
1053.182 -#define i_ BOOST_PP_FRAME_ITERATION(1)
1053.183 -
1053.184 -template<
1053.185 -      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
1053.186 -    , BOOST_MPL_PP_PARAMS(i_, typename T)
1053.187 -    >
1053.188 -typename arity_tag<i_>::type
1053.189 -arity_helper(type_wrapper< F<BOOST_MPL_PP_PARAMS(i_, T)> >, arity_tag<i_>);
1053.190 -
1053.191 -#undef i_
1053.192 -#endif // BOOST_PP_IS_ITERATING
  1054.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1054.2 +++ b/epoc32/include/stdapis/boost/mpl/base.hpp	Wed Mar 31 12:27:01 2010 +0100
  1054.3 @@ -0,0 +1,479 @@
  1054.4 +// Copyright 2002 The Trustees of Indiana University.
  1054.5 +
  1054.6 +// Use, modification and distribution is subject to the Boost Software 
  1054.7 +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1054.8 +// http://www.boost.org/LICENSE_1_0.txt)
  1054.9 +
 1054.10 +//  Boost.MultiArray Library
 1054.11 +//  Authors: Ronald Garcia
 1054.12 +//           Jeremy Siek
 1054.13 +//           Andrew Lumsdaine
 1054.14 +//  See http://www.boost.org/libs/multi_array for documentation.
 1054.15 +
 1054.16 +#ifndef BASE_RG071801_HPP
 1054.17 +#define BASE_RG071801_HPP
 1054.18 +
 1054.19 +//
 1054.20 +// base.hpp - some implementation base classes for from which
 1054.21 +// functionality is acquired
 1054.22 +//
 1054.23 +
 1054.24 +#include "boost/multi_array/extent_range.hpp"
 1054.25 +#include "boost/multi_array/extent_gen.hpp"
 1054.26 +#include "boost/multi_array/index_range.hpp"
 1054.27 +#include "boost/multi_array/index_gen.hpp"
 1054.28 +#include "boost/multi_array/storage_order.hpp"
 1054.29 +#include "boost/multi_array/types.hpp"
 1054.30 +#include "boost/config.hpp"
 1054.31 +#include "boost/multi_array/concept_checks.hpp" //for ignore_unused_...
 1054.32 +#include "boost/mpl/eval_if.hpp"
 1054.33 +#include "boost/mpl/if.hpp"
 1054.34 +#include "boost/mpl/size_t.hpp"
 1054.35 +#include "boost/mpl/aux_/msvc_eti_base.hpp"
 1054.36 +#include "boost/iterator/reverse_iterator.hpp"
 1054.37 +#include "boost/static_assert.hpp"
 1054.38 +#include "boost/type.hpp"
 1054.39 +#include "boost/assert.hpp"
 1054.40 +#include <cstddef>
 1054.41 +#include <memory>
 1054.42 +
 1054.43 +namespace boost {
 1054.44 +
 1054.45 +/////////////////////////////////////////////////////////////////////////
 1054.46 +// class declarations
 1054.47 +/////////////////////////////////////////////////////////////////////////
 1054.48 +
 1054.49 +template<typename T, std::size_t NumDims,
 1054.50 +  typename Allocator = std::allocator<T> >
 1054.51 +class multi_array;
 1054.52 +
 1054.53 +// This is a public interface for use by end users!
 1054.54 +namespace multi_array_types {
 1054.55 +  typedef boost::detail::multi_array::size_type size_type;
 1054.56 +  typedef std::ptrdiff_t difference_type;
 1054.57 +  typedef boost::detail::multi_array::index index;
 1054.58 +  typedef detail::multi_array::index_range<index,size_type> index_range;
 1054.59 +  typedef detail::multi_array::extent_range<index,size_type> extent_range;
 1054.60 +  typedef detail::multi_array::index_gen<0,0> index_gen;
 1054.61 +  typedef detail::multi_array::extent_gen<0> extent_gen;
 1054.62 +}
 1054.63 +
 1054.64 +
 1054.65 +// boost::extents and boost::indices are now a part of the public
 1054.66 +// interface.  That way users don't necessarily have to create their 
 1054.67 +// own objects.  On the other hand, one may not want the overhead of 
 1054.68 +// object creation in small-memory environments.  Thus, the objects
 1054.69 +// can be left undefined by defining BOOST_MULTI_ARRAY_NO_GENERATORS 
 1054.70 +// before loading multi_array.hpp.
 1054.71 +#if !BOOST_MULTI_ARRAY_NO_GENERATORS
 1054.72 +namespace {
 1054.73 +  multi_array_types::extent_gen extents;
 1054.74 +  multi_array_types::index_gen indices;
 1054.75 +}
 1054.76 +#endif // BOOST_MULTI_ARRAY_NO_GENERATORS
 1054.77 +
 1054.78 +namespace detail {
 1054.79 +namespace multi_array {
 1054.80 +
 1054.81 +template <typename T, std::size_t NumDims>
 1054.82 +class sub_array;
 1054.83 +
 1054.84 +template <typename T, std::size_t NumDims, typename TPtr = const T*>
 1054.85 +class const_sub_array;
 1054.86 +
 1054.87 +template <typename T, typename TPtr, typename NumDims, typename Reference>
 1054.88 +class array_iterator;
 1054.89 +
 1054.90 +template <typename T, std::size_t NumDims, typename TPtr = const T*>
 1054.91 +class const_multi_array_view;
 1054.92 +
 1054.93 +template <typename T, std::size_t NumDims>
 1054.94 +class multi_array_view;
 1054.95 +
 1054.96 +/////////////////////////////////////////////////////////////////////////
 1054.97 +// class interfaces
 1054.98 +/////////////////////////////////////////////////////////////////////////
 1054.99 +
1054.100 +class multi_array_base {
1054.101 +public:
1054.102 +  typedef multi_array_types::size_type size_type;
1054.103 +  typedef multi_array_types::difference_type difference_type;
1054.104 +  typedef multi_array_types::index index;
1054.105 +  typedef multi_array_types::index_range index_range;
1054.106 +  typedef multi_array_types::extent_range extent_range;
1054.107 +  typedef multi_array_types::index_gen index_gen;
1054.108 +  typedef multi_array_types::extent_gen extent_gen;
1054.109 +};
1054.110 +
1054.111 +//
1054.112 +// value_accessor_n
1054.113 +//  contains the routines for accessing elements from
1054.114 +//  N-dimensional views.
1054.115 +//
1054.116 +template<typename T, std::size_t NumDims>
1054.117 +class value_accessor_n : public multi_array_base {
1054.118 +  typedef multi_array_base super_type;
1054.119 +public:
1054.120 +  typedef typename super_type::index index;
1054.121 +
1054.122 +  // 
1054.123 +  // public typedefs used by classes that inherit from this base
1054.124 +  //
1054.125 +  typedef T element;
1054.126 +  typedef boost::multi_array<T,NumDims-1> value_type;
1054.127 +  typedef sub_array<T,NumDims-1> reference;
1054.128 +  typedef const_sub_array<T,NumDims-1> const_reference;
1054.129 +
1054.130 +protected:
1054.131 +  // used by array operator[] and iterators to get reference types.
1054.132 +  template <typename Reference, typename TPtr>
1054.133 +  Reference access(boost::type<Reference>,index idx,TPtr base,
1054.134 +                   const size_type* extents,
1054.135 +                   const index* strides,
1054.136 +                   const index* index_bases) const {
1054.137 +
1054.138 +    BOOST_ASSERT(idx - index_bases[0] >= 0);
1054.139 +    BOOST_ASSERT(size_type(idx - index_bases[0]) < extents[0]);
1054.140 +    // return a sub_array<T,NDims-1> proxy object
1054.141 +    TPtr newbase = base + idx * strides[0];
1054.142 +    return Reference(newbase,extents+1,strides+1,index_bases+1);
1054.143 +
1054.144 +  }
1054.145 +
1054.146 +  value_accessor_n() { }
1054.147 +  ~value_accessor_n() { }
1054.148 +};
1054.149 +
1054.150 +
1054.151 +
1054.152 +//
1054.153 +// value_accessor_one
1054.154 +//  contains the routines for accessing reference elements from
1054.155 +//  1-dimensional views.
1054.156 +//
1054.157 +template<typename T>
1054.158 +class value_accessor_one : public multi_array_base {
1054.159 +  typedef multi_array_base super_type;
1054.160 +public:
1054.161 +  typedef typename super_type::index index;
1054.162 +  //
1054.163 +  // public typedefs for use by classes that inherit it.
1054.164 +  //
1054.165 +  typedef T element;
1054.166 +  typedef T value_type;
1054.167 +  typedef T& reference;
1054.168 +  typedef T const& const_reference;
1054.169 +
1054.170 +protected:
1054.171 +  // used by array operator[] and iterators to get reference types.
1054.172 +  template <typename Reference, typename TPtr>
1054.173 +  Reference access(boost::type<Reference>,index idx,TPtr base,
1054.174 +                   const size_type* extents,
1054.175 +                   const index* strides,
1054.176 +                   const index* index_bases) const {
1054.177 +
1054.178 +    ignore_unused_variable_warning(index_bases);
1054.179 +    ignore_unused_variable_warning(extents);
1054.180 +    BOOST_ASSERT(idx - index_bases[0] >= 0);
1054.181 +    BOOST_ASSERT(size_type(idx - index_bases[0]) < extents[0]);
1054.182 +    return *(base + idx * strides[0]);
1054.183 +  }
1054.184 +
1054.185 +  value_accessor_one() { }
1054.186 +  ~value_accessor_one() { }
1054.187 +};
1054.188 +
1054.189 +
1054.190 +/////////////////////////////////////////////////////////////////////////
1054.191 +// choose value accessor begins
1054.192 +//
1054.193 +
1054.194 +template <typename T, std::size_t NumDims>
1054.195 +struct choose_value_accessor_n {
1054.196 +  typedef value_accessor_n<T,NumDims> type;
1054.197 +};
1054.198 +
1054.199 +template <typename T>
1054.200 +struct choose_value_accessor_one {
1054.201 +  typedef value_accessor_one<T> type;
1054.202 +};
1054.203 +
1054.204 +template <typename T, typename NumDims>
1054.205 +struct value_accessor_generator {
1054.206 +    BOOST_STATIC_CONSTANT(std::size_t, dimensionality = NumDims::value);
1054.207 +    
1054.208 +  typedef typename
1054.209 +  mpl::eval_if_c<(dimensionality == 1),
1054.210 +                  choose_value_accessor_one<T>,
1054.211 +                  choose_value_accessor_n<T,dimensionality>
1054.212 +  >::type type;
1054.213 +};
1054.214 +
1054.215 +#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1054.216 +
1054.217 +struct eti_value_accessor
1054.218 +{
1054.219 +  typedef int index;
1054.220 +  typedef int size_type;
1054.221 +  typedef int element;
1054.222 +  typedef int index_range;
1054.223 +  typedef int value_type;
1054.224 +  typedef int reference;
1054.225 +  typedef int const_reference;
1054.226 +};
1054.227 +    
1054.228 +template <>
1054.229 +struct value_accessor_generator<int,int>
1054.230 +{
1054.231 +  typedef eti_value_accessor type;
1054.232 +};
1054.233 +
1054.234 +template <class T, class NumDims>
1054.235 +struct associated_types
1054.236 +  : mpl::aux::msvc_eti_base<
1054.237 +        typename value_accessor_generator<T,NumDims>::type
1054.238 +    >::type
1054.239 +{};
1054.240 +
1054.241 +template <>
1054.242 +struct associated_types<int,int> : eti_value_accessor {};
1054.243 +
1054.244 +#else
1054.245 +
1054.246 +template <class T, class NumDims>
1054.247 +struct associated_types
1054.248 +  : value_accessor_generator<T,NumDims>::type
1054.249 +{};
1054.250 +
1054.251 +#endif
1054.252 +
1054.253 +//
1054.254 +// choose value accessor ends
1054.255 +/////////////////////////////////////////////////////////////////////////
1054.256 +
1054.257 +
1054.258 +
1054.259 +////////////////////////////////////////////////////////////////////////
1054.260 +// multi_array_base
1054.261 +////////////////////////////////////////////////////////////////////////
1054.262 +template <typename T, std::size_t NumDims>
1054.263 +class multi_array_impl_base
1054.264 +  :
1054.265 +#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1054.266 +      public mpl::aux::msvc_eti_base<
1054.267 +          typename value_accessor_generator<T,mpl::size_t<NumDims> >::type
1054.268 +       >::type
1054.269 +#else
1054.270 +      public value_accessor_generator<T,mpl::size_t<NumDims> >::type
1054.271 +#endif 
1054.272 +{
1054.273 +  typedef associated_types<T,mpl::size_t<NumDims> > types;
1054.274 +public:
1054.275 +  typedef typename types::index index;
1054.276 +  typedef typename types::size_type size_type;
1054.277 +  typedef typename types::element element;
1054.278 +  typedef typename types::index_range index_range;
1054.279 +  typedef typename types::value_type value_type;
1054.280 +  typedef typename types::reference reference;
1054.281 +  typedef typename types::const_reference const_reference;
1054.282 +
1054.283 +  template <std::size_t NDims>
1054.284 +  struct subarray {
1054.285 +    typedef boost::detail::multi_array::sub_array<T,NDims> type;
1054.286 +  };
1054.287 +
1054.288 +  template <std::size_t NDims>
1054.289 +  struct const_subarray {
1054.290 +    typedef boost::detail::multi_array::const_sub_array<T,NDims> type;
1054.291 +  };
1054.292 +
1054.293 +  template <std::size_t NDims>
1054.294 +  struct array_view {
1054.295 +    typedef boost::detail::multi_array::multi_array_view<T,NDims> type;
1054.296 +  };
1054.297 +
1054.298 +  template <std::size_t NDims>
1054.299 +  struct const_array_view {
1054.300 +  public:
1054.301 +    typedef boost::detail::multi_array::const_multi_array_view<T,NDims> type;
1054.302 +  };
1054.303 +
1054.304 +  //
1054.305 +  // iterator support
1054.306 +  //
1054.307 +  typedef array_iterator<T,T*,mpl::size_t<NumDims>,reference> iterator;
1054.308 +  typedef array_iterator<T,T const*,mpl::size_t<NumDims>,const_reference> const_iterator;
1054.309 +
1054.310 +  typedef ::boost::reverse_iterator<iterator> reverse_iterator;
1054.311 +  typedef ::boost::reverse_iterator<const_iterator> const_reverse_iterator;
1054.312 +
1054.313 +  BOOST_STATIC_CONSTANT(std::size_t, dimensionality = NumDims);
1054.314 +protected:
1054.315 +
1054.316 +  multi_array_impl_base() { }
1054.317 +  ~multi_array_impl_base() { }
1054.318 +
1054.319 +  // Used by operator() in our array classes
1054.320 +  template <typename Reference, typename IndexList, typename TPtr>
1054.321 +  Reference access_element(boost::type<Reference>,
1054.322 +                           const IndexList& indices,
1054.323 +                           TPtr base,
1054.324 +                           const size_type* extents,
1054.325 +                           const index* strides,
1054.326 +                           const index* index_bases) const {
1054.327 +
1054.328 +    ignore_unused_variable_warning(index_bases);
1054.329 +    ignore_unused_variable_warning(extents);
1054.330 +#if !defined(NDEBUG) && !defined(BOOST_DISABLE_ASSERTS)
1054.331 +    for (size_type i = 0; i != NumDims; ++i) {
1054.332 +      BOOST_ASSERT(indices[i] - index_bases[i] >= 0);
1054.333 +      BOOST_ASSERT(size_type(indices[i] - index_bases[i]) < extents[i]);
1054.334 +    }
1054.335 +#endif
1054.336 +
1054.337 +    index offset = 0;
1054.338 +    for (size_type n = 0; n != NumDims; ++n) 
1054.339 +      offset += indices[n] * strides[n];
1054.340 +    
1054.341 +    return base[offset];
1054.342 +  }
1054.343 +
1054.344 +  template <typename StrideList, typename ExtentList>
1054.345 +  void compute_strides(StrideList& stride_list, ExtentList& extent_list,
1054.346 +                       const general_storage_order<NumDims>& storage)
1054.347 +  {
1054.348 +    // invariant: stride = the stride for dimension n
1054.349 +    index stride = 1;
1054.350 +    for (size_type n = 0; n != NumDims; ++n) {
1054.351 +      index stride_sign = +1;
1054.352 +      
1054.353 +      if (!storage.ascending(storage.ordering(n)))
1054.354 +        stride_sign = -1;
1054.355 +      
1054.356 +      // The stride for this dimension is the product of the
1054.357 +      // lengths of the ranks minor to it.
1054.358 +      stride_list[storage.ordering(n)] = stride * stride_sign;
1054.359 +      
1054.360 +      stride *= extent_list[storage.ordering(n)];
1054.361 +    } 
1054.362 +  }
1054.363 +
1054.364 +  // This calculates the offset to the array base pointer due to:
1054.365 +  // 1. dimensions stored in descending order
1054.366 +  // 2. non-zero dimension index bases
1054.367 +  template <typename StrideList, typename ExtentList, typename BaseList>
1054.368 +  index
1054.369 +  calculate_origin_offset(const StrideList& stride_list,
1054.370 +                          const ExtentList& extent_list,
1054.371 +                          const general_storage_order<NumDims>& storage,
1054.372 +                          const BaseList& index_base_list)
1054.373 +  {
1054.374 +    return
1054.375 +      calculate_descending_dimension_offset(stride_list,extent_list,
1054.376 +                                            storage) +
1054.377 +      calculate_indexing_offset(stride_list,index_base_list);
1054.378 +  }
1054.379 +
1054.380 +  // This calculates the offset added to the base pointer that are
1054.381 +  // caused by descending dimensions
1054.382 +  template <typename StrideList, typename ExtentList>
1054.383 +  index
1054.384 +  calculate_descending_dimension_offset(const StrideList& stride_list,
1054.385 +                                const ExtentList& extent_list,
1054.386 +                                const general_storage_order<NumDims>& storage)
1054.387 +  {
1054.388 +    index offset = 0;
1054.389 +    if (!storage.all_dims_ascending()) 
1054.390 +      for (size_type n = 0; n != NumDims; ++n)
1054.391 +        if (!storage.ascending(n))
1054.392 +          offset -= (extent_list[n] - 1) * stride_list[n];
1054.393 +
1054.394 +    return offset;
1054.395 +  }
1054.396 +
1054.397 +  // This is used to reindex array_views, which are no longer
1054.398 +  // concerned about storage order (specifically, whether dimensions
1054.399 +  // are ascending or descending) since the viewed array handled it.
1054.400 +
1054.401 +  template <typename StrideList, typename BaseList>
1054.402 +  index
1054.403 +  calculate_indexing_offset(const StrideList& stride_list,
1054.404 +                          const BaseList& index_base_list)
1054.405 +  {
1054.406 +    index offset = 0;
1054.407 +    for (size_type n = 0; n != NumDims; ++n)
1054.408 +        offset -= stride_list[n] * index_base_list[n];
1054.409 +    return offset;
1054.410 +  }
1054.411 +
1054.412 +  // Slicing using an index_gen.
1054.413 +  // Note that populating an index_gen creates a type that encodes
1054.414 +  // both the number of dimensions in the current Array (NumDims), and 
1054.415 +  // the Number of dimensions for the resulting view.  This allows the 
1054.416 +  // compiler to fail if the dimensions aren't completely accounted
1054.417 +  // for.  For reasons unbeknownst to me, a BOOST_STATIC_ASSERT
1054.418 +  // within the member function template does not work. I should add a 
1054.419 +  // note to the documentation specifying that you get a damn ugly
1054.420 +  // error message if you screw up in your slicing code.
1054.421 +  template <typename ArrayRef, int NDims, typename TPtr>
1054.422 +  ArrayRef
1054.423 +  generate_array_view(boost::type<ArrayRef>,
1054.424 +                      const boost::detail::multi_array::
1054.425 +                      index_gen<NumDims,NDims>& indices,
1054.426 +                      const size_type* extents,
1054.427 +                      const index* strides,
1054.428 +                      const index* index_bases,
1054.429 +                      TPtr base) const {
1054.430 +
1054.431 +    boost::array<index,NDims> new_strides;
1054.432 +    boost::array<index,NDims> new_extents;
1054.433 +
1054.434 +    index offset = 0;
1054.435 +    size_type dim = 0;
1054.436 +    for (size_type n = 0; n != NumDims; ++n) {
1054.437 +      const index default_start = index_bases[n];
1054.438 +      const index default_finish = default_start+extents[n];
1054.439 +      const index_range& current_range = indices.ranges_[n];
1054.440 +      index start = current_range.get_start(default_start);
1054.441 +      index finish = current_range.get_finish(default_finish);
1054.442 +      index index_factor = current_range.stride();
1054.443 +      index len = (finish - start + (index_factor - 1)) / index_factor;
1054.444 +
1054.445 +      BOOST_ASSERT(index_bases[n] <= start &&
1054.446 +                   start <= index_bases[n]+index(extents[n]));
1054.447 +      BOOST_ASSERT(index_bases[n] <= finish &&
1054.448 +                   finish <= index_bases[n]+index(extents[n]));
1054.449 +      BOOST_ASSERT(index_factor > 0);
1054.450 +
1054.451 +      // the array data pointer is modified to account for non-zero
1054.452 +      // bases during slicing (see [Garcia] for the math involved)
1054.453 +      offset += start * strides[n];
1054.454 +
1054.455 +      if (!current_range.is_degenerate()) {
1054.456 +
1054.457 +        // The index_factor for each dimension is included into the
1054.458 +        // strides for the array_view (see [Garcia] for the math involved).
1054.459 +        new_strides[dim] = index_factor * strides[n];
1054.460 +        
1054.461 +        // calculate new extents
1054.462 +        new_extents[dim] = len;
1054.463 +        ++dim;
1054.464 +      }
1054.465 +    }
1054.466 +    BOOST_ASSERT(dim == NDims);
1054.467 +
1054.468 +    return
1054.469 +      ArrayRef(base+offset,
1054.470 +               new_extents,
1054.471 +               new_strides);
1054.472 +  }
1054.473 +                     
1054.474 +
1054.475 +};
1054.476 +
1054.477 +} // namespace multi_array
1054.478 +} // namespace detail
1054.479 +
1054.480 +} // namespace boost
1054.481 +
1054.482 +#endif // BASE_RG071801_HPP
  1055.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1055.2 +++ b/epoc32/include/stdapis/boost/mpl/begin_end.hpp	Wed Mar 31 12:27:01 2010 +0100
  1055.3 @@ -0,0 +1,49 @@
  1055.4 +
  1055.5 +#ifndef BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
  1055.6 +#define BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
  1055.7 +
  1055.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1055.9 +//
 1055.10 +// Distributed under the Boost Software License, Version 1.0. 
 1055.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1055.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1055.13 +//
 1055.14 +// See http://www.boost.org/libs/mpl for documentation.
 1055.15 +
 1055.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/begin_end.hpp,v $
 1055.17 +// $Date: 2004/09/02 15:41:19 $
 1055.18 +// $Revision: 1.4 $
 1055.19 +
 1055.20 +#include <boost/mpl/aux_/config/typeof.hpp>
 1055.21 +
 1055.22 +#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1055.23 +
 1055.24 +#   include <boost/mpl/begin_end_fwd.hpp>
 1055.25 +#   include <boost/mpl/vector/aux_/iterator.hpp>
 1055.26 +#   include <boost/mpl/vector/aux_/tag.hpp>
 1055.27 +
 1055.28 +namespace boost { namespace mpl {
 1055.29 +
 1055.30 +template<>
 1055.31 +struct begin_impl< aux::vector_tag >
 1055.32 +{
 1055.33 +    template< typename Vector > struct apply
 1055.34 +    {
 1055.35 +        typedef v_iter<Vector,0> type;
 1055.36 +    };
 1055.37 +};
 1055.38 +
 1055.39 +template<>
 1055.40 +struct end_impl< aux::vector_tag >
 1055.41 +{
 1055.42 +    template< typename Vector > struct apply
 1055.43 +    {
 1055.44 +        typedef v_iter<Vector,Vector::size::value> type;
 1055.45 +    };
 1055.46 +};
 1055.47 +
 1055.48 +}}
 1055.49 +
 1055.50 +#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1055.51 +
 1055.52 +#endif // BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
  1056.1 --- a/epoc32/include/stdapis/boost/mpl/bind.hpp	Tue Mar 16 16:12:26 2010 +0000
  1056.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1056.3 @@ -1,547 +0,0 @@
  1056.4 -
  1056.5 -#if !defined(BOOST_PP_IS_ITERATING)
  1056.6 -
  1056.7 -///// header body
  1056.8 -
  1056.9 -#ifndef BOOST_MPL_BIND_HPP_INCLUDED
 1056.10 -#define BOOST_MPL_BIND_HPP_INCLUDED
 1056.11 -
 1056.12 -// Copyright Peter Dimov 2001
 1056.13 -// Copyright Aleksey Gurtovoy 2001-2004
 1056.14 -//
 1056.15 -// Distributed under the Boost Software License, Version 1.0. 
 1056.16 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1056.17 -// http://www.boost.org/LICENSE_1_0.txt)
 1056.18 -//
 1056.19 -// See http://www.boost.org/libs/mpl for documentation.
 1056.20 -
 1056.21 -// $Source: /cvsroot/boost/boost/boost/mpl/bind.hpp,v $
 1056.22 -// $Date: 2004/10/26 14:51:04 $
 1056.23 -// $Revision: 1.13 $
 1056.24 -
 1056.25 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1056.26 -#   include <boost/mpl/bind_fwd.hpp>
 1056.27 -#   include <boost/mpl/placeholders.hpp>
 1056.28 -#   include <boost/mpl/next.hpp>
 1056.29 -#   include <boost/mpl/protect.hpp>
 1056.30 -#   include <boost/mpl/apply_wrap.hpp>
 1056.31 -#   include <boost/mpl/limits/arity.hpp>
 1056.32 -#   include <boost/mpl/aux_/na.hpp>
 1056.33 -#   include <boost/mpl/aux_/arity_spec.hpp>
 1056.34 -#   include <boost/mpl/aux_/type_wrapper.hpp>
 1056.35 -#   include <boost/mpl/aux_/yes_no.hpp>
 1056.36 -#   if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1056.37 -#       include <boost/type_traits/is_reference.hpp>
 1056.38 -#   endif 
 1056.39 -#endif
 1056.40 -
 1056.41 -#include <boost/mpl/aux_/config/bind.hpp>
 1056.42 -#include <boost/mpl/aux_/config/static_constant.hpp>
 1056.43 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1056.44 -
 1056.45 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1056.46 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1056.47 -
 1056.48 -#   if defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 1056.49 -#       define BOOST_MPL_PREPROCESSED_HEADER basic_bind.hpp
 1056.50 -#   else
 1056.51 -#       define BOOST_MPL_PREPROCESSED_HEADER bind.hpp
 1056.52 -#   endif
 1056.53 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1056.54 -
 1056.55 -#else
 1056.56 -
 1056.57 -#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1056.58 -#   include <boost/mpl/aux_/preprocessor/default_params.hpp>
 1056.59 -#   include <boost/mpl/aux_/preprocessor/def_params_tail.hpp>
 1056.60 -#   include <boost/mpl/aux_/preprocessor/partial_spec_params.hpp>
 1056.61 -#   include <boost/mpl/aux_/preprocessor/ext_params.hpp>
 1056.62 -#   include <boost/mpl/aux_/preprocessor/repeat.hpp>
 1056.63 -#   include <boost/mpl/aux_/preprocessor/enum.hpp>
 1056.64 -#   include <boost/mpl/aux_/preprocessor/add.hpp>
 1056.65 -#   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
 1056.66 -#   include <boost/mpl/aux_/config/ctps.hpp>
 1056.67 -#   include <boost/mpl/aux_/config/ttp.hpp>
 1056.68 -#   include <boost/mpl/aux_/config/dtp.hpp>
 1056.69 -#   include <boost/mpl/aux_/nttp_decl.hpp>
 1056.70 -
 1056.71 -#   include <boost/preprocessor/iterate.hpp>
 1056.72 -#   include <boost/preprocessor/comma_if.hpp>
 1056.73 -#   include <boost/preprocessor/cat.hpp>
 1056.74 -#   include <boost/preprocessor/inc.hpp>
 1056.75 -
 1056.76 -namespace boost { namespace mpl {
 1056.77 -
 1056.78 -// local macros, #undef-ined at the end of the header
 1056.79 -#   define AUX778076_APPLY \
 1056.80 -    BOOST_PP_CAT(apply_wrap,BOOST_MPL_LIMIT_METAFUNCTION_ARITY) \
 1056.81 -    /**/
 1056.82 -
 1056.83 -#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 1056.84 -#       define AUX778076_DMC_PARAM() , int dummy_
 1056.85 -#   else
 1056.86 -#       define AUX778076_DMC_PARAM()
 1056.87 -#   endif
 1056.88 -
 1056.89 -#   define AUX778076_BIND_PARAMS(param) \
 1056.90 -    BOOST_MPL_PP_PARAMS( \
 1056.91 -          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
 1056.92 -        , param \
 1056.93 -        ) \
 1056.94 -    /**/
 1056.95 -
 1056.96 -#   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
 1056.97 -    BOOST_MPL_PP_DEFAULT_PARAMS( \
 1056.98 -          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
 1056.99 -        , param \
1056.100 -        , value \
1056.101 -        ) \
1056.102 -    /**/
1056.103 -
1056.104 -#   define AUX778076_BIND_N_PARAMS(n, param) \
1056.105 -    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
1056.106 -    /**/
1056.107 -
1056.108 -#   define AUX778076_BIND_N_SPEC_PARAMS(n, param, def) \
1056.109 -    BOOST_PP_COMMA_IF(n) \
1056.110 -    BOOST_MPL_PP_PARTIAL_SPEC_PARAMS(n, param, def) \
1056.111 -    /**/
1056.112 -
1056.113 -#if !defined(BOOST_MPL_CFG_NO_DEFAULT_PARAMETERS_IN_NESTED_TEMPLATES)
1056.114 -#   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
1056.115 -    AUX778076_BIND_DEFAULT_PARAMS(param, value) \
1056.116 -    /**/
1056.117 -#else
1056.118 -#   define AUX778076_BIND_NESTED_DEFAULT_PARAMS(param, value) \
1056.119 -    AUX778076_BIND_PARAMS(param) \
1056.120 -    /**/
1056.121 -#endif
1056.122 -
1056.123 -namespace aux {
1056.124 -
1056.125 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1056.126 -
1056.127 -template<
1056.128 -      typename T, AUX778076_BIND_PARAMS(typename U)
1056.129 -    >
1056.130 -struct resolve_bind_arg
1056.131 -{
1056.132 -    typedef T type;
1056.133 -};
1056.134 -
1056.135 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
1056.136 -
1056.137 -template<
1056.138 -      typename T
1056.139 -    , typename Arg
1056.140 -    >
1056.141 -struct replace_unnamed_arg
1056.142 -{
1056.143 -    typedef Arg next;
1056.144 -    typedef T type;
1056.145 -};
1056.146 -
1056.147 -template<
1056.148 -      typename Arg
1056.149 -    >
1056.150 -struct replace_unnamed_arg< arg<-1>,Arg >
1056.151 -{
1056.152 -    typedef typename Arg::next next;
1056.153 -    typedef Arg type;
1056.154 -};
1056.155 -
1056.156 -#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
1056.157 -
1056.158 -template<
1056.159 -      BOOST_MPL_AUX_NTTP_DECL(int, N), AUX778076_BIND_PARAMS(typename U)
1056.160 -    >
1056.161 -struct resolve_bind_arg< arg<N>,AUX778076_BIND_PARAMS(U) >
1056.162 -{
1056.163 -    typedef typename AUX778076_APPLY<mpl::arg<N>, AUX778076_BIND_PARAMS(U)>::type type;
1056.164 -};
1056.165 -
1056.166 -#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
1056.167 -template<
1056.168 -      typename F, AUX778076_BIND_PARAMS(typename T), AUX778076_BIND_PARAMS(typename U)
1056.169 -    >
1056.170 -struct resolve_bind_arg< bind<F,AUX778076_BIND_PARAMS(T)>,AUX778076_BIND_PARAMS(U) >
1056.171 -{
1056.172 -    typedef bind<F,AUX778076_BIND_PARAMS(T)> f_;
1056.173 -    typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
1056.174 -};
1056.175 -#endif
1056.176 -
1056.177 -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1056.178 -
1056.179 -// agurt, 15/jan/02: it's not a intended to be used as a function class, and 
1056.180 -// MSVC6.5 has problems with 'apply' name here (the code compiles, but doesn't
1056.181 -// work), so I went with the 'result_' here, and in all other similar cases
1056.182 -template< bool >
1056.183 -struct resolve_arg_impl
1056.184 -{
1056.185 -    template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
1056.186 -    {
1056.187 -        typedef T type;
1056.188 -    };
1056.189 -};
1056.190 -
1056.191 -template<> 
1056.192 -struct resolve_arg_impl<true>
1056.193 -{
1056.194 -    template< typename T, AUX778076_BIND_PARAMS(typename U) > struct result_
1056.195 -    {
1056.196 -        typedef typename AUX778076_APPLY<
1056.197 -              T
1056.198 -            , AUX778076_BIND_PARAMS(U)
1056.199 -            >::type type;
1056.200 -    };
1056.201 -};
1056.202 -
1056.203 -// for 'resolve_bind_arg'
1056.204 -template< typename T > struct is_bind_template;
1056.205 -
1056.206 -template< 
1056.207 -      typename T, AUX778076_BIND_PARAMS(typename U)
1056.208 -    >
1056.209 -struct resolve_bind_arg
1056.210 -    : resolve_arg_impl< is_bind_template<T>::value >
1056.211 -            ::template result_< T,AUX778076_BIND_PARAMS(U) >
1056.212 -{
1056.213 -};
1056.214 -
1056.215 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
1056.216 -
1056.217 -template< typename T > 
1056.218 -struct replace_unnamed_arg_impl
1056.219 -{
1056.220 -    template< typename Arg > struct result_
1056.221 -    {
1056.222 -        typedef Arg next;
1056.223 -        typedef T type;
1056.224 -    };
1056.225 -};
1056.226 -
1056.227 -template<> 
1056.228 -struct replace_unnamed_arg_impl< arg<-1> >
1056.229 -{
1056.230 -    template< typename Arg > struct result_
1056.231 -    {
1056.232 -        typedef typename next<Arg>::type next;
1056.233 -        typedef Arg type;
1056.234 -    };
1056.235 -};
1056.236 -
1056.237 -template< typename T, typename Arg > 
1056.238 -struct replace_unnamed_arg
1056.239 -    : replace_unnamed_arg_impl<T>::template result_<Arg>
1056.240 -{
1056.241 -};
1056.242 -
1056.243 -#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
1056.244 -
1056.245 -// agurt, 10/mar/02: the forward declaration has to appear before any of
1056.246 -// 'is_bind_helper' overloads, otherwise MSVC6.5 issues an ICE on it
1056.247 -template< BOOST_MPL_AUX_NTTP_DECL(int, arity_) > struct bind_chooser;
1056.248 -
1056.249 -aux::no_tag is_bind_helper(...);
1056.250 -template< typename T > aux::no_tag is_bind_helper(protect<T>*);
1056.251 -
1056.252 -// overload for "main" form
1056.253 -// agurt, 15/mar/02: MSVC 6.5 fails to properly resolve the overload 
1056.254 -// in case if we use 'aux::type_wrapper< bind<...> >' here, and all 
1056.255 -// 'bind' instantiations form a complete type anyway
1056.256 -#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
1056.257 -template<
1056.258 -      typename F, AUX778076_BIND_PARAMS(typename T)
1056.259 -    >
1056.260 -aux::yes_tag is_bind_helper(bind<F,AUX778076_BIND_PARAMS(T)>*);
1056.261 -#endif
1056.262 -
1056.263 -template< BOOST_MPL_AUX_NTTP_DECL(int, N) >
1056.264 -aux::yes_tag is_bind_helper(arg<N>*);
1056.265 -
1056.266 -template< bool is_ref_ = true >
1056.267 -struct is_bind_template_impl
1056.268 -{
1056.269 -    template< typename T > struct result_
1056.270 -    {
1056.271 -        BOOST_STATIC_CONSTANT(bool, value = false);
1056.272 -    };
1056.273 -};
1056.274 -
1056.275 -template<>
1056.276 -struct is_bind_template_impl<false>
1056.277 -{
1056.278 -    template< typename T > struct result_
1056.279 -    {
1056.280 -        BOOST_STATIC_CONSTANT(bool, value = 
1056.281 -              sizeof(aux::is_bind_helper(static_cast<T*>(0))) 
1056.282 -                == sizeof(aux::yes_tag)
1056.283 -            );
1056.284 -    };
1056.285 -};
1056.286 -
1056.287 -template< typename T > struct is_bind_template
1056.288 -    : is_bind_template_impl< ::boost::detail::is_reference_impl<T>::value >
1056.289 -        ::template result_<T>
1056.290 -{
1056.291 -};
1056.292 -
1056.293 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1056.294 -
1056.295 -} // namespace aux
1056.296 -
1056.297 -
1056.298 -#define BOOST_PP_ITERATION_PARAMS_1 \
1056.299 -    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind.hpp>))
1056.300 -#include BOOST_PP_ITERATE()
1056.301 -
1056.302 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
1056.303 -    && !defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
1056.304 -/// if_/eval_if specializations
1056.305 -#   define AUX778076_SPEC_NAME if_
1056.306 -#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
1056.307 -#   include BOOST_PP_ITERATE()
1056.308 -
1056.309 -#if !defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
1056.310 -#   define AUX778076_SPEC_NAME eval_if
1056.311 -#   define BOOST_PP_ITERATION_PARAMS_1 (3,(3, 3, <boost/mpl/bind.hpp>))
1056.312 -#   include BOOST_PP_ITERATE()
1056.313 -#endif
1056.314 -#endif
1056.315 -
1056.316 -// real C++ version is already taken care of
1056.317 -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
1056.318 -    && !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
1056.319 -
1056.320 -namespace aux {
1056.321 -// apply_count_args
1056.322 -#define AUX778076_COUNT_ARGS_PREFIX bind
1056.323 -#define AUX778076_COUNT_ARGS_DEFAULT na
1056.324 -#define AUX778076_COUNT_ARGS_ARITY BOOST_MPL_LIMIT_METAFUNCTION_ARITY
1056.325 -#include <boost/mpl/aux_/count_args.hpp>
1056.326 -}
1056.327 -
1056.328 -// bind
1056.329 -template<
1056.330 -      typename F, AUX778076_BIND_PARAMS(typename T) AUX778076_DMC_PARAM()
1056.331 -    >
1056.332 -struct bind
1056.333 -    : aux::bind_chooser<
1056.334 -          aux::bind_count_args<AUX778076_BIND_PARAMS(T)>::value
1056.335 -        >::template result_< F,AUX778076_BIND_PARAMS(T) >::type
1056.336 -{
1056.337 -};
1056.338 -
1056.339 -BOOST_MPL_AUX_ARITY_SPEC(
1056.340 -      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
1056.341 -    , bind
1056.342 -    )
1056.343 -
1056.344 -BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(
1056.345 -      BOOST_PP_INC(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
1056.346 -    , bind
1056.347 -    )
1056.348 -
1056.349 -
1056.350 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1056.351 -
1056.352 -#   undef AUX778076_BIND_NESTED_DEFAULT_PARAMS
1056.353 -#   undef AUX778076_BIND_N_SPEC_PARAMS
1056.354 -#   undef AUX778076_BIND_N_PARAMS
1056.355 -#   undef AUX778076_BIND_DEFAULT_PARAMS
1056.356 -#   undef AUX778076_BIND_PARAMS
1056.357 -#   undef AUX778076_DMC_PARAM
1056.358 -#   undef AUX778076_APPLY
1056.359 -
1056.360 -}}
1056.361 -
1056.362 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
1056.363 -#endif // BOOST_MPL_BIND_HPP_INCLUDED
1056.364 -
1056.365 -///// iteration, depth == 1
1056.366 -
1056.367 -#elif BOOST_PP_ITERATION_DEPTH() == 1
1056.368 -
1056.369 -#   define i_ BOOST_PP_FRAME_ITERATION(1)
1056.370 -
1056.371 -#if defined(AUX778076_SPEC_NAME)
1056.372 -
1056.373 -// lazy metafunction specialization
1056.374 -template< template< BOOST_MPL_PP_PARAMS(i_, typename T) > class F, typename Tag >
1056.375 -struct BOOST_PP_CAT(quote,i_);
1056.376 -
1056.377 -template< BOOST_MPL_PP_PARAMS(i_, typename T) > struct AUX778076_SPEC_NAME;
1056.378 -
1056.379 -template<
1056.380 -      typename Tag AUX778076_BIND_N_PARAMS(i_, typename T)
1056.381 -    >
1056.382 -struct BOOST_PP_CAT(bind,i_)< 
1056.383 -      BOOST_PP_CAT(quote,i_)<AUX778076_SPEC_NAME,Tag>
1056.384 -    AUX778076_BIND_N_PARAMS(i_,T)
1056.385 -    >
1056.386 -{
1056.387 -    template<
1056.388 -          AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
1056.389 -        >
1056.390 -    struct apply
1056.391 -    {
1056.392 -     private:
1056.393 -        typedef mpl::arg<1> n1;
1056.394 -#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
1056.395 -#       include BOOST_PP_ITERATE()
1056.396 -
1056.397 -        typedef typename AUX778076_SPEC_NAME<
1056.398 -              typename t1::type
1056.399 -            , BOOST_MPL_PP_EXT_PARAMS(2, BOOST_PP_INC(i_), t)
1056.400 -            >::type f_;
1056.401 -
1056.402 -     public:
1056.403 -        typedef typename f_::type type;
1056.404 -    };
1056.405 -};
1056.406 -
1056.407 -#undef AUX778076_SPEC_NAME
1056.408 -
1056.409 -#else // AUX778076_SPEC_NAME
1056.410 -
1056.411 -template<
1056.412 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
1056.413 -    >
1056.414 -struct BOOST_PP_CAT(bind,i_)
1056.415 -{
1056.416 -    template<
1056.417 -          AUX778076_BIND_NESTED_DEFAULT_PARAMS(typename U, na)
1056.418 -        >
1056.419 -    struct apply
1056.420 -    {
1056.421 -     private:
1056.422 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
1056.423 -
1056.424 -        typedef aux::replace_unnamed_arg< F,mpl::arg<1> > r0;
1056.425 -        typedef typename r0::type a0;
1056.426 -        typedef typename r0::next n1;
1056.427 -        typedef typename aux::resolve_bind_arg<a0,AUX778076_BIND_PARAMS(U)>::type f_;
1056.428 -        ///
1056.429 -#   else
1056.430 -        typedef typename aux::resolve_bind_arg<F,AUX778076_BIND_PARAMS(U)>::type f_;
1056.431 -
1056.432 -#   endif // BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT
1056.433 -
1056.434 -#   if i_ > 0
1056.435 -#       define BOOST_PP_ITERATION_PARAMS_2 (3,(1, i_, <boost/mpl/bind.hpp>))
1056.436 -#       include BOOST_PP_ITERATE()
1056.437 -#   endif
1056.438 -
1056.439 -     public:
1056.440 -
1056.441 -#   define AUX778076_ARG(unused, i_, t) \
1056.442 -    BOOST_PP_COMMA_IF(i_) \
1056.443 -    typename BOOST_PP_CAT(t,BOOST_PP_INC(i_))::type \
1056.444 -/**/
1056.445 -
1056.446 -        typedef typename BOOST_PP_CAT(apply_wrap,i_)<
1056.447 -              f_ 
1056.448 -            BOOST_PP_COMMA_IF(i_) BOOST_MPL_PP_REPEAT(i_, AUX778076_ARG, t)
1056.449 -            >::type type;
1056.450 -
1056.451 -#   undef AUX778076_ARG
1056.452 -    };
1056.453 -};
1056.454 -
1056.455 -namespace aux {
1056.456 -
1056.457 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1056.458 -
1056.459 -template<
1056.460 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T), AUX778076_BIND_PARAMS(typename U)
1056.461 -    >
1056.462 -struct resolve_bind_arg<
1056.463 -      BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>,AUX778076_BIND_PARAMS(U)
1056.464 -    >
1056.465 -{
1056.466 -    typedef BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)> f_;
1056.467 -    typedef typename AUX778076_APPLY<f_, AUX778076_BIND_PARAMS(U)>::type type;
1056.468 -};
1056.469 -
1056.470 -#else
1056.471 -
1056.472 -template<
1056.473 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T)
1056.474 -    >
1056.475 -aux::yes_tag
1056.476 -is_bind_helper(BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T)>*);
1056.477 -
1056.478 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1056.479 -
1056.480 -} // namespace aux
1056.481 -
1056.482 -BOOST_MPL_AUX_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
1056.483 -BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(BOOST_PP_INC(i_), BOOST_PP_CAT(bind,i_))
1056.484 -
1056.485 -#   if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
1056.486 -#   if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1056.487 -    
1056.488 -#if i_ == BOOST_MPL_LIMIT_METAFUNCTION_ARITY
1056.489 -/// primary template (not a specialization!)
1056.490 -template<
1056.491 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
1056.492 -    >
1056.493 -struct bind
1056.494 -    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
1056.495 -{
1056.496 -};
1056.497 -#else
1056.498 -template<
1056.499 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T) AUX778076_DMC_PARAM()
1056.500 -    >
1056.501 -struct bind< F AUX778076_BIND_N_SPEC_PARAMS(i_, T, na) >
1056.502 -    : BOOST_PP_CAT(bind,i_)<F AUX778076_BIND_N_PARAMS(i_,T) >
1056.503 -{
1056.504 -};
1056.505 -#endif
1056.506 -
1056.507 -#   else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1056.508 -
1056.509 -namespace aux {
1056.510 -
1056.511 -template<>
1056.512 -struct bind_chooser<i_>
1056.513 -{
1056.514 -    template<
1056.515 -          typename F, AUX778076_BIND_PARAMS(typename T)
1056.516 -        >
1056.517 -    struct result_
1056.518 -    {
1056.519 -        typedef BOOST_PP_CAT(bind,i_)< F AUX778076_BIND_N_PARAMS(i_,T) > type;
1056.520 -    };
1056.521 -};
1056.522 -
1056.523 -} // namespace aux
1056.524 -
1056.525 -#   endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1056.526 -#   endif // BOOST_MPL_CFG_NO_BIND_TEMPLATE
1056.527 -
1056.528 -#endif // AUX778076_SPEC_NAME
1056.529 -
1056.530 -#   undef i_
1056.531 -
1056.532 -///// iteration, depth == 2
1056.533 -
1056.534 -#elif BOOST_PP_ITERATION_DEPTH() == 2
1056.535 -
1056.536 -#   define j_ BOOST_PP_FRAME_ITERATION(2)
1056.537 -#   if !defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
1056.538 -
1056.539 -        typedef aux::replace_unnamed_arg< BOOST_PP_CAT(T,j_),BOOST_PP_CAT(n,j_) > BOOST_PP_CAT(r,j_);
1056.540 -        typedef typename BOOST_PP_CAT(r,j_)::type BOOST_PP_CAT(a,j_);
1056.541 -        typedef typename BOOST_PP_CAT(r,j_)::next BOOST_PP_CAT(n,BOOST_PP_INC(j_));
1056.542 -        typedef aux::resolve_bind_arg<BOOST_PP_CAT(a,j_), AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
1056.543 -        ///
1056.544 -#   else
1056.545 -        typedef aux::resolve_bind_arg< BOOST_PP_CAT(T,j_),AUX778076_BIND_PARAMS(U)> BOOST_PP_CAT(t,j_);
1056.546 -
1056.547 -#   endif
1056.548 -#   undef j_
1056.549 -
1056.550 -#endif // BOOST_PP_IS_ITERATING
  1057.1 --- a/epoc32/include/stdapis/boost/mpl/bind_fwd.hpp	Tue Mar 16 16:12:26 2010 +0000
  1057.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1057.3 @@ -1,99 +0,0 @@
  1057.4 -
  1057.5 -#if !defined(BOOST_PP_IS_ITERATING)
  1057.6 -
  1057.7 -///// header body
  1057.8 -
  1057.9 -#ifndef BOOST_MPL_BIND_FWD_HPP_INCLUDED
 1057.10 -#define BOOST_MPL_BIND_FWD_HPP_INCLUDED
 1057.11 -
 1057.12 -// Copyright Aleksey Gurtovoy 2000-2004
 1057.13 -//
 1057.14 -// Distributed under the Boost Software License, Version 1.0. 
 1057.15 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1057.16 -// http://www.boost.org/LICENSE_1_0.txt)
 1057.17 -//
 1057.18 -// See http://www.boost.org/libs/mpl for documentation.
 1057.19 -
 1057.20 -// $Source: /cvsroot/boost/boost/boost/mpl/bind_fwd.hpp,v $
 1057.21 -// $Date: 2004/09/02 15:40:41 $
 1057.22 -// $Revision: 1.2 $
 1057.23 -
 1057.24 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1057.25 -#   include <boost/mpl/aux_/na.hpp>
 1057.26 -#endif
 1057.27 -
 1057.28 -#include <boost/mpl/aux_/config/bind.hpp>
 1057.29 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1057.30 -
 1057.31 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1057.32 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1057.33 -
 1057.34 -#   define BOOST_MPL_PREPROCESSED_HEADER bind_fwd.hpp
 1057.35 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1057.36 -
 1057.37 -#else
 1057.38 -
 1057.39 -#   include <boost/mpl/limits/arity.hpp>
 1057.40 -#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1057.41 -#   include <boost/mpl/aux_/preprocessor/default_params.hpp>
 1057.42 -#   include <boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp>
 1057.43 -
 1057.44 -#   include <boost/preprocessor/comma_if.hpp>
 1057.45 -#   include <boost/preprocessor/iterate.hpp>
 1057.46 -#   include <boost/preprocessor/cat.hpp>
 1057.47 -
 1057.48 -namespace boost { namespace mpl {
 1057.49 -
 1057.50 -// local macros, #undef-ined at the end of the header
 1057.51 -
 1057.52 -#   if defined(BOOST_MPL_CFG_DMC_AMBIGUOUS_CTPS)
 1057.53 -#       define AUX778076_DMC_PARAM() , int dummy_ = 0
 1057.54 -#   else
 1057.55 -#       define AUX778076_DMC_PARAM()
 1057.56 -#   endif
 1057.57 -
 1057.58 -#   define AUX778076_BIND_DEFAULT_PARAMS(param, value) \
 1057.59 -    BOOST_MPL_PP_DEFAULT_PARAMS( \
 1057.60 -          BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
 1057.61 -        , param \
 1057.62 -        , value \
 1057.63 -        ) \
 1057.64 -    AUX778076_DMC_PARAM() \
 1057.65 -    /**/
 1057.66 -
 1057.67 -#   define AUX778076_BIND_N_PARAMS(n, param) \
 1057.68 -    BOOST_PP_COMMA_IF(n) BOOST_MPL_PP_PARAMS(n, param) \
 1057.69 -    AUX778076_DMC_PARAM() \
 1057.70 -    /**/
 1057.71 -
 1057.72 -#if !defined(BOOST_MPL_CFG_NO_BIND_TEMPLATE)
 1057.73 -template<
 1057.74 -      typename F, AUX778076_BIND_DEFAULT_PARAMS(typename T, na)
 1057.75 -    >
 1057.76 -struct bind;
 1057.77 -#endif
 1057.78 -
 1057.79 -#define BOOST_PP_ITERATION_PARAMS_1 \
 1057.80 -    (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/bind_fwd.hpp>))
 1057.81 -#include BOOST_PP_ITERATE()
 1057.82 -
 1057.83 -#   undef AUX778076_BIND_N_PARAMS
 1057.84 -#   undef AUX778076_BIND_DEFAULT_PARAMS
 1057.85 -#   undef AUX778076_DMC_PARAM
 1057.86 -}}
 1057.87 -
 1057.88 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1057.89 -#endif // BOOST_MPL_BIND_FWD_HPP_INCLUDED
 1057.90 -
 1057.91 -///// iteration
 1057.92 -
 1057.93 -#else
 1057.94 -#define i_ BOOST_PP_FRAME_ITERATION(1)
 1057.95 -
 1057.96 -template<
 1057.97 -      typename F AUX778076_BIND_N_PARAMS(i_, typename T)
 1057.98 -    >
 1057.99 -struct BOOST_PP_CAT(bind,i_);
1057.100 -
1057.101 -#undef i_
1057.102 -#endif // BOOST_PP_IS_ITERATING
  1058.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1058.2 +++ b/epoc32/include/stdapis/boost/mpl/bool.hpp	Wed Mar 31 12:27:01 2010 +0100
  1058.3 @@ -0,0 +1,288 @@
  1058.4 +# /* Copyright (C) 2001
  1058.5 +#  * Housemarque Oy
  1058.6 +#  * http://www.housemarque.com
  1058.7 +#  *
  1058.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1058.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1058.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1058.11 +#  */
 1058.12 +#
 1058.13 +# /* Revised by Paul Mensonides (2002) */
 1058.14 +#
 1058.15 +# /* See http://www.boost.org for most recent version. */
 1058.16 +#
 1058.17 +# ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
 1058.18 +# define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
 1058.19 +#
 1058.20 +# include <boost/preprocessor/config/config.hpp>
 1058.21 +#
 1058.22 +# /* BOOST_PP_BOOL */
 1058.23 +#
 1058.24 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1058.25 +#    define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
 1058.26 +# else
 1058.27 +#    define BOOST_PP_BOOL(x) BOOST_PP_BOOL_OO((x))
 1058.28 +#    define BOOST_PP_BOOL_OO(par) BOOST_PP_BOOL_I ## par
 1058.29 +# endif
 1058.30 +#
 1058.31 +# define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
 1058.32 +#
 1058.33 +# define BOOST_PP_BOOL_0 0
 1058.34 +# define BOOST_PP_BOOL_1 1
 1058.35 +# define BOOST_PP_BOOL_2 1
 1058.36 +# define BOOST_PP_BOOL_3 1
 1058.37 +# define BOOST_PP_BOOL_4 1
 1058.38 +# define BOOST_PP_BOOL_5 1
 1058.39 +# define BOOST_PP_BOOL_6 1
 1058.40 +# define BOOST_PP_BOOL_7 1
 1058.41 +# define BOOST_PP_BOOL_8 1
 1058.42 +# define BOOST_PP_BOOL_9 1
 1058.43 +# define BOOST_PP_BOOL_10 1
 1058.44 +# define BOOST_PP_BOOL_11 1
 1058.45 +# define BOOST_PP_BOOL_12 1
 1058.46 +# define BOOST_PP_BOOL_13 1
 1058.47 +# define BOOST_PP_BOOL_14 1
 1058.48 +# define BOOST_PP_BOOL_15 1
 1058.49 +# define BOOST_PP_BOOL_16 1
 1058.50 +# define BOOST_PP_BOOL_17 1
 1058.51 +# define BOOST_PP_BOOL_18 1
 1058.52 +# define BOOST_PP_BOOL_19 1
 1058.53 +# define BOOST_PP_BOOL_20 1
 1058.54 +# define BOOST_PP_BOOL_21 1
 1058.55 +# define BOOST_PP_BOOL_22 1
 1058.56 +# define BOOST_PP_BOOL_23 1
 1058.57 +# define BOOST_PP_BOOL_24 1
 1058.58 +# define BOOST_PP_BOOL_25 1
 1058.59 +# define BOOST_PP_BOOL_26 1
 1058.60 +# define BOOST_PP_BOOL_27 1
 1058.61 +# define BOOST_PP_BOOL_28 1
 1058.62 +# define BOOST_PP_BOOL_29 1
 1058.63 +# define BOOST_PP_BOOL_30 1
 1058.64 +# define BOOST_PP_BOOL_31 1
 1058.65 +# define BOOST_PP_BOOL_32 1
 1058.66 +# define BOOST_PP_BOOL_33 1
 1058.67 +# define BOOST_PP_BOOL_34 1
 1058.68 +# define BOOST_PP_BOOL_35 1
 1058.69 +# define BOOST_PP_BOOL_36 1
 1058.70 +# define BOOST_PP_BOOL_37 1
 1058.71 +# define BOOST_PP_BOOL_38 1
 1058.72 +# define BOOST_PP_BOOL_39 1
 1058.73 +# define BOOST_PP_BOOL_40 1
 1058.74 +# define BOOST_PP_BOOL_41 1
 1058.75 +# define BOOST_PP_BOOL_42 1
 1058.76 +# define BOOST_PP_BOOL_43 1
 1058.77 +# define BOOST_PP_BOOL_44 1
 1058.78 +# define BOOST_PP_BOOL_45 1
 1058.79 +# define BOOST_PP_BOOL_46 1
 1058.80 +# define BOOST_PP_BOOL_47 1
 1058.81 +# define BOOST_PP_BOOL_48 1
 1058.82 +# define BOOST_PP_BOOL_49 1
 1058.83 +# define BOOST_PP_BOOL_50 1
 1058.84 +# define BOOST_PP_BOOL_51 1
 1058.85 +# define BOOST_PP_BOOL_52 1
 1058.86 +# define BOOST_PP_BOOL_53 1
 1058.87 +# define BOOST_PP_BOOL_54 1
 1058.88 +# define BOOST_PP_BOOL_55 1
 1058.89 +# define BOOST_PP_BOOL_56 1
 1058.90 +# define BOOST_PP_BOOL_57 1
 1058.91 +# define BOOST_PP_BOOL_58 1
 1058.92 +# define BOOST_PP_BOOL_59 1
 1058.93 +# define BOOST_PP_BOOL_60 1
 1058.94 +# define BOOST_PP_BOOL_61 1
 1058.95 +# define BOOST_PP_BOOL_62 1
 1058.96 +# define BOOST_PP_BOOL_63 1
 1058.97 +# define BOOST_PP_BOOL_64 1
 1058.98 +# define BOOST_PP_BOOL_65 1
 1058.99 +# define BOOST_PP_BOOL_66 1
1058.100 +# define BOOST_PP_BOOL_67 1
1058.101 +# define BOOST_PP_BOOL_68 1
1058.102 +# define BOOST_PP_BOOL_69 1
1058.103 +# define BOOST_PP_BOOL_70 1
1058.104 +# define BOOST_PP_BOOL_71 1
1058.105 +# define BOOST_PP_BOOL_72 1
1058.106 +# define BOOST_PP_BOOL_73 1
1058.107 +# define BOOST_PP_BOOL_74 1
1058.108 +# define BOOST_PP_BOOL_75 1
1058.109 +# define BOOST_PP_BOOL_76 1
1058.110 +# define BOOST_PP_BOOL_77 1
1058.111 +# define BOOST_PP_BOOL_78 1
1058.112 +# define BOOST_PP_BOOL_79 1
1058.113 +# define BOOST_PP_BOOL_80 1
1058.114 +# define BOOST_PP_BOOL_81 1
1058.115 +# define BOOST_PP_BOOL_82 1
1058.116 +# define BOOST_PP_BOOL_83 1
1058.117 +# define BOOST_PP_BOOL_84 1
1058.118 +# define BOOST_PP_BOOL_85 1
1058.119 +# define BOOST_PP_BOOL_86 1
1058.120 +# define BOOST_PP_BOOL_87 1
1058.121 +# define BOOST_PP_BOOL_88 1
1058.122 +# define BOOST_PP_BOOL_89 1
1058.123 +# define BOOST_PP_BOOL_90 1
1058.124 +# define BOOST_PP_BOOL_91 1
1058.125 +# define BOOST_PP_BOOL_92 1
1058.126 +# define BOOST_PP_BOOL_93 1
1058.127 +# define BOOST_PP_BOOL_94 1
1058.128 +# define BOOST_PP_BOOL_95 1
1058.129 +# define BOOST_PP_BOOL_96 1
1058.130 +# define BOOST_PP_BOOL_97 1
1058.131 +# define BOOST_PP_BOOL_98 1
1058.132 +# define BOOST_PP_BOOL_99 1
1058.133 +# define BOOST_PP_BOOL_100 1
1058.134 +# define BOOST_PP_BOOL_101 1
1058.135 +# define BOOST_PP_BOOL_102 1
1058.136 +# define BOOST_PP_BOOL_103 1
1058.137 +# define BOOST_PP_BOOL_104 1
1058.138 +# define BOOST_PP_BOOL_105 1
1058.139 +# define BOOST_PP_BOOL_106 1
1058.140 +# define BOOST_PP_BOOL_107 1
1058.141 +# define BOOST_PP_BOOL_108 1
1058.142 +# define BOOST_PP_BOOL_109 1
1058.143 +# define BOOST_PP_BOOL_110 1
1058.144 +# define BOOST_PP_BOOL_111 1
1058.145 +# define BOOST_PP_BOOL_112 1
1058.146 +# define BOOST_PP_BOOL_113 1
1058.147 +# define BOOST_PP_BOOL_114 1
1058.148 +# define BOOST_PP_BOOL_115 1
1058.149 +# define BOOST_PP_BOOL_116 1
1058.150 +# define BOOST_PP_BOOL_117 1
1058.151 +# define BOOST_PP_BOOL_118 1
1058.152 +# define BOOST_PP_BOOL_119 1
1058.153 +# define BOOST_PP_BOOL_120 1
1058.154 +# define BOOST_PP_BOOL_121 1
1058.155 +# define BOOST_PP_BOOL_122 1
1058.156 +# define BOOST_PP_BOOL_123 1
1058.157 +# define BOOST_PP_BOOL_124 1
1058.158 +# define BOOST_PP_BOOL_125 1
1058.159 +# define BOOST_PP_BOOL_126 1
1058.160 +# define BOOST_PP_BOOL_127 1
1058.161 +# define BOOST_PP_BOOL_128 1
1058.162 +# define BOOST_PP_BOOL_129 1
1058.163 +# define BOOST_PP_BOOL_130 1
1058.164 +# define BOOST_PP_BOOL_131 1
1058.165 +# define BOOST_PP_BOOL_132 1
1058.166 +# define BOOST_PP_BOOL_133 1
1058.167 +# define BOOST_PP_BOOL_134 1
1058.168 +# define BOOST_PP_BOOL_135 1
1058.169 +# define BOOST_PP_BOOL_136 1
1058.170 +# define BOOST_PP_BOOL_137 1
1058.171 +# define BOOST_PP_BOOL_138 1
1058.172 +# define BOOST_PP_BOOL_139 1
1058.173 +# define BOOST_PP_BOOL_140 1
1058.174 +# define BOOST_PP_BOOL_141 1
1058.175 +# define BOOST_PP_BOOL_142 1
1058.176 +# define BOOST_PP_BOOL_143 1
1058.177 +# define BOOST_PP_BOOL_144 1
1058.178 +# define BOOST_PP_BOOL_145 1
1058.179 +# define BOOST_PP_BOOL_146 1
1058.180 +# define BOOST_PP_BOOL_147 1
1058.181 +# define BOOST_PP_BOOL_148 1
1058.182 +# define BOOST_PP_BOOL_149 1
1058.183 +# define BOOST_PP_BOOL_150 1
1058.184 +# define BOOST_PP_BOOL_151 1
1058.185 +# define BOOST_PP_BOOL_152 1
1058.186 +# define BOOST_PP_BOOL_153 1
1058.187 +# define BOOST_PP_BOOL_154 1
1058.188 +# define BOOST_PP_BOOL_155 1
1058.189 +# define BOOST_PP_BOOL_156 1
1058.190 +# define BOOST_PP_BOOL_157 1
1058.191 +# define BOOST_PP_BOOL_158 1
1058.192 +# define BOOST_PP_BOOL_159 1
1058.193 +# define BOOST_PP_BOOL_160 1
1058.194 +# define BOOST_PP_BOOL_161 1
1058.195 +# define BOOST_PP_BOOL_162 1
1058.196 +# define BOOST_PP_BOOL_163 1
1058.197 +# define BOOST_PP_BOOL_164 1
1058.198 +# define BOOST_PP_BOOL_165 1
1058.199 +# define BOOST_PP_BOOL_166 1
1058.200 +# define BOOST_PP_BOOL_167 1
1058.201 +# define BOOST_PP_BOOL_168 1
1058.202 +# define BOOST_PP_BOOL_169 1
1058.203 +# define BOOST_PP_BOOL_170 1
1058.204 +# define BOOST_PP_BOOL_171 1
1058.205 +# define BOOST_PP_BOOL_172 1
1058.206 +# define BOOST_PP_BOOL_173 1
1058.207 +# define BOOST_PP_BOOL_174 1
1058.208 +# define BOOST_PP_BOOL_175 1
1058.209 +# define BOOST_PP_BOOL_176 1
1058.210 +# define BOOST_PP_BOOL_177 1
1058.211 +# define BOOST_PP_BOOL_178 1
1058.212 +# define BOOST_PP_BOOL_179 1
1058.213 +# define BOOST_PP_BOOL_180 1
1058.214 +# define BOOST_PP_BOOL_181 1
1058.215 +# define BOOST_PP_BOOL_182 1
1058.216 +# define BOOST_PP_BOOL_183 1
1058.217 +# define BOOST_PP_BOOL_184 1
1058.218 +# define BOOST_PP_BOOL_185 1
1058.219 +# define BOOST_PP_BOOL_186 1
1058.220 +# define BOOST_PP_BOOL_187 1
1058.221 +# define BOOST_PP_BOOL_188 1
1058.222 +# define BOOST_PP_BOOL_189 1
1058.223 +# define BOOST_PP_BOOL_190 1
1058.224 +# define BOOST_PP_BOOL_191 1
1058.225 +# define BOOST_PP_BOOL_192 1
1058.226 +# define BOOST_PP_BOOL_193 1
1058.227 +# define BOOST_PP_BOOL_194 1
1058.228 +# define BOOST_PP_BOOL_195 1
1058.229 +# define BOOST_PP_BOOL_196 1
1058.230 +# define BOOST_PP_BOOL_197 1
1058.231 +# define BOOST_PP_BOOL_198 1
1058.232 +# define BOOST_PP_BOOL_199 1
1058.233 +# define BOOST_PP_BOOL_200 1
1058.234 +# define BOOST_PP_BOOL_201 1
1058.235 +# define BOOST_PP_BOOL_202 1
1058.236 +# define BOOST_PP_BOOL_203 1
1058.237 +# define BOOST_PP_BOOL_204 1
1058.238 +# define BOOST_PP_BOOL_205 1
1058.239 +# define BOOST_PP_BOOL_206 1
1058.240 +# define BOOST_PP_BOOL_207 1
1058.241 +# define BOOST_PP_BOOL_208 1
1058.242 +# define BOOST_PP_BOOL_209 1
1058.243 +# define BOOST_PP_BOOL_210 1
1058.244 +# define BOOST_PP_BOOL_211 1
1058.245 +# define BOOST_PP_BOOL_212 1
1058.246 +# define BOOST_PP_BOOL_213 1
1058.247 +# define BOOST_PP_BOOL_214 1
1058.248 +# define BOOST_PP_BOOL_215 1
1058.249 +# define BOOST_PP_BOOL_216 1
1058.250 +# define BOOST_PP_BOOL_217 1
1058.251 +# define BOOST_PP_BOOL_218 1
1058.252 +# define BOOST_PP_BOOL_219 1
1058.253 +# define BOOST_PP_BOOL_220 1
1058.254 +# define BOOST_PP_BOOL_221 1
1058.255 +# define BOOST_PP_BOOL_222 1
1058.256 +# define BOOST_PP_BOOL_223 1
1058.257 +# define BOOST_PP_BOOL_224 1
1058.258 +# define BOOST_PP_BOOL_225 1
1058.259 +# define BOOST_PP_BOOL_226 1
1058.260 +# define BOOST_PP_BOOL_227 1
1058.261 +# define BOOST_PP_BOOL_228 1
1058.262 +# define BOOST_PP_BOOL_229 1
1058.263 +# define BOOST_PP_BOOL_230 1
1058.264 +# define BOOST_PP_BOOL_231 1
1058.265 +# define BOOST_PP_BOOL_232 1
1058.266 +# define BOOST_PP_BOOL_233 1
1058.267 +# define BOOST_PP_BOOL_234 1
1058.268 +# define BOOST_PP_BOOL_235 1
1058.269 +# define BOOST_PP_BOOL_236 1
1058.270 +# define BOOST_PP_BOOL_237 1
1058.271 +# define BOOST_PP_BOOL_238 1
1058.272 +# define BOOST_PP_BOOL_239 1
1058.273 +# define BOOST_PP_BOOL_240 1
1058.274 +# define BOOST_PP_BOOL_241 1
1058.275 +# define BOOST_PP_BOOL_242 1
1058.276 +# define BOOST_PP_BOOL_243 1
1058.277 +# define BOOST_PP_BOOL_244 1
1058.278 +# define BOOST_PP_BOOL_245 1
1058.279 +# define BOOST_PP_BOOL_246 1
1058.280 +# define BOOST_PP_BOOL_247 1
1058.281 +# define BOOST_PP_BOOL_248 1
1058.282 +# define BOOST_PP_BOOL_249 1
1058.283 +# define BOOST_PP_BOOL_250 1
1058.284 +# define BOOST_PP_BOOL_251 1
1058.285 +# define BOOST_PP_BOOL_252 1
1058.286 +# define BOOST_PP_BOOL_253 1
1058.287 +# define BOOST_PP_BOOL_254 1
1058.288 +# define BOOST_PP_BOOL_255 1
1058.289 +# define BOOST_PP_BOOL_256 1
1058.290 +#
1058.291 +# endif
  1059.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1059.2 +++ b/epoc32/include/stdapis/boost/mpl/clear.hpp	Wed Mar 31 12:27:01 2010 +0100
  1059.3 @@ -0,0 +1,55 @@
  1059.4 +
  1059.5 +#ifndef BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
  1059.6 +#define BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
  1059.7 +
  1059.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1059.9 +//
 1059.10 +// Distributed under the Boost Software License, Version 1.0. 
 1059.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1059.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1059.13 +//
 1059.14 +// See http://www.boost.org/libs/mpl for documentation.
 1059.15 +
 1059.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/clear.hpp,v $
 1059.17 +// $Date: 2004/09/02 15:41:19 $
 1059.18 +// $Revision: 1.4 $
 1059.19 +
 1059.20 +#include <boost/mpl/clear_fwd.hpp>
 1059.21 +#include <boost/mpl/vector/aux_/vector0.hpp>
 1059.22 +#include <boost/mpl/vector/aux_/tag.hpp>
 1059.23 +#include <boost/mpl/aux_/config/typeof.hpp>
 1059.24 +#include <boost/mpl/aux_/config/ctps.hpp>
 1059.25 +
 1059.26 +namespace boost { namespace mpl {
 1059.27 +
 1059.28 +#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1059.29 +
 1059.30 +template<>
 1059.31 +struct clear_impl< aux::vector_tag >
 1059.32 +{
 1059.33 +    template< typename Vector > struct apply
 1059.34 +    {
 1059.35 +        typedef vector0<> type;
 1059.36 +    };
 1059.37 +};
 1059.38 +
 1059.39 +#else
 1059.40 +
 1059.41 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1059.42 +
 1059.43 +template< long N >
 1059.44 +struct clear_impl< aux::vector_tag<N> >
 1059.45 +{
 1059.46 +    template< typename Vector > struct apply
 1059.47 +    {
 1059.48 +        typedef vector0<> type;
 1059.49 +    };
 1059.50 +};
 1059.51 +
 1059.52 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1059.53 +
 1059.54 +#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1059.55 +
 1059.56 +}}
 1059.57 +
 1059.58 +#endif // BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
  1060.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1060.2 +++ b/epoc32/include/stdapis/boost/mpl/empty.hpp	Wed Mar 31 12:27:01 2010 +0100
  1060.3 @@ -0,0 +1,67 @@
  1060.4 +// Boost.Range library
  1060.5 +//
  1060.6 +//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
  1060.7 +//  distribution is subject to the Boost Software License, Version
  1060.8 +//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1060.9 +//  http://www.boost.org/LICENSE_1_0.txt)
 1060.10 +//
 1060.11 +// For more information, see http://www.boost.org/libs/range/
 1060.12 +//
 1060.13 +
 1060.14 +#ifndef BOOST_RANGE_EMPTY_HPP
 1060.15 +#define BOOST_RANGE_EMPTY_HPP
 1060.16 +
 1060.17 +#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1060.18 +# pragma once
 1060.19 +#endif
 1060.20 +
 1060.21 +#include <boost/range/config.hpp>
 1060.22 +//#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 1060.23 +//#include <boost/range/detail/empty.hpp>
 1060.24 +//#else
 1060.25 +
 1060.26 +#include <boost/range/begin.hpp>
 1060.27 +#include <boost/range/end.hpp>
 1060.28 +
 1060.29 +namespace boost 
 1060.30 +{ 
 1060.31 +namespace range_detail 
 1060.32 +{
 1060.33 +
 1060.34 +        //////////////////////////////////////////////////////////////////////
 1060.35 +        // primary template
 1060.36 +        //////////////////////////////////////////////////////////////////////
 1060.37 +
 1060.38 +        template< typename C >
 1060.39 +        inline bool empty( const C& c )
 1060.40 +        {
 1060.41 +            return boost::begin( c ) == boost::end( c );
 1060.42 +        }
 1060.43 +
 1060.44 +        //////////////////////////////////////////////////////////////////////
 1060.45 +        // string
 1060.46 +        //////////////////////////////////////////////////////////////////////
 1060.47 +
 1060.48 +        inline bool empty( const char* const& s )
 1060.49 +        {
 1060.50 +            return s == 0 || s[0] == 0;
 1060.51 +        }
 1060.52 +
 1060.53 +        inline bool empty( const wchar_t* const& s )
 1060.54 +        {
 1060.55 +            return s == 0 || s[0] == 0;
 1060.56 +        }
 1060.57 +        
 1060.58 +} // namespace 'range_detail'
 1060.59 +
 1060.60 +template< class T >
 1060.61 +inline bool empty( const T& r )
 1060.62 +{
 1060.63 +    return range_detail::empty( r );
 1060.64 +}
 1060.65 +
 1060.66 +} // namepace 'boost'
 1060.67 +
 1060.68 +//#endif //  BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 1060.69 +
 1060.70 +#endif
  1061.1 --- a/epoc32/include/stdapis/boost/mpl/equal_to.hpp	Tue Mar 16 16:12:26 2010 +0000
  1061.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1061.3 @@ -1,21 +0,0 @@
  1061.4 -
  1061.5 -#ifndef BOOST_MPL_EQUAL_TO_HPP_INCLUDED
  1061.6 -#define BOOST_MPL_EQUAL_TO_HPP_INCLUDED
  1061.7 -
  1061.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1061.9 -//
 1061.10 -// Distributed under the Boost Software License, Version 1.0. 
 1061.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1061.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1061.13 -//
 1061.14 -// See http://www.boost.org/libs/mpl for documentation.
 1061.15 -
 1061.16 -// $Source: /cvsroot/boost/boost/boost/mpl/equal_to.hpp,v $
 1061.17 -// $Date: 2004/09/02 15:40:41 $
 1061.18 -// $Revision: 1.3 $
 1061.19 -
 1061.20 -#define AUX778076_OP_NAME equal_to
 1061.21 -#define AUX778076_OP_TOKEN ==
 1061.22 -#include <boost/mpl/aux_/comparison_op.hpp>
 1061.23 -
 1061.24 -#endif // BOOST_MPL_EQUAL_TO_HPP_INCLUDED
  1062.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1062.2 +++ b/epoc32/include/stdapis/boost/mpl/for_each.hpp	Wed Mar 31 12:27:01 2010 +0100
  1062.3 @@ -0,0 +1,60 @@
  1062.4 +# /* **************************************************************************
  1062.5 +#  *                                                                          *
  1062.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1062.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1062.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1062.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1062.10 +#  *                                                                          *
 1062.11 +#  ************************************************************************** */
 1062.12 +#
 1062.13 +# /* See http://www.boost.org for most recent version. */
 1062.14 +#
 1062.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_HPP
 1062.16 +# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_HPP
 1062.17 +#
 1062.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1062.19 +# include <boost/preprocessor/config/config.hpp>
 1062.20 +# include <boost/preprocessor/repetition/for.hpp>
 1062.21 +# include <boost/preprocessor/seq/seq.hpp>
 1062.22 +# include <boost/preprocessor/seq/size.hpp>
 1062.23 +# include <boost/preprocessor/tuple/elem.hpp>
 1062.24 +# include <boost/preprocessor/tuple/rem.hpp>
 1062.25 +#
 1062.26 +# /* BOOST_PP_SEQ_FOR_EACH */
 1062.27 +#
 1062.28 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1062.29 +#    define BOOST_PP_SEQ_FOR_EACH(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1062.30 +# else
 1062.31 +#    define BOOST_PP_SEQ_FOR_EACH(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_D(macro, data, seq)
 1062.32 +#    define BOOST_PP_SEQ_FOR_EACH_D(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1062.33 +# endif
 1062.34 +#
 1062.35 +# define BOOST_PP_SEQ_FOR_EACH_P(r, x) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3, 2, x)))
 1062.36 +#
 1062.37 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1062.38 +#    define BOOST_PP_SEQ_FOR_EACH_O(r, x) BOOST_PP_SEQ_FOR_EACH_O_I x
 1062.39 +# else
 1062.40 +#    define BOOST_PP_SEQ_FOR_EACH_O(r, x) BOOST_PP_SEQ_FOR_EACH_O_I(BOOST_PP_TUPLE_ELEM(3, 0, x), BOOST_PP_TUPLE_ELEM(3, 1, x), BOOST_PP_TUPLE_ELEM(3, 2, x))
 1062.41 +# endif
 1062.42 +#
 1062.43 +# define BOOST_PP_SEQ_FOR_EACH_O_I(macro, data, seq) (macro, data, BOOST_PP_SEQ_TAIL(seq))
 1062.44 +#
 1062.45 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1062.46 +#    define BOOST_PP_SEQ_FOR_EACH_M(r, x) BOOST_PP_SEQ_FOR_EACH_M_IM(r, BOOST_PP_TUPLE_REM_3 x)
 1062.47 +#    define BOOST_PP_SEQ_FOR_EACH_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_M_I(r, im)
 1062.48 +# else
 1062.49 +#    define BOOST_PP_SEQ_FOR_EACH_M(r, x) BOOST_PP_SEQ_FOR_EACH_M_I(r, BOOST_PP_TUPLE_ELEM(3, 0, x), BOOST_PP_TUPLE_ELEM(3, 1, x), BOOST_PP_TUPLE_ELEM(3, 2, x))
 1062.50 +# endif
 1062.51 +#
 1062.52 +# define BOOST_PP_SEQ_FOR_EACH_M_I(r, macro, data, seq) macro(r, data, BOOST_PP_SEQ_HEAD(seq))
 1062.53 +#
 1062.54 +# /* BOOST_PP_SEQ_FOR_EACH_R */
 1062.55 +#
 1062.56 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1062.57 +#    define BOOST_PP_SEQ_FOR_EACH_R(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1062.58 +# else
 1062.59 +#    define BOOST_PP_SEQ_FOR_EACH_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq)
 1062.60 +#    define BOOST_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1062.61 +# endif
 1062.62 +#
 1062.63 +# endif
  1063.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1063.2 +++ b/epoc32/include/stdapis/boost/mpl/front.hpp	Wed Mar 31 12:27:01 2010 +0100
  1063.3 @@ -0,0 +1,56 @@
  1063.4 +
  1063.5 +#ifndef BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
  1063.6 +#define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
  1063.7 +
  1063.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1063.9 +//
 1063.10 +// Distributed under the Boost Software License, Version 1.0. 
 1063.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1063.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1063.13 +//
 1063.14 +// See http://www.boost.org/libs/mpl for documentation.
 1063.15 +
 1063.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/front.hpp,v $
 1063.17 +// $Date: 2004/09/02 15:41:19 $
 1063.18 +// $Revision: 1.4 $
 1063.19 +
 1063.20 +#include <boost/mpl/front_fwd.hpp>
 1063.21 +#include <boost/mpl/vector/aux_/at.hpp>
 1063.22 +#include <boost/mpl/vector/aux_/tag.hpp>
 1063.23 +#include <boost/mpl/aux_/nttp_decl.hpp>
 1063.24 +#include <boost/mpl/aux_/config/typeof.hpp>
 1063.25 +#include <boost/mpl/aux_/config/ctps.hpp>
 1063.26 +
 1063.27 +namespace boost { namespace mpl {
 1063.28 +
 1063.29 +#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1063.30 +
 1063.31 +template<>
 1063.32 +struct front_impl< aux::vector_tag >
 1063.33 +{
 1063.34 +    template< typename Vector > struct apply
 1063.35 +        : v_at<Vector,0>
 1063.36 +    {
 1063.37 +    };
 1063.38 +};
 1063.39 +
 1063.40 +#else
 1063.41 +
 1063.42 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1063.43 +
 1063.44 +template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
 1063.45 +struct front_impl< aux::vector_tag<n_> >
 1063.46 +{
 1063.47 +    template< typename Vector > struct apply
 1063.48 +    {
 1063.49 +        typedef typename Vector::item0 type;
 1063.50 +    };
 1063.51 +};
 1063.52 +
 1063.53 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1063.54 +
 1063.55 +#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1063.56 +
 1063.57 +}}
 1063.58 +
 1063.59 +#endif // BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
  1064.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1064.2 +++ b/epoc32/include/stdapis/boost/mpl/identity.hpp	Wed Mar 31 12:27:01 2010 +0100
  1064.3 @@ -0,0 +1,17 @@
  1064.4 +# /* **************************************************************************
  1064.5 +#  *                                                                          *
  1064.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1064.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1064.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1064.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1064.10 +#  *                                                                          *
 1064.11 +#  ************************************************************************** */
 1064.12 +#
 1064.13 +# /* See http://www.boost.org for most recent version. */
 1064.14 +#
 1064.15 +# ifndef BOOST_PREPROCESSOR_IDENTITY_HPP
 1064.16 +# define BOOST_PREPROCESSOR_IDENTITY_HPP
 1064.17 +#
 1064.18 +# include <boost/preprocessor/facilities/identity.hpp>
 1064.19 +#
 1064.20 +# endif
  1065.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1065.2 +++ b/epoc32/include/stdapis/boost/mpl/if.hpp	Wed Mar 31 12:27:01 2010 +0100
  1065.3 @@ -0,0 +1,30 @@
  1065.4 +# /* Copyright (C) 2001
  1065.5 +#  * Housemarque Oy
  1065.6 +#  * http://www.housemarque.com
  1065.7 +#  *
  1065.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1065.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1065.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1065.11 +#  */
 1065.12 +#
 1065.13 +# /* Revised by Paul Mensonides (2002) */
 1065.14 +#
 1065.15 +# /* See http://www.boost.org for most recent version. */
 1065.16 +#
 1065.17 +# ifndef BOOST_PREPROCESSOR_CONTROL_IF_HPP
 1065.18 +# define BOOST_PREPROCESSOR_CONTROL_IF_HPP
 1065.19 +#
 1065.20 +# include <boost/preprocessor/config/config.hpp>
 1065.21 +# include <boost/preprocessor/control/iif.hpp>
 1065.22 +# include <boost/preprocessor/logical/bool.hpp>
 1065.23 +#
 1065.24 +# /* BOOST_PP_IF */
 1065.25 +#
 1065.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1065.27 +#    define BOOST_PP_IF(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
 1065.28 +# else
 1065.29 +#    define BOOST_PP_IF(cond, t, f) BOOST_PP_IF_I(cond, t, f)
 1065.30 +#    define BOOST_PP_IF_I(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
 1065.31 +# endif
 1065.32 +#
 1065.33 +# endif
  1066.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1066.2 +++ b/epoc32/include/stdapis/boost/mpl/iterator_range.hpp	Wed Mar 31 12:27:01 2010 +0100
  1066.3 @@ -0,0 +1,608 @@
  1066.4 +// Boost.Range library
  1066.5 +//
  1066.6 +//  Copyright Thorsten Ottosen & Pavol Droba 2003-2004. Use, modification and
  1066.7 +//  distribution is subject to the Boost Software License, Version
  1066.8 +//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1066.9 +//  http://www.boost.org/LICENSE_1_0.txt)
 1066.10 +//
 1066.11 +// For more information, see http://www.boost.org/libs/range/
 1066.12 +//
 1066.13 +
 1066.14 +#ifndef BOOST_RANGE_ITERATOR_RANGE_HPP
 1066.15 +#define BOOST_RANGE_ITERATOR_RANGE_HPP
 1066.16 +
 1066.17 +// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
 1066.18 +#include <boost/config.hpp> // Define __STL_CONFIG_H, if appropriate.
 1066.19 +#ifndef BOOST_OLD_IOSTREAMS 
 1066.20 +# if defined(__STL_CONFIG_H) && \
 1066.21 +    !defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \
 1066.22 +    /**/
 1066.23 +#  define BOOST_OLD_IOSTREAMS
 1066.24 +# endif
 1066.25 +#endif // #ifndef BOOST_OLD_IOSTREAMS
 1066.26 +
 1066.27 +#include <boost/detail/workaround.hpp>
 1066.28 +#include <boost/range/functions.hpp>
 1066.29 +#include <boost/range/result_iterator.hpp>
 1066.30 +#include <boost/range/difference_type.hpp>
 1066.31 +#include <boost/iterator/iterator_traits.hpp>    
 1066.32 +#include <boost/assert.hpp>
 1066.33 +#include <iterator>
 1066.34 +#include <algorithm>
 1066.35 +#ifndef BOOST_OLD_IOSTREAMS
 1066.36 +# include <ostream>
 1066.37 +#else
 1066.38 +# include <ostream.h>
 1066.39 +#endif
 1066.40 +#include <cstddef>
 1066.41 +
 1066.42 +
 1066.43 +/*! \file
 1066.44 +    Defines the \c iterator_class and related functions. 
 1066.45 +    \c iterator_range is a simple wrapper of iterator pair idiom. It provides
 1066.46 +    a rich subset of Container interface.
 1066.47 +*/
 1066.48 +
 1066.49 +
 1066.50 +namespace boost 
 1066.51 +{
 1066.52 +    namespace iterator_range_detail
 1066.53 +    {
 1066.54 +        //
 1066.55 +        // The functions adl_begin and adl_end are implemented in a separate
 1066.56 +        // class for gcc-2.9x
 1066.57 +        //
 1066.58 +        template<typename IteratorT>
 1066.59 +        struct iterator_range_impl {
 1066.60 +            template< class ForwardRange >
 1066.61 +            static IteratorT adl_begin( ForwardRange& r )
 1066.62 +            {
 1066.63 +                return IteratorT( boost::begin( r ) );
 1066.64 +            }
 1066.65 +            
 1066.66 +            template< class ForwardRange >
 1066.67 +            static IteratorT adl_end( ForwardRange& r )
 1066.68 +            {
 1066.69 +                return IteratorT( boost::end( r ) );
 1066.70 +            }
 1066.71 +        };
 1066.72 + 
 1066.73 +        template< class Left, class Right >
 1066.74 +        inline bool equal( const Left& l, const Right& r )
 1066.75 +        {
 1066.76 +            typedef BOOST_DEDUCED_TYPENAME boost::range_size<Left>::type sz_type;
 1066.77 +
 1066.78 +            sz_type l_size = boost::size( l ),
 1066.79 +                    r_size = boost::size( r );
 1066.80 +
 1066.81 +            if( l_size != r_size )
 1066.82 +                return false;
 1066.83 +
 1066.84 +            return std::equal( boost::begin(l), boost::end(l), 
 1066.85 +                               boost::begin(r) );                
 1066.86 +        }
 1066.87 +
 1066.88 +        template< class Left, class Right >
 1066.89 +        inline bool less_than( const Left& l, const Right& r )
 1066.90 +        {                
 1066.91 +            return std::lexicographical_compare( boost::begin(l), 
 1066.92 +                                                 boost::end(l), 
 1066.93 +                                                 boost::begin(r), 
 1066.94 +                                                 boost::end(r) );                
 1066.95 +        }
 1066.96 +           
 1066.97 +        struct range_tag { };
 1066.98 +        struct const_range_tag { };
 1066.99 +
1066.100 +    }
1066.101 +
1066.102 +//  iterator range template class -----------------------------------------//
1066.103 +
1066.104 +        //! iterator_range class
1066.105 +        /*!
1066.106 +            An \c iterator_range delimits a range in a sequence by beginning and ending iterators. 
1066.107 +            An iterator_range can be passed to an algorithm which requires a sequence as an input. 
1066.108 +            For example, the \c toupper() function may be used most frequently on strings, 
1066.109 +            but can also be used on iterator_ranges: 
1066.110 +            
1066.111 +            \code
1066.112 +                boost::tolower( find( s, "UPPERCASE STRING" ) );
1066.113 +            \endcode
1066.114 +
1066.115 +            Many algorithms working with sequences take a pair of iterators, 
1066.116 +            delimiting a working range, as an arguments. The \c iterator_range class is an 
1066.117 +            encapsulation of a range identified by a pair of iterators. 
1066.118 +            It provides a collection interface, 
1066.119 +            so it is possible to pass an instance to an algorithm requiring a collection as an input. 
1066.120 +        */
1066.121 +        template<typename IteratorT> 
1066.122 +        class iterator_range
1066.123 +        {
1066.124 +        protected: // Used by sub_range
1066.125 +            //! implementation class
1066.126 +            typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
1066.127 +        public:
1066.128 +
1066.129 +            //! this type
1066.130 +            typedef iterator_range<IteratorT> type;
1066.131 +            //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
1066.132 +        
1066.133 +            //! Encapsulated value type
1066.134 +            typedef BOOST_DEDUCED_TYPENAME 
1066.135 +                iterator_value<IteratorT>::type value_type;
1066.136 +
1066.137 +            //! Difference type
1066.138 +            typedef BOOST_DEDUCED_TYPENAME 
1066.139 +                iterator_difference<IteratorT>::type difference_type;
1066.140 +            
1066.141 +            //! Size type
1066.142 +            typedef std::size_t size_type; // note: must be unsigned
1066.143 +
1066.144 +            //! This type
1066.145 +            typedef iterator_range<IteratorT> this_type;
1066.146 +
1066.147 +            //! Refence type
1066.148 +            //
1066.149 +            // Needed because value-type is the same for 
1066.150 +            // const and non-const iterators
1066.151 +            //
1066.152 +            typedef BOOST_DEDUCED_TYPENAME
1066.153 +                iterator_reference<IteratorT>::type reference;
1066.154 +            
1066.155 +            //! const_iterator type
1066.156 +            /*! 
1066.157 +                There is no distinction between const_iterator and iterator.
1066.158 +                These typedefs are provides to fulfill container interface
1066.159 +            */ 
1066.160 +            typedef IteratorT const_iterator;
1066.161 +            //! iterator type
1066.162 +            typedef IteratorT iterator;
1066.163 +
1066.164 +            iterator_range() : m_Begin( iterator() ), m_End( iterator() ), 
1066.165 +                               singular( true )
1066.166 +            { }
1066.167 +/*
1066.168 +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))  
1066.169 +            iterator_range( this_type r ) :
1066.170 +            : m_Begin(r.begin()), m_End(r.end())
1066.171 +            { }
1066.172 +
1066.173 +            this_type& operator=( this_type r )
1066.174 +            {
1066.175 +                m_Begin = r.begin();
1066.176 +                m_End   = r.end();
1066.177 +                return *this;
1066.178 +            }
1066.179 +#endif
1066.180 +*/            
1066.181 +            //! Constructor from a pair of iterators
1066.182 +            template< class Iterator >
1066.183 +            iterator_range( Iterator Begin, Iterator End ) : 
1066.184 +                m_Begin(Begin), m_End(End), singular(false) {}
1066.185 +
1066.186 +            //! Constructor from a Range
1066.187 +            template< class Range >
1066.188 +            iterator_range( const Range& r ) : 
1066.189 +                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1066.190 +                singular(false) {}
1066.191 +
1066.192 +            //! Constructor from a Range
1066.193 +            template< class Range >
1066.194 +            iterator_range( Range& r ) : 
1066.195 +                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1066.196 +                singular(false) {}
1066.197 +
1066.198 +            //! Constructor from a Range
1066.199 +            template< class Range >
1066.200 +            iterator_range( const Range& r, iterator_range_detail::const_range_tag ) : 
1066.201 +                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1066.202 +                singular(false) {}
1066.203 +
1066.204 +            //! Constructor from a Range
1066.205 +            template< class Range >
1066.206 +            iterator_range( Range& r, iterator_range_detail::range_tag ) : 
1066.207 +                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1066.208 +                singular(false) {}
1066.209 +
1066.210 +            #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1066.211 +            this_type& operator=( const this_type& r )    
1066.212 +            {
1066.213 +                m_Begin  = r.begin(); 
1066.214 +                m_End    = r.end();
1066.215 +                //
1066.216 +                // remark: this need not necessarily be true, but it does no harm
1066.217 +                //
1066.218 +                singular = r.singular;
1066.219 +                return *this;
1066.220 +            }
1066.221 +            #endif
1066.222 +                
1066.223 +            template< class Iterator >
1066.224 +            iterator_range& operator=( const iterator_range<Iterator>& r )    
1066.225 +            {
1066.226 +                m_Begin  = r.begin(); 
1066.227 +                m_End    = r.end();
1066.228 +                //
1066.229 +                // remark: this need not necessarily be true, but it does no harm
1066.230 +                //
1066.231 +                singular = r.empty();
1066.232 +                return *this;
1066.233 +            }
1066.234 +                                      
1066.235 +            template< class ForwardRange >
1066.236 +            iterator_range& operator=( ForwardRange& r )
1066.237 +            {
1066.238 +                m_Begin  = impl::adl_begin( r ); 
1066.239 +                m_End    = impl::adl_end( r );
1066.240 +                singular = false;
1066.241 +                return *this;
1066.242 +            }
1066.243 +
1066.244 +            template< class ForwardRange >
1066.245 +            iterator_range& operator=( const ForwardRange& r )
1066.246 +            {
1066.247 +                m_Begin  = impl::adl_begin( r ); 
1066.248 +                m_End    = impl::adl_end( r );
1066.249 +                singular = false;
1066.250 +                return *this;
1066.251 +            }
1066.252 +
1066.253 +            IteratorT begin() const 
1066.254 +            { 
1066.255 +                return m_Begin; 
1066.256 +            }
1066.257 +
1066.258 +            IteratorT end() const 
1066.259 +            { 
1066.260 +                return m_End; 
1066.261 +            } 
1066.262 +
1066.263 +            size_type size() const
1066.264 +            { 
1066.265 +                if( singular )
1066.266 +                    return 0;
1066.267 +
1066.268 +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
1066.269 +                return std::distance<IteratorT>( m_Begin, m_End );
1066.270 +#else                
1066.271 +                return std::distance( m_Begin, m_End );
1066.272 +#endif                
1066.273 +            }
1066.274 +            
1066.275 +            bool empty() const
1066.276 +            {
1066.277 +                if( singular )
1066.278 +                    return true;
1066.279 +                
1066.280 +                return m_Begin == m_End;
1066.281 +            }
1066.282 +
1066.283 +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))  
1066.284 +            operator bool() const
1066.285 +            {
1066.286 +                return !empty();
1066.287 +            }                                    
1066.288 +#else            
1066.289 +            typedef iterator (iterator_range::*unspecified_bool_type) () const;
1066.290 +            operator unspecified_bool_type() const
1066.291 +            {
1066.292 +                return empty() ? 0: &iterator_range::end;
1066.293 +            }
1066.294 +#endif
1066.295 +
1066.296 +            bool equal( const iterator_range& r ) const
1066.297 +            {
1066.298 +                return singular == r.singular && m_Begin == r.m_Begin && m_End == r.m_End;
1066.299 +            }
1066.300 +
1066.301 +
1066.302 +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.303 +
1066.304 +            bool operator==( const iterator_range& r ) const
1066.305 +            {
1066.306 +                return iterator_range_detail::equal( *this, r );
1066.307 +            }
1066.308 +
1066.309 +            bool operator!=( const iterator_range& r ) const
1066.310 +            {
1066.311 +                return !operator==(r);
1066.312 +            }
1066.313 +
1066.314 +           bool operator<( const iterator_range& r ) const
1066.315 +           {
1066.316 +                return iterator_range_detail::less_than( *this, r );
1066.317 +           }
1066.318 +
1066.319 +#endif            
1066.320 +
1066.321 +        public: // convenience
1066.322 +           reference front() const
1066.323 +           {
1066.324 +               BOOST_ASSERT( !empty() );
1066.325 +               return *m_Begin;
1066.326 +           }
1066.327 +    
1066.328 +           reference back() const
1066.329 +           {
1066.330 +               BOOST_ASSERT( !empty() );
1066.331 +               IteratorT last( m_End );
1066.332 +               return *--last;
1066.333 +           }
1066.334 +    
1066.335 +           reference operator[]( size_type sz ) const
1066.336 +           {
1066.337 +               //BOOST_STATIC_ASSERT( is_random_access );
1066.338 +               BOOST_ASSERT( sz < size() );
1066.339 +               return m_Begin[sz];
1066.340 +           }
1066.341 +
1066.342 +           iterator_range& advance_begin( difference_type n )
1066.343 +           {
1066.344 +               std::advance( m_Begin, n );
1066.345 +               return *this;
1066.346 +           }
1066.347 +           
1066.348 +           iterator_range& advance_end( difference_type n )
1066.349 +           {
1066.350 +               std::advance( m_End, n );
1066.351 +               return *this;
1066.352 +           }
1066.353 +           
1066.354 +        private:
1066.355 +            // begin and end iterators
1066.356 +            IteratorT m_Begin;
1066.357 +            IteratorT m_End;
1066.358 +            bool      singular;
1066.359 +        };
1066.360 +
1066.361 +//  iterator range free-standing operators ---------------------------//
1066.362 +
1066.363 +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.364 +#else
1066.365 +        template< class Iterator >
1066.366 +        inline bool empty( const iterator_range<Iterator>& r )
1066.367 +        {
1066.368 +            //
1066.369 +            // this will preserve the well-defined empty() even 
1066.370 +            // though 'r' is singular.
1066.371 +            //
1066.372 +            return r.empty();
1066.373 +        }
1066.374 +#endif
1066.375 +
1066.376 +#ifndef BOOST_OLD_IOSTREAMS   
1066.377 +
1066.378 +        //! iterator_range output operator
1066.379 +        /*!
1066.380 +            Output the range to an ostream. Elements are outputed
1066.381 +            in a sequence without separators.
1066.382 +        */
1066.383 +        template< typename IteratorT, typename Elem, typename Traits >
1066.384 +        inline std::basic_ostream<Elem,Traits>& operator<<( 
1066.385 +                    std::basic_ostream<Elem, Traits>& Os,
1066.386 +                    const iterator_range<IteratorT>& r )
1066.387 +        {
1066.388 +            std::copy( r.begin(), r.end(), 
1066.389 +                       std::ostream_iterator< BOOST_DEDUCED_TYPENAME 
1066.390 +                                            iterator_value<IteratorT>::type, 
1066.391 +                                              Elem, Traits>(Os) );
1066.392 +            return Os;
1066.393 +        }
1066.394 +
1066.395 +#else
1066.396 +
1066.397 +        //! iterator_range output operator
1066.398 +        /*!
1066.399 +            Output the range to an ostream. Elements are outputed
1066.400 +            in a sequence without separators.
1066.401 +        */
1066.402 +        template< typename IteratorT >
1066.403 +        inline std::ostream& operator<<( 
1066.404 +                    std::ostream& Os,
1066.405 +                    const iterator_range<IteratorT>& r )
1066.406 +        {
1066.407 +            std::copy( r.begin(), r.end(), std::ostream_iterator<char>(Os));
1066.408 +            return Os;
1066.409 +        }
1066.410 +
1066.411 +#endif
1066.412 +
1066.413 +        /////////////////////////////////////////////////////////////////////
1066.414 +        // comparison operators
1066.415 +        /////////////////////////////////////////////////////////////////////
1066.416 +
1066.417 +        template< class IteratorT, class ForwardRange >
1066.418 +        inline bool operator==( const ForwardRange& l, 
1066.419 +                                const iterator_range<IteratorT>& r )
1066.420 +        {
1066.421 +            return iterator_range_detail::equal( l, r );
1066.422 +        }
1066.423 +
1066.424 +        template< class IteratorT, class ForwardRange >
1066.425 +        inline bool operator!=( const ForwardRange& l, 
1066.426 +                                const iterator_range<IteratorT>& r )
1066.427 +        {
1066.428 +            return !iterator_range_detail::equal( l, r );
1066.429 +        }
1066.430 +
1066.431 +        template< class IteratorT, class ForwardRange >
1066.432 +        inline bool operator<( const ForwardRange& l, 
1066.433 +                               const iterator_range<IteratorT>& r )
1066.434 +        {
1066.435 +            return iterator_range_detail::less_than( l, r );
1066.436 +        }
1066.437 +
1066.438 +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.439 +#else
1066.440 +        template< class Iterator1T, class Iterator2T >
1066.441 +        inline bool operator==( const iterator_range<Iterator1T>& l, 
1066.442 +                                const iterator_range<Iterator2T>& r )
1066.443 +        {
1066.444 +            return iterator_range_detail::equal( l, r );
1066.445 +        }
1066.446 +
1066.447 +        template< class IteratorT, class ForwardRange >
1066.448 +        inline bool operator==( const iterator_range<IteratorT>& l, 
1066.449 +                                const ForwardRange& r )
1066.450 +        {
1066.451 +            return iterator_range_detail::equal( l, r );
1066.452 +        }
1066.453 +
1066.454 +
1066.455 +        template< class Iterator1T, class Iterator2T >
1066.456 +        inline bool operator!=( const iterator_range<Iterator1T>& l, 
1066.457 +                                const iterator_range<Iterator2T>& r )
1066.458 +        {
1066.459 +            return !iterator_range_detail::equal( l, r );
1066.460 +        }
1066.461 +        
1066.462 +        template< class IteratorT, class ForwardRange >
1066.463 +        inline bool operator!=( const iterator_range<IteratorT>& l, 
1066.464 +                                const ForwardRange& r )
1066.465 +        {
1066.466 +            return !iterator_range_detail::equal( l, r );
1066.467 +        }
1066.468 +
1066.469 +        
1066.470 +        template< class Iterator1T, class Iterator2T >
1066.471 +        inline bool operator<( const iterator_range<Iterator1T>& l, 
1066.472 +                               const iterator_range<Iterator2T>& r )
1066.473 +        {
1066.474 +            return iterator_range_detail::less_than( l, r );
1066.475 +        }
1066.476 +
1066.477 +        template< class IteratorT, class ForwardRange >
1066.478 +        inline bool operator<( const iterator_range<IteratorT>& l, 
1066.479 +                               const ForwardRange& r )
1066.480 +        {            
1066.481 +            return iterator_range_detail::less_than( l, r );
1066.482 +        }
1066.483 +
1066.484 +#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.485 +                    
1066.486 +//  iterator range utilities -----------------------------------------//
1066.487 +
1066.488 +        //! iterator_range construct helper 
1066.489 +        /*!
1066.490 +            Construct an \c iterator_range from a pair of iterators
1066.491 +
1066.492 +            \param Begin A begin iterator
1066.493 +            \param End An end iterator
1066.494 +            \return iterator_range object
1066.495 +        */
1066.496 +        template< typename IteratorT >
1066.497 +        inline iterator_range< IteratorT > 
1066.498 +        make_iterator_range( IteratorT Begin, IteratorT End ) 
1066.499 +        {   
1066.500 +            return iterator_range<IteratorT>( Begin, End );
1066.501 +        }
1066.502 +                     
1066.503 +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.504 +
1066.505 +        template< typename Range >
1066.506 +        inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1066.507 +        make_iterator_range( Range& r ) 
1066.508 +        {   
1066.509 +            return iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1066.510 +                ( boost::begin( r ), boost::end( r ) );
1066.511 +        }
1066.512 +        
1066.513 +#else
1066.514 +        //! iterator_range construct helper
1066.515 +        /*!
1066.516 +            Construct an \c iterator_range from a \c Range containing the begin
1066.517 +            and end iterators.
1066.518 +        */
1066.519 +        template< class ForwardRange >
1066.520 +        inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
1066.521 +        make_iterator_range( ForwardRange& r ) 
1066.522 +        {   
1066.523 +           return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
1066.524 +                ( r, iterator_range_detail::range_tag() );
1066.525 +        }
1066.526 +
1066.527 +        template< class ForwardRange >
1066.528 +        inline iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<ForwardRange>::type >
1066.529 +        make_iterator_range( const ForwardRange& r ) 
1066.530 +        {   
1066.531 +           return iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<ForwardRange>::type >
1066.532 +                ( r, iterator_range_detail::const_range_tag() );
1066.533 +        }
1066.534 +
1066.535 +#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.536 +
1066.537 +        namespace iterator_range_detail
1066.538 +        {    
1066.539 +            template< class Range >
1066.540 +            inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1066.541 +            make_range_impl( Range& r, 
1066.542 +                             BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1066.543 +                             BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1066.544 +            {
1066.545 +                if( advance_begin == 0 && advance_end == 0 )
1066.546 +                    return make_iterator_range( r );
1066.547 +
1066.548 +                BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type 
1066.549 +                    new_begin = boost::begin( r ),
1066.550 +                    new_end   = boost::end( r );
1066.551 +                std::advance( new_begin, advance_begin );
1066.552 +                std::advance( new_end, advance_end );
1066.553 +                return make_iterator_range( new_begin, new_end );
1066.554 +            }
1066.555 +        }
1066.556 +        
1066.557 +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.558 +
1066.559 +        template< class Range >
1066.560 +        inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1066.561 +        make_iterator_range( Range& r, 
1066.562 +                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1066.563 +                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1066.564 +        {
1066.565 +            //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
1066.566 +            return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
1066.567 +        }
1066.568 +
1066.569 +#else
1066.570 +
1066.571 +        template< class Range >
1066.572 +        inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
1066.573 +        make_iterator_range( Range& r, 
1066.574 +                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1066.575 +                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1066.576 +        {
1066.577 +            //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
1066.578 +            return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
1066.579 +        }
1066.580 +
1066.581 +        template< class Range >
1066.582 +        inline iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<Range>::type >
1066.583 +        make_iterator_range( const Range& r, 
1066.584 +                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1066.585 +                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1066.586 +        {
1066.587 +            //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
1066.588 +            return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
1066.589 +        }
1066.590 +
1066.591 +#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1066.592 +
1066.593 +        //! copy a range into a sequence
1066.594 +        /*!
1066.595 +            Construct a new sequence of the specified type from the elements
1066.596 +            in the given range
1066.597 +
1066.598 +            \param Range An input range
1066.599 +            \return New sequence
1066.600 +        */
1066.601 +        template< typename SeqT, typename Range >
1066.602 +        inline SeqT copy_range( const Range& r )
1066.603 +        {
1066.604 +            return SeqT( boost::begin( r ), boost::end( r ) );
1066.605 +        }
1066.606 +
1066.607 +} // namespace 'boost'
1066.608 +
1066.609 +#undef BOOST_OLD_IOSTREAMS
1066.610 +
1066.611 +#endif
  1067.1 --- a/epoc32/include/stdapis/boost/mpl/lambda.hpp	Tue Mar 16 16:12:26 2010 +0000
  1067.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1067.3 @@ -1,29 +0,0 @@
  1067.4 -
  1067.5 -#ifndef BOOST_MPL_LAMBDA_HPP_INCLUDED
  1067.6 -#define BOOST_MPL_LAMBDA_HPP_INCLUDED
  1067.7 -
  1067.8 -// Copyright Aleksey Gurtovoy 2001-2004
  1067.9 -//
 1067.10 -// Distributed under the Boost Software License, Version 1.0. 
 1067.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1067.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1067.13 -//
 1067.14 -// See http://www.boost.org/libs/mpl for documentation.
 1067.15 -
 1067.16 -// $Source: /cvsroot/boost/boost/boost/mpl/lambda.hpp,v $
 1067.17 -// $Date: 2004/09/02 15:40:41 $
 1067.18 -// $Revision: 1.5 $
 1067.19 -
 1067.20 -#include <boost/mpl/lambda_fwd.hpp>
 1067.21 -#include <boost/mpl/bind.hpp>
 1067.22 -#include <boost/mpl/aux_/config/lambda.hpp>
 1067.23 -
 1067.24 -#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 1067.25 -#   include <boost/mpl/aux_/full_lambda.hpp>
 1067.26 -#else
 1067.27 -#   include <boost/mpl/aux_/lambda_no_ctps.hpp>
 1067.28 -#   include <boost/mpl/aux_/lambda_support.hpp>
 1067.29 -#   define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
 1067.30 -#endif
 1067.31 -
 1067.32 -#endif // BOOST_MPL_LAMBDA_HPP_INCLUDED
  1068.1 --- a/epoc32/include/stdapis/boost/mpl/lambda_fwd.hpp	Tue Mar 16 16:12:26 2010 +0000
  1068.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1068.3 @@ -1,57 +0,0 @@
  1068.4 -
  1068.5 -#ifndef BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
  1068.6 -#define BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
  1068.7 -
  1068.8 -// Copyright Aleksey Gurtovoy 2001-2004
  1068.9 -//
 1068.10 -// Distributed under the Boost Software License, Version 1.0. 
 1068.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1068.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1068.13 -//
 1068.14 -// See http://www.boost.org/libs/mpl for documentation.
 1068.15 -
 1068.16 -// $Source: /cvsroot/boost/boost/boost/mpl/lambda_fwd.hpp,v $
 1068.17 -// $Date: 2004/09/02 15:40:41 $
 1068.18 -// $Revision: 1.7 $
 1068.19 -
 1068.20 -#include <boost/mpl/void_fwd.hpp>
 1068.21 -#include <boost/mpl/aux_/na.hpp>
 1068.22 -#include <boost/mpl/aux_/config/lambda.hpp>
 1068.23 -
 1068.24 -#if !defined(BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT)
 1068.25 -
 1068.26 -#   include <boost/mpl/int.hpp>
 1068.27 -#   include <boost/mpl/aux_/lambda_arity_param.hpp>
 1068.28 -#   include <boost/mpl/aux_/template_arity_fwd.hpp>
 1068.29 -
 1068.30 -namespace boost { namespace mpl {
 1068.31 -
 1068.32 -template< 
 1068.33 -      typename T = na
 1068.34 -    , typename Tag = void_
 1068.35 -    BOOST_MPL_AUX_LAMBDA_ARITY_PARAM(
 1068.36 -          typename Arity = int_< aux::template_arity<T>::value >
 1068.37 -        )
 1068.38 -    >
 1068.39 -struct lambda;
 1068.40 -
 1068.41 -}}
 1068.42 -
 1068.43 -#else // BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT
 1068.44 -
 1068.45 -#   include <boost/mpl/bool.hpp>
 1068.46 -
 1068.47 -namespace boost { namespace mpl {
 1068.48 -
 1068.49 -template< 
 1068.50 -      typename T = na
 1068.51 -    , typename Tag = void_
 1068.52 -    , typename Protect = true_
 1068.53 -    > 
 1068.54 -struct lambda;
 1068.55 -
 1068.56 -}}
 1068.57 -
 1068.58 -#endif
 1068.59 -
 1068.60 -#endif // BOOST_MPL_LAMBDA_FWD_HPP_INCLUDED
  1069.1 --- a/epoc32/include/stdapis/boost/mpl/limits/arity.hpp	Tue Mar 16 16:12:26 2010 +0000
  1069.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1069.3 @@ -1,21 +0,0 @@
  1069.4 -
  1069.5 -#ifndef BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
  1069.6 -#define BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
  1069.7 -
  1069.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1069.9 -//
 1069.10 -// Distributed under the Boost Software License, Version 1.0. 
 1069.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1069.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1069.13 -//
 1069.14 -// See http://www.boost.org/libs/mpl for documentation.
 1069.15 -
 1069.16 -// $Source: /cvsroot/boost/boost/boost/mpl/limits/arity.hpp,v $
 1069.17 -// $Date: 2004/09/02 15:40:57 $
 1069.18 -// $Revision: 1.4 $
 1069.19 -
 1069.20 -#if !defined(BOOST_MPL_LIMIT_METAFUNCTION_ARITY)
 1069.21 -#   define BOOST_MPL_LIMIT_METAFUNCTION_ARITY 5
 1069.22 -#endif
 1069.23 -
 1069.24 -#endif // BOOST_MPL_LIMITS_ARITY_HPP_INCLUDED
  1070.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1070.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/O1_size.hpp	Wed Mar 31 12:27:01 2010 +0100
  1070.3 @@ -0,0 +1,56 @@
  1070.4 +
  1070.5 +#ifndef BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
  1070.6 +#define BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
  1070.7 +
  1070.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1070.9 +//
 1070.10 +// Distributed under the Boost Software License, Version 1.0. 
 1070.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1070.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1070.13 +//
 1070.14 +// See http://www.boost.org/libs/mpl for documentation.
 1070.15 +
 1070.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/O1_size.hpp,v $
 1070.17 +// $Date: 2004/09/04 01:33:47 $
 1070.18 +// $Revision: 1.5 $
 1070.19 +
 1070.20 +#include <boost/mpl/O1_size_fwd.hpp>
 1070.21 +#include <boost/mpl/minus.hpp>
 1070.22 +#include <boost/mpl/long.hpp>
 1070.23 +#include <boost/mpl/vector/aux_/tag.hpp>
 1070.24 +#include <boost/mpl/aux_/config/typeof.hpp>
 1070.25 +#include <boost/mpl/aux_/config/ctps.hpp>
 1070.26 +
 1070.27 +namespace boost { namespace mpl {
 1070.28 +
 1070.29 +#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1070.30 +
 1070.31 +template<>
 1070.32 +struct O1_size_impl< aux::vector_tag >
 1070.33 +{
 1070.34 +    template< typename Vector > struct apply
 1070.35 +        : Vector::size
 1070.36 +    {
 1070.37 +    };
 1070.38 +};
 1070.39 +
 1070.40 +#else
 1070.41 +
 1070.42 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1070.43 +
 1070.44 +template< long N >
 1070.45 +struct O1_size_impl< aux::vector_tag<N> >
 1070.46 +{
 1070.47 +    template< typename Vector > struct apply
 1070.48 +        : mpl::long_<N>
 1070.49 +    {
 1070.50 +    };
 1070.51 +};
 1070.52 +
 1070.53 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1070.54 +
 1070.55 +#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1070.56 +
 1070.57 +}}
 1070.58 +
 1070.59 +#endif // BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
  1071.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1071.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/item.hpp	Wed Mar 31 12:27:01 2010 +0100
  1071.3 @@ -0,0 +1,103 @@
  1071.4 +
  1071.5 +#ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
  1071.6 +#define BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
  1071.7 +
  1071.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1071.9 +//
 1071.10 +// Distributed under the Boost Software License, Version 1.0. 
 1071.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1071.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1071.13 +//
 1071.14 +// See http://www.boost.org/libs/mpl for documentation.
 1071.15 +
 1071.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/item.hpp,v $
 1071.17 +// $Date: 2005/05/15 00:39:04 $
 1071.18 +// $Revision: 1.8 $
 1071.19 +
 1071.20 +#include <boost/mpl/long.hpp>
 1071.21 +#include <boost/mpl/void.hpp>
 1071.22 +#include <boost/mpl/next_prior.hpp>
 1071.23 +#include <boost/mpl/aux_/type_wrapper.hpp>
 1071.24 +#include <boost/mpl/aux_/config/typeof.hpp>
 1071.25 +#include <boost/mpl/aux_/config/ctps.hpp>
 1071.26 +
 1071.27 +namespace boost { namespace mpl {
 1071.28 +
 1071.29 +#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1071.30 +
 1071.31 +template< 
 1071.32 +      typename T
 1071.33 +    , typename Base
 1071.34 +    , int at_front = 0
 1071.35 +    >
 1071.36 +struct v_item
 1071.37 +    : Base
 1071.38 +{
 1071.39 +    typedef typename Base::upper_bound_ index_;
 1071.40 +    typedef typename next<index_>::type upper_bound_;
 1071.41 +    typedef typename next<typename Base::size>::type size;
 1071.42 +    typedef Base base;
 1071.43 +    typedef v_item type;
 1071.44 +
 1071.45 +    // agurt 10/sep/04: MWCW <= 9.3 workaround here and below; the compiler
 1071.46 +    // breaks if using declaration comes _before_ the new overload
 1071.47 +    static aux::type_wrapper<T> item_(index_);
 1071.48 +    using Base::item_;
 1071.49 +};
 1071.50 +
 1071.51 +template<
 1071.52 +      typename T
 1071.53 +    , typename Base
 1071.54 +    >
 1071.55 +struct v_item<T,Base,1>
 1071.56 +    : Base
 1071.57 +{
 1071.58 +    typedef typename prior<typename Base::lower_bound_>::type index_;
 1071.59 +    typedef index_ lower_bound_;
 1071.60 +    typedef typename next<typename Base::size>::type size;
 1071.61 +    typedef Base base;
 1071.62 +    typedef v_item type;
 1071.63 +
 1071.64 +    static aux::type_wrapper<T> item_(index_);
 1071.65 +    using Base::item_;
 1071.66 +};
 1071.67 +
 1071.68 +// "erasure" item
 1071.69 +template< 
 1071.70 +      typename Base
 1071.71 +    , int at_front
 1071.72 +    >
 1071.73 +struct v_mask
 1071.74 +    : Base
 1071.75 +{
 1071.76 +    typedef typename prior<typename Base::upper_bound_>::type index_;
 1071.77 +    typedef index_ upper_bound_;
 1071.78 +    typedef typename prior<typename Base::size>::type size;
 1071.79 +    typedef Base base;
 1071.80 +    typedef v_mask type;
 1071.81 +
 1071.82 +    static aux::type_wrapper<void_> item_(index_);
 1071.83 +    using Base::item_;
 1071.84 +};
 1071.85 +
 1071.86 +template< 
 1071.87 +      typename Base
 1071.88 +    >
 1071.89 +struct v_mask<Base,1>
 1071.90 +    : Base
 1071.91 +{
 1071.92 +    typedef typename Base::lower_bound_ index_;
 1071.93 +    typedef typename next<index_>::type lower_bound_;
 1071.94 +    typedef typename prior<typename Base::size>::type size;
 1071.95 +    typedef Base base;
 1071.96 +    typedef v_mask type;
 1071.97 +
 1071.98 +    static aux::type_wrapper<void_> item_(index_);
 1071.99 +    using Base::item_;
1071.100 +};
1071.101 +
1071.102 +#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
1071.103 +
1071.104 +}}
1071.105 +
1071.106 +#endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
  1072.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1072.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/pop_front.hpp	Wed Mar 31 12:27:01 2010 +0100
  1072.3 @@ -0,0 +1,27 @@
  1072.4 +# /* **************************************************************************
  1072.5 +#  *                                                                          *
  1072.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1072.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1072.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1072.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1072.10 +#  *                                                                          *
 1072.11 +#  ************************************************************************** */
 1072.12 +#
 1072.13 +# /* See http://www.boost.org for most recent version. */
 1072.14 +#
 1072.15 +# ifndef BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP
 1072.16 +# define BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP
 1072.17 +#
 1072.18 +# include <boost/preprocessor/config/config.hpp>
 1072.19 +# include <boost/preprocessor/seq/seq.hpp>
 1072.20 +#
 1072.21 +# /* BOOST_PP_SEQ_POP_FRONT */
 1072.22 +#
 1072.23 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1072.24 +#    define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_TAIL(seq)
 1072.25 +# else
 1072.26 +#    define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_POP_FRONT_I(seq)
 1072.27 +#    define BOOST_PP_SEQ_POP_FRONT_I(seq) BOOST_PP_SEQ_TAIL(seq)
 1072.28 +# endif
 1072.29 +#
 1072.30 +# endif
  1073.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1073.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/preprocessed/plain/list10.hpp	Wed Mar 31 12:27:01 2010 +0100
  1073.3 @@ -0,0 +1,43 @@
  1073.4 +
  1073.5 +#ifndef BOOST_MPL_LIST_LIST10_HPP_INCLUDED
  1073.6 +#define BOOST_MPL_LIST_LIST10_HPP_INCLUDED
  1073.7 +
  1073.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1073.9 +//
 1073.10 +// Distributed under the Boost Software License, Version 1.0. 
 1073.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1073.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1073.13 +//
 1073.14 +// See http://www.boost.org/libs/mpl for documentation.
 1073.15 +
 1073.16 +// $Source: /cvsroot/boost/boost/boost/mpl/list/list10.hpp,v $
 1073.17 +// $Date: 2004/09/02 15:40:58 $
 1073.18 +// $Revision: 1.6 $
 1073.19 +
 1073.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1073.21 +#   include <boost/mpl/list/list0.hpp>
 1073.22 +#endif
 1073.23 +
 1073.24 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1073.25 +
 1073.26 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1073.27 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1073.28 +
 1073.29 +#   define BOOST_MPL_PREPROCESSED_HEADER list10.hpp
 1073.30 +#   include <boost/mpl/list/aux_/include_preprocessed.hpp>
 1073.31 +
 1073.32 +#else
 1073.33 +
 1073.34 +#   include <boost/preprocessor/iterate.hpp>
 1073.35 +
 1073.36 +namespace boost { namespace mpl {
 1073.37 +
 1073.38 +#   define BOOST_PP_ITERATION_PARAMS_1 \
 1073.39 +    (3,(1, 10, <boost/mpl/list/aux_/numbered.hpp>))
 1073.40 +#   include BOOST_PP_ITERATE()
 1073.41 +
 1073.42 +}}
 1073.43 +
 1073.44 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1073.45 +
 1073.46 +#endif // BOOST_MPL_LIST_LIST10_HPP_INCLUDED
  1074.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1074.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/preprocessed/plain/list20.hpp	Wed Mar 31 12:27:01 2010 +0100
  1074.3 @@ -0,0 +1,43 @@
  1074.4 +
  1074.5 +#ifndef BOOST_MPL_LIST_LIST20_HPP_INCLUDED
  1074.6 +#define BOOST_MPL_LIST_LIST20_HPP_INCLUDED
  1074.7 +
  1074.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1074.9 +//
 1074.10 +// Distributed under the Boost Software License, Version 1.0. 
 1074.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1074.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1074.13 +//
 1074.14 +// See http://www.boost.org/libs/mpl for documentation.
 1074.15 +
 1074.16 +// $Source: /cvsroot/boost/boost/boost/mpl/list/list20.hpp,v $
 1074.17 +// $Date: 2004/09/02 15:40:58 $
 1074.18 +// $Revision: 1.6 $
 1074.19 +
 1074.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1074.21 +#   include <boost/mpl/list/list10.hpp>
 1074.22 +#endif
 1074.23 +
 1074.24 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1074.25 +
 1074.26 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1074.27 + && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1074.28 +
 1074.29 +#   define BOOST_MPL_PREPROCESSED_HEADER list20.hpp
 1074.30 +#   include <boost/mpl/list/aux_/include_preprocessed.hpp>
 1074.31 +
 1074.32 +#else
 1074.33 +
 1074.34 +#   include <boost/preprocessor/iterate.hpp>
 1074.35 +
 1074.36 +namespace boost { namespace mpl {
 1074.37 +
 1074.38 +#   define BOOST_PP_ITERATION_PARAMS_1 \
 1074.39 +    (3,(11, 20, <boost/mpl/list/aux_/numbered.hpp>))
 1074.40 +#   include BOOST_PP_ITERATE()
 1074.41 +
 1074.42 +}}
 1074.43 +
 1074.44 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1074.45 +
 1074.46 +#endif // BOOST_MPL_LIST_LIST20_HPP_INCLUDED
  1075.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1075.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/push_back.hpp	Wed Mar 31 12:27:01 2010 +0100
  1075.3 @@ -0,0 +1,19 @@
  1075.4 +# /* **************************************************************************
  1075.5 +#  *                                                                          *
  1075.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1075.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1075.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1075.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1075.10 +#  *                                                                          *
 1075.11 +#  ************************************************************************** */
 1075.12 +#
 1075.13 +# /* See http://www.boost.org for most recent version. */
 1075.14 +#
 1075.15 +# ifndef BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP
 1075.16 +# define BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP
 1075.17 +#
 1075.18 +# /* BOOST_PP_SEQ_PUSH_BACK */
 1075.19 +#
 1075.20 +# define BOOST_PP_SEQ_PUSH_BACK(seq, elem) seq(elem)
 1075.21 +#
 1075.22 +# endif
  1076.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1076.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/push_front.hpp	Wed Mar 31 12:27:01 2010 +0100
  1076.3 @@ -0,0 +1,19 @@
  1076.4 +# /* **************************************************************************
  1076.5 +#  *                                                                          *
  1076.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1076.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1076.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1076.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1076.10 +#  *                                                                          *
 1076.11 +#  ************************************************************************** */
 1076.12 +#
 1076.13 +# /* See http://www.boost.org for most recent version. */
 1076.14 +#
 1076.15 +# ifndef BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
 1076.16 +# define BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
 1076.17 +#
 1076.18 +# /* BOOST_PP_SEQ_PUSH_FRONT */
 1076.19 +#
 1076.20 +# define BOOST_PP_SEQ_PUSH_FRONT(seq, elem) (elem)seq
 1076.21 +#
 1076.22 +# endif
  1077.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1077.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/size.hpp	Wed Mar 31 12:27:01 2010 +0100
  1077.3 @@ -0,0 +1,123 @@
  1077.4 +// Boost.Range library
  1077.5 +//
  1077.6 +//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
  1077.7 +//  distribution is subject to the Boost Software License, Version
  1077.8 +//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1077.9 +//  http://www.boost.org/LICENSE_1_0.txt)
 1077.10 +//
 1077.11 +// For more information, see http://www.boost.org/libs/range/
 1077.12 +//
 1077.13 +
 1077.14 +#ifndef BOOST_RANGE_SIZE_HPP
 1077.15 +#define BOOST_RANGE_SIZE_HPP
 1077.16 +
 1077.17 +#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1077.18 +# pragma once
 1077.19 +#endif
 1077.20 +
 1077.21 +#include <boost/range/config.hpp>
 1077.22 +
 1077.23 +#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 1077.24 +#include <boost/range/detail/size.hpp>
 1077.25 +#else
 1077.26 +
 1077.27 +#include <boost/range/detail/implementation_help.hpp>
 1077.28 +#include <boost/range/size_type.hpp>
 1077.29 +#include <cstddef>
 1077.30 +#include <iterator>
 1077.31 +#include <utility>
 1077.32 +
 1077.33 +namespace boost 
 1077.34 +{
 1077.35 +
 1077.36 +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))    
 1077.37 +namespace range_detail 
 1077.38 +{
 1077.39 +#endif
 1077.40 +        //////////////////////////////////////////////////////////////////////
 1077.41 +        // primary template
 1077.42 +        //////////////////////////////////////////////////////////////////////
 1077.43 +        
 1077.44 +        template< typename C >
 1077.45 +        inline BOOST_DEDUCED_TYPENAME C::size_type
 1077.46 +        boost_range_size(  const C& c )
 1077.47 +        {
 1077.48 +            return c.size(); 
 1077.49 +        }
 1077.50 +
 1077.51 +        //////////////////////////////////////////////////////////////////////
 1077.52 +        // pair
 1077.53 +        //////////////////////////////////////////////////////////////////////
 1077.54 +
 1077.55 +        template< typename Iterator >
 1077.56 +        inline std::size_t boost_range_size(  const std::pair<Iterator,Iterator>& p )
 1077.57 +        {
 1077.58 +            return std::distance( p.first, p.second );
 1077.59 +        }
 1077.60 +
 1077.61 +        //////////////////////////////////////////////////////////////////////
 1077.62 +        // array
 1077.63 +        //////////////////////////////////////////////////////////////////////
 1077.64 +
 1077.65 +        template< typename T, std::size_t sz >
 1077.66 +        inline std::size_t boost_range_size(  const T (&array)[sz] )
 1077.67 +        {
 1077.68 +            return range_detail::array_size<T,sz>( array ); 
 1077.69 +        }
 1077.70 +        
 1077.71 +        template< typename T, std::size_t sz >
 1077.72 +        inline std::size_t boost_range_size(  T (&array)[sz] )
 1077.73 +        {
 1077.74 +            return boost::range_detail::array_size<T,sz>( array );
 1077.75 +        }
 1077.76 +        
 1077.77 +        //////////////////////////////////////////////////////////////////////
 1077.78 +        // string
 1077.79 +        //////////////////////////////////////////////////////////////////////
 1077.80 +
 1077.81 +        inline std::size_t boost_range_size(  const char* const& s )
 1077.82 +        {
 1077.83 +            return boost::range_detail::str_size( s );
 1077.84 +        }
 1077.85 +
 1077.86 +        inline std::size_t boost_range_size(  const wchar_t* const& s )
 1077.87 +        {
 1077.88 +            return boost::range_detail::str_size( s );
 1077.89 +        }
 1077.90 +
 1077.91 +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))                
 1077.92 +} // namespace 'range_detail'
 1077.93 +#endif
 1077.94 +
 1077.95 +template< class T >
 1077.96 +inline BOOST_DEDUCED_TYPENAME range_size<T>::type size(  const T& r )
 1077.97 +{
 1077.98 +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))        
 1077.99 +    using namespace range_detail;
1077.100 +#endif    
1077.101 +    return boost_range_size( r );
1077.102 +}
1077.103 +
1077.104 +
1077.105 +#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003 ) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
1077.106 +// BCB and CW are not able to overload pointer when class overloads are also available.
1077.107 +inline range_size<const char*>::type size(  const char* r ) {
1077.108 +    return range_detail::str_size( r );
1077.109 +}
1077.110 +inline range_size<char*>::type size(  char* r ) {
1077.111 +    return range_detail::str_size( r );
1077.112 +}
1077.113 +inline range_size<const wchar_t*>::type size(  const wchar_t* r ) {
1077.114 +    return range_detail::str_size( r );
1077.115 +}
1077.116 +inline range_size<wchar_t*>::type size(  wchar_t* r ) {
1077.117 +    return range_detail::str_size( r );
1077.118 +}
1077.119 +#endif
1077.120 +
1077.121 +
1077.122 +} // namespace 'boost'
1077.123 +
1077.124 +#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1077.125 +
1077.126 +#endif
  1078.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1078.2 +++ b/epoc32/include/stdapis/boost/mpl/list/aux_/tag.hpp	Wed Mar 31 12:27:01 2010 +0100
  1078.3 @@ -0,0 +1,92 @@
  1078.4 +/* Copyright 2003-2005 Joaquín M López Muñoz.
  1078.5 + * Distributed under the Boost Software License, Version 1.0.
  1078.6 + * (See accompanying file LICENSE_1_0.txt or copy at
  1078.7 + * http://www.boost.org/LICENSE_1_0.txt)
  1078.8 + *
  1078.9 + * See http://www.boost.org/libs/multi_index for library home page.
 1078.10 + */
 1078.11 +
 1078.12 +#ifndef BOOST_MULTI_INDEX_TAG_HPP
 1078.13 +#define BOOST_MULTI_INDEX_TAG_HPP
 1078.14 +
 1078.15 +#if defined(_MSC_VER)&&(_MSC_VER>=1200)
 1078.16 +#pragma once
 1078.17 +#endif
 1078.18 +
 1078.19 +#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
 1078.20 +#include <boost/multi_index/detail/no_duplicate_tags.hpp>
 1078.21 +#include <boost/mpl/identity.hpp>
 1078.22 +#include <boost/mpl/transform.hpp>
 1078.23 +#include <boost/mpl/vector.hpp>
 1078.24 +#include <boost/preprocessor/facilities/intercept.hpp> 
 1078.25 +#include <boost/preprocessor/repetition/enum_binary_params.hpp> 
 1078.26 +#include <boost/preprocessor/repetition/enum_params.hpp> 
 1078.27 +#include <boost/static_assert.hpp>
 1078.28 +#include <boost/type_traits/is_base_and_derived.hpp>
 1078.29 +
 1078.30 +/* A wrapper of mpl::vector used to hide MPL from the user.
 1078.31 + * tag contains types used as tag names for indices in get() functions.
 1078.32 + */
 1078.33 +
 1078.34 +/* This user_definable macro limits the number of elements of a tag;
 1078.35 + * useful for shortening resulting symbol names (MSVC++ 6.0, for instance,
 1078.36 + * has problems coping with very long symbol names.)
 1078.37 + */
 1078.38 +
 1078.39 +#if !defined(BOOST_MULTI_INDEX_LIMIT_TAG_SIZE)
 1078.40 +#if defined(BOOST_MSVC)&&(BOOST_MSVC<1300)
 1078.41 +#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE 3
 1078.42 +#else
 1078.43 +#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
 1078.44 +#endif
 1078.45 +#endif
 1078.46 +
 1078.47 +#if BOOST_MULTI_INDEX_LIMIT_TAG_SIZE<BOOST_MPL_LIMIT_VECTOR_SIZE
 1078.48 +#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MULTI_INDEX_LIMIT_TAG_SIZE
 1078.49 +#else
 1078.50 +#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
 1078.51 +#endif
 1078.52 +
 1078.53 +namespace boost{
 1078.54 +
 1078.55 +namespace multi_index{
 1078.56 +
 1078.57 +namespace detail{
 1078.58 +
 1078.59 +struct tag_marker{};
 1078.60 +
 1078.61 +template<typename T>
 1078.62 +struct is_tag
 1078.63 +{
 1078.64 +  BOOST_STATIC_CONSTANT(bool,value=(is_base_and_derived<tag_marker,T>::value));
 1078.65 +};
 1078.66 +
 1078.67 +} /* namespace multi_index::detail */
 1078.68 +
 1078.69 +template<
 1078.70 +  BOOST_PP_ENUM_BINARY_PARAMS(
 1078.71 +    BOOST_MULTI_INDEX_TAG_SIZE,
 1078.72 +    typename T,
 1078.73 +    =mpl::na BOOST_PP_INTERCEPT) 
 1078.74 +>
 1078.75 +struct tag:private detail::tag_marker
 1078.76 +{
 1078.77 +  /* The mpl::transform pass produces shorter symbols (without
 1078.78 +   * trailing mpl::na's.)
 1078.79 +   */
 1078.80 +
 1078.81 +  typedef typename mpl::transform<
 1078.82 +    mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_TAG_SIZE,T)>,
 1078.83 +    mpl::identity<mpl::_1>
 1078.84 +  >::type type;
 1078.85 +
 1078.86 +  BOOST_STATIC_ASSERT(detail::no_duplicate_tags<type>::value);
 1078.87 +};
 1078.88 +
 1078.89 +} /* namespace multi_index */
 1078.90 +
 1078.91 +} /* namespace boost */
 1078.92 +
 1078.93 +#undef BOOST_MULTI_INDEX_TAG_SIZE
 1078.94 +
 1078.95 +#endif
  1079.1 --- a/epoc32/include/stdapis/boost/mpl/list/list10.hpp	Tue Mar 16 16:12:26 2010 +0000
  1079.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1079.3 @@ -1,43 +0,0 @@
  1079.4 -
  1079.5 -#ifndef BOOST_MPL_LIST_LIST10_HPP_INCLUDED
  1079.6 -#define BOOST_MPL_LIST_LIST10_HPP_INCLUDED
  1079.7 -
  1079.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1079.9 -//
 1079.10 -// Distributed under the Boost Software License, Version 1.0. 
 1079.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1079.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1079.13 -//
 1079.14 -// See http://www.boost.org/libs/mpl for documentation.
 1079.15 -
 1079.16 -// $Source: /cvsroot/boost/boost/boost/mpl/list/list10.hpp,v $
 1079.17 -// $Date: 2004/09/02 15:40:58 $
 1079.18 -// $Revision: 1.6 $
 1079.19 -
 1079.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1079.21 -#   include <boost/mpl/list/list0.hpp>
 1079.22 -#endif
 1079.23 -
 1079.24 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1079.25 -
 1079.26 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1079.27 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1079.28 -
 1079.29 -#   define BOOST_MPL_PREPROCESSED_HEADER list10.hpp
 1079.30 -#   include <boost/mpl/list/aux_/include_preprocessed.hpp>
 1079.31 -
 1079.32 -#else
 1079.33 -
 1079.34 -#   include <boost/preprocessor/iterate.hpp>
 1079.35 -
 1079.36 -namespace boost { namespace mpl {
 1079.37 -
 1079.38 -#   define BOOST_PP_ITERATION_PARAMS_1 \
 1079.39 -    (3,(1, 10, <boost/mpl/list/aux_/numbered.hpp>))
 1079.40 -#   include BOOST_PP_ITERATE()
 1079.41 -
 1079.42 -}}
 1079.43 -
 1079.44 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1079.45 -
 1079.46 -#endif // BOOST_MPL_LIST_LIST10_HPP_INCLUDED
  1080.1 --- a/epoc32/include/stdapis/boost/mpl/list/list20.hpp	Tue Mar 16 16:12:26 2010 +0000
  1080.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1080.3 @@ -1,43 +0,0 @@
  1080.4 -
  1080.5 -#ifndef BOOST_MPL_LIST_LIST20_HPP_INCLUDED
  1080.6 -#define BOOST_MPL_LIST_LIST20_HPP_INCLUDED
  1080.7 -
  1080.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1080.9 -//
 1080.10 -// Distributed under the Boost Software License, Version 1.0. 
 1080.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1080.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1080.13 -//
 1080.14 -// See http://www.boost.org/libs/mpl for documentation.
 1080.15 -
 1080.16 -// $Source: /cvsroot/boost/boost/boost/mpl/list/list20.hpp,v $
 1080.17 -// $Date: 2004/09/02 15:40:58 $
 1080.18 -// $Revision: 1.6 $
 1080.19 -
 1080.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1080.21 -#   include <boost/mpl/list/list10.hpp>
 1080.22 -#endif
 1080.23 -
 1080.24 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1080.25 -
 1080.26 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1080.27 - && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1080.28 -
 1080.29 -#   define BOOST_MPL_PREPROCESSED_HEADER list20.hpp
 1080.30 -#   include <boost/mpl/list/aux_/include_preprocessed.hpp>
 1080.31 -
 1080.32 -#else
 1080.33 -
 1080.34 -#   include <boost/preprocessor/iterate.hpp>
 1080.35 -
 1080.36 -namespace boost { namespace mpl {
 1080.37 -
 1080.38 -#   define BOOST_PP_ITERATION_PARAMS_1 \
 1080.39 -    (3,(11, 20, <boost/mpl/list/aux_/numbered.hpp>))
 1080.40 -#   include BOOST_PP_ITERATE()
 1080.41 -
 1080.42 -}}
 1080.43 -
 1080.44 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1080.45 -
 1080.46 -#endif // BOOST_MPL_LIST_LIST20_HPP_INCLUDED
  1081.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1081.2 +++ b/epoc32/include/stdapis/boost/mpl/logical.hpp	Wed Mar 31 12:27:01 2010 +0100
  1081.3 @@ -0,0 +1,29 @@
  1081.4 +# /* Copyright (C) 2001
  1081.5 +#  * Housemarque Oy
  1081.6 +#  * http://www.housemarque.com
  1081.7 +#  *
  1081.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1081.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1081.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1081.11 +#  */
 1081.12 +#
 1081.13 +# /* Revised by Paul Mensonides (2002) */
 1081.14 +#
 1081.15 +# /* See http://www.boost.org for most recent version. */
 1081.16 +#
 1081.17 +# ifndef BOOST_PREPROCESSOR_LOGICAL_HPP
 1081.18 +# define BOOST_PREPROCESSOR_LOGICAL_HPP
 1081.19 +#
 1081.20 +# include <boost/preprocessor/logical/and.hpp>
 1081.21 +# include <boost/preprocessor/logical/bitand.hpp>
 1081.22 +# include <boost/preprocessor/logical/bitnor.hpp>
 1081.23 +# include <boost/preprocessor/logical/bitor.hpp>
 1081.24 +# include <boost/preprocessor/logical/bitxor.hpp>
 1081.25 +# include <boost/preprocessor/logical/bool.hpp>
 1081.26 +# include <boost/preprocessor/logical/compl.hpp>
 1081.27 +# include <boost/preprocessor/logical/nor.hpp>
 1081.28 +# include <boost/preprocessor/logical/not.hpp>
 1081.29 +# include <boost/preprocessor/logical/or.hpp>
 1081.30 +# include <boost/preprocessor/logical/xor.hpp>
 1081.31 +#
 1081.32 +# endif
  1082.1 --- a/epoc32/include/stdapis/boost/mpl/minus.hpp	Tue Mar 16 16:12:26 2010 +0000
  1082.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1082.3 @@ -1,21 +0,0 @@
  1082.4 -
  1082.5 -#ifndef BOOST_MPL_MINUS_HPP_INCLUDED
  1082.6 -#define BOOST_MPL_MINUS_HPP_INCLUDED
  1082.7 -
  1082.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1082.9 -//
 1082.10 -// Distributed under the Boost Software License, Version 1.0. 
 1082.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1082.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1082.13 -//
 1082.14 -// See http://www.boost.org/libs/mpl for documentation.
 1082.15 -
 1082.16 -// $Source: /cvsroot/boost/boost/boost/mpl/minus.hpp,v $
 1082.17 -// $Date: 2004/09/02 15:40:41 $
 1082.18 -// $Revision: 1.3 $
 1082.19 -
 1082.20 -#define AUX778076_OP_NAME minus
 1082.21 -#define AUX778076_OP_TOKEN -
 1082.22 -#include <boost/mpl/aux_/arithmetic_op.hpp>
 1082.23 -
 1082.24 -#endif // BOOST_MPL_MINUS_HPP_INCLUDED
  1083.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1083.2 +++ b/epoc32/include/stdapis/boost/mpl/next_prior.hpp	Wed Mar 31 12:27:01 2010 +0100
  1083.3 @@ -0,0 +1,51 @@
  1083.4 +//  Boost next_prior.hpp header file  ---------------------------------------//
  1083.5 +
  1083.6 +//  (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. Distributed under the Boost
  1083.7 +//  Software License, Version 1.0. (See accompanying file
  1083.8 +//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  1083.9 +
 1083.10 +//  See http://www.boost.org/libs/utility for documentation.
 1083.11 +
 1083.12 +//  Revision History
 1083.13 +//  13 Dec 2003  Added next(x, n) and prior(x, n) (Daniel Walker)
 1083.14 +
 1083.15 +#ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED
 1083.16 +#define BOOST_NEXT_PRIOR_HPP_INCLUDED
 1083.17 +
 1083.18 +#include <iterator>
 1083.19 +
 1083.20 +namespace boost {
 1083.21 +
 1083.22 +//  Helper functions for classes like bidirectional iterators not supporting
 1083.23 +//  operator+ and operator-
 1083.24 +//
 1083.25 +//  Usage:
 1083.26 +//    const std::list<T>::iterator p = get_some_iterator();
 1083.27 +//    const std::list<T>::iterator prev = boost::prior(p);
 1083.28 +//    const std::list<T>::iterator next = boost::next(prev, 2);
 1083.29 +
 1083.30 +//  Contributed by Dave Abrahams
 1083.31 +
 1083.32 +template <class T>
 1083.33 +inline T next(T x) { return ++x; }
 1083.34 +
 1083.35 +template <class T, class Distance>
 1083.36 +inline T next(T x, Distance n)
 1083.37 +{
 1083.38 +    std::advance(x, n);
 1083.39 +    return x;
 1083.40 +}
 1083.41 +
 1083.42 +template <class T>
 1083.43 +inline T prior(T x) { return --x; }
 1083.44 +
 1083.45 +template <class T, class Distance>
 1083.46 +inline T prior(T x, Distance n)
 1083.47 +{
 1083.48 +    std::advance(x, -n);
 1083.49 +    return x;
 1083.50 +}
 1083.51 +
 1083.52 +} // namespace boost
 1083.53 +
 1083.54 +#endif  // BOOST_NEXT_PRIOR_HPP_INCLUDED
  1084.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1084.2 +++ b/epoc32/include/stdapis/boost/mpl/not.hpp	Wed Mar 31 12:27:01 2010 +0100
  1084.3 @@ -0,0 +1,30 @@
  1084.4 +# /* Copyright (C) 2001
  1084.5 +#  * Housemarque Oy
  1084.6 +#  * http://www.housemarque.com
  1084.7 +#  *
  1084.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1084.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1084.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1084.11 +#  */
 1084.12 +#
 1084.13 +# /* Revised by Paul Mensonides (2002) */
 1084.14 +#
 1084.15 +# /* See http://www.boost.org for most recent version. */
 1084.16 +#
 1084.17 +# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
 1084.18 +# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
 1084.19 +#
 1084.20 +# include <boost/preprocessor/config/config.hpp>
 1084.21 +# include <boost/preprocessor/logical/bool.hpp>
 1084.22 +# include <boost/preprocessor/logical/compl.hpp>
 1084.23 +#
 1084.24 +# /* BOOST_PP_NOT */
 1084.25 +#
 1084.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1084.27 +#    define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
 1084.28 +# else
 1084.29 +#    define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
 1084.30 +#    define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
 1084.31 +# endif
 1084.32 +#
 1084.33 +# endif
  1085.1 --- a/epoc32/include/stdapis/boost/mpl/placeholders.hpp	Tue Mar 16 16:12:26 2010 +0000
  1085.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1085.3 @@ -1,100 +0,0 @@
  1085.4 -
  1085.5 -#if !defined(BOOST_PP_IS_ITERATING)
  1085.6 -
  1085.7 -///// header body
  1085.8 -
  1085.9 -#ifndef BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
 1085.10 -#define BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
 1085.11 -
 1085.12 -// Copyright Aleksey Gurtovoy 2001-2004
 1085.13 -// Copyright Peter Dimov 2001-2003
 1085.14 -//
 1085.15 -// Distributed under the Boost Software License, Version 1.0. 
 1085.16 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1085.17 -// http://www.boost.org/LICENSE_1_0.txt)
 1085.18 -//
 1085.19 -// See http://www.boost.org/libs/mpl for documentation.
 1085.20 -
 1085.21 -// $Source: /cvsroot/boost/boost/boost/mpl/placeholders.hpp,v $
 1085.22 -// $Date: 2004/09/16 14:08:46 $
 1085.23 -// $Revision: 1.4 $
 1085.24 -
 1085.25 -
 1085.26 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1085.27 -#   include <boost/mpl/arg.hpp>
 1085.28 -#   include <boost/mpl/aux_/adl_barrier.hpp>
 1085.29 -
 1085.30 -#   if !defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
 1085.31 -#       define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) \
 1085.32 -        using ::BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::type; \
 1085.33 -        /**/
 1085.34 -#   else
 1085.35 -#       define BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(type) /**/
 1085.36 -#   endif
 1085.37 -
 1085.38 -#endif
 1085.39 -
 1085.40 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1085.41 -
 1085.42 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1085.43 - && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1085.44 -
 1085.45 -#   define BOOST_MPL_PREPROCESSED_HEADER placeholders.hpp
 1085.46 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1085.47 -
 1085.48 -#else
 1085.49 -
 1085.50 -#   include <boost/mpl/aux_/nttp_decl.hpp>
 1085.51 -#   include <boost/mpl/limits/arity.hpp>
 1085.52 -#   include <boost/preprocessor/iterate.hpp>
 1085.53 -#   include <boost/preprocessor/cat.hpp>
 1085.54 -
 1085.55 -// watch out for GNU gettext users, who #define _(x)
 1085.56 -#if !defined(_) || defined(BOOST_MPL_CFG_NO_UNNAMED_PLACEHOLDER_SUPPORT)
 1085.57 -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 1085.58 -typedef arg<-1> _;
 1085.59 -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 1085.60 -
 1085.61 -namespace boost { namespace mpl { 
 1085.62 -
 1085.63 -BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(_)
 1085.64 -
 1085.65 -namespace placeholders {
 1085.66 -using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::_;
 1085.67 -}
 1085.68 -
 1085.69 -}}
 1085.70 -#endif
 1085.71 -
 1085.72 -/// agurt, 17/mar/02: one more placeholder for the last 'apply#' 
 1085.73 -/// specialization
 1085.74 -#define BOOST_PP_ITERATION_PARAMS_1 \
 1085.75 -    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY + 1, <boost/mpl/placeholders.hpp>))
 1085.76 -#include BOOST_PP_ITERATE()
 1085.77 -
 1085.78 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1085.79 -#endif // BOOST_MPL_PLACEHOLDERS_HPP_INCLUDED
 1085.80 -
 1085.81 -///// iteration
 1085.82 -
 1085.83 -#else
 1085.84 -#define i_ BOOST_PP_FRAME_ITERATION(1)
 1085.85 -
 1085.86 -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
 1085.87 -
 1085.88 -typedef arg<i_> BOOST_PP_CAT(_,i_);
 1085.89 -
 1085.90 -BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
 1085.91 -
 1085.92 -namespace boost { namespace mpl { 
 1085.93 -
 1085.94 -BOOST_MPL_AUX_ARG_ADL_BARRIER_DECL(BOOST_PP_CAT(_,i_))
 1085.95 -
 1085.96 -namespace placeholders {
 1085.97 -using BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE::BOOST_PP_CAT(_,i_);
 1085.98 -}
 1085.99 -
1085.100 -}}
1085.101 -
1085.102 -#undef i_
1085.103 -#endif // BOOST_PP_IS_ITERATING
  1086.1 --- a/epoc32/include/stdapis/boost/mpl/plus.hpp	Tue Mar 16 16:12:26 2010 +0000
  1086.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1086.3 @@ -1,21 +0,0 @@
  1086.4 -
  1086.5 -#ifndef BOOST_MPL_PLUS_HPP_INCLUDED
  1086.6 -#define BOOST_MPL_PLUS_HPP_INCLUDED
  1086.7 -
  1086.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1086.9 -//
 1086.10 -// Distributed under the Boost Software License, Version 1.0. 
 1086.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1086.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1086.13 -//
 1086.14 -// See http://www.boost.org/libs/mpl for documentation.
 1086.15 -
 1086.16 -// $Source: /cvsroot/boost/boost/boost/mpl/plus.hpp,v $
 1086.17 -// $Date: 2004/09/02 15:40:42 $
 1086.18 -// $Revision: 1.4 $
 1086.19 -
 1086.20 -#define AUX778076_OP_NAME plus
 1086.21 -#define AUX778076_OP_TOKEN +
 1086.22 -#include <boost/mpl/aux_/arithmetic_op.hpp>
 1086.23 -
 1086.24 -#endif // BOOST_MPL_PLUS_HPP_INCLUDED
  1087.1 --- a/epoc32/include/stdapis/boost/mpl/quote.hpp	Tue Mar 16 16:12:26 2010 +0000
  1087.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1087.3 @@ -1,140 +0,0 @@
  1087.4 -
  1087.5 -#if !defined(BOOST_PP_IS_ITERATING)
  1087.6 -
  1087.7 -///// header body
  1087.8 -
  1087.9 -#ifndef BOOST_MPL_QUOTE_HPP_INCLUDED
 1087.10 -#define BOOST_MPL_QUOTE_HPP_INCLUDED
 1087.11 -
 1087.12 -// Copyright Aleksey Gurtovoy 2000-2004
 1087.13 -//
 1087.14 -// Distributed under the Boost Software License, Version 1.0. 
 1087.15 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1087.16 -// http://www.boost.org/LICENSE_1_0.txt)
 1087.17 -//
 1087.18 -// See http://www.boost.org/libs/mpl for documentation.
 1087.19 -
 1087.20 -// $Source: /cvsroot/boost/boost/boost/mpl/quote.hpp,v $
 1087.21 -// $Date: 2006/05/03 03:27:58 $
 1087.22 -// $Revision: 1.5.14.2 $
 1087.23 -
 1087.24 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1087.25 -#   include <boost/mpl/void.hpp>
 1087.26 -#   include <boost/mpl/aux_/has_type.hpp>
 1087.27 -#endif
 1087.28 -
 1087.29 -#include <boost/mpl/aux_/config/ttp.hpp>
 1087.30 -
 1087.31 -#if defined(BOOST_MPL_CFG_NO_TEMPLATE_TEMPLATE_PARAMETERS)
 1087.32 -#   define BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
 1087.33 -#endif
 1087.34 -
 1087.35 -#if !defined(BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS) \
 1087.36 -    && defined(BOOST_MPL_CFG_NO_HAS_XXX)
 1087.37 -#   define BOOST_MPL_CFG_NO_IMPLICIT_METAFUNCTIONS
 1087.38 -#endif
 1087.39 -
 1087.40 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1087.41 -
 1087.42 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1087.43 - && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1087.44 -
 1087.45 -#   define BOOST_MPL_PREPROCESSED_HEADER quote.hpp
 1087.46 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1087.47 -
 1087.48 -#else
 1087.49 -
 1087.50 -#   include <boost/mpl/limits/arity.hpp>
 1087.51 -#   include <boost/mpl/aux_/preprocessor/params.hpp>
 1087.52 -#   include <boost/mpl/aux_/config/ctps.hpp>
 1087.53 -#   include <boost/mpl/aux_/config/workaround.hpp>
 1087.54 -
 1087.55 -#   include <boost/preprocessor/iterate.hpp>
 1087.56 -#   include <boost/preprocessor/cat.hpp>
 1087.57 -
 1087.58 -#if !defined(BOOST_MPL_CFG_NO_QUOTE_TEMPLATE)
 1087.59 -
 1087.60 -namespace boost { namespace mpl {
 1087.61 -
 1087.62 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1087.63 -
 1087.64 -template< typename T, bool has_type_ >
 1087.65 -struct quote_impl
 1087.66 -// GCC has a problem with metafunction forwarding when T is a
 1087.67 -// specialization of a template called 'type'.
 1087.68 -# if BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(4)) \
 1087.69 -    && BOOST_WORKAROUND(__GNUC_MINOR__, BOOST_TESTED_AT(0)) \
 1087.70 -    && BOOST_WORKAROUND(__GNUC_PATCHLEVEL__, BOOST_TESTED_AT(2))
 1087.71 -{
 1087.72 -    typedef typename T::type type;
 1087.73 -};
 1087.74 -# else 
 1087.75 -    : T
 1087.76 -{
 1087.77 -};
 1087.78 -# endif 
 1087.79 -
 1087.80 -template< typename T >
 1087.81 -struct quote_impl<T,false>
 1087.82 -{
 1087.83 -    typedef T type;
 1087.84 -};
 1087.85 -
 1087.86 -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1087.87 -
 1087.88 -template< bool > struct quote_impl
 1087.89 -{
 1087.90 -    template< typename T > struct result_
 1087.91 -        : T
 1087.92 -    {
 1087.93 -    };
 1087.94 -};
 1087.95 -
 1087.96 -template<> struct quote_impl<false>
 1087.97 -{
 1087.98 -    template< typename T > struct result_
 1087.99 -    {
1087.100 -        typedef T type;
1087.101 -    };
1087.102 -};
1087.103 -
1087.104 -#endif 
1087.105 -
1087.106 -#define BOOST_PP_ITERATION_PARAMS_1 \
1087.107 -    (3,(1, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/quote.hpp>))
1087.108 -#include BOOST_PP_ITERATE()
1087.109 -
1087.110 -}}
1087.111 -
1087.112 -#endif // BOOST_MPL_CFG_NO_QUOTE_TEMPLATE
1087.113 -
1087.114 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
1087.115 -#endif // BOOST_MPL_QUOTE_HPP_INCLUDED
1087.116 -
1087.117 -///// iteration
1087.118 -
1087.119 -#else
1087.120 -#define i_ BOOST_PP_FRAME_ITERATION(1)
1087.121 -
1087.122 -template<
1087.123 -      template< BOOST_MPL_PP_PARAMS(i_, typename P) > class F
1087.124 -    , typename Tag = void_
1087.125 -    >
1087.126 -struct BOOST_PP_CAT(quote,i_)
1087.127 -{
1087.128 -    template< BOOST_MPL_PP_PARAMS(i_, typename U) > struct apply
1087.129 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1087.130 -        : quote_impl<
1087.131 -              F< BOOST_MPL_PP_PARAMS(i_, U) >
1087.132 -            , aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value
1087.133 -            >
1087.134 -#else
1087.135 -        : quote_impl< aux::has_type< F< BOOST_MPL_PP_PARAMS(i_, U) > >::value >
1087.136 -            ::template result_< F< BOOST_MPL_PP_PARAMS(i_, U) > >
1087.137 -#endif
1087.138 -    {
1087.139 -    };
1087.140 -};
1087.141 -
1087.142 -#undef i_
1087.143 -#endif // BOOST_PP_IS_ITERATING
  1088.1 --- a/epoc32/include/stdapis/boost/mpl/set/aux_/at_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1088.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1088.3 @@ -1,40 +0,0 @@
  1088.4 -
  1088.5 -#ifndef BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
  1088.6 -#define BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
  1088.7 -
  1088.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1088.9 -//
 1088.10 -// Distributed under the Boost Software License, Version 1.0. 
 1088.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1088.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1088.13 -//
 1088.14 -// See http://www.boost.org/libs/mpl for documentation.
 1088.15 -
 1088.16 -// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/at_impl.hpp,v $
 1088.17 -// $Date: 2004/09/02 15:41:02 $
 1088.18 -// $Revision: 1.2 $
 1088.19 -
 1088.20 -#include <boost/mpl/at_fwd.hpp>
 1088.21 -#include <boost/mpl/set/aux_/has_key_impl.hpp>
 1088.22 -#include <boost/mpl/set/aux_/tag.hpp>
 1088.23 -#include <boost/mpl/if.hpp>
 1088.24 -#include <boost/mpl/void.hpp>
 1088.25 -
 1088.26 -namespace boost { namespace mpl {
 1088.27 -
 1088.28 -template<>
 1088.29 -struct at_impl< aux::set_tag >
 1088.30 -{
 1088.31 -    template< typename Set, typename T > struct apply
 1088.32 -    {
 1088.33 -        typedef typename if_< 
 1088.34 -              has_key_impl<aux::set_tag>::apply<Set,T>
 1088.35 -            , T
 1088.36 -            , void_
 1088.37 -            >::type type;            
 1088.38 -    };
 1088.39 -};
 1088.40 -
 1088.41 -}}
 1088.42 -
 1088.43 -#endif // BOOST_MPL_SET_AUX_AT_IMPL_HPP_INCLUDED
  1089.1 --- a/epoc32/include/stdapis/boost/mpl/set/aux_/begin_end_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1089.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1089.3 @@ -1,43 +0,0 @@
  1089.4 -
  1089.5 -#ifndef BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
  1089.6 -#define BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
  1089.7 -
  1089.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1089.9 -// Copyright David Abrahams 2003-2004
 1089.10 -//
 1089.11 -// Distributed under the Boost Software License, Version 1.0. 
 1089.12 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1089.13 -// http://www.boost.org/LICENSE_1_0.txt)
 1089.14 -//
 1089.15 -// See http://www.boost.org/libs/mpl for documentation.
 1089.16 -
 1089.17 -// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/begin_end_impl.hpp,v $
 1089.18 -// $Date: 2004/09/02 15:41:02 $
 1089.19 -// $Revision: 1.3 $
 1089.20 -
 1089.21 -#include <boost/mpl/begin_end_fwd.hpp>
 1089.22 -#include <boost/mpl/set/aux_/iterator.hpp>
 1089.23 -
 1089.24 -namespace boost { namespace mpl {
 1089.25 -
 1089.26 -template<>
 1089.27 -struct begin_impl< aux::set_tag >
 1089.28 -{
 1089.29 -    template< typename Set > struct apply
 1089.30 -    {
 1089.31 -        typedef s_iter<Set,Set> type;
 1089.32 -    };
 1089.33 -};
 1089.34 -
 1089.35 -template<>
 1089.36 -struct end_impl< aux::set_tag >
 1089.37 -{
 1089.38 -    template< typename Set > struct apply
 1089.39 -    {
 1089.40 -        typedef s_iter< Set,set0<> > type;
 1089.41 -    };
 1089.42 -};
 1089.43 -
 1089.44 -}}
 1089.45 -
 1089.46 -#endif // BOOST_MPL_SET_AUX_BEGIN_END_IMPL_HPP_INCLUDED
  1090.1 --- a/epoc32/include/stdapis/boost/mpl/set/aux_/clear_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1090.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1090.3 @@ -1,35 +0,0 @@
  1090.4 -
  1090.5 -#ifndef BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
  1090.6 -#define BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
  1090.7 -
  1090.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1090.9 -// Copyright David Abrahams 2003-2004
 1090.10 -//
 1090.11 -// Distributed under the Boost Software License, Version 1.0. 
 1090.12 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1090.13 -// http://www.boost.org/LICENSE_1_0.txt)
 1090.14 -//
 1090.15 -// See http://www.boost.org/libs/mpl for documentation.
 1090.16 -
 1090.17 -// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/clear_impl.hpp,v $
 1090.18 -// $Date: 2004/09/02 15:41:02 $
 1090.19 -// $Revision: 1.2 $
 1090.20 -
 1090.21 -#include <boost/mpl/clear_fwd.hpp>
 1090.22 -#include <boost/mpl/set/aux_/set0.hpp>
 1090.23 -#include <boost/mpl/set/aux_/tag.hpp>
 1090.24 -
 1090.25 -namespace boost { namespace mpl {
 1090.26 -
 1090.27 -template<>
 1090.28 -struct clear_impl< aux::set_tag >
 1090.29 -{
 1090.30 -    template< typename Set > struct apply
 1090.31 -    {
 1090.32 -        typedef set0<> type;
 1090.33 -    };
 1090.34 -};
 1090.35 -
 1090.36 -}}
 1090.37 -
 1090.38 -#endif // BOOST_MPL_SET_AUX_CLEAR_IMPL_HPP_INCLUDED
  1091.1 --- a/epoc32/include/stdapis/boost/mpl/set/aux_/empty_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1091.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1091.3 @@ -1,34 +0,0 @@
  1091.4 -
  1091.5 -#ifndef BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
  1091.6 -#define BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
  1091.7 -
  1091.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1091.9 -//
 1091.10 -// Distributed under the Boost Software License, Version 1.0. 
 1091.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1091.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1091.13 -//
 1091.14 -// See http://www.boost.org/libs/mpl for documentation.
 1091.15 -
 1091.16 -// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/empty_impl.hpp,v $
 1091.17 -// $Date: 2004/09/02 15:41:02 $
 1091.18 -// $Revision: 1.2 $
 1091.19 -
 1091.20 -#include <boost/mpl/empty_fwd.hpp>
 1091.21 -#include <boost/mpl/not.hpp>
 1091.22 -#include <boost/mpl/set/aux_/tag.hpp>
 1091.23 -
 1091.24 -namespace boost { namespace mpl {
 1091.25 -
 1091.26 -template<>
 1091.27 -struct empty_impl< aux::set_tag >
 1091.28 -{
 1091.29 -    template< typename Set > struct apply
 1091.30 -        : not_< typename Set::size >
 1091.31 -    {
 1091.32 -    };
 1091.33 -};
 1091.34 -
 1091.35 -}}
 1091.36 -
 1091.37 -#endif // BOOST_MPL_SET_AUX_EMPTY_IMPL_HPP_INCLUDED
  1092.1 --- a/epoc32/include/stdapis/boost/mpl/set/aux_/has_key_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1092.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1092.3 @@ -1,60 +0,0 @@
  1092.4 -
  1092.5 -#ifndef BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
  1092.6 -#define BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
  1092.7 -
  1092.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1092.9 -// Copyright David Abrahams 2003-2004
 1092.10 -//
 1092.11 -// Distributed under the Boost Software License, Version 1.0. 
 1092.12 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1092.13 -// http://www.boost.org/LICENSE_1_0.txt)
 1092.14 -//
 1092.15 -// See http://www.boost.org/libs/mpl for documentation.
 1092.16 -
 1092.17 -// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/has_key_impl.hpp,v $
 1092.18 -// $Date: 2004/10/13 18:23:37 $
 1092.19 -// $Revision: 1.7 $
 1092.20 -
 1092.21 -#include <boost/mpl/set/aux_/tag.hpp>
 1092.22 -#include <boost/mpl/has_key_fwd.hpp>
 1092.23 -#include <boost/mpl/bool.hpp>
 1092.24 -#include <boost/mpl/aux_/overload_names.hpp>
 1092.25 -#include <boost/mpl/aux_/static_cast.hpp>
 1092.26 -#include <boost/mpl/aux_/yes_no.hpp>
 1092.27 -#include <boost/mpl/aux_/type_wrapper.hpp>
 1092.28 -#include <boost/mpl/aux_/config/workaround.hpp>
 1092.29 -#include <boost/mpl/aux_/config/static_constant.hpp>
 1092.30 -
 1092.31 -namespace boost { namespace mpl {
 1092.32 -
 1092.33 -template<>
 1092.34 -struct has_key_impl< aux::set_tag >
 1092.35 -{
 1092.36 -    template< typename Set, typename T > struct apply
 1092.37 -#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
 1092.38 -    || BOOST_WORKAROUND(__EDG_VERSION__, <= 245)
 1092.39 -    {
 1092.40 -        BOOST_STATIC_CONSTANT(bool, value = 
 1092.41 -              ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(
 1092.42 -                    Set
 1092.43 -                  , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0)
 1092.44 -                  ) ) == sizeof(aux::no_tag) )
 1092.45 -            );
 1092.46 -
 1092.47 -        typedef bool_<value> type;
 1092.48 -
 1092.49 -#else // ISO98 C++
 1092.50 -        : bool_< 
 1092.51 -              ( sizeof( BOOST_MPL_AUX_OVERLOAD_CALL_IS_MASKED(
 1092.52 -                    Set
 1092.53 -                  , BOOST_MPL_AUX_STATIC_CAST(aux::type_wrapper<T>*, 0)
 1092.54 -                  ) ) == sizeof(aux::no_tag) )
 1092.55 -            >
 1092.56 -    {
 1092.57 -#endif
 1092.58 -    };
 1092.59 -};
 1092.60 -
 1092.61 -}}
 1092.62 -
 1092.63 -#endif // BOOST_MPL_SET_AUX_HAS_KEY_IMPL_HPP_INCLUDED
  1093.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1093.2 +++ b/epoc32/include/stdapis/boost/mpl/set/aux_/set0.hpp	Wed Mar 31 12:27:01 2010 +0100
  1093.3 @@ -0,0 +1,35 @@
  1093.4 +
  1093.5 +#ifndef BOOST_MPL_SET_SET0_HPP_INCLUDED
  1093.6 +#define BOOST_MPL_SET_SET0_HPP_INCLUDED
  1093.7 +
  1093.8 +// Copyright Aleksey Gurtovoy 2003-2004
  1093.9 +// Copyright David Abrahams 2003-2004
 1093.10 +//
 1093.11 +// Distributed under the Boost Software License, Version 1.0. 
 1093.12 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1093.13 +// http://www.boost.org/LICENSE_1_0.txt)
 1093.14 +//
 1093.15 +// See http://www.boost.org/libs/mpl for documentation.
 1093.16 +
 1093.17 +// $Source: /cvsroot/boost/boost/boost/mpl/set/set0.hpp,v $
 1093.18 +// $Date: 2004/09/02 15:41:02 $
 1093.19 +// $Revision: 1.5 $
 1093.20 +
 1093.21 +#include <boost/mpl/set/aux_/at_impl.hpp>
 1093.22 +#include <boost/mpl/set/aux_/clear_impl.hpp>
 1093.23 +//#include <boost/mpl/set/aux_/O1_size.hpp>
 1093.24 +#include <boost/mpl/set/aux_/size_impl.hpp>
 1093.25 +#include <boost/mpl/set/aux_/empty_impl.hpp>
 1093.26 +#include <boost/mpl/set/aux_/insert_impl.hpp>
 1093.27 +#include <boost/mpl/set/aux_/erase_impl.hpp>
 1093.28 +#include <boost/mpl/set/aux_/erase_key_impl.hpp>
 1093.29 +#include <boost/mpl/set/aux_/has_key_impl.hpp>
 1093.30 +#include <boost/mpl/set/aux_/key_type_impl.hpp>
 1093.31 +#include <boost/mpl/set/aux_/value_type_impl.hpp>
 1093.32 +#include <boost/mpl/set/aux_/begin_end_impl.hpp>
 1093.33 +#include <boost/mpl/set/aux_/iterator.hpp>
 1093.34 +#include <boost/mpl/set/aux_/item.hpp>
 1093.35 +#include <boost/mpl/set/aux_/set0.hpp>
 1093.36 +#include <boost/mpl/set/aux_/tag.hpp>
 1093.37 +
 1093.38 +#endif // BOOST_MPL_SET_SET0_HPP_INCLUDED
  1094.1 --- a/epoc32/include/stdapis/boost/mpl/set/aux_/size_impl.hpp	Tue Mar 16 16:12:26 2010 +0000
  1094.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1094.3 @@ -1,33 +0,0 @@
  1094.4 -
  1094.5 -#ifndef BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
  1094.6 -#define BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
  1094.7 -
  1094.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1094.9 -//
 1094.10 -// Distributed under the Boost Software License, Version 1.0. 
 1094.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1094.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1094.13 -//
 1094.14 -// See http://www.boost.org/libs/mpl for documentation.
 1094.15 -
 1094.16 -// $Source: /cvsroot/boost/boost/boost/mpl/set/aux_/size_impl.hpp,v $
 1094.17 -// $Date: 2004/09/02 15:41:02 $
 1094.18 -// $Revision: 1.2 $
 1094.19 -
 1094.20 -#include <boost/mpl/size_fwd.hpp>
 1094.21 -#include <boost/mpl/set/aux_/tag.hpp>
 1094.22 -
 1094.23 -namespace boost { namespace mpl {
 1094.24 -
 1094.25 -template<>
 1094.26 -struct size_impl< aux::set_tag >
 1094.27 -{
 1094.28 -    template< typename Set > struct apply
 1094.29 -        : Set::size
 1094.30 -    {
 1094.31 -    };
 1094.32 -};
 1094.33 -
 1094.34 -}}
 1094.35 -
 1094.36 -#endif // BOOST_MPL_SET_AUX_SIZE_IMPL_HPP_INCLUDED
  1095.1 --- a/epoc32/include/stdapis/boost/mpl/set/set0.hpp	Tue Mar 16 16:12:26 2010 +0000
  1095.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1095.3 @@ -1,35 +0,0 @@
  1095.4 -
  1095.5 -#ifndef BOOST_MPL_SET_SET0_HPP_INCLUDED
  1095.6 -#define BOOST_MPL_SET_SET0_HPP_INCLUDED
  1095.7 -
  1095.8 -// Copyright Aleksey Gurtovoy 2003-2004
  1095.9 -// Copyright David Abrahams 2003-2004
 1095.10 -//
 1095.11 -// Distributed under the Boost Software License, Version 1.0. 
 1095.12 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1095.13 -// http://www.boost.org/LICENSE_1_0.txt)
 1095.14 -//
 1095.15 -// See http://www.boost.org/libs/mpl for documentation.
 1095.16 -
 1095.17 -// $Source: /cvsroot/boost/boost/boost/mpl/set/set0.hpp,v $
 1095.18 -// $Date: 2004/09/02 15:41:02 $
 1095.19 -// $Revision: 1.5 $
 1095.20 -
 1095.21 -#include <boost/mpl/set/aux_/at_impl.hpp>
 1095.22 -#include <boost/mpl/set/aux_/clear_impl.hpp>
 1095.23 -//#include <boost/mpl/set/aux_/O1_size.hpp>
 1095.24 -#include <boost/mpl/set/aux_/size_impl.hpp>
 1095.25 -#include <boost/mpl/set/aux_/empty_impl.hpp>
 1095.26 -#include <boost/mpl/set/aux_/insert_impl.hpp>
 1095.27 -#include <boost/mpl/set/aux_/erase_impl.hpp>
 1095.28 -#include <boost/mpl/set/aux_/erase_key_impl.hpp>
 1095.29 -#include <boost/mpl/set/aux_/has_key_impl.hpp>
 1095.30 -#include <boost/mpl/set/aux_/key_type_impl.hpp>
 1095.31 -#include <boost/mpl/set/aux_/value_type_impl.hpp>
 1095.32 -#include <boost/mpl/set/aux_/begin_end_impl.hpp>
 1095.33 -#include <boost/mpl/set/aux_/iterator.hpp>
 1095.34 -#include <boost/mpl/set/aux_/item.hpp>
 1095.35 -#include <boost/mpl/set/aux_/set0.hpp>
 1095.36 -#include <boost/mpl/set/aux_/tag.hpp>
 1095.37 -
 1095.38 -#endif // BOOST_MPL_SET_SET0_HPP_INCLUDED
  1096.1 --- a/epoc32/include/stdapis/boost/mpl/times.hpp	Tue Mar 16 16:12:26 2010 +0000
  1096.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1096.3 @@ -1,21 +0,0 @@
  1096.4 -
  1096.5 -#ifndef BOOST_MPL_TIMES_HPP_INCLUDED
  1096.6 -#define BOOST_MPL_TIMES_HPP_INCLUDED
  1096.7 -
  1096.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1096.9 -//
 1096.10 -// Distributed under the Boost Software License, Version 1.0. 
 1096.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1096.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1096.13 -//
 1096.14 -// See http://www.boost.org/libs/mpl for documentation.
 1096.15 -
 1096.16 -// $Source: /cvsroot/boost/boost/boost/mpl/times.hpp,v $
 1096.17 -// $Date: 2004/09/02 15:40:42 $
 1096.18 -// $Revision: 1.2 $
 1096.19 -
 1096.20 -#define AUX778076_OP_NAME times
 1096.21 -#define AUX778076_OP_TOKEN *
 1096.22 -#include <boost/mpl/aux_/arithmetic_op.hpp>
 1096.23 -
 1096.24 -#endif // BOOST_MPL_TIMES_HPP_INCLUDED
  1097.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1097.2 +++ b/epoc32/include/stdapis/boost/mpl/transform.hpp	Wed Mar 31 12:27:01 2010 +0100
  1097.3 @@ -0,0 +1,48 @@
  1097.4 +# /* **************************************************************************
  1097.5 +#  *                                                                          *
  1097.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1097.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1097.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1097.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1097.10 +#  *                                                                          *
 1097.11 +#  ************************************************************************** */
 1097.12 +#
 1097.13 +# /* See http://www.boost.org for most recent version. */
 1097.14 +#
 1097.15 +# ifndef BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
 1097.16 +# define BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
 1097.17 +#
 1097.18 +# include <boost/preprocessor/config/config.hpp>
 1097.19 +# include <boost/preprocessor/seq/fold_left.hpp>
 1097.20 +# include <boost/preprocessor/seq/seq.hpp>
 1097.21 +# include <boost/preprocessor/tuple/elem.hpp>
 1097.22 +# include <boost/preprocessor/tuple/rem.hpp>
 1097.23 +#
 1097.24 +# /* BOOST_PP_SEQ_TRANSFORM */
 1097.25 +#
 1097.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1097.27 +#    define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1097.28 +# else
 1097.29 +#    define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TRANSFORM_I(op, data, seq)
 1097.30 +#    define BOOST_PP_SEQ_TRANSFORM_I(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1097.31 +# endif
 1097.32 +#
 1097.33 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1097.34 +#    define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_IM(s, BOOST_PP_TUPLE_REM_3 state, elem)
 1097.35 +#    define BOOST_PP_SEQ_TRANSFORM_O_IM(s, im, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, im, elem)
 1097.36 +# else
 1097.37 +#    define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, state), BOOST_PP_TUPLE_ELEM(3, 1, state), BOOST_PP_TUPLE_ELEM(3, 2, state), elem)
 1097.38 +# endif
 1097.39 +#
 1097.40 +# define BOOST_PP_SEQ_TRANSFORM_O_I(s, op, data, res, elem) (op, data, res (op(s, data, elem)))
 1097.41 +#
 1097.42 +# /* BOOST_PP_SEQ_TRANSFORM_S */
 1097.43 +#
 1097.44 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1097.45 +#    define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1097.46 +# else
 1097.47 +#    define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq)
 1097.48 +#    define BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1097.49 +# endif
 1097.50 +#
 1097.51 +# endif
  1098.1 --- a/epoc32/include/stdapis/boost/mpl/vector.hpp	Tue Mar 16 16:12:26 2010 +0000
  1098.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1098.3 @@ -1,57 +0,0 @@
  1098.4 -
  1098.5 -#ifndef BOOST_MPL_VECTOR_HPP_INCLUDED
  1098.6 -#define BOOST_MPL_VECTOR_HPP_INCLUDED
  1098.7 -
  1098.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1098.9 -//
 1098.10 -// Distributed under the Boost Software License, Version 1.0. 
 1098.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1098.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1098.13 -//
 1098.14 -// See http://www.boost.org/libs/mpl for documentation.
 1098.15 -
 1098.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector.hpp,v $
 1098.17 -// $Date: 2004/11/28 01:58:27 $
 1098.18 -// $Revision: 1.8 $
 1098.19 -
 1098.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1098.21 -#   include <boost/mpl/limits/vector.hpp>
 1098.22 -#   include <boost/mpl/aux_/na.hpp>
 1098.23 -#   include <boost/mpl/aux_/config/preprocessor.hpp>
 1098.24 -
 1098.25 -#   include <boost/preprocessor/inc.hpp>
 1098.26 -#   include <boost/preprocessor/cat.hpp>
 1098.27 -#   include <boost/preprocessor/stringize.hpp>
 1098.28 -
 1098.29 -#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 1098.30 -#   define AUX778076_VECTOR_HEADER \
 1098.31 -    BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE).hpp \
 1098.32 -    /**/
 1098.33 -#else
 1098.34 -#   define AUX778076_VECTOR_HEADER \
 1098.35 -    BOOST_PP_CAT(vector, BOOST_MPL_LIMIT_VECTOR_SIZE)##.hpp \
 1098.36 -    /**/
 1098.37 -#endif
 1098.38 -
 1098.39 -#   include BOOST_PP_STRINGIZE(boost/mpl/vector/AUX778076_VECTOR_HEADER)
 1098.40 -#   undef AUX778076_VECTOR_HEADER
 1098.41 -#endif
 1098.42 -
 1098.43 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1098.44 -
 1098.45 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1098.46 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1098.47 -
 1098.48 -#   define BOOST_MPL_PREPROCESSED_HEADER vector.hpp
 1098.49 -#   include <boost/mpl/aux_/include_preprocessed.hpp>
 1098.50 -
 1098.51 -#else
 1098.52 -
 1098.53 -#   include <boost/mpl/limits/vector.hpp>
 1098.54 -
 1098.55 -#   define AUX778076_SEQUENCE_NAME vector
 1098.56 -#   define AUX778076_SEQUENCE_LIMIT BOOST_MPL_LIMIT_VECTOR_SIZE
 1098.57 -#   include <boost/mpl/aux_/sequence_wrapper.hpp>
 1098.58 -
 1098.59 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1098.60 -#endif // BOOST_MPL_VECTOR_HPP_INCLUDED
  1099.1 --- a/epoc32/include/stdapis/boost/mpl/vector/aux_/O1_size.hpp	Tue Mar 16 16:12:26 2010 +0000
  1099.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1099.3 @@ -1,56 +0,0 @@
  1099.4 -
  1099.5 -#ifndef BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
  1099.6 -#define BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
  1099.7 -
  1099.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1099.9 -//
 1099.10 -// Distributed under the Boost Software License, Version 1.0. 
 1099.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1099.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1099.13 -//
 1099.14 -// See http://www.boost.org/libs/mpl for documentation.
 1099.15 -
 1099.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/O1_size.hpp,v $
 1099.17 -// $Date: 2004/09/04 01:33:47 $
 1099.18 -// $Revision: 1.5 $
 1099.19 -
 1099.20 -#include <boost/mpl/O1_size_fwd.hpp>
 1099.21 -#include <boost/mpl/minus.hpp>
 1099.22 -#include <boost/mpl/long.hpp>
 1099.23 -#include <boost/mpl/vector/aux_/tag.hpp>
 1099.24 -#include <boost/mpl/aux_/config/typeof.hpp>
 1099.25 -#include <boost/mpl/aux_/config/ctps.hpp>
 1099.26 -
 1099.27 -namespace boost { namespace mpl {
 1099.28 -
 1099.29 -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1099.30 -
 1099.31 -template<>
 1099.32 -struct O1_size_impl< aux::vector_tag >
 1099.33 -{
 1099.34 -    template< typename Vector > struct apply
 1099.35 -        : Vector::size
 1099.36 -    {
 1099.37 -    };
 1099.38 -};
 1099.39 -
 1099.40 -#else
 1099.41 -
 1099.42 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1099.43 -
 1099.44 -template< long N >
 1099.45 -struct O1_size_impl< aux::vector_tag<N> >
 1099.46 -{
 1099.47 -    template< typename Vector > struct apply
 1099.48 -        : mpl::long_<N>
 1099.49 -    {
 1099.50 -    };
 1099.51 -};
 1099.52 -
 1099.53 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1099.54 -
 1099.55 -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1099.56 -
 1099.57 -}}
 1099.58 -
 1099.59 -#endif // BOOST_MPL_VECTOR_AUX_O1_SIZE_HPP_INCLUDED
  1100.1 --- a/epoc32/include/stdapis/boost/mpl/vector/aux_/begin_end.hpp	Tue Mar 16 16:12:26 2010 +0000
  1100.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1100.3 @@ -1,49 +0,0 @@
  1100.4 -
  1100.5 -#ifndef BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
  1100.6 -#define BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
  1100.7 -
  1100.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1100.9 -//
 1100.10 -// Distributed under the Boost Software License, Version 1.0. 
 1100.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1100.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1100.13 -//
 1100.14 -// See http://www.boost.org/libs/mpl for documentation.
 1100.15 -
 1100.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/begin_end.hpp,v $
 1100.17 -// $Date: 2004/09/02 15:41:19 $
 1100.18 -// $Revision: 1.4 $
 1100.19 -
 1100.20 -#include <boost/mpl/aux_/config/typeof.hpp>
 1100.21 -
 1100.22 -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1100.23 -
 1100.24 -#   include <boost/mpl/begin_end_fwd.hpp>
 1100.25 -#   include <boost/mpl/vector/aux_/iterator.hpp>
 1100.26 -#   include <boost/mpl/vector/aux_/tag.hpp>
 1100.27 -
 1100.28 -namespace boost { namespace mpl {
 1100.29 -
 1100.30 -template<>
 1100.31 -struct begin_impl< aux::vector_tag >
 1100.32 -{
 1100.33 -    template< typename Vector > struct apply
 1100.34 -    {
 1100.35 -        typedef v_iter<Vector,0> type;
 1100.36 -    };
 1100.37 -};
 1100.38 -
 1100.39 -template<>
 1100.40 -struct end_impl< aux::vector_tag >
 1100.41 -{
 1100.42 -    template< typename Vector > struct apply
 1100.43 -    {
 1100.44 -        typedef v_iter<Vector,Vector::size::value> type;
 1100.45 -    };
 1100.46 -};
 1100.47 -
 1100.48 -}}
 1100.49 -
 1100.50 -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1100.51 -
 1100.52 -#endif // BOOST_MPL_VECTOR_AUX_BEGIN_END_HPP_INCLUDED
  1101.1 --- a/epoc32/include/stdapis/boost/mpl/vector/aux_/clear.hpp	Tue Mar 16 16:12:26 2010 +0000
  1101.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1101.3 @@ -1,55 +0,0 @@
  1101.4 -
  1101.5 -#ifndef BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
  1101.6 -#define BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
  1101.7 -
  1101.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1101.9 -//
 1101.10 -// Distributed under the Boost Software License, Version 1.0. 
 1101.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1101.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1101.13 -//
 1101.14 -// See http://www.boost.org/libs/mpl for documentation.
 1101.15 -
 1101.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/clear.hpp,v $
 1101.17 -// $Date: 2004/09/02 15:41:19 $
 1101.18 -// $Revision: 1.4 $
 1101.19 -
 1101.20 -#include <boost/mpl/clear_fwd.hpp>
 1101.21 -#include <boost/mpl/vector/aux_/vector0.hpp>
 1101.22 -#include <boost/mpl/vector/aux_/tag.hpp>
 1101.23 -#include <boost/mpl/aux_/config/typeof.hpp>
 1101.24 -#include <boost/mpl/aux_/config/ctps.hpp>
 1101.25 -
 1101.26 -namespace boost { namespace mpl {
 1101.27 -
 1101.28 -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1101.29 -
 1101.30 -template<>
 1101.31 -struct clear_impl< aux::vector_tag >
 1101.32 -{
 1101.33 -    template< typename Vector > struct apply
 1101.34 -    {
 1101.35 -        typedef vector0<> type;
 1101.36 -    };
 1101.37 -};
 1101.38 -
 1101.39 -#else
 1101.40 -
 1101.41 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1101.42 -
 1101.43 -template< long N >
 1101.44 -struct clear_impl< aux::vector_tag<N> >
 1101.45 -{
 1101.46 -    template< typename Vector > struct apply
 1101.47 -    {
 1101.48 -        typedef vector0<> type;
 1101.49 -    };
 1101.50 -};
 1101.51 -
 1101.52 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1101.53 -
 1101.54 -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1101.55 -
 1101.56 -}}
 1101.57 -
 1101.58 -#endif // BOOST_MPL_VECTOR_AUX_CLEAR_HPP_INCLUDED
  1102.1 --- a/epoc32/include/stdapis/boost/mpl/vector/aux_/front.hpp	Tue Mar 16 16:12:26 2010 +0000
  1102.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1102.3 @@ -1,56 +0,0 @@
  1102.4 -
  1102.5 -#ifndef BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
  1102.6 -#define BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
  1102.7 -
  1102.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1102.9 -//
 1102.10 -// Distributed under the Boost Software License, Version 1.0. 
 1102.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1102.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1102.13 -//
 1102.14 -// See http://www.boost.org/libs/mpl for documentation.
 1102.15 -
 1102.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/front.hpp,v $
 1102.17 -// $Date: 2004/09/02 15:41:19 $
 1102.18 -// $Revision: 1.4 $
 1102.19 -
 1102.20 -#include <boost/mpl/front_fwd.hpp>
 1102.21 -#include <boost/mpl/vector/aux_/at.hpp>
 1102.22 -#include <boost/mpl/vector/aux_/tag.hpp>
 1102.23 -#include <boost/mpl/aux_/nttp_decl.hpp>
 1102.24 -#include <boost/mpl/aux_/config/typeof.hpp>
 1102.25 -#include <boost/mpl/aux_/config/ctps.hpp>
 1102.26 -
 1102.27 -namespace boost { namespace mpl {
 1102.28 -
 1102.29 -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1102.30 -
 1102.31 -template<>
 1102.32 -struct front_impl< aux::vector_tag >
 1102.33 -{
 1102.34 -    template< typename Vector > struct apply
 1102.35 -        : v_at<Vector,0>
 1102.36 -    {
 1102.37 -    };
 1102.38 -};
 1102.39 -
 1102.40 -#else
 1102.41 -
 1102.42 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1102.43 -
 1102.44 -template< BOOST_MPL_AUX_NTTP_DECL(long, n_) >
 1102.45 -struct front_impl< aux::vector_tag<n_> >
 1102.46 -{
 1102.47 -    template< typename Vector > struct apply
 1102.48 -    {
 1102.49 -        typedef typename Vector::item0 type;
 1102.50 -    };
 1102.51 -};
 1102.52 -
 1102.53 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1102.54 -
 1102.55 -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
 1102.56 -
 1102.57 -}}
 1102.58 -
 1102.59 -#endif // BOOST_MPL_LIST_AUX_FRONT_HPP_INCLUDED
  1103.1 --- a/epoc32/include/stdapis/boost/mpl/vector/aux_/include_preprocessed.hpp	Tue Mar 16 16:12:26 2010 +0000
  1103.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1103.3 @@ -1,55 +0,0 @@
  1103.4 -
  1103.5 -// NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
  1103.6 -
  1103.7 -// Copyright Aleksey Gurtovoy 2000-2006
  1103.8 -//
  1103.9 -// Distributed under the Boost Software License, Version 1.0. 
 1103.10 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1103.11 -// http://www.boost.org/LICENSE_1_0.txt)
 1103.12 -//
 1103.13 -// See http://www.boost.org/libs/mpl for documentation.
 1103.14 -
 1103.15 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/include_preprocessed.hpp,v $
 1103.16 -// $Date: 2006/11/09 01:21:03 $
 1103.17 -// $Revision: 1.4.8.1 $
 1103.18 -
 1103.19 -#include <boost/mpl/aux_/config/typeof.hpp>
 1103.20 -#include <boost/mpl/aux_/config/ctps.hpp>
 1103.21 -#include <boost/mpl/aux_/config/preprocessor.hpp>
 1103.22 -#include <boost/mpl/aux_/config/workaround.hpp>
 1103.23 -
 1103.24 -#include <boost/preprocessor/cat.hpp>
 1103.25 -#include <boost/preprocessor/stringize.hpp>
 1103.26 -
 1103.27 -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1103.28 -#   define AUX778076_INCLUDE_DIR typeof_based
 1103.29 -#elif defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
 1103.30 -   || defined(BOOST_MPL_CFG_NO_NONTYPE_TEMPLATE_PARTIAL_SPEC)
 1103.31 -#   define AUX778076_INCLUDE_DIR no_ctps
 1103.32 -#else
 1103.33 -#   define AUX778076_INCLUDE_DIR plain
 1103.34 -#endif
 1103.35 -
 1103.36 -#if !defined(BOOST_NEEDS_TOKEN_PASTING_OP_FOR_TOKENS_JUXTAPOSING)
 1103.37 -#   define AUX778076_HEADER \
 1103.38 -    AUX778076_INCLUDE_DIR/BOOST_MPL_PREPROCESSED_HEADER \
 1103.39 -/**/
 1103.40 -#else
 1103.41 -#   define AUX778076_HEADER \
 1103.42 -    BOOST_PP_CAT(AUX778076_INCLUDE_DIR,/)##BOOST_MPL_PREPROCESSED_HEADER \
 1103.43 -/**/
 1103.44 -#endif
 1103.45 -
 1103.46 -
 1103.47 -#if BOOST_WORKAROUND(__IBMCPP__, BOOST_TESTED_AT(700))
 1103.48 -#   define AUX778076_INCLUDE_STRING BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
 1103.49 -#   include AUX778076_INCLUDE_STRING
 1103.50 -#   undef AUX778076_INCLUDE_STRING
 1103.51 -#else
 1103.52 -#   include BOOST_PP_STRINGIZE(boost/mpl/vector/aux_/preprocessed/AUX778076_HEADER)
 1103.53 -#endif
 1103.54 -
 1103.55 -#   undef AUX778076_HEADER
 1103.56 -#   undef AUX778076_INCLUDE_DIR
 1103.57 -
 1103.58 -#undef BOOST_MPL_PREPROCESSED_HEADER
  1104.1 --- a/epoc32/include/stdapis/boost/mpl/vector/aux_/item.hpp	Tue Mar 16 16:12:26 2010 +0000
  1104.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1104.3 @@ -1,103 +0,0 @@
  1104.4 -
  1104.5 -#ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
  1104.6 -#define BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
  1104.7 -
  1104.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1104.9 -//
 1104.10 -// Distributed under the Boost Software License, Version 1.0. 
 1104.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1104.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1104.13 -//
 1104.14 -// See http://www.boost.org/libs/mpl for documentation.
 1104.15 -
 1104.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/aux_/item.hpp,v $
 1104.17 -// $Date: 2005/05/15 00:39:04 $
 1104.18 -// $Revision: 1.8 $
 1104.19 -
 1104.20 -#include <boost/mpl/long.hpp>
 1104.21 -#include <boost/mpl/void.hpp>
 1104.22 -#include <boost/mpl/next_prior.hpp>
 1104.23 -#include <boost/mpl/aux_/type_wrapper.hpp>
 1104.24 -#include <boost/mpl/aux_/config/typeof.hpp>
 1104.25 -#include <boost/mpl/aux_/config/ctps.hpp>
 1104.26 -
 1104.27 -namespace boost { namespace mpl {
 1104.28 -
 1104.29 -#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
 1104.30 -
 1104.31 -template< 
 1104.32 -      typename T
 1104.33 -    , typename Base
 1104.34 -    , int at_front = 0
 1104.35 -    >
 1104.36 -struct v_item
 1104.37 -    : Base
 1104.38 -{
 1104.39 -    typedef typename Base::upper_bound_ index_;
 1104.40 -    typedef typename next<index_>::type upper_bound_;
 1104.41 -    typedef typename next<typename Base::size>::type size;
 1104.42 -    typedef Base base;
 1104.43 -    typedef v_item type;
 1104.44 -
 1104.45 -    // agurt 10/sep/04: MWCW <= 9.3 workaround here and below; the compiler
 1104.46 -    // breaks if using declaration comes _before_ the new overload
 1104.47 -    static aux::type_wrapper<T> item_(index_);
 1104.48 -    using Base::item_;
 1104.49 -};
 1104.50 -
 1104.51 -template<
 1104.52 -      typename T
 1104.53 -    , typename Base
 1104.54 -    >
 1104.55 -struct v_item<T,Base,1>
 1104.56 -    : Base
 1104.57 -{
 1104.58 -    typedef typename prior<typename Base::lower_bound_>::type index_;
 1104.59 -    typedef index_ lower_bound_;
 1104.60 -    typedef typename next<typename Base::size>::type size;
 1104.61 -    typedef Base base;
 1104.62 -    typedef v_item type;
 1104.63 -
 1104.64 -    static aux::type_wrapper<T> item_(index_);
 1104.65 -    using Base::item_;
 1104.66 -};
 1104.67 -
 1104.68 -// "erasure" item
 1104.69 -template< 
 1104.70 -      typename Base
 1104.71 -    , int at_front
 1104.72 -    >
 1104.73 -struct v_mask
 1104.74 -    : Base
 1104.75 -{
 1104.76 -    typedef typename prior<typename Base::upper_bound_>::type index_;
 1104.77 -    typedef index_ upper_bound_;
 1104.78 -    typedef typename prior<typename Base::size>::type size;
 1104.79 -    typedef Base base;
 1104.80 -    typedef v_mask type;
 1104.81 -
 1104.82 -    static aux::type_wrapper<void_> item_(index_);
 1104.83 -    using Base::item_;
 1104.84 -};
 1104.85 -
 1104.86 -template< 
 1104.87 -      typename Base
 1104.88 -    >
 1104.89 -struct v_mask<Base,1>
 1104.90 -    : Base
 1104.91 -{
 1104.92 -    typedef typename Base::lower_bound_ index_;
 1104.93 -    typedef typename next<index_>::type lower_bound_;
 1104.94 -    typedef typename prior<typename Base::size>::type size;
 1104.95 -    typedef Base base;
 1104.96 -    typedef v_mask type;
 1104.97 -
 1104.98 -    static aux::type_wrapper<void_> item_(index_);
 1104.99 -    using Base::item_;
1104.100 -};
1104.101 -
1104.102 -#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
1104.103 -
1104.104 -}}
1104.105 -
1104.106 -#endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
  1105.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1105.2 +++ b/epoc32/include/stdapis/boost/mpl/vector/aux_/pop_back.hpp	Wed Mar 31 12:27:01 2010 +0100
  1105.3 @@ -0,0 +1,29 @@
  1105.4 +# /* **************************************************************************
  1105.5 +#  *                                                                          *
  1105.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1105.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1105.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1105.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1105.10 +#  *                                                                          *
 1105.11 +#  ************************************************************************** */
 1105.12 +#
 1105.13 +# /* See http://www.boost.org for most recent version. */
 1105.14 +#
 1105.15 +# ifndef BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP
 1105.16 +# define BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP
 1105.17 +#
 1105.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1105.19 +# include <boost/preprocessor/config/config.hpp>
 1105.20 +# include <boost/preprocessor/seq/first_n.hpp>
 1105.21 +# include <boost/preprocessor/seq/size.hpp>
 1105.22 +#
 1105.23 +# /* BOOST_PP_SEQ_POP_BACK */
 1105.24 +#
 1105.25 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1105.26 +#    define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)
 1105.27 +# else
 1105.28 +#    define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_POP_BACK_I(seq)
 1105.29 +#    define BOOST_PP_SEQ_POP_BACK_I(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)
 1105.30 +# endif
 1105.31 +#
 1105.32 +# endif
  1106.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1106.2 +++ b/epoc32/include/stdapis/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp	Wed Mar 31 12:27:01 2010 +0100
  1106.3 @@ -0,0 +1,45 @@
  1106.4 +
  1106.5 +#ifndef BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
  1106.6 +#define BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
  1106.7 +
  1106.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1106.9 +//
 1106.10 +// Distributed under the Boost Software License, Version 1.0. 
 1106.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1106.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1106.13 +//
 1106.14 +// See http://www.boost.org/libs/mpl for documentation.
 1106.15 +
 1106.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/vector10.hpp,v $
 1106.17 +// $Date: 2004/09/02 15:41:19 $
 1106.18 +// $Revision: 1.6 $
 1106.19 +
 1106.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1106.21 +#   include <boost/mpl/vector/vector0.hpp>
 1106.22 +#endif
 1106.23 +
 1106.24 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1106.25 +
 1106.26 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1106.27 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1106.28 +
 1106.29 +#   define BOOST_MPL_PREPROCESSED_HEADER vector10.hpp
 1106.30 +#   include <boost/mpl/vector/aux_/include_preprocessed.hpp>
 1106.31 +
 1106.32 +#else
 1106.33 +
 1106.34 +#   include <boost/mpl/aux_/config/typeof.hpp>
 1106.35 +#   include <boost/mpl/aux_/config/ctps.hpp>
 1106.36 +#   include <boost/preprocessor/iterate.hpp>
 1106.37 +
 1106.38 +namespace boost { namespace mpl {
 1106.39 +
 1106.40 +#   define BOOST_PP_ITERATION_PARAMS_1 \
 1106.41 +    (3,(0, 10, <boost/mpl/vector/aux_/numbered.hpp>))
 1106.42 +#   include BOOST_PP_ITERATE()
 1106.43 +
 1106.44 +}}
 1106.45 +
 1106.46 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1106.47 +
 1106.48 +#endif // BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
  1107.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1107.2 +++ b/epoc32/include/stdapis/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp	Wed Mar 31 12:27:01 2010 +0100
  1107.3 @@ -0,0 +1,45 @@
  1107.4 +
  1107.5 +#ifndef BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
  1107.6 +#define BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
  1107.7 +
  1107.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1107.9 +//
 1107.10 +// Distributed under the Boost Software License, Version 1.0. 
 1107.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1107.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1107.13 +//
 1107.14 +// See http://www.boost.org/libs/mpl for documentation.
 1107.15 +
 1107.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/vector20.hpp,v $
 1107.17 +// $Date: 2004/09/02 15:41:19 $
 1107.18 +// $Revision: 1.6 $
 1107.19 +
 1107.20 +#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1107.21 +#   include <boost/mpl/vector/vector10.hpp>
 1107.22 +#endif
 1107.23 +
 1107.24 +#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1107.25 +
 1107.26 +#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1107.27 +    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1107.28 +
 1107.29 +#   define BOOST_MPL_PREPROCESSED_HEADER vector20.hpp
 1107.30 +#   include <boost/mpl/vector/aux_/include_preprocessed.hpp>
 1107.31 +
 1107.32 +#else
 1107.33 +
 1107.34 +#   include <boost/mpl/aux_/config/typeof.hpp>
 1107.35 +#   include <boost/mpl/aux_/config/ctps.hpp>
 1107.36 +#   include <boost/preprocessor/iterate.hpp>
 1107.37 +
 1107.38 +namespace boost { namespace mpl {
 1107.39 +
 1107.40 +#   define BOOST_PP_ITERATION_PARAMS_1 \
 1107.41 +    (3,(11, 20, <boost/mpl/vector/aux_/numbered.hpp>))
 1107.42 +#   include BOOST_PP_ITERATE()
 1107.43 +
 1107.44 +}}
 1107.45 +
 1107.46 +#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1107.47 +
 1107.48 +#endif // BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
  1108.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1108.2 +++ b/epoc32/include/stdapis/boost/mpl/vector/aux_/vector0.hpp	Wed Mar 31 12:27:01 2010 +0100
  1108.3 @@ -0,0 +1,34 @@
  1108.4 +
  1108.5 +#ifndef BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
  1108.6 +#define BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
  1108.7 +
  1108.8 +// Copyright Aleksey Gurtovoy 2000-2004
  1108.9 +//
 1108.10 +// Distributed under the Boost Software License, Version 1.0. 
 1108.11 +// (See accompanying file LICENSE_1_0.txt or copy at 
 1108.12 +// http://www.boost.org/LICENSE_1_0.txt)
 1108.13 +//
 1108.14 +// See http://www.boost.org/libs/mpl for documentation.
 1108.15 +
 1108.16 +// $Source: /cvsroot/boost/boost/boost/mpl/vector/vector0.hpp,v $
 1108.17 +// $Date: 2004/09/02 15:41:19 $
 1108.18 +// $Revision: 1.4 $
 1108.19 +
 1108.20 +#include <boost/mpl/vector/aux_/at.hpp>
 1108.21 +#include <boost/mpl/vector/aux_/front.hpp>
 1108.22 +#include <boost/mpl/vector/aux_/push_front.hpp>
 1108.23 +#include <boost/mpl/vector/aux_/pop_front.hpp>
 1108.24 +#include <boost/mpl/vector/aux_/push_back.hpp>
 1108.25 +#include <boost/mpl/vector/aux_/pop_back.hpp>
 1108.26 +#include <boost/mpl/vector/aux_/back.hpp>
 1108.27 +#include <boost/mpl/vector/aux_/clear.hpp>
 1108.28 +#include <boost/mpl/vector/aux_/O1_size.hpp>
 1108.29 +#include <boost/mpl/vector/aux_/size.hpp>
 1108.30 +#include <boost/mpl/vector/aux_/empty.hpp>
 1108.31 +#include <boost/mpl/vector/aux_/item.hpp>
 1108.32 +#include <boost/mpl/vector/aux_/iterator.hpp>
 1108.33 +#include <boost/mpl/vector/aux_/vector0.hpp>
 1108.34 +#include <boost/mpl/vector/aux_/begin_end.hpp>
 1108.35 +#include <boost/mpl/vector/aux_/tag.hpp>
 1108.36 +
 1108.37 +#endif // BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
  1109.1 --- a/epoc32/include/stdapis/boost/mpl/vector/vector0.hpp	Tue Mar 16 16:12:26 2010 +0000
  1109.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1109.3 @@ -1,34 +0,0 @@
  1109.4 -
  1109.5 -#ifndef BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
  1109.6 -#define BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
  1109.7 -
  1109.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1109.9 -//
 1109.10 -// Distributed under the Boost Software License, Version 1.0. 
 1109.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1109.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1109.13 -//
 1109.14 -// See http://www.boost.org/libs/mpl for documentation.
 1109.15 -
 1109.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/vector0.hpp,v $
 1109.17 -// $Date: 2004/09/02 15:41:19 $
 1109.18 -// $Revision: 1.4 $
 1109.19 -
 1109.20 -#include <boost/mpl/vector/aux_/at.hpp>
 1109.21 -#include <boost/mpl/vector/aux_/front.hpp>
 1109.22 -#include <boost/mpl/vector/aux_/push_front.hpp>
 1109.23 -#include <boost/mpl/vector/aux_/pop_front.hpp>
 1109.24 -#include <boost/mpl/vector/aux_/push_back.hpp>
 1109.25 -#include <boost/mpl/vector/aux_/pop_back.hpp>
 1109.26 -#include <boost/mpl/vector/aux_/back.hpp>
 1109.27 -#include <boost/mpl/vector/aux_/clear.hpp>
 1109.28 -#include <boost/mpl/vector/aux_/O1_size.hpp>
 1109.29 -#include <boost/mpl/vector/aux_/size.hpp>
 1109.30 -#include <boost/mpl/vector/aux_/empty.hpp>
 1109.31 -#include <boost/mpl/vector/aux_/item.hpp>
 1109.32 -#include <boost/mpl/vector/aux_/iterator.hpp>
 1109.33 -#include <boost/mpl/vector/aux_/vector0.hpp>
 1109.34 -#include <boost/mpl/vector/aux_/begin_end.hpp>
 1109.35 -#include <boost/mpl/vector/aux_/tag.hpp>
 1109.36 -
 1109.37 -#endif // BOOST_MPL_VECTOR_VECTOR0_HPP_INCLUDED
  1110.1 --- a/epoc32/include/stdapis/boost/mpl/vector/vector10.hpp	Tue Mar 16 16:12:26 2010 +0000
  1110.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1110.3 @@ -1,45 +0,0 @@
  1110.4 -
  1110.5 -#ifndef BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
  1110.6 -#define BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
  1110.7 -
  1110.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1110.9 -//
 1110.10 -// Distributed under the Boost Software License, Version 1.0. 
 1110.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1110.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1110.13 -//
 1110.14 -// See http://www.boost.org/libs/mpl for documentation.
 1110.15 -
 1110.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/vector10.hpp,v $
 1110.17 -// $Date: 2004/09/02 15:41:19 $
 1110.18 -// $Revision: 1.6 $
 1110.19 -
 1110.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1110.21 -#   include <boost/mpl/vector/vector0.hpp>
 1110.22 -#endif
 1110.23 -
 1110.24 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1110.25 -
 1110.26 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1110.27 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1110.28 -
 1110.29 -#   define BOOST_MPL_PREPROCESSED_HEADER vector10.hpp
 1110.30 -#   include <boost/mpl/vector/aux_/include_preprocessed.hpp>
 1110.31 -
 1110.32 -#else
 1110.33 -
 1110.34 -#   include <boost/mpl/aux_/config/typeof.hpp>
 1110.35 -#   include <boost/mpl/aux_/config/ctps.hpp>
 1110.36 -#   include <boost/preprocessor/iterate.hpp>
 1110.37 -
 1110.38 -namespace boost { namespace mpl {
 1110.39 -
 1110.40 -#   define BOOST_PP_ITERATION_PARAMS_1 \
 1110.41 -    (3,(0, 10, <boost/mpl/vector/aux_/numbered.hpp>))
 1110.42 -#   include BOOST_PP_ITERATE()
 1110.43 -
 1110.44 -}}
 1110.45 -
 1110.46 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1110.47 -
 1110.48 -#endif // BOOST_MPL_VECTOR_VECTOR10_HPP_INCLUDED
  1111.1 --- a/epoc32/include/stdapis/boost/mpl/vector/vector20.hpp	Tue Mar 16 16:12:26 2010 +0000
  1111.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1111.3 @@ -1,45 +0,0 @@
  1111.4 -
  1111.5 -#ifndef BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
  1111.6 -#define BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
  1111.7 -
  1111.8 -// Copyright Aleksey Gurtovoy 2000-2004
  1111.9 -//
 1111.10 -// Distributed under the Boost Software License, Version 1.0. 
 1111.11 -// (See accompanying file LICENSE_1_0.txt or copy at 
 1111.12 -// http://www.boost.org/LICENSE_1_0.txt)
 1111.13 -//
 1111.14 -// See http://www.boost.org/libs/mpl for documentation.
 1111.15 -
 1111.16 -// $Source: /cvsroot/boost/boost/boost/mpl/vector/vector20.hpp,v $
 1111.17 -// $Date: 2004/09/02 15:41:19 $
 1111.18 -// $Revision: 1.6 $
 1111.19 -
 1111.20 -#if !defined(BOOST_MPL_PREPROCESSING_MODE)
 1111.21 -#   include <boost/mpl/vector/vector10.hpp>
 1111.22 -#endif
 1111.23 -
 1111.24 -#include <boost/mpl/aux_/config/use_preprocessed.hpp>
 1111.25 -
 1111.26 -#if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
 1111.27 -    && !defined(BOOST_MPL_PREPROCESSING_MODE)
 1111.28 -
 1111.29 -#   define BOOST_MPL_PREPROCESSED_HEADER vector20.hpp
 1111.30 -#   include <boost/mpl/vector/aux_/include_preprocessed.hpp>
 1111.31 -
 1111.32 -#else
 1111.33 -
 1111.34 -#   include <boost/mpl/aux_/config/typeof.hpp>
 1111.35 -#   include <boost/mpl/aux_/config/ctps.hpp>
 1111.36 -#   include <boost/preprocessor/iterate.hpp>
 1111.37 -
 1111.38 -namespace boost { namespace mpl {
 1111.39 -
 1111.40 -#   define BOOST_PP_ITERATION_PARAMS_1 \
 1111.41 -    (3,(11, 20, <boost/mpl/vector/aux_/numbered.hpp>))
 1111.42 -#   include BOOST_PP_ITERATE()
 1111.43 -
 1111.44 -}}
 1111.45 -
 1111.46 -#endif // BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 1111.47 -
 1111.48 -#endif // BOOST_MPL_VECTOR_VECTOR20_HPP_INCLUDED
  1112.1 --- a/epoc32/include/stdapis/boost/multi_array/algorithm.hpp	Tue Mar 16 16:12:26 2010 +0000
  1112.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1112.3 @@ -1,103 +0,0 @@
  1112.4 -#ifndef BOOST_ALGORITHM_RG071801_HPP
  1112.5 -#define BOOST_ALGORITHM_RG071801_HPP
  1112.6 -
  1112.7 -//
  1112.8 -//
  1112.9 -// Copyright (c) 1994
 1112.10 -// Hewlett-Packard Company
 1112.11 -//
 1112.12 -// Permission to use, copy, modify, distribute and sell this software
 1112.13 -// and its documentation for any purpose is hereby granted without fee,
 1112.14 -// provided that the above copyright notice appear in all copies and
 1112.15 -// that both that copyright notice and this permission notice appear
 1112.16 -// in supporting documentation.  Hewlett-Packard Company makes no
 1112.17 -// representations about the suitability of this software for any
 1112.18 -// purpose.  It is provided "as is" without express or implied warranty.
 1112.19 -//
 1112.20 -//
 1112.21 -// Copyright (c) 1996-1998
 1112.22 -// Silicon Graphics Computer Systems, Inc.
 1112.23 -//
 1112.24 -// Permission to use, copy, modify, distribute and sell this software
 1112.25 -// and its documentation for any purpose is hereby granted without fee,
 1112.26 -// provided that the above copyright notice appear in all copies and
 1112.27 -// that both that copyright notice and this permission notice appear
 1112.28 -// in supporting documentation.  Silicon Graphics makes no
 1112.29 -// representations about the suitability of this software for any
 1112.30 -// purpose.  It is provided "as is" without express or implied warranty.
 1112.31 -//
 1112.32 -
 1112.33 -// Copyright 2002 The Trustees of Indiana University.
 1112.34 -
 1112.35 -// Use, modification and distribution is subject to the Boost Software 
 1112.36 -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1112.37 -// http://www.boost.org/LICENSE_1_0.txt)
 1112.38 -
 1112.39 -//  Boost.MultiArray Library
 1112.40 -//  Authors: Ronald Garcia
 1112.41 -//           Jeremy Siek
 1112.42 -//           Andrew Lumsdaine
 1112.43 -//  See http://www.boost.org/libs/multi_array for documentation.
 1112.44 -
 1112.45 -
 1112.46 -#include "boost/iterator.hpp"
 1112.47 -
 1112.48 -namespace boost {
 1112.49 -namespace detail {
 1112.50 -namespace multi_array {
 1112.51 -//--------------------------------------------------
 1112.52 -// copy_n (not part of the C++ standard)
 1112.53 -#if 1
 1112.54 -
 1112.55 -template <class InputIter, class Size, class OutputIter>
 1112.56 -OutputIter copy_n(InputIter first, Size count,
 1112.57 -                  OutputIter result) {
 1112.58 -  for ( ; count > 0; --count) {
 1112.59 -    *result = *first;
 1112.60 -    ++first;
 1112.61 -    ++result;
 1112.62 -  }
 1112.63 -  return result;
 1112.64 -}
 1112.65 -#else // !1
 1112.66 -
 1112.67 -template <class InputIter, class Size, class OutputIter>
 1112.68 -OutputIter copy_n__(InputIter first, Size count,
 1112.69 -                                       OutputIter result,
 1112.70 -                                       std::input_iterator_tag) {
 1112.71 -  for ( ; count > 0; --count) {
 1112.72 -    *result = *first;
 1112.73 -    ++first;
 1112.74 -    ++result;
 1112.75 -  }
 1112.76 -  return result;
 1112.77 -}
 1112.78 -
 1112.79 -template <class RAIter, class Size, class OutputIter>
 1112.80 -inline OutputIter
 1112.81 -copy_n__(RAIter first, Size count,
 1112.82 -         OutputIter result,
 1112.83 -         std::random_access_iterator_tag) {
 1112.84 -  RAIter last = first + count;
 1112.85 -  return std::copy(first, last, result);
 1112.86 -}
 1112.87 -
 1112.88 -template <class InputIter, class Size, class OutputIter>
 1112.89 -inline OutputIter
 1112.90 -copy_n__(InputIter first, Size count, OutputIter result) {
 1112.91 -  typedef typename std::iterator_traits<InputIter>::iterator_category cat;
 1112.92 -  return copy_n__(first, count, result, cat());
 1112.93 -}
 1112.94 -
 1112.95 -template <class InputIter, class Size, class OutputIter>
 1112.96 -inline OutputIter
 1112.97 -copy_n(InputIter first, Size count, OutputIter result) {
 1112.98 -  return copy_n__(first, count, result);
 1112.99 -}
1112.100 -
1112.101 -#endif // 1
1112.102 -} // namespace multi_array
1112.103 -} // namespace detail
1112.104 -} // namespace boost
1112.105 -
1112.106 -#endif // BOOST_ALGORITHM_RG071801_HPP
  1113.1 --- a/epoc32/include/stdapis/boost/multi_array/base.hpp	Tue Mar 16 16:12:26 2010 +0000
  1113.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1113.3 @@ -1,479 +0,0 @@
  1113.4 -// Copyright 2002 The Trustees of Indiana University.
  1113.5 -
  1113.6 -// Use, modification and distribution is subject to the Boost Software 
  1113.7 -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1113.8 -// http://www.boost.org/LICENSE_1_0.txt)
  1113.9 -
 1113.10 -//  Boost.MultiArray Library
 1113.11 -//  Authors: Ronald Garcia
 1113.12 -//           Jeremy Siek
 1113.13 -//           Andrew Lumsdaine
 1113.14 -//  See http://www.boost.org/libs/multi_array for documentation.
 1113.15 -
 1113.16 -#ifndef BASE_RG071801_HPP
 1113.17 -#define BASE_RG071801_HPP
 1113.18 -
 1113.19 -//
 1113.20 -// base.hpp - some implementation base classes for from which
 1113.21 -// functionality is acquired
 1113.22 -//
 1113.23 -
 1113.24 -#include "boost/multi_array/extent_range.hpp"
 1113.25 -#include "boost/multi_array/extent_gen.hpp"
 1113.26 -#include "boost/multi_array/index_range.hpp"
 1113.27 -#include "boost/multi_array/index_gen.hpp"
 1113.28 -#include "boost/multi_array/storage_order.hpp"
 1113.29 -#include "boost/multi_array/types.hpp"
 1113.30 -#include "boost/config.hpp"
 1113.31 -#include "boost/multi_array/concept_checks.hpp" //for ignore_unused_...
 1113.32 -#include "boost/mpl/eval_if.hpp"
 1113.33 -#include "boost/mpl/if.hpp"
 1113.34 -#include "boost/mpl/size_t.hpp"
 1113.35 -#include "boost/mpl/aux_/msvc_eti_base.hpp"
 1113.36 -#include "boost/iterator/reverse_iterator.hpp"
 1113.37 -#include "boost/static_assert.hpp"
 1113.38 -#include "boost/type.hpp"
 1113.39 -#include "boost/assert.hpp"
 1113.40 -#include <cstddef>
 1113.41 -#include <memory>
 1113.42 -
 1113.43 -namespace boost {
 1113.44 -
 1113.45 -/////////////////////////////////////////////////////////////////////////
 1113.46 -// class declarations
 1113.47 -/////////////////////////////////////////////////////////////////////////
 1113.48 -
 1113.49 -template<typename T, std::size_t NumDims,
 1113.50 -  typename Allocator = std::allocator<T> >
 1113.51 -class multi_array;
 1113.52 -
 1113.53 -// This is a public interface for use by end users!
 1113.54 -namespace multi_array_types {
 1113.55 -  typedef boost::detail::multi_array::size_type size_type;
 1113.56 -  typedef std::ptrdiff_t difference_type;
 1113.57 -  typedef boost::detail::multi_array::index index;
 1113.58 -  typedef detail::multi_array::index_range<index,size_type> index_range;
 1113.59 -  typedef detail::multi_array::extent_range<index,size_type> extent_range;
 1113.60 -  typedef detail::multi_array::index_gen<0,0> index_gen;
 1113.61 -  typedef detail::multi_array::extent_gen<0> extent_gen;
 1113.62 -}
 1113.63 -
 1113.64 -
 1113.65 -// boost::extents and boost::indices are now a part of the public
 1113.66 -// interface.  That way users don't necessarily have to create their 
 1113.67 -// own objects.  On the other hand, one may not want the overhead of 
 1113.68 -// object creation in small-memory environments.  Thus, the objects
 1113.69 -// can be left undefined by defining BOOST_MULTI_ARRAY_NO_GENERATORS 
 1113.70 -// before loading multi_array.hpp.
 1113.71 -#if !BOOST_MULTI_ARRAY_NO_GENERATORS
 1113.72 -namespace {
 1113.73 -  multi_array_types::extent_gen extents;
 1113.74 -  multi_array_types::index_gen indices;
 1113.75 -}
 1113.76 -#endif // BOOST_MULTI_ARRAY_NO_GENERATORS
 1113.77 -
 1113.78 -namespace detail {
 1113.79 -namespace multi_array {
 1113.80 -
 1113.81 -template <typename T, std::size_t NumDims>
 1113.82 -class sub_array;
 1113.83 -
 1113.84 -template <typename T, std::size_t NumDims, typename TPtr = const T*>
 1113.85 -class const_sub_array;
 1113.86 -
 1113.87 -template <typename T, typename TPtr, typename NumDims, typename Reference>
 1113.88 -class array_iterator;
 1113.89 -
 1113.90 -template <typename T, std::size_t NumDims, typename TPtr = const T*>
 1113.91 -class const_multi_array_view;
 1113.92 -
 1113.93 -template <typename T, std::size_t NumDims>
 1113.94 -class multi_array_view;
 1113.95 -
 1113.96 -/////////////////////////////////////////////////////////////////////////
 1113.97 -// class interfaces
 1113.98 -/////////////////////////////////////////////////////////////////////////
 1113.99 -
1113.100 -class multi_array_base {
1113.101 -public:
1113.102 -  typedef multi_array_types::size_type size_type;
1113.103 -  typedef multi_array_types::difference_type difference_type;
1113.104 -  typedef multi_array_types::index index;
1113.105 -  typedef multi_array_types::index_range index_range;
1113.106 -  typedef multi_array_types::extent_range extent_range;
1113.107 -  typedef multi_array_types::index_gen index_gen;
1113.108 -  typedef multi_array_types::extent_gen extent_gen;
1113.109 -};
1113.110 -
1113.111 -//
1113.112 -// value_accessor_n
1113.113 -//  contains the routines for accessing elements from
1113.114 -//  N-dimensional views.
1113.115 -//
1113.116 -template<typename T, std::size_t NumDims>
1113.117 -class value_accessor_n : public multi_array_base {
1113.118 -  typedef multi_array_base super_type;
1113.119 -public:
1113.120 -  typedef typename super_type::index index;
1113.121 -
1113.122 -  // 
1113.123 -  // public typedefs used by classes that inherit from this base
1113.124 -  //
1113.125 -  typedef T element;
1113.126 -  typedef boost::multi_array<T,NumDims-1> value_type;
1113.127 -  typedef sub_array<T,NumDims-1> reference;
1113.128 -  typedef const_sub_array<T,NumDims-1> const_reference;
1113.129 -
1113.130 -protected:
1113.131 -  // used by array operator[] and iterators to get reference types.
1113.132 -  template <typename Reference, typename TPtr>
1113.133 -  Reference access(boost::type<Reference>,index idx,TPtr base,
1113.134 -                   const size_type* extents,
1113.135 -                   const index* strides,
1113.136 -                   const index* index_bases) const {
1113.137 -
1113.138 -    BOOST_ASSERT(idx - index_bases[0] >= 0);
1113.139 -    BOOST_ASSERT(size_type(idx - index_bases[0]) < extents[0]);
1113.140 -    // return a sub_array<T,NDims-1> proxy object
1113.141 -    TPtr newbase = base + idx * strides[0];
1113.142 -    return Reference(newbase,extents+1,strides+1,index_bases+1);
1113.143 -
1113.144 -  }
1113.145 -
1113.146 -  value_accessor_n() { }
1113.147 -  ~value_accessor_n() { }
1113.148 -};
1113.149 -
1113.150 -
1113.151 -
1113.152 -//
1113.153 -// value_accessor_one
1113.154 -//  contains the routines for accessing reference elements from
1113.155 -//  1-dimensional views.
1113.156 -//
1113.157 -template<typename T>
1113.158 -class value_accessor_one : public multi_array_base {
1113.159 -  typedef multi_array_base super_type;
1113.160 -public:
1113.161 -  typedef typename super_type::index index;
1113.162 -  //
1113.163 -  // public typedefs for use by classes that inherit it.
1113.164 -  //
1113.165 -  typedef T element;
1113.166 -  typedef T value_type;
1113.167 -  typedef T& reference;
1113.168 -  typedef T const& const_reference;
1113.169 -
1113.170 -protected:
1113.171 -  // used by array operator[] and iterators to get reference types.
1113.172 -  template <typename Reference, typename TPtr>
1113.173 -  Reference access(boost::type<Reference>,index idx,TPtr base,
1113.174 -                   const size_type* extents,
1113.175 -                   const index* strides,
1113.176 -                   const index* index_bases) const {
1113.177 -
1113.178 -    ignore_unused_variable_warning(index_bases);
1113.179 -    ignore_unused_variable_warning(extents);
1113.180 -    BOOST_ASSERT(idx - index_bases[0] >= 0);
1113.181 -    BOOST_ASSERT(size_type(idx - index_bases[0]) < extents[0]);
1113.182 -    return *(base + idx * strides[0]);
1113.183 -  }
1113.184 -
1113.185 -  value_accessor_one() { }
1113.186 -  ~value_accessor_one() { }
1113.187 -};
1113.188 -
1113.189 -
1113.190 -/////////////////////////////////////////////////////////////////////////
1113.191 -// choose value accessor begins
1113.192 -//
1113.193 -
1113.194 -template <typename T, std::size_t NumDims>
1113.195 -struct choose_value_accessor_n {
1113.196 -  typedef value_accessor_n<T,NumDims> type;
1113.197 -};
1113.198 -
1113.199 -template <typename T>
1113.200 -struct choose_value_accessor_one {
1113.201 -  typedef value_accessor_one<T> type;
1113.202 -};
1113.203 -
1113.204 -template <typename T, typename NumDims>
1113.205 -struct value_accessor_generator {
1113.206 -    BOOST_STATIC_CONSTANT(std::size_t, dimensionality = NumDims::value);
1113.207 -    
1113.208 -  typedef typename
1113.209 -  mpl::eval_if_c<(dimensionality == 1),
1113.210 -                  choose_value_accessor_one<T>,
1113.211 -                  choose_value_accessor_n<T,dimensionality>
1113.212 -  >::type type;
1113.213 -};
1113.214 -
1113.215 -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1113.216 -
1113.217 -struct eti_value_accessor
1113.218 -{
1113.219 -  typedef int index;
1113.220 -  typedef int size_type;
1113.221 -  typedef int element;
1113.222 -  typedef int index_range;
1113.223 -  typedef int value_type;
1113.224 -  typedef int reference;
1113.225 -  typedef int const_reference;
1113.226 -};
1113.227 -    
1113.228 -template <>
1113.229 -struct value_accessor_generator<int,int>
1113.230 -{
1113.231 -  typedef eti_value_accessor type;
1113.232 -};
1113.233 -
1113.234 -template <class T, class NumDims>
1113.235 -struct associated_types
1113.236 -  : mpl::aux::msvc_eti_base<
1113.237 -        typename value_accessor_generator<T,NumDims>::type
1113.238 -    >::type
1113.239 -{};
1113.240 -
1113.241 -template <>
1113.242 -struct associated_types<int,int> : eti_value_accessor {};
1113.243 -
1113.244 -#else
1113.245 -
1113.246 -template <class T, class NumDims>
1113.247 -struct associated_types
1113.248 -  : value_accessor_generator<T,NumDims>::type
1113.249 -{};
1113.250 -
1113.251 -#endif
1113.252 -
1113.253 -//
1113.254 -// choose value accessor ends
1113.255 -/////////////////////////////////////////////////////////////////////////
1113.256 -
1113.257 -
1113.258 -
1113.259 -////////////////////////////////////////////////////////////////////////
1113.260 -// multi_array_base
1113.261 -////////////////////////////////////////////////////////////////////////
1113.262 -template <typename T, std::size_t NumDims>
1113.263 -class multi_array_impl_base
1113.264 -  :
1113.265 -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1113.266 -      public mpl::aux::msvc_eti_base<
1113.267 -          typename value_accessor_generator<T,mpl::size_t<NumDims> >::type
1113.268 -       >::type
1113.269 -#else
1113.270 -      public value_accessor_generator<T,mpl::size_t<NumDims> >::type
1113.271 -#endif 
1113.272 -{
1113.273 -  typedef associated_types<T,mpl::size_t<NumDims> > types;
1113.274 -public:
1113.275 -  typedef typename types::index index;
1113.276 -  typedef typename types::size_type size_type;
1113.277 -  typedef typename types::element element;
1113.278 -  typedef typename types::index_range index_range;
1113.279 -  typedef typename types::value_type value_type;
1113.280 -  typedef typename types::reference reference;
1113.281 -  typedef typename types::const_reference const_reference;
1113.282 -
1113.283 -  template <std::size_t NDims>
1113.284 -  struct subarray {
1113.285 -    typedef boost::detail::multi_array::sub_array<T,NDims> type;
1113.286 -  };
1113.287 -
1113.288 -  template <std::size_t NDims>
1113.289 -  struct const_subarray {
1113.290 -    typedef boost::detail::multi_array::const_sub_array<T,NDims> type;
1113.291 -  };
1113.292 -
1113.293 -  template <std::size_t NDims>
1113.294 -  struct array_view {
1113.295 -    typedef boost::detail::multi_array::multi_array_view<T,NDims> type;
1113.296 -  };
1113.297 -
1113.298 -  template <std::size_t NDims>
1113.299 -  struct const_array_view {
1113.300 -  public:
1113.301 -    typedef boost::detail::multi_array::const_multi_array_view<T,NDims> type;
1113.302 -  };
1113.303 -
1113.304 -  //
1113.305 -  // iterator support
1113.306 -  //
1113.307 -  typedef array_iterator<T,T*,mpl::size_t<NumDims>,reference> iterator;
1113.308 -  typedef array_iterator<T,T const*,mpl::size_t<NumDims>,const_reference> const_iterator;
1113.309 -
1113.310 -  typedef ::boost::reverse_iterator<iterator> reverse_iterator;
1113.311 -  typedef ::boost::reverse_iterator<const_iterator> const_reverse_iterator;
1113.312 -
1113.313 -  BOOST_STATIC_CONSTANT(std::size_t, dimensionality = NumDims);
1113.314 -protected:
1113.315 -
1113.316 -  multi_array_impl_base() { }
1113.317 -  ~multi_array_impl_base() { }
1113.318 -
1113.319 -  // Used by operator() in our array classes
1113.320 -  template <typename Reference, typename IndexList, typename TPtr>
1113.321 -  Reference access_element(boost::type<Reference>,
1113.322 -                           const IndexList& indices,
1113.323 -                           TPtr base,
1113.324 -                           const size_type* extents,
1113.325 -                           const index* strides,
1113.326 -                           const index* index_bases) const {
1113.327 -
1113.328 -    ignore_unused_variable_warning(index_bases);
1113.329 -    ignore_unused_variable_warning(extents);
1113.330 -#if !defined(NDEBUG) && !defined(BOOST_DISABLE_ASSERTS)
1113.331 -    for (size_type i = 0; i != NumDims; ++i) {
1113.332 -      BOOST_ASSERT(indices[i] - index_bases[i] >= 0);
1113.333 -      BOOST_ASSERT(size_type(indices[i] - index_bases[i]) < extents[i]);
1113.334 -    }
1113.335 -#endif
1113.336 -
1113.337 -    index offset = 0;
1113.338 -    for (size_type n = 0; n != NumDims; ++n) 
1113.339 -      offset += indices[n] * strides[n];
1113.340 -    
1113.341 -    return base[offset];
1113.342 -  }
1113.343 -
1113.344 -  template <typename StrideList, typename ExtentList>
1113.345 -  void compute_strides(StrideList& stride_list, ExtentList& extent_list,
1113.346 -                       const general_storage_order<NumDims>& storage)
1113.347 -  {
1113.348 -    // invariant: stride = the stride for dimension n
1113.349 -    index stride = 1;
1113.350 -    for (size_type n = 0; n != NumDims; ++n) {
1113.351 -      index stride_sign = +1;
1113.352 -      
1113.353 -      if (!storage.ascending(storage.ordering(n)))
1113.354 -        stride_sign = -1;
1113.355 -      
1113.356 -      // The stride for this dimension is the product of the
1113.357 -      // lengths of the ranks minor to it.
1113.358 -      stride_list[storage.ordering(n)] = stride * stride_sign;
1113.359 -      
1113.360 -      stride *= extent_list[storage.ordering(n)];
1113.361 -    } 
1113.362 -  }
1113.363 -
1113.364 -  // This calculates the offset to the array base pointer due to:
1113.365 -  // 1. dimensions stored in descending order
1113.366 -  // 2. non-zero dimension index bases
1113.367 -  template <typename StrideList, typename ExtentList, typename BaseList>
1113.368 -  index
1113.369 -  calculate_origin_offset(const StrideList& stride_list,
1113.370 -                          const ExtentList& extent_list,
1113.371 -                          const general_storage_order<NumDims>& storage,
1113.372 -                          const BaseList& index_base_list)
1113.373 -  {
1113.374 -    return
1113.375 -      calculate_descending_dimension_offset(stride_list,extent_list,
1113.376 -                                            storage) +
1113.377 -      calculate_indexing_offset(stride_list,index_base_list);
1113.378 -  }
1113.379 -
1113.380 -  // This calculates the offset added to the base pointer that are
1113.381 -  // caused by descending dimensions
1113.382 -  template <typename StrideList, typename ExtentList>
1113.383 -  index
1113.384 -  calculate_descending_dimension_offset(const StrideList& stride_list,
1113.385 -                                const ExtentList& extent_list,
1113.386 -                                const general_storage_order<NumDims>& storage)
1113.387 -  {
1113.388 -    index offset = 0;
1113.389 -    if (!storage.all_dims_ascending()) 
1113.390 -      for (size_type n = 0; n != NumDims; ++n)
1113.391 -        if (!storage.ascending(n))
1113.392 -          offset -= (extent_list[n] - 1) * stride_list[n];
1113.393 -
1113.394 -    return offset;
1113.395 -  }
1113.396 -
1113.397 -  // This is used to reindex array_views, which are no longer
1113.398 -  // concerned about storage order (specifically, whether dimensions
1113.399 -  // are ascending or descending) since the viewed array handled it.
1113.400 -
1113.401 -  template <typename StrideList, typename BaseList>
1113.402 -  index
1113.403 -  calculate_indexing_offset(const StrideList& stride_list,
1113.404 -                          const BaseList& index_base_list)
1113.405 -  {
1113.406 -    index offset = 0;
1113.407 -    for (size_type n = 0; n != NumDims; ++n)
1113.408 -        offset -= stride_list[n] * index_base_list[n];
1113.409 -    return offset;
1113.410 -  }
1113.411 -
1113.412 -  // Slicing using an index_gen.
1113.413 -  // Note that populating an index_gen creates a type that encodes
1113.414 -  // both the number of dimensions in the current Array (NumDims), and 
1113.415 -  // the Number of dimensions for the resulting view.  This allows the 
1113.416 -  // compiler to fail if the dimensions aren't completely accounted
1113.417 -  // for.  For reasons unbeknownst to me, a BOOST_STATIC_ASSERT
1113.418 -  // within the member function template does not work. I should add a 
1113.419 -  // note to the documentation specifying that you get a damn ugly
1113.420 -  // error message if you screw up in your slicing code.
1113.421 -  template <typename ArrayRef, int NDims, typename TPtr>
1113.422 -  ArrayRef
1113.423 -  generate_array_view(boost::type<ArrayRef>,
1113.424 -                      const boost::detail::multi_array::
1113.425 -                      index_gen<NumDims,NDims>& indices,
1113.426 -                      const size_type* extents,
1113.427 -                      const index* strides,
1113.428 -                      const index* index_bases,
1113.429 -                      TPtr base) const {
1113.430 -
1113.431 -    boost::array<index,NDims> new_strides;
1113.432 -    boost::array<index,NDims> new_extents;
1113.433 -
1113.434 -    index offset = 0;
1113.435 -    size_type dim = 0;
1113.436 -    for (size_type n = 0; n != NumDims; ++n) {
1113.437 -      const index default_start = index_bases[n];
1113.438 -      const index default_finish = default_start+extents[n];
1113.439 -      const index_range& current_range = indices.ranges_[n];
1113.440 -      index start = current_range.get_start(default_start);
1113.441 -      index finish = current_range.get_finish(default_finish);
1113.442 -      index index_factor = current_range.stride();
1113.443 -      index len = (finish - start + (index_factor - 1)) / index_factor;
1113.444 -
1113.445 -      BOOST_ASSERT(index_bases[n] <= start &&
1113.446 -                   start <= index_bases[n]+index(extents[n]));
1113.447 -      BOOST_ASSERT(index_bases[n] <= finish &&
1113.448 -                   finish <= index_bases[n]+index(extents[n]));
1113.449 -      BOOST_ASSERT(index_factor > 0);
1113.450 -
1113.451 -      // the array data pointer is modified to account for non-zero
1113.452 -      // bases during slicing (see [Garcia] for the math involved)
1113.453 -      offset += start * strides[n];
1113.454 -
1113.455 -      if (!current_range.is_degenerate()) {
1113.456 -
1113.457 -        // The index_factor for each dimension is included into the
1113.458 -        // strides for the array_view (see [Garcia] for the math involved).
1113.459 -        new_strides[dim] = index_factor * strides[n];
1113.460 -        
1113.461 -        // calculate new extents
1113.462 -        new_extents[dim] = len;
1113.463 -        ++dim;
1113.464 -      }
1113.465 -    }
1113.466 -    BOOST_ASSERT(dim == NDims);
1113.467 -
1113.468 -    return
1113.469 -      ArrayRef(base+offset,
1113.470 -               new_extents,
1113.471 -               new_strides);
1113.472 -  }
1113.473 -                     
1113.474 -
1113.475 -};
1113.476 -
1113.477 -} // namespace multi_array
1113.478 -} // namespace detail
1113.479 -
1113.480 -} // namespace boost
1113.481 -
1113.482 -#endif // BASE_RG071801_HPP
  1114.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1114.2 +++ b/epoc32/include/stdapis/boost/multi_index/detail/converter.hpp	Wed Mar 31 12:27:01 2010 +0100
  1114.3 @@ -0,0 +1,602 @@
  1114.4 +//  © Copyright Fernando Luis Cacciola Carballal 2000-2004
  1114.5 +//  Use, modification, and distribution is subject to the Boost Software
  1114.6 +//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1114.7 +//  http://www.boost.org/LICENSE_1_0.txt)
  1114.8 +
  1114.9 +//  See library home page at http://www.boost.org/libs/numeric/conversion
 1114.10 +//
 1114.11 +// Contact the author at: fernando_cacciola@hotmail.com
 1114.12 +//
 1114.13 +#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
 1114.14 +#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
 1114.15 +
 1114.16 +#include <functional>
 1114.17 +
 1114.18 +#include "boost/numeric/conversion/detail/meta.hpp"
 1114.19 +#include "boost/numeric/conversion/detail/conversion_traits.hpp"
 1114.20 +#include "boost/numeric/conversion/bounds.hpp"
 1114.21 +
 1114.22 +#include "boost/type_traits/is_same.hpp"
 1114.23 +
 1114.24 +#include "boost/mpl/integral_c.hpp"
 1114.25 +
 1114.26 +namespace boost { namespace numeric { namespace convdetail
 1114.27 +{
 1114.28 +  // Integral Constants representing rounding modes
 1114.29 +  typedef mpl::integral_c<std::float_round_style, std::round_toward_zero>         round2zero_c ;
 1114.30 +  typedef mpl::integral_c<std::float_round_style, std::round_to_nearest>          round2nearest_c ;
 1114.31 +  typedef mpl::integral_c<std::float_round_style, std::round_toward_infinity>     round2inf_c ;
 1114.32 +  typedef mpl::integral_c<std::float_round_style, std::round_toward_neg_infinity> round2neg_inf_c ;
 1114.33 +
 1114.34 +  // Metafunction:
 1114.35 +  //
 1114.36 +  //   for_round_style<RoundStyle,RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf>::type
 1114.37 +  //
 1114.38 +  // {RoundStyle} Integral Constant specifying a round style as declared above.
 1114.39 +  // {RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf} arbitrary types.
 1114.40 +  //
 1114.41 +  // Selects one of the 4 types according to the value of RoundStyle.
 1114.42 +  //
 1114.43 +  template<class RoundStyle,class RoundToZero,class RoundToNearest,class RoundToInf,class RoundToNegInf>
 1114.44 +  struct for_round_style
 1114.45 +  {
 1114.46 +    typedef ct_switch4<RoundStyle
 1114.47 +                       , round2zero_c, round2nearest_c, round2inf_c // round2neg_inf_c
 1114.48 +                       , RoundToZero , RoundToNearest , RoundToInf , RoundToNegInf
 1114.49 +                      > selector ;
 1114.50 +
 1114.51 +    typedef typename selector::type type ;
 1114.52 +  } ;
 1114.53 +
 1114.54 +
 1114.55 +
 1114.56 +
 1114.57 +
 1114.58 +
 1114.59 +
 1114.60 +
 1114.61 +
 1114.62 +
 1114.63 +
 1114.64 +
 1114.65 +
 1114.66 +
 1114.67 +
 1114.68 +
 1114.69 +
 1114.70 +
 1114.71 +//--------------------------------------------------------------------------
 1114.72 +//                             Range Checking Logic.
 1114.73 +//
 1114.74 +// The range checking logic is built up by combining 1 or 2 predicates.
 1114.75 +// Each predicate is encapsulated in a template class and exposes
 1114.76 +// the static member function 'apply'.
 1114.77 +//
 1114.78 +//--------------------------------------------------------------------------
 1114.79 +
 1114.80 +
 1114.81 +  // Because a particular logic can combine either 1 or two predicates, the following
 1114.82 +  // tags are used to allow the predicate applier to receive 2 preds, but optimize away
 1114.83 +  // one of them if it is 'non-applicable'
 1114.84 +  struct non_applicable { typedef mpl::false_ do_apply ; } ;
 1114.85 +  struct applicable     { typedef mpl::true_  do_apply ; } ;
 1114.86 +
 1114.87 +
 1114.88 +  //--------------------------------------------------------------------------
 1114.89 +  //
 1114.90 +  //                      Range Checking Logic implementations.
 1114.91 +  //
 1114.92 +  // The following classes, collectivelly named 'Predicates', are instantiated within
 1114.93 +  // the corresponding range checkers.
 1114.94 +  // Their static member function 'apply' is called to perform the actual range checking logic.
 1114.95 +  //--------------------------------------------------------------------------
 1114.96 +
 1114.97 +    // s < Lowest(T) ? cNegOverflow : cInRange
 1114.98 +    //
 1114.99 +    template<class Traits>
1114.100 +    struct LT_LoT : applicable
1114.101 +    {
1114.102 +      typedef typename Traits::target_type T ;
1114.103 +      typedef typename Traits::source_type S ;
1114.104 +      typedef typename Traits::argument_type argument_type ;
1114.105 +
1114.106 +      static range_check_result apply ( argument_type s )
1114.107 +      {
1114.108 +        return s < static_cast<S>(bounds<T>::lowest()) ? cNegOverflow : cInRange ;
1114.109 +      }
1114.110 +    } ;
1114.111 +
1114.112 +    // s < 0 ? cNegOverflow : cInRange
1114.113 +    //
1114.114 +    template<class Traits>
1114.115 +    struct LT_Zero : applicable
1114.116 +    {
1114.117 +      typedef typename Traits::source_type S ;
1114.118 +      typedef typename Traits::argument_type argument_type ;
1114.119 +
1114.120 +      static range_check_result apply ( argument_type s )
1114.121 +      {
1114.122 +        return s < static_cast<S>(0) ? cNegOverflow : cInRange ;
1114.123 +      }
1114.124 +    } ;
1114.125 +
1114.126 +    // s <= Lowest(T)-1 ? cNegOverflow : cInRange
1114.127 +    //
1114.128 +    template<class Traits>
1114.129 +    struct LE_PrevLoT : applicable
1114.130 +    {
1114.131 +      typedef typename Traits::target_type T ;
1114.132 +      typedef typename Traits::source_type S ;
1114.133 +      typedef typename Traits::argument_type argument_type ;
1114.134 +
1114.135 +      static range_check_result apply ( argument_type s )
1114.136 +      {
1114.137 +        return s <= static_cast<S>(bounds<T>::lowest()) - static_cast<S>(1.0)
1114.138 +                 ? cNegOverflow : cInRange ;
1114.139 +      }
1114.140 +    } ;
1114.141 +
1114.142 +    // s < Lowest(T)-0.5 ? cNegOverflow : cInRange
1114.143 +    //
1114.144 +    template<class Traits>
1114.145 +    struct LT_HalfPrevLoT : applicable
1114.146 +    {
1114.147 +      typedef typename Traits::target_type T ;
1114.148 +      typedef typename Traits::source_type S ;
1114.149 +      typedef typename Traits::argument_type argument_type ;
1114.150 +
1114.151 +      static range_check_result apply ( argument_type s )
1114.152 +      {
1114.153 +        return s < static_cast<S>(bounds<T>::lowest()) - static_cast<S>(0.5)
1114.154 +                 ? cNegOverflow : cInRange ;
1114.155 +      }
1114.156 +    } ;
1114.157 +
1114.158 +    // s > Highest(T) ? cPosOverflow : cInRange
1114.159 +    //
1114.160 +    template<class Traits>
1114.161 +    struct GT_HiT : applicable
1114.162 +    {
1114.163 +      typedef typename Traits::target_type T ;
1114.164 +      typedef typename Traits::source_type S ;
1114.165 +      typedef typename Traits::argument_type argument_type ;
1114.166 +
1114.167 +      static range_check_result apply ( argument_type s )
1114.168 +      {
1114.169 +        return s > static_cast<S>(bounds<T>::highest())
1114.170 +                 ? cPosOverflow : cInRange ;
1114.171 +      }
1114.172 +    } ;
1114.173 +
1114.174 +    // s >= Lowest(T) + 1 ? cPosOverflow : cInRange
1114.175 +    //
1114.176 +    template<class Traits>
1114.177 +    struct GE_SuccHiT : applicable
1114.178 +    {
1114.179 +      typedef typename Traits::target_type T ;
1114.180 +      typedef typename Traits::source_type S ;
1114.181 +      typedef typename Traits::argument_type argument_type ;
1114.182 +
1114.183 +      static range_check_result apply ( argument_type s )
1114.184 +      {
1114.185 +        return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(1.0)
1114.186 +                 ? cPosOverflow : cInRange ;
1114.187 +      }
1114.188 +    } ;
1114.189 +
1114.190 +    // s >= Lowest(T) + 0.5 ? cPosgOverflow : cInRange
1114.191 +    //
1114.192 +    template<class Traits>
1114.193 +    struct GT_HalfSuccHiT : applicable
1114.194 +    {
1114.195 +      typedef typename Traits::target_type T ;
1114.196 +      typedef typename Traits::source_type S ;
1114.197 +      typedef typename Traits::argument_type argument_type ;
1114.198 +
1114.199 +      static range_check_result apply ( argument_type s )
1114.200 +      {
1114.201 +        return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(0.5)
1114.202 +                 ? cPosOverflow : cInRange ;
1114.203 +      }
1114.204 +    } ;
1114.205 +
1114.206 +
1114.207 +  //--------------------------------------------------------------------------
1114.208 +  //
1114.209 +  // Predicate Combiner.
1114.210 +  //
1114.211 +  // This helper classes are used to possibly combine the range checking logic
1114.212 +  // individually performed by the predicates
1114.213 +  //
1114.214 +  //--------------------------------------------------------------------------
1114.215 +
1114.216 +
1114.217 +    // Applies both predicates: first 'PredA', and if it equals 'cInRange', 'PredB'
1114.218 +    template<class PredA, class PredB>
1114.219 +    struct applyBoth
1114.220 +    {
1114.221 +      typedef typename PredA::argument_type argument_type ;
1114.222 +
1114.223 +      static range_check_result apply ( argument_type s )
1114.224 +      {
1114.225 +        range_check_result r = PredA::apply(s) ;
1114.226 +        if ( r == cInRange )
1114.227 +          r = PredB::apply(s);
1114.228 +        return r ;
1114.229 +      }
1114.230 +    } ;
1114.231 +
1114.232 +    template<class PredA, class PredB>
1114.233 +    struct combine
1114.234 +    {
1114.235 +      typedef applyBoth<PredA,PredB> Both ;
1114.236 +      typedef void                   NNone ; // 'None' is defined as a macro in (/usr/X11R6/include/X11/X.h)
1114.237 +
1114.238 +      typedef typename PredA::do_apply do_applyA ;
1114.239 +      typedef typename PredB::do_apply do_applyB ;
1114.240 +
1114.241 +      typedef typename for_both<do_applyA, do_applyB, Both, PredA, PredB, NNone>::type type ;
1114.242 +    } ;
1114.243 +
1114.244 +
1114.245 +
1114.246 +
1114.247 +
1114.248 +
1114.249 +
1114.250 +
1114.251 +
1114.252 +
1114.253 +
1114.254 +
1114.255 +//--------------------------------------------------------------------------
1114.256 +//                             Range Checker classes.
1114.257 +//
1114.258 +// The following classes are VISIBLE base classes of the user-level converter<> class.
1114.259 +// They supply the optimized 'out_of_range()' and 'validate_range()' static member functions
1114.260 +// visible in the user interface.
1114.261 +//
1114.262 +//--------------------------------------------------------------------------
1114.263 +
1114.264 +  // Dummy range checker.
1114.265 +  template<class Traits>
1114.266 +  struct dummy_range_checker
1114.267 +  {
1114.268 +    typedef typename Traits::argument_type argument_type ;
1114.269 +
1114.270 +    static range_check_result out_of_range ( argument_type ) { return cInRange ; }
1114.271 +    static void validate_range ( argument_type ) {}
1114.272 +  } ;
1114.273 +
1114.274 +  // Generic range checker.
1114.275 +  //
1114.276 +  // All the range checking logic for all possible combinations of source and target
1114.277 +  // can be arranged in terms of one or two predicates, which test overflow on both neg/pos 'sides'
1114.278 +  // of the ranges.
1114.279 +  //
1114.280 +  // These predicates are given here as IsNegOverflow and IsPosOverflow.
1114.281 +  //
1114.282 +  template<class Traits, class IsNegOverflow, class IsPosOverflow, class OverflowHandler>
1114.283 +  struct generic_range_checker
1114.284 +  {
1114.285 +    typedef OverflowHandler overflow_handler ;
1114.286 +
1114.287 +    typedef typename Traits::argument_type argument_type ;
1114.288 +
1114.289 +    static range_check_result out_of_range ( argument_type s )
1114.290 +    {
1114.291 +      typedef typename combine<IsNegOverflow,IsPosOverflow>::type Predicate ;
1114.292 +
1114.293 +      return Predicate::apply(s);
1114.294 +    }
1114.295 +
1114.296 +    static void validate_range ( argument_type s )
1114.297 +      { OverflowHandler()( out_of_range(s) ) ; }
1114.298 +  } ;
1114.299 +
1114.300 +
1114.301 +
1114.302 +//--------------------------------------------------------------------------
1114.303 +//
1114.304 +// Selectors for the optimized Range Checker class.
1114.305 +//
1114.306 +//--------------------------------------------------------------------------
1114.307 +
1114.308 +  template<class Traits,class OverflowHandler>
1114.309 +  struct GetRC_Sig2Sig_or_Unsig2Unsig
1114.310 +  {
1114.311 +    typedef dummy_range_checker<Traits> Dummy ;
1114.312 +
1114.313 +    typedef LT_LoT<Traits> Pred1 ;
1114.314 +    typedef GT_HiT<Traits> Pred2 ;
1114.315 +
1114.316 +    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
1114.317 +
1114.318 +    typedef typename Traits::subranged subranged ;
1114.319 +
1114.320 +    typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
1114.321 +  } ;
1114.322 +
1114.323 +  template<class Traits, class OverflowHandler>
1114.324 +  struct GetRC_Sig2Unsig
1114.325 +  {
1114.326 +    typedef LT_Zero<Traits> Pred1 ;
1114.327 +    typedef GT_HiT <Traits> Pred2 ;
1114.328 +
1114.329 +    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ChoiceA ;
1114.330 +
1114.331 +    typedef generic_range_checker<Traits,Pred1,non_applicable,OverflowHandler> ChoiceB ;
1114.332 +
1114.333 +    typedef typename Traits::target_type T ;
1114.334 +    typedef typename Traits::source_type S ;
1114.335 +
1114.336 +    typedef typename subranged_Unsig2Sig<S,T>::type oposite_subranged ;
1114.337 +
1114.338 +    typedef typename mpl::not_<oposite_subranged>::type positively_subranged ;
1114.339 +
1114.340 +    typedef typename mpl::if_<positively_subranged,ChoiceA,ChoiceB>::type type ;
1114.341 +  } ;
1114.342 +
1114.343 +  template<class Traits, class OverflowHandler>
1114.344 +  struct GetRC_Unsig2Sig
1114.345 +  {
1114.346 +    typedef GT_HiT<Traits> Pred1 ;
1114.347 +
1114.348 +    typedef generic_range_checker<Traits,non_applicable,Pred1,OverflowHandler> type ;
1114.349 +  } ;
1114.350 +
1114.351 +  template<class Traits,class OverflowHandler>
1114.352 +  struct GetRC_Int2Int
1114.353 +  {
1114.354 +    typedef GetRC_Sig2Sig_or_Unsig2Unsig<Traits,OverflowHandler> Sig2SigQ     ;
1114.355 +    typedef GetRC_Sig2Unsig             <Traits,OverflowHandler> Sig2UnsigQ   ;
1114.356 +    typedef GetRC_Unsig2Sig             <Traits,OverflowHandler> Unsig2SigQ   ;
1114.357 +    typedef Sig2SigQ                                             Unsig2UnsigQ ;
1114.358 +
1114.359 +    typedef typename Traits::sign_mixture sign_mixture ;
1114.360 +
1114.361 +    typedef typename
1114.362 +      for_sign_mixture<sign_mixture,Sig2SigQ,Sig2UnsigQ,Unsig2SigQ,Unsig2UnsigQ>::type
1114.363 +        selector ;
1114.364 +
1114.365 +    typedef typename selector::type type ;
1114.366 +  } ;
1114.367 +
1114.368 +  template<class Traits>
1114.369 +  struct GetRC_Int2Float
1114.370 +  {
1114.371 +    typedef dummy_range_checker<Traits> type ;
1114.372 +  } ;
1114.373 +
1114.374 +  template<class Traits, class OverflowHandler, class Float2IntRounder>
1114.375 +  struct GetRC_Float2Int
1114.376 +  {
1114.377 +    typedef LE_PrevLoT    <Traits> Pred1 ;
1114.378 +    typedef GE_SuccHiT    <Traits> Pred2 ;
1114.379 +    typedef LT_HalfPrevLoT<Traits> Pred3 ;
1114.380 +    typedef GT_HalfSuccHiT<Traits> Pred4 ;
1114.381 +    typedef GT_HiT        <Traits> Pred5 ;
1114.382 +    typedef LT_LoT        <Traits> Pred6 ;
1114.383 +
1114.384 +    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ToZero    ;
1114.385 +    typedef generic_range_checker<Traits,Pred3,Pred4,OverflowHandler> ToNearest ;
1114.386 +    typedef generic_range_checker<Traits,Pred1,Pred5,OverflowHandler> ToInf     ;
1114.387 +    typedef generic_range_checker<Traits,Pred6,Pred2,OverflowHandler> ToNegInf  ;
1114.388 +
1114.389 +    typedef typename Float2IntRounder::round_style round_style ;
1114.390 +
1114.391 +    typedef typename for_round_style<round_style,ToZero,ToNearest,ToInf,ToNegInf>::type type ;
1114.392 +  } ;
1114.393 +
1114.394 +  template<class Traits, class OverflowHandler>
1114.395 +  struct GetRC_Float2Float
1114.396 +  {
1114.397 +    typedef dummy_range_checker<Traits> Dummy ;
1114.398 +
1114.399 +    typedef LT_LoT<Traits> Pred1 ;
1114.400 +    typedef GT_HiT<Traits> Pred2 ;
1114.401 +
1114.402 +    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
1114.403 +
1114.404 +    typedef typename Traits::subranged subranged ;
1114.405 +
1114.406 +    typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
1114.407 +  } ;
1114.408 +
1114.409 +  template<class Traits, class OverflowHandler, class Float2IntRounder>
1114.410 +  struct GetRC_BuiltIn2BuiltIn
1114.411 +  {
1114.412 +    typedef GetRC_Int2Int<Traits,OverflowHandler>                    Int2IntQ ;
1114.413 +    typedef GetRC_Int2Float<Traits>                                  Int2FloatQ ;
1114.414 +    typedef GetRC_Float2Int<Traits,OverflowHandler,Float2IntRounder> Float2IntQ ;
1114.415 +    typedef GetRC_Float2Float<Traits,OverflowHandler>                Float2FloatQ ;
1114.416 +
1114.417 +    typedef typename Traits::int_float_mixture int_float_mixture ;
1114.418 +
1114.419 +    typedef typename for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ>::type selector ;
1114.420 +
1114.421 +    typedef typename selector::type type ;
1114.422 +  } ;
1114.423 +
1114.424 +  template<class Traits, class OverflowHandler, class Float2IntRounder>
1114.425 +  struct GetRC
1114.426 +  {
1114.427 +    typedef GetRC_BuiltIn2BuiltIn<Traits,OverflowHandler,Float2IntRounder> BuiltIn2BuiltInQ ;
1114.428 +
1114.429 +    typedef dummy_range_checker<Traits> Dummy ;
1114.430 +
1114.431 +    typedef mpl::identity<Dummy> DummyQ ;
1114.432 +
1114.433 +    typedef typename Traits::udt_builtin_mixture udt_builtin_mixture ;
1114.434 +
1114.435 +    typedef typename for_udt_builtin_mixture<udt_builtin_mixture,BuiltIn2BuiltInQ,DummyQ,DummyQ,DummyQ>::type selector ;
1114.436 +
1114.437 +    typedef typename selector::type type ;
1114.438 +  } ;
1114.439 +
1114.440 +
1114.441 +
1114.442 +
1114.443 +//--------------------------------------------------------------------------
1114.444 +//                             Converter classes.
1114.445 +//
1114.446 +// The following classes are VISIBLE base classes of the user-level converter<> class.
1114.447 +// They supply the optimized 'nearbyint()' and 'convert()' static member functions
1114.448 +// visible in the user interface.
1114.449 +//
1114.450 +//--------------------------------------------------------------------------
1114.451 +
1114.452 +  //
1114.453 +  // Trivial Converter : used when (cv-unqualified) T == (cv-unqualified)  S
1114.454 +  //
1114.455 +  template<class Traits>
1114.456 +  struct trivial_converter_impl : public std::unary_function<  BOOST_DEDUCED_TYPENAME Traits::argument_type
1114.457 +                                                              ,BOOST_DEDUCED_TYPENAME Traits::result_type
1114.458 +                                                            >
1114.459 +                                 ,public dummy_range_checker<Traits>
1114.460 +  {
1114.461 +    typedef Traits traits ;
1114.462 +
1114.463 +    typedef typename Traits::source_type   source_type   ;
1114.464 +    typedef typename Traits::argument_type argument_type ;
1114.465 +    typedef typename Traits::result_type   result_type   ;
1114.466 +
1114.467 +    static result_type low_level_convert ( argument_type s ) { return s ; }
1114.468 +    static source_type nearbyint         ( argument_type s ) { return s ; }
1114.469 +    static result_type convert           ( argument_type s ) { return s ; }
1114.470 +  } ;
1114.471 +
1114.472 +
1114.473 +  //
1114.474 +  // Rounding Converter : used for float to integral conversions.
1114.475 +  //
1114.476 +  template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
1114.477 +  struct rounding_converter : public std::unary_function<  BOOST_DEDUCED_TYPENAME Traits::argument_type
1114.478 +                                                          ,BOOST_DEDUCED_TYPENAME Traits::result_type
1114.479 +                                                        >
1114.480 +                             ,public RangeChecker
1114.481 +                             ,public Float2IntRounder
1114.482 +                             ,public RawConverter
1114.483 +  {
1114.484 +    typedef RangeChecker     RangeCheckerBase ;
1114.485 +    typedef Float2IntRounder Float2IntRounderBase ;
1114.486 +    typedef RawConverter     RawConverterBase ;
1114.487 +
1114.488 +    typedef Traits traits ;
1114.489 +
1114.490 +    typedef typename Traits::source_type   source_type   ;
1114.491 +    typedef typename Traits::argument_type argument_type ;
1114.492 +    typedef typename Traits::result_type   result_type   ;
1114.493 +
1114.494 +    static result_type convert ( argument_type s )
1114.495 +    {
1114.496 +      RangeCheckerBase::validate_range(s);
1114.497 +      source_type s1 = Float2IntRounderBase::nearbyint(s);
1114.498 +      return RawConverterBase::low_level_convert(s1);
1114.499 +    }
1114.500 +  } ;
1114.501 +
1114.502 +
1114.503 +  //
1114.504 +  // Non-Rounding Converter : used for all other conversions.
1114.505 +  //
1114.506 +  template<class Traits,class RangeChecker,class RawConverter>
1114.507 +  struct non_rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
1114.508 +                                                             ,BOOST_DEDUCED_TYPENAME Traits::result_type
1114.509 +                                                           >
1114.510 +                                 ,public RangeChecker
1114.511 +                                 ,public RawConverter
1114.512 +  {
1114.513 +    typedef RangeChecker RangeCheckerBase ;
1114.514 +    typedef RawConverter RawConverterBase ;
1114.515 +
1114.516 +    typedef Traits traits ;
1114.517 +
1114.518 +    typedef typename Traits::source_type   source_type   ;
1114.519 +    typedef typename Traits::argument_type argument_type ;
1114.520 +    typedef typename Traits::result_type   result_type   ;
1114.521 +
1114.522 +    static source_type nearbyint ( argument_type s ) { return s ; }
1114.523 +
1114.524 +    static result_type convert ( argument_type s )
1114.525 +    {
1114.526 +      RangeCheckerBase::validate_range(s);
1114.527 +      return RawConverterBase::low_level_convert(s);
1114.528 +    }
1114.529 +  } ;
1114.530 +
1114.531 +
1114.532 +
1114.533 +
1114.534 +//--------------------------------------------------------------------------
1114.535 +//
1114.536 +// Selectors for the optimized Converter class.
1114.537 +//
1114.538 +//--------------------------------------------------------------------------
1114.539 +
1114.540 +  template<class Traits,class OverflowHandler,class Float2IntRounder,class RawConverter, class UserRangeChecker>
1114.541 +  struct get_non_trivial_converter
1114.542 +  {
1114.543 +    typedef GetRC<Traits,OverflowHandler,Float2IntRounder> InternalRangeCheckerQ ;
1114.544 +
1114.545 +    typedef is_same<UserRangeChecker,UseInternalRangeChecker> use_internal_RC ;
1114.546 +
1114.547 +    typedef mpl::identity<UserRangeChecker> UserRangeCheckerQ ;
1114.548 +
1114.549 +    typedef typename
1114.550 +      mpl::eval_if<use_internal_RC,InternalRangeCheckerQ,UserRangeCheckerQ>::type
1114.551 +        RangeChecker ;
1114.552 +
1114.553 +    typedef non_rounding_converter<Traits,RangeChecker,RawConverter>              NonRounding ;
1114.554 +    typedef rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder> Rounding ;
1114.555 +
1114.556 +    typedef mpl::identity<NonRounding> NonRoundingQ ;
1114.557 +    typedef mpl::identity<Rounding>    RoundingQ    ;
1114.558 +
1114.559 +    typedef typename Traits::int_float_mixture int_float_mixture ;
1114.560 +
1114.561 +    typedef typename
1114.562 +      for_int_float_mixture<int_float_mixture, NonRoundingQ, NonRoundingQ, RoundingQ, NonRoundingQ>::type
1114.563 +        selector ;
1114.564 +
1114.565 +    typedef typename selector::type type ;
1114.566 +  } ;
1114.567 +
1114.568 +  template< class Traits
1114.569 +           ,class OverflowHandler
1114.570 +           ,class Float2IntRounder
1114.571 +           ,class RawConverter
1114.572 +           ,class UserRangeChecker
1114.573 +          >
1114.574 +  struct get_converter_impl
1114.575 +  {
1114.576 +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x0561 ) )
1114.577 +    // bcc55 prefers sometimes template parameters to be explicit local types.
1114.578 +    // (notice that is is illegal to reuse the names like this)
1114.579 +    typedef Traits           Traits ;
1114.580 +    typedef OverflowHandler  OverflowHandler ;
1114.581 +    typedef Float2IntRounder Float2IntRounder ;
1114.582 +    typedef RawConverter     RawConverter ;
1114.583 +    typedef UserRangeChecker UserRangeChecker ;
1114.584 +#endif
1114.585 +
1114.586 +    typedef trivial_converter_impl<Traits> Trivial ;
1114.587 +    typedef mpl::identity        <Trivial> TrivialQ ;
1114.588 +
1114.589 +    typedef get_non_trivial_converter< Traits
1114.590 +                                      ,OverflowHandler
1114.591 +                                      ,Float2IntRounder
1114.592 +                                      ,RawConverter
1114.593 +                                      ,UserRangeChecker
1114.594 +                                     > NonTrivialQ ;
1114.595 +
1114.596 +    typedef typename Traits::trivial trivial ;
1114.597 +
1114.598 +    typedef typename mpl::eval_if<trivial,TrivialQ,NonTrivialQ>::type type ;
1114.599 +  } ;
1114.600 +
1114.601 +} } } // namespace boost::numeric::convdetail
1114.602 +
1114.603 +#endif
1114.604 +
1114.605 +
  1115.1 --- a/epoc32/include/stdapis/boost/multi_index/detail/has_tag.hpp	Tue Mar 16 16:12:26 2010 +0000
  1115.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1115.3 @@ -1,42 +0,0 @@
  1115.4 -/* Copyright 2003-2005 Joaquín M López Muñoz.
  1115.5 - * Distributed under the Boost Software License, Version 1.0.
  1115.6 - * (See accompanying file LICENSE_1_0.txt or copy at
  1115.7 - * http://www.boost.org/LICENSE_1_0.txt)
  1115.8 - *
  1115.9 - * See http://www.boost.org/libs/multi_index for library home page.
 1115.10 - */
 1115.11 -
 1115.12 -#ifndef BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP
 1115.13 -#define BOOST_MULTI_INDEX_DETAIL_HAS_TAG_HPP
 1115.14 -
 1115.15 -#if defined(_MSC_VER)&&(_MSC_VER>=1200)
 1115.16 -#pragma once
 1115.17 -#endif
 1115.18 -
 1115.19 -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
 1115.20 -#include <boost/mpl/contains.hpp>
 1115.21 -
 1115.22 -namespace boost{
 1115.23 -
 1115.24 -namespace multi_index{
 1115.25 -
 1115.26 -namespace detail{
 1115.27 -
 1115.28 -/* determines whether an index type has a given tag in its tag list */
 1115.29 -
 1115.30 -template<typename Tag>
 1115.31 -struct has_tag
 1115.32 -{
 1115.33 -  template<typename Index>
 1115.34 -  struct apply:mpl::contains<BOOST_DEDUCED_TYPENAME Index::tag_list,Tag>
 1115.35 -  {
 1115.36 -  }; 
 1115.37 -};
 1115.38 -
 1115.39 -} /* namespace multi_index::detail */
 1115.40 -
 1115.41 -} /* namespace multi_index */
 1115.42 -
 1115.43 -} /* namespace boost */
 1115.44 -
 1115.45 -#endif
  1116.1 --- a/epoc32/include/stdapis/boost/multi_index/tag.hpp	Tue Mar 16 16:12:26 2010 +0000
  1116.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1116.3 @@ -1,92 +0,0 @@
  1116.4 -/* Copyright 2003-2005 Joaquín M López Muñoz.
  1116.5 - * Distributed under the Boost Software License, Version 1.0.
  1116.6 - * (See accompanying file LICENSE_1_0.txt or copy at
  1116.7 - * http://www.boost.org/LICENSE_1_0.txt)
  1116.8 - *
  1116.9 - * See http://www.boost.org/libs/multi_index for library home page.
 1116.10 - */
 1116.11 -
 1116.12 -#ifndef BOOST_MULTI_INDEX_TAG_HPP
 1116.13 -#define BOOST_MULTI_INDEX_TAG_HPP
 1116.14 -
 1116.15 -#if defined(_MSC_VER)&&(_MSC_VER>=1200)
 1116.16 -#pragma once
 1116.17 -#endif
 1116.18 -
 1116.19 -#include <boost/config.hpp> /* keep it first to prevent nasty warns in MSVC */
 1116.20 -#include <boost/multi_index/detail/no_duplicate_tags.hpp>
 1116.21 -#include <boost/mpl/identity.hpp>
 1116.22 -#include <boost/mpl/transform.hpp>
 1116.23 -#include <boost/mpl/vector.hpp>
 1116.24 -#include <boost/preprocessor/facilities/intercept.hpp> 
 1116.25 -#include <boost/preprocessor/repetition/enum_binary_params.hpp> 
 1116.26 -#include <boost/preprocessor/repetition/enum_params.hpp> 
 1116.27 -#include <boost/static_assert.hpp>
 1116.28 -#include <boost/type_traits/is_base_and_derived.hpp>
 1116.29 -
 1116.30 -/* A wrapper of mpl::vector used to hide MPL from the user.
 1116.31 - * tag contains types used as tag names for indices in get() functions.
 1116.32 - */
 1116.33 -
 1116.34 -/* This user_definable macro limits the number of elements of a tag;
 1116.35 - * useful for shortening resulting symbol names (MSVC++ 6.0, for instance,
 1116.36 - * has problems coping with very long symbol names.)
 1116.37 - */
 1116.38 -
 1116.39 -#if !defined(BOOST_MULTI_INDEX_LIMIT_TAG_SIZE)
 1116.40 -#if defined(BOOST_MSVC)&&(BOOST_MSVC<1300)
 1116.41 -#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE 3
 1116.42 -#else
 1116.43 -#define BOOST_MULTI_INDEX_LIMIT_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
 1116.44 -#endif
 1116.45 -#endif
 1116.46 -
 1116.47 -#if BOOST_MULTI_INDEX_LIMIT_TAG_SIZE<BOOST_MPL_LIMIT_VECTOR_SIZE
 1116.48 -#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MULTI_INDEX_LIMIT_TAG_SIZE
 1116.49 -#else
 1116.50 -#define BOOST_MULTI_INDEX_TAG_SIZE BOOST_MPL_LIMIT_VECTOR_SIZE
 1116.51 -#endif
 1116.52 -
 1116.53 -namespace boost{
 1116.54 -
 1116.55 -namespace multi_index{
 1116.56 -
 1116.57 -namespace detail{
 1116.58 -
 1116.59 -struct tag_marker{};
 1116.60 -
 1116.61 -template<typename T>
 1116.62 -struct is_tag
 1116.63 -{
 1116.64 -  BOOST_STATIC_CONSTANT(bool,value=(is_base_and_derived<tag_marker,T>::value));
 1116.65 -};
 1116.66 -
 1116.67 -} /* namespace multi_index::detail */
 1116.68 -
 1116.69 -template<
 1116.70 -  BOOST_PP_ENUM_BINARY_PARAMS(
 1116.71 -    BOOST_MULTI_INDEX_TAG_SIZE,
 1116.72 -    typename T,
 1116.73 -    =mpl::na BOOST_PP_INTERCEPT) 
 1116.74 ->
 1116.75 -struct tag:private detail::tag_marker
 1116.76 -{
 1116.77 -  /* The mpl::transform pass produces shorter symbols (without
 1116.78 -   * trailing mpl::na's.)
 1116.79 -   */
 1116.80 -
 1116.81 -  typedef typename mpl::transform<
 1116.82 -    mpl::vector<BOOST_PP_ENUM_PARAMS(BOOST_MULTI_INDEX_TAG_SIZE,T)>,
 1116.83 -    mpl::identity<mpl::_1>
 1116.84 -  >::type type;
 1116.85 -
 1116.86 -  BOOST_STATIC_ASSERT(detail::no_duplicate_tags<type>::value);
 1116.87 -};
 1116.88 -
 1116.89 -} /* namespace multi_index */
 1116.90 -
 1116.91 -} /* namespace boost */
 1116.92 -
 1116.93 -#undef BOOST_MULTI_INDEX_TAG_SIZE
 1116.94 -
 1116.95 -#endif
  1117.1 --- a/epoc32/include/stdapis/boost/next_prior.hpp	Tue Mar 16 16:12:26 2010 +0000
  1117.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1117.3 @@ -1,51 +0,0 @@
  1117.4 -//  Boost next_prior.hpp header file  ---------------------------------------//
  1117.5 -
  1117.6 -//  (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. Distributed under the Boost
  1117.7 -//  Software License, Version 1.0. (See accompanying file
  1117.8 -//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  1117.9 -
 1117.10 -//  See http://www.boost.org/libs/utility for documentation.
 1117.11 -
 1117.12 -//  Revision History
 1117.13 -//  13 Dec 2003  Added next(x, n) and prior(x, n) (Daniel Walker)
 1117.14 -
 1117.15 -#ifndef BOOST_NEXT_PRIOR_HPP_INCLUDED
 1117.16 -#define BOOST_NEXT_PRIOR_HPP_INCLUDED
 1117.17 -
 1117.18 -#include <iterator>
 1117.19 -
 1117.20 -namespace boost {
 1117.21 -
 1117.22 -//  Helper functions for classes like bidirectional iterators not supporting
 1117.23 -//  operator+ and operator-
 1117.24 -//
 1117.25 -//  Usage:
 1117.26 -//    const std::list<T>::iterator p = get_some_iterator();
 1117.27 -//    const std::list<T>::iterator prev = boost::prior(p);
 1117.28 -//    const std::list<T>::iterator next = boost::next(prev, 2);
 1117.29 -
 1117.30 -//  Contributed by Dave Abrahams
 1117.31 -
 1117.32 -template <class T>
 1117.33 -inline T next(T x) { return ++x; }
 1117.34 -
 1117.35 -template <class T, class Distance>
 1117.36 -inline T next(T x, Distance n)
 1117.37 -{
 1117.38 -    std::advance(x, n);
 1117.39 -    return x;
 1117.40 -}
 1117.41 -
 1117.42 -template <class T>
 1117.43 -inline T prior(T x) { return --x; }
 1117.44 -
 1117.45 -template <class T, class Distance>
 1117.46 -inline T prior(T x, Distance n)
 1117.47 -{
 1117.48 -    std::advance(x, -n);
 1117.49 -    return x;
 1117.50 -}
 1117.51 -
 1117.52 -} // namespace boost
 1117.53 -
 1117.54 -#endif  // BOOST_NEXT_PRIOR_HPP_INCLUDED
  1118.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1118.2 +++ b/epoc32/include/stdapis/boost/numeric/conversion/bounds.hpp	Wed Mar 31 12:27:01 2010 +0100
  1118.3 @@ -0,0 +1,58 @@
  1118.4 +//  © Copyright Fernando Luis Cacciola Carballal 2000-2004
  1118.5 +//  Use, modification, and distribution is subject to the Boost Software
  1118.6 +//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1118.7 +//  http://www.boost.org/LICENSE_1_0.txt)
  1118.8 +
  1118.9 +//  See library home page at http://www.boost.org/libs/numeric/conversion
 1118.10 +//
 1118.11 +// Contact the author at: fernando_cacciola@hotmail.com
 1118.12 +// 
 1118.13 +#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
 1118.14 +#define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
 1118.15 +
 1118.16 +#include "boost/limits.hpp"
 1118.17 +#include "boost/config.hpp"
 1118.18 +#include "boost/mpl/if.hpp"
 1118.19 +
 1118.20 +namespace boost { namespace numeric { namespace boundsdetail
 1118.21 +{
 1118.22 +  template<class N>
 1118.23 +  class Integral
 1118.24 +  {
 1118.25 +      typedef std::numeric_limits<N> limits ;
 1118.26 +
 1118.27 +    public :
 1118.28 +    
 1118.29 +      static N lowest  () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1118.30 +      static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1118.31 +      static N smallest() { return static_cast<N>(1); }
 1118.32 +  } ;
 1118.33 +
 1118.34 +  template<class N>
 1118.35 +  class Float
 1118.36 +  {
 1118.37 +      typedef std::numeric_limits<N> limits ;
 1118.38 +
 1118.39 +    public :
 1118.40 +    
 1118.41 +      static N lowest  () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
 1118.42 +      static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1118.43 +      static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1118.44 +  } ;
 1118.45 +
 1118.46 +  template<class N>
 1118.47 +  struct get_impl
 1118.48 +  {
 1118.49 +    typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
 1118.50 +
 1118.51 +    typedef Integral<N> impl_int   ;
 1118.52 +    typedef Float   <N> impl_float ;
 1118.53 +
 1118.54 +    typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
 1118.55 +  } ;
 1118.56 +
 1118.57 +} } } // namespace boost::numeric::boundsdetail.
 1118.58 +
 1118.59 +#endif
 1118.60 +//
 1118.61 +///////////////////////////////////////////////////////////////////////////////////////////////
  1119.1 --- a/epoc32/include/stdapis/boost/numeric/conversion/cast.hpp	Tue Mar 16 16:12:26 2010 +0000
  1119.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1119.3 @@ -1,51 +0,0 @@
  1119.4 -//  © Copyright Fernando Luis Cacciola Carballal 2000-2004
  1119.5 -//  Use, modification, and distribution is subject to the Boost Software
  1119.6 -//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1119.7 -//  http://www.boost.org/LICENSE_1_0.txt)
  1119.8 -
  1119.9 -//  See library home page at http://www.boost.org/libs/numeric/conversion
 1119.10 -//
 1119.11 -// Contact the author at: fernando_cacciola@hotmail.com
 1119.12 -//
 1119.13 -//
 1119.14 -//  Revision History
 1119.15 -//
 1119.16 -//    19 Nov 2001 Syntatic changes as suggested by Darin Adler (Fernando Cacciola)
 1119.17 -//    08 Nov 2001 Fixes to accommodate MSVC (Fernando Cacciola)
 1119.18 -//    04 Nov 2001 Fixes to accommodate gcc2.92 (Fernando Cacciola)
 1119.19 -//    30 Oct 2001 Some fixes suggested by Daryle Walker (Fernando Cacciola)
 1119.20 -//    25 Oct 2001 Initial boostification (Fernando Cacciola)
 1119.21 -//    23 Jan 2004 Inital add to cvs (post review)s
 1119.22 -//
 1119.23 -#ifndef BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
 1119.24 -#define BOOST_NUMERIC_CONVERSION_CAST_25OCT2001_HPP
 1119.25 -
 1119.26 -#include <boost/detail/workaround.hpp>
 1119.27 -
 1119.28 -#if BOOST_WORKAROUND(BOOST_MSVC, < 1300) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
 1119.29 -
 1119.30 -#  include<boost/numeric/conversion/detail/old_numeric_cast.hpp>
 1119.31 -
 1119.32 -#else
 1119.33 -
 1119.34 -#include <boost/type.hpp>
 1119.35 -#include <boost/numeric/conversion/converter.hpp>
 1119.36 -
 1119.37 -namespace boost
 1119.38 -{
 1119.39 -  template<typename Target, typename Source>
 1119.40 -  inline
 1119.41 -  Target numeric_cast ( Source arg )
 1119.42 -  {
 1119.43 -    typedef boost::numeric::converter<Target,Source> Converter ;
 1119.44 -    return Converter::convert(arg);
 1119.45 -  }
 1119.46 -
 1119.47 -  using numeric::bad_numeric_cast;
 1119.48 -
 1119.49 -} // namespace boost
 1119.50 -
 1119.51 -#endif
 1119.52 -
 1119.53 -
 1119.54 -#endif
  1120.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1120.2 +++ b/epoc32/include/stdapis/boost/numeric/conversion/conversion_traits.hpp	Wed Mar 31 12:27:01 2010 +0100
  1120.3 @@ -0,0 +1,17 @@
  1120.4 +
  1120.5 +// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
  1120.6 +// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
  1120.7 +// Copyright 1999, 2000 Jaakko J„rvi (jaakko.jarvi@cs.utu.fi)
  1120.8 +//
  1120.9 +//  Use, modification and distribution are subject to the Boost Software License,
 1120.10 +//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1120.11 +//  http://www.boost.org/LICENSE_1_0.txt).
 1120.12 +//
 1120.13 +//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 1120.14 +
 1120.15 +#ifndef BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
 1120.16 +#define BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
 1120.17 +
 1120.18 +#include <boost/type_traits/is_convertible.hpp>
 1120.19 +
 1120.20 +#endif // BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
  1121.1 --- a/epoc32/include/stdapis/boost/numeric/conversion/detail/bounds.hpp	Tue Mar 16 16:12:26 2010 +0000
  1121.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1121.3 @@ -1,58 +0,0 @@
  1121.4 -//  © Copyright Fernando Luis Cacciola Carballal 2000-2004
  1121.5 -//  Use, modification, and distribution is subject to the Boost Software
  1121.6 -//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1121.7 -//  http://www.boost.org/LICENSE_1_0.txt)
  1121.8 -
  1121.9 -//  See library home page at http://www.boost.org/libs/numeric/conversion
 1121.10 -//
 1121.11 -// Contact the author at: fernando_cacciola@hotmail.com
 1121.12 -// 
 1121.13 -#ifndef BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
 1121.14 -#define BOOST_NUMERIC_CONVERSION_BOUNDS_DETAIL_FLC_12NOV2002_HPP
 1121.15 -
 1121.16 -#include "boost/limits.hpp"
 1121.17 -#include "boost/config.hpp"
 1121.18 -#include "boost/mpl/if.hpp"
 1121.19 -
 1121.20 -namespace boost { namespace numeric { namespace boundsdetail
 1121.21 -{
 1121.22 -  template<class N>
 1121.23 -  class Integral
 1121.24 -  {
 1121.25 -      typedef std::numeric_limits<N> limits ;
 1121.26 -
 1121.27 -    public :
 1121.28 -    
 1121.29 -      static N lowest  () { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1121.30 -      static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1121.31 -      static N smallest() { return static_cast<N>(1); }
 1121.32 -  } ;
 1121.33 -
 1121.34 -  template<class N>
 1121.35 -  class Float
 1121.36 -  {
 1121.37 -      typedef std::numeric_limits<N> limits ;
 1121.38 -
 1121.39 -    public :
 1121.40 -    
 1121.41 -      static N lowest  () { return static_cast<N>(-limits::max BOOST_PREVENT_MACRO_SUBSTITUTION ()) ; }
 1121.42 -      static N highest () { return limits::max BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1121.43 -      static N smallest() { return limits::min BOOST_PREVENT_MACRO_SUBSTITUTION (); }
 1121.44 -  } ;
 1121.45 -
 1121.46 -  template<class N>
 1121.47 -  struct get_impl
 1121.48 -  {
 1121.49 -    typedef mpl::bool_< ::std::numeric_limits<N>::is_integer > is_int ;
 1121.50 -
 1121.51 -    typedef Integral<N> impl_int   ;
 1121.52 -    typedef Float   <N> impl_float ;
 1121.53 -
 1121.54 -    typedef typename mpl::if_<is_int,impl_int,impl_float>::type type ;
 1121.55 -  } ;
 1121.56 -
 1121.57 -} } } // namespace boost::numeric::boundsdetail.
 1121.58 -
 1121.59 -#endif
 1121.60 -//
 1121.61 -///////////////////////////////////////////////////////////////////////////////////////////////
  1122.1 --- a/epoc32/include/stdapis/boost/numeric/conversion/detail/converter.hpp	Tue Mar 16 16:12:26 2010 +0000
  1122.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1122.3 @@ -1,602 +0,0 @@
  1122.4 -//  © Copyright Fernando Luis Cacciola Carballal 2000-2004
  1122.5 -//  Use, modification, and distribution is subject to the Boost Software
  1122.6 -//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1122.7 -//  http://www.boost.org/LICENSE_1_0.txt)
  1122.8 -
  1122.9 -//  See library home page at http://www.boost.org/libs/numeric/conversion
 1122.10 -//
 1122.11 -// Contact the author at: fernando_cacciola@hotmail.com
 1122.12 -//
 1122.13 -#ifndef BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
 1122.14 -#define BOOST_NUMERIC_CONVERSION_DETAIL_CONVERTER_FLC_12NOV2002_HPP
 1122.15 -
 1122.16 -#include <functional>
 1122.17 -
 1122.18 -#include "boost/numeric/conversion/detail/meta.hpp"
 1122.19 -#include "boost/numeric/conversion/detail/conversion_traits.hpp"
 1122.20 -#include "boost/numeric/conversion/bounds.hpp"
 1122.21 -
 1122.22 -#include "boost/type_traits/is_same.hpp"
 1122.23 -
 1122.24 -#include "boost/mpl/integral_c.hpp"
 1122.25 -
 1122.26 -namespace boost { namespace numeric { namespace convdetail
 1122.27 -{
 1122.28 -  // Integral Constants representing rounding modes
 1122.29 -  typedef mpl::integral_c<std::float_round_style, std::round_toward_zero>         round2zero_c ;
 1122.30 -  typedef mpl::integral_c<std::float_round_style, std::round_to_nearest>          round2nearest_c ;
 1122.31 -  typedef mpl::integral_c<std::float_round_style, std::round_toward_infinity>     round2inf_c ;
 1122.32 -  typedef mpl::integral_c<std::float_round_style, std::round_toward_neg_infinity> round2neg_inf_c ;
 1122.33 -
 1122.34 -  // Metafunction:
 1122.35 -  //
 1122.36 -  //   for_round_style<RoundStyle,RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf>::type
 1122.37 -  //
 1122.38 -  // {RoundStyle} Integral Constant specifying a round style as declared above.
 1122.39 -  // {RoundToZero,RoundToNearest,RoundToInf,RoundToNegInf} arbitrary types.
 1122.40 -  //
 1122.41 -  // Selects one of the 4 types according to the value of RoundStyle.
 1122.42 -  //
 1122.43 -  template<class RoundStyle,class RoundToZero,class RoundToNearest,class RoundToInf,class RoundToNegInf>
 1122.44 -  struct for_round_style
 1122.45 -  {
 1122.46 -    typedef ct_switch4<RoundStyle
 1122.47 -                       , round2zero_c, round2nearest_c, round2inf_c // round2neg_inf_c
 1122.48 -                       , RoundToZero , RoundToNearest , RoundToInf , RoundToNegInf
 1122.49 -                      > selector ;
 1122.50 -
 1122.51 -    typedef typename selector::type type ;
 1122.52 -  } ;
 1122.53 -
 1122.54 -
 1122.55 -
 1122.56 -
 1122.57 -
 1122.58 -
 1122.59 -
 1122.60 -
 1122.61 -
 1122.62 -
 1122.63 -
 1122.64 -
 1122.65 -
 1122.66 -
 1122.67 -
 1122.68 -
 1122.69 -
 1122.70 -
 1122.71 -//--------------------------------------------------------------------------
 1122.72 -//                             Range Checking Logic.
 1122.73 -//
 1122.74 -// The range checking logic is built up by combining 1 or 2 predicates.
 1122.75 -// Each predicate is encapsulated in a template class and exposes
 1122.76 -// the static member function 'apply'.
 1122.77 -//
 1122.78 -//--------------------------------------------------------------------------
 1122.79 -
 1122.80 -
 1122.81 -  // Because a particular logic can combine either 1 or two predicates, the following
 1122.82 -  // tags are used to allow the predicate applier to receive 2 preds, but optimize away
 1122.83 -  // one of them if it is 'non-applicable'
 1122.84 -  struct non_applicable { typedef mpl::false_ do_apply ; } ;
 1122.85 -  struct applicable     { typedef mpl::true_  do_apply ; } ;
 1122.86 -
 1122.87 -
 1122.88 -  //--------------------------------------------------------------------------
 1122.89 -  //
 1122.90 -  //                      Range Checking Logic implementations.
 1122.91 -  //
 1122.92 -  // The following classes, collectivelly named 'Predicates', are instantiated within
 1122.93 -  // the corresponding range checkers.
 1122.94 -  // Their static member function 'apply' is called to perform the actual range checking logic.
 1122.95 -  //--------------------------------------------------------------------------
 1122.96 -
 1122.97 -    // s < Lowest(T) ? cNegOverflow : cInRange
 1122.98 -    //
 1122.99 -    template<class Traits>
1122.100 -    struct LT_LoT : applicable
1122.101 -    {
1122.102 -      typedef typename Traits::target_type T ;
1122.103 -      typedef typename Traits::source_type S ;
1122.104 -      typedef typename Traits::argument_type argument_type ;
1122.105 -
1122.106 -      static range_check_result apply ( argument_type s )
1122.107 -      {
1122.108 -        return s < static_cast<S>(bounds<T>::lowest()) ? cNegOverflow : cInRange ;
1122.109 -      }
1122.110 -    } ;
1122.111 -
1122.112 -    // s < 0 ? cNegOverflow : cInRange
1122.113 -    //
1122.114 -    template<class Traits>
1122.115 -    struct LT_Zero : applicable
1122.116 -    {
1122.117 -      typedef typename Traits::source_type S ;
1122.118 -      typedef typename Traits::argument_type argument_type ;
1122.119 -
1122.120 -      static range_check_result apply ( argument_type s )
1122.121 -      {
1122.122 -        return s < static_cast<S>(0) ? cNegOverflow : cInRange ;
1122.123 -      }
1122.124 -    } ;
1122.125 -
1122.126 -    // s <= Lowest(T)-1 ? cNegOverflow : cInRange
1122.127 -    //
1122.128 -    template<class Traits>
1122.129 -    struct LE_PrevLoT : applicable
1122.130 -    {
1122.131 -      typedef typename Traits::target_type T ;
1122.132 -      typedef typename Traits::source_type S ;
1122.133 -      typedef typename Traits::argument_type argument_type ;
1122.134 -
1122.135 -      static range_check_result apply ( argument_type s )
1122.136 -      {
1122.137 -        return s <= static_cast<S>(bounds<T>::lowest()) - static_cast<S>(1.0)
1122.138 -                 ? cNegOverflow : cInRange ;
1122.139 -      }
1122.140 -    } ;
1122.141 -
1122.142 -    // s < Lowest(T)-0.5 ? cNegOverflow : cInRange
1122.143 -    //
1122.144 -    template<class Traits>
1122.145 -    struct LT_HalfPrevLoT : applicable
1122.146 -    {
1122.147 -      typedef typename Traits::target_type T ;
1122.148 -      typedef typename Traits::source_type S ;
1122.149 -      typedef typename Traits::argument_type argument_type ;
1122.150 -
1122.151 -      static range_check_result apply ( argument_type s )
1122.152 -      {
1122.153 -        return s < static_cast<S>(bounds<T>::lowest()) - static_cast<S>(0.5)
1122.154 -                 ? cNegOverflow : cInRange ;
1122.155 -      }
1122.156 -    } ;
1122.157 -
1122.158 -    // s > Highest(T) ? cPosOverflow : cInRange
1122.159 -    //
1122.160 -    template<class Traits>
1122.161 -    struct GT_HiT : applicable
1122.162 -    {
1122.163 -      typedef typename Traits::target_type T ;
1122.164 -      typedef typename Traits::source_type S ;
1122.165 -      typedef typename Traits::argument_type argument_type ;
1122.166 -
1122.167 -      static range_check_result apply ( argument_type s )
1122.168 -      {
1122.169 -        return s > static_cast<S>(bounds<T>::highest())
1122.170 -                 ? cPosOverflow : cInRange ;
1122.171 -      }
1122.172 -    } ;
1122.173 -
1122.174 -    // s >= Lowest(T) + 1 ? cPosOverflow : cInRange
1122.175 -    //
1122.176 -    template<class Traits>
1122.177 -    struct GE_SuccHiT : applicable
1122.178 -    {
1122.179 -      typedef typename Traits::target_type T ;
1122.180 -      typedef typename Traits::source_type S ;
1122.181 -      typedef typename Traits::argument_type argument_type ;
1122.182 -
1122.183 -      static range_check_result apply ( argument_type s )
1122.184 -      {
1122.185 -        return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(1.0)
1122.186 -                 ? cPosOverflow : cInRange ;
1122.187 -      }
1122.188 -    } ;
1122.189 -
1122.190 -    // s >= Lowest(T) + 0.5 ? cPosgOverflow : cInRange
1122.191 -    //
1122.192 -    template<class Traits>
1122.193 -    struct GT_HalfSuccHiT : applicable
1122.194 -    {
1122.195 -      typedef typename Traits::target_type T ;
1122.196 -      typedef typename Traits::source_type S ;
1122.197 -      typedef typename Traits::argument_type argument_type ;
1122.198 -
1122.199 -      static range_check_result apply ( argument_type s )
1122.200 -      {
1122.201 -        return s >= static_cast<S>(bounds<T>::highest()) + static_cast<S>(0.5)
1122.202 -                 ? cPosOverflow : cInRange ;
1122.203 -      }
1122.204 -    } ;
1122.205 -
1122.206 -
1122.207 -  //--------------------------------------------------------------------------
1122.208 -  //
1122.209 -  // Predicate Combiner.
1122.210 -  //
1122.211 -  // This helper classes are used to possibly combine the range checking logic
1122.212 -  // individually performed by the predicates
1122.213 -  //
1122.214 -  //--------------------------------------------------------------------------
1122.215 -
1122.216 -
1122.217 -    // Applies both predicates: first 'PredA', and if it equals 'cInRange', 'PredB'
1122.218 -    template<class PredA, class PredB>
1122.219 -    struct applyBoth
1122.220 -    {
1122.221 -      typedef typename PredA::argument_type argument_type ;
1122.222 -
1122.223 -      static range_check_result apply ( argument_type s )
1122.224 -      {
1122.225 -        range_check_result r = PredA::apply(s) ;
1122.226 -        if ( r == cInRange )
1122.227 -          r = PredB::apply(s);
1122.228 -        return r ;
1122.229 -      }
1122.230 -    } ;
1122.231 -
1122.232 -    template<class PredA, class PredB>
1122.233 -    struct combine
1122.234 -    {
1122.235 -      typedef applyBoth<PredA,PredB> Both ;
1122.236 -      typedef void                   NNone ; // 'None' is defined as a macro in (/usr/X11R6/include/X11/X.h)
1122.237 -
1122.238 -      typedef typename PredA::do_apply do_applyA ;
1122.239 -      typedef typename PredB::do_apply do_applyB ;
1122.240 -
1122.241 -      typedef typename for_both<do_applyA, do_applyB, Both, PredA, PredB, NNone>::type type ;
1122.242 -    } ;
1122.243 -
1122.244 -
1122.245 -
1122.246 -
1122.247 -
1122.248 -
1122.249 -
1122.250 -
1122.251 -
1122.252 -
1122.253 -
1122.254 -
1122.255 -//--------------------------------------------------------------------------
1122.256 -//                             Range Checker classes.
1122.257 -//
1122.258 -// The following classes are VISIBLE base classes of the user-level converter<> class.
1122.259 -// They supply the optimized 'out_of_range()' and 'validate_range()' static member functions
1122.260 -// visible in the user interface.
1122.261 -//
1122.262 -//--------------------------------------------------------------------------
1122.263 -
1122.264 -  // Dummy range checker.
1122.265 -  template<class Traits>
1122.266 -  struct dummy_range_checker
1122.267 -  {
1122.268 -    typedef typename Traits::argument_type argument_type ;
1122.269 -
1122.270 -    static range_check_result out_of_range ( argument_type ) { return cInRange ; }
1122.271 -    static void validate_range ( argument_type ) {}
1122.272 -  } ;
1122.273 -
1122.274 -  // Generic range checker.
1122.275 -  //
1122.276 -  // All the range checking logic for all possible combinations of source and target
1122.277 -  // can be arranged in terms of one or two predicates, which test overflow on both neg/pos 'sides'
1122.278 -  // of the ranges.
1122.279 -  //
1122.280 -  // These predicates are given here as IsNegOverflow and IsPosOverflow.
1122.281 -  //
1122.282 -  template<class Traits, class IsNegOverflow, class IsPosOverflow, class OverflowHandler>
1122.283 -  struct generic_range_checker
1122.284 -  {
1122.285 -    typedef OverflowHandler overflow_handler ;
1122.286 -
1122.287 -    typedef typename Traits::argument_type argument_type ;
1122.288 -
1122.289 -    static range_check_result out_of_range ( argument_type s )
1122.290 -    {
1122.291 -      typedef typename combine<IsNegOverflow,IsPosOverflow>::type Predicate ;
1122.292 -
1122.293 -      return Predicate::apply(s);
1122.294 -    }
1122.295 -
1122.296 -    static void validate_range ( argument_type s )
1122.297 -      { OverflowHandler()( out_of_range(s) ) ; }
1122.298 -  } ;
1122.299 -
1122.300 -
1122.301 -
1122.302 -//--------------------------------------------------------------------------
1122.303 -//
1122.304 -// Selectors for the optimized Range Checker class.
1122.305 -//
1122.306 -//--------------------------------------------------------------------------
1122.307 -
1122.308 -  template<class Traits,class OverflowHandler>
1122.309 -  struct GetRC_Sig2Sig_or_Unsig2Unsig
1122.310 -  {
1122.311 -    typedef dummy_range_checker<Traits> Dummy ;
1122.312 -
1122.313 -    typedef LT_LoT<Traits> Pred1 ;
1122.314 -    typedef GT_HiT<Traits> Pred2 ;
1122.315 -
1122.316 -    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
1122.317 -
1122.318 -    typedef typename Traits::subranged subranged ;
1122.319 -
1122.320 -    typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
1122.321 -  } ;
1122.322 -
1122.323 -  template<class Traits, class OverflowHandler>
1122.324 -  struct GetRC_Sig2Unsig
1122.325 -  {
1122.326 -    typedef LT_Zero<Traits> Pred1 ;
1122.327 -    typedef GT_HiT <Traits> Pred2 ;
1122.328 -
1122.329 -    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ChoiceA ;
1122.330 -
1122.331 -    typedef generic_range_checker<Traits,Pred1,non_applicable,OverflowHandler> ChoiceB ;
1122.332 -
1122.333 -    typedef typename Traits::target_type T ;
1122.334 -    typedef typename Traits::source_type S ;
1122.335 -
1122.336 -    typedef typename subranged_Unsig2Sig<S,T>::type oposite_subranged ;
1122.337 -
1122.338 -    typedef typename mpl::not_<oposite_subranged>::type positively_subranged ;
1122.339 -
1122.340 -    typedef typename mpl::if_<positively_subranged,ChoiceA,ChoiceB>::type type ;
1122.341 -  } ;
1122.342 -
1122.343 -  template<class Traits, class OverflowHandler>
1122.344 -  struct GetRC_Unsig2Sig
1122.345 -  {
1122.346 -    typedef GT_HiT<Traits> Pred1 ;
1122.347 -
1122.348 -    typedef generic_range_checker<Traits,non_applicable,Pred1,OverflowHandler> type ;
1122.349 -  } ;
1122.350 -
1122.351 -  template<class Traits,class OverflowHandler>
1122.352 -  struct GetRC_Int2Int
1122.353 -  {
1122.354 -    typedef GetRC_Sig2Sig_or_Unsig2Unsig<Traits,OverflowHandler> Sig2SigQ     ;
1122.355 -    typedef GetRC_Sig2Unsig             <Traits,OverflowHandler> Sig2UnsigQ   ;
1122.356 -    typedef GetRC_Unsig2Sig             <Traits,OverflowHandler> Unsig2SigQ   ;
1122.357 -    typedef Sig2SigQ                                             Unsig2UnsigQ ;
1122.358 -
1122.359 -    typedef typename Traits::sign_mixture sign_mixture ;
1122.360 -
1122.361 -    typedef typename
1122.362 -      for_sign_mixture<sign_mixture,Sig2SigQ,Sig2UnsigQ,Unsig2SigQ,Unsig2UnsigQ>::type
1122.363 -        selector ;
1122.364 -
1122.365 -    typedef typename selector::type type ;
1122.366 -  } ;
1122.367 -
1122.368 -  template<class Traits>
1122.369 -  struct GetRC_Int2Float
1122.370 -  {
1122.371 -    typedef dummy_range_checker<Traits> type ;
1122.372 -  } ;
1122.373 -
1122.374 -  template<class Traits, class OverflowHandler, class Float2IntRounder>
1122.375 -  struct GetRC_Float2Int
1122.376 -  {
1122.377 -    typedef LE_PrevLoT    <Traits> Pred1 ;
1122.378 -    typedef GE_SuccHiT    <Traits> Pred2 ;
1122.379 -    typedef LT_HalfPrevLoT<Traits> Pred3 ;
1122.380 -    typedef GT_HalfSuccHiT<Traits> Pred4 ;
1122.381 -    typedef GT_HiT        <Traits> Pred5 ;
1122.382 -    typedef LT_LoT        <Traits> Pred6 ;
1122.383 -
1122.384 -    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> ToZero    ;
1122.385 -    typedef generic_range_checker<Traits,Pred3,Pred4,OverflowHandler> ToNearest ;
1122.386 -    typedef generic_range_checker<Traits,Pred1,Pred5,OverflowHandler> ToInf     ;
1122.387 -    typedef generic_range_checker<Traits,Pred6,Pred2,OverflowHandler> ToNegInf  ;
1122.388 -
1122.389 -    typedef typename Float2IntRounder::round_style round_style ;
1122.390 -
1122.391 -    typedef typename for_round_style<round_style,ToZero,ToNearest,ToInf,ToNegInf>::type type ;
1122.392 -  } ;
1122.393 -
1122.394 -  template<class Traits, class OverflowHandler>
1122.395 -  struct GetRC_Float2Float
1122.396 -  {
1122.397 -    typedef dummy_range_checker<Traits> Dummy ;
1122.398 -
1122.399 -    typedef LT_LoT<Traits> Pred1 ;
1122.400 -    typedef GT_HiT<Traits> Pred2 ;
1122.401 -
1122.402 -    typedef generic_range_checker<Traits,Pred1,Pred2,OverflowHandler> Normal ;
1122.403 -
1122.404 -    typedef typename Traits::subranged subranged ;
1122.405 -
1122.406 -    typedef typename mpl::if_<subranged,Normal,Dummy>::type type ;
1122.407 -  } ;
1122.408 -
1122.409 -  template<class Traits, class OverflowHandler, class Float2IntRounder>
1122.410 -  struct GetRC_BuiltIn2BuiltIn
1122.411 -  {
1122.412 -    typedef GetRC_Int2Int<Traits,OverflowHandler>                    Int2IntQ ;
1122.413 -    typedef GetRC_Int2Float<Traits>                                  Int2FloatQ ;
1122.414 -    typedef GetRC_Float2Int<Traits,OverflowHandler,Float2IntRounder> Float2IntQ ;
1122.415 -    typedef GetRC_Float2Float<Traits,OverflowHandler>                Float2FloatQ ;
1122.416 -
1122.417 -    typedef typename Traits::int_float_mixture int_float_mixture ;
1122.418 -
1122.419 -    typedef typename for_int_float_mixture<int_float_mixture, Int2IntQ, Int2FloatQ, Float2IntQ, Float2FloatQ>::type selector ;
1122.420 -
1122.421 -    typedef typename selector::type type ;
1122.422 -  } ;
1122.423 -
1122.424 -  template<class Traits, class OverflowHandler, class Float2IntRounder>
1122.425 -  struct GetRC
1122.426 -  {
1122.427 -    typedef GetRC_BuiltIn2BuiltIn<Traits,OverflowHandler,Float2IntRounder> BuiltIn2BuiltInQ ;
1122.428 -
1122.429 -    typedef dummy_range_checker<Traits> Dummy ;
1122.430 -
1122.431 -    typedef mpl::identity<Dummy> DummyQ ;
1122.432 -
1122.433 -    typedef typename Traits::udt_builtin_mixture udt_builtin_mixture ;
1122.434 -
1122.435 -    typedef typename for_udt_builtin_mixture<udt_builtin_mixture,BuiltIn2BuiltInQ,DummyQ,DummyQ,DummyQ>::type selector ;
1122.436 -
1122.437 -    typedef typename selector::type type ;
1122.438 -  } ;
1122.439 -
1122.440 -
1122.441 -
1122.442 -
1122.443 -//--------------------------------------------------------------------------
1122.444 -//                             Converter classes.
1122.445 -//
1122.446 -// The following classes are VISIBLE base classes of the user-level converter<> class.
1122.447 -// They supply the optimized 'nearbyint()' and 'convert()' static member functions
1122.448 -// visible in the user interface.
1122.449 -//
1122.450 -//--------------------------------------------------------------------------
1122.451 -
1122.452 -  //
1122.453 -  // Trivial Converter : used when (cv-unqualified) T == (cv-unqualified)  S
1122.454 -  //
1122.455 -  template<class Traits>
1122.456 -  struct trivial_converter_impl : public std::unary_function<  BOOST_DEDUCED_TYPENAME Traits::argument_type
1122.457 -                                                              ,BOOST_DEDUCED_TYPENAME Traits::result_type
1122.458 -                                                            >
1122.459 -                                 ,public dummy_range_checker<Traits>
1122.460 -  {
1122.461 -    typedef Traits traits ;
1122.462 -
1122.463 -    typedef typename Traits::source_type   source_type   ;
1122.464 -    typedef typename Traits::argument_type argument_type ;
1122.465 -    typedef typename Traits::result_type   result_type   ;
1122.466 -
1122.467 -    static result_type low_level_convert ( argument_type s ) { return s ; }
1122.468 -    static source_type nearbyint         ( argument_type s ) { return s ; }
1122.469 -    static result_type convert           ( argument_type s ) { return s ; }
1122.470 -  } ;
1122.471 -
1122.472 -
1122.473 -  //
1122.474 -  // Rounding Converter : used for float to integral conversions.
1122.475 -  //
1122.476 -  template<class Traits,class RangeChecker,class RawConverter,class Float2IntRounder>
1122.477 -  struct rounding_converter : public std::unary_function<  BOOST_DEDUCED_TYPENAME Traits::argument_type
1122.478 -                                                          ,BOOST_DEDUCED_TYPENAME Traits::result_type
1122.479 -                                                        >
1122.480 -                             ,public RangeChecker
1122.481 -                             ,public Float2IntRounder
1122.482 -                             ,public RawConverter
1122.483 -  {
1122.484 -    typedef RangeChecker     RangeCheckerBase ;
1122.485 -    typedef Float2IntRounder Float2IntRounderBase ;
1122.486 -    typedef RawConverter     RawConverterBase ;
1122.487 -
1122.488 -    typedef Traits traits ;
1122.489 -
1122.490 -    typedef typename Traits::source_type   source_type   ;
1122.491 -    typedef typename Traits::argument_type argument_type ;
1122.492 -    typedef typename Traits::result_type   result_type   ;
1122.493 -
1122.494 -    static result_type convert ( argument_type s )
1122.495 -    {
1122.496 -      RangeCheckerBase::validate_range(s);
1122.497 -      source_type s1 = Float2IntRounderBase::nearbyint(s);
1122.498 -      return RawConverterBase::low_level_convert(s1);
1122.499 -    }
1122.500 -  } ;
1122.501 -
1122.502 -
1122.503 -  //
1122.504 -  // Non-Rounding Converter : used for all other conversions.
1122.505 -  //
1122.506 -  template<class Traits,class RangeChecker,class RawConverter>
1122.507 -  struct non_rounding_converter : public std::unary_function< BOOST_DEDUCED_TYPENAME Traits::argument_type
1122.508 -                                                             ,BOOST_DEDUCED_TYPENAME Traits::result_type
1122.509 -                                                           >
1122.510 -                                 ,public RangeChecker
1122.511 -                                 ,public RawConverter
1122.512 -  {
1122.513 -    typedef RangeChecker RangeCheckerBase ;
1122.514 -    typedef RawConverter RawConverterBase ;
1122.515 -
1122.516 -    typedef Traits traits ;
1122.517 -
1122.518 -    typedef typename Traits::source_type   source_type   ;
1122.519 -    typedef typename Traits::argument_type argument_type ;
1122.520 -    typedef typename Traits::result_type   result_type   ;
1122.521 -
1122.522 -    static source_type nearbyint ( argument_type s ) { return s ; }
1122.523 -
1122.524 -    static result_type convert ( argument_type s )
1122.525 -    {
1122.526 -      RangeCheckerBase::validate_range(s);
1122.527 -      return RawConverterBase::low_level_convert(s);
1122.528 -    }
1122.529 -  } ;
1122.530 -
1122.531 -
1122.532 -
1122.533 -
1122.534 -//--------------------------------------------------------------------------
1122.535 -//
1122.536 -// Selectors for the optimized Converter class.
1122.537 -//
1122.538 -//--------------------------------------------------------------------------
1122.539 -
1122.540 -  template<class Traits,class OverflowHandler,class Float2IntRounder,class RawConverter, class UserRangeChecker>
1122.541 -  struct get_non_trivial_converter
1122.542 -  {
1122.543 -    typedef GetRC<Traits,OverflowHandler,Float2IntRounder> InternalRangeCheckerQ ;
1122.544 -
1122.545 -    typedef is_same<UserRangeChecker,UseInternalRangeChecker> use_internal_RC ;
1122.546 -
1122.547 -    typedef mpl::identity<UserRangeChecker> UserRangeCheckerQ ;
1122.548 -
1122.549 -    typedef typename
1122.550 -      mpl::eval_if<use_internal_RC,InternalRangeCheckerQ,UserRangeCheckerQ>::type
1122.551 -        RangeChecker ;
1122.552 -
1122.553 -    typedef non_rounding_converter<Traits,RangeChecker,RawConverter>              NonRounding ;
1122.554 -    typedef rounding_converter<Traits,RangeChecker,RawConverter,Float2IntRounder> Rounding ;
1122.555 -
1122.556 -    typedef mpl::identity<NonRounding> NonRoundingQ ;
1122.557 -    typedef mpl::identity<Rounding>    RoundingQ    ;
1122.558 -
1122.559 -    typedef typename Traits::int_float_mixture int_float_mixture ;
1122.560 -
1122.561 -    typedef typename
1122.562 -      for_int_float_mixture<int_float_mixture, NonRoundingQ, NonRoundingQ, RoundingQ, NonRoundingQ>::type
1122.563 -        selector ;
1122.564 -
1122.565 -    typedef typename selector::type type ;
1122.566 -  } ;
1122.567 -
1122.568 -  template< class Traits
1122.569 -           ,class OverflowHandler
1122.570 -           ,class Float2IntRounder
1122.571 -           ,class RawConverter
1122.572 -           ,class UserRangeChecker
1122.573 -          >
1122.574 -  struct get_converter_impl
1122.575 -  {
1122.576 -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT( 0x0561 ) )
1122.577 -    // bcc55 prefers sometimes template parameters to be explicit local types.
1122.578 -    // (notice that is is illegal to reuse the names like this)
1122.579 -    typedef Traits           Traits ;
1122.580 -    typedef OverflowHandler  OverflowHandler ;
1122.581 -    typedef Float2IntRounder Float2IntRounder ;
1122.582 -    typedef RawConverter     RawConverter ;
1122.583 -    typedef UserRangeChecker UserRangeChecker ;
1122.584 -#endif
1122.585 -
1122.586 -    typedef trivial_converter_impl<Traits> Trivial ;
1122.587 -    typedef mpl::identity        <Trivial> TrivialQ ;
1122.588 -
1122.589 -    typedef get_non_trivial_converter< Traits
1122.590 -                                      ,OverflowHandler
1122.591 -                                      ,Float2IntRounder
1122.592 -                                      ,RawConverter
1122.593 -                                      ,UserRangeChecker
1122.594 -                                     > NonTrivialQ ;
1122.595 -
1122.596 -    typedef typename Traits::trivial trivial ;
1122.597 -
1122.598 -    typedef typename mpl::eval_if<trivial,TrivialQ,NonTrivialQ>::type type ;
1122.599 -  } ;
1122.600 -
1122.601 -} } } // namespace boost::numeric::convdetail
1122.602 -
1122.603 -#endif
1122.604 -
1122.605 -
  1123.1 --- a/epoc32/include/stdapis/boost/operators.hpp	Tue Mar 16 16:12:26 2010 +0000
  1123.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1123.3 @@ -1,941 +0,0 @@
  1123.4 -//  Boost operators.hpp header file  ----------------------------------------//
  1123.5 -
  1123.6 -//  (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001.
  1123.7 -//  Distributed under the Boost Software License, Version 1.0. (See
  1123.8 -//  accompanying file LICENSE_1_0.txt or copy at
  1123.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1123.10 -
 1123.11 -//  See http://www.boost.org/libs/utility/operators.htm for documentation.
 1123.12 -
 1123.13 -//  Revision History
 1123.14 -//  21 Oct 02 Modified implementation of operators to allow compilers with a
 1123.15 -//            correct named return value optimization (NRVO) to produce optimal
 1123.16 -//            code.  (Daniel Frey)
 1123.17 -//  02 Dec 01 Bug fixed in random_access_iteratable.  (Helmut Zeisel)
 1123.18 -//  28 Sep 01 Factored out iterator operator groups.  (Daryle Walker)
 1123.19 -//  27 Aug 01 'left' form for non commutative operators added;
 1123.20 -//            additional classes for groups of related operators added;
 1123.21 -//            workaround for empty base class optimization
 1123.22 -//            bug of GCC 3.0 (Helmut Zeisel)
 1123.23 -//  25 Jun 01 output_iterator_helper changes: removed default template 
 1123.24 -//            parameters, added support for self-proxying, additional 
 1123.25 -//            documentation and tests (Aleksey Gurtovoy)
 1123.26 -//  29 May 01 Added operator classes for << and >>.  Added input and output
 1123.27 -//            iterator helper classes.  Added classes to connect equality and
 1123.28 -//            relational operators.  Added classes for groups of related
 1123.29 -//            operators.  Reimplemented example operator and iterator helper
 1123.30 -//            classes in terms of the new groups.  (Daryle Walker, with help
 1123.31 -//            from Alexy Gurtovoy)
 1123.32 -//  11 Feb 01 Fixed bugs in the iterator helpers which prevented explicitly
 1123.33 -//            supplied arguments from actually being used (Dave Abrahams)
 1123.34 -//  04 Jul 00 Fixed NO_OPERATORS_IN_NAMESPACE bugs, major cleanup and
 1123.35 -//            refactoring of compiler workarounds, additional documentation
 1123.36 -//            (Alexy Gurtovoy and Mark Rodgers with some help and prompting from
 1123.37 -//            Dave Abrahams) 
 1123.38 -//  28 Jun 00 General cleanup and integration of bugfixes from Mark Rodgers and
 1123.39 -//            Jeremy Siek (Dave Abrahams)
 1123.40 -//  20 Jun 00 Changes to accommodate Borland C++Builder 4 and Borland C++ 5.5
 1123.41 -//            (Mark Rodgers)
 1123.42 -//  20 Jun 00 Minor fixes to the prior revision (Aleksey Gurtovoy)
 1123.43 -//  10 Jun 00 Support for the base class chaining technique was added
 1123.44 -//            (Aleksey Gurtovoy). See documentation and the comments below 
 1123.45 -//            for the details. 
 1123.46 -//  12 Dec 99 Initial version with iterator operators (Jeremy Siek)
 1123.47 -//  18 Nov 99 Change name "divideable" to "dividable", remove unnecessary
 1123.48 -//            specializations of dividable, subtractable, modable (Ed Brey) 
 1123.49 -//  17 Nov 99 Add comments (Beman Dawes)
 1123.50 -//            Remove unnecessary specialization of operators<> (Ed Brey)
 1123.51 -//  15 Nov 99 Fix less_than_comparable<T,U> second operand type for first two
 1123.52 -//            operators.(Beman Dawes)
 1123.53 -//  12 Nov 99 Add operators templates (Ed Brey)
 1123.54 -//  11 Nov 99 Add single template parameter version for compilers without
 1123.55 -//            partial specialization (Beman Dawes)
 1123.56 -//  10 Nov 99 Initial version
 1123.57 -
 1123.58 -// 10 Jun 00:
 1123.59 -// An additional optional template parameter was added to most of 
 1123.60 -// operator templates to support the base class chaining technique (see 
 1123.61 -// documentation for the details). Unfortunately, a straightforward
 1123.62 -// implementation of this change would have broken compatibility with the
 1123.63 -// previous version of the library by making it impossible to use the same
 1123.64 -// template name (e.g. 'addable') for both the 1- and 2-argument versions of
 1123.65 -// an operator template. This implementation solves the backward-compatibility
 1123.66 -// issue at the cost of some simplicity.
 1123.67 -//
 1123.68 -// One of the complications is an existence of special auxiliary class template
 1123.69 -// 'is_chained_base<>' (see 'detail' namespace below), which is used
 1123.70 -// to determine whether its template parameter is a library's operator template
 1123.71 -// or not. You have to specialize 'is_chained_base<>' for each new 
 1123.72 -// operator template you add to the library.
 1123.73 -//
 1123.74 -// However, most of the non-trivial implementation details are hidden behind 
 1123.75 -// several local macros defined below, and as soon as you understand them,
 1123.76 -// you understand the whole library implementation. 
 1123.77 -
 1123.78 -#ifndef BOOST_OPERATORS_HPP
 1123.79 -#define BOOST_OPERATORS_HPP
 1123.80 -
 1123.81 -#include <boost/config.hpp>
 1123.82 -#include <boost/iterator.hpp>
 1123.83 -#include <boost/detail/workaround.hpp>
 1123.84 -
 1123.85 -#if defined(__sgi) && !defined(__GNUC__)
 1123.86 -#   pragma set woff 1234
 1123.87 -#endif
 1123.88 -
 1123.89 -#if defined(BOOST_MSVC)
 1123.90 -#   pragma warning( disable : 4284 ) // complaint about return type of 
 1123.91 -#endif                               // operator-> not begin a UDT
 1123.92 -
 1123.93 -namespace boost {
 1123.94 -namespace detail {
 1123.95 -
 1123.96 -// Helmut Zeisel, empty base class optimization bug with GCC 3.0.0
 1123.97 -#if defined(__GNUC__) && __GNUC__==3 && __GNUC_MINOR__==0 && __GNU_PATCHLEVEL__==0
 1123.98 -class empty_base {
 1123.99 -  bool dummy; 
1123.100 -};
1123.101 -#else
1123.102 -class empty_base {};
1123.103 -#endif
1123.104 -
1123.105 -} // namespace detail
1123.106 -} // namespace boost
1123.107 -
1123.108 -// In this section we supply the xxxx1 and xxxx2 forms of the operator
1123.109 -// templates, which are explicitly targeted at the 1-type-argument and
1123.110 -// 2-type-argument operator forms, respectively. Some compilers get confused
1123.111 -// when inline friend functions are overloaded in namespaces other than the
1123.112 -// global namespace. When BOOST_NO_OPERATORS_IN_NAMESPACE is defined, all of
1123.113 -// these templates must go in the global namespace.
1123.114 -
1123.115 -#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
1123.116 -namespace boost
1123.117 -{
1123.118 -#endif
1123.119 -
1123.120 -//  Basic operator classes (contributed by Dave Abrahams) ------------------//
1123.121 -
1123.122 -//  Note that friend functions defined in a class are implicitly inline.
1123.123 -//  See the C++ std, 11.4 [class.friend] paragraph 5
1123.124 -
1123.125 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.126 -struct less_than_comparable2 : B
1123.127 -{
1123.128 -     friend bool operator<=(const T& x, const U& y) { return !(x > y); }
1123.129 -     friend bool operator>=(const T& x, const U& y) { return !(x < y); }
1123.130 -     friend bool operator>(const U& x, const T& y)  { return y < x; }
1123.131 -     friend bool operator<(const U& x, const T& y)  { return y > x; }
1123.132 -     friend bool operator<=(const U& x, const T& y) { return !(y < x); }
1123.133 -     friend bool operator>=(const U& x, const T& y) { return !(y > x); }
1123.134 -};
1123.135 -
1123.136 -template <class T, class B = ::boost::detail::empty_base>
1123.137 -struct less_than_comparable1 : B
1123.138 -{
1123.139 -     friend bool operator>(const T& x, const T& y)  { return y < x; }
1123.140 -     friend bool operator<=(const T& x, const T& y) { return !(y < x); }
1123.141 -     friend bool operator>=(const T& x, const T& y) { return !(x < y); }
1123.142 -};
1123.143 -
1123.144 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.145 -struct equality_comparable2 : B
1123.146 -{
1123.147 -     friend bool operator==(const U& y, const T& x) { return x == y; }
1123.148 -     friend bool operator!=(const U& y, const T& x) { return !(x == y); }
1123.149 -     friend bool operator!=(const T& y, const U& x) { return !(y == x); }
1123.150 -};
1123.151 -
1123.152 -template <class T, class B = ::boost::detail::empty_base>
1123.153 -struct equality_comparable1 : B
1123.154 -{
1123.155 -     friend bool operator!=(const T& x, const T& y) { return !(x == y); }
1123.156 -};
1123.157 -
1123.158 -// A macro which produces "name_2left" from "name".
1123.159 -#define BOOST_OPERATOR2_LEFT(name) name##2##_##left
1123.160 -
1123.161 -//  NRVO-friendly implementation (contributed by Daniel Frey) ---------------//
1123.162 -
1123.163 -#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
1123.164 -
1123.165 -// This is the optimal implementation for ISO/ANSI C++,
1123.166 -// but it requires the compiler to implement the NRVO.
1123.167 -// If the compiler has no NRVO, this is the best symmetric
1123.168 -// implementation available.
1123.169 -
1123.170 -#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP )                         \
1123.171 -template <class T, class U, class B = ::boost::detail::empty_base>            \
1123.172 -struct NAME##2 : B                                                            \
1123.173 -{                                                                             \
1123.174 -  friend T operator OP( const T& lhs, const U& rhs )                          \
1123.175 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
1123.176 -  friend T operator OP( const U& lhs, const T& rhs )                          \
1123.177 -    { T nrv( rhs ); nrv OP##= lhs; return nrv; }                              \
1123.178 -};                                                                            \
1123.179 -                                                                              \
1123.180 -template <class T, class B = ::boost::detail::empty_base>                     \
1123.181 -struct NAME##1 : B                                                            \
1123.182 -{                                                                             \
1123.183 -  friend T operator OP( const T& lhs, const T& rhs )                          \
1123.184 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
1123.185 -};
1123.186 -
1123.187 -#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP )           \
1123.188 -template <class T, class U, class B = ::boost::detail::empty_base>  \
1123.189 -struct NAME##2 : B                                                  \
1123.190 -{                                                                   \
1123.191 -  friend T operator OP( const T& lhs, const U& rhs )                \
1123.192 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                    \
1123.193 -};                                                                  \
1123.194 -                                                                    \
1123.195 -template <class T, class U, class B = ::boost::detail::empty_base>  \
1123.196 -struct BOOST_OPERATOR2_LEFT(NAME) : B                               \
1123.197 -{                                                                   \
1123.198 -  friend T operator OP( const U& lhs, const T& rhs )                \
1123.199 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                    \
1123.200 -};                                                                  \
1123.201 -                                                                    \
1123.202 -template <class T, class B = ::boost::detail::empty_base>           \
1123.203 -struct NAME##1 : B                                                  \
1123.204 -{                                                                   \
1123.205 -  friend T operator OP( const T& lhs, const T& rhs )                \
1123.206 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                    \
1123.207 -};
1123.208 -
1123.209 -#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
1123.210 -
1123.211 -// For compilers without NRVO the following code is optimal, but not
1123.212 -// symmetric!  Note that the implementation of
1123.213 -// BOOST_OPERATOR2_LEFT(NAME) only looks cool, but doesn't provide
1123.214 -// optimization opportunities to the compiler :)
1123.215 -
1123.216 -#define BOOST_BINARY_OPERATOR_COMMUTATIVE( NAME, OP )                         \
1123.217 -template <class T, class U, class B = ::boost::detail::empty_base>            \
1123.218 -struct NAME##2 : B                                                            \
1123.219 -{                                                                             \
1123.220 -  friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; }       \
1123.221 -  friend T operator OP( const U& lhs, T rhs ) { return rhs OP##= lhs; }       \
1123.222 -};                                                                            \
1123.223 -                                                                              \
1123.224 -template <class T, class B = ::boost::detail::empty_base>                     \
1123.225 -struct NAME##1 : B                                                            \
1123.226 -{                                                                             \
1123.227 -  friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; }       \
1123.228 -};
1123.229 -
1123.230 -#define BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( NAME, OP )               \
1123.231 -template <class T, class U, class B = ::boost::detail::empty_base>      \
1123.232 -struct NAME##2 : B                                                      \
1123.233 -{                                                                       \
1123.234 -  friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; } \
1123.235 -};                                                                      \
1123.236 -                                                                        \
1123.237 -template <class T, class U, class B = ::boost::detail::empty_base>      \
1123.238 -struct BOOST_OPERATOR2_LEFT(NAME) : B                                   \
1123.239 -{                                                                       \
1123.240 -  friend T operator OP( const U& lhs, const T& rhs )                    \
1123.241 -    { return T( lhs ) OP##= rhs; }                                      \
1123.242 -};                                                                      \
1123.243 -                                                                        \
1123.244 -template <class T, class B = ::boost::detail::empty_base>               \
1123.245 -struct NAME##1 : B                                                      \
1123.246 -{                                                                       \
1123.247 -  friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; } \
1123.248 -};
1123.249 -
1123.250 -#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
1123.251 -
1123.252 -BOOST_BINARY_OPERATOR_COMMUTATIVE( multipliable, * )
1123.253 -BOOST_BINARY_OPERATOR_COMMUTATIVE( addable, + )
1123.254 -BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( subtractable, - )
1123.255 -BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( dividable, / )
1123.256 -BOOST_BINARY_OPERATOR_NON_COMMUTATIVE( modable, % )
1123.257 -BOOST_BINARY_OPERATOR_COMMUTATIVE( xorable, ^ )
1123.258 -BOOST_BINARY_OPERATOR_COMMUTATIVE( andable, & )
1123.259 -BOOST_BINARY_OPERATOR_COMMUTATIVE( orable, | )
1123.260 -
1123.261 -#undef BOOST_BINARY_OPERATOR_COMMUTATIVE
1123.262 -#undef BOOST_BINARY_OPERATOR_NON_COMMUTATIVE
1123.263 -#undef BOOST_OPERATOR2_LEFT
1123.264 -
1123.265 -//  incrementable and decrementable contributed by Jeremy Siek
1123.266 -
1123.267 -template <class T, class B = ::boost::detail::empty_base>
1123.268 -struct incrementable : B
1123.269 -{
1123.270 -  friend T operator++(T& x, int)
1123.271 -  {
1123.272 -    incrementable_type nrv(x);
1123.273 -    ++x;
1123.274 -    return nrv;
1123.275 -  }
1123.276 -private: // The use of this typedef works around a Borland bug
1123.277 -  typedef T incrementable_type;
1123.278 -};
1123.279 -
1123.280 -template <class T, class B = ::boost::detail::empty_base>
1123.281 -struct decrementable : B
1123.282 -{
1123.283 -  friend T operator--(T& x, int)
1123.284 -  {
1123.285 -    decrementable_type nrv(x);
1123.286 -    --x;
1123.287 -    return nrv;
1123.288 -  }
1123.289 -private: // The use of this typedef works around a Borland bug
1123.290 -  typedef T decrementable_type;
1123.291 -};
1123.292 -
1123.293 -//  Iterator operator classes (contributed by Jeremy Siek) ------------------//
1123.294 -
1123.295 -template <class T, class P, class B = ::boost::detail::empty_base>
1123.296 -struct dereferenceable : B
1123.297 -{
1123.298 -  P operator->() const
1123.299 -  { 
1123.300 -    return &*static_cast<const T&>(*this); 
1123.301 -  }
1123.302 -};
1123.303 -
1123.304 -template <class T, class I, class R, class B = ::boost::detail::empty_base>
1123.305 -struct indexable : B
1123.306 -{
1123.307 -  R operator[](I n) const
1123.308 -  {
1123.309 -    return *(static_cast<const T&>(*this) + n);
1123.310 -  }
1123.311 -};
1123.312 -
1123.313 -//  More operator classes (contributed by Daryle Walker) --------------------//
1123.314 -//  (NRVO-friendly implementation contributed by Daniel Frey) ---------------//
1123.315 -
1123.316 -#if defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
1123.317 -
1123.318 -#define BOOST_BINARY_OPERATOR( NAME, OP )                                     \
1123.319 -template <class T, class U, class B = ::boost::detail::empty_base>            \
1123.320 -struct NAME##2 : B                                                            \
1123.321 -{                                                                             \
1123.322 -  friend T operator OP( const T& lhs, const U& rhs )                          \
1123.323 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
1123.324 -};                                                                            \
1123.325 -                                                                              \
1123.326 -template <class T, class B = ::boost::detail::empty_base>                     \
1123.327 -struct NAME##1 : B                                                            \
1123.328 -{                                                                             \
1123.329 -  friend T operator OP( const T& lhs, const T& rhs )                          \
1123.330 -    { T nrv( lhs ); nrv OP##= rhs; return nrv; }                              \
1123.331 -};
1123.332 -
1123.333 -#else // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
1123.334 -
1123.335 -#define BOOST_BINARY_OPERATOR( NAME, OP )                                     \
1123.336 -template <class T, class U, class B = ::boost::detail::empty_base>            \
1123.337 -struct NAME##2 : B                                                            \
1123.338 -{                                                                             \
1123.339 -  friend T operator OP( T lhs, const U& rhs ) { return lhs OP##= rhs; }       \
1123.340 -};                                                                            \
1123.341 -                                                                              \
1123.342 -template <class T, class B = ::boost::detail::empty_base>                     \
1123.343 -struct NAME##1 : B                                                            \
1123.344 -{                                                                             \
1123.345 -  friend T operator OP( T lhs, const T& rhs ) { return lhs OP##= rhs; }       \
1123.346 -};
1123.347 -
1123.348 -#endif // defined(BOOST_HAS_NRVO) || defined(BOOST_FORCE_SYMMETRIC_OPERATORS)
1123.349 -
1123.350 -BOOST_BINARY_OPERATOR( left_shiftable, << )
1123.351 -BOOST_BINARY_OPERATOR( right_shiftable, >> )
1123.352 -
1123.353 -#undef BOOST_BINARY_OPERATOR
1123.354 -
1123.355 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.356 -struct equivalent2 : B
1123.357 -{
1123.358 -  friend bool operator==(const T& x, const U& y)
1123.359 -  {
1123.360 -    return !(x < y) && !(x > y);
1123.361 -  }
1123.362 -};
1123.363 -
1123.364 -template <class T, class B = ::boost::detail::empty_base>
1123.365 -struct equivalent1 : B
1123.366 -{
1123.367 -  friend bool operator==(const T&x, const T&y)
1123.368 -  {
1123.369 -    return !(x < y) && !(y < x);
1123.370 -  }
1123.371 -};
1123.372 -
1123.373 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.374 -struct partially_ordered2 : B
1123.375 -{
1123.376 -  friend bool operator<=(const T& x, const U& y)
1123.377 -    { return (x < y) || (x == y); }
1123.378 -  friend bool operator>=(const T& x, const U& y)
1123.379 -    { return (x > y) || (x == y); }
1123.380 -  friend bool operator>(const U& x, const T& y)
1123.381 -    { return y < x; }
1123.382 -  friend bool operator<(const U& x, const T& y)
1123.383 -    { return y > x; }
1123.384 -  friend bool operator<=(const U& x, const T& y)
1123.385 -    { return (y > x) || (y == x); }
1123.386 -  friend bool operator>=(const U& x, const T& y)
1123.387 -    { return (y < x) || (y == x); }
1123.388 -};
1123.389 -
1123.390 -template <class T, class B = ::boost::detail::empty_base>
1123.391 -struct partially_ordered1 : B
1123.392 -{
1123.393 -  friend bool operator>(const T& x, const T& y)
1123.394 -    { return y < x; }
1123.395 -  friend bool operator<=(const T& x, const T& y)
1123.396 -    { return (x < y) || (x == y); }
1123.397 -  friend bool operator>=(const T& x, const T& y)
1123.398 -    { return (y < x) || (x == y); }
1123.399 -};
1123.400 -
1123.401 -//  Combined operator classes (contributed by Daryle Walker) ----------------//
1123.402 -
1123.403 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.404 -struct totally_ordered2
1123.405 -    : less_than_comparable2<T, U
1123.406 -    , equality_comparable2<T, U, B
1123.407 -      > > {};
1123.408 -
1123.409 -template <class T, class B = ::boost::detail::empty_base>
1123.410 -struct totally_ordered1
1123.411 -    : less_than_comparable1<T
1123.412 -    , equality_comparable1<T, B
1123.413 -      > > {};
1123.414 -
1123.415 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.416 -struct additive2
1123.417 -    : addable2<T, U
1123.418 -    , subtractable2<T, U, B
1123.419 -      > > {};
1123.420 -
1123.421 -template <class T, class B = ::boost::detail::empty_base>
1123.422 -struct additive1
1123.423 -    : addable1<T
1123.424 -    , subtractable1<T, B
1123.425 -      > > {};
1123.426 -
1123.427 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.428 -struct multiplicative2
1123.429 -    : multipliable2<T, U
1123.430 -    , dividable2<T, U, B
1123.431 -      > > {};
1123.432 -
1123.433 -template <class T, class B = ::boost::detail::empty_base>
1123.434 -struct multiplicative1
1123.435 -    : multipliable1<T
1123.436 -    , dividable1<T, B
1123.437 -      > > {};
1123.438 -
1123.439 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.440 -struct integer_multiplicative2
1123.441 -    : multiplicative2<T, U
1123.442 -    , modable2<T, U, B
1123.443 -      > > {};
1123.444 -
1123.445 -template <class T, class B = ::boost::detail::empty_base>
1123.446 -struct integer_multiplicative1
1123.447 -    : multiplicative1<T
1123.448 -    , modable1<T, B
1123.449 -      > > {};
1123.450 -
1123.451 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.452 -struct arithmetic2
1123.453 -    : additive2<T, U
1123.454 -    , multiplicative2<T, U, B
1123.455 -      > > {};
1123.456 -
1123.457 -template <class T, class B = ::boost::detail::empty_base>
1123.458 -struct arithmetic1
1123.459 -    : additive1<T
1123.460 -    , multiplicative1<T, B
1123.461 -      > > {};
1123.462 -
1123.463 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.464 -struct integer_arithmetic2
1123.465 -    : additive2<T, U
1123.466 -    , integer_multiplicative2<T, U, B
1123.467 -      > > {};
1123.468 -
1123.469 -template <class T, class B = ::boost::detail::empty_base>
1123.470 -struct integer_arithmetic1
1123.471 -    : additive1<T
1123.472 -    , integer_multiplicative1<T, B
1123.473 -      > > {};
1123.474 -
1123.475 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.476 -struct bitwise2
1123.477 -    : xorable2<T, U
1123.478 -    , andable2<T, U
1123.479 -    , orable2<T, U, B
1123.480 -      > > > {};
1123.481 -
1123.482 -template <class T, class B = ::boost::detail::empty_base>
1123.483 -struct bitwise1
1123.484 -    : xorable1<T
1123.485 -    , andable1<T
1123.486 -    , orable1<T, B
1123.487 -      > > > {};
1123.488 -
1123.489 -template <class T, class B = ::boost::detail::empty_base>
1123.490 -struct unit_steppable
1123.491 -    : incrementable<T
1123.492 -    , decrementable<T, B
1123.493 -      > > {};
1123.494 -
1123.495 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.496 -struct shiftable2
1123.497 -    : left_shiftable2<T, U
1123.498 -    , right_shiftable2<T, U, B
1123.499 -      > > {};
1123.500 -
1123.501 -template <class T, class B = ::boost::detail::empty_base>
1123.502 -struct shiftable1
1123.503 -    : left_shiftable1<T
1123.504 -    , right_shiftable1<T, B
1123.505 -      > > {};
1123.506 -
1123.507 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.508 -struct ring_operators2
1123.509 -    : additive2<T, U
1123.510 -    , subtractable2_left<T, U
1123.511 -    , multipliable2<T, U, B
1123.512 -      > > > {};
1123.513 -
1123.514 -template <class T, class B = ::boost::detail::empty_base>
1123.515 -struct ring_operators1
1123.516 -    : additive1<T
1123.517 -    , multipliable1<T, B
1123.518 -      > > {};
1123.519 -
1123.520 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.521 -struct ordered_ring_operators2
1123.522 -    : ring_operators2<T, U
1123.523 -    , totally_ordered2<T, U, B
1123.524 -      > > {};
1123.525 -
1123.526 -template <class T, class B = ::boost::detail::empty_base>
1123.527 -struct ordered_ring_operators1
1123.528 -    : ring_operators1<T
1123.529 -    , totally_ordered1<T, B
1123.530 -      > > {};
1123.531 -
1123.532 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.533 -struct field_operators2
1123.534 -    : ring_operators2<T, U
1123.535 -    , dividable2<T, U
1123.536 -    , dividable2_left<T, U, B
1123.537 -      > > > {};
1123.538 -
1123.539 -template <class T, class B = ::boost::detail::empty_base>
1123.540 -struct field_operators1
1123.541 -    : ring_operators1<T
1123.542 -    , dividable1<T, B
1123.543 -      > > {};
1123.544 -
1123.545 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.546 -struct ordered_field_operators2
1123.547 -    : field_operators2<T, U
1123.548 -    , totally_ordered2<T, U, B
1123.549 -      > > {};
1123.550 -
1123.551 -template <class T, class B = ::boost::detail::empty_base>
1123.552 -struct ordered_field_operators1
1123.553 -    : field_operators1<T
1123.554 -    , totally_ordered1<T, B
1123.555 -      > > {};
1123.556 -
1123.557 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.558 -struct euclidian_ring_operators2
1123.559 -    : ring_operators2<T, U
1123.560 -    , dividable2<T, U
1123.561 -    , dividable2_left<T, U
1123.562 -    , modable2<T, U
1123.563 -    , modable2_left<T, U, B
1123.564 -      > > > > > {};
1123.565 -
1123.566 -template <class T, class B = ::boost::detail::empty_base>
1123.567 -struct euclidian_ring_operators1
1123.568 -    : ring_operators1<T
1123.569 -    , dividable1<T
1123.570 -    , modable1<T, B
1123.571 -      > > > {};
1123.572 -
1123.573 -template <class T, class U, class B = ::boost::detail::empty_base>
1123.574 -struct ordered_euclidian_ring_operators2
1123.575 -    : totally_ordered2<T, U
1123.576 -    , euclidian_ring_operators2<T, U, B
1123.577 -      > > {};
1123.578 -
1123.579 -template <class T, class B = ::boost::detail::empty_base>
1123.580 -struct ordered_euclidian_ring_operators1
1123.581 -    : totally_ordered1<T
1123.582 -    , euclidian_ring_operators1<T, B
1123.583 -      > > {};
1123.584 -      
1123.585 -template <class T, class P, class B = ::boost::detail::empty_base>
1123.586 -struct input_iteratable
1123.587 -    : equality_comparable1<T
1123.588 -    , incrementable<T
1123.589 -    , dereferenceable<T, P, B
1123.590 -      > > > {};
1123.591 -
1123.592 -template <class T, class B = ::boost::detail::empty_base>
1123.593 -struct output_iteratable
1123.594 -    : incrementable<T, B
1123.595 -      > {};
1123.596 -
1123.597 -template <class T, class P, class B = ::boost::detail::empty_base>
1123.598 -struct forward_iteratable
1123.599 -    : input_iteratable<T, P, B
1123.600 -      > {};
1123.601 -
1123.602 -template <class T, class P, class B = ::boost::detail::empty_base>
1123.603 -struct bidirectional_iteratable
1123.604 -    : forward_iteratable<T, P
1123.605 -    , decrementable<T, B
1123.606 -      > > {};
1123.607 -
1123.608 -//  To avoid repeated derivation from equality_comparable,
1123.609 -//  which is an indirect base class of bidirectional_iterable,
1123.610 -//  random_access_iteratable must not be derived from totally_ordered1
1123.611 -//  but from less_than_comparable1 only. (Helmut Zeisel, 02-Dec-2001)
1123.612 -template <class T, class P, class D, class R, class B = ::boost::detail::empty_base>
1123.613 -struct random_access_iteratable
1123.614 -    : bidirectional_iteratable<T, P
1123.615 -    , less_than_comparable1<T
1123.616 -    , additive2<T, D
1123.617 -    , indexable<T, D, R, B
1123.618 -      > > > > {};
1123.619 -
1123.620 -#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
1123.621 -} // namespace boost
1123.622 -#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
1123.623 -
1123.624 -
1123.625 -// BOOST_IMPORT_TEMPLATE1 .. BOOST_IMPORT_TEMPLATE4 -
1123.626 -//
1123.627 -// When BOOST_NO_OPERATORS_IN_NAMESPACE is defined we need a way to import an
1123.628 -// operator template into the boost namespace. BOOST_IMPORT_TEMPLATE1 is used
1123.629 -// for one-argument forms of operator templates; BOOST_IMPORT_TEMPLATE2 for
1123.630 -// two-argument forms. Note that these macros expect to be invoked from within
1123.631 -// boost.
1123.632 -
1123.633 -#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
1123.634 -
1123.635 -  // The template is already in boost so we have nothing to do.
1123.636 -# define BOOST_IMPORT_TEMPLATE4(template_name)
1123.637 -# define BOOST_IMPORT_TEMPLATE3(template_name)
1123.638 -# define BOOST_IMPORT_TEMPLATE2(template_name)
1123.639 -# define BOOST_IMPORT_TEMPLATE1(template_name)
1123.640 -
1123.641 -#else // BOOST_NO_OPERATORS_IN_NAMESPACE
1123.642 -
1123.643 -#  ifndef BOOST_NO_USING_TEMPLATE
1123.644 -
1123.645 -     // Bring the names in with a using-declaration
1123.646 -     // to avoid stressing the compiler.
1123.647 -#    define BOOST_IMPORT_TEMPLATE4(template_name) using ::template_name;
1123.648 -#    define BOOST_IMPORT_TEMPLATE3(template_name) using ::template_name;
1123.649 -#    define BOOST_IMPORT_TEMPLATE2(template_name) using ::template_name;
1123.650 -#    define BOOST_IMPORT_TEMPLATE1(template_name) using ::template_name;
1123.651 -
1123.652 -#  else
1123.653 -
1123.654 -     // Otherwise, because a Borland C++ 5.5 bug prevents a using declaration
1123.655 -     // from working, we are forced to use inheritance for that compiler.
1123.656 -#    define BOOST_IMPORT_TEMPLATE4(template_name)                                          \
1123.657 -     template <class T, class U, class V, class W, class B = ::boost::detail::empty_base>  \
1123.658 -     struct template_name : ::template_name<T, U, V, W, B> {};
1123.659 -
1123.660 -#    define BOOST_IMPORT_TEMPLATE3(template_name)                                 \
1123.661 -     template <class T, class U, class V, class B = ::boost::detail::empty_base>  \
1123.662 -     struct template_name : ::template_name<T, U, V, B> {};
1123.663 -
1123.664 -#    define BOOST_IMPORT_TEMPLATE2(template_name)                              \
1123.665 -     template <class T, class U, class B = ::boost::detail::empty_base>        \
1123.666 -     struct template_name : ::template_name<T, U, B> {};
1123.667 -
1123.668 -#    define BOOST_IMPORT_TEMPLATE1(template_name)                              \
1123.669 -     template <class T, class B = ::boost::detail::empty_base>                 \
1123.670 -     struct template_name : ::template_name<T, B> {};
1123.671 -
1123.672 -#  endif // BOOST_NO_USING_TEMPLATE
1123.673 -
1123.674 -#endif // BOOST_NO_OPERATORS_IN_NAMESPACE
1123.675 -
1123.676 -//
1123.677 -// Here's where we put it all together, defining the xxxx forms of the templates
1123.678 -// in namespace boost. We also define specializations of is_chained_base<> for
1123.679 -// the xxxx, xxxx1, and xxxx2 templates, importing them into boost:: as
1123.680 -// necessary.
1123.681 -//
1123.682 -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1123.683 -
1123.684 -// is_chained_base<> - a traits class used to distinguish whether an operator
1123.685 -// template argument is being used for base class chaining, or is specifying a
1123.686 -// 2nd argument type.
1123.687 -
1123.688 -namespace boost {
1123.689 -// A type parameter is used instead of a plain bool because Borland's compiler
1123.690 -// didn't cope well with the more obvious non-type template parameter.
1123.691 -namespace detail {
1123.692 -  struct true_t {};
1123.693 -  struct false_t {};
1123.694 -} // namespace detail
1123.695 -
1123.696 -// Unspecialized version assumes that most types are not being used for base
1123.697 -// class chaining. We specialize for the operator templates defined in this
1123.698 -// library.
1123.699 -template<class T> struct is_chained_base {
1123.700 -  typedef ::boost::detail::false_t value;
1123.701 -};
1123.702 -
1123.703 -} // namespace boost
1123.704 -
1123.705 -// Import a 4-type-argument operator template into boost (if necessary) and
1123.706 -// provide a specialization of 'is_chained_base<>' for it.
1123.707 -# define BOOST_OPERATOR_TEMPLATE4(template_name4)                     \
1123.708 -  BOOST_IMPORT_TEMPLATE4(template_name4)                              \
1123.709 -  template<class T, class U, class V, class W, class B>               \
1123.710 -  struct is_chained_base< ::boost::template_name4<T, U, V, W, B> > {  \
1123.711 -    typedef ::boost::detail::true_t value;                            \
1123.712 -  };
1123.713 -
1123.714 -// Import a 3-type-argument operator template into boost (if necessary) and
1123.715 -// provide a specialization of 'is_chained_base<>' for it.
1123.716 -# define BOOST_OPERATOR_TEMPLATE3(template_name3)                     \
1123.717 -  BOOST_IMPORT_TEMPLATE3(template_name3)                              \
1123.718 -  template<class T, class U, class V, class B>                        \
1123.719 -  struct is_chained_base< ::boost::template_name3<T, U, V, B> > {     \
1123.720 -    typedef ::boost::detail::true_t value;                            \
1123.721 -  };
1123.722 -
1123.723 -// Import a 2-type-argument operator template into boost (if necessary) and
1123.724 -// provide a specialization of 'is_chained_base<>' for it.
1123.725 -# define BOOST_OPERATOR_TEMPLATE2(template_name2)                  \
1123.726 -  BOOST_IMPORT_TEMPLATE2(template_name2)                           \
1123.727 -  template<class T, class U, class B>                              \
1123.728 -  struct is_chained_base< ::boost::template_name2<T, U, B> > {     \
1123.729 -    typedef ::boost::detail::true_t value;                         \
1123.730 -  };
1123.731 -
1123.732 -// Import a 1-type-argument operator template into boost (if necessary) and
1123.733 -// provide a specialization of 'is_chained_base<>' for it.
1123.734 -# define BOOST_OPERATOR_TEMPLATE1(template_name1)                  \
1123.735 -  BOOST_IMPORT_TEMPLATE1(template_name1)                           \
1123.736 -  template<class T, class B>                                       \
1123.737 -  struct is_chained_base< ::boost::template_name1<T, B> > {        \
1123.738 -    typedef ::boost::detail::true_t value;                         \
1123.739 -  };
1123.740 -
1123.741 -// BOOST_OPERATOR_TEMPLATE(template_name) defines template_name<> such that it
1123.742 -// can be used for specifying both 1-argument and 2-argument forms. Requires the
1123.743 -// existence of two previously defined class templates named '<template_name>1'
1123.744 -// and '<template_name>2' which must implement the corresponding 1- and 2-
1123.745 -// argument forms.
1123.746 -//
1123.747 -// The template type parameter O == is_chained_base<U>::value is used to
1123.748 -// distinguish whether the 2nd argument to <template_name> is being used for
1123.749 -// base class chaining from another boost operator template or is describing a
1123.750 -// 2nd operand type. O == true_t only when U is actually an another operator
1123.751 -// template from the library. Partial specialization is used to select an
1123.752 -// implementation in terms of either '<template_name>1' or '<template_name>2'.
1123.753 -//
1123.754 -
1123.755 -# define BOOST_OPERATOR_TEMPLATE(template_name)                    \
1123.756 -template <class T                                                  \
1123.757 -         ,class U = T                                              \
1123.758 -         ,class B = ::boost::detail::empty_base                    \
1123.759 -         ,class O = typename is_chained_base<U>::value             \
1123.760 -         >                                                         \
1123.761 -struct template_name : template_name##2<T, U, B> {};               \
1123.762 -                                                                   \
1123.763 -template<class T, class U, class B>                                \
1123.764 -struct template_name<T, U, B, ::boost::detail::true_t>             \
1123.765 -  : template_name##1<T, U> {};                                     \
1123.766 -                                                                   \
1123.767 -template <class T, class B>                                        \
1123.768 -struct template_name<T, T, B, ::boost::detail::false_t>            \
1123.769 -  : template_name##1<T, B> {};                                     \
1123.770 -                                                                   \
1123.771 -template<class T, class U, class B, class O>                       \
1123.772 -struct is_chained_base< ::boost::template_name<T, U, B, O> > {     \
1123.773 -  typedef ::boost::detail::true_t value;                           \
1123.774 -};                                                                 \
1123.775 -                                                                   \
1123.776 -BOOST_OPERATOR_TEMPLATE2(template_name##2)                         \
1123.777 -BOOST_OPERATOR_TEMPLATE1(template_name##1)
1123.778 -
1123.779 -
1123.780 -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1123.781 -
1123.782 -#  define BOOST_OPERATOR_TEMPLATE4(template_name4) \
1123.783 -        BOOST_IMPORT_TEMPLATE4(template_name4)
1123.784 -#  define BOOST_OPERATOR_TEMPLATE3(template_name3) \
1123.785 -        BOOST_IMPORT_TEMPLATE3(template_name3)
1123.786 -#  define BOOST_OPERATOR_TEMPLATE2(template_name2) \
1123.787 -        BOOST_IMPORT_TEMPLATE2(template_name2)
1123.788 -#  define BOOST_OPERATOR_TEMPLATE1(template_name1) \
1123.789 -        BOOST_IMPORT_TEMPLATE1(template_name1)
1123.790 -
1123.791 -   // In this case we can only assume that template_name<> is equivalent to the
1123.792 -   // more commonly needed template_name1<> form.
1123.793 -#  define BOOST_OPERATOR_TEMPLATE(template_name)                   \
1123.794 -   template <class T, class B = ::boost::detail::empty_base>       \
1123.795 -   struct template_name : template_name##1<T, B> {};
1123.796 -
1123.797 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1123.798 -
1123.799 -namespace boost {
1123.800 -    
1123.801 -BOOST_OPERATOR_TEMPLATE(less_than_comparable)
1123.802 -BOOST_OPERATOR_TEMPLATE(equality_comparable)
1123.803 -BOOST_OPERATOR_TEMPLATE(multipliable)
1123.804 -BOOST_OPERATOR_TEMPLATE(addable)
1123.805 -BOOST_OPERATOR_TEMPLATE(subtractable)
1123.806 -BOOST_OPERATOR_TEMPLATE2(subtractable2_left)
1123.807 -BOOST_OPERATOR_TEMPLATE(dividable)
1123.808 -BOOST_OPERATOR_TEMPLATE2(dividable2_left)
1123.809 -BOOST_OPERATOR_TEMPLATE(modable)
1123.810 -BOOST_OPERATOR_TEMPLATE2(modable2_left)
1123.811 -BOOST_OPERATOR_TEMPLATE(xorable)
1123.812 -BOOST_OPERATOR_TEMPLATE(andable)
1123.813 -BOOST_OPERATOR_TEMPLATE(orable)
1123.814 -
1123.815 -BOOST_OPERATOR_TEMPLATE1(incrementable)
1123.816 -BOOST_OPERATOR_TEMPLATE1(decrementable)
1123.817 -
1123.818 -BOOST_OPERATOR_TEMPLATE2(dereferenceable)
1123.819 -BOOST_OPERATOR_TEMPLATE3(indexable)
1123.820 -
1123.821 -BOOST_OPERATOR_TEMPLATE(left_shiftable)
1123.822 -BOOST_OPERATOR_TEMPLATE(right_shiftable)
1123.823 -BOOST_OPERATOR_TEMPLATE(equivalent)
1123.824 -BOOST_OPERATOR_TEMPLATE(partially_ordered)
1123.825 -
1123.826 -BOOST_OPERATOR_TEMPLATE(totally_ordered)
1123.827 -BOOST_OPERATOR_TEMPLATE(additive)
1123.828 -BOOST_OPERATOR_TEMPLATE(multiplicative)
1123.829 -BOOST_OPERATOR_TEMPLATE(integer_multiplicative)
1123.830 -BOOST_OPERATOR_TEMPLATE(arithmetic)
1123.831 -BOOST_OPERATOR_TEMPLATE(integer_arithmetic)
1123.832 -BOOST_OPERATOR_TEMPLATE(bitwise)
1123.833 -BOOST_OPERATOR_TEMPLATE1(unit_steppable)
1123.834 -BOOST_OPERATOR_TEMPLATE(shiftable)
1123.835 -BOOST_OPERATOR_TEMPLATE(ring_operators)
1123.836 -BOOST_OPERATOR_TEMPLATE(ordered_ring_operators)
1123.837 -BOOST_OPERATOR_TEMPLATE(field_operators)
1123.838 -BOOST_OPERATOR_TEMPLATE(ordered_field_operators)
1123.839 -BOOST_OPERATOR_TEMPLATE(euclidian_ring_operators)
1123.840 -BOOST_OPERATOR_TEMPLATE(ordered_euclidian_ring_operators)
1123.841 -BOOST_OPERATOR_TEMPLATE2(input_iteratable)
1123.842 -BOOST_OPERATOR_TEMPLATE1(output_iteratable)
1123.843 -BOOST_OPERATOR_TEMPLATE2(forward_iteratable)
1123.844 -BOOST_OPERATOR_TEMPLATE2(bidirectional_iteratable)
1123.845 -BOOST_OPERATOR_TEMPLATE4(random_access_iteratable)
1123.846 -
1123.847 -#undef BOOST_OPERATOR_TEMPLATE
1123.848 -#undef BOOST_OPERATOR_TEMPLATE4
1123.849 -#undef BOOST_OPERATOR_TEMPLATE3
1123.850 -#undef BOOST_OPERATOR_TEMPLATE2
1123.851 -#undef BOOST_OPERATOR_TEMPLATE1
1123.852 -#undef BOOST_IMPORT_TEMPLATE1
1123.853 -#undef BOOST_IMPORT_TEMPLATE2
1123.854 -#undef BOOST_IMPORT_TEMPLATE3
1123.855 -#undef BOOST_IMPORT_TEMPLATE4
1123.856 -
1123.857 -// The following 'operators' classes can only be used portably if the derived class
1123.858 -// declares ALL of the required member operators.
1123.859 -template <class T, class U>
1123.860 -struct operators2
1123.861 -    : totally_ordered2<T,U
1123.862 -    , integer_arithmetic2<T,U
1123.863 -    , bitwise2<T,U
1123.864 -      > > > {};
1123.865 -
1123.866 -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1123.867 -template <class T, class U = T>
1123.868 -struct operators : operators2<T, U> {};
1123.869 -
1123.870 -template <class T> struct operators<T, T>
1123.871 -#else
1123.872 -template <class T> struct operators
1123.873 -#endif
1123.874 -    : totally_ordered<T
1123.875 -    , integer_arithmetic<T
1123.876 -    , bitwise<T
1123.877 -    , unit_steppable<T
1123.878 -      > > > > {};
1123.879 -
1123.880 -//  Iterator helper classes (contributed by Jeremy Siek) -------------------//
1123.881 -//  (Input and output iterator helpers contributed by Daryle Walker) -------//
1123.882 -//  (Changed to use combined operator classes by Daryle Walker) ------------//
1123.883 -template <class T,
1123.884 -          class V,
1123.885 -          class D = std::ptrdiff_t,
1123.886 -          class P = V const *,
1123.887 -          class R = V const &>
1123.888 -struct input_iterator_helper
1123.889 -  : input_iteratable<T, P
1123.890 -  , boost::iterator<std::input_iterator_tag, V, D, P, R
1123.891 -    > > {};
1123.892 -
1123.893 -template<class T>
1123.894 -struct output_iterator_helper
1123.895 -  : output_iteratable<T
1123.896 -  , boost::iterator<std::output_iterator_tag, void, void, void, void
1123.897 -  > >
1123.898 -{
1123.899 -  T& operator*()  { return static_cast<T&>(*this); }
1123.900 -  T& operator++() { return static_cast<T&>(*this); }
1123.901 -};
1123.902 -
1123.903 -template <class T,
1123.904 -          class V,
1123.905 -          class D = std::ptrdiff_t,
1123.906 -          class P = V*,
1123.907 -          class R = V&>
1123.908 -struct forward_iterator_helper
1123.909 -  : forward_iteratable<T, P
1123.910 -  , boost::iterator<std::forward_iterator_tag, V, D, P, R
1123.911 -    > > {};
1123.912 -
1123.913 -template <class T,
1123.914 -          class V,
1123.915 -          class D = std::ptrdiff_t,
1123.916 -          class P = V*,
1123.917 -          class R = V&>
1123.918 -struct bidirectional_iterator_helper
1123.919 -  : bidirectional_iteratable<T, P
1123.920 -  , boost::iterator<std::bidirectional_iterator_tag, V, D, P, R
1123.921 -    > > {};
1123.922 -
1123.923 -template <class T,
1123.924 -          class V, 
1123.925 -          class D = std::ptrdiff_t,
1123.926 -          class P = V*,
1123.927 -          class R = V&>
1123.928 -struct random_access_iterator_helper
1123.929 -  : random_access_iteratable<T, P, D, R
1123.930 -  , boost::iterator<std::random_access_iterator_tag, V, D, P, R
1123.931 -    > >
1123.932 -{
1123.933 -  friend D requires_difference_operator(const T& x, const T& y) {
1123.934 -    return x - y;
1123.935 -  }
1123.936 -}; // random_access_iterator_helper
1123.937 -
1123.938 -} // namespace boost
1123.939 -
1123.940 -#if defined(__sgi) && !defined(__GNUC__)
1123.941 -#pragma reset woff 1234
1123.942 -#endif
1123.943 -
1123.944 -#endif // BOOST_OPERATORS_HPP
  1124.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1124.2 +++ b/epoc32/include/stdapis/boost/optional.hpp	Wed Mar 31 12:27:01 2010 +0100
  1124.3 @@ -0,0 +1,922 @@
  1124.4 +// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
  1124.5 +//
  1124.6 +// Use, modification, and distribution is subject to the Boost Software
  1124.7 +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1124.8 +// http://www.boost.org/LICENSE_1_0.txt)
  1124.9 +//
 1124.10 +// See http://www.boost.org/lib/optional for documentation.
 1124.11 +//
 1124.12 +// You are welcome to contact the author at:
 1124.13 +//  fernando_cacciola@hotmail.com
 1124.14 +//
 1124.15 +#ifndef BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
 1124.16 +#define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
 1124.17 +
 1124.18 +#include<new>
 1124.19 +#include<algorithm>
 1124.20 +
 1124.21 +#include "boost/config.hpp"
 1124.22 +#include "boost/assert.hpp"
 1124.23 +#include "boost/type.hpp"
 1124.24 +#include "boost/type_traits/alignment_of.hpp"
 1124.25 +#include "boost/type_traits/type_with_alignment.hpp"
 1124.26 +#include "boost/type_traits/remove_reference.hpp"
 1124.27 +#include "boost/type_traits/is_reference.hpp"
 1124.28 +#include "boost/mpl/if.hpp"
 1124.29 +#include "boost/mpl/bool.hpp"
 1124.30 +#include "boost/mpl/not.hpp"
 1124.31 +#include "boost/detail/reference_content.hpp"
 1124.32 +#include "boost/none.hpp"
 1124.33 +#include "boost/utility/compare_pointees.hpp"
 1124.34 +
 1124.35 +#include "boost/optional/optional_fwd.hpp"
 1124.36 +
 1124.37 +#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
 1124.38 +// VC6.0 has the following bug:
 1124.39 +//   When a templated assignment operator exist, an implicit conversion
 1124.40 +//   constructing an optional<T> is used when assigment of the form:
 1124.41 +//     optional<T> opt ; opt = T(...);
 1124.42 +//   is compiled.
 1124.43 +//   However, optional's ctor is _explicit_ and the assignemt shouldn't compile.
 1124.44 +//   Therefore, for VC6.0 templated assignment is disabled.
 1124.45 +//
 1124.46 +#define BOOST_OPTIONAL_NO_CONVERTING_ASSIGNMENT
 1124.47 +#endif
 1124.48 +
 1124.49 +#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
 1124.50 +// VC7.0 has the following bug:
 1124.51 +//   When both a non-template and a template copy-ctor exist
 1124.52 +//   and the templated version is made 'explicit', the explicit is also
 1124.53 +//   given to the non-templated version, making the class non-implicitely-copyable.
 1124.54 +//
 1124.55 +#define BOOST_OPTIONAL_NO_CONVERTING_COPY_CTOR
 1124.56 +#endif
 1124.57 +
 1124.58 +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=700)
 1124.59 +// AFAICT only VC7.1 correctly resolves the overload set
 1124.60 +// that includes the in-place factory taking functions,
 1124.61 +// so for the other VC versions, in-place factory support
 1124.62 +// is disabled
 1124.63 +#define BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
 1124.64 +#endif
 1124.65 +
 1124.66 +#if BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
 1124.67 +// BCB (5.5.1) cannot parse the nested template struct in an inplace factory.
 1124.68 +#define BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
 1124.69 +#endif
 1124.70 +
 1124.71 +#if !defined(BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT) \
 1124.72 +    && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581) )
 1124.73 +// BCB (up to 5.64) has the following bug:
 1124.74 +//   If there is a member function/operator template of the form
 1124.75 +//     template<class Expr> mfunc( Expr expr ) ;
 1124.76 +//   some calls are resolved to this even if there are other better matches.
 1124.77 +//   The effect of this bug is that calls to converting ctors and assignments
 1124.78 +//   are incrorrectly sink to this general catch-all member function template as shown above.
 1124.79 +#define BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
 1124.80 +#endif
 1124.81 +
 1124.82 +// Daniel Wallin discovered that bind/apply.hpp badly interacts with the apply<>
 1124.83 +// member template of a factory as used in the optional<> implementation.
 1124.84 +// He proposed this simple fix which is to move the call to apply<> outside
 1124.85 +// namespace boost.
 1124.86 +namespace boost_optional_detail
 1124.87 +{
 1124.88 +  template <class T, class Factory>
 1124.89 +  void construct(Factory const& factory, void* address)
 1124.90 +  {
 1124.91 +    factory.BOOST_NESTED_TEMPLATE apply<T>(address);
 1124.92 +  }
 1124.93 +}
 1124.94 +
 1124.95 +
 1124.96 +namespace boost {
 1124.97 +
 1124.98 +class in_place_factory_base ;
 1124.99 +class typed_in_place_factory_base ;
1124.100 +
1124.101 +namespace optional_detail {
1124.102 +
1124.103 +// This local class is used instead of that in "aligned_storage.hpp"
1124.104 +// because I've found the 'official' class to ICE BCB5.5
1124.105 +// when some types are used with optional<>
1124.106 +// (due to sizeof() passed down as a non-type template parameter)
1124.107 +template <class T>
1124.108 +class aligned_storage
1124.109 +{
1124.110 +    // Borland ICEs if unnamed unions are used for this!
1124.111 +    union dummy_u
1124.112 +    {
1124.113 +        char data[ sizeof(T) ];
1124.114 +        BOOST_DEDUCED_TYPENAME type_with_alignment<
1124.115 +          ::boost::alignment_of<T>::value >::type aligner_;
1124.116 +    } dummy_ ;
1124.117 +
1124.118 +  public:
1124.119 +
1124.120 +    void const* address() const { return &dummy_.data[0]; }
1124.121 +    void      * address()       { return &dummy_.data[0]; }
1124.122 +} ;
1124.123 +
1124.124 +template<class T>
1124.125 +struct types_when_isnt_ref
1124.126 +{
1124.127 +  typedef T const& reference_const_type ;
1124.128 +  typedef T &      reference_type ;
1124.129 +  typedef T const* pointer_const_type ;
1124.130 +  typedef T *      pointer_type ;
1124.131 +  typedef T const& argument_type ;
1124.132 +} ;
1124.133 +template<class T>
1124.134 +struct types_when_is_ref
1124.135 +{
1124.136 +  typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type raw_type ;
1124.137 +
1124.138 +  typedef raw_type& reference_const_type ;
1124.139 +  typedef raw_type& reference_type ;
1124.140 +  typedef raw_type* pointer_const_type ;
1124.141 +  typedef raw_type* pointer_type ;
1124.142 +  typedef raw_type& argument_type ;
1124.143 +} ;
1124.144 +
1124.145 +struct optional_tag {} ;
1124.146 +
1124.147 +template<class T>
1124.148 +class optional_base : public optional_tag
1124.149 +{
1124.150 +  private :
1124.151 +
1124.152 +    typedef
1124.153 +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
1124.154 +    BOOST_DEDUCED_TYPENAME
1124.155 +#endif 
1124.156 +    ::boost::detail::make_reference_content<T>::type internal_type ;
1124.157 +
1124.158 +    typedef aligned_storage<internal_type> storage_type ;
1124.159 +
1124.160 +    typedef types_when_isnt_ref<T> types_when_not_ref ;
1124.161 +    typedef types_when_is_ref<T>   types_when_ref   ;
1124.162 +
1124.163 +    typedef optional_base<T> this_type ;
1124.164 +
1124.165 +  protected :
1124.166 +
1124.167 +    typedef T value_type ;
1124.168 +
1124.169 +    typedef mpl::true_  is_reference_tag ;
1124.170 +    typedef mpl::false_ is_not_reference_tag ;
1124.171 +
1124.172 +    typedef BOOST_DEDUCED_TYPENAME is_reference<T>::type is_reference_predicate ;
1124.173 +
1124.174 +    typedef BOOST_DEDUCED_TYPENAME mpl::if_<is_reference_predicate,types_when_ref,types_when_not_ref>::type types ;
1124.175 +
1124.176 +    typedef bool (this_type::*unspecified_bool_type)() const;
1124.177 +
1124.178 +    typedef BOOST_DEDUCED_TYPENAME types::reference_type       reference_type ;
1124.179 +    typedef BOOST_DEDUCED_TYPENAME types::reference_const_type reference_const_type ;
1124.180 +    typedef BOOST_DEDUCED_TYPENAME types::pointer_type         pointer_type ;
1124.181 +    typedef BOOST_DEDUCED_TYPENAME types::pointer_const_type   pointer_const_type ;
1124.182 +    typedef BOOST_DEDUCED_TYPENAME types::argument_type        argument_type ;
1124.183 +
1124.184 +    // Creates an optional<T> uninitialized.
1124.185 +    // No-throw
1124.186 +    optional_base()
1124.187 +      :
1124.188 +      m_initialized(false) {}
1124.189 +
1124.190 +    // Creates an optional<T> uninitialized.
1124.191 +    // No-throw
1124.192 +    optional_base ( none_t )
1124.193 +      :
1124.194 +      m_initialized(false) {}
1124.195 +
1124.196 +    // Creates an optional<T> initialized with 'val'.
1124.197 +    // Can throw if T::T(T const&) does
1124.198 +    optional_base ( argument_type val )
1124.199 +      :
1124.200 +      m_initialized(false)
1124.201 +    {
1124.202 +      construct(val);
1124.203 +    }
1124.204 +    
1124.205 +    // Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialzed optional<T>.
1124.206 +    // Can throw if T::T(T const&) does
1124.207 +    optional_base ( bool cond, argument_type val )
1124.208 +      :
1124.209 +      m_initialized(false)
1124.210 +    {
1124.211 +      if ( cond )
1124.212 +        construct(val);
1124.213 +    }
1124.214 +
1124.215 +    // Creates a deep copy of another optional<T>
1124.216 +    // Can throw if T::T(T const&) does
1124.217 +    optional_base ( optional_base const& rhs )
1124.218 +      :
1124.219 +      m_initialized(false)
1124.220 +    {
1124.221 +      if ( rhs.is_initialized() )
1124.222 +        construct(rhs.get_impl());
1124.223 +    }
1124.224 +
1124.225 +
1124.226 +    // This is used for both converting and in-place constructions.
1124.227 +    // Derived classes use the 'tag' to select the appropriate
1124.228 +    // implementation (the correct 'construct()' overload)
1124.229 +    template<class Expr>
1124.230 +    explicit optional_base ( Expr const& expr, Expr const* tag )
1124.231 +      :
1124.232 +      m_initialized(false)
1124.233 +    {
1124.234 +      construct(expr,tag);
1124.235 +    }
1124.236 +
1124.237 +
1124.238 +
1124.239 +    // No-throw (assuming T::~T() doesn't)
1124.240 +    ~optional_base() { destroy() ; }
1124.241 +
1124.242 +    // Assigns from another optional<T> (deep-copies the rhs value)
1124.243 +    void assign ( optional_base const& rhs )
1124.244 +    {
1124.245 +      if (is_initialized())
1124.246 +      {
1124.247 +        if ( rhs.is_initialized() )
1124.248 +             assign_value(rhs.get_impl(), is_reference_predicate() );
1124.249 +        else destroy();
1124.250 +      }
1124.251 +      else
1124.252 +      {
1124.253 +        if ( rhs.is_initialized() )
1124.254 +          construct(rhs.get_impl());
1124.255 +      }
1124.256 +    }
1124.257 +
1124.258 +    // Assigns from another _convertible_ optional<U> (deep-copies the rhs value)
1124.259 +    template<class U>
1124.260 +    void assign ( optional<U> const& rhs )
1124.261 +    {
1124.262 +      if (is_initialized())
1124.263 +      {
1124.264 +        if ( rhs.is_initialized() )
1124.265 +             assign_value(static_cast<value_type>(rhs.get()), is_reference_predicate() );
1124.266 +        else destroy();
1124.267 +      }
1124.268 +      else
1124.269 +      {
1124.270 +        if ( rhs.is_initialized() )
1124.271 +          construct(static_cast<value_type>(rhs.get()));
1124.272 +      }
1124.273 +    }
1124.274 +
1124.275 +    // Assigns from a T (deep-copies the rhs value)
1124.276 +    void assign ( argument_type val )
1124.277 +    {
1124.278 +      if (is_initialized())
1124.279 +           assign_value(val, is_reference_predicate() );
1124.280 +      else construct(val);
1124.281 +    }
1124.282 +
1124.283 +    // Assigns from "none", destroying the current value, if any, leaving this UNINITIALIZED
1124.284 +    // No-throw (assuming T::~T() doesn't)
1124.285 +    void assign ( none_t ) { destroy(); }
1124.286 +
1124.287 +#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
1124.288 +    template<class Expr>
1124.289 +    void assign_expr ( Expr const& expr, Expr const* tag )
1124.290 +      {
1124.291 +        if (is_initialized())
1124.292 +             assign_expr_to_initialized(expr,tag);
1124.293 +        else construct(expr,tag);
1124.294 +      }
1124.295 +#endif
1124.296 +
1124.297 +  public :
1124.298 +
1124.299 +    // Destroys the current value, if any, leaving this UNINITIALIZED
1124.300 +    // No-throw (assuming T::~T() doesn't)
1124.301 +    void reset() { destroy(); }
1124.302 +
1124.303 +    // Replaces the current value -if any- with 'val'
1124.304 +    void reset ( argument_type val ) { assign(val); }
1124.305 +
1124.306 +    // Returns a pointer to the value if this is initialized, otherwise,
1124.307 +    // returns NULL.
1124.308 +    // No-throw
1124.309 +    pointer_const_type get_ptr() const { return m_initialized ? get_ptr_impl() : 0 ; }
1124.310 +    pointer_type       get_ptr()       { return m_initialized ? get_ptr_impl() : 0 ; }
1124.311 +
1124.312 +    bool is_initialized() const { return m_initialized ; }
1124.313 +
1124.314 +  protected :
1124.315 +
1124.316 +    void construct ( argument_type val )
1124.317 +     {
1124.318 +       new (m_storage.address()) internal_type(val) ;
1124.319 +       m_initialized = true ;
1124.320 +     }
1124.321 +
1124.322 +#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
1124.323 +    // Constructs in-place using the given factory
1124.324 +    template<class Expr>
1124.325 +    void construct ( Expr const& factory, in_place_factory_base const* )
1124.326 +     {
1124.327 +       BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
1124.328 +       boost_optional_detail::construct<value_type>(factory, m_storage.address());
1124.329 +       m_initialized = true ;
1124.330 +     }
1124.331 +
1124.332 +    // Constructs in-place using the given typed factory
1124.333 +    template<class Expr>
1124.334 +    void construct ( Expr const& factory, typed_in_place_factory_base const* )
1124.335 +     {
1124.336 +       BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
1124.337 +       factory.apply(m_storage.address()) ;
1124.338 +       m_initialized = true ;
1124.339 +     }
1124.340 +
1124.341 +    template<class Expr>
1124.342 +    void assign_expr_to_initialized ( Expr const& factory, in_place_factory_base const* tag )
1124.343 +     {
1124.344 +       destroy();
1124.345 +       construct(factory,tag);
1124.346 +     }
1124.347 +
1124.348 +    // Constructs in-place using the given typed factory
1124.349 +    template<class Expr>
1124.350 +    void assign_expr_to_initialized ( Expr const& factory, typed_in_place_factory_base const* tag )
1124.351 +     {
1124.352 +       destroy();
1124.353 +       construct(factory,tag);
1124.354 +     }
1124.355 +#endif
1124.356 +
1124.357 +    // Constructs using any expression implicitely convertible to the single argument
1124.358 +    // of a one-argument T constructor.
1124.359 +    // Converting constructions of optional<T> from optional<U> uses this function with
1124.360 +    // 'Expr' being of type 'U' and relying on a converting constructor of T from U.
1124.361 +    template<class Expr>
1124.362 +    void construct ( Expr const& expr, void const* )
1124.363 +     {
1124.364 +       new (m_storage.address()) internal_type(expr) ;
1124.365 +       m_initialized = true ;
1124.366 +     }
1124.367 +
1124.368 +    // Assigns using a form any expression implicitely convertible to the single argument
1124.369 +    // of a T's assignment operator.
1124.370 +    // Converting assignments of optional<T> from optional<U> uses this function with
1124.371 +    // 'Expr' being of type 'U' and relying on a converting assignment of T from U.
1124.372 +    template<class Expr>
1124.373 +    void assign_expr_to_initialized ( Expr const& expr, void const* )
1124.374 +     {
1124.375 +       assign_value(expr, is_reference_predicate());
1124.376 +     }
1124.377 +
1124.378 +#ifdef BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
1124.379 +    // BCB5.64 (and probably lower versions) workaround.
1124.380 +    //   The in-place factories are supported by means of catch-all constructors
1124.381 +    //   and assignment operators (the functions are parameterized in terms of
1124.382 +    //   an arbitrary 'Expr' type)
1124.383 +    //   This compiler incorrectly resolves the overload set and sinks optional<T> and optional<U>
1124.384 +    //   to the 'Expr'-taking functions even though explicit overloads are present for them.
1124.385 +    //   Thus, the following overload is needed to properly handle the case when the 'lhs'
1124.386 +    //   is another optional.
1124.387 +    //
1124.388 +    // For VC<=70 compilers this workaround dosen't work becasue the comnpiler issues and error
1124.389 +    // instead of choosing the wrong overload
1124.390 +    //
1124.391 +    // Notice that 'Expr' will be optional<T> or optional<U> (but not optional_base<..>)
1124.392 +    template<class Expr>
1124.393 +    void construct ( Expr const& expr, optional_tag const* )
1124.394 +     {
1124.395 +       if ( expr.is_initialized() )
1124.396 +       {
1124.397 +         // An exception can be thrown here.
1124.398 +         // It it happens, THIS will be left uninitialized.
1124.399 +         new (m_storage.address()) internal_type(expr.get()) ;
1124.400 +         m_initialized = true ;
1124.401 +       }
1124.402 +     }
1124.403 +#endif
1124.404 +
1124.405 +    void assign_value ( argument_type val, is_not_reference_tag ) { get_impl() = val; }
1124.406 +    void assign_value ( argument_type val, is_reference_tag     ) { construct(val); }
1124.407 +
1124.408 +    void destroy()
1124.409 +    {
1124.410 +      if ( m_initialized )
1124.411 +        destroy_impl(is_reference_predicate()) ;
1124.412 +    }
1124.413 +
1124.414 +    unspecified_bool_type safe_bool() const { return m_initialized ? &this_type::is_initialized : 0 ; }
1124.415 +
1124.416 +    reference_const_type get_impl() const { return dereference(get_object(), is_reference_predicate() ) ; }
1124.417 +    reference_type       get_impl()       { return dereference(get_object(), is_reference_predicate() ) ; }
1124.418 +
1124.419 +    pointer_const_type get_ptr_impl() const { return cast_ptr(get_object(), is_reference_predicate() ) ; }
1124.420 +    pointer_type       get_ptr_impl()       { return cast_ptr(get_object(), is_reference_predicate() ) ; }
1124.421 +
1124.422 +  private :
1124.423 +
1124.424 +    // internal_type can be either T or reference_content<T>
1124.425 +    internal_type const* get_object() const { return static_cast<internal_type const*>(m_storage.address()); }
1124.426 +    internal_type *      get_object()       { return static_cast<internal_type *>     (m_storage.address()); }
1124.427 +
1124.428 +    // reference_content<T> lacks an implicit conversion to T&, so the following is needed to obtain a proper reference.
1124.429 +    reference_const_type dereference( internal_type const* p, is_not_reference_tag ) const { return *p ; }
1124.430 +    reference_type       dereference( internal_type*       p, is_not_reference_tag )       { return *p ; }
1124.431 +    reference_const_type dereference( internal_type const* p, is_reference_tag     ) const { return p->get() ; }
1124.432 +    reference_type       dereference( internal_type*       p, is_reference_tag     )       { return p->get() ; }
1124.433 +
1124.434 +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))
1124.435 +    void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->internal_type::~internal_type() ; m_initialized = false ; }
1124.436 +#else
1124.437 +    void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->T::~T() ; m_initialized = false ; }
1124.438 +#endif
1124.439 +
1124.440 +    void destroy_impl ( is_reference_tag     ) { m_initialized = false ; }
1124.441 +
1124.442 +    // If T is of reference type, trying to get a pointer to the held value must result in a compile-time error.
1124.443 +    // Decent compilers should disallow conversions from reference_content<T>* to T*, but just in case,
1124.444 +    // the following olverloads are used to filter out the case and guarantee an error in case of T being a reference.
1124.445 +    pointer_const_type cast_ptr( internal_type const* p, is_not_reference_tag ) const { return p ; }
1124.446 +    pointer_type       cast_ptr( internal_type *      p, is_not_reference_tag )       { return p ; }
1124.447 +    pointer_const_type cast_ptr( internal_type const* p, is_reference_tag     ) const { return &p->get() ; }
1124.448 +    pointer_type       cast_ptr( internal_type *      p, is_reference_tag     )       { return &p->get() ; }
1124.449 +
1124.450 +    bool m_initialized ;
1124.451 +    storage_type m_storage ;
1124.452 +} ;
1124.453 +
1124.454 +} // namespace optional_detail
1124.455 +
1124.456 +template<class T>
1124.457 +class optional : public optional_detail::optional_base<T>
1124.458 +{
1124.459 +    typedef optional_detail::optional_base<T> base ;
1124.460 +
1124.461 +    typedef BOOST_DEDUCED_TYPENAME base::unspecified_bool_type  unspecified_bool_type ;
1124.462 +
1124.463 +  public :
1124.464 +
1124.465 +    typedef optional<T> this_type ;
1124.466 +
1124.467 +    typedef BOOST_DEDUCED_TYPENAME base::value_type           value_type ;
1124.468 +    typedef BOOST_DEDUCED_TYPENAME base::reference_type       reference_type ;
1124.469 +    typedef BOOST_DEDUCED_TYPENAME base::reference_const_type reference_const_type ;
1124.470 +    typedef BOOST_DEDUCED_TYPENAME base::pointer_type         pointer_type ;
1124.471 +    typedef BOOST_DEDUCED_TYPENAME base::pointer_const_type   pointer_const_type ;
1124.472 +    typedef BOOST_DEDUCED_TYPENAME base::argument_type        argument_type ;
1124.473 +
1124.474 +    // Creates an optional<T> uninitialized.
1124.475 +    // No-throw
1124.476 +    optional() : base() {}
1124.477 +
1124.478 +    // Creates an optional<T> uninitialized.
1124.479 +    // No-throw
1124.480 +    optional( none_t none_ ) : base(none_) {}
1124.481 +
1124.482 +    // Creates an optional<T> initialized with 'val'.
1124.483 +    // Can throw if T::T(T const&) does
1124.484 +    optional ( argument_type val ) : base(val) {}
1124.485 +
1124.486 +    // Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialized optional.
1124.487 +    // Can throw if T::T(T const&) does
1124.488 +    optional ( bool cond, argument_type val ) : base(cond,val) {}
1124.489 +
1124.490 +#ifndef BOOST_OPTIONAL_NO_CONVERTING_COPY_CTOR
1124.491 +    // NOTE: MSVC needs templated versions first
1124.492 +
1124.493 +    // Creates a deep copy of another convertible optional<U>
1124.494 +    // Requires a valid conversion from U to T.
1124.495 +    // Can throw if T::T(U const&) does
1124.496 +    template<class U>
1124.497 +    explicit optional ( optional<U> const& rhs )
1124.498 +      :
1124.499 +      base()
1124.500 +    {
1124.501 +      if ( rhs.is_initialized() )
1124.502 +        this->construct(rhs.get());
1124.503 +    }
1124.504 +#endif
1124.505 +
1124.506 +#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
1124.507 +    // Creates an optional<T> with an expression which can be either
1124.508 +    //  (a) An instance of InPlaceFactory (i.e. in_place(a,b,...,n);
1124.509 +    //  (b) An instance of TypedInPlaceFactory ( i.e. in_place<T>(a,b,...,n);
1124.510 +    //  (c) Any expression implicitely convertible to the single type
1124.511 +    //      of a one-argument T's constructor.
1124.512 +    //  (d*) Weak compilers (BCB) might also resolved Expr as optional<T> and optional<U>
1124.513 +    //       even though explicit overloads are present for these.
1124.514 +    // Depending on the above some T ctor is called.
1124.515 +    // Can throw is the resolved T ctor throws.
1124.516 +    template<class Expr>
1124.517 +    explicit optional ( Expr const& expr ) : base(expr,&expr) {}
1124.518 +#endif
1124.519 +
1124.520 +    // Creates a deep copy of another optional<T>
1124.521 +    // Can throw if T::T(T const&) does
1124.522 +    optional ( optional const& rhs ) : base(rhs) {}
1124.523 +
1124.524 +   // No-throw (assuming T::~T() doesn't)
1124.525 +    ~optional() {}
1124.526 +
1124.527 +#if !defined(BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT) && !defined(BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION)
1124.528 +    // Assigns from an expression. See corresponding constructor.
1124.529 +    // Basic Guarantee: If the resolved T ctor throws, this is left UNINITIALIZED
1124.530 +    template<class Expr>
1124.531 +    optional& operator= ( Expr expr )
1124.532 +      {
1124.533 +        this->assign_expr(expr,&expr);
1124.534 +        return *this ;
1124.535 +      }
1124.536 +#endif
1124.537 +
1124.538 +
1124.539 +#ifndef BOOST_OPTIONAL_NO_CONVERTING_ASSIGNMENT
1124.540 +    // Assigns from another convertible optional<U> (converts && deep-copies the rhs value)
1124.541 +    // Requires a valid conversion from U to T.
1124.542 +    // Basic Guarantee: If T::T( U const& ) throws, this is left UNINITIALIZED
1124.543 +    template<class U>
1124.544 +    optional& operator= ( optional<U> const& rhs )
1124.545 +      {
1124.546 +        this->assign(rhs);
1124.547 +        return *this ;
1124.548 +      }
1124.549 +#endif
1124.550 +
1124.551 +    // Assigns from another optional<T> (deep-copies the rhs value)
1124.552 +    // Basic Guarantee: If T::T( T const& ) throws, this is left UNINITIALIZED
1124.553 +    //  (NOTE: On BCB, this operator is not actually called and left is left UNMODIFIED in case of a throw)
1124.554 +    optional& operator= ( optional const& rhs )
1124.555 +      {
1124.556 +        this->assign( rhs ) ;
1124.557 +        return *this ;
1124.558 +      }
1124.559 +
1124.560 +    // Assigns from a T (deep-copies the rhs value)
1124.561 +    // Basic Guarantee: If T::( T const& ) throws, this is left UNINITIALIZED
1124.562 +    optional& operator= ( argument_type val )
1124.563 +      {
1124.564 +        this->assign( val ) ;
1124.565 +        return *this ;
1124.566 +      }
1124.567 +
1124.568 +    // Assigns from a "none"
1124.569 +    // Which destroys the current value, if any, leaving this UNINITIALIZED
1124.570 +    // No-throw (assuming T::~T() doesn't)
1124.571 +    optional& operator= ( none_t none_ )
1124.572 +      {
1124.573 +        this->assign( none_ ) ;
1124.574 +        return *this ;
1124.575 +      }
1124.576 +
1124.577 +    // Returns a reference to the value if this is initialized, otherwise,
1124.578 +    // the behaviour is UNDEFINED
1124.579 +    // No-throw
1124.580 +    reference_const_type get() const { BOOST_ASSERT(this->is_initialized()) ; return this->get_impl(); }
1124.581 +    reference_type       get()       { BOOST_ASSERT(this->is_initialized()) ; return this->get_impl(); }
1124.582 +
1124.583 +    // Returns a copy of the value if this is initialized, 'v' otherwise
1124.584 +    reference_const_type get_value_or ( reference_const_type v ) const { return this->is_initialized() ? get() : v ; }
1124.585 +    reference_type       get_value_or ( reference_type       v )       { return this->is_initialized() ? get() : v ; }
1124.586 +    
1124.587 +    // Returns a pointer to the value if this is initialized, otherwise,
1124.588 +    // the behaviour is UNDEFINED
1124.589 +    // No-throw
1124.590 +    pointer_const_type operator->() const { BOOST_ASSERT(this->is_initialized()) ; return this->get_ptr_impl() ; }
1124.591 +    pointer_type       operator->()       { BOOST_ASSERT(this->is_initialized()) ; return this->get_ptr_impl() ; }
1124.592 +
1124.593 +    // Returns a reference to the value if this is initialized, otherwise,
1124.594 +    // the behaviour is UNDEFINED
1124.595 +    // No-throw
1124.596 +    reference_const_type operator *() const { return this->get() ; }
1124.597 +    reference_type       operator *()       { return this->get() ; }
1124.598 +
1124.599 +    // implicit conversion to "bool"
1124.600 +    // No-throw
1124.601 +    operator unspecified_bool_type() const { return this->safe_bool() ; }
1124.602 +
1124.603 +       // This is provided for those compilers which don't like the conversion to bool
1124.604 +       // on some contexts.
1124.605 +       bool operator!() const { return !this->is_initialized() ; }
1124.606 +} ;
1124.607 +
1124.608 +// Returns optional<T>(v)
1124.609 +template<class T> 
1124.610 +inline 
1124.611 +optional<T> make_optional ( T const& v  )
1124.612 +{
1124.613 +  return optional<T>(v);
1124.614 +}
1124.615 +
1124.616 +// Returns optional<T>(cond,v)
1124.617 +template<class T> 
1124.618 +inline 
1124.619 +optional<T> make_optional ( bool cond, T const& v )
1124.620 +{
1124.621 +  return optional<T>(cond,v);
1124.622 +}
1124.623 +
1124.624 +// Returns a reference to the value if this is initialized, otherwise, the behaviour is UNDEFINED.
1124.625 +// No-throw
1124.626 +template<class T>
1124.627 +inline
1124.628 +BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type
1124.629 +get ( optional<T> const& opt )
1124.630 +{
1124.631 +  return opt.get() ;
1124.632 +}
1124.633 +
1124.634 +template<class T>
1124.635 +inline
1124.636 +BOOST_DEDUCED_TYPENAME optional<T>::reference_type
1124.637 +get ( optional<T>& opt )
1124.638 +{
1124.639 +  return opt.get() ;
1124.640 +}
1124.641 +
1124.642 +// Returns a pointer to the value if this is initialized, otherwise, returns NULL.
1124.643 +// No-throw
1124.644 +template<class T>
1124.645 +inline
1124.646 +BOOST_DEDUCED_TYPENAME optional<T>::pointer_const_type
1124.647 +get ( optional<T> const* opt )
1124.648 +{
1124.649 +  return opt->get_ptr() ;
1124.650 +}
1124.651 +
1124.652 +template<class T>
1124.653 +inline
1124.654 +BOOST_DEDUCED_TYPENAME optional<T>::pointer_type
1124.655 +get ( optional<T>* opt )
1124.656 +{
1124.657 +  return opt->get_ptr() ;
1124.658 +}
1124.659 +
1124.660 +// Returns a reference to the value if this is initialized, otherwise, the behaviour is UNDEFINED.
1124.661 +// No-throw
1124.662 +template<class T>
1124.663 +inline
1124.664 +BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type
1124.665 +get_optional_value_or ( optional<T> const& opt, BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type v )
1124.666 +{
1124.667 +  return opt.get_value_or(v) ;
1124.668 +}
1124.669 +
1124.670 +template<class T>
1124.671 +inline
1124.672 +BOOST_DEDUCED_TYPENAME optional<T>::reference_type
1124.673 +get_optional_value_or ( optional<T>& opt, BOOST_DEDUCED_TYPENAME optional<T>::reference_type v )
1124.674 +{
1124.675 +  return opt.get_value_or(v) ;
1124.676 +}
1124.677 +
1124.678 +// Returns a pointer to the value if this is initialized, otherwise, returns NULL.
1124.679 +// No-throw
1124.680 +template<class T>
1124.681 +inline
1124.682 +BOOST_DEDUCED_TYPENAME optional<T>::pointer_const_type
1124.683 +get_pointer ( optional<T> const& opt )
1124.684 +{
1124.685 +  return opt.get_ptr() ;
1124.686 +}
1124.687 +
1124.688 +template<class T>
1124.689 +inline
1124.690 +BOOST_DEDUCED_TYPENAME optional<T>::pointer_type
1124.691 +get_pointer ( optional<T>& opt )
1124.692 +{
1124.693 +  return opt.get_ptr() ;
1124.694 +}
1124.695 +
1124.696 +// optional's relational operators ( ==, !=, <, >, <=, >= ) have deep-semantics (compare values).
1124.697 +// WARNING: This is UNLIKE pointers. Use equal_pointees()/less_pointess() in generic code instead.
1124.698 +
1124.699 +
1124.700 +//
1124.701 +// optional<T> vs optional<T> cases
1124.702 +//
1124.703 +
1124.704 +template<class T>
1124.705 +inline
1124.706 +bool operator == ( optional<T> const& x, optional<T> const& y )
1124.707 +{ return equal_pointees(x,y); }
1124.708 +
1124.709 +template<class T>
1124.710 +inline
1124.711 +bool operator < ( optional<T> const& x, optional<T> const& y )
1124.712 +{ return less_pointees(x,y); }
1124.713 +
1124.714 +template<class T>
1124.715 +inline
1124.716 +bool operator != ( optional<T> const& x, optional<T> const& y )
1124.717 +{ return !( x == y ) ; }
1124.718 +
1124.719 +template<class T>
1124.720 +inline
1124.721 +bool operator > ( optional<T> const& x, optional<T> const& y )
1124.722 +{ return y < x ; }
1124.723 +
1124.724 +template<class T>
1124.725 +inline
1124.726 +bool operator <= ( optional<T> const& x, optional<T> const& y )
1124.727 +{ return !( y < x ) ; }
1124.728 +
1124.729 +template<class T>
1124.730 +inline
1124.731 +bool operator >= ( optional<T> const& x, optional<T> const& y )
1124.732 +{ return !( x < y ) ; }
1124.733 +
1124.734 +
1124.735 +//
1124.736 +// optional<T> vs T cases
1124.737 +//
1124.738 +template<class T>
1124.739 +inline
1124.740 +bool operator == ( optional<T> const& x, T const& y )
1124.741 +{ return equal_pointees(x, optional<T>(y)); }
1124.742 +
1124.743 +template<class T>
1124.744 +inline
1124.745 +bool operator < ( optional<T> const& x, T const& y )
1124.746 +{ return less_pointees(x, optional<T>(y)); }
1124.747 +
1124.748 +template<class T>
1124.749 +inline
1124.750 +bool operator != ( optional<T> const& x, T const& y )
1124.751 +{ return !( x == y ) ; }
1124.752 +
1124.753 +template<class T>
1124.754 +inline
1124.755 +bool operator > ( optional<T> const& x, T const& y )
1124.756 +{ return y < x ; }
1124.757 +
1124.758 +template<class T>
1124.759 +inline
1124.760 +bool operator <= ( optional<T> const& x, T const& y )
1124.761 +{ return !( y < x ) ; }
1124.762 +
1124.763 +template<class T>
1124.764 +inline
1124.765 +bool operator >= ( optional<T> const& x, T const& y )
1124.766 +{ return !( x < y ) ; }
1124.767 +
1124.768 +//
1124.769 +// T vs optional<T> cases
1124.770 +//
1124.771 +
1124.772 +template<class T>
1124.773 +inline
1124.774 +bool operator == ( T const& x, optional<T> const& y )
1124.775 +{ return equal_pointees( optional<T>(x), y ); }
1124.776 +
1124.777 +template<class T>
1124.778 +inline
1124.779 +bool operator < ( T const& x, optional<T> const& y )
1124.780 +{ return less_pointees( optional<T>(x), y ); }
1124.781 +
1124.782 +template<class T>
1124.783 +inline
1124.784 +bool operator != ( T const& x, optional<T> const& y )
1124.785 +{ return !( x == y ) ; }
1124.786 +
1124.787 +template<class T>
1124.788 +inline
1124.789 +bool operator > ( T const& x, optional<T> const& y )
1124.790 +{ return y < x ; }
1124.791 +
1124.792 +template<class T>
1124.793 +inline
1124.794 +bool operator <= ( T const& x, optional<T> const& y )
1124.795 +{ return !( y < x ) ; }
1124.796 +
1124.797 +template<class T>
1124.798 +inline
1124.799 +bool operator >= ( T const& x, optional<T> const& y )
1124.800 +{ return !( x < y ) ; }
1124.801 +
1124.802 +
1124.803 +//
1124.804 +// optional<T> vs none cases
1124.805 +//
1124.806 +
1124.807 +template<class T>
1124.808 +inline
1124.809 +bool operator == ( optional<T> const& x, none_t )
1124.810 +{ return equal_pointees(x, optional<T>() ); }
1124.811 +
1124.812 +template<class T>
1124.813 +inline
1124.814 +bool operator < ( optional<T> const& x, none_t )
1124.815 +{ return less_pointees(x,optional<T>() ); }
1124.816 +
1124.817 +template<class T>
1124.818 +inline
1124.819 +bool operator != ( optional<T> const& x, none_t y )
1124.820 +{ return !( x == y ) ; }
1124.821 +
1124.822 +template<class T>
1124.823 +inline
1124.824 +bool operator > ( optional<T> const& x, none_t y )
1124.825 +{ return y < x ; }
1124.826 +
1124.827 +template<class T>
1124.828 +inline
1124.829 +bool operator <= ( optional<T> const& x, none_t y )
1124.830 +{ return !( y < x ) ; }
1124.831 +
1124.832 +template<class T>
1124.833 +inline
1124.834 +bool operator >= ( optional<T> const& x, none_t y )
1124.835 +{ return !( x < y ) ; }
1124.836 +
1124.837 +//
1124.838 +// none vs optional<T> cases
1124.839 +//
1124.840 +
1124.841 +template<class T>
1124.842 +inline
1124.843 +bool operator == ( none_t x, optional<T> const& y )
1124.844 +{ return equal_pointees(optional<T>() ,y); }
1124.845 +
1124.846 +template<class T>
1124.847 +inline
1124.848 +bool operator < ( none_t x, optional<T> const& y )
1124.849 +{ return less_pointees(optional<T>() ,y); }
1124.850 +
1124.851 +template<class T>
1124.852 +inline
1124.853 +bool operator != ( none_t x, optional<T> const& y )
1124.854 +{ return !( x == y ) ; }
1124.855 +
1124.856 +template<class T>
1124.857 +inline
1124.858 +bool operator > ( none_t x, optional<T> const& y )
1124.859 +{ return y < x ; }
1124.860 +
1124.861 +template<class T>
1124.862 +inline
1124.863 +bool operator <= ( none_t x, optional<T> const& y )
1124.864 +{ return !( y < x ) ; }
1124.865 +
1124.866 +template<class T>
1124.867 +inline
1124.868 +bool operator >= ( none_t x, optional<T> const& y )
1124.869 +{ return !( x < y ) ; }
1124.870 +
1124.871 +//
1124.872 +// The following swap implementation follows the GCC workaround as found in
1124.873 +//  "boost/detail/compressed_pair.hpp"
1124.874 +//
1124.875 +namespace optional_detail {
1124.876 +
1124.877 +// GCC < 3.2 gets the using declaration at namespace scope (FLC, DWA)
1124.878 +#if BOOST_WORKAROUND(__GNUC__, < 3)                             \
1124.879 +    || BOOST_WORKAROUND(__GNUC__, == 3) && __GNUC_MINOR__ <= 2
1124.880 +   using std::swap;
1124.881 +#define BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
1124.882 +#endif
1124.883 +
1124.884 +// optional's swap:
1124.885 +// If both are initialized, calls swap(T&, T&). If this swap throws, both will remain initialized but their values are now unspecified.
1124.886 +// If only one is initialized, calls U.reset(*I), THEN I.reset().
1124.887 +// If U.reset(*I) throws, both are left UNCHANGED (U is kept uinitialized and I is never reset)
1124.888 +// If both are uninitialized, do nothing (no-throw)
1124.889 +template<class T>
1124.890 +inline
1124.891 +void optional_swap ( optional<T>& x, optional<T>& y )
1124.892 +{
1124.893 +  if ( !x && !!y )
1124.894 +  {
1124.895 +    x.reset(*y);
1124.896 +    y.reset();
1124.897 +  }
1124.898 +  else if ( !!x && !y )
1124.899 +  {
1124.900 +    y.reset(*x);
1124.901 +    x.reset();
1124.902 +  }
1124.903 +  else if ( !!x && !!y )
1124.904 +  {
1124.905 +// GCC > 3.2 and all other compilers have the using declaration at function scope (FLC)
1124.906 +#ifndef BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
1124.907 +    // allow for Koenig lookup
1124.908 +    using std::swap ;
1124.909 +#endif
1124.910 +    swap(*x,*y);
1124.911 +  }
1124.912 +}
1124.913 +
1124.914 +} // namespace optional_detail
1124.915 +
1124.916 +template<class T> inline void swap ( optional<T>& x, optional<T>& y )
1124.917 +{
1124.918 +  optional_detail::optional_swap(x,y);
1124.919 +}
1124.920 +
1124.921 +
1124.922 +} // namespace boost
1124.923 +
1124.924 +#endif
1124.925 +
  1125.1 --- a/epoc32/include/stdapis/boost/optional/optional.hpp	Tue Mar 16 16:12:26 2010 +0000
  1125.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1125.3 @@ -1,922 +0,0 @@
  1125.4 -// Copyright (C) 2003, Fernando Luis Cacciola Carballal.
  1125.5 -//
  1125.6 -// Use, modification, and distribution is subject to the Boost Software
  1125.7 -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1125.8 -// http://www.boost.org/LICENSE_1_0.txt)
  1125.9 -//
 1125.10 -// See http://www.boost.org/lib/optional for documentation.
 1125.11 -//
 1125.12 -// You are welcome to contact the author at:
 1125.13 -//  fernando_cacciola@hotmail.com
 1125.14 -//
 1125.15 -#ifndef BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
 1125.16 -#define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
 1125.17 -
 1125.18 -#include<new>
 1125.19 -#include<algorithm>
 1125.20 -
 1125.21 -#include "boost/config.hpp"
 1125.22 -#include "boost/assert.hpp"
 1125.23 -#include "boost/type.hpp"
 1125.24 -#include "boost/type_traits/alignment_of.hpp"
 1125.25 -#include "boost/type_traits/type_with_alignment.hpp"
 1125.26 -#include "boost/type_traits/remove_reference.hpp"
 1125.27 -#include "boost/type_traits/is_reference.hpp"
 1125.28 -#include "boost/mpl/if.hpp"
 1125.29 -#include "boost/mpl/bool.hpp"
 1125.30 -#include "boost/mpl/not.hpp"
 1125.31 -#include "boost/detail/reference_content.hpp"
 1125.32 -#include "boost/none.hpp"
 1125.33 -#include "boost/utility/compare_pointees.hpp"
 1125.34 -
 1125.35 -#include "boost/optional/optional_fwd.hpp"
 1125.36 -
 1125.37 -#if BOOST_WORKAROUND(BOOST_MSVC, == 1200)
 1125.38 -// VC6.0 has the following bug:
 1125.39 -//   When a templated assignment operator exist, an implicit conversion
 1125.40 -//   constructing an optional<T> is used when assigment of the form:
 1125.41 -//     optional<T> opt ; opt = T(...);
 1125.42 -//   is compiled.
 1125.43 -//   However, optional's ctor is _explicit_ and the assignemt shouldn't compile.
 1125.44 -//   Therefore, for VC6.0 templated assignment is disabled.
 1125.45 -//
 1125.46 -#define BOOST_OPTIONAL_NO_CONVERTING_ASSIGNMENT
 1125.47 -#endif
 1125.48 -
 1125.49 -#if BOOST_WORKAROUND(BOOST_MSVC, == 1300)
 1125.50 -// VC7.0 has the following bug:
 1125.51 -//   When both a non-template and a template copy-ctor exist
 1125.52 -//   and the templated version is made 'explicit', the explicit is also
 1125.53 -//   given to the non-templated version, making the class non-implicitely-copyable.
 1125.54 -//
 1125.55 -#define BOOST_OPTIONAL_NO_CONVERTING_COPY_CTOR
 1125.56 -#endif
 1125.57 -
 1125.58 -#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION,<=700)
 1125.59 -// AFAICT only VC7.1 correctly resolves the overload set
 1125.60 -// that includes the in-place factory taking functions,
 1125.61 -// so for the other VC versions, in-place factory support
 1125.62 -// is disabled
 1125.63 -#define BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
 1125.64 -#endif
 1125.65 -
 1125.66 -#if BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
 1125.67 -// BCB (5.5.1) cannot parse the nested template struct in an inplace factory.
 1125.68 -#define BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
 1125.69 -#endif
 1125.70 -
 1125.71 -#if !defined(BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT) \
 1125.72 -    && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581) )
 1125.73 -// BCB (up to 5.64) has the following bug:
 1125.74 -//   If there is a member function/operator template of the form
 1125.75 -//     template<class Expr> mfunc( Expr expr ) ;
 1125.76 -//   some calls are resolved to this even if there are other better matches.
 1125.77 -//   The effect of this bug is that calls to converting ctors and assignments
 1125.78 -//   are incrorrectly sink to this general catch-all member function template as shown above.
 1125.79 -#define BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
 1125.80 -#endif
 1125.81 -
 1125.82 -// Daniel Wallin discovered that bind/apply.hpp badly interacts with the apply<>
 1125.83 -// member template of a factory as used in the optional<> implementation.
 1125.84 -// He proposed this simple fix which is to move the call to apply<> outside
 1125.85 -// namespace boost.
 1125.86 -namespace boost_optional_detail
 1125.87 -{
 1125.88 -  template <class T, class Factory>
 1125.89 -  void construct(Factory const& factory, void* address)
 1125.90 -  {
 1125.91 -    factory.BOOST_NESTED_TEMPLATE apply<T>(address);
 1125.92 -  }
 1125.93 -}
 1125.94 -
 1125.95 -
 1125.96 -namespace boost {
 1125.97 -
 1125.98 -class in_place_factory_base ;
 1125.99 -class typed_in_place_factory_base ;
1125.100 -
1125.101 -namespace optional_detail {
1125.102 -
1125.103 -// This local class is used instead of that in "aligned_storage.hpp"
1125.104 -// because I've found the 'official' class to ICE BCB5.5
1125.105 -// when some types are used with optional<>
1125.106 -// (due to sizeof() passed down as a non-type template parameter)
1125.107 -template <class T>
1125.108 -class aligned_storage
1125.109 -{
1125.110 -    // Borland ICEs if unnamed unions are used for this!
1125.111 -    union dummy_u
1125.112 -    {
1125.113 -        char data[ sizeof(T) ];
1125.114 -        BOOST_DEDUCED_TYPENAME type_with_alignment<
1125.115 -          ::boost::alignment_of<T>::value >::type aligner_;
1125.116 -    } dummy_ ;
1125.117 -
1125.118 -  public:
1125.119 -
1125.120 -    void const* address() const { return &dummy_.data[0]; }
1125.121 -    void      * address()       { return &dummy_.data[0]; }
1125.122 -} ;
1125.123 -
1125.124 -template<class T>
1125.125 -struct types_when_isnt_ref
1125.126 -{
1125.127 -  typedef T const& reference_const_type ;
1125.128 -  typedef T &      reference_type ;
1125.129 -  typedef T const* pointer_const_type ;
1125.130 -  typedef T *      pointer_type ;
1125.131 -  typedef T const& argument_type ;
1125.132 -} ;
1125.133 -template<class T>
1125.134 -struct types_when_is_ref
1125.135 -{
1125.136 -  typedef BOOST_DEDUCED_TYPENAME remove_reference<T>::type raw_type ;
1125.137 -
1125.138 -  typedef raw_type& reference_const_type ;
1125.139 -  typedef raw_type& reference_type ;
1125.140 -  typedef raw_type* pointer_const_type ;
1125.141 -  typedef raw_type* pointer_type ;
1125.142 -  typedef raw_type& argument_type ;
1125.143 -} ;
1125.144 -
1125.145 -struct optional_tag {} ;
1125.146 -
1125.147 -template<class T>
1125.148 -class optional_base : public optional_tag
1125.149 -{
1125.150 -  private :
1125.151 -
1125.152 -    typedef
1125.153 -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
1125.154 -    BOOST_DEDUCED_TYPENAME
1125.155 -#endif 
1125.156 -    ::boost::detail::make_reference_content<T>::type internal_type ;
1125.157 -
1125.158 -    typedef aligned_storage<internal_type> storage_type ;
1125.159 -
1125.160 -    typedef types_when_isnt_ref<T> types_when_not_ref ;
1125.161 -    typedef types_when_is_ref<T>   types_when_ref   ;
1125.162 -
1125.163 -    typedef optional_base<T> this_type ;
1125.164 -
1125.165 -  protected :
1125.166 -
1125.167 -    typedef T value_type ;
1125.168 -
1125.169 -    typedef mpl::true_  is_reference_tag ;
1125.170 -    typedef mpl::false_ is_not_reference_tag ;
1125.171 -
1125.172 -    typedef BOOST_DEDUCED_TYPENAME is_reference<T>::type is_reference_predicate ;
1125.173 -
1125.174 -    typedef BOOST_DEDUCED_TYPENAME mpl::if_<is_reference_predicate,types_when_ref,types_when_not_ref>::type types ;
1125.175 -
1125.176 -    typedef bool (this_type::*unspecified_bool_type)() const;
1125.177 -
1125.178 -    typedef BOOST_DEDUCED_TYPENAME types::reference_type       reference_type ;
1125.179 -    typedef BOOST_DEDUCED_TYPENAME types::reference_const_type reference_const_type ;
1125.180 -    typedef BOOST_DEDUCED_TYPENAME types::pointer_type         pointer_type ;
1125.181 -    typedef BOOST_DEDUCED_TYPENAME types::pointer_const_type   pointer_const_type ;
1125.182 -    typedef BOOST_DEDUCED_TYPENAME types::argument_type        argument_type ;
1125.183 -
1125.184 -    // Creates an optional<T> uninitialized.
1125.185 -    // No-throw
1125.186 -    optional_base()
1125.187 -      :
1125.188 -      m_initialized(false) {}
1125.189 -
1125.190 -    // Creates an optional<T> uninitialized.
1125.191 -    // No-throw
1125.192 -    optional_base ( none_t )
1125.193 -      :
1125.194 -      m_initialized(false) {}
1125.195 -
1125.196 -    // Creates an optional<T> initialized with 'val'.
1125.197 -    // Can throw if T::T(T const&) does
1125.198 -    optional_base ( argument_type val )
1125.199 -      :
1125.200 -      m_initialized(false)
1125.201 -    {
1125.202 -      construct(val);
1125.203 -    }
1125.204 -    
1125.205 -    // Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialzed optional<T>.
1125.206 -    // Can throw if T::T(T const&) does
1125.207 -    optional_base ( bool cond, argument_type val )
1125.208 -      :
1125.209 -      m_initialized(false)
1125.210 -    {
1125.211 -      if ( cond )
1125.212 -        construct(val);
1125.213 -    }
1125.214 -
1125.215 -    // Creates a deep copy of another optional<T>
1125.216 -    // Can throw if T::T(T const&) does
1125.217 -    optional_base ( optional_base const& rhs )
1125.218 -      :
1125.219 -      m_initialized(false)
1125.220 -    {
1125.221 -      if ( rhs.is_initialized() )
1125.222 -        construct(rhs.get_impl());
1125.223 -    }
1125.224 -
1125.225 -
1125.226 -    // This is used for both converting and in-place constructions.
1125.227 -    // Derived classes use the 'tag' to select the appropriate
1125.228 -    // implementation (the correct 'construct()' overload)
1125.229 -    template<class Expr>
1125.230 -    explicit optional_base ( Expr const& expr, Expr const* tag )
1125.231 -      :
1125.232 -      m_initialized(false)
1125.233 -    {
1125.234 -      construct(expr,tag);
1125.235 -    }
1125.236 -
1125.237 -
1125.238 -
1125.239 -    // No-throw (assuming T::~T() doesn't)
1125.240 -    ~optional_base() { destroy() ; }
1125.241 -
1125.242 -    // Assigns from another optional<T> (deep-copies the rhs value)
1125.243 -    void assign ( optional_base const& rhs )
1125.244 -    {
1125.245 -      if (is_initialized())
1125.246 -      {
1125.247 -        if ( rhs.is_initialized() )
1125.248 -             assign_value(rhs.get_impl(), is_reference_predicate() );
1125.249 -        else destroy();
1125.250 -      }
1125.251 -      else
1125.252 -      {
1125.253 -        if ( rhs.is_initialized() )
1125.254 -          construct(rhs.get_impl());
1125.255 -      }
1125.256 -    }
1125.257 -
1125.258 -    // Assigns from another _convertible_ optional<U> (deep-copies the rhs value)
1125.259 -    template<class U>
1125.260 -    void assign ( optional<U> const& rhs )
1125.261 -    {
1125.262 -      if (is_initialized())
1125.263 -      {
1125.264 -        if ( rhs.is_initialized() )
1125.265 -             assign_value(static_cast<value_type>(rhs.get()), is_reference_predicate() );
1125.266 -        else destroy();
1125.267 -      }
1125.268 -      else
1125.269 -      {
1125.270 -        if ( rhs.is_initialized() )
1125.271 -          construct(static_cast<value_type>(rhs.get()));
1125.272 -      }
1125.273 -    }
1125.274 -
1125.275 -    // Assigns from a T (deep-copies the rhs value)
1125.276 -    void assign ( argument_type val )
1125.277 -    {
1125.278 -      if (is_initialized())
1125.279 -           assign_value(val, is_reference_predicate() );
1125.280 -      else construct(val);
1125.281 -    }
1125.282 -
1125.283 -    // Assigns from "none", destroying the current value, if any, leaving this UNINITIALIZED
1125.284 -    // No-throw (assuming T::~T() doesn't)
1125.285 -    void assign ( none_t ) { destroy(); }
1125.286 -
1125.287 -#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
1125.288 -    template<class Expr>
1125.289 -    void assign_expr ( Expr const& expr, Expr const* tag )
1125.290 -      {
1125.291 -        if (is_initialized())
1125.292 -             assign_expr_to_initialized(expr,tag);
1125.293 -        else construct(expr,tag);
1125.294 -      }
1125.295 -#endif
1125.296 -
1125.297 -  public :
1125.298 -
1125.299 -    // Destroys the current value, if any, leaving this UNINITIALIZED
1125.300 -    // No-throw (assuming T::~T() doesn't)
1125.301 -    void reset() { destroy(); }
1125.302 -
1125.303 -    // Replaces the current value -if any- with 'val'
1125.304 -    void reset ( argument_type val ) { assign(val); }
1125.305 -
1125.306 -    // Returns a pointer to the value if this is initialized, otherwise,
1125.307 -    // returns NULL.
1125.308 -    // No-throw
1125.309 -    pointer_const_type get_ptr() const { return m_initialized ? get_ptr_impl() : 0 ; }
1125.310 -    pointer_type       get_ptr()       { return m_initialized ? get_ptr_impl() : 0 ; }
1125.311 -
1125.312 -    bool is_initialized() const { return m_initialized ; }
1125.313 -
1125.314 -  protected :
1125.315 -
1125.316 -    void construct ( argument_type val )
1125.317 -     {
1125.318 -       new (m_storage.address()) internal_type(val) ;
1125.319 -       m_initialized = true ;
1125.320 -     }
1125.321 -
1125.322 -#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
1125.323 -    // Constructs in-place using the given factory
1125.324 -    template<class Expr>
1125.325 -    void construct ( Expr const& factory, in_place_factory_base const* )
1125.326 -     {
1125.327 -       BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
1125.328 -       boost_optional_detail::construct<value_type>(factory, m_storage.address());
1125.329 -       m_initialized = true ;
1125.330 -     }
1125.331 -
1125.332 -    // Constructs in-place using the given typed factory
1125.333 -    template<class Expr>
1125.334 -    void construct ( Expr const& factory, typed_in_place_factory_base const* )
1125.335 -     {
1125.336 -       BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
1125.337 -       factory.apply(m_storage.address()) ;
1125.338 -       m_initialized = true ;
1125.339 -     }
1125.340 -
1125.341 -    template<class Expr>
1125.342 -    void assign_expr_to_initialized ( Expr const& factory, in_place_factory_base const* tag )
1125.343 -     {
1125.344 -       destroy();
1125.345 -       construct(factory,tag);
1125.346 -     }
1125.347 -
1125.348 -    // Constructs in-place using the given typed factory
1125.349 -    template<class Expr>
1125.350 -    void assign_expr_to_initialized ( Expr const& factory, typed_in_place_factory_base const* tag )
1125.351 -     {
1125.352 -       destroy();
1125.353 -       construct(factory,tag);
1125.354 -     }
1125.355 -#endif
1125.356 -
1125.357 -    // Constructs using any expression implicitely convertible to the single argument
1125.358 -    // of a one-argument T constructor.
1125.359 -    // Converting constructions of optional<T> from optional<U> uses this function with
1125.360 -    // 'Expr' being of type 'U' and relying on a converting constructor of T from U.
1125.361 -    template<class Expr>
1125.362 -    void construct ( Expr const& expr, void const* )
1125.363 -     {
1125.364 -       new (m_storage.address()) internal_type(expr) ;
1125.365 -       m_initialized = true ;
1125.366 -     }
1125.367 -
1125.368 -    // Assigns using a form any expression implicitely convertible to the single argument
1125.369 -    // of a T's assignment operator.
1125.370 -    // Converting assignments of optional<T> from optional<U> uses this function with
1125.371 -    // 'Expr' being of type 'U' and relying on a converting assignment of T from U.
1125.372 -    template<class Expr>
1125.373 -    void assign_expr_to_initialized ( Expr const& expr, void const* )
1125.374 -     {
1125.375 -       assign_value(expr, is_reference_predicate());
1125.376 -     }
1125.377 -
1125.378 -#ifdef BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION
1125.379 -    // BCB5.64 (and probably lower versions) workaround.
1125.380 -    //   The in-place factories are supported by means of catch-all constructors
1125.381 -    //   and assignment operators (the functions are parameterized in terms of
1125.382 -    //   an arbitrary 'Expr' type)
1125.383 -    //   This compiler incorrectly resolves the overload set and sinks optional<T> and optional<U>
1125.384 -    //   to the 'Expr'-taking functions even though explicit overloads are present for them.
1125.385 -    //   Thus, the following overload is needed to properly handle the case when the 'lhs'
1125.386 -    //   is another optional.
1125.387 -    //
1125.388 -    // For VC<=70 compilers this workaround dosen't work becasue the comnpiler issues and error
1125.389 -    // instead of choosing the wrong overload
1125.390 -    //
1125.391 -    // Notice that 'Expr' will be optional<T> or optional<U> (but not optional_base<..>)
1125.392 -    template<class Expr>
1125.393 -    void construct ( Expr const& expr, optional_tag const* )
1125.394 -     {
1125.395 -       if ( expr.is_initialized() )
1125.396 -       {
1125.397 -         // An exception can be thrown here.
1125.398 -         // It it happens, THIS will be left uninitialized.
1125.399 -         new (m_storage.address()) internal_type(expr.get()) ;
1125.400 -         m_initialized = true ;
1125.401 -       }
1125.402 -     }
1125.403 -#endif
1125.404 -
1125.405 -    void assign_value ( argument_type val, is_not_reference_tag ) { get_impl() = val; }
1125.406 -    void assign_value ( argument_type val, is_reference_tag     ) { construct(val); }
1125.407 -
1125.408 -    void destroy()
1125.409 -    {
1125.410 -      if ( m_initialized )
1125.411 -        destroy_impl(is_reference_predicate()) ;
1125.412 -    }
1125.413 -
1125.414 -    unspecified_bool_type safe_bool() const { return m_initialized ? &this_type::is_initialized : 0 ; }
1125.415 -
1125.416 -    reference_const_type get_impl() const { return dereference(get_object(), is_reference_predicate() ) ; }
1125.417 -    reference_type       get_impl()       { return dereference(get_object(), is_reference_predicate() ) ; }
1125.418 -
1125.419 -    pointer_const_type get_ptr_impl() const { return cast_ptr(get_object(), is_reference_predicate() ) ; }
1125.420 -    pointer_type       get_ptr_impl()       { return cast_ptr(get_object(), is_reference_predicate() ) ; }
1125.421 -
1125.422 -  private :
1125.423 -
1125.424 -    // internal_type can be either T or reference_content<T>
1125.425 -    internal_type const* get_object() const { return static_cast<internal_type const*>(m_storage.address()); }
1125.426 -    internal_type *      get_object()       { return static_cast<internal_type *>     (m_storage.address()); }
1125.427 -
1125.428 -    // reference_content<T> lacks an implicit conversion to T&, so the following is needed to obtain a proper reference.
1125.429 -    reference_const_type dereference( internal_type const* p, is_not_reference_tag ) const { return *p ; }
1125.430 -    reference_type       dereference( internal_type*       p, is_not_reference_tag )       { return *p ; }
1125.431 -    reference_const_type dereference( internal_type const* p, is_reference_tag     ) const { return p->get() ; }
1125.432 -    reference_type       dereference( internal_type*       p, is_reference_tag     )       { return p->get() ; }
1125.433 -
1125.434 -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))
1125.435 -    void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->internal_type::~internal_type() ; m_initialized = false ; }
1125.436 -#else
1125.437 -    void destroy_impl ( is_not_reference_tag ) { get_ptr_impl()->T::~T() ; m_initialized = false ; }
1125.438 -#endif
1125.439 -
1125.440 -    void destroy_impl ( is_reference_tag     ) { m_initialized = false ; }
1125.441 -
1125.442 -    // If T is of reference type, trying to get a pointer to the held value must result in a compile-time error.
1125.443 -    // Decent compilers should disallow conversions from reference_content<T>* to T*, but just in case,
1125.444 -    // the following olverloads are used to filter out the case and guarantee an error in case of T being a reference.
1125.445 -    pointer_const_type cast_ptr( internal_type const* p, is_not_reference_tag ) const { return p ; }
1125.446 -    pointer_type       cast_ptr( internal_type *      p, is_not_reference_tag )       { return p ; }
1125.447 -    pointer_const_type cast_ptr( internal_type const* p, is_reference_tag     ) const { return &p->get() ; }
1125.448 -    pointer_type       cast_ptr( internal_type *      p, is_reference_tag     )       { return &p->get() ; }
1125.449 -
1125.450 -    bool m_initialized ;
1125.451 -    storage_type m_storage ;
1125.452 -} ;
1125.453 -
1125.454 -} // namespace optional_detail
1125.455 -
1125.456 -template<class T>
1125.457 -class optional : public optional_detail::optional_base<T>
1125.458 -{
1125.459 -    typedef optional_detail::optional_base<T> base ;
1125.460 -
1125.461 -    typedef BOOST_DEDUCED_TYPENAME base::unspecified_bool_type  unspecified_bool_type ;
1125.462 -
1125.463 -  public :
1125.464 -
1125.465 -    typedef optional<T> this_type ;
1125.466 -
1125.467 -    typedef BOOST_DEDUCED_TYPENAME base::value_type           value_type ;
1125.468 -    typedef BOOST_DEDUCED_TYPENAME base::reference_type       reference_type ;
1125.469 -    typedef BOOST_DEDUCED_TYPENAME base::reference_const_type reference_const_type ;
1125.470 -    typedef BOOST_DEDUCED_TYPENAME base::pointer_type         pointer_type ;
1125.471 -    typedef BOOST_DEDUCED_TYPENAME base::pointer_const_type   pointer_const_type ;
1125.472 -    typedef BOOST_DEDUCED_TYPENAME base::argument_type        argument_type ;
1125.473 -
1125.474 -    // Creates an optional<T> uninitialized.
1125.475 -    // No-throw
1125.476 -    optional() : base() {}
1125.477 -
1125.478 -    // Creates an optional<T> uninitialized.
1125.479 -    // No-throw
1125.480 -    optional( none_t none_ ) : base(none_) {}
1125.481 -
1125.482 -    // Creates an optional<T> initialized with 'val'.
1125.483 -    // Can throw if T::T(T const&) does
1125.484 -    optional ( argument_type val ) : base(val) {}
1125.485 -
1125.486 -    // Creates an optional<T> initialized with 'val' IFF cond is true, otherwise creates an uninitialized optional.
1125.487 -    // Can throw if T::T(T const&) does
1125.488 -    optional ( bool cond, argument_type val ) : base(cond,val) {}
1125.489 -
1125.490 -#ifndef BOOST_OPTIONAL_NO_CONVERTING_COPY_CTOR
1125.491 -    // NOTE: MSVC needs templated versions first
1125.492 -
1125.493 -    // Creates a deep copy of another convertible optional<U>
1125.494 -    // Requires a valid conversion from U to T.
1125.495 -    // Can throw if T::T(U const&) does
1125.496 -    template<class U>
1125.497 -    explicit optional ( optional<U> const& rhs )
1125.498 -      :
1125.499 -      base()
1125.500 -    {
1125.501 -      if ( rhs.is_initialized() )
1125.502 -        this->construct(rhs.get());
1125.503 -    }
1125.504 -#endif
1125.505 -
1125.506 -#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
1125.507 -    // Creates an optional<T> with an expression which can be either
1125.508 -    //  (a) An instance of InPlaceFactory (i.e. in_place(a,b,...,n);
1125.509 -    //  (b) An instance of TypedInPlaceFactory ( i.e. in_place<T>(a,b,...,n);
1125.510 -    //  (c) Any expression implicitely convertible to the single type
1125.511 -    //      of a one-argument T's constructor.
1125.512 -    //  (d*) Weak compilers (BCB) might also resolved Expr as optional<T> and optional<U>
1125.513 -    //       even though explicit overloads are present for these.
1125.514 -    // Depending on the above some T ctor is called.
1125.515 -    // Can throw is the resolved T ctor throws.
1125.516 -    template<class Expr>
1125.517 -    explicit optional ( Expr const& expr ) : base(expr,&expr) {}
1125.518 -#endif
1125.519 -
1125.520 -    // Creates a deep copy of another optional<T>
1125.521 -    // Can throw if T::T(T const&) does
1125.522 -    optional ( optional const& rhs ) : base(rhs) {}
1125.523 -
1125.524 -   // No-throw (assuming T::~T() doesn't)
1125.525 -    ~optional() {}
1125.526 -
1125.527 -#if !defined(BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT) && !defined(BOOST_OPTIONAL_WEAK_OVERLOAD_RESOLUTION)
1125.528 -    // Assigns from an expression. See corresponding constructor.
1125.529 -    // Basic Guarantee: If the resolved T ctor throws, this is left UNINITIALIZED
1125.530 -    template<class Expr>
1125.531 -    optional& operator= ( Expr expr )
1125.532 -      {
1125.533 -        this->assign_expr(expr,&expr);
1125.534 -        return *this ;
1125.535 -      }
1125.536 -#endif
1125.537 -
1125.538 -
1125.539 -#ifndef BOOST_OPTIONAL_NO_CONVERTING_ASSIGNMENT
1125.540 -    // Assigns from another convertible optional<U> (converts && deep-copies the rhs value)
1125.541 -    // Requires a valid conversion from U to T.
1125.542 -    // Basic Guarantee: If T::T( U const& ) throws, this is left UNINITIALIZED
1125.543 -    template<class U>
1125.544 -    optional& operator= ( optional<U> const& rhs )
1125.545 -      {
1125.546 -        this->assign(rhs);
1125.547 -        return *this ;
1125.548 -      }
1125.549 -#endif
1125.550 -
1125.551 -    // Assigns from another optional<T> (deep-copies the rhs value)
1125.552 -    // Basic Guarantee: If T::T( T const& ) throws, this is left UNINITIALIZED
1125.553 -    //  (NOTE: On BCB, this operator is not actually called and left is left UNMODIFIED in case of a throw)
1125.554 -    optional& operator= ( optional const& rhs )
1125.555 -      {
1125.556 -        this->assign( rhs ) ;
1125.557 -        return *this ;
1125.558 -      }
1125.559 -
1125.560 -    // Assigns from a T (deep-copies the rhs value)
1125.561 -    // Basic Guarantee: If T::( T const& ) throws, this is left UNINITIALIZED
1125.562 -    optional& operator= ( argument_type val )
1125.563 -      {
1125.564 -        this->assign( val ) ;
1125.565 -        return *this ;
1125.566 -      }
1125.567 -
1125.568 -    // Assigns from a "none"
1125.569 -    // Which destroys the current value, if any, leaving this UNINITIALIZED
1125.570 -    // No-throw (assuming T::~T() doesn't)
1125.571 -    optional& operator= ( none_t none_ )
1125.572 -      {
1125.573 -        this->assign( none_ ) ;
1125.574 -        return *this ;
1125.575 -      }
1125.576 -
1125.577 -    // Returns a reference to the value if this is initialized, otherwise,
1125.578 -    // the behaviour is UNDEFINED
1125.579 -    // No-throw
1125.580 -    reference_const_type get() const { BOOST_ASSERT(this->is_initialized()) ; return this->get_impl(); }
1125.581 -    reference_type       get()       { BOOST_ASSERT(this->is_initialized()) ; return this->get_impl(); }
1125.582 -
1125.583 -    // Returns a copy of the value if this is initialized, 'v' otherwise
1125.584 -    reference_const_type get_value_or ( reference_const_type v ) const { return this->is_initialized() ? get() : v ; }
1125.585 -    reference_type       get_value_or ( reference_type       v )       { return this->is_initialized() ? get() : v ; }
1125.586 -    
1125.587 -    // Returns a pointer to the value if this is initialized, otherwise,
1125.588 -    // the behaviour is UNDEFINED
1125.589 -    // No-throw
1125.590 -    pointer_const_type operator->() const { BOOST_ASSERT(this->is_initialized()) ; return this->get_ptr_impl() ; }
1125.591 -    pointer_type       operator->()       { BOOST_ASSERT(this->is_initialized()) ; return this->get_ptr_impl() ; }
1125.592 -
1125.593 -    // Returns a reference to the value if this is initialized, otherwise,
1125.594 -    // the behaviour is UNDEFINED
1125.595 -    // No-throw
1125.596 -    reference_const_type operator *() const { return this->get() ; }
1125.597 -    reference_type       operator *()       { return this->get() ; }
1125.598 -
1125.599 -    // implicit conversion to "bool"
1125.600 -    // No-throw
1125.601 -    operator unspecified_bool_type() const { return this->safe_bool() ; }
1125.602 -
1125.603 -       // This is provided for those compilers which don't like the conversion to bool
1125.604 -       // on some contexts.
1125.605 -       bool operator!() const { return !this->is_initialized() ; }
1125.606 -} ;
1125.607 -
1125.608 -// Returns optional<T>(v)
1125.609 -template<class T> 
1125.610 -inline 
1125.611 -optional<T> make_optional ( T const& v  )
1125.612 -{
1125.613 -  return optional<T>(v);
1125.614 -}
1125.615 -
1125.616 -// Returns optional<T>(cond,v)
1125.617 -template<class T> 
1125.618 -inline 
1125.619 -optional<T> make_optional ( bool cond, T const& v )
1125.620 -{
1125.621 -  return optional<T>(cond,v);
1125.622 -}
1125.623 -
1125.624 -// Returns a reference to the value if this is initialized, otherwise, the behaviour is UNDEFINED.
1125.625 -// No-throw
1125.626 -template<class T>
1125.627 -inline
1125.628 -BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type
1125.629 -get ( optional<T> const& opt )
1125.630 -{
1125.631 -  return opt.get() ;
1125.632 -}
1125.633 -
1125.634 -template<class T>
1125.635 -inline
1125.636 -BOOST_DEDUCED_TYPENAME optional<T>::reference_type
1125.637 -get ( optional<T>& opt )
1125.638 -{
1125.639 -  return opt.get() ;
1125.640 -}
1125.641 -
1125.642 -// Returns a pointer to the value if this is initialized, otherwise, returns NULL.
1125.643 -// No-throw
1125.644 -template<class T>
1125.645 -inline
1125.646 -BOOST_DEDUCED_TYPENAME optional<T>::pointer_const_type
1125.647 -get ( optional<T> const* opt )
1125.648 -{
1125.649 -  return opt->get_ptr() ;
1125.650 -}
1125.651 -
1125.652 -template<class T>
1125.653 -inline
1125.654 -BOOST_DEDUCED_TYPENAME optional<T>::pointer_type
1125.655 -get ( optional<T>* opt )
1125.656 -{
1125.657 -  return opt->get_ptr() ;
1125.658 -}
1125.659 -
1125.660 -// Returns a reference to the value if this is initialized, otherwise, the behaviour is UNDEFINED.
1125.661 -// No-throw
1125.662 -template<class T>
1125.663 -inline
1125.664 -BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type
1125.665 -get_optional_value_or ( optional<T> const& opt, BOOST_DEDUCED_TYPENAME optional<T>::reference_const_type v )
1125.666 -{
1125.667 -  return opt.get_value_or(v) ;
1125.668 -}
1125.669 -
1125.670 -template<class T>
1125.671 -inline
1125.672 -BOOST_DEDUCED_TYPENAME optional<T>::reference_type
1125.673 -get_optional_value_or ( optional<T>& opt, BOOST_DEDUCED_TYPENAME optional<T>::reference_type v )
1125.674 -{
1125.675 -  return opt.get_value_or(v) ;
1125.676 -}
1125.677 -
1125.678 -// Returns a pointer to the value if this is initialized, otherwise, returns NULL.
1125.679 -// No-throw
1125.680 -template<class T>
1125.681 -inline
1125.682 -BOOST_DEDUCED_TYPENAME optional<T>::pointer_const_type
1125.683 -get_pointer ( optional<T> const& opt )
1125.684 -{
1125.685 -  return opt.get_ptr() ;
1125.686 -}
1125.687 -
1125.688 -template<class T>
1125.689 -inline
1125.690 -BOOST_DEDUCED_TYPENAME optional<T>::pointer_type
1125.691 -get_pointer ( optional<T>& opt )
1125.692 -{
1125.693 -  return opt.get_ptr() ;
1125.694 -}
1125.695 -
1125.696 -// optional's relational operators ( ==, !=, <, >, <=, >= ) have deep-semantics (compare values).
1125.697 -// WARNING: This is UNLIKE pointers. Use equal_pointees()/less_pointess() in generic code instead.
1125.698 -
1125.699 -
1125.700 -//
1125.701 -// optional<T> vs optional<T> cases
1125.702 -//
1125.703 -
1125.704 -template<class T>
1125.705 -inline
1125.706 -bool operator == ( optional<T> const& x, optional<T> const& y )
1125.707 -{ return equal_pointees(x,y); }
1125.708 -
1125.709 -template<class T>
1125.710 -inline
1125.711 -bool operator < ( optional<T> const& x, optional<T> const& y )
1125.712 -{ return less_pointees(x,y); }
1125.713 -
1125.714 -template<class T>
1125.715 -inline
1125.716 -bool operator != ( optional<T> const& x, optional<T> const& y )
1125.717 -{ return !( x == y ) ; }
1125.718 -
1125.719 -template<class T>
1125.720 -inline
1125.721 -bool operator > ( optional<T> const& x, optional<T> const& y )
1125.722 -{ return y < x ; }
1125.723 -
1125.724 -template<class T>
1125.725 -inline
1125.726 -bool operator <= ( optional<T> const& x, optional<T> const& y )
1125.727 -{ return !( y < x ) ; }
1125.728 -
1125.729 -template<class T>
1125.730 -inline
1125.731 -bool operator >= ( optional<T> const& x, optional<T> const& y )
1125.732 -{ return !( x < y ) ; }
1125.733 -
1125.734 -
1125.735 -//
1125.736 -// optional<T> vs T cases
1125.737 -//
1125.738 -template<class T>
1125.739 -inline
1125.740 -bool operator == ( optional<T> const& x, T const& y )
1125.741 -{ return equal_pointees(x, optional<T>(y)); }
1125.742 -
1125.743 -template<class T>
1125.744 -inline
1125.745 -bool operator < ( optional<T> const& x, T const& y )
1125.746 -{ return less_pointees(x, optional<T>(y)); }
1125.747 -
1125.748 -template<class T>
1125.749 -inline
1125.750 -bool operator != ( optional<T> const& x, T const& y )
1125.751 -{ return !( x == y ) ; }
1125.752 -
1125.753 -template<class T>
1125.754 -inline
1125.755 -bool operator > ( optional<T> const& x, T const& y )
1125.756 -{ return y < x ; }
1125.757 -
1125.758 -template<class T>
1125.759 -inline
1125.760 -bool operator <= ( optional<T> const& x, T const& y )
1125.761 -{ return !( y < x ) ; }
1125.762 -
1125.763 -template<class T>
1125.764 -inline
1125.765 -bool operator >= ( optional<T> const& x, T const& y )
1125.766 -{ return !( x < y ) ; }
1125.767 -
1125.768 -//
1125.769 -// T vs optional<T> cases
1125.770 -//
1125.771 -
1125.772 -template<class T>
1125.773 -inline
1125.774 -bool operator == ( T const& x, optional<T> const& y )
1125.775 -{ return equal_pointees( optional<T>(x), y ); }
1125.776 -
1125.777 -template<class T>
1125.778 -inline
1125.779 -bool operator < ( T const& x, optional<T> const& y )
1125.780 -{ return less_pointees( optional<T>(x), y ); }
1125.781 -
1125.782 -template<class T>
1125.783 -inline
1125.784 -bool operator != ( T const& x, optional<T> const& y )
1125.785 -{ return !( x == y ) ; }
1125.786 -
1125.787 -template<class T>
1125.788 -inline
1125.789 -bool operator > ( T const& x, optional<T> const& y )
1125.790 -{ return y < x ; }
1125.791 -
1125.792 -template<class T>
1125.793 -inline
1125.794 -bool operator <= ( T const& x, optional<T> const& y )
1125.795 -{ return !( y < x ) ; }
1125.796 -
1125.797 -template<class T>
1125.798 -inline
1125.799 -bool operator >= ( T const& x, optional<T> const& y )
1125.800 -{ return !( x < y ) ; }
1125.801 -
1125.802 -
1125.803 -//
1125.804 -// optional<T> vs none cases
1125.805 -//
1125.806 -
1125.807 -template<class T>
1125.808 -inline
1125.809 -bool operator == ( optional<T> const& x, none_t )
1125.810 -{ return equal_pointees(x, optional<T>() ); }
1125.811 -
1125.812 -template<class T>
1125.813 -inline
1125.814 -bool operator < ( optional<T> const& x, none_t )
1125.815 -{ return less_pointees(x,optional<T>() ); }
1125.816 -
1125.817 -template<class T>
1125.818 -inline
1125.819 -bool operator != ( optional<T> const& x, none_t y )
1125.820 -{ return !( x == y ) ; }
1125.821 -
1125.822 -template<class T>
1125.823 -inline
1125.824 -bool operator > ( optional<T> const& x, none_t y )
1125.825 -{ return y < x ; }
1125.826 -
1125.827 -template<class T>
1125.828 -inline
1125.829 -bool operator <= ( optional<T> const& x, none_t y )
1125.830 -{ return !( y < x ) ; }
1125.831 -
1125.832 -template<class T>
1125.833 -inline
1125.834 -bool operator >= ( optional<T> const& x, none_t y )
1125.835 -{ return !( x < y ) ; }
1125.836 -
1125.837 -//
1125.838 -// none vs optional<T> cases
1125.839 -//
1125.840 -
1125.841 -template<class T>
1125.842 -inline
1125.843 -bool operator == ( none_t x, optional<T> const& y )
1125.844 -{ return equal_pointees(optional<T>() ,y); }
1125.845 -
1125.846 -template<class T>
1125.847 -inline
1125.848 -bool operator < ( none_t x, optional<T> const& y )
1125.849 -{ return less_pointees(optional<T>() ,y); }
1125.850 -
1125.851 -template<class T>
1125.852 -inline
1125.853 -bool operator != ( none_t x, optional<T> const& y )
1125.854 -{ return !( x == y ) ; }
1125.855 -
1125.856 -template<class T>
1125.857 -inline
1125.858 -bool operator > ( none_t x, optional<T> const& y )
1125.859 -{ return y < x ; }
1125.860 -
1125.861 -template<class T>
1125.862 -inline
1125.863 -bool operator <= ( none_t x, optional<T> const& y )
1125.864 -{ return !( y < x ) ; }
1125.865 -
1125.866 -template<class T>
1125.867 -inline
1125.868 -bool operator >= ( none_t x, optional<T> const& y )
1125.869 -{ return !( x < y ) ; }
1125.870 -
1125.871 -//
1125.872 -// The following swap implementation follows the GCC workaround as found in
1125.873 -//  "boost/detail/compressed_pair.hpp"
1125.874 -//
1125.875 -namespace optional_detail {
1125.876 -
1125.877 -// GCC < 3.2 gets the using declaration at namespace scope (FLC, DWA)
1125.878 -#if BOOST_WORKAROUND(__GNUC__, < 3)                             \
1125.879 -    || BOOST_WORKAROUND(__GNUC__, == 3) && __GNUC_MINOR__ <= 2
1125.880 -   using std::swap;
1125.881 -#define BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
1125.882 -#endif
1125.883 -
1125.884 -// optional's swap:
1125.885 -// If both are initialized, calls swap(T&, T&). If this swap throws, both will remain initialized but their values are now unspecified.
1125.886 -// If only one is initialized, calls U.reset(*I), THEN I.reset().
1125.887 -// If U.reset(*I) throws, both are left UNCHANGED (U is kept uinitialized and I is never reset)
1125.888 -// If both are uninitialized, do nothing (no-throw)
1125.889 -template<class T>
1125.890 -inline
1125.891 -void optional_swap ( optional<T>& x, optional<T>& y )
1125.892 -{
1125.893 -  if ( !x && !!y )
1125.894 -  {
1125.895 -    x.reset(*y);
1125.896 -    y.reset();
1125.897 -  }
1125.898 -  else if ( !!x && !y )
1125.899 -  {
1125.900 -    y.reset(*x);
1125.901 -    x.reset();
1125.902 -  }
1125.903 -  else if ( !!x && !!y )
1125.904 -  {
1125.905 -// GCC > 3.2 and all other compilers have the using declaration at function scope (FLC)
1125.906 -#ifndef BOOST_OPTIONAL_STD_SWAP_INTRODUCED_AT_NS_SCOPE
1125.907 -    // allow for Koenig lookup
1125.908 -    using std::swap ;
1125.909 -#endif
1125.910 -    swap(*x,*y);
1125.911 -  }
1125.912 -}
1125.913 -
1125.914 -} // namespace optional_detail
1125.915 -
1125.916 -template<class T> inline void swap ( optional<T>& x, optional<T>& y )
1125.917 -{
1125.918 -  optional_detail::optional_swap(x,y);
1125.919 -}
1125.920 -
1125.921 -
1125.922 -} // namespace boost
1125.923 -
1125.924 -#endif
1125.925 -
  1126.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1126.2 +++ b/epoc32/include/stdapis/boost/pending/detail/disjoint_sets.hpp	Wed Mar 31 12:27:01 2010 +0100
  1126.3 @@ -0,0 +1,220 @@
  1126.4 +//
  1126.5 +//=======================================================================
  1126.6 +// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
  1126.7 +// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
  1126.8 +//
  1126.9 +// Distributed under the Boost Software License, Version 1.0. (See
 1126.10 +// accompanying file LICENSE_1_0.txt or copy at
 1126.11 +// http://www.boost.org/LICENSE_1_0.txt)
 1126.12 +//=======================================================================
 1126.13 +//
 1126.14 +#ifndef BOOST_DISJOINT_SETS_HPP
 1126.15 +#define BOOST_DISJOINT_SETS_HPP
 1126.16 +
 1126.17 +#include <vector>
 1126.18 +#include <boost/graph/properties.hpp>
 1126.19 +#include <boost/pending/detail/disjoint_sets.hpp>
 1126.20 +
 1126.21 +namespace boost {
 1126.22 +
 1126.23 +  struct find_with_path_halving {
 1126.24 +    template <class ParentPA, class Vertex>
 1126.25 +    Vertex operator()(ParentPA p, Vertex v) { 
 1126.26 +      return detail::find_representative_with_path_halving(p, v);
 1126.27 +    }
 1126.28 +  };
 1126.29 +
 1126.30 +  struct find_with_full_path_compression {
 1126.31 +    template <class ParentPA, class Vertex>
 1126.32 +    Vertex operator()(ParentPA p, Vertex v){
 1126.33 +      return detail::find_representative_with_full_compression(p, v);
 1126.34 +    }
 1126.35 +  };
 1126.36 +
 1126.37 +  // This is a generalized functor to provide disjoint sets operations
 1126.38 +  // with "union by rank" and "path compression".  A disjoint-set data
 1126.39 +  // structure maintains a collection S={S1, S2, ..., Sk} of disjoint
 1126.40 +  // sets. Each set is identified by a representative, which is some
 1126.41 +  // member of of the set. Sets are represented by rooted trees. Two
 1126.42 +  // heuristics: "union by rank" and "path compression" are used to
 1126.43 +  // speed up the operations.
 1126.44 +
 1126.45 +  // Disjoint Set requires two vertex properties for internal use.  A
 1126.46 +  // RankPA and a ParentPA. The RankPA must map Vertex to some Integral type
 1126.47 +  // (preferably the size_type associated with Vertex). The ParentPA
 1126.48 +  // must map Vertex to Vertex.
 1126.49 +  template <class RankPA, class ParentPA,
 1126.50 +    class FindCompress = find_with_full_path_compression
 1126.51 +    >
 1126.52 +  class disjoint_sets {
 1126.53 +    typedef disjoint_sets self;
 1126.54 +    
 1126.55 +    inline disjoint_sets() {}
 1126.56 +  public:
 1126.57 +    inline disjoint_sets(RankPA r, ParentPA p) 
 1126.58 +      : rank(r), parent(p) {}
 1126.59 +
 1126.60 +    inline disjoint_sets(const self& c) 
 1126.61 +      : rank(c.rank), parent(c.parent) {}
 1126.62 +    
 1126.63 +    // Make Set -- Create a singleton set containing vertex x
 1126.64 +    template <class Element>
 1126.65 +    inline void make_set(Element x)
 1126.66 +    {
 1126.67 +      put(parent, x, x);
 1126.68 +      typedef typename property_traits<RankPA>::value_type R;
 1126.69 +      put(rank, x, R());
 1126.70 +    }
 1126.71 +    
 1126.72 +    // Link - union the two sets represented by vertex x and y
 1126.73 +    template <class Element>
 1126.74 +    inline void link(Element x, Element y)
 1126.75 +    {
 1126.76 +      detail::link_sets(parent, rank, x, y, rep);
 1126.77 +    }
 1126.78 +    
 1126.79 +    // Union-Set - union the two sets containing vertex x and y 
 1126.80 +    template <class Element>
 1126.81 +    inline void union_set(Element x, Element y)
 1126.82 +    {
 1126.83 +      link(find_set(x), find_set(y));
 1126.84 +    }
 1126.85 +    
 1126.86 +    // Find-Set - returns the Element representative of the set
 1126.87 +    // containing Element x and applies path compression.
 1126.88 +    template <class Element>
 1126.89 +    inline Element find_set(Element x)
 1126.90 +    {
 1126.91 +      return rep(parent, x);
 1126.92 +    }
 1126.93 +
 1126.94 +    template <class ElementIterator>
 1126.95 +    inline std::size_t count_sets(ElementIterator first, ElementIterator last)
 1126.96 +    {
 1126.97 +      std::size_t count = 0;  
 1126.98 +      for ( ; first != last; ++first)
 1126.99 +      if (get(parent, *first) == *first)
1126.100 +        ++count;
1126.101 +      return count;
1126.102 +    }
1126.103 +
1126.104 +    template <class ElementIterator>
1126.105 +    inline void normalize_sets(ElementIterator first, ElementIterator last)
1126.106 +    {
1126.107 +      for (; first != last; ++first) 
1126.108 +        detail::normalize_node(parent, *first);
1126.109 +    }    
1126.110 +    
1126.111 +    template <class ElementIterator>
1126.112 +    inline void compress_sets(ElementIterator first, ElementIterator last)
1126.113 +    {
1126.114 +      for (; first != last; ++first) 
1126.115 +        detail::find_representative_with_full_compression(parent, *first);
1126.116 +    }    
1126.117 +  protected:
1126.118 +    RankPA rank;
1126.119 +    ParentPA parent;
1126.120 +    FindCompress rep;
1126.121 +  };
1126.122 +
1126.123 +
1126.124 +  
1126.125 +
1126.126 +  template <class ID = identity_property_map,
1126.127 +            class InverseID = identity_property_map,
1126.128 +            class FindCompress = find_with_full_path_compression
1126.129 +            >
1126.130 +  class disjoint_sets_with_storage
1126.131 +  {
1126.132 +    typedef typename property_traits<ID>::value_type Index;
1126.133 +    typedef std::vector<Index> ParentContainer;
1126.134 +    typedef std::vector<unsigned char> RankContainer;
1126.135 +  public:
1126.136 +    typedef typename ParentContainer::size_type size_type;
1126.137 +
1126.138 +    disjoint_sets_with_storage(size_type n = 0,
1126.139 +                               ID id_ = ID(),
1126.140 +                               InverseID inv = InverseID())
1126.141 +      : id(id_), id_to_vertex(inv), rank(n, 0), parent(n)
1126.142 +    {
1126.143 +      for (Index i = 0; i < n; ++i)
1126.144 +        parent[i] = i;
1126.145 +    }
1126.146 +    // note this is not normally needed
1126.147 +    template <class Element>
1126.148 +    inline void 
1126.149 +    make_set(Element x) {
1126.150 +      parent[x] = x;
1126.151 +      rank[x]   = 0;
1126.152 +    }
1126.153 +    template <class Element>
1126.154 +    inline void 
1126.155 +    link(Element x, Element y)
1126.156 +    {
1126.157 +      extend_sets(x,y);
1126.158 +      detail::link_sets(&parent[0], &rank[0], 
1126.159 +                        get(id,x), get(id,y), rep);
1126.160 +    }
1126.161 +    template <class Element>
1126.162 +    inline void 
1126.163 +    union_set(Element x, Element y) {
1126.164 +      Element rx = find_set(x);
1126.165 +      Element ry = find_set(y);
1126.166 +      link(rx, ry);
1126.167 +    }
1126.168 +    template <class Element>
1126.169 +    inline Element find_set(Element x) {
1126.170 +      return id_to_vertex[rep(&parent[0], get(id,x))];
1126.171 +    }
1126.172 +
1126.173 +    template <class ElementIterator>
1126.174 +    inline std::size_t count_sets(ElementIterator first, ElementIterator last)
1126.175 +    {
1126.176 +      std::size_t count = 0;  
1126.177 +      for ( ; first != last; ++first)
1126.178 +      if (parent[*first] == *first)
1126.179 +        ++count;
1126.180 +      return count;
1126.181 +    }
1126.182 +
1126.183 +    template <class ElementIterator>
1126.184 +    inline void normalize_sets(ElementIterator first, ElementIterator last)
1126.185 +    {
1126.186 +      for (; first != last; ++first) 
1126.187 +        detail::normalize_node(&parent[0], *first);
1126.188 +    }    
1126.189 +    
1126.190 +    template <class ElementIterator>
1126.191 +    inline void compress_sets(ElementIterator first, ElementIterator last)
1126.192 +    {
1126.193 +      for (; first != last; ++first) 
1126.194 +        detail::find_representative_with_full_compression(&parent[0],
1126.195 +                                                          *first);
1126.196 +    }    
1126.197 +
1126.198 +    const ParentContainer& parents() { return parent; }
1126.199 +
1126.200 +  protected:
1126.201 +
1126.202 +    template <class Element>
1126.203 +    inline void 
1126.204 +    extend_sets(Element x, Element y)
1126.205 +    {
1126.206 +      Index needed = get(id,x) > get(id,y) ? get(id,x) + 1 : get(id,y) + 1;
1126.207 +      if (needed > parent.size()) {
1126.208 +        rank.insert(rank.end(), needed - rank.size(), 0);
1126.209 +        for (Index k = parent.size(); k < needed; ++k)
1126.210 +        parent.push_back(k);
1126.211 +      } 
1126.212 +    }
1126.213 +
1126.214 +    ID id;
1126.215 +    InverseID id_to_vertex;
1126.216 +    RankContainer rank;
1126.217 +    ParentContainer parent;
1126.218 +    FindCompress rep;
1126.219 +  };
1126.220 +
1126.221 +} // namespace boost
1126.222 +
1126.223 +#endif // BOOST_DISJOINT_SETS_HPP
  1127.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1127.2 +++ b/epoc32/include/stdapis/boost/pending/detail/property.hpp	Wed Mar 31 12:27:01 2010 +0100
  1127.3 @@ -0,0 +1,132 @@
  1127.4 +//  (C) Copyright Jeremy Siek 2004 
  1127.5 +//  Distributed under the Boost Software License, Version 1.0. (See
  1127.6 +//  accompanying file LICENSE_1_0.txt or copy at
  1127.7 +//  http://www.boost.org/LICENSE_1_0.txt)
  1127.8 +
  1127.9 +#ifndef BOOST_PROPERTY_HPP
 1127.10 +#define BOOST_PROPERTY_HPP
 1127.11 +
 1127.12 +#include <boost/pending/ct_if.hpp>
 1127.13 +
 1127.14 +namespace boost {
 1127.15 +
 1127.16 +  struct no_property { 
 1127.17 +    typedef no_property tag_type;
 1127.18 +    typedef no_property next_type;
 1127.19 +    typedef no_property value_type;
 1127.20 +    enum { num = 0 };
 1127.21 +    typedef void kind;
 1127.22 +  };
 1127.23 +
 1127.24 +  template <class Tag, class T, class Base = no_property>
 1127.25 +  struct property : public Base {
 1127.26 +    typedef Base next_type;
 1127.27 +    typedef Tag tag_type;
 1127.28 +    typedef T value_type;
 1127.29 +#if BOOST_WORKAROUND (__GNUC__, < 3)
 1127.30 +    property() { }
 1127.31 +#else
 1127.32 +    property() : m_value() { }
 1127.33 +#endif
 1127.34 +    property(const T& v) : m_value(v) { }
 1127.35 +    property(const T& v, const Base& b) : Base(b), m_value(v) { }
 1127.36 +    // copy constructor and assignment operator will be generated by compiler
 1127.37 +
 1127.38 +    T m_value;
 1127.39 +  };
 1127.40 +
 1127.41 +  // The BGL properties specialize property_kind and
 1127.42 +  // property_num, and use enum's for the Property type (see
 1127.43 +  // graph/properties.hpp), but the user may want to use a class
 1127.44 +  // instead with a nested kind type and num.  Also, we may want to
 1127.45 +  // switch BGL back to using class types for properties at some point.
 1127.46 +
 1127.47 +  template <class PropertyTag>
 1127.48 +  struct property_kind {
 1127.49 +    typedef typename PropertyTag::kind type;
 1127.50 +  };
 1127.51 +
 1127.52 +  template <class P>
 1127.53 +  struct has_property { 
 1127.54 +    BOOST_STATIC_CONSTANT(bool, value = true);
 1127.55 +    typedef true_type type;
 1127.56 +  };
 1127.57 +  template <>
 1127.58 +  struct has_property<no_property> { 
 1127.59 +    BOOST_STATIC_CONSTANT(bool, value = false); 
 1127.60 +    typedef false_type type; 
 1127.61 +  };
 1127.62 +
 1127.63 +} // namespace boost
 1127.64 +
 1127.65 +#include <boost/pending/detail/property.hpp>
 1127.66 +
 1127.67 +namespace boost {
 1127.68 +
 1127.69 +  template <class PropertyList, class Tag>
 1127.70 +  struct property_value {
 1127.71 +#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1127.72 +    typedef typename detail::build_property_tag_value_alist<PropertyList>::type AList;
 1127.73 +    typedef typename detail::extract_value<AList,Tag>::type type;
 1127.74 +#else
 1127.75 +    typedef typename detail::build_property_tag_value_alist<PropertyList>::type AList;
 1127.76 +    typedef typename detail::ev_selector<AList>::type Extractor;
 1127.77 +    typedef typename Extractor::template bind_<AList,Tag>::type type;
 1127.78 +#endif  
 1127.79 +  };
 1127.80 +
 1127.81 +  template <class Tag1, class Tag2, class T1, class Base>
 1127.82 +  inline typename property_value<property<Tag1,T1,Base>, Tag2>::type& 
 1127.83 +  get_property_value(property<Tag1,T1,Base>& p, Tag2 tag2) {
 1127.84 +    BOOST_STATIC_CONSTANT(bool, 
 1127.85 +                          match = (detail::same_property<Tag1,Tag2>::value));
 1127.86 +    typedef property<Tag1,T1,Base> Prop;
 1127.87 +    typedef typename property_value<Prop, Tag2>::type T2;
 1127.88 +    T2* t2 = 0;
 1127.89 +    typedef detail::property_value_dispatch<match> Dispatcher;
 1127.90 +    return Dispatcher::get_value(p, t2, tag2);
 1127.91 +  }
 1127.92 +  template <class Tag1, class Tag2, class T1, class Base>
 1127.93 +  inline
 1127.94 +  const typename property_value<property<Tag1,T1,Base>, Tag2>::type& 
 1127.95 +  get_property_value(const property<Tag1,T1,Base>& p, Tag2 tag2) {
 1127.96 +    BOOST_STATIC_CONSTANT(bool, 
 1127.97 +                          match = (detail::same_property<Tag1,Tag2>::value));
 1127.98 +    typedef property<Tag1,T1,Base> Prop;
 1127.99 +    typedef typename property_value<Prop, Tag2>::type T2;
1127.100 +    T2* t2 = 0;
1127.101 +    typedef detail::property_value_dispatch<match> Dispatcher;
1127.102 +    return Dispatcher::const_get_value(p, t2, tag2);
1127.103 +  }
1127.104 +
1127.105 + namespace detail {
1127.106 +#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1127.107 +   template<typename FinalTag, typename FinalType>
1127.108 +   struct retag_property_list
1127.109 +   {
1127.110 +     typedef property<FinalTag, FinalType> type;
1127.111 +     typedef FinalType retagged;
1127.112 +   };
1127.113 +
1127.114 +   template<typename FinalTag, typename Tag, typename T, typename Base>
1127.115 +   struct retag_property_list<FinalTag, property<Tag, T, Base> >
1127.116 +   {
1127.117 +   private:
1127.118 +     typedef retag_property_list<FinalTag, Base> next;
1127.119 +
1127.120 +   public:
1127.121 +     typedef property<Tag, T, typename next::type> type;
1127.122 +     typedef typename next::retagged retagged;
1127.123 +   };
1127.124 +
1127.125 +   template<typename FinalTag>
1127.126 +   struct retag_property_list<FinalTag, no_property>
1127.127 +   {
1127.128 +     typedef no_property type;
1127.129 +     typedef no_property retagged;
1127.130 +   };
1127.131 +#endif
1127.132 +  }
1127.133 +} // namesapce boost
1127.134 +
1127.135 +#endif /* BOOST_PROPERTY_HPP */
  1128.1 --- a/epoc32/include/stdapis/boost/pending/disjoint_sets.hpp	Tue Mar 16 16:12:26 2010 +0000
  1128.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1128.3 @@ -1,220 +0,0 @@
  1128.4 -//
  1128.5 -//=======================================================================
  1128.6 -// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
  1128.7 -// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
  1128.8 -//
  1128.9 -// Distributed under the Boost Software License, Version 1.0. (See
 1128.10 -// accompanying file LICENSE_1_0.txt or copy at
 1128.11 -// http://www.boost.org/LICENSE_1_0.txt)
 1128.12 -//=======================================================================
 1128.13 -//
 1128.14 -#ifndef BOOST_DISJOINT_SETS_HPP
 1128.15 -#define BOOST_DISJOINT_SETS_HPP
 1128.16 -
 1128.17 -#include <vector>
 1128.18 -#include <boost/graph/properties.hpp>
 1128.19 -#include <boost/pending/detail/disjoint_sets.hpp>
 1128.20 -
 1128.21 -namespace boost {
 1128.22 -
 1128.23 -  struct find_with_path_halving {
 1128.24 -    template <class ParentPA, class Vertex>
 1128.25 -    Vertex operator()(ParentPA p, Vertex v) { 
 1128.26 -      return detail::find_representative_with_path_halving(p, v);
 1128.27 -    }
 1128.28 -  };
 1128.29 -
 1128.30 -  struct find_with_full_path_compression {
 1128.31 -    template <class ParentPA, class Vertex>
 1128.32 -    Vertex operator()(ParentPA p, Vertex v){
 1128.33 -      return detail::find_representative_with_full_compression(p, v);
 1128.34 -    }
 1128.35 -  };
 1128.36 -
 1128.37 -  // This is a generalized functor to provide disjoint sets operations
 1128.38 -  // with "union by rank" and "path compression".  A disjoint-set data
 1128.39 -  // structure maintains a collection S={S1, S2, ..., Sk} of disjoint
 1128.40 -  // sets. Each set is identified by a representative, which is some
 1128.41 -  // member of of the set. Sets are represented by rooted trees. Two
 1128.42 -  // heuristics: "union by rank" and "path compression" are used to
 1128.43 -  // speed up the operations.
 1128.44 -
 1128.45 -  // Disjoint Set requires two vertex properties for internal use.  A
 1128.46 -  // RankPA and a ParentPA. The RankPA must map Vertex to some Integral type
 1128.47 -  // (preferably the size_type associated with Vertex). The ParentPA
 1128.48 -  // must map Vertex to Vertex.
 1128.49 -  template <class RankPA, class ParentPA,
 1128.50 -    class FindCompress = find_with_full_path_compression
 1128.51 -    >
 1128.52 -  class disjoint_sets {
 1128.53 -    typedef disjoint_sets self;
 1128.54 -    
 1128.55 -    inline disjoint_sets() {}
 1128.56 -  public:
 1128.57 -    inline disjoint_sets(RankPA r, ParentPA p) 
 1128.58 -      : rank(r), parent(p) {}
 1128.59 -
 1128.60 -    inline disjoint_sets(const self& c) 
 1128.61 -      : rank(c.rank), parent(c.parent) {}
 1128.62 -    
 1128.63 -    // Make Set -- Create a singleton set containing vertex x
 1128.64 -    template <class Element>
 1128.65 -    inline void make_set(Element x)
 1128.66 -    {
 1128.67 -      put(parent, x, x);
 1128.68 -      typedef typename property_traits<RankPA>::value_type R;
 1128.69 -      put(rank, x, R());
 1128.70 -    }
 1128.71 -    
 1128.72 -    // Link - union the two sets represented by vertex x and y
 1128.73 -    template <class Element>
 1128.74 -    inline void link(Element x, Element y)
 1128.75 -    {
 1128.76 -      detail::link_sets(parent, rank, x, y, rep);
 1128.77 -    }
 1128.78 -    
 1128.79 -    // Union-Set - union the two sets containing vertex x and y 
 1128.80 -    template <class Element>
 1128.81 -    inline void union_set(Element x, Element y)
 1128.82 -    {
 1128.83 -      link(find_set(x), find_set(y));
 1128.84 -    }
 1128.85 -    
 1128.86 -    // Find-Set - returns the Element representative of the set
 1128.87 -    // containing Element x and applies path compression.
 1128.88 -    template <class Element>
 1128.89 -    inline Element find_set(Element x)
 1128.90 -    {
 1128.91 -      return rep(parent, x);
 1128.92 -    }
 1128.93 -
 1128.94 -    template <class ElementIterator>
 1128.95 -    inline std::size_t count_sets(ElementIterator first, ElementIterator last)
 1128.96 -    {
 1128.97 -      std::size_t count = 0;  
 1128.98 -      for ( ; first != last; ++first)
 1128.99 -      if (get(parent, *first) == *first)
1128.100 -        ++count;
1128.101 -      return count;
1128.102 -    }
1128.103 -
1128.104 -    template <class ElementIterator>
1128.105 -    inline void normalize_sets(ElementIterator first, ElementIterator last)
1128.106 -    {
1128.107 -      for (; first != last; ++first) 
1128.108 -        detail::normalize_node(parent, *first);
1128.109 -    }    
1128.110 -    
1128.111 -    template <class ElementIterator>
1128.112 -    inline void compress_sets(ElementIterator first, ElementIterator last)
1128.113 -    {
1128.114 -      for (; first != last; ++first) 
1128.115 -        detail::find_representative_with_full_compression(parent, *first);
1128.116 -    }    
1128.117 -  protected:
1128.118 -    RankPA rank;
1128.119 -    ParentPA parent;
1128.120 -    FindCompress rep;
1128.121 -  };
1128.122 -
1128.123 -
1128.124 -  
1128.125 -
1128.126 -  template <class ID = identity_property_map,
1128.127 -            class InverseID = identity_property_map,
1128.128 -            class FindCompress = find_with_full_path_compression
1128.129 -            >
1128.130 -  class disjoint_sets_with_storage
1128.131 -  {
1128.132 -    typedef typename property_traits<ID>::value_type Index;
1128.133 -    typedef std::vector<Index> ParentContainer;
1128.134 -    typedef std::vector<unsigned char> RankContainer;
1128.135 -  public:
1128.136 -    typedef typename ParentContainer::size_type size_type;
1128.137 -
1128.138 -    disjoint_sets_with_storage(size_type n = 0,
1128.139 -                               ID id_ = ID(),
1128.140 -                               InverseID inv = InverseID())
1128.141 -      : id(id_), id_to_vertex(inv), rank(n, 0), parent(n)
1128.142 -    {
1128.143 -      for (Index i = 0; i < n; ++i)
1128.144 -        parent[i] = i;
1128.145 -    }
1128.146 -    // note this is not normally needed
1128.147 -    template <class Element>
1128.148 -    inline void 
1128.149 -    make_set(Element x) {
1128.150 -      parent[x] = x;
1128.151 -      rank[x]   = 0;
1128.152 -    }
1128.153 -    template <class Element>
1128.154 -    inline void 
1128.155 -    link(Element x, Element y)
1128.156 -    {
1128.157 -      extend_sets(x,y);
1128.158 -      detail::link_sets(&parent[0], &rank[0], 
1128.159 -                        get(id,x), get(id,y), rep);
1128.160 -    }
1128.161 -    template <class Element>
1128.162 -    inline void 
1128.163 -    union_set(Element x, Element y) {
1128.164 -      Element rx = find_set(x);
1128.165 -      Element ry = find_set(y);
1128.166 -      link(rx, ry);
1128.167 -    }
1128.168 -    template <class Element>
1128.169 -    inline Element find_set(Element x) {
1128.170 -      return id_to_vertex[rep(&parent[0], get(id,x))];
1128.171 -    }
1128.172 -
1128.173 -    template <class ElementIterator>
1128.174 -    inline std::size_t count_sets(ElementIterator first, ElementIterator last)
1128.175 -    {
1128.176 -      std::size_t count = 0;  
1128.177 -      for ( ; first != last; ++first)
1128.178 -      if (parent[*first] == *first)
1128.179 -        ++count;
1128.180 -      return count;
1128.181 -    }
1128.182 -
1128.183 -    template <class ElementIterator>
1128.184 -    inline void normalize_sets(ElementIterator first, ElementIterator last)
1128.185 -    {
1128.186 -      for (; first != last; ++first) 
1128.187 -        detail::normalize_node(&parent[0], *first);
1128.188 -    }    
1128.189 -    
1128.190 -    template <class ElementIterator>
1128.191 -    inline void compress_sets(ElementIterator first, ElementIterator last)
1128.192 -    {
1128.193 -      for (; first != last; ++first) 
1128.194 -        detail::find_representative_with_full_compression(&parent[0],
1128.195 -                                                          *first);
1128.196 -    }    
1128.197 -
1128.198 -    const ParentContainer& parents() { return parent; }
1128.199 -
1128.200 -  protected:
1128.201 -
1128.202 -    template <class Element>
1128.203 -    inline void 
1128.204 -    extend_sets(Element x, Element y)
1128.205 -    {
1128.206 -      Index needed = get(id,x) > get(id,y) ? get(id,x) + 1 : get(id,y) + 1;
1128.207 -      if (needed > parent.size()) {
1128.208 -        rank.insert(rank.end(), needed - rank.size(), 0);
1128.209 -        for (Index k = parent.size(); k < needed; ++k)
1128.210 -        parent.push_back(k);
1128.211 -      } 
1128.212 -    }
1128.213 -
1128.214 -    ID id;
1128.215 -    InverseID id_to_vertex;
1128.216 -    RankContainer rank;
1128.217 -    ParentContainer parent;
1128.218 -    FindCompress rep;
1128.219 -  };
1128.220 -
1128.221 -} // namespace boost
1128.222 -
1128.223 -#endif // BOOST_DISJOINT_SETS_HPP
  1129.1 --- a/epoc32/include/stdapis/boost/pending/property.hpp	Tue Mar 16 16:12:26 2010 +0000
  1129.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1129.3 @@ -1,132 +0,0 @@
  1129.4 -//  (C) Copyright Jeremy Siek 2004 
  1129.5 -//  Distributed under the Boost Software License, Version 1.0. (See
  1129.6 -//  accompanying file LICENSE_1_0.txt or copy at
  1129.7 -//  http://www.boost.org/LICENSE_1_0.txt)
  1129.8 -
  1129.9 -#ifndef BOOST_PROPERTY_HPP
 1129.10 -#define BOOST_PROPERTY_HPP
 1129.11 -
 1129.12 -#include <boost/pending/ct_if.hpp>
 1129.13 -
 1129.14 -namespace boost {
 1129.15 -
 1129.16 -  struct no_property { 
 1129.17 -    typedef no_property tag_type;
 1129.18 -    typedef no_property next_type;
 1129.19 -    typedef no_property value_type;
 1129.20 -    enum { num = 0 };
 1129.21 -    typedef void kind;
 1129.22 -  };
 1129.23 -
 1129.24 -  template <class Tag, class T, class Base = no_property>
 1129.25 -  struct property : public Base {
 1129.26 -    typedef Base next_type;
 1129.27 -    typedef Tag tag_type;
 1129.28 -    typedef T value_type;
 1129.29 -#if BOOST_WORKAROUND (__GNUC__, < 3)
 1129.30 -    property() { }
 1129.31 -#else
 1129.32 -    property() : m_value() { }
 1129.33 -#endif
 1129.34 -    property(const T& v) : m_value(v) { }
 1129.35 -    property(const T& v, const Base& b) : Base(b), m_value(v) { }
 1129.36 -    // copy constructor and assignment operator will be generated by compiler
 1129.37 -
 1129.38 -    T m_value;
 1129.39 -  };
 1129.40 -
 1129.41 -  // The BGL properties specialize property_kind and
 1129.42 -  // property_num, and use enum's for the Property type (see
 1129.43 -  // graph/properties.hpp), but the user may want to use a class
 1129.44 -  // instead with a nested kind type and num.  Also, we may want to
 1129.45 -  // switch BGL back to using class types for properties at some point.
 1129.46 -
 1129.47 -  template <class PropertyTag>
 1129.48 -  struct property_kind {
 1129.49 -    typedef typename PropertyTag::kind type;
 1129.50 -  };
 1129.51 -
 1129.52 -  template <class P>
 1129.53 -  struct has_property { 
 1129.54 -    BOOST_STATIC_CONSTANT(bool, value = true);
 1129.55 -    typedef true_type type;
 1129.56 -  };
 1129.57 -  template <>
 1129.58 -  struct has_property<no_property> { 
 1129.59 -    BOOST_STATIC_CONSTANT(bool, value = false); 
 1129.60 -    typedef false_type type; 
 1129.61 -  };
 1129.62 -
 1129.63 -} // namespace boost
 1129.64 -
 1129.65 -#include <boost/pending/detail/property.hpp>
 1129.66 -
 1129.67 -namespace boost {
 1129.68 -
 1129.69 -  template <class PropertyList, class Tag>
 1129.70 -  struct property_value {
 1129.71 -#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1129.72 -    typedef typename detail::build_property_tag_value_alist<PropertyList>::type AList;
 1129.73 -    typedef typename detail::extract_value<AList,Tag>::type type;
 1129.74 -#else
 1129.75 -    typedef typename detail::build_property_tag_value_alist<PropertyList>::type AList;
 1129.76 -    typedef typename detail::ev_selector<AList>::type Extractor;
 1129.77 -    typedef typename Extractor::template bind_<AList,Tag>::type type;
 1129.78 -#endif  
 1129.79 -  };
 1129.80 -
 1129.81 -  template <class Tag1, class Tag2, class T1, class Base>
 1129.82 -  inline typename property_value<property<Tag1,T1,Base>, Tag2>::type& 
 1129.83 -  get_property_value(property<Tag1,T1,Base>& p, Tag2 tag2) {
 1129.84 -    BOOST_STATIC_CONSTANT(bool, 
 1129.85 -                          match = (detail::same_property<Tag1,Tag2>::value));
 1129.86 -    typedef property<Tag1,T1,Base> Prop;
 1129.87 -    typedef typename property_value<Prop, Tag2>::type T2;
 1129.88 -    T2* t2 = 0;
 1129.89 -    typedef detail::property_value_dispatch<match> Dispatcher;
 1129.90 -    return Dispatcher::get_value(p, t2, tag2);
 1129.91 -  }
 1129.92 -  template <class Tag1, class Tag2, class T1, class Base>
 1129.93 -  inline
 1129.94 -  const typename property_value<property<Tag1,T1,Base>, Tag2>::type& 
 1129.95 -  get_property_value(const property<Tag1,T1,Base>& p, Tag2 tag2) {
 1129.96 -    BOOST_STATIC_CONSTANT(bool, 
 1129.97 -                          match = (detail::same_property<Tag1,Tag2>::value));
 1129.98 -    typedef property<Tag1,T1,Base> Prop;
 1129.99 -    typedef typename property_value<Prop, Tag2>::type T2;
1129.100 -    T2* t2 = 0;
1129.101 -    typedef detail::property_value_dispatch<match> Dispatcher;
1129.102 -    return Dispatcher::const_get_value(p, t2, tag2);
1129.103 -  }
1129.104 -
1129.105 - namespace detail {
1129.106 -#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
1129.107 -   template<typename FinalTag, typename FinalType>
1129.108 -   struct retag_property_list
1129.109 -   {
1129.110 -     typedef property<FinalTag, FinalType> type;
1129.111 -     typedef FinalType retagged;
1129.112 -   };
1129.113 -
1129.114 -   template<typename FinalTag, typename Tag, typename T, typename Base>
1129.115 -   struct retag_property_list<FinalTag, property<Tag, T, Base> >
1129.116 -   {
1129.117 -   private:
1129.118 -     typedef retag_property_list<FinalTag, Base> next;
1129.119 -
1129.120 -   public:
1129.121 -     typedef property<Tag, T, typename next::type> type;
1129.122 -     typedef typename next::retagged retagged;
1129.123 -   };
1129.124 -
1129.125 -   template<typename FinalTag>
1129.126 -   struct retag_property_list<FinalTag, no_property>
1129.127 -   {
1129.128 -     typedef no_property type;
1129.129 -     typedef no_property retagged;
1129.130 -   };
1129.131 -#endif
1129.132 -  }
1129.133 -} // namesapce boost
1129.134 -
1129.135 -#endif /* BOOST_PROPERTY_HPP */
  1130.1 --- a/epoc32/include/stdapis/boost/preprocessor.hpp	Tue Mar 16 16:12:26 2010 +0000
  1130.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1130.3 @@ -1,19 +0,0 @@
  1130.4 -# /* Copyright (C) 2001
  1130.5 -#  * Housemarque Oy
  1130.6 -#  * http://www.housemarque.com
  1130.7 -#  *
  1130.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1130.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1130.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1130.11 -#  */
 1130.12 -#
 1130.13 -# /* Revised by Paul Mensonides (2002) */
 1130.14 -#
 1130.15 -# /* See http://www.boost.org/libs/preprocessor for documentation. */
 1130.16 -#
 1130.17 -# ifndef BOOST_PREPROCESSOR_HPP
 1130.18 -# define BOOST_PREPROCESSOR_HPP
 1130.19 -#
 1130.20 -# include <boost/preprocessor/library.hpp>
 1130.21 -#
 1130.22 -# endif
  1131.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1131.2 +++ b/epoc32/include/stdapis/boost/preprocessor/arithmetic/inc.hpp	Wed Mar 31 12:27:01 2010 +0100
  1131.3 @@ -0,0 +1,17 @@
  1131.4 +# /* **************************************************************************
  1131.5 +#  *                                                                          *
  1131.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1131.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1131.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1131.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1131.10 +#  *                                                                          *
 1131.11 +#  ************************************************************************** */
 1131.12 +#
 1131.13 +# /* See http://www.boost.org for most recent version. */
 1131.14 +#
 1131.15 +# ifndef BOOST_PREPROCESSOR_INC_HPP
 1131.16 +# define BOOST_PREPROCESSOR_INC_HPP
 1131.17 +#
 1131.18 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1131.19 +#
 1131.20 +# endif
  1132.1 --- a/epoc32/include/stdapis/boost/preprocessor/array.hpp	Tue Mar 16 16:12:26 2010 +0000
  1132.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1132.3 @@ -1,27 +0,0 @@
  1132.4 -# /* **************************************************************************
  1132.5 -#  *                                                                          *
  1132.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1132.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1132.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1132.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1132.10 -#  *                                                                          *
 1132.11 -#  ************************************************************************** */
 1132.12 -#
 1132.13 -# /* See http://www.boost.org for most recent version. */
 1132.14 -#
 1132.15 -# ifndef BOOST_PREPROCESSOR_ARRAY_HPP
 1132.16 -# define BOOST_PREPROCESSOR_ARRAY_HPP
 1132.17 -#
 1132.18 -# include <boost/preprocessor/array/data.hpp>
 1132.19 -# include <boost/preprocessor/array/elem.hpp>
 1132.20 -# include <boost/preprocessor/array/insert.hpp>
 1132.21 -# include <boost/preprocessor/array/pop_back.hpp>
 1132.22 -# include <boost/preprocessor/array/pop_front.hpp>
 1132.23 -# include <boost/preprocessor/array/push_back.hpp>
 1132.24 -# include <boost/preprocessor/array/push_front.hpp>
 1132.25 -# include <boost/preprocessor/array/remove.hpp>
 1132.26 -# include <boost/preprocessor/array/replace.hpp>
 1132.27 -# include <boost/preprocessor/array/reverse.hpp>
 1132.28 -# include <boost/preprocessor/array/size.hpp>
 1132.29 -#
 1132.30 -# endif
  1133.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1133.2 +++ b/epoc32/include/stdapis/boost/preprocessor/array/elem.hpp	Wed Mar 31 12:27:01 2010 +0100
  1133.3 @@ -0,0 +1,385 @@
  1133.4 +# /* Copyright (C) 2001
  1133.5 +#  * Housemarque Oy
  1133.6 +#  * http://www.housemarque.com
  1133.7 +#  *
  1133.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1133.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1133.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1133.11 +#  */
 1133.12 +#
 1133.13 +# /* Revised by Paul Mensonides (2002) */
 1133.14 +#
 1133.15 +# /* See http://www.boost.org for most recent version. */
 1133.16 +#
 1133.17 +# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
 1133.18 +# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
 1133.19 +#
 1133.20 +# include <boost/preprocessor/config/config.hpp>
 1133.21 +#
 1133.22 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1133.23 +#    define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_I(size, index, tuple)
 1133.24 +# else
 1133.25 +#    define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_OO((size, index, tuple))
 1133.26 +#    define BOOST_PP_TUPLE_ELEM_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
 1133.27 +# endif
 1133.28 +#
 1133.29 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1133.30 +#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i ## t
 1133.31 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1133.32 +#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_II(BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t)
 1133.33 +#    define BOOST_PP_TUPLE_ELEM_II(res) res
 1133.34 +# else
 1133.35 +#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t
 1133.36 +# endif
 1133.37 +#
 1133.38 +# define BOOST_PP_TUPLE_ELEM_1_0(a) a
 1133.39 +#
 1133.40 +# define BOOST_PP_TUPLE_ELEM_2_0(a, b) a
 1133.41 +# define BOOST_PP_TUPLE_ELEM_2_1(a, b) b
 1133.42 +#
 1133.43 +# define BOOST_PP_TUPLE_ELEM_3_0(a, b, c) a
 1133.44 +# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
 1133.45 +# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
 1133.46 +#
 1133.47 +# define BOOST_PP_TUPLE_ELEM_4_0(a, b, c, d) a
 1133.48 +# define BOOST_PP_TUPLE_ELEM_4_1(a, b, c, d) b
 1133.49 +# define BOOST_PP_TUPLE_ELEM_4_2(a, b, c, d) c
 1133.50 +# define BOOST_PP_TUPLE_ELEM_4_3(a, b, c, d) d
 1133.51 +#
 1133.52 +# define BOOST_PP_TUPLE_ELEM_5_0(a, b, c, d, e) a
 1133.53 +# define BOOST_PP_TUPLE_ELEM_5_1(a, b, c, d, e) b
 1133.54 +# define BOOST_PP_TUPLE_ELEM_5_2(a, b, c, d, e) c
 1133.55 +# define BOOST_PP_TUPLE_ELEM_5_3(a, b, c, d, e) d
 1133.56 +# define BOOST_PP_TUPLE_ELEM_5_4(a, b, c, d, e) e
 1133.57 +#
 1133.58 +# define BOOST_PP_TUPLE_ELEM_6_0(a, b, c, d, e, f) a
 1133.59 +# define BOOST_PP_TUPLE_ELEM_6_1(a, b, c, d, e, f) b
 1133.60 +# define BOOST_PP_TUPLE_ELEM_6_2(a, b, c, d, e, f) c
 1133.61 +# define BOOST_PP_TUPLE_ELEM_6_3(a, b, c, d, e, f) d
 1133.62 +# define BOOST_PP_TUPLE_ELEM_6_4(a, b, c, d, e, f) e
 1133.63 +# define BOOST_PP_TUPLE_ELEM_6_5(a, b, c, d, e, f) f
 1133.64 +#
 1133.65 +# define BOOST_PP_TUPLE_ELEM_7_0(a, b, c, d, e, f, g) a
 1133.66 +# define BOOST_PP_TUPLE_ELEM_7_1(a, b, c, d, e, f, g) b
 1133.67 +# define BOOST_PP_TUPLE_ELEM_7_2(a, b, c, d, e, f, g) c
 1133.68 +# define BOOST_PP_TUPLE_ELEM_7_3(a, b, c, d, e, f, g) d
 1133.69 +# define BOOST_PP_TUPLE_ELEM_7_4(a, b, c, d, e, f, g) e
 1133.70 +# define BOOST_PP_TUPLE_ELEM_7_5(a, b, c, d, e, f, g) f
 1133.71 +# define BOOST_PP_TUPLE_ELEM_7_6(a, b, c, d, e, f, g) g
 1133.72 +#
 1133.73 +# define BOOST_PP_TUPLE_ELEM_8_0(a, b, c, d, e, f, g, h) a
 1133.74 +# define BOOST_PP_TUPLE_ELEM_8_1(a, b, c, d, e, f, g, h) b
 1133.75 +# define BOOST_PP_TUPLE_ELEM_8_2(a, b, c, d, e, f, g, h) c
 1133.76 +# define BOOST_PP_TUPLE_ELEM_8_3(a, b, c, d, e, f, g, h) d
 1133.77 +# define BOOST_PP_TUPLE_ELEM_8_4(a, b, c, d, e, f, g, h) e
 1133.78 +# define BOOST_PP_TUPLE_ELEM_8_5(a, b, c, d, e, f, g, h) f
 1133.79 +# define BOOST_PP_TUPLE_ELEM_8_6(a, b, c, d, e, f, g, h) g
 1133.80 +# define BOOST_PP_TUPLE_ELEM_8_7(a, b, c, d, e, f, g, h) h
 1133.81 +#
 1133.82 +# define BOOST_PP_TUPLE_ELEM_9_0(a, b, c, d, e, f, g, h, i) a
 1133.83 +# define BOOST_PP_TUPLE_ELEM_9_1(a, b, c, d, e, f, g, h, i) b
 1133.84 +# define BOOST_PP_TUPLE_ELEM_9_2(a, b, c, d, e, f, g, h, i) c
 1133.85 +# define BOOST_PP_TUPLE_ELEM_9_3(a, b, c, d, e, f, g, h, i) d
 1133.86 +# define BOOST_PP_TUPLE_ELEM_9_4(a, b, c, d, e, f, g, h, i) e
 1133.87 +# define BOOST_PP_TUPLE_ELEM_9_5(a, b, c, d, e, f, g, h, i) f
 1133.88 +# define BOOST_PP_TUPLE_ELEM_9_6(a, b, c, d, e, f, g, h, i) g
 1133.89 +# define BOOST_PP_TUPLE_ELEM_9_7(a, b, c, d, e, f, g, h, i) h
 1133.90 +# define BOOST_PP_TUPLE_ELEM_9_8(a, b, c, d, e, f, g, h, i) i
 1133.91 +#
 1133.92 +# define BOOST_PP_TUPLE_ELEM_10_0(a, b, c, d, e, f, g, h, i, j) a
 1133.93 +# define BOOST_PP_TUPLE_ELEM_10_1(a, b, c, d, e, f, g, h, i, j) b
 1133.94 +# define BOOST_PP_TUPLE_ELEM_10_2(a, b, c, d, e, f, g, h, i, j) c
 1133.95 +# define BOOST_PP_TUPLE_ELEM_10_3(a, b, c, d, e, f, g, h, i, j) d
 1133.96 +# define BOOST_PP_TUPLE_ELEM_10_4(a, b, c, d, e, f, g, h, i, j) e
 1133.97 +# define BOOST_PP_TUPLE_ELEM_10_5(a, b, c, d, e, f, g, h, i, j) f
 1133.98 +# define BOOST_PP_TUPLE_ELEM_10_6(a, b, c, d, e, f, g, h, i, j) g
 1133.99 +# define BOOST_PP_TUPLE_ELEM_10_7(a, b, c, d, e, f, g, h, i, j) h
1133.100 +# define BOOST_PP_TUPLE_ELEM_10_8(a, b, c, d, e, f, g, h, i, j) i
1133.101 +# define BOOST_PP_TUPLE_ELEM_10_9(a, b, c, d, e, f, g, h, i, j) j
1133.102 +#
1133.103 +# define BOOST_PP_TUPLE_ELEM_11_0(a, b, c, d, e, f, g, h, i, j, k) a
1133.104 +# define BOOST_PP_TUPLE_ELEM_11_1(a, b, c, d, e, f, g, h, i, j, k) b
1133.105 +# define BOOST_PP_TUPLE_ELEM_11_2(a, b, c, d, e, f, g, h, i, j, k) c
1133.106 +# define BOOST_PP_TUPLE_ELEM_11_3(a, b, c, d, e, f, g, h, i, j, k) d
1133.107 +# define BOOST_PP_TUPLE_ELEM_11_4(a, b, c, d, e, f, g, h, i, j, k) e
1133.108 +# define BOOST_PP_TUPLE_ELEM_11_5(a, b, c, d, e, f, g, h, i, j, k) f
1133.109 +# define BOOST_PP_TUPLE_ELEM_11_6(a, b, c, d, e, f, g, h, i, j, k) g
1133.110 +# define BOOST_PP_TUPLE_ELEM_11_7(a, b, c, d, e, f, g, h, i, j, k) h
1133.111 +# define BOOST_PP_TUPLE_ELEM_11_8(a, b, c, d, e, f, g, h, i, j, k) i
1133.112 +# define BOOST_PP_TUPLE_ELEM_11_9(a, b, c, d, e, f, g, h, i, j, k) j
1133.113 +# define BOOST_PP_TUPLE_ELEM_11_10(a, b, c, d, e, f, g, h, i, j, k) k
1133.114 +#
1133.115 +# define BOOST_PP_TUPLE_ELEM_12_0(a, b, c, d, e, f, g, h, i, j, k, l) a
1133.116 +# define BOOST_PP_TUPLE_ELEM_12_1(a, b, c, d, e, f, g, h, i, j, k, l) b
1133.117 +# define BOOST_PP_TUPLE_ELEM_12_2(a, b, c, d, e, f, g, h, i, j, k, l) c
1133.118 +# define BOOST_PP_TUPLE_ELEM_12_3(a, b, c, d, e, f, g, h, i, j, k, l) d
1133.119 +# define BOOST_PP_TUPLE_ELEM_12_4(a, b, c, d, e, f, g, h, i, j, k, l) e
1133.120 +# define BOOST_PP_TUPLE_ELEM_12_5(a, b, c, d, e, f, g, h, i, j, k, l) f
1133.121 +# define BOOST_PP_TUPLE_ELEM_12_6(a, b, c, d, e, f, g, h, i, j, k, l) g
1133.122 +# define BOOST_PP_TUPLE_ELEM_12_7(a, b, c, d, e, f, g, h, i, j, k, l) h
1133.123 +# define BOOST_PP_TUPLE_ELEM_12_8(a, b, c, d, e, f, g, h, i, j, k, l) i
1133.124 +# define BOOST_PP_TUPLE_ELEM_12_9(a, b, c, d, e, f, g, h, i, j, k, l) j
1133.125 +# define BOOST_PP_TUPLE_ELEM_12_10(a, b, c, d, e, f, g, h, i, j, k, l) k
1133.126 +# define BOOST_PP_TUPLE_ELEM_12_11(a, b, c, d, e, f, g, h, i, j, k, l) l
1133.127 +#
1133.128 +# define BOOST_PP_TUPLE_ELEM_13_0(a, b, c, d, e, f, g, h, i, j, k, l, m) a
1133.129 +# define BOOST_PP_TUPLE_ELEM_13_1(a, b, c, d, e, f, g, h, i, j, k, l, m) b
1133.130 +# define BOOST_PP_TUPLE_ELEM_13_2(a, b, c, d, e, f, g, h, i, j, k, l, m) c
1133.131 +# define BOOST_PP_TUPLE_ELEM_13_3(a, b, c, d, e, f, g, h, i, j, k, l, m) d
1133.132 +# define BOOST_PP_TUPLE_ELEM_13_4(a, b, c, d, e, f, g, h, i, j, k, l, m) e
1133.133 +# define BOOST_PP_TUPLE_ELEM_13_5(a, b, c, d, e, f, g, h, i, j, k, l, m) f
1133.134 +# define BOOST_PP_TUPLE_ELEM_13_6(a, b, c, d, e, f, g, h, i, j, k, l, m) g
1133.135 +# define BOOST_PP_TUPLE_ELEM_13_7(a, b, c, d, e, f, g, h, i, j, k, l, m) h
1133.136 +# define BOOST_PP_TUPLE_ELEM_13_8(a, b, c, d, e, f, g, h, i, j, k, l, m) i
1133.137 +# define BOOST_PP_TUPLE_ELEM_13_9(a, b, c, d, e, f, g, h, i, j, k, l, m) j
1133.138 +# define BOOST_PP_TUPLE_ELEM_13_10(a, b, c, d, e, f, g, h, i, j, k, l, m) k
1133.139 +# define BOOST_PP_TUPLE_ELEM_13_11(a, b, c, d, e, f, g, h, i, j, k, l, m) l
1133.140 +# define BOOST_PP_TUPLE_ELEM_13_12(a, b, c, d, e, f, g, h, i, j, k, l, m) m
1133.141 +#
1133.142 +# define BOOST_PP_TUPLE_ELEM_14_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a
1133.143 +# define BOOST_PP_TUPLE_ELEM_14_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n) b
1133.144 +# define BOOST_PP_TUPLE_ELEM_14_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n) c
1133.145 +# define BOOST_PP_TUPLE_ELEM_14_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n) d
1133.146 +# define BOOST_PP_TUPLE_ELEM_14_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n) e
1133.147 +# define BOOST_PP_TUPLE_ELEM_14_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n) f
1133.148 +# define BOOST_PP_TUPLE_ELEM_14_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n) g
1133.149 +# define BOOST_PP_TUPLE_ELEM_14_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n) h
1133.150 +# define BOOST_PP_TUPLE_ELEM_14_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n) i
1133.151 +# define BOOST_PP_TUPLE_ELEM_14_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n) j
1133.152 +# define BOOST_PP_TUPLE_ELEM_14_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n) k
1133.153 +# define BOOST_PP_TUPLE_ELEM_14_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n) l
1133.154 +# define BOOST_PP_TUPLE_ELEM_14_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n) m
1133.155 +# define BOOST_PP_TUPLE_ELEM_14_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n) n
1133.156 +#
1133.157 +# define BOOST_PP_TUPLE_ELEM_15_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a
1133.158 +# define BOOST_PP_TUPLE_ELEM_15_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) b
1133.159 +# define BOOST_PP_TUPLE_ELEM_15_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) c
1133.160 +# define BOOST_PP_TUPLE_ELEM_15_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) d
1133.161 +# define BOOST_PP_TUPLE_ELEM_15_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) e
1133.162 +# define BOOST_PP_TUPLE_ELEM_15_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) f
1133.163 +# define BOOST_PP_TUPLE_ELEM_15_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) g
1133.164 +# define BOOST_PP_TUPLE_ELEM_15_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) h
1133.165 +# define BOOST_PP_TUPLE_ELEM_15_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) i
1133.166 +# define BOOST_PP_TUPLE_ELEM_15_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) j
1133.167 +# define BOOST_PP_TUPLE_ELEM_15_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) k
1133.168 +# define BOOST_PP_TUPLE_ELEM_15_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) l
1133.169 +# define BOOST_PP_TUPLE_ELEM_15_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) m
1133.170 +# define BOOST_PP_TUPLE_ELEM_15_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) n
1133.171 +# define BOOST_PP_TUPLE_ELEM_15_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) o
1133.172 +#
1133.173 +# define BOOST_PP_TUPLE_ELEM_16_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a
1133.174 +# define BOOST_PP_TUPLE_ELEM_16_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) b
1133.175 +# define BOOST_PP_TUPLE_ELEM_16_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) c
1133.176 +# define BOOST_PP_TUPLE_ELEM_16_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) d
1133.177 +# define BOOST_PP_TUPLE_ELEM_16_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) e
1133.178 +# define BOOST_PP_TUPLE_ELEM_16_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) f
1133.179 +# define BOOST_PP_TUPLE_ELEM_16_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) g
1133.180 +# define BOOST_PP_TUPLE_ELEM_16_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) h
1133.181 +# define BOOST_PP_TUPLE_ELEM_16_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) i
1133.182 +# define BOOST_PP_TUPLE_ELEM_16_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) j
1133.183 +# define BOOST_PP_TUPLE_ELEM_16_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) k
1133.184 +# define BOOST_PP_TUPLE_ELEM_16_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) l
1133.185 +# define BOOST_PP_TUPLE_ELEM_16_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) m
1133.186 +# define BOOST_PP_TUPLE_ELEM_16_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) n
1133.187 +# define BOOST_PP_TUPLE_ELEM_16_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) o
1133.188 +# define BOOST_PP_TUPLE_ELEM_16_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) p
1133.189 +#
1133.190 +# define BOOST_PP_TUPLE_ELEM_17_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a
1133.191 +# define BOOST_PP_TUPLE_ELEM_17_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) b
1133.192 +# define BOOST_PP_TUPLE_ELEM_17_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) c
1133.193 +# define BOOST_PP_TUPLE_ELEM_17_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) d
1133.194 +# define BOOST_PP_TUPLE_ELEM_17_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) e
1133.195 +# define BOOST_PP_TUPLE_ELEM_17_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) f
1133.196 +# define BOOST_PP_TUPLE_ELEM_17_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) g
1133.197 +# define BOOST_PP_TUPLE_ELEM_17_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) h
1133.198 +# define BOOST_PP_TUPLE_ELEM_17_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) i
1133.199 +# define BOOST_PP_TUPLE_ELEM_17_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) j
1133.200 +# define BOOST_PP_TUPLE_ELEM_17_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) k
1133.201 +# define BOOST_PP_TUPLE_ELEM_17_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) l
1133.202 +# define BOOST_PP_TUPLE_ELEM_17_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) m
1133.203 +# define BOOST_PP_TUPLE_ELEM_17_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) n
1133.204 +# define BOOST_PP_TUPLE_ELEM_17_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) o
1133.205 +# define BOOST_PP_TUPLE_ELEM_17_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) p
1133.206 +# define BOOST_PP_TUPLE_ELEM_17_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) q
1133.207 +#
1133.208 +# define BOOST_PP_TUPLE_ELEM_18_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a
1133.209 +# define BOOST_PP_TUPLE_ELEM_18_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) b
1133.210 +# define BOOST_PP_TUPLE_ELEM_18_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) c
1133.211 +# define BOOST_PP_TUPLE_ELEM_18_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) d
1133.212 +# define BOOST_PP_TUPLE_ELEM_18_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) e
1133.213 +# define BOOST_PP_TUPLE_ELEM_18_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) f
1133.214 +# define BOOST_PP_TUPLE_ELEM_18_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) g
1133.215 +# define BOOST_PP_TUPLE_ELEM_18_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) h
1133.216 +# define BOOST_PP_TUPLE_ELEM_18_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) i
1133.217 +# define BOOST_PP_TUPLE_ELEM_18_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) j
1133.218 +# define BOOST_PP_TUPLE_ELEM_18_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) k
1133.219 +# define BOOST_PP_TUPLE_ELEM_18_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) l
1133.220 +# define BOOST_PP_TUPLE_ELEM_18_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) m
1133.221 +# define BOOST_PP_TUPLE_ELEM_18_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) n
1133.222 +# define BOOST_PP_TUPLE_ELEM_18_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) o
1133.223 +# define BOOST_PP_TUPLE_ELEM_18_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) p
1133.224 +# define BOOST_PP_TUPLE_ELEM_18_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) q
1133.225 +# define BOOST_PP_TUPLE_ELEM_18_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) r
1133.226 +#
1133.227 +# define BOOST_PP_TUPLE_ELEM_19_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a
1133.228 +# define BOOST_PP_TUPLE_ELEM_19_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) b
1133.229 +# define BOOST_PP_TUPLE_ELEM_19_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) c
1133.230 +# define BOOST_PP_TUPLE_ELEM_19_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) d
1133.231 +# define BOOST_PP_TUPLE_ELEM_19_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) e
1133.232 +# define BOOST_PP_TUPLE_ELEM_19_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) f
1133.233 +# define BOOST_PP_TUPLE_ELEM_19_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) g
1133.234 +# define BOOST_PP_TUPLE_ELEM_19_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) h
1133.235 +# define BOOST_PP_TUPLE_ELEM_19_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) i
1133.236 +# define BOOST_PP_TUPLE_ELEM_19_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) j
1133.237 +# define BOOST_PP_TUPLE_ELEM_19_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) k
1133.238 +# define BOOST_PP_TUPLE_ELEM_19_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) l
1133.239 +# define BOOST_PP_TUPLE_ELEM_19_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) m
1133.240 +# define BOOST_PP_TUPLE_ELEM_19_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) n
1133.241 +# define BOOST_PP_TUPLE_ELEM_19_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) o
1133.242 +# define BOOST_PP_TUPLE_ELEM_19_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) p
1133.243 +# define BOOST_PP_TUPLE_ELEM_19_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) q
1133.244 +# define BOOST_PP_TUPLE_ELEM_19_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) r
1133.245 +# define BOOST_PP_TUPLE_ELEM_19_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) s
1133.246 +#
1133.247 +# define BOOST_PP_TUPLE_ELEM_20_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a
1133.248 +# define BOOST_PP_TUPLE_ELEM_20_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) b
1133.249 +# define BOOST_PP_TUPLE_ELEM_20_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) c
1133.250 +# define BOOST_PP_TUPLE_ELEM_20_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) d
1133.251 +# define BOOST_PP_TUPLE_ELEM_20_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) e
1133.252 +# define BOOST_PP_TUPLE_ELEM_20_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) f
1133.253 +# define BOOST_PP_TUPLE_ELEM_20_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) g
1133.254 +# define BOOST_PP_TUPLE_ELEM_20_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) h
1133.255 +# define BOOST_PP_TUPLE_ELEM_20_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) i
1133.256 +# define BOOST_PP_TUPLE_ELEM_20_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) j
1133.257 +# define BOOST_PP_TUPLE_ELEM_20_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) k
1133.258 +# define BOOST_PP_TUPLE_ELEM_20_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) l
1133.259 +# define BOOST_PP_TUPLE_ELEM_20_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) m
1133.260 +# define BOOST_PP_TUPLE_ELEM_20_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) n
1133.261 +# define BOOST_PP_TUPLE_ELEM_20_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) o
1133.262 +# define BOOST_PP_TUPLE_ELEM_20_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) p
1133.263 +# define BOOST_PP_TUPLE_ELEM_20_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) q
1133.264 +# define BOOST_PP_TUPLE_ELEM_20_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) r
1133.265 +# define BOOST_PP_TUPLE_ELEM_20_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) s
1133.266 +# define BOOST_PP_TUPLE_ELEM_20_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) t
1133.267 +#
1133.268 +# define BOOST_PP_TUPLE_ELEM_21_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a
1133.269 +# define BOOST_PP_TUPLE_ELEM_21_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) b
1133.270 +# define BOOST_PP_TUPLE_ELEM_21_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) c
1133.271 +# define BOOST_PP_TUPLE_ELEM_21_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) d
1133.272 +# define BOOST_PP_TUPLE_ELEM_21_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) e
1133.273 +# define BOOST_PP_TUPLE_ELEM_21_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) f
1133.274 +# define BOOST_PP_TUPLE_ELEM_21_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) g
1133.275 +# define BOOST_PP_TUPLE_ELEM_21_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) h
1133.276 +# define BOOST_PP_TUPLE_ELEM_21_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) i
1133.277 +# define BOOST_PP_TUPLE_ELEM_21_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) j
1133.278 +# define BOOST_PP_TUPLE_ELEM_21_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) k
1133.279 +# define BOOST_PP_TUPLE_ELEM_21_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) l
1133.280 +# define BOOST_PP_TUPLE_ELEM_21_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) m
1133.281 +# define BOOST_PP_TUPLE_ELEM_21_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) n
1133.282 +# define BOOST_PP_TUPLE_ELEM_21_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) o
1133.283 +# define BOOST_PP_TUPLE_ELEM_21_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) p
1133.284 +# define BOOST_PP_TUPLE_ELEM_21_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) q
1133.285 +# define BOOST_PP_TUPLE_ELEM_21_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) r
1133.286 +# define BOOST_PP_TUPLE_ELEM_21_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) s
1133.287 +# define BOOST_PP_TUPLE_ELEM_21_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) t
1133.288 +# define BOOST_PP_TUPLE_ELEM_21_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) u
1133.289 +#
1133.290 +# define BOOST_PP_TUPLE_ELEM_22_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a
1133.291 +# define BOOST_PP_TUPLE_ELEM_22_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) b
1133.292 +# define BOOST_PP_TUPLE_ELEM_22_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) c
1133.293 +# define BOOST_PP_TUPLE_ELEM_22_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) d
1133.294 +# define BOOST_PP_TUPLE_ELEM_22_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) e
1133.295 +# define BOOST_PP_TUPLE_ELEM_22_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) f
1133.296 +# define BOOST_PP_TUPLE_ELEM_22_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) g
1133.297 +# define BOOST_PP_TUPLE_ELEM_22_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) h
1133.298 +# define BOOST_PP_TUPLE_ELEM_22_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) i
1133.299 +# define BOOST_PP_TUPLE_ELEM_22_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) j
1133.300 +# define BOOST_PP_TUPLE_ELEM_22_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) k
1133.301 +# define BOOST_PP_TUPLE_ELEM_22_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) l
1133.302 +# define BOOST_PP_TUPLE_ELEM_22_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) m
1133.303 +# define BOOST_PP_TUPLE_ELEM_22_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) n
1133.304 +# define BOOST_PP_TUPLE_ELEM_22_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) o
1133.305 +# define BOOST_PP_TUPLE_ELEM_22_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) p
1133.306 +# define BOOST_PP_TUPLE_ELEM_22_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) q
1133.307 +# define BOOST_PP_TUPLE_ELEM_22_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) r
1133.308 +# define BOOST_PP_TUPLE_ELEM_22_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) s
1133.309 +# define BOOST_PP_TUPLE_ELEM_22_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) t
1133.310 +# define BOOST_PP_TUPLE_ELEM_22_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) u
1133.311 +# define BOOST_PP_TUPLE_ELEM_22_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) v
1133.312 +#
1133.313 +# define BOOST_PP_TUPLE_ELEM_23_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a
1133.314 +# define BOOST_PP_TUPLE_ELEM_23_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) b
1133.315 +# define BOOST_PP_TUPLE_ELEM_23_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) c
1133.316 +# define BOOST_PP_TUPLE_ELEM_23_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) d
1133.317 +# define BOOST_PP_TUPLE_ELEM_23_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) e
1133.318 +# define BOOST_PP_TUPLE_ELEM_23_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) f
1133.319 +# define BOOST_PP_TUPLE_ELEM_23_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) g
1133.320 +# define BOOST_PP_TUPLE_ELEM_23_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) h
1133.321 +# define BOOST_PP_TUPLE_ELEM_23_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) i
1133.322 +# define BOOST_PP_TUPLE_ELEM_23_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) j
1133.323 +# define BOOST_PP_TUPLE_ELEM_23_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) k
1133.324 +# define BOOST_PP_TUPLE_ELEM_23_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) l
1133.325 +# define BOOST_PP_TUPLE_ELEM_23_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) m
1133.326 +# define BOOST_PP_TUPLE_ELEM_23_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) n
1133.327 +# define BOOST_PP_TUPLE_ELEM_23_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) o
1133.328 +# define BOOST_PP_TUPLE_ELEM_23_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) p
1133.329 +# define BOOST_PP_TUPLE_ELEM_23_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) q
1133.330 +# define BOOST_PP_TUPLE_ELEM_23_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) r
1133.331 +# define BOOST_PP_TUPLE_ELEM_23_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) s
1133.332 +# define BOOST_PP_TUPLE_ELEM_23_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) t
1133.333 +# define BOOST_PP_TUPLE_ELEM_23_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) u
1133.334 +# define BOOST_PP_TUPLE_ELEM_23_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) v
1133.335 +# define BOOST_PP_TUPLE_ELEM_23_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) w
1133.336 +#
1133.337 +# define BOOST_PP_TUPLE_ELEM_24_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a
1133.338 +# define BOOST_PP_TUPLE_ELEM_24_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) b
1133.339 +# define BOOST_PP_TUPLE_ELEM_24_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) c
1133.340 +# define BOOST_PP_TUPLE_ELEM_24_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) d
1133.341 +# define BOOST_PP_TUPLE_ELEM_24_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) e
1133.342 +# define BOOST_PP_TUPLE_ELEM_24_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) f
1133.343 +# define BOOST_PP_TUPLE_ELEM_24_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) g
1133.344 +# define BOOST_PP_TUPLE_ELEM_24_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) h
1133.345 +# define BOOST_PP_TUPLE_ELEM_24_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) i
1133.346 +# define BOOST_PP_TUPLE_ELEM_24_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) j
1133.347 +# define BOOST_PP_TUPLE_ELEM_24_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) k
1133.348 +# define BOOST_PP_TUPLE_ELEM_24_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) l
1133.349 +# define BOOST_PP_TUPLE_ELEM_24_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) m
1133.350 +# define BOOST_PP_TUPLE_ELEM_24_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) n
1133.351 +# define BOOST_PP_TUPLE_ELEM_24_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) o
1133.352 +# define BOOST_PP_TUPLE_ELEM_24_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) p
1133.353 +# define BOOST_PP_TUPLE_ELEM_24_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) q
1133.354 +# define BOOST_PP_TUPLE_ELEM_24_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) r
1133.355 +# define BOOST_PP_TUPLE_ELEM_24_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) s
1133.356 +# define BOOST_PP_TUPLE_ELEM_24_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) t
1133.357 +# define BOOST_PP_TUPLE_ELEM_24_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) u
1133.358 +# define BOOST_PP_TUPLE_ELEM_24_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) v
1133.359 +# define BOOST_PP_TUPLE_ELEM_24_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) w
1133.360 +# define BOOST_PP_TUPLE_ELEM_24_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) x
1133.361 +#
1133.362 +# define BOOST_PP_TUPLE_ELEM_25_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a
1133.363 +# define BOOST_PP_TUPLE_ELEM_25_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) b
1133.364 +# define BOOST_PP_TUPLE_ELEM_25_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) c
1133.365 +# define BOOST_PP_TUPLE_ELEM_25_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) d
1133.366 +# define BOOST_PP_TUPLE_ELEM_25_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) e
1133.367 +# define BOOST_PP_TUPLE_ELEM_25_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) f
1133.368 +# define BOOST_PP_TUPLE_ELEM_25_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) g
1133.369 +# define BOOST_PP_TUPLE_ELEM_25_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) h
1133.370 +# define BOOST_PP_TUPLE_ELEM_25_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) i
1133.371 +# define BOOST_PP_TUPLE_ELEM_25_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) j
1133.372 +# define BOOST_PP_TUPLE_ELEM_25_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) k
1133.373 +# define BOOST_PP_TUPLE_ELEM_25_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) l
1133.374 +# define BOOST_PP_TUPLE_ELEM_25_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) m
1133.375 +# define BOOST_PP_TUPLE_ELEM_25_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) n
1133.376 +# define BOOST_PP_TUPLE_ELEM_25_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) o
1133.377 +# define BOOST_PP_TUPLE_ELEM_25_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) p
1133.378 +# define BOOST_PP_TUPLE_ELEM_25_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) q
1133.379 +# define BOOST_PP_TUPLE_ELEM_25_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) r
1133.380 +# define BOOST_PP_TUPLE_ELEM_25_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) s
1133.381 +# define BOOST_PP_TUPLE_ELEM_25_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) t
1133.382 +# define BOOST_PP_TUPLE_ELEM_25_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) u
1133.383 +# define BOOST_PP_TUPLE_ELEM_25_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) v
1133.384 +# define BOOST_PP_TUPLE_ELEM_25_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) w
1133.385 +# define BOOST_PP_TUPLE_ELEM_25_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) x
1133.386 +# define BOOST_PP_TUPLE_ELEM_25_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) y
1133.387 +#
1133.388 +# endif
  1134.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1134.2 +++ b/epoc32/include/stdapis/boost/preprocessor/array/insert.hpp	Wed Mar 31 12:27:01 2010 +0100
  1134.3 @@ -0,0 +1,28 @@
  1134.4 +# /* **************************************************************************
  1134.5 +#  *                                                                          *
  1134.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1134.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1134.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1134.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1134.10 +#  *                                                                          *
 1134.11 +#  ************************************************************************** */
 1134.12 +#
 1134.13 +# /* See http://www.boost.org for most recent version. */
 1134.14 +#
 1134.15 +# ifndef BOOST_PREPROCESSOR_SEQ_INSERT_HPP
 1134.16 +# define BOOST_PREPROCESSOR_SEQ_INSERT_HPP
 1134.17 +#
 1134.18 +# include <boost/preprocessor/config/config.hpp>
 1134.19 +# include <boost/preprocessor/seq/first_n.hpp>
 1134.20 +# include <boost/preprocessor/seq/rest_n.hpp>
 1134.21 +#
 1134.22 +# /* BOOST_PP_SEQ_INSERT */
 1134.23 +#
 1134.24 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1134.25 +#    define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq)
 1134.26 +# else
 1134.27 +#    define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_INSERT_I(seq, i, elem)
 1134.28 +#    define BOOST_PP_SEQ_INSERT_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq)
 1134.29 +# endif
 1134.30 +#
 1134.31 +# endif
  1135.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1135.2 +++ b/epoc32/include/stdapis/boost/preprocessor/array/remove.hpp	Wed Mar 31 12:27:01 2010 +0100
  1135.3 @@ -0,0 +1,29 @@
  1135.4 +# /* **************************************************************************
  1135.5 +#  *                                                                          *
  1135.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1135.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1135.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1135.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1135.10 +#  *                                                                          *
 1135.11 +#  ************************************************************************** */
 1135.12 +#
 1135.13 +# /* See http://www.boost.org for most recent version. */
 1135.14 +#
 1135.15 +# ifndef BOOST_PREPROCESSOR_SEQ_REMOVE_HPP
 1135.16 +# define BOOST_PREPROCESSOR_SEQ_REMOVE_HPP
 1135.17 +#
 1135.18 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1135.19 +# include <boost/preprocessor/config/config.hpp>
 1135.20 +# include <boost/preprocessor/seq/first_n.hpp>
 1135.21 +# include <boost/preprocessor/seq/rest_n.hpp>
 1135.22 +#
 1135.23 +# /* BOOST_PP_SEQ_REMOVE */
 1135.24 +#
 1135.25 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1135.26 +#    define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1135.27 +# else
 1135.28 +#    define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_REMOVE_I(seq, i)
 1135.29 +#    define BOOST_PP_SEQ_REMOVE_I(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1135.30 +# endif
 1135.31 +#
 1135.32 +# endif
  1136.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1136.2 +++ b/epoc32/include/stdapis/boost/preprocessor/array/replace.hpp	Wed Mar 31 12:27:01 2010 +0100
  1136.3 @@ -0,0 +1,29 @@
  1136.4 +# /* **************************************************************************
  1136.5 +#  *                                                                          *
  1136.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1136.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1136.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1136.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1136.10 +#  *                                                                          *
 1136.11 +#  ************************************************************************** */
 1136.12 +#
 1136.13 +# /* See http://www.boost.org for most recent version. */
 1136.14 +#
 1136.15 +# ifndef BOOST_PREPROCESSOR_SEQ_REPLACE_HPP
 1136.16 +# define BOOST_PREPROCESSOR_SEQ_REPLACE_HPP
 1136.17 +#
 1136.18 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1136.19 +# include <boost/preprocessor/config/config.hpp>
 1136.20 +# include <boost/preprocessor/seq/first_n.hpp>
 1136.21 +# include <boost/preprocessor/seq/rest_n.hpp>
 1136.22 +#
 1136.23 +# /* BOOST_PP_SEQ_REPLACE */
 1136.24 +#
 1136.25 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1136.26 +#    define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1136.27 +# else
 1136.28 +#    define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_REPLACE_I(seq, i, elem)
 1136.29 +#    define BOOST_PP_SEQ_REPLACE_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1136.30 +# endif
 1136.31 +#
 1136.32 +# endif
  1137.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1137.2 +++ b/epoc32/include/stdapis/boost/preprocessor/array/reverse.hpp	Wed Mar 31 12:27:01 2010 +0100
  1137.3 @@ -0,0 +1,62 @@
  1137.4 +# /* Copyright (C) 2001
  1137.5 +#  * Housemarque Oy
  1137.6 +#  * http://www.housemarque.com
  1137.7 +#  *
  1137.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1137.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1137.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1137.11 +#  */
 1137.12 +#
 1137.13 +# /* Revised by Paul Mensonides (2002) */
 1137.14 +#
 1137.15 +# /* See http://www.boost.org for most recent version. */
 1137.16 +#
 1137.17 +# ifndef BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
 1137.18 +# define BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
 1137.19 +#
 1137.20 +# include <boost/preprocessor/config/config.hpp>
 1137.21 +#
 1137.22 +# /* BOOST_PP_TUPLE_REVERSE */
 1137.23 +#
 1137.24 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1137.25 +#    define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_I(size, tuple)
 1137.26 +#    if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1137.27 +#        define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s t
 1137.28 +#    else
 1137.29 +#        define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_II(BOOST_PP_TUPLE_REVERSE_ ## s t)
 1137.30 +#        define BOOST_PP_TUPLE_REVERSE_II(res) res
 1137.31 +#    endif
 1137.32 +# else
 1137.33 +#    define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_OO((size, tuple))
 1137.34 +#    define BOOST_PP_TUPLE_REVERSE_OO(par) BOOST_PP_TUPLE_REVERSE_I ## par
 1137.35 +#    define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s ## t
 1137.36 +# endif
 1137.37 +#
 1137.38 +# define BOOST_PP_TUPLE_REVERSE_0() ()
 1137.39 +# define BOOST_PP_TUPLE_REVERSE_1(a) (a)
 1137.40 +# define BOOST_PP_TUPLE_REVERSE_2(a, b) (b, a)
 1137.41 +# define BOOST_PP_TUPLE_REVERSE_3(a, b, c) (c, b, a)
 1137.42 +# define BOOST_PP_TUPLE_REVERSE_4(a, b, c, d) (d, c, b, a)
 1137.43 +# define BOOST_PP_TUPLE_REVERSE_5(a, b, c, d, e) (e, d, c, b, a)
 1137.44 +# define BOOST_PP_TUPLE_REVERSE_6(a, b, c, d, e, f) (f, e, d, c, b, a)
 1137.45 +# define BOOST_PP_TUPLE_REVERSE_7(a, b, c, d, e, f, g) (g, f, e, d, c, b, a)
 1137.46 +# define BOOST_PP_TUPLE_REVERSE_8(a, b, c, d, e, f, g, h) (h, g, f, e, d, c, b, a)
 1137.47 +# define BOOST_PP_TUPLE_REVERSE_9(a, b, c, d, e, f, g, h, i) (i, h, g, f, e, d, c, b, a)
 1137.48 +# define BOOST_PP_TUPLE_REVERSE_10(a, b, c, d, e, f, g, h, i, j) (j, i, h, g, f, e, d, c, b, a)
 1137.49 +# define BOOST_PP_TUPLE_REVERSE_11(a, b, c, d, e, f, g, h, i, j, k) (k, j, i, h, g, f, e, d, c, b, a)
 1137.50 +# define BOOST_PP_TUPLE_REVERSE_12(a, b, c, d, e, f, g, h, i, j, k, l) (l, k, j, i, h, g, f, e, d, c, b, a)
 1137.51 +# define BOOST_PP_TUPLE_REVERSE_13(a, b, c, d, e, f, g, h, i, j, k, l, m) (m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.52 +# define BOOST_PP_TUPLE_REVERSE_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) (n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.53 +# define BOOST_PP_TUPLE_REVERSE_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) (o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.54 +# define BOOST_PP_TUPLE_REVERSE_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) (p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.55 +# define BOOST_PP_TUPLE_REVERSE_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) (q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.56 +# define BOOST_PP_TUPLE_REVERSE_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) (r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.57 +# define BOOST_PP_TUPLE_REVERSE_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) (s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.58 +# define BOOST_PP_TUPLE_REVERSE_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) (t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.59 +# define BOOST_PP_TUPLE_REVERSE_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.60 +# define BOOST_PP_TUPLE_REVERSE_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) (v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.61 +# define BOOST_PP_TUPLE_REVERSE_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) (w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.62 +# define BOOST_PP_TUPLE_REVERSE_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) (x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.63 +# define BOOST_PP_TUPLE_REVERSE_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) (y, x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1137.64 +#
 1137.65 +# endif
  1138.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1138.2 +++ b/epoc32/include/stdapis/boost/preprocessor/cat.hpp	Wed Mar 31 12:27:01 2010 +0100
  1138.3 @@ -0,0 +1,48 @@
  1138.4 +# /* **************************************************************************
  1138.5 +#  *                                                                          *
  1138.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1138.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1138.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1138.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1138.10 +#  *                                                                          *
 1138.11 +#  ************************************************************************** */
 1138.12 +#
 1138.13 +# /* See http://www.boost.org for most recent version. */
 1138.14 +#
 1138.15 +# ifndef BOOST_PREPROCESSOR_SEQ_CAT_HPP
 1138.16 +# define BOOST_PREPROCESSOR_SEQ_CAT_HPP
 1138.17 +#
 1138.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1138.19 +# include <boost/preprocessor/config/config.hpp>
 1138.20 +# include <boost/preprocessor/control/if.hpp>
 1138.21 +# include <boost/preprocessor/seq/fold_left.hpp>
 1138.22 +# include <boost/preprocessor/seq/seq.hpp>
 1138.23 +# include <boost/preprocessor/seq/size.hpp>
 1138.24 +# include <boost/preprocessor/tuple/eat.hpp>
 1138.25 +#
 1138.26 +# /* BOOST_PP_SEQ_CAT */
 1138.27 +#
 1138.28 +# define BOOST_PP_SEQ_CAT(seq) \
 1138.29 +    BOOST_PP_IF( \
 1138.30 +        BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
 1138.31 +        BOOST_PP_SEQ_CAT_I, \
 1138.32 +        BOOST_PP_SEQ_HEAD(seq) BOOST_PP_TUPLE_EAT_1 \
 1138.33 +    )(seq) \
 1138.34 +    /**/
 1138.35 +# define BOOST_PP_SEQ_CAT_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
 1138.36 +#
 1138.37 +# define BOOST_PP_SEQ_CAT_O(s, st, elem) BOOST_PP_SEQ_CAT_O_I(st, elem)
 1138.38 +# define BOOST_PP_SEQ_CAT_O_I(a, b) a ## b
 1138.39 +#
 1138.40 +# /* BOOST_PP_SEQ_CAT_S */
 1138.41 +#
 1138.42 +# define BOOST_PP_SEQ_CAT_S(s, seq) \
 1138.43 +    BOOST_PP_IF( \
 1138.44 +        BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
 1138.45 +        BOOST_PP_SEQ_CAT_S_I, \
 1138.46 +        BOOST_PP_SEQ_HEAD(seq) BOOST_PP_TUPLE_EAT_2 \
 1138.47 +    )(s, seq) \
 1138.48 +    /**/
 1138.49 +# define BOOST_PP_SEQ_CAT_S_I(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
 1138.50 +#
 1138.51 +# endif
  1139.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1139.2 +++ b/epoc32/include/stdapis/boost/preprocessor/comma_if.hpp	Wed Mar 31 12:27:01 2010 +0100
  1139.3 @@ -0,0 +1,31 @@
  1139.4 +# /* Copyright (C) 2001
  1139.5 +#  * Housemarque Oy
  1139.6 +#  * http://www.housemarque.com
  1139.7 +#  *
  1139.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1139.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1139.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1139.11 +#  */
 1139.12 +#
 1139.13 +# /* Revised by Paul Mensonides (2002) */
 1139.14 +#
 1139.15 +# /* See http://www.boost.org for most recent version. */
 1139.16 +#
 1139.17 +# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
 1139.18 +# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
 1139.19 +#
 1139.20 +# include <boost/preprocessor/config/config.hpp>
 1139.21 +# include <boost/preprocessor/control/if.hpp>
 1139.22 +# include <boost/preprocessor/facilities/empty.hpp>
 1139.23 +# include <boost/preprocessor/punctuation/comma.hpp>
 1139.24 +#
 1139.25 +# /* BOOST_PP_COMMA_IF */
 1139.26 +#
 1139.27 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1139.28 +#    define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
 1139.29 +# else
 1139.30 +#    define BOOST_PP_COMMA_IF(cond) BOOST_PP_COMMA_IF_I(cond)
 1139.31 +#    define BOOST_PP_COMMA_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
 1139.32 +# endif
 1139.33 +#
 1139.34 +# endif
  1140.1 --- a/epoc32/include/stdapis/boost/preprocessor/comparison/greater.hpp	Tue Mar 16 16:12:26 2010 +0000
  1140.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1140.3 @@ -1,38 +0,0 @@
  1140.4 -# /* Copyright (C) 2001
  1140.5 -#  * Housemarque Oy
  1140.6 -#  * http://www.housemarque.com
  1140.7 -#  *
  1140.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1140.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1140.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1140.11 -#  */
 1140.12 -#
 1140.13 -# /* Revised by Paul Mensonides (2002) */
 1140.14 -#
 1140.15 -# /* See http://www.boost.org for most recent version. */
 1140.16 -#
 1140.17 -# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
 1140.18 -# define BOOST_PREPROCESSOR_COMPARISON_GREATER_HPP
 1140.19 -#
 1140.20 -# include <boost/preprocessor/comparison/less.hpp>
 1140.21 -# include <boost/preprocessor/config/config.hpp>
 1140.22 -#
 1140.23 -# /* BOOST_PP_GREATER */
 1140.24 -#
 1140.25 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1140.26 -#    define BOOST_PP_GREATER(x, y) BOOST_PP_LESS(y, x)
 1140.27 -# else
 1140.28 -#    define BOOST_PP_GREATER(x, y) BOOST_PP_GREATER_I(x, y)
 1140.29 -#    define BOOST_PP_GREATER_I(x, y) BOOST_PP_LESS(y, x)
 1140.30 -# endif
 1140.31 -#
 1140.32 -# /* BOOST_PP_GREATER_D */
 1140.33 -#
 1140.34 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1140.35 -#    define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_LESS_D(d, y, x)
 1140.36 -# else
 1140.37 -#    define BOOST_PP_GREATER_D(d, x, y) BOOST_PP_GREATER_D_I(d, x, y)
 1140.38 -#    define BOOST_PP_GREATER_D_I(d, x, y) BOOST_PP_LESS_D(d, y, x)
 1140.39 -# endif
 1140.40 -#
 1140.41 -# endif
  1141.1 --- a/epoc32/include/stdapis/boost/preprocessor/comparison/greater_equal.hpp	Tue Mar 16 16:12:26 2010 +0000
  1141.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1141.3 @@ -1,38 +0,0 @@
  1141.4 -# /* Copyright (C) 2001
  1141.5 -#  * Housemarque Oy
  1141.6 -#  * http://www.housemarque.com
  1141.7 -#  *
  1141.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1141.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1141.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1141.11 -#  */
 1141.12 -#
 1141.13 -# /* Revised by Paul Mensonides (2002) */
 1141.14 -#
 1141.15 -# /* See http://www.boost.org for most recent version. */
 1141.16 -#
 1141.17 -# ifndef BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
 1141.18 -# define BOOST_PREPROCESSOR_COMPARISON_GREATER_EQUAL_HPP
 1141.19 -#
 1141.20 -# include <boost/preprocessor/comparison/less_equal.hpp>
 1141.21 -# include <boost/preprocessor/config/config.hpp>
 1141.22 -#
 1141.23 -# /* BOOST_PP_GREATER_EQUAL */
 1141.24 -#
 1141.25 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1141.26 -#    define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_LESS_EQUAL(y, x)
 1141.27 -# else
 1141.28 -#    define BOOST_PP_GREATER_EQUAL(x, y) BOOST_PP_GREATER_EQUAL_I(x, y)
 1141.29 -#    define BOOST_PP_GREATER_EQUAL_I(x, y) BOOST_PP_LESS_EQUAL(y, x)
 1141.30 -# endif
 1141.31 -#
 1141.32 -# /* BOOST_PP_GREATER_EQUAL_D */
 1141.33 -#
 1141.34 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1141.35 -#    define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
 1141.36 -# else
 1141.37 -#    define BOOST_PP_GREATER_EQUAL_D(d, x, y) BOOST_PP_GREATER_EQUAL_D_I(d, x, y)
 1141.38 -#    define BOOST_PP_GREATER_EQUAL_D_I(d, x, y) BOOST_PP_LESS_EQUAL_D(d, y, x)
 1141.39 -# endif
 1141.40 -#
 1141.41 -# endif
  1142.1 --- a/epoc32/include/stdapis/boost/preprocessor/comparison/less.hpp	Tue Mar 16 16:12:26 2010 +0000
  1142.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1142.3 @@ -1,46 +0,0 @@
  1142.4 -# /* Copyright (C) 2001
  1142.5 -#  * Housemarque Oy
  1142.6 -#  * http://www.housemarque.com
  1142.7 -#  *
  1142.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1142.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1142.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1142.11 -#  */
 1142.12 -#
 1142.13 -# /* Revised by Paul Mensonides (2002) */
 1142.14 -#
 1142.15 -# /* See http://www.boost.org for most recent version. */
 1142.16 -#
 1142.17 -# ifndef BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
 1142.18 -# define BOOST_PREPROCESSOR_COMPARISON_LESS_HPP
 1142.19 -#
 1142.20 -# include <boost/preprocessor/comparison/less_equal.hpp>
 1142.21 -# include <boost/preprocessor/comparison/not_equal.hpp>
 1142.22 -# include <boost/preprocessor/config/config.hpp>
 1142.23 -# include <boost/preprocessor/control/iif.hpp>
 1142.24 -# include <boost/preprocessor/logical/bitand.hpp>
 1142.25 -# include <boost/preprocessor/tuple/eat.hpp>
 1142.26 -#
 1142.27 -# /* BOOST_PP_LESS */
 1142.28 -#
 1142.29 -# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
 1142.30 -#    define BOOST_PP_LESS(x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL(x, y))
 1142.31 -# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1142.32 -#    define BOOST_PP_LESS(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
 1142.33 -# else
 1142.34 -#    define BOOST_PP_LESS(x, y) BOOST_PP_LESS_I(x, y)
 1142.35 -#    define BOOST_PP_LESS_I(x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL, 0 BOOST_PP_TUPLE_EAT_2)(x, y)
 1142.36 -# endif
 1142.37 -#
 1142.38 -# /* BOOST_PP_LESS_D */
 1142.39 -#
 1142.40 -# if BOOST_PP_CONFIG_FLAGS() & (BOOST_PP_CONFIG_MWCC() | BOOST_PP_CONFIG_DMC())
 1142.41 -#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_BITAND(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D(d, x, y))
 1142.42 -# elif ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1142.43 -#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
 1142.44 -# else
 1142.45 -#    define BOOST_PP_LESS_D(d, x, y) BOOST_PP_LESS_D_I(d, x, y)
 1142.46 -#    define BOOST_PP_LESS_D_I(d, x, y) BOOST_PP_IIF(BOOST_PP_NOT_EQUAL(x, y), BOOST_PP_LESS_EQUAL_D, 0 BOOST_PP_TUPLE_EAT_3)(d, x, y)
 1142.47 -# endif
 1142.48 -#
 1142.49 -# endif
  1143.1 --- a/epoc32/include/stdapis/boost/preprocessor/config/limits.hpp	Tue Mar 16 16:12:26 2010 +0000
  1143.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1143.3 @@ -1,29 +0,0 @@
  1143.4 -# /* Copyright (C) 2001
  1143.5 -#  * Housemarque Oy
  1143.6 -#  * http://www.housemarque.com
  1143.7 -#  *
  1143.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1143.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1143.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1143.11 -#  */
 1143.12 -#
 1143.13 -# /* Revised by Paul Mensonides (2002) */
 1143.14 -#
 1143.15 -# /* See http://www.boost.org for most recent version. */
 1143.16 -#
 1143.17 -# ifndef BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
 1143.18 -# define BOOST_PREPROCESSOR_CONFIG_LIMITS_HPP
 1143.19 -#
 1143.20 -# define BOOST_PP_LIMIT_MAG 256
 1143.21 -# define BOOST_PP_LIMIT_TUPLE 25
 1143.22 -# define BOOST_PP_LIMIT_DIM 3
 1143.23 -# define BOOST_PP_LIMIT_REPEAT 256
 1143.24 -# define BOOST_PP_LIMIT_WHILE 256
 1143.25 -# define BOOST_PP_LIMIT_FOR 256
 1143.26 -# define BOOST_PP_LIMIT_ITERATION 256
 1143.27 -# define BOOST_PP_LIMIT_ITERATION_DIM 3
 1143.28 -# define BOOST_PP_LIMIT_SEQ 256
 1143.29 -# define BOOST_PP_LIMIT_SLOT_SIG 10
 1143.30 -# define BOOST_PP_LIMIT_SLOT_COUNT 5
 1143.31 -#
 1143.32 -# endif
  1144.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1144.2 +++ b/epoc32/include/stdapis/boost/preprocessor/control/detail/edg/while.hpp	Wed Mar 31 12:27:01 2010 +0100
  1144.3 @@ -0,0 +1,312 @@
  1144.4 +# /* Copyright (C) 2001
  1144.5 +#  * Housemarque Oy
  1144.6 +#  * http://www.housemarque.com
  1144.7 +#  *
  1144.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1144.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1144.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1144.11 +#  */
 1144.12 +#
 1144.13 +# /* Revised by Paul Mensonides (2002) */
 1144.14 +#
 1144.15 +# /* See http://www.boost.org for most recent version. */
 1144.16 +#
 1144.17 +# ifndef BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
 1144.18 +# define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
 1144.19 +#
 1144.20 +# include <boost/preprocessor/cat.hpp>
 1144.21 +# include <boost/preprocessor/config/config.hpp>
 1144.22 +# include <boost/preprocessor/debug/error.hpp>
 1144.23 +# include <boost/preprocessor/detail/auto_rec.hpp>
 1144.24 +# include <boost/preprocessor/list/fold_left.hpp>
 1144.25 +# include <boost/preprocessor/list/fold_right.hpp>
 1144.26 +# include <boost/preprocessor/logical/bitand.hpp>
 1144.27 +#
 1144.28 +# /* BOOST_PP_WHILE */
 1144.29 +#
 1144.30 +# if 0
 1144.31 +#    define BOOST_PP_WHILE(pred, op, state)
 1144.32 +# endif
 1144.33 +#
 1144.34 +# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
 1144.35 +#
 1144.36 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1144.37 +#    define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
 1144.38 +# else
 1144.39 +#    define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
 1144.40 +# endif
 1144.41 +#
 1144.42 +# define BOOST_PP_WHILE_F(d, _) 0
 1144.43 +#
 1144.44 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1144.45 +#    include <boost/preprocessor/control/detail/edg/while.hpp>
 1144.46 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1144.47 +#    include <boost/preprocessor/control/detail/msvc/while.hpp>
 1144.48 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
 1144.49 +#    include <boost/preprocessor/control/detail/dmc/while.hpp>
 1144.50 +# else
 1144.51 +#    include <boost/preprocessor/control/detail/while.hpp>
 1144.52 +# endif
 1144.53 +#
 1144.54 +# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
 1144.55 +#
 1144.56 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
 1144.57 +#
 1144.58 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0
 1144.59 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0
 1144.60 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0
 1144.61 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0
 1144.62 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0
 1144.63 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0
 1144.64 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0
 1144.65 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0
 1144.66 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0
 1144.67 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0
 1144.68 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0
 1144.69 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0
 1144.70 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0
 1144.71 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0
 1144.72 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0
 1144.73 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0
 1144.74 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0
 1144.75 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0
 1144.76 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0
 1144.77 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0
 1144.78 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0
 1144.79 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0
 1144.80 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0
 1144.81 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0
 1144.82 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0
 1144.83 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0
 1144.84 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0
 1144.85 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0
 1144.86 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0
 1144.87 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0
 1144.88 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0
 1144.89 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0
 1144.90 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0
 1144.91 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0
 1144.92 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0
 1144.93 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0
 1144.94 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0
 1144.95 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0
 1144.96 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0
 1144.97 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0
 1144.98 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0
 1144.99 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0
1144.100 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0
1144.101 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0
1144.102 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0
1144.103 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0
1144.104 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0
1144.105 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0
1144.106 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0
1144.107 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0
1144.108 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0
1144.109 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0
1144.110 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0
1144.111 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0
1144.112 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0
1144.113 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0
1144.114 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0
1144.115 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0
1144.116 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0
1144.117 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0
1144.118 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0
1144.119 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0
1144.120 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0
1144.121 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0
1144.122 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0
1144.123 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0
1144.124 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0
1144.125 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0
1144.126 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0
1144.127 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0
1144.128 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0
1144.129 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0
1144.130 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0
1144.131 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0
1144.132 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0
1144.133 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0
1144.134 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0
1144.135 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0
1144.136 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0
1144.137 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0
1144.138 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0
1144.139 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0
1144.140 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0
1144.141 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0
1144.142 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0
1144.143 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0
1144.144 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0
1144.145 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0
1144.146 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0
1144.147 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0
1144.148 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0
1144.149 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0
1144.150 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0
1144.151 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0
1144.152 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0
1144.153 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0
1144.154 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0
1144.155 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0
1144.156 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0
1144.157 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0
1144.158 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0
1144.159 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0
1144.160 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0
1144.161 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0
1144.162 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0
1144.163 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0
1144.164 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0
1144.165 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0
1144.166 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0
1144.167 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0
1144.168 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0
1144.169 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0
1144.170 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0
1144.171 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0
1144.172 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0
1144.173 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0
1144.174 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0
1144.175 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0
1144.176 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0
1144.177 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0
1144.178 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0
1144.179 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0
1144.180 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0
1144.181 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0
1144.182 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0
1144.183 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0
1144.184 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0
1144.185 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0
1144.186 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0
1144.187 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0
1144.188 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0
1144.189 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0
1144.190 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0
1144.191 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0
1144.192 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0
1144.193 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0
1144.194 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0
1144.195 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0
1144.196 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0
1144.197 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0
1144.198 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0
1144.199 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0
1144.200 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0
1144.201 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0
1144.202 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0
1144.203 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0
1144.204 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0
1144.205 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0
1144.206 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0
1144.207 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0
1144.208 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0
1144.209 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0
1144.210 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0
1144.211 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0
1144.212 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0
1144.213 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0
1144.214 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0
1144.215 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0
1144.216 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0
1144.217 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0
1144.218 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0
1144.219 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0
1144.220 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0
1144.221 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0
1144.222 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0
1144.223 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0
1144.224 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0
1144.225 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0
1144.226 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0
1144.227 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0
1144.228 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0
1144.229 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0
1144.230 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0
1144.231 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0
1144.232 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0
1144.233 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0
1144.234 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0
1144.235 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0
1144.236 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0
1144.237 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0
1144.238 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0
1144.239 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0
1144.240 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0
1144.241 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0
1144.242 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0
1144.243 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0
1144.244 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0
1144.245 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0
1144.246 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0
1144.247 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0
1144.248 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0
1144.249 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0
1144.250 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0
1144.251 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0
1144.252 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0
1144.253 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0
1144.254 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0
1144.255 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0
1144.256 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0
1144.257 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0
1144.258 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0
1144.259 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0
1144.260 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0
1144.261 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0
1144.262 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0
1144.263 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0
1144.264 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0
1144.265 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0
1144.266 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0
1144.267 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0
1144.268 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0
1144.269 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0
1144.270 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0
1144.271 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0
1144.272 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0
1144.273 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0
1144.274 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0
1144.275 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0
1144.276 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0
1144.277 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0
1144.278 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0
1144.279 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0
1144.280 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0
1144.281 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0
1144.282 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0
1144.283 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0
1144.284 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0
1144.285 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0
1144.286 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0
1144.287 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0
1144.288 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0
1144.289 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0
1144.290 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0
1144.291 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0
1144.292 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0
1144.293 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0
1144.294 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0
1144.295 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0
1144.296 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0
1144.297 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0
1144.298 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0
1144.299 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0
1144.300 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0
1144.301 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0
1144.302 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0
1144.303 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0
1144.304 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0
1144.305 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0
1144.306 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0
1144.307 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0
1144.308 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0
1144.309 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0
1144.310 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0
1144.311 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0
1144.312 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0
1144.313 +# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0
1144.314 +#
1144.315 +# endif
  1145.1 --- a/epoc32/include/stdapis/boost/preprocessor/control/if.hpp	Tue Mar 16 16:12:26 2010 +0000
  1145.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1145.3 @@ -1,30 +0,0 @@
  1145.4 -# /* Copyright (C) 2001
  1145.5 -#  * Housemarque Oy
  1145.6 -#  * http://www.housemarque.com
  1145.7 -#  *
  1145.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1145.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1145.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1145.11 -#  */
 1145.12 -#
 1145.13 -# /* Revised by Paul Mensonides (2002) */
 1145.14 -#
 1145.15 -# /* See http://www.boost.org for most recent version. */
 1145.16 -#
 1145.17 -# ifndef BOOST_PREPROCESSOR_CONTROL_IF_HPP
 1145.18 -# define BOOST_PREPROCESSOR_CONTROL_IF_HPP
 1145.19 -#
 1145.20 -# include <boost/preprocessor/config/config.hpp>
 1145.21 -# include <boost/preprocessor/control/iif.hpp>
 1145.22 -# include <boost/preprocessor/logical/bool.hpp>
 1145.23 -#
 1145.24 -# /* BOOST_PP_IF */
 1145.25 -#
 1145.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1145.27 -#    define BOOST_PP_IF(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
 1145.28 -# else
 1145.29 -#    define BOOST_PP_IF(cond, t, f) BOOST_PP_IF_I(cond, t, f)
 1145.30 -#    define BOOST_PP_IF_I(cond, t, f) BOOST_PP_IIF(BOOST_PP_BOOL(cond), t, f)
 1145.31 -# endif
 1145.32 -#
 1145.33 -# endif
  1146.1 --- a/epoc32/include/stdapis/boost/preprocessor/control/while.hpp	Tue Mar 16 16:12:26 2010 +0000
  1146.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1146.3 @@ -1,312 +0,0 @@
  1146.4 -# /* Copyright (C) 2001
  1146.5 -#  * Housemarque Oy
  1146.6 -#  * http://www.housemarque.com
  1146.7 -#  *
  1146.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1146.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1146.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1146.11 -#  */
 1146.12 -#
 1146.13 -# /* Revised by Paul Mensonides (2002) */
 1146.14 -#
 1146.15 -# /* See http://www.boost.org for most recent version. */
 1146.16 -#
 1146.17 -# ifndef BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
 1146.18 -# define BOOST_PREPROCESSOR_CONTROL_WHILE_HPP
 1146.19 -#
 1146.20 -# include <boost/preprocessor/cat.hpp>
 1146.21 -# include <boost/preprocessor/config/config.hpp>
 1146.22 -# include <boost/preprocessor/debug/error.hpp>
 1146.23 -# include <boost/preprocessor/detail/auto_rec.hpp>
 1146.24 -# include <boost/preprocessor/list/fold_left.hpp>
 1146.25 -# include <boost/preprocessor/list/fold_right.hpp>
 1146.26 -# include <boost/preprocessor/logical/bitand.hpp>
 1146.27 -#
 1146.28 -# /* BOOST_PP_WHILE */
 1146.29 -#
 1146.30 -# if 0
 1146.31 -#    define BOOST_PP_WHILE(pred, op, state)
 1146.32 -# endif
 1146.33 -#
 1146.34 -# define BOOST_PP_WHILE BOOST_PP_CAT(BOOST_PP_WHILE_, BOOST_PP_AUTO_REC(BOOST_PP_WHILE_P, 256))
 1146.35 -#
 1146.36 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1146.37 -#    define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_RIGHT_CHECK_, BOOST_PP_LIST_FOLD_RIGHT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL))))
 1146.38 -# else
 1146.39 -#    define BOOST_PP_WHILE_P(n) BOOST_PP_BITAND(BOOST_PP_CAT(BOOST_PP_WHILE_CHECK_, BOOST_PP_WHILE_ ## n(BOOST_PP_WHILE_F, BOOST_PP_NIL, BOOST_PP_NIL)), BOOST_PP_CAT(BOOST_PP_LIST_FOLD_LEFT_CHECK_, BOOST_PP_LIST_FOLD_LEFT_ ## n(BOOST_PP_NIL, BOOST_PP_NIL, BOOST_PP_NIL)))
 1146.40 -# endif
 1146.41 -#
 1146.42 -# define BOOST_PP_WHILE_F(d, _) 0
 1146.43 -#
 1146.44 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1146.45 -#    include <boost/preprocessor/control/detail/edg/while.hpp>
 1146.46 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1146.47 -#    include <boost/preprocessor/control/detail/msvc/while.hpp>
 1146.48 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
 1146.49 -#    include <boost/preprocessor/control/detail/dmc/while.hpp>
 1146.50 -# else
 1146.51 -#    include <boost/preprocessor/control/detail/while.hpp>
 1146.52 -# endif
 1146.53 -#
 1146.54 -# define BOOST_PP_WHILE_257(p, o, s) BOOST_PP_ERROR(0x0001)
 1146.55 -#
 1146.56 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_NIL 1
 1146.57 -#
 1146.58 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_1(p, o, s) 0
 1146.59 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_2(p, o, s) 0
 1146.60 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_3(p, o, s) 0
 1146.61 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_4(p, o, s) 0
 1146.62 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_5(p, o, s) 0
 1146.63 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_6(p, o, s) 0
 1146.64 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_7(p, o, s) 0
 1146.65 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_8(p, o, s) 0
 1146.66 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_9(p, o, s) 0
 1146.67 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_10(p, o, s) 0
 1146.68 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_11(p, o, s) 0
 1146.69 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_12(p, o, s) 0
 1146.70 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_13(p, o, s) 0
 1146.71 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_14(p, o, s) 0
 1146.72 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_15(p, o, s) 0
 1146.73 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_16(p, o, s) 0
 1146.74 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_17(p, o, s) 0
 1146.75 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_18(p, o, s) 0
 1146.76 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_19(p, o, s) 0
 1146.77 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_20(p, o, s) 0
 1146.78 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_21(p, o, s) 0
 1146.79 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_22(p, o, s) 0
 1146.80 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_23(p, o, s) 0
 1146.81 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_24(p, o, s) 0
 1146.82 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_25(p, o, s) 0
 1146.83 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_26(p, o, s) 0
 1146.84 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_27(p, o, s) 0
 1146.85 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_28(p, o, s) 0
 1146.86 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_29(p, o, s) 0
 1146.87 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_30(p, o, s) 0
 1146.88 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_31(p, o, s) 0
 1146.89 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_32(p, o, s) 0
 1146.90 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_33(p, o, s) 0
 1146.91 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_34(p, o, s) 0
 1146.92 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_35(p, o, s) 0
 1146.93 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_36(p, o, s) 0
 1146.94 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_37(p, o, s) 0
 1146.95 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_38(p, o, s) 0
 1146.96 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_39(p, o, s) 0
 1146.97 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_40(p, o, s) 0
 1146.98 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_41(p, o, s) 0
 1146.99 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_42(p, o, s) 0
1146.100 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_43(p, o, s) 0
1146.101 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_44(p, o, s) 0
1146.102 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_45(p, o, s) 0
1146.103 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_46(p, o, s) 0
1146.104 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_47(p, o, s) 0
1146.105 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_48(p, o, s) 0
1146.106 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_49(p, o, s) 0
1146.107 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_50(p, o, s) 0
1146.108 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_51(p, o, s) 0
1146.109 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_52(p, o, s) 0
1146.110 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_53(p, o, s) 0
1146.111 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_54(p, o, s) 0
1146.112 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_55(p, o, s) 0
1146.113 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_56(p, o, s) 0
1146.114 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_57(p, o, s) 0
1146.115 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_58(p, o, s) 0
1146.116 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_59(p, o, s) 0
1146.117 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_60(p, o, s) 0
1146.118 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_61(p, o, s) 0
1146.119 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_62(p, o, s) 0
1146.120 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_63(p, o, s) 0
1146.121 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_64(p, o, s) 0
1146.122 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_65(p, o, s) 0
1146.123 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_66(p, o, s) 0
1146.124 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_67(p, o, s) 0
1146.125 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_68(p, o, s) 0
1146.126 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_69(p, o, s) 0
1146.127 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_70(p, o, s) 0
1146.128 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_71(p, o, s) 0
1146.129 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_72(p, o, s) 0
1146.130 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_73(p, o, s) 0
1146.131 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_74(p, o, s) 0
1146.132 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_75(p, o, s) 0
1146.133 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_76(p, o, s) 0
1146.134 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_77(p, o, s) 0
1146.135 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_78(p, o, s) 0
1146.136 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_79(p, o, s) 0
1146.137 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_80(p, o, s) 0
1146.138 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_81(p, o, s) 0
1146.139 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_82(p, o, s) 0
1146.140 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_83(p, o, s) 0
1146.141 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_84(p, o, s) 0
1146.142 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_85(p, o, s) 0
1146.143 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_86(p, o, s) 0
1146.144 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_87(p, o, s) 0
1146.145 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_88(p, o, s) 0
1146.146 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_89(p, o, s) 0
1146.147 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_90(p, o, s) 0
1146.148 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_91(p, o, s) 0
1146.149 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_92(p, o, s) 0
1146.150 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_93(p, o, s) 0
1146.151 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_94(p, o, s) 0
1146.152 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_95(p, o, s) 0
1146.153 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_96(p, o, s) 0
1146.154 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_97(p, o, s) 0
1146.155 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_98(p, o, s) 0
1146.156 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_99(p, o, s) 0
1146.157 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_100(p, o, s) 0
1146.158 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_101(p, o, s) 0
1146.159 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_102(p, o, s) 0
1146.160 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_103(p, o, s) 0
1146.161 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_104(p, o, s) 0
1146.162 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_105(p, o, s) 0
1146.163 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_106(p, o, s) 0
1146.164 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_107(p, o, s) 0
1146.165 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_108(p, o, s) 0
1146.166 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_109(p, o, s) 0
1146.167 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_110(p, o, s) 0
1146.168 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_111(p, o, s) 0
1146.169 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_112(p, o, s) 0
1146.170 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_113(p, o, s) 0
1146.171 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_114(p, o, s) 0
1146.172 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_115(p, o, s) 0
1146.173 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_116(p, o, s) 0
1146.174 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_117(p, o, s) 0
1146.175 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_118(p, o, s) 0
1146.176 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_119(p, o, s) 0
1146.177 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_120(p, o, s) 0
1146.178 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_121(p, o, s) 0
1146.179 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_122(p, o, s) 0
1146.180 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_123(p, o, s) 0
1146.181 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_124(p, o, s) 0
1146.182 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_125(p, o, s) 0
1146.183 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_126(p, o, s) 0
1146.184 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_127(p, o, s) 0
1146.185 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_128(p, o, s) 0
1146.186 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_129(p, o, s) 0
1146.187 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_130(p, o, s) 0
1146.188 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_131(p, o, s) 0
1146.189 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_132(p, o, s) 0
1146.190 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_133(p, o, s) 0
1146.191 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_134(p, o, s) 0
1146.192 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_135(p, o, s) 0
1146.193 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_136(p, o, s) 0
1146.194 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_137(p, o, s) 0
1146.195 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_138(p, o, s) 0
1146.196 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_139(p, o, s) 0
1146.197 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_140(p, o, s) 0
1146.198 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_141(p, o, s) 0
1146.199 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_142(p, o, s) 0
1146.200 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_143(p, o, s) 0
1146.201 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_144(p, o, s) 0
1146.202 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_145(p, o, s) 0
1146.203 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_146(p, o, s) 0
1146.204 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_147(p, o, s) 0
1146.205 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_148(p, o, s) 0
1146.206 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_149(p, o, s) 0
1146.207 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_150(p, o, s) 0
1146.208 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_151(p, o, s) 0
1146.209 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_152(p, o, s) 0
1146.210 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_153(p, o, s) 0
1146.211 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_154(p, o, s) 0
1146.212 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_155(p, o, s) 0
1146.213 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_156(p, o, s) 0
1146.214 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_157(p, o, s) 0
1146.215 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_158(p, o, s) 0
1146.216 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_159(p, o, s) 0
1146.217 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_160(p, o, s) 0
1146.218 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_161(p, o, s) 0
1146.219 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_162(p, o, s) 0
1146.220 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_163(p, o, s) 0
1146.221 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_164(p, o, s) 0
1146.222 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_165(p, o, s) 0
1146.223 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_166(p, o, s) 0
1146.224 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_167(p, o, s) 0
1146.225 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_168(p, o, s) 0
1146.226 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_169(p, o, s) 0
1146.227 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_170(p, o, s) 0
1146.228 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_171(p, o, s) 0
1146.229 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_172(p, o, s) 0
1146.230 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_173(p, o, s) 0
1146.231 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_174(p, o, s) 0
1146.232 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_175(p, o, s) 0
1146.233 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_176(p, o, s) 0
1146.234 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_177(p, o, s) 0
1146.235 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_178(p, o, s) 0
1146.236 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_179(p, o, s) 0
1146.237 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_180(p, o, s) 0
1146.238 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_181(p, o, s) 0
1146.239 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_182(p, o, s) 0
1146.240 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_183(p, o, s) 0
1146.241 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_184(p, o, s) 0
1146.242 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_185(p, o, s) 0
1146.243 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_186(p, o, s) 0
1146.244 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_187(p, o, s) 0
1146.245 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_188(p, o, s) 0
1146.246 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_189(p, o, s) 0
1146.247 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_190(p, o, s) 0
1146.248 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_191(p, o, s) 0
1146.249 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_192(p, o, s) 0
1146.250 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_193(p, o, s) 0
1146.251 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_194(p, o, s) 0
1146.252 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_195(p, o, s) 0
1146.253 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_196(p, o, s) 0
1146.254 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_197(p, o, s) 0
1146.255 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_198(p, o, s) 0
1146.256 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_199(p, o, s) 0
1146.257 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_200(p, o, s) 0
1146.258 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_201(p, o, s) 0
1146.259 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_202(p, o, s) 0
1146.260 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_203(p, o, s) 0
1146.261 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_204(p, o, s) 0
1146.262 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_205(p, o, s) 0
1146.263 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_206(p, o, s) 0
1146.264 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_207(p, o, s) 0
1146.265 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_208(p, o, s) 0
1146.266 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_209(p, o, s) 0
1146.267 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_210(p, o, s) 0
1146.268 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_211(p, o, s) 0
1146.269 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_212(p, o, s) 0
1146.270 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_213(p, o, s) 0
1146.271 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_214(p, o, s) 0
1146.272 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_215(p, o, s) 0
1146.273 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_216(p, o, s) 0
1146.274 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_217(p, o, s) 0
1146.275 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_218(p, o, s) 0
1146.276 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_219(p, o, s) 0
1146.277 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_220(p, o, s) 0
1146.278 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_221(p, o, s) 0
1146.279 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_222(p, o, s) 0
1146.280 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_223(p, o, s) 0
1146.281 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_224(p, o, s) 0
1146.282 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_225(p, o, s) 0
1146.283 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_226(p, o, s) 0
1146.284 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_227(p, o, s) 0
1146.285 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_228(p, o, s) 0
1146.286 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_229(p, o, s) 0
1146.287 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_230(p, o, s) 0
1146.288 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_231(p, o, s) 0
1146.289 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_232(p, o, s) 0
1146.290 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_233(p, o, s) 0
1146.291 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_234(p, o, s) 0
1146.292 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_235(p, o, s) 0
1146.293 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_236(p, o, s) 0
1146.294 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_237(p, o, s) 0
1146.295 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_238(p, o, s) 0
1146.296 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_239(p, o, s) 0
1146.297 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_240(p, o, s) 0
1146.298 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_241(p, o, s) 0
1146.299 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_242(p, o, s) 0
1146.300 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_243(p, o, s) 0
1146.301 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_244(p, o, s) 0
1146.302 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_245(p, o, s) 0
1146.303 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_246(p, o, s) 0
1146.304 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_247(p, o, s) 0
1146.305 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_248(p, o, s) 0
1146.306 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_249(p, o, s) 0
1146.307 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_250(p, o, s) 0
1146.308 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_251(p, o, s) 0
1146.309 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_252(p, o, s) 0
1146.310 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_253(p, o, s) 0
1146.311 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_254(p, o, s) 0
1146.312 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_255(p, o, s) 0
1146.313 -# define BOOST_PP_WHILE_CHECK_BOOST_PP_WHILE_256(p, o, s) 0
1146.314 -#
1146.315 -# endif
  1147.1 --- a/epoc32/include/stdapis/boost/preprocessor/debug/assert.hpp	Tue Mar 16 16:12:26 2010 +0000
  1147.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1147.3 @@ -1,44 +0,0 @@
  1147.4 -# /* Copyright (C) 2001
  1147.5 -#  * Housemarque Oy
  1147.6 -#  * http://www.housemarque.com
  1147.7 -#  *
  1147.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1147.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1147.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1147.11 -#  */
 1147.12 -#
 1147.13 -# /* Revised by Paul Mensonides (2002) */
 1147.14 -#
 1147.15 -# /* See http://www.boost.org for most recent version. */
 1147.16 -#
 1147.17 -# ifndef BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP
 1147.18 -# define BOOST_PREPROCESSOR_DEBUG_ASSERT_HPP
 1147.19 -#
 1147.20 -# include <boost/preprocessor/config/config.hpp>
 1147.21 -# include <boost/preprocessor/control/expr_iif.hpp>
 1147.22 -# include <boost/preprocessor/control/iif.hpp>
 1147.23 -# include <boost/preprocessor/logical/not.hpp>
 1147.24 -# include <boost/preprocessor/tuple/eat.hpp>
 1147.25 -#
 1147.26 -# /* BOOST_PP_ASSERT */
 1147.27 -#
 1147.28 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1147.29 -#    define BOOST_PP_ASSERT BOOST_PP_ASSERT_D
 1147.30 -# else
 1147.31 -#    define BOOST_PP_ASSERT(cond) BOOST_PP_ASSERT_D(cond)
 1147.32 -# endif
 1147.33 -#
 1147.34 -# define BOOST_PP_ASSERT_D(cond) BOOST_PP_IIF(BOOST_PP_NOT(cond), BOOST_PP_ASSERT_ERROR, BOOST_PP_TUPLE_EAT_1)(...)
 1147.35 -# define BOOST_PP_ASSERT_ERROR(x, y, z)
 1147.36 -#
 1147.37 -# /* BOOST_PP_ASSERT_MSG */
 1147.38 -#
 1147.39 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1147.40 -#    define BOOST_PP_ASSERT_MSG BOOST_PP_ASSERT_MSG_D
 1147.41 -# else
 1147.42 -#    define BOOST_PP_ASSERT_MSG(cond, msg) BOOST_PP_ASSERT_MSG_D(cond, msg)
 1147.43 -# endif
 1147.44 -#
 1147.45 -# define BOOST_PP_ASSERT_MSG_D(cond, msg) BOOST_PP_EXPR_IIF(BOOST_PP_NOT(cond), msg)
 1147.46 -#
 1147.47 -# endif
  1148.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1148.2 +++ b/epoc32/include/stdapis/boost/preprocessor/enum_params.hpp	Wed Mar 31 12:27:01 2010 +0100
  1148.3 @@ -0,0 +1,41 @@
  1148.4 +# /* Copyright (C) 2001
  1148.5 +#  * Housemarque Oy
  1148.6 +#  * http://www.housemarque.com
  1148.7 +#  *
  1148.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1148.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1148.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1148.11 +#  */
 1148.12 +#
 1148.13 +# /* Revised by Paul Mensonides (2002) */
 1148.14 +#
 1148.15 +# /* See http://www.boost.org for most recent version. */
 1148.16 +#
 1148.17 +# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
 1148.18 +# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
 1148.19 +#
 1148.20 +# include <boost/preprocessor/config/config.hpp>
 1148.21 +# include <boost/preprocessor/punctuation/comma_if.hpp>
 1148.22 +# include <boost/preprocessor/repetition/repeat.hpp>
 1148.23 +#
 1148.24 +# /* BOOST_PP_ENUM_PARAMS */
 1148.25 +#
 1148.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1148.27 +#    define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
 1148.28 +# else
 1148.29 +#    define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_ENUM_PARAMS_I(count, param)
 1148.30 +#    define BOOST_PP_ENUM_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
 1148.31 +# endif
 1148.32 +#
 1148.33 +# define BOOST_PP_ENUM_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) param ## n
 1148.34 +#
 1148.35 +# /* BOOST_PP_ENUM_PARAMS_Z */
 1148.36 +#
 1148.37 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1148.38 +#    define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
 1148.39 +# else
 1148.40 +#    define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_ENUM_PARAMS_Z_I(z, count, param)
 1148.41 +#    define BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
 1148.42 +# endif
 1148.43 +#
 1148.44 +# endif
  1149.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1149.2 +++ b/epoc32/include/stdapis/boost/preprocessor/enum_shifted_params.hpp	Wed Mar 31 12:27:01 2010 +0100
  1149.3 @@ -0,0 +1,44 @@
  1149.4 +# /* Copyright (C) 2001
  1149.5 +#  * Housemarque Oy
  1149.6 +#  * http://www.housemarque.com
  1149.7 +#  *
  1149.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1149.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1149.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1149.11 +#  */
 1149.12 +#
 1149.13 +# /* Revised by Paul Mensonides (2002) */
 1149.14 +#
 1149.15 +# /* See http://www.boost.org for most recent version. */
 1149.16 +#
 1149.17 +# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
 1149.18 +# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
 1149.19 +#
 1149.20 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1149.21 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1149.22 +# include <boost/preprocessor/cat.hpp>
 1149.23 +# include <boost/preprocessor/config/config.hpp>
 1149.24 +# include <boost/preprocessor/punctuation/comma_if.hpp>
 1149.25 +# include <boost/preprocessor/repetition/repeat.hpp>
 1149.26 +#
 1149.27 +# /* BOOST_PP_ENUM_SHIFTED_PARAMS */
 1149.28 +#
 1149.29 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1149.30 +#    define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1149.31 +# else
 1149.32 +#    define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param)
 1149.33 +#    define BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1149.34 +# endif
 1149.35 +#
 1149.36 +# define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
 1149.37 +#
 1149.38 +# /* BOOST_PP_ENUM_SHIFTED_PARAMS_Z */
 1149.39 +#
 1149.40 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1149.41 +#    define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1149.42 +# else
 1149.43 +#    define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param)
 1149.44 +#    define BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1149.45 +# endif
 1149.46 +#
 1149.47 +# endif
  1150.1 --- a/epoc32/include/stdapis/boost/preprocessor/facilities/apply.hpp	Tue Mar 16 16:12:26 2010 +0000
  1150.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1150.3 @@ -1,34 +0,0 @@
  1150.4 -# /* **************************************************************************
  1150.5 -#  *                                                                          *
  1150.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1150.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1150.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1150.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1150.10 -#  *                                                                          *
 1150.11 -#  ************************************************************************** */
 1150.12 -#
 1150.13 -# /* See http://www.boost.org for most recent version. */
 1150.14 -#
 1150.15 -# ifndef BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP
 1150.16 -# define BOOST_PREPROCESSOR_FACILITIES_APPLY_HPP
 1150.17 -#
 1150.18 -# include <boost/preprocessor/config/config.hpp>
 1150.19 -# include <boost/preprocessor/control/expr_iif.hpp>
 1150.20 -# include <boost/preprocessor/detail/is_unary.hpp>
 1150.21 -# include <boost/preprocessor/tuple/rem.hpp>
 1150.22 -#
 1150.23 -# /* BOOST_PP_APPLY */
 1150.24 -#
 1150.25 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1150.26 -#    define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x)
 1150.27 -#    define BOOST_PP_APPLY_I(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x)
 1150.28 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_BCC()
 1150.29 -#    define BOOST_PP_APPLY(x) BOOST_PP_APPLY_I(x)
 1150.30 -#    define BOOST_PP_APPLY_I(x) BOOST_PP_APPLY_ ## x
 1150.31 -#    define BOOST_PP_APPLY_(x) x
 1150.32 -#    define BOOST_PP_APPLY_BOOST_PP_NIL
 1150.33 -# else
 1150.34 -#    define BOOST_PP_APPLY(x) BOOST_PP_EXPR_IIF(BOOST_PP_IS_UNARY(x), BOOST_PP_TUPLE_REM_1 x)
 1150.35 -# endif
 1150.36 -#
 1150.37 -# endif
  1151.1 --- a/epoc32/include/stdapis/boost/preprocessor/identity.hpp	Tue Mar 16 16:12:26 2010 +0000
  1151.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1151.3 @@ -1,17 +0,0 @@
  1151.4 -# /* **************************************************************************
  1151.5 -#  *                                                                          *
  1151.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1151.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1151.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1151.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1151.10 -#  *                                                                          *
 1151.11 -#  ************************************************************************** */
 1151.12 -#
 1151.13 -# /* See http://www.boost.org for most recent version. */
 1151.14 -#
 1151.15 -# ifndef BOOST_PREPROCESSOR_IDENTITY_HPP
 1151.16 -# define BOOST_PREPROCESSOR_IDENTITY_HPP
 1151.17 -#
 1151.18 -# include <boost/preprocessor/facilities/identity.hpp>
 1151.19 -#
 1151.20 -# endif
  1152.1 --- a/epoc32/include/stdapis/boost/preprocessor/inc.hpp	Tue Mar 16 16:12:26 2010 +0000
  1152.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1152.3 @@ -1,17 +0,0 @@
  1152.4 -# /* **************************************************************************
  1152.5 -#  *                                                                          *
  1152.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1152.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1152.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1152.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1152.10 -#  *                                                                          *
 1152.11 -#  ************************************************************************** */
 1152.12 -#
 1152.13 -# /* See http://www.boost.org for most recent version. */
 1152.14 -#
 1152.15 -# ifndef BOOST_PREPROCESSOR_INC_HPP
 1152.16 -# define BOOST_PREPROCESSOR_INC_HPP
 1152.17 -#
 1152.18 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1152.19 -#
 1152.20 -# endif
  1153.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1153.2 +++ b/epoc32/include/stdapis/boost/preprocessor/iterate.hpp	Wed Mar 31 12:27:01 2010 +0100
  1153.3 @@ -0,0 +1,82 @@
  1153.4 +# /* **************************************************************************
  1153.5 +#  *                                                                          *
  1153.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1153.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1153.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1153.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1153.10 +#  *                                                                          *
 1153.11 +#  ************************************************************************** */
 1153.12 +#
 1153.13 +# /* See http://www.boost.org for most recent version. */
 1153.14 +#
 1153.15 +# ifndef BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
 1153.16 +# define BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
 1153.17 +#
 1153.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1153.19 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1153.20 +# include <boost/preprocessor/array/elem.hpp>
 1153.21 +# include <boost/preprocessor/array/size.hpp>
 1153.22 +# include <boost/preprocessor/cat.hpp>
 1153.23 +# include <boost/preprocessor/slot/slot.hpp>
 1153.24 +# include <boost/preprocessor/tuple/elem.hpp>
 1153.25 +#
 1153.26 +# /* BOOST_PP_ITERATION_DEPTH */
 1153.27 +#
 1153.28 +# define BOOST_PP_ITERATION_DEPTH() 0
 1153.29 +#
 1153.30 +# /* BOOST_PP_ITERATION */
 1153.31 +#
 1153.32 +# define BOOST_PP_ITERATION() BOOST_PP_CAT(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
 1153.33 +#
 1153.34 +# /* BOOST_PP_ITERATION_START && BOOST_PP_ITERATION_FINISH */
 1153.35 +#
 1153.36 +# define BOOST_PP_ITERATION_START() BOOST_PP_CAT(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
 1153.37 +# define BOOST_PP_ITERATION_FINISH() BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
 1153.38 +#
 1153.39 +# /* BOOST_PP_ITERATION_FLAGS */
 1153.40 +#
 1153.41 +# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH()))
 1153.42 +#
 1153.43 +# /* BOOST_PP_FRAME_ITERATION */
 1153.44 +#
 1153.45 +# define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_CAT(BOOST_PP_ITERATION_, i)
 1153.46 +#
 1153.47 +# /* BOOST_PP_FRAME_START && BOOST_PP_FRAME_FINISH */
 1153.48 +#
 1153.49 +# define BOOST_PP_FRAME_START(i) BOOST_PP_CAT(BOOST_PP_ITERATION_START_, i)
 1153.50 +# define BOOST_PP_FRAME_FINISH(i) BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, i)
 1153.51 +#
 1153.52 +# /* BOOST_PP_FRAME_FLAGS */
 1153.53 +#
 1153.54 +# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i))
 1153.55 +#
 1153.56 +# /* BOOST_PP_RELATIVE_ITERATION */
 1153.57 +#
 1153.58 +# define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
 1153.59 +#
 1153.60 +# define BOOST_PP_RELATIVE_0(m) BOOST_PP_CAT(m, BOOST_PP_ITERATION_DEPTH())
 1153.61 +# define BOOST_PP_RELATIVE_1(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
 1153.62 +# define BOOST_PP_RELATIVE_2(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
 1153.63 +# define BOOST_PP_RELATIVE_3(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
 1153.64 +# define BOOST_PP_RELATIVE_4(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
 1153.65 +#
 1153.66 +# /* BOOST_PP_RELATIVE_START && BOOST_PP_RELATIVE_FINISH */
 1153.67 +#
 1153.68 +# define BOOST_PP_RELATIVE_START(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
 1153.69 +# define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
 1153.70 +#
 1153.71 +# /* BOOST_PP_RELATIVE_FLAGS */
 1153.72 +#
 1153.73 +# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_))
 1153.74 +#
 1153.75 +# /* BOOST_PP_ITERATE */
 1153.76 +#
 1153.77 +# define BOOST_PP_ITERATE() BOOST_PP_CAT(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
 1153.78 +#
 1153.79 +# define BOOST_PP_ITERATE_1 <boost/preprocessor/iteration/detail/iter/forward1.hpp>
 1153.80 +# define BOOST_PP_ITERATE_2 <boost/preprocessor/iteration/detail/iter/forward2.hpp>
 1153.81 +# define BOOST_PP_ITERATE_3 <boost/preprocessor/iteration/detail/iter/forward3.hpp>
 1153.82 +# define BOOST_PP_ITERATE_4 <boost/preprocessor/iteration/detail/iter/forward4.hpp>
 1153.83 +# define BOOST_PP_ITERATE_5 <boost/preprocessor/iteration/detail/iter/forward5.hpp>
 1153.84 +#
 1153.85 +# endif
  1154.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1154.2 +++ b/epoc32/include/stdapis/boost/preprocessor/iteration/detail/local.hpp	Wed Mar 31 12:27:01 2010 +0100
  1154.3 @@ -0,0 +1,26 @@
  1154.4 +# /* **************************************************************************
  1154.5 +#  *                                                                          *
  1154.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1154.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1154.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1154.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1154.10 +#  *                                                                          *
 1154.11 +#  ************************************************************************** */
 1154.12 +#
 1154.13 +# /* See http://www.boost.org for most recent version. */
 1154.14 +#
 1154.15 +# ifndef BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
 1154.16 +# define BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
 1154.17 +#
 1154.18 +# include <boost/preprocessor/config/config.hpp>
 1154.19 +# include <boost/preprocessor/slot/slot.hpp>
 1154.20 +# include <boost/preprocessor/tuple/elem.hpp>
 1154.21 +#
 1154.22 +# /* BOOST_PP_LOCAL_ITERATE */
 1154.23 +#
 1154.24 +# define BOOST_PP_LOCAL_ITERATE() <boost/preprocessor/iteration/detail/local.hpp>
 1154.25 +#
 1154.26 +# define BOOST_PP_LOCAL_C(n) (BOOST_PP_LOCAL_S) <= n && (BOOST_PP_LOCAL_F) >= n
 1154.27 +# define BOOST_PP_LOCAL_R(n) (BOOST_PP_LOCAL_F) <= n && (BOOST_PP_LOCAL_S) >= n
 1154.28 +#
 1154.29 +# endif
  1155.1 --- a/epoc32/include/stdapis/boost/preprocessor/iteration/iterate.hpp	Tue Mar 16 16:12:26 2010 +0000
  1155.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1155.3 @@ -1,82 +0,0 @@
  1155.4 -# /* **************************************************************************
  1155.5 -#  *                                                                          *
  1155.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1155.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1155.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1155.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1155.10 -#  *                                                                          *
 1155.11 -#  ************************************************************************** */
 1155.12 -#
 1155.13 -# /* See http://www.boost.org for most recent version. */
 1155.14 -#
 1155.15 -# ifndef BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
 1155.16 -# define BOOST_PREPROCESSOR_ITERATION_ITERATE_HPP
 1155.17 -#
 1155.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1155.19 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1155.20 -# include <boost/preprocessor/array/elem.hpp>
 1155.21 -# include <boost/preprocessor/array/size.hpp>
 1155.22 -# include <boost/preprocessor/cat.hpp>
 1155.23 -# include <boost/preprocessor/slot/slot.hpp>
 1155.24 -# include <boost/preprocessor/tuple/elem.hpp>
 1155.25 -#
 1155.26 -# /* BOOST_PP_ITERATION_DEPTH */
 1155.27 -#
 1155.28 -# define BOOST_PP_ITERATION_DEPTH() 0
 1155.29 -#
 1155.30 -# /* BOOST_PP_ITERATION */
 1155.31 -#
 1155.32 -# define BOOST_PP_ITERATION() BOOST_PP_CAT(BOOST_PP_ITERATION_, BOOST_PP_ITERATION_DEPTH())
 1155.33 -#
 1155.34 -# /* BOOST_PP_ITERATION_START && BOOST_PP_ITERATION_FINISH */
 1155.35 -#
 1155.36 -# define BOOST_PP_ITERATION_START() BOOST_PP_CAT(BOOST_PP_ITERATION_START_, BOOST_PP_ITERATION_DEPTH())
 1155.37 -# define BOOST_PP_ITERATION_FINISH() BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, BOOST_PP_ITERATION_DEPTH())
 1155.38 -#
 1155.39 -# /* BOOST_PP_ITERATION_FLAGS */
 1155.40 -#
 1155.41 -# define BOOST_PP_ITERATION_FLAGS() (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, BOOST_PP_ITERATION_DEPTH()))
 1155.42 -#
 1155.43 -# /* BOOST_PP_FRAME_ITERATION */
 1155.44 -#
 1155.45 -# define BOOST_PP_FRAME_ITERATION(i) BOOST_PP_CAT(BOOST_PP_ITERATION_, i)
 1155.46 -#
 1155.47 -# /* BOOST_PP_FRAME_START && BOOST_PP_FRAME_FINISH */
 1155.48 -#
 1155.49 -# define BOOST_PP_FRAME_START(i) BOOST_PP_CAT(BOOST_PP_ITERATION_START_, i)
 1155.50 -# define BOOST_PP_FRAME_FINISH(i) BOOST_PP_CAT(BOOST_PP_ITERATION_FINISH_, i)
 1155.51 -#
 1155.52 -# /* BOOST_PP_FRAME_FLAGS */
 1155.53 -#
 1155.54 -# define BOOST_PP_FRAME_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_ITERATION_FLAGS_, i))
 1155.55 -#
 1155.56 -# /* BOOST_PP_RELATIVE_ITERATION */
 1155.57 -#
 1155.58 -# define BOOST_PP_RELATIVE_ITERATION(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_)
 1155.59 -#
 1155.60 -# define BOOST_PP_RELATIVE_0(m) BOOST_PP_CAT(m, BOOST_PP_ITERATION_DEPTH())
 1155.61 -# define BOOST_PP_RELATIVE_1(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))
 1155.62 -# define BOOST_PP_RELATIVE_2(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))
 1155.63 -# define BOOST_PP_RELATIVE_3(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH()))))
 1155.64 -# define BOOST_PP_RELATIVE_4(m) BOOST_PP_CAT(m, BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_DEC(BOOST_PP_ITERATION_DEPTH())))))
 1155.65 -#
 1155.66 -# /* BOOST_PP_RELATIVE_START && BOOST_PP_RELATIVE_FINISH */
 1155.67 -#
 1155.68 -# define BOOST_PP_RELATIVE_START(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_START_)
 1155.69 -# define BOOST_PP_RELATIVE_FINISH(i) BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FINISH_)
 1155.70 -#
 1155.71 -# /* BOOST_PP_RELATIVE_FLAGS */
 1155.72 -#
 1155.73 -# define BOOST_PP_RELATIVE_FLAGS(i) (BOOST_PP_CAT(BOOST_PP_RELATIVE_, i)(BOOST_PP_ITERATION_FLAGS_))
 1155.74 -#
 1155.75 -# /* BOOST_PP_ITERATE */
 1155.76 -#
 1155.77 -# define BOOST_PP_ITERATE() BOOST_PP_CAT(BOOST_PP_ITERATE_, BOOST_PP_INC(BOOST_PP_ITERATION_DEPTH()))
 1155.78 -#
 1155.79 -# define BOOST_PP_ITERATE_1 <boost/preprocessor/iteration/detail/iter/forward1.hpp>
 1155.80 -# define BOOST_PP_ITERATE_2 <boost/preprocessor/iteration/detail/iter/forward2.hpp>
 1155.81 -# define BOOST_PP_ITERATE_3 <boost/preprocessor/iteration/detail/iter/forward3.hpp>
 1155.82 -# define BOOST_PP_ITERATE_4 <boost/preprocessor/iteration/detail/iter/forward4.hpp>
 1155.83 -# define BOOST_PP_ITERATE_5 <boost/preprocessor/iteration/detail/iter/forward5.hpp>
 1155.84 -#
 1155.85 -# endif
  1156.1 --- a/epoc32/include/stdapis/boost/preprocessor/iteration/local.hpp	Tue Mar 16 16:12:26 2010 +0000
  1156.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1156.3 @@ -1,26 +0,0 @@
  1156.4 -# /* **************************************************************************
  1156.5 -#  *                                                                          *
  1156.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1156.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1156.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1156.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1156.10 -#  *                                                                          *
 1156.11 -#  ************************************************************************** */
 1156.12 -#
 1156.13 -# /* See http://www.boost.org for most recent version. */
 1156.14 -#
 1156.15 -# ifndef BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
 1156.16 -# define BOOST_PREPROCESSOR_ITERATION_LOCAL_HPP
 1156.17 -#
 1156.18 -# include <boost/preprocessor/config/config.hpp>
 1156.19 -# include <boost/preprocessor/slot/slot.hpp>
 1156.20 -# include <boost/preprocessor/tuple/elem.hpp>
 1156.21 -#
 1156.22 -# /* BOOST_PP_LOCAL_ITERATE */
 1156.23 -#
 1156.24 -# define BOOST_PP_LOCAL_ITERATE() <boost/preprocessor/iteration/detail/local.hpp>
 1156.25 -#
 1156.26 -# define BOOST_PP_LOCAL_C(n) (BOOST_PP_LOCAL_S) <= n && (BOOST_PP_LOCAL_F) >= n
 1156.27 -# define BOOST_PP_LOCAL_R(n) (BOOST_PP_LOCAL_F) <= n && (BOOST_PP_LOCAL_S) >= n
 1156.28 -#
 1156.29 -# endif
  1157.1 --- a/epoc32/include/stdapis/boost/preprocessor/list.hpp	Tue Mar 16 16:12:26 2010 +0000
  1157.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1157.3 @@ -1,35 +0,0 @@
  1157.4 -# /* Copyright (C) 2001
  1157.5 -#  * Housemarque Oy
  1157.6 -#  * http://www.housemarque.com
  1157.7 -#  *
  1157.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1157.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1157.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1157.11 -#  */
 1157.12 -#
 1157.13 -# /* Revised by Paul Mensonides (2002) */
 1157.14 -#
 1157.15 -# /* See http://www.boost.org for most recent version. */
 1157.16 -#
 1157.17 -# ifndef BOOST_PREPROCESSOR_LIST_HPP
 1157.18 -# define BOOST_PREPROCESSOR_LIST_HPP
 1157.19 -#
 1157.20 -# include <boost/preprocessor/list/adt.hpp>
 1157.21 -# include <boost/preprocessor/list/append.hpp>
 1157.22 -# include <boost/preprocessor/list/at.hpp>
 1157.23 -# include <boost/preprocessor/list/cat.hpp>
 1157.24 -# include <boost/preprocessor/list/enum.hpp>
 1157.25 -# include <boost/preprocessor/list/filter.hpp>
 1157.26 -# include <boost/preprocessor/list/first_n.hpp>
 1157.27 -# include <boost/preprocessor/list/fold_left.hpp>
 1157.28 -# include <boost/preprocessor/list/fold_right.hpp>
 1157.29 -# include <boost/preprocessor/list/for_each.hpp>
 1157.30 -# include <boost/preprocessor/list/for_each_i.hpp>
 1157.31 -# include <boost/preprocessor/list/for_each_product.hpp>
 1157.32 -# include <boost/preprocessor/list/rest_n.hpp>
 1157.33 -# include <boost/preprocessor/list/reverse.hpp>
 1157.34 -# include <boost/preprocessor/list/size.hpp>
 1157.35 -# include <boost/preprocessor/list/to_tuple.hpp>
 1157.36 -# include <boost/preprocessor/list/transform.hpp>
 1157.37 -#
 1157.38 -# endif
  1158.1 --- a/epoc32/include/stdapis/boost/preprocessor/list/at.hpp	Tue Mar 16 16:12:26 2010 +0000
  1158.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1158.3 @@ -1,39 +0,0 @@
  1158.4 -# /* Copyright (C) 2001
  1158.5 -#  * Housemarque Oy
  1158.6 -#  * http://www.housemarque.com
  1158.7 -#  *
  1158.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1158.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1158.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1158.11 -#  */
 1158.12 -#
 1158.13 -# /* Revised by Paul Mensonides (2002) */
 1158.14 -#
 1158.15 -# /* See http://www.boost.org for most recent version. */
 1158.16 -#
 1158.17 -# ifndef BOOST_PREPROCESSOR_LIST_AT_HPP
 1158.18 -# define BOOST_PREPROCESSOR_LIST_AT_HPP
 1158.19 -#
 1158.20 -# include <boost/preprocessor/config/config.hpp>
 1158.21 -# include <boost/preprocessor/list/adt.hpp>
 1158.22 -# include <boost/preprocessor/list/rest_n.hpp>
 1158.23 -#
 1158.24 -# /* BOOST_PP_LIST_AT */
 1158.25 -#
 1158.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1158.27 -#    define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
 1158.28 -# else
 1158.29 -#    define BOOST_PP_LIST_AT(list, index) BOOST_PP_LIST_AT_I(list, index)
 1158.30 -#    define BOOST_PP_LIST_AT_I(list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N(index, list))
 1158.31 -# endif
 1158.32 -#
 1158.33 -# /* BOOST_PP_LIST_AT_D */
 1158.34 -#
 1158.35 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1158.36 -#    define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
 1158.37 -# else
 1158.38 -#    define BOOST_PP_LIST_AT_D(d, list, index) BOOST_PP_LIST_AT_D_I(d, list, index)
 1158.39 -#    define BOOST_PP_LIST_AT_D_I(d, list, index) BOOST_PP_LIST_FIRST(BOOST_PP_LIST_REST_N_D(d, index, list))
 1158.40 -# endif
 1158.41 -#
 1158.42 -# endif
  1159.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1159.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/detail/edg/fold_left.hpp	Wed Mar 31 12:27:01 2010 +0100
  1159.3 @@ -0,0 +1,1070 @@
  1159.4 +# /* **************************************************************************
  1159.5 +#  *                                                                          *
  1159.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1159.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1159.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1159.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1159.10 +#  *                                                                          *
 1159.11 +#  ************************************************************************** */
 1159.12 +#
 1159.13 +# /* See http://www.boost.org for most recent version. */
 1159.14 +#
 1159.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
 1159.16 +# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
 1159.17 +#
 1159.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1159.19 +# include <boost/preprocessor/cat.hpp>
 1159.20 +# include <boost/preprocessor/control/if.hpp>
 1159.21 +# include <boost/preprocessor/debug/error.hpp>
 1159.22 +# include <boost/preprocessor/detail/auto_rec.hpp>
 1159.23 +# include <boost/preprocessor/seq/seq.hpp>
 1159.24 +# include <boost/preprocessor/seq/size.hpp>
 1159.25 +#
 1159.26 +# /* BOOST_PP_SEQ_FOLD_LEFT */
 1159.27 +#
 1159.28 +# if 0
 1159.29 +#    define BOOST_PP_SEQ_FOLD_LEFT(op, state, seq) ...
 1159.30 +# endif
 1159.31 +#
 1159.32 +# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
 1159.33 +# define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_SEQ_FOLD_LEFT_I_ ## n(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1))
 1159.34 +# define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st
 1159.35 +#
 1159.36 +# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
 1159.37 +# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_ERROR(0x0005)
 1159.38 +#
 1159.39 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
 1159.40 +#
 1159.41 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0
 1159.42 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0
 1159.43 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0
 1159.44 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0
 1159.45 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0
 1159.46 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0
 1159.47 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0
 1159.48 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0
 1159.49 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0
 1159.50 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0
 1159.51 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0
 1159.52 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0
 1159.53 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0
 1159.54 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0
 1159.55 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0
 1159.56 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0
 1159.57 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0
 1159.58 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0
 1159.59 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0
 1159.60 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0
 1159.61 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0
 1159.62 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0
 1159.63 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0
 1159.64 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0
 1159.65 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0
 1159.66 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0
 1159.67 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0
 1159.68 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0
 1159.69 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0
 1159.70 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0
 1159.71 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0
 1159.72 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0
 1159.73 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0
 1159.74 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0
 1159.75 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0
 1159.76 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0
 1159.77 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0
 1159.78 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0
 1159.79 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0
 1159.80 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0
 1159.81 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0
 1159.82 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0
 1159.83 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0
 1159.84 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0
 1159.85 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0
 1159.86 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0
 1159.87 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0
 1159.88 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0
 1159.89 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0
 1159.90 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0
 1159.91 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0
 1159.92 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0
 1159.93 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0
 1159.94 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0
 1159.95 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0
 1159.96 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0
 1159.97 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0
 1159.98 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0
 1159.99 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0
1159.100 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0
1159.101 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0
1159.102 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0
1159.103 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0
1159.104 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0
1159.105 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0
1159.106 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0
1159.107 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0
1159.108 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0
1159.109 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0
1159.110 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0
1159.111 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0
1159.112 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0
1159.113 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0
1159.114 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0
1159.115 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0
1159.116 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0
1159.117 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0
1159.118 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0
1159.119 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0
1159.120 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0
1159.121 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0
1159.122 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0
1159.123 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0
1159.124 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0
1159.125 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0
1159.126 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0
1159.127 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0
1159.128 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0
1159.129 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0
1159.130 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0
1159.131 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0
1159.132 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0
1159.133 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0
1159.134 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0
1159.135 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0
1159.136 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0
1159.137 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0
1159.138 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0
1159.139 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0
1159.140 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0
1159.141 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0
1159.142 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0
1159.143 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0
1159.144 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0
1159.145 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0
1159.146 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0
1159.147 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0
1159.148 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0
1159.149 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0
1159.150 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0
1159.151 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0
1159.152 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0
1159.153 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0
1159.154 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0
1159.155 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0
1159.156 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0
1159.157 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0
1159.158 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0
1159.159 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0
1159.160 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0
1159.161 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0
1159.162 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0
1159.163 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0
1159.164 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0
1159.165 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0
1159.166 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0
1159.167 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0
1159.168 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0
1159.169 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0
1159.170 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0
1159.171 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0
1159.172 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0
1159.173 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0
1159.174 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0
1159.175 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0
1159.176 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0
1159.177 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0
1159.178 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0
1159.179 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0
1159.180 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0
1159.181 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0
1159.182 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0
1159.183 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0
1159.184 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0
1159.185 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0
1159.186 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0
1159.187 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0
1159.188 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0
1159.189 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0
1159.190 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0
1159.191 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0
1159.192 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0
1159.193 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0
1159.194 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0
1159.195 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0
1159.196 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0
1159.197 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0
1159.198 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0
1159.199 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0
1159.200 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0
1159.201 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0
1159.202 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0
1159.203 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0
1159.204 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0
1159.205 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0
1159.206 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0
1159.207 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0
1159.208 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0
1159.209 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0
1159.210 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0
1159.211 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0
1159.212 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0
1159.213 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0
1159.214 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0
1159.215 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0
1159.216 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0
1159.217 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0
1159.218 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0
1159.219 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0
1159.220 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0
1159.221 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0
1159.222 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0
1159.223 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0
1159.224 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0
1159.225 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0
1159.226 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0
1159.227 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0
1159.228 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0
1159.229 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0
1159.230 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0
1159.231 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0
1159.232 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0
1159.233 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0
1159.234 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0
1159.235 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0
1159.236 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0
1159.237 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0
1159.238 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0
1159.239 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0
1159.240 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0
1159.241 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0
1159.242 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0
1159.243 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0
1159.244 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0
1159.245 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0
1159.246 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0
1159.247 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0
1159.248 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0
1159.249 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0
1159.250 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0
1159.251 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0
1159.252 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0
1159.253 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0
1159.254 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0
1159.255 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0
1159.256 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0
1159.257 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0
1159.258 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0
1159.259 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0
1159.260 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0
1159.261 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0
1159.262 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0
1159.263 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0
1159.264 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0
1159.265 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0
1159.266 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0
1159.267 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0
1159.268 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0
1159.269 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0
1159.270 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0
1159.271 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0
1159.272 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0
1159.273 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0
1159.274 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0
1159.275 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0
1159.276 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0
1159.277 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0
1159.278 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0
1159.279 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0
1159.280 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0
1159.281 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0
1159.282 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0
1159.283 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0
1159.284 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0
1159.285 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0
1159.286 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0
1159.287 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0
1159.288 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0
1159.289 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0
1159.290 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0
1159.291 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0
1159.292 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0
1159.293 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0
1159.294 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0
1159.295 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0
1159.296 +# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0
1159.297 +#
1159.298 +# define BOOST_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st
1159.299 +#
1159.300 +# define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.301 +# define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.302 +# define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.303 +# define BOOST_PP_SEQ_FOLD_LEFT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.304 +# define BOOST_PP_SEQ_FOLD_LEFT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.305 +# define BOOST_PP_SEQ_FOLD_LEFT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.306 +# define BOOST_PP_SEQ_FOLD_LEFT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.307 +# define BOOST_PP_SEQ_FOLD_LEFT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.308 +# define BOOST_PP_SEQ_FOLD_LEFT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.309 +# define BOOST_PP_SEQ_FOLD_LEFT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.310 +# define BOOST_PP_SEQ_FOLD_LEFT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.311 +# define BOOST_PP_SEQ_FOLD_LEFT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.312 +# define BOOST_PP_SEQ_FOLD_LEFT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.313 +# define BOOST_PP_SEQ_FOLD_LEFT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.314 +# define BOOST_PP_SEQ_FOLD_LEFT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.315 +# define BOOST_PP_SEQ_FOLD_LEFT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.316 +# define BOOST_PP_SEQ_FOLD_LEFT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.317 +# define BOOST_PP_SEQ_FOLD_LEFT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.318 +# define BOOST_PP_SEQ_FOLD_LEFT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.319 +# define BOOST_PP_SEQ_FOLD_LEFT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.320 +# define BOOST_PP_SEQ_FOLD_LEFT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.321 +# define BOOST_PP_SEQ_FOLD_LEFT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.322 +# define BOOST_PP_SEQ_FOLD_LEFT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.323 +# define BOOST_PP_SEQ_FOLD_LEFT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.324 +# define BOOST_PP_SEQ_FOLD_LEFT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.325 +# define BOOST_PP_SEQ_FOLD_LEFT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.326 +# define BOOST_PP_SEQ_FOLD_LEFT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.327 +# define BOOST_PP_SEQ_FOLD_LEFT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.328 +# define BOOST_PP_SEQ_FOLD_LEFT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.329 +# define BOOST_PP_SEQ_FOLD_LEFT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.330 +# define BOOST_PP_SEQ_FOLD_LEFT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.331 +# define BOOST_PP_SEQ_FOLD_LEFT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.332 +# define BOOST_PP_SEQ_FOLD_LEFT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.333 +# define BOOST_PP_SEQ_FOLD_LEFT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.334 +# define BOOST_PP_SEQ_FOLD_LEFT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.335 +# define BOOST_PP_SEQ_FOLD_LEFT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.336 +# define BOOST_PP_SEQ_FOLD_LEFT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.337 +# define BOOST_PP_SEQ_FOLD_LEFT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.338 +# define BOOST_PP_SEQ_FOLD_LEFT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.339 +# define BOOST_PP_SEQ_FOLD_LEFT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.340 +# define BOOST_PP_SEQ_FOLD_LEFT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.341 +# define BOOST_PP_SEQ_FOLD_LEFT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.342 +# define BOOST_PP_SEQ_FOLD_LEFT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.343 +# define BOOST_PP_SEQ_FOLD_LEFT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.344 +# define BOOST_PP_SEQ_FOLD_LEFT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.345 +# define BOOST_PP_SEQ_FOLD_LEFT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.346 +# define BOOST_PP_SEQ_FOLD_LEFT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.347 +# define BOOST_PP_SEQ_FOLD_LEFT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.348 +# define BOOST_PP_SEQ_FOLD_LEFT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.349 +# define BOOST_PP_SEQ_FOLD_LEFT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.350 +# define BOOST_PP_SEQ_FOLD_LEFT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.351 +# define BOOST_PP_SEQ_FOLD_LEFT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.352 +# define BOOST_PP_SEQ_FOLD_LEFT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.353 +# define BOOST_PP_SEQ_FOLD_LEFT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.354 +# define BOOST_PP_SEQ_FOLD_LEFT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.355 +# define BOOST_PP_SEQ_FOLD_LEFT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.356 +# define BOOST_PP_SEQ_FOLD_LEFT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.357 +# define BOOST_PP_SEQ_FOLD_LEFT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.358 +# define BOOST_PP_SEQ_FOLD_LEFT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.359 +# define BOOST_PP_SEQ_FOLD_LEFT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.360 +# define BOOST_PP_SEQ_FOLD_LEFT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.361 +# define BOOST_PP_SEQ_FOLD_LEFT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.362 +# define BOOST_PP_SEQ_FOLD_LEFT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.363 +# define BOOST_PP_SEQ_FOLD_LEFT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.364 +# define BOOST_PP_SEQ_FOLD_LEFT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.365 +# define BOOST_PP_SEQ_FOLD_LEFT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.366 +# define BOOST_PP_SEQ_FOLD_LEFT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.367 +# define BOOST_PP_SEQ_FOLD_LEFT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.368 +# define BOOST_PP_SEQ_FOLD_LEFT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.369 +# define BOOST_PP_SEQ_FOLD_LEFT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.370 +# define BOOST_PP_SEQ_FOLD_LEFT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.371 +# define BOOST_PP_SEQ_FOLD_LEFT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.372 +# define BOOST_PP_SEQ_FOLD_LEFT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.373 +# define BOOST_PP_SEQ_FOLD_LEFT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.374 +# define BOOST_PP_SEQ_FOLD_LEFT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.375 +# define BOOST_PP_SEQ_FOLD_LEFT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.376 +# define BOOST_PP_SEQ_FOLD_LEFT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.377 +# define BOOST_PP_SEQ_FOLD_LEFT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.378 +# define BOOST_PP_SEQ_FOLD_LEFT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.379 +# define BOOST_PP_SEQ_FOLD_LEFT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.380 +# define BOOST_PP_SEQ_FOLD_LEFT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.381 +# define BOOST_PP_SEQ_FOLD_LEFT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.382 +# define BOOST_PP_SEQ_FOLD_LEFT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.383 +# define BOOST_PP_SEQ_FOLD_LEFT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.384 +# define BOOST_PP_SEQ_FOLD_LEFT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.385 +# define BOOST_PP_SEQ_FOLD_LEFT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.386 +# define BOOST_PP_SEQ_FOLD_LEFT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.387 +# define BOOST_PP_SEQ_FOLD_LEFT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.388 +# define BOOST_PP_SEQ_FOLD_LEFT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.389 +# define BOOST_PP_SEQ_FOLD_LEFT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.390 +# define BOOST_PP_SEQ_FOLD_LEFT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.391 +# define BOOST_PP_SEQ_FOLD_LEFT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.392 +# define BOOST_PP_SEQ_FOLD_LEFT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.393 +# define BOOST_PP_SEQ_FOLD_LEFT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.394 +# define BOOST_PP_SEQ_FOLD_LEFT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.395 +# define BOOST_PP_SEQ_FOLD_LEFT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.396 +# define BOOST_PP_SEQ_FOLD_LEFT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.397 +# define BOOST_PP_SEQ_FOLD_LEFT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.398 +# define BOOST_PP_SEQ_FOLD_LEFT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.399 +# define BOOST_PP_SEQ_FOLD_LEFT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.400 +# define BOOST_PP_SEQ_FOLD_LEFT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.401 +# define BOOST_PP_SEQ_FOLD_LEFT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.402 +# define BOOST_PP_SEQ_FOLD_LEFT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.403 +# define BOOST_PP_SEQ_FOLD_LEFT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.404 +# define BOOST_PP_SEQ_FOLD_LEFT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.405 +# define BOOST_PP_SEQ_FOLD_LEFT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.406 +# define BOOST_PP_SEQ_FOLD_LEFT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.407 +# define BOOST_PP_SEQ_FOLD_LEFT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.408 +# define BOOST_PP_SEQ_FOLD_LEFT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.409 +# define BOOST_PP_SEQ_FOLD_LEFT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.410 +# define BOOST_PP_SEQ_FOLD_LEFT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.411 +# define BOOST_PP_SEQ_FOLD_LEFT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.412 +# define BOOST_PP_SEQ_FOLD_LEFT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.413 +# define BOOST_PP_SEQ_FOLD_LEFT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.414 +# define BOOST_PP_SEQ_FOLD_LEFT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.415 +# define BOOST_PP_SEQ_FOLD_LEFT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.416 +# define BOOST_PP_SEQ_FOLD_LEFT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.417 +# define BOOST_PP_SEQ_FOLD_LEFT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.418 +# define BOOST_PP_SEQ_FOLD_LEFT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.419 +# define BOOST_PP_SEQ_FOLD_LEFT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.420 +# define BOOST_PP_SEQ_FOLD_LEFT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.421 +# define BOOST_PP_SEQ_FOLD_LEFT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.422 +# define BOOST_PP_SEQ_FOLD_LEFT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.423 +# define BOOST_PP_SEQ_FOLD_LEFT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.424 +# define BOOST_PP_SEQ_FOLD_LEFT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.425 +# define BOOST_PP_SEQ_FOLD_LEFT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.426 +# define BOOST_PP_SEQ_FOLD_LEFT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.427 +# define BOOST_PP_SEQ_FOLD_LEFT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.428 +# define BOOST_PP_SEQ_FOLD_LEFT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.429 +# define BOOST_PP_SEQ_FOLD_LEFT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.430 +# define BOOST_PP_SEQ_FOLD_LEFT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.431 +# define BOOST_PP_SEQ_FOLD_LEFT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.432 +# define BOOST_PP_SEQ_FOLD_LEFT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.433 +# define BOOST_PP_SEQ_FOLD_LEFT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.434 +# define BOOST_PP_SEQ_FOLD_LEFT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.435 +# define BOOST_PP_SEQ_FOLD_LEFT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.436 +# define BOOST_PP_SEQ_FOLD_LEFT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.437 +# define BOOST_PP_SEQ_FOLD_LEFT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.438 +# define BOOST_PP_SEQ_FOLD_LEFT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.439 +# define BOOST_PP_SEQ_FOLD_LEFT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.440 +# define BOOST_PP_SEQ_FOLD_LEFT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.441 +# define BOOST_PP_SEQ_FOLD_LEFT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.442 +# define BOOST_PP_SEQ_FOLD_LEFT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.443 +# define BOOST_PP_SEQ_FOLD_LEFT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.444 +# define BOOST_PP_SEQ_FOLD_LEFT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.445 +# define BOOST_PP_SEQ_FOLD_LEFT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.446 +# define BOOST_PP_SEQ_FOLD_LEFT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.447 +# define BOOST_PP_SEQ_FOLD_LEFT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.448 +# define BOOST_PP_SEQ_FOLD_LEFT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.449 +# define BOOST_PP_SEQ_FOLD_LEFT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.450 +# define BOOST_PP_SEQ_FOLD_LEFT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.451 +# define BOOST_PP_SEQ_FOLD_LEFT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.452 +# define BOOST_PP_SEQ_FOLD_LEFT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.453 +# define BOOST_PP_SEQ_FOLD_LEFT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.454 +# define BOOST_PP_SEQ_FOLD_LEFT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.455 +# define BOOST_PP_SEQ_FOLD_LEFT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.456 +# define BOOST_PP_SEQ_FOLD_LEFT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.457 +# define BOOST_PP_SEQ_FOLD_LEFT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.458 +# define BOOST_PP_SEQ_FOLD_LEFT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.459 +# define BOOST_PP_SEQ_FOLD_LEFT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.460 +# define BOOST_PP_SEQ_FOLD_LEFT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.461 +# define BOOST_PP_SEQ_FOLD_LEFT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.462 +# define BOOST_PP_SEQ_FOLD_LEFT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.463 +# define BOOST_PP_SEQ_FOLD_LEFT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.464 +# define BOOST_PP_SEQ_FOLD_LEFT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.465 +# define BOOST_PP_SEQ_FOLD_LEFT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.466 +# define BOOST_PP_SEQ_FOLD_LEFT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.467 +# define BOOST_PP_SEQ_FOLD_LEFT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.468 +# define BOOST_PP_SEQ_FOLD_LEFT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.469 +# define BOOST_PP_SEQ_FOLD_LEFT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.470 +# define BOOST_PP_SEQ_FOLD_LEFT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.471 +# define BOOST_PP_SEQ_FOLD_LEFT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.472 +# define BOOST_PP_SEQ_FOLD_LEFT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.473 +# define BOOST_PP_SEQ_FOLD_LEFT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.474 +# define BOOST_PP_SEQ_FOLD_LEFT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.475 +# define BOOST_PP_SEQ_FOLD_LEFT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.476 +# define BOOST_PP_SEQ_FOLD_LEFT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.477 +# define BOOST_PP_SEQ_FOLD_LEFT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.478 +# define BOOST_PP_SEQ_FOLD_LEFT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.479 +# define BOOST_PP_SEQ_FOLD_LEFT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.480 +# define BOOST_PP_SEQ_FOLD_LEFT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.481 +# define BOOST_PP_SEQ_FOLD_LEFT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.482 +# define BOOST_PP_SEQ_FOLD_LEFT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.483 +# define BOOST_PP_SEQ_FOLD_LEFT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.484 +# define BOOST_PP_SEQ_FOLD_LEFT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.485 +# define BOOST_PP_SEQ_FOLD_LEFT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.486 +# define BOOST_PP_SEQ_FOLD_LEFT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.487 +# define BOOST_PP_SEQ_FOLD_LEFT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.488 +# define BOOST_PP_SEQ_FOLD_LEFT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.489 +# define BOOST_PP_SEQ_FOLD_LEFT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.490 +# define BOOST_PP_SEQ_FOLD_LEFT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.491 +# define BOOST_PP_SEQ_FOLD_LEFT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.492 +# define BOOST_PP_SEQ_FOLD_LEFT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.493 +# define BOOST_PP_SEQ_FOLD_LEFT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.494 +# define BOOST_PP_SEQ_FOLD_LEFT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.495 +# define BOOST_PP_SEQ_FOLD_LEFT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.496 +# define BOOST_PP_SEQ_FOLD_LEFT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.497 +# define BOOST_PP_SEQ_FOLD_LEFT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.498 +# define BOOST_PP_SEQ_FOLD_LEFT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.499 +# define BOOST_PP_SEQ_FOLD_LEFT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.500 +# define BOOST_PP_SEQ_FOLD_LEFT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.501 +# define BOOST_PP_SEQ_FOLD_LEFT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.502 +# define BOOST_PP_SEQ_FOLD_LEFT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.503 +# define BOOST_PP_SEQ_FOLD_LEFT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.504 +# define BOOST_PP_SEQ_FOLD_LEFT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.505 +# define BOOST_PP_SEQ_FOLD_LEFT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.506 +# define BOOST_PP_SEQ_FOLD_LEFT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.507 +# define BOOST_PP_SEQ_FOLD_LEFT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.508 +# define BOOST_PP_SEQ_FOLD_LEFT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.509 +# define BOOST_PP_SEQ_FOLD_LEFT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.510 +# define BOOST_PP_SEQ_FOLD_LEFT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.511 +# define BOOST_PP_SEQ_FOLD_LEFT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.512 +# define BOOST_PP_SEQ_FOLD_LEFT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.513 +# define BOOST_PP_SEQ_FOLD_LEFT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.514 +# define BOOST_PP_SEQ_FOLD_LEFT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.515 +# define BOOST_PP_SEQ_FOLD_LEFT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.516 +# define BOOST_PP_SEQ_FOLD_LEFT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.517 +# define BOOST_PP_SEQ_FOLD_LEFT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.518 +# define BOOST_PP_SEQ_FOLD_LEFT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.519 +# define BOOST_PP_SEQ_FOLD_LEFT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.520 +# define BOOST_PP_SEQ_FOLD_LEFT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.521 +# define BOOST_PP_SEQ_FOLD_LEFT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.522 +# define BOOST_PP_SEQ_FOLD_LEFT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.523 +# define BOOST_PP_SEQ_FOLD_LEFT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.524 +# define BOOST_PP_SEQ_FOLD_LEFT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.525 +# define BOOST_PP_SEQ_FOLD_LEFT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.526 +# define BOOST_PP_SEQ_FOLD_LEFT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.527 +# define BOOST_PP_SEQ_FOLD_LEFT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.528 +# define BOOST_PP_SEQ_FOLD_LEFT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.529 +# define BOOST_PP_SEQ_FOLD_LEFT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.530 +# define BOOST_PP_SEQ_FOLD_LEFT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.531 +# define BOOST_PP_SEQ_FOLD_LEFT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.532 +# define BOOST_PP_SEQ_FOLD_LEFT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.533 +# define BOOST_PP_SEQ_FOLD_LEFT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.534 +# define BOOST_PP_SEQ_FOLD_LEFT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.535 +# define BOOST_PP_SEQ_FOLD_LEFT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.536 +# define BOOST_PP_SEQ_FOLD_LEFT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.537 +# define BOOST_PP_SEQ_FOLD_LEFT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.538 +# define BOOST_PP_SEQ_FOLD_LEFT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.539 +# define BOOST_PP_SEQ_FOLD_LEFT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.540 +# define BOOST_PP_SEQ_FOLD_LEFT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.541 +# define BOOST_PP_SEQ_FOLD_LEFT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.542 +# define BOOST_PP_SEQ_FOLD_LEFT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.543 +# define BOOST_PP_SEQ_FOLD_LEFT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.544 +# define BOOST_PP_SEQ_FOLD_LEFT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.545 +# define BOOST_PP_SEQ_FOLD_LEFT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.546 +# define BOOST_PP_SEQ_FOLD_LEFT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.547 +# define BOOST_PP_SEQ_FOLD_LEFT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.548 +# define BOOST_PP_SEQ_FOLD_LEFT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.549 +# define BOOST_PP_SEQ_FOLD_LEFT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.550 +# define BOOST_PP_SEQ_FOLD_LEFT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.551 +# define BOOST_PP_SEQ_FOLD_LEFT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.552 +# define BOOST_PP_SEQ_FOLD_LEFT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.553 +# define BOOST_PP_SEQ_FOLD_LEFT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.554 +# define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.555 +# define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1159.556 +#
1159.557 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
1159.558 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.559 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.560 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.561 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.562 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.563 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.564 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.565 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.566 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.567 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.568 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.569 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.570 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.571 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.572 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.573 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.574 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.575 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.576 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.577 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.578 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.579 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.580 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.581 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.582 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.583 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.584 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.585 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.586 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.587 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.588 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.589 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.590 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.591 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.592 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.593 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.594 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.595 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.596 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.597 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.598 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.599 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.600 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.601 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.602 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.603 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.604 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.605 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.606 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.607 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.608 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.609 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.610 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.611 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.612 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.613 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.614 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.615 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.616 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.617 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.618 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.619 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.620 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.621 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.622 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.623 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.624 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.625 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.626 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.627 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.628 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.629 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.630 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.631 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.632 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.633 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.634 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.635 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.636 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.637 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.638 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.639 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.640 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.641 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.642 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.643 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.644 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.645 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.646 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.647 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.648 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.649 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.650 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.651 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.652 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.653 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.654 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.655 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.656 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.657 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.658 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.659 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.660 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.661 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.662 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.663 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.664 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.665 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.666 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.667 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.668 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.669 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.670 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.671 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.672 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.673 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.674 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.675 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.676 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.677 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.678 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.679 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.680 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.681 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.682 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.683 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.684 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.685 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.686 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.687 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.688 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.689 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.690 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.691 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.692 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.693 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.694 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.695 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.696 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.697 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.698 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.699 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.700 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.701 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.702 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.703 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.704 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.705 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.706 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.707 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.708 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.709 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.710 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.711 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.712 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.713 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.714 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.715 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.716 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.717 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.718 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.719 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.720 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.721 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.722 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.723 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.724 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.725 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.726 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.727 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.728 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.729 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.730 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.731 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.732 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.733 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.734 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.735 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.736 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.737 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.738 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.739 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.740 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.741 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.742 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.743 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.744 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.745 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.746 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.747 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.748 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.749 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.750 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.751 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.752 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.753 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.754 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.755 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.756 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.757 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.758 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.759 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.760 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.761 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.762 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.763 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.764 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.765 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.766 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.767 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.768 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.769 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.770 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.771 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.772 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.773 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.774 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.775 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.776 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.777 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.778 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.779 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.780 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.781 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.782 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.783 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.784 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.785 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.786 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.787 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.788 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.789 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.790 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.791 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.792 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.793 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.794 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.795 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.796 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.797 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.798 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.799 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.800 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.801 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.802 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.803 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.804 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.805 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.806 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.807 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.808 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.809 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.810 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.811 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.812 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.813 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.814 +# else
1159.815 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.816 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.817 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.818 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.819 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.820 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.821 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.822 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.823 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.824 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.825 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.826 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.827 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.828 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.829 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.830 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.831 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.832 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.833 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.834 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.835 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.836 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.837 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.838 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.839 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.840 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.841 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.842 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.843 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.844 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.845 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.846 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.847 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.848 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.849 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.850 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.851 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.852 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.853 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.854 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.855 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.856 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.857 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.858 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.859 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.860 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.861 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.862 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.863 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.864 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.865 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.866 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.867 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.868 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.869 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.870 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.871 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.872 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.873 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.874 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.875 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.876 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.877 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.878 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.879 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.880 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.881 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.882 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.883 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.884 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.885 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.886 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.887 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.888 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.889 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.890 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.891 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.892 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.893 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.894 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.895 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.896 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.897 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.898 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.899 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.900 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.901 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.902 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.903 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.904 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.905 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.906 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.907 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.908 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.909 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.910 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.911 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.912 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.913 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.914 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.915 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.916 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.917 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.918 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.919 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.920 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.921 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.922 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.923 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.924 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.925 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.926 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.927 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.928 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.929 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.930 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.931 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.932 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.933 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.934 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.935 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.936 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.937 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.938 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.939 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.940 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.941 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.942 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.943 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.944 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.945 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.946 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.947 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.948 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.949 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.950 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.951 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.952 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.953 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.954 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.955 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.956 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.957 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.958 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.959 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.960 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.961 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.962 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.963 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.964 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.965 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.966 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.967 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.968 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.969 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.970 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.971 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.972 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.973 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.974 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.975 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.976 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.977 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.978 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.979 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.980 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.981 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.982 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.983 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.984 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.985 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.986 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.987 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.988 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.989 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.990 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.991 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.992 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.993 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.994 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.995 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.996 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.997 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.998 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.999 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1000 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1001 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1002 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1003 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1004 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1005 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1006 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1007 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1008 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1009 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1010 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1011 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1012 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1013 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1014 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1015 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1016 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1017 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1018 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1019 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1020 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1021 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1022 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1023 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1024 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1025 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1026 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1027 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1028 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1029 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1030 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1031 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1032 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1033 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1034 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1035 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1036 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1037 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1038 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1039 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1040 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1041 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1042 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1043 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1044 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1045 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1046 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1047 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1048 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1049 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1050 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1051 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1052 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1053 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1054 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1055 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1056 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1057 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1058 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1059 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1060 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1061 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1062 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1063 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1064 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1065 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1066 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1067 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1068 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1069 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1070 +#    define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1159.1071 +# endif
1159.1072 +#
1159.1073 +# endif
  1160.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1160.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/detail/edg/fold_right.hpp	Wed Mar 31 12:27:01 2010 +0100
  1160.3 @@ -0,0 +1,288 @@
  1160.4 +# /* **************************************************************************
  1160.5 +#  *                                                                          *
  1160.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1160.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1160.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1160.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1160.10 +#  *                                                                          *
 1160.11 +#  ************************************************************************** */
 1160.12 +#
 1160.13 +# /* See http://www.boost.org for most recent version. */
 1160.14 +#
 1160.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
 1160.16 +# define BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
 1160.17 +#
 1160.18 +# include <boost/preprocessor/cat.hpp>
 1160.19 +# include <boost/preprocessor/detail/auto_rec.hpp>
 1160.20 +# include <boost/preprocessor/seq/fold_left.hpp>
 1160.21 +# include <boost/preprocessor/seq/reverse.hpp>
 1160.22 +# include <boost/preprocessor/seq/seq.hpp>
 1160.23 +#
 1160.24 +# /* BOOST_PP_SEQ_FOLD_RIGHT */
 1160.25 +#
 1160.26 +# if 0
 1160.27 +#    define BOOST_PP_SEQ_FOLD_RIGHT(op, state, seq) ...
 1160.28 +# endif
 1160.29 +#
 1160.30 +# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
 1160.31 +#
 1160.32 +# define BOOST_PP_SEQ_FOLD_RIGHT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
 1160.33 +#
 1160.34 +# define BOOST_PP_SEQ_FOLD_RIGHT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, BOOST_PP_SEQ_REVERSE_S(2, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.35 +# define BOOST_PP_SEQ_FOLD_RIGHT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, BOOST_PP_SEQ_REVERSE_S(3, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.36 +# define BOOST_PP_SEQ_FOLD_RIGHT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, BOOST_PP_SEQ_REVERSE_S(4, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.37 +# define BOOST_PP_SEQ_FOLD_RIGHT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, BOOST_PP_SEQ_REVERSE_S(5, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.38 +# define BOOST_PP_SEQ_FOLD_RIGHT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, BOOST_PP_SEQ_REVERSE_S(6, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.39 +# define BOOST_PP_SEQ_FOLD_RIGHT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, BOOST_PP_SEQ_REVERSE_S(7, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.40 +# define BOOST_PP_SEQ_FOLD_RIGHT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, BOOST_PP_SEQ_REVERSE_S(8, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.41 +# define BOOST_PP_SEQ_FOLD_RIGHT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, BOOST_PP_SEQ_REVERSE_S(9, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.42 +# define BOOST_PP_SEQ_FOLD_RIGHT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, BOOST_PP_SEQ_REVERSE_S(10, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.43 +# define BOOST_PP_SEQ_FOLD_RIGHT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, BOOST_PP_SEQ_REVERSE_S(11, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.44 +# define BOOST_PP_SEQ_FOLD_RIGHT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, BOOST_PP_SEQ_REVERSE_S(12, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.45 +# define BOOST_PP_SEQ_FOLD_RIGHT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, BOOST_PP_SEQ_REVERSE_S(13, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.46 +# define BOOST_PP_SEQ_FOLD_RIGHT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, BOOST_PP_SEQ_REVERSE_S(14, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.47 +# define BOOST_PP_SEQ_FOLD_RIGHT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, BOOST_PP_SEQ_REVERSE_S(15, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.48 +# define BOOST_PP_SEQ_FOLD_RIGHT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, BOOST_PP_SEQ_REVERSE_S(16, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.49 +# define BOOST_PP_SEQ_FOLD_RIGHT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, BOOST_PP_SEQ_REVERSE_S(17, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.50 +# define BOOST_PP_SEQ_FOLD_RIGHT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, BOOST_PP_SEQ_REVERSE_S(18, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.51 +# define BOOST_PP_SEQ_FOLD_RIGHT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, BOOST_PP_SEQ_REVERSE_S(19, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.52 +# define BOOST_PP_SEQ_FOLD_RIGHT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, BOOST_PP_SEQ_REVERSE_S(20, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.53 +# define BOOST_PP_SEQ_FOLD_RIGHT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, BOOST_PP_SEQ_REVERSE_S(21, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.54 +# define BOOST_PP_SEQ_FOLD_RIGHT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, BOOST_PP_SEQ_REVERSE_S(22, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.55 +# define BOOST_PP_SEQ_FOLD_RIGHT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, BOOST_PP_SEQ_REVERSE_S(23, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.56 +# define BOOST_PP_SEQ_FOLD_RIGHT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, BOOST_PP_SEQ_REVERSE_S(24, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.57 +# define BOOST_PP_SEQ_FOLD_RIGHT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, BOOST_PP_SEQ_REVERSE_S(25, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.58 +# define BOOST_PP_SEQ_FOLD_RIGHT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, BOOST_PP_SEQ_REVERSE_S(26, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.59 +# define BOOST_PP_SEQ_FOLD_RIGHT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, BOOST_PP_SEQ_REVERSE_S(27, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.60 +# define BOOST_PP_SEQ_FOLD_RIGHT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, BOOST_PP_SEQ_REVERSE_S(28, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.61 +# define BOOST_PP_SEQ_FOLD_RIGHT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, BOOST_PP_SEQ_REVERSE_S(29, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.62 +# define BOOST_PP_SEQ_FOLD_RIGHT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, BOOST_PP_SEQ_REVERSE_S(30, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.63 +# define BOOST_PP_SEQ_FOLD_RIGHT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, BOOST_PP_SEQ_REVERSE_S(31, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.64 +# define BOOST_PP_SEQ_FOLD_RIGHT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, BOOST_PP_SEQ_REVERSE_S(32, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.65 +# define BOOST_PP_SEQ_FOLD_RIGHT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, BOOST_PP_SEQ_REVERSE_S(33, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.66 +# define BOOST_PP_SEQ_FOLD_RIGHT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, BOOST_PP_SEQ_REVERSE_S(34, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.67 +# define BOOST_PP_SEQ_FOLD_RIGHT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, BOOST_PP_SEQ_REVERSE_S(35, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.68 +# define BOOST_PP_SEQ_FOLD_RIGHT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, BOOST_PP_SEQ_REVERSE_S(36, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.69 +# define BOOST_PP_SEQ_FOLD_RIGHT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, BOOST_PP_SEQ_REVERSE_S(37, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.70 +# define BOOST_PP_SEQ_FOLD_RIGHT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, BOOST_PP_SEQ_REVERSE_S(38, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.71 +# define BOOST_PP_SEQ_FOLD_RIGHT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, BOOST_PP_SEQ_REVERSE_S(39, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.72 +# define BOOST_PP_SEQ_FOLD_RIGHT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, BOOST_PP_SEQ_REVERSE_S(40, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.73 +# define BOOST_PP_SEQ_FOLD_RIGHT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, BOOST_PP_SEQ_REVERSE_S(41, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.74 +# define BOOST_PP_SEQ_FOLD_RIGHT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, BOOST_PP_SEQ_REVERSE_S(42, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.75 +# define BOOST_PP_SEQ_FOLD_RIGHT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, BOOST_PP_SEQ_REVERSE_S(43, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.76 +# define BOOST_PP_SEQ_FOLD_RIGHT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, BOOST_PP_SEQ_REVERSE_S(44, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.77 +# define BOOST_PP_SEQ_FOLD_RIGHT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, BOOST_PP_SEQ_REVERSE_S(45, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.78 +# define BOOST_PP_SEQ_FOLD_RIGHT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, BOOST_PP_SEQ_REVERSE_S(46, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.79 +# define BOOST_PP_SEQ_FOLD_RIGHT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, BOOST_PP_SEQ_REVERSE_S(47, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.80 +# define BOOST_PP_SEQ_FOLD_RIGHT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, BOOST_PP_SEQ_REVERSE_S(48, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.81 +# define BOOST_PP_SEQ_FOLD_RIGHT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, BOOST_PP_SEQ_REVERSE_S(49, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.82 +# define BOOST_PP_SEQ_FOLD_RIGHT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, BOOST_PP_SEQ_REVERSE_S(50, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.83 +# define BOOST_PP_SEQ_FOLD_RIGHT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, BOOST_PP_SEQ_REVERSE_S(51, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.84 +# define BOOST_PP_SEQ_FOLD_RIGHT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, BOOST_PP_SEQ_REVERSE_S(52, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.85 +# define BOOST_PP_SEQ_FOLD_RIGHT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, BOOST_PP_SEQ_REVERSE_S(53, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.86 +# define BOOST_PP_SEQ_FOLD_RIGHT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, BOOST_PP_SEQ_REVERSE_S(54, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.87 +# define BOOST_PP_SEQ_FOLD_RIGHT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, BOOST_PP_SEQ_REVERSE_S(55, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.88 +# define BOOST_PP_SEQ_FOLD_RIGHT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, BOOST_PP_SEQ_REVERSE_S(56, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.89 +# define BOOST_PP_SEQ_FOLD_RIGHT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, BOOST_PP_SEQ_REVERSE_S(57, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.90 +# define BOOST_PP_SEQ_FOLD_RIGHT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, BOOST_PP_SEQ_REVERSE_S(58, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.91 +# define BOOST_PP_SEQ_FOLD_RIGHT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, BOOST_PP_SEQ_REVERSE_S(59, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.92 +# define BOOST_PP_SEQ_FOLD_RIGHT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, BOOST_PP_SEQ_REVERSE_S(60, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.93 +# define BOOST_PP_SEQ_FOLD_RIGHT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, BOOST_PP_SEQ_REVERSE_S(61, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.94 +# define BOOST_PP_SEQ_FOLD_RIGHT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, BOOST_PP_SEQ_REVERSE_S(62, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.95 +# define BOOST_PP_SEQ_FOLD_RIGHT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, BOOST_PP_SEQ_REVERSE_S(63, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.96 +# define BOOST_PP_SEQ_FOLD_RIGHT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, BOOST_PP_SEQ_REVERSE_S(64, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.97 +# define BOOST_PP_SEQ_FOLD_RIGHT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, BOOST_PP_SEQ_REVERSE_S(65, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.98 +# define BOOST_PP_SEQ_FOLD_RIGHT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, BOOST_PP_SEQ_REVERSE_S(66, ss), BOOST_PP_SEQ_SIZE(ss))
 1160.99 +# define BOOST_PP_SEQ_FOLD_RIGHT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, BOOST_PP_SEQ_REVERSE_S(67, ss), BOOST_PP_SEQ_SIZE(ss))
1160.100 +# define BOOST_PP_SEQ_FOLD_RIGHT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, BOOST_PP_SEQ_REVERSE_S(68, ss), BOOST_PP_SEQ_SIZE(ss))
1160.101 +# define BOOST_PP_SEQ_FOLD_RIGHT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, BOOST_PP_SEQ_REVERSE_S(69, ss), BOOST_PP_SEQ_SIZE(ss))
1160.102 +# define BOOST_PP_SEQ_FOLD_RIGHT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, BOOST_PP_SEQ_REVERSE_S(70, ss), BOOST_PP_SEQ_SIZE(ss))
1160.103 +# define BOOST_PP_SEQ_FOLD_RIGHT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, BOOST_PP_SEQ_REVERSE_S(71, ss), BOOST_PP_SEQ_SIZE(ss))
1160.104 +# define BOOST_PP_SEQ_FOLD_RIGHT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, BOOST_PP_SEQ_REVERSE_S(72, ss), BOOST_PP_SEQ_SIZE(ss))
1160.105 +# define BOOST_PP_SEQ_FOLD_RIGHT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, BOOST_PP_SEQ_REVERSE_S(73, ss), BOOST_PP_SEQ_SIZE(ss))
1160.106 +# define BOOST_PP_SEQ_FOLD_RIGHT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, BOOST_PP_SEQ_REVERSE_S(74, ss), BOOST_PP_SEQ_SIZE(ss))
1160.107 +# define BOOST_PP_SEQ_FOLD_RIGHT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, BOOST_PP_SEQ_REVERSE_S(75, ss), BOOST_PP_SEQ_SIZE(ss))
1160.108 +# define BOOST_PP_SEQ_FOLD_RIGHT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, BOOST_PP_SEQ_REVERSE_S(76, ss), BOOST_PP_SEQ_SIZE(ss))
1160.109 +# define BOOST_PP_SEQ_FOLD_RIGHT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, BOOST_PP_SEQ_REVERSE_S(77, ss), BOOST_PP_SEQ_SIZE(ss))
1160.110 +# define BOOST_PP_SEQ_FOLD_RIGHT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, BOOST_PP_SEQ_REVERSE_S(78, ss), BOOST_PP_SEQ_SIZE(ss))
1160.111 +# define BOOST_PP_SEQ_FOLD_RIGHT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, BOOST_PP_SEQ_REVERSE_S(79, ss), BOOST_PP_SEQ_SIZE(ss))
1160.112 +# define BOOST_PP_SEQ_FOLD_RIGHT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, BOOST_PP_SEQ_REVERSE_S(80, ss), BOOST_PP_SEQ_SIZE(ss))
1160.113 +# define BOOST_PP_SEQ_FOLD_RIGHT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, BOOST_PP_SEQ_REVERSE_S(81, ss), BOOST_PP_SEQ_SIZE(ss))
1160.114 +# define BOOST_PP_SEQ_FOLD_RIGHT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, BOOST_PP_SEQ_REVERSE_S(82, ss), BOOST_PP_SEQ_SIZE(ss))
1160.115 +# define BOOST_PP_SEQ_FOLD_RIGHT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, BOOST_PP_SEQ_REVERSE_S(83, ss), BOOST_PP_SEQ_SIZE(ss))
1160.116 +# define BOOST_PP_SEQ_FOLD_RIGHT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, BOOST_PP_SEQ_REVERSE_S(84, ss), BOOST_PP_SEQ_SIZE(ss))
1160.117 +# define BOOST_PP_SEQ_FOLD_RIGHT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, BOOST_PP_SEQ_REVERSE_S(85, ss), BOOST_PP_SEQ_SIZE(ss))
1160.118 +# define BOOST_PP_SEQ_FOLD_RIGHT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, BOOST_PP_SEQ_REVERSE_S(86, ss), BOOST_PP_SEQ_SIZE(ss))
1160.119 +# define BOOST_PP_SEQ_FOLD_RIGHT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, BOOST_PP_SEQ_REVERSE_S(87, ss), BOOST_PP_SEQ_SIZE(ss))
1160.120 +# define BOOST_PP_SEQ_FOLD_RIGHT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, BOOST_PP_SEQ_REVERSE_S(88, ss), BOOST_PP_SEQ_SIZE(ss))
1160.121 +# define BOOST_PP_SEQ_FOLD_RIGHT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, BOOST_PP_SEQ_REVERSE_S(89, ss), BOOST_PP_SEQ_SIZE(ss))
1160.122 +# define BOOST_PP_SEQ_FOLD_RIGHT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, BOOST_PP_SEQ_REVERSE_S(90, ss), BOOST_PP_SEQ_SIZE(ss))
1160.123 +# define BOOST_PP_SEQ_FOLD_RIGHT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, BOOST_PP_SEQ_REVERSE_S(91, ss), BOOST_PP_SEQ_SIZE(ss))
1160.124 +# define BOOST_PP_SEQ_FOLD_RIGHT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, BOOST_PP_SEQ_REVERSE_S(92, ss), BOOST_PP_SEQ_SIZE(ss))
1160.125 +# define BOOST_PP_SEQ_FOLD_RIGHT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, BOOST_PP_SEQ_REVERSE_S(93, ss), BOOST_PP_SEQ_SIZE(ss))
1160.126 +# define BOOST_PP_SEQ_FOLD_RIGHT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, BOOST_PP_SEQ_REVERSE_S(94, ss), BOOST_PP_SEQ_SIZE(ss))
1160.127 +# define BOOST_PP_SEQ_FOLD_RIGHT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, BOOST_PP_SEQ_REVERSE_S(95, ss), BOOST_PP_SEQ_SIZE(ss))
1160.128 +# define BOOST_PP_SEQ_FOLD_RIGHT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, BOOST_PP_SEQ_REVERSE_S(96, ss), BOOST_PP_SEQ_SIZE(ss))
1160.129 +# define BOOST_PP_SEQ_FOLD_RIGHT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, BOOST_PP_SEQ_REVERSE_S(97, ss), BOOST_PP_SEQ_SIZE(ss))
1160.130 +# define BOOST_PP_SEQ_FOLD_RIGHT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, BOOST_PP_SEQ_REVERSE_S(98, ss), BOOST_PP_SEQ_SIZE(ss))
1160.131 +# define BOOST_PP_SEQ_FOLD_RIGHT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, BOOST_PP_SEQ_REVERSE_S(99, ss), BOOST_PP_SEQ_SIZE(ss))
1160.132 +# define BOOST_PP_SEQ_FOLD_RIGHT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, BOOST_PP_SEQ_REVERSE_S(100, ss), BOOST_PP_SEQ_SIZE(ss))
1160.133 +# define BOOST_PP_SEQ_FOLD_RIGHT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, BOOST_PP_SEQ_REVERSE_S(101, ss), BOOST_PP_SEQ_SIZE(ss))
1160.134 +# define BOOST_PP_SEQ_FOLD_RIGHT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, BOOST_PP_SEQ_REVERSE_S(102, ss), BOOST_PP_SEQ_SIZE(ss))
1160.135 +# define BOOST_PP_SEQ_FOLD_RIGHT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, BOOST_PP_SEQ_REVERSE_S(103, ss), BOOST_PP_SEQ_SIZE(ss))
1160.136 +# define BOOST_PP_SEQ_FOLD_RIGHT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, BOOST_PP_SEQ_REVERSE_S(104, ss), BOOST_PP_SEQ_SIZE(ss))
1160.137 +# define BOOST_PP_SEQ_FOLD_RIGHT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, BOOST_PP_SEQ_REVERSE_S(105, ss), BOOST_PP_SEQ_SIZE(ss))
1160.138 +# define BOOST_PP_SEQ_FOLD_RIGHT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, BOOST_PP_SEQ_REVERSE_S(106, ss), BOOST_PP_SEQ_SIZE(ss))
1160.139 +# define BOOST_PP_SEQ_FOLD_RIGHT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, BOOST_PP_SEQ_REVERSE_S(107, ss), BOOST_PP_SEQ_SIZE(ss))
1160.140 +# define BOOST_PP_SEQ_FOLD_RIGHT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, BOOST_PP_SEQ_REVERSE_S(108, ss), BOOST_PP_SEQ_SIZE(ss))
1160.141 +# define BOOST_PP_SEQ_FOLD_RIGHT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, BOOST_PP_SEQ_REVERSE_S(109, ss), BOOST_PP_SEQ_SIZE(ss))
1160.142 +# define BOOST_PP_SEQ_FOLD_RIGHT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, BOOST_PP_SEQ_REVERSE_S(110, ss), BOOST_PP_SEQ_SIZE(ss))
1160.143 +# define BOOST_PP_SEQ_FOLD_RIGHT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, BOOST_PP_SEQ_REVERSE_S(111, ss), BOOST_PP_SEQ_SIZE(ss))
1160.144 +# define BOOST_PP_SEQ_FOLD_RIGHT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, BOOST_PP_SEQ_REVERSE_S(112, ss), BOOST_PP_SEQ_SIZE(ss))
1160.145 +# define BOOST_PP_SEQ_FOLD_RIGHT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, BOOST_PP_SEQ_REVERSE_S(113, ss), BOOST_PP_SEQ_SIZE(ss))
1160.146 +# define BOOST_PP_SEQ_FOLD_RIGHT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, BOOST_PP_SEQ_REVERSE_S(114, ss), BOOST_PP_SEQ_SIZE(ss))
1160.147 +# define BOOST_PP_SEQ_FOLD_RIGHT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, BOOST_PP_SEQ_REVERSE_S(115, ss), BOOST_PP_SEQ_SIZE(ss))
1160.148 +# define BOOST_PP_SEQ_FOLD_RIGHT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, BOOST_PP_SEQ_REVERSE_S(116, ss), BOOST_PP_SEQ_SIZE(ss))
1160.149 +# define BOOST_PP_SEQ_FOLD_RIGHT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, BOOST_PP_SEQ_REVERSE_S(117, ss), BOOST_PP_SEQ_SIZE(ss))
1160.150 +# define BOOST_PP_SEQ_FOLD_RIGHT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, BOOST_PP_SEQ_REVERSE_S(118, ss), BOOST_PP_SEQ_SIZE(ss))
1160.151 +# define BOOST_PP_SEQ_FOLD_RIGHT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, BOOST_PP_SEQ_REVERSE_S(119, ss), BOOST_PP_SEQ_SIZE(ss))
1160.152 +# define BOOST_PP_SEQ_FOLD_RIGHT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, BOOST_PP_SEQ_REVERSE_S(120, ss), BOOST_PP_SEQ_SIZE(ss))
1160.153 +# define BOOST_PP_SEQ_FOLD_RIGHT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, BOOST_PP_SEQ_REVERSE_S(121, ss), BOOST_PP_SEQ_SIZE(ss))
1160.154 +# define BOOST_PP_SEQ_FOLD_RIGHT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, BOOST_PP_SEQ_REVERSE_S(122, ss), BOOST_PP_SEQ_SIZE(ss))
1160.155 +# define BOOST_PP_SEQ_FOLD_RIGHT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, BOOST_PP_SEQ_REVERSE_S(123, ss), BOOST_PP_SEQ_SIZE(ss))
1160.156 +# define BOOST_PP_SEQ_FOLD_RIGHT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, BOOST_PP_SEQ_REVERSE_S(124, ss), BOOST_PP_SEQ_SIZE(ss))
1160.157 +# define BOOST_PP_SEQ_FOLD_RIGHT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, BOOST_PP_SEQ_REVERSE_S(125, ss), BOOST_PP_SEQ_SIZE(ss))
1160.158 +# define BOOST_PP_SEQ_FOLD_RIGHT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, BOOST_PP_SEQ_REVERSE_S(126, ss), BOOST_PP_SEQ_SIZE(ss))
1160.159 +# define BOOST_PP_SEQ_FOLD_RIGHT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, BOOST_PP_SEQ_REVERSE_S(127, ss), BOOST_PP_SEQ_SIZE(ss))
1160.160 +# define BOOST_PP_SEQ_FOLD_RIGHT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, BOOST_PP_SEQ_REVERSE_S(128, ss), BOOST_PP_SEQ_SIZE(ss))
1160.161 +# define BOOST_PP_SEQ_FOLD_RIGHT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, BOOST_PP_SEQ_REVERSE_S(129, ss), BOOST_PP_SEQ_SIZE(ss))
1160.162 +# define BOOST_PP_SEQ_FOLD_RIGHT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, BOOST_PP_SEQ_REVERSE_S(130, ss), BOOST_PP_SEQ_SIZE(ss))
1160.163 +# define BOOST_PP_SEQ_FOLD_RIGHT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, BOOST_PP_SEQ_REVERSE_S(131, ss), BOOST_PP_SEQ_SIZE(ss))
1160.164 +# define BOOST_PP_SEQ_FOLD_RIGHT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, BOOST_PP_SEQ_REVERSE_S(132, ss), BOOST_PP_SEQ_SIZE(ss))
1160.165 +# define BOOST_PP_SEQ_FOLD_RIGHT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, BOOST_PP_SEQ_REVERSE_S(133, ss), BOOST_PP_SEQ_SIZE(ss))
1160.166 +# define BOOST_PP_SEQ_FOLD_RIGHT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, BOOST_PP_SEQ_REVERSE_S(134, ss), BOOST_PP_SEQ_SIZE(ss))
1160.167 +# define BOOST_PP_SEQ_FOLD_RIGHT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, BOOST_PP_SEQ_REVERSE_S(135, ss), BOOST_PP_SEQ_SIZE(ss))
1160.168 +# define BOOST_PP_SEQ_FOLD_RIGHT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, BOOST_PP_SEQ_REVERSE_S(136, ss), BOOST_PP_SEQ_SIZE(ss))
1160.169 +# define BOOST_PP_SEQ_FOLD_RIGHT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, BOOST_PP_SEQ_REVERSE_S(137, ss), BOOST_PP_SEQ_SIZE(ss))
1160.170 +# define BOOST_PP_SEQ_FOLD_RIGHT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, BOOST_PP_SEQ_REVERSE_S(138, ss), BOOST_PP_SEQ_SIZE(ss))
1160.171 +# define BOOST_PP_SEQ_FOLD_RIGHT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, BOOST_PP_SEQ_REVERSE_S(139, ss), BOOST_PP_SEQ_SIZE(ss))
1160.172 +# define BOOST_PP_SEQ_FOLD_RIGHT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, BOOST_PP_SEQ_REVERSE_S(140, ss), BOOST_PP_SEQ_SIZE(ss))
1160.173 +# define BOOST_PP_SEQ_FOLD_RIGHT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, BOOST_PP_SEQ_REVERSE_S(141, ss), BOOST_PP_SEQ_SIZE(ss))
1160.174 +# define BOOST_PP_SEQ_FOLD_RIGHT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, BOOST_PP_SEQ_REVERSE_S(142, ss), BOOST_PP_SEQ_SIZE(ss))
1160.175 +# define BOOST_PP_SEQ_FOLD_RIGHT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, BOOST_PP_SEQ_REVERSE_S(143, ss), BOOST_PP_SEQ_SIZE(ss))
1160.176 +# define BOOST_PP_SEQ_FOLD_RIGHT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, BOOST_PP_SEQ_REVERSE_S(144, ss), BOOST_PP_SEQ_SIZE(ss))
1160.177 +# define BOOST_PP_SEQ_FOLD_RIGHT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, BOOST_PP_SEQ_REVERSE_S(145, ss), BOOST_PP_SEQ_SIZE(ss))
1160.178 +# define BOOST_PP_SEQ_FOLD_RIGHT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, BOOST_PP_SEQ_REVERSE_S(146, ss), BOOST_PP_SEQ_SIZE(ss))
1160.179 +# define BOOST_PP_SEQ_FOLD_RIGHT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, BOOST_PP_SEQ_REVERSE_S(147, ss), BOOST_PP_SEQ_SIZE(ss))
1160.180 +# define BOOST_PP_SEQ_FOLD_RIGHT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, BOOST_PP_SEQ_REVERSE_S(148, ss), BOOST_PP_SEQ_SIZE(ss))
1160.181 +# define BOOST_PP_SEQ_FOLD_RIGHT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, BOOST_PP_SEQ_REVERSE_S(149, ss), BOOST_PP_SEQ_SIZE(ss))
1160.182 +# define BOOST_PP_SEQ_FOLD_RIGHT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, BOOST_PP_SEQ_REVERSE_S(150, ss), BOOST_PP_SEQ_SIZE(ss))
1160.183 +# define BOOST_PP_SEQ_FOLD_RIGHT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, BOOST_PP_SEQ_REVERSE_S(151, ss), BOOST_PP_SEQ_SIZE(ss))
1160.184 +# define BOOST_PP_SEQ_FOLD_RIGHT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, BOOST_PP_SEQ_REVERSE_S(152, ss), BOOST_PP_SEQ_SIZE(ss))
1160.185 +# define BOOST_PP_SEQ_FOLD_RIGHT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, BOOST_PP_SEQ_REVERSE_S(153, ss), BOOST_PP_SEQ_SIZE(ss))
1160.186 +# define BOOST_PP_SEQ_FOLD_RIGHT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, BOOST_PP_SEQ_REVERSE_S(154, ss), BOOST_PP_SEQ_SIZE(ss))
1160.187 +# define BOOST_PP_SEQ_FOLD_RIGHT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, BOOST_PP_SEQ_REVERSE_S(155, ss), BOOST_PP_SEQ_SIZE(ss))
1160.188 +# define BOOST_PP_SEQ_FOLD_RIGHT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, BOOST_PP_SEQ_REVERSE_S(156, ss), BOOST_PP_SEQ_SIZE(ss))
1160.189 +# define BOOST_PP_SEQ_FOLD_RIGHT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, BOOST_PP_SEQ_REVERSE_S(157, ss), BOOST_PP_SEQ_SIZE(ss))
1160.190 +# define BOOST_PP_SEQ_FOLD_RIGHT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, BOOST_PP_SEQ_REVERSE_S(158, ss), BOOST_PP_SEQ_SIZE(ss))
1160.191 +# define BOOST_PP_SEQ_FOLD_RIGHT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, BOOST_PP_SEQ_REVERSE_S(159, ss), BOOST_PP_SEQ_SIZE(ss))
1160.192 +# define BOOST_PP_SEQ_FOLD_RIGHT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, BOOST_PP_SEQ_REVERSE_S(160, ss), BOOST_PP_SEQ_SIZE(ss))
1160.193 +# define BOOST_PP_SEQ_FOLD_RIGHT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, BOOST_PP_SEQ_REVERSE_S(161, ss), BOOST_PP_SEQ_SIZE(ss))
1160.194 +# define BOOST_PP_SEQ_FOLD_RIGHT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, BOOST_PP_SEQ_REVERSE_S(162, ss), BOOST_PP_SEQ_SIZE(ss))
1160.195 +# define BOOST_PP_SEQ_FOLD_RIGHT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, BOOST_PP_SEQ_REVERSE_S(163, ss), BOOST_PP_SEQ_SIZE(ss))
1160.196 +# define BOOST_PP_SEQ_FOLD_RIGHT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, BOOST_PP_SEQ_REVERSE_S(164, ss), BOOST_PP_SEQ_SIZE(ss))
1160.197 +# define BOOST_PP_SEQ_FOLD_RIGHT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, BOOST_PP_SEQ_REVERSE_S(165, ss), BOOST_PP_SEQ_SIZE(ss))
1160.198 +# define BOOST_PP_SEQ_FOLD_RIGHT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, BOOST_PP_SEQ_REVERSE_S(166, ss), BOOST_PP_SEQ_SIZE(ss))
1160.199 +# define BOOST_PP_SEQ_FOLD_RIGHT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, BOOST_PP_SEQ_REVERSE_S(167, ss), BOOST_PP_SEQ_SIZE(ss))
1160.200 +# define BOOST_PP_SEQ_FOLD_RIGHT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, BOOST_PP_SEQ_REVERSE_S(168, ss), BOOST_PP_SEQ_SIZE(ss))
1160.201 +# define BOOST_PP_SEQ_FOLD_RIGHT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, BOOST_PP_SEQ_REVERSE_S(169, ss), BOOST_PP_SEQ_SIZE(ss))
1160.202 +# define BOOST_PP_SEQ_FOLD_RIGHT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, BOOST_PP_SEQ_REVERSE_S(170, ss), BOOST_PP_SEQ_SIZE(ss))
1160.203 +# define BOOST_PP_SEQ_FOLD_RIGHT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, BOOST_PP_SEQ_REVERSE_S(171, ss), BOOST_PP_SEQ_SIZE(ss))
1160.204 +# define BOOST_PP_SEQ_FOLD_RIGHT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, BOOST_PP_SEQ_REVERSE_S(172, ss), BOOST_PP_SEQ_SIZE(ss))
1160.205 +# define BOOST_PP_SEQ_FOLD_RIGHT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, BOOST_PP_SEQ_REVERSE_S(173, ss), BOOST_PP_SEQ_SIZE(ss))
1160.206 +# define BOOST_PP_SEQ_FOLD_RIGHT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, BOOST_PP_SEQ_REVERSE_S(174, ss), BOOST_PP_SEQ_SIZE(ss))
1160.207 +# define BOOST_PP_SEQ_FOLD_RIGHT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, BOOST_PP_SEQ_REVERSE_S(175, ss), BOOST_PP_SEQ_SIZE(ss))
1160.208 +# define BOOST_PP_SEQ_FOLD_RIGHT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, BOOST_PP_SEQ_REVERSE_S(176, ss), BOOST_PP_SEQ_SIZE(ss))
1160.209 +# define BOOST_PP_SEQ_FOLD_RIGHT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, BOOST_PP_SEQ_REVERSE_S(177, ss), BOOST_PP_SEQ_SIZE(ss))
1160.210 +# define BOOST_PP_SEQ_FOLD_RIGHT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, BOOST_PP_SEQ_REVERSE_S(178, ss), BOOST_PP_SEQ_SIZE(ss))
1160.211 +# define BOOST_PP_SEQ_FOLD_RIGHT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, BOOST_PP_SEQ_REVERSE_S(179, ss), BOOST_PP_SEQ_SIZE(ss))
1160.212 +# define BOOST_PP_SEQ_FOLD_RIGHT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, BOOST_PP_SEQ_REVERSE_S(180, ss), BOOST_PP_SEQ_SIZE(ss))
1160.213 +# define BOOST_PP_SEQ_FOLD_RIGHT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, BOOST_PP_SEQ_REVERSE_S(181, ss), BOOST_PP_SEQ_SIZE(ss))
1160.214 +# define BOOST_PP_SEQ_FOLD_RIGHT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, BOOST_PP_SEQ_REVERSE_S(182, ss), BOOST_PP_SEQ_SIZE(ss))
1160.215 +# define BOOST_PP_SEQ_FOLD_RIGHT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, BOOST_PP_SEQ_REVERSE_S(183, ss), BOOST_PP_SEQ_SIZE(ss))
1160.216 +# define BOOST_PP_SEQ_FOLD_RIGHT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, BOOST_PP_SEQ_REVERSE_S(184, ss), BOOST_PP_SEQ_SIZE(ss))
1160.217 +# define BOOST_PP_SEQ_FOLD_RIGHT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, BOOST_PP_SEQ_REVERSE_S(185, ss), BOOST_PP_SEQ_SIZE(ss))
1160.218 +# define BOOST_PP_SEQ_FOLD_RIGHT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, BOOST_PP_SEQ_REVERSE_S(186, ss), BOOST_PP_SEQ_SIZE(ss))
1160.219 +# define BOOST_PP_SEQ_FOLD_RIGHT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, BOOST_PP_SEQ_REVERSE_S(187, ss), BOOST_PP_SEQ_SIZE(ss))
1160.220 +# define BOOST_PP_SEQ_FOLD_RIGHT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, BOOST_PP_SEQ_REVERSE_S(188, ss), BOOST_PP_SEQ_SIZE(ss))
1160.221 +# define BOOST_PP_SEQ_FOLD_RIGHT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, BOOST_PP_SEQ_REVERSE_S(189, ss), BOOST_PP_SEQ_SIZE(ss))
1160.222 +# define BOOST_PP_SEQ_FOLD_RIGHT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, BOOST_PP_SEQ_REVERSE_S(190, ss), BOOST_PP_SEQ_SIZE(ss))
1160.223 +# define BOOST_PP_SEQ_FOLD_RIGHT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, BOOST_PP_SEQ_REVERSE_S(191, ss), BOOST_PP_SEQ_SIZE(ss))
1160.224 +# define BOOST_PP_SEQ_FOLD_RIGHT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, BOOST_PP_SEQ_REVERSE_S(192, ss), BOOST_PP_SEQ_SIZE(ss))
1160.225 +# define BOOST_PP_SEQ_FOLD_RIGHT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, BOOST_PP_SEQ_REVERSE_S(193, ss), BOOST_PP_SEQ_SIZE(ss))
1160.226 +# define BOOST_PP_SEQ_FOLD_RIGHT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, BOOST_PP_SEQ_REVERSE_S(194, ss), BOOST_PP_SEQ_SIZE(ss))
1160.227 +# define BOOST_PP_SEQ_FOLD_RIGHT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, BOOST_PP_SEQ_REVERSE_S(195, ss), BOOST_PP_SEQ_SIZE(ss))
1160.228 +# define BOOST_PP_SEQ_FOLD_RIGHT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, BOOST_PP_SEQ_REVERSE_S(196, ss), BOOST_PP_SEQ_SIZE(ss))
1160.229 +# define BOOST_PP_SEQ_FOLD_RIGHT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, BOOST_PP_SEQ_REVERSE_S(197, ss), BOOST_PP_SEQ_SIZE(ss))
1160.230 +# define BOOST_PP_SEQ_FOLD_RIGHT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, BOOST_PP_SEQ_REVERSE_S(198, ss), BOOST_PP_SEQ_SIZE(ss))
1160.231 +# define BOOST_PP_SEQ_FOLD_RIGHT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, BOOST_PP_SEQ_REVERSE_S(199, ss), BOOST_PP_SEQ_SIZE(ss))
1160.232 +# define BOOST_PP_SEQ_FOLD_RIGHT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, BOOST_PP_SEQ_REVERSE_S(200, ss), BOOST_PP_SEQ_SIZE(ss))
1160.233 +# define BOOST_PP_SEQ_FOLD_RIGHT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, BOOST_PP_SEQ_REVERSE_S(201, ss), BOOST_PP_SEQ_SIZE(ss))
1160.234 +# define BOOST_PP_SEQ_FOLD_RIGHT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, BOOST_PP_SEQ_REVERSE_S(202, ss), BOOST_PP_SEQ_SIZE(ss))
1160.235 +# define BOOST_PP_SEQ_FOLD_RIGHT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, BOOST_PP_SEQ_REVERSE_S(203, ss), BOOST_PP_SEQ_SIZE(ss))
1160.236 +# define BOOST_PP_SEQ_FOLD_RIGHT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, BOOST_PP_SEQ_REVERSE_S(204, ss), BOOST_PP_SEQ_SIZE(ss))
1160.237 +# define BOOST_PP_SEQ_FOLD_RIGHT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, BOOST_PP_SEQ_REVERSE_S(205, ss), BOOST_PP_SEQ_SIZE(ss))
1160.238 +# define BOOST_PP_SEQ_FOLD_RIGHT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, BOOST_PP_SEQ_REVERSE_S(206, ss), BOOST_PP_SEQ_SIZE(ss))
1160.239 +# define BOOST_PP_SEQ_FOLD_RIGHT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, BOOST_PP_SEQ_REVERSE_S(207, ss), BOOST_PP_SEQ_SIZE(ss))
1160.240 +# define BOOST_PP_SEQ_FOLD_RIGHT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, BOOST_PP_SEQ_REVERSE_S(208, ss), BOOST_PP_SEQ_SIZE(ss))
1160.241 +# define BOOST_PP_SEQ_FOLD_RIGHT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, BOOST_PP_SEQ_REVERSE_S(209, ss), BOOST_PP_SEQ_SIZE(ss))
1160.242 +# define BOOST_PP_SEQ_FOLD_RIGHT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, BOOST_PP_SEQ_REVERSE_S(210, ss), BOOST_PP_SEQ_SIZE(ss))
1160.243 +# define BOOST_PP_SEQ_FOLD_RIGHT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, BOOST_PP_SEQ_REVERSE_S(211, ss), BOOST_PP_SEQ_SIZE(ss))
1160.244 +# define BOOST_PP_SEQ_FOLD_RIGHT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, BOOST_PP_SEQ_REVERSE_S(212, ss), BOOST_PP_SEQ_SIZE(ss))
1160.245 +# define BOOST_PP_SEQ_FOLD_RIGHT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, BOOST_PP_SEQ_REVERSE_S(213, ss), BOOST_PP_SEQ_SIZE(ss))
1160.246 +# define BOOST_PP_SEQ_FOLD_RIGHT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, BOOST_PP_SEQ_REVERSE_S(214, ss), BOOST_PP_SEQ_SIZE(ss))
1160.247 +# define BOOST_PP_SEQ_FOLD_RIGHT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, BOOST_PP_SEQ_REVERSE_S(215, ss), BOOST_PP_SEQ_SIZE(ss))
1160.248 +# define BOOST_PP_SEQ_FOLD_RIGHT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, BOOST_PP_SEQ_REVERSE_S(216, ss), BOOST_PP_SEQ_SIZE(ss))
1160.249 +# define BOOST_PP_SEQ_FOLD_RIGHT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, BOOST_PP_SEQ_REVERSE_S(217, ss), BOOST_PP_SEQ_SIZE(ss))
1160.250 +# define BOOST_PP_SEQ_FOLD_RIGHT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, BOOST_PP_SEQ_REVERSE_S(218, ss), BOOST_PP_SEQ_SIZE(ss))
1160.251 +# define BOOST_PP_SEQ_FOLD_RIGHT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, BOOST_PP_SEQ_REVERSE_S(219, ss), BOOST_PP_SEQ_SIZE(ss))
1160.252 +# define BOOST_PP_SEQ_FOLD_RIGHT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, BOOST_PP_SEQ_REVERSE_S(220, ss), BOOST_PP_SEQ_SIZE(ss))
1160.253 +# define BOOST_PP_SEQ_FOLD_RIGHT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, BOOST_PP_SEQ_REVERSE_S(221, ss), BOOST_PP_SEQ_SIZE(ss))
1160.254 +# define BOOST_PP_SEQ_FOLD_RIGHT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, BOOST_PP_SEQ_REVERSE_S(222, ss), BOOST_PP_SEQ_SIZE(ss))
1160.255 +# define BOOST_PP_SEQ_FOLD_RIGHT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, BOOST_PP_SEQ_REVERSE_S(223, ss), BOOST_PP_SEQ_SIZE(ss))
1160.256 +# define BOOST_PP_SEQ_FOLD_RIGHT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, BOOST_PP_SEQ_REVERSE_S(224, ss), BOOST_PP_SEQ_SIZE(ss))
1160.257 +# define BOOST_PP_SEQ_FOLD_RIGHT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, BOOST_PP_SEQ_REVERSE_S(225, ss), BOOST_PP_SEQ_SIZE(ss))
1160.258 +# define BOOST_PP_SEQ_FOLD_RIGHT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, BOOST_PP_SEQ_REVERSE_S(226, ss), BOOST_PP_SEQ_SIZE(ss))
1160.259 +# define BOOST_PP_SEQ_FOLD_RIGHT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, BOOST_PP_SEQ_REVERSE_S(227, ss), BOOST_PP_SEQ_SIZE(ss))
1160.260 +# define BOOST_PP_SEQ_FOLD_RIGHT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, BOOST_PP_SEQ_REVERSE_S(228, ss), BOOST_PP_SEQ_SIZE(ss))
1160.261 +# define BOOST_PP_SEQ_FOLD_RIGHT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, BOOST_PP_SEQ_REVERSE_S(229, ss), BOOST_PP_SEQ_SIZE(ss))
1160.262 +# define BOOST_PP_SEQ_FOLD_RIGHT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, BOOST_PP_SEQ_REVERSE_S(230, ss), BOOST_PP_SEQ_SIZE(ss))
1160.263 +# define BOOST_PP_SEQ_FOLD_RIGHT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, BOOST_PP_SEQ_REVERSE_S(231, ss), BOOST_PP_SEQ_SIZE(ss))
1160.264 +# define BOOST_PP_SEQ_FOLD_RIGHT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, BOOST_PP_SEQ_REVERSE_S(232, ss), BOOST_PP_SEQ_SIZE(ss))
1160.265 +# define BOOST_PP_SEQ_FOLD_RIGHT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, BOOST_PP_SEQ_REVERSE_S(233, ss), BOOST_PP_SEQ_SIZE(ss))
1160.266 +# define BOOST_PP_SEQ_FOLD_RIGHT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, BOOST_PP_SEQ_REVERSE_S(234, ss), BOOST_PP_SEQ_SIZE(ss))
1160.267 +# define BOOST_PP_SEQ_FOLD_RIGHT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, BOOST_PP_SEQ_REVERSE_S(235, ss), BOOST_PP_SEQ_SIZE(ss))
1160.268 +# define BOOST_PP_SEQ_FOLD_RIGHT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, BOOST_PP_SEQ_REVERSE_S(236, ss), BOOST_PP_SEQ_SIZE(ss))
1160.269 +# define BOOST_PP_SEQ_FOLD_RIGHT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, BOOST_PP_SEQ_REVERSE_S(237, ss), BOOST_PP_SEQ_SIZE(ss))
1160.270 +# define BOOST_PP_SEQ_FOLD_RIGHT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, BOOST_PP_SEQ_REVERSE_S(238, ss), BOOST_PP_SEQ_SIZE(ss))
1160.271 +# define BOOST_PP_SEQ_FOLD_RIGHT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, BOOST_PP_SEQ_REVERSE_S(239, ss), BOOST_PP_SEQ_SIZE(ss))
1160.272 +# define BOOST_PP_SEQ_FOLD_RIGHT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, BOOST_PP_SEQ_REVERSE_S(240, ss), BOOST_PP_SEQ_SIZE(ss))
1160.273 +# define BOOST_PP_SEQ_FOLD_RIGHT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, BOOST_PP_SEQ_REVERSE_S(241, ss), BOOST_PP_SEQ_SIZE(ss))
1160.274 +# define BOOST_PP_SEQ_FOLD_RIGHT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, BOOST_PP_SEQ_REVERSE_S(242, ss), BOOST_PP_SEQ_SIZE(ss))
1160.275 +# define BOOST_PP_SEQ_FOLD_RIGHT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, BOOST_PP_SEQ_REVERSE_S(243, ss), BOOST_PP_SEQ_SIZE(ss))
1160.276 +# define BOOST_PP_SEQ_FOLD_RIGHT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, BOOST_PP_SEQ_REVERSE_S(244, ss), BOOST_PP_SEQ_SIZE(ss))
1160.277 +# define BOOST_PP_SEQ_FOLD_RIGHT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, BOOST_PP_SEQ_REVERSE_S(245, ss), BOOST_PP_SEQ_SIZE(ss))
1160.278 +# define BOOST_PP_SEQ_FOLD_RIGHT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, BOOST_PP_SEQ_REVERSE_S(246, ss), BOOST_PP_SEQ_SIZE(ss))
1160.279 +# define BOOST_PP_SEQ_FOLD_RIGHT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, BOOST_PP_SEQ_REVERSE_S(247, ss), BOOST_PP_SEQ_SIZE(ss))
1160.280 +# define BOOST_PP_SEQ_FOLD_RIGHT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, BOOST_PP_SEQ_REVERSE_S(248, ss), BOOST_PP_SEQ_SIZE(ss))
1160.281 +# define BOOST_PP_SEQ_FOLD_RIGHT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, BOOST_PP_SEQ_REVERSE_S(249, ss), BOOST_PP_SEQ_SIZE(ss))
1160.282 +# define BOOST_PP_SEQ_FOLD_RIGHT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, BOOST_PP_SEQ_REVERSE_S(250, ss), BOOST_PP_SEQ_SIZE(ss))
1160.283 +# define BOOST_PP_SEQ_FOLD_RIGHT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, BOOST_PP_SEQ_REVERSE_S(251, ss), BOOST_PP_SEQ_SIZE(ss))
1160.284 +# define BOOST_PP_SEQ_FOLD_RIGHT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, BOOST_PP_SEQ_REVERSE_S(252, ss), BOOST_PP_SEQ_SIZE(ss))
1160.285 +# define BOOST_PP_SEQ_FOLD_RIGHT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, BOOST_PP_SEQ_REVERSE_S(253, ss), BOOST_PP_SEQ_SIZE(ss))
1160.286 +# define BOOST_PP_SEQ_FOLD_RIGHT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, BOOST_PP_SEQ_REVERSE_S(254, ss), BOOST_PP_SEQ_SIZE(ss))
1160.287 +# define BOOST_PP_SEQ_FOLD_RIGHT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, BOOST_PP_SEQ_REVERSE_S(255, ss), BOOST_PP_SEQ_SIZE(ss))
1160.288 +# define BOOST_PP_SEQ_FOLD_RIGHT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, BOOST_PP_SEQ_REVERSE_S(256, ss), BOOST_PP_SEQ_SIZE(ss))
1160.289 +# define BOOST_PP_SEQ_FOLD_RIGHT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, BOOST_PP_SEQ_REVERSE_S(257, ss), BOOST_PP_SEQ_SIZE(ss))
1160.290 +#
1160.291 +# endif
  1161.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1161.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/filter.hpp	Wed Mar 31 12:27:01 2010 +0100
  1161.3 @@ -0,0 +1,54 @@
  1161.4 +# /* **************************************************************************
  1161.5 +#  *                                                                          *
  1161.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1161.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1161.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1161.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1161.10 +#  *                                                                          *
 1161.11 +#  ************************************************************************** */
 1161.12 +#
 1161.13 +# /* See http://www.boost.org for most recent version. */
 1161.14 +#
 1161.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FILTER_HPP
 1161.16 +# define BOOST_PREPROCESSOR_SEQ_FILTER_HPP
 1161.17 +#
 1161.18 +# include <boost/preprocessor/config/config.hpp>
 1161.19 +# include <boost/preprocessor/control/expr_if.hpp>
 1161.20 +# include <boost/preprocessor/facilities/empty.hpp>
 1161.21 +# include <boost/preprocessor/seq/fold_left.hpp>
 1161.22 +# include <boost/preprocessor/seq/seq.hpp>
 1161.23 +# include <boost/preprocessor/tuple/elem.hpp>
 1161.24 +# include <boost/preprocessor/tuple/rem.hpp>
 1161.25 +#
 1161.26 +# /* BOOST_PP_SEQ_FILTER */
 1161.27 +#
 1161.28 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1161.29 +#    define BOOST_PP_SEQ_FILTER(pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1161.30 +# else
 1161.31 +#    define BOOST_PP_SEQ_FILTER(pred, data, seq) BOOST_PP_SEQ_FILTER_I(pred, data, seq)
 1161.32 +#    define BOOST_PP_SEQ_FILTER_I(pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1161.33 +# endif
 1161.34 +#
 1161.35 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1161.36 +#    define BOOST_PP_SEQ_FILTER_O(s, st, elem) BOOST_PP_SEQ_FILTER_O_IM(s, BOOST_PP_TUPLE_REM_3 st, elem)
 1161.37 +#    define BOOST_PP_SEQ_FILTER_O_IM(s, im, elem) BOOST_PP_SEQ_FILTER_O_I(s, im, elem)
 1161.38 +# else
 1161.39 +#    define BOOST_PP_SEQ_FILTER_O(s, st, elem) BOOST_PP_SEQ_FILTER_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, st), BOOST_PP_TUPLE_ELEM(3, 1, st), BOOST_PP_TUPLE_ELEM(3, 2, st), elem)
 1161.40 +# endif
 1161.41 +#
 1161.42 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
 1161.43 +#   define BOOST_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res BOOST_PP_EXPR_IF(pred(s, data, elem), (elem)))
 1161.44 +# else
 1161.45 +#   define BOOST_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res BOOST_PP_EXPR_IF(pred##(s, data, elem), (elem)))
 1161.46 +# endif
 1161.47 +#
 1161.48 +# /* BOOST_PP_SEQ_FILTER_S */
 1161.49 +#
 1161.50 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1161.51 +#    define BOOST_PP_SEQ_FILTER_S(s, pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1161.52 +# else
 1161.53 +#    define BOOST_PP_SEQ_FILTER_S(s, pred, data, seq) BOOST_PP_SEQ_FILTER_S_I(s, pred, data, seq)
 1161.54 +#    define BOOST_PP_SEQ_FILTER_S_I(s, pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1161.55 +# endif
 1161.56 +#
 1161.57 +# endif
  1162.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1162.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/first_n.hpp	Wed Mar 31 12:27:01 2010 +0100
  1162.3 @@ -0,0 +1,30 @@
  1162.4 +# /* **************************************************************************
  1162.5 +#  *                                                                          *
  1162.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1162.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1162.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1162.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1162.10 +#  *                                                                          *
 1162.11 +#  ************************************************************************** */
 1162.12 +#
 1162.13 +# /* See http://www.boost.org for most recent version. */
 1162.14 +#
 1162.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
 1162.16 +# define BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
 1162.17 +#
 1162.18 +# include <boost/preprocessor/config/config.hpp>
 1162.19 +# include <boost/preprocessor/control/if.hpp>
 1162.20 +# include <boost/preprocessor/seq/detail/split.hpp>
 1162.21 +# include <boost/preprocessor/tuple/eat.hpp>
 1162.22 +# include <boost/preprocessor/tuple/elem.hpp>
 1162.23 +#
 1162.24 +# /* BOOST_PP_SEQ_FIRST_N */
 1162.25 +#
 1162.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1162.27 +#    define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
 1162.28 +# else
 1162.29 +#    define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_SEQ_FIRST_N_I(n, seq)
 1162.30 +#    define BOOST_PP_SEQ_FIRST_N_I(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
 1162.31 +# endif
 1162.32 +#
 1162.33 +# endif
  1163.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1163.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/for_each_i.hpp	Wed Mar 31 12:27:01 2010 +0100
  1163.3 @@ -0,0 +1,61 @@
  1163.4 +# /* **************************************************************************
  1163.5 +#  *                                                                          *
  1163.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1163.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1163.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1163.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1163.10 +#  *                                                                          *
 1163.11 +#  ************************************************************************** */
 1163.12 +#
 1163.13 +# /* See http://www.boost.org for most recent version. */
 1163.14 +#
 1163.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
 1163.16 +# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
 1163.17 +#
 1163.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1163.19 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1163.20 +# include <boost/preprocessor/config/config.hpp>
 1163.21 +# include <boost/preprocessor/repetition/for.hpp>
 1163.22 +# include <boost/preprocessor/seq/seq.hpp>
 1163.23 +# include <boost/preprocessor/seq/size.hpp>
 1163.24 +# include <boost/preprocessor/tuple/elem.hpp>
 1163.25 +# include <boost/preprocessor/tuple/rem.hpp>
 1163.26 +#
 1163.27 +# /* BOOST_PP_SEQ_FOR_EACH_I */
 1163.28 +#
 1163.29 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1163.30 +#    define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1163.31 +# else
 1163.32 +#    define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq)
 1163.33 +#    define BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1163.34 +# endif
 1163.35 +#
 1163.36 +# define BOOST_PP_SEQ_FOR_EACH_I_P(r, x) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 2, x)))
 1163.37 +#
 1163.38 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1163.39 +#    define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I x
 1163.40 +# else
 1163.41 +#    define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I(BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
 1163.42 +# endif
 1163.43 +#
 1163.44 +# define BOOST_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i) (macro, data, BOOST_PP_SEQ_TAIL(seq), BOOST_PP_INC(i))
 1163.45 +#
 1163.46 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1163.47 +#    define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, BOOST_PP_TUPLE_REM_4 x)
 1163.48 +#    define BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, im)
 1163.49 +# else
 1163.50 +#    define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
 1163.51 +# endif
 1163.52 +#
 1163.53 +# define BOOST_PP_SEQ_FOR_EACH_I_M_I(r, macro, data, seq, i) macro(r, data, i, BOOST_PP_SEQ_HEAD(seq))
 1163.54 +#
 1163.55 +# /* BOOST_PP_SEQ_FOR_EACH_I_R */
 1163.56 +#
 1163.57 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1163.58 +#    define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1163.59 +# else
 1163.60 +#    define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq)
 1163.61 +#    define BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1163.62 +# endif
 1163.63 +#
 1163.64 +# endif
  1164.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1164.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/for_each_product.hpp	Wed Mar 31 12:27:01 2010 +0100
  1164.3 @@ -0,0 +1,126 @@
  1164.4 +# /* **************************************************************************
  1164.5 +#  *                                                                          *
  1164.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1164.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1164.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1164.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1164.10 +#  *                                                                          *
 1164.11 +#  ************************************************************************** */
 1164.12 +#
 1164.13 +# /* See http://www.boost.org for most recent version. */
 1164.14 +#
 1164.15 +# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
 1164.16 +# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
 1164.17 +#
 1164.18 +# include <boost/preprocessor/arithmetic/dec.hpp>
 1164.19 +# include <boost/preprocessor/config/config.hpp>
 1164.20 +# include <boost/preprocessor/control/if.hpp>
 1164.21 +# include <boost/preprocessor/repetition/for.hpp>
 1164.22 +# include <boost/preprocessor/seq/seq.hpp>
 1164.23 +# include <boost/preprocessor/seq/size.hpp>
 1164.24 +# include <boost/preprocessor/tuple/elem.hpp>
 1164.25 +# include <boost/preprocessor/tuple/rem.hpp>
 1164.26 +#
 1164.27 +# /* BOOST_PP_SEQ_FOR_EACH_PRODUCT */
 1164.28 +#
 1164.29 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT(macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, sets)
 1164.30 +#
 1164.31 +# /* BOOST_PP_SEQ_FOR_EACH_PRODUCT_R */
 1164.32 +#
 1164.33 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_R(r, macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, sets)
 1164.34 +#
 1164.35 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1164.36 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) impl((BOOST_PP_SEQ_HEAD(sets)(nil), BOOST_PP_SEQ_TAIL(sets)(nil), (nil), macro), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0)
 1164.37 +# else
 1164.38 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets)
 1164.39 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets) impl((BOOST_PP_SEQ_HEAD(sets)(nil), BOOST_PP_SEQ_TAIL(sets)(nil), (nil), macro), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0)
 1164.40 +# endif
 1164.41 +#
 1164.42 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1164.43 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_P_I data
 1164.44 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P_I(cset, rset, res, macro) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(cset))
 1164.45 +# else
 1164.46 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 0, data)))
 1164.47 +# endif
 1164.48 +#
 1164.49 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1164.50 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_O_I data
 1164.51 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O_I(cset, rset, res, macro) (BOOST_PP_SEQ_TAIL(cset), rset, res, macro)
 1164.52 +# else
 1164.53 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) (BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(4, 0, data)), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
 1164.54 +# endif
 1164.55 +#
 1164.56 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, i) BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 1, data))), BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_ ## i, BOOST_PP_SEQ_FOR_EACH_PRODUCT_I)
 1164.57 +#
 1164.58 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1164.59 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, BOOST_PP_TUPLE_ELEM(4, 0, data), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
 1164.60 +# else
 1164.61 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, BOOST_PP_TUPLE_REM_4 data)
 1164.62 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, im) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, im)
 1164.63 +# endif
 1164.64 +#
 1164.65 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, cset, rset, res, macro) macro(r, BOOST_PP_SEQ_TAIL(res (BOOST_PP_SEQ_HEAD(cset))))
 1164.66 +#
 1164.67 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1164.68 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I data
 1164.69 +# else
 1164.70 +#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I(BOOST_PP_TUPLE_ELEM(4, 0, data), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
 1164.71 +# endif
 1164.72 +#
 1164.73 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I(cset, rset, res, macro) (BOOST_PP_SEQ_HEAD(rset)(nil), BOOST_PP_SEQ_TAIL(rset), res (BOOST_PP_SEQ_HEAD(cset)), macro)
 1164.74 +#
 1164.75 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 0)(r, data)
 1164.76 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_1(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 1)(r, data)
 1164.77 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_2(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 2)(r, data)
 1164.78 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_3(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 3)(r, data)
 1164.79 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_4(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 4)(r, data)
 1164.80 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_5(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 5)(r, data)
 1164.81 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_6(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 6)(r, data)
 1164.82 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_7(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 7)(r, data)
 1164.83 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_8(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 8)(r, data)
 1164.84 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_9(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 9)(r, data)
 1164.85 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_10(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 10)(r, data)
 1164.86 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_11(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 11)(r, data)
 1164.87 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_12(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 12)(r, data)
 1164.88 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_13(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 13)(r, data)
 1164.89 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_14(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 14)(r, data)
 1164.90 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_15(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 15)(r, data)
 1164.91 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_16(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 16)(r, data)
 1164.92 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_17(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 17)(r, data)
 1164.93 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_18(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 18)(r, data)
 1164.94 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_19(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 19)(r, data)
 1164.95 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_20(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 20)(r, data)
 1164.96 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_21(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 21)(r, data)
 1164.97 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_22(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 22)(r, data)
 1164.98 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_23(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 23)(r, data)
 1164.99 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_24(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 24)(r, data)
1164.100 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_25(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 25)(r, data)
1164.101 +#
1164.102 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_0(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_1)
1164.103 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_1(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_2)
1164.104 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_2(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_3)
1164.105 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_3(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_4)
1164.106 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_4(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_5)
1164.107 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_5(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_6)
1164.108 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_6(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_7)
1164.109 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_7(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_8)
1164.110 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_8(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_9)
1164.111 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_9(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_10)
1164.112 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_10(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_11)
1164.113 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_11(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_12)
1164.114 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_12(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_13)
1164.115 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_13(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_14)
1164.116 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_14(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_15)
1164.117 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_15(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_16)
1164.118 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_16(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_17)
1164.119 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_17(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_18)
1164.120 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_18(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_19)
1164.121 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_19(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_20)
1164.122 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_20(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_21)
1164.123 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_21(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_22)
1164.124 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_22(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_23)
1164.125 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_23(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_24)
1164.126 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_24(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_25)
1164.127 +# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_25(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_26)
1164.128 +#
1164.129 +# endif
  1165.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1165.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/rest_n.hpp	Wed Mar 31 12:27:01 2010 +0100
  1165.3 @@ -0,0 +1,30 @@
  1165.4 +# /* **************************************************************************
  1165.5 +#  *                                                                          *
  1165.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1165.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1165.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1165.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1165.10 +#  *                                                                          *
 1165.11 +#  ************************************************************************** */
 1165.12 +#
 1165.13 +# /* See http://www.boost.org for most recent version. */
 1165.14 +#
 1165.15 +# ifndef BOOST_PREPROCESSOR_SEQ_REST_N_HPP
 1165.16 +# define BOOST_PREPROCESSOR_SEQ_REST_N_HPP
 1165.17 +#
 1165.18 +# include <boost/preprocessor/arithmetic/inc.hpp>
 1165.19 +# include <boost/preprocessor/config/config.hpp>
 1165.20 +# include <boost/preprocessor/facilities/empty.hpp>
 1165.21 +# include <boost/preprocessor/seq/detail/split.hpp>
 1165.22 +# include <boost/preprocessor/tuple/elem.hpp>
 1165.23 +#
 1165.24 +# /* BOOST_PP_SEQ_REST_N */
 1165.25 +#
 1165.26 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1165.27 +#    define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
 1165.28 +# else
 1165.29 +#    define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_SEQ_REST_N_I(n, seq)
 1165.30 +#    define BOOST_PP_SEQ_REST_N_I(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
 1165.31 +# endif
 1165.32 +#
 1165.33 +# endif
  1166.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1166.2 +++ b/epoc32/include/stdapis/boost/preprocessor/list/to_tuple.hpp	Wed Mar 31 12:27:01 2010 +0100
  1166.3 @@ -0,0 +1,27 @@
  1166.4 +# /* **************************************************************************
  1166.5 +#  *                                                                          *
  1166.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1166.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1166.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1166.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1166.10 +#  *                                                                          *
 1166.11 +#  ************************************************************************** */
 1166.12 +#
 1166.13 +# /* See http://www.boost.org for most recent version. */
 1166.14 +#
 1166.15 +# ifndef BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP
 1166.16 +# define BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP
 1166.17 +#
 1166.18 +# include <boost/preprocessor/config/config.hpp>
 1166.19 +# include <boost/preprocessor/seq/enum.hpp>
 1166.20 +#
 1166.21 +# /* BOOST_PP_SEQ_TO_TUPLE */
 1166.22 +#
 1166.23 +# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1166.24 +#    define BOOST_PP_SEQ_TO_TUPLE(seq) (BOOST_PP_SEQ_ENUM(seq))
 1166.25 +# else
 1166.26 +#    define BOOST_PP_SEQ_TO_TUPLE(seq) BOOST_PP_SEQ_TO_TUPLE_I(seq)
 1166.27 +#    define BOOST_PP_SEQ_TO_TUPLE_I(seq) (BOOST_PP_SEQ_ENUM(seq))
 1166.28 +# endif
 1166.29 +#
 1166.30 +# endif
  1167.1 --- a/epoc32/include/stdapis/boost/preprocessor/logical.hpp	Tue Mar 16 16:12:26 2010 +0000
  1167.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1167.3 @@ -1,29 +0,0 @@
  1167.4 -# /* Copyright (C) 2001
  1167.5 -#  * Housemarque Oy
  1167.6 -#  * http://www.housemarque.com
  1167.7 -#  *
  1167.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1167.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1167.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1167.11 -#  */
 1167.12 -#
 1167.13 -# /* Revised by Paul Mensonides (2002) */
 1167.14 -#
 1167.15 -# /* See http://www.boost.org for most recent version. */
 1167.16 -#
 1167.17 -# ifndef BOOST_PREPROCESSOR_LOGICAL_HPP
 1167.18 -# define BOOST_PREPROCESSOR_LOGICAL_HPP
 1167.19 -#
 1167.20 -# include <boost/preprocessor/logical/and.hpp>
 1167.21 -# include <boost/preprocessor/logical/bitand.hpp>
 1167.22 -# include <boost/preprocessor/logical/bitnor.hpp>
 1167.23 -# include <boost/preprocessor/logical/bitor.hpp>
 1167.24 -# include <boost/preprocessor/logical/bitxor.hpp>
 1167.25 -# include <boost/preprocessor/logical/bool.hpp>
 1167.26 -# include <boost/preprocessor/logical/compl.hpp>
 1167.27 -# include <boost/preprocessor/logical/nor.hpp>
 1167.28 -# include <boost/preprocessor/logical/not.hpp>
 1167.29 -# include <boost/preprocessor/logical/or.hpp>
 1167.30 -# include <boost/preprocessor/logical/xor.hpp>
 1167.31 -#
 1167.32 -# endif
  1168.1 --- a/epoc32/include/stdapis/boost/preprocessor/logical/and.hpp	Tue Mar 16 16:12:26 2010 +0000
  1168.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1168.3 @@ -1,30 +0,0 @@
  1168.4 -# /* Copyright (C) 2001
  1168.5 -#  * Housemarque Oy
  1168.6 -#  * http://www.housemarque.com
  1168.7 -#  *
  1168.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1168.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1168.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1168.11 -#  */
 1168.12 -#
 1168.13 -# /* Revised by Paul Mensonides (2002) */
 1168.14 -#
 1168.15 -# /* See http://www.boost.org for most recent version. */
 1168.16 -#
 1168.17 -# ifndef BOOST_PREPROCESSOR_LOGICAL_AND_HPP
 1168.18 -# define BOOST_PREPROCESSOR_LOGICAL_AND_HPP
 1168.19 -#
 1168.20 -# include <boost/preprocessor/config/config.hpp>
 1168.21 -# include <boost/preprocessor/logical/bool.hpp>
 1168.22 -# include <boost/preprocessor/logical/bitand.hpp>
 1168.23 -#
 1168.24 -# /* BOOST_PP_AND */
 1168.25 -#
 1168.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1168.27 -#    define BOOST_PP_AND(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1168.28 -# else
 1168.29 -#    define BOOST_PP_AND(p, q) BOOST_PP_AND_I(p, q)
 1168.30 -#    define BOOST_PP_AND_I(p, q) BOOST_PP_BITAND(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1168.31 -# endif
 1168.32 -#
 1168.33 -# endif
  1169.1 --- a/epoc32/include/stdapis/boost/preprocessor/logical/bool.hpp	Tue Mar 16 16:12:26 2010 +0000
  1169.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1169.3 @@ -1,288 +0,0 @@
  1169.4 -# /* Copyright (C) 2001
  1169.5 -#  * Housemarque Oy
  1169.6 -#  * http://www.housemarque.com
  1169.7 -#  *
  1169.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1169.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1169.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1169.11 -#  */
 1169.12 -#
 1169.13 -# /* Revised by Paul Mensonides (2002) */
 1169.14 -#
 1169.15 -# /* See http://www.boost.org for most recent version. */
 1169.16 -#
 1169.17 -# ifndef BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
 1169.18 -# define BOOST_PREPROCESSOR_LOGICAL_BOOL_HPP
 1169.19 -#
 1169.20 -# include <boost/preprocessor/config/config.hpp>
 1169.21 -#
 1169.22 -# /* BOOST_PP_BOOL */
 1169.23 -#
 1169.24 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1169.25 -#    define BOOST_PP_BOOL(x) BOOST_PP_BOOL_I(x)
 1169.26 -# else
 1169.27 -#    define BOOST_PP_BOOL(x) BOOST_PP_BOOL_OO((x))
 1169.28 -#    define BOOST_PP_BOOL_OO(par) BOOST_PP_BOOL_I ## par
 1169.29 -# endif
 1169.30 -#
 1169.31 -# define BOOST_PP_BOOL_I(x) BOOST_PP_BOOL_ ## x
 1169.32 -#
 1169.33 -# define BOOST_PP_BOOL_0 0
 1169.34 -# define BOOST_PP_BOOL_1 1
 1169.35 -# define BOOST_PP_BOOL_2 1
 1169.36 -# define BOOST_PP_BOOL_3 1
 1169.37 -# define BOOST_PP_BOOL_4 1
 1169.38 -# define BOOST_PP_BOOL_5 1
 1169.39 -# define BOOST_PP_BOOL_6 1
 1169.40 -# define BOOST_PP_BOOL_7 1
 1169.41 -# define BOOST_PP_BOOL_8 1
 1169.42 -# define BOOST_PP_BOOL_9 1
 1169.43 -# define BOOST_PP_BOOL_10 1
 1169.44 -# define BOOST_PP_BOOL_11 1
 1169.45 -# define BOOST_PP_BOOL_12 1
 1169.46 -# define BOOST_PP_BOOL_13 1
 1169.47 -# define BOOST_PP_BOOL_14 1
 1169.48 -# define BOOST_PP_BOOL_15 1
 1169.49 -# define BOOST_PP_BOOL_16 1
 1169.50 -# define BOOST_PP_BOOL_17 1
 1169.51 -# define BOOST_PP_BOOL_18 1
 1169.52 -# define BOOST_PP_BOOL_19 1
 1169.53 -# define BOOST_PP_BOOL_20 1
 1169.54 -# define BOOST_PP_BOOL_21 1
 1169.55 -# define BOOST_PP_BOOL_22 1
 1169.56 -# define BOOST_PP_BOOL_23 1
 1169.57 -# define BOOST_PP_BOOL_24 1
 1169.58 -# define BOOST_PP_BOOL_25 1
 1169.59 -# define BOOST_PP_BOOL_26 1
 1169.60 -# define BOOST_PP_BOOL_27 1
 1169.61 -# define BOOST_PP_BOOL_28 1
 1169.62 -# define BOOST_PP_BOOL_29 1
 1169.63 -# define BOOST_PP_BOOL_30 1
 1169.64 -# define BOOST_PP_BOOL_31 1
 1169.65 -# define BOOST_PP_BOOL_32 1
 1169.66 -# define BOOST_PP_BOOL_33 1
 1169.67 -# define BOOST_PP_BOOL_34 1
 1169.68 -# define BOOST_PP_BOOL_35 1
 1169.69 -# define BOOST_PP_BOOL_36 1
 1169.70 -# define BOOST_PP_BOOL_37 1
 1169.71 -# define BOOST_PP_BOOL_38 1
 1169.72 -# define BOOST_PP_BOOL_39 1
 1169.73 -# define BOOST_PP_BOOL_40 1
 1169.74 -# define BOOST_PP_BOOL_41 1
 1169.75 -# define BOOST_PP_BOOL_42 1
 1169.76 -# define BOOST_PP_BOOL_43 1
 1169.77 -# define BOOST_PP_BOOL_44 1
 1169.78 -# define BOOST_PP_BOOL_45 1
 1169.79 -# define BOOST_PP_BOOL_46 1
 1169.80 -# define BOOST_PP_BOOL_47 1
 1169.81 -# define BOOST_PP_BOOL_48 1
 1169.82 -# define BOOST_PP_BOOL_49 1
 1169.83 -# define BOOST_PP_BOOL_50 1
 1169.84 -# define BOOST_PP_BOOL_51 1
 1169.85 -# define BOOST_PP_BOOL_52 1
 1169.86 -# define BOOST_PP_BOOL_53 1
 1169.87 -# define BOOST_PP_BOOL_54 1
 1169.88 -# define BOOST_PP_BOOL_55 1
 1169.89 -# define BOOST_PP_BOOL_56 1
 1169.90 -# define BOOST_PP_BOOL_57 1
 1169.91 -# define BOOST_PP_BOOL_58 1
 1169.92 -# define BOOST_PP_BOOL_59 1
 1169.93 -# define BOOST_PP_BOOL_60 1
 1169.94 -# define BOOST_PP_BOOL_61 1
 1169.95 -# define BOOST_PP_BOOL_62 1
 1169.96 -# define BOOST_PP_BOOL_63 1
 1169.97 -# define BOOST_PP_BOOL_64 1
 1169.98 -# define BOOST_PP_BOOL_65 1
 1169.99 -# define BOOST_PP_BOOL_66 1
1169.100 -# define BOOST_PP_BOOL_67 1
1169.101 -# define BOOST_PP_BOOL_68 1
1169.102 -# define BOOST_PP_BOOL_69 1
1169.103 -# define BOOST_PP_BOOL_70 1
1169.104 -# define BOOST_PP_BOOL_71 1
1169.105 -# define BOOST_PP_BOOL_72 1
1169.106 -# define BOOST_PP_BOOL_73 1
1169.107 -# define BOOST_PP_BOOL_74 1
1169.108 -# define BOOST_PP_BOOL_75 1
1169.109 -# define BOOST_PP_BOOL_76 1
1169.110 -# define BOOST_PP_BOOL_77 1
1169.111 -# define BOOST_PP_BOOL_78 1
1169.112 -# define BOOST_PP_BOOL_79 1
1169.113 -# define BOOST_PP_BOOL_80 1
1169.114 -# define BOOST_PP_BOOL_81 1
1169.115 -# define BOOST_PP_BOOL_82 1
1169.116 -# define BOOST_PP_BOOL_83 1
1169.117 -# define BOOST_PP_BOOL_84 1
1169.118 -# define BOOST_PP_BOOL_85 1
1169.119 -# define BOOST_PP_BOOL_86 1
1169.120 -# define BOOST_PP_BOOL_87 1
1169.121 -# define BOOST_PP_BOOL_88 1
1169.122 -# define BOOST_PP_BOOL_89 1
1169.123 -# define BOOST_PP_BOOL_90 1
1169.124 -# define BOOST_PP_BOOL_91 1
1169.125 -# define BOOST_PP_BOOL_92 1
1169.126 -# define BOOST_PP_BOOL_93 1
1169.127 -# define BOOST_PP_BOOL_94 1
1169.128 -# define BOOST_PP_BOOL_95 1
1169.129 -# define BOOST_PP_BOOL_96 1
1169.130 -# define BOOST_PP_BOOL_97 1
1169.131 -# define BOOST_PP_BOOL_98 1
1169.132 -# define BOOST_PP_BOOL_99 1
1169.133 -# define BOOST_PP_BOOL_100 1
1169.134 -# define BOOST_PP_BOOL_101 1
1169.135 -# define BOOST_PP_BOOL_102 1
1169.136 -# define BOOST_PP_BOOL_103 1
1169.137 -# define BOOST_PP_BOOL_104 1
1169.138 -# define BOOST_PP_BOOL_105 1
1169.139 -# define BOOST_PP_BOOL_106 1
1169.140 -# define BOOST_PP_BOOL_107 1
1169.141 -# define BOOST_PP_BOOL_108 1
1169.142 -# define BOOST_PP_BOOL_109 1
1169.143 -# define BOOST_PP_BOOL_110 1
1169.144 -# define BOOST_PP_BOOL_111 1
1169.145 -# define BOOST_PP_BOOL_112 1
1169.146 -# define BOOST_PP_BOOL_113 1
1169.147 -# define BOOST_PP_BOOL_114 1
1169.148 -# define BOOST_PP_BOOL_115 1
1169.149 -# define BOOST_PP_BOOL_116 1
1169.150 -# define BOOST_PP_BOOL_117 1
1169.151 -# define BOOST_PP_BOOL_118 1
1169.152 -# define BOOST_PP_BOOL_119 1
1169.153 -# define BOOST_PP_BOOL_120 1
1169.154 -# define BOOST_PP_BOOL_121 1
1169.155 -# define BOOST_PP_BOOL_122 1
1169.156 -# define BOOST_PP_BOOL_123 1
1169.157 -# define BOOST_PP_BOOL_124 1
1169.158 -# define BOOST_PP_BOOL_125 1
1169.159 -# define BOOST_PP_BOOL_126 1
1169.160 -# define BOOST_PP_BOOL_127 1
1169.161 -# define BOOST_PP_BOOL_128 1
1169.162 -# define BOOST_PP_BOOL_129 1
1169.163 -# define BOOST_PP_BOOL_130 1
1169.164 -# define BOOST_PP_BOOL_131 1
1169.165 -# define BOOST_PP_BOOL_132 1
1169.166 -# define BOOST_PP_BOOL_133 1
1169.167 -# define BOOST_PP_BOOL_134 1
1169.168 -# define BOOST_PP_BOOL_135 1
1169.169 -# define BOOST_PP_BOOL_136 1
1169.170 -# define BOOST_PP_BOOL_137 1
1169.171 -# define BOOST_PP_BOOL_138 1
1169.172 -# define BOOST_PP_BOOL_139 1
1169.173 -# define BOOST_PP_BOOL_140 1
1169.174 -# define BOOST_PP_BOOL_141 1
1169.175 -# define BOOST_PP_BOOL_142 1
1169.176 -# define BOOST_PP_BOOL_143 1
1169.177 -# define BOOST_PP_BOOL_144 1
1169.178 -# define BOOST_PP_BOOL_145 1
1169.179 -# define BOOST_PP_BOOL_146 1
1169.180 -# define BOOST_PP_BOOL_147 1
1169.181 -# define BOOST_PP_BOOL_148 1
1169.182 -# define BOOST_PP_BOOL_149 1
1169.183 -# define BOOST_PP_BOOL_150 1
1169.184 -# define BOOST_PP_BOOL_151 1
1169.185 -# define BOOST_PP_BOOL_152 1
1169.186 -# define BOOST_PP_BOOL_153 1
1169.187 -# define BOOST_PP_BOOL_154 1
1169.188 -# define BOOST_PP_BOOL_155 1
1169.189 -# define BOOST_PP_BOOL_156 1
1169.190 -# define BOOST_PP_BOOL_157 1
1169.191 -# define BOOST_PP_BOOL_158 1
1169.192 -# define BOOST_PP_BOOL_159 1
1169.193 -# define BOOST_PP_BOOL_160 1
1169.194 -# define BOOST_PP_BOOL_161 1
1169.195 -# define BOOST_PP_BOOL_162 1
1169.196 -# define BOOST_PP_BOOL_163 1
1169.197 -# define BOOST_PP_BOOL_164 1
1169.198 -# define BOOST_PP_BOOL_165 1
1169.199 -# define BOOST_PP_BOOL_166 1
1169.200 -# define BOOST_PP_BOOL_167 1
1169.201 -# define BOOST_PP_BOOL_168 1
1169.202 -# define BOOST_PP_BOOL_169 1
1169.203 -# define BOOST_PP_BOOL_170 1
1169.204 -# define BOOST_PP_BOOL_171 1
1169.205 -# define BOOST_PP_BOOL_172 1
1169.206 -# define BOOST_PP_BOOL_173 1
1169.207 -# define BOOST_PP_BOOL_174 1
1169.208 -# define BOOST_PP_BOOL_175 1
1169.209 -# define BOOST_PP_BOOL_176 1
1169.210 -# define BOOST_PP_BOOL_177 1
1169.211 -# define BOOST_PP_BOOL_178 1
1169.212 -# define BOOST_PP_BOOL_179 1
1169.213 -# define BOOST_PP_BOOL_180 1
1169.214 -# define BOOST_PP_BOOL_181 1
1169.215 -# define BOOST_PP_BOOL_182 1
1169.216 -# define BOOST_PP_BOOL_183 1
1169.217 -# define BOOST_PP_BOOL_184 1
1169.218 -# define BOOST_PP_BOOL_185 1
1169.219 -# define BOOST_PP_BOOL_186 1
1169.220 -# define BOOST_PP_BOOL_187 1
1169.221 -# define BOOST_PP_BOOL_188 1
1169.222 -# define BOOST_PP_BOOL_189 1
1169.223 -# define BOOST_PP_BOOL_190 1
1169.224 -# define BOOST_PP_BOOL_191 1
1169.225 -# define BOOST_PP_BOOL_192 1
1169.226 -# define BOOST_PP_BOOL_193 1
1169.227 -# define BOOST_PP_BOOL_194 1
1169.228 -# define BOOST_PP_BOOL_195 1
1169.229 -# define BOOST_PP_BOOL_196 1
1169.230 -# define BOOST_PP_BOOL_197 1
1169.231 -# define BOOST_PP_BOOL_198 1
1169.232 -# define BOOST_PP_BOOL_199 1
1169.233 -# define BOOST_PP_BOOL_200 1
1169.234 -# define BOOST_PP_BOOL_201 1
1169.235 -# define BOOST_PP_BOOL_202 1
1169.236 -# define BOOST_PP_BOOL_203 1
1169.237 -# define BOOST_PP_BOOL_204 1
1169.238 -# define BOOST_PP_BOOL_205 1
1169.239 -# define BOOST_PP_BOOL_206 1
1169.240 -# define BOOST_PP_BOOL_207 1
1169.241 -# define BOOST_PP_BOOL_208 1
1169.242 -# define BOOST_PP_BOOL_209 1
1169.243 -# define BOOST_PP_BOOL_210 1
1169.244 -# define BOOST_PP_BOOL_211 1
1169.245 -# define BOOST_PP_BOOL_212 1
1169.246 -# define BOOST_PP_BOOL_213 1
1169.247 -# define BOOST_PP_BOOL_214 1
1169.248 -# define BOOST_PP_BOOL_215 1
1169.249 -# define BOOST_PP_BOOL_216 1
1169.250 -# define BOOST_PP_BOOL_217 1
1169.251 -# define BOOST_PP_BOOL_218 1
1169.252 -# define BOOST_PP_BOOL_219 1
1169.253 -# define BOOST_PP_BOOL_220 1
1169.254 -# define BOOST_PP_BOOL_221 1
1169.255 -# define BOOST_PP_BOOL_222 1
1169.256 -# define BOOST_PP_BOOL_223 1
1169.257 -# define BOOST_PP_BOOL_224 1
1169.258 -# define BOOST_PP_BOOL_225 1
1169.259 -# define BOOST_PP_BOOL_226 1
1169.260 -# define BOOST_PP_BOOL_227 1
1169.261 -# define BOOST_PP_BOOL_228 1
1169.262 -# define BOOST_PP_BOOL_229 1
1169.263 -# define BOOST_PP_BOOL_230 1
1169.264 -# define BOOST_PP_BOOL_231 1
1169.265 -# define BOOST_PP_BOOL_232 1
1169.266 -# define BOOST_PP_BOOL_233 1
1169.267 -# define BOOST_PP_BOOL_234 1
1169.268 -# define BOOST_PP_BOOL_235 1
1169.269 -# define BOOST_PP_BOOL_236 1
1169.270 -# define BOOST_PP_BOOL_237 1
1169.271 -# define BOOST_PP_BOOL_238 1
1169.272 -# define BOOST_PP_BOOL_239 1
1169.273 -# define BOOST_PP_BOOL_240 1
1169.274 -# define BOOST_PP_BOOL_241 1
1169.275 -# define BOOST_PP_BOOL_242 1
1169.276 -# define BOOST_PP_BOOL_243 1
1169.277 -# define BOOST_PP_BOOL_244 1
1169.278 -# define BOOST_PP_BOOL_245 1
1169.279 -# define BOOST_PP_BOOL_246 1
1169.280 -# define BOOST_PP_BOOL_247 1
1169.281 -# define BOOST_PP_BOOL_248 1
1169.282 -# define BOOST_PP_BOOL_249 1
1169.283 -# define BOOST_PP_BOOL_250 1
1169.284 -# define BOOST_PP_BOOL_251 1
1169.285 -# define BOOST_PP_BOOL_252 1
1169.286 -# define BOOST_PP_BOOL_253 1
1169.287 -# define BOOST_PP_BOOL_254 1
1169.288 -# define BOOST_PP_BOOL_255 1
1169.289 -# define BOOST_PP_BOOL_256 1
1169.290 -#
1169.291 -# endif
  1170.1 --- a/epoc32/include/stdapis/boost/preprocessor/logical/not.hpp	Tue Mar 16 16:12:26 2010 +0000
  1170.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1170.3 @@ -1,30 +0,0 @@
  1170.4 -# /* Copyright (C) 2001
  1170.5 -#  * Housemarque Oy
  1170.6 -#  * http://www.housemarque.com
  1170.7 -#  *
  1170.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1170.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1170.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1170.11 -#  */
 1170.12 -#
 1170.13 -# /* Revised by Paul Mensonides (2002) */
 1170.14 -#
 1170.15 -# /* See http://www.boost.org for most recent version. */
 1170.16 -#
 1170.17 -# ifndef BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
 1170.18 -# define BOOST_PREPROCESSOR_LOGICAL_NOT_HPP
 1170.19 -#
 1170.20 -# include <boost/preprocessor/config/config.hpp>
 1170.21 -# include <boost/preprocessor/logical/bool.hpp>
 1170.22 -# include <boost/preprocessor/logical/compl.hpp>
 1170.23 -#
 1170.24 -# /* BOOST_PP_NOT */
 1170.25 -#
 1170.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1170.27 -#    define BOOST_PP_NOT(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
 1170.28 -# else
 1170.29 -#    define BOOST_PP_NOT(x) BOOST_PP_NOT_I(x)
 1170.30 -#    define BOOST_PP_NOT_I(x) BOOST_PP_COMPL(BOOST_PP_BOOL(x))
 1170.31 -# endif
 1170.32 -#
 1170.33 -# endif
  1171.1 --- a/epoc32/include/stdapis/boost/preprocessor/logical/or.hpp	Tue Mar 16 16:12:26 2010 +0000
  1171.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1171.3 @@ -1,30 +0,0 @@
  1171.4 -# /* Copyright (C) 2001
  1171.5 -#  * Housemarque Oy
  1171.6 -#  * http://www.housemarque.com
  1171.7 -#  *
  1171.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1171.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1171.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1171.11 -#  */
 1171.12 -#
 1171.13 -# /* Revised by Paul Mensonides (2002) */
 1171.14 -#
 1171.15 -# /* See http://www.boost.org for most recent version. */
 1171.16 -#
 1171.17 -# ifndef BOOST_PREPROCESSOR_LOGICAL_OR_HPP
 1171.18 -# define BOOST_PREPROCESSOR_LOGICAL_OR_HPP
 1171.19 -#
 1171.20 -# include <boost/preprocessor/config/config.hpp>
 1171.21 -# include <boost/preprocessor/logical/bool.hpp>
 1171.22 -# include <boost/preprocessor/logical/bitor.hpp>
 1171.23 -#
 1171.24 -# /* BOOST_PP_OR */
 1171.25 -#
 1171.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1171.27 -#    define BOOST_PP_OR(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1171.28 -# else
 1171.29 -#    define BOOST_PP_OR(p, q) BOOST_PP_OR_I(p, q)
 1171.30 -#    define BOOST_PP_OR_I(p, q) BOOST_PP_BITOR(BOOST_PP_BOOL(p), BOOST_PP_BOOL(q))
 1171.31 -# endif
 1171.32 -#
 1171.33 -# endif
  1172.1 --- a/epoc32/include/stdapis/boost/preprocessor/punctuation/comma_if.hpp	Tue Mar 16 16:12:26 2010 +0000
  1172.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1172.3 @@ -1,31 +0,0 @@
  1172.4 -# /* Copyright (C) 2001
  1172.5 -#  * Housemarque Oy
  1172.6 -#  * http://www.housemarque.com
  1172.7 -#  *
  1172.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1172.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1172.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1172.11 -#  */
 1172.12 -#
 1172.13 -# /* Revised by Paul Mensonides (2002) */
 1172.14 -#
 1172.15 -# /* See http://www.boost.org for most recent version. */
 1172.16 -#
 1172.17 -# ifndef BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
 1172.18 -# define BOOST_PREPROCESSOR_PUNCTUATION_COMMA_IF_HPP
 1172.19 -#
 1172.20 -# include <boost/preprocessor/config/config.hpp>
 1172.21 -# include <boost/preprocessor/control/if.hpp>
 1172.22 -# include <boost/preprocessor/facilities/empty.hpp>
 1172.23 -# include <boost/preprocessor/punctuation/comma.hpp>
 1172.24 -#
 1172.25 -# /* BOOST_PP_COMMA_IF */
 1172.26 -#
 1172.27 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1172.28 -#    define BOOST_PP_COMMA_IF(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
 1172.29 -# else
 1172.30 -#    define BOOST_PP_COMMA_IF(cond) BOOST_PP_COMMA_IF_I(cond)
 1172.31 -#    define BOOST_PP_COMMA_IF_I(cond) BOOST_PP_IF(cond, BOOST_PP_COMMA, BOOST_PP_EMPTY)()
 1172.32 -# endif
 1172.33 -#
 1172.34 -# endif
  1173.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1173.2 +++ b/epoc32/include/stdapis/boost/preprocessor/repetition/detail/edg/for.hpp	Wed Mar 31 12:27:01 2010 +0100
  1173.3 @@ -0,0 +1,306 @@
  1173.4 +# /* Copyright (C) 2001
  1173.5 +#  * Housemarque Oy
  1173.6 +#  * http://www.housemarque.com
  1173.7 +#  *
  1173.8 +#  * Distributed under the Boost Software License, Version 1.0. (See
  1173.9 +#  * accompanying file LICENSE_1_0.txt or copy at
 1173.10 +#  * http://www.boost.org/LICENSE_1_0.txt)
 1173.11 +#  */
 1173.12 +#
 1173.13 +# /* Revised by Paul Mensonides (2002) */
 1173.14 +#
 1173.15 +# /* See http://www.boost.org for most recent version. */
 1173.16 +#
 1173.17 +# ifndef BOOST_PREPROCESSOR_REPETITION_FOR_HPP
 1173.18 +# define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
 1173.19 +#
 1173.20 +# include <boost/preprocessor/cat.hpp>
 1173.21 +# include <boost/preprocessor/debug/error.hpp>
 1173.22 +# include <boost/preprocessor/detail/auto_rec.hpp>
 1173.23 +#
 1173.24 +# /* BOOST_PP_FOR */
 1173.25 +#
 1173.26 +# if 0
 1173.27 +#    define BOOST_PP_FOR(state, pred, op, macro)
 1173.28 +# endif
 1173.29 +#
 1173.30 +# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
 1173.31 +#
 1173.32 +# define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
 1173.33 +#
 1173.34 +# define BOOST_PP_FOR_SR_P(r, s) s
 1173.35 +# define BOOST_PP_FOR_SR_O(r, s) 0
 1173.36 +# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL
 1173.37 +#
 1173.38 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1173.39 +#    include <boost/preprocessor/repetition/detail/edg/for.hpp>
 1173.40 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1173.41 +#    include <boost/preprocessor/repetition/detail/msvc/for.hpp>
 1173.42 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
 1173.43 +#    include <boost/preprocessor/repetition/detail/dmc/for.hpp>
 1173.44 +# else
 1173.45 +#    include <boost/preprocessor/repetition/detail/for.hpp>
 1173.46 +# endif
 1173.47 +#
 1173.48 +# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002)
 1173.49 +#
 1173.50 +# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
 1173.51 +#
 1173.52 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
 1173.53 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
 1173.54 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0
 1173.55 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0
 1173.56 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0
 1173.57 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0
 1173.58 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0
 1173.59 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0
 1173.60 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0
 1173.61 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0
 1173.62 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0
 1173.63 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0
 1173.64 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0
 1173.65 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0
 1173.66 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0
 1173.67 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0
 1173.68 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0
 1173.69 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0
 1173.70 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0
 1173.71 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0
 1173.72 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0
 1173.73 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0
 1173.74 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0
 1173.75 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0
 1173.76 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0
 1173.77 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0
 1173.78 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0
 1173.79 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0
 1173.80 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0
 1173.81 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0
 1173.82 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0
 1173.83 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0
 1173.84 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0
 1173.85 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0
 1173.86 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0
 1173.87 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0
 1173.88 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0
 1173.89 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0
 1173.90 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0
 1173.91 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0
 1173.92 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0
 1173.93 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0
 1173.94 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0
 1173.95 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0
 1173.96 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0
 1173.97 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0
 1173.98 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0
 1173.99 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0
1173.100 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0
1173.101 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0
1173.102 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0
1173.103 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0
1173.104 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0
1173.105 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0
1173.106 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0
1173.107 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0
1173.108 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0
1173.109 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0
1173.110 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0
1173.111 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0
1173.112 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0
1173.113 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0
1173.114 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0
1173.115 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0
1173.116 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0
1173.117 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0
1173.118 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0
1173.119 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0
1173.120 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0
1173.121 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0
1173.122 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0
1173.123 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0
1173.124 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0
1173.125 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0
1173.126 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0
1173.127 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0
1173.128 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0
1173.129 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0
1173.130 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0
1173.131 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0
1173.132 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0
1173.133 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0
1173.134 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0
1173.135 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0
1173.136 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0
1173.137 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0
1173.138 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0
1173.139 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0
1173.140 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0
1173.141 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0
1173.142 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0
1173.143 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0
1173.144 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0
1173.145 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0
1173.146 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0
1173.147 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0
1173.148 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0
1173.149 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0
1173.150 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0
1173.151 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0
1173.152 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0
1173.153 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0
1173.154 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0
1173.155 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0
1173.156 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0
1173.157 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0
1173.158 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0
1173.159 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0
1173.160 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0
1173.161 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0
1173.162 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0
1173.163 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0
1173.164 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0
1173.165 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0
1173.166 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0
1173.167 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0
1173.168 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0
1173.169 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0
1173.170 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0
1173.171 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0
1173.172 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0
1173.173 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0
1173.174 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0
1173.175 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0
1173.176 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0
1173.177 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0
1173.178 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0
1173.179 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0
1173.180 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0
1173.181 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0
1173.182 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0
1173.183 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0
1173.184 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0
1173.185 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0
1173.186 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0
1173.187 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0
1173.188 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0
1173.189 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0
1173.190 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0
1173.191 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0
1173.192 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0
1173.193 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0
1173.194 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0
1173.195 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0
1173.196 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0
1173.197 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0
1173.198 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0
1173.199 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0
1173.200 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0
1173.201 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0
1173.202 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0
1173.203 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0
1173.204 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0
1173.205 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0
1173.206 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0
1173.207 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0
1173.208 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0
1173.209 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0
1173.210 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0
1173.211 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0
1173.212 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0
1173.213 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0
1173.214 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0
1173.215 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0
1173.216 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0
1173.217 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0
1173.218 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0
1173.219 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0
1173.220 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0
1173.221 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0
1173.222 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0
1173.223 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0
1173.224 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0
1173.225 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0
1173.226 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0
1173.227 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0
1173.228 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0
1173.229 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0
1173.230 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0
1173.231 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0
1173.232 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0
1173.233 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0
1173.234 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0
1173.235 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0
1173.236 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0
1173.237 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0
1173.238 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0
1173.239 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0
1173.240 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0
1173.241 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0
1173.242 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0
1173.243 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0
1173.244 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0
1173.245 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0
1173.246 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0
1173.247 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0
1173.248 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0
1173.249 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0
1173.250 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0
1173.251 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0
1173.252 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0
1173.253 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0
1173.254 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0
1173.255 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0
1173.256 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0
1173.257 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0
1173.258 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0
1173.259 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0
1173.260 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0
1173.261 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0
1173.262 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0
1173.263 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0
1173.264 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0
1173.265 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0
1173.266 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0
1173.267 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0
1173.268 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0
1173.269 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0
1173.270 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0
1173.271 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0
1173.272 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0
1173.273 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0
1173.274 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0
1173.275 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0
1173.276 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0
1173.277 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0
1173.278 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0
1173.279 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0
1173.280 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0
1173.281 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0
1173.282 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0
1173.283 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0
1173.284 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0
1173.285 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0
1173.286 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0
1173.287 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0
1173.288 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0
1173.289 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0
1173.290 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0
1173.291 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0
1173.292 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0
1173.293 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0
1173.294 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0
1173.295 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0
1173.296 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0
1173.297 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0
1173.298 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0
1173.299 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0
1173.300 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0
1173.301 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0
1173.302 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0
1173.303 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0
1173.304 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0
1173.305 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0
1173.306 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0
1173.307 +# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0
1173.308 +#
1173.309 +# endif
  1174.1 --- a/epoc32/include/stdapis/boost/preprocessor/repetition/enum_params.hpp	Tue Mar 16 16:12:26 2010 +0000
  1174.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1174.3 @@ -1,41 +0,0 @@
  1174.4 -# /* Copyright (C) 2001
  1174.5 -#  * Housemarque Oy
  1174.6 -#  * http://www.housemarque.com
  1174.7 -#  *
  1174.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1174.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1174.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1174.11 -#  */
 1174.12 -#
 1174.13 -# /* Revised by Paul Mensonides (2002) */
 1174.14 -#
 1174.15 -# /* See http://www.boost.org for most recent version. */
 1174.16 -#
 1174.17 -# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
 1174.18 -# define BOOST_PREPROCESSOR_REPETITION_ENUM_PARAMS_HPP
 1174.19 -#
 1174.20 -# include <boost/preprocessor/config/config.hpp>
 1174.21 -# include <boost/preprocessor/punctuation/comma_if.hpp>
 1174.22 -# include <boost/preprocessor/repetition/repeat.hpp>
 1174.23 -#
 1174.24 -# /* BOOST_PP_ENUM_PARAMS */
 1174.25 -#
 1174.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1174.27 -#    define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
 1174.28 -# else
 1174.29 -#    define BOOST_PP_ENUM_PARAMS(count, param) BOOST_PP_ENUM_PARAMS_I(count, param)
 1174.30 -#    define BOOST_PP_ENUM_PARAMS_I(count, param) BOOST_PP_REPEAT(count, BOOST_PP_ENUM_PARAMS_M, param)
 1174.31 -# endif
 1174.32 -#
 1174.33 -# define BOOST_PP_ENUM_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) param ## n
 1174.34 -#
 1174.35 -# /* BOOST_PP_ENUM_PARAMS_Z */
 1174.36 -#
 1174.37 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1174.38 -#    define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
 1174.39 -# else
 1174.40 -#    define BOOST_PP_ENUM_PARAMS_Z(z, count, param) BOOST_PP_ENUM_PARAMS_Z_I(z, count, param)
 1174.41 -#    define BOOST_PP_ENUM_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(count, BOOST_PP_ENUM_PARAMS_M, param)
 1174.42 -# endif
 1174.43 -#
 1174.44 -# endif
  1175.1 --- a/epoc32/include/stdapis/boost/preprocessor/repetition/enum_shifted_params.hpp	Tue Mar 16 16:12:26 2010 +0000
  1175.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1175.3 @@ -1,44 +0,0 @@
  1175.4 -# /* Copyright (C) 2001
  1175.5 -#  * Housemarque Oy
  1175.6 -#  * http://www.housemarque.com
  1175.7 -#  *
  1175.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1175.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1175.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1175.11 -#  */
 1175.12 -#
 1175.13 -# /* Revised by Paul Mensonides (2002) */
 1175.14 -#
 1175.15 -# /* See http://www.boost.org for most recent version. */
 1175.16 -#
 1175.17 -# ifndef BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
 1175.18 -# define BOOST_PREPROCESSOR_REPETITION_ENUM_SHIFTED_PARAMS_HPP
 1175.19 -#
 1175.20 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1175.21 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1175.22 -# include <boost/preprocessor/cat.hpp>
 1175.23 -# include <boost/preprocessor/config/config.hpp>
 1175.24 -# include <boost/preprocessor/punctuation/comma_if.hpp>
 1175.25 -# include <boost/preprocessor/repetition/repeat.hpp>
 1175.26 -#
 1175.27 -# /* BOOST_PP_ENUM_SHIFTED_PARAMS */
 1175.28 -#
 1175.29 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1175.30 -#    define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1175.31 -# else
 1175.32 -#    define BOOST_PP_ENUM_SHIFTED_PARAMS(count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param)
 1175.33 -#    define BOOST_PP_ENUM_SHIFTED_PARAMS_I(count, param) BOOST_PP_REPEAT(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1175.34 -# endif
 1175.35 -#
 1175.36 -# define BOOST_PP_ENUM_SHIFTED_PARAMS_M(z, n, param) BOOST_PP_COMMA_IF(n) BOOST_PP_CAT(param, BOOST_PP_INC(n))
 1175.37 -#
 1175.38 -# /* BOOST_PP_ENUM_SHIFTED_PARAMS_Z */
 1175.39 -#
 1175.40 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1175.41 -#    define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1175.42 -# else
 1175.43 -#    define BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param) BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param)
 1175.44 -#    define BOOST_PP_ENUM_SHIFTED_PARAMS_Z_I(z, count, param) BOOST_PP_REPEAT_ ## z(BOOST_PP_DEC(count), BOOST_PP_ENUM_SHIFTED_PARAMS_M, param)
 1175.45 -# endif
 1175.46 -#
 1175.47 -# endif
  1176.1 --- a/epoc32/include/stdapis/boost/preprocessor/repetition/for.hpp	Tue Mar 16 16:12:26 2010 +0000
  1176.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1176.3 @@ -1,306 +0,0 @@
  1176.4 -# /* Copyright (C) 2001
  1176.5 -#  * Housemarque Oy
  1176.6 -#  * http://www.housemarque.com
  1176.7 -#  *
  1176.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1176.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1176.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1176.11 -#  */
 1176.12 -#
 1176.13 -# /* Revised by Paul Mensonides (2002) */
 1176.14 -#
 1176.15 -# /* See http://www.boost.org for most recent version. */
 1176.16 -#
 1176.17 -# ifndef BOOST_PREPROCESSOR_REPETITION_FOR_HPP
 1176.18 -# define BOOST_PREPROCESSOR_REPETITION_FOR_HPP
 1176.19 -#
 1176.20 -# include <boost/preprocessor/cat.hpp>
 1176.21 -# include <boost/preprocessor/debug/error.hpp>
 1176.22 -# include <boost/preprocessor/detail/auto_rec.hpp>
 1176.23 -#
 1176.24 -# /* BOOST_PP_FOR */
 1176.25 -#
 1176.26 -# if 0
 1176.27 -#    define BOOST_PP_FOR(state, pred, op, macro)
 1176.28 -# endif
 1176.29 -#
 1176.30 -# define BOOST_PP_FOR BOOST_PP_CAT(BOOST_PP_FOR_, BOOST_PP_AUTO_REC(BOOST_PP_FOR_P, 256))
 1176.31 -#
 1176.32 -# define BOOST_PP_FOR_P(n) BOOST_PP_CAT(BOOST_PP_FOR_CHECK_, BOOST_PP_FOR_ ## n(1, BOOST_PP_FOR_SR_P, BOOST_PP_FOR_SR_O, BOOST_PP_FOR_SR_M))
 1176.33 -#
 1176.34 -# define BOOST_PP_FOR_SR_P(r, s) s
 1176.35 -# define BOOST_PP_FOR_SR_O(r, s) 0
 1176.36 -# define BOOST_PP_FOR_SR_M(r, s) BOOST_PP_NIL
 1176.37 -#
 1176.38 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1176.39 -#    include <boost/preprocessor/repetition/detail/edg/for.hpp>
 1176.40 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1176.41 -#    include <boost/preprocessor/repetition/detail/msvc/for.hpp>
 1176.42 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
 1176.43 -#    include <boost/preprocessor/repetition/detail/dmc/for.hpp>
 1176.44 -# else
 1176.45 -#    include <boost/preprocessor/repetition/detail/for.hpp>
 1176.46 -# endif
 1176.47 -#
 1176.48 -# define BOOST_PP_FOR_257(s, p, o, m) BOOST_PP_ERROR(0x0002)
 1176.49 -#
 1176.50 -# define BOOST_PP_FOR_CHECK_BOOST_PP_NIL 1
 1176.51 -#
 1176.52 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_1(s, p, o, m) 0
 1176.53 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_2(s, p, o, m) 0
 1176.54 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_3(s, p, o, m) 0
 1176.55 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_4(s, p, o, m) 0
 1176.56 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_5(s, p, o, m) 0
 1176.57 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_6(s, p, o, m) 0
 1176.58 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_7(s, p, o, m) 0
 1176.59 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_8(s, p, o, m) 0
 1176.60 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_9(s, p, o, m) 0
 1176.61 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_10(s, p, o, m) 0
 1176.62 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_11(s, p, o, m) 0
 1176.63 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_12(s, p, o, m) 0
 1176.64 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_13(s, p, o, m) 0
 1176.65 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_14(s, p, o, m) 0
 1176.66 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_15(s, p, o, m) 0
 1176.67 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_16(s, p, o, m) 0
 1176.68 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_17(s, p, o, m) 0
 1176.69 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_18(s, p, o, m) 0
 1176.70 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_19(s, p, o, m) 0
 1176.71 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_20(s, p, o, m) 0
 1176.72 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_21(s, p, o, m) 0
 1176.73 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_22(s, p, o, m) 0
 1176.74 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_23(s, p, o, m) 0
 1176.75 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_24(s, p, o, m) 0
 1176.76 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_25(s, p, o, m) 0
 1176.77 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_26(s, p, o, m) 0
 1176.78 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_27(s, p, o, m) 0
 1176.79 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_28(s, p, o, m) 0
 1176.80 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_29(s, p, o, m) 0
 1176.81 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_30(s, p, o, m) 0
 1176.82 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_31(s, p, o, m) 0
 1176.83 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_32(s, p, o, m) 0
 1176.84 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_33(s, p, o, m) 0
 1176.85 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_34(s, p, o, m) 0
 1176.86 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_35(s, p, o, m) 0
 1176.87 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_36(s, p, o, m) 0
 1176.88 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_37(s, p, o, m) 0
 1176.89 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_38(s, p, o, m) 0
 1176.90 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_39(s, p, o, m) 0
 1176.91 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_40(s, p, o, m) 0
 1176.92 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_41(s, p, o, m) 0
 1176.93 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_42(s, p, o, m) 0
 1176.94 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_43(s, p, o, m) 0
 1176.95 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_44(s, p, o, m) 0
 1176.96 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_45(s, p, o, m) 0
 1176.97 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_46(s, p, o, m) 0
 1176.98 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_47(s, p, o, m) 0
 1176.99 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_48(s, p, o, m) 0
1176.100 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_49(s, p, o, m) 0
1176.101 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_50(s, p, o, m) 0
1176.102 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_51(s, p, o, m) 0
1176.103 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_52(s, p, o, m) 0
1176.104 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_53(s, p, o, m) 0
1176.105 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_54(s, p, o, m) 0
1176.106 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_55(s, p, o, m) 0
1176.107 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_56(s, p, o, m) 0
1176.108 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_57(s, p, o, m) 0
1176.109 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_58(s, p, o, m) 0
1176.110 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_59(s, p, o, m) 0
1176.111 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_60(s, p, o, m) 0
1176.112 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_61(s, p, o, m) 0
1176.113 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_62(s, p, o, m) 0
1176.114 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_63(s, p, o, m) 0
1176.115 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_64(s, p, o, m) 0
1176.116 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_65(s, p, o, m) 0
1176.117 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_66(s, p, o, m) 0
1176.118 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_67(s, p, o, m) 0
1176.119 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_68(s, p, o, m) 0
1176.120 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_69(s, p, o, m) 0
1176.121 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_70(s, p, o, m) 0
1176.122 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_71(s, p, o, m) 0
1176.123 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_72(s, p, o, m) 0
1176.124 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_73(s, p, o, m) 0
1176.125 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_74(s, p, o, m) 0
1176.126 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_75(s, p, o, m) 0
1176.127 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_76(s, p, o, m) 0
1176.128 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_77(s, p, o, m) 0
1176.129 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_78(s, p, o, m) 0
1176.130 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_79(s, p, o, m) 0
1176.131 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_80(s, p, o, m) 0
1176.132 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_81(s, p, o, m) 0
1176.133 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_82(s, p, o, m) 0
1176.134 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_83(s, p, o, m) 0
1176.135 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_84(s, p, o, m) 0
1176.136 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_85(s, p, o, m) 0
1176.137 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_86(s, p, o, m) 0
1176.138 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_87(s, p, o, m) 0
1176.139 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_88(s, p, o, m) 0
1176.140 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_89(s, p, o, m) 0
1176.141 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_90(s, p, o, m) 0
1176.142 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_91(s, p, o, m) 0
1176.143 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_92(s, p, o, m) 0
1176.144 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_93(s, p, o, m) 0
1176.145 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_94(s, p, o, m) 0
1176.146 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_95(s, p, o, m) 0
1176.147 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_96(s, p, o, m) 0
1176.148 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_97(s, p, o, m) 0
1176.149 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_98(s, p, o, m) 0
1176.150 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_99(s, p, o, m) 0
1176.151 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_100(s, p, o, m) 0
1176.152 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_101(s, p, o, m) 0
1176.153 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_102(s, p, o, m) 0
1176.154 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_103(s, p, o, m) 0
1176.155 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_104(s, p, o, m) 0
1176.156 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_105(s, p, o, m) 0
1176.157 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_106(s, p, o, m) 0
1176.158 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_107(s, p, o, m) 0
1176.159 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_108(s, p, o, m) 0
1176.160 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_109(s, p, o, m) 0
1176.161 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_110(s, p, o, m) 0
1176.162 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_111(s, p, o, m) 0
1176.163 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_112(s, p, o, m) 0
1176.164 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_113(s, p, o, m) 0
1176.165 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_114(s, p, o, m) 0
1176.166 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_115(s, p, o, m) 0
1176.167 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_116(s, p, o, m) 0
1176.168 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_117(s, p, o, m) 0
1176.169 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_118(s, p, o, m) 0
1176.170 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_119(s, p, o, m) 0
1176.171 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_120(s, p, o, m) 0
1176.172 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_121(s, p, o, m) 0
1176.173 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_122(s, p, o, m) 0
1176.174 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_123(s, p, o, m) 0
1176.175 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_124(s, p, o, m) 0
1176.176 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_125(s, p, o, m) 0
1176.177 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_126(s, p, o, m) 0
1176.178 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_127(s, p, o, m) 0
1176.179 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_128(s, p, o, m) 0
1176.180 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_129(s, p, o, m) 0
1176.181 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_130(s, p, o, m) 0
1176.182 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_131(s, p, o, m) 0
1176.183 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_132(s, p, o, m) 0
1176.184 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_133(s, p, o, m) 0
1176.185 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_134(s, p, o, m) 0
1176.186 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_135(s, p, o, m) 0
1176.187 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_136(s, p, o, m) 0
1176.188 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_137(s, p, o, m) 0
1176.189 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_138(s, p, o, m) 0
1176.190 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_139(s, p, o, m) 0
1176.191 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_140(s, p, o, m) 0
1176.192 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_141(s, p, o, m) 0
1176.193 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_142(s, p, o, m) 0
1176.194 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_143(s, p, o, m) 0
1176.195 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_144(s, p, o, m) 0
1176.196 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_145(s, p, o, m) 0
1176.197 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_146(s, p, o, m) 0
1176.198 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_147(s, p, o, m) 0
1176.199 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_148(s, p, o, m) 0
1176.200 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_149(s, p, o, m) 0
1176.201 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_150(s, p, o, m) 0
1176.202 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_151(s, p, o, m) 0
1176.203 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_152(s, p, o, m) 0
1176.204 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_153(s, p, o, m) 0
1176.205 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_154(s, p, o, m) 0
1176.206 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_155(s, p, o, m) 0
1176.207 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_156(s, p, o, m) 0
1176.208 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_157(s, p, o, m) 0
1176.209 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_158(s, p, o, m) 0
1176.210 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_159(s, p, o, m) 0
1176.211 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_160(s, p, o, m) 0
1176.212 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_161(s, p, o, m) 0
1176.213 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_162(s, p, o, m) 0
1176.214 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_163(s, p, o, m) 0
1176.215 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_164(s, p, o, m) 0
1176.216 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_165(s, p, o, m) 0
1176.217 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_166(s, p, o, m) 0
1176.218 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_167(s, p, o, m) 0
1176.219 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_168(s, p, o, m) 0
1176.220 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_169(s, p, o, m) 0
1176.221 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_170(s, p, o, m) 0
1176.222 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_171(s, p, o, m) 0
1176.223 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_172(s, p, o, m) 0
1176.224 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_173(s, p, o, m) 0
1176.225 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_174(s, p, o, m) 0
1176.226 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_175(s, p, o, m) 0
1176.227 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_176(s, p, o, m) 0
1176.228 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_177(s, p, o, m) 0
1176.229 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_178(s, p, o, m) 0
1176.230 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_179(s, p, o, m) 0
1176.231 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_180(s, p, o, m) 0
1176.232 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_181(s, p, o, m) 0
1176.233 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_182(s, p, o, m) 0
1176.234 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_183(s, p, o, m) 0
1176.235 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_184(s, p, o, m) 0
1176.236 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_185(s, p, o, m) 0
1176.237 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_186(s, p, o, m) 0
1176.238 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_187(s, p, o, m) 0
1176.239 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_188(s, p, o, m) 0
1176.240 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_189(s, p, o, m) 0
1176.241 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_190(s, p, o, m) 0
1176.242 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_191(s, p, o, m) 0
1176.243 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_192(s, p, o, m) 0
1176.244 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_193(s, p, o, m) 0
1176.245 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_194(s, p, o, m) 0
1176.246 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_195(s, p, o, m) 0
1176.247 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_196(s, p, o, m) 0
1176.248 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_197(s, p, o, m) 0
1176.249 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_198(s, p, o, m) 0
1176.250 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_199(s, p, o, m) 0
1176.251 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_200(s, p, o, m) 0
1176.252 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_201(s, p, o, m) 0
1176.253 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_202(s, p, o, m) 0
1176.254 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_203(s, p, o, m) 0
1176.255 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_204(s, p, o, m) 0
1176.256 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_205(s, p, o, m) 0
1176.257 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_206(s, p, o, m) 0
1176.258 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_207(s, p, o, m) 0
1176.259 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_208(s, p, o, m) 0
1176.260 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_209(s, p, o, m) 0
1176.261 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_210(s, p, o, m) 0
1176.262 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_211(s, p, o, m) 0
1176.263 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_212(s, p, o, m) 0
1176.264 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_213(s, p, o, m) 0
1176.265 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_214(s, p, o, m) 0
1176.266 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_215(s, p, o, m) 0
1176.267 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_216(s, p, o, m) 0
1176.268 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_217(s, p, o, m) 0
1176.269 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_218(s, p, o, m) 0
1176.270 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_219(s, p, o, m) 0
1176.271 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_220(s, p, o, m) 0
1176.272 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_221(s, p, o, m) 0
1176.273 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_222(s, p, o, m) 0
1176.274 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_223(s, p, o, m) 0
1176.275 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_224(s, p, o, m) 0
1176.276 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_225(s, p, o, m) 0
1176.277 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_226(s, p, o, m) 0
1176.278 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_227(s, p, o, m) 0
1176.279 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_228(s, p, o, m) 0
1176.280 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_229(s, p, o, m) 0
1176.281 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_230(s, p, o, m) 0
1176.282 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_231(s, p, o, m) 0
1176.283 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_232(s, p, o, m) 0
1176.284 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_233(s, p, o, m) 0
1176.285 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_234(s, p, o, m) 0
1176.286 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_235(s, p, o, m) 0
1176.287 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_236(s, p, o, m) 0
1176.288 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_237(s, p, o, m) 0
1176.289 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_238(s, p, o, m) 0
1176.290 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_239(s, p, o, m) 0
1176.291 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_240(s, p, o, m) 0
1176.292 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_241(s, p, o, m) 0
1176.293 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_242(s, p, o, m) 0
1176.294 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_243(s, p, o, m) 0
1176.295 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_244(s, p, o, m) 0
1176.296 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_245(s, p, o, m) 0
1176.297 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_246(s, p, o, m) 0
1176.298 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_247(s, p, o, m) 0
1176.299 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_248(s, p, o, m) 0
1176.300 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_249(s, p, o, m) 0
1176.301 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_250(s, p, o, m) 0
1176.302 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_251(s, p, o, m) 0
1176.303 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_252(s, p, o, m) 0
1176.304 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_253(s, p, o, m) 0
1176.305 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_254(s, p, o, m) 0
1176.306 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_255(s, p, o, m) 0
1176.307 -# define BOOST_PP_FOR_CHECK_BOOST_PP_FOR_256(s, p, o, m) 0
1176.308 -#
1176.309 -# endif
  1177.1 --- a/epoc32/include/stdapis/boost/preprocessor/repetition/repeat.hpp	Tue Mar 16 16:12:26 2010 +0000
  1177.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1177.3 @@ -1,825 +0,0 @@
  1177.4 -# /* Copyright (C) 2001
  1177.5 -#  * Housemarque Oy
  1177.6 -#  * http://www.housemarque.com
  1177.7 -#  *
  1177.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1177.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1177.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1177.11 -#  */
 1177.12 -#
 1177.13 -# /* Revised by Paul Mensonides (2002) */
 1177.14 -#
 1177.15 -# /* See http://www.boost.org for most recent version. */
 1177.16 -#
 1177.17 -# ifndef BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
 1177.18 -# define BOOST_PREPROCESSOR_REPETITION_REPEAT_HPP
 1177.19 -#
 1177.20 -# include <boost/preprocessor/cat.hpp>
 1177.21 -# include <boost/preprocessor/config/config.hpp>
 1177.22 -# include <boost/preprocessor/debug/error.hpp>
 1177.23 -# include <boost/preprocessor/detail/auto_rec.hpp>
 1177.24 -# include <boost/preprocessor/tuple/eat.hpp>
 1177.25 -#
 1177.26 -# /* BOOST_PP_REPEAT */
 1177.27 -#
 1177.28 -# if 0
 1177.29 -#    define BOOST_PP_REPEAT(count, macro, data)
 1177.30 -# endif
 1177.31 -#
 1177.32 -# define BOOST_PP_REPEAT BOOST_PP_CAT(BOOST_PP_REPEAT_, BOOST_PP_AUTO_REC(BOOST_PP_REPEAT_P, 4))
 1177.33 -#
 1177.34 -# define BOOST_PP_REPEAT_P(n) BOOST_PP_CAT(BOOST_PP_REPEAT_CHECK_, BOOST_PP_REPEAT_ ## n(1, BOOST_PP_NIL BOOST_PP_TUPLE_EAT_3, BOOST_PP_NIL))
 1177.35 -#
 1177.36 -# define BOOST_PP_REPEAT_CHECK_BOOST_PP_NIL 1
 1177.37 -# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_1(c, m, d) 0
 1177.38 -# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_2(c, m, d) 0
 1177.39 -# define BOOST_PP_REPEAT_CHECK_BOOST_PP_REPEAT_3(c, m, d) 0
 1177.40 -#
 1177.41 -# define BOOST_PP_REPEAT_1(c, m, d) BOOST_PP_REPEAT_1_I(c, m, d)
 1177.42 -# define BOOST_PP_REPEAT_2(c, m, d) BOOST_PP_REPEAT_2_I(c, m, d)
 1177.43 -# define BOOST_PP_REPEAT_3(c, m, d) BOOST_PP_REPEAT_3_I(c, m, d)
 1177.44 -# define BOOST_PP_REPEAT_4(c, m, d) BOOST_PP_ERROR(0x0003)
 1177.45 -#
 1177.46 -# define BOOST_PP_REPEAT_1_I(c, m, d) BOOST_PP_REPEAT_1_ ## c(m, d)
 1177.47 -# define BOOST_PP_REPEAT_2_I(c, m, d) BOOST_PP_REPEAT_2_ ## c(m, d)
 1177.48 -# define BOOST_PP_REPEAT_3_I(c, m, d) BOOST_PP_REPEAT_3_ ## c(m, d)
 1177.49 -#
 1177.50 -# define BOOST_PP_REPEAT_1ST BOOST_PP_REPEAT_1
 1177.51 -# define BOOST_PP_REPEAT_2ND BOOST_PP_REPEAT_2
 1177.52 -# define BOOST_PP_REPEAT_3RD BOOST_PP_REPEAT_3
 1177.53 -#
 1177.54 -# define BOOST_PP_REPEAT_1_0(m, d)
 1177.55 -# define BOOST_PP_REPEAT_1_1(m, d) m(2, 0, d)
 1177.56 -# define BOOST_PP_REPEAT_1_2(m, d) BOOST_PP_REPEAT_1_1(m, d) m(2, 1, d)
 1177.57 -# define BOOST_PP_REPEAT_1_3(m, d) BOOST_PP_REPEAT_1_2(m, d) m(2, 2, d)
 1177.58 -# define BOOST_PP_REPEAT_1_4(m, d) BOOST_PP_REPEAT_1_3(m, d) m(2, 3, d)
 1177.59 -# define BOOST_PP_REPEAT_1_5(m, d) BOOST_PP_REPEAT_1_4(m, d) m(2, 4, d)
 1177.60 -# define BOOST_PP_REPEAT_1_6(m, d) BOOST_PP_REPEAT_1_5(m, d) m(2, 5, d)
 1177.61 -# define BOOST_PP_REPEAT_1_7(m, d) BOOST_PP_REPEAT_1_6(m, d) m(2, 6, d)
 1177.62 -# define BOOST_PP_REPEAT_1_8(m, d) BOOST_PP_REPEAT_1_7(m, d) m(2, 7, d)
 1177.63 -# define BOOST_PP_REPEAT_1_9(m, d) BOOST_PP_REPEAT_1_8(m, d) m(2, 8, d)
 1177.64 -# define BOOST_PP_REPEAT_1_10(m, d) BOOST_PP_REPEAT_1_9(m, d) m(2, 9, d)
 1177.65 -# define BOOST_PP_REPEAT_1_11(m, d) BOOST_PP_REPEAT_1_10(m, d) m(2, 10, d)
 1177.66 -# define BOOST_PP_REPEAT_1_12(m, d) BOOST_PP_REPEAT_1_11(m, d) m(2, 11, d)
 1177.67 -# define BOOST_PP_REPEAT_1_13(m, d) BOOST_PP_REPEAT_1_12(m, d) m(2, 12, d)
 1177.68 -# define BOOST_PP_REPEAT_1_14(m, d) BOOST_PP_REPEAT_1_13(m, d) m(2, 13, d)
 1177.69 -# define BOOST_PP_REPEAT_1_15(m, d) BOOST_PP_REPEAT_1_14(m, d) m(2, 14, d)
 1177.70 -# define BOOST_PP_REPEAT_1_16(m, d) BOOST_PP_REPEAT_1_15(m, d) m(2, 15, d)
 1177.71 -# define BOOST_PP_REPEAT_1_17(m, d) BOOST_PP_REPEAT_1_16(m, d) m(2, 16, d)
 1177.72 -# define BOOST_PP_REPEAT_1_18(m, d) BOOST_PP_REPEAT_1_17(m, d) m(2, 17, d)
 1177.73 -# define BOOST_PP_REPEAT_1_19(m, d) BOOST_PP_REPEAT_1_18(m, d) m(2, 18, d)
 1177.74 -# define BOOST_PP_REPEAT_1_20(m, d) BOOST_PP_REPEAT_1_19(m, d) m(2, 19, d)
 1177.75 -# define BOOST_PP_REPEAT_1_21(m, d) BOOST_PP_REPEAT_1_20(m, d) m(2, 20, d)
 1177.76 -# define BOOST_PP_REPEAT_1_22(m, d) BOOST_PP_REPEAT_1_21(m, d) m(2, 21, d)
 1177.77 -# define BOOST_PP_REPEAT_1_23(m, d) BOOST_PP_REPEAT_1_22(m, d) m(2, 22, d)
 1177.78 -# define BOOST_PP_REPEAT_1_24(m, d) BOOST_PP_REPEAT_1_23(m, d) m(2, 23, d)
 1177.79 -# define BOOST_PP_REPEAT_1_25(m, d) BOOST_PP_REPEAT_1_24(m, d) m(2, 24, d)
 1177.80 -# define BOOST_PP_REPEAT_1_26(m, d) BOOST_PP_REPEAT_1_25(m, d) m(2, 25, d)
 1177.81 -# define BOOST_PP_REPEAT_1_27(m, d) BOOST_PP_REPEAT_1_26(m, d) m(2, 26, d)
 1177.82 -# define BOOST_PP_REPEAT_1_28(m, d) BOOST_PP_REPEAT_1_27(m, d) m(2, 27, d)
 1177.83 -# define BOOST_PP_REPEAT_1_29(m, d) BOOST_PP_REPEAT_1_28(m, d) m(2, 28, d)
 1177.84 -# define BOOST_PP_REPEAT_1_30(m, d) BOOST_PP_REPEAT_1_29(m, d) m(2, 29, d)
 1177.85 -# define BOOST_PP_REPEAT_1_31(m, d) BOOST_PP_REPEAT_1_30(m, d) m(2, 30, d)
 1177.86 -# define BOOST_PP_REPEAT_1_32(m, d) BOOST_PP_REPEAT_1_31(m, d) m(2, 31, d)
 1177.87 -# define BOOST_PP_REPEAT_1_33(m, d) BOOST_PP_REPEAT_1_32(m, d) m(2, 32, d)
 1177.88 -# define BOOST_PP_REPEAT_1_34(m, d) BOOST_PP_REPEAT_1_33(m, d) m(2, 33, d)
 1177.89 -# define BOOST_PP_REPEAT_1_35(m, d) BOOST_PP_REPEAT_1_34(m, d) m(2, 34, d)
 1177.90 -# define BOOST_PP_REPEAT_1_36(m, d) BOOST_PP_REPEAT_1_35(m, d) m(2, 35, d)
 1177.91 -# define BOOST_PP_REPEAT_1_37(m, d) BOOST_PP_REPEAT_1_36(m, d) m(2, 36, d)
 1177.92 -# define BOOST_PP_REPEAT_1_38(m, d) BOOST_PP_REPEAT_1_37(m, d) m(2, 37, d)
 1177.93 -# define BOOST_PP_REPEAT_1_39(m, d) BOOST_PP_REPEAT_1_38(m, d) m(2, 38, d)
 1177.94 -# define BOOST_PP_REPEAT_1_40(m, d) BOOST_PP_REPEAT_1_39(m, d) m(2, 39, d)
 1177.95 -# define BOOST_PP_REPEAT_1_41(m, d) BOOST_PP_REPEAT_1_40(m, d) m(2, 40, d)
 1177.96 -# define BOOST_PP_REPEAT_1_42(m, d) BOOST_PP_REPEAT_1_41(m, d) m(2, 41, d)
 1177.97 -# define BOOST_PP_REPEAT_1_43(m, d) BOOST_PP_REPEAT_1_42(m, d) m(2, 42, d)
 1177.98 -# define BOOST_PP_REPEAT_1_44(m, d) BOOST_PP_REPEAT_1_43(m, d) m(2, 43, d)
 1177.99 -# define BOOST_PP_REPEAT_1_45(m, d) BOOST_PP_REPEAT_1_44(m, d) m(2, 44, d)
1177.100 -# define BOOST_PP_REPEAT_1_46(m, d) BOOST_PP_REPEAT_1_45(m, d) m(2, 45, d)
1177.101 -# define BOOST_PP_REPEAT_1_47(m, d) BOOST_PP_REPEAT_1_46(m, d) m(2, 46, d)
1177.102 -# define BOOST_PP_REPEAT_1_48(m, d) BOOST_PP_REPEAT_1_47(m, d) m(2, 47, d)
1177.103 -# define BOOST_PP_REPEAT_1_49(m, d) BOOST_PP_REPEAT_1_48(m, d) m(2, 48, d)
1177.104 -# define BOOST_PP_REPEAT_1_50(m, d) BOOST_PP_REPEAT_1_49(m, d) m(2, 49, d)
1177.105 -# define BOOST_PP_REPEAT_1_51(m, d) BOOST_PP_REPEAT_1_50(m, d) m(2, 50, d)
1177.106 -# define BOOST_PP_REPEAT_1_52(m, d) BOOST_PP_REPEAT_1_51(m, d) m(2, 51, d)
1177.107 -# define BOOST_PP_REPEAT_1_53(m, d) BOOST_PP_REPEAT_1_52(m, d) m(2, 52, d)
1177.108 -# define BOOST_PP_REPEAT_1_54(m, d) BOOST_PP_REPEAT_1_53(m, d) m(2, 53, d)
1177.109 -# define BOOST_PP_REPEAT_1_55(m, d) BOOST_PP_REPEAT_1_54(m, d) m(2, 54, d)
1177.110 -# define BOOST_PP_REPEAT_1_56(m, d) BOOST_PP_REPEAT_1_55(m, d) m(2, 55, d)
1177.111 -# define BOOST_PP_REPEAT_1_57(m, d) BOOST_PP_REPEAT_1_56(m, d) m(2, 56, d)
1177.112 -# define BOOST_PP_REPEAT_1_58(m, d) BOOST_PP_REPEAT_1_57(m, d) m(2, 57, d)
1177.113 -# define BOOST_PP_REPEAT_1_59(m, d) BOOST_PP_REPEAT_1_58(m, d) m(2, 58, d)
1177.114 -# define BOOST_PP_REPEAT_1_60(m, d) BOOST_PP_REPEAT_1_59(m, d) m(2, 59, d)
1177.115 -# define BOOST_PP_REPEAT_1_61(m, d) BOOST_PP_REPEAT_1_60(m, d) m(2, 60, d)
1177.116 -# define BOOST_PP_REPEAT_1_62(m, d) BOOST_PP_REPEAT_1_61(m, d) m(2, 61, d)
1177.117 -# define BOOST_PP_REPEAT_1_63(m, d) BOOST_PP_REPEAT_1_62(m, d) m(2, 62, d)
1177.118 -# define BOOST_PP_REPEAT_1_64(m, d) BOOST_PP_REPEAT_1_63(m, d) m(2, 63, d)
1177.119 -# define BOOST_PP_REPEAT_1_65(m, d) BOOST_PP_REPEAT_1_64(m, d) m(2, 64, d)
1177.120 -# define BOOST_PP_REPEAT_1_66(m, d) BOOST_PP_REPEAT_1_65(m, d) m(2, 65, d)
1177.121 -# define BOOST_PP_REPEAT_1_67(m, d) BOOST_PP_REPEAT_1_66(m, d) m(2, 66, d)
1177.122 -# define BOOST_PP_REPEAT_1_68(m, d) BOOST_PP_REPEAT_1_67(m, d) m(2, 67, d)
1177.123 -# define BOOST_PP_REPEAT_1_69(m, d) BOOST_PP_REPEAT_1_68(m, d) m(2, 68, d)
1177.124 -# define BOOST_PP_REPEAT_1_70(m, d) BOOST_PP_REPEAT_1_69(m, d) m(2, 69, d)
1177.125 -# define BOOST_PP_REPEAT_1_71(m, d) BOOST_PP_REPEAT_1_70(m, d) m(2, 70, d)
1177.126 -# define BOOST_PP_REPEAT_1_72(m, d) BOOST_PP_REPEAT_1_71(m, d) m(2, 71, d)
1177.127 -# define BOOST_PP_REPEAT_1_73(m, d) BOOST_PP_REPEAT_1_72(m, d) m(2, 72, d)
1177.128 -# define BOOST_PP_REPEAT_1_74(m, d) BOOST_PP_REPEAT_1_73(m, d) m(2, 73, d)
1177.129 -# define BOOST_PP_REPEAT_1_75(m, d) BOOST_PP_REPEAT_1_74(m, d) m(2, 74, d)
1177.130 -# define BOOST_PP_REPEAT_1_76(m, d) BOOST_PP_REPEAT_1_75(m, d) m(2, 75, d)
1177.131 -# define BOOST_PP_REPEAT_1_77(m, d) BOOST_PP_REPEAT_1_76(m, d) m(2, 76, d)
1177.132 -# define BOOST_PP_REPEAT_1_78(m, d) BOOST_PP_REPEAT_1_77(m, d) m(2, 77, d)
1177.133 -# define BOOST_PP_REPEAT_1_79(m, d) BOOST_PP_REPEAT_1_78(m, d) m(2, 78, d)
1177.134 -# define BOOST_PP_REPEAT_1_80(m, d) BOOST_PP_REPEAT_1_79(m, d) m(2, 79, d)
1177.135 -# define BOOST_PP_REPEAT_1_81(m, d) BOOST_PP_REPEAT_1_80(m, d) m(2, 80, d)
1177.136 -# define BOOST_PP_REPEAT_1_82(m, d) BOOST_PP_REPEAT_1_81(m, d) m(2, 81, d)
1177.137 -# define BOOST_PP_REPEAT_1_83(m, d) BOOST_PP_REPEAT_1_82(m, d) m(2, 82, d)
1177.138 -# define BOOST_PP_REPEAT_1_84(m, d) BOOST_PP_REPEAT_1_83(m, d) m(2, 83, d)
1177.139 -# define BOOST_PP_REPEAT_1_85(m, d) BOOST_PP_REPEAT_1_84(m, d) m(2, 84, d)
1177.140 -# define BOOST_PP_REPEAT_1_86(m, d) BOOST_PP_REPEAT_1_85(m, d) m(2, 85, d)
1177.141 -# define BOOST_PP_REPEAT_1_87(m, d) BOOST_PP_REPEAT_1_86(m, d) m(2, 86, d)
1177.142 -# define BOOST_PP_REPEAT_1_88(m, d) BOOST_PP_REPEAT_1_87(m, d) m(2, 87, d)
1177.143 -# define BOOST_PP_REPEAT_1_89(m, d) BOOST_PP_REPEAT_1_88(m, d) m(2, 88, d)
1177.144 -# define BOOST_PP_REPEAT_1_90(m, d) BOOST_PP_REPEAT_1_89(m, d) m(2, 89, d)
1177.145 -# define BOOST_PP_REPEAT_1_91(m, d) BOOST_PP_REPEAT_1_90(m, d) m(2, 90, d)
1177.146 -# define BOOST_PP_REPEAT_1_92(m, d) BOOST_PP_REPEAT_1_91(m, d) m(2, 91, d)
1177.147 -# define BOOST_PP_REPEAT_1_93(m, d) BOOST_PP_REPEAT_1_92(m, d) m(2, 92, d)
1177.148 -# define BOOST_PP_REPEAT_1_94(m, d) BOOST_PP_REPEAT_1_93(m, d) m(2, 93, d)
1177.149 -# define BOOST_PP_REPEAT_1_95(m, d) BOOST_PP_REPEAT_1_94(m, d) m(2, 94, d)
1177.150 -# define BOOST_PP_REPEAT_1_96(m, d) BOOST_PP_REPEAT_1_95(m, d) m(2, 95, d)
1177.151 -# define BOOST_PP_REPEAT_1_97(m, d) BOOST_PP_REPEAT_1_96(m, d) m(2, 96, d)
1177.152 -# define BOOST_PP_REPEAT_1_98(m, d) BOOST_PP_REPEAT_1_97(m, d) m(2, 97, d)
1177.153 -# define BOOST_PP_REPEAT_1_99(m, d) BOOST_PP_REPEAT_1_98(m, d) m(2, 98, d)
1177.154 -# define BOOST_PP_REPEAT_1_100(m, d) BOOST_PP_REPEAT_1_99(m, d) m(2, 99, d)
1177.155 -# define BOOST_PP_REPEAT_1_101(m, d) BOOST_PP_REPEAT_1_100(m, d) m(2, 100, d)
1177.156 -# define BOOST_PP_REPEAT_1_102(m, d) BOOST_PP_REPEAT_1_101(m, d) m(2, 101, d)
1177.157 -# define BOOST_PP_REPEAT_1_103(m, d) BOOST_PP_REPEAT_1_102(m, d) m(2, 102, d)
1177.158 -# define BOOST_PP_REPEAT_1_104(m, d) BOOST_PP_REPEAT_1_103(m, d) m(2, 103, d)
1177.159 -# define BOOST_PP_REPEAT_1_105(m, d) BOOST_PP_REPEAT_1_104(m, d) m(2, 104, d)
1177.160 -# define BOOST_PP_REPEAT_1_106(m, d) BOOST_PP_REPEAT_1_105(m, d) m(2, 105, d)
1177.161 -# define BOOST_PP_REPEAT_1_107(m, d) BOOST_PP_REPEAT_1_106(m, d) m(2, 106, d)
1177.162 -# define BOOST_PP_REPEAT_1_108(m, d) BOOST_PP_REPEAT_1_107(m, d) m(2, 107, d)
1177.163 -# define BOOST_PP_REPEAT_1_109(m, d) BOOST_PP_REPEAT_1_108(m, d) m(2, 108, d)
1177.164 -# define BOOST_PP_REPEAT_1_110(m, d) BOOST_PP_REPEAT_1_109(m, d) m(2, 109, d)
1177.165 -# define BOOST_PP_REPEAT_1_111(m, d) BOOST_PP_REPEAT_1_110(m, d) m(2, 110, d)
1177.166 -# define BOOST_PP_REPEAT_1_112(m, d) BOOST_PP_REPEAT_1_111(m, d) m(2, 111, d)
1177.167 -# define BOOST_PP_REPEAT_1_113(m, d) BOOST_PP_REPEAT_1_112(m, d) m(2, 112, d)
1177.168 -# define BOOST_PP_REPEAT_1_114(m, d) BOOST_PP_REPEAT_1_113(m, d) m(2, 113, d)
1177.169 -# define BOOST_PP_REPEAT_1_115(m, d) BOOST_PP_REPEAT_1_114(m, d) m(2, 114, d)
1177.170 -# define BOOST_PP_REPEAT_1_116(m, d) BOOST_PP_REPEAT_1_115(m, d) m(2, 115, d)
1177.171 -# define BOOST_PP_REPEAT_1_117(m, d) BOOST_PP_REPEAT_1_116(m, d) m(2, 116, d)
1177.172 -# define BOOST_PP_REPEAT_1_118(m, d) BOOST_PP_REPEAT_1_117(m, d) m(2, 117, d)
1177.173 -# define BOOST_PP_REPEAT_1_119(m, d) BOOST_PP_REPEAT_1_118(m, d) m(2, 118, d)
1177.174 -# define BOOST_PP_REPEAT_1_120(m, d) BOOST_PP_REPEAT_1_119(m, d) m(2, 119, d)
1177.175 -# define BOOST_PP_REPEAT_1_121(m, d) BOOST_PP_REPEAT_1_120(m, d) m(2, 120, d)
1177.176 -# define BOOST_PP_REPEAT_1_122(m, d) BOOST_PP_REPEAT_1_121(m, d) m(2, 121, d)
1177.177 -# define BOOST_PP_REPEAT_1_123(m, d) BOOST_PP_REPEAT_1_122(m, d) m(2, 122, d)
1177.178 -# define BOOST_PP_REPEAT_1_124(m, d) BOOST_PP_REPEAT_1_123(m, d) m(2, 123, d)
1177.179 -# define BOOST_PP_REPEAT_1_125(m, d) BOOST_PP_REPEAT_1_124(m, d) m(2, 124, d)
1177.180 -# define BOOST_PP_REPEAT_1_126(m, d) BOOST_PP_REPEAT_1_125(m, d) m(2, 125, d)
1177.181 -# define BOOST_PP_REPEAT_1_127(m, d) BOOST_PP_REPEAT_1_126(m, d) m(2, 126, d)
1177.182 -# define BOOST_PP_REPEAT_1_128(m, d) BOOST_PP_REPEAT_1_127(m, d) m(2, 127, d)
1177.183 -# define BOOST_PP_REPEAT_1_129(m, d) BOOST_PP_REPEAT_1_128(m, d) m(2, 128, d)
1177.184 -# define BOOST_PP_REPEAT_1_130(m, d) BOOST_PP_REPEAT_1_129(m, d) m(2, 129, d)
1177.185 -# define BOOST_PP_REPEAT_1_131(m, d) BOOST_PP_REPEAT_1_130(m, d) m(2, 130, d)
1177.186 -# define BOOST_PP_REPEAT_1_132(m, d) BOOST_PP_REPEAT_1_131(m, d) m(2, 131, d)
1177.187 -# define BOOST_PP_REPEAT_1_133(m, d) BOOST_PP_REPEAT_1_132(m, d) m(2, 132, d)
1177.188 -# define BOOST_PP_REPEAT_1_134(m, d) BOOST_PP_REPEAT_1_133(m, d) m(2, 133, d)
1177.189 -# define BOOST_PP_REPEAT_1_135(m, d) BOOST_PP_REPEAT_1_134(m, d) m(2, 134, d)
1177.190 -# define BOOST_PP_REPEAT_1_136(m, d) BOOST_PP_REPEAT_1_135(m, d) m(2, 135, d)
1177.191 -# define BOOST_PP_REPEAT_1_137(m, d) BOOST_PP_REPEAT_1_136(m, d) m(2, 136, d)
1177.192 -# define BOOST_PP_REPEAT_1_138(m, d) BOOST_PP_REPEAT_1_137(m, d) m(2, 137, d)
1177.193 -# define BOOST_PP_REPEAT_1_139(m, d) BOOST_PP_REPEAT_1_138(m, d) m(2, 138, d)
1177.194 -# define BOOST_PP_REPEAT_1_140(m, d) BOOST_PP_REPEAT_1_139(m, d) m(2, 139, d)
1177.195 -# define BOOST_PP_REPEAT_1_141(m, d) BOOST_PP_REPEAT_1_140(m, d) m(2, 140, d)
1177.196 -# define BOOST_PP_REPEAT_1_142(m, d) BOOST_PP_REPEAT_1_141(m, d) m(2, 141, d)
1177.197 -# define BOOST_PP_REPEAT_1_143(m, d) BOOST_PP_REPEAT_1_142(m, d) m(2, 142, d)
1177.198 -# define BOOST_PP_REPEAT_1_144(m, d) BOOST_PP_REPEAT_1_143(m, d) m(2, 143, d)
1177.199 -# define BOOST_PP_REPEAT_1_145(m, d) BOOST_PP_REPEAT_1_144(m, d) m(2, 144, d)
1177.200 -# define BOOST_PP_REPEAT_1_146(m, d) BOOST_PP_REPEAT_1_145(m, d) m(2, 145, d)
1177.201 -# define BOOST_PP_REPEAT_1_147(m, d) BOOST_PP_REPEAT_1_146(m, d) m(2, 146, d)
1177.202 -# define BOOST_PP_REPEAT_1_148(m, d) BOOST_PP_REPEAT_1_147(m, d) m(2, 147, d)
1177.203 -# define BOOST_PP_REPEAT_1_149(m, d) BOOST_PP_REPEAT_1_148(m, d) m(2, 148, d)
1177.204 -# define BOOST_PP_REPEAT_1_150(m, d) BOOST_PP_REPEAT_1_149(m, d) m(2, 149, d)
1177.205 -# define BOOST_PP_REPEAT_1_151(m, d) BOOST_PP_REPEAT_1_150(m, d) m(2, 150, d)
1177.206 -# define BOOST_PP_REPEAT_1_152(m, d) BOOST_PP_REPEAT_1_151(m, d) m(2, 151, d)
1177.207 -# define BOOST_PP_REPEAT_1_153(m, d) BOOST_PP_REPEAT_1_152(m, d) m(2, 152, d)
1177.208 -# define BOOST_PP_REPEAT_1_154(m, d) BOOST_PP_REPEAT_1_153(m, d) m(2, 153, d)
1177.209 -# define BOOST_PP_REPEAT_1_155(m, d) BOOST_PP_REPEAT_1_154(m, d) m(2, 154, d)
1177.210 -# define BOOST_PP_REPEAT_1_156(m, d) BOOST_PP_REPEAT_1_155(m, d) m(2, 155, d)
1177.211 -# define BOOST_PP_REPEAT_1_157(m, d) BOOST_PP_REPEAT_1_156(m, d) m(2, 156, d)
1177.212 -# define BOOST_PP_REPEAT_1_158(m, d) BOOST_PP_REPEAT_1_157(m, d) m(2, 157, d)
1177.213 -# define BOOST_PP_REPEAT_1_159(m, d) BOOST_PP_REPEAT_1_158(m, d) m(2, 158, d)
1177.214 -# define BOOST_PP_REPEAT_1_160(m, d) BOOST_PP_REPEAT_1_159(m, d) m(2, 159, d)
1177.215 -# define BOOST_PP_REPEAT_1_161(m, d) BOOST_PP_REPEAT_1_160(m, d) m(2, 160, d)
1177.216 -# define BOOST_PP_REPEAT_1_162(m, d) BOOST_PP_REPEAT_1_161(m, d) m(2, 161, d)
1177.217 -# define BOOST_PP_REPEAT_1_163(m, d) BOOST_PP_REPEAT_1_162(m, d) m(2, 162, d)
1177.218 -# define BOOST_PP_REPEAT_1_164(m, d) BOOST_PP_REPEAT_1_163(m, d) m(2, 163, d)
1177.219 -# define BOOST_PP_REPEAT_1_165(m, d) BOOST_PP_REPEAT_1_164(m, d) m(2, 164, d)
1177.220 -# define BOOST_PP_REPEAT_1_166(m, d) BOOST_PP_REPEAT_1_165(m, d) m(2, 165, d)
1177.221 -# define BOOST_PP_REPEAT_1_167(m, d) BOOST_PP_REPEAT_1_166(m, d) m(2, 166, d)
1177.222 -# define BOOST_PP_REPEAT_1_168(m, d) BOOST_PP_REPEAT_1_167(m, d) m(2, 167, d)
1177.223 -# define BOOST_PP_REPEAT_1_169(m, d) BOOST_PP_REPEAT_1_168(m, d) m(2, 168, d)
1177.224 -# define BOOST_PP_REPEAT_1_170(m, d) BOOST_PP_REPEAT_1_169(m, d) m(2, 169, d)
1177.225 -# define BOOST_PP_REPEAT_1_171(m, d) BOOST_PP_REPEAT_1_170(m, d) m(2, 170, d)
1177.226 -# define BOOST_PP_REPEAT_1_172(m, d) BOOST_PP_REPEAT_1_171(m, d) m(2, 171, d)
1177.227 -# define BOOST_PP_REPEAT_1_173(m, d) BOOST_PP_REPEAT_1_172(m, d) m(2, 172, d)
1177.228 -# define BOOST_PP_REPEAT_1_174(m, d) BOOST_PP_REPEAT_1_173(m, d) m(2, 173, d)
1177.229 -# define BOOST_PP_REPEAT_1_175(m, d) BOOST_PP_REPEAT_1_174(m, d) m(2, 174, d)
1177.230 -# define BOOST_PP_REPEAT_1_176(m, d) BOOST_PP_REPEAT_1_175(m, d) m(2, 175, d)
1177.231 -# define BOOST_PP_REPEAT_1_177(m, d) BOOST_PP_REPEAT_1_176(m, d) m(2, 176, d)
1177.232 -# define BOOST_PP_REPEAT_1_178(m, d) BOOST_PP_REPEAT_1_177(m, d) m(2, 177, d)
1177.233 -# define BOOST_PP_REPEAT_1_179(m, d) BOOST_PP_REPEAT_1_178(m, d) m(2, 178, d)
1177.234 -# define BOOST_PP_REPEAT_1_180(m, d) BOOST_PP_REPEAT_1_179(m, d) m(2, 179, d)
1177.235 -# define BOOST_PP_REPEAT_1_181(m, d) BOOST_PP_REPEAT_1_180(m, d) m(2, 180, d)
1177.236 -# define BOOST_PP_REPEAT_1_182(m, d) BOOST_PP_REPEAT_1_181(m, d) m(2, 181, d)
1177.237 -# define BOOST_PP_REPEAT_1_183(m, d) BOOST_PP_REPEAT_1_182(m, d) m(2, 182, d)
1177.238 -# define BOOST_PP_REPEAT_1_184(m, d) BOOST_PP_REPEAT_1_183(m, d) m(2, 183, d)
1177.239 -# define BOOST_PP_REPEAT_1_185(m, d) BOOST_PP_REPEAT_1_184(m, d) m(2, 184, d)
1177.240 -# define BOOST_PP_REPEAT_1_186(m, d) BOOST_PP_REPEAT_1_185(m, d) m(2, 185, d)
1177.241 -# define BOOST_PP_REPEAT_1_187(m, d) BOOST_PP_REPEAT_1_186(m, d) m(2, 186, d)
1177.242 -# define BOOST_PP_REPEAT_1_188(m, d) BOOST_PP_REPEAT_1_187(m, d) m(2, 187, d)
1177.243 -# define BOOST_PP_REPEAT_1_189(m, d) BOOST_PP_REPEAT_1_188(m, d) m(2, 188, d)
1177.244 -# define BOOST_PP_REPEAT_1_190(m, d) BOOST_PP_REPEAT_1_189(m, d) m(2, 189, d)
1177.245 -# define BOOST_PP_REPEAT_1_191(m, d) BOOST_PP_REPEAT_1_190(m, d) m(2, 190, d)
1177.246 -# define BOOST_PP_REPEAT_1_192(m, d) BOOST_PP_REPEAT_1_191(m, d) m(2, 191, d)
1177.247 -# define BOOST_PP_REPEAT_1_193(m, d) BOOST_PP_REPEAT_1_192(m, d) m(2, 192, d)
1177.248 -# define BOOST_PP_REPEAT_1_194(m, d) BOOST_PP_REPEAT_1_193(m, d) m(2, 193, d)
1177.249 -# define BOOST_PP_REPEAT_1_195(m, d) BOOST_PP_REPEAT_1_194(m, d) m(2, 194, d)
1177.250 -# define BOOST_PP_REPEAT_1_196(m, d) BOOST_PP_REPEAT_1_195(m, d) m(2, 195, d)
1177.251 -# define BOOST_PP_REPEAT_1_197(m, d) BOOST_PP_REPEAT_1_196(m, d) m(2, 196, d)
1177.252 -# define BOOST_PP_REPEAT_1_198(m, d) BOOST_PP_REPEAT_1_197(m, d) m(2, 197, d)
1177.253 -# define BOOST_PP_REPEAT_1_199(m, d) BOOST_PP_REPEAT_1_198(m, d) m(2, 198, d)
1177.254 -# define BOOST_PP_REPEAT_1_200(m, d) BOOST_PP_REPEAT_1_199(m, d) m(2, 199, d)
1177.255 -# define BOOST_PP_REPEAT_1_201(m, d) BOOST_PP_REPEAT_1_200(m, d) m(2, 200, d)
1177.256 -# define BOOST_PP_REPEAT_1_202(m, d) BOOST_PP_REPEAT_1_201(m, d) m(2, 201, d)
1177.257 -# define BOOST_PP_REPEAT_1_203(m, d) BOOST_PP_REPEAT_1_202(m, d) m(2, 202, d)
1177.258 -# define BOOST_PP_REPEAT_1_204(m, d) BOOST_PP_REPEAT_1_203(m, d) m(2, 203, d)
1177.259 -# define BOOST_PP_REPEAT_1_205(m, d) BOOST_PP_REPEAT_1_204(m, d) m(2, 204, d)
1177.260 -# define BOOST_PP_REPEAT_1_206(m, d) BOOST_PP_REPEAT_1_205(m, d) m(2, 205, d)
1177.261 -# define BOOST_PP_REPEAT_1_207(m, d) BOOST_PP_REPEAT_1_206(m, d) m(2, 206, d)
1177.262 -# define BOOST_PP_REPEAT_1_208(m, d) BOOST_PP_REPEAT_1_207(m, d) m(2, 207, d)
1177.263 -# define BOOST_PP_REPEAT_1_209(m, d) BOOST_PP_REPEAT_1_208(m, d) m(2, 208, d)
1177.264 -# define BOOST_PP_REPEAT_1_210(m, d) BOOST_PP_REPEAT_1_209(m, d) m(2, 209, d)
1177.265 -# define BOOST_PP_REPEAT_1_211(m, d) BOOST_PP_REPEAT_1_210(m, d) m(2, 210, d)
1177.266 -# define BOOST_PP_REPEAT_1_212(m, d) BOOST_PP_REPEAT_1_211(m, d) m(2, 211, d)
1177.267 -# define BOOST_PP_REPEAT_1_213(m, d) BOOST_PP_REPEAT_1_212(m, d) m(2, 212, d)
1177.268 -# define BOOST_PP_REPEAT_1_214(m, d) BOOST_PP_REPEAT_1_213(m, d) m(2, 213, d)
1177.269 -# define BOOST_PP_REPEAT_1_215(m, d) BOOST_PP_REPEAT_1_214(m, d) m(2, 214, d)
1177.270 -# define BOOST_PP_REPEAT_1_216(m, d) BOOST_PP_REPEAT_1_215(m, d) m(2, 215, d)
1177.271 -# define BOOST_PP_REPEAT_1_217(m, d) BOOST_PP_REPEAT_1_216(m, d) m(2, 216, d)
1177.272 -# define BOOST_PP_REPEAT_1_218(m, d) BOOST_PP_REPEAT_1_217(m, d) m(2, 217, d)
1177.273 -# define BOOST_PP_REPEAT_1_219(m, d) BOOST_PP_REPEAT_1_218(m, d) m(2, 218, d)
1177.274 -# define BOOST_PP_REPEAT_1_220(m, d) BOOST_PP_REPEAT_1_219(m, d) m(2, 219, d)
1177.275 -# define BOOST_PP_REPEAT_1_221(m, d) BOOST_PP_REPEAT_1_220(m, d) m(2, 220, d)
1177.276 -# define BOOST_PP_REPEAT_1_222(m, d) BOOST_PP_REPEAT_1_221(m, d) m(2, 221, d)
1177.277 -# define BOOST_PP_REPEAT_1_223(m, d) BOOST_PP_REPEAT_1_222(m, d) m(2, 222, d)
1177.278 -# define BOOST_PP_REPEAT_1_224(m, d) BOOST_PP_REPEAT_1_223(m, d) m(2, 223, d)
1177.279 -# define BOOST_PP_REPEAT_1_225(m, d) BOOST_PP_REPEAT_1_224(m, d) m(2, 224, d)
1177.280 -# define BOOST_PP_REPEAT_1_226(m, d) BOOST_PP_REPEAT_1_225(m, d) m(2, 225, d)
1177.281 -# define BOOST_PP_REPEAT_1_227(m, d) BOOST_PP_REPEAT_1_226(m, d) m(2, 226, d)
1177.282 -# define BOOST_PP_REPEAT_1_228(m, d) BOOST_PP_REPEAT_1_227(m, d) m(2, 227, d)
1177.283 -# define BOOST_PP_REPEAT_1_229(m, d) BOOST_PP_REPEAT_1_228(m, d) m(2, 228, d)
1177.284 -# define BOOST_PP_REPEAT_1_230(m, d) BOOST_PP_REPEAT_1_229(m, d) m(2, 229, d)
1177.285 -# define BOOST_PP_REPEAT_1_231(m, d) BOOST_PP_REPEAT_1_230(m, d) m(2, 230, d)
1177.286 -# define BOOST_PP_REPEAT_1_232(m, d) BOOST_PP_REPEAT_1_231(m, d) m(2, 231, d)
1177.287 -# define BOOST_PP_REPEAT_1_233(m, d) BOOST_PP_REPEAT_1_232(m, d) m(2, 232, d)
1177.288 -# define BOOST_PP_REPEAT_1_234(m, d) BOOST_PP_REPEAT_1_233(m, d) m(2, 233, d)
1177.289 -# define BOOST_PP_REPEAT_1_235(m, d) BOOST_PP_REPEAT_1_234(m, d) m(2, 234, d)
1177.290 -# define BOOST_PP_REPEAT_1_236(m, d) BOOST_PP_REPEAT_1_235(m, d) m(2, 235, d)
1177.291 -# define BOOST_PP_REPEAT_1_237(m, d) BOOST_PP_REPEAT_1_236(m, d) m(2, 236, d)
1177.292 -# define BOOST_PP_REPEAT_1_238(m, d) BOOST_PP_REPEAT_1_237(m, d) m(2, 237, d)
1177.293 -# define BOOST_PP_REPEAT_1_239(m, d) BOOST_PP_REPEAT_1_238(m, d) m(2, 238, d)
1177.294 -# define BOOST_PP_REPEAT_1_240(m, d) BOOST_PP_REPEAT_1_239(m, d) m(2, 239, d)
1177.295 -# define BOOST_PP_REPEAT_1_241(m, d) BOOST_PP_REPEAT_1_240(m, d) m(2, 240, d)
1177.296 -# define BOOST_PP_REPEAT_1_242(m, d) BOOST_PP_REPEAT_1_241(m, d) m(2, 241, d)
1177.297 -# define BOOST_PP_REPEAT_1_243(m, d) BOOST_PP_REPEAT_1_242(m, d) m(2, 242, d)
1177.298 -# define BOOST_PP_REPEAT_1_244(m, d) BOOST_PP_REPEAT_1_243(m, d) m(2, 243, d)
1177.299 -# define BOOST_PP_REPEAT_1_245(m, d) BOOST_PP_REPEAT_1_244(m, d) m(2, 244, d)
1177.300 -# define BOOST_PP_REPEAT_1_246(m, d) BOOST_PP_REPEAT_1_245(m, d) m(2, 245, d)
1177.301 -# define BOOST_PP_REPEAT_1_247(m, d) BOOST_PP_REPEAT_1_246(m, d) m(2, 246, d)
1177.302 -# define BOOST_PP_REPEAT_1_248(m, d) BOOST_PP_REPEAT_1_247(m, d) m(2, 247, d)
1177.303 -# define BOOST_PP_REPEAT_1_249(m, d) BOOST_PP_REPEAT_1_248(m, d) m(2, 248, d)
1177.304 -# define BOOST_PP_REPEAT_1_250(m, d) BOOST_PP_REPEAT_1_249(m, d) m(2, 249, d)
1177.305 -# define BOOST_PP_REPEAT_1_251(m, d) BOOST_PP_REPEAT_1_250(m, d) m(2, 250, d)
1177.306 -# define BOOST_PP_REPEAT_1_252(m, d) BOOST_PP_REPEAT_1_251(m, d) m(2, 251, d)
1177.307 -# define BOOST_PP_REPEAT_1_253(m, d) BOOST_PP_REPEAT_1_252(m, d) m(2, 252, d)
1177.308 -# define BOOST_PP_REPEAT_1_254(m, d) BOOST_PP_REPEAT_1_253(m, d) m(2, 253, d)
1177.309 -# define BOOST_PP_REPEAT_1_255(m, d) BOOST_PP_REPEAT_1_254(m, d) m(2, 254, d)
1177.310 -# define BOOST_PP_REPEAT_1_256(m, d) BOOST_PP_REPEAT_1_255(m, d) m(2, 255, d)
1177.311 -#
1177.312 -# define BOOST_PP_REPEAT_2_0(m, d)
1177.313 -# define BOOST_PP_REPEAT_2_1(m, d) m(3, 0, d)
1177.314 -# define BOOST_PP_REPEAT_2_2(m, d) BOOST_PP_REPEAT_2_1(m, d) m(3, 1, d)
1177.315 -# define BOOST_PP_REPEAT_2_3(m, d) BOOST_PP_REPEAT_2_2(m, d) m(3, 2, d)
1177.316 -# define BOOST_PP_REPEAT_2_4(m, d) BOOST_PP_REPEAT_2_3(m, d) m(3, 3, d)
1177.317 -# define BOOST_PP_REPEAT_2_5(m, d) BOOST_PP_REPEAT_2_4(m, d) m(3, 4, d)
1177.318 -# define BOOST_PP_REPEAT_2_6(m, d) BOOST_PP_REPEAT_2_5(m, d) m(3, 5, d)
1177.319 -# define BOOST_PP_REPEAT_2_7(m, d) BOOST_PP_REPEAT_2_6(m, d) m(3, 6, d)
1177.320 -# define BOOST_PP_REPEAT_2_8(m, d) BOOST_PP_REPEAT_2_7(m, d) m(3, 7, d)
1177.321 -# define BOOST_PP_REPEAT_2_9(m, d) BOOST_PP_REPEAT_2_8(m, d) m(3, 8, d)
1177.322 -# define BOOST_PP_REPEAT_2_10(m, d) BOOST_PP_REPEAT_2_9(m, d) m(3, 9, d)
1177.323 -# define BOOST_PP_REPEAT_2_11(m, d) BOOST_PP_REPEAT_2_10(m, d) m(3, 10, d)
1177.324 -# define BOOST_PP_REPEAT_2_12(m, d) BOOST_PP_REPEAT_2_11(m, d) m(3, 11, d)
1177.325 -# define BOOST_PP_REPEAT_2_13(m, d) BOOST_PP_REPEAT_2_12(m, d) m(3, 12, d)
1177.326 -# define BOOST_PP_REPEAT_2_14(m, d) BOOST_PP_REPEAT_2_13(m, d) m(3, 13, d)
1177.327 -# define BOOST_PP_REPEAT_2_15(m, d) BOOST_PP_REPEAT_2_14(m, d) m(3, 14, d)
1177.328 -# define BOOST_PP_REPEAT_2_16(m, d) BOOST_PP_REPEAT_2_15(m, d) m(3, 15, d)
1177.329 -# define BOOST_PP_REPEAT_2_17(m, d) BOOST_PP_REPEAT_2_16(m, d) m(3, 16, d)
1177.330 -# define BOOST_PP_REPEAT_2_18(m, d) BOOST_PP_REPEAT_2_17(m, d) m(3, 17, d)
1177.331 -# define BOOST_PP_REPEAT_2_19(m, d) BOOST_PP_REPEAT_2_18(m, d) m(3, 18, d)
1177.332 -# define BOOST_PP_REPEAT_2_20(m, d) BOOST_PP_REPEAT_2_19(m, d) m(3, 19, d)
1177.333 -# define BOOST_PP_REPEAT_2_21(m, d) BOOST_PP_REPEAT_2_20(m, d) m(3, 20, d)
1177.334 -# define BOOST_PP_REPEAT_2_22(m, d) BOOST_PP_REPEAT_2_21(m, d) m(3, 21, d)
1177.335 -# define BOOST_PP_REPEAT_2_23(m, d) BOOST_PP_REPEAT_2_22(m, d) m(3, 22, d)
1177.336 -# define BOOST_PP_REPEAT_2_24(m, d) BOOST_PP_REPEAT_2_23(m, d) m(3, 23, d)
1177.337 -# define BOOST_PP_REPEAT_2_25(m, d) BOOST_PP_REPEAT_2_24(m, d) m(3, 24, d)
1177.338 -# define BOOST_PP_REPEAT_2_26(m, d) BOOST_PP_REPEAT_2_25(m, d) m(3, 25, d)
1177.339 -# define BOOST_PP_REPEAT_2_27(m, d) BOOST_PP_REPEAT_2_26(m, d) m(3, 26, d)
1177.340 -# define BOOST_PP_REPEAT_2_28(m, d) BOOST_PP_REPEAT_2_27(m, d) m(3, 27, d)
1177.341 -# define BOOST_PP_REPEAT_2_29(m, d) BOOST_PP_REPEAT_2_28(m, d) m(3, 28, d)
1177.342 -# define BOOST_PP_REPEAT_2_30(m, d) BOOST_PP_REPEAT_2_29(m, d) m(3, 29, d)
1177.343 -# define BOOST_PP_REPEAT_2_31(m, d) BOOST_PP_REPEAT_2_30(m, d) m(3, 30, d)
1177.344 -# define BOOST_PP_REPEAT_2_32(m, d) BOOST_PP_REPEAT_2_31(m, d) m(3, 31, d)
1177.345 -# define BOOST_PP_REPEAT_2_33(m, d) BOOST_PP_REPEAT_2_32(m, d) m(3, 32, d)
1177.346 -# define BOOST_PP_REPEAT_2_34(m, d) BOOST_PP_REPEAT_2_33(m, d) m(3, 33, d)
1177.347 -# define BOOST_PP_REPEAT_2_35(m, d) BOOST_PP_REPEAT_2_34(m, d) m(3, 34, d)
1177.348 -# define BOOST_PP_REPEAT_2_36(m, d) BOOST_PP_REPEAT_2_35(m, d) m(3, 35, d)
1177.349 -# define BOOST_PP_REPEAT_2_37(m, d) BOOST_PP_REPEAT_2_36(m, d) m(3, 36, d)
1177.350 -# define BOOST_PP_REPEAT_2_38(m, d) BOOST_PP_REPEAT_2_37(m, d) m(3, 37, d)
1177.351 -# define BOOST_PP_REPEAT_2_39(m, d) BOOST_PP_REPEAT_2_38(m, d) m(3, 38, d)
1177.352 -# define BOOST_PP_REPEAT_2_40(m, d) BOOST_PP_REPEAT_2_39(m, d) m(3, 39, d)
1177.353 -# define BOOST_PP_REPEAT_2_41(m, d) BOOST_PP_REPEAT_2_40(m, d) m(3, 40, d)
1177.354 -# define BOOST_PP_REPEAT_2_42(m, d) BOOST_PP_REPEAT_2_41(m, d) m(3, 41, d)
1177.355 -# define BOOST_PP_REPEAT_2_43(m, d) BOOST_PP_REPEAT_2_42(m, d) m(3, 42, d)
1177.356 -# define BOOST_PP_REPEAT_2_44(m, d) BOOST_PP_REPEAT_2_43(m, d) m(3, 43, d)
1177.357 -# define BOOST_PP_REPEAT_2_45(m, d) BOOST_PP_REPEAT_2_44(m, d) m(3, 44, d)
1177.358 -# define BOOST_PP_REPEAT_2_46(m, d) BOOST_PP_REPEAT_2_45(m, d) m(3, 45, d)
1177.359 -# define BOOST_PP_REPEAT_2_47(m, d) BOOST_PP_REPEAT_2_46(m, d) m(3, 46, d)
1177.360 -# define BOOST_PP_REPEAT_2_48(m, d) BOOST_PP_REPEAT_2_47(m, d) m(3, 47, d)
1177.361 -# define BOOST_PP_REPEAT_2_49(m, d) BOOST_PP_REPEAT_2_48(m, d) m(3, 48, d)
1177.362 -# define BOOST_PP_REPEAT_2_50(m, d) BOOST_PP_REPEAT_2_49(m, d) m(3, 49, d)
1177.363 -# define BOOST_PP_REPEAT_2_51(m, d) BOOST_PP_REPEAT_2_50(m, d) m(3, 50, d)
1177.364 -# define BOOST_PP_REPEAT_2_52(m, d) BOOST_PP_REPEAT_2_51(m, d) m(3, 51, d)
1177.365 -# define BOOST_PP_REPEAT_2_53(m, d) BOOST_PP_REPEAT_2_52(m, d) m(3, 52, d)
1177.366 -# define BOOST_PP_REPEAT_2_54(m, d) BOOST_PP_REPEAT_2_53(m, d) m(3, 53, d)
1177.367 -# define BOOST_PP_REPEAT_2_55(m, d) BOOST_PP_REPEAT_2_54(m, d) m(3, 54, d)
1177.368 -# define BOOST_PP_REPEAT_2_56(m, d) BOOST_PP_REPEAT_2_55(m, d) m(3, 55, d)
1177.369 -# define BOOST_PP_REPEAT_2_57(m, d) BOOST_PP_REPEAT_2_56(m, d) m(3, 56, d)
1177.370 -# define BOOST_PP_REPEAT_2_58(m, d) BOOST_PP_REPEAT_2_57(m, d) m(3, 57, d)
1177.371 -# define BOOST_PP_REPEAT_2_59(m, d) BOOST_PP_REPEAT_2_58(m, d) m(3, 58, d)
1177.372 -# define BOOST_PP_REPEAT_2_60(m, d) BOOST_PP_REPEAT_2_59(m, d) m(3, 59, d)
1177.373 -# define BOOST_PP_REPEAT_2_61(m, d) BOOST_PP_REPEAT_2_60(m, d) m(3, 60, d)
1177.374 -# define BOOST_PP_REPEAT_2_62(m, d) BOOST_PP_REPEAT_2_61(m, d) m(3, 61, d)
1177.375 -# define BOOST_PP_REPEAT_2_63(m, d) BOOST_PP_REPEAT_2_62(m, d) m(3, 62, d)
1177.376 -# define BOOST_PP_REPEAT_2_64(m, d) BOOST_PP_REPEAT_2_63(m, d) m(3, 63, d)
1177.377 -# define BOOST_PP_REPEAT_2_65(m, d) BOOST_PP_REPEAT_2_64(m, d) m(3, 64, d)
1177.378 -# define BOOST_PP_REPEAT_2_66(m, d) BOOST_PP_REPEAT_2_65(m, d) m(3, 65, d)
1177.379 -# define BOOST_PP_REPEAT_2_67(m, d) BOOST_PP_REPEAT_2_66(m, d) m(3, 66, d)
1177.380 -# define BOOST_PP_REPEAT_2_68(m, d) BOOST_PP_REPEAT_2_67(m, d) m(3, 67, d)
1177.381 -# define BOOST_PP_REPEAT_2_69(m, d) BOOST_PP_REPEAT_2_68(m, d) m(3, 68, d)
1177.382 -# define BOOST_PP_REPEAT_2_70(m, d) BOOST_PP_REPEAT_2_69(m, d) m(3, 69, d)
1177.383 -# define BOOST_PP_REPEAT_2_71(m, d) BOOST_PP_REPEAT_2_70(m, d) m(3, 70, d)
1177.384 -# define BOOST_PP_REPEAT_2_72(m, d) BOOST_PP_REPEAT_2_71(m, d) m(3, 71, d)
1177.385 -# define BOOST_PP_REPEAT_2_73(m, d) BOOST_PP_REPEAT_2_72(m, d) m(3, 72, d)
1177.386 -# define BOOST_PP_REPEAT_2_74(m, d) BOOST_PP_REPEAT_2_73(m, d) m(3, 73, d)
1177.387 -# define BOOST_PP_REPEAT_2_75(m, d) BOOST_PP_REPEAT_2_74(m, d) m(3, 74, d)
1177.388 -# define BOOST_PP_REPEAT_2_76(m, d) BOOST_PP_REPEAT_2_75(m, d) m(3, 75, d)
1177.389 -# define BOOST_PP_REPEAT_2_77(m, d) BOOST_PP_REPEAT_2_76(m, d) m(3, 76, d)
1177.390 -# define BOOST_PP_REPEAT_2_78(m, d) BOOST_PP_REPEAT_2_77(m, d) m(3, 77, d)
1177.391 -# define BOOST_PP_REPEAT_2_79(m, d) BOOST_PP_REPEAT_2_78(m, d) m(3, 78, d)
1177.392 -# define BOOST_PP_REPEAT_2_80(m, d) BOOST_PP_REPEAT_2_79(m, d) m(3, 79, d)
1177.393 -# define BOOST_PP_REPEAT_2_81(m, d) BOOST_PP_REPEAT_2_80(m, d) m(3, 80, d)
1177.394 -# define BOOST_PP_REPEAT_2_82(m, d) BOOST_PP_REPEAT_2_81(m, d) m(3, 81, d)
1177.395 -# define BOOST_PP_REPEAT_2_83(m, d) BOOST_PP_REPEAT_2_82(m, d) m(3, 82, d)
1177.396 -# define BOOST_PP_REPEAT_2_84(m, d) BOOST_PP_REPEAT_2_83(m, d) m(3, 83, d)
1177.397 -# define BOOST_PP_REPEAT_2_85(m, d) BOOST_PP_REPEAT_2_84(m, d) m(3, 84, d)
1177.398 -# define BOOST_PP_REPEAT_2_86(m, d) BOOST_PP_REPEAT_2_85(m, d) m(3, 85, d)
1177.399 -# define BOOST_PP_REPEAT_2_87(m, d) BOOST_PP_REPEAT_2_86(m, d) m(3, 86, d)
1177.400 -# define BOOST_PP_REPEAT_2_88(m, d) BOOST_PP_REPEAT_2_87(m, d) m(3, 87, d)
1177.401 -# define BOOST_PP_REPEAT_2_89(m, d) BOOST_PP_REPEAT_2_88(m, d) m(3, 88, d)
1177.402 -# define BOOST_PP_REPEAT_2_90(m, d) BOOST_PP_REPEAT_2_89(m, d) m(3, 89, d)
1177.403 -# define BOOST_PP_REPEAT_2_91(m, d) BOOST_PP_REPEAT_2_90(m, d) m(3, 90, d)
1177.404 -# define BOOST_PP_REPEAT_2_92(m, d) BOOST_PP_REPEAT_2_91(m, d) m(3, 91, d)
1177.405 -# define BOOST_PP_REPEAT_2_93(m, d) BOOST_PP_REPEAT_2_92(m, d) m(3, 92, d)
1177.406 -# define BOOST_PP_REPEAT_2_94(m, d) BOOST_PP_REPEAT_2_93(m, d) m(3, 93, d)
1177.407 -# define BOOST_PP_REPEAT_2_95(m, d) BOOST_PP_REPEAT_2_94(m, d) m(3, 94, d)
1177.408 -# define BOOST_PP_REPEAT_2_96(m, d) BOOST_PP_REPEAT_2_95(m, d) m(3, 95, d)
1177.409 -# define BOOST_PP_REPEAT_2_97(m, d) BOOST_PP_REPEAT_2_96(m, d) m(3, 96, d)
1177.410 -# define BOOST_PP_REPEAT_2_98(m, d) BOOST_PP_REPEAT_2_97(m, d) m(3, 97, d)
1177.411 -# define BOOST_PP_REPEAT_2_99(m, d) BOOST_PP_REPEAT_2_98(m, d) m(3, 98, d)
1177.412 -# define BOOST_PP_REPEAT_2_100(m, d) BOOST_PP_REPEAT_2_99(m, d) m(3, 99, d)
1177.413 -# define BOOST_PP_REPEAT_2_101(m, d) BOOST_PP_REPEAT_2_100(m, d) m(3, 100, d)
1177.414 -# define BOOST_PP_REPEAT_2_102(m, d) BOOST_PP_REPEAT_2_101(m, d) m(3, 101, d)
1177.415 -# define BOOST_PP_REPEAT_2_103(m, d) BOOST_PP_REPEAT_2_102(m, d) m(3, 102, d)
1177.416 -# define BOOST_PP_REPEAT_2_104(m, d) BOOST_PP_REPEAT_2_103(m, d) m(3, 103, d)
1177.417 -# define BOOST_PP_REPEAT_2_105(m, d) BOOST_PP_REPEAT_2_104(m, d) m(3, 104, d)
1177.418 -# define BOOST_PP_REPEAT_2_106(m, d) BOOST_PP_REPEAT_2_105(m, d) m(3, 105, d)
1177.419 -# define BOOST_PP_REPEAT_2_107(m, d) BOOST_PP_REPEAT_2_106(m, d) m(3, 106, d)
1177.420 -# define BOOST_PP_REPEAT_2_108(m, d) BOOST_PP_REPEAT_2_107(m, d) m(3, 107, d)
1177.421 -# define BOOST_PP_REPEAT_2_109(m, d) BOOST_PP_REPEAT_2_108(m, d) m(3, 108, d)
1177.422 -# define BOOST_PP_REPEAT_2_110(m, d) BOOST_PP_REPEAT_2_109(m, d) m(3, 109, d)
1177.423 -# define BOOST_PP_REPEAT_2_111(m, d) BOOST_PP_REPEAT_2_110(m, d) m(3, 110, d)
1177.424 -# define BOOST_PP_REPEAT_2_112(m, d) BOOST_PP_REPEAT_2_111(m, d) m(3, 111, d)
1177.425 -# define BOOST_PP_REPEAT_2_113(m, d) BOOST_PP_REPEAT_2_112(m, d) m(3, 112, d)
1177.426 -# define BOOST_PP_REPEAT_2_114(m, d) BOOST_PP_REPEAT_2_113(m, d) m(3, 113, d)
1177.427 -# define BOOST_PP_REPEAT_2_115(m, d) BOOST_PP_REPEAT_2_114(m, d) m(3, 114, d)
1177.428 -# define BOOST_PP_REPEAT_2_116(m, d) BOOST_PP_REPEAT_2_115(m, d) m(3, 115, d)
1177.429 -# define BOOST_PP_REPEAT_2_117(m, d) BOOST_PP_REPEAT_2_116(m, d) m(3, 116, d)
1177.430 -# define BOOST_PP_REPEAT_2_118(m, d) BOOST_PP_REPEAT_2_117(m, d) m(3, 117, d)
1177.431 -# define BOOST_PP_REPEAT_2_119(m, d) BOOST_PP_REPEAT_2_118(m, d) m(3, 118, d)
1177.432 -# define BOOST_PP_REPEAT_2_120(m, d) BOOST_PP_REPEAT_2_119(m, d) m(3, 119, d)
1177.433 -# define BOOST_PP_REPEAT_2_121(m, d) BOOST_PP_REPEAT_2_120(m, d) m(3, 120, d)
1177.434 -# define BOOST_PP_REPEAT_2_122(m, d) BOOST_PP_REPEAT_2_121(m, d) m(3, 121, d)
1177.435 -# define BOOST_PP_REPEAT_2_123(m, d) BOOST_PP_REPEAT_2_122(m, d) m(3, 122, d)
1177.436 -# define BOOST_PP_REPEAT_2_124(m, d) BOOST_PP_REPEAT_2_123(m, d) m(3, 123, d)
1177.437 -# define BOOST_PP_REPEAT_2_125(m, d) BOOST_PP_REPEAT_2_124(m, d) m(3, 124, d)
1177.438 -# define BOOST_PP_REPEAT_2_126(m, d) BOOST_PP_REPEAT_2_125(m, d) m(3, 125, d)
1177.439 -# define BOOST_PP_REPEAT_2_127(m, d) BOOST_PP_REPEAT_2_126(m, d) m(3, 126, d)
1177.440 -# define BOOST_PP_REPEAT_2_128(m, d) BOOST_PP_REPEAT_2_127(m, d) m(3, 127, d)
1177.441 -# define BOOST_PP_REPEAT_2_129(m, d) BOOST_PP_REPEAT_2_128(m, d) m(3, 128, d)
1177.442 -# define BOOST_PP_REPEAT_2_130(m, d) BOOST_PP_REPEAT_2_129(m, d) m(3, 129, d)
1177.443 -# define BOOST_PP_REPEAT_2_131(m, d) BOOST_PP_REPEAT_2_130(m, d) m(3, 130, d)
1177.444 -# define BOOST_PP_REPEAT_2_132(m, d) BOOST_PP_REPEAT_2_131(m, d) m(3, 131, d)
1177.445 -# define BOOST_PP_REPEAT_2_133(m, d) BOOST_PP_REPEAT_2_132(m, d) m(3, 132, d)
1177.446 -# define BOOST_PP_REPEAT_2_134(m, d) BOOST_PP_REPEAT_2_133(m, d) m(3, 133, d)
1177.447 -# define BOOST_PP_REPEAT_2_135(m, d) BOOST_PP_REPEAT_2_134(m, d) m(3, 134, d)
1177.448 -# define BOOST_PP_REPEAT_2_136(m, d) BOOST_PP_REPEAT_2_135(m, d) m(3, 135, d)
1177.449 -# define BOOST_PP_REPEAT_2_137(m, d) BOOST_PP_REPEAT_2_136(m, d) m(3, 136, d)
1177.450 -# define BOOST_PP_REPEAT_2_138(m, d) BOOST_PP_REPEAT_2_137(m, d) m(3, 137, d)
1177.451 -# define BOOST_PP_REPEAT_2_139(m, d) BOOST_PP_REPEAT_2_138(m, d) m(3, 138, d)
1177.452 -# define BOOST_PP_REPEAT_2_140(m, d) BOOST_PP_REPEAT_2_139(m, d) m(3, 139, d)
1177.453 -# define BOOST_PP_REPEAT_2_141(m, d) BOOST_PP_REPEAT_2_140(m, d) m(3, 140, d)
1177.454 -# define BOOST_PP_REPEAT_2_142(m, d) BOOST_PP_REPEAT_2_141(m, d) m(3, 141, d)
1177.455 -# define BOOST_PP_REPEAT_2_143(m, d) BOOST_PP_REPEAT_2_142(m, d) m(3, 142, d)
1177.456 -# define BOOST_PP_REPEAT_2_144(m, d) BOOST_PP_REPEAT_2_143(m, d) m(3, 143, d)
1177.457 -# define BOOST_PP_REPEAT_2_145(m, d) BOOST_PP_REPEAT_2_144(m, d) m(3, 144, d)
1177.458 -# define BOOST_PP_REPEAT_2_146(m, d) BOOST_PP_REPEAT_2_145(m, d) m(3, 145, d)
1177.459 -# define BOOST_PP_REPEAT_2_147(m, d) BOOST_PP_REPEAT_2_146(m, d) m(3, 146, d)
1177.460 -# define BOOST_PP_REPEAT_2_148(m, d) BOOST_PP_REPEAT_2_147(m, d) m(3, 147, d)
1177.461 -# define BOOST_PP_REPEAT_2_149(m, d) BOOST_PP_REPEAT_2_148(m, d) m(3, 148, d)
1177.462 -# define BOOST_PP_REPEAT_2_150(m, d) BOOST_PP_REPEAT_2_149(m, d) m(3, 149, d)
1177.463 -# define BOOST_PP_REPEAT_2_151(m, d) BOOST_PP_REPEAT_2_150(m, d) m(3, 150, d)
1177.464 -# define BOOST_PP_REPEAT_2_152(m, d) BOOST_PP_REPEAT_2_151(m, d) m(3, 151, d)
1177.465 -# define BOOST_PP_REPEAT_2_153(m, d) BOOST_PP_REPEAT_2_152(m, d) m(3, 152, d)
1177.466 -# define BOOST_PP_REPEAT_2_154(m, d) BOOST_PP_REPEAT_2_153(m, d) m(3, 153, d)
1177.467 -# define BOOST_PP_REPEAT_2_155(m, d) BOOST_PP_REPEAT_2_154(m, d) m(3, 154, d)
1177.468 -# define BOOST_PP_REPEAT_2_156(m, d) BOOST_PP_REPEAT_2_155(m, d) m(3, 155, d)
1177.469 -# define BOOST_PP_REPEAT_2_157(m, d) BOOST_PP_REPEAT_2_156(m, d) m(3, 156, d)
1177.470 -# define BOOST_PP_REPEAT_2_158(m, d) BOOST_PP_REPEAT_2_157(m, d) m(3, 157, d)
1177.471 -# define BOOST_PP_REPEAT_2_159(m, d) BOOST_PP_REPEAT_2_158(m, d) m(3, 158, d)
1177.472 -# define BOOST_PP_REPEAT_2_160(m, d) BOOST_PP_REPEAT_2_159(m, d) m(3, 159, d)
1177.473 -# define BOOST_PP_REPEAT_2_161(m, d) BOOST_PP_REPEAT_2_160(m, d) m(3, 160, d)
1177.474 -# define BOOST_PP_REPEAT_2_162(m, d) BOOST_PP_REPEAT_2_161(m, d) m(3, 161, d)
1177.475 -# define BOOST_PP_REPEAT_2_163(m, d) BOOST_PP_REPEAT_2_162(m, d) m(3, 162, d)
1177.476 -# define BOOST_PP_REPEAT_2_164(m, d) BOOST_PP_REPEAT_2_163(m, d) m(3, 163, d)
1177.477 -# define BOOST_PP_REPEAT_2_165(m, d) BOOST_PP_REPEAT_2_164(m, d) m(3, 164, d)
1177.478 -# define BOOST_PP_REPEAT_2_166(m, d) BOOST_PP_REPEAT_2_165(m, d) m(3, 165, d)
1177.479 -# define BOOST_PP_REPEAT_2_167(m, d) BOOST_PP_REPEAT_2_166(m, d) m(3, 166, d)
1177.480 -# define BOOST_PP_REPEAT_2_168(m, d) BOOST_PP_REPEAT_2_167(m, d) m(3, 167, d)
1177.481 -# define BOOST_PP_REPEAT_2_169(m, d) BOOST_PP_REPEAT_2_168(m, d) m(3, 168, d)
1177.482 -# define BOOST_PP_REPEAT_2_170(m, d) BOOST_PP_REPEAT_2_169(m, d) m(3, 169, d)
1177.483 -# define BOOST_PP_REPEAT_2_171(m, d) BOOST_PP_REPEAT_2_170(m, d) m(3, 170, d)
1177.484 -# define BOOST_PP_REPEAT_2_172(m, d) BOOST_PP_REPEAT_2_171(m, d) m(3, 171, d)
1177.485 -# define BOOST_PP_REPEAT_2_173(m, d) BOOST_PP_REPEAT_2_172(m, d) m(3, 172, d)
1177.486 -# define BOOST_PP_REPEAT_2_174(m, d) BOOST_PP_REPEAT_2_173(m, d) m(3, 173, d)
1177.487 -# define BOOST_PP_REPEAT_2_175(m, d) BOOST_PP_REPEAT_2_174(m, d) m(3, 174, d)
1177.488 -# define BOOST_PP_REPEAT_2_176(m, d) BOOST_PP_REPEAT_2_175(m, d) m(3, 175, d)
1177.489 -# define BOOST_PP_REPEAT_2_177(m, d) BOOST_PP_REPEAT_2_176(m, d) m(3, 176, d)
1177.490 -# define BOOST_PP_REPEAT_2_178(m, d) BOOST_PP_REPEAT_2_177(m, d) m(3, 177, d)
1177.491 -# define BOOST_PP_REPEAT_2_179(m, d) BOOST_PP_REPEAT_2_178(m, d) m(3, 178, d)
1177.492 -# define BOOST_PP_REPEAT_2_180(m, d) BOOST_PP_REPEAT_2_179(m, d) m(3, 179, d)
1177.493 -# define BOOST_PP_REPEAT_2_181(m, d) BOOST_PP_REPEAT_2_180(m, d) m(3, 180, d)
1177.494 -# define BOOST_PP_REPEAT_2_182(m, d) BOOST_PP_REPEAT_2_181(m, d) m(3, 181, d)
1177.495 -# define BOOST_PP_REPEAT_2_183(m, d) BOOST_PP_REPEAT_2_182(m, d) m(3, 182, d)
1177.496 -# define BOOST_PP_REPEAT_2_184(m, d) BOOST_PP_REPEAT_2_183(m, d) m(3, 183, d)
1177.497 -# define BOOST_PP_REPEAT_2_185(m, d) BOOST_PP_REPEAT_2_184(m, d) m(3, 184, d)
1177.498 -# define BOOST_PP_REPEAT_2_186(m, d) BOOST_PP_REPEAT_2_185(m, d) m(3, 185, d)
1177.499 -# define BOOST_PP_REPEAT_2_187(m, d) BOOST_PP_REPEAT_2_186(m, d) m(3, 186, d)
1177.500 -# define BOOST_PP_REPEAT_2_188(m, d) BOOST_PP_REPEAT_2_187(m, d) m(3, 187, d)
1177.501 -# define BOOST_PP_REPEAT_2_189(m, d) BOOST_PP_REPEAT_2_188(m, d) m(3, 188, d)
1177.502 -# define BOOST_PP_REPEAT_2_190(m, d) BOOST_PP_REPEAT_2_189(m, d) m(3, 189, d)
1177.503 -# define BOOST_PP_REPEAT_2_191(m, d) BOOST_PP_REPEAT_2_190(m, d) m(3, 190, d)
1177.504 -# define BOOST_PP_REPEAT_2_192(m, d) BOOST_PP_REPEAT_2_191(m, d) m(3, 191, d)
1177.505 -# define BOOST_PP_REPEAT_2_193(m, d) BOOST_PP_REPEAT_2_192(m, d) m(3, 192, d)
1177.506 -# define BOOST_PP_REPEAT_2_194(m, d) BOOST_PP_REPEAT_2_193(m, d) m(3, 193, d)
1177.507 -# define BOOST_PP_REPEAT_2_195(m, d) BOOST_PP_REPEAT_2_194(m, d) m(3, 194, d)
1177.508 -# define BOOST_PP_REPEAT_2_196(m, d) BOOST_PP_REPEAT_2_195(m, d) m(3, 195, d)
1177.509 -# define BOOST_PP_REPEAT_2_197(m, d) BOOST_PP_REPEAT_2_196(m, d) m(3, 196, d)
1177.510 -# define BOOST_PP_REPEAT_2_198(m, d) BOOST_PP_REPEAT_2_197(m, d) m(3, 197, d)
1177.511 -# define BOOST_PP_REPEAT_2_199(m, d) BOOST_PP_REPEAT_2_198(m, d) m(3, 198, d)
1177.512 -# define BOOST_PP_REPEAT_2_200(m, d) BOOST_PP_REPEAT_2_199(m, d) m(3, 199, d)
1177.513 -# define BOOST_PP_REPEAT_2_201(m, d) BOOST_PP_REPEAT_2_200(m, d) m(3, 200, d)
1177.514 -# define BOOST_PP_REPEAT_2_202(m, d) BOOST_PP_REPEAT_2_201(m, d) m(3, 201, d)
1177.515 -# define BOOST_PP_REPEAT_2_203(m, d) BOOST_PP_REPEAT_2_202(m, d) m(3, 202, d)
1177.516 -# define BOOST_PP_REPEAT_2_204(m, d) BOOST_PP_REPEAT_2_203(m, d) m(3, 203, d)
1177.517 -# define BOOST_PP_REPEAT_2_205(m, d) BOOST_PP_REPEAT_2_204(m, d) m(3, 204, d)
1177.518 -# define BOOST_PP_REPEAT_2_206(m, d) BOOST_PP_REPEAT_2_205(m, d) m(3, 205, d)
1177.519 -# define BOOST_PP_REPEAT_2_207(m, d) BOOST_PP_REPEAT_2_206(m, d) m(3, 206, d)
1177.520 -# define BOOST_PP_REPEAT_2_208(m, d) BOOST_PP_REPEAT_2_207(m, d) m(3, 207, d)
1177.521 -# define BOOST_PP_REPEAT_2_209(m, d) BOOST_PP_REPEAT_2_208(m, d) m(3, 208, d)
1177.522 -# define BOOST_PP_REPEAT_2_210(m, d) BOOST_PP_REPEAT_2_209(m, d) m(3, 209, d)
1177.523 -# define BOOST_PP_REPEAT_2_211(m, d) BOOST_PP_REPEAT_2_210(m, d) m(3, 210, d)
1177.524 -# define BOOST_PP_REPEAT_2_212(m, d) BOOST_PP_REPEAT_2_211(m, d) m(3, 211, d)
1177.525 -# define BOOST_PP_REPEAT_2_213(m, d) BOOST_PP_REPEAT_2_212(m, d) m(3, 212, d)
1177.526 -# define BOOST_PP_REPEAT_2_214(m, d) BOOST_PP_REPEAT_2_213(m, d) m(3, 213, d)
1177.527 -# define BOOST_PP_REPEAT_2_215(m, d) BOOST_PP_REPEAT_2_214(m, d) m(3, 214, d)
1177.528 -# define BOOST_PP_REPEAT_2_216(m, d) BOOST_PP_REPEAT_2_215(m, d) m(3, 215, d)
1177.529 -# define BOOST_PP_REPEAT_2_217(m, d) BOOST_PP_REPEAT_2_216(m, d) m(3, 216, d)
1177.530 -# define BOOST_PP_REPEAT_2_218(m, d) BOOST_PP_REPEAT_2_217(m, d) m(3, 217, d)
1177.531 -# define BOOST_PP_REPEAT_2_219(m, d) BOOST_PP_REPEAT_2_218(m, d) m(3, 218, d)
1177.532 -# define BOOST_PP_REPEAT_2_220(m, d) BOOST_PP_REPEAT_2_219(m, d) m(3, 219, d)
1177.533 -# define BOOST_PP_REPEAT_2_221(m, d) BOOST_PP_REPEAT_2_220(m, d) m(3, 220, d)
1177.534 -# define BOOST_PP_REPEAT_2_222(m, d) BOOST_PP_REPEAT_2_221(m, d) m(3, 221, d)
1177.535 -# define BOOST_PP_REPEAT_2_223(m, d) BOOST_PP_REPEAT_2_222(m, d) m(3, 222, d)
1177.536 -# define BOOST_PP_REPEAT_2_224(m, d) BOOST_PP_REPEAT_2_223(m, d) m(3, 223, d)
1177.537 -# define BOOST_PP_REPEAT_2_225(m, d) BOOST_PP_REPEAT_2_224(m, d) m(3, 224, d)
1177.538 -# define BOOST_PP_REPEAT_2_226(m, d) BOOST_PP_REPEAT_2_225(m, d) m(3, 225, d)
1177.539 -# define BOOST_PP_REPEAT_2_227(m, d) BOOST_PP_REPEAT_2_226(m, d) m(3, 226, d)
1177.540 -# define BOOST_PP_REPEAT_2_228(m, d) BOOST_PP_REPEAT_2_227(m, d) m(3, 227, d)
1177.541 -# define BOOST_PP_REPEAT_2_229(m, d) BOOST_PP_REPEAT_2_228(m, d) m(3, 228, d)
1177.542 -# define BOOST_PP_REPEAT_2_230(m, d) BOOST_PP_REPEAT_2_229(m, d) m(3, 229, d)
1177.543 -# define BOOST_PP_REPEAT_2_231(m, d) BOOST_PP_REPEAT_2_230(m, d) m(3, 230, d)
1177.544 -# define BOOST_PP_REPEAT_2_232(m, d) BOOST_PP_REPEAT_2_231(m, d) m(3, 231, d)
1177.545 -# define BOOST_PP_REPEAT_2_233(m, d) BOOST_PP_REPEAT_2_232(m, d) m(3, 232, d)
1177.546 -# define BOOST_PP_REPEAT_2_234(m, d) BOOST_PP_REPEAT_2_233(m, d) m(3, 233, d)
1177.547 -# define BOOST_PP_REPEAT_2_235(m, d) BOOST_PP_REPEAT_2_234(m, d) m(3, 234, d)
1177.548 -# define BOOST_PP_REPEAT_2_236(m, d) BOOST_PP_REPEAT_2_235(m, d) m(3, 235, d)
1177.549 -# define BOOST_PP_REPEAT_2_237(m, d) BOOST_PP_REPEAT_2_236(m, d) m(3, 236, d)
1177.550 -# define BOOST_PP_REPEAT_2_238(m, d) BOOST_PP_REPEAT_2_237(m, d) m(3, 237, d)
1177.551 -# define BOOST_PP_REPEAT_2_239(m, d) BOOST_PP_REPEAT_2_238(m, d) m(3, 238, d)
1177.552 -# define BOOST_PP_REPEAT_2_240(m, d) BOOST_PP_REPEAT_2_239(m, d) m(3, 239, d)
1177.553 -# define BOOST_PP_REPEAT_2_241(m, d) BOOST_PP_REPEAT_2_240(m, d) m(3, 240, d)
1177.554 -# define BOOST_PP_REPEAT_2_242(m, d) BOOST_PP_REPEAT_2_241(m, d) m(3, 241, d)
1177.555 -# define BOOST_PP_REPEAT_2_243(m, d) BOOST_PP_REPEAT_2_242(m, d) m(3, 242, d)
1177.556 -# define BOOST_PP_REPEAT_2_244(m, d) BOOST_PP_REPEAT_2_243(m, d) m(3, 243, d)
1177.557 -# define BOOST_PP_REPEAT_2_245(m, d) BOOST_PP_REPEAT_2_244(m, d) m(3, 244, d)
1177.558 -# define BOOST_PP_REPEAT_2_246(m, d) BOOST_PP_REPEAT_2_245(m, d) m(3, 245, d)
1177.559 -# define BOOST_PP_REPEAT_2_247(m, d) BOOST_PP_REPEAT_2_246(m, d) m(3, 246, d)
1177.560 -# define BOOST_PP_REPEAT_2_248(m, d) BOOST_PP_REPEAT_2_247(m, d) m(3, 247, d)
1177.561 -# define BOOST_PP_REPEAT_2_249(m, d) BOOST_PP_REPEAT_2_248(m, d) m(3, 248, d)
1177.562 -# define BOOST_PP_REPEAT_2_250(m, d) BOOST_PP_REPEAT_2_249(m, d) m(3, 249, d)
1177.563 -# define BOOST_PP_REPEAT_2_251(m, d) BOOST_PP_REPEAT_2_250(m, d) m(3, 250, d)
1177.564 -# define BOOST_PP_REPEAT_2_252(m, d) BOOST_PP_REPEAT_2_251(m, d) m(3, 251, d)
1177.565 -# define BOOST_PP_REPEAT_2_253(m, d) BOOST_PP_REPEAT_2_252(m, d) m(3, 252, d)
1177.566 -# define BOOST_PP_REPEAT_2_254(m, d) BOOST_PP_REPEAT_2_253(m, d) m(3, 253, d)
1177.567 -# define BOOST_PP_REPEAT_2_255(m, d) BOOST_PP_REPEAT_2_254(m, d) m(3, 254, d)
1177.568 -# define BOOST_PP_REPEAT_2_256(m, d) BOOST_PP_REPEAT_2_255(m, d) m(3, 255, d)
1177.569 -#
1177.570 -# define BOOST_PP_REPEAT_3_0(m, d)
1177.571 -# define BOOST_PP_REPEAT_3_1(m, d) m(4, 0, d)
1177.572 -# define BOOST_PP_REPEAT_3_2(m, d) BOOST_PP_REPEAT_3_1(m, d) m(4, 1, d)
1177.573 -# define BOOST_PP_REPEAT_3_3(m, d) BOOST_PP_REPEAT_3_2(m, d) m(4, 2, d)
1177.574 -# define BOOST_PP_REPEAT_3_4(m, d) BOOST_PP_REPEAT_3_3(m, d) m(4, 3, d)
1177.575 -# define BOOST_PP_REPEAT_3_5(m, d) BOOST_PP_REPEAT_3_4(m, d) m(4, 4, d)
1177.576 -# define BOOST_PP_REPEAT_3_6(m, d) BOOST_PP_REPEAT_3_5(m, d) m(4, 5, d)
1177.577 -# define BOOST_PP_REPEAT_3_7(m, d) BOOST_PP_REPEAT_3_6(m, d) m(4, 6, d)
1177.578 -# define BOOST_PP_REPEAT_3_8(m, d) BOOST_PP_REPEAT_3_7(m, d) m(4, 7, d)
1177.579 -# define BOOST_PP_REPEAT_3_9(m, d) BOOST_PP_REPEAT_3_8(m, d) m(4, 8, d)
1177.580 -# define BOOST_PP_REPEAT_3_10(m, d) BOOST_PP_REPEAT_3_9(m, d) m(4, 9, d)
1177.581 -# define BOOST_PP_REPEAT_3_11(m, d) BOOST_PP_REPEAT_3_10(m, d) m(4, 10, d)
1177.582 -# define BOOST_PP_REPEAT_3_12(m, d) BOOST_PP_REPEAT_3_11(m, d) m(4, 11, d)
1177.583 -# define BOOST_PP_REPEAT_3_13(m, d) BOOST_PP_REPEAT_3_12(m, d) m(4, 12, d)
1177.584 -# define BOOST_PP_REPEAT_3_14(m, d) BOOST_PP_REPEAT_3_13(m, d) m(4, 13, d)
1177.585 -# define BOOST_PP_REPEAT_3_15(m, d) BOOST_PP_REPEAT_3_14(m, d) m(4, 14, d)
1177.586 -# define BOOST_PP_REPEAT_3_16(m, d) BOOST_PP_REPEAT_3_15(m, d) m(4, 15, d)
1177.587 -# define BOOST_PP_REPEAT_3_17(m, d) BOOST_PP_REPEAT_3_16(m, d) m(4, 16, d)
1177.588 -# define BOOST_PP_REPEAT_3_18(m, d) BOOST_PP_REPEAT_3_17(m, d) m(4, 17, d)
1177.589 -# define BOOST_PP_REPEAT_3_19(m, d) BOOST_PP_REPEAT_3_18(m, d) m(4, 18, d)
1177.590 -# define BOOST_PP_REPEAT_3_20(m, d) BOOST_PP_REPEAT_3_19(m, d) m(4, 19, d)
1177.591 -# define BOOST_PP_REPEAT_3_21(m, d) BOOST_PP_REPEAT_3_20(m, d) m(4, 20, d)
1177.592 -# define BOOST_PP_REPEAT_3_22(m, d) BOOST_PP_REPEAT_3_21(m, d) m(4, 21, d)
1177.593 -# define BOOST_PP_REPEAT_3_23(m, d) BOOST_PP_REPEAT_3_22(m, d) m(4, 22, d)
1177.594 -# define BOOST_PP_REPEAT_3_24(m, d) BOOST_PP_REPEAT_3_23(m, d) m(4, 23, d)
1177.595 -# define BOOST_PP_REPEAT_3_25(m, d) BOOST_PP_REPEAT_3_24(m, d) m(4, 24, d)
1177.596 -# define BOOST_PP_REPEAT_3_26(m, d) BOOST_PP_REPEAT_3_25(m, d) m(4, 25, d)
1177.597 -# define BOOST_PP_REPEAT_3_27(m, d) BOOST_PP_REPEAT_3_26(m, d) m(4, 26, d)
1177.598 -# define BOOST_PP_REPEAT_3_28(m, d) BOOST_PP_REPEAT_3_27(m, d) m(4, 27, d)
1177.599 -# define BOOST_PP_REPEAT_3_29(m, d) BOOST_PP_REPEAT_3_28(m, d) m(4, 28, d)
1177.600 -# define BOOST_PP_REPEAT_3_30(m, d) BOOST_PP_REPEAT_3_29(m, d) m(4, 29, d)
1177.601 -# define BOOST_PP_REPEAT_3_31(m, d) BOOST_PP_REPEAT_3_30(m, d) m(4, 30, d)
1177.602 -# define BOOST_PP_REPEAT_3_32(m, d) BOOST_PP_REPEAT_3_31(m, d) m(4, 31, d)
1177.603 -# define BOOST_PP_REPEAT_3_33(m, d) BOOST_PP_REPEAT_3_32(m, d) m(4, 32, d)
1177.604 -# define BOOST_PP_REPEAT_3_34(m, d) BOOST_PP_REPEAT_3_33(m, d) m(4, 33, d)
1177.605 -# define BOOST_PP_REPEAT_3_35(m, d) BOOST_PP_REPEAT_3_34(m, d) m(4, 34, d)
1177.606 -# define BOOST_PP_REPEAT_3_36(m, d) BOOST_PP_REPEAT_3_35(m, d) m(4, 35, d)
1177.607 -# define BOOST_PP_REPEAT_3_37(m, d) BOOST_PP_REPEAT_3_36(m, d) m(4, 36, d)
1177.608 -# define BOOST_PP_REPEAT_3_38(m, d) BOOST_PP_REPEAT_3_37(m, d) m(4, 37, d)
1177.609 -# define BOOST_PP_REPEAT_3_39(m, d) BOOST_PP_REPEAT_3_38(m, d) m(4, 38, d)
1177.610 -# define BOOST_PP_REPEAT_3_40(m, d) BOOST_PP_REPEAT_3_39(m, d) m(4, 39, d)
1177.611 -# define BOOST_PP_REPEAT_3_41(m, d) BOOST_PP_REPEAT_3_40(m, d) m(4, 40, d)
1177.612 -# define BOOST_PP_REPEAT_3_42(m, d) BOOST_PP_REPEAT_3_41(m, d) m(4, 41, d)
1177.613 -# define BOOST_PP_REPEAT_3_43(m, d) BOOST_PP_REPEAT_3_42(m, d) m(4, 42, d)
1177.614 -# define BOOST_PP_REPEAT_3_44(m, d) BOOST_PP_REPEAT_3_43(m, d) m(4, 43, d)
1177.615 -# define BOOST_PP_REPEAT_3_45(m, d) BOOST_PP_REPEAT_3_44(m, d) m(4, 44, d)
1177.616 -# define BOOST_PP_REPEAT_3_46(m, d) BOOST_PP_REPEAT_3_45(m, d) m(4, 45, d)
1177.617 -# define BOOST_PP_REPEAT_3_47(m, d) BOOST_PP_REPEAT_3_46(m, d) m(4, 46, d)
1177.618 -# define BOOST_PP_REPEAT_3_48(m, d) BOOST_PP_REPEAT_3_47(m, d) m(4, 47, d)
1177.619 -# define BOOST_PP_REPEAT_3_49(m, d) BOOST_PP_REPEAT_3_48(m, d) m(4, 48, d)
1177.620 -# define BOOST_PP_REPEAT_3_50(m, d) BOOST_PP_REPEAT_3_49(m, d) m(4, 49, d)
1177.621 -# define BOOST_PP_REPEAT_3_51(m, d) BOOST_PP_REPEAT_3_50(m, d) m(4, 50, d)
1177.622 -# define BOOST_PP_REPEAT_3_52(m, d) BOOST_PP_REPEAT_3_51(m, d) m(4, 51, d)
1177.623 -# define BOOST_PP_REPEAT_3_53(m, d) BOOST_PP_REPEAT_3_52(m, d) m(4, 52, d)
1177.624 -# define BOOST_PP_REPEAT_3_54(m, d) BOOST_PP_REPEAT_3_53(m, d) m(4, 53, d)
1177.625 -# define BOOST_PP_REPEAT_3_55(m, d) BOOST_PP_REPEAT_3_54(m, d) m(4, 54, d)
1177.626 -# define BOOST_PP_REPEAT_3_56(m, d) BOOST_PP_REPEAT_3_55(m, d) m(4, 55, d)
1177.627 -# define BOOST_PP_REPEAT_3_57(m, d) BOOST_PP_REPEAT_3_56(m, d) m(4, 56, d)
1177.628 -# define BOOST_PP_REPEAT_3_58(m, d) BOOST_PP_REPEAT_3_57(m, d) m(4, 57, d)
1177.629 -# define BOOST_PP_REPEAT_3_59(m, d) BOOST_PP_REPEAT_3_58(m, d) m(4, 58, d)
1177.630 -# define BOOST_PP_REPEAT_3_60(m, d) BOOST_PP_REPEAT_3_59(m, d) m(4, 59, d)
1177.631 -# define BOOST_PP_REPEAT_3_61(m, d) BOOST_PP_REPEAT_3_60(m, d) m(4, 60, d)
1177.632 -# define BOOST_PP_REPEAT_3_62(m, d) BOOST_PP_REPEAT_3_61(m, d) m(4, 61, d)
1177.633 -# define BOOST_PP_REPEAT_3_63(m, d) BOOST_PP_REPEAT_3_62(m, d) m(4, 62, d)
1177.634 -# define BOOST_PP_REPEAT_3_64(m, d) BOOST_PP_REPEAT_3_63(m, d) m(4, 63, d)
1177.635 -# define BOOST_PP_REPEAT_3_65(m, d) BOOST_PP_REPEAT_3_64(m, d) m(4, 64, d)
1177.636 -# define BOOST_PP_REPEAT_3_66(m, d) BOOST_PP_REPEAT_3_65(m, d) m(4, 65, d)
1177.637 -# define BOOST_PP_REPEAT_3_67(m, d) BOOST_PP_REPEAT_3_66(m, d) m(4, 66, d)
1177.638 -# define BOOST_PP_REPEAT_3_68(m, d) BOOST_PP_REPEAT_3_67(m, d) m(4, 67, d)
1177.639 -# define BOOST_PP_REPEAT_3_69(m, d) BOOST_PP_REPEAT_3_68(m, d) m(4, 68, d)
1177.640 -# define BOOST_PP_REPEAT_3_70(m, d) BOOST_PP_REPEAT_3_69(m, d) m(4, 69, d)
1177.641 -# define BOOST_PP_REPEAT_3_71(m, d) BOOST_PP_REPEAT_3_70(m, d) m(4, 70, d)
1177.642 -# define BOOST_PP_REPEAT_3_72(m, d) BOOST_PP_REPEAT_3_71(m, d) m(4, 71, d)
1177.643 -# define BOOST_PP_REPEAT_3_73(m, d) BOOST_PP_REPEAT_3_72(m, d) m(4, 72, d)
1177.644 -# define BOOST_PP_REPEAT_3_74(m, d) BOOST_PP_REPEAT_3_73(m, d) m(4, 73, d)
1177.645 -# define BOOST_PP_REPEAT_3_75(m, d) BOOST_PP_REPEAT_3_74(m, d) m(4, 74, d)
1177.646 -# define BOOST_PP_REPEAT_3_76(m, d) BOOST_PP_REPEAT_3_75(m, d) m(4, 75, d)
1177.647 -# define BOOST_PP_REPEAT_3_77(m, d) BOOST_PP_REPEAT_3_76(m, d) m(4, 76, d)
1177.648 -# define BOOST_PP_REPEAT_3_78(m, d) BOOST_PP_REPEAT_3_77(m, d) m(4, 77, d)
1177.649 -# define BOOST_PP_REPEAT_3_79(m, d) BOOST_PP_REPEAT_3_78(m, d) m(4, 78, d)
1177.650 -# define BOOST_PP_REPEAT_3_80(m, d) BOOST_PP_REPEAT_3_79(m, d) m(4, 79, d)
1177.651 -# define BOOST_PP_REPEAT_3_81(m, d) BOOST_PP_REPEAT_3_80(m, d) m(4, 80, d)
1177.652 -# define BOOST_PP_REPEAT_3_82(m, d) BOOST_PP_REPEAT_3_81(m, d) m(4, 81, d)
1177.653 -# define BOOST_PP_REPEAT_3_83(m, d) BOOST_PP_REPEAT_3_82(m, d) m(4, 82, d)
1177.654 -# define BOOST_PP_REPEAT_3_84(m, d) BOOST_PP_REPEAT_3_83(m, d) m(4, 83, d)
1177.655 -# define BOOST_PP_REPEAT_3_85(m, d) BOOST_PP_REPEAT_3_84(m, d) m(4, 84, d)
1177.656 -# define BOOST_PP_REPEAT_3_86(m, d) BOOST_PP_REPEAT_3_85(m, d) m(4, 85, d)
1177.657 -# define BOOST_PP_REPEAT_3_87(m, d) BOOST_PP_REPEAT_3_86(m, d) m(4, 86, d)
1177.658 -# define BOOST_PP_REPEAT_3_88(m, d) BOOST_PP_REPEAT_3_87(m, d) m(4, 87, d)
1177.659 -# define BOOST_PP_REPEAT_3_89(m, d) BOOST_PP_REPEAT_3_88(m, d) m(4, 88, d)
1177.660 -# define BOOST_PP_REPEAT_3_90(m, d) BOOST_PP_REPEAT_3_89(m, d) m(4, 89, d)
1177.661 -# define BOOST_PP_REPEAT_3_91(m, d) BOOST_PP_REPEAT_3_90(m, d) m(4, 90, d)
1177.662 -# define BOOST_PP_REPEAT_3_92(m, d) BOOST_PP_REPEAT_3_91(m, d) m(4, 91, d)
1177.663 -# define BOOST_PP_REPEAT_3_93(m, d) BOOST_PP_REPEAT_3_92(m, d) m(4, 92, d)
1177.664 -# define BOOST_PP_REPEAT_3_94(m, d) BOOST_PP_REPEAT_3_93(m, d) m(4, 93, d)
1177.665 -# define BOOST_PP_REPEAT_3_95(m, d) BOOST_PP_REPEAT_3_94(m, d) m(4, 94, d)
1177.666 -# define BOOST_PP_REPEAT_3_96(m, d) BOOST_PP_REPEAT_3_95(m, d) m(4, 95, d)
1177.667 -# define BOOST_PP_REPEAT_3_97(m, d) BOOST_PP_REPEAT_3_96(m, d) m(4, 96, d)
1177.668 -# define BOOST_PP_REPEAT_3_98(m, d) BOOST_PP_REPEAT_3_97(m, d) m(4, 97, d)
1177.669 -# define BOOST_PP_REPEAT_3_99(m, d) BOOST_PP_REPEAT_3_98(m, d) m(4, 98, d)
1177.670 -# define BOOST_PP_REPEAT_3_100(m, d) BOOST_PP_REPEAT_3_99(m, d) m(4, 99, d)
1177.671 -# define BOOST_PP_REPEAT_3_101(m, d) BOOST_PP_REPEAT_3_100(m, d) m(4, 100, d)
1177.672 -# define BOOST_PP_REPEAT_3_102(m, d) BOOST_PP_REPEAT_3_101(m, d) m(4, 101, d)
1177.673 -# define BOOST_PP_REPEAT_3_103(m, d) BOOST_PP_REPEAT_3_102(m, d) m(4, 102, d)
1177.674 -# define BOOST_PP_REPEAT_3_104(m, d) BOOST_PP_REPEAT_3_103(m, d) m(4, 103, d)
1177.675 -# define BOOST_PP_REPEAT_3_105(m, d) BOOST_PP_REPEAT_3_104(m, d) m(4, 104, d)
1177.676 -# define BOOST_PP_REPEAT_3_106(m, d) BOOST_PP_REPEAT_3_105(m, d) m(4, 105, d)
1177.677 -# define BOOST_PP_REPEAT_3_107(m, d) BOOST_PP_REPEAT_3_106(m, d) m(4, 106, d)
1177.678 -# define BOOST_PP_REPEAT_3_108(m, d) BOOST_PP_REPEAT_3_107(m, d) m(4, 107, d)
1177.679 -# define BOOST_PP_REPEAT_3_109(m, d) BOOST_PP_REPEAT_3_108(m, d) m(4, 108, d)
1177.680 -# define BOOST_PP_REPEAT_3_110(m, d) BOOST_PP_REPEAT_3_109(m, d) m(4, 109, d)
1177.681 -# define BOOST_PP_REPEAT_3_111(m, d) BOOST_PP_REPEAT_3_110(m, d) m(4, 110, d)
1177.682 -# define BOOST_PP_REPEAT_3_112(m, d) BOOST_PP_REPEAT_3_111(m, d) m(4, 111, d)
1177.683 -# define BOOST_PP_REPEAT_3_113(m, d) BOOST_PP_REPEAT_3_112(m, d) m(4, 112, d)
1177.684 -# define BOOST_PP_REPEAT_3_114(m, d) BOOST_PP_REPEAT_3_113(m, d) m(4, 113, d)
1177.685 -# define BOOST_PP_REPEAT_3_115(m, d) BOOST_PP_REPEAT_3_114(m, d) m(4, 114, d)
1177.686 -# define BOOST_PP_REPEAT_3_116(m, d) BOOST_PP_REPEAT_3_115(m, d) m(4, 115, d)
1177.687 -# define BOOST_PP_REPEAT_3_117(m, d) BOOST_PP_REPEAT_3_116(m, d) m(4, 116, d)
1177.688 -# define BOOST_PP_REPEAT_3_118(m, d) BOOST_PP_REPEAT_3_117(m, d) m(4, 117, d)
1177.689 -# define BOOST_PP_REPEAT_3_119(m, d) BOOST_PP_REPEAT_3_118(m, d) m(4, 118, d)
1177.690 -# define BOOST_PP_REPEAT_3_120(m, d) BOOST_PP_REPEAT_3_119(m, d) m(4, 119, d)
1177.691 -# define BOOST_PP_REPEAT_3_121(m, d) BOOST_PP_REPEAT_3_120(m, d) m(4, 120, d)
1177.692 -# define BOOST_PP_REPEAT_3_122(m, d) BOOST_PP_REPEAT_3_121(m, d) m(4, 121, d)
1177.693 -# define BOOST_PP_REPEAT_3_123(m, d) BOOST_PP_REPEAT_3_122(m, d) m(4, 122, d)
1177.694 -# define BOOST_PP_REPEAT_3_124(m, d) BOOST_PP_REPEAT_3_123(m, d) m(4, 123, d)
1177.695 -# define BOOST_PP_REPEAT_3_125(m, d) BOOST_PP_REPEAT_3_124(m, d) m(4, 124, d)
1177.696 -# define BOOST_PP_REPEAT_3_126(m, d) BOOST_PP_REPEAT_3_125(m, d) m(4, 125, d)
1177.697 -# define BOOST_PP_REPEAT_3_127(m, d) BOOST_PP_REPEAT_3_126(m, d) m(4, 126, d)
1177.698 -# define BOOST_PP_REPEAT_3_128(m, d) BOOST_PP_REPEAT_3_127(m, d) m(4, 127, d)
1177.699 -# define BOOST_PP_REPEAT_3_129(m, d) BOOST_PP_REPEAT_3_128(m, d) m(4, 128, d)
1177.700 -# define BOOST_PP_REPEAT_3_130(m, d) BOOST_PP_REPEAT_3_129(m, d) m(4, 129, d)
1177.701 -# define BOOST_PP_REPEAT_3_131(m, d) BOOST_PP_REPEAT_3_130(m, d) m(4, 130, d)
1177.702 -# define BOOST_PP_REPEAT_3_132(m, d) BOOST_PP_REPEAT_3_131(m, d) m(4, 131, d)
1177.703 -# define BOOST_PP_REPEAT_3_133(m, d) BOOST_PP_REPEAT_3_132(m, d) m(4, 132, d)
1177.704 -# define BOOST_PP_REPEAT_3_134(m, d) BOOST_PP_REPEAT_3_133(m, d) m(4, 133, d)
1177.705 -# define BOOST_PP_REPEAT_3_135(m, d) BOOST_PP_REPEAT_3_134(m, d) m(4, 134, d)
1177.706 -# define BOOST_PP_REPEAT_3_136(m, d) BOOST_PP_REPEAT_3_135(m, d) m(4, 135, d)
1177.707 -# define BOOST_PP_REPEAT_3_137(m, d) BOOST_PP_REPEAT_3_136(m, d) m(4, 136, d)
1177.708 -# define BOOST_PP_REPEAT_3_138(m, d) BOOST_PP_REPEAT_3_137(m, d) m(4, 137, d)
1177.709 -# define BOOST_PP_REPEAT_3_139(m, d) BOOST_PP_REPEAT_3_138(m, d) m(4, 138, d)
1177.710 -# define BOOST_PP_REPEAT_3_140(m, d) BOOST_PP_REPEAT_3_139(m, d) m(4, 139, d)
1177.711 -# define BOOST_PP_REPEAT_3_141(m, d) BOOST_PP_REPEAT_3_140(m, d) m(4, 140, d)
1177.712 -# define BOOST_PP_REPEAT_3_142(m, d) BOOST_PP_REPEAT_3_141(m, d) m(4, 141, d)
1177.713 -# define BOOST_PP_REPEAT_3_143(m, d) BOOST_PP_REPEAT_3_142(m, d) m(4, 142, d)
1177.714 -# define BOOST_PP_REPEAT_3_144(m, d) BOOST_PP_REPEAT_3_143(m, d) m(4, 143, d)
1177.715 -# define BOOST_PP_REPEAT_3_145(m, d) BOOST_PP_REPEAT_3_144(m, d) m(4, 144, d)
1177.716 -# define BOOST_PP_REPEAT_3_146(m, d) BOOST_PP_REPEAT_3_145(m, d) m(4, 145, d)
1177.717 -# define BOOST_PP_REPEAT_3_147(m, d) BOOST_PP_REPEAT_3_146(m, d) m(4, 146, d)
1177.718 -# define BOOST_PP_REPEAT_3_148(m, d) BOOST_PP_REPEAT_3_147(m, d) m(4, 147, d)
1177.719 -# define BOOST_PP_REPEAT_3_149(m, d) BOOST_PP_REPEAT_3_148(m, d) m(4, 148, d)
1177.720 -# define BOOST_PP_REPEAT_3_150(m, d) BOOST_PP_REPEAT_3_149(m, d) m(4, 149, d)
1177.721 -# define BOOST_PP_REPEAT_3_151(m, d) BOOST_PP_REPEAT_3_150(m, d) m(4, 150, d)
1177.722 -# define BOOST_PP_REPEAT_3_152(m, d) BOOST_PP_REPEAT_3_151(m, d) m(4, 151, d)
1177.723 -# define BOOST_PP_REPEAT_3_153(m, d) BOOST_PP_REPEAT_3_152(m, d) m(4, 152, d)
1177.724 -# define BOOST_PP_REPEAT_3_154(m, d) BOOST_PP_REPEAT_3_153(m, d) m(4, 153, d)
1177.725 -# define BOOST_PP_REPEAT_3_155(m, d) BOOST_PP_REPEAT_3_154(m, d) m(4, 154, d)
1177.726 -# define BOOST_PP_REPEAT_3_156(m, d) BOOST_PP_REPEAT_3_155(m, d) m(4, 155, d)
1177.727 -# define BOOST_PP_REPEAT_3_157(m, d) BOOST_PP_REPEAT_3_156(m, d) m(4, 156, d)
1177.728 -# define BOOST_PP_REPEAT_3_158(m, d) BOOST_PP_REPEAT_3_157(m, d) m(4, 157, d)
1177.729 -# define BOOST_PP_REPEAT_3_159(m, d) BOOST_PP_REPEAT_3_158(m, d) m(4, 158, d)
1177.730 -# define BOOST_PP_REPEAT_3_160(m, d) BOOST_PP_REPEAT_3_159(m, d) m(4, 159, d)
1177.731 -# define BOOST_PP_REPEAT_3_161(m, d) BOOST_PP_REPEAT_3_160(m, d) m(4, 160, d)
1177.732 -# define BOOST_PP_REPEAT_3_162(m, d) BOOST_PP_REPEAT_3_161(m, d) m(4, 161, d)
1177.733 -# define BOOST_PP_REPEAT_3_163(m, d) BOOST_PP_REPEAT_3_162(m, d) m(4, 162, d)
1177.734 -# define BOOST_PP_REPEAT_3_164(m, d) BOOST_PP_REPEAT_3_163(m, d) m(4, 163, d)
1177.735 -# define BOOST_PP_REPEAT_3_165(m, d) BOOST_PP_REPEAT_3_164(m, d) m(4, 164, d)
1177.736 -# define BOOST_PP_REPEAT_3_166(m, d) BOOST_PP_REPEAT_3_165(m, d) m(4, 165, d)
1177.737 -# define BOOST_PP_REPEAT_3_167(m, d) BOOST_PP_REPEAT_3_166(m, d) m(4, 166, d)
1177.738 -# define BOOST_PP_REPEAT_3_168(m, d) BOOST_PP_REPEAT_3_167(m, d) m(4, 167, d)
1177.739 -# define BOOST_PP_REPEAT_3_169(m, d) BOOST_PP_REPEAT_3_168(m, d) m(4, 168, d)
1177.740 -# define BOOST_PP_REPEAT_3_170(m, d) BOOST_PP_REPEAT_3_169(m, d) m(4, 169, d)
1177.741 -# define BOOST_PP_REPEAT_3_171(m, d) BOOST_PP_REPEAT_3_170(m, d) m(4, 170, d)
1177.742 -# define BOOST_PP_REPEAT_3_172(m, d) BOOST_PP_REPEAT_3_171(m, d) m(4, 171, d)
1177.743 -# define BOOST_PP_REPEAT_3_173(m, d) BOOST_PP_REPEAT_3_172(m, d) m(4, 172, d)
1177.744 -# define BOOST_PP_REPEAT_3_174(m, d) BOOST_PP_REPEAT_3_173(m, d) m(4, 173, d)
1177.745 -# define BOOST_PP_REPEAT_3_175(m, d) BOOST_PP_REPEAT_3_174(m, d) m(4, 174, d)
1177.746 -# define BOOST_PP_REPEAT_3_176(m, d) BOOST_PP_REPEAT_3_175(m, d) m(4, 175, d)
1177.747 -# define BOOST_PP_REPEAT_3_177(m, d) BOOST_PP_REPEAT_3_176(m, d) m(4, 176, d)
1177.748 -# define BOOST_PP_REPEAT_3_178(m, d) BOOST_PP_REPEAT_3_177(m, d) m(4, 177, d)
1177.749 -# define BOOST_PP_REPEAT_3_179(m, d) BOOST_PP_REPEAT_3_178(m, d) m(4, 178, d)
1177.750 -# define BOOST_PP_REPEAT_3_180(m, d) BOOST_PP_REPEAT_3_179(m, d) m(4, 179, d)
1177.751 -# define BOOST_PP_REPEAT_3_181(m, d) BOOST_PP_REPEAT_3_180(m, d) m(4, 180, d)
1177.752 -# define BOOST_PP_REPEAT_3_182(m, d) BOOST_PP_REPEAT_3_181(m, d) m(4, 181, d)
1177.753 -# define BOOST_PP_REPEAT_3_183(m, d) BOOST_PP_REPEAT_3_182(m, d) m(4, 182, d)
1177.754 -# define BOOST_PP_REPEAT_3_184(m, d) BOOST_PP_REPEAT_3_183(m, d) m(4, 183, d)
1177.755 -# define BOOST_PP_REPEAT_3_185(m, d) BOOST_PP_REPEAT_3_184(m, d) m(4, 184, d)
1177.756 -# define BOOST_PP_REPEAT_3_186(m, d) BOOST_PP_REPEAT_3_185(m, d) m(4, 185, d)
1177.757 -# define BOOST_PP_REPEAT_3_187(m, d) BOOST_PP_REPEAT_3_186(m, d) m(4, 186, d)
1177.758 -# define BOOST_PP_REPEAT_3_188(m, d) BOOST_PP_REPEAT_3_187(m, d) m(4, 187, d)
1177.759 -# define BOOST_PP_REPEAT_3_189(m, d) BOOST_PP_REPEAT_3_188(m, d) m(4, 188, d)
1177.760 -# define BOOST_PP_REPEAT_3_190(m, d) BOOST_PP_REPEAT_3_189(m, d) m(4, 189, d)
1177.761 -# define BOOST_PP_REPEAT_3_191(m, d) BOOST_PP_REPEAT_3_190(m, d) m(4, 190, d)
1177.762 -# define BOOST_PP_REPEAT_3_192(m, d) BOOST_PP_REPEAT_3_191(m, d) m(4, 191, d)
1177.763 -# define BOOST_PP_REPEAT_3_193(m, d) BOOST_PP_REPEAT_3_192(m, d) m(4, 192, d)
1177.764 -# define BOOST_PP_REPEAT_3_194(m, d) BOOST_PP_REPEAT_3_193(m, d) m(4, 193, d)
1177.765 -# define BOOST_PP_REPEAT_3_195(m, d) BOOST_PP_REPEAT_3_194(m, d) m(4, 194, d)
1177.766 -# define BOOST_PP_REPEAT_3_196(m, d) BOOST_PP_REPEAT_3_195(m, d) m(4, 195, d)
1177.767 -# define BOOST_PP_REPEAT_3_197(m, d) BOOST_PP_REPEAT_3_196(m, d) m(4, 196, d)
1177.768 -# define BOOST_PP_REPEAT_3_198(m, d) BOOST_PP_REPEAT_3_197(m, d) m(4, 197, d)
1177.769 -# define BOOST_PP_REPEAT_3_199(m, d) BOOST_PP_REPEAT_3_198(m, d) m(4, 198, d)
1177.770 -# define BOOST_PP_REPEAT_3_200(m, d) BOOST_PP_REPEAT_3_199(m, d) m(4, 199, d)
1177.771 -# define BOOST_PP_REPEAT_3_201(m, d) BOOST_PP_REPEAT_3_200(m, d) m(4, 200, d)
1177.772 -# define BOOST_PP_REPEAT_3_202(m, d) BOOST_PP_REPEAT_3_201(m, d) m(4, 201, d)
1177.773 -# define BOOST_PP_REPEAT_3_203(m, d) BOOST_PP_REPEAT_3_202(m, d) m(4, 202, d)
1177.774 -# define BOOST_PP_REPEAT_3_204(m, d) BOOST_PP_REPEAT_3_203(m, d) m(4, 203, d)
1177.775 -# define BOOST_PP_REPEAT_3_205(m, d) BOOST_PP_REPEAT_3_204(m, d) m(4, 204, d)
1177.776 -# define BOOST_PP_REPEAT_3_206(m, d) BOOST_PP_REPEAT_3_205(m, d) m(4, 205, d)
1177.777 -# define BOOST_PP_REPEAT_3_207(m, d) BOOST_PP_REPEAT_3_206(m, d) m(4, 206, d)
1177.778 -# define BOOST_PP_REPEAT_3_208(m, d) BOOST_PP_REPEAT_3_207(m, d) m(4, 207, d)
1177.779 -# define BOOST_PP_REPEAT_3_209(m, d) BOOST_PP_REPEAT_3_208(m, d) m(4, 208, d)
1177.780 -# define BOOST_PP_REPEAT_3_210(m, d) BOOST_PP_REPEAT_3_209(m, d) m(4, 209, d)
1177.781 -# define BOOST_PP_REPEAT_3_211(m, d) BOOST_PP_REPEAT_3_210(m, d) m(4, 210, d)
1177.782 -# define BOOST_PP_REPEAT_3_212(m, d) BOOST_PP_REPEAT_3_211(m, d) m(4, 211, d)
1177.783 -# define BOOST_PP_REPEAT_3_213(m, d) BOOST_PP_REPEAT_3_212(m, d) m(4, 212, d)
1177.784 -# define BOOST_PP_REPEAT_3_214(m, d) BOOST_PP_REPEAT_3_213(m, d) m(4, 213, d)
1177.785 -# define BOOST_PP_REPEAT_3_215(m, d) BOOST_PP_REPEAT_3_214(m, d) m(4, 214, d)
1177.786 -# define BOOST_PP_REPEAT_3_216(m, d) BOOST_PP_REPEAT_3_215(m, d) m(4, 215, d)
1177.787 -# define BOOST_PP_REPEAT_3_217(m, d) BOOST_PP_REPEAT_3_216(m, d) m(4, 216, d)
1177.788 -# define BOOST_PP_REPEAT_3_218(m, d) BOOST_PP_REPEAT_3_217(m, d) m(4, 217, d)
1177.789 -# define BOOST_PP_REPEAT_3_219(m, d) BOOST_PP_REPEAT_3_218(m, d) m(4, 218, d)
1177.790 -# define BOOST_PP_REPEAT_3_220(m, d) BOOST_PP_REPEAT_3_219(m, d) m(4, 219, d)
1177.791 -# define BOOST_PP_REPEAT_3_221(m, d) BOOST_PP_REPEAT_3_220(m, d) m(4, 220, d)
1177.792 -# define BOOST_PP_REPEAT_3_222(m, d) BOOST_PP_REPEAT_3_221(m, d) m(4, 221, d)
1177.793 -# define BOOST_PP_REPEAT_3_223(m, d) BOOST_PP_REPEAT_3_222(m, d) m(4, 222, d)
1177.794 -# define BOOST_PP_REPEAT_3_224(m, d) BOOST_PP_REPEAT_3_223(m, d) m(4, 223, d)
1177.795 -# define BOOST_PP_REPEAT_3_225(m, d) BOOST_PP_REPEAT_3_224(m, d) m(4, 224, d)
1177.796 -# define BOOST_PP_REPEAT_3_226(m, d) BOOST_PP_REPEAT_3_225(m, d) m(4, 225, d)
1177.797 -# define BOOST_PP_REPEAT_3_227(m, d) BOOST_PP_REPEAT_3_226(m, d) m(4, 226, d)
1177.798 -# define BOOST_PP_REPEAT_3_228(m, d) BOOST_PP_REPEAT_3_227(m, d) m(4, 227, d)
1177.799 -# define BOOST_PP_REPEAT_3_229(m, d) BOOST_PP_REPEAT_3_228(m, d) m(4, 228, d)
1177.800 -# define BOOST_PP_REPEAT_3_230(m, d) BOOST_PP_REPEAT_3_229(m, d) m(4, 229, d)
1177.801 -# define BOOST_PP_REPEAT_3_231(m, d) BOOST_PP_REPEAT_3_230(m, d) m(4, 230, d)
1177.802 -# define BOOST_PP_REPEAT_3_232(m, d) BOOST_PP_REPEAT_3_231(m, d) m(4, 231, d)
1177.803 -# define BOOST_PP_REPEAT_3_233(m, d) BOOST_PP_REPEAT_3_232(m, d) m(4, 232, d)
1177.804 -# define BOOST_PP_REPEAT_3_234(m, d) BOOST_PP_REPEAT_3_233(m, d) m(4, 233, d)
1177.805 -# define BOOST_PP_REPEAT_3_235(m, d) BOOST_PP_REPEAT_3_234(m, d) m(4, 234, d)
1177.806 -# define BOOST_PP_REPEAT_3_236(m, d) BOOST_PP_REPEAT_3_235(m, d) m(4, 235, d)
1177.807 -# define BOOST_PP_REPEAT_3_237(m, d) BOOST_PP_REPEAT_3_236(m, d) m(4, 236, d)
1177.808 -# define BOOST_PP_REPEAT_3_238(m, d) BOOST_PP_REPEAT_3_237(m, d) m(4, 237, d)
1177.809 -# define BOOST_PP_REPEAT_3_239(m, d) BOOST_PP_REPEAT_3_238(m, d) m(4, 238, d)
1177.810 -# define BOOST_PP_REPEAT_3_240(m, d) BOOST_PP_REPEAT_3_239(m, d) m(4, 239, d)
1177.811 -# define BOOST_PP_REPEAT_3_241(m, d) BOOST_PP_REPEAT_3_240(m, d) m(4, 240, d)
1177.812 -# define BOOST_PP_REPEAT_3_242(m, d) BOOST_PP_REPEAT_3_241(m, d) m(4, 241, d)
1177.813 -# define BOOST_PP_REPEAT_3_243(m, d) BOOST_PP_REPEAT_3_242(m, d) m(4, 242, d)
1177.814 -# define BOOST_PP_REPEAT_3_244(m, d) BOOST_PP_REPEAT_3_243(m, d) m(4, 243, d)
1177.815 -# define BOOST_PP_REPEAT_3_245(m, d) BOOST_PP_REPEAT_3_244(m, d) m(4, 244, d)
1177.816 -# define BOOST_PP_REPEAT_3_246(m, d) BOOST_PP_REPEAT_3_245(m, d) m(4, 245, d)
1177.817 -# define BOOST_PP_REPEAT_3_247(m, d) BOOST_PP_REPEAT_3_246(m, d) m(4, 246, d)
1177.818 -# define BOOST_PP_REPEAT_3_248(m, d) BOOST_PP_REPEAT_3_247(m, d) m(4, 247, d)
1177.819 -# define BOOST_PP_REPEAT_3_249(m, d) BOOST_PP_REPEAT_3_248(m, d) m(4, 248, d)
1177.820 -# define BOOST_PP_REPEAT_3_250(m, d) BOOST_PP_REPEAT_3_249(m, d) m(4, 249, d)
1177.821 -# define BOOST_PP_REPEAT_3_251(m, d) BOOST_PP_REPEAT_3_250(m, d) m(4, 250, d)
1177.822 -# define BOOST_PP_REPEAT_3_252(m, d) BOOST_PP_REPEAT_3_251(m, d) m(4, 251, d)
1177.823 -# define BOOST_PP_REPEAT_3_253(m, d) BOOST_PP_REPEAT_3_252(m, d) m(4, 252, d)
1177.824 -# define BOOST_PP_REPEAT_3_254(m, d) BOOST_PP_REPEAT_3_253(m, d) m(4, 253, d)
1177.825 -# define BOOST_PP_REPEAT_3_255(m, d) BOOST_PP_REPEAT_3_254(m, d) m(4, 254, d)
1177.826 -# define BOOST_PP_REPEAT_3_256(m, d) BOOST_PP_REPEAT_3_255(m, d) m(4, 255, d)
1177.827 -#
1177.828 -# endif
  1178.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1178.2 +++ b/epoc32/include/stdapis/boost/preprocessor/seq.hpp	Wed Mar 31 12:27:01 2010 +0100
  1178.3 @@ -0,0 +1,44 @@
  1178.4 +# /* **************************************************************************
  1178.5 +#  *                                                                          *
  1178.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1178.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1178.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1178.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1178.10 +#  *                                                                          *
 1178.11 +#  ************************************************************************** */
 1178.12 +#
 1178.13 +# /* See http://www.boost.org for most recent version. */
 1178.14 +#
 1178.15 +# ifndef BOOST_PREPROCESSOR_SEQ_SEQ_HPP
 1178.16 +# define BOOST_PREPROCESSOR_SEQ_SEQ_HPP
 1178.17 +#
 1178.18 +# include <boost/preprocessor/config/config.hpp>
 1178.19 +# include <boost/preprocessor/seq/elem.hpp>
 1178.20 +#
 1178.21 +# /* BOOST_PP_SEQ_HEAD */
 1178.22 +#
 1178.23 +# define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq)
 1178.24 +#
 1178.25 +# /* BOOST_PP_SEQ_TAIL */
 1178.26 +#
 1178.27 +# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1178.28 +#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_1((seq))
 1178.29 +#    define BOOST_PP_SEQ_TAIL_1(par) BOOST_PP_SEQ_TAIL_2 ## par
 1178.30 +#    define BOOST_PP_SEQ_TAIL_2(seq) BOOST_PP_SEQ_TAIL_I ## seq
 1178.31 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1178.32 +#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_ID(BOOST_PP_SEQ_TAIL_I seq)
 1178.33 +#    define BOOST_PP_SEQ_TAIL_ID(id) id
 1178.34 +# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1178.35 +#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_D(seq)
 1178.36 +#    define BOOST_PP_SEQ_TAIL_D(seq) BOOST_PP_SEQ_TAIL_I seq
 1178.37 +# else
 1178.38 +#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq
 1178.39 +# endif
 1178.40 +#
 1178.41 +# define BOOST_PP_SEQ_TAIL_I(x)
 1178.42 +#
 1178.43 +# /* BOOST_PP_SEQ_NIL */
 1178.44 +#
 1178.45 +# define BOOST_PP_SEQ_NIL(x) (x)
 1178.46 +#
 1178.47 +# endif
  1179.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/cat.hpp	Tue Mar 16 16:12:26 2010 +0000
  1179.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1179.3 @@ -1,48 +0,0 @@
  1179.4 -# /* **************************************************************************
  1179.5 -#  *                                                                          *
  1179.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1179.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1179.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1179.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1179.10 -#  *                                                                          *
 1179.11 -#  ************************************************************************** */
 1179.12 -#
 1179.13 -# /* See http://www.boost.org for most recent version. */
 1179.14 -#
 1179.15 -# ifndef BOOST_PREPROCESSOR_SEQ_CAT_HPP
 1179.16 -# define BOOST_PREPROCESSOR_SEQ_CAT_HPP
 1179.17 -#
 1179.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1179.19 -# include <boost/preprocessor/config/config.hpp>
 1179.20 -# include <boost/preprocessor/control/if.hpp>
 1179.21 -# include <boost/preprocessor/seq/fold_left.hpp>
 1179.22 -# include <boost/preprocessor/seq/seq.hpp>
 1179.23 -# include <boost/preprocessor/seq/size.hpp>
 1179.24 -# include <boost/preprocessor/tuple/eat.hpp>
 1179.25 -#
 1179.26 -# /* BOOST_PP_SEQ_CAT */
 1179.27 -#
 1179.28 -# define BOOST_PP_SEQ_CAT(seq) \
 1179.29 -    BOOST_PP_IF( \
 1179.30 -        BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
 1179.31 -        BOOST_PP_SEQ_CAT_I, \
 1179.32 -        BOOST_PP_SEQ_HEAD(seq) BOOST_PP_TUPLE_EAT_1 \
 1179.33 -    )(seq) \
 1179.34 -    /**/
 1179.35 -# define BOOST_PP_SEQ_CAT_I(seq) BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
 1179.36 -#
 1179.37 -# define BOOST_PP_SEQ_CAT_O(s, st, elem) BOOST_PP_SEQ_CAT_O_I(st, elem)
 1179.38 -# define BOOST_PP_SEQ_CAT_O_I(a, b) a ## b
 1179.39 -#
 1179.40 -# /* BOOST_PP_SEQ_CAT_S */
 1179.41 -#
 1179.42 -# define BOOST_PP_SEQ_CAT_S(s, seq) \
 1179.43 -    BOOST_PP_IF( \
 1179.44 -        BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), \
 1179.45 -        BOOST_PP_SEQ_CAT_S_I, \
 1179.46 -        BOOST_PP_SEQ_HEAD(seq) BOOST_PP_TUPLE_EAT_2 \
 1179.47 -    )(s, seq) \
 1179.48 -    /**/
 1179.49 -# define BOOST_PP_SEQ_CAT_S_I(s, seq) BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_CAT_O, BOOST_PP_SEQ_HEAD(seq), BOOST_PP_SEQ_TAIL(seq))
 1179.50 -#
 1179.51 -# endif
  1180.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/enum.hpp	Tue Mar 16 16:12:26 2010 +0000
  1180.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1180.3 @@ -1,288 +0,0 @@
  1180.4 -# /* **************************************************************************
  1180.5 -#  *                                                                          *
  1180.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1180.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1180.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1180.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1180.10 -#  *                                                                          *
 1180.11 -#  ************************************************************************** */
 1180.12 -#
 1180.13 -# /* See http://www.boost.org for most recent version. */
 1180.14 -#
 1180.15 -# ifndef BOOST_PREPROCESSOR_SEQ_ENUM_HPP
 1180.16 -# define BOOST_PREPROCESSOR_SEQ_ENUM_HPP
 1180.17 -#
 1180.18 -# include <boost/preprocessor/cat.hpp>
 1180.19 -# include <boost/preprocessor/config/config.hpp>
 1180.20 -# include <boost/preprocessor/seq/size.hpp>
 1180.21 -#
 1180.22 -# /* BOOST_PP_SEQ_ENUM */
 1180.23 -#
 1180.24 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1180.25 -#    define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(seq)
 1180.26 -#    define BOOST_PP_SEQ_ENUM_I(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
 1180.27 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1180.28 -#    define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_SEQ_ENUM_I(BOOST_PP_SEQ_SIZE(seq), seq)
 1180.29 -#    define BOOST_PP_SEQ_ENUM_I(size, seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, size) seq
 1180.30 -# else
 1180.31 -#    define BOOST_PP_SEQ_ENUM(seq) BOOST_PP_CAT(BOOST_PP_SEQ_ENUM_, BOOST_PP_SEQ_SIZE(seq)) seq
 1180.32 -# endif
 1180.33 -#
 1180.34 -# define BOOST_PP_SEQ_ENUM_1(x) x
 1180.35 -# define BOOST_PP_SEQ_ENUM_2(x) x, BOOST_PP_SEQ_ENUM_1
 1180.36 -# define BOOST_PP_SEQ_ENUM_3(x) x, BOOST_PP_SEQ_ENUM_2
 1180.37 -# define BOOST_PP_SEQ_ENUM_4(x) x, BOOST_PP_SEQ_ENUM_3
 1180.38 -# define BOOST_PP_SEQ_ENUM_5(x) x, BOOST_PP_SEQ_ENUM_4
 1180.39 -# define BOOST_PP_SEQ_ENUM_6(x) x, BOOST_PP_SEQ_ENUM_5
 1180.40 -# define BOOST_PP_SEQ_ENUM_7(x) x, BOOST_PP_SEQ_ENUM_6
 1180.41 -# define BOOST_PP_SEQ_ENUM_8(x) x, BOOST_PP_SEQ_ENUM_7
 1180.42 -# define BOOST_PP_SEQ_ENUM_9(x) x, BOOST_PP_SEQ_ENUM_8
 1180.43 -# define BOOST_PP_SEQ_ENUM_10(x) x, BOOST_PP_SEQ_ENUM_9
 1180.44 -# define BOOST_PP_SEQ_ENUM_11(x) x, BOOST_PP_SEQ_ENUM_10
 1180.45 -# define BOOST_PP_SEQ_ENUM_12(x) x, BOOST_PP_SEQ_ENUM_11
 1180.46 -# define BOOST_PP_SEQ_ENUM_13(x) x, BOOST_PP_SEQ_ENUM_12
 1180.47 -# define BOOST_PP_SEQ_ENUM_14(x) x, BOOST_PP_SEQ_ENUM_13
 1180.48 -# define BOOST_PP_SEQ_ENUM_15(x) x, BOOST_PP_SEQ_ENUM_14
 1180.49 -# define BOOST_PP_SEQ_ENUM_16(x) x, BOOST_PP_SEQ_ENUM_15
 1180.50 -# define BOOST_PP_SEQ_ENUM_17(x) x, BOOST_PP_SEQ_ENUM_16
 1180.51 -# define BOOST_PP_SEQ_ENUM_18(x) x, BOOST_PP_SEQ_ENUM_17
 1180.52 -# define BOOST_PP_SEQ_ENUM_19(x) x, BOOST_PP_SEQ_ENUM_18
 1180.53 -# define BOOST_PP_SEQ_ENUM_20(x) x, BOOST_PP_SEQ_ENUM_19
 1180.54 -# define BOOST_PP_SEQ_ENUM_21(x) x, BOOST_PP_SEQ_ENUM_20
 1180.55 -# define BOOST_PP_SEQ_ENUM_22(x) x, BOOST_PP_SEQ_ENUM_21
 1180.56 -# define BOOST_PP_SEQ_ENUM_23(x) x, BOOST_PP_SEQ_ENUM_22
 1180.57 -# define BOOST_PP_SEQ_ENUM_24(x) x, BOOST_PP_SEQ_ENUM_23
 1180.58 -# define BOOST_PP_SEQ_ENUM_25(x) x, BOOST_PP_SEQ_ENUM_24
 1180.59 -# define BOOST_PP_SEQ_ENUM_26(x) x, BOOST_PP_SEQ_ENUM_25
 1180.60 -# define BOOST_PP_SEQ_ENUM_27(x) x, BOOST_PP_SEQ_ENUM_26
 1180.61 -# define BOOST_PP_SEQ_ENUM_28(x) x, BOOST_PP_SEQ_ENUM_27
 1180.62 -# define BOOST_PP_SEQ_ENUM_29(x) x, BOOST_PP_SEQ_ENUM_28
 1180.63 -# define BOOST_PP_SEQ_ENUM_30(x) x, BOOST_PP_SEQ_ENUM_29
 1180.64 -# define BOOST_PP_SEQ_ENUM_31(x) x, BOOST_PP_SEQ_ENUM_30
 1180.65 -# define BOOST_PP_SEQ_ENUM_32(x) x, BOOST_PP_SEQ_ENUM_31
 1180.66 -# define BOOST_PP_SEQ_ENUM_33(x) x, BOOST_PP_SEQ_ENUM_32
 1180.67 -# define BOOST_PP_SEQ_ENUM_34(x) x, BOOST_PP_SEQ_ENUM_33
 1180.68 -# define BOOST_PP_SEQ_ENUM_35(x) x, BOOST_PP_SEQ_ENUM_34
 1180.69 -# define BOOST_PP_SEQ_ENUM_36(x) x, BOOST_PP_SEQ_ENUM_35
 1180.70 -# define BOOST_PP_SEQ_ENUM_37(x) x, BOOST_PP_SEQ_ENUM_36
 1180.71 -# define BOOST_PP_SEQ_ENUM_38(x) x, BOOST_PP_SEQ_ENUM_37
 1180.72 -# define BOOST_PP_SEQ_ENUM_39(x) x, BOOST_PP_SEQ_ENUM_38
 1180.73 -# define BOOST_PP_SEQ_ENUM_40(x) x, BOOST_PP_SEQ_ENUM_39
 1180.74 -# define BOOST_PP_SEQ_ENUM_41(x) x, BOOST_PP_SEQ_ENUM_40
 1180.75 -# define BOOST_PP_SEQ_ENUM_42(x) x, BOOST_PP_SEQ_ENUM_41
 1180.76 -# define BOOST_PP_SEQ_ENUM_43(x) x, BOOST_PP_SEQ_ENUM_42
 1180.77 -# define BOOST_PP_SEQ_ENUM_44(x) x, BOOST_PP_SEQ_ENUM_43
 1180.78 -# define BOOST_PP_SEQ_ENUM_45(x) x, BOOST_PP_SEQ_ENUM_44
 1180.79 -# define BOOST_PP_SEQ_ENUM_46(x) x, BOOST_PP_SEQ_ENUM_45
 1180.80 -# define BOOST_PP_SEQ_ENUM_47(x) x, BOOST_PP_SEQ_ENUM_46
 1180.81 -# define BOOST_PP_SEQ_ENUM_48(x) x, BOOST_PP_SEQ_ENUM_47
 1180.82 -# define BOOST_PP_SEQ_ENUM_49(x) x, BOOST_PP_SEQ_ENUM_48
 1180.83 -# define BOOST_PP_SEQ_ENUM_50(x) x, BOOST_PP_SEQ_ENUM_49
 1180.84 -# define BOOST_PP_SEQ_ENUM_51(x) x, BOOST_PP_SEQ_ENUM_50
 1180.85 -# define BOOST_PP_SEQ_ENUM_52(x) x, BOOST_PP_SEQ_ENUM_51
 1180.86 -# define BOOST_PP_SEQ_ENUM_53(x) x, BOOST_PP_SEQ_ENUM_52
 1180.87 -# define BOOST_PP_SEQ_ENUM_54(x) x, BOOST_PP_SEQ_ENUM_53
 1180.88 -# define BOOST_PP_SEQ_ENUM_55(x) x, BOOST_PP_SEQ_ENUM_54
 1180.89 -# define BOOST_PP_SEQ_ENUM_56(x) x, BOOST_PP_SEQ_ENUM_55
 1180.90 -# define BOOST_PP_SEQ_ENUM_57(x) x, BOOST_PP_SEQ_ENUM_56
 1180.91 -# define BOOST_PP_SEQ_ENUM_58(x) x, BOOST_PP_SEQ_ENUM_57
 1180.92 -# define BOOST_PP_SEQ_ENUM_59(x) x, BOOST_PP_SEQ_ENUM_58
 1180.93 -# define BOOST_PP_SEQ_ENUM_60(x) x, BOOST_PP_SEQ_ENUM_59
 1180.94 -# define BOOST_PP_SEQ_ENUM_61(x) x, BOOST_PP_SEQ_ENUM_60
 1180.95 -# define BOOST_PP_SEQ_ENUM_62(x) x, BOOST_PP_SEQ_ENUM_61
 1180.96 -# define BOOST_PP_SEQ_ENUM_63(x) x, BOOST_PP_SEQ_ENUM_62
 1180.97 -# define BOOST_PP_SEQ_ENUM_64(x) x, BOOST_PP_SEQ_ENUM_63
 1180.98 -# define BOOST_PP_SEQ_ENUM_65(x) x, BOOST_PP_SEQ_ENUM_64
 1180.99 -# define BOOST_PP_SEQ_ENUM_66(x) x, BOOST_PP_SEQ_ENUM_65
1180.100 -# define BOOST_PP_SEQ_ENUM_67(x) x, BOOST_PP_SEQ_ENUM_66
1180.101 -# define BOOST_PP_SEQ_ENUM_68(x) x, BOOST_PP_SEQ_ENUM_67
1180.102 -# define BOOST_PP_SEQ_ENUM_69(x) x, BOOST_PP_SEQ_ENUM_68
1180.103 -# define BOOST_PP_SEQ_ENUM_70(x) x, BOOST_PP_SEQ_ENUM_69
1180.104 -# define BOOST_PP_SEQ_ENUM_71(x) x, BOOST_PP_SEQ_ENUM_70
1180.105 -# define BOOST_PP_SEQ_ENUM_72(x) x, BOOST_PP_SEQ_ENUM_71
1180.106 -# define BOOST_PP_SEQ_ENUM_73(x) x, BOOST_PP_SEQ_ENUM_72
1180.107 -# define BOOST_PP_SEQ_ENUM_74(x) x, BOOST_PP_SEQ_ENUM_73
1180.108 -# define BOOST_PP_SEQ_ENUM_75(x) x, BOOST_PP_SEQ_ENUM_74
1180.109 -# define BOOST_PP_SEQ_ENUM_76(x) x, BOOST_PP_SEQ_ENUM_75
1180.110 -# define BOOST_PP_SEQ_ENUM_77(x) x, BOOST_PP_SEQ_ENUM_76
1180.111 -# define BOOST_PP_SEQ_ENUM_78(x) x, BOOST_PP_SEQ_ENUM_77
1180.112 -# define BOOST_PP_SEQ_ENUM_79(x) x, BOOST_PP_SEQ_ENUM_78
1180.113 -# define BOOST_PP_SEQ_ENUM_80(x) x, BOOST_PP_SEQ_ENUM_79
1180.114 -# define BOOST_PP_SEQ_ENUM_81(x) x, BOOST_PP_SEQ_ENUM_80
1180.115 -# define BOOST_PP_SEQ_ENUM_82(x) x, BOOST_PP_SEQ_ENUM_81
1180.116 -# define BOOST_PP_SEQ_ENUM_83(x) x, BOOST_PP_SEQ_ENUM_82
1180.117 -# define BOOST_PP_SEQ_ENUM_84(x) x, BOOST_PP_SEQ_ENUM_83
1180.118 -# define BOOST_PP_SEQ_ENUM_85(x) x, BOOST_PP_SEQ_ENUM_84
1180.119 -# define BOOST_PP_SEQ_ENUM_86(x) x, BOOST_PP_SEQ_ENUM_85
1180.120 -# define BOOST_PP_SEQ_ENUM_87(x) x, BOOST_PP_SEQ_ENUM_86
1180.121 -# define BOOST_PP_SEQ_ENUM_88(x) x, BOOST_PP_SEQ_ENUM_87
1180.122 -# define BOOST_PP_SEQ_ENUM_89(x) x, BOOST_PP_SEQ_ENUM_88
1180.123 -# define BOOST_PP_SEQ_ENUM_90(x) x, BOOST_PP_SEQ_ENUM_89
1180.124 -# define BOOST_PP_SEQ_ENUM_91(x) x, BOOST_PP_SEQ_ENUM_90
1180.125 -# define BOOST_PP_SEQ_ENUM_92(x) x, BOOST_PP_SEQ_ENUM_91
1180.126 -# define BOOST_PP_SEQ_ENUM_93(x) x, BOOST_PP_SEQ_ENUM_92
1180.127 -# define BOOST_PP_SEQ_ENUM_94(x) x, BOOST_PP_SEQ_ENUM_93
1180.128 -# define BOOST_PP_SEQ_ENUM_95(x) x, BOOST_PP_SEQ_ENUM_94
1180.129 -# define BOOST_PP_SEQ_ENUM_96(x) x, BOOST_PP_SEQ_ENUM_95
1180.130 -# define BOOST_PP_SEQ_ENUM_97(x) x, BOOST_PP_SEQ_ENUM_96
1180.131 -# define BOOST_PP_SEQ_ENUM_98(x) x, BOOST_PP_SEQ_ENUM_97
1180.132 -# define BOOST_PP_SEQ_ENUM_99(x) x, BOOST_PP_SEQ_ENUM_98
1180.133 -# define BOOST_PP_SEQ_ENUM_100(x) x, BOOST_PP_SEQ_ENUM_99
1180.134 -# define BOOST_PP_SEQ_ENUM_101(x) x, BOOST_PP_SEQ_ENUM_100
1180.135 -# define BOOST_PP_SEQ_ENUM_102(x) x, BOOST_PP_SEQ_ENUM_101
1180.136 -# define BOOST_PP_SEQ_ENUM_103(x) x, BOOST_PP_SEQ_ENUM_102
1180.137 -# define BOOST_PP_SEQ_ENUM_104(x) x, BOOST_PP_SEQ_ENUM_103
1180.138 -# define BOOST_PP_SEQ_ENUM_105(x) x, BOOST_PP_SEQ_ENUM_104
1180.139 -# define BOOST_PP_SEQ_ENUM_106(x) x, BOOST_PP_SEQ_ENUM_105
1180.140 -# define BOOST_PP_SEQ_ENUM_107(x) x, BOOST_PP_SEQ_ENUM_106
1180.141 -# define BOOST_PP_SEQ_ENUM_108(x) x, BOOST_PP_SEQ_ENUM_107
1180.142 -# define BOOST_PP_SEQ_ENUM_109(x) x, BOOST_PP_SEQ_ENUM_108
1180.143 -# define BOOST_PP_SEQ_ENUM_110(x) x, BOOST_PP_SEQ_ENUM_109
1180.144 -# define BOOST_PP_SEQ_ENUM_111(x) x, BOOST_PP_SEQ_ENUM_110
1180.145 -# define BOOST_PP_SEQ_ENUM_112(x) x, BOOST_PP_SEQ_ENUM_111
1180.146 -# define BOOST_PP_SEQ_ENUM_113(x) x, BOOST_PP_SEQ_ENUM_112
1180.147 -# define BOOST_PP_SEQ_ENUM_114(x) x, BOOST_PP_SEQ_ENUM_113
1180.148 -# define BOOST_PP_SEQ_ENUM_115(x) x, BOOST_PP_SEQ_ENUM_114
1180.149 -# define BOOST_PP_SEQ_ENUM_116(x) x, BOOST_PP_SEQ_ENUM_115
1180.150 -# define BOOST_PP_SEQ_ENUM_117(x) x, BOOST_PP_SEQ_ENUM_116
1180.151 -# define BOOST_PP_SEQ_ENUM_118(x) x, BOOST_PP_SEQ_ENUM_117
1180.152 -# define BOOST_PP_SEQ_ENUM_119(x) x, BOOST_PP_SEQ_ENUM_118
1180.153 -# define BOOST_PP_SEQ_ENUM_120(x) x, BOOST_PP_SEQ_ENUM_119
1180.154 -# define BOOST_PP_SEQ_ENUM_121(x) x, BOOST_PP_SEQ_ENUM_120
1180.155 -# define BOOST_PP_SEQ_ENUM_122(x) x, BOOST_PP_SEQ_ENUM_121
1180.156 -# define BOOST_PP_SEQ_ENUM_123(x) x, BOOST_PP_SEQ_ENUM_122
1180.157 -# define BOOST_PP_SEQ_ENUM_124(x) x, BOOST_PP_SEQ_ENUM_123
1180.158 -# define BOOST_PP_SEQ_ENUM_125(x) x, BOOST_PP_SEQ_ENUM_124
1180.159 -# define BOOST_PP_SEQ_ENUM_126(x) x, BOOST_PP_SEQ_ENUM_125
1180.160 -# define BOOST_PP_SEQ_ENUM_127(x) x, BOOST_PP_SEQ_ENUM_126
1180.161 -# define BOOST_PP_SEQ_ENUM_128(x) x, BOOST_PP_SEQ_ENUM_127
1180.162 -# define BOOST_PP_SEQ_ENUM_129(x) x, BOOST_PP_SEQ_ENUM_128
1180.163 -# define BOOST_PP_SEQ_ENUM_130(x) x, BOOST_PP_SEQ_ENUM_129
1180.164 -# define BOOST_PP_SEQ_ENUM_131(x) x, BOOST_PP_SEQ_ENUM_130
1180.165 -# define BOOST_PP_SEQ_ENUM_132(x) x, BOOST_PP_SEQ_ENUM_131
1180.166 -# define BOOST_PP_SEQ_ENUM_133(x) x, BOOST_PP_SEQ_ENUM_132
1180.167 -# define BOOST_PP_SEQ_ENUM_134(x) x, BOOST_PP_SEQ_ENUM_133
1180.168 -# define BOOST_PP_SEQ_ENUM_135(x) x, BOOST_PP_SEQ_ENUM_134
1180.169 -# define BOOST_PP_SEQ_ENUM_136(x) x, BOOST_PP_SEQ_ENUM_135
1180.170 -# define BOOST_PP_SEQ_ENUM_137(x) x, BOOST_PP_SEQ_ENUM_136
1180.171 -# define BOOST_PP_SEQ_ENUM_138(x) x, BOOST_PP_SEQ_ENUM_137
1180.172 -# define BOOST_PP_SEQ_ENUM_139(x) x, BOOST_PP_SEQ_ENUM_138
1180.173 -# define BOOST_PP_SEQ_ENUM_140(x) x, BOOST_PP_SEQ_ENUM_139
1180.174 -# define BOOST_PP_SEQ_ENUM_141(x) x, BOOST_PP_SEQ_ENUM_140
1180.175 -# define BOOST_PP_SEQ_ENUM_142(x) x, BOOST_PP_SEQ_ENUM_141
1180.176 -# define BOOST_PP_SEQ_ENUM_143(x) x, BOOST_PP_SEQ_ENUM_142
1180.177 -# define BOOST_PP_SEQ_ENUM_144(x) x, BOOST_PP_SEQ_ENUM_143
1180.178 -# define BOOST_PP_SEQ_ENUM_145(x) x, BOOST_PP_SEQ_ENUM_144
1180.179 -# define BOOST_PP_SEQ_ENUM_146(x) x, BOOST_PP_SEQ_ENUM_145
1180.180 -# define BOOST_PP_SEQ_ENUM_147(x) x, BOOST_PP_SEQ_ENUM_146
1180.181 -# define BOOST_PP_SEQ_ENUM_148(x) x, BOOST_PP_SEQ_ENUM_147
1180.182 -# define BOOST_PP_SEQ_ENUM_149(x) x, BOOST_PP_SEQ_ENUM_148
1180.183 -# define BOOST_PP_SEQ_ENUM_150(x) x, BOOST_PP_SEQ_ENUM_149
1180.184 -# define BOOST_PP_SEQ_ENUM_151(x) x, BOOST_PP_SEQ_ENUM_150
1180.185 -# define BOOST_PP_SEQ_ENUM_152(x) x, BOOST_PP_SEQ_ENUM_151
1180.186 -# define BOOST_PP_SEQ_ENUM_153(x) x, BOOST_PP_SEQ_ENUM_152
1180.187 -# define BOOST_PP_SEQ_ENUM_154(x) x, BOOST_PP_SEQ_ENUM_153
1180.188 -# define BOOST_PP_SEQ_ENUM_155(x) x, BOOST_PP_SEQ_ENUM_154
1180.189 -# define BOOST_PP_SEQ_ENUM_156(x) x, BOOST_PP_SEQ_ENUM_155
1180.190 -# define BOOST_PP_SEQ_ENUM_157(x) x, BOOST_PP_SEQ_ENUM_156
1180.191 -# define BOOST_PP_SEQ_ENUM_158(x) x, BOOST_PP_SEQ_ENUM_157
1180.192 -# define BOOST_PP_SEQ_ENUM_159(x) x, BOOST_PP_SEQ_ENUM_158
1180.193 -# define BOOST_PP_SEQ_ENUM_160(x) x, BOOST_PP_SEQ_ENUM_159
1180.194 -# define BOOST_PP_SEQ_ENUM_161(x) x, BOOST_PP_SEQ_ENUM_160
1180.195 -# define BOOST_PP_SEQ_ENUM_162(x) x, BOOST_PP_SEQ_ENUM_161
1180.196 -# define BOOST_PP_SEQ_ENUM_163(x) x, BOOST_PP_SEQ_ENUM_162
1180.197 -# define BOOST_PP_SEQ_ENUM_164(x) x, BOOST_PP_SEQ_ENUM_163
1180.198 -# define BOOST_PP_SEQ_ENUM_165(x) x, BOOST_PP_SEQ_ENUM_164
1180.199 -# define BOOST_PP_SEQ_ENUM_166(x) x, BOOST_PP_SEQ_ENUM_165
1180.200 -# define BOOST_PP_SEQ_ENUM_167(x) x, BOOST_PP_SEQ_ENUM_166
1180.201 -# define BOOST_PP_SEQ_ENUM_168(x) x, BOOST_PP_SEQ_ENUM_167
1180.202 -# define BOOST_PP_SEQ_ENUM_169(x) x, BOOST_PP_SEQ_ENUM_168
1180.203 -# define BOOST_PP_SEQ_ENUM_170(x) x, BOOST_PP_SEQ_ENUM_169
1180.204 -# define BOOST_PP_SEQ_ENUM_171(x) x, BOOST_PP_SEQ_ENUM_170
1180.205 -# define BOOST_PP_SEQ_ENUM_172(x) x, BOOST_PP_SEQ_ENUM_171
1180.206 -# define BOOST_PP_SEQ_ENUM_173(x) x, BOOST_PP_SEQ_ENUM_172
1180.207 -# define BOOST_PP_SEQ_ENUM_174(x) x, BOOST_PP_SEQ_ENUM_173
1180.208 -# define BOOST_PP_SEQ_ENUM_175(x) x, BOOST_PP_SEQ_ENUM_174
1180.209 -# define BOOST_PP_SEQ_ENUM_176(x) x, BOOST_PP_SEQ_ENUM_175
1180.210 -# define BOOST_PP_SEQ_ENUM_177(x) x, BOOST_PP_SEQ_ENUM_176
1180.211 -# define BOOST_PP_SEQ_ENUM_178(x) x, BOOST_PP_SEQ_ENUM_177
1180.212 -# define BOOST_PP_SEQ_ENUM_179(x) x, BOOST_PP_SEQ_ENUM_178
1180.213 -# define BOOST_PP_SEQ_ENUM_180(x) x, BOOST_PP_SEQ_ENUM_179
1180.214 -# define BOOST_PP_SEQ_ENUM_181(x) x, BOOST_PP_SEQ_ENUM_180
1180.215 -# define BOOST_PP_SEQ_ENUM_182(x) x, BOOST_PP_SEQ_ENUM_181
1180.216 -# define BOOST_PP_SEQ_ENUM_183(x) x, BOOST_PP_SEQ_ENUM_182
1180.217 -# define BOOST_PP_SEQ_ENUM_184(x) x, BOOST_PP_SEQ_ENUM_183
1180.218 -# define BOOST_PP_SEQ_ENUM_185(x) x, BOOST_PP_SEQ_ENUM_184
1180.219 -# define BOOST_PP_SEQ_ENUM_186(x) x, BOOST_PP_SEQ_ENUM_185
1180.220 -# define BOOST_PP_SEQ_ENUM_187(x) x, BOOST_PP_SEQ_ENUM_186
1180.221 -# define BOOST_PP_SEQ_ENUM_188(x) x, BOOST_PP_SEQ_ENUM_187
1180.222 -# define BOOST_PP_SEQ_ENUM_189(x) x, BOOST_PP_SEQ_ENUM_188
1180.223 -# define BOOST_PP_SEQ_ENUM_190(x) x, BOOST_PP_SEQ_ENUM_189
1180.224 -# define BOOST_PP_SEQ_ENUM_191(x) x, BOOST_PP_SEQ_ENUM_190
1180.225 -# define BOOST_PP_SEQ_ENUM_192(x) x, BOOST_PP_SEQ_ENUM_191
1180.226 -# define BOOST_PP_SEQ_ENUM_193(x) x, BOOST_PP_SEQ_ENUM_192
1180.227 -# define BOOST_PP_SEQ_ENUM_194(x) x, BOOST_PP_SEQ_ENUM_193
1180.228 -# define BOOST_PP_SEQ_ENUM_195(x) x, BOOST_PP_SEQ_ENUM_194
1180.229 -# define BOOST_PP_SEQ_ENUM_196(x) x, BOOST_PP_SEQ_ENUM_195
1180.230 -# define BOOST_PP_SEQ_ENUM_197(x) x, BOOST_PP_SEQ_ENUM_196
1180.231 -# define BOOST_PP_SEQ_ENUM_198(x) x, BOOST_PP_SEQ_ENUM_197
1180.232 -# define BOOST_PP_SEQ_ENUM_199(x) x, BOOST_PP_SEQ_ENUM_198
1180.233 -# define BOOST_PP_SEQ_ENUM_200(x) x, BOOST_PP_SEQ_ENUM_199
1180.234 -# define BOOST_PP_SEQ_ENUM_201(x) x, BOOST_PP_SEQ_ENUM_200
1180.235 -# define BOOST_PP_SEQ_ENUM_202(x) x, BOOST_PP_SEQ_ENUM_201
1180.236 -# define BOOST_PP_SEQ_ENUM_203(x) x, BOOST_PP_SEQ_ENUM_202
1180.237 -# define BOOST_PP_SEQ_ENUM_204(x) x, BOOST_PP_SEQ_ENUM_203
1180.238 -# define BOOST_PP_SEQ_ENUM_205(x) x, BOOST_PP_SEQ_ENUM_204
1180.239 -# define BOOST_PP_SEQ_ENUM_206(x) x, BOOST_PP_SEQ_ENUM_205
1180.240 -# define BOOST_PP_SEQ_ENUM_207(x) x, BOOST_PP_SEQ_ENUM_206
1180.241 -# define BOOST_PP_SEQ_ENUM_208(x) x, BOOST_PP_SEQ_ENUM_207
1180.242 -# define BOOST_PP_SEQ_ENUM_209(x) x, BOOST_PP_SEQ_ENUM_208
1180.243 -# define BOOST_PP_SEQ_ENUM_210(x) x, BOOST_PP_SEQ_ENUM_209
1180.244 -# define BOOST_PP_SEQ_ENUM_211(x) x, BOOST_PP_SEQ_ENUM_210
1180.245 -# define BOOST_PP_SEQ_ENUM_212(x) x, BOOST_PP_SEQ_ENUM_211
1180.246 -# define BOOST_PP_SEQ_ENUM_213(x) x, BOOST_PP_SEQ_ENUM_212
1180.247 -# define BOOST_PP_SEQ_ENUM_214(x) x, BOOST_PP_SEQ_ENUM_213
1180.248 -# define BOOST_PP_SEQ_ENUM_215(x) x, BOOST_PP_SEQ_ENUM_214
1180.249 -# define BOOST_PP_SEQ_ENUM_216(x) x, BOOST_PP_SEQ_ENUM_215
1180.250 -# define BOOST_PP_SEQ_ENUM_217(x) x, BOOST_PP_SEQ_ENUM_216
1180.251 -# define BOOST_PP_SEQ_ENUM_218(x) x, BOOST_PP_SEQ_ENUM_217
1180.252 -# define BOOST_PP_SEQ_ENUM_219(x) x, BOOST_PP_SEQ_ENUM_218
1180.253 -# define BOOST_PP_SEQ_ENUM_220(x) x, BOOST_PP_SEQ_ENUM_219
1180.254 -# define BOOST_PP_SEQ_ENUM_221(x) x, BOOST_PP_SEQ_ENUM_220
1180.255 -# define BOOST_PP_SEQ_ENUM_222(x) x, BOOST_PP_SEQ_ENUM_221
1180.256 -# define BOOST_PP_SEQ_ENUM_223(x) x, BOOST_PP_SEQ_ENUM_222
1180.257 -# define BOOST_PP_SEQ_ENUM_224(x) x, BOOST_PP_SEQ_ENUM_223
1180.258 -# define BOOST_PP_SEQ_ENUM_225(x) x, BOOST_PP_SEQ_ENUM_224
1180.259 -# define BOOST_PP_SEQ_ENUM_226(x) x, BOOST_PP_SEQ_ENUM_225
1180.260 -# define BOOST_PP_SEQ_ENUM_227(x) x, BOOST_PP_SEQ_ENUM_226
1180.261 -# define BOOST_PP_SEQ_ENUM_228(x) x, BOOST_PP_SEQ_ENUM_227
1180.262 -# define BOOST_PP_SEQ_ENUM_229(x) x, BOOST_PP_SEQ_ENUM_228
1180.263 -# define BOOST_PP_SEQ_ENUM_230(x) x, BOOST_PP_SEQ_ENUM_229
1180.264 -# define BOOST_PP_SEQ_ENUM_231(x) x, BOOST_PP_SEQ_ENUM_230
1180.265 -# define BOOST_PP_SEQ_ENUM_232(x) x, BOOST_PP_SEQ_ENUM_231
1180.266 -# define BOOST_PP_SEQ_ENUM_233(x) x, BOOST_PP_SEQ_ENUM_232
1180.267 -# define BOOST_PP_SEQ_ENUM_234(x) x, BOOST_PP_SEQ_ENUM_233
1180.268 -# define BOOST_PP_SEQ_ENUM_235(x) x, BOOST_PP_SEQ_ENUM_234
1180.269 -# define BOOST_PP_SEQ_ENUM_236(x) x, BOOST_PP_SEQ_ENUM_235
1180.270 -# define BOOST_PP_SEQ_ENUM_237(x) x, BOOST_PP_SEQ_ENUM_236
1180.271 -# define BOOST_PP_SEQ_ENUM_238(x) x, BOOST_PP_SEQ_ENUM_237
1180.272 -# define BOOST_PP_SEQ_ENUM_239(x) x, BOOST_PP_SEQ_ENUM_238
1180.273 -# define BOOST_PP_SEQ_ENUM_240(x) x, BOOST_PP_SEQ_ENUM_239
1180.274 -# define BOOST_PP_SEQ_ENUM_241(x) x, BOOST_PP_SEQ_ENUM_240
1180.275 -# define BOOST_PP_SEQ_ENUM_242(x) x, BOOST_PP_SEQ_ENUM_241
1180.276 -# define BOOST_PP_SEQ_ENUM_243(x) x, BOOST_PP_SEQ_ENUM_242
1180.277 -# define BOOST_PP_SEQ_ENUM_244(x) x, BOOST_PP_SEQ_ENUM_243
1180.278 -# define BOOST_PP_SEQ_ENUM_245(x) x, BOOST_PP_SEQ_ENUM_244
1180.279 -# define BOOST_PP_SEQ_ENUM_246(x) x, BOOST_PP_SEQ_ENUM_245
1180.280 -# define BOOST_PP_SEQ_ENUM_247(x) x, BOOST_PP_SEQ_ENUM_246
1180.281 -# define BOOST_PP_SEQ_ENUM_248(x) x, BOOST_PP_SEQ_ENUM_247
1180.282 -# define BOOST_PP_SEQ_ENUM_249(x) x, BOOST_PP_SEQ_ENUM_248
1180.283 -# define BOOST_PP_SEQ_ENUM_250(x) x, BOOST_PP_SEQ_ENUM_249
1180.284 -# define BOOST_PP_SEQ_ENUM_251(x) x, BOOST_PP_SEQ_ENUM_250
1180.285 -# define BOOST_PP_SEQ_ENUM_252(x) x, BOOST_PP_SEQ_ENUM_251
1180.286 -# define BOOST_PP_SEQ_ENUM_253(x) x, BOOST_PP_SEQ_ENUM_252
1180.287 -# define BOOST_PP_SEQ_ENUM_254(x) x, BOOST_PP_SEQ_ENUM_253
1180.288 -# define BOOST_PP_SEQ_ENUM_255(x) x, BOOST_PP_SEQ_ENUM_254
1180.289 -# define BOOST_PP_SEQ_ENUM_256(x) x, BOOST_PP_SEQ_ENUM_255
1180.290 -#
1180.291 -# endif
  1181.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/filter.hpp	Tue Mar 16 16:12:26 2010 +0000
  1181.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1181.3 @@ -1,54 +0,0 @@
  1181.4 -# /* **************************************************************************
  1181.5 -#  *                                                                          *
  1181.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1181.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1181.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1181.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1181.10 -#  *                                                                          *
 1181.11 -#  ************************************************************************** */
 1181.12 -#
 1181.13 -# /* See http://www.boost.org for most recent version. */
 1181.14 -#
 1181.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FILTER_HPP
 1181.16 -# define BOOST_PREPROCESSOR_SEQ_FILTER_HPP
 1181.17 -#
 1181.18 -# include <boost/preprocessor/config/config.hpp>
 1181.19 -# include <boost/preprocessor/control/expr_if.hpp>
 1181.20 -# include <boost/preprocessor/facilities/empty.hpp>
 1181.21 -# include <boost/preprocessor/seq/fold_left.hpp>
 1181.22 -# include <boost/preprocessor/seq/seq.hpp>
 1181.23 -# include <boost/preprocessor/tuple/elem.hpp>
 1181.24 -# include <boost/preprocessor/tuple/rem.hpp>
 1181.25 -#
 1181.26 -# /* BOOST_PP_SEQ_FILTER */
 1181.27 -#
 1181.28 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1181.29 -#    define BOOST_PP_SEQ_FILTER(pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1181.30 -# else
 1181.31 -#    define BOOST_PP_SEQ_FILTER(pred, data, seq) BOOST_PP_SEQ_FILTER_I(pred, data, seq)
 1181.32 -#    define BOOST_PP_SEQ_FILTER_I(pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1181.33 -# endif
 1181.34 -#
 1181.35 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1181.36 -#    define BOOST_PP_SEQ_FILTER_O(s, st, elem) BOOST_PP_SEQ_FILTER_O_IM(s, BOOST_PP_TUPLE_REM_3 st, elem)
 1181.37 -#    define BOOST_PP_SEQ_FILTER_O_IM(s, im, elem) BOOST_PP_SEQ_FILTER_O_I(s, im, elem)
 1181.38 -# else
 1181.39 -#    define BOOST_PP_SEQ_FILTER_O(s, st, elem) BOOST_PP_SEQ_FILTER_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, st), BOOST_PP_TUPLE_ELEM(3, 1, st), BOOST_PP_TUPLE_ELEM(3, 2, st), elem)
 1181.40 -# endif
 1181.41 -#
 1181.42 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
 1181.43 -#   define BOOST_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res BOOST_PP_EXPR_IF(pred(s, data, elem), (elem)))
 1181.44 -# else
 1181.45 -#   define BOOST_PP_SEQ_FILTER_O_I(s, pred, data, res, elem) (pred, data, res BOOST_PP_EXPR_IF(pred##(s, data, elem), (elem)))
 1181.46 -# endif
 1181.47 -#
 1181.48 -# /* BOOST_PP_SEQ_FILTER_S */
 1181.49 -#
 1181.50 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1181.51 -#    define BOOST_PP_SEQ_FILTER_S(s, pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1181.52 -# else
 1181.53 -#    define BOOST_PP_SEQ_FILTER_S(s, pred, data, seq) BOOST_PP_SEQ_FILTER_S_I(s, pred, data, seq)
 1181.54 -#    define BOOST_PP_SEQ_FILTER_S_I(s, pred, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_FILTER_O, (pred, data, (nil)), seq)))
 1181.55 -# endif
 1181.56 -#
 1181.57 -# endif
  1182.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/first_n.hpp	Tue Mar 16 16:12:26 2010 +0000
  1182.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1182.3 @@ -1,30 +0,0 @@
  1182.4 -# /* **************************************************************************
  1182.5 -#  *                                                                          *
  1182.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1182.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1182.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1182.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1182.10 -#  *                                                                          *
 1182.11 -#  ************************************************************************** */
 1182.12 -#
 1182.13 -# /* See http://www.boost.org for most recent version. */
 1182.14 -#
 1182.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
 1182.16 -# define BOOST_PREPROCESSOR_SEQ_FIRST_N_HPP
 1182.17 -#
 1182.18 -# include <boost/preprocessor/config/config.hpp>
 1182.19 -# include <boost/preprocessor/control/if.hpp>
 1182.20 -# include <boost/preprocessor/seq/detail/split.hpp>
 1182.21 -# include <boost/preprocessor/tuple/eat.hpp>
 1182.22 -# include <boost/preprocessor/tuple/elem.hpp>
 1182.23 -#
 1182.24 -# /* BOOST_PP_SEQ_FIRST_N */
 1182.25 -#
 1182.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1182.27 -#    define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
 1182.28 -# else
 1182.29 -#    define BOOST_PP_SEQ_FIRST_N(n, seq) BOOST_PP_SEQ_FIRST_N_I(n, seq)
 1182.30 -#    define BOOST_PP_SEQ_FIRST_N_I(n, seq) BOOST_PP_IF(n, BOOST_PP_TUPLE_ELEM, BOOST_PP_TUPLE_EAT_3)(2, 0, BOOST_PP_SEQ_SPLIT(n, seq (nil)))
 1182.31 -# endif
 1182.32 -#
 1182.33 -# endif
  1183.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/fold_left.hpp	Tue Mar 16 16:12:26 2010 +0000
  1183.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1183.3 @@ -1,1070 +0,0 @@
  1183.4 -# /* **************************************************************************
  1183.5 -#  *                                                                          *
  1183.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1183.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1183.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1183.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1183.10 -#  *                                                                          *
 1183.11 -#  ************************************************************************** */
 1183.12 -#
 1183.13 -# /* See http://www.boost.org for most recent version. */
 1183.14 -#
 1183.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
 1183.16 -# define BOOST_PREPROCESSOR_SEQ_FOLD_LEFT_HPP
 1183.17 -#
 1183.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1183.19 -# include <boost/preprocessor/cat.hpp>
 1183.20 -# include <boost/preprocessor/control/if.hpp>
 1183.21 -# include <boost/preprocessor/debug/error.hpp>
 1183.22 -# include <boost/preprocessor/detail/auto_rec.hpp>
 1183.23 -# include <boost/preprocessor/seq/seq.hpp>
 1183.24 -# include <boost/preprocessor/seq/size.hpp>
 1183.25 -#
 1183.26 -# /* BOOST_PP_SEQ_FOLD_LEFT */
 1183.27 -#
 1183.28 -# if 0
 1183.29 -#    define BOOST_PP_SEQ_FOLD_LEFT(op, state, seq) ...
 1183.30 -# endif
 1183.31 -#
 1183.32 -# define BOOST_PP_SEQ_FOLD_LEFT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
 1183.33 -# define BOOST_PP_SEQ_FOLD_LEFT_P(n) BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_LEFT_CHECK_, BOOST_PP_SEQ_FOLD_LEFT_I_ ## n(BOOST_PP_SEQ_FOLD_LEFT_O, BOOST_PP_NIL, (nil), 1))
 1183.34 -# define BOOST_PP_SEQ_FOLD_LEFT_O(s, st, _) st
 1183.35 -#
 1183.36 -# define BOOST_PP_SEQ_FOLD_LEFT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
 1183.37 -# define BOOST_PP_SEQ_FOLD_LEFT_I_257(op, st, ss, sz) BOOST_PP_ERROR(0x0005)
 1183.38 -#
 1183.39 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_NIL 1
 1183.40 -#
 1183.41 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) 0
 1183.42 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) 0
 1183.43 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) 0
 1183.44 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) 0
 1183.45 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) 0
 1183.46 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) 0
 1183.47 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) 0
 1183.48 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) 0
 1183.49 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) 0
 1183.50 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) 0
 1183.51 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) 0
 1183.52 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) 0
 1183.53 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) 0
 1183.54 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) 0
 1183.55 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) 0
 1183.56 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) 0
 1183.57 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) 0
 1183.58 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) 0
 1183.59 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) 0
 1183.60 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) 0
 1183.61 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) 0
 1183.62 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) 0
 1183.63 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) 0
 1183.64 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) 0
 1183.65 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) 0
 1183.66 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) 0
 1183.67 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) 0
 1183.68 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) 0
 1183.69 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) 0
 1183.70 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) 0
 1183.71 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) 0
 1183.72 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) 0
 1183.73 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) 0
 1183.74 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) 0
 1183.75 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) 0
 1183.76 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) 0
 1183.77 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) 0
 1183.78 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) 0
 1183.79 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) 0
 1183.80 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) 0
 1183.81 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) 0
 1183.82 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) 0
 1183.83 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) 0
 1183.84 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) 0
 1183.85 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) 0
 1183.86 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) 0
 1183.87 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) 0
 1183.88 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) 0
 1183.89 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) 0
 1183.90 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) 0
 1183.91 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) 0
 1183.92 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) 0
 1183.93 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) 0
 1183.94 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) 0
 1183.95 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) 0
 1183.96 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) 0
 1183.97 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) 0
 1183.98 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) 0
 1183.99 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) 0
1183.100 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) 0
1183.101 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) 0
1183.102 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) 0
1183.103 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) 0
1183.104 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) 0
1183.105 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) 0
1183.106 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) 0
1183.107 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) 0
1183.108 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) 0
1183.109 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) 0
1183.110 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) 0
1183.111 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) 0
1183.112 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) 0
1183.113 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) 0
1183.114 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) 0
1183.115 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) 0
1183.116 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) 0
1183.117 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) 0
1183.118 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) 0
1183.119 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) 0
1183.120 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) 0
1183.121 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) 0
1183.122 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) 0
1183.123 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) 0
1183.124 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) 0
1183.125 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) 0
1183.126 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) 0
1183.127 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) 0
1183.128 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) 0
1183.129 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) 0
1183.130 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) 0
1183.131 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) 0
1183.132 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) 0
1183.133 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) 0
1183.134 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) 0
1183.135 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) 0
1183.136 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) 0
1183.137 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) 0
1183.138 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) 0
1183.139 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) 0
1183.140 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) 0
1183.141 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) 0
1183.142 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) 0
1183.143 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) 0
1183.144 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) 0
1183.145 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) 0
1183.146 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) 0
1183.147 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) 0
1183.148 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) 0
1183.149 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) 0
1183.150 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) 0
1183.151 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) 0
1183.152 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) 0
1183.153 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) 0
1183.154 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) 0
1183.155 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) 0
1183.156 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) 0
1183.157 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) 0
1183.158 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) 0
1183.159 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) 0
1183.160 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) 0
1183.161 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) 0
1183.162 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) 0
1183.163 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) 0
1183.164 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) 0
1183.165 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) 0
1183.166 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) 0
1183.167 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) 0
1183.168 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) 0
1183.169 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) 0
1183.170 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) 0
1183.171 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) 0
1183.172 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) 0
1183.173 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) 0
1183.174 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) 0
1183.175 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) 0
1183.176 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) 0
1183.177 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) 0
1183.178 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) 0
1183.179 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) 0
1183.180 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) 0
1183.181 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) 0
1183.182 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) 0
1183.183 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) 0
1183.184 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) 0
1183.185 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) 0
1183.186 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) 0
1183.187 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) 0
1183.188 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) 0
1183.189 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) 0
1183.190 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) 0
1183.191 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) 0
1183.192 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) 0
1183.193 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) 0
1183.194 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) 0
1183.195 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) 0
1183.196 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) 0
1183.197 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) 0
1183.198 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) 0
1183.199 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) 0
1183.200 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) 0
1183.201 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) 0
1183.202 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) 0
1183.203 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) 0
1183.204 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) 0
1183.205 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) 0
1183.206 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) 0
1183.207 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) 0
1183.208 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) 0
1183.209 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) 0
1183.210 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) 0
1183.211 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) 0
1183.212 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) 0
1183.213 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) 0
1183.214 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) 0
1183.215 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) 0
1183.216 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) 0
1183.217 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) 0
1183.218 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) 0
1183.219 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) 0
1183.220 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) 0
1183.221 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) 0
1183.222 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) 0
1183.223 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) 0
1183.224 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) 0
1183.225 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) 0
1183.226 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) 0
1183.227 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) 0
1183.228 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) 0
1183.229 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) 0
1183.230 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) 0
1183.231 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) 0
1183.232 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) 0
1183.233 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) 0
1183.234 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) 0
1183.235 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) 0
1183.236 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) 0
1183.237 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) 0
1183.238 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) 0
1183.239 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) 0
1183.240 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) 0
1183.241 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) 0
1183.242 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) 0
1183.243 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) 0
1183.244 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) 0
1183.245 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) 0
1183.246 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) 0
1183.247 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) 0
1183.248 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) 0
1183.249 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) 0
1183.250 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) 0
1183.251 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) 0
1183.252 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) 0
1183.253 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) 0
1183.254 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) 0
1183.255 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) 0
1183.256 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) 0
1183.257 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) 0
1183.258 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) 0
1183.259 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) 0
1183.260 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) 0
1183.261 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) 0
1183.262 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) 0
1183.263 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) 0
1183.264 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) 0
1183.265 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) 0
1183.266 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) 0
1183.267 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) 0
1183.268 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) 0
1183.269 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) 0
1183.270 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) 0
1183.271 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) 0
1183.272 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) 0
1183.273 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) 0
1183.274 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) 0
1183.275 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) 0
1183.276 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) 0
1183.277 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) 0
1183.278 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) 0
1183.279 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) 0
1183.280 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) 0
1183.281 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) 0
1183.282 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) 0
1183.283 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) 0
1183.284 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) 0
1183.285 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) 0
1183.286 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) 0
1183.287 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) 0
1183.288 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) 0
1183.289 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) 0
1183.290 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) 0
1183.291 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) 0
1183.292 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) 0
1183.293 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) 0
1183.294 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) 0
1183.295 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) 0
1183.296 -# define BOOST_PP_SEQ_FOLD_LEFT_CHECK_BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) 0
1183.297 -#
1183.298 -# define BOOST_PP_SEQ_FOLD_LEFT_F(op, st, ss, sz) st
1183.299 -#
1183.300 -# define BOOST_PP_SEQ_FOLD_LEFT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.301 -# define BOOST_PP_SEQ_FOLD_LEFT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.302 -# define BOOST_PP_SEQ_FOLD_LEFT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.303 -# define BOOST_PP_SEQ_FOLD_LEFT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.304 -# define BOOST_PP_SEQ_FOLD_LEFT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.305 -# define BOOST_PP_SEQ_FOLD_LEFT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.306 -# define BOOST_PP_SEQ_FOLD_LEFT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.307 -# define BOOST_PP_SEQ_FOLD_LEFT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.308 -# define BOOST_PP_SEQ_FOLD_LEFT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.309 -# define BOOST_PP_SEQ_FOLD_LEFT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.310 -# define BOOST_PP_SEQ_FOLD_LEFT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.311 -# define BOOST_PP_SEQ_FOLD_LEFT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.312 -# define BOOST_PP_SEQ_FOLD_LEFT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.313 -# define BOOST_PP_SEQ_FOLD_LEFT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.314 -# define BOOST_PP_SEQ_FOLD_LEFT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.315 -# define BOOST_PP_SEQ_FOLD_LEFT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.316 -# define BOOST_PP_SEQ_FOLD_LEFT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.317 -# define BOOST_PP_SEQ_FOLD_LEFT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.318 -# define BOOST_PP_SEQ_FOLD_LEFT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.319 -# define BOOST_PP_SEQ_FOLD_LEFT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.320 -# define BOOST_PP_SEQ_FOLD_LEFT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.321 -# define BOOST_PP_SEQ_FOLD_LEFT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.322 -# define BOOST_PP_SEQ_FOLD_LEFT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.323 -# define BOOST_PP_SEQ_FOLD_LEFT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.324 -# define BOOST_PP_SEQ_FOLD_LEFT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.325 -# define BOOST_PP_SEQ_FOLD_LEFT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.326 -# define BOOST_PP_SEQ_FOLD_LEFT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.327 -# define BOOST_PP_SEQ_FOLD_LEFT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.328 -# define BOOST_PP_SEQ_FOLD_LEFT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.329 -# define BOOST_PP_SEQ_FOLD_LEFT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.330 -# define BOOST_PP_SEQ_FOLD_LEFT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.331 -# define BOOST_PP_SEQ_FOLD_LEFT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.332 -# define BOOST_PP_SEQ_FOLD_LEFT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.333 -# define BOOST_PP_SEQ_FOLD_LEFT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.334 -# define BOOST_PP_SEQ_FOLD_LEFT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.335 -# define BOOST_PP_SEQ_FOLD_LEFT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.336 -# define BOOST_PP_SEQ_FOLD_LEFT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.337 -# define BOOST_PP_SEQ_FOLD_LEFT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.338 -# define BOOST_PP_SEQ_FOLD_LEFT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.339 -# define BOOST_PP_SEQ_FOLD_LEFT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.340 -# define BOOST_PP_SEQ_FOLD_LEFT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.341 -# define BOOST_PP_SEQ_FOLD_LEFT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.342 -# define BOOST_PP_SEQ_FOLD_LEFT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.343 -# define BOOST_PP_SEQ_FOLD_LEFT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.344 -# define BOOST_PP_SEQ_FOLD_LEFT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.345 -# define BOOST_PP_SEQ_FOLD_LEFT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.346 -# define BOOST_PP_SEQ_FOLD_LEFT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.347 -# define BOOST_PP_SEQ_FOLD_LEFT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.348 -# define BOOST_PP_SEQ_FOLD_LEFT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.349 -# define BOOST_PP_SEQ_FOLD_LEFT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.350 -# define BOOST_PP_SEQ_FOLD_LEFT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.351 -# define BOOST_PP_SEQ_FOLD_LEFT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.352 -# define BOOST_PP_SEQ_FOLD_LEFT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.353 -# define BOOST_PP_SEQ_FOLD_LEFT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.354 -# define BOOST_PP_SEQ_FOLD_LEFT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.355 -# define BOOST_PP_SEQ_FOLD_LEFT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.356 -# define BOOST_PP_SEQ_FOLD_LEFT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.357 -# define BOOST_PP_SEQ_FOLD_LEFT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.358 -# define BOOST_PP_SEQ_FOLD_LEFT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.359 -# define BOOST_PP_SEQ_FOLD_LEFT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.360 -# define BOOST_PP_SEQ_FOLD_LEFT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.361 -# define BOOST_PP_SEQ_FOLD_LEFT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.362 -# define BOOST_PP_SEQ_FOLD_LEFT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.363 -# define BOOST_PP_SEQ_FOLD_LEFT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.364 -# define BOOST_PP_SEQ_FOLD_LEFT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.365 -# define BOOST_PP_SEQ_FOLD_LEFT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.366 -# define BOOST_PP_SEQ_FOLD_LEFT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.367 -# define BOOST_PP_SEQ_FOLD_LEFT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.368 -# define BOOST_PP_SEQ_FOLD_LEFT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.369 -# define BOOST_PP_SEQ_FOLD_LEFT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.370 -# define BOOST_PP_SEQ_FOLD_LEFT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.371 -# define BOOST_PP_SEQ_FOLD_LEFT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.372 -# define BOOST_PP_SEQ_FOLD_LEFT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.373 -# define BOOST_PP_SEQ_FOLD_LEFT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.374 -# define BOOST_PP_SEQ_FOLD_LEFT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.375 -# define BOOST_PP_SEQ_FOLD_LEFT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.376 -# define BOOST_PP_SEQ_FOLD_LEFT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.377 -# define BOOST_PP_SEQ_FOLD_LEFT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.378 -# define BOOST_PP_SEQ_FOLD_LEFT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.379 -# define BOOST_PP_SEQ_FOLD_LEFT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.380 -# define BOOST_PP_SEQ_FOLD_LEFT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.381 -# define BOOST_PP_SEQ_FOLD_LEFT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.382 -# define BOOST_PP_SEQ_FOLD_LEFT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.383 -# define BOOST_PP_SEQ_FOLD_LEFT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.384 -# define BOOST_PP_SEQ_FOLD_LEFT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.385 -# define BOOST_PP_SEQ_FOLD_LEFT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.386 -# define BOOST_PP_SEQ_FOLD_LEFT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.387 -# define BOOST_PP_SEQ_FOLD_LEFT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.388 -# define BOOST_PP_SEQ_FOLD_LEFT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.389 -# define BOOST_PP_SEQ_FOLD_LEFT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.390 -# define BOOST_PP_SEQ_FOLD_LEFT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.391 -# define BOOST_PP_SEQ_FOLD_LEFT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.392 -# define BOOST_PP_SEQ_FOLD_LEFT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.393 -# define BOOST_PP_SEQ_FOLD_LEFT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.394 -# define BOOST_PP_SEQ_FOLD_LEFT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.395 -# define BOOST_PP_SEQ_FOLD_LEFT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.396 -# define BOOST_PP_SEQ_FOLD_LEFT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.397 -# define BOOST_PP_SEQ_FOLD_LEFT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.398 -# define BOOST_PP_SEQ_FOLD_LEFT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.399 -# define BOOST_PP_SEQ_FOLD_LEFT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.400 -# define BOOST_PP_SEQ_FOLD_LEFT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.401 -# define BOOST_PP_SEQ_FOLD_LEFT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.402 -# define BOOST_PP_SEQ_FOLD_LEFT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.403 -# define BOOST_PP_SEQ_FOLD_LEFT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.404 -# define BOOST_PP_SEQ_FOLD_LEFT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.405 -# define BOOST_PP_SEQ_FOLD_LEFT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.406 -# define BOOST_PP_SEQ_FOLD_LEFT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.407 -# define BOOST_PP_SEQ_FOLD_LEFT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.408 -# define BOOST_PP_SEQ_FOLD_LEFT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.409 -# define BOOST_PP_SEQ_FOLD_LEFT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.410 -# define BOOST_PP_SEQ_FOLD_LEFT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.411 -# define BOOST_PP_SEQ_FOLD_LEFT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.412 -# define BOOST_PP_SEQ_FOLD_LEFT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.413 -# define BOOST_PP_SEQ_FOLD_LEFT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.414 -# define BOOST_PP_SEQ_FOLD_LEFT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.415 -# define BOOST_PP_SEQ_FOLD_LEFT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.416 -# define BOOST_PP_SEQ_FOLD_LEFT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.417 -# define BOOST_PP_SEQ_FOLD_LEFT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.418 -# define BOOST_PP_SEQ_FOLD_LEFT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.419 -# define BOOST_PP_SEQ_FOLD_LEFT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.420 -# define BOOST_PP_SEQ_FOLD_LEFT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.421 -# define BOOST_PP_SEQ_FOLD_LEFT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.422 -# define BOOST_PP_SEQ_FOLD_LEFT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.423 -# define BOOST_PP_SEQ_FOLD_LEFT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.424 -# define BOOST_PP_SEQ_FOLD_LEFT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.425 -# define BOOST_PP_SEQ_FOLD_LEFT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.426 -# define BOOST_PP_SEQ_FOLD_LEFT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.427 -# define BOOST_PP_SEQ_FOLD_LEFT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.428 -# define BOOST_PP_SEQ_FOLD_LEFT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.429 -# define BOOST_PP_SEQ_FOLD_LEFT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.430 -# define BOOST_PP_SEQ_FOLD_LEFT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.431 -# define BOOST_PP_SEQ_FOLD_LEFT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.432 -# define BOOST_PP_SEQ_FOLD_LEFT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.433 -# define BOOST_PP_SEQ_FOLD_LEFT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.434 -# define BOOST_PP_SEQ_FOLD_LEFT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.435 -# define BOOST_PP_SEQ_FOLD_LEFT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.436 -# define BOOST_PP_SEQ_FOLD_LEFT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.437 -# define BOOST_PP_SEQ_FOLD_LEFT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.438 -# define BOOST_PP_SEQ_FOLD_LEFT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.439 -# define BOOST_PP_SEQ_FOLD_LEFT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.440 -# define BOOST_PP_SEQ_FOLD_LEFT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.441 -# define BOOST_PP_SEQ_FOLD_LEFT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.442 -# define BOOST_PP_SEQ_FOLD_LEFT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.443 -# define BOOST_PP_SEQ_FOLD_LEFT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.444 -# define BOOST_PP_SEQ_FOLD_LEFT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.445 -# define BOOST_PP_SEQ_FOLD_LEFT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.446 -# define BOOST_PP_SEQ_FOLD_LEFT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.447 -# define BOOST_PP_SEQ_FOLD_LEFT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.448 -# define BOOST_PP_SEQ_FOLD_LEFT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.449 -# define BOOST_PP_SEQ_FOLD_LEFT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.450 -# define BOOST_PP_SEQ_FOLD_LEFT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.451 -# define BOOST_PP_SEQ_FOLD_LEFT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.452 -# define BOOST_PP_SEQ_FOLD_LEFT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.453 -# define BOOST_PP_SEQ_FOLD_LEFT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.454 -# define BOOST_PP_SEQ_FOLD_LEFT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.455 -# define BOOST_PP_SEQ_FOLD_LEFT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.456 -# define BOOST_PP_SEQ_FOLD_LEFT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.457 -# define BOOST_PP_SEQ_FOLD_LEFT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.458 -# define BOOST_PP_SEQ_FOLD_LEFT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.459 -# define BOOST_PP_SEQ_FOLD_LEFT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.460 -# define BOOST_PP_SEQ_FOLD_LEFT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.461 -# define BOOST_PP_SEQ_FOLD_LEFT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.462 -# define BOOST_PP_SEQ_FOLD_LEFT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.463 -# define BOOST_PP_SEQ_FOLD_LEFT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.464 -# define BOOST_PP_SEQ_FOLD_LEFT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.465 -# define BOOST_PP_SEQ_FOLD_LEFT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.466 -# define BOOST_PP_SEQ_FOLD_LEFT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.467 -# define BOOST_PP_SEQ_FOLD_LEFT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.468 -# define BOOST_PP_SEQ_FOLD_LEFT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.469 -# define BOOST_PP_SEQ_FOLD_LEFT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.470 -# define BOOST_PP_SEQ_FOLD_LEFT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.471 -# define BOOST_PP_SEQ_FOLD_LEFT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.472 -# define BOOST_PP_SEQ_FOLD_LEFT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.473 -# define BOOST_PP_SEQ_FOLD_LEFT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.474 -# define BOOST_PP_SEQ_FOLD_LEFT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.475 -# define BOOST_PP_SEQ_FOLD_LEFT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.476 -# define BOOST_PP_SEQ_FOLD_LEFT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.477 -# define BOOST_PP_SEQ_FOLD_LEFT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.478 -# define BOOST_PP_SEQ_FOLD_LEFT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.479 -# define BOOST_PP_SEQ_FOLD_LEFT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.480 -# define BOOST_PP_SEQ_FOLD_LEFT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.481 -# define BOOST_PP_SEQ_FOLD_LEFT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.482 -# define BOOST_PP_SEQ_FOLD_LEFT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.483 -# define BOOST_PP_SEQ_FOLD_LEFT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.484 -# define BOOST_PP_SEQ_FOLD_LEFT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.485 -# define BOOST_PP_SEQ_FOLD_LEFT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.486 -# define BOOST_PP_SEQ_FOLD_LEFT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.487 -# define BOOST_PP_SEQ_FOLD_LEFT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.488 -# define BOOST_PP_SEQ_FOLD_LEFT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.489 -# define BOOST_PP_SEQ_FOLD_LEFT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.490 -# define BOOST_PP_SEQ_FOLD_LEFT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.491 -# define BOOST_PP_SEQ_FOLD_LEFT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.492 -# define BOOST_PP_SEQ_FOLD_LEFT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.493 -# define BOOST_PP_SEQ_FOLD_LEFT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.494 -# define BOOST_PP_SEQ_FOLD_LEFT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.495 -# define BOOST_PP_SEQ_FOLD_LEFT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.496 -# define BOOST_PP_SEQ_FOLD_LEFT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.497 -# define BOOST_PP_SEQ_FOLD_LEFT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.498 -# define BOOST_PP_SEQ_FOLD_LEFT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.499 -# define BOOST_PP_SEQ_FOLD_LEFT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.500 -# define BOOST_PP_SEQ_FOLD_LEFT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.501 -# define BOOST_PP_SEQ_FOLD_LEFT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.502 -# define BOOST_PP_SEQ_FOLD_LEFT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.503 -# define BOOST_PP_SEQ_FOLD_LEFT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.504 -# define BOOST_PP_SEQ_FOLD_LEFT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.505 -# define BOOST_PP_SEQ_FOLD_LEFT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.506 -# define BOOST_PP_SEQ_FOLD_LEFT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.507 -# define BOOST_PP_SEQ_FOLD_LEFT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.508 -# define BOOST_PP_SEQ_FOLD_LEFT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.509 -# define BOOST_PP_SEQ_FOLD_LEFT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.510 -# define BOOST_PP_SEQ_FOLD_LEFT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.511 -# define BOOST_PP_SEQ_FOLD_LEFT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.512 -# define BOOST_PP_SEQ_FOLD_LEFT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.513 -# define BOOST_PP_SEQ_FOLD_LEFT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.514 -# define BOOST_PP_SEQ_FOLD_LEFT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.515 -# define BOOST_PP_SEQ_FOLD_LEFT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.516 -# define BOOST_PP_SEQ_FOLD_LEFT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.517 -# define BOOST_PP_SEQ_FOLD_LEFT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.518 -# define BOOST_PP_SEQ_FOLD_LEFT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.519 -# define BOOST_PP_SEQ_FOLD_LEFT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.520 -# define BOOST_PP_SEQ_FOLD_LEFT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.521 -# define BOOST_PP_SEQ_FOLD_LEFT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.522 -# define BOOST_PP_SEQ_FOLD_LEFT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.523 -# define BOOST_PP_SEQ_FOLD_LEFT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.524 -# define BOOST_PP_SEQ_FOLD_LEFT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.525 -# define BOOST_PP_SEQ_FOLD_LEFT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.526 -# define BOOST_PP_SEQ_FOLD_LEFT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.527 -# define BOOST_PP_SEQ_FOLD_LEFT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.528 -# define BOOST_PP_SEQ_FOLD_LEFT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.529 -# define BOOST_PP_SEQ_FOLD_LEFT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.530 -# define BOOST_PP_SEQ_FOLD_LEFT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.531 -# define BOOST_PP_SEQ_FOLD_LEFT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.532 -# define BOOST_PP_SEQ_FOLD_LEFT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.533 -# define BOOST_PP_SEQ_FOLD_LEFT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.534 -# define BOOST_PP_SEQ_FOLD_LEFT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.535 -# define BOOST_PP_SEQ_FOLD_LEFT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.536 -# define BOOST_PP_SEQ_FOLD_LEFT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.537 -# define BOOST_PP_SEQ_FOLD_LEFT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.538 -# define BOOST_PP_SEQ_FOLD_LEFT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.539 -# define BOOST_PP_SEQ_FOLD_LEFT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.540 -# define BOOST_PP_SEQ_FOLD_LEFT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.541 -# define BOOST_PP_SEQ_FOLD_LEFT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.542 -# define BOOST_PP_SEQ_FOLD_LEFT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.543 -# define BOOST_PP_SEQ_FOLD_LEFT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.544 -# define BOOST_PP_SEQ_FOLD_LEFT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.545 -# define BOOST_PP_SEQ_FOLD_LEFT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.546 -# define BOOST_PP_SEQ_FOLD_LEFT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.547 -# define BOOST_PP_SEQ_FOLD_LEFT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.548 -# define BOOST_PP_SEQ_FOLD_LEFT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.549 -# define BOOST_PP_SEQ_FOLD_LEFT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.550 -# define BOOST_PP_SEQ_FOLD_LEFT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.551 -# define BOOST_PP_SEQ_FOLD_LEFT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.552 -# define BOOST_PP_SEQ_FOLD_LEFT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.553 -# define BOOST_PP_SEQ_FOLD_LEFT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.554 -# define BOOST_PP_SEQ_FOLD_LEFT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.555 -# define BOOST_PP_SEQ_FOLD_LEFT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, BOOST_PP_SEQ_SIZE(ss))
1183.556 -#
1183.557 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_DMC()
1183.558 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.559 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.560 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.561 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.562 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.563 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.564 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.565 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.566 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.567 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.568 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.569 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.570 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.571 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.572 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.573 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.574 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.575 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.576 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.577 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.578 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.579 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.580 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.581 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.582 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.583 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.584 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.585 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.586 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.587 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.588 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.589 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.590 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.591 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.592 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.593 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.594 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.595 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.596 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.597 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.598 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.599 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.600 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.601 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.602 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.603 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.604 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.605 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.606 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.607 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.608 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.609 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.610 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.611 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.612 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.613 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.614 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.615 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.616 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.617 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.618 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.619 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.620 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.621 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.622 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.623 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.624 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.625 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.626 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.627 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.628 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.629 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.630 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.631 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.632 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.633 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.634 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.635 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.636 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.637 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.638 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.639 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.640 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.641 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.642 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.643 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.644 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.645 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.646 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.647 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.648 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.649 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.650 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.651 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.652 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.653 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.654 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.655 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.656 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.657 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.658 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.659 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.660 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.661 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.662 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.663 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.664 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.665 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.666 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.667 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.668 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.669 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.670 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.671 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.672 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.673 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.674 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.675 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.676 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.677 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.678 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.679 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.680 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.681 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.682 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.683 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.684 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.685 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.686 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.687 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.688 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.689 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.690 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.691 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.692 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.693 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.694 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.695 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.696 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.697 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.698 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.699 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.700 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.701 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.702 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.703 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.704 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.705 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.706 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.707 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.708 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.709 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.710 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.711 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.712 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.713 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.714 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.715 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.716 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.717 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.718 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.719 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.720 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.721 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.722 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.723 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.724 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.725 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.726 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.727 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.728 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.729 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.730 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.731 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.732 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.733 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.734 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.735 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.736 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.737 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.738 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.739 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.740 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.741 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.742 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.743 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.744 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.745 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.746 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.747 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.748 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.749 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.750 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.751 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.752 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.753 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.754 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.755 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.756 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.757 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.758 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.759 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.760 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.761 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.762 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.763 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.764 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.765 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.766 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.767 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.768 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.769 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.770 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.771 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.772 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.773 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.774 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.775 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.776 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.777 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.778 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.779 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.780 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.781 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.782 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.783 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.784 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.785 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.786 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.787 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.788 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.789 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.790 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.791 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.792 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.793 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.794 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.795 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.796 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.797 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.798 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.799 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.800 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.801 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.802 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.803 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.804 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.805 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.806 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.807 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.808 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.809 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.810 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.811 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.812 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.813 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.814 -# else
1183.815 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_2, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(2, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.816 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_3, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(3, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.817 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_4, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(4, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.818 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_5, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(5, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.819 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_6, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(6, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.820 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_7, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(7, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.821 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_8, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(8, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.822 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_9, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(9, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.823 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_10, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(10, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.824 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_11, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(11, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.825 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_12, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(12, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.826 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_13, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(13, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.827 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_14, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(14, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.828 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_15, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(15, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.829 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_16, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(16, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.830 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_17, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(17, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.831 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_18, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(18, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.832 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_19, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(19, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.833 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_20, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(20, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.834 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_21, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(21, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.835 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_22, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(22, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.836 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_23, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(23, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.837 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_24, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(24, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.838 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_25, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(25, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.839 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_26, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(26, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.840 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_27, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(27, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.841 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_28, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(28, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.842 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_29, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(29, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.843 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_30, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(30, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.844 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_31, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(31, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.845 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_32, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(32, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.846 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_33, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(33, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.847 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_34, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(34, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.848 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_35, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(35, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.849 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_36, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(36, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.850 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_37, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(37, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.851 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_38, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(38, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.852 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_39, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(39, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.853 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_40, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(40, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.854 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_41, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(41, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.855 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_42, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(42, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.856 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_43, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(43, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.857 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_44, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(44, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.858 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_45, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(45, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.859 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_46, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(46, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.860 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_47, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(47, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.861 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_48, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(48, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.862 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_49, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(49, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.863 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_50, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(50, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.864 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_51, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(51, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.865 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_52, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(52, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.866 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_53, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(53, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.867 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_54, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(54, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.868 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_55, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(55, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.869 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_56, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(56, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.870 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_57, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(57, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.871 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_58, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(58, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.872 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_59, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(59, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.873 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_60, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(60, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.874 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_61, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(61, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.875 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_62, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(62, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.876 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_63, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(63, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.877 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_64, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(64, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.878 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_65, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(65, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.879 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_66, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(66, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.880 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_67, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(67, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.881 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_68, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(68, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.882 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_69, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(69, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.883 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_70, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(70, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.884 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_71, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(71, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.885 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_72, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(72, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.886 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_73, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(73, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.887 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_74, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(74, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.888 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_75, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(75, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.889 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_76, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(76, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.890 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_77, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(77, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.891 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_78, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(78, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.892 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_79, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(79, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.893 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_80, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(80, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.894 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_81, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(81, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.895 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_82, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(82, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.896 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_83, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(83, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.897 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_84, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(84, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.898 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_85, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(85, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.899 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_86, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(86, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.900 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_87, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(87, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.901 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_88, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(88, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.902 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_89, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(89, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.903 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_90, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(90, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.904 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_91, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(91, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.905 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_92, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(92, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.906 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_93, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(93, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.907 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_94, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(94, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.908 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_95, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(95, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.909 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_96, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(96, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.910 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_97, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(97, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.911 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_98, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(98, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.912 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_99, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(99, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.913 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_100, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(100, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.914 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_101, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(101, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.915 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_102, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(102, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.916 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_103, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(103, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.917 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_104, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(104, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.918 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_105, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(105, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.919 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_106, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(106, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.920 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_107, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(107, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.921 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_108, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(108, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.922 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_109, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(109, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.923 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_110, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(110, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.924 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_111, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(111, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.925 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_112, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(112, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.926 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_113, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(113, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.927 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_114, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(114, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.928 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_115, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(115, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.929 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_116, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(116, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.930 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_117, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(117, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.931 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_118, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(118, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.932 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_119, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(119, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.933 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_120, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(120, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.934 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_121, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(121, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.935 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_122, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(122, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.936 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_123, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(123, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.937 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_124, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(124, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.938 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_125, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(125, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.939 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_126, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(126, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.940 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_127, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(127, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.941 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_128, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(128, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.942 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_129, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(129, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.943 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_130, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(130, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.944 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_131, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(131, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.945 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_132, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(132, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.946 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_133, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(133, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.947 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_134, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(134, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.948 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_135, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(135, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.949 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_136, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(136, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.950 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_137, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(137, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.951 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_138, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(138, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.952 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_139, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(139, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.953 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_140, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(140, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.954 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_141, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(141, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.955 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_142, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(142, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.956 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_143, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(143, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.957 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_144, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(144, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.958 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_145, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(145, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.959 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_146, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(146, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.960 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_147, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(147, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.961 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_148, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(148, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.962 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_149, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(149, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.963 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_150, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(150, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.964 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_151, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(151, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.965 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_152, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(152, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.966 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_153, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(153, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.967 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_154, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(154, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.968 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_155, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(155, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.969 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_156, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(156, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.970 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_157, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(157, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.971 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_158, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(158, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.972 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_159, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(159, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.973 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_160, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(160, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.974 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_161, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(161, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.975 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_162, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(162, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.976 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_163, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(163, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.977 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_164, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(164, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.978 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_165, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(165, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.979 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_166, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(166, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.980 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_167, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(167, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.981 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_168, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(168, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.982 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_169, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(169, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.983 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_170, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(170, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.984 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_171, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(171, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.985 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_172, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(172, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.986 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_173, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(173, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.987 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_174, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(174, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.988 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_175, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(175, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.989 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_176, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(176, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.990 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_177, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(177, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.991 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_178, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(178, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.992 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_179, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(179, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.993 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_180, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(180, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.994 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_181, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(181, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.995 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_182, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(182, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.996 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_183, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(183, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.997 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_184, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(184, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.998 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_185, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(185, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.999 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_186, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(186, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1000 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_187, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(187, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1001 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_188, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(188, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1002 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_189, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(189, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1003 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_190, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(190, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1004 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_191, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(191, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1005 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_192, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(192, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1006 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_193, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(193, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1007 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_194, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(194, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1008 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_195, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(195, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1009 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_196, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(196, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1010 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_197, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(197, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1011 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_198, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(198, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1012 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_199, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(199, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1013 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_200, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(200, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1014 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_201, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(201, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1015 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_202, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(202, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1016 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_203, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(203, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1017 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_204, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(204, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1018 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_205, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(205, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1019 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_206, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(206, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1020 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_207, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(207, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1021 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_208, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(208, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1022 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_209, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(209, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1023 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_210, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(210, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1024 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_211, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(211, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1025 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_212, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(212, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1026 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_213, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(213, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1027 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_214, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(214, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1028 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_215, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(215, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1029 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_216, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(216, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1030 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_217, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(217, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1031 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_218, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(218, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1032 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_219, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(219, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1033 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_220, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(220, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1034 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_221, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(221, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1035 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_222, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(222, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1036 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_223, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(223, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1037 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_224, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(224, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1038 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_225, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(225, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1039 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_226, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(226, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1040 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_227, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(227, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1041 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_228, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(228, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1042 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_229, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(229, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1043 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_230, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(230, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1044 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_231, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(231, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1045 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_232, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(232, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1046 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_233, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(233, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1047 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_234, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(234, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1048 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_235, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(235, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1049 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_236, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(236, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1050 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_237, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(237, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1051 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_238, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(238, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1052 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_239, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(239, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1053 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_240, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(240, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1054 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_241, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(241, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1055 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_242, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(242, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1056 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_243, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(243, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1057 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_244, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(244, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1058 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_245, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(245, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1059 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_246, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(246, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1060 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_247, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(247, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1061 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_248, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(248, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1062 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_249, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(249, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1063 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_250, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(250, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1064 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_251, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(251, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1065 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_252, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(252, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1066 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_253, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(253, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1067 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_254, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(254, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1068 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_255, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(255, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1069 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_256, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(256, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1070 -#    define BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, ss, sz) BOOST_PP_IF(BOOST_PP_DEC(sz), BOOST_PP_SEQ_FOLD_LEFT_I_257, BOOST_PP_SEQ_FOLD_LEFT_F)(op, op##(257, st, BOOST_PP_SEQ_HEAD(ss)), BOOST_PP_SEQ_TAIL(ss), BOOST_PP_DEC(sz))
1183.1071 -# endif
1183.1072 -#
1183.1073 -# endif
  1184.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/fold_right.hpp	Tue Mar 16 16:12:26 2010 +0000
  1184.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1184.3 @@ -1,288 +0,0 @@
  1184.4 -# /* **************************************************************************
  1184.5 -#  *                                                                          *
  1184.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1184.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1184.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1184.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1184.10 -#  *                                                                          *
 1184.11 -#  ************************************************************************** */
 1184.12 -#
 1184.13 -# /* See http://www.boost.org for most recent version. */
 1184.14 -#
 1184.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
 1184.16 -# define BOOST_PREPROCESSOR_SEQ_FOLD_RIGHT_HPP
 1184.17 -#
 1184.18 -# include <boost/preprocessor/cat.hpp>
 1184.19 -# include <boost/preprocessor/detail/auto_rec.hpp>
 1184.20 -# include <boost/preprocessor/seq/fold_left.hpp>
 1184.21 -# include <boost/preprocessor/seq/reverse.hpp>
 1184.22 -# include <boost/preprocessor/seq/seq.hpp>
 1184.23 -#
 1184.24 -# /* BOOST_PP_SEQ_FOLD_RIGHT */
 1184.25 -#
 1184.26 -# if 0
 1184.27 -#    define BOOST_PP_SEQ_FOLD_RIGHT(op, state, seq) ...
 1184.28 -# endif
 1184.29 -#
 1184.30 -# define BOOST_PP_SEQ_FOLD_RIGHT BOOST_PP_CAT(BOOST_PP_SEQ_FOLD_RIGHT_, BOOST_PP_AUTO_REC(BOOST_PP_SEQ_FOLD_LEFT_P, 256))
 1184.31 -#
 1184.32 -# define BOOST_PP_SEQ_FOLD_RIGHT_257(op, st, ss) BOOST_PP_ERROR(0x0005)
 1184.33 -#
 1184.34 -# define BOOST_PP_SEQ_FOLD_RIGHT_1(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_1(op, st, BOOST_PP_SEQ_REVERSE_S(2, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.35 -# define BOOST_PP_SEQ_FOLD_RIGHT_2(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_2(op, st, BOOST_PP_SEQ_REVERSE_S(3, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.36 -# define BOOST_PP_SEQ_FOLD_RIGHT_3(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_3(op, st, BOOST_PP_SEQ_REVERSE_S(4, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.37 -# define BOOST_PP_SEQ_FOLD_RIGHT_4(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_4(op, st, BOOST_PP_SEQ_REVERSE_S(5, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.38 -# define BOOST_PP_SEQ_FOLD_RIGHT_5(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_5(op, st, BOOST_PP_SEQ_REVERSE_S(6, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.39 -# define BOOST_PP_SEQ_FOLD_RIGHT_6(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_6(op, st, BOOST_PP_SEQ_REVERSE_S(7, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.40 -# define BOOST_PP_SEQ_FOLD_RIGHT_7(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_7(op, st, BOOST_PP_SEQ_REVERSE_S(8, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.41 -# define BOOST_PP_SEQ_FOLD_RIGHT_8(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_8(op, st, BOOST_PP_SEQ_REVERSE_S(9, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.42 -# define BOOST_PP_SEQ_FOLD_RIGHT_9(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_9(op, st, BOOST_PP_SEQ_REVERSE_S(10, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.43 -# define BOOST_PP_SEQ_FOLD_RIGHT_10(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_10(op, st, BOOST_PP_SEQ_REVERSE_S(11, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.44 -# define BOOST_PP_SEQ_FOLD_RIGHT_11(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_11(op, st, BOOST_PP_SEQ_REVERSE_S(12, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.45 -# define BOOST_PP_SEQ_FOLD_RIGHT_12(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_12(op, st, BOOST_PP_SEQ_REVERSE_S(13, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.46 -# define BOOST_PP_SEQ_FOLD_RIGHT_13(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_13(op, st, BOOST_PP_SEQ_REVERSE_S(14, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.47 -# define BOOST_PP_SEQ_FOLD_RIGHT_14(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_14(op, st, BOOST_PP_SEQ_REVERSE_S(15, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.48 -# define BOOST_PP_SEQ_FOLD_RIGHT_15(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_15(op, st, BOOST_PP_SEQ_REVERSE_S(16, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.49 -# define BOOST_PP_SEQ_FOLD_RIGHT_16(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_16(op, st, BOOST_PP_SEQ_REVERSE_S(17, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.50 -# define BOOST_PP_SEQ_FOLD_RIGHT_17(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_17(op, st, BOOST_PP_SEQ_REVERSE_S(18, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.51 -# define BOOST_PP_SEQ_FOLD_RIGHT_18(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_18(op, st, BOOST_PP_SEQ_REVERSE_S(19, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.52 -# define BOOST_PP_SEQ_FOLD_RIGHT_19(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_19(op, st, BOOST_PP_SEQ_REVERSE_S(20, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.53 -# define BOOST_PP_SEQ_FOLD_RIGHT_20(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_20(op, st, BOOST_PP_SEQ_REVERSE_S(21, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.54 -# define BOOST_PP_SEQ_FOLD_RIGHT_21(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_21(op, st, BOOST_PP_SEQ_REVERSE_S(22, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.55 -# define BOOST_PP_SEQ_FOLD_RIGHT_22(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_22(op, st, BOOST_PP_SEQ_REVERSE_S(23, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.56 -# define BOOST_PP_SEQ_FOLD_RIGHT_23(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_23(op, st, BOOST_PP_SEQ_REVERSE_S(24, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.57 -# define BOOST_PP_SEQ_FOLD_RIGHT_24(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_24(op, st, BOOST_PP_SEQ_REVERSE_S(25, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.58 -# define BOOST_PP_SEQ_FOLD_RIGHT_25(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_25(op, st, BOOST_PP_SEQ_REVERSE_S(26, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.59 -# define BOOST_PP_SEQ_FOLD_RIGHT_26(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_26(op, st, BOOST_PP_SEQ_REVERSE_S(27, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.60 -# define BOOST_PP_SEQ_FOLD_RIGHT_27(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_27(op, st, BOOST_PP_SEQ_REVERSE_S(28, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.61 -# define BOOST_PP_SEQ_FOLD_RIGHT_28(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_28(op, st, BOOST_PP_SEQ_REVERSE_S(29, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.62 -# define BOOST_PP_SEQ_FOLD_RIGHT_29(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_29(op, st, BOOST_PP_SEQ_REVERSE_S(30, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.63 -# define BOOST_PP_SEQ_FOLD_RIGHT_30(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_30(op, st, BOOST_PP_SEQ_REVERSE_S(31, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.64 -# define BOOST_PP_SEQ_FOLD_RIGHT_31(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_31(op, st, BOOST_PP_SEQ_REVERSE_S(32, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.65 -# define BOOST_PP_SEQ_FOLD_RIGHT_32(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_32(op, st, BOOST_PP_SEQ_REVERSE_S(33, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.66 -# define BOOST_PP_SEQ_FOLD_RIGHT_33(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_33(op, st, BOOST_PP_SEQ_REVERSE_S(34, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.67 -# define BOOST_PP_SEQ_FOLD_RIGHT_34(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_34(op, st, BOOST_PP_SEQ_REVERSE_S(35, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.68 -# define BOOST_PP_SEQ_FOLD_RIGHT_35(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_35(op, st, BOOST_PP_SEQ_REVERSE_S(36, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.69 -# define BOOST_PP_SEQ_FOLD_RIGHT_36(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_36(op, st, BOOST_PP_SEQ_REVERSE_S(37, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.70 -# define BOOST_PP_SEQ_FOLD_RIGHT_37(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_37(op, st, BOOST_PP_SEQ_REVERSE_S(38, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.71 -# define BOOST_PP_SEQ_FOLD_RIGHT_38(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_38(op, st, BOOST_PP_SEQ_REVERSE_S(39, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.72 -# define BOOST_PP_SEQ_FOLD_RIGHT_39(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_39(op, st, BOOST_PP_SEQ_REVERSE_S(40, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.73 -# define BOOST_PP_SEQ_FOLD_RIGHT_40(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_40(op, st, BOOST_PP_SEQ_REVERSE_S(41, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.74 -# define BOOST_PP_SEQ_FOLD_RIGHT_41(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_41(op, st, BOOST_PP_SEQ_REVERSE_S(42, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.75 -# define BOOST_PP_SEQ_FOLD_RIGHT_42(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_42(op, st, BOOST_PP_SEQ_REVERSE_S(43, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.76 -# define BOOST_PP_SEQ_FOLD_RIGHT_43(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_43(op, st, BOOST_PP_SEQ_REVERSE_S(44, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.77 -# define BOOST_PP_SEQ_FOLD_RIGHT_44(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_44(op, st, BOOST_PP_SEQ_REVERSE_S(45, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.78 -# define BOOST_PP_SEQ_FOLD_RIGHT_45(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_45(op, st, BOOST_PP_SEQ_REVERSE_S(46, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.79 -# define BOOST_PP_SEQ_FOLD_RIGHT_46(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_46(op, st, BOOST_PP_SEQ_REVERSE_S(47, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.80 -# define BOOST_PP_SEQ_FOLD_RIGHT_47(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_47(op, st, BOOST_PP_SEQ_REVERSE_S(48, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.81 -# define BOOST_PP_SEQ_FOLD_RIGHT_48(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_48(op, st, BOOST_PP_SEQ_REVERSE_S(49, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.82 -# define BOOST_PP_SEQ_FOLD_RIGHT_49(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_49(op, st, BOOST_PP_SEQ_REVERSE_S(50, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.83 -# define BOOST_PP_SEQ_FOLD_RIGHT_50(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_50(op, st, BOOST_PP_SEQ_REVERSE_S(51, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.84 -# define BOOST_PP_SEQ_FOLD_RIGHT_51(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_51(op, st, BOOST_PP_SEQ_REVERSE_S(52, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.85 -# define BOOST_PP_SEQ_FOLD_RIGHT_52(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_52(op, st, BOOST_PP_SEQ_REVERSE_S(53, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.86 -# define BOOST_PP_SEQ_FOLD_RIGHT_53(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_53(op, st, BOOST_PP_SEQ_REVERSE_S(54, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.87 -# define BOOST_PP_SEQ_FOLD_RIGHT_54(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_54(op, st, BOOST_PP_SEQ_REVERSE_S(55, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.88 -# define BOOST_PP_SEQ_FOLD_RIGHT_55(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_55(op, st, BOOST_PP_SEQ_REVERSE_S(56, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.89 -# define BOOST_PP_SEQ_FOLD_RIGHT_56(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_56(op, st, BOOST_PP_SEQ_REVERSE_S(57, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.90 -# define BOOST_PP_SEQ_FOLD_RIGHT_57(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_57(op, st, BOOST_PP_SEQ_REVERSE_S(58, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.91 -# define BOOST_PP_SEQ_FOLD_RIGHT_58(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_58(op, st, BOOST_PP_SEQ_REVERSE_S(59, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.92 -# define BOOST_PP_SEQ_FOLD_RIGHT_59(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_59(op, st, BOOST_PP_SEQ_REVERSE_S(60, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.93 -# define BOOST_PP_SEQ_FOLD_RIGHT_60(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_60(op, st, BOOST_PP_SEQ_REVERSE_S(61, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.94 -# define BOOST_PP_SEQ_FOLD_RIGHT_61(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_61(op, st, BOOST_PP_SEQ_REVERSE_S(62, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.95 -# define BOOST_PP_SEQ_FOLD_RIGHT_62(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_62(op, st, BOOST_PP_SEQ_REVERSE_S(63, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.96 -# define BOOST_PP_SEQ_FOLD_RIGHT_63(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_63(op, st, BOOST_PP_SEQ_REVERSE_S(64, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.97 -# define BOOST_PP_SEQ_FOLD_RIGHT_64(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_64(op, st, BOOST_PP_SEQ_REVERSE_S(65, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.98 -# define BOOST_PP_SEQ_FOLD_RIGHT_65(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_65(op, st, BOOST_PP_SEQ_REVERSE_S(66, ss), BOOST_PP_SEQ_SIZE(ss))
 1184.99 -# define BOOST_PP_SEQ_FOLD_RIGHT_66(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_66(op, st, BOOST_PP_SEQ_REVERSE_S(67, ss), BOOST_PP_SEQ_SIZE(ss))
1184.100 -# define BOOST_PP_SEQ_FOLD_RIGHT_67(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_67(op, st, BOOST_PP_SEQ_REVERSE_S(68, ss), BOOST_PP_SEQ_SIZE(ss))
1184.101 -# define BOOST_PP_SEQ_FOLD_RIGHT_68(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_68(op, st, BOOST_PP_SEQ_REVERSE_S(69, ss), BOOST_PP_SEQ_SIZE(ss))
1184.102 -# define BOOST_PP_SEQ_FOLD_RIGHT_69(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_69(op, st, BOOST_PP_SEQ_REVERSE_S(70, ss), BOOST_PP_SEQ_SIZE(ss))
1184.103 -# define BOOST_PP_SEQ_FOLD_RIGHT_70(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_70(op, st, BOOST_PP_SEQ_REVERSE_S(71, ss), BOOST_PP_SEQ_SIZE(ss))
1184.104 -# define BOOST_PP_SEQ_FOLD_RIGHT_71(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_71(op, st, BOOST_PP_SEQ_REVERSE_S(72, ss), BOOST_PP_SEQ_SIZE(ss))
1184.105 -# define BOOST_PP_SEQ_FOLD_RIGHT_72(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_72(op, st, BOOST_PP_SEQ_REVERSE_S(73, ss), BOOST_PP_SEQ_SIZE(ss))
1184.106 -# define BOOST_PP_SEQ_FOLD_RIGHT_73(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_73(op, st, BOOST_PP_SEQ_REVERSE_S(74, ss), BOOST_PP_SEQ_SIZE(ss))
1184.107 -# define BOOST_PP_SEQ_FOLD_RIGHT_74(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_74(op, st, BOOST_PP_SEQ_REVERSE_S(75, ss), BOOST_PP_SEQ_SIZE(ss))
1184.108 -# define BOOST_PP_SEQ_FOLD_RIGHT_75(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_75(op, st, BOOST_PP_SEQ_REVERSE_S(76, ss), BOOST_PP_SEQ_SIZE(ss))
1184.109 -# define BOOST_PP_SEQ_FOLD_RIGHT_76(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_76(op, st, BOOST_PP_SEQ_REVERSE_S(77, ss), BOOST_PP_SEQ_SIZE(ss))
1184.110 -# define BOOST_PP_SEQ_FOLD_RIGHT_77(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_77(op, st, BOOST_PP_SEQ_REVERSE_S(78, ss), BOOST_PP_SEQ_SIZE(ss))
1184.111 -# define BOOST_PP_SEQ_FOLD_RIGHT_78(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_78(op, st, BOOST_PP_SEQ_REVERSE_S(79, ss), BOOST_PP_SEQ_SIZE(ss))
1184.112 -# define BOOST_PP_SEQ_FOLD_RIGHT_79(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_79(op, st, BOOST_PP_SEQ_REVERSE_S(80, ss), BOOST_PP_SEQ_SIZE(ss))
1184.113 -# define BOOST_PP_SEQ_FOLD_RIGHT_80(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_80(op, st, BOOST_PP_SEQ_REVERSE_S(81, ss), BOOST_PP_SEQ_SIZE(ss))
1184.114 -# define BOOST_PP_SEQ_FOLD_RIGHT_81(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_81(op, st, BOOST_PP_SEQ_REVERSE_S(82, ss), BOOST_PP_SEQ_SIZE(ss))
1184.115 -# define BOOST_PP_SEQ_FOLD_RIGHT_82(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_82(op, st, BOOST_PP_SEQ_REVERSE_S(83, ss), BOOST_PP_SEQ_SIZE(ss))
1184.116 -# define BOOST_PP_SEQ_FOLD_RIGHT_83(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_83(op, st, BOOST_PP_SEQ_REVERSE_S(84, ss), BOOST_PP_SEQ_SIZE(ss))
1184.117 -# define BOOST_PP_SEQ_FOLD_RIGHT_84(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_84(op, st, BOOST_PP_SEQ_REVERSE_S(85, ss), BOOST_PP_SEQ_SIZE(ss))
1184.118 -# define BOOST_PP_SEQ_FOLD_RIGHT_85(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_85(op, st, BOOST_PP_SEQ_REVERSE_S(86, ss), BOOST_PP_SEQ_SIZE(ss))
1184.119 -# define BOOST_PP_SEQ_FOLD_RIGHT_86(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_86(op, st, BOOST_PP_SEQ_REVERSE_S(87, ss), BOOST_PP_SEQ_SIZE(ss))
1184.120 -# define BOOST_PP_SEQ_FOLD_RIGHT_87(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_87(op, st, BOOST_PP_SEQ_REVERSE_S(88, ss), BOOST_PP_SEQ_SIZE(ss))
1184.121 -# define BOOST_PP_SEQ_FOLD_RIGHT_88(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_88(op, st, BOOST_PP_SEQ_REVERSE_S(89, ss), BOOST_PP_SEQ_SIZE(ss))
1184.122 -# define BOOST_PP_SEQ_FOLD_RIGHT_89(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_89(op, st, BOOST_PP_SEQ_REVERSE_S(90, ss), BOOST_PP_SEQ_SIZE(ss))
1184.123 -# define BOOST_PP_SEQ_FOLD_RIGHT_90(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_90(op, st, BOOST_PP_SEQ_REVERSE_S(91, ss), BOOST_PP_SEQ_SIZE(ss))
1184.124 -# define BOOST_PP_SEQ_FOLD_RIGHT_91(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_91(op, st, BOOST_PP_SEQ_REVERSE_S(92, ss), BOOST_PP_SEQ_SIZE(ss))
1184.125 -# define BOOST_PP_SEQ_FOLD_RIGHT_92(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_92(op, st, BOOST_PP_SEQ_REVERSE_S(93, ss), BOOST_PP_SEQ_SIZE(ss))
1184.126 -# define BOOST_PP_SEQ_FOLD_RIGHT_93(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_93(op, st, BOOST_PP_SEQ_REVERSE_S(94, ss), BOOST_PP_SEQ_SIZE(ss))
1184.127 -# define BOOST_PP_SEQ_FOLD_RIGHT_94(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_94(op, st, BOOST_PP_SEQ_REVERSE_S(95, ss), BOOST_PP_SEQ_SIZE(ss))
1184.128 -# define BOOST_PP_SEQ_FOLD_RIGHT_95(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_95(op, st, BOOST_PP_SEQ_REVERSE_S(96, ss), BOOST_PP_SEQ_SIZE(ss))
1184.129 -# define BOOST_PP_SEQ_FOLD_RIGHT_96(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_96(op, st, BOOST_PP_SEQ_REVERSE_S(97, ss), BOOST_PP_SEQ_SIZE(ss))
1184.130 -# define BOOST_PP_SEQ_FOLD_RIGHT_97(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_97(op, st, BOOST_PP_SEQ_REVERSE_S(98, ss), BOOST_PP_SEQ_SIZE(ss))
1184.131 -# define BOOST_PP_SEQ_FOLD_RIGHT_98(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_98(op, st, BOOST_PP_SEQ_REVERSE_S(99, ss), BOOST_PP_SEQ_SIZE(ss))
1184.132 -# define BOOST_PP_SEQ_FOLD_RIGHT_99(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_99(op, st, BOOST_PP_SEQ_REVERSE_S(100, ss), BOOST_PP_SEQ_SIZE(ss))
1184.133 -# define BOOST_PP_SEQ_FOLD_RIGHT_100(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_100(op, st, BOOST_PP_SEQ_REVERSE_S(101, ss), BOOST_PP_SEQ_SIZE(ss))
1184.134 -# define BOOST_PP_SEQ_FOLD_RIGHT_101(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_101(op, st, BOOST_PP_SEQ_REVERSE_S(102, ss), BOOST_PP_SEQ_SIZE(ss))
1184.135 -# define BOOST_PP_SEQ_FOLD_RIGHT_102(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_102(op, st, BOOST_PP_SEQ_REVERSE_S(103, ss), BOOST_PP_SEQ_SIZE(ss))
1184.136 -# define BOOST_PP_SEQ_FOLD_RIGHT_103(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_103(op, st, BOOST_PP_SEQ_REVERSE_S(104, ss), BOOST_PP_SEQ_SIZE(ss))
1184.137 -# define BOOST_PP_SEQ_FOLD_RIGHT_104(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_104(op, st, BOOST_PP_SEQ_REVERSE_S(105, ss), BOOST_PP_SEQ_SIZE(ss))
1184.138 -# define BOOST_PP_SEQ_FOLD_RIGHT_105(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_105(op, st, BOOST_PP_SEQ_REVERSE_S(106, ss), BOOST_PP_SEQ_SIZE(ss))
1184.139 -# define BOOST_PP_SEQ_FOLD_RIGHT_106(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_106(op, st, BOOST_PP_SEQ_REVERSE_S(107, ss), BOOST_PP_SEQ_SIZE(ss))
1184.140 -# define BOOST_PP_SEQ_FOLD_RIGHT_107(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_107(op, st, BOOST_PP_SEQ_REVERSE_S(108, ss), BOOST_PP_SEQ_SIZE(ss))
1184.141 -# define BOOST_PP_SEQ_FOLD_RIGHT_108(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_108(op, st, BOOST_PP_SEQ_REVERSE_S(109, ss), BOOST_PP_SEQ_SIZE(ss))
1184.142 -# define BOOST_PP_SEQ_FOLD_RIGHT_109(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_109(op, st, BOOST_PP_SEQ_REVERSE_S(110, ss), BOOST_PP_SEQ_SIZE(ss))
1184.143 -# define BOOST_PP_SEQ_FOLD_RIGHT_110(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_110(op, st, BOOST_PP_SEQ_REVERSE_S(111, ss), BOOST_PP_SEQ_SIZE(ss))
1184.144 -# define BOOST_PP_SEQ_FOLD_RIGHT_111(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_111(op, st, BOOST_PP_SEQ_REVERSE_S(112, ss), BOOST_PP_SEQ_SIZE(ss))
1184.145 -# define BOOST_PP_SEQ_FOLD_RIGHT_112(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_112(op, st, BOOST_PP_SEQ_REVERSE_S(113, ss), BOOST_PP_SEQ_SIZE(ss))
1184.146 -# define BOOST_PP_SEQ_FOLD_RIGHT_113(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_113(op, st, BOOST_PP_SEQ_REVERSE_S(114, ss), BOOST_PP_SEQ_SIZE(ss))
1184.147 -# define BOOST_PP_SEQ_FOLD_RIGHT_114(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_114(op, st, BOOST_PP_SEQ_REVERSE_S(115, ss), BOOST_PP_SEQ_SIZE(ss))
1184.148 -# define BOOST_PP_SEQ_FOLD_RIGHT_115(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_115(op, st, BOOST_PP_SEQ_REVERSE_S(116, ss), BOOST_PP_SEQ_SIZE(ss))
1184.149 -# define BOOST_PP_SEQ_FOLD_RIGHT_116(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_116(op, st, BOOST_PP_SEQ_REVERSE_S(117, ss), BOOST_PP_SEQ_SIZE(ss))
1184.150 -# define BOOST_PP_SEQ_FOLD_RIGHT_117(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_117(op, st, BOOST_PP_SEQ_REVERSE_S(118, ss), BOOST_PP_SEQ_SIZE(ss))
1184.151 -# define BOOST_PP_SEQ_FOLD_RIGHT_118(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_118(op, st, BOOST_PP_SEQ_REVERSE_S(119, ss), BOOST_PP_SEQ_SIZE(ss))
1184.152 -# define BOOST_PP_SEQ_FOLD_RIGHT_119(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_119(op, st, BOOST_PP_SEQ_REVERSE_S(120, ss), BOOST_PP_SEQ_SIZE(ss))
1184.153 -# define BOOST_PP_SEQ_FOLD_RIGHT_120(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_120(op, st, BOOST_PP_SEQ_REVERSE_S(121, ss), BOOST_PP_SEQ_SIZE(ss))
1184.154 -# define BOOST_PP_SEQ_FOLD_RIGHT_121(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_121(op, st, BOOST_PP_SEQ_REVERSE_S(122, ss), BOOST_PP_SEQ_SIZE(ss))
1184.155 -# define BOOST_PP_SEQ_FOLD_RIGHT_122(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_122(op, st, BOOST_PP_SEQ_REVERSE_S(123, ss), BOOST_PP_SEQ_SIZE(ss))
1184.156 -# define BOOST_PP_SEQ_FOLD_RIGHT_123(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_123(op, st, BOOST_PP_SEQ_REVERSE_S(124, ss), BOOST_PP_SEQ_SIZE(ss))
1184.157 -# define BOOST_PP_SEQ_FOLD_RIGHT_124(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_124(op, st, BOOST_PP_SEQ_REVERSE_S(125, ss), BOOST_PP_SEQ_SIZE(ss))
1184.158 -# define BOOST_PP_SEQ_FOLD_RIGHT_125(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_125(op, st, BOOST_PP_SEQ_REVERSE_S(126, ss), BOOST_PP_SEQ_SIZE(ss))
1184.159 -# define BOOST_PP_SEQ_FOLD_RIGHT_126(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_126(op, st, BOOST_PP_SEQ_REVERSE_S(127, ss), BOOST_PP_SEQ_SIZE(ss))
1184.160 -# define BOOST_PP_SEQ_FOLD_RIGHT_127(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_127(op, st, BOOST_PP_SEQ_REVERSE_S(128, ss), BOOST_PP_SEQ_SIZE(ss))
1184.161 -# define BOOST_PP_SEQ_FOLD_RIGHT_128(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_128(op, st, BOOST_PP_SEQ_REVERSE_S(129, ss), BOOST_PP_SEQ_SIZE(ss))
1184.162 -# define BOOST_PP_SEQ_FOLD_RIGHT_129(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_129(op, st, BOOST_PP_SEQ_REVERSE_S(130, ss), BOOST_PP_SEQ_SIZE(ss))
1184.163 -# define BOOST_PP_SEQ_FOLD_RIGHT_130(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_130(op, st, BOOST_PP_SEQ_REVERSE_S(131, ss), BOOST_PP_SEQ_SIZE(ss))
1184.164 -# define BOOST_PP_SEQ_FOLD_RIGHT_131(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_131(op, st, BOOST_PP_SEQ_REVERSE_S(132, ss), BOOST_PP_SEQ_SIZE(ss))
1184.165 -# define BOOST_PP_SEQ_FOLD_RIGHT_132(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_132(op, st, BOOST_PP_SEQ_REVERSE_S(133, ss), BOOST_PP_SEQ_SIZE(ss))
1184.166 -# define BOOST_PP_SEQ_FOLD_RIGHT_133(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_133(op, st, BOOST_PP_SEQ_REVERSE_S(134, ss), BOOST_PP_SEQ_SIZE(ss))
1184.167 -# define BOOST_PP_SEQ_FOLD_RIGHT_134(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_134(op, st, BOOST_PP_SEQ_REVERSE_S(135, ss), BOOST_PP_SEQ_SIZE(ss))
1184.168 -# define BOOST_PP_SEQ_FOLD_RIGHT_135(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_135(op, st, BOOST_PP_SEQ_REVERSE_S(136, ss), BOOST_PP_SEQ_SIZE(ss))
1184.169 -# define BOOST_PP_SEQ_FOLD_RIGHT_136(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_136(op, st, BOOST_PP_SEQ_REVERSE_S(137, ss), BOOST_PP_SEQ_SIZE(ss))
1184.170 -# define BOOST_PP_SEQ_FOLD_RIGHT_137(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_137(op, st, BOOST_PP_SEQ_REVERSE_S(138, ss), BOOST_PP_SEQ_SIZE(ss))
1184.171 -# define BOOST_PP_SEQ_FOLD_RIGHT_138(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_138(op, st, BOOST_PP_SEQ_REVERSE_S(139, ss), BOOST_PP_SEQ_SIZE(ss))
1184.172 -# define BOOST_PP_SEQ_FOLD_RIGHT_139(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_139(op, st, BOOST_PP_SEQ_REVERSE_S(140, ss), BOOST_PP_SEQ_SIZE(ss))
1184.173 -# define BOOST_PP_SEQ_FOLD_RIGHT_140(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_140(op, st, BOOST_PP_SEQ_REVERSE_S(141, ss), BOOST_PP_SEQ_SIZE(ss))
1184.174 -# define BOOST_PP_SEQ_FOLD_RIGHT_141(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_141(op, st, BOOST_PP_SEQ_REVERSE_S(142, ss), BOOST_PP_SEQ_SIZE(ss))
1184.175 -# define BOOST_PP_SEQ_FOLD_RIGHT_142(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_142(op, st, BOOST_PP_SEQ_REVERSE_S(143, ss), BOOST_PP_SEQ_SIZE(ss))
1184.176 -# define BOOST_PP_SEQ_FOLD_RIGHT_143(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_143(op, st, BOOST_PP_SEQ_REVERSE_S(144, ss), BOOST_PP_SEQ_SIZE(ss))
1184.177 -# define BOOST_PP_SEQ_FOLD_RIGHT_144(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_144(op, st, BOOST_PP_SEQ_REVERSE_S(145, ss), BOOST_PP_SEQ_SIZE(ss))
1184.178 -# define BOOST_PP_SEQ_FOLD_RIGHT_145(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_145(op, st, BOOST_PP_SEQ_REVERSE_S(146, ss), BOOST_PP_SEQ_SIZE(ss))
1184.179 -# define BOOST_PP_SEQ_FOLD_RIGHT_146(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_146(op, st, BOOST_PP_SEQ_REVERSE_S(147, ss), BOOST_PP_SEQ_SIZE(ss))
1184.180 -# define BOOST_PP_SEQ_FOLD_RIGHT_147(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_147(op, st, BOOST_PP_SEQ_REVERSE_S(148, ss), BOOST_PP_SEQ_SIZE(ss))
1184.181 -# define BOOST_PP_SEQ_FOLD_RIGHT_148(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_148(op, st, BOOST_PP_SEQ_REVERSE_S(149, ss), BOOST_PP_SEQ_SIZE(ss))
1184.182 -# define BOOST_PP_SEQ_FOLD_RIGHT_149(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_149(op, st, BOOST_PP_SEQ_REVERSE_S(150, ss), BOOST_PP_SEQ_SIZE(ss))
1184.183 -# define BOOST_PP_SEQ_FOLD_RIGHT_150(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_150(op, st, BOOST_PP_SEQ_REVERSE_S(151, ss), BOOST_PP_SEQ_SIZE(ss))
1184.184 -# define BOOST_PP_SEQ_FOLD_RIGHT_151(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_151(op, st, BOOST_PP_SEQ_REVERSE_S(152, ss), BOOST_PP_SEQ_SIZE(ss))
1184.185 -# define BOOST_PP_SEQ_FOLD_RIGHT_152(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_152(op, st, BOOST_PP_SEQ_REVERSE_S(153, ss), BOOST_PP_SEQ_SIZE(ss))
1184.186 -# define BOOST_PP_SEQ_FOLD_RIGHT_153(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_153(op, st, BOOST_PP_SEQ_REVERSE_S(154, ss), BOOST_PP_SEQ_SIZE(ss))
1184.187 -# define BOOST_PP_SEQ_FOLD_RIGHT_154(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_154(op, st, BOOST_PP_SEQ_REVERSE_S(155, ss), BOOST_PP_SEQ_SIZE(ss))
1184.188 -# define BOOST_PP_SEQ_FOLD_RIGHT_155(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_155(op, st, BOOST_PP_SEQ_REVERSE_S(156, ss), BOOST_PP_SEQ_SIZE(ss))
1184.189 -# define BOOST_PP_SEQ_FOLD_RIGHT_156(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_156(op, st, BOOST_PP_SEQ_REVERSE_S(157, ss), BOOST_PP_SEQ_SIZE(ss))
1184.190 -# define BOOST_PP_SEQ_FOLD_RIGHT_157(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_157(op, st, BOOST_PP_SEQ_REVERSE_S(158, ss), BOOST_PP_SEQ_SIZE(ss))
1184.191 -# define BOOST_PP_SEQ_FOLD_RIGHT_158(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_158(op, st, BOOST_PP_SEQ_REVERSE_S(159, ss), BOOST_PP_SEQ_SIZE(ss))
1184.192 -# define BOOST_PP_SEQ_FOLD_RIGHT_159(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_159(op, st, BOOST_PP_SEQ_REVERSE_S(160, ss), BOOST_PP_SEQ_SIZE(ss))
1184.193 -# define BOOST_PP_SEQ_FOLD_RIGHT_160(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_160(op, st, BOOST_PP_SEQ_REVERSE_S(161, ss), BOOST_PP_SEQ_SIZE(ss))
1184.194 -# define BOOST_PP_SEQ_FOLD_RIGHT_161(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_161(op, st, BOOST_PP_SEQ_REVERSE_S(162, ss), BOOST_PP_SEQ_SIZE(ss))
1184.195 -# define BOOST_PP_SEQ_FOLD_RIGHT_162(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_162(op, st, BOOST_PP_SEQ_REVERSE_S(163, ss), BOOST_PP_SEQ_SIZE(ss))
1184.196 -# define BOOST_PP_SEQ_FOLD_RIGHT_163(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_163(op, st, BOOST_PP_SEQ_REVERSE_S(164, ss), BOOST_PP_SEQ_SIZE(ss))
1184.197 -# define BOOST_PP_SEQ_FOLD_RIGHT_164(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_164(op, st, BOOST_PP_SEQ_REVERSE_S(165, ss), BOOST_PP_SEQ_SIZE(ss))
1184.198 -# define BOOST_PP_SEQ_FOLD_RIGHT_165(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_165(op, st, BOOST_PP_SEQ_REVERSE_S(166, ss), BOOST_PP_SEQ_SIZE(ss))
1184.199 -# define BOOST_PP_SEQ_FOLD_RIGHT_166(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_166(op, st, BOOST_PP_SEQ_REVERSE_S(167, ss), BOOST_PP_SEQ_SIZE(ss))
1184.200 -# define BOOST_PP_SEQ_FOLD_RIGHT_167(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_167(op, st, BOOST_PP_SEQ_REVERSE_S(168, ss), BOOST_PP_SEQ_SIZE(ss))
1184.201 -# define BOOST_PP_SEQ_FOLD_RIGHT_168(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_168(op, st, BOOST_PP_SEQ_REVERSE_S(169, ss), BOOST_PP_SEQ_SIZE(ss))
1184.202 -# define BOOST_PP_SEQ_FOLD_RIGHT_169(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_169(op, st, BOOST_PP_SEQ_REVERSE_S(170, ss), BOOST_PP_SEQ_SIZE(ss))
1184.203 -# define BOOST_PP_SEQ_FOLD_RIGHT_170(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_170(op, st, BOOST_PP_SEQ_REVERSE_S(171, ss), BOOST_PP_SEQ_SIZE(ss))
1184.204 -# define BOOST_PP_SEQ_FOLD_RIGHT_171(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_171(op, st, BOOST_PP_SEQ_REVERSE_S(172, ss), BOOST_PP_SEQ_SIZE(ss))
1184.205 -# define BOOST_PP_SEQ_FOLD_RIGHT_172(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_172(op, st, BOOST_PP_SEQ_REVERSE_S(173, ss), BOOST_PP_SEQ_SIZE(ss))
1184.206 -# define BOOST_PP_SEQ_FOLD_RIGHT_173(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_173(op, st, BOOST_PP_SEQ_REVERSE_S(174, ss), BOOST_PP_SEQ_SIZE(ss))
1184.207 -# define BOOST_PP_SEQ_FOLD_RIGHT_174(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_174(op, st, BOOST_PP_SEQ_REVERSE_S(175, ss), BOOST_PP_SEQ_SIZE(ss))
1184.208 -# define BOOST_PP_SEQ_FOLD_RIGHT_175(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_175(op, st, BOOST_PP_SEQ_REVERSE_S(176, ss), BOOST_PP_SEQ_SIZE(ss))
1184.209 -# define BOOST_PP_SEQ_FOLD_RIGHT_176(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_176(op, st, BOOST_PP_SEQ_REVERSE_S(177, ss), BOOST_PP_SEQ_SIZE(ss))
1184.210 -# define BOOST_PP_SEQ_FOLD_RIGHT_177(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_177(op, st, BOOST_PP_SEQ_REVERSE_S(178, ss), BOOST_PP_SEQ_SIZE(ss))
1184.211 -# define BOOST_PP_SEQ_FOLD_RIGHT_178(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_178(op, st, BOOST_PP_SEQ_REVERSE_S(179, ss), BOOST_PP_SEQ_SIZE(ss))
1184.212 -# define BOOST_PP_SEQ_FOLD_RIGHT_179(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_179(op, st, BOOST_PP_SEQ_REVERSE_S(180, ss), BOOST_PP_SEQ_SIZE(ss))
1184.213 -# define BOOST_PP_SEQ_FOLD_RIGHT_180(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_180(op, st, BOOST_PP_SEQ_REVERSE_S(181, ss), BOOST_PP_SEQ_SIZE(ss))
1184.214 -# define BOOST_PP_SEQ_FOLD_RIGHT_181(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_181(op, st, BOOST_PP_SEQ_REVERSE_S(182, ss), BOOST_PP_SEQ_SIZE(ss))
1184.215 -# define BOOST_PP_SEQ_FOLD_RIGHT_182(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_182(op, st, BOOST_PP_SEQ_REVERSE_S(183, ss), BOOST_PP_SEQ_SIZE(ss))
1184.216 -# define BOOST_PP_SEQ_FOLD_RIGHT_183(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_183(op, st, BOOST_PP_SEQ_REVERSE_S(184, ss), BOOST_PP_SEQ_SIZE(ss))
1184.217 -# define BOOST_PP_SEQ_FOLD_RIGHT_184(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_184(op, st, BOOST_PP_SEQ_REVERSE_S(185, ss), BOOST_PP_SEQ_SIZE(ss))
1184.218 -# define BOOST_PP_SEQ_FOLD_RIGHT_185(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_185(op, st, BOOST_PP_SEQ_REVERSE_S(186, ss), BOOST_PP_SEQ_SIZE(ss))
1184.219 -# define BOOST_PP_SEQ_FOLD_RIGHT_186(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_186(op, st, BOOST_PP_SEQ_REVERSE_S(187, ss), BOOST_PP_SEQ_SIZE(ss))
1184.220 -# define BOOST_PP_SEQ_FOLD_RIGHT_187(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_187(op, st, BOOST_PP_SEQ_REVERSE_S(188, ss), BOOST_PP_SEQ_SIZE(ss))
1184.221 -# define BOOST_PP_SEQ_FOLD_RIGHT_188(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_188(op, st, BOOST_PP_SEQ_REVERSE_S(189, ss), BOOST_PP_SEQ_SIZE(ss))
1184.222 -# define BOOST_PP_SEQ_FOLD_RIGHT_189(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_189(op, st, BOOST_PP_SEQ_REVERSE_S(190, ss), BOOST_PP_SEQ_SIZE(ss))
1184.223 -# define BOOST_PP_SEQ_FOLD_RIGHT_190(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_190(op, st, BOOST_PP_SEQ_REVERSE_S(191, ss), BOOST_PP_SEQ_SIZE(ss))
1184.224 -# define BOOST_PP_SEQ_FOLD_RIGHT_191(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_191(op, st, BOOST_PP_SEQ_REVERSE_S(192, ss), BOOST_PP_SEQ_SIZE(ss))
1184.225 -# define BOOST_PP_SEQ_FOLD_RIGHT_192(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_192(op, st, BOOST_PP_SEQ_REVERSE_S(193, ss), BOOST_PP_SEQ_SIZE(ss))
1184.226 -# define BOOST_PP_SEQ_FOLD_RIGHT_193(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_193(op, st, BOOST_PP_SEQ_REVERSE_S(194, ss), BOOST_PP_SEQ_SIZE(ss))
1184.227 -# define BOOST_PP_SEQ_FOLD_RIGHT_194(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_194(op, st, BOOST_PP_SEQ_REVERSE_S(195, ss), BOOST_PP_SEQ_SIZE(ss))
1184.228 -# define BOOST_PP_SEQ_FOLD_RIGHT_195(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_195(op, st, BOOST_PP_SEQ_REVERSE_S(196, ss), BOOST_PP_SEQ_SIZE(ss))
1184.229 -# define BOOST_PP_SEQ_FOLD_RIGHT_196(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_196(op, st, BOOST_PP_SEQ_REVERSE_S(197, ss), BOOST_PP_SEQ_SIZE(ss))
1184.230 -# define BOOST_PP_SEQ_FOLD_RIGHT_197(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_197(op, st, BOOST_PP_SEQ_REVERSE_S(198, ss), BOOST_PP_SEQ_SIZE(ss))
1184.231 -# define BOOST_PP_SEQ_FOLD_RIGHT_198(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_198(op, st, BOOST_PP_SEQ_REVERSE_S(199, ss), BOOST_PP_SEQ_SIZE(ss))
1184.232 -# define BOOST_PP_SEQ_FOLD_RIGHT_199(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_199(op, st, BOOST_PP_SEQ_REVERSE_S(200, ss), BOOST_PP_SEQ_SIZE(ss))
1184.233 -# define BOOST_PP_SEQ_FOLD_RIGHT_200(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_200(op, st, BOOST_PP_SEQ_REVERSE_S(201, ss), BOOST_PP_SEQ_SIZE(ss))
1184.234 -# define BOOST_PP_SEQ_FOLD_RIGHT_201(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_201(op, st, BOOST_PP_SEQ_REVERSE_S(202, ss), BOOST_PP_SEQ_SIZE(ss))
1184.235 -# define BOOST_PP_SEQ_FOLD_RIGHT_202(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_202(op, st, BOOST_PP_SEQ_REVERSE_S(203, ss), BOOST_PP_SEQ_SIZE(ss))
1184.236 -# define BOOST_PP_SEQ_FOLD_RIGHT_203(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_203(op, st, BOOST_PP_SEQ_REVERSE_S(204, ss), BOOST_PP_SEQ_SIZE(ss))
1184.237 -# define BOOST_PP_SEQ_FOLD_RIGHT_204(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_204(op, st, BOOST_PP_SEQ_REVERSE_S(205, ss), BOOST_PP_SEQ_SIZE(ss))
1184.238 -# define BOOST_PP_SEQ_FOLD_RIGHT_205(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_205(op, st, BOOST_PP_SEQ_REVERSE_S(206, ss), BOOST_PP_SEQ_SIZE(ss))
1184.239 -# define BOOST_PP_SEQ_FOLD_RIGHT_206(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_206(op, st, BOOST_PP_SEQ_REVERSE_S(207, ss), BOOST_PP_SEQ_SIZE(ss))
1184.240 -# define BOOST_PP_SEQ_FOLD_RIGHT_207(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_207(op, st, BOOST_PP_SEQ_REVERSE_S(208, ss), BOOST_PP_SEQ_SIZE(ss))
1184.241 -# define BOOST_PP_SEQ_FOLD_RIGHT_208(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_208(op, st, BOOST_PP_SEQ_REVERSE_S(209, ss), BOOST_PP_SEQ_SIZE(ss))
1184.242 -# define BOOST_PP_SEQ_FOLD_RIGHT_209(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_209(op, st, BOOST_PP_SEQ_REVERSE_S(210, ss), BOOST_PP_SEQ_SIZE(ss))
1184.243 -# define BOOST_PP_SEQ_FOLD_RIGHT_210(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_210(op, st, BOOST_PP_SEQ_REVERSE_S(211, ss), BOOST_PP_SEQ_SIZE(ss))
1184.244 -# define BOOST_PP_SEQ_FOLD_RIGHT_211(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_211(op, st, BOOST_PP_SEQ_REVERSE_S(212, ss), BOOST_PP_SEQ_SIZE(ss))
1184.245 -# define BOOST_PP_SEQ_FOLD_RIGHT_212(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_212(op, st, BOOST_PP_SEQ_REVERSE_S(213, ss), BOOST_PP_SEQ_SIZE(ss))
1184.246 -# define BOOST_PP_SEQ_FOLD_RIGHT_213(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_213(op, st, BOOST_PP_SEQ_REVERSE_S(214, ss), BOOST_PP_SEQ_SIZE(ss))
1184.247 -# define BOOST_PP_SEQ_FOLD_RIGHT_214(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_214(op, st, BOOST_PP_SEQ_REVERSE_S(215, ss), BOOST_PP_SEQ_SIZE(ss))
1184.248 -# define BOOST_PP_SEQ_FOLD_RIGHT_215(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_215(op, st, BOOST_PP_SEQ_REVERSE_S(216, ss), BOOST_PP_SEQ_SIZE(ss))
1184.249 -# define BOOST_PP_SEQ_FOLD_RIGHT_216(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_216(op, st, BOOST_PP_SEQ_REVERSE_S(217, ss), BOOST_PP_SEQ_SIZE(ss))
1184.250 -# define BOOST_PP_SEQ_FOLD_RIGHT_217(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_217(op, st, BOOST_PP_SEQ_REVERSE_S(218, ss), BOOST_PP_SEQ_SIZE(ss))
1184.251 -# define BOOST_PP_SEQ_FOLD_RIGHT_218(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_218(op, st, BOOST_PP_SEQ_REVERSE_S(219, ss), BOOST_PP_SEQ_SIZE(ss))
1184.252 -# define BOOST_PP_SEQ_FOLD_RIGHT_219(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_219(op, st, BOOST_PP_SEQ_REVERSE_S(220, ss), BOOST_PP_SEQ_SIZE(ss))
1184.253 -# define BOOST_PP_SEQ_FOLD_RIGHT_220(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_220(op, st, BOOST_PP_SEQ_REVERSE_S(221, ss), BOOST_PP_SEQ_SIZE(ss))
1184.254 -# define BOOST_PP_SEQ_FOLD_RIGHT_221(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_221(op, st, BOOST_PP_SEQ_REVERSE_S(222, ss), BOOST_PP_SEQ_SIZE(ss))
1184.255 -# define BOOST_PP_SEQ_FOLD_RIGHT_222(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_222(op, st, BOOST_PP_SEQ_REVERSE_S(223, ss), BOOST_PP_SEQ_SIZE(ss))
1184.256 -# define BOOST_PP_SEQ_FOLD_RIGHT_223(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_223(op, st, BOOST_PP_SEQ_REVERSE_S(224, ss), BOOST_PP_SEQ_SIZE(ss))
1184.257 -# define BOOST_PP_SEQ_FOLD_RIGHT_224(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_224(op, st, BOOST_PP_SEQ_REVERSE_S(225, ss), BOOST_PP_SEQ_SIZE(ss))
1184.258 -# define BOOST_PP_SEQ_FOLD_RIGHT_225(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_225(op, st, BOOST_PP_SEQ_REVERSE_S(226, ss), BOOST_PP_SEQ_SIZE(ss))
1184.259 -# define BOOST_PP_SEQ_FOLD_RIGHT_226(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_226(op, st, BOOST_PP_SEQ_REVERSE_S(227, ss), BOOST_PP_SEQ_SIZE(ss))
1184.260 -# define BOOST_PP_SEQ_FOLD_RIGHT_227(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_227(op, st, BOOST_PP_SEQ_REVERSE_S(228, ss), BOOST_PP_SEQ_SIZE(ss))
1184.261 -# define BOOST_PP_SEQ_FOLD_RIGHT_228(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_228(op, st, BOOST_PP_SEQ_REVERSE_S(229, ss), BOOST_PP_SEQ_SIZE(ss))
1184.262 -# define BOOST_PP_SEQ_FOLD_RIGHT_229(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_229(op, st, BOOST_PP_SEQ_REVERSE_S(230, ss), BOOST_PP_SEQ_SIZE(ss))
1184.263 -# define BOOST_PP_SEQ_FOLD_RIGHT_230(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_230(op, st, BOOST_PP_SEQ_REVERSE_S(231, ss), BOOST_PP_SEQ_SIZE(ss))
1184.264 -# define BOOST_PP_SEQ_FOLD_RIGHT_231(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_231(op, st, BOOST_PP_SEQ_REVERSE_S(232, ss), BOOST_PP_SEQ_SIZE(ss))
1184.265 -# define BOOST_PP_SEQ_FOLD_RIGHT_232(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_232(op, st, BOOST_PP_SEQ_REVERSE_S(233, ss), BOOST_PP_SEQ_SIZE(ss))
1184.266 -# define BOOST_PP_SEQ_FOLD_RIGHT_233(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_233(op, st, BOOST_PP_SEQ_REVERSE_S(234, ss), BOOST_PP_SEQ_SIZE(ss))
1184.267 -# define BOOST_PP_SEQ_FOLD_RIGHT_234(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_234(op, st, BOOST_PP_SEQ_REVERSE_S(235, ss), BOOST_PP_SEQ_SIZE(ss))
1184.268 -# define BOOST_PP_SEQ_FOLD_RIGHT_235(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_235(op, st, BOOST_PP_SEQ_REVERSE_S(236, ss), BOOST_PP_SEQ_SIZE(ss))
1184.269 -# define BOOST_PP_SEQ_FOLD_RIGHT_236(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_236(op, st, BOOST_PP_SEQ_REVERSE_S(237, ss), BOOST_PP_SEQ_SIZE(ss))
1184.270 -# define BOOST_PP_SEQ_FOLD_RIGHT_237(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_237(op, st, BOOST_PP_SEQ_REVERSE_S(238, ss), BOOST_PP_SEQ_SIZE(ss))
1184.271 -# define BOOST_PP_SEQ_FOLD_RIGHT_238(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_238(op, st, BOOST_PP_SEQ_REVERSE_S(239, ss), BOOST_PP_SEQ_SIZE(ss))
1184.272 -# define BOOST_PP_SEQ_FOLD_RIGHT_239(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_239(op, st, BOOST_PP_SEQ_REVERSE_S(240, ss), BOOST_PP_SEQ_SIZE(ss))
1184.273 -# define BOOST_PP_SEQ_FOLD_RIGHT_240(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_240(op, st, BOOST_PP_SEQ_REVERSE_S(241, ss), BOOST_PP_SEQ_SIZE(ss))
1184.274 -# define BOOST_PP_SEQ_FOLD_RIGHT_241(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_241(op, st, BOOST_PP_SEQ_REVERSE_S(242, ss), BOOST_PP_SEQ_SIZE(ss))
1184.275 -# define BOOST_PP_SEQ_FOLD_RIGHT_242(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_242(op, st, BOOST_PP_SEQ_REVERSE_S(243, ss), BOOST_PP_SEQ_SIZE(ss))
1184.276 -# define BOOST_PP_SEQ_FOLD_RIGHT_243(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_243(op, st, BOOST_PP_SEQ_REVERSE_S(244, ss), BOOST_PP_SEQ_SIZE(ss))
1184.277 -# define BOOST_PP_SEQ_FOLD_RIGHT_244(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_244(op, st, BOOST_PP_SEQ_REVERSE_S(245, ss), BOOST_PP_SEQ_SIZE(ss))
1184.278 -# define BOOST_PP_SEQ_FOLD_RIGHT_245(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_245(op, st, BOOST_PP_SEQ_REVERSE_S(246, ss), BOOST_PP_SEQ_SIZE(ss))
1184.279 -# define BOOST_PP_SEQ_FOLD_RIGHT_246(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_246(op, st, BOOST_PP_SEQ_REVERSE_S(247, ss), BOOST_PP_SEQ_SIZE(ss))
1184.280 -# define BOOST_PP_SEQ_FOLD_RIGHT_247(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_247(op, st, BOOST_PP_SEQ_REVERSE_S(248, ss), BOOST_PP_SEQ_SIZE(ss))
1184.281 -# define BOOST_PP_SEQ_FOLD_RIGHT_248(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_248(op, st, BOOST_PP_SEQ_REVERSE_S(249, ss), BOOST_PP_SEQ_SIZE(ss))
1184.282 -# define BOOST_PP_SEQ_FOLD_RIGHT_249(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_249(op, st, BOOST_PP_SEQ_REVERSE_S(250, ss), BOOST_PP_SEQ_SIZE(ss))
1184.283 -# define BOOST_PP_SEQ_FOLD_RIGHT_250(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_250(op, st, BOOST_PP_SEQ_REVERSE_S(251, ss), BOOST_PP_SEQ_SIZE(ss))
1184.284 -# define BOOST_PP_SEQ_FOLD_RIGHT_251(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_251(op, st, BOOST_PP_SEQ_REVERSE_S(252, ss), BOOST_PP_SEQ_SIZE(ss))
1184.285 -# define BOOST_PP_SEQ_FOLD_RIGHT_252(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_252(op, st, BOOST_PP_SEQ_REVERSE_S(253, ss), BOOST_PP_SEQ_SIZE(ss))
1184.286 -# define BOOST_PP_SEQ_FOLD_RIGHT_253(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_253(op, st, BOOST_PP_SEQ_REVERSE_S(254, ss), BOOST_PP_SEQ_SIZE(ss))
1184.287 -# define BOOST_PP_SEQ_FOLD_RIGHT_254(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_254(op, st, BOOST_PP_SEQ_REVERSE_S(255, ss), BOOST_PP_SEQ_SIZE(ss))
1184.288 -# define BOOST_PP_SEQ_FOLD_RIGHT_255(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_255(op, st, BOOST_PP_SEQ_REVERSE_S(256, ss), BOOST_PP_SEQ_SIZE(ss))
1184.289 -# define BOOST_PP_SEQ_FOLD_RIGHT_256(op, st, ss) BOOST_PP_SEQ_FOLD_LEFT_I_256(op, st, BOOST_PP_SEQ_REVERSE_S(257, ss), BOOST_PP_SEQ_SIZE(ss))
1184.290 -#
1184.291 -# endif
  1185.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/for_each.hpp	Tue Mar 16 16:12:26 2010 +0000
  1185.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1185.3 @@ -1,60 +0,0 @@
  1185.4 -# /* **************************************************************************
  1185.5 -#  *                                                                          *
  1185.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1185.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1185.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1185.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1185.10 -#  *                                                                          *
 1185.11 -#  ************************************************************************** */
 1185.12 -#
 1185.13 -# /* See http://www.boost.org for most recent version. */
 1185.14 -#
 1185.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_HPP
 1185.16 -# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_HPP
 1185.17 -#
 1185.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1185.19 -# include <boost/preprocessor/config/config.hpp>
 1185.20 -# include <boost/preprocessor/repetition/for.hpp>
 1185.21 -# include <boost/preprocessor/seq/seq.hpp>
 1185.22 -# include <boost/preprocessor/seq/size.hpp>
 1185.23 -# include <boost/preprocessor/tuple/elem.hpp>
 1185.24 -# include <boost/preprocessor/tuple/rem.hpp>
 1185.25 -#
 1185.26 -# /* BOOST_PP_SEQ_FOR_EACH */
 1185.27 -#
 1185.28 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1185.29 -#    define BOOST_PP_SEQ_FOR_EACH(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1185.30 -# else
 1185.31 -#    define BOOST_PP_SEQ_FOR_EACH(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_D(macro, data, seq)
 1185.32 -#    define BOOST_PP_SEQ_FOR_EACH_D(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1185.33 -# endif
 1185.34 -#
 1185.35 -# define BOOST_PP_SEQ_FOR_EACH_P(r, x) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(3, 2, x)))
 1185.36 -#
 1185.37 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1185.38 -#    define BOOST_PP_SEQ_FOR_EACH_O(r, x) BOOST_PP_SEQ_FOR_EACH_O_I x
 1185.39 -# else
 1185.40 -#    define BOOST_PP_SEQ_FOR_EACH_O(r, x) BOOST_PP_SEQ_FOR_EACH_O_I(BOOST_PP_TUPLE_ELEM(3, 0, x), BOOST_PP_TUPLE_ELEM(3, 1, x), BOOST_PP_TUPLE_ELEM(3, 2, x))
 1185.41 -# endif
 1185.42 -#
 1185.43 -# define BOOST_PP_SEQ_FOR_EACH_O_I(macro, data, seq) (macro, data, BOOST_PP_SEQ_TAIL(seq))
 1185.44 -#
 1185.45 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1185.46 -#    define BOOST_PP_SEQ_FOR_EACH_M(r, x) BOOST_PP_SEQ_FOR_EACH_M_IM(r, BOOST_PP_TUPLE_REM_3 x)
 1185.47 -#    define BOOST_PP_SEQ_FOR_EACH_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_M_I(r, im)
 1185.48 -# else
 1185.49 -#    define BOOST_PP_SEQ_FOR_EACH_M(r, x) BOOST_PP_SEQ_FOR_EACH_M_I(r, BOOST_PP_TUPLE_ELEM(3, 0, x), BOOST_PP_TUPLE_ELEM(3, 1, x), BOOST_PP_TUPLE_ELEM(3, 2, x))
 1185.50 -# endif
 1185.51 -#
 1185.52 -# define BOOST_PP_SEQ_FOR_EACH_M_I(r, macro, data, seq) macro(r, data, BOOST_PP_SEQ_HEAD(seq))
 1185.53 -#
 1185.54 -# /* BOOST_PP_SEQ_FOR_EACH_R */
 1185.55 -#
 1185.56 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1185.57 -#    define BOOST_PP_SEQ_FOR_EACH_R(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1185.58 -# else
 1185.59 -#    define BOOST_PP_SEQ_FOR_EACH_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq)
 1185.60 -#    define BOOST_PP_SEQ_FOR_EACH_R_I(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil)), BOOST_PP_SEQ_FOR_EACH_P, BOOST_PP_SEQ_FOR_EACH_O, BOOST_PP_SEQ_FOR_EACH_M)
 1185.61 -# endif
 1185.62 -#
 1185.63 -# endif
  1186.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/for_each_i.hpp	Tue Mar 16 16:12:26 2010 +0000
  1186.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1186.3 @@ -1,61 +0,0 @@
  1186.4 -# /* **************************************************************************
  1186.5 -#  *                                                                          *
  1186.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1186.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1186.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1186.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1186.10 -#  *                                                                          *
 1186.11 -#  ************************************************************************** */
 1186.12 -#
 1186.13 -# /* See http://www.boost.org for most recent version. */
 1186.14 -#
 1186.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
 1186.16 -# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_I_HPP
 1186.17 -#
 1186.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1186.19 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1186.20 -# include <boost/preprocessor/config/config.hpp>
 1186.21 -# include <boost/preprocessor/repetition/for.hpp>
 1186.22 -# include <boost/preprocessor/seq/seq.hpp>
 1186.23 -# include <boost/preprocessor/seq/size.hpp>
 1186.24 -# include <boost/preprocessor/tuple/elem.hpp>
 1186.25 -# include <boost/preprocessor/tuple/rem.hpp>
 1186.26 -#
 1186.27 -# /* BOOST_PP_SEQ_FOR_EACH_I */
 1186.28 -#
 1186.29 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1186.30 -#    define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1186.31 -# else
 1186.32 -#    define BOOST_PP_SEQ_FOR_EACH_I(macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq)
 1186.33 -#    define BOOST_PP_SEQ_FOR_EACH_I_I(macro, data, seq) BOOST_PP_FOR((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1186.34 -# endif
 1186.35 -#
 1186.36 -# define BOOST_PP_SEQ_FOR_EACH_I_P(r, x) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 2, x)))
 1186.37 -#
 1186.38 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1186.39 -#    define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I x
 1186.40 -# else
 1186.41 -#    define BOOST_PP_SEQ_FOR_EACH_I_O(r, x) BOOST_PP_SEQ_FOR_EACH_I_O_I(BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
 1186.42 -# endif
 1186.43 -#
 1186.44 -# define BOOST_PP_SEQ_FOR_EACH_I_O_I(macro, data, seq, i) (macro, data, BOOST_PP_SEQ_TAIL(seq), BOOST_PP_INC(i))
 1186.45 -#
 1186.46 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1186.47 -#    define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, BOOST_PP_TUPLE_REM_4 x)
 1186.48 -#    define BOOST_PP_SEQ_FOR_EACH_I_M_IM(r, im) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, im)
 1186.49 -# else
 1186.50 -#    define BOOST_PP_SEQ_FOR_EACH_I_M(r, x) BOOST_PP_SEQ_FOR_EACH_I_M_I(r, BOOST_PP_TUPLE_ELEM(4, 0, x), BOOST_PP_TUPLE_ELEM(4, 1, x), BOOST_PP_TUPLE_ELEM(4, 2, x), BOOST_PP_TUPLE_ELEM(4, 3, x))
 1186.51 -# endif
 1186.52 -#
 1186.53 -# define BOOST_PP_SEQ_FOR_EACH_I_M_I(r, macro, data, seq, i) macro(r, data, i, BOOST_PP_SEQ_HEAD(seq))
 1186.54 -#
 1186.55 -# /* BOOST_PP_SEQ_FOR_EACH_I_R */
 1186.56 -#
 1186.57 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1186.58 -#    define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1186.59 -# else
 1186.60 -#    define BOOST_PP_SEQ_FOR_EACH_I_R(r, macro, data, seq) BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq)
 1186.61 -#    define BOOST_PP_SEQ_FOR_EACH_I_R_I(r, macro, data, seq) BOOST_PP_FOR_ ## r((macro, data, seq (nil), 0), BOOST_PP_SEQ_FOR_EACH_I_P, BOOST_PP_SEQ_FOR_EACH_I_O, BOOST_PP_SEQ_FOR_EACH_I_M)
 1186.62 -# endif
 1186.63 -#
 1186.64 -# endif
  1187.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/for_each_product.hpp	Tue Mar 16 16:12:26 2010 +0000
  1187.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1187.3 @@ -1,126 +0,0 @@
  1187.4 -# /* **************************************************************************
  1187.5 -#  *                                                                          *
  1187.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1187.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1187.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1187.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1187.10 -#  *                                                                          *
 1187.11 -#  ************************************************************************** */
 1187.12 -#
 1187.13 -# /* See http://www.boost.org for most recent version. */
 1187.14 -#
 1187.15 -# ifndef BOOST_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
 1187.16 -# define BOOST_PREPROCESSOR_SEQ_FOR_EACH_PRODUCT_HPP
 1187.17 -#
 1187.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1187.19 -# include <boost/preprocessor/config/config.hpp>
 1187.20 -# include <boost/preprocessor/control/if.hpp>
 1187.21 -# include <boost/preprocessor/repetition/for.hpp>
 1187.22 -# include <boost/preprocessor/seq/seq.hpp>
 1187.23 -# include <boost/preprocessor/seq/size.hpp>
 1187.24 -# include <boost/preprocessor/tuple/elem.hpp>
 1187.25 -# include <boost/preprocessor/tuple/rem.hpp>
 1187.26 -#
 1187.27 -# /* BOOST_PP_SEQ_FOR_EACH_PRODUCT */
 1187.28 -#
 1187.29 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT(macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(BOOST_PP_FOR, macro, sets)
 1187.30 -#
 1187.31 -# /* BOOST_PP_SEQ_FOR_EACH_PRODUCT_R */
 1187.32 -#
 1187.33 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_R(r, macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(BOOST_PP_FOR_ ## r, macro, sets)
 1187.34 -#
 1187.35 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1187.36 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) impl((BOOST_PP_SEQ_HEAD(sets)(nil), BOOST_PP_SEQ_TAIL(sets)(nil), (nil), macro), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0)
 1187.37 -# else
 1187.38 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E(impl, macro, sets) BOOST_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets)
 1187.39 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_E_I(impl, macro, sets) impl((BOOST_PP_SEQ_HEAD(sets)(nil), BOOST_PP_SEQ_TAIL(sets)(nil), (nil), macro), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0)
 1187.40 -# endif
 1187.41 -#
 1187.42 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1187.43 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_P_I data
 1187.44 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P_I(cset, rset, res, macro) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(cset))
 1187.45 -# else
 1187.46 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_P(r, data) BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 0, data)))
 1187.47 -# endif
 1187.48 -#
 1187.49 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1187.50 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_O_I data
 1187.51 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O_I(cset, rset, res, macro) (BOOST_PP_SEQ_TAIL(cset), rset, res, macro)
 1187.52 -# else
 1187.53 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_O(r, data) (BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(4, 0, data)), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
 1187.54 -# endif
 1187.55 -#
 1187.56 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, i) BOOST_PP_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(BOOST_PP_TUPLE_ELEM(4, 1, data))), BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_ ## i, BOOST_PP_SEQ_FOR_EACH_PRODUCT_I)
 1187.57 -#
 1187.58 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1187.59 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, BOOST_PP_TUPLE_ELEM(4, 0, data), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
 1187.60 -# else
 1187.61 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, BOOST_PP_TUPLE_REM_4 data)
 1187.62 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_IM(r, im) BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, im)
 1187.63 -# endif
 1187.64 -#
 1187.65 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_I_I(r, cset, rset, res, macro) macro(r, BOOST_PP_SEQ_TAIL(res (BOOST_PP_SEQ_HEAD(cset))))
 1187.66 -#
 1187.67 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1187.68 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I data
 1187.69 -# else
 1187.70 -#    define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I(BOOST_PP_TUPLE_ELEM(4, 0, data), BOOST_PP_TUPLE_ELEM(4, 1, data), BOOST_PP_TUPLE_ELEM(4, 2, data), BOOST_PP_TUPLE_ELEM(4, 3, data))
 1187.71 -# endif
 1187.72 -#
 1187.73 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_H_I(cset, rset, res, macro) (BOOST_PP_SEQ_HEAD(rset)(nil), BOOST_PP_SEQ_TAIL(rset), res (BOOST_PP_SEQ_HEAD(cset)), macro)
 1187.74 -#
 1187.75 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_0(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 0)(r, data)
 1187.76 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_1(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 1)(r, data)
 1187.77 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_2(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 2)(r, data)
 1187.78 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_3(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 3)(r, data)
 1187.79 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_4(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 4)(r, data)
 1187.80 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_5(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 5)(r, data)
 1187.81 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_6(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 6)(r, data)
 1187.82 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_7(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 7)(r, data)
 1187.83 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_8(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 8)(r, data)
 1187.84 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_9(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 9)(r, data)
 1187.85 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_10(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 10)(r, data)
 1187.86 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_11(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 11)(r, data)
 1187.87 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_12(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 12)(r, data)
 1187.88 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_13(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 13)(r, data)
 1187.89 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_14(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 14)(r, data)
 1187.90 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_15(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 15)(r, data)
 1187.91 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_16(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 16)(r, data)
 1187.92 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_17(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 17)(r, data)
 1187.93 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_18(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 18)(r, data)
 1187.94 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_19(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 19)(r, data)
 1187.95 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_20(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 20)(r, data)
 1187.96 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_21(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 21)(r, data)
 1187.97 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_22(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 22)(r, data)
 1187.98 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_23(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 23)(r, data)
 1187.99 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_24(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 24)(r, data)
1187.100 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_25(r, data) BOOST_PP_SEQ_FOR_EACH_PRODUCT_C(data, 25)(r, data)
1187.101 -#
1187.102 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_0(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_1)
1187.103 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_1(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_2)
1187.104 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_2(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_3)
1187.105 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_3(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_4)
1187.106 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_4(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_5)
1187.107 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_5(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_6)
1187.108 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_6(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_7)
1187.109 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_7(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_8)
1187.110 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_8(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_9)
1187.111 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_9(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_10)
1187.112 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_10(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_11)
1187.113 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_11(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_12)
1187.114 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_12(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_13)
1187.115 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_13(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_14)
1187.116 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_14(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_15)
1187.117 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_15(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_16)
1187.118 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_16(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_17)
1187.119 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_17(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_18)
1187.120 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_18(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_19)
1187.121 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_19(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_20)
1187.122 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_20(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_21)
1187.123 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_21(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_22)
1187.124 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_22(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_23)
1187.125 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_23(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_24)
1187.126 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_24(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_25)
1187.127 -# define BOOST_PP_SEQ_FOR_EACH_PRODUCT_N_25(r, data) BOOST_PP_FOR_ ## r(BOOST_PP_SEQ_FOR_EACH_PRODUCT_H(data), BOOST_PP_SEQ_FOR_EACH_PRODUCT_P, BOOST_PP_SEQ_FOR_EACH_PRODUCT_O, BOOST_PP_SEQ_FOR_EACH_PRODUCT_M_26)
1187.128 -#
1187.129 -# endif
  1188.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/insert.hpp	Tue Mar 16 16:12:26 2010 +0000
  1188.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1188.3 @@ -1,28 +0,0 @@
  1188.4 -# /* **************************************************************************
  1188.5 -#  *                                                                          *
  1188.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1188.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1188.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1188.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1188.10 -#  *                                                                          *
 1188.11 -#  ************************************************************************** */
 1188.12 -#
 1188.13 -# /* See http://www.boost.org for most recent version. */
 1188.14 -#
 1188.15 -# ifndef BOOST_PREPROCESSOR_SEQ_INSERT_HPP
 1188.16 -# define BOOST_PREPROCESSOR_SEQ_INSERT_HPP
 1188.17 -#
 1188.18 -# include <boost/preprocessor/config/config.hpp>
 1188.19 -# include <boost/preprocessor/seq/first_n.hpp>
 1188.20 -# include <boost/preprocessor/seq/rest_n.hpp>
 1188.21 -#
 1188.22 -# /* BOOST_PP_SEQ_INSERT */
 1188.23 -#
 1188.24 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1188.25 -#    define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq)
 1188.26 -# else
 1188.27 -#    define BOOST_PP_SEQ_INSERT(seq, i, elem) BOOST_PP_SEQ_INSERT_I(seq, i, elem)
 1188.28 -#    define BOOST_PP_SEQ_INSERT_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(i, seq)
 1188.29 -# endif
 1188.30 -#
 1188.31 -# endif
  1189.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/pop_back.hpp	Tue Mar 16 16:12:26 2010 +0000
  1189.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1189.3 @@ -1,29 +0,0 @@
  1189.4 -# /* **************************************************************************
  1189.5 -#  *                                                                          *
  1189.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1189.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1189.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1189.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1189.10 -#  *                                                                          *
 1189.11 -#  ************************************************************************** */
 1189.12 -#
 1189.13 -# /* See http://www.boost.org for most recent version. */
 1189.14 -#
 1189.15 -# ifndef BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP
 1189.16 -# define BOOST_PREPROCESSOR_SEQ_POP_BACK_HPP
 1189.17 -#
 1189.18 -# include <boost/preprocessor/arithmetic/dec.hpp>
 1189.19 -# include <boost/preprocessor/config/config.hpp>
 1189.20 -# include <boost/preprocessor/seq/first_n.hpp>
 1189.21 -# include <boost/preprocessor/seq/size.hpp>
 1189.22 -#
 1189.23 -# /* BOOST_PP_SEQ_POP_BACK */
 1189.24 -#
 1189.25 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1189.26 -#    define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)
 1189.27 -# else
 1189.28 -#    define BOOST_PP_SEQ_POP_BACK(seq) BOOST_PP_SEQ_POP_BACK_I(seq)
 1189.29 -#    define BOOST_PP_SEQ_POP_BACK_I(seq) BOOST_PP_SEQ_FIRST_N(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(seq)), seq)
 1189.30 -# endif
 1189.31 -#
 1189.32 -# endif
  1190.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/pop_front.hpp	Tue Mar 16 16:12:26 2010 +0000
  1190.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1190.3 @@ -1,27 +0,0 @@
  1190.4 -# /* **************************************************************************
  1190.5 -#  *                                                                          *
  1190.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1190.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1190.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1190.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1190.10 -#  *                                                                          *
 1190.11 -#  ************************************************************************** */
 1190.12 -#
 1190.13 -# /* See http://www.boost.org for most recent version. */
 1190.14 -#
 1190.15 -# ifndef BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP
 1190.16 -# define BOOST_PREPROCESSOR_SEQ_POP_FRONT_HPP
 1190.17 -#
 1190.18 -# include <boost/preprocessor/config/config.hpp>
 1190.19 -# include <boost/preprocessor/seq/seq.hpp>
 1190.20 -#
 1190.21 -# /* BOOST_PP_SEQ_POP_FRONT */
 1190.22 -#
 1190.23 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1190.24 -#    define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_TAIL(seq)
 1190.25 -# else
 1190.26 -#    define BOOST_PP_SEQ_POP_FRONT(seq) BOOST_PP_SEQ_POP_FRONT_I(seq)
 1190.27 -#    define BOOST_PP_SEQ_POP_FRONT_I(seq) BOOST_PP_SEQ_TAIL(seq)
 1190.28 -# endif
 1190.29 -#
 1190.30 -# endif
  1191.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/push_back.hpp	Tue Mar 16 16:12:26 2010 +0000
  1191.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1191.3 @@ -1,19 +0,0 @@
  1191.4 -# /* **************************************************************************
  1191.5 -#  *                                                                          *
  1191.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1191.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1191.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1191.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1191.10 -#  *                                                                          *
 1191.11 -#  ************************************************************************** */
 1191.12 -#
 1191.13 -# /* See http://www.boost.org for most recent version. */
 1191.14 -#
 1191.15 -# ifndef BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP
 1191.16 -# define BOOST_PREPROCESSOR_SEQ_PUSH_BACK_HPP
 1191.17 -#
 1191.18 -# /* BOOST_PP_SEQ_PUSH_BACK */
 1191.19 -#
 1191.20 -# define BOOST_PP_SEQ_PUSH_BACK(seq, elem) seq(elem)
 1191.21 -#
 1191.22 -# endif
  1192.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/push_front.hpp	Tue Mar 16 16:12:26 2010 +0000
  1192.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1192.3 @@ -1,19 +0,0 @@
  1192.4 -# /* **************************************************************************
  1192.5 -#  *                                                                          *
  1192.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1192.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1192.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1192.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1192.10 -#  *                                                                          *
 1192.11 -#  ************************************************************************** */
 1192.12 -#
 1192.13 -# /* See http://www.boost.org for most recent version. */
 1192.14 -#
 1192.15 -# ifndef BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
 1192.16 -# define BOOST_PREPROCESSOR_SEQ_PUSH_FRONT_HPP
 1192.17 -#
 1192.18 -# /* BOOST_PP_SEQ_PUSH_FRONT */
 1192.19 -#
 1192.20 -# define BOOST_PP_SEQ_PUSH_FRONT(seq, elem) (elem)seq
 1192.21 -#
 1192.22 -# endif
  1193.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/remove.hpp	Tue Mar 16 16:12:26 2010 +0000
  1193.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1193.3 @@ -1,29 +0,0 @@
  1193.4 -# /* **************************************************************************
  1193.5 -#  *                                                                          *
  1193.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1193.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1193.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1193.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1193.10 -#  *                                                                          *
 1193.11 -#  ************************************************************************** */
 1193.12 -#
 1193.13 -# /* See http://www.boost.org for most recent version. */
 1193.14 -#
 1193.15 -# ifndef BOOST_PREPROCESSOR_SEQ_REMOVE_HPP
 1193.16 -# define BOOST_PREPROCESSOR_SEQ_REMOVE_HPP
 1193.17 -#
 1193.18 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1193.19 -# include <boost/preprocessor/config/config.hpp>
 1193.20 -# include <boost/preprocessor/seq/first_n.hpp>
 1193.21 -# include <boost/preprocessor/seq/rest_n.hpp>
 1193.22 -#
 1193.23 -# /* BOOST_PP_SEQ_REMOVE */
 1193.24 -#
 1193.25 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1193.26 -#    define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1193.27 -# else
 1193.28 -#    define BOOST_PP_SEQ_REMOVE(seq, i) BOOST_PP_SEQ_REMOVE_I(seq, i)
 1193.29 -#    define BOOST_PP_SEQ_REMOVE_I(seq, i) BOOST_PP_SEQ_FIRST_N(i, seq) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1193.30 -# endif
 1193.31 -#
 1193.32 -# endif
  1194.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/replace.hpp	Tue Mar 16 16:12:26 2010 +0000
  1194.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1194.3 @@ -1,29 +0,0 @@
  1194.4 -# /* **************************************************************************
  1194.5 -#  *                                                                          *
  1194.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1194.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1194.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1194.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1194.10 -#  *                                                                          *
 1194.11 -#  ************************************************************************** */
 1194.12 -#
 1194.13 -# /* See http://www.boost.org for most recent version. */
 1194.14 -#
 1194.15 -# ifndef BOOST_PREPROCESSOR_SEQ_REPLACE_HPP
 1194.16 -# define BOOST_PREPROCESSOR_SEQ_REPLACE_HPP
 1194.17 -#
 1194.18 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1194.19 -# include <boost/preprocessor/config/config.hpp>
 1194.20 -# include <boost/preprocessor/seq/first_n.hpp>
 1194.21 -# include <boost/preprocessor/seq/rest_n.hpp>
 1194.22 -#
 1194.23 -# /* BOOST_PP_SEQ_REPLACE */
 1194.24 -#
 1194.25 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1194.26 -#    define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1194.27 -# else
 1194.28 -#    define BOOST_PP_SEQ_REPLACE(seq, i, elem) BOOST_PP_SEQ_REPLACE_I(seq, i, elem)
 1194.29 -#    define BOOST_PP_SEQ_REPLACE_I(seq, i, elem) BOOST_PP_SEQ_FIRST_N(i, seq) (elem) BOOST_PP_SEQ_REST_N(BOOST_PP_INC(i), seq)
 1194.30 -# endif
 1194.31 -#
 1194.32 -# endif
  1195.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/rest_n.hpp	Tue Mar 16 16:12:26 2010 +0000
  1195.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1195.3 @@ -1,30 +0,0 @@
  1195.4 -# /* **************************************************************************
  1195.5 -#  *                                                                          *
  1195.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1195.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1195.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1195.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1195.10 -#  *                                                                          *
 1195.11 -#  ************************************************************************** */
 1195.12 -#
 1195.13 -# /* See http://www.boost.org for most recent version. */
 1195.14 -#
 1195.15 -# ifndef BOOST_PREPROCESSOR_SEQ_REST_N_HPP
 1195.16 -# define BOOST_PREPROCESSOR_SEQ_REST_N_HPP
 1195.17 -#
 1195.18 -# include <boost/preprocessor/arithmetic/inc.hpp>
 1195.19 -# include <boost/preprocessor/config/config.hpp>
 1195.20 -# include <boost/preprocessor/facilities/empty.hpp>
 1195.21 -# include <boost/preprocessor/seq/detail/split.hpp>
 1195.22 -# include <boost/preprocessor/tuple/elem.hpp>
 1195.23 -#
 1195.24 -# /* BOOST_PP_SEQ_REST_N */
 1195.25 -#
 1195.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1195.27 -#    define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
 1195.28 -# else
 1195.29 -#    define BOOST_PP_SEQ_REST_N(n, seq) BOOST_PP_SEQ_REST_N_I(n, seq)
 1195.30 -#    define BOOST_PP_SEQ_REST_N_I(n, seq) BOOST_PP_TUPLE_ELEM(2, 1, BOOST_PP_SEQ_SPLIT(BOOST_PP_INC(n), (nil) seq BOOST_PP_EMPTY))()
 1195.31 -# endif
 1195.32 -#
 1195.33 -# endif
  1196.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/seq.hpp	Tue Mar 16 16:12:26 2010 +0000
  1196.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1196.3 @@ -1,44 +0,0 @@
  1196.4 -# /* **************************************************************************
  1196.5 -#  *                                                                          *
  1196.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1196.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1196.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1196.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1196.10 -#  *                                                                          *
 1196.11 -#  ************************************************************************** */
 1196.12 -#
 1196.13 -# /* See http://www.boost.org for most recent version. */
 1196.14 -#
 1196.15 -# ifndef BOOST_PREPROCESSOR_SEQ_SEQ_HPP
 1196.16 -# define BOOST_PREPROCESSOR_SEQ_SEQ_HPP
 1196.17 -#
 1196.18 -# include <boost/preprocessor/config/config.hpp>
 1196.19 -# include <boost/preprocessor/seq/elem.hpp>
 1196.20 -#
 1196.21 -# /* BOOST_PP_SEQ_HEAD */
 1196.22 -#
 1196.23 -# define BOOST_PP_SEQ_HEAD(seq) BOOST_PP_SEQ_ELEM(0, seq)
 1196.24 -#
 1196.25 -# /* BOOST_PP_SEQ_TAIL */
 1196.26 -#
 1196.27 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1196.28 -#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_1((seq))
 1196.29 -#    define BOOST_PP_SEQ_TAIL_1(par) BOOST_PP_SEQ_TAIL_2 ## par
 1196.30 -#    define BOOST_PP_SEQ_TAIL_2(seq) BOOST_PP_SEQ_TAIL_I ## seq
 1196.31 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1196.32 -#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_ID(BOOST_PP_SEQ_TAIL_I seq)
 1196.33 -#    define BOOST_PP_SEQ_TAIL_ID(id) id
 1196.34 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1196.35 -#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_D(seq)
 1196.36 -#    define BOOST_PP_SEQ_TAIL_D(seq) BOOST_PP_SEQ_TAIL_I seq
 1196.37 -# else
 1196.38 -#    define BOOST_PP_SEQ_TAIL(seq) BOOST_PP_SEQ_TAIL_I seq
 1196.39 -# endif
 1196.40 -#
 1196.41 -# define BOOST_PP_SEQ_TAIL_I(x)
 1196.42 -#
 1196.43 -# /* BOOST_PP_SEQ_NIL */
 1196.44 -#
 1196.45 -# define BOOST_PP_SEQ_NIL(x) (x)
 1196.46 -#
 1196.47 -# endif
  1197.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/to_tuple.hpp	Tue Mar 16 16:12:26 2010 +0000
  1197.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1197.3 @@ -1,27 +0,0 @@
  1197.4 -# /* **************************************************************************
  1197.5 -#  *                                                                          *
  1197.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1197.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1197.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1197.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1197.10 -#  *                                                                          *
 1197.11 -#  ************************************************************************** */
 1197.12 -#
 1197.13 -# /* See http://www.boost.org for most recent version. */
 1197.14 -#
 1197.15 -# ifndef BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP
 1197.16 -# define BOOST_PREPROCESSOR_SEQ_TO_TUPLE_HPP
 1197.17 -#
 1197.18 -# include <boost/preprocessor/config/config.hpp>
 1197.19 -# include <boost/preprocessor/seq/enum.hpp>
 1197.20 -#
 1197.21 -# /* BOOST_PP_SEQ_TO_TUPLE */
 1197.22 -#
 1197.23 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1197.24 -#    define BOOST_PP_SEQ_TO_TUPLE(seq) (BOOST_PP_SEQ_ENUM(seq))
 1197.25 -# else
 1197.26 -#    define BOOST_PP_SEQ_TO_TUPLE(seq) BOOST_PP_SEQ_TO_TUPLE_I(seq)
 1197.27 -#    define BOOST_PP_SEQ_TO_TUPLE_I(seq) (BOOST_PP_SEQ_ENUM(seq))
 1197.28 -# endif
 1197.29 -#
 1197.30 -# endif
  1198.1 --- a/epoc32/include/stdapis/boost/preprocessor/seq/transform.hpp	Tue Mar 16 16:12:26 2010 +0000
  1198.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1198.3 @@ -1,48 +0,0 @@
  1198.4 -# /* **************************************************************************
  1198.5 -#  *                                                                          *
  1198.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1198.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1198.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1198.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1198.10 -#  *                                                                          *
 1198.11 -#  ************************************************************************** */
 1198.12 -#
 1198.13 -# /* See http://www.boost.org for most recent version. */
 1198.14 -#
 1198.15 -# ifndef BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
 1198.16 -# define BOOST_PREPROCESSOR_SEQ_TRANSFORM_HPP
 1198.17 -#
 1198.18 -# include <boost/preprocessor/config/config.hpp>
 1198.19 -# include <boost/preprocessor/seq/fold_left.hpp>
 1198.20 -# include <boost/preprocessor/seq/seq.hpp>
 1198.21 -# include <boost/preprocessor/tuple/elem.hpp>
 1198.22 -# include <boost/preprocessor/tuple/rem.hpp>
 1198.23 -#
 1198.24 -# /* BOOST_PP_SEQ_TRANSFORM */
 1198.25 -#
 1198.26 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1198.27 -#    define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1198.28 -# else
 1198.29 -#    define BOOST_PP_SEQ_TRANSFORM(op, data, seq) BOOST_PP_SEQ_TRANSFORM_I(op, data, seq)
 1198.30 -#    define BOOST_PP_SEQ_TRANSFORM_I(op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1198.31 -# endif
 1198.32 -#
 1198.33 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_STRICT()
 1198.34 -#    define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_IM(s, BOOST_PP_TUPLE_REM_3 state, elem)
 1198.35 -#    define BOOST_PP_SEQ_TRANSFORM_O_IM(s, im, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, im, elem)
 1198.36 -# else
 1198.37 -#    define BOOST_PP_SEQ_TRANSFORM_O(s, state, elem) BOOST_PP_SEQ_TRANSFORM_O_I(s, BOOST_PP_TUPLE_ELEM(3, 0, state), BOOST_PP_TUPLE_ELEM(3, 1, state), BOOST_PP_TUPLE_ELEM(3, 2, state), elem)
 1198.38 -# endif
 1198.39 -#
 1198.40 -# define BOOST_PP_SEQ_TRANSFORM_O_I(s, op, data, res, elem) (op, data, res (op(s, data, elem)))
 1198.41 -#
 1198.42 -# /* BOOST_PP_SEQ_TRANSFORM_S */
 1198.43 -#
 1198.44 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
 1198.45 -#    define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1198.46 -# else
 1198.47 -#    define BOOST_PP_SEQ_TRANSFORM_S(s, op, data, seq) BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq)
 1198.48 -#    define BOOST_PP_SEQ_TRANSFORM_S_I(s, op, data, seq) BOOST_PP_SEQ_TAIL(BOOST_PP_TUPLE_ELEM(3, 2, BOOST_PP_SEQ_FOLD_LEFT_ ## s(BOOST_PP_SEQ_TRANSFORM_O, (op, data, (nil)), seq)))
 1198.49 -# endif
 1198.50 -#
 1198.51 -# endif
  1199.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1199.2 +++ b/epoc32/include/stdapis/boost/preprocessor/slot.hpp	Wed Mar 31 12:27:01 2010 +0100
  1199.3 @@ -0,0 +1,32 @@
  1199.4 +# /* **************************************************************************
  1199.5 +#  *                                                                          *
  1199.6 +#  *     (C) Copyright Paul Mensonides 2002.
  1199.7 +#  *     Distributed under the Boost Software License, Version 1.0. (See
  1199.8 +#  *     accompanying file LICENSE_1_0.txt or copy at
  1199.9 +#  *     http://www.boost.org/LICENSE_1_0.txt)
 1199.10 +#  *                                                                          *
 1199.11 +#  ************************************************************************** */
 1199.12 +#
 1199.13 +# /* See http://www.boost.org for most recent version. */
 1199.14 +#
 1199.15 +# ifndef BOOST_PREPROCESSOR_SLOT_SLOT_HPP
 1199.16 +# define BOOST_PREPROCESSOR_SLOT_SLOT_HPP
 1199.17 +#
 1199.18 +# include <boost/preprocessor/cat.hpp>
 1199.19 +# include <boost/preprocessor/slot/detail/def.hpp>
 1199.20 +#
 1199.21 +# /* BOOST_PP_ASSIGN_SLOT */
 1199.22 +#
 1199.23 +# define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i)
 1199.24 +#
 1199.25 +# define BOOST_PP_ASSIGN_SLOT_1 <boost/preprocessor/slot/detail/slot1.hpp>
 1199.26 +# define BOOST_PP_ASSIGN_SLOT_2 <boost/preprocessor/slot/detail/slot2.hpp>
 1199.27 +# define BOOST_PP_ASSIGN_SLOT_3 <boost/preprocessor/slot/detail/slot3.hpp>
 1199.28 +# define BOOST_PP_ASSIGN_SLOT_4 <boost/preprocessor/slot/detail/slot4.hpp>
 1199.29 +# define BOOST_PP_ASSIGN_SLOT_5 <boost/preprocessor/slot/detail/slot5.hpp>
 1199.30 +#
 1199.31 +# /* BOOST_PP_SLOT */
 1199.32 +#
 1199.33 +# define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)()
 1199.34 +#
 1199.35 +# endif
  1200.1 --- a/epoc32/include/stdapis/boost/preprocessor/slot/slot.hpp	Tue Mar 16 16:12:26 2010 +0000
  1200.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1200.3 @@ -1,32 +0,0 @@
  1200.4 -# /* **************************************************************************
  1200.5 -#  *                                                                          *
  1200.6 -#  *     (C) Copyright Paul Mensonides 2002.
  1200.7 -#  *     Distributed under the Boost Software License, Version 1.0. (See
  1200.8 -#  *     accompanying file LICENSE_1_0.txt or copy at
  1200.9 -#  *     http://www.boost.org/LICENSE_1_0.txt)
 1200.10 -#  *                                                                          *
 1200.11 -#  ************************************************************************** */
 1200.12 -#
 1200.13 -# /* See http://www.boost.org for most recent version. */
 1200.14 -#
 1200.15 -# ifndef BOOST_PREPROCESSOR_SLOT_SLOT_HPP
 1200.16 -# define BOOST_PREPROCESSOR_SLOT_SLOT_HPP
 1200.17 -#
 1200.18 -# include <boost/preprocessor/cat.hpp>
 1200.19 -# include <boost/preprocessor/slot/detail/def.hpp>
 1200.20 -#
 1200.21 -# /* BOOST_PP_ASSIGN_SLOT */
 1200.22 -#
 1200.23 -# define BOOST_PP_ASSIGN_SLOT(i) BOOST_PP_CAT(BOOST_PP_ASSIGN_SLOT_, i)
 1200.24 -#
 1200.25 -# define BOOST_PP_ASSIGN_SLOT_1 <boost/preprocessor/slot/detail/slot1.hpp>
 1200.26 -# define BOOST_PP_ASSIGN_SLOT_2 <boost/preprocessor/slot/detail/slot2.hpp>
 1200.27 -# define BOOST_PP_ASSIGN_SLOT_3 <boost/preprocessor/slot/detail/slot3.hpp>
 1200.28 -# define BOOST_PP_ASSIGN_SLOT_4 <boost/preprocessor/slot/detail/slot4.hpp>
 1200.29 -# define BOOST_PP_ASSIGN_SLOT_5 <boost/preprocessor/slot/detail/slot5.hpp>
 1200.30 -#
 1200.31 -# /* BOOST_PP_SLOT */
 1200.32 -#
 1200.33 -# define BOOST_PP_SLOT(i) BOOST_PP_CAT(BOOST_PP_SLOT_, i)()
 1200.34 -#
 1200.35 -# endif
  1201.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1201.2 +++ b/epoc32/include/stdapis/boost/preprocessor/tuple.hpp	Wed Mar 31 12:27:01 2010 +0100
  1201.3 @@ -0,0 +1,90 @@
  1201.4 +//  tuple.hpp - Boost Tuple Library --------------------------------------
  1201.5 +
  1201.6 +// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi)
  1201.7 +//
  1201.8 +// Distributed under the Boost Software License, Version 1.0. (See
  1201.9 +// accompanying file LICENSE_1_0.txt or copy at
 1201.10 +// http://www.boost.org/LICENSE_1_0.txt)
 1201.11 +
 1201.12 +// For more information, see http://www.boost.org
 1201.13 +
 1201.14 +// ----------------------------------------------------------------- 
 1201.15 +
 1201.16 +#ifndef BOOST_TUPLE_HPP
 1201.17 +#define BOOST_TUPLE_HPP
 1201.18 +
 1201.19 +#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730
 1201.20 +// Work around a compiler bug.
 1201.21 +// boost::python::tuple has to be seen by the compiler before the
 1201.22 +// boost::tuple class template.
 1201.23 +namespace boost { namespace python { class tuple; }}
 1201.24 +#endif
 1201.25 +
 1201.26 +#include "boost/config.hpp"
 1201.27 +#include "boost/static_assert.hpp"
 1201.28 +
 1201.29 +#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1201.30 +// The MSVC version
 1201.31 +#include "boost/tuple/detail/tuple_basic_no_partial_spec.hpp"
 1201.32 +
 1201.33 +#else
 1201.34 +// other compilers
 1201.35 +#include "boost/ref.hpp"
 1201.36 +#include "boost/tuple/detail/tuple_basic.hpp"
 1201.37 +
 1201.38 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1201.39 +
 1201.40 +namespace boost {    
 1201.41 +
 1201.42 +using tuples::tuple;
 1201.43 +using tuples::make_tuple;
 1201.44 +using tuples::tie;
 1201.45 +#if !defined(BOOST_NO_USING_TEMPLATE)
 1201.46 +using tuples::get;
 1201.47 +#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1201.48 +//
 1201.49 +// The "using tuples::get" statement causes the
 1201.50 +// Borland compiler to ICE, use forwarding
 1201.51 +// functions instead:
 1201.52 +//
 1201.53 +template<int N, class HT, class TT>
 1201.54 +inline typename tuples::access_traits<
 1201.55 +                  typename tuples::element<N, tuples::cons<HT, TT> >::type
 1201.56 +                >::non_const_type
 1201.57 +get(tuples::cons<HT, TT>& c) {
 1201.58 +  return tuples::get<N,HT,TT>(c);
 1201.59 +} 
 1201.60 +// get function for const cons-lists, returns a const reference to
 1201.61 +// the element. If the element is a reference, returns the reference
 1201.62 +// as such (that is, can return a non-const reference)
 1201.63 +template<int N, class HT, class TT>
 1201.64 +inline typename tuples::access_traits<
 1201.65 +                  typename tuples::element<N, tuples::cons<HT, TT> >::type
 1201.66 +                >::const_type
 1201.67 +get(const tuples::cons<HT, TT>& c) {
 1201.68 +  return tuples::get<N,HT,TT>(c);
 1201.69 +}
 1201.70 +#else  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1201.71 +//
 1201.72 +// MSVC, using declarations don't mix with templates well,
 1201.73 +// so use forwarding functions instead:
 1201.74 +//
 1201.75 +template<int N, typename Head, typename Tail>
 1201.76 +typename tuples::detail::element_ref<N, tuples::cons<Head, Tail> >::RET
 1201.77 +get(tuples::cons<Head, Tail>& t, tuples::detail::workaround_holder<N>* = 0)
 1201.78 +{
 1201.79 +   return tuples::detail::get_class<N>::get(t);
 1201.80 +}
 1201.81 +
 1201.82 +template<int N, typename Head, typename Tail>
 1201.83 +typename tuples::detail::element_const_ref<N, tuples::cons<Head, Tail> >::RET
 1201.84 +get(const tuples::cons<Head, Tail>& t, tuples::detail::workaround_holder<N>* = 0)
 1201.85 +{
 1201.86 +   return tuples::detail::get_class<N>::get(t);
 1201.87 +}
 1201.88 +#endif // BOOST_NO_USING_TEMPLATE
 1201.89 +   
 1201.90 +} // end namespace boost
 1201.91 +
 1201.92 +
 1201.93 +#endif // BOOST_TUPLE_HPP
  1202.1 --- a/epoc32/include/stdapis/boost/preprocessor/tuple/elem.hpp	Tue Mar 16 16:12:26 2010 +0000
  1202.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1202.3 @@ -1,385 +0,0 @@
  1202.4 -# /* Copyright (C) 2001
  1202.5 -#  * Housemarque Oy
  1202.6 -#  * http://www.housemarque.com
  1202.7 -#  *
  1202.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1202.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1202.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1202.11 -#  */
 1202.12 -#
 1202.13 -# /* Revised by Paul Mensonides (2002) */
 1202.14 -#
 1202.15 -# /* See http://www.boost.org for most recent version. */
 1202.16 -#
 1202.17 -# ifndef BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
 1202.18 -# define BOOST_PREPROCESSOR_TUPLE_ELEM_HPP
 1202.19 -#
 1202.20 -# include <boost/preprocessor/config/config.hpp>
 1202.21 -#
 1202.22 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1202.23 -#    define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_I(size, index, tuple)
 1202.24 -# else
 1202.25 -#    define BOOST_PP_TUPLE_ELEM(size, index, tuple) BOOST_PP_TUPLE_ELEM_OO((size, index, tuple))
 1202.26 -#    define BOOST_PP_TUPLE_ELEM_OO(par) BOOST_PP_TUPLE_ELEM_I ## par
 1202.27 -# endif
 1202.28 -#
 1202.29 -# if BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1202.30 -#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i ## t
 1202.31 -# elif BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1202.32 -#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_II(BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t)
 1202.33 -#    define BOOST_PP_TUPLE_ELEM_II(res) res
 1202.34 -# else
 1202.35 -#    define BOOST_PP_TUPLE_ELEM_I(s, i, t) BOOST_PP_TUPLE_ELEM_ ## s ## _ ## i t
 1202.36 -# endif
 1202.37 -#
 1202.38 -# define BOOST_PP_TUPLE_ELEM_1_0(a) a
 1202.39 -#
 1202.40 -# define BOOST_PP_TUPLE_ELEM_2_0(a, b) a
 1202.41 -# define BOOST_PP_TUPLE_ELEM_2_1(a, b) b
 1202.42 -#
 1202.43 -# define BOOST_PP_TUPLE_ELEM_3_0(a, b, c) a
 1202.44 -# define BOOST_PP_TUPLE_ELEM_3_1(a, b, c) b
 1202.45 -# define BOOST_PP_TUPLE_ELEM_3_2(a, b, c) c
 1202.46 -#
 1202.47 -# define BOOST_PP_TUPLE_ELEM_4_0(a, b, c, d) a
 1202.48 -# define BOOST_PP_TUPLE_ELEM_4_1(a, b, c, d) b
 1202.49 -# define BOOST_PP_TUPLE_ELEM_4_2(a, b, c, d) c
 1202.50 -# define BOOST_PP_TUPLE_ELEM_4_3(a, b, c, d) d
 1202.51 -#
 1202.52 -# define BOOST_PP_TUPLE_ELEM_5_0(a, b, c, d, e) a
 1202.53 -# define BOOST_PP_TUPLE_ELEM_5_1(a, b, c, d, e) b
 1202.54 -# define BOOST_PP_TUPLE_ELEM_5_2(a, b, c, d, e) c
 1202.55 -# define BOOST_PP_TUPLE_ELEM_5_3(a, b, c, d, e) d
 1202.56 -# define BOOST_PP_TUPLE_ELEM_5_4(a, b, c, d, e) e
 1202.57 -#
 1202.58 -# define BOOST_PP_TUPLE_ELEM_6_0(a, b, c, d, e, f) a
 1202.59 -# define BOOST_PP_TUPLE_ELEM_6_1(a, b, c, d, e, f) b
 1202.60 -# define BOOST_PP_TUPLE_ELEM_6_2(a, b, c, d, e, f) c
 1202.61 -# define BOOST_PP_TUPLE_ELEM_6_3(a, b, c, d, e, f) d
 1202.62 -# define BOOST_PP_TUPLE_ELEM_6_4(a, b, c, d, e, f) e
 1202.63 -# define BOOST_PP_TUPLE_ELEM_6_5(a, b, c, d, e, f) f
 1202.64 -#
 1202.65 -# define BOOST_PP_TUPLE_ELEM_7_0(a, b, c, d, e, f, g) a
 1202.66 -# define BOOST_PP_TUPLE_ELEM_7_1(a, b, c, d, e, f, g) b
 1202.67 -# define BOOST_PP_TUPLE_ELEM_7_2(a, b, c, d, e, f, g) c
 1202.68 -# define BOOST_PP_TUPLE_ELEM_7_3(a, b, c, d, e, f, g) d
 1202.69 -# define BOOST_PP_TUPLE_ELEM_7_4(a, b, c, d, e, f, g) e
 1202.70 -# define BOOST_PP_TUPLE_ELEM_7_5(a, b, c, d, e, f, g) f
 1202.71 -# define BOOST_PP_TUPLE_ELEM_7_6(a, b, c, d, e, f, g) g
 1202.72 -#
 1202.73 -# define BOOST_PP_TUPLE_ELEM_8_0(a, b, c, d, e, f, g, h) a
 1202.74 -# define BOOST_PP_TUPLE_ELEM_8_1(a, b, c, d, e, f, g, h) b
 1202.75 -# define BOOST_PP_TUPLE_ELEM_8_2(a, b, c, d, e, f, g, h) c
 1202.76 -# define BOOST_PP_TUPLE_ELEM_8_3(a, b, c, d, e, f, g, h) d
 1202.77 -# define BOOST_PP_TUPLE_ELEM_8_4(a, b, c, d, e, f, g, h) e
 1202.78 -# define BOOST_PP_TUPLE_ELEM_8_5(a, b, c, d, e, f, g, h) f
 1202.79 -# define BOOST_PP_TUPLE_ELEM_8_6(a, b, c, d, e, f, g, h) g
 1202.80 -# define BOOST_PP_TUPLE_ELEM_8_7(a, b, c, d, e, f, g, h) h
 1202.81 -#
 1202.82 -# define BOOST_PP_TUPLE_ELEM_9_0(a, b, c, d, e, f, g, h, i) a
 1202.83 -# define BOOST_PP_TUPLE_ELEM_9_1(a, b, c, d, e, f, g, h, i) b
 1202.84 -# define BOOST_PP_TUPLE_ELEM_9_2(a, b, c, d, e, f, g, h, i) c
 1202.85 -# define BOOST_PP_TUPLE_ELEM_9_3(a, b, c, d, e, f, g, h, i) d
 1202.86 -# define BOOST_PP_TUPLE_ELEM_9_4(a, b, c, d, e, f, g, h, i) e
 1202.87 -# define BOOST_PP_TUPLE_ELEM_9_5(a, b, c, d, e, f, g, h, i) f
 1202.88 -# define BOOST_PP_TUPLE_ELEM_9_6(a, b, c, d, e, f, g, h, i) g
 1202.89 -# define BOOST_PP_TUPLE_ELEM_9_7(a, b, c, d, e, f, g, h, i) h
 1202.90 -# define BOOST_PP_TUPLE_ELEM_9_8(a, b, c, d, e, f, g, h, i) i
 1202.91 -#
 1202.92 -# define BOOST_PP_TUPLE_ELEM_10_0(a, b, c, d, e, f, g, h, i, j) a
 1202.93 -# define BOOST_PP_TUPLE_ELEM_10_1(a, b, c, d, e, f, g, h, i, j) b
 1202.94 -# define BOOST_PP_TUPLE_ELEM_10_2(a, b, c, d, e, f, g, h, i, j) c
 1202.95 -# define BOOST_PP_TUPLE_ELEM_10_3(a, b, c, d, e, f, g, h, i, j) d
 1202.96 -# define BOOST_PP_TUPLE_ELEM_10_4(a, b, c, d, e, f, g, h, i, j) e
 1202.97 -# define BOOST_PP_TUPLE_ELEM_10_5(a, b, c, d, e, f, g, h, i, j) f
 1202.98 -# define BOOST_PP_TUPLE_ELEM_10_6(a, b, c, d, e, f, g, h, i, j) g
 1202.99 -# define BOOST_PP_TUPLE_ELEM_10_7(a, b, c, d, e, f, g, h, i, j) h
1202.100 -# define BOOST_PP_TUPLE_ELEM_10_8(a, b, c, d, e, f, g, h, i, j) i
1202.101 -# define BOOST_PP_TUPLE_ELEM_10_9(a, b, c, d, e, f, g, h, i, j) j
1202.102 -#
1202.103 -# define BOOST_PP_TUPLE_ELEM_11_0(a, b, c, d, e, f, g, h, i, j, k) a
1202.104 -# define BOOST_PP_TUPLE_ELEM_11_1(a, b, c, d, e, f, g, h, i, j, k) b
1202.105 -# define BOOST_PP_TUPLE_ELEM_11_2(a, b, c, d, e, f, g, h, i, j, k) c
1202.106 -# define BOOST_PP_TUPLE_ELEM_11_3(a, b, c, d, e, f, g, h, i, j, k) d
1202.107 -# define BOOST_PP_TUPLE_ELEM_11_4(a, b, c, d, e, f, g, h, i, j, k) e
1202.108 -# define BOOST_PP_TUPLE_ELEM_11_5(a, b, c, d, e, f, g, h, i, j, k) f
1202.109 -# define BOOST_PP_TUPLE_ELEM_11_6(a, b, c, d, e, f, g, h, i, j, k) g
1202.110 -# define BOOST_PP_TUPLE_ELEM_11_7(a, b, c, d, e, f, g, h, i, j, k) h
1202.111 -# define BOOST_PP_TUPLE_ELEM_11_8(a, b, c, d, e, f, g, h, i, j, k) i
1202.112 -# define BOOST_PP_TUPLE_ELEM_11_9(a, b, c, d, e, f, g, h, i, j, k) j
1202.113 -# define BOOST_PP_TUPLE_ELEM_11_10(a, b, c, d, e, f, g, h, i, j, k) k
1202.114 -#
1202.115 -# define BOOST_PP_TUPLE_ELEM_12_0(a, b, c, d, e, f, g, h, i, j, k, l) a
1202.116 -# define BOOST_PP_TUPLE_ELEM_12_1(a, b, c, d, e, f, g, h, i, j, k, l) b
1202.117 -# define BOOST_PP_TUPLE_ELEM_12_2(a, b, c, d, e, f, g, h, i, j, k, l) c
1202.118 -# define BOOST_PP_TUPLE_ELEM_12_3(a, b, c, d, e, f, g, h, i, j, k, l) d
1202.119 -# define BOOST_PP_TUPLE_ELEM_12_4(a, b, c, d, e, f, g, h, i, j, k, l) e
1202.120 -# define BOOST_PP_TUPLE_ELEM_12_5(a, b, c, d, e, f, g, h, i, j, k, l) f
1202.121 -# define BOOST_PP_TUPLE_ELEM_12_6(a, b, c, d, e, f, g, h, i, j, k, l) g
1202.122 -# define BOOST_PP_TUPLE_ELEM_12_7(a, b, c, d, e, f, g, h, i, j, k, l) h
1202.123 -# define BOOST_PP_TUPLE_ELEM_12_8(a, b, c, d, e, f, g, h, i, j, k, l) i
1202.124 -# define BOOST_PP_TUPLE_ELEM_12_9(a, b, c, d, e, f, g, h, i, j, k, l) j
1202.125 -# define BOOST_PP_TUPLE_ELEM_12_10(a, b, c, d, e, f, g, h, i, j, k, l) k
1202.126 -# define BOOST_PP_TUPLE_ELEM_12_11(a, b, c, d, e, f, g, h, i, j, k, l) l
1202.127 -#
1202.128 -# define BOOST_PP_TUPLE_ELEM_13_0(a, b, c, d, e, f, g, h, i, j, k, l, m) a
1202.129 -# define BOOST_PP_TUPLE_ELEM_13_1(a, b, c, d, e, f, g, h, i, j, k, l, m) b
1202.130 -# define BOOST_PP_TUPLE_ELEM_13_2(a, b, c, d, e, f, g, h, i, j, k, l, m) c
1202.131 -# define BOOST_PP_TUPLE_ELEM_13_3(a, b, c, d, e, f, g, h, i, j, k, l, m) d
1202.132 -# define BOOST_PP_TUPLE_ELEM_13_4(a, b, c, d, e, f, g, h, i, j, k, l, m) e
1202.133 -# define BOOST_PP_TUPLE_ELEM_13_5(a, b, c, d, e, f, g, h, i, j, k, l, m) f
1202.134 -# define BOOST_PP_TUPLE_ELEM_13_6(a, b, c, d, e, f, g, h, i, j, k, l, m) g
1202.135 -# define BOOST_PP_TUPLE_ELEM_13_7(a, b, c, d, e, f, g, h, i, j, k, l, m) h
1202.136 -# define BOOST_PP_TUPLE_ELEM_13_8(a, b, c, d, e, f, g, h, i, j, k, l, m) i
1202.137 -# define BOOST_PP_TUPLE_ELEM_13_9(a, b, c, d, e, f, g, h, i, j, k, l, m) j
1202.138 -# define BOOST_PP_TUPLE_ELEM_13_10(a, b, c, d, e, f, g, h, i, j, k, l, m) k
1202.139 -# define BOOST_PP_TUPLE_ELEM_13_11(a, b, c, d, e, f, g, h, i, j, k, l, m) l
1202.140 -# define BOOST_PP_TUPLE_ELEM_13_12(a, b, c, d, e, f, g, h, i, j, k, l, m) m
1202.141 -#
1202.142 -# define BOOST_PP_TUPLE_ELEM_14_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n) a
1202.143 -# define BOOST_PP_TUPLE_ELEM_14_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n) b
1202.144 -# define BOOST_PP_TUPLE_ELEM_14_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n) c
1202.145 -# define BOOST_PP_TUPLE_ELEM_14_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n) d
1202.146 -# define BOOST_PP_TUPLE_ELEM_14_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n) e
1202.147 -# define BOOST_PP_TUPLE_ELEM_14_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n) f
1202.148 -# define BOOST_PP_TUPLE_ELEM_14_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n) g
1202.149 -# define BOOST_PP_TUPLE_ELEM_14_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n) h
1202.150 -# define BOOST_PP_TUPLE_ELEM_14_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n) i
1202.151 -# define BOOST_PP_TUPLE_ELEM_14_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n) j
1202.152 -# define BOOST_PP_TUPLE_ELEM_14_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n) k
1202.153 -# define BOOST_PP_TUPLE_ELEM_14_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n) l
1202.154 -# define BOOST_PP_TUPLE_ELEM_14_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n) m
1202.155 -# define BOOST_PP_TUPLE_ELEM_14_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n) n
1202.156 -#
1202.157 -# define BOOST_PP_TUPLE_ELEM_15_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) a
1202.158 -# define BOOST_PP_TUPLE_ELEM_15_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) b
1202.159 -# define BOOST_PP_TUPLE_ELEM_15_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) c
1202.160 -# define BOOST_PP_TUPLE_ELEM_15_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) d
1202.161 -# define BOOST_PP_TUPLE_ELEM_15_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) e
1202.162 -# define BOOST_PP_TUPLE_ELEM_15_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) f
1202.163 -# define BOOST_PP_TUPLE_ELEM_15_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) g
1202.164 -# define BOOST_PP_TUPLE_ELEM_15_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) h
1202.165 -# define BOOST_PP_TUPLE_ELEM_15_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) i
1202.166 -# define BOOST_PP_TUPLE_ELEM_15_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) j
1202.167 -# define BOOST_PP_TUPLE_ELEM_15_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) k
1202.168 -# define BOOST_PP_TUPLE_ELEM_15_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) l
1202.169 -# define BOOST_PP_TUPLE_ELEM_15_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) m
1202.170 -# define BOOST_PP_TUPLE_ELEM_15_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) n
1202.171 -# define BOOST_PP_TUPLE_ELEM_15_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) o
1202.172 -#
1202.173 -# define BOOST_PP_TUPLE_ELEM_16_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) a
1202.174 -# define BOOST_PP_TUPLE_ELEM_16_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) b
1202.175 -# define BOOST_PP_TUPLE_ELEM_16_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) c
1202.176 -# define BOOST_PP_TUPLE_ELEM_16_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) d
1202.177 -# define BOOST_PP_TUPLE_ELEM_16_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) e
1202.178 -# define BOOST_PP_TUPLE_ELEM_16_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) f
1202.179 -# define BOOST_PP_TUPLE_ELEM_16_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) g
1202.180 -# define BOOST_PP_TUPLE_ELEM_16_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) h
1202.181 -# define BOOST_PP_TUPLE_ELEM_16_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) i
1202.182 -# define BOOST_PP_TUPLE_ELEM_16_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) j
1202.183 -# define BOOST_PP_TUPLE_ELEM_16_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) k
1202.184 -# define BOOST_PP_TUPLE_ELEM_16_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) l
1202.185 -# define BOOST_PP_TUPLE_ELEM_16_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) m
1202.186 -# define BOOST_PP_TUPLE_ELEM_16_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) n
1202.187 -# define BOOST_PP_TUPLE_ELEM_16_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) o
1202.188 -# define BOOST_PP_TUPLE_ELEM_16_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) p
1202.189 -#
1202.190 -# define BOOST_PP_TUPLE_ELEM_17_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) a
1202.191 -# define BOOST_PP_TUPLE_ELEM_17_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) b
1202.192 -# define BOOST_PP_TUPLE_ELEM_17_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) c
1202.193 -# define BOOST_PP_TUPLE_ELEM_17_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) d
1202.194 -# define BOOST_PP_TUPLE_ELEM_17_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) e
1202.195 -# define BOOST_PP_TUPLE_ELEM_17_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) f
1202.196 -# define BOOST_PP_TUPLE_ELEM_17_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) g
1202.197 -# define BOOST_PP_TUPLE_ELEM_17_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) h
1202.198 -# define BOOST_PP_TUPLE_ELEM_17_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) i
1202.199 -# define BOOST_PP_TUPLE_ELEM_17_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) j
1202.200 -# define BOOST_PP_TUPLE_ELEM_17_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) k
1202.201 -# define BOOST_PP_TUPLE_ELEM_17_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) l
1202.202 -# define BOOST_PP_TUPLE_ELEM_17_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) m
1202.203 -# define BOOST_PP_TUPLE_ELEM_17_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) n
1202.204 -# define BOOST_PP_TUPLE_ELEM_17_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) o
1202.205 -# define BOOST_PP_TUPLE_ELEM_17_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) p
1202.206 -# define BOOST_PP_TUPLE_ELEM_17_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) q
1202.207 -#
1202.208 -# define BOOST_PP_TUPLE_ELEM_18_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) a
1202.209 -# define BOOST_PP_TUPLE_ELEM_18_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) b
1202.210 -# define BOOST_PP_TUPLE_ELEM_18_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) c
1202.211 -# define BOOST_PP_TUPLE_ELEM_18_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) d
1202.212 -# define BOOST_PP_TUPLE_ELEM_18_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) e
1202.213 -# define BOOST_PP_TUPLE_ELEM_18_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) f
1202.214 -# define BOOST_PP_TUPLE_ELEM_18_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) g
1202.215 -# define BOOST_PP_TUPLE_ELEM_18_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) h
1202.216 -# define BOOST_PP_TUPLE_ELEM_18_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) i
1202.217 -# define BOOST_PP_TUPLE_ELEM_18_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) j
1202.218 -# define BOOST_PP_TUPLE_ELEM_18_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) k
1202.219 -# define BOOST_PP_TUPLE_ELEM_18_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) l
1202.220 -# define BOOST_PP_TUPLE_ELEM_18_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) m
1202.221 -# define BOOST_PP_TUPLE_ELEM_18_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) n
1202.222 -# define BOOST_PP_TUPLE_ELEM_18_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) o
1202.223 -# define BOOST_PP_TUPLE_ELEM_18_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) p
1202.224 -# define BOOST_PP_TUPLE_ELEM_18_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) q
1202.225 -# define BOOST_PP_TUPLE_ELEM_18_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) r
1202.226 -#
1202.227 -# define BOOST_PP_TUPLE_ELEM_19_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) a
1202.228 -# define BOOST_PP_TUPLE_ELEM_19_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) b
1202.229 -# define BOOST_PP_TUPLE_ELEM_19_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) c
1202.230 -# define BOOST_PP_TUPLE_ELEM_19_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) d
1202.231 -# define BOOST_PP_TUPLE_ELEM_19_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) e
1202.232 -# define BOOST_PP_TUPLE_ELEM_19_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) f
1202.233 -# define BOOST_PP_TUPLE_ELEM_19_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) g
1202.234 -# define BOOST_PP_TUPLE_ELEM_19_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) h
1202.235 -# define BOOST_PP_TUPLE_ELEM_19_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) i
1202.236 -# define BOOST_PP_TUPLE_ELEM_19_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) j
1202.237 -# define BOOST_PP_TUPLE_ELEM_19_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) k
1202.238 -# define BOOST_PP_TUPLE_ELEM_19_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) l
1202.239 -# define BOOST_PP_TUPLE_ELEM_19_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) m
1202.240 -# define BOOST_PP_TUPLE_ELEM_19_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) n
1202.241 -# define BOOST_PP_TUPLE_ELEM_19_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) o
1202.242 -# define BOOST_PP_TUPLE_ELEM_19_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) p
1202.243 -# define BOOST_PP_TUPLE_ELEM_19_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) q
1202.244 -# define BOOST_PP_TUPLE_ELEM_19_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) r
1202.245 -# define BOOST_PP_TUPLE_ELEM_19_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) s
1202.246 -#
1202.247 -# define BOOST_PP_TUPLE_ELEM_20_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) a
1202.248 -# define BOOST_PP_TUPLE_ELEM_20_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) b
1202.249 -# define BOOST_PP_TUPLE_ELEM_20_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) c
1202.250 -# define BOOST_PP_TUPLE_ELEM_20_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) d
1202.251 -# define BOOST_PP_TUPLE_ELEM_20_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) e
1202.252 -# define BOOST_PP_TUPLE_ELEM_20_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) f
1202.253 -# define BOOST_PP_TUPLE_ELEM_20_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) g
1202.254 -# define BOOST_PP_TUPLE_ELEM_20_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) h
1202.255 -# define BOOST_PP_TUPLE_ELEM_20_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) i
1202.256 -# define BOOST_PP_TUPLE_ELEM_20_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) j
1202.257 -# define BOOST_PP_TUPLE_ELEM_20_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) k
1202.258 -# define BOOST_PP_TUPLE_ELEM_20_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) l
1202.259 -# define BOOST_PP_TUPLE_ELEM_20_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) m
1202.260 -# define BOOST_PP_TUPLE_ELEM_20_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) n
1202.261 -# define BOOST_PP_TUPLE_ELEM_20_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) o
1202.262 -# define BOOST_PP_TUPLE_ELEM_20_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) p
1202.263 -# define BOOST_PP_TUPLE_ELEM_20_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) q
1202.264 -# define BOOST_PP_TUPLE_ELEM_20_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) r
1202.265 -# define BOOST_PP_TUPLE_ELEM_20_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) s
1202.266 -# define BOOST_PP_TUPLE_ELEM_20_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) t
1202.267 -#
1202.268 -# define BOOST_PP_TUPLE_ELEM_21_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) a
1202.269 -# define BOOST_PP_TUPLE_ELEM_21_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) b
1202.270 -# define BOOST_PP_TUPLE_ELEM_21_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) c
1202.271 -# define BOOST_PP_TUPLE_ELEM_21_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) d
1202.272 -# define BOOST_PP_TUPLE_ELEM_21_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) e
1202.273 -# define BOOST_PP_TUPLE_ELEM_21_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) f
1202.274 -# define BOOST_PP_TUPLE_ELEM_21_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) g
1202.275 -# define BOOST_PP_TUPLE_ELEM_21_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) h
1202.276 -# define BOOST_PP_TUPLE_ELEM_21_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) i
1202.277 -# define BOOST_PP_TUPLE_ELEM_21_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) j
1202.278 -# define BOOST_PP_TUPLE_ELEM_21_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) k
1202.279 -# define BOOST_PP_TUPLE_ELEM_21_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) l
1202.280 -# define BOOST_PP_TUPLE_ELEM_21_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) m
1202.281 -# define BOOST_PP_TUPLE_ELEM_21_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) n
1202.282 -# define BOOST_PP_TUPLE_ELEM_21_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) o
1202.283 -# define BOOST_PP_TUPLE_ELEM_21_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) p
1202.284 -# define BOOST_PP_TUPLE_ELEM_21_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) q
1202.285 -# define BOOST_PP_TUPLE_ELEM_21_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) r
1202.286 -# define BOOST_PP_TUPLE_ELEM_21_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) s
1202.287 -# define BOOST_PP_TUPLE_ELEM_21_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) t
1202.288 -# define BOOST_PP_TUPLE_ELEM_21_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) u
1202.289 -#
1202.290 -# define BOOST_PP_TUPLE_ELEM_22_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) a
1202.291 -# define BOOST_PP_TUPLE_ELEM_22_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) b
1202.292 -# define BOOST_PP_TUPLE_ELEM_22_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) c
1202.293 -# define BOOST_PP_TUPLE_ELEM_22_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) d
1202.294 -# define BOOST_PP_TUPLE_ELEM_22_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) e
1202.295 -# define BOOST_PP_TUPLE_ELEM_22_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) f
1202.296 -# define BOOST_PP_TUPLE_ELEM_22_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) g
1202.297 -# define BOOST_PP_TUPLE_ELEM_22_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) h
1202.298 -# define BOOST_PP_TUPLE_ELEM_22_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) i
1202.299 -# define BOOST_PP_TUPLE_ELEM_22_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) j
1202.300 -# define BOOST_PP_TUPLE_ELEM_22_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) k
1202.301 -# define BOOST_PP_TUPLE_ELEM_22_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) l
1202.302 -# define BOOST_PP_TUPLE_ELEM_22_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) m
1202.303 -# define BOOST_PP_TUPLE_ELEM_22_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) n
1202.304 -# define BOOST_PP_TUPLE_ELEM_22_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) o
1202.305 -# define BOOST_PP_TUPLE_ELEM_22_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) p
1202.306 -# define BOOST_PP_TUPLE_ELEM_22_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) q
1202.307 -# define BOOST_PP_TUPLE_ELEM_22_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) r
1202.308 -# define BOOST_PP_TUPLE_ELEM_22_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) s
1202.309 -# define BOOST_PP_TUPLE_ELEM_22_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) t
1202.310 -# define BOOST_PP_TUPLE_ELEM_22_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) u
1202.311 -# define BOOST_PP_TUPLE_ELEM_22_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) v
1202.312 -#
1202.313 -# define BOOST_PP_TUPLE_ELEM_23_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) a
1202.314 -# define BOOST_PP_TUPLE_ELEM_23_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) b
1202.315 -# define BOOST_PP_TUPLE_ELEM_23_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) c
1202.316 -# define BOOST_PP_TUPLE_ELEM_23_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) d
1202.317 -# define BOOST_PP_TUPLE_ELEM_23_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) e
1202.318 -# define BOOST_PP_TUPLE_ELEM_23_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) f
1202.319 -# define BOOST_PP_TUPLE_ELEM_23_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) g
1202.320 -# define BOOST_PP_TUPLE_ELEM_23_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) h
1202.321 -# define BOOST_PP_TUPLE_ELEM_23_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) i
1202.322 -# define BOOST_PP_TUPLE_ELEM_23_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) j
1202.323 -# define BOOST_PP_TUPLE_ELEM_23_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) k
1202.324 -# define BOOST_PP_TUPLE_ELEM_23_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) l
1202.325 -# define BOOST_PP_TUPLE_ELEM_23_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) m
1202.326 -# define BOOST_PP_TUPLE_ELEM_23_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) n
1202.327 -# define BOOST_PP_TUPLE_ELEM_23_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) o
1202.328 -# define BOOST_PP_TUPLE_ELEM_23_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) p
1202.329 -# define BOOST_PP_TUPLE_ELEM_23_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) q
1202.330 -# define BOOST_PP_TUPLE_ELEM_23_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) r
1202.331 -# define BOOST_PP_TUPLE_ELEM_23_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) s
1202.332 -# define BOOST_PP_TUPLE_ELEM_23_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) t
1202.333 -# define BOOST_PP_TUPLE_ELEM_23_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) u
1202.334 -# define BOOST_PP_TUPLE_ELEM_23_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) v
1202.335 -# define BOOST_PP_TUPLE_ELEM_23_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) w
1202.336 -#
1202.337 -# define BOOST_PP_TUPLE_ELEM_24_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) a
1202.338 -# define BOOST_PP_TUPLE_ELEM_24_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) b
1202.339 -# define BOOST_PP_TUPLE_ELEM_24_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) c
1202.340 -# define BOOST_PP_TUPLE_ELEM_24_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) d
1202.341 -# define BOOST_PP_TUPLE_ELEM_24_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) e
1202.342 -# define BOOST_PP_TUPLE_ELEM_24_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) f
1202.343 -# define BOOST_PP_TUPLE_ELEM_24_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) g
1202.344 -# define BOOST_PP_TUPLE_ELEM_24_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) h
1202.345 -# define BOOST_PP_TUPLE_ELEM_24_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) i
1202.346 -# define BOOST_PP_TUPLE_ELEM_24_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) j
1202.347 -# define BOOST_PP_TUPLE_ELEM_24_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) k
1202.348 -# define BOOST_PP_TUPLE_ELEM_24_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) l
1202.349 -# define BOOST_PP_TUPLE_ELEM_24_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) m
1202.350 -# define BOOST_PP_TUPLE_ELEM_24_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) n
1202.351 -# define BOOST_PP_TUPLE_ELEM_24_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) o
1202.352 -# define BOOST_PP_TUPLE_ELEM_24_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) p
1202.353 -# define BOOST_PP_TUPLE_ELEM_24_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) q
1202.354 -# define BOOST_PP_TUPLE_ELEM_24_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) r
1202.355 -# define BOOST_PP_TUPLE_ELEM_24_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) s
1202.356 -# define BOOST_PP_TUPLE_ELEM_24_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) t
1202.357 -# define BOOST_PP_TUPLE_ELEM_24_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) u
1202.358 -# define BOOST_PP_TUPLE_ELEM_24_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) v
1202.359 -# define BOOST_PP_TUPLE_ELEM_24_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) w
1202.360 -# define BOOST_PP_TUPLE_ELEM_24_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) x
1202.361 -#
1202.362 -# define BOOST_PP_TUPLE_ELEM_25_0(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) a
1202.363 -# define BOOST_PP_TUPLE_ELEM_25_1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) b
1202.364 -# define BOOST_PP_TUPLE_ELEM_25_2(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) c
1202.365 -# define BOOST_PP_TUPLE_ELEM_25_3(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) d
1202.366 -# define BOOST_PP_TUPLE_ELEM_25_4(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) e
1202.367 -# define BOOST_PP_TUPLE_ELEM_25_5(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) f
1202.368 -# define BOOST_PP_TUPLE_ELEM_25_6(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) g
1202.369 -# define BOOST_PP_TUPLE_ELEM_25_7(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) h
1202.370 -# define BOOST_PP_TUPLE_ELEM_25_8(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) i
1202.371 -# define BOOST_PP_TUPLE_ELEM_25_9(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) j
1202.372 -# define BOOST_PP_TUPLE_ELEM_25_10(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) k
1202.373 -# define BOOST_PP_TUPLE_ELEM_25_11(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) l
1202.374 -# define BOOST_PP_TUPLE_ELEM_25_12(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) m
1202.375 -# define BOOST_PP_TUPLE_ELEM_25_13(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) n
1202.376 -# define BOOST_PP_TUPLE_ELEM_25_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) o
1202.377 -# define BOOST_PP_TUPLE_ELEM_25_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) p
1202.378 -# define BOOST_PP_TUPLE_ELEM_25_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) q
1202.379 -# define BOOST_PP_TUPLE_ELEM_25_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) r
1202.380 -# define BOOST_PP_TUPLE_ELEM_25_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) s
1202.381 -# define BOOST_PP_TUPLE_ELEM_25_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) t
1202.382 -# define BOOST_PP_TUPLE_ELEM_25_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) u
1202.383 -# define BOOST_PP_TUPLE_ELEM_25_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) v
1202.384 -# define BOOST_PP_TUPLE_ELEM_25_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) w
1202.385 -# define BOOST_PP_TUPLE_ELEM_25_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) x
1202.386 -# define BOOST_PP_TUPLE_ELEM_25_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) y
1202.387 -#
1202.388 -# endif
  1203.1 --- a/epoc32/include/stdapis/boost/preprocessor/tuple/reverse.hpp	Tue Mar 16 16:12:26 2010 +0000
  1203.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1203.3 @@ -1,62 +0,0 @@
  1203.4 -# /* Copyright (C) 2001
  1203.5 -#  * Housemarque Oy
  1203.6 -#  * http://www.housemarque.com
  1203.7 -#  *
  1203.8 -#  * Distributed under the Boost Software License, Version 1.0. (See
  1203.9 -#  * accompanying file LICENSE_1_0.txt or copy at
 1203.10 -#  * http://www.boost.org/LICENSE_1_0.txt)
 1203.11 -#  */
 1203.12 -#
 1203.13 -# /* Revised by Paul Mensonides (2002) */
 1203.14 -#
 1203.15 -# /* See http://www.boost.org for most recent version. */
 1203.16 -#
 1203.17 -# ifndef BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
 1203.18 -# define BOOST_PREPROCESSOR_TUPLE_REVERSE_HPP
 1203.19 -#
 1203.20 -# include <boost/preprocessor/config/config.hpp>
 1203.21 -#
 1203.22 -# /* BOOST_PP_TUPLE_REVERSE */
 1203.23 -#
 1203.24 -# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MWCC()
 1203.25 -#    define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_I(size, tuple)
 1203.26 -#    if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_MSVC()
 1203.27 -#        define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s t
 1203.28 -#    else
 1203.29 -#        define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_II(BOOST_PP_TUPLE_REVERSE_ ## s t)
 1203.30 -#        define BOOST_PP_TUPLE_REVERSE_II(res) res
 1203.31 -#    endif
 1203.32 -# else
 1203.33 -#    define BOOST_PP_TUPLE_REVERSE(size, tuple) BOOST_PP_TUPLE_REVERSE_OO((size, tuple))
 1203.34 -#    define BOOST_PP_TUPLE_REVERSE_OO(par) BOOST_PP_TUPLE_REVERSE_I ## par
 1203.35 -#    define BOOST_PP_TUPLE_REVERSE_I(s, t) BOOST_PP_TUPLE_REVERSE_ ## s ## t
 1203.36 -# endif
 1203.37 -#
 1203.38 -# define BOOST_PP_TUPLE_REVERSE_0() ()
 1203.39 -# define BOOST_PP_TUPLE_REVERSE_1(a) (a)
 1203.40 -# define BOOST_PP_TUPLE_REVERSE_2(a, b) (b, a)
 1203.41 -# define BOOST_PP_TUPLE_REVERSE_3(a, b, c) (c, b, a)
 1203.42 -# define BOOST_PP_TUPLE_REVERSE_4(a, b, c, d) (d, c, b, a)
 1203.43 -# define BOOST_PP_TUPLE_REVERSE_5(a, b, c, d, e) (e, d, c, b, a)
 1203.44 -# define BOOST_PP_TUPLE_REVERSE_6(a, b, c, d, e, f) (f, e, d, c, b, a)
 1203.45 -# define BOOST_PP_TUPLE_REVERSE_7(a, b, c, d, e, f, g) (g, f, e, d, c, b, a)
 1203.46 -# define BOOST_PP_TUPLE_REVERSE_8(a, b, c, d, e, f, g, h) (h, g, f, e, d, c, b, a)
 1203.47 -# define BOOST_PP_TUPLE_REVERSE_9(a, b, c, d, e, f, g, h, i) (i, h, g, f, e, d, c, b, a)
 1203.48 -# define BOOST_PP_TUPLE_REVERSE_10(a, b, c, d, e, f, g, h, i, j) (j, i, h, g, f, e, d, c, b, a)
 1203.49 -# define BOOST_PP_TUPLE_REVERSE_11(a, b, c, d, e, f, g, h, i, j, k) (k, j, i, h, g, f, e, d, c, b, a)
 1203.50 -# define BOOST_PP_TUPLE_REVERSE_12(a, b, c, d, e, f, g, h, i, j, k, l) (l, k, j, i, h, g, f, e, d, c, b, a)
 1203.51 -# define BOOST_PP_TUPLE_REVERSE_13(a, b, c, d, e, f, g, h, i, j, k, l, m) (m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.52 -# define BOOST_PP_TUPLE_REVERSE_14(a, b, c, d, e, f, g, h, i, j, k, l, m, n) (n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.53 -# define BOOST_PP_TUPLE_REVERSE_15(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) (o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.54 -# define BOOST_PP_TUPLE_REVERSE_16(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) (p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.55 -# define BOOST_PP_TUPLE_REVERSE_17(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q) (q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.56 -# define BOOST_PP_TUPLE_REVERSE_18(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r) (r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.57 -# define BOOST_PP_TUPLE_REVERSE_19(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s) (s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.58 -# define BOOST_PP_TUPLE_REVERSE_20(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t) (t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.59 -# define BOOST_PP_TUPLE_REVERSE_21(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.60 -# define BOOST_PP_TUPLE_REVERSE_22(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v) (v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.61 -# define BOOST_PP_TUPLE_REVERSE_23(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w) (w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.62 -# define BOOST_PP_TUPLE_REVERSE_24(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x) (x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.63 -# define BOOST_PP_TUPLE_REVERSE_25(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y) (y, x, w, v, u, t, s, r, q, p, o, n, m, l, k, j, i, h, g, f, e, d, c, b, a)
 1203.64 -#
 1203.65 -# endif
  1204.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1204.2 +++ b/epoc32/include/stdapis/boost/ptr_container/detail/is_convertible.hpp	Wed Mar 31 12:27:01 2010 +0100
  1204.3 @@ -0,0 +1,416 @@
  1204.4 +
  1204.5 +// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
  1204.6 +// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
  1204.7 +// Copyright 1999, 2000 Jaakko J„rvi (jaakko.jarvi@cs.utu.fi)
  1204.8 +//
  1204.9 +//  Use, modification and distribution are subject to the Boost Software License,
 1204.10 +//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1204.11 +//  http://www.boost.org/LICENSE_1_0.txt).
 1204.12 +//
 1204.13 +//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 1204.14 +
 1204.15 +#ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
 1204.16 +#define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
 1204.17 +
 1204.18 +#include <boost/type_traits/detail/yes_no_type.hpp>
 1204.19 +#include <boost/type_traits/config.hpp>
 1204.20 +#include <boost/type_traits/is_array.hpp>
 1204.21 +#include <boost/type_traits/add_reference.hpp>
 1204.22 +#include <boost/type_traits/ice.hpp>
 1204.23 +#include <boost/type_traits/is_arithmetic.hpp>
 1204.24 +#include <boost/type_traits/is_void.hpp>
 1204.25 +#ifndef BOOST_NO_IS_ABSTRACT
 1204.26 +#include <boost/type_traits/is_abstract.hpp>
 1204.27 +#endif
 1204.28 +
 1204.29 +#if defined(__MWERKS__)
 1204.30 +#include <boost/type_traits/is_function.hpp>
 1204.31 +#include <boost/type_traits/remove_reference.hpp>
 1204.32 +#endif
 1204.33 +
 1204.34 +// should be always the last #include directive
 1204.35 +#include <boost/type_traits/detail/bool_trait_def.hpp>
 1204.36 +
 1204.37 +namespace boost {
 1204.38 +
 1204.39 +// is one type convertable to another?
 1204.40 +//
 1204.41 +// there are multiple versions of the is_convertible
 1204.42 +// template, almost every compiler seems to require its
 1204.43 +// own version.
 1204.44 +//
 1204.45 +// Thanks to Andrei Alexandrescu for the original version of the
 1204.46 +// conversion detection technique!
 1204.47 +//
 1204.48 +
 1204.49 +namespace detail {
 1204.50 +
 1204.51 +// MS specific version:
 1204.52 +
 1204.53 +#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
 1204.54 +
 1204.55 +// This workaround is necessary to handle when From is void
 1204.56 +// which is normally taken care of by the partial specialization
 1204.57 +// of the is_convertible typename.
 1204.58 +using ::boost::type_traits::yes_type;
 1204.59 +using ::boost::type_traits::no_type;
 1204.60 +
 1204.61 +template< typename From >
 1204.62 +struct does_conversion_exist
 1204.63 +{
 1204.64 +    template< typename To > struct result_
 1204.65 +    {
 1204.66 +        static no_type BOOST_TT_DECL _m_check(...);
 1204.67 +        static yes_type BOOST_TT_DECL _m_check(To);
 1204.68 +        static From _m_from;
 1204.69 +        enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
 1204.70 +    };
 1204.71 +};
 1204.72 +
 1204.73 +template<>
 1204.74 +struct does_conversion_exist<void>
 1204.75 +{
 1204.76 +    template< typename To > struct result_
 1204.77 +    {
 1204.78 +        enum { value = ::boost::is_void<To>::value };
 1204.79 +    };
 1204.80 +};
 1204.81 +
 1204.82 +template <typename From, typename To>
 1204.83 +struct is_convertible_basic_impl
 1204.84 +    : does_conversion_exist<From>::template result_<To>
 1204.85 +{
 1204.86 +};
 1204.87 +
 1204.88 +#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560)
 1204.89 +//
 1204.90 +// special version for Borland compilers
 1204.91 +// this version breaks when used for some
 1204.92 +// UDT conversions:
 1204.93 +//
 1204.94 +template <typename From, typename To>
 1204.95 +struct is_convertible_impl
 1204.96 +{
 1204.97 +#pragma option push -w-8074
 1204.98 +    // This workaround for Borland breaks the EDG C++ frontend,
 1204.99 +    // so we only use it for Borland.
1204.100 +    template <typename T> struct checker
1204.101 +    {
1204.102 +        static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
1204.103 +        static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
1204.104 +    };
1204.105 +
1204.106 +    static From _m_from;
1204.107 +    static bool const value = sizeof( checker<To>::_m_check(_m_from) )
1204.108 +        == sizeof(::boost::type_traits::yes_type);
1204.109 +#pragma option pop
1204.110 +};
1204.111 +
1204.112 +#elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
1204.113 +// special version for gcc compiler + recent Borland versions
1204.114 +// note that this does not pass UDT's through (...)
1204.115 +
1204.116 +struct any_conversion
1204.117 +{
1204.118 +    template <typename T> any_conversion(const volatile T&);
1204.119 +    template <typename T> any_conversion(T&);
1204.120 +};
1204.121 +
1204.122 +template <typename T> struct checker
1204.123 +{
1204.124 +    static boost::type_traits::no_type _m_check(any_conversion ...);
1204.125 +    static boost::type_traits::yes_type _m_check(T, int);
1204.126 +};
1204.127 +
1204.128 +template <typename From, typename To>
1204.129 +struct is_convertible_basic_impl
1204.130 +{
1204.131 +    static From _m_from;
1204.132 +    static bool const value = sizeof( detail::checker<To>::_m_check(_m_from, 0) )
1204.133 +        == sizeof(::boost::type_traits::yes_type);
1204.134 +};
1204.135 +
1204.136 +#elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
1204.137 +      || defined(__IBMCPP__) || defined(__HP_aCC)
1204.138 +//
1204.139 +// This is *almost* an ideal world implementation as it doesn't rely
1204.140 +// on undefined behaviour by passing UDT's through (...).
1204.141 +// Unfortunately it doesn't quite pass all the tests for most compilers (sigh...)
1204.142 +// Enable this for your compiler if is_convertible_test.cpp will compile it...
1204.143 +//
1204.144 +// Note we do not enable this for VC7.1, because even though it passes all the
1204.145 +// type_traits tests it is known to cause problems when instantiation occurs
1204.146 +// deep within the instantiation tree :-(
1204.147 +//
1204.148 +struct any_conversion
1204.149 +{
1204.150 +    template <typename T> any_conversion(const volatile T&);
1204.151 +    // we need this constructor to catch references to functions
1204.152 +    // (which can not be cv-qualified):
1204.153 +    template <typename T> any_conversion(T&);
1204.154 +};
1204.155 +
1204.156 +template <typename From, typename To>
1204.157 +struct is_convertible_basic_impl
1204.158 +{
1204.159 +    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
1204.160 +    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
1204.161 +       static From _m_from;
1204.162 +
1204.163 +    BOOST_STATIC_CONSTANT(bool, value =
1204.164 +        sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
1204.165 +        );
1204.166 +};
1204.167 +
1204.168 +#elif defined(__DMC__)
1204.169 +
1204.170 +struct any_conversion
1204.171 +{
1204.172 +    template <typename T> any_conversion(const volatile T&);
1204.173 +    // we need this constructor to catch references to functions
1204.174 +    // (which can not be cv-qualified):
1204.175 +    template <typename T> any_conversion(T&);
1204.176 +};
1204.177 +
1204.178 +template <typename From, typename To>
1204.179 +struct is_convertible_basic_impl
1204.180 +{
1204.181 +    // Using '...' doesn't always work on Digital Mars. This version seems to.
1204.182 +    template <class T>
1204.183 +    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion,  float, T);
1204.184 +    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
1204.185 +    static From _m_from;
1204.186 +
1204.187 +    // Static constants sometime cause the conversion of _m_from to To to be
1204.188 +    // called. This doesn't happen with an enum.
1204.189 +    enum { value =
1204.190 +        sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type)
1204.191 +        };
1204.192 +};
1204.193 +
1204.194 +#elif defined(__MWERKS__)
1204.195 +// 
1204.196 +// CW works with the technique implemented above for EDG, except when From
1204.197 +// is a function type (or a reference to such a type), in which case
1204.198 +// any_conversion won't be accepted as a valid conversion. We detect this
1204.199 +// exceptional situation and channel it through an alternative algorithm.
1204.200 +//
1204.201 +
1204.202 +template <typename From, typename To,bool FromIsFunctionRef>
1204.203 +struct is_convertible_basic_impl_aux;
1204.204 +
1204.205 +struct any_conversion
1204.206 +{
1204.207 +    template <typename T> any_conversion(const volatile T&);
1204.208 +};
1204.209 +
1204.210 +template <typename From, typename To>
1204.211 +struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
1204.212 +{
1204.213 +    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
1204.214 +    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
1204.215 +    static From _m_from;
1204.216 +
1204.217 +    BOOST_STATIC_CONSTANT(bool, value =
1204.218 +        sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
1204.219 +        );
1204.220 +};
1204.221 +
1204.222 +template <typename From, typename To>
1204.223 +struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
1204.224 +{
1204.225 +    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
1204.226 +    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
1204.227 +    static From _m_from;
1204.228 +    BOOST_STATIC_CONSTANT(bool, value =
1204.229 +        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
1204.230 +        );
1204.231 +};
1204.232 +
1204.233 +template <typename From, typename To>
1204.234 +struct is_convertible_basic_impl:
1204.235 +  is_convertible_basic_impl_aux<
1204.236 +    From,To,
1204.237 +    ::boost::is_function<typename ::boost::remove_reference<From>::type>::value
1204.238 +  >
1204.239 +{};
1204.240 +
1204.241 +#else
1204.242 +
1204.243 +//
1204.244 +// This version seems to work pretty well for a wide spectrum of compilers,
1204.245 +// however it does rely on undefined behaviour by passing UDT's through (...).
1204.246 +//
1204.247 +template <typename From, typename To>
1204.248 +struct is_convertible_basic_impl
1204.249 +{
1204.250 +    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
1204.251 +    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
1204.252 +    static From _m_from;
1204.253 +#ifdef BOOST_MSVC
1204.254 +#pragma warning(push)
1204.255 +#pragma warning(disable:4244)
1204.256 +#endif
1204.257 +    BOOST_STATIC_CONSTANT(bool, value =
1204.258 +        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
1204.259 +        );
1204.260 +#ifdef BOOST_MSVC
1204.261 +#pragma warning(pop)
1204.262 +#endif
1204.263 +};
1204.264 +
1204.265 +#endif // is_convertible_impl
1204.266 +
1204.267 +#if defined(__DMC__)
1204.268 +// As before, a static constant sometimes causes errors on Digital Mars.
1204.269 +template <typename From, typename To>
1204.270 +struct is_convertible_impl
1204.271 +{
1204.272 +    typedef typename add_reference<From>::type ref_type;
1204.273 +    enum { value =
1204.274 +        (::boost::type_traits::ice_and<
1204.275 +            ::boost::type_traits::ice_or<
1204.276 +               ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
1204.277 +               ::boost::is_void<To>::value
1204.278 +            >::value,
1204.279 +            ::boost::type_traits::ice_not<
1204.280 +               ::boost::is_array<To>::value
1204.281 +            >::value
1204.282 +        >::value) };
1204.283 +};
1204.284 +#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551
1204.285 +template <typename From, typename To>
1204.286 +struct is_convertible_impl
1204.287 +{
1204.288 +    typedef typename add_reference<From>::type ref_type;
1204.289 +    BOOST_STATIC_CONSTANT(bool, value =
1204.290 +        (::boost::type_traits::ice_and<
1204.291 +            ::boost::type_traits::ice_or<
1204.292 +               ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
1204.293 +               ::boost::is_void<To>::value
1204.294 +            >::value,
1204.295 +            ::boost::type_traits::ice_not<
1204.296 +               ::boost::is_array<To>::value
1204.297 +            >::value
1204.298 +        >::value)
1204.299 +        );
1204.300 +};
1204.301 +#endif
1204.302 +
1204.303 +template <bool trivial1, bool trivial2, bool abstract_target>
1204.304 +struct is_convertible_impl_select
1204.305 +{
1204.306 +   template <class From, class To>
1204.307 +   struct rebind
1204.308 +   {
1204.309 +      typedef is_convertible_impl<From, To> type;
1204.310 +   };
1204.311 +};
1204.312 +
1204.313 +template <>
1204.314 +struct is_convertible_impl_select<true, true, false>
1204.315 +{
1204.316 +   template <class From, class To>
1204.317 +   struct rebind
1204.318 +   {
1204.319 +      typedef true_type type;
1204.320 +   };
1204.321 +};
1204.322 +
1204.323 +template <>
1204.324 +struct is_convertible_impl_select<false, false, true>
1204.325 +{
1204.326 +   template <class From, class To>
1204.327 +   struct rebind
1204.328 +   {
1204.329 +      typedef false_type type;
1204.330 +   };
1204.331 +};
1204.332 +
1204.333 +template <>
1204.334 +struct is_convertible_impl_select<true, false, true>
1204.335 +{
1204.336 +   template <class From, class To>
1204.337 +   struct rebind
1204.338 +   {
1204.339 +      typedef false_type type;
1204.340 +   };
1204.341 +};
1204.342 +
1204.343 +template <typename From, typename To>
1204.344 +struct is_convertible_impl_dispatch_base
1204.345 +{
1204.346 +#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
1204.347 +   typedef is_convertible_impl_select< 
1204.348 +      ::boost::is_arithmetic<From>::value, 
1204.349 +      ::boost::is_arithmetic<To>::value,
1204.350 +#ifndef BOOST_NO_IS_ABSTRACT
1204.351 +      ::boost::is_abstract<To>::value
1204.352 +#else
1204.353 +      false
1204.354 +#endif
1204.355 +   > selector;
1204.356 +#else
1204.357 +   typedef is_convertible_impl_select<false, false, false> selector;
1204.358 +#endif
1204.359 +   typedef typename selector::template rebind<From, To> isc_binder;
1204.360 +   typedef typename isc_binder::type type;
1204.361 +};
1204.362 +
1204.363 +template <typename From, typename To>
1204.364 +struct is_convertible_impl_dispatch 
1204.365 +   : public is_convertible_impl_dispatch_base<From, To>::type
1204.366 +{};
1204.367 +
1204.368 +//
1204.369 +// Now add the full and partial specialisations
1204.370 +// for void types, these are common to all the
1204.371 +// implementation above:
1204.372 +//
1204.373 +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
1204.374 +#   define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
1204.375 +    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2,value) \
1204.376 +    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const,value) \
1204.377 +    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 volatile,value) \
1204.378 +    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const volatile,value) \
1204.379 +    /**/
1204.380 +
1204.381 +#   define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(trait,spec1,spec2,value) \
1204.382 +    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
1204.383 +    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const,spec2,value) \
1204.384 +    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 volatile,spec2,value) \
1204.385 +    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const volatile,spec2,value) \
1204.386 +    /**/
1204.387 +
1204.388 +    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(is_convertible,void,void,true)
1204.389 +
1204.390 +#   undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2
1204.391 +#   undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1
1204.392 +
1204.393 +#else
1204.394 +    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(is_convertible,void,void,true)
1204.395 +#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
1204.396 +
1204.397 +#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1204.398 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
1204.399 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,true)
1204.400 +#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
1204.401 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
1204.402 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
1204.403 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
1204.404 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,true)
1204.405 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,true)
1204.406 +BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,true)
1204.407 +#endif
1204.408 +#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1204.409 +
1204.410 +} // namespace detail
1204.411 +
1204.412 +BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,(::boost::detail::is_convertible_impl_dispatch<From,To>::value))
1204.413 +
1204.414 +} // namespace boost
1204.415 +
1204.416 +#include <boost/type_traits/detail/bool_trait_undef.hpp>
1204.417 +
1204.418 +#endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
1204.419 +
  1205.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1205.2 +++ b/epoc32/include/stdapis/boost/ptr_container/detail/move.hpp	Wed Mar 31 12:27:01 2010 +0100
  1205.3 @@ -0,0 +1,166 @@
  1205.4 +//-----------------------------------------------------------------------------
  1205.5 +// boost variant/detail/move.hpp header file
  1205.6 +// See http://www.boost.org for updates, documentation, and revision history.
  1205.7 +//-----------------------------------------------------------------------------
  1205.8 +//
  1205.9 +//  Copyright (c) 2002-2003 Eric Friedman
 1205.10 +//  Copyright (c) 2002 by Andrei Alexandrescu
 1205.11 +//
 1205.12 +//  Use, modification and distribution are subject to the
 1205.13 +//  Boost Software License, Version 1.0. (See accompanying file
 1205.14 +//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 1205.15 +//
 1205.16 +//  This file derivative of MoJO. Much thanks to Andrei for his initial work.
 1205.17 +//  See <http://www.cuj.com/experts/2102/alexandr.htm> for information on MOJO.
 1205.18 +//  Re-issued here under the Boost Software License, with permission of the original
 1205.19 +//  author (Andrei Alexandrescu).
 1205.20 +
 1205.21 +
 1205.22 +#ifndef BOOST_VARIANT_DETAIL_MOVE_HPP
 1205.23 +#define BOOST_VARIANT_DETAIL_MOVE_HPP
 1205.24 +
 1205.25 +#include <iterator> // for iterator_traits
 1205.26 +#include <new> // for placement new
 1205.27 +
 1205.28 +#include "boost/config.hpp"
 1205.29 +#include "boost/detail/workaround.hpp"
 1205.30 +#include "boost/mpl/if.hpp"
 1205.31 +#include "boost/type_traits/is_base_and_derived.hpp"
 1205.32 +
 1205.33 +namespace boost {
 1205.34 +namespace detail { namespace variant {
 1205.35 +
 1205.36 +//////////////////////////////////////////////////////////////////////////
 1205.37 +// forward declares
 1205.38 +//
 1205.39 +// NOTE: Incomplete until (if?) Boost.Move becomes part of Boost.
 1205.40 +//
 1205.41 +template <typename Deriving> class moveable;
 1205.42 +template <typename T>        class move_source;
 1205.43 +template <typename T>        class move_return;
 1205.44 +
 1205.45 +namespace detail {
 1205.46 +
 1205.47 +// (detail) moveable_tag
 1205.48 +//
 1205.49 +// Concrete type from which moveable<T> derives.
 1205.50 +//
 1205.51 +// TODO: Move into moveable_fwd.hpp and define has_move_constructor.
 1205.52 +//
 1205.53 +template <typename Deriving>
 1205.54 +struct moveable_tag
 1205.55 +{
 1205.56 +};
 1205.57 +
 1205.58 +} // namespace detail
 1205.59 +
 1205.60 +//////////////////////////////////////////////////////////////////////////
 1205.61 +// function template move
 1205.62 +//
 1205.63 +// Takes a T& and returns, if T derives moveable<T>, a move_source<T> for
 1205.64 +// the object; else, returns the T&.
 1205.65 +//
 1205.66 +
 1205.67 +namespace detail {
 1205.68 +
 1205.69 +// (detail) class template move_type
 1205.70 +//
 1205.71 +// Metafunction that, given moveable T, provides move_source<T>, else T&.
 1205.72 +//
 1205.73 +template <typename T>
 1205.74 +struct move_type
 1205.75 +{
 1205.76 +public: // metafunction result
 1205.77 +
 1205.78 +    typedef typename mpl::if_<
 1205.79 +          is_base_and_derived<detail::moveable_tag<T>, T>
 1205.80 +        , move_source<T>
 1205.81 +        , T&
 1205.82 +        >::type type;
 1205.83 +
 1205.84 +};
 1205.85 +
 1205.86 +} // namespace detail
 1205.87 +
 1205.88 +template <typename T>
 1205.89 +inline
 1205.90 +    typename detail::move_type<T>::type
 1205.91 +move(T& source)
 1205.92 +{
 1205.93 +    typedef typename detail::move_type<T>::type
 1205.94 +        move_t;
 1205.95 +
 1205.96 +    return move_t(source);
 1205.97 +}
 1205.98 +
 1205.99 +//////////////////////////////////////////////////////////////////////////
1205.100 +// class template return_t
1205.101 +//
1205.102 +// Metafunction that, given moveable T, provides move_return<T>, else T.
1205.103 +//
1205.104 +template <typename T>
1205.105 +struct return_t
1205.106 +{
1205.107 +public: // metafunction result
1205.108 +
1205.109 +    typedef typename mpl::if_<
1205.110 +          is_base_and_derived<moveable<T>, T>
1205.111 +        , move_return<T>
1205.112 +        , T
1205.113 +        >::type type;
1205.114 +
1205.115 +};
1205.116 +
1205.117 +//////////////////////////////////////////////////////////////////////////
1205.118 +// function template move_swap
1205.119 +//
1205.120 +// Swaps using Koenig lookup but falls back to move-swap for primitive
1205.121 +// types and on non-conforming compilers.
1205.122 +//
1205.123 +
1205.124 +#if   defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)   \
1205.125 + ||   BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(2))
1205.126 +
1205.127 +// [Indicate that move_swap by overload is disabled...]
1205.128 +#define BOOST_NO_MOVE_SWAP_BY_OVERLOAD
1205.129 +
1205.130 +// [...and provide straight swap-by-move implementation:]
1205.131 +template <typename T>
1205.132 +inline void move_swap(T& lhs, T& rhs)
1205.133 +{
1205.134 +    T tmp( boost::detail::variant::move(lhs) );
1205.135 +    lhs = boost::detail::variant::move(rhs);
1205.136 +    rhs = boost::detail::variant::move(tmp);
1205.137 +}
1205.138 +
1205.139 +#else// !workaround
1205.140 +
1205.141 +namespace detail { namespace move_swap {
1205.142 +
1205.143 +template <typename T>
1205.144 +inline void swap(T& lhs, T& rhs)
1205.145 +{
1205.146 +    T tmp( boost::detail::variant::move(lhs) );
1205.147 +    lhs = boost::detail::variant::move(rhs);
1205.148 +    rhs = boost::detail::variant::move(tmp);
1205.149 +}
1205.150 +
1205.151 +}} // namespace detail::move_swap
1205.152 +
1205.153 +template <typename T>
1205.154 +inline void move_swap(T& lhs, T& rhs)
1205.155 +{
1205.156 +    using detail::move_swap::swap;
1205.157 +
1205.158 +    swap(lhs, rhs);
1205.159 +}
1205.160 +
1205.161 +#endif // workaround
1205.162 +
1205.163 +}} // namespace detail::variant
1205.164 +} // namespace boost
1205.165 +
1205.166 +#endif // BOOST_VARIANT_DETAIL_MOVE_HPP
1205.167 +
1205.168 +
1205.169 +
  1206.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1206.2 +++ b/epoc32/include/stdapis/boost/ptr_container/detail/throw_exception.hpp	Wed Mar 31 12:27:01 2010 +0100
  1206.3 @@ -0,0 +1,46 @@
  1206.4 +#ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
  1206.5 +#define BOOST_THROW_EXCEPTION_HPP_INCLUDED
  1206.6 +
  1206.7 +// MS compatible compilers support #pragma once
  1206.8 +
  1206.9 +#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 1206.10 +# pragma once
 1206.11 +#endif
 1206.12 +
 1206.13 +//
 1206.14 +//  boost/throw_exception.hpp
 1206.15 +//
 1206.16 +//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
 1206.17 +//
 1206.18 +// Distributed under the Boost Software License, Version 1.0. (See
 1206.19 +// accompanying file LICENSE_1_0.txt or copy at
 1206.20 +// http://www.boost.org/LICENSE_1_0.txt)
 1206.21 +//
 1206.22 +//  http://www.boost.org/libs/utility/throw_exception.html
 1206.23 +//
 1206.24 +
 1206.25 +#include <boost/config.hpp>
 1206.26 +
 1206.27 +#ifdef BOOST_NO_EXCEPTIONS
 1206.28 +# include <exception>
 1206.29 +#endif
 1206.30 +
 1206.31 +namespace boost
 1206.32 +{
 1206.33 +
 1206.34 +#ifdef BOOST_NO_EXCEPTIONS
 1206.35 +
 1206.36 +void throw_exception(std::exception const & e); // user defined
 1206.37 +
 1206.38 +#else
 1206.39 +
 1206.40 +template<class E> inline void throw_exception(E const & e)
 1206.41 +{
 1206.42 +    throw e;
 1206.43 +}
 1206.44 +
 1206.45 +#endif
 1206.46 +
 1206.47 +} // namespace boost
 1206.48 +
 1206.49 +#endif // #ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
  1207.1 --- a/epoc32/include/stdapis/boost/ptr_container/exception.hpp	Tue Mar 16 16:12:26 2010 +0000
  1207.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1207.3 @@ -1,58 +0,0 @@
  1207.4 -//
  1207.5 -// Boost.Pointer Container
  1207.6 -//
  1207.7 -//  Copyright Thorsten Ottosen 2003-2005. Use, modification and
  1207.8 -//  distribution is subject to the Boost Software License, Version
  1207.9 -//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1207.10 -//  http://www.boost.org/LICENSE_1_0.txt)
 1207.11 -//
 1207.12 -// For more information, see http://www.boost.org/libs/ptr_container/
 1207.13 -//
 1207.14 -
 1207.15 -#ifndef BOOST_PTR_CONTAINER_EXCEPTION_HPP
 1207.16 -#define BOOST_PTR_CONTAINER_EXCEPTION_HPP
 1207.17 -
 1207.18 -#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1207.19 -# pragma once
 1207.20 -#endif
 1207.21 -
 1207.22 -#include <exception>
 1207.23 -
 1207.24 -namespace boost
 1207.25 -{
 1207.26 -    class bad_ptr_container_operation : public std::exception
 1207.27 -    {
 1207.28 -        const char* what_;
 1207.29 -    public:
 1207.30 -        bad_ptr_container_operation( const char* what ) : what_( what )
 1207.31 -        { }
 1207.32 -        
 1207.33 -        virtual const char* what() const throw()
 1207.34 -        {
 1207.35 -            return what_;
 1207.36 -        }
 1207.37 -    };
 1207.38 -
 1207.39 -
 1207.40 -    
 1207.41 -    class bad_index : public bad_ptr_container_operation
 1207.42 -    {
 1207.43 -    public:
 1207.44 -        bad_index( const char* what ) : bad_ptr_container_operation( what )
 1207.45 -        { }
 1207.46 -    };
 1207.47 -
 1207.48 -
 1207.49 -
 1207.50 -    class bad_pointer : public bad_ptr_container_operation
 1207.51 -    {
 1207.52 -    public:
 1207.53 -        bad_pointer() : bad_ptr_container_operation( "Null pointer not allowed in a pointer container!" )
 1207.54 -        { }
 1207.55 -        
 1207.56 -        bad_pointer( const char* text ) : bad_ptr_container_operation( text )
 1207.57 -        { }
 1207.58 -    };
 1207.59 -}
 1207.60 -
 1207.61 -#endif
  1208.1 --- a/epoc32/include/stdapis/boost/random.hpp	Tue Mar 16 16:12:26 2010 +0000
  1208.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1208.3 @@ -1,72 +0,0 @@
  1208.4 -/* boost random.hpp header file
  1208.5 - *
  1208.6 - * Copyright Jens Maurer 2000-2001
  1208.7 - * Distributed under the Boost Software License, Version 1.0. (See
  1208.8 - * accompanying file LICENSE_1_0.txt or copy at
  1208.9 - * http://www.boost.org/LICENSE_1_0.txt)
 1208.10 - *
 1208.11 - * See http://www.boost.org/libs/random for documentation.
 1208.12 - *
 1208.13 - * $Id: random.hpp,v 1.18 2004/07/27 03:43:27 dgregor Exp $
 1208.14 - *
 1208.15 - * Revision history
 1208.16 - *  2000-02-18  portability fixes (thanks to Beman Dawes)
 1208.17 - *  2000-02-21  shuffle_output, inversive_congruential_schrage,
 1208.18 - *              generator_iterator, uniform_smallint
 1208.19 - *  2000-02-23  generic modulus arithmetic helper, removed *_schrage classes,
 1208.20 - *              implemented Streamable and EqualityComparable concepts for 
 1208.21 - *              generators, added Bernoulli distribution and Box-Muller
 1208.22 - *              transform
 1208.23 - *  2000-03-01  cauchy, lognormal, triangle distributions; fixed 
 1208.24 - *              uniform_smallint; renamed gaussian to normal distribution
 1208.25 - *  2000-03-05  implemented iterator syntax for distribution functions
 1208.26 - *  2000-04-21  removed some optimizations for better BCC/MSVC compatibility
 1208.27 - *  2000-05-10  adapted to BCC and MSVC
 1208.28 - *  2000-06-13  incorporated review results
 1208.29 - *  2000-07-06  moved basic templates from namespace detail to random
 1208.30 - *  2000-09-23  warning removals and int64 fixes (Ed Brey)
 1208.31 - *  2000-09-24  added lagged_fibonacci generator (Matthias Troyer)
 1208.32 - *  2001-02-18  moved to individual header files
 1208.33 - */
 1208.34 -
 1208.35 -#ifndef BOOST_RANDOM_HPP
 1208.36 -#define BOOST_RANDOM_HPP
 1208.37 -
 1208.38 -// generators
 1208.39 -#include <boost/random/linear_congruential.hpp>
 1208.40 -#include <boost/random/additive_combine.hpp>
 1208.41 -#include <boost/random/inversive_congruential.hpp>
 1208.42 -#include <boost/random/shuffle_output.hpp>
 1208.43 -#include <boost/random/mersenne_twister.hpp>
 1208.44 -#include <boost/random/lagged_fibonacci.hpp>
 1208.45 -#include <boost/random/ranlux.hpp>
 1208.46 -#include <boost/random/linear_feedback_shift.hpp>
 1208.47 -#include <boost/random/xor_combine.hpp>
 1208.48 -
 1208.49 -namespace boost {
 1208.50 -  typedef random::xor_combine<random::xor_combine<random::linear_feedback_shift<uint32_t, 32, 31, 13, 12, 0>, 0,
 1208.51 -    random::linear_feedback_shift<uint32_t, 32, 29, 2, 4, 0>, 0, 0>, 0,
 1208.52 -                      random::linear_feedback_shift<uint32_t, 32, 28, 3, 17, 0>, 0, 0> taus88;
 1208.53 -} // namespace  boost
 1208.54 -
 1208.55 -// misc
 1208.56 -#include <boost/random/random_number_generator.hpp>
 1208.57 -
 1208.58 -// distributions
 1208.59 -#include <boost/random/uniform_smallint.hpp>
 1208.60 -#include <boost/random/uniform_int.hpp>
 1208.61 -#include <boost/random/uniform_01.hpp>
 1208.62 -#include <boost/random/uniform_real.hpp>
 1208.63 -#include <boost/random/triangle_distribution.hpp>
 1208.64 -#include <boost/random/bernoulli_distribution.hpp>
 1208.65 -#include <boost/random/cauchy_distribution.hpp>
 1208.66 -#include <boost/random/exponential_distribution.hpp>
 1208.67 -#include <boost/random/geometric_distribution.hpp>
 1208.68 -#include <boost/random/normal_distribution.hpp>
 1208.69 -#include <boost/random/lognormal_distribution.hpp>
 1208.70 -#include <boost/random/poisson_distribution.hpp>
 1208.71 -#include <boost/random/gamma_distribution.hpp>
 1208.72 -#include <boost/random/binomial_distribution.hpp>
 1208.73 -#include <boost/random/uniform_on_sphere.hpp>
 1208.74 -
 1208.75 -#endif // BOOST_RANDOM_HPP
  1209.1 --- a/epoc32/include/stdapis/boost/range/empty.hpp	Tue Mar 16 16:12:26 2010 +0000
  1209.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1209.3 @@ -1,67 +0,0 @@
  1209.4 -// Boost.Range library
  1209.5 -//
  1209.6 -//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
  1209.7 -//  distribution is subject to the Boost Software License, Version
  1209.8 -//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1209.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1209.10 -//
 1209.11 -// For more information, see http://www.boost.org/libs/range/
 1209.12 -//
 1209.13 -
 1209.14 -#ifndef BOOST_RANGE_EMPTY_HPP
 1209.15 -#define BOOST_RANGE_EMPTY_HPP
 1209.16 -
 1209.17 -#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1209.18 -# pragma once
 1209.19 -#endif
 1209.20 -
 1209.21 -#include <boost/range/config.hpp>
 1209.22 -//#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 1209.23 -//#include <boost/range/detail/empty.hpp>
 1209.24 -//#else
 1209.25 -
 1209.26 -#include <boost/range/begin.hpp>
 1209.27 -#include <boost/range/end.hpp>
 1209.28 -
 1209.29 -namespace boost 
 1209.30 -{ 
 1209.31 -namespace range_detail 
 1209.32 -{
 1209.33 -
 1209.34 -        //////////////////////////////////////////////////////////////////////
 1209.35 -        // primary template
 1209.36 -        //////////////////////////////////////////////////////////////////////
 1209.37 -
 1209.38 -        template< typename C >
 1209.39 -        inline bool empty( const C& c )
 1209.40 -        {
 1209.41 -            return boost::begin( c ) == boost::end( c );
 1209.42 -        }
 1209.43 -
 1209.44 -        //////////////////////////////////////////////////////////////////////
 1209.45 -        // string
 1209.46 -        //////////////////////////////////////////////////////////////////////
 1209.47 -
 1209.48 -        inline bool empty( const char* const& s )
 1209.49 -        {
 1209.50 -            return s == 0 || s[0] == 0;
 1209.51 -        }
 1209.52 -
 1209.53 -        inline bool empty( const wchar_t* const& s )
 1209.54 -        {
 1209.55 -            return s == 0 || s[0] == 0;
 1209.56 -        }
 1209.57 -        
 1209.58 -} // namespace 'range_detail'
 1209.59 -
 1209.60 -template< class T >
 1209.61 -inline bool empty( const T& r )
 1209.62 -{
 1209.63 -    return range_detail::empty( r );
 1209.64 -}
 1209.65 -
 1209.66 -} // namepace 'boost'
 1209.67 -
 1209.68 -//#endif //  BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 1209.69 -
 1209.70 -#endif
  1210.1 --- a/epoc32/include/stdapis/boost/range/iterator.hpp	Tue Mar 16 16:12:26 2010 +0000
  1210.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1210.3 @@ -1,128 +0,0 @@
  1210.4 -// Boost.Range library
  1210.5 -//
  1210.6 -//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
  1210.7 -//  distribution is subject to the Boost Software License, Version
  1210.8 -//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1210.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1210.10 -//
 1210.11 -// For more information, see http://www.boost.org/libs/range/
 1210.12 -//
 1210.13 -
 1210.14 -#ifndef BOOST_RANGE_ITERATOR_HPP
 1210.15 -#define BOOST_RANGE_ITERATOR_HPP
 1210.16 -
 1210.17 -#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1210.18 -# pragma once
 1210.19 -#endif
 1210.20 -
 1210.21 -#include <boost/range/config.hpp>
 1210.22 -
 1210.23 -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1210.24 -#include <boost/range/detail/iterator.hpp>
 1210.25 -#else
 1210.26 -
 1210.27 -#include <boost/iterator/iterator_traits.hpp>
 1210.28 -#include <cstddef>
 1210.29 -#include <utility>
 1210.30 -
 1210.31 -namespace boost
 1210.32 -{
 1210.33 -    //////////////////////////////////////////////////////////////////////////
 1210.34 -    // default
 1210.35 -    //////////////////////////////////////////////////////////////////////////
 1210.36 -    
 1210.37 -    template< typename C >
 1210.38 -    struct range_iterator
 1210.39 -    {
 1210.40 -        typedef BOOST_DEDUCED_TYPENAME C::iterator type;
 1210.41 -    };
 1210.42 -    
 1210.43 -    //////////////////////////////////////////////////////////////////////////
 1210.44 -    // pair
 1210.45 -    //////////////////////////////////////////////////////////////////////////
 1210.46 -
 1210.47 -    template< typename Iterator >
 1210.48 -    struct range_iterator< std::pair<Iterator,Iterator> >
 1210.49 -    {
 1210.50 -        typedef Iterator type;
 1210.51 -    };
 1210.52 -    
 1210.53 -    template< typename Iterator >
 1210.54 -    struct range_iterator< const std::pair<Iterator,Iterator> >
 1210.55 -    {
 1210.56 -        typedef Iterator type;
 1210.57 -    };
 1210.58 -
 1210.59 -    //////////////////////////////////////////////////////////////////////////
 1210.60 -    // array
 1210.61 -    //////////////////////////////////////////////////////////////////////////
 1210.62 -
 1210.63 -    template< typename T, std::size_t sz >
 1210.64 -    struct range_iterator< T[sz] >
 1210.65 -    {
 1210.66 -        typedef T* type;
 1210.67 -    };
 1210.68 -
 1210.69 -    template< typename T, std::size_t sz >
 1210.70 -    struct range_iterator< const T[sz] >
 1210.71 -    {
 1210.72 -        typedef const T* type;
 1210.73 -    };
 1210.74 -
 1210.75 -    //////////////////////////////////////////////////////////////////////////
 1210.76 -    // string
 1210.77 -    //////////////////////////////////////////////////////////////////////////
 1210.78 -
 1210.79 -    template<>
 1210.80 -    struct range_iterator< char* >
 1210.81 -    {
 1210.82 -        typedef char* type;
 1210.83 -    };
 1210.84 -
 1210.85 -    template<>
 1210.86 -    struct range_iterator< wchar_t* >
 1210.87 -    {
 1210.88 -        typedef wchar_t* type;
 1210.89 -    };
 1210.90 -
 1210.91 -    template<>
 1210.92 -    struct range_iterator< const char* >
 1210.93 -    {
 1210.94 -        typedef const char* type;
 1210.95 -    };
 1210.96 -
 1210.97 -    template<>
 1210.98 -    struct range_iterator< const wchar_t* >
 1210.99 -    {
1210.100 -        typedef const wchar_t* type;
1210.101 -    };
1210.102 -
1210.103 -    template<>
1210.104 -    struct range_iterator< char* const >
1210.105 -    {
1210.106 -        typedef char* type;
1210.107 -    };
1210.108 -
1210.109 -    template<>
1210.110 -    struct range_iterator< wchar_t* const >
1210.111 -    {
1210.112 -        typedef wchar_t* type;
1210.113 -    };
1210.114 -
1210.115 -    template<>
1210.116 -    struct range_iterator< const char* const >
1210.117 -    {
1210.118 -        typedef const char* type;
1210.119 -    };
1210.120 -
1210.121 -    template<>
1210.122 -    struct range_iterator< const wchar_t* const >
1210.123 -    {
1210.124 -        typedef const wchar_t* type;
1210.125 -    };
1210.126 -
1210.127 -} // namespace boost
1210.128 -
1210.129 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1210.130 -
1210.131 -#endif
  1211.1 --- a/epoc32/include/stdapis/boost/range/iterator_range.hpp	Tue Mar 16 16:12:26 2010 +0000
  1211.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1211.3 @@ -1,608 +0,0 @@
  1211.4 -// Boost.Range library
  1211.5 -//
  1211.6 -//  Copyright Thorsten Ottosen & Pavol Droba 2003-2004. Use, modification and
  1211.7 -//  distribution is subject to the Boost Software License, Version
  1211.8 -//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1211.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1211.10 -//
 1211.11 -// For more information, see http://www.boost.org/libs/range/
 1211.12 -//
 1211.13 -
 1211.14 -#ifndef BOOST_RANGE_ITERATOR_RANGE_HPP
 1211.15 -#define BOOST_RANGE_ITERATOR_RANGE_HPP
 1211.16 -
 1211.17 -// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
 1211.18 -#include <boost/config.hpp> // Define __STL_CONFIG_H, if appropriate.
 1211.19 -#ifndef BOOST_OLD_IOSTREAMS 
 1211.20 -# if defined(__STL_CONFIG_H) && \
 1211.21 -    !defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \
 1211.22 -    /**/
 1211.23 -#  define BOOST_OLD_IOSTREAMS
 1211.24 -# endif
 1211.25 -#endif // #ifndef BOOST_OLD_IOSTREAMS
 1211.26 -
 1211.27 -#include <boost/detail/workaround.hpp>
 1211.28 -#include <boost/range/functions.hpp>
 1211.29 -#include <boost/range/result_iterator.hpp>
 1211.30 -#include <boost/range/difference_type.hpp>
 1211.31 -#include <boost/iterator/iterator_traits.hpp>    
 1211.32 -#include <boost/assert.hpp>
 1211.33 -#include <iterator>
 1211.34 -#include <algorithm>
 1211.35 -#ifndef BOOST_OLD_IOSTREAMS
 1211.36 -# include <ostream>
 1211.37 -#else
 1211.38 -# include <ostream.h>
 1211.39 -#endif
 1211.40 -#include <cstddef>
 1211.41 -
 1211.42 -
 1211.43 -/*! \file
 1211.44 -    Defines the \c iterator_class and related functions. 
 1211.45 -    \c iterator_range is a simple wrapper of iterator pair idiom. It provides
 1211.46 -    a rich subset of Container interface.
 1211.47 -*/
 1211.48 -
 1211.49 -
 1211.50 -namespace boost 
 1211.51 -{
 1211.52 -    namespace iterator_range_detail
 1211.53 -    {
 1211.54 -        //
 1211.55 -        // The functions adl_begin and adl_end are implemented in a separate
 1211.56 -        // class for gcc-2.9x
 1211.57 -        //
 1211.58 -        template<typename IteratorT>
 1211.59 -        struct iterator_range_impl {
 1211.60 -            template< class ForwardRange >
 1211.61 -            static IteratorT adl_begin( ForwardRange& r )
 1211.62 -            {
 1211.63 -                return IteratorT( boost::begin( r ) );
 1211.64 -            }
 1211.65 -            
 1211.66 -            template< class ForwardRange >
 1211.67 -            static IteratorT adl_end( ForwardRange& r )
 1211.68 -            {
 1211.69 -                return IteratorT( boost::end( r ) );
 1211.70 -            }
 1211.71 -        };
 1211.72 - 
 1211.73 -        template< class Left, class Right >
 1211.74 -        inline bool equal( const Left& l, const Right& r )
 1211.75 -        {
 1211.76 -            typedef BOOST_DEDUCED_TYPENAME boost::range_size<Left>::type sz_type;
 1211.77 -
 1211.78 -            sz_type l_size = boost::size( l ),
 1211.79 -                    r_size = boost::size( r );
 1211.80 -
 1211.81 -            if( l_size != r_size )
 1211.82 -                return false;
 1211.83 -
 1211.84 -            return std::equal( boost::begin(l), boost::end(l), 
 1211.85 -                               boost::begin(r) );                
 1211.86 -        }
 1211.87 -
 1211.88 -        template< class Left, class Right >
 1211.89 -        inline bool less_than( const Left& l, const Right& r )
 1211.90 -        {                
 1211.91 -            return std::lexicographical_compare( boost::begin(l), 
 1211.92 -                                                 boost::end(l), 
 1211.93 -                                                 boost::begin(r), 
 1211.94 -                                                 boost::end(r) );                
 1211.95 -        }
 1211.96 -           
 1211.97 -        struct range_tag { };
 1211.98 -        struct const_range_tag { };
 1211.99 -
1211.100 -    }
1211.101 -
1211.102 -//  iterator range template class -----------------------------------------//
1211.103 -
1211.104 -        //! iterator_range class
1211.105 -        /*!
1211.106 -            An \c iterator_range delimits a range in a sequence by beginning and ending iterators. 
1211.107 -            An iterator_range can be passed to an algorithm which requires a sequence as an input. 
1211.108 -            For example, the \c toupper() function may be used most frequently on strings, 
1211.109 -            but can also be used on iterator_ranges: 
1211.110 -            
1211.111 -            \code
1211.112 -                boost::tolower( find( s, "UPPERCASE STRING" ) );
1211.113 -            \endcode
1211.114 -
1211.115 -            Many algorithms working with sequences take a pair of iterators, 
1211.116 -            delimiting a working range, as an arguments. The \c iterator_range class is an 
1211.117 -            encapsulation of a range identified by a pair of iterators. 
1211.118 -            It provides a collection interface, 
1211.119 -            so it is possible to pass an instance to an algorithm requiring a collection as an input. 
1211.120 -        */
1211.121 -        template<typename IteratorT> 
1211.122 -        class iterator_range
1211.123 -        {
1211.124 -        protected: // Used by sub_range
1211.125 -            //! implementation class
1211.126 -            typedef iterator_range_detail::iterator_range_impl<IteratorT> impl;
1211.127 -        public:
1211.128 -
1211.129 -            //! this type
1211.130 -            typedef iterator_range<IteratorT> type;
1211.131 -            //BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(value_type);
1211.132 -        
1211.133 -            //! Encapsulated value type
1211.134 -            typedef BOOST_DEDUCED_TYPENAME 
1211.135 -                iterator_value<IteratorT>::type value_type;
1211.136 -
1211.137 -            //! Difference type
1211.138 -            typedef BOOST_DEDUCED_TYPENAME 
1211.139 -                iterator_difference<IteratorT>::type difference_type;
1211.140 -            
1211.141 -            //! Size type
1211.142 -            typedef std::size_t size_type; // note: must be unsigned
1211.143 -
1211.144 -            //! This type
1211.145 -            typedef iterator_range<IteratorT> this_type;
1211.146 -
1211.147 -            //! Refence type
1211.148 -            //
1211.149 -            // Needed because value-type is the same for 
1211.150 -            // const and non-const iterators
1211.151 -            //
1211.152 -            typedef BOOST_DEDUCED_TYPENAME
1211.153 -                iterator_reference<IteratorT>::type reference;
1211.154 -            
1211.155 -            //! const_iterator type
1211.156 -            /*! 
1211.157 -                There is no distinction between const_iterator and iterator.
1211.158 -                These typedefs are provides to fulfill container interface
1211.159 -            */ 
1211.160 -            typedef IteratorT const_iterator;
1211.161 -            //! iterator type
1211.162 -            typedef IteratorT iterator;
1211.163 -
1211.164 -            iterator_range() : m_Begin( iterator() ), m_End( iterator() ), 
1211.165 -                               singular( true )
1211.166 -            { }
1211.167 -/*
1211.168 -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))  
1211.169 -            iterator_range( this_type r ) :
1211.170 -            : m_Begin(r.begin()), m_End(r.end())
1211.171 -            { }
1211.172 -
1211.173 -            this_type& operator=( this_type r )
1211.174 -            {
1211.175 -                m_Begin = r.begin();
1211.176 -                m_End   = r.end();
1211.177 -                return *this;
1211.178 -            }
1211.179 -#endif
1211.180 -*/            
1211.181 -            //! Constructor from a pair of iterators
1211.182 -            template< class Iterator >
1211.183 -            iterator_range( Iterator Begin, Iterator End ) : 
1211.184 -                m_Begin(Begin), m_End(End), singular(false) {}
1211.185 -
1211.186 -            //! Constructor from a Range
1211.187 -            template< class Range >
1211.188 -            iterator_range( const Range& r ) : 
1211.189 -                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1211.190 -                singular(false) {}
1211.191 -
1211.192 -            //! Constructor from a Range
1211.193 -            template< class Range >
1211.194 -            iterator_range( Range& r ) : 
1211.195 -                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1211.196 -                singular(false) {}
1211.197 -
1211.198 -            //! Constructor from a Range
1211.199 -            template< class Range >
1211.200 -            iterator_range( const Range& r, iterator_range_detail::const_range_tag ) : 
1211.201 -                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1211.202 -                singular(false) {}
1211.203 -
1211.204 -            //! Constructor from a Range
1211.205 -            template< class Range >
1211.206 -            iterator_range( Range& r, iterator_range_detail::range_tag ) : 
1211.207 -                m_Begin( impl::adl_begin( r ) ), m_End( impl::adl_end( r ) ), 
1211.208 -                singular(false) {}
1211.209 -
1211.210 -            #if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1211.211 -            this_type& operator=( const this_type& r )    
1211.212 -            {
1211.213 -                m_Begin  = r.begin(); 
1211.214 -                m_End    = r.end();
1211.215 -                //
1211.216 -                // remark: this need not necessarily be true, but it does no harm
1211.217 -                //
1211.218 -                singular = r.singular;
1211.219 -                return *this;
1211.220 -            }
1211.221 -            #endif
1211.222 -                
1211.223 -            template< class Iterator >
1211.224 -            iterator_range& operator=( const iterator_range<Iterator>& r )    
1211.225 -            {
1211.226 -                m_Begin  = r.begin(); 
1211.227 -                m_End    = r.end();
1211.228 -                //
1211.229 -                // remark: this need not necessarily be true, but it does no harm
1211.230 -                //
1211.231 -                singular = r.empty();
1211.232 -                return *this;
1211.233 -            }
1211.234 -                                      
1211.235 -            template< class ForwardRange >
1211.236 -            iterator_range& operator=( ForwardRange& r )
1211.237 -            {
1211.238 -                m_Begin  = impl::adl_begin( r ); 
1211.239 -                m_End    = impl::adl_end( r );
1211.240 -                singular = false;
1211.241 -                return *this;
1211.242 -            }
1211.243 -
1211.244 -            template< class ForwardRange >
1211.245 -            iterator_range& operator=( const ForwardRange& r )
1211.246 -            {
1211.247 -                m_Begin  = impl::adl_begin( r ); 
1211.248 -                m_End    = impl::adl_end( r );
1211.249 -                singular = false;
1211.250 -                return *this;
1211.251 -            }
1211.252 -
1211.253 -            IteratorT begin() const 
1211.254 -            { 
1211.255 -                return m_Begin; 
1211.256 -            }
1211.257 -
1211.258 -            IteratorT end() const 
1211.259 -            { 
1211.260 -                return m_End; 
1211.261 -            } 
1211.262 -
1211.263 -            size_type size() const
1211.264 -            { 
1211.265 -                if( singular )
1211.266 -                    return 0;
1211.267 -
1211.268 -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
1211.269 -                return std::distance<IteratorT>( m_Begin, m_End );
1211.270 -#else                
1211.271 -                return std::distance( m_Begin, m_End );
1211.272 -#endif                
1211.273 -            }
1211.274 -            
1211.275 -            bool empty() const
1211.276 -            {
1211.277 -                if( singular )
1211.278 -                    return true;
1211.279 -                
1211.280 -                return m_Begin == m_End;
1211.281 -            }
1211.282 -
1211.283 -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))  
1211.284 -            operator bool() const
1211.285 -            {
1211.286 -                return !empty();
1211.287 -            }                                    
1211.288 -#else            
1211.289 -            typedef iterator (iterator_range::*unspecified_bool_type) () const;
1211.290 -            operator unspecified_bool_type() const
1211.291 -            {
1211.292 -                return empty() ? 0: &iterator_range::end;
1211.293 -            }
1211.294 -#endif
1211.295 -
1211.296 -            bool equal( const iterator_range& r ) const
1211.297 -            {
1211.298 -                return singular == r.singular && m_Begin == r.m_Begin && m_End == r.m_End;
1211.299 -            }
1211.300 -
1211.301 -
1211.302 -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.303 -
1211.304 -            bool operator==( const iterator_range& r ) const
1211.305 -            {
1211.306 -                return iterator_range_detail::equal( *this, r );
1211.307 -            }
1211.308 -
1211.309 -            bool operator!=( const iterator_range& r ) const
1211.310 -            {
1211.311 -                return !operator==(r);
1211.312 -            }
1211.313 -
1211.314 -           bool operator<( const iterator_range& r ) const
1211.315 -           {
1211.316 -                return iterator_range_detail::less_than( *this, r );
1211.317 -           }
1211.318 -
1211.319 -#endif            
1211.320 -
1211.321 -        public: // convenience
1211.322 -           reference front() const
1211.323 -           {
1211.324 -               BOOST_ASSERT( !empty() );
1211.325 -               return *m_Begin;
1211.326 -           }
1211.327 -    
1211.328 -           reference back() const
1211.329 -           {
1211.330 -               BOOST_ASSERT( !empty() );
1211.331 -               IteratorT last( m_End );
1211.332 -               return *--last;
1211.333 -           }
1211.334 -    
1211.335 -           reference operator[]( size_type sz ) const
1211.336 -           {
1211.337 -               //BOOST_STATIC_ASSERT( is_random_access );
1211.338 -               BOOST_ASSERT( sz < size() );
1211.339 -               return m_Begin[sz];
1211.340 -           }
1211.341 -
1211.342 -           iterator_range& advance_begin( difference_type n )
1211.343 -           {
1211.344 -               std::advance( m_Begin, n );
1211.345 -               return *this;
1211.346 -           }
1211.347 -           
1211.348 -           iterator_range& advance_end( difference_type n )
1211.349 -           {
1211.350 -               std::advance( m_End, n );
1211.351 -               return *this;
1211.352 -           }
1211.353 -           
1211.354 -        private:
1211.355 -            // begin and end iterators
1211.356 -            IteratorT m_Begin;
1211.357 -            IteratorT m_End;
1211.358 -            bool      singular;
1211.359 -        };
1211.360 -
1211.361 -//  iterator range free-standing operators ---------------------------//
1211.362 -
1211.363 -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.364 -#else
1211.365 -        template< class Iterator >
1211.366 -        inline bool empty( const iterator_range<Iterator>& r )
1211.367 -        {
1211.368 -            //
1211.369 -            // this will preserve the well-defined empty() even 
1211.370 -            // though 'r' is singular.
1211.371 -            //
1211.372 -            return r.empty();
1211.373 -        }
1211.374 -#endif
1211.375 -
1211.376 -#ifndef BOOST_OLD_IOSTREAMS   
1211.377 -
1211.378 -        //! iterator_range output operator
1211.379 -        /*!
1211.380 -            Output the range to an ostream. Elements are outputed
1211.381 -            in a sequence without separators.
1211.382 -        */
1211.383 -        template< typename IteratorT, typename Elem, typename Traits >
1211.384 -        inline std::basic_ostream<Elem,Traits>& operator<<( 
1211.385 -                    std::basic_ostream<Elem, Traits>& Os,
1211.386 -                    const iterator_range<IteratorT>& r )
1211.387 -        {
1211.388 -            std::copy( r.begin(), r.end(), 
1211.389 -                       std::ostream_iterator< BOOST_DEDUCED_TYPENAME 
1211.390 -                                            iterator_value<IteratorT>::type, 
1211.391 -                                              Elem, Traits>(Os) );
1211.392 -            return Os;
1211.393 -        }
1211.394 -
1211.395 -#else
1211.396 -
1211.397 -        //! iterator_range output operator
1211.398 -        /*!
1211.399 -            Output the range to an ostream. Elements are outputed
1211.400 -            in a sequence without separators.
1211.401 -        */
1211.402 -        template< typename IteratorT >
1211.403 -        inline std::ostream& operator<<( 
1211.404 -                    std::ostream& Os,
1211.405 -                    const iterator_range<IteratorT>& r )
1211.406 -        {
1211.407 -            std::copy( r.begin(), r.end(), std::ostream_iterator<char>(Os));
1211.408 -            return Os;
1211.409 -        }
1211.410 -
1211.411 -#endif
1211.412 -
1211.413 -        /////////////////////////////////////////////////////////////////////
1211.414 -        // comparison operators
1211.415 -        /////////////////////////////////////////////////////////////////////
1211.416 -
1211.417 -        template< class IteratorT, class ForwardRange >
1211.418 -        inline bool operator==( const ForwardRange& l, 
1211.419 -                                const iterator_range<IteratorT>& r )
1211.420 -        {
1211.421 -            return iterator_range_detail::equal( l, r );
1211.422 -        }
1211.423 -
1211.424 -        template< class IteratorT, class ForwardRange >
1211.425 -        inline bool operator!=( const ForwardRange& l, 
1211.426 -                                const iterator_range<IteratorT>& r )
1211.427 -        {
1211.428 -            return !iterator_range_detail::equal( l, r );
1211.429 -        }
1211.430 -
1211.431 -        template< class IteratorT, class ForwardRange >
1211.432 -        inline bool operator<( const ForwardRange& l, 
1211.433 -                               const iterator_range<IteratorT>& r )
1211.434 -        {
1211.435 -            return iterator_range_detail::less_than( l, r );
1211.436 -        }
1211.437 -
1211.438 -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.439 -#else
1211.440 -        template< class Iterator1T, class Iterator2T >
1211.441 -        inline bool operator==( const iterator_range<Iterator1T>& l, 
1211.442 -                                const iterator_range<Iterator2T>& r )
1211.443 -        {
1211.444 -            return iterator_range_detail::equal( l, r );
1211.445 -        }
1211.446 -
1211.447 -        template< class IteratorT, class ForwardRange >
1211.448 -        inline bool operator==( const iterator_range<IteratorT>& l, 
1211.449 -                                const ForwardRange& r )
1211.450 -        {
1211.451 -            return iterator_range_detail::equal( l, r );
1211.452 -        }
1211.453 -
1211.454 -
1211.455 -        template< class Iterator1T, class Iterator2T >
1211.456 -        inline bool operator!=( const iterator_range<Iterator1T>& l, 
1211.457 -                                const iterator_range<Iterator2T>& r )
1211.458 -        {
1211.459 -            return !iterator_range_detail::equal( l, r );
1211.460 -        }
1211.461 -        
1211.462 -        template< class IteratorT, class ForwardRange >
1211.463 -        inline bool operator!=( const iterator_range<IteratorT>& l, 
1211.464 -                                const ForwardRange& r )
1211.465 -        {
1211.466 -            return !iterator_range_detail::equal( l, r );
1211.467 -        }
1211.468 -
1211.469 -        
1211.470 -        template< class Iterator1T, class Iterator2T >
1211.471 -        inline bool operator<( const iterator_range<Iterator1T>& l, 
1211.472 -                               const iterator_range<Iterator2T>& r )
1211.473 -        {
1211.474 -            return iterator_range_detail::less_than( l, r );
1211.475 -        }
1211.476 -
1211.477 -        template< class IteratorT, class ForwardRange >
1211.478 -        inline bool operator<( const iterator_range<IteratorT>& l, 
1211.479 -                               const ForwardRange& r )
1211.480 -        {            
1211.481 -            return iterator_range_detail::less_than( l, r );
1211.482 -        }
1211.483 -
1211.484 -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.485 -                    
1211.486 -//  iterator range utilities -----------------------------------------//
1211.487 -
1211.488 -        //! iterator_range construct helper 
1211.489 -        /*!
1211.490 -            Construct an \c iterator_range from a pair of iterators
1211.491 -
1211.492 -            \param Begin A begin iterator
1211.493 -            \param End An end iterator
1211.494 -            \return iterator_range object
1211.495 -        */
1211.496 -        template< typename IteratorT >
1211.497 -        inline iterator_range< IteratorT > 
1211.498 -        make_iterator_range( IteratorT Begin, IteratorT End ) 
1211.499 -        {   
1211.500 -            return iterator_range<IteratorT>( Begin, End );
1211.501 -        }
1211.502 -                     
1211.503 -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.504 -
1211.505 -        template< typename Range >
1211.506 -        inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1211.507 -        make_iterator_range( Range& r ) 
1211.508 -        {   
1211.509 -            return iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1211.510 -                ( boost::begin( r ), boost::end( r ) );
1211.511 -        }
1211.512 -        
1211.513 -#else
1211.514 -        //! iterator_range construct helper
1211.515 -        /*!
1211.516 -            Construct an \c iterator_range from a \c Range containing the begin
1211.517 -            and end iterators.
1211.518 -        */
1211.519 -        template< class ForwardRange >
1211.520 -        inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
1211.521 -        make_iterator_range( ForwardRange& r ) 
1211.522 -        {   
1211.523 -           return iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<ForwardRange>::type >
1211.524 -                ( r, iterator_range_detail::range_tag() );
1211.525 -        }
1211.526 -
1211.527 -        template< class ForwardRange >
1211.528 -        inline iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<ForwardRange>::type >
1211.529 -        make_iterator_range( const ForwardRange& r ) 
1211.530 -        {   
1211.531 -           return iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<ForwardRange>::type >
1211.532 -                ( r, iterator_range_detail::const_range_tag() );
1211.533 -        }
1211.534 -
1211.535 -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.536 -
1211.537 -        namespace iterator_range_detail
1211.538 -        {    
1211.539 -            template< class Range >
1211.540 -            inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1211.541 -            make_range_impl( Range& r, 
1211.542 -                             BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1211.543 -                             BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1211.544 -            {
1211.545 -                if( advance_begin == 0 && advance_end == 0 )
1211.546 -                    return make_iterator_range( r );
1211.547 -
1211.548 -                BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type 
1211.549 -                    new_begin = boost::begin( r ),
1211.550 -                    new_end   = boost::end( r );
1211.551 -                std::advance( new_begin, advance_begin );
1211.552 -                std::advance( new_end, advance_end );
1211.553 -                return make_iterator_range( new_begin, new_end );
1211.554 -            }
1211.555 -        }
1211.556 -        
1211.557 -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.558 -
1211.559 -        template< class Range >
1211.560 -        inline iterator_range< BOOST_DEDUCED_TYPENAME range_result_iterator<Range>::type >
1211.561 -        make_iterator_range( Range& r, 
1211.562 -                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1211.563 -                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1211.564 -        {
1211.565 -            //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
1211.566 -            return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
1211.567 -        }
1211.568 -
1211.569 -#else
1211.570 -
1211.571 -        template< class Range >
1211.572 -        inline iterator_range< BOOST_DEDUCED_TYPENAME range_iterator<Range>::type >
1211.573 -        make_iterator_range( Range& r, 
1211.574 -                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1211.575 -                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1211.576 -        {
1211.577 -            //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
1211.578 -            return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
1211.579 -        }
1211.580 -
1211.581 -        template< class Range >
1211.582 -        inline iterator_range< BOOST_DEDUCED_TYPENAME range_const_iterator<Range>::type >
1211.583 -        make_iterator_range( const Range& r, 
1211.584 -                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_begin,
1211.585 -                    BOOST_DEDUCED_TYPENAME range_difference<Range>::type advance_end )
1211.586 -        {
1211.587 -            //BOOST_ASSERT( advance_begin - advance_end <= size(r) && "creating invalid range" );
1211.588 -            return iterator_range_detail::make_range_impl( r, advance_begin, advance_end );
1211.589 -        }
1211.590 -
1211.591 -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1211.592 -
1211.593 -        //! copy a range into a sequence
1211.594 -        /*!
1211.595 -            Construct a new sequence of the specified type from the elements
1211.596 -            in the given range
1211.597 -
1211.598 -            \param Range An input range
1211.599 -            \return New sequence
1211.600 -        */
1211.601 -        template< typename SeqT, typename Range >
1211.602 -        inline SeqT copy_range( const Range& r )
1211.603 -        {
1211.604 -            return SeqT( boost::begin( r ), boost::end( r ) );
1211.605 -        }
1211.606 -
1211.607 -} // namespace 'boost'
1211.608 -
1211.609 -#undef BOOST_OLD_IOSTREAMS
1211.610 -
1211.611 -#endif
  1212.1 --- a/epoc32/include/stdapis/boost/range/reverse_iterator.hpp	Tue Mar 16 16:12:26 2010 +0000
  1212.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1212.3 @@ -1,40 +0,0 @@
  1212.4 -// Boost.Range library
  1212.5 -//
  1212.6 -//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
  1212.7 -//  distribution is subject to the Boost Software License, Version
  1212.8 -//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1212.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1212.10 -//
 1212.11 -// For more information, see http://www.boost.org/libs/range/
 1212.12 -//
 1212.13 -
 1212.14 -#ifndef BOOST_RANGE_REVERSE_ITERATOR_HPP
 1212.15 -#define BOOST_RANGE_REVERSE_ITERATOR_HPP
 1212.16 -
 1212.17 -#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1212.18 -# pragma once
 1212.19 -#endif
 1212.20 -
 1212.21 -#include <boost/range/config.hpp>
 1212.22 -#include <boost/range/iterator.hpp>
 1212.23 -#include <boost/iterator/reverse_iterator.hpp>
 1212.24 -
 1212.25 -
 1212.26 -namespace boost
 1212.27 -{
 1212.28 -    //////////////////////////////////////////////////////////////////////////
 1212.29 -    // default
 1212.30 -    //////////////////////////////////////////////////////////////////////////
 1212.31 -    
 1212.32 -    template< typename C >
 1212.33 -    struct range_reverse_iterator
 1212.34 -    {
 1212.35 -        typedef reverse_iterator< 
 1212.36 -            BOOST_DEDUCED_TYPENAME range_iterator<C>::type > type;
 1212.37 -    };
 1212.38 -    
 1212.39 -
 1212.40 -} // namespace boost
 1212.41 -
 1212.42 -
 1212.43 -#endif
  1213.1 --- a/epoc32/include/stdapis/boost/range/size.hpp	Tue Mar 16 16:12:26 2010 +0000
  1213.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1213.3 @@ -1,123 +0,0 @@
  1213.4 -// Boost.Range library
  1213.5 -//
  1213.6 -//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
  1213.7 -//  distribution is subject to the Boost Software License, Version
  1213.8 -//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1213.9 -//  http://www.boost.org/LICENSE_1_0.txt)
 1213.10 -//
 1213.11 -// For more information, see http://www.boost.org/libs/range/
 1213.12 -//
 1213.13 -
 1213.14 -#ifndef BOOST_RANGE_SIZE_HPP
 1213.15 -#define BOOST_RANGE_SIZE_HPP
 1213.16 -
 1213.17 -#if defined(_MSC_VER) && (_MSC_VER >= 1200)
 1213.18 -# pragma once
 1213.19 -#endif
 1213.20 -
 1213.21 -#include <boost/range/config.hpp>
 1213.22 -
 1213.23 -#ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 1213.24 -#include <boost/range/detail/size.hpp>
 1213.25 -#else
 1213.26 -
 1213.27 -#include <boost/range/detail/implementation_help.hpp>
 1213.28 -#include <boost/range/size_type.hpp>
 1213.29 -#include <cstddef>
 1213.30 -#include <iterator>
 1213.31 -#include <utility>
 1213.32 -
 1213.33 -namespace boost 
 1213.34 -{
 1213.35 -
 1213.36 -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))    
 1213.37 -namespace range_detail 
 1213.38 -{
 1213.39 -#endif
 1213.40 -        //////////////////////////////////////////////////////////////////////
 1213.41 -        // primary template
 1213.42 -        //////////////////////////////////////////////////////////////////////
 1213.43 -        
 1213.44 -        template< typename C >
 1213.45 -        inline BOOST_DEDUCED_TYPENAME C::size_type
 1213.46 -        boost_range_size(  const C& c )
 1213.47 -        {
 1213.48 -            return c.size(); 
 1213.49 -        }
 1213.50 -
 1213.51 -        //////////////////////////////////////////////////////////////////////
 1213.52 -        // pair
 1213.53 -        //////////////////////////////////////////////////////////////////////
 1213.54 -
 1213.55 -        template< typename Iterator >
 1213.56 -        inline std::size_t boost_range_size(  const std::pair<Iterator,Iterator>& p )
 1213.57 -        {
 1213.58 -            return std::distance( p.first, p.second );
 1213.59 -        }
 1213.60 -
 1213.61 -        //////////////////////////////////////////////////////////////////////
 1213.62 -        // array
 1213.63 -        //////////////////////////////////////////////////////////////////////
 1213.64 -
 1213.65 -        template< typename T, std::size_t sz >
 1213.66 -        inline std::size_t boost_range_size(  const T (&array)[sz] )
 1213.67 -        {
 1213.68 -            return range_detail::array_size<T,sz>( array ); 
 1213.69 -        }
 1213.70 -        
 1213.71 -        template< typename T, std::size_t sz >
 1213.72 -        inline std::size_t boost_range_size(  T (&array)[sz] )
 1213.73 -        {
 1213.74 -            return boost::range_detail::array_size<T,sz>( array );
 1213.75 -        }
 1213.76 -        
 1213.77 -        //////////////////////////////////////////////////////////////////////
 1213.78 -        // string
 1213.79 -        //////////////////////////////////////////////////////////////////////
 1213.80 -
 1213.81 -        inline std::size_t boost_range_size(  const char* const& s )
 1213.82 -        {
 1213.83 -            return boost::range_detail::str_size( s );
 1213.84 -        }
 1213.85 -
 1213.86 -        inline std::size_t boost_range_size(  const wchar_t* const& s )
 1213.87 -        {
 1213.88 -            return boost::range_detail::str_size( s );
 1213.89 -        }
 1213.90 -
 1213.91 -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))                
 1213.92 -} // namespace 'range_detail'
 1213.93 -#endif
 1213.94 -
 1213.95 -template< class T >
 1213.96 -inline BOOST_DEDUCED_TYPENAME range_size<T>::type size(  const T& r )
 1213.97 -{
 1213.98 -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))        
 1213.99 -    using namespace range_detail;
1213.100 -#endif    
1213.101 -    return boost_range_size( r );
1213.102 -}
1213.103 -
1213.104 -
1213.105 -#if BOOST_WORKAROUND(__MWERKS__, <= 0x3003 ) || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
1213.106 -// BCB and CW are not able to overload pointer when class overloads are also available.
1213.107 -inline range_size<const char*>::type size(  const char* r ) {
1213.108 -    return range_detail::str_size( r );
1213.109 -}
1213.110 -inline range_size<char*>::type size(  char* r ) {
1213.111 -    return range_detail::str_size( r );
1213.112 -}
1213.113 -inline range_size<const wchar_t*>::type size(  const wchar_t* r ) {
1213.114 -    return range_detail::str_size( r );
1213.115 -}
1213.116 -inline range_size<wchar_t*>::type size(  wchar_t* r ) {
1213.117 -    return range_detail::str_size( r );
1213.118 -}
1213.119 -#endif
1213.120 -
1213.121 -
1213.122 -} // namespace 'boost'
1213.123 -
1213.124 -#endif // BOOST_NO_FUNCTION_TEMPLATE_ORDERING
1213.125 -
1213.126 -#endif
  1214.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1214.2 +++ b/epoc32/include/stdapis/boost/serialization/is_abstract.hpp	Wed Mar 31 12:27:01 2010 +0100
  1214.3 @@ -0,0 +1,137 @@
  1214.4 +#ifndef BOOST_TT_IS_ABSTRACT_CLASS_HPP
  1214.5 +#define BOOST_TT_IS_ABSTRACT_CLASS_HPP
  1214.6 +
  1214.7 +#if defined(_MSC_VER) && (_MSC_VER >= 1020)
  1214.8 +# pragma once
  1214.9 +#endif
 1214.10 +
 1214.11 +/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 1214.12 +// is_abstract_class.hpp:
 1214.13 +//
 1214.14 +//  (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
 1214.15 +//  Use, modification and distribution is subject to the Boost Software
 1214.16 +//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1214.17 +//  http://www.boost.org/LICENSE_1_0.txt)
 1214.18 +//  
 1214.19 +//  See http://www.boost.org for updates, documentation, and revision history.
 1214.20 +//
 1214.21 +
 1214.22 +// Compile type discovery whether given type is abstract class or not.
 1214.23 +//
 1214.24 +//   Requires DR 337 to be supported by compiler
 1214.25 +//   (http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html#337).
 1214.26 +//
 1214.27 +//
 1214.28 +// Believed (Jan 2004) to work on:
 1214.29 +//  - GCC 3.4
 1214.30 +//  - VC++ 7.1
 1214.31 +//  - compilers with new EDG frontend (Intel C++ 7, Comeau 4.3.2)
 1214.32 +//
 1214.33 +// Doesn't work on:
 1214.34 +//  - VC++6, VC++7.0 and less
 1214.35 +//  - GCC 3.3.X and less
 1214.36 +//  - Borland C++ 6 and less
 1214.37 +//      
 1214.38 +//
 1214.39 +// History:
 1214.40 +//  - Originally written by Rani Sharoni, see
 1214.41 +//    http://groups.google.com/groups?selm=df893da6.0207110613.75b2fe90%40posting.google.com
 1214.42 +//    At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
 1214.43 +//  - Adapted and added into Boost.Serialization library by Robert Ramey 
 1214.44 +//    (starting with submission #10).
 1214.45 +//  - Jan 2004: GCC 3.4 fixed to suport DR337 (Giovanni Bajo).
 1214.46 +//  - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
 1214.47 +//  - Nov 2004: Christoph Ludwig found that the implementation did not work with
 1214.48 +//              template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
 1214.49 +//              and John Maddock.
 1214.50 +//  - Dec 2004: Added new config macro BOOST_NO_IS_ABSTRACT which causes the template
 1214.51 +//              to degrade gracefully, rather than trash the compiler (John Maddock).
 1214.52 +//
 1214.53 +
 1214.54 +#include <boost/static_assert.hpp>
 1214.55 +#include <boost/type_traits/detail/yes_no_type.hpp>
 1214.56 +#include <boost/type_traits/is_class.hpp>
 1214.57 +#include <boost/type_traits/detail/ice_and.hpp>
 1214.58 +#ifdef BOOST_NO_IS_ABSTRACT
 1214.59 +#include <boost/type_traits/is_polymorphic.hpp>
 1214.60 +#endif
 1214.61 +// should be the last #include
 1214.62 +#include <boost/type_traits/detail/bool_trait_def.hpp>
 1214.63 +
 1214.64 +
 1214.65 +namespace boost {
 1214.66 +namespace detail{
 1214.67 +
 1214.68 +#ifndef BOOST_NO_IS_ABSTRACT
 1214.69 +template<class T>
 1214.70 +struct is_abstract_imp2
 1214.71 +{
 1214.72 +   // Deduction fails if T is void, function type, 
 1214.73 +   // reference type (14.8.2/2)or an abstract class type 
 1214.74 +   // according to review status issue #337
 1214.75 +   //
 1214.76 +   template<class U>
 1214.77 +   static type_traits::no_type check_sig(U (*)[1]);
 1214.78 +   template<class U>
 1214.79 +   static type_traits::yes_type check_sig(...);
 1214.80 +   //
 1214.81 +   // T must be a complete type, further if T is a template then
 1214.82 +   // it must be instantiated in order for us to get the right answer:
 1214.83 +   //
 1214.84 +   BOOST_STATIC_ASSERT(sizeof(T) != 0);
 1214.85 +
 1214.86 +   // GCC2 won't even parse this template if we embed the computation
 1214.87 +   // of s1 in the computation of value.
 1214.88 +#ifdef __GNUC__
 1214.89 +   BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0)));
 1214.90 +#else
 1214.91 +   BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(check_sig<T>(0)));
 1214.92 +#endif
 1214.93 +    
 1214.94 +   BOOST_STATIC_CONSTANT(bool, value = 
 1214.95 +      (s1 == sizeof(type_traits::yes_type)));
 1214.96 +};
 1214.97 +
 1214.98 +template <bool v>
 1214.99 +struct is_abstract_select
1214.100 +{
1214.101 +   template <class T>
1214.102 +   struct rebind
1214.103 +   {
1214.104 +      typedef is_abstract_imp2<T> type;
1214.105 +   };
1214.106 +};
1214.107 +template <>
1214.108 +struct is_abstract_select<false>
1214.109 +{
1214.110 +   template <class T>
1214.111 +   struct rebind
1214.112 +   {
1214.113 +      typedef false_type type;
1214.114 +   };
1214.115 +};
1214.116 +
1214.117 +template <class T>
1214.118 +struct is_abstract_imp
1214.119 +{
1214.120 +   typedef is_abstract_select< ::boost::is_class<T>::value> selector;
1214.121 +   typedef typename selector::template rebind<T> binder;
1214.122 +   typedef typename binder::type type;
1214.123 +
1214.124 +   BOOST_STATIC_CONSTANT(bool, value = type::value);
1214.125 +};
1214.126 +
1214.127 +#endif
1214.128 +}
1214.129 +
1214.130 +#ifndef BOOST_NO_IS_ABSTRACT
1214.131 +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::boost::detail::is_abstract_imp<T>::value)
1214.132 +#else
1214.133 +BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::boost::detail::is_polymorphic_imp<T>::value)
1214.134 +#endif
1214.135 +
1214.136 +} // namespace boost
1214.137 +
1214.138 +#include <boost/type_traits/detail/bool_trait_undef.hpp>
1214.139 +
1214.140 +#endif //BOOST_TT_IS_ABSTRACT_CLASS_HPP
  1215.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1215.2 +++ b/epoc32/include/stdapis/boost/serialization/version.hpp	Wed Mar 31 12:27:01 2010 +0100
  1215.3 @@ -0,0 +1,35 @@
  1215.4 +//  Boost version.hpp configuration header file  ------------------------------//
  1215.5 +
  1215.6 +//  (C) Copyright John maddock 1999. Distributed under the Boost
  1215.7 +//  Software License, Version 1.0. (See accompanying file
  1215.8 +//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  1215.9 +
 1215.10 +//  See http://www.boost.org/libs/config for documentation
 1215.11 +
 1215.12 +#ifndef BOOST_VERSION_HPP
 1215.13 +#define BOOST_VERSION_HPP
 1215.14 +
 1215.15 +//
 1215.16 +//  Caution, this is the only boost header that is guarenteed
 1215.17 +//  to change with every boost release, including this header
 1215.18 +//  will cause a recompile every time a new boost version is
 1215.19 +//  released.
 1215.20 +//
 1215.21 +//  BOOST_VERSION % 100 is the sub-minor version
 1215.22 +//  BOOST_VERSION / 100 % 1000 is the minor version
 1215.23 +//  BOOST_VERSION / 100000 is the major version
 1215.24 +
 1215.25 +#define BOOST_VERSION 103400
 1215.26 +
 1215.27 +//
 1215.28 +//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
 1215.29 +//  but as a *string* in the form "x_y" where x is the major version
 1215.30 +//  number and y is the minor version number.  This is used by
 1215.31 +//  <config/auto_link.hpp> to select which library version to link to.
 1215.32 +
 1215.33 +#define BOOST_LIB_VERSION "1_34"
 1215.34 +
 1215.35 +#endif
 1215.36 +
 1215.37 +
 1215.38 +
  1216.1 --- a/epoc32/include/stdapis/boost/throw_exception.hpp	Tue Mar 16 16:12:26 2010 +0000
  1216.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1216.3 @@ -1,46 +0,0 @@
  1216.4 -#ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
  1216.5 -#define BOOST_THROW_EXCEPTION_HPP_INCLUDED
  1216.6 -
  1216.7 -// MS compatible compilers support #pragma once
  1216.8 -
  1216.9 -#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 1216.10 -# pragma once
 1216.11 -#endif
 1216.12 -
 1216.13 -//
 1216.14 -//  boost/throw_exception.hpp
 1216.15 -//
 1216.16 -//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
 1216.17 -//
 1216.18 -// Distributed under the Boost Software License, Version 1.0. (See
 1216.19 -// accompanying file LICENSE_1_0.txt or copy at
 1216.20 -// http://www.boost.org/LICENSE_1_0.txt)
 1216.21 -//
 1216.22 -//  http://www.boost.org/libs/utility/throw_exception.html
 1216.23 -//
 1216.24 -
 1216.25 -#include <boost/config.hpp>
 1216.26 -
 1216.27 -#ifdef BOOST_NO_EXCEPTIONS
 1216.28 -# include <exception>
 1216.29 -#endif
 1216.30 -
 1216.31 -namespace boost
 1216.32 -{
 1216.33 -
 1216.34 -#ifdef BOOST_NO_EXCEPTIONS
 1216.35 -
 1216.36 -void throw_exception(std::exception const & e); // user defined
 1216.37 -
 1216.38 -#else
 1216.39 -
 1216.40 -template<class E> inline void throw_exception(E const & e)
 1216.41 -{
 1216.42 -    throw e;
 1216.43 -}
 1216.44 -
 1216.45 -#endif
 1216.46 -
 1216.47 -} // namespace boost
 1216.48 -
 1216.49 -#endif // #ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
  1217.1 --- a/epoc32/include/stdapis/boost/tuple/tuple.hpp	Tue Mar 16 16:12:26 2010 +0000
  1217.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1217.3 @@ -1,90 +0,0 @@
  1217.4 -//  tuple.hpp - Boost Tuple Library --------------------------------------
  1217.5 -
  1217.6 -// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi)
  1217.7 -//
  1217.8 -// Distributed under the Boost Software License, Version 1.0. (See
  1217.9 -// accompanying file LICENSE_1_0.txt or copy at
 1217.10 -// http://www.boost.org/LICENSE_1_0.txt)
 1217.11 -
 1217.12 -// For more information, see http://www.boost.org
 1217.13 -
 1217.14 -// ----------------------------------------------------------------- 
 1217.15 -
 1217.16 -#ifndef BOOST_TUPLE_HPP
 1217.17 -#define BOOST_TUPLE_HPP
 1217.18 -
 1217.19 -#if defined(__sgi) && defined(_COMPILER_VERSION) && _COMPILER_VERSION <= 730
 1217.20 -// Work around a compiler bug.
 1217.21 -// boost::python::tuple has to be seen by the compiler before the
 1217.22 -// boost::tuple class template.
 1217.23 -namespace boost { namespace python { class tuple; }}
 1217.24 -#endif
 1217.25 -
 1217.26 -#include "boost/config.hpp"
 1217.27 -#include "boost/static_assert.hpp"
 1217.28 -
 1217.29 -#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1217.30 -// The MSVC version
 1217.31 -#include "boost/tuple/detail/tuple_basic_no_partial_spec.hpp"
 1217.32 -
 1217.33 -#else
 1217.34 -// other compilers
 1217.35 -#include "boost/ref.hpp"
 1217.36 -#include "boost/tuple/detail/tuple_basic.hpp"
 1217.37 -
 1217.38 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1217.39 -
 1217.40 -namespace boost {    
 1217.41 -
 1217.42 -using tuples::tuple;
 1217.43 -using tuples::make_tuple;
 1217.44 -using tuples::tie;
 1217.45 -#if !defined(BOOST_NO_USING_TEMPLATE)
 1217.46 -using tuples::get;
 1217.47 -#elif !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 1217.48 -//
 1217.49 -// The "using tuples::get" statement causes the
 1217.50 -// Borland compiler to ICE, use forwarding
 1217.51 -// functions instead:
 1217.52 -//
 1217.53 -template<int N, class HT, class TT>
 1217.54 -inline typename tuples::access_traits<
 1217.55 -                  typename tuples::element<N, tuples::cons<HT, TT> >::type
 1217.56 -                >::non_const_type
 1217.57 -get(tuples::cons<HT, TT>& c) {
 1217.58 -  return tuples::get<N,HT,TT>(c);
 1217.59 -} 
 1217.60 -// get function for const cons-lists, returns a const reference to
 1217.61 -// the element. If the element is a reference, returns the reference
 1217.62 -// as such (that is, can return a non-const reference)
 1217.63 -template<int N, class HT, class TT>
 1217.64 -inline typename tuples::access_traits<
 1217.65 -                  typename tuples::element<N, tuples::cons<HT, TT> >::type
 1217.66 -                >::const_type
 1217.67 -get(const tuples::cons<HT, TT>& c) {
 1217.68 -  return tuples::get<N,HT,TT>(c);
 1217.69 -}
 1217.70 -#else  // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1217.71 -//
 1217.72 -// MSVC, using declarations don't mix with templates well,
 1217.73 -// so use forwarding functions instead:
 1217.74 -//
 1217.75 -template<int N, typename Head, typename Tail>
 1217.76 -typename tuples::detail::element_ref<N, tuples::cons<Head, Tail> >::RET
 1217.77 -get(tuples::cons<Head, Tail>& t, tuples::detail::workaround_holder<N>* = 0)
 1217.78 -{
 1217.79 -   return tuples::detail::get_class<N>::get(t);
 1217.80 -}
 1217.81 -
 1217.82 -template<int N, typename Head, typename Tail>
 1217.83 -typename tuples::detail::element_const_ref<N, tuples::cons<Head, Tail> >::RET
 1217.84 -get(const tuples::cons<Head, Tail>& t, tuples::detail::workaround_holder<N>* = 0)
 1217.85 -{
 1217.86 -   return tuples::detail::get_class<N>::get(t);
 1217.87 -}
 1217.88 -#endif // BOOST_NO_USING_TEMPLATE
 1217.89 -   
 1217.90 -} // end namespace boost
 1217.91 -
 1217.92 -
 1217.93 -#endif // BOOST_TUPLE_HPP
  1218.1 --- a/epoc32/include/stdapis/boost/type_traits/aligned_storage.hpp	Tue Mar 16 16:12:26 2010 +0000
  1218.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1218.3 @@ -1,13 +0,0 @@
  1218.4 -
  1218.5 -//  Copyright (C) John Maddock 2005.
  1218.6 -//  Use, modification and distribution are subject to the Boost Software License,
  1218.7 -//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  1218.8 -//  http://www.boost.org/LICENSE_1_0.txt).
  1218.9 -//
 1218.10 -//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 1218.11 -
 1218.12 -#ifndef BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
 1218.13 -#  define BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
 1218.14 -#  include <boost/aligned_storage.hpp>
 1218.15 -#endif // BOOST_TT_ALIGNED_STORAGE_HPP_INCLUDED
 1218.16 -
  1219.1 --- a/epoc32/include/stdapis/boost/type_traits/conversion_traits.hpp	Tue Mar 16 16:12:26 2010 +0000
  1219.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1219.3 @@ -1,17 +0,0 @@
  1219.4 -
  1219.5 -// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
  1219.6 -// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
  1219.7 -// Copyright 1999, 2000 Jaakko J„rvi (jaakko.jarvi@cs.utu.fi)
  1219.8 -//
  1219.9 -//  Use, modification and distribution are subject to the Boost Software License,
 1219.10 -//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1219.11 -//  http://www.boost.org/LICENSE_1_0.txt).
 1219.12 -//
 1219.13 -//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 1219.14 -
 1219.15 -#ifndef BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
 1219.16 -#define BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
 1219.17 -
 1219.18 -#include <boost/type_traits/is_convertible.hpp>
 1219.19 -
 1219.20 -#endif // BOOST_TT_CONVERSION_TRAITS_HPP_INCLUDED
  1220.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1220.2 +++ b/epoc32/include/stdapis/boost/type_traits/detail/bool_trait_def.hpp	Wed Mar 31 12:27:01 2010 +0100
  1220.3 @@ -0,0 +1,30 @@
  1220.4 +//-----------------------------------------------------------------------------
  1220.5 +// boost/variant/detail/bool_trait_def.hpp header file
  1220.6 +// See http://www.boost.org for updates, documentation, and revision history.
  1220.7 +//-----------------------------------------------------------------------------
  1220.8 +//
  1220.9 +// Copyright (c) 2003
 1220.10 +// Eric Friedman
 1220.11 +//
 1220.12 +// Distributed under the Boost Software License, Version 1.0. (See
 1220.13 +// accompanying file LICENSE_1_0.txt or copy at
 1220.14 +// http://www.boost.org/LICENSE_1_0.txt)
 1220.15 +
 1220.16 +// Needed until move-related traits incorporated into type_traits library.
 1220.17 +// no include guards, the header is intended for multiple inclusion!
 1220.18 +
 1220.19 +// should be the last #include
 1220.20 +#include "boost/type_traits/detail/bool_trait_def.hpp"
 1220.21 +
 1220.22 +#define BOOST_VARIANT_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
 1220.23 +template< typename T > struct trait \
 1220.24 +    BOOST_TT_AUX_BOOL_C_BASE(C) \
 1220.25 +{ \
 1220.26 +    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
 1220.27 +    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
 1220.28 +}; \
 1220.29 +/**/
 1220.30 +
 1220.31 +#define BOOST_VARIANT_TT_AUX_TRAIT_SUFFIX(arity, name) \
 1220.32 +BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(arity, name) \
 1220.33 +/**/
  1221.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1221.2 +++ b/epoc32/include/stdapis/boost/type_traits/detail/bool_trait_undef.hpp	Wed Mar 31 12:27:01 2010 +0100
  1221.3 @@ -0,0 +1,21 @@
  1221.4 +//-----------------------------------------------------------------------------
  1221.5 +// boost/variant/detail/bool_trait_undef.hpp header file
  1221.6 +// See http://www.boost.org for updates, documentation, and revision history.
  1221.7 +//-----------------------------------------------------------------------------
  1221.8 +//
  1221.9 +// Copyright (c) 2003
 1221.10 +// Eric Friedman
 1221.11 +//
 1221.12 +// Distributed under the Boost Software License, Version 1.0. (See
 1221.13 +// accompanying file LICENSE_1_0.txt or copy at
 1221.14 +// http://www.boost.org/LICENSE_1_0.txt)
 1221.15 +
 1221.16 +// Needed until move-related traits incorporated into type_traits library.
 1221.17 +// no include guards, the header is intended for multiple inclusion!
 1221.18 +
 1221.19 +// should be the last #include
 1221.20 +#include "boost/type_traits/detail/bool_trait_undef.hpp"
 1221.21 +
 1221.22 +
 1221.23 +#undef BOOST_VARIANT_TT_AUX_BOOL_TRAIT_DEF1
 1221.24 +#undef BOOST_VARIANT_TT_AUX_TRAIT_SUFFIX
  1222.1 --- a/epoc32/include/stdapis/boost/type_traits/is_abstract.hpp	Tue Mar 16 16:12:26 2010 +0000
  1222.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1222.3 @@ -1,137 +0,0 @@
  1222.4 -#ifndef BOOST_TT_IS_ABSTRACT_CLASS_HPP
  1222.5 -#define BOOST_TT_IS_ABSTRACT_CLASS_HPP
  1222.6 -
  1222.7 -#if defined(_MSC_VER) && (_MSC_VER >= 1020)
  1222.8 -# pragma once
  1222.9 -#endif
 1222.10 -
 1222.11 -/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 1222.12 -// is_abstract_class.hpp:
 1222.13 -//
 1222.14 -//  (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
 1222.15 -//  Use, modification and distribution is subject to the Boost Software
 1222.16 -//  License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1222.17 -//  http://www.boost.org/LICENSE_1_0.txt)
 1222.18 -//  
 1222.19 -//  See http://www.boost.org for updates, documentation, and revision history.
 1222.20 -//
 1222.21 -
 1222.22 -// Compile type discovery whether given type is abstract class or not.
 1222.23 -//
 1222.24 -//   Requires DR 337 to be supported by compiler
 1222.25 -//   (http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html#337).
 1222.26 -//
 1222.27 -//
 1222.28 -// Believed (Jan 2004) to work on:
 1222.29 -//  - GCC 3.4
 1222.30 -//  - VC++ 7.1
 1222.31 -//  - compilers with new EDG frontend (Intel C++ 7, Comeau 4.3.2)
 1222.32 -//
 1222.33 -// Doesn't work on:
 1222.34 -//  - VC++6, VC++7.0 and less
 1222.35 -//  - GCC 3.3.X and less
 1222.36 -//  - Borland C++ 6 and less
 1222.37 -//      
 1222.38 -//
 1222.39 -// History:
 1222.40 -//  - Originally written by Rani Sharoni, see
 1222.41 -//    http://groups.google.com/groups?selm=df893da6.0207110613.75b2fe90%40posting.google.com
 1222.42 -//    At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
 1222.43 -//  - Adapted and added into Boost.Serialization library by Robert Ramey 
 1222.44 -//    (starting with submission #10).
 1222.45 -//  - Jan 2004: GCC 3.4 fixed to suport DR337 (Giovanni Bajo).
 1222.46 -//  - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
 1222.47 -//  - Nov 2004: Christoph Ludwig found that the implementation did not work with
 1222.48 -//              template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
 1222.49 -//              and John Maddock.
 1222.50 -//  - Dec 2004: Added new config macro BOOST_NO_IS_ABSTRACT which causes the template
 1222.51 -//              to degrade gracefully, rather than trash the compiler (John Maddock).
 1222.52 -//
 1222.53 -
 1222.54 -#include <boost/static_assert.hpp>
 1222.55 -#include <boost/type_traits/detail/yes_no_type.hpp>
 1222.56 -#include <boost/type_traits/is_class.hpp>
 1222.57 -#include <boost/type_traits/detail/ice_and.hpp>
 1222.58 -#ifdef BOOST_NO_IS_ABSTRACT
 1222.59 -#include <boost/type_traits/is_polymorphic.hpp>
 1222.60 -#endif
 1222.61 -// should be the last #include
 1222.62 -#include <boost/type_traits/detail/bool_trait_def.hpp>
 1222.63 -
 1222.64 -
 1222.65 -namespace boost {
 1222.66 -namespace detail{
 1222.67 -
 1222.68 -#ifndef BOOST_NO_IS_ABSTRACT
 1222.69 -template<class T>
 1222.70 -struct is_abstract_imp2
 1222.71 -{
 1222.72 -   // Deduction fails if T is void, function type, 
 1222.73 -   // reference type (14.8.2/2)or an abstract class type 
 1222.74 -   // according to review status issue #337
 1222.75 -   //
 1222.76 -   template<class U>
 1222.77 -   static type_traits::no_type check_sig(U (*)[1]);
 1222.78 -   template<class U>
 1222.79 -   static type_traits::yes_type check_sig(...);
 1222.80 -   //
 1222.81 -   // T must be a complete type, further if T is a template then
 1222.82 -   // it must be instantiated in order for us to get the right answer:
 1222.83 -   //
 1222.84 -   BOOST_STATIC_ASSERT(sizeof(T) != 0);
 1222.85 -
 1222.86 -   // GCC2 won't even parse this template if we embed the computation
 1222.87 -   // of s1 in the computation of value.
 1222.88 -#ifdef __GNUC__
 1222.89 -   BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0)));
 1222.90 -#else
 1222.91 -   BOOST_STATIC_CONSTANT(unsigned, s1 = sizeof(check_sig<T>(0)));
 1222.92 -#endif
 1222.93 -    
 1222.94 -   BOOST_STATIC_CONSTANT(bool, value = 
 1222.95 -      (s1 == sizeof(type_traits::yes_type)));
 1222.96 -};
 1222.97 -
 1222.98 -template <bool v>
 1222.99 -struct is_abstract_select
1222.100 -{
1222.101 -   template <class T>
1222.102 -   struct rebind
1222.103 -   {
1222.104 -      typedef is_abstract_imp2<T> type;
1222.105 -   };
1222.106 -};
1222.107 -template <>
1222.108 -struct is_abstract_select<false>
1222.109 -{
1222.110 -   template <class T>
1222.111 -   struct rebind
1222.112 -   {
1222.113 -      typedef false_type type;
1222.114 -   };
1222.115 -};
1222.116 -
1222.117 -template <class T>
1222.118 -struct is_abstract_imp
1222.119 -{
1222.120 -   typedef is_abstract_select< ::boost::is_class<T>::value> selector;
1222.121 -   typedef typename selector::template rebind<T> binder;
1222.122 -   typedef typename binder::type type;
1222.123 -
1222.124 -   BOOST_STATIC_CONSTANT(bool, value = type::value);
1222.125 -};
1222.126 -
1222.127 -#endif
1222.128 -}
1222.129 -
1222.130 -#ifndef BOOST_NO_IS_ABSTRACT
1222.131 -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::boost::detail::is_abstract_imp<T>::value)
1222.132 -#else
1222.133 -BOOST_TT_AUX_BOOL_TRAIT_DEF1(is_abstract,T,::boost::detail::is_polymorphic_imp<T>::value)
1222.134 -#endif
1222.135 -
1222.136 -} // namespace boost
1222.137 -
1222.138 -#include <boost/type_traits/detail/bool_trait_undef.hpp>
1222.139 -
1222.140 -#endif //BOOST_TT_IS_ABSTRACT_CLASS_HPP
  1223.1 --- a/epoc32/include/stdapis/boost/type_traits/is_convertible.hpp	Tue Mar 16 16:12:26 2010 +0000
  1223.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1223.3 @@ -1,416 +0,0 @@
  1223.4 -
  1223.5 -// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
  1223.6 -// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
  1223.7 -// Copyright 1999, 2000 Jaakko J„rvi (jaakko.jarvi@cs.utu.fi)
  1223.8 -//
  1223.9 -//  Use, modification and distribution are subject to the Boost Software License,
 1223.10 -//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1223.11 -//  http://www.boost.org/LICENSE_1_0.txt).
 1223.12 -//
 1223.13 -//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 1223.14 -
 1223.15 -#ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
 1223.16 -#define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
 1223.17 -
 1223.18 -#include <boost/type_traits/detail/yes_no_type.hpp>
 1223.19 -#include <boost/type_traits/config.hpp>
 1223.20 -#include <boost/type_traits/is_array.hpp>
 1223.21 -#include <boost/type_traits/add_reference.hpp>
 1223.22 -#include <boost/type_traits/ice.hpp>
 1223.23 -#include <boost/type_traits/is_arithmetic.hpp>
 1223.24 -#include <boost/type_traits/is_void.hpp>
 1223.25 -#ifndef BOOST_NO_IS_ABSTRACT
 1223.26 -#include <boost/type_traits/is_abstract.hpp>
 1223.27 -#endif
 1223.28 -
 1223.29 -#if defined(__MWERKS__)
 1223.30 -#include <boost/type_traits/is_function.hpp>
 1223.31 -#include <boost/type_traits/remove_reference.hpp>
 1223.32 -#endif
 1223.33 -
 1223.34 -// should be always the last #include directive
 1223.35 -#include <boost/type_traits/detail/bool_trait_def.hpp>
 1223.36 -
 1223.37 -namespace boost {
 1223.38 -
 1223.39 -// is one type convertable to another?
 1223.40 -//
 1223.41 -// there are multiple versions of the is_convertible
 1223.42 -// template, almost every compiler seems to require its
 1223.43 -// own version.
 1223.44 -//
 1223.45 -// Thanks to Andrei Alexandrescu for the original version of the
 1223.46 -// conversion detection technique!
 1223.47 -//
 1223.48 -
 1223.49 -namespace detail {
 1223.50 -
 1223.51 -// MS specific version:
 1223.52 -
 1223.53 -#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
 1223.54 -
 1223.55 -// This workaround is necessary to handle when From is void
 1223.56 -// which is normally taken care of by the partial specialization
 1223.57 -// of the is_convertible typename.
 1223.58 -using ::boost::type_traits::yes_type;
 1223.59 -using ::boost::type_traits::no_type;
 1223.60 -
 1223.61 -template< typename From >
 1223.62 -struct does_conversion_exist
 1223.63 -{
 1223.64 -    template< typename To > struct result_
 1223.65 -    {
 1223.66 -        static no_type BOOST_TT_DECL _m_check(...);
 1223.67 -        static yes_type BOOST_TT_DECL _m_check(To);
 1223.68 -        static From _m_from;
 1223.69 -        enum { value = sizeof( _m_check(_m_from) ) == sizeof(yes_type) };
 1223.70 -    };
 1223.71 -};
 1223.72 -
 1223.73 -template<>
 1223.74 -struct does_conversion_exist<void>
 1223.75 -{
 1223.76 -    template< typename To > struct result_
 1223.77 -    {
 1223.78 -        enum { value = ::boost::is_void<To>::value };
 1223.79 -    };
 1223.80 -};
 1223.81 -
 1223.82 -template <typename From, typename To>
 1223.83 -struct is_convertible_basic_impl
 1223.84 -    : does_conversion_exist<From>::template result_<To>
 1223.85 -{
 1223.86 -};
 1223.87 -
 1223.88 -#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560)
 1223.89 -//
 1223.90 -// special version for Borland compilers
 1223.91 -// this version breaks when used for some
 1223.92 -// UDT conversions:
 1223.93 -//
 1223.94 -template <typename From, typename To>
 1223.95 -struct is_convertible_impl
 1223.96 -{
 1223.97 -#pragma option push -w-8074
 1223.98 -    // This workaround for Borland breaks the EDG C++ frontend,
 1223.99 -    // so we only use it for Borland.
1223.100 -    template <typename T> struct checker
1223.101 -    {
1223.102 -        static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
1223.103 -        static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
1223.104 -    };
1223.105 -
1223.106 -    static From _m_from;
1223.107 -    static bool const value = sizeof( checker<To>::_m_check(_m_from) )
1223.108 -        == sizeof(::boost::type_traits::yes_type);
1223.109 -#pragma option pop
1223.110 -};
1223.111 -
1223.112 -#elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
1223.113 -// special version for gcc compiler + recent Borland versions
1223.114 -// note that this does not pass UDT's through (...)
1223.115 -
1223.116 -struct any_conversion
1223.117 -{
1223.118 -    template <typename T> any_conversion(const volatile T&);
1223.119 -    template <typename T> any_conversion(T&);
1223.120 -};
1223.121 -
1223.122 -template <typename T> struct checker
1223.123 -{
1223.124 -    static boost::type_traits::no_type _m_check(any_conversion ...);
1223.125 -    static boost::type_traits::yes_type _m_check(T, int);
1223.126 -};
1223.127 -
1223.128 -template <typename From, typename To>
1223.129 -struct is_convertible_basic_impl
1223.130 -{
1223.131 -    static From _m_from;
1223.132 -    static bool const value = sizeof( detail::checker<To>::_m_check(_m_from, 0) )
1223.133 -        == sizeof(::boost::type_traits::yes_type);
1223.134 -};
1223.135 -
1223.136 -#elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
1223.137 -      || defined(__IBMCPP__) || defined(__HP_aCC)
1223.138 -//
1223.139 -// This is *almost* an ideal world implementation as it doesn't rely
1223.140 -// on undefined behaviour by passing UDT's through (...).
1223.141 -// Unfortunately it doesn't quite pass all the tests for most compilers (sigh...)
1223.142 -// Enable this for your compiler if is_convertible_test.cpp will compile it...
1223.143 -//
1223.144 -// Note we do not enable this for VC7.1, because even though it passes all the
1223.145 -// type_traits tests it is known to cause problems when instantiation occurs
1223.146 -// deep within the instantiation tree :-(
1223.147 -//
1223.148 -struct any_conversion
1223.149 -{
1223.150 -    template <typename T> any_conversion(const volatile T&);
1223.151 -    // we need this constructor to catch references to functions
1223.152 -    // (which can not be cv-qualified):
1223.153 -    template <typename T> any_conversion(T&);
1223.154 -};
1223.155 -
1223.156 -template <typename From, typename To>
1223.157 -struct is_convertible_basic_impl
1223.158 -{
1223.159 -    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
1223.160 -    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
1223.161 -       static From _m_from;
1223.162 -
1223.163 -    BOOST_STATIC_CONSTANT(bool, value =
1223.164 -        sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
1223.165 -        );
1223.166 -};
1223.167 -
1223.168 -#elif defined(__DMC__)
1223.169 -
1223.170 -struct any_conversion
1223.171 -{
1223.172 -    template <typename T> any_conversion(const volatile T&);
1223.173 -    // we need this constructor to catch references to functions
1223.174 -    // (which can not be cv-qualified):
1223.175 -    template <typename T> any_conversion(T&);
1223.176 -};
1223.177 -
1223.178 -template <typename From, typename To>
1223.179 -struct is_convertible_basic_impl
1223.180 -{
1223.181 -    // Using '...' doesn't always work on Digital Mars. This version seems to.
1223.182 -    template <class T>
1223.183 -    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion,  float, T);
1223.184 -    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
1223.185 -    static From _m_from;
1223.186 -
1223.187 -    // Static constants sometime cause the conversion of _m_from to To to be
1223.188 -    // called. This doesn't happen with an enum.
1223.189 -    enum { value =
1223.190 -        sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type)
1223.191 -        };
1223.192 -};
1223.193 -
1223.194 -#elif defined(__MWERKS__)
1223.195 -// 
1223.196 -// CW works with the technique implemented above for EDG, except when From
1223.197 -// is a function type (or a reference to such a type), in which case
1223.198 -// any_conversion won't be accepted as a valid conversion. We detect this
1223.199 -// exceptional situation and channel it through an alternative algorithm.
1223.200 -//
1223.201 -
1223.202 -template <typename From, typename To,bool FromIsFunctionRef>
1223.203 -struct is_convertible_basic_impl_aux;
1223.204 -
1223.205 -struct any_conversion
1223.206 -{
1223.207 -    template <typename T> any_conversion(const volatile T&);
1223.208 -};
1223.209 -
1223.210 -template <typename From, typename To>
1223.211 -struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
1223.212 -{
1223.213 -    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
1223.214 -    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
1223.215 -    static From _m_from;
1223.216 -
1223.217 -    BOOST_STATIC_CONSTANT(bool, value =
1223.218 -        sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
1223.219 -        );
1223.220 -};
1223.221 -
1223.222 -template <typename From, typename To>
1223.223 -struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
1223.224 -{
1223.225 -    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
1223.226 -    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
1223.227 -    static From _m_from;
1223.228 -    BOOST_STATIC_CONSTANT(bool, value =
1223.229 -        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
1223.230 -        );
1223.231 -};
1223.232 -
1223.233 -template <typename From, typename To>
1223.234 -struct is_convertible_basic_impl:
1223.235 -  is_convertible_basic_impl_aux<
1223.236 -    From,To,
1223.237 -    ::boost::is_function<typename ::boost::remove_reference<From>::type>::value
1223.238 -  >
1223.239 -{};
1223.240 -
1223.241 -#else
1223.242 -
1223.243 -//
1223.244 -// This version seems to work pretty well for a wide spectrum of compilers,
1223.245 -// however it does rely on undefined behaviour by passing UDT's through (...).
1223.246 -//
1223.247 -template <typename From, typename To>
1223.248 -struct is_convertible_basic_impl
1223.249 -{
1223.250 -    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
1223.251 -    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
1223.252 -    static From _m_from;
1223.253 -#ifdef BOOST_MSVC
1223.254 -#pragma warning(push)
1223.255 -#pragma warning(disable:4244)
1223.256 -#endif
1223.257 -    BOOST_STATIC_CONSTANT(bool, value =
1223.258 -        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
1223.259 -        );
1223.260 -#ifdef BOOST_MSVC
1223.261 -#pragma warning(pop)
1223.262 -#endif
1223.263 -};
1223.264 -
1223.265 -#endif // is_convertible_impl
1223.266 -
1223.267 -#if defined(__DMC__)
1223.268 -// As before, a static constant sometimes causes errors on Digital Mars.
1223.269 -template <typename From, typename To>
1223.270 -struct is_convertible_impl
1223.271 -{
1223.272 -    typedef typename add_reference<From>::type ref_type;
1223.273 -    enum { value =
1223.274 -        (::boost::type_traits::ice_and<
1223.275 -            ::boost::type_traits::ice_or<
1223.276 -               ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
1223.277 -               ::boost::is_void<To>::value
1223.278 -            >::value,
1223.279 -            ::boost::type_traits::ice_not<
1223.280 -               ::boost::is_array<To>::value
1223.281 -            >::value
1223.282 -        >::value) };
1223.283 -};
1223.284 -#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551
1223.285 -template <typename From, typename To>
1223.286 -struct is_convertible_impl
1223.287 -{
1223.288 -    typedef typename add_reference<From>::type ref_type;
1223.289 -    BOOST_STATIC_CONSTANT(bool, value =
1223.290 -        (::boost::type_traits::ice_and<
1223.291 -            ::boost::type_traits::ice_or<
1223.292 -               ::boost::detail::is_convertible_basic_impl<ref_type,To>::value,
1223.293 -               ::boost::is_void<To>::value
1223.294 -            >::value,
1223.295 -            ::boost::type_traits::ice_not<
1223.296 -               ::boost::is_array<To>::value
1223.297 -            >::value
1223.298 -        >::value)
1223.299 -        );
1223.300 -};
1223.301 -#endif
1223.302 -
1223.303 -template <bool trivial1, bool trivial2, bool abstract_target>
1223.304 -struct is_convertible_impl_select
1223.305 -{
1223.306 -   template <class From, class To>
1223.307 -   struct rebind
1223.308 -   {
1223.309 -      typedef is_convertible_impl<From, To> type;
1223.310 -   };
1223.311 -};
1223.312 -
1223.313 -template <>
1223.314 -struct is_convertible_impl_select<true, true, false>
1223.315 -{
1223.316 -   template <class From, class To>
1223.317 -   struct rebind
1223.318 -   {
1223.319 -      typedef true_type type;
1223.320 -   };
1223.321 -};
1223.322 -
1223.323 -template <>
1223.324 -struct is_convertible_impl_select<false, false, true>
1223.325 -{
1223.326 -   template <class From, class To>
1223.327 -   struct rebind
1223.328 -   {
1223.329 -      typedef false_type type;
1223.330 -   };
1223.331 -};
1223.332 -
1223.333 -template <>
1223.334 -struct is_convertible_impl_select<true, false, true>
1223.335 -{
1223.336 -   template <class From, class To>
1223.337 -   struct rebind
1223.338 -   {
1223.339 -      typedef false_type type;
1223.340 -   };
1223.341 -};
1223.342 -
1223.343 -template <typename From, typename To>
1223.344 -struct is_convertible_impl_dispatch_base
1223.345 -{
1223.346 -#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
1223.347 -   typedef is_convertible_impl_select< 
1223.348 -      ::boost::is_arithmetic<From>::value, 
1223.349 -      ::boost::is_arithmetic<To>::value,
1223.350 -#ifndef BOOST_NO_IS_ABSTRACT
1223.351 -      ::boost::is_abstract<To>::value
1223.352 -#else
1223.353 -      false
1223.354 -#endif
1223.355 -   > selector;
1223.356 -#else
1223.357 -   typedef is_convertible_impl_select<false, false, false> selector;
1223.358 -#endif
1223.359 -   typedef typename selector::template rebind<From, To> isc_binder;
1223.360 -   typedef typename isc_binder::type type;
1223.361 -};
1223.362 -
1223.363 -template <typename From, typename To>
1223.364 -struct is_convertible_impl_dispatch 
1223.365 -   : public is_convertible_impl_dispatch_base<From, To>::type
1223.366 -{};
1223.367 -
1223.368 -//
1223.369 -// Now add the full and partial specialisations
1223.370 -// for void types, these are common to all the
1223.371 -// implementation above:
1223.372 -//
1223.373 -#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
1223.374 -#   define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
1223.375 -    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2,value) \
1223.376 -    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const,value) \
1223.377 -    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 volatile,value) \
1223.378 -    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(trait,spec1,spec2 const volatile,value) \
1223.379 -    /**/
1223.380 -
1223.381 -#   define TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(trait,spec1,spec2,value) \
1223.382 -    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1,spec2,value) \
1223.383 -    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const,spec2,value) \
1223.384 -    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 volatile,spec2,value) \
1223.385 -    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1(trait,spec1 const volatile,spec2,value) \
1223.386 -    /**/
1223.387 -
1223.388 -    TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2(is_convertible,void,void,true)
1223.389 -
1223.390 -#   undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2
1223.391 -#   undef TT_AUX_BOOL_CV_VOID_TRAIT_SPEC2_PART1
1223.392 -
1223.393 -#else
1223.394 -    BOOST_TT_AUX_BOOL_TRAIT_IMPL_SPEC2(is_convertible,void,void,true)
1223.395 -#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
1223.396 -
1223.397 -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1223.398 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void,To,false)
1223.399 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void,true)
1223.400 -#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
1223.401 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const,To,false)
1223.402 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void volatile,To,false)
1223.403 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename To,is_convertible,void const volatile,To,false)
1223.404 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const,true)
1223.405 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void volatile,true)
1223.406 -BOOST_TT_AUX_BOOL_TRAIT_IMPL_PARTIAL_SPEC2_1(typename From,is_convertible,From,void const volatile,true)
1223.407 -#endif
1223.408 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1223.409 -
1223.410 -} // namespace detail
1223.411 -
1223.412 -BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_convertible,From,To,(::boost::detail::is_convertible_impl_dispatch<From,To>::value))
1223.413 -
1223.414 -} // namespace boost
1223.415 -
1223.416 -#include <boost/type_traits/detail/bool_trait_undef.hpp>
1223.417 -
1223.418 -#endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
1223.419 -
  1224.1 --- a/epoc32/include/stdapis/boost/type_traits/is_same.hpp	Tue Mar 16 16:12:26 2010 +0000
  1224.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1224.3 @@ -1,103 +0,0 @@
  1224.4 -
  1224.5 -//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
  1224.6 -//      Howard Hinnant and John Maddock 2000. 
  1224.7 -//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001
  1224.8 -
  1224.9 -//  Use, modification and distribution are subject to the Boost Software License,
 1224.10 -//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1224.11 -//  http://www.boost.org/LICENSE_1_0.txt).
 1224.12 -//
 1224.13 -//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
 1224.14 -
 1224.15 -//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
 1224.16 -//    is_member_pointer based on the Simulated Partial Specialization work 
 1224.17 -//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
 1224.18 -//    http://groups.yahoo.com/group/boost/message/5441 
 1224.19 -//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
 1224.20 -//    Mappings between Types and Values" 
 1224.21 -//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
 1224.22 -
 1224.23 -
 1224.24 -#ifndef BOOST_TT_IS_SAME_HPP_INCLUDED
 1224.25 -#define BOOST_TT_IS_SAME_HPP_INCLUDED
 1224.26 -
 1224.27 -#include <boost/type_traits/config.hpp>
 1224.28 -#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1224.29 -#include <boost/type_traits/detail/yes_no_type.hpp>
 1224.30 -#include <boost/type_traits/detail/ice_and.hpp>
 1224.31 -#include <boost/type_traits/is_reference.hpp>
 1224.32 -#endif
 1224.33 -// should be the last #include
 1224.34 -#include <boost/type_traits/detail/bool_trait_def.hpp>
 1224.35 -
 1224.36 -namespace boost {
 1224.37 -
 1224.38 -#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1224.39 -
 1224.40 -BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,false)
 1224.41 -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T,T,true)
 1224.42 -#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
 1224.43 -// without this, Borland's compiler gives the wrong answer for
 1224.44 -// references to arrays:
 1224.45 -BOOST_TT_AUX_BOOL_TRAIT_PARTIAL_SPEC2_1(typename T,is_same,T&,T&,true)
 1224.46 -#endif
 1224.47 -
 1224.48 -#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 1224.49 -
 1224.50 -namespace detail {
 1224.51 -
 1224.52 -#ifdef BOOST_MSVC
 1224.53 -// the following VC6 specific implementation is *NOT* legal
 1224.54 -// C++, but has the advantage that it works for incomplete
 1224.55 -// types.
 1224.56 -
 1224.57 -template< typename T1 >
 1224.58 -struct is_same_part_1
 1224.59 -{
 1224.60 -    template<typename T2>  struct part_2     { enum { value = false }; };
 1224.61 -    template<>             struct part_2<T1> { enum { value = true }; };
 1224.62 -};
 1224.63 -
 1224.64 -template< typename T1, typename T2 >
 1224.65 -struct is_same_impl
 1224.66 -{
 1224.67 -    enum { value = detail::is_same_part_1<T1>::template part_2<T2>::value };
 1224.68 -};
 1224.69 -
 1224.70 -#else // generic "no-partial-specialization" version
 1224.71 -
 1224.72 -template <typename T>
 1224.73 -::boost::type_traits::yes_type
 1224.74 -BOOST_TT_DECL is_same_tester(T*, T*);
 1224.75 -
 1224.76 -::boost::type_traits::no_type
 1224.77 -BOOST_TT_DECL is_same_tester(...);
 1224.78 -
 1224.79 -template <typename T, typename U>
 1224.80 -struct is_same_impl
 1224.81 -{
 1224.82 -   static T t;
 1224.83 -   static U u;
 1224.84 -
 1224.85 -   BOOST_STATIC_CONSTANT(bool, value =
 1224.86 -      (::boost::type_traits::ice_and<
 1224.87 -         (sizeof(type_traits::yes_type) == sizeof(detail::is_same_tester(&t,&u))),
 1224.88 -         (::boost::is_reference<T>::value == ::boost::is_reference<U>::value),
 1224.89 -         (sizeof(T) == sizeof(U))
 1224.90 -        >::value));
 1224.91 -};
 1224.92 -
 1224.93 -#endif // BOOST_MSVC
 1224.94 -
 1224.95 -} // namespace detail
 1224.96 -
 1224.97 -BOOST_TT_AUX_BOOL_TRAIT_DEF2(is_same,T,U,(::boost::detail::is_same_impl<T,U>::value))
 1224.98 -
 1224.99 -#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
1224.100 -
1224.101 -} // namespace boost
1224.102 -
1224.103 -#include <boost/type_traits/detail/bool_trait_undef.hpp>
1224.104 -
1224.105 -#endif  // BOOST_TT_IS_SAME_HPP_INCLUDED
1224.106 -
  1225.1 --- a/epoc32/include/stdapis/boost/utility.hpp	Tue Mar 16 16:12:26 2010 +0000
  1225.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1225.3 @@ -1,19 +0,0 @@
  1225.4 -//  Boost utility.hpp header file  -------------------------------------------//
  1225.5 -
  1225.6 -//  Copyright 1999-2003 Aleksey Gurtovoy.  Use, modification, and distribution are
  1225.7 -//  subject to the Boost Software License, Version 1.0.  (See accompanying file
  1225.8 -//  LICENSE_1_0.txt or a copy at <http://www.boost.org/LICENSE_1_0.txt>.)
  1225.9 -
 1225.10 -//  See <http://www.boost.org/libs/utility/> for the library's home page.
 1225.11 -
 1225.12 -#ifndef BOOST_UTILITY_HPP
 1225.13 -#define BOOST_UTILITY_HPP
 1225.14 -
 1225.15 -#include <boost/utility/addressof.hpp>
 1225.16 -#include <boost/utility/base_from_member.hpp>  
 1225.17 -#include <boost/utility/enable_if.hpp>
 1225.18 -#include <boost/checked_delete.hpp>
 1225.19 -#include <boost/next_prior.hpp>
 1225.20 -#include <boost/noncopyable.hpp>
 1225.21 -
 1225.22 -#endif  // BOOST_UTILITY_HPP
  1226.1 --- a/epoc32/include/stdapis/boost/utility/enable_if.hpp	Tue Mar 16 16:12:26 2010 +0000
  1226.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1226.3 @@ -1,119 +0,0 @@
  1226.4 -// Boost enable_if library
  1226.5 -
  1226.6 -// Copyright 2003 © The Trustees of Indiana University.
  1226.7 -
  1226.8 -// Use, modification, and distribution is subject to the Boost Software
  1226.9 -// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 1226.10 -// http://www.boost.org/LICENSE_1_0.txt)
 1226.11 -
 1226.12 -//    Authors: Jaakko Järvi (jajarvi at osl.iu.edu)
 1226.13 -//             Jeremiah Willcock (jewillco at osl.iu.edu)
 1226.14 -//             Andrew Lumsdaine (lums at osl.iu.edu)
 1226.15 -
 1226.16 -
 1226.17 -#ifndef BOOST_UTILITY_ENABLE_IF_HPP
 1226.18 -#define BOOST_UTILITY_ENABLE_IF_HPP
 1226.19 -
 1226.20 -#include "boost/config.hpp"
 1226.21 -
 1226.22 -// Even the definition of enable_if causes problems on some compilers,
 1226.23 -// so it's macroed out for all compilers that do not support SFINAE
 1226.24 -
 1226.25 -#ifndef BOOST_NO_SFINAE
 1226.26 -
 1226.27 -namespace boost
 1226.28 -{
 1226.29 - 
 1226.30 -  template <bool B, class T = void>
 1226.31 -  struct enable_if_c {
 1226.32 -    typedef T type;
 1226.33 -  };
 1226.34 -
 1226.35 -  template <class T>
 1226.36 -  struct enable_if_c<false, T> {};
 1226.37 -
 1226.38 -  template <class Cond, class T = void> 
 1226.39 -  struct enable_if : public enable_if_c<Cond::value, T> {};
 1226.40 -
 1226.41 -  template <bool B, class T>
 1226.42 -  struct lazy_enable_if_c {
 1226.43 -    typedef typename T::type type;
 1226.44 -  };
 1226.45 -
 1226.46 -  template <class T>
 1226.47 -  struct lazy_enable_if_c<false, T> {};
 1226.48 -
 1226.49 -  template <class Cond, class T> 
 1226.50 -  struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
 1226.51 -
 1226.52 -
 1226.53 -  template <bool B, class T = void>
 1226.54 -  struct disable_if_c {
 1226.55 -    typedef T type;
 1226.56 -  };
 1226.57 -
 1226.58 -  template <class T>
 1226.59 -  struct disable_if_c<true, T> {};
 1226.60 -
 1226.61 -  template <class Cond, class T = void> 
 1226.62 -  struct disable_if : public disable_if_c<Cond::value, T> {};
 1226.63 -
 1226.64 -  template <bool B, class T>
 1226.65 -  struct lazy_disable_if_c {
 1226.66 -    typedef typename T::type type;
 1226.67 -  };
 1226.68 -
 1226.69 -  template <class T>
 1226.70 -  struct lazy_disable_if_c<true, T> {};
 1226.71 -
 1226.72 -  template <class Cond, class T> 
 1226.73 -  struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
 1226.74 -
 1226.75 -} // namespace boost
 1226.76 -
 1226.77 -#else
 1226.78 -
 1226.79 -namespace boost {
 1226.80 -
 1226.81 -  namespace detail { typedef void enable_if_default_T; }
 1226.82 -
 1226.83 -  template <typename T>
 1226.84 -  struct enable_if_does_not_work_on_this_compiler;
 1226.85 -
 1226.86 -  template <bool B, class T = detail::enable_if_default_T>
 1226.87 -  struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
 1226.88 -  { };
 1226.89 -
 1226.90 -  template <bool B, class T = detail::enable_if_default_T> 
 1226.91 -  struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
 1226.92 -  { };
 1226.93 -
 1226.94 -  template <bool B, class T = detail::enable_if_default_T> 
 1226.95 -  struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
 1226.96 -  { };
 1226.97 -
 1226.98 -  template <bool B, class T = detail::enable_if_default_T> 
 1226.99 -  struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
1226.100 -  { };
1226.101 -
1226.102 -  template <class Cond, class T = detail::enable_if_default_T> 
1226.103 -  struct enable_if : enable_if_does_not_work_on_this_compiler<T>
1226.104 -  { };
1226.105 -
1226.106 -  template <class Cond, class T = detail::enable_if_default_T> 
1226.107 -  struct disable_if : enable_if_does_not_work_on_this_compiler<T>
1226.108 -  { };
1226.109 -
1226.110 -  template <class Cond, class T = detail::enable_if_default_T> 
1226.111 -  struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
1226.112 -  { };
1226.113 -
1226.114 -  template <class Cond, class T = detail::enable_if_default_T> 
1226.115 -  struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
1226.116 -  { };
1226.117 -
1226.118 -} // namespace boost
1226.119 -
1226.120 -#endif // BOOST_NO_SFINAE
1226.121 -
1226.122 -#endif
  1227.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1227.2 +++ b/epoc32/include/stdapis/boost/variant.hpp	Wed Mar 31 12:27:01 2010 +0100
  1227.3 @@ -0,0 +1,1833 @@
  1227.4 +//-----------------------------------------------------------------------------
  1227.5 +// boost variant/variant.hpp header file
  1227.6 +// See http://www.boost.org for updates, documentation, and revision history.
  1227.7 +//-----------------------------------------------------------------------------
  1227.8 +//
  1227.9 +// Copyright (c) 2002-2003
 1227.10 +// Eric Friedman, Itay Maman
 1227.11 +//
 1227.12 +// Distributed under the Boost Software License, Version 1.0. (See
 1227.13 +// accompanying file LICENSE_1_0.txt or copy at
 1227.14 +// http://www.boost.org/LICENSE_1_0.txt)
 1227.15 +/*
 1227.16 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
 1227.17 +*/
 1227.18 +#ifndef BOOST_VARIANT_VARIANT_HPP
 1227.19 +#define BOOST_VARIANT_VARIANT_HPP
 1227.20 +
 1227.21 +#include <cstddef> // for std::size_t
 1227.22 +#include <new> // for placement new
 1227.23 +#ifdef __SYMBIAN32__
 1227.24 +#include <string>
 1227.25 +#endif
 1227.26 +#include <typeinfo> // for typeid, std::type_info
 1227.27 +
 1227.28 +#include "boost/variant/detail/config.hpp"
 1227.29 +#include "boost/mpl/aux_/config/eti.hpp"
 1227.30 +#include "boost/mpl/aux_/value_wknd.hpp"
 1227.31 +
 1227.32 +#include "boost/variant/variant_fwd.hpp"
 1227.33 +#include "boost/variant/detail/backup_holder.hpp"
 1227.34 +#include "boost/variant/detail/enable_recursive_fwd.hpp"
 1227.35 +#include "boost/variant/detail/forced_return.hpp"
 1227.36 +#include "boost/variant/detail/initializer.hpp"
 1227.37 +#include "boost/variant/detail/make_variant_list.hpp"
 1227.38 +#include "boost/variant/detail/over_sequence.hpp"
 1227.39 +#include "boost/variant/detail/visitation_impl.hpp"
 1227.40 +
 1227.41 +#include "boost/variant/detail/generic_result_type.hpp"
 1227.42 +#include "boost/variant/detail/has_nothrow_move.hpp"
 1227.43 +#include "boost/variant/detail/move.hpp"
 1227.44 +
 1227.45 +#include "boost/detail/reference_content.hpp"
 1227.46 +#include "boost/aligned_storage.hpp"
 1227.47 +#include "boost/blank.hpp"
 1227.48 +#include "boost/static_assert.hpp"
 1227.49 +#include "boost/preprocessor/cat.hpp"
 1227.50 +#include "boost/preprocessor/repeat.hpp"
 1227.51 +#include "boost/type_traits/alignment_of.hpp"
 1227.52 +#include "boost/type_traits/add_const.hpp"
 1227.53 +#include "boost/type_traits/has_nothrow_constructor.hpp"
 1227.54 +#include "boost/type_traits/has_nothrow_copy.hpp"
 1227.55 +#include "boost/type_traits/is_const.hpp"
 1227.56 +#include "boost/type_traits/is_same.hpp"
 1227.57 +#include "boost/utility/enable_if.hpp"
 1227.58 +#include "boost/variant/recursive_wrapper_fwd.hpp"
 1227.59 +#include "boost/variant/static_visitor.hpp"
 1227.60 +
 1227.61 +#include "boost/mpl/eval_if.hpp"
 1227.62 +#include "boost/mpl/begin_end.hpp"
 1227.63 +#include "boost/mpl/bool.hpp"
 1227.64 +#include "boost/mpl/empty.hpp"
 1227.65 +#include "boost/mpl/find_if.hpp"
 1227.66 +#include "boost/mpl/front.hpp"
 1227.67 +#include "boost/mpl/identity.hpp"
 1227.68 +#include "boost/mpl/if.hpp"
 1227.69 +#include "boost/mpl/int.hpp"
 1227.70 +#include "boost/mpl/is_sequence.hpp"
 1227.71 +#include "boost/mpl/iterator_range.hpp"
 1227.72 +#include "boost/mpl/iter_fold_if.hpp"
 1227.73 +#include "boost/mpl/logical.hpp"
 1227.74 +#include "boost/mpl/max_element.hpp"
 1227.75 +#include "boost/mpl/next.hpp"
 1227.76 +#include "boost/mpl/deref.hpp"
 1227.77 +#include "boost/mpl/pair.hpp"
 1227.78 +#include "boost/mpl/protect.hpp"
 1227.79 +#include "boost/mpl/push_front.hpp"
 1227.80 +#include "boost/mpl/same_as.hpp"
 1227.81 +#include "boost/mpl/size_t.hpp"
 1227.82 +#include "boost/mpl/sizeof.hpp"
 1227.83 +#include "boost/mpl/transform.hpp"
 1227.84 +#include "boost/mpl/assert.hpp"
 1227.85 +
 1227.86 +///////////////////////////////////////////////////////////////////////////////
 1227.87 +// Implementation Macros:
 1227.88 +//
 1227.89 +// BOOST_VARIANT_VISITATION_UNROLLING_LIMIT
 1227.90 +//   Defined in boost/variant/detail/visitation_impl.hpp.
 1227.91 +//
 1227.92 +// BOOST_VARIANT_MINIMIZE_SIZE
 1227.93 +//   When #defined, implementation employs all known means to minimize the
 1227.94 +//   size of variant obje   cts. However, often unsuccessful due to alignment
 1227.95 +//   issues, and potentially harmful to runtime speed, so not enabled by
 1227.96 +//   default. (TODO: Investigate further.)
 1227.97 +
 1227.98 +#if defined(BOOST_VARIANT_MINIMIZE_SIZE)
 1227.99 +#   include <climits> // for SCHAR_MAX
1227.100 +#   include "boost/mpl/eval_if.hpp"
1227.101 +#   include "boost/mpl/equal_to.hpp"
1227.102 +#   include "boost/mpl/identity.hpp"
1227.103 +#   include "boost/mpl/int.hpp"
1227.104 +#   include "boost/mpl/if.hpp"
1227.105 +#   include "boost/mpl/less.hpp"
1227.106 +#   include "boost/mpl/long.hpp"
1227.107 +#   include "boost/mpl/O1_size.hpp"
1227.108 +#endif
1227.109 +
1227.110 +
1227.111 +namespace boost {
1227.112 +
1227.113 +namespace detail { namespace variant {
1227.114 +
1227.115 +///////////////////////////////////////////////////////////////////////////////
1227.116 +// (detail) metafunction max_value
1227.117 +//
1227.118 +// Finds the maximum value of the unary metafunction F over Sequence.
1227.119 +//
1227.120 +template <typename Sequence, typename F>
1227.121 +struct max_value
1227.122 +{
1227.123 +private: // helpers, for metafunction result (below)
1227.124 +
1227.125 +    typedef typename mpl::transform1<Sequence, F>::type transformed_;
1227.126 +    typedef typename mpl::max_element<transformed_
1227.127 +          
1227.128 +        >::type max_it;
1227.129 +
1227.130 +public: // metafunction result
1227.131 +
1227.132 +    typedef typename mpl::deref<max_it>::type
1227.133 +        type;
1227.134 +
1227.135 +};
1227.136 +
1227.137 +///////////////////////////////////////////////////////////////////////////////
1227.138 +// (detail) metafunction find_fallback_type
1227.139 +//
1227.140 +// Provides a fallback (i.e., nothrow default-constructible) type from the
1227.141 +// specified sequence, or no_fallback_type if not found.
1227.142 +//
1227.143 +// This implementation is designed to prefer boost::blank over other potential
1227.144 +// fallback types, regardless of its position in the specified sequence.
1227.145 +//
1227.146 +
1227.147 +class no_fallback_type;
1227.148 +
1227.149 +struct find_fallback_type_pred
1227.150 +{
1227.151 +    template <typename Iterator>
1227.152 +    struct apply
1227.153 +    {
1227.154 +    private:
1227.155 +        typedef typename mpl::deref<Iterator>::type t_;
1227.156 +
1227.157 +    public:
1227.158 +        typedef mpl::not_< has_nothrow_constructor<t_> > type;
1227.159 +    };
1227.160 +};
1227.161 +
1227.162 +template <typename Types>
1227.163 +struct find_fallback_type
1227.164 +{
1227.165 +private: // helpers, for metafunction result (below)
1227.166 +
1227.167 +    typedef typename mpl::end<Types>::type end_it;
1227.168 +
1227.169 +    // [Find the first suitable fallback type...]
1227.170 +
1227.171 +    typedef typename mpl::iter_fold_if<
1227.172 +          Types
1227.173 +        , mpl::int_<0>, mpl::protect< mpl::next<> >
1227.174 +        , mpl::protect< find_fallback_type_pred >
1227.175 +        >::type first_result_;
1227.176 +
1227.177 +    typedef typename first_result_::first first_result_index;
1227.178 +    typedef typename first_result_::second first_result_it;
1227.179 +
1227.180 +    // [...now search the rest of the sequence for boost::blank...]
1227.181 +
1227.182 +    typedef typename mpl::iter_fold_if<
1227.183 +          mpl::iterator_range< first_result_it,end_it >
1227.184 +        , first_result_index, mpl::protect< mpl::next<> >
1227.185 +        , mpl::protect< mpl::not_same_as<boost::blank> >
1227.186 +        >::type second_result_;
1227.187 +
1227.188 +    typedef typename second_result_::second second_result_it;
1227.189 +
1227.190 +public: // metafunction result
1227.191 +
1227.192 +    // [...and return the results of the search:]
1227.193 +    typedef typename mpl::eval_if<
1227.194 +          is_same< second_result_it,end_it >
1227.195 +        , mpl::if_<
1227.196 +              is_same< first_result_it,end_it >
1227.197 +            , mpl::pair< no_fallback_type,no_fallback_type >
1227.198 +            , first_result_
1227.199 +            >
1227.200 +        , mpl::identity< second_result_ >
1227.201 +        >::type type;
1227.202 +
1227.203 +};
1227.204 +
1227.205 +#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
1227.206 +
1227.207 +template<>
1227.208 +struct find_fallback_type<int>
1227.209 +{
1227.210 +    typedef mpl::pair< no_fallback_type,no_fallback_type > type;
1227.211 +};
1227.212 +
1227.213 +#endif // BOOST_MPL_CFG_MSVC_60_ETI_BUG workaround
1227.214 +
1227.215 +///////////////////////////////////////////////////////////////////////////////
1227.216 +// (detail) metafunction make_storage
1227.217 +//
1227.218 +// Provides an aligned storage type capable of holding any of the types
1227.219 +// specified in the given type-sequence.
1227.220 +//
1227.221 +
1227.222 +template <typename Types, typename NeverUsesBackupFlag>
1227.223 +struct make_storage
1227.224 +{
1227.225 +private: // helpers, for metafunction result (below)
1227.226 +
1227.227 +    typedef typename mpl::eval_if<
1227.228 +          NeverUsesBackupFlag
1227.229 +        , mpl::identity< Types >
1227.230 +        , mpl::push_front<
1227.231 +              Types, backup_holder<void*>
1227.232 +            >
1227.233 +        >::type types;
1227.234 +
1227.235 +    typedef typename max_value<
1227.236 +          types, mpl::sizeof_<mpl::_1>
1227.237 +        >::type max_size;
1227.238 +
1227.239 +#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0551))
1227.240 +
1227.241 +    typedef typename max_value<
1227.242 +          types, alignment_of<mpl::_1>
1227.243 +        >::type max_alignment;
1227.244 +
1227.245 +#else // borland
1227.246 +
1227.247 +    // temporary workaround -- use maximal alignment
1227.248 +    typedef mpl::size_t< -1 > max_alignment;
1227.249 +
1227.250 +#endif // borland workaround
1227.251 +
1227.252 +public: // metafunction result
1227.253 +
1227.254 +#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
1227.255 +
1227.256 +    typedef ::boost::aligned_storage<
1227.257 +          BOOST_MPL_AUX_VALUE_WKND(max_size)::value
1227.258 +        , BOOST_MPL_AUX_VALUE_WKND(max_alignment)::value
1227.259 +        > type;
1227.260 +
1227.261 +#else // MSVC7 and below
1227.262 +
1227.263 +    BOOST_STATIC_CONSTANT(std::size_t, msvc_max_size_c = max_size::value);
1227.264 +    BOOST_STATIC_CONSTANT(std::size_t, msvc_max_alignment_c = max_alignment::value);
1227.265 +
1227.266 +    typedef ::boost::aligned_storage<
1227.267 +          msvc_max_size_c
1227.268 +        , msvc_max_alignment_c
1227.269 +        > type;
1227.270 +
1227.271 +#endif // MSVC workaround
1227.272 +
1227.273 +};
1227.274 +
1227.275 +#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
1227.276 +
1227.277 +template<>
1227.278 +struct make_storage<int,int>
1227.279 +{
1227.280 +    typedef int type;
1227.281 +};
1227.282 +
1227.283 +#endif // BOOST_MPL_CFG_MSVC_60_ETI_BUG workaround
1227.284 +
1227.285 +///////////////////////////////////////////////////////////////////////////////
1227.286 +// (detail) class destroyer
1227.287 +//
1227.288 +// Internal visitor that destroys the value it visits.
1227.289 +//
1227.290 +struct destroyer
1227.291 +    : public static_visitor<>
1227.292 +{
1227.293 +public: // visitor interfaces
1227.294 +
1227.295 +    template <typename T>
1227.296 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.297 +    internal_visit(T& operand, int) const
1227.298 +    {
1227.299 +        operand.~T();
1227.300 +
1227.301 +#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0551))
1227.302 +        operand; // suppresses warnings
1227.303 +#endif
1227.304 +
1227.305 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.306 +    }
1227.307 +
1227.308 +};
1227.309 +
1227.310 +///////////////////////////////////////////////////////////////////////////////
1227.311 +// (detail) class template known_get
1227.312 +//
1227.313 +// Visitor that returns a reference to content of the specified type.
1227.314 +//
1227.315 +// Precondition: visited variant MUST contain logical content of type T.
1227.316 +//
1227.317 +template <typename T>
1227.318 +class known_get
1227.319 +    : public static_visitor<T&>
1227.320 +{
1227.321 +
1227.322 +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1227.323 +
1227.324 +public: // visitor interface
1227.325 +
1227.326 +    T& operator()(T& operand) const
1227.327 +    {
1227.328 +        return operand;
1227.329 +    }
1227.330 +
1227.331 +    template <typename U>
1227.332 +    T& operator()(U&) const
1227.333 +    {
1227.334 +        // logical error to be here: see precondition above
1227.335 +        BOOST_ASSERT(false);
1227.336 +        return ::boost::detail::variant::forced_return< T& >();
1227.337 +    }
1227.338 +
1227.339 +#else // MSVC6
1227.340 +
1227.341 +private: // helpers, for visitor interface (below)
1227.342 +
1227.343 +    T& execute(T& operand, mpl::true_) const
1227.344 +    {
1227.345 +        return operand;
1227.346 +    }
1227.347 +
1227.348 +    template <typename U>
1227.349 +    T& execute(U& operand, mpl::false_) const
1227.350 +    {
1227.351 +        // logical error to be here: see precondition above
1227.352 +        BOOST_ASSERT(false);
1227.353 +        return ::boost::detail::variant::forced_return< T& >();
1227.354 +    }
1227.355 +
1227.356 +public: // visitor interface
1227.357 +
1227.358 +    template <typename U>
1227.359 +    T& operator()(U& operand) const
1227.360 +    {
1227.361 +        typedef typename is_same< U,T >::type
1227.362 +            U_is_T;
1227.363 +
1227.364 +        return execute(operand, U_is_T());
1227.365 +    }
1227.366 +
1227.367 +#endif // MSVC6 workaround
1227.368 +
1227.369 +};
1227.370 +
1227.371 +///////////////////////////////////////////////////////////////////////////////
1227.372 +// (detail) class copy_into
1227.373 +//
1227.374 +// Internal visitor that copies the value it visits into the given buffer.
1227.375 +//
1227.376 +class copy_into
1227.377 +    : public static_visitor<>
1227.378 +{
1227.379 +private: // representation
1227.380 +
1227.381 +    void* storage_;
1227.382 +
1227.383 +public: // structors
1227.384 +
1227.385 +    explicit copy_into(void* storage)
1227.386 +        : storage_(storage)
1227.387 +    {
1227.388 +    }
1227.389 +
1227.390 +public: // internal visitor interface
1227.391 +
1227.392 +    template <typename T>
1227.393 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.394 +    internal_visit(boost::detail::variant::backup_holder<T>& operand, long) const
1227.395 +    {
1227.396 +        new(storage_) T( operand.get() );
1227.397 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.398 +    }
1227.399 +
1227.400 +    template <typename T>
1227.401 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.402 +    internal_visit(const boost::detail::variant::backup_holder<T>& operand, long) const
1227.403 +    {
1227.404 +        new(storage_) T( operand.get() );
1227.405 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.406 +    }
1227.407 +
1227.408 +    template <typename T>
1227.409 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.410 +    internal_visit(const T& operand, int) const
1227.411 +    {
1227.412 +        new(storage_) T(operand);
1227.413 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.414 +    }
1227.415 +
1227.416 +};
1227.417 +
1227.418 +///////////////////////////////////////////////////////////////////////////////
1227.419 +// (detail) class assign_storage
1227.420 +//
1227.421 +// Internal visitor that assigns the given storage (which must be a
1227.422 +// constructed value of the same type) to the value it visits.
1227.423 +//
1227.424 +struct assign_storage
1227.425 +    : public static_visitor<>
1227.426 +{
1227.427 +private: // representation
1227.428 +
1227.429 +    const void* rhs_storage_;
1227.430 +
1227.431 +public: // structors
1227.432 +
1227.433 +    explicit assign_storage(const void* rhs_storage)
1227.434 +        : rhs_storage_(rhs_storage)
1227.435 +    {
1227.436 +    }
1227.437 +
1227.438 +public: // internal visitor interfaces
1227.439 +
1227.440 +    template <typename T>
1227.441 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.442 +    internal_visit(backup_holder<T>& lhs_content, long) const
1227.443 +    {
1227.444 +        lhs_content.get()
1227.445 +            = static_cast< const backup_holder<T>* >(rhs_storage_)->get();
1227.446 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.447 +    }
1227.448 +
1227.449 +    template <typename T>
1227.450 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.451 +    internal_visit(const backup_holder<T>& lhs_content, long) const
1227.452 +    {
1227.453 +        lhs_content.get()
1227.454 +            = static_cast< const backup_holder<T>* >(rhs_storage_)->get();
1227.455 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.456 +    }
1227.457 +
1227.458 +    template <typename T>
1227.459 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.460 +    internal_visit(T& lhs_content, int) const
1227.461 +    {
1227.462 +        // NOTE TO USER :
1227.463 +        // Compile error here indicates one of variant's bounded types does
1227.464 +        // not meet the requirements of the Assignable concept. Thus,
1227.465 +        // variant is not Assignable.
1227.466 +        //
1227.467 +        // Hint: Are any of the bounded types const-qualified or references?
1227.468 +        //
1227.469 +        lhs_content = *static_cast< const T* >(rhs_storage_);
1227.470 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.471 +    }
1227.472 +
1227.473 +};
1227.474 +
1227.475 +///////////////////////////////////////////////////////////////////////////////
1227.476 +// (detail) class direct_assigner
1227.477 +//
1227.478 +// Generic static visitor that: if and only if the visited value is of the
1227.479 +// specified type, assigns the given value to the visited value and returns
1227.480 +// true; else returns false.
1227.481 +//
1227.482 +template <typename T>
1227.483 +class direct_assigner
1227.484 +    : public static_visitor<bool>
1227.485 +{
1227.486 +private: // representation
1227.487 +
1227.488 +    T& rhs_;
1227.489 +
1227.490 +public: // structors
1227.491 +
1227.492 +    explicit direct_assigner(T& rhs)
1227.493 +        : rhs_(rhs)
1227.494 +    {
1227.495 +    }
1227.496 +
1227.497 +#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1227.498 +
1227.499 +public: // visitor interface
1227.500 +
1227.501 +    bool operator()(T& lhs)
1227.502 +    {
1227.503 +        lhs = rhs_;
1227.504 +        return true;
1227.505 +    }
1227.506 +
1227.507 +    template <typename U>
1227.508 +    bool operator()(U&)
1227.509 +    {
1227.510 +        return false;
1227.511 +    }
1227.512 +
1227.513 +#else // MSVC6
1227.514 +
1227.515 +private: // helpers, for visitor interface (below)
1227.516 +
1227.517 +    bool execute(T& lhs, mpl::true_)
1227.518 +    {
1227.519 +        lhs = rhs_;
1227.520 +        return true;
1227.521 +    }
1227.522 +
1227.523 +    template <typename U>
1227.524 +    bool execute(U&, mpl::false_)
1227.525 +    {
1227.526 +        return false;
1227.527 +    }
1227.528 +
1227.529 +public: // visitor interface
1227.530 +
1227.531 +    template <typename U>
1227.532 +    bool operator()(U& lhs)
1227.533 +    {
1227.534 +        typedef typename is_same<U,T>::type U_is_T;
1227.535 +        return execute(lhs, U_is_T());
1227.536 +    }
1227.537 +
1227.538 +#endif // MSVC6 workaround
1227.539 +
1227.540 +};
1227.541 +
1227.542 +///////////////////////////////////////////////////////////////////////////////
1227.543 +// (detail) class backup_assigner
1227.544 +//
1227.545 +// Internal visitor that "assigns" the given value to the visited value,
1227.546 +// using backup to recover if the destroy-copy sequence fails.
1227.547 +//
1227.548 +// NOTE: This needs to be a friend of variant, as it needs access to
1227.549 +// indicate_which, indicate_backup_which, etc.
1227.550 +//
1227.551 +template <typename Variant, typename RhsT>
1227.552 +class backup_assigner
1227.553 +    : public static_visitor<>
1227.554 +{
1227.555 +private: // representation
1227.556 +
1227.557 +    Variant& lhs_;
1227.558 +    int rhs_which_;
1227.559 +    const RhsT& rhs_content_;
1227.560 +
1227.561 +public: // structors
1227.562 +
1227.563 +    backup_assigner(Variant& lhs, int rhs_which, const RhsT& rhs_content)
1227.564 +        : lhs_(lhs)
1227.565 +        , rhs_which_(rhs_which)
1227.566 +        , rhs_content_(rhs_content)
1227.567 +    {
1227.568 +    }
1227.569 +
1227.570 +private: // helpers, for visitor interface (below)
1227.571 +
1227.572 +    template <typename LhsT>
1227.573 +    void backup_assign_impl(
1227.574 +          LhsT& lhs_content
1227.575 +        , mpl::true_// has_nothrow_move
1227.576 +        )
1227.577 +    {
1227.578 +        // Move lhs content to backup...
1227.579 +        LhsT backup_lhs_content(
1227.580 +              ::boost::detail::variant::move(lhs_content)
1227.581 +            ); // nothrow
1227.582 +
1227.583 +        // ...destroy lhs content...
1227.584 +        lhs_content.~LhsT(); // nothrow
1227.585 +
1227.586 +        try
1227.587 +        {
1227.588 +            // ...and attempt to copy rhs content into lhs storage:
1227.589 +            new(lhs_.storage_.address()) RhsT(rhs_content_);
1227.590 +        }
1227.591 +        catch (...)
1227.592 +        {
1227.593 +            // In case of failure, restore backup content to lhs storage...
1227.594 +            new(lhs_.storage_.address())
1227.595 +                LhsT(
1227.596 +                      ::boost::detail::variant::move(backup_lhs_content)
1227.597 +                    ); // nothrow
1227.598 +
1227.599 +            // ...and rethrow:
1227.600 +            throw;
1227.601 +        }
1227.602 +
1227.603 +        // In case of success, indicate new content type:
1227.604 +        lhs_.indicate_which(rhs_which_); // nothrow
1227.605 +    }
1227.606 +
1227.607 +    template <typename LhsT>
1227.608 +    void backup_assign_impl(
1227.609 +          LhsT& lhs_content
1227.610 +        , mpl::false_// has_nothrow_move
1227.611 +        )
1227.612 +    {
1227.613 +        // Backup lhs content...
1227.614 +        LhsT* backup_lhs_ptr = new LhsT(lhs_content);
1227.615 +
1227.616 +        // ...destroy lhs content...
1227.617 +        lhs_content.~LhsT(); // nothrow
1227.618 +
1227.619 +        try
1227.620 +        {
1227.621 +            // ...and attempt to copy rhs content into lhs storage:
1227.622 +            new(lhs_.storage_.address()) RhsT(rhs_content_);
1227.623 +        }
1227.624 +        catch (...)
1227.625 +        {
1227.626 +            // In case of failure, copy backup pointer to lhs storage...
1227.627 +            new(lhs_.storage_.address())
1227.628 +                backup_holder<LhsT>( backup_lhs_ptr ); // nothrow
1227.629 +
1227.630 +            // ...indicate now using backup...
1227.631 +            lhs_.indicate_backup_which( lhs_.which() ); // nothrow
1227.632 +
1227.633 +            // ...and rethrow:
1227.634 +            throw;
1227.635 +        }
1227.636 +
1227.637 +        // In case of success, indicate new content type...
1227.638 +        lhs_.indicate_which(rhs_which_); // nothrow
1227.639 +
1227.640 +        // ...and delete backup:
1227.641 +        delete backup_lhs_ptr; // nothrow
1227.642 +    }
1227.643 +
1227.644 +public: // visitor interface
1227.645 +
1227.646 +    template <typename LhsT>
1227.647 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.648 +    internal_visit(LhsT& lhs_content, int)
1227.649 +    {
1227.650 +        typedef typename has_nothrow_move_constructor<LhsT>::type
1227.651 +            nothrow_move;
1227.652 +
1227.653 +        backup_assign_impl( lhs_content, nothrow_move() );
1227.654 +
1227.655 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.656 +    }
1227.657 +
1227.658 +};
1227.659 +
1227.660 +///////////////////////////////////////////////////////////////////////////////
1227.661 +// (detail) class swap_with
1227.662 +//
1227.663 +// Visitor that swaps visited value with content of given variant.
1227.664 +//
1227.665 +// Precondition: Given variant MUST have same logical type as visited value.
1227.666 +//
1227.667 +template <typename Variant>
1227.668 +struct swap_with
1227.669 +    : public static_visitor<>
1227.670 +{
1227.671 +private: // representation
1227.672 +
1227.673 +    Variant& toswap_;
1227.674 +
1227.675 +public: // structors
1227.676 +
1227.677 +    explicit swap_with(Variant& toswap)
1227.678 +        : toswap_(toswap)
1227.679 +    {
1227.680 +    }
1227.681 +
1227.682 +public: // internal visitor interfaces
1227.683 +
1227.684 +    template <typename T>
1227.685 +    void operator()(T& operand) const
1227.686 +    {
1227.687 +        // Since the precondition ensures types are same, get T...
1227.688 +        known_get<T> getter;
1227.689 +        T& other = toswap_.apply_visitor(getter);
1227.690 +
1227.691 +        // ...and swap:
1227.692 +        ::boost::detail::variant::move_swap( operand, other );
1227.693 +    }
1227.694 +
1227.695 +};
1227.696 +
1227.697 +///////////////////////////////////////////////////////////////////////////////
1227.698 +// (detail) class reflect
1227.699 +//
1227.700 +// Generic static visitor that performs a typeid on the value it visits.
1227.701 +//
1227.702 +class reflect
1227.703 +    : public static_visitor<const std::type_info&>
1227.704 +{
1227.705 +public: // visitor interfaces
1227.706 +
1227.707 +    template <typename T>
1227.708 +    const std::type_info& operator()(const T&) const
1227.709 +    {
1227.710 +        return typeid(T);
1227.711 +    }
1227.712 +
1227.713 +};
1227.714 +
1227.715 +///////////////////////////////////////////////////////////////////////////////
1227.716 +// (detail) class comparer
1227.717 +//
1227.718 +// Generic static visitor that compares the content of the given lhs variant
1227.719 +// with the visited rhs content using Comp.
1227.720 +//
1227.721 +// Precondition: lhs.which() == rhs.which()
1227.722 +//
1227.723 +template <typename Variant, typename Comp>
1227.724 +class comparer
1227.725 +    : public static_visitor<bool>
1227.726 +{
1227.727 +private: // representation
1227.728 +
1227.729 +    const Variant& lhs_;
1227.730 +
1227.731 +public: // structors
1227.732 +
1227.733 +    explicit comparer(const Variant& lhs)
1227.734 +        : lhs_(lhs)
1227.735 +    {
1227.736 +    }
1227.737 +
1227.738 +public: // visitor interfaces
1227.739 +
1227.740 +    template <typename T>
1227.741 +    bool operator()(const T& rhs_content) const
1227.742 +    {
1227.743 +        // Since the precondition ensures lhs and rhs types are same, get T...
1227.744 +        known_get<const T> getter;
1227.745 +        const T& lhs_content = lhs_.apply_visitor(getter);
1227.746 +
1227.747 +        // ...and compare lhs and rhs contents:
1227.748 +        return Comp()(lhs_content, rhs_content);
1227.749 +    }
1227.750 +
1227.751 +};
1227.752 +
1227.753 +///////////////////////////////////////////////////////////////////////////////
1227.754 +// (detail) class equal_comp
1227.755 +//
1227.756 +// Generic function object compares lhs with rhs using operator==.
1227.757 +//
1227.758 +struct equal_comp
1227.759 +{
1227.760 +    template <typename T>
1227.761 +    bool operator()(const T& lhs, const T& rhs) const
1227.762 +    {
1227.763 +        return lhs == rhs;
1227.764 +    }
1227.765 +};
1227.766 +
1227.767 +///////////////////////////////////////////////////////////////////////////////
1227.768 +// (detail) class less_comp
1227.769 +//
1227.770 +// Generic function object compares lhs with rhs using operator<.
1227.771 +//
1227.772 +struct less_comp
1227.773 +{
1227.774 +    template <typename T>
1227.775 +    bool operator()(const T& lhs, const T& rhs) const
1227.776 +    {
1227.777 +        return lhs < rhs;
1227.778 +    }
1227.779 +};
1227.780 +
1227.781 +///////////////////////////////////////////////////////////////////////////////
1227.782 +// (detail) class template invoke_visitor
1227.783 +//
1227.784 +// Internal visitor that invokes the given visitor using:
1227.785 +//  * for wrappers (e.g., recursive_wrapper), the wrapper's held value.
1227.786 +//  * for all other values, the value itself.
1227.787 +//
1227.788 +template <typename Visitor>
1227.789 +class invoke_visitor
1227.790 +{
1227.791 +private: // representation
1227.792 +
1227.793 +    Visitor& visitor_;
1227.794 +
1227.795 +public: // visitor typedefs
1227.796 +
1227.797 +    typedef typename Visitor::result_type
1227.798 +        result_type;
1227.799 +
1227.800 +public: // structors
1227.801 +
1227.802 +    explicit invoke_visitor(Visitor& visitor)
1227.803 +        : visitor_(visitor)
1227.804 +    {
1227.805 +    }
1227.806 +
1227.807 +#if !defined(BOOST_NO_VOID_RETURNS)
1227.808 +
1227.809 +public: // internal visitor interfaces
1227.810 +
1227.811 +    template <typename T>
1227.812 +    result_type internal_visit(T& operand, int)
1227.813 +    {
1227.814 +        return visitor_(operand);
1227.815 +    }
1227.816 +
1227.817 +#   if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564))
1227.818 +    template <typename T>
1227.819 +    result_type internal_visit(const T& operand, int)
1227.820 +    {
1227.821 +        return visitor_(operand);
1227.822 +    }
1227.823 +#   endif
1227.824 +
1227.825 +#else // defined(BOOST_NO_VOID_RETURNS)
1227.826 +
1227.827 +private: // helpers, for internal visitor interfaces (below)
1227.828 +
1227.829 +    template <typename T>
1227.830 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.831 +    visit_impl(T& operand, mpl::false_)
1227.832 +    {
1227.833 +        return visitor_(operand);
1227.834 +    }
1227.835 +
1227.836 +    template <typename T>
1227.837 +        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.838 +    visit_impl(T& operand, mpl::true_)
1227.839 +    {
1227.840 +        visitor_(operand);
1227.841 +        BOOST_VARIANT_AUX_RETURN_VOID;
1227.842 +    }
1227.843 +
1227.844 +public: // internal visitor interfaces
1227.845 +
1227.846 +    template <typename T>
1227.847 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.848 +    internal_visit(T& operand, int)
1227.849 +    {
1227.850 +        typedef typename is_same<result_type, void>::type
1227.851 +            has_void_result_type;
1227.852 +
1227.853 +        return visit_impl(operand, has_void_result_type());
1227.854 +    }
1227.855 +
1227.856 +#endif // BOOST_NO_VOID_RETURNS) workaround
1227.857 +
1227.858 +public: // internal visitor interfaces, cont.
1227.859 +
1227.860 +    template <typename T>
1227.861 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.862 +    internal_visit(boost::recursive_wrapper<T>& operand, long)
1227.863 +    {
1227.864 +        return internal_visit( operand.get(), 1L );
1227.865 +    }
1227.866 +
1227.867 +    template <typename T>
1227.868 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.869 +    internal_visit(const boost::recursive_wrapper<T>& operand, long)
1227.870 +    {
1227.871 +        return internal_visit( operand.get(), 1L );
1227.872 +    }
1227.873 +
1227.874 +    template <typename T>
1227.875 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.876 +    internal_visit(boost::detail::reference_content<T>& operand, long)
1227.877 +    {
1227.878 +        return internal_visit( operand.get(), 1L );
1227.879 +    }
1227.880 +
1227.881 +    template <typename T>
1227.882 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.883 +    internal_visit(const boost::detail::reference_content<T>& operand, long)
1227.884 +    {
1227.885 +        return internal_visit( operand.get(), 1L );
1227.886 +    }
1227.887 +
1227.888 +    template <typename T>
1227.889 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.890 +    internal_visit(boost::detail::variant::backup_holder<T>& operand, long)
1227.891 +    {
1227.892 +        return internal_visit( operand.get(), 1L );
1227.893 +    }
1227.894 +
1227.895 +    template <typename T>
1227.896 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1227.897 +    internal_visit(const boost::detail::variant::backup_holder<T>& operand, long)
1227.898 +    {
1227.899 +        return internal_visit( operand.get(), 1L );
1227.900 +    }
1227.901 +
1227.902 +};
1227.903 +
1227.904 +}} // namespace detail::variant
1227.905 +
1227.906 +///////////////////////////////////////////////////////////////////////////////
1227.907 +// class template variant (concept inspired by Andrei Alexandrescu)
1227.908 +//
1227.909 +// See docs and boost/variant/variant_fwd.hpp for more information.
1227.910 +//
1227.911 +template <
1227.912 +      typename T0_
1227.913 +    , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T)
1227.914 +    >
1227.915 +class variant
1227.916 +{
1227.917 +private: // helpers, for typedefs (below)
1227.918 +
1227.919 +    typedef variant wknd_self_t;
1227.920 +
1227.921 +    struct is_recursive_
1227.922 +        : detail::variant::is_recursive_flag<T0_>
1227.923 +    {
1227.924 +    };
1227.925 +
1227.926 +    typedef typename mpl::eval_if<
1227.927 +          is_recursive_
1227.928 +        , T0_
1227.929 +        , mpl::identity< T0_ >
1227.930 +        >::type unwrapped_T0_;
1227.931 +
1227.932 +    struct is_sequence_based_
1227.933 +        : detail::variant::is_over_sequence<unwrapped_T0_>
1227.934 +    {
1227.935 +    };
1227.936 +
1227.937 +#if !defined(BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT)
1227.938 +
1227.939 +private: // helpers, for typedefs (below)
1227.940 +
1227.941 +    typedef typename mpl::eval_if<
1227.942 +          is_sequence_based_
1227.943 +        , unwrapped_T0_ // over_sequence<...>::type
1227.944 +        , detail::variant::make_variant_list<
1227.945 +              unwrapped_T0_
1227.946 +            , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T)
1227.947 +            >
1227.948 +        >::type specified_types;
1227.949 +
1227.950 +    BOOST_STATIC_ASSERT((
1227.951 +          ::boost::mpl::not_< mpl::empty<specified_types> >::value
1227.952 +        ));
1227.953 +
1227.954 +    typedef typename mpl::eval_if<
1227.955 +          is_recursive_
1227.956 +        , mpl::transform<
1227.957 +              specified_types
1227.958 +            , mpl::protect<
1227.959 +                  detail::variant::quoted_enable_recursive<wknd_self_t>
1227.960 +                >
1227.961 +            >
1227.962 +        , mpl::identity< specified_types >
1227.963 +        >::type recursive_enabled_types;
1227.964 +
1227.965 +public: // public typedefs
1227.966 +
1227.967 +    typedef typename mpl::transform<
1227.968 +          recursive_enabled_types
1227.969 +        , unwrap_recursive<mpl::_1>
1227.970 +        >::type types;
1227.971 +
1227.972 +private: // internal typedefs
1227.973 +
1227.974 +    typedef typename mpl::transform<
1227.975 +          recursive_enabled_types
1227.976 +        , mpl::protect< detail::make_reference_content<> >
1227.977 +        >::type internal_types;
1227.978 +
1227.979 +    typedef typename mpl::front<
1227.980 +          internal_types
1227.981 +        >::type internal_T0;
1227.982 +
1227.983 +#else // defined(BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT)
1227.984 +
1227.985 +private: // helpers, for typedefs (below)
1227.986 +
1227.987 +    typedef unwrapped_T0_ T0;
1227.988 +
1227.989 +    #define BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS(z,N,_) \
1227.990 +        typedef typename mpl::eval_if< \
1227.991 +              is_recursive_ \
1227.992 +            , detail::variant::enable_recursive< \
1227.993 +                  BOOST_PP_CAT(T,N) \
1227.994 +                , wknd_self_t \
1227.995 +                > \
1227.996 +            , mpl::identity< BOOST_PP_CAT(T,N) > \
1227.997 +            >::type BOOST_PP_CAT(recursive_enabled_T,N); \
1227.998 +        /**/
1227.999 +
1227.1000 +    BOOST_PP_REPEAT(
1227.1001 +          BOOST_VARIANT_LIMIT_TYPES
1227.1002 +        , BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS
1227.1003 +        , _
1227.1004 +        )
1227.1005 +
1227.1006 +    #undef BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS
1227.1007 +
1227.1008 +    #define BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS(z,N,_) \
1227.1009 +        typedef typename unwrap_recursive< \
1227.1010 +              BOOST_PP_CAT(recursive_enabled_T,N) \
1227.1011 +            >::type BOOST_PP_CAT(public_T,N); \
1227.1012 +        /**/
1227.1013 +
1227.1014 +    BOOST_PP_REPEAT(
1227.1015 +          BOOST_VARIANT_LIMIT_TYPES
1227.1016 +        , BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS
1227.1017 +        , _
1227.1018 +        )
1227.1019 +
1227.1020 +    #undef BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS
1227.1021 +
1227.1022 +public: // public typedefs
1227.1023 +
1227.1024 +    typedef typename detail::variant::make_variant_list<
1227.1025 +          BOOST_VARIANT_ENUM_PARAMS(public_T)
1227.1026 +        >::type types;
1227.1027 +
1227.1028 +private: // helpers, for internal typedefs (below)
1227.1029 +
1227.1030 +    #define BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS(z,N,_) \
1227.1031 +        typedef detail::make_reference_content< \
1227.1032 +              BOOST_PP_CAT(recursive_enabled_T,N) \
1227.1033 +            >::type BOOST_PP_CAT(internal_T,N); \
1227.1034 +        /**/
1227.1035 +
1227.1036 +    BOOST_PP_REPEAT(
1227.1037 +          BOOST_VARIANT_LIMIT_TYPES
1227.1038 +        , BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS
1227.1039 +        , _
1227.1040 +        )
1227.1041 +
1227.1042 +    #undef BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS
1227.1043 +
1227.1044 +private: // internal typedefs
1227.1045 +
1227.1046 +    typedef typename detail::variant::make_variant_list<
1227.1047 +          BOOST_VARIANT_ENUM_PARAMS(internal_T)
1227.1048 +        >::type internal_types;
1227.1049 +
1227.1050 +private: // static precondition assertions
1227.1051 +
1227.1052 +    // NOTE TO USER :
1227.1053 +    // variant< type-sequence > syntax is not supported on this compiler!
1227.1054 +    //
1227.1055 +    BOOST_MPL_ASSERT_NOT(( is_sequence_based_ ));
1227.1056 +
1227.1057 +#endif // BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT workaround
1227.1058 +
1227.1059 +private: // helpers, for representation (below)
1227.1060 +
1227.1061 +    typedef typename detail::variant::find_fallback_type<
1227.1062 +          internal_types
1227.1063 +        >::type fallback_type_result_;
1227.1064 +
1227.1065 +    typedef typename fallback_type_result_::first
1227.1066 +        fallback_type_index_;
1227.1067 +    typedef typename fallback_type_result_::second
1227.1068 +        fallback_type_;
1227.1069 +
1227.1070 +    struct has_fallback_type_
1227.1071 +        : mpl::not_<
1227.1072 +              is_same< fallback_type_, detail::variant::no_fallback_type >
1227.1073 +            >
1227.1074 +    {
1227.1075 +    };
1227.1076 +
1227.1077 +    typedef has_fallback_type_
1227.1078 +        never_uses_backup_flag;
1227.1079 +
1227.1080 +    typedef typename detail::variant::make_storage<
1227.1081 +          internal_types, never_uses_backup_flag
1227.1082 +        >::type storage_t;
1227.1083 +
1227.1084 +private: // helpers, for representation (below)
1227.1085 +
1227.1086 +    // which_ on:
1227.1087 +    // * [0,  size<internal_types>) indicates stack content
1227.1088 +    // * [-size<internal_types>, 0) indicates pointer to heap backup
1227.1089 +    // if which_ >= 0:
1227.1090 +    // * then which() -> which_
1227.1091 +    // * else which() -> -(which_ + 1)
1227.1092 +
1227.1093 +#if !defined(BOOST_VARIANT_MINIMIZE_SIZE)
1227.1094 +
1227.1095 +    typedef int which_t;
1227.1096 +
1227.1097 +#else // defined(BOOST_VARIANT_MINIMIZE_SIZE)
1227.1098 +
1227.1099 +    // [if O1_size available, then attempt which_t size optimization...]
1227.1100 +    // [select signed char if fewer than SCHAR_MAX types, else signed int:]
1227.1101 +    typedef typename mpl::eval_if<
1227.1102 +          mpl::equal_to< mpl::O1_size<internal_types>, mpl::long_<-1> >
1227.1103 +        , mpl::identity< int >
1227.1104 +        , mpl::if_<
1227.1105 +              mpl::less< mpl::O1_size<internal_types>, mpl::int_<SCHAR_MAX> >
1227.1106 +            , signed char
1227.1107 +            , int
1227.1108 +            >
1227.1109 +        >::type which_t;
1227.1110 +
1227.1111 +#endif // BOOST_VARIANT_MINIMIZE_SIZE switch
1227.1112 +
1227.1113 +// representation -- private when possible
1227.1114 +#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1227.1115 +    private:
1227.1116 +#else
1227.1117 +    public:
1227.1118 +#endif
1227.1119 +
1227.1120 +    which_t which_;
1227.1121 +    storage_t storage_;
1227.1122 +
1227.1123 +    void indicate_which(int which)
1227.1124 +    {
1227.1125 +        which_ = static_cast<which_t>( which );
1227.1126 +    }
1227.1127 +
1227.1128 +    void indicate_backup_which(int which)
1227.1129 +    {
1227.1130 +        which_ = static_cast<which_t>( -(which + 1) );
1227.1131 +    }
1227.1132 +
1227.1133 +private: // helpers, for queries (below)
1227.1134 +
1227.1135 +    bool using_backup() const
1227.1136 +    {
1227.1137 +        return which_ < 0;
1227.1138 +    }
1227.1139 +
1227.1140 +public: // queries
1227.1141 +
1227.1142 +    int which() const
1227.1143 +    {
1227.1144 +        // If using heap backup...
1227.1145 +        if (using_backup())
1227.1146 +            // ...then return adjusted which_:
1227.1147 +            return -(which_ + 1);
1227.1148 +
1227.1149 +        // Otherwise, return which_ directly:
1227.1150 +        return which_;
1227.1151 +    }
1227.1152 +
1227.1153 +private: // helpers, for structors (below)
1227.1154 +
1227.1155 +    struct initializer
1227.1156 +        : BOOST_VARIANT_AUX_INITIALIZER_T(
1227.1157 +              recursive_enabled_types, recursive_enabled_T
1227.1158 +            )
1227.1159 +    {
1227.1160 +    };
1227.1161 +
1227.1162 +    void destroy_content()
1227.1163 +    {
1227.1164 +        detail::variant::destroyer visitor;
1227.1165 +        this->internal_apply_visitor(visitor);
1227.1166 +    }
1227.1167 +
1227.1168 +public: // structors
1227.1169 +
1227.1170 +    ~variant()
1227.1171 +    {
1227.1172 +        destroy_content();
1227.1173 +    }
1227.1174 +
1227.1175 +    variant()
1227.1176 +    {
1227.1177 +        // NOTE TO USER :
1227.1178 +        // Compile error from here indicates that the first bound
1227.1179 +        // type is not default-constructible, and so variant cannot
1227.1180 +        // support its own default-construction.
1227.1181 +        //
1227.1182 +        new( storage_.address() ) internal_T0();
1227.1183 +        indicate_which(0); // zero is the index of the first bounded type
1227.1184 +    }
1227.1185 +
1227.1186 +private: // helpers, for structors, cont. (below)
1227.1187 +
1227.1188 +    class convert_copy_into
1227.1189 +        : public static_visitor<int>
1227.1190 +    {
1227.1191 +    private: // representation
1227.1192 +
1227.1193 +        void* storage_;
1227.1194 +
1227.1195 +    public: // structors
1227.1196 +
1227.1197 +        explicit convert_copy_into(void* storage)
1227.1198 +            : storage_(storage)
1227.1199 +        {
1227.1200 +        }
1227.1201 +
1227.1202 +    public: // internal visitor interfaces (below)
1227.1203 +
1227.1204 +        template <typename T>
1227.1205 +        int internal_visit(T& operand, int) const
1227.1206 +        {
1227.1207 +            // NOTE TO USER :
1227.1208 +            // Compile error here indicates one of the source variant's types 
1227.1209 +            // cannot be unambiguously converted to the destination variant's
1227.1210 +            // types (or that no conversion exists).
1227.1211 +            //
1227.1212 +            return initializer::initialize(storage_, operand);
1227.1213 +        }
1227.1214 +
1227.1215 +#   if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564))
1227.1216 +        template <typename T>
1227.1217 +        result_type internal_visit(const T& operand, int) const
1227.1218 +        {
1227.1219 +            return initializer::initialize(storage_, operand);
1227.1220 +        }
1227.1221 +#   endif
1227.1222 +
1227.1223 +        template <typename T>
1227.1224 +        int internal_visit(boost::detail::reference_content<T>& operand, long) const
1227.1225 +        {
1227.1226 +            return internal_visit( operand.get(), 1L );
1227.1227 +        }
1227.1228 +
1227.1229 +        template <typename T>
1227.1230 +        int internal_visit(const boost::detail::reference_content<T>& operand, long) const
1227.1231 +        {
1227.1232 +            return internal_visit( operand.get(), 1L );
1227.1233 +        }
1227.1234 +
1227.1235 +        template <typename T>
1227.1236 +        int internal_visit(boost::detail::variant::backup_holder<T>& operand, long) const
1227.1237 +        {
1227.1238 +            return internal_visit( operand.get(), 1L );
1227.1239 +        }
1227.1240 +
1227.1241 +        template <typename T>
1227.1242 +        int internal_visit(const boost::detail::variant::backup_holder<T>& operand, long) const
1227.1243 +        {
1227.1244 +            return internal_visit( operand.get(), 1L );
1227.1245 +        }
1227.1246 +
1227.1247 +        template <typename T>
1227.1248 +        int internal_visit(boost::recursive_wrapper<T>& operand, long) const
1227.1249 +        {
1227.1250 +            return internal_visit( operand.get(), 1L );
1227.1251 +        }
1227.1252 +
1227.1253 +        template <typename T>
1227.1254 +        int internal_visit(const boost::recursive_wrapper<T>& operand, long) const
1227.1255 +        {
1227.1256 +            return internal_visit( operand.get(), 1L );
1227.1257 +        }
1227.1258 +
1227.1259 +    };
1227.1260 +
1227.1261 +    friend class convert_copy_into;
1227.1262 +
1227.1263 +private: // helpers, for structors, below 
1227.1264 +
1227.1265 +    template <typename T>
1227.1266 +    void convert_construct(
1227.1267 +          T& operand
1227.1268 +        , int
1227.1269 +        , mpl::false_ = mpl::false_() // is_foreign_variant
1227.1270 +        )
1227.1271 +    {
1227.1272 +        // NOTE TO USER :
1227.1273 +        // Compile error here indicates that the given type is not 
1227.1274 +        // unambiguously convertible to one of the variant's types
1227.1275 +        // (or that no conversion exists).
1227.1276 +        //
1227.1277 +        indicate_which(
1227.1278 +              initializer::initialize(
1227.1279 +                  storage_.address()
1227.1280 +                , operand
1227.1281 +                )
1227.1282 +            );
1227.1283 +    }
1227.1284 +
1227.1285 +    template <typename Variant>
1227.1286 +    void convert_construct(
1227.1287 +          Variant& operand
1227.1288 +        , long
1227.1289 +        , mpl::true_// is_foreign_variant
1227.1290 +        )
1227.1291 +    {
1227.1292 +        convert_copy_into visitor(storage_.address());
1227.1293 +        indicate_which(
1227.1294 +              operand.internal_apply_visitor(visitor)
1227.1295 +            );
1227.1296 +    }
1227.1297 +
1227.1298 +    template <typename Variant>
1227.1299 +    void convert_construct_variant(Variant& operand)
1227.1300 +    {
1227.1301 +        // [Determine if the given variant is itself a bounded type, or if its
1227.1302 +        //  content needs to be converted (i.e., it is a 'foreign' variant):]
1227.1303 +        //
1227.1304 +
1227.1305 +        typedef typename mpl::find_if<
1227.1306 +              types
1227.1307 +            , is_same<
1227.1308 +                  add_const<mpl::_1>
1227.1309 +                , const Variant
1227.1310 +                >
1227.1311 +            >::type found_it;
1227.1312 +
1227.1313 +        typedef typename mpl::end<types>::type not_found;
1227.1314 +        typedef typename is_same<
1227.1315 +              found_it, not_found
1227.1316 +            >::type is_foreign_variant;
1227.1317 +
1227.1318 +        // Convert construct from operand:
1227.1319 +        convert_construct(
1227.1320 +              operand, 1L
1227.1321 +            , is_foreign_variant()
1227.1322 +            );
1227.1323 +    }
1227.1324 +
1227.1325 +    template <BOOST_VARIANT_ENUM_PARAMS(typename U)>
1227.1326 +    void convert_construct(
1227.1327 +          boost::variant<BOOST_VARIANT_ENUM_PARAMS(U)>& operand
1227.1328 +        , long
1227.1329 +        )
1227.1330 +    {
1227.1331 +        convert_construct_variant(operand);
1227.1332 +    }
1227.1333 +
1227.1334 +    template <BOOST_VARIANT_ENUM_PARAMS(typename U)>
1227.1335 +    void convert_construct(
1227.1336 +          const boost::variant<BOOST_VARIANT_ENUM_PARAMS(U)>& operand
1227.1337 +        , long
1227.1338 +        )
1227.1339 +    {
1227.1340 +        convert_construct_variant(operand);    
1227.1341 +    }
1227.1342 +
1227.1343 +public: // structors, cont.
1227.1344 +
1227.1345 +#if !defined(BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING)
1227.1346 +
1227.1347 +    template <typename T>
1227.1348 +    variant(const T& operand)
1227.1349 +    {
1227.1350 +        convert_construct(operand, 1L);
1227.1351 +    }
1227.1352 +
1227.1353 +    template <typename T>
1227.1354 +    variant(T& operand)
1227.1355 +    {
1227.1356 +        convert_construct(operand, 1L);
1227.1357 +    }
1227.1358 +
1227.1359 +#elif defined(BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND)
1227.1360 +
1227.1361 +    // For compilers that cannot distinguish between T& and const T& in
1227.1362 +    // template constructors, but do fully support SFINAE, we can workaround:
1227.1363 +
1227.1364 +    template <typename T>
1227.1365 +    variant(const T& operand)
1227.1366 +    {
1227.1367 +        convert_construct(operand, 1L);
1227.1368 +    }
1227.1369 +
1227.1370 +    template <typename T>
1227.1371 +    variant(
1227.1372 +          T& operand
1227.1373 +        , typename enable_if<
1227.1374 +              mpl::not_< is_const<T> >
1227.1375 +            , void
1227.1376 +            >::type* = 0
1227.1377 +        )
1227.1378 +    {
1227.1379 +        convert_construct(operand, 1L);
1227.1380 +    }
1227.1381 +
1227.1382 +#else // !defined(BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND)
1227.1383 +
1227.1384 +    // For compilers that cannot distinguish between T& and const T& in
1227.1385 +    // template constructors, and do NOT support SFINAE, we can't workaround:
1227.1386 +
1227.1387 +    template <typename T>
1227.1388 +    variant(const T& operand)
1227.1389 +    {
1227.1390 +        convert_construct(operand, 1L);
1227.1391 +    }
1227.1392 +
1227.1393 +#endif // BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING workarounds
1227.1394 +
1227.1395 +public: // structors, cont.
1227.1396 +
1227.1397 +    // [MSVC6 requires copy constructor appear after template constructors]
1227.1398 +    variant(const variant& operand)
1227.1399 +    {
1227.1400 +        // Copy the value of operand into *this...
1227.1401 +        detail::variant::copy_into visitor( storage_.address() );
1227.1402 +        operand.internal_apply_visitor(visitor);
1227.1403 +
1227.1404 +        // ...and activate the *this's primary storage on success:
1227.1405 +        indicate_which(operand.which());
1227.1406 +    }
1227.1407 +
1227.1408 +private: // helpers, for modifiers (below)
1227.1409 +
1227.1410 +#   if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1227.1411 +    template <typename Variant, typename RhsT>
1227.1412 +    friend class detail::variant::backup_assigner;
1227.1413 +#   endif
1227.1414 +
1227.1415 +    // class assigner
1227.1416 +    //
1227.1417 +    // Internal visitor that "assigns" the visited value to the given variant
1227.1418 +    // by appropriate destruction and copy-construction.
1227.1419 +    //
1227.1420 +
1227.1421 +    class assigner
1227.1422 +        : public static_visitor<>
1227.1423 +    {
1227.1424 +    private: // representation
1227.1425 +
1227.1426 +        variant& lhs_;
1227.1427 +        int rhs_which_;
1227.1428 +
1227.1429 +    public: // structors
1227.1430 +
1227.1431 +        assigner(variant& lhs, int rhs_which)
1227.1432 +            : lhs_(lhs)
1227.1433 +            , rhs_which_(rhs_which)
1227.1434 +        {
1227.1435 +        }
1227.1436 +
1227.1437 +    private: // helpers, for internal visitor interface (below)
1227.1438 +
1227.1439 +        template <typename RhsT, typename B1, typename B2>
1227.1440 +        void assign_impl(
1227.1441 +              const RhsT& rhs_content
1227.1442 +            , mpl::true_// has_nothrow_copy
1227.1443 +            , B1// has_nothrow_move_constructor
1227.1444 +            , B2// has_fallback_type
1227.1445 +            )
1227.1446 +        {
1227.1447 +            // Destroy lhs's content...
1227.1448 +            lhs_.destroy_content(); // nothrow
1227.1449 +
1227.1450 +            // ...copy rhs content into lhs's storage...
1227.1451 +            new(lhs_.storage_.address())
1227.1452 +                RhsT( rhs_content ); // nothrow
1227.1453 +
1227.1454 +            // ...and indicate new content type:
1227.1455 +            lhs_.indicate_which(rhs_which_); // nothrow
1227.1456 +        }
1227.1457 +
1227.1458 +        template <typename RhsT, typename B>
1227.1459 +        void assign_impl(
1227.1460 +              const RhsT& rhs_content
1227.1461 +            , mpl::false_// has_nothrow_copy
1227.1462 +            , mpl::true_// has_nothrow_move_constructor
1227.1463 +            , B// has_fallback_type
1227.1464 +            )
1227.1465 +        {
1227.1466 +            // Attempt to make a temporary copy (so as to move it below)...
1227.1467 +            RhsT temp(rhs_content);
1227.1468 +
1227.1469 +            // ...and upon success destroy lhs's content...
1227.1470 +            lhs_.destroy_content(); // nothrow
1227.1471 +
1227.1472 +            // ...move the temporary copy into lhs's storage...
1227.1473 +            new(lhs_.storage_.address())
1227.1474 +                RhsT( detail::variant::move(temp) ); // nothrow
1227.1475 +
1227.1476 +            // ...and indicate new content type:
1227.1477 +            lhs_.indicate_which(rhs_which_); // nothrow
1227.1478 +        }
1227.1479 +
1227.1480 +        template <typename RhsT>
1227.1481 +        void assign_impl(
1227.1482 +              const RhsT& rhs_content
1227.1483 +            , mpl::false_// has_nothrow_copy
1227.1484 +            , mpl::false_// has_nothrow_move_constructor
1227.1485 +            , mpl::true_// has_fallback_type
1227.1486 +            )
1227.1487 +        {
1227.1488 +            // Destroy lhs's content...
1227.1489 +            lhs_.destroy_content(); // nothrow
1227.1490 +
1227.1491 +            try
1227.1492 +            {
1227.1493 +                // ...and attempt to copy rhs's content into lhs's storage:
1227.1494 +                new(lhs_.storage_.address())
1227.1495 +                    RhsT( rhs_content );
1227.1496 +            }
1227.1497 +            catch (...)
1227.1498 +            {
1227.1499 +                // In case of failure, default-construct fallback type in lhs's storage...
1227.1500 +                new (lhs_.storage_.address())
1227.1501 +                    fallback_type_; // nothrow
1227.1502 +
1227.1503 +                // ...indicate construction of fallback type...
1227.1504 +                lhs_.indicate_which(
1227.1505 +                      BOOST_MPL_AUX_VALUE_WKND(fallback_type_index_)::value
1227.1506 +                    ); // nothrow
1227.1507 +
1227.1508 +                // ...and rethrow:
1227.1509 +                throw;
1227.1510 +            }
1227.1511 +
1227.1512 +            // In the event of success, indicate new content type:
1227.1513 +            lhs_.indicate_which(rhs_which_); // nothrow
1227.1514 +        }
1227.1515 +
1227.1516 +        template <typename RhsT>
1227.1517 +        void assign_impl(
1227.1518 +              const RhsT& rhs_content
1227.1519 +            , mpl::false_// has_nothrow_copy
1227.1520 +            , mpl::false_// has_nothrow_move_constructor
1227.1521 +            , mpl::false_// has_fallback_type
1227.1522 +            )
1227.1523 +        {
1227.1524 +            detail::variant::backup_assigner<wknd_self_t, RhsT>
1227.1525 +                visitor(lhs_, rhs_which_, rhs_content);
1227.1526 +            lhs_.internal_apply_visitor(visitor);
1227.1527 +        }
1227.1528 +
1227.1529 +    public: // internal visitor interfaces
1227.1530 +
1227.1531 +        template <typename RhsT>
1227.1532 +            BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1227.1533 +        internal_visit(const RhsT& rhs_content, int)
1227.1534 +        {
1227.1535 +            typedef typename has_nothrow_copy<RhsT>::type
1227.1536 +                nothrow_copy;
1227.1537 +            typedef typename mpl::or_< // reduces compile-time
1227.1538 +                  nothrow_copy
1227.1539 +                , detail::variant::has_nothrow_move_constructor<RhsT>
1227.1540 +                >::type nothrow_move_constructor;
1227.1541 +
1227.1542 +            assign_impl(
1227.1543 +                  rhs_content
1227.1544 +                , nothrow_copy()
1227.1545 +                , nothrow_move_constructor()
1227.1546 +                , has_fallback_type_()
1227.1547 +                );
1227.1548 +
1227.1549 +            BOOST_VARIANT_AUX_RETURN_VOID;
1227.1550 +        }
1227.1551 +
1227.1552 +    };
1227.1553 +
1227.1554 +    friend class assigner;
1227.1555 +
1227.1556 +    void variant_assign(const variant& rhs)
1227.1557 +    {
1227.1558 +        // If the contained types are EXACTLY the same...
1227.1559 +        if (which_ == rhs.which_)
1227.1560 +        {
1227.1561 +            // ...then assign rhs's storage to lhs's content:
1227.1562 +            detail::variant::assign_storage visitor(rhs.storage_.address());
1227.1563 +            this->internal_apply_visitor(visitor);
1227.1564 +        }
1227.1565 +        else
1227.1566 +        {
1227.1567 +            // Otherwise, perform general (copy-based) variant assignment:
1227.1568 +            assigner visitor(*this, rhs.which());
1227.1569 +            rhs.internal_apply_visitor(visitor); 
1227.1570 +        }
1227.1571 +    }
1227.1572 +
1227.1573 +private: // helpers, for modifiers (below)
1227.1574 +
1227.1575 +    template <typename T>
1227.1576 +    void assign(const T& rhs)
1227.1577 +    {
1227.1578 +        // If direct T-to-T assignment is not possible...
1227.1579 +        detail::variant::direct_assigner<const T> direct_assign(rhs);
1227.1580 +        if (this->apply_visitor(direct_assign) == false)
1227.1581 +        {
1227.1582 +            // ...then convert rhs to variant and assign:
1227.1583 +            //
1227.1584 +            // While potentially inefficient, the following construction of a
1227.1585 +            // variant allows T as any type convertible to one of the bounded
1227.1586 +            // types without excessive code redundancy.
1227.1587 +            //
1227.1588 +            variant temp(rhs);
1227.1589 +            variant_assign( detail::variant::move(temp) );
1227.1590 +        }
1227.1591 +    }
1227.1592 +
1227.1593 +public: // modifiers
1227.1594 +
1227.1595 +    template <typename T>
1227.1596 +    variant& operator=(const T& rhs)
1227.1597 +    {
1227.1598 +        assign(rhs);
1227.1599 +        return *this;
1227.1600 +    }
1227.1601 +
1227.1602 +    // [MSVC6 requires copy assign appear after templated operator=]
1227.1603 +    variant& operator=(const variant& rhs)
1227.1604 +    {
1227.1605 +        variant_assign(rhs);
1227.1606 +        return *this;
1227.1607 +    }
1227.1608 +
1227.1609 +    void swap(variant& rhs)
1227.1610 +    {
1227.1611 +        // If the contained types are the same...
1227.1612 +        if (which() == rhs.which())
1227.1613 +        {
1227.1614 +            // ...then swap the values directly:
1227.1615 +            detail::variant::swap_with<variant> visitor(rhs);
1227.1616 +            this->apply_visitor(visitor);
1227.1617 +        }
1227.1618 +        else
1227.1619 +        {
1227.1620 +            // ...otherwise, perform general variant swap:
1227.1621 +            variant tmp( detail::variant::move(rhs) );
1227.1622 +            rhs = detail::variant::move(*this);
1227.1623 +            *this = detail::variant::move(tmp);
1227.1624 +        }
1227.1625 +    }
1227.1626 +
1227.1627 +public: // queries
1227.1628 +
1227.1629 +    //
1227.1630 +    // NOTE: member which() defined above.
1227.1631 +    //
1227.1632 +
1227.1633 +    bool empty() const
1227.1634 +    {
1227.1635 +        return false;
1227.1636 +    }
1227.1637 +
1227.1638 +    const std::type_info& type() const
1227.1639 +    {
1227.1640 +        detail::variant::reflect visitor;
1227.1641 +        return this->apply_visitor(visitor);
1227.1642 +    }
1227.1643 +
1227.1644 +public: // prevent comparison with foreign types
1227.1645 +
1227.1646 +#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
1227.1647 +
1227.1648 +#   define BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE \
1227.1649 +    void
1227.1650 +
1227.1651 +#else // MSVC7
1227.1652 +
1227.1653 +    //
1227.1654 +    // MSVC7 gives error about return types for above being different than
1227.1655 +    // the true comparison operator overloads:
1227.1656 +    //
1227.1657 +
1227.1658 +#   define BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE \
1227.1659 +    bool
1227.1660 +
1227.1661 +#endif // MSVC7 workaround
1227.1662 +
1227.1663 +    template <typename U>
1227.1664 +        BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE
1227.1665 +    operator==(const U&) const
1227.1666 +    {
1227.1667 +        BOOST_STATIC_ASSERT( false && sizeof(U) );
1227.1668 +    }
1227.1669 +
1227.1670 +    template <typename U>
1227.1671 +        BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE
1227.1672 +    operator<(const U&) const
1227.1673 +    {
1227.1674 +        BOOST_STATIC_ASSERT( false && sizeof(U) );
1227.1675 +    }
1227.1676 +
1227.1677 +public: // comparison operators
1227.1678 +
1227.1679 +    // [MSVC6 requires these operators appear after template operators]
1227.1680 +
1227.1681 +    bool operator==(const variant& rhs) const
1227.1682 +    {
1227.1683 +        if (this->which() != rhs.which())
1227.1684 +            return false;
1227.1685 +
1227.1686 +        detail::variant::comparer<
1227.1687 +              variant, detail::variant::equal_comp
1227.1688 +            > visitor(*this);
1227.1689 +        return rhs.apply_visitor(visitor);
1227.1690 +    }
1227.1691 +
1227.1692 +    bool operator<(const variant& rhs) const
1227.1693 +    {
1227.1694 +        //
1227.1695 +        // Dirk Schreib suggested this collating order.
1227.1696 +        //
1227.1697 +
1227.1698 +        if (this->which() != rhs.which())
1227.1699 +            return this->which() < rhs.which();
1227.1700 +
1227.1701 +        detail::variant::comparer<
1227.1702 +              variant, detail::variant::less_comp
1227.1703 +            > visitor(*this);
1227.1704 +        return rhs.apply_visitor(visitor);
1227.1705 +    }
1227.1706 +
1227.1707 +// helpers, for visitation support (below) -- private when possible
1227.1708 +#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1227.1709 +
1227.1710 +    template < BOOST_VARIANT_ENUM_PARAMS(typename U) >
1227.1711 +    friend class variant;
1227.1712 +
1227.1713 +private:
1227.1714 +
1227.1715 +#else// defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1227.1716 +
1227.1717 +public:
1227.1718 +
1227.1719 +#endif// !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1227.1720 +
1227.1721 +    template <typename Visitor, typename VoidPtrCV>
1227.1722 +    static
1227.1723 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1227.1724 +              typename Visitor::result_type
1227.1725 +            )
1227.1726 +    internal_apply_visitor_impl(
1227.1727 +          int internal_which
1227.1728 +        , int logical_which
1227.1729 +        , Visitor& visitor
1227.1730 +        , VoidPtrCV storage
1227.1731 +        )
1227.1732 +    {
1227.1733 +        typedef mpl::int_<0> first_which;
1227.1734 +        typedef typename mpl::begin<internal_types>::type first_it;
1227.1735 +        typedef typename mpl::end<internal_types>::type last_it;
1227.1736 +
1227.1737 +        typedef detail::variant::visitation_impl_step<
1227.1738 +              first_it, last_it
1227.1739 +            > first_step;
1227.1740 +
1227.1741 +        return detail::variant::visitation_impl(
1227.1742 +              internal_which, logical_which
1227.1743 +            , visitor, storage, mpl::false_()
1227.1744 +            , never_uses_backup_flag()
1227.1745 +            , static_cast<first_which*>(0), static_cast<first_step*>(0)
1227.1746 +            );
1227.1747 +    }
1227.1748 +
1227.1749 +    template <typename Visitor>
1227.1750 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1227.1751 +              typename Visitor::result_type
1227.1752 +            )
1227.1753 +    internal_apply_visitor(Visitor& visitor)
1227.1754 +    {
1227.1755 +        return internal_apply_visitor_impl(
1227.1756 +              which_, which(), visitor, storage_.address()
1227.1757 +            );
1227.1758 +    }
1227.1759 +
1227.1760 +    template <typename Visitor>
1227.1761 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1227.1762 +              typename Visitor::result_type
1227.1763 +            )
1227.1764 +    internal_apply_visitor(Visitor& visitor) const
1227.1765 +    {
1227.1766 +        return internal_apply_visitor_impl(
1227.1767 +              which_, which(), visitor, storage_.address()
1227.1768 +            );
1227.1769 +    }
1227.1770 +
1227.1771 +public: // visitation support
1227.1772 +
1227.1773 +    template <typename Visitor>
1227.1774 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1227.1775 +              typename Visitor::result_type
1227.1776 +            )
1227.1777 +    apply_visitor(Visitor& visitor)
1227.1778 +    {
1227.1779 +        detail::variant::invoke_visitor<Visitor> invoker(visitor);
1227.1780 +        return this->internal_apply_visitor(invoker);
1227.1781 +    }
1227.1782 +
1227.1783 +    template <typename Visitor>
1227.1784 +        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1227.1785 +              typename Visitor::result_type
1227.1786 +            )
1227.1787 +    apply_visitor(Visitor& visitor) const
1227.1788 +    {
1227.1789 +        detail::variant::invoke_visitor<Visitor> invoker(visitor);
1227.1790 +        return this->internal_apply_visitor(invoker);
1227.1791 +    }
1227.1792 +
1227.1793 +}; // class variant
1227.1794 +
1227.1795 +///////////////////////////////////////////////////////////////////////////////
1227.1796 +// metafunction make_variant_over
1227.1797 +//
1227.1798 +// See docs and boost/variant/variant_fwd.hpp for more information.
1227.1799 +//
1227.1800 +template <typename Types>
1227.1801 +struct make_variant_over
1227.1802 +{
1227.1803 +private: // precondition assertions
1227.1804 +
1227.1805 +#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
1227.1806 +    BOOST_STATIC_ASSERT(( ::boost::mpl::is_sequence<Types>::value ));
1227.1807 +#endif
1227.1808 +
1227.1809 +public: // metafunction result
1227.1810 +
1227.1811 +    typedef variant<
1227.1812 +          detail::variant::over_sequence< Types >
1227.1813 +        > type;
1227.1814 +
1227.1815 +};
1227.1816 +
1227.1817 +///////////////////////////////////////////////////////////////////////////////
1227.1818 +// function template swap
1227.1819 +//
1227.1820 +// Swaps two variants of the same type (i.e., identical specification).
1227.1821 +//
1227.1822 +template < BOOST_VARIANT_ENUM_PARAMS(typename T) >
1227.1823 +inline void swap(
1227.1824 +      variant< BOOST_VARIANT_ENUM_PARAMS(T) >& lhs
1227.1825 +    , variant< BOOST_VARIANT_ENUM_PARAMS(T) >& rhs
1227.1826 +    )
1227.1827 +{
1227.1828 +    lhs.swap(rhs);
1227.1829 +}
1227.1830 +
1227.1831 +} // namespace boost
1227.1832 +
1227.1833 +// implementation additions
1227.1834 +#include "boost/variant/detail/variant_io.hpp"
1227.1835 +
1227.1836 +#endif // BOOST_VARIANT_VARIANT_HPP
  1228.1 --- a/epoc32/include/stdapis/boost/variant/detail/bool_trait_def.hpp	Tue Mar 16 16:12:26 2010 +0000
  1228.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1228.3 @@ -1,30 +0,0 @@
  1228.4 -//-----------------------------------------------------------------------------
  1228.5 -// boost/variant/detail/bool_trait_def.hpp header file
  1228.6 -// See http://www.boost.org for updates, documentation, and revision history.
  1228.7 -//-----------------------------------------------------------------------------
  1228.8 -//
  1228.9 -// Copyright (c) 2003
 1228.10 -// Eric Friedman
 1228.11 -//
 1228.12 -// Distributed under the Boost Software License, Version 1.0. (See
 1228.13 -// accompanying file LICENSE_1_0.txt or copy at
 1228.14 -// http://www.boost.org/LICENSE_1_0.txt)
 1228.15 -
 1228.16 -// Needed until move-related traits incorporated into type_traits library.
 1228.17 -// no include guards, the header is intended for multiple inclusion!
 1228.18 -
 1228.19 -// should be the last #include
 1228.20 -#include "boost/type_traits/detail/bool_trait_def.hpp"
 1228.21 -
 1228.22 -#define BOOST_VARIANT_TT_AUX_BOOL_TRAIT_DEF1(trait,T,C) \
 1228.23 -template< typename T > struct trait \
 1228.24 -    BOOST_TT_AUX_BOOL_C_BASE(C) \
 1228.25 -{ \
 1228.26 -    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(C) \
 1228.27 -    BOOST_MPL_AUX_LAMBDA_SUPPORT(1,trait,(T)) \
 1228.28 -}; \
 1228.29 -/**/
 1228.30 -
 1228.31 -#define BOOST_VARIANT_TT_AUX_TRAIT_SUFFIX(arity, name) \
 1228.32 -BOOST_TT_AUX_TEMPLATE_ARITY_SPEC(arity, name) \
 1228.33 -/**/
  1229.1 --- a/epoc32/include/stdapis/boost/variant/detail/bool_trait_undef.hpp	Tue Mar 16 16:12:26 2010 +0000
  1229.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1229.3 @@ -1,21 +0,0 @@
  1229.4 -//-----------------------------------------------------------------------------
  1229.5 -// boost/variant/detail/bool_trait_undef.hpp header file
  1229.6 -// See http://www.boost.org for updates, documentation, and revision history.
  1229.7 -//-----------------------------------------------------------------------------
  1229.8 -//
  1229.9 -// Copyright (c) 2003
 1229.10 -// Eric Friedman
 1229.11 -//
 1229.12 -// Distributed under the Boost Software License, Version 1.0. (See
 1229.13 -// accompanying file LICENSE_1_0.txt or copy at
 1229.14 -// http://www.boost.org/LICENSE_1_0.txt)
 1229.15 -
 1229.16 -// Needed until move-related traits incorporated into type_traits library.
 1229.17 -// no include guards, the header is intended for multiple inclusion!
 1229.18 -
 1229.19 -// should be the last #include
 1229.20 -#include "boost/type_traits/detail/bool_trait_undef.hpp"
 1229.21 -
 1229.22 -
 1229.23 -#undef BOOST_VARIANT_TT_AUX_BOOL_TRAIT_DEF1
 1229.24 -#undef BOOST_VARIANT_TT_AUX_TRAIT_SUFFIX
  1230.1 --- a/epoc32/include/stdapis/boost/variant/detail/config.hpp	Tue Mar 16 16:12:26 2010 +0000
  1230.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1230.3 @@ -1,38 +0,0 @@
  1230.4 -//-----------------------------------------------------------------------------
  1230.5 -// boost variant/detail/config.hpp header file
  1230.6 -// See http://www.boost.org for updates, documentation, and revision history.
  1230.7 -//-----------------------------------------------------------------------------
  1230.8 -//
  1230.9 -// Copyright (c) 2003
 1230.10 -// Eric Friedman
 1230.11 -//
 1230.12 -// Distributed under the Boost Software License, Version 1.0. (See
 1230.13 -// accompanying file LICENSE_1_0.txt or copy at
 1230.14 -// http://www.boost.org/LICENSE_1_0.txt)
 1230.15 -
 1230.16 -#ifndef BOOST_VARIANT_DETAIL_CONFIG_HPP
 1230.17 -#define BOOST_VARIANT_DETAIL_CONFIG_HPP
 1230.18 -
 1230.19 -#include "boost/config.hpp"
 1230.20 -#include "boost/detail/workaround.hpp"
 1230.21 -
 1230.22 -///////////////////////////////////////////////////////////////////////////////
 1230.23 -// macro BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING
 1230.24 -//
 1230.25 -#if BOOST_WORKAROUND(__MWERKS__, <= 0x3201) \
 1230.26 - || BOOST_WORKAROUND(BOOST_INTEL, <= 700) \
 1230.27 - || BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
 1230.28 - && !defined(BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING)
 1230.29 -#   define BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING
 1230.30 -#endif
 1230.31 -
 1230.32 -///////////////////////////////////////////////////////////////////////////////
 1230.33 -// macro BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND
 1230.34 -//
 1230.35 -#if !defined(BOOST_NO_SFINAE) \
 1230.36 - && !BOOST_WORKAROUND(BOOST_INTEL, <= 700) \
 1230.37 - && !defined(BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND)
 1230.38 -#   define BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND
 1230.39 -#endif
 1230.40 -
 1230.41 -#endif // BOOST_VARIANT_DETAIL_CONFIG_HPP
  1231.1 --- a/epoc32/include/stdapis/boost/variant/detail/move.hpp	Tue Mar 16 16:12:26 2010 +0000
  1231.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1231.3 @@ -1,166 +0,0 @@
  1231.4 -//-----------------------------------------------------------------------------
  1231.5 -// boost variant/detail/move.hpp header file
  1231.6 -// See http://www.boost.org for updates, documentation, and revision history.
  1231.7 -//-----------------------------------------------------------------------------
  1231.8 -//
  1231.9 -//  Copyright (c) 2002-2003 Eric Friedman
 1231.10 -//  Copyright (c) 2002 by Andrei Alexandrescu
 1231.11 -//
 1231.12 -//  Use, modification and distribution are subject to the
 1231.13 -//  Boost Software License, Version 1.0. (See accompanying file
 1231.14 -//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 1231.15 -//
 1231.16 -//  This file derivative of MoJO. Much thanks to Andrei for his initial work.
 1231.17 -//  See <http://www.cuj.com/experts/2102/alexandr.htm> for information on MOJO.
 1231.18 -//  Re-issued here under the Boost Software License, with permission of the original
 1231.19 -//  author (Andrei Alexandrescu).
 1231.20 -
 1231.21 -
 1231.22 -#ifndef BOOST_VARIANT_DETAIL_MOVE_HPP
 1231.23 -#define BOOST_VARIANT_DETAIL_MOVE_HPP
 1231.24 -
 1231.25 -#include <iterator> // for iterator_traits
 1231.26 -#include <new> // for placement new
 1231.27 -
 1231.28 -#include "boost/config.hpp"
 1231.29 -#include "boost/detail/workaround.hpp"
 1231.30 -#include "boost/mpl/if.hpp"
 1231.31 -#include "boost/type_traits/is_base_and_derived.hpp"
 1231.32 -
 1231.33 -namespace boost {
 1231.34 -namespace detail { namespace variant {
 1231.35 -
 1231.36 -//////////////////////////////////////////////////////////////////////////
 1231.37 -// forward declares
 1231.38 -//
 1231.39 -// NOTE: Incomplete until (if?) Boost.Move becomes part of Boost.
 1231.40 -//
 1231.41 -template <typename Deriving> class moveable;
 1231.42 -template <typename T>        class move_source;
 1231.43 -template <typename T>        class move_return;
 1231.44 -
 1231.45 -namespace detail {
 1231.46 -
 1231.47 -// (detail) moveable_tag
 1231.48 -//
 1231.49 -// Concrete type from which moveable<T> derives.
 1231.50 -//
 1231.51 -// TODO: Move into moveable_fwd.hpp and define has_move_constructor.
 1231.52 -//
 1231.53 -template <typename Deriving>
 1231.54 -struct moveable_tag
 1231.55 -{
 1231.56 -};
 1231.57 -
 1231.58 -} // namespace detail
 1231.59 -
 1231.60 -//////////////////////////////////////////////////////////////////////////
 1231.61 -// function template move
 1231.62 -//
 1231.63 -// Takes a T& and returns, if T derives moveable<T>, a move_source<T> for
 1231.64 -// the object; else, returns the T&.
 1231.65 -//
 1231.66 -
 1231.67 -namespace detail {
 1231.68 -
 1231.69 -// (detail) class template move_type
 1231.70 -//
 1231.71 -// Metafunction that, given moveable T, provides move_source<T>, else T&.
 1231.72 -//
 1231.73 -template <typename T>
 1231.74 -struct move_type
 1231.75 -{
 1231.76 -public: // metafunction result
 1231.77 -
 1231.78 -    typedef typename mpl::if_<
 1231.79 -          is_base_and_derived<detail::moveable_tag<T>, T>
 1231.80 -        , move_source<T>
 1231.81 -        , T&
 1231.82 -        >::type type;
 1231.83 -
 1231.84 -};
 1231.85 -
 1231.86 -} // namespace detail
 1231.87 -
 1231.88 -template <typename T>
 1231.89 -inline
 1231.90 -    typename detail::move_type<T>::type
 1231.91 -move(T& source)
 1231.92 -{
 1231.93 -    typedef typename detail::move_type<T>::type
 1231.94 -        move_t;
 1231.95 -
 1231.96 -    return move_t(source);
 1231.97 -}
 1231.98 -
 1231.99 -//////////////////////////////////////////////////////////////////////////
1231.100 -// class template return_t
1231.101 -//
1231.102 -// Metafunction that, given moveable T, provides move_return<T>, else T.
1231.103 -//
1231.104 -template <typename T>
1231.105 -struct return_t
1231.106 -{
1231.107 -public: // metafunction result
1231.108 -
1231.109 -    typedef typename mpl::if_<
1231.110 -          is_base_and_derived<moveable<T>, T>
1231.111 -        , move_return<T>
1231.112 -        , T
1231.113 -        >::type type;
1231.114 -
1231.115 -};
1231.116 -
1231.117 -//////////////////////////////////////////////////////////////////////////
1231.118 -// function template move_swap
1231.119 -//
1231.120 -// Swaps using Koenig lookup but falls back to move-swap for primitive
1231.121 -// types and on non-conforming compilers.
1231.122 -//
1231.123 -
1231.124 -#if   defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)   \
1231.125 - ||   BOOST_WORKAROUND(__GNUC__, BOOST_TESTED_AT(2))
1231.126 -
1231.127 -// [Indicate that move_swap by overload is disabled...]
1231.128 -#define BOOST_NO_MOVE_SWAP_BY_OVERLOAD
1231.129 -
1231.130 -// [...and provide straight swap-by-move implementation:]
1231.131 -template <typename T>
1231.132 -inline void move_swap(T& lhs, T& rhs)
1231.133 -{
1231.134 -    T tmp( boost::detail::variant::move(lhs) );
1231.135 -    lhs = boost::detail::variant::move(rhs);
1231.136 -    rhs = boost::detail::variant::move(tmp);
1231.137 -}
1231.138 -
1231.139 -#else// !workaround
1231.140 -
1231.141 -namespace detail { namespace move_swap {
1231.142 -
1231.143 -template <typename T>
1231.144 -inline void swap(T& lhs, T& rhs)
1231.145 -{
1231.146 -    T tmp( boost::detail::variant::move(lhs) );
1231.147 -    lhs = boost::detail::variant::move(rhs);
1231.148 -    rhs = boost::detail::variant::move(tmp);
1231.149 -}
1231.150 -
1231.151 -}} // namespace detail::move_swap
1231.152 -
1231.153 -template <typename T>
1231.154 -inline void move_swap(T& lhs, T& rhs)
1231.155 -{
1231.156 -    using detail::move_swap::swap;
1231.157 -
1231.158 -    swap(lhs, rhs);
1231.159 -}
1231.160 -
1231.161 -#endif // workaround
1231.162 -
1231.163 -}} // namespace detail::variant
1231.164 -} // namespace boost
1231.165 -
1231.166 -#endif // BOOST_VARIANT_DETAIL_MOVE_HPP
1231.167 -
1231.168 -
1231.169 -
  1232.1 --- a/epoc32/include/stdapis/boost/variant/variant.hpp	Tue Mar 16 16:12:26 2010 +0000
  1232.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1232.3 @@ -1,1833 +0,0 @@
  1232.4 -//-----------------------------------------------------------------------------
  1232.5 -// boost variant/variant.hpp header file
  1232.6 -// See http://www.boost.org for updates, documentation, and revision history.
  1232.7 -//-----------------------------------------------------------------------------
  1232.8 -//
  1232.9 -// Copyright (c) 2002-2003
 1232.10 -// Eric Friedman, Itay Maman
 1232.11 -//
 1232.12 -// Distributed under the Boost Software License, Version 1.0. (See
 1232.13 -// accompanying file LICENSE_1_0.txt or copy at
 1232.14 -// http://www.boost.org/LICENSE_1_0.txt)
 1232.15 -/*
 1232.16 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
 1232.17 -*/
 1232.18 -#ifndef BOOST_VARIANT_VARIANT_HPP
 1232.19 -#define BOOST_VARIANT_VARIANT_HPP
 1232.20 -
 1232.21 -#include <cstddef> // for std::size_t
 1232.22 -#include <new> // for placement new
 1232.23 -#ifdef __SYMBIAN32__
 1232.24 -#include <string>
 1232.25 -#endif
 1232.26 -#include <typeinfo> // for typeid, std::type_info
 1232.27 -
 1232.28 -#include "boost/variant/detail/config.hpp"
 1232.29 -#include "boost/mpl/aux_/config/eti.hpp"
 1232.30 -#include "boost/mpl/aux_/value_wknd.hpp"
 1232.31 -
 1232.32 -#include "boost/variant/variant_fwd.hpp"
 1232.33 -#include "boost/variant/detail/backup_holder.hpp"
 1232.34 -#include "boost/variant/detail/enable_recursive_fwd.hpp"
 1232.35 -#include "boost/variant/detail/forced_return.hpp"
 1232.36 -#include "boost/variant/detail/initializer.hpp"
 1232.37 -#include "boost/variant/detail/make_variant_list.hpp"
 1232.38 -#include "boost/variant/detail/over_sequence.hpp"
 1232.39 -#include "boost/variant/detail/visitation_impl.hpp"
 1232.40 -
 1232.41 -#include "boost/variant/detail/generic_result_type.hpp"
 1232.42 -#include "boost/variant/detail/has_nothrow_move.hpp"
 1232.43 -#include "boost/variant/detail/move.hpp"
 1232.44 -
 1232.45 -#include "boost/detail/reference_content.hpp"
 1232.46 -#include "boost/aligned_storage.hpp"
 1232.47 -#include "boost/blank.hpp"
 1232.48 -#include "boost/static_assert.hpp"
 1232.49 -#include "boost/preprocessor/cat.hpp"
 1232.50 -#include "boost/preprocessor/repeat.hpp"
 1232.51 -#include "boost/type_traits/alignment_of.hpp"
 1232.52 -#include "boost/type_traits/add_const.hpp"
 1232.53 -#include "boost/type_traits/has_nothrow_constructor.hpp"
 1232.54 -#include "boost/type_traits/has_nothrow_copy.hpp"
 1232.55 -#include "boost/type_traits/is_const.hpp"
 1232.56 -#include "boost/type_traits/is_same.hpp"
 1232.57 -#include "boost/utility/enable_if.hpp"
 1232.58 -#include "boost/variant/recursive_wrapper_fwd.hpp"
 1232.59 -#include "boost/variant/static_visitor.hpp"
 1232.60 -
 1232.61 -#include "boost/mpl/eval_if.hpp"
 1232.62 -#include "boost/mpl/begin_end.hpp"
 1232.63 -#include "boost/mpl/bool.hpp"
 1232.64 -#include "boost/mpl/empty.hpp"
 1232.65 -#include "boost/mpl/find_if.hpp"
 1232.66 -#include "boost/mpl/front.hpp"
 1232.67 -#include "boost/mpl/identity.hpp"
 1232.68 -#include "boost/mpl/if.hpp"
 1232.69 -#include "boost/mpl/int.hpp"
 1232.70 -#include "boost/mpl/is_sequence.hpp"
 1232.71 -#include "boost/mpl/iterator_range.hpp"
 1232.72 -#include "boost/mpl/iter_fold_if.hpp"
 1232.73 -#include "boost/mpl/logical.hpp"
 1232.74 -#include "boost/mpl/max_element.hpp"
 1232.75 -#include "boost/mpl/next.hpp"
 1232.76 -#include "boost/mpl/deref.hpp"
 1232.77 -#include "boost/mpl/pair.hpp"
 1232.78 -#include "boost/mpl/protect.hpp"
 1232.79 -#include "boost/mpl/push_front.hpp"
 1232.80 -#include "boost/mpl/same_as.hpp"
 1232.81 -#include "boost/mpl/size_t.hpp"
 1232.82 -#include "boost/mpl/sizeof.hpp"
 1232.83 -#include "boost/mpl/transform.hpp"
 1232.84 -#include "boost/mpl/assert.hpp"
 1232.85 -
 1232.86 -///////////////////////////////////////////////////////////////////////////////
 1232.87 -// Implementation Macros:
 1232.88 -//
 1232.89 -// BOOST_VARIANT_VISITATION_UNROLLING_LIMIT
 1232.90 -//   Defined in boost/variant/detail/visitation_impl.hpp.
 1232.91 -//
 1232.92 -// BOOST_VARIANT_MINIMIZE_SIZE
 1232.93 -//   When #defined, implementation employs all known means to minimize the
 1232.94 -//   size of variant obje   cts. However, often unsuccessful due to alignment
 1232.95 -//   issues, and potentially harmful to runtime speed, so not enabled by
 1232.96 -//   default. (TODO: Investigate further.)
 1232.97 -
 1232.98 -#if defined(BOOST_VARIANT_MINIMIZE_SIZE)
 1232.99 -#   include <climits> // for SCHAR_MAX
1232.100 -#   include "boost/mpl/eval_if.hpp"
1232.101 -#   include "boost/mpl/equal_to.hpp"
1232.102 -#   include "boost/mpl/identity.hpp"
1232.103 -#   include "boost/mpl/int.hpp"
1232.104 -#   include "boost/mpl/if.hpp"
1232.105 -#   include "boost/mpl/less.hpp"
1232.106 -#   include "boost/mpl/long.hpp"
1232.107 -#   include "boost/mpl/O1_size.hpp"
1232.108 -#endif
1232.109 -
1232.110 -
1232.111 -namespace boost {
1232.112 -
1232.113 -namespace detail { namespace variant {
1232.114 -
1232.115 -///////////////////////////////////////////////////////////////////////////////
1232.116 -// (detail) metafunction max_value
1232.117 -//
1232.118 -// Finds the maximum value of the unary metafunction F over Sequence.
1232.119 -//
1232.120 -template <typename Sequence, typename F>
1232.121 -struct max_value
1232.122 -{
1232.123 -private: // helpers, for metafunction result (below)
1232.124 -
1232.125 -    typedef typename mpl::transform1<Sequence, F>::type transformed_;
1232.126 -    typedef typename mpl::max_element<transformed_
1232.127 -          
1232.128 -        >::type max_it;
1232.129 -
1232.130 -public: // metafunction result
1232.131 -
1232.132 -    typedef typename mpl::deref<max_it>::type
1232.133 -        type;
1232.134 -
1232.135 -};
1232.136 -
1232.137 -///////////////////////////////////////////////////////////////////////////////
1232.138 -// (detail) metafunction find_fallback_type
1232.139 -//
1232.140 -// Provides a fallback (i.e., nothrow default-constructible) type from the
1232.141 -// specified sequence, or no_fallback_type if not found.
1232.142 -//
1232.143 -// This implementation is designed to prefer boost::blank over other potential
1232.144 -// fallback types, regardless of its position in the specified sequence.
1232.145 -//
1232.146 -
1232.147 -class no_fallback_type;
1232.148 -
1232.149 -struct find_fallback_type_pred
1232.150 -{
1232.151 -    template <typename Iterator>
1232.152 -    struct apply
1232.153 -    {
1232.154 -    private:
1232.155 -        typedef typename mpl::deref<Iterator>::type t_;
1232.156 -
1232.157 -    public:
1232.158 -        typedef mpl::not_< has_nothrow_constructor<t_> > type;
1232.159 -    };
1232.160 -};
1232.161 -
1232.162 -template <typename Types>
1232.163 -struct find_fallback_type
1232.164 -{
1232.165 -private: // helpers, for metafunction result (below)
1232.166 -
1232.167 -    typedef typename mpl::end<Types>::type end_it;
1232.168 -
1232.169 -    // [Find the first suitable fallback type...]
1232.170 -
1232.171 -    typedef typename mpl::iter_fold_if<
1232.172 -          Types
1232.173 -        , mpl::int_<0>, mpl::protect< mpl::next<> >
1232.174 -        , mpl::protect< find_fallback_type_pred >
1232.175 -        >::type first_result_;
1232.176 -
1232.177 -    typedef typename first_result_::first first_result_index;
1232.178 -    typedef typename first_result_::second first_result_it;
1232.179 -
1232.180 -    // [...now search the rest of the sequence for boost::blank...]
1232.181 -
1232.182 -    typedef typename mpl::iter_fold_if<
1232.183 -          mpl::iterator_range< first_result_it,end_it >
1232.184 -        , first_result_index, mpl::protect< mpl::next<> >
1232.185 -        , mpl::protect< mpl::not_same_as<boost::blank> >
1232.186 -        >::type second_result_;
1232.187 -
1232.188 -    typedef typename second_result_::second second_result_it;
1232.189 -
1232.190 -public: // metafunction result
1232.191 -
1232.192 -    // [...and return the results of the search:]
1232.193 -    typedef typename mpl::eval_if<
1232.194 -          is_same< second_result_it,end_it >
1232.195 -        , mpl::if_<
1232.196 -              is_same< first_result_it,end_it >
1232.197 -            , mpl::pair< no_fallback_type,no_fallback_type >
1232.198 -            , first_result_
1232.199 -            >
1232.200 -        , mpl::identity< second_result_ >
1232.201 -        >::type type;
1232.202 -
1232.203 -};
1232.204 -
1232.205 -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
1232.206 -
1232.207 -template<>
1232.208 -struct find_fallback_type<int>
1232.209 -{
1232.210 -    typedef mpl::pair< no_fallback_type,no_fallback_type > type;
1232.211 -};
1232.212 -
1232.213 -#endif // BOOST_MPL_CFG_MSVC_60_ETI_BUG workaround
1232.214 -
1232.215 -///////////////////////////////////////////////////////////////////////////////
1232.216 -// (detail) metafunction make_storage
1232.217 -//
1232.218 -// Provides an aligned storage type capable of holding any of the types
1232.219 -// specified in the given type-sequence.
1232.220 -//
1232.221 -
1232.222 -template <typename Types, typename NeverUsesBackupFlag>
1232.223 -struct make_storage
1232.224 -{
1232.225 -private: // helpers, for metafunction result (below)
1232.226 -
1232.227 -    typedef typename mpl::eval_if<
1232.228 -          NeverUsesBackupFlag
1232.229 -        , mpl::identity< Types >
1232.230 -        , mpl::push_front<
1232.231 -              Types, backup_holder<void*>
1232.232 -            >
1232.233 -        >::type types;
1232.234 -
1232.235 -    typedef typename max_value<
1232.236 -          types, mpl::sizeof_<mpl::_1>
1232.237 -        >::type max_size;
1232.238 -
1232.239 -#if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0551))
1232.240 -
1232.241 -    typedef typename max_value<
1232.242 -          types, alignment_of<mpl::_1>
1232.243 -        >::type max_alignment;
1232.244 -
1232.245 -#else // borland
1232.246 -
1232.247 -    // temporary workaround -- use maximal alignment
1232.248 -    typedef mpl::size_t< -1 > max_alignment;
1232.249 -
1232.250 -#endif // borland workaround
1232.251 -
1232.252 -public: // metafunction result
1232.253 -
1232.254 -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
1232.255 -
1232.256 -    typedef ::boost::aligned_storage<
1232.257 -          BOOST_MPL_AUX_VALUE_WKND(max_size)::value
1232.258 -        , BOOST_MPL_AUX_VALUE_WKND(max_alignment)::value
1232.259 -        > type;
1232.260 -
1232.261 -#else // MSVC7 and below
1232.262 -
1232.263 -    BOOST_STATIC_CONSTANT(std::size_t, msvc_max_size_c = max_size::value);
1232.264 -    BOOST_STATIC_CONSTANT(std::size_t, msvc_max_alignment_c = max_alignment::value);
1232.265 -
1232.266 -    typedef ::boost::aligned_storage<
1232.267 -          msvc_max_size_c
1232.268 -        , msvc_max_alignment_c
1232.269 -        > type;
1232.270 -
1232.271 -#endif // MSVC workaround
1232.272 -
1232.273 -};
1232.274 -
1232.275 -#if defined(BOOST_MPL_CFG_MSVC_60_ETI_BUG)
1232.276 -
1232.277 -template<>
1232.278 -struct make_storage<int,int>
1232.279 -{
1232.280 -    typedef int type;
1232.281 -};
1232.282 -
1232.283 -#endif // BOOST_MPL_CFG_MSVC_60_ETI_BUG workaround
1232.284 -
1232.285 -///////////////////////////////////////////////////////////////////////////////
1232.286 -// (detail) class destroyer
1232.287 -//
1232.288 -// Internal visitor that destroys the value it visits.
1232.289 -//
1232.290 -struct destroyer
1232.291 -    : public static_visitor<>
1232.292 -{
1232.293 -public: // visitor interfaces
1232.294 -
1232.295 -    template <typename T>
1232.296 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.297 -    internal_visit(T& operand, int) const
1232.298 -    {
1232.299 -        operand.~T();
1232.300 -
1232.301 -#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0551))
1232.302 -        operand; // suppresses warnings
1232.303 -#endif
1232.304 -
1232.305 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.306 -    }
1232.307 -
1232.308 -};
1232.309 -
1232.310 -///////////////////////////////////////////////////////////////////////////////
1232.311 -// (detail) class template known_get
1232.312 -//
1232.313 -// Visitor that returns a reference to content of the specified type.
1232.314 -//
1232.315 -// Precondition: visited variant MUST contain logical content of type T.
1232.316 -//
1232.317 -template <typename T>
1232.318 -class known_get
1232.319 -    : public static_visitor<T&>
1232.320 -{
1232.321 -
1232.322 -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1232.323 -
1232.324 -public: // visitor interface
1232.325 -
1232.326 -    T& operator()(T& operand) const
1232.327 -    {
1232.328 -        return operand;
1232.329 -    }
1232.330 -
1232.331 -    template <typename U>
1232.332 -    T& operator()(U&) const
1232.333 -    {
1232.334 -        // logical error to be here: see precondition above
1232.335 -        BOOST_ASSERT(false);
1232.336 -        return ::boost::detail::variant::forced_return< T& >();
1232.337 -    }
1232.338 -
1232.339 -#else // MSVC6
1232.340 -
1232.341 -private: // helpers, for visitor interface (below)
1232.342 -
1232.343 -    T& execute(T& operand, mpl::true_) const
1232.344 -    {
1232.345 -        return operand;
1232.346 -    }
1232.347 -
1232.348 -    template <typename U>
1232.349 -    T& execute(U& operand, mpl::false_) const
1232.350 -    {
1232.351 -        // logical error to be here: see precondition above
1232.352 -        BOOST_ASSERT(false);
1232.353 -        return ::boost::detail::variant::forced_return< T& >();
1232.354 -    }
1232.355 -
1232.356 -public: // visitor interface
1232.357 -
1232.358 -    template <typename U>
1232.359 -    T& operator()(U& operand) const
1232.360 -    {
1232.361 -        typedef typename is_same< U,T >::type
1232.362 -            U_is_T;
1232.363 -
1232.364 -        return execute(operand, U_is_T());
1232.365 -    }
1232.366 -
1232.367 -#endif // MSVC6 workaround
1232.368 -
1232.369 -};
1232.370 -
1232.371 -///////////////////////////////////////////////////////////////////////////////
1232.372 -// (detail) class copy_into
1232.373 -//
1232.374 -// Internal visitor that copies the value it visits into the given buffer.
1232.375 -//
1232.376 -class copy_into
1232.377 -    : public static_visitor<>
1232.378 -{
1232.379 -private: // representation
1232.380 -
1232.381 -    void* storage_;
1232.382 -
1232.383 -public: // structors
1232.384 -
1232.385 -    explicit copy_into(void* storage)
1232.386 -        : storage_(storage)
1232.387 -    {
1232.388 -    }
1232.389 -
1232.390 -public: // internal visitor interface
1232.391 -
1232.392 -    template <typename T>
1232.393 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.394 -    internal_visit(boost::detail::variant::backup_holder<T>& operand, long) const
1232.395 -    {
1232.396 -        new(storage_) T( operand.get() );
1232.397 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.398 -    }
1232.399 -
1232.400 -    template <typename T>
1232.401 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.402 -    internal_visit(const boost::detail::variant::backup_holder<T>& operand, long) const
1232.403 -    {
1232.404 -        new(storage_) T( operand.get() );
1232.405 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.406 -    }
1232.407 -
1232.408 -    template <typename T>
1232.409 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.410 -    internal_visit(const T& operand, int) const
1232.411 -    {
1232.412 -        new(storage_) T(operand);
1232.413 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.414 -    }
1232.415 -
1232.416 -};
1232.417 -
1232.418 -///////////////////////////////////////////////////////////////////////////////
1232.419 -// (detail) class assign_storage
1232.420 -//
1232.421 -// Internal visitor that assigns the given storage (which must be a
1232.422 -// constructed value of the same type) to the value it visits.
1232.423 -//
1232.424 -struct assign_storage
1232.425 -    : public static_visitor<>
1232.426 -{
1232.427 -private: // representation
1232.428 -
1232.429 -    const void* rhs_storage_;
1232.430 -
1232.431 -public: // structors
1232.432 -
1232.433 -    explicit assign_storage(const void* rhs_storage)
1232.434 -        : rhs_storage_(rhs_storage)
1232.435 -    {
1232.436 -    }
1232.437 -
1232.438 -public: // internal visitor interfaces
1232.439 -
1232.440 -    template <typename T>
1232.441 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.442 -    internal_visit(backup_holder<T>& lhs_content, long) const
1232.443 -    {
1232.444 -        lhs_content.get()
1232.445 -            = static_cast< const backup_holder<T>* >(rhs_storage_)->get();
1232.446 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.447 -    }
1232.448 -
1232.449 -    template <typename T>
1232.450 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.451 -    internal_visit(const backup_holder<T>& lhs_content, long) const
1232.452 -    {
1232.453 -        lhs_content.get()
1232.454 -            = static_cast< const backup_holder<T>* >(rhs_storage_)->get();
1232.455 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.456 -    }
1232.457 -
1232.458 -    template <typename T>
1232.459 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.460 -    internal_visit(T& lhs_content, int) const
1232.461 -    {
1232.462 -        // NOTE TO USER :
1232.463 -        // Compile error here indicates one of variant's bounded types does
1232.464 -        // not meet the requirements of the Assignable concept. Thus,
1232.465 -        // variant is not Assignable.
1232.466 -        //
1232.467 -        // Hint: Are any of the bounded types const-qualified or references?
1232.468 -        //
1232.469 -        lhs_content = *static_cast< const T* >(rhs_storage_);
1232.470 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.471 -    }
1232.472 -
1232.473 -};
1232.474 -
1232.475 -///////////////////////////////////////////////////////////////////////////////
1232.476 -// (detail) class direct_assigner
1232.477 -//
1232.478 -// Generic static visitor that: if and only if the visited value is of the
1232.479 -// specified type, assigns the given value to the visited value and returns
1232.480 -// true; else returns false.
1232.481 -//
1232.482 -template <typename T>
1232.483 -class direct_assigner
1232.484 -    : public static_visitor<bool>
1232.485 -{
1232.486 -private: // representation
1232.487 -
1232.488 -    T& rhs_;
1232.489 -
1232.490 -public: // structors
1232.491 -
1232.492 -    explicit direct_assigner(T& rhs)
1232.493 -        : rhs_(rhs)
1232.494 -    {
1232.495 -    }
1232.496 -
1232.497 -#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
1232.498 -
1232.499 -public: // visitor interface
1232.500 -
1232.501 -    bool operator()(T& lhs)
1232.502 -    {
1232.503 -        lhs = rhs_;
1232.504 -        return true;
1232.505 -    }
1232.506 -
1232.507 -    template <typename U>
1232.508 -    bool operator()(U&)
1232.509 -    {
1232.510 -        return false;
1232.511 -    }
1232.512 -
1232.513 -#else // MSVC6
1232.514 -
1232.515 -private: // helpers, for visitor interface (below)
1232.516 -
1232.517 -    bool execute(T& lhs, mpl::true_)
1232.518 -    {
1232.519 -        lhs = rhs_;
1232.520 -        return true;
1232.521 -    }
1232.522 -
1232.523 -    template <typename U>
1232.524 -    bool execute(U&, mpl::false_)
1232.525 -    {
1232.526 -        return false;
1232.527 -    }
1232.528 -
1232.529 -public: // visitor interface
1232.530 -
1232.531 -    template <typename U>
1232.532 -    bool operator()(U& lhs)
1232.533 -    {
1232.534 -        typedef typename is_same<U,T>::type U_is_T;
1232.535 -        return execute(lhs, U_is_T());
1232.536 -    }
1232.537 -
1232.538 -#endif // MSVC6 workaround
1232.539 -
1232.540 -};
1232.541 -
1232.542 -///////////////////////////////////////////////////////////////////////////////
1232.543 -// (detail) class backup_assigner
1232.544 -//
1232.545 -// Internal visitor that "assigns" the given value to the visited value,
1232.546 -// using backup to recover if the destroy-copy sequence fails.
1232.547 -//
1232.548 -// NOTE: This needs to be a friend of variant, as it needs access to
1232.549 -// indicate_which, indicate_backup_which, etc.
1232.550 -//
1232.551 -template <typename Variant, typename RhsT>
1232.552 -class backup_assigner
1232.553 -    : public static_visitor<>
1232.554 -{
1232.555 -private: // representation
1232.556 -
1232.557 -    Variant& lhs_;
1232.558 -    int rhs_which_;
1232.559 -    const RhsT& rhs_content_;
1232.560 -
1232.561 -public: // structors
1232.562 -
1232.563 -    backup_assigner(Variant& lhs, int rhs_which, const RhsT& rhs_content)
1232.564 -        : lhs_(lhs)
1232.565 -        , rhs_which_(rhs_which)
1232.566 -        , rhs_content_(rhs_content)
1232.567 -    {
1232.568 -    }
1232.569 -
1232.570 -private: // helpers, for visitor interface (below)
1232.571 -
1232.572 -    template <typename LhsT>
1232.573 -    void backup_assign_impl(
1232.574 -          LhsT& lhs_content
1232.575 -        , mpl::true_// has_nothrow_move
1232.576 -        )
1232.577 -    {
1232.578 -        // Move lhs content to backup...
1232.579 -        LhsT backup_lhs_content(
1232.580 -              ::boost::detail::variant::move(lhs_content)
1232.581 -            ); // nothrow
1232.582 -
1232.583 -        // ...destroy lhs content...
1232.584 -        lhs_content.~LhsT(); // nothrow
1232.585 -
1232.586 -        try
1232.587 -        {
1232.588 -            // ...and attempt to copy rhs content into lhs storage:
1232.589 -            new(lhs_.storage_.address()) RhsT(rhs_content_);
1232.590 -        }
1232.591 -        catch (...)
1232.592 -        {
1232.593 -            // In case of failure, restore backup content to lhs storage...
1232.594 -            new(lhs_.storage_.address())
1232.595 -                LhsT(
1232.596 -                      ::boost::detail::variant::move(backup_lhs_content)
1232.597 -                    ); // nothrow
1232.598 -
1232.599 -            // ...and rethrow:
1232.600 -            throw;
1232.601 -        }
1232.602 -
1232.603 -        // In case of success, indicate new content type:
1232.604 -        lhs_.indicate_which(rhs_which_); // nothrow
1232.605 -    }
1232.606 -
1232.607 -    template <typename LhsT>
1232.608 -    void backup_assign_impl(
1232.609 -          LhsT& lhs_content
1232.610 -        , mpl::false_// has_nothrow_move
1232.611 -        )
1232.612 -    {
1232.613 -        // Backup lhs content...
1232.614 -        LhsT* backup_lhs_ptr = new LhsT(lhs_content);
1232.615 -
1232.616 -        // ...destroy lhs content...
1232.617 -        lhs_content.~LhsT(); // nothrow
1232.618 -
1232.619 -        try
1232.620 -        {
1232.621 -            // ...and attempt to copy rhs content into lhs storage:
1232.622 -            new(lhs_.storage_.address()) RhsT(rhs_content_);
1232.623 -        }
1232.624 -        catch (...)
1232.625 -        {
1232.626 -            // In case of failure, copy backup pointer to lhs storage...
1232.627 -            new(lhs_.storage_.address())
1232.628 -                backup_holder<LhsT>( backup_lhs_ptr ); // nothrow
1232.629 -
1232.630 -            // ...indicate now using backup...
1232.631 -            lhs_.indicate_backup_which( lhs_.which() ); // nothrow
1232.632 -
1232.633 -            // ...and rethrow:
1232.634 -            throw;
1232.635 -        }
1232.636 -
1232.637 -        // In case of success, indicate new content type...
1232.638 -        lhs_.indicate_which(rhs_which_); // nothrow
1232.639 -
1232.640 -        // ...and delete backup:
1232.641 -        delete backup_lhs_ptr; // nothrow
1232.642 -    }
1232.643 -
1232.644 -public: // visitor interface
1232.645 -
1232.646 -    template <typename LhsT>
1232.647 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.648 -    internal_visit(LhsT& lhs_content, int)
1232.649 -    {
1232.650 -        typedef typename has_nothrow_move_constructor<LhsT>::type
1232.651 -            nothrow_move;
1232.652 -
1232.653 -        backup_assign_impl( lhs_content, nothrow_move() );
1232.654 -
1232.655 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.656 -    }
1232.657 -
1232.658 -};
1232.659 -
1232.660 -///////////////////////////////////////////////////////////////////////////////
1232.661 -// (detail) class swap_with
1232.662 -//
1232.663 -// Visitor that swaps visited value with content of given variant.
1232.664 -//
1232.665 -// Precondition: Given variant MUST have same logical type as visited value.
1232.666 -//
1232.667 -template <typename Variant>
1232.668 -struct swap_with
1232.669 -    : public static_visitor<>
1232.670 -{
1232.671 -private: // representation
1232.672 -
1232.673 -    Variant& toswap_;
1232.674 -
1232.675 -public: // structors
1232.676 -
1232.677 -    explicit swap_with(Variant& toswap)
1232.678 -        : toswap_(toswap)
1232.679 -    {
1232.680 -    }
1232.681 -
1232.682 -public: // internal visitor interfaces
1232.683 -
1232.684 -    template <typename T>
1232.685 -    void operator()(T& operand) const
1232.686 -    {
1232.687 -        // Since the precondition ensures types are same, get T...
1232.688 -        known_get<T> getter;
1232.689 -        T& other = toswap_.apply_visitor(getter);
1232.690 -
1232.691 -        // ...and swap:
1232.692 -        ::boost::detail::variant::move_swap( operand, other );
1232.693 -    }
1232.694 -
1232.695 -};
1232.696 -
1232.697 -///////////////////////////////////////////////////////////////////////////////
1232.698 -// (detail) class reflect
1232.699 -//
1232.700 -// Generic static visitor that performs a typeid on the value it visits.
1232.701 -//
1232.702 -class reflect
1232.703 -    : public static_visitor<const std::type_info&>
1232.704 -{
1232.705 -public: // visitor interfaces
1232.706 -
1232.707 -    template <typename T>
1232.708 -    const std::type_info& operator()(const T&) const
1232.709 -    {
1232.710 -        return typeid(T);
1232.711 -    }
1232.712 -
1232.713 -};
1232.714 -
1232.715 -///////////////////////////////////////////////////////////////////////////////
1232.716 -// (detail) class comparer
1232.717 -//
1232.718 -// Generic static visitor that compares the content of the given lhs variant
1232.719 -// with the visited rhs content using Comp.
1232.720 -//
1232.721 -// Precondition: lhs.which() == rhs.which()
1232.722 -//
1232.723 -template <typename Variant, typename Comp>
1232.724 -class comparer
1232.725 -    : public static_visitor<bool>
1232.726 -{
1232.727 -private: // representation
1232.728 -
1232.729 -    const Variant& lhs_;
1232.730 -
1232.731 -public: // structors
1232.732 -
1232.733 -    explicit comparer(const Variant& lhs)
1232.734 -        : lhs_(lhs)
1232.735 -    {
1232.736 -    }
1232.737 -
1232.738 -public: // visitor interfaces
1232.739 -
1232.740 -    template <typename T>
1232.741 -    bool operator()(const T& rhs_content) const
1232.742 -    {
1232.743 -        // Since the precondition ensures lhs and rhs types are same, get T...
1232.744 -        known_get<const T> getter;
1232.745 -        const T& lhs_content = lhs_.apply_visitor(getter);
1232.746 -
1232.747 -        // ...and compare lhs and rhs contents:
1232.748 -        return Comp()(lhs_content, rhs_content);
1232.749 -    }
1232.750 -
1232.751 -};
1232.752 -
1232.753 -///////////////////////////////////////////////////////////////////////////////
1232.754 -// (detail) class equal_comp
1232.755 -//
1232.756 -// Generic function object compares lhs with rhs using operator==.
1232.757 -//
1232.758 -struct equal_comp
1232.759 -{
1232.760 -    template <typename T>
1232.761 -    bool operator()(const T& lhs, const T& rhs) const
1232.762 -    {
1232.763 -        return lhs == rhs;
1232.764 -    }
1232.765 -};
1232.766 -
1232.767 -///////////////////////////////////////////////////////////////////////////////
1232.768 -// (detail) class less_comp
1232.769 -//
1232.770 -// Generic function object compares lhs with rhs using operator<.
1232.771 -//
1232.772 -struct less_comp
1232.773 -{
1232.774 -    template <typename T>
1232.775 -    bool operator()(const T& lhs, const T& rhs) const
1232.776 -    {
1232.777 -        return lhs < rhs;
1232.778 -    }
1232.779 -};
1232.780 -
1232.781 -///////////////////////////////////////////////////////////////////////////////
1232.782 -// (detail) class template invoke_visitor
1232.783 -//
1232.784 -// Internal visitor that invokes the given visitor using:
1232.785 -//  * for wrappers (e.g., recursive_wrapper), the wrapper's held value.
1232.786 -//  * for all other values, the value itself.
1232.787 -//
1232.788 -template <typename Visitor>
1232.789 -class invoke_visitor
1232.790 -{
1232.791 -private: // representation
1232.792 -
1232.793 -    Visitor& visitor_;
1232.794 -
1232.795 -public: // visitor typedefs
1232.796 -
1232.797 -    typedef typename Visitor::result_type
1232.798 -        result_type;
1232.799 -
1232.800 -public: // structors
1232.801 -
1232.802 -    explicit invoke_visitor(Visitor& visitor)
1232.803 -        : visitor_(visitor)
1232.804 -    {
1232.805 -    }
1232.806 -
1232.807 -#if !defined(BOOST_NO_VOID_RETURNS)
1232.808 -
1232.809 -public: // internal visitor interfaces
1232.810 -
1232.811 -    template <typename T>
1232.812 -    result_type internal_visit(T& operand, int)
1232.813 -    {
1232.814 -        return visitor_(operand);
1232.815 -    }
1232.816 -
1232.817 -#   if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564))
1232.818 -    template <typename T>
1232.819 -    result_type internal_visit(const T& operand, int)
1232.820 -    {
1232.821 -        return visitor_(operand);
1232.822 -    }
1232.823 -#   endif
1232.824 -
1232.825 -#else // defined(BOOST_NO_VOID_RETURNS)
1232.826 -
1232.827 -private: // helpers, for internal visitor interfaces (below)
1232.828 -
1232.829 -    template <typename T>
1232.830 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.831 -    visit_impl(T& operand, mpl::false_)
1232.832 -    {
1232.833 -        return visitor_(operand);
1232.834 -    }
1232.835 -
1232.836 -    template <typename T>
1232.837 -        BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.838 -    visit_impl(T& operand, mpl::true_)
1232.839 -    {
1232.840 -        visitor_(operand);
1232.841 -        BOOST_VARIANT_AUX_RETURN_VOID;
1232.842 -    }
1232.843 -
1232.844 -public: // internal visitor interfaces
1232.845 -
1232.846 -    template <typename T>
1232.847 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.848 -    internal_visit(T& operand, int)
1232.849 -    {
1232.850 -        typedef typename is_same<result_type, void>::type
1232.851 -            has_void_result_type;
1232.852 -
1232.853 -        return visit_impl(operand, has_void_result_type());
1232.854 -    }
1232.855 -
1232.856 -#endif // BOOST_NO_VOID_RETURNS) workaround
1232.857 -
1232.858 -public: // internal visitor interfaces, cont.
1232.859 -
1232.860 -    template <typename T>
1232.861 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.862 -    internal_visit(boost::recursive_wrapper<T>& operand, long)
1232.863 -    {
1232.864 -        return internal_visit( operand.get(), 1L );
1232.865 -    }
1232.866 -
1232.867 -    template <typename T>
1232.868 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.869 -    internal_visit(const boost::recursive_wrapper<T>& operand, long)
1232.870 -    {
1232.871 -        return internal_visit( operand.get(), 1L );
1232.872 -    }
1232.873 -
1232.874 -    template <typename T>
1232.875 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.876 -    internal_visit(boost::detail::reference_content<T>& operand, long)
1232.877 -    {
1232.878 -        return internal_visit( operand.get(), 1L );
1232.879 -    }
1232.880 -
1232.881 -    template <typename T>
1232.882 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.883 -    internal_visit(const boost::detail::reference_content<T>& operand, long)
1232.884 -    {
1232.885 -        return internal_visit( operand.get(), 1L );
1232.886 -    }
1232.887 -
1232.888 -    template <typename T>
1232.889 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.890 -    internal_visit(boost::detail::variant::backup_holder<T>& operand, long)
1232.891 -    {
1232.892 -        return internal_visit( operand.get(), 1L );
1232.893 -    }
1232.894 -
1232.895 -    template <typename T>
1232.896 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(result_type)
1232.897 -    internal_visit(const boost::detail::variant::backup_holder<T>& operand, long)
1232.898 -    {
1232.899 -        return internal_visit( operand.get(), 1L );
1232.900 -    }
1232.901 -
1232.902 -};
1232.903 -
1232.904 -}} // namespace detail::variant
1232.905 -
1232.906 -///////////////////////////////////////////////////////////////////////////////
1232.907 -// class template variant (concept inspired by Andrei Alexandrescu)
1232.908 -//
1232.909 -// See docs and boost/variant/variant_fwd.hpp for more information.
1232.910 -//
1232.911 -template <
1232.912 -      typename T0_
1232.913 -    , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(typename T)
1232.914 -    >
1232.915 -class variant
1232.916 -{
1232.917 -private: // helpers, for typedefs (below)
1232.918 -
1232.919 -    typedef variant wknd_self_t;
1232.920 -
1232.921 -    struct is_recursive_
1232.922 -        : detail::variant::is_recursive_flag<T0_>
1232.923 -    {
1232.924 -    };
1232.925 -
1232.926 -    typedef typename mpl::eval_if<
1232.927 -          is_recursive_
1232.928 -        , T0_
1232.929 -        , mpl::identity< T0_ >
1232.930 -        >::type unwrapped_T0_;
1232.931 -
1232.932 -    struct is_sequence_based_
1232.933 -        : detail::variant::is_over_sequence<unwrapped_T0_>
1232.934 -    {
1232.935 -    };
1232.936 -
1232.937 -#if !defined(BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT)
1232.938 -
1232.939 -private: // helpers, for typedefs (below)
1232.940 -
1232.941 -    typedef typename mpl::eval_if<
1232.942 -          is_sequence_based_
1232.943 -        , unwrapped_T0_ // over_sequence<...>::type
1232.944 -        , detail::variant::make_variant_list<
1232.945 -              unwrapped_T0_
1232.946 -            , BOOST_VARIANT_ENUM_SHIFTED_PARAMS(T)
1232.947 -            >
1232.948 -        >::type specified_types;
1232.949 -
1232.950 -    BOOST_STATIC_ASSERT((
1232.951 -          ::boost::mpl::not_< mpl::empty<specified_types> >::value
1232.952 -        ));
1232.953 -
1232.954 -    typedef typename mpl::eval_if<
1232.955 -          is_recursive_
1232.956 -        , mpl::transform<
1232.957 -              specified_types
1232.958 -            , mpl::protect<
1232.959 -                  detail::variant::quoted_enable_recursive<wknd_self_t>
1232.960 -                >
1232.961 -            >
1232.962 -        , mpl::identity< specified_types >
1232.963 -        >::type recursive_enabled_types;
1232.964 -
1232.965 -public: // public typedefs
1232.966 -
1232.967 -    typedef typename mpl::transform<
1232.968 -          recursive_enabled_types
1232.969 -        , unwrap_recursive<mpl::_1>
1232.970 -        >::type types;
1232.971 -
1232.972 -private: // internal typedefs
1232.973 -
1232.974 -    typedef typename mpl::transform<
1232.975 -          recursive_enabled_types
1232.976 -        , mpl::protect< detail::make_reference_content<> >
1232.977 -        >::type internal_types;
1232.978 -
1232.979 -    typedef typename mpl::front<
1232.980 -          internal_types
1232.981 -        >::type internal_T0;
1232.982 -
1232.983 -#else // defined(BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT)
1232.984 -
1232.985 -private: // helpers, for typedefs (below)
1232.986 -
1232.987 -    typedef unwrapped_T0_ T0;
1232.988 -
1232.989 -    #define BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS(z,N,_) \
1232.990 -        typedef typename mpl::eval_if< \
1232.991 -              is_recursive_ \
1232.992 -            , detail::variant::enable_recursive< \
1232.993 -                  BOOST_PP_CAT(T,N) \
1232.994 -                , wknd_self_t \
1232.995 -                > \
1232.996 -            , mpl::identity< BOOST_PP_CAT(T,N) > \
1232.997 -            >::type BOOST_PP_CAT(recursive_enabled_T,N); \
1232.998 -        /**/
1232.999 -
1232.1000 -    BOOST_PP_REPEAT(
1232.1001 -          BOOST_VARIANT_LIMIT_TYPES
1232.1002 -        , BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS
1232.1003 -        , _
1232.1004 -        )
1232.1005 -
1232.1006 -    #undef BOOST_VARIANT_AUX_ENABLE_RECURSIVE_TYPEDEFS
1232.1007 -
1232.1008 -    #define BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS(z,N,_) \
1232.1009 -        typedef typename unwrap_recursive< \
1232.1010 -              BOOST_PP_CAT(recursive_enabled_T,N) \
1232.1011 -            >::type BOOST_PP_CAT(public_T,N); \
1232.1012 -        /**/
1232.1013 -
1232.1014 -    BOOST_PP_REPEAT(
1232.1015 -          BOOST_VARIANT_LIMIT_TYPES
1232.1016 -        , BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS
1232.1017 -        , _
1232.1018 -        )
1232.1019 -
1232.1020 -    #undef BOOST_VARIANT_AUX_UNWRAP_RECURSIVE_TYPEDEFS
1232.1021 -
1232.1022 -public: // public typedefs
1232.1023 -
1232.1024 -    typedef typename detail::variant::make_variant_list<
1232.1025 -          BOOST_VARIANT_ENUM_PARAMS(public_T)
1232.1026 -        >::type types;
1232.1027 -
1232.1028 -private: // helpers, for internal typedefs (below)
1232.1029 -
1232.1030 -    #define BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS(z,N,_) \
1232.1031 -        typedef detail::make_reference_content< \
1232.1032 -              BOOST_PP_CAT(recursive_enabled_T,N) \
1232.1033 -            >::type BOOST_PP_CAT(internal_T,N); \
1232.1034 -        /**/
1232.1035 -
1232.1036 -    BOOST_PP_REPEAT(
1232.1037 -          BOOST_VARIANT_LIMIT_TYPES
1232.1038 -        , BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS
1232.1039 -        , _
1232.1040 -        )
1232.1041 -
1232.1042 -    #undef BOOST_VARIANT_AUX_MAKE_REFERENCE_CONTENT_TYPEDEFS
1232.1043 -
1232.1044 -private: // internal typedefs
1232.1045 -
1232.1046 -    typedef typename detail::variant::make_variant_list<
1232.1047 -          BOOST_VARIANT_ENUM_PARAMS(internal_T)
1232.1048 -        >::type internal_types;
1232.1049 -
1232.1050 -private: // static precondition assertions
1232.1051 -
1232.1052 -    // NOTE TO USER :
1232.1053 -    // variant< type-sequence > syntax is not supported on this compiler!
1232.1054 -    //
1232.1055 -    BOOST_MPL_ASSERT_NOT(( is_sequence_based_ ));
1232.1056 -
1232.1057 -#endif // BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT workaround
1232.1058 -
1232.1059 -private: // helpers, for representation (below)
1232.1060 -
1232.1061 -    typedef typename detail::variant::find_fallback_type<
1232.1062 -          internal_types
1232.1063 -        >::type fallback_type_result_;
1232.1064 -
1232.1065 -    typedef typename fallback_type_result_::first
1232.1066 -        fallback_type_index_;
1232.1067 -    typedef typename fallback_type_result_::second
1232.1068 -        fallback_type_;
1232.1069 -
1232.1070 -    struct has_fallback_type_
1232.1071 -        : mpl::not_<
1232.1072 -              is_same< fallback_type_, detail::variant::no_fallback_type >
1232.1073 -            >
1232.1074 -    {
1232.1075 -    };
1232.1076 -
1232.1077 -    typedef has_fallback_type_
1232.1078 -        never_uses_backup_flag;
1232.1079 -
1232.1080 -    typedef typename detail::variant::make_storage<
1232.1081 -          internal_types, never_uses_backup_flag
1232.1082 -        >::type storage_t;
1232.1083 -
1232.1084 -private: // helpers, for representation (below)
1232.1085 -
1232.1086 -    // which_ on:
1232.1087 -    // * [0,  size<internal_types>) indicates stack content
1232.1088 -    // * [-size<internal_types>, 0) indicates pointer to heap backup
1232.1089 -    // if which_ >= 0:
1232.1090 -    // * then which() -> which_
1232.1091 -    // * else which() -> -(which_ + 1)
1232.1092 -
1232.1093 -#if !defined(BOOST_VARIANT_MINIMIZE_SIZE)
1232.1094 -
1232.1095 -    typedef int which_t;
1232.1096 -
1232.1097 -#else // defined(BOOST_VARIANT_MINIMIZE_SIZE)
1232.1098 -
1232.1099 -    // [if O1_size available, then attempt which_t size optimization...]
1232.1100 -    // [select signed char if fewer than SCHAR_MAX types, else signed int:]
1232.1101 -    typedef typename mpl::eval_if<
1232.1102 -          mpl::equal_to< mpl::O1_size<internal_types>, mpl::long_<-1> >
1232.1103 -        , mpl::identity< int >
1232.1104 -        , mpl::if_<
1232.1105 -              mpl::less< mpl::O1_size<internal_types>, mpl::int_<SCHAR_MAX> >
1232.1106 -            , signed char
1232.1107 -            , int
1232.1108 -            >
1232.1109 -        >::type which_t;
1232.1110 -
1232.1111 -#endif // BOOST_VARIANT_MINIMIZE_SIZE switch
1232.1112 -
1232.1113 -// representation -- private when possible
1232.1114 -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1232.1115 -    private:
1232.1116 -#else
1232.1117 -    public:
1232.1118 -#endif
1232.1119 -
1232.1120 -    which_t which_;
1232.1121 -    storage_t storage_;
1232.1122 -
1232.1123 -    void indicate_which(int which)
1232.1124 -    {
1232.1125 -        which_ = static_cast<which_t>( which );
1232.1126 -    }
1232.1127 -
1232.1128 -    void indicate_backup_which(int which)
1232.1129 -    {
1232.1130 -        which_ = static_cast<which_t>( -(which + 1) );
1232.1131 -    }
1232.1132 -
1232.1133 -private: // helpers, for queries (below)
1232.1134 -
1232.1135 -    bool using_backup() const
1232.1136 -    {
1232.1137 -        return which_ < 0;
1232.1138 -    }
1232.1139 -
1232.1140 -public: // queries
1232.1141 -
1232.1142 -    int which() const
1232.1143 -    {
1232.1144 -        // If using heap backup...
1232.1145 -        if (using_backup())
1232.1146 -            // ...then return adjusted which_:
1232.1147 -            return -(which_ + 1);
1232.1148 -
1232.1149 -        // Otherwise, return which_ directly:
1232.1150 -        return which_;
1232.1151 -    }
1232.1152 -
1232.1153 -private: // helpers, for structors (below)
1232.1154 -
1232.1155 -    struct initializer
1232.1156 -        : BOOST_VARIANT_AUX_INITIALIZER_T(
1232.1157 -              recursive_enabled_types, recursive_enabled_T
1232.1158 -            )
1232.1159 -    {
1232.1160 -    };
1232.1161 -
1232.1162 -    void destroy_content()
1232.1163 -    {
1232.1164 -        detail::variant::destroyer visitor;
1232.1165 -        this->internal_apply_visitor(visitor);
1232.1166 -    }
1232.1167 -
1232.1168 -public: // structors
1232.1169 -
1232.1170 -    ~variant()
1232.1171 -    {
1232.1172 -        destroy_content();
1232.1173 -    }
1232.1174 -
1232.1175 -    variant()
1232.1176 -    {
1232.1177 -        // NOTE TO USER :
1232.1178 -        // Compile error from here indicates that the first bound
1232.1179 -        // type is not default-constructible, and so variant cannot
1232.1180 -        // support its own default-construction.
1232.1181 -        //
1232.1182 -        new( storage_.address() ) internal_T0();
1232.1183 -        indicate_which(0); // zero is the index of the first bounded type
1232.1184 -    }
1232.1185 -
1232.1186 -private: // helpers, for structors, cont. (below)
1232.1187 -
1232.1188 -    class convert_copy_into
1232.1189 -        : public static_visitor<int>
1232.1190 -    {
1232.1191 -    private: // representation
1232.1192 -
1232.1193 -        void* storage_;
1232.1194 -
1232.1195 -    public: // structors
1232.1196 -
1232.1197 -        explicit convert_copy_into(void* storage)
1232.1198 -            : storage_(storage)
1232.1199 -        {
1232.1200 -        }
1232.1201 -
1232.1202 -    public: // internal visitor interfaces (below)
1232.1203 -
1232.1204 -        template <typename T>
1232.1205 -        int internal_visit(T& operand, int) const
1232.1206 -        {
1232.1207 -            // NOTE TO USER :
1232.1208 -            // Compile error here indicates one of the source variant's types 
1232.1209 -            // cannot be unambiguously converted to the destination variant's
1232.1210 -            // types (or that no conversion exists).
1232.1211 -            //
1232.1212 -            return initializer::initialize(storage_, operand);
1232.1213 -        }
1232.1214 -
1232.1215 -#   if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564))
1232.1216 -        template <typename T>
1232.1217 -        result_type internal_visit(const T& operand, int) const
1232.1218 -        {
1232.1219 -            return initializer::initialize(storage_, operand);
1232.1220 -        }
1232.1221 -#   endif
1232.1222 -
1232.1223 -        template <typename T>
1232.1224 -        int internal_visit(boost::detail::reference_content<T>& operand, long) const
1232.1225 -        {
1232.1226 -            return internal_visit( operand.get(), 1L );
1232.1227 -        }
1232.1228 -
1232.1229 -        template <typename T>
1232.1230 -        int internal_visit(const boost::detail::reference_content<T>& operand, long) const
1232.1231 -        {
1232.1232 -            return internal_visit( operand.get(), 1L );
1232.1233 -        }
1232.1234 -
1232.1235 -        template <typename T>
1232.1236 -        int internal_visit(boost::detail::variant::backup_holder<T>& operand, long) const
1232.1237 -        {
1232.1238 -            return internal_visit( operand.get(), 1L );
1232.1239 -        }
1232.1240 -
1232.1241 -        template <typename T>
1232.1242 -        int internal_visit(const boost::detail::variant::backup_holder<T>& operand, long) const
1232.1243 -        {
1232.1244 -            return internal_visit( operand.get(), 1L );
1232.1245 -        }
1232.1246 -
1232.1247 -        template <typename T>
1232.1248 -        int internal_visit(boost::recursive_wrapper<T>& operand, long) const
1232.1249 -        {
1232.1250 -            return internal_visit( operand.get(), 1L );
1232.1251 -        }
1232.1252 -
1232.1253 -        template <typename T>
1232.1254 -        int internal_visit(const boost::recursive_wrapper<T>& operand, long) const
1232.1255 -        {
1232.1256 -            return internal_visit( operand.get(), 1L );
1232.1257 -        }
1232.1258 -
1232.1259 -    };
1232.1260 -
1232.1261 -    friend class convert_copy_into;
1232.1262 -
1232.1263 -private: // helpers, for structors, below 
1232.1264 -
1232.1265 -    template <typename T>
1232.1266 -    void convert_construct(
1232.1267 -          T& operand
1232.1268 -        , int
1232.1269 -        , mpl::false_ = mpl::false_() // is_foreign_variant
1232.1270 -        )
1232.1271 -    {
1232.1272 -        // NOTE TO USER :
1232.1273 -        // Compile error here indicates that the given type is not 
1232.1274 -        // unambiguously convertible to one of the variant's types
1232.1275 -        // (or that no conversion exists).
1232.1276 -        //
1232.1277 -        indicate_which(
1232.1278 -              initializer::initialize(
1232.1279 -                  storage_.address()
1232.1280 -                , operand
1232.1281 -                )
1232.1282 -            );
1232.1283 -    }
1232.1284 -
1232.1285 -    template <typename Variant>
1232.1286 -    void convert_construct(
1232.1287 -          Variant& operand
1232.1288 -        , long
1232.1289 -        , mpl::true_// is_foreign_variant
1232.1290 -        )
1232.1291 -    {
1232.1292 -        convert_copy_into visitor(storage_.address());
1232.1293 -        indicate_which(
1232.1294 -              operand.internal_apply_visitor(visitor)
1232.1295 -            );
1232.1296 -    }
1232.1297 -
1232.1298 -    template <typename Variant>
1232.1299 -    void convert_construct_variant(Variant& operand)
1232.1300 -    {
1232.1301 -        // [Determine if the given variant is itself a bounded type, or if its
1232.1302 -        //  content needs to be converted (i.e., it is a 'foreign' variant):]
1232.1303 -        //
1232.1304 -
1232.1305 -        typedef typename mpl::find_if<
1232.1306 -              types
1232.1307 -            , is_same<
1232.1308 -                  add_const<mpl::_1>
1232.1309 -                , const Variant
1232.1310 -                >
1232.1311 -            >::type found_it;
1232.1312 -
1232.1313 -        typedef typename mpl::end<types>::type not_found;
1232.1314 -        typedef typename is_same<
1232.1315 -              found_it, not_found
1232.1316 -            >::type is_foreign_variant;
1232.1317 -
1232.1318 -        // Convert construct from operand:
1232.1319 -        convert_construct(
1232.1320 -              operand, 1L
1232.1321 -            , is_foreign_variant()
1232.1322 -            );
1232.1323 -    }
1232.1324 -
1232.1325 -    template <BOOST_VARIANT_ENUM_PARAMS(typename U)>
1232.1326 -    void convert_construct(
1232.1327 -          boost::variant<BOOST_VARIANT_ENUM_PARAMS(U)>& operand
1232.1328 -        , long
1232.1329 -        )
1232.1330 -    {
1232.1331 -        convert_construct_variant(operand);
1232.1332 -    }
1232.1333 -
1232.1334 -    template <BOOST_VARIANT_ENUM_PARAMS(typename U)>
1232.1335 -    void convert_construct(
1232.1336 -          const boost::variant<BOOST_VARIANT_ENUM_PARAMS(U)>& operand
1232.1337 -        , long
1232.1338 -        )
1232.1339 -    {
1232.1340 -        convert_construct_variant(operand);    
1232.1341 -    }
1232.1342 -
1232.1343 -public: // structors, cont.
1232.1344 -
1232.1345 -#if !defined(BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING)
1232.1346 -
1232.1347 -    template <typename T>
1232.1348 -    variant(const T& operand)
1232.1349 -    {
1232.1350 -        convert_construct(operand, 1L);
1232.1351 -    }
1232.1352 -
1232.1353 -    template <typename T>
1232.1354 -    variant(T& operand)
1232.1355 -    {
1232.1356 -        convert_construct(operand, 1L);
1232.1357 -    }
1232.1358 -
1232.1359 -#elif defined(BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND)
1232.1360 -
1232.1361 -    // For compilers that cannot distinguish between T& and const T& in
1232.1362 -    // template constructors, but do fully support SFINAE, we can workaround:
1232.1363 -
1232.1364 -    template <typename T>
1232.1365 -    variant(const T& operand)
1232.1366 -    {
1232.1367 -        convert_construct(operand, 1L);
1232.1368 -    }
1232.1369 -
1232.1370 -    template <typename T>
1232.1371 -    variant(
1232.1372 -          T& operand
1232.1373 -        , typename enable_if<
1232.1374 -              mpl::not_< is_const<T> >
1232.1375 -            , void
1232.1376 -            >::type* = 0
1232.1377 -        )
1232.1378 -    {
1232.1379 -        convert_construct(operand, 1L);
1232.1380 -    }
1232.1381 -
1232.1382 -#else // !defined(BOOST_VARIANT_AUX_HAS_CONSTRUCTOR_TEMPLATE_ORDERING_SFINAE_WKND)
1232.1383 -
1232.1384 -    // For compilers that cannot distinguish between T& and const T& in
1232.1385 -    // template constructors, and do NOT support SFINAE, we can't workaround:
1232.1386 -
1232.1387 -    template <typename T>
1232.1388 -    variant(const T& operand)
1232.1389 -    {
1232.1390 -        convert_construct(operand, 1L);
1232.1391 -    }
1232.1392 -
1232.1393 -#endif // BOOST_VARIANT_AUX_BROKEN_CONSTRUCTOR_TEMPLATE_ORDERING workarounds
1232.1394 -
1232.1395 -public: // structors, cont.
1232.1396 -
1232.1397 -    // [MSVC6 requires copy constructor appear after template constructors]
1232.1398 -    variant(const variant& operand)
1232.1399 -    {
1232.1400 -        // Copy the value of operand into *this...
1232.1401 -        detail::variant::copy_into visitor( storage_.address() );
1232.1402 -        operand.internal_apply_visitor(visitor);
1232.1403 -
1232.1404 -        // ...and activate the *this's primary storage on success:
1232.1405 -        indicate_which(operand.which());
1232.1406 -    }
1232.1407 -
1232.1408 -private: // helpers, for modifiers (below)
1232.1409 -
1232.1410 -#   if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1232.1411 -    template <typename Variant, typename RhsT>
1232.1412 -    friend class detail::variant::backup_assigner;
1232.1413 -#   endif
1232.1414 -
1232.1415 -    // class assigner
1232.1416 -    //
1232.1417 -    // Internal visitor that "assigns" the visited value to the given variant
1232.1418 -    // by appropriate destruction and copy-construction.
1232.1419 -    //
1232.1420 -
1232.1421 -    class assigner
1232.1422 -        : public static_visitor<>
1232.1423 -    {
1232.1424 -    private: // representation
1232.1425 -
1232.1426 -        variant& lhs_;
1232.1427 -        int rhs_which_;
1232.1428 -
1232.1429 -    public: // structors
1232.1430 -
1232.1431 -        assigner(variant& lhs, int rhs_which)
1232.1432 -            : lhs_(lhs)
1232.1433 -            , rhs_which_(rhs_which)
1232.1434 -        {
1232.1435 -        }
1232.1436 -
1232.1437 -    private: // helpers, for internal visitor interface (below)
1232.1438 -
1232.1439 -        template <typename RhsT, typename B1, typename B2>
1232.1440 -        void assign_impl(
1232.1441 -              const RhsT& rhs_content
1232.1442 -            , mpl::true_// has_nothrow_copy
1232.1443 -            , B1// has_nothrow_move_constructor
1232.1444 -            , B2// has_fallback_type
1232.1445 -            )
1232.1446 -        {
1232.1447 -            // Destroy lhs's content...
1232.1448 -            lhs_.destroy_content(); // nothrow
1232.1449 -
1232.1450 -            // ...copy rhs content into lhs's storage...
1232.1451 -            new(lhs_.storage_.address())
1232.1452 -                RhsT( rhs_content ); // nothrow
1232.1453 -
1232.1454 -            // ...and indicate new content type:
1232.1455 -            lhs_.indicate_which(rhs_which_); // nothrow
1232.1456 -        }
1232.1457 -
1232.1458 -        template <typename RhsT, typename B>
1232.1459 -        void assign_impl(
1232.1460 -              const RhsT& rhs_content
1232.1461 -            , mpl::false_// has_nothrow_copy
1232.1462 -            , mpl::true_// has_nothrow_move_constructor
1232.1463 -            , B// has_fallback_type
1232.1464 -            )
1232.1465 -        {
1232.1466 -            // Attempt to make a temporary copy (so as to move it below)...
1232.1467 -            RhsT temp(rhs_content);
1232.1468 -
1232.1469 -            // ...and upon success destroy lhs's content...
1232.1470 -            lhs_.destroy_content(); // nothrow
1232.1471 -
1232.1472 -            // ...move the temporary copy into lhs's storage...
1232.1473 -            new(lhs_.storage_.address())
1232.1474 -                RhsT( detail::variant::move(temp) ); // nothrow
1232.1475 -
1232.1476 -            // ...and indicate new content type:
1232.1477 -            lhs_.indicate_which(rhs_which_); // nothrow
1232.1478 -        }
1232.1479 -
1232.1480 -        template <typename RhsT>
1232.1481 -        void assign_impl(
1232.1482 -              const RhsT& rhs_content
1232.1483 -            , mpl::false_// has_nothrow_copy
1232.1484 -            , mpl::false_// has_nothrow_move_constructor
1232.1485 -            , mpl::true_// has_fallback_type
1232.1486 -            )
1232.1487 -        {
1232.1488 -            // Destroy lhs's content...
1232.1489 -            lhs_.destroy_content(); // nothrow
1232.1490 -
1232.1491 -            try
1232.1492 -            {
1232.1493 -                // ...and attempt to copy rhs's content into lhs's storage:
1232.1494 -                new(lhs_.storage_.address())
1232.1495 -                    RhsT( rhs_content );
1232.1496 -            }
1232.1497 -            catch (...)
1232.1498 -            {
1232.1499 -                // In case of failure, default-construct fallback type in lhs's storage...
1232.1500 -                new (lhs_.storage_.address())
1232.1501 -                    fallback_type_; // nothrow
1232.1502 -
1232.1503 -                // ...indicate construction of fallback type...
1232.1504 -                lhs_.indicate_which(
1232.1505 -                      BOOST_MPL_AUX_VALUE_WKND(fallback_type_index_)::value
1232.1506 -                    ); // nothrow
1232.1507 -
1232.1508 -                // ...and rethrow:
1232.1509 -                throw;
1232.1510 -            }
1232.1511 -
1232.1512 -            // In the event of success, indicate new content type:
1232.1513 -            lhs_.indicate_which(rhs_which_); // nothrow
1232.1514 -        }
1232.1515 -
1232.1516 -        template <typename RhsT>
1232.1517 -        void assign_impl(
1232.1518 -              const RhsT& rhs_content
1232.1519 -            , mpl::false_// has_nothrow_copy
1232.1520 -            , mpl::false_// has_nothrow_move_constructor
1232.1521 -            , mpl::false_// has_fallback_type
1232.1522 -            )
1232.1523 -        {
1232.1524 -            detail::variant::backup_assigner<wknd_self_t, RhsT>
1232.1525 -                visitor(lhs_, rhs_which_, rhs_content);
1232.1526 -            lhs_.internal_apply_visitor(visitor);
1232.1527 -        }
1232.1528 -
1232.1529 -    public: // internal visitor interfaces
1232.1530 -
1232.1531 -        template <typename RhsT>
1232.1532 -            BOOST_VARIANT_AUX_RETURN_VOID_TYPE
1232.1533 -        internal_visit(const RhsT& rhs_content, int)
1232.1534 -        {
1232.1535 -            typedef typename has_nothrow_copy<RhsT>::type
1232.1536 -                nothrow_copy;
1232.1537 -            typedef typename mpl::or_< // reduces compile-time
1232.1538 -                  nothrow_copy
1232.1539 -                , detail::variant::has_nothrow_move_constructor<RhsT>
1232.1540 -                >::type nothrow_move_constructor;
1232.1541 -
1232.1542 -            assign_impl(
1232.1543 -                  rhs_content
1232.1544 -                , nothrow_copy()
1232.1545 -                , nothrow_move_constructor()
1232.1546 -                , has_fallback_type_()
1232.1547 -                );
1232.1548 -
1232.1549 -            BOOST_VARIANT_AUX_RETURN_VOID;
1232.1550 -        }
1232.1551 -
1232.1552 -    };
1232.1553 -
1232.1554 -    friend class assigner;
1232.1555 -
1232.1556 -    void variant_assign(const variant& rhs)
1232.1557 -    {
1232.1558 -        // If the contained types are EXACTLY the same...
1232.1559 -        if (which_ == rhs.which_)
1232.1560 -        {
1232.1561 -            // ...then assign rhs's storage to lhs's content:
1232.1562 -            detail::variant::assign_storage visitor(rhs.storage_.address());
1232.1563 -            this->internal_apply_visitor(visitor);
1232.1564 -        }
1232.1565 -        else
1232.1566 -        {
1232.1567 -            // Otherwise, perform general (copy-based) variant assignment:
1232.1568 -            assigner visitor(*this, rhs.which());
1232.1569 -            rhs.internal_apply_visitor(visitor); 
1232.1570 -        }
1232.1571 -    }
1232.1572 -
1232.1573 -private: // helpers, for modifiers (below)
1232.1574 -
1232.1575 -    template <typename T>
1232.1576 -    void assign(const T& rhs)
1232.1577 -    {
1232.1578 -        // If direct T-to-T assignment is not possible...
1232.1579 -        detail::variant::direct_assigner<const T> direct_assign(rhs);
1232.1580 -        if (this->apply_visitor(direct_assign) == false)
1232.1581 -        {
1232.1582 -            // ...then convert rhs to variant and assign:
1232.1583 -            //
1232.1584 -            // While potentially inefficient, the following construction of a
1232.1585 -            // variant allows T as any type convertible to one of the bounded
1232.1586 -            // types without excessive code redundancy.
1232.1587 -            //
1232.1588 -            variant temp(rhs);
1232.1589 -            variant_assign( detail::variant::move(temp) );
1232.1590 -        }
1232.1591 -    }
1232.1592 -
1232.1593 -public: // modifiers
1232.1594 -
1232.1595 -    template <typename T>
1232.1596 -    variant& operator=(const T& rhs)
1232.1597 -    {
1232.1598 -        assign(rhs);
1232.1599 -        return *this;
1232.1600 -    }
1232.1601 -
1232.1602 -    // [MSVC6 requires copy assign appear after templated operator=]
1232.1603 -    variant& operator=(const variant& rhs)
1232.1604 -    {
1232.1605 -        variant_assign(rhs);
1232.1606 -        return *this;
1232.1607 -    }
1232.1608 -
1232.1609 -    void swap(variant& rhs)
1232.1610 -    {
1232.1611 -        // If the contained types are the same...
1232.1612 -        if (which() == rhs.which())
1232.1613 -        {
1232.1614 -            // ...then swap the values directly:
1232.1615 -            detail::variant::swap_with<variant> visitor(rhs);
1232.1616 -            this->apply_visitor(visitor);
1232.1617 -        }
1232.1618 -        else
1232.1619 -        {
1232.1620 -            // ...otherwise, perform general variant swap:
1232.1621 -            variant tmp( detail::variant::move(rhs) );
1232.1622 -            rhs = detail::variant::move(*this);
1232.1623 -            *this = detail::variant::move(tmp);
1232.1624 -        }
1232.1625 -    }
1232.1626 -
1232.1627 -public: // queries
1232.1628 -
1232.1629 -    //
1232.1630 -    // NOTE: member which() defined above.
1232.1631 -    //
1232.1632 -
1232.1633 -    bool empty() const
1232.1634 -    {
1232.1635 -        return false;
1232.1636 -    }
1232.1637 -
1232.1638 -    const std::type_info& type() const
1232.1639 -    {
1232.1640 -        detail::variant::reflect visitor;
1232.1641 -        return this->apply_visitor(visitor);
1232.1642 -    }
1232.1643 -
1232.1644 -public: // prevent comparison with foreign types
1232.1645 -
1232.1646 -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
1232.1647 -
1232.1648 -#   define BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE \
1232.1649 -    void
1232.1650 -
1232.1651 -#else // MSVC7
1232.1652 -
1232.1653 -    //
1232.1654 -    // MSVC7 gives error about return types for above being different than
1232.1655 -    // the true comparison operator overloads:
1232.1656 -    //
1232.1657 -
1232.1658 -#   define BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE \
1232.1659 -    bool
1232.1660 -
1232.1661 -#endif // MSVC7 workaround
1232.1662 -
1232.1663 -    template <typename U>
1232.1664 -        BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE
1232.1665 -    operator==(const U&) const
1232.1666 -    {
1232.1667 -        BOOST_STATIC_ASSERT( false && sizeof(U) );
1232.1668 -    }
1232.1669 -
1232.1670 -    template <typename U>
1232.1671 -        BOOST_VARIANT_AUX_FAIL_COMPARISON_RETURN_TYPE
1232.1672 -    operator<(const U&) const
1232.1673 -    {
1232.1674 -        BOOST_STATIC_ASSERT( false && sizeof(U) );
1232.1675 -    }
1232.1676 -
1232.1677 -public: // comparison operators
1232.1678 -
1232.1679 -    // [MSVC6 requires these operators appear after template operators]
1232.1680 -
1232.1681 -    bool operator==(const variant& rhs) const
1232.1682 -    {
1232.1683 -        if (this->which() != rhs.which())
1232.1684 -            return false;
1232.1685 -
1232.1686 -        detail::variant::comparer<
1232.1687 -              variant, detail::variant::equal_comp
1232.1688 -            > visitor(*this);
1232.1689 -        return rhs.apply_visitor(visitor);
1232.1690 -    }
1232.1691 -
1232.1692 -    bool operator<(const variant& rhs) const
1232.1693 -    {
1232.1694 -        //
1232.1695 -        // Dirk Schreib suggested this collating order.
1232.1696 -        //
1232.1697 -
1232.1698 -        if (this->which() != rhs.which())
1232.1699 -            return this->which() < rhs.which();
1232.1700 -
1232.1701 -        detail::variant::comparer<
1232.1702 -              variant, detail::variant::less_comp
1232.1703 -            > visitor(*this);
1232.1704 -        return rhs.apply_visitor(visitor);
1232.1705 -    }
1232.1706 -
1232.1707 -// helpers, for visitation support (below) -- private when possible
1232.1708 -#if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1232.1709 -
1232.1710 -    template < BOOST_VARIANT_ENUM_PARAMS(typename U) >
1232.1711 -    friend class variant;
1232.1712 -
1232.1713 -private:
1232.1714 -
1232.1715 -#else// defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1232.1716 -
1232.1717 -public:
1232.1718 -
1232.1719 -#endif// !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
1232.1720 -
1232.1721 -    template <typename Visitor, typename VoidPtrCV>
1232.1722 -    static
1232.1723 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1232.1724 -              typename Visitor::result_type
1232.1725 -            )
1232.1726 -    internal_apply_visitor_impl(
1232.1727 -          int internal_which
1232.1728 -        , int logical_which
1232.1729 -        , Visitor& visitor
1232.1730 -        , VoidPtrCV storage
1232.1731 -        )
1232.1732 -    {
1232.1733 -        typedef mpl::int_<0> first_which;
1232.1734 -        typedef typename mpl::begin<internal_types>::type first_it;
1232.1735 -        typedef typename mpl::end<internal_types>::type last_it;
1232.1736 -
1232.1737 -        typedef detail::variant::visitation_impl_step<
1232.1738 -              first_it, last_it
1232.1739 -            > first_step;
1232.1740 -
1232.1741 -        return detail::variant::visitation_impl(
1232.1742 -              internal_which, logical_which
1232.1743 -            , visitor, storage, mpl::false_()
1232.1744 -            , never_uses_backup_flag()
1232.1745 -            , static_cast<first_which*>(0), static_cast<first_step*>(0)
1232.1746 -            );
1232.1747 -    }
1232.1748 -
1232.1749 -    template <typename Visitor>
1232.1750 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1232.1751 -              typename Visitor::result_type
1232.1752 -            )
1232.1753 -    internal_apply_visitor(Visitor& visitor)
1232.1754 -    {
1232.1755 -        return internal_apply_visitor_impl(
1232.1756 -              which_, which(), visitor, storage_.address()
1232.1757 -            );
1232.1758 -    }
1232.1759 -
1232.1760 -    template <typename Visitor>
1232.1761 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1232.1762 -              typename Visitor::result_type
1232.1763 -            )
1232.1764 -    internal_apply_visitor(Visitor& visitor) const
1232.1765 -    {
1232.1766 -        return internal_apply_visitor_impl(
1232.1767 -              which_, which(), visitor, storage_.address()
1232.1768 -            );
1232.1769 -    }
1232.1770 -
1232.1771 -public: // visitation support
1232.1772 -
1232.1773 -    template <typename Visitor>
1232.1774 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1232.1775 -              typename Visitor::result_type
1232.1776 -            )
1232.1777 -    apply_visitor(Visitor& visitor)
1232.1778 -    {
1232.1779 -        detail::variant::invoke_visitor<Visitor> invoker(visitor);
1232.1780 -        return this->internal_apply_visitor(invoker);
1232.1781 -    }
1232.1782 -
1232.1783 -    template <typename Visitor>
1232.1784 -        BOOST_VARIANT_AUX_GENERIC_RESULT_TYPE(
1232.1785 -              typename Visitor::result_type
1232.1786 -            )
1232.1787 -    apply_visitor(Visitor& visitor) const
1232.1788 -    {
1232.1789 -        detail::variant::invoke_visitor<Visitor> invoker(visitor);
1232.1790 -        return this->internal_apply_visitor(invoker);
1232.1791 -    }
1232.1792 -
1232.1793 -}; // class variant
1232.1794 -
1232.1795 -///////////////////////////////////////////////////////////////////////////////
1232.1796 -// metafunction make_variant_over
1232.1797 -//
1232.1798 -// See docs and boost/variant/variant_fwd.hpp for more information.
1232.1799 -//
1232.1800 -template <typename Types>
1232.1801 -struct make_variant_over
1232.1802 -{
1232.1803 -private: // precondition assertions
1232.1804 -
1232.1805 -#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300)
1232.1806 -    BOOST_STATIC_ASSERT(( ::boost::mpl::is_sequence<Types>::value ));
1232.1807 -#endif
1232.1808 -
1232.1809 -public: // metafunction result
1232.1810 -
1232.1811 -    typedef variant<
1232.1812 -          detail::variant::over_sequence< Types >
1232.1813 -        > type;
1232.1814 -
1232.1815 -};
1232.1816 -
1232.1817 -///////////////////////////////////////////////////////////////////////////////
1232.1818 -// function template swap
1232.1819 -//
1232.1820 -// Swaps two variants of the same type (i.e., identical specification).
1232.1821 -//
1232.1822 -template < BOOST_VARIANT_ENUM_PARAMS(typename T) >
1232.1823 -inline void swap(
1232.1824 -      variant< BOOST_VARIANT_ENUM_PARAMS(T) >& lhs
1232.1825 -    , variant< BOOST_VARIANT_ENUM_PARAMS(T) >& rhs
1232.1826 -    )
1232.1827 -{
1232.1828 -    lhs.swap(rhs);
1232.1829 -}
1232.1830 -
1232.1831 -} // namespace boost
1232.1832 -
1232.1833 -// implementation additions
1232.1834 -#include "boost/variant/detail/variant_io.hpp"
1232.1835 -
1232.1836 -#endif // BOOST_VARIANT_VARIANT_HPP
  1233.1 --- a/epoc32/include/stdapis/boost/version.hpp	Tue Mar 16 16:12:26 2010 +0000
  1233.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1233.3 @@ -1,35 +0,0 @@
  1233.4 -//  Boost version.hpp configuration header file  ------------------------------//
  1233.5 -
  1233.6 -//  (C) Copyright John maddock 1999. Distributed under the Boost
  1233.7 -//  Software License, Version 1.0. (See accompanying file
  1233.8 -//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  1233.9 -
 1233.10 -//  See http://www.boost.org/libs/config for documentation
 1233.11 -
 1233.12 -#ifndef BOOST_VERSION_HPP
 1233.13 -#define BOOST_VERSION_HPP
 1233.14 -
 1233.15 -//
 1233.16 -//  Caution, this is the only boost header that is guarenteed
 1233.17 -//  to change with every boost release, including this header
 1233.18 -//  will cause a recompile every time a new boost version is
 1233.19 -//  released.
 1233.20 -//
 1233.21 -//  BOOST_VERSION % 100 is the sub-minor version
 1233.22 -//  BOOST_VERSION / 100 % 1000 is the minor version
 1233.23 -//  BOOST_VERSION / 100000 is the major version
 1233.24 -
 1233.25 -#define BOOST_VERSION 103400
 1233.26 -
 1233.27 -//
 1233.28 -//  BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
 1233.29 -//  but as a *string* in the form "x_y" where x is the major version
 1233.30 -//  number and y is the minor version number.  This is used by
 1233.31 -//  <config/auto_link.hpp> to select which library version to link to.
 1233.32 -
 1233.33 -#define BOOST_LIB_VERSION "1_34"
 1233.34 -
 1233.35 -#endif
 1233.36 -
 1233.37 -
 1233.38 -
  1234.1 --- a/epoc32/include/stdapis/float.h	Tue Mar 16 16:12:26 2010 +0000
  1234.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1234.3 @@ -1,76 +0,0 @@
  1234.4 -/*-
  1234.5 - * Copyright (c) 1989 Regents of the University of California.
  1234.6 - * All rights reserved.
  1234.7 - *
  1234.8 - * Redistribution and use in source and binary forms, with or without
  1234.9 - * modification, are permitted provided that the following conditions
 1234.10 - * are met:
 1234.11 - * 1. Redistributions of source code must retain the above copyright
 1234.12 - *    notice, this list of conditions and the following disclaimer.
 1234.13 - * 2. Redistributions in binary form must reproduce the above copyright
 1234.14 - *    notice, this list of conditions and the following disclaimer in the
 1234.15 - *    documentation and/or other materials provided with the distribution.
 1234.16 - * 4. Neither the name of the University nor the names of its contributors
 1234.17 - *    may be used to endorse or promote products derived from this software
 1234.18 - *    without specific prior written permission.
 1234.19 - *
 1234.20 - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 1234.21 - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 1234.22 - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 1234.23 - * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 1234.24 - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 1234.25 - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 1234.26 - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 1234.27 - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 1234.28 - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 1234.29 - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 1234.30 - * SUCH DAMAGE.
 1234.31 - *
 1234.32 - *	from: @(#)float.h	7.1 (Berkeley) 5/8/90
 1234.33 - * $FreeBSD: src/sys/arm/include/float.h,v 1.5 2005/03/20 00:34:24 cognet Exp $
 1234.34 - */
 1234.35 -
 1234.36 -#ifndef _MACHINE_FLOAT_H_
 1234.37 -#define _MACHINE_FLOAT_H_ 1
 1234.38 -
 1234.39 -#include <sys/cdefs.h>
 1234.40 -
 1234.41 -__BEGIN_DECLS
 1234.42 -extern int __flt_rounds(void);
 1234.43 -__END_DECLS
 1234.44 -
 1234.45 -#define FLT_RADIX	2		/* b */
 1234.46 -#define FLT_ROUNDS	-1
 1234.47 -#define	FLT_EVAL_METHOD	(-1)		/* XXX */
 1234.48 -#define	DECIMAL_DIG	17		/* max precision in decimal digits */
 1234.49 -
 1234.50 -#define FLT_MANT_DIG	24		/* p */
 1234.51 -#define FLT_EPSILON	1.19209290E-07F	/* b**(1-p) */
 1234.52 -#define FLT_DIG		6		/* floor((p-1)*log10(b))+(b == 10) */
 1234.53 -#define FLT_MIN_EXP	(-125)		/* emin */
 1234.54 -#define FLT_MIN		1.17549435E-38F	/* b**(emin-1) */
 1234.55 -#define FLT_MIN_10_EXP	(-37)		/* ceil(log10(b**(emin-1))) */
 1234.56 -#define FLT_MAX_EXP	128		/* emax */
 1234.57 -#define FLT_MAX		3.40282347E+38F	/* (1-b**(-p))*b**emax */
 1234.58 -#define FLT_MAX_10_EXP	38		/* floor(log10((1-b**(-p))*b**emax)) */
 1234.59 -
 1234.60 -#define DBL_MANT_DIG	53
 1234.61 -#define DBL_EPSILON	2.2204460492503131E-16
 1234.62 -#define DBL_DIG		15
 1234.63 -#define DBL_MIN_EXP	(-1021)
 1234.64 -#define DBL_MIN		2.2250738585072014E-308
 1234.65 -#define DBL_MIN_10_EXP	(-307)
 1234.66 -#define DBL_MAX_EXP	1024
 1234.67 -#define DBL_MAX		1.7976931348623157E+308
 1234.68 -#define DBL_MAX_10_EXP	308
 1234.69 -
 1234.70 -#define LDBL_MANT_DIG	DBL_MANT_DIG
 1234.71 -#define LDBL_EPSILON	DBL_EPSILON
 1234.72 -#define LDBL_DIG	DBL_DIG
 1234.73 -#define LDBL_MIN_EXP	DBL_MIN_EXP
 1234.74 -#define LDBL_MIN	DBL_MIN
 1234.75 -#define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
 1234.76 -#define LDBL_MAX_EXP	DBL_MAX_EXP
 1234.77 -#define LDBL_MAX	DBL_MAX
 1234.78 -#define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
 1234.79 -#endif /* _MACHINE_FLOAT_H_ */
  1235.1 --- a/epoc32/include/stdapis/stlport/algorithm	Tue Mar 16 16:12:26 2010 +0000
  1235.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1235.3 @@ -1,60 +0,0 @@
  1235.4 -/*
  1235.5 - *
  1235.6 - * Copyright (c) 1994
  1235.7 - * Hewlett-Packard Company
  1235.8 - *
  1235.9 - * Copyright (c) 1996,1997
 1235.10 - * Silicon Graphics Computer Systems, Inc.
 1235.11 - *
 1235.12 - * Copyright (c) 1997
 1235.13 - * Moscow Center for SPARC Technology
 1235.14 - *
 1235.15 - * Copyright (c) 1999 
 1235.16 - * Boris Fomitchev
 1235.17 - *
 1235.18 - * This material is provided "as is", with absolutely no warranty expressed
 1235.19 - * or implied. Any use is at your own risk.
 1235.20 - *
 1235.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1235.22 - * without fee, provided the above notices are retained on all copies.
 1235.23 - * Permission to modify the code and to distribute modified code is granted,
 1235.24 - * provided the above notices are retained, and a notice that the code was
 1235.25 - * modified is included with the above copyright notice.
 1235.26 - *
 1235.27 - */
 1235.28 -
 1235.29 -#ifndef _STLP_ALGORITHM
 1235.30 -#define _STLP_ALGORITHM
 1235.31 -
 1235.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1235.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x1
 1235.34 -#  include <stl/_prolog.h>
 1235.35 -# endif
 1235.36 -
 1235.37 -#ifdef _STLP_PRAGMA_ONCE
 1235.38 -# pragma once
 1235.39 -#endif
 1235.40 -
 1235.41 -# if ! defined (_STLP_USE_NAMESPACES)
 1235.42 -// remove() conflicts, <cstdio> should always go first
 1235.43 -#  include <cstdio>
 1235.44 -# endif
 1235.45 -
 1235.46 -# ifndef _STLP_INTERNAL_ALGO_H
 1235.47 -#  include <stl/_algo.h>
 1235.48 -# endif
 1235.49 -
 1235.50 -#if defined (_STLP_IMPORT_VENDOR_STD)
 1235.51 -# include _STLP_NATIVE_HEADER(algorithm)
 1235.52 -#endif /* _STLP_IMPORT_VENDOR_STD */
 1235.53 -
 1235.54 -# if (_STLP_OUTERMOST_HEADER_ID == 0x1 )
 1235.55 -#  include <stl/_epilog.h>
 1235.56 -#  undef _STLP_OUTERMOST_HEADER_ID
 1235.57 -# endif
 1235.58 -
 1235.59 -#endif /* _STLP_ALGORITHM */
 1235.60 -
 1235.61 -// Local Variables:
 1235.62 -// mode:C++
 1235.63 -// End:
  1236.1 --- a/epoc32/include/stdapis/stlport/bitset	Tue Mar 16 16:12:26 2010 +0000
  1236.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1236.3 @@ -1,64 +0,0 @@
  1236.4 -/*
  1236.5 - * Copyright (c) 1998
  1236.6 - * Silicon Graphics Computer Systems, Inc.
  1236.7 - *
  1236.8 - * Copyright (c) 1999 
  1236.9 - * Boris Fomitchev
 1236.10 - *
 1236.11 - * This material is provided "as is", with absolutely no warranty expressed
 1236.12 - * or implied. Any use is at your own risk.
 1236.13 - *
 1236.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1236.15 - * without fee, provided the above notices are retained on all copies.
 1236.16 - * Permission to modify the code and to distribute modified code is granted,
 1236.17 - * provided the above notices are retained, and a notice that the code was
 1236.18 - * modified is included with the above copyright notice.
 1236.19 - *
 1236.20 - */
 1236.21 -
 1236.22 -#ifndef _STLP_BITSET
 1236.23 -#define _STLP_BITSET
 1236.24 -
 1236.25 -// This implementation of bitset<> has a second template parameter,
 1236.26 -// _WordT, which defaults to unsigned long.  *YOU SHOULD NOT USE
 1236.27 -// THIS FEATURE*.  It is experimental, and it may be removed in
 1236.28 -// future releases.
 1236.29 -
 1236.30 -// A bitset of size N, using words of type _WordT, will have 
 1236.31 -// N % (sizeof(_WordT) * CHAR_BIT) unused bits.  (They are the high-
 1236.32 -// order bits in the highest word.)  It is a class invariant
 1236.33 -// of class bitset<> that those unused bits are always zero.
 1236.34 -
 1236.35 -// Most of the actual code isn't contained in bitset<> itself, but in the 
 1236.36 -// base class _Base_bitset.  The base class works with whole words, not with
 1236.37 -// individual bits.  This allows us to specialize _Base_bitset for the
 1236.38 -// important special case where the bitset is only a single word.
 1236.39 -
 1236.40 -// The C++ standard does not define the precise semantics of operator[].
 1236.41 -// In this implementation the const version of operator[] is equivalent
 1236.42 -// to test(), except that it does no range checking.  The non-const version
 1236.43 -// returns a reference to a bit, again without doing any range checking.
 1236.44 -
 1236.45 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1236.46 -#  define _STLP_OUTERMOST_HEADER_ID 0x2
 1236.47 -#  include <stl/_prolog.h>
 1236.48 -# endif
 1236.49 -
 1236.50 -#ifdef _STLP_PRAGMA_ONCE
 1236.51 -# pragma once
 1236.52 -#endif
 1236.53 -
 1236.54 -# include <stl/_bitset.h>
 1236.55 -
 1236.56 -# if (_STLP_OUTERMOST_HEADER_ID == 0x2 )
 1236.57 -#  include <stl/_epilog.h>
 1236.58 -#  undef _STLP_OUTERMOST_HEADER_ID
 1236.59 -# endif
 1236.60 -
 1236.61 -#endif /* _STLP_BITSET */
 1236.62 -
 1236.63 -
 1236.64 -// Local Variables:
 1236.65 -// mode:C++
 1236.66 -// End:
 1236.67 -
  1237.1 --- a/epoc32/include/stdapis/stlport/cassert	Tue Mar 16 16:12:26 2010 +0000
  1237.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1237.3 @@ -1,39 +0,0 @@
  1237.4 -/*
  1237.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1237.6 - *
  1237.7 - * Copyright (c) 1999 
  1237.8 - * Boris Fomitchev
  1237.9 - *
 1237.10 - * This material is provided "as is", with absolutely no warranty expressed
 1237.11 - * or implied. Any use is at your own risk.
 1237.12 - *
 1237.13 - * Permission to use or copy this software for any purpose is hereby granted 
 1237.14 - * without fee, provided the above notices are retained on all copies.
 1237.15 - * Permission to modify the code and to distribute modified code is granted,
 1237.16 - * provided the above notices are retained, and a notice that the code was
 1237.17 - * modified is included with the above copyright notice.
 1237.18 - *
 1237.19 - */
 1237.20 -
 1237.21 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1237.22 -#  define _STLP_OUTERMOST_HEADER_ID 0x103
 1237.23 -#  include <stl/_prolog.h>
 1237.24 -# endif
 1237.25 -
 1237.26 -
 1237.27 -# if defined (_STLP_USE_NEW_C_HEADERS) || defined (__IN_STLPORT_CASSERT)
 1237.28 -#  include _STLP_NATIVE_CPP_C_HEADER(cassert)
 1237.29 -# else
 1237.30 -#  include <assert.h>
 1237.31 -# endif
 1237.32 -
 1237.33 -
 1237.34 -# if (_STLP_OUTERMOST_HEADER_ID == 0x103 )
 1237.35 -#  include <stl/_epilog.h>
 1237.36 -#  undef _STLP_OUTERMOST_HEADER_ID
 1237.37 -# endif
 1237.38 -
 1237.39 -
 1237.40 -// Local Variables:
 1237.41 -// mode:C++
 1237.42 -// End:
  1238.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1238.2 +++ b/epoc32/include/stdapis/stlport/config/_gcc.h	Wed Mar 31 12:27:01 2010 +0100
  1238.3 @@ -0,0 +1,461 @@
  1238.4 +/* STLport configuration file
  1238.5 + * It is internal STLport header - DO NOT include it directly
  1238.6 + */
  1238.7 +
  1238.8 +#define _STLP_COMPILER "gcc"
  1238.9 +
 1238.10 +/* Systems having GLIBC installed have different traits */
 1238.11 +#if defined (__linux__)
 1238.12 +#  ifndef _STLP_USE_GLIBC
 1238.13 +#    define _STLP_USE_GLIBC 1
 1238.14 +#  endif
 1238.15 +#  if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC)
 1238.16 +#    define _STLP_USE_UCLIBC 1
 1238.17 +#  endif
 1238.18 +#endif
 1238.19 +
 1238.20 +#if defined (__CYGWIN__) && \
 1238.21 +     (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99)
 1238.22 +#  define _STLP_NO_VENDOR_MATH_L
 1238.23 +#  define _STLP_NO_VENDOR_STDLIB_L
 1238.24 +#endif
 1238.25 +
 1238.26 +#if (__GNUC__ < 3)
 1238.27 +#  define _STLP_NO_VENDOR_STDLIB_L
 1238.28 +#endif
 1238.29 +
 1238.30 +/* We guess if we are using the cygwin distrib that has a special include schema.
 1238.31 + * There is no way to distinguish a cygwin distrib used in no-cygwin mode from a
 1238.32 + * mingw install. We are forced to use a configuration option
 1238.33 + */
 1238.34 +#if !defined (_STLP_NATIVE_INCLUDE_PATH) && \
 1238.35 +    (defined (__CYGWIN__) || defined (__MINGW32__) && defined (_STLP_NO_CYGWIN))
 1238.36 +#  if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3))
 1238.37 +#    define _STLP_NATIVE_INCLUDE_PATH ../../../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/include/c++
 1238.38 +#  elif defined (_STLP_NO_CYGWIN)
 1238.39 +#    define _STLP_NATIVE_INCLUDE_PATH ../mingw
 1238.40 +/*#  else
 1238.41 + * Before version gcc 3.4, the cygwin package include path was conform to the
 1238.42 + * GNU convention which is set later in this file.
 1238.43 + */
 1238.44 +#  endif
 1238.45 +#endif
 1238.46 +
 1238.47 +#if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4))
 1238.48 +/* define for gcc versions before 3.4.0. */
 1238.49 +#  define _STLP_NO_MEMBER_TEMPLATE_KEYWORD
 1238.50 +#endif
 1238.51 +
 1238.52 +/* azov: gcc on lynx have a bug that causes internal
 1238.53 + * compiler errors when compiling STLport with namespaces turned on.
 1238.54 + * When the compiler gets better - comment out _STLP_HAS_NO_NAMESPACES
 1238.55 + */
 1238.56 +#if defined (__Lynx__) && (__GNUC__ < 3)
 1238.57 +#  define _STLP_HAS_NO_NAMESPACES 1
 1238.58 +#  define _STLP_NO_STATIC_TEMPLATE_DATA 1
 1238.59 +/* turn off useless warning about including system headers */
 1238.60 +#  define __NO_INCLUDE_WARN__ 1
 1238.61 +#endif
 1238.62 +
 1238.63 +/* Tru64 Unix, AIX, HP : gcc there by default uses native ld and hence cannot auto-instantiate
 1238.64 +   static template data. If you are using GNU ld, please say so in stl_user_config.h header */
 1238.65 +#if (__GNUC__ < 3) && !defined(_STLP_GCC_USES_GNU_LD) && \
 1238.66 +   ((defined (__osf__) && defined (__alpha__)) || defined (_AIX) || defined (__hpux) || defined(__amigaos__) )
 1238.67 +#  define _STLP_NO_STATIC_TEMPLATE_DATA
 1238.68 +#endif
 1238.69 +
 1238.70 +#if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \
 1238.71 +                             (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \
 1238.72 +                             (defined (__MINGW32__) && defined (_MT)))
 1238.73 +#  define _REENTRANT
 1238.74 +#endif
 1238.75 +
 1238.76 +#if defined (__DJGPP)
 1238.77 +#  define _STLP_RAND48    1
 1238.78 +#  define _NOTHREADS    1
 1238.79 +#  undef  _PTHREADS
 1238.80 +#  define _STLP_LITTLE_ENDIAN
 1238.81 +#endif
 1238.82 +
 1238.83 +#if defined (__MINGW32__)
 1238.84 +/* Mingw32, egcs compiler using the Microsoft C runtime */
 1238.85 +#  undef  _STLP_NO_DRAND48
 1238.86 +#  define _STLP_NO_DRAND48
 1238.87 +#  define _STLP_CALL
 1238.88 +
 1238.89 +#  if defined (_STLP_NEW_PLATFORM_SDK)
 1238.90 +/* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */
 1238.91 +#    undef _STLP_NEW_PLATFORM_SDK
 1238.92 +#  endif
 1238.93 +#endif /* __MINGW32__ */
 1238.94 +
 1238.95 +#if defined (__CYGWIN__) || defined (__MINGW32__)
 1238.96 +#  if !defined (_STLP_USE_STATIC_LIB)
 1238.97 +#    define _STLP_USE_DECLSPEC 1
 1238.98 +#    if !defined (_STLP_USE_DYNAMIC_LIB)
 1238.99 +#      define _STLP_USE_DYNAMIC_LIB
1238.100 +#    endif
1238.101 +#    define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
1238.102 +#    define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
1238.103 +#    define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
1238.104 +#  endif
1238.105 +/* The following is defined independently of _STLP_USE_STATIC_LIB because it is also
1238.106 + * used to import symbols from PSDK under MinGW
1238.107 + */
1238.108 +#  define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
1238.109 +#endif
1238.110 +
1238.111 +#if defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__))
1238.112 +#  if !defined (__MINGW32__) && !defined (__CYGWIN__)
1238.113 +#    define _STLP_NO_NATIVE_MBSTATE_T    1
1238.114 +#  endif
1238.115 +#  if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4)
1238.116 +#    define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
1238.117 +#  endif
1238.118 +#  define _STLP_NO_NATIVE_WIDE_STREAMS   1
1238.119 +#endif
1238.120 +
1238.121 +#define _STLP_NORETURN_FUNCTION __attribute__((noreturn))
1238.122 +
1238.123 +/* Mac OS X is a little different with namespaces and cannot instantiate
1238.124 + * static data members in template classes */
1238.125 +#if defined (__APPLE__)
1238.126 +#  if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)))
1238.127 +/* Mac OS X is missing a required typedef and standard macro */
1238.128 +typedef unsigned int wint_t;
1238.129 +#  endif
1238.130 +
1238.131 +#  define __unix
1238.132 +
1238.133 +#  if (__GNUC__ < 3)
1238.134 +
1238.135 + /* Mac OS X needs one and only one source file to initialize all static data
1238.136 +  * members in template classes. Only one source file in an executable or
1238.137 +  * library can declare instances for such data members, otherwise duplicate
1238.138 +  * symbols will be generated. */
1238.139 +
1238.140 +#    define _STLP_NO_STATIC_TEMPLATE_DATA
1238.141 +#    define _STLP_STATIC_CONST_INIT_BUG 1
1238.142 +#    define _STLP_STATIC_TEMPLATE_DATA 0
1238.143 +#    define _STLP_WEAK_ATTRIBUTE 1
1238.144 + /* Workaround for the broken Mac OS X C++ preprocessor which cannot handle
1238.145 +  * parameterized macros in #include statements */
1238.146 +#    define _STLP_NATIVE_HEADER(header) <../g++/##header##>
1238.147 +#    define _STLP_NATIVE_C_HEADER(header) <../include/##header##>
1238.148 +#    define _STLP_NATIVE_CPP_C_HEADER(header) <../g++/##header##>
1238.149 +#    define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../g++/##header##>
1238.150 +#    define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../g++/##header##>
1238.151 +#  endif /* __GNUC__ < 3 */
1238.152 +
1238.153 +#  define _STLP_NO_LONG_DOUBLE
1238.154 +
1238.155 +/* Mac OS X needs all "::" scope references to be "std::" */
1238.156 +#  define _STLP_USE_NEW_C_HEADERS
1238.157 +
1238.158 +#  define _STLP_NO_VENDOR_STDLIB_L
1238.159 +
1238.160 +#endif /* __APPLE__ */
1238.161 +
1238.162 +
1238.163 +#if defined(__BEOS__) && defined(__INTEL__)
1238.164 +#  define _STLP_NATIVE_HEADER(header) <../stlport/beos/##header##>
1238.165 +#  define _STLP_NATIVE_C_HEADER(header) <../stlport/beos/##header##>
1238.166 +#  define _STLP_NATIVE_CPP_C_HEADER(header) <../stlport/beos/##header##>
1238.167 +#  define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../stlport/beos/##header##>
1238.168 +#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../stlport/beos/##header##>
1238.169 +#  define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
1238.170 +#  define _STLP_NO_NATIVE_WIDE_STREAMS   1
1238.171 +/*
1238.172 +#  define _NOTHREADS 1
1238.173 +*/
1238.174 +#  ifdef _PTHREADS
1238.175 +#    undef  _PTHREADS
1238.176 +#  endif
1238.177 +#  ifdef _STLP_PTHREADS
1238.178 +#    undef _STLP_PTHREADS
1238.179 +#  endif
1238.180 +#  define _STLP_USE_STDIO_IO 1
1238.181 +#  define _STLP_USE_GLIBC 1
1238.182 +#endif
1238.183 +
1238.184 +/* g++ 2.7.x and above */
1238.185 +#define _STLP_LONG_LONG long long
1238.186 +
1238.187 +#ifdef _STLP_USE_UCLIBC
1238.188 +/*
1238.189 +#  ifndef __DO_C99_MATH__
1238.190 +*/
1238.191 +  /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
1238.192 +#  define _STLP_NO_VENDOR_MATH_F
1238.193 +  /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */
1238.194 +#  define _STLP_NO_VENDOR_MATH_L
1238.195 +#  define _STLP_NO_LONG_DOUBLE
1238.196 +/*
1238.197 +#  endif
1238.198 +*/
1238.199 +#endif
1238.200 +
1238.201 +#if defined (__OpenBSD__) || defined (__FreeBSD__)
1238.202 +#  define _STLP_NO_VENDOR_MATH_L
1238.203 +#  define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
1238.204 +#  ifndef __unix
1238.205 +#    define __unix
1238.206 +#  endif
1238.207 +#endif
1238.208 +
1238.209 +#if defined (__alpha__)
1238.210 +#  define _STLP_NO_VENDOR_MATH_L
1238.211 +#  define _STLP_NO_IEC559_SUPPORT
1238.212 +#endif
1238.213 +
1238.214 +#if defined (__hpux)
1238.215 +#  define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
1238.216 +  /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
1238.217 +#  define _STLP_NO_VENDOR_MATH_F
1238.218 +#endif
1238.219 +
1238.220 +#if (__GNUC__ >= 3)
1238.221 +#  ifndef _STLP_HAS_NO_NEW_C_HEADERS
1238.222 +/*
1238.223 +#    ifndef _STLP_USE_UCLIBC
1238.224 +*/
1238.225 +#    define _STLP_HAS_NATIVE_FLOAT_ABS
1238.226 +/*
1238.227 +#    endif
1238.228 +*/
1238.229 +#  else
1238.230 +#    ifdef _STLP_USE_GLIBC
1238.231 +#      define _STLP_VENDOR_LONG_DOUBLE_MATH  1
1238.232 +#    endif
1238.233 +#  endif
1238.234 +#endif
1238.235 +
1238.236 +#if (__GNUC__ < 3)
1238.237 +#  define _STLP_HAS_NO_NEW_C_HEADERS     1
1238.238 +#  define _STLP_VENDOR_GLOBAL_CSTD       1
1238.239 +#  define _STLP_DONT_USE_PTHREAD_SPINLOCK 1
1238.240 +#  ifndef __HONOR_STD
1238.241 +#    define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1
1238.242 +#  endif
1238.243 +/* egcs fails to initialize builtin types in expr. like this : new(p) char();  */
1238.244 +#  define _STLP_DEF_CONST_PLCT_NEW_BUG 1
1238.245 +#endif
1238.246 +
1238.247 +/*
1238.248 +#define _STLP_VENDOR_GLOBAL_CSTD 1
1238.249 +*/
1238.250 +
1238.251 +#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
1238.252 +#  define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
1238.253 +#  define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
1238.254 +#  define _STLP_DEF_CONST_DEF_PARAM_BUG 1
1238.255 +#else
1238.256 +#  undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
1238.257 +#  undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
1238.258 +#endif
1238.259 +
1238.260 +#if (__GNUC_MINOR__ < 9)  && (__GNUC__ < 3) /* gcc 2.8 */
1238.261 +#  define _STLP_NO_TEMPLATE_CONVERSIONS
1238.262 +#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
1238.263 +#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
1238.264 +#  define _STLP_NO_FRIEND_TEMPLATES 1
1238.265 +#  define _STLP_HAS_NO_NAMESPACES 1
1238.266 +#  define _STLP_NO_METHOD_SPECIALIZATION 1
1238.267 +#  define _STLP_NO_MEMBER_TEMPLATES 1
1238.268 +#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1238.269 +#  define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1238.270 +/*  DJGPP doesn't seem to implement it in 2.8.x */
1238.271 +#  ifdef DJGPP
1238.272 +#    define  _STLP_NO_STATIC_TEMPLATE_DATA 1
1238.273 +#  endif
1238.274 +#endif
1238.275 +
1238.276 +#if __GNUC__ <= 2 && __GNUC_MINOR__ <= 7 && !defined (__CYGWIN32__)
1238.277 +/* Will it work with 2.6 ? I doubt it. */
1238.278 +#  if ( __GNUC_MINOR__ < 6 )
1238.279 +__GIVE_UP_WITH_STL(GCC_272);
1238.280 +#  endif
1238.281 +
1238.282 +#  define  _STLP_NO_RELOPS_NAMESPACE
1238.283 +#  define  _STLP_NON_TYPE_TMPL_PARAM_BUG
1238.284 +#  define  _STLP_LIMITED_DEFAULT_TEMPLATES 1
1238.285 +#  define  _STLP_DEFAULT_TYPE_PARAM 1
1238.286 +#  define  _STLP_NO_BAD_ALLOC
1238.287 +#  define  _STLP_NO_ARROW_OPERATOR 1
1238.288 +#  ifndef _STLP_NO_STATIC_TEMPLATE_DATA
1238.289 +#    define  _STLP_NO_STATIC_TEMPLATE_DATA
1238.290 +#  endif
1238.291 +#  define  _STLP_STATIC_CONST_INIT_BUG 1
1238.292 +#  define  _STLP_NO_METHOD_SPECIALIZATION 1
1238.293 +
1238.294 +#  if !defined (__CYGWIN32__)
1238.295 +#    define _STLP_NESTED_TYPE_PARAM_BUG   1
1238.296 +#    define _STLP_BASE_MATCH_BUG       1
1238.297 +/*  unused operators are required (forward) */
1238.298 +#    define  _STLP_CONST_CONSTRUCTOR_BUG
1238.299 +#    define _STLP_NO_DEFAULT_NON_TYPE_PARAM
1238.300 +#  endif
1238.301 +#  define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1
1238.302 +#  define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
1238.303 +#  define _STLP_NO_EXCEPTION_HEADER 1
1238.304 +#else /* ! <= 2.7.* */
1238.305 +#endif /* ! <= 2.7.* */
1238.306 +
1238.307 +/* static template data members workaround strategy for gcc tries
1238.308 + * to use weak symbols.
1238.309 + * if you don't want to use that, #define _STLP_WEAK_ATTRIBUTE=0 ( you'll
1238.310 + * have to put "#define __PUT_STATIC_DATA_MEMBERS_HERE" line in one of your
1238.311 + * compilation unit ( or CFLAGS for it ) _before_ including any STL header ).
1238.312 + */
1238.313 +#if defined (_STLP_NO_STATIC_TEMPLATE_DATA) && ! defined (_STLP_WEAK_ATTRIBUTE )
1238.314 +/* systems using GNU ld or format that supports weak symbols
1238.315 +   may use "weak" attribute
1238.316 +   Linux & Solaris ( x86 & SPARC ) are being auto-recognized here */
1238.317 +#  if defined(_STLP_GNU_LD) || defined(__ELF__) || defined (__CYGWIN__) || \
1238.318 +     (( defined (__SVR4) || defined ( __svr4__ )) && \
1238.319 +      ( defined (sun) || defined ( __sun__ )))
1238.320 +#    define _STLP_WEAK_ATTRIBUTE 1
1238.321 +#  endif
1238.322 +#endif /* _STLP_WEAK_ATTRIBUTE */
1238.323 +
1238.324 +
1238.325 +/* strict ANSI prohibits "long long" ( gcc) */
1238.326 +#if defined ( __STRICT_ANSI__ )
1238.327 +#  undef _STLP_LONG_LONG
1238.328 +/*
1238.329 +#    define _STLP_STRICT_ANSI 1
1238.330 +*/
1238.331 +#endif
1238.332 +
1238.333 +/*
1238.334 +#if !defined (__STRICT_ANSI__) || defined (__BUILDING_STLPORT)
1238.335 +#  define _STLP_USE_TEMPLATE_EXPORT
1238.336 +#  define _STLP_EXPORT_TEMPLATE_KEYWORD extern
1238.337 +#  define _STLP_IMPORT_TEMPLATE_KEYWORD extern
1238.338 +#endif
1238.339 +*/
1238.340 +
1238.341 +#ifndef __EXCEPTIONS
1238.342 +#  undef  _STLP_DONT_USE_EXCEPTIONS
1238.343 +#  define _STLP_DONT_USE_EXCEPTIONS 1
1238.344 +#endif
1238.345 +
1238.346 +#if (__GNUC__ >= 3)
1238.347 +
1238.348 +#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1238.349 +#    if ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__))))
1238.350 +#      define _STLP_NATIVE_INCLUDE_PATH ../g++-v3
1238.351 +#    else
1238.352 +#      if ( ((__GNUC__ == 4 ) || (__GNUC_MINOR__ >= 3)) && defined(__APPLE_CC__))
1238.353 +#        define _STLP_NATIVE_INCLUDE_PATH ../c++
1238.354 +/*
1238.355 +* Before version 3.4.0 the 0 patch level was not part of the include path:
1238.356 +*/
1238.357 +#      elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \
1238.358 +                                              (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
1238.359 +                                              (__GNUC__ > 3))
1238.360 +#        define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__
1238.361 +#      else
1238.362 +#        define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__
1238.363 +#      endif
1238.364 +#    endif
1238.365 +#  endif
1238.366 +
1238.367 +/* Instantiation scheme that used (default) in gcc 3 made void of sense explicit
1238.368 +   instantiation within library: nothing except increased library size. - ptr
1238.369 + */
1238.370 +#  define _STLP_NO_FORCE_INSTANTIATE
1238.371 +
1238.372 +#elif (__GNUC_MINOR__ < 8)
1238.373 +
1238.374 +#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1238.375 +#    define _STLP_NATIVE_INCLUDE_PATH ../g++-include
1238.376 +#  endif
1238.377 +
1238.378 +/* tuning of static template data members workaround */
1238.379 +#  if ( _STLP_STATIC_TEMPLATE_DATA < 1 )
1238.380 +#    if ( _STLP_WEAK_ATTRIBUTE > 0 )
1238.381 +#      define _STLP_WEAK __attribute__ (( weak ))
1238.382 +#    else
1238.383 +#      define _STLP_WEAK
1238.384 +#    endif /* _STLP_WEAK_ATTRIBUTE */
1238.385 +
1238.386 +#    ifdef __PUT_STATIC_DATA_MEMBERS_HERE
1238.387 +#      define __DECLARE_INSTANCE(type,item,init) type item _STLP_WEAK init
1238.388 +#    else
1238.389 +#      define __DECLARE_INSTANCE(type,item,init)
1238.390 +#    endif /* __PUT_STATIC_DATA_MEMBERS_HERE */
1238.391 +#  endif /* _STLP_STATIC_TEMPLATE_DATA */
1238.392 +
1238.393 +#else
1238.394 +
1238.395 +/* gcc-2.95.0 used to use "g++-3" directory which has been changed to "g++" in
1238.396 + * system-dependent "include" for 2.95.2 except for Cygwin and Mingw packages.
1238.397 + * I expect "g++-3" not being used in later releases.
1238.398 + * If your installation use "g++-3" include directory for any reason (pre-2.95.2 or Win binary kit),
1238.399 + * please change the macro below to point to your directory.
1238.400 + */
1238.401 +
1238.402 +#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1238.403 +#    if defined(__DJGPP)
1238.404 +#      define _STLP_NATIVE_INCLUDE_PATH ../lang/cxx
1238.405 +#    elif (__GNUC__ >= 3) || (__GNUC_MINOR__ >= 97)
1238.406 +#      define _STLP_NATIVE_INCLUDE_PATH ../include/g++-v3
1238.407 +#    elif ((__GNUC_MINOR__ >= 95 && __GNUC_MINOR__ < 97) && \
1238.408 +          !( defined (__FreeBSD__) || defined (__NetBSD__) || defined(__sgi) || defined (__OS2__) ) )
1238.409 +#      define _STLP_NATIVE_INCLUDE_PATH ../g++-3
1238.410 +#    elif (__GNUC_MINOR__ > 8) && (__GNUC_MINOR__ < 95) && (__GNUC__ < 3) && !defined( __Lynx__ )
1238.411 +/* this really sucks, as GNUpro does not really identifies itself, so we have to guess
1238.412 + * depending on a platform
1238.413 + */
1238.414 +#      ifdef __hpux
1238.415 +#        define _STLP_NATIVE_INCLUDE_PATH ../g++-3
1238.416 +#      else
1238.417 +#        define _STLP_NATIVE_INCLUDE_PATH ../g++-2
1238.418 +#      endif
1238.419 +#    else
1238.420 +#      define _STLP_NATIVE_INCLUDE_PATH g++
1238.421 +#    endif
1238.422 +#  endif
1238.423 +
1238.424 +/* <exception> et al */
1238.425 +#  ifdef __FreeBSD__
1238.426 +#    if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)
1238.427 +#      define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
1238.428 +#    endif
1238.429 +#  else
1238.430 +/* azov */
1238.431 +#    ifndef __Lynx__
1238.432 +#      if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)
1238.433 +/*
1238.434 +#     define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../g++-v3
1238.435 +*/
1238.436 +#      else
1238.437 +#        define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
1238.438 +#      endif
1238.439 +#    endif
1238.440 +#  endif
1238.441 +
1238.442 +#endif /* GNUC_MINOR < 8 */
1238.443 +
1238.444 +#if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
1238.445 +#  define _STLP_NATIVE_C_INCLUDE_PATH ../include
1238.446 +#endif
1238.447 +
1238.448 +/* Tune settings for the case where static template data members are not
1238.449 + * instaniated by default
1238.450 + */
1238.451 +#if defined ( _STLP_NO_STATIC_TEMPLATE_DATA )
1238.452 +#  define _STLP_STATIC_TEMPLATE_DATA 0
1238.453 +#  if !defined ( _STLP_WEAK_ATTRIBUTE )
1238.454 +#    define _STLP_WEAK_ATTRIBUTE 0
1238.455 +#  endif
1238.456 +#  ifdef __PUT_STATIC_DATA_MEMBERS_HERE
1238.457 +#    define __DECLARE_INSTANCE(type,item,init) type item init
1238.458 +#  else
1238.459 +#    define __DECLARE_INSTANCE(type,item,init)
1238.460 +#  endif
1238.461 +#else
1238.462 +#  define _STLP_STATIC_TEMPLATE_DATA 1
1238.463 +#endif
1238.464 +
  1239.1 --- a/epoc32/include/stdapis/stlport/config/stl_confix.h	Tue Mar 16 16:12:26 2010 +0000
  1239.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1239.3 @@ -1,78 +0,0 @@
  1239.4 -/*
  1239.5 - * Copyright (c) 1999 
  1239.6 - * Boris Fomitchev
  1239.7 - *
  1239.8 - * This material is provided "as is", with absolutely no warranty expressed
  1239.9 - * or implied. Any use is at your own risk.
 1239.10 - *
 1239.11 - * Permission to use or copy this software for any purpose is hereby granted 
 1239.12 - * without fee, provided the above notices are retained on all copies.
 1239.13 - * Permission to modify the code and to distribute modified code is granted,
 1239.14 - * provided the above notices are retained, and a notice that the code was
 1239.15 - * modified is included with the above copyright notice.
 1239.16 - *
 1239.17 - */
 1239.18 -
 1239.19 -/*
 1239.20 - * STLport configuration file
 1239.21 - * It is internal STLport header - DO NOT include it directly
 1239.22 - * Purpose of this file : to define STLport settings that depend on
 1239.23 - * compiler flags or can be otherwise missed
 1239.24 - *
 1239.25 - */
 1239.26 -
 1239.27 -#ifndef _STLP_CONFIX_H
 1239.28 -# define _STLP_CONFIX_H
 1239.29 -
 1239.30 -/* If, by any chance, C compiler gets there, try to help it to pass smoothly */
 1239.31 -# if ! defined (__cplusplus) && ! defined (_STLP_HAS_NO_NAMESPACES)
 1239.32 -#  define _STLP_HAS_NO_NAMESPACES
 1239.33 -# endif
 1239.34 -
 1239.35 -# if defined(__MINGW32__)
 1239.36 -#   define _STLP_NO_DRAND48
 1239.37 -# endif
 1239.38 -
 1239.39 -/* Modena C++ library  */
 1239.40 -#if defined (__MWERKS__) && __MWERKS__ <= 0x2303 || (defined (__KCC) && __KCC_VERSION < 3400)
 1239.41 -# include <mcompile.h>
 1239.42 -# define _STLP_USE_MSIPL 1
 1239.43 -# if defined (__KCC) || (defined(__MSL_CPP__) && \
 1239.44 -       ( (__MSL_CPP__ >= 0x5000 && defined( _MSL_NO_MESSAGE_FACET )) || \
 1239.45 -	 (__MSL_CPP__ < 0x5000 && defined( MSIPL_NL_TYPES )))  \
 1239.46 -	 )
 1239.47 -#  define _STLP_NO_NATIVE_MESSAGE_FACET 1
 1239.48 -# endif
 1239.49 -#endif
 1239.50 -
 1239.51 -/* common switches for EDG front-end */
 1239.52 -# if defined (__EDG_SWITCHES)
 1239.53 -#   if !(defined(_TYPENAME) || defined (_TYPENAME_IS_KEYWORD))
 1239.54 -#     undef  _STLP_NEED_TYPENAME
 1239.55 -#     define _STLP_NEED_TYPENAME 1
 1239.56 -#   endif
 1239.57 -#   if !defined(_WCHAR_T_IS_KEYWORD)
 1239.58 -#     undef _STLP_NO_WCHAR_T 
 1239.59 -#     define _STLP_NO_WCHAR_T 1
 1239.60 -#   endif
 1239.61 -#   ifndef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES
 1239.62 -#     undef _STLP_NO_CLASS_PARTIAL_SPECIALIZATION
 1239.63 -#     define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
 1239.64 -#   endif
 1239.65 -#   ifndef _MEMBER_TEMPLATES
 1239.66 -#     undef _STLP_NO_MEMBER_TEMPLATES
 1239.67 -#     define _STLP_NO_MEMBER_TEMPLATES 1
 1239.68 -#     undef _STLP_NO_MEMBER_TEMPLATE_CLASSES
 1239.69 -#     define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
 1239.70 -#   endif
 1239.71 -#   if !defined(_MEMBER_TEMPLATE_KEYWORD)
 1239.72 -#     undef  _STLP_NO_MEMBER_TEMPLATE_KEYWORD
 1239.73 -#     define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
 1239.74 -#   endif
 1239.75 -#   if !defined (__EXCEPTIONS) && ! defined (_EXCEPTIONS)
 1239.76 -#     undef  _STLP_HAS_NO_EXCEPTIONS
 1239.77 -#     define _STLP_HAS_NO_EXCEPTIONS
 1239.78 -#   endif
 1239.79 -#   undef __EDG_SWITCHES
 1239.80 -# endif /* EDG */
 1239.81 -#endif
  1240.1 --- a/epoc32/include/stdapis/stlport/config/stl_gcce.h	Tue Mar 16 16:12:26 2010 +0000
  1240.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1240.3 @@ -1,244 +0,0 @@
  1240.4 -/*
  1240.5 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1240.6 -
  1240.7 -* Redistribution and use in source and binary forms, with or without 
  1240.8 -* modification, are permitted provided that the following conditions are met:
  1240.9 -
 1240.10 -* Redistributions of source code must retain the above copyright notice, this 
 1240.11 -* list of conditions and the following disclaimer.
 1240.12 -* Redistributions in binary form must reproduce the above copyright notice, 
 1240.13 -* this list of conditions and the following disclaimer in the documentation 
 1240.14 -* and/or other materials provided with the distribution.
 1240.15 -* Neither the name of Nokia Corporation nor the names of its contributors 
 1240.16 -* may be used to endorse or promote products derived from this software 
 1240.17 -* without specific prior written permission.
 1240.18 -
 1240.19 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1240.20 -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1240.21 -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1240.22 -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1240.23 -* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1240.24 -* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1240.25 -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1240.26 -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1240.27 -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1240.28 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1240.29 -*
 1240.30 -* Description:
 1240.31 -*
 1240.32 -*/
 1240.33 -  
 1240.34 -// =============================================================================
 1240.35 -//	stl_gcce.h
 1240.36 -//	This is a list of settings for STLport specific to the GCCE compiler.
 1240.37 -//	Do not include this file directly.
 1240.38 -// =============================================================================
 1240.39 -
 1240.40 -# ifndef _STLP_GCCE_H
 1240.41 -#  define  _STLP_GCCE_H
 1240.42 -
 1240.43 -
 1240.44 -#if defined(__WINS__)
 1240.45 -#  pragma warning ( disable : 4018 4097 4100 4127 4244 4284 4511 4512 4514 4786 4800 ) //4355 4284  4231 4511 4512 4097 4786 4800 4018 4146 4244 4514 4127 4100 4663)
 1240.46 -#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
 1240.47 -// Uncomment if partial order of template functions is not available
 1240.48 -#  define _STLP_NO_FUNC_PARTIAL_ORDERING 1
 1240.49 -#endif
 1240.50 -
 1240.51 -#ifndef _STLP_NO_IOSTREAMS
 1240.52 -//#  define _STLP_NO_IOSTREAMS	               1
 1240.53 -#endif
 1240.54 -
 1240.55 -//#  undef  _STLP_OWN_IOSTREAMS
 1240.56 -//#define _STLP_OWN_IOSTREAMS
 1240.57 -#define _STLP_USE_NEW_IOSTREAMS
 1240.58 -//#  define _STLP_NO_NATIVE_MBSTATE_T            1
 1240.59 -//#  define _NOTHREADS                           1
 1240.60 -//#  define _STLP_NO_TYPEINFO                    1
 1240.61 -
 1240.62 -#ifndef __PLACEMENT_NEW_INLINE
 1240.63 -#ifndef __E32STD_H__
 1240.64 -#ifdef __cplusplus
 1240.65 -inline void * operator new(unsigned int, void *_P) throw() { return (_P); }
 1240.66 -inline void operator delete(void* /*aPtr*/, void* /*aBase*/) __NO_THROW {}
 1240.67 -#endif
 1240.68 -#define __PLACEMENT_NEW_INLINE
 1240.69 -#endif // E32STD_H
 1240.70 -#endif
 1240.71 -
 1240.72 -
 1240.73 -//==========================================================
 1240.74 -
 1240.75 -// the values choosen here as defaults try to give
 1240.76 -// maximum functionality on the most conservative settings
 1240.77 -
 1240.78 -// Mostly correct guess, change it for Alpha (and other environments
 1240.79 -// that has 64-bit "long")
 1240.80 -#  define _STLP_UINT32_T unsigned long
 1240.81 -
 1240.82 -
 1240.83 -// Define if wchar_t is not a unique type, and is actually a typedef to unsigned short. 
 1240.84 -// #  define _STLP_WCHAR_T_IS_USHORT 1
 1240.85 -
 1240.86 -// Uncomment if long long is available
 1240.87 - #  define _STLP_LONG_LONG long long
 1240.88 -
 1240.89 -// Uncomment if long double is not available
 1240.90 -// #  define _STLP_NO_LONG_DOUBLE 1
 1240.91 -
 1240.92 -// Uncomment this if your compiler does not support namespaces 
 1240.93 -//#  define _STLP_HAS_NO_NAMESPACES 1
 1240.94 -
 1240.95 -// Uncomment if "using" keyword does not work with template types 
 1240.96 -// # define _STLP_BROKEN_USING_DIRECTIVE 1
 1240.97 -
 1240.98 -// Uncomment this if your compiler does not support exceptions
 1240.99 -//#  define _STLP_HAS_NO_EXCEPTIONS 1
1240.100 -//#  define _STLP_USE_TRAP_LEAVE 1
1240.101 -
1240.102 -// Header <new> that comes with the compiler 
1240.103 -// does not define bad_alloc exception
1240.104 -//#if defined(__WINS__)
1240.105 -// Possibly required ???
1240.106 -#  define _STLP_NO_BAD_ALLOC  1
1240.107 -//#endif
1240.108 -
1240.109 -// Uncomment if member template methods are not available
1240.110 -// #  define _STLP_NO_MEMBER_TEMPLATES   1
1240.111 -
1240.112 -// Uncomment if member template classes are not available
1240.113 -#if defined(__WINS__)
1240.114 -#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES   1
1240.115 -#endif
1240.116 -
1240.117 -// Uncomment if friend member templates are not available
1240.118 -#if defined(__WINS__)
1240.119 -// Possibly required ???
1240.120 -//#  define _STLP_NO_FRIEND_TEMPLATES   1
1240.121 -#endif
1240.122 -
1240.123 -// Compiler does not accept friend declaration qualified with namespace name.
1240.124 -// #  define _STLP_NO_QUALIFIED_FRIENDS 1
1240.125 -
1240.126 -// Uncomment if partial specialization is not available
1240.127 -#if defined(__WINS__)
1240.128 -#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1240.129 -#endif
1240.130 -
1240.131 -// Define if class being partially specialized require full name (template parameters)
1240.132 -// of itself for method declarations
1240.133 -// #  define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1240.134 -
1240.135 -// Compiler has problems specializing members of partially 
1240.136 -// specialized class
1240.137 -// #  define _STLP_MEMBER_SPECIALIZATION_BUG
1240.138 -
1240.139 -// Compiler requires typename keyword on outline method definition 
1240.140 -// explicitly taking nested types/typedefs
1240.141 -// #define  _STLP_TYPENAME_ON_RETURN_TYPE
1240.142 -
1240.143 -// * _STLP_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
1240.144 -//   constant-initializer in the declaration of a static const data member
1240.145 -//   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
1240.146 -#if defined(__WINS__)
1240.147 -# define _STLP_STATIC_CONST_INIT_BUG
1240.148 -#endif
1240.149 -
1240.150 -// Define if default constructor for builtin integer type fails to initialize it to 0
1240.151 -// #  define _STLP_DEFAULT_CONSTRUCTOR_BUG    1
1240.152 -
1240.153 -// Defined if constructor
1240.154 -// required to explicitly call member's default constructors for const objects
1240.155 -// #  define _STLP_CONST_CONSTRUCTOR_BUG    1
1240.156 -
1240.157 -// Define this if compiler lacks <exception> header
1240.158 -#  define _STLP_NO_EXCEPTION_HEADER 1
1240.159 -
1240.160 -// Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
1240.161 -#   define _STLP_HAS_NO_NEW_C_HEADERS 1
1240.162 -
1240.163 -// uncomment if new-style headers <new> is available
1240.164 -// #  define _STLP_HAS_NEW_NEW_HEADER 1
1240.165 -
1240.166 -// uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
1240.167 -// not std::
1240.168 -// #  define _STLP_VENDOR_GLOBAL_STD
1240.169 -
1240.170 -// uncomment this if <cstdio> and the like put stuff in ::namespace,
1240.171 -// not std::
1240.172 -#  define _STLP_VENDOR_GLOBAL_CSTD
1240.173 -/*
1240.174 -#  ifdef _PTHREADS
1240.175 -#    undef  _PTHREADS
1240.176 -#  endif
1240.177 -#  ifdef _STLP_PTHREADS
1240.178 -#    undef _STLP_PTHREADS
1240.179 -#  endif
1240.180 -#  ifdef _STLP_THREADS
1240.181 -#    undef _STLP_THREADS
1240.182 -#  endif
1240.183 -*/
1240.184 -
1240.185 -#ifdef _STLP_USE_NEW_C_HEADERS
1240.186 -#undef _STLP_USE_NEW_C_HEADERS
1240.187 -#endif
1240.188 -
1240.189 -#undef _STLP_NATIVE_C_HEADER
1240.190 -#ifndef __SYMBIAN32__
1240.191 -#define _STLP_NATIVE_C_HEADER(x) <libc/##x>
1240.192 -#endif
1240.193 -#define _STLP_NATIVE_HEADER(x) <x>
1240.194 -
1240.195 -
1240.196 -
1240.197 -#  define _STLP_NO_NEW_HEADER
1240.198 -#  define _STLP_NO_THREADS
1240.199 -
1240.200 -#  define _STLP_NO_EXCEPTIONS
1240.201 -//#   define _STLP_USE_TRAP_LEAVE
1240.202 -
1240.203 -#   define _STLP_NO_OWN_IOSTREAMS
1240.204 -//#   undef  _STLP_OWN_IOSTREAMS
1240.205 -//#define _STLP_OWN_IOSTREAMS
1240.206 -#define _STLP_USE_NEW_IOSTREAMS
1240.207 -#   define _STLP_USE_NEWALLOC
1240.208 -//#   define _STLP_NO_NODE_ALLOC
1240.209 -#   define _STLP_NO_LONG_DOUBLE
1240.210 -#   define _STLP_BIG_ENDIAN
1240.211 -// this one causes recursive abs() calls
1240.212 -#   define _STLP_LABS
1240.213 -#   define _STLP_LDIV
1240.214 -#   define _STLP_CONST_CONSTRUCTOR_BUG
1240.215 -// #   define _STLP_HAS_NAMESPACES
1240.216 -
1240.217 -//#define _STLP_NO_CSTD_FUNCTION_IMPORTS
1240.218 -
1240.219 -
1240.220 -//#warning ********** COMPILER SETTINGS **********
1240.221 -// -----------------------------------------------------------------------------
1240.222 -//  wstring support
1240.223 -//  This is a bit confusing.
1240.224 -//  * _STLP_NO_WCHAR_T inhibits the standard C wchar functions (Symbian doesn't 
1240.225 -//    have them).
1240.226 -//  * _STLP_HAS_WCHAR_T triggers the typedef of wstring.  It's based on wint_t,
1240.227 -//    which isn't typedef's elsewhere, so we take care of it here.
1240.228 -// -----------------------------------------------------------------------------
1240.229 -//#define _STLP_NO_WCHAR_T  1
1240.230 -#define _STLP_HAS_WCHAR_T 1
1240.231 -//typedef unsigned int wint_t;
1240.232 -#include <wchar.h>
1240.233 -
1240.234 -#ifdef _WCHAR_T
1240.235 -#warning ********** _WCHAR_T is defined **********
1240.236 -#endif
1240.237 -
1240.238 -#define _STLP_COMPLEX_SPECIALIZATION_BUG
1240.239 -#define _STLP_USE_EXCEPTIONS
1240.240 -#define _STLP_EXTERN_RANGE_ERRORS
1240.241 -//#define _STLP_NO_FORCE_INSTANTIATE
1240.242 -//#define __BUILDING_STLPORT
1240.243 -#  define _STLP_NO_NEW_NEW_HEADER 1
1240.244 -#  define _STLP_USE_DECLSPEC
1240.245 -#define _STLP_LIBSTD_CPP_NO_STATIC_VAR_
1240.246 -
1240.247 -#endif // _STLP_GCCE_H
  1241.1 --- a/epoc32/include/stdapis/stlport/config/stl_rvct.h	Tue Mar 16 16:12:26 2010 +0000
  1241.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1241.3 @@ -1,244 +0,0 @@
  1241.4 -/*
  1241.5 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1241.6 -
  1241.7 -* Redistribution and use in source and binary forms, with or without 
  1241.8 -* modification, are permitted provided that the following conditions are met:
  1241.9 -
 1241.10 -* Redistributions of source code must retain the above copyright notice, this 
 1241.11 -* list of conditions and the following disclaimer.
 1241.12 -* Redistributions in binary form must reproduce the above copyright notice, 
 1241.13 -* this list of conditions and the following disclaimer in the documentation 
 1241.14 -* and/or other materials provided with the distribution.
 1241.15 -* Neither the name of Nokia Corporation nor the names of its contributors 
 1241.16 -* may be used to endorse or promote products derived from this software 
 1241.17 -* without specific prior written permission.
 1241.18 -
 1241.19 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1241.20 -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1241.21 -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1241.22 -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1241.23 -* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1241.24 -* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1241.25 -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1241.26 -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1241.27 -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1241.28 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1241.29 -*
 1241.30 -* Description:
 1241.31 -*
 1241.32 -*/
 1241.33 -  
 1241.34 -// =============================================================================
 1241.35 -//	stl_rvct.h
 1241.36 -//	This is a list of settings for STLport specific to the ARM RVCT compiler.
 1241.37 -//	Do not include this file directly.
 1241.38 -// =============================================================================
 1241.39 -
 1241.40 -# ifndef _STLP_RVCT_H
 1241.41 -#  define  _STLP_RVCT_H
 1241.42 -
 1241.43 -
 1241.44 -#if defined(__WINS__)
 1241.45 -#  pragma warning ( disable : 4018 4097 4100 4127 4244 4284 4511 4512 4514 4786 4800 ) //4355 4284  4231 4511 4512 4097 4786 4800 4018 4146 4244 4514 4127 4100 4663)
 1241.46 -#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
 1241.47 -// Uncomment if partial order of template functions is not available
 1241.48 -#  define _STLP_NO_FUNC_PARTIAL_ORDERING 1
 1241.49 -#endif
 1241.50 -
 1241.51 -#ifndef _STLP_NO_IOSTREAMS
 1241.52 -//#  define _STLP_NO_IOSTREAMS	               1
 1241.53 -#endif
 1241.54 -
 1241.55 -//#  undef  _STLP_OWN_IOSTREAMS
 1241.56 -//#define _STLP_OWN_IOSTREAMS
 1241.57 -#define _STLP_USE_NEW_IOSTREAMS
 1241.58 -//#  define _STLP_NO_NATIVE_MBSTATE_T            1
 1241.59 -//#  define _NOTHREADS                           1
 1241.60 -//#  define _STLP_NO_TYPEINFO                    1
 1241.61 -
 1241.62 -#ifndef __PLACEMENT_NEW_INLINE
 1241.63 -#ifndef __E32STD_H__
 1241.64 -#ifdef __cplusplus
 1241.65 -inline void * operator new(unsigned int, void *_P) throw() { return (_P); }
 1241.66 -inline void operator delete(void* /*aPtr*/, void* /*aBase*/) __NO_THROW {}
 1241.67 -#endif
 1241.68 -#define __PLACEMENT_NEW_INLINE
 1241.69 -#endif // E32STD_H
 1241.70 -#endif
 1241.71 -
 1241.72 -
 1241.73 -//==========================================================
 1241.74 -
 1241.75 -// the values choosen here as defaults try to give
 1241.76 -// maximum functionality on the most conservative settings
 1241.77 -
 1241.78 -// Mostly correct guess, change it for Alpha (and other environments
 1241.79 -// that has 64-bit "long")
 1241.80 -#  define _STLP_UINT32_T unsigned long
 1241.81 -
 1241.82 -
 1241.83 -// Define if wchar_t is not a unique type, and is actually a typedef to unsigned short. 
 1241.84 -// #  define _STLP_WCHAR_T_IS_USHORT 1
 1241.85 -
 1241.86 -// Uncomment if long long is available
 1241.87 - #  define _STLP_LONG_LONG long long
 1241.88 -
 1241.89 -// Uncomment if long double is not available
 1241.90 -// #  define _STLP_NO_LONG_DOUBLE 1
 1241.91 -
 1241.92 -// Uncomment this if your compiler does not support namespaces 
 1241.93 -//#  define _STLP_HAS_NO_NAMESPACES 1
 1241.94 -
 1241.95 -// Uncomment if "using" keyword does not work with template types 
 1241.96 -// # define _STLP_BROKEN_USING_DIRECTIVE 1
 1241.97 -
 1241.98 -// Uncomment this if your compiler does not support exceptions
 1241.99 -//#  define _STLP_HAS_NO_EXCEPTIONS 1
1241.100 -//#  define _STLP_USE_TRAP_LEAVE 1
1241.101 -
1241.102 -// Header <new> that comes with the compiler 
1241.103 -// does not define bad_alloc exception
1241.104 -//#if defined(__WINS__)
1241.105 -// Possibly required ???
1241.106 -#  define _STLP_NO_BAD_ALLOC  1
1241.107 -//#endif
1241.108 -
1241.109 -// Uncomment if member template methods are not available
1241.110 -// #  define _STLP_NO_MEMBER_TEMPLATES   1
1241.111 -
1241.112 -// Uncomment if member template classes are not available
1241.113 -#if defined(__WINS__)
1241.114 -#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES   1
1241.115 -#endif
1241.116 -
1241.117 -// Uncomment if friend member templates are not available
1241.118 -#if defined(__WINS__)
1241.119 -// Possibly required ???
1241.120 -//#  define _STLP_NO_FRIEND_TEMPLATES   1
1241.121 -#endif
1241.122 -
1241.123 -// Compiler does not accept friend declaration qualified with namespace name.
1241.124 -// #  define _STLP_NO_QUALIFIED_FRIENDS 1
1241.125 -
1241.126 -// Uncomment if partial specialization is not available
1241.127 -#if defined(__WINS__)
1241.128 -#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1241.129 -#endif
1241.130 -
1241.131 -// Define if class being partially specialized require full name (template parameters)
1241.132 -// of itself for method declarations
1241.133 -// #  define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1241.134 -
1241.135 -// Compiler has problems specializing members of partially 
1241.136 -// specialized class
1241.137 -// #  define _STLP_MEMBER_SPECIALIZATION_BUG
1241.138 -
1241.139 -// Compiler requires typename keyword on outline method definition 
1241.140 -// explicitly taking nested types/typedefs
1241.141 -// #define  _STLP_TYPENAME_ON_RETURN_TYPE
1241.142 -
1241.143 -// * _STLP_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
1241.144 -//   constant-initializer in the declaration of a static const data member
1241.145 -//   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
1241.146 -#if defined(__WINS__)
1241.147 -# define _STLP_STATIC_CONST_INIT_BUG
1241.148 -#endif
1241.149 -
1241.150 -// Define if default constructor for builtin integer type fails to initialize it to 0
1241.151 -// #  define _STLP_DEFAULT_CONSTRUCTOR_BUG    1
1241.152 -
1241.153 -// Defined if constructor
1241.154 -// required to explicitly call member's default constructors for const objects
1241.155 -// #  define _STLP_CONST_CONSTRUCTOR_BUG    1
1241.156 -
1241.157 -// Define this if compiler lacks <exception> header
1241.158 -#  define _STLP_NO_EXCEPTION_HEADER 1
1241.159 -
1241.160 -// Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
1241.161 -#   define _STLP_HAS_NO_NEW_C_HEADERS 1
1241.162 -
1241.163 -// uncomment if new-style headers <new> is available
1241.164 -// #  define _STLP_HAS_NEW_NEW_HEADER 1
1241.165 -
1241.166 -// uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
1241.167 -// not std::
1241.168 -// #  define _STLP_VENDOR_GLOBAL_STD
1241.169 -
1241.170 -// uncomment this if <cstdio> and the like put stuff in ::namespace,
1241.171 -// not std::
1241.172 -#  define _STLP_VENDOR_GLOBAL_CSTD
1241.173 -/*
1241.174 -#  ifdef _PTHREADS
1241.175 -#    undef  _PTHREADS
1241.176 -#  endif
1241.177 -#  ifdef _STLP_PTHREADS
1241.178 -#    undef _STLP_PTHREADS
1241.179 -#  endif
1241.180 -#  ifdef _STLP_THREADS
1241.181 -#    undef _STLP_THREADS
1241.182 -#  endif
1241.183 -*/
1241.184 -
1241.185 -#ifdef _STLP_USE_NEW_C_HEADERS
1241.186 -#undef _STLP_USE_NEW_C_HEADERS
1241.187 -#endif
1241.188 -
1241.189 -#undef _STLP_NATIVE_C_HEADER
1241.190 -#ifndef __SYMBIAN32__
1241.191 -#define _STLP_NATIVE_C_HEADER(x) <libc/##x>
1241.192 -#endif
1241.193 -#define _STLP_NATIVE_HEADER(x) <x>
1241.194 -
1241.195 -
1241.196 -
1241.197 -#  define _STLP_NO_NEW_HEADER
1241.198 -#  define _STLP_NO_THREADS
1241.199 -
1241.200 -#  define _STLP_NO_EXCEPTIONS
1241.201 -//#   define _STLP_USE_TRAP_LEAVE
1241.202 -
1241.203 -#   define _STLP_NO_OWN_IOSTREAMS
1241.204 -//#   undef  _STLP_OWN_IOSTREAMS
1241.205 -//#define _STLP_OWN_IOSTREAMS
1241.206 -#define _STLP_USE_NEW_IOSTREAMS
1241.207 -#   define _STLP_USE_NEWALLOC
1241.208 -//#   define _STLP_NO_NODE_ALLOC
1241.209 -#   define _STLP_NO_LONG_DOUBLE
1241.210 -#   define _STLP_BIG_ENDIAN
1241.211 -// this one causes recursive abs() calls
1241.212 -#   define _STLP_LABS
1241.213 -#   define _STLP_LDIV
1241.214 -#   define _STLP_CONST_CONSTRUCTOR_BUG
1241.215 -// #   define _STLP_HAS_NAMESPACES
1241.216 -
1241.217 -//#define _STLP_NO_CSTD_FUNCTION_IMPORTS 
1241.218 -
1241.219 -
1241.220 -//#warning ********** COMPILER SETTINGS **********
1241.221 -// -----------------------------------------------------------------------------
1241.222 -//  wstring support
1241.223 -//  This is a bit confusing.
1241.224 -//  * _STLP_NO_WCHAR_T inhibits the standard C wchar functions (Symbian doesn't 
1241.225 -//    have them).
1241.226 -//  * _STLP_HAS_WCHAR_T triggers the typedef of wstring.  It's based on wint_t,
1241.227 -//    which isn't typedef's elsewhere, so we take care of it here.
1241.228 -// -----------------------------------------------------------------------------
1241.229 -//#define _STLP_NO_WCHAR_T  1
1241.230 -#define _STLP_HAS_WCHAR_T 1
1241.231 -//typedef unsigned int wint_t;
1241.232 -#  include <wchar.h>
1241.233 -
1241.234 -#ifdef _WCHAR_T
1241.235 -#warning ********** _WCHAR_T is defined **********
1241.236 -#endif
1241.237 -
1241.238 -#define _STLP_COMPLEX_SPECIALIZATION_BUG
1241.239 -#define _STLP_USE_EXCEPTIONS
1241.240 -#define _STLP_EXTERN_RANGE_ERRORS
1241.241 -//#define _STLP_NO_FORCE_INSTANTIATE
1241.242 -//#define __BUILDING_STLPORT
1241.243 -#  define _STLP_NO_NEW_NEW_HEADER 1
1241.244 -#  define _STLP_USE_DECLSPEC
1241.245 -#define _STLP_LIBSTD_CPP_NO_STATIC_VAR_
1241.246 -
1241.247 -#endif // _STLP_RVCT_H
  1242.1 --- a/epoc32/include/stdapis/stlport/config/stl_winscw.h	Tue Mar 16 16:12:26 2010 +0000
  1242.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1242.3 @@ -1,236 +0,0 @@
  1242.4 -/*
  1242.5 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1242.6 -
  1242.7 -* Redistribution and use in source and binary forms, with or without 
  1242.8 -* modification, are permitted provided that the following conditions are met:
  1242.9 -
 1242.10 -* Redistributions of source code must retain the above copyright notice, this 
 1242.11 -* list of conditions and the following disclaimer.
 1242.12 -* Redistributions in binary form must reproduce the above copyright notice, 
 1242.13 -* this list of conditions and the following disclaimer in the documentation 
 1242.14 -* and/or other materials provided with the distribution.
 1242.15 -* Neither the name of Nokia Corporation nor the names of its contributors 
 1242.16 -* may be used to endorse or promote products derived from this software 
 1242.17 -* without specific prior written permission.
 1242.18 -
 1242.19 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1242.20 -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1242.21 -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1242.22 -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1242.23 -* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1242.24 -* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1242.25 -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1242.26 -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1242.27 -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1242.28 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1242.29 -*
 1242.30 -* Description:
 1242.31 -*
 1242.32 -*/
 1242.33 -  
 1242.34 -// =============================================================================
 1242.35 -//	stl_winscw.h
 1242.36 -//	This is a list of settings for STLport specific to the Metrowerks
 1242.37 -//  CodeWarrior for Symbian compiler.  Do not include this file directly.
 1242.38 -// =============================================================================
 1242.39 -
 1242.40 -#ifndef _STLP_WINSCW
 1242.41 -#	define  _STLP_WINSCW
 1242.42 -
 1242.43 -// -----------------------------------------------------------------------------
 1242.44 -//	iostreams
 1242.45 -//	No support for these in Symbian.
 1242.46 -// -----------------------------------------------------------------------------
 1242.47 -/*
 1242.48 -#	ifndef _STLP_NO_IOSTREAMS
 1242.49 -#		define _STLP_NO_IOSTREAMS
 1242.50 -#	endif
 1242.51 -
 1242.52 -#	ifdef _STLP_OWN_IOSTREAMS
 1242.53 -#   	undef  _STLP_OWN_IOSTREAMS
 1242.54 -#	endif
 1242.55 -*/
 1242.56 -//#	define _STLP_NO_NATIVE_MBSTATE_T            1
 1242.57 -//#	define _NOTHREADS                           1
 1242.58 -//#	define _STLP_NO_TYPEINFO                    1
 1242.59 -
 1242.60 -
 1242.61 -#	ifndef __PLACEMENT_NEW_INLINE
 1242.62 -#		ifndef __E32STD_H__
 1242.63 -#  ifdef __cplusplus
 1242.64 -		inline void * operator new(unsigned int, void *_P) throw(){ return (_P); }
 1242.65 -        inline void operator delete(void* /*aPtr*/, void* /*aBase*/) __NO_THROW {}
 1242.66 -#  endif        
 1242.67 -#		define __PLACEMENT_NEW_INLINE
 1242.68 -#		endif // E32STD_H
 1242.69 -#	endif
 1242.70 -
 1242.71 -//#  undef  _STLP_OWN_IOSTREAMS
 1242.72 -//#define _STLP_OWN_IOSTREAMS
 1242.73 -#define _STLP_USE_NEW_IOSTREAMS
 1242.74 -
 1242.75 -
 1242.76 -//==========================================================
 1242.77 -
 1242.78 -// the values choosen here as defaults try to give
 1242.79 -// maximum functionality on the most conservative settings
 1242.80 -
 1242.81 -// Mostly correct guess, change it for Alpha (and other environments
 1242.82 -// that has 64-bit "long")
 1242.83 -#  define _STLP_UINT32_T unsigned long
 1242.84 -
 1242.85 -	
 1242.86 -// Define if wchar_t is not a unique type, and is actually a typedef to unsigned short. 
 1242.87 -// #  define _STLP_WCHAR_T_IS_USHORT 1
 1242.88 -
 1242.89 -// Uncomment if long long is available
 1242.90 -#  define _STLP_LONG_LONG long long
 1242.91 -
 1242.92 -// Uncomment if long double is not available
 1242.93 -// #  define _STLP_NO_LONG_DOUBLE 1
 1242.94 -
 1242.95 -// Uncomment this if your compiler does not support namespaces 
 1242.96 -//#  define _STLP_HAS_NO_NAMESPACES 1
 1242.97 -
 1242.98 -// Uncomment if "using" keyword does not work with template types 
 1242.99 -// # define _STLP_BROKEN_USING_DIRECTIVE 1
1242.100 -
1242.101 -// Uncomment this if your compiler does not support exceptions
1242.102 -//#  define _STLP_HAS_NO_EXCEPTIONS 1
1242.103 -//#  define _STLP_USE_TRAP_LEAVE 1
1242.104 -
1242.105 -// Header <new> that comes with the compiler 
1242.106 -// does not define bad_alloc exception
1242.107 -//#	if defined(__WINS__)
1242.108 -// Possibly required ???
1242.109 -#  define _STLP_NO_BAD_ALLOC  1
1242.110 -//#	endif
1242.111 -
1242.112 -// Uncomment if member template methods are not available
1242.113 -// #  define _STLP_NO_MEMBER_TEMPLATES   1
1242.114 -
1242.115 -// Uncomment if member template classes are not available
1242.116 -#	if defined(__WINS__)
1242.117 -//# 		define _STLP_NO_MEMBER_TEMPLATE_CLASSES   1
1242.118 -#	endif
1242.119 -
1242.120 -// Uncomment if friend member templates are not available
1242.121 -#if defined(__WINS__)
1242.122 -// Possibly required ???
1242.123 -//#  define _STLP_NO_FRIEND_TEMPLATES   1
1242.124 -#endif
1242.125 -
1242.126 -// Compiler does not accept friend declaration qualified with namespace name.
1242.127 -// #  define _STLP_NO_QUALIFIED_FRIENDS 1
1242.128 -
1242.129 -// Uncomment if partial specialization is not available
1242.130 -#	if defined(__WINS__)
1242.131 -//#		define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1242.132 -#	endif
1242.133 -
1242.134 -// Define if class being partially specialized require full name (template parameters)
1242.135 -// of itself for method declarations
1242.136 -// #  define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1242.137 -
1242.138 -// Compiler has problems specializing members of partially 
1242.139 -// specialized class
1242.140 -// #  define _STLP_MEMBER_SPECIALIZATION_BUG
1242.141 -
1242.142 -// Compiler requires typename keyword on outline method definition 
1242.143 -// explicitly taking nested types/typedefs
1242.144 -// #define  _STLP_TYPENAME_ON_RETURN_TYPE
1242.145 -
1242.146 -// * _STLP_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
1242.147 -//   constant-initializer in the declaration of a static const data member
1242.148 -//   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
1242.149 -#if defined(__WINS__)
1242.150 -//#	define _STLP_STATIC_CONST_INIT_BUG
1242.151 -#endif
1242.152 -
1242.153 -// Define if default constructor for builtin integer type fails to initialize it to 0
1242.154 -// #  define _STLP_DEFAULT_CONSTRUCTOR_BUG    1
1242.155 -
1242.156 -// Defined if constructor
1242.157 -// required to explicitly call member's default constructors for const objects
1242.158 -// #  define _STLP_CONST_CONSTRUCTOR_BUG    1
1242.159 -
1242.160 -// Define this if compiler lacks <exception> header
1242.161 -#  define _STLP_NO_EXCEPTION_HEADER 1
1242.162 -
1242.163 -// Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
1242.164 -#   define _STLP_HAS_NO_NEW_C_HEADERS 1
1242.165 -
1242.166 -// uncomment if new-style headers <new> is available
1242.167 -// #  define _STLP_HAS_NEW_NEW_HEADER 1
1242.168 -
1242.169 -// uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
1242.170 -// not std::
1242.171 -// #  define _STLP_VENDOR_GLOBAL_STD
1242.172 -
1242.173 -// uncomment this if <cstdio> and the like put stuff in ::namespace,
1242.174 -// not std::
1242.175 -#	define _STLP_VENDOR_GLOBAL_CSTD
1242.176 -/*
1242.177 -#	ifdef _PTHREADS
1242.178 -#		undef  _PTHREADS
1242.179 -#	endif
1242.180 -#	ifdef _STLP_PTHREADS
1242.181 -#		undef _STLP_PTHREADS
1242.182 -#	endif
1242.183 -#	ifdef _STLP_THREADS
1242.184 -#		undef _STLP_THREADS
1242.185 -#	endif
1242.186 -*/
1242.187 -#	define _STLP_NATIVE_INCLUDE_PATH
1242.188 -#	define _STLP_NATIVE_C_INCLUTE_PATH
1242.189 -
1242.190 -#	define _STLP_NO_NEW_HEADER
1242.191 -#	define _STLP_NO_THREADS
1242.192 -
1242.193 -#	define _STLP_NO_EXCEPTIONS
1242.194 -
1242.195 -#   define _STLP_USE_NEWALLOC
1242.196 -//#   define _STLP_NO_NODE_ALLOC
1242.197 -#   define _STLP_NO_LONG_DOUBLE
1242.198 -#   define _STLP_BIG_ENDIAN
1242.199 -// this one causes recursive abs() calls
1242.200 -#   define _STLP_LABS
1242.201 -#   define _STLP_LDIV
1242.202 -#   define _STLP_CONST_CONSTRUCTOR_BUG
1242.203 -// #   define _STLP_HAS_NAMESPACES
1242.204 -
1242.205 -#ifdef _STLP_USE_NEW_C_HEADERS
1242.206 -#undef _STLP_USE_NEW_C_HEADERS
1242.207 -#endif
1242.208 -
1242.209 -#undef _STLP_NATIVE_C_HEADER
1242.210 -#ifndef __SYMBIAN32__
1242.211 -#define _STLP_NATIVE_C_HEADER(x) <libc/##x>
1242.212 -#endif
1242.213 -#define _STLP_NATIVE_HEADER(x) <x>
1242.214 -
1242.215 -// -----------------------------------------------------------------------------
1242.216 -//  wstring support
1242.217 -//  This is a bit confusing.
1242.218 -//  * _STLP_NO_WCHAR_T inhibits the standard C wchar functions (Symbian doesn't 
1242.219 -//    have them).
1242.220 -//  * _STLP_HAS_WCHAR_T triggers the typedef of wstring.  It's based on wint_t,
1242.221 -//    which isn't typedef's elsewhere, so we take care of it here.
1242.222 -// -----------------------------------------------------------------------------
1242.223 -//#	define _STLP_NO_WCHAR_T  1
1242.224 -#	define _STLP_HAS_WCHAR_T 1
1242.225 -#	define _STLP_WCHAR_T_IS_USHORT 1
1242.226 -#  include <wchar.h>
1242.227 -
1242.228 -#define _STLP_COMPLEX_SPECIALIZATION_BUG
1242.229 -#define _STLP_USE_EXCEPTIONS
1242.230 -#define _STLP_EXTERN_RANGE_ERRORS
1242.231 -//#define _STLP_NO_FORCE_INSTANTIATE
1242.232 -//#define __BUILDING_STLPORT
1242.233 -//#  define _STLP_USE_STDIO_IO
1242.234 -#  define _STLP_NO_NEW_NEW_HEADER
1242.235 -#  define _STLP_USE_DECLSPEC
1242.236 -#define __LIBSTD_CPP_SYMBIAN32_WSD__
1242.237 -
1242.238 -//==========================================================
1242.239 -#endif  // _STLP_WINSCW
  1243.1 --- a/epoc32/include/stdapis/stlport/deque	Tue Mar 16 16:12:26 2010 +0000
  1243.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1243.3 @@ -1,55 +0,0 @@
  1243.4 -/*
  1243.5 - *
  1243.6 - * Copyright (c) 1994
  1243.7 - * Hewlett-Packard Company
  1243.8 - *
  1243.9 - * Copyright (c) 1996,1997
 1243.10 - * Silicon Graphics Computer Systems, Inc.
 1243.11 - *
 1243.12 - * Copyright (c) 1997
 1243.13 - * Moscow Center for SPARC Technology
 1243.14 - *
 1243.15 - * Copyright (c) 1999 
 1243.16 - * Boris Fomitchev
 1243.17 - *
 1243.18 - * This material is provided "as is", with absolutely no warranty expressed
 1243.19 - * or implied. Any use is at your own risk.
 1243.20 - *
 1243.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1243.22 - * without fee, provided the above notices are retained on all copies.
 1243.23 - * Permission to modify the code and to distribute modified code is granted,
 1243.24 - * provided the above notices are retained, and a notice that the code was
 1243.25 - * modified is included with the above copyright notice.
 1243.26 - *
 1243.27 - */
 1243.28 -
 1243.29 -#ifndef _STLP_DEQUE
 1243.30 -#define _STLP_DEQUE
 1243.31 -
 1243.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1243.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x22
 1243.34 -#  include <stl/_prolog.h>
 1243.35 -# endif
 1243.36 -
 1243.37 -#ifdef _STLP_PRAGMA_ONCE
 1243.38 -# pragma once
 1243.39 -#endif
 1243.40 -
 1243.41 -#ifndef _STLP_INTERNAL_DEQUE_H
 1243.42 -# include <stl/_deque.h>
 1243.43 -#endif
 1243.44 -
 1243.45 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1243.46 -# include _STLP_NATIVE_HEADER(deque)
 1243.47 -#endif
 1243.48 -
 1243.49 -# if (_STLP_OUTERMOST_HEADER_ID == 0x22)
 1243.50 -#  include <stl/_epilog.h>
 1243.51 -#  undef _STLP_OUTERMOST_HEADER_ID
 1243.52 -# endif
 1243.53 -
 1243.54 -#endif /* _STLP_DEQUE */
 1243.55 -
 1243.56 -// Local Variables:
 1243.57 -// mode:C++
 1243.58 -// End:
  1244.1 --- a/epoc32/include/stdapis/stlport/exception	Tue Mar 16 16:12:26 2010 +0000
  1244.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1244.3 @@ -1,229 +0,0 @@
  1244.4 -/*
  1244.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1244.6 - *
  1244.7 - * Copyright (c) 1996,1997
  1244.8 - * Silicon Graphics Computer Systems, Inc.
  1244.9 - *
 1244.10 - * Copyright (c) 1999 
 1244.11 - * Boris Fomitchev
 1244.12 - *
 1244.13 - * This material is provided "as is", with absolutely no warranty expressed
 1244.14 - * or implied. Any use is at your own risk.
 1244.15 - *
 1244.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1244.17 - * without fee, provided the above notices are retained on all copies.
 1244.18 - * Permission to modify the code and to distribute modified code is granted,
 1244.19 - * provided the above notices are retained, and a notice that the code was
 1244.20 - * modified is included with the above copyright notice.
 1244.21 - *
 1244.22 - */
 1244.23 -
 1244.24 -// This header exists solely for portability.  Normally it just includes
 1244.25 -// the native header <exception>.
 1244.26 -
 1244.27 -// The header <exception> contains low-level functions that interact
 1244.28 -// with a compiler's exception-handling mechanism.  It is assumed to
 1244.29 -// be supplied with the compiler, rather than with the library, because
 1244.30 -// it is inherently tied very closely to the compiler itself.
 1244.31 -
 1244.32 -// On platforms where <exception> does not exist, this header defines
 1244.33 -// an exception base class.  This is *not* a substitute for everything
 1244.34 -// in <exception>, but it suffices to support a bare minimum of STL
 1244.35 -// functionality.
 1244.36 -
 1244.37 -
 1244.38 -# if !defined (_STLP_OUTERMOST_HEADER_ID)
 1244.39 -#  define _STLP_OUTERMOST_HEADER_ID 0x423
 1244.40 -#  include <stl/_prolog.h>
 1244.41 -# elif (_STLP_OUTERMOST_HEADER_ID == 0x423) && ! defined (_STLP_DONT_POP_0x423)
 1244.42 -#  define _STLP_DONT_POP_0x423
 1244.43 -# endif
 1244.44 -
 1244.45 -#ifndef _STLP_EXCEPTION
 1244.46 -#define _STLP_EXCEPTION
 1244.47 -
 1244.48 -# if   ! defined (_STLP_NO_EXCEPTION_HEADER)
 1244.49 -
 1244.50 -#  if defined ( _UNCAUGHT_EXCEPTION )
 1244.51 -#   undef _STLP_INCOMPLETE_EXCEPTION_HEADER
 1244.52 -#  endif
 1244.53 -
 1244.54 -# if defined(_STLP_BROKEN_EXCEPTION_CLASS)
 1244.55 -#  define exception     _STLP_NULLIFIED_BROKEN_EXCEPTION_CLASS
 1244.56 -#  define bad_exception _STLP_NULLIFIED_BROKEN_BAD_EXCEPTION_CLASS
 1244.57 -#  if defined (_STLP_NO_NEW_NEW_HEADER)
 1244.58 -#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception.h)
 1244.59 -#  else
 1244.60 -#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception)
 1244.61 -#  endif
 1244.62 -#  undef exception
 1244.63 -#  undef bad_exception
 1244.64 -# else
 1244.65 -
 1244.66 -#ifndef _STLP_NO_NEW_NEW_HEADER
 1244.67 -#define _STLP_NO_NEW_NEW_HEADER
 1244.68 -#endif
 1244.69 -
 1244.70 -# if defined (_STLP_NO_NEW_NEW_HEADER)
 1244.71 -#  include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception.h)
 1244.72 -# else
 1244.73 -#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception)
 1244.74 -# endif
 1244.75 -
 1244.76 -# endif
 1244.77 -
 1244.78 -#    if defined (_STLP_MSVC) || defined (__ICL)
 1244.79 -// dwa 02/04/00 - here I'm assuming that __ICL uses the same library headers as vc6.
 1244.80 -// the header <yvals.h> which ships with vc6 and is included by its native <exception>
 1244.81 -// actually turns on warnings, so we have to turn them back off.
 1244.82 -#      include <config/_msvc_warnings_off.h>
 1244.83 -#    endif
 1244.84 -
 1244.85 -
 1244.86 -#  ifdef _STLP_USE_OWN_NAMESPACE
 1244.87 -
 1244.88 -_STLP_BEGIN_NAMESPACE
 1244.89 -
 1244.90 -#if !defined(_STLP_BROKEN_EXCEPTION_CLASS)
 1244.91 -using _STLP_VENDOR_EXCEPT_STD::exception;
 1244.92 -using _STLP_VENDOR_EXCEPT_STD::bad_exception;
 1244.93 -#endif
 1244.94 -
 1244.95 -# if ! defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS)
 1244.96 -
 1244.97 -// fbp : many platforms present strange mix of
 1244.98 -// those in various namespaces
 1244.99 -#  if !defined(_STLP_VENDOR_UNEXPECTED_STD)
1244.100 -#   define _STLP_VENDOR_UNEXPECTED_STD _STLP_VENDOR_EXCEPT_STD
1244.101 -#  endif
1244.102 -
1244.103 -// weird errors
1244.104 -# if (! defined (__BORLANDC__)) || (defined (__STD_EXCEPTION) && defined (__RWSTD_EXCEPTION_SEEN) && defined ( _STLP_DONT_POP_0x423))
1244.105 -using _STLP_VENDOR_UNEXPECTED_STD::unexpected;
1244.106 -using _STLP_VENDOR_UNEXPECTED_STD::unexpected_handler;
1244.107 -using _STLP_VENDOR_UNEXPECTED_STD::set_unexpected;
1244.108 -using _STLP_VENDOR_UNEXPECTED_STD::terminate;
1244.109 -using _STLP_VENDOR_UNEXPECTED_STD::terminate_handler;
1244.110 -using _STLP_VENDOR_UNEXPECTED_STD::set_terminate;
1244.111 -# endif
1244.112 -
1244.113 -# if !defined (_STLP_INCOMPLETE_EXCEPTION_HEADER) 
1244.114 -using _STLP_VENDOR_UNEXPECTED_STD::uncaught_exception;
1244.115 -# endif
1244.116 -
1244.117 -#  endif
1244.118 -
1244.119 -_STLP_END_NAMESPACE
1244.120 -
1244.121 -#  endif /* _STLP_OWN_NAMESPACE */
1244.122 -
1244.123 -#else /* _STLP_NO_EXCEPTION_HEADER */
1244.124 -
1244.125 -// fbp : absence of <exception> usually means that those
1244.126 -// functions are not going to be called by compiler.
1244.127 -// Still, define them for the user.
1244.128 -#ifdef __SYMBIAN32__
1244.129 -_STLP_BEGIN_NAMESPACE
1244.130 -#endif //__SYMBIAN32__
1244.131 -typedef void (*unexpected_handler)();
1244.132 -unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY;
1244.133 -void unexpected();
1244.134 -
1244.135 -typedef void (*terminate_handler)();
1244.136 -terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY;
1244.137 -void terminate();
1244.138 -
1244.139 -bool uncaught_exception(); // not implemented under mpw as of Jan/1999
1244.140 -
1244.141 -#ifdef __SYMBIAN32__
1244.142 -_STLP_END_NAMESPACE
1244.143 -#endif //__SYMBIAN32__
1244.144 -
1244.145 -#endif  /* _STLP_NO_EXCEPTION_HEADER */	
1244.146 -
1244.147 -# if   defined (_STLP_NO_EXCEPTION_HEADER) || defined(_STLP_BROKEN_EXCEPTION_CLASS)
1244.148 -# ifndef _STLP_EXCEPTION_H
1244.149 -#  define _STLP_EXCEPTION_H
1244.150 -
1244.151 -_STLP_BEGIN_NAMESPACE
1244.152 -
1244.153 -// section 18.6.1
1244.154 -#ifdef __SYMBIAN32__
1244.155 -class exception
1244.156 -#else
1244.157 -class _STLP_CLASS_DECLSPEC exception 
1244.158 -#endif
1244.159 -	{
1244.160 -	public:
1244.161 -# ifdef _STLP_OWN_IOSTREAMS
1244.162 -        _STLP_DECLSPEC exception() _STLP_NOTHROW;
1244.163 -        _STLP_DECLSPEC virtual ~exception() _STLP_NOTHROW;
1244.164 -	_STLP_DECLSPEC virtual const char* what() const _STLP_NOTHROW;
1244.165 -# else
1244.166 -        exception() _STLP_NOTHROW {}
1244.167 -		virtual ~exception() _STLP_NOTHROW {}
1244.168 -		virtual const char* what() const _STLP_NOTHROW {return "class exception";}
1244.169 -# endif
1244.170 -	};
1244.171 -	
1244.172 -	
1244.173 -
1244.174 -// section 18.6.2.1
1244.175 -#ifdef __SYMBIAN32__
1244.176 -class bad_exception : public exception 
1244.177 -#else
1244.178 -class _STLP_CLASS_DECLSPEC bad_exception : public exception 
1244.179 -#endif
1244.180 -	{
1244.181 -	public:
1244.182 -# ifdef _STLP_OWN_IOSTREAMS
1244.183 -	  _STLP_DECLSPEC bad_exception() _STLP_NOTHROW;
1244.184 -	  _STLP_DECLSPEC ~bad_exception() _STLP_NOTHROW;
1244.185 -	  _STLP_DECLSPEC const char* what() const _STLP_NOTHROW;
1244.186 -# else
1244.187 -	  bad_exception() _STLP_NOTHROW {}
1244.188 -	  ~bad_exception() _STLP_NOTHROW {}
1244.189 -	  const char* what() const _STLP_NOTHROW {return "class bad_exception";}
1244.190 -# endif
1244.191 -	};
1244.192 -
1244.193 -#ifdef __SYMBIAN32__
1244.194 -// Give forward declaration, this should be supported by the stdard libraries from platform vendor.
1244.195 -typedef void (*unexpected_handler)();
1244.196 -_STLP_DECLSPEC unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY;
1244.197 -_STLP_DECLSPEC void unexpected();
1244.198 -
1244.199 -typedef void (*terminate_handler)();
1244.200 -_STLP_DECLSPEC terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY;
1244.201 -_STLP_DECLSPEC void terminate();
1244.202 -
1244.203 -_STLP_DECLSPEC bool uncaught_exception(); // not implemented under mpw as of Jan/1999
1244.204 -
1244.205 -#endif
1244.206 -_STLP_END_NAMESPACE
1244.207 -
1244.208 -#endif /* _STLP_NO_EXCEPTION_HEADER */
1244.209 -
1244.210 -_STLP_BEGIN_NAMESPACE
1244.211 -// forward declaration
1244.212 -class __Named_exception;
1244.213 -_STLP_END_NAMESPACE
1244.214 -#endif /* _STLP_EXCEPTION_H */
1244.215 -
1244.216 -#endif //_STLP_EXCEPTION
1244.217 -
1244.218 -# if (_STLP_OUTERMOST_HEADER_ID == 0x423)
1244.219 -#  if ! defined (_STLP_DONT_POP_0x423)
1244.220 -#   include <stl/_epilog.h>
1244.221 -#   undef  _STLP_OUTERMOST_HEADER_ID
1244.222 -#   endif
1244.223 -#   undef  _STLP_DONT_POP_0x423
1244.224 -# endif
1244.225 -
1244.226 -
1244.227 -// Local Variables:
1244.228 -// mode:C++
1244.229 -// End:
1244.230 -
1244.231 -
1244.232 -
  1245.1 --- a/epoc32/include/stdapis/stlport/functional	Tue Mar 16 16:12:26 2010 +0000
  1245.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1245.3 @@ -1,48 +0,0 @@
  1245.4 -/*
  1245.5 - * Copyright (c) 1996,1997
  1245.6 - * Silicon Graphics Computer Systems, Inc.
  1245.7 - *
  1245.8 - * Copyright (c) 1999 
  1245.9 - * Boris Fomitchev
 1245.10 - *
 1245.11 - * This material is provided "as is", with absolutely no warranty expressed
 1245.12 - * or implied. Any use is at your own risk.
 1245.13 - *
 1245.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1245.15 - * without fee, provided the above notices are retained on all copies.
 1245.16 - * Permission to modify the code and to distribute modified code is granted,
 1245.17 - * provided the above notices are retained, and a notice that the code was
 1245.18 - * modified is included with the above copyright notice.
 1245.19 - *
 1245.20 - */
 1245.21 -
 1245.22 -#ifndef _STLP_FUNCTIONAL
 1245.23 -#define _STLP_FUNCTIONAL
 1245.24 -
 1245.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1245.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x27
 1245.27 -#  include <stl/_prolog.h>
 1245.28 -# endif
 1245.29 -
 1245.30 -# ifdef _STLP_PRAGMA_ONCE
 1245.31 -#  pragma once
 1245.32 -# endif
 1245.33 -
 1245.34 -# if defined (_STLP_IMPORT_VENDOR_STD)
 1245.35 -#  include _STLP_NATIVE_HEADER(functional)
 1245.36 -# endif
 1245.37 -
 1245.38 -# ifndef _STLP_INTERNAL_FUNCTION_H
 1245.39 -#  include <stl/_function.h>
 1245.40 -# endif
 1245.41 -
 1245.42 -# if (_STLP_OUTERMOST_HEADER_ID == 0x27)
 1245.43 -#  include <stl/_epilog.h>
 1245.44 -#  undef _STLP_OUTERMOST_HEADER_ID
 1245.45 -# endif
 1245.46 -
 1245.47 -#endif /* _STLP_FUNCTIONAL */
 1245.48 -
 1245.49 -// Local Variables:
 1245.50 -// mode:C++
 1245.51 -// End:
  1246.1 --- a/epoc32/include/stdapis/stlport/hash_map	Tue Mar 16 16:12:26 2010 +0000
  1246.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1246.3 @@ -1,42 +0,0 @@
  1246.4 -/*
  1246.5 - * Copyright (c) 1996,1997
  1246.6 - * Silicon Graphics Computer Systems, Inc.
  1246.7 - *
  1246.8 - * Copyright (c) 1999 
  1246.9 - * Boris Fomitchev
 1246.10 - *
 1246.11 - * This material is provided "as is", with absolutely no warranty expressed
 1246.12 - * or implied. Any use is at your own risk.
 1246.13 - *
 1246.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1246.15 - * without fee, provided the above notices are retained on all copies.
 1246.16 - * Permission to modify the code and to distribute modified code is granted,
 1246.17 - * provided the above notices are retained, and a notice that the code was
 1246.18 - * modified is included with the above copyright notice.
 1246.19 - *
 1246.20 - */
 1246.21 -
 1246.22 -#ifndef _STLP_HASH_MAP
 1246.23 -#define _STLP_HASH_MAP
 1246.24 -
 1246.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1246.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x4028
 1246.27 -#  include <stl/_prolog.h>
 1246.28 -# endif
 1246.29 -
 1246.30 -# ifdef _STLP_PRAGMA_ONCE
 1246.31 -#  pragma once
 1246.32 -# endif
 1246.33 -
 1246.34 -#include <stl/_hash_map.h>
 1246.35 -
 1246.36 -# if (_STLP_OUTERMOST_HEADER_ID == 0x4028)
 1246.37 -#  include <stl/_epilog.h>
 1246.38 -#  undef _STLP_OUTERMOST_HEADER_ID
 1246.39 -# endif
 1246.40 -
 1246.41 -#endif /* _STLP_HASH_MAP */
 1246.42 -
 1246.43 -// Local Variables:
 1246.44 -// mode:C++
 1246.45 -// End:
  1247.1 --- a/epoc32/include/stdapis/stlport/hash_set	Tue Mar 16 16:12:26 2010 +0000
  1247.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1247.3 @@ -1,42 +0,0 @@
  1247.4 -/*
  1247.5 - * Copyright (c) 1996,1997
  1247.6 - * Silicon Graphics Computer Systems, Inc.
  1247.7 - *
  1247.8 - * Copyright (c) 1999 
  1247.9 - * Boris Fomitchev
 1247.10 - *
 1247.11 - * This material is provided "as is", with absolutely no warranty expressed
 1247.12 - * or implied. Any use is at your own risk.
 1247.13 - *
 1247.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1247.15 - * without fee, provided the above notices are retained on all copies.
 1247.16 - * Permission to modify the code and to distribute modified code is granted,
 1247.17 - * provided the above notices are retained, and a notice that the code was
 1247.18 - * modified is included with the above copyright notice.
 1247.19 - *
 1247.20 - */
 1247.21 -
 1247.22 -#ifndef _STLP_HASH_SET
 1247.23 -#define _STLP_HASH_SET
 1247.24 -
 1247.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1247.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x4029
 1247.27 -#  include <stl/_prolog.h>
 1247.28 -# endif
 1247.29 -
 1247.30 -# ifdef _STLP_PRAGMA_ONCE
 1247.31 -#  pragma once
 1247.32 -# endif
 1247.33 -
 1247.34 -#include <stl/_hash_set.h>
 1247.35 -
 1247.36 -# if (_STLP_OUTERMOST_HEADER_ID == 0x4029)
 1247.37 -#  include <stl/_epilog.h>
 1247.38 -#  undef _STLP_OUTERMOST_HEADER_ID
 1247.39 -# endif
 1247.40 -
 1247.41 -#endif /* _STLP_HASH_SET */
 1247.42 -
 1247.43 -// Local Variables:
 1247.44 -// mode:C++
 1247.45 -// End:
  1248.1 --- a/epoc32/include/stdapis/stlport/ios.h	Tue Mar 16 16:12:26 2010 +0000
  1248.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1248.3 @@ -1,57 +0,0 @@
  1248.4 -/*
  1248.5 - * Copyright (c) 1999 
  1248.6 - * Boris Fomitchev
  1248.7 - *
  1248.8 - * This material is provided "as is", with absolutely no warranty expressed
  1248.9 - * or implied. Any use is at your own risk.
 1248.10 - *
 1248.11 - * Permission to use or copy this software for any purpose is hereby granted 
 1248.12 - * without fee, provided the above notices are retained on all copies.
 1248.13 - * Permission to modify the code and to distribute modified code is granted,
 1248.14 - * provided the above notices are retained, and a notice that the code was
 1248.15 - * modified is included with the above copyright notice.
 1248.16 - *
 1248.17 - */
 1248.18 -
 1248.19 -#ifndef _STLP_IOS_H
 1248.20 -# define _STLP_IOS_H
 1248.21 -
 1248.22 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1248.23 -#  define _STLP_OUTERMOST_HEADER_ID 0x1033
 1248.24 -#  include <stl/_prolog.h>
 1248.25 -# endif
 1248.26 -
 1248.27 -# if defined (_STLP_OWN_IOSTREAMS)
 1248.28 -
 1248.29 -#ifdef __BORLANDC__
 1248.30 -#  include <ios.>
 1248.31 -#else
 1248.32 -#  include <ios>
 1248.33 -#endif
 1248.34 -
 1248.35 -# if defined (_STLP_USE_NAMESPACES)
 1248.36 -# include <using/ios>
 1248.37 -# endif
 1248.38 -
 1248.39 -# elif !defined (_STLP_USE_NO_IOSTREAMS)
 1248.40 -
 1248.41 -# include _STLP_NATIVE_OLD_STREAMS_HEADER(ios.h)
 1248.42 -# if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE)
 1248.43 -_STLP_BEGIN_NAMESPACE
 1248.44 -using _STLP_OLD_IO_NAMESPACE::ios;
 1248.45 -_STLP_END_NAMESPACE
 1248.46 -# endif /* _STLP_USE_OWN_NAMESPACE */
 1248.47 -
 1248.48 -# endif
 1248.49 -
 1248.50 -# if (_STLP_OUTERMOST_HEADER_ID == 0x1033)
 1248.51 -#  include <stl/_epilog.h>
 1248.52 -#  undef _STLP_OUTERMOST_HEADER_ID
 1248.53 -# endif
 1248.54 -
 1248.55 -#endif /* _STLP_IOS_H */
 1248.56 -
 1248.57 -// Local Variables:
 1248.58 -// mode:C++
 1248.59 -// End:
 1248.60 -
  1249.1 --- a/epoc32/include/stdapis/stlport/istream.h	Tue Mar 16 16:12:26 2010 +0000
  1249.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1249.3 @@ -1,63 +0,0 @@
  1249.4 -/*
  1249.5 - * Copyright (c) 1999 
  1249.6 - * Boris Fomitchev
  1249.7 - *
  1249.8 - * This material is provided "as is", with absolutely no warranty expressed
  1249.9 - * or implied. Any use is at your own risk.
 1249.10 - *
 1249.11 - * Permission to use or copy this software for any purpose is hereby granted 
 1249.12 - * without fee, provided the above notices are retained on all copies.
 1249.13 - * Permission to modify the code and to distribute modified code is granted,
 1249.14 - * provided the above notices are retained, and a notice that the code was
 1249.15 - * modified is included with the above copyright notice.
 1249.16 - *
 1249.17 - */
 1249.18 -
 1249.19 -#ifndef _STLP_ISTREAM_H
 1249.20 -# define _STLP_ISTREAM_H
 1249.21 -
 1249.22 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1249.23 -#  define _STLP_OUTERMOST_HEADER_ID 0x2037
 1249.24 -#  include <stl/_prolog.h>
 1249.25 -# endif
 1249.26 -
 1249.27 -# if defined (_STLP_OWN_IOSTREAMS)
 1249.28 -
 1249.29 -# include <istream>
 1249.30 -
 1249.31 -# ifndef _STLP_HAS_NO_NAMESPACES
 1249.32 -#  ifdef _STLP_BROKEN_USING_DIRECTIVE
 1249.33 -using namespace _STLP_STD;
 1249.34 -#  else
 1249.35 -using _STLP_STD::basic_istream;
 1249.36 -using _STLP_STD::basic_iostream;
 1249.37 -using _STLP_STD::istream;
 1249.38 -using _STLP_STD::iostream;
 1249.39 -using _STLP_STD::ios;
 1249.40 -#   ifndef _STLP_NO_WCHAR_T
 1249.41 -using _STLP_STD::wistream;
 1249.42 -using _STLP_STD::wiostream;
 1249.43 -#   endif
 1249.44 -using _STLP_STD::ws;
 1249.45 -#  endif
 1249.46 -# endif
 1249.47 -
 1249.48 -# elif !defined (_STLP_USE_NO_IOSTREAMS)
 1249.49 -
 1249.50 -# include _STLP_NATIVE_OLD_STREAMS_HEADER(istream.h)
 1249.51 -
 1249.52 -# if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE)
 1249.53 -_STLP_BEGIN_NAMESPACE
 1249.54 -using _STLP_OLD_IO_NAMESPACE::istream;
 1249.55 -_STLP_END_NAMESPACE
 1249.56 -# endif /* _STLP_USE_OWN_NAMESPACE */
 1249.57 -
 1249.58 -# endif /* _STLP_OWN_IOSTREAMS */
 1249.59 -
 1249.60 -# if (_STLP_OUTERMOST_HEADER_ID == 0x2037)
 1249.61 -#  include <stl/_epilog.h>
 1249.62 -#  undef _STLP_OUTERMOST_HEADER_ID
 1249.63 -# endif
 1249.64 -
 1249.65 -#endif /* _STLP_ISTREAM_H */
 1249.66 -
  1250.1 --- a/epoc32/include/stdapis/stlport/iterator	Tue Mar 16 16:12:26 2010 +0000
  1250.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1250.3 @@ -1,59 +0,0 @@
  1250.4 -/*
  1250.5 - *
  1250.6 - * Copyright (c) 1994
  1250.7 - * Hewlett-Packard Company
  1250.8 - *
  1250.9 - * Copyright (c) 1996,1997
 1250.10 - * Silicon Graphics Computer Systems, Inc.
 1250.11 - *
 1250.12 - * Copyright (c) 1997
 1250.13 - * Moscow Center for SPARC Technology
 1250.14 - *
 1250.15 - * Copyright (c) 1999 
 1250.16 - * Boris Fomitchev
 1250.17 - *
 1250.18 - * This material is provided "as is", with absolutely no warranty expressed
 1250.19 - * or implied. Any use is at your own risk.
 1250.20 - *
 1250.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1250.22 - * without fee, provided the above notices are retained on all copies.
 1250.23 - * Permission to modify the code and to distribute modified code is granted,
 1250.24 - * provided the above notices are retained, and a notice that the code was
 1250.25 - * modified is included with the above copyright notice.
 1250.26 - *
 1250.27 - */
 1250.28 -
 1250.29 -#ifndef _STLP_ITERATOR
 1250.30 -#define _STLP_ITERATOR
 1250.31 -
 1250.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1250.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x38
 1250.34 -#  include <stl/_prolog.h>
 1250.35 -# endif
 1250.36 -
 1250.37 -# ifdef _STLP_PRAGMA_ONCE
 1250.38 -#  pragma once
 1250.39 -# endif
 1250.40 -
 1250.41 -#if defined (_STLP_IMPORT_VENDOR_STD)
 1250.42 -# include _STLP_NATIVE_HEADER(iterator)
 1250.43 -#endif /* IMPORT */
 1250.44 -
 1250.45 -# ifndef _STLP_INTERNAL_ITERATOR_H
 1250.46 -#  include <stl/_iterator.h>
 1250.47 -# endif
 1250.48 -
 1250.49 -# ifndef _STLP_INTERNAL_STREAM_ITERATOR_H
 1250.50 -#  include <stl/_stream_iterator.h>
 1250.51 -# endif
 1250.52 -
 1250.53 -# if (_STLP_OUTERMOST_HEADER_ID == 0x38)
 1250.54 -#  include <stl/_epilog.h>
 1250.55 -#  undef _STLP_OUTERMOST_HEADER_ID
 1250.56 -# endif
 1250.57 -
 1250.58 -#endif /* _STLP_ITERATOR */
 1250.59 -
 1250.60 -// Local Variables:
 1250.61 -// mode:C++
 1250.62 -// End:
  1251.1 --- a/epoc32/include/stdapis/stlport/limits	Tue Mar 16 16:12:26 2010 +0000
  1251.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1251.3 @@ -1,44 +0,0 @@
  1251.4 -/*
  1251.5 - * Copyright (c) 1997
  1251.6 - * Silicon Graphics Computer Systems, Inc.
  1251.7 - *
  1251.8 - * Copyright (c) 1999 
  1251.9 - * Boris Fomitchev
 1251.10 - *
 1251.11 - * This material is provided "as is", with absolutely no warranty expressed
 1251.12 - * or implied. Any use is at your own risk.
 1251.13 - *
 1251.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1251.15 - * without fee, provided the above notices are retained on all copies.
 1251.16 - * Permission to modify the code and to distribute modified code is granted,
 1251.17 - * provided the above notices are retained, and a notice that the code was
 1251.18 - * modified is included with the above copyright notice.
 1251.19 - *
 1251.20 - */
 1251.21 -
 1251.22 -#ifndef _STLP_LIMITS
 1251.23 -#define _STLP_LIMITS
 1251.24 -
 1251.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1251.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x39
 1251.27 -#  include <stl/_prolog.h>
 1251.28 -# endif
 1251.29 -
 1251.30 -# ifdef _STLP_PRAGMA_ONCE
 1251.31 -#  pragma once
 1251.32 -# endif
 1251.33 -
 1251.34 -# ifndef _STLP_LIMITS_H
 1251.35 -#  include <stl/_limits.h>
 1251.36 -# endif
 1251.37 -
 1251.38 -# if (_STLP_OUTERMOST_HEADER_ID == 0x39)
 1251.39 -#  include <stl/_epilog.h>
 1251.40 -#  undef _STLP_OUTERMOST_HEADER_ID
 1251.41 -# endif
 1251.42 -
 1251.43 -#endif /* _STLP_LIMITS */
 1251.44 -
 1251.45 -// Local Variables:
 1251.46 -// mode:C++
 1251.47 -// End:
  1252.1 --- a/epoc32/include/stdapis/stlport/list	Tue Mar 16 16:12:26 2010 +0000
  1252.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1252.3 @@ -1,55 +0,0 @@
  1252.4 -/*
  1252.5 - *
  1252.6 - * Copyright (c) 1994
  1252.7 - * Hewlett-Packard Company
  1252.8 - *
  1252.9 - * Copyright (c) 1996,1997
 1252.10 - * Silicon Graphics Computer Systems, Inc.
 1252.11 - *
 1252.12 - * Copyright (c) 1997
 1252.13 - * Moscow Center for SPARC Technology
 1252.14 - *
 1252.15 - * Copyright (c) 1999 
 1252.16 - * Boris Fomitchev
 1252.17 - *
 1252.18 - * This material is provided "as is", with absolutely no warranty expressed
 1252.19 - * or implied. Any use is at your own risk.
 1252.20 - *
 1252.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1252.22 - * without fee, provided the above notices are retained on all copies.
 1252.23 - * Permission to modify the code and to distribute modified code is granted,
 1252.24 - * provided the above notices are retained, and a notice that the code was
 1252.25 - * modified is included with the above copyright notice.
 1252.26 - *
 1252.27 - */
 1252.28 -
 1252.29 -#ifndef _STLP_LIST
 1252.30 -#define _STLP_LIST
 1252.31 -
 1252.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1252.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x40
 1252.34 -#  include <stl/_prolog.h>
 1252.35 -# endif
 1252.36 -
 1252.37 -# ifdef _STLP_PRAGMA_ONCE
 1252.38 -#  pragma once
 1252.39 -# endif
 1252.40 -
 1252.41 -#ifndef _STLP_INTERNAL_LIST_H
 1252.42 -# include <stl/_list.h>
 1252.43 -#endif
 1252.44 -
 1252.45 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1252.46 -# include _STLP_NATIVE_HEADER(list)
 1252.47 -#endif
 1252.48 -
 1252.49 -# if (_STLP_OUTERMOST_HEADER_ID == 0x40)
 1252.50 -#  include <stl/_epilog.h>
 1252.51 -#  undef _STLP_OUTERMOST_HEADER_ID
 1252.52 -# endif
 1252.53 -
 1252.54 -#endif /* _STLP_LIST */
 1252.55 -
 1252.56 -// Local Variables:
 1252.57 -// mode:C++
 1252.58 -// End:
  1253.1 --- a/epoc32/include/stdapis/stlport/map	Tue Mar 16 16:12:26 2010 +0000
  1253.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1253.3 @@ -1,53 +0,0 @@
  1253.4 -/*
  1253.5 - *
  1253.6 - * Copyright (c) 1994
  1253.7 - * Hewlett-Packard Company
  1253.8 - *
  1253.9 - * Copyright (c) 1996,1997
 1253.10 - * Silicon Graphics Computer Systems, Inc.
 1253.11 - *
 1253.12 - * Copyright (c) 1997
 1253.13 - * Moscow Center for SPARC Technology
 1253.14 - *
 1253.15 - * Copyright (c) 1999 
 1253.16 - * Boris Fomitchev
 1253.17 - *
 1253.18 - * This material is provided "as is", with absolutely no warranty expressed
 1253.19 - * or implied. Any use is at your own risk.
 1253.20 - *
 1253.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1253.22 - * without fee, provided the above notices are retained on all copies.
 1253.23 - * Permission to modify the code and to distribute modified code is granted,
 1253.24 - * provided the above notices are retained, and a notice that the code was
 1253.25 - * modified is included with the above copyright notice.
 1253.26 - *
 1253.27 - */
 1253.28 -
 1253.29 -#ifndef _STLP_MAP
 1253.30 -#define _STLP_MAP
 1253.31 -
 1253.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1253.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x43
 1253.34 -#  include <stl/_prolog.h>
 1253.35 -# endif
 1253.36 -
 1253.37 -# ifdef _STLP_PRAGMA_ONCE
 1253.38 -#  pragma once
 1253.39 -# endif
 1253.40 -
 1253.41 -#include <stl/_map.h>
 1253.42 -
 1253.43 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1253.44 -# include _STLP_NATIVE_HEADER(map)
 1253.45 -#endif
 1253.46 -
 1253.47 -# if (_STLP_OUTERMOST_HEADER_ID == 0x43)
 1253.48 -#  include <stl/_epilog.h>
 1253.49 -#  undef _STLP_OUTERMOST_HEADER_ID
 1253.50 -# endif
 1253.51 -
 1253.52 -#endif /* _STLP_MAP */
 1253.53 -
 1253.54 -// Local Variables:
 1253.55 -// mode:C++
 1253.56 -// End:
  1254.1 --- a/epoc32/include/stdapis/stlport/mem.h	Tue Mar 16 16:12:26 2010 +0000
  1254.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1254.3 @@ -1,56 +0,0 @@
  1254.4 -/*
  1254.5 - * Copyright (c) 1999 
  1254.6 - * Boris Fomitchev
  1254.7 - *
  1254.8 - * This material is provided "as is", with absolutely no warranty expressed
  1254.9 - * or implied. Any use is at your own risk.
 1254.10 - *
 1254.11 - * Permission to use or copy this software for any purpose is hereby granted 
 1254.12 - * without fee, provided the above notices are retained on all copies.
 1254.13 - * Permission to modify the code and to distribute modified code is granted,
 1254.14 - * provided the above notices are retained, and a notice that the code was
 1254.15 - * modified is included with the above copyright notice.
 1254.16 - *
 1254.17 - */
 1254.18 -
 1254.19 -// Boris : highly questionable header for BC++
 1254.20 -
 1254.21 -#ifndef _STLP_mem_h
 1254.22 -
 1254.23 -# if !defined (_STLP_OUTERMOST_HEADER_ID)
 1254.24 -#  define _STLP_OUTERMOST_HEADER_ID 0x245
 1254.25 -#  include <stl/_prolog.h>
 1254.26 -# elif (_STLP_OUTERMOST_HEADER_ID == 0x245) && ! defined (_STLP_DONT_POP_0x245)
 1254.27 -#  define _STLP_DONT_POP_0x245
 1254.28 -# endif
 1254.29 -
 1254.30 -# if (__BORLANDC__ > 0x530) && !defined(__linux__)
 1254.31 -#  include <rw/stddefs.h>
 1254.32 -# endif
 1254.33 -
 1254.34 -#   undef __USING_CNAME__
 1254.35 -
 1254.36 -#ifdef __SYMBIAN32__
 1254.37 -#  include <mem.h>
 1254.38 -#else
 1254.39 -#  include _STLP_NATIVE_C_HEADER(mem.h)
 1254.40 -#endif
 1254.41 -
 1254.42 -
 1254.43 -# define _STLP_mem_h 1
 1254.44 -
 1254.45 -# if (_STLP_OUTERMOST_HEADER_ID == 0x245)
 1254.46 -#  if ! defined (_STLP_DONT_POP_0x245)
 1254.47 -#   include <stl/_epilog.h>
 1254.48 -#   undef  _STLP_OUTERMOST_HEADER_ID
 1254.49 -#   endif
 1254.50 -#   undef  _STLP_DONT_POP_0x245
 1254.51 -# endif
 1254.52 -
 1254.53 -#endif /* _STLP_mem_h */
 1254.54 -
 1254.55 -// #endif /* NATIVE */
 1254.56 -// Local Variables:
 1254.57 -// mode:C++
 1254.58 -// End:
 1254.59 -
  1255.1 --- a/epoc32/include/stdapis/stlport/memory	Tue Mar 16 16:12:26 2010 +0000
  1255.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1255.3 @@ -1,70 +0,0 @@
  1255.4 -/*
  1255.5 - * Copyright (c) 1997-1999
  1255.6 - * Silicon Graphics Computer Systems, Inc.
  1255.7 - *
  1255.8 - * Copyright (c) 1999 
  1255.9 - * Boris Fomitchev
 1255.10 - *
 1255.11 - * This material is provided "as is", with absolutely no warranty expressed
 1255.12 - * or implied. Any use is at your own risk.
 1255.13 - *
 1255.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1255.15 - * without fee, provided the above notices are retained on all copies.
 1255.16 - * Permission to modify the code and to distribute modified code is granted,
 1255.17 - * provided the above notices are retained, and a notice that the code was
 1255.18 - * modified is included with the above copyright notice.
 1255.19 - *
 1255.20 - */
 1255.21 -
 1255.22 -#ifndef _STLP_MEMORY
 1255.23 -# define _STLP_MEMORY
 1255.24 -
 1255.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1255.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x46
 1255.27 -#  include <stl/_prolog.h>
 1255.28 -# endif
 1255.29 -
 1255.30 -# ifdef _STLP_PRAGMA_ONCE
 1255.31 -#  pragma once
 1255.32 -# endif
 1255.33 -
 1255.34 -# ifndef _STLP_INTERNAL_ALLOC_H
 1255.35 -#  include <stl/_alloc.h>
 1255.36 -# endif
 1255.37 -
 1255.38 -# ifndef _STLP_INTERNAL_TEMPBUF_H
 1255.39 -#  include <stl/_tempbuf.h>
 1255.40 -# endif
 1255.41 -
 1255.42 -# ifndef _STLP_INTERNAL_RAW_STORAGE_ITER_H
 1255.43 -#  include <stl/_raw_storage_iter.h>
 1255.44 -# endif
 1255.45 -
 1255.46 -# include <stl/_auto_ptr.h>
 1255.47 -
 1255.48 -# if defined (_STLP_IMPORT_VENDOR_STD)
 1255.49 -
 1255.50 -#  if defined (__MSL__)
 1255.51 -#   include _STLP_NATIVE_HEADER(limits)
 1255.52 -#  endif
 1255.53 -
 1255.54 -#  include _STLP_NATIVE_HEADER(memory)
 1255.55 -
 1255.56 -#  if defined (__MSL__) && (__MSL__ >= 0x2405	 && __MSL__ < 0x5201) 
 1255.57 -/*  980401 vss  MSL 2.4  Pro 3 Release  */	
 1255.58 -#   include <new_mem.h>
 1255.59 -#  endif
 1255.60 -
 1255.61 -# endif
 1255.62 -
 1255.63 -# if (_STLP_OUTERMOST_HEADER_ID == 0x46)
 1255.64 -#  include <stl/_epilog.h>
 1255.65 -#  undef _STLP_OUTERMOST_HEADER_ID
 1255.66 -# endif
 1255.67 -
 1255.68 -#endif /* _STLP_MEMORY */
 1255.69 -
 1255.70 -// Local Variables:
 1255.71 -// mode:C++
 1255.72 -// End:
 1255.73 -
  1256.1 --- a/epoc32/include/stdapis/stlport/pthread_alloc	Tue Mar 16 16:12:26 2010 +0000
  1256.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1256.3 @@ -1,49 +0,0 @@
  1256.4 -/*
  1256.5 - *
  1256.6 - * Copyright (c) 1994
  1256.7 - * Hewlett-Packard Company
  1256.8 - *
  1256.9 - * Copyright (c) 1996,1997
 1256.10 - * Silicon Graphics Computer Systems, Inc.
 1256.11 - *
 1256.12 - * Copyright (c) 1997
 1256.13 - * Moscow Center for SPARC Technology
 1256.14 - *
 1256.15 - * Copyright (c) 1999 
 1256.16 - * Boris Fomitchev
 1256.17 - *
 1256.18 - * This material is provided "as is", with absolutely no warranty expressed
 1256.19 - * or implied. Any use is at your own risk.
 1256.20 - *
 1256.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1256.22 - * without fee, provided the above notices are retained on all copies.
 1256.23 - * Permission to modify the code and to distribute modified code is granted,
 1256.24 - * provided the above notices are retained, and a notice that the code was
 1256.25 - * modified is included with the above copyright notice.
 1256.26 - *
 1256.27 - */
 1256.28 -
 1256.29 -#ifndef _STLP_PTHREAD_ALLOC
 1256.30 -#define _STLP_PTHREAD_ALLOC
 1256.31 -
 1256.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1256.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x52
 1256.34 -#  include <stl/_prolog.h>
 1256.35 -# endif
 1256.36 -
 1256.37 -# ifdef _STLP_PRAGMA_ONCE
 1256.38 -#  pragma once
 1256.39 -# endif
 1256.40 -
 1256.41 -# include <stl/_pthread_alloc.h>
 1256.42 -
 1256.43 -# if (_STLP_OUTERMOST_HEADER_ID == 0x52)
 1256.44 -#  include <stl/_epilog.h>
 1256.45 -#  undef _STLP_OUTERMOST_HEADER_ID
 1256.46 -# endif
 1256.47 -
 1256.48 -#endif /* _STLP_PTHREAD_ALLOC */
 1256.49 -
 1256.50 -// Local Variables:
 1256.51 -// mode:C++
 1256.52 -// End:
  1257.1 --- a/epoc32/include/stdapis/stlport/queue	Tue Mar 16 16:12:26 2010 +0000
  1257.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1257.3 @@ -1,55 +0,0 @@
  1257.4 -/*
  1257.5 - *
  1257.6 - * Copyright (c) 1994
  1257.7 - * Hewlett-Packard Company
  1257.8 - *
  1257.9 - * Copyright (c) 1996,1997
 1257.10 - * Silicon Graphics Computer Systems, Inc.
 1257.11 - *
 1257.12 - * Copyright (c) 1997
 1257.13 - * Moscow Center for SPARC Technology
 1257.14 - *
 1257.15 - * Copyright (c) 1999 
 1257.16 - * Boris Fomitchev
 1257.17 - *
 1257.18 - * This material is provided "as is", with absolutely no warranty expressed
 1257.19 - * or implied. Any use is at your own risk.
 1257.20 - *
 1257.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1257.22 - * without fee, provided the above notices are retained on all copies.
 1257.23 - * Permission to modify the code and to distribute modified code is granted,
 1257.24 - * provided the above notices are retained, and a notice that the code was
 1257.25 - * modified is included with the above copyright notice.
 1257.26 - *
 1257.27 - */
 1257.28 -
 1257.29 -#ifndef _STLP_QUEUE
 1257.30 -#define _STLP_QUEUE
 1257.31 -
 1257.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1257.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x53
 1257.34 -#  include <stl/_prolog.h>
 1257.35 -# endif
 1257.36 -
 1257.37 -# ifdef _STLP_PRAGMA_ONCE
 1257.38 -#  pragma once
 1257.39 -# endif
 1257.40 -
 1257.41 -#ifndef _STLP_INTERNAL_QUEUE_H
 1257.42 -# include <stl/_queue.h>
 1257.43 -#endif
 1257.44 -
 1257.45 -#ifndef _STLP_INTERNAL_FUNCTION_H
 1257.46 -# include <functional>
 1257.47 -#endif
 1257.48 -
 1257.49 -# if (_STLP_OUTERMOST_HEADER_ID == 0x53)
 1257.50 -#  include <stl/_epilog.h>
 1257.51 -#  undef _STLP_OUTERMOST_HEADER_ID
 1257.52 -# endif
 1257.53 -
 1257.54 -#endif /* _STLP_QUEUE */
 1257.55 -
 1257.56 -// Local Variables:
 1257.57 -// mode:C++
 1257.58 -// End:
  1258.1 --- a/epoc32/include/stdapis/stlport/rope	Tue Mar 16 16:12:26 2010 +0000
  1258.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1258.3 @@ -1,37 +0,0 @@
  1258.4 -/*
  1258.5 - * Copyright (c) 1997
  1258.6 - * Silicon Graphics Computer Systems, Inc.
  1258.7 - *
  1258.8 - * Permission to use, copy, modify, distribute and sell this software
  1258.9 - * and its documentation for any purpose is hereby granted without fee,
 1258.10 - * provided that the above copyright notice appear in all copies and
 1258.11 - * that both that copyright notice and this permission notice appear
 1258.12 - * in supporting documentation.  Silicon Graphics makes no
 1258.13 - * representations about the suitability of this software for any
 1258.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1258.15 - */
 1258.16 -
 1258.17 -#ifndef _STLP_ROPE
 1258.18 -#define _STLP_ROPE
 1258.19 -
 1258.20 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1258.21 -#  define _STLP_OUTERMOST_HEADER_ID 0x54
 1258.22 -#  include <stl/_prolog.h>
 1258.23 -# endif
 1258.24 -
 1258.25 -# ifdef _STLP_PRAGMA_ONCE
 1258.26 -#  pragma once
 1258.27 -# endif
 1258.28 -
 1258.29 -# include <stl/_rope.h>
 1258.30 -
 1258.31 -# if (_STLP_OUTERMOST_HEADER_ID == 0x54)
 1258.32 -#  include <stl/_epilog.h>
 1258.33 -#  undef _STLP_OUTERMOST_HEADER_ID
 1258.34 -# endif
 1258.35 -
 1258.36 -#endif /* _STLP_ROPE */
 1258.37 -
 1258.38 -// Local Variables:
 1258.39 -// mode:C++
 1258.40 -// End:
  1259.1 --- a/epoc32/include/stdapis/stlport/set	Tue Mar 16 16:12:26 2010 +0000
  1259.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1259.3 @@ -1,53 +0,0 @@
  1259.4 -/*
  1259.5 - *
  1259.6 - * Copyright (c) 1994
  1259.7 - * Hewlett-Packard Company
  1259.8 - *
  1259.9 - * Copyright (c) 1996,1997
 1259.10 - * Silicon Graphics Computer Systems, Inc.
 1259.11 - *
 1259.12 - * Copyright (c) 1997
 1259.13 - * Moscow Center for SPARC Technology
 1259.14 - *
 1259.15 - * Copyright (c) 1999 
 1259.16 - * Boris Fomitchev
 1259.17 - *
 1259.18 - * This material is provided "as is", with absolutely no warranty expressed
 1259.19 - * or implied. Any use is at your own risk.
 1259.20 - *
 1259.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1259.22 - * without fee, provided the above notices are retained on all copies.
 1259.23 - * Permission to modify the code and to distribute modified code is granted,
 1259.24 - * provided the above notices are retained, and a notice that the code was
 1259.25 - * modified is included with the above copyright notice.
 1259.26 - *
 1259.27 - */
 1259.28 -
 1259.29 -#ifndef _STLP_SET
 1259.30 -#define _STLP_SET
 1259.31 -
 1259.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1259.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x55
 1259.34 -#  include <stl/_prolog.h>
 1259.35 -# endif
 1259.36 -
 1259.37 -# ifdef _STLP_PRAGMA_ONCE
 1259.38 -#  pragma once
 1259.39 -# endif
 1259.40 -
 1259.41 -#include <stl/_set.h>
 1259.42 -
 1259.43 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1259.44 -# include _STLP_NATIVE_HEADER(set)
 1259.45 -#endif
 1259.46 -
 1259.47 -# if (_STLP_OUTERMOST_HEADER_ID == 0x55)
 1259.48 -#  include <stl/_epilog.h>
 1259.49 -#  undef _STLP_OUTERMOST_HEADER_ID
 1259.50 -# endif
 1259.51 -
 1259.52 -#endif /* _STLP_SET */
 1259.53 -
 1259.54 -// Local Variables:
 1259.55 -// mode:C++
 1259.56 -// End:
  1260.1 --- a/epoc32/include/stdapis/stlport/slist	Tue Mar 16 16:12:26 2010 +0000
  1260.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1260.3 @@ -1,44 +0,0 @@
  1260.4 -/*
  1260.5 - * Copyright (c) 1997
  1260.6 - * Silicon Graphics Computer Systems, Inc.
  1260.7 - *
  1260.8 - * Permission to use, copy, modify, distribute and sell this software
  1260.9 - * and its documentation for any purpose is hereby granted without fee,
 1260.10 - * provided that the above copyright notice appear in all copies and
 1260.11 - * that both that copyright notice and this permission notice appear
 1260.12 - * in supporting documentation.  Silicon Graphics makes no
 1260.13 - * representations about the suitability of this software for any
 1260.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1260.15 - *
 1260.16 - */
 1260.17 -
 1260.18 -#ifndef _STLP_SLIST
 1260.19 -#define _STLP_SLIST
 1260.20 -
 1260.21 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1260.22 -#  define _STLP_OUTERMOST_HEADER_ID 0x58
 1260.23 -#  include <stl/_prolog.h>
 1260.24 -# endif
 1260.25 -
 1260.26 -# ifdef _STLP_PRAGMA_ONCE
 1260.27 -#  pragma once
 1260.28 -# endif
 1260.29 -
 1260.30 -#ifndef _STLP_INTERNAL_SLIST_H
 1260.31 -# include <stl/_slist.h>
 1260.32 -#endif
 1260.33 -
 1260.34 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1260.35 -# include _STLP_NATIVE_HEADER(slist)
 1260.36 -#endif
 1260.37 -
 1260.38 -# if (_STLP_OUTERMOST_HEADER_ID == 0x58)
 1260.39 -#  include <stl/_epilog.h>
 1260.40 -#  undef _STLP_OUTERMOST_HEADER_ID
 1260.41 -# endif
 1260.42 -
 1260.43 -#endif /* _STLP_SLIST */
 1260.44 -
 1260.45 -// Local Variables:
 1260.46 -// mode:C++
 1260.47 -// End:
  1261.1 --- a/epoc32/include/stdapis/stlport/stack	Tue Mar 16 16:12:26 2010 +0000
  1261.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1261.3 @@ -1,55 +0,0 @@
  1261.4 -/*
  1261.5 - *
  1261.6 - * Copyright (c) 1994
  1261.7 - * Hewlett-Packard Company
  1261.8 - *
  1261.9 - * Copyright (c) 1996,1997
 1261.10 - * Silicon Graphics Computer Systems, Inc.
 1261.11 - *
 1261.12 - * Copyright (c) 1997
 1261.13 - * Moscow Center for SPARC Technology
 1261.14 - *
 1261.15 - * Copyright (c) 1999 
 1261.16 - * Boris Fomitchev
 1261.17 - *
 1261.18 - * This material is provided "as is", with absolutely no warranty expressed
 1261.19 - * or implied. Any use is at your own risk.
 1261.20 - *
 1261.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1261.22 - * without fee, provided the above notices are retained on all copies.
 1261.23 - * Permission to modify the code and to distribute modified code is granted,
 1261.24 - * provided the above notices are retained, and a notice that the code was
 1261.25 - * modified is included with the above copyright notice.
 1261.26 - *
 1261.27 - */
 1261.28 -
 1261.29 -#ifndef _STLP_STACK
 1261.30 -#define _STLP_STACK
 1261.31 -
 1261.32 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1261.33 -#  define _STLP_OUTERMOST_HEADER_ID 0x60
 1261.34 -#  include <stl/_prolog.h>
 1261.35 -# endif
 1261.36 -
 1261.37 -# ifdef _STLP_PRAGMA_ONCE
 1261.38 -#  pragma once
 1261.39 -# endif
 1261.40 -
 1261.41 -#ifndef _STLP_INTERNAL_STACK_H
 1261.42 -#include <stl/_stack.h>
 1261.43 -#endif
 1261.44 -
 1261.45 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1261.46 -# include _STLP_NATIVE_HEADER(stack)
 1261.47 -#endif
 1261.48 -
 1261.49 -# if (_STLP_OUTERMOST_HEADER_ID == 0x60)
 1261.50 -#  include <stl/_epilog.h>
 1261.51 -#  undef _STLP_OUTERMOST_HEADER_ID
 1261.52 -# endif
 1261.53 -
 1261.54 -#endif /* _STLP_STACK */
 1261.55 -
 1261.56 -// Local Variables:
 1261.57 -// mode:C++
 1261.58 -// End:
  1262.1 --- a/epoc32/include/stdapis/stlport/stdexcept	Tue Mar 16 16:12:26 2010 +0000
  1262.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1262.3 @@ -1,290 +0,0 @@
  1262.4 -/*
  1262.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1262.6 - *
  1262.7 - * Copyright (c) 1996,1997
  1262.8 - * Silicon Graphics Computer Systems, Inc.
  1262.9 - *
 1262.10 - * Copyright (c) 1999 
 1262.11 - * Boris Fomitchev
 1262.12 - *
 1262.13 - * This material is provided "as is", with absolutely no warranty expressed
 1262.14 - * or implied. Any use is at your own risk.
 1262.15 - *
 1262.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1262.17 - * without fee, provided the above notices are retained on all copies.
 1262.18 - * Permission to modify the code and to distribute modified code is granted,
 1262.19 - * provided the above notices are retained, and a notice that the code was
 1262.20 - * modified is included with the above copyright notice.
 1262.21 - *
 1262.22 - */
 1262.23 -
 1262.24 -
 1262.25 -# if !defined (_STLP_OUTERMOST_HEADER_ID)
 1262.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x63
 1262.27 -#  include <stl/_prolog.h>
 1262.28 -# elif (_STLP_OUTERMOST_HEADER_ID == 0x63) && ! defined (_STLP_DONT_POP_0x63)
 1262.29 -#  define _STLP_DONT_POP_0x63
 1262.30 -# endif
 1262.31 -
 1262.32 -#ifndef _STLP_STDEXCEPT
 1262.33 -#define _STLP_STDEXCEPT 1
 1262.34 -
 1262.35 -# ifdef _STLP_PRAGMA_ONCE
 1262.36 -#  pragma once
 1262.37 -# endif
 1262.38 -
 1262.39 -#if defined (_STLP_USE_TRAP_LEAVE)
 1262.40 -
 1262.41 -enum {
 1262.42 -  STDEX_bad_alloc			= -10000,
 1262.43 -  STDEX_logic_error			= -10001,
 1262.44 -  STDEX_runtime_error		= -10002,
 1262.45 -  STDEX_domain_error		= -10003,
 1262.46 -  STDEX_invalid_argument	= -10004,
 1262.47 -  STDEX_length_error		= -10005,
 1262.48 -  STDEX_out_of_range		= -10006,
 1262.49 -  STDEX_range_error			= -10007,
 1262.50 -  STDEX_overflow_error		= -10008,
 1262.51 -  STDEX_underflow_error		= -10009
 1262.52 -};
 1262.53 -
 1262.54 -// User may override this
 1262.55 -#ifndef STDEX_REPORT_EXCEPTION
 1262.56 -# define STDEX_REPORT_EXCEPTION(x) 
 1262.57 -#endif
 1262.58 -
 1262.59 -#endif
 1262.60 -
 1262.61 -# if !defined(_STLP_STDEXCEPT_SEEN) && \
 1262.62 -   (!defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE))
 1262.63 -
 1262.64 -#  define _STLP_STDEXCEPT_SEEN 1
 1262.65 -
 1262.66 -#  include <exception>
 1262.67 -
 1262.68 -#if defined(_STLP_USE_EXCEPTIONS) || \
 1262.69 -    !(defined(_MIPS_SIM) && defined(_ABIO32) && _MIPS_SIM == _ABIO32)
 1262.70 -
 1262.71 -# include <cstring>
 1262.72 -
 1262.73 -#ifndef _STLP_INTERNAL_ALLOC_H
 1262.74 -# include <stl/_alloc.h>
 1262.75 -#endif
 1262.76 -
 1262.77 -#ifndef _STLP_STRING_FWD_H
 1262.78 -# include <stl/_string_fwd.h>
 1262.79 -#endif
 1262.80 -
 1262.81 -# define _STLP_OWN_STDEXCEPT 1
 1262.82 -
 1262.83 -_STLP_BEGIN_NAMESPACE
 1262.84 -
 1262.85 -# if   ! defined (_STLP_NO_EXCEPTION_HEADER)
 1262.86 -# if !defined(_STLP_EXCEPTION_BASE) && !defined(_STLP_BROKEN_EXCEPTION_CLASS) && defined (_STLP_USE_NAMESPACES) && defined (_STLP_USE_OWN_NAMESPACE)
 1262.87 -using _STLP_VENDOR_EXCEPT_STD::exception;
 1262.88 -# endif
 1262.89 -# endif
 1262.90 -#  define _STLP_EXCEPTION_BASE exception
 1262.91 -
 1262.92 -#ifdef __SYMBIAN32__
 1262.93 -class __Named_exception : public _STLP_EXCEPTION_BASE {
 1262.94 -#else
 1262.95 -class _STLP_CLASS_DECLSPEC __Named_exception : public _STLP_EXCEPTION_BASE {
 1262.96 -#endif //__SYMBIAN32__
 1262.97 -public:
 1262.98 -  _STLP_DECLSPEC __Named_exception(const string& __str) 
 1262.99 -# ifdef _STLP_OWN_IOSTREAMS
1262.100 -    ;
1262.101 -  _STLP_DECLSPEC const char* what() const _STLP_NOTHROW_INHERENTLY;
1262.102 -  _STLP_DECLSPEC ~__Named_exception() _STLP_NOTHROW_INHERENTLY;
1262.103 -# else
1262.104 -  {
1262.105 -    strncpy(_M_name, __get_c_string(__str), _S_bufsize);
1262.106 -    _M_name[_S_bufsize - 1] = '\0';
1262.107 -  }
1262.108 -  const char* what() const _STLP_NOTHROW_INHERENTLY { return _M_name; }
1262.109 -# endif
1262.110 -
1262.111 -private:
1262.112 -  enum { _S_bufsize = 256 };
1262.113 -  char _M_name[_S_bufsize];
1262.114 -};
1262.115 -
1262.116 -#ifdef __SYMBIAN32__
1262.117 -class logic_error : public __Named_exception {
1262.118 -#else
1262.119 -class _STLP_CLASS_DECLSPEC logic_error : public __Named_exception {
1262.120 -#endif
1262.121 -public:
1262.122 -  _STLP_DECLSPEC logic_error(const string& __s)
1262.123 -#ifdef __SYMBIAN32__
1262.124 -    ;
1262.125 -#else
1262.126 -   : __Named_exception(__s) {}
1262.127 -#endif
1262.128 -# ifdef _STLP_OWN_IOSTREAMS
1262.129 -  _STLP_DECLSPEC ~logic_error() _STLP_NOTHROW_INHERENTLY;
1262.130 -# endif
1262.131 -};
1262.132 -
1262.133 -#ifdef __SYMBIAN32__
1262.134 -class runtime_error : public __Named_exception {
1262.135 -#else
1262.136 -class _STLP_CLASS_DECLSPEC runtime_error : public __Named_exception {
1262.137 -#endif
1262.138 -public:
1262.139 -  _STLP_DECLSPEC runtime_error(const string& __s)
1262.140 -#ifdef __SYMBIAN32__
1262.141 -    ;
1262.142 -#else
1262.143 -   : __Named_exception(__s) {}
1262.144 -#endif
1262.145 -# ifdef _STLP_OWN_IOSTREAMS
1262.146 -  _STLP_DECLSPEC ~runtime_error() _STLP_NOTHROW_INHERENTLY;
1262.147 -# endif
1262.148 -};
1262.149 -
1262.150 -#ifdef __SYMBIAN32__
1262.151 -class domain_error : public logic_error {
1262.152 -#else
1262.153 -class _STLP_CLASS_DECLSPEC domain_error : public logic_error {
1262.154 -#endif
1262.155 -public:
1262.156 -  _STLP_DECLSPEC domain_error(const string& __arg)
1262.157 -#ifdef __SYMBIAN32__
1262.158 -    ;
1262.159 -#else
1262.160 -   : logic_error(__arg) {}
1262.161 -#endif
1262.162 -# ifdef _STLP_OWN_IOSTREAMS
1262.163 -  _STLP_DECLSPEC ~domain_error() _STLP_NOTHROW_INHERENTLY;
1262.164 -# endif
1262.165 -};
1262.166 -
1262.167 -#ifdef __SYMBIAN32__
1262.168 -class invalid_argument : public logic_error {
1262.169 -#else
1262.170 -class _STLP_CLASS_DECLSPEC invalid_argument : public logic_error {
1262.171 -#endif
1262.172 -public:
1262.173 -  _STLP_DECLSPEC invalid_argument(const string& __arg)
1262.174 -#ifdef __SYMBIAN32__
1262.175 -    ;
1262.176 -#else
1262.177 -   : logic_error(__arg) {}
1262.178 -#endif
1262.179 -# ifdef _STLP_OWN_IOSTREAMS
1262.180 -  _STLP_DECLSPEC ~invalid_argument() _STLP_NOTHROW_INHERENTLY;
1262.181 -# endif
1262.182 -};
1262.183 -
1262.184 -#ifdef __SYMBIAN32__
1262.185 -class length_error : public logic_error {
1262.186 -#else
1262.187 -class _STLP_CLASS_DECLSPEC length_error : public logic_error {
1262.188 -#endif
1262.189 -public:
1262.190 -  _STLP_DECLSPEC length_error(const string& __arg)
1262.191 -#ifdef __SYMBIAN32__
1262.192 -    ;
1262.193 -#else
1262.194 -   : logic_error(__arg) {}
1262.195 -#endif
1262.196 -# ifdef _STLP_OWN_IOSTREAMS
1262.197 -  _STLP_DECLSPEC ~length_error() _STLP_NOTHROW_INHERENTLY;
1262.198 -# endif
1262.199 -};
1262.200 -
1262.201 -#ifdef __SYMBIAN32__
1262.202 -class out_of_range : public logic_error {
1262.203 -#else
1262.204 -class _STLP_CLASS_DECLSPEC out_of_range : public logic_error {
1262.205 -#endif
1262.206 -public:
1262.207 -  _STLP_DECLSPEC out_of_range(const string& __arg)
1262.208 -#ifdef __SYMBIAN32__
1262.209 -    ;
1262.210 -#else
1262.211 -   : logic_error(__arg) {}
1262.212 -#endif
1262.213 -# ifdef _STLP_OWN_IOSTREAMS
1262.214 -  _STLP_DECLSPEC ~out_of_range() _STLP_NOTHROW_INHERENTLY;
1262.215 -# endif
1262.216 -};
1262.217 -
1262.218 -#ifdef __SYMBIAN32__
1262.219 -class range_error : public runtime_error {
1262.220 -#else
1262.221 -class _STLP_CLASS_DECLSPEC range_error : public runtime_error {
1262.222 -#endif
1262.223 -public:
1262.224 -  _STLP_DECLSPEC range_error(const string& __arg)
1262.225 -#ifdef __SYMBIAN32__
1262.226 -    ;
1262.227 -#else
1262.228 -   : runtime_error(__arg) {}
1262.229 -#endif
1262.230 -# ifdef _STLP_OWN_IOSTREAMS
1262.231 -  _STLP_DECLSPEC ~range_error() _STLP_NOTHROW_INHERENTLY;
1262.232 -# endif
1262.233 -};
1262.234 -
1262.235 -#ifdef __SYMBIAN32__
1262.236 -class overflow_error : public runtime_error {
1262.237 -#else
1262.238 -class _STLP_CLASS_DECLSPEC overflow_error : public runtime_error {
1262.239 -#endif
1262.240 -public:
1262.241 -  _STLP_DECLSPEC overflow_error(const string& __arg)
1262.242 -#ifdef __SYMBIAN32__
1262.243 -    ;
1262.244 -#else
1262.245 -   : runtime_error(__arg) {}
1262.246 -#endif
1262.247 -# ifdef _STLP_OWN_IOSTREAMS
1262.248 -  _STLP_DECLSPEC ~overflow_error() _STLP_NOTHROW_INHERENTLY;
1262.249 -# endif
1262.250 -};
1262.251 -
1262.252 -#ifdef __SYMBIAN32__
1262.253 -class underflow_error : public runtime_error {
1262.254 -#else
1262.255 -class _STLP_CLASS_DECLSPEC underflow_error : public runtime_error {
1262.256 -#endif
1262.257 -public:
1262.258 -  _STLP_DECLSPEC underflow_error(const string& __arg)
1262.259 -#ifdef __SYMBIAN32__
1262.260 -    ;
1262.261 -#else
1262.262 -   : runtime_error(__arg) {}
1262.263 -#endif
1262.264 -# ifdef _STLP_OWN_IOSTREAMS
1262.265 -  _STLP_DECLSPEC ~underflow_error() _STLP_NOTHROW_INHERENTLY;
1262.266 -# endif
1262.267 -};
1262.268 -
1262.269 -_STLP_END_NAMESPACE
1262.270 -
1262.271 -#endif /* Not o32, and no exceptions */
1262.272 -# endif /* _STLP_STDEXCEPT_SEEN */
1262.273 -
1262.274 -
1262.275 -#if defined (_STLP_USE_NATIVE_STDEXCEPT)
1262.276 -#  include _STLP_NATIVE_HEADER(stdexcept)
1262.277 -# endif
1262.278 -
1262.279 -#endif /* _STLP_STDEXCEPT */
1262.280 -
1262.281 -# if (_STLP_OUTERMOST_HEADER_ID == 0x63)
1262.282 -#  if ! defined (_STLP_DONT_POP_0x63)
1262.283 -#   include <stl/_epilog.h>
1262.284 -#   undef  _STLP_OUTERMOST_HEADER_ID
1262.285 -#   endif
1262.286 -#   undef  _STLP_DONT_POP_0x63
1262.287 -# endif
1262.288 -
1262.289 -
1262.290 -// Local Variables:
1262.291 -// mode:C++
1262.292 -// End:
1262.293 -
  1263.1 --- a/epoc32/include/stdapis/stlport/stdiostream.h	Tue Mar 16 16:12:26 2010 +0000
  1263.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1263.3 @@ -1,10 +0,0 @@
  1263.4 -#ifndef _STLP_misc_stdiostream_h
  1263.5 -# define _STLP_misc_stdiostream_h
  1263.6 -# if (__SUNPRO_CC >= 0x500 )
  1263.7 -#  include <../CCios/stdiostream.h>
  1263.8 -# else if defined (__SUNPRO_CC)
  1263.9 -#  include <../CC/stdiostream.h>
 1263.10 -# else
 1263.11 -#  error "This file is for SUN CC only. Please remove it if it causes any harm for other compilers."
 1263.12 -# endif
 1263.13 -#endif
  1264.1 --- a/epoc32/include/stdapis/stlport/stl/_abbrevs.h	Tue Mar 16 16:12:26 2010 +0000
  1264.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1264.3 @@ -1,70 +0,0 @@
  1264.4 -/*
  1264.5 - *
  1264.6 - * Copyright (c) 1999 
  1264.7 - * Boris Fomitchev
  1264.8 - *
  1264.9 - * This material is provided "as is", with absolutely no warranty expressed
 1264.10 - * or implied. Any use is at your own risk.
 1264.11 - *
 1264.12 - * Permission to use or copy this software for any purpose is hereby granted 
 1264.13 - * without fee, provided the above notices are retained on all copies.
 1264.14 - * Permission to modify the code and to distribute modified code is granted,
 1264.15 - * provided the above notices are retained, and a notice that the code was
 1264.16 - * modified is included with the above copyright notice.
 1264.17 - *
 1264.18 - */
 1264.19 -
 1264.20 -/* NOTE: This is an internal header file, included by other STL headers.
 1264.21 - *   You should not attempt to use it directly.
 1264.22 - */
 1264.23 -
 1264.24 -#ifndef _STLP_INTERNAL_ABBREVS_H
 1264.25 -# define _STLP_INTERNAL_ABBREVS_H
 1264.26 -
 1264.27 -// ugliness is intentional - to reduce conflicts
 1264.28 -#  define input_iterator_tag             _In__ItT
 1264.29 -#  define output_iterator_tag            _Ou__ItT
 1264.30 -#  define bidirectional_iterator_tag     _Bd__ItT
 1264.31 -#  define random_access_iterator_tag     _Ra__ItT
 1264.32 -#  define input_iterator                 _In__It
 1264.33 -#  define output_iterator                _Ou__It
 1264.34 -#  define bidirectional_iterator         _Bd__It
 1264.35 -#  define random_access_iterator         _Ra__It
 1264.36 -#  define reverse_bidirectional_iterator _rBd__It
 1264.37 -#  define reverse_iterator               _r__It
 1264.38 -#  define back_insert_iterator           _bI__It
 1264.39 -#  define front_insert_iterator          _fI__It
 1264.40 -#  define raw_storage_iterator           _rS__It
 1264.41 -#  define _Const_traits _C_Tr
 1264.42 -#  define _Nonconst_traits _N_Tr
 1264.43 -
 1264.44 -// ugliness is intentional - to reduce conflicts probability
 1264.45 -#  define __malloc_alloc   M__A
 1264.46 -#  define __node_alloc     D__A
 1264.47 -#  define __new_alloc      N__A
 1264.48 -#  define __debug_alloc    G__A
 1264.49 -
 1264.50 -#  define __deque_iterator         _dQ__It
 1264.51 -#  define _Buf_traits              _dQ__BTr
 1264.52 -#  define _Deque_iterator          _Dq__It
 1264.53 -
 1264.54 -#  define _Select1st _S1st
 1264.55 -#  define _Select2nd _S2nd
 1264.56 -
 1264.57 -#  define _Hashtable_iterator         _hT__It
 1264.58 -#  define _Hashtable_const_iterator   _hT__cIt
 1264.59 -#  define _Hashtable_node             _hT__N
 1264.60 -#  define _Hashtable_base             _hT__B
 1264.61 -#  define _Ht_iterator _Ht_It
 1264.62 -
 1264.63 -#  define __list_iterator         _L__It
 1264.64 -#  define __slist_iterator         _SL__It
 1264.65 -
 1264.66 -#  define _Rb_tree_node_base       _rbT__NB
 1264.67 -#  define _Rb_tree_node            _rbT__N
 1264.68 -#  define _Rb_base_iterator        _rbTB__It
 1264.69 -#  define _Rb_tree_base_iterator   _rbT__It
 1264.70 -#  define _Rb_tree_base            _rbT__B
 1264.71 -
 1264.72 -#endif
 1264.73 -
  1265.1 --- a/epoc32/include/stdapis/stlport/stl/_algo.c	Tue Mar 16 16:12:26 2010 +0000
  1265.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1265.3 @@ -1,1934 +0,0 @@
  1265.4 -/*
  1265.5 - *
  1265.6 - * Copyright (c) 1994
  1265.7 - * Hewlett-Packard Company
  1265.8 - *
  1265.9 - * Copyright (c) 1996,1997
 1265.10 - * Silicon Graphics Computer Systems, Inc.
 1265.11 - *
 1265.12 - * Copyright (c) 1997
 1265.13 - * Moscow Center for SPARC Technology
 1265.14 - *
 1265.15 - * Copyright (c) 1999 
 1265.16 - * Boris Fomitchev
 1265.17 - *
 1265.18 - * This material is provided "as is", with absolutely no warranty expressed
 1265.19 - * or implied. Any use is at your own risk.
 1265.20 - *
 1265.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1265.22 - * without fee, provided the above notices are retained on all copies.
 1265.23 - * Permission to modify the code and to distribute modified code is granted,
 1265.24 - * provided the above notices are retained, and a notice that the code was
 1265.25 - * modified is included with the above copyright notice.
 1265.26 - *
 1265.27 - */
 1265.28 -
 1265.29 -#ifndef _STLP_ALGO_C
 1265.30 -# define _STLP_ALGO_C
 1265.31 -
 1265.32 -# if !defined (_STLP_INTERNAL_ALGO_H)
 1265.33 -#  include <stl/_algo.h>
 1265.34 -# endif
 1265.35 -
 1265.36 -_STLP_BEGIN_NAMESPACE
 1265.37 -
 1265.38 -template <class _BidirectionalIter, class _Distance, class _Compare>
 1265.39 -void __merge_without_buffer(_BidirectionalIter __first,
 1265.40 -                            _BidirectionalIter __middle,
 1265.41 -                            _BidirectionalIter __last,
 1265.42 -                            _Distance __len1, _Distance __len2,
 1265.43 -                            _Compare __comp);
 1265.44 -
 1265.45 -
 1265.46 -template <class _BidirectionalIter1, class _BidirectionalIter2,
 1265.47 -          class _BidirectionalIter3, class _Compare>
 1265.48 -_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1,
 1265.49 -                                     _BidirectionalIter1 __last1,
 1265.50 -                                     _BidirectionalIter2 __first2,
 1265.51 -                                     _BidirectionalIter2 __last2,
 1265.52 -                                     _BidirectionalIter3 __result,
 1265.53 -                                     _Compare __comp);
 1265.54 -
 1265.55 -template <class _Tp>
 1265.56 -# if !(defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x420 ))
 1265.57 -inline 
 1265.58 -# endif
 1265.59 -const _Tp& __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) {
 1265.60 -  if (__a < __b)
 1265.61 -    if (__b < __c)
 1265.62 -      return __b;
 1265.63 -    else if (__a < __c)
 1265.64 -      return __c;
 1265.65 -    else
 1265.66 -      return __a;
 1265.67 -  else if (__a < __c)
 1265.68 -    return __a;
 1265.69 -  else if (__b < __c)
 1265.70 -    return __c;
 1265.71 -  else
 1265.72 -    return __b;
 1265.73 -}
 1265.74 -
 1265.75 -template <class _Tp, class _Compare>
 1265.76 -# if !(defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x420 ))
 1265.77 -inline 
 1265.78 -# endif
 1265.79 -const _Tp&
 1265.80 -__median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) {
 1265.81 -  if (__comp(__a, __b))
 1265.82 -    if (__comp(__b, __c))
 1265.83 -      return __b;
 1265.84 -    else if (__comp(__a, __c))
 1265.85 -      return __c;
 1265.86 -    else
 1265.87 -      return __a;
 1265.88 -  else if (__comp(__a, __c))
 1265.89 -    return __a;
 1265.90 -  else if (__comp(__b, __c))
 1265.91 -    return __c;
 1265.92 -  else
 1265.93 -    return __b;
 1265.94 -}
 1265.95 -
 1265.96 -template <class _ForwardIter1, class _ForwardIter2>
 1265.97 -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
 1265.98 -                     _ForwardIter2 __first2, _ForwardIter2 __last2) 
 1265.99 -{
1265.100 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.101 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.102 -  // Test for empty ranges
1265.103 -  if (__first1 == __last1 || __first2 == __last2)
1265.104 -    return __first1;
1265.105 -
1265.106 -  // Test for a pattern of length 1.
1265.107 -  _ForwardIter2 __tmp(__first2);
1265.108 -  ++__tmp;
1265.109 -  if (__tmp == __last2)
1265.110 -    return find(__first1, __last1, *__first2);
1265.111 -
1265.112 -  // General case.
1265.113 -  _ForwardIter2 __p1 = __first2; 
1265.114 -  ++__p1;
1265.115 -
1265.116 -  _ForwardIter1 __current = __first1;
1265.117 -
1265.118 -  while (__first1 != __last1) {
1265.119 -    __first1 = find(__first1, __last1, *__first2);
1265.120 -    if (__first1 == __last1)
1265.121 -      return __last1;
1265.122 -
1265.123 -    _ForwardIter2 __p = __p1;
1265.124 -    __current = __first1; 
1265.125 -    if (++__current == __last1)
1265.126 -      return __last1;
1265.127 -
1265.128 -    while (*__current == *__p) {
1265.129 -      if (++__p == __last2)
1265.130 -        return __first1;
1265.131 -      if (++__current == __last1)
1265.132 -        return __last1;
1265.133 -    }
1265.134 -
1265.135 -    ++__first1;
1265.136 -  }
1265.137 -  return __first1;
1265.138 -}
1265.139 -
1265.140 -// search_n.  Search for __count consecutive copies of __val.
1265.141 -
1265.142 -template <class _ForwardIter, class _Integer, class _Tp>
1265.143 -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1265.144 -                      _Integer __count, const _Tp& __val) {
1265.145 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.146 -  if (__count <= 0)
1265.147 -    return __first;
1265.148 -  else {
1265.149 -    __first = find(__first, __last, __val);
1265.150 -    while (__first != __last) {
1265.151 -      _Integer __n = __count - 1;
1265.152 -      _ForwardIter __i = __first;
1265.153 -      ++__i;
1265.154 -      while (__i != __last && __n != 0 && *__i == __val) {
1265.155 -        ++__i;
1265.156 -        --__n;
1265.157 -      }
1265.158 -      if (__n == 0)
1265.159 -        return __first;
1265.160 -      else
1265.161 -        __first = find(__i, __last, __val);
1265.162 -    }
1265.163 -    return __last;
1265.164 -  }
1265.165 -}
1265.166 -
1265.167 -template <class _ForwardIter, class _Integer, class _Tp, class _BinaryPred>
1265.168 -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1265.169 -                      _Integer __count, const _Tp& __val,
1265.170 -                      _BinaryPred __binary_pred) {
1265.171 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.172 -  if (__count <= 0)
1265.173 -    return __first;
1265.174 -  else {
1265.175 -    while (__first != __last) {
1265.176 -      if (__binary_pred(*__first, __val))
1265.177 -        break;
1265.178 -      ++__first;
1265.179 -    }
1265.180 -    while (__first != __last) {
1265.181 -      _Integer __n = __count - 1;
1265.182 -      _ForwardIter __i = __first;
1265.183 -      ++__i;
1265.184 -      while (__i != __last && __n != 0 && __binary_pred(*__i, __val)) {
1265.185 -        ++__i;
1265.186 -        --__n;
1265.187 -      }
1265.188 -      if (__n == 0)
1265.189 -        return __first;
1265.190 -      else {
1265.191 -        while (__i != __last) {
1265.192 -          if (__binary_pred(*__i, __val))
1265.193 -            break;
1265.194 -          ++__i;
1265.195 -        }
1265.196 -        __first = __i;
1265.197 -      }
1265.198 -    }
1265.199 -    return __last;
1265.200 -  }
1265.201 -} 
1265.202 -
1265.203 -template <class _ForwardIter1, class _ForwardIter2>
1265.204 -_ForwardIter1 
1265.205 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1265.206 -         _ForwardIter2 __first2, _ForwardIter2 __last2)
1265.207 -{
1265.208 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.209 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.210 -  return __find_end(__first1, __last1, __first2, __last2,
1265.211 -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1265.212 -                    _STLP_ITERATOR_CATEGORY(__first1, _ForwardIter1),
1265.213 -                    _STLP_ITERATOR_CATEGORY(__first2, _ForwardIter2),
1265.214 -# else
1265.215 -		    forward_iterator_tag(),
1265.216 -                    forward_iterator_tag(),
1265.217 -# endif
1265.218 -                    __equal_to(_STLP_VALUE_TYPE(__first1, _ForwardIter1))
1265.219 -    );
1265.220 -}
1265.221 -
1265.222 -// unique and unique_copy
1265.223 -template <class _InputIterator, class _OutputIterator, class _BinaryPredicate,
1265.224 -					    class _Tp>
1265.225 -_STLP_INLINE_LOOP _OutputIterator 
1265.226 -__unique_copy(_InputIterator __first, _InputIterator __last,
1265.227 -              _OutputIterator __result,
1265.228 -              _BinaryPredicate __binary_pred, _Tp*) {
1265.229 -  _Tp __val = *__first;
1265.230 - _STLP_PUSH_STACK_ITEM(_Tp, &__val)
1265.231 -  *__result = __val;
1265.232 -  while (++__first != __last)
1265.233 -    if (!__binary_pred(__val, *__first)) {
1265.234 -      __val = *__first;
1265.235 -      *++__result = __val;
1265.236 -    }
1265.237 -  return ++__result;
1265.238 -}
1265.239 -
1265.240 -template <class _InputIter, class _OutputIter, class _BinaryPredicate>
1265.241 -inline _OutputIter 
1265.242 -__unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1265.243 -              _BinaryPredicate __binary_pred, const output_iterator_tag &) {
1265.244 -  return __unique_copy(__first, __last, __result, __binary_pred, _STLP_VALUE_TYPE(__first, _InputIter));
1265.245 -}
1265.246 -
1265.247 -template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1265.248 -_STLP_INLINE_LOOP _ForwardIter 
1265.249 -__unique_copy(_InputIter __first, _InputIter __last, _ForwardIter __result, 
1265.250 -              _BinaryPredicate __binary_pred, const forward_iterator_tag &) {
1265.251 -  *__result = *__first;
1265.252 -  while (++__first != __last)
1265.253 -    if (!__binary_pred(*__result, *__first)) *++__result = *__first;
1265.254 -  return ++__result;
1265.255 -}
1265.256 -
1265.257 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
1265.258 -template <class _InputIterator, class _BidirectionalIterator, class _BinaryPredicate>
1265.259 -inline _BidirectionalIterator 
1265.260 -__unique_copy(_InputIterator __first, _InputIterator __last,
1265.261 -              _BidirectionalIterator __result, _BinaryPredicate __binary_pred,
1265.262 -              const bidirectional_iterator_tag &) {
1265.263 -  return __unique_copy(__first, __last, __result, __binary_pred, forward_iterator_tag());
1265.264 -}
1265.265 -
1265.266 -template <class _InputIterator, class _RandomAccessIterator, class _BinaryPredicate>
1265.267 -inline _RandomAccessIterator 
1265.268 -__unique_copy(_InputIterator __first, _InputIterator __last,
1265.269 -              _RandomAccessIterator __result, _BinaryPredicate __binary_pred,
1265.270 -              const random_access_iterator_tag &) {
1265.271 -  return __unique_copy(__first, __last, __result, __binary_pred, forward_iterator_tag());
1265.272 -}
1265.273 -# endif /* _STLP_NONTEMPL_BASE_MATCH_BUG */
1265.274 -
1265.275 -
1265.276 -template <class _InputIter, class _OutputIter>
1265.277 -_OutputIter 
1265.278 -unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result) {
1265.279 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.280 -  if (__first == __last) return __result;
1265.281 -  return __unique_copy(__first, __last, __result, __equal_to(_STLP_VALUE_TYPE(__first, _InputIter)),
1265.282 -                       _STLP_ITERATOR_CATEGORY(__result, _OutputIter));
1265.283 -}
1265.284 -
1265.285 -template <class _InputIter, class _OutputIter, class _BinaryPredicate>
1265.286 -_OutputIter 
1265.287 -unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1265.288 -            _BinaryPredicate __binary_pred) {
1265.289 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.290 -  if (__first == __last) return __result;
1265.291 -  return __unique_copy(__first, __last, __result, __binary_pred,
1265.292 -                       _STLP_ITERATOR_CATEGORY(__result, _OutputIter));
1265.293 -}
1265.294 -
1265.295 -// rotate and rotate_copy, and their auxiliary functions
1265.296 -
1265.297 -template <class _ForwardIter, class _Distance>
1265.298 -_ForwardIter __rotate(_ForwardIter __first,
1265.299 -                      _ForwardIter __middle,
1265.300 -                      _ForwardIter __last,
1265.301 -                      _Distance*,
1265.302 -                      const forward_iterator_tag &) {
1265.303 -  if (__first == __middle)
1265.304 -    return __last;
1265.305 -  if (__last  == __middle)
1265.306 -    return __first;
1265.307 -
1265.308 -  _ForwardIter __first2 = __middle;
1265.309 -  do {
1265.310 -    swap(*__first++, *__first2++);
1265.311 -    if (__first == __middle)
1265.312 -      __middle = __first2;
1265.313 -  } while (__first2 != __last);
1265.314 -
1265.315 -  _ForwardIter __new_middle = __first;
1265.316 -
1265.317 -  __first2 = __middle;
1265.318 -
1265.319 -  while (__first2 != __last) {
1265.320 -    swap (*__first++, *__first2++);
1265.321 -    if (__first == __middle)
1265.322 -      __middle = __first2;
1265.323 -    else if (__first2 == __last)
1265.324 -      __first2 = __middle;
1265.325 -  }
1265.326 -
1265.327 -  return __new_middle;
1265.328 -}
1265.329 -
1265.330 -template <class _BidirectionalIter, class _Distance>
1265.331 -_BidirectionalIter __rotate(_BidirectionalIter __first,
1265.332 -                            _BidirectionalIter __middle,
1265.333 -                            _BidirectionalIter __last,
1265.334 -                            _Distance*,
1265.335 -                            const bidirectional_iterator_tag &) {
1265.336 -  if (__first == __middle)
1265.337 -    return __last;
1265.338 -  if (__last  == __middle)
1265.339 -    return __first;
1265.340 -
1265.341 -  __reverse(__first,  __middle, bidirectional_iterator_tag());
1265.342 -  __reverse(__middle, __last,   bidirectional_iterator_tag());
1265.343 -
1265.344 -  while (__first != __middle && __middle != __last)
1265.345 -    swap (*__first++, *--__last);
1265.346 -
1265.347 -  if (__first == __middle) {
1265.348 -    __reverse(__middle, __last,   bidirectional_iterator_tag());
1265.349 -    return __last;
1265.350 -  }
1265.351 -  else {
1265.352 -    __reverse(__first,  __middle, bidirectional_iterator_tag());
1265.353 -    return __first;
1265.354 -  }
1265.355 -}
1265.356 -
1265.357 -template <class _RandomAccessIter, class _Distance, class _Tp>
1265.358 -_RandomAccessIter __rotate(_RandomAccessIter __first,
1265.359 -                           _RandomAccessIter __middle,
1265.360 -                           _RandomAccessIter __last,
1265.361 -                           _Distance *, _Tp *) {
1265.362 -
1265.363 -  _Distance __n = __last   - __first;
1265.364 -  _Distance __k = __middle - __first;
1265.365 -  _Distance __l = __n - __k;
1265.366 -  _RandomAccessIter __result = __first + (__last - __middle);
1265.367 -
1265.368 -  if (__k==0)  /* __first == middle */
1265.369 -    return __last;
1265.370 -
1265.371 -  if (__k == __l) {
1265.372 -    swap_ranges(__first, __middle, __middle);
1265.373 -    return __result;
1265.374 -  }
1265.375 -
1265.376 -  _Distance __d = __gcd(__n, __k);
1265.377 -
1265.378 -  for (_Distance __i = 0; __i < __d; __i++) {
1265.379 -    _Tp __tmp = *__first;
1265.380 -    _STLP_PUSH_STACK_ITEM(_Tp, &__tmp)
1265.381 -    _RandomAccessIter __p = __first;
1265.382 -
1265.383 -    if (__k < __l) {
1265.384 -      for (_Distance __j = 0; __j < __l/__d; __j++) {
1265.385 -	if (__p > __first + __l) {
1265.386 -          *__p = *(__p - __l);
1265.387 -          __p -= __l;
1265.388 -        }
1265.389 -
1265.390 -        *__p = *(__p + __k);
1265.391 -        __p += __k;
1265.392 -      }
1265.393 -    }
1265.394 -
1265.395 -    else {
1265.396 -      for (_Distance __j = 0; __j < __k/__d - 1; __j ++) {
1265.397 -        if (__p < __last - __k) {
1265.398 -          *__p = *(__p + __k);
1265.399 -          __p += __k;
1265.400 -        }
1265.401 -
1265.402 -        *__p = * (__p - __l);
1265.403 -        __p -= __l;
1265.404 -      }
1265.405 -    }
1265.406 -
1265.407 -    *__p = __tmp;
1265.408 -    ++__first;
1265.409 -  }
1265.410 -
1265.411 -  return __result;
1265.412 -}
1265.413 -
1265.414 -template <class _RandomAccessIter, class _Distance>
1265.415 -inline _RandomAccessIter 
1265.416 -__rotate(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last,
1265.417 -         _Distance * __dis, const random_access_iterator_tag &) {
1265.418 -  return __rotate(__first, __middle, __last,
1265.419 -                  __dis, _STLP_VALUE_TYPE(__first, _RandomAccessIter));
1265.420 -}
1265.421 -
1265.422 -template <class _ForwardIter>
1265.423 -_ForwardIter 
1265.424 -rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) {
1265.425 -  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1265.426 -  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1265.427 -  return __rotate(__first, __middle, __last,
1265.428 -                  _STLP_DISTANCE_TYPE(__first, _ForwardIter),
1265.429 -                  _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1265.430 -}
1265.431 -
1265.432 -// Return a random number in the range [0, __n).  This function encapsulates
1265.433 -// whether we're using rand (part of the standard C library) or lrand48
1265.434 -// (not standard, but a much better choice whenever it's available).
1265.435 -
1265.436 -template <class _Distance>
1265.437 -inline _Distance __random_number(_Distance __n) {
1265.438 -#ifdef _STLP_NO_DRAND48
1265.439 -  return rand() % __n;
1265.440 -#else
1265.441 -  return lrand48() % __n;
1265.442 -#endif
1265.443 -}
1265.444 -
1265.445 -template <class _RandomAccessIter>
1265.446 -void random_shuffle(_RandomAccessIter __first,
1265.447 -		    _RandomAccessIter __last) {
1265.448 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.449 -  if (__first == __last) return;
1265.450 -  for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
1265.451 -    iter_swap(__i, __first + __random_number((__i - __first) + 1));
1265.452 -}
1265.453 -
1265.454 -template <class _RandomAccessIter, class _RandomNumberGenerator>
1265.455 -void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
1265.456 -                    _RandomNumberGenerator& __rand) {
1265.457 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.458 -  if (__first == __last) return;
1265.459 -  for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
1265.460 -    iter_swap(__i, __first + __rand((__i - __first) + 1));
1265.461 -}
1265.462 -
1265.463 -# ifndef _STLP_NO_EXTENSIONS
1265.464 -
1265.465 -// random_sample and random_sample_n (extensions, not part of the standard).
1265.466 -
1265.467 -template <class _ForwardIter, class _OutputIter, class _Distance>
1265.468 -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1265.469 -                            _OutputIter __stl_out, const _Distance __n)
1265.470 -{
1265.471 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.472 -  _Distance __remaining = distance(__first, __last);
1265.473 -  _Distance __m = (min) (__n, __remaining);
1265.474 -
1265.475 -  while (__m > 0) {
1265.476 -    if (__random_number(__remaining) < __m) {
1265.477 -      *__stl_out = *__first;
1265.478 -      ++__stl_out;
1265.479 -      --__m;
1265.480 -    }
1265.481 -
1265.482 -    --__remaining;
1265.483 -    ++__first;
1265.484 -  }
1265.485 -  return __stl_out;
1265.486 -}
1265.487 -
1265.488 -
1265.489 -template <class _ForwardIter, class _OutputIter, class _Distance,
1265.490 -          class _RandomNumberGenerator>
1265.491 -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1265.492 -                            _OutputIter __stl_out, const _Distance __n,
1265.493 -                            _RandomNumberGenerator& __rand)
1265.494 -{
1265.495 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.496 -  _Distance __remaining = distance(__first, __last);
1265.497 -  _Distance __m = (min) (__n, __remaining);
1265.498 -
1265.499 -  while (__m > 0) {
1265.500 -    if (__rand(__remaining) < __m) {
1265.501 -      *__stl_out = *__first;
1265.502 -      ++__stl_out;
1265.503 -      --__m;
1265.504 -    }
1265.505 -
1265.506 -    --__remaining;
1265.507 -    ++__first;
1265.508 -  }
1265.509 -  return __stl_out;
1265.510 -}
1265.511 -
1265.512 -template <class _InputIter, class _RandomAccessIter, class _Distance>
1265.513 -_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last,
1265.514 -                                  _RandomAccessIter __stl_out,
1265.515 -                                  const _Distance __n)
1265.516 -{
1265.517 -  _Distance __m = 0;
1265.518 -  _Distance __t = __n;
1265.519 -  for ( ; __first != __last && __m < __n; ++__m, ++__first) 
1265.520 -    __stl_out[__m] = *__first;
1265.521 -
1265.522 -  while (__first != __last) {
1265.523 -    ++__t;
1265.524 -    _Distance __M = __random_number(__t);
1265.525 -    if (__M < __n)
1265.526 -      __stl_out[__M] = *__first;
1265.527 -    ++__first;
1265.528 -  }
1265.529 -
1265.530 -  return __stl_out + __m;
1265.531 -}
1265.532 -
1265.533 -template <class _InputIter, class _RandomAccessIter,
1265.534 -          class _RandomNumberGenerator, class _Distance>
1265.535 -_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last,
1265.536 -                                  _RandomAccessIter __stl_out,
1265.537 -                                  _RandomNumberGenerator& __rand,
1265.538 -                                  const _Distance __n)
1265.539 -{
1265.540 -  _Distance __m = 0;
1265.541 -  _Distance __t = __n;
1265.542 -  for ( ; __first != __last && __m < __n; ++__m, ++__first)
1265.543 -    __stl_out[__m] = *__first;
1265.544 -
1265.545 -  while (__first != __last) {
1265.546 -    ++__t;
1265.547 -    _Distance __M = __rand(__t);
1265.548 -    if (__M < __n)
1265.549 -      __stl_out[__M] = *__first;
1265.550 -    ++__first;
1265.551 -  }
1265.552 -
1265.553 -  return __stl_out + __m;
1265.554 -}
1265.555 -
1265.556 -template <class _InputIter, class _RandomAccessIter>
1265.557 -_RandomAccessIter
1265.558 -random_sample(_InputIter __first, _InputIter __last,
1265.559 -              _RandomAccessIter __out_first, _RandomAccessIter __out_last) 
1265.560 -{
1265.561 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.562 -  _STLP_DEBUG_CHECK(__check_range(__out_first, __out_last))
1265.563 -  return __random_sample(__first, __last,
1265.564 -                         __out_first, __out_last - __out_first);
1265.565 -}
1265.566 -
1265.567 -template <class _InputIter, class _RandomAccessIter, class _RandomNumberGenerator>
1265.568 -_RandomAccessIter
1265.569 -random_sample(_InputIter __first, _InputIter __last,
1265.570 -              _RandomAccessIter __out_first, _RandomAccessIter __out_last,
1265.571 -              _RandomNumberGenerator& __rand) 
1265.572 -{
1265.573 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.574 -  _STLP_DEBUG_CHECK(__check_range(__out_first, __out_last))
1265.575 -  return __random_sample(__first, __last,
1265.576 -                         __out_first, __rand,
1265.577 -                         __out_last - __out_first);
1265.578 -}
1265.579 -
1265.580 -# endif /* _STLP_NO_EXTENSIONS */
1265.581 -
1265.582 -// partition, stable_partition, and their auxiliary functions
1265.583 -
1265.584 -template <class _ForwardIter, class _Predicate>
1265.585 -_STLP_INLINE_LOOP _ForwardIter __partition(_ForwardIter __first,
1265.586 -                                           _ForwardIter __last,
1265.587 -                                           _Predicate   __pred,
1265.588 -                                           const forward_iterator_tag &) {
1265.589 -  if (__first == __last) return __first;
1265.590 -
1265.591 -  while (__pred(*__first))
1265.592 -    if (++__first == __last) return __first;
1265.593 -
1265.594 -  _ForwardIter __next = __first;
1265.595 -
1265.596 -  while (++__next != __last)
1265.597 -    if (__pred(*__next)) {
1265.598 -      swap(*__first, *__next);
1265.599 -      ++__first;
1265.600 -    }
1265.601 -  return __first;
1265.602 -}
1265.603 -
1265.604 -/* bug fix- start*/
1265.605 -
1265.606 -template <class _ForwardIter>
1265.607 -_ForwardIter
1265.608 -__rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) {
1265.609 -  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1265.610 -  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1265.611 -  return __rotate_aux(__first, __middle, __last,
1265.612 -                      _STLP_DISTANCE_TYPE(__first, _ForwardIter),
1265.613 -                      _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1265.614 -}
1265.615 -
1265.616 -template <class _ForwardIter, class _Distance>
1265.617 -_ForwardIter __rotate_aux(_ForwardIter __first,
1265.618 -                          _ForwardIter __middle,
1265.619 -                          _ForwardIter __last,
1265.620 -                          _Distance*,
1265.621 -                          const forward_iterator_tag &) {
1265.622 -  if (__first == __middle)
1265.623 -    return __last;
1265.624 -  if (__last  == __middle)
1265.625 -    return __first;
1265.626 -
1265.627 -  _ForwardIter __first2 = __middle;
1265.628 -  do {
1265.629 -    swap(*__first++, *__first2++);
1265.630 -    if (__first == __middle)
1265.631 -      __middle = __first2;
1265.632 -  } while (__first2 != __last);
1265.633 -
1265.634 -  _ForwardIter __new_middle = __first;
1265.635 -
1265.636 -  __first2 = __middle;
1265.637 -
1265.638 -  while (__first2 != __last) {
1265.639 -    swap (*__first++, *__first2++);
1265.640 -    if (__first == __middle)
1265.641 -      __middle = __first2;
1265.642 -    else if (__first2 == __last)
1265.643 -      __first2 = __middle;
1265.644 -  }
1265.645 -
1265.646 -  return __new_middle;
1265.647 -}
1265.648 -
1265.649 -
1265.650 -template <class _ForwardIter, class _Pointer, class _Predicate,
1265.651 -          class _Distance>
1265.652 -_ForwardIter __stable_partition_adaptive(_ForwardIter __first,
1265.653 -                                         _ForwardIter __last,
1265.654 -                                         _Predicate __pred, _Distance __len,
1265.655 -                                         _Pointer __buffer, _Distance __buffer_size,
1265.656 -                                         bool __pred_of_first, bool __pred_of_before_last) {
1265.657 -  if (__len <= __buffer_size) {
1265.658 -    _ForwardIter __result1 = __first;
1265.659 -    _Pointer __result2 = __buffer;
1265.660 -    if ((__first != __last) && (!__pred_of_first || __pred(*__first))) {
1265.661 -      *__result2 = *__first;
1265.662 -      ++__result2; ++__first; --__len;
1265.663 -    }
1265.664 -    for (; __first != __last ; ++__first, --__len) {
1265.665 -      if (((__len == 1) && (__pred_of_before_last || __pred(*__first))) ||
1265.666 -          ((__len != 1) && __pred(*__first))){
1265.667 -        *__result1 = *__first;
1265.668 -        ++__result1;
1265.669 -      }
1265.670 -      else {
1265.671 -        *__result2 = *__first;
1265.672 -        ++__result2;
1265.673 -      }
1265.674 -    }
1265.675 -    copy(__buffer, __result2, __result1);
1265.676 -    return __result1;
1265.677 -  }
1265.678 -  else {
1265.679 -    _ForwardIter __middle = __first;
1265.680 -    _Distance __half_len = __len / 2;
1265.681 -    advance(__middle, __half_len);
1265.682 -    return __rotate(__stable_partition_adaptive(
1265.683 -                          __first, __middle, __pred,
1265.684 -                          __half_len, __buffer, __buffer_size,
1265.685 -                          __pred_of_first, false),
1265.686 -                    __middle,
1265.687 -                    __stable_partition_adaptive(
1265.688 -                          __middle, __last, __pred,
1265.689 -                          __len - __half_len, __buffer, __buffer_size,
1265.690 -                          true, __pred_of_before_last));
1265.691 -  }
1265.692 -}
1265.693 -
1265.694 -
1265.695 -template <class _ForwardIter, class _Predicate, class _Distance>
1265.696 -_ForwardIter __inplace_stable_partition(_ForwardIter __first,
1265.697 -                                        _ForwardIter __last,
1265.698 -                                        _Predicate __pred, _Distance __len,
1265.699 -                                        bool __pred_of_first, bool __pred_of_before_last) {
1265.700 -  if (__len == 1)
1265.701 -    return (__pred_of_first && (__pred_of_before_last || __pred(*__first))) ? __last : __first;
1265.702 -  _ForwardIter __middle = __first;
1265.703 -  _Distance __half_len = __len / 2;
1265.704 -  advance(__middle, __half_len);
1265.705 -  return __rotate(__inplace_stable_partition(__first, __middle, __pred, __half_len, __pred_of_first, false),
1265.706 -                  __middle,
1265.707 -                  __inplace_stable_partition(__middle, __last, __pred, __len - __half_len, true, __pred_of_before_last));
1265.708 -}
1265.709 -
1265.710 -
1265.711 -
1265.712 -template <class _ForwardIter, class _Predicate>
1265.713 -_ForwardIter
1265.714 -stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) {
1265.715 -  _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
1265.716 -  for (;;) {
1265.717 -    if (__first == __last)
1265.718 -      return __first;
1265.719 -    else if (__pred(*__first))
1265.720 -      ++__first;
1265.721 -    else
1265.722 -      break;
1265.723 -  }
1265.724 -  return  __stable_partition_aux(__first, __last, __pred,
1265.725 -                                           _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1265.726 -}
1265.727 -
1265.728 -
1265.729 -template <class _ForwardIter, class _Predicate, class _Tp, class _Distance>
1265.730 -inline _ForwardIter
1265.731 -__stable_partition_aux_aux(_ForwardIter __first, _ForwardIter __last,
1265.732 -                           _Predicate __pred, _Tp*, _Distance*, bool __pred_of_before_last = false) {
1265.733 -  _Temporary_buffer<_ForwardIter, _Tp> __buf(__first, __last);
1265.734 -  return (__buf.size() > 0) ?
1265.735 -    __stable_partition_adaptive(__first, __last, __pred,
1265.736 -                                _Distance(__buf.requested_size()),
1265.737 -                                __buf.begin(), __buf.size(),
1265.738 -                                false, __pred_of_before_last)  :
1265.739 -    __inplace_stable_partition(__first, __last, __pred,
1265.740 -                               _Distance(__buf.requested_size()),
1265.741 -                               false, __pred_of_before_last);
1265.742 -
1265.743 -}
1265.744 -
1265.745 -template <class _ForwardIter, class _Predicate>
1265.746 -_ForwardIter
1265.747 -__stable_partition_aux(_ForwardIter __first, _ForwardIter __last, _Predicate __pred,
1265.748 -                       const forward_iterator_tag &) {
1265.749 -  return __stable_partition_aux_aux(__first, __last, __pred,
1265.750 -                                    _STLP_VALUE_TYPE(__first, _ForwardIter),
1265.751 -                                    _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1265.752 -}
1265.753 -
1265.754 -
1265.755 -/* bug fix- end*/
1265.756 -
1265.757 -
1265.758 -
1265.759 -template <class _BidirectionalIter, class _Predicate>
1265.760 -_STLP_INLINE_LOOP _BidirectionalIter __partition(_BidirectionalIter __first,
1265.761 -                                                 _BidirectionalIter __last,
1265.762 -                                                 _Predicate __pred,
1265.763 -                                                 const bidirectional_iterator_tag &) {
1265.764 -  while (true) {
1265.765 -    while (true)
1265.766 -      if (__first == __last)
1265.767 -        return __first;
1265.768 -      else if (__pred(*__first))
1265.769 -        ++__first;
1265.770 -      else
1265.771 -        break;
1265.772 -    --__last;
1265.773 -    while (true)
1265.774 -      if (__first == __last)
1265.775 -        return __first;
1265.776 -      else if (!__pred(*__last))
1265.777 -        --__last;
1265.778 -      else
1265.779 -        break;
1265.780 -    iter_swap(__first, __last);
1265.781 -    ++__first;
1265.782 -  }
1265.783 -}
1265.784 -
1265.785 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
1265.786 -template <class _BidirectionalIter, class _Predicate>
1265.787 -inline
1265.788 -_BidirectionalIter __partition(_BidirectionalIter __first,
1265.789 -                               _BidirectionalIter __last,
1265.790 -			       _Predicate __pred,
1265.791 -			       const random_access_iterator_tag &) {
1265.792 -  return __partition(__first, __last, __pred, bidirectional_iterator_tag());
1265.793 -}
1265.794 -# endif
1265.795 -
1265.796 -template <class _ForwardIter, class _Predicate>
1265.797 -_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate   __pred) {
1265.798 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.799 -  return __partition(__first, __last, __pred, _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1265.800 -}
1265.801 -
1265.802 -/*
1265.803 -template <class _ForwardIter, class _Predicate, class _Distance>
1265.804 -_ForwardIter __inplace_stable_partition(_ForwardIter __first,
1265.805 -                                        _ForwardIter __last,
1265.806 -                                        _Predicate __pred, _Distance __len) {
1265.807 -  if (__len == 1)
1265.808 -    return __pred(*__first) ? __last : __first;
1265.809 -  _ForwardIter __middle = __first;
1265.810 -  advance(__middle, __len / 2);
1265.811 -  return rotate(__inplace_stable_partition(__first, __middle, __pred, 
1265.812 -                                           __len / 2),
1265.813 -                __middle,
1265.814 -                __inplace_stable_partition(__middle, __last, __pred,
1265.815 -                                           __len - __len / 2));
1265.816 -}
1265.817 -
1265.818 -
1265.819 -template <class _ForwardIter, class _Pointer, class _Predicate, 
1265.820 -          class _Distance>
1265.821 -_ForwardIter __stable_partition_adaptive(_ForwardIter __first,
1265.822 -                                         _ForwardIter __last,
1265.823 -                                         _Predicate __pred, _Distance __len,
1265.824 -                                         _Pointer __buffer,
1265.825 -                                         _Distance __buffer_size) 
1265.826 -{
1265.827 -  if (__len <= __buffer_size) {
1265.828 -    _ForwardIter __result1 = __first;
1265.829 -    _Pointer __result2 = __buffer;
1265.830 -    for ( ; __first != __last ; ++__first)
1265.831 -      if (__pred(*__first)) {
1265.832 -        *__result1 = *__first;
1265.833 -        ++__result1;
1265.834 -      }
1265.835 -      else {
1265.836 -        *__result2 = *__first;
1265.837 -        ++__result2;
1265.838 -      }
1265.839 -    copy(__buffer, __result2, __result1);
1265.840 -    return __result1;
1265.841 -  }
1265.842 -  else {
1265.843 -    _ForwardIter __middle = __first;
1265.844 -    advance(__middle, __len / 2);
1265.845 -    return rotate(__stable_partition_adaptive(
1265.846 -                          __first, __middle, __pred,
1265.847 -                          _Distance(__len / 2), __buffer, __buffer_size),
1265.848 -                    __middle,
1265.849 -                    __stable_partition_adaptive(
1265.850 -                          __middle, __last, __pred,
1265.851 -                          _Distance(__len - __len / 2), __buffer, __buffer_size));
1265.852 -  }
1265.853 -}
1265.854 -*/ //bug fix
1265.855 -template <class _ForwardIter, class _Predicate, class _Tp, class _Distance>
1265.856 -inline _ForwardIter
1265.857 -__stable_partition_aux(_ForwardIter __first, _ForwardIter __last, 
1265.858 -                       _Predicate __pred, _Tp*, _Distance*)
1265.859 -{
1265.860 -  typedef _Temporary_buffer<_ForwardIter, _Tp> _TmpBuf;
1265.861 -  _Temporary_buffer<_ForwardIter, _Tp> __buf(__first, __last);
1265.862 -  _STLP_PUSH_STACK_ITEM(_TmpBuf, &__buf);
1265.863 -
1265.864 -  _STLP_MPWFIX_TRY		//*TY 06/01/2000 - they forget to call dtor for _Temporary_buffer if no try/catch block is present
1265.865 -  return (__buf.size() > 0) ?
1265.866 -    __stable_partition_adaptive(__first, __last, __pred,
1265.867 -				_Distance(__buf.requested_size()),
1265.868 -				__buf.begin(), _Distance(__buf.size()))  :
1265.869 -    __inplace_stable_partition(__first, __last, __pred, 
1265.870 -			       _Distance(__buf.requested_size()));
1265.871 -  _STLP_MPWFIX_CATCH	//*TY 06/01/2000 - they forget to call dtor for _Temporary_buffer if no try/catch block is present
1265.872 -}
1265.873 -/*
1265.874 -template <class _ForwardIter, class _Predicate>
1265.875 -_ForwardIter 
1265.876 -stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) {
1265.877 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.878 -  if (__first == __last)
1265.879 -    return __first;
1265.880 -  else
1265.881 -    return __stable_partition_aux(__first, __last, __pred,
1265.882 -                                  _STLP_VALUE_TYPE(__first, _ForwardIter),
1265.883 -                                  _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1265.884 -}
1265.885 -*/ //bug fix
1265.886 -template <class _RandomAccessIter, class _Tp, class _Compare>
1265.887 -_RandomAccessIter __unguarded_partition(_RandomAccessIter __first, 
1265.888 -                                        _RandomAccessIter __last, 
1265.889 -                                        _Tp __pivot, _Compare __comp) 
1265.890 -{
1265.891 -  _STLP_PUSH_STACK_ITEM(_Tp, &__pivot)
1265.892 -  while (true) {
1265.893 -    while (__comp(*__first, __pivot))
1265.894 -      ++__first;
1265.895 -    --__last;
1265.896 -    while (__comp(__pivot, *__last))
1265.897 -      --__last;
1265.898 -    if (!(__first < __last))
1265.899 -      return __first;
1265.900 -    iter_swap(__first, __last);
1265.901 -    ++__first;
1265.902 -  }
1265.903 -}
1265.904 -
1265.905 -// sort() and its auxiliary functions. 
1265.906 -
1265.907 -# define  __stl_threshold  16
1265.908 -
1265.909 -template <class _RandomAccessIter, class _Tp, class _Compare>
1265.910 -void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val, 
1265.911 -                               _Compare __comp) {
1265.912 -   _STLP_PUSH_STACK_ITEM(_Tp, &__val)
1265.913 -  _RandomAccessIter __next = __last;
1265.914 -  --__next;  
1265.915 -  while (__comp(__val, *__next)) {
1265.916 -    *__last = *__next;
1265.917 -    __last = __next;
1265.918 -    --__next;
1265.919 -  }
1265.920 -  *__last = __val;
1265.921 -}
1265.922 -
1265.923 -template <class _RandomAccessIter, class _Tp, class _Compare>
1265.924 -inline void __linear_insert(_RandomAccessIter __first, 
1265.925 -                            _RandomAccessIter __last, _Tp __val, _Compare __comp) {
1265.926 -  _STLP_PUSH_STACK_ITEM(_Tp, &__val)
1265.927 -  if (__comp(__val, *__first)) {
1265.928 -    copy_backward(__first, __last, __last + 1);
1265.929 -    *__first = __val;
1265.930 -  }
1265.931 -  else
1265.932 -    __unguarded_linear_insert(__last, __val, __comp);
1265.933 -}
1265.934 -
1265.935 -template <class _RandomAccessIter, class _Compare>
1265.936 -void __insertion_sort(_RandomAccessIter __first,
1265.937 -                      _RandomAccessIter __last, _Compare __comp) {
1265.938 -  if (__first == __last) return;
1265.939 -  for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
1265.940 -    __linear_insert(__first, __i, *__i, __comp);	//*TY 12/26/1998 - supply *__i as __val
1265.941 -}
1265.942 -
1265.943 -template <class _RandomAccessIter, class _Tp, class _Compare>
1265.944 -void __unguarded_insertion_sort_aux(_RandomAccessIter __first, 
1265.945 -                                    _RandomAccessIter __last,
1265.946 -                                    _Tp*, _Compare __comp) {
1265.947 -  for (_RandomAccessIter __i = __first; __i != __last; ++__i)
1265.948 -    __unguarded_linear_insert(__i, _Tp(*__i), __comp);
1265.949 -}
1265.950 -
1265.951 -template <class _RandomAccessIter, class _Compare>
1265.952 -inline void __unguarded_insertion_sort(_RandomAccessIter __first, 
1265.953 -                                       _RandomAccessIter __last,
1265.954 -                                       _Compare __comp) {
1265.955 -  __unguarded_insertion_sort_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp);
1265.956 -}
1265.957 -
1265.958 -template <class _RandomAccessIter, class _Compare>
1265.959 -void __final_insertion_sort(_RandomAccessIter __first, 
1265.960 -                            _RandomAccessIter __last, _Compare __comp) {
1265.961 -  if (__last - __first > __stl_threshold) {
1265.962 -    __insertion_sort(__first, __first + __stl_threshold, __comp);
1265.963 -    __unguarded_insertion_sort(__first + __stl_threshold, __last, __comp);
1265.964 -  }
1265.965 -  else
1265.966 -    __insertion_sort(__first, __last, __comp);
1265.967 -}
1265.968 -
1265.969 -template <class _RandomAccessIter, class _Tp, class _Size, class _Compare>
1265.970 -void __introsort_loop(_RandomAccessIter __first,
1265.971 -                      _RandomAccessIter __last, _Tp*,
1265.972 -                      _Size __depth_limit, _Compare __comp)
1265.973 -{
1265.974 -  while (__last - __first > __stl_threshold) {
1265.975 -    if (__depth_limit == 0) {
1265.976 -      partial_sort(__first, __last, __last, __comp);
1265.977 -      return;
1265.978 -    }
1265.979 -    --__depth_limit;
1265.980 -    _RandomAccessIter __cut =
1265.981 -      __unguarded_partition(__first, __last,
1265.982 -                            _Tp(__median(*__first,
1265.983 -                                         *(__first + (__last - __first)/2),
1265.984 -                                         *(__last - 1), __comp)),
1265.985 -       __comp);
1265.986 -    __introsort_loop(__cut, __last, (_Tp*) 0, __depth_limit, __comp);
1265.987 -    __last = __cut;
1265.988 -  }
1265.989 -}
1265.990 -
1265.991 -template <class _RandomAccessIter>
1265.992 -void sort(_RandomAccessIter __first, _RandomAccessIter __last) {
1265.993 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.994 -  if (__first != __last) {
1265.995 -    __introsort_loop(__first, __last,
1265.996 -                     _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1265.997 -                     __lg(__last - __first) * 2, __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)) );
1265.998 -    __final_insertion_sort(__first, __last, __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1265.999 -  }
1265.1000 -}
1265.1001 -
1265.1002 -template <class _RandomAccessIter, class _Compare>
1265.1003 -void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) {
1265.1004 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1005 -  if (__first != __last) {
1265.1006 -    __introsort_loop(__first, __last,
1265.1007 -                     _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1265.1008 -                     __lg(__last - __first) * 2,
1265.1009 -                     __comp);
1265.1010 -    __final_insertion_sort(__first, __last, __comp);
1265.1011 -  }
1265.1012 -}
1265.1013 -
1265.1014 -// stable_sort() and its auxiliary functions.
1265.1015 -
1265.1016 -template <class _RandomAccessIter, class _Compare>
1265.1017 -void __inplace_stable_sort(_RandomAccessIter __first,
1265.1018 -                           _RandomAccessIter __last, _Compare __comp) {
1265.1019 -  if (__last - __first < 15) {
1265.1020 -    __insertion_sort(__first, __last, __comp);
1265.1021 -    return;
1265.1022 -  }
1265.1023 -  _RandomAccessIter __middle = __first + (__last - __first) / 2;
1265.1024 -  __inplace_stable_sort(__first, __middle, __comp);
1265.1025 -  __inplace_stable_sort(__middle, __last, __comp);
1265.1026 -  __merge_without_buffer(__first, __middle, __last,
1265.1027 -                         __middle - __first,
1265.1028 -                         __last - __middle,
1265.1029 -                         __comp);
1265.1030 -}
1265.1031 -
1265.1032 -template <class _RandomAccessIter1, class _RandomAccessIter2,
1265.1033 -          class _Distance, class _Compare>
1265.1034 -void __merge_sort_loop(_RandomAccessIter1 __first,
1265.1035 -                       _RandomAccessIter1 __last, 
1265.1036 -                       _RandomAccessIter2 __result, _Distance __step_size,
1265.1037 -                       _Compare __comp) {
1265.1038 -  _Distance __two_step = 2 * __step_size;
1265.1039 -
1265.1040 -  while (__last - __first >= __two_step) {
1265.1041 -    __result = merge(__first, __first + __step_size,
1265.1042 -                     __first + __step_size, __first + __two_step,
1265.1043 -                     __result,
1265.1044 -                     __comp);
1265.1045 -    __first += __two_step;
1265.1046 -  }
1265.1047 -  __step_size = (min) (_Distance(__last - __first), __step_size);
1265.1048 -
1265.1049 -  merge(__first, __first + __step_size,
1265.1050 -        __first + __step_size, __last,
1265.1051 -        __result,
1265.1052 -        __comp);
1265.1053 -}
1265.1054 -
1265.1055 -const int __stl_chunk_size = 7;
1265.1056 -        
1265.1057 -template <class _RandomAccessIter, class _Distance, class _Compare>
1265.1058 -void __chunk_insertion_sort(_RandomAccessIter __first, 
1265.1059 -                            _RandomAccessIter __last,
1265.1060 -                            _Distance __chunk_size, _Compare __comp)
1265.1061 -{
1265.1062 -  while (__last - __first >= __chunk_size) {
1265.1063 -    __insertion_sort(__first, __first + __chunk_size, __comp);
1265.1064 -    __first += __chunk_size;
1265.1065 -  }
1265.1066 -  __insertion_sort(__first, __last, __comp);
1265.1067 -}
1265.1068 -
1265.1069 -template <class _RandomAccessIter, class _Pointer, class _Distance,
1265.1070 -          class _Compare>
1265.1071 -void __merge_sort_with_buffer(_RandomAccessIter __first, 
1265.1072 -                              _RandomAccessIter __last, _Pointer __buffer,
1265.1073 -                              _Distance*, _Compare __comp) {
1265.1074 -  _Distance __len = __last - __first;
1265.1075 -  _Pointer __buffer_last = __buffer + __len;
1265.1076 -
1265.1077 -  _Distance __step_size = __stl_chunk_size;
1265.1078 -  __chunk_insertion_sort(__first, __last, __step_size, __comp);
1265.1079 -
1265.1080 -  while (__step_size < __len) {
1265.1081 -    __merge_sort_loop(__first, __last, __buffer, __step_size, __comp);
1265.1082 -    __step_size *= 2;
1265.1083 -    __merge_sort_loop(__buffer, __buffer_last, __first, __step_size, __comp);
1265.1084 -    __step_size *= 2;
1265.1085 -  }
1265.1086 -}
1265.1087 -
1265.1088 -template <class _BidirectionalIter1, class _BidirectionalIter2,
1265.1089 -          class _Distance>
1265.1090 -_BidirectionalIter1 __rotate_adaptive(_BidirectionalIter1 __first,
1265.1091 -                                      _BidirectionalIter1 __middle,
1265.1092 -                                      _BidirectionalIter1 __last,
1265.1093 -                                      _Distance __len1, _Distance __len2,
1265.1094 -                                      _BidirectionalIter2 __buffer,
1265.1095 -                                      _Distance __buffer_size) {
1265.1096 -  if (__len1 > __len2 && __len2 <= __buffer_size) {
1265.1097 -    _BidirectionalIter2 __buffer_end = copy(__middle, __last, __buffer);
1265.1098 -    copy_backward(__first, __middle, __last);
1265.1099 -    return copy(__buffer, __buffer_end, __first);
1265.1100 -  }
1265.1101 -  else if (__len1 <= __buffer_size) {
1265.1102 -    _BidirectionalIter2 __buffer_end = copy(__first, __middle, __buffer);
1265.1103 -    copy(__middle, __last, __first);
1265.1104 -    return copy_backward(__buffer, __buffer_end, __last);
1265.1105 -  }
1265.1106 -  else
1265.1107 -    return rotate(__first, __middle, __last);
1265.1108 -}
1265.1109 -
1265.1110 -template <class _BidirectionalIter, class _Distance, class _Pointer,
1265.1111 -          class _Compare>
1265.1112 -void __merge_adaptive(_BidirectionalIter __first, 
1265.1113 -                      _BidirectionalIter __middle, 
1265.1114 -                      _BidirectionalIter __last,
1265.1115 -                      _Distance __len1, _Distance __len2,
1265.1116 -                      _Pointer __buffer, _Distance __buffer_size,
1265.1117 -                      _Compare __comp) {
1265.1118 -  if (__len1 <= __len2 && __len1 <= __buffer_size) {
1265.1119 -    _Pointer __buffer_end = copy(__first, __middle, __buffer);
1265.1120 -    merge(__buffer, __buffer_end, __middle, __last, __first, __comp);
1265.1121 -  }
1265.1122 -  else if (__len2 <= __buffer_size) {
1265.1123 -    _Pointer __buffer_end = copy(__middle, __last, __buffer);
1265.1124 -    __merge_backward(__first, __middle, __buffer, __buffer_end, __last,
1265.1125 -                     __comp);
1265.1126 -  }
1265.1127 -  else {
1265.1128 -    _BidirectionalIter __first_cut = __first;
1265.1129 -    _BidirectionalIter __second_cut = __middle;
1265.1130 -    _Distance __len11 = 0;
1265.1131 -    _Distance __len22 = 0;
1265.1132 -    if (__len1 > __len2) {
1265.1133 -      __len11 = __len1 / 2;
1265.1134 -      advance(__first_cut, __len11);
1265.1135 -      __second_cut = lower_bound(__middle, __last, *__first_cut, __comp);
1265.1136 -      __len22 += distance(__middle, __second_cut);   
1265.1137 -    }
1265.1138 -    else {
1265.1139 -      __len22 = __len2 / 2;
1265.1140 -      advance(__second_cut, __len22);
1265.1141 -      __first_cut = upper_bound(__first, __middle, *__second_cut, __comp);
1265.1142 -      __len11 += distance(__first, __first_cut);
1265.1143 -    }
1265.1144 -    _BidirectionalIter __new_middle =
1265.1145 -      __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11,
1265.1146 -                        __len22, __buffer, __buffer_size);
1265.1147 -    __merge_adaptive(__first, __first_cut, __new_middle, __len11,
1265.1148 -                     __len22, __buffer, __buffer_size, __comp);
1265.1149 -    __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11,
1265.1150 -                     __len2 - __len22, __buffer, __buffer_size, __comp);
1265.1151 -  }
1265.1152 -}
1265.1153 -
1265.1154 -template <class _RandomAccessIter, class _Pointer, class _Distance, 
1265.1155 -          class _Compare>
1265.1156 -void __stable_sort_adaptive(_RandomAccessIter __first, 
1265.1157 -                            _RandomAccessIter __last, _Pointer __buffer,
1265.1158 -                            _Distance __buffer_size, _Compare __comp) {
1265.1159 -  _Distance __len = (__last - __first + 1) / 2;
1265.1160 -  _RandomAccessIter __middle = __first + __len;
1265.1161 -  if (__len > __buffer_size) {
1265.1162 -    __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size, 
1265.1163 -                           __comp);
1265.1164 -    __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size, 
1265.1165 -                           __comp);
1265.1166 -  }
1265.1167 -  else {
1265.1168 -    __merge_sort_with_buffer(__first, __middle, __buffer, (_Distance*)0,
1265.1169 -                               __comp);
1265.1170 -    __merge_sort_with_buffer(__middle, __last, __buffer, (_Distance*)0,
1265.1171 -                               __comp);
1265.1172 -  }
1265.1173 -  __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first), 
1265.1174 -                   _Distance(__last - __middle), __buffer, __buffer_size,
1265.1175 -                   __comp);
1265.1176 -}
1265.1177 -
1265.1178 -template <class _RandomAccessIter, class _Tp, class _Distance, class _Compare>
1265.1179 -void __stable_sort_aux(_RandomAccessIter __first,
1265.1180 -			      _RandomAccessIter __last, _Tp*, _Distance*,
1265.1181 -			      _Compare __comp) {
1265.1182 -
1265.1183 -  typedef _Temporary_buffer<_RandomAccessIter, _Tp> _TmpBuf;
1265.1184 -  _TmpBuf __buf(__first, __last);
1265.1185 -  _STLP_PUSH_STACK_ITEM(_TmpBuf, &__buf);
1265.1186 -
1265.1187 -  if (__buf.begin() == 0)
1265.1188 -    __inplace_stable_sort(__first, __last, __comp);
1265.1189 -  else 
1265.1190 -    __stable_sort_adaptive(__first, __last, __buf.begin(),
1265.1191 -                           _Distance(__buf.size()),
1265.1192 -                           __comp);
1265.1193 -}
1265.1194 -
1265.1195 -template <class _RandomAccessIter>
1265.1196 -void stable_sort(_RandomAccessIter __first,
1265.1197 -		 _RandomAccessIter __last) {
1265.1198 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1199 -  __stable_sort_aux(__first, __last,
1265.1200 -                    _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1265.1201 -                    _STLP_DISTANCE_TYPE(__first, _RandomAccessIter),
1265.1202 -                    __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1265.1203 -}
1265.1204 -
1265.1205 -template <class _RandomAccessIter, class _Compare>
1265.1206 -void stable_sort(_RandomAccessIter __first,
1265.1207 -		 _RandomAccessIter __last, _Compare __comp) {
1265.1208 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1209 -  __stable_sort_aux(__first, __last,
1265.1210 -                    _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1265.1211 -                    _STLP_DISTANCE_TYPE(__first, _RandomAccessIter), 
1265.1212 -                    __comp);
1265.1213 -}
1265.1214 -
1265.1215 -// partial_sort, partial_sort_copy, and auxiliary functions.
1265.1216 -
1265.1217 -template <class _RandomAccessIter, class _Tp, class _Compare>
1265.1218 -void __partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle,
1265.1219 -                    _RandomAccessIter __last, _Tp*, _Compare __comp) {
1265.1220 -  make_heap(__first, __middle, __comp);
1265.1221 -  for (_RandomAccessIter __i = __middle; __i < __last; ++__i)
1265.1222 -    if (__comp(*__i, *__first))
1265.1223 -      __pop_heap(__first, __middle, __i, _Tp(*__i), __comp,
1265.1224 -                 _STLP_DISTANCE_TYPE(__first, _RandomAccessIter));
1265.1225 -  sort_heap(__first, __middle, __comp);
1265.1226 -}
1265.1227 -
1265.1228 -
1265.1229 -template <class _RandomAccessIter>
1265.1230 -void 
1265.1231 -partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, _RandomAccessIter __last) {
1265.1232 -  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1265.1233 -  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1265.1234 -  __partial_sort(__first, __middle, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), 
1265.1235 -                 __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1265.1236 -}
1265.1237 -
1265.1238 -template <class _RandomAccessIter, class _Compare>
1265.1239 -void partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle,
1265.1240 -                  _RandomAccessIter __last, _Compare __comp) {
1265.1241 -  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1265.1242 -  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1265.1243 -  __partial_sort(__first, __middle, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp);
1265.1244 -}
1265.1245 -
1265.1246 -template <class _InputIter, class _RandomAccessIter, class _Compare,
1265.1247 -          class _Distance, class _Tp>
1265.1248 -_RandomAccessIter __partial_sort_copy(_InputIter __first,
1265.1249 -                                         _InputIter __last,
1265.1250 -                                         _RandomAccessIter __result_first,
1265.1251 -                                         _RandomAccessIter __result_last,
1265.1252 -                                         _Compare __comp, _Distance*, _Tp*) {
1265.1253 -  if (__result_first == __result_last) return __result_last;
1265.1254 -  _RandomAccessIter __result_real_last = __result_first;
1265.1255 -  while(__first != __last && __result_real_last != __result_last) {
1265.1256 -    *__result_real_last = *__first;
1265.1257 -    ++__result_real_last;
1265.1258 -    ++__first;
1265.1259 -  }
1265.1260 -  make_heap(__result_first, __result_real_last, __comp);
1265.1261 -  while (__first != __last) {
1265.1262 -    if (__comp(*__first, *__result_first))
1265.1263 -      __adjust_heap(__result_first, _Distance(0),
1265.1264 -                    _Distance(__result_real_last - __result_first),
1265.1265 -                    _Tp(*__first),
1265.1266 -                    __comp);
1265.1267 -    ++__first;
1265.1268 -  }
1265.1269 -  sort_heap(__result_first, __result_real_last, __comp);
1265.1270 -  return __result_real_last;
1265.1271 -}
1265.1272 -
1265.1273 -template <class _InputIter, class _RandomAccessIter>
1265.1274 -_RandomAccessIter
1265.1275 -partial_sort_copy(_InputIter __first, _InputIter __last,
1265.1276 -                  _RandomAccessIter __result_first, _RandomAccessIter __result_last) {
1265.1277 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1278 -  _STLP_DEBUG_CHECK(__check_range(__result_first, __result_last))
1265.1279 -  return __partial_sort_copy(__first, __last, __result_first, __result_last, 
1265.1280 -                             __less(_STLP_VALUE_TYPE(__first, _InputIter)),
1265.1281 -                             _STLP_DISTANCE_TYPE(__result_first, _RandomAccessIter),
1265.1282 -                             _STLP_VALUE_TYPE(__first, _InputIter));
1265.1283 -}
1265.1284 -
1265.1285 -template <class _InputIter, class _RandomAccessIter, class _Compare>
1265.1286 -_RandomAccessIter
1265.1287 -partial_sort_copy(_InputIter __first, _InputIter __last,
1265.1288 -                  _RandomAccessIter __result_first,
1265.1289 -                  _RandomAccessIter __result_last, _Compare __comp) {
1265.1290 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1291 -  _STLP_DEBUG_CHECK(__check_range(__result_first, __result_last))
1265.1292 -  return __partial_sort_copy(__first, __last, __result_first, __result_last,
1265.1293 -                             __comp,
1265.1294 -                             _STLP_DISTANCE_TYPE(__result_first, _RandomAccessIter),
1265.1295 -                             _STLP_VALUE_TYPE(__first, _InputIter));
1265.1296 -}
1265.1297 -
1265.1298 -// nth_element() and its auxiliary functions.  
1265.1299 -
1265.1300 -template <class _RandomAccessIter, class _Tp, class _Compare>
1265.1301 -void __nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1265.1302 -                   _RandomAccessIter __last, _Tp*, _Compare __comp) {
1265.1303 -  while (__last - __first > 3) {
1265.1304 -    _RandomAccessIter __cut =
1265.1305 -      __unguarded_partition(__first, __last,
1265.1306 -                            _Tp(__median(*__first,
1265.1307 -                                         *(__first + (__last - __first)/2), 
1265.1308 -                                         *(__last - 1),
1265.1309 -                                         __comp)),
1265.1310 -                            __comp);
1265.1311 -    if (__cut <= __nth)
1265.1312 -      __first = __cut;
1265.1313 -    else 
1265.1314 -      __last = __cut;
1265.1315 -  }
1265.1316 -  __insertion_sort(__first, __last, __comp);
1265.1317 -}
1265.1318 -
1265.1319 -
1265.1320 -template <class _RandomAccessIter>
1265.1321 -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1265.1322 -                 _RandomAccessIter __last) {
1265.1323 -  _STLP_DEBUG_CHECK(__check_range(__first, __nth))
1265.1324 -  _STLP_DEBUG_CHECK(__check_range(__nth, __last))
1265.1325 -  __nth_element(__first, __nth, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), 
1265.1326 -                __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1265.1327 -}
1265.1328 -
1265.1329 -template <class _RandomAccessIter, class _Compare>
1265.1330 -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1265.1331 -                 _RandomAccessIter __last, _Compare __comp) {
1265.1332 -  _STLP_DEBUG_CHECK(__check_range(__first, __nth))
1265.1333 -  _STLP_DEBUG_CHECK(__check_range(__nth, __last))
1265.1334 -  __nth_element(__first, __nth, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp);
1265.1335 -}
1265.1336 -
1265.1337 -// Binary search (lower_bound, upper_bound, equal_range, binary_search).
1265.1338 -
1265.1339 -template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1265.1340 -_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last,
1265.1341 -                           const _Tp& __val, _Compare __comp, _Distance*)
1265.1342 -{
1265.1343 -  _Distance __len = distance(__first, __last);
1265.1344 -  _Distance __half;
1265.1345 -
1265.1346 -  while (__len > 0) {
1265.1347 -    __half = __len >> 1;
1265.1348 -    _ForwardIter __middle = __first;
1265.1349 -    advance(__middle, __half);
1265.1350 -    if (__comp(__val, *__middle))
1265.1351 -      __len = __half;
1265.1352 -    else {
1265.1353 -      __first = __middle;
1265.1354 -      ++__first;
1265.1355 -      __len = __len - __half - 1;
1265.1356 -    }
1265.1357 -  }
1265.1358 -  return __first;
1265.1359 -}
1265.1360 -
1265.1361 -template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1265.1362 -pair<_ForwardIter, _ForwardIter>
1265.1363 -__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
1265.1364 -              _Compare __comp, _Distance*)
1265.1365 -{
1265.1366 -  _Distance __len = distance(__first, __last);
1265.1367 -  _Distance __half;
1265.1368 -
1265.1369 -  while (__len > 0) {
1265.1370 -    __half = __len >> 1;
1265.1371 -    _ForwardIter __middle = __first;
1265.1372 -    advance(__middle, __half);
1265.1373 -    if (__comp(*__middle, __val)) {
1265.1374 -      __first = __middle;
1265.1375 -      ++__first;
1265.1376 -      __len = __len - __half - 1;
1265.1377 -    }
1265.1378 -    else if (__comp(__val, *__middle))
1265.1379 -      __len = __half;
1265.1380 -    else {
1265.1381 -      _ForwardIter __left = lower_bound(__first, __middle, __val, __comp);
1265.1382 -      advance(__first, __len);
1265.1383 -      _ForwardIter __right = upper_bound(++__middle, __first, __val, __comp);
1265.1384 -      return pair<_ForwardIter, _ForwardIter>(__left, __right);
1265.1385 -    }
1265.1386 -  }
1265.1387 -  return pair<_ForwardIter, _ForwardIter>(__first, __first);
1265.1388 -}           
1265.1389 -
1265.1390 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1265.1391 -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1265.1392 -                  _InputIter2 __first2, _InputIter2 __last2,
1265.1393 -                  _OutputIter __result) {
1265.1394 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1395 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1396 -  while (__first1 != __last1 && __first2 != __last2) {
1265.1397 -    if (*__first2 < *__first1) {
1265.1398 -      *__result = *__first2;
1265.1399 -      ++__first2;
1265.1400 -    }
1265.1401 -    else {
1265.1402 -      *__result = *__first1;
1265.1403 -      ++__first1;
1265.1404 -    }
1265.1405 -    ++__result;
1265.1406 -  }
1265.1407 -  return copy(__first2, __last2, copy(__first1, __last1, __result));
1265.1408 -}
1265.1409 -
1265.1410 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1265.1411 -          class _Compare>
1265.1412 -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1265.1413 -                  _InputIter2 __first2, _InputIter2 __last2,
1265.1414 -                  _OutputIter __result, _Compare __comp) {
1265.1415 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1416 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1417 -  while (__first1 != __last1 && __first2 != __last2) {
1265.1418 -    if (__comp(*__first2, *__first1)) {
1265.1419 -      *__result = *__first2;
1265.1420 -      ++__first2;
1265.1421 -    }
1265.1422 -    else {
1265.1423 -      *__result = *__first1;
1265.1424 -      ++__first1;
1265.1425 -    }
1265.1426 -    ++__result;
1265.1427 -  }
1265.1428 -  return copy(__first2, __last2, copy(__first1, __last1, __result));
1265.1429 -}
1265.1430 -
1265.1431 -template <class _BidirectionalIter, class _Distance, class _Compare>
1265.1432 -void __merge_without_buffer(_BidirectionalIter __first,
1265.1433 -                            _BidirectionalIter __middle,
1265.1434 -                            _BidirectionalIter __last,
1265.1435 -                            _Distance __len1, _Distance __len2,
1265.1436 -                            _Compare __comp) {
1265.1437 -  if (__len1 == 0 || __len2 == 0)
1265.1438 -    return;
1265.1439 -  if (__len1 + __len2 == 2) {
1265.1440 -    if (__comp(*__middle, *__first))
1265.1441 -      iter_swap(__first, __middle);
1265.1442 -    return;
1265.1443 -  }
1265.1444 -  _BidirectionalIter __first_cut = __first;
1265.1445 -  _BidirectionalIter __second_cut = __middle;
1265.1446 -  _Distance __len11 = 0;
1265.1447 -  _Distance __len22 = 0;
1265.1448 -  if (__len1 > __len2) {
1265.1449 -    __len11 = __len1 / 2;
1265.1450 -    advance(__first_cut, __len11);
1265.1451 -    __second_cut = lower_bound(__middle, __last, *__first_cut, __comp);
1265.1452 -    __len22 += distance(__middle, __second_cut);
1265.1453 -  }
1265.1454 -  else {
1265.1455 -    __len22 = __len2 / 2;
1265.1456 -    advance(__second_cut, __len22);
1265.1457 -    __first_cut = upper_bound(__first, __middle, *__second_cut, __comp);
1265.1458 -    __len11 +=distance(__first, __first_cut);
1265.1459 -  }
1265.1460 -  _BidirectionalIter __new_middle
1265.1461 -    = rotate(__first_cut, __middle, __second_cut);
1265.1462 -  __merge_without_buffer(__first, __first_cut, __new_middle, __len11, __len22,
1265.1463 -                         __comp);
1265.1464 -  __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11,
1265.1465 -                         __len2 - __len22, __comp);
1265.1466 -}
1265.1467 -
1265.1468 -template <class _BidirectionalIter1, class _BidirectionalIter2,
1265.1469 -          class _BidirectionalIter3, class _Compare>
1265.1470 -_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1,
1265.1471 -                                     _BidirectionalIter1 __last1,
1265.1472 -                                     _BidirectionalIter2 __first2,
1265.1473 -                                     _BidirectionalIter2 __last2,
1265.1474 -                                     _BidirectionalIter3 __result,
1265.1475 -                                     _Compare __comp) {
1265.1476 -  if (__first1 == __last1)
1265.1477 -    return copy_backward(__first2, __last2, __result);
1265.1478 -  if (__first2 == __last2)
1265.1479 -    return copy_backward(__first1, __last1, __result);
1265.1480 -  --__last1;
1265.1481 -  --__last2;
1265.1482 -  while (true) {
1265.1483 -    if (__comp(*__last2, *__last1)) {
1265.1484 -      *--__result = *__last1;
1265.1485 -      if (__first1 == __last1)
1265.1486 -        return copy_backward(__first2, ++__last2, __result);
1265.1487 -      --__last1;
1265.1488 -    }
1265.1489 -    else {
1265.1490 -      *--__result = *__last2;
1265.1491 -      if (__first2 == __last2)
1265.1492 -        return copy_backward(__first1, ++__last1, __result);
1265.1493 -      --__last2;
1265.1494 -    }
1265.1495 -  }
1265.1496 -}
1265.1497 -
1265.1498 -template <class _BidirectionalIter, class _Tp, 
1265.1499 -          class _Distance, class _Compare>
1265.1500 -inline void __inplace_merge_aux(_BidirectionalIter __first,
1265.1501 -                                _BidirectionalIter __middle,
1265.1502 -                                _BidirectionalIter __last, _Tp*, _Distance*,
1265.1503 -                                _Compare __comp) {
1265.1504 -  _Distance __len1 = distance(__first, __middle);
1265.1505 -  _Distance __len2 = distance(__middle, __last);
1265.1506 -
1265.1507 -  typedef _Temporary_buffer<_BidirectionalIter, _Tp> _TmpBuf;
1265.1508 -  _TmpBuf __buf(__first, __last);
1265.1509 -  _STLP_PUSH_STACK_ITEM(_TmpBuf, &__buf);
1265.1510 -
1265.1511 -  if (__buf.begin() == 0)
1265.1512 -    __merge_without_buffer(__first, __middle, __last, __len1, __len2, __comp);
1265.1513 -  else
1265.1514 -    __merge_adaptive(__first, __middle, __last, __len1, __len2,
1265.1515 -                     __buf.begin(), _Distance(__buf.size()),
1265.1516 -                     __comp);
1265.1517 -}
1265.1518 -
1265.1519 -template <class _BidirectionalIter>
1265.1520 -void inplace_merge(_BidirectionalIter __first,
1265.1521 -		   _BidirectionalIter __middle,
1265.1522 -		   _BidirectionalIter __last) {
1265.1523 -  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1265.1524 -  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1265.1525 -  if (__first == __middle || __middle == __last)
1265.1526 -    return;
1265.1527 -  __inplace_merge_aux(__first, __middle, __last,
1265.1528 -                      _STLP_VALUE_TYPE(__first, _BidirectionalIter), _STLP_DISTANCE_TYPE(__first, _BidirectionalIter),
1265.1529 -                      __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter)));
1265.1530 -}
1265.1531 -
1265.1532 -template <class _BidirectionalIter, class _Compare>
1265.1533 -void inplace_merge(_BidirectionalIter __first,
1265.1534 -		   _BidirectionalIter __middle,
1265.1535 -		   _BidirectionalIter __last, _Compare __comp) {
1265.1536 -  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1265.1537 -  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1265.1538 -  if (__first == __middle || __middle == __last)
1265.1539 -    return;
1265.1540 -  __inplace_merge_aux(__first, __middle, __last,
1265.1541 -                      _STLP_VALUE_TYPE(__first, _BidirectionalIter), _STLP_DISTANCE_TYPE(__first, _BidirectionalIter),
1265.1542 -                      __comp);
1265.1543 -}
1265.1544 -
1265.1545 -
1265.1546 -template <class _InputIter1, class _InputIter2, class _Compare>
1265.1547 -bool __includes(_InputIter1 __first1, _InputIter1 __last1,
1265.1548 -                _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) {
1265.1549 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1550 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1551 -  while (__first1 != __last1 && __first2 != __last2)
1265.1552 -    if (__comp(*__first2, *__first1))
1265.1553 -      return false;
1265.1554 -    else if(__comp(*__first1, *__first2)) 
1265.1555 -      ++__first1;
1265.1556 -    else
1265.1557 -      ++__first1, ++__first2;
1265.1558 -
1265.1559 -  return __first2 == __last2;
1265.1560 -}
1265.1561 -
1265.1562 -template <class _InputIter1, class _InputIter2, class _Compare>
1265.1563 -bool includes(_InputIter1 __first1, _InputIter1 __last1,
1265.1564 -              _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) {
1265.1565 -  return __includes(__first1, __last1, __first2, __last2, __comp);
1265.1566 -}
1265.1567 -
1265.1568 -template <class _InputIter1, class _InputIter2>
1265.1569 -bool includes(_InputIter1 __first1, _InputIter1 __last1,
1265.1570 -              _InputIter2 __first2, _InputIter2 __last2) {
1265.1571 -  return __includes(__first1, __last1, __first2, __last2, __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));
1265.1572 -}
1265.1573 -
1265.1574 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1265.1575 -          class _Compare>
1265.1576 -_OutputIter __set_union(_InputIter1 __first1, _InputIter1 __last1,
1265.1577 -                        _InputIter2 __first2, _InputIter2 __last2,
1265.1578 -                        _OutputIter __result, _Compare __comp) {
1265.1579 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1580 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1581 -  while (__first1 != __last1 && __first2 != __last2) {
1265.1582 -    if (__comp(*__first1, *__first2)) {
1265.1583 -      *__result = *__first1;
1265.1584 -      ++__first1;
1265.1585 -    }
1265.1586 -    else if (__comp(*__first2, *__first1)) {
1265.1587 -      *__result = *__first2;
1265.1588 -      ++__first2;
1265.1589 -    }
1265.1590 -    else {
1265.1591 -      *__result = *__first1;
1265.1592 -      ++__first1;
1265.1593 -      ++__first2;
1265.1594 -    }
1265.1595 -    ++__result;
1265.1596 -  }
1265.1597 -  return copy(__first2, __last2, copy(__first1, __last1, __result));
1265.1598 -}
1265.1599 -
1265.1600 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1265.1601 -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1265.1602 -                      _InputIter2 __first2, _InputIter2 __last2,
1265.1603 -                      _OutputIter __result) {
1265.1604 -  return __set_union(__first1, __last1, __first2, __last2, __result, __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1265.1605 -}
1265.1606 -
1265.1607 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1265.1608 -          class _Compare>
1265.1609 -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1265.1610 -                      _InputIter2 __first2, _InputIter2 __last2,
1265.1611 -                      _OutputIter __result, _Compare __comp) {
1265.1612 -  return __set_union(__first1, __last1, __first2, __last2, __result, __comp);
1265.1613 -}
1265.1614 -
1265.1615 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1265.1616 -          class _Compare>
1265.1617 -_OutputIter __set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1265.1618 -                               _InputIter2 __first2, _InputIter2 __last2,
1265.1619 -                               _OutputIter __result, _Compare __comp) {
1265.1620 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1621 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1622 -  while (__first1 != __last1 && __first2 != __last2)
1265.1623 -    if (__comp(*__first1, *__first2))
1265.1624 -      ++__first1;
1265.1625 -    else if (__comp(*__first2, *__first1))
1265.1626 -      ++__first2;
1265.1627 -    else {
1265.1628 -      *__result = *__first1;
1265.1629 -      ++__first1;
1265.1630 -      ++__first2;
1265.1631 -      ++__result;
1265.1632 -    }
1265.1633 -  return __result;
1265.1634 -}
1265.1635 -
1265.1636 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1265.1637 -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1265.1638 -                             _InputIter2 __first2, _InputIter2 __last2,
1265.1639 -                             _OutputIter __result) {
1265.1640 -  return __set_intersection(__first1, __last1, __first2, __last2, __result, __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1265.1641 -}
1265.1642 -
1265.1643 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1265.1644 -          class _Compare>
1265.1645 -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1265.1646 -                             _InputIter2 __first2, _InputIter2 __last2,
1265.1647 -                             _OutputIter __result, _Compare __comp) {
1265.1648 -  return __set_intersection(__first1, __last1, __first2, __last2, __result, __comp);
1265.1649 -}
1265.1650 -
1265.1651 -template <class _InputIter1, class _InputIter2, class _OutputIter, 
1265.1652 -          class _Compare>
1265.1653 -_OutputIter __set_difference(_InputIter1 __first1, _InputIter1 __last1,
1265.1654 -                             _InputIter2 __first2, _InputIter2 __last2, 
1265.1655 -                             _OutputIter __result, _Compare __comp) {
1265.1656 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1657 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1658 -  while (__first1 != __last1 && __first2 != __last2)
1265.1659 -    if (__comp(*__first1, *__first2)) {
1265.1660 -      *__result = *__first1;
1265.1661 -      ++__first1;
1265.1662 -      ++__result;
1265.1663 -    }
1265.1664 -    else if (__comp(*__first2, *__first1))
1265.1665 -      ++__first2;
1265.1666 -    else {
1265.1667 -      ++__first1;
1265.1668 -      ++__first2;
1265.1669 -    }
1265.1670 -  return copy(__first1, __last1, __result);
1265.1671 -}
1265.1672 -
1265.1673 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1265.1674 -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1265.1675 -                           _InputIter2 __first2, _InputIter2 __last2,
1265.1676 -                           _OutputIter __result) {
1265.1677 -  return __set_difference(__first1, __last1, __first2, __last2, __result, 
1265.1678 -                          __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1265.1679 -}
1265.1680 -
1265.1681 -template <class _InputIter1, class _InputIter2, class _OutputIter, 
1265.1682 -          class _Compare>
1265.1683 -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1265.1684 -                           _InputIter2 __first2, _InputIter2 __last2, 
1265.1685 -                           _OutputIter __result, _Compare __comp) {
1265.1686 -  return __set_difference(__first1, __last1, __first2, __last2, __result, __comp);
1265.1687 -}
1265.1688 -
1265.1689 -template <class _InputIter1, class _InputIter2, class _OutputIter, class _Compare>
1265.1690 -_OutputIter 
1265.1691 -__set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1265.1692 -                           _InputIter2 __first2, _InputIter2 __last2,
1265.1693 -                           _OutputIter __result, _Compare __comp) {
1265.1694 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1265.1695 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1265.1696 -  while (__first1 != __last1 && __first2 != __last2)
1265.1697 -    if (__comp(*__first1, *__first2)) {
1265.1698 -      *__result = *__first1;
1265.1699 -      ++__first1;
1265.1700 -      ++__result;
1265.1701 -    }
1265.1702 -    else if (__comp(*__first2, *__first1)) {
1265.1703 -      *__result = *__first2;
1265.1704 -      ++__first2;
1265.1705 -      ++__result;
1265.1706 -    }
1265.1707 -    else {
1265.1708 -      ++__first1;
1265.1709 -      ++__first2;
1265.1710 -    }
1265.1711 -  return copy(__first2, __last2, copy(__first1, __last1, __result));
1265.1712 -}
1265.1713 -
1265.1714 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1265.1715 -_OutputIter 
1265.1716 -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1265.1717 -                         _InputIter2 __first2, _InputIter2 __last2,
1265.1718 -                         _OutputIter __result) {
1265.1719 -  return __set_symmetric_difference(__first1, __last1, __first2, __last2, __result,
1265.1720 -                                    __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1265.1721 -}
1265.1722 -
1265.1723 -template <class _InputIter1, class _InputIter2, class _OutputIter, class _Compare>
1265.1724 -_OutputIter 
1265.1725 -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1265.1726 -                         _InputIter2 __first2, _InputIter2 __last2,
1265.1727 -                         _OutputIter __result,
1265.1728 -                         _Compare __comp) {
1265.1729 -  return __set_symmetric_difference(__first1, __last1, __first2, __last2, __result, __comp);
1265.1730 -}
1265.1731 -
1265.1732 -// min_element and max_element, with and without an explicitly supplied
1265.1733 -// comparison function.
1265.1734 -
1265.1735 -template <class _ForwardIter, class _Compare>
1265.1736 -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last,
1265.1737 -                            _Compare __comp) {
1265.1738 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1739 -  if (__first == __last) return __first;
1265.1740 -  _ForwardIter __result = __first;
1265.1741 -  while (++__first != __last) 
1265.1742 -    if (__comp(*__result, *__first)) __result = __first;
1265.1743 -  return __result;
1265.1744 -}
1265.1745 -
1265.1746 -template <class _ForwardIter>
1265.1747 -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last) {
1265.1748 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1749 -  if (__first == __last) return __first;
1265.1750 -  _ForwardIter __result = __first;
1265.1751 -  while (++__first != __last) 
1265.1752 -    if (*__result < *__first)
1265.1753 -      __result = __first;
1265.1754 -  return __result;
1265.1755 -}
1265.1756 -
1265.1757 -template <class _ForwardIter>
1265.1758 -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last) {
1265.1759 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1760 -  if (__first == __last) return __first;
1265.1761 -  _ForwardIter __result = __first;
1265.1762 -  while (++__first != __last) 
1265.1763 -    if (*__first < *__result)
1265.1764 -      __result = __first;
1265.1765 -  return __result;
1265.1766 -}
1265.1767 -
1265.1768 -template <class _ForwardIter, class _Compare>
1265.1769 -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last,
1265.1770 -                            _Compare __comp) {
1265.1771 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1772 -  if (__first == __last) return __first;
1265.1773 -  _ForwardIter __result = __first;
1265.1774 -  while (++__first != __last) 
1265.1775 -    if (__comp(*__first, *__result)) __result = __first;
1265.1776 -  return __result;
1265.1777 -}
1265.1778 -
1265.1779 -// next_permutation and prev_permutation, with and without an explicitly 
1265.1780 -// supplied comparison function.
1265.1781 -template <class _BidirectionalIter, class _Compare>
1265.1782 -bool __next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1265.1783 -                        _Compare __comp) {
1265.1784 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1785 -  if (__first == __last)
1265.1786 -    return false;
1265.1787 -  _BidirectionalIter __i = __first;
1265.1788 -  ++__i;
1265.1789 -  if (__i == __last)
1265.1790 -    return false;
1265.1791 -  __i = __last;
1265.1792 -  --__i;
1265.1793 -
1265.1794 -  for(;;) {
1265.1795 -    _BidirectionalIter __ii = __i;
1265.1796 -    --__i;
1265.1797 -    if (__comp(*__i, *__ii)) {
1265.1798 -      _BidirectionalIter __j = __last;
1265.1799 -      while (!__comp(*__i, *--__j))
1265.1800 -        {}
1265.1801 -      iter_swap(__i, __j);
1265.1802 -      reverse(__ii, __last);
1265.1803 -      return true;
1265.1804 -    }
1265.1805 -    if (__i == __first) {
1265.1806 -      reverse(__first, __last);
1265.1807 -      return false;
1265.1808 -    }
1265.1809 -  }
1265.1810 -#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1265.1811 -    return 0;
1265.1812 -#endif
1265.1813 -}
1265.1814 -
1265.1815 -template <class _BidirectionalIter>
1265.1816 -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
1265.1817 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1818 -  return __next_permutation(__first, __last, __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter)));
1265.1819 -}
1265.1820 -
1265.1821 -template <class _BidirectionalIter, class _Compare>
1265.1822 -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1265.1823 -                      _Compare __comp) {
1265.1824 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1825 -  return __next_permutation(__first, __last, __comp);
1265.1826 -}
1265.1827 -
1265.1828 -template <class _BidirectionalIter, class _Compare>
1265.1829 -bool __prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1265.1830 -                      _Compare __comp) {
1265.1831 -  if (__first == __last)
1265.1832 -    return false;
1265.1833 -  _BidirectionalIter __i = __first;
1265.1834 -  ++__i;
1265.1835 -  if (__i == __last)
1265.1836 -    return false;
1265.1837 -  __i = __last;
1265.1838 -  --__i;
1265.1839 -
1265.1840 -  for(;;) {
1265.1841 -    _BidirectionalIter __ii = __i;
1265.1842 -    --__i;
1265.1843 -    if (__comp(*__ii, *__i)) {
1265.1844 -      _BidirectionalIter __j = __last;
1265.1845 -      while (!__comp(*--__j, *__i))
1265.1846 -        {}
1265.1847 -      iter_swap(__i, __j);
1265.1848 -      reverse(__ii, __last);
1265.1849 -      return true;
1265.1850 -    }
1265.1851 -    if (__i == __first) {
1265.1852 -      reverse(__first, __last);
1265.1853 -      return false;
1265.1854 -    }
1265.1855 -  }
1265.1856 -#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1265.1857 -    return 0;
1265.1858 -#endif
1265.1859 -}
1265.1860 -
1265.1861 -template <class _BidirectionalIter>
1265.1862 -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
1265.1863 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1864 -  return __prev_permutation(__first, __last, __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter)));
1265.1865 -}
1265.1866 -
1265.1867 -template <class _BidirectionalIter, class _Compare>
1265.1868 -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1265.1869 -                      _Compare __comp) {
1265.1870 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1871 -  return __prev_permutation(__first, __last, __comp);
1265.1872 -}
1265.1873 -
1265.1874 -# ifndef _STLP_NO_EXTENSIONS
1265.1875 -
1265.1876 -// is_heap, a predicate testing whether or not a range is
1265.1877 -// a heap.  This function is an extension, not part of the C++
1265.1878 -// standard.
1265.1879 -
1265.1880 -
1265.1881 -template <class _RandomAccessIter, class _Distance, class _StrictWeakOrdering>
1265.1882 -bool __is_heap(_RandomAccessIter __first, _StrictWeakOrdering __comp,
1265.1883 -               _Distance __n)
1265.1884 -{
1265.1885 -  _Distance __parent = 0;
1265.1886 -  for (_Distance __child = 1; __child < __n; ++__child) {
1265.1887 -    if (__comp(__first[__parent], __first[__child]))
1265.1888 -      return false;
1265.1889 -    if ((__child & 1) == 0)
1265.1890 -      ++__parent;
1265.1891 -  }
1265.1892 -  return true;
1265.1893 -}
1265.1894 -
1265.1895 -template <class _RandomAccessIter>
1265.1896 -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last)
1265.1897 -{
1265.1898 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1899 -  return __is_heap(__first, __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)), __last - __first);
1265.1900 -}
1265.1901 -
1265.1902 -template <class _RandomAccessIter, class _StrictWeakOrdering>
1265.1903 -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last,
1265.1904 -	     _StrictWeakOrdering __comp)
1265.1905 -{
1265.1906 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1907 -  return __is_heap(__first, __comp, __last - __first);
1265.1908 -}
1265.1909 -
1265.1910 -
1265.1911 -template <class _ForwardIter, class _StrictWeakOrdering>
1265.1912 -bool __is_sorted(_ForwardIter __first, _ForwardIter __last,
1265.1913 -                 _StrictWeakOrdering __comp)
1265.1914 -{
1265.1915 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1265.1916 -  if (__first == __last)
1265.1917 -    return true;
1265.1918 -
1265.1919 -  _ForwardIter __next = __first;
1265.1920 -  for (++__next; __next != __last; __first = __next, ++__next) {
1265.1921 -    if (__comp(*__next, *__first))
1265.1922 -      return false;
1265.1923 -  }
1265.1924 -
1265.1925 -  return true;
1265.1926 -}
1265.1927 -
1265.1928 -# endif /* _STLP_NO_EXTENSIONS */
1265.1929 -
1265.1930 -_STLP_END_NAMESPACE
1265.1931 -
1265.1932 -# undef __stl_threshold
1265.1933 -
1265.1934 -#endif /* _STLP_ALGO_C */
1265.1935 -// Local Variables:
1265.1936 -// mode:C++
1265.1937 -// End:
  1266.1 --- a/epoc32/include/stdapis/stlport/stl/_algo.h	Tue Mar 16 16:12:26 2010 +0000
  1266.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1266.3 @@ -1,740 +0,0 @@
  1266.4 -/*
  1266.5 - *
  1266.6 - * Copyright (c) 1994
  1266.7 - * Hewlett-Packard Company
  1266.8 - *
  1266.9 - * Copyright (c) 1996,1997
 1266.10 - * Silicon Graphics Computer Systems, Inc.
 1266.11 - *
 1266.12 - * Copyright (c) 1997
 1266.13 - * Moscow Center for SPARC Technology
 1266.14 - *
 1266.15 - * Copyright (c) 1999 
 1266.16 - * Boris Fomitchev
 1266.17 - *
 1266.18 - * This material is provided "as is", with absolutely no warranty expressed
 1266.19 - * or implied. Any use is at your own risk.
 1266.20 - *
 1266.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1266.22 - * without fee, provided the above notices are retained on all copies.
 1266.23 - * Permission to modify the code and to distribute modified code is granted,
 1266.24 - * provided the above notices are retained, and a notice that the code was
 1266.25 - * modified is included with the above copyright notice.
 1266.26 - *
 1266.27 - */
 1266.28 -
 1266.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1266.30 - *   You should not attempt to use it directly.
 1266.31 - */
 1266.32 -
 1266.33 -#ifndef _STLP_INTERNAL_ALGO_H
 1266.34 -#define _STLP_INTERNAL_ALGO_H
 1266.35 -
 1266.36 -# ifndef _STLP_INTERNAL_ALGOBASE_H
 1266.37 -#  include <stl/_algobase.h>
 1266.38 -# endif
 1266.39 -
 1266.40 -# ifndef _STLP_INTERNAL_TEMPBUF_H
 1266.41 -#  include <stl/_tempbuf.h>
 1266.42 -# endif
 1266.43 -
 1266.44 -# ifndef _STLP_INTERNAL_HEAP_H
 1266.45 -#  include <stl/_heap.h>
 1266.46 -# endif
 1266.47 -
 1266.48 -# ifndef _STLP_INTERNAL_ITERATOR_H
 1266.49 -#  include <stl/_iterator.h>
 1266.50 -# endif
 1266.51 -
 1266.52 -# ifndef _STLP_INTERNAL_FUNCTION_BASE_H
 1266.53 -#  include <stl/_function_base.h>
 1266.54 -# endif
 1266.55 -
 1266.56 -# ifdef __SUNPRO_CC
 1266.57 -// remove() conflict
 1266.58 -#  include <cstdio>
 1266.59 -# endif
 1266.60 -
 1266.61 -_STLP_BEGIN_NAMESPACE
 1266.62 -
 1266.63 -// for_each.  Apply a function to every element of a range.
 1266.64 -template <class _InputIter, class _Function>
 1266.65 -_STLP_INLINE_LOOP _Function 
 1266.66 -for_each(_InputIter __first, _InputIter __last, _Function __f) {
 1266.67 -  for ( ; __first != __last; ++__first)
 1266.68 -    __f(*__first);
 1266.69 -  return __f;
 1266.70 -}
 1266.71 -
 1266.72 -// count_if
 1266.73 -template <class _InputIter, class _Predicate>
 1266.74 -_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter)
 1266.75 -count_if(_InputIter __first, _InputIter __last, _Predicate __pred) {
 1266.76 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1266.77 -_STLP_DIFFERENCE_TYPE(_InputIter) __n = 0;
 1266.78 -  for ( ; __first != __last; ++__first)
 1266.79 -    if (__pred(*__first))
 1266.80 -      ++__n;
 1266.81 -  return __n;
 1266.82 -}
 1266.83 -
 1266.84 -// adjacent_find.
 1266.85 -
 1266.86 -template <class _ForwardIter, class _BinaryPredicate>
 1266.87 -_STLP_INLINE_LOOP _ForwardIter 
 1266.88 -adjacent_find(_ForwardIter __first, _ForwardIter __last,
 1266.89 -              _BinaryPredicate __binary_pred) {
 1266.90 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1266.91 -  if (__first == __last)
 1266.92 -    return __last;
 1266.93 -  _ForwardIter __next = __first;
 1266.94 -  while(++__next != __last) {
 1266.95 -    if (__binary_pred(*__first, *__next))
 1266.96 -      return __first;
 1266.97 -    __first = __next;
 1266.98 -  }
 1266.99 -  return __last;
1266.100 -}
1266.101 -
1266.102 -template <class _ForwardIter>
1266.103 -_STLP_INLINE_LOOP _ForwardIter 
1266.104 -adjacent_find(_ForwardIter __first, _ForwardIter __last) {
1266.105 -  return adjacent_find(__first, __last,
1266.106 -		       __equal_to(_STLP_VALUE_TYPE(__first, _ForwardIter)));
1266.107 -}
1266.108 -
1266.109 -# ifndef _STLP_NO_ANACHRONISMS
1266.110 -template <class _InputIter, class _Tp, class _Size>
1266.111 -_STLP_INLINE_LOOP void 
1266.112 -count(_InputIter __first, _InputIter __last, const _Tp& __val, _Size& __n) {
1266.113 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.114 -    for ( ; __first != __last; ++__first)
1266.115 -      if (*__first == __val)
1266.116 -        ++__n;
1266.117 -}
1266.118 -
1266.119 -template <class _InputIter, class _Predicate, class _Size>
1266.120 -_STLP_INLINE_LOOP void 
1266.121 -count_if(_InputIter __first, _InputIter __last, _Predicate __pred, _Size& __n) {
1266.122 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.123 -  for ( ; __first != __last; ++__first)
1266.124 -    if (__pred(*__first))
1266.125 -      ++__n;
1266.126 -}
1266.127 -# endif
1266.128 -
1266.129 -template <class _ForwardIter1, class _ForwardIter2>
1266.130 -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
1266.131 -                     _ForwardIter2 __first2, _ForwardIter2 __last2);
1266.132 -
1266.133 -// search_n.  Search for __count consecutive copies of __val.
1266.134 -template <class _ForwardIter, class _Integer, class _Tp>
1266.135 -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1266.136 -                      _Integer __count, const _Tp& __val);
1266.137 -template <class _ForwardIter, class _Integer, class _Tp, class _BinaryPred>
1266.138 -_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1266.139 -                      _Integer __count, const _Tp& __val, _BinaryPred __binary_pred);
1266.140 -
1266.141 -template <class _InputIter, class _ForwardIter>
1266.142 -inline _InputIter find_first_of(_InputIter __first1, _InputIter __last1,
1266.143 -                                _ForwardIter __first2, _ForwardIter __last2) {
1266.144 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1266.145 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1266.146 -  return __find_first_of(__first1, __last1, __first2, __last2,__equal_to(_STLP_VALUE_TYPE(__first1, _InputIter)));
1266.147 -}
1266.148 -
1266.149 -template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1266.150 -inline _InputIter 
1266.151 -find_first_of(_InputIter __first1, _InputIter __last1,
1266.152 -              _ForwardIter __first2, _ForwardIter __last2,_BinaryPredicate __comp) {
1266.153 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1266.154 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1266.155 -  return __find_first_of(__first1, __last1, __first2, __last2,__comp);
1266.156 -}
1266.157 -
1266.158 -template <class _ForwardIter1, class _ForwardIter2>
1266.159 -_ForwardIter1 
1266.160 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1266.161 -         _ForwardIter2 __first2, _ForwardIter2 __last2);
1266.162 -
1266.163 -// swap_ranges
1266.164 -template <class _ForwardIter1, class _ForwardIter2>
1266.165 -_STLP_INLINE_LOOP _ForwardIter2 
1266.166 -swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2) {
1266.167 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1266.168 -  for ( ; __first1 != __last1; ++__first1, ++__first2)
1266.169 -    iter_swap(__first1, __first2);
1266.170 -  return __first2;
1266.171 -}
1266.172 -
1266.173 -// transform
1266.174 -template <class _InputIter, class _OutputIter, class _UnaryOperation>
1266.175 -_STLP_INLINE_LOOP _OutputIter 
1266.176 -transform(_InputIter __first, _InputIter __last, _OutputIter __result, _UnaryOperation __opr) {
1266.177 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.178 -  for ( ; __first != __last; ++__first, ++__result)
1266.179 -    *__result = __opr(*__first);
1266.180 -  return __result;
1266.181 -}
1266.182 -template <class _InputIter1, class _InputIter2, class _OutputIter, class _BinaryOperation>
1266.183 -_STLP_INLINE_LOOP _OutputIter 
1266.184 -transform(_InputIter1 __first1, _InputIter1 __last1, 
1266.185 -          _InputIter2 __first2, _OutputIter __result,_BinaryOperation __binary_op) {
1266.186 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1266.187 -  for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
1266.188 -    *__result = __binary_op(*__first1, *__first2);
1266.189 -  return __result;
1266.190 -}
1266.191 -
1266.192 -// replace_if, replace_copy, replace_copy_if
1266.193 -
1266.194 -template <class _ForwardIter, class _Predicate, class _Tp>
1266.195 -_STLP_INLINE_LOOP void 
1266.196 -replace_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, const _Tp& __new_value) {
1266.197 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.198 -  for ( ; __first != __last; ++__first)
1266.199 -    if (__pred(*__first))
1266.200 -      *__first = __new_value;
1266.201 -}
1266.202 -
1266.203 -template <class _InputIter, class _OutputIter, class _Tp>
1266.204 -_STLP_INLINE_LOOP  _OutputIter 
1266.205 -replace_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1266.206 -             const _Tp& __old_value, const _Tp& __new_value) {
1266.207 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.208 -  for ( ; __first != __last; ++__first, ++__result)
1266.209 -    *__result = *__first == __old_value ? __new_value : *__first;
1266.210 -  return __result;
1266.211 -}
1266.212 -
1266.213 -template <class _Iterator, class _OutputIter, class _Predicate, class _Tp>
1266.214 -_STLP_INLINE_LOOP _OutputIter 
1266.215 -replace_copy_if(_Iterator __first, _Iterator __last,
1266.216 -                _OutputIter __result,
1266.217 -                _Predicate __pred, const _Tp& __new_value) {
1266.218 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.219 -  for ( ; __first != __last; ++__first, ++__result)
1266.220 -    *__result = __pred(*__first) ? __new_value : *__first;
1266.221 -  return __result;
1266.222 -}
1266.223 -
1266.224 -// generate and generate_n
1266.225 -
1266.226 -template <class _ForwardIter, class _Generator>
1266.227 -_STLP_INLINE_LOOP void 
1266.228 -generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) {
1266.229 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.230 -  for ( ; __first != __last; ++__first)
1266.231 -    *__first = __gen();
1266.232 -}
1266.233 -
1266.234 -template <class _OutputIter, class _Size, class _Generator>
1266.235 -_STLP_INLINE_LOOP _OutputIter 
1266.236 -generate_n(_OutputIter __first, _Size __n, _Generator __gen) {
1266.237 -  for ( ; __n > 0; --__n, ++__first)
1266.238 -    *__first = __gen();
1266.239 -  return __first;
1266.240 -}
1266.241 -
1266.242 -// remove, remove_if, remove_copy, remove_copy_if
1266.243 -
1266.244 -template <class _InputIter, class _OutputIter, class _Tp>
1266.245 -_STLP_INLINE_LOOP _OutputIter 
1266.246 -remove_copy(_InputIter __first, _InputIter __last,_OutputIter __result, const _Tp& __val) {
1266.247 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.248 -  for ( ; __first != __last; ++__first)
1266.249 -    if (!(*__first == __val)) {
1266.250 -      *__result = *__first;
1266.251 -      ++__result;
1266.252 -    }
1266.253 -  return __result;
1266.254 -}
1266.255 -
1266.256 -template <class _InputIter, class _OutputIter, class _Predicate>
1266.257 -_STLP_INLINE_LOOP _OutputIter 
1266.258 -remove_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred) {
1266.259 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.260 -  for ( ; __first != __last; ++__first)
1266.261 -    if (!__pred(*__first)) {
1266.262 -      *__result = *__first;
1266.263 -      ++__result;
1266.264 -    }
1266.265 -  return __result;
1266.266 -}
1266.267 -
1266.268 -template <class _ForwardIter, class _Tp>
1266.269 -_STLP_INLINE_LOOP _ForwardIter 
1266.270 -remove(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
1266.271 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.272 -  __first = find(__first, __last, __val);
1266.273 -  if (__first == __last)
1266.274 -    return __first;
1266.275 -  else { 
1266.276 -    _ForwardIter __next = __first;
1266.277 -    return remove_copy(++__next, __last, __first, __val);
1266.278 -  }
1266.279 -}
1266.280 -
1266.281 -template <class _ForwardIter, class _Predicate>
1266.282 -_STLP_INLINE_LOOP _ForwardIter 
1266.283 -remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) {
1266.284 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.285 -  __first = find_if(__first, __last, __pred);
1266.286 -  if ( __first == __last )
1266.287 -    return __first;
1266.288 -  else {
1266.289 -    _ForwardIter __next = __first;
1266.290 -    return remove_copy_if(++__next, __last, __first, __pred);
1266.291 -  }
1266.292 -}
1266.293 -
1266.294 -// unique and unique_copy
1266.295 -template <class _InputIter, class _OutputIter>
1266.296 -_OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result);
1266.297 -
1266.298 -template <class _InputIter, class _OutputIter, class _BinaryPredicate>
1266.299 -_OutputIter unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1266.300 -                        _BinaryPredicate __binary_pred);
1266.301 -
1266.302 -template <class _ForwardIter>
1266.303 -inline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last) {
1266.304 -  __first = adjacent_find(__first, __last);
1266.305 -  return unique_copy(__first, __last, __first);
1266.306 -}
1266.307 -
1266.308 -template <class _ForwardIter, class _BinaryPredicate>
1266.309 -inline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last,
1266.310 -                    _BinaryPredicate __binary_pred) {
1266.311 -  __first = adjacent_find(__first, __last, __binary_pred);
1266.312 -  return unique_copy(__first, __last, __first, __binary_pred);
1266.313 -}
1266.314 -
1266.315 -// reverse and reverse_copy, and their auxiliary functions
1266.316 -
1266.317 -template <class _BidirectionalIter>
1266.318 -_STLP_INLINE_LOOP void 
1266.319 -__reverse(_BidirectionalIter __first, _BidirectionalIter __last, const bidirectional_iterator_tag &) {
1266.320 -  for(; __first != __last && __first != --__last; ++__first)
1266.321 -    iter_swap(__first,__last);
1266.322 -}
1266.323 -
1266.324 -
1266.325 -template <class _RandomAccessIter>
1266.326 -_STLP_INLINE_LOOP void 
1266.327 -__reverse(_RandomAccessIter __first, _RandomAccessIter __last, const random_access_iterator_tag &) {
1266.328 -  for (; __first < __last; ++__first) iter_swap(__first, --__last);
1266.329 -}
1266.330 -
1266.331 -template <class _BidirectionalIter>
1266.332 -inline void 
1266.333 -reverse(_BidirectionalIter __first, _BidirectionalIter __last) {
1266.334 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.335 -  __reverse(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _BidirectionalIter));
1266.336 -}
1266.337 -
1266.338 -template <class _BidirectionalIter, class _OutputIter>
1266.339 -_STLP_INLINE_LOOP
1266.340 -_OutputIter reverse_copy(_BidirectionalIter __first,
1266.341 -                            _BidirectionalIter __last,
1266.342 -                            _OutputIter __result) {
1266.343 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.344 -  while (__first != __last) {
1266.345 -    --__last;
1266.346 -    *__result = *__last;
1266.347 -    ++__result;
1266.348 -  }
1266.349 -  return __result;
1266.350 -}
1266.351 -
1266.352 -// rotate and rotate_copy, and their auxiliary functions
1266.353 -
1266.354 -template <class _EuclideanRingElement>
1266.355 -_STLP_INLINE_LOOP
1266.356 -_EuclideanRingElement __gcd(_EuclideanRingElement __m,
1266.357 -                            _EuclideanRingElement __n)
1266.358 -{
1266.359 -  while (__n != 0) {
1266.360 -    _EuclideanRingElement __t = __m % __n;
1266.361 -    __m = __n;
1266.362 -    __n = __t;
1266.363 -  }
1266.364 -  return __m;
1266.365 -}
1266.366 -
1266.367 -template <class _ForwardIter>
1266.368 -_ForwardIter 
1266.369 -rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last);
1266.370 -
1266.371 -template <class _ForwardIter, class _OutputIter>
1266.372 -inline _OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle,
1266.373 -                               _ForwardIter __last, _OutputIter __result) {
1266.374 -  return copy(__first, __middle, copy(__middle, __last, __result));
1266.375 -}
1266.376 -
1266.377 -// random_shuffle
1266.378 -
1266.379 -template <class _RandomAccessIter>
1266.380 -void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last);
1266.381 -
1266.382 -template <class _RandomAccessIter, class _RandomNumberGenerator>
1266.383 -void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
1266.384 -                    _RandomNumberGenerator& __rand);
1266.385 -
1266.386 -# ifndef _STLP_NO_EXTENSIONS
1266.387 -// random_sample and random_sample_n (extensions, not part of the standard).
1266.388 -
1266.389 -template <class _ForwardIter, class _OutputIter, class _Distance>
1266.390 -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1266.391 -                            _OutputIter __stl_out, const _Distance __n);
1266.392 -
1266.393 -template <class _ForwardIter, class _OutputIter, class _Distance,
1266.394 -          class _RandomNumberGenerator>
1266.395 -_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1266.396 -                            _OutputIter __stl_out, const _Distance __n,
1266.397 -                            _RandomNumberGenerator& __rand);
1266.398 -
1266.399 -template <class _InputIter, class _RandomAccessIter>
1266.400 -_RandomAccessIter
1266.401 -random_sample(_InputIter __first, _InputIter __last,
1266.402 -              _RandomAccessIter __out_first, _RandomAccessIter __out_last);
1266.403 -
1266.404 -template <class _InputIter, class _RandomAccessIter, 
1266.405 -          class _RandomNumberGenerator>
1266.406 -_RandomAccessIter
1266.407 -random_sample(_InputIter __first, _InputIter __last,
1266.408 -              _RandomAccessIter __out_first, _RandomAccessIter __out_last,
1266.409 -              _RandomNumberGenerator& __rand);
1266.410 -
1266.411 -# endif /* _STLP_NO_EXTENSIONS */
1266.412 -
1266.413 -// partition, stable_partition, and their auxiliary functions
1266.414 -
1266.415 -template <class _ForwardIter, class _Predicate>
1266.416 -_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate   __pred);
1266.417 -
1266.418 -
1266.419 -template <class _ForwardIter, class _Predicate>
1266.420 -_ForwardIter 
1266.421 -stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred);
1266.422 -
1266.423 -// sort() and its auxiliary functions. 
1266.424 -
1266.425 -template <class _Size>
1266.426 -inline _Size __lg(_Size __n) {
1266.427 -  _Size __k;
1266.428 -  for (__k = 0; __n != 1; __n >>= 1) ++__k;
1266.429 -  return __k;
1266.430 -}
1266.431 -
1266.432 -template <class _RandomAccessIter>
1266.433 -void sort(_RandomAccessIter __first, _RandomAccessIter __last);
1266.434 -template <class _RandomAccessIter, class _Compare>
1266.435 -void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp);
1266.436 -
1266.437 -// stable_sort() and its auxiliary functions.
1266.438 -template <class _RandomAccessIter>
1266.439 -void stable_sort(_RandomAccessIter __first,
1266.440 -		 _RandomAccessIter __last);
1266.441 -
1266.442 -template <class _RandomAccessIter, class _Compare>
1266.443 -void stable_sort(_RandomAccessIter __first,
1266.444 -		 _RandomAccessIter __last, _Compare __comp);
1266.445 -
1266.446 -// partial_sort, partial_sort_copy, and auxiliary functions.
1266.447 -
1266.448 -template <class _RandomAccessIter>
1266.449 -void 
1266.450 -partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, _RandomAccessIter __last);
1266.451 -
1266.452 -template <class _RandomAccessIter, class _Compare>
1266.453 -void 
1266.454 -partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, 
1266.455 -             _RandomAccessIter __last, _Compare __comp);
1266.456 -
1266.457 -template <class _InputIter, class _RandomAccessIter>
1266.458 -_RandomAccessIter
1266.459 -partial_sort_copy(_InputIter __first, _InputIter __last,
1266.460 -                  _RandomAccessIter __result_first, _RandomAccessIter __result_last);
1266.461 -
1266.462 -template <class _InputIter, class _RandomAccessIter, class _Compare>
1266.463 -_RandomAccessIter
1266.464 -partial_sort_copy(_InputIter __first, _InputIter __last,
1266.465 -                  _RandomAccessIter __result_first,
1266.466 -                  _RandomAccessIter __result_last, _Compare __comp);
1266.467 -
1266.468 -// nth_element() and its auxiliary functions.  
1266.469 -
1266.470 -template <class _RandomAccessIter>
1266.471 -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1266.472 -                 _RandomAccessIter __last);
1266.473 -
1266.474 -template <class _RandomAccessIter, class _Compare>
1266.475 -void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1266.476 -                 _RandomAccessIter __last, _Compare __comp);
1266.477 -
1266.478 -// auxiliary class for lower_bound, etc.
1266.479 -template <class _T1, class _T2>
1266.480 -struct __less_2 {
1266.481 -  bool operator() (const _T1& __x, const _T2 __y) const { return __x < __y ; } 
1266.482 -};
1266.483 -
1266.484 -template <class _T1, class _T2>
1266.485 -__less_2<_T1,_T2> __less2(_T1*, _T2* ) { return __less_2<_T1, _T2>(); }
1266.486 -
1266.487 -#ifdef _STLP_FUNCTION_PARTIAL_ORDER
1266.488 -template <class _Tp>
1266.489 -less<_Tp> __less2(_Tp*, _Tp* ) { return less<_Tp>(); }
1266.490 -#endif
1266.491 -
1266.492 -// Binary search (lower_bound, upper_bound, equal_range, binary_search).
1266.493 -
1266.494 -template <class _ForwardIter, class _Tp>
1266.495 -inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last,
1266.496 -                                   const _Tp& __val) {
1266.497 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.498 -    return __lower_bound(__first, __last, __val, 
1266.499 -			 __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1266.500 -			 _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.501 -}
1266.502 -
1266.503 -template <class _ForwardIter, class _Tp, class _Compare>
1266.504 -inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last,
1266.505 -                                const _Tp& __val, _Compare __comp) {
1266.506 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.507 -  return __lower_bound(__first, __last, __val, __comp, _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.508 -}
1266.509 -
1266.510 -template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1266.511 -_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last,
1266.512 -                           const _Tp& __val, _Compare __comp, _Distance*);
1266.513 -
1266.514 -template <class _ForwardIter, class _Tp>
1266.515 -inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last,
1266.516 -                                const _Tp& __val) {
1266.517 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.518 -  return __upper_bound(__first, __last, __val, 
1266.519 -		       __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1266.520 -                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.521 -}
1266.522 -
1266.523 -template <class _ForwardIter, class _Tp, class _Compare>
1266.524 -inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last,
1266.525 -                                const _Tp& __val, _Compare __comp) {
1266.526 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.527 -  return __upper_bound(__first, __last, __val, __comp,
1266.528 -                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.529 -}
1266.530 -
1266.531 -template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1266.532 -pair<_ForwardIter, _ForwardIter>
1266.533 -__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
1266.534 -              _Compare __comp, _Distance*);
1266.535 -
1266.536 -template <class _ForwardIter, class _Tp>
1266.537 -inline pair<_ForwardIter, _ForwardIter>
1266.538 -equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
1266.539 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.540 -  return __equal_range(__first, __last, __val,  
1266.541 -		       __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1266.542 -                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.543 -}
1266.544 -
1266.545 -template <class _ForwardIter, class _Tp, class _Compare>
1266.546 -inline pair<_ForwardIter, _ForwardIter>
1266.547 -equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
1266.548 -            _Compare __comp) {
1266.549 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.550 -  return __equal_range(__first, __last, __val, __comp,
1266.551 -                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.552 -} 
1266.553 -
1266.554 -template <class _ForwardIter, class _Tp>
1266.555 -inline bool binary_search(_ForwardIter __first, _ForwardIter __last,
1266.556 -                   const _Tp& __val) {
1266.557 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.558 -  _ForwardIter __i = __lower_bound(__first, __last, __val, 
1266.559 -                                   __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1266.560 -                                   _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.561 -  return __i != __last && !(__val < *__i);
1266.562 -}
1266.563 -
1266.564 -template <class _ForwardIter, class _Tp, class _Compare>
1266.565 -inline bool binary_search(_ForwardIter __first, _ForwardIter __last,
1266.566 -                   const _Tp& __val,
1266.567 -                   _Compare __comp) {
1266.568 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1266.569 -  _ForwardIter __i = __lower_bound(__first, __last, __val, __comp, _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1266.570 -  return __i != __last && !__comp(__val, *__i);
1266.571 -}
1266.572 -
1266.573 -// merge, with and without an explicitly supplied comparison function.
1266.574 -
1266.575 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1266.576 -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1266.577 -                  _InputIter2 __first2, _InputIter2 __last2,
1266.578 -                  _OutputIter __result);
1266.579 - 
1266.580 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1266.581 -          class _Compare>
1266.582 -_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1266.583 -                  _InputIter2 __first2, _InputIter2 __last2,
1266.584 -                  _OutputIter __result, _Compare __comp);
1266.585 -
1266.586 -
1266.587 -// inplace_merge and its auxiliary functions. 
1266.588 -
1266.589 -
1266.590 -template <class _BidirectionalIter>
1266.591 -void inplace_merge(_BidirectionalIter __first,
1266.592 -		   _BidirectionalIter __middle,
1266.593 -		   _BidirectionalIter __last) ;
1266.594 -
1266.595 -template <class _BidirectionalIter, class _Compare>
1266.596 -void inplace_merge(_BidirectionalIter __first,
1266.597 -		   _BidirectionalIter __middle,
1266.598 -		   _BidirectionalIter __last, _Compare __comp);
1266.599 -
1266.600 -// Set algorithms: includes, set_union, set_intersection, set_difference,
1266.601 -// set_symmetric_difference.  All of these algorithms have the precondition
1266.602 -// that their input ranges are sorted and the postcondition that their output
1266.603 -// ranges are sorted.
1266.604 -
1266.605 -template <class _InputIter1, class _InputIter2>
1266.606 -bool includes(_InputIter1 __first1, _InputIter1 __last1,
1266.607 -              _InputIter2 __first2, _InputIter2 __last2);
1266.608 -
1266.609 -template <class _InputIter1, class _InputIter2, class _Compare>
1266.610 -bool includes(_InputIter1 __first1, _InputIter1 __last1,
1266.611 -              _InputIter2 __first2, _InputIter2 __last2, _Compare __comp);
1266.612 - 
1266.613 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1266.614 -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1266.615 -                      _InputIter2 __first2, _InputIter2 __last2,
1266.616 -                      _OutputIter __result);
1266.617 -
1266.618 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1266.619 -          class _Compare>
1266.620 -_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1266.621 -                      _InputIter2 __first2, _InputIter2 __last2,
1266.622 -                      _OutputIter __result, _Compare __comp);
1266.623 -
1266.624 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1266.625 -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1266.626 -                             _InputIter2 __first2, _InputIter2 __last2,
1266.627 -                             _OutputIter __result);
1266.628 -
1266.629 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1266.630 -          class _Compare>
1266.631 -_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1266.632 -                             _InputIter2 __first2, _InputIter2 __last2,
1266.633 -                             _OutputIter __result, _Compare __comp);
1266.634 -
1266.635 -
1266.636 -
1266.637 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1266.638 -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1266.639 -                           _InputIter2 __first2, _InputIter2 __last2,
1266.640 -                           _OutputIter __result);
1266.641 -
1266.642 -template <class _InputIter1, class _InputIter2, class _OutputIter, 
1266.643 -          class _Compare>
1266.644 -_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1266.645 -                           _InputIter2 __first2, _InputIter2 __last2, 
1266.646 -                           _OutputIter __result, _Compare __comp);
1266.647 -
1266.648 -template <class _InputIter1, class _InputIter2, class _OutputIter>
1266.649 -_OutputIter 
1266.650 -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1266.651 -                         _InputIter2 __first2, _InputIter2 __last2,
1266.652 -                         _OutputIter __result);
1266.653 -
1266.654 -
1266.655 -template <class _InputIter1, class _InputIter2, class _OutputIter,
1266.656 -          class _Compare>
1266.657 -_OutputIter 
1266.658 -set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1266.659 -                         _InputIter2 __first2, _InputIter2 __last2,
1266.660 -                         _OutputIter __result,
1266.661 -                         _Compare __comp);
1266.662 -
1266.663 -
1266.664 -// min_element and max_element, with and without an explicitly supplied
1266.665 -// comparison function.
1266.666 -
1266.667 -template <class _ForwardIter>
1266.668 -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last);
1266.669 -template <class _ForwardIter, class _Compare>
1266.670 -_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last,
1266.671 -                            _Compare __comp);
1266.672 -
1266.673 -template <class _ForwardIter>
1266.674 -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last);
1266.675 -
1266.676 -template <class _ForwardIter, class _Compare>
1266.677 -_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last,
1266.678 -                            _Compare __comp);
1266.679 -
1266.680 -// next_permutation and prev_permutation, with and without an explicitly 
1266.681 -// supplied comparison function.
1266.682 -
1266.683 -template <class _BidirectionalIter>
1266.684 -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last);
1266.685 -
1266.686 -template <class _BidirectionalIter, class _Compare>
1266.687 -bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1266.688 -                      _Compare __comp);
1266.689 -
1266.690 -
1266.691 -template <class _BidirectionalIter>
1266.692 -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last);
1266.693 -
1266.694 -
1266.695 -template <class _BidirectionalIter, class _Compare>
1266.696 -bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1266.697 -                      _Compare __comp);
1266.698 -
1266.699 -# ifndef _STLP_NO_EXTENSIONS
1266.700 -
1266.701 -// is_heap, a predicate testing whether or not a range is
1266.702 -// a heap.  This function is an extension, not part of the C++
1266.703 -// standard.
1266.704 -
1266.705 -template <class _RandomAccessIter>
1266.706 -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last);
1266.707 -
1266.708 -template <class _RandomAccessIter, class _StrictWeakOrdering>
1266.709 -bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last,
1266.710 -	     _StrictWeakOrdering __comp);
1266.711 -
1266.712 -
1266.713 -// is_sorted, a predicated testing whether a range is sorted in
1266.714 -// nondescending order.  This is an extension, not part of the C++
1266.715 -// standard.
1266.716 -template <class _ForwardIter, class _StrictWeakOrdering>
1266.717 -bool __is_sorted(_ForwardIter __first, _ForwardIter __last,
1266.718 -                 _StrictWeakOrdering __comp);
1266.719 -
1266.720 -template <class _ForwardIter>
1266.721 -inline bool is_sorted(_ForwardIter __first, _ForwardIter __last) {
1266.722 -  return __is_sorted(__first, __last, __less(_STLP_VALUE_TYPE(__first, _ForwardIter)));
1266.723 -}
1266.724 -
1266.725 -template <class _ForwardIter, class _StrictWeakOrdering>
1266.726 -inline bool is_sorted(_ForwardIter __first, _ForwardIter __last,
1266.727 -                      _StrictWeakOrdering __comp) {
1266.728 -  return __is_sorted(__first, __last, __comp);
1266.729 -}
1266.730 -# endif
1266.731 -
1266.732 -_STLP_END_NAMESPACE
1266.733 -
1266.734 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1266.735 -#  include <stl/_algo.c>
1266.736 -# endif
1266.737 -
1266.738 -#endif /* _STLP_INTERNAL_ALGO_H */
1266.739 -
1266.740 -// Local Variables:
1266.741 -// mode:C++
1266.742 -// End:
1266.743 -
  1267.1 --- a/epoc32/include/stdapis/stlport/stl/_algobase.c	Tue Mar 16 16:12:26 2010 +0000
  1267.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1267.3 @@ -1,392 +0,0 @@
  1267.4 -/*
  1267.5 - *
  1267.6 - * Copyright (c) 1994
  1267.7 - * Hewlett-Packard Company
  1267.8 - *
  1267.9 - * Copyright (c) 1996,1997
 1267.10 - * Silicon Graphics Computer Systems, Inc.
 1267.11 - *
 1267.12 - * Copyright (c) 1997
 1267.13 - * Moscow Center for SPARC Technology
 1267.14 - *
 1267.15 - * Copyright (c) 1999 
 1267.16 - * Boris Fomitchev
 1267.17 - *
 1267.18 - * This material is provided "as is", with absolutely no warranty expressed
 1267.19 - * or implied. Any use is at your own risk.
 1267.20 - *
 1267.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1267.22 - * without fee, provided the above notices are retained on all copies.
 1267.23 - * Permission to modify the code and to distribute modified code is granted,
 1267.24 - * provided the above notices are retained, and a notice that the code was
 1267.25 - * modified is included with the above copyright notice.
 1267.26 - *
 1267.27 - */
 1267.28 -#ifndef _STLP_ALGOBASE_C
 1267.29 -#define _STLP_ALGOBASE_C
 1267.30 -
 1267.31 -# if !defined (_STLP_INTERNAL_ALGOBASE_H)
 1267.32 -#  include <stl/_algobase.h>
 1267.33 -# endif
 1267.34 -
 1267.35 -_STLP_BEGIN_NAMESPACE
 1267.36 -
 1267.37 -template <class _InputIter1, class _InputIter2>
 1267.38 -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
 1267.39 -                             _InputIter2 __first2, _InputIter2 __last2) {
 1267.40 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1267.41 -    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
 1267.42 -    for ( ; __first1 != __last1 && __first2 != __last2
 1267.43 -	    ; ++__first1, ++__first2) {
 1267.44 -      if (*__first1 < *__first2)
 1267.45 -	return true;
 1267.46 -      if (*__first2 < *__first1)
 1267.47 -	return false;
 1267.48 -    }
 1267.49 -  return __first1 == __last1 && __first2 != __last2;
 1267.50 -}
 1267.51 -
 1267.52 -template <class _InputIter1, class _InputIter2, class _Compare>
 1267.53 -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
 1267.54 -                             _InputIter2 __first2, _InputIter2 __last2,
 1267.55 -                             _Compare __comp) {
 1267.56 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1267.57 -    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
 1267.58 -    for ( ; __first1 != __last1 && __first2 != __last2
 1267.59 -	    ; ++__first1, ++__first2) {
 1267.60 -      if (__comp(*__first1, *__first2))
 1267.61 -	return true;
 1267.62 -      if (__comp(*__first2, *__first1))
 1267.63 -	return false;
 1267.64 -    }
 1267.65 -  return __first1 == __last1 && __first2 != __last2;
 1267.66 -}
 1267.67 -
 1267.68 -# ifndef _STLP_NO_EXTENSIONS
 1267.69 -
 1267.70 -template <class _InputIter1, class _InputIter2>
 1267.71 -int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
 1267.72 -                                   _InputIter2 __first2, _InputIter2 __last2)
 1267.73 -{
 1267.74 -  while (__first1 != __last1 && __first2 != __last2) {
 1267.75 -    if (*__first1 < *__first2)
 1267.76 -      return -1;
 1267.77 -    if (*__first2 < *__first1)
 1267.78 -      return 1;
 1267.79 -    ++__first1;
 1267.80 -    ++__first2;
 1267.81 -  }
 1267.82 -  if (__first2 == __last2) {
 1267.83 -    return !(__first1 == __last1);
 1267.84 -  }
 1267.85 -  else {
 1267.86 -    return -1;
 1267.87 -  }
 1267.88 -}
 1267.89 -
 1267.90 -
 1267.91 -template <class _InputIter1, class _InputIter2>
 1267.92 -int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
 1267.93 -                                 _InputIter2 __first2, _InputIter2 __last2)
 1267.94 -{
 1267.95 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1267.96 -    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
 1267.97 -    return __lexicographical_compare_3way(__first1, __last1, __first2, __last2);
 1267.98 -}
 1267.99 -# endif
1267.100 -
1267.101 -template <class _RandomAccessIter, class _Tp>
1267.102 -_STLP_INLINE_LOOP _RandomAccessIter __find(_RandomAccessIter __first, _RandomAccessIter __last,
1267.103 -                                           const _Tp& __val,
1267.104 -                                           const random_access_iterator_tag &)
1267.105 -{
1267.106 -  _STLP_DIFFERENCE_TYPE(_RandomAccessIter) __trip_count = (__last - __first) >> 2;
1267.107 -
1267.108 -  for ( ; __trip_count > 0 ; --__trip_count) {
1267.109 -    if (*__first == __val) return __first;
1267.110 -    ++__first;
1267.111 -
1267.112 -    if (*__first == __val) return __first;
1267.113 -    ++__first;
1267.114 -
1267.115 -    if (*__first == __val) return __first;
1267.116 -    ++__first;
1267.117 -
1267.118 -    if (*__first == __val) return __first;
1267.119 -    ++__first;
1267.120 -  }
1267.121 -
1267.122 -  switch(__last - __first) {
1267.123 -  case 3:
1267.124 -    if (*__first == __val) return __first;
1267.125 -    ++__first;
1267.126 -  case 2:
1267.127 -    if (*__first == __val) return __first;
1267.128 -    ++__first;
1267.129 -  case 1:
1267.130 -    if (*__first == __val) return __first;
1267.131 -    ++__first;
1267.132 -  case 0:
1267.133 -  default:
1267.134 -    return __last;
1267.135 -  }
1267.136 -}
1267.137 -
1267.138 -template <class _RandomAccessIter, class _Predicate>
1267.139 -_STLP_INLINE_LOOP _RandomAccessIter __find_if(_RandomAccessIter __first, _RandomAccessIter __last,
1267.140 -                                              _Predicate __pred,
1267.141 -                                              const random_access_iterator_tag &)
1267.142 -{
1267.143 -  _STLP_DIFFERENCE_TYPE(_RandomAccessIter) __trip_count = (__last - __first) >> 2;
1267.144 -
1267.145 -  for ( ; __trip_count > 0 ; --__trip_count) {
1267.146 -    if (__pred(*__first)) return __first;
1267.147 -    ++__first;
1267.148 -
1267.149 -    if (__pred(*__first)) return __first;
1267.150 -    ++__first;
1267.151 -
1267.152 -    if (__pred(*__first)) return __first;
1267.153 -    ++__first;
1267.154 -
1267.155 -    if (__pred(*__first)) return __first;
1267.156 -    ++__first;
1267.157 -  }
1267.158 -
1267.159 -  switch(__last - __first) {
1267.160 -  case 3:
1267.161 -    if (__pred(*__first)) return __first;
1267.162 -    ++__first;
1267.163 -  case 2:
1267.164 -    if (__pred(*__first)) return __first;
1267.165 -    ++__first;
1267.166 -  case 1:
1267.167 -    if (__pred(*__first)) return __first;
1267.168 -    //    ++__first;
1267.169 -  case 0:
1267.170 -  default:
1267.171 -    return __last;
1267.172 -  }
1267.173 -}
1267.174 -
1267.175 -template <class _InputIter, class _Tp>
1267.176 -inline _InputIter __find(_InputIter __first, _InputIter __last,
1267.177 -			 const _Tp& __val,
1267.178 -			 const input_iterator_tag &)
1267.179 -{
1267.180 -  while (__first != __last && !(*__first == __val))
1267.181 -    ++__first;
1267.182 -  return __first;
1267.183 -}
1267.184 -
1267.185 -template <class _InputIter, class _Predicate>
1267.186 -inline _InputIter __find_if(_InputIter __first, _STLP_MPW_EXTRA_CONST _InputIter __last,
1267.187 -                            _Predicate __pred,
1267.188 -                            const input_iterator_tag &)
1267.189 -{
1267.190 -  while (__first != __last && !__pred(*__first))
1267.191 -    ++__first;
1267.192 -  return __first;
1267.193 -}
1267.194 -
1267.195 -template <class _InputIter, class _Predicate>
1267.196 -_InputIter find_if(_InputIter __first, _InputIter __last,
1267.197 -                   _Predicate __pred) {
1267.198 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1267.199 -    return __find_if(__first, __last, __pred, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1267.200 -}
1267.201 -
1267.202 -template <class _InputIter, class _Tp>
1267.203 -_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val)
1267.204 -{
1267.205 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1267.206 -    return __find(__first, __last, __val, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1267.207 -}
1267.208 -
1267.209 -template <class _ForwardIter1, class _ForwardIter2, class _BinaryPred>
1267.210 -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
1267.211 -                     _ForwardIter2 __first2, _ForwardIter2 __last2,
1267.212 -                     _BinaryPred  __predicate) 
1267.213 -{
1267.214 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1267.215 -    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1267.216 -    // Test for empty ranges
1267.217 -    if (__first1 == __last1 || __first2 == __last2)
1267.218 -      return __first1;
1267.219 -
1267.220 -  // Test for a pattern of length 1.
1267.221 -  _ForwardIter2 __tmp(__first2);
1267.222 -  ++__tmp;
1267.223 -  if (__tmp == __last2) {
1267.224 -    while (__first1 != __last1 && !__predicate(*__first1, *__first2))
1267.225 -      ++__first1;
1267.226 -    return __first1;    
1267.227 -  }
1267.228 -  
1267.229 -  // General case.
1267.230 -
1267.231 -  _ForwardIter2 __p1, __p;
1267.232 -
1267.233 -  __p1 = __first2; ++__p1;
1267.234 -
1267.235 -  //  _ForwardIter1 __current = __first1;
1267.236 -
1267.237 -  while (__first1 != __last1) {
1267.238 -    while (__first1 != __last1) {
1267.239 -      if (__predicate(*__first1, *__first2))
1267.240 -        break;
1267.241 -      ++__first1;
1267.242 -    }
1267.243 -    while (__first1 != __last1 && !__predicate(*__first1, *__first2))
1267.244 -      ++__first1;
1267.245 -    if (__first1 == __last1)
1267.246 -      return __last1;
1267.247 -
1267.248 -    __p = __p1;
1267.249 -    _ForwardIter1 __current = __first1; 
1267.250 -    if (++__current == __last1) return __last1;
1267.251 -
1267.252 -    while (__predicate(*__current, *__p)) {
1267.253 -      if (++__p == __last2)
1267.254 -        return __first1;
1267.255 -      if (++__current == __last1)
1267.256 -        return __last1;
1267.257 -    }
1267.258 -
1267.259 -    ++__first1;
1267.260 -  }
1267.261 -  return __first1;
1267.262 -}
1267.263 -
1267.264 -// find_first_of, with and without an explicitly supplied comparison function.
1267.265 -
1267.266 -template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1267.267 -_InputIter __find_first_of(_InputIter __first1, _InputIter __last1,
1267.268 -                           _ForwardIter __first2, _ForwardIter __last2,
1267.269 -                           _BinaryPredicate __comp) {
1267.270 -  for ( ; __first1 != __last1; ++__first1) 
1267.271 -    for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter)
1267.272 -      if (__comp(*__first1, *__iter))
1267.273 -        return __first1;
1267.274 -  return __last1;
1267.275 -}
1267.276 -
1267.277 -
1267.278 -// find_end, with and without an explicitly supplied comparison function.
1267.279 -// Search [first2, last2) as a subsequence in [first1, last1), and return
1267.280 -// the *last* possible match.  Note that find_end for bidirectional iterators
1267.281 -// is much faster than for forward iterators.
1267.282 -
1267.283 -// find_end for forward iterators. 
1267.284 -
1267.285 -template <class _ForwardIter1, class _ForwardIter2,
1267.286 -  class _BinaryPredicate>
1267.287 -_ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
1267.288 -                         _ForwardIter2 __first2, _ForwardIter2 __last2,
1267.289 -                         const forward_iterator_tag &, const forward_iterator_tag &,
1267.290 -                         _BinaryPredicate __comp)
1267.291 -{
1267.292 -  if (__first2 == __last2)
1267.293 -    return __last1;
1267.294 -  else {
1267.295 -    _ForwardIter1 __result = __last1;
1267.296 -    while (1) {
1267.297 -      _ForwardIter1 __new_result
1267.298 -        = search(__first1, __last1, __first2, __last2, __comp);
1267.299 -      if (__new_result == __last1)
1267.300 -        return __result;
1267.301 -      else {
1267.302 -        __result = __new_result;
1267.303 -        __first1 = __new_result;
1267.304 -        ++__first1;
1267.305 -      }
1267.306 -    }
1267.307 -  }
1267.308 -}
1267.309 -
1267.310 -// find_end for bidirectional iterators.  Requires partial specialization.
1267.311 -#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1267.312 -
1267.313 -#if ! defined (_STLP_INTERNAL_ITERATOR_H)
1267.314 -_STLP_END_NAMESPACE
1267.315 -# include <stl/_iterator.h>
1267.316 -_STLP_BEGIN_NAMESPACE 
1267.317 -#endif
1267.318 -
1267.319 -template <class _BidirectionalIter1, class _BidirectionalIter2,
1267.320 -  class _BinaryPredicate>
1267.321 -_BidirectionalIter1
1267.322 -__find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1,
1267.323 -           _BidirectionalIter2 __first2, _BidirectionalIter2 __last2,
1267.324 -           const bidirectional_iterator_tag &, const bidirectional_iterator_tag &, 
1267.325 -           _BinaryPredicate __comp)
1267.326 -{
1267.327 -  typedef reverse_iterator<_BidirectionalIter1> _RevIter1;
1267.328 -  typedef reverse_iterator<_BidirectionalIter2> _RevIter2;
1267.329 -
1267.330 -  _RevIter1 __rlast1(__first1);
1267.331 -  _RevIter2 __rlast2(__first2);
1267.332 -  _RevIter1 __rresult = search(_RevIter1(__last1), __rlast1,
1267.333 -                               _RevIter2(__last2), __rlast2,
1267.334 -                               __comp);
1267.335 -
1267.336 -  if (__rresult == __rlast1)
1267.337 -    return __last1;
1267.338 -  else {
1267.339 -    _BidirectionalIter1 __result = __rresult.base();
1267.340 -    advance(__result, -distance(__first2, __last2));
1267.341 -    return __result;
1267.342 -  }
1267.343 -}
1267.344 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1267.345 -
1267.346 -template <class _ForwardIter1, class _ForwardIter2, 
1267.347 -  class _BinaryPredicate>
1267.348 -_ForwardIter1 
1267.349 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1267.350 -         _ForwardIter2 __first2, _ForwardIter2 __last2,
1267.351 -         _BinaryPredicate __comp)
1267.352 -{
1267.353 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1267.354 -    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1267.355 -    return __find_end(__first1, __last1, __first2, __last2,
1267.356 -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1267.357 -		      _STLP_ITERATOR_CATEGORY(__first1, _ForwardIter1),
1267.358 -		      _STLP_ITERATOR_CATEGORY(__first2, _ForwardIter2),
1267.359 -# else
1267.360 -		      forward_iterator_tag(),
1267.361 -		      forward_iterator_tag(),
1267.362 -# endif
1267.363 -		      __comp);
1267.364 -}
1267.365 -
1267.366 -template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1267.367 -_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last,
1267.368 -			   const _Tp& __val, _Compare __comp, _Distance*)
1267.369 -{
1267.370 -  _Distance __len = distance(__first, __last);
1267.371 -  _Distance __half;
1267.372 -  _ForwardIter __middle;
1267.373 -
1267.374 -  while (__len > 0) {
1267.375 -    __half = __len >> 1;
1267.376 -    __middle = __first;
1267.377 -    advance(__middle, __half);
1267.378 -    if (__comp(*__middle, __val)) {
1267.379 -      __first = __middle;
1267.380 -      ++__first;
1267.381 -      __len = __len - __half - 1;
1267.382 -    }
1267.383 -    else
1267.384 -      __len = __half;
1267.385 -  }
1267.386 -  return __first;
1267.387 -}
1267.388 -
1267.389 -_STLP_END_NAMESPACE
1267.390 -
1267.391 -#endif /* _STLP_ALGOBASE_C */
1267.392 -
1267.393 -// Local Variables:
1267.394 -// mode:C++
1267.395 -// End:
  1268.1 --- a/epoc32/include/stdapis/stlport/stl/_algobase.h	Tue Mar 16 16:12:26 2010 +0000
  1268.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1268.3 @@ -1,583 +0,0 @@
  1268.4 -/*
  1268.5 - *
  1268.6 - * Copyright (c) 1994
  1268.7 - * Hewlett-Packard Company
  1268.8 - *
  1268.9 - * Copyright (c) 1996,1997
 1268.10 - * Silicon Graphics Computer Systems, Inc.
 1268.11 - *
 1268.12 - * Copyright (c) 1997
 1268.13 - * Moscow Center for SPARC Technology
 1268.14 - *
 1268.15 - * Copyright (c) 1999 
 1268.16 - * Boris Fomitchev
 1268.17 - *
 1268.18 - * This material is provided "as is", with absolutely no warranty expressed
 1268.19 - * or implied. Any use is at your own risk.
 1268.20 - *
 1268.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1268.22 - * without fee, provided the above notices are retained on all copies.
 1268.23 - * Permission to modify the code and to distribute modified code is granted,
 1268.24 - * provided the above notices are retained, and a notice that the code was
 1268.25 - * modified is included with the above copyright notice.
 1268.26 - *
 1268.27 - */
 1268.28 -
 1268.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1268.30 - *   You should not attempt to use it directly.
 1268.31 - */
 1268.32 -
 1268.33 -
 1268.34 -#ifndef _STLP_INTERNAL_ALGOBASE_H
 1268.35 -#define _STLP_INTERNAL_ALGOBASE_H
 1268.36 -
 1268.37 -# if ! defined (_STLP_CSTDDEF)
 1268.38 -#  include <cstddef>
 1268.39 -# endif
 1268.40 -
 1268.41 -#ifndef _STLP_CSTRING
 1268.42 -# include <cstring>
 1268.43 -#endif
 1268.44 -
 1268.45 -#ifndef _STLP_CLIMITS
 1268.46 -# include <climits>
 1268.47 -#endif
 1268.48 -
 1268.49 -# if ! defined (_STLP_CSTDLIB)
 1268.50 -#  include <cstdlib>
 1268.51 -# endif
 1268.52 -
 1268.53 -# ifndef _STLP_INTERNAL_PAIR_H
 1268.54 -#  include <stl/_pair.h>
 1268.55 -# endif
 1268.56 -
 1268.57 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1268.58 -# include <stl/_iterator_base.h>
 1268.59 -#endif
 1268.60 -
 1268.61 -_STLP_BEGIN_NAMESPACE
 1268.62 -// swap and iter_swap
 1268.63 -template <class _Tp>
 1268.64 -inline void swap(_Tp& __a, _Tp& __b) {
 1268.65 -  _Tp __tmp = __a;
 1268.66 -  __a = __b;
 1268.67 -  __b = __tmp;
 1268.68 -}
 1268.69 -
 1268.70 -template <class _ForwardIter1, class _ForwardIter2>
 1268.71 -inline void iter_swap(_ForwardIter1 __i1, _ForwardIter2 __i2) {
 1268.72 -  swap(*__i1, *__i2);
 1268.73 -}
 1268.74 -
 1268.75 -//--------------------------------------------------
 1268.76 -// min and max
 1268.77 -
 1268.78 -# if !defined (__BORLANDC__) || defined (_STLP_USE_OWN_NAMESPACE)
 1268.79 -template <class _Tp>
 1268.80 -inline const _Tp& (min)(const _Tp& __a, const _Tp& __b) { return __b < __a ? __b : __a; }
 1268.81 -template <class _Tp>
 1268.82 -inline const _Tp& (max)(const _Tp& __a, const _Tp& __b) {  return  __a < __b ? __b : __a; }
 1268.83 -#endif /* __BORLANDC__ */
 1268.84 -
 1268.85 -# if defined (__BORLANDC__) && ( __BORLANDC__ < 0x530 || defined (_STLP_USE_OWN_NAMESPACE))
 1268.86 -inline unsigned long (min) (unsigned long __a, unsigned long __b) { return __b < __a ? __b : __a; }
 1268.87 -inline unsigned long (max) (unsigned long __a, unsigned long __b) {  return  __a < __b ? __b : __a; }
 1268.88 -# endif
 1268.89 -
 1268.90 -template <class _Tp, class _Compare>
 1268.91 -inline const _Tp& (min)(const _Tp& __a, const _Tp& __b, _Compare __comp) { 
 1268.92 -  return __comp(__b, __a) ? __b : __a;
 1268.93 -}
 1268.94 -
 1268.95 -template <class _Tp, class _Compare>
 1268.96 -inline const _Tp& (max)(const _Tp& __a, const _Tp& __b, _Compare __comp) {
 1268.97 -  return __comp(__a, __b) ? __b : __a;
 1268.98 -}
 1268.99 -
1268.100 -//--------------------------------------------------
1268.101 -// copy
1268.102 -
1268.103 -// All of these auxiliary functions serve two purposes.  (1) Replace
1268.104 -// calls to copy with memmove whenever possible.  (Memmove, not memcpy,
1268.105 -// because the input and output ranges are permitted to overlap.)
1268.106 -// (2) If we're using random access iterators, then write the loop as
1268.107 -// a for loop with an explicit count.
1268.108 -
1268.109 -template <class _InputIter, class _OutputIter, class _Distance>
1268.110 -inline _OutputIter __copy(_InputIter __first, _InputIter __last,
1268.111 -                          _OutputIter __result,
1268.112 -                          const input_iterator_tag &, _Distance*) {
1268.113 -  for ( ; __first != __last; ++__result, ++__first)
1268.114 -    *__result = *__first;
1268.115 -  return __result;
1268.116 -}
1268.117 -
1268.118 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 
1268.119 -template <class _InputIter, class _OutputIter, class _Distance>
1268.120 -inline _OutputIter __copy(_InputIter __first, _InputIter __last,
1268.121 -			  _OutputIter __result, const forward_iterator_tag &, _Distance* ) {
1268.122 -  for ( ; __first != __last; ++__result, ++__first)
1268.123 -    *__result = *__first;
1268.124 -  return __result;
1268.125 -}
1268.126 -
1268.127 -
1268.128 -template <class _InputIter, class _OutputIter, class _Distance>
1268.129 -inline _OutputIter __copy(_InputIter __first, _InputIter __last,
1268.130 -			  _OutputIter __result, const bidirectional_iterator_tag &, _Distance* __dis) {
1268.131 -  for ( ; __first != __last; ++__result, ++__first)
1268.132 -    *__result = *__first;
1268.133 -  return __result;
1268.134 -}
1268.135 -# endif 
1268.136 -
1268.137 -template <class _RandomAccessIter, class _OutputIter, class _Distance>
1268.138 -inline _OutputIter
1268.139 -__copy(_RandomAccessIter __first, _RandomAccessIter __last,
1268.140 -       _OutputIter __result, const random_access_iterator_tag &, _Distance*) {
1268.141 -  for (_Distance __n = __last - __first; __n > 0; --__n) {
1268.142 -    *__result = *__first;
1268.143 -    ++__first;
1268.144 -    ++__result;
1268.145 -  }
1268.146 -  return __result;
1268.147 -}
1268.148 -
1268.149 -inline void*
1268.150 -__copy_trivial(const void* __first, const void* __last, void* __result) {
1268.151 -  return (__last == __first) ? __result : 
1268.152 -    ((char*)memmove(__result, __first, ((const char*)__last - (const char*)__first))) + 
1268.153 -    ((const char*)__last - (const char*)__first);
1268.154 -}
1268.155 -
1268.156 -//--------------------------------------------------
1268.157 -// copy_backward auxiliary functions
1268.158 -
1268.159 -template <class _BidirectionalIter1, class _BidirectionalIter2, 
1268.160 -          class _Distance>
1268.161 -inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, 
1268.162 -                                           _BidirectionalIter1 __last, 
1268.163 -                                           _BidirectionalIter2 __result,
1268.164 -                                           const bidirectional_iterator_tag &,
1268.165 -                                           _Distance*) 
1268.166 -{
1268.167 -  while (__first != __last)
1268.168 -    *--__result = *--__last;
1268.169 -  return __result;
1268.170 -}
1268.171 -
1268.172 -template <class _RandomAccessIter, class _BidirectionalIter, class _Distance>
1268.173 -inline _BidirectionalIter __copy_backward(_RandomAccessIter __first, 
1268.174 -                                          _RandomAccessIter __last, 
1268.175 -                                          _BidirectionalIter __result,
1268.176 -                                          const random_access_iterator_tag &,
1268.177 -                                          _Distance*)
1268.178 -{
1268.179 -  for (_Distance __n = __last - __first; __n > 0; --__n)
1268.180 -    *--__result = *--__last;
1268.181 -  return __result;
1268.182 -}
1268.183 -
1268.184 -inline void*
1268.185 -__copy_trivial_backward(const void* __first, const void* __last, void* __result) {
1268.186 -  const ptrdiff_t _Num = (const char*)__last - (const char*)__first;
1268.187 -  return (_Num > 0) ? memmove((char*)__result - _Num, __first, _Num) : __result ;
1268.188 -}
1268.189 -
1268.190 -template <class _InputIter, class _OutputIter>
1268.191 -inline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1268.192 -  return __copy(__first, __last, __result, 
1268.193 -                _STLP_ITERATOR_CATEGORY(__first, _InputIter), 
1268.194 -                _STLP_DISTANCE_TYPE(__first, _InputIter));
1268.195 -}
1268.196 -template <class _InputIter, class _OutputIter>
1268.197 -inline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1268.198 -// we know they all pointers, so this cast is OK 
1268.199 -  //  return (_OutputIter)__copy_trivial(&(*__first), &(*__last), &(*__result));
1268.200 -  return (_OutputIter)__copy_trivial(__first, __last, __result);
1268.201 -}
1268.202 -
1268.203 -template <class _InputIter, class _OutputIter>
1268.204 -inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1268.205 -  return __copy_ptrs(__first, __last, __result, 
1268.206 -                     _IsOKToMemCpy(_STLP_VALUE_TYPE(__first, _InputIter), 
1268.207 -                                   _STLP_VALUE_TYPE(__result, _OutputIter))._Ret());
1268.208 -}
1268.209 -
1268.210 -template <class _InputIter, class _OutputIter>
1268.211 -inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1268.212 -  return __copy(__first, __last, __result, 
1268.213 -		_STLP_ITERATOR_CATEGORY(__first, _InputIter), _STLP_DISTANCE_TYPE(__first, _InputIter));
1268.214 -}
1268.215 -
1268.216 -template <class _InputIter, class _OutputIter>
1268.217 -inline _OutputIter copy(_InputIter __first, _InputIter __last, _OutputIter __result) {
1268.218 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1268.219 -    return __copy_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter> :: _Ret());
1268.220 -}
1268.221 -
1268.222 -template <class _InputIter, class _OutputIter>
1268.223 -inline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1268.224 -  return __copy_backward(__first, __last, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter), _STLP_DISTANCE_TYPE(__first, _InputIter));
1268.225 -}
1268.226 -template <class _InputIter, class _OutputIter>
1268.227 -inline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1268.228 -  return (_OutputIter)__copy_trivial_backward(__first, __last, __result);  
1268.229 -}
1268.230 -
1268.231 -template <class _InputIter, class _OutputIter>
1268.232 -inline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1268.233 -  return __copy_backward(__first, __last, __result, _STLP_ITERATOR_CATEGORY(__first,_InputIter), _STLP_DISTANCE_TYPE(__first, _InputIter));
1268.234 -}
1268.235 -
1268.236 -template <class _InputIter, class _OutputIter>
1268.237 -inline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1268.238 -  return __copy_backward_ptrs(__first, __last, __result,  
1268.239 -                              _IsOKToMemCpy(_STLP_VALUE_TYPE(__first, _InputIter), 
1268.240 -                                            _STLP_VALUE_TYPE(__result, _OutputIter))._Ret());
1268.241 -}
1268.242 -
1268.243 -template <class _InputIter, class _OutputIter>
1268.244 -inline _OutputIter copy_backward(_InputIter __first, _InputIter __last, _OutputIter __result) {
1268.245 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1268.246 -    return __copy_backward_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter> :: _Ret() );
1268.247 -}
1268.248 -
1268.249 -#if ! defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined ( _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS )
1268.250 -#define _STLP_DECLARE_COPY_TRIVIAL(_Tp)                                \
1268.251 -inline _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) \
1268.252 -{ return (_Tp*)__copy_trivial(__first, __last, __result); } \
1268.253 -inline _Tp* copy_backward(const _Tp* __first, const _Tp* __last, _Tp* __result) \
1268.254 -{ return (_Tp*)__copy_trivial_backward(__first, __last, __result); }
1268.255 -
1268.256 -_STLP_DECLARE_COPY_TRIVIAL(char)
1268.257 -# ifndef _STLP_NO_SIGNED_BUILTINS
1268.258 -_STLP_DECLARE_COPY_TRIVIAL(signed char)
1268.259 -# endif
1268.260 -_STLP_DECLARE_COPY_TRIVIAL(unsigned char)
1268.261 -_STLP_DECLARE_COPY_TRIVIAL(short)
1268.262 -_STLP_DECLARE_COPY_TRIVIAL(unsigned short)
1268.263 -_STLP_DECLARE_COPY_TRIVIAL(int)
1268.264 -_STLP_DECLARE_COPY_TRIVIAL(unsigned int)
1268.265 -_STLP_DECLARE_COPY_TRIVIAL(long)
1268.266 -_STLP_DECLARE_COPY_TRIVIAL(unsigned long)
1268.267 -#if !defined(_STLP_NO_WCHAR_T) && !defined (_STLP_WCHAR_T_IS_USHORT) 
1268.268 -_STLP_DECLARE_COPY_TRIVIAL(wchar_t)
1268.269 -#endif
1268.270 -#ifdef _STLP_LONG_LONG
1268.271 -_STLP_DECLARE_COPY_TRIVIAL(long long)
1268.272 -_STLP_DECLARE_COPY_TRIVIAL(unsigned long long)
1268.273 -#endif 
1268.274 -_STLP_DECLARE_COPY_TRIVIAL(float)
1268.275 -_STLP_DECLARE_COPY_TRIVIAL(double)
1268.276 -# ifndef _STLP_NO_LONG_DOUBLE
1268.277 -_STLP_DECLARE_COPY_TRIVIAL(long double)
1268.278 -# endif
1268.279 -#undef _STLP_DECLARE_COPY_TRIVIAL
1268.280 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1268.281 -
1268.282 -//--------------------------------------------------
1268.283 -// copy_n (not part of the C++ standard)
1268.284 -
1268.285 -template <class _InputIter, class _Size, class _OutputIter>
1268.286 -_STLP_INLINE_LOOP 
1268.287 -pair<_InputIter, _OutputIter> __copy_n(_InputIter __first, _Size __count,
1268.288 -                                       _OutputIter __result,
1268.289 -                                       const input_iterator_tag &) {
1268.290 -  for ( ; __count > 0; --__count) {
1268.291 -    *__result = *__first;
1268.292 -    ++__first;
1268.293 -    ++__result;
1268.294 -  }
1268.295 -  return pair<_InputIter, _OutputIter>(__first, __result);
1268.296 -}
1268.297 -
1268.298 -template <class _RAIter, class _Size, class _OutputIter>
1268.299 -inline pair<_RAIter, _OutputIter>
1268.300 -__copy_n(_RAIter __first, _Size __count,
1268.301 -         _OutputIter __result,
1268.302 -         const random_access_iterator_tag &) {
1268.303 -  _RAIter __last = __first + __count;
1268.304 -  return pair<_RAIter, _OutputIter>(__last, copy(__first, __last, __result));
1268.305 -}
1268.306 -
1268.307 -template <class _InputIter, class _Size, class _OutputIter>
1268.308 -inline pair<_InputIter, _OutputIter>
1268.309 -__copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
1268.310 -  _STLP_FIX_LITERAL_BUG(__first)
1268.311 -  return __copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1268.312 -}
1268.313 -
1268.314 -template <class _InputIter, class _Size, class _OutputIter>
1268.315 -inline pair<_InputIter, _OutputIter>
1268.316 -copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
1268.317 -  _STLP_FIX_LITERAL_BUG(__first)
1268.318 -  return __copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1268.319 -}
1268.320 -
1268.321 -//--------------------------------------------------
1268.322 -// fill and fill_n
1268.323 -
1268.324 -
1268.325 -template <class _ForwardIter, class _Tp>
1268.326 -_STLP_INLINE_LOOP
1268.327 -void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
1268.328 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1268.329 -  for ( ; __first != __last; ++__first)
1268.330 -    *__first = __val;
1268.331 -}
1268.332 -
1268.333 -template <class _OutputIter, class _Size, class _Tp>
1268.334 -_STLP_INLINE_LOOP
1268.335 -_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __val) {
1268.336 -  _STLP_FIX_LITERAL_BUG(__first)
1268.337 -  for ( ; __n > 0; --__n, ++__first)
1268.338 -    *__first = __val;
1268.339 -  return __first;
1268.340 -}
1268.341 -
1268.342 -
1268.343 -// Specialization: for one-byte types we can use memset.
1268.344 -
1268.345 -inline void fill(unsigned char* __first, unsigned char* __last,
1268.346 -                 const unsigned char& __val) {
1268.347 -  unsigned char __tmp = __val;
1268.348 -  memset(__first, __tmp, __last - __first);
1268.349 -}
1268.350 -# ifndef _STLP_NO_SIGNED_BUILTINS
1268.351 -inline void fill(signed char* __first, signed char* __last,
1268.352 -                 const signed char& __val) {
1268.353 -  signed char __tmp = __val;
1268.354 -  memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first);
1268.355 -}
1268.356 -# endif
1268.357 -inline void fill(char* __first, char* __last, const char& __val) {
1268.358 -  char __tmp = __val;
1268.359 -  memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first);
1268.360 -}
1268.361 -
1268.362 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1268.363 -
1268.364 -template <class _Size>
1268.365 -inline unsigned char* fill_n(unsigned char* __first, _Size __n,
1268.366 -                             const unsigned char& __val) {
1268.367 -  fill(__first, __first + __n, __val);
1268.368 -  return __first + __n;
1268.369 -}
1268.370 -
1268.371 -template <class _Size>
1268.372 -inline signed char* fill_n(char* __first, _Size __n,
1268.373 -                           const signed char& __val) {
1268.374 -  fill(__first, __first + __n, __val);
1268.375 -  return __first + __n;
1268.376 -}
1268.377 -
1268.378 -template <class _Size>
1268.379 -inline char* fill_n(char* __first, _Size __n, const char& __val) {
1268.380 -  fill(__first, __first + __n, __val);
1268.381 -  return __first + __n;
1268.382 -}
1268.383 -
1268.384 -#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1268.385 -
1268.386 -
1268.387 -//--------------------------------------------------
1268.388 -// equal and mismatch
1268.389 -
1268.390 -template <class _InputIter1, class _InputIter2>
1268.391 -_STLP_INLINE_LOOP
1268.392 -pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
1268.393 -                                        _InputIter1 __last1,
1268.394 -                                        _InputIter2 __first2) {
1268.395 -  _STLP_FIX_LITERAL_BUG(__first2)
1268.396 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1268.397 -  while (__first1 != __last1 && *__first1 == *__first2) {
1268.398 -    ++__first1;
1268.399 -    ++__first2;
1268.400 -  }
1268.401 -  return pair<_InputIter1, _InputIter2>(__first1, __first2);
1268.402 -}
1268.403 -
1268.404 -template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
1268.405 -_STLP_INLINE_LOOP
1268.406 -pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
1268.407 -                                        _InputIter1 __last1,
1268.408 -                                        _InputIter2 __first2,
1268.409 -                                        _BinaryPredicate __binary_pred) {
1268.410 -  _STLP_FIX_LITERAL_BUG(__first2)
1268.411 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1268.412 -  while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) {
1268.413 -    ++__first1;
1268.414 -    ++__first2;
1268.415 -  }
1268.416 -  return pair<_InputIter1, _InputIter2>(__first1, __first2);
1268.417 -}
1268.418 -
1268.419 -template <class _InputIter1, class _InputIter2>
1268.420 -_STLP_INLINE_LOOP
1268.421 -bool equal(_InputIter1 __first1, _InputIter1 __last1,
1268.422 -                  _InputIter2 __first2) {
1268.423 -  _STLP_FIX_LITERAL_BUG(__first1) _STLP_FIX_LITERAL_BUG(__last1)  _STLP_FIX_LITERAL_BUG(__first2)
1268.424 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1268.425 -  for ( ; __first1 != __last1; ++__first1, ++__first2)
1268.426 -    if (!(*__first1 == *__first2))
1268.427 -      return false;
1268.428 -  return true;
1268.429 -}
1268.430 -
1268.431 -template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
1268.432 -_STLP_INLINE_LOOP
1268.433 -bool equal(_InputIter1 __first1, _InputIter1 __last1,
1268.434 -                  _InputIter2 __first2, _BinaryPredicate __binary_pred) {
1268.435 -  _STLP_FIX_LITERAL_BUG(__first2)
1268.436 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1268.437 -  for ( ; __first1 != __last1; ++__first1, ++__first2)
1268.438 -    if (!__binary_pred(*__first1, *__first2))
1268.439 -      return false;
1268.440 -  return true;
1268.441 -}
1268.442 -
1268.443 -//--------------------------------------------------
1268.444 -// lexicographical_compare and lexicographical_compare_3way.
1268.445 -// (the latter is not part of the C++ standard.)
1268.446 -
1268.447 -template <class _InputIter1, class _InputIter2>
1268.448 -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
1268.449 -                             _InputIter2 __first2, _InputIter2 __last2);
1268.450 -
1268.451 -template <class _InputIter1, class _InputIter2, class _Compare>
1268.452 -bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
1268.453 -                             _InputIter2 __first2, _InputIter2 __last2,
1268.454 -                             _Compare __comp);
1268.455 -
1268.456 -inline bool 
1268.457 -lexicographical_compare(const unsigned char* __first1,
1268.458 -                        const unsigned char* __last1,
1268.459 -                        const unsigned char* __first2,
1268.460 -                        const unsigned char* __last2)
1268.461 -{
1268.462 -  const size_t __len1 = __last1 - __first1;
1268.463 -  const size_t __len2 = __last2 - __first2;
1268.464 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1268.465 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1268.466 -
1268.467 -  const int __result = memcmp(__first1, __first2, (min) (__len1, __len2));
1268.468 -  return __result != 0 ? (__result < 0) : (__len1 < __len2);
1268.469 -}
1268.470 -
1268.471 -
1268.472 -# if !(CHAR_MAX == SCHAR_MAX)
1268.473 -inline bool lexicographical_compare(const char* __first1, const char* __last1,
1268.474 -                                    const char* __first2, const char* __last2)
1268.475 -{
1268.476 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1)) 
1268.477 -  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1268.478 -
1268.479 -  return lexicographical_compare((const unsigned char*) __first1,
1268.480 -                                 (const unsigned char*) __last1,
1268.481 -                                 (const unsigned char*) __first2,
1268.482 -                                 (const unsigned char*) __last2);
1268.483 -}
1268.484 -#endif /* CHAR_MAX == SCHAR_MAX */
1268.485 -
1268.486 -template <class _InputIter1, class _InputIter2>
1268.487 -int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
1268.488 -                                   _InputIter2 __first2, _InputIter2 __last2);
1268.489 -
1268.490 -inline int
1268.491 -__lexicographical_compare_3way(const unsigned char* __first1,
1268.492 -                               const unsigned char* __last1,
1268.493 -                               const unsigned char* __first2,
1268.494 -                               const unsigned char* __last2)
1268.495 -{
1268.496 -  const ptrdiff_t __len1 = __last1 - __first1;
1268.497 -  const ptrdiff_t __len2 = __last2 - __first2;
1268.498 -  const int __result = memcmp(__first1, __first2, (min) (__len1, __len2));
1268.499 -  return __result != 0 ? __result 
1268.500 -                       : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1));
1268.501 -}
1268.502 -
1268.503 -
1268.504 -# if !(CHAR_MAX == SCHAR_MAX)
1268.505 -inline int 
1268.506 -__lexicographical_compare_3way(const char* __first1, const char* __last1,
1268.507 -                               const char* __first2, const char* __last2)
1268.508 -{
1268.509 -  return __lexicographical_compare_3way((const unsigned char*) __first1,
1268.510 -                                        (const unsigned char*) __last1,
1268.511 -                                        (const unsigned char*) __first2,
1268.512 -                                        (const unsigned char*) __last2);
1268.513 -}
1268.514 -# endif
1268.515 -
1268.516 -# ifndef _STLP_NO_EXTENSIONS
1268.517 -
1268.518 -template <class _InputIter1, class _InputIter2>
1268.519 -int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
1268.520 -                                 _InputIter2 __first2, _InputIter2 __last2);
1268.521 -
1268.522 -# endif /* EXTENSIONS */
1268.523 -
1268.524 -// count
1268.525 -template <class _InputIter, class _Tp>
1268.526 -_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter)
1268.527 -count(_InputIter __first, _InputIter __last, const _Tp& __val) {
1268.528 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1268.529 -  _STLP_DIFFERENCE_TYPE(_InputIter) __n = 0;
1268.530 -  for ( ; __first != __last; ++__first)
1268.531 -    if (*__first == __val)
1268.532 -      ++__n;
1268.533 -  return __n;
1268.534 -}
1268.535 -
1268.536 -// find and find_if. Note find may be expressed in terms of find_if if appropriate binder was available.
1268.537 -template <class _InputIter, class _Tp>
1268.538 -_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val);
1268.539 -template <class _InputIter, class _Predicate>
1268.540 -_InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred);
1268.541 -
1268.542 -// search.
1268.543 -template <class _ForwardIter1, class _ForwardIter2, class _BinaryPred>
1268.544 -_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
1268.545 -                     _ForwardIter2 __first2, _ForwardIter2 __last2, _BinaryPred  __predicate);
1268.546 -
1268.547 -// find_first_of
1268.548 -template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1268.549 -_InputIter __find_first_of(_InputIter __first1, _InputIter __last1,
1268.550 -                           _ForwardIter __first2, _ForwardIter __last2,
1268.551 -                           _BinaryPredicate __comp);
1268.552 -
1268.553 -template <class _ForwardIter1, class _ForwardIter2, 
1268.554 -          class _BinaryPredicate>
1268.555 -_ForwardIter1 
1268.556 -find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1268.557 -         _ForwardIter2 __first2, _ForwardIter2 __last2,
1268.558 -         _BinaryPredicate __comp);
1268.559 -
1268.560 -// replace
1268.561 -template <class _ForwardIter, class _Tp>
1268.562 -_STLP_INLINE_LOOP void 
1268.563 -replace(_ForwardIter __first, _ForwardIter __last,
1268.564 -        const _Tp& __old_value, const _Tp& __new_value) {
1268.565 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1268.566 -  for ( ; __first != __last; ++__first)
1268.567 -    if (*__first == __old_value)
1268.568 -      *__first = __new_value;
1268.569 -}
1268.570 -
1268.571 -template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1268.572 -_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last,
1268.573 -                              const _Tp& __val, _Compare __comp, _Distance*);
1268.574 -
1268.575 -_STLP_END_NAMESPACE
1268.576 -
1268.577 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1268.578 -#  include <stl/_algobase.c>
1268.579 -# endif
1268.580 -
1268.581 -#endif /* _STLP_INTERNAL_ALGOBASE_H */
1268.582 -
1268.583 -// Local Variables:
1268.584 -// mode:C++
1268.585 -// End:
1268.586 -
  1269.1 --- a/epoc32/include/stdapis/stlport/stl/_alloc.c	Tue Mar 16 16:12:26 2010 +0000
  1269.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1269.3 @@ -1,378 +0,0 @@
  1269.4 -/*
  1269.5 - *
  1269.6 - * Copyright (c) 1996,1997
  1269.7 - * Silicon Graphics Computer Systems, Inc.
  1269.8 - *
  1269.9 - * Copyright (c) 1997
 1269.10 - * Moscow Center for SPARC Technology
 1269.11 - *
 1269.12 - * Copyright (c) 1999 
 1269.13 - * Boris Fomitchev
 1269.14 - *
 1269.15 - * This material is provided "as is", with absolutely no warranty expressed
 1269.16 - * or implied. Any use is at your own risk.
 1269.17 - *
 1269.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1269.19 - * without fee, provided the above notices are retained on all copies.
 1269.20 - * Permission to modify the code and to distribute modified code is granted,
 1269.21 - * provided the above notices are retained, and a notice that the code was
 1269.22 - * modified is included with the above copyright notice.
 1269.23 - *
 1269.24 - */
 1269.25 -#ifndef _STLP_ALLOC_C
 1269.26 -#define _STLP_ALLOC_C
 1269.27 -
 1269.28 -#ifdef __WATCOMC__
 1269.29 -#pragma warning 13 9
 1269.30 -#pragma warning 367 9
 1269.31 -#pragma warning 368 9
 1269.32 -#endif
 1269.33 -
 1269.34 -#ifndef _STLP_INTERNAL_ALLOC_H
 1269.35 -#  include <stl/_alloc.h>
 1269.36 -#endif
 1269.37 -
 1269.38 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1269.39 -
 1269.40 -# ifdef _STLP_SGI_THREADS
 1269.41 -  // We test whether threads are in use before locking.
 1269.42 -  // Perhaps this should be moved into stl_threads.h, but that
 1269.43 -  // probably makes it harder to avoid the procedure call when
 1269.44 -  // it isn't needed.
 1269.45 -    extern "C" {
 1269.46 -      extern int __us_rsthread_malloc;
 1269.47 -    }
 1269.48 -# endif
 1269.49 -
 1269.50 -
 1269.51 -// Specialised debug form of malloc which does not provide "false"
 1269.52 -// memory leaks when run with debug CRT libraries.
 1269.53 -#if defined(_STLP_MSVC) && (_STLP_MSVC>=1020 && defined(_STLP_DEBUG_ALLOC)) && ! defined (_STLP_WINCE)
 1269.54 -#  include <crtdbg.h>
 1269.55 -inline void* __stlp_chunk_malloc(size_t __bytes) { _STLP_CHECK_NULL_ALLOC(_malloc_dbg(__bytes, _CRT_BLOCK, __FILE__, __LINE__)); }
 1269.56 -#else	// !_DEBUG
 1269.57 -# ifdef _STLP_NODE_ALLOC_USE_MALLOC
 1269.58 -#  include <cstdlib>
 1269.59 -inline void* __stlp_chunk_malloc(size_t __bytes) { _STLP_CHECK_NULL_ALLOC(_STLP_VENDOR_CSTD::malloc(__bytes)); }
 1269.60 -# else
 1269.61 -inline void* __stlp_chunk_malloc(size_t __bytes) { return _STLP_STD::__stl_new(__bytes); }
 1269.62 -# endif
 1269.63 -#endif	// !_DEBUG
 1269.64 -
 1269.65 -
 1269.66 -#define _S_FREELIST_INDEX(__bytes) ((__bytes-size_t(1))>>(int)_ALIGN_SHIFT)
 1269.67 -
 1269.68 -_STLP_BEGIN_NAMESPACE
 1269.69 -
 1269.70 -#ifndef _STLP_NO_NODE_ALLOC
 1269.71 -
 1269.72 -template <int __inst>
 1269.73 -void *  _STLP_CALL __malloc_alloc<__inst>::_S_oom_malloc(size_t __n)
 1269.74 -{
 1269.75 -  __oom_handler_type __my_malloc_handler;
 1269.76 -  void * __result;
 1269.77 -
 1269.78 -  for (;;) {
 1269.79 -    __my_malloc_handler = __oom_handler;
 1269.80 -    if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; }
 1269.81 -    (*__my_malloc_handler)();
 1269.82 -    __result = malloc(__n);
 1269.83 -    if (__result) return(__result);
 1269.84 -  }
 1269.85 -#if defined(_STLP_NEED_UNREACHABLE_RETURN)
 1269.86 -  return 0;
 1269.87 -#endif
 1269.88 -
 1269.89 -}
 1269.90 -
 1269.91 -#endif
 1269.92 -
 1269.93 -template <class _Alloc>
 1269.94 -void *  _STLP_CALL __debug_alloc<_Alloc>::allocate(size_t __n) {
 1269.95 -  size_t __real_n = __n + __extra_before_chunk() + __extra_after_chunk();
 1269.96 -  __alloc_header *__result = (__alloc_header *)__allocator_type::allocate(__real_n);
 1269.97 -  memset((char*)__result, __shred_byte, __real_n*sizeof(value_type));
 1269.98 -  __result->__magic = __magic;
 1269.99 -  __result->__type_size = sizeof(value_type);
1269.100 -  __result->_M_size = (_STLP_UINT32_T)__n;
1269.101 -  return ((char*)__result) + (long)__extra_before;
1269.102 -}
1269.103 -
1269.104 -template <class _Alloc>
1269.105 -void  _STLP_CALL
1269.106 -__debug_alloc<_Alloc>::deallocate(void *__p, size_t __n) {
1269.107 -  __alloc_header * __real_p = (__alloc_header*)((char *)__p -(long)__extra_before);
1269.108 -  // check integrity
1269.109 -  _STLP_VERBOSE_ASSERT(__real_p->__magic != __deleted_magic, _StlMsg_DBA_DELETED_TWICE)
1269.110 -  _STLP_VERBOSE_ASSERT(__real_p->__magic == __magic, _StlMsg_DBA_NEVER_ALLOCATED)
1269.111 -  _STLP_VERBOSE_ASSERT(__real_p->__type_size == 1,_StlMsg_DBA_TYPE_MISMATCH)
1269.112 -  _STLP_VERBOSE_ASSERT(__real_p->_M_size == __n, _StlMsg_DBA_SIZE_MISMATCH)
1269.113 -  // check pads on both sides
1269.114 -  unsigned char* __tmp;
1269.115 -  for (__tmp= (unsigned char*)(__real_p+1); __tmp < (unsigned char*)__p; __tmp++) {  
1269.116 -    _STLP_VERBOSE_ASSERT(*__tmp==__shred_byte, _StlMsg_DBA_UNDERRUN)
1269.117 -      }
1269.118 -  
1269.119 -  size_t __real_n= __n + __extra_before_chunk() + __extra_after_chunk();
1269.120 -  
1269.121 -  for (__tmp= ((unsigned char*)__p)+__n*sizeof(value_type); 
1269.122 -       __tmp < ((unsigned char*)__real_p)+__real_n ; __tmp++) {
1269.123 -    _STLP_VERBOSE_ASSERT(*__tmp==__shred_byte, _StlMsg_DBA_OVERRUN)
1269.124 -      }
1269.125 -  
1269.126 -  // that may be unfortunate, just in case
1269.127 -  __real_p->__magic=__deleted_magic;
1269.128 -  memset((char*)__p, __shred_byte, __n*sizeof(value_type));
1269.129 -  __allocator_type::deallocate(__real_p, __real_n);
1269.130 -}
1269.131 -
1269.132 -#ifndef _STLP_NO_NODE_ALLOC
1269.133 -
1269.134 -// # ifdef _STLP_THREADS
1269.135 -
1269.136 -template <bool __threads, int __inst>
1269.137 -class _Node_Alloc_Lock {
1269.138 -public:
1269.139 -  _Node_Alloc_Lock() { 
1269.140 -    
1269.141 -#  ifdef _STLP_SGI_THREADS
1269.142 -    if (__threads && __us_rsthread_malloc)
1269.143 -#  else /* !_STLP_SGI_THREADS */
1269.144 -      if (__threads) 
1269.145 -#  endif
1269.146 -    	_S_lock._M_acquire_lock(); 
1269.147 -  }
1269.148 -  
1269.149 -  ~_Node_Alloc_Lock() {
1269.150 -#  ifdef _STLP_SGI_THREADS
1269.151 -    if (__threads && __us_rsthread_malloc)
1269.152 -#  else /* !_STLP_SGI_THREADS */
1269.153 -      if (__threads)
1269.154 -#  endif
1269.155 -        _S_lock._M_release_lock(); 
1269.156 -  }
1269.157 -  
1269.158 -  static _STLP_STATIC_MUTEX _S_lock;
1269.159 -};
1269.160 -
1269.161 -// # endif  /* _STLP_THREADS */
1269.162 -
1269.163 -
1269.164 -template <bool __threads, int __inst>
1269.165 -void* _STLP_CALL
1269.166 -__node_alloc<__threads, __inst>::_M_allocate(size_t __n) {
1269.167 -  void*  __r;
1269.168 -  _Obj * _STLP_VOLATILE * __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n);
1269.169 -  // #       ifdef _STLP_THREADS
1269.170 -  /*REFERENCED*/
1269.171 -  _Node_Alloc_Lock<__threads, __inst> __lock_instance;
1269.172 -  // #       endif
1269.173 -  // Acquire the lock here with a constructor call.
1269.174 -  // This ensures that it is released in exit or during stack
1269.175 -  // unwinding.
1269.176 -  if ( (__r  = *__my_free_list) != 0 ) {
1269.177 -    *__my_free_list = ((_Obj*)__r) -> _M_free_list_link;
1269.178 -  } else {
1269.179 -    __r = _S_refill(__n);
1269.180 -  }
1269.181 -  // lock is released here
1269.182 -  return __r;
1269.183 -}
1269.184 -
1269.185 -template <bool __threads, int __inst>
1269.186 -void _STLP_CALL
1269.187 -__node_alloc<__threads, __inst>::_M_deallocate(void *__p, size_t __n) {
1269.188 -  _Obj * _STLP_VOLATILE * __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n);
1269.189 -  // #       ifdef _STLP_THREADS
1269.190 -  /*REFERENCED*/
1269.191 -  _Node_Alloc_Lock<__threads, __inst> __lock_instance;
1269.192 -  // #       endif /* _STLP_THREADS */
1269.193 -  // acquire lock
1269.194 -  ((_Obj *)__p) -> _M_free_list_link = *__my_free_list;
1269.195 -  *__my_free_list = (_Obj *)__p;
1269.196 -  // lock is released here
1269.197 -}
1269.198 -
1269.199 -/* We allocate memory in large chunks in order to avoid fragmenting     */
1269.200 -/* the malloc heap too much.                                            */
1269.201 -/* We assume that size is properly aligned.                             */
1269.202 -/* We hold the allocation lock.                                         */
1269.203 -template <bool __threads, int __inst>
1269.204 -char* _STLP_CALL
1269.205 -__node_alloc<__threads, __inst>::_S_chunk_alloc(size_t _p_size, 
1269.206 -						int& __nobjs)
1269.207 -{
1269.208 -  char* __result;
1269.209 -  size_t __total_bytes = _p_size * __nobjs;
1269.210 -  size_t __bytes_left = _S_end_free - _S_start_free;
1269.211 -
1269.212 -  if (__bytes_left >= __total_bytes) {
1269.213 -    __result = _S_start_free;
1269.214 -    _S_start_free += __total_bytes;
1269.215 -    return(__result);
1269.216 -  } else if (__bytes_left >= _p_size) {
1269.217 -    __nobjs = (int)(__bytes_left/_p_size);
1269.218 -    __total_bytes = _p_size * __nobjs;
1269.219 -    __result = _S_start_free;
1269.220 -    _S_start_free += __total_bytes;
1269.221 -    return(__result);
1269.222 -  } else {
1269.223 -    size_t __bytes_to_get = 
1269.224 -      2 * __total_bytes + _S_round_up(_S_heap_size >> 4);
1269.225 -    // Try to make use of the left-over piece.
1269.226 -    if (__bytes_left > 0) {
1269.227 -      _Obj* _STLP_VOLATILE* __my_free_list =
1269.228 -	_S_free_list + _S_FREELIST_INDEX(__bytes_left);
1269.229 -
1269.230 -      ((_Obj*)_S_start_free) -> _M_free_list_link = *__my_free_list;
1269.231 -      *__my_free_list = (_Obj*)_S_start_free;
1269.232 -    }
1269.233 -    _S_start_free = (char*)__stlp_chunk_malloc(__bytes_to_get);
1269.234 -    if (0 == _S_start_free) {
1269.235 -      size_t __i;
1269.236 -      _Obj* _STLP_VOLATILE* __my_free_list;
1269.237 -      _Obj* __p;
1269.238 -      // Try to make do with what we have.  That can't
1269.239 -      // hurt.  We do not try smaller requests, since that tends
1269.240 -      // to result in disaster on multi-process machines.
1269.241 -      for (__i = _p_size; __i <= (size_t)_MAX_BYTES; __i += (size_t)_ALIGN) {
1269.242 -	__my_free_list = _S_free_list + _S_FREELIST_INDEX(__i);
1269.243 -	__p = *__my_free_list;
1269.244 -	if (0 != __p) {
1269.245 -	  *__my_free_list = __p -> _M_free_list_link;
1269.246 -	  _S_start_free = (char*)__p;
1269.247 -	  _S_end_free = _S_start_free + __i;
1269.248 -	  return(_S_chunk_alloc(_p_size, __nobjs));
1269.249 -	  // Any leftover piece will eventually make it to the
1269.250 -	  // right free list.
1269.251 -	}
1269.252 -      }
1269.253 -      _S_end_free = 0;	// In case of exception.
1269.254 -      _S_start_free = (char*)__stlp_chunk_malloc(__bytes_to_get);
1269.255 -    /*
1269.256 -      (char*)malloc_alloc::allocate(__bytes_to_get);
1269.257 -      */
1269.258 -
1269.259 -      // This should either throw an
1269.260 -      // exception or remedy the situation.  Thus we assume it
1269.261 -      // succeeded.
1269.262 -    }
1269.263 -    _S_heap_size += __bytes_to_get;
1269.264 -    _S_end_free = _S_start_free + __bytes_to_get;
1269.265 -    return(_S_chunk_alloc(_p_size, __nobjs));
1269.266 -  }
1269.267 -}
1269.268 -
1269.269 -
1269.270 -/* Returns an object of size __n, and optionally adds to size __n free list.*/
1269.271 -/* We assume that __n is properly aligned.                                */
1269.272 -/* We hold the allocation lock.                                         */
1269.273 -template <bool __threads, int __inst>
1269.274 -void* _STLP_CALL
1269.275 -__node_alloc<__threads, __inst>::_S_refill(size_t __n)
1269.276 -{
1269.277 -  int __nobjs = 20;
1269.278 -  __n = _S_round_up(__n);
1269.279 -  char* __chunk = _S_chunk_alloc(__n, __nobjs);
1269.280 -  _Obj* _STLP_VOLATILE* __my_free_list;
1269.281 -  _Obj* __result;
1269.282 -  _Obj* __current_obj;
1269.283 -  _Obj* __next_obj;
1269.284 -  int __i;
1269.285 -
1269.286 -  if (1 == __nobjs) return(__chunk);
1269.287 -  __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n);
1269.288 -
1269.289 -  /* Build free list in chunk */
1269.290 -  __result = (_Obj*)__chunk;
1269.291 -  *__my_free_list = __next_obj = (_Obj*)(__chunk + __n);
1269.292 -  for (__i = 1; ; __i++) {
1269.293 -    __current_obj = __next_obj;
1269.294 -    __next_obj = (_Obj*)((char*)__next_obj + __n);
1269.295 -    if (__nobjs - 1 == __i) {
1269.296 -      __current_obj -> _M_free_list_link = 0;
1269.297 -      break;
1269.298 -    } else {
1269.299 -      __current_obj -> _M_free_list_link = __next_obj;
1269.300 -    }
1269.301 -  }
1269.302 -  return(__result);
1269.303 -}
1269.304 -
1269.305 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1269.306 -// malloc_alloc out-of-memory handling
1269.307 -template <int __inst>
1269.308 -__oom_handler_type __malloc_alloc<__inst>::__oom_handler=(__oom_handler_type)0 ;
1269.309 -
1269.310 -#ifdef _STLP_THREADS
1269.311 -    template <bool __threads, int __inst>
1269.312 -    _STLP_STATIC_MUTEX
1269.313 -    _Node_Alloc_Lock<__threads, __inst>::_S_lock _STLP_MUTEX_INITIALIZER;
1269.314 -#endif
1269.315 -
1269.316 -template <bool __threads, int __inst>
1269.317 -_Node_alloc_obj * _STLP_VOLATILE
1269.318 -__node_alloc<__threads, __inst>::_S_free_list[_STLP_NFREELISTS]
1269.319 -= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1269.320 -// The 16 zeros are necessary to make version 4.1 of the SunPro
1269.321 -// compiler happy.  Otherwise it appears to allocate too little
1269.322 -// space for the array.
1269.323 -
1269.324 -template <bool __threads, int __inst>
1269.325 -char *__node_alloc<__threads, __inst>::_S_start_free = 0;
1269.326 -
1269.327 -template <bool __threads, int __inst>
1269.328 -char *__node_alloc<__threads, __inst>::_S_end_free = 0;
1269.329 -
1269.330 -template <bool __threads, int __inst>
1269.331 -size_t __node_alloc<__threads, __inst>::_S_heap_size = 0;
1269.332 -
1269.333 -
1269.334 -# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1269.335 -
1269.336 -__DECLARE_INSTANCE(__oom_handler_type, __malloc_alloc<0>::__oom_handler, =0);
1269.337 -
1269.338 -# define _STLP_ALLOC_NOTHREADS __node_alloc<false, 0>
1269.339 -# define _STLP_ALLOC_THREADS   __node_alloc<true, 0>
1269.340 -# define _STLP_ALLOC_NOTHREADS_LOCK _Node_Alloc_Lock<false, 0>
1269.341 -# define _STLP_ALLOC_THREADS_LOCK   _Node_Alloc_Lock<true, 0>
1269.342 -
1269.343 -__DECLARE_INSTANCE(char *, _STLP_ALLOC_NOTHREADS::_S_start_free,=0);
1269.344 -__DECLARE_INSTANCE(char *, _STLP_ALLOC_NOTHREADS::_S_end_free,=0);
1269.345 -__DECLARE_INSTANCE(size_t, _STLP_ALLOC_NOTHREADS::_S_heap_size,=0);
1269.346 -__DECLARE_INSTANCE(_Node_alloc_obj * _STLP_VOLATILE,
1269.347 -                   _STLP_ALLOC_NOTHREADS::_S_free_list[_STLP_NFREELISTS],
1269.348 -                   ={0});
1269.349 -__DECLARE_INSTANCE(char *, _STLP_ALLOC_THREADS::_S_start_free,=0);
1269.350 -__DECLARE_INSTANCE(char *, _STLP_ALLOC_THREADS::_S_end_free,=0);
1269.351 -__DECLARE_INSTANCE(size_t, _STLP_ALLOC_THREADS::_S_heap_size,=0);
1269.352 -__DECLARE_INSTANCE(_Node_alloc_obj * _STLP_VOLATILE,
1269.353 -                   _STLP_ALLOC_THREADS::_S_free_list[_STLP_NFREELISTS],
1269.354 -                   ={0});
1269.355 -// #   ifdef _STLP_THREADS
1269.356 -__DECLARE_INSTANCE(_STLP_STATIC_MUTEX,
1269.357 -                   _STLP_ALLOC_NOTHREADS_LOCK::_S_lock,
1269.358 -                   _STLP_MUTEX_INITIALIZER);
1269.359 -__DECLARE_INSTANCE(_STLP_STATIC_MUTEX,
1269.360 -                   _STLP_ALLOC_THREADS_LOCK::_S_lock,
1269.361 -                   _STLP_MUTEX_INITIALIZER);
1269.362 -// #   endif
1269.363 -
1269.364 -# undef _STLP_ALLOC_THREADS
1269.365 -# undef _STLP_ALLOC_NOTHREADS
1269.366 -
1269.367 -#  endif /* _STLP_STATIC_TEMPLATE_DATA */
1269.368 -
1269.369 -#endif
1269.370 -
1269.371 -_STLP_END_NAMESPACE
1269.372 -
1269.373 -# undef _S_FREELIST_INDEX
1269.374 -
1269.375 -# endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */
1269.376 -
1269.377 -#endif /*  _STLP_ALLOC_C */
1269.378 -
1269.379 -// Local Variables:
1269.380 -// mode:C++
1269.381 -// End:
  1270.1 --- a/epoc32/include/stdapis/stlport/stl/_alloc.h	Tue Mar 16 16:12:26 2010 +0000
  1270.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1270.3 @@ -1,543 +0,0 @@
  1270.4 -/*
  1270.5 - *
  1270.6 - * Copyright (c) 1996,1997
  1270.7 - * Silicon Graphics Computer Systems, Inc.
  1270.8 - *
  1270.9 - * Copyright (c) 1997
 1270.10 - * Moscow Center for SPARC Technology
 1270.11 - *
 1270.12 - * Copyright (c) 1999 
 1270.13 - * Boris Fomitchev
 1270.14 - *
 1270.15 - * This material is provided "as is", with absolutely no warranty expressed
 1270.16 - * or implied. Any use is at your own risk.
 1270.17 - *
 1270.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1270.19 - * without fee, provided the above notices are retained on all copies.
 1270.20 - * Permission to modify the code and to distribute modified code is granted,
 1270.21 - * provided the above notices are retained, and a notice that the code was
 1270.22 - * modified is included with the above copyright notice.
 1270.23 - *
 1270.24 - */
 1270.25 -
 1270.26 -/* NOTE: This is an internal header file, included by other STL headers.
 1270.27 - *   You should not attempt to use it directly.
 1270.28 - */
 1270.29 -
 1270.30 -#ifndef _STLP_INTERNAL_ALLOC_H
 1270.31 -#define _STLP_INTERNAL_ALLOC_H
 1270.32 -
 1270.33 -# ifndef _STLP_CSTDDEF
 1270.34 -#  include <cstddef>
 1270.35 -# endif
 1270.36 -
 1270.37 -#if !defined (_STLP_DEBUG_H) && (defined  (_STLP_DEBUG) || defined (_STLP_ASSERTIONS))
 1270.38 -# include <stl/debug/_debug.h>
 1270.39 -#endif
 1270.40 -
 1270.41 -# ifndef _STLP_CSTDLIB
 1270.42 -#  include <cstdlib>
 1270.43 -# endif
 1270.44 -# ifndef _STLP_CSTRING
 1270.45 -#  include <cstring>
 1270.46 -# endif
 1270.47 -
 1270.48 -# ifndef __THROW_BAD_ALLOC
 1270.49 -#  if !defined(_STLP_USE_EXCEPTIONS)
 1270.50 -#   if !defined (_STLP_CSTDIO)
 1270.51 -#    include <cstdio>
 1270.52 -#   endif
 1270.53 -#   if !defined (_STLP_CSTDLIB)
 1270.54 -#    include <cstdlib>
 1270.55 -#   endif
 1270.56 -#   define __THROW_BAD_ALLOC puts("out of memory\n"); exit(1)
 1270.57 -#  else /* !defined(_STLP_USE_EXCEPTIONS) */
 1270.58 -#   define __THROW_BAD_ALLOC throw _STLP_STD::bad_alloc()
 1270.59 -#  endif /* !defined(_STLP_USE_EXCEPTIONS) */
 1270.60 -# endif   /* __THROW_BAD_ALLOC */
 1270.61 -
 1270.62 -# ifndef _STLP_INTERNAL_NEW_HEADER
 1270.63 -#  include <stl/_new.h>
 1270.64 -# endif
 1270.65 -
 1270.66 -// #if ! defined (__SYMBIAN32__)
 1270.67 -#if /* defined (_STLP_THREADS) && */ ! defined (_STLP_INTERNAL_THREADS_H)
 1270.68 -# include <stl/_threads.h>
 1270.69 -// #endif
 1270.70 -#endif
 1270.71 -
 1270.72 -#ifndef _STLP_INTERNAL_CONSTRUCT_H
 1270.73 -# include <stl/_construct.h>
 1270.74 -#endif
 1270.75 -
 1270.76 -#ifndef __ALLOC
 1270.77 -#   define __ALLOC __sgi_alloc
 1270.78 -#endif
 1270.79 -
 1270.80 -# ifndef __RESTRICT
 1270.81 -#  define __RESTRICT
 1270.82 -# endif
 1270.83 -
 1270.84 -#if defined (_STLP_THREADS) || (defined(_STLP_OWN_IOSTREAMS) && ! defined (_STLP_NO_THREADS) && ! defined (_NOTHREADS) )
 1270.85 -# define _STLP_NODE_ALLOCATOR_THREADS true
 1270.86 -#else
 1270.87 -# define _STLP_NODE_ALLOCATOR_THREADS false
 1270.88 -#endif
 1270.89 -
 1270.90 -_STLP_BEGIN_NAMESPACE
 1270.91 -
 1270.92 -# if defined (_STLP_USE_RAW_SGI_ALLOCATORS)
 1270.93 -template <class _Tp, class _Alloc> struct __allocator;
 1270.94 -# endif
 1270.95 -
 1270.96 -#ifndef _STLP_NO_NODE_ALLOC
 1270.97 -
 1270.98 -// Malloc-based allocator.  Typically slower than default alloc below.
 1270.99 -// Typically thread-safe and more storage efficient.
1270.100 -
1270.101 -typedef void (* __oom_handler_type)();
1270.102 -
1270.103 -template <int __inst>
1270.104 -class __malloc_alloc {
1270.105 -private:
1270.106 -  static void* _STLP_CALL _S_oom_malloc(size_t);
1270.107 -  static __oom_handler_type __oom_handler;
1270.108 -public:
1270.109 -  // this one is needed for proper simple_alloc wrapping
1270.110 -  typedef char value_type;
1270.111 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1270.112 -  template <class _Tp1> struct rebind {
1270.113 -    typedef __allocator<_Tp1, __malloc_alloc<__inst> > other;
1270.114 -  };
1270.115 -# endif
1270.116 -  static void* _STLP_CALL allocate(size_t __n)    {
1270.117 -    void* __result = malloc(__n);
1270.118 -    if (0 == __result) __result = _S_oom_malloc(__n);
1270.119 -    return __result;
1270.120 -  }
1270.121 -  static void _STLP_CALL deallocate(void* __p, size_t /* __n */) { free((char*)__p); }
1270.122 -  static __oom_handler_type _STLP_CALL set_malloc_handler(__oom_handler_type __f) {
1270.123 -    __oom_handler_type __old = __oom_handler;
1270.124 -    __oom_handler = __f;
1270.125 -    return(__old);
1270.126 -  }
1270.127 -};
1270.128 -
1270.129 -# endif
1270.130 -
1270.131 -// New-based allocator.  Typically slower than default alloc below.
1270.132 -// Typically thread-safe and more storage efficient.
1270.133 -class _STLP_CLASS_DECLSPEC __new_alloc {
1270.134 -public:
1270.135 -  // this one is needed for proper simple_alloc wrapping
1270.136 -  typedef char value_type;
1270.137 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) &&  defined(_STLP_USE_RAW_SGI_ALLOCATORS)
1270.138 -  template <class _Tp1> struct rebind {
1270.139 -    typedef __allocator<_Tp1, __new_alloc > other;
1270.140 -  };
1270.141 -# endif
1270.142 -  static void* _STLP_CALL  allocate(size_t __n) {  
1270.143 -    return __stl_new(__n); 
1270.144 -  }
1270.145 -  static void _STLP_CALL deallocate(void* __p, size_t) { __stl_delete(__p); }
1270.146 -};
1270.147 -
1270.148 -
1270.149 -// Allocator adaptor to check size arguments for debugging.
1270.150 -// Reports errors using assert.  Checking can be disabled with
1270.151 -// NDEBUG, but it's far better to just use the underlying allocator
1270.152 -// instead when no checking is desired.
1270.153 -// There is some evidence that this can confuse Purify.
1270.154 -// This adaptor can only be applied to raw allocators
1270.155 -
1270.156 -template <class _Alloc>
1270.157 -class __debug_alloc : public _Alloc {
1270.158 -public:
1270.159 -  typedef _Alloc __allocator_type;
1270.160 -  typedef typename _Alloc::value_type value_type;
1270.161 -private:
1270.162 -  struct __alloc_header {
1270.163 -    size_t __magic: 16;
1270.164 -    size_t __type_size:16;
1270.165 -    _STLP_UINT32_T _M_size;
1270.166 -  }; // that is 8 bytes for sure
1270.167 -  // Sunpro CC has bug on enums, so extra_before/after set explicitly
1270.168 -  enum { __pad=8, __magic=0xdeba, __deleted_magic = 0xdebd,
1270.169 -	 __shred_byte= _STLP_SHRED_BYTE
1270.170 -  };
1270.171 -
1270.172 -  enum { __extra_before = 16, __extra_after = 8 };
1270.173 -  // Size of space used to store size.  Note
1270.174 -  // that this must be large enough to preserve
1270.175 -  // alignment.
1270.176 -  static size_t _STLP_CALL __extra_before_chunk() {
1270.177 -    return (long)__extra_before/sizeof(value_type)+
1270.178 -      (size_t)((long)__extra_before%sizeof(value_type)>0);
1270.179 -  }
1270.180 -  static size_t _STLP_CALL __extra_after_chunk() {
1270.181 -    return (long)__extra_after/sizeof(value_type)+
1270.182 -      (size_t)((long)__extra_after%sizeof(value_type)>0);
1270.183 -  }
1270.184 -public:
1270.185 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1270.186 -  template <class _Tp1> struct rebind {
1270.187 -    typedef __allocator< _Tp1, __debug_alloc<_Alloc> > other;
1270.188 -  };
1270.189 -# endif
1270.190 -  __debug_alloc() {}
1270.191 -  ~__debug_alloc() {}
1270.192 -  static void * _STLP_CALL allocate(size_t);
1270.193 -  static void _STLP_CALL deallocate(void *, size_t);
1270.194 -};
1270.195 -
1270.196 -# if defined(__OS400__)
1270.197 -enum {_ALIGN = 16, _ALIGN_SHIFT=4, _MAX_BYTES = 256};
1270.198 -#  define  _STLP_NFREELISTS 16
1270.199 -# else
1270.200 -enum {_ALIGN = 8, _ALIGN_SHIFT=3, _MAX_BYTES = 128};
1270.201 -#  define  _STLP_NFREELISTS 16
1270.202 -# endif /* __OS400__ */
1270.203 -
1270.204 -#ifndef _STLP_NO_NODE_ALLOC
1270.205 -
1270.206 -// Default node allocator.
1270.207 -// With a reasonable compiler, this should be roughly as fast as the
1270.208 -// original STL class-specific allocators, but with less fragmentation.
1270.209 -// Default_alloc_template parameters are experimental and MAY
1270.210 -// DISAPPEAR in the future.  Clients should just use alloc for now.
1270.211 -//
1270.212 -// Important implementation properties:
1270.213 -// 1. If the client request an object of size > _MAX_BYTES, the resulting
1270.214 -//    object will be obtained directly from malloc.
1270.215 -// 2. In all other cases, we allocate an object of size exactly
1270.216 -//    _S_round_up(requested_size).  Thus the client has enough size
1270.217 -//    information that we can return the object to the proper free list
1270.218 -//    without permanently losing part of the object.
1270.219 -//
1270.220 -
1270.221 -// The first template parameter specifies whether more than one thread
1270.222 -// may use this allocator.  It is safe to allocate an object from
1270.223 -// one instance of a default_alloc and deallocate it with another
1270.224 -// one.  This effectively transfers its ownership to the second one.
1270.225 -// This may have undesirable effects on reference locality.
1270.226 -// The second parameter is unreferenced and serves only to allow the
1270.227 -// creation of multiple default_alloc instances.
1270.228 -
1270.229 -class _STLP_CLASS_DECLSPEC _Node_alloc_obj {
1270.230 -public:
1270.231 -    _Node_alloc_obj * _M_free_list_link;
1270.232 -};
1270.233 -
1270.234 -template <bool __threads, int __inst>
1270.235 -class __node_alloc {
1270.236 -  _STLP_PRIVATE:
1270.237 -  static inline size_t _STLP_CALL _S_round_up(size_t __bytes) { return (((__bytes) + (size_t)_ALIGN-1) & ~((size_t)_ALIGN - 1)); }
1270.238 -  typedef _Node_alloc_obj _Obj;
1270.239 -private:
1270.240 -  // Returns an object of size __n, and optionally adds to size __n free list.
1270.241 -  static void*  _STLP_CALL _S_refill(size_t __n);
1270.242 -  // Allocates a chunk for nobjs of size size.  nobjs may be reduced
1270.243 -  // if it is inconvenient to allocate the requested number.
1270.244 -  static char*  _STLP_CALL _S_chunk_alloc(size_t __p_size, int& __nobjs);
1270.245 -  // Chunk allocation state.
1270.246 -  static _Node_alloc_obj * _STLP_VOLATILE _S_free_list[_STLP_NFREELISTS]; 
1270.247 -  static char* _S_start_free;
1270.248 -  static char* _S_end_free;
1270.249 -  static size_t _S_heap_size;
1270.250 -  static void * _STLP_CALL _M_allocate(size_t __n);
1270.251 -  /* __p may not be 0 */
1270.252 -  static void _STLP_CALL _M_deallocate(void *__p, size_t __n);
1270.253 -public:
1270.254 -  // this one is needed for proper simple_alloc wrapping
1270.255 -  typedef char value_type;
1270.256 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1270.257 -  template <class _Tp1> struct rebind {
1270.258 -    typedef __allocator<_Tp1, __node_alloc<__threads, __inst> > other;
1270.259 -  };
1270.260 -# endif
1270.261 -  /* __n must be > 0      */
1270.262 -  static void * _STLP_CALL allocate(size_t __n) { 
1270.263 -return (__n > (size_t)_MAX_BYTES) ?  __stl_new(__n) : _M_allocate(__n); }
1270.264 -  /* __p may not be 0 */
1270.265 -  static void _STLP_CALL deallocate(void *__p, size_t __n) { 
1270.266 -if (__n > (size_t)_MAX_BYTES) __stl_delete(__p); else _M_deallocate(__p, __n); }
1270.267 -};
1270.268 -
1270.269 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1270.270 -_STLP_EXPORT_TEMPLATE_CLASS __malloc_alloc<0>;
1270.271 -_STLP_EXPORT_TEMPLATE_CLASS __node_alloc<_STLP_NODE_ALLOCATOR_THREADS, 0>;
1270.272 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1270.273 -typedef __node_alloc<_STLP_NODE_ALLOCATOR_THREADS, 0> _Node_alloc;
1270.274 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1270.275 -_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<_Node_alloc>;
1270.276 -_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__new_alloc>;
1270.277 -_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__malloc_alloc<0> >;
1270.278 -# endif
1270.279 -
1270.280 -#endif
1270.281 -
1270.282 -# if defined (_STLP_USE_PERTHREAD_ALLOC)
1270.283 -
1270.284 -_STLP_END_NAMESPACE
1270.285 -// include additional header here
1270.286 -# include <stl/_pthread_alloc.h>
1270.287 -_STLP_BEGIN_NAMESPACE
1270.288 -
1270.289 -#  if defined ( _STLP_DEBUG_ALLOC )
1270.290 -typedef __debug_alloc<__pthread_alloc> __sgi_alloc;
1270.291 -#  else
1270.292 -typedef __pthread_alloc __sgi_alloc;
1270.293 -#  endif /* _STLP_DEBUG_ALLOC */
1270.294 -
1270.295 -typedef __pthread_alloc __single_client_alloc;
1270.296 -typedef __pthread_alloc __multithreaded_alloc;
1270.297 -
1270.298 -# else
1270.299 -
1270.300 -# if defined ( _STLP_USE_NEWALLOC )
1270.301 -
1270.302 -#  if defined ( _STLP_DEBUG_ALLOC )
1270.303 -typedef __debug_alloc<__new_alloc> __sgi_alloc;
1270.304 -#  else
1270.305 -typedef __new_alloc __sgi_alloc;
1270.306 -#  endif /* _STLP_DEBUG_ALLOC */
1270.307 -
1270.308 -typedef __new_alloc __single_client_alloc;
1270.309 -typedef __new_alloc __multithreaded_alloc;
1270.310 -
1270.311 -#  elif defined (_STLP_USE_MALLOC)
1270.312 -
1270.313 -#   if defined ( _STLP_DEBUG_ALLOC )
1270.314 -typedef __debug_alloc<__malloc_alloc<0> > __sgi_alloc;
1270.315 -#   else
1270.316 -typedef __malloc_alloc<0> __sgi_alloc;
1270.317 -#   endif /* _STLP_DEBUG_ALLOC */
1270.318 -
1270.319 -typedef __malloc_alloc<0> __single_client_alloc;
1270.320 -typedef __malloc_alloc<0> __multithreaded_alloc;
1270.321 -
1270.322 -# else
1270.323 -
1270.324 -#   if defined ( _STLP_DEBUG_ALLOC )
1270.325 -typedef __debug_alloc<_Node_alloc> __sgi_alloc;
1270.326 -#   else
1270.327 -typedef _Node_alloc __sgi_alloc;
1270.328 -#   endif
1270.329 -
1270.330 -typedef __node_alloc<false, 0> __single_client_alloc;
1270.331 -typedef __node_alloc<true, 0>  __multithreaded_alloc;
1270.332 -
1270.333 -#  endif /* _STLP_USE_NEWALLOC */
1270.334 -# endif /* PTHREAD_ALLOC */
1270.335 -
1270.336 -// This implements allocators as specified in the C++ standard.  
1270.337 -//
1270.338 -// Note that standard-conforming allocators use many language features
1270.339 -// that are not yet widely implemented.  In particular, they rely on
1270.340 -// member templates, partial specialization, partial ordering of function
1270.341 -// templates, the typename keyword, and the use of the template keyword
1270.342 -// to refer to a template member of a dependent type.
1270.343 -
1270.344 -template <class _Tp>
1270.345 -class allocator {
1270.346 -public:
1270.347 -
1270.348 -  typedef _Tp        value_type;
1270.349 -  typedef value_type *       pointer;
1270.350 -  typedef const _Tp* const_pointer;
1270.351 -  typedef _Tp&       reference;
1270.352 -  typedef const _Tp& const_reference;
1270.353 -  typedef size_t     size_type;
1270.354 -  typedef ptrdiff_t  difference_type;
1270.355 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1270.356 -  template <class _Tp1> struct rebind {
1270.357 -    typedef allocator<_Tp1> other;
1270.358 -  };
1270.359 -# endif
1270.360 -  allocator() _STLP_NOTHROW {}
1270.361 - # if defined (_STLP_MEMBER_TEMPLATES)
1270.362 -  template <class _Tp1> allocator(const allocator<_Tp1>&) _STLP_NOTHROW {}
1270.363 - # endif    
1270.364 -  allocator(const allocator<_Tp>&) _STLP_NOTHROW {}
1270.365 -  ~allocator() _STLP_NOTHROW {}
1270.366 -  pointer address(reference __x) const { return &__x; }
1270.367 -  const_pointer address(const_reference __x) const { return &__x; }
1270.368 -  // __n is permitted to be 0.  The C++ standard says nothing about what the return value is when __n == 0.
1270.369 -  _Tp* allocate(size_type __n, const void* = 0) { 
1270.370 -    return __n != 0 ? __REINTERPRET_CAST(value_type*,__sgi_alloc::allocate(__n * sizeof(value_type))) : 0;
1270.371 -  }
1270.372 -  // __p is permitted to be a null pointer, only if n==0.
1270.373 -  void deallocate(pointer __p, size_type __n) {
1270.374 -    _STLP_ASSERT( (__p == 0) == (__n == 0) )
1270.375 -      if (__p != 0) __sgi_alloc::deallocate((void*)__p, __n * sizeof(value_type));
1270.376 -  }
1270.377 -  // backwards compatibility
1270.378 -  void deallocate(pointer __p) const {  if (__p != 0) __sgi_alloc::deallocate((void*)__p, sizeof(value_type)); }
1270.379 -  size_type max_size() const _STLP_NOTHROW  { return size_t(-1) / sizeof(value_type); }
1270.380 -  void construct(pointer __p, const _Tp& __val) { _STLP_STD::_Construct(__p, __val); }
1270.381 -  void destroy(pointer __p) { _STLP_STD::_Destroy(__p); }
1270.382 -# if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))
1270.383 -  template <class _T2> bool operator==(const allocator<_T2>&) const  _STLP_NOTHROW { return true; }
1270.384 -  template <class _T2> bool operator!=(const allocator<_T2>&) const _STLP_NOTHROW { return false; }
1270.385 -# endif
1270.386 -};
1270.387 -
1270.388 -_STLP_TEMPLATE_NULL
1270.389 -class _STLP_CLASS_DECLSPEC allocator<void> {
1270.390 -public:
1270.391 -  typedef size_t      size_type;
1270.392 -  typedef ptrdiff_t   difference_type;
1270.393 -  typedef void*       pointer;
1270.394 -  typedef const void* const_pointer;
1270.395 -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1270.396 -  typedef void        value_type;
1270.397 -# endif
1270.398 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1270.399 -  template <class _Tp1> struct rebind {
1270.400 -    typedef allocator<_Tp1> other;
1270.401 -  };
1270.402 -# endif
1270.403 -# if defined(__MRC__)||(defined(__SC__)&&!defined(__DMC__))		//*ty 03/24/2001 - MPW compilers get confused on these operator definitions
1270.404 -  template <class _T2> bool operator==(const allocator<_T2>&) const _STLP_NOTHROW { return true; }
1270.405 -  template <class _T2> bool operator!=(const allocator<_T2>&) const _STLP_NOTHROW { return false; }
1270.406 -# endif
1270.407 -};
1270.408 -
1270.409 -#if !(defined(__MRC__)||(defined(__SC__)&&!defined(__DMC__)))		//*ty 03/24/2001 - MPW compilers get confused on these operator definitions
1270.410 -template <class _T1, class _T2> inline bool  _STLP_CALL operator==(const allocator<_T1>&, const allocator<_T2>&) _STLP_NOTHROW { return true; }
1270.411 -template <class _T1, class _T2> inline bool  _STLP_CALL operator!=(const allocator<_T1>&, const allocator<_T2>&) _STLP_NOTHROW { return false; }
1270.412 -#endif
1270.413 -
1270.414 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1270.415 -_STLP_EXPORT_TEMPLATE_CLASS allocator<char>;
1270.416 -#  if defined (_STLP_HAS_WCHAR_T)
1270.417 -_STLP_EXPORT_TEMPLATE_CLASS allocator<wchar_t>;
1270.418 -#  endif
1270.419 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1270.420 -
1270.421 -// Another allocator adaptor: _Alloc_traits.  This serves two
1270.422 -// purposes.  First, make it possible to write containers that can use
1270.423 -// either SGI-style allocators or standard-conforming allocator.
1270.424 -
1270.425 -// The fully general version.
1270.426 -template <class _Tp, class _Allocator>
1270.427 -struct _Alloc_traits
1270.428 -{
1270.429 -  typedef _Allocator _Orig;
1270.430 -# if defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM) 
1270.431 -  typedef typename _Allocator::_STLP_TEMPLATE rebind<_Tp> _Rebind_type;
1270.432 -  typedef typename _Rebind_type::other  allocator_type;
1270.433 -  static allocator_type create_allocator(const _Orig& __a) { return allocator_type(__a); }
1270.434 -# else
1270.435 -  // this is not actually true, used only to pass this type through
1270.436 -  // to dynamic overload selection in _STLP_alloc_proxy methods
1270.437 -  typedef _Allocator allocator_type;
1270.438 -# endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1270.439 -};
1270.440 -
1270.441 -#ifndef _STLP_FORCE_ALLOCATORS
1270.442 -#define _STLP_FORCE_ALLOCATORS(a,y) 
1270.443 -#endif
1270.444 -
1270.445 -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1270.446 -// The version for the default allocator, for rare occasion when we have partial spec w/o member template classes
1270.447 -template <class _Tp, class _Tp1>
1270.448 -struct _Alloc_traits<_Tp, allocator<_Tp1> > {
1270.449 -  typedef allocator<_Tp1> _Orig;
1270.450 -  typedef allocator<_Tp> allocator_type;
1270.451 -  static allocator_type create_allocator(const allocator<_Tp1 >& __a) { return allocator_type(__a); }
1270.452 -};
1270.453 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1270.454 -
1270.455 -/* macro to convert the allocator for initialization
1270.456 - * not using MEMBER_TEMPLATE_CLASSES as it should work given template constructor  */
1270.457 -#if defined (_STLP_MEMBER_TEMPLATES) || ! defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1270.458 -/* if _STLP_NO_TEMPLATE_CONVERSIONS is set, the member template constructor is
1270.459 - * not used implicitly to convert allocator parameter, so let us do it explicitly */
1270.460 -# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_NO_TEMPLATE_CONVERSIONS)
1270.461 -#  define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __stl_alloc_create(__a,(_Tp*)0)
1270.462 -# else
1270.463 -#  define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __a
1270.464 -# endif
1270.465 -/* else convert, but only if partial specialization works, since else
1270.466 - * Container::allocator_type won't be different */
1270.467 -#else 
1270.468 -#  define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __stl_alloc_create(__a,(_Tp*)0)
1270.469 -#endif
1270.470 -
1270.471 -# if defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM) 
1270.472 -template <class _Tp, class _Alloc>
1270.473 -inline _STLP_TYPENAME_ON_RETURN_TYPE _Alloc_traits<_Tp, _Alloc>::allocator_type  _STLP_CALL
1270.474 -__stl_alloc_create(const _Alloc& __a, const _Tp*) {
1270.475 -  typedef typename _Alloc::_STLP_TEMPLATE rebind<_Tp>::other _Rebound_type;
1270.476 -  return _Rebound_type(__a);
1270.477 -}
1270.478 -#else
1270.479 -// If custom allocators are being used without member template classes support :
1270.480 -// user (on purpose) is forced to define rebind/get operations !!!
1270.481 -template <class _Tp1, class _Tp2>
1270.482 -inline allocator<_Tp2>& _STLP_CALL
1270.483 -__stl_alloc_rebind(allocator<_Tp1>& __a, const _Tp2*) {  return (allocator<_Tp2>&)(__a); }
1270.484 -template <class _Tp1, class _Tp2>
1270.485 -inline allocator<_Tp2> _STLP_CALL
1270.486 -__stl_alloc_create(const allocator<_Tp1>&, const _Tp2*) { return allocator<_Tp2>(); }
1270.487 -#endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1270.488 -
1270.489 -# ifdef _STLP_USE_RAW_SGI_ALLOCATORS
1270.490 -// move obsolete stuff out of the way
1270.491 -# include <stl/_alloc_old.h>
1270.492 -# endif
1270.493 -
1270.494 -// inheritance is being used for EBO optimization
1270.495 -template <class _Value, class _Tp, class _MaybeReboundAlloc>
1270.496 -class _STLP_alloc_proxy : public _MaybeReboundAlloc {
1270.497 -private:
1270.498 -  typedef _MaybeReboundAlloc _Base;
1270.499 -  typedef _STLP_alloc_proxy<_Value, _Tp, _MaybeReboundAlloc> _Self;
1270.500 -public:
1270.501 -  _Value _M_data;
1270.502 -  inline _STLP_alloc_proxy(const _MaybeReboundAlloc& __a, _Value __p) : _MaybeReboundAlloc(__a), _M_data(__p) {}
1270.503 -
1270.504 -# if 0
1270.505 -  inline _STLP_alloc_proxy(const _Self& __x) : _MaybeReboundAlloc(__x), _M_data(__x._M_data) {} 
1270.506 -  // construction/destruction
1270.507 -  inline _Self& operator = (const _Self& __x) { 
1270.508 -    *(_MaybeReboundAlloc*)this = *(_MaybeReboundAlloc*)__x;
1270.509 -    _M_data = __x._M_data; return *this; 
1270.510 -  } 
1270.511 -  inline _Self& operator = (const _Base& __x) { ((_Base&)*this) = __x; return *this; } 
1270.512 -# endif
1270.513 -  // Unified interface to perform allocate()/deallocate() with limited
1270.514 -  // language support
1270.515 -#if ! defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
1270.516 -  // else it is rebound already, and allocate() member is accessible
1270.517 -  inline _Tp* allocate(size_t __n) { 
1270.518 -    return __stl_alloc_rebind(__STATIC_CAST(_Base&,*this),(_Tp*)0).allocate(__n,0); 
1270.519 -  }
1270.520 -  inline void deallocate(_Tp* __p, size_t __n) { 
1270.521 -    __stl_alloc_rebind(__STATIC_CAST(_Base&, *this),(_Tp*)0).deallocate(__p, __n); 
1270.522 -  }
1270.523 -#endif /* !_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1270.524 -};
1270.525 -
1270.526 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1270.527 -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<char *,char,allocator<char> >;
1270.528 -#  if defined (_STLP_HAS_WCHAR_T)
1270.529 -_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<wchar_t *,wchar_t,allocator<wchar_t> >;
1270.530 -#  endif
1270.531 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1270.532 -
1270.533 -# undef _STLP_NODE_ALLOCATOR_THREADS
1270.534 -
1270.535 -_STLP_END_NAMESPACE
1270.536 -
1270.537 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1270.538 -#  include <stl/_alloc.c>
1270.539 -# endif
1270.540 -
1270.541 -#endif /* _STLP_INTERNAL_ALLOC_H */
1270.542 -
1270.543 -// Local Variables:
1270.544 -// mode:C++
1270.545 -// End:
1270.546 -
  1271.1 --- a/epoc32/include/stdapis/stlport/stl/_auto_ptr.h	Tue Mar 16 16:12:26 2010 +0000
  1271.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1271.3 @@ -1,175 +0,0 @@
  1271.4 -/*
  1271.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1271.6 - * Copyright (c) 1997-1999
  1271.7 - * Silicon Graphics Computer Systems, Inc.
  1271.8 - *
  1271.9 - * Copyright (c) 1999
 1271.10 - * Boris Fomitchev
 1271.11 - *
 1271.12 - * This material is provided "as is", with absolutely no warranty expressed
 1271.13 - * or implied. Any use is at your own risk.
 1271.14 - *
 1271.15 - * Permission to use or copy this software for any purpose is hereby granted
 1271.16 - * without fee, provided the above notices are retained on all copies.
 1271.17 - * Permission to modify the code and to distribute modified code is granted,
 1271.18 - * provided the above notices are retained, and a notice that the code was
 1271.19 - * modified is included with the above copyright notice.
 1271.20 - *
 1271.21 - */
 1271.22 -
 1271.23 -#ifndef _STLP_AUTO_PTR_H
 1271.24 -# define _STLP_AUTO_PTR_H
 1271.25 -
 1271.26 -_STLP_BEGIN_NAMESPACE
 1271.27 -// implementation primitive
 1271.28 -class __ptr_base {
 1271.29 -public:
 1271.30 -  void* _M_p;
 1271.31 -  void  __set(const void* __p) { _M_p = __CONST_CAST(void*,__p); }
 1271.32 -  void  __set(void* __p) { _M_p = __p; }
 1271.33 -};
 1271.34 -
 1271.35 -template <class _Tp> class auto_ptr_ref {
 1271.36 -public:
 1271.37 -  __ptr_base& _M_r;
 1271.38 -  _Tp* const _M_p;
 1271.39 -
 1271.40 -  auto_ptr_ref(__ptr_base& __r, _Tp* __p) : _M_r(__r), _M_p(__p) {  }
 1271.41 -
 1271.42 -  _Tp* release() const { _M_r.__set((void*)0); return _M_p; }
 1271.43 -
 1271.44 -};
 1271.45 -
 1271.46 -template<class _Tp> class auto_ptr :  public __ptr_base {
 1271.47 -public:
 1271.48 -  typedef _Tp element_type;
 1271.49 -  typedef auto_ptr<_Tp>           _Self;
 1271.50 -
 1271.51 -  _Tp* release() {
 1271.52 -    _Tp* __px = this->get();
 1271.53 -    this->_M_p = 0;
 1271.54 -    return __px;
 1271.55 -  }
 1271.56 -
 1271.57 -  void reset(_Tp* __px=0) {
 1271.58 -    _Tp* __pt = this->get();
 1271.59 -    if (__px != __pt)
 1271.60 -      delete __pt;
 1271.61 -    this->__set(__px);
 1271.62 -  }
 1271.63 -
 1271.64 -  _Tp* get() const { return __REINTERPRET_CAST(_Tp*,__CONST_CAST(void*,_M_p)); }
 1271.65 -
 1271.66 -# if !defined (_STLP_NO_ARROW_OPERATOR)
 1271.67 -  _Tp* operator->() const {
 1271.68 -    _STLP_VERBOSE_ASSERT(get()!=0, _StlMsg_AUTO_PTR_NULL)
 1271.69 -    return get();
 1271.70 -  }
 1271.71 -# endif
 1271.72 -  _Tp& operator*() const  {
 1271.73 -    _STLP_VERBOSE_ASSERT(get()!=0, _StlMsg_AUTO_PTR_NULL)
 1271.74 -    return *get();
 1271.75 -  }
 1271.76 -
 1271.77 -  auto_ptr() {
 1271.78 -    this->_M_p = 0;
 1271.79 -# ifdef _STLP_USE_TRAP_LEAVE
 1271.80 -    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
 1271.81 -# endif
 1271.82 -  }
 1271.83 -
 1271.84 -  explicit auto_ptr(_Tp* __px) {
 1271.85 -    this->__set(__px);
 1271.86 -# ifdef _STLP_USE_TRAP_LEAVE
 1271.87 -    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
 1271.88 -# endif
 1271.89 -  }
 1271.90 -
 1271.91 -#if defined (_STLP_MEMBER_TEMPLATES)
 1271.92 -# if !defined (_STLP_NO_TEMPLATE_CONVERSIONS)
 1271.93 -  template<class _Tp1> auto_ptr(auto_ptr<_Tp1>& __r) {
 1271.94 -    _Tp* __conversionCheck = __r.release();
 1271.95 -    this->__set(__conversionCheck);
 1271.96 -# ifdef _STLP_USE_TRAP_LEAVE
 1271.97 -    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
 1271.98 -# endif
 1271.99 -  }
1271.100 -# endif
1271.101 -  template<class _Tp1> auto_ptr<_Tp>& operator=(auto_ptr<_Tp1>& __r) {
1271.102 -    _Tp* __conversionCheck = __r.release();
1271.103 -    reset(__conversionCheck);
1271.104 -    return *this;
1271.105 -  }
1271.106 -#endif /* _STLP_MEMBER_TEMPLATES */
1271.107 -
1271.108 -  auto_ptr(_Self& __r)
1271.109 -  { this->__set(__r.release());
1271.110 -# ifdef _STLP_USE_TRAP_LEAVE
1271.111 -    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
1271.112 -# endif
1271.113 -  }
1271.114 -
1271.115 -  _Self& operator=(_Self& __r)  {
1271.116 -    reset(__r.release());
1271.117 -    return *this;
1271.118 -  }
1271.119 -
1271.120 -  ~auto_ptr() { _STLP_POP_ITEM reset(0); }
1271.121 -
1271.122 -  auto_ptr(auto_ptr_ref<_Tp> __r) {
1271.123 -    this->__set(__r.release());
1271.124 -# ifdef _STLP_USE_TRAP_LEAVE
1271.125 -    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
1271.126 -# endif
1271.127 -  }
1271.128 -
1271.129 -  _Self& operator=(auto_ptr_ref<_Tp> __r) {
1271.130 -    reset(__r.release());
1271.131 -    return *this;
1271.132 -  }
1271.133 -
1271.134 -
1271.135 -  _Self& operator=(_Tp* __px) {
1271.136 -  	reset(__px);
1271.137 -    return *this;
1271.138 -  }
1271.139 -
1271.140 -
1271.141 -
1271.142 -# if defined(_STLP_MEMBER_TEMPLATES) && !defined(_STLP_NO_TEMPLATE_CONVERSIONS)
1271.143 -  template<class _Tp1> operator auto_ptr_ref<_Tp1>() {
1271.144 -    return auto_ptr_ref<_Tp1>(*this, this->get());
1271.145 -  }
1271.146 -  template<class _Tp1> operator auto_ptr<_Tp1>() {
1271.147 -    return auto_ptr<_Tp1>(release());
1271.148 -  }
1271.149 -# else
1271.150 -  operator auto_ptr_ref<_Tp>()
1271.151 -  { return auto_ptr_ref<_Tp>(*this, this->get()); }
1271.152 -# endif
1271.153 -
1271.154 -# ifdef _STLP_USE_TRAP_LEAVE
1271.155 -  static void Close(void* aPtr);
1271.156 -# endif
1271.157 -
1271.158 -};
1271.159 -
1271.160 -# ifdef _STLP_USE_TRAP_LEAVE
1271.161 -template <class _Tp>
1271.162 -void
1271.163 -auto_ptr<_Tp>::Close(void* aPtr)
1271.164 -{
1271.165 -  auto_ptr<_Tp>* self = (auto_ptr<_Tp>*)aPtr;
1271.166 -  self->reset(0);
1271.167 -}
1271.168 -# endif
1271.169 -
1271.170 -
1271.171 -_STLP_END_NAMESPACE
1271.172 -
1271.173 -#endif /* _STLP_AUTO_PTR_H */
1271.174 -
1271.175 -// Local Variables:
1271.176 -// mode:C++
1271.177 -// End:
1271.178 -
  1272.1 --- a/epoc32/include/stdapis/stlport/stl/_bitset.c	Tue Mar 16 16:12:26 2010 +0000
  1272.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1272.3 @@ -1,407 +0,0 @@
  1272.4 -/*
  1272.5 - * Copyright (c) 1998
  1272.6 - * Silicon Graphics Computer Systems, Inc.
  1272.7 - *
  1272.8 - * Copyright (c) 1999 
  1272.9 - * Boris Fomitchev
 1272.10 - *
 1272.11 - * This material is provided "as is", with absolutely no warranty expressed
 1272.12 - * or implied. Any use is at your own risk.
 1272.13 - *
 1272.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1272.15 - * without fee, provided the above notices are retained on all copies.
 1272.16 - * Permission to modify the code and to distribute modified code is granted,
 1272.17 - * provided the above notices are retained, and a notice that the code was
 1272.18 - * modified is included with the above copyright notice.
 1272.19 - *
 1272.20 - */
 1272.21 -
 1272.22 -#ifndef _STLP_BITSET_C
 1272.23 -# define  _STLP_BITSET_C
 1272.24 -
 1272.25 -# ifndef _STLP_BITSET_H
 1272.26 -#  include <stl/_bitset.h>
 1272.27 -# endif
 1272.28 -
 1272.29 -# define __BITS_PER_WORD (CHAR_BIT*sizeof(unsigned long))
 1272.30 -
 1272.31 -_STLP_BEGIN_NAMESPACE
 1272.32 -
 1272.33 -//
 1272.34 -// Definitions of non-inline functions from _Base_bitset.
 1272.35 -// 
 1272.36 -
 1272.37 -
 1272.38 -template<size_t _Nw>
 1272.39 -void _STLP_IMPORT_METHOD _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) 
 1272.40 -{
 1272.41 -
 1272.42 -  if (__shift != 0) {
 1272.43 -    const size_t __wshift = __shift / __BITS_PER_WORD;
 1272.44 -    const size_t __offset = __shift % __BITS_PER_WORD;
 1272.45 -
 1272.46 -    if (__offset == 0)
 1272.47 -      for (size_t __n = _Nw - 1; __n >= __wshift; --__n)
 1272.48 -        _M_w[__n] = _M_w[__n - __wshift];
 1272.49 -
 1272.50 -    else {
 1272.51 -      const size_t __sub_offset = __BITS_PER_WORD - __offset;
 1272.52 -      for (size_t __n = _Nw - 1; __n > __wshift; --__n)
 1272.53 -        _M_w[__n] = (_M_w[__n - __wshift] << __offset) | 
 1272.54 -                    (_M_w[__n - __wshift - 1] >> __sub_offset);
 1272.55 -      _M_w[__wshift] = _M_w[0] << __offset;
 1272.56 -    }
 1272.57 -
 1272.58 -    fill(_M_w + 0, _M_w + __wshift, __STATIC_CAST(_WordT,0));
 1272.59 -  }
 1272.60 -}
 1272.61 -
 1272.62 -template<size_t _Nw>
 1272.63 -void _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) 
 1272.64 -{
 1272.65 -
 1272.66 -  if (__shift != 0) {
 1272.67 -    const size_t __wshift = __shift / __BITS_PER_WORD;
 1272.68 -    const size_t __offset = __shift % __BITS_PER_WORD;
 1272.69 -    const size_t __limit = _Nw - __wshift - 1;
 1272.70 -
 1272.71 -    if (__offset == 0)
 1272.72 -      for (size_t __n = 0; __n <= __limit; ++__n)
 1272.73 -        _M_w[__n] = _M_w[__n + __wshift];
 1272.74 -
 1272.75 -    else {
 1272.76 -      const size_t __sub_offset = __BITS_PER_WORD - __offset;
 1272.77 -      for (size_t __n = 0; __n < __limit; ++__n)
 1272.78 -        _M_w[__n] = (_M_w[__n + __wshift] >> __offset) |
 1272.79 -                    (_M_w[__n + __wshift + 1] << __sub_offset);
 1272.80 -      _M_w[__limit] = _M_w[_Nw-1] >> __offset;
 1272.81 -    }
 1272.82 -
 1272.83 -    fill(_M_w + __limit + 1, _M_w + _Nw, __STATIC_CAST(_WordT,0));
 1272.84 -  }
 1272.85 -}
 1272.86 -
 1272.87 -template<size_t _Nw>
 1272.88 -unsigned long _Base_bitset<_Nw>::_M_do_to_ulong() const
 1272.89 -{
 1272.90 -  for (size_t __i = 1; __i < _Nw; ++__i) 
 1272.91 -    if (_M_w[__i]) 
 1272.92 -      __stl_throw_overflow_error("bitset");
 1272.93 -  return _M_w[0];
 1272.94 -} // End _M_do_to_ulong
 1272.95 -
 1272.96 -template<size_t _Nw>
 1272.97 -size_t _Base_bitset<_Nw>::_M_do_find_first(size_t __not_found) const 
 1272.98 -{
 1272.99 -  for ( size_t __i = 0; __i < _Nw; __i++ ) {
1272.100 -    _WordT __thisword = _M_w[__i];
1272.101 -    if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1272.102 -      // find byte within word
1272.103 -      for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
1272.104 -        unsigned char __this_byte
1272.105 -          = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1272.106 -        if ( __this_byte )
1272.107 -          return __i*__BITS_PER_WORD + __j*CHAR_BIT +
1272.108 -            _Bs_G<bool>::_S_first_one[__this_byte];
1272.109 -
1272.110 -        __thisword >>= CHAR_BIT;
1272.111 -      }
1272.112 -    }
1272.113 -  }
1272.114 -  // not found, so return an indication of failure.
1272.115 -  return __not_found;
1272.116 -}
1272.117 -
1272.118 -template<size_t _Nw>
1272.119 -size_t
1272.120 -_Base_bitset<_Nw>::_M_do_find_next(size_t __prev, 
1272.121 -                                   size_t __not_found) const
1272.122 -{
1272.123 -  // make bound inclusive
1272.124 -  ++__prev;
1272.125 -
1272.126 -  // check out of bounds
1272.127 -  if ( __prev >= _Nw * __BITS_PER_WORD )
1272.128 -    return __not_found;
1272.129 -
1272.130 -    // search first word
1272.131 -  size_t __i = _S_whichword(__prev);
1272.132 -  _WordT __thisword = _M_w[__i];
1272.133 -
1272.134 -    // mask off bits below bound
1272.135 -  __thisword &= (~__STATIC_CAST(_WordT,0)) << _S_whichbit(__prev);
1272.136 -
1272.137 -  if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1272.138 -    // find byte within word
1272.139 -    // get first byte into place
1272.140 -    __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
1272.141 -    for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
1272.142 -      unsigned char __this_byte
1272.143 -        = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1272.144 -      if ( __this_byte )
1272.145 -        return __i*__BITS_PER_WORD + __j*CHAR_BIT +
1272.146 -          _Bs_G<bool>::_S_first_one[__this_byte];
1272.147 -
1272.148 -      __thisword >>= CHAR_BIT;
1272.149 -    }
1272.150 -  }
1272.151 -
1272.152 -  // check subsequent words
1272.153 -  __i++;
1272.154 -  for ( ; __i < _Nw; __i++ ) {
1272.155 -    /* _WordT */ __thisword = _M_w[__i];
1272.156 -    if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1272.157 -      // find byte within word
1272.158 -      for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
1272.159 -        unsigned char __this_byte
1272.160 -          = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1272.161 -        if ( __this_byte )
1272.162 -          return __i*__BITS_PER_WORD + __j*CHAR_BIT +
1272.163 -            _Bs_G<bool>::_S_first_one[__this_byte];
1272.164 -
1272.165 -        __thisword >>= CHAR_BIT;
1272.166 -      }
1272.167 -    }
1272.168 -  }
1272.169 -
1272.170 -  // not found, so return an indication of failure.
1272.171 -  return __not_found;
1272.172 -} // end _M_do_find_next
1272.173 -
1272.174 -
1272.175 -
1272.176 -# if ! defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1272.177 -
1272.178 -#if defined ( _STLP_USE_NEW_IOSTREAMS)
1272.179 -
1272.180 -template <class _CharT, class _Traits, size_t _Nb>
1272.181 -basic_istream<_CharT, _Traits>& _STLP_CALL
1272.182 -operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
1272.183 -{
1272.184 -  basic_string<_CharT, _Traits> __tmp;
1272.185 -  __tmp.reserve(_Nb);
1272.186 -
1272.187 -  // Skip whitespace
1272.188 -  typename basic_istream<_CharT, _Traits>::sentry __sentry(__is);
1272.189 -  if (__sentry) {
1272.190 -    basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
1272.191 -    for (size_t __i = 0; __i < _Nb; ++__i) {
1272.192 -      static typename _Traits::int_type __eof = _Traits::eof();
1272.193 -
1272.194 -      typename _Traits::int_type __c1 = __buf->sbumpc();
1272.195 -      if (_Traits::eq_int_type(__c1, __eof)) {
1272.196 -        __is.setstate(ios_base::eofbit);
1272.197 -        break;
1272.198 -      }
1272.199 -      else {
1272.200 -        char __c2 = _Traits::to_char_type(__c1);
1272.201 -        char __c  = __is.narrow(__c2, '*');
1272.202 -
1272.203 -        if (__c == '0' || __c == '1')
1272.204 -          __tmp.push_back(__c);
1272.205 -        else if (_Traits::eq_int_type(__buf->sputbackc(__c2), __eof)) {
1272.206 -          __is.setstate(ios_base::failbit);
1272.207 -          break;
1272.208 -        }
1272.209 -      }
1272.210 -    }
1272.211 -
1272.212 -    if (__tmp.empty())
1272.213 -      __is.setstate(ios_base::failbit);
1272.214 -    else
1272.215 -      __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb);
1272.216 -  }
1272.217 -
1272.218 -  return __is;
1272.219 -}
1272.220 -
1272.221 -template <class _CharT, class _Traits, size_t _Nb>
1272.222 -basic_ostream<_CharT, _Traits>& _STLP_CALL
1272.223 -operator<<(basic_ostream<_CharT, _Traits>& __os,
1272.224 -           const bitset<_Nb>& __x)
1272.225 -{
1272.226 -  basic_string<_CharT, _Traits> __tmp;
1272.227 -  __x._M_copy_to_string(__tmp);
1272.228 -  return __os << __tmp;
1272.229 -}
1272.230 -
1272.231 -#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
1272.232 -
1272.233 -// (reg) For Watcom IO, this tells if ostream class is in .exe or in .dll
1272.234 -template <size_t _Nb>
1272.235 -_ISTREAM_DLL& _STLP_CALL
1272.236 -operator>>(_ISTREAM_DLL& __is, bitset<_Nb>& __x) {
1272.237 -  string __tmp;
1272.238 -  __tmp.reserve(_Nb);
1272.239 -
1272.240 -  // In new templatized iostreams, use istream::sentry
1272.241 -  if (__is.flags() & ios::skipws) {
1272.242 -    char __c;
1272.243 -    do 
1272.244 -      __is.get(__c);
1272.245 -    while (__is && isspace(__c));
1272.246 -    if (__is)
1272.247 -      __is.putback(__c);
1272.248 -  }
1272.249 -
1272.250 -  for (size_t __i = 0; __i < _Nb; ++__i) {
1272.251 -    char __c;
1272.252 -    __is.get(__c);
1272.253 -
1272.254 -    if (!__is)
1272.255 -      break;
1272.256 -    else if (__c != '0' && __c != '1') {
1272.257 -      __is.putback(__c);
1272.258 -      break;
1272.259 -    }
1272.260 -    else
1272.261 -      __tmp.push_back(__c);
1272.262 -  }
1272.263 -
1272.264 -  if (__tmp.empty()) 
1272.265 -    __is.clear(__is.rdstate() | ios::failbit);
1272.266 -  else
1272.267 -    __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb);
1272.268 -
1272.269 -  return __is;
1272.270 -}
1272.271 -
1272.272 -# endif /* _STLP_USE_NEW_IOSTREAMS */
1272.273 -
1272.274 -# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1272.275 -
1272.276 -
1272.277 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
1272.278 -
1272.279 -// ------------------------------------------------------------
1272.280 -// Lookup tables for find and count operations.
1272.281 -
1272.282 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1272.283 -template<class _Dummy>
1272.284 -const unsigned char _Bs_G<_Dummy>::_S_bit_count[256] = {
1272.285 -# else
1272.286 -const unsigned char _Bs_G<bool>::_S_bit_count[256] _STLP_WEAK = {
1272.287 -# endif
1272.288 -  0, /*   0 */ 1, /*   1 */ 1, /*   2 */ 2, /*   3 */ 1, /*   4 */
1272.289 -  2, /*   5 */ 2, /*   6 */ 3, /*   7 */ 1, /*   8 */ 2, /*   9 */
1272.290 -  2, /*  10 */ 3, /*  11 */ 2, /*  12 */ 3, /*  13 */ 3, /*  14 */
1272.291 -  4, /*  15 */ 1, /*  16 */ 2, /*  17 */ 2, /*  18 */ 3, /*  19 */
1272.292 -  2, /*  20 */ 3, /*  21 */ 3, /*  22 */ 4, /*  23 */ 2, /*  24 */
1272.293 -  3, /*  25 */ 3, /*  26 */ 4, /*  27 */ 3, /*  28 */ 4, /*  29 */
1272.294 -  4, /*  30 */ 5, /*  31 */ 1, /*  32 */ 2, /*  33 */ 2, /*  34 */
1272.295 -  3, /*  35 */ 2, /*  36 */ 3, /*  37 */ 3, /*  38 */ 4, /*  39 */
1272.296 -  2, /*  40 */ 3, /*  41 */ 3, /*  42 */ 4, /*  43 */ 3, /*  44 */
1272.297 -  4, /*  45 */ 4, /*  46 */ 5, /*  47 */ 2, /*  48 */ 3, /*  49 */
1272.298 -  3, /*  50 */ 4, /*  51 */ 3, /*  52 */ 4, /*  53 */ 4, /*  54 */
1272.299 -  5, /*  55 */ 3, /*  56 */ 4, /*  57 */ 4, /*  58 */ 5, /*  59 */
1272.300 -  4, /*  60 */ 5, /*  61 */ 5, /*  62 */ 6, /*  63 */ 1, /*  64 */
1272.301 -  2, /*  65 */ 2, /*  66 */ 3, /*  67 */ 2, /*  68 */ 3, /*  69 */
1272.302 -  3, /*  70 */ 4, /*  71 */ 2, /*  72 */ 3, /*  73 */ 3, /*  74 */
1272.303 -  4, /*  75 */ 3, /*  76 */ 4, /*  77 */ 4, /*  78 */ 5, /*  79 */
1272.304 -  2, /*  80 */ 3, /*  81 */ 3, /*  82 */ 4, /*  83 */ 3, /*  84 */
1272.305 -  4, /*  85 */ 4, /*  86 */ 5, /*  87 */ 3, /*  88 */ 4, /*  89 */
1272.306 -  4, /*  90 */ 5, /*  91 */ 4, /*  92 */ 5, /*  93 */ 5, /*  94 */
1272.307 -  6, /*  95 */ 2, /*  96 */ 3, /*  97 */ 3, /*  98 */ 4, /*  99 */
1272.308 -  3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */
1272.309 -  4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */
1272.310 -  5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */
1272.311 -  5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */
1272.312 -  4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */
1272.313 -  6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */
1272.314 -  2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */
1272.315 -  4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */
1272.316 -  3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */
1272.317 -  3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */
1272.318 -  4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */
1272.319 -  5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */
1272.320 -  2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */
1272.321 -  4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */
1272.322 -  4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */
1272.323 -  6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */
1272.324 -  4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */
1272.325 -  5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */
1272.326 -  6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */
1272.327 -  4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */
1272.328 -  3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */
1272.329 -  5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */
1272.330 -  4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */
1272.331 -  6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */
1272.332 -  5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */
1272.333 -  4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */
1272.334 -  5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */
1272.335 -  6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */
1272.336 -  4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */
1272.337 -  6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */
1272.338 -  6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */
1272.339 -  8  /* 255 */
1272.340 -}; // end _Bitset_global
1272.341 -
1272.342 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1272.343 -template<class _Dummy>
1272.344 -const unsigned char _Bs_G<_Dummy>::_S_first_one[256] = {
1272.345 -# else
1272.346 -const unsigned char _Bs_G<bool>::_S_first_one[256] _STLP_WEAK = {
1272.347 -# endif
1272.348 -
1272.349 -  0, /*   0 */ 0, /*   1 */ 1, /*   2 */ 0, /*   3 */ 2, /*   4 */
1272.350 -  0, /*   5 */ 1, /*   6 */ 0, /*   7 */ 3, /*   8 */ 0, /*   9 */
1272.351 -  1, /*  10 */ 0, /*  11 */ 2, /*  12 */ 0, /*  13 */ 1, /*  14 */
1272.352 -  0, /*  15 */ 4, /*  16 */ 0, /*  17 */ 1, /*  18 */ 0, /*  19 */
1272.353 -  2, /*  20 */ 0, /*  21 */ 1, /*  22 */ 0, /*  23 */ 3, /*  24 */
1272.354 -  0, /*  25 */ 1, /*  26 */ 0, /*  27 */ 2, /*  28 */ 0, /*  29 */
1272.355 -  1, /*  30 */ 0, /*  31 */ 5, /*  32 */ 0, /*  33 */ 1, /*  34 */
1272.356 -  0, /*  35 */ 2, /*  36 */ 0, /*  37 */ 1, /*  38 */ 0, /*  39 */
1272.357 -  3, /*  40 */ 0, /*  41 */ 1, /*  42 */ 0, /*  43 */ 2, /*  44 */
1272.358 -  0, /*  45 */ 1, /*  46 */ 0, /*  47 */ 4, /*  48 */ 0, /*  49 */
1272.359 -  1, /*  50 */ 0, /*  51 */ 2, /*  52 */ 0, /*  53 */ 1, /*  54 */
1272.360 -  0, /*  55 */ 3, /*  56 */ 0, /*  57 */ 1, /*  58 */ 0, /*  59 */
1272.361 -  2, /*  60 */ 0, /*  61 */ 1, /*  62 */ 0, /*  63 */ 6, /*  64 */
1272.362 -  0, /*  65 */ 1, /*  66 */ 0, /*  67 */ 2, /*  68 */ 0, /*  69 */
1272.363 -  1, /*  70 */ 0, /*  71 */ 3, /*  72 */ 0, /*  73 */ 1, /*  74 */
1272.364 -  0, /*  75 */ 2, /*  76 */ 0, /*  77 */ 1, /*  78 */ 0, /*  79 */
1272.365 -  4, /*  80 */ 0, /*  81 */ 1, /*  82 */ 0, /*  83 */ 2, /*  84 */
1272.366 -  0, /*  85 */ 1, /*  86 */ 0, /*  87 */ 3, /*  88 */ 0, /*  89 */
1272.367 -  1, /*  90 */ 0, /*  91 */ 2, /*  92 */ 0, /*  93 */ 1, /*  94 */
1272.368 -  0, /*  95 */ 5, /*  96 */ 0, /*  97 */ 1, /*  98 */ 0, /*  99 */
1272.369 -  2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */
1272.370 -  0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */
1272.371 -  1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */
1272.372 -  0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */
1272.373 -  3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */
1272.374 -  0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */
1272.375 -  1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */
1272.376 -  0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */
1272.377 -  2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */
1272.378 -  0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */
1272.379 -  1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */
1272.380 -  0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */
1272.381 -  5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */
1272.382 -  0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */
1272.383 -  1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */
1272.384 -  0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */
1272.385 -  2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */
1272.386 -  0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */
1272.387 -  1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */
1272.388 -  0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */
1272.389 -  3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */
1272.390 -  0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */
1272.391 -  1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */
1272.392 -  0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */
1272.393 -  2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */
1272.394 -  0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */
1272.395 -  1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */
1272.396 -  0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */
1272.397 -  4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */
1272.398 -  0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */
1272.399 -  1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */
1272.400 -  0, /* 255 */
1272.401 -}; // end _Bitset_global
1272.402 -
1272.403 -# endif /* defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) */
1272.404 -
1272.405 -_STLP_END_NAMESPACE
1272.406 -
1272.407 -#  undef __BITS_PER_WORD
1272.408 -#  undef bitset
1272.409 -
1272.410 -#endif /*  _STLP_BITSET_C */
  1273.1 --- a/epoc32/include/stdapis/stlport/stl/_bitset.h	Tue Mar 16 16:12:26 2010 +0000
  1273.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1273.3 @@ -1,791 +0,0 @@
  1273.4 -/*
  1273.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1273.6 - * Copyright (c) 1998
  1273.7 - * Silicon Graphics Computer Systems, Inc.
  1273.8 - *
  1273.9 - * Copyright (c) 1999 
 1273.10 - * Boris Fomitchev
 1273.11 - *
 1273.12 - * This material is provided "as is", with absolutely no warranty expressed
 1273.13 - * or implied. Any use is at your own risk.
 1273.14 - *
 1273.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1273.16 - * without fee, provided the above notices are retained on all copies.
 1273.17 - * Permission to modify the code and to distribute modified code is granted,
 1273.18 - * provided the above notices are retained, and a notice that the code was
 1273.19 - * modified is included with the above copyright notice.
 1273.20 - *
 1273.21 - */
 1273.22 -
 1273.23 -#ifndef _STLP_BITSET_H
 1273.24 -#define _STLP_BITSET_H
 1273.25 -
 1273.26 -// A bitset of size N has N % (sizeof(unsigned long) * CHAR_BIT) unused 
 1273.27 -// bits.  (They are the high- order bits in the highest word.)  It is
 1273.28 -// a class invariant of class bitset<> that those unused bits are
 1273.29 -// always zero.
 1273.30 -
 1273.31 -// Most of the actual code isn't contained in bitset<> itself, but in the 
 1273.32 -// base class _Base_bitset.  The base class works with whole words, not with
 1273.33 -// individual bits.  This allows us to specialize _Base_bitset for the
 1273.34 -// important special case where the bitset is only a single word.
 1273.35 -
 1273.36 -// The C++ standard does not define the precise semantics of operator[].
 1273.37 -// In this implementation the const version of operator[] is equivalent
 1273.38 -// to test(), except that it does no range checking.  The non-const version
 1273.39 -// returns a reference to a bit, again without doing any range checking.
 1273.40 -
 1273.41 -
 1273.42 -# ifndef _STLP_INTERNAL_ALGOBASE_H
 1273.43 -#  include <stl/_algobase.h>
 1273.44 -# endif
 1273.45 -
 1273.46 -# ifndef _STLP_INTERNAL_ALLOC_H
 1273.47 -#  include <stl/_alloc.h>
 1273.48 -# endif
 1273.49 -
 1273.50 -# ifndef _STLP_INTERNAL_ITERATOR_H
 1273.51 -#  include <stl/_iterator.h>
 1273.52 -# endif
 1273.53 -
 1273.54 -# ifndef _STLP_INTERNAL_UNINITIALIZED_H
 1273.55 -#  include <stl/_uninitialized.h>
 1273.56 -# endif
 1273.57 -
 1273.58 -# ifndef _STLP_RANGE_ERRORS_H
 1273.59 -#  include <stl/_range_errors.h>
 1273.60 -# endif
 1273.61 -
 1273.62 -# ifndef _STLP_STRING
 1273.63 -#  include <string>
 1273.64 -# endif
 1273.65 -
 1273.66 -# ifndef _STLP_ISTREAM
 1273.67 -#  include <istream>
 1273.68 -# endif
 1273.69 -
 1273.70 -#define __BITS_PER_WORD (CHAR_BIT*sizeof(unsigned long))
 1273.71 -#define __BITSET_WORDS(__n) ((__n + __BITS_PER_WORD - 1)/__BITS_PER_WORD)
 1273.72 -
 1273.73 -_STLP_BEGIN_NAMESPACE
 1273.74 -
 1273.75 -// structure to aid in counting bits
 1273.76 -template<class _Dummy> 
 1273.77 -class _Bs_G {
 1273.78 -public:
 1273.79 -  static const unsigned char _S_bit_count[256];
 1273.80 -  // Mapping from 8 bit unsigned integers to the index of the first one
 1273.81 -  // bit:
 1273.82 -  static const unsigned char _S_first_one[256];
 1273.83 -};
 1273.84 -
 1273.85 -//
 1273.86 -// Base class: general case.
 1273.87 -//
 1273.88 -
 1273.89 -template<size_t _Nw>
 1273.90 -struct _Base_bitset {
 1273.91 -  typedef unsigned long _WordT;
 1273.92 -
 1273.93 -  _WordT _M_w[_Nw];                // 0 is the least significant word.
 1273.94 -
 1273.95 -  _Base_bitset( void ) { _M_do_reset(); }
 1273.96 -
 1273.97 -  _Base_bitset(unsigned long __val) {
 1273.98 -    _M_do_reset();
 1273.99 -    _M_w[0] = __val;
1273.100 -  }
1273.101 -  
1273.102 -  static size_t _STLP_CALL _S_whichword( size_t __pos ) {
1273.103 -    return __pos / __BITS_PER_WORD;
1273.104 -  }
1273.105 -  static size_t _STLP_CALL _S_whichbyte( size_t __pos ) {
1273.106 -    return (__pos % __BITS_PER_WORD) / CHAR_BIT;
1273.107 -  }
1273.108 -  static size_t _STLP_CALL _S_whichbit( size_t __pos ) {
1273.109 -    return __pos % __BITS_PER_WORD;
1273.110 -  }
1273.111 -  static _WordT _STLP_CALL _S_maskbit( size_t __pos ) {
1273.112 -    return __STATIC_CAST(_WordT,1) << _S_whichbit(__pos);
1273.113 -  }
1273.114 -
1273.115 -  _WordT& _M_getword(size_t __pos)       { return _M_w[_S_whichword(__pos)]; }
1273.116 -  _WordT  _M_getword(size_t __pos) const { return _M_w[_S_whichword(__pos)]; }
1273.117 -
1273.118 -  _WordT& _M_hiword()       { return _M_w[_Nw - 1]; }
1273.119 -  _WordT  _M_hiword() const { return _M_w[_Nw - 1]; }
1273.120 -
1273.121 -  void _M_do_and(const _Base_bitset<_Nw>& __x) {
1273.122 -    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1273.123 -      _M_w[__i] &= __x._M_w[__i];
1273.124 -    }
1273.125 -  }
1273.126 -
1273.127 -  void _M_do_or(const _Base_bitset<_Nw>& __x) {
1273.128 -    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1273.129 -      _M_w[__i] |= __x._M_w[__i];
1273.130 -    }
1273.131 -  }
1273.132 -
1273.133 -  void _M_do_xor(const _Base_bitset<_Nw>& __x) {
1273.134 -    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1273.135 -      _M_w[__i] ^= __x._M_w[__i];
1273.136 -    }
1273.137 -  }
1273.138 -
1273.139 -  void _M_do_left_shift(size_t __shift);
1273.140 -
1273.141 -  void _M_do_right_shift(size_t __shift);
1273.142 -
1273.143 -  void _M_do_flip() {
1273.144 -    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1273.145 -      _M_w[__i] = ~_M_w[__i];
1273.146 -    }
1273.147 -  }
1273.148 -
1273.149 -  void _M_do_set() {
1273.150 -    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1273.151 -      _M_w[__i] = ~__STATIC_CAST(_WordT,0);
1273.152 -    }
1273.153 -  }
1273.154 -
1273.155 -
1273.156 -  void _M_do_reset() { memset(_M_w, 0, _Nw * sizeof(_WordT)); }
1273.157 -
1273.158 -  bool _M_is_equal(const _Base_bitset<_Nw>& __x) const {
1273.159 -    for (size_t __i = 0; __i < _Nw; ++__i) {
1273.160 -      if (_M_w[__i] != __x._M_w[__i])
1273.161 -        return false;
1273.162 -    }
1273.163 -    return true;
1273.164 -  }
1273.165 -
1273.166 -  bool _M_is_any() const {
1273.167 -    for ( size_t __i = 0; __i < _Nw ; __i++ ) {
1273.168 -      if ( _M_w[__i] != __STATIC_CAST(_WordT,0) )
1273.169 -        return true;
1273.170 -    }
1273.171 -    return false;
1273.172 -  }
1273.173 -
1273.174 -  size_t _M_do_count() const {
1273.175 -    size_t __result = 0;
1273.176 -    const unsigned char* __byte_ptr = (const unsigned char*)_M_w;
1273.177 -    const unsigned char* __end_ptr = (const unsigned char*)(_M_w+_Nw);
1273.178 -
1273.179 -    while ( __byte_ptr < __end_ptr ) {
1273.180 -      __result += _Bs_G<bool>::_S_bit_count[*__byte_ptr];
1273.181 -      __byte_ptr++;
1273.182 -    }
1273.183 -    return __result;
1273.184 -  }
1273.185 -
1273.186 -  unsigned long _M_do_to_ulong() const; 
1273.187 -
1273.188 -  // find first "on" bit
1273.189 -  size_t _M_do_find_first(size_t __not_found) const;
1273.190 -
1273.191 -  // find the next "on" bit that follows "prev"
1273.192 -  size_t _M_do_find_next(size_t __prev, size_t __not_found) const;
1273.193 -};
1273.194 -
1273.195 -//
1273.196 -// Base class: specialization for a single word.
1273.197 -//
1273.198 -
1273.199 -_STLP_TEMPLATE_NULL
1273.200 -struct _Base_bitset<1UL> {
1273.201 -  typedef unsigned long _WordT;
1273.202 -  typedef _Base_bitset<1UL> _Self;
1273.203 -
1273.204 -  _WordT _M_w;
1273.205 -
1273.206 -  _Base_bitset( void ) : _M_w(0) {}
1273.207 -  _Base_bitset(unsigned long __val) : _M_w(__val) {}
1273.208 -  
1273.209 -  static size_t _STLP_CALL _S_whichword( size_t __pos ) {
1273.210 -    return __pos / __BITS_PER_WORD ;
1273.211 -  }
1273.212 -  static size_t _STLP_CALL _S_whichbyte( size_t __pos ) {
1273.213 -    return (__pos % __BITS_PER_WORD) / CHAR_BIT;
1273.214 -  }
1273.215 -  static size_t _STLP_CALL _S_whichbit( size_t __pos ) {
1273.216 -    return __pos % __BITS_PER_WORD;
1273.217 -  }
1273.218 -  static _WordT _STLP_CALL _S_maskbit( size_t __pos ) {
1273.219 -    return (__STATIC_CAST(_WordT,1)) << _S_whichbit(__pos);
1273.220 -  }
1273.221 -
1273.222 -  _WordT& _M_getword(size_t)       { return _M_w; }
1273.223 -  _WordT  _M_getword(size_t) const { return _M_w; }
1273.224 -
1273.225 -  _WordT& _M_hiword()       { return _M_w; }
1273.226 -  _WordT  _M_hiword() const { return _M_w; }
1273.227 -
1273.228 -
1273.229 -  void _M_do_and(const _Self& __x) { _M_w &= __x._M_w; }
1273.230 -  void _M_do_or(const _Self& __x)  { _M_w |= __x._M_w; }
1273.231 -  void _M_do_xor(const _Self& __x) { _M_w ^= __x._M_w; }
1273.232 -  void _M_do_left_shift(size_t __shift)     { _M_w <<= __shift; }
1273.233 -  void _M_do_right_shift(size_t __shift)    { _M_w >>= __shift; }
1273.234 -  void _M_do_flip()                       { _M_w = ~_M_w; }
1273.235 -  void _M_do_set()                        { _M_w = ~__STATIC_CAST(_WordT,0); }
1273.236 -  void _M_do_reset()                      { _M_w = 0; }
1273.237 -
1273.238 -  bool _M_is_equal(const _Self& __x) const {
1273.239 -    return _M_w == __x._M_w;
1273.240 -  }
1273.241 -  bool _M_is_any() const {
1273.242 -    return _M_w != 0;
1273.243 -  }
1273.244 -
1273.245 -  size_t _M_do_count() const {
1273.246 -    size_t __result = 0;
1273.247 -    const unsigned char* __byte_ptr = (const unsigned char*)&_M_w;
1273.248 -    const unsigned char* __end_ptr = ((const unsigned char*)&_M_w)+sizeof(_M_w);
1273.249 -    while ( __byte_ptr < __end_ptr ) {
1273.250 -      __result += _Bs_G<bool>::_S_bit_count[*__byte_ptr];
1273.251 -      __byte_ptr++;
1273.252 -    }
1273.253 -    return __result;
1273.254 -  }
1273.255 -
1273.256 -  unsigned long _M_do_to_ulong() const { return _M_w; }
1273.257 -
1273.258 -  inline size_t _M_do_find_first(size_t __not_found) const;
1273.259 -
1273.260 -  // find the next "on" bit that follows "prev"
1273.261 -  inline size_t _M_do_find_next(size_t __prev, size_t __not_found) const; 
1273.262 -
1273.263 -};
1273.264 -
1273.265 -
1273.266 -// ------------------------------------------------------------
1273.267 -//
1273.268 -// Definitions of should-be-non-inline functions from the single-word version of
1273.269 -//  _Base_bitset.
1273.270 -//
1273.271 -
1273.272 -inline size_t 
1273.273 -_Base_bitset<1UL>::_M_do_find_first(size_t __not_found) const
1273.274 -{
1273.275 -  //  typedef unsigned long _WordT;
1273.276 -  _WordT __thisword = _M_w;
1273.277 -
1273.278 -  if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1273.279 -    // find byte within word
1273.280 -    for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
1273.281 -      unsigned char __this_byte
1273.282 -        = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1273.283 -      if ( __this_byte )
1273.284 -        return __j*CHAR_BIT + _Bs_G<bool>::_S_first_one[__this_byte];
1273.285 -
1273.286 -      __thisword >>= CHAR_BIT;
1273.287 -    }
1273.288 -  }
1273.289 -  // not found, so return a value that indicates failure.
1273.290 -  return __not_found;
1273.291 -}
1273.292 -
1273.293 -inline size_t 
1273.294 -_Base_bitset<1UL>::_M_do_find_next(size_t __prev, 
1273.295 -                                   size_t __not_found ) const
1273.296 -{
1273.297 -  // make bound inclusive
1273.298 -  ++__prev;
1273.299 -
1273.300 -  // check out of bounds
1273.301 -  if ( __prev >= __BITS_PER_WORD )
1273.302 -    return __not_found;
1273.303 -
1273.304 -    // search first (and only) word
1273.305 -  _WordT __thisword = _M_w;
1273.306 -
1273.307 -  // mask off bits below bound
1273.308 -  __thisword &= (~__STATIC_CAST(_WordT,0)) << _S_whichbit(__prev);
1273.309 -
1273.310 -  if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1273.311 -    // find byte within word
1273.312 -    // get first byte into place
1273.313 -    __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
1273.314 -    for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
1273.315 -      unsigned char __this_byte
1273.316 -        = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1273.317 -      if ( __this_byte )
1273.318 -        return __j*CHAR_BIT + _Bs_G<bool>::_S_first_one[__this_byte];
1273.319 -
1273.320 -      __thisword >>= CHAR_BIT;
1273.321 -    }
1273.322 -  }
1273.323 -
1273.324 -  // not found, so return a value that indicates failure.
1273.325 -  return __not_found;
1273.326 -} // end _M_do_find_next
1273.327 -
1273.328 -
1273.329 -// ------------------------------------------------------------
1273.330 -// Helper class to zero out the unused high-order bits in the highest word.
1273.331 -
1273.332 -template <size_t _Extrabits> struct _Sanitize {
1273.333 -  static void _STLP_CALL _M_do_sanitize(unsigned long& __val)
1273.334 -    { __val &= ~((~__STATIC_CAST(unsigned long,0)) << _Extrabits); }
1273.335 -};
1273.336 -
1273.337 -_STLP_TEMPLATE_NULL struct _Sanitize<0UL> {
1273.338 -  static void _STLP_CALL _M_do_sanitize(unsigned long) {}
1273.339 -};
1273.340 -
1273.341 -// ------------------------------------------------------------
1273.342 -// Class bitset.
1273.343 -//   _Nb may be any nonzero number of type size_t.
1273.344 -
1273.345 -
1273.346 -template<size_t _Nb>
1273.347 -class bitset : public _Base_bitset<__BITSET_WORDS(_Nb) > 
1273.348 -{
1273.349 -public:
1273.350 -  enum { _Words = __BITSET_WORDS(_Nb) } ;
1273.351 -
1273.352 -private:
1273.353 -  typedef _Base_bitset< _Words > _Base;
1273.354 -
1273.355 -  void _M_do_sanitize() {
1273.356 -    _Sanitize<_Nb%__BITS_PER_WORD >::_M_do_sanitize(this->_M_hiword());
1273.357 -  }
1273.358 -public:
1273.359 -  typedef unsigned long _WordT;
1273.360 -  struct reference;
1273.361 -  friend struct reference;
1273.362 -
1273.363 -  // bit reference:
1273.364 -  struct reference {
1273.365 -  typedef _Base_bitset<_Words > _Bitset_base;
1273.366 -  typedef bitset<_Nb> _Bitset;
1273.367 -    //    friend _Bitset;
1273.368 -    _WordT *_M_wp;
1273.369 -    size_t _M_bpos;
1273.370 -
1273.371 -    // should be left undefined
1273.372 -    reference() {}
1273.373 -
1273.374 -    reference( _Bitset& __b, size_t __pos ) {
1273.375 -      _M_wp = &__b._M_getword(__pos);
1273.376 -      _M_bpos = _Bitset_base::_S_whichbit(__pos);
1273.377 -    }
1273.378 -
1273.379 -  public:
1273.380 -    ~reference() {}
1273.381 -
1273.382 -    // for b[i] = __x;
1273.383 -    reference& operator=(bool __x) {
1273.384 -      if ( __x )
1273.385 -        *_M_wp |= _Bitset_base::_S_maskbit(_M_bpos);
1273.386 -      else
1273.387 -        *_M_wp &= ~_Bitset_base::_S_maskbit(_M_bpos);
1273.388 -
1273.389 -      return *this;
1273.390 -    }
1273.391 -
1273.392 -    // for b[i] = b[__j];
1273.393 -    reference& operator=(const reference& __j) {
1273.394 -      if ( (*(__j._M_wp) & _Bitset_base::_S_maskbit(__j._M_bpos)) )
1273.395 -        *_M_wp |= _Bitset_base::_S_maskbit(_M_bpos);
1273.396 -      else
1273.397 -        *_M_wp &= ~_Bitset_base::_S_maskbit(_M_bpos);
1273.398 -
1273.399 -      return *this;
1273.400 -    }
1273.401 -
1273.402 -    // flips the bit
1273.403 -    bool operator~() const { return (*(_M_wp) & _Bitset_base::_S_maskbit(_M_bpos)) == 0; }
1273.404 -
1273.405 -    // for __x = b[i];
1273.406 -    operator bool() const { return (*(_M_wp) & _Bitset_base::_S_maskbit(_M_bpos)) != 0; }
1273.407 -
1273.408 -    // for b[i].flip();
1273.409 -    reference& flip() {
1273.410 -      *_M_wp ^= _Bitset_base::_S_maskbit(_M_bpos);
1273.411 -      return *this;
1273.412 -    }
1273.413 -  };
1273.414 -
1273.415 -  // 23.3.5.1 constructors:
1273.416 -  bitset() {}
1273.417 -
1273.418 -  bitset(unsigned long __val) : _Base_bitset<_Words>(__val) { _M_do_sanitize(); }
1273.419 -
1273.420 -# ifdef _STLP_MEMBER_TEMPLATES
1273.421 -  template<class _CharT, class _Traits, class _Alloc>
1273.422 -  explicit bitset(const basic_string<_CharT,_Traits,_Alloc>& __s,
1273.423 -                  size_t __pos = 0)
1273.424 -    : _Base_bitset<_Words >() 
1273.425 -  {
1273.426 -    if (__pos > __s.size()) 
1273.427 -      __stl_throw_out_of_range("bitset");
1273.428 -    _M_copy_from_string(__s, __pos,
1273.429 -                        basic_string<_CharT, _Traits, _Alloc>::npos);
1273.430 -  }
1273.431 -  template<class _CharT, class _Traits, class _Alloc>
1273.432 -  bitset(const basic_string<_CharT, _Traits, _Alloc>& __s,
1273.433 -          size_t __pos,
1273.434 -          size_t __n)
1273.435 -  : _Base_bitset<_Words >() 
1273.436 -  {
1273.437 -    if (__pos > __s.size()) 
1273.438 -      __stl_throw_out_of_range("bitset");
1273.439 -    _M_copy_from_string(__s, __pos, __n);
1273.440 -  }
1273.441 -#else /* _STLP_MEMBER_TEMPLATES */
1273.442 -  explicit bitset(const string& __s,
1273.443 -                  size_t __pos = 0,
1273.444 -                  size_t __n = (size_t)-1) 
1273.445 -    : _Base_bitset<_Words >() 
1273.446 -  {
1273.447 -    if (__pos > __s.size()) 
1273.448 -      __stl_throw_out_of_range("bitset");
1273.449 -    _M_copy_from_string(__s, __pos, __n);
1273.450 -  }
1273.451 -#endif /* _STLP_MEMBER_TEMPLATES */
1273.452 -
1273.453 -  // 23.3.5.2 bitset operations:
1273.454 -  bitset<_Nb>& operator&=(const bitset<_Nb>& __rhs) {
1273.455 -    this->_M_do_and(__rhs);
1273.456 -    return *this;
1273.457 -  }
1273.458 -
1273.459 -  bitset<_Nb>& operator|=(const bitset<_Nb>& __rhs) {
1273.460 -    this->_M_do_or(__rhs);
1273.461 -    return *this;
1273.462 -  }
1273.463 -
1273.464 -  bitset<_Nb>& operator^=(const bitset<_Nb>& __rhs) {
1273.465 -    this->_M_do_xor(__rhs);
1273.466 -    return *this;
1273.467 -  }
1273.468 -
1273.469 -  bitset<_Nb>& operator<<=(size_t __pos) {
1273.470 -#ifdef __SYMBIAN32__
1273.471 -	if(__pos < _Nb)
1273.472 -	{
1273.473 -    	this->_M_do_left_shift(__pos);
1273.474 -    	this->_M_do_sanitize();
1273.475 -	}
1273.476 -	else
1273.477 -		this->_M_do_reset();
1273.478 -#else
1273.479 -	this->_M_do_left_shift(__pos);
1273.480 -	this->_M_do_sanitize();
1273.481 -#endif
1273.482 -
1273.483 -    return *this;
1273.484 -  }
1273.485 -
1273.486 -  bitset<_Nb>& operator>>=(size_t __pos) {
1273.487 -#ifdef __SYMBIAN32__
1273.488 -	if(__pos < _Nb)
1273.489 -	{
1273.490 -    	this->_M_do_right_shift(__pos);
1273.491 -    	this->_M_do_sanitize();
1273.492 -	}
1273.493 -	else
1273.494 -		this->_M_do_reset();
1273.495 -#else
1273.496 -	this->_M_do_right_shift(__pos);
1273.497 -    this->_M_do_sanitize();
1273.498 -#endif
1273.499 -
1273.500 -    return *this;
1273.501 -  }
1273.502 -
1273.503 -  //
1273.504 -  // Extension:
1273.505 -  // Versions of single-bit set, reset, flip, test with no range checking.
1273.506 -  //
1273.507 -
1273.508 -  bitset<_Nb>& _Unchecked_set(size_t __pos) {
1273.509 -    this->_M_getword(__pos) |= _Base_bitset<_Words > ::_S_maskbit(__pos);
1273.510 -    return *this;
1273.511 -  }
1273.512 -
1273.513 -  bitset<_Nb>& _Unchecked_set(size_t __pos, int __val) {
1273.514 -    if (__val)
1273.515 -      this->_M_getword(__pos) |= this->_S_maskbit(__pos);
1273.516 -    else
1273.517 -      this->_M_getword(__pos) &= ~ this->_S_maskbit(__pos);
1273.518 -
1273.519 -    return *this;
1273.520 -  }
1273.521 -
1273.522 -  bitset<_Nb>& _Unchecked_reset(size_t __pos) {
1273.523 -    this->_M_getword(__pos) &= ~ this->_S_maskbit(__pos);
1273.524 -    return *this;
1273.525 -  }
1273.526 -
1273.527 -  bitset<_Nb>& _Unchecked_flip(size_t __pos) {
1273.528 -    this->_M_getword(__pos) ^= this->_S_maskbit(__pos);
1273.529 -    return *this;
1273.530 -  }
1273.531 -
1273.532 -  bool _Unchecked_test(size_t __pos) const {
1273.533 -    return (this->_M_getword(__pos) & this->_S_maskbit(__pos)) != __STATIC_CAST(_WordT,0);
1273.534 -  }
1273.535 -
1273.536 -  // Set, reset, and flip.
1273.537 -
1273.538 -  bitset<_Nb>& set() {
1273.539 -    this->_M_do_set();
1273.540 -    this->_M_do_sanitize();
1273.541 -    return *this;
1273.542 -  }
1273.543 -
1273.544 -  bitset<_Nb>& set(size_t __pos) {
1273.545 -    if (__pos >= _Nb)
1273.546 -      __stl_throw_out_of_range("bitset");
1273.547 -    return _Unchecked_set(__pos);
1273.548 -  }
1273.549 -
1273.550 -  bitset<_Nb>& set(size_t __pos, int __val) {
1273.551 -    if (__pos >= _Nb)
1273.552 -      __stl_throw_out_of_range("bitset");
1273.553 -    return _Unchecked_set(__pos, __val);
1273.554 -  }
1273.555 -
1273.556 -  bitset<_Nb>& reset() {
1273.557 -    this->_M_do_reset();
1273.558 -    return *this;
1273.559 -  }
1273.560 -
1273.561 -  bitset<_Nb>& reset(size_t __pos) {
1273.562 -    if (__pos >= _Nb)
1273.563 -      __stl_throw_out_of_range("bitset");
1273.564 -
1273.565 -    return _Unchecked_reset(__pos);
1273.566 -  }
1273.567 -
1273.568 -  bitset<_Nb>& flip() {
1273.569 -    this->_M_do_flip();
1273.570 -    this->_M_do_sanitize();
1273.571 -    return *this;
1273.572 -  }
1273.573 -
1273.574 -  bitset<_Nb>& flip(size_t __pos) {
1273.575 -    if (__pos >= _Nb)
1273.576 -      __stl_throw_out_of_range("bitset");
1273.577 -
1273.578 -    return _Unchecked_flip(__pos);
1273.579 -  }
1273.580 -
1273.581 -  bitset<_Nb> operator~() const { 
1273.582 -    return bitset<_Nb>(*this).flip();
1273.583 -  }
1273.584 -
1273.585 -  // element access:
1273.586 -  //for b[i];
1273.587 -  reference operator[](size_t __pos) { return reference(*this,__pos); }
1273.588 -  bool operator[](size_t __pos) const { return _Unchecked_test(__pos); }
1273.589 -
1273.590 -  unsigned long to_ulong() const { return this->_M_do_to_ulong(); }
1273.591 -
1273.592 -#if defined (_STLP_MEMBER_TEMPLATES) && !  defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
1273.593 -  template <class _CharT, class _Traits, class _Alloc>
1273.594 -  basic_string<_CharT, _Traits, _Alloc> to_string() const {
1273.595 -    basic_string<_CharT, _Traits, _Alloc> __result;
1273.596 -    _M_copy_to_string(__result);
1273.597 -    return __result;
1273.598 -  }
1273.599 -#else
1273.600 -  string to_string() const {
1273.601 -    string __result;
1273.602 -    _M_copy_to_string(__result);
1273.603 -    return __result;
1273.604 -  }
1273.605 -#endif /* _STLP_EXPLICIT_FUNCTION_TMPL_ARGS */
1273.606 -
1273.607 -  size_t count() const { return this->_M_do_count(); }
1273.608 -
1273.609 -  size_t size() const { return _Nb; }
1273.610 -
1273.611 -  bool operator==(const bitset<_Nb>& __rhs) const {
1273.612 -    return this->_M_is_equal(__rhs);
1273.613 -  }
1273.614 -  bool operator!=(const bitset<_Nb>& __rhs) const {
1273.615 -    return !this->_M_is_equal(__rhs);
1273.616 -  }
1273.617 -
1273.618 -  bool test(size_t __pos) const {
1273.619 -    if (__pos >= _Nb)
1273.620 -      __stl_throw_out_of_range("bitset");
1273.621 -    
1273.622 -    return _Unchecked_test(__pos);
1273.623 -  }
1273.624 -
1273.625 -  bool any() const { return this->_M_is_any(); }
1273.626 -  bool none() const { return !this->_M_is_any(); }
1273.627 -
1273.628 -  bitset<_Nb> operator<<(size_t __pos) const { 
1273.629 -    bitset<_Nb> __result(*this);
1273.630 -    __result <<= __pos ;  return __result; 
1273.631 -  }
1273.632 -  bitset<_Nb> operator>>(size_t __pos) const { 
1273.633 -    bitset<_Nb> __result(*this);
1273.634 -    __result >>= __pos ;  return __result; 
1273.635 -  }
1273.636 -
1273.637 -  //
1273.638 -  // EXTENSIONS: bit-find operations.  These operations are
1273.639 -  // experimental, and are subject to change or removal in future
1273.640 -  // versions.
1273.641 -  // 
1273.642 -
1273.643 -  // find the index of the first "on" bit
1273.644 -  size_t _Find_first() const 
1273.645 -    { return this->_M_do_find_first(_Nb); }
1273.646 -
1273.647 -  // find the index of the next "on" bit after prev
1273.648 -  size_t _Find_next( size_t __prev ) const 
1273.649 -    { return this->_M_do_find_next(__prev, _Nb); }
1273.650 -
1273.651 -//
1273.652 -// Definitions of should-be non-inline member functions.
1273.653 -//
1273.654 -# if defined (_STLP_MEMBER_TEMPLATES)
1273.655 -  template<class _CharT, class _Traits, class _Alloc>
1273.656 -    void _M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s,
1273.657 -			     size_t __pos,
1273.658 -			     size_t __n) {
1273.659 -#else
1273.660 -    void _M_copy_from_string(const string& __s,
1273.661 -			     size_t __pos,
1273.662 -			     size_t __n) {
1273.663 -      typedef char_traits<char> _Traits;
1273.664 -#endif
1273.665 -      reset();
1273.666 -      size_t __tmp = _Nb;
1273.667 -      const size_t __Nbits = (min) (__tmp, (min) (__n, __s.size() - __pos));
1273.668 -      for ( size_t __i= 0; __i < __Nbits; ++__i) {
1273.669 -        typename _Traits::int_type __k = _Traits::to_int_type(__s[__pos + __Nbits - __i - 1]);
1273.670 -        // boris : widen() ?
1273.671 -        if (__k == '1')
1273.672 -          set(__i);
1273.673 -        else if (__k !='0')
1273.674 -          __stl_throw_invalid_argument("bitset");
1273.675 -      }
1273.676 -    }
1273.677 -  
1273.678 -# if defined (_STLP_MEMBER_TEMPLATES)
1273.679 -  template <class _CharT, class _Traits, class _Alloc>
1273.680 -    void _M_copy_to_string(basic_string<_CharT, _Traits, _Alloc>& __s) const
1273.681 -# else
1273.682 -    void _M_copy_to_string(string& __s) const
1273.683 -# endif
1273.684 -    {
1273.685 -      __s.assign(_Nb, '0');
1273.686 -      
1273.687 -      for (size_t __i = 0; __i < _Nb; ++__i) 
1273.688 -	if (_Unchecked_test(__i))
1273.689 -	  __s[_Nb - 1 - __i] = '1';
1273.690 -    }
1273.691 -
1273.692 -# if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1273.693 -  bitset<_Nb> operator&(const bitset<_Nb>& __y) const {
1273.694 -    bitset<_Nb> __result(*this);
1273.695 -    __result &= __y;
1273.696 -    return __result;
1273.697 -  }
1273.698 -  bitset<_Nb> operator|(const bitset<_Nb>& __y) const {
1273.699 -    bitset<_Nb> __result(*this);
1273.700 -    __result |= __y;
1273.701 -    return __result;
1273.702 -  }
1273.703 -  bitset<_Nb> operator^(const bitset<_Nb>& __y) const {
1273.704 -    bitset<_Nb> __result(*this);
1273.705 -    __result ^= __y;
1273.706 -    return __result;
1273.707 -  }
1273.708 -# endif 
1273.709 -
1273.710 -};
1273.711 -
1273.712 -// ------------------------------------------------------------
1273.713 -//
1273.714 -// 23.3.5.3 bitset operations:
1273.715 -//
1273.716 -
1273.717 -# if ! defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1273.718 -
1273.719 -template <size_t _Nb>
1273.720 -inline bitset<_Nb>  _STLP_CALL
1273.721 -operator&(const bitset<_Nb>& __x,
1273.722 -          const bitset<_Nb>& __y) {
1273.723 -  bitset<_Nb> __result(__x);
1273.724 -  __result &= __y;
1273.725 -  return __result;
1273.726 -}
1273.727 -
1273.728 -
1273.729 -template <size_t _Nb>
1273.730 -inline bitset<_Nb>  _STLP_CALL
1273.731 -operator|(const bitset<_Nb>& __x,
1273.732 -          const bitset<_Nb>& __y) {
1273.733 -  bitset<_Nb> __result(__x);
1273.734 -  __result |= __y;
1273.735 -  return __result;
1273.736 -}
1273.737 -
1273.738 -template <size_t _Nb>
1273.739 -inline bitset<_Nb>  _STLP_CALL
1273.740 -operator^(const bitset<_Nb>& __x,
1273.741 -          const bitset<_Nb>& __y) {
1273.742 -  bitset<_Nb> __result(__x);
1273.743 -  __result ^= __y;
1273.744 -  return __result;
1273.745 -}
1273.746 -
1273.747 -#if defined ( _STLP_USE_NEW_IOSTREAMS )
1273.748 -
1273.749 -template <class _CharT, class _Traits, size_t _Nb>
1273.750 -basic_istream<_CharT, _Traits>&  _STLP_CALL
1273.751 -operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x);
1273.752 -
1273.753 -
1273.754 -template <class _CharT, class _Traits, size_t _Nb>
1273.755 -basic_ostream<_CharT, _Traits>& _STLP_CALL
1273.756 -operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Nb>& __x);
1273.757 -
1273.758 -#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
1273.759 -
1273.760 -// (reg) For Watcom IO, this tells if ostream class is in .exe or in .dll
1273.761 -template <size_t _Nb>
1273.762 -_ISTREAM_DLL& _STLP_CALL
1273.763 -operator>>(_ISTREAM_DLL& __is, bitset<_Nb>& __x);
1273.764 -
1273.765 -template <size_t _Nb>
1273.766 -inline _OSTREAM_DLL&  _STLP_CALL operator<<(_OSTREAM_DLL& __os, const bitset<_Nb>& __x) {
1273.767 -  string __tmp;
1273.768 -  __x._M_copy_to_string(__tmp);
1273.769 -  return __os << __tmp;
1273.770 -}
1273.771 -
1273.772 -#endif
1273.773 -
1273.774 -# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1273.775 -
1273.776 -#  undef  bitset
1273.777 -
1273.778 -
1273.779 -_STLP_END_NAMESPACE
1273.780 -
1273.781 -#  undef __BITS_PER_WORD
1273.782 -#  undef __BITSET_WORDS
1273.783 -
1273.784 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1273.785 -#  include <stl/_bitset.c>
1273.786 -# endif
1273.787 -
1273.788 -#endif /* _STLP_BITSET_H */
1273.789 -
1273.790 -
1273.791 -// Local Variables:
1273.792 -// mode:C++
1273.793 -// End:
1273.794 -
  1274.1 --- a/epoc32/include/stdapis/stlport/stl/_bvector.h	Tue Mar 16 16:12:26 2010 +0000
  1274.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1274.3 @@ -1,831 +0,0 @@
  1274.4 -/*
  1274.5 - *
  1274.6 - * Copyright (c) 1994
  1274.7 - * Hewlett-Packard Company
  1274.8 - *
  1274.9 - * Copyright (c) 1996,1997
 1274.10 - * Silicon Graphics Computer Systems, Inc.
 1274.11 - *
 1274.12 - * Copyright (c) 1997
 1274.13 - * Moscow Center for SPARC Technology
 1274.14 - *
 1274.15 - * Copyright (c) 1999 
 1274.16 - * Boris Fomitchev
 1274.17 - *
 1274.18 - * This material is provided "as is", with absolutely no warranty expressed
 1274.19 - * or implied. Any use is at your own risk.
 1274.20 - *
 1274.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1274.22 - * without fee, provided the above notices are retained on all copies.
 1274.23 - * Permission to modify the code and to distribute modified code is granted,
 1274.24 - * provided the above notices are retained, and a notice that the code was
 1274.25 - * modified is included with the above copyright notice.
 1274.26 - *
 1274.27 - */
 1274.28 -
 1274.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1274.30 - *   You should not attempt to use it directly.
 1274.31 - */
 1274.32 -
 1274.33 -#ifndef _STLP_INTERNAL_BVECTOR_H
 1274.34 -#define _STLP_INTERNAL_BVECTOR_H
 1274.35 -
 1274.36 -#ifndef _STLP_INTERNAL_VECTOR_H
 1274.37 -# include <stl/_vector.h>
 1274.38 -# endif
 1274.39 -
 1274.40 -#ifndef __WORD_BIT
 1274.41 -#define __WORD_BIT (int(CHAR_BIT*sizeof(unsigned int)))
 1274.42 -#endif
 1274.43 -
 1274.44 -_STLP_BEGIN_NAMESPACE 
 1274.45 -
 1274.46 -struct _Bit_reference {
 1274.47 -  unsigned int* _M_p;
 1274.48 -  unsigned int _M_mask;
 1274.49 -  _Bit_reference(unsigned int* __x, unsigned int __y) 
 1274.50 -    : _M_p(__x), _M_mask(__y) {}
 1274.51 -
 1274.52 -public:
 1274.53 -  _Bit_reference() : _M_p(0), _M_mask(0) {}
 1274.54 -
 1274.55 -  operator bool() const { 
 1274.56 -	  return !(!(*_M_p & _M_mask)); 
 1274.57 -  }
 1274.58 -  _Bit_reference& operator=(bool __x) {
 1274.59 -    if (__x)  *_M_p |= _M_mask;
 1274.60 -    else      *_M_p &= ~_M_mask;
 1274.61 -    return *this;
 1274.62 -  }
 1274.63 -  _Bit_reference& operator=(const _Bit_reference& __x) {
 1274.64 -	  return *this = bool(__x); 
 1274.65 -  }
 1274.66 -  bool operator==(const _Bit_reference& __x) const {
 1274.67 -	  return bool(*this) == bool(__x); 
 1274.68 -  }
 1274.69 -  bool operator<(const _Bit_reference& __x) const {
 1274.70 -    return !bool(*this) && bool(__x);
 1274.71 -  }
 1274.72 -
 1274.73 -  _Bit_reference& operator |= (bool __x) {
 1274.74 -	  if (__x)
 1274.75 -		  *_M_p |= _M_mask;
 1274.76 -	  return *this;
 1274.77 -  }
 1274.78 -  _Bit_reference& operator &= (bool __x) {
 1274.79 -	  if (!__x)
 1274.80 -		  *_M_p &= ~_M_mask;
 1274.81 -	  return *this;
 1274.82 -  }
 1274.83 -  void flip() { *_M_p ^= _M_mask; }
 1274.84 -};
 1274.85 -
 1274.86 -
 1274.87 -inline void swap(_Bit_reference& __x, _Bit_reference& __y)
 1274.88 -{
 1274.89 -  bool __tmp = (bool)__x;
 1274.90 -  __x = __y;
 1274.91 -  __y = __tmp;
 1274.92 -}
 1274.93 -
 1274.94 -struct _Bit_iterator_base;
 1274.95 -
 1274.96 -struct _Bit_iterator_base
 1274.97 -{
 1274.98 -  typedef ptrdiff_t difference_type;
 1274.99 -
1274.100 -  unsigned int* _M_p;
1274.101 -  unsigned int  _M_offset;
1274.102 -
1274.103 -  void _M_bump_up() {
1274.104 -    if (_M_offset++ == __WORD_BIT - 1) {
1274.105 -      _M_offset = 0;
1274.106 -      ++_M_p;
1274.107 -    }
1274.108 -  }
1274.109 -
1274.110 -  void _M_bump_down() {
1274.111 -    if (_M_offset-- == 0) {
1274.112 -      _M_offset = __WORD_BIT - 1;
1274.113 -      --_M_p;
1274.114 -    }
1274.115 -  }
1274.116 -
1274.117 -  _Bit_iterator_base() : _M_p(0), _M_offset(0) {}
1274.118 -  _Bit_iterator_base(unsigned int* __x, unsigned int __y) : _M_p(__x), _M_offset(__y) {}
1274.119 -  //  _Bit_iterator_base( const _Bit_iterator_base& __x) : _M_p(__x._M_p), _M_offset(__x._M_offset) {}
1274.120 -  //  _Bit_iterator_base& operator = ( const _Bit_iterator_base& __x) { _M_p = __x._M_p ; _M_offset = __x._M_offset ; return *this; }
1274.121 -
1274.122 -  void _M_advance (difference_type __i) {
1274.123 -    difference_type __n = __i + _M_offset;
1274.124 -    _M_p += __n / __WORD_BIT;
1274.125 -    __n = __n % __WORD_BIT;
1274.126 -    if (__n < 0) {
1274.127 -      _M_offset = (unsigned int) __n + __WORD_BIT;
1274.128 -      --_M_p;
1274.129 -    } else
1274.130 -      _M_offset = (unsigned int) __n;
1274.131 -  }
1274.132 -
1274.133 -  difference_type _M_subtract(const _Bit_iterator_base& __x) const {
1274.134 -    return __WORD_BIT * (_M_p - __x._M_p) + _M_offset - __x._M_offset;
1274.135 -  }
1274.136 -};
1274.137 -
1274.138 -inline bool  _STLP_CALL operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) {
1274.139 -  return __y._M_p == __x._M_p && __y._M_offset == __x._M_offset;
1274.140 -}
1274.141 -inline bool  _STLP_CALL operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) {
1274.142 -  return __y._M_p != __x._M_p || __y._M_offset != __x._M_offset;
1274.143 -}
1274.144 -
1274.145 -inline bool _STLP_CALL operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) {
1274.146 -  return __x._M_p < __y._M_p || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset);
1274.147 -}
1274.148 -
1274.149 -inline bool _STLP_CALL operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)  { 
1274.150 -  return operator <(__y , __x); 
1274.151 -}
1274.152 -inline bool _STLP_CALL operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { 
1274.153 -  return !(__y < __x); 
1274.154 -}
1274.155 -inline bool _STLP_CALL operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { 
1274.156 -  return !(__x < __y); 
1274.157 -}
1274.158 -
1274.159 -template <class _Ref, class _Ptr>
1274.160 -struct _Bit_iter : public _Bit_iterator_base
1274.161 -{
1274.162 -  typedef _Ref  reference;
1274.163 -  typedef _Ptr  pointer;
1274.164 -  typedef _Bit_iter<_Ref, _Ptr> _Self;
1274.165 -  typedef random_access_iterator_tag iterator_category;
1274.166 -  typedef bool value_type;
1274.167 -  typedef ptrdiff_t difference_type;
1274.168 -  typedef size_t size_type;
1274.169 -
1274.170 -  _Bit_iter(unsigned int* __x, unsigned int __y) : _Bit_iterator_base(__x, __y) {}
1274.171 -  _Bit_iter() {}
1274.172 -
1274.173 -  _Bit_iter(const _Bit_iter<_Bit_reference, _Bit_reference*>& __x): 
1274.174 -    _Bit_iterator_base((const _Bit_iterator_base&)__x) {}
1274.175 -
1274.176 -  //  _Self& operator = (const _Bit_iter<_Bit_reference, _Bit_reference*>& __x)
1274.177 -  //   { (_Bit_iterator_base&)*this = (const _Bit_iterator_base&)__x; return *this; }
1274.178 -
1274.179 -  reference operator*() const { 
1274.180 -    return _Bit_reference(_M_p, 1UL << _M_offset); 
1274.181 -  }
1274.182 -  _Self& operator++() {
1274.183 -    _M_bump_up();
1274.184 -    return *this;
1274.185 -  }
1274.186 -  _Self operator++(int) {
1274.187 -    _Self __tmp = *this;
1274.188 -    _M_bump_up();
1274.189 -    return __tmp;
1274.190 -  }
1274.191 -  _Self& operator--() {
1274.192 -    _M_bump_down();
1274.193 -    return *this;
1274.194 -  }
1274.195 -  _Self operator--(int) {
1274.196 -    _Self __tmp = *this;
1274.197 -    _M_bump_down();
1274.198 -    return __tmp;
1274.199 -  }
1274.200 -  _Self& operator+=(difference_type __i) {
1274.201 -    _M_advance(__i);
1274.202 -    return *this;
1274.203 -  }
1274.204 -  _Self& operator-=(difference_type __i) {
1274.205 -    *this += -__i;
1274.206 -    return *this;
1274.207 -  }
1274.208 -  _Self operator+(difference_type __i) const {
1274.209 -    _Self __tmp = *this;
1274.210 -    return __tmp += __i;
1274.211 -  }
1274.212 -  _Self operator-(difference_type __i) const {
1274.213 -    _Self __tmp = *this;
1274.214 -    return __tmp -= __i;
1274.215 -  }
1274.216 -  difference_type operator-(const _Self& __x) const {
1274.217 -    return _M_subtract(__x);
1274.218 -  }
1274.219 -  reference operator[](difference_type __i) { return *(*this + __i); }
1274.220 -};
1274.221 -
1274.222 -template <class _Ref, class _Ptr>
1274.223 -inline _Bit_iter<_Ref,_Ptr>  _STLP_CALL
1274.224 -operator+(ptrdiff_t __n, const _Bit_iter<_Ref, _Ptr>& __x) {
1274.225 -   return __x + __n;
1274.226 -}
1274.227 -
1274.228 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1274.229 -inline random_access_iterator_tag  iterator_category(const _Bit_iterator_base&) {return random_access_iterator_tag();}
1274.230 -inline ptrdiff_t* distance_type(const _Bit_iterator_base&) {return (ptrdiff_t*)0;}
1274.231 -inline bool* value_type(const _Bit_iter<_Bit_reference, _Bit_reference*>&) {return (bool*)0;}
1274.232 -inline bool* value_type(const _Bit_iter<bool, const bool*>&) {return (bool*)0;}
1274.233 -# endif
1274.234 -
1274.235 -typedef _Bit_iter<bool, const bool*> _Bit_const_iterator;
1274.236 -typedef _Bit_iter<_Bit_reference, _Bit_reference*> _Bit_iterator;
1274.237 -
1274.238 -// Bit-vector base class, which encapsulates the difference between
1274.239 -//  old SGI-style allocators and standard-conforming allocators.
1274.240 -
1274.241 -
1274.242 -template <class _Alloc>
1274.243 -class _Bvector_base
1274.244 -{
1274.245 -public:
1274.246 -  _STLP_FORCE_ALLOCATORS(bool, _Alloc)
1274.247 -  typedef typename _Alloc_traits<bool, _Alloc>::allocator_type allocator_type;
1274.248 -  typedef unsigned int __chunk_type;
1274.249 -  typedef typename _Alloc_traits<__chunk_type, 
1274.250 -          _Alloc>::allocator_type __chunk_allocator_type;
1274.251 -  allocator_type get_allocator() const { 
1274.252 -    return _STLP_CONVERT_ALLOCATOR((const __chunk_allocator_type&)_M_end_of_storage, bool); 
1274.253 -  }
1274.254 -  static allocator_type __get_dfl_allocator() { return allocator_type(); }
1274.255 -   
1274.256 -  _Bvector_base(const allocator_type& __a)
1274.257 -    : _M_start(), _M_finish(), _M_end_of_storage(_STLP_CONVERT_ALLOCATOR(__a, __chunk_type),
1274.258 -						 (__chunk_type*)0) {
1274.259 -  }
1274.260 -  ~_Bvector_base() { _M_deallocate();
1274.261 -  }
1274.262 -
1274.263 -protected:
1274.264 -
1274.265 -  unsigned int* _M_bit_alloc(size_t __n) 
1274.266 -    { return _M_end_of_storage.allocate((__n + __WORD_BIT - 1)/__WORD_BIT); }
1274.267 -  void _M_deallocate() {
1274.268 -    if (_M_start._M_p)
1274.269 -      _M_end_of_storage.deallocate(_M_start._M_p,
1274.270 -				   _M_end_of_storage._M_data - _M_start._M_p);
1274.271 -  }
1274.272 -
1274.273 -  _Bit_iterator _M_start;
1274.274 -  _Bit_iterator _M_finish;
1274.275 -  _STLP_alloc_proxy<__chunk_type*, __chunk_type, __chunk_allocator_type> _M_end_of_storage;  
1274.276 -};
1274.277 -
1274.278 -
1274.279 -// The next few lines are confusing.  What we're doing is declaring a
1274.280 -//  partial specialization of vector<T, Alloc> if we have the necessary
1274.281 -//  compiler support.  Otherwise, we define a class bit_vector which uses
1274.282 -//  the default allocator. 
1274.283 -
1274.284 -#if defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined(_STLP_NO_BOOL) && ! defined (__SUNPRO_CC)
1274.285 -# define _STLP_VECBOOL_TEMPLATE
1274.286 -# define __BVEC_TMPL_HEADER template <class _Alloc>
1274.287 -#else
1274.288 -# undef _STLP_VECBOOL_TEMPLATE
1274.289 -# ifdef _STLP_NO_BOOL
1274.290 -#  define __BVEC_TMPL_HEADER
1274.291 -# else
1274.292 -#  define __BVEC_TMPL_HEADER _STLP_TEMPLATE_NULL
1274.293 -# endif
1274.294 -# if !(defined(__MRC__)||(defined(__SC__)&&!defined(__DMC__)))			//*TY 12/17/2000 - 
1274.295 -#  define _Alloc _STLP_DEFAULT_ALLOCATOR(bool)
1274.296 -# else
1274.297 -#  define _Alloc allocator<bool>
1274.298 -# endif
1274.299 -#endif
1274.300 -
1274.301 -#ifdef _STLP_NO_BOOL
1274.302 -# define __BVECTOR_QUALIFIED bit_vector
1274.303 -# define __BVECTOR           bit_vector
1274.304 -#else
1274.305 -# ifdef _STLP_VECBOOL_TEMPLATE
1274.306 -#  define __BVECTOR_QUALIFIED __WORKAROUND_DBG_RENAME(vector) <bool, _Alloc>
1274.307 -# else
1274.308 -#  define __BVECTOR_QUALIFIED __WORKAROUND_DBG_RENAME(vector) <bool, allocator<bool> >
1274.309 -# endif
1274.310 -#if defined (_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS)
1274.311 -# define __BVECTOR __BVECTOR_QUALIFIED
1274.312 -#else
1274.313 -# define __BVECTOR __WORKAROUND_DBG_RENAME(vector)
1274.314 -#endif
1274.315 -#endif
1274.316 -
1274.317 -
1274.318 -__BVEC_TMPL_HEADER
1274.319 -class __BVECTOR_QUALIFIED : public _Bvector_base<_Alloc >
1274.320 -{
1274.321 -  typedef _Bvector_base<_Alloc > _Base;
1274.322 -  typedef __BVECTOR_QUALIFIED _Self;
1274.323 -public:
1274.324 -  typedef bool value_type;
1274.325 -  typedef size_t size_type;
1274.326 -  typedef ptrdiff_t difference_type; 
1274.327 -  typedef _Bit_reference reference;
1274.328 -  typedef bool const_reference;
1274.329 -  typedef _Bit_reference* pointer;
1274.330 -  typedef const bool* const_pointer;
1274.331 -  typedef random_access_iterator_tag _Iterator_category;
1274.332 -
1274.333 -  typedef _Bit_iterator                iterator;
1274.334 -  typedef _Bit_const_iterator          const_iterator;
1274.335 -
1274.336 -#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1274.337 -  typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator;
1274.338 -  typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator;
1274.339 -#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1274.340 -# if defined (_STLP_MSVC50_COMPATIBILITY)
1274.341 -  typedef _STLP_STD::reverse_iterator<const_iterator, value_type, const_reference, 
1274.342 -  const_pointer, difference_type> const_reverse_iterator;
1274.343 -  typedef _STLP_STD::reverse_iterator<iterator, value_type, reference, reference*, 
1274.344 -  difference_type> reverse_iterator;
1274.345 -# else
1274.346 -  typedef _STLP_STD::reverse_iterator<const_iterator, value_type, const_reference, 
1274.347 -                                  difference_type> const_reverse_iterator;
1274.348 -  typedef _STLP_STD::reverse_iterator<iterator, value_type, reference, difference_type>
1274.349 -          reverse_iterator;
1274.350 -# endif
1274.351 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1274.352 -
1274.353 -# ifdef _STLP_VECBOOL_TEMPLATE
1274.354 -  typedef typename _Bvector_base<_Alloc >::allocator_type allocator_type;
1274.355 -  typedef typename _Bvector_base<_Alloc >::__chunk_type __chunk_type ;
1274.356 -# else
1274.357 -  typedef _Bvector_base<_Alloc >::allocator_type allocator_type;
1274.358 -  typedef _Bvector_base<_Alloc >::__chunk_type __chunk_type ;
1274.359 -# endif
1274.360 -
1274.361 -protected:
1274.362 -
1274.363 -  void _M_initialize(size_type __n) {
1274.364 -    unsigned int* __q = this->_M_bit_alloc(__n);
1274.365 -    this->_M_end_of_storage._M_data = __q + (__n + __WORD_BIT - 1)/__WORD_BIT;
1274.366 -    this->_M_start = iterator(__q, 0);
1274.367 -    this->_M_finish = this->_M_start + difference_type(__n);
1274.368 -  }
1274.369 -  void _M_insert_aux(iterator __position, bool __x) {
1274.370 -    if (this->_M_finish._M_p != this->_M_end_of_storage._M_data) {
1274.371 -      __copy_backward(__position, this->_M_finish, this->_M_finish + 1, random_access_iterator_tag(), (difference_type*)0 );
1274.372 -      *__position = __x;
1274.373 -      ++this->_M_finish;
1274.374 -    }
1274.375 -    else {
1274.376 -      size_type __len = size() ? 2 * size() : __WORD_BIT;
1274.377 -      unsigned int* __q = this->_M_bit_alloc(__len);
1274.378 -      iterator __i = copy(begin(), __position, iterator(__q, 0));
1274.379 -      *__i++ = __x;
1274.380 -      this->_M_finish = copy(__position, end(), __i);
1274.381 -      this->_M_deallocate();
1274.382 -      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1274.383 -      this->_M_start = iterator(__q, 0);
1274.384 -    }
1274.385 -  }
1274.386 -
1274.387 -#ifdef _STLP_MEMBER_TEMPLATES
1274.388 -  template <class _InputIterator>
1274.389 -  void _M_initialize_range(_InputIterator __first, _InputIterator __last,
1274.390 -			const input_iterator_tag &) {
1274.391 -    this->_M_start = iterator();
1274.392 -    this->_M_finish = iterator();
1274.393 -    this->_M_end_of_storage._M_data = 0;
1274.394 -    for ( ; __first != __last; ++__first) 
1274.395 -      push_back(*__first);
1274.396 -  }
1274.397 -
1274.398 -  template <class _ForwardIterator>
1274.399 -  void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
1274.400 -                           const forward_iterator_tag &) {
1274.401 -    size_type __n = distance(__first, __last);
1274.402 -    _M_initialize(__n);
1274.403 -    //    copy(__first, __last, _M_start);
1274.404 -    copy(__first, __last, this->_M_start); // dwa 12/22/99 -- resolving ambiguous reference.
1274.405 -  }
1274.406 -
1274.407 -  template <class _InputIterator>
1274.408 -  void _M_insert_range(iterator __pos,
1274.409 -                       _InputIterator __first, _InputIterator __last,
1274.410 -                       const input_iterator_tag &) {
1274.411 -    for ( ; __first != __last; ++__first) {
1274.412 -      __pos = insert(__pos, *__first);
1274.413 -      ++__pos;
1274.414 -    }
1274.415 -  }
1274.416 -
1274.417 -  template <class _ForwardIterator>
1274.418 -  void _M_insert_range(iterator __position,
1274.419 -                       _ForwardIterator __first, _ForwardIterator __last,
1274.420 -                       const forward_iterator_tag &) {
1274.421 -    if (__first != __last) {
1274.422 -      size_type __n = distance(__first, __last);
1274.423 -      if (capacity() - size() >= __n) {
1274.424 -        __copy_backward(__position, end(), this->_M_finish + difference_type(__n), random_access_iterator_tag(), (difference_type*)0 );
1274.425 -        copy(__first, __last, __position);
1274.426 -        this->_M_finish += difference_type(__n);
1274.427 -      }
1274.428 -      else {
1274.429 -        size_type __len = size() + (max)(size(), __n);
1274.430 -        unsigned int* __q = this->_M_bit_alloc(__len);
1274.431 -        iterator __i = copy(begin(), __position, iterator(__q, 0));
1274.432 -        __i = copy(__first, __last, __i);
1274.433 -        this->_M_finish = copy(__position, end(), __i);
1274.434 -        this->_M_deallocate();
1274.435 -        this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1274.436 -        this->_M_start = iterator(__q, 0);
1274.437 -      }
1274.438 -    }
1274.439 -  }      
1274.440 -
1274.441 -#endif /* _STLP_MEMBER_TEMPLATES */
1274.442 -
1274.443 -public:
1274.444 -  iterator begin() { return this->_M_start; }
1274.445 -  const_iterator begin() const { return this->_M_start; }
1274.446 -  iterator end() { return this->_M_finish; }
1274.447 -  const_iterator end() const { return this->_M_finish; }
1274.448 -
1274.449 -  reverse_iterator rbegin() { return reverse_iterator(end()); }
1274.450 -  const_reverse_iterator rbegin() const { 
1274.451 -    return const_reverse_iterator(end()); 
1274.452 -  }
1274.453 -  reverse_iterator rend() { return reverse_iterator(begin()); }
1274.454 -  const_reverse_iterator rend() const { 
1274.455 -    return const_reverse_iterator(begin()); 
1274.456 -  }
1274.457 -
1274.458 -  size_type size() const { return size_type(end() - begin()); }
1274.459 -  size_type max_size() const { return size_type(-1); }
1274.460 -  size_type capacity() const {
1274.461 -    return size_type(const_iterator(this->_M_end_of_storage._M_data, 0) - begin());
1274.462 -  }
1274.463 -  bool empty() const { return begin() == end(); }
1274.464 -  reference operator[](size_type __n) 
1274.465 -  { return *(begin() + difference_type(__n)); }
1274.466 -  const_reference operator[](size_type __n) const 
1274.467 -  { return *(begin() + difference_type(__n)); }
1274.468 -
1274.469 -  void _M_range_check(size_type __n) const {
1274.470 -    if (__n >= this->size())
1274.471 -      __stl_throw_range_error("vector<bool>");
1274.472 -  }
1274.473 -
1274.474 -  reference at(size_type __n)
1274.475 -    { _M_range_check(__n); return (*this)[__n]; }
1274.476 -  const_reference at(size_type __n) const
1274.477 -    { _M_range_check(__n); return (*this)[__n]; }
1274.478 -
1274.479 -  explicit __BVECTOR(const allocator_type& __a = allocator_type())
1274.480 -    : _Bvector_base<_Alloc >(__a) {
1274.481 -    _STLP_POP_IF_CHECK
1274.482 -  }
1274.483 -
1274.484 -  __BVECTOR(size_type __n, bool __val,
1274.485 -            const allocator_type& __a = 
1274.486 -	    allocator_type())
1274.487 -    : _Bvector_base<_Alloc >(__a)
1274.488 -  {
1274.489 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.490 -    _M_initialize(__n);
1274.491 -    fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __val ? ~0 : 0);
1274.492 -    _STLP_POP_CLEANUP_ITEM	  
1274.493 -  }
1274.494 -
1274.495 -  explicit __BVECTOR(size_type __n)
1274.496 -    : _Bvector_base<_Alloc >(allocator_type())
1274.497 -  {
1274.498 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.499 -    _M_initialize(__n);
1274.500 -    fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), 0);
1274.501 -    _STLP_POP_CLEANUP_ITEM  
1274.502 -  }
1274.503 -
1274.504 -  __BVECTOR(const _Self& __x) : _Bvector_base<_Alloc >(__x.get_allocator()) {
1274.505 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.506 -    _M_initialize(__x.size());
1274.507 -    copy(__x.begin(), __x.end(), this->_M_start);
1274.508 -    _STLP_POP_CLEANUP_ITEM  
1274.509 -  }
1274.510 -
1274.511 -#if defined (_STLP_MEMBER_TEMPLATES)
1274.512 -  template <class _Integer>
1274.513 -  void _M_initialize_dispatch(_Integer __n, _Integer __x, const __true_type&) {
1274.514 -    _M_initialize(__n);
1274.515 -    fill(this->_M_start._M_p, this->_M_end_of_storage._M_data, __x ? ~0 : 0);
1274.516 -  }
1274.517 -    
1274.518 -  template <class _InputIterator>
1274.519 -  void _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
1274.520 -                              const __false_type&) {
1274.521 -    _M_initialize_range(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1274.522 -  }
1274.523 -# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
1274.524 -  // Check whether it's an integral type.  If so, it's not an iterator.
1274.525 -  template <class _InputIterator>
1274.526 -  __BVECTOR(_InputIterator __first, _InputIterator __last)
1274.527 -    : _Base(allocator_type())
1274.528 -  {
1274.529 -    typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1274.530 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.531 -    _M_initialize_dispatch(__first, __last, _Integral());
1274.532 -    _STLP_POP_CLEANUP_ITEM  
1274.533 -  }
1274.534 -# endif
1274.535 -  template <class _InputIterator>
1274.536 -  __BVECTOR(_InputIterator __first, _InputIterator __last,
1274.537 -            const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL)
1274.538 -    : _Base(__a)
1274.539 -  {
1274.540 -    typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1274.541 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.542 -    _M_initialize_dispatch(__first, __last, _Integral());
1274.543 -    _STLP_POP_CLEANUP_ITEM  
1274.544 -  }
1274.545 -#else /* _STLP_MEMBER_TEMPLATES */
1274.546 -  __BVECTOR(const_iterator __first, const_iterator __last,
1274.547 -            const allocator_type& __a = allocator_type())
1274.548 -    : _Bvector_base<_Alloc >(__a)
1274.549 -  {
1274.550 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.551 -    size_type __n = distance(__first, __last);
1274.552 -    _M_initialize(__n);
1274.553 -    copy(__first, __last, this->_M_start);
1274.554 -    _STLP_POP_CLEANUP_ITEM  
1274.555 -  }
1274.556 -  __BVECTOR(const bool* __first, const bool* __last,
1274.557 -            const allocator_type& __a = allocator_type())
1274.558 -    : _Bvector_base<_Alloc >(__a)
1274.559 -  {
1274.560 -    size_type __n = distance(__first, __last);
1274.561 -    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1274.562 -    _M_initialize(__n);
1274.563 -    copy(__first, __last, this->_M_start);
1274.564 -    _STLP_POP_CLEANUP_ITEM  
1274.565 -  }
1274.566 -#endif /* _STLP_MEMBER_TEMPLATES */
1274.567 -
1274.568 -  ~__BVECTOR() { }
1274.569 -
1274.570 -  __BVECTOR_QUALIFIED& operator=(const __BVECTOR_QUALIFIED& __x) {
1274.571 -    if (&__x == this) return *this;
1274.572 -    if (__x.size() > capacity()) {
1274.573 -      this->_M_deallocate();
1274.574 -      _M_initialize(__x.size());
1274.575 -    }
1274.576 -    copy(__x.begin(), __x.end(), begin());
1274.577 -    this->_M_finish = begin() + difference_type(__x.size());
1274.578 -    return *this;
1274.579 -  }
1274.580 -
1274.581 -#ifdef _STLP_USE_TRAP_LEAVE
1274.582 -public:
1274.583 -  static void* operator new (size_t __n, TLeave) { return _STLP_StackHelper<bool>::_NewLC(__n); }
1274.584 -  static void* operator new (size_t __n) { return _STLP_StackHelper<bool>::_NewLC(__n); }
1274.585 -#endif
1274.586 -
1274.587 -  // assign(), a generalized assignment member function.  Two
1274.588 -  // versions: one that takes a count, and one that takes a range.
1274.589 -  // The range version is a member template, so we dispatch on whether
1274.590 -  // or not the type is an integer.
1274.591 -
1274.592 -  void _M_fill_assign(size_t __n, bool __x) {
1274.593 -    if (__n > size()) {
1274.594 -      fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __x ? ~0 : 0);
1274.595 -      insert(end(), __n - size(), __x);
1274.596 -    }
1274.597 -    else {
1274.598 -      erase(begin() + __n, end());
1274.599 -      fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __x ? ~0 : 0);
1274.600 -    }
1274.601 -  }
1274.602 -  void assign(size_t __n, bool __x) { _M_fill_assign(__n, __x); }
1274.603 -
1274.604 -#ifdef _STLP_MEMBER_TEMPLATES
1274.605 -
1274.606 -  template <class _InputIterator>
1274.607 -  void assign(_InputIterator __first, _InputIterator __last) {
1274.608 -    typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1274.609 -    _M_assign_dispatch(__first, __last, _Integral());
1274.610 -  }
1274.611 -
1274.612 -  template <class _Integer>
1274.613 -  void _M_assign_dispatch(_Integer __n, _Integer __val, const __true_type&)
1274.614 -    { _M_fill_assign((size_t) __n, (bool) __val); }
1274.615 -
1274.616 -  template <class _InputIter>
1274.617 -  void _M_assign_dispatch(_InputIter __first, _InputIter __last, const __false_type&)
1274.618 -    { _M_assign_aux(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); }
1274.619 -
1274.620 -  template <class _InputIterator>
1274.621 -  void _M_assign_aux(_InputIterator __first, _InputIterator __last,
1274.622 -                     const input_iterator_tag &) {
1274.623 -    iterator __cur = begin();
1274.624 -    for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
1274.625 -      *__cur = *__first;
1274.626 -    if (__first == __last)
1274.627 -      erase(__cur, end());
1274.628 -    else
1274.629 -      insert(end(), __first, __last);
1274.630 -  }
1274.631 -
1274.632 -  template <class _ForwardIterator>
1274.633 -  void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
1274.634 -                     const forward_iterator_tag &) {
1274.635 -    size_type __len = distance(__first, __last);
1274.636 -    if (__len < size())
1274.637 -      erase(copy(__first, __last, begin()), end());
1274.638 -    else {
1274.639 -      _ForwardIterator __mid = __first;
1274.640 -      advance(__mid, size());
1274.641 -      copy(__first, __mid, begin());
1274.642 -      insert(end(), __mid, __last);
1274.643 -    }
1274.644 -  }    
1274.645 -
1274.646 -#endif /* _STLP_MEMBER_TEMPLATES */
1274.647 -
1274.648 -  void reserve(size_type __n) {
1274.649 -    if (capacity() < __n) {
1274.650 -      unsigned int* __q = this->_M_bit_alloc(__n);
1274.651 -      _Bit_iterator __z(__q, 0);
1274.652 -      this->_M_finish = copy(begin(), end(), __z);
1274.653 -      this->_M_deallocate();
1274.654 -      this->_M_start = iterator(__q, 0);
1274.655 -      this->_M_end_of_storage._M_data = __q + (__n + __WORD_BIT - 1)/__WORD_BIT;
1274.656 -    }
1274.657 -  }
1274.658 -
1274.659 -  reference front() { return *begin(); }
1274.660 -  const_reference front() const { return *begin(); }
1274.661 -  reference back() { return *(end() - 1); }
1274.662 -  const_reference back() const { return *(end() - 1); }
1274.663 -  void push_back(bool __x) {
1274.664 -    if (this->_M_finish._M_p != this->_M_end_of_storage._M_data) {
1274.665 -      *(this->_M_finish) = __x;
1274.666 -      ++this->_M_finish;
1274.667 -    }
1274.668 -    else
1274.669 -      _M_insert_aux(end(), __x);
1274.670 -  }
1274.671 -  void swap(__BVECTOR_QUALIFIED& __x) {
1274.672 -    _STLP_STD::swap(this->_M_start, __x._M_start);
1274.673 -    _STLP_STD::swap(this->_M_finish, __x._M_finish);
1274.674 -    _STLP_STD::swap(this->_M_end_of_storage, __x._M_end_of_storage);
1274.675 -  }
1274.676 -  iterator insert(iterator __position, bool __x = bool()) {
1274.677 -    difference_type __n = __position - begin();
1274.678 -    if (this->_M_finish._M_p != this->_M_end_of_storage._M_data && __position == end()) {
1274.679 -      *(this->_M_finish) = __x;
1274.680 -      ++this->_M_finish;
1274.681 -    }
1274.682 -    else
1274.683 -      _M_insert_aux(__position, __x);
1274.684 -    return begin() + __n;
1274.685 -  }
1274.686 -
1274.687 -#if defined ( _STLP_MEMBER_TEMPLATES )
1274.688 -
1274.689 -  template <class _Integer>
1274.690 -  void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
1274.691 -                          const __true_type&) {
1274.692 -    _M_fill_insert(__pos, (size_type) __n, (bool) __x);
1274.693 -  }
1274.694 -
1274.695 -  template <class _InputIterator>
1274.696 -  void _M_insert_dispatch(iterator __pos,
1274.697 -                          _InputIterator __first, _InputIterator __last,
1274.698 -                          const __false_type&) {
1274.699 -    _M_insert_range(__pos, __first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1274.700 -  }
1274.701 -
1274.702 -  // Check whether it's an integral type.  If so, it's not an iterator.
1274.703 -  template <class _InputIterator>
1274.704 -  void insert(iterator __position,
1274.705 -              _InputIterator __first, _InputIterator __last) {
1274.706 -    typedef typename _Is_integer<_InputIterator>::_Integral _Is_Integral;
1274.707 -    _M_insert_dispatch(__position, __first, __last, _Is_Integral());
1274.708 -  }
1274.709 -#else /* _STLP_MEMBER_TEMPLATES */
1274.710 -  void insert(iterator __position,
1274.711 -              const_iterator __first, const_iterator __last) {
1274.712 -    if (__first == __last) return;
1274.713 -    size_type __n = distance(__first, __last);
1274.714 -    if (capacity() - size() >= __n) {
1274.715 -      __copy_backward(__position, end(), this->_M_finish + __n,
1274.716 -                      random_access_iterator_tag(), (difference_type*)0 );
1274.717 -      copy(__first, __last, __position);
1274.718 -      this->_M_finish += __n;
1274.719 -    }
1274.720 -    else {
1274.721 -      size_type __len = size() + (max)(size(), __n);
1274.722 -      unsigned int* __q = this->_M_bit_alloc(__len);
1274.723 -      iterator __i = copy(begin(), __position, iterator(__q, 0));
1274.724 -      __i = copy(__first, __last, __i);
1274.725 -      this->_M_finish = copy(__position, end(), __i);
1274.726 -      this->_M_deallocate();
1274.727 -      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1274.728 -      this->_M_start = iterator(__q, 0);
1274.729 -    }
1274.730 -  }
1274.731 -
1274.732 -  void insert(iterator __position, const bool* __first, const bool* __last) {
1274.733 -    if (__first == __last) return;
1274.734 -    size_type __n = distance(__first, __last);
1274.735 -    if (capacity() - size() >= __n) {
1274.736 -      __copy_backward(__position, end(), this->_M_finish + __n, 
1274.737 -                      random_access_iterator_tag(), (difference_type*)0 );
1274.738 -      copy(__first, __last, __position);
1274.739 -      this->_M_finish += __n;
1274.740 -    }
1274.741 -    else {
1274.742 -      size_type __len = size() + (max)(size(), __n);
1274.743 -      unsigned int* __q = this->_M_bit_alloc(__len);
1274.744 -      iterator __i = copy(begin(), __position, iterator(__q, 0));
1274.745 -      __i = copy(__first, __last, __i);
1274.746 -      this->_M_finish = copy(__position, end(), __i);
1274.747 -      this->_M_deallocate();
1274.748 -      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1274.749 -      this->_M_start = iterator(__q, 0);
1274.750 -    }
1274.751 -  }
1274.752 -#endif /* _STLP_MEMBER_TEMPLATES */
1274.753 -  
1274.754 -  void _M_fill_insert(iterator __position, size_type __n, bool __x) {
1274.755 -    if (__n == 0) return;
1274.756 -    if (capacity() - size() >= __n) {
1274.757 -      __copy_backward(__position, end(), this->_M_finish + difference_type(__n), random_access_iterator_tag(), (difference_type*)0 );
1274.758 -      fill(__position, __position + difference_type(__n), __x);
1274.759 -      this->_M_finish += difference_type(__n);
1274.760 -    }
1274.761 -    else {
1274.762 -      size_type __len = size() + (max)(size(), __n);
1274.763 -      unsigned int* __q = this->_M_bit_alloc(__len);
1274.764 -      iterator __i = copy(begin(), __position, iterator(__q, 0));
1274.765 -      fill_n(__i, __n, __x);
1274.766 -      this->_M_finish = copy(__position, end(), __i + difference_type(__n));
1274.767 -      this->_M_deallocate();
1274.768 -      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1274.769 -      this->_M_start = iterator(__q, 0);
1274.770 -    }
1274.771 -  }
1274.772 -
1274.773 -  void insert(iterator __position, size_type __n, bool __x) {
1274.774 -    _M_fill_insert(__position, __n, __x);
1274.775 -  }
1274.776 -
1274.777 -  void pop_back() {
1274.778 -      --this->_M_finish; 
1274.779 -  }
1274.780 -  iterator erase(iterator __position) {
1274.781 -    if (__position + 1 != end())
1274.782 -      copy(__position + 1, end(), __position);
1274.783 -      --this->_M_finish;
1274.784 -    return __position;
1274.785 -  }
1274.786 -  iterator erase(iterator __first, iterator __last) {
1274.787 -    this->_M_finish = copy(__last, end(), __first);
1274.788 -    return __first;
1274.789 -  }
1274.790 -  void resize(size_type __new_size, bool __x = bool()) {
1274.791 -    if (__new_size < size()) 
1274.792 -      erase(begin() + difference_type(__new_size), end());
1274.793 -    else
1274.794 -      insert(end(), __new_size - size(), __x);
1274.795 -  }
1274.796 -  void flip() {
1274.797 -    for (unsigned int* __p = this->_M_start._M_p; __p != this->_M_end_of_storage._M_data; ++__p)
1274.798 -      *__p = ~*__p;
1274.799 -  }
1274.800 -
1274.801 -  void clear() { erase(begin(), end()); }
1274.802 -};
1274.803 -
1274.804 -# if defined  ( _STLP_NO_BOOL ) || defined (__HP_aCC) // fixed soon (03/17/2000)
1274.805 - 
1274.806 -#define _STLP_TEMPLATE_HEADER __BVEC_TMPL_HEADER
1274.807 -#define _STLP_TEMPLATE_CONTAINER __BVECTOR_QUALIFIED
1274.808 -#include <stl/_relops_cont.h>
1274.809 -#undef _STLP_TEMPLATE_CONTAINER
1274.810 -#undef _STLP_TEMPLATE_HEADER
1274.811 -  
1274.812 -# endif /* NO_BOOL */
1274.813 -  
1274.814 -#if !defined (_STLP_NO_BOOL)
1274.815 -// This typedef is non-standard.  It is provided for backward compatibility.
1274.816 -  typedef __WORKAROUND_DBG_RENAME(vector) <bool, allocator<bool> > bit_vector;
1274.817 -#endif
1274.818 -
1274.819 -_STLP_END_NAMESPACE
1274.820 -
1274.821 -#undef _Alloc
1274.822 -#undef _STLP_VECBOOL_TEMPLATE
1274.823 -#undef __BVECTOR
1274.824 -#undef __BVECTOR_QUALIFIED
1274.825 -#undef __BVEC_TMPL_HEADER
1274.826 -
1274.827 -# undef __WORD_BIT
1274.828 -
1274.829 -#endif /* _STLP_INTERNAL_BVECTOR_H */
1274.830 -
1274.831 -// Local Variables:
1274.832 -// mode:C++
1274.833 -// End:
1274.834 -
  1275.1 --- a/epoc32/include/stdapis/stlport/stl/_check_config.h	Tue Mar 16 16:12:26 2010 +0000
  1275.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1275.3 @@ -1,37 +0,0 @@
  1275.4 -// This file is reserved to site configuration purpose
  1275.5 -// and should NEVER be overridden by user
  1275.6 -
  1275.7 -# if defined ( _STLP_NO_OWN_IOSTREAMS )
  1275.8 -
  1275.9 -// User choose not to use SGI iostreams, which means no
 1275.10 -// precompiled library will be used and he is free to override
 1275.11 -// any STLport configuration flags
 1275.12 -
 1275.13 -# else
 1275.14 -
 1275.15 -// The following will be defined in stl_config.h :
 1275.16 -// # define _STLP_OWN_IOSTREAMS 1
 1275.17 -# endif
 1275.18 -
 1275.19 -/*
 1275.20 - *  Consistency check : if we use SGI iostreams, we have to use consistent
 1275.21 - *  thread model (single-threaded or multi-threaded) with the compiled library
 1275.22 - *  
 1275.23 - *  Default is multithreaded build. If you want to build and use single-threaded
 1275.24 - *  STLport, please change _STLP_NOTHREADS configuration setting above and rebuild the library
 1275.25 - *
 1275.26 - */
 1275.27 -
 1275.28 -# if defined (_STLP_OWN_IOSTREAMS) \
 1275.29 -  && !defined (_STLP_NO_THREADS) && !defined (_REENTRANT)
 1275.30 -
 1275.31 -#  if defined(_MSC_VER) && !defined(__MWERKS__) && !defined (__COMO__) && !defined(_MT)
 1275.32 -#   error "Only multi-threaded runtime library may be linked with STLport!"  
 1275.33 -#  endif
 1275.34 -
 1275.35 -// boris : you may change that to build non-threadsafe STLport library
 1275.36 -#  if defined (__BUILDING_STLPORT) /* || defined (_STLP_DEBUG) */
 1275.37 -#   define _REENTRANT 1
 1275.38 -#  endif
 1275.39 -
 1275.40 -# endif
  1276.1 --- a/epoc32/include/stdapis/stlport/stl/_cmath.h	Tue Mar 16 16:12:26 2010 +0000
  1276.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1276.3 @@ -1,210 +0,0 @@
  1276.4 -/*
  1276.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1276.6 - *
  1276.7 - * Copyright (c) 1999 
  1276.8 - * Boris Fomitchev
  1276.9 - *
 1276.10 - * This material is provided "as is", with absolutely no warranty expressed
 1276.11 - * or implied. Any use is at your own risk.
 1276.12 - *
 1276.13 - * Permission to use or copy this software for any purpose is hereby granted 
 1276.14 - * without fee, provided the above notices are retained on all copies.
 1276.15 - * Permission to modify the code and to distribute modified code is granted,
 1276.16 - * provided the above notices are retained, and a notice that the code was
 1276.17 - * modified is included with the above copyright notice.
 1276.18 - *
 1276.19 - */
 1276.20 -
 1276.21 -#ifndef _STLP_CMATH_H_HEADER
 1276.22 -# define _STLP_CMATH_H_HEADER
 1276.23 -
 1276.24 -# include <cmath>
 1276.25 -
 1276.26 -_STLP_BEGIN_NAMESPACE
 1276.27 -
 1276.28 -# if defined  (_STLP_SAME_FUNCTION_NAME_RESOLUTION_BUG) && (! defined (_STLP_VXWORKS_TORNADO)) 
 1276.29 -
 1276.30 -// this proxy is needed for some compilers to resolve problems
 1276.31 -// calling sqrt() from within sqrt(), etc.
 1276.32 -template <class _Tp>
 1276.33 -struct _STL_math_proxy {
 1276.34 -  static inline _Tp _do_abs(const _Tp& __x)     { return _STLP_VENDOR_CSTD::fabs(__x); } 
 1276.35 -  static inline _Tp _do_acos(const _Tp& __x)    { return _STLP_VENDOR_CSTD::acos(__x); } 
 1276.36 -  static inline _Tp _do_asin(const _Tp& __x)    { return _STLP_VENDOR_CSTD::asin(__x); } 
 1276.37 -  static inline _Tp _do_atan(const _Tp& __x)    { return _STLP_VENDOR_CSTD::atan(__x); } 
 1276.38 -  static inline _Tp _do_atan2(const _Tp& __x, const _Tp& __y)  { return _STLP_VENDOR_CSTD::atan2(__x, __y); } 
 1276.39 -  static inline _Tp _do_cos(const _Tp& __x)     { return _STLP_VENDOR_CSTD::cos(__x); } 
 1276.40 -  static inline _Tp _do_cosh(const _Tp& __x)    { return _STLP_VENDOR_CSTD::cosh(__x); } 
 1276.41 -  static inline _Tp _do_floor(const _Tp& __x)    { return _STLP_VENDOR_CSTD::floor(__x); } 
 1276.42 -  static inline _Tp _do_ceil(const _Tp& __x)    { return _STLP_VENDOR_CSTD::ceil(__x); } 
 1276.43 -  static inline _Tp _do_fmod(const _Tp& __x, const _Tp& __y)    { return _STLP_VENDOR_CSTD::fmod(__x, __y); } 
 1276.44 -  static inline _Tp _do_frexp(const _Tp& __x, int* __y)    { return _STLP_VENDOR_CSTD::frexp(__x, __y); } 
 1276.45 -  static inline _Tp _do_ldexp(const _Tp& __x, int __y)    { return _STLP_VENDOR_CSTD::ldexp(__x, __y); } 
 1276.46 -  static inline _Tp _do_modf(const _Tp& __x, double* __y) { return _STLP_VENDOR_CSTD::modf(__x, __y); }
 1276.47 -  static inline _Tp _do_log(const _Tp& __x)     { return _STLP_VENDOR_CSTD::log(__x); } 
 1276.48 -  static inline _Tp _do_log10(const _Tp& __x)   { return _STLP_VENDOR_CSTD::log10(__x); } 
 1276.49 -  static inline _Tp _do_pow(const _Tp& __x, const _Tp& __y)    { return _STLP_VENDOR_CSTD::pow(__x, __y); } 
 1276.50 -  static inline _Tp _do_pow(const _Tp& __x, int __y)    { return _STLP_VENDOR_CSTD::pow(__x, __y); } 
 1276.51 -  static inline _Tp _do_sin(const _Tp& __x)     { return _STLP_VENDOR_CSTD::sin(__x); } 
 1276.52 -  static inline _Tp _do_sinh(const _Tp& __x)    { return _STLP_VENDOR_CSTD::sinh(__x); } 
 1276.53 -
 1276.54 -  static inline _Tp _do_sqrt(const _Tp& __x)    { return _STLP_VENDOR_CSTD::sqrt(__x); } 
 1276.55 -  static inline _Tp _do_tan(const _Tp& __x)     { return _STLP_VENDOR_CSTD::tan(__x); } 
 1276.56 -  static inline _Tp _do_tanh(const _Tp& __x)    { return _STLP_VENDOR_CSTD::tanh(__x); } 
 1276.57 -  static inline _Tp _do_exp(const _Tp& __x)     { return _STLP_VENDOR_CSTD::exp(__x); } 
 1276.58 -  static inline _Tp _do_hypot(const _Tp& __x, const _Tp& __y)   { return _STLP_VENDOR_CSTD::hypot(__x, __y); } 
 1276.59 -};
 1276.60 -
 1276.61 -#  define _STLP_DO_ABS(_Tp)   _STL_math_proxy<_Tp>::_do_abs
 1276.62 -#  define _STLP_DO_ACOS(_Tp)  _STL_math_proxy<_Tp>::_do_acos
 1276.63 -#  define _STLP_DO_ASIN(_Tp)  _STL_math_proxy<_Tp>::_do_asin
 1276.64 -#  define _STLP_DO_ATAN(_Tp)  _STL_math_proxy<_Tp>::_do_atan
 1276.65 -#  define _STLP_DO_ATAN2(_Tp) _STL_math_proxy<_Tp>::_do_atan2
 1276.66 -#  define _STLP_DO_COS(_Tp)   _STL_math_proxy<_Tp>::_do_cos
 1276.67 -#  define _STLP_DO_COSH(_Tp)  _STL_math_proxy<_Tp>::_do_cosh
 1276.68 -#  define _STLP_DO_FLOOR(_Tp) _STL_math_proxy<_Tp>::_do_floor
 1276.69 -#  define _STLP_DO_CEIL(_Tp) _STL_math_proxy<_Tp>::_do_ceil
 1276.70 -#  define _STLP_DO_FMOD(_Tp) _STL_math_proxy<_Tp>::_do_fmod
 1276.71 -#  define _STLP_DO_FREXP(_Tp) _STL_math_proxy<_Tp>::_do_frexp
 1276.72 -#  define _STLP_DO_LDEXP(_Tp) _STL_math_proxy<_Tp>::_do_ldexp
 1276.73 -#  define _STLP_DO_MODF(_Tp) _STL_math_proxy<_Tp>::_do_modf
 1276.74 -#  define _STLP_DO_LOG(_Tp)   _STL_math_proxy<_Tp>::_do_log
 1276.75 -#  define _STLP_DO_LOG10(_Tp) _STL_math_proxy<_Tp>::_do_log10
 1276.76 -#  define _STLP_DO_POW(_Tp)   _STL_math_proxy<_Tp>::_do_pow
 1276.77 -#  define _STLP_DO_SIN(_Tp)   _STL_math_proxy<_Tp>::_do_sin
 1276.78 -#  define _STLP_DO_SINH(_Tp)  _STL_math_proxy<_Tp>::_do_sinh
 1276.79 -#  define _STLP_DO_SQRT(_Tp)  _STL_math_proxy<_Tp>::_do_sqrt
 1276.80 -#  define _STLP_DO_TAN(_Tp)   _STL_math_proxy<_Tp>::_do_tan
 1276.81 -#  define _STLP_DO_TANH(_Tp)  _STL_math_proxy<_Tp>::_do_tanh
 1276.82 -#  define _STLP_DO_EXP(_Tp)   _STL_math_proxy<_Tp>::_do_exp
 1276.83 -#  define _STLP_DO_HYPOT(_Tp) _STL_math_proxy<_Tp>::_do_hypot
 1276.84 -# else
 1276.85 -#  define _STLP_DO_ABS(_Tp)   _STLP_VENDOR_CSTD::fabs
 1276.86 -#  define _STLP_DO_ACOS(_Tp)  _STLP_VENDOR_CSTD::acos
 1276.87 -#  define _STLP_DO_ASIN(_Tp)  _STLP_VENDOR_CSTD::asin
 1276.88 -#  define _STLP_DO_ATAN(_Tp)  _STLP_VENDOR_CSTD::atan
 1276.89 -#  define _STLP_DO_ATAN2(_Tp) _STLP_VENDOR_CSTD::atan2
 1276.90 -#  define _STLP_DO_COS(_Tp)   _STLP_VENDOR_CSTD::cos
 1276.91 -#  define _STLP_DO_COSH(_Tp)  _STLP_VENDOR_CSTD::cosh
 1276.92 -#  define _STLP_DO_FLOOR(_Tp)  _STLP_VENDOR_CSTD::floor
 1276.93 -#  define _STLP_DO_CEIL(_Tp)   _STLP_VENDOR_CSTD::ceil
 1276.94 -#  define _STLP_DO_FMOD(_Tp)   _STLP_VENDOR_CSTD::fmod
 1276.95 -#  define _STLP_DO_FREXP(_Tp) _STLP_VENDOR_CSTD::frexp
 1276.96 -#  define _STLP_DO_LDEXP(_Tp) _STLP_VENDOR_CSTD::ldexp
 1276.97 -#  define _STLP_DO_MODF(_Tp) _STLP_VENDOR_CSTD::modf
 1276.98 -#  define _STLP_DO_LOG(_Tp)   _STLP_VENDOR_CSTD::log
 1276.99 -#  define _STLP_DO_LOG10(_Tp) _STLP_VENDOR_CSTD::log10
1276.100 -#  define _STLP_DO_POW(_Tp)   _STLP_VENDOR_CSTD::pow
1276.101 -#  define _STLP_DO_SIN(_Tp)   _STLP_VENDOR_CSTD::sin
1276.102 -#  define _STLP_DO_SINH(_Tp)  _STLP_VENDOR_CSTD::sinh
1276.103 -#  define _STLP_DO_SQRT(_Tp)  _STLP_VENDOR_CSTD::sqrt
1276.104 -#  define _STLP_DO_TAN(_Tp)   _STLP_VENDOR_CSTD::tan
1276.105 -#  define _STLP_DO_TANH(_Tp)  _STLP_VENDOR_CSTD::tanh
1276.106 -#  define _STLP_DO_EXP(_Tp)   _STLP_VENDOR_CSTD::exp
1276.107 -#  define _STLP_DO_HYPOT(_Tp) ::hypot
1276.108 -# endif
1276.109 -
1276.110 -_STLP_END_NAMESPACE
1276.111 -
1276.112 -# if (defined (_STLP_HAS_NO_NEW_C_HEADERS) || defined(_STLP_MSVC) || defined (__ICL)) && !defined (_STLP_HAS_NO_NAMESPACES)
1276.113 -
1276.114 -#if (! defined (_STLP_USE_NEW_C_HEADERS)) && ! defined (_STLP_VXWORKS_TORNADO)
1276.115 -_STLP_BEGIN_NAMESPACE
1276.116 -
1276.117 -#  ifndef _STLP_HAS_NATIVE_FLOAT_ABS
1276.118 -inline double abs(double __x)                 { return _STLP_DO_ABS(double)(__x); }
1276.119 -inline float abs (float __x)                  { return _STLP_DO_ABS(float)(__x); }
1276.120 -#  endif
1276.121 -
1276.122 -#if  ( defined (__SYMBIAN32__) || defined (__WINS__))
1276.123 -inline double pow(double __x, int __y)        { return _STLP_DO_POW(double)(__x, __y); }
1276.124 -inline float acos (float __x)                 { return _STLP_DO_ACOS(float)(__x); }
1276.125 -inline float asin (float __x)                 { return _STLP_DO_ASIN(float)(__x); }
1276.126 -inline float atan (float __x)                 { return _STLP_DO_ATAN(float)(__x); }
1276.127 -inline float atan2(float __x, float __y)      { return _STLP_DO_ATAN2(float)(__x, __y); }
1276.128 -inline float ceil (float __x)                 { return _STLP_DO_CEIL(float)(__x); }
1276.129 -inline float cos (float __x)                  { return _STLP_DO_COS(float)(__x); }
1276.130 -inline float cosh (float __x)                 { return _STLP_DO_COSH(float)(__x); }
1276.131 -inline float exp (float __x)                  { return _STLP_DO_EXP(float)(__x); }
1276.132 -# ifdef _STLP_USE_NAMESPACES
1276.133 -inline float fabs (float __x)                 { return _STLP_DO_ABS(float)(__x); }
1276.134 -# endif
1276.135 -inline float floor(float __x)                 { return _STLP_DO_FLOOR(float)(__x); }
1276.136 -inline float fmod (float __x, float __y)      { return _STLP_DO_FMOD(float)(__x, __y); }
1276.137 -inline float frexp(float __x, int* __y)       { return _STLP_DO_FREXP(float)(__x, __y); }
1276.138 -inline float ldexp(float __x, int __y)        { return _STLP_DO_LDEXP(float)(__x, __y); }
1276.139 -// fbp : float versions are not always available
1276.140 -#if !defined(_STLP_VENDOR_LONG_DOUBLE_MATH)		//*ty 11/25/2001 - 
1276.141 -inline float modf (float __x, float* __y)     { 
1276.142 - #ifndef __SYMBIAN32__
1276.143 -  double __dd[2]; 
1276.144 -  double __res = _STLP_DO_MODF(double)((double)__x, __dd); 
1276.145 -  __y[0] = (float)__dd[0] ; __y[1] = (float)__dd[1]; 
1276.146 -  return (float)__res; 
1276.147 -#else
1276.148 -  float f = modff(__x, __y);
1276.149 -  return f;
1276.150 -#endif    
1276.151 -}
1276.152 -#else		//*ty 11/25/2001 - i.e. for apple SCpp
1276.153 -inline float modf (float __x, float* __y)     { 
1276.154 -  long double __dd[2]; 
1276.155 -  long double __res = _STLP_DO_MODF(long double)((long double)__x, __dd); 
1276.156 -  __y[0] = (float)__dd[0] ; __y[1] = (float)__dd[1]; 
1276.157 -  return (float)__res; 
1276.158 -}
1276.159 -#endif		//*ty 11/25/2001 - 
1276.160 -
1276.161 -inline float log (float __x)                  { return _STLP_DO_LOG(float)(__x); }
1276.162 -inline float log10(float __x)                 { return _STLP_DO_LOG10(float)(__x); }
1276.163 -inline float pow (float __x, float __y)       { return _STLP_DO_POW(float)(__x, __y); }
1276.164 -inline float pow (float __x, int __y)         { return _STLP_DO_POW(float)(__x, __y); }
1276.165 -inline float sin (float __x)                  { return _STLP_DO_SIN(float)(__x); }
1276.166 -inline float sinh (float __x)                 { return _STLP_DO_SINH(float)(__x); }
1276.167 -inline float sqrt (float __x)                 { return _STLP_DO_SQRT(float)(__x); }
1276.168 -inline float tan (float __x)                  { return _STLP_DO_TAN(float)(__x); }
1276.169 -inline float tanh (float __x)                 { return _STLP_DO_TANH(float)(__x); }
1276.170 -
1276.171 -#  if ! (defined  (_STLP_NO_LONG_DOUBLE) || defined(_STLP_VENDOR_LONG_DOUBLE_MATH))
1276.172 -
1276.173 -#if !( defined (__MVS__) || defined (_STLP_HAS_NATIVE_FLOAT_ABS))
1276.174 -inline long double abs (long double __x)                  { return _STLP_DO_ABS(long double)((double)__x); }
1276.175 -#endif
1276.176 -inline long double acos (long double __x)                 { return _STLP_DO_ACOS(long double)(__x); }
1276.177 -inline long double asin (long double __x)                 { return _STLP_DO_ASIN(long double)(__x); }
1276.178 -inline long double atan (long double __x)                 { return _STLP_DO_ATAN(long double)(__x); }
1276.179 -inline long double atan2(long double __x, long double __y)      { return _STLP_DO_ATAN2(long double)(__x, __y); }
1276.180 -inline long double ceil (long double __x)                 { return _STLP_DO_CEIL(long double)(__x); }
1276.181 -inline long double cos (long double __x)                  { return _STLP_DO_COS(long double)(__x); }
1276.182 -inline long double cosh (long double __x)                 { return _STLP_DO_COSH(long double)(__x); }
1276.183 -inline long double exp (long double __x)                  { return _STLP_DO_EXP(long double)(__x); }
1276.184 -inline long double fabs (long double __x)                 { return _STLP_DO_ABS(long double)(__x); }
1276.185 -inline long double floor(long double __x)                 { return _STLP_DO_FLOOR(long double)(__x); }
1276.186 -inline long double fmod (long double __x, long double __y)      { return _STLP_DO_FMOD(long double)(__x, __y); }
1276.187 -inline long double frexp(long double __x, int* __y)       { return _STLP_DO_FREXP(long double)(__x, __y); }
1276.188 -inline long double ldexp(long double __x, int __y)        { return _STLP_DO_LDEXP(long double)(__x, __y); }
1276.189 -// fbp : long double versions are not available
1276.190 -inline long double modf (long double __x, long double* __y)     { 
1276.191 -  double __dd[2]; 
1276.192 -  double __res = _STLP_DO_MODF(double)((double)__x, __dd); 
1276.193 -  __y[0] = (long double)__dd[0] ; __y[1] = (long double)__dd[1]; 
1276.194 -  return (long double)__res; 
1276.195 -}
1276.196 -inline long double log (long double __x)                  { return _STLP_DO_LOG(long double)(__x); }
1276.197 -inline long double log10(long double __x)                 { return _STLP_DO_LOG10(long double)(__x); }
1276.198 -inline long double pow (long double __x, long double __y)       { return _STLP_DO_POW(long double)(__x, __y); }
1276.199 -inline long double pow (long double __x, int __y)         { return _STLP_DO_POW(long double)(__x, __y); }
1276.200 -inline long double sin (long double __x)                  { return _STLP_DO_SIN(long double)(__x); }
1276.201 -inline long double sinh (long double __x)                 { return _STLP_DO_SINH(long double)(__x); }
1276.202 -inline long double sqrt (long double __x)                 { return _STLP_DO_SQRT(long double)(__x); }
1276.203 -inline long double tan (long double __x)                  { return _STLP_DO_TAN(long double)(__x); }
1276.204 -inline long double tanh (long double __x)                 { return _STLP_DO_TANH(long double)(__x); }
1276.205 -#endif
1276.206 -#endif
1276.207 -
1276.208 -_STLP_END_NAMESPACE
1276.209 -
1276.210 -# endif /* NEW_C_HEADERS */
1276.211 -# endif /* NEW_C_HEADERS */
1276.212 -
1276.213 -#endif /* CMATH_H */
  1277.1 --- a/epoc32/include/stdapis/stlport/stl/_codecvt.h	Tue Mar 16 16:12:26 2010 +0000
  1277.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1277.3 @@ -1,323 +0,0 @@
  1277.4 -/*
  1277.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1277.6 - *
  1277.7 - * Copyright (c) 1999
  1277.8 - * Silicon Graphics Computer Systems, Inc.
  1277.9 - *
 1277.10 - * Copyright (c) 1999 
 1277.11 - * Boris Fomitchev
 1277.12 - *
 1277.13 - * This material is provided "as is", with absolutely no warranty expressed
 1277.14 - * or implied. Any use is at your own risk.
 1277.15 - *
 1277.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1277.17 - * without fee, provided the above notices are retained on all copies.
 1277.18 - * Permission to modify the code and to distribute modified code is granted,
 1277.19 - * provided the above notices are retained, and a notice that the code was
 1277.20 - * modified is included with the above copyright notice.
 1277.21 - *
 1277.22 - */ 
 1277.23 -// WARNING: This is an internal header file, included by other C++
 1277.24 -// standard library headers.  You should not attempt to use this header
 1277.25 -// file directly.
 1277.26 -
 1277.27 -
 1277.28 -#ifndef _STLP_INTERNAL_CODECVT_H
 1277.29 -#define _STLP_INTERNAL_CODECVT_H
 1277.30 -
 1277.31 -# ifndef _STLP_C_LOCALE_H
 1277.32 -#  include <stl/c_locale.h>
 1277.33 -# endif
 1277.34 -# ifndef _STLP_INTERNAL_LOCALE_H
 1277.35 -#  include <stl/_locale.h>
 1277.36 -# endif
 1277.37 -
 1277.38 -_STLP_BEGIN_NAMESPACE
 1277.39 -
 1277.40 -class _STLP_CLASS_DECLSPEC codecvt_base {
 1277.41 -public:
 1277.42 -  enum result {ok, partial, error, noconv};
 1277.43 -};
 1277.44 -
 1277.45 -template <class _InternT, class _ExternT, class _StateT>
 1277.46 -class codecvt : public locale::facet, public codecvt_base {
 1277.47 -  typedef _InternT intern_type;
 1277.48 -  typedef _ExternT extern_type;
 1277.49 -  typedef _StateT state_type;
 1277.50 -};
 1277.51 - 
 1277.52 -template <class _InternT, class _ExternT, class _StateT>
 1277.53 -class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> {};
 1277.54 -
 1277.55 -_STLP_TEMPLATE_NULL
 1277.56 -#ifdef __SYMBIAN32__
 1277.57 -class codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base
 1277.58 -#else
 1277.59 -class _STLP_CLASS_DECLSPEC codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base
 1277.60 -#endif
 1277.61 -{
 1277.62 -  friend class _Locale;
 1277.63 -public:
 1277.64 -  typedef char       intern_type;
 1277.65 -  typedef char       extern_type;
 1277.66 -  typedef mbstate_t  state_type;
 1277.67 -
 1277.68 -  explicit codecvt(size_t __refs = 0) : _BaseFacet(__refs) {}
 1277.69 -
 1277.70 -  result out(state_type&  __state,
 1277.71 -             const char*  __from,
 1277.72 -             const char*  __from_end,
 1277.73 -             const char*& __from_next,
 1277.74 -             char*        __to,
 1277.75 -             char*        __to_limit, 
 1277.76 -             char*&       __to_next) const {
 1277.77 -    return do_out(__state, 
 1277.78 -                  __from, __from_end, __from_next,
 1277.79 -                  __to,   __to_limit, __to_next);
 1277.80 -  }
 1277.81 -
 1277.82 -  result unshift(mbstate_t& __state,
 1277.83 -                 char* __to, char* __to_limit, char*& __to_next) const
 1277.84 -    { return do_unshift(__state, __to, __to_limit, __to_next); }
 1277.85 -    
 1277.86 -  result in(state_type&   __state,
 1277.87 -            const char*  __from,
 1277.88 -            const char*  __from_end,  
 1277.89 -            const char*& __from_next,
 1277.90 -            char*        __to, 
 1277.91 -            char*        __to_limit, 
 1277.92 -            char*&       __to_next) const {
 1277.93 -    return do_in(__state,
 1277.94 -                 __from, __from_end, __from_next,
 1277.95 -                 __to,   __to_limit, __to_next);
 1277.96 -  }
 1277.97 -
 1277.98 -  int encoding() const _STLP_NOTHROW { return do_encoding(); }
 1277.99 -
1277.100 -  bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); }
1277.101 -
1277.102 -  int length(const state_type& __state,
1277.103 -             const char* __from, const char* __end,
1277.104 -             size_t __max) const
1277.105 -    { return do_length(__state, __from, __end, __max); }
1277.106 -  
1277.107 -  int max_length() const _STLP_NOTHROW { return do_max_length(); }
1277.108 -
1277.109 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1277.110 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1277.111 -#else
1277.112 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1277.113 -#endif
1277.114 -
1277.115 -protected:
1277.116 -_STLP_DECLSPEC  ~codecvt();
1277.117 -
1277.118 -  _STLP_DECLSPEC virtual result do_out(mbstate_t&   /* __state */,
1277.119 -                        const char*  __from,
1277.120 -                        const char*  /* __from_end */,
1277.121 -                        const char*& __from_next,
1277.122 -                        char*        __to,
1277.123 -                        char*        /* __to_limit */,
1277.124 -                        char*&       __to_next) const;
1277.125 -
1277.126 -    _STLP_DECLSPEC virtual result do_in (mbstate_t&   /* __state */ , 
1277.127 -                        const char*  __from,
1277.128 -                        const char*  /* __from_end */,
1277.129 -                        const char*& __from_next,
1277.130 -                        char*        __to,
1277.131 -                        char*        /* __to_end */,
1277.132 -                        char*&       __to_next) const;
1277.133 -
1277.134 -  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t& /* __state */,
1277.135 -                            char*      __to,
1277.136 -                            char*      /* __to_limit */,
1277.137 -                            char*&     __to_next) const;
1277.138 -
1277.139 -  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
1277.140 -  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
1277.141 -  _STLP_DECLSPEC   virtual int do_length(const mbstate_t&         __state,
1277.142 -                        const  char* __from, 
1277.143 -                        const  char* __end,
1277.144 -                        size_t __max) const;
1277.145 -  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
1277.146 -private:
1277.147 -  codecvt(const codecvt<char, char, mbstate_t>&);
1277.148 -  codecvt<char, char, mbstate_t>& operator =(const codecvt<char, char, mbstate_t>&); 
1277.149 -};
1277.150 -
1277.151 -# ifndef _STLP_NO_WCHAR_T
1277.152 - 
1277.153 -_STLP_TEMPLATE_NULL
1277.154 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1277.155 -class codecvt<wchar_t, char, mbstate_t>  : public locale::facet, public codecvt_base
1277.156 -#else
1277.157 -class _STLP_CLASS_DECLSPEC codecvt<wchar_t, char, mbstate_t>  : public locale::facet, public codecvt_base
1277.158 -#endif
1277.159 -{
1277.160 -  friend class _Locale;
1277.161 -public:
1277.162 -  typedef wchar_t    intern_type;
1277.163 -  typedef char       extern_type;
1277.164 -  typedef mbstate_t  state_type;
1277.165 -
1277.166 -  explicit codecvt(size_t __refs = 0) : _BaseFacet(__refs) {}
1277.167 -
1277.168 -  result out(mbstate_t&       __state,
1277.169 -             const wchar_t*  __from,
1277.170 -             const wchar_t*  __from_end,
1277.171 -             const wchar_t*& __from_next,
1277.172 -             char*           __to,
1277.173 -             char*           __to_limit,
1277.174 -             char*&          __to_next) const {
1277.175 -    return do_out(__state,
1277.176 -                  __from, __from_end, __from_next, 
1277.177 -                  __to,   __to_limit, __to_next);
1277.178 -  }
1277.179 -
1277.180 -  result unshift(mbstate_t& __state,
1277.181 -                 char*  __to, char*  __to_limit, char*& __to_next) const {
1277.182 -    return do_unshift(__state, __to, __to_limit, __to_next);
1277.183 -  }
1277.184 -    
1277.185 -  result in(mbstate_t&    __state,
1277.186 -            const char*  __from,
1277.187 -            const char*  __from_end,  
1277.188 -            const char*& __from_next,
1277.189 -            wchar_t*     __to, 
1277.190 -            wchar_t*     __to_limit, 
1277.191 -            wchar_t*&    __to_next) const {
1277.192 -    return do_in(__state, 
1277.193 -                 __from, __from_end, __from_next,
1277.194 -                 __to,  __to_limit, __to_next);
1277.195 -  }
1277.196 -
1277.197 -  int encoding() const _STLP_NOTHROW { return do_encoding(); }
1277.198 -
1277.199 -  bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); }
1277.200 -
1277.201 -  int length(const mbstate_t&        __state,
1277.202 -             const char* __from,
1277.203 -             const char* __end,
1277.204 -             size_t             __max) const
1277.205 -    { return do_length(__state, __from, __end, __max); }
1277.206 -  
1277.207 -  int max_length() const _STLP_NOTHROW { return do_max_length(); }
1277.208 -
1277.209 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1277.210 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1277.211 -#else
1277.212 -  	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1277.213 -#endif
1277.214 -
1277.215 -protected:
1277.216 -    _STLP_DECLSPEC  ~codecvt();
1277.217 -
1277.218 -  _STLP_DECLSPEC   virtual result do_out(mbstate_t&         __state,
1277.219 -                        const wchar_t*  __from,
1277.220 -                        const wchar_t*  __from_end,
1277.221 -                        const wchar_t*& __from_next,
1277.222 -                        char*        __to,
1277.223 -                        char*        __to_limit,
1277.224 -                        char*&       __to_next) const;
1277.225 -
1277.226 -  _STLP_DECLSPEC   virtual result do_in (mbstate_t&         __state,
1277.227 -                        const char*  __from,
1277.228 -                        const char*  __from_end,
1277.229 -                        const char*& __from_next,
1277.230 -                        wchar_t*        __to,
1277.231 -                        wchar_t*        __to_limit,
1277.232 -                        wchar_t*&       __to_next) const;
1277.233 -
1277.234 -  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t&   __state,
1277.235 -                            char*  __to, 
1277.236 -                            char*  __to_limit,
1277.237 -                            char*& __to_next) const;
1277.238 -
1277.239 -  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
1277.240 -
1277.241 -  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
1277.242 -  
1277.243 -  _STLP_DECLSPEC   virtual int do_length(const mbstate_t& __state,
1277.244 -                        const  char* __from, 
1277.245 -                        const  char* __end,
1277.246 -                        size_t __max) const;
1277.247 -
1277.248 -  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
1277.249 -
1277.250 -private:
1277.251 -  codecvt(const codecvt<wchar_t, char, mbstate_t>&);
1277.252 -  codecvt<wchar_t, char, mbstate_t>& operator = (const codecvt<wchar_t, char, mbstate_t>&);  
1277.253 -};
1277.254 -
1277.255 -# endif
1277.256 -
1277.257 -_STLP_TEMPLATE_NULL
1277.258 -class _STLP_CLASS_DECLSPEC codecvt_byname<char, char, mbstate_t>
1277.259 -  : public codecvt<char, char, mbstate_t> {
1277.260 -public:
1277.261 -  explicit _STLP_DECLSPEC codecvt_byname(const char* __name, size_t __refs = 0);
1277.262 -  ~codecvt_byname();
1277.263 -private:
1277.264 -  codecvt_byname(const codecvt_byname<char, char, mbstate_t>&);
1277.265 -  codecvt_byname<char, char, mbstate_t>& operator =(const codecvt_byname<char, char, mbstate_t>&);  
1277.266 -};
1277.267 -
1277.268 -# ifndef _STLP_NO_WCHAR_T
1277.269 -_STLP_TEMPLATE_NULL
1277.270 -class codecvt_byname<wchar_t, char, mbstate_t>
1277.271 -  : public codecvt<wchar_t, char, mbstate_t> 
1277.272 -{
1277.273 -public:
1277.274 -  explicit _STLP_DECLSPEC codecvt_byname(const char * __name, size_t __refs = 0);    
1277.275 -
1277.276 -protected:
1277.277 -    _STLP_DECLSPEC ~codecvt_byname();
1277.278 -
1277.279 -  _STLP_DECLSPEC   virtual result do_out(mbstate_t&         __state,
1277.280 -                        const wchar_t*  __from,
1277.281 -                        const wchar_t*  __from_end,
1277.282 -                        const wchar_t*& __from_next,
1277.283 -                        char*        __to,
1277.284 -                        char*        __to_limit,
1277.285 -                        char*&       __to_next) const;
1277.286 -
1277.287 -  _STLP_DECLSPEC   virtual result do_in (mbstate_t&         __state,
1277.288 -                        const char*  __from,
1277.289 -                        const char*  __from_end,
1277.290 -                        const char*& __from_next,
1277.291 -                        wchar_t*        __to,
1277.292 -                        wchar_t*        __to_limit,
1277.293 -                        wchar_t*&       __to_next) const;
1277.294 -
1277.295 -  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t&   __state,
1277.296 -                            char*  __to, 
1277.297 -                            char*  __to_limit,
1277.298 -                            char*& __to_next) const;
1277.299 -
1277.300 -  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
1277.301 -
1277.302 -  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
1277.303 -  
1277.304 -  _STLP_DECLSPEC   virtual int do_length(const mbstate_t&         __state,
1277.305 -                        const  char* __from, 
1277.306 -                        const  char* __end,
1277.307 -                        size_t __max) const;
1277.308 -
1277.309 -  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
1277.310 -
1277.311 -private:
1277.312 -  _Locale_ctype* _M_ctype;
1277.313 -  codecvt_byname(const codecvt_byname<wchar_t, char, mbstate_t>&);
1277.314 -  codecvt_byname<wchar_t, char, mbstate_t>& operator =(const codecvt_byname<wchar_t, char, mbstate_t>&);  
1277.315 -};
1277.316 -
1277.317 -# endif
1277.318 -
1277.319 -_STLP_END_NAMESPACE
1277.320 -
1277.321 -#endif /* _STLP_INTERNAL_CODECVT_H */
1277.322 -
1277.323 -// Local Variables:
1277.324 -// mode:C++
1277.325 -// End:
1277.326 -
  1278.1 --- a/epoc32/include/stdapis/stlport/stl/_collate.h	Tue Mar 16 16:12:26 2010 +0000
  1278.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1278.3 @@ -1,204 +0,0 @@
  1278.4 -/*
  1278.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1278.6 - *
  1278.7 - * Copyright (c) 1999
  1278.8 - * Silicon Graphics Computer Systems, Inc.
  1278.9 - *
 1278.10 - * Copyright (c) 1999 
 1278.11 - * Boris Fomitchev
 1278.12 - *
 1278.13 - * This material is provided "as is", with absolutely no warranty expressed
 1278.14 - * or implied. Any use is at your own risk.
 1278.15 - *
 1278.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1278.17 - * without fee, provided the above notices are retained on all copies.
 1278.18 - * Permission to modify the code and to distribute modified code is granted,
 1278.19 - * provided the above notices are retained, and a notice that the code was
 1278.20 - * modified is included with the above copyright notice.
 1278.21 - *
 1278.22 - */ 
 1278.23 -// WARNING: This is an internal header file, included by other C++
 1278.24 -// standard library headers.  You should not attempt to use this header
 1278.25 -// file directly.
 1278.26 -
 1278.27 -#ifndef _STLP_INTERNAL_COLLATE_H
 1278.28 -#define _STLP_INTERNAL_COLLATE_H
 1278.29 -
 1278.30 -#ifndef _STLP_C_LOCALE_H
 1278.31 -# include <stl/c_locale.h>
 1278.32 -#endif
 1278.33 -
 1278.34 -#ifndef _STLP_INTERNAL_LOCALE_H
 1278.35 -# include <stl/_locale.h>
 1278.36 -#endif
 1278.37 -
 1278.38 -#ifndef _STLP_STRING_H
 1278.39 -# include <stl/_string.h>
 1278.40 -#endif
 1278.41 -
 1278.42 -_STLP_BEGIN_NAMESPACE
 1278.43 -
 1278.44 -
 1278.45 -template <class _CharT> class collate {};
 1278.46 -template <class _CharT> class collate_byname {};
 1278.47 -
 1278.48 -_STLP_TEMPLATE_NULL
 1278.49 -#ifdef __SYMBIAN32__
 1278.50 -class  collate<char> : public locale::facet
 1278.51 -#else
 1278.52 -class _STLP_CLASS_DECLSPEC collate<char> : public locale::facet
 1278.53 -#endif
 1278.54 -{
 1278.55 -  friend class _Locale;
 1278.56 -public:
 1278.57 -  typedef char   char_type;
 1278.58 -  typedef string string_type;
 1278.59 -
 1278.60 -  explicit collate(size_t __refs = 0) : _BaseFacet(__refs) {}
 1278.61 -
 1278.62 -  int compare(const char* __low1, const char* __high1,
 1278.63 -              const char* __low2, const char* __high2) const {
 1278.64 -    return do_compare( __low1, __high1, __low2, __high2);
 1278.65 -  }
 1278.66 -
 1278.67 -  string_type transform(const char* __low, const char* __high) const {
 1278.68 -    return do_transform(__low, __high);
 1278.69 -  }
 1278.70 -
 1278.71 -  long hash(const char* __low, const char* __high) const
 1278.72 -    { return do_hash(__low, __high); }
 1278.73 -
 1278.74 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1278.75 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
 1278.76 -#else
 1278.77 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
 1278.78 -#endif
 1278.79 -
 1278.80 -protected:
 1278.81 -_STLP_DECLSPEC  ~collate();
 1278.82 -
 1278.83 -_STLP_DECLSPEC   virtual int do_compare(const char*, const char*,
 1278.84 -                         const char*, const char*) const;
 1278.85 -_STLP_DECLSPEC   virtual string_type do_transform(const char*, const char*) const;
 1278.86 -_STLP_DECLSPEC   virtual long do_hash(const char*, const char*) const;
 1278.87 -private:
 1278.88 -  collate(const collate<char>&);
 1278.89 -  collate<char>& operator =(const collate<char>&);  
 1278.90 -};
 1278.91 -
 1278.92 -# ifndef _STLP_NO_WCHAR_T
 1278.93 -
 1278.94 -_STLP_TEMPLATE_NULL
 1278.95 -#ifdef __SYMBIAN32__
 1278.96 -class  collate<wchar_t> : public locale::facet
 1278.97 -#else
 1278.98 -class _STLP_CLASS_DECLSPEC collate<wchar_t> : public locale::facet
 1278.99 -#endif
1278.100 -{
1278.101 -  friend class _Locale;
1278.102 -public:
1278.103 -  typedef wchar_t char_type;
1278.104 -  typedef wstring string_type;
1278.105 -
1278.106 -  explicit collate(size_t __refs = 0) : _BaseFacet(__refs) {}
1278.107 -
1278.108 -  int compare(const wchar_t* __low1, const wchar_t* __high1,
1278.109 -              const wchar_t* __low2, const wchar_t* __high2) const {
1278.110 -    return do_compare( __low1, __high1, __low2, __high2);
1278.111 -  }
1278.112 -
1278.113 -  string_type transform(const wchar_t* __low, const wchar_t* __high) const {
1278.114 -    return do_transform(__low, __high);
1278.115 -  }
1278.116 -
1278.117 -  long hash(const wchar_t* __low, const wchar_t* __high) const
1278.118 -    { return do_hash(__low, __high); }
1278.119 -
1278.120 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1278.121 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1278.122 -#else
1278.123 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1278.124 -#endif
1278.125 -
1278.126 -protected:
1278.127 -_STLP_DECLSPEC   ~collate();
1278.128 -
1278.129 -_STLP_DECLSPEC   virtual int do_compare(const wchar_t*, const wchar_t*,
1278.130 -                         const wchar_t*, const wchar_t*) const;
1278.131 -_STLP_DECLSPEC   virtual string_type do_transform(const wchar_t*, const wchar_t*) const;
1278.132 -_STLP_DECLSPEC   virtual long do_hash(const wchar_t* __low, const wchar_t* __high) const;
1278.133 -private:
1278.134 -  collate(const collate<wchar_t>&);
1278.135 -  collate<wchar_t>& operator = (const collate<wchar_t>&);  
1278.136 -};
1278.137 -
1278.138 -# endif /* NO_WCHAR_T */
1278.139 -
1278.140 -_STLP_TEMPLATE_NULL
1278.141 -class _STLP_CLASS_DECLSPEC collate_byname<char>: public collate<char> 
1278.142 -{
1278.143 -public:
1278.144 -  explicit _STLP_DECLSPEC collate_byname(const char* __name, size_t __refs = 0);
1278.145 -
1278.146 -protected:
1278.147 -_STLP_DECLSPEC   ~collate_byname();
1278.148 -
1278.149 -_STLP_DECLSPEC   virtual int do_compare(const char*, const char*,
1278.150 -                         const char*, const char*) const;
1278.151 -_STLP_DECLSPEC   virtual string_type do_transform(const char*, const char*) const;
1278.152 -
1278.153 -private:
1278.154 -  _Locale_collate* _M_collate;
1278.155 -  collate_byname(const collate_byname<char>&);
1278.156 -  collate_byname<char>& operator =(const collate_byname<char>&);  
1278.157 -};
1278.158 -
1278.159 -# ifndef _STLP_NO_WCHAR_T
1278.160 -
1278.161 -_STLP_TEMPLATE_NULL
1278.162 -class _STLP_CLASS_DECLSPEC collate_byname<wchar_t>: public collate<wchar_t> 
1278.163 -{
1278.164 -public:
1278.165 -  explicit _STLP_DECLSPEC  collate_byname(const char * __name, size_t __refs = 0);
1278.166 -
1278.167 -protected:
1278.168 -_STLP_DECLSPEC   ~collate_byname();
1278.169 -
1278.170 -_STLP_DECLSPEC   virtual int do_compare(const wchar_t*, const wchar_t*,
1278.171 -                         const wchar_t*, const wchar_t*) const;
1278.172 -_STLP_DECLSPEC   virtual string_type do_transform(const wchar_t*, const wchar_t*) const;
1278.173 -
1278.174 -private:
1278.175 -  _Locale_collate* _M_collate;
1278.176 -  collate_byname(const collate_byname<wchar_t>&);
1278.177 -  collate_byname<wchar_t>& operator =(const collate_byname<wchar_t>&);  
1278.178 -};
1278.179 -
1278.180 -# endif /* NO_WCHAR_T */
1278.181 -
1278.182 -
1278.183 -template <class _CharT, class _Traits, class _Alloc>
1278.184 -bool 
1278.185 -__locale_do_operator_call (const locale* __that, 
1278.186 -                           const basic_string<_CharT, _Traits, _Alloc >& __x,
1278.187 -                           const basic_string<_CharT, _Traits, _Alloc >& __y) 
1278.188 -{
1278.189 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1278.190 -  collate<_CharT>* __f = (collate<_CharT>*)__that->_M_get_facet(collate<_CharT>::GetFacetLocaleId());
1278.191 -#else
1278.192 -  collate<_CharT>* __f = (collate<_CharT>*)__that->_M_get_facet(collate<_CharT>::id);
1278.193 -#endif
1278.194 -  if (!__f)
1278.195 -    __that->_M_throw_runtime_error();
1278.196 -  return __f->compare(__x.data(), __x.data() + __x.size(),
1278.197 -                      __y.data(), __y.data() + __y.size()) < 0;
1278.198 -  
1278.199 -}
1278.200 -
1278.201 -_STLP_END_NAMESPACE
1278.202 -
1278.203 -#endif /* _STLP_INTERNAL_COLLATE_H */
1278.204 -
1278.205 -// Local Variables:
1278.206 -// mode:C++
1278.207 -// End:
  1279.1 --- a/epoc32/include/stdapis/stlport/stl/_complex.c	Tue Mar 16 16:12:26 2010 +0000
  1279.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1279.3 @@ -1,169 +0,0 @@
  1279.4 -/*
  1279.5 - * Copyright (c) 1999
  1279.6 - * Silicon Graphics Computer Systems, Inc.
  1279.7 - *
  1279.8 - * Copyright (c) 1999 
  1279.9 - * Boris Fomitchev
 1279.10 - *
 1279.11 - * This material is provided "as is", with absolutely no warranty expressed
 1279.12 - * or implied. Any use is at your own risk.
 1279.13 - *
 1279.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1279.15 - * without fee, provided the above notices are retained on all copies.
 1279.16 - * Permission to modify the code and to distribute modified code is granted,
 1279.17 - * provided the above notices are retained, and a notice that the code was
 1279.18 - * modified is included with the above copyright notice.
 1279.19 - *
 1279.20 - */ 
 1279.21 -#ifndef _STLP_COMPLEX_C
 1279.22 -#define _STLP_COMPLEX_C
 1279.23 -
 1279.24 -# ifndef _STLP_internal_complex_h
 1279.25 -#  include <stl/_complex.h>
 1279.26 -# endif
 1279.27 -
 1279.28 -#include <istream>
 1279.29 -
 1279.30 -#ifdef _STLP_USE_NEW_IOSTREAMS
 1279.31 -# include <sstream>
 1279.32 -#endif
 1279.33 -
 1279.34 -_STLP_BEGIN_NAMESPACE
 1279.35 -
 1279.36 -// Non-inline member functions.
 1279.37 -
 1279.38 -template <class _Tp>
 1279.39 -void complex<_Tp>::_div(const _Tp& __z1_r, const _Tp& __z1_i,
 1279.40 -                        const _Tp& __z2_r, const _Tp& __z2_i,
 1279.41 -                        _Tp& __res_r, _Tp& __res_i) {
 1279.42 -  _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
 1279.43 -  _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
 1279.44 -
 1279.45 -  if (__ar <= __ai) {
 1279.46 -    _Tp __ratio = __z2_r / __z2_i;
 1279.47 -    _Tp __denom = __z2_i * (1 + __ratio * __ratio);
 1279.48 -    __res_r = (__z1_r * __ratio + __z1_i) / __denom;
 1279.49 -    __res_i = (__z1_i * __ratio - __z1_r) / __denom;
 1279.50 -  }
 1279.51 -  else {
 1279.52 -    _Tp __ratio = __z2_i / __z2_r;
 1279.53 -    _Tp __denom = __z2_r * (1 + __ratio * __ratio);
 1279.54 -    __res_r = (__z1_r + __z1_i * __ratio) / __denom;
 1279.55 -    __res_i = (__z1_i - __z1_r * __ratio) / __denom;
 1279.56 -  }
 1279.57 -}
 1279.58 -
 1279.59 -template <class _Tp>
 1279.60 -void complex<_Tp>::_div(const _Tp& __z1_r,
 1279.61 -                        const _Tp& __z2_r, const _Tp& __z2_i,
 1279.62 -                        _Tp& __res_r, _Tp& __res_i) {
 1279.63 -  _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
 1279.64 -  _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
 1279.65 -
 1279.66 -  if (__ar <= __ai) {
 1279.67 -    _Tp __ratio = __z2_r / __z2_i;
 1279.68 -    _Tp __denom = __z2_i * (1 + __ratio * __ratio);
 1279.69 -    __res_r = (__z1_r * __ratio) / __denom;
 1279.70 -    __res_i = - __z1_r / __denom;
 1279.71 -  }
 1279.72 -  else {
 1279.73 -    _Tp __ratio = __z2_i / __z2_r;
 1279.74 -    _Tp __denom = __z2_r * (1 + __ratio * __ratio);
 1279.75 -    __res_r = __z1_r / __denom;
 1279.76 -    __res_i = - (__z1_r * __ratio) / __denom;
 1279.77 -  }
 1279.78 -}
 1279.79 -
 1279.80 -// I/O.
 1279.81 -
 1279.82 -#ifdef _STLP_USE_NEW_IOSTREAMS
 1279.83 -
 1279.84 -// Complex output, in the form (re,im).  We use a two-step process 
 1279.85 -// involving stringstream so that we get the padding right.  
 1279.86 -template <class _Tp, class _CharT, class _Traits>
 1279.87 -basic_ostream<_CharT, _Traits>& _STLP_CALL
 1279.88 -operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z)
 1279.89 -{
 1279.90 -  basic_ostringstream<_CharT, _Traits, allocator<_CharT> > __tmp;
 1279.91 -  __tmp.flags(__os.flags());
 1279.92 -  __tmp.imbue(__os.getloc());
 1279.93 -  __tmp.precision(__os.precision());
 1279.94 -  __tmp << '(' << __z.real() << ',' << __z.imag() << ')';
 1279.95 -  return __os << __tmp.str();
 1279.96 -}
 1279.97 -
 1279.98 -// Complex input from arbitrary streams.  Note that results in some
 1279.99 -// locales may be confusing, since the decimal character varies with
1279.100 -// locale and the separator between real and imaginary parts does not.
1279.101 -
1279.102 -template <class _Tp, class _CharT, class _Traits>
1279.103 -basic_istream<_CharT, _Traits>& _STLP_CALL
1279.104 -operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z)
1279.105 -{
1279.106 -  _Tp  __re = 0;
1279.107 -  _Tp  __im = 0;
1279.108 -
1279.109 -  // typedef ctype<_CharT> _Ctype;
1279.110 -  //  locale __loc = __is.getloc();
1279.111 -  //const _Ctype&  __c_type  = use_facet<_Ctype>(__loc);
1279.112 -  const ctype<_CharT>& __c_type = *(const ctype<_CharT>*)__is._M_ctype_facet();
1279.113 -
1279.114 -  char   __punct[4] = "(,)";
1279.115 -  _CharT __wpunct[3];
1279.116 -  __c_type.widen(__punct, __punct + 3, __wpunct);
1279.117 -
1279.118 -  _CharT __c;
1279.119 -
1279.120 -  __is >> __c;
1279.121 -  if (_Traits::eq(__c, __wpunct[0])) {  // Left paren
1279.122 -    __is >> __re >> __c;
1279.123 -    if (_Traits::eq(__c, __wpunct[1]))  // Comma
1279.124 -      __is >> __im >> __c;
1279.125 -    if (!_Traits::eq(__c, __wpunct[2])) // Right paren
1279.126 -      __is.setstate(ios_base::failbit);
1279.127 -  }
1279.128 -  else {
1279.129 -    __is.putback(__c);
1279.130 -    __is >> __re;
1279.131 -  }
1279.132 -
1279.133 -  if (__is)
1279.134 -    __z = complex<_Tp>(__re, __im);
1279.135 -  return __is;
1279.136 -}
1279.137 -
1279.138 -
1279.139 -#else /* _STLP_USE_NEW_IOSTREAMS */
1279.140 -
1279.141 -template <class _Tp>
1279.142 -ostream& _STLP_CALL operator<<(ostream& s, const complex<_Tp>& __z)
1279.143 -{
1279.144 -  return s << "( " << __z._M_re <<", " << __z._M_im <<")";
1279.145 -}
1279.146 -
1279.147 -template <class _Tp>
1279.148 -istream& _STLP_CALL operator>>(istream& s, complex<_Tp>& a)
1279.149 -{
1279.150 -  _Tp re = 0, im = 0;
1279.151 -  char 	c = 0;
1279.152 -
1279.153 -  s >> c;
1279.154 -  if (c == '(') {
1279.155 -    s >> re >> c;
1279.156 -    if (c == ',') s >> im >> c;
1279.157 -    if (c != ')') s.clear(ios::badbit);
1279.158 -  }
1279.159 -  else {
1279.160 -    s.putback(c);
1279.161 -    s >> re;
1279.162 -  }
1279.163 -
1279.164 -  if (s) a = complex<_Tp>(re, im);
1279.165 -  return s;
1279.166 -}
1279.167 -
1279.168 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1279.169 -
1279.170 -_STLP_END_NAMESPACE
1279.171 -
1279.172 -#endif /* _STLP_COMPLEX_C */
  1280.1 --- a/epoc32/include/stdapis/stlport/stl/_complex.h	Tue Mar 16 16:12:26 2010 +0000
  1280.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1280.3 @@ -1,1013 +0,0 @@
  1280.4 -/*
  1280.5 - * Copyright (c) 1999
  1280.6 - * Silicon Graphics Computer Systems, Inc.
  1280.7 - *
  1280.8 - * Copyright (c) 1999 
  1280.9 - * Boris Fomitchev
 1280.10 - *
 1280.11 - * This material is provided "as is", with absolutely no warranty expressed
 1280.12 - * or implied. Any use is at your own risk.
 1280.13 - *
 1280.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1280.15 - * without fee, provided the above notices are retained on all copies.
 1280.16 - * Permission to modify the code and to distribute modified code is granted,
 1280.17 - * provided the above notices are retained, and a notice that the code was
 1280.18 - * modified is included with the above copyright notice.
 1280.19 - *
 1280.20 - */ 
 1280.21 -#ifndef _STLP_internal_complex_h
 1280.22 -#define _STLP_internal_complex_h
 1280.23 -
 1280.24 -// This header declares the template class complex, as described in 
 1280.25 -// in the draft C++ standard.  Single-precision complex numbers
 1280.26 -// are complex<float>, double-precision are complex<double>, and
 1280.27 -// quad precision are complex<long double>.
 1280.28 -
 1280.29 -// Note that the template class complex is declared within namespace
 1280.30 -// std, as called for by the draft C++ standard.  
 1280.31 -
 1280.32 -#include <stl/_cmath.h>
 1280.33 -#include <iosfwd>
 1280.34 -
 1280.35 -_STLP_BEGIN_NAMESPACE
 1280.36 -
 1280.37 -#if !defined(_STLP_NO_COMPLEX_SPECIALIZATIONS)		//*TY 02/25/2000 - added for MPW compiler workaround
 1280.38 -
 1280.39 -template <class _Tp> struct complex;
 1280.40 -
 1280.41 -_STLP_TEMPLATE_NULL  struct _STLP_CLASS_DECLSPEC complex<float>;
 1280.42 -_STLP_TEMPLATE_NULL  struct _STLP_CLASS_DECLSPEC complex<double>;
 1280.43 -# ifndef _STLP_NO_LONG_DOUBLE
 1280.44 -_STLP_TEMPLATE_NULL  struct _STLP_CLASS_DECLSPEC complex<long double>;
 1280.45 -# endif
 1280.46 -# endif
 1280.47 -
 1280.48 -template <class _Tp>
 1280.49 -struct complex {
 1280.50 -  typedef _Tp value_type;
 1280.51 -  typedef complex<_Tp> _Self;
 1280.52 -
 1280.53 -  // Constructors, destructor, assignment operator.
 1280.54 -  complex() : _M_re(0), _M_im(0) {}
 1280.55 -  complex(const value_type& __x)
 1280.56 -    : _M_re(__x), _M_im(0) {}
 1280.57 -  complex(const value_type& __x, const value_type& __y)
 1280.58 -    : _M_re(__x), _M_im(__y) {}
 1280.59 -  complex(const _Self& __z)
 1280.60 -    : _M_re(__z._M_re), _M_im(__z._M_im) {}
 1280.61 -
 1280.62 -  _Self& operator=(const _Self& __z) {
 1280.63 -    _M_re = __z._M_re;
 1280.64 -    _M_im = __z._M_im;
 1280.65 -    return *this;
 1280.66 -  }
 1280.67 -
 1280.68 -#if defined (_STLP_MEMBER_TEMPLATES) && ( defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) || defined(_STLP_NO_COMPLEX_SPECIALIZATIONS))
 1280.69 -  template <class _Tp2>
 1280.70 -  explicit complex(const complex<_Tp2>& __z)
 1280.71 -    : _M_re(__z._M_re), _M_im(__z._M_im) {}
 1280.72 -
 1280.73 -  template <class _Tp2>
 1280.74 -  _Self& operator=(const complex<_Tp2>& __z) {
 1280.75 -    _M_re = __z._M_re;
 1280.76 -    _M_im = __z._M_im;
 1280.77 -    return *this;
 1280.78 -  }
 1280.79 -#endif /* _STLP_MEMBER_TEMPLATES */
 1280.80 -
 1280.81 -  // Element access.
 1280.82 -  value_type real() const { return _M_re; }
 1280.83 -  value_type imag() const { return _M_im; }
 1280.84 -
 1280.85 -  // Arithmetic op= operations involving one real argument.
 1280.86 -
 1280.87 -  _Self& operator= (const value_type& __x) {
 1280.88 -    _M_re = __x;
 1280.89 -    _M_im = 0;
 1280.90 -    return *this;
 1280.91 -  }
 1280.92 -  _Self& operator+= (const value_type& __x) {
 1280.93 -    _M_re += __x;
 1280.94 -    return *this;
 1280.95 -  }
 1280.96 -  _Self& operator-= (const value_type& __x) {
 1280.97 -    _M_re -= __x;
 1280.98 -    return *this;
 1280.99 -  }
1280.100 -  _Self& operator*= (const value_type& __x) {
1280.101 -    _M_re *= __x;
1280.102 -    _M_im *= __x;
1280.103 -    return *this;
1280.104 -  }
1280.105 -  _Self& operator/= (const value_type& __x) {
1280.106 -    _M_re /= __x;
1280.107 -    _M_im /= __x;
1280.108 -    return *this;
1280.109 -  }
1280.110 -
1280.111 -  // Arithmetic op= operations involving two complex arguments.
1280.112 -
1280.113 -  static void  _STLP_CALL _div(const value_type& __z1_r, const value_type& __z1_i,
1280.114 -                   const value_type& __z2_r, const value_type& __z2_i,
1280.115 -                   value_type& __res_r, value_type& __res_i);
1280.116 -
1280.117 -  static void _STLP_CALL _div(const value_type& __z1_r, 
1280.118 -                   const value_type& __z2_r, const value_type& __z2_i,
1280.119 -                   value_type& __res_r, value_type& __res_i);
1280.120 -
1280.121 -#if defined ( _STLP_MEMBER_TEMPLATES ) // && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
1280.122 -
1280.123 -  template <class _Tp2> _Self& operator+= (const complex<_Tp2>& __z) {
1280.124 -    _M_re += __z._M_re;
1280.125 -    _M_im += __z._M_im;
1280.126 -    return *this;
1280.127 -  }
1280.128 -
1280.129 -  template <class _Tp2> _Self& operator-= (const complex<_Tp2>& __z) {
1280.130 -    _M_re -= __z._M_re;
1280.131 -    _M_im -= __z._M_im;
1280.132 -    return *this;
1280.133 -  }
1280.134 -
1280.135 -  template <class _Tp2> _Self& operator*= (const complex<_Tp2>& __z) {
1280.136 -    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.137 -    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.138 -    _M_re = __r;
1280.139 -    _M_im = __i;
1280.140 -    return *this;
1280.141 -  }
1280.142 -
1280.143 -  template <class _Tp2> _Self& operator/= (const complex<_Tp2>& __z) {
1280.144 -    value_type __r;
1280.145 -    value_type __i;
1280.146 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.147 -    _M_re = __r;
1280.148 -    _M_im = __i;
1280.149 -    return *this;
1280.150 -  }
1280.151 -
1280.152 -#endif /* _STLP_MEMBER_TEMPLATES */
1280.153 -
1280.154 -  _Self& operator+= (const _Self& __z) {
1280.155 -    _M_re += __z._M_re;
1280.156 -    _M_im += __z._M_im;
1280.157 -    return *this;
1280.158 -  }
1280.159 -
1280.160 -  _Self& operator-= (const _Self& __z) {
1280.161 -    _M_re -= __z._M_re;
1280.162 -    _M_im -= __z._M_im;
1280.163 -    return *this;
1280.164 -  }
1280.165 -  
1280.166 -  _Self& operator*= (const _Self& __z) {
1280.167 -    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.168 -    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.169 -    _M_re = __r;
1280.170 -    _M_im = __i;
1280.171 -    return *this;
1280.172 -  }
1280.173 -
1280.174 -  _Self& operator/= (const _Self& __z) {
1280.175 -    value_type __r;
1280.176 -    value_type __i;
1280.177 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.178 -    _M_re = __r;
1280.179 -    _M_im = __i;
1280.180 -    return *this;
1280.181 -  }
1280.182 -
1280.183 -  // Data members.
1280.184 -  value_type _M_re;
1280.185 -  value_type _M_im;
1280.186 -};
1280.187 -
1280.188 -#if !defined(_STLP_NO_COMPLEX_SPECIALIZATIONS)		//*TY 02/25/2000 - added for MPW compiler workaround
1280.189 -// Explicit specializations for float, double, long double.  The only
1280.190 -// reason for these specializations is to enable automatic conversions
1280.191 -// from complex<float> to complex<double>, and complex<double> to
1280.192 -// complex<long double>.
1280.193 -
1280.194 -
1280.195 -_STLP_TEMPLATE_NULL
1280.196 -struct _STLP_CLASS_DECLSPEC complex<float> {
1280.197 -  typedef float value_type;
1280.198 -  typedef complex<float> _Self;
1280.199 -  // Constructors, destructor, assignment operator.
1280.200 -
1280.201 -  complex(value_type __x = 0.0, value_type __y = 0.0)
1280.202 -    : _M_re(__x), _M_im(__y) {}
1280.203 -
1280.204 -  complex(const complex<float>& __z)    : _M_re(__z._M_re), _M_im(__z._M_im) {} 
1280.205 -
1280.206 -  inline explicit complex(const complex<double>& __z);
1280.207 -# ifndef _STLP_NO_LONG_DOUBLE
1280.208 -  inline explicit complex(const complex<long double>& __z);
1280.209 -# endif
1280.210 -  // Element access.
1280.211 -  value_type real() const { return _M_re; }
1280.212 -  value_type imag() const { return _M_im; }
1280.213 -
1280.214 -  // Arithmetic op= operations involving one real argument.
1280.215 -
1280.216 -  _Self& operator= (value_type __x) {
1280.217 -    _M_re = __x;
1280.218 -    _M_im = 0;
1280.219 -    return *this;
1280.220 -  }
1280.221 -  _Self& operator+= (value_type __x) {
1280.222 -    _M_re += __x;
1280.223 -    return *this;
1280.224 -  }
1280.225 -  _Self& operator-= (value_type __x) {
1280.226 -    _M_re -= __x;
1280.227 -    return *this;
1280.228 -  }
1280.229 -  _Self& operator*= (value_type __x) {
1280.230 -    _M_re *= __x;
1280.231 -    _M_im *= __x;
1280.232 -    return *this;
1280.233 -  }
1280.234 -  _Self& operator/= (value_type __x) {
1280.235 -    _M_re /= __x;
1280.236 -    _M_im /= __x;
1280.237 -    return *this;
1280.238 -  }
1280.239 -
1280.240 -  // Arithmetic op= operations involving two complex arguments.
1280.241 -
1280.242 -   _STLP_DECLSPEC static void _STLP_CALL _div(const float& __z1_r, const float& __z1_i,
1280.243 -                              const float& __z2_r, const float& __z2_i,
1280.244 -                              float& __res_r, float& __res_i);
1280.245 -    
1280.246 -   _STLP_DECLSPEC static void _STLP_CALL _div(const float& __z1_r, 
1280.247 -                              const float& __z2_r, const float& __z2_i,
1280.248 -                              float& __res_r, float& __res_i);
1280.249 -    
1280.250 -#if defined (_STLP_MEMBER_TEMPLATES)
1280.251 -
1280.252 -  template <class _Tp2>
1280.253 -  complex<float>& operator=(const complex<_Tp2>& __z) {
1280.254 -    _M_re = __z._M_re;
1280.255 -    _M_im = __z._M_im;
1280.256 -    return *this;
1280.257 -  }
1280.258 -
1280.259 -  template <class _Tp2>
1280.260 -  complex<float>& operator+= (const complex<_Tp2>& __z) {
1280.261 -    _M_re += __z._M_re;
1280.262 -    _M_im += __z._M_im;
1280.263 -    return *this;
1280.264 -  }
1280.265 -
1280.266 -  template <class _Tp2>
1280.267 -  complex<float>& operator-= (const complex<_Tp2>& __z) {
1280.268 -    _M_re -= __z._M_re;
1280.269 -    _M_im -= __z._M_im;
1280.270 -    return *this;
1280.271 -  }
1280.272 -
1280.273 -  template <class _Tp2>
1280.274 -  complex<float>& operator*= (const complex<_Tp2>& __z) {
1280.275 -    float __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.276 -    float __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.277 -    _M_re = __r;
1280.278 -    _M_im = __i;
1280.279 -    return *this;
1280.280 -  }
1280.281 -
1280.282 -  template <class _Tp2>
1280.283 -  complex<float>& operator/= (const complex<_Tp2>& __z) {
1280.284 -    float __r;
1280.285 -    float __i;
1280.286 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.287 -    _M_re = __r;
1280.288 -    _M_im = __i;
1280.289 -    return *this;
1280.290 -  }
1280.291 -
1280.292 -#endif /* _STLP_MEMBER_TEMPLATES */
1280.293 -
1280.294 -  _Self& operator=(const _Self& __z) {
1280.295 -    _M_re = __z._M_re;
1280.296 -    _M_im = __z._M_im;
1280.297 -    return *this;
1280.298 -  }
1280.299 -
1280.300 -  _Self& operator+= (const _Self& __z) {
1280.301 -    _M_re += __z._M_re;
1280.302 -    _M_im += __z._M_im;
1280.303 -    return *this;
1280.304 -  }
1280.305 -
1280.306 -  _Self& operator-= (const _Self& __z) {
1280.307 -    _M_re -= __z._M_re;
1280.308 -    _M_im -= __z._M_im;
1280.309 -    return *this;
1280.310 -  }
1280.311 -  
1280.312 -  _Self& operator*= (const _Self& __z) {
1280.313 -    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.314 -    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.315 -    _M_re = __r;
1280.316 -    _M_im = __i;
1280.317 -    return *this;
1280.318 -  }
1280.319 -
1280.320 -  _Self& operator/= (const _Self& __z) {
1280.321 -    value_type __r;
1280.322 -    value_type __i;
1280.323 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.324 -    _M_re = __r;
1280.325 -    _M_im = __i;
1280.326 -    return *this;
1280.327 -  }
1280.328 -
1280.329 -  // Data members.
1280.330 -  value_type _M_re;
1280.331 -  value_type _M_im;
1280.332 -};
1280.333 -
1280.334 -_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC complex<double> {
1280.335 -  typedef double value_type;
1280.336 -  typedef complex<double> _Self;
1280.337 -
1280.338 -  // Constructors, destructor, assignment operator.
1280.339 -
1280.340 -  complex(value_type __x = 0.0, value_type __y = 0.0)
1280.341 -    : _M_re(__x), _M_im(__y) {}
1280.342 -
1280.343 -  complex(const complex<double>& __z)
1280.344 -    : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.345 -  inline complex(const complex<float>& __z);
1280.346 -# ifndef _STLP_NO_LONG_DOUBLE
1280.347 -  explicit inline complex(const complex<long double>& __z);
1280.348 -# endif
1280.349 -  // Element access.
1280.350 -  value_type real() const { return _M_re; }
1280.351 -  value_type imag() const { return _M_im; }
1280.352 -
1280.353 -  // Arithmetic op= operations involving one real argument.
1280.354 -
1280.355 -  _Self& operator= (value_type __x) {
1280.356 -    _M_re = __x;
1280.357 -    _M_im = 0;
1280.358 -    return *this;
1280.359 -  }
1280.360 -  _Self& operator+= (value_type __x) {
1280.361 -    _M_re += __x;
1280.362 -    return *this;
1280.363 -  }
1280.364 -  _Self& operator-= (value_type __x) {
1280.365 -    _M_re -= __x;
1280.366 -    return *this;
1280.367 -  }
1280.368 -  _Self& operator*= (value_type __x) {
1280.369 -    _M_re *= __x;
1280.370 -    _M_im *= __x;
1280.371 -    return *this;
1280.372 -  }
1280.373 -  _Self& operator/= (value_type __x) {
1280.374 -    _M_re /= __x;
1280.375 -    _M_im /= __x;
1280.376 -    return *this;
1280.377 -  }
1280.378 -
1280.379 -  // Arithmetic op= operations involving two complex arguments.
1280.380 -
1280.381 -  _STLP_DECLSPEC static void _STLP_CALL _div(const double& __z1_r, const double& __z1_i,
1280.382 -                              const double& __z2_r, const double& __z2_i,
1280.383 -                              double& __res_r, double& __res_i);
1280.384 -  _STLP_DECLSPEC static void _STLP_CALL _div(const double& __z1_r, 
1280.385 -                              const double& __z2_r, const double& __z2_i,
1280.386 -                              double& __res_r, double& __res_i);
1280.387 -    
1280.388 -#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
1280.389 -
1280.390 -  template <class _Tp2>
1280.391 -  complex<double>& operator=(const complex<_Tp2>& __z) {
1280.392 -    _M_re = __z._M_re;
1280.393 -    _M_im = __z._M_im;
1280.394 -    return *this;
1280.395 -  }
1280.396 -
1280.397 -  template <class _Tp2>
1280.398 -  complex<double>& operator+= (const complex<_Tp2>& __z) {
1280.399 -    _M_re += __z._M_re;
1280.400 -    _M_im += __z._M_im;
1280.401 -    return *this;
1280.402 -  }
1280.403 -
1280.404 -  template <class _Tp2>
1280.405 -  complex<double>& operator-= (const complex<_Tp2>& __z) {
1280.406 -    _M_re -= __z._M_re;
1280.407 -    _M_im -= __z._M_im;
1280.408 -    return *this;
1280.409 -  }
1280.410 -
1280.411 -  template <class _Tp2>
1280.412 -  complex<double>& operator*= (const complex<_Tp2>& __z) {
1280.413 -    double __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.414 -    double __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.415 -    _M_re = __r;
1280.416 -    _M_im = __i;
1280.417 -    return *this;
1280.418 -  }
1280.419 -
1280.420 -  template <class _Tp2>
1280.421 -  complex<double>& operator/= (const complex<_Tp2>& __z) {
1280.422 -    double __r;
1280.423 -    double __i;
1280.424 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.425 -    _M_re = __r;
1280.426 -    _M_im = __i;
1280.427 -    return *this;
1280.428 -  }
1280.429 -
1280.430 -#endif /* _STLP_MEMBER_TEMPLATES */
1280.431 -
1280.432 -  _Self& operator=(const _Self& __z) {
1280.433 -    _M_re = __z._M_re;
1280.434 -    _M_im = __z._M_im;
1280.435 -    return *this;
1280.436 -  }
1280.437 -
1280.438 -  _Self& operator+= (const _Self& __z) {
1280.439 -    _M_re += __z._M_re;
1280.440 -    _M_im += __z._M_im;
1280.441 -    return *this;
1280.442 -  }
1280.443 -
1280.444 -  _Self& operator-= (const _Self& __z) {
1280.445 -    _M_re -= __z._M_re;
1280.446 -    _M_im -= __z._M_im;
1280.447 -    return *this;
1280.448 -  }
1280.449 -  
1280.450 -  _Self& operator*= (const _Self& __z) {
1280.451 -    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.452 -    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.453 -    _M_re = __r;
1280.454 -    _M_im = __i;
1280.455 -    return *this;
1280.456 -  }
1280.457 -
1280.458 -  _Self& operator/= (const _Self& __z) {
1280.459 -    value_type __r;
1280.460 -    value_type __i;
1280.461 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.462 -    _M_re = __r;
1280.463 -    _M_im = __i;
1280.464 -    return *this;
1280.465 -  }
1280.466 -
1280.467 -  // Data members.
1280.468 -  value_type _M_re;
1280.469 -  value_type _M_im;
1280.470 -};
1280.471 -
1280.472 -# ifndef _STLP_NO_LONG_DOUBLE
1280.473 -
1280.474 -_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC complex<long double> {
1280.475 -  typedef long double value_type;
1280.476 -  typedef complex<long double> _Self;
1280.477 -
1280.478 -  // Constructors, destructor, assignment operator.
1280.479 -  complex(value_type __x = 0.0, value_type __y = 0.0)
1280.480 -    : _M_re(__x), _M_im(__y) {}
1280.481 -
1280.482 -  complex(const complex<long double>& __z)
1280.483 -    : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.484 -  inline complex(const complex<float>& __z);
1280.485 -  inline complex(const complex<double>& __z);
1280.486 -
1280.487 -  // Element access.
1280.488 -  value_type real() const { return _M_re; }
1280.489 -  value_type imag() const { return _M_im; }
1280.490 -
1280.491 -  // Arithmetic op= operations involving one real argument.
1280.492 -
1280.493 -  _Self& operator= (value_type __x) {
1280.494 -    _M_re = __x;
1280.495 -    _M_im = 0;
1280.496 -    return *this;
1280.497 -  }
1280.498 -  _Self& operator+= (value_type __x) {
1280.499 -    _M_re += __x;
1280.500 -    return *this;
1280.501 -  }
1280.502 -  _Self& operator-= (value_type __x) {
1280.503 -    _M_re -= __x;
1280.504 -    return *this;
1280.505 -  }
1280.506 -  _Self& operator*= (value_type __x) {
1280.507 -    _M_re *= __x;
1280.508 -    _M_im *= __x;
1280.509 -    return *this;
1280.510 -  }
1280.511 -  _Self& operator/= (value_type __x) {
1280.512 -    _M_re /= __x;
1280.513 -    _M_im /= __x;
1280.514 -    return *this;
1280.515 -  }
1280.516 -
1280.517 -  // Arithmetic op= operations involving two complex arguments.
1280.518 -
1280.519 -  _STLP_DECLSPEC static void _STLP_CALL _div(const long double& __z1_r, const long double& __z1_i,
1280.520 -                              const long double& __z2_r, const long double& __z2_i,
1280.521 -                              long double& __res_r, long double& __res_i);
1280.522 -
1280.523 -  _STLP_DECLSPEC static void _STLP_CALL _div(const long double& __z1_r, 
1280.524 -                              const long double& __z2_r, const long double& __z2_i,
1280.525 -                              long double& __res_r, long double& __res_i);
1280.526 -
1280.527 -#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
1280.528 -
1280.529 -  template <class _Tp2>
1280.530 -  complex<long double>& operator=(const complex<_Tp2>& __z) {
1280.531 -    _M_re = __z._M_re;
1280.532 -    _M_im = __z._M_im;
1280.533 -    return *this;
1280.534 -  }
1280.535 -
1280.536 -  template <class _Tp2>
1280.537 -  complex<long double>& operator+= (const complex<_Tp2>& __z) {
1280.538 -    _M_re += __z._M_re;
1280.539 -    _M_im += __z._M_im;
1280.540 -    return *this;
1280.541 -  }
1280.542 -
1280.543 -  template <class _Tp2>
1280.544 -  complex<long double>& operator-= (const complex<_Tp2>& __z) {
1280.545 -    _M_re -= __z._M_re;
1280.546 -    _M_im -= __z._M_im;
1280.547 -    return *this;
1280.548 -  }
1280.549 -
1280.550 -  template <class _Tp2>
1280.551 -  complex<long double>& operator*= (const complex<_Tp2>& __z) {
1280.552 -    long double __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.553 -    long double __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.554 -    _M_re = __r;
1280.555 -    _M_im = __i;
1280.556 -    return *this;
1280.557 -  }
1280.558 -
1280.559 -  template <class _Tp2>
1280.560 -  complex<long double>& operator/= (const complex<_Tp2>& __z) {
1280.561 -    long double __r;
1280.562 -    long double __i;
1280.563 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.564 -    _M_re = __r;
1280.565 -    _M_im = __i;
1280.566 -    return *this;
1280.567 -  }
1280.568 -
1280.569 -#endif /* _STLP_MEMBER_TEMPLATES */
1280.570 -
1280.571 -  _Self& operator=(const _Self& __z) {
1280.572 -    _M_re = __z._M_re;
1280.573 -    _M_im = __z._M_im;
1280.574 -    return *this;
1280.575 -  }
1280.576 -
1280.577 -  _Self& operator+= (const _Self& __z) {
1280.578 -    _M_re += __z._M_re;
1280.579 -    _M_im += __z._M_im;
1280.580 -    return *this;
1280.581 -  }
1280.582 -
1280.583 -  _Self& operator-= (const _Self& __z) {
1280.584 -    _M_re -= __z._M_re;
1280.585 -    _M_im -= __z._M_im;
1280.586 -    return *this;
1280.587 -  }
1280.588 -  
1280.589 -  _Self& operator*= (const _Self& __z) {
1280.590 -    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1280.591 -    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1280.592 -    _M_re = __r;
1280.593 -    _M_im = __i;
1280.594 -    return *this;
1280.595 -  }
1280.596 -
1280.597 -  _Self& operator/= (const _Self& __z) {
1280.598 -    value_type __r;
1280.599 -    value_type __i;
1280.600 -    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1280.601 -    _M_re = __r;
1280.602 -    _M_im = __i;
1280.603 -    return *this;
1280.604 -  }
1280.605 -
1280.606 -  // Data members.
1280.607 -  value_type _M_re;
1280.608 -  value_type _M_im;
1280.609 -};
1280.610 -
1280.611 -# endif /* _STLP_NO_LONG_DOUBLE */
1280.612 -
1280.613 -// Converting constructors from one of these three specialized types
1280.614 -// to another.
1280.615 -
1280.616 -inline complex<float>::complex(const complex<double>& __z)
1280.617 -  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.618 -inline complex<double>::complex(const complex<float>& __z)
1280.619 -  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.620 -# ifndef _STLP_NO_LONG_DOUBLE
1280.621 -inline complex<float>::complex(const complex<long double>& __z)
1280.622 -  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.623 -inline complex<double>::complex(const complex<long double>& __z)
1280.624 -  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.625 -inline complex<long double>::complex(const complex<float>& __z)
1280.626 -  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.627 -inline complex<long double>::complex(const complex<double>& __z)
1280.628 -  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1280.629 -# endif
1280.630 -
1280.631 -# endif /* SPECIALIZATIONS */
1280.632 -
1280.633 -// Unary non-member arithmetic operators.
1280.634 -
1280.635 -template <class _Tp>
1280.636 -inline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z) {
1280.637 -  return __z;
1280.638 -}
1280.639 -
1280.640 -template <class _Tp>
1280.641 -inline complex<_Tp> _STLP_CALL  operator-(const complex<_Tp>& __z) {
1280.642 -  return complex<_Tp>(-__z._M_re, -__z._M_im);
1280.643 -}
1280.644 -
1280.645 -// Non-member arithmetic operations involving one real argument.
1280.646 -
1280.647 -template <class _Tp> 
1280.648 -inline complex<_Tp> _STLP_CALL operator+(const _Tp& __x, const complex<_Tp>& __z) {
1280.649 -  return complex<_Tp>(__x + __z._M_re, __z._M_im);
1280.650 -}
1280.651 -
1280.652 -template <class _Tp> 
1280.653 -inline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z, const _Tp& __x) {
1280.654 -  return complex<_Tp>(__z._M_re + __x, __z._M_im);
1280.655 -}
1280.656 -
1280.657 -template <class _Tp> 
1280.658 -inline complex<_Tp> _STLP_CALL operator-(const _Tp& __x, const complex<_Tp>& __z) {
1280.659 -  return complex<_Tp>(__x - __z._M_re, -__z._M_im);
1280.660 -}
1280.661 -
1280.662 -template <class _Tp> 
1280.663 -inline complex<_Tp> _STLP_CALL operator-(const complex<_Tp>& __z, const _Tp& __x) {
1280.664 -  return complex<_Tp>(__z._M_re - __x, __z._M_im);
1280.665 -}
1280.666 -
1280.667 -template <class _Tp> 
1280.668 -inline complex<_Tp> _STLP_CALL operator*(const _Tp& __x, const complex<_Tp>& __z) {
1280.669 -  return complex<_Tp>(__x * __z._M_re, __x * __z._M_im);
1280.670 -}
1280.671 -
1280.672 -template <class _Tp> 
1280.673 -inline complex<_Tp> _STLP_CALL operator*(const complex<_Tp>& __z, const _Tp& __x) {
1280.674 -  return complex<_Tp>(__z._M_re * __x, __z._M_im * __x);
1280.675 -}
1280.676 -
1280.677 -template <class _Tp> 
1280.678 -inline complex<_Tp> _STLP_CALL operator/(const _Tp& __x, const complex<_Tp>& __z) {
1280.679 -  complex<_Tp> __result;
1280.680 -  complex<_Tp>::_div(__x,
1280.681 -                     __z._M_re, __z._M_im,
1280.682 -                     __result._M_re, __result._M_im);
1280.683 -  return __result;
1280.684 -}
1280.685 -
1280.686 -template <class _Tp> 
1280.687 -inline complex<_Tp> _STLP_CALL operator/(const complex<_Tp>& __z, const _Tp& __x) {
1280.688 -  return complex<_Tp>(__z._M_re / __x, __z._M_im / __x);
1280.689 -}
1280.690 -
1280.691 -// Non-member arithmetic operations involving two complex arguments
1280.692 -
1280.693 -template <class _Tp> 
1280.694 -inline complex<_Tp> _STLP_CALL 
1280.695 -operator+(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1280.696 -  return complex<_Tp>(__z1._M_re + __z2._M_re, __z1._M_im + __z2._M_im);
1280.697 -}
1280.698 -
1280.699 -template <class _Tp> 
1280.700 -inline complex<_Tp> _STLP_CALL 
1280.701 -operator-(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1280.702 -  return complex<_Tp>(__z1._M_re - __z2._M_re, __z1._M_im - __z2._M_im);
1280.703 -}
1280.704 -
1280.705 -template <class _Tp> 
1280.706 -inline complex<_Tp> _STLP_CALL 
1280.707 -operator*(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1280.708 -  return complex<_Tp>(__z1._M_re * __z2._M_re - __z1._M_im * __z2._M_im,
1280.709 -                      __z1._M_re * __z2._M_im + __z1._M_im * __z2._M_re);
1280.710 -}
1280.711 -
1280.712 -template <class _Tp> 
1280.713 -inline complex<_Tp> _STLP_CALL 
1280.714 -operator/(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1280.715 -  complex<_Tp> __result;
1280.716 -  complex<_Tp>::_div(__z1._M_re, __z1._M_im,
1280.717 -                     __z2._M_re, __z2._M_im,
1280.718 -                     __result._M_re, __result._M_im);
1280.719 -  return __result;
1280.720 -}
1280.721 -
1280.722 -// Comparison operators.
1280.723 -
1280.724 -template <class _Tp> 
1280.725 -inline bool _STLP_CALL operator==(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1280.726 -  return __z1._M_re == __z2._M_re && __z1._M_im == __z2._M_im;
1280.727 -}
1280.728 -
1280.729 -template <class _Tp> 
1280.730 -inline bool _STLP_CALL operator==(const complex<_Tp>& __z, const _Tp& __x) {
1280.731 -  return __z._M_re == __x && __z._M_im == 0;
1280.732 -}
1280.733 -
1280.734 -template <class _Tp> 
1280.735 -inline bool _STLP_CALL operator==(const _Tp& __x, const complex<_Tp>& __z) {
1280.736 -  return __x == __z._M_re && 0 == __z._M_im;
1280.737 -}
1280.738 -
1280.739 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1280.740 -
1280.741 -template <class _Tp> 
1280.742 -inline bool _STLP_CALL operator!=(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1280.743 -  return __z1._M_re != __z2._M_re || __z1._M_im != __z2._M_im;
1280.744 -}
1280.745 -
1280.746 -#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1280.747 -
1280.748 -template <class _Tp> 
1280.749 -inline bool _STLP_CALL operator!=(const complex<_Tp>& __z, const _Tp& __x) {
1280.750 -  return __z._M_re != __x || __z._M_im != 0;
1280.751 -}
1280.752 -
1280.753 -template <class _Tp> 
1280.754 -inline bool _STLP_CALL operator!=(const _Tp& __x, const complex<_Tp>& __z) {
1280.755 -  return __x != __z._M_re || 0 != __z._M_im;
1280.756 -}
1280.757 -
1280.758 -// Other basic arithmetic operations
1280.759 -
1280.760 -template <class _Tp> 
1280.761 -inline _Tp _STLP_CALL real(const complex<_Tp>& __z) {
1280.762 -  return __z._M_re;
1280.763 -}
1280.764 -
1280.765 -template <class _Tp> 
1280.766 -inline _Tp _STLP_CALL imag(const complex<_Tp>& __z) {
1280.767 -  return __z._M_im;
1280.768 -}
1280.769 -
1280.770 -#ifdef __SYMBIAN32__
1280.771 -template <class _Tp>
1280.772 -#ifdef __WINSCW__
1280.773 -_STLP_DECLSPEC 
1280.774 -#endif
1280.775 -_Tp  _STLP_CALL abs_tp(const complex<_Tp>&);
1280.776 -
1280.777 -template <class _Tp>
1280.778 -#ifdef __WINSCW__
1280.779 -_STLP_DECLSPEC 
1280.780 -#endif
1280.781 -_Tp  _STLP_CALL arg_tp(const complex<_Tp>&);
1280.782 -
1280.783 -template <class _Tp>
1280.784 -#ifdef __WINSCW__
1280.785 -_STLP_DECLSPEC 
1280.786 -#endif
1280.787 -complex<_Tp> _STLP_CALL polar_tp(const _Tp& __rho, const _Tp& __phi);
1280.788 -
1280.789 -template <class _Tp>
1280.790 -_Tp _STLP_CALL abs(const complex<_Tp>& __z)
1280.791 - {
1280.792 - return abs_tp(__z);
1280.793 - }
1280.794 -
1280.795 -template <class _Tp>
1280.796 -_Tp _STLP_CALL arg(const complex<_Tp>& __z)
1280.797 - {
1280.798 - return arg_tp(__z);
1280.799 - }
1280.800 -
1280.801 -template <class _Tp>
1280.802 -complex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi) {
1280.803 - return polar_tp(__rho, __phi);
1280.804 -}
1280.805 -
1280.806 -#else
1280.807 -template <class _Tp>
1280.808 -_Tp _STLP_CALL abs(const complex<_Tp>& __z) {
1280.809 -  return _Tp(abs(complex<double>(double(__z.real()), double(__z.imag()))));
1280.810 -}
1280.811 -
1280.812 -template <class _Tp>
1280.813 -_Tp _STLP_CALL arg(const complex<_Tp>& __z) {
1280.814 -  return _Tp(arg(complex<double>(double(__z.real()), double(__z.imag()))));
1280.815 -}
1280.816 -
1280.817 -#endif
1280.818 -
1280.819 -
1280.820 -template <class _Tp>
1280.821 -inline _Tp _STLP_CALL norm(const complex<_Tp>& __z) {
1280.822 -  return __z._M_re * __z._M_re + __z._M_im * __z._M_im;
1280.823 -}
1280.824 -
1280.825 -template <class _Tp>
1280.826 -inline complex<_Tp> _STLP_CALL conj(const complex<_Tp>& __z) {
1280.827 -  return complex<_Tp>(__z._M_re, -__z._M_im);
1280.828 -}
1280.829 -
1280.830 -template <class _Tp>
1280.831 -complex<_Tp> _STLP_CALL polar(const _Tp& __rho) {
1280.832 -  return complex<_Tp>(__rho, 0);
1280.833 -}
1280.834 -
1280.835 -#ifndef __SYMBIAN32__
1280.836 -template <class _Tp>
1280.837 -complex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi) {
1280.838 -  complex<double> __tmp = polar(double(__rho), double(__phi));
1280.839 -  return complex<_Tp>(_Tp(__tmp.real()), _Tp(__tmp.imag()));
1280.840 -}
1280.841 -
1280.842 -
1280.843 -_STLP_TEMPLATE_NULL
1280.844 -_STLP_DECLSPEC float  _STLP_CALL abs(const complex<float>&);
1280.845 -#ifndef _STLP_COMPLEX_SPECIALIZATION_BUG
1280.846 -_STLP_TEMPLATE_NULL
1280.847 -_STLP_DECLSPEC double  _STLP_CALL abs(const complex<double>&);
1280.848 -_STLP_TEMPLATE_NULL
1280.849 -_STLP_DECLSPEC double  _STLP_CALL arg(const complex<double>&);
1280.850 -_STLP_TEMPLATE_NULL
1280.851 -_STLP_DECLSPEC complex<double> _STLP_CALL polar(const double& __rho, const double& __phi);
1280.852 -#endif
1280.853 -_STLP_TEMPLATE_NULL
1280.854 -_STLP_DECLSPEC float  _STLP_CALL arg(const complex<float>&);
1280.855 -_STLP_TEMPLATE_NULL
1280.856 -_STLP_DECLSPEC complex<float> _STLP_CALL polar(const float& __rho, const float& __phi);
1280.857 -
1280.858 -
1280.859 -# ifndef _STLP_NO_LONG_DOUBLE
1280.860 -_STLP_TEMPLATE_NULL
1280.861 -_STLP_DECLSPEC long double  _STLP_CALL arg(const complex<long double>&);
1280.862 -_STLP_TEMPLATE_NULL
1280.863 -_STLP_DECLSPEC long double  _STLP_CALL abs(const complex<long double>&);
1280.864 -_STLP_TEMPLATE_NULL
1280.865 -_STLP_DECLSPEC complex<long double> _STLP_CALL polar(const long double&, const long double&);
1280.866 -# endif
1280.867 -#endif
1280.868 -
1280.869 -
1280.870 -#ifdef _STLP_USE_NEW_IOSTREAMS
1280.871 -
1280.872 -// Complex output, in the form (re,im).  We use a two-step process 
1280.873 -// involving stringstream so that we get the padding right.  
1280.874 -template <class _Tp, class _CharT, class _Traits>
1280.875 -basic_ostream<_CharT, _Traits>&  _STLP_CALL 
1280.876 -operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z);
1280.877 -
1280.878 -template <class _Tp, class _CharT, class _Traits>
1280.879 -basic_istream<_CharT, _Traits>& _STLP_CALL 
1280.880 -operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z);
1280.881 -
1280.882 -// Specializations for narrow characters; lets us avoid widen.
1280.883 -
1280.884 -_STLP_OPERATOR_TEMPLATE
1280.885 -_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 
1280.886 -operator>>(basic_istream<char, char_traits<char> >& __is, complex<float>& __z);
1280.887 -
1280.888 -_STLP_OPERATOR_TEMPLATE
1280.889 -_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 
1280.890 -operator>>(basic_istream<char, char_traits<char> >& __is, complex<double>& __z);
1280.891 -
1280.892 -
1280.893 -_STLP_OPERATOR_TEMPLATE
1280.894 -_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 
1280.895 -operator<<(basic_ostream<char, char_traits<char> >& __is, const complex<float>& __z);
1280.896 -
1280.897 -_STLP_OPERATOR_TEMPLATE
1280.898 -_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 
1280.899 -operator<<(basic_ostream<char, char_traits<char> >& __is, const complex<double>& __z);
1280.900 -
1280.901 -#  if ! defined (_STLP_NO_LONG_DOUBLE)
1280.902 -_STLP_OPERATOR_TEMPLATE
1280.903 -_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 
1280.904 -operator>>(basic_istream<char, char_traits<char> >& __is, complex<long double>& __z);
1280.905 -
1280.906 -_STLP_OPERATOR_TEMPLATE
1280.907 -_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 
1280.908 -operator<<(basic_ostream<char, char_traits<char> >& __is, const complex<long double>& __z);
1280.909 -
1280.910 -# endif
1280.911 -
1280.912 -# if defined (_STLP_USE_TEMPLATE_EXPORT) && ! defined (_STLP_NO_WCHAR_T)
1280.913 -
1280.914 -_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator>>(
1280.915 -        basic_istream<wchar_t, char_traits<wchar_t> >&, complex<double>&);
1280.916 -_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator<<(
1280.917 -        basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<double>&);
1280.918 -_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator>>(
1280.919 -        basic_istream<wchar_t, char_traits<wchar_t> >&, complex<float>&);
1280.920 -_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator<<(
1280.921 -        basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<float>&);
1280.922 -
1280.923 -#  ifndef _STLP_NO_LONG_DOUBLE
1280.924 -_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator>>(
1280.925 -        basic_istream<wchar_t, char_traits<wchar_t> >&, complex<long double>&);
1280.926 -_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator<<(
1280.927 -        basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<long double>&);
1280.928 -#  endif
1280.929 -
1280.930 -# endif /* USE_TEMPLATE_EXPORT */
1280.931 -
1280.932 -#else /* _STLP_USE_NEW_IOSTREAMS */
1280.933 -
1280.934 -template <class _Tp>
1280.935 -ostream& _STLP_CALL operator<<(ostream& s, const complex<_Tp>& __z);
1280.936 -
1280.937 -template <class _Tp>
1280.938 -istream& _STLP_CALL  operator>>(istream& s, complex<_Tp>& a);
1280.939 -
1280.940 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1280.941 -
1280.942 -
1280.943 -// Transcendental functions.  These are defined only for float, 
1280.944 -//  double, and long double.  (Sqrt isn't transcendental, of course,
1280.945 -//  but it's included in this section anyway.)
1280.946 -
1280.947 -_STLP_DECLSPEC complex<float> _STLP_CALL sqrt(const complex<float>&);
1280.948 -
1280.949 -_STLP_DECLSPEC complex<float> _STLP_CALL exp(const complex<float>&);
1280.950 -_STLP_DECLSPEC complex<float> _STLP_CALL  log(const complex<float>&);
1280.951 -_STLP_DECLSPEC complex<float> _STLP_CALL log10(const complex<float>&);
1280.952 -
1280.953 -_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, int);
1280.954 -_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, const float&);
1280.955 -_STLP_DECLSPEC complex<float> _STLP_CALL pow(const float&, const complex<float>&);
1280.956 -_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, const complex<float>&);
1280.957 -
1280.958 -_STLP_DECLSPEC complex<float> _STLP_CALL sin(const complex<float>&);
1280.959 -_STLP_DECLSPEC complex<float> _STLP_CALL cos(const complex<float>&);
1280.960 -_STLP_DECLSPEC complex<float> _STLP_CALL tan(const complex<float>&);
1280.961 -
1280.962 -_STLP_DECLSPEC complex<float> _STLP_CALL sinh(const complex<float>&);
1280.963 -_STLP_DECLSPEC complex<float> _STLP_CALL cosh(const complex<float>&);
1280.964 -_STLP_DECLSPEC complex<float> _STLP_CALL tanh(const complex<float>&);
1280.965 -
1280.966 -_STLP_DECLSPEC complex<double> _STLP_CALL sqrt(const complex<double>&);
1280.967 -
1280.968 -_STLP_DECLSPEC complex<double> _STLP_CALL exp(const complex<double>&);
1280.969 -_STLP_DECLSPEC complex<double> _STLP_CALL log(const complex<double>&);
1280.970 -_STLP_DECLSPEC complex<double> _STLP_CALL log10(const complex<double>&);
1280.971 -
1280.972 -_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, int);
1280.973 -_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, const double&);
1280.974 -_STLP_DECLSPEC complex<double> _STLP_CALL pow(const double&, const complex<double>&);
1280.975 -_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, const complex<double>&);
1280.976 -
1280.977 -_STLP_DECLSPEC complex<double> _STLP_CALL sin(const complex<double>&);
1280.978 -_STLP_DECLSPEC complex<double> _STLP_CALL cos(const complex<double>&);
1280.979 -_STLP_DECLSPEC complex<double> _STLP_CALL tan(const complex<double>&);
1280.980 -
1280.981 -_STLP_DECLSPEC complex<double> _STLP_CALL sinh(const complex<double>&);
1280.982 -_STLP_DECLSPEC complex<double> _STLP_CALL cosh(const complex<double>&);
1280.983 -_STLP_DECLSPEC complex<double> _STLP_CALL tanh(const complex<double>&);
1280.984 -
1280.985 -# ifndef _STLP_NO_LONG_DOUBLE
1280.986 -_STLP_DECLSPEC complex<long double> _STLP_CALL sqrt(const complex<long double>&);
1280.987 -_STLP_DECLSPEC complex<long double> _STLP_CALL exp(const complex<long double>&);
1280.988 -_STLP_DECLSPEC complex<long double> _STLP_CALL log(const complex<long double>&);
1280.989 -_STLP_DECLSPEC complex<long double> _STLP_CALL log10(const complex<long double>&);
1280.990 -
1280.991 -_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, int);
1280.992 -_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, const long double&);
1280.993 -_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const long double&, const complex<long double>&);
1280.994 -_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&,
1280.995 -                                                   const complex<long double>&);
1280.996 -
1280.997 -_STLP_DECLSPEC complex<long double> _STLP_CALL sin(const complex<long double>&);
1280.998 -_STLP_DECLSPEC complex<long double> _STLP_CALL cos(const complex<long double>&);
1280.999 -_STLP_DECLSPEC complex<long double> _STLP_CALL tan(const complex<long double>&);
1280.1000 -
1280.1001 -_STLP_DECLSPEC complex<long double> _STLP_CALL sinh(const complex<long double>&);
1280.1002 -_STLP_DECLSPEC complex<long double> _STLP_CALL cosh(const complex<long double>&);
1280.1003 -_STLP_DECLSPEC complex<long double> _STLP_CALL tanh(const complex<long double>&);
1280.1004 -# endif
1280.1005 -
1280.1006 -_STLP_END_NAMESPACE
1280.1007 -
1280.1008 -# ifndef _STLP_LINK_TIME_INSTANTIATION
1280.1009 -#  include <stl/_complex.c>
1280.1010 -# endif
1280.1011 -
1280.1012 -#endif /* _STLP_template_complex */
1280.1013 -
1280.1014 -// Local Variables:
1280.1015 -// mode:C++
1280.1016 -// End:
  1281.1 --- a/epoc32/include/stdapis/stlport/stl/_config_compat_post.h	Tue Mar 16 16:12:26 2010 +0000
  1281.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1281.3 @@ -1,35 +0,0 @@
  1281.4 -//==========================================
  1281.5 -
  1281.6 -# define __SGI_STL_PORT  _STLPORT_VERSION
  1281.7 -
  1281.8 -# if defined (_STLP_DEBUG) && ! defined ( __STL_DEBUG )
  1281.9 -#  define __STL_DEBUG _STLP_DEBUG
 1281.10 -# endif
 1281.11 -
 1281.12 -# if defined (_STLP_USE_NAMESPACES)
 1281.13 -#  undef  __STL_USE_NAMESPACES 
 1281.14 -#  define __STL_USE_NAMESPACES _STLP_USE_NAMESPACES
 1281.15 -# endif
 1281.16 -
 1281.17 -# if defined (_STLP_USE_EXCEPTIONS)
 1281.18 -#  undef  __STL_USE_EXCEPTIONS 
 1281.19 -#  define __STL_USE_EXCEPTIONS _STLP_USE_EXCEPTIONS
 1281.20 -# endif
 1281.21 -
 1281.22 -# if defined (_STLP_USE_NEW_IOSTREAMS) && ! defined ( __STL_USE_NEW_IOSTREAMS )
 1281.23 -#  define __STL_USE_NEW_IOSTREAMS _STLP_USE_NEW_IOSTREAMS
 1281.24 -# endif
 1281.25 -
 1281.26 -# if defined (_STLP_BEGIN_NAMESPACE) && ! defined ( __STL_BEGIN_NAMESPACE )
 1281.27 -#  define __STL_BEGIN_NAMESPACE _STLP_BEGIN_NAMESPACE
 1281.28 -#  define __STL_END_NAMESPACE _STLP_END_NAMESPACE
 1281.29 -#  define __STL_VENDOR_STD _STLP_VENDOR_STD
 1281.30 -#  define __STL_VENDOR_CSTD _STLP_VENDOR_CSTD
 1281.31 -# endif
 1281.32 -
 1281.33 -/*
 1281.34 -# if defined (_STLP_XXX) && ! defined ( __STL_XXX )
 1281.35 -#  define __STL_XXX _STLP_XXX
 1281.36 -# endif
 1281.37 -*/
 1281.38 -
  1282.1 --- a/epoc32/include/stdapis/stlport/stl/_construct.h	Tue Mar 16 16:12:26 2010 +0000
  1282.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1282.3 @@ -1,252 +0,0 @@
  1282.4 -/*
  1282.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1282.6 - * Copyright (c) 1994
  1282.7 - * Hewlett-Packard Company
  1282.8 - *
  1282.9 - * Copyright (c) 1996,1997
 1282.10 - * Silicon Graphics Computer Systems, Inc.
 1282.11 - *
 1282.12 - * Copyright (c) 1997
 1282.13 - * Moscow Center for SPARC Technology
 1282.14 - *
 1282.15 - * Copyright (c) 1999 
 1282.16 - * Boris Fomitchev
 1282.17 - *
 1282.18 - * This material is provided "as is", with absolutely no warranty expressed
 1282.19 - * or implied. Any use is at your own risk.
 1282.20 - *
 1282.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1282.22 - * without fee, provided the above notices are retained on all copies.
 1282.23 - * Permission to modify the code and to distribute modified code is granted,
 1282.24 - * provided the above notices are retained, and a notice that the code was
 1282.25 - * modified is included with the above copyright notice.
 1282.26 - *
 1282.27 - */
 1282.28 -
 1282.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1282.30 - *   You should not attempt to use it directly.
 1282.31 - */
 1282.32 -
 1282.33 -#ifndef _STLP_INTERNAL_CONSTRUCT_H
 1282.34 -#define _STLP_INTERNAL_CONSTRUCT_H
 1282.35 -
 1282.36 -#ifdef _STLP_USE_TRAP_LEAVE
 1282.37 -#include <e32base.h>
 1282.38 -#endif // _STLP_USE_TRAP_LEAVE
 1282.39 -
 1282.40 -# if defined (_STLP_DEBUG_UNINITIALIZED) && ! defined (_STLP_CSTRING)
 1282.41 -# include <cstring>
 1282.42 -# endif
 1282.43 -
 1282.44 -# ifndef _STLP_INTERNAL_NEW_HEADER
 1282.45 -#  include <stl/_new.h>
 1282.46 -# endif
 1282.47 -
 1282.48 -
 1282.49 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1282.50 -# include <stl/_iterator_base.h>
 1282.51 -#endif
 1282.52 -
 1282.53 -_STLP_BEGIN_NAMESPACE
 1282.54 -
 1282.55 -# ifdef _STLP_TRIVIAL_DESTRUCTOR_BUG
 1282.56 -template <class _Tp>
 1282.57 -inline void __destroy_aux(_Tp* __pointer, const __false_type&) { __pointer->~_Tp(); }
 1282.58 -template <class _Tp>
 1282.59 -inline void __destroy_aux(_Tp* __pointer, const __true_type&) {}
 1282.60 -# endif
 1282.61 -
 1282.62 -template <class _Tp>
 1282.63 -inline void _Destroy(_Tp* __pointer) {
 1282.64 -# if _MSC_VER >= 1010
 1282.65 -  __pointer;
 1282.66 -# endif	// _MSC_VER >= 1000
 1282.67 -# ifdef _STLP_TRIVIAL_DESTRUCTOR_BUG
 1282.68 -  typedef typename __type_traits<_Tp>::has_trivial_destructor _Trivial_destructor;
 1282.69 -  __destroy_aux(__pointer, _Trivial_destructor());
 1282.70 -# else
 1282.71 -#  if ( defined (__BORLANDC__) && ( __BORLANDC__ < 0x500 ) )
 1282.72 -    __pointer->_Tp::~_Tp();
 1282.73 -#  else
 1282.74 -    __pointer->~_Tp();
 1282.75 -#  endif
 1282.76 -# endif
 1282.77 -# ifdef _STLP_DEBUG_UNINITIALIZED
 1282.78 -	memset((char*)__pointer, _STLP_SHRED_BYTE, sizeof(_Tp));
 1282.79 -# endif
 1282.80 -}
 1282.81 -
 1282.82 -# if defined (new)
 1282.83 -#   define _STLP_NEW_REDEFINE new
 1282.84 -#   undef new
 1282.85 -# endif 
 1282.86 -
 1282.87 -# ifdef _STLP_DEFAULT_CONSTRUCTOR_BUG
 1282.88 -template <class _T1>
 1282.89 -inline void _Construct_aux (_T1* __p, const __false_type&) {
 1282.90 -_STLP_PLACEMENT_NEW (__p) _T1();
 1282.91 -}
 1282.92 -
 1282.93 -template <class _T1>
 1282.94 -inline void _Construct_aux (_T1* __p, const __true_type&) {
 1282.95 -_STLP_PLACEMENT_NEW (__p) _T1(0);
 1282.96 -}
 1282.97 -# endif
 1282.98 -
 1282.99 -template <class _T1, class _T2>
1282.100 -inline void _Construct(_T1* __p, const _T2& __val) {
1282.101 -# ifdef _STLP_DEBUG_UNINITIALIZED
1282.102 -	memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1));
1282.103 -# endif
1282.104 -    _STLP_PLACEMENT_NEW (__p) _T1(__val);
1282.105 -}
1282.106 -
1282.107 -template <class _T1>
1282.108 -inline void _Construct(_T1* __p) {
1282.109 -# ifdef _STLP_DEBUG_UNINITIALIZED
1282.110 -  memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1));
1282.111 -# endif
1282.112 -# ifdef _STLP_DEFAULT_CONSTRUCTOR_BUG
1282.113 -typedef typename _Is_integer<_T1>::_Integral _Is_Integral;
1282.114 -_Construct_aux (__p, _Is_Integral() );
1282.115 -# else
1282.116 -  _STLP_PLACEMENT_NEW (__p) _T1();
1282.117 -# endif
1282.118 -}
1282.119 -
1282.120 -# if defined(_STLP_NEW_REDEFINE)
1282.121 -# ifdef DEBUG_NEW
1282.122 -#  define new DEBUG_NEW
1282.123 -# endif
1282.124 -#  undef _STLP_NEW_REDEFINE
1282.125 -# endif 
1282.126 -
1282.127 -template <class _ForwardIterator>
1282.128 -_STLP_INLINE_LOOP void
1282.129 -__destroy_aux(_ForwardIterator __first, _ForwardIterator __last, const __false_type&) {
1282.130 -  for ( ; __first != __last; ++__first)
1282.131 -    _STLP_STD::_Destroy(&*__first);
1282.132 -}
1282.133 -
1282.134 -template <class _ForwardIterator> 
1282.135 -inline void __destroy_aux(_ForwardIterator, _ForwardIterator, const __true_type&) {}
1282.136 -
1282.137 -template <class _ForwardIterator, class _Tp>
1282.138 -inline void 
1282.139 -__destroy(_ForwardIterator __first, _ForwardIterator __last, _Tp*) {
1282.140 -  typedef typename __type_traits<_Tp>::has_trivial_destructor _Trivial_destructor;
1282.141 -  __destroy_aux(__first, __last, _Trivial_destructor());
1282.142 -}
1282.143 -
1282.144 -template <class _ForwardIterator>
1282.145 -inline void _Destroy(_ForwardIterator __first, _ForwardIterator __last) {
1282.146 -  __destroy(__first, __last, _STLP_VALUE_TYPE(__first, _ForwardIterator));
1282.147 -}
1282.148 -
1282.149 -inline void _Destroy(char*, char*) {}
1282.150 -# ifdef _STLP_HAS_WCHAR_T // dwa 8/15/97
1282.151 -inline void _Destroy(wchar_t*, wchar_t*) {}
1282.152 -inline void _Destroy(const wchar_t*, const wchar_t*) {}
1282.153 -# endif
1282.154 -
1282.155 -# ifndef _STLP_NO_ANACHRONISMS
1282.156 -// --------------------------------------------------
1282.157 -// Old names from the HP STL.
1282.158 -
1282.159 -template <class _T1, class _T2>
1282.160 -inline void construct(_T1* __p, const _T2& __val) {_Construct(__p, __val); }
1282.161 -template <class _T1>
1282.162 -inline void construct(_T1* __p) { _Construct(__p); }
1282.163 -template <class _Tp>
1282.164 -inline void destroy(_Tp* __pointer) {  _STLP_STD::_Destroy(__pointer); }
1282.165 -template <class _ForwardIterator>
1282.166 -inline void destroy(_ForwardIterator __first, _ForwardIterator __last) { _STLP_STD::_Destroy(__first, __last); }
1282.167 -# endif
1282.168 -
1282.169 -#ifdef _STLP_USE_TRAP_LEAVE
1282.170 -
1282.171 -struct TCleanupOverlay
1282.172 -{
1282.173 -    TAny *vtable;
1282.174 -    TAny *iBase;
1282.175 -    TAny *iTop;
1282.176 -    TAny *iNext;
1282.177 -};
1282.178 -
1282.179 -template <class _Tp>
1282.180 -struct _STLP_StackHelper {
1282.181 -  static unsigned int Check( void *ptr );
1282.182 -  static void* _NewLC (size_t __n);
1282.183 -};
1282.184 -
1282.185 -struct _STLP_StackPopper {
1282.186 -  ~_STLP_StackPopper() { CleanupStack::Pop(); }
1282.187 -};
1282.188 -
1282.189 -template <class _Tp>
1282.190 -struct _STLP_Cleanup {
1282.191 -  static void clear(TAny* __p);
1282.192 -};
1282.193 -
1282.194 -# define _STLP_PUSH_CLEANUP_ITEM(_Tp, __p)  CleanupStack::PushL(TCleanupItem(&_STLP_Cleanup< _Tp >::clear, (TAny*)__p));
1282.195 -# define _STLP_PUSH_STACK_ITEM(_Tp, __p)  _STLP_PUSH_CLEANUP_ITEM(_Tp, __p)   _STLP_StackPopper __Popper; _STLP_no_unused_variable_warning( __Popper );
1282.196 -# define _STLP_POP_IF_CHECK if (_STLP_StackHelper<bool>::Check(this)) CleanupStack::Pop();
1282.197 -# define _STLP_POP_CLEANUP_ITEM CleanupStack::Pop(); _STLP_POP_IF_CHECK
1282.198 -
1282.199 -# define _STLP_POP_ITEM CleanupStack::Pop();
1282.200 -
1282.201 -// to be used in complex object constructors
1282.202 -template <class _Tp>
1282.203 -struct _STLP_StackPusher {
1282.204 -  _STLP_StackPusher(_Tp * __p) { _STLP_PUSH_CLEANUP_ITEM(_Tp, (void*)__p) }
1282.205 -};
1282.206 -
1282.207 -template <class _Tp>
1282.208 -unsigned int _STLP_StackHelper<_Tp>::Check( void *ptr )
1282.209 -
1282.210 -{
1282.211 -    TCleanupTrapHandler *handler =
1282.212 -        (TCleanupTrapHandler *)User::TrapHandler();
1282.213 -
1282.214 -    CCleanup &cleanup = handler->Cleanup();
1282.215 -
1282.216 -    TCleanupOverlay *overlay = (TCleanupOverlay *)( &cleanup );
1282.217 -
1282.218 -    char *raw = (char *)(overlay->iNext) - 4;
1282.219 -    void *topptr = *( (void **)(raw) );
1282.220 -
1282.221 -    return ( ptr == topptr );
1282.222 -} 
1282.223 -
1282.224 -
1282.225 -template <class _Tp>
1282.226 -void* _STLP_StackHelper<_Tp>::_NewLC(size_t __n) { 
1282.227 -  void* __p = ::operator new (__n, ELeave) ; 
1282.228 -  // constructor will pop it back
1282.229 -  CleanupStack::PushL(__p); 
1282.230 -  return __p;
1282.231 -}
1282.232 -
1282.233 -template <class _Tp>
1282.234 -void _STLP_Cleanup<_Tp>::clear(TAny* __p)
1282.235 -{
1282.236 -  ((_Tp*)__p)->~_Tp();
1282.237 -}
1282.238 -
1282.239 -
1282.240 -#else
1282.241 -# define _STLP_PUSH_CLEANUP_ITEM(_Tp, __p)
1282.242 -# define _STLP_POP_CLEANUP_ITEM
1282.243 -# define _STLP_PUSH_STACK_ITEM(_Tp, p)
1282.244 -# define _STLP_POP_ITEM
1282.245 -# define _STLP_POP_IF_CHECK
1282.246 -# define TPush TLeave
1282.247 -#endif
1282.248 -
1282.249 -_STLP_END_NAMESPACE
1282.250 -
1282.251 -#endif /* _STLP_INTERNAL_CONSTRUCT_H */
1282.252 -
1282.253 -// Local Variables:
1282.254 -// mode:C++
1282.255 -// End:
  1283.1 --- a/epoc32/include/stdapis/stlport/stl/_ctraits_fns.h	Tue Mar 16 16:12:26 2010 +0000
  1283.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1283.3 @@ -1,95 +0,0 @@
  1283.4 -/*
  1283.5 - * Copyright (c) 1999
  1283.6 - * Silicon Graphics Computer Systems, Inc.
  1283.7 - *
  1283.8 - * Permission to use, copy, modify, distribute and sell this software
  1283.9 - * and its documentation for any purpose is hereby granted without fee,
 1283.10 - * provided that the above copyright notice appear in all copies and
 1283.11 - * that both that copyright notice and this permission notice appear
 1283.12 - * in supporting documentation.  Silicon Graphics makes no
 1283.13 - * representations about the suitability of this software for any
 1283.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1283.15 - */ 
 1283.16 -
 1283.17 -// WARNING: This is an internal header file, included by other C++
 1283.18 -// standard library headers.  You should not attempt to use this header
 1283.19 -// file directly.
 1283.20 -
 1283.21 -#ifndef _STLP_INTERNAL_CTRAITS_FUNCTIONS_H
 1283.22 -#define _STLP_INTERNAL_CTRAITS_FUNCTIONS_H
 1283.23 -
 1283.24 -# ifndef _STLP_INTERNAL_FUNCTION_H 
 1283.25 -#  include <stl/_function_base.h>
 1283.26 -# endif
 1283.27 -
 1283.28 -// This file contains a few small adapters that allow a character
 1283.29 -// traits class to be used as a function object.
 1283.30 -
 1283.31 -_STLP_BEGIN_NAMESPACE
 1283.32 -
 1283.33 -template <class _Traits>
 1283.34 -struct _Eq_traits
 1283.35 -  : public binary_function<typename _Traits::char_type,
 1283.36 -                           typename _Traits::char_type,
 1283.37 -                           bool>
 1283.38 -{
 1283.39 -  bool operator()(const typename _Traits::char_type& __x,
 1283.40 -                  const typename _Traits::char_type& __y) const
 1283.41 -    { return _Traits::eq(__x, __y); }
 1283.42 -};
 1283.43 -
 1283.44 -template <class _Traits>
 1283.45 -struct _Eq_char_bound
 1283.46 -  : public unary_function<typename _Traits::char_type, bool>
 1283.47 -{
 1283.48 -  typename _Traits::char_type __val;
 1283.49 -  _Eq_char_bound(typename _Traits::char_type __c) : __val(__c) {}
 1283.50 -  bool operator()(const typename _Traits::char_type& __x) const
 1283.51 -    { return _Traits::eq(__x, __val); }
 1283.52 -};
 1283.53 -
 1283.54 -template <class _Traits>
 1283.55 -struct _Neq_char_bound
 1283.56 -  : public unary_function<typename _Traits::char_type, bool>
 1283.57 -{
 1283.58 -  typename _Traits::char_type __val;
 1283.59 -  _Neq_char_bound(typename _Traits::char_type __c) : __val(__c) {}
 1283.60 -  bool operator()(const typename _Traits::char_type& __x) const
 1283.61 -    { return !_Traits::eq(__x, __val); }
 1283.62 -};
 1283.63 -
 1283.64 -template <class _Traits>
 1283.65 -struct _Eq_int_bound
 1283.66 -  : public unary_function<typename _Traits::char_type, bool>
 1283.67 -{
 1283.68 -  typename _Traits::int_type __val;
 1283.69 -
 1283.70 -  _Eq_int_bound(typename _Traits::int_type __c) : __val(__c) {}
 1283.71 -  bool operator()(const typename _Traits::char_type& __x) const
 1283.72 -    { return _Traits::eq_int_type(_Traits::to_int_type(__x), __val); }
 1283.73 -};
 1283.74 -
 1283.75 -# if 0
 1283.76 -template <class _Traits>
 1283.77 -struct _Lt_traits
 1283.78 -  : public binary_function<typename _Traits::char_type,
 1283.79 -                           typename _Traits::char_type,
 1283.80 -                           bool>
 1283.81 -{
 1283.82 -  bool operator()(const typename _Traits::char_type& __x,
 1283.83 -                  const typename _Traits::char_type& __y) const
 1283.84 -    { return _Traits::lt(__x, __y); }
 1283.85 -};
 1283.86 -# endif
 1283.87 -
 1283.88 -_STLP_END_NAMESPACE
 1283.89 -
 1283.90 -#endif /* _STLP_INTERNAL_CTRAITS_FUNCTIONS_H */
 1283.91 -
 1283.92 -// Local Variables:
 1283.93 -// mode:C++
 1283.94 -// End:
 1283.95 -
 1283.96 -
 1283.97 -
 1283.98 -
  1284.1 --- a/epoc32/include/stdapis/stlport/stl/_cwchar.h	Tue Mar 16 16:12:26 2010 +0000
  1284.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1284.3 @@ -1,119 +0,0 @@
  1284.4 -/*
  1284.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1284.6 - * Copyright (c) 1999
  1284.7 - * Boris Fomitchev
  1284.8 - *
  1284.9 - * This material is provided "as is", with absolutely no warranty expressed
 1284.10 - * or implied. Any use is at your own risk.
 1284.11 - *
 1284.12 - * Permission to use or copy this software for any purpose is hereby granted 
 1284.13 - * without fee, provided the above notices are retained on all copies.
 1284.14 - * Permission to modify the code and to distribute modified code is granted,
 1284.15 - * provided the above notices are retained, and a notice that the code was
 1284.16 - * modified is included with the above copyright notice.
 1284.17 - *
 1284.18 - */
 1284.19 -
 1284.20 -#ifndef _STLP_CWCHAR_H
 1284.21 -# define _STLP_CWCHAR_H
 1284.22 -
 1284.23 -#ifndef _STLP_NO_WCHAR_T
 1284.24 -#ifdef __cplusplus
 1284.25 -# include <cwchar>
 1284.26 -#else
 1284.27 -# include <wchar.h>
 1284.28 -#endif
 1284.29 -#endif
 1284.30 -
 1284.31 -# if defined (__MRC__) || defined (__SC__) || defined (__BORLANDC__) || defined(__FreeBSD__) || (defined (__GNUC__) && defined (__APPLE__) || defined( __Lynx__ )) || defined (_STLP_NO_WCHAR_T)
 1284.32 -
 1284.33 -#ifdef __SYMBIAN32__
 1284.34 -#  include <stddef.h>
 1284.35 -#else
 1284.36 -# include _STLP_NATIVE_C_HEADER(stddef.h)
 1284.37 -#endif
 1284.38 -#  if defined (__FreeBSD__) || defined (__Lynx__)
 1284.39 -#   ifndef _WINT_T
 1284.40 -typedef long int wint_t;
 1284.41 -#    define _WINT_T
 1284.42 -#   endif /* _WINT_T */
 1284.43 -#  endif
 1284.44 -# endif
 1284.45 -
 1284.46 -# if defined ( _STLP_OWN_IOSTREAMS ) && defined (_STLP_NO_NATIVE_MBSTATE_T) && ! defined (_STLP_NO_MBSTATE_T) && ! defined (_MBSTATE_T) && ! defined (__mbstate_t_defined)
 1284.47 -#  define _STLP_USE_OWN_MBSTATE_T
 1284.48 -#  define _MBSTATE_T
 1284.49 -# endif
 1284.50 -
 1284.51 -# ifdef _STLP_USE_OWN_MBSTATE_T
 1284.52 -
 1284.53 -#ifndef __SYMBIAN32__ //no more using the structure __stl_mbstate_t. usinfg _mb_state_t from _types.h.
 1284.54 -// to be compatible across different SUN platforms
 1284.55 -#ifdef __sun
 1284.56 -# define __stl_mbstate_t __mbstate_t
 1284.57 -#endif
 1284.58 -
 1284.59 -struct __stl_mbstate_t;
 1284.60 -
 1284.61 -# ifdef __cplusplus
 1284.62 -struct __stl_mbstate_t { 
 1284.63 -  __stl_mbstate_t( long __st = 0 ) { _M_state[0] = __st ; }
 1284.64 -  __stl_mbstate_t& operator=(const long __st) {
 1284.65 -    _M_state[0] = __st;              
 1284.66 -    return *this;
 1284.67 -  } 
 1284.68 -  __stl_mbstate_t(const __stl_mbstate_t& __x) {_M_state[0]= __x._M_state[0]; }         
 1284.69 -  __stl_mbstate_t& operator=(const __stl_mbstate_t& __x) {
 1284.70 -    _M_state[0]= __x._M_state[0];              
 1284.71 -    return *this;
 1284.72 -  }
 1284.73 -# if defined (__sun)
 1284.74 -#  ifdef _LP64
 1284.75 -  long _M_state[4];
 1284.76 -#  else
 1284.77 -  int _M_state[6];
 1284.78 -#  endif
 1284.79 -# else       
 1284.80 -  long _M_state[1];
 1284.81 -# endif
 1284.82 -};          
 1284.83 -
 1284.84 -inline bool operator==(const __stl_mbstate_t& __x, const __stl_mbstate_t& __y) {
 1284.85 -  return ( __x._M_state[0] == __y._M_state[0] );
 1284.86 -}
 1284.87 -
 1284.88 -inline bool operator!=(const __stl_mbstate_t& __x, const __stl_mbstate_t& __y) {
 1284.89 -  return ( __x._M_state[0] == __y._M_state[0] );
 1284.90 -}
 1284.91 -# endif
 1284.92 -
 1284.93 -
 1284.94 -#endif //#if __SYMBIAN32__
 1284.95 -_STLP_BEGIN_NAMESPACE
 1284.96 -//typedef __mbstate_t __stl_mbstate_t;
 1284.97 -//typedef __mbstate_t mbstate_t;
 1284.98 -
 1284.99 -_STLP_END_NAMESPACE
1284.100 -
1284.101 -# endif /* _STLP_USE_OWN_MBSTATE_T */
1284.102 -
1284.103 -#if !defined (_STLP_NO_WCHAR_T)
1284.104 -# ifndef WCHAR_MIN
1284.105 -#  define WCHAR_MIN 0
1284.106 -// SUNpro has some bugs with casts. wchar_t is size of int there anyway.
1284.107 -#  if defined (__SUNPRO_CC) || defined (__DJGPP)
1284.108 -#   define WCHAR_MAX (~0)
1284.109 -#  else
1284.110 -#   define WCHAR_MAX ((wchar_t)~0)
1284.111 -#  endif
1284.112 -# endif
1284.113 -#endif
1284.114 -
1284.115 -# if defined  (_STLP_IMPORT_VENDOR_CSTD) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
1284.116 -_STLP_BEGIN_NAMESPACE  
1284.117 -using namespace _STLP_VENDOR_CSTD;
1284.118 -_STLP_END_NAMESPACE
1284.119 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
1284.120 -
1284.121 -#endif /* _STLP_CWCHAR_H */
1284.122 -
  1285.1 --- a/epoc32/include/stdapis/stlport/stl/_deque.c	Tue Mar 16 16:12:26 2010 +0000
  1285.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1285.3 @@ -1,691 +0,0 @@
  1285.4 -/*
  1285.5 - *
  1285.6 - *
  1285.7 - * Copyright (c) 1994
  1285.8 - * Hewlett-Packard Company
  1285.9 - *
 1285.10 - * Copyright (c) 1996,1997
 1285.11 - * Silicon Graphics Computer Systems, Inc.
 1285.12 - *
 1285.13 - * Copyright (c) 1997
 1285.14 - * Moscow Center for SPARC Technology
 1285.15 - *
 1285.16 - * Copyright (c) 1999 
 1285.17 - * Boris Fomitchev
 1285.18 - *
 1285.19 - * This material is provided "as is", with absolutely no warranty expressed
 1285.20 - * or implied. Any use is at your own risk.
 1285.21 - *
 1285.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1285.23 - * without fee, provided the above notices are retained on all copies.
 1285.24 - * Permission to modify the code and to distribute modified code is granted,
 1285.25 - * provided the above notices are retained, and a notice that the code was
 1285.26 - * modified is included with the above copyright notice.
 1285.27 - *
 1285.28 - */
 1285.29 -#ifndef _STLP_DEQUE_C
 1285.30 -# define _STLP_DEQUE_C
 1285.31 -
 1285.32 -# ifndef _STLP_INTERNAL_DEQUE_H
 1285.33 -#  include <stl/_deque.h>
 1285.34 -# endif
 1285.35 -
 1285.36 -_STLP_BEGIN_NAMESPACE
 1285.37 -
 1285.38 -// Non-inline member functions from _Deque_base.
 1285.39 -
 1285.40 -template <class _Tp, class _Alloc >
 1285.41 -_Deque_base<_Tp,_Alloc >::~_Deque_base() {
 1285.42 -  if (_M_map._M_data) {
 1285.43 -    if (_M_start._M_node) {
 1285.44 -      _M_destroy_nodes(_M_start._M_node, this->_M_finish._M_node + 1);
 1285.45 -    }
 1285.46 -    _M_map.deallocate(_M_map._M_data, _M_map_size._M_data);
 1285.47 -  }
 1285.48 -}
 1285.49 -
 1285.50 -template <class _Tp, class _Alloc >
 1285.51 -void
 1285.52 -_Deque_base<_Tp,_Alloc>::_M_initialize_map(size_t __num_elements)
 1285.53 -{
 1285.54 -  size_t __num_nodes = 
 1285.55 -    __num_elements / this->buffer_size() + 1 ;
 1285.56 -
 1285.57 -  _M_map_size._M_data = (max)((size_t) _S_initial_map_size, __num_nodes + 2);
 1285.58 -  _M_map._M_data = _M_map.allocate(_M_map_size._M_data);
 1285.59 -
 1285.60 -  _Tp** __nstart = _M_map._M_data + (_M_map_size._M_data - __num_nodes) / 2;
 1285.61 -  _Tp** __nfinish = __nstart + __num_nodes;
 1285.62 -    
 1285.63 -  _STLP_TRY {
 1285.64 -    _M_create_nodes(__nstart, __nfinish);
 1285.65 -  }
 1285.66 -  _STLP_UNWIND((_M_map.deallocate(_M_map._M_data, _M_map_size._M_data), 
 1285.67 -                _M_map._M_data = 0, _M_map_size._M_data = 0));
 1285.68 -  _M_start._M_set_node(__nstart);
 1285.69 -  this->_M_finish._M_set_node(__nfinish - 1);
 1285.70 -  _M_start._M_cur = _M_start._M_first;
 1285.71 -  this->_M_finish._M_cur = this->_M_finish._M_first +
 1285.72 -               __num_elements % this->buffer_size();
 1285.73 -}
 1285.74 -
 1285.75 -template <class _Tp, class _Alloc >
 1285.76 -void
 1285.77 -_Deque_base<_Tp,_Alloc>::_M_create_nodes(_Tp** __nstart,
 1285.78 -                                                  _Tp** __nfinish)
 1285.79 -{
 1285.80 -  _Tp** _STLP_LEAVE_VOLATILE __cur = 0;
 1285.81 -  _STLP_TRY {
 1285.82 -    for (__cur = __nstart; __cur < __nfinish; ++__cur)
 1285.83 -      *__cur = _M_map_size.allocate(this->buffer_size());
 1285.84 -  }
 1285.85 -  _STLP_UNWIND(_M_destroy_nodes(__nstart, __cur));
 1285.86 -}
 1285.87 -
 1285.88 -template <class _Tp, class _Alloc >
 1285.89 -void 
 1285.90 -_Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart,
 1285.91 -                                                   _Tp** __nfinish)
 1285.92 -{
 1285.93 -  for (_Tp** __n = __nstart; __n < __nfinish; ++__n)
 1285.94 -    _M_map_size.deallocate(*__n, this->buffer_size());
 1285.95 -}
 1285.96 -
 1285.97 -
 1285.98 -
 1285.99 -// Non-inline member functions
1285.100 -
1285.101 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
1285.102 -// qualified references 
1285.103 -#   define __iterator__           _Deque_iterator<_Tp, _Nonconst_traits<_Tp> >
1285.104 -#   define const_iterator         _Deque_iterator<_Tp, _Const_traits<_Tp>  > 
1285.105 -#   define iterator               __iterator__
1285.106 -#   define size_type              size_t
1285.107 -#   define value_type             _Tp
1285.108 -# else
1285.109 -#  define __iterator__           _STLP_TYPENAME_ON_RETURN_TYPE __deque__<_Tp, _Alloc>::iterator
1285.110 -# endif
1285.111 -
1285.112 -template <class _Tp, class _Alloc >
1285.113 -__deque__<_Tp, _Alloc >&  
1285.114 -__deque__<_Tp, _Alloc >::operator= (const __deque__<_Tp, _Alloc >& __x) {
1285.115 -  const size_type __len = size();
1285.116 -  if (&__x != this) {
1285.117 -    if (__len >= __x.size())
1285.118 -      erase(copy(__x.begin(), __x.end(), this->_M_start), this->_M_finish);
1285.119 -    else {
1285.120 -      const_iterator __mid = __x.begin() + difference_type(__len);
1285.121 -      copy(__x.begin(), __mid, this->_M_start);
1285.122 -      insert(this->_M_finish, __mid, __x.end());
1285.123 -    }
1285.124 -  }
1285.125 -  return *this;
1285.126 -}        
1285.127 -
1285.128 -template <class _Tp, class _Alloc >
1285.129 -void 
1285.130 -__deque__<_Tp, _Alloc >::_M_fill_insert(iterator __pos,
1285.131 -					     size_type __n, const value_type& __x)
1285.132 -{
1285.133 -  if (__pos._M_cur == this->_M_start._M_cur) {
1285.134 -    iterator __new_start = _M_reserve_elements_at_front(__n);
1285.135 -    _STLP_TRY {
1285.136 -      uninitialized_fill(__new_start, this->_M_start, __x);
1285.137 -    }
1285.138 -    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1285.139 -    this->_M_start = __new_start;
1285.140 -  }
1285.141 -  else if (__pos._M_cur == this->_M_finish._M_cur) {
1285.142 -    iterator __new_finish = _M_reserve_elements_at_back(__n);
1285.143 -    _STLP_TRY {
1285.144 -      uninitialized_fill(this->_M_finish, __new_finish, __x);
1285.145 -    }
1285.146 -    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node+1, __new_finish._M_node+1));
1285.147 -    this->_M_finish = __new_finish;
1285.148 -  }
1285.149 -  else 
1285.150 -    _M_insert_aux(__pos, __n, __x);
1285.151 -}
1285.152 -
1285.153 -#ifndef _STLP_MEMBER_TEMPLATES  
1285.154 -
1285.155 -template <class _Tp, class _Alloc >
1285.156 -void __deque__<_Tp, _Alloc>::insert(iterator __pos,
1285.157 -                                           const value_type* __first,
1285.158 -                                           const value_type* __last) {
1285.159 -  size_type __n = __last - __first;
1285.160 -  if (__pos._M_cur == this->_M_start._M_cur) {
1285.161 -    iterator __new_start = _M_reserve_elements_at_front(__n);
1285.162 -    _STLP_TRY {
1285.163 -      uninitialized_copy(__first, __last, __new_start);
1285.164 -    }
1285.165 -    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1285.166 -    this->_M_start = __new_start;
1285.167 -  }
1285.168 -  else if (__pos._M_cur == this->_M_finish._M_cur) {
1285.169 -    iterator __new_finish = _M_reserve_elements_at_back(__n);
1285.170 -    _STLP_TRY {
1285.171 -      uninitialized_copy(__first, __last, this->_M_finish);
1285.172 -    }
1285.173 -    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, 
1285.174 -                                  __new_finish._M_node + 1));
1285.175 -    this->_M_finish = __new_finish;
1285.176 -  }
1285.177 -  else
1285.178 -    _M_insert_aux(__pos, __first, __last, __n);
1285.179 -}
1285.180 -
1285.181 -template <class _Tp, class _Alloc >
1285.182 -void __deque__<_Tp,_Alloc>::insert(iterator __pos,
1285.183 -                                         const_iterator __first,
1285.184 -                                         const_iterator __last)
1285.185 -{
1285.186 -  size_type __n = __last - __first;
1285.187 -  if (__pos._M_cur == this->_M_start._M_cur) {
1285.188 -    iterator __new_start = _M_reserve_elements_at_front(__n);
1285.189 -    _STLP_TRY {
1285.190 -      uninitialized_copy(__first, __last, __new_start);
1285.191 -    }
1285.192 -    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1285.193 -    this->_M_start = __new_start;
1285.194 -  }
1285.195 -  else if (__pos._M_cur == this->_M_finish._M_cur) {
1285.196 -    iterator __new_finish = _M_reserve_elements_at_back(__n);
1285.197 -    _STLP_TRY {
1285.198 -      uninitialized_copy(__first, __last, this->_M_finish);
1285.199 -    }
1285.200 -    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1,__new_finish._M_node + 1));
1285.201 -    this->_M_finish = __new_finish;
1285.202 -  }
1285.203 -  else
1285.204 -    _M_insert_aux(__pos, __first, __last, __n);
1285.205 -}
1285.206 -
1285.207 -#endif /* _STLP_MEMBER_TEMPLATES */
1285.208 -
1285.209 -template <class _Tp, class _Alloc >
1285.210 -__iterator__ 
1285.211 -__deque__<_Tp,_Alloc>::erase(iterator __first, iterator __last)
1285.212 -{
1285.213 -  if (__first == this->_M_start && __last == this->_M_finish) {
1285.214 -    clear();
1285.215 -    return this->_M_finish;
1285.216 -  }
1285.217 -  else {
1285.218 -    difference_type __n = __last - __first;
1285.219 -    difference_type __elems_before = __first - this->_M_start;
1285.220 -    if (__elems_before < difference_type(this->size() - __n) / 2) {
1285.221 -      copy_backward(this->_M_start, __first, __last);
1285.222 -      iterator __new_start = this->_M_start + __n;
1285.223 -      _STLP_STD::_Destroy(this->_M_start, __new_start);
1285.224 -      this->_M_destroy_nodes(this->_M_start._M_node, __new_start._M_node);
1285.225 -      this->_M_start = __new_start;
1285.226 -    }
1285.227 -    else {
1285.228 -      copy(__last, this->_M_finish, __first);
1285.229 -      iterator __new_finish = this->_M_finish - __n;
1285.230 -      _STLP_STD::_Destroy(__new_finish, this->_M_finish);
1285.231 -      this->_M_destroy_nodes(__new_finish._M_node + 1, this->_M_finish._M_node + 1);
1285.232 -      this->_M_finish = __new_finish;
1285.233 -    }
1285.234 -    return this->_M_start + __elems_before;
1285.235 -  }
1285.236 -}
1285.237 -
1285.238 -template <class _Tp, class _Alloc >
1285.239 -void __deque__<_Tp,_Alloc>::clear()
1285.240 -{
1285.241 -  for (_Map_pointer __node = this->_M_start._M_node + 1;
1285.242 -       __node < this->_M_finish._M_node;
1285.243 -       ++__node) {
1285.244 -    _STLP_STD::_Destroy(*__node, *__node + this->buffer_size());
1285.245 -    this->_M_map_size.deallocate(*__node, this->buffer_size());
1285.246 -  }
1285.247 -
1285.248 -  if (this->_M_start._M_node != this->_M_finish._M_node) {
1285.249 -    _STLP_STD::_Destroy(this->_M_start._M_cur, this->_M_start._M_last);
1285.250 -    _STLP_STD::_Destroy(this->_M_finish._M_first, this->_M_finish._M_cur);
1285.251 -    this->_M_map_size.deallocate(this->_M_finish._M_first, this->buffer_size());
1285.252 -  }
1285.253 -  else
1285.254 -    _STLP_STD::_Destroy(this->_M_start._M_cur, this->_M_finish._M_cur);
1285.255 -
1285.256 -  this->_M_finish = this->_M_start;
1285.257 -}
1285.258 -
1285.259 -// Precondition: this->_M_start and this->_M_finish have already been initialized,
1285.260 -// but none of the deque's elements have yet been constructed.
1285.261 -template <class _Tp, class _Alloc >
1285.262 -void 
1285.263 -__deque__<_Tp,_Alloc>::_M_fill_initialize(const value_type& __val) {
1285.264 -  _STLP_LEAVE_VOLATILE _Map_pointer __cur = 0;
1285.265 -  _STLP_TRY {
1285.266 -    for (__cur = this->_M_start._M_node; __cur < this->_M_finish._M_node; ++__cur)
1285.267 -      uninitialized_fill(*__cur, *__cur + this->buffer_size(), __val);
1285.268 -    uninitialized_fill(this->_M_finish._M_first, this->_M_finish._M_cur, __val);
1285.269 -  }
1285.270 -  _STLP_UNWIND(_STLP_STD::_Destroy(this->_M_start, iterator(*__cur, __cur)));
1285.271 -}
1285.272 -
1285.273 -
1285.274 -// Called only if this->_M_finish._M_cur == this->_M_finish._M_last - 1.
1285.275 -template <class _Tp, class _Alloc >
1285.276 -void
1285.277 -__deque__<_Tp,_Alloc>::_M_push_back_aux_v(const value_type& __t)
1285.278 -{
1285.279 -  value_type __t_copy = __t;
1285.280 -  _STLP_PUSH_CLEANUP_ITEM(value_type, &__t_copy); 
1285.281 -  _M_reserve_map_at_back();
1285.282 -  *(this->_M_finish._M_node + 1) = this->_M_map_size.allocate(this->buffer_size());
1285.283 -  _STLP_TRY {
1285.284 -    _Construct(this->_M_finish._M_cur, __t_copy);
1285.285 -    this->_M_finish._M_set_node(this->_M_finish._M_node + 1);
1285.286 -    this->_M_finish._M_cur = this->_M_finish._M_first;
1285.287 -  }
1285.288 -  _STLP_UNWIND(this->_M_map_size.deallocate(*(this->_M_finish._M_node + 1), 
1285.289 -				      this->buffer_size()));
1285.290 -#ifdef _STLP_USE_TRAP_LEAVE
1285.291 -    CleanupStack::Pop(); 
1285.292 -#endif  
1285.293 -}
1285.294 -
1285.295 -# ifndef _STLP_NO_ANACHRONISMS
1285.296 -// Called only if this->_M_finish._M_cur == this->_M_finish._M_last - 1.
1285.297 -template <class _Tp, class _Alloc >
1285.298 -void
1285.299 -__deque__<_Tp,_Alloc>::_M_push_back_aux()
1285.300 -{
1285.301 -  _M_reserve_map_at_back();
1285.302 -  *(this->_M_finish._M_node + 1) = this->_M_map_size.allocate(this->buffer_size());
1285.303 -  _STLP_TRY {
1285.304 -    _Construct(this->_M_finish._M_cur);
1285.305 -    this->_M_finish._M_set_node(this->_M_finish._M_node + 1);
1285.306 -    this->_M_finish._M_cur = this->_M_finish._M_first;
1285.307 -  }
1285.308 -  _STLP_UNWIND(this->_M_map_size.deallocate(*(this->_M_finish._M_node + 1), 
1285.309 -				      this->buffer_size()));
1285.310 -}
1285.311 -# endif
1285.312 -
1285.313 -// Called only if this->_M_start._M_cur == this->_M_start._M_first.
1285.314 -template <class _Tp, class _Alloc >
1285.315 -void 
1285.316 -__deque__<_Tp,_Alloc>::_M_push_front_aux_v(const value_type& __t)
1285.317 -{
1285.318 -  value_type __t_copy = __t;
1285.319 -  _STLP_PUSH_CLEANUP_ITEM(value_type, &__t_copy); 
1285.320 -  _M_reserve_map_at_front();
1285.321 -  *(this->_M_start._M_node - 1) = this->_M_map_size.allocate(this->buffer_size());
1285.322 -  _STLP_TRY {
1285.323 -    this->_M_start._M_set_node(this->_M_start._M_node - 1);
1285.324 -    this->_M_start._M_cur = this->_M_start._M_last - 1;
1285.325 -    _Construct(this->_M_start._M_cur, __t_copy);
1285.326 -  }
1285.327 -  _STLP_UNWIND((++this->_M_start, 
1285.328 -		this->_M_map_size.deallocate(*(this->_M_start._M_node - 1), this->buffer_size())));
1285.329 -#ifdef _STLP_USE_TRAP_LEAVE
1285.330 -    CleanupStack::Pop(); 
1285.331 -#endif  
1285.332 -} 
1285.333 -
1285.334 -
1285.335 -# ifndef _STLP_NO_ANACHRONISMS
1285.336 -// Called only if this->_M_start._M_cur == this->_M_start._M_first.
1285.337 -template <class _Tp, class _Alloc >
1285.338 -void 
1285.339 -__deque__<_Tp,_Alloc>::_M_push_front_aux()
1285.340 -{
1285.341 -  _M_reserve_map_at_front();
1285.342 -  *(this->_M_start._M_node - 1) = this->_M_map_size.allocate(this->buffer_size());
1285.343 -  _STLP_TRY {
1285.344 -    this->_M_start._M_set_node(this->_M_start._M_node - 1);
1285.345 -    this->_M_start._M_cur = this->_M_start._M_last - 1;
1285.346 -    _Construct(this->_M_start._M_cur);
1285.347 -  }
1285.348 -  _STLP_UNWIND((++this->_M_start, this->_M_map_size.deallocate(*(this->_M_start._M_node - 1), 
1285.349 -						   this->buffer_size() )));
1285.350 -} 
1285.351 -# endif
1285.352 -
1285.353 -// Called only if this->_M_finish._M_cur == this->_M_finish._M_first.
1285.354 -template <class _Tp, class _Alloc >
1285.355 -void 
1285.356 -__deque__<_Tp,_Alloc>::_M_pop_back_aux()
1285.357 -{
1285.358 -  this->_M_map_size.deallocate(this->_M_finish._M_first, this->buffer_size());
1285.359 -  this->_M_finish._M_set_node(this->_M_finish._M_node - 1);
1285.360 -  this->_M_finish._M_cur = this->_M_finish._M_last - 1;
1285.361 -  _STLP_STD::_Destroy(this->_M_finish._M_cur);
1285.362 -}
1285.363 -
1285.364 -// Called only if this->_M_start._M_cur == this->_M_start._M_last - 1.  Note that 
1285.365 -// if the deque has at least one element (a precondition for this member 
1285.366 -// function), and if this->_M_start._M_cur == this->_M_start._M_last, then the deque 
1285.367 -// must have at least two nodes.
1285.368 -template <class _Tp, class _Alloc >
1285.369 -void 
1285.370 -__deque__<_Tp,_Alloc>::_M_pop_front_aux()
1285.371 -{
1285.372 -  _STLP_STD::_Destroy(this->_M_start._M_cur);
1285.373 -  this->_M_map_size.deallocate(this->_M_start._M_first, this->buffer_size());
1285.374 -  this->_M_start._M_set_node(this->_M_start._M_node + 1);
1285.375 -  this->_M_start._M_cur = this->_M_start._M_first;
1285.376 -}      
1285.377 -
1285.378 -
1285.379 -
1285.380 -template <class _Tp, class _Alloc >
1285.381 -__iterator__
1285.382 -__deque__<_Tp,_Alloc>::_M_insert_aux_prepare(iterator __pos) {
1285.383 -  difference_type __index = __pos - this->_M_start;
1285.384 -  if (__index < difference_type(size() / 2)) {
1285.385 -    push_front(front());
1285.386 -    iterator __front1 = this->_M_start;
1285.387 -    ++__front1;
1285.388 -    iterator __front2 = __front1;
1285.389 -    ++__front2;
1285.390 -    __pos = this->_M_start + __index;
1285.391 -    iterator __pos1 = __pos;
1285.392 -    ++__pos1;
1285.393 -    copy(__front2, __pos1, __front1);
1285.394 -  }
1285.395 -  else {
1285.396 -    push_back(back());
1285.397 -    iterator __back1 = this->_M_finish;
1285.398 -    --__back1;
1285.399 -    iterator __back2 = __back1;
1285.400 -    --__back2;
1285.401 -    __pos = this->_M_start + __index;
1285.402 -    copy_backward(__pos, __back2, __back1);
1285.403 -  }
1285.404 -  return __pos;
1285.405 -}
1285.406 -
1285.407 -template <class _Tp, class _Alloc >
1285.408 -__iterator__
1285.409 -__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1285.410 -				     const value_type& __x) {
1285.411 -  value_type __x_copy = __x;
1285.412 -  _STLP_PUSH_CLEANUP_ITEM(value_type, &__x_copy); 
1285.413 -  _STLP_MPWFIX_TRY		//*TY 06/01/2000 - mpw forget to call dtor on __x_copy without this try block
1285.414 -  __pos = _M_insert_aux_prepare(__pos);
1285.415 -  *__pos = __x_copy;
1285.416 -#ifdef _STLP_USE_TRAP_LEAVE
1285.417 -    CleanupStack::Pop(); 
1285.418 -#endif 
1285.419 -  return __pos;
1285.420 -  _STLP_MPWFIX_CATCH		//*TY 06/01/2000 - 
1285.421 -}
1285.422 -
1285.423 -template <class _Tp, class _Alloc >
1285.424 -__iterator__
1285.425 -__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos)
1285.426 -{
1285.427 -  __pos = _M_insert_aux_prepare(__pos);
1285.428 -  *__pos = value_type();
1285.429 -  return __pos;
1285.430 -}
1285.431 -
1285.432 -template <class _Tp, class _Alloc >
1285.433 -void
1285.434 -__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1285.435 -                                           size_type __n,
1285.436 -                                           const value_type& __x)
1285.437 -{
1285.438 -  const difference_type __elems_before = __pos - this->_M_start;
1285.439 -  size_type __length = this->size();
1285.440 -  value_type __x_copy = __x;
1285.441 -  _STLP_PUSH_CLEANUP_ITEM(value_type, &__x_copy); 
1285.442 -
1285.443 -  if (__elems_before < difference_type(__length / 2)) {
1285.444 -    iterator __new_start = _M_reserve_elements_at_front(__n);
1285.445 -    iterator __old_start = this->_M_start;
1285.446 -    __pos = this->_M_start + __elems_before;
1285.447 -    _STLP_TRY {
1285.448 -      if (__elems_before >= difference_type(__n)) {
1285.449 -        iterator __start_n = this->_M_start + difference_type(__n);
1285.450 -        uninitialized_copy(this->_M_start, __start_n, __new_start);
1285.451 -        this->_M_start = __new_start;
1285.452 -        copy(__start_n, __pos, __old_start);
1285.453 -        fill(__pos - difference_type(__n), __pos, __x_copy);
1285.454 -      }
1285.455 -      else {
1285.456 -        __uninitialized_copy_fill(this->_M_start, __pos, __new_start, 
1285.457 -	                          this->_M_start, __x_copy);
1285.458 -        this->_M_start = __new_start;
1285.459 -        fill(__old_start, __pos, __x_copy);
1285.460 -      }
1285.461 -    }
1285.462 -    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1285.463 -  }
1285.464 -  else {
1285.465 -    iterator __new_finish = _M_reserve_elements_at_back(__n);
1285.466 -    iterator __old_finish = this->_M_finish;
1285.467 -    const difference_type __elems_after = 
1285.468 -      difference_type(__length) - __elems_before;
1285.469 -    __pos = this->_M_finish - __elems_after;
1285.470 -    _STLP_TRY {
1285.471 -      if (__elems_after > difference_type(__n)) {
1285.472 -        iterator __finish_n = this->_M_finish - difference_type(__n);
1285.473 -        uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish);
1285.474 -        this->_M_finish = __new_finish;
1285.475 -        copy_backward(__pos, __finish_n, __old_finish);
1285.476 -        fill(__pos, __pos + difference_type(__n), __x_copy);
1285.477 -      }
1285.478 -      else {
1285.479 -        __uninitialized_fill_copy(this->_M_finish, __pos + difference_type(__n),
1285.480 -                                  __x_copy, __pos, this->_M_finish);
1285.481 -        this->_M_finish = __new_finish;
1285.482 -        fill(__pos, __old_finish, __x_copy);
1285.483 -      }
1285.484 -    }
1285.485 -    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1));
1285.486 -  }
1285.487 -#ifdef _STLP_USE_TRAP_LEAVE
1285.488 -  CleanupStack::Pop();
1285.489 -#endif  
1285.490 -}
1285.491 -
1285.492 -#ifndef _STLP_MEMBER_TEMPLATES 
1285.493 -template <class _Tp, class _Alloc >
1285.494 -void 
1285.495 -__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1285.496 -                                           const value_type* __first,
1285.497 -                                           const value_type* __last,
1285.498 -                                           size_type __n)
1285.499 -{
1285.500 -
1285.501 -  const difference_type __elemsbefore = __pos - this->_M_start;
1285.502 -  size_type __length = size();
1285.503 -  if (__elemsbefore < difference_type(__length / 2)) {
1285.504 -    iterator __new_start = _M_reserve_elements_at_front(__n);
1285.505 -    iterator __old_start = this->_M_start;
1285.506 -    __pos = this->_M_start + __elemsbefore;
1285.507 -    _STLP_TRY {
1285.508 -      if (__elemsbefore >= difference_type(__n)) {
1285.509 -        iterator __start_n = this->_M_start + difference_type(__n);
1285.510 -        uninitialized_copy(this->_M_start, __start_n, __new_start);
1285.511 -        this->_M_start = __new_start;
1285.512 -        copy(__start_n, __pos, __old_start);
1285.513 -        copy(__first, __last, __pos - difference_type(__n));
1285.514 -      }
1285.515 -      else {
1285.516 -        const value_type* __mid = 
1285.517 -	  __first + (difference_type(__n) - __elemsbefore);
1285.518 -        __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid,
1285.519 -                                  __new_start, _IsPODType());
1285.520 -        this->_M_start = __new_start;
1285.521 -        copy(__mid, __last, __old_start);
1285.522 -      }
1285.523 -    }
1285.524 -    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1285.525 -  }
1285.526 -  else {
1285.527 -    iterator __new_finish = _M_reserve_elements_at_back(__n);
1285.528 -    iterator __old_finish = this->_M_finish;
1285.529 -    const difference_type __elemsafter = 
1285.530 -      difference_type(__length) - __elemsbefore;
1285.531 -    __pos = this->_M_finish - __elemsafter;
1285.532 -    _STLP_TRY {
1285.533 -      if (__elemsafter > difference_type(__n)) {
1285.534 -        iterator __finish_n = this->_M_finish - difference_type(__n);
1285.535 -        uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish);
1285.536 -        this->_M_finish = __new_finish;
1285.537 -        copy_backward(__pos, __finish_n, __old_finish);
1285.538 -        copy(__first, __last, __pos);
1285.539 -      }
1285.540 -      else {
1285.541 -        const value_type* __mid = __first + __elemsafter;
1285.542 -        __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish, _IsPODType());
1285.543 -        this->_M_finish = __new_finish;
1285.544 -        copy(__first, __mid, __pos);
1285.545 -      }
1285.546 -    }
1285.547 -    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1));
1285.548 -  }
1285.549 -}
1285.550 -
1285.551 -template <class _Tp, class _Alloc >
1285.552 -void
1285.553 -__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1285.554 -                                           const_iterator __first,
1285.555 -                                           const_iterator __last,
1285.556 -                                           size_type __n)
1285.557 -{
1285.558 -  const difference_type __elemsbefore = __pos - this->_M_start;
1285.559 -  size_type __length = size();
1285.560 -  if (__elemsbefore < difference_type(__length / 2)) {
1285.561 -    iterator __new_start = _M_reserve_elements_at_front(__n);
1285.562 -    iterator __old_start = this->_M_start;
1285.563 -    __pos = this->_M_start + __elemsbefore;
1285.564 -    _STLP_TRY {
1285.565 -      if (__elemsbefore >= difference_type(__n)) {
1285.566 -        iterator __start_n = this->_M_start + __n;
1285.567 -        uninitialized_copy(this->_M_start, __start_n, __new_start);
1285.568 -        this->_M_start = __new_start;
1285.569 -        copy(__start_n, __pos, __old_start);
1285.570 -        copy(__first, __last, __pos - difference_type(__n));
1285.571 -      }
1285.572 -      else {
1285.573 -        const_iterator __mid = __first + (__n - __elemsbefore);
1285.574 -        __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid,
1285.575 -                                  __new_start, _IsPODType());
1285.576 -        this->_M_start = __new_start;
1285.577 -        copy(__mid, __last, __old_start);
1285.578 -      }
1285.579 -    }
1285.580 -    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1285.581 -  }
1285.582 -  else {
1285.583 -    iterator __new_finish = _M_reserve_elements_at_back(__n);
1285.584 -    iterator __old_finish = this->_M_finish;
1285.585 -    const difference_type __elemsafter = __length - __elemsbefore;
1285.586 -    __pos = this->_M_finish - __elemsafter;
1285.587 -    _STLP_TRY {
1285.588 -      if (__elemsafter > difference_type(__n)) {
1285.589 -        iterator __finish_n = this->_M_finish - difference_type(__n);
1285.590 -        uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish);
1285.591 -        this->_M_finish = __new_finish;
1285.592 -        copy_backward(__pos, __finish_n, __old_finish);
1285.593 -        copy(__first, __last, __pos);
1285.594 -      }
1285.595 -      else {
1285.596 -        const_iterator __mid = __first + __elemsafter;
1285.597 -        __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish, _IsPODType());
1285.598 -        this->_M_finish = __new_finish;
1285.599 -        copy(__first, __mid, __pos);
1285.600 -      }
1285.601 -    }
1285.602 -    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1));
1285.603 -  }
1285.604 -}
1285.605 -
1285.606 -#endif /* _STLP_MEMBER_TEMPLATES */
1285.607 -
1285.608 -template <class _Tp, class _Alloc >
1285.609 -void 
1285.610 -__deque__<_Tp,_Alloc>::_M_new_elements_at_front(size_type __new_elems)
1285.611 -{
1285.612 -  size_type __new_nodes
1285.613 -      = (__new_elems + this->buffer_size() - 1) / this->buffer_size();
1285.614 -  _M_reserve_map_at_front(__new_nodes);
1285.615 -  size_type __i =1;
1285.616 -  _STLP_TRY {
1285.617 -    for (; __i <= __new_nodes; ++__i)
1285.618 -      *(this->_M_start._M_node - __i) = this->_M_map_size.allocate(this->buffer_size());
1285.619 -  }
1285.620 -  _STLP_CATCH_ALL {
1285.621 -    for (size_type __j = 1; __j < __i; ++__j)
1285.622 -      this->_M_map_size.deallocate(*(this->_M_start._M_node - __j), this->buffer_size());
1285.623 -    _STLP_RETHROW;
1285.624 -  }
1285.625 -}
1285.626 -
1285.627 -template <class _Tp, class _Alloc >
1285.628 -void 
1285.629 -__deque__<_Tp,_Alloc>::_M_new_elements_at_back(size_type __new_elems)
1285.630 -{
1285.631 -  size_type __new_nodes
1285.632 -      = (__new_elems + this->buffer_size() - 1) / this->buffer_size();
1285.633 -  _M_reserve_map_at_back(__new_nodes);
1285.634 -  size_type __i = 1;
1285.635 -  _STLP_TRY {
1285.636 -    for (; __i <= __new_nodes; ++__i)
1285.637 -      *(this->_M_finish._M_node + __i) = this->_M_map_size.allocate(this->buffer_size());
1285.638 -  }
1285.639 -  _STLP_CATCH_ALL {
1285.640 -    for (size_type __j = 1; __j < __i; ++__j)
1285.641 -      this->_M_map_size.deallocate(*(this->_M_finish._M_node + __j), this->buffer_size());
1285.642 -    _STLP_RETHROW;
1285.643 -  }
1285.644 -}
1285.645 -
1285.646 -template <class _Tp, class _Alloc >
1285.647 -void 
1285.648 -__deque__<_Tp,_Alloc>::_M_reallocate_map(size_type __nodes_to_add,
1285.649 -                                              bool __add_at_front)
1285.650 -{
1285.651 -  size_type __old_num_nodes = this->_M_finish._M_node - this->_M_start._M_node + 1;
1285.652 -  size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
1285.653 -
1285.654 -  _Map_pointer __new_nstart;
1285.655 -  if (this->_M_map_size._M_data > 2 * __new_num_nodes) {
1285.656 -    __new_nstart = this->_M_map._M_data + (this->_M_map_size._M_data - __new_num_nodes) / 2 
1285.657 -                     + (__add_at_front ? __nodes_to_add : 0);
1285.658 -    if (__new_nstart < this->_M_start._M_node)
1285.659 -      copy(this->_M_start._M_node, this->_M_finish._M_node + 1, __new_nstart);
1285.660 -    else
1285.661 -      copy_backward(this->_M_start._M_node, this->_M_finish._M_node + 1, 
1285.662 -                    __new_nstart + __old_num_nodes);
1285.663 -  }
1285.664 -  else {
1285.665 -    size_type __new_map_size = 
1285.666 -      this->_M_map_size._M_data + (max)((size_t)this->_M_map_size._M_data, __nodes_to_add) + 2;
1285.667 -
1285.668 -    _Map_pointer __new_map = this->_M_map.allocate(__new_map_size);
1285.669 -    __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2
1285.670 -                         + (__add_at_front ? __nodes_to_add : 0);
1285.671 -    copy(this->_M_start._M_node, this->_M_finish._M_node + 1, __new_nstart);
1285.672 -    this->_M_map.deallocate(this->_M_map._M_data, this->_M_map_size._M_data);
1285.673 -
1285.674 -    this->_M_map._M_data = __new_map;
1285.675 -    this->_M_map_size._M_data = __new_map_size;
1285.676 -  }
1285.677 -
1285.678 -  this->_M_start._M_set_node(__new_nstart);
1285.679 -  this->_M_finish._M_set_node(__new_nstart + __old_num_nodes - 1);
1285.680 -}
1285.681 -
1285.682 -_STLP_END_NAMESPACE
1285.683 -
1285.684 -# undef __iterator__
1285.685 -# undef iterator
1285.686 -# undef const_iterator
1285.687 -# undef size_type
1285.688 -# undef value_type
1285.689 -
1285.690 -#endif /*  _STLP_DEQUE_C */
1285.691 -
1285.692 -// Local Variables:
1285.693 -// mode:C++
1285.694 -// End:
  1286.1 --- a/epoc32/include/stdapis/stlport/stl/_fstream.c	Tue Mar 16 16:12:26 2010 +0000
  1286.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1286.3 @@ -1,891 +0,0 @@
  1286.4 -/*
  1286.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1286.6 - *
  1286.7 - * Copyright (c) 1996,1997
  1286.8 - * Silicon Graphics Computer Systems, Inc.
  1286.9 - *
 1286.10 - * Copyright (c) 1999 
 1286.11 - * Boris Fomitchev
 1286.12 - *
 1286.13 - * This material is provided "as is", with absolutely no warranty expressed
 1286.14 - * or implied. Any use is at your own risk.
 1286.15 - *
 1286.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1286.17 - * without fee, provided the above notices are retained on all copies.
 1286.18 - * Permission to modify the code and to distribute modified code is granted,
 1286.19 - * provided the above notices are retained, and a notice that the code was
 1286.20 - * modified is included with the above copyright notice.
 1286.21 - *
 1286.22 - */
 1286.23 -#ifndef _STLP_FSTREAM_C
 1286.24 -#define _STLP_FSTREAM_C
 1286.25 -
 1286.26 -# ifndef _STLP_INTERNAL_FSTREAM_H
 1286.27 -#  include <stl/_fstream.h>
 1286.28 -# endif
 1286.29 -
 1286.30 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1286.31 -
 1286.32 -_STLP_BEGIN_NAMESPACE
 1286.33 -
 1286.34 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1286.35 -// no wchar_t is supported for this mode
 1286.36 -# define __BF_int_type__ int
 1286.37 -# define __BF_pos_type__ streampos
 1286.38 -# define __BF_off_type__ streamoff
 1286.39 -# else
 1286.40 -# define __BF_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::int_type
 1286.41 -# define __BF_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::pos_type
 1286.42 -# define __BF_off_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::off_type
 1286.43 -# endif
 1286.44 -
 1286.45 -
 1286.46 -//----------------------------------------------------------------------
 1286.47 -// Public basic_filebuf<> member functions
 1286.48 -
 1286.49 -template <class _CharT, class _Traits>
 1286.50 -basic_filebuf<_CharT, _Traits>::basic_filebuf()
 1286.51 -     :  basic_streambuf<_CharT, _Traits>(), _M_base(),
 1286.52 -    _M_constant_width(false), _M_always_noconv(false),
 1286.53 -    _M_int_buf_dynamic(false),
 1286.54 -    _M_in_input_mode(false), _M_in_output_mode(false),
 1286.55 -    _M_in_error_mode(false), _M_in_putback_mode(false),
 1286.56 -    _M_int_buf(0), _M_int_buf_EOS(0),
 1286.57 -    _M_ext_buf(0), _M_ext_buf_EOS(0),
 1286.58 -    _M_ext_buf_converted(0), _M_ext_buf_end(0),
 1286.59 -    _M_state(_STLP_DEFAULT_CONSTRUCTED(_State_type)),
 1286.60 -    _M_end_state(_STLP_DEFAULT_CONSTRUCTED(_State_type)),
 1286.61 -    _M_mmap_base(0), _M_mmap_len(0),
 1286.62 -    _M_saved_eback(0), _M_saved_gptr(0), _M_saved_egptr(0),
 1286.63 -    _M_codecvt(0),
 1286.64 -    _M_width(1), _M_max_width(1)
 1286.65 -{
 1286.66 -  this->_M_setup_codecvt(locale());
 1286.67 -}
 1286.68 -
 1286.69 -template <class _CharT, class _Traits>
 1286.70 -basic_filebuf<_CharT, _Traits>::~basic_filebuf() {
 1286.71 -  this->close();
 1286.72 -  _M_deallocate_buffers();
 1286.73 -}
 1286.74 -
 1286.75 -
 1286.76 -template <class _CharT, class _Traits>
 1286.77 -_STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::int_type 
 1286.78 -basic_filebuf<_CharT, _Traits>::underflow() 
 1286.79 -{
 1286.80 -  return _Underflow<_CharT, _Traits>::_M_doit(this);
 1286.81 -}
 1286.82 -
 1286.83 -template <class _CharT, class _Traits>
 1286.84 -basic_filebuf<_CharT, _Traits>* 
 1286.85 -basic_filebuf<_CharT, _Traits>::close()
 1286.86 -{
 1286.87 -  bool __ok = this->is_open();
 1286.88 -
 1286.89 -  if (_M_in_output_mode) {
 1286.90 -    __ok = __ok && !_Traits::eq_int_type(this->overflow(traits_type::eof()),
 1286.91 -                                         traits_type::eof());
 1286.92 -    __ok == __ok && this->_M_unshift();
 1286.93 -  }
 1286.94 -  else if (_M_in_input_mode)
 1286.95 -      this->_M_exit_input_mode();
 1286.96 -
 1286.97 -  // Note order of arguments.  We close the file even if __ok is false.
 1286.98 -  __ok = _M_base._M_close() && __ok;
 1286.99 -
1286.100 -  // Restore the initial state, except that we don't deallocate the buffer
1286.101 -  // or mess with the cached codecvt information.
1286.102 -  _M_state = _M_end_state = _State_type();
1286.103 -  _M_ext_buf_converted = _M_ext_buf_end = 0;
1286.104 -
1286.105 -  _M_mmap_base = 0;
1286.106 -  _M_mmap_len = 0;
1286.107 -
1286.108 -#ifdef __SYMBIAN32__
1286.109 -  if (__ok) {
1286.110 -#endif // __SYMBIAN32__
1286.111 -  this->setg(0, 0, 0);
1286.112 -  this->setp(0, 0);
1286.113 -#ifdef __SYMBIAN32__  
1286.114 -  }
1286.115 -#endif // __SYMBIAN32__
1286.116 -
1286.117 -  _M_saved_eback = _M_saved_gptr = _M_saved_egptr = 0;
1286.118 -
1286.119 -  _M_in_input_mode = _M_in_output_mode = _M_in_error_mode = _M_in_putback_mode
1286.120 -    = false;
1286.121 -
1286.122 -  return __ok ? this : 0;
1286.123 -}
1286.124 -
1286.125 -// This member function is called whenever we exit input mode.
1286.126 -// It unmaps the memory-mapped file, if any, and sets
1286.127 -// _M_in_input_mode to false.  
1286.128 -template <class _CharT, class _Traits>
1286.129 -void basic_filebuf<_CharT, _Traits>::_M_exit_input_mode()
1286.130 -{
1286.131 -   if (_M_mmap_base != 0)
1286.132 -     _M_base._M_unmap(_M_mmap_base, _M_mmap_len); 
1286.133 -   _M_in_input_mode = false;
1286.134 -   _M_mmap_base = 0;
1286.135 -}
1286.136 -
1286.137 -
1286.138 -//----------------------------------------------------------------------
1286.139 -// basic_filebuf<> overridden protected virtual member functions
1286.140 -
1286.141 -template <class _CharT, class _Traits>
1286.142 -streamsize basic_filebuf<_CharT, _Traits>::showmanyc()
1286.143 -{
1286.144 -  // Is there any possibility that reads can succeed?
1286.145 -#ifdef __SYMBIAN32__
1286.146 -  if (!this->is_open() || !(_M_base.__o_mode() & (int)ios_base::in) || _M_in_error_mode)
1286.147 -#else
1286.148 -  if (!this->is_open() || _M_in_output_mode || _M_in_error_mode)
1286.149 -#endif
1286.150 -    return -1;
1286.151 -
1286.152 -  else if (_M_in_putback_mode)
1286.153 -    return this->egptr() - this->gptr();
1286.154 -
1286.155 -  else if (_M_constant_width) {
1286.156 -    streamoff __pos  = _M_base._M_seek(0, ios_base::cur);
1286.157 -    streamoff __size = _M_base._M_file_size();
1286.158 -#ifdef __SYMBIAN32__
1286.159 -    if(__size == 0)
1286.160 -        return 0;
1286.161 -#endif
1286.162 -    return __pos >= 0 && __size > __pos ? __size - __pos : -1;
1286.163 -  }
1286.164 -
1286.165 -  else 
1286.166 -    return 0;
1286.167 -}
1286.168 -
1286.169 -
1286.170 -// Make a putback position available, if necessary, by switching to a 
1286.171 -// special internal buffer used only for putback.  The buffer is
1286.172 -// [_M_pback_buf, _M_pback_buf + _S_pback_buf_size), but the base
1286.173 -// class only sees a piece of it at a time.  (We want to make sure
1286.174 -// that we don't try to read a character that hasn't been initialized.)
1286.175 -// The end of the putback buffer is always _M_pback_buf + _S_pback_buf_size,
1286.176 -// but the beginning is usually not _M_pback_buf.
1286.177 -template <class _CharT, class _Traits>
1286.178 -__BF_int_type__ 
1286.179 -basic_filebuf<_CharT, _Traits>::pbackfail(int_type __c)
1286.180 -{
1286.181 -  const int_type __eof = traits_type::eof();
1286.182 -
1286.183 -  // If we aren't already in input mode, pushback is impossible.
1286.184 -  if (!_M_in_input_mode)
1286.185 -    return __eof;
1286.186 -
1286.187 -  // We can use the ordinary get buffer if there's enough space, and
1286.188 -  // if it's a buffer that we're allowed to write to.
1286.189 -  if (this->gptr() != this->eback() &&
1286.190 -      (traits_type::eq_int_type(__c, __eof) ||
1286.191 -       traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1]) ||
1286.192 -       !_M_mmap_base)) {
1286.193 -    this->gbump(-1);
1286.194 -    if (traits_type::eq_int_type(__c, __eof) ||
1286.195 -        traits_type::eq(traits_type::to_char_type(__c), *this->gptr()))
1286.196 -      return traits_type::to_int_type(*this->gptr());
1286.197 -  }
1286.198 -  else if (!traits_type::eq_int_type(__c, __eof)) {
1286.199 -    // Are we in the putback buffer already?
1286.200 -    _CharT* __pback_end = _M_pback_buf + __STATIC_CAST(int,_S_pback_buf_size);
1286.201 -    if (_M_in_putback_mode) {
1286.202 -      // Do we have more room in the putback buffer?
1286.203 -      if (this->eback() != _M_pback_buf) 
1286.204 -        this->setg(this->egptr() - 1, this->egptr() - 1, __pback_end);
1286.205 -      else
1286.206 -        return __eof;           // No more room in the buffer, so fail.
1286.207 -    }
1286.208 -    else {                      // We're not yet in the putback buffer.
1286.209 -      _M_saved_eback = this->eback();
1286.210 -      _M_saved_gptr  = this->gptr();
1286.211 -      _M_saved_egptr = this->egptr();
1286.212 -      this->setg(__pback_end - 1, __pback_end - 1, __pback_end);
1286.213 -      _M_in_putback_mode = true;
1286.214 -    }
1286.215 -  }
1286.216 -  else
1286.217 -  {
1286.218 -#ifdef __SYMBIAN32__
1286.219 -    if (traits_type::eq_int_type(__c, __eof) )
1286.220 -    {
1286.221 -        if(_M_in_putback_mode)
1286.222 -        {
1286.223 -            _M_in_putback_mode = false;
1286.224 -            // we are at putback mode
1286.225 -            if(_M_saved_eback != _M_saved_gptr)
1286.226 -            {
1286.227 -                this->setg(_M_saved_eback, _M_saved_gptr - 1, _M_saved_egptr);
1286.228 -                return *this->gptr();
1286.229 -            }
1286.230 -            else
1286.231 -                this->setg(_M_saved_eback, _M_saved_gptr, _M_saved_egptr);
1286.232 -         
1286.233 -         }
1286.234 -         else
1286.235 -         {
1286.236 -            if(!this->eback())
1286.237 -            {
1286.238 -                streamoff __pos  = _M_base._M_seek(0, ios_base::cur);
1286.239 -                streamoff __size = _M_base._M_file_size();
1286.240 -                if( __size > 0 && __pos > 0 && __pos == __size)
1286.241 -                    __pos  = _M_base._M_seek(__pos - 1, ios_base::beg);
1286.242 -                this->underflow();
1286.243 -                this->setg(this->eback(), this->gptr(), this->egptr());
1286.244 -                return *this->gptr();
1286.245 -            }
1286.246 -            else
1286.247 -            {
1286.248 -                this->setg(this->eback(), this->gptr() - 1, this->egptr());
1286.249 -                return *this->gptr();
1286.250 -            }
1286.251 -         }
1286.252 -    }
1286.253 -#endif
1286.254 -    return __eof;
1286.255 -  }
1286.256 -  // We have made a putback position available.  Assign to it, and return.
1286.257 -  *this->gptr() = traits_type::to_char_type(__c);
1286.258 -  return __c;
1286.259 -}
1286.260 -
1286.261 -// This member function flushes the put area, and also outputs the
1286.262 -// character __c (unless __c is eof).  Invariant: we always leave room
1286.263 -// in the internal buffer for one character more than the base class knows
1286.264 -// about.  We see the internal buffer as [_M_int_buf, _M_int_buf_EOS), but
1286.265 -// the base class only sees [_M_int_buf, _M_int_buf_EOS - 1).
1286.266 -template <class _CharT, class _Traits>
1286.267 -__BF_int_type__
1286.268 -basic_filebuf<_CharT, _Traits>::overflow(int_type __c)
1286.269 -{
1286.270 -  // Switch to output mode, if necessary.
1286.271 -  bool putflag = false;
1286.272 -  if (!_M_in_output_mode)
1286.273 -  {
1286.274 -#ifdef __SYMBIAN32__
1286.275 -    if(this->_M_int_buf)
1286.276 -        putflag = true;
1286.277 -#endif
1286.278 -    if (!_M_switch_to_output_mode())
1286.279 -      return traits_type::eof();
1286.280 -  }
1286.281 -  _CharT* __ibegin = this->_M_int_buf;
1286.282 -  _CharT* __iend   = this->pptr();
1286.283 -  this->setp(_M_int_buf, _M_int_buf_EOS - 1);
1286.284 -
1286.285 -  // Put __c at the end of the internal buffer.
1286.286 -  if (!traits_type::eq_int_type(__c, traits_type::eof()))
1286.287 -    *__iend++ = __c;
1286.288 -#ifdef __SYMBIAN32__
1286.289 -  int current_pos = this->gptr() - this->eback();
1286.290 -  streamoff __size = _M_base._M_file_size();
1286.291 -  if(current_pos > 0 && current_pos < __size && _M_base.__is_open())
1286.292 -    _M_base._M_seek(current_pos, ios_base::beg);
1286.293 -#endif
1286.294 -
1286.295 -  // For variable-width encodings, output may take more than one pass.
1286.296 -  while (__ibegin != __iend) {
1286.297 -    const _CharT* __inext = __ibegin;
1286.298 -    char* __enext         = _M_ext_buf;
1286.299 -    typename _Codecvt::result __status
1286.300 -      = _M_codecvt->out(_M_state, __ibegin, __iend, __inext,
1286.301 -                                  _M_ext_buf, _M_ext_buf_EOS, __enext);
1286.302 -    if (__status == _Codecvt::noconv)
1286.303 -#ifdef __SYMBIAN32__    
1286.304 -    {
1286.305 -      if(_Noconv_output<_Traits>::_M_doit(this, __ibegin, __iend))
1286.306 -      {
1286.307 -        if (this->eback())
1286.308 -            {
1286.309 -            *(this->gptr()) = __c;
1286.310 -            this->setg(this->eback(), this->gptr() + 1, this->egptr());
1286.311 -            }
1286.312 -        if(putflag && this->pptr()  < this->epptr())
1286.313 -            this->setp(this->pptr() + 1, this->epptr());
1286.314 -        return traits_type::not_eof(__c);
1286.315 -      }
1286.316 -      else
1286.317 -        return _M_output_error();
1286.318 -    }
1286.319 -#else
1286.320 -      return _Noconv_output<_Traits>::_M_doit(this, __ibegin, __iend)
1286.321 -        ? traits_type::not_eof(__c)
1286.322 -        : _M_output_error();
1286.323 -#endif
1286.324 -    // For a constant-width encoding we know that the external buffer
1286.325 -    // is large enough, so failure to consume the entire internal buffer
1286.326 -    // or to produce the correct number of external characters, is an error.
1286.327 -    // For a variable-width encoding, however, we require only that we 
1286.328 -    // consume at least one internal character
1286.329 -    else if (__status != _Codecvt::error && 
1286.330 -             ((__inext == __iend && (__enext - _M_ext_buf == 
1286.331 -                                     _M_width * (__iend - __ibegin))) ||
1286.332 -              (!_M_constant_width && __inext != __ibegin))) {
1286.333 -        // We successfully converted part or all of the internal buffer.
1286.334 -      ptrdiff_t __n = __enext - _M_ext_buf;
1286.335 -      if (_M_write(_M_ext_buf, __n))
1286.336 -        __ibegin += __inext - __ibegin;
1286.337 -      else
1286.338 -        return _M_output_error();
1286.339 -    }
1286.340 -    else
1286.341 -      return _M_output_error();
1286.342 -  }
1286.343 -
1286.344 -  return traits_type::not_eof(__c);
1286.345 -}
1286.346 -
1286.347 -// This member function must be called before any I/O has been
1286.348 -// performed on the stream, otherwise it has no effect.
1286.349 -//
1286.350 -// __buf == 0 && __n == 0 means to make ths stream unbuffered.
1286.351 -// __buf != 0 && __n > 0 means to use __buf as the stream's internal
1286.352 -// buffer, rather than the buffer that would otherwise be allocated
1286.353 -// automatically.  __buf must be a pointer to an array of _CharT whose
1286.354 -// size is at least __n.
1286.355 -template <class _CharT, class _Traits>
1286.356 -basic_streambuf<_CharT, _Traits>*
1286.357 -basic_filebuf<_CharT, _Traits>::setbuf(_CharT* __buf, streamsize __n)
1286.358 -{
1286.359 -  if (!_M_in_input_mode &&! _M_in_output_mode && !_M_in_error_mode &&
1286.360 -      _M_int_buf == 0) {
1286.361 -    if (__buf == 0 && __n == 0)
1286.362 -      _M_allocate_buffers(0, 1);
1286.363 -    else if (__buf != 0 && __n > 0)
1286.364 -      _M_allocate_buffers(__buf, __n);
1286.365 -  }
1286.366 -  return this;
1286.367 -}
1286.368 -
1286.369 -template <class _CharT, class _Traits>
1286.370 -__BF_pos_type__
1286.371 -basic_filebuf<_CharT, _Traits>::seekoff(off_type __off,
1286.372 -                                        ios_base::seekdir __whence,
1286.373 -                                        ios_base::openmode /* dummy */)
1286.374 -{
1286.375 -  if (this->is_open() &&
1286.376 -      (__off == 0 || (_M_constant_width && this->_M_base._M_in_binary_mode()))) {
1286.377 -
1286.378 -    if (!_M_seek_init(__off != 0 || __whence != ios_base::cur))
1286.379 -      return pos_type(-1);
1286.380 -
1286.381 -    // Seek to beginning or end, regardless of whether we're in input mode.
1286.382 -    if (__whence == ios_base::beg || __whence == ios_base::end)
1286.383 -      return _M_seek_return(_M_base._M_seek(_M_width * __off, __whence),
1286.384 -                            _State_type());
1286.385 -
1286.386 -    // Seek relative to current position.  Complicated if we're in input mode.
1286.387 -    else if (__whence == ios_base::cur) {
1286.388 -
1286.389 -      if (!_M_in_input_mode)
1286.390 -        return _M_seek_return(_M_base._M_seek(_M_width * __off, __whence),
1286.391 -                              _State_type());
1286.392 -      else if (_M_mmap_base != 0) {
1286.393 -        // __off is relative to gptr().  We need to do a bit of arithmetic
1286.394 -        // to get an offset relative to the external file pointer.
1286.395 -        streamoff __adjust = _M_mmap_len - (this->gptr() - (_CharT*) _M_mmap_base);
1286.396 -
1286.397 -        // if __off == 0, we do not need to exit input mode and to shift file pointer
1286.398 -        if (__off == 0) {
1286.399 -          return pos_type(_M_base._M_seek(0, ios_base::cur) - __adjust);
1286.400 -        }
1286.401 -        else
1286.402 -#ifdef __SYMBIAN32__       
1286.403 -        return _M_seek_return(_M_base._M_seek(__off, ios_base::cur), _State_type());
1286.404 -#else      
1286.405 -          return _M_seek_return(_M_base._M_seek(__off - __adjust, ios_base::cur), _State_type());
1286.406 -#endif
1286.407 -      }
1286.408 -      else if (_M_constant_width) { // Get or set the position.  
1286.409 -
1286.410 -        streamoff __iadj = _M_width * (this->gptr() - this->eback());
1286.411 -        
1286.412 -        // Compensate for offset relative to gptr versus offset relative
1286.413 -        // to external pointer.  For a text-oriented stream, where the 
1286.414 -        // compensation is more than just pointer arithmetic, we may get
1286.415 -        // but not set the current position.
1286.416 -        
1286.417 -        if (__iadj <= _M_ext_buf_end - _M_ext_buf) {
1286.418 -          
1286.419 -          streamoff __eadj =  _M_base._M_get_offset(_M_ext_buf + __iadj, _M_ext_buf_end);
1286.420 -
1286.421 -          if (__off == 0) {
1286.422 -            return pos_type(_M_base._M_seek(0, ios_base::cur) - __eadj);
1286.423 -          }  else {
1286.424 -            return _M_seek_return(_M_base._M_seek(__off - __eadj, ios_base::cur), _State_type());
1286.425 -          }
1286.426 -        }
1286.427 -        else
1286.428 -          return pos_type(-1);
1286.429 -      }
1286.430 -      else {                    // Get the position.  Encoding is var width.
1286.431 -        // Get position in internal buffer.
1286.432 -        ptrdiff_t __ipos = this->gptr() - this->eback();
1286.433 -        
1286.434 -        // Get corresponding position in external buffer.
1286.435 -        _State_type __state = _M_state;
1286.436 -        int __epos = _M_codecvt->length(__state, _M_ext_buf, _M_ext_buf_end,
1286.437 -                                        __ipos);
1286.438 -
1286.439 -        // Sanity check (expensive): make sure __epos is the right answer.
1286.440 -        _State_type __tmp_state = _M_state;
1286.441 -        _Filebuf_Tmp_Buf<_CharT> __buf(__ipos);
1286.442 -        _CharT* __ibegin = __buf._M_ptr;
1286.443 -        _CharT* __inext  = __ibegin;
1286.444 -
1286.445 -        const char* __dummy;
1286.446 -        typename _Codecvt::result __status
1286.447 -          = _M_codecvt->in(__tmp_state,
1286.448 -                           _M_ext_buf, _M_ext_buf + __epos, __dummy,
1286.449 -                           __ibegin, __ibegin + __ipos, __inext);
1286.450 -        if (__status != _Codecvt::error &&
1286.451 -            (__status == _Codecvt::noconv ||
1286.452 -             (__inext == __ibegin + __ipos &&
1286.453 -              equal(this->gptr(), this->eback(), __ibegin,
1286.454 -                    _Eq_traits<traits_type>())))) {
1286.455 -          // Get the current position (at the end of the external buffer),
1286.456 -          // then adjust it.  Again, it might be a text-oriented stream.
1286.457 -          streamoff __cur = _M_base._M_seek(0, ios_base::cur);
1286.458 -          streamoff __adj =
1286.459 -            _M_base._M_get_offset(_M_ext_buf, _M_ext_buf + __epos) -
1286.460 -            _M_base._M_get_offset(_M_ext_buf, _M_ext_buf_end);
1286.461 -          if (__cur != -1 && __cur + __adj >= 0)
1286.462 -            return _M_seek_return(__cur + __adj, __state);
1286.463 -          else
1286.464 -            return pos_type(-1);
1286.465 -        }
1286.466 -        else                    // We failed the sanity check.
1286.467 -          return pos_type(-1);
1286.468 -      }
1286.469 -    }
1286.470 -    else                        // Unrecognized value for __whence.
1286.471 -      return pos_type(-1);
1286.472 -  }
1286.473 -  else
1286.474 -    return pos_type(-1);
1286.475 -}
1286.476 -
1286.477 -
1286.478 -template <class _CharT, class _Traits>
1286.479 -__BF_pos_type__
1286.480 -basic_filebuf<_CharT, _Traits>::seekpos(pos_type __pos,
1286.481 -                                        ios_base::openmode /* dummy */)
1286.482 -{
1286.483 -  if (this->is_open()) {
1286.484 -    if (!_M_seek_init(true))
1286.485 -      return pos_type(-1);
1286.486 -
1286.487 -    streamoff __off = off_type(__pos);
1286.488 -    if (__off != -1 && _M_base._M_seek(__off, ios_base::beg) != -1) {
1286.489 -      _M_state = __pos.state();
1286.490 -      return _M_seek_return(__off, __pos.state());
1286.491 -    }
1286.492 -    else
1286.493 -      return pos_type(-1);
1286.494 -  }
1286.495 -  else
1286.496 -    return pos_type(-1);
1286.497 -}
1286.498 -
1286.499 -
1286.500 -template <class _CharT, class _Traits>
1286.501 -int basic_filebuf<_CharT, _Traits>::sync()
1286.502 -{
1286.503 -  if (_M_in_output_mode)
1286.504 -    return traits_type::eq_int_type(this->overflow(traits_type::eof()),
1286.505 -                                    traits_type::eof())
1286.506 -      ? -1
1286.507 -      : 0;
1286.508 -  else
1286.509 -    return 0;
1286.510 -}
1286.511 -
1286.512 -
1286.513 -// Change the filebuf's locale.  This member function has no effect
1286.514 -// unless it is called before any I/O is performed on the stream.
1286.515 -template <class _CharT, class _Traits>
1286.516 -void basic_filebuf<_CharT, _Traits>::imbue(const locale& __loc)
1286.517 -{
1286.518 -  if (!_M_in_input_mode &&! _M_in_output_mode && !_M_in_error_mode) {
1286.519 -    this->_M_setup_codecvt(__loc);
1286.520 -  }
1286.521 -}
1286.522 -
1286.523 -//----------------------------------------------------------------------
1286.524 -// basic_filebuf<> helper functions.
1286.525 -
1286.526 -//----------------------------------------
1286.527 -// Helper functions for switching between modes.
1286.528 -
1286.529 -// This member function is called if we're performing the first I/O
1286.530 -// operation on a filebuf, or if we're performing an input operation 
1286.531 -// immediately after a seek.
1286.532 -template <class _CharT, class _Traits>
1286.533 -bool basic_filebuf<_CharT, _Traits>::_M_switch_to_input_mode()
1286.534 -{
1286.535 -
1286.536 -  if (this->is_open() && (((int)_M_base.__o_mode() & (int)ios_base::in) !=0)
1286.537 -#ifndef __SYMBIAN32__
1286.538 -      && (_M_in_output_mode == 0) 
1286.539 -#endif
1286.540 -      && (_M_in_error_mode == 0)) {
1286.541 -#ifdef __STLP_NO_WRITE_SIDE_BUFFERING__
1286.542 -    // If file has been opened in input|output mode
1286.543 -    if ((((int)_M_base.__o_mode() & (int)ios_base::out) !=0) 
1286.544 -#ifndef __SYMBIAN32__
1286.545 -        && sync()
1286.546 -#endif
1286.547 -        && !_M_int_buf && !_M_allocate_buffers(0, 1))
1286.548 -#else
1286.549 -    if (!_M_int_buf && !_M_allocate_buffers())
1286.550 -#endif
1286.551 -      return false;
1286.552 -
1286.553 -    _M_ext_buf_converted = _M_ext_buf;
1286.554 -    _M_ext_buf_end       = _M_ext_buf;
1286.555 -
1286.556 -    _M_end_state    = _M_state;
1286.557 -
1286.558 -    _M_in_input_mode = true;
1286.559 -    return true;
1286.560 -  }
1286.561 -  else
1286.562 -
1286.563 -    return false;
1286.564 -}
1286.565 -
1286.566 -
1286.567 -// This member function is called if we're performing the first I/O
1286.568 -// operation on a filebuf, or if we're performing an output operation 
1286.569 -// immediately after a seek.
1286.570 -template <class _CharT, class _Traits>
1286.571 -bool basic_filebuf<_CharT, _Traits>::_M_switch_to_output_mode()
1286.572 -{
1286.573 -  if (this->is_open() && (_M_base.__o_mode() & (int)ios_base::out) &&
1286.574 -#ifdef __SYMBIAN32__  
1286.575 -      _M_in_error_mode == 0) {
1286.576 -#else      
1286.577 -      _M_in_input_mode == 0 && _M_in_error_mode == 0) {
1286.578 -#endif //__SYMBIAN32__      
1286.579 -
1286.580 -#ifdef __STLP_NO_WRITE_SIDE_BUFFERING__
1286.581 -    if (!_M_int_buf && !_M_allocate_buffers(0, 1))
1286.582 -#else
1286.583 -    if (!_M_int_buf && !_M_allocate_buffers())
1286.584 -#endif
1286.585 -      return false;
1286.586 -
1286.587 -    // In append mode, every write does an implicit seek to the end
1286.588 -    // of the file.  Whenever leaving output mode, the end of file
1286.589 -    // get put in the initial shift state.
1286.590 -    if (_M_base.__o_mode() & ios_base::app)
1286.591 -      _M_state = _State_type();
1286.592 -
1286.593 -    this->setp(_M_int_buf, _M_int_buf_EOS - 1);
1286.594 -    _M_in_output_mode = true;
1286.595 -
1286.596 -    return true;
1286.597 -  }
1286.598 -  else
1286.599 -    return false;
1286.600 -}
1286.601 -
1286.602 -
1286.603 -//----------------------------------------
1286.604 -// Helper functions for input
1286.605 -
1286.606 -// This member function is called if there is an error during input.
1286.607 -// It puts the filebuf in error mode, clear the get area buffer, and
1286.608 -// returns eof.
1286.609 -// returns eof.  Error mode is sticky; it is cleared only by close or
1286.610 -// seek.
1286.611 -
1286.612 -template <class _CharT, class _Traits>
1286.613 -__BF_int_type__
1286.614 -basic_filebuf<_CharT, _Traits>::_M_input_error()
1286.615 -{
1286.616 -   this->_M_exit_input_mode();   
1286.617 -  _M_in_output_mode = false;
1286.618 -  _M_in_error_mode = true;
1286.619 -  this->setg(0, 0, 0);
1286.620 -  return traits_type::eof();
1286.621 -}
1286.622 -
1286.623 -template <class _CharT, class _Traits>
1286.624 -__BF_int_type__ 
1286.625 -basic_filebuf<_CharT, _Traits>::_M_underflow_aux() 
1286.626 -{
1286.627 -  // We have the state and file position from the end of the internal
1286.628 -  // buffer.  This round, they become the beginning of the internal buffer.
1286.629 -  _M_state    = _M_end_state;
1286.630 -
1286.631 -  // Fill the external buffer.  Start with any leftover characters that
1286.632 -  // didn't get converted last time.
1286.633 -  if (_M_ext_buf_end > _M_ext_buf_converted)
1286.634 -
1286.635 -    _M_ext_buf_end = copy(_M_ext_buf_converted, _M_ext_buf_end, _M_ext_buf);
1286.636 -    // boris : copy_backward did not work
1286.637 -    //_M_ext_buf_end = copy_backward(_M_ext_buf_converted, _M_ext_buf_end, 
1286.638 -    //_M_ext_buf+ (_M_ext_buf_end - _M_ext_buf_converted));
1286.639 -  else
1286.640 -    {
1286.641 -#ifdef __SYMBIAN32__
1286.642 -     if(_M_ext_buf == NULL)
1286.643 -    _M_allocate_buffers(0, MMAP_CHUNK);
1286.644 -#endif
1286.645 -    _M_ext_buf_end = _M_ext_buf;
1286.646 -    }
1286.647 -  // Now fill the external buffer with characters from the file.  This is
1286.648 -  // a loop because occasonally we don't get enough external characters
1286.649 -  // to make progress.
1286.650 -  while (true) {
1286.651 -    ptrdiff_t __n = _M_base._M_read(_M_ext_buf_end, _M_ext_buf_EOS - _M_ext_buf_end);
1286.652 - 
1286.653 -    // Don't enter error mode for a failed read.  Error mode is sticky,
1286.654 -    // and we might succeed if we try again.
1286.655 -#ifdef __SYMBIAN32__    //plum hall bug 577
1286.656 -    int nn = (char*)_M_ext_buf_end-(char*)_M_ext_buf; //number of chars unconverted last time
1286.657 -    if ( (__n <= 0) && ( nn<=0 ) )
1286.658 -#else
1286.659 -	if (__n <= 0)
1286.660 -#endif    
1286.661 -      return traits_type::eof();
1286.662 -
1286.663 -    // Convert the external buffer to internal characters.  
1286.664 -    _M_ext_buf_end += __n;
1286.665 -    const char*   __enext;
1286.666 -    _CharT* __inext;
1286.667 -
1286.668 -    typename _Codecvt::result __status
1286.669 -      = _M_codecvt->in(_M_end_state,
1286.670 -                       _M_ext_buf, _M_ext_buf_end, __enext,
1286.671 -                       _M_int_buf, _M_int_buf_EOS, __inext);
1286.672 -
1286.673 -    // Error conditions: (1) Return value of error.  (2) Producing internal
1286.674 -    // characters without consuming external characters.  (3) In fixed-width
1286.675 -    // encodings, producing an internal sequence whose length is inconsistent
1286.676 -    // with that of the internal sequence.  (4) Failure to produce any 
1286.677 -    // characters if we have enough characters in the external buffer, where
1286.678 -    // "enough" means the largest possible width of a single character.
1286.679 -    if (__status == _Codecvt::noconv)
1286.680 -      return _Noconv_input<_Traits>::_M_doit(this);
1286.681 -
1286.682 -    else if (__status == _Codecvt::error ||
1286.683 -             (__inext != _M_int_buf && __enext == _M_ext_buf) ||
1286.684 -             (_M_constant_width &&
1286.685 -              //         __inext - _M_int_buf != _M_width * (__enext - _M_ext_buf)) ||
1286.686 -              (__inext - _M_int_buf) *  _M_width != (__enext - _M_ext_buf)) ||
1286.687 -             (__inext == _M_int_buf && __enext - _M_ext_buf >= _M_max_width))
1286.688 -      return _M_input_error();
1286.689 -    
1286.690 -    else if (__inext != _M_int_buf) {
1286.691 -      _M_ext_buf_converted = _M_ext_buf + (__enext - _M_ext_buf);
1286.692 -      this->setg(_M_int_buf, _M_int_buf, __inext);
1286.693 -      return traits_type::to_int_type(*_M_int_buf);
1286.694 -    }
1286.695 -    // We need to go around the loop again to get more external characters.
1286.696 -  } 
1286.697 -}
1286.698 -
1286.699 -//----------------------------------------
1286.700 -// Helper functions for output
1286.701 -
1286.702 -// This member function is called if there is an error during output.
1286.703 -// It puts the filebuf in error mode, clear the put area buffer, and
1286.704 -// returns eof.  Error mode is sticky; it is cleared only by close or
1286.705 -// seek.
1286.706 -template <class _CharT, class _Traits>
1286.707 -__BF_int_type__
1286.708 -basic_filebuf<_CharT, _Traits>::_M_output_error()
1286.709 -{
1286.710 -  _M_in_output_mode = false;
1286.711 -  _M_in_input_mode = false;
1286.712 -  _M_in_error_mode = true;
1286.713 -  this->setp(0, 0);
1286.714 -  return traits_type::eof();
1286.715 -}
1286.716 -
1286.717 -
1286.718 -// Write whatever sequence of characters is necessary to get back to
1286.719 -// the initial shift state.  This function overwrites the external
1286.720 -// buffer, changes the external file position, and changes the state.
1286.721 -// Precondition: the internal buffer is empty.
1286.722 -template <class _CharT, class _Traits>
1286.723 -bool basic_filebuf<_CharT, _Traits>::_M_unshift()
1286.724 -{
1286.725 -  if (_M_in_output_mode && !_M_constant_width) {
1286.726 -    typename _Codecvt::result __status;
1286.727 -    do {
1286.728 -      char* __enext = _M_ext_buf;
1286.729 -      __status = _M_codecvt->unshift(_M_state,
1286.730 -                                     _M_ext_buf, _M_ext_buf_EOS, __enext);
1286.731 -      if (__status == _Codecvt::noconv ||
1286.732 -          (__enext == _M_ext_buf && __status == _Codecvt::ok))
1286.733 -        return true;
1286.734 -      else if (__status == _Codecvt::error)
1286.735 -        return false;
1286.736 -      else if (!_M_write(_M_ext_buf, __enext - _M_ext_buf))
1286.737 -        return false;
1286.738 -    } while(__status == _Codecvt::partial);
1286.739 -  }
1286.740 -
1286.741 -  return true;
1286.742 -}
1286.743 -
1286.744 -
1286.745 -//----------------------------------------
1286.746 -// Helper functions for buffer allocation and deallocation
1286.747 -
1286.748 -// This member function is called when we're initializing a filebuf's
1286.749 -// internal and external buffers.  The argument is the size of the
1286.750 -// internal buffer; the external buffer is sized using the character
1286.751 -// width in the current encoding.  Preconditions: the buffers are currently
1286.752 -// null.  __n >= 1.  __buf is either a null pointer or a pointer to an 
1286.753 -// array show size is at least __n.
1286.754 -
1286.755 -// We need __n >= 1 for two different reasons.  For input, the base
1286.756 -// class always needs a buffer because of the sementics of underflow().
1286.757 -// For output, we want to have an internal buffer that's larger by one
1286.758 -// element than the buffer that the base class knows about.  (See 
1286.759 -// basic_filebuf<>::overflow() for the reason.)
1286.760 -template <class _CharT, class _Traits>
1286.761 -bool 
1286.762 -basic_filebuf<_CharT, _Traits>::_M_allocate_buffers(_CharT* __buf, streamsize __n)
1286.763 -{
1286.764 -
1286.765 -  if (__buf == 0) {
1286.766 -    _M_int_buf = __STATIC_CAST(_CharT*,malloc(__n * sizeof(_CharT)));
1286.767 -    if (! _M_int_buf)
1286.768 -      return false;
1286.769 -    _M_int_buf_dynamic = true;
1286.770 -  }
1286.771 -  else {
1286.772 -    _M_int_buf = __buf;
1286.773 -    _M_int_buf_dynamic = false;
1286.774 -  }
1286.775 -  
1286.776 -  size_t __ebufsiz = (max)(__n * (max)(_M_codecvt->encoding(), 1),
1286.777 -                      streamsize(_M_codecvt->max_length()));
1286.778 -
1286.779 -  _M_ext_buf = __STATIC_CAST(char*,malloc(__ebufsiz));
1286.780 -  if (!_M_ext_buf) {
1286.781 -    _M_deallocate_buffers();
1286.782 -    return false;
1286.783 -  }
1286.784 -
1286.785 -  _M_int_buf_EOS = _M_int_buf + __n;
1286.786 -  _M_ext_buf_EOS = _M_ext_buf + __ebufsiz;
1286.787 -  return true;
1286.788 -}
1286.789 -
1286.790 -// Abbreviation for the most common case.
1286.791 -template <class _CharT, class _Traits>
1286.792 -bool basic_filebuf<_CharT, _Traits>::_M_allocate_buffers()
1286.793 -{
1286.794 -  // Choose a buffer that's at least 4096 characters long and that's a
1286.795 -  // multiple of the page size.
1286.796 -  streamsize __default_bufsiz =
1286.797 -    ((_M_base.__page_size() + 4095UL) / _M_base.__page_size()) * _M_base.__page_size();
1286.798 -  return _M_allocate_buffers(0, __default_bufsiz);
1286.799 -}
1286.800 -
1286.801 -template <class _CharT, class _Traits>
1286.802 -void basic_filebuf<_CharT, _Traits>::_M_deallocate_buffers()
1286.803 -{
1286.804 -  if (_M_int_buf_dynamic)
1286.805 -    free(_M_int_buf);
1286.806 -  free(_M_ext_buf);
1286.807 -  _M_int_buf     = 0;
1286.808 -  _M_int_buf_EOS = 0;
1286.809 -  _M_ext_buf     = 0;
1286.810 -  _M_ext_buf_EOS = 0;
1286.811 -}
1286.812 -
1286.813 -
1286.814 -//----------------------------------------
1286.815 -// Helper functiosn for seek and imbue
1286.816 -
1286.817 -template <class _CharT, class _Traits>
1286.818 -bool basic_filebuf<_CharT, _Traits>::_M_seek_init(bool __do_unshift) {
1286.819 -  // If we're in error mode, leave it.
1286.820 -   _M_in_error_mode = false;
1286.821 -   
1286.822 -  // Flush the output buffer if we're in output mode, and (conditionally)
1286.823 -  // emit an unshift sequence.
1286.824 -  if (_M_in_output_mode) {
1286.825 -    bool __ok = !traits_type::eq_int_type(this->overflow(traits_type::eof()),
1286.826 -                                          traits_type::eof());
1286.827 -    if (__do_unshift)
1286.828 -      __ok = __ok && this->_M_unshift();
1286.829 -    if (!__ok) {
1286.830 -      _M_in_output_mode = false;
1286.831 -      _M_in_error_mode = true;
1286.832 -      this->setp(0, 0);
1286.833 -      return false;
1286.834 -    }
1286.835 -  }
1286.836 -
1286.837 -  // Discard putback characters, if any.
1286.838 -  if (_M_in_input_mode && _M_in_putback_mode)
1286.839 -    _M_exit_putback_mode();
1286.840 -
1286.841 -  return true;
1286.842 -}
1286.843 -
1286.844 -
1286.845 -// Change the filebuf's locale.  This member function has no effect
1286.846 -// unless it is called before any I/O is performed on the stream.
1286.847 -template <class _CharT, class _Traits>
1286.848 -void basic_filebuf<_CharT, _Traits>::_M_setup_codecvt(const locale& __loc)
1286.849 -{
1286.850 -  _M_codecvt = &use_facet<_Codecvt>(__loc) ;
1286.851 -  int __encoding    = _M_codecvt->encoding();
1286.852 -
1286.853 -  _M_width          = (max)(__encoding, 1);
1286.854 -  _M_max_width      = _M_codecvt->max_length();
1286.855 -  _M_constant_width = __encoding > 0;
1286.856 -  _M_always_noconv  = _M_codecvt->always_noconv();
1286.857 -}
1286.858 -
1286.859 -
1286.860 -
1286.861 -template <class _CharT, class _Traits>
1286.862 -  _STLP_EXP_DECLSPEC basic_fstream<_CharT, _Traits>::basic_fstream()
1286.863 -    : basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() {
1286.864 -      this->init(&_M_buf);
1286.865 -  }
1286.866 -
1286.867 -
1286.868 -template <class _CharT, class _Traits>
1286.869 -  _STLP_EXP_DECLSPEC basic_fstream<_CharT, _Traits>::~basic_fstream(){}
1286.870 -  
1286.871 -#ifdef __SYMBIAN32__
1286.872 -template <class _CharT, class _Traits>
1286.873 -int basic_filebuf<_CharT, _Traits>::save_read_buffer ()
1286.874 -    {
1286.875 -    return _M_in_putback_mode ? _M_saved_egptr - _M_saved_gptr : 0;
1286.876 -    }
1286.877 -template <class _CharT, class _Traits>
1286.878 -void basic_filebuf<_CharT, _Traits>::_change_input_mode ()
1286.879 -    {
1286.880 -    _M_in_input_mode = 1;
1286.881 -    }
1286.882 -
1286.883 -#endif
1286.884 -
1286.885 -_STLP_END_NAMESPACE
1286.886 -
1286.887 -# undef __BF_int_type__
1286.888 -# undef __BF_pos_type__
1286.889 -# undef __BF_off_type__
1286.890 -
1286.891 -# endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1286.892 -
1286.893 -#endif /* _STLP_FSTREAM_C */
1286.894 -
  1287.1 --- a/epoc32/include/stdapis/stlport/stl/_fstream.h	Tue Mar 16 16:12:26 2010 +0000
  1287.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1287.3 @@ -1,767 +0,0 @@
  1287.4 -/*
  1287.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1287.6 - *
  1287.7 - * Copyright (c) 1999
  1287.8 - * Silicon Graphics Computer Systems, Inc.
  1287.9 - *
 1287.10 - * Copyright (c) 1999 
 1287.11 - * Boris Fomitchev
 1287.12 - *
 1287.13 - * This material is provided "as is", with absolutely no warranty expressed
 1287.14 - * or implied. Any use is at your own risk.
 1287.15 - *
 1287.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1287.17 - * without fee, provided the above notices are retained on all copies.
 1287.18 - * Permission to modify the code and to distribute modified code is granted,
 1287.19 - * provided the above notices are retained, and a notice that the code was
 1287.20 - * modified is included with the above copyright notice.
 1287.21 - *
 1287.22 - */ 
 1287.23 -// This header defines classes basic_filebuf, basic_ifstream,
 1287.24 -// basic_ofstream, and basic_fstream.  These classes represent
 1287.25 -// streambufs and streams whose sources or destinations are files.
 1287.26 -
 1287.27 -#ifndef _STLP_INTERNAL_FSTREAM_H
 1287.28 -#define _STLP_INTERNAL_FSTREAM_H
 1287.29 -
 1287.30 -#if defined(__sgi) && !defined(__GNUC__) && !defined(_STANDARD_C_PLUS_PLUS)
 1287.31 -#error This header file requires the -LANG:std option
 1287.32 -#endif
 1287.33 -
 1287.34 -#ifndef _STLP_INTERNAL_STREAMBUF
 1287.35 -# include <stl/_streambuf.h>
 1287.36 -#endif
 1287.37 -
 1287.38 -#ifndef _STLP_INTERNAL_ISTREAM_H
 1287.39 -#include <stl/_istream.h>
 1287.40 -#endif
 1287.41 -
 1287.42 -#ifndef _STLP_INTERNAL_CODECVT_H
 1287.43 -#include <stl/_codecvt.h>
 1287.44 -#endif
 1287.45 -
 1287.46 -#ifndef _STLP_STDIO_FILE_H
 1287.47 -#include <stl/_stdio_file.h>
 1287.48 -#endif
 1287.49 -
 1287.50 -// fbp : let us map 1 MB maximum, just be sure not to trash VM
 1287.51 -//for hardware defining 8kb of mmap chunk
 1287.52 -# ifdef __SYMBIAN32__
 1287.53 -# define MMAP_CHUNK 0x2000UL
 1287.54 -# else
 1287.55 -# define MMAP_CHUNK 0x100000UL
 1287.56 -# endif
 1287.57 -
 1287.58 -#if !defined (_STLP_USE_UNIX_IO) && !defined(_STLP_USE_WIN32_IO) \
 1287.59 -    && ! defined (_STLP_USE_UNIX_EMULATION_IO) && !defined (_STLP_USE_STDIO_IO)
 1287.60 -
 1287.61 -# if defined (_STLP_UNIX)  || defined (__CYGWIN__) || defined (__amigaos__) || defined (__EMX__) || defined (__SYMBIAN32__)
 1287.62 -// open/close/read/write
 1287.63 -#  define _STLP_USE_UNIX_IO
 1287.64 -# elif defined (_STLP_WIN32)  && ! defined (__CYGWIN__)
 1287.65 -// CreateFile/ReadFile/WriteFile
 1287.66 -#  define _STLP_USE_WIN32_IO
 1287.67 -# elif defined (_STLP_WIN16) || defined (_STLP_WIN32) || defined (_STLP_MAC)
 1287.68 -// _open/_read/_write
 1287.69 -#  define _STLP_USE_UNIX_EMULATION_IO
 1287.70 -# else
 1287.71 -// fopen/fread/fwrite
 1287.72 -#  define _STLP_USE_STDIO_IO
 1287.73 -# endif /* _STLP_UNIX */
 1287.74 -
 1287.75 -#endif /* mode selection */
 1287.76 -
 1287.77 -
 1287.78 -#if defined (_STLP_USE_WIN32_IO)
 1287.79 -typedef void* _STLP_fd;
 1287.80 -#elif defined (_STLP_USE_UNIX_EMULATION_IO) || defined (_STLP_USE_STDIO_IO) || defined (_STLP_USE_UNIX_IO)
 1287.81 -typedef int _STLP_fd;
 1287.82 -#else
 1287.83 -#error "Configure i/o !"
 1287.84 -#endif
 1287.85 -
 1287.86 -
 1287.87 -_STLP_BEGIN_NAMESPACE
 1287.88 -
 1287.89 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1287.90 -_STLP_DECLSPEC size_t& get_fstream_Filebuf_Base_GetPageSize();
 1287.91 -#endif //__LIBSTD_CPP_SYMBIAN32_WSD__
 1287.92 -//----------------------------------------------------------------------
 1287.93 -// Class _Filebuf_base, a private base class to factor out the system-
 1287.94 -// dependent code from basic_filebuf<>.
 1287.95 -
 1287.96 -class _STLP_CLASS_DECLSPEC _Filebuf_base {
 1287.97 -public:                      // Opening and closing files.
 1287.98 -  _STLP_DECLSPEC _Filebuf_base();
 1287.99 -
1287.100 -  _STLP_DECLSPEC bool _M_open(const char*, ios_base::openmode, long __protection);
1287.101 -  _STLP_DECLSPEC bool _M_open(const char*, ios_base::openmode);
1287.102 -  _STLP_DECLSPEC bool _M_open(int __id, ios_base::openmode = ios_base::__default_mode);
1287.103 -  _STLP_DECLSPEC bool _M_close();
1287.104 -
1287.105 -public:                      // Low-level I/O, like Unix read/write
1287.106 -  _STLP_DECLSPEC ptrdiff_t _M_read(char* __buf,  ptrdiff_t __n);
1287.107 -  _STLP_DECLSPEC streamoff _M_seek(streamoff __offset, ios_base::seekdir __dir);
1287.108 -  _STLP_DECLSPEC streamoff _M_file_size();
1287.109 -  _STLP_DECLSPEC bool _M_write(char* __buf,  ptrdiff_t __n);
1287.110 -
1287.111 -public:                      // Memory-mapped I/O.
1287.112 -  _STLP_DECLSPEC void* _M_mmap(streamoff __offset, streamoff __len);
1287.113 -  _STLP_DECLSPEC void _M_unmap(void* __mmap_base, streamoff __len);
1287.114 -
1287.115 -public:
1287.116 -  // Returns a value n such that, if pos is the file pointer at the
1287.117 -  // beginning of the range [first, last), pos + n is the file pointer at
1287.118 -  // the end.  On many operating systems n == __last - __first.
1287.119 -  // In Unix, writing n characters always bumps the file position by n.
1287.120 -  // In Windows text mode, however, it bumps the file position by n + m,
1287.121 -  // where m is the number of newlines in the range.  That's because an
1287.122 -  // internal \n corresponds to an external two-character sequence.
1287.123 -  streamoff _M_get_offset(char* __first, char* __last) {
1287.124 -#if defined (_STLP_UNIX) || defined (_STLP_MAC)
1287.125 -    return __last - __first;
1287.126 -#else // defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS)
1287.127 -    return ( (_M_openmode & ios_base::binary) != 0 )
1287.128 -      ? (__last - __first)
1287.129 -      : count(__first, __last, '\n') + (__last - __first);
1287.130 -#endif
1287.131 -  }
1287.132 -
1287.133 -  // Returns true if we're in binary mode or if we're using an OS or file 
1287.134 -  // system where there is no distinction between text and binary mode.
1287.135 -  bool _M_in_binary_mode() const {
1287.136 -# if defined (_STLP_UNIX) || defined (_STLP_MAC)  || defined(__BEOS__) || defined (__amigaos__) || defined (_STLP_VXWORKS_TORNADO)
1287.137 -    return true;
1287.138 -# elif defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS) || defined (_STLP_VM) || defined (__EMX__)
1287.139 -    return (_M_openmode & ios_base::binary) != 0;
1287.140 -# else 
1287.141 -//#   error "Port!"
1287.142 -#pragma message(" Symbian I/O stream support on progress."__FILE__)
1287.143 -# endif
1287.144 -  }
1287.145 -
1287.146 -protected:                      // Static data members.
1287.147 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1287.148 -  static size_t _M_page_size;
1287.149 -#endif //__SYMBIAN32__
1287.150 -
1287.151 -protected:                      // Data members.
1287.152 -  _STLP_fd _M_file_id;
1287.153 -# ifdef _STLP_USE_STDIO_IO
1287.154 -  // for stdio, the whole FILE* is being kept here
1287.155 -  FILE* _M_file;
1287.156 -# endif
1287.157 -# ifdef _STLP_USE_WIN32_IO
1287.158 -  void* _M_view_id; 
1287.159 -# endif
1287.160 -
1287.161 -  ios_base::openmode _M_openmode     ;
1287.162 -  unsigned char      _M_is_open      ;
1287.163 -  unsigned char      _M_should_close ;
1287.164 -  unsigned char      _M_regular_file ;
1287.165 -
1287.166 -public :
1287.167 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1287.168 -  static size_t  _STLP_CALL __page_size() { return get_fstream_Filebuf_Base_GetPageSize(); }
1287.169 -#else
1287.170 -  static size_t  _STLP_CALL __page_size() { return _M_page_size; } 
1287.171 -#endif  
1287.172 -  int  __o_mode() const { return (int)_M_openmode; } 
1287.173 -  bool __is_open()      const { return (_M_is_open !=0 ); } 
1287.174 -  bool __should_close() const { return (_M_should_close != 0); } 
1287.175 -  bool __regular_file() const { return (_M_regular_file != 0); }
1287.176 -  _STLP_fd __get_fd() const { return _M_file_id; }
1287.177 -};
1287.178 -
1287.179 -
1287.180 -
1287.181 -
1287.182 -//----------------------------------------------------------------------
1287.183 -// Class basic_filebuf<>.
1287.184 -
1287.185 -// Forward declaration of two helper classes.
1287.186 -template <class _Traits> class _Noconv_input;
1287.187 -_STLP_TEMPLATE_NULL
1287.188 -class _Noconv_input<char_traits<char> >;
1287.189 -
1287.190 -template <class _Traits> class _Noconv_output;
1287.191 -_STLP_TEMPLATE_NULL
1287.192 -class _Noconv_output< char_traits<char> >;
1287.193 -
1287.194 -// There is a specialized version of underflow, for basic_filebuf<char>,
1287.195 -// in fstream.cxx.
1287.196 -
1287.197 -template <class _CharT, class _Traits>
1287.198 -class _Underflow;
1287.199 -
1287.200 - _STLP_TEMPLATE_NULL class _Underflow< char, char_traits<char> >;
1287.201 -
1287.202 -template <class _CharT, class _Traits>
1287.203 -class basic_filebuf : public basic_streambuf<_CharT, _Traits>
1287.204 -{
1287.205 -public:                         // Types.
1287.206 -  typedef _CharT                     char_type;
1287.207 -  typedef typename _Traits::int_type int_type;
1287.208 -  typedef typename _Traits::pos_type pos_type;
1287.209 -  typedef typename _Traits::off_type off_type;
1287.210 -  typedef _Traits                    traits_type;
1287.211 -
1287.212 -  typedef typename _Traits::state_type _State_type;
1287.213 -  typedef basic_streambuf<_CharT, _Traits> _Base;
1287.214 -  typedef basic_filebuf<_CharT, _Traits> _Self;
1287.215 -
1287.216 -public:                         // Constructors, destructor.
1287.217 -  basic_filebuf();  
1287.218 -  ~basic_filebuf();
1287.219 -  
1287.220 -public:                         // Opening and closing files.
1287.221 -  bool is_open() const { return _M_base.__is_open(); }
1287.222 -
1287.223 -  _Self* open(const char* __s, ios_base::openmode __m) {
1287.224 -    return _M_base._M_open(__s, __m) ? this : 0;
1287.225 -  }
1287.226 -
1287.227 -# ifndef _STLP_NO_EXTENSIONS
1287.228 -  // These two version of open() and file descriptor getter are extensions.
1287.229 -  _Self* open(const char* __s, ios_base::openmode __m,
1287.230 -		      long __protection) {
1287.231 -    return _M_base._M_open(__s, __m, __protection) ? this : 0;
1287.232 -  }
1287.233 -  
1287.234 -  _STLP_fd fd() const { return _M_base.__get_fd(); }
1287.235 -
1287.236 -  _Self* open(int __id, ios_base::openmode _Init_mode = ios_base::__default_mode) {
1287.237 -    return this->_M_open(__id, _Init_mode);
1287.238 -  }
1287.239 -# endif
1287.240 -
1287.241 -  _Self* _M_open(int __id, ios_base::openmode _Init_mode = ios_base::__default_mode) {
1287.242 -    return _M_base._M_open(__id, _Init_mode) ? this : 0;
1287.243 -  }
1287.244 -
1287.245 -  _Self* close();
1287.246 -
1287.247 -protected:                      // Virtual functions from basic_streambuf.
1287.248 -  virtual streamsize showmanyc();
1287.249 -  virtual int_type underflow();
1287.250 -
1287.251 -  virtual int_type pbackfail(int_type = traits_type::eof());
1287.252 -  virtual int_type overflow(int_type = traits_type::eof());
1287.253 -
1287.254 -  virtual basic_streambuf<_CharT, _Traits>* setbuf(char_type*, streamsize);
1287.255 -  virtual pos_type seekoff(off_type, ios_base::seekdir,
1287.256 -                           ios_base::openmode = ios_base::in | ios_base::out);
1287.257 -  virtual pos_type seekpos(pos_type,
1287.258 -                           ios_base::openmode = ios_base::in | ios_base::out);
1287.259 -
1287.260 -  virtual int sync();
1287.261 -  virtual void imbue(const locale&);
1287.262 -
1287.263 -#ifdef __SYMBIAN32__  
1287.264 -  virtual int save_read_buffer ();
1287.265 -  virtual void _change_input_mode();
1287.266 -#endif
1287.267 -
1287.268 -private:                        // Helper functions.
1287.269 -
1287.270 -  // Precondition: we are currently in putback input mode.  Effect:
1287.271 -  // switches back to ordinary input mode.
1287.272 -  void _M_exit_putback_mode() {
1287.273 -    this->setg(_M_saved_eback, _M_saved_gptr, _M_saved_egptr);
1287.274 -    _M_in_putback_mode = false;
1287.275 -  }
1287.276 -  bool _M_switch_to_input_mode();
1287.277 -  void _M_exit_input_mode();
1287.278 -  bool _M_switch_to_output_mode();
1287.279 -
1287.280 -  int_type _M_input_error();
1287.281 -  int_type _M_underflow_aux();
1287.282 -  //  friend class _Noconv_input<_Traits>;
1287.283 -  //  friend class _Noconv_output<_Traits>;
1287.284 -  friend class _Underflow<_CharT, _Traits>;
1287.285 -
1287.286 -  int_type _M_output_error();
1287.287 -  bool _M_unshift();
1287.288 -
1287.289 -  bool _M_allocate_buffers(_CharT* __buf, streamsize __n);
1287.290 -  bool _M_allocate_buffers();
1287.291 -  void _M_deallocate_buffers();
1287.292 -
1287.293 -  pos_type _M_seek_return(off_type __off, _State_type __state) {
1287.294 -    if (__off != -1) {
1287.295 -      if (_M_in_input_mode)
1287.296 -        _M_exit_input_mode();
1287.297 -#ifndef __SYMBIAN32__	  
1287.298 -      _M_in_input_mode = false; //moved down, because setg again sets  input mode
1287.299 -#endif
1287.300 -      _M_in_output_mode = false;
1287.301 -      _M_in_putback_mode = false;
1287.302 -      _M_in_error_mode = false;
1287.303 -      this->setg(0, 0, 0);
1287.304 -      this->setp(0, 0);
1287.305 -#ifdef __SYMBIAN32__	  
1287.306 -			_M_in_input_mode = false; 
1287.307 -#endif
1287.308 -    }
1287.309 -    
1287.310 -    pos_type __result(__off);
1287.311 -    __result.state(__state);
1287.312 -    return __result;
1287.313 -  }
1287.314 -  
1287.315 -  bool _M_seek_init(bool __do_unshift);
1287.316 -
1287.317 -  void _M_setup_codecvt(const locale&);
1287.318 -
1287.319 -private:                        // Data members used in all modes.
1287.320 -
1287.321 -  _Filebuf_base _M_base;
1287.322 -
1287.323 -private:                        // Locale-related information.
1287.324 -
1287.325 -  unsigned char _M_constant_width;
1287.326 -  unsigned char _M_always_noconv;
1287.327 -  
1287.328 -  // private:                        // Mode flags.
1287.329 -  unsigned char _M_int_buf_dynamic;  // True if internal buffer is heap allocated,
1287.330 -  // false if it was supplied by the user.
1287.331 -  unsigned char _M_in_input_mode;
1287.332 -  unsigned char _M_in_output_mode;
1287.333 -  unsigned char _M_in_error_mode;
1287.334 -  unsigned char _M_in_putback_mode;
1287.335 -  
1287.336 -  // Internal buffer: characters seen by the filebuf's clients.
1287.337 -  _CharT* _M_int_buf;
1287.338 -  _CharT* _M_int_buf_EOS;
1287.339 -  
1287.340 -  // External buffer: characters corresponding to the external file.
1287.341 -  char* _M_ext_buf;
1287.342 -  char* _M_ext_buf_EOS;
1287.343 -
1287.344 -  // The range [_M_ext_buf, _M_ext_buf_converted) contains the external
1287.345 -  // characters corresponding to the sequence in the internal buffer.  The
1287.346 -  // range [_M_ext_buf_converted, _M_ext_buf_end) contains characters that
1287.347 -  // have been read into the external buffer but have not been converted
1287.348 -  // to an internal sequence.
1287.349 -  char* _M_ext_buf_converted;
1287.350 -  char* _M_ext_buf_end;
1287.351 -
1287.352 -  // State corresponding to beginning of internal buffer.
1287.353 -  _State_type _M_state;
1287.354 -
1287.355 -private:                        // Data members used only in input mode.
1287.356 -
1287.357 -  // Similar to _M_state except that it corresponds to
1287.358 -  // the end of the internal buffer instead of the beginning.
1287.359 -  _State_type _M_end_state;
1287.360 -
1287.361 -  // This is a null pointer unless we are in mmap input mode.
1287.362 -  void*     _M_mmap_base;
1287.363 -  streamoff _M_mmap_len;
1287.364 -
1287.365 -private:                        // Data members used only in putback mode.
1287.366 -  _CharT* _M_saved_eback;
1287.367 -  _CharT* _M_saved_gptr;
1287.368 -  _CharT* _M_saved_egptr;
1287.369 -
1287.370 -  typedef codecvt<_CharT, char, _State_type> _Codecvt;
1287.371 -  const _Codecvt* _M_codecvt;
1287.372 -
1287.373 -  int _M_width;                 // Width of the encoding (if constant), else 1
1287.374 -  int _M_max_width;             // Largest possible width of single character.
1287.375 -
1287.376 -
1287.377 -  enum { _S_pback_buf_size = 8 };
1287.378 -  _CharT _M_pback_buf[_S_pback_buf_size];
1287.379 -
1287.380 -  // for _Noconv_output
1287.381 -public:
1287.382 -  bool _M_write(char* __buf,  ptrdiff_t __n) {return _M_base._M_write(__buf, __n); }
1287.383 -
1287.384 -public:
1287.385 -  int_type
1287.386 -  _M_do_noconv_input() {
1287.387 -    _M_ext_buf_converted = _M_ext_buf_end;
1287.388 -    this->setg((char_type*)_M_ext_buf, (char_type*)_M_ext_buf, (char_type*)_M_ext_buf_end);
1287.389 -    return traits_type::to_int_type(*_M_ext_buf);
1287.390 -  }
1287.391 -};
1287.392 -
1287.393 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1287.394 -_STLP_EXPORT_TEMPLATE_CLASS basic_filebuf<char, char_traits<char> >;
1287.395 -#  if ! defined (_STLP_NO_WCHAR_T)
1287.396 -_STLP_EXPORT_TEMPLATE_CLASS basic_filebuf<wchar_t, char_traits<wchar_t> >;
1287.397 -#  endif
1287.398 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1287.399 -
1287.400 -// public:
1287.401 -// helper class.
1287.402 -template <class _CharT>
1287.403 -struct _Filebuf_Tmp_Buf
1287.404 -{
1287.405 -  _CharT* _M_ptr;
1287.406 -  _Filebuf_Tmp_Buf(ptrdiff_t __n) : _M_ptr(0) { _M_ptr = new _CharT[__n]; }
1287.407 -  ~_Filebuf_Tmp_Buf() { delete[] _M_ptr; }
1287.408 -};
1287.409 -
1287.410 -
1287.411 -//
1287.412 -// This class had to be designed very carefully to work
1287.413 -// with Visual C++.
1287.414 -//
1287.415 -template <class _Traits>
1287.416 -class _Noconv_output {
1287.417 -public:
1287.418 -  typedef typename _Traits::char_type char_type;
1287.419 -  static bool  _STLP_CALL _M_doit(basic_filebuf<char_type, _Traits >*, 
1287.420 -                                  char_type*, char_type*)
1287.421 -  {
1287.422 -      return false; 
1287.423 -  }
1287.424 -};
1287.425 -
1287.426 -_STLP_TEMPLATE_NULL
1287.427 -class _STLP_CLASS_DECLSPEC _Noconv_output< char_traits<char> > {
1287.428 -public:
1287.429 -  static bool  _STLP_CALL
1287.430 -  _M_doit(basic_filebuf<char, char_traits<char> >* __buf, 
1287.431 -          char* __first, char* __last)
1287.432 -  {
1287.433 -    ptrdiff_t __n = __last - __first;
1287.434 -    if (__buf->_M_write(__first, __n)) {
1287.435 -      return true;
1287.436 -    }
1287.437 -    else
1287.438 -      return false; 
1287.439 -  }
1287.440 -};
1287.441 -
1287.442 -//----------------------------------------------------------------------
1287.443 -// basic_filebuf<> helper functions.
1287.444 -
1287.445 -
1287.446 -//----------------------------------------
1287.447 -// Helper functions for switching between modes.
1287.448 -
1287.449 -//
1287.450 -// This class had to be designed very carefully to work
1287.451 -// with Visual C++.
1287.452 -//
1287.453 -template <class _Traits>
1287.454 -class _Noconv_input {
1287.455 -public:
1287.456 -  typedef typename _Traits::int_type int_type;
1287.457 -  typedef typename _Traits::char_type char_type;
1287.458 -
1287.459 -  static inline int_type _STLP_CALL
1287.460 -  _M_doit(basic_filebuf<char_type, _Traits>*) 
1287.461 -  {
1287.462 -    return 0;
1287.463 -  }
1287.464 -};
1287.465 -
1287.466 -_STLP_TEMPLATE_NULL
1287.467 -class _Noconv_input<char_traits<char> > {
1287.468 -public:
1287.469 -  static inline int _STLP_CALL
1287.470 -  _M_doit(basic_filebuf<char, char_traits<char> >* __buf)  {
1287.471 -    return __buf->_M_do_noconv_input();
1287.472 -  }
1287.473 -};
1287.474 -
1287.475 -// underflow() may be called for one of two reasons.  (1) We've
1287.476 -// been going through the special putback buffer, and we need to move back
1287.477 -// to the regular internal buffer.  (2) We've exhausted the internal buffer,
1287.478 -// and we need to replentish it.  
1287.479 -template <class _CharT, class _Traits>
1287.480 -class _Underflow {
1287.481 -public:
1287.482 -  typedef typename _Traits::int_type int_type;
1287.483 -  typedef _Traits                    traits_type;
1287.484 -  
1287.485 -  static int_type _STLP_CALL _M_doit(basic_filebuf<_CharT, _Traits>* __this);
1287.486 -};
1287.487 -
1287.488 -
1287.489 -// Specialization of underflow: if the character type is char, maybe
1287.490 -// we can use mmap instead of read.
1287.491 -_STLP_TEMPLATE_NULL
1287.492 -class _STLP_CLASS_DECLSPEC _Underflow< char, char_traits<char> > {
1287.493 -public:
1287.494 -  typedef char_traits<char>::int_type int_type;
1287.495 -  typedef char_traits<char> traits_type;
1287.496 -  _STLP_DECLSPEC static  int _STLP_CALL _M_doit(basic_filebuf<char, traits_type >* __this);
1287.497 -};
1287.498 -
1287.499 -// There is a specialized version of underflow, for basic_filebuf<char>,
1287.500 -// in fstream.cxx.
1287.501 -
1287.502 -template <class _CharT, class _Traits>
1287.503 -_STLP_TYPENAME_ON_RETURN_TYPE _Underflow<_CharT, _Traits>::int_type // _STLP_CALL
1287.504 - _Underflow<_CharT, _Traits>::_M_doit(basic_filebuf<_CharT, _Traits>* __this)
1287.505 -{
1287.506 -  if (!__this->_M_in_input_mode) {
1287.507 -    if (!__this->_M_switch_to_input_mode())
1287.508 -      return traits_type::eof();
1287.509 -  }
1287.510 -  
1287.511 -  else if (__this->_M_in_putback_mode) {
1287.512 -    __this->_M_exit_putback_mode();
1287.513 -    if (__this->gptr() != __this->egptr()) {
1287.514 -      int_type __c = traits_type::to_int_type(*__this->gptr());
1287.515 -      return __c;
1287.516 -    }
1287.517 -  }
1287.518 -  
1287.519 -  return __this->_M_underflow_aux();
1287.520 -}
1287.521 -
1287.522 -#if defined( _STLP_USE_TEMPLATE_EXPORT ) && ! defined (_STLP_NO_WCHAR_T)
1287.523 -_STLP_EXPORT_TEMPLATE_CLASS _Underflow<wchar_t, char_traits<wchar_t> >;
1287.524 -#endif
1287.525 -
1287.526 -
1287.527 -//----------------------------------------------------------------------
1287.528 -// Class basic_ifstream<>
1287.529 -
1287.530 -template <class _CharT, class _Traits>
1287.531 -class basic_ifstream : public basic_istream<_CharT, _Traits>
1287.532 -{
1287.533 -public:                         // Types
1287.534 -  typedef _CharT                     char_type;
1287.535 -  typedef typename _Traits::int_type int_type;
1287.536 -  typedef typename _Traits::pos_type pos_type;
1287.537 -  typedef typename _Traits::off_type off_type;
1287.538 -  typedef _Traits                    traits_type;
1287.539 -
1287.540 -  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1287.541 -  typedef basic_istream<_CharT, _Traits>            _Base;
1287.542 -  typedef basic_filebuf<_CharT, _Traits>            _Buf;
1287.543 -
1287.544 -public:                         // Constructors, destructor.
1287.545 -
1287.546 -  basic_ifstream() : 
1287.547 -    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0), _M_buf() {
1287.548 -      this->init(&_M_buf);
1287.549 -  }
1287.550 -
1287.551 -  explicit basic_ifstream(const char* __s, ios_base::openmode __mod = ios_base::in) : 
1287.552 -    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0),
1287.553 -    _M_buf() {
1287.554 -      this->init(&_M_buf);
1287.555 -      if (!_M_buf.open(__s, __mod | ios_base::in))
1287.556 -	this->setstate(ios_base::failbit);
1287.557 -  }
1287.558 -
1287.559 -# ifndef _STLP_NO_EXTENSIONS
1287.560 -  explicit basic_ifstream(int __id, ios_base::openmode __mod = ios_base::in) : 
1287.561 -    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0), _M_buf() {
1287.562 -    this->init(&_M_buf);
1287.563 -    if (!_M_buf.open(__id, __mod | ios_base::in))
1287.564 -      this->setstate(ios_base::failbit);
1287.565 -  }
1287.566 -  basic_ifstream(const char* __s, ios_base::openmode __m,
1287.567 -		 long __protection) : 
1287.568 -    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0), _M_buf() {
1287.569 -    this->init(&_M_buf);
1287.570 -    if (!_M_buf.open(__s, __m | ios_base::in, __protection))
1287.571 -      this->setstate(ios_base::failbit);  
1287.572 -  }
1287.573 -  
1287.574 -# endif
1287.575 -
1287.576 -  ~basic_ifstream() {}
1287.577 -
1287.578 -public:                         // File and buffer operations.
1287.579 -  basic_filebuf<_CharT, _Traits>* rdbuf() const
1287.580 -    { return __CONST_CAST(_Buf*,&_M_buf); }
1287.581 -
1287.582 -  bool is_open() {
1287.583 -    return this->rdbuf()->is_open();
1287.584 -  }
1287.585 -
1287.586 -  void open(const char* __s, ios_base::openmode __mod = ios_base::in) {
1287.587 -    if (!this->rdbuf()->open(__s, __mod | ios_base::in))
1287.588 -      this->setstate(ios_base::failbit);
1287.589 -  }
1287.590 -
1287.591 -  void close() {
1287.592 -    if (!this->rdbuf()->close())
1287.593 -      this->setstate(ios_base::failbit);
1287.594 -  }
1287.595 -
1287.596 -
1287.597 -private:
1287.598 -  basic_filebuf<_CharT, _Traits> _M_buf;
1287.599 -};
1287.600 -
1287.601 -
1287.602 -//----------------------------------------------------------------------
1287.603 -// Class basic_ofstream<>
1287.604 -
1287.605 -template <class _CharT, class _Traits>
1287.606 -class basic_ofstream : public basic_ostream<_CharT, _Traits>
1287.607 -{
1287.608 -public:                         // Types
1287.609 -  typedef _CharT                     char_type;
1287.610 -  typedef typename _Traits::int_type int_type;
1287.611 -  typedef typename _Traits::pos_type pos_type;
1287.612 -  typedef typename _Traits::off_type off_type;
1287.613 -  typedef _Traits                    traits_type;
1287.614 -
1287.615 -  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1287.616 -  typedef basic_ostream<_CharT, _Traits>            _Base;
1287.617 -  typedef basic_filebuf<_CharT, _Traits>            _Buf;
1287.618 -
1287.619 -public:                         // Constructors, destructor.
1287.620 -  basic_ofstream() : 
1287.621 -    basic_ios<_CharT, _Traits>(), 
1287.622 -    basic_ostream<_CharT, _Traits>(0), _M_buf() {
1287.623 -      this->init(&_M_buf);
1287.624 -  }
1287.625 -  explicit basic_ofstream(const char* __s, ios_base::openmode __mod = ios_base::out) 
1287.626 -    : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0),
1287.627 -      _M_buf() {
1287.628 -	this->init(&_M_buf);
1287.629 -	if (!_M_buf.open(__s, __mod | ios_base::out))
1287.630 -	  this->setstate(ios_base::failbit);
1287.631 -  }
1287.632 -
1287.633 -# ifndef _STLP_NO_EXTENSIONS
1287.634 -  explicit basic_ofstream(int __id, ios_base::openmode __mod = ios_base::out) 
1287.635 -    : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0),
1287.636 -    _M_buf() {
1287.637 - 	this->init(&_M_buf);
1287.638 - 	if (!_M_buf.open(__id, __mod | ios_base::out))
1287.639 - 	  this->setstate(ios_base::failbit);
1287.640 -  }
1287.641 -  basic_ofstream(const char* __s, ios_base::openmode __m, long __protection) : 
1287.642 -    basic_ios<_CharT, _Traits>(),  basic_ostream<_CharT, _Traits>(0), _M_buf() {
1287.643 -    this->init(&_M_buf);
1287.644 -    if (!_M_buf.open(__s, __m | ios_base::out, __protection))
1287.645 -      this->setstate(ios_base::failbit);  
1287.646 -  }
1287.647 -# endif
1287.648 -  
1287.649 -  ~basic_ofstream() {}
1287.650 -
1287.651 -public:                         // File and buffer operations.
1287.652 -  basic_filebuf<_CharT, _Traits>* rdbuf() const
1287.653 -    { return __CONST_CAST(_Buf*,&_M_buf); } 
1287.654 -
1287.655 -  bool is_open() {
1287.656 -    return this->rdbuf()->is_open();
1287.657 -  }
1287.658 -
1287.659 -  void open(const char* __s, ios_base::openmode __mod= ios_base::out) {
1287.660 -    if (!this->rdbuf()->open(__s, __mod | ios_base::out))
1287.661 -      this->setstate(ios_base::failbit);
1287.662 -  }
1287.663 -
1287.664 -  void close() {
1287.665 -    if (!this->rdbuf()->close())
1287.666 -      this->setstate(ios_base::failbit);
1287.667 -  }
1287.668 -
1287.669 -private:
1287.670 -  basic_filebuf<_CharT, _Traits> _M_buf;
1287.671 -};
1287.672 -
1287.673 -
1287.674 -//----------------------------------------------------------------------
1287.675 -// Class basic_fstream<>
1287.676 -
1287.677 -template <class _CharT, class _Traits>
1287.678 -class basic_fstream : public basic_iostream<_CharT, _Traits>
1287.679 -{
1287.680 -public:                         // Types
1287.681 -  typedef _CharT                     char_type;
1287.682 -  typedef typename _Traits::int_type int_type;
1287.683 -  typedef typename _Traits::pos_type pos_type;
1287.684 -  typedef typename _Traits::off_type off_type;
1287.685 -  typedef _Traits                    traits_type;
1287.686 -
1287.687 -  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1287.688 -  typedef basic_iostream<_CharT, _Traits>           _Base;
1287.689 -  typedef basic_filebuf<_CharT, _Traits>            _Buf;
1287.690 -
1287.691 -public:                         // Constructors, destructor.
1287.692 -  
1287.693 -  _STLP_DECLSPEC basic_fstream();
1287.694 -  explicit basic_fstream(const char* __s,
1287.695 -                         ios_base::openmode __mod = ios_base::in | ios_base::out) :
1287.696 -    basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() {
1287.697 -      this->init(&_M_buf);
1287.698 -      if (!_M_buf.open(__s, __mod))
1287.699 -	this->setstate(ios_base::failbit);
1287.700 -  }
1287.701 -
1287.702 -# ifndef _STLP_NO_EXTENSIONS
1287.703 -  explicit basic_fstream(int __id,
1287.704 -                         ios_base::openmode __mod = ios_base::in | ios_base::out) :
1287.705 -    basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() {
1287.706 -    this->init(&_M_buf);
1287.707 -    if (!_M_buf.open(__id, __mod))
1287.708 -      this->setstate(ios_base::failbit);
1287.709 -  }
1287.710 -  basic_fstream(const char* __s, ios_base::openmode __m, long __protection) : 
1287.711 -    basic_ios<_CharT, _Traits>(),  basic_iostream<_CharT, _Traits>(0), _M_buf() {
1287.712 -    this->init(&_M_buf);
1287.713 -    if (!_M_buf.open(__s, __m, __protection))
1287.714 -      this->setstate(ios_base::failbit);  
1287.715 -  }
1287.716 -# endif    
1287.717 -  _STLP_DECLSPEC ~basic_fstream();
1287.718 -
1287.719 -public:                         // File and buffer operations.
1287.720 -
1287.721 -  basic_filebuf<_CharT, _Traits>* rdbuf() const
1287.722 -    { return __CONST_CAST(_Buf*,&_M_buf); } 
1287.723 -
1287.724 -  bool is_open() {
1287.725 -    return this->rdbuf()->is_open();
1287.726 -  }
1287.727 -
1287.728 -  void open(const char* __s, 
1287.729 -	    ios_base::openmode __mod = 
1287.730 -	    ios_base::in | ios_base::out) {
1287.731 -    if (!this->rdbuf()->open(__s, __mod))
1287.732 -      this->setstate(ios_base::failbit);
1287.733 -  }
1287.734 -
1287.735 -  void close() {
1287.736 -    if (!this->rdbuf()->close())
1287.737 -      this->setstate(ios_base::failbit);
1287.738 -  }
1287.739 -
1287.740 -private:
1287.741 -  basic_filebuf<_CharT, _Traits> _M_buf;
1287.742 -};
1287.743 -
1287.744 -_STLP_END_NAMESPACE
1287.745 -
1287.746 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1287.747 -#  include <stl/_fstream.c>
1287.748 -# endif
1287.749 -
1287.750 -_STLP_BEGIN_NAMESPACE
1287.751 -
1287.752 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1287.753 -_STLP_EXPORT_TEMPLATE_CLASS basic_ifstream<char, char_traits<char> >;
1287.754 -_STLP_EXPORT_TEMPLATE_CLASS basic_ofstream<char, char_traits<char> >;
1287.755 -_STLP_EXPORT_TEMPLATE_CLASS basic_fstream<char, char_traits<char> >;
1287.756 -#  if ! defined (_STLP_NO_WCHAR_T)
1287.757 -_STLP_EXPORT_TEMPLATE_CLASS basic_ifstream<wchar_t, char_traits<wchar_t> >;
1287.758 -_STLP_EXPORT_TEMPLATE_CLASS basic_ofstream<wchar_t, char_traits<wchar_t> >;
1287.759 -_STLP_EXPORT_TEMPLATE_CLASS basic_fstream<wchar_t, char_traits<wchar_t> >;
1287.760 -#  endif
1287.761 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1287.762 -
1287.763 -_STLP_END_NAMESPACE
1287.764 -
1287.765 -#endif /* _STLP_FSTREAM */
1287.766 -
1287.767 -
1287.768 -// Local Variables:
1287.769 -// mode:C++
1287.770 -// End:
  1288.1 --- a/epoc32/include/stdapis/stlport/stl/_function.h	Tue Mar 16 16:12:26 2010 +0000
  1288.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1288.3 @@ -1,371 +0,0 @@
  1288.4 -/*
  1288.5 - *
  1288.6 - * Copyright (c) 1994
  1288.7 - * Hewlett-Packard Company
  1288.8 - *
  1288.9 - * Copyright (c) 1996-1998
 1288.10 - * Silicon Graphics Computer Systems, Inc.
 1288.11 - *
 1288.12 - * Copyright (c) 1997
 1288.13 - * Moscow Center for SPARC Technology
 1288.14 - *
 1288.15 - * Copyright (c) 1999 
 1288.16 - * Boris Fomitchev
 1288.17 - *
 1288.18 - * This material is provided "as is", with absolutely no warranty expressed
 1288.19 - * or implied. Any use is at your own risk.
 1288.20 - *
 1288.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1288.22 - * without fee, provided the above notices are retained on all copies.
 1288.23 - * Permission to modify the code and to distribute modified code is granted,
 1288.24 - * provided the above notices are retained, and a notice that the code was
 1288.25 - * modified is included with the above copyright notice.
 1288.26 - *
 1288.27 - */
 1288.28 -
 1288.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1288.30 - *   You should not attempt to use it directly.
 1288.31 - */
 1288.32 -
 1288.33 -#ifndef _STLP_INTERNAL_FUNCTION_H
 1288.34 -#define _STLP_INTERNAL_FUNCTION_H
 1288.35 -
 1288.36 -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H
 1288.37 -#include <stl/_function_base.h>
 1288.38 -#endif
 1288.39 -
 1288.40 -_STLP_BEGIN_NAMESPACE
 1288.41 -
 1288.42 -# ifndef _STLP_NO_EXTENSIONS
 1288.43 -// identity_element (not part of the C++ standard).
 1288.44 -template <class _Tp> inline _Tp identity_element(plus<_Tp>) {  return _Tp(0); }
 1288.45 -template <class _Tp> inline _Tp identity_element(multiplies<_Tp>) { return _Tp(1); }
 1288.46 -# endif
 1288.47 -
 1288.48 -#  if defined (_STLP_BASE_TYPEDEF_BUG)
 1288.49 -// this workaround is needed for SunPro 4.0.1
 1288.50 -// suggested by "Martin Abernethy" <gma@paston.co.uk>:
 1288.51 -
 1288.52 -// We have to introduce the XXary_predicate_aux structures in order to
 1288.53 -// access the argument and return types of predicate functions supplied
 1288.54 -// as type parameters. SUN C++ 4.0.1 compiler gives errors for template type parameters
 1288.55 -// of the form 'name1::name2', where name1 is itself a type parameter.
 1288.56 -template <class _Pair>
 1288.57 -struct __pair_aux : private _Pair
 1288.58 -{
 1288.59 -	typedef typename _Pair::first_type first_type;
 1288.60 -	typedef typename _Pair::second_type second_type;
 1288.61 -};
 1288.62 -
 1288.63 -template <class _Operation>
 1288.64 -struct __unary_fun_aux : private _Operation
 1288.65 -{
 1288.66 -	typedef typename _Operation::argument_type argument_type;
 1288.67 -	typedef typename _Operation::result_type result_type;
 1288.68 -};
 1288.69 -
 1288.70 -template <class _Operation>
 1288.71 -struct __binary_fun_aux  : private _Operation
 1288.72 -{
 1288.73 -	typedef typename _Operation::first_argument_type first_argument_type;
 1288.74 -	typedef typename _Operation::second_argument_type second_argument_type;
 1288.75 -	typedef typename _Operation::result_type result_type;
 1288.76 -};
 1288.77 -
 1288.78 -#  define __UNARY_ARG(__Operation,__type)  __unary_fun_aux<__Operation>::__type
 1288.79 -#  define __BINARY_ARG(__Operation,__type)  __binary_fun_aux<__Operation>::__type
 1288.80 -#  define __PAIR_ARG(__Pair,__type)  __pair_aux<__Pair>::__type
 1288.81 -# else
 1288.82 -#  define __UNARY_ARG(__Operation,__type)  __Operation::__type
 1288.83 -#  define __BINARY_ARG(__Operation,__type) __Operation::__type
 1288.84 -#  define __PAIR_ARG(__Pair,__type) __Pair::__type
 1288.85 -# endif
 1288.86 -
 1288.87 -template <class _Predicate>
 1288.88 -class unary_negate : 
 1288.89 -    public unary_function<typename __UNARY_ARG(_Predicate,argument_type), bool> {
 1288.90 -protected:
 1288.91 -  _Predicate _M_pred;
 1288.92 -public:
 1288.93 -  explicit unary_negate(const _Predicate& __x) : _M_pred(__x) {}
 1288.94 -  bool operator()(const typename _Predicate::argument_type& __x) const {
 1288.95 -    return !_M_pred(__x);
 1288.96 -  }
 1288.97 -};
 1288.98 -
 1288.99 -template <class _Predicate>
1288.100 -inline unary_negate<_Predicate> 
1288.101 -not1(const _Predicate& __pred)
1288.102 -{
1288.103 -  return unary_negate<_Predicate>(__pred);
1288.104 -}
1288.105 -
1288.106 -template <class _Predicate> 
1288.107 -class binary_negate 
1288.108 -    : public binary_function<typename __BINARY_ARG(_Predicate,first_argument_type),
1288.109 -			     typename __BINARY_ARG(_Predicate,second_argument_type), 
1288.110 -                             bool> {
1288.111 -protected:
1288.112 -  _Predicate _M_pred;
1288.113 -public:
1288.114 -  explicit binary_negate(const _Predicate& __x) : _M_pred(__x) {}
1288.115 -  bool operator()(const typename _Predicate::first_argument_type& __x, 
1288.116 -                  const typename _Predicate::second_argument_type& __y) const
1288.117 -  {
1288.118 -    return !_M_pred(__x, __y); 
1288.119 -  }
1288.120 -};
1288.121 -
1288.122 -template <class _Predicate>
1288.123 -inline binary_negate<_Predicate> 
1288.124 -not2(const _Predicate& __pred)
1288.125 -{
1288.126 -  return binary_negate<_Predicate>(__pred);
1288.127 -}
1288.128 -
1288.129 -template <class _Operation> 
1288.130 -class binder1st : 
1288.131 -    public unary_function<typename __BINARY_ARG(_Operation,second_argument_type),
1288.132 -                          typename __BINARY_ARG(_Operation,result_type) > {
1288.133 -protected:
1288.134 -  _Operation op;
1288.135 -  typename _Operation::first_argument_type value;
1288.136 -public:
1288.137 -  binder1st(const _Operation& __x,
1288.138 -            const typename _Operation::first_argument_type& __y)
1288.139 -      : op(__x), value(__y) {}
1288.140 -
1288.141 -  typename _Operation::result_type
1288.142 -  operator()(const typename _Operation::second_argument_type& __x) const {
1288.143 -    return op(value, __x); 
1288.144 -  }
1288.145 -
1288.146 -  typename _Operation::result_type
1288.147 -  operator()(typename _Operation::second_argument_type& __x) const {
1288.148 -    return op(value, __x); 
1288.149 -  }
1288.150 -};
1288.151 -
1288.152 -template <class _Operation, class _Tp>
1288.153 -inline binder1st<_Operation> 
1288.154 -bind1st(const _Operation& __fn, const _Tp& __x) 
1288.155 -{
1288.156 -  typedef typename _Operation::first_argument_type _Arg1_type;
1288.157 -  return binder1st<_Operation>(__fn, _Arg1_type(__x));
1288.158 -}
1288.159 -
1288.160 -template <class _Operation> 
1288.161 -class binder2nd
1288.162 -  : public unary_function<typename __BINARY_ARG(_Operation,first_argument_type),
1288.163 -                          typename __BINARY_ARG(_Operation,result_type)> {
1288.164 -protected:
1288.165 -  _Operation op;
1288.166 -  typename _Operation::second_argument_type value;
1288.167 -public:
1288.168 -  binder2nd(const _Operation& __x,
1288.169 -            const typename _Operation::second_argument_type& __y) 
1288.170 -      : op(__x), value(__y) {}
1288.171 -
1288.172 -  typename _Operation::result_type
1288.173 -  operator()(const typename _Operation::first_argument_type& __x) const {
1288.174 -    return op(__x, value); 
1288.175 -  }
1288.176 -
1288.177 -  typename _Operation::result_type
1288.178 -  operator()(typename _Operation::first_argument_type& __x) const {
1288.179 -    return op(__x, value); 
1288.180 -  }
1288.181 -};
1288.182 -
1288.183 -template <class _Operation, class _Tp>
1288.184 -inline binder2nd<_Operation> 
1288.185 -bind2nd(const _Operation& __fn, const _Tp& __x) 
1288.186 -{
1288.187 -  typedef typename _Operation::second_argument_type _Arg2_type;
1288.188 -  return binder2nd<_Operation>(__fn, _Arg2_type(__x));
1288.189 -}
1288.190 -
1288.191 -# ifndef _STLP_NO_EXTENSIONS
1288.192 -// unary_compose and binary_compose (extensions, not part of the standard).
1288.193 -
1288.194 -template <class _Operation1, class _Operation2>
1288.195 -class unary_compose : 
1288.196 -  public unary_function<typename __UNARY_ARG(_Operation2,argument_type),
1288.197 -                        typename __UNARY_ARG(_Operation1,result_type)> {
1288.198 -protected:
1288.199 -  _Operation1 _M_fn1;
1288.200 -  _Operation2 _M_fn2;
1288.201 -public:
1288.202 -  unary_compose(const _Operation1& __x, const _Operation2& __y) 
1288.203 -    : _M_fn1(__x), _M_fn2(__y) {}
1288.204 -
1288.205 -  typename _Operation1::result_type
1288.206 -  operator()(const typename _Operation2::argument_type& __x) const {
1288.207 -    return _M_fn1(_M_fn2(__x));
1288.208 -  }
1288.209 -
1288.210 -  typename _Operation1::result_type
1288.211 -  operator()(typename _Operation2::argument_type& __x) const {
1288.212 -    return _M_fn1(_M_fn2(__x));
1288.213 -  }
1288.214 -};
1288.215 -
1288.216 -template <class _Operation1, class _Operation2>
1288.217 -inline unary_compose<_Operation1,_Operation2> 
1288.218 -compose1(const _Operation1& __fn1, const _Operation2& __fn2)
1288.219 -{
1288.220 -  return unary_compose<_Operation1,_Operation2>(__fn1, __fn2);
1288.221 -}
1288.222 -
1288.223 -template <class _Operation1, class _Operation2, class _Operation3>
1288.224 -class binary_compose : 
1288.225 -    public unary_function<typename __UNARY_ARG(_Operation2,argument_type),
1288.226 -                          typename __BINARY_ARG(_Operation1,result_type)> {
1288.227 -protected:
1288.228 -  _Operation1 _M_fn1;
1288.229 -  _Operation2 _M_fn2;
1288.230 -  _Operation3 _M_fn3;
1288.231 -public:
1288.232 -  binary_compose(const _Operation1& __x, const _Operation2& __y, 
1288.233 -                 const _Operation3& __z) 
1288.234 -    : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { }
1288.235 -
1288.236 -  typename _Operation1::result_type
1288.237 -  operator()(const typename _Operation2::argument_type& __x) const {
1288.238 -    return _M_fn1(_M_fn2(__x), _M_fn3(__x));
1288.239 -  }
1288.240 -
1288.241 -  typename _Operation1::result_type
1288.242 -  operator()(typename _Operation2::argument_type& __x) const {
1288.243 -    return _M_fn1(_M_fn2(__x), _M_fn3(__x));
1288.244 -  }
1288.245 -};
1288.246 -
1288.247 -template <class _Operation1, class _Operation2, class _Operation3>
1288.248 -inline binary_compose<_Operation1, _Operation2, _Operation3> 
1288.249 -compose2(const _Operation1& __fn1, const _Operation2& __fn2, 
1288.250 -         const _Operation3& __fn3)
1288.251 -{
1288.252 -  return binary_compose<_Operation1,_Operation2,_Operation3>
1288.253 -    (__fn1, __fn2, __fn3);
1288.254 -}
1288.255 -
1288.256 -# endif /* _STLP_NO_EXTENSIONS */
1288.257 -
1288.258 -# ifndef _STLP_NO_EXTENSIONS
1288.259 -
1288.260 -// identity is an extension: it is not part of the standard.
1288.261 -template <class _Tp> struct identity : public _Identity<_Tp> {};
1288.262 -// select1st and select2nd are extensions: they are not part of the standard.
1288.263 -template <class _Pair> struct select1st : public _Select1st<_Pair> {};
1288.264 -template <class _Pair> struct select2nd : public _Select2nd<_Pair> {};
1288.265 -
1288.266 -template <class _Arg1, class _Arg2> 
1288.267 -struct project1st : public _Project1st<_Arg1, _Arg2> {};
1288.268 -
1288.269 -template <class _Arg1, class _Arg2>
1288.270 -struct project2nd : public _Project2nd<_Arg1, _Arg2> {};
1288.271 -
1288.272 -
1288.273 -// constant_void_fun, constant_unary_fun, and constant_binary_fun are
1288.274 -// extensions: they are not part of the standard.  (The same, of course,
1288.275 -// is true of the helper functions constant0, constant1, and constant2.)
1288.276 -
1288.277 -template <class _Result>
1288.278 -struct _Constant_void_fun {
1288.279 -  typedef _Result result_type;
1288.280 -  result_type _M_val;
1288.281 -
1288.282 -  _Constant_void_fun(const result_type& __v) : _M_val(__v) {}
1288.283 -  const result_type& operator()() const { return _M_val; }
1288.284 -};  
1288.285 -
1288.286 -
1288.287 -template <class _Result>
1288.288 -struct constant_void_fun : public _Constant_void_fun<_Result> {
1288.289 -  constant_void_fun(const _Result& __v) : _Constant_void_fun<_Result>(__v) {}
1288.290 -};  
1288.291 -
1288.292 -template <class _Result, __DFL_TMPL_PARAM( _Argument , _Result) >
1288.293 -struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument>
1288.294 -{
1288.295 -  constant_unary_fun(const _Result& __v)
1288.296 -    : _Constant_unary_fun<_Result, _Argument>(__v) {}
1288.297 -};
1288.298 -
1288.299 -template <class _Result, __DFL_TMPL_PARAM( _Arg1 , _Result), __DFL_TMPL_PARAM( _Arg2 , _Arg1) >
1288.300 -struct constant_binary_fun
1288.301 -  : public _Constant_binary_fun<_Result, _Arg1, _Arg2>
1288.302 -{
1288.303 -  constant_binary_fun(const _Result& __v)
1288.304 -    : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {}
1288.305 -};
1288.306 -
1288.307 -template <class _Result>
1288.308 -inline constant_void_fun<_Result> constant0(const _Result& __val)
1288.309 -{
1288.310 -  return constant_void_fun<_Result>(__val);
1288.311 -}
1288.312 -
1288.313 -template <class _Result>
1288.314 -inline constant_unary_fun<_Result,_Result> constant1(const _Result& __val)
1288.315 -{
1288.316 -  return constant_unary_fun<_Result,_Result>(__val);
1288.317 -}
1288.318 -
1288.319 -template <class _Result>
1288.320 -inline constant_binary_fun<_Result,_Result,_Result> 
1288.321 -constant2(const _Result& __val)
1288.322 -{
1288.323 -  return constant_binary_fun<_Result,_Result,_Result>(__val);
1288.324 -}
1288.325 -
1288.326 -// subtractive_rng is an extension: it is not part of the standard.
1288.327 -// Note: this code assumes that int is 32 bits.
1288.328 -class subtractive_rng : public unary_function<_STLP_UINT32_T, _STLP_UINT32_T> {
1288.329 -private:
1288.330 -  _STLP_UINT32_T _M_table[55];
1288.331 -  _STLP_UINT32_T _M_index1;
1288.332 -  _STLP_UINT32_T _M_index2;
1288.333 -public:
1288.334 -  _STLP_UINT32_T operator()(_STLP_UINT32_T __limit) {
1288.335 -    _M_index1 = (_M_index1 + 1) % 55;
1288.336 -    _M_index2 = (_M_index2 + 1) % 55;
1288.337 -    _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2];
1288.338 -    return _M_table[_M_index1] % __limit;
1288.339 -  }
1288.340 -
1288.341 -  void _M_initialize(_STLP_UINT32_T __seed)
1288.342 -  {
1288.343 -    _STLP_UINT32_T __k = 1;
1288.344 -    _M_table[54] = __seed;
1288.345 -    _STLP_UINT32_T __i;
1288.346 -    for (__i = 0; __i < 54; __i++) {
1288.347 -        _STLP_UINT32_T __ii = (21 * (__i + 1) % 55) - 1;
1288.348 -        _M_table[__ii] = __k;
1288.349 -        __k = __seed - __k;
1288.350 -        __seed = _M_table[__ii];
1288.351 -    }
1288.352 -    for (int __loop = 0; __loop < 4; __loop++) {
1288.353 -        for (__i = 0; __i < 55; __i++)
1288.354 -            _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55];
1288.355 -    }
1288.356 -    _M_index1 = 0;
1288.357 -    _M_index2 = 31;
1288.358 -  }
1288.359 -
1288.360 -  subtractive_rng(unsigned int __seed) { _M_initialize(__seed); }
1288.361 -  subtractive_rng() { _M_initialize(161803398ul); }
1288.362 -};
1288.363 -
1288.364 -# endif /* _STLP_NO_EXTENSIONS */
1288.365 -
1288.366 -_STLP_END_NAMESPACE
1288.367 -
1288.368 -#include <stl/_function_adaptors.h>
1288.369 -
1288.370 -#endif /* _STLP_INTERNAL_FUNCTION_H */
1288.371 -
1288.372 -// Local Variables:
1288.373 -// mode:C++
1288.374 -// End:
  1289.1 --- a/epoc32/include/stdapis/stlport/stl/_function_adaptors.h	Tue Mar 16 16:12:26 2010 +0000
  1289.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1289.3 @@ -1,802 +0,0 @@
  1289.4 -/*
  1289.5 - *
  1289.6 - * Copyright (c) 1994
  1289.7 - * Hewlett-Packard Company
  1289.8 - *
  1289.9 - * Copyright (c) 1996-1998
 1289.10 - * Silicon Graphics Computer Systems, Inc.
 1289.11 - *
 1289.12 - * Copyright (c) 1997
 1289.13 - * Moscow Center for SPARC Technology
 1289.14 - *
 1289.15 - * Copyright (c) 1999 
 1289.16 - * Boris Fomitchev
 1289.17 - *
 1289.18 - * Copyright (c) 2000
 1289.19 - * Pavel Kuznetsov
 1289.20 - *
 1289.21 - * Copyright (c) 2001
 1289.22 - * Meridian'93
 1289.23 - *
 1289.24 - * This material is provided "as is", with absolutely no warranty expressed
 1289.25 - * or implied. Any use is at your own risk.
 1289.26 - *
 1289.27 - * Permission to use or copy this software for any purpose is hereby granted 
 1289.28 - * without fee, provided the above notices are retained on all copies.
 1289.29 - * Permission to modify the code and to distribute modified code is granted,
 1289.30 - * provided the above notices are retained, and a notice that the code was
 1289.31 - * modified is included with the above copyright notice.
 1289.32 - *
 1289.33 - */
 1289.34 -
 1289.35 -/* NOTE: This is an internal header file, included by other STL headers.
 1289.36 - *   You should not attempt to use it directly.
 1289.37 - */
 1289.38 -
 1289.39 -// This file has noo macro protection as it is meant to be included several times
 1289.40 -// from other header.
 1289.41 -// Adaptor function objects: pointers to member functions.
 1289.42 -
 1289.43 -// There are a total of 16 = 2^4 function objects in this family.
 1289.44 -//  (1) Member functions taking no arguments vs member functions taking
 1289.45 -//       one argument.
 1289.46 -//  (2) Call through pointer vs call through reference.
 1289.47 -//  (3) Member function with void return type vs member function with
 1289.48 -//      non-void return type.
 1289.49 -//  (4) Const vs non-const member function.
 1289.50 -
 1289.51 -// Note that choice (3) is nothing more than a workaround: according
 1289.52 -//  to the draft, compilers should handle void and non-void the same way.
 1289.53 -//  This feature is not yet widely implemented, though.  You can only use
 1289.54 -//  member functions returning void if your compiler supports partial
 1289.55 -//  specialization.
 1289.56 -
 1289.57 -// All of this complexity is in the function objects themselves.  You can
 1289.58 -//  ignore it by using the helper function mem_fun and mem_fun_ref,
 1289.59 -//  which create whichever type of adaptor is appropriate.
 1289.60 -
 1289.61 -_STLP_BEGIN_NAMESPACE
 1289.62 -
 1289.63 -//This implementation will only be used if needed, that is to say when there is the return void bug
 1289.64 -//and when there is no partial template specialization
 1289.65 -#if defined(_STLP_DONT_RETURN_VOID) && defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined(_STLP_MEMBER_TEMPLATE_CLASSES)
 1289.66 -
 1289.67 -template<class _Result, class _Tp>
 1289.68 -class _Mem_fun0_ptr : public unary_function<_Tp*, _Result> {
 1289.69 -protected:
 1289.70 -  typedef _Result (_Tp::*__fun_type) ();
 1289.71 -  explicit _Mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
 1289.72 -
 1289.73 -public:
 1289.74 -  _Result operator ()(_Tp* __p) const { return (__p->*_M_f)(); }
 1289.75 -
 1289.76 -private:
 1289.77 -  __fun_type _M_f;
 1289.78 -};
 1289.79 -
 1289.80 -template<class _Result, class _Tp, class _Arg>
 1289.81 -class _Mem_fun1_ptr : public binary_function<_Tp*,_Arg,_Result> {
 1289.82 -protected:
 1289.83 -  typedef _Result (_Tp::*__fun_type) (_Arg);
 1289.84 -  explicit _Mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
 1289.85 -
 1289.86 -public:
 1289.87 -  _Result operator ()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); }
 1289.88 -
 1289.89 -private:
 1289.90 -  __fun_type _M_f;
 1289.91 -};
 1289.92 -
 1289.93 -template<class _Result, class _Tp>
 1289.94 -class _Const_mem_fun0_ptr : public unary_function<const _Tp*,_Result> {
 1289.95 -protected:
 1289.96 -  typedef _Result (_Tp::*__fun_type) () const;
 1289.97 -  explicit _Const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
 1289.98 -
 1289.99 -public:
1289.100 -  _Result operator ()(const _Tp* __p) const { return (__p->*_M_f)(); }
1289.101 -
1289.102 -private:
1289.103 -  __fun_type _M_f;
1289.104 -};
1289.105 -
1289.106 -template<class _Result, class _Tp, class _Arg>
1289.107 -class _Const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,_Result> {
1289.108 -protected:
1289.109 -  typedef _Result (_Tp::*__fun_type) (_Arg) const;
1289.110 -  explicit _Const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
1289.111 -
1289.112 -public:
1289.113 -  _Result operator ()(const _Tp* __p, _Arg __x) const {
1289.114 -    return (__p->*_M_f)(__x); }
1289.115 -
1289.116 -private:
1289.117 -  __fun_type _M_f;
1289.118 -};
1289.119 -
1289.120 -template<class _Result, class _Tp>
1289.121 -class _Mem_fun0_ref : public unary_function<_Tp&,_Result> {
1289.122 -protected:
1289.123 -  typedef _Result (_Tp::*__fun_type) ();
1289.124 -  explicit _Mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1289.125 -
1289.126 -public:
1289.127 -  _Result operator ()(_Tp& __p) const { return (__p.*_M_f)(); }
1289.128 -
1289.129 -private:
1289.130 -  __fun_type _M_f;
1289.131 -};
1289.132 -
1289.133 -template<class _Result, class _Tp, class _Arg>
1289.134 -class _Mem_fun1_ref : public binary_function<_Tp&,_Arg,_Result> {
1289.135 -protected:
1289.136 -  typedef _Result (_Tp::*__fun_type) (_Arg);
1289.137 -  explicit _Mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1289.138 -
1289.139 -public:
1289.140 -  _Result operator ()(_Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); }
1289.141 -
1289.142 -private:
1289.143 -  __fun_type _M_f;
1289.144 -};
1289.145 -
1289.146 -template<class _Result, class _Tp>
1289.147 -class _Const_mem_fun0_ref : public unary_function<const _Tp&,_Result> {
1289.148 -protected:
1289.149 -  typedef _Result (_Tp::*__fun_type) () const;
1289.150 -  explicit _Const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1289.151 -
1289.152 -public:
1289.153 -  _Result operator ()(const _Tp& __p) const { return (__p.*_M_f)(); }
1289.154 -
1289.155 -private:
1289.156 -  __fun_type _M_f;
1289.157 -};
1289.158 -
1289.159 -template<class _Result, class _Tp, class _Arg>
1289.160 -class _Const_mem_fun1_ref : public binary_function<const _Tp&,_Arg,_Result> {
1289.161 -protected:
1289.162 -  typedef _Result (_Tp::*__fun_type) (_Arg) const;
1289.163 -  explicit _Const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1289.164 -
1289.165 -public:
1289.166 -  _Result operator ()(const _Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); }
1289.167 -
1289.168 -private:
1289.169 -  __fun_type _M_f;
1289.170 -};
1289.171 -
1289.172 -template<class _Result> 
1289.173 -struct _Mem_fun_traits {
1289.174 -  template<class _Tp> 
1289.175 -  struct _Args0 {
1289.176 -    typedef _Mem_fun0_ptr<_Result,_Tp>            _Ptr;
1289.177 -    typedef _Const_mem_fun0_ptr<_Result,_Tp>      _Ptr_const;
1289.178 -    typedef _Mem_fun0_ref<_Result,_Tp>            _Ref;
1289.179 -    typedef _Const_mem_fun0_ref<_Result,_Tp>      _Ref_const;
1289.180 -  };
1289.181 -
1289.182 -  template<class _Tp, class _Arg>
1289.183 -  struct _Args1 {
1289.184 -    typedef _Mem_fun1_ptr<_Result,_Tp,_Arg>       _Ptr;
1289.185 -    typedef _Const_mem_fun1_ptr<_Result,_Tp,_Arg> _Ptr_const;
1289.186 -    typedef _Mem_fun1_ref<_Result,_Tp,_Arg>       _Ref;
1289.187 -    typedef _Const_mem_fun1_ref<_Result,_Tp,_Arg> _Ref_const;
1289.188 -  };
1289.189 -};
1289.190 -
1289.191 -template<class _Arg, class _Result>
1289.192 -class _Ptr_fun1_base : public unary_function<_Arg, _Result> {
1289.193 -protected:
1289.194 -  typedef _Result (*__fun_type) (_Arg);
1289.195 -  explicit _Ptr_fun1_base(__fun_type __f) : _M_f(__f) {}
1289.196 -
1289.197 -public:
1289.198 -  _Result operator()(_Arg __x) const { return _M_f(__x); }
1289.199 -
1289.200 -private:
1289.201 -  __fun_type _M_f;
1289.202 -};
1289.203 -
1289.204 -template <class _Arg1, class _Arg2, class _Result>
1289.205 -class _Ptr_fun2_base : public binary_function<_Arg1,_Arg2,_Result> {
1289.206 -protected:
1289.207 -  typedef _Result (*__fun_type) (_Arg1, _Arg2);
1289.208 -  explicit _Ptr_fun2_base(__fun_type __f) : _M_f(__f) {}
1289.209 -
1289.210 -public:
1289.211 -  _Result operator()(_Arg1 __x, _Arg2 __y) const { return _M_f(__x, __y); }
1289.212 -
1289.213 -private:
1289.214 -  __fun_type _M_f;
1289.215 -};
1289.216 -
1289.217 -template<class _Result> 
1289.218 -struct _Ptr_fun_traits {
1289.219 -  template<class _Arg> struct _Args1 {
1289.220 -    typedef _Ptr_fun1_base<_Arg,_Result> _Fun;
1289.221 -  };
1289.222 -
1289.223 -  template<class _Arg1, class _Arg2> struct _Args2 {
1289.224 -    typedef _Ptr_fun2_base<_Arg1,_Arg2,_Result> _Fun;
1289.225 -  };
1289.226 -};
1289.227 -
1289.228 -/*Specialization for void return type
1289.229 -*/
1289.230 -template<class _Tp>
1289.231 -class _Void_mem_fun0_ptr : public unary_function<_Tp*,void> {
1289.232 -protected:
1289.233 -  typedef void (_Tp::*__fun_type) ();
1289.234 -  explicit _Void_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
1289.235 -
1289.236 -public:
1289.237 -  void operator ()(_Tp* __p) const { (__p->*_M_f)(); }
1289.238 -
1289.239 -private:
1289.240 -  __fun_type _M_f;
1289.241 -};
1289.242 -
1289.243 -template<class _Tp, class _Arg>
1289.244 -class _Void_mem_fun1_ptr : public binary_function<_Tp*,_Arg,void> {
1289.245 -protected:
1289.246 -  typedef void (_Tp::*__fun_type) (_Arg);
1289.247 -  explicit _Void_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
1289.248 -
1289.249 -public:
1289.250 -  void operator ()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1289.251 -
1289.252 -private:
1289.253 -  __fun_type _M_f;
1289.254 -};
1289.255 -
1289.256 -template<class _Tp>
1289.257 -class _Void_const_mem_fun0_ptr : public unary_function<const _Tp*,void> {
1289.258 -protected:
1289.259 -  typedef void (_Tp::*__fun_type) () const;
1289.260 -  explicit _Void_const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
1289.261 -
1289.262 -public:
1289.263 -  void operator ()(const _Tp* __p) const { (__p->*_M_f)(); }
1289.264 -
1289.265 -private:
1289.266 -  __fun_type _M_f;
1289.267 -};
1289.268 -
1289.269 -template<class _Tp, class _Arg>
1289.270 -class _Void_const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,void> {
1289.271 -protected:
1289.272 -  typedef void (_Tp::*__fun_type) (_Arg) const;
1289.273 -  explicit _Void_const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
1289.274 -
1289.275 -public:
1289.276 -  void operator ()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1289.277 -
1289.278 -private:
1289.279 -  __fun_type _M_f;
1289.280 -};
1289.281 -
1289.282 -template<class _Tp>
1289.283 -class _Void_mem_fun0_ref : public unary_function<_Tp&,void> {
1289.284 -protected:
1289.285 -  typedef void (_Tp::*__fun_type) ();
1289.286 -  explicit _Void_mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1289.287 -
1289.288 -public:
1289.289 -  void operator ()(_Tp& __p) const { (__p.*_M_f)(); }
1289.290 -
1289.291 -private:
1289.292 -  __fun_type _M_f;
1289.293 -};
1289.294 -
1289.295 -template<class _Tp, class _Arg>
1289.296 -class _Void_mem_fun1_ref : public binary_function<_Tp&,_Arg,void> {
1289.297 -protected:
1289.298 -  typedef void (_Tp::*__fun_type) (_Arg);
1289.299 -  explicit _Void_mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1289.300 -
1289.301 -public:
1289.302 -  void operator ()(_Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); }
1289.303 -
1289.304 -private:
1289.305 -  __fun_type _M_f;
1289.306 -};
1289.307 -
1289.308 -template<class _Tp>
1289.309 -class _Void_const_mem_fun0_ref : public unary_function<const _Tp&,void> {
1289.310 -protected:
1289.311 -  typedef void (_Tp::*__fun_type) () const;
1289.312 -  explicit _Void_const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1289.313 -
1289.314 -public:
1289.315 -  void operator ()(const _Tp& __p) const { (__p.*_M_f)(); }
1289.316 -
1289.317 -private:
1289.318 -  __fun_type _M_f;
1289.319 -};
1289.320 -
1289.321 -template<class _Tp, class _Arg>
1289.322 -class _Void_const_mem_fun1_ref : public binary_function<const _Tp&,_Arg,void> {
1289.323 -protected:
1289.324 -  typedef void (_Tp::*__fun_type) (_Arg) const;
1289.325 -  explicit _Void_const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1289.326 -
1289.327 -public:
1289.328 -  void operator ()(const _Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); }
1289.329 -
1289.330 -private:
1289.331 -  __fun_type _M_f;
1289.332 -};
1289.333 -
1289.334 -_STLP_TEMPLATE_NULL
1289.335 -struct _Mem_fun_traits<void> {
1289.336 -  template<class _Tp> struct _Args0 {
1289.337 -    typedef _Void_mem_fun0_ptr<_Tp>             _Ptr;
1289.338 -    typedef _Void_const_mem_fun0_ptr<_Tp>       _Ptr_const;
1289.339 -    typedef _Void_mem_fun0_ref<_Tp>             _Ref;
1289.340 -    typedef _Void_const_mem_fun0_ref<_Tp>       _Ref_const;
1289.341 -  };
1289.342 -
1289.343 -  template<class _Tp, class _Arg> struct _Args1 {
1289.344 -    typedef _Void_mem_fun1_ptr<_Tp,_Arg>        _Ptr;
1289.345 -    typedef _Void_const_mem_fun1_ptr<_Tp,_Arg>  _Ptr_const;
1289.346 -    typedef _Void_mem_fun1_ref<_Tp,_Arg>        _Ref;
1289.347 -    typedef _Void_const_mem_fun1_ref<_Tp,_Arg>  _Ref_const;
1289.348 -  };
1289.349 -};
1289.350 -
1289.351 -template<class _Arg>
1289.352 -class _Ptr_void_fun1_base : public unary_function<_Arg, void> {
1289.353 -protected:
1289.354 -  typedef void (*__fun_type) (_Arg);
1289.355 -  explicit _Ptr_void_fun1_base(__fun_type __f) : _M_f(__f) {}
1289.356 -
1289.357 -public:
1289.358 -  void operator()(_Arg __x) const { _M_f(__x); }
1289.359 -
1289.360 -private:
1289.361 -  __fun_type _M_f;
1289.362 -};
1289.363 -
1289.364 -template <class _Arg1, class _Arg2>
1289.365 -class _Ptr_void_fun2_base : public binary_function<_Arg1,_Arg2,void> {
1289.366 -protected:
1289.367 -  typedef void (*__fun_type) (_Arg1, _Arg2);
1289.368 -  explicit _Ptr_void_fun2_base(__fun_type __f) : _M_f(__f) {}
1289.369 -
1289.370 -public:
1289.371 -  void operator()(_Arg1 __x, _Arg2 __y) const { _M_f(__x, __y); }
1289.372 -
1289.373 -private:
1289.374 -  __fun_type _M_f;
1289.375 -};
1289.376 -
1289.377 -_STLP_TEMPLATE_NULL
1289.378 -struct _Ptr_fun_traits<void> {
1289.379 -  template<class _Arg> struct _Args1 {
1289.380 -    typedef _Ptr_void_fun1_base<_Arg> _Fun;
1289.381 -  };
1289.382 -  
1289.383 -  template<class _Arg1, class _Arg2> struct _Args2 {
1289.384 -    typedef _Ptr_void_fun2_base<_Arg1,_Arg2> _Fun;
1289.385 -  };
1289.386 -};
1289.387 -
1289.388 -// pavel: need extra level of inheritance here since MSVC++ does not
1289.389 -// accept traits-based fake partial specialization for template
1289.390 -// arguments other than first
1289.391 -
1289.392 -template<class _Result, class _Arg>
1289.393 -class _Ptr_fun1 : 
1289.394 -  public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun {
1289.395 -protected:
1289.396 -  typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun _Base;
1289.397 -  explicit _Ptr_fun1(typename _Base::__fun_type __f) : _Base(__f) {}
1289.398 -};
1289.399 -
1289.400 -template<class _Result, class _Arg1, class _Arg2>
1289.401 -class _Ptr_fun2 : 
1289.402 -  public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun {
1289.403 -protected:
1289.404 -  typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun _Base;
1289.405 -  explicit _Ptr_fun2(typename _Base::__fun_type __f) : _Base(__f) {}
1289.406 -};
1289.407 -
1289.408 -
1289.409 -#endif /*_STLP_DONT_RETURN_VOID && _STLP_NO_CLASS_PARTIAL_SPECIALIZATION && _STLP_MEMBER_TEMPLATE_CLASSES*/
1289.410 -
1289.411 -
1289.412 -#if !defined(_STLP_DONT_RETURN_VOID) || !defined(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) || !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1289.413 -
1289.414 -template <class _Ret, class _Tp>
1289.415 -class mem_fun_t : public unary_function<_Tp*,_Ret> {
1289.416 -  typedef _Ret (_Tp::*__fun_type)(void);
1289.417 -public:
1289.418 -  explicit mem_fun_t(__fun_type __pf) : _M_f(__pf) {}
1289.419 -  _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); }
1289.420 -private:
1289.421 -  __fun_type _M_f;
1289.422 -};
1289.423 -
1289.424 -template <class _Ret, class _Tp>
1289.425 -class const_mem_fun_t : public unary_function<const _Tp*,_Ret> {
1289.426 -  typedef _Ret (_Tp::*__fun_type)(void) const;
1289.427 -public:
1289.428 -  explicit const_mem_fun_t(__fun_type __pf) : _M_f(__pf) {}
1289.429 -  _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); }
1289.430 -private:
1289.431 -  __fun_type _M_f;
1289.432 -};
1289.433 -
1289.434 -
1289.435 -template <class _Ret, class _Tp>
1289.436 -class mem_fun_ref_t : public unary_function<_Tp,_Ret> {
1289.437 -  typedef _Ret (_Tp::*__fun_type)(void);
1289.438 -public:
1289.439 -  explicit mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {}
1289.440 -  _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); }
1289.441 -private:
1289.442 -  __fun_type _M_f;
1289.443 -};
1289.444 -
1289.445 -template <class _Ret, class _Tp>
1289.446 -class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> {
1289.447 -  typedef _Ret (_Tp::*__fun_type)(void) const;
1289.448 -public:
1289.449 -  explicit const_mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {}
1289.450 -  _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); }
1289.451 -private:
1289.452 -  __fun_type _M_f;
1289.453 -};
1289.454 -
1289.455 -template <class _Ret, class _Tp, class _Arg>
1289.456 -class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> {
1289.457 -  typedef _Ret (_Tp::*__fun_type)(_Arg);
1289.458 -public:
1289.459 -  explicit mem_fun1_t(__fun_type __pf) : _M_f(__pf) {}
1289.460 -  _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); }
1289.461 -private:
1289.462 -  __fun_type _M_f;
1289.463 -};
1289.464 -
1289.465 -template <class _Ret, class _Tp, class _Arg>
1289.466 -class const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> {
1289.467 -  typedef _Ret (_Tp::*__fun_type)(_Arg) const;
1289.468 -public:
1289.469 -  explicit const_mem_fun1_t(__fun_type __pf) : _M_f(__pf) {}
1289.470 -  _Ret operator()(const _Tp* __p, _Arg __x) const
1289.471 -    { return (__p->*_M_f)(__x); }
1289.472 -private:
1289.473 -  __fun_type _M_f;
1289.474 -};
1289.475 -
1289.476 -template <class _Ret, class _Tp, class _Arg>
1289.477 -class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
1289.478 -  typedef _Ret (_Tp::*__fun_type)(_Arg);
1289.479 -public:
1289.480 -  explicit mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {}
1289.481 -  _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }
1289.482 -private:
1289.483 -  __fun_type _M_f;
1289.484 -};
1289.485 -
1289.486 -template <class _Ret, class _Tp, class _Arg>
1289.487 -class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
1289.488 -  typedef _Ret (_Tp::*__fun_type)(_Arg) const;
1289.489 -public:
1289.490 -  explicit const_mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {}
1289.491 -  _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }
1289.492 -private:
1289.493 -  __fun_type _M_f;
1289.494 -};
1289.495 -
1289.496 -template <class _Arg, class _Result>
1289.497 -class pointer_to_unary_function : public unary_function<_Arg, _Result> {
1289.498 -protected:
1289.499 -  _Result (*_M_ptr)(_Arg);
1289.500 -public:
1289.501 -  pointer_to_unary_function() {}
1289.502 -  explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {}
1289.503 -  _Result operator()(_Arg __x) const { return _M_ptr(__x); }
1289.504 -};
1289.505 -
1289.506 -template <class _Arg1, class _Arg2, class _Result>
1289.507 -class pointer_to_binary_function : 
1289.508 -  public binary_function<_Arg1,_Arg2,_Result> {
1289.509 -protected:
1289.510 -    _Result (*_M_ptr)(_Arg1, _Arg2);
1289.511 -public:
1289.512 -    pointer_to_binary_function() {}
1289.513 -    explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 
1289.514 -      : _M_ptr(__x) {}
1289.515 -    _Result operator()(_Arg1 __x, _Arg2 __y) const {
1289.516 -      return _M_ptr(__x, __y);
1289.517 -    }
1289.518 -};
1289.519 -
1289.520 -
1289.521 -#if defined(_STLP_DONT_RETURN_VOID) && !defined(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION)
1289.522 -//Partial specialization for the void type
1289.523 -template <class _Tp>
1289.524 -class mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> {
1289.525 -  typedef void (_Tp::*__fun_type)(void);
1289.526 -public:
1289.527 -  explicit mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1289.528 -  void operator()(_Tp* __p) const { (__p->*_M_f)(); }
1289.529 -private:
1289.530 -  __fun_type _M_f;
1289.531 -};
1289.532 -
1289.533 -template <class _Tp>
1289.534 -class const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> {
1289.535 -  typedef void (_Tp::*__fun_type)(void) const;
1289.536 -public:
1289.537 -  explicit const_mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1289.538 -  void operator()(const _Tp* __p) const { (__p->*_M_f)(); }
1289.539 -private:
1289.540 -  __fun_type _M_f;
1289.541 -};
1289.542 -
1289.543 -template <class _Tp>
1289.544 -class mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
1289.545 -  typedef void (_Tp::*__fun_type)(void);
1289.546 -public:
1289.547 -  explicit mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1289.548 -  void operator()(_Tp& __r) const { (__r.*_M_f)(); }
1289.549 -private:
1289.550 -  __fun_type _M_f;
1289.551 -};
1289.552 -
1289.553 -template <class _Tp>
1289.554 -class const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
1289.555 -  typedef void (_Tp::*__fun_type)(void) const;
1289.556 -public:
1289.557 -  explicit const_mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1289.558 -  void operator()(const _Tp& __r) const { (__r.*_M_f)(); }
1289.559 -private:
1289.560 -  __fun_type _M_f;
1289.561 -};
1289.562 -
1289.563 -template <class _Tp, class _Arg>
1289.564 -class mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> {
1289.565 -  typedef void (_Tp::*__fun_type)(_Arg);
1289.566 -public:
1289.567 -  explicit mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1289.568 -  void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1289.569 -private:
1289.570 -  __fun_type _M_f;
1289.571 -};
1289.572 -
1289.573 -template <class _Tp, class _Arg>
1289.574 -class const_mem_fun1_t<void, _Tp, _Arg> 
1289.575 -  : public binary_function<const _Tp*,_Arg,void> {
1289.576 -  typedef void (_Tp::*__fun_type)(_Arg) const;
1289.577 -public:
1289.578 -  explicit const_mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1289.579 -  void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1289.580 -private:
1289.581 -  __fun_type _M_f;
1289.582 -};
1289.583 -
1289.584 -template <class _Tp, class _Arg>
1289.585 -class mem_fun1_ref_t<void, _Tp, _Arg>
1289.586 -  : public binary_function<_Tp,_Arg,void> {
1289.587 -  typedef void (_Tp::*__fun_type)(_Arg);
1289.588 -public:
1289.589 -  explicit mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1289.590 -  void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }
1289.591 -private:
1289.592 -  __fun_type _M_f;
1289.593 -};
1289.594 -
1289.595 -template <class _Tp, class _Arg>
1289.596 -class const_mem_fun1_ref_t<void, _Tp, _Arg>
1289.597 -  : public binary_function<_Tp,_Arg,void> {
1289.598 -  typedef void (_Tp::*__fun_type)(_Arg) const;
1289.599 -public:
1289.600 -  explicit const_mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1289.601 -  void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }
1289.602 -private:
1289.603 -  __fun_type _M_f;
1289.604 -};
1289.605 -
1289.606 -template <class _Arg>
1289.607 -class pointer_to_unary_function : public unary_function<_Arg, void> {
1289.608 -  typedef void (*__fun_type)(_Arg);
1289.609 -  __fun_type _M_ptr;
1289.610 -public:
1289.611 -  pointer_to_unary_function() {}
1289.612 -  explicit pointer_to_unary_function(__fun_type __x) : _M_ptr(__x) {}
1289.613 -  void operator()(_Arg __x) const { _M_ptr(__x); }
1289.614 -};
1289.615 -
1289.616 -template <class _Arg1, class _Arg2>
1289.617 -class pointer_to_binary_function : public binary_function<_Arg1,_Arg2,void> {
1289.618 -  typedef void (*__fun_type)(_Arg1, _Arg2);
1289.619 -  __fun_type _M_ptr;
1289.620 -public:
1289.621 -  pointer_to_binary_function() {}
1289.622 -  explicit pointer_to_binary_function(__fun_type __x) : _M_ptr(__x) {}
1289.623 -  void operator()(_Arg1 __x, _Arg2 __y) const { _M_ptr(__x, __y); }
1289.624 -};
1289.625 -
1289.626 -#endif /*_STLP_DONT_RETURN_VOID && !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION*/
1289.627 -
1289.628 -#else /*!_STLP_DONT_RETURN_VOID || !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION || !_STLP_MEMBER_TEMPLATE_CLASSES*/
1289.629 -
1289.630 -//mem_fun_t
1289.631 -template <class _Result, class _Tp>
1289.632 -class mem_fun_t : 
1289.633 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr {
1289.634 -  typedef typename
1289.635 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr _Base;
1289.636 -public:
1289.637 -  explicit mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.638 -};
1289.639 -
1289.640 -//const_mem_fun_t
1289.641 -template <class _Result, class _Tp>
1289.642 -class const_mem_fun_t : 
1289.643 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const {
1289.644 -  typedef typename
1289.645 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const _Base;
1289.646 -public:
1289.647 -  explicit const_mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.648 -};
1289.649 -
1289.650 -//mem_fun_ref_t
1289.651 -template <class _Result, class _Tp>
1289.652 -class mem_fun_ref_t :
1289.653 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref {
1289.654 -  typedef typename
1289.655 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref _Base;
1289.656 -public:
1289.657 -  explicit mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.658 -};
1289.659 -
1289.660 -//const_mem_fun_ref_t
1289.661 -template <class _Result, class _Tp>
1289.662 -class const_mem_fun_ref_t :
1289.663 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const {
1289.664 -  typedef typename
1289.665 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const _Base;
1289.666 -public:
1289.667 -  explicit const_mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.668 -};
1289.669 -
1289.670 -//mem_fun1_t
1289.671 -template <class _Result, class _Tp, class _Arg>
1289.672 -class mem_fun1_t :
1289.673 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr {
1289.674 -  typedef typename
1289.675 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr _Base;
1289.676 -public:
1289.677 -  explicit mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.678 -};
1289.679 -
1289.680 -//const_mem_fun1_t
1289.681 -template <class _Result, class _Tp, class _Arg>
1289.682 -class const_mem_fun1_t :
1289.683 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const {
1289.684 -  typedef typename
1289.685 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const _Base;
1289.686 -public:
1289.687 -  explicit const_mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.688 -};
1289.689 -
1289.690 -//mem_fun1_ref_t
1289.691 -template <class _Result, class _Tp, class _Arg>
1289.692 -class mem_fun1_ref_t :
1289.693 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref {
1289.694 -  typedef typename
1289.695 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref _Base;
1289.696 -public:
1289.697 -  explicit mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.698 -};
1289.699 -
1289.700 -//const_mem_fun1_t
1289.701 -template <class _Result, class _Tp, class _Arg>
1289.702 -class const_mem_fun1_ref_t :
1289.703 -  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const {
1289.704 -  typedef typename
1289.705 -    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const _Base;
1289.706 -public:
1289.707 -  explicit const_mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1289.708 -};
1289.709 -
1289.710 -
1289.711 -template <class _Arg, class _Result>
1289.712 -class pointer_to_unary_function :
1289.713 -public _Ptr_fun1<_Result,_Arg> {
1289.714 -  typedef typename 
1289.715 -    _Ptr_fun1<_Result,_Arg>::__fun_type __fun_type;
1289.716 -public:
1289.717 -  explicit pointer_to_unary_function(__fun_type __f)
1289.718 -    : _Ptr_fun1<_Result,_Arg>(__f) {}
1289.719 -};
1289.720 -
1289.721 -template <class _Arg1, class _Arg2, class _Result>
1289.722 -class pointer_to_binary_function :
1289.723 -public _Ptr_fun2<_Result,_Arg1,_Arg2> {
1289.724 -  typedef typename
1289.725 -    _Ptr_fun2<_Result,_Arg1,_Arg2>::__fun_type __fun_type;
1289.726 -public:
1289.727 -  explicit pointer_to_binary_function(__fun_type __f)
1289.728 -    : _Ptr_fun2<_Result,_Arg1,_Arg2>(__f) {}
1289.729 -};
1289.730 -
1289.731 -#endif /*!_STLP_DONT_RETURN_VOID || !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION || !_STLP_MEMBER_TEMPLATE_CLASSES*/
1289.732 -
1289.733 -
1289.734 -# if !defined (_STLP_MEMBER_POINTER_PARAM_BUG)
1289.735 -// Mem_fun adaptor helper functions.  There are only two:
1289.736 -//  mem_fun and mem_fun_ref.  (mem_fun1 and mem_fun1_ref 
1289.737 -//  are provided for backward compatibility, but they are no longer
1289.738 -//  part of the C++ standard.)
1289.739 -
1289.740 -template <class _Result, class _Tp>
1289.741 -inline mem_fun_t<_Result,_Tp> 
1289.742 -mem_fun(_Result (_Tp::*__f)()) { return mem_fun_t<_Result,_Tp>(__f); }
1289.743 -
1289.744 -template <class _Result, class _Tp>
1289.745 -inline const_mem_fun_t<_Result,_Tp> 
1289.746 -mem_fun(_Result (_Tp::*__f)() const)  { return const_mem_fun_t<_Result,_Tp>(__f); }
1289.747 -
1289.748 -template <class _Result, class _Tp>
1289.749 -inline mem_fun_ref_t<_Result,_Tp> 
1289.750 -mem_fun_ref(_Result (_Tp::*__f)())  { return mem_fun_ref_t<_Result,_Tp>(__f); }
1289.751 -
1289.752 -template <class _Result, class _Tp>
1289.753 -inline const_mem_fun_ref_t<_Result,_Tp> 
1289.754 -mem_fun_ref(_Result (_Tp::*__f)() const)  { return const_mem_fun_ref_t<_Result,_Tp>(__f); }
1289.755 -
1289.756 -template <class _Result, class _Tp, class _Arg>
1289.757 -inline mem_fun1_t<_Result,_Tp,_Arg> 
1289.758 -mem_fun(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1289.759 -
1289.760 -template <class _Result, class _Tp, class _Arg>
1289.761 -inline const_mem_fun1_t<_Result,_Tp,_Arg> 
1289.762 -mem_fun(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1289.763 -
1289.764 -template <class _Result, class _Tp, class _Arg>
1289.765 -inline mem_fun1_ref_t<_Result,_Tp,_Arg> 
1289.766 -mem_fun_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1289.767 -
1289.768 -template <class _Result, class _Tp, class _Arg>
1289.769 -inline const_mem_fun1_ref_t<_Result,_Tp,_Arg>
1289.770 -mem_fun_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1289.771 -
1289.772 -# if !(defined (_STLP_NO_EXTENSIONS) || defined (_STLP_NO_ANACHRONISMS))
1289.773 -//  mem_fun1 and mem_fun1_ref are no longer part of the C++ standard,
1289.774 -//  but they are provided for backward compatibility.
1289.775 -template <class _Result, class _Tp, class _Arg>
1289.776 -inline mem_fun1_t<_Result,_Tp,_Arg> 
1289.777 -mem_fun1(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1289.778 -
1289.779 -template <class _Result, class _Tp, class _Arg>
1289.780 -inline const_mem_fun1_t<_Result,_Tp,_Arg> 
1289.781 -mem_fun1(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1289.782 -
1289.783 -template <class _Result, class _Tp, class _Arg>
1289.784 -inline mem_fun1_ref_t<_Result,_Tp,_Arg> 
1289.785 -mem_fun1_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1289.786 -
1289.787 -template <class _Result, class _Tp, class _Arg>
1289.788 -inline const_mem_fun1_ref_t<_Result,_Tp,_Arg>
1289.789 -mem_fun1_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1289.790 -
1289.791 -# endif /* _STLP_NO_EXTENSIONS */
1289.792 -
1289.793 -# endif /* _STLP_MEMBER_POINTER_PARAM_BUG */
1289.794 -
1289.795 -template <class _Arg, class _Result>
1289.796 -inline pointer_to_unary_function<_Arg, _Result>
1289.797 -ptr_fun(_Result (*__f)(_Arg)) 
1289.798 -{ return pointer_to_unary_function<_Arg, _Result>(__f); }
1289.799 -
1289.800 -template <class _Arg1, class _Arg2, class _Result>
1289.801 -inline pointer_to_binary_function<_Arg1,_Arg2,_Result> 
1289.802 -ptr_fun(_Result (*__f)(_Arg1, _Arg2)) 
1289.803 -{ return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f); }
1289.804 -
1289.805 -_STLP_END_NAMESPACE
  1290.1 --- a/epoc32/include/stdapis/stlport/stl/_function_base.h	Tue Mar 16 16:12:26 2010 +0000
  1290.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1290.3 @@ -1,226 +0,0 @@
  1290.4 -/*
  1290.5 - *
  1290.6 - * Copyright (c) 1994
  1290.7 - * Hewlett-Packard Company
  1290.8 - *
  1290.9 - * Copyright (c) 1996-1998
 1290.10 - * Silicon Graphics Computer Systems, Inc.
 1290.11 - *
 1290.12 - * Copyright (c) 1997
 1290.13 - * Moscow Center for SPARC Technology
 1290.14 - *
 1290.15 - * Copyright (c) 1999 
 1290.16 - * Boris Fomitchev
 1290.17 - *
 1290.18 - * This material is provided "as is", with absolutely no warranty expressed
 1290.19 - * or implied. Any use is at your own risk.
 1290.20 - *
 1290.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1290.22 - * without fee, provided the above notices are retained on all copies.
 1290.23 - * Permission to modify the code and to distribute modified code is granted,
 1290.24 - * provided the above notices are retained, and a notice that the code was
 1290.25 - * modified is included with the above copyright notice.
 1290.26 - *
 1290.27 - */
 1290.28 -
 1290.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1290.30 - *   You should not attempt to use it directly.
 1290.31 - */
 1290.32 -
 1290.33 -#ifndef _STLP_INTERNAL_FUNCTION_BASE_H
 1290.34 -#define _STLP_INTERNAL_FUNCTION_BASE_H
 1290.35 -
 1290.36 -#ifndef _STLP_CONFIG_H
 1290.37 -#include <stl/_config.h>
 1290.38 -#endif
 1290.39 -
 1290.40 -_STLP_BEGIN_NAMESPACE
 1290.41 -
 1290.42 -template <class _Arg, class _Result>
 1290.43 -struct unary_function {
 1290.44 -  typedef _Arg argument_type;
 1290.45 -  typedef _Result result_type;
 1290.46 -};
 1290.47 -
 1290.48 -template <class _Arg1, class _Arg2, class _Result>
 1290.49 -struct binary_function {
 1290.50 -  typedef _Arg1 first_argument_type;
 1290.51 -  typedef _Arg2 second_argument_type;
 1290.52 -  typedef _Result result_type;
 1290.53 -};      
 1290.54 -
 1290.55 -template <class _Tp>
 1290.56 -struct equal_to : public binary_function<_Tp,_Tp,bool> 
 1290.57 -{
 1290.58 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; }
 1290.59 -};
 1290.60 -
 1290.61 -template <class _Tp>
 1290.62 -struct not_equal_to : public binary_function<_Tp,_Tp,bool> 
 1290.63 -{
 1290.64 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; }
 1290.65 -};
 1290.66 -
 1290.67 -template <class _Tp>
 1290.68 -struct greater : public binary_function<_Tp,_Tp,bool> 
 1290.69 -{
 1290.70 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; }
 1290.71 -};
 1290.72 -
 1290.73 -template <class _Tp>
 1290.74 -struct less : public binary_function<_Tp,_Tp,bool> 
 1290.75 -{
 1290.76 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
 1290.77 -};
 1290.78 -
 1290.79 -template <class _Tp>
 1290.80 -struct greater_equal : public binary_function<_Tp,_Tp,bool>
 1290.81 -{
 1290.82 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; }
 1290.83 -};
 1290.84 -
 1290.85 -template <class _Tp>
 1290.86 -struct less_equal : public binary_function<_Tp,_Tp,bool> 
 1290.87 -{
 1290.88 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; }
 1290.89 -};
 1290.90 -
 1290.91 -template <class _Tp>
 1290.92 -less<_Tp> __less(_Tp* ) { return less<_Tp>(); }
 1290.93 -
 1290.94 -template <class _Tp>
 1290.95 -equal_to<_Tp> __equal_to(_Tp* ) { return equal_to<_Tp>(); }
 1290.96 -
 1290.97 -template <class _Tp>
 1290.98 -struct plus : public binary_function<_Tp,_Tp,_Tp> {
 1290.99 -  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; }
1290.100 -};
1290.101 -
1290.102 -template <class _Tp>
1290.103 -struct minus : public binary_function<_Tp,_Tp,_Tp> {
1290.104 -  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; }
1290.105 -};
1290.106 -
1290.107 -template <class _Tp>
1290.108 -plus<_Tp> __plus(_Tp* ) { return plus<_Tp>(); }
1290.109 -
1290.110 -template <class _Tp>
1290.111 -minus<_Tp> __minus(_Tp* ) { return minus<_Tp>(); }
1290.112 -
1290.113 -template <class _Tp>
1290.114 -struct multiplies : public binary_function<_Tp,_Tp,_Tp> {
1290.115 -  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; }
1290.116 -};
1290.117 -
1290.118 -template <class _Tp>
1290.119 -struct divides : public binary_function<_Tp,_Tp,_Tp> {
1290.120 -  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; }
1290.121 -};
1290.122 -
1290.123 -template <class _Tp>
1290.124 -struct modulus : public binary_function<_Tp,_Tp,_Tp> 
1290.125 -{
1290.126 -  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; }
1290.127 -};
1290.128 -
1290.129 -template <class _Tp>
1290.130 -struct negate : public unary_function<_Tp,_Tp> 
1290.131 -{
1290.132 -  _Tp operator()(const _Tp& __x) const { return -__x; }
1290.133 -};
1290.134 -
1290.135 -template <class _Tp>
1290.136 -struct logical_and : public binary_function<_Tp,_Tp,bool>
1290.137 -{
1290.138 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; }
1290.139 -};
1290.140 -
1290.141 -template <class _Tp>
1290.142 -struct logical_or : public binary_function<_Tp,_Tp,bool>
1290.143 -{
1290.144 -  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; }
1290.145 -};
1290.146 -
1290.147 -template <class _Tp>
1290.148 -struct logical_not : public unary_function<_Tp,bool>
1290.149 -{
1290.150 -  bool operator()(const _Tp& __x) const { return !__x; }
1290.151 -};
1290.152 -
1290.153 -template <class _Pair>
1290.154 -struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> {
1290.155 -  const typename _Pair::first_type& operator()(const _Pair& __x) const {
1290.156 -    return __x.first;
1290.157 -  }
1290.158 -};
1290.159 -
1290.160 -template <class _Pair>
1290.161 -struct _Select2nd : public unary_function<_Pair, typename _Pair::second_type>
1290.162 -{
1290.163 -  const typename _Pair::second_type& operator()(const _Pair& __x) const {
1290.164 -    return __x.second;
1290.165 -  }
1290.166 -};
1290.167 -
1290.168 -// project1st and project2nd are extensions: they are not part of the standard
1290.169 -template <class _Arg1, class _Arg2>
1290.170 -struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> {
1290.171 -  _Arg1 operator()(const _Arg1& __x, const _Arg2&) const { return __x; }
1290.172 -};
1290.173 -
1290.174 -template <class _Arg1, class _Arg2>
1290.175 -struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> {
1290.176 -  _Arg2 operator()(const _Arg1&, const _Arg2& __y) const { return __y; }
1290.177 -};
1290.178 -
1290.179 -#ifdef _STLP_MULTI_CONST_TEMPLATE_ARG_BUG
1290.180 -// fbp : sort of select1st just for maps
1290.181 -template <class _Pair, class _Whatever>		
1290.182 -// JDJ (CW Pro1 doesn't like const when first_type is also const)
1290.183 -struct __Select1st_hint : public unary_function<_Pair, _Whatever> {
1290.184 -    const _Whatever& operator () (const _Pair& __x) const { return __x.first; }
1290.185 -};
1290.186 -# define  _STLP_SELECT1ST(__x,__y) __Select1st_hint< __x, __y >
1290.187 -# else
1290.188 -# define  _STLP_SELECT1ST(__x, __y) _Select1st< __x >
1290.189 -# endif
1290.190 -
1290.191 -template <class _Tp>
1290.192 -struct _Identity : public unary_function<_Tp,_Tp> {
1290.193 -  const _Tp& operator()(const _Tp& __x) const { return __x; }
1290.194 -};
1290.195 -
1290.196 -template <class _Result, class _Argument>
1290.197 -struct _Constant_unary_fun {
1290.198 -  typedef _Argument argument_type;
1290.199 -  typedef  _Result  result_type;
1290.200 -  result_type _M_val;
1290.201 -
1290.202 -  _Constant_unary_fun(const result_type& __v) : _M_val(__v) {}
1290.203 -  const result_type& operator()(const _Argument&) const { return _M_val; }
1290.204 -};
1290.205 -
1290.206 -template <class _Result, class _Arg1, class _Arg2>
1290.207 -struct _Constant_binary_fun {
1290.208 -  typedef  _Arg1   first_argument_type;
1290.209 -  typedef  _Arg2   second_argument_type;
1290.210 -  typedef  _Result result_type;
1290.211 -  _Result _M_val;
1290.212 -
1290.213 -  _Constant_binary_fun(const _Result& __v) : _M_val(__v) {}
1290.214 -  const result_type& operator()(const _Arg1&, const _Arg2&) const {
1290.215 -    return _M_val;
1290.216 -  }
1290.217 -};
1290.218 -
1290.219 -// identity_element (not part of the C++ standard).
1290.220 -template <class _Tp> inline _Tp __identity_element(plus<_Tp>) {  return _Tp(0); }
1290.221 -template <class _Tp> inline _Tp __identity_element(multiplies<_Tp>) { return _Tp(1); }
1290.222 -
1290.223 -_STLP_END_NAMESPACE
1290.224 -
1290.225 -#endif /* _STLP_INTERNAL_FUNCTION_BASE_H */
1290.226 -
1290.227 -// Local Variables:
1290.228 -// mode:C++
1290.229 -// End:
  1291.1 --- a/epoc32/include/stdapis/stlport/stl/_hash_fun.h	Tue Mar 16 16:12:26 2010 +0000
  1291.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1291.3 @@ -1,107 +0,0 @@
  1291.4 -/*
  1291.5 - * Copyright (c) 1996-1998
  1291.6 - * Silicon Graphics Computer Systems, Inc.
  1291.7 - *
  1291.8 - * Permission to use, copy, modify, distribute and sell this software
  1291.9 - * and its documentation for any purpose is hereby granted without fee,
 1291.10 - * provided that the above copyright notice appear in all copies and
 1291.11 - * that both that copyright notice and this permission notice appear
 1291.12 - * in supporting documentation.  Silicon Graphics makes no
 1291.13 - * representations about the suitability of this software for any
 1291.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1291.15 - *
 1291.16 - *
 1291.17 - * Copyright (c) 1994
 1291.18 - * Hewlett-Packard Company
 1291.19 - *
 1291.20 - * Permission to use, copy, modify, distribute and sell this software
 1291.21 - * and its documentation for any purpose is hereby granted without fee,
 1291.22 - * provided that the above copyright notice appear in all copies and
 1291.23 - * that both that copyright notice and this permission notice appear
 1291.24 - * in supporting documentation.  Hewlett-Packard Company makes no
 1291.25 - * representations about the suitability of this software for any
 1291.26 - * purpose.  It is provided "as is" without express or implied warranty.
 1291.27 - *
 1291.28 - */
 1291.29 -
 1291.30 -/* NOTE: This is an internal header file, included by other STL headers.
 1291.31 - *   You should not attempt to use it directly.
 1291.32 - */
 1291.33 -
 1291.34 -#ifndef _STLP_HASH_FUN_H
 1291.35 -#define _STLP_HASH_FUN_H
 1291.36 -
 1291.37 -# ifndef _STLP_CSTDDEF
 1291.38 -#  include <cstddef>
 1291.39 -# endif
 1291.40 -
 1291.41 -_STLP_BEGIN_NAMESPACE
 1291.42 -
 1291.43 -template <class _Key> struct hash { };
 1291.44 -
 1291.45 -inline size_t __stl_hash_string(const char* __s)
 1291.46 -{
 1291.47 -  _STLP_FIX_LITERAL_BUG(__s)
 1291.48 -  unsigned long __h = 0; 
 1291.49 -  for ( ; *__s; ++__s)
 1291.50 -    __h = 5*__h + *__s;
 1291.51 -  
 1291.52 -  return size_t(__h);
 1291.53 -}
 1291.54 -
 1291.55 -_STLP_TEMPLATE_NULL struct hash<char*>
 1291.56 -{
 1291.57 -  size_t operator()(const char* __s) const { _STLP_FIX_LITERAL_BUG(__s) return __stl_hash_string(__s); }
 1291.58 -};
 1291.59 -
 1291.60 -_STLP_TEMPLATE_NULL struct hash<const char*>
 1291.61 -{
 1291.62 -  size_t operator()(const char* __s) const { _STLP_FIX_LITERAL_BUG(__s) return __stl_hash_string(__s); }
 1291.63 -};
 1291.64 -
 1291.65 -_STLP_TEMPLATE_NULL struct hash<char> {
 1291.66 -  size_t operator()(char __x) const { return __x; }
 1291.67 -};
 1291.68 -_STLP_TEMPLATE_NULL struct hash<unsigned char> {
 1291.69 -  size_t operator()(unsigned char __x) const { return __x; }
 1291.70 -};
 1291.71 -#ifndef _STLP_NO_SIGNED_BUILTINS
 1291.72 -_STLP_TEMPLATE_NULL struct hash<signed char> {
 1291.73 -  size_t operator()(unsigned char __x) const { return __x; }
 1291.74 -};
 1291.75 -#endif
 1291.76 -_STLP_TEMPLATE_NULL struct hash<short> {
 1291.77 -  size_t operator()(short __x) const { return __x; }
 1291.78 -};
 1291.79 -_STLP_TEMPLATE_NULL struct hash<unsigned short> {
 1291.80 -  size_t operator()(unsigned short __x) const { return __x; }
 1291.81 -};
 1291.82 -_STLP_TEMPLATE_NULL struct hash<int> {
 1291.83 -  size_t operator()(int __x) const { return __x; }
 1291.84 -};
 1291.85 -_STLP_TEMPLATE_NULL struct hash<unsigned int> {
 1291.86 -  size_t operator()(unsigned int __x) const { return __x; }
 1291.87 -};
 1291.88 -_STLP_TEMPLATE_NULL struct hash<long> {
 1291.89 -  size_t operator()(long __x) const { return __x; }
 1291.90 -};
 1291.91 -_STLP_TEMPLATE_NULL struct hash<unsigned long> {
 1291.92 -  size_t operator()(unsigned long __x) const { return __x; }
 1291.93 -};
 1291.94 -
 1291.95 -# if defined (_STLP_LONG_LONG)
 1291.96 -_STLP_TEMPLATE_NULL struct hash<_STLP_LONG_LONG> {
 1291.97 -  size_t operator()(long x) const { return x; }
 1291.98 -};
 1291.99 -_STLP_TEMPLATE_NULL struct hash<unsigned _STLP_LONG_LONG> {
1291.100 -  size_t operator()(unsigned long x) const { return x; }
1291.101 -};
1291.102 -# endif
1291.103 -
1291.104 -_STLP_END_NAMESPACE
1291.105 -
1291.106 -#endif /* _STLP_HASH_FUN_H */
1291.107 -
1291.108 -// Local Variables:
1291.109 -// mode:C++
1291.110 -// End:
  1292.1 --- a/epoc32/include/stdapis/stlport/stl/_hashtable.c	Tue Mar 16 16:12:26 2010 +0000
  1292.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1292.3 @@ -1,471 +0,0 @@
  1292.4 -/*
  1292.5 - *
  1292.6 - *
  1292.7 - * Copyright (c) 1994
  1292.8 - * Hewlett-Packard Company
  1292.9 - *
 1292.10 - * Copyright (c) 1996,1997
 1292.11 - * Silicon Graphics Computer Systems, Inc.
 1292.12 - *
 1292.13 - * Copyright (c) 1997
 1292.14 - * Moscow Center for SPARC Technology
 1292.15 - *
 1292.16 - * Copyright (c) 1999 
 1292.17 - * Boris Fomitchev
 1292.18 - *
 1292.19 - * This material is provided "as is", with absolutely no warranty expressed
 1292.20 - * or implied. Any use is at your own risk.
 1292.21 - *
 1292.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1292.23 - * without fee, provided the above notices are retained on all copies.
 1292.24 - * Permission to modify the code and to distribute modified code is granted,
 1292.25 - * provided the above notices are retained, and a notice that the code was
 1292.26 - * modified is included with the above copyright notice.
 1292.27 - *
 1292.28 - */
 1292.29 -#ifndef _STLP_HASHTABLE_C
 1292.30 -#define _STLP_HASHTABLE_C
 1292.31 -
 1292.32 -#ifndef _STLP_INTERNAL_HASHTABLE_H
 1292.33 -# include <stl/_hashtable.h>
 1292.34 -#endif
 1292.35 -
 1292.36 -#ifdef _STLP_DEBUG
 1292.37 -#  define hashtable __WORKAROUND_DBG_RENAME(hashtable)
 1292.38 -#endif
 1292.39 -
 1292.40 -_STLP_BEGIN_NAMESPACE
 1292.41 -
 1292.42 -# define __PRIME_LIST_BODY { \
 1292.43 -  53ul,         97ul,         193ul,       389ul,       769ul,      \
 1292.44 -  1543ul,       3079ul,       6151ul,      12289ul,     24593ul,    \
 1292.45 -  49157ul,      98317ul,      196613ul,    393241ul,    786433ul,   \
 1292.46 -  1572869ul,    3145739ul,    6291469ul,   12582917ul,  25165843ul, \
 1292.47 -  50331653ul,   100663319ul,  201326611ul, 402653189ul, 805306457ul,\
 1292.48 -  1610612741ul, 3221225473ul, 4294967291ul  \
 1292.49 -}
 1292.50 -
 1292.51 -#if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
 1292.52 -template <class _Tp>
 1292.53 -const size_t _Stl_prime<_Tp>::_M_list[__stl_num_primes] = __PRIME_LIST_BODY;
 1292.54 -#else
 1292.55 -__DECLARE_INSTANCE(const size_t, 
 1292.56 -		   _Stl_prime_type::_M_list[], =__PRIME_LIST_BODY);
 1292.57 -#endif /* _STLP_STATIC_TEMPLATE_DATA */
 1292.58 -
 1292.59 -# undef __PRIME_LIST_BODY
 1292.60 -
 1292.61 -// fbp: these defines are for outline methods definitions.
 1292.62 -// needed to definitions to be portable. Should not be used in method bodies.
 1292.63 -
 1292.64 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1292.65 -#  define __size_type__       size_t
 1292.66 -#  define size_type           size_t
 1292.67 -#  define value_type      _Val
 1292.68 -#  define key_type        _Key
 1292.69 -#  define _Node           _Hashtable_node<_Val>
 1292.70 -#  define __reference__       _Val&
 1292.71 -
 1292.72 -#  define __iterator__        _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>
 1292.73 -#  define __const_iterator__  _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>
 1292.74 -# else
 1292.75 -#  define __size_type__        _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::size_type
 1292.76 -#  define __reference__        _STLP_TYPENAME_ON_RETURN_TYPE  hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::reference
 1292.77 -#  define __iterator__         _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::iterator
 1292.78 -# endif
 1292.79 -
 1292.80 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, 
 1292.81 -          class _All>
 1292.82 -_Hashtable_node<_Val>*
 1292.83 -_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_skip_to_next() {
 1292.84 -  size_t __bucket = _M_ht->_M_bkt_num(_M_cur->_M_val);
 1292.85 -  size_t __h_sz;
 1292.86 -  __h_sz = this->_M_ht->bucket_count();
 1292.87 -
 1292.88 -  _Node* __i=0;
 1292.89 -  while (__i==0 && ++__bucket < __h_sz)
 1292.90 -    __i = (_Node*)_M_ht->_M_buckets[__bucket];
 1292.91 -  return __i;
 1292.92 -}
 1292.93 -
 1292.94 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, 
 1292.95 -          class _All>
 1292.96 -__size_type__
 1292.97 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_next_size(size_type __n) const    { 
 1292.98 -  const size_type* __first = (const size_type*)_Stl_prime_type::_M_list;
 1292.99 -  const size_type* __last =  (const size_type*)_Stl_prime_type::_M_list + (int)__stl_num_primes;
1292.100 -  const size_type* pos = __lower_bound(__first, __last, __n, __less((size_type*)0), (ptrdiff_t*)0);
1292.101 -  return (pos == __last ? *(__last - 1) : *pos);
1292.102 -}
1292.103 -
1292.104 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.105 -bool 
1292.106 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_equal(
1292.107 -						  const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht1,
1292.108 -						  const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht2)
1292.109 -{
1292.110 -  //  typedef _Hashtable_node<_Val> _Node;
1292.111 -  if (__ht1.bucket_count() != __ht2.bucket_count())
1292.112 -    return false;
1292.113 -  for (size_t __n = 0; __n < __ht1.bucket_count(); ++__n) {
1292.114 -    const _Node* __cur1 = __ht1._M_get_bucket(__n);
1292.115 -    const _Node* __cur2 = __ht2._M_get_bucket(__n);
1292.116 -    for ( ; __cur1 && __cur2 && __cur1->_M_val == __cur2->_M_val;
1292.117 -          __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
1292.118 -      {}
1292.119 -    if (__cur1 || __cur2)
1292.120 -      return false;
1292.121 -  }
1292.122 -  return true;
1292.123 -}  
1292.124 -
1292.125 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.126 -pair< _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All> , bool> 
1292.127 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.128 -  ::insert_unique_noresize(const value_type& __obj)
1292.129 -{
1292.130 -  const size_type __n = _M_bkt_num(__obj);
1292.131 -  _Node* __first = (_Node*)_M_buckets[__n];
1292.132 -
1292.133 -  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) 
1292.134 -    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
1292.135 -      return pair<iterator, bool>(iterator(__cur, this), false);
1292.136 -
1292.137 -  _Node* __tmp = _M_new_node(__obj);
1292.138 -  __tmp->_M_next = __first;
1292.139 -  _M_buckets[__n] = __tmp;
1292.140 -  ++_M_num_elements._M_data;
1292.141 -  return pair<iterator, bool>(iterator(__tmp, this), true);
1292.142 -}
1292.143 -
1292.144 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.145 -__iterator__ 
1292.146 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.147 -  ::insert_equal_noresize(const value_type& __obj)
1292.148 -{
1292.149 -  const size_type __n = _M_bkt_num(__obj);
1292.150 -  _Node* __first = (_Node*)_M_buckets[__n];
1292.151 -
1292.152 -  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) 
1292.153 -    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) {
1292.154 -      _Node* __tmp = _M_new_node(__obj);
1292.155 -      __tmp->_M_next = __cur->_M_next;
1292.156 -      __cur->_M_next = __tmp;
1292.157 -      ++_M_num_elements._M_data;
1292.158 -      return iterator(__tmp, this);
1292.159 -    }
1292.160 -
1292.161 -  _Node* __tmp = _M_new_node(__obj);
1292.162 -  __tmp->_M_next = __first;
1292.163 -  _M_buckets[__n] = __tmp;
1292.164 -  ++_M_num_elements._M_data;
1292.165 -  return iterator(__tmp, this);
1292.166 -}
1292.167 -
1292.168 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.169 -__reference__ 
1292.170 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_insert(const value_type& __obj)
1292.171 -{
1292.172 -  resize(_M_num_elements._M_data + 1);
1292.173 -
1292.174 -  size_type __n = _M_bkt_num(__obj);
1292.175 -  _Node* __first = (_Node*)_M_buckets[__n];
1292.176 -
1292.177 -  _Node* __tmp = _M_new_node(__obj);
1292.178 -  __tmp->_M_next = __first;
1292.179 -  _M_buckets[__n] = __tmp;
1292.180 -  ++_M_num_elements._M_data;
1292.181 -  return __tmp->_M_val;
1292.182 -}
1292.183 -
1292.184 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.185 -__reference__ 
1292.186 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::find_or_insert(const value_type& __obj)
1292.187 -{
1292.188 -
1292.189 -  _Node* __first = _M_find(_M_get_key(__obj));
1292.190 -  if (__first)
1292.191 -    return __first->_M_val;
1292.192 -  else
1292.193 -    return _M_insert(__obj);
1292.194 -}
1292.195 -
1292.196 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.197 -pair< _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>,
1292.198 -      _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All> > 
1292.199 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::equal_range(const key_type& __key)
1292.200 -{
1292.201 -  typedef pair<iterator, iterator> _Pii;
1292.202 -  const size_type __n = _M_bkt_num_key(__key);
1292.203 -
1292.204 -  for (_Node* __first = (_Node*)_M_buckets[__n]; __first; __first = __first->_M_next)
1292.205 -    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
1292.206 -      for (_Node* __cur = __first->_M_next; __cur; __cur = __cur->_M_next)
1292.207 -        if (!_M_equals(_M_get_key(__cur->_M_val), __key))
1292.208 -          return _Pii(iterator(__first, this), iterator(__cur, this));
1292.209 -      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
1292.210 -        if (_M_buckets[__m])
1292.211 -          return _Pii(iterator(__first, this),
1292.212 -                     iterator((_Node*)_M_buckets[__m], this));
1292.213 -      return _Pii(iterator(__first, this), end());
1292.214 -    }
1292.215 -  return _Pii(end(), end());
1292.216 -}
1292.217 -
1292.218 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.219 -pair< _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>, 
1292.220 -     _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All> > 
1292.221 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.222 -  ::equal_range(const key_type& __key) const
1292.223 -{
1292.224 -  typedef pair<const_iterator, const_iterator> _Pii;
1292.225 -  const size_type __n = _M_bkt_num_key(__key);
1292.226 -
1292.227 -  for (const _Node* __first = (_Node*)_M_buckets[__n] ;
1292.228 -       __first; 
1292.229 -       __first = __first->_M_next) {
1292.230 -    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
1292.231 -      for (const _Node* __cur = __first->_M_next;
1292.232 -           __cur;
1292.233 -           __cur = __cur->_M_next)
1292.234 -        if (!_M_equals(_M_get_key(__cur->_M_val), __key))
1292.235 -          return _Pii(const_iterator(__first, this),
1292.236 -                      const_iterator(__cur, this));
1292.237 -      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
1292.238 -        if (_M_buckets[__m])
1292.239 -          return _Pii(const_iterator(__first, this),
1292.240 -                      const_iterator((_Node*)_M_buckets[__m], this));
1292.241 -      return _Pii(const_iterator(__first, this), end());
1292.242 -    }
1292.243 -  }
1292.244 -  return _Pii(end(), end());
1292.245 -}
1292.246 -
1292.247 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.248 -__size_type__ 
1292.249 -hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::erase(const key_type& __key)
1292.250 -{
1292.251 -  const size_type __n = _M_bkt_num_key(__key);
1292.252 -  _Node* __first = (_Node*)_M_buckets[__n];
1292.253 -  size_type __erased = 0;
1292.254 -
1292.255 -  if (__first) {
1292.256 -    _Node* __cur = __first;
1292.257 -    _Node* __next = __cur->_M_next;
1292.258 -    while (__next) {
1292.259 -      if (_M_equals(_M_get_key(__next->_M_val), __key)) {
1292.260 -        __cur->_M_next = __next->_M_next;
1292.261 -        _M_delete_node(__next);
1292.262 -        __next = __cur->_M_next;
1292.263 -        ++__erased;
1292.264 -        --_M_num_elements._M_data;
1292.265 -      }
1292.266 -      else {
1292.267 -        __cur = __next;
1292.268 -        __next = __cur->_M_next;
1292.269 -      }
1292.270 -    }
1292.271 -    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
1292.272 -      _M_buckets[__n] = __first->_M_next;
1292.273 -      _M_delete_node(__first);
1292.274 -      ++__erased;
1292.275 -      --_M_num_elements._M_data;
1292.276 -    }
1292.277 -  }
1292.278 -  return __erased;
1292.279 -}
1292.280 -
1292.281 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.282 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::erase(const const_iterator& __it)
1292.283 -{
1292.284 -  // const iterator& __it = __REINTERPRET_CAST(const iterator&,_c_it);
1292.285 -  const _Node* __p = __it._M_cur;
1292.286 -  if (__p) {
1292.287 -    const size_type __n = _M_bkt_num(__p->_M_val);
1292.288 -    _Node* __cur = (_Node*)_M_buckets[__n];
1292.289 -
1292.290 -    if (__cur == __p) {
1292.291 -      _M_buckets[__n] = __cur->_M_next;
1292.292 -      _M_delete_node(__cur);
1292.293 -      --_M_num_elements._M_data;
1292.294 -    }
1292.295 -    else {
1292.296 -      _Node* __next = __cur->_M_next;
1292.297 -      while (__next) {
1292.298 -        if (__next == __p) {
1292.299 -          __cur->_M_next = __next->_M_next;
1292.300 -          _M_delete_node(__next);
1292.301 -          --_M_num_elements._M_data;
1292.302 -          break;
1292.303 -        }
1292.304 -        else {
1292.305 -          __cur = __next;
1292.306 -          __next = __cur->_M_next;
1292.307 -        }
1292.308 -      }
1292.309 -    }
1292.310 -  }
1292.311 -}
1292.312 -
1292.313 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.314 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.315 -  ::erase(const_iterator _c_first, const_iterator _c_last)
1292.316 -{
1292.317 -  iterator& __first = (iterator&)_c_first;
1292.318 -  iterator& __last = (iterator&)_c_last;
1292.319 -  size_type __f_bucket = __first._M_cur ? 
1292.320 -    _M_bkt_num(__first._M_cur->_M_val) : _M_buckets.size();
1292.321 -  size_type __l_bucket = __last._M_cur ? 
1292.322 -    _M_bkt_num(__last._M_cur->_M_val) : _M_buckets.size();
1292.323 -  if (__first._M_cur == __last._M_cur)
1292.324 -    return;
1292.325 -  else if (__f_bucket == __l_bucket)
1292.326 -    _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur);
1292.327 -  else {
1292.328 -    _M_erase_bucket(__f_bucket, __first._M_cur, 0);
1292.329 -    for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n)
1292.330 -      _M_erase_bucket(__n, 0);
1292.331 -    if (__l_bucket != _M_buckets.size())
1292.332 -      _M_erase_bucket(__l_bucket, __last._M_cur);
1292.333 -  }
1292.334 -}
1292.335 -
1292.336 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.337 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.338 -  ::resize(size_type __num_elements_hint)
1292.339 -{
1292.340 -  const size_type __old_n = _M_buckets.size();
1292.341 -  if (__num_elements_hint > __old_n) {
1292.342 -    const size_type __n = _M_next_size(__num_elements_hint);
1292.343 -    if (__n > __old_n) {
1292.344 -      _BucketVector __tmp(__n, (void*)(0),
1292.345 -			  _M_buckets.get_allocator());
1292.346 -      _STLP_PUSH_CLEANUP_ITEM(_BucketVector, &__tmp);
1292.347 -      _STLP_TRY {
1292.348 -        for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) {
1292.349 -          _Node* __first = (_Node*)_M_buckets[__bucket];
1292.350 -          while (__first) {
1292.351 -            size_type __new_bucket = _M_bkt_num(__first->_M_val, __n);
1292.352 -            _M_buckets[__bucket] = __first->_M_next;
1292.353 -            __first->_M_next = (_Node*)__tmp[__new_bucket];
1292.354 -            __tmp[__new_bucket] = __first;
1292.355 -            __first = (_Node*)_M_buckets[__bucket];          
1292.356 -          }
1292.357 -        }
1292.358 -        _M_buckets.swap(__tmp);
1292.359 -      }
1292.360 -      _STLP_CATCH_ALL {
1292.361 -        for (size_type __bucket = 0; __bucket < __tmp.size(); ++__bucket) {
1292.362 -          while (__tmp[__bucket]) {
1292.363 -            _Node* __next = ((_Node*)__tmp[__bucket])->_M_next;
1292.364 -            _M_delete_node((_Node*)__tmp[__bucket]);
1292.365 -            __tmp[__bucket] = __next;
1292.366 -          }
1292.367 -        }
1292.368 -        _STLP_RETHROW;
1292.369 -    }
1292.370 -#ifdef _STLP_USE_TRAP_LEAVE
1292.371 -      CleanupStack::Pop();
1292.372 -#endif
1292.373 -
1292.374 -    }
1292.375 -  }
1292.376 -}
1292.377 -
1292.378 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.379 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.380 -  ::_M_erase_bucket(const size_type __n, _Node* __first, _Node* __last)
1292.381 -{
1292.382 -  _Node* __cur = (_Node*)_M_buckets[__n];
1292.383 -  if (__cur == __first)
1292.384 -    _M_erase_bucket(__n, __last);
1292.385 -  else {
1292.386 -    _Node* __next;
1292.387 -    for (__next = __cur->_M_next; 
1292.388 -         __next != __first; 
1292.389 -         __cur = __next, __next = __cur->_M_next)
1292.390 -      ;
1292.391 -    while (__next != __last) {
1292.392 -      __cur->_M_next = __next->_M_next;
1292.393 -      _M_delete_node(__next);
1292.394 -      __next = __cur->_M_next;
1292.395 -      --_M_num_elements._M_data;
1292.396 -    }
1292.397 -  }
1292.398 -}
1292.399 -
1292.400 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.401 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.402 -  ::_M_erase_bucket(const size_type __n, _Node* __last)
1292.403 -{
1292.404 -  _Node* __cur = (_Node*)_M_buckets[__n];
1292.405 -  while (__cur && __cur != __last) {
1292.406 -    _Node* __next = __cur->_M_next;
1292.407 -    _M_delete_node(__cur);
1292.408 -    __cur = __next;
1292.409 -    _M_buckets[__n] = __cur;
1292.410 -    --_M_num_elements._M_data;
1292.411 -  }
1292.412 -}
1292.413 -
1292.414 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.415 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::clear()
1292.416 -{
1292.417 -  for (size_type __i = 0; __i < _M_buckets.size(); ++__i) {
1292.418 -    _Node* __cur = (_Node*)_M_buckets[__i];
1292.419 -    while (__cur != 0) {
1292.420 -      _Node* __next = __cur->_M_next;
1292.421 -      _M_delete_node(__cur);
1292.422 -      __cur = __next;
1292.423 -    }
1292.424 -    _M_buckets[__i] = 0;
1292.425 -  }
1292.426 -  _M_num_elements._M_data = 0;
1292.427 -}
1292.428 -
1292.429 -    
1292.430 -template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1292.431 -void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1292.432 -  ::_M_copy_from(const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht)
1292.433 -{
1292.434 -  _M_buckets.clear();
1292.435 -  _M_buckets.reserve(__ht._M_buckets.size());
1292.436 -  _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (void*) 0);
1292.437 -  _STLP_TRY {
1292.438 -    for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
1292.439 -      const _Node* __cur = (_Node*)__ht._M_buckets[__i];
1292.440 -      if (__cur) {
1292.441 -        _Node* __xcopy = _M_new_node(__cur->_M_val);
1292.442 -        _M_buckets[__i] = __xcopy;
1292.443 -
1292.444 -        for (_Node* __next = __cur->_M_next; 
1292.445 -             __next; 
1292.446 -             __cur = __next, __next = __cur->_M_next) {
1292.447 -          __xcopy->_M_next = _M_new_node(__next->_M_val);
1292.448 -          __xcopy = __xcopy->_M_next;
1292.449 -        }
1292.450 -      }
1292.451 -    }
1292.452 -    _M_num_elements._M_data = __ht._M_num_elements._M_data;
1292.453 -  }
1292.454 -  _STLP_UNWIND(clear());
1292.455 -}
1292.456 -
1292.457 -# undef __iterator__ 
1292.458 -# undef const_iterator
1292.459 -# undef __size_type__
1292.460 -# undef __reference__
1292.461 -# undef size_type       
1292.462 -# undef value_type      
1292.463 -# undef key_type        
1292.464 -# undef _Node            
1292.465 -# undef __stl_num_primes
1292.466 -# undef hashtable
1292.467 -
1292.468 -_STLP_END_NAMESPACE
1292.469 -
1292.470 -#endif /*  _STLP_HASHTABLE_C */
1292.471 -
1292.472 -// Local Variables:
1292.473 -// mode:C++
1292.474 -// End:
  1293.1 --- a/epoc32/include/stdapis/stlport/stl/_heap.c	Tue Mar 16 16:12:26 2010 +0000
  1293.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1293.3 @@ -1,242 +0,0 @@
  1293.4 -/*
  1293.5 - *
  1293.6 - *
  1293.7 - * Copyright (c) 1994
  1293.8 - * Hewlett-Packard Company
  1293.9 - *
 1293.10 - * Copyright (c) 1996,1997
 1293.11 - * Silicon Graphics Computer Systems, Inc.
 1293.12 - *
 1293.13 - * Copyright (c) 1997
 1293.14 - * Moscow Center for SPARC Technology
 1293.15 - *
 1293.16 - * Copyright (c) 1999 
 1293.17 - * Boris Fomitchev
 1293.18 - *
 1293.19 - * This material is provided "as is", with absolutely no warranty expressed
 1293.20 - * or implied. Any use is at your own risk.
 1293.21 - *
 1293.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1293.23 - * without fee, provided the above notices are retained on all copies.
 1293.24 - * Permission to modify the code and to distribute modified code is granted,
 1293.25 - * provided the above notices are retained, and a notice that the code was
 1293.26 - * modified is included with the above copyright notice.
 1293.27 - *
 1293.28 - */
 1293.29 -#ifndef _STLP_HEAP_C
 1293.30 -#define _STLP_HEAP_C
 1293.31 -
 1293.32 -#ifndef _STLP_INTERNAL_HEAP_H
 1293.33 -# include <stl/_heap.h>
 1293.34 -#endif
 1293.35 -
 1293.36 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1293.37 -# include <stl/_iterator_base.h>
 1293.38 -#endif
 1293.39 -
 1293.40 -_STLP_BEGIN_NAMESPACE
 1293.41 -
 1293.42 -template <class _RandomAccessIterator, class _Distance, class _Tp>
 1293.43 -_STLP_INLINE_LOOP
 1293.44 -void 
 1293.45 -__push_heap(_RandomAccessIterator __first,
 1293.46 -            _Distance __holeIndex, _Distance __topIndex, _Tp __val)
 1293.47 -{
 1293.48 -  _Distance __parent = (__holeIndex - 1) / 2;
 1293.49 -  while (__holeIndex > __topIndex && *(__first + __parent) < __val) {
 1293.50 -    *(__first + __holeIndex) = *(__first + __parent);
 1293.51 -    __holeIndex = __parent;
 1293.52 -    __parent = (__holeIndex - 1) / 2;
 1293.53 -  }    
 1293.54 -  *(__first + __holeIndex) = __val;
 1293.55 -}
 1293.56 -
 1293.57 -template <class _RandomAccessIterator, class _Distance, class _Tp>
 1293.58 -inline void 
 1293.59 -__push_heap_aux(_RandomAccessIterator __first,
 1293.60 -                _RandomAccessIterator __last, _Distance*, _Tp*)
 1293.61 -{
 1293.62 -  __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), 
 1293.63 -              _Tp(*(__last - 1)));
 1293.64 -}
 1293.65 -
 1293.66 -template <class _RandomAccessIterator>
 1293.67 -void 
 1293.68 -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
 1293.69 -{
 1293.70 -  __push_heap_aux(__first, __last,
 1293.71 -                  _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator), _STLP_VALUE_TYPE(__first, _RandomAccessIterator));
 1293.72 -}
 1293.73 -
 1293.74 -
 1293.75 -template <class _RandomAccessIterator, class _Distance, class _Tp, 
 1293.76 -          class _Compare>
 1293.77 -_STLP_INLINE_LOOP
 1293.78 -void
 1293.79 -__push_heap(_RandomAccessIterator __first, _Distance __holeIndex,
 1293.80 -            _Distance __topIndex, _Tp __val, _Compare __comp)
 1293.81 -{
 1293.82 -  _Distance __parent = (__holeIndex - 1) / 2;
 1293.83 -  while (__holeIndex > __topIndex && __comp(*(__first + __parent), __val)) {
 1293.84 -    *(__first + __holeIndex) = *(__first + __parent);
 1293.85 -    __holeIndex = __parent;
 1293.86 -    __parent = (__holeIndex - 1) / 2;
 1293.87 -  }
 1293.88 -  *(__first + __holeIndex) = __val;
 1293.89 -}
 1293.90 -
 1293.91 -template <class _RandomAccessIterator, class _Compare,
 1293.92 -          class _Distance, class _Tp>
 1293.93 -inline void 
 1293.94 -__push_heap_aux(_RandomAccessIterator __first,
 1293.95 -                _RandomAccessIterator __last, _Compare __comp,
 1293.96 -                _Distance*, _Tp*) 
 1293.97 -{
 1293.98 -  __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), 
 1293.99 -              _Tp(*(__last - 1)), __comp);
1293.100 -}
1293.101 -
1293.102 -template <class _RandomAccessIterator, class _Compare>
1293.103 -void 
1293.104 -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
1293.105 -          _Compare __comp) 
1293.106 -{
1293.107 -  __push_heap_aux(__first, __last, __comp,
1293.108 -                  _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator), _STLP_VALUE_TYPE(__first, _RandomAccessIterator));
1293.109 -}
1293.110 -
1293.111 -template <class _RandomAccessIterator, class _Distance, class _Tp>
1293.112 -void 
1293.113 -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
1293.114 -              _Distance __len, _Tp __val) {
1293.115 -  _Distance __topIndex = __holeIndex;
1293.116 -  _Distance __secondChild = 2 * __holeIndex + 2;
1293.117 -  while (__secondChild < __len) {
1293.118 -    if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))
1293.119 -      __secondChild--;
1293.120 -    *(__first + __holeIndex) = *(__first + __secondChild);
1293.121 -    __holeIndex = __secondChild;
1293.122 -    __secondChild = 2 * (__secondChild + 1);
1293.123 -  }
1293.124 -  if (__secondChild == __len) {
1293.125 -    *(__first + __holeIndex) = *(__first + (__secondChild - 1));
1293.126 -    __holeIndex = __secondChild - 1;
1293.127 -  }
1293.128 -  __push_heap(__first, __holeIndex, __topIndex, __val);
1293.129 -}
1293.130 -
1293.131 -
1293.132 -template <class _RandomAccessIterator, class _Tp>
1293.133 -inline void 
1293.134 -__pop_heap_aux(_RandomAccessIterator __first, _RandomAccessIterator __last, _Tp*) {
1293.135 -  __pop_heap(__first, __last - 1, __last - 1, 
1293.136 -             _Tp(*(__last - 1)), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1293.137 -}
1293.138 -
1293.139 -template <class _RandomAccessIterator>
1293.140 -void pop_heap(_RandomAccessIterator __first, 
1293.141 -	      _RandomAccessIterator __last) {
1293.142 -  __pop_heap_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIterator));
1293.143 -}
1293.144 -
1293.145 -template <class _RandomAccessIterator, class _Distance,
1293.146 -          class _Tp, class _Compare>
1293.147 -void
1293.148 -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
1293.149 -              _Distance __len, _Tp __val, _Compare __comp)
1293.150 -{
1293.151 -  _Distance __topIndex = __holeIndex;
1293.152 -  _Distance __secondChild = 2 * __holeIndex + 2;
1293.153 -  while (__secondChild < __len) {
1293.154 -    if (__comp(*(__first + __secondChild), *(__first + (__secondChild - 1))))
1293.155 -      __secondChild--;
1293.156 -    *(__first + __holeIndex) = *(__first + __secondChild);
1293.157 -    __holeIndex = __secondChild;
1293.158 -    __secondChild = 2 * (__secondChild + 1);
1293.159 -  }
1293.160 -  if (__secondChild == __len) {
1293.161 -    *(__first + __holeIndex) = *(__first + (__secondChild - 1));
1293.162 -    __holeIndex = __secondChild - 1;
1293.163 -  }
1293.164 -  __push_heap(__first, __holeIndex, __topIndex, __val, __comp);
1293.165 -}
1293.166 -
1293.167 -
1293.168 -template <class _RandomAccessIterator, class _Tp, class _Compare>
1293.169 -inline void 
1293.170 -__pop_heap_aux(_RandomAccessIterator __first,
1293.171 -               _RandomAccessIterator __last, _Tp*, _Compare __comp)
1293.172 -{
1293.173 -  __pop_heap(__first, __last - 1, __last - 1, _Tp(*(__last - 1)), __comp,
1293.174 -             _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1293.175 -}
1293.176 -
1293.177 -
1293.178 -template <class _RandomAccessIterator, class _Compare>
1293.179 -void 
1293.180 -pop_heap(_RandomAccessIterator __first,
1293.181 -         _RandomAccessIterator __last, _Compare __comp)
1293.182 -{
1293.183 -    __pop_heap_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIterator), __comp);
1293.184 -}
1293.185 -
1293.186 -template <class _RandomAccessIterator, class _Tp, class _Distance>
1293.187 -_STLP_INLINE_LOOP
1293.188 -void 
1293.189 -__make_heap(_RandomAccessIterator __first,
1293.190 -            _RandomAccessIterator __last, _Tp*, _Distance*)
1293.191 -{
1293.192 -  if (__last - __first < 2) return;
1293.193 -  _Distance __len = __last - __first;
1293.194 -  _Distance __parent = (__len - 2)/2;
1293.195 -    
1293.196 -  while (true) {
1293.197 -    __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)));
1293.198 -    if (__parent == 0) return;
1293.199 -    __parent--;
1293.200 -  }
1293.201 -}
1293.202 -
1293.203 -template <class _RandomAccessIterator>
1293.204 -void 
1293.205 -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
1293.206 -{
1293.207 -  __make_heap(__first, __last,
1293.208 -              _STLP_VALUE_TYPE(__first, _RandomAccessIterator), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1293.209 -}
1293.210 -
1293.211 -template <class _RandomAccessIterator, class _Compare,
1293.212 -          class _Tp, class _Distance>
1293.213 -_STLP_INLINE_LOOP
1293.214 -void
1293.215 -__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
1293.216 -            _Compare __comp, _Tp*, _Distance*)
1293.217 -{
1293.218 -  if (__last - __first < 2) return;
1293.219 -  _Distance __len = __last - __first;
1293.220 -  _Distance __parent = (__len - 2)/2;
1293.221 -    
1293.222 -  while (true) {
1293.223 -    __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)),
1293.224 -                  __comp);
1293.225 -    if (__parent == 0) return;
1293.226 -    __parent--;
1293.227 -  }
1293.228 -}
1293.229 -
1293.230 -template <class _RandomAccessIterator, class _Compare>
1293.231 -void 
1293.232 -make_heap(_RandomAccessIterator __first, 
1293.233 -          _RandomAccessIterator __last, _Compare __comp)
1293.234 -{
1293.235 -  __make_heap(__first, __last, __comp,
1293.236 -              _STLP_VALUE_TYPE(__first, _RandomAccessIterator), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1293.237 -}
1293.238 -
1293.239 -_STLP_END_NAMESPACE
1293.240 -
1293.241 -#endif /*  _STLP_HEAP_C */
1293.242 -
1293.243 -// Local Variables:
1293.244 -// mode:C++
1293.245 -// End:
  1294.1 --- a/epoc32/include/stdapis/stlport/stl/_heap.h	Tue Mar 16 16:12:26 2010 +0000
  1294.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1294.3 @@ -1,129 +0,0 @@
  1294.4 -/*
  1294.5 - *
  1294.6 - * Copyright (c) 1994
  1294.7 - * Hewlett-Packard Company
  1294.8 - *
  1294.9 - * Permission to use, copy, modify, distribute and sell this software
 1294.10 - * and its documentation for any purpose is hereby granted without fee,
 1294.11 - * provided that the above copyright notice appear in all copies and
 1294.12 - * that both that copyright notice and this permission notice appear
 1294.13 - * in supporting documentation.  Hewlett-Packard Company makes no
 1294.14 - * representations about the suitability of this software for any
 1294.15 - * purpose.  It is provided "as is" without express or implied warranty.
 1294.16 - *
 1294.17 - * Copyright (c) 1997
 1294.18 - * Silicon Graphics Computer Systems, Inc.
 1294.19 - *
 1294.20 - * Permission to use, copy, modify, distribute and sell this software
 1294.21 - * and its documentation for any purpose is hereby granted without fee,
 1294.22 - * provided that the above copyright notice appear in all copies and
 1294.23 - * that both that copyright notice and this permission notice appear
 1294.24 - * in supporting documentation.  Silicon Graphics makes no
 1294.25 - * representations about the suitability of this software for any
 1294.26 - * purpose.  It is provided "as is" without express or implied warranty.
 1294.27 - */
 1294.28 -
 1294.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1294.30 - *   You should not attempt to use it directly.
 1294.31 - */
 1294.32 -
 1294.33 -#ifndef _STLP_INTERNAL_HEAP_H
 1294.34 -#define _STLP_INTERNAL_HEAP_H
 1294.35 -
 1294.36 -#ifndef _STLP_CONFIG_H
 1294.37 -#include <stl/_config.h>
 1294.38 -#endif
 1294.39 -
 1294.40 -_STLP_BEGIN_NAMESPACE
 1294.41 -
 1294.42 -// Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap.
 1294.43 -
 1294.44 -template <class _RandomAccessIterator>
 1294.45 -void 
 1294.46 -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);
 1294.47 -
 1294.48 -
 1294.49 -template <class _RandomAccessIterator, class _Compare>
 1294.50 -void 
 1294.51 -push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
 1294.52 -          _Compare __comp);
 1294.53 -
 1294.54 -template <class _RandomAccessIterator, class _Distance, class _Tp>
 1294.55 -void 
 1294.56 -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
 1294.57 -              _Distance __len, _Tp __val);
 1294.58 -
 1294.59 -template <class _RandomAccessIterator, class _Tp, class _Distance>
 1294.60 -inline void 
 1294.61 -__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
 1294.62 -           _RandomAccessIterator __result, _Tp __val, _Distance*)
 1294.63 -{
 1294.64 -  *__result = *__first;
 1294.65 -  __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __val);
 1294.66 -}
 1294.67 -
 1294.68 -template <class _RandomAccessIterator>
 1294.69 -void pop_heap(_RandomAccessIterator __first, 
 1294.70 -	      _RandomAccessIterator __last);
 1294.71 -
 1294.72 -template <class _RandomAccessIterator, class _Distance,
 1294.73 -          class _Tp, class _Compare>
 1294.74 -void
 1294.75 -__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
 1294.76 -              _Distance __len, _Tp __val, _Compare __comp);
 1294.77 -
 1294.78 -template <class _RandomAccessIterator, class _Tp, class _Compare, 
 1294.79 -          class _Distance>
 1294.80 -inline void 
 1294.81 -__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
 1294.82 -           _RandomAccessIterator __result, _Tp __val, _Compare __comp,
 1294.83 -           _Distance*)
 1294.84 -{
 1294.85 -  *__result = *__first;
 1294.86 -  __adjust_heap(__first, _Distance(0), _Distance(__last - __first), 
 1294.87 -                __val, __comp);
 1294.88 -}
 1294.89 -
 1294.90 -template <class _RandomAccessIterator, class _Compare>
 1294.91 -void 
 1294.92 -pop_heap(_RandomAccessIterator __first,
 1294.93 -         _RandomAccessIterator __last, _Compare __comp);
 1294.94 -
 1294.95 -template <class _RandomAccessIterator>
 1294.96 -void 
 1294.97 -make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);
 1294.98 -
 1294.99 -template <class _RandomAccessIterator, class _Compare>
1294.100 -void 
1294.101 -make_heap(_RandomAccessIterator __first, 
1294.102 -          _RandomAccessIterator __last, _Compare __comp);
1294.103 -
1294.104 -template <class _RandomAccessIterator>
1294.105 -_STLP_INLINE_LOOP
1294.106 -void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
1294.107 -{
1294.108 -  while (__last - __first > 1)
1294.109 -    pop_heap(__first, __last--);
1294.110 -}
1294.111 -
1294.112 -template <class _RandomAccessIterator, class _Compare>
1294.113 -_STLP_INLINE_LOOP
1294.114 -void 
1294.115 -sort_heap(_RandomAccessIterator __first,
1294.116 -          _RandomAccessIterator __last, _Compare __comp)
1294.117 -{
1294.118 -  while (__last - __first > 1)
1294.119 -    pop_heap(__first, __last--, __comp);
1294.120 -}
1294.121 -
1294.122 -_STLP_END_NAMESPACE
1294.123 -
1294.124 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1294.125 -#  include <stl/_heap.c>
1294.126 -# endif
1294.127 -
1294.128 -#endif /* _STLP_INTERNAL_HEAP_H */
1294.129 -
1294.130 -// Local Variables:
1294.131 -// mode:C++
1294.132 -// End:
  1295.1 --- a/epoc32/include/stdapis/stlport/stl/_ios.c	Tue Mar 16 16:12:26 2010 +0000
  1295.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1295.3 @@ -1,134 +0,0 @@
  1295.4 -/*
  1295.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1295.6 - * Copyright (c) 1999
  1295.7 - * Silicon Graphics Computer Systems, Inc.
  1295.8 - *
  1295.9 - * Copyright (c) 1999 
 1295.10 - * Boris Fomitchev
 1295.11 - *
 1295.12 - * This material is provided "as is", with absolutely no warranty expressed
 1295.13 - * or implied. Any use is at your own risk.
 1295.14 - *
 1295.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1295.16 - * without fee, provided the above notices are retained on all copies.
 1295.17 - * Permission to modify the code and to distribute modified code is granted,
 1295.18 - * provided the above notices are retained, and a notice that the code was
 1295.19 - * modified is included with the above copyright notice.
 1295.20 - *
 1295.21 - */ 
 1295.22 -#ifndef _STLP_IOS_C
 1295.23 -#define _STLP_IOS_C
 1295.24 -
 1295.25 -#ifndef _STLP_INTERNAL_IOS_H
 1295.26 -# include <stl/_ios.h>
 1295.27 -#endif
 1295.28 -
 1295.29 -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1295.30 -
 1295.31 -#ifndef _STLP_INTERNAL_STREAMBUF
 1295.32 -# include <stl/_streambuf.h>
 1295.33 -#endif
 1295.34 -
 1295.35 -#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1295.36 -# include <stl/_numpunct.h>
 1295.37 -#endif
 1295.38 -
 1295.39 -_STLP_BEGIN_NAMESPACE
 1295.40 -
 1295.41 -// basic_ios<>'s non-inline member functions
 1295.42 -
 1295.43 -// Public constructor, taking a streambuf.
 1295.44 -template <class _CharT, class _Traits>
 1295.45 -basic_ios<_CharT, _Traits>
 1295.46 -  ::basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf)
 1295.47 -    : ios_base(),
 1295.48 -      _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0)
 1295.49 -{
 1295.50 -  init(__streambuf);
 1295.51 -}
 1295.52 -
 1295.53 -template <class _CharT, class _Traits>
 1295.54 -basic_streambuf<_CharT, _Traits>*
 1295.55 -basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __buf)
 1295.56 -{
 1295.57 -  basic_streambuf<_CharT, _Traits>* __tmp = _M_streambuf;
 1295.58 -  _M_streambuf = __buf;
 1295.59 -  this->clear();
 1295.60 -  return __tmp;
 1295.61 -}
 1295.62 -
 1295.63 -template <class _CharT, class _Traits>
 1295.64 -basic_ios<_CharT, _Traits>&
 1295.65 -basic_ios<_CharT, _Traits>::copyfmt(const basic_ios<_CharT, _Traits>& __x)
 1295.66 -{
 1295.67 -  _M_invoke_callbacks(erase_event);
 1295.68 -  _M_copy_state(__x);           // Inherited from ios_base.
 1295.69 -  _M_fill = __x._M_fill;
 1295.70 -  _M_tied_ostream = __x._M_tied_ostream;
 1295.71 -  _M_invoke_callbacks(copyfmt_event);
 1295.72 - // this->_M_set_exception_mask(__x.exceptions()); //Exceptions should  copy not simply set. should throw exception if mask&state ==1 ,while copying exception.
 1295.73 -  this->exceptions(__x.exceptions());
 1295.74 -  return *this;
 1295.75 -}
 1295.76 -//#ifndef __SYMBIAN32__ // Moved to src
 1295.77 -template <class _CharT, class _Traits>
 1295.78 -locale basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
 1295.79 -{
 1295.80 -  locale __tmp = ios_base::imbue(__loc);
 1295.81 -
 1295.82 -  if (_M_streambuf)
 1295.83 -    _M_streambuf->pubimbue(__loc);
 1295.84 -
 1295.85 -  // no throwing here
 1295.86 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1295.87 -  this->_M_cached_ctype = __loc._M_get_facet(ctype<char_type>::GetFacetLocaleId()) ;
 1295.88 -  this->_M_cached_numpunct = __loc._M_get_facet(numpunct<char_type>::GetFacetLocaleId()) ;
 1295.89 -#else
 1295.90 -  this->_M_cached_ctype = __loc._M_get_facet(ctype<char_type>::id) ;
 1295.91 -  this->_M_cached_numpunct = __loc._M_get_facet(numpunct<char_type>::id) ;
 1295.92 -#endif //__LIBSTD_CPP_SYMBIAN32_WSD__
 1295.93 -  this->_M_cached_grouping = ((numpunct<char_type>*)_M_cached_numpunct)->grouping() ;
 1295.94 -  return __tmp;
 1295.95 -}
 1295.96 -//#endif // __SYMBIAN32__
 1295.97 -// Protected constructor and initialization functions. The default
 1295.98 -// constructor creates an uninitialized basic_ios, and init() initializes
 1295.99 -// all of the members to the values in Table 89 of the C++ standard.
1295.100 -
1295.101 -template <class _CharT, class _Traits>
1295.102 -basic_ios<_CharT, _Traits>::basic_ios()
1295.103 -  : ios_base(),
1295.104 -    _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0)
1295.105 -{}
1295.106 -
1295.107 -template <class _CharT, class _Traits>
1295.108 -void
1295.109 -basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
1295.110 -{
1295.111 -  this->rdbuf(__sb);
1295.112 -  this->imbue(locale());
1295.113 -  this->tie(0);
1295.114 -  this->_M_set_exception_mask(ios_base::goodbit);
1295.115 -  this->_M_clear_nothrow(__sb != 0 ? ios_base::goodbit : ios_base::badbit);
1295.116 -  ios_base::flags(ios_base::skipws | ios_base::dec);
1295.117 -  ios_base::width(0);
1295.118 -  ios_base::precision(6);
1295.119 -  this->fill(widen(' '));
1295.120 -  // We don't need to worry about any of the three arrays: they are
1295.121 -  // initialized correctly in ios_base's constructor.
1295.122 -}
1295.123 -
1295.124 -// This is never called except from within a catch clause.
1295.125 -template <class _CharT, class _Traits>
1295.126 -void basic_ios<_CharT, _Traits>::_M_handle_exception(ios_base::iostate __flag)
1295.127 -{
1295.128 -  this->_M_setstate_nothrow(__flag);
1295.129 -  if (this->_M_get_exception_mask() & __flag)
1295.130 -    _STLP_RETHROW;
1295.131 -}
1295.132 -
1295.133 -_STLP_END_NAMESPACE
1295.134 -
1295.135 -#endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1295.136 -
1295.137 -#endif /* _STLP_IOS_C */
  1296.1 --- a/epoc32/include/stdapis/stlport/stl/_ios.h	Tue Mar 16 16:12:26 2010 +0000
  1296.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1296.3 @@ -1,204 +0,0 @@
  1296.4 -/*
  1296.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1296.6 - * Copyright (c) 1999
  1296.7 - * Silicon Graphics Computer Systems, Inc.
  1296.8 - *
  1296.9 - * Copyright (c) 1999 
 1296.10 - * Boris Fomitchev
 1296.11 - *
 1296.12 - * This material is provided "as is", with absolutely no warranty expressed
 1296.13 - * or implied. Any use is at your own risk.
 1296.14 - *
 1296.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1296.16 - * without fee, provided the above notices are retained on all copies.
 1296.17 - * Permission to modify the code and to distribute modified code is granted,
 1296.18 - * provided the above notices are retained, and a notice that the code was
 1296.19 - * modified is included with the above copyright notice.
 1296.20 - *
 1296.21 - */ 
 1296.22 -#ifndef _STLP_INTERNAL_IOS_H
 1296.23 -#define _STLP_INTERNAL_IOS_H
 1296.24 -
 1296.25 -
 1296.26 -#ifndef _STLP_IOS_BASE_H
 1296.27 -# include <stl/_ios_base.h>
 1296.28 -#endif
 1296.29 -
 1296.30 -#ifndef _STLP_INTERNAL_CTYPE_H
 1296.31 -# include <stl/_ctype.h>
 1296.32 -#endif
 1296.33 -#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1296.34 -# include <stl/_numpunct.h>
 1296.35 -#endif
 1296.36 -
 1296.37 -_STLP_BEGIN_NAMESPACE
 1296.38 -
 1296.39 -// ----------------------------------------------------------------------
 1296.40 -
 1296.41 -// Class basic_ios, a subclass of ios_base.  The only important difference
 1296.42 -// between the two is that basic_ios is a class template, parameterized
 1296.43 -// by the character type.  ios_base exists to factor out all of the
 1296.44 -// common properties that don't depend on the character type.
 1296.45 -
 1296.46 -// The second template parameter, _Traits, defaults to char_traits<_CharT>.
 1296.47 -// The default is declared in header <iosfwd>, and it isn't declared here
 1296.48 -// because C++ language rules do not allow it to be declared twice.
 1296.49 -
 1296.50 -template <class _CharT, class _Traits>
 1296.51 -#ifdef __SYMBIAN32__
 1296.52 -class basic_ios : public ios_base {
 1296.53 -#else
 1296.54 -class basic_ios : public ios_base {
 1296.55 -#endif
 1296.56 -  friend class ios_base;
 1296.57 -public:                         // Synonyms for types.
 1296.58 -  typedef _CharT                     char_type;
 1296.59 -  typedef typename _Traits::int_type int_type;
 1296.60 -  typedef typename _Traits::pos_type pos_type;
 1296.61 -  typedef typename _Traits::off_type off_type;
 1296.62 -  typedef _Traits                    traits_type;
 1296.63 -
 1296.64 -public:                         // Constructor, destructor.
 1296.65 -  explicit basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf);
 1296.66 -  virtual ~basic_ios() {}
 1296.67 -
 1296.68 -public:                         // Members from clause 27.4.4.2
 1296.69 -  basic_ostream<_CharT, _Traits>* tie() const {
 1296.70 -    return _M_tied_ostream;
 1296.71 -  }
 1296.72 -  basic_ostream<_CharT, _Traits>*
 1296.73 -  tie(basic_ostream<char_type, traits_type>* __new_tied_ostream) {
 1296.74 -    basic_ostream<char_type, traits_type>* __tmp = _M_tied_ostream;
 1296.75 -    _M_tied_ostream = __new_tied_ostream;
 1296.76 -    return __tmp;
 1296.77 -  }
 1296.78 -
 1296.79 -  basic_streambuf<_CharT, _Traits>* rdbuf() const
 1296.80 -    { return _M_streambuf; }
 1296.81 -
 1296.82 -  basic_streambuf<_CharT, _Traits>*
 1296.83 -  rdbuf(basic_streambuf<char_type, traits_type>*);
 1296.84 -
 1296.85 -  // Copies __x's state to *this.
 1296.86 -  basic_ios<_CharT, _Traits>& copyfmt(const basic_ios<_CharT, _Traits>& __x);
 1296.87 -
 1296.88 -  char_type fill() const { return _M_fill; }
 1296.89 -  char_type fill(char_type __fill) {
 1296.90 -    char_type __tmp(_M_fill);
 1296.91 -    _M_fill = __fill;
 1296.92 -    return __tmp;
 1296.93 -  }
 1296.94 -
 1296.95 -public:                         // Members from 27.4.4.3.  These four functions
 1296.96 -                                // can almost be defined in ios_base.
 1296.97 -
 1296.98 -  void clear(iostate __state = goodbit) {
 1296.99 -    _M_clear_nothrow(this->rdbuf() ? __state : iostate(__state|ios_base::badbit));
1296.100 -    _M_check_exception_mask();
1296.101 -  }
1296.102 -  void setstate(iostate __state) { this->clear(rdstate() | __state); }
1296.103 -
1296.104 -  iostate exceptions() const { return this->_M_get_exception_mask(); }
1296.105 -  void exceptions(iostate __mask) {
1296.106 -    this->_M_set_exception_mask(__mask);
1296.107 -    this->clear(this->rdstate());
1296.108 -  }
1296.109 -
1296.110 -public:                         // Locale-related member functions.
1296.111 -  locale imbue(const locale&);
1296.112 -
1296.113 -  inline char narrow(_CharT, char) const ;
1296.114 -  inline _CharT widen(char) const; 
1296.115 -
1296.116 -  // Helper function that makes testing for EOF more convenient.
1296.117 -  static bool _STLP_CALL _S_eof(int_type __c) {
1296.118 -    const int_type __eof = _Traits::eof();
1296.119 -    return _Traits::eq_int_type(__c, __eof);
1296.120 -  }
1296.121 -
1296.122 -protected:
1296.123 -  basic_ios();
1296.124 -
1296.125 -  void init(basic_streambuf<_CharT, _Traits>* __streambuf);
1296.126 -
1296.127 -public:
1296.128 -  
1296.129 -  // Helper function used in istream and ostream.  It is called only from
1296.130 -  // a catch clause.
1296.131 -  void _M_handle_exception(ios_base::iostate __flag);
1296.132 -  
1296.133 -private:                        // Data members
1296.134 -  char_type _M_fill;            // The fill character, used for padding.
1296.135 -
1296.136 -  basic_streambuf<_CharT, _Traits>* _M_streambuf;
1296.137 -  basic_ostream<_CharT, _Traits>*   _M_tied_ostream;
1296.138 -
1296.139 -};
1296.140 -
1296.141 -
1296.142 -template <class _CharT, class _Traits>
1296.143 -inline char 
1296.144 -basic_ios<_CharT, _Traits>::narrow(_CharT __c, char __default) const
1296.145 -{ return ((const ctype<_CharT>*)this->_M_ctype_facet())->narrow(__c, __default); }
1296.146 -
1296.147 -template <class _CharT, class _Traits>
1296.148 -inline _CharT 
1296.149 -basic_ios<_CharT, _Traits>::widen(char __c) const
1296.150 -{ 
1296.151 -  return ((const ctype<_CharT>*)this->_M_ctype_facet())->widen(__c); }
1296.152 -
1296.153 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1296.154 -_STLP_EXPORT_TEMPLATE_CLASS basic_ios<char, char_traits<char> >;
1296.155 -#  if ! defined (_STLP_NO_WCHAR_T)
1296.156 -_STLP_EXPORT_TEMPLATE_CLASS basic_ios<wchar_t, char_traits<wchar_t> >;
1296.157 -#  endif
1296.158 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1296.159 -
1296.160 -# if !defined (_STLP_NO_METHOD_SPECIALIZATION)
1296.161 -_STLP_TEMPLATE_NULL
1296.162 -inline char
1296.163 -basic_ios<char, char_traits<char> >::narrow(char __c, char) const
1296.164 -{
1296.165 -  return __c;
1296.166 -}
1296.167 -
1296.168 -_STLP_TEMPLATE_NULL
1296.169 -inline char
1296.170 -basic_ios<char, char_traits<char> >::widen(char __c) const
1296.171 -{
1296.172 -  return __c;
1296.173 -}
1296.174 -# endif /* _STLP_NO_METHOD_SPECIALIZATION */
1296.175 -
1296.176 -
1296.177 -_STLP_END_NAMESPACE
1296.178 -
1296.179 -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1296.180 -#  include <stl/_ios.c>
1296.181 -# endif
1296.182 -
1296.183 -// The following is needed to ensure that the inlined _Stl_loc_init functions
1296.184 -// that ios_base::_Loc_init::_Loc_init() calls are found eventually.
1296.185 -// Otherwise, undefined externs may be caused.
1296.186 -
1296.187 -#if defined(__BORLANDC__) && defined(_RTLDLL)
1296.188 -# ifndef _STLP_INTERNAL_NUM_PUT_H
1296.189 -#  include <stl/_num_put.h>
1296.190 -# endif
1296.191 -# ifndef _STLP_INTERNAL_NUM_GET_H
1296.192 -#   include <stl/_num_get.h>
1296.193 -# endif
1296.194 -# ifndef _STLP_INTERNAL_MONETARY_H
1296.195 -#  include <stl/_monetary.h>
1296.196 -# endif
1296.197 -# ifndef _STLP_INTERNAL_TIME_FACETS_H
1296.198 -#  include <stl/_time_facets.h>
1296.199 -# endif
1296.200 -#endif
1296.201 -
1296.202 -#endif /* _STLP_IOS */
1296.203 -
1296.204 -// Local Variables:
1296.205 -// mode:C++
1296.206 -// End:
1296.207 -
  1297.1 --- a/epoc32/include/stdapis/stlport/stl/_ios_base.h	Tue Mar 16 16:12:26 2010 +0000
  1297.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1297.3 @@ -1,439 +0,0 @@
  1297.4 -/*
  1297.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1297.6 - * Copyright (c) 1999
  1297.7 - * Silicon Graphics Computer Systems, Inc.
  1297.8 - *
  1297.9 - * Copyright (c) 1999 
 1297.10 - * Boris Fomitchev
 1297.11 - *
 1297.12 - * This material is provided "as is", with absolutely no warranty expressed
 1297.13 - * or implied. Any use is at your own risk.
 1297.14 - *
 1297.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1297.16 - * without fee, provided the above notices are retained on all copies.
 1297.17 - * Permission to modify the code and to distribute modified code is granted,
 1297.18 - * provided the above notices are retained, and a notice that the code was
 1297.19 - * modified is included with the above copyright notice.
 1297.20 - *
 1297.21 - */ 
 1297.22 -#ifndef _STLP_IOS_BASE_H
 1297.23 -#define _STLP_IOS_BASE_H
 1297.24 -
 1297.25 -#ifndef _STLP_STDEXCEPT
 1297.26 -#include <stdexcept>
 1297.27 -#endif
 1297.28 -#ifndef _STLP_UTILITY
 1297.29 -#include <utility>
 1297.30 -#endif
 1297.31 -#ifndef _STLP_INTERNAL_LOCALE_H
 1297.32 -#include <stl/_locale.h>
 1297.33 -#endif
 1297.34 -#ifndef _STLP_STRING_H
 1297.35 -# include <stl/_string.h>
 1297.36 -#endif
 1297.37 -
 1297.38 -_STLP_BEGIN_NAMESPACE
 1297.39 -
 1297.40 -// ----------------------------------------------------------------------
 1297.41 -
 1297.42 -// Class ios_base.  This is the base class of the ios hierarchy, which
 1297.43 -// includes basic_istream and basic_ostream.  Classes in the ios
 1297.44 -// hierarchy are actually quite simple: they are just glorified
 1297.45 -// wrapper classes.  They delegate buffering and physical character
 1297.46 -// manipulation to the streambuf classes, and they delegate most
 1297.47 -// formatting tasks to a locale.
 1297.48 -
 1297.49 -#ifdef __SYMBIAN32__
 1297.50 -class ios_base {
 1297.51 -#else
 1297.52 -class _STLP_CLASS_DECLSPEC ios_base {
 1297.53 -#endif
 1297.54 -public:
 1297.55 -  
 1297.56 -  class _STLP_CLASS_DECLSPEC failure : public __Named_exception {
 1297.57 -  public:
 1297.58 -    _STLP_DECLSPEC explicit failure(const string&);
 1297.59 -    _STLP_DECLSPEC virtual ~failure() _STLP_NOTHROW_INHERENTLY;
 1297.60 -  };
 1297.61 -
 1297.62 -  typedef int fmtflags;
 1297.63 -  typedef int iostate;
 1297.64 -  typedef int openmode;
 1297.65 -  typedef int seekdir;
 1297.66 -
 1297.67 -# ifndef _STLP_NO_ANACHRONISMS
 1297.68 -  typedef fmtflags fmt_flags;
 1297.69 -# endif
 1297.70 -
 1297.71 -  // Formatting flags.
 1297.72 -# ifdef _STLP_STATIC_CONST_INIT_BUG
 1297.73 -  enum  {
 1297.74 -# else
 1297.75 -  // boris : type for all those constants is int   
 1297.76 -  static const int
 1297.77 -# endif
 1297.78 -    left       = 0x0001,
 1297.79 -    right      = 0x0002,
 1297.80 -    internal   = 0x0004,
 1297.81 -    dec        = 0x0008,
 1297.82 -    hex        = 0x0010,
 1297.83 -    oct        = 0x0020,
 1297.84 -    fixed      = 0x0040,
 1297.85 -    scientific = 0x0080,
 1297.86 -    boolalpha  = 0x0100,
 1297.87 -    showbase   = 0x0200,
 1297.88 -    showpoint  = 0x0400,
 1297.89 -    showpos    = 0x0800,
 1297.90 -    skipws     = 0x1000,
 1297.91 -    unitbuf    = 0x2000,
 1297.92 -    uppercase  = 0x4000,
 1297.93 -    adjustfield = left | right | internal,
 1297.94 -    basefield   = dec | hex | oct,
 1297.95 -    floatfield  = scientific | fixed,
 1297.96 -    
 1297.97 -    // State flags.
 1297.98 -    goodbit = 0x00,
 1297.99 -    badbit  = 0x01,
1297.100 -    eofbit  = 0x02,
1297.101 -    failbit = 0x04,
1297.102 -    
1297.103 -    // Openmode flags.
1297.104 -    __default_mode = 0x0, /* implementation detail */
1297.105 -    app    = 0x01,
1297.106 -    ate    = 0x02,
1297.107 -    binary = 0x04,
1297.108 -    in     = 0x08,
1297.109 -    out    = 0x10,
1297.110 -    trunc  = 0x20,
1297.111 -    
1297.112 -    // Seekdir flags
1297.113 -    
1297.114 -    beg = 0x01,
1297.115 -    cur = 0x02,
1297.116 -    end = 0x04
1297.117 -# ifdef _STLP_STATIC_CONST_INIT_BUG
1297.118 -  }
1297.119 -# endif
1297.120 -  ;
1297.121 -
1297.122 -public:                         // Flag-manipulation functions.
1297.123 -  fmtflags flags() const { return _M_fmtflags; }
1297.124 -  fmtflags flags(fmtflags __flags) {
1297.125 -    fmtflags __tmp = _M_fmtflags;
1297.126 -    _M_fmtflags = __flags;
1297.127 -    return __tmp;
1297.128 -  }
1297.129 -
1297.130 -  fmtflags setf(fmtflags __flag) {
1297.131 -    fmtflags __tmp = _M_fmtflags;
1297.132 -    _M_fmtflags |= __flag;
1297.133 -    return __tmp;
1297.134 -  }
1297.135 -  fmtflags setf(fmtflags __flag, fmtflags __mask) {
1297.136 -    fmtflags __tmp = _M_fmtflags;
1297.137 -    _M_fmtflags &= ~__mask;
1297.138 -    _M_fmtflags |= __flag & __mask;
1297.139 -    return __tmp;
1297.140 -  }
1297.141 -  void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; }
1297.142 -
1297.143 -  streamsize precision() const { return _M_precision; }
1297.144 -  streamsize precision(streamsize __newprecision) {
1297.145 -    streamsize __tmp = _M_precision;
1297.146 -    _M_precision = __newprecision;
1297.147 -    return __tmp;
1297.148 -  }
1297.149 -
1297.150 -  streamsize width() const { return _M_width; }
1297.151 -  streamsize width(streamsize __newwidth) {
1297.152 -    streamsize __tmp = _M_width;
1297.153 -    _M_width = __newwidth;
1297.154 -    return __tmp;
1297.155 -  }
1297.156 -
1297.157 -public:                         // Locales
1297.158 -  _STLP_DECLSPEC locale imbue(const locale&);
1297.159 -  _STLP_DECLSPEC locale getloc() const;// { return _M_locale; }
1297.160 -
1297.161 -public:                         // Auxiliary storage.
1297.162 -  _STLP_DECLSPEC static int _STLP_CALL xalloc();
1297.163 -  _STLP_DECLSPEC long&  iword(int __index);
1297.164 -  _STLP_DECLSPEC void*& pword(int __index);
1297.165 -
1297.166 -public:                         // Destructor.
1297.167 -  _STLP_DECLSPEC virtual ~ios_base();
1297.168 -
1297.169 -public:                         // Callbacks.
1297.170 -  enum event { erase_event, imbue_event, copyfmt_event };
1297.171 -  typedef void (*event_callback)(event, ios_base&, int __index);
1297.172 -  _STLP_DECLSPEC void register_callback(event_callback __fn, int __index);
1297.173 -
1297.174 -public:                         // This member function affects only
1297.175 -                                // the eight predefined ios objects:
1297.176 -                                // cin, cout, etc.
1297.177 -  _STLP_DECLSPEC static bool _STLP_CALL sync_with_stdio(bool __sync = true);
1297.178 -
1297.179 -public:                         // The C++ standard requires only that these
1297.180 -                                // member functions be defined in basic_ios.
1297.181 -                                // We define them in the non-template
1297.182 -                                // base class to avoid code duplication.
1297.183 -  operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; }
1297.184 -  bool operator!() const { return fail(); }
1297.185 -
1297.186 -  iostate rdstate() const { return _M_iostate; }
1297.187 -
1297.188 -  bool good() const { return _M_iostate == 0; }
1297.189 -  bool eof() const { return (_M_iostate & eofbit) != 0; }
1297.190 -  bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; }
1297.191 -  bool bad() const { return (_M_iostate & badbit) != 0; }
1297.192 -
1297.193 -protected:                      // The functional protected interface.
1297.194 -
1297.195 -  // Copies the state of __x to *this.  This member function makes it
1297.196 -  // possible to implement basic_ios::copyfmt without having to expose
1297.197 -  // ios_base's private data members.  Does not copy _M_exception_mask
1297.198 -  // or _M_iostate.
1297.199 -  _STLP_DECLSPEC void _M_copy_state(const ios_base& __x);
1297.200 -
1297.201 -  void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; }
1297.202 -  void _M_clear_nothrow(iostate __state) { _M_iostate = __state; }
1297.203 -  iostate _M_get_exception_mask() const { return _M_exception_mask; }
1297.204 -  void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; }
1297.205 -  void _M_check_exception_mask() { 
1297.206 -    if (_M_iostate & _M_exception_mask)
1297.207 -      _M_throw_failure(); 
1297.208 -  }
1297.209 -
1297.210 -  _STLP_DECLSPEC void _M_invoke_callbacks(event);
1297.211 -  _STLP_DECLSPEC void _M_throw_failure();
1297.212 -
1297.213 -  _STLP_DECLSPEC ios_base();                   // Default constructor.
1297.214 -
1297.215 -protected:                        // Initialization of the I/O system
1297.216 -  static void _STLP_CALL _S_initialize();
1297.217 -  static void _STLP_CALL _S_uninitialize();
1297.218 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1297.219 -	static bool _S_was_synced;
1297.220 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1297.221 -  friend void CallIosInit();
1297.222 -private:                        // Invalidate the copy constructor and
1297.223 -                                // assignment operator.
1297.224 -  ios_base(const ios_base&);
1297.225 -  void operator=(const ios_base&);
1297.226 -
1297.227 -private:                        // Data members.
1297.228 -
1297.229 -  fmtflags _M_fmtflags;         // Flags
1297.230 -  iostate _M_iostate;
1297.231 -  openmode _M_openmode;
1297.232 -  seekdir _M_seekdir;
1297.233 -  iostate _M_exception_mask;
1297.234 -
1297.235 -  streamsize _M_precision;
1297.236 -  streamsize _M_width;
1297.237 -
1297.238 -  locale _M_locale;
1297.239 -
1297.240 -  pair<event_callback, int>* _M_callbacks;
1297.241 -  size_t _M_num_callbacks;      // Size of the callback array.
1297.242 -  size_t _M_callback_index;     // Index of the next available callback;
1297.243 -                                // initially zero.
1297.244 -
1297.245 -  long* _M_iwords;              // Auxiliary storage.  The count is zero
1297.246 -  size_t _M_num_iwords;         // if and only if the pointer is null.
1297.247 -
1297.248 -  void** _M_pwords;
1297.249 -  size_t _M_num_pwords;
1297.250 -
1297.251 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1297.252 -	static int _S_index;
1297.253 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1297.254 -
1297.255 -
1297.256 -protected:
1297.257 -  // Cached copies of the curent locale's facets.  Set by init() and imbue().
1297.258 -  locale::facet* _M_cached_ctype;
1297.259 -  locale::facet* _M_cached_numpunct;
1297.260 -  string         _M_cached_grouping;
1297.261 -public:
1297.262 -  // Equivalent to &use_facet< Facet >(getloc()), but faster.
1297.263 -  const locale::facet* _M_ctype_facet() const { return _M_cached_ctype; }
1297.264 -  const locale::facet* _M_numpunct_facet() const { return _M_cached_numpunct; }
1297.265 -  const string&  _M_grouping() const { return _M_cached_grouping; }
1297.266 -public:
1297.267 -
1297.268 -  // ----------------------------------------------------------------------
1297.269 -  // Nested initializer class.  This is an implementation detail, but it's
1297.270 -  // prescribed by the standard.  The static initializer object (on 
1297.271 -  // implementations where such a thing is required) is declared in
1297.272 -  // <iostream>
1297.273 -  
1297.274 -  class _STLP_CLASS_DECLSPEC Init {
1297.275 -  public:
1297.276 -    _STLP_DECLSPEC Init();
1297.277 -    _STLP_DECLSPEC ~Init();
1297.278 -  private:
1297.279 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1297.280 -    static long _S_count;
1297.281 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1297.282 -    friend class ios_base;
1297.283 -  };
1297.284 -
1297.285 -  // this class is needed to ensure locale initialization w/o <iostream> inclusion
1297.286 -  class _STLP_CLASS_DECLSPEC _Loc_init {
1297.287 -  public:
1297.288 -    _STLP_DECLSPEC _Loc_init();
1297.289 -    _STLP_DECLSPEC ~_Loc_init();
1297.290 -  private:
1297.291 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1297.292 -	static long _S_count;
1297.293 -# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1297.294 -    friend class locale;
1297.295 -    friend class ios_base;
1297.296 -  };
1297.297 -
1297.298 -  friend class Init;
1297.299 -
1297.300 -public:
1297.301 -# ifndef _STLP_NO_ANACHRONISMS
1297.302 -  //  31.6  Old iostreams members                         [depr.ios.members]
1297.303 -  typedef iostate  io_state;
1297.304 -  typedef openmode open_mode;
1297.305 -  typedef seekdir  seek_dir;
1297.306 -  typedef _STLP_STD::streamoff  streamoff;
1297.307 -  typedef _STLP_STD::streampos  streampos;
1297.308 -# endif  
1297.309 -};
1297.310 -
1297.311 -inline _STLP_EXP_DECLSPEC locale ios_base::getloc() const 
1297.312 -    { 
1297.313 -    return _M_locale; 
1297.314 -    }
1297.315 -
1297.316 -// ----------------------------------------------------------------------
1297.317 -// ios_base manipulator functions, from section 27.4.5 of the C++ standard.
1297.318 -// All of them are trivial one-line wrapper functions.
1297.319 -
1297.320 -// fmtflag manipulators, section 27.4.5.1
1297.321 -inline ios_base& _STLP_CALL boolalpha(ios_base& __s)
1297.322 -  { __s.setf(ios_base::boolalpha); return __s;}
1297.323 -
1297.324 -inline ios_base& _STLP_CALL noboolalpha(ios_base& __s)
1297.325 -  { __s.unsetf(ios_base::boolalpha); return __s;}
1297.326 -
1297.327 -inline ios_base& _STLP_CALL showbase(ios_base& __s)
1297.328 -  { __s.setf(ios_base::showbase); return __s;}
1297.329 -
1297.330 -inline ios_base& _STLP_CALL noshowbase(ios_base& __s)
1297.331 -  { __s.unsetf(ios_base::showbase); return __s;}
1297.332 -
1297.333 -inline ios_base& _STLP_CALL showpoint(ios_base& __s)
1297.334 -  { __s.setf(ios_base::showpoint); return __s;}
1297.335 -
1297.336 -inline ios_base& _STLP_CALL noshowpoint(ios_base& __s)
1297.337 -  { __s.unsetf(ios_base::showpoint); return __s;}
1297.338 -
1297.339 -inline ios_base& _STLP_CALL showpos(ios_base& __s)
1297.340 -  { __s.setf(ios_base::showpos); return __s;}
1297.341 -
1297.342 -inline ios_base& _STLP_CALL noshowpos(ios_base& __s) 
1297.343 -  { __s.unsetf(ios_base::showpos); return __s;}
1297.344 -
1297.345 -inline ios_base& _STLP_CALL skipws(ios_base& __s)
1297.346 -  { __s.setf(ios_base::skipws); return __s;}
1297.347 -
1297.348 -inline ios_base& _STLP_CALL noskipws(ios_base& __s)
1297.349 -  { __s.unsetf(ios_base::skipws); return __s;}
1297.350 -
1297.351 -inline ios_base& _STLP_CALL uppercase(ios_base& __s)
1297.352 -  { __s.setf(ios_base::uppercase); return __s;}
1297.353 -
1297.354 -inline ios_base& _STLP_CALL nouppercase(ios_base& __s)
1297.355 -  { __s.unsetf(ios_base::uppercase); return __s;}
1297.356 -
1297.357 -inline ios_base& _STLP_CALL unitbuf(ios_base& __s)
1297.358 -  { __s.setf(ios_base::unitbuf); return __s;}
1297.359 -
1297.360 -inline ios_base& _STLP_CALL nounitbuf(ios_base& __s)
1297.361 -  { __s.unsetf(ios_base::unitbuf); return __s;}
1297.362 -
1297.363 -
1297.364 -// adjustfield manipulators, section 27.4.5.2
1297.365 -inline ios_base& _STLP_CALL internal(ios_base& __s)
1297.366 -  { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; }
1297.367 -
1297.368 -inline ios_base& _STLP_CALL left(ios_base& __s)
1297.369 -  { __s.setf(ios_base::left, ios_base::adjustfield); return __s; }
1297.370 -
1297.371 -inline ios_base& _STLP_CALL right(ios_base& __s)
1297.372 -  { __s.setf(ios_base::right, ios_base::adjustfield); return __s; }
1297.373 -
1297.374 -// basefield manipulators, section 27.4.5.3
1297.375 -inline ios_base& _STLP_CALL dec(ios_base& __s)
1297.376 -  { __s.setf(ios_base::dec, ios_base::basefield); return __s; }
1297.377 -
1297.378 -inline ios_base& _STLP_CALL hex(ios_base& __s) 
1297.379 -  { __s.setf(ios_base::hex, ios_base::basefield); return __s; }
1297.380 -
1297.381 -inline ios_base& _STLP_CALL oct(ios_base& __s)
1297.382 -  { __s.setf(ios_base::oct, ios_base::basefield); return __s; }
1297.383 -
1297.384 -
1297.385 -// floatfield manipulators, section 27.4.5.3
1297.386 -inline ios_base& _STLP_CALL fixed(ios_base& __s)
1297.387 -  { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; }
1297.388 -
1297.389 -inline ios_base& _STLP_CALL scientific(ios_base& __s)
1297.390 -  { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; }
1297.391 -
1297.392 -#if defined(__BORLANDC__) && defined(_RTLDLL)
1297.393 -
1297.394 -long ios_base::_Loc_init::_S_count = 0;
1297.395 -
1297.396 -void _STLP_CALL _Stl_loc_init_num_put();
1297.397 -void _STLP_CALL _Stl_loc_init_num_get();
1297.398 -void _STLP_CALL _Stl_loc_init_monetary();
1297.399 -void _STLP_CALL _Stl_loc_init_time_facets();
1297.400 -
1297.401 -inline ios_base::_Loc_init::_Loc_init() {
1297.402 -  if (_S_count++ == 0) {
1297.403 -      _Stl_loc_init_num_put();
1297.404 -      _Stl_loc_init_num_get();
1297.405 -      _Stl_loc_init_monetary();
1297.406 -      _Stl_loc_init_time_facets();
1297.407 -      locale::_S_initialize();
1297.408 -  }
1297.409 -}
1297.410 -
1297.411 -inline ios_base::_Loc_init::~_Loc_init() {
1297.412 -    if (--_S_count == 0)
1297.413 -      locale::_S_uninitialize();
1297.414 -}
1297.415 -
1297.416 -#endif /* __BORLANDC__ */
1297.417 -
1297.418 -#if 0
1297.419 -#ifdef __SYMBIAN32__
1297.420 -#pragma message("Symbian I/O stream support on progress.")
1297.421 -inline ios_base::_Loc_init::_Loc_init() {
1297.422 -}
1297.423 -
1297.424 -inline ios_base::_Loc_init::~_Loc_init() {
1297.425 -}
1297.426 -#endif
1297.427 -
1297.428 -inline ios_base::Init::Init() {
1297.429 -}
1297.430 -
1297.431 -inline ios_base::Init::~Init() {
1297.432 -}
1297.433 -#endif
1297.434 -
1297.435 -_STLP_END_NAMESPACE
1297.436 -
1297.437 -#endif /* _STLP_IOS_BASE */
1297.438 -
1297.439 -// Local Variables:
1297.440 -// mode:C++
1297.441 -// End:
1297.442 -
  1298.1 --- a/epoc32/include/stdapis/stlport/stl/_iosfwd.h	Tue Mar 16 16:12:26 2010 +0000
  1298.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1298.3 @@ -1,159 +0,0 @@
  1298.4 -# ifndef _STLP_INTERNAL_IOSFWD
  1298.5 -#  define _STLP_INTERNAL_IOSFWD
  1298.6 -
  1298.7 -#if defined(__sgi) && !defined(__GNUC__) && !defined(_STANDARD_C_PLUS_PLUS)
  1298.8 -#error This header file requires the -LANG:std option
  1298.9 -#endif
 1298.10 -
 1298.11 -// This file provides forward declarations of the most important I/O
 1298.12 -// classes.  Note that almost all of those classes are class templates,
 1298.13 -// with default template arguments.  According to the C++ standard, 
 1298.14 -// if a class template is declared more than once in the same scope
 1298.15 -// then only one of those declarations may have default arguments.  
 1298.16 -
 1298.17 -// <iosfwd> contains the same declarations as other headers, and including
 1298.18 -// both <iosfwd> and (say) <iostream> is permitted.  This means that only
 1298.19 -// one header may contain those default template arguments.
 1298.20 -
 1298.21 -// In this implementation, the declarations in <iosfwd> contain default
 1298.22 -// template arguments.  All of the other I/O headers include <iosfwd>.
 1298.23 -
 1298.24 -#ifndef _STLP_CHAR_TRAITS_H
 1298.25 -# include <stl/char_traits.h>
 1298.26 -#endif
 1298.27 -
 1298.28 -_STLP_BEGIN_NAMESPACE
 1298.29 -
 1298.30 -class _STLP_CLASS_DECLSPEC ios_base;
 1298.31 -
 1298.32 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.33 -class basic_ios;
 1298.34 -
 1298.35 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.36 -class basic_streambuf;
 1298.37 -
 1298.38 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.39 -class basic_istream;
 1298.40 -
 1298.41 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.42 -class basic_ostream;
 1298.43 -
 1298.44 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.45 -class basic_iostream;
 1298.46 -
 1298.47 -template <class _CharT, __DFL_TMPL_PARAM( _Traits , char_traits<_CharT>),
 1298.48 -          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1298.49 -class basic_stringbuf;
 1298.50 -
 1298.51 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
 1298.52 -          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1298.53 -class basic_istringstream;
 1298.54 -
 1298.55 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
 1298.56 -          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1298.57 -class basic_ostringstream;
 1298.58 -
 1298.59 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
 1298.60 -          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1298.61 -class basic_stringstream;
 1298.62 -
 1298.63 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.64 -class basic_filebuf;
 1298.65 -
 1298.66 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.67 -class basic_ifstream;
 1298.68 -
 1298.69 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.70 -class basic_ofstream;
 1298.71 -
 1298.72 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.73 -class basic_fstream;
 1298.74 -
 1298.75 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.76 -class istreambuf_iterator;
 1298.77 -
 1298.78 -template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1298.79 -class ostreambuf_iterator;
 1298.80 -
 1298.81 -typedef basic_ios<char, char_traits<char> >    ios;
 1298.82 -
 1298.83 -# ifndef _STLP_NO_WCHAR_T
 1298.84 -typedef basic_ios<wchar_t, char_traits<wchar_t> > wios;
 1298.85 -# endif
 1298.86 -
 1298.87 -// Forward declaration of class locale, and of the most important facets.
 1298.88 -class locale;
 1298.89 -# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
 1298.90 -template <class _Facet>
 1298.91 -struct _Use_facet {
 1298.92 -  const locale& __loc;
 1298.93 -  _Use_facet(const locale& __p_loc) : __loc(__p_loc) {}
 1298.94 -  inline const _Facet& operator *() const;
 1298.95 -};
 1298.96 -# define use_facet *_Use_facet
 1298.97 -# else
 1298.98 -template <class _Facet> inline const _Facet& use_facet(const locale&);
 1298.99 -# endif
1298.100 -
1298.101 -template <class _CharT> class ctype;
1298.102 -template <class _CharT> class ctype_byname;
1298.103 -template <class _CharT> class collate;
1298.104 -template <class _CharT> class collate_byname;
1298.105 -
1298.106 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype<char>;
1298.107 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype_byname<char>;
1298.108 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate<char>;
1298.109 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate_byname<char>;
1298.110 -
1298.111 -#  ifndef _STLP_NO_WCHAR_T
1298.112 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype<wchar_t>;
1298.113 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype_byname<wchar_t>;
1298.114 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate<wchar_t>;
1298.115 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate_byname<wchar_t>;
1298.116 -#  endif
1298.117 -
1298.118 -# if !(defined (__SUNPRO_CC) && __SUNPRO_CC < 0x500 ) && !defined(_STLP_WINCE)
1298.119 -// Typedefs for ordinary (narrow-character) streams.
1298.120 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC basic_streambuf<char, char_traits<char> >;
1298.121 -# endif
1298.122 -
1298.123 -typedef basic_istream<char, char_traits<char> >   istream;
1298.124 -typedef basic_ostream<char, char_traits<char> >   ostream;
1298.125 -typedef basic_iostream<char, char_traits<char> >  iostream;
1298.126 -typedef basic_streambuf<char,char_traits<char> > streambuf;
1298.127 -
1298.128 -typedef basic_stringbuf<char, char_traits<char>, allocator<char> >     stringbuf;
1298.129 -typedef basic_istringstream<char, char_traits<char>, allocator<char> > istringstream;
1298.130 -typedef basic_ostringstream<char, char_traits<char>, allocator<char> > ostringstream;
1298.131 -typedef basic_stringstream<char, char_traits<char>, allocator<char> >  stringstream;
1298.132 -
1298.133 -typedef basic_filebuf<char, char_traits<char> >  filebuf;
1298.134 -typedef basic_ifstream<char, char_traits<char> > ifstream;
1298.135 -typedef basic_ofstream<char, char_traits<char> > ofstream;
1298.136 -typedef basic_fstream<char, char_traits<char> >  fstream;
1298.137 -
1298.138 -# ifndef _STLP_NO_WCHAR_T
1298.139 -// Typedefs for wide-character streams.
1298.140 -typedef basic_streambuf<wchar_t, char_traits<wchar_t> > wstreambuf;
1298.141 -typedef basic_istream<wchar_t, char_traits<wchar_t> >   wistream;
1298.142 -typedef basic_ostream<wchar_t, char_traits<wchar_t> >   wostream;
1298.143 -typedef basic_iostream<wchar_t, char_traits<wchar_t> >  wiostream;
1298.144 -
1298.145 -typedef basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >     wstringbuf;
1298.146 -typedef basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wistringstream;
1298.147 -typedef basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wostringstream;
1298.148 -typedef basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >  wstringstream;
1298.149 -
1298.150 -typedef basic_filebuf<wchar_t, char_traits<wchar_t> >  wfilebuf;
1298.151 -typedef basic_ifstream<wchar_t, char_traits<wchar_t> > wifstream;
1298.152 -typedef basic_ofstream<wchar_t, char_traits<wchar_t> > wofstream;
1298.153 -typedef basic_fstream<wchar_t, char_traits<wchar_t> >  wfstream;
1298.154 -# endif
1298.155 -
1298.156 -_STLP_END_NAMESPACE
1298.157 -
1298.158 -#endif
1298.159 -
1298.160 -// Local Variables:
1298.161 -// mode:C++
1298.162 -// End:
  1299.1 --- a/epoc32/include/stdapis/stlport/stl/_istream.c	Tue Mar 16 16:12:26 2010 +0000
  1299.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1299.3 @@ -1,1534 +0,0 @@
  1299.4 -/*
  1299.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1299.6 - * Copyright (c) 1999
  1299.7 - * Silicon Graphics Computer Systems, Inc.
  1299.8 - *
  1299.9 - * Copyright (c) 1999
 1299.10 - * Boris Fomitchev
 1299.11 - *
 1299.12 - * This material is provided "as is", with absolutely no warranty expressed
 1299.13 - * or implied. Any use is at your own risk.
 1299.14 - *
 1299.15 - * Permission to use or copy this software for any purpose is hereby granted
 1299.16 - * without fee, provided the above notices are retained on all copies.
 1299.17 - * Permission to modify the code and to distribute modified code is granted,
 1299.18 - * provided the above notices are retained, and a notice that the code was
 1299.19 - * modified is included with the above copyright notice.
 1299.20 - *
 1299.21 - */
 1299.22 -#ifndef _STLP_ISTREAM_C
 1299.23 -#define _STLP_ISTREAM_C
 1299.24 -
 1299.25 -#ifndef _STLP_INTERNAL_ISTREAM_H
 1299.26 -# include <stl/_istream.h>
 1299.27 -#endif
 1299.28 -
 1299.29 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1299.30 -
 1299.31 -#ifndef _STLP_LIMITS_H
 1299.32 -# include <stl/_limits.h>
 1299.33 -#endif
 1299.34 -
 1299.35 -#ifndef _STLP_INTERNAL_NUM_GET_H
 1299.36 -# include <stl/_num_get.h>
 1299.37 -#endif
 1299.38 -
 1299.39 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1299.40 -// no wchar_t is supported for this mode
 1299.41 -# define __BIS_int_type__ int
 1299.42 -# define __BIS_pos_type__ streampos
 1299.43 -# define __BIS_off_type__ streamoff
 1299.44 -# else
 1299.45 -# define __BIS_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::int_type
 1299.46 -# define __BIS_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::pos_type
 1299.47 -# define __BIS_off_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::off_type
 1299.48 -# endif
 1299.49 -
 1299.50 -_STLP_BEGIN_NAMESPACE
 1299.51 -
 1299.52 -//----------------------------------------------------------------------
 1299.53 -// Function object structs used by some member functions.
 1299.54 -
 1299.55 -template <class _Traits>
 1299.56 -struct _Is_not_wspace {
 1299.57 -  typedef typename _Traits::char_type argument_type;
 1299.58 -  typedef bool                        result_type;
 1299.59 -
 1299.60 -  const ctype<argument_type>* _M_ctype;
 1299.61 -
 1299.62 -  _Is_not_wspace(const ctype<argument_type>* __c_type) : _M_ctype(__c_type) {}
 1299.63 -  bool operator()(argument_type __c) const
 1299.64 -    { return !_M_ctype->is(ctype_base::space, __c); }
 1299.65 -};
 1299.66 -
 1299.67 -template <class _Traits>
 1299.68 -struct _Is_wspace_null {
 1299.69 -  typedef typename _Traits::char_type argument_type;
 1299.70 -  typedef bool                        result_type;
 1299.71 -
 1299.72 -  const ctype<argument_type>* _M_ctype;
 1299.73 -
 1299.74 -  _Is_wspace_null(const ctype<argument_type>* __c_type) : _M_ctype(__c_type) {}
 1299.75 -  bool operator()(argument_type __c) const {
 1299.76 -    return _Traits::eq(__c, argument_type()) ||
 1299.77 -           _M_ctype->is(ctype_base::space, __c);
 1299.78 -  }
 1299.79 -};
 1299.80 -
 1299.81 -template <class _Traits>
 1299.82 -struct _Scan_for_wspace {
 1299.83 -  typedef typename _Traits::char_type  char_type;
 1299.84 -  typedef char_type*                   first_argument_type;
 1299.85 -  typedef char_type*                   second_argument_type;
 1299.86 -  typedef char_type*                   result_type;
 1299.87 -
 1299.88 -  const ctype<char_type>* _M_ctype;
 1299.89 -
 1299.90 -  _Scan_for_wspace(const ctype<char_type>* __ctype) : _M_ctype(__ctype) {}
 1299.91 -  const char_type*
 1299.92 -  operator()(const char_type* __first, const char_type* __last) const {
 1299.93 -    return _M_ctype->scan_is(ctype_base::space, __first, __last);
 1299.94 -  }
 1299.95 -};
 1299.96 -
 1299.97 -template <class _Traits>
 1299.98 -struct _Scan_wspace_null {
 1299.99 -  typedef typename _Traits::char_type  char_type;
1299.100 -  typedef char_type*                   first_argument_type;
1299.101 -  typedef char_type*                   second_argument_type;
1299.102 -  typedef char_type*                   result_type;
1299.103 -
1299.104 -  const ctype<char_type>* _M_ctype;
1299.105 -
1299.106 -  _Scan_wspace_null(const ctype<char_type>* __c_type) : _M_ctype(__c_type) {}
1299.107 -  const char_type*
1299.108 -  operator()(const char_type* __first, const char_type* __last) const {
1299.109 -    __last = find_if(__first, __last,
1299.110 -                     _Eq_char_bound<_Traits>(char_type()));
1299.111 -    return _M_ctype->scan_is(ctype_base::space, __first, __last);
1299.112 -  }
1299.113 -};
1299.114 -
1299.115 -template <class _Traits>
1299.116 -struct _Scan_for_not_wspace {
1299.117 -  typedef typename _Traits::char_type  char_type;
1299.118 -  typedef char_type*                   first_argument_type;
1299.119 -  typedef char_type*                   second_argument_type;
1299.120 -  typedef char_type*                   result_type;
1299.121 -
1299.122 -  const ctype<char_type>* _M_ctype;
1299.123 -
1299.124 -  _Scan_for_not_wspace(const ctype<char_type>* __c_type) : _M_ctype(__c_type) {}
1299.125 -  const char_type*
1299.126 -  operator()(const char_type* __first, const char_type* __last) const {
1299.127 -    return _M_ctype->scan_not(ctype_base::space, __first, __last);
1299.128 -  }
1299.129 -};
1299.130 -
1299.131 -template <class _Traits>
1299.132 -struct _Scan_for_char_val
1299.133 -{
1299.134 -  typedef typename _Traits::char_type char_type;
1299.135 -  typedef char_type*                  first_argument_type;
1299.136 -  typedef char_type*                  second_argument_type;
1299.137 -  typedef char_type*                  result_type;
1299.138 -
1299.139 -  char_type _M_val;
1299.140 -
1299.141 -  _Scan_for_char_val(char_type __val) : _M_val(__val) {}
1299.142 -
1299.143 -  const char_type*
1299.144 -  operator()(const char_type* __first, const char_type* __last) const {
1299.145 -    return find_if(__first, __last, _Eq_char_bound<_Traits>(_M_val));
1299.146 -  }
1299.147 -};
1299.148 -
1299.149 -template <class _Traits>
1299.150 -struct _Scan_for_int_val
1299.151 -{
1299.152 -  typedef typename _Traits::char_type char_type;
1299.153 -  typedef typename _Traits::int_type  int_type;
1299.154 -  typedef char_type*                  first_argument_type;
1299.155 -  typedef char_type*                  second_argument_type;
1299.156 -  typedef char_type*                  result_type;
1299.157 -
1299.158 -  int_type _M_val;
1299.159 -
1299.160 -  _Scan_for_int_val(int_type __val) : _M_val(__val) {}
1299.161 -
1299.162 -  const char_type*
1299.163 -  operator()(const char_type* __first, const char_type* __last) const {
1299.164 -    return find_if(__first, __last,
1299.165 -                   _Eq_int_bound<_Traits>(_M_val));
1299.166 -  }
1299.167 -};
1299.168 -
1299.169 -// Helper function: try to push back a character to a streambuf,
1299.170 -// return true if the pushback succeeded.  Does not throw.
1299.171 -
1299.172 -template <class _CharT, class _Traits>
1299.173 -bool _STLP_CALL
1299.174 -__pushback(basic_streambuf<_CharT, _Traits>* __buf, _CharT __c)
1299.175 -{
1299.176 -  bool ret;
1299.177 -  _STLP_TRY {
1299.178 -    const typename _Traits::int_type __eof = _Traits::eof();
1299.179 -    ret = !_Traits::eq_int_type(__buf->sputbackc(__c), __eof);
1299.180 -  }
1299.181 -  _STLP_CATCH_ALL {
1299.182 -    ret = false;
1299.183 -  }
1299.184 -  return ret;
1299.185 -}
1299.186 -
1299.187 -template <class _CharT, class _Traits>
1299.188 -basic_istream<_CharT, _Traits>& _STLP_CALL
1299.189 -ws(basic_istream<_CharT, _Traits>& __is)
1299.190 -{
1299.191 -  typedef typename basic_istream<_CharT, _Traits>::sentry      _Sentry;
1299.192 -  _Sentry __sentry(__is, _No_Skip_WS()); // Don't skip whitespace.
1299.193 -  if (__sentry)
1299.194 -    __is._M_skip_whitespace(false);
1299.195 -  return __is;
1299.196 -}
1299.197 -
1299.198 -// Helper functions for istream<>::sentry constructor.
1299.199 -template <class _CharT, class _Traits>
1299.200 -bool
1299.201 -_M_init_skip(basic_istream<_CharT, _Traits>& __is) {
1299.202 -  if (__is.good()) {
1299.203 -    if (__is.tie())
1299.204 -      __is.tie()->flush();
1299.205 -
1299.206 -    __is._M_skip_whitespace(true);
1299.207 -  }
1299.208 -
1299.209 -  if (!__is.good()) {
1299.210 -    __is.setstate(ios_base::failbit);
1299.211 -    return false;
1299.212 -  } else
1299.213 -    return true;
1299.214 -}
1299.215 -
1299.216 -template <class _CharT, class _Traits>
1299.217 -bool
1299.218 -_M_init_noskip(basic_istream<_CharT, _Traits>& __is){
1299.219 -  if (__is.good()) {
1299.220 -    if (__is.tie())
1299.221 -      __is.tie()->flush();
1299.222 -
1299.223 -    if (!__is.rdbuf())
1299.224 -      __is.setstate(ios_base::badbit);
1299.225 -  }
1299.226 -  else
1299.227 -    __is.setstate(ios_base::failbit);
1299.228 -  return __is.good();
1299.229 -}
1299.230 -
1299.231 -//----------------------------------------------------------------------
1299.232 -// Definitions of basic_istream<>'s noninline member functions.
1299.233 -
1299.234 -// Helper function for formatted input of numbers.
1299.235 -template <class _CharT, class _Traits, class _Number>
1299.236 -ios_base::iostate _STLP_CALL
1299.237 -_M_get_num(basic_istream<_CharT, _Traits>& __that, _Number& __val)
1299.238 -{
1299.239 -  typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry;
1299.240 -  ios_base::iostate __err = 0;
1299.241 -  _Sentry __sentry( __that );     // Skip whitespace.
1299.242 -  if (__sentry) {
1299.243 -    typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > _Num_get;
1299.244 -    _STLP_TRY {
1299.245 -      ((const _Num_get&)use_facet<_Num_get>(__that.getloc())).get(istreambuf_iterator<_CharT, _Traits>(__that.rdbuf()),
1299.246 -					0, __that, __err, __val);
1299.247 -    }
1299.248 -    _STLP_CATCH_ALL {
1299.249 -      __that._M_handle_exception(ios_base::badbit);
1299.250 -    }
1299.251 -    if (__err) __that.setstate(__err);
1299.252 -  }
1299.253 -  return __err;
1299.254 -}
1299.255 -
1299.256 -
1299.257 -// Unformatted input
1299.258 -
1299.259 -template <class _CharT, class _Traits>
1299.260 -__BIS_int_type__
1299.261 -basic_istream<_CharT, _Traits>::peek()
1299.262 -{
1299.263 -  typename _Traits::int_type __tmp = _Traits::eof();
1299.264 -
1299.265 -  this->_M_gcount = 0;
1299.266 -  sentry __sentry(*this, _No_Skip_WS());
1299.267 -
1299.268 -  if (__sentry) {
1299.269 -    _STLP_TRY {
1299.270 -      __tmp = this->rdbuf()->sgetc();
1299.271 -    }
1299.272 -    _STLP_CATCH_ALL {
1299.273 -      this->_M_handle_exception(ios_base::badbit);
1299.274 -    }
1299.275 -  }
1299.276 -  else
1299.277 -  {
1299.278 -    if (this->_S_eof(__tmp))
1299.279 -    {
1299.280 -      this->clear();
1299.281 -      this->setstate(ios_base::eofbit);
1299.282 -    }
1299.283 -  }
1299.284 -  return __tmp;
1299.285 -}
1299.286 -
1299.287 -
1299.288 -template <class _CharT, class _Traits>
1299.289 -__BIS_int_type__
1299.290 -basic_istream<_CharT, _Traits>::get()
1299.291 -{
1299.292 -  typename _Traits::int_type __tmp = _Traits::eof();
1299.293 -  sentry __sentry(*this, _No_Skip_WS());
1299.294 -  this->_M_gcount = 0;
1299.295 -
1299.296 -  if (__sentry) {
1299.297 -    _STLP_TRY {
1299.298 -      __tmp = this->rdbuf()->sbumpc();
1299.299 -    }
1299.300 -    _STLP_CATCH_ALL {
1299.301 -      this->_M_handle_exception(ios_base::badbit);
1299.302 -    }
1299.303 -
1299.304 -    if (!this->_S_eof(__tmp))
1299.305 -      this->_M_gcount = 1;
1299.306 -  }
1299.307 -
1299.308 -  if (_M_gcount == 0)
1299.309 -    this->setstate(ios_base::eofbit | ios_base::failbit);
1299.310 -
1299.311 -  return __tmp;
1299.312 -}
1299.313 -
1299.314 -template <class _CharT, class _Traits>
1299.315 -basic_istream<_CharT, _Traits>&
1299.316 -basic_istream<_CharT, _Traits>::get(_CharT& __c)
1299.317 -{
1299.318 -  sentry __sentry(*this, _No_Skip_WS());
1299.319 -  this->_M_gcount = 0;
1299.320 -
1299.321 -  if (__sentry) {
1299.322 -    typename _Traits::int_type __tmp = _Traits::eof();
1299.323 -    _STLP_TRY {
1299.324 -      __tmp = this->rdbuf()->sbumpc();
1299.325 -    }
1299.326 -    _STLP_CATCH_ALL {
1299.327 -      this->_M_handle_exception(ios_base::badbit);
1299.328 -    }
1299.329 -
1299.330 -    if (!this->_S_eof(__tmp)) {
1299.331 -      this->_M_gcount = 1;
1299.332 -      __c = _Traits::to_char_type(__tmp);
1299.333 -    }
1299.334 -  }
1299.335 -
1299.336 -  if (this->_M_gcount == 0)
1299.337 -    this->setstate(ios_base::eofbit | ios_base::failbit);
1299.338 -
1299.339 -  return *this;
1299.340 -}
1299.341 -
1299.342 -
1299.343 -
1299.344 -// Read characters and discard them.  The standard specifies a single
1299.345 -// function with two arguments, each with a default.  We instead use
1299.346 -// three overloded functions, because it's possible to implement the
1299.347 -// first two more efficiently than the fully general third version.
1299.348 -template <class _CharT, class _Traits>
1299.349 -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::ignore()
1299.350 -{
1299.351 -  sentry __sentry(*this, _No_Skip_WS());
1299.352 -  this->_M_gcount = 0;
1299.353 -
1299.354 -  if (__sentry) {
1299.355 -    int_type __c;
1299.356 -    _STLP_TRY {
1299.357 -      __c = this->rdbuf()->sbumpc();
1299.358 -    }
1299.359 -    _STLP_CATCH_ALL {
1299.360 -      this->_M_handle_exception(ios_base::badbit);
1299.361 -      return *this;
1299.362 -    }
1299.363 -
1299.364 -    if (!this->_S_eof(__c))
1299.365 -      this->_M_gcount = 1;
1299.366 -    else
1299.367 -      this->setstate(ios_base::eofbit);
1299.368 -  }
1299.369 -
1299.370 -  return *this;
1299.371 -}
1299.372 -
1299.373 -// Putback
1299.374 -
1299.375 -template <class _CharT, class _Traits>
1299.376 -basic_istream<_CharT, _Traits>&
1299.377 -basic_istream<_CharT, _Traits>::putback(_CharT __c) {
1299.378 -  this->_M_gcount = 0;
1299.379 -  sentry __sentry(*this, _No_Skip_WS());
1299.380 -
1299.381 -  if (__sentry) {
1299.382 -    typename _Traits::int_type __tmp = _Traits::eof();
1299.383 -    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.384 -//    if (!__buf || this->_S_eof(__buf->sputbackc(__c)))
1299.385 -    if (__buf) {
1299.386 -      _STLP_TRY {
1299.387 -        __tmp = __buf->sputbackc(__c);
1299.388 -      }
1299.389 -      _STLP_CATCH_ALL {
1299.390 -        this->_M_handle_exception(ios_base::badbit);
1299.391 -      }
1299.392 -    }
1299.393 -    if (this->_S_eof(__tmp))
1299.394 -      this->setstate(ios_base::badbit);
1299.395 -  }
1299.396 -  else
1299.397 -    this->setstate(ios_base::failbit);
1299.398 -
1299.399 -  return *this;
1299.400 -}
1299.401 -
1299.402 -template <class _CharT, class _Traits>
1299.403 -basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::unget() {
1299.404 -  this->_M_gcount = 0;
1299.405 -
1299.406 -  sentry __sentry(*this, _No_Skip_WS());
1299.407 -
1299.408 -  if (__sentry) {
1299.409 -    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.410 -    //     if (!__buf || _Traits::eq_int_type(__buf->sungetc(), _Traits::eof()))
1299.411 -    if (__buf) {
1299.412 -      _STLP_TRY {
1299.413 -        _CharT __tmp;
1299.414 -        __tmp = __buf->sungetc();
1299.415 -#ifdef 	__SYMBIAN32__
1299.416 -	if (__tmp == (_CharT)-1) //chek for eof
1299.417 -#else
1299.418 -        if (this->_S_eof(__tmp))
1299.419 -#endif			
1299.420 -          this->setstate(ios_base::badbit);
1299.421 -      }
1299.422 -      _STLP_CATCH_ALL {
1299.423 -        this->_M_handle_exception(ios_base::badbit);
1299.424 -      }
1299.425 -    } else
1299.426 -      this->setstate(ios_base::badbit);
1299.427 -  }
1299.428 -  else
1299.429 -    this->setstate(ios_base::failbit);
1299.430 -
1299.431 -  return *this;
1299.432 -}
1299.433 -
1299.434 -// Positioning and buffer control.
1299.435 -
1299.436 -template <class _CharT, class _Traits>
1299.437 -int basic_istream<_CharT, _Traits>::sync() {
1299.438 -  sentry __sentry(*this, _No_Skip_WS());
1299.439 -
1299.440 -  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.441 -  if (__buf) {
1299.442 -    if (__buf->pubsync() == -1) {
1299.443 -      this->setstate(ios_base::badbit);
1299.444 -      return -1;
1299.445 -    }
1299.446 -    else
1299.447 -      return 0;
1299.448 -  }
1299.449 -  else
1299.450 -    return -1;
1299.451 -}
1299.452 -
1299.453 -template <class _CharT, class _Traits>
1299.454 -__BIS_pos_type__
1299.455 -basic_istream<_CharT, _Traits>::tellg() {
1299.456 -#ifndef __SYMBIAN32__
1299.457 -  sentry __sentry(*this, _No_Skip_WS());
1299.458 -#endif
1299.459 -  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.460 -  return (__buf && !this->fail()) ? __buf->pubseekoff(0, ios_base::cur, ios_base::in)
1299.461 -    : pos_type(-1);
1299.462 -}
1299.463 -
1299.464 -template <class _CharT, class _Traits>
1299.465 -basic_istream<_CharT, _Traits>&
1299.466 -basic_istream<_CharT, _Traits>::seekg(pos_type __pos) {
1299.467 -#ifndef __SYMBIAN32__
1299.468 -  sentry __sentry(*this, _No_Skip_WS());
1299.469 -#endif
1299.470 -  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.471 -  if (!this->fail() && __buf)
1299.472 -  {
1299.473 -    pos_type pos = __buf->pubseekpos(__pos, ios_base::in);
1299.474 -    if(pos == pos_type(off_type(-1)))
1299.475 -    	this->setstate(ios_base::failbit);
1299.476 -  }
1299.477 -  return *this;
1299.478 -}
1299.479 -
1299.480 -template <class _CharT, class _Traits>
1299.481 -basic_istream<_CharT, _Traits>&
1299.482 -basic_istream<_CharT, _Traits>::seekg(off_type __off, ios_base::seekdir __dir)
1299.483 -{
1299.484 -#ifndef __SYMBIAN32__
1299.485 -  sentry __sentry(*this, _No_Skip_WS());
1299.486 -#endif
1299.487 -  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.488 -  if (!this->fail() && __buf)
1299.489 -  {
1299.490 -
1299.491 -    pos_type pos = __buf->pubseekoff(__off, __dir, ios_base::in);
1299.492 -    if(pos == pos_type(off_type(-1)))
1299.493 -     	this->setstate(ios_base::failbit);
1299.494 -  }
1299.495 -  return *this;
1299.496 -}
1299.497 -
1299.498 -// Formatted input of characters and character arrays.
1299.499 -
1299.500 -template <class _CharT, class _Traits>
1299.501 -void basic_istream<_CharT, _Traits>::_M_formatted_get(_CharT& __c)
1299.502 -{
1299.503 -//  typename _Traits::int_type __tmp = _Traits::eof();
1299.504 -
1299.505 -  sentry __sentry(*this); // Skip whitespace.
1299.506 -
1299.507 -  if (__sentry) {
1299.508 -    typename _Traits::int_type __tmp = _Traits::eof();
1299.509 -
1299.510 -    _STLP_TRY {
1299.511 -      __tmp = this->rdbuf()->sbumpc();
1299.512 -    }
1299.513 -    _STLP_CATCH_ALL {
1299.514 -      this->_M_handle_exception(ios_base::badbit);
1299.515 -      return;
1299.516 -    }
1299.517 -
1299.518 -    if (!this->_S_eof(__tmp))
1299.519 -      __c = _Traits::to_char_type(__tmp);
1299.520 -    else
1299.521 -      this->setstate(ios_base::eofbit | ios_base::failbit);
1299.522 -  }
1299.523 -}
1299.524 -
1299.525 -
1299.526 -//---------------------------------------------------------------------------
1299.527 -// istream's helper functions.
1299.528 -
1299.529 -// A generic function for unbuffered input.  We stop when we reach EOF,
1299.530 -// or when we have extracted _Num characters, or when the function object
1299.531 -// __is_delim return true.  In the last case, it extracts the character
1299.532 -// for which __is_delim is true, if and only if __extract_delim is true.
1299.533 -// It appends a null character to the end of the string; this means that
1299.534 -// it may store up to _Num + 1 characters.
1299.535 -//
1299.536 -// __is_getline governs two corner cases: reading _Num characters without
1299.537 -// encountering delim or eof (in which case failbit is set if __is_getline
1299.538 -// is true); and reading _Num characters where the _Num+1'st character is
1299.539 -// eof (in which case eofbit is set if __is_getline is true).
1299.540 -//
1299.541 -// It is assumed that __is_delim never throws.
1299.542 -//
1299.543 -// Return value is the number of characters extracted, including the
1299.544 -// delimiter if it is extracted.  Note that the number of characaters
1299.545 -// extracted isn't necessarily the same as the number stored.
1299.546 -
1299.547 -template < class _CharT, class _Traits, class _Is_Delim>
1299.548 -streamsize _STLP_CALL
1299.549 -_M_read_unbuffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __buf,
1299.550 -                       streamsize _Num, _CharT* __s,
1299.551 -                       _Is_Delim __is_delim,
1299.552 -                       bool __extract_delim, bool __append_null,
1299.553 -                       bool __is_getline)
1299.554 -{
1299.555 -  streamsize __n = 0;
1299.556 -  ios_base::iostate __status = 0;
1299.557 -
1299.558 -  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1299.559 -  // The operations that can potentially throw are sbumpc, snextc, and sgetc.
1299.560 -  _STLP_TRY {
1299.561 -# if 0
1299.562 -    int_type __c = __buf->sgetc();
1299.563 -    while (true) {
1299.564 -      if (__that->_S_eof(__c)) {
1299.565 -        if (__n < _Num || __is_getline)
1299.566 -          __status |= ios_base::eofbit;
1299.567 -        break;
1299.568 -      }
1299.569 -
1299.570 -      else if (__is_delim(__c)) {
1299.571 -        if (__extract_delim) {  // Extract and discard current character.
1299.572 -          __buf->sbumpc();
1299.573 -          ++__n;
1299.574 -        }
1299.575 -        break;
1299.576 -      }
1299.577 -
1299.578 -      else if (__n == _Num) {
1299.579 -        if (__is_getline)
1299.580 -          __status |= ios_base::failbit;
1299.581 -        break;
1299.582 -      }
1299.583 -
1299.584 -      *__s++ = _Traits::to_char_type(__c);
1299.585 -      ++__n;
1299.586 -      __c = __buf->snextc();
1299.587 -    }
1299.588 -# else
1299.589 -// int_type __c = __buf->sbumpc(); // __buf->sgetc();
1299.590 -while (true) {
1299.591 -
1299.592 -int_type __c = __buf->sbumpc(); // sschwarz
1299.593 -
1299.594 -if (__that->_S_eof(__c)) {
1299.595 -if (__n < _Num || __is_getline)
1299.596 -__status |= ios_base::eofbit;
1299.597 -break;
1299.598 -}
1299.599 -
1299.600 -else if (__is_delim(__c)) {
1299.601 -if (__extract_delim) { // Extract and discard current character.
1299.602 -// __buf->sbumpc();
1299.603 -++__n;
1299.604 -}
1299.605 -break;
1299.606 -}
1299.607 -
1299.608 -else { // regular character
1299.609 -
1299.610 -*__s++ = _Traits::to_char_type(__c);
1299.611 -++__n;
1299.612 -
1299.613 -}
1299.614 -
1299.615 -if (__n == _Num) {
1299.616 -if (__is_getline) // didn't find delimiter as one of the _Num chars
1299.617 -__status |= ios_base::failbit;
1299.618 -break;
1299.619 -}
1299.620 -
1299.621 -// *__s++ = _Traits::to_char_type(__c);
1299.622 -// ++__n;
1299.623 -
1299.624 -}
1299.625 -
1299.626 -# endif
1299.627 -
1299.628 -  }
1299.629 -  _STLP_CATCH_ALL {
1299.630 -    __that->_M_handle_exception(ios_base::badbit);
1299.631 -    *__s = _STLP_DEFAULT_CONSTRUCTED(_CharT);
1299.632 -    return __n;
1299.633 -  }
1299.634 -
1299.635 -  if (__append_null)
1299.636 -    *__s =  _STLP_DEFAULT_CONSTRUCTED(_CharT);
1299.637 -  if (__status)
1299.638 -    __that->setstate(__status);    // This might throw.
1299.639 -  return __n;
1299.640 -}
1299.641 -
1299.642 -// Much like _M_read_unbuffered, but with one additional function object:
1299.643 -// __scan_delim(first, last) returns the first pointer p in [first, last)
1299.644 -// such that __is_delim(p) is true.
1299.645 -
1299.646 -template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim>
1299.647 -streamsize _STLP_CALL
1299.648 -_M_read_buffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __buf,
1299.649 -                     streamsize _Num, _CharT* __s,
1299.650 -                     _Is_Delim __is_delim, _Scan_Delim __scan_delim,
1299.651 -                     bool __extract_delim, bool __append_null,
1299.652 -                     bool __is_getline)
1299.653 -{
1299.654 -  streamsize __n = 0;
1299.655 -  ios_base::iostate __status = 0;
1299.656 -  bool __done    = false;
1299.657 -
1299.658 -  _STLP_TRY {
1299.659 -    while (__buf->_M_egptr() != __buf->_M_gptr() && !__done) {
1299.660 -      const _CharT* __first = __buf->_M_gptr();
1299.661 -      const _CharT* __last  = __buf->_M_egptr();
1299.662 -      ptrdiff_t __request = _Num - __n;
1299.663 -
1299.664 -      const _CharT* __p  = __scan_delim(__first, __last);
1299.665 -      ptrdiff_t __chunk = (min) (ptrdiff_t(__p - __first), __request);
1299.666 -      _Traits::copy(__s, __first, __chunk);
1299.667 -      __s += __chunk;
1299.668 -      __n += __chunk;
1299.669 -      __buf->_M_gbump((int)__chunk);
1299.670 -
1299.671 -      // We terminated by finding delim.
1299.672 -      if (__p != __last && __p - __first <= __request) {
1299.673 -        if (__extract_delim) {
1299.674 -          __n += 1;
1299.675 -          __buf->_M_gbump(1);
1299.676 -        }
1299.677 -        __done = true;
1299.678 -      }
1299.679 -
1299.680 -      // We terminated by reading all the characters we were asked for.
1299.681 -      else if(__n == _Num) {
1299.682 -
1299.683 -        // Find out if we have reached eof.  This matters for getline.
1299.684 -        if (__is_getline) {
1299.685 -          if (__chunk == __last - __first) {
1299.686 -            if (__that->_S_eof(__buf->sgetc()))
1299.687 -              __status |= ios_base::eofbit;
1299.688 -          }
1299.689 -          else
1299.690 -            __status |= ios_base::failbit;
1299.691 -        }
1299.692 -        __done   = true;
1299.693 -      }
1299.694 -
1299.695 -      // The buffer contained fewer than _Num - __n characters.  Either we're
1299.696 -      // at eof, or we should refill the buffer and try again.
1299.697 -      else {
1299.698 -	if (__that->_S_eof(__buf->sgetc())) {
1299.699 -          __status |= ios_base::eofbit;
1299.700 -          __done = true;
1299.701 -        }
1299.702 -      }
1299.703 -    } // Close the while loop.
1299.704 -  }
1299.705 -  _STLP_CATCH_ALL {
1299.706 -    __that->_M_handle_exception(ios_base::badbit);
1299.707 -    __done = true;
1299.708 -  }
1299.709 -
1299.710 -  if (__done) {
1299.711 -    if (__append_null)
1299.712 -        *__s =  _STLP_DEFAULT_CONSTRUCTED(_CharT);
1299.713 -    if (__status != 0)
1299.714 -      __that->setstate(__status);   // This might throw.
1299.715 -    return __n;
1299.716 -  }
1299.717 -
1299.718 -  // If execution has reached this point, then we have an empty buffer but
1299.719 -  // we have not reached eof.  What that means is that the streambuf has
1299.720 -  // decided to switch from buffered to unbuffered input.  We switch to
1299.721 -  // to _M_read_unbuffered.
1299.722 -
1299.723 -  return __n + _M_read_unbuffered(__that,  __buf, _Num - __n, __s, __is_delim,
1299.724 -                                  __extract_delim,__append_null,__is_getline);
1299.725 -}
1299.726 -
1299.727 -
1299.728 -
1299.729 -
1299.730 -template <class _CharT, class _Traits>
1299.731 -basic_istream<_CharT, _Traits>&
1299.732 -basic_istream<_CharT, _Traits>::get(_CharT* __s, streamsize __n,
1299.733 -                                    _CharT __delim) {
1299.734 -  sentry __sentry(*this, _No_Skip_WS());
1299.735 -  this->_M_gcount = 0;
1299.736 -
1299.737 -  if (__sentry) {
1299.738 -    if (__n > 0) {
1299.739 -      basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.740 -
1299.741 -      if (__buf->egptr() != __buf->gptr())
1299.742 -        this->_M_gcount =
1299.743 -          _M_read_buffered(this,  __buf, __n - 1, __s,
1299.744 -                           _Eq_char_bound<_Traits>(__delim),
1299.745 -                           _Scan_for_char_val<_Traits>(__delim),
1299.746 -                           false, true, false);
1299.747 -      else
1299.748 -        this->_M_gcount =
1299.749 -          _M_read_unbuffered(this,  __buf, __n - 1, __s,
1299.750 -                             _Eq_char_bound<_Traits>(__delim),
1299.751 -                             false, true, false);
1299.752 -    }
1299.753 -  }
1299.754 -#ifdef __SYMBIAN32__
1299.755 -  *(__s + this->_M_gcount) = _STLP_DEFAULT_CONSTRUCTED(_CharT);
1299.756 -#endif //__SYMBIAN32__  
1299.757 -  if (this->_M_gcount == 0)
1299.758 -    this->setstate(ios_base::failbit);
1299.759 -
1299.760 -  return *this;
1299.761 -}
1299.762 -
1299.763 -// Getline is essentially identical to get, except that it extracts
1299.764 -// the delimiter.
1299.765 -template <class _CharT, class _Traits>
1299.766 -basic_istream<_CharT, _Traits>&
1299.767 -basic_istream<_CharT, _Traits>::getline(_CharT* __s, streamsize __n,
1299.768 -                                        _CharT __delim) {
1299.769 -  sentry __sentry(*this, _No_Skip_WS());
1299.770 -  this->_M_gcount = 0;
1299.771 -
1299.772 -  if (__sentry) {
1299.773 -    if (__n > 0) {
1299.774 -      basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.775 -      this->_M_gcount = __buf->egptr() != __buf->gptr()
1299.776 -        ? _M_read_buffered(this,  __buf, __n - 1, __s,
1299.777 -                           _Eq_char_bound<_Traits>(__delim),
1299.778 -                           _Scan_for_char_val<_Traits>(__delim),
1299.779 -                           true, true, true)
1299.780 -        : _M_read_unbuffered(this,  __buf, __n - 1, __s,
1299.781 -                             _Eq_char_bound<_Traits>(__delim),
1299.782 -                             true, true, true);
1299.783 -    }
1299.784 -  }
1299.785 -
1299.786 -  if (this->_M_gcount == 0)
1299.787 -    this->setstate(ios_base::failbit);
1299.788 -
1299.789 -  return *this;
1299.790 -}
1299.791 -
1299.792 -// Read n characters.  We don't look for any delimiter, and we don't
1299.793 -// put in a terminating null character.
1299.794 -template <class _CharT, class _Traits>
1299.795 -basic_istream<_CharT, _Traits>&
1299.796 -basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n)
1299.797 -{
1299.798 -  sentry __sentry(*this, _No_Skip_WS());
1299.799 -  this->_M_gcount = 0;
1299.800 -
1299.801 -  if (__sentry && !this->eof()) {
1299.802 -    basic_streambuf<_CharT, _Traits>*__buf = this->rdbuf();
1299.803 -    if (__buf->gptr() != __buf->egptr())
1299.804 -      _M_gcount
1299.805 -        = _M_read_buffered(this,  __buf, __n, __s,
1299.806 -                           _Constant_unary_fun<bool, int_type>(false),
1299.807 -                           _Project2nd<const _CharT*, const _CharT*>(),
1299.808 -                           false, false, false);
1299.809 -    else
1299.810 -      _M_gcount
1299.811 -        = _M_read_unbuffered(this,  __buf, __n, __s,
1299.812 -                             _Constant_unary_fun<bool, int_type>(false),
1299.813 -                             false, false, false);
1299.814 -  }
1299.815 -  else
1299.816 -    this->setstate(ios_base::failbit);
1299.817 -
1299.818 -  if (this->eof())
1299.819 -    this->setstate(ios_base::eofbit | ios_base::failbit);
1299.820 -
1299.821 -  return *this;
1299.822 -}
1299.823 -
1299.824 -
1299.825 -// Read n or fewer characters.  We don't look for any delimiter, and
1299.826 -// we don't put in a terminating null character.
1299.827 -template <class _CharT, class _Traits>
1299.828 -streamsize
1299.829 -basic_istream<_CharT, _Traits>::readsome(char_type* __s, streamsize __nmax)
1299.830 -{
1299.831 -  sentry __sentry(*this, _No_Skip_WS());
1299.832 -  this->_M_gcount = 0;
1299.833 -
1299.834 -  if (__sentry && !this->eof() && __nmax >= 0) {
1299.835 -
1299.836 -    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.837 -    streamsize __avail = __buf->in_avail();
1299.838 -
1299.839 -    // fbp : isn't full-blown setstate required here ?
1299.840 -    if (__avail == -1)
1299.841 -      this->_M_setstate_nothrow(ios_base::eofbit);
1299.842 -
1299.843 -    else if (__avail != 0) {
1299.844 -
1299.845 -      if (__buf->gptr() != __buf->egptr())
1299.846 -        _M_gcount
1299.847 -          = _M_read_buffered(this,  __buf, (min) (__avail, __nmax), __s,
1299.848 -                             _Constant_unary_fun<bool, int_type>(false),
1299.849 -                             _Project2nd<const _CharT*, const _CharT*>(),
1299.850 -                             false, false, false);
1299.851 -      else
1299.852 -        _M_gcount
1299.853 -          = _M_read_unbuffered(this,  __buf, (min) (__avail, __nmax), __s,
1299.854 -                               _Constant_unary_fun<bool, int_type>(false),
1299.855 -                               false, false, false);
1299.856 -    }
1299.857 -  }
1299.858 -  else {
1299.859 -    // fbp : changed so that failbit is set only there, to pass Dietmar's test
1299.860 -    if (this->eof())
1299.861 -      this->setstate(ios_base::eofbit | ios_base::failbit);
1299.862 -    else
1299.863 -      {
1299.864 -      if (__nmax < 0)
1299.865 -        {
1299.866 -        basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.867 -        streamsize __avail = __buf->in_avail();
1299.868 -        if(__avail == -1)
1299.869 -            this->setstate(ios_base::eofbit);
1299.870 -        }
1299.871 -      else
1299.872 -        this->setstate(ios_base::failbit);
1299.873 -      }
1299.874 -  }
1299.875 -
1299.876 -  //  if (this->eof())
1299.877 -  //    this->setstate(ios_base::eofbit | ios_base::failbit);
1299.878 -
1299.879 -  return _M_gcount;
1299.880 -}
1299.881 -
1299.882 -template <class _CharT, class _Traits>
1299.883 -void basic_istream<_CharT, _Traits>::_M_formatted_get(_CharT* __s)
1299.884 -{
1299.885 -  sentry __sentry(*this); // Skip whitespace.
1299.886 -
1299.887 -  if (__sentry) {
1299.888 -    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.889 -    streamsize __nmax = this->width() > 0
1299.890 -      ? this->width() - 1
1299.891 -      : (numeric_limits<streamsize>::max)() / sizeof(_CharT) - 1;
1299.892 -
1299.893 -    streamsize __n = __buf->gptr() != __buf->egptr()
1299.894 -      ? _M_read_buffered(this,  __buf, __nmax, __s,
1299.895 -                         _Is_wspace_null<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1299.896 -                         _Scan_wspace_null<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1299.897 -			 false, true, false)
1299.898 -      : _M_read_unbuffered(this,  __buf, __nmax, __s,
1299.899 -                           _Is_wspace_null<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1299.900 -			   false, true, false);
1299.901 -    if (__n == 0)
1299.902 -      this->setstate(ios_base::failbit);
1299.903 -  }
1299.904 -  this->width(0);
1299.905 -}
1299.906 -
1299.907 -// A generic unbuffered function for ignoring characters.  We stop
1299.908 -// when we reach EOF, or when the function object __is_delim returns
1299.909 -// true.  In the last case, it extracts the character for which
1299.910 -// __is_delim is true, if and only if __extract_delim is true.
1299.911 -
1299.912 -template < class _CharT, class _Traits, class _Is_Delim>
1299.913 -void _STLP_CALL
1299.914 -_M_ignore_unbuffered(basic_istream<_CharT, _Traits>* __that,
1299.915 -		     basic_streambuf<_CharT, _Traits>* __buf,
1299.916 -		     _Is_Delim __is_delim,
1299.917 -		     bool __extract_delim, bool __set_failbit)
1299.918 -{
1299.919 -  bool __done = false;
1299.920 -  ios_base::iostate __status = 0;
1299.921 -  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1299.922 -
1299.923 -  _STLP_TRY {
1299.924 -#ifdef __SYMBIAN32__
1299.925 -    int_type __c = __buf->sgetc();
1299.926 -    do {
1299.927 -
1299.928 -      if (__that->_S_eof(__c)) {
1299.929 -        __done = true;
1299.930 -        __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit
1299.931 -                                  : ios_base::eofbit;
1299.932 -        break;
1299.933 -      }
1299.934 -
1299.935 -      else if (__is_delim(__c)) {
1299.936 -        __done = true;
1299.937 -        if (__extract_delim)
1299.938 -            __buf->snextc();
1299.939 -        break;
1299.940 -        
1299.941 -        }
1299.942 -      __c = __buf->snextc();        
1299.943 -      } while(!__done);
1299.944 -#else
1299.945 -    while (!__done) {
1299.946 -      int_type __c = __buf->sbumpc();
1299.947 -
1299.948 -      if (__that->_S_eof(__c)) {
1299.949 -        __done = true;
1299.950 -        __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit
1299.951 -                                  : ios_base::eofbit;
1299.952 -      }
1299.953 -
1299.954 -      else if (__is_delim(__c)) {
1299.955 -        __done = true;
1299.956 -        if (!__extract_delim)
1299.957 -          if (__that->_S_eof(__buf->sputbackc(_Traits::to_char_type(__c))))
1299.958 -            __status |= ios_base::failbit;
1299.959 -      }
1299.960 -    }
1299.961 -#endif
1299.962 -  }
1299.963 -  _STLP_CATCH_ALL {
1299.964 -    __that->_M_handle_exception(ios_base::badbit);
1299.965 -  }
1299.966 -
1299.967 -  __that->setstate(__status);
1299.968 -}
1299.969 -
1299.970 -// A generic buffered function for ignoring characters.  Much like
1299.971 -// _M_ignore_unbuffered, but with one additional function object:
1299.972 -// __scan_delim(first, last) returns the first pointer p in [first,
1299.973 -// last) such that __is_delim(p) is true.
1299.974 -
1299.975 -template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim>
1299.976 -void _STLP_CALL
1299.977 -_M_ignore_buffered(basic_istream<_CharT, _Traits>* __that,
1299.978 -		   basic_streambuf<_CharT, _Traits>* __buf,
1299.979 -		   _Is_Delim __is_delim, _Scan_Delim __scan_delim,
1299.980 -		   bool __extract_delim, bool __set_failbit)
1299.981 -{
1299.982 -  bool __at_eof      = false;
1299.983 -  bool __found_delim = false;
1299.984 -
1299.985 -  _STLP_TRY {
1299.986 -    while (__buf->_M_egptr() != __buf->_M_gptr() && !__at_eof && !__found_delim) {
1299.987 -      const _CharT* __p = __scan_delim(__buf->_M_gptr(), __buf->_M_egptr());
1299.988 -      __buf->_M_gbump((int)(__p - __buf->_M_gptr()));
1299.989 -
1299.990 -      if (__p != __buf->_M_egptr()) { // We found delim, so we're done.
1299.991 -        if (__extract_delim)
1299.992 -          __buf->_M_gbump(1);
1299.993 -        __found_delim = true;
1299.994 -      }
1299.995 -
1299.996 -      else                         // No delim.  Try to refil the buffer.
1299.997 -        __at_eof = __that->_S_eof(__buf->sgetc());
1299.998 -    }                              // Close the while loop.
1299.999 -  }
1299.1000 -  _STLP_CATCH_ALL {
1299.1001 -    __that->_M_handle_exception(ios_base::badbit);
1299.1002 -    return;
1299.1003 -  }
1299.1004 -
1299.1005 -  if (__at_eof) {
1299.1006 -    __that->setstate(__set_failbit ? ios_base::eofbit | ios_base::failbit
1299.1007 -                                   : ios_base::eofbit);
1299.1008 -    return;
1299.1009 -  }
1299.1010 -  if (__found_delim)
1299.1011 -    return;
1299.1012 -
1299.1013 -  // If execution has reached this point, then we have an empty buffer but
1299.1014 -  // we have not reached eof.  What that means is that the streambuf has
1299.1015 -  // decided to switch from a buffered to an unbuffered mode.  We switch
1299.1016 -  // to _M_ignore_unbuffered.
1299.1017 -  _M_ignore_unbuffered(__that,  __buf, __is_delim, __extract_delim, __set_failbit);
1299.1018 -}
1299.1019 -
1299.1020 -// Overloaded versions of _M_ignore_unbuffered and _M_ignore_unbuffered
1299.1021 -// with an explicit count _Num.  Return value is the number of
1299.1022 -// characters extracted.
1299.1023 -//
1299.1024 -// The function object __max_chars takes two arguments, _Num and __n
1299.1025 -// (the latter being the number of characters we have already read),
1299.1026 -// and returns the maximum number of characters to read from the buffer.
1299.1027 -// We parameterize _M_ignore_buffered so that we can use it for both
1299.1028 -// bounded and unbounded input; for the former the function object should
1299.1029 -// be minus<>, and for the latter it should return a constant maximum value.
1299.1030 -
1299.1031 -template < class _CharT, class _Traits, class _Max_Chars, class _Is_Delim>
1299.1032 -streamsize _STLP_CALL
1299.1033 -_M_ignore_unbuffered(basic_istream<_CharT, _Traits>* __that,
1299.1034 -		     basic_streambuf<_CharT, _Traits>* __buf,
1299.1035 -		     streamsize _Num, _Max_Chars __max_chars,
1299.1036 -		     _Is_Delim __is_delim,
1299.1037 -		     bool __extract_delim, bool __set_failbit)
1299.1038 -{
1299.1039 -  streamsize __n = 0;
1299.1040 -  ios_base::iostate __status = 0;
1299.1041 -  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1299.1042 -
1299.1043 -  _STLP_TRY {
1299.1044 -    while (__max_chars(_Num, __n) > 0) {
1299.1045 -      int_type __c = __buf->sbumpc();
1299.1046 -
1299.1047 -      if (__that->_S_eof(__c)) {
1299.1048 -        __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit
1299.1049 -                                  : ios_base::eofbit;
1299.1050 -        break;
1299.1051 -      }
1299.1052 -
1299.1053 -      else if (__is_delim(__c)) {
1299.1054 -        if (__extract_delim)
1299.1055 -          ++__n;
1299.1056 -        else if (__that->_S_eof(__buf->sputbackc(_Traits::to_char_type(__c))))
1299.1057 -          __status |= ios_base::failbit;
1299.1058 -
1299.1059 -        break;
1299.1060 -      }
1299.1061 -      // fbp : added counter increment to pass Dietmar's test
1299.1062 -      ++__n;
1299.1063 -    }
1299.1064 -  }
1299.1065 -  _STLP_CATCH_ALL {
1299.1066 -    __that->_M_handle_exception(ios_base::badbit);
1299.1067 -  }
1299.1068 -
1299.1069 -  if (__status)
1299.1070 -    __that->setstate(__status);   // This might throw.
1299.1071 -  return __n;
1299.1072 -}
1299.1073 -
1299.1074 -template < class _CharT, class _Traits, class _Max_Chars, class _Is_Delim, class _Scan_Delim>
1299.1075 -streamsize _STLP_CALL
1299.1076 -_M_ignore_buffered(basic_istream<_CharT, _Traits>* __that,
1299.1077 -		   basic_streambuf<_CharT, _Traits>* __buf,
1299.1078 -		   streamsize _Num,
1299.1079 -		   _Max_Chars __max_chars,
1299.1080 -		   _Is_Delim __is_delim, _Scan_Delim __scan_delim,
1299.1081 -		   bool __extract_delim, bool __set_failbit)
1299.1082 -{
1299.1083 -  streamsize __n = 0;
1299.1084 -  bool __at_eof = false;
1299.1085 -  bool __done   = false;
1299.1086 -
1299.1087 -  _STLP_TRY {
1299.1088 -    while (__buf->_M_egptr() != __buf->_M_gptr() && !__done) {
1299.1089 -      ptrdiff_t __avail = __buf->_M_egptr() - __buf->_M_gptr();
1299.1090 -      streamsize __m = __max_chars(_Num, __n);
1299.1091 -
1299.1092 -      if (__avail >= __m) {       // We have more characters than we need.
1299.1093 -        const _CharT* __last = __buf->_M_gptr() + __m;
1299.1094 -        const _CharT* __p = __scan_delim(__buf->_M_gptr(), __last);
1299.1095 -        ptrdiff_t __chunk = __p - __buf->_M_gptr();
1299.1096 -        __n += __chunk;
1299.1097 -        __buf->_M_gbump((int)__chunk);
1299.1098 -
1299.1099 -        if (__extract_delim && __p != __last) {
1299.1100 -          __n += 1;
1299.1101 -          __buf->_M_gbump(1);
1299.1102 -        }
1299.1103 -
1299.1104 -        __done = true;
1299.1105 -      }
1299.1106 -
1299.1107 -      else {
1299.1108 -        const _CharT* __p = __scan_delim(__buf->_M_gptr(), __buf->_M_egptr());
1299.1109 -        ptrdiff_t __chunk = __p - __buf->_M_gptr();
1299.1110 -        __n += __chunk;
1299.1111 -        __buf->_M_gbump((int)__chunk);
1299.1112 -
1299.1113 -        if (__p != __buf->_M_egptr()) { // We found delim.
1299.1114 -          if (__extract_delim) {
1299.1115 -            __n += 1;
1299.1116 -            __buf->_M_gbump(1);
1299.1117 -          }
1299.1118 -
1299.1119 -          __done = true;
1299.1120 -        }
1299.1121 -
1299.1122 -        // We didn't find delim.  Try to refill the buffer.
1299.1123 -        else if (__that->_S_eof(__buf->sgetc())) {
1299.1124 -          __done   = true;
1299.1125 -          __at_eof = true;
1299.1126 -        }
1299.1127 -      }
1299.1128 -    } // Close the while loop.
1299.1129 -  }
1299.1130 -  _STLP_CATCH_ALL {
1299.1131 -    __that->_M_handle_exception(ios_base::badbit);
1299.1132 -    return __n;
1299.1133 -  }
1299.1134 -
1299.1135 -  if (__at_eof)
1299.1136 -    __that->setstate(__set_failbit ? ios_base::eofbit | ios_base::failbit
1299.1137 -                                   : ios_base::eofbit);
1299.1138 -
1299.1139 -  if (__done)
1299.1140 -    return __n;
1299.1141 -
1299.1142 -  // If execution has reached this point, then we have an empty buffer but
1299.1143 -  // we have not reached eof.  What that means is that the streambuf has
1299.1144 -  // decided to switch from buffered to unbuffered input.  We switch to
1299.1145 -  // to _M_ignore_unbuffered.
1299.1146 -
1299.1147 -  return __n + _M_ignore_unbuffered( __that,  __buf, _Num, __max_chars,
1299.1148 -                                    __is_delim, __extract_delim, __set_failbit);
1299.1149 -}
1299.1150 -
1299.1151 -
1299.1152 -template <class _CharT, class _Traits>
1299.1153 -basic_istream<_CharT, _Traits>&
1299.1154 -basic_istream<_CharT, _Traits>::ignore(streamsize __n)
1299.1155 -{
1299.1156 -  sentry __sentry(*this, _No_Skip_WS());
1299.1157 -  this->_M_gcount = 0;
1299.1158 -
1299.1159 -  if (__sentry) {
1299.1160 -    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.1161 -    typedef _Constant_unary_fun<bool, int_type> _Const_bool;
1299.1162 -    typedef _Constant_binary_fun<streamsize, streamsize, streamsize>
1299.1163 -      _Const_streamsize;
1299.1164 -    const streamsize __maxss = (numeric_limits<streamsize>::max)();
1299.1165 -
1299.1166 -    if (__n == (numeric_limits<int>::max)()) {
1299.1167 -      if (__buf->gptr() != __buf->egptr())
1299.1168 -        _M_gcount
1299.1169 -          = _M_ignore_buffered(this,  __buf,
1299.1170 -                               __maxss, _Const_streamsize(__maxss),
1299.1171 -                               _Const_bool(false),
1299.1172 -                               _Project2nd<const _CharT*, const _CharT*>(),
1299.1173 -                               false, false);
1299.1174 -      else
1299.1175 -        _M_gcount = _M_ignore_unbuffered(this,  __buf,
1299.1176 -                                         __maxss, _Const_streamsize(__maxss),
1299.1177 -                                         _Const_bool(false), false, false);
1299.1178 -    }
1299.1179 -    else {
1299.1180 -      if (__buf->gptr() != __buf->egptr())
1299.1181 -        _M_gcount
1299.1182 -          = _M_ignore_buffered(this,  __buf,
1299.1183 -                               __n, minus<streamsize>(),
1299.1184 -                               _Const_bool(false),
1299.1185 -                               _Project2nd<const _CharT*, const _CharT*>(),
1299.1186 -                               false, false);
1299.1187 -      else
1299.1188 -        _M_gcount = _M_ignore_unbuffered(this,  __buf, __n, minus<streamsize>(),
1299.1189 -                                         _Const_bool(false), false, false);
1299.1190 -    }
1299.1191 -  }
1299.1192 -
1299.1193 -  return *this;
1299.1194 -}
1299.1195 -
1299.1196 -template <class _CharT, class _Traits>
1299.1197 -basic_istream<_CharT, _Traits>&
1299.1198 -basic_istream<_CharT, _Traits>::ignore(streamsize __n, int_type __delim)
1299.1199 -{
1299.1200 -  sentry __sentry(*this, _No_Skip_WS());
1299.1201 -  this->_M_gcount = 0;
1299.1202 -
1299.1203 -  if (__sentry) {
1299.1204 -    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.1205 -    typedef _Constant_unary_fun<bool, int_type> _Const_bool;
1299.1206 -    typedef _Constant_binary_fun<streamsize, streamsize, streamsize>
1299.1207 -      _Const_streamsize;
1299.1208 -    const streamsize __maxss = (numeric_limits<streamsize>::max)();
1299.1209 -
1299.1210 -    if (__n == (numeric_limits<int>::max)()) {
1299.1211 -      if (__buf->gptr() != __buf->egptr())
1299.1212 -        _M_gcount = _M_ignore_buffered(this,  __buf,
1299.1213 -                                       __maxss, _Const_streamsize(__maxss),
1299.1214 -                                       _Eq_int_bound<_Traits>(__delim),
1299.1215 -                                       _Scan_for_int_val<_Traits>(__delim),
1299.1216 -                                       true, false);
1299.1217 -      else
1299.1218 -        _M_gcount = _M_ignore_unbuffered(this,  __buf,
1299.1219 -                                         __maxss, _Const_streamsize(__maxss),
1299.1220 -                                         _Eq_int_bound<_Traits>(__delim),
1299.1221 -                                         true, false);
1299.1222 -    }
1299.1223 -    else {
1299.1224 -      if (__buf->gptr() != __buf->egptr())
1299.1225 -        _M_gcount = _M_ignore_buffered(this,  __buf,
1299.1226 -                                       __n, minus<streamsize>(),
1299.1227 -                                       _Eq_int_bound<_Traits>(
1299.1228 -                                               __delim),
1299.1229 -                                       _Scan_for_int_val<_Traits>(__delim),
1299.1230 -                                       true, false);
1299.1231 -      else
1299.1232 -        _M_gcount = _M_ignore_unbuffered(this,  __buf, __n, minus<streamsize>(),
1299.1233 -                                         _Eq_int_bound<_Traits>(__delim),
1299.1234 -                                         true, false);
1299.1235 -    }
1299.1236 -  }
1299.1237 -
1299.1238 -  return *this;
1299.1239 -}
1299.1240 -
1299.1241 -// This member function does not construct a sentry object, because
1299.1242 -// it is called from sentry's constructor.
1299.1243 -template <class _CharT, class _Traits>
1299.1244 -void basic_istream<_CharT, _Traits>::_M_skip_whitespace(bool __set_failbit)
1299.1245 -{
1299.1246 -  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1299.1247 -  if (!__buf)
1299.1248 -    this->setstate(ios_base::badbit);
1299.1249 -  else if (__buf->gptr() != __buf->egptr())
1299.1250 -    _M_ignore_buffered(this,  __buf,
1299.1251 -                       _Is_not_wspace<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1299.1252 -                       _Scan_for_not_wspace<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1299.1253 -                       false, __set_failbit);
1299.1254 -  else
1299.1255 -    _M_ignore_unbuffered(this,  __buf,
1299.1256 -                         _Is_not_wspace<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1299.1257 -                         false, __set_failbit);
1299.1258 -}
1299.1259 -
1299.1260 -
1299.1261 -// This is a very simple loop that reads characters from __src and puts
1299.1262 -// them into __dest.  It looks complicated because of the (standard-
1299.1263 -// mandated) exception handling policy.
1299.1264 -//
1299.1265 -// We stop when we get an exception, when we fail to insert into the
1299.1266 -// output streambuf, or when __is_delim is true.
1299.1267 -
1299.1268 -template < class _CharT, class _Traits, class _Is_Delim>
1299.1269 -streamsize _STLP_CALL
1299.1270 -_M_copy_unbuffered( basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __src,
1299.1271 -		    basic_streambuf<_CharT, _Traits>* __dest,
1299.1272 -		    _Is_Delim __is_delim,
1299.1273 -		    bool __extract_delim, bool __rethrow)
1299.1274 -{
1299.1275 -  streamsize __extracted = 0;
1299.1276 -  ios_base::iostate __status = 0;
1299.1277 -  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1299.1278 -  int_type __c;
1299.1279 -
1299.1280 -  _STLP_TRY {
1299.1281 -#ifdef __SYMBIAN32__
1299.1282 -    __c = __src->sgetc();
1299.1283 -    for(;; __c =  __src->snextc()){
1299.1284 -  
1299.1285 -      // If we failed to get a character, then quit.
1299.1286 -      if (__that->_S_eof(__c)) {
1299.1287 -        __status |= ios_base::eofbit;
1299.1288 -        break;
1299.1289 -      }  
1299.1290 -      // If it's the delimiter, then quit.
1299.1291 -      else if (__is_delim(__c)) {
1299.1292 -        if (!__extract_delim)
1299.1293 -          __status |= ios_base::failbit;
1299.1294 -        break;
1299.1295 -      }
1299.1296 -      
1299.1297 -      else {
1299.1298 -      
1299.1299 -        // Try to put the character in the output streambuf.
1299.1300 -        _STLP_TRY {
1299.1301 -          if (!__that->_S_eof(__dest->sputc(__c)))
1299.1302 -            ++__extracted;
1299.1303 -          else
1299.1304 -            break;
1299.1305 -        }
1299.1306 -        _STLP_CATCH_ALL {
1299.1307 -          __status |= ios_base::failbit;
1299.1308 -          break;
1299.1309 -        }
1299.1310 -        
1299.1311 -      }
1299.1312 -
1299.1313 -    } /* while (true) */
1299.1314 -#else
1299.1315 -    while (true) {
1299.1316 -
1299.1317 -      // Get a character. If there's an exception, catch and (maybe) rethrow it.
1299.1318 -      __c = __src->sbumpc();
1299.1319 -
1299.1320 -      // If we failed to get a character, then quit.
1299.1321 -      if (__that->_S_eof(__c)) {
1299.1322 -        __status |= ios_base::eofbit;
1299.1323 -        break;
1299.1324 -      }
1299.1325 -      // If it's the delimiter, then quit.
1299.1326 -      else if (__is_delim(__c)) {
1299.1327 -        if (!__extract_delim && !__pushback(__src, _Traits::to_char_type(__c)))
1299.1328 -          __status |= ios_base::failbit;
1299.1329 -        break;
1299.1330 -      }
1299.1331 -
1299.1332 -      else {
1299.1333 -
1299.1334 -        // Try to put the character in the output streambuf.
1299.1335 -        bool __failed = false;
1299.1336 -        _STLP_TRY {
1299.1337 -          if (!__that->_S_eof(__dest->sputc(__c)))
1299.1338 -            ++__extracted;
1299.1339 -          else
1299.1340 -            __failed = true;
1299.1341 -        }
1299.1342 -        _STLP_CATCH_ALL {
1299.1343 -          __failed = true;
1299.1344 -        }
1299.1345 -
1299.1346 -        // If we failed to put the character in the output streambuf, then
1299.1347 -        // try to push it back to the input streambuf.
1299.1348 -        if (__failed && !__pushback(__src, _Traits::to_char_type(__c)))
1299.1349 -          __status |= ios_base::failbit;
1299.1350 -
1299.1351 -        // fbp : avoiding infinite loop in io-27-6-1-2-3.exp
1299.1352 -        if (__failed)
1299.1353 -          break;
1299.1354 -      }
1299.1355 -
1299.1356 -    } /* while (true) */
1299.1357 -#endif    
1299.1358 -  }
1299.1359 -  // fbp : this try/catch moved here in reasonable assumption
1299.1360 -  // __is_delim never throw (__pushback is guaranteed not to)
1299.1361 -  _STLP_CATCH_ALL {
1299.1362 -    // See 27.6.1.2.3, paragraph 13.
1299.1363 -    if (__rethrow && __extracted == 0)
1299.1364 -      __that->_M_handle_exception(ios_base::failbit);
1299.1365 -  }
1299.1366 -  __that->setstate(__status);
1299.1367 -  return __extracted;
1299.1368 -}
1299.1369 -
1299.1370 -// Buffered copying from one streambuf to another.  We copy the characters
1299.1371 -// in chunks, rather than one at a time.  We still have to worry about all
1299.1372 -// of the error conditions we checked in _M_copy_unbuffered, plus one more:
1299.1373 -// the streambuf might decide to switch from a buffered to an unbuffered mode.
1299.1374 -
1299.1375 -template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim>
1299.1376 -streamsize _STLP_CALL
1299.1377 -_M_copy_buffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __src,
1299.1378 -                     basic_streambuf<_CharT, _Traits>* __dest,
1299.1379 -                     _Scan_Delim __scan_delim, _Is_Delim __is_delim,
1299.1380 -                     bool __extract_delim, bool __rethrow)
1299.1381 -{
1299.1382 -  streamsize __extracted = 0;
1299.1383 -  ios_base::iostate __status = 0;
1299.1384 -  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1299.1385 -  int_type __c = _Traits::eof();
1299.1386 -  _CharT* __first = __src->_M_gptr();
1299.1387 -  ptrdiff_t __avail = __src->_M_egptr() - __first;
1299.1388 -  // fbp : introduced to move catch/try blocks out of the loop
1299.1389 -  bool __do_handle_exceptions;
1299.1390 -
1299.1391 -  _STLP_TRY {
1299.1392 -    while (true) {
1299.1393 -      __do_handle_exceptions = false ;
1299.1394 -      const _CharT* __last = __scan_delim(__first, __src->_M_egptr());
1299.1395 -
1299.1396 -      // Try to copy the entire input buffer to the output buffer.
1299.1397 -      streamsize __n = __dest->sputn(__first, __extract_delim && __last != __src->_M_egptr()
1299.1398 -                                     ? (__last - __first) + 1
1299.1399 -                                     : (__last - __first));
1299.1400 -      __src->_M_gbump((int)__n);
1299.1401 -      __extracted += __n;
1299.1402 -
1299.1403 -      // from this on, catch() will call _M_handle_exceptions()
1299.1404 -      __do_handle_exceptions = true;
1299.1405 -
1299.1406 -      if (__n < __avail)          // We found the delimiter, or else failed to
1299.1407 -        break;                    // copy some characters.
1299.1408 -
1299.1409 -      __c = __src->sgetc();
1299.1410 -
1299.1411 -      // Three possibilities: we succeeded in refilling the buffer, or
1299.1412 -      // we got EOF, or the streambuf has switched to unbuffered mode.
1299.1413 -      __first = __src->_M_gptr();
1299.1414 -      __avail = __src->_M_egptr() - __first;
1299.1415 -
1299.1416 -      if (__avail > 0)
1299.1417 -        {}	// dwa 1/16/00 -- suppress a Metrowerks warning
1299.1418 -      else if (__that->_S_eof(__c)) {
1299.1419 -        __status |= ios_base::eofbit;
1299.1420 -        break;
1299.1421 -      }
1299.1422 -      else
1299.1423 -        return __extracted + _M_copy_unbuffered(__that,  __src, __dest, __is_delim,
1299.1424 -                                                __extract_delim, __rethrow);
1299.1425 -    } /* while */
1299.1426 -  }
1299.1427 -
1299.1428 -  _STLP_CATCH_ALL {
1299.1429 -    // See 27.6.1.2.3, paragraph 13.
1299.1430 -    if (__rethrow && __do_handle_exceptions &&  __extracted == 0)
1299.1431 -      __that->_M_handle_exception(ios_base::failbit);
1299.1432 -  }
1299.1433 -
1299.1434 -  if (__status)
1299.1435 -    __that->setstate(__status);   // This might throw.
1299.1436 -  return __extracted;
1299.1437 -}
1299.1438 -
1299.1439 -
1299.1440 -
1299.1441 -template <class _CharT, class _Traits>
1299.1442 -basic_istream<_CharT, _Traits>&
1299.1443 -basic_istream<_CharT, _Traits>
1299.1444 -  ::get(basic_streambuf<_CharT, _Traits>& __dest, _CharT __delim)
1299.1445 -{
1299.1446 -  sentry __sentry(*this, _No_Skip_WS());
1299.1447 -  this->_M_gcount = 0;
1299.1448 -
1299.1449 -  if (__sentry) {
1299.1450 -    basic_streambuf<_CharT, _Traits>* __src = this->rdbuf();
1299.1451 -
1299.1452 -    if (__src)
1299.1453 -      this->_M_gcount = __src->egptr() != __src->gptr()
1299.1454 -        ? _M_copy_buffered(this,  __src, &__dest,
1299.1455 -                           _Scan_for_char_val<_Traits>(__delim),
1299.1456 -                           _Eq_char_bound<_Traits>(__delim),
1299.1457 -                           false, false)
1299.1458 -        : _M_copy_unbuffered(this,  __src, &__dest,
1299.1459 -                             _Eq_char_bound<_Traits>(__delim),
1299.1460 -                             false, false);
1299.1461 -  }
1299.1462 -
1299.1463 -  if (this->_M_gcount == 0)
1299.1464 -    this->setstate(ios_base::failbit);
1299.1465 -
1299.1466 -  return *this;
1299.1467 -}
1299.1468 -
1299.1469 -// Copying characters into a streambuf.
1299.1470 -template <class _CharT, class _Traits>
1299.1471 -basic_istream<_CharT, _Traits>&
1299.1472 -basic_istream<_CharT, _Traits>
1299.1473 -  ::operator>>(basic_streambuf<_CharT, _Traits>* __dest)
1299.1474 -{
1299.1475 -  streamsize __n = 0;
1299.1476 -  typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry;
1299.1477 -  _Sentry __sentry(*this);
1299.1478 -  if (__sentry) {
1299.1479 -    basic_streambuf<_CharT, _Traits>* __src = this->rdbuf();
1299.1480 -    if (__src && __dest)
1299.1481 -      __n = __src->egptr() != __src->gptr()
1299.1482 -        ? _M_copy_buffered(this,  __src, __dest,
1299.1483 -                           _Project2nd<const _CharT*, const _CharT*>(),
1299.1484 -                           _Constant_unary_fun<bool, int_type>(false),
1299.1485 -                           false, true)
1299.1486 -        : _M_copy_unbuffered(this,  __src, __dest,
1299.1487 -                             _Constant_unary_fun<bool, int_type>(false),
1299.1488 -                             false, true);
1299.1489 -  }
1299.1490 -
1299.1491 -  if (__n == 0)
1299.1492 -    this->setstate(ios_base::failbit);
1299.1493 -
1299.1494 -  return *this;
1299.1495 -}
1299.1496 -
1299.1497 -// ----------------------------------------------------------------
1299.1498 -// basic_iostream<> class
1299.1499 -// ----------------------------------------------------------------
1299.1500 -
1299.1501 -template <class _CharT, class _Traits>
1299.1502 -_STLP_EXP_DECLSPEC basic_iostream<_CharT, _Traits>
1299.1503 -  ::basic_iostream(basic_streambuf<_CharT, _Traits>* __buf)
1299.1504 -    : basic_ios<_CharT, _Traits>(),
1299.1505 -      basic_istream<_CharT, _Traits>(__buf),
1299.1506 -      basic_ostream<_CharT, _Traits>(__buf)
1299.1507 -{
1299.1508 -  this->init(__buf);
1299.1509 -}
1299.1510 -
1299.1511 -template <class _CharT, class _Traits>
1299.1512 -_STLP_EXP_DECLSPEC basic_iostream<_CharT, _Traits>::~basic_iostream()
1299.1513 -{}
1299.1514 -
1299.1515 -
1299.1516 -template <class _CharT, class _Traits>
1299.1517 -_STLP_EXP_DECLSPEC basic_istream<_CharT, _Traits>
1299.1518 -    ::basic_istream(basic_streambuf<_CharT, _Traits>* __buf) :
1299.1519 -    basic_ios<_CharT, _Traits>(), _M_gcount(0) {
1299.1520 -    this->init(__buf);
1299.1521 -  }
1299.1522 -
1299.1523 -template <class _CharT, class _Traits>
1299.1524 -_STLP_EXP_DECLSPEC basic_istream<_CharT, _Traits>
1299.1525 -  ::~basic_istream() {}
1299.1526 -
1299.1527 -
1299.1528 -
1299.1529 -_STLP_END_NAMESPACE
1299.1530 -
1299.1531 -# undef __BIS_int_type__
1299.1532 -# undef __BIS_pos_type__
1299.1533 -# undef __BIS_off_type__
1299.1534 -
1299.1535 -# endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1299.1536 -
1299.1537 -#endif /* _STLP_ISTREAM_C */
  1300.1 --- a/epoc32/include/stdapis/stlport/stl/_istream.h	Tue Mar 16 16:12:26 2010 +0000
  1300.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1300.3 @@ -1,342 +0,0 @@
  1300.4 -/*
  1300.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1300.6 - * Copyright (c) 1999
  1300.7 - * Silicon Graphics Computer Systems, Inc.
  1300.8 - *
  1300.9 - * Copyright (c) 1999 
 1300.10 - * Boris Fomitchev
 1300.11 - *
 1300.12 - * This material is provided "as is", with absolutely no warranty expressed
 1300.13 - * or implied. Any use is at your own risk.
 1300.14 - *
 1300.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1300.16 - * without fee, provided the above notices are retained on all copies.
 1300.17 - * Permission to modify the code and to distribute modified code is granted,
 1300.18 - * provided the above notices are retained, and a notice that the code was
 1300.19 - * modified is included with the above copyright notice.
 1300.20 - *
 1300.21 - */ 
 1300.22 -#ifndef _STLP_INTERNAL_ISTREAM_H
 1300.23 -#define _STLP_INTERNAL_ISTREAM_H
 1300.24 -
 1300.25 -// this block is included by _ostream.h, we include it here to lower #include level
 1300.26 -# if defined (_STLP_HAS_WCHAR_T) && !defined (_STLP_CWCHAR_H)
 1300.27 -#  include <stl/_cwchar.h>
 1300.28 -# endif
 1300.29 -
 1300.30 -# ifndef _STLP_INTERNAL_IOS_H
 1300.31 -#  include <stl/_ios.h>                  // For basic_ios<>.  Includes <iosfwd>.
 1300.32 -# endif
 1300.33 -
 1300.34 -#ifndef _STLP_INTERNAL_OSTREAM_H
 1300.35 -# include <stl/_ostream.h>              // Needed as a base class of basic_iostream.
 1300.36 -#endif
 1300.37 -
 1300.38 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1300.39 -# include <stl/_istreambuf_iterator.h>
 1300.40 -#endif
 1300.41 -
 1300.42 -#include <stl/_ctraits_fns.h>    // Helper functions that allow char traits
 1300.43 -                                // to be used as function objects.
 1300.44 -_STLP_BEGIN_NAMESPACE
 1300.45 -
 1300.46 -template <class _CharT, class _Traits, class _Number> 
 1300.47 -ios_base::iostate _STLP_CALL
 1300.48 -_M_get_num(basic_istream<_CharT, _Traits>& __that, _Number& __val);
 1300.49 -
 1300.50 -#if defined (_STLP_USE_TEMPLATE_EXPORT)
 1300.51 -template <class _CharT, class _Traits>
 1300.52 -class _Isentry;
 1300.53 -#endif
 1300.54 -
 1300.55 -struct _No_Skip_WS {};        // Dummy class used by sentry.
 1300.56 -
 1300.57 -template <class _CharT, class _Traits>
 1300.58 -bool _M_init_skip(basic_istream<_CharT, _Traits>& __is);
 1300.59 -template <class _CharT, class _Traits>
 1300.60 -bool _M_init_noskip(basic_istream<_CharT, _Traits>& __is);
 1300.61 -
 1300.62 -//----------------------------------------------------------------------
 1300.63 -// Class basic_istream, a class that performs formatted input through
 1300.64 -// a stream buffer.
 1300.65 -
 1300.66 -// The second template parameter, _Traits, defaults to char_traits<_CharT>.
 1300.67 -// The default is declared in header <iosfwd>, and it isn't declared here
 1300.68 -// because C++ language rules do not allow it to be declared twice. 
 1300.69 -
 1300.70 -template <class _CharT, class _Traits>
 1300.71 -class basic_istream : virtual public basic_ios<_CharT, _Traits> {
 1300.72 -public:
 1300.73 -                         // Types
 1300.74 -  typedef _CharT                     char_type;
 1300.75 -  typedef typename _Traits::int_type int_type;
 1300.76 -  typedef typename _Traits::pos_type pos_type;
 1300.77 -  typedef typename _Traits::off_type off_type;
 1300.78 -  typedef _Traits                    traits_type;
 1300.79 -  typedef basic_ios<_CharT, _Traits>     _Basic_ios;
 1300.80 -  typedef basic_istream<_CharT, _Traits> _Self;
 1300.81 -
 1300.82 -  typedef basic_ios<_CharT, _Traits>& (_STLP_CALL *__ios_fn)(basic_ios<_CharT, _Traits>&);
 1300.83 -  typedef ios_base& (_STLP_CALL *__ios_base_fn)(ios_base&);
 1300.84 -  typedef _Self& (_STLP_CALL *__istream_fn)(_Self&);
 1300.85 -
 1300.86 -public:                         // Constructor and destructor.
 1300.87 -  _STLP_DECLSPEC explicit basic_istream(basic_streambuf<_CharT, _Traits>* __buf);
 1300.88 -  _STLP_DECLSPEC ~basic_istream();
 1300.89 -
 1300.90 -public:                         // Nested sentry class.
 1300.91 -
 1300.92 -public:                         // Hooks for manipulators.  The arguments are
 1300.93 -                                // function pointers.
 1300.94 -  _Self& operator>> (__istream_fn __f) { return __f(*this); }
 1300.95 -  _Self& operator>> (__ios_fn __f) {  __f(*this); return *this; }
 1300.96 -  _Self& operator>> (__ios_base_fn __f) { __f(*this); return *this; }
 1300.97 -
 1300.98 -public:                         // Formatted input of numbers.
 1300.99 -  _Self& operator>> (short& __val) {
1300.100 -    long __lval = __val;
1300.101 -    unsigned short __uval;
1300.102 -   _M_get_num(*this, __lval);
1300.103 -    __val = __STATIC_CAST(short, __lval);
1300.104 -    __uval = __lval;
1300.105 -    // check if we lose digits
1300.106 -    //    if ((__val != __lval) && ((unsigned short)__val != __lval))
1300.107 -    if ((__val != __lval) && ((long)__uval != __lval))
1300.108 -      this->setstate(ios_base::failbit); 
1300.109 -    return *this; 
1300.110 -  }
1300.111 -  _Self& operator>> (int& __val) { 
1300.112 -    long __lval = __val;
1300.113 -    unsigned int __uval;
1300.114 -    _M_get_num(*this, __lval);
1300.115 -    __val = __lval;
1300.116 -    __uval = __lval;
1300.117 -    // check if we lose digits
1300.118 -    //    if ((__val != __lval) && ((unsigned int)__val != __lval))
1300.119 -    if ((__val != __lval) && ((long)__uval != __lval))
1300.120 -      this->setstate(ios_base::failbit); 
1300.121 -    return *this;
1300.122 -  }
1300.123 -  _Self& operator>> (unsigned short& __val) { _M_get_num(*this, __val); return *this; }
1300.124 -  _Self& operator>> (unsigned int& __val) { _M_get_num(*this, __val); return *this; }
1300.125 -  _Self& operator>> (long& __val) { _M_get_num(*this, __val); return *this; }
1300.126 -  _Self& operator>> (unsigned long& __val) { _M_get_num(*this, __val); return *this; }
1300.127 -#ifdef _STLP_LONG_LONG
1300.128 -  _Self& operator>> (_STLP_LONG_LONG& __val) { _M_get_num(*this, __val); return *this; }
1300.129 -  _Self& operator>> (unsigned _STLP_LONG_LONG& __val) { _M_get_num(*this, __val); return *this; }
1300.130 -#endif 
1300.131 -  _Self& operator>> (float& __val)  { _M_get_num(*this, __val); return *this; }
1300.132 -  _Self& operator>> (double& __val) { _M_get_num(*this, __val); return *this; }
1300.133 -# ifndef _STLP_NO_LONG_DOUBLE
1300.134 -  _Self& operator>> (long double& __val) { _M_get_num(*this, __val); return *this; }
1300.135 -# endif
1300.136 -# ifndef _STLP_NO_BOOL
1300.137 -  _Self& operator>> (bool& __val) { _M_get_num(*this, __val); return *this; }
1300.138 -# endif
1300.139 -  _Self& operator>> (void*& __val) { _M_get_num(*this, __val); return *this; }
1300.140 -
1300.141 -public:                         // Copying characters into a streambuf.
1300.142 -  _Self& operator>>(basic_streambuf<_CharT, _Traits>*);
1300.143 -
1300.144 -public:                         // Unformatted input.
1300.145 -  streamsize gcount() const { return _M_gcount; }
1300.146 -  int_type peek();
1300.147 -
1300.148 -public:                         // get() for single characters
1300.149 -  int_type get();
1300.150 -  _Self& get(char_type& __c);
1300.151 -
1300.152 -public:                         // get() for character arrays.
1300.153 -  _Self& get(char_type* __s, streamsize __n, char_type __delim);
1300.154 -  _Self& get(char_type* __s, streamsize __n)
1300.155 -    { return get(__s, __n, this->widen('\n')); }
1300.156 -
1300.157 -public:                         // get() for streambufs
1300.158 -  _Self& get(basic_streambuf<_CharT, _Traits>& __buf,
1300.159 -                     char_type __delim);
1300.160 -  _Self& get(basic_streambuf<_CharT, _Traits>& __buf)
1300.161 -    { return get(__buf, this->widen('\n')); }
1300.162 -
1300.163 -public:                         // getline()
1300.164 -  _Self& getline(char_type* __s, streamsize __n, char_type delim);
1300.165 -  _Self& getline(char_type* __s, streamsize __n)
1300.166 -    { return getline(__s, __n, this->widen('\n')); }
1300.167 -
1300.168 -public:                         // read(), readsome(), ignore()
1300.169 -  _Self& ignore();
1300.170 -  _Self& ignore(streamsize __n);
1300.171 -#if (defined (_STLP_MSVC) && _STLP_MSVC < 1200)
1300.172 -  inline
1300.173 -#endif
1300.174 -  _Self& ignore(streamsize __n, int_type __delim);
1300.175 -
1300.176 -  _Self& read(char_type* __s, streamsize __n);
1300.177 -  streamsize readsome(char_type* __s, streamsize __n);
1300.178 -
1300.179 -public:                         // putback
1300.180 -  _Self& putback(char_type __c);
1300.181 -  _Self& unget();
1300.182 -
1300.183 -public:                         // Positioning and buffer control.
1300.184 -  int sync();
1300.185 -
1300.186 -  pos_type tellg();
1300.187 -  _Self& seekg(pos_type __pos);
1300.188 -  _Self& seekg(off_type, ios_base::seekdir);
1300.189 -
1300.190 -public:                         // Helper functions for non-member extractors.
1300.191 -  void _M_formatted_get(_CharT& __c);
1300.192 -  void _M_formatted_get(_CharT* __s);
1300.193 -  void _M_skip_whitespace(bool __set_failbit);
1300.194 -
1300.195 -private:                        // Number of characters extracted by the
1300.196 -  streamsize _M_gcount;         // most recent unformatted input function.
1300.197 -
1300.198 -public:
1300.199 -
1300.200 -#if defined (_STLP_USE_TEMPLATE_EXPORT)
1300.201 -  // If we are using DLL specs, we have not to use inner classes
1300.202 -  // end class declaration here
1300.203 -  typedef _Isentry<_CharT, _Traits>      sentry;
1300.204 -};
1300.205 -#  define sentry _Isentry
1300.206 -template <class _CharT, class _Traits>
1300.207 -class _Isentry {
1300.208 -  typedef _Isentry<_CharT, _Traits> _Self;
1300.209 -# else
1300.210 -  class sentry {
1300.211 -    typedef sentry _Self;
1300.212 -#endif
1300.213 -    
1300.214 -  private:
1300.215 -    const bool _M_ok;
1300.216 -    //    basic_streambuf<_CharT, _Traits>* _M_buf;
1300.217 -        
1300.218 -  public:
1300.219 -    typedef _Traits traits_type;
1300.220 -    
1300.221 -    explicit sentry(basic_istream<_CharT, _Traits>& __is,
1300.222 -                    bool __noskipws = false) : 
1300.223 -      _M_ok((__noskipws || !(__is.flags() & ios_base::skipws)) ? _M_init_noskip(__is) :  _M_init_skip(__is) )
1300.224 -      /* , _M_buf(__is.rdbuf()) */
1300.225 -      {}
1300.226 -    
1300.227 -    // Calling this constructor is the same as calling the previous one with 
1300.228 -    // __noskipws = true, except that it doesn't require a runtime test.
1300.229 -    sentry(basic_istream<_CharT, _Traits>& __is, _No_Skip_WS) : /* _M_buf(__is.rdbuf()), */
1300.230 -      _M_ok(_M_init_noskip(__is)) {}
1300.231 -    
1300.232 -    ~sentry() {}
1300.233 -    
1300.234 -    operator bool() const { return _M_ok; }
1300.235 -    
1300.236 -  private:                        // Disable assignment and copy constructor.
1300.237 -    sentry(const _Self&) : _M_ok(false) {}
1300.238 -    void operator=(const _Self&) {}
1300.239 -  };
1300.240 -  
1300.241 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1300.242 -#  undef sentry
1300.243 -# else
1300.244 -  // close basic_istream class definition here
1300.245 -};
1300.246 -# endif
1300.247 -
1300.248 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1300.249 -_STLP_EXPORT_TEMPLATE_CLASS _Isentry<char, char_traits<char> >;
1300.250 -_STLP_EXPORT_TEMPLATE_CLASS basic_istream<char, char_traits<char> >;
1300.251 -#  if ! defined (_STLP_NO_WCHAR_T)
1300.252 -_STLP_EXPORT_TEMPLATE_CLASS _Isentry<wchar_t, char_traits<wchar_t> >;
1300.253 -_STLP_EXPORT_TEMPLATE_CLASS basic_istream<wchar_t, char_traits<wchar_t> >;
1300.254 -#  endif
1300.255 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1300.256 -
1300.257 -// Non-member character and string extractor functions.
1300.258 -
1300.259 -template <class _CharT, class _Traits>
1300.260 -inline basic_istream<_CharT, _Traits>& _STLP_CALL  
1300.261 -operator>>(basic_istream<_CharT, _Traits>& __stl_in, _CharT& __c) {
1300.262 -  __stl_in._M_formatted_get(__c);
1300.263 -  return __stl_in;
1300.264 -}
1300.265 -
1300.266 -template <class _Traits>
1300.267 -inline basic_istream<char, _Traits>& _STLP_CALL  
1300.268 -operator>>(basic_istream<char, _Traits>& __stl_in, unsigned char& __c) {
1300.269 -  __stl_in._M_formatted_get(__REINTERPRET_CAST(char&,__c));
1300.270 -  return __stl_in;
1300.271 -}
1300.272 -
1300.273 -template <class _Traits>
1300.274 -inline basic_istream<char, _Traits>& _STLP_CALL 
1300.275 -operator>>(basic_istream<char, _Traits>& __stl_in, signed char& __c) {
1300.276 -  __stl_in._M_formatted_get(__REINTERPRET_CAST(char&,__c));
1300.277 -  return __stl_in;
1300.278 -}
1300.279 -
1300.280 -template <class _CharT, class _Traits>
1300.281 -inline basic_istream<_CharT, _Traits>& _STLP_CALL 
1300.282 -operator>>(basic_istream<_CharT, _Traits>& __stl_in, _CharT* __s) {
1300.283 -  __stl_in._M_formatted_get(__s);
1300.284 -  return __stl_in;
1300.285 -}
1300.286 -
1300.287 -template <class _Traits>
1300.288 -inline basic_istream<char, _Traits>& _STLP_CALL 
1300.289 -operator>>(basic_istream<char, _Traits>& __stl_in, unsigned char* __s) {
1300.290 -  __stl_in._M_formatted_get(__REINTERPRET_CAST(char*,__s));
1300.291 -  return __stl_in;
1300.292 -}
1300.293 -
1300.294 -template <class _Traits>
1300.295 -inline basic_istream<char, _Traits>& _STLP_CALL 
1300.296 -operator>>(basic_istream<char, _Traits>& __stl_in, signed char* __s) {
1300.297 -  __stl_in._M_formatted_get(__REINTERPRET_CAST(char*,__s));
1300.298 -  return __stl_in;
1300.299 -}
1300.300 -
1300.301 -//----------------------------------------------------------------------
1300.302 -// istream manipulator.
1300.303 -template <class _CharT, class _Traits>
1300.304 -basic_istream<_CharT, _Traits>& _STLP_CALL
1300.305 -ws(basic_istream<_CharT, _Traits>& __is);
1300.306 -
1300.307 -//----------------------------------------------------------------------
1300.308 -// Class iostream.
1300.309 -
1300.310 -template <class _CharT, class _Traits>
1300.311 -class basic_iostream
1300.312 -  : public basic_istream<_CharT, _Traits>,
1300.313 -    public basic_ostream<_CharT, _Traits>
1300.314 -{
1300.315 -public:
1300.316 -  typedef basic_ios<_CharT, _Traits> _Basic_ios;
1300.317 -
1300.318 -  _STLP_DECLSPEC explicit basic_iostream(basic_streambuf<_CharT, _Traits>* __buf);
1300.319 -  _STLP_DECLSPEC virtual ~basic_iostream();
1300.320 -};
1300.321 -
1300.322 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1300.323 -_STLP_EXPORT_TEMPLATE_CLASS basic_iostream<char, char_traits<char> >;
1300.324 -#  if ! defined (_STLP_NO_WCHAR_T)
1300.325 -_STLP_EXPORT_TEMPLATE_CLASS basic_iostream<wchar_t, char_traits<wchar_t> >;
1300.326 -#  endif
1300.327 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1300.328 -
1300.329 -template <class _CharT, class _Traits>
1300.330 -basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_istreambuf(basic_istream<_CharT, _Traits>& __is) 
1300.331 -{
1300.332 -  return __is.rdbuf();
1300.333 -}
1300.334 -
1300.335 -_STLP_END_NAMESPACE
1300.336 -
1300.337 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1300.338 -#  include <stl/_istream.c>
1300.339 -# endif
1300.340 -
1300.341 -#endif /* _STLP_INTERNAL_ISTREAM_H */
1300.342 -
1300.343 -// Local Variables:
1300.344 -// mode:C++
1300.345 -// End:
  1301.1 --- a/epoc32/include/stdapis/stlport/stl/_istreambuf_iterator.h	Tue Mar 16 16:12:26 2010 +0000
  1301.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1301.3 @@ -1,169 +0,0 @@
  1301.4 -/*
  1301.5 - * Copyright (c) 1999
  1301.6 - * Silicon Graphics Computer Systems, Inc.
  1301.7 - *
  1301.8 - * Copyright (c) 1999 
  1301.9 - * Boris Fomitchev
 1301.10 - *
 1301.11 - * This material is provided "as is", with absolutely no warranty expressed
 1301.12 - * or implied. Any use is at your own risk.
 1301.13 - *
 1301.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1301.15 - * without fee, provided the above notices are retained on all copies.
 1301.16 - * Permission to modify the code and to distribute modified code is granted,
 1301.17 - * provided the above notices are retained, and a notice that the code was
 1301.18 - * modified is included with the above copyright notice.
 1301.19 - *
 1301.20 - */ 
 1301.21 -// WARNING: This is an internal header file, included by other C++
 1301.22 -// standard library headers.  You should not attempt to use this header
 1301.23 -// file directly.
 1301.24 -
 1301.25 -
 1301.26 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1301.27 -#define _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1301.28 -
 1301.29 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1301.30 -# include <stl/_iterator_base.h>
 1301.31 -#endif
 1301.32 -
 1301.33 -#ifndef _STLP_INTERNAL_STREAMBUF
 1301.34 -# include <stl/_streambuf.h>
 1301.35 -#endif
 1301.36 -
 1301.37 -_STLP_BEGIN_NAMESPACE
 1301.38 -
 1301.39 -// defined in _istream.h
 1301.40 -template <class _CharT, class _Traits>
 1301.41 -extern basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_istreambuf(basic_istream<_CharT, _Traits>& ) ;
 1301.42 -
 1301.43 -// We do not read any characters until operator* is called. operator* calls sgetc 
 1301.44 -// unless the iterator is unchanged from the last call in which case a cached value is
 1301.45 -// used. Calls to operator++ use sbumpc.
 1301.46 -
 1301.47 -template<class _CharT, class _Traits>
 1301.48 -class istreambuf_iterator
 1301.49 -{
 1301.50 -public:
 1301.51 -  typedef _CharT                           char_type;
 1301.52 -  typedef _Traits                          traits_type;
 1301.53 -  typedef typename _Traits::int_type       int_type;
 1301.54 -  typedef basic_streambuf<_CharT, _Traits> streambuf_type;
 1301.55 -  typedef basic_istream<_CharT, _Traits>   istream_type;
 1301.56 -
 1301.57 -  typedef input_iterator_tag               iterator_category;
 1301.58 -  typedef _CharT                           value_type;
 1301.59 -  typedef typename _Traits::off_type       difference_type;
 1301.60 -  typedef const _CharT*                    pointer;
 1301.61 -  typedef const _CharT&                    reference;
 1301.62 -
 1301.63 -public:
 1301.64 -  istreambuf_iterator(streambuf_type* __p = 0) { this->_M_init(__p); }
 1301.65 -  //  istreambuf_iterator(basic_istream<_CharT, _Traits>& __is) { this->_M_init(_M_get_istreambuf(__is)); }
 1301.66 -  inline istreambuf_iterator(basic_istream<_CharT, _Traits>& __is);
 1301.67 -
 1301.68 -  char_type operator*() const { this->_M_getc(); return _M_c; }
 1301.69 -  istreambuf_iterator<_CharT, _Traits>& operator++() { this->_M_bumpc(); return *this; }
 1301.70 -  istreambuf_iterator<_CharT, _Traits>  operator++(int);
 1301.71 -
 1301.72 -  bool equal(const istreambuf_iterator<_CharT, _Traits>& __i) const {
 1301.73 -    if (this->_M_buf)
 1301.74 -      this->_M_getc();
 1301.75 -    if (__i._M_buf)
 1301.76 -      __i._M_getc(); 
 1301.77 -    return this->_M_eof == __i._M_eof;
 1301.78 -  }
 1301.79 -
 1301.80 -private:
 1301.81 -  void _M_init(streambuf_type* __p) {
 1301.82 -    _M_buf = __p;
 1301.83 -    _M_eof = !__p;
 1301.84 -    //    _M_is_initialized = _M_eof;
 1301.85 -    _M_have_c = false;
 1301.86 -  }
 1301.87 -
 1301.88 -  void _M_getc() const {
 1301.89 -    if (_M_have_c)
 1301.90 -      return;
 1301.91 -    int_type __c = _M_buf->sgetc();
 1301.92 -# if !defined (_STLP_NEED_MUTABLE) /* && ! defined (__SUNPRO_CC) */
 1301.93 -    _M_c = traits_type::to_char_type(__c);
 1301.94 -    _M_eof = traits_type::eq_int_type(__c, traits_type::eof());
 1301.95 -    _M_have_c = true;
 1301.96 -# else
 1301.97 -    typedef istreambuf_iterator<_CharT,_Traits> _Self;
 1301.98 -    _Self* __that = __CONST_CAST(_Self*, this);
 1301.99 -    __that->_M_c = __STATIC_CAST(_CharT, traits_type::to_char_type(__c));
1301.100 -    __that->_M_eof = traits_type::eq_int_type(__c, traits_type::eof());
1301.101 -    __that->_M_have_c = true;
1301.102 -# endif
1301.103 -  }
1301.104 -
1301.105 -  int_type _M_bumpc() {
1301.106 -  	int_type ch = _M_buf->sbumpc();
1301.107 -     _M_have_c = false;
1301.108 -	 return ch;
1301.109 -  }
1301.110 -
1301.111 -private:
1301.112 -  streambuf_type* _M_buf;
1301.113 -  mutable _CharT _M_c;
1301.114 -  mutable unsigned char _M_eof;
1301.115 -  mutable unsigned char _M_have_c;
1301.116 -};
1301.117 -
1301.118 -template<class _CharT, class _Traits>
1301.119 -inline istreambuf_iterator<_CharT, _Traits>::istreambuf_iterator(basic_istream<_CharT, _Traits>& __is) 
1301.120 -{ this->_M_init(_M_get_istreambuf(__is)); }
1301.121 -
1301.122 -template<class _CharT, class _Traits>
1301.123 -inline bool _STLP_CALL operator==(const istreambuf_iterator<_CharT, _Traits>& __x,
1301.124 -                                  const istreambuf_iterator<_CharT, _Traits>& __y) {
1301.125 -  return __x.equal(__y);
1301.126 -}
1301.127 -
1301.128 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1301.129 -
1301.130 -template<class _CharT, class _Traits>
1301.131 -inline bool _STLP_CALL operator!=(const istreambuf_iterator<_CharT, _Traits>& __x,
1301.132 -                                  const istreambuf_iterator<_CharT, _Traits>& __y) {
1301.133 -  return !__x.equal(__y);
1301.134 -}
1301.135 -
1301.136 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1301.137 -
1301.138 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1301.139 -_STLP_EXPORT_TEMPLATE_CLASS istreambuf_iterator<char, char_traits<char> >;
1301.140 -#  if defined (INSTANTIATE_WIDE_STREAMS)
1301.141 -_STLP_EXPORT_TEMPLATE_CLASS istreambuf_iterator<wchar_t, char_traits<wchar_t> >;
1301.142 -#  endif
1301.143 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1301.144 -
1301.145 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1301.146 -template <class _CharT, class _Traits>
1301.147 -inline input_iterator_tag _STLP_CALL iterator_category(const istreambuf_iterator<_CharT, _Traits>&) { return input_iterator_tag(); }
1301.148 -template <class _CharT, class _Traits>
1301.149 -inline streamoff* _STLP_CALL 
1301.150 -distance_type(const istreambuf_iterator<_CharT, _Traits>&) { return (streamoff*)0; }
1301.151 -template <class _CharT, class _Traits>
1301.152 -inline _CharT* _STLP_CALL value_type(const istreambuf_iterator<_CharT, _Traits>&) { return (_CharT*)0; }
1301.153 -# endif
1301.154 -
1301.155 -template <class _CharT, class _Traits>
1301.156 -istreambuf_iterator<_CharT, _Traits>
1301.157 -istreambuf_iterator<_CharT, _Traits>::operator++(int) {
1301.158 -  istreambuf_iterator<_CharT, _Traits> __tmp = *this;
1301.159 -  __tmp._M_c = this->_M_bumpc();
1301.160 -  __tmp._M_have_c = true;
1301.161 -  this->_M_have_c = false;
1301.162 -  return __tmp;
1301.163 -}
1301.164 -
1301.165 -_STLP_END_NAMESPACE
1301.166 -
1301.167 -#endif /* _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H */
1301.168 -
1301.169 -// Local Variables:
1301.170 -// mode:C++
1301.171 -// End:
1301.172 -
  1302.1 --- a/epoc32/include/stdapis/stlport/stl/_iterator_base.h	Tue Mar 16 16:12:26 2010 +0000
  1302.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1302.3 @@ -1,463 +0,0 @@
  1302.4 -/*
  1302.5 - *
  1302.6 - * Copyright (c) 1994
  1302.7 - * Hewlett-Packard Company
  1302.8 - *
  1302.9 - * Copyright (c) 1996-1998
 1302.10 - * Silicon Graphics Computer Systems, Inc.
 1302.11 - *
 1302.12 - * Copyright (c) 1997
 1302.13 - * Moscow Center for SPARC Technology
 1302.14 - *
 1302.15 - * Copyright (c) 1999 
 1302.16 - * Boris Fomitchev
 1302.17 - *
 1302.18 - * This material is provided "as is", with absolutely no warranty expressed
 1302.19 - * or implied. Any use is at your own risk.
 1302.20 - *
 1302.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1302.22 - * without fee, provided the above notices are retained on all copies.
 1302.23 - * Permission to modify the code and to distribute modified code is granted,
 1302.24 - * provided the above notices are retained, and a notice that the code was
 1302.25 - * modified is included with the above copyright notice.
 1302.26 - *
 1302.27 - */
 1302.28 -
 1302.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1302.30 - *   You should not attempt to use it directly.
 1302.31 - */
 1302.32 -
 1302.33 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1302.34 -#define _STLP_INTERNAL_ITERATOR_BASE_H
 1302.35 -
 1302.36 -#ifndef _STLP_CSTDDEF
 1302.37 -# include <cstddef>
 1302.38 -#endif
 1302.39 -
 1302.40 -# if defined  (_STLP_IMPORT_VENDOR_CSTD) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
 1302.41 -_STLP_BEGIN_NAMESPACE  
 1302.42 -using namespace _STLP_VENDOR_CSTD;
 1302.43 -_STLP_END_NAMESPACE
 1302.44 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1302.45 -
 1302.46 -#ifndef __TYPE_TRAITS_H
 1302.47 -# include <stl/type_traits.h>
 1302.48 -#endif
 1302.49 -
 1302.50 -_STLP_BEGIN_NAMESPACE
 1302.51 -
 1302.52 -struct input_iterator_tag {};
 1302.53 -struct output_iterator_tag {};
 1302.54 -struct forward_iterator_tag : public input_iterator_tag {};
 1302.55 -struct bidirectional_iterator_tag : public forward_iterator_tag {};
 1302.56 -struct random_access_iterator_tag : public bidirectional_iterator_tag {};
 1302.57 -
 1302.58 -
 1302.59 -template <class _Category, class _Tp, __DFL_TMPL_PARAM(_Distance,ptrdiff_t),
 1302.60 -          __DFL_TMPL_PARAM(_Pointer,_Tp*), __DFL_TMPL_PARAM(_Reference,_Tp&) >
 1302.61 -struct iterator {
 1302.62 -  typedef _Category  iterator_category;
 1302.63 -  typedef _Tp        value_type;
 1302.64 -  typedef _Distance  difference_type;
 1302.65 -  typedef _Pointer   pointer;
 1302.66 -  typedef _Reference reference;
 1302.67 -};
 1302.68 -_STLP_TEMPLATE_NULL
 1302.69 -struct iterator<output_iterator_tag, void, void, void, void> {
 1302.70 -  typedef output_iterator_tag  iterator_category;
 1302.71 -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1302.72 -  typedef void                value_type;
 1302.73 -  typedef void                difference_type;
 1302.74 -  typedef void                pointer;
 1302.75 -  typedef void                reference;
 1302.76 -#endif
 1302.77 -};
 1302.78 -
 1302.79 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1302.80 -#  define _STLP_ITERATOR_CATEGORY(_It, _Tp) iterator_category(_It)
 1302.81 -#  define _STLP_DISTANCE_TYPE(_It, _Tp)     distance_type(_It)
 1302.82 -#  define _STLP_VALUE_TYPE(_It, _Tp)        value_type(_It)
 1302.83 -# else
 1302.84 -#  ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1302.85 -#   define _STLP_VALUE_TYPE(_It, _Tp)        (typename iterator_traits< _Tp >::value_type*)0
 1302.86 -#   define _STLP_DISTANCE_TYPE(_It, _Tp)     (typename iterator_traits< _Tp >::difference_type*)0
 1302.87 -#   if defined (__BORLANDC__) || defined (__SUNPRO_CC) || ( defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || ( defined (__sgi) && defined (_COMPILER_VERSION)) || defined (__DMC__)
 1302.88 -#    define _STLP_ITERATOR_CATEGORY(_It, _Tp) iterator_traits< _Tp >::iterator_category()
 1302.89 -#   else
 1302.90 -#    define _STLP_ITERATOR_CATEGORY(_It, _Tp) typename iterator_traits< _Tp >::iterator_category()
 1302.91 -#   endif
 1302.92 -#  else
 1302.93 -#   define _STLP_ITERATOR_CATEGORY(_It, _Tp) __iterator_category(_It, _IsPtrType<_Tp>::_Ret())
 1302.94 -#   define _STLP_DISTANCE_TYPE(_It, _Tp)     (ptrdiff_t*)0
 1302.95 -#   define _STLP_VALUE_TYPE(_It, _Tp)        __value_type(_It, _IsPtrType<_Tp>::_Ret() )
 1302.96 -#  endif
 1302.97 -# endif
 1302.98 -
 1302.99 -template <class _Iterator>
1302.100 -struct iterator_traits {
1302.101 -  typedef typename _Iterator::iterator_category iterator_category;
1302.102 -  typedef typename _Iterator::value_type        value_type;
1302.103 -  typedef typename _Iterator::difference_type   difference_type;
1302.104 -  typedef typename _Iterator::pointer           pointer;
1302.105 -  typedef typename _Iterator::reference         reference;
1302.106 -};
1302.107 -
1302.108 -
1302.109 -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined (__SUNPRO_CC)
1302.110 -#  define _STLP_DIFFERENCE_TYPE(_Iterator) typename iterator_traits<_Iterator>::difference_type
1302.111 -# else
1302.112 -#  define _STLP_DIFFERENCE_TYPE(_Iterator) ptrdiff_t
1302.113 -# endif
1302.114 -
1302.115 -# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1302.116 -
1302.117 -// fbp : this order keeps gcc happy
1302.118 -template <class _Tp>
1302.119 -struct iterator_traits<const _Tp*> {
1302.120 -  typedef random_access_iterator_tag iterator_category;
1302.121 -  typedef _Tp                         value_type;
1302.122 -  typedef ptrdiff_t                   difference_type;
1302.123 -  typedef const _Tp*                  pointer;
1302.124 -  typedef const _Tp&                  reference;
1302.125 -};
1302.126 -
1302.127 -template <class _Tp>
1302.128 -struct iterator_traits<_Tp*> {
1302.129 -  typedef random_access_iterator_tag iterator_category;
1302.130 -  typedef _Tp                         value_type;
1302.131 -  typedef ptrdiff_t                   difference_type;
1302.132 -  typedef _Tp*                        pointer;
1302.133 -  typedef _Tp&                        reference;
1302.134 -};
1302.135 -
1302.136 -#  if defined (__BORLANDC__)
1302.137 -template <class _Tp>
1302.138 -struct iterator_traits<_Tp* const> {
1302.139 -  typedef random_access_iterator_tag iterator_category;
1302.140 -  typedef _Tp                         value_type;
1302.141 -  typedef ptrdiff_t                   difference_type;
1302.142 -  typedef const _Tp*                  pointer;
1302.143 -  typedef const _Tp&                  reference;
1302.144 -};
1302.145 -#  endif
1302.146 -
1302.147 -# endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1302.148 -
1302.149 -
1302.150 -# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) \
1302.151 -  || (defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && ! defined (_STLP_NO_ARROW_OPERATOR))
1302.152 -#  define _STLP_POINTERS_SPECIALIZE( _TpP )
1302.153 -#  define _STLP_DEFINE_ARROW_OPERATOR  pointer operator->() const { return &(operator*()); }
1302.154 -# else 
1302.155 -#  include <stl/_ptrs_specialize.h>
1302.156 -# endif
1302.157 -
1302.158 -# ifndef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1302.159 -// The overloaded functions iterator_category, distance_type, and
1302.160 -// value_type are not part of the C++ standard.  (They have been
1302.161 -// replaced by struct iterator_traits.)  They are included for
1302.162 -// backward compatibility with the HP STL.
1302.163 -// We introduce internal names for these functions.
1302.164 -
1302.165 -#  ifdef  _STLP_CLASS_PARTIAL_SPECIALIZATION
1302.166 -
1302.167 -template <class _Iter>
1302.168 -inline typename iterator_traits<_Iter>::iterator_category __iterator_category(const _Iter&) {
1302.169 -  typedef typename iterator_traits<_Iter>::iterator_category _Category;
1302.170 -  return _Category();
1302.171 -}
1302.172 -
1302.173 -template <class _Iter>
1302.174 -inline typename iterator_traits<_Iter>::difference_type* __distance_type(const _Iter&) {
1302.175 -  typedef typename iterator_traits<_Iter>::difference_type _diff_type;
1302.176 -  return __STATIC_CAST(_diff_type*,0);
1302.177 -}
1302.178 -
1302.179 -template <class _Iter>
1302.180 -inline typename iterator_traits<_Iter>::value_type* __value_type(const _Iter&) {
1302.181 -  typedef typename iterator_traits<_Iter>::value_type _value_type;
1302.182 -  return __STATIC_CAST(_value_type*,0);
1302.183 -}
1302.184 -
1302.185 -# else
1302.186 -
1302.187 -template <class _Iter>
1302.188 -inline random_access_iterator_tag 
1302.189 -__iterator_category(const _Iter&, const __true_type&) {
1302.190 -  return random_access_iterator_tag();
1302.191 -}
1302.192 -
1302.193 -template <class _Iter>
1302.194 -inline _STLP_TYPENAME_ON_RETURN_TYPE iterator_traits<_Iter>::iterator_category
1302.195 -__iterator_category(const _Iter&, const __false_type&) {
1302.196 -  typedef typename iterator_traits<_Iter>::iterator_category _Category;
1302.197 -  return _Category();
1302.198 -}
1302.199 -
1302.200 -
1302.201 -template <class _Iter>
1302.202 -inline ptrdiff_t* _STLP_CALL __distance_type(const _Iter&) { return (ptrdiff_t*)(0); }
1302.203 -
1302.204 -template <class _Iter>
1302.205 -inline _STLP_TYPENAME_ON_RETURN_TYPE iterator_traits<_Iter>::value_type* 
1302.206 -__value_type(const _Iter&, const __false_type&) {
1302.207 -  typedef typename iterator_traits<_Iter>::value_type _value_type;
1302.208 -  return __STATIC_CAST(_value_type*,0);
1302.209 -}
1302.210 -
1302.211 -template <class _Tp>
1302.212 -inline _Tp*  
1302.213 -__value_type(const _Tp*, const __true_type&) {
1302.214 -  return __STATIC_CAST(_Tp*, 0);
1302.215 -}
1302.216 -
1302.217 -# endif
1302.218 -
1302.219 -#else /* old queries */
1302.220 -template <class _Category, class _Tp, class _Distance, class _Pointer, class _Reference>
1302.221 -inline _Category _STLP_CALL iterator_category(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return _Category(); }
1302.222 -template <class _Category, class _Tp, class _Distance, class _Pointer, class _Reference>
1302.223 -inline _Tp* _STLP_CALL value_type(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return (_Tp*)(0); }
1302.224 -template <class _Category, class _Tp, class _Distance, class _Pointer, class _Reference>
1302.225 -inline _Distance* _STLP_CALL distance_type(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return (_Distance*)(0); }
1302.226 -template <class _Tp>
1302.227 -inline random_access_iterator_tag _STLP_CALL iterator_category(const _Tp*) { return random_access_iterator_tag(); }
1302.228 -template <class _Tp>
1302.229 -inline _Tp* _STLP_CALL value_type(const _Tp*) { return (_Tp*)(0); }
1302.230 -template <class _Tp>
1302.231 -inline ptrdiff_t* _STLP_CALL distance_type(const _Tp*) { return (ptrdiff_t*)(0); }
1302.232 -#endif /* _STLP_USE_OLD_HP_ITERATOR_QUERIES */
1302.233 -
1302.234 -# if ! defined (_STLP_NO_ANACHRONISMS)
1302.235 -// The base classes input_iterator, output_iterator, forward_iterator,
1302.236 -// bidirectional_iterator, and random_access_iterator are not part of
1302.237 -// the C++ standard.  (They have been replaced by struct iterator.)
1302.238 -// They are included for backward compatibility with the HP STL.
1302.239 -template <class _Tp, class _Distance> struct input_iterator : 
1302.240 -  public iterator <input_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1302.241 -struct output_iterator : public iterator <output_iterator_tag, void, void, void, void> {};
1302.242 -template <class _Tp, class _Distance> struct forward_iterator :
1302.243 -  public iterator<forward_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1302.244 -template <class _Tp, class _Distance> struct bidirectional_iterator :
1302.245 -  public iterator<bidirectional_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1302.246 -template <class _Tp, class _Distance> struct random_access_iterator :
1302.247 -  public iterator<random_access_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1302.248 -
1302.249 -# if defined (_STLP_BASE_MATCH_BUG) && defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)
1302.250 -template <class _Tp, class _Distance> 
1302.251 -inline input_iterator_tag _STLP_CALL 
1302.252 -iterator_category(const input_iterator<_Tp, _Distance>&) { return input_iterator_tag(); }
1302.253 -inline output_iterator_tag _STLP_CALL
1302.254 -iterator_category(const output_iterator&) { return output_iterator_tag(); }
1302.255 -template <class _Tp, class _Distance> 
1302.256 -inline forward_iterator_tag _STLP_CALL
1302.257 -iterator_category(const forward_iterator<_Tp, _Distance>&) { return forward_iterator_tag(); }
1302.258 -template <class _Tp, class _Distance> 
1302.259 -inline bidirectional_iterator_tag _STLP_CALL 
1302.260 -iterator_category(const bidirectional_iterator<_Tp, _Distance>&) { return bidirectional_iterator_tag(); }
1302.261 -template <class _Tp, class _Distance> 
1302.262 -inline random_access_iterator_tag _STLP_CALL
1302.263 -iterator_category(const random_access_iterator<_Tp, _Distance>&) { return random_access_iterator_tag(); }
1302.264 -template <class _Tp, class _Distance> 
1302.265 -inline _Tp*  _STLP_CALL value_type(const input_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1302.266 -template <class _Tp, class _Distance> 
1302.267 -inline _Tp* _STLP_CALL value_type(const forward_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1302.268 -template <class _Tp, class _Distance> 
1302.269 -inline _Tp* _STLP_CALL value_type(const bidirectional_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1302.270 -template <class _Tp, class _Distance> 
1302.271 -inline _Tp* _STLP_CALL value_type(const random_access_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1302.272 -template <class _Tp, class _Distance> 
1302.273 -inline _Distance* _STLP_CALL distance_type(const input_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }
1302.274 -template <class _Tp, class _Distance> 
1302.275 -inline _Distance* _STLP_CALL distance_type(const forward_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }
1302.276 -template <class _Tp, class _Distance> 
1302.277 -inline _Distance* _STLP_CALL distance_type(const bidirectional_iterator<_Tp, _Distance>&) { return (_Distance*)(0);}
1302.278 -template <class _Tp, class _Distance> 
1302.279 -inline _Distance* _STLP_CALL distance_type(const random_access_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }
1302.280 -# endif /* BASE_MATCH */
1302.281 -
1302.282 -#endif /* _STLP_NO_ANACHRONISMS */
1302.283 -
1302.284 -template <class _InputIterator, class _Distance>
1302.285 -inline void _STLP_CALL __distance(const _InputIterator& __first, const _InputIterator& __last,
1302.286 -				  _Distance& __n, const input_iterator_tag &) {
1302.287 -  _InputIterator __it(__first);
1302.288 -  while (__it != __last) { ++__it; ++__n; }
1302.289 -}
1302.290 -
1302.291 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 
1302.292 -template <class _ForwardIterator, class _Distance>
1302.293 -inline void _STLP_CALL __distance(const _ForwardIterator& __first, const _ForwardIterator& __last,
1302.294 -				  _Distance& __n, const forward_iterator_tag &) {
1302.295 -  _ForwardIterator __it(__first);
1302.296 -  while (__it != __last) { ++__first; ++__n; }
1302.297 -}
1302.298 -
1302.299 -template <class _BidirectionalIterator, class _Distance>
1302.300 -_STLP_INLINE_LOOP void _STLP_CALL __distance(const _BidirectionalIterator& __first, 
1302.301 -					     const _BidirectionalIterator& __last,
1302.302 -					     _Distance& __n, const bidirectional_iterator_tag &) {
1302.303 -  _BidirectionalIterator __it(__first);
1302.304 -  while (__it != __last) { ++__it; ++__n; }
1302.305 -}
1302.306 -# endif
1302.307 -
1302.308 -template <class _RandomAccessIterator, class _Distance>
1302.309 -inline void _STLP_CALL __distance(const _RandomAccessIterator& __first, 
1302.310 -				  const _RandomAccessIterator& __last, 
1302.311 -				  _Distance& __n, const random_access_iterator_tag &) {
1302.312 -  __n += __last - __first;
1302.313 -}
1302.314 -
1302.315 -#ifndef _STLP_NO_ANACHRONISMS 
1302.316 -template <class _InputIterator, class _Distance>
1302.317 -inline void _STLP_CALL distance(const _InputIterator& __first, 
1302.318 -				const _InputIterator& __last, _Distance& __n) {
1302.319 -  __distance(__first, __last, __n, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1302.320 -}
1302.321 -#endif
1302.322 -
1302.323 -template <class _InputIterator>
1302.324 -inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL
1302.325 -__distance(const _InputIterator& __first, const _InputIterator& __last, const input_iterator_tag &) {
1302.326 -  _STLP_DIFFERENCE_TYPE(_InputIterator) __n = 0;
1302.327 -  _InputIterator __it(__first);  
1302.328 -  while (__it != __last) {
1302.329 -    ++__it; ++__n;
1302.330 -  }
1302.331 -  return __n;
1302.332 -}
1302.333 -
1302.334 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 
1302.335 -template <class _ForwardIterator>
1302.336 -inline _STLP_DIFFERENCE_TYPE(_ForwardIterator) _STLP_CALL 
1302.337 -__distance(const _ForwardIterator& __first, const _ForwardIterator& __last,
1302.338 -           const forward_iterator_tag &)
1302.339 -{
1302.340 -  _STLP_DIFFERENCE_TYPE(_ForwardIterator) __n = 0;
1302.341 -  _ForwardIterator __it(__first);
1302.342 -  while (__it != __last) {
1302.343 -    ++__it; ++__n;
1302.344 -  }
1302.345 -  return __n;
1302.346 -}
1302.347 -
1302.348 -template <class _BidirectionalIterator>
1302.349 -_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) _STLP_CALL 
1302.350 -__distance(const _BidirectionalIterator& __first, 
1302.351 -           const _BidirectionalIterator& __last,
1302.352 -           const bidirectional_iterator_tag &) {
1302.353 -  _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) __n = 0;
1302.354 -  _BidirectionalIterator __it(__first);
1302.355 -  while (__it != __last) {
1302.356 -    ++__it; ++__n;
1302.357 -  }
1302.358 -  return __n;
1302.359 -}
1302.360 -# endif
1302.361 -
1302.362 -template <class _RandomAccessIterator>
1302.363 -inline _STLP_DIFFERENCE_TYPE(_RandomAccessIterator) _STLP_CALL
1302.364 -__distance(const _RandomAccessIterator& __first, const _RandomAccessIterator& __last,
1302.365 -           const random_access_iterator_tag &) {
1302.366 -  return __last - __first;
1302.367 -}
1302.368 -
1302.369 -template <class _InputIterator>
1302.370 -inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL
1302.371 -distance(const _InputIterator& __first, const _InputIterator& __last) {
1302.372 -  return __distance(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));  
1302.373 -}
1302.374 -
1302.375 -
1302.376 -// fbp: those are being used for iterator/const_iterator definitions everywhere
1302.377 -template <class _Tp>
1302.378 -struct _Nonconst_traits;
1302.379 -
1302.380 -template <class _Tp>
1302.381 -struct _Const_traits {
1302.382 -  typedef _Tp value_type;
1302.383 -  typedef const _Tp&  reference;
1302.384 -  typedef const _Tp*  pointer;
1302.385 -  typedef _Nonconst_traits<_Tp> _Non_const_traits;
1302.386 -};
1302.387 -
1302.388 -template <class _Tp>
1302.389 -struct _Nonconst_traits {
1302.390 -  typedef _Tp value_type;
1302.391 -  typedef _Tp& reference;
1302.392 -  typedef _Tp* pointer;
1302.393 -  typedef _Nonconst_traits<_Tp> _Non_const_traits;
1302.394 -};
1302.395 -
1302.396 -#  if defined (_STLP_BASE_TYPEDEF_BUG)
1302.397 -// this workaround is needed for SunPro 4.0.1
1302.398 -template <class _Traits>
1302.399 -struct __cnst_traits_aux : private _Traits
1302.400 -{
1302.401 -  typedef typename _Traits::value_type value_type;
1302.402 -};
1302.403 -#  define __TRAITS_VALUE_TYPE(_Traits) __cnst_traits_aux<_Traits>::value_type
1302.404 -#  else
1302.405 -#  define __TRAITS_VALUE_TYPE(_Traits) _Traits::value_type
1302.406 -#  endif
1302.407 -
1302.408 -# if defined (_STLP_MSVC)
1302.409 -// MSVC specific
1302.410 -template <class _InputIterator, class _Dist>
1302.411 -inline void  _STLP_CALL _Distance(_InputIterator __first, 
1302.412 -		      _InputIterator __last, _Dist& __n) {
1302.413 -  __distance(__first, __last, __n, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1302.414 -}
1302.415 -# endif
1302.416 -
1302.417 -template <class _InputIter, class _Distance>
1302.418 -_STLP_INLINE_LOOP void  _STLP_CALL __advance(_InputIter& __i, _Distance __n, const input_iterator_tag &) {
1302.419 -  while (__n--) ++__i;
1302.420 -}
1302.421 -
1302.422 -// fbp : added output iterator tag variant
1302.423 -template <class _InputIter, class _Distance>
1302.424 -_STLP_INLINE_LOOP void  _STLP_CALL __advance(_InputIter& __i, _Distance __n, const output_iterator_tag &) {
1302.425 -  while (__n--) ++__i;
1302.426 -}
1302.427 -
1302.428 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
1302.429 -template <class _ForwardIterator, class _Distance>
1302.430 -_STLP_INLINE_LOOP void _STLP_CALL __advance(_ForwardIterator& i, _Distance n, const forward_iterator_tag &) {
1302.431 -    while (n--) ++i;
1302.432 -}
1302.433 -# endif
1302.434 -
1302.435 -template <class _BidirectionalIterator, class _Distance>
1302.436 -_STLP_INLINE_LOOP void _STLP_CALL __advance(_BidirectionalIterator& __i, _Distance __n, 
1302.437 -                      const bidirectional_iterator_tag &) {
1302.438 -  if (__n > 0)
1302.439 -    while (__n--) ++__i;
1302.440 -  else
1302.441 -    while (__n++) --__i;
1302.442 -}
1302.443 -
1302.444 -template <class _RandomAccessIterator, class _Distance>
1302.445 -inline void _STLP_CALL __advance(_RandomAccessIterator& __i, _Distance __n, 
1302.446 -                      const random_access_iterator_tag &) {
1302.447 -  __i += __n;
1302.448 -}
1302.449 -
1302.450 -template <class _InputIterator, class _Distance>
1302.451 -inline void _STLP_CALL advance(_InputIterator& __i, _Distance __n) {
1302.452 -  __advance(__i, __n, _STLP_ITERATOR_CATEGORY(__i, _InputIterator));
1302.453 -}
1302.454 -
1302.455 -_STLP_END_NAMESPACE
1302.456 -
1302.457 -# if defined (_STLP_DEBUG) && ! defined (_STLP_DEBUG_H)
1302.458 -#  include <stl/debug/_debug.h>
1302.459 -# endif
1302.460 -
1302.461 -#endif /* _STLP_INTERNAL_ITERATOR_BASE_H */
1302.462 -
1302.463 -
1302.464 -// Local Variables:
1302.465 -// mode:C++
1302.466 -// End:
  1303.1 --- a/epoc32/include/stdapis/stlport/stl/_iterator_old.h	Tue Mar 16 16:12:26 2010 +0000
  1303.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1303.3 @@ -1,351 +0,0 @@
  1303.4 -/*
  1303.5 - *
  1303.6 - * Copyright (c) 1994
  1303.7 - * Hewlett-Packard Company
  1303.8 - *
  1303.9 - * Copyright (c) 1996-1998
 1303.10 - * Silicon Graphics Computer Systems, Inc.
 1303.11 - *
 1303.12 - * Copyright (c) 1997
 1303.13 - * Moscow Center for SPARC Technology
 1303.14 - *
 1303.15 - * Copyright (c) 1999 
 1303.16 - * Boris Fomitchev
 1303.17 - *
 1303.18 - * This material is provided "as is", with absolutely no warranty expressed
 1303.19 - * or implied. Any use is at your own risk.
 1303.20 - *
 1303.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1303.22 - * without fee, provided the above notices are retained on all copies.
 1303.23 - * Permission to modify the code and to distribute modified code is granted,
 1303.24 - * provided the above notices are retained, and a notice that the code was
 1303.25 - * modified is included with the above copyright notice.
 1303.26 - *
 1303.27 - */
 1303.28 -
 1303.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1303.30 - *   You should not attempt to use it directly.
 1303.31 - */
 1303.32 -
 1303.33 -#ifndef _STLP_INTERNAL_ITERATOR_OLD_H
 1303.34 -#define _STLP_INTERNAL_ITERATOR_OLD_H
 1303.35 -
 1303.36 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1303.37 -# include <stl/_iterator_base.h>
 1303.38 -#endif
 1303.39 -
 1303.40 -_STLP_BEGIN_NAMESPACE
 1303.41 -
 1303.42 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1303.43 -
 1303.44 -template <class _Container>
 1303.45 -inline output_iterator_tag _STLP_CALL
 1303.46 -iterator_category(const back_insert_iterator<_Container>&) { return output_iterator_tag(); }
 1303.47 -template <class _Container>
 1303.48 -inline output_iterator_tag _STLP_CALL
 1303.49 -iterator_category(const front_insert_iterator<_Container>&) { return output_iterator_tag(); }
 1303.50 -template <class _Container>
 1303.51 -inline output_iterator_tag _STLP_CALL
 1303.52 -iterator_category(const insert_iterator<_Container>&) { return output_iterator_tag(); }
 1303.53 -
 1303.54 -# endif
 1303.55 -
 1303.56 -# if defined (_STLP_MSVC50_COMPATIBILITY)
 1303.57 -# define __Reference _Reference, class _Pointer
 1303.58 -# define Reference__ _Reference, _Pointer
 1303.59 -template <class _BidirectionalIterator, class _Tp, 
 1303.60 -    __DFL_TMPL_PARAM(_Reference, _Tp& ),
 1303.61 -    __DFL_TMPL_PARAM(_Pointer, _Tp*),
 1303.62 -    __DFL_TYPE_PARAM(_Distance, ptrdiff_t)> 
 1303.63 -# else
 1303.64 -# define __Reference _Reference
 1303.65 -# define Reference__ _Reference
 1303.66 -template <class _BidirectionalIterator, class _Tp, __DFL_TMPL_PARAM(_Reference, _Tp& ),
 1303.67 -    __DFL_TYPE_PARAM(_Distance, ptrdiff_t)> 
 1303.68 -# endif
 1303.69 -class reverse_bidirectional_iterator {
 1303.70 -  typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, 
 1303.71 -                                         Reference__, _Distance> _Self;
 1303.72 -  //  friend inline bool operator== _STLP_NULL_TMPL_ARGS (const _Self& x, const _Self& y);
 1303.73 -protected:
 1303.74 -  _BidirectionalIterator current;
 1303.75 -public:
 1303.76 -  typedef bidirectional_iterator_tag iterator_category;
 1303.77 -  typedef _Tp                        value_type;
 1303.78 -  typedef _Distance                  difference_type;
 1303.79 -# if defined (_STLP_MSVC50_COMPATIBILITY)
 1303.80 -  typedef _Pointer                   pointer;
 1303.81 -# else
 1303.82 -  typedef _Tp*                       pointer;
 1303.83 -# endif
 1303.84 -  typedef _Reference                 reference;
 1303.85 -
 1303.86 -  reverse_bidirectional_iterator() {}
 1303.87 -  explicit reverse_bidirectional_iterator(_BidirectionalIterator __x)
 1303.88 -    : current(__x) {}
 1303.89 -  _BidirectionalIterator base() const { return current; }
 1303.90 -  _Reference operator*() const {
 1303.91 -    _BidirectionalIterator __tmp = current;
 1303.92 -    return *--__tmp;
 1303.93 -  }
 1303.94 -# if !(defined _STLP_NO_ARROW_OPERATOR)
 1303.95 -  _STLP_DEFINE_ARROW_OPERATOR
 1303.96 -# endif
 1303.97 -  _Self& operator++() {
 1303.98 -    --current;
 1303.99 -    return *this;
1303.100 -  }
1303.101 -  _Self operator++(int) {
1303.102 -    _Self __tmp = *this;
1303.103 -    --current;
1303.104 -    return __tmp;
1303.105 -  }
1303.106 -  _Self& operator--() {
1303.107 -    ++current;
1303.108 -    return *this;
1303.109 -  }
1303.110 -  _Self operator--(int) {
1303.111 -    _Self __tmp = *this;
1303.112 -    ++current;
1303.113 -    return __tmp;
1303.114 -  }
1303.115 -};
1303.116 -
1303.117 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1303.118 -template <class _BidirectionalIterator, class _Tp, class __Reference, 
1303.119 -          class _Distance>
1303.120 -inline bidirectional_iterator_tag _STLP_CALL
1303.121 -iterator_category(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) 
1303.122 -{ return bidirectional_iterator_tag(); }
1303.123 -template <class _BidirectionalIterator, class _Tp, class __Reference, 
1303.124 -  class _Distance>
1303.125 -inline _Tp* _STLP_CALL
1303.126 -value_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&)
1303.127 -{ return (_Tp*) 0; }
1303.128 -template <class _BidirectionalIterator, class _Tp, class __Reference, 
1303.129 -          class _Distance>
1303.130 -inline _Distance* _STLP_CALL
1303.131 -distance_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&)
1303.132 -{ return (_Distance*) 0; }
1303.133 -#endif
1303.134 -
1303.135 -template <class _BidirectionalIterator, class _Tp, class __Reference, 
1303.136 -          class _Distance>
1303.137 -inline bool  _STLP_CALL operator==(
1303.138 -    const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
1303.139 -                                               Reference__, _Distance>& __x,
1303.140 -    const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
1303.141 -                                               Reference__, _Distance>& __y)
1303.142 -{
1303.143 -  return __x.base() == __y.base();
1303.144 -}
1303.145 -
1303.146 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1303.147 -
1303.148 -template <class _BiIter, class _Tp, class __Reference, class _Distance>
1303.149 -inline bool  _STLP_CALL operator!=(
1303.150 -    const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __x, 
1303.151 -    const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __y)
1303.152 -{
1303.153 -  return !(__x == __y);
1303.154 -}
1303.155 -
1303.156 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1303.157 -
1303.158 -#if ! defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1303.159 -
1303.160 -// This is the old version of reverse_iterator, as found in the original
1303.161 -//  HP STL.  It does not use partial specialization.
1303.162 -
1303.163 -template <class _RandomAccessIterator, 
1303.164 -# if defined (__MSL__) && (__MSL__ >= 0x2405) \
1303.165 -	|| defined(__MRC__) || (defined(__SC__) && !defined(__DMC__))		//*ty 03/22/2001 - give the default to the secont param under MPW. 
1303.166 -												// I believe giving the default will cause any harm even though the 2nd type parameter 
1303.167 -												// still have to be provided for T* type iterators.
1303.168 -	__DFL_TMPL_PARAM(_Tp,iterator_traits<_RandomAccessIterator>::value_type),
1303.169 -# else
1303.170 -	class _Tp,
1303.171 -#endif
1303.172 - __DFL_TMPL_PARAM(_Reference,_Tp&),
1303.173 -# if defined (_STLP_MSVC50_COMPATIBILITY)
1303.174 -        __DFL_TMPL_PARAM(_Pointer, _Tp*),
1303.175 -# endif
1303.176 -        __DFL_TYPE_PARAM(_Distance,ptrdiff_t)> 
1303.177 -class reverse_iterator {
1303.178 -  typedef reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>
1303.179 -          _Self;
1303.180 -protected:
1303.181 -  _RandomAccessIterator __current;
1303.182 -public:
1303.183 -  typedef random_access_iterator_tag iterator_category;
1303.184 -  typedef _Tp                        value_type;
1303.185 -  typedef _Distance                  difference_type;
1303.186 -# if defined (_STLP_MSVC50_COMPATIBILITY)
1303.187 -  typedef _Pointer                   pointer;
1303.188 -# else
1303.189 -  typedef _Tp*                       pointer;
1303.190 -# endif
1303.191 -  typedef _Reference                 reference;
1303.192 -
1303.193 -  reverse_iterator() {}
1303.194 -  reverse_iterator(const _Self& __x) : __current(__x.base()) {}
1303.195 -  explicit reverse_iterator(_RandomAccessIterator __x) : __current(__x) {}
1303.196 -  _Self& operator=(const _Self& __x) {__current = __x.base(); return *this; }  
1303.197 -       
1303.198 -  _RandomAccessIterator base() const { return __current; }
1303.199 -  _Reference operator*() const { return *(__current - (difference_type)1); }
1303.200 -
1303.201 -# if !(defined _STLP_NO_ARROW_OPERATOR)
1303.202 -  _STLP_DEFINE_ARROW_OPERATOR
1303.203 -# endif
1303.204 -
1303.205 -  _Self& operator++() {
1303.206 -    --__current;
1303.207 -    return *this;
1303.208 -  }
1303.209 -  _Self operator++(int) {
1303.210 -    _Self __tmp = *this;
1303.211 -    --__current;
1303.212 -    return __tmp;
1303.213 -  }
1303.214 -  _Self& operator--() {
1303.215 -    ++__current;
1303.216 -    return *this;
1303.217 -  }
1303.218 -  _Self operator--(int) {
1303.219 -    _Self __tmp = *this;
1303.220 -    ++__current;
1303.221 -    return __tmp;
1303.222 -  }
1303.223 -  _Self operator+(_Distance __n) const {
1303.224 -    return _Self(__current - __n);
1303.225 -  }
1303.226 -  _Self& operator+=(_Distance __n) {
1303.227 -    __current -= __n;
1303.228 -    return *this;
1303.229 -  }
1303.230 -  _Self operator-(_Distance __n) const {
1303.231 -    return _Self(__current + __n);
1303.232 -  }
1303.233 -  _Self& operator-=(_Distance __n) {
1303.234 -    __current += __n;
1303.235 -    return *this;
1303.236 -  }
1303.237 -  _Reference operator[](_Distance __n) const { return *(*this + __n); }
1303.238 -};
1303.239 -
1303.240 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1303.241 -template <class _RandomAccessIterator, class _Tp, 
1303.242 -          class __Reference, class _Distance>
1303.243 -inline random_access_iterator_tag _STLP_CALL
1303.244 -iterator_category(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&)
1303.245 -{ return random_access_iterator_tag(); }
1303.246 -template <class _RandomAccessIterator, class _Tp,
1303.247 -  class __Reference, class _Distance>
1303.248 -inline _Tp*  _STLP_CALL value_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&)
1303.249 -{ return (_Tp*) 0; }
1303.250 -template <class _RandomAccessIterator, class _Tp,
1303.251 -          class __Reference, class _Distance>
1303.252 -inline _Distance*  _STLP_CALL
1303.253 -distance_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&)
1303.254 -{ return (_Distance*) 0; }
1303.255 -#endif
1303.256 -
1303.257 -template <class _RandomAccessIterator, class _Tp,
1303.258 -          class __Reference, class _Distance>
1303.259 -inline bool  _STLP_CALL
1303.260 -operator==(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.261 -                                  Reference__, _Distance>& __x, 
1303.262 -           const reverse_iterator<_RandomAccessIterator, _Tp,
1303.263 -                                  Reference__, _Distance>& __y)
1303.264 -{
1303.265 -  return __x.base() == __y.base();
1303.266 -}
1303.267 -
1303.268 -template <class _RandomAccessIterator, class _Tp,
1303.269 -          class __Reference, class _Distance>
1303.270 -inline bool _STLP_CALL 
1303.271 -operator<(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.272 -                                 Reference__, _Distance>& __x, 
1303.273 -          const reverse_iterator<_RandomAccessIterator, _Tp,
1303.274 -                                 Reference__, _Distance>& __y)
1303.275 -{
1303.276 -  return __y.base() < __x.base();
1303.277 -}
1303.278 -
1303.279 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1303.280 -
1303.281 -template <class _RandomAccessIterator, class _Tp,
1303.282 -          class __Reference, class _Distance>
1303.283 -inline bool _STLP_CALL 
1303.284 -operator!=(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.285 -                                  Reference__, _Distance>& __x, 
1303.286 -           const reverse_iterator<_RandomAccessIterator, _Tp,
1303.287 -                                  Reference__, _Distance>& __y) {
1303.288 -  return !(__x == __y);
1303.289 -}
1303.290 -
1303.291 -template <class _RandomAccessIterator, class _Tp,
1303.292 -          class __Reference, class _Distance>
1303.293 -inline bool _STLP_CALL 
1303.294 -operator>(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.295 -                                 Reference__, _Distance>& __x, 
1303.296 -          const reverse_iterator<_RandomAccessIterator, _Tp,
1303.297 -                                 Reference__, _Distance>& __y) {
1303.298 -  return __y < __x;
1303.299 -}
1303.300 -
1303.301 -template <class _RandomAccessIterator, class _Tp,
1303.302 -          class __Reference, class _Distance>
1303.303 -inline bool _STLP_CALL 
1303.304 -operator<=(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.305 -                                  Reference__, _Distance>& __x, 
1303.306 -           const reverse_iterator<_RandomAccessIterator, _Tp,
1303.307 -                                  Reference__, _Distance>& __y) {
1303.308 -  return !(__y < __x);
1303.309 -}
1303.310 -
1303.311 -template <class _RandomAccessIterator, class _Tp,
1303.312 -          class __Reference, class _Distance>
1303.313 -inline bool _STLP_CALL 
1303.314 -operator>=(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.315 -                                  Reference__, _Distance>& __x, 
1303.316 -           const reverse_iterator<_RandomAccessIterator, _Tp,
1303.317 -                                  Reference__, _Distance>& __y) {
1303.318 -  return !(__x < __y);
1303.319 -}
1303.320 -
1303.321 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1303.322 -
1303.323 -template <class _RandomAccessIterator, class _Tp,
1303.324 -          class __Reference, class _Distance>
1303.325 -inline _Distance  _STLP_CALL
1303.326 -operator-(const reverse_iterator<_RandomAccessIterator, _Tp,
1303.327 -                                 Reference__, _Distance>& __x, 
1303.328 -          const reverse_iterator<_RandomAccessIterator, _Tp,
1303.329 -                                 Reference__, _Distance>& __y)
1303.330 -{
1303.331 -  return __y.base() - __x.base();
1303.332 -}
1303.333 -
1303.334 -template <class _RandomAccessIterator, class _Tp,
1303.335 -          class __Reference, class _Distance>
1303.336 -inline reverse_iterator<_RandomAccessIterator, _Tp,
1303.337 -                        Reference__, _Distance>  _STLP_CALL
1303.338 -operator+(_Distance __n,
1303.339 -          const reverse_iterator<_RandomAccessIterator, _Tp,
1303.340 -                                 Reference__, _Distance>& __x)
1303.341 -{
1303.342 -  return reverse_iterator<_RandomAccessIterator, _Tp,
1303.343 -                          Reference__, _Distance>(__x.base() - __n);
1303.344 -}
1303.345 -
1303.346 -#endif /* ! defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) */
1303.347 -
1303.348 -_STLP_END_NAMESPACE
1303.349 -
1303.350 -#endif /* _STLP_INTERNAL_ITERATOR_H */
1303.351 -
1303.352 -// Local Variables:
1303.353 -// mode:C++
1303.354 -// End:
  1304.1 --- a/epoc32/include/stdapis/stlport/stl/_limits.c	Tue Mar 16 16:12:26 2010 +0000
  1304.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1304.3 @@ -1,270 +0,0 @@
  1304.4 -/*
  1304.5 - * Copyright (c) 1998,1999
  1304.6 - * Silicon Graphics Computer Systems, Inc.
  1304.7 - *
  1304.8 - * Copyright (c) 1999 
  1304.9 - * Boris Fomitchev
 1304.10 - *
 1304.11 - * This material is provided "as is", with absolutely no warranty expressed
 1304.12 - * or implied. Any use is at your own risk.
 1304.13 - *
 1304.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1304.15 - * without fee, provided the above notices are retained on all copies.
 1304.16 - * Permission to modify the code and to distribute modified code is granted,
 1304.17 - * provided the above notices are retained, and a notice that the code was
 1304.18 - * modified is included with the above copyright notice.
 1304.19 - *
 1304.20 - */
 1304.21 -
 1304.22 -# if !defined (_STLP_LIMITS_C)
 1304.23 -#  define _STLP_LIMITS_C
 1304.24 -
 1304.25 -#ifndef _STLP_INTERNAL_LIMITS_H
 1304.26 -# include <stl/_limits.h>
 1304.27 -#endif
 1304.28 -
 1304.29 -//==========================================================
 1304.30 -//  numeric_limits static members
 1304.31 -//==========================================================
 1304.32 -
 1304.33 -_STLP_BEGIN_NAMESPACE
 1304.34 -
 1304.35 -# if ! defined ( _STLP_STATIC_CONST_INIT_BUG)
 1304.36 -
 1304.37 -#   define __declare_numeric_base_member(__type, __mem, _Init) \
 1304.38 -template <class __number> \
 1304.39 -  const __type _Numeric_limits_base<__number>:: __mem
 1304.40 -
 1304.41 -__declare_numeric_base_member(bool, is_specialized, false);
 1304.42 -__declare_numeric_base_member(int, digits, 0);
 1304.43 -__declare_numeric_base_member(int, digits10, 0);
 1304.44 -__declare_numeric_base_member(bool, is_signed, false);
 1304.45 -__declare_numeric_base_member(bool, is_integer, false);
 1304.46 -__declare_numeric_base_member(bool, is_exact, false);
 1304.47 -__declare_numeric_base_member(int, radix, 0);
 1304.48 -__declare_numeric_base_member(int, min_exponent, 0);
 1304.49 -__declare_numeric_base_member(int, max_exponent, 0);
 1304.50 -__declare_numeric_base_member(int, min_exponent10, 0);
 1304.51 -__declare_numeric_base_member(int, max_exponent10, 0);
 1304.52 -__declare_numeric_base_member(bool, has_infinity, false);
 1304.53 -__declare_numeric_base_member(bool, has_quiet_NaN, false);
 1304.54 -__declare_numeric_base_member(bool, has_signaling_NaN, false);
 1304.55 -__declare_numeric_base_member(float_denorm_style, has_denorm, denorm_absent);
 1304.56 -__declare_numeric_base_member(bool, has_denorm_loss, false);
 1304.57 -__declare_numeric_base_member(bool, is_iec559, false);
 1304.58 -__declare_numeric_base_member(bool, is_bounded, false);
 1304.59 -__declare_numeric_base_member(bool, is_modulo, false);
 1304.60 -__declare_numeric_base_member(bool, traps, false);
 1304.61 -__declare_numeric_base_member(bool, tinyness_before, false);
 1304.62 -__declare_numeric_base_member(float_round_style, round_style, round_toward_zero);
 1304.63 -
 1304.64 -# undef __declare_numeric_base_member
 1304.65 -
 1304.66 -#   define __declare_integer_limits_member(__type, __mem, _Init) \
 1304.67 -template <class _Int, _STLP_LIMITS_MIN_TYPE __imin, _STLP_LIMITS_MAX_TYPE __imax, int __idigits, bool __ismod> \
 1304.68 -  const __type _Integer_limits<_Int, __imin, __imax, __idigits, __ismod>:: __mem
 1304.69 -
 1304.70 -__declare_integer_limits_member(bool, is_specialized, true);
 1304.71 -__declare_integer_limits_member(int, digits, (__idigits < 0) ? \
 1304.72 -			    ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) \
 1304.73 -                            : (__idigits) );
 1304.74 -__declare_integer_limits_member(int, digits10, (int)(301UL * digits) /1000);
 1304.75 -__declare_integer_limits_member(bool, is_signed, __imin != 0);
 1304.76 -__declare_integer_limits_member(bool, is_integer, true);
 1304.77 -__declare_integer_limits_member(bool, is_exact, true);
 1304.78 -__declare_integer_limits_member(int, radix, 2);
 1304.79 -__declare_integer_limits_member(bool, is_bounded, true);
 1304.80 -__declare_integer_limits_member(bool, is_modulo, true);
 1304.81 -
 1304.82 -#   define __declare_float_limits_member(__type, __mem, _Init) \
 1304.83 -template <class __number,  \
 1304.84 -         int __Digits, int __Digits10,    \
 1304.85 -         int __MinExp, int __MaxExp,      \
 1304.86 -         int __MinExp10, int __MaxExp10,  \
 1304.87 -         bool __IsIEC559, \
 1304.88 -         float_round_style __RoundStyle> \
 1304.89 -const __type _Floating_limits< __number, __Digits, __Digits10,    \
 1304.90 -         __MinExp, __MaxExp, __MinExp10, __MaxExp10,  \
 1304.91 -         __IsIEC559, __RoundStyle>::\
 1304.92 -         __mem
 1304.93 -
 1304.94 -__declare_float_limits_member(bool, is_specialized, true);  
 1304.95 -__declare_float_limits_member(int, digits, __Digits);  
 1304.96 -__declare_float_limits_member(int, digits10, __Digits10);  
 1304.97 -__declare_float_limits_member(bool, is_signed, true);  
 1304.98 -__declare_float_limits_member(int, radix, FLT_RADIX);  
 1304.99 -__declare_float_limits_member(int, min_exponent, __MinExp);  
1304.100 -__declare_float_limits_member(int, max_exponent, __MaxExp);  
1304.101 -__declare_float_limits_member(int, min_exponent10, __MinExp10);  
1304.102 -__declare_float_limits_member(int, max_exponent10, __MaxExp10);  
1304.103 -__declare_float_limits_member(bool, has_infinity, true);
1304.104 -__declare_float_limits_member(bool, has_quiet_NaN, true);
1304.105 -__declare_float_limits_member(bool, has_signaling_NaN, true);
1304.106 -__declare_float_limits_member(float_denorm_style, has_denorm, denorm_indeterminate);
1304.107 -__declare_float_limits_member(bool, has_denorm_loss, false);
1304.108 -__declare_float_limits_member(bool, is_iec559, __IsIEC559);
1304.109 -__declare_float_limits_member(bool, is_bounded, true);
1304.110 -__declare_float_limits_member(bool, traps, true);
1304.111 -__declare_float_limits_member(bool, tinyness_before, false);
1304.112 -__declare_float_limits_member(float_round_style, round_style, __RoundStyle);
1304.113 -
1304.114 -# endif /* _STLP_STATIC_CONST_INIT_BUG */
1304.115 -
1304.116 -
1304.117 -# ifdef _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
1304.118 -
1304.119 -# if defined(_STLP_BIG_ENDIAN)
1304.120 -# if defined(__OS400__)
1304.121 -#  define _STLP_FLOAT_INF_REP { 0x7f80, 0 }
1304.122 -#  define _STLP_FLOAT_QNAN_REP { 0xffc0, 0 }
1304.123 -#  define _STLP_FLOAT_SNAN_REP { 0xff80, 0 }
1304.124 -#  define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 }
1304.125 -#  define _STLP_DOUBLE_QNAN_REP { 0xfff8, 0, 0, 0 }
1304.126 -#  define _STLP_DOUBLE_SNAN_REP { 0xfff0, 0, 0, 0 }
1304.127 -#  define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
1304.128 -#  define _STLP_LDOUBLE_QNAN_REP { 0xfff8, 0, 0, 0, 0, 0, 0, 0 }
1304.129 -#  define _STLP_LDOUBLE_SNAN_REP { 0xfff0, 0, 0, 0, 0, 0, 0, 0 }
1304.130 -# else
1304.131 -#  define _STLP_FLOAT_INF_REP   { 0x7f80, 0 }
1304.132 -#  define _STLP_FLOAT_SNAN_REP  { 0x7f81, 0 }
1304.133 -#  define _STLP_FLOAT_QNAN_REP  { 0x7fc1, 0 }
1304.134 -#  define _STLP_DOUBLE_INF_REP  { 0x7ff0, 0, 0, 0 }
1304.135 -#  define _STLP_DOUBLE_QNAN_REP { 0x7ff1, 0, 0, 0 }
1304.136 -#  define _STLP_DOUBLE_SNAN_REP { 0x7ff9, 0, 0, 0 }
1304.137 -#  define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
1304.138 -#  define _STLP_LDOUBLE_SNAN_REP { 0x7ff1, 0, 0, 0, 0, 0, 0, 0 }
1304.139 -#  define _STLP_LDOUBLE_QNAN_REP { 0x7ff9, 0, 0, 0, 0, 0, 0, 0 }
1304.140 -# endif
1304.141 -
1304.142 -# elif defined (_STLP_LITTLE_ENDIAN)
1304.143 -
1304.144 -# if 0 /* defined(_STLP_MSVC) || defined(__linux__) */
1304.145 -// some IA-32 platform ?? 
1304.146 -#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
1304.147 -#  define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
1304.148 -#  define _STLP_FLOAT_SNAN_REP { 0, 0xff80 }
1304.149 -
1304.150 -#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
1304.151 -#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
1304.152 -#  define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0xfff0 }
1304.153 -#  define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
1304.154 -#  define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
1304.155 -#  define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF0, 0 } // ????
1304.156 -
1304.157 -# elif defined(__DECCXX)
1304.158 -
1304.159 -#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
1304.160 -#  define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
1304.161 -#  define _STLP_FLOAT_SNAN_REP { 0x5555, 0x7f85 }
1304.162 -
1304.163 -#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
1304.164 -#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
1304.165 -#  define _STLP_DOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x7ff5 }
1304.166 -
1304.167 -#  define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0, 0, 0, 0, 0x7fff }
1304.168 -#  define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0, 0, 0, 0x8000, 0xffff }
1304.169 -#  define _STLP_LDOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x7fff}
1304.170 -# else
1304.171 -#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
1304.172 -#  define _STLP_FLOAT_QNAN_REP { 0, 0x7fa0 }
1304.173 -#  define _STLP_FLOAT_SNAN_REP { 0, 0x7fc0 }
1304.174 -#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
1304.175 -#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0x7ff4 }
1304.176 -#  define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0x7ff8 }
1304.177 -#  if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)
1304.178 -#   define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
1304.179 -#   define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
1304.180 -#   define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF8, 0 }
1304.181 -#  else
1304.182 -#   define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff }
1304.183 -#   define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xa000, 0x7fff }
1304.184 -#   define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xc000, 0x7fff }
1304.185 -#  endif
1304.186 -# endif
1304.187 -#else
1304.188 -/* This is an architecture we don't know how to handle. Return some
1304.189 -obviously wrong values. */
1304.190 -# define _STLP_FLOAT_INF_REP { 0, 0 }
1304.191 -# define _STLP_FLOAT_QNAN_REP { 0, 0 }
1304.192 -# define _STLP_FLOAT_SNAN_REP { 0, 0 }
1304.193 -# define _STLP_DOUBLE_INF_REP { 0, 0 }
1304.194 -# define _STLP_DOUBLE_QNAN_REP { 0, 0 }
1304.195 -# define _STLP_DOUBLE_SNAN_REP { 0, 0 }
1304.196 -# define _STLP_LDOUBLE_INF_REP { 0 }
1304.197 -# define _STLP_LDOUBLE_QNAN_REP { 0 }
1304.198 -# define _STLP_LDOUBLE_SNAN_REP { 0 }
1304.199 -
1304.200 -#endif
1304.201 -
1304.202 -#if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1304.203 -# ifndef _STLP_NO_LONG_DOUBLE
1304.204 -template <class __dummy>
1304.205 -const _L_rep _LimG<__dummy>::_L_inf  = {_STLP_LDOUBLE_INF_REP}; 
1304.206 -template <class __dummy>
1304.207 -const _L_rep _LimG<__dummy>::_L_qNaN  = {_STLP_LDOUBLE_QNAN_REP}; 
1304.208 -template <class __dummy>
1304.209 -const _L_rep _LimG<__dummy>::_L_sNaN  = {_STLP_LDOUBLE_SNAN_REP}; 
1304.210 -# endif
1304.211 -template <class __dummy>
1304.212 -const _D_rep _LimG<__dummy>::_D_inf  = {_STLP_DOUBLE_INF_REP}; 
1304.213 -template <class __dummy>
1304.214 -const _D_rep _LimG<__dummy>::_D_qNaN  = {_STLP_DOUBLE_QNAN_REP}; 
1304.215 -template <class __dummy>
1304.216 -const _D_rep _LimG<__dummy>::_D_sNaN  = {_STLP_DOUBLE_SNAN_REP}; 
1304.217 -template <class __dummy>
1304.218 -const _F_rep _LimG<__dummy>::_F_inf  = {_STLP_FLOAT_INF_REP}; 
1304.219 -template <class __dummy>
1304.220 -const _F_rep _LimG<__dummy>::_F_qNaN  = {_STLP_FLOAT_QNAN_REP}; 
1304.221 -template <class __dummy>
1304.222 -const _F_rep _LimG<__dummy>::_F_sNaN  = {_STLP_FLOAT_SNAN_REP}; 
1304.223 -
1304.224 -#else
1304.225 -
1304.226 -__DECLARE_INSTANCE( const _F_rep,
1304.227 -                   _LimG<bool>::_F_inf,  = _STLP_FLOAT_INF_REP);
1304.228 -__DECLARE_INSTANCE( const _F_rep,
1304.229 -                   _LimG<bool>::_F_qNaN,  = _STLP_FLOAT_QNAN_REP);
1304.230 -__DECLARE_INSTANCE( const _F_rep,
1304.231 -                   _LimG<bool>::_F_sNaN,  = _STLP_FLOAT_SNAN_REP);
1304.232 -__DECLARE_INSTANCE( const _D_rep,
1304.233 -                   _LimG<bool>::_D_inf,  = _STLP_DOUBLE_INF_REP);
1304.234 -__DECLARE_INSTANCE( const _D_rep,
1304.235 -                   _LimG<bool>::_D_qNaN,  = _STLP_DOUBLE_QNAN_REP);
1304.236 -__DECLARE_INSTANCE( const _D_rep,
1304.237 -                   _LimG<bool>::_D_sNaN,  = _STLP_DOUBLE_SNAN_REP);
1304.238 -# ifndef _STLP_NO_LONG_DOUBLE
1304.239 -__DECLARE_INSTANCE( const _L_rep,
1304.240 -                   _LimG<bool>::_L_inf,  = _STLP_LDOUBLE_INF_REP);
1304.241 -__DECLARE_INSTANCE( const _L_rep,
1304.242 -                   _LimG<bool>::_L_qNaN,  = _STLP_LDOUBLE_QNAN_REP);
1304.243 -__DECLARE_INSTANCE( const _L_rep,
1304.244 -                   _LimG<bool>::_L_sNaN,  = _STLP_LDOUBLE_SNAN_REP);
1304.245 -# endif
1304.246 -
1304.247 -#endif /* STATIC_DATA */   
1304.248 -
1304.249 -# endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */
1304.250 -    
1304.251 -# undef __declare_integer_limits_member
1304.252 -# undef __declare_float_limits_member
1304.253 -# undef __HACK_ILIMITS
1304.254 -# undef __HACK_NOTHING
1304.255 -# undef __declare_int_members
1304.256 -# undef __declare_float_members
1304.257 -# undef _STLP_LIMITS_MIN_TYPE
1304.258 -# undef _STLP_LIMITS_MAX_TYPE
1304.259 -
1304.260 -# undef _STLP_FLOAT_INF_REP
1304.261 -# undef _STLP_FLOAT_QNAN_REP
1304.262 -# undef _STLP_FLOAT_SNAN_REP
1304.263 -# undef _STLP_DOUBLE_INF_REP
1304.264 -# undef _STLP_DOUBLE_QNAN_REP
1304.265 -# undef _STLP_DOUBLE_SNAN_REP
1304.266 -# undef _STLP_LDOUBLE_INF_REP
1304.267 -# undef _STLP_LDOUBLE_QNAN_REP
1304.268 -# undef _STLP_LDOUBLE_SNAN_REP
1304.269 -
1304.270 -_STLP_END_NAMESPACE
1304.271 -
1304.272 -
1304.273 -#endif /* _STLP_LIMITS_C_INCLUDED */
  1305.1 --- a/epoc32/include/stdapis/stlport/stl/_list.c	Tue Mar 16 16:12:26 2010 +0000
  1305.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1305.3 @@ -1,252 +0,0 @@
  1305.4 -/*
  1305.5 - *
  1305.6 - *
  1305.7 - * Copyright (c) 1994
  1305.8 - * Hewlett-Packard Company
  1305.9 - *
 1305.10 - * Copyright (c) 1996,1997
 1305.11 - * Silicon Graphics Computer Systems, Inc.
 1305.12 - *
 1305.13 - * Copyright (c) 1997
 1305.14 - * Moscow Center for SPARC Technology
 1305.15 - *
 1305.16 - * Copyright (c) 1999 
 1305.17 - * Boris Fomitchev
 1305.18 - *
 1305.19 - * This material is provided "as is", with absolutely no warranty expressed
 1305.20 - * or implied. Any use is at your own risk.
 1305.21 - *
 1305.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1305.23 - * without fee, provided the above notices are retained on all copies.
 1305.24 - * Permission to modify the code and to distribute modified code is granted,
 1305.25 - * provided the above notices are retained, and a notice that the code was
 1305.26 - * modified is included with the above copyright notice.
 1305.27 - *
 1305.28 - */
 1305.29 -#ifndef _STLP_LIST_C
 1305.30 -#define _STLP_LIST_C
 1305.31 -
 1305.32 -#ifndef _STLP_INTERNAL_LIST_H
 1305.33 -# include <stl/_list.h>
 1305.34 -#endif
 1305.35 -
 1305.36 -#if defined (__WATCOMC__) || defined (_STLP_USE_TRAP_LEAVE)
 1305.37 -#include <vector>
 1305.38 -#endif
 1305.39 -
 1305.40 -# undef list
 1305.41 -# define  list  __WORKAROUND_DBG_RENAME(list)
 1305.42 -
 1305.43 -_STLP_BEGIN_NAMESPACE
 1305.44 -
 1305.45 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1305.46 -
 1305.47 -template <class _Dummy>
 1305.48 -void _STLP_CALL
 1305.49 -_List_global<_Dummy>::_Transfer(_List_node_base* __position, 
 1305.50 -				_List_node_base* __first, _List_node_base* __last) {
 1305.51 -  if (__position != __last) {
 1305.52 -    // Remove [first, last) from its old position.
 1305.53 -    ((_Node*) (__last->_M_prev))->_M_next = __position;
 1305.54 -    ((_Node*) (__first->_M_prev))->_M_next    = __last;
 1305.55 -    ((_Node*) (__position->_M_prev))->_M_next = __first; 
 1305.56 -    
 1305.57 -    // Splice [first, last) into its new position.
 1305.58 -    _Node* __tmp = (_Node*) (__position->_M_prev);
 1305.59 -    __position->_M_prev = __last->_M_prev;
 1305.60 -    __last->_M_prev      = __first->_M_prev; 
 1305.61 -    __first->_M_prev    = __tmp;
 1305.62 -  }
 1305.63 -}
 1305.64 -
 1305.65 -#endif /* defined (__BUILDING_STLPORT) || ! defined (_STLP_OWN_IOSTREAMS) */
 1305.66 -
 1305.67 -
 1305.68 -template <class _Tp, class _Alloc>
 1305.69 -void 
 1305.70 -_List_base<_Tp,_Alloc>::clear() 
 1305.71 -{
 1305.72 -  _List_node<_Tp>* __cur = this->_M_node._M_data;
 1305.73 -  if (!__cur)
 1305.74 -	return;
 1305.75 -  __cur = (_List_node<_Tp>*)__cur->_M_next;
 1305.76 -  while (__cur != this->_M_node._M_data) {
 1305.77 -    _List_node<_Tp>* __tmp = __cur;
 1305.78 -    __cur = (_List_node<_Tp>*) __cur->_M_next;
 1305.79 -    _STLP_STD::_Destroy(&__tmp->_M_data);
 1305.80 -    this->_M_node.deallocate(__tmp, 1);
 1305.81 -  }
 1305.82 -  this->_M_node._M_data->_M_next = this->_M_node._M_data;
 1305.83 -  this->_M_node._M_data->_M_prev = this->_M_node._M_data;
 1305.84 -}
 1305.85 -
 1305.86 -# if defined (_STLP_NESTED_TYPE_PARAM_BUG) 
 1305.87 -#  define size_type      size_t
 1305.88 -# endif
 1305.89 -
 1305.90 -template <class _Tp, class _Alloc>
 1305.91 -void list<_Tp, _Alloc>::resize(size_type __new_size, _Tp __x)
 1305.92 -{
 1305.93 -  iterator __i = begin();
 1305.94 -  size_type __len = 0;
 1305.95 -  for ( ; __i != end() && __len < __new_size; ++__i, ++__len);
 1305.96 -
 1305.97 -  if (__len == __new_size)
 1305.98 -    erase(__i, end());
 1305.99 -  else                          // __i == end()
1305.100 -    insert(end(), __new_size - __len, __x);
1305.101 -}
1305.102 -
1305.103 -template <class _Tp, class _Alloc>
1305.104 -list<_Tp, _Alloc>& list<_Tp, _Alloc>::operator=(const list<_Tp, _Alloc>& __x)
1305.105 -{
1305.106 -  if (this != &__x) {
1305.107 -    iterator __first1 = begin();
1305.108 -    iterator __last1 = end();
1305.109 -    const_iterator __first2 = __x.begin();
1305.110 -    const_iterator __last2 = __x.end();
1305.111 -    while (__first1 != __last1 && __first2 != __last2) 
1305.112 -      *__first1++ = *__first2++;
1305.113 -    if (__first2 == __last2)
1305.114 -      erase(__first1, __last1);
1305.115 -    else
1305.116 -      insert(__last1, __first2, __last2);
1305.117 -  }
1305.118 -  return *this;
1305.119 -}
1305.120 -
1305.121 -template <class _Tp, class _Alloc>
1305.122 -void list<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) {
1305.123 -  iterator __i = begin();
1305.124 -  for ( ; __i != end() && __n > 0; ++__i, --__n)
1305.125 -    *__i = __val;
1305.126 -  if (__n > 0)
1305.127 -    insert(end(), __n, __val);
1305.128 -  else
1305.129 -    erase(__i, end());
1305.130 -}
1305.131 -
1305.132 -template <class _Tp, class _Alloc, class _Predicate> 
1305.133 -void _S_remove_if(list<_Tp, _Alloc>& __that, _Predicate __pred)  {
1305.134 -  typename list<_Tp, _Alloc>::iterator __first = __that.begin();
1305.135 -  typename list<_Tp, _Alloc>::iterator __last = __that.end();
1305.136 -  while (__first != __last) {
1305.137 -    typename list<_Tp, _Alloc>::iterator __next = __first;
1305.138 -    ++__next;
1305.139 -    if (__pred(*__first)) __that.erase(__first);
1305.140 -    __first = __next;
1305.141 -  }
1305.142 -}
1305.143 -
1305.144 -template <class _Tp, class _Alloc, class _BinaryPredicate>
1305.145 -void _S_unique(list<_Tp, _Alloc>& __that, _BinaryPredicate __binary_pred) {
1305.146 -  typename list<_Tp, _Alloc>::iterator __first = __that.begin();
1305.147 -  typename list<_Tp, _Alloc>::iterator __last = __that.end();
1305.148 -  if (__first == __last) return;
1305.149 -  typename list<_Tp, _Alloc>::iterator __next = __first;
1305.150 -  while (++__next != __last) {
1305.151 -    if (__binary_pred(*__first, *__next))
1305.152 -      __that.erase(__next);
1305.153 -    else
1305.154 -      __first = __next;
1305.155 -    __next = __first;
1305.156 -  }
1305.157 -}
1305.158 -
1305.159 -template <class _Tp, class _Alloc, class _StrictWeakOrdering>
1305.160 -void _S_merge(list<_Tp, _Alloc>& __that, list<_Tp, _Alloc>& __x,
1305.161 -	      _StrictWeakOrdering __comp) {
1305.162 -  typedef typename list<_Tp, _Alloc>::iterator _Literator;
1305.163 -  _Literator __first1 = __that.begin();
1305.164 -  _Literator __last1 = __that.end();
1305.165 -  _Literator __first2 = __x.begin();
1305.166 -  _Literator __last2 = __x.end();
1305.167 -  while (__first1 != __last1 && __first2 != __last2)
1305.168 -    if (__comp(*__first2, *__first1)) {
1305.169 -      _Literator __next = __first2;
1305.170 -      _List_global_inst::_Transfer(__first1._M_node, __first2._M_node, (++__next)._M_node);
1305.171 -      __first2 = __next;
1305.172 -    }
1305.173 -    else
1305.174 -      ++__first1;
1305.175 -  if (__first2 != __last2) _List_global_inst::_Transfer(__last1._M_node, __first2._M_node, __last2._M_node);
1305.176 -}
1305.177 -
1305.178 -template <class _Tp, class _Alloc, class _StrictWeakOrdering>
1305.179 -void _S_sort(list<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp) {
1305.180 -  // Do nothing if the list has length 0 or 1.
1305.181 -  if (__that._M_node._M_data->_M_next != __that._M_node._M_data &&
1305.182 -      (__that._M_node._M_data->_M_next)->_M_next != __that._M_node._M_data) {
1305.183 -
1305.184 -#if !defined (__WATCOMC__)
1305.185 -#ifdef _STLP_USE_TRAP_LEAVE
1305.186 -    typedef vector<list<_Tp, _Alloc>*, _Alloc>  _TmpVec;
1305.187 -    _TmpVec* __pTmp = new _TmpVec();
1305.188 -    _TmpVec& __counter = *__pTmp;
1305.189 -    for (int i = 0; 1< 64; ++i) {
1305.190 -      list<_Tp, _Alloc>* __pTmp2 = new list<_Tp, _Alloc>;
1305.191 -      __counter.push_back (__pTmp2);
1305.192 -    }
1305.193 -    list<_Tp, _Alloc>* __pcarry = new list<_Tp, _Alloc>;
1305.194 -    list<_Tp, _Alloc>& __carry = *__pcarry;
1305.195 -#else
1305.196 -    list<_Tp, _Alloc> __counter[64];
1305.197 -    list<_Tp, _Alloc> __carry;
1305.198 -#endif
1305.199 -#else
1305.200 -    list<_Tp, _Alloc> __carry;
1305.201 -    __vector__<list<_Tp, _Alloc>, _Alloc> __counter(64);		
1305.202 -#endif
1305.203 -    int __fill = 0;
1305.204 -#ifdef _STLP_USE_TRAP_LEAVE
1305.205 -    while (!__that.empty()) {
1305.206 -      __carry.splice(__carry.begin(), __that, __that.begin());
1305.207 -      int __i = 0;
1305.208 -
1305.209 -      while(__i < __fill && !__counter[__i]->empty()) {
1305.210 -	_S_merge(*__counter[__i], __carry, __comp);
1305.211 -	__carry.swap(*__counter[__i++]);
1305.212 -      }
1305.213 -      __carry.swap(*__counter[__i]);         
1305.214 -      if (__i == __fill) ++__fill;
1305.215 -    } 
1305.216 -    
1305.217 -    for (int __i = 1; __i < __fill; ++__i) 
1305.218 -      _S_merge(*__counter[__i], *__counter[__i-1], __comp);
1305.219 -    __that.swap(*__counter[__fill-1]);
1305.220 -
1305.221 -    // those objects won't just go away
1305.222 -    __counter.clear();
1305.223 -    CleanupStack::Pop(66);
1305.224 -  }    
1305.225 -# else
1305.226 -    while (!__that.empty()) {
1305.227 -      __carry.splice(__carry.begin(), __that, __that.begin());
1305.228 -      int __i = 0;
1305.229 -
1305.230 -      while(__i < __fill && !__counter[__i].empty()) {
1305.231 -	_S_merge(__counter[__i], __carry, __comp);
1305.232 -	__carry.swap(__counter[__i++]);
1305.233 -      }
1305.234 -      __carry.swap(__counter[__i]);         
1305.235 -      if (__i == __fill) ++__fill;
1305.236 -    } 
1305.237 -    
1305.238 -    for (int __i = 1; __i < __fill; ++__i) 
1305.239 -      _S_merge(__counter[__i], __counter[__i-1], __comp);
1305.240 -    __that.swap(__counter[__fill-1]);
1305.241 -  }
1305.242 -# endif
1305.243 -
1305.244 -}
1305.245 -
1305.246 -# undef  list
1305.247 -# undef  size_type
1305.248 -
1305.249 -_STLP_END_NAMESPACE
1305.250 -
1305.251 -#endif /*  _STLP_LIST_C */
1305.252 -
1305.253 -// Local Variables:
1305.254 -// mode:C++
1305.255 -// End:
  1306.1 --- a/epoc32/include/stdapis/stlport/stl/_locale.h	Tue Mar 16 16:12:26 2010 +0000
  1306.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1306.3 @@ -1,259 +0,0 @@
  1306.4 -/*
  1306.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1306.6 - *
  1306.7 - * Copyright (c) 1999
  1306.8 - * Silicon Graphics Computer Systems, Inc.
  1306.9 - *
 1306.10 - * Copyright (c) 1999 
 1306.11 - * Boris Fomitchev
 1306.12 - *
 1306.13 - * This material is provided "as is", with absolutely no warranty expressed
 1306.14 - * or implied. Any use is at your own risk.
 1306.15 - *
 1306.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1306.17 - * without fee, provided the above notices are retained on all copies.
 1306.18 - * Permission to modify the code and to distribute modified code is granted,
 1306.19 - * provided the above notices are retained, and a notice that the code was
 1306.20 - * modified is included with the above copyright notice.
 1306.21 - *
 1306.22 - */ 
 1306.23 -// WARNING: This is an internal header file, included by other C++
 1306.24 -// standard library headers.  You should not attempt to use this header
 1306.25 -// file directly.
 1306.26 -
 1306.27 -
 1306.28 -#ifndef _STLP_INTERNAL_LOCALE_H
 1306.29 -#define _STLP_INTERNAL_LOCALE_H
 1306.30 -
 1306.31 -#ifndef _STLP_CSTDLIB
 1306.32 -# include <cstdlib>
 1306.33 -#endif
 1306.34 -
 1306.35 -#ifndef _STLP_CWCHAR_H
 1306.36 -# include <stl/_cwchar.h>
 1306.37 -#endif
 1306.38 -
 1306.39 -#ifndef _STLP_INTERNAL_THREADS_H
 1306.40 -# include <stl/_threads.h>
 1306.41 -#endif
 1306.42 -
 1306.43 -#ifndef _STLP_STRING_FWD_H
 1306.44 -# include <stl/_string_fwd.h>
 1306.45 -#endif
 1306.46 -
 1306.47 -_STLP_BEGIN_NAMESPACE
 1306.48 -
 1306.49 -class _STLP_CLASS_DECLSPEC _Locale_impl;             // Forward declaration of opaque type.
 1306.50 -class _STLP_CLASS_DECLSPEC _Locale;             // Forward declaration of opaque type.
 1306.51 -class _STLP_CLASS_DECLSPEC locale;
 1306.52 -class _STLP_CLASS_DECLSPEC ios_base;
 1306.53 -
 1306.54 -
 1306.55 -template <class _CharT, class _Traits, class _Alloc>
 1306.56 -bool 
 1306.57 -__locale_do_operator_call (const locale* __that, 
 1306.58 -                           const basic_string<_CharT, _Traits, _Alloc >& __x,
 1306.59 -                           const basic_string<_CharT, _Traits, _Alloc >& __y);
 1306.60 -
 1306.61 -#  define _BaseFacet locale::facet
 1306.62 -
 1306.63 -class _STLP_CLASS_DECLSPEC locale {
 1306.64 -public:
 1306.65 -  // types:
 1306.66 -
 1306.67 -  class 
 1306.68 -#if defined (__SYMBIAN32__) || defined(__GCCE__)
 1306.69 -  _STLP_CLASS_DECLSPEC  
 1306.70 -#else
 1306.71 -    _STLP_DECLSPEC 
 1306.72 -#endif
 1306.73 -  facet : private _Refcount_Base {
 1306.74 -  protected:
 1306.75 -    explicit facet(size_t __no_del = 0) : _Refcount_Base(1), _M_delete(__no_del == 0) {}
 1306.76 -
 1306.77 -    _STLP_DECLSPEC virtual ~facet();
 1306.78 -    friend class locale;
 1306.79 -    friend class _Locale_impl;
 1306.80 -    friend class _Locale;
 1306.81 -    
 1306.82 -  private:                        // Invalidate assignment and copying.
 1306.83 -    facet(const facet& __f) : _Refcount_Base(1), _M_delete(__f._M_delete == 0)  {};       
 1306.84 -    void operator=(const facet&); 
 1306.85 -    
 1306.86 -  private:                        // Data members.
 1306.87 -    const bool _M_delete;
 1306.88 -  };
 1306.89 -  
 1306.90 -#if defined(__MVS__) || defined(__OS400__)
 1306.91 -  struct
 1306.92 -#else
 1306.93 -  class
 1306.94 -#endif
 1306.95 -  _STLP_DECLSPEC id {
 1306.96 -    friend class locale;
 1306.97 -    friend class _Locale_impl;
 1306.98 -  public:
 1306.99 -    size_t _M_index;
1306.100 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1306.101 -   static _STLP_STATIC_MEMBER_DECLSPEC size_t& get_locale_id_S_max();
1306.102 -# else
1306.103 -    static size_t _S_max;
1306.104 -# endif
1306.105 -  };
1306.106 -
1306.107 -  typedef int category;
1306.108 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1306.109 -  enum _Category {
1306.110 -# else
1306.111 -  static const category
1306.112 -# endif
1306.113 -    none      = 0x000,
1306.114 -    collate   = 0x010,
1306.115 -    ctype     = 0x020,
1306.116 -    monetary  = 0x040,
1306.117 -    numeric   = 0x100,
1306.118 -    time      = 0x200,
1306.119 -    messages  = 0x400,
1306.120 -    all       = collate | ctype | monetary | numeric | time | messages
1306.121 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1306.122 -  }
1306.123 -# endif
1306.124 -  ;
1306.125 -
1306.126 -  // construct/copy/destroy:
1306.127 -  _STLP_DECLSPEC locale();
1306.128 -  _STLP_DECLSPEC locale(const locale&) _STLP_NOTHROW;
1306.129 -  explicit locale(const char *);
1306.130 -  locale(const locale&, const char*, category);
1306.131 -
1306.132 -  // those are for internal use
1306.133 -  locale(_Locale_impl*);
1306.134 -  locale(_Locale_impl*, bool);
1306.135 -
1306.136 -public:
1306.137 -
1306.138 -# if defined ( _STLP_MEMBER_TEMPLATES ) /* && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) */
1306.139 -  template <class _Facet> 
1306.140 -  locale(const locale& __loc, _Facet* __f) : _M_impl(0)
1306.141 -    {
1306.142 -      //      _M_impl = this->_S_copy_impl(__loc._M_impl, __f != 0);
1306.143 -      new(this) locale(__loc._M_impl, __f != 0);
1306.144 -      if (__f != 0)
1306.145 -        this->_M_insert((facet*)__f, _Facet::GetFacetLocaleId());
1306.146 -    }
1306.147 -# endif
1306.148 -
1306.149 -  locale(const locale&, const locale&, category);
1306.150 -  _STLP_DECLSPEC ~locale() _STLP_NOTHROW;
1306.151 -  _STLP_DECLSPEC const locale& operator=(const locale&) _STLP_NOTHROW;
1306.152 -
1306.153 -# if !(defined (_STLP_NO_MEMBER_TEMPLATES) || defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS))
1306.154 -  template <class _Facet> locale combine(const locale& __loc) const{
1306.155 -    locale __result(__loc._M_impl, true);
1306.156 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1306.157 -    if (facet* __f = __loc._M_get_facet(_Facet::GetFacetLocaleId())) {
1306.158 -      __result._M_insert((facet*)__f, _Facet::GetFacetLocaleId());
1306.159 -#else
1306.160 -    if (facet* __f = __loc._M_get_facet(_Facet::id)) {
1306.161 -      __result._M_insert((facet*)__f, _Facet::id);
1306.162 -#endif
1306.163 -      __f->_M_incr();
1306.164 -    }
1306.165 -    else
1306.166 -      _M_throw_runtime_error();    
1306.167 -    return __result;
1306.168 -  }
1306.169 -# endif
1306.170 -  // locale operations:
1306.171 -  _STLP_DECLSPEC string name() const;
1306.172 -
1306.173 -  _STLP_DECLSPEC bool operator==(const locale&) const;
1306.174 -  _STLP_DECLSPEC bool operator!=(const locale&) const;
1306.175 -
1306.176 -# if ! defined ( _STLP_MEMBER_TEMPLATES ) || defined (_STLP_INLINE_MEMBER_TEMPLATES) || (defined(__MWERKS__) && __MWERKS__ <= 0x2301)
1306.177 -  bool operator()(const string& __x, const string& __y) const;
1306.178 -#  ifndef _STLP_NO_WCHAR_T
1306.179 -  bool operator()(const wstring& __x, const wstring& __y) const;
1306.180 -#  endif
1306.181 -# else
1306.182 -  template <class _CharT, class _Traits, class _Alloc>
1306.183 -  bool operator()(const basic_string<_CharT, _Traits, _Alloc>& __x,
1306.184 -                  const basic_string<_CharT, _Traits, _Alloc>& __y) const  {
1306.185 -    return __locale_do_operator_call(this, __x, __y);
1306.186 -  }              
1306.187 -# endif
1306.188 -
1306.189 -  // global locale objects:
1306.190 -  _STLP_DECLSPEC static locale _STLP_CALL global(const locale&);
1306.191 -  _STLP_DECLSPEC static const locale& _STLP_CALL classic();
1306.192 -
1306.193 -public:                         // Helper functions for locale globals.
1306.194 -  _STLP_DECLSPEC facet* _M_get_facet(const id&) const;
1306.195 -  // same, but throws
1306.196 -  _STLP_DECLSPEC facet* _M_use_facet(const id&) const;
1306.197 -  _STLP_DECLSPEC static void _STLP_CALL _M_throw_runtime_error(const char* = 0);
1306.198 -  static void _STLP_CALL _S_initialize();
1306.199 -  static void _STLP_CALL _S_uninitialize();
1306.200 -
1306.201 -private:                        // More helper functions.
1306.202 -  //  static _Locale_impl* _STLP_CALL _S_copy_impl(_Locale_impl*, bool);
1306.203 -  _STLP_DECLSPEC void _M_insert(facet* __f, id& __id);
1306.204 -
1306.205 -  // friends:
1306.206 -  friend class _Locale_impl;
1306.207 -  friend class _Locale;
1306.208 -  friend class ios_base;
1306.209 -
1306.210 -private:                        // Data members
1306.211 -  _Locale_impl* _M_impl;
1306.212 -};
1306.213 -
1306.214 -//----------------------------------------------------------------------
1306.215 -// locale globals
1306.216 -
1306.217 -# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1306.218 -template <class _Facet>
1306.219 -inline const _Facet& 
1306.220 -_Use_facet<_Facet>::operator *() const
1306.221 -# else
1306.222 -template <class _Facet> inline const _Facet& use_facet(const locale& __loc)
1306.223 -# endif
1306.224 -{
1306.225 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1306.226 -  return *__STATIC_CAST(const _Facet*,__loc._M_use_facet(_Facet::GetFacetLocaleId()));
1306.227 -#else
1306.228 -  return *__STATIC_CAST(const _Facet*,__loc._M_use_facet(_Facet::id));
1306.229 -#endif
1306.230 -}
1306.231 -
1306.232 - 
1306.233 -# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1306.234 -template <class _Facet> 
1306.235 -struct has_facet {
1306.236 -  const locale& __loc;
1306.237 -  has_facet(const locale& __p_loc) : __loc(__p_loc) {}
1306.238 -  operator bool() const _STLP_NOTHROW
1306.239 -# else
1306.240 -template <class _Facet> inline bool has_facet(const locale& __loc) _STLP_NOTHROW 
1306.241 -# endif
1306.242 -{
1306.243 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1306.244 -  return (__loc._M_get_facet(_Facet::GetFacetLocaleId()) != 0);
1306.245 -#else
1306.246 -  return (__loc._M_get_facet(_Facet::id) != 0);
1306.247 -#endif
1306.248 -}
1306.249 -
1306.250 -# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1306.251 -  // close class definition
1306.252 -};
1306.253 -# endif
1306.254 -
1306.255 -_STLP_END_NAMESPACE
1306.256 -
1306.257 -#endif /* _STLP_INTERNAL_LOCALE_H */
1306.258 -
1306.259 -// Local Variables:
1306.260 -// mode:C++
1306.261 -// End:
1306.262 -
  1307.1 --- a/epoc32/include/stdapis/stlport/stl/_messages_facets.h	Tue Mar 16 16:12:26 2010 +0000
  1307.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1307.3 @@ -1,186 +0,0 @@
  1307.4 -/*
  1307.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1307.6 - *
  1307.7 - * Copyright (c) 1999
  1307.8 - * Silicon Graphics Computer Systems, Inc.
  1307.9 - *
 1307.10 - * Copyright (c) 1999 
 1307.11 - * Boris Fomitchev
 1307.12 - *
 1307.13 - * This material is provided "as is", with absolutely no warranty expressed
 1307.14 - * or implied. Any use is at your own risk.
 1307.15 - *
 1307.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1307.17 - * without fee, provided the above notices are retained on all copies.
 1307.18 - * Permission to modify the code and to distribute modified code is granted,
 1307.19 - * provided the above notices are retained, and a notice that the code was
 1307.20 - * modified is included with the above copyright notice.
 1307.21 - *
 1307.22 - */ 
 1307.23 -
 1307.24 -// WARNING: This is an internal header file, included by other C++
 1307.25 -// standard library headers.  You should not attempt to use this header
 1307.26 -// file directly.
 1307.27 -
 1307.28 -
 1307.29 -#ifndef _STLP_INTERNAL_MESSAGES_H
 1307.30 -#define _STLP_INTERNAL_MESSAGES_H
 1307.31 -
 1307.32 -#ifndef _STLP_IOS_BASE_H
 1307.33 -# include <stl/_ios_base.h>
 1307.34 -#endif
 1307.35 -
 1307.36 -# ifndef _STLP_C_LOCALE_H
 1307.37 -#  include <stl/c_locale.h>
 1307.38 -# endif
 1307.39 -
 1307.40 -#ifndef _STLP_STRING_H
 1307.41 -# include <stl/_string.h>
 1307.42 -#endif
 1307.43 -
 1307.44 -_STLP_BEGIN_NAMESPACE
 1307.45 -
 1307.46 -// messages facets
 1307.47 -
 1307.48 -class messages_base {
 1307.49 -public:
 1307.50 -  typedef int catalog;
 1307.51 -};
 1307.52 -
 1307.53 -template <class _CharT> class messages {};
 1307.54 -
 1307.55 -class _Messages;
 1307.56 -
 1307.57 -_STLP_TEMPLATE_NULL
 1307.58 -#ifdef __SYMBIAN32__
 1307.59 -class messages<char> : public locale::facet, public messages_base
 1307.60 -#else
 1307.61 -class _STLP_CLASS_DECLSPEC messages<char> : public locale::facet, public messages_base
 1307.62 -#endif
 1307.63 -{
 1307.64 -  friend class _Locale;
 1307.65 -public:
 1307.66 -  typedef messages_base::catalog catalog;
 1307.67 -  typedef char                   char_type;
 1307.68 -  typedef string    string_type;
 1307.69 -
 1307.70 - _STLP_DECLSPEC explicit messages(size_t __refs = 0);
 1307.71 -
 1307.72 - catalog open(const string& __fn, const locale& __loc) const
 1307.73 -    { return do_open(__fn, __loc); }
 1307.74 -  string_type get(catalog __c, int __set, int __msgid,
 1307.75 -		  const string_type& __dfault) const
 1307.76 -    { return do_get(__c, __set, __msgid, __dfault); }
 1307.77 -  inline void close(catalog __c) const
 1307.78 -    { do_close(__c); }
 1307.79 -
 1307.80 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1307.81 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
 1307.82 -#else
 1307.83 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
 1307.84 -#endif
 1307.85 -
 1307.86 -  _STLP_DECLSPEC  messages(_Messages*);
 1307.87 -
 1307.88 -protected:
 1307.89 - _STLP_DECLSPEC  messages(size_t, _Locale_messages*);
 1307.90 -_STLP_DECLSPEC   ~messages();
 1307.91 -
 1307.92 -_STLP_DECLSPEC   virtual catalog     do_open(const string& __fn, const locale& __loc) const;
 1307.93 -_STLP_DECLSPEC   virtual string_type do_get(catalog __c, int __set, int __msgid,
 1307.94 -                             const string_type& __dfault) const;
 1307.95 -_STLP_DECLSPEC   virtual void        do_close(catalog __c) const;
 1307.96 -
 1307.97 -  void _M_initialize(const char* __name);
 1307.98 -
 1307.99 -private:
1307.100 -  _Messages* _M_impl;
1307.101 -};
1307.102 -
1307.103 -# if !defined (_STLP_NO_WCHAR_T)
1307.104 -
1307.105 -_STLP_TEMPLATE_NULL
1307.106 -#ifdef __SYMBIAN32__
1307.107 -class messages<wchar_t> : public locale::facet, public messages_base
1307.108 -#else
1307.109 -class _STLP_CLASS_DECLSPEC messages<wchar_t> : public locale::facet, public messages_base
1307.110 -#endif
1307.111 -{
1307.112 -  friend class _Locale;
1307.113 -public:
1307.114 -  typedef messages_base::catalog catalog;
1307.115 -  typedef wchar_t                char_type;
1307.116 -  typedef wstring  string_type;
1307.117 -
1307.118 -_STLP_DECLSPEC   explicit messages(size_t __refs = 0);
1307.119 -  
1307.120 -  inline catalog open(const string& __fn, const locale& __loc) const
1307.121 -    { return do_open(__fn, __loc); }
1307.122 -  inline string_type get(catalog __c, int __set, int __msgid,
1307.123 -                         const string_type& __dfault) const
1307.124 -    { return do_get(__c, __set, __msgid, __dfault); }
1307.125 -  inline void close(catalog __c) const
1307.126 -    { do_close(__c); }
1307.127 -
1307.128 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1307.129 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1307.130 -#else
1307.131 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1307.132 -#endif
1307.133 -
1307.134 -  _STLP_DECLSPEC  messages(_Messages*);
1307.135 -
1307.136 -protected:
1307.137 -
1307.138 -_STLP_DECLSPEC   messages(size_t, _Locale_messages*);
1307.139 -_STLP_DECLSPEC   ~messages();
1307.140 -
1307.141 -_STLP_DECLSPEC   virtual catalog     do_open(const string& __fn, const locale& __loc) const;
1307.142 -_STLP_DECLSPEC   virtual string_type do_get(catalog __c, int __set, int __msgid,
1307.143 -                             const string_type& __dfault) const;
1307.144 -_STLP_DECLSPEC   virtual void        do_close(catalog __c) const;
1307.145 -
1307.146 -  void _M_initialize(const char* __name);
1307.147 -
1307.148 -private:
1307.149 -  _Messages* _M_impl;
1307.150 -};
1307.151 -
1307.152 -# endif /* WCHAR_T */
1307.153 -
1307.154 -template <class _CharT> class messages_byname {};
1307.155 -
1307.156 -_STLP_TEMPLATE_NULL
1307.157 -class _STLP_CLASS_DECLSPEC messages_byname<char> : public messages<char> {
1307.158 -public:
1307.159 -  typedef messages_base::catalog catalog;
1307.160 -  typedef string     string_type;
1307.161 -
1307.162 - _STLP_DECLSPEC  explicit messages_byname(const char* __name, size_t __refs = 0);
1307.163 -
1307.164 -protected:
1307.165 -_STLP_DECLSPEC   ~messages_byname();
1307.166 -};
1307.167 -
1307.168 -# ifndef _STLP_NO_WCHAR_T
1307.169 -_STLP_TEMPLATE_NULL
1307.170 -class _STLP_CLASS_DECLSPEC messages_byname<wchar_t> : public messages<wchar_t> {
1307.171 -public:
1307.172 -  typedef messages_base::catalog catalog;
1307.173 -  typedef wstring                string_type;
1307.174 -
1307.175 -_STLP_DECLSPEC   explicit messages_byname(const char* __name, size_t __refs = 0);
1307.176 -
1307.177 -protected:
1307.178 -_STLP_DECLSPEC   ~messages_byname();
1307.179 -};
1307.180 -# endif /* WCHAR_T */
1307.181 -
1307.182 -_STLP_END_NAMESPACE
1307.183 -
1307.184 -#endif /* _STLP_INTERNAL_MESSAGES_H */
1307.185 -
1307.186 -// Local Variables:
1307.187 -// mode:C++
1307.188 -// End:
1307.189 -
  1308.1 --- a/epoc32/include/stdapis/stlport/stl/_monetary.c	Tue Mar 16 16:12:26 2010 +0000
  1308.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1308.3 @@ -1,827 +0,0 @@
  1308.4 -/*
  1308.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1308.6 - *
  1308.7 - * Copyright (c) 1999
  1308.8 - * Silicon Graphics Computer Systems, Inc.
  1308.9 - *
 1308.10 - * Copyright (c) 1999 
 1308.11 - * Boris Fomitchev
 1308.12 - *
 1308.13 - * This material is provided "as is", with absolutely no warranty expressed
 1308.14 - * or implied. Any use is at your own risk.
 1308.15 - *
 1308.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1308.17 - * without fee, provided the above notices are retained on all copies.
 1308.18 - * Permission to modify the code and to distribute modified code is granted,
 1308.19 - * provided the above notices are retained, and a notice that the code was
 1308.20 - * modified is included with the above copyright notice.
 1308.21 - *
 1308.22 - */ 
 1308.23 -#ifndef _STLP_MONETARY_C
 1308.24 -#define _STLP_MONETARY_C
 1308.25 -
 1308.26 -# ifndef _STLP_INTERNAL_MONETARY_H
 1308.27 -#  include <stl/_monetary.h>
 1308.28 -# endif
 1308.29 -
 1308.30 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1308.31 -
 1308.32 -#ifndef _STLP_INTERNAL_IOS_H
 1308.33 -# include <stl/_ios.h>
 1308.34 -#endif
 1308.35 -
 1308.36 -#ifndef _STLP_INTERNAL_NUM_PUT_H
 1308.37 -# include <stl/_num_put.h>
 1308.38 -#endif
 1308.39 -
 1308.40 -#ifndef _STLP_INTERNAL_NUM_GET_H
 1308.41 -# include <stl/_num_get.h>
 1308.42 -#endif
 1308.43 -
 1308.44 -_STLP_BEGIN_NAMESPACE
 1308.45 -
 1308.46 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
 1308.47 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1308.48 -template <class _CharT, class _InputIterator>
 1308.49 -locale::id money_get<_CharT, _InputIterator>::id;
 1308.50 -
 1308.51 -template <class _CharT, class _OutputIterator>
 1308.52 -locale::id money_put<_CharT, _OutputIterator>::id;
 1308.53 -#endif
 1308.54 -# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1308.55 -
 1308.56 -typedef money_get<char, const char*> money_get_char;
 1308.57 -typedef money_put<char, char*> money_put_char;
 1308.58 -typedef money_get<char, istreambuf_iterator<char, char_traits<char> > > money_get_char_2;
 1308.59 -typedef money_put<char, ostreambuf_iterator<char, char_traits<char> > > money_put_char_2;
 1308.60 -
 1308.61 -#ifndef __SYMBIAN32__
 1308.62 -__DECLARE_INSTANCE(locale::id, money_get_char::id, );
 1308.63 -__DECLARE_INSTANCE(locale::id, money_put_char::id, );
 1308.64 -__DECLARE_INSTANCE(locale::id, money_get_char_2::id, );
 1308.65 -__DECLARE_INSTANCE(locale::id, money_put_char_2::id, );
 1308.66 -#endif
 1308.67 -
 1308.68 -# ifndef _STLP_NO_WCHAR_T
 1308.69 -
 1308.70 -typedef money_get<wchar_t, const wchar_t*> money_get_wchar_t;
 1308.71 -typedef money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > money_get_wchar_t_2;
 1308.72 -typedef money_put<wchar_t, wchar_t*> money_put_wchar_t;
 1308.73 -typedef money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > money_put_wchar_t_2;
 1308.74 -
 1308.75 -#ifndef __SYMBIAN32__
 1308.76 -__DECLARE_INSTANCE(locale::id, money_get_wchar_t::id, );
 1308.77 -__DECLARE_INSTANCE(locale::id, money_put_wchar_t::id, );
 1308.78 -__DECLARE_INSTANCE(locale::id, money_get_wchar_t_2::id, );
 1308.79 -__DECLARE_INSTANCE(locale::id, money_put_wchar_t_2::id, );
 1308.80 -#endif
 1308.81 -
 1308.82 -# endif
 1308.83 -# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1308.84 -
 1308.85 -// money_get facets
 1308.86 -
 1308.87 -
 1308.88 -// helper functions for do_get
 1308.89 -template <class _InIt1, class _InIt2>
 1308.90 -pair<_InIt1, bool> __get_string(_InIt1 __first,     _InIt1 __last,
 1308.91 -                               _InIt2 __str_first, _InIt2 __str_last) {
 1308.92 -  pair<_InIt1, _InIt2> __pr = mismatch(__first, __last, __str_first);
 1308.93 -  return make_pair(__pr.first, __pr.second == __str_last);
 1308.94 -}
 1308.95 -
 1308.96 -template <class _InIt, class _OuIt, class _CharT>
 1308.97 -bool
 1308.98 -__get_monetary_value(_InIt& __first, _InIt __last, _OuIt __stl_out,
 1308.99 -                     const ctype<_CharT>& _c_type,
1308.100 -                     _CharT   __point,
1308.101 -                     int      __frac_digits,
1308.102 -                     _CharT __sep,
1308.103 -                     const string& __grouping,
1308.104 -                     bool&         __syntax_ok)
1308.105 -{
1308.106 -
1308.107 -	size_t __digits = 0;
1308.108 -
1308.109 -  if (__first == __last || !_c_type.is(ctype_base::digit, *__first))
1308.110 -    return false;
1308.111 -
1308.112 -  char __group_sizes[128];
1308.113 -  char* __group_sizes_end = __grouping.size() == 0 ? 0 : __group_sizes;
1308.114 -  char   __current_group_size = 0;
1308.115 -
1308.116 -  while (__first != __last) {
1308.117 -    if (_c_type.is(ctype_base::digit, *__first)) {
1308.118 -      ++__current_group_size;
1308.119 -      *__stl_out++ = *__first++;
1308.120 -	  __digits++;
1308.121 -    }
1308.122 -#ifdef __SYMBIAN32__
1308.123 -else if ( (__current_group_size)&&(__group_sizes_end) ){
1308.124 -#else
1308.125 -    else if (__group_sizes_end) {
1308.126 -#endif		
1308.127 -      if (*__first == __sep) {
1308.128 -	*__group_sizes_end++ = __current_group_size; 
1308.129 -	__current_group_size = 0;
1308.130 -	++__first;
1308.131 -      }
1308.132 -      else break;
1308.133 -    }
1308.134 -    else
1308.135 -      break;
1308.136 -  }
1308.137 -
1308.138 -  if (__grouping.size() == 0)
1308.139 -    __syntax_ok = true;
1308.140 -  else {
1308.141 -    if (__group_sizes_end != __group_sizes)
1308.142 -     *__group_sizes_end++ = __current_group_size; 
1308.143 -    
1308.144 -    __syntax_ok = __valid_grouping(__group_sizes, __group_sizes_end,
1308.145 -                                   __grouping.data(), __grouping.data()+ __grouping.size());  
1308.146 -    
1308.147 -    if (__first == __last || *__first != __point) {
1308.148 -      for (int __digits = 0; __digits != __frac_digits; ++__digits)
1308.149 -        *__stl_out++ = _CharT('0');
1308.150 -      return true; // OK not to have decimal point
1308.151 -    }
1308.152 -  }
1308.153 -//bug fix testcase_22427 - commented
1308.154 -//  ++__first; 
1308.155 -
1308.156 -
1308.157 -  //bug fix testcase_22427 - added if
1308.158 -
1308.159 -  if (__first != __last && *__first == __point && __frac_digits)
1308.160 -  {  	
1308.161 -	//bug fix testcase_22427 - commented
1308.162 -	++__first; 
1308.163 -	  while (__first != __last && _c_type.is(ctype_base::digit, *__first)) {
1308.164 -	      *__stl_out++ = *__first++;
1308.165 -	     ++__digits;
1308.166 -	  }
1308.167 -  }
1308.168 -
1308.169 -  //bug fix testcase_22427 - condition changed
1308.170 -//  __syntax_ok = __syntax_ok && (__digits == __frac_digits);
1308.171 -  
1308.172 - if(__digits == 0)
1308.173 -  	__syntax_ok = false;
1308.174 -
1308.175 -  return true;
1308.176 -}
1308.177 -
1308.178 -# ifndef _STLP_NO_LONG_DOUBLE
1308.179 -
1308.180 -//===== methods ======
1308.181 -template <class _CharT, class _InputIter>
1308.182 -_InputIter 
1308.183 -money_get<_CharT, _InputIter>::do_get(_InputIter __s, _InputIter  __end, bool  __intl,
1308.184 -				      ios_base&  __str, ios_base::iostate& __err,
1308.185 -				      long double& __units) const {
1308.186 -  string_type __buf;
1308.187 -  __s = do_get(__s, __end, __intl, __str, __err, __buf);
1308.188 -
1308.189 -  if (__err == ios_base::goodbit || __err == ios_base::eofbit) {
1308.190 -    __buf.push_back(0);
1308.191 -    typename string_type::iterator __b = __buf.begin(), __e = __buf.end();
1308.192 -    // Can't use atold, since it might be wchar_t. Don't get confused by name below :
1308.193 -    // it's perfectly capable of reading long double.
1308.194 -    __get_decimal_integer(__b, __e, __units);
1308.195 -  }
1308.196 -  if (__s == __end)
1308.197 -    __err |= ios_base::eofbit;
1308.198 -  return __s;
1308.199 -}
1308.200 -# endif
1308.201 -
1308.202 -template <class _CharT, class _InputIter>
1308.203 -_InputIter 
1308.204 -money_get<_CharT, _InputIter>::do_get(iter_type __s, 
1308.205 -				      iter_type  __end, bool  __intl,
1308.206 -				      ios_base&  __str, ios_base::iostate&  __err,
1308.207 -				      string_type& __digits) const {
1308.208 -	__err = 0;
1308.209 -  if (__s == __end) {
1308.210 -    __err |= ios_base::eofbit;
1308.211 -    return __s;
1308.212 -  }
1308.213 -
1308.214 -  typedef moneypunct<_CharT, false> _Punct;
1308.215 -  typedef moneypunct<_CharT, true>  _Punct_intl;
1308.216 -  typedef ctype<_CharT>             _Ctype;
1308.217 -#ifdef __SYMBIAN32__			
1308.218 -	bool		__isSignSympresent = false;
1308.219 -#endif			
1308.220 -
1308.221 - bool	__testvalid = true;
1308.222 -  locale __loc = __str.getloc();
1308.223 -  const _Punct&      __punct      = use_facet<_Punct>(__loc) ;
1308.224 -  const _Punct_intl& __punct_intl = use_facet<_Punct_intl>(__loc) ;
1308.225 -  const _Ctype&      __c_type      = use_facet<_Ctype>(__loc) ;
1308.226 -                   
1308.227 -  money_base::pattern __format = __intl ? __punct_intl.neg_format()
1308.228 -                                        : __punct.neg_format();
1308.229 -  string_type __ns = __intl ? __punct_intl.negative_sign()
1308.230 -                            : __punct.negative_sign();
1308.231 -  string_type __ps = __intl ? __punct_intl.positive_sign()
1308.232 -                            : __punct.positive_sign();
1308.233 -  string_type __sign  = __ps;
1308.234 -  int __i;
1308.235 -  bool __is_positive = true;
1308.236 -  bool __symbol_required = (__str.flags() & ios_base::showbase) !=0;
1308.237 -  string_type __buf;
1308.238 -  back_insert_iterator<string_type> __stl_out(__buf);
1308.239 -//  pair<iter_type, bool> __result;
1308.240 -
1308.241 -  for (__i = 0; __i < 4; ++__i) {
1308.242 -    switch (__format.field[__i]) {
1308.243 -    case (char) money_base::none:
1308.244 -#ifndef	__SYMBIAN32__
1308.245 -	  case (char) money_base::space:
1308.246 -#endif	  	
1308.247 -
1308.248 -      if (__i == 3) {
1308.249 -        //if (__c_type.is(ctype_base::space, *__s)) { //gnu buf fix, 22/12/06
1308.250 -        if((__s != __end) && (!__c_type.is(ctype_base::space, *__s)) && (__ps.size()<=1) && (__ns.size()<=1) ){
1308.251 -          __err = ios_base::failbit;
1308.252 -          return __s;
1308.253 -        }
1308.254 -       // break; //gnu bug fix 2/1/07
1308.255 -      }
1308.256 -      while (__s != __end && __c_type.is(ctype_base::space, *__s))
1308.257 -        ++__s;
1308.258 -      break;
1308.259 -#ifdef	__SYMBIAN32__	  
1308.260 -    case (char) money_base::space:
1308.261 -      if (!__c_type.is(ctype_base::space, *__s)) {
1308.262 -#ifdef __SYMBIAN32__      
1308.263 -      	if(!__isSignSympresent) //if no sign symbol present, space is not mandatory.
1308.264 -      		break;
1308.265 -#endif      	
1308.266 -        __err = ios_base::failbit;
1308.267 -        return __s;
1308.268 -      }
1308.269 -      ++__s;
1308.270 -      while (__s != __end && __c_type.is(ctype_base::space, *__s))
1308.271 -        ++__s;
1308.272 -      break;
1308.273 -#endif	  
1308.274 -    case money_base::symbol: {
1308.275 -      string_type __curs = __intl ? __punct_intl.curr_symbol()
1308.276 -                                : __punct.curr_symbol();
1308.277 -      pair<iter_type, bool>
1308.278 -      __result  = __get_string(__s, __end, __curs.begin(), __curs.end());
1308.279 -      if (!__result.second && __symbol_required)
1308.280 -        __err = ios_base::failbit;
1308.281 -      __s = __result.first;
1308.282 -      break;
1308.283 -    }
1308.284 -    case money_base::sign: {
1308.285 -      if (__s == __end) {
1308.286 -        if (__ps.size() == 0)
1308.287 -          break;
1308.288 -        if (__ns.size() == 0) {
1308.289 -          __is_positive = false;
1308.290 -	__sign  = __ns;
1308.291 -          break;
1308.292 -        }
1308.293 -        __err = ios_base::failbit;
1308.294 -        return __s;
1308.295 -      }
1308.296 -      else {
1308.297 -        if (__ps.size() == 0) {
1308.298 -          if (__ns.size() == 0)
1308.299 -            break;
1308.300 -          if (*__s == __ns[0]) {
1308.301 -            ++__s;
1308.302 -            __is_positive = false;
1308.303 -			__sign  = __ns;
1308.304 -#ifdef __SYMBIAN32__			
1308.305 -			__isSignSympresent = true;
1308.306 -#endif			
1308.307 -
1308.308 -            break;
1308.309 -          }
1308.310 -        //  __err = ios_base::failbit; //if ps !=0 and ns!=0, and no negative sign mean it is positive, not fail.
1308.311 -	  //          return __s;
1308.312 -	  break;
1308.313 -        } 
1308.314 -        else {
1308.315 -          if (*__s == __ps[0]) {
1308.316 -            ++__s;
1308.317 -#ifdef __SYMBIAN32__			
1308.318 -			__isSignSympresent = true;
1308.319 -#endif			
1308.320 -
1308.321 -            break;
1308.322 -          }
1308.323 -#ifdef	__SYMBIAN32__
1308.324 -	    if (__ns.size() == 0) //here positive have symbol,negative have no symbol
1308.325 -	    {
1308.326 -	    	__is_positive = false; // in this case if symbol not present means it is negative
1308.327 -	    	__sign = __ns;
1308.328 -	    	break;
1308.329 -	    }
1308.330 -            
1308.331 -#else          
1308.332 -          if (__ns.size() == 0)
1308.333 -            break;
1308.334 -#endif          
1308.335 -          if (*__s == __ns[0]) {
1308.336 -            ++__s;
1308.337 -            __is_positive = false;
1308.338 -			__sign  = __ns;
1308.339 -#ifdef __SYMBIAN32__			
1308.340 -			__isSignSympresent = true;
1308.341 -#endif			
1308.342 -            break;
1308.343 -          }
1308.344 -          __err = ios_base::failbit;
1308.345 -	  //          return __s;
1308.346 -        }
1308.347 -      }
1308.348 -      return __s;
1308.349 -      //      break;
1308.350 -    }
1308.351 -    case money_base::value: {
1308.352 -      _CharT __point = __intl ? __punct_intl.decimal_point()
1308.353 -                              : __punct.decimal_point();
1308.354 -      int __frac_digits = __intl ? __punct_intl.frac_digits()
1308.355 -                                 : __punct.frac_digits();
1308.356 -      string __grouping = __intl ? __punct_intl.grouping()
1308.357 -                                 : __punct.grouping();
1308.358 -      bool __syntax_ok = true;
1308.359 -
1308.360 -      bool __result;
1308.361 -
1308.362 -      _CharT __sep = __grouping.size() == 0 ? _CharT() : 
1308.363 -	__intl ? __punct_intl.thousands_sep() : __punct.thousands_sep();
1308.364 -
1308.365 -      __result = __get_monetary_value(__s, __end, __stl_out, __c_type,
1308.366 -                                      __point, __frac_digits,
1308.367 -                                      __sep,
1308.368 -                                      __grouping, __syntax_ok);      
1308.369 -
1308.370 -      if (!__syntax_ok)
1308.371 -        __err |= ios_base::failbit;
1308.372 -      if (!__result) {
1308.373 -        __err = ios_base::failbit;
1308.374 -        return __s;
1308.375 -      }
1308.376 -      break;
1308.377 -      
1308.378 -    }                           // Close money_base::value case
1308.379 -
1308.380 -
1308.381 -    }                           // Close switch statement
1308.382 -  }                             // Close for loop
1308.383 -
1308.384 -#ifndef __SYMBIAN32__ //find the given number pos or neg, required for cases where sign is present at string starting and ending
1308.385 -	do{
1308.386 -	bool type = true;
1308.387 -
1308.388 -	int si = __ps.size();
1308.389 -	for (int i = 1;i<__ps.size();i++)
1308.390 -		{
1308.391 -			if(__s[i-1]!=__ps[i])
1308.392 -			{
1308.393 -				type = false;
1308.394 -				break;
1308.395 -			}
1308.396 -		}
1308.397 -	
1308.398 -	if ((si!=0) && (type ==true))
1308.399 -	{
1308.400 -		__sign = __ps;
1308.401 -            break;
1308.402 -	}  
1308.403 -          if (__ns.size() == 0)
1308.404 -            break;
1308.405 -	type = true;
1308.406 -	for (int i =1;i<__ns.size();i++)
1308.407 -		{
1308.408 -			if(__s[i-1]!=__ns[i])
1308.409 -			{
1308.410 -				type = false;
1308.411 -				break;
1308.412 -			}
1308.413 -		}
1308.414 -          if (type ==true) {
1308.415 -            __is_positive = false;
1308.416 -		__sign = __ns;
1308.417 -            break;
1308.418 -          }
1308.419 -	}while(0);
1308.420 -
1308.421 -#endif
1308.422 -
1308.423 -
1308.424 -#ifdef __SYMBIAN32__
1308.425 -// Need to get the rest of the sign characters, if they exist.
1308.426 -      if (__sign.size() > 1)
1308.427 -        {
1308.428 -          int __len = __sign.size();
1308.429 -          int __i = 1;
1308.430 -	  char_type __c = *__s;
1308.431 -	  char_type __eol = '\0';
1308.432 -          for (; __c != __eol && __i < __len; __i++)
1308.433 -          	{
1308.434 -            	if (__s != __end)
1308.435 -              	__c = *(++__s);
1308.436 -            	
1308.437 -          }
1308.438 -		  //checking sign completely extracted successfully
1308.439 -		 
1308.440 -          if (__i != __len)
1308.441 -            __testvalid = false;
1308.442 -        }
1308.443 -
1308.444 -#endif
1308.445 -
1308.446 -  if (__is_positive) {
1308.447 -    if (__ps.size() > 1) {
1308.448 -#ifndef __SYMBIAN32__		
1308.449 -      pair<_InputIter, bool>
1308.450 -        __result = __get_string(__s, __end, __ps.begin() + 1, __ps.end());
1308.451 -      __s = __result.first;
1308.452 -      if (!__result.second)
1308.453 -	__err |= ios::failbit;
1308.454 -#endif
1308.455 -	if(!__testvalid)
1308.456 -		__err |= ios::failbit;
1308.457 -    }
1308.458 -    if (!(__err & ios_base::failbit))
1308.459 -      __digits = __buf;
1308.460 -  }
1308.461 -  else {
1308.462 -    if (__ns.size() > 1) {
1308.463 -#ifndef __SYMBIAN32__		
1308.464 -      pair<_InputIter, bool>
1308.465 -        __result = __get_string(__s, __end, __ns.begin() + 1, __ns.end());
1308.466 -      __s = __result.first;
1308.467 -      if (!__result.second)
1308.468 -	__err |= ios::failbit;
1308.469 -#endif
1308.470 -	if(!__testvalid)
1308.471 -		__err |= ios::failbit;
1308.472 -    }
1308.473 -    if (!(__err & ios::failbit) && (__ns == __sign)) {
1308.474 -      __buf.insert(__buf.begin(),__c_type.widen('-'));      
1308.475 -    }
1308.476 -#ifdef __SYMBIAN32__	
1308.477 -  if (!(__err & ios_base::failbit))
1308.478 -      __digits = __buf;	
1308.479 -#else  
1308.480 -   __digits = __buf;	
1308.481 -#endif
1308.482 -  }
1308.483 -  if (__s == __end)
1308.484 -    __err |= ios::eofbit;
1308.485 -
1308.486 -  return __s;
1308.487 -}
1308.488 -
1308.489 -// money_put facets
1308.490 -
1308.491 -template <class _CharT, class _OutputIter>
1308.492 -_OutputIter
1308.493 -money_put<_CharT, _OutputIter>
1308.494 - ::do_put(_OutputIter __s, bool __intl, ios_base& __str,
1308.495 -          char_type __fill,
1308.496 -          const string_type& __digits) const { 
1308.497 -  typedef ctype<_CharT>             _Ctype;
1308.498 -  typedef moneypunct<_CharT, false> _Punct;
1308.499 -  typedef moneypunct<_CharT, true>  _Punct_intl;
1308.500 -
1308.501 -  locale __loc = __str.getloc();
1308.502 -  const _Ctype&      __c_type      = use_facet<_Ctype>(__loc) ;
1308.503 -  const _Punct&      __punct      = use_facet<_Punct>(__loc) ;
1308.504 -  const _Punct_intl& __punct_intl = use_facet<_Punct_intl>(__loc) ;
1308.505 -
1308.506 -  // some special characters
1308.507 -
1308.508 -  char_type __minus = __c_type.widen('-');
1308.509 -  char_type __plus  = __c_type.widen('+');
1308.510 -  char_type __space = __c_type.widen(' ');
1308.511 -  char_type __zero  = __c_type.widen('0');
1308.512 -  char_type __point = __intl ? __c_type.widen(__punct_intl.decimal_point())
1308.513 -			     : __c_type.widen(__punct.decimal_point());
1308.514 -
1308.515 -  char_type __sep = __intl ? __punct_intl.thousands_sep()
1308.516 -			   : __punct     .thousands_sep();
1308.517 -
1308.518 -  string __grouping = __intl ? __punct_intl.grouping()
1308.519 -		             : __punct     .grouping();
1308.520 -				
1308.521 -  int __frac_digits      = __intl ? __punct_intl.frac_digits() 
1308.522 -                                  : __punct.frac_digits();
1308.523 -
1308.524 -  string_type __curr_sym = __intl ? __punct_intl.curr_symbol() 
1308.525 -                                  : __punct.curr_symbol();
1308.526 -
1308.527 -    // if there are no digits we are going to return __s.  If there
1308.528 -    // are digits, but not enough to fill the frac_digits, we are
1308.529 -    // going to add zeros.  I don't know whether this is right or
1308.530 -    // not.
1308.531 -
1308.532 -  if (__digits.size() == 0) 
1308.533 -    return __s;
1308.534 -
1308.535 -  typename string_type::const_iterator __digits_first = __digits.begin();
1308.536 -  typename string_type::const_iterator __digits_last  = __digits.end();
1308.537 -
1308.538 -  bool __is_negative = *__digits_first == __minus;
1308.539 -  if (__is_negative)
1308.540 -    ++__digits_first;
1308.541 -
1308.542 -  string_type __sign = __intl ?
1308.543 -			 __is_negative ? __punct_intl.negative_sign()
1308.544 -				       : __punct_intl.positive_sign()
1308.545 -			      :
1308.546 -			 __is_negative ? __punct.negative_sign()
1308.547 -				       : __punct.positive_sign();
1308.548 -  typename string_type::const_iterator __cp = __digits_first;
1308.549 -  while (__cp != __digits_last && __c_type.is(ctype_base::digit, *__cp))
1308.550 -    ++__cp;
1308.551 -  if (__cp == __digits_first)
1308.552 -    return __s;
1308.553 -  __digits_last = __cp;
1308.554 -
1308.555 -  // If grouping is required, we make a copy of __digits and
1308.556 -  // insert the grouping.
1308.557 -
1308.558 -  // To handle the fractional digits, we augment the first group
1308.559 -  // by frac_digits.  If there is only one group, we need first
1308.560 -  // to duplicate it.
1308.561 -
1308.562 -  string_type __new_digits(__digits_first, __digits_last);
1308.563 -#ifdef	__SYMBIAN32__
1308.564 -	int __numberofseperators = 0;
1308.565 -	if (__grouping.size()>0)
1308.566 -	__numberofseperators = (__new_digits.size()/__grouping[0])+1;
1308.567 -	else
1308.568 -		__numberofseperators = 0;
1308.569 -  __new_digits.resize(__new_digits.size()+__numberofseperators);
1308.570 -#endif  
1308.571 -  if (__grouping.size() != 0) {
1308.572 -    if (__grouping.size() == 1)
1308.573 -      __grouping.push_back(__grouping[0]);
1308.574 -    __grouping[0] += __frac_digits;
1308.575 -    _CharT* __data_ptr = __CONST_CAST(_CharT*,__new_digits.data());
1308.576 -    _CharT* __data_end = __data_ptr + __new_digits.size();
1308.577 -    
1308.578 -    
1308.579 -    ptrdiff_t __value_length = __insert_grouping(__data_ptr,
1308.580 -#ifdef	__SYMBIAN32__	    
1308.581 -	  				         __data_end-__numberofseperators,
1308.582 -#else
1308.583 -							__data_end,
1308.584 -#endif	  				         
1308.585 -					         __grouping,
1308.586 -					         __sep,
1308.587 -					         __plus, __minus, 0);
1308.588 -    __digits_first = __new_digits.begin();
1308.589 -    __digits_last  = __digits_first + __value_length;
1308.590 -  }
1308.591 -
1308.592 -  // Determine the amount of padding required, if any.  
1308.593 -#ifdef	__SYMBIAN32__
1308.594 -	  int __width        = __str.width(); //width returns signed value.
1308.595 -#else    
1308.596 -  size_t __width        = __str.width();
1308.597 -#endif
1308.598 -
1308.599 -#if defined(_STLP_DEBUG) && (defined(__HP_aCC) || (__HP_aCC <= 1))
1308.600 -  size_t __value_length = operator -(__digits_last, __digits_first);
1308.601 -#else
1308.602 -  size_t __value_length = __digits_last - __digits_first;
1308.603 -#endif
1308.604 -
1308.605 -  size_t __length       = __value_length;
1308.606 -      
1308.607 -  __length += __sign.size();
1308.608 -  if (__frac_digits != 0)
1308.609 -    ++__length;
1308.610 -
1308.611 -  bool __generate_curr = (__str.flags() & ios_base::showbase) !=0;
1308.612 -  if (__generate_curr)
1308.613 -    __length += __curr_sym.size();
1308.614 -  money_base::pattern __format =
1308.615 -    __intl ? (__is_negative ? __punct_intl.neg_format() 
1308.616 -                            : __punct_intl.pos_format())
1308.617 -           : (__is_negative ? __punct.neg_format() 
1308.618 -                            : __punct.pos_format());
1308.619 -  {
1308.620 -    for (int __i = 0; __i < 4; ++__i)
1308.621 -      if (__format.field[__i] == (char) money_base::space)
1308.622 -        ++__length;
1308.623 -  }
1308.624 -
1308.625 -  size_t __fill_amt = (int)__length < __width ? __width - __length : 0;
1308.626 -
1308.627 -  ios_base::fmtflags __fill_pos = __str.flags() & ios_base::adjustfield;
1308.628 -
1308.629 -  if (__fill_amt != 0 &&
1308.630 -      !(__fill_pos & (ios_base::left | ios_base::internal)))
1308.631 -    __s = fill_n(__s, __fill_amt, __fill);
1308.632 -    
1308.633 -  for (int __i = 0; __i < 4; ++__i) {
1308.634 -    char __ffield = __format.field[__i];
1308.635 -    if (__ffield == money_base::none) {
1308.636 -      if (__fill_amt != 0 && __fill_pos == ios_base::internal)
1308.637 -        __s = fill_n(__s, __fill_amt, __fill);
1308.638 -    }
1308.639 -    else if (__ffield == money_base::space) {
1308.640 -#ifdef __SYMBIAN32__
1308.641 -	if(__fill != __space)
1308.642 -		*__s++ = __fill;
1308.643 -	else
1308.644 -#endif		
1308.645 -      *__s++ = __space;
1308.646 -      if (__fill_amt != 0 && __fill_pos == ios_base::internal)
1308.647 -        __s = fill_n(__s, __fill_amt, __fill);
1308.648 -    }
1308.649 -    else if (__ffield == money_base::symbol) {
1308.650 -      if (__generate_curr)
1308.651 -        __s = copy(__curr_sym.begin(), __curr_sym.end(), __s);
1308.652 -    }
1308.653 -    else if (__ffield == money_base::sign) {
1308.654 -      if (__sign.size() != 0)
1308.655 -        *__s++ = __sign[0];
1308.656 -    }
1308.657 -    else if (__ffield == money_base::value) {
1308.658 -      if (__frac_digits == 0)
1308.659 -        __s = copy(__digits_first, __digits_last, __s);
1308.660 -      else {
1308.661 -        if ((int)__value_length <= __frac_digits) {
1308.662 -          *__s++ = __point;
1308.663 -          __s = copy(__digits_first, __digits_last, __s);
1308.664 -          __s =  fill_n(__s, __frac_digits - __value_length, __zero);
1308.665 -        }
1308.666 -        else {
1308.667 -#ifdef	__SYMBIAN32__
1308.668 -	  if (__frac_digits>0)
1308.669 -	  	{
1308.670 -#endif	  	
1308.671 -          __s = copy(__digits_first, __digits_last - __frac_digits, __s);
1308.672 -          if (__frac_digits != 0) {
1308.673 -            *__s++ = __point;
1308.674 -            __s = copy(__digits_last - __frac_digits, __digits_last, __s);
1308.675 -#ifdef	__SYMBIAN32__
1308.676 -	          }
1308.677 -#endif			  
1308.678 -          }
1308.679 -        }
1308.680 -      }
1308.681 -    }
1308.682 -  } // Close for loop
1308.683 -
1308.684 -  // Ouput rest of sign if necessary.
1308.685 -
1308.686 -  if (__sign.size() > 1)
1308.687 -    __s = copy(__sign.begin() + 1, __sign.end(), __s);
1308.688 -  if (!(__fill_pos & (ios_base::right | ios_base::internal)))
1308.689 -    __s = fill_n(__s, __fill_amt, __fill);
1308.690 -  
1308.691 -#ifdef __SYMBIAN32__
1308.692 -	__str.width(0);
1308.693 -#endif
1308.694 -  return __s;
1308.695 -}
1308.696 -
1308.697 -#ifdef	__SYMBIAN32__
1308.698 -/*
1308.699 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.700 -moneypunct<_CharT, _International>::moneypunct(size_t __refs = 0):_BaseFacet(__refs)
1308.701 -{ 
1308.702 -	
1308.703 -	
1308.704 -}*/
1308.705 -
1308.706 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.707 -_CharT        moneypunct<_CharT,_International>::do_decimal_point() const
1308.708 -{
1308.709 -	return _CharT('.');
1308.710 -}
1308.711 -
1308.712 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.713 -_CharT        moneypunct<_CharT,_International>::do_thousands_sep() const
1308.714 -{
1308.715 -	return _CharT(',');
1308.716 -}
1308.717 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.718 -basic_string<_CharT>      moneypunct<_CharT,_International>::do_curr_symbol()   const
1308.719 -{
1308.720 -	return _M_currSym;
1308.721 -}
1308.722 -
1308.723 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.724 -basic_string<_CharT>      moneypunct<_CharT,_International>::do_positive_sign()   const
1308.725 -{
1308.726 -	return _M_psign;
1308.727 -}
1308.728 -
1308.729 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.730 -basic_string<_CharT>      moneypunct<_CharT,_International>::do_negative_sign()   const
1308.731 -{
1308.732 -	return _M_nsign;
1308.733 -}
1308.734 -
1308.735 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.736 -string      moneypunct<_CharT,_International>::do_grouping()   const
1308.737 -{
1308.738 -	return _M_group;
1308.739 -}
1308.740 -
1308.741 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.742 -money_base::pattern        moneypunct<_CharT,_International>::do_pos_format()   const
1308.743 -{
1308.744 -	return _M_pos_format;
1308.745 -}
1308.746 -
1308.747 -template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1308.748 -money_base::pattern        moneypunct<_CharT,_International>::do_neg_format()   const
1308.749 -{
1308.750 -	return _M_neg_format;
1308.751 -}
1308.752 -
1308.753 -template<class _CharT, bool _International>
1308.754 -int       moneypunct<_CharT,_International>::do_frac_digits()   const
1308.755 -{
1308.756 -	return 0;
1308.757 -}
1308.758 -
1308.759 -
1308.760 -//monetary_byname<any>
1308.761 -
1308.762 -template<class _CharT, bool _International>
1308.763 -_CharT moneypunct_byname<_CharT, _International>::do_decimal_point() const 
1308.764 -  {return _Locale_mon_decimal_pointE(_M_monetary);}
1308.765 -
1308.766 -template<class _CharT, bool _International>
1308.767 -_CharT moneypunct_byname<_CharT, _International>::do_thousands_sep() const
1308.768 -  {return _Locale_mon_thousands_sepE(_M_monetary);}
1308.769 -
1308.770 -template<class _CharT, bool _International>
1308.771 -string  moneypunct_byname<_CharT, _International>::do_grouping() const
1308.772 -  {return moneypunct<_CharT,_International>::_M_group;}
1308.773 -
1308.774 -template<class _CharT, bool _International>
1308.775 -basic_string<_CharT> moneypunct_byname<_CharT, _International>::do_curr_symbol() const
1308.776 -  {return moneypunct<_CharT,_International>::_M_currSym;}
1308.777 -
1308.778 -template<class _CharT, bool _International>
1308.779 -basic_string<_CharT> moneypunct_byname<_CharT, _International>::do_positive_sign() const
1308.780 -  {return moneypunct<_CharT,_International>::_M_psign;}
1308.781 -
1308.782 -template<class _CharT, bool _International>
1308.783 -basic_string<_CharT> moneypunct_byname<_CharT, _International>::do_negative_sign() const
1308.784 -  {return moneypunct<_CharT,_International>::_M_nsign;}
1308.785 -
1308.786 -template<class _CharT, bool _International>
1308.787 -int moneypunct_byname<_CharT, _International>::do_frac_digits() const 
1308.788 -  {return _Locale_int_frac_digitsE(_M_monetary);}
1308.789 -
1308.790 -template<class _CharT, bool _International>
1308.791 -void moneypunct_byname<_CharT, _International>::Convert_string2_string_chart(basic_string<_CharT> &dst, string src)
1308.792 -	{
1308.793 -		int length = src.length();
1308.794 -		const char* str = src.c_str();
1308.795 -		for(int i = 0; i<length;i++)
1308.796 -		{
1308.797 -			dst.append(1, (_CharT)*str++);
1308.798 -			
1308.799 -		}
1308.800 -			
1308.801 -	}
1308.802 -
1308.803 -template<class _CharT, bool _International>
1308.804 -moneypunct_byname<_CharT, _International>::moneypunct_byname(const char * name,
1308.805 -						  size_t refs):
1308.806 -  moneypunct<_CharT, _International>(refs),
1308.807 -  _M_monetary(__acquire_monetaryE(name))
1308.808 -{
1308.809 -  if (!_M_monetary)
1308.810 -    locale::_M_throw_runtime_error();
1308.811 -  
1308.812 -  		moneypunct<_CharT,_International>::_M_group = _Locale_mon_groupingE(_M_monetary);
1308.813 -		Convert_string2_string_chart(moneypunct<_CharT,_International>::_M_psign, _Locale_positive_signE(_M_monetary));
1308.814 -		Convert_string2_string_chart(moneypunct<_CharT,_International>::_M_nsign, _Locale_negative_signE(_M_monetary));
1308.815 -		Convert_string2_string_chart(moneypunct<_CharT,_International>::_M_currSym, _Locale_int_curr_symbolE(_M_monetary));
1308.816 -}
1308.817 -
1308.818 -template<class _CharT, bool _International>
1308.819 -moneypunct_byname<_CharT, _International>::~moneypunct_byname()
1308.820 -{
1308.821 -  __release_monetaryE(_M_monetary);
1308.822 -}
1308.823 -
1308.824 -
1308.825 -#endif
1308.826 -_STLP_END_NAMESPACE
1308.827 -
1308.828 -# endif /* EXPOSE */
1308.829 -
1308.830 -#endif /* _STLP_MONETARY_C */
  1309.1 --- a/epoc32/include/stdapis/stlport/stl/_monetary.h	Tue Mar 16 16:12:26 2010 +0000
  1309.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1309.3 @@ -1,641 +0,0 @@
  1309.4 -/*
  1309.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1309.6 - *
  1309.7 - * Copyright (c) 1999
  1309.8 - * Silicon Graphics Computer Systems, Inc.
  1309.9 - *
 1309.10 - * Copyright (c) 1999 
 1309.11 - * Boris Fomitchev
 1309.12 - *
 1309.13 - * This material is provided "as is", with absolutely no warranty expressed
 1309.14 - * or implied. Any use is at your own risk.
 1309.15 - *
 1309.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1309.17 - * without fee, provided the above notices are retained on all copies.
 1309.18 - * Permission to modify the code and to distribute modified code is granted,
 1309.19 - * provided the above notices are retained, and a notice that the code was
 1309.20 - * modified is included with the above copyright notice.
 1309.21 - *
 1309.22 - */ 
 1309.23 -// WARNING: This is an internal header file, included by other C++
 1309.24 -// standard library headers.  You should not attempt to use this header
 1309.25 -// file directly.
 1309.26 -
 1309.27 -
 1309.28 -#ifndef _STLP_INTERNAL_MONETARY_H
 1309.29 -#define _STLP_INTERNAL_MONETARY_H
 1309.30 -
 1309.31 -#ifndef _STLP_INTERNAL_CTYPE_H
 1309.32 -# include <stl/_ctype.h>
 1309.33 -#endif
 1309.34 -
 1309.35 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1309.36 -# include <stl/_ostreambuf_iterator.h>
 1309.37 -#endif
 1309.38 -
 1309.39 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1309.40 -# include <stl/_istreambuf_iterator.h>
 1309.41 -#endif
 1309.42 -
 1309.43 -_STLP_BEGIN_NAMESPACE
 1309.44 -
 1309.45 -class money_base {
 1309.46 -public:
 1309.47 -  enum part {none, space, symbol, sign, value};
 1309.48 -  struct pattern {
 1309.49 -    char field[4];
 1309.50 -  };
 1309.51 -};
 1309.52 -
 1309.53 -
 1309.54 -#ifdef __SYMBIAN32__
 1309.55 -
 1309.56 -extern locale::id& Moneypunct_charT_GetFacetLocaleId(const char* type);
 1309.57 -_STLP_DECLSPEC void _Init_monetary_formatsE(money_base::pattern& pos_format,
 1309.58 -				   money_base::pattern& neg_format);
 1309.59 -
 1309.60 -template <class _CharT, __DFL_NON_TYPE_PARAM(bool, _International, false) > 
 1309.61 -class moneypunct : public locale::facet , public money_base
 1309.62 -{
 1309.63 -public:
 1309.64 -  typedef _CharT                 		char_type;
 1309.65 -  typedef basic_string<_CharT>		string_type;
 1309.66 -  explicit moneypunct _STLP_PSPEC2(_CharT, _International) (size_t __refs = 0)
 1309.67 -  	{
 1309.68 -  		_Init_monetary_formatsE(_M_pos_format, _M_neg_format);
 1309.69 -  	}
 1309.70 -  _CharT        decimal_point() const { return do_decimal_point(); }
 1309.71 -  _CharT         thousands_sep() const { return do_thousands_sep(); }
 1309.72 -  string      grouping()      const { return do_grouping(); }
 1309.73 -  string_type curr_symbol()   const { return do_curr_symbol(); }
 1309.74 -  string_type positive_sign() const { return do_positive_sign(); }
 1309.75 -  string_type negative_sign() const { return do_negative_sign(); }
 1309.76 -  int         frac_digits()   const { return do_frac_digits(); }
 1309.77 -  pattern     pos_format()    const { return do_pos_format(); }
 1309.78 -  pattern     neg_format()    const { return do_neg_format(); }
 1309.79 -  #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1309.80 -    static locale::id& GetFacetLocaleId(){return Moneypunct_charT_GetFacetLocaleId(typeid(_CharT).name());  };
 1309.81 -#else
 1309.82 -   static locale::id id;
 1309.83 -#endif
 1309.84 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
 1309.85 -  enum _IntlVal { intl = _International } ;
 1309.86 -# else
 1309.87 -  static const bool intl = _International;
 1309.88 -# endif
 1309.89 -
 1309.90 -protected:
 1309.91 -  pattern _M_pos_format;
 1309.92 -  pattern _M_neg_format;
 1309.93 -  
 1309.94 -  static string_type	 _M_psign, _M_nsign, _M_currSym;
 1309.95 -  static string _M_group;
 1309.96 - ~moneypunct _STLP_PSPEC2(char, true) () { };
 1309.97 -
 1309.98 - virtual _CharT        do_decimal_point() const;
 1309.99 - virtual _CharT        do_thousands_sep() const;
1309.100 - virtual string      do_grouping()      const;
1309.101 -
1309.102 - virtual basic_string<_CharT>      do_curr_symbol()   const;
1309.103 -
1309.104 - virtual basic_string<_CharT>      do_positive_sign() const;
1309.105 - virtual basic_string<_CharT>      do_negative_sign() const;
1309.106 - virtual int         do_frac_digits()   const;
1309.107 - virtual pattern     do_pos_format()    const;
1309.108 - virtual pattern     do_neg_format()    const;
1309.109 -
1309.110 -  friend class _Locale;
1309.111 -
1309.112 -};
1309.113 -template <class _CharT, bool  _International> 
1309.114 -string	moneypunct<_CharT, _International>::_M_group;
1309.115 -template <class _CharT, bool  _International> 
1309.116 -basic_string<_CharT>	moneypunct<_CharT, _International>::_M_psign;
1309.117 -template <class _CharT, bool  _International> 
1309.118 -basic_string<_CharT>	moneypunct<_CharT, _International>::_M_nsign;
1309.119 -template <class _CharT, bool  _International> 
1309.120 -basic_string<_CharT>	moneypunct<_CharT, _International>::_M_currSym;
1309.121 -
1309.122 -
1309.123 -#else
1309.124 -// moneypunct facets: forward declaration
1309.125 -template <class _charT, __DFL_NON_TYPE_PARAM(bool, _International, false) > class moneypunct {};
1309.126 -#endif
1309.127 -
1309.128 -// money_get facets
1309.129 -
1309.130 -template <class _CharT, __DFL_TMPL_PARAM(_InputIter , istreambuf_iterator<_CharT>) >
1309.131 -class money_get : public locale::facet 
1309.132 -{
1309.133 -  friend class _Locale;
1309.134 -public:
1309.135 -  typedef _CharT               char_type;
1309.136 -  typedef _InputIter           iter_type;
1309.137 -  typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1309.138 -
1309.139 -  money_get(size_t __refs = 0) : _BaseFacet(__refs) {}
1309.140 -# ifndef _STLP_NO_LONG_DOUBLE
1309.141 -  iter_type get(iter_type __s, iter_type  __end, bool __intl,
1309.142 -                ios_base&  __str, ios_base::iostate&  __err,
1309.143 -                long double& __units) const
1309.144 -    { return do_get(__s,  __end, __intl,  __str,  __err, __units); }
1309.145 -# endif  
1309.146 -  iter_type get(iter_type __s, iter_type  __end, bool __intl,
1309.147 -                ios_base&  __str, ios_base::iostate& __err,
1309.148 -                string_type& __digits) const
1309.149 -    { return do_get(__s,  __end, __intl,  __str,  __err, __digits); }
1309.150 -
1309.151 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1309.152 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1309.153 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* );
1309.154 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1309.155 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* );
1309.156 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char **);
1309.157 -#else
1309.158 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1309.159 -#endif
1309.160 -
1309.161 -protected:
1309.162 -  ~money_get() {}
1309.163 -# ifndef _STLP_NO_LONG_DOUBLE
1309.164 -  virtual iter_type do_get(iter_type __s, iter_type  __end, bool  __intl,
1309.165 -                           ios_base&  __str, ios_base::iostate& __err,
1309.166 -                           long double& __units) const;
1309.167 -# endif
1309.168 -  virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl,
1309.169 -                           ios_base&  __str, ios_base::iostate& __err,
1309.170 -                           string_type& __digits) const;
1309.171 -};
1309.172 -
1309.173 -
1309.174 -// moneypunct facets: definition of specializations
1309.175 -
1309.176 -_STLP_TEMPLATE_NULL
1309.177 -#ifdef __SYMBIAN32__
1309.178 -class moneypunct<char, true> : public locale::facet, public money_base
1309.179 -#else
1309.180 -class _STLP_CLASS_DECLSPEC moneypunct<char, true> : public locale::facet, public money_base
1309.181 -#endif
1309.182 -{
1309.183 -
1309.184 -public:
1309.185 -  typedef char                 char_type;
1309.186 -  typedef string               string_type;
1309.187 -_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(char, true) (size_t __refs = 0);
1309.188 -
1309.189 -  char        decimal_point() const { return do_decimal_point(); }
1309.190 -  char        thousands_sep() const { return do_thousands_sep(); }
1309.191 -  string      grouping()      const { return do_grouping(); }
1309.192 -  string_type curr_symbol()   const { return do_curr_symbol(); }
1309.193 -  string_type positive_sign() const { return do_positive_sign(); }
1309.194 -  string_type negative_sign() const { return do_negative_sign(); }
1309.195 -  int         frac_digits()   const { return do_frac_digits(); }
1309.196 -  pattern     pos_format()    const { return do_pos_format(); }
1309.197 -  pattern     neg_format()    const { return do_neg_format(); }
1309.198 -
1309.199 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1309.200 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1309.201 -#else
1309.202 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1309.203 -#endif
1309.204 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1309.205 -  enum _IntlVal { intl = 1 } ;
1309.206 -# else
1309.207 -  static const bool intl = true;
1309.208 -# endif
1309.209 -
1309.210 -protected:
1309.211 -  pattern _M_pos_format;
1309.212 -  pattern _M_neg_format;
1309.213 -
1309.214 -_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(char, true) ();
1309.215 -
1309.216 -_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1309.217 -  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1309.218 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.219 -
1309.220 -_STLP_DECLSPEC   virtual string      do_curr_symbol()   const;
1309.221 -
1309.222 -_STLP_DECLSPEC   virtual string      do_positive_sign() const;
1309.223 -_STLP_DECLSPEC   virtual string      do_negative_sign() const;
1309.224 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.225 -_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1309.226 -_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1309.227 -
1309.228 -  friend class _Locale;
1309.229 -
1309.230 -};
1309.231 -
1309.232 -_STLP_TEMPLATE_NULL
1309.233 -#ifdef __SYMBIAN32__
1309.234 -class moneypunct<char, false> : public locale::facet, public money_base
1309.235 -#else
1309.236 -class _STLP_CLASS_DECLSPEC moneypunct<char, false> : public locale::facet, public money_base
1309.237 -#endif
1309.238 -{
1309.239 -public:
1309.240 -  typedef char                 char_type;
1309.241 -  typedef string               string_type;
1309.242 -
1309.243 -_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(char, false) (size_t __refs = 0);
1309.244 -
1309.245 -  char        decimal_point() const { return do_decimal_point(); }
1309.246 -  char        thousands_sep() const { return do_thousands_sep(); }
1309.247 -  string      grouping()      const { return do_grouping(); }
1309.248 -  string_type curr_symbol()   const { return do_curr_symbol(); }
1309.249 -  string_type positive_sign() const { return do_positive_sign(); }
1309.250 -  string_type negative_sign() const { return do_negative_sign(); }
1309.251 -  int         frac_digits()   const { return do_frac_digits(); }
1309.252 -  pattern     pos_format()    const { return do_pos_format(); }
1309.253 -  pattern     neg_format()    const { return do_neg_format(); }
1309.254 -
1309.255 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1309.256 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1309.257 -#else
1309.258 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1309.259 -#endif
1309.260 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1309.261 -  enum _IntlVal { intl = 0 } ;
1309.262 -# else
1309.263 -  static const bool intl = false;
1309.264 -# endif
1309.265 -
1309.266 -protected:
1309.267 -  pattern _M_pos_format;
1309.268 -  pattern _M_neg_format;
1309.269 -
1309.270 -_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(char, false) ();
1309.271 -
1309.272 -_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1309.273 -  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1309.274 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.275 -
1309.276 -_STLP_DECLSPEC   virtual string      do_curr_symbol()   const;
1309.277 -
1309.278 -_STLP_DECLSPEC   virtual string      do_positive_sign() const;
1309.279 -_STLP_DECLSPEC   virtual string      do_negative_sign() const;
1309.280 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.281 -_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1309.282 -_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1309.283 -
1309.284 -  friend class _Locale;
1309.285 -};
1309.286 -
1309.287 -
1309.288 -# ifndef _STLP_NO_WCHAR_T
1309.289 -
1309.290 -_STLP_TEMPLATE_NULL
1309.291 -#ifdef __SYMBIAN32__
1309.292 -class moneypunct<wchar_t, true> : public locale::facet, public money_base
1309.293 -#else
1309.294 -class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, true> : public locale::facet, public money_base
1309.295 -#endif
1309.296 -{
1309.297 -  friend class _Locale;
1309.298 -public:
1309.299 -  typedef wchar_t                 char_type;
1309.300 -  typedef wstring                 string_type;
1309.301 -_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(wchar_t, true) (size_t __refs = 0);
1309.302 -  wchar_t     decimal_point() const { return do_decimal_point(); }
1309.303 -  wchar_t     thousands_sep() const { return do_thousands_sep(); }
1309.304 -  string      grouping()      const { return do_grouping(); }
1309.305 -  string_type curr_symbol()   const { return do_curr_symbol(); }
1309.306 -  string_type positive_sign() const { return do_positive_sign(); }
1309.307 -  string_type negative_sign() const { return do_negative_sign(); }
1309.308 -  int         frac_digits()   const { return do_frac_digits(); }
1309.309 -  pattern     pos_format()    const { return do_pos_format(); }
1309.310 -  pattern     neg_format()    const { return do_neg_format(); }
1309.311 -
1309.312 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1309.313 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1309.314 -#else
1309.315 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1309.316 -#endif
1309.317 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1309.318 -  enum _IntlVal { intl = 1 } ;
1309.319 -# else
1309.320 -  static const bool intl = true;
1309.321 -# endif
1309.322 -
1309.323 -protected:
1309.324 -  pattern _M_pos_format;
1309.325 -  pattern _M_neg_format;
1309.326 -
1309.327 -_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(wchar_t, true) ();
1309.328 -
1309.329 -_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1309.330 -  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1309.331 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.332 -
1309.333 -_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1309.334 -
1309.335 -_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1309.336 -_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1309.337 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.338 -_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1309.339 -_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1309.340 -};
1309.341 -
1309.342 -
1309.343 -_STLP_TEMPLATE_NULL
1309.344 -#ifdef __SYMBIAN32__
1309.345 -class moneypunct<wchar_t, false> : public locale::facet, public money_base
1309.346 -#else
1309.347 -class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, false> : public locale::facet, public money_base
1309.348 -#endif
1309.349 -{
1309.350 -  friend class _Locale;
1309.351 -public:
1309.352 -  typedef wchar_t                 char_type;
1309.353 -  typedef wstring                 string_type;
1309.354 -_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(wchar_t, false) (size_t __refs = 0);
1309.355 -  wchar_t     decimal_point() const { return do_decimal_point(); }
1309.356 -  wchar_t     thousands_sep() const { return do_thousands_sep(); }
1309.357 -  string      grouping()      const { return do_grouping(); }
1309.358 -  string_type curr_symbol()   const { return do_curr_symbol(); }
1309.359 -  string_type positive_sign() const { return do_positive_sign(); }
1309.360 -  string_type negative_sign() const { return do_negative_sign(); }
1309.361 -  int         frac_digits()   const { return do_frac_digits(); }
1309.362 -  pattern     pos_format()    const { return do_pos_format(); }
1309.363 -  pattern     neg_format()    const { return do_neg_format(); }
1309.364 -
1309.365 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1309.366 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1309.367 -#else
1309.368 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1309.369 -#endif
1309.370 -# if defined (_STLP_STATIC_CONST_INIT_BUG)
1309.371 -  enum _IntlVal { intl = 0 } ;
1309.372 -# else
1309.373 -  static const bool intl = false;
1309.374 -# endif
1309.375 -
1309.376 -protected:
1309.377 -  pattern _M_pos_format;
1309.378 -  pattern _M_neg_format;
1309.379 -
1309.380 -_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(wchar_t, false) ();
1309.381 -
1309.382 -_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1309.383 -  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1309.384 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.385 -
1309.386 -_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1309.387 -
1309.388 -_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1309.389 -_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1309.390 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.391 -_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1309.392 -_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1309.393 -};
1309.394 -
1309.395 -# endif
1309.396 -
1309.397 -
1309.398 -#ifdef __SYMBIAN32__
1309.399 -_STLP_DECLSPEC  _Locale_monetary* __acquire_monetaryE(const char* );
1309.400 -_STLP_DECLSPEC void __release_monetaryE (_Locale_monetary* );
1309.401 -
1309.402 -
1309.403 -_STLP_DECLSPEC char _Locale_mon_decimal_pointE(_Locale_monetary* _M_monetary);
1309.404 -
1309.405 -_STLP_DECLSPEC char _Locale_mon_thousands_sepE(_Locale_monetary* _M_monetary);
1309.406 -
1309.407 -_STLP_DECLSPEC string _Locale_mon_groupingE(_Locale_monetary* _M_monetary);
1309.408 -
1309.409 -_STLP_DECLSPEC string _Locale_int_curr_symbolE(_Locale_monetary* _M_monetary);
1309.410 -
1309.411 -
1309.412 -_STLP_DECLSPEC string _Locale_positive_signE(_Locale_monetary* _M_monetary);
1309.413 -
1309.414 -_STLP_DECLSPEC string _Locale_negative_signE(_Locale_monetary* _M_monetary);
1309.415 -
1309.416 -_STLP_DECLSPEC int _Locale_int_frac_digitsE(_Locale_monetary* _M_monetary);
1309.417 -
1309.418 -
1309.419 -template <class _CharT, __DFL_NON_TYPE_PARAM(bool , _International , false) > 
1309.420 -class moneypunct_byname: public  moneypunct<_CharT, _International>
1309.421 -{
1309.422 -public:
1309.423 -  typedef money_base::pattern   pattern;
1309.424 -  typedef char                  char_type;
1309.425 -  typedef basic_string<_CharT>                string_type;
1309.426 -
1309.427 -  explicit moneypunct_byname _STLP_PSPEC2(char, _International) (const char * __name, size_t __refs = 0);
1309.428 -  
1309.429 -protected:
1309.430 -  _Locale_monetary* _M_monetary;
1309.431 -  ~moneypunct_byname _STLP_PSPEC2(_CharT, _International) ();
1309.432 -  virtual _CharT        do_decimal_point() const;
1309.433 -  virtual _CharT        do_thousands_sep() const;
1309.434 -  virtual string      do_grouping()      const;
1309.435 -
1309.436 -  virtual string_type do_curr_symbol()   const;
1309.437 -
1309.438 -  virtual string_type do_positive_sign() const;
1309.439 - virtual string_type do_negative_sign() const;
1309.440 - virtual int         do_frac_digits()   const;
1309.441 - private: 
1309.442 - void Convert_string2_string_chart(basic_string<_CharT> &dst, string src);
1309.443 - 	
1309.444 -};
1309.445 -
1309.446 -#else
1309.447 -
1309.448 -template <class _charT, __DFL_NON_TYPE_PARAM(bool , _International , false) > class moneypunct_byname {};
1309.449 -
1309.450 -#endif
1309.451 -
1309.452 -_STLP_TEMPLATE_NULL
1309.453 -class _STLP_CLASS_DECLSPEC moneypunct_byname<char, true> : public moneypunct<char, true> 
1309.454 -{
1309.455 -public:
1309.456 -  typedef money_base::pattern   pattern;
1309.457 -  typedef char                  char_type;
1309.458 -  typedef string                string_type;
1309.459 -
1309.460 -  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, true) (const char * __name, size_t __refs = 0);
1309.461 -
1309.462 -protected:
1309.463 -  _Locale_monetary* _M_monetary;
1309.464 -_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(char, true) ();
1309.465 -_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1309.466 -  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1309.467 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.468 -
1309.469 -_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1309.470 -
1309.471 -_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1309.472 -_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1309.473 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.474 -};
1309.475 -
1309.476 -_STLP_TEMPLATE_NULL
1309.477 -class _STLP_CLASS_DECLSPEC moneypunct_byname<char, false> : public moneypunct<char, false> 
1309.478 -{
1309.479 -public:
1309.480 -  typedef money_base::pattern   pattern;
1309.481 -  typedef char                  char_type;
1309.482 -  typedef string                string_type;
1309.483 -
1309.484 -  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, false) (const char * __name, size_t __refs = 0);
1309.485 -
1309.486 -protected:
1309.487 -  _Locale_monetary* _M_monetary;
1309.488 -_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(char, false) ();
1309.489 -_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1309.490 -  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1309.491 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.492 -
1309.493 -_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1309.494 -
1309.495 -_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1309.496 -_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1309.497 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.498 -};
1309.499 -
1309.500 -# ifndef _STLP_NO_WCHAR_T
1309.501 -_STLP_TEMPLATE_NULL
1309.502 -class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, true> : public moneypunct<wchar_t, true> 
1309.503 -{
1309.504 -public:
1309.505 -  typedef money_base::pattern   pattern;
1309.506 -  typedef wchar_t               char_type;
1309.507 -  typedef wstring               string_type;
1309.508 -
1309.509 -  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, true) (const char * __name, size_t __refs = 0);
1309.510 -
1309.511 -protected:
1309.512 -  _Locale_monetary* _M_monetary;
1309.513 -_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(wchar_t, true) ();
1309.514 -_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1309.515 -  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1309.516 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.517 -
1309.518 -_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1309.519 -
1309.520 -_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1309.521 -_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1309.522 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.523 -};
1309.524 -
1309.525 -_STLP_TEMPLATE_NULL
1309.526 -class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, false> : public moneypunct<wchar_t, false> 
1309.527 -{
1309.528 -public:
1309.529 -  typedef money_base::pattern   pattern;
1309.530 -  typedef wchar_t               char_type;
1309.531 -  typedef wstring               string_type;
1309.532 -
1309.533 -  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, false) (const char * __name, size_t __refs = 0);
1309.534 -
1309.535 -protected:
1309.536 -  _Locale_monetary* _M_monetary;
1309.537 -_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(wchar_t, false) ();
1309.538 -_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1309.539 -  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1309.540 -_STLP_DECLSPEC   virtual string      do_grouping()      const;
1309.541 -
1309.542 -_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1309.543 -
1309.544 -_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1309.545 -_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1309.546 -_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1309.547 -};
1309.548 -# endif
1309.549 -
1309.550 -//===== methods ======
1309.551 -
1309.552 -
1309.553 -// money_put facets
1309.554 -
1309.555 -template <class _CharT, __DFL_TMPL_PARAM( _OutputIter , ostreambuf_iterator<_CharT>) >
1309.556 -class money_put : public locale::facet {
1309.557 -  friend class _Locale;
1309.558 -
1309.559 -public:
1309.560 -  typedef _CharT               char_type;
1309.561 -  typedef _OutputIter          iter_type;
1309.562 -  typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1309.563 -
1309.564 -   money_put(size_t __refs = 0) : _BaseFacet(__refs) {}
1309.565 -# ifndef _STLP_NO_LONG_DOUBLE
1309.566 -  iter_type put(iter_type __s, bool __intl, ios_base& __str,
1309.567 -                char_type  __fill, long double __units) const
1309.568 -    { return do_put(__s, __intl, __str, __fill, __units); }
1309.569 -# endif
1309.570 -  iter_type put(iter_type __s, bool __intl, ios_base& __str,
1309.571 -                char_type  __fill, 
1309.572 -                const string_type& __digits) const
1309.573 -    { return do_put(__s, __intl, __str, __fill, __digits); }
1309.574 -
1309.575 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1309.576 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1309.577 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& 
1309.578 -                GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *);
1309.579 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& 
1309.580 -                GetFacetLocaleId(wchar_t**);
1309.581 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& 
1309.582 -                GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *);
1309.583 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1309.584 -#else
1309.585 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1309.586 -#endif
1309.587 -
1309.588 -protected:
1309.589 -  ~money_put() {}
1309.590 -# ifndef _STLP_NO_LONG_DOUBLE
1309.591 -  virtual iter_type do_put(iter_type __s, bool  __intl, ios_base&  __str,
1309.592 -                           char_type __fill, long double /*  __units */ ) const {
1309.593 -
1309.594 -    locale __loc = __str.getloc();
1309.595 -    _CharT  __buf[64];
1309.596 -    return do_put(__s, __intl, __str, __fill, __buf + 0);
1309.597 -  }
1309.598 -# endif    
1309.599 -  virtual iter_type do_put(iter_type __s, bool  __intl, ios_base&  __str,
1309.600 -                           char_type __fill,
1309.601 -                           const string_type& __digits) const;
1309.602 -};
1309.603 -
1309.604 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1309.605 -_STLP_EXPORT_TEMPLATE_CLASS money_get<char, istreambuf_iterator<char, char_traits<char> > >;
1309.606 -_STLP_EXPORT_TEMPLATE_CLASS money_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1309.607 -// _STLP_EXPORT_TEMPLATE_CLASS money_get<char, const char* >;
1309.608 -// _STLP_EXPORT_TEMPLATE_CLASS money_put<char, char* >;
1309.609 -#  if ! defined (_STLP_NO_WCHAR_T)
1309.610 -_STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1309.611 -_STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1309.612 -// _STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, const wchar_t* >;
1309.613 -// _STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, wchar_t* >;
1309.614 -#  endif
1309.615 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1309.616 -
1309.617 -# if defined (__BORLANDC__) && defined (_RTLDLL)
1309.618 -inline void _Stl_loc_init_monetary() {
1309.619 -  money_get<char, istreambuf_iterator<char, char_traits<char> > >::id._M_index                     = 8;
1309.620 -  money_get<char, const char*>::id._M_index        = 9;
1309.621 -  money_put<char, ostreambuf_iterator<char, char_traits<char> > >::id._M_index                     = 10;
1309.622 -  money_put<char, char*>::id._M_index              = 11;
1309.623 -# ifndef _STLP_NO_WCHAR_T
1309.624 -  money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                  = 27;
1309.625 -  money_get<wchar_t, const wchar_t*>::id._M_index  = 28;
1309.626 -  money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                  = 29;
1309.627 -  money_put<wchar_t, wchar_t*>::id._M_index        = 30;
1309.628 -# endif  
1309.629 -}
1309.630 -#endif
1309.631 -
1309.632 -_STLP_END_NAMESPACE
1309.633 -
1309.634 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1309.635 -#  include <stl/_monetary.c>
1309.636 -# endif
1309.637 -
1309.638 -#endif /* _STLP_INTERNAL_MONETARY_H */
1309.639 -
1309.640 -// Local Variables:
1309.641 -// mode:C++
1309.642 -// End:
1309.643 -
1309.644 -
  1310.1 --- a/epoc32/include/stdapis/stlport/stl/_new.h	Tue Mar 16 16:12:26 2010 +0000
  1310.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1310.3 @@ -1,208 +0,0 @@
  1310.4 -/*
  1310.5 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1310.6 -
  1310.7 -* Redistribution and use in source and binary forms, with or without 
  1310.8 -* modification, are permitted provided that the following conditions are met:
  1310.9 -
 1310.10 -* Redistributions of source code must retain the above copyright notice, this 
 1310.11 -* list of conditions and the following disclaimer.
 1310.12 -* Redistributions in binary form must reproduce the above copyright notice, 
 1310.13 -* this list of conditions and the following disclaimer in the documentation 
 1310.14 -* and/or other materials provided with the distribution.
 1310.15 -* Neither the name of Nokia Corporation nor the names of its contributors 
 1310.16 -* may be used to endorse or promote products derived from this software 
 1310.17 -* without specific prior written permission.
 1310.18 -
 1310.19 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1310.20 -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1310.21 -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1310.22 -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1310.23 -* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1310.24 -* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1310.25 -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1310.26 -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1310.27 -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1310.28 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1310.29 -*
 1310.30 -* Description:
 1310.31 -*
 1310.32 -*/
 1310.33 -
 1310.34 -#ifndef _STLP_NEW_H_HEADER
 1310.35 -# define _STLP_NEW_H_HEADER
 1310.36 -
 1310.37 -# ifdef _STLP_NO_BAD_ALLOC
 1310.38 -# ifndef _STLP_NEW_DONT_THROW
 1310.39 -#   define _STLP_NEW_DONT_THROW 1
 1310.40 -# endif /* _STLP_NEW_DONT_THROW */
 1310.41 -
 1310.42 -#  include <exception>
 1310.43 -
 1310.44 -
 1310.45 -_STLP_BEGIN_NAMESPACE
 1310.46 -
 1310.47 -#if defined(__SYMBIAN32__) && defined( __WINSCW__)
 1310.48 -// already defined symcpp.h included from rvct2_2.h
 1310.49 -struct nothrow_t {};
 1310.50 -#endif
 1310.51 -
 1310.52 -
 1310.53 -# ifdef _STLP_OWN_IOSTREAMS
 1310.54 -#ifdef __ARMCC__
 1310.55 -extern _STLP_DECLSPEC const nothrow_t nothrow;
 1310.56 -#else
 1310.57 -extern IMPORT_C const nothrow_t& GetNoThrowObj();
 1310.58 -#define nothrow GetNoThrowObj()
 1310.59 -#endif
 1310.60 -# else
 1310.61 -#  define nothrow nothrow_t()
 1310.62 -# endif
 1310.63 -#ifndef _STLP_EXCEPTION_BASE
 1310.64 -#  define _STLP_EXCEPTION_BASE exception
 1310.65 -#endif
 1310.66 -
 1310.67 -class bad_alloc : public _STLP_EXCEPTION_BASE { 
 1310.68 -public:
 1310.69 -  bad_alloc () _STLP_NOTHROW_INHERENTLY { }
 1310.70 -  bad_alloc(const bad_alloc&) _STLP_NOTHROW_INHERENTLY { }
 1310.71 -  bad_alloc& operator=(const bad_alloc&) _STLP_NOTHROW_INHERENTLY {return *this;}
 1310.72 -  ~bad_alloc () _STLP_NOTHROW_INHERENTLY { }
 1310.73 -  const char* what() const _STLP_NOTHROW_INHERENTLY { return "bad alloc"; }
 1310.74 -};
 1310.75 -
 1310.76 -_STLP_END_NAMESPACE
 1310.77 -
 1310.78 -#endif /* _STLP_NO_BAD_ALLOC */
 1310.79 -
 1310.80 -#if defined (_STLP_WINCE)
 1310.81 -_STLP_BEGIN_NAMESPACE
 1310.82 -
 1310.83 -inline void* _STLP_CALL __stl_new(size_t __n) {
 1310.84 -  return ::malloc(__n);
 1310.85 -}
 1310.86 -
 1310.87 -inline void _STLP_CALL __stl_delete(void* __p) {
 1310.88 -  free(__p);
 1310.89 -}
 1310.90 -
 1310.91 -#ifndef __cdecl
 1310.92 -# define __cdecl
 1310.93 -#endif
 1310.94 -
 1310.95 -_STLP_END_NAMESPACE
 1310.96 -
 1310.97 -#else /* _STLP_WINCE */
 1310.98 -
 1310.99 -#include <new>
1310.100 -
1310.101 -# ifndef _STLP_NO_BAD_ALLOC
1310.102 -#  ifdef _STLP_USE_OWN_NAMESPACE
1310.103 -
1310.104 -    _STLP_BEGIN_NAMESPACE
1310.105 -    using _STLP_VENDOR_EXCEPT_STD::bad_alloc;
1310.106 -    using _STLP_VENDOR_EXCEPT_STD::nothrow_t;
1310.107 -    using _STLP_VENDOR_EXCEPT_STD::nothrow;
1310.108 -
1310.109 -#  if defined (_STLP_GLOBAL_NEW_HANDLER)
1310.110 -    using ::new_handler;
1310.111 -    using ::set_new_handler;
1310.112 -#  else
1310.113 -    using _STLP_VENDOR_EXCEPT_STD::new_handler;
1310.114 -    using _STLP_VENDOR_EXCEPT_STD::set_new_handler;
1310.115 -#  endif
1310.116 -    
1310.117 -    _STLP_END_NAMESPACE
1310.118 -
1310.119 -#  endif /* _STLP_OWN_NAMESPACE */
1310.120 -
1310.121 -# endif /* _STLP_NO_BAD_ALLOC */
1310.122 -
1310.123 -# if defined (_STLP_NO_NEW_NEW_HEADER) || defined (_STLP_NEW_DONT_THROW) || defined (__SYMBIAN32__) \
1310.124 -                    || defined (__WINS__) && ! defined (_STLP_CHECK_NULL_ALLOC)
1310.125 -#  define _STLP_CHECK_NULL_ALLOC(__x) void* __y = __x;if (__y == 0){_STLP_THROW(bad_alloc());}return __y
1310.126 -# if defined (__SYMBIAN32__)
1310.127 -//# define _STLP_NEW operator new
1310.128 -#define _STLP_NEW  ::malloc
1310.129 -#endif
1310.130 -/*
1310.131 -# elif defined (__SYMBIAN32__) || defined (__WINS__)
1310.132 -#  ifndef _STLP_USE_TRAP_LEAVE
1310.133 -#   define _STLP_CHECK_NULL_ALLOC(__x) void* __y = __x;if (__y == 0){abort();}return __y
1310.134 -#  else
1310.135 -#   define _STLP_NEW(x) :: operator new (x, ELeave) 
1310.136 -#   define _STLP_CHECK_NULL_ALLOC(__x) return __x
1310.137 -#  endif
1310.138 -*/
1310.139 -# else
1310.140 -#  define _STLP_CHECK_NULL_ALLOC(__x) return __x
1310.141 -# endif
1310.142 -
1310.143 -#ifndef _STLP_NEW
1310.144 -# define _STLP_NEW ::operator new
1310.145 -#endif
1310.146 -# define _STLP_PLACEMENT_NEW ::new
1310.147 -
1310.148 -_STLP_BEGIN_NAMESPACE
1310.149 -
1310.150 -#ifdef __SYMBIAN32__
1310.151 -
1310.152 -typedef void(*new_handler)();
1310.153 -
1310.154 -_STLP_DECLSPEC new_handler set_new_handler(new_handler pnew) throw();
1310.155 -
1310.156 -#endif
1310.157 -
1310.158 -#if (( defined(__IBMCPP__)|| defined(__OS400__) || defined (__xlC__) || defined (qTidyHeap)) && defined(__DEBUG_ALLOC__) )
1310.159 -inline void*  _STLP_CALL __stl_new(size_t __n) {  _STLP_CHECK_NULL_ALLOC(_STLP_NEW(__n, __FILE__, __LINE__)); }
1310.160 -inline void _STLP_CALL __stl_delete(void* __p) { ::operator delete(__p, __FILE__, __LINE__); }
1310.161 -#else
1310.162 -inline void*  _STLP_CALL __stl_new(size_t __n)   { return ::operator new(__n); }
1310.163 -inline void   _STLP_CALL __stl_delete(void* __p) { ::operator delete(__p); }
1310.164 -#endif
1310.165 -_STLP_END_NAMESPACE
1310.166 -
1310.167 -
1310.168 -# endif /* _STLP_WINCE */
1310.169 -
1310.170 -#if defined(__SYMBIAN32__) && !defined(__GCCE__)
1310.171 -_STLP_DECLSPEC void *operator new(unsigned int aSize);
1310.172 -
1310.173 -_STLP_DECLSPEC void *operator new[](unsigned int aSize);
1310.174 -#endif
1310.175 -
1310.176 -_STLP_DECLSPEC void operator delete(void* aPtr) throw();
1310.177 -
1310.178 -_STLP_DECLSPEC void operator delete[](void* aPtr) throw();
1310.179 -
1310.180 -_STLP_DECLSPEC void* operator new(unsigned int aSize, const std::nothrow_t& /*aNoThrow*/) throw();
1310.181 -
1310.182 -_STLP_DECLSPEC void* operator new[](unsigned int aSize, const std::nothrow_t& aNoThrow) throw();
1310.183 -
1310.184 -_STLP_DECLSPEC void operator delete(void* aPtr, const std::nothrow_t& /*aNoThrow*/) throw();
1310.185 -
1310.186 -_STLP_DECLSPEC void operator delete[](void* aPtr, const std::nothrow_t& /*aNoThrow*/) throw();
1310.187 -
1310.188 -
1310.189 -// placement delete
1310.190 -#ifndef __PLACEMENT_VEC_NEW_INLINE
1310.191 -#define __PLACEMENT_VEC_NEW_INLINE
1310.192 -inline void* operator new[](unsigned int /*aSize*/, void* aBase) throw()
1310.193 -	{return aBase;}
1310.194 -inline void operator delete[](void* /*aPtr*/, void* /*aBase*/) throw()
1310.195 -    {
1310.196 -    
1310.197 -    }
1310.198 -#endif
1310.199 -
1310.200 -#ifndef __PLACEMENT_NEW_INLINE
1310.201 -#define __PLACEMENT_NEW_INLINE
1310.202 -inline void* operator new(unsigned int /*aSize*/, void* aBase) throw()
1310.203 -	{return aBase;}
1310.204 -
1310.205 -// Global placement operator delete
1310.206 -inline void operator delete(void* /*aPtr*/, void* /*aBase*/) throw()
1310.207 -	{}
1310.208 -#endif //__PLACEMENT_NEW_INLINE
1310.209 -
1310.210 -
1310.211 -#endif /* _STLP_NEW_H_HEADER */
  1311.1 --- a/epoc32/include/stdapis/stlport/stl/_null_stream.h	Tue Mar 16 16:12:26 2010 +0000
  1311.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1311.3 @@ -1,42 +0,0 @@
  1311.4 -/*
  1311.5 - * Copyright (c) 2000
  1311.6 - * Boris Fomitchev
  1311.7 - *
  1311.8 - * This material is provided "as is", with absolutely no warranty expressed
  1311.9 - * or implied. Any use is at your own risk.
 1311.10 - *
 1311.11 - * Permission to use or copy this software for any purpose is hereby granted 
 1311.12 - * without fee, provided the above notices are retained on all copies.
 1311.13 - * Permission to modify the code and to distribute modified code is granted,
 1311.14 - * provided the above notices are retained, and a notice that the code was
 1311.15 - * modified is included with the above copyright notice.
 1311.16 - *
 1311.17 - */
 1311.18 -
 1311.19 -#ifndef _STLP_NULL_STREAM_H
 1311.20 -# define _STLP_NULL_STREAM_H
 1311.21 -
 1311.22 -_STLP_BEGIN_NAMESPACE
 1311.23 -
 1311.24 -struct __null_stream 
 1311.25 -{
 1311.26 -    void flush() { }
 1311.27 -};
 1311.28 -
 1311.29 -template <class _Tp>
 1311.30 -__null_stream& operator <<(__null_stream& __x, const _Tp& ) 
 1311.31 -{
 1311.32 -    return __x;
 1311.33 -}
 1311.34 -
 1311.35 -template <class _Tp>
 1311.36 -__null_stream& operator >>(const _Tp&, __null_stream& __x ) 
 1311.37 -{
 1311.38 -    return __x;
 1311.39 -}
 1311.40 -
 1311.41 -extern __null_stream cin, cout, cerr, endl, ws, hex, dec;
 1311.42 -
 1311.43 -_STLP_END_NAMESPACE
 1311.44 -
 1311.45 -# endif
  1312.1 --- a/epoc32/include/stdapis/stlport/stl/_num_get.c	Tue Mar 16 16:12:26 2010 +0000
  1312.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1312.3 @@ -1,882 +0,0 @@
  1312.4 -/*
  1312.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1312.6 - * Copyright (c) 1999
  1312.7 - * Silicon Graphics Computer Systems, Inc.
  1312.8 - *
  1312.9 - * Copyright (c) 1999
 1312.10 - * Boris Fomitchev
 1312.11 - *
 1312.12 - * This material is provided "as is", with absolutely no warranty expressed
 1312.13 - * or implied. Any use is at your own risk.
 1312.14 - *
 1312.15 - * Permission to use or copy this software for any purpose is hereby granted
 1312.16 - * without fee, provided the above notices are retained on all copies.
 1312.17 - * Permission to modify the code and to distribute modified code is granted,
 1312.18 - * provided the above notices are retained, and a notice that the code was
 1312.19 - * modified is included with the above copyright notice.
 1312.20 - *
 1312.21 - */
 1312.22 -#ifndef _STLP_NUM_GET_C
 1312.23 -#define _STLP_NUM_GET_C
 1312.24 -
 1312.25 -#ifndef _STLP_INTERNAL_NUM_GET_H
 1312.26 -# include <stl/_num_get.h>
 1312.27 -#endif
 1312.28 -
 1312.29 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1312.30 -
 1312.31 -#ifndef _STLP_LIMITS_H
 1312.32 -# include <stl/_limits.h>
 1312.33 -#endif
 1312.34 -
 1312.35 -_STLP_DECLSPEC  unsigned char*  __get_digit_val_table(void);
 1312.36 -_STLP_DECLSPEC  char*  __get_narrow_atoms(void);
 1312.37 -_STLP_BEGIN_NAMESPACE
 1312.38 -
 1312.39 -extern const unsigned char __digit_val_table[];
 1312.40 -
 1312.41 -template < class _InputIter, class _Integer, class _CharT>
 1312.42 -_InputIter _STLP_CALL
 1312.43 -_M_do_get_integer(_InputIter&, _InputIter&, ios_base&, ios_base::iostate&, _Integer&, _CharT*);
 1312.44 -
 1312.45 -// _M_do_get_integer and its helper functions.
 1312.46 -
 1312.47 -#ifdef	__SYMBIAN32__
 1312.48 -template<class _CharT>
 1312.49 -inline bool _STLP_CALL __get_fdigit(_CharT& c, const _CharT* digits)
 1312.50 -  { 
 1312.51 -
 1312.52 -  const _CharT* p = find(digits, digits + 10, c);
 1312.53 -  if (p != digits + 10) {
 1312.54 -    c = (_CharT)( (_CharT)'0' + (p - digits));
 1312.55 -    return true;
 1312.56 -  }
 1312.57 -  else
 1312.58 -    return false;
 1312.59 -}
 1312.60 -
 1312.61 -#endif
 1312.62 -inline bool _STLP_CALL __get_fdigit(char& __c, const char*)
 1312.63 -  { return __c >= '0' && __c <= '9'; }
 1312.64 -
 1312.65 -inline bool _STLP_CALL __get_fdigit_or_sep(char& __c, char __sep, const char *)
 1312.66 -{
 1312.67 -  if (__c == __sep) {
 1312.68 -    __c = ',' ;
 1312.69 -    return true ;
 1312.70 -  } else
 1312.71 -    return  ( __c >= '0' && __c <= '9');
 1312.72 -}
 1312.73 -
 1312.74 -# ifndef _STLP_NO_WCHAR_T
 1312.75 -
 1312.76 -// Similar, except return the character itself instead of the numeric
 1312.77 -// value.  Used for floating-point input.
 1312.78 -inline bool  _STLP_CALL __get_fdigit(wchar_t& c, const wchar_t* digits)
 1312.79 -{
 1312.80 -  const wchar_t* p = find(digits, digits + 10, c);
 1312.81 -  if (p != digits + 10) {
 1312.82 -    c = (char)('0' + (p - digits));
 1312.83 -    return true;
 1312.84 -  }
 1312.85 -  else
 1312.86 -    return false;
 1312.87 -}
 1312.88 -
 1312.89 -inline bool  _STLP_CALL __get_fdigit_or_sep(wchar_t& c, wchar_t sep,
 1312.90 -                                     const wchar_t * digits)
 1312.91 -{
 1312.92 -  if (c == sep) {
 1312.93 -    c = (char)',';
 1312.94 -    return true;
 1312.95 -  }
 1312.96 -  else
 1312.97 -    return __get_fdigit(c, digits);
 1312.98 -}
 1312.99 -#ifdef __SYMBIAN32__
1312.100 -template <class _CharT>
1312.101 -inline bool  _STLP_CALL __get_fdigit_or_sep(_CharT& c, _CharT sep,
1312.102 -                                     const _CharT * digits)
1312.103 -{
1312.104 -  if (c == sep) {
1312.105 -    c = (_CharT)',';
1312.106 -    return true;
1312.107 -  }
1312.108 -  else
1312.109 -    return __get_fdigit(c, digits);
1312.110 -}
1312.111 -
1312.112 -
1312.113 -
1312.114 -#endif
1312.115 -#endif
1312.116 -inline int _STLP_CALL
1312.117 -__get_digit_from_table(unsigned __index)
1312.118 -{
1312.119 -  return (__index > 127 ? 0xFF : __get_digit_val_table()[__index]);
1312.120 -}
1312.121 -
1312.122 -extern const char __narrow_atoms[];
1312.123 -
1312.124 -template <class _InputIter, class _CharT>
1312.125 -int
1312.126 -_M_get_base_or_zero(_InputIter& __stl_in, _InputIter& __end, ios_base& __str, _CharT*)
1312.127 -{
1312.128 -  _CharT __atoms[5];
1312.129 -  const ctype<_CharT>& __c_type = use_facet< ctype<_CharT> >(__str.getloc());
1312.130 -  // const ctype<_CharT>& __c_type = *(const ctype<_CharT>*)__str._M_ctype_facet();
1312.131 -
1312.132 -  __c_type.widen(__get_narrow_atoms(), __get_narrow_atoms() + 5, __atoms);
1312.133 -
1312.134 -  bool __negative = false;
1312.135 -  _CharT __c = *__stl_in;
1312.136 -
1312.137 -  if (__c == __atoms[1] /* __xminus_char */ ) {
1312.138 -    __negative = true;
1312.139 -    ++__stl_in;
1312.140 -  }
1312.141 -  else if (__c == __atoms[0] /* __xplus_char */ )
1312.142 -    ++__stl_in;
1312.143 -
1312.144 -
1312.145 -  int __base;
1312.146 -  int __valid_zero = 0;
1312.147 -
1312.148 -  ios_base::fmtflags __basefield = __str.flags() & ios_base::basefield;
1312.149 -
1312.150 -  switch (__basefield) {
1312.151 -  case ios_base::oct:
1312.152 -    __base = 8;
1312.153 -    break;
1312.154 -  case ios_base::dec:
1312.155 -    __base = 10;
1312.156 -    break;
1312.157 -  case ios_base::hex:
1312.158 -    __base = 16;
1312.159 -    if (__stl_in != __end && *__stl_in == __atoms[2] /* __zero_char */ ) {
1312.160 -      ++__stl_in;
1312.161 -      if (__stl_in != __end &&
1312.162 -          (*__stl_in == __atoms[3] /* __x_char */ || *__stl_in == __atoms[4] /* __X_char */ ))
1312.163 -        ++__stl_in;
1312.164 -      else
1312.165 -        __valid_zero = 1; // That zero is valid by itself.
1312.166 -    }
1312.167 -    break;
1312.168 -  default:
1312.169 -    if (__stl_in != __end && *__stl_in == __atoms[2] /* __zero_char */ ) {
1312.170 -      ++__stl_in;
1312.171 -      if (__stl_in != __end &&
1312.172 -          (*__stl_in == __atoms[3] /* __x_char */ || *__stl_in == __atoms[4] /* __X_char */ )) {
1312.173 -        ++__stl_in;
1312.174 -        __base = 16;
1312.175 -      }
1312.176 -      else
1312.177 -        {
1312.178 -          __base = 8;
1312.179 -          __valid_zero = 1; // That zero is still valid by itself.
1312.180 -        }
1312.181 -    }
1312.182 -    else
1312.183 -      __base = 10;
1312.184 -    break;
1312.185 -  }
1312.186 -  return (__base << 2) | ((int)__negative << 1) | __valid_zero;
1312.187 -}
1312.188 -
1312.189 -
1312.190 -template <class _InputIter, class _Integer>
1312.191 -bool _STLP_CALL
1312.192 -__get_integer(_InputIter& __first, _InputIter& __last,
1312.193 -	      int __base, _Integer& __val,
1312.194 -	      int __got, bool __is_negative, char __separator, const string& __grouping, const __true_type&)
1312.195 -{
1312.196 -  bool __ovflow = false;
1312.197 -  bool __valid_group = true;
1312.198 -
1312.199 -  _Integer __result = 0;
1312.200 -  bool __is_group = !__grouping.empty();
1312.201 -//  char __group_sizes[64];
1312.202 -  char __group_sizes[256] = {0}; //group sizes can be more
1312.203 -#ifdef	__SYMBIAN32__
1312.204 -int __current_group_size = __got;
1312.205 -#else
1312.206 -  int __current_group_size = 0;
1312.207 -#endif
1312.208 -  char* __group_sizes_end = __group_sizes;
1312.209 -   int prv_got = 0;
1312.210 -   
1312.211 -   
1312.212 -  _Integer __over_base = (numeric_limits<_Integer>::min)() / __STATIC_CAST(_Integer, __base);
1312.213 -
1312.214 -   for ( ; __first != __last ; ++__first) {
1312.215 -
1312.216 -     const char __c = *__first;
1312.217 -
1312.218 -     if (__is_group && __c == __separator) {
1312.219 -	 if (prv_got == __got) //no successive seperators
1312.220 -	 	return false;
1312.221 -	 prv_got = __got;
1312.222 -       *__group_sizes_end++ = __current_group_size;       
1312.223 -       __current_group_size = 0;
1312.224 -       continue;
1312.225 -     }
1312.226 -
1312.227 -     int __n = __get_digit_from_table(__c);
1312.228 -
1312.229 -     if (__n >= __base)
1312.230 -	 	break;
1312.231 -
1312.232 -     ++__got;
1312.233 -     ++__current_group_size;
1312.234 -
1312.235 -     if (__result < __over_base)
1312.236 -       __ovflow = true;  // don't need to keep accumulating
1312.237 -     else {
1312.238 -       _Integer __next = __STATIC_CAST(_Integer, __base * __result - __n);
1312.239 -       if (__result != 0)
1312.240 -#ifdef	__SYMBIAN32__
1312.241 -	if (__is_negative)
1312.242 -		__ovflow = __ovflow || __next >= __result;
1312.243 -	else
1312.244 -		__ovflow = __ovflow || (__next-1) >= __result; //For signed char, the ranges are -128 to 127, 
1312.245 -#else
1312.246 -	 __ovflow = __ovflow || __next >= __result;
1312.247 -#endif
1312.248 -       __result = __next;
1312.249 -     }
1312.250 -   }
1312.251 -
1312.252 -   if (__is_group && __group_sizes_end != __group_sizes) {
1312.253 -     *__group_sizes_end++ = __current_group_size;
1312.254 -     
1312.255 -   }
1312.256 -
1312.257 -   // fbp : added to not modify value if nothing was read
1312.258 -   if (__got > 0) {
1312.259 -       __val = __ovflow
1312.260 -	 ? __is_negative ? (numeric_limits<_Integer>::min)()
1312.261 -	 : (numeric_limits<_Integer>::max)()
1312.262 -	 : (__is_negative ? __result : __STATIC_CAST(_Integer, -__result));
1312.263 -   }
1312.264 -   __valid_group = __valid_grouping(__group_sizes, __group_sizes_end,
1312.265 -									    __grouping.data(), __grouping.data()+ __grouping.size());
1312.266 -
1312.267 -	if (__valid_group == false)
1312.268 -	__val = 0;
1312.269 -
1312.270 -  // overflow is being treated as failure
1312.271 -  return ((__got > 0) && !__ovflow) && (__is_group == 0 || __valid_group) ;
1312.272 -}
1312.273 -
1312.274 -template <class _InputIter, class _Integer>
1312.275 -bool _STLP_CALL
1312.276 -__get_integer(_InputIter& __first, _InputIter& __last,
1312.277 -	      int __base, _Integer& __val,
1312.278 -	      int __got, bool __is_negative, char __separator, const string& __grouping, const __false_type&)
1312.279 -{
1312.280 -  bool __ovflow = false;
1312.281 -  bool __valid_group = true;
1312.282 -  _Integer __result = 0;
1312.283 -  bool __is_group = !__grouping.empty();
1312.284 -//  char __group_sizes[64];
1312.285 -  char __group_sizes[256] = {0};//group sizes can be more
1312.286 -  int __current_group_size = 0;
1312.287 -  char* __group_sizes_end = __group_sizes;
1312.288 -     int prv_got = 0;
1312.289 -
1312.290 - 
1312.291 -  _Integer  __over_base = (numeric_limits<_Integer>::max)() / __STATIC_CAST(_Integer, __base);
1312.292 -
1312.293 -  for ( ; __first != __last ; ++__first) {
1312.294 -
1312.295 -    const char __c = *__first;
1312.296 -/*
1312.297 -    //if (__is_group && __c == __separator) { //no seperator at the start of number.
1312.298 -    if (__is_group && __c == __separator && __got) {
1312.299 -      // seperator should come after extracting some digits
1312.300 -      	if (!__current_group_size)
1312.301 -      		break;
1312.302 -     *__group_sizes_end++ = __current_group_size;    
1312.303 -      __current_group_size = 0;
1312.304 -      continue;
1312.305 -    }
1312.306 -*/
1312.307 -	if (__is_group && __c == __separator) {
1312.308 -	 if (prv_got == __got) //no successive seperators
1312.309 -	 	return false;
1312.310 -	 	prv_got = __got;
1312.311 -       *__group_sizes_end++ = __current_group_size;       
1312.312 -       __current_group_size = 0;
1312.313 -       continue;
1312.314 -     }
1312.315 -    int __n = __get_digit_from_table(__c);
1312.316 -
1312.317 -    if (__n >= __base)
1312.318 -    	break;
1312.319 -
1312.320 -    ++__got;
1312.321 -    ++__current_group_size;
1312.322 -
1312.323 -    if (__result > __over_base)
1312.324 -      __ovflow = true;  //don't need to keep accumulating
1312.325 -    else {
1312.326 -      _Integer __next = __STATIC_CAST(_Integer, __base * __result + __n);
1312.327 -	if (__result != 0)
1312.328 -	  __ovflow = __ovflow || __next <= __result;
1312.329 -	__result = __next;
1312.330 -      }
1312.331 -  }
1312.332 -
1312.333 -  if (__is_group && __group_sizes_end != __group_sizes) {
1312.334 -      *__group_sizes_end++ = __current_group_size;     
1312.335 -  }
1312.336 -
1312.337 -  // fbp : added to not modify value if nothing was read
1312.338 -  if (__got > 0) {
1312.339 -      __val = __ovflow
1312.340 -	? (numeric_limits<_Integer>::max)()
1312.341 -	: (__is_negative ? __STATIC_CAST(_Integer, -__result) : __result);
1312.342 -  }
1312.343 -  __valid_group =  __valid_grouping(__group_sizes, __group_sizes_end,
1312.344 -					 __grouping.data(), __grouping.data()+ __grouping.size());
1312.345 -
1312.346 -	if (__valid_group == false)
1312.347 -	__val = 0;
1312.348 -
1312.349 -  // overflow is being treated as failure
1312.350 -  return ((__got > 0) && !__ovflow) &&
1312.351 -    (__is_group == 0 ||__valid_group) ;
1312.352 -}
1312.353 -
1312.354 -
1312.355 -template <class _InputIter, class _Integer>
1312.356 -bool _STLP_CALL
1312.357 -__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val)
1312.358 -{
1312.359 -  string __grp;
1312.360 -  return __get_integer(__first, __last, 10, __val, 0, false, ' ', __grp, __false_type());
1312.361 -}
1312.362 -
1312.363 -template <class _InputIter, class _Integer, class _CharT>
1312.364 -_InputIter _STLP_CALL
1312.365 -_M_do_get_integer(_InputIter& __stl_in, _InputIter& __end, ios_base& __str,
1312.366 -                  ios_base::iostate& __err, _Integer& __val, _CharT* __pc)
1312.367 -{
1312.368 -
1312.369 -#if defined(__HP_aCC) && (__HP_aCC == 1)
1312.370 -  bool _IsSigned = !((_Integer)(-1) > 0);
1312.371 -#else
1312.372 -  typedef typename __bool2type<numeric_limits<_Integer>::is_signed>::_Ret _IsSigned;
1312.373 -#endif
1312.374 -
1312.375 -  //const numpunct<_CharT>& __numpunct = *(const numpunct<_CharT>*)__str._M_numpunct_facet();
1312.376 -  const numpunct<_CharT>& __numpunct = use_facet< numpunct<_CharT> >(__str.getloc());
1312.377 -//  const string& __grouping = __str._M_grouping(); // cached copy //stdcxx fix - 11/1/06
1312.378 -  const string& __grouping = __numpunct.grouping();
1312.379 -
1312.380 -
1312.381 -  const int __base_or_zero = _M_get_base_or_zero(__stl_in, __end, __str, __pc);
1312.382 -  int  __got = __base_or_zero & 1;
1312.383 -
1312.384 -  bool __result;
1312.385 -
1312.386 -  if (__stl_in == __end) {      // We may have already read a 0.  If so,
1312.387 -
1312.388 -    if (__got > 0) {       // the result is 0 even if we're at eof.
1312.389 -      __val = 0;
1312.390 -      __result = true;
1312.391 -    }
1312.392 -    else
1312.393 -      __result = false;
1312.394 -  } else {
1312.395 -
1312.396 -    const bool __negative = __base_or_zero & 2;
1312.397 -    const int __base = __base_or_zero >> 2;
1312.398 -
1312.399 -#if defined(__HP_aCC) && (__HP_aCC == 1)
1312.400 -     if (_IsSigned)
1312.401 -       __result = __get_integer(__stl_in, __end, __base,  __val, __got, __negative, __numpunct.thousands_sep(), __grouping, __true_type() );
1312.402 -     else
1312.403 -      __result = __get_integer(__stl_in, __end, __base,  __val, __got, __negative, __numpunct.thousands_sep(), __grouping, __false_type() );
1312.404 -#else
1312.405 -#ifdef __SYMBIAN32__
1312.406 -    _Integer __tval;
1312.407 -    __result = __get_integer(__stl_in, __end, __base,  __tval, __got, __negative, __numpunct.thousands_sep(), __grouping, _IsSigned());
1312.408 -    if(__result)
1312.409 -        __val = __tval;
1312.410 -#else
1312.411 -    __result = __get_integer(__stl_in, __end, __base,  __val, __got, __negative, __numpunct.thousands_sep(), __grouping, _IsSigned());
1312.412 -#endif    
1312.413 -# endif
1312.414 -  }
1312.415 -
1312.416 -  __err = __STATIC_CAST(ios_base::iostate, __result ? ios_base::goodbit : ios_base::failbit);
1312.417 -
1312.418 -  if (__stl_in == __end)
1312.419 -    __err |= ios_base::eofbit;
1312.420 -  return __stl_in;
1312.421 -}
1312.422 -
1312.423 -// _M_read_float and its helper functions.
1312.424 -template <class _InputIter, class _CharT>
1312.425 -_InputIter  _STLP_CALL
1312.426 -__copy_sign(_InputIter __first, _InputIter __last, string& __v,
1312.427 -            _CharT __xplus, _CharT __xminus) {
1312.428 -    if (__first != __last) {
1312.429 -    _CharT __c = *__first;
1312.430 -    if (__c == __xplus)
1312.431 -      ++__first;
1312.432 -    else if (__c == __xminus) {
1312.433 -      __v.push_back('-');
1312.434 -      ++__first;
1312.435 -    }
1312.436 -  }
1312.437 -  return __first;
1312.438 -}
1312.439 -
1312.440 -
1312.441 -template <class _InputIter, class _CharT>
1312.442 -bool _STLP_CALL
1312.443 -__copy_digits(_InputIter& __first, _InputIter& __last,
1312.444 -              string& __v, const _CharT* __digits)
1312.445 -{
1312.446 -  bool __ok = false;
1312.447 -
1312.448 -  for ( ; __first != __last; ++__first) {
1312.449 -    _CharT __c = *__first;
1312.450 -    if (__get_fdigit(__c, __digits)) {
1312.451 -      __v.push_back((char)__c);
1312.452 -      __ok = true;
1312.453 -    }
1312.454 -    else
1312.455 -      break;
1312.456 -  }
1312.457 -  return __ok;
1312.458 -}
1312.459 -
1312.460 -template <class _InputIter, class _CharT>
1312.461 -bool _STLP_CALL
1312.462 -__copy_grouped_digits(_InputIter& __first, _InputIter& __last,
1312.463 -		      string& __v, const _CharT * __digits,
1312.464 -		      _CharT __sep, const string& __grouping,
1312.465 -		      bool& __grouping_ok)
1312.466 -{
1312.467 -  bool __ok = false;
1312.468 -//  char __group_sizes[64];
1312.469 -  char __group_sizes[256] = {0};//group sizes can be more
1312.470 -  char*__group_sizes_end = __group_sizes;
1312.471 -  char __current_group_size = 0;
1312.472 -
1312.473 -  for ( ; __first != __last; ++__first) {
1312.474 -    _CharT __c = *__first;
1312.475 -    bool __tmp = __get_fdigit_or_sep(__c, __sep, __digits);
1312.476 -    if (__tmp) {
1312.477 -      if (__c == ',') { 
1312.478 -      	// seperator should come after extracting some digits
1312.479 -      	if (!__current_group_size)
1312.480 -      		break;
1312.481 -      	
1312.482 -        *__group_sizes_end++ = __current_group_size;        
1312.483 -        __current_group_size = 0;
1312.484 -      }
1312.485 -      else {
1312.486 -        __ok = true;
1312.487 -        __v.push_back((char)__c);
1312.488 -        ++__current_group_size;
1312.489 -      }
1312.490 -    }
1312.491 -    else
1312.492 -      break;
1312.493 -  }
1312.494 -
1312.495 -  if (__group_sizes_end != __group_sizes)
1312.496 -    *__group_sizes_end++ = __current_group_size;    
1312.497 -  __grouping_ok = __valid_grouping(__group_sizes, __group_sizes_end, __grouping.data(), __grouping.data() + __grouping.size());
1312.498 -  __ok = __ok & __grouping_ok; //Added, to check for valid grouping. If not valid grouping should return false.
1312.499 -  return __ok;
1312.500 -}
1312.501 -
1312.502 -
1312.503 -template <class _InputIter, class _CharT>
1312.504 -bool _STLP_CALL
1312.505 -_M_read_float(string& __buf, _InputIter& __stl_in, _InputIter& __end, ios_base& __s, _CharT*)
1312.506 -{
1312.507 -  // Create a string, copying characters of the form
1312.508 -  // [+-]? [0-9]* .? [0-9]* ([eE] [+-]? [0-9]+)?
1312.509 -
1312.510 -  bool __digits_before_dot /* = false */;
1312.511 -  bool __digits_after_dot = false;
1312.512 -  bool __ok;
1312.513 -
1312.514 -  bool   __grouping_ok = true;
1312.515 -
1312.516 -  const ctype<_CharT>& __ct = use_facet< ctype<_CharT> >(__s.getloc());
1312.517 -  // const ctype<_CharT>& __ct = *(const ctype<_CharT>*)__s._M_ctype_facet();
1312.518 -  //const numpunct<_CharT>& __numpunct = *(const numpunct<_CharT>*)__s._M_numpunct_facet();
1312.519 -  const numpunct<_CharT>& __numpunct = use_facet< numpunct<_CharT> >(__s.getloc());
1312.520 -//  const string& __grouping = __s._M_grouping(); // cached copy //stdcxx fix - 11/1/06
1312.521 -    const string& __grouping = __numpunct.grouping();
1312.522 -
1312.523 -  _CharT __dot = __numpunct.decimal_point();
1312.524 -  _CharT __sep = __numpunct.thousands_sep();
1312.525 -
1312.526 -  _CharT __digits[10];
1312.527 -  _CharT __xplus;
1312.528 -  _CharT __xminus;
1312.529 -
1312.530 -  _CharT __pow_e;
1312.531 -  _CharT __pow_E;
1312.532 -
1312.533 -  _Initialize_get_float(__ct, __xplus, __xminus, __pow_e, __pow_E, __digits);
1312.534 -
1312.535 -  // Get an optional sign
1312.536 -  __stl_in = __copy_sign(__stl_in, __end, __buf, __xplus, __xminus);
1312.537 -
1312.538 -  // Get an optional string of digits.
1312.539 -  if (__grouping.size() != 0)
1312.540 -    __digits_before_dot = __copy_grouped_digits(__stl_in, __end, __buf, __digits,
1312.541 -						__sep, __grouping, __grouping_ok);
1312.542 -  else
1312.543 -    __digits_before_dot = __copy_digits(__stl_in, __end, __buf, __digits);
1312.544 -
1312.545 -  // Get an optional decimal point, and an optional string of digits.
1312.546 -  if (__stl_in != __end && *__stl_in == __dot) {
1312.547 -    __buf.push_back('.');
1312.548 -    ++__stl_in;
1312.549 -    __digits_after_dot = __copy_digits(__stl_in, __end, __buf, __digits);
1312.550 -  }
1312.551 -
1312.552 -  // There have to be some digits, somewhere.
1312.553 -  __ok = __digits_before_dot || __digits_after_dot;
1312.554 -
1312.555 -  // Get an optional exponent.
1312.556 -  if (__ok && __stl_in != __end && (*__stl_in == __pow_e || *__stl_in == __pow_E)) {
1312.557 -    __buf.push_back('e');
1312.558 -    ++__stl_in;
1312.559 -    __stl_in = __copy_sign(__stl_in, __end, __buf, __xplus, __xminus);
1312.560 -    __ok = __copy_digits(__stl_in, __end, __buf, __digits);
1312.561 -    // If we have an exponent then the sign
1312.562 -    // is optional but the digits aren't.
1312.563 -  }
1312.564 -
1312.565 -  return __ok;
1312.566 -}
1312.567 -
1312.568 -//
1312.569 -// num_get<>, num_put<>
1312.570 -//
1312.571 -
1312.572 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1312.573 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1312.574 -template <class _CharT, class _InputIterator>
1312.575 -locale::id num_get<_CharT, _InputIterator>::id;
1312.576 -#endif
1312.577 -# else
1312.578 -
1312.579 -typedef num_get<char, const char*> num_get_char;
1312.580 -typedef num_get<char, istreambuf_iterator<char, char_traits<char> > > num_get_char_2;
1312.581 -
1312.582 -#ifndef __SYMBIAN32__
1312.583 -__DECLARE_INSTANCE(locale::id, num_get_char::id, );
1312.584 -__DECLARE_INSTANCE(locale::id, num_get_char_2::id, );
1312.585 -#endif
1312.586 -
1312.587 -# ifndef _STLP_NO_WCHAR_T
1312.588 -
1312.589 -typedef num_get<wchar_t, const wchar_t*> num_get_wchar_t;
1312.590 -typedef num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > num_get_wchar_t_2;
1312.591 -
1312.592 -#ifndef __SYMBIAN32__
1312.593 -__DECLARE_INSTANCE(locale::id, num_get_wchar_t::id, );
1312.594 -__DECLARE_INSTANCE(locale::id, num_get_wchar_t_2::id, );
1312.595 -#endif
1312.596 -
1312.597 -# endif
1312.598 -
1312.599 -# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1312.600 -
1312.601 -# ifndef _STLP_NO_BOOL
1312.602 -template <class _CharT, class _InputIter>
1312.603 -_InputIter
1312.604 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end,
1312.605 -                                    ios_base& __s,
1312.606 -                                    ios_base::iostate& __err, bool& __x) const
1312.607 -{
1312.608 -  if (__s.flags() & ios_base::boolalpha) {
1312.609 -    locale __loc = __s.getloc();
1312.610 -    //const _Numpunct& __np = *(const _Numpunct*)__s._M_numpunct_facet();
1312.611 -        const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc) ;
1312.612 -//    const ctype<_CharT>& __ct =    use_facet<ctype<_CharT> >(__loc) ;
1312.613 -
1312.614 -    const basic_string<_CharT> __truename  = __np.truename();
1312.615 -    const basic_string<_CharT> __falsename = __np.falsename();
1312.616 -    bool __true_ok  = true;
1312.617 -    bool __false_ok = true;
1312.618 -
1312.619 -    size_t __n = 0;
1312.620 -    for ( ; __stl_in != __end; ++__stl_in) {
1312.621 -      _CharT __c = *__stl_in;
1312.622 -      __true_ok  = __true_ok  && (__c == __truename[__n]);
1312.623 -      __false_ok = __false_ok && (__c == __falsename[__n]);
1312.624 -      ++__n;
1312.625 -
1312.626 -      if ((!__true_ok && !__false_ok) ||
1312.627 -          (__true_ok  && __n >= __truename.size()) ||
1312.628 -          (__false_ok && __n >= __falsename.size())) {
1312.629 -          
1312.630 -          if (__true_ok || __false_ok)  //if anything OK then increment, else, break
1312.631 -		++__stl_in;
1312.632 -        break;
1312.633 -      }
1312.634 -    }
1312.635 -	// stdcxx fix, Changed to check for complete true,false string
1312.636 -    if (__true_ok  && __n < __truename.size()) 
1312.637 -   {
1312.638 -	for ( ; __stl_in != __end; ++__stl_in) {
1312.639 -      		_CharT __c = *__stl_in;
1312.640 -      		__true_ok  = __true_ok  && (__c == __truename[__n]);
1312.641 -		++__n;  
1312.642 -		 if ((!__true_ok) ||(__true_ok  && __n >= __truename.size()) )
1312.643 -		 {
1312.644 -		 	if(__true_ok)
1312.645 -		 		++__stl_in;
1312.646 -          		break;
1312.647 -		 }
1312.648 -		 	
1312.649 -	}
1312.650 -	 if (__true_ok  && __n < __truename.size()) 
1312.651 -	   	__true_ok  = false;
1312.652 -    }
1312.653 -    if (__false_ok && __n < __falsename.size())
1312.654 -   {
1312.655 -
1312.656 -   		for ( ; __stl_in != __end; ++__stl_in) {
1312.657 -      		_CharT __c = *__stl_in;
1312.658 -      		__false_ok  = __false_ok  && (__c == __falsename[__n]);
1312.659 -		++__n;  
1312.660 -		 if ((!__false_ok) ||(__false_ok  && __n >= __falsename.size()) )         
1312.661 -          	{
1312.662 -			if(__false_ok)
1312.663 -				++__stl_in;
1312.664 -          		break;
1312.665 -		 }
1312.666 -		 	
1312.667 -		}
1312.668 -		if (__false_ok && __n < __falsename.size())
1312.669 -   			__false_ok = false;
1312.670 -    }
1312.671 -
1312.672 -    if (__true_ok || __false_ok) {
1312.673 -      __err = ios_base::goodbit;
1312.674 -      __x = __true_ok;
1312.675 -    }
1312.676 -    else
1312.677 -      __err = ios_base::failbit;
1312.678 -
1312.679 -    if (__stl_in == __end)
1312.680 -      __err |= ios_base::eofbit;
1312.681 -
1312.682 -    return __stl_in;
1312.683 -  }
1312.684 -
1312.685 -  else {
1312.686 -    long __lx;
1312.687 -    _InputIter __tmp = this->do_get(__stl_in, __end, __s, __err, __lx);
1312.688 -    if (!(__err & ios_base::failbit)) {
1312.689 -      if (__lx == 0)
1312.690 -        __x = false;
1312.691 -      else if (__lx == 1)
1312.692 -        __x = true;
1312.693 -      else
1312.694 -        __err |= ios_base::failbit;
1312.695 -    }
1312.696 -    return __tmp;
1312.697 -  }
1312.698 -}
1312.699 -
1312.700 -# endif /* _STLP_NO_BOOL */
1312.701 -
1312.702 -//# ifdef _STLP_FIX_LIBRARY_ISSUES
1312.703 -template <class _CharT, class _InputIter>
1312.704 -_InputIter
1312.705 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.706 -                                    ios_base::iostate& __err, short& __val) const {
1312.707 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.708 -}
1312.709 -
1312.710 -template <class _CharT, class _InputIter>
1312.711 -_InputIter
1312.712 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.713 -                                    ios_base::iostate& __err, int& __val) const {
1312.714 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.715 -}
1312.716 -
1312.717 -//# endif
1312.718 -
1312.719 -template <class _CharT, class _InputIter>
1312.720 -_InputIter
1312.721 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.722 -                                    ios_base::iostate& __err, long& __val) const {
1312.723 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.724 -}
1312.725 -
1312.726 -template <class _CharT, class _InputIter>
1312.727 -_InputIter
1312.728 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.729 -                                    ios_base::iostate& __err,
1312.730 -                                    unsigned short& __val) const {
1312.731 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.732 -}
1312.733 -
1312.734 -template <class _CharT, class _InputIter>
1312.735 -_InputIter
1312.736 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.737 -                                    ios_base::iostate& __err,
1312.738 -                                    unsigned int& __val) const {
1312.739 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.740 -}
1312.741 -
1312.742 -template <class _CharT, class _InputIter>
1312.743 -_InputIter
1312.744 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.745 -                                    ios_base::iostate& __err,
1312.746 -                                    unsigned long& __val) const {
1312.747 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.748 -}
1312.749 -
1312.750 -
1312.751 -template <class _CharT, class _InputIter>
1312.752 -_InputIter
1312.753 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.754 -                                    ios_base::iostate& __err,
1312.755 -                                    float& __val) const {
1312.756 -  string __buf ;
1312.757 -  bool __ok = _M_read_float(__buf, __stl_in, __end, __str, (_CharT*)0 );
1312.758 -  if(__ok) //If success reading float then convert it.
1312.759 -  {
1312.760 -#ifdef __SYMBIAN32__
1312.761 -    float __tval;
1312.762 -    __ok = __string_to_float(__buf, __tval);
1312.763 -    if(__ok)
1312.764 -        __val = __tval;
1312.765 -#else
1312.766 -    __string_to_float(__buf, __val);
1312.767 -#endif    
1312.768 -  }
1312.769 -  __err = __STATIC_CAST(ios_base::iostate, __ok ? ios_base::goodbit : ios_base::failbit);
1312.770 -  if (__stl_in == __end)
1312.771 -    __err |= ios_base::eofbit;
1312.772 -  return __stl_in;
1312.773 -}
1312.774 -
1312.775 -template <class _CharT, class _InputIter>
1312.776 -_InputIter
1312.777 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.778 -                                    ios_base::iostate& __err,
1312.779 -                                    double& __val) const {
1312.780 -  string __buf ;
1312.781 -  bool __ok = _M_read_float(__buf, __stl_in, __end, __str, (_CharT*)0 );
1312.782 -  if(__ok) //If success reading float then convert it.
1312.783 -  {
1312.784 -#ifdef __SYMBIAN32__
1312.785 -    double __tval;
1312.786 -    __ok = __string_to_float(__buf, __tval);
1312.787 -    if(__ok)
1312.788 -        __val = __tval;
1312.789 -#else
1312.790 -    __string_to_float(__buf, __val);
1312.791 -#endif    
1312.792 -  }
1312.793 -  __err = __STATIC_CAST(ios_base::iostate, __ok ? ios_base::goodbit : ios_base::failbit);
1312.794 -  if (__stl_in == __end)
1312.795 -    __err |= ios_base::eofbit;
1312.796 -  return __stl_in;
1312.797 -}
1312.798 -
1312.799 -#ifndef _STLP_NO_LONG_DOUBLE
1312.800 -template <class _CharT, class _InputIter>
1312.801 -_InputIter
1312.802 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.803 -				    ios_base::iostate& __err,
1312.804 -                                    long double& __val) const {
1312.805 -  string __buf ;
1312.806 -  bool __ok = _M_read_float(__buf, __stl_in, __end, __str, (_CharT*)0 );
1312.807 -  if(__ok) //If success reading float then convert it.
1312.808 -  {
1312.809 -#ifdef __SYMBIAN32__
1312.810 -    long double __tval;
1312.811 -    __ok = __string_to_float(__buf, __tval);
1312.812 -    if(__ok)
1312.813 -        __val = __tval;
1312.814 -#else
1312.815 -    __string_to_float(__buf, __val);
1312.816 -#endif    
1312.817 -  }
1312.818 -  __err = __STATIC_CAST(ios_base::iostate, __ok ? ios_base::goodbit : ios_base::failbit);
1312.819 -  if (__stl_in == __end)
1312.820 -    __err |= ios_base::eofbit;
1312.821 -  return __stl_in;
1312.822 -}
1312.823 -#endif /* _STLP_NO_LONG_DOUBLE */
1312.824 -
1312.825 -template <class _CharT, class _InputIter>
1312.826 -_InputIter
1312.827 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.828 -                           ios_base::iostate& __err,
1312.829 -                           void*& __p) const {
1312.830 -#ifdef	__SYMBIAN32__
1312.831 -	unsigned long __val;	//using only long
1312.832 -#else
1312.833 -# if defined(_STLP_LONG_LONG)&&!defined(__MRC__)		//*ty 12/07/2001 - MrCpp can not cast from long long to void*
1312.834 -  unsigned _STLP_LONG_LONG __val;
1312.835 -# else
1312.836 -  unsigned long __val;
1312.837 -# endif
1312.838 -#endif //__SYMBIAN32__
1312.839 -#ifdef __SYMBIAN32__
1312.840 -    ios_base::fmtflags __save_flags = __str.flags();
1312.841 -
1312.842 -    __str.setf(ios_base::hex, ios_base::basefield);
1312.843 -    __str.setf(ios_base::showbase);
1312.844 -    __str.setf(ios_base::internal, ios_base::adjustfield);
1312.845 -    __str.width((sizeof(void*) * 2) + 2);
1312.846 -#endif // __SYMBIAN32__
1312.847 -    iter_type __tmp = _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.848 -    if (!(__err & ios_base::failbit))
1312.849 -      __p = __REINTERPRET_CAST(void*,(long)__val);
1312.850 -#ifdef __SYMBIAN32__
1312.851 -    __str.flags(__save_flags);
1312.852 -#endif //__SYMBIAN32__
1312.853 -    return __tmp;
1312.854 -  }
1312.855 -
1312.856 -
1312.857 -#ifdef _STLP_LONG_LONG
1312.858 -
1312.859 -template <class _CharT, class _InputIter>
1312.860 -_InputIter
1312.861 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.862 -                                    ios_base::iostate& __err,
1312.863 -                                    _STLP_LONG_LONG& __val) const {
1312.864 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.865 -}
1312.866 -
1312.867 -template <class _CharT, class _InputIter>
1312.868 -_InputIter
1312.869 -num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1312.870 -                                    ios_base::iostate& __err,
1312.871 -                                    unsigned _STLP_LONG_LONG& __val) const {
1312.872 -  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1312.873 -}
1312.874 -
1312.875 -#endif /* _STLP_LONG_LONG */
1312.876 -
1312.877 -_STLP_END_NAMESPACE
1312.878 -
1312.879 -# endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */
1312.880 -
1312.881 -#endif /* _STLP_NUMERIC_FACETS_C */
1312.882 -
1312.883 -// Local Variables:
1312.884 -// mode:C++
1312.885 -// End:
  1313.1 --- a/epoc32/include/stdapis/stlport/stl/_num_get.h	Tue Mar 16 16:12:26 2010 +0000
  1313.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1313.3 @@ -1,316 +0,0 @@
  1313.4 -/*
  1313.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1313.6 - * Copyright (c) 1999
  1313.7 - * Silicon Graphics Computer Systems, Inc.
  1313.8 - *
  1313.9 - * Copyright (c) 1999 
 1313.10 - * Boris Fomitchev
 1313.11 - *
 1313.12 - * This material is provided "as is", with absolutely no warranty expressed
 1313.13 - * or implied. Any use is at your own risk.
 1313.14 - *
 1313.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1313.16 - * without fee, provided the above notices are retained on all copies.
 1313.17 - * Permission to modify the code and to distribute modified code is granted,
 1313.18 - * provided the above notices are retained, and a notice that the code was
 1313.19 - * modified is included with the above copyright notice.
 1313.20 - *
 1313.21 - */ 
 1313.22 -// WARNING: This is an internal header file, included by other C++
 1313.23 -// standard library headers.  You should not attempt to use this header
 1313.24 -// file directly.
 1313.25 -
 1313.26 -
 1313.27 -#ifndef _STLP_INTERNAL_NUM_GET_H
 1313.28 -#define _STLP_INTERNAL_NUM_GET_H
 1313.29 -
 1313.30 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1313.31 -# include <stl/_istreambuf_iterator.h>
 1313.32 -#endif
 1313.33 -
 1313.34 -# ifndef _STLP_C_LOCALE_H
 1313.35 -#  include <stl/c_locale.h>
 1313.36 -# endif
 1313.37 -
 1313.38 -#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1313.39 -# include <stl/_numpunct.h>
 1313.40 -#endif
 1313.41 -#ifndef _STLP_INTERNAL_CTYPE_H
 1313.42 -# include <stl/_ctype.h>
 1313.43 -#endif
 1313.44 -
 1313.45 -_STLP_BEGIN_NAMESPACE
 1313.46 -
 1313.47 -//----------------------------------------------------------------------
 1313.48 -// num_get facets
 1313.49 -
 1313.50 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
 1313.51 -template <class _CharT, class _InputIter>  
 1313.52 -# else
 1313.53 -template <class _CharT, class _InputIter = istreambuf_iterator<_CharT> >  
 1313.54 -# endif
 1313.55 -#ifdef __SYMBIAN32__
 1313.56 -class num_get : public locale::facet
 1313.57 -#else
 1313.58 -class num_get: public locale::facet
 1313.59 -#endif
 1313.60 -{
 1313.61 -  friend class _Locale;
 1313.62 -public:
 1313.63 -  typedef _CharT     char_type;
 1313.64 -  typedef _InputIter iter_type;
 1313.65 -
 1313.66 -  explicit   num_get(size_t __refs = 0): locale::facet(__refs) {}
 1313.67 -    
 1313.68 -# ifndef _STLP_NO_BOOL
 1313.69 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1313.70 -                ios_base::iostate& __err, bool& __val) const {
 1313.71 -    return do_get(__stl_in, __end, __str, __err, __val);
 1313.72 -  }
 1313.73 -# endif
 1313.74 -
 1313.75 -//# ifdef _STLP_FIX_LIBRARY_ISSUES
 1313.76 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1313.77 -                ios_base::iostate& __err, short& __val) const {
 1313.78 -    return do_get(__stl_in, __end, __str, __err, __val);
 1313.79 -  }
 1313.80 -
 1313.81 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1313.82 -                ios_base::iostate& __err, int& __val) const {
 1313.83 -    return do_get(__stl_in, __end, __str, __err, __val);
 1313.84 -  }
 1313.85 -//# endif
 1313.86 -
 1313.87 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1313.88 -                ios_base::iostate& __err, long& __val) const {
 1313.89 -    return do_get(__stl_in, __end, __str, __err, __val);
 1313.90 -  }
 1313.91 -
 1313.92 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1313.93 -                ios_base::iostate& __err, unsigned short& __val) const {
 1313.94 -    return do_get(__stl_in, __end, __str, __err, __val);
 1313.95 -  }
 1313.96 -
 1313.97 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1313.98 -                ios_base::iostate& __err, unsigned int& __val) const {
 1313.99 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.100 -  }
1313.101 -
1313.102 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.103 -                ios_base::iostate& __err, unsigned long& __val) const {
1313.104 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.105 -  }
1313.106 -
1313.107 -#ifdef _STLP_LONG_LONG
1313.108 -
1313.109 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.110 -                ios_base::iostate& __err, _STLP_LONG_LONG& __val) const {
1313.111 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.112 -  }
1313.113 -
1313.114 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.115 -                ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const {
1313.116 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.117 -  }
1313.118 -
1313.119 -#endif /* _STLP_LONG_LONG */
1313.120 -
1313.121 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.122 -                 ios_base::iostate& __err, float& __val) const {
1313.123 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.124 -  }
1313.125 -
1313.126 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.127 -                ios_base::iostate& __err, double& __val) const {
1313.128 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.129 -  }
1313.130 -
1313.131 -# ifndef _STLP_NO_LONG_DOUBLE
1313.132 -
1313.133 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.134 -                ios_base::iostate& __err, long double& __val) const {
1313.135 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.136 -  }
1313.137 -# endif
1313.138 -
1313.139 -  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.140 -                ios_base::iostate& __err, void*& __val) const {
1313.141 -    return do_get(__stl_in, __end, __str, __err, __val);
1313.142 -  }
1313.143 -
1313.144 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1313.145 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1313.146 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* );
1313.147 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1313.148 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* );
1313.149 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char**);
1313.150 -    
1313.151 -#else
1313.152 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1313.153 -#endif
1313.154 -
1313.155 -protected:
1313.156 -  ~num_get() {}
1313.157 -
1313.158 -  typedef string               string_type; 
1313.159 -  typedef ctype<_CharT>        _Ctype;
1313.160 -  typedef numpunct<_CharT>     _Numpunct;
1313.161 -
1313.162 -# ifndef _STLP_NO_BOOL
1313.163 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end,
1313.164 -                           ios_base& __str, ios_base::iostate& __err, bool& __val) const;
1313.165 -# endif
1313.166 -
1313.167 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.168 -                           ios_base::iostate& __err, long& __val) const;
1313.169 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.170 -                           ios_base::iostate& __err, unsigned short& __val) const;
1313.171 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.172 -                           ios_base::iostate& __err, unsigned int& __val) const;
1313.173 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.174 -                           ios_base::iostate& __err, unsigned long& __val) const;
1313.175 -//# ifdef _STLP_FIX_LIBRARY_ISSUES
1313.176 -  // issue 118 : those are actually not supposed to be here
1313.177 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.178 -                           ios_base::iostate& __err, short& __val) const;
1313.179 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.180 -                           ios_base::iostate& __err, int& __val) const;
1313.181 -//# endif
1313.182 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.183 -                          ios_base::iostate& __err, float& __val) const;
1313.184 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.185 -                           ios_base::iostate& __err, double& __val) const;
1313.186 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.187 -                           ios_base::iostate& __err,
1313.188 -                           void*& __p) const;
1313.189 -
1313.190 -#ifndef _STLP_NO_LONG_DOUBLE
1313.191 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.192 -                           ios_base::iostate& __err, long double& __val) const;
1313.193 -#endif /* _STLP_NO_LONG_DOUBLE */
1313.194 -
1313.195 -#ifdef _STLP_LONG_LONG
1313.196 -
1313.197 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.198 -                            ios_base::iostate& __err, _STLP_LONG_LONG& __val) const;
1313.199 -  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1313.200 -                           ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const;
1313.201 -#endif /* _STLP_LONG_LONG */
1313.202 -
1313.203 -};
1313.204 -
1313.205 -
1313.206 -# ifdef _STLP_USE_TEMPLATE_EXPORT
1313.207 -_STLP_EXPORT_TEMPLATE_CLASS num_get<char, istreambuf_iterator<char, char_traits<char> > >;
1313.208 -// _STLP_EXPORT_TEMPLATE_CLASS num_get<char, const char*>;
1313.209 -#  ifndef _STLP_NO_WCHAR_T
1313.210 -_STLP_EXPORT_TEMPLATE_CLASS num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1313.211 -// _STLP_EXPORT_TEMPLATE_CLASS num_get<wchar_t, const wchar_t*>;
1313.212 -#  endif /* _STLP_NO_WCHAR_T */
1313.213 -# endif
1313.214 -
1313.215 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
1313.216 -
1313.217 -_STLP_DECLSPEC extern bool  _STLP_CALL __valid_grouping(const char*, const char*, const char*, const char*);
1313.218 -
1313.219 -template <class _InputIter, class _Integer>
1313.220 -bool _STLP_CALL
1313.221 -__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val);
1313.222 -
1313.223 -inline bool _STLP_CALL __get_fdigit(char& __c, const char*);
1313.224 -inline bool _STLP_CALL __get_fdigit_or_sep(char& __c, char __sep, const char *);
1313.225 -# ifndef _STLP_NO_WCHAR_T
1313.226 -inline bool _STLP_CALL __get_fdigit(wchar_t&, const wchar_t*);
1313.227 -inline bool _STLP_CALL __get_fdigit_or_sep(wchar_t&, wchar_t, const wchar_t*);
1313.228 -# endif
1313.229 -
1313.230 -inline void  _STLP_CALL
1313.231 -_Initialize_get_float(const ctype<char>&,
1313.232 -                       char& Plus, char& Minus,
1313.233 -                       char& pow_e, char& pow_E,
1313.234 -                       char*)
1313.235 -{
1313.236 -  Plus = '+';
1313.237 -  Minus = '-';
1313.238 -  pow_e = 'e';
1313.239 -  pow_E = 'E';
1313.240 -}
1313.241 -// Helper functions for _M_do_get_float.
1313.242 -
1313.243 -# ifndef _STLP_NO_WCHAR_T
1313.244 -
1313.245 -inline void  _STLP_CALL
1313.246 -_Initialize_get_float( const ctype<wchar_t>& ct,
1313.247 -                       wchar_t& Plus, wchar_t& Minus,
1313.248 -                       wchar_t& pow_e, wchar_t& pow_E,
1313.249 -                       wchar_t* digits)
1313.250 -{
1313.251 -  char ndigits[11] = "0123456789";
1313.252 -  Plus  = ct.widen('+');
1313.253 -  Minus = ct.widen('-');
1313.254 -  pow_e = ct.widen('e');
1313.255 -  pow_E = ct.widen('E');
1313.256 -  ct.widen(ndigits + 0, ndigits + 10, digits);
1313.257 -}
1313.258 -
1313.259 -# endif /* WCHAR_T */
1313.260 -
1313.261 -#ifdef __SYMBIAN32__
1313.262 -template<class _CharT>
1313.263 -inline void  _STLP_CALL
1313.264 -_Initialize_get_float( const ctype<_CharT>& ct,
1313.265 -                       _CharT& Plus, _CharT& Minus,
1313.266 -                       _CharT& pow_e, _CharT& pow_E,
1313.267 -                       _CharT* digits)
1313.268 -{
1313.269 -  char ndigits[11] = "0123456789";
1313.270 -  Plus  = ct.widen('+');
1313.271 -  Minus = ct.widen('-');
1313.272 -  pow_e = ct.widen('e');
1313.273 -  pow_E = ct.widen('E');
1313.274 -  ct.widen(ndigits + 0, ndigits + 10, digits);
1313.275 -}
1313.276 -#endif
1313.277 -
1313.278 -int  _STLP_CALL __string_to_float(const string&, float&);
1313.279 -int  _STLP_CALL __string_to_float(const string&, double&);
1313.280 -# ifndef _STLP_NO_LONG_DOUBLE
1313.281 -int  _STLP_CALL __string_to_float(const string&, long double&);
1313.282 -# endif
1313.283 -# endif
1313.284 -
1313.285 -# if defined (__BORLANDC__) && defined (_RTLDLL)
1313.286 -inline void _Stl_loc_init_num_get() {  
1313.287 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1313.288 -  num_get<char, istreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index = 12;
1313.289 -  num_get<char, const char*>::GetFacetLocaleId()._M_index = 13;
1313.290 -#else
1313.291 -  num_get<char, istreambuf_iterator<char, char_traits<char> > >::id._M_index = 12;
1313.292 -  num_get<char, const char*>::id._M_index = 13;
1313.293 -#endif
1313.294 -# ifndef _STLP_NO_WCHAR_T
1313.295 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1313.296 -  num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::GetFacetLocaleId()._M_index = 31;
1313.297 -  num_get<wchar_t, const wchar_t*>::GetFacetLocaleId()._M_index = 32;
1313.298 -#else
1313.299 -  num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index = 31;
1313.300 -  num_get<wchar_t, const wchar_t*>::id._M_index = 32;
1313.301 -#endif
1313.302 -# endif
1313.303 -} 
1313.304 -# endif
1313.305 -
1313.306 -_STLP_DECLSPEC unsigned char* _STLP_CALL __get_digit_val_table(void);
1313.307 -_STLP_DECLSPEC char* _STLP_CALL __get_narrow_atoms(void);
1313.308 -_STLP_END_NAMESPACE
1313.309 -
1313.310 -#  if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && ! defined (_STLP_LINK_TIME_INSTANTIATION)
1313.311 -#   include <stl/_num_get.c>
1313.312 -#  endif
1313.313 -
1313.314 -#endif /* _STLP_INTERNAL_NUM_GET_H */
1313.315 -
1313.316 -// Local Variables:
1313.317 -// mode:C++
1313.318 -// End:
1313.319 -
  1314.1 --- a/epoc32/include/stdapis/stlport/stl/_num_put.c	Tue Mar 16 16:12:26 2010 +0000
  1314.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1314.3 @@ -1,673 +0,0 @@
  1314.4 -/*
  1314.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1314.6 - *
  1314.7 - * Copyright (c) 1999
  1314.8 - * Silicon Graphics Computer Systems, Inc.
  1314.9 - *
 1314.10 - * Copyright (c) 1999 
 1314.11 - * Boris Fomitchev
 1314.12 - *
 1314.13 - * This material is provided "as is", with absolutely no warranty expressed
 1314.14 - * or implied. Any use is at your own risk.
 1314.15 - *
 1314.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1314.17 - * without fee, provided the above notices are retained on all copies.
 1314.18 - * Permission to modify the code and to distribute modified code is granted,
 1314.19 - * provided the above notices are retained, and a notice that the code was
 1314.20 - * modified is included with the above copyright notice.
 1314.21 - *
 1314.22 - */ 
 1314.23 -#ifndef _STLP_NUM_PUT_C
 1314.24 -#define _STLP_NUM_PUT_C
 1314.25 -
 1314.26 -#ifndef _STLP_INTERNAL_NUM_PUT_H
 1314.27 -# include <stl/_num_put.h>
 1314.28 -#endif
 1314.29 -
 1314.30 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1314.31 -
 1314.32 -#ifndef _STLP_LIMITS_H
 1314.33 -# include <stl/_limits.h>
 1314.34 -#endif
 1314.35 -
 1314.36 -_STLP_BEGIN_NAMESPACE
 1314.37 -
 1314.38 -// _M_do_put_float and its helper functions.  Strategy: write the output
 1314.39 -// to a buffer of char, transform the buffer to _CharT, and then copy
 1314.40 -// it to the output.
 1314.41 -
 1314.42 -template <class _CharT, class _OutputIter,class _Float>
 1314.43 -_OutputIter _STLP_CALL
 1314.44 -_M_do_put_float(_OutputIter __s, ios_base& __f, _CharT __fill,_Float    __x);
 1314.45 -
 1314.46 -
 1314.47 -//----------------------------------------------------------------------
 1314.48 -// num_put facet
 1314.49 -
 1314.50 -template <class _CharT, class _OutputIter>
 1314.51 -_OutputIter  _STLP_CALL
 1314.52 -__copy_float_and_fill(const _CharT* __first, const _CharT* __last,
 1314.53 -                      _OutputIter __stl_out,
 1314.54 -                      ios_base::fmtflags __flags,
 1314.55 -                      streamsize __width, _CharT __fill,
 1314.56 -                      _CharT __xplus, _CharT __xminus) {
 1314.57 -  if (__width <= __last - __first)
 1314.58 -    return copy(__first, __last, __stl_out);
 1314.59 -  else {
 1314.60 -    streamsize __pad = __width - (__last - __first);
 1314.61 -    ios_base::fmtflags __dir = __flags & ios_base::adjustfield;
 1314.62 -
 1314.63 -    if (__dir == ios_base::left) {
 1314.64 -      __stl_out = copy(__first, __last, __stl_out);
 1314.65 -      return fill_n(__stl_out, __pad, __fill);
 1314.66 -    }
 1314.67 -    else if (__dir == ios_base::internal && __first != __last &&
 1314.68 -             (*__first == __xplus || *__first == __xminus)) {
 1314.69 -      *__stl_out++ = *__first++;
 1314.70 -      __stl_out = fill_n(__stl_out, __pad, __fill);
 1314.71 -      return copy(__first, __last, __stl_out);
 1314.72 -    }
 1314.73 -    else {
 1314.74 -      __stl_out = fill_n(__stl_out, __pad, __fill);
 1314.75 -      return copy(__first, __last, __stl_out);
 1314.76 -    }
 1314.77 -  }
 1314.78 -}
 1314.79 -
 1314.80 -#ifndef _STLP_NO_WCHAR_T
 1314.81 -// Helper routine for wchar_t
 1314.82 -template <class _OutputIter>
 1314.83 -_OutputIter  _STLP_CALL
 1314.84 -__put_float(char* __ibuf, char* __iend, _OutputIter __stl_out,
 1314.85 -            ios_base& __f, wchar_t __fill,
 1314.86 -            wchar_t __decimal_point,
 1314.87 -            wchar_t __sep, const string& __grouping)
 1314.88 -{
 1314.89 -  //const ctype<wchar_t>& __ct = *(ctype<wchar_t>*)__f._M_ctype_facet() ;
 1314.90 -    const ctype<wchar_t>& __ct  = use_facet< ctype<wchar_t> >(__f.getloc());
 1314.91 -
 1314.92 - // wchar_t __wbuf[128]; //stdcxx fix
 1314.93 -  wchar_t __wbuf[256+10];
 1314.94 -  wchar_t* __eend = __convert_float_buffer(__ibuf, __iend, __wbuf,
 1314.95 -                                           __ct, __decimal_point);
 1314.96 -  if (!__grouping.empty()) {
 1314.97 -    // In order to do separator-insertion only to the left of the
 1314.98 -    // decimal point, we adjust the size of the first (right-most)
 1314.99 -    // group.  We need to be careful if there is only one entry in
1314.100 -    // grouping:  in this case we need to duplicate the first entry.
1314.101 -
1314.102 -    string __new_grouping = __grouping;
1314.103 -    wchar_t* __decimal_pos = find(__wbuf, __eend, __decimal_point);
1314.104 -    if (__grouping.size() == 1)
1314.105 -      __new_grouping.push_back(__grouping[0]);
1314.106 -
1314.107 -	// dwa 1/24/00 - try as I might, there doesn't seem to be a way
1314.108 -    // to suppress the warning
1314.109 -    __new_grouping[0] += __STATIC_CAST(char, __eend - __decimal_pos);
1314.110 -    ptrdiff_t __len = __insert_grouping(__wbuf, __eend, __new_grouping,
1314.111 -					__sep,
1314.112 -					__ct.widen('+'), __ct.widen('-'),
1314.113 -					0);
1314.114 -    __eend = __wbuf + __len;
1314.115 -  }
1314.116 -
1314.117 -  return __copy_float_and_fill(__wbuf, __eend, __stl_out,
1314.118 -                               __f.flags(), __f.width(0), __fill,
1314.119 -                               __ct.widen('+'), __ct.widen('-')); 
1314.120 -}
1314.121 -# endif /* WCHAR_T */
1314.122 -
1314.123 -#ifdef __SYMBIAN32__
1314.124 -template<class _CharT>
1314.125 -ptrdiff_t _STLP_CALL
1314.126 -__insert_grouping(_CharT * first, _CharT * last, const string& grouping,
1314.127 -		  _CharT separator, _CharT Plus, _CharT Minus, int basechars)
1314.128 -{
1314.129 -	int length = last-first;
1314.130 -	ptrdiff_t res;	
1314.131 -	char*	str = new char(length+64); //morespace for seperators
1314.132 -	memset(str,'\0',length+64);
1314.133 -	memcpy(str,first, length);
1314.134 -	char _separator = (char)separator;
1314.135 -	char _Plus = (char)Plus;
1314.136 -	char _Minus = (char)Minus;
1314.137 -	
1314.138 -  	res = __insert_grouping(str, str+length, grouping, 
1314.139 -			       _separator, _Plus, _Minus, basechars);
1314.140 -	memcpy(first,str,res);
1314.141 -	delete str;
1314.142 -	return res;
1314.143 -	
1314.144 -}
1314.145 -
1314.146 -#endif
1314.147 -// Helper routine for char
1314.148 -template <class _OutputIter>
1314.149 -_OutputIter  _STLP_CALL
1314.150 -__put_float(char* __ibuf, char* __iend, _OutputIter __stl_out,
1314.151 -            ios_base& __f, char __fill,
1314.152 -            char __decimal_point,
1314.153 -            char __sep, const string& __grouping)
1314.154 -{
1314.155 -  __adjust_float_buffer(__ibuf, __iend, __decimal_point);
1314.156 -  if (!__grouping.empty()) {
1314.157 -    string __new_grouping = __grouping;
1314.158 -    const char * __decimal_pos = find(__ibuf, __iend, __decimal_point);
1314.159 -    if (__grouping.size() == 1)
1314.160 -      __new_grouping.push_back(__grouping[0]);
1314.161 -    __new_grouping[0] += __STATIC_CAST(char, (__iend - __decimal_pos));
1314.162 -    ptrdiff_t __len = __insert_grouping(__ibuf, __iend, __new_grouping,
1314.163 -					__sep, '+', '-', 0);
1314.164 -    __iend = __ibuf + __len;
1314.165 -  }
1314.166 -
1314.167 -  return __copy_float_and_fill(__ibuf, __iend, __stl_out,
1314.168 -                               __f.flags(), __f.width(0), __fill, '+', '-');
1314.169 -}
1314.170 -
1314.171 -#ifdef __SYMBIAN32__
1314.172 -
1314.173 -template <class _CharT, class _OutputIter>
1314.174 -_OutputIter  _STLP_CALL
1314.175 -__put_float(char* __ibuf, char* __iend, _OutputIter __stl_out,
1314.176 -            ios_base& __f, _CharT __fill,
1314.177 -            _CharT __decimal_point,
1314.178 -            _CharT __sep, const string& __grouping)
1314.179 -{
1314.180 -  __adjust_float_buffer(__ibuf, __iend, __decimal_point);
1314.181 -  if (!__grouping.empty()) {
1314.182 -    string __new_grouping = __grouping;
1314.183 -    const char * __decimal_pos = find(__ibuf, __iend, __decimal_point);
1314.184 -    if (__grouping.size() == 1)
1314.185 -      __new_grouping.push_back(__grouping[0]);
1314.186 -    __new_grouping[0] += __STATIC_CAST(char, (__iend - __decimal_pos));
1314.187 -    ptrdiff_t __len = __insert_grouping(__ibuf, __iend, __new_grouping,
1314.188 -					__sep, '+', '-', 0);
1314.189 -    __iend = __ibuf + __len;
1314.190 -  }
1314.191 -
1314.192 -	_CharT __wbuf[64];
1314.193 -	locale __loc = __f.getloc();
1314.194 -	const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
1314.195 -	__ct.widen(__ibuf, __iend, __wbuf);
1314.196 -	
1314.197 - 	ptrdiff_t __len  =  __iend - __ibuf; 
1314.198 -  return __copy_float_and_fill(__wbuf, __wbuf+__len, __stl_out,
1314.199 -                               __f.flags(), __f.width(0), __fill, (_CharT)'+', (_CharT)'-');
1314.200 -}
1314.201 -
1314.202 -
1314.203 -#endif
1314.204 -template <class _CharT, class _OutputIter, class _Float>
1314.205 -_OutputIter _STLP_CALL
1314.206 -_M_do_put_float(_OutputIter __s, ios_base& __f,
1314.207 -                _CharT __fill, _Float __x)
1314.208 -{
1314.209 -  string __buf;
1314.210 -  __buf.reserve(256+10); //+2 - 10/1/07
1314.211 -  __write_float(__buf, __f.flags(), (int)__f.precision(), __x);
1314.212 -
1314.213 -  //const numpunct<_CharT>& __np = *(const numpunct<_CharT>*)__f._M_numpunct_facet();
1314.214 -  const numpunct<_CharT>& __np = use_facet< numpunct<_CharT> >(__f.getloc());
1314.215 -  
1314.216 -  return __put_float(__CONST_CAST(char*, __buf.c_str()), 
1314.217 -                     __CONST_CAST(char*, __buf.c_str()) + __buf.size(),
1314.218 -                     __s, __f, __fill,
1314.219 -                     __np.decimal_point(),
1314.220 -	//	                 __np.thousands_sep(), __f._M_grouping()); //stdcxx fix - 17/1/07
1314.221 -			__np.thousands_sep(), __np.grouping());
1314.222 -}
1314.223 -
1314.224 -// _M_do_put_integer and its helper functions.
1314.225 -
1314.226 -template <class _CharT, class _OutputIter>
1314.227 -_OutputIter _STLP_CALL
1314.228 -__copy_integer_and_fill(const _CharT* __buf, ptrdiff_t __len,
1314.229 -                        _OutputIter __stl_out,
1314.230 -                        ios_base::fmtflags __flg, streamsize __wid, _CharT __fill,
1314.231 -                        _CharT __xplus, _CharT __xminus)
1314.232 -{
1314.233 -  if (__len >= __wid)
1314.234 -    return copy(__buf, __buf + __len, __stl_out);
1314.235 -  else {
1314.236 -    ptrdiff_t __pad = __wid - __len;
1314.237 -    ios_base::fmtflags __dir = __flg & ios_base::adjustfield;
1314.238 -
1314.239 -    if (__dir == ios_base::left) {
1314.240 -      __stl_out = copy(__buf, __buf + __len, __stl_out);
1314.241 -      return fill_n(__stl_out, __pad, __fill);
1314.242 -    }
1314.243 -    else if (__dir == ios_base::internal && __len != 0 &&
1314.244 -             (__buf[0] == __xplus || __buf[0] == __xminus)) {
1314.245 -      *__stl_out++ = __buf[0];
1314.246 -      __stl_out = fill_n(__stl_out, __pad, __fill);
1314.247 -      return copy(__buf + 1, __buf + __len, __stl_out);
1314.248 -    }
1314.249 -    else if (__dir == ios_base::internal && __len >= 2 &&
1314.250 -             (__flg & ios_base::showbase) &&
1314.251 -             (__flg & ios_base::basefield) == ios_base::hex) {
1314.252 -      *__stl_out++ = __buf[0];
1314.253 -      *__stl_out++ = __buf[1];
1314.254 -      __stl_out = fill_n(__stl_out, __pad, __fill);
1314.255 -      return copy(__buf + 2, __buf + __len, __stl_out);
1314.256 -    }
1314.257 -    else {
1314.258 -      __stl_out = fill_n(__stl_out, __pad, __fill);
1314.259 -      return copy(__buf, __buf + __len, __stl_out);
1314.260 -    }
1314.261 -  }
1314.262 -}
1314.263 -
1314.264 -#ifndef _STLP_NO_WCHAR_T
1314.265 -// Helper function for wchar_t
1314.266 -template <class _OutputIter>
1314.267 -_OutputIter _STLP_CALL
1314.268 -__put_integer(char* __buf, char* __iend, _OutputIter __s,
1314.269 -              ios_base& __f,
1314.270 -              ios_base::fmtflags __flags, wchar_t __fill)
1314.271 -{
1314.272 -  locale __loc = __f.getloc();
1314.273 -   const ctype<wchar_t>& __ct = use_facet<ctype<wchar_t> >(__loc);
1314.274 -  //const ctype<wchar_t>& __ct = *(const ctype<wchar_t>*)__f._M_ctype_facet();
1314.275 -
1314.276 -  wchar_t __xplus  = __ct.widen('+');
1314.277 -  wchar_t __xminus = __ct.widen('-');
1314.278 -
1314.279 -  wchar_t __wbuf[64];
1314.280 -  __ct.widen(__buf, __iend, __wbuf);
1314.281 -  ptrdiff_t __len = __iend - __buf;
1314.282 -  wchar_t* __eend = __wbuf + __len;
1314.283 -
1314.284 -    const numpunct<wchar_t>& __np = use_facet<numpunct<wchar_t> >(__loc);
1314.285 -    const string& __grouping = __np.grouping();
1314.286 -
1314.287 -  //const numpunct<wchar_t>& __np = *(const numpunct<wchar_t>*)__f._M_numpunct_facet();
1314.288 - // const string& __grouping = __f._M_grouping();
1314.289 -
1314.290 -  if (!__grouping.empty()) {
1314.291 -    int __basechars;
1314.292 -    if (__flags & ios_base::showbase)
1314.293 -      switch (__flags & ios_base::basefield) {
1314.294 -	case ios_base::hex: __basechars = 2; break;
1314.295 -	case ios_base::oct: __basechars = 1; break;
1314.296 -	default: __basechars = 0;
1314.297 -      }
1314.298 -    else
1314.299 -      __basechars = 0;
1314.300 -
1314.301 -    __len = __insert_grouping(__wbuf, __eend, __grouping, __np.thousands_sep(),
1314.302 -			      __xplus, __xminus, __basechars);
1314.303 -  }
1314.304 -
1314.305 -  return __copy_integer_and_fill((wchar_t*)__wbuf, __len, __s,
1314.306 -                                 __flags, __f.width(0), __fill, __xplus, __xminus);
1314.307 -}
1314.308 -#endif
1314.309 -
1314.310 -#ifdef	__SYMBIAN32__
1314.311 -template <class _CharT, class _OutputIter>
1314.312 -_OutputIter _STLP_CALL
1314.313 -__put_integer(char* __buf, char* __iend, _OutputIter __s,
1314.314 -              ios_base& __f,
1314.315 -              ios_base::fmtflags __flags, _CharT __fill)
1314.316 -{
1314.317 -  locale __loc = __f.getloc();
1314.318 -   const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
1314.319 -  //const ctype<wchar_t>& __ct = *(const ctype<wchar_t>*)__f._M_ctype_facet();
1314.320 -
1314.321 -  _CharT __xplus  = '+';
1314.322 -  _CharT __xminus = '-';
1314.323 -
1314.324 -  _CharT __wbuf[64];
1314.325 -  
1314.326 -  ptrdiff_t __len = __iend - __buf;
1314.327 -  _CharT* __eend = __wbuf + __len;
1314.328 -
1314.329 -
1314.330 -    const numpunct<char>& __np = use_facet<numpunct<char> >(__loc);
1314.331 -    const string& __grouping = __np.grouping();
1314.332 -
1314.333 -  //const numpunct<wchar_t>& __np = *(const numpunct<wchar_t>*)__f._M_numpunct_facet();
1314.334 - // const string& __grouping = __f._M_grouping();
1314.335 -
1314.336 -  if (!__grouping.empty()) {
1314.337 -    int __basechars;
1314.338 -    if (__flags & ios_base::showbase)
1314.339 -      switch (__flags & ios_base::basefield) {
1314.340 -	case ios_base::hex: __basechars = 2; break;
1314.341 -	case ios_base::oct: __basechars = 1; break;
1314.342 -	default: __basechars = 0;
1314.343 -      }
1314.344 -    else
1314.345 -      __basechars = 0;
1314.346 -
1314.347 -    __len = __insert_grouping(__buf, __iend, __grouping, __np.thousands_sep(),
1314.348 -			     __ct.narrow( __xplus, '+'), __ct.narrow(__xminus, '-'), __basechars);
1314.349 -	__ct.widen(__buf, __iend, __wbuf);
1314.350 -	
1314.351 -  }
1314.352 -
1314.353 -  return __copy_integer_and_fill(__wbuf, __len, __s,
1314.354 -                                 __flags, __f.width(0), __fill, __xplus, __xminus);
1314.355 -}
1314.356 -
1314.357 -
1314.358 -#endif
1314.359 -// Helper function for char
1314.360 -template <class _OutputIter>
1314.361 -_OutputIter _STLP_CALL
1314.362 -__put_integer(char* __buf, char* __iend, _OutputIter __s,
1314.363 -              ios_base& __f, ios_base::fmtflags __flags, char __fill)
1314.364 -{
1314.365 -  ptrdiff_t __len = __iend - __buf;
1314.366 -  char __grpbuf[64];
1314.367 -
1314.368 -  //  const numpunct<char>& __np = use_facet<numpunct<char> >(__f.getloc());
1314.369 -  //  const string& __grouping = __np.grouping();
1314.370 -
1314.371 -  const numpunct<char>& __np = *(const numpunct<char>*)__f._M_numpunct_facet();
1314.372 -//  const string& __grouping = __f._M_grouping(); //stdcxx fix, 17/1/07
1314.373 -  const string& __grouping = __np.grouping();
1314.374 -
1314.375 -  if (!__grouping.empty()) {
1314.376 -    int __basechars;
1314.377 -    if (__flags & ios_base::showbase)
1314.378 -      switch (__flags & ios_base::basefield) {
1314.379 -	case ios_base::hex: __basechars = 2; break;
1314.380 -	case ios_base::oct: __basechars = 1; break;
1314.381 -	default: __basechars = 0;
1314.382 -      }
1314.383 -    else
1314.384 -      __basechars = 0;
1314.385 - 
1314.386 -     // make sure there is room at the end of the buffer
1314.387 -     // we pass to __insert_grouping
1314.388 -
1314.389 -    copy(__buf, __iend, (char *) __grpbuf);
1314.390 -    __buf = __grpbuf;
1314.391 -    __iend = __grpbuf + __len; 
1314.392 -    __len = __insert_grouping(__buf, __iend, __grouping, __np.thousands_sep(), 
1314.393 -                              '+', '-', __basechars);
1314.394 -  }
1314.395 -  
1314.396 -  return __copy_integer_and_fill(__buf, __len, __s, __flags, __f.width(0), __fill, '+', '-');
1314.397 -}
1314.398 -
1314.399 -#ifdef _STLP_LONG_LONG
1314.400 -typedef _STLP_LONG_LONG __max_int_t;
1314.401 -typedef unsigned _STLP_LONG_LONG __umax_int_t;
1314.402 -#else
1314.403 -typedef long __max_int_t;
1314.404 -typedef unsigned long __umax_int_t;
1314.405 -#endif
1314.406 -
1314.407 -extern _STLP_DECLSPEC const char* get_hex_char_table_lo();
1314.408 -extern _STLP_DECLSPEC const char* get_hex_char_table_hi();
1314.409 -
1314.410 -template <class _Integer>
1314.411 -inline char* _STLP_CALL
1314.412 -__write_decimal_backward(char* __ptr, _Integer __x, ios_base::fmtflags __flags, const __true_type& /* is_signed */)
1314.413 -{
1314.414 -  const bool __negative = __x < 0 ;
1314.415 -  __max_int_t __temp = __x;
1314.416 -  __umax_int_t __utemp = __negative?-__temp:__temp;
1314.417 -
1314.418 -  for (; __utemp != 0; __utemp /= 10)
1314.419 -    *--__ptr = (int)(__utemp % 10) + '0';	  
1314.420 -  // put sign if needed or requested
1314.421 -  if (__negative)
1314.422 -    *--__ptr = '-';
1314.423 -  else if (__flags & ios_base::showpos)
1314.424 -    *--__ptr = '+';
1314.425 -  return __ptr;
1314.426 -}
1314.427 -
1314.428 -template <class _Integer>
1314.429 -inline char* _STLP_CALL
1314.430 -__write_decimal_backward(char* __ptr, _Integer __x, ios_base::fmtflags __flags, const __false_type& /* is_signed */)
1314.431 -{
1314.432 -  for (; __x != 0; __x /= 10)
1314.433 -    *--__ptr = (int)(__x % 10) + '0';
1314.434 -  // put sign if requested
1314.435 -  if (__flags & ios_base::showpos)
1314.436 -    *--__ptr = '+';
1314.437 -  return __ptr;
1314.438 -}
1314.439 -
1314.440 -template <class _Integer>
1314.441 -char* _STLP_CALL
1314.442 -__write_integer_backward(char* __buf, ios_base::fmtflags __flags, _Integer __x)
1314.443 -{
1314.444 -  char* __ptr = __buf;
1314.445 -  __umax_int_t __temp;
1314.446 -
1314.447 -  if (__x == 0) {
1314.448 -    *--__ptr = '0';
1314.449 -    if ((__flags & ios_base::showpos) && ( (__flags & (ios_base::hex | ios_base::oct)) == 0 ))
1314.450 -      *--__ptr = '+';
1314.451 -  }
1314.452 -  else {
1314.453 -    
1314.454 -    switch (__flags & ios_base::basefield) {
1314.455 -    case ios_base::oct:
1314.456 -      __temp = __x;
1314.457 -      // if the size of integer is less than 8, clear upper part
1314.458 -      if ( sizeof(__x) < 8  && sizeof(__umax_int_t) >= 8 )
1314.459 -        __temp &= 0xFFFFFFFF;
1314.460 -
1314.461 -      for (; __temp != 0; __temp >>=3)
1314.462 -        *--__ptr = (((unsigned)__temp)& 0x7) + '0';
1314.463 -      
1314.464 -      // put leading '0' is showbase is set
1314.465 -      if (__flags & ios_base::showbase)
1314.466 -        *--__ptr = '0';
1314.467 -      break;
1314.468 -    case ios_base::hex: 
1314.469 -      {
1314.470 -        const char* __table_ptr = (__flags & ios_base::uppercase) ? 
1314.471 -          get_hex_char_table_hi() : get_hex_char_table_lo();
1314.472 -      __temp = __x;
1314.473 -      // if the size of integer is less than 8, clear upper part
1314.474 -      if ( sizeof(__x) < 8  && sizeof(__umax_int_t) >= 8 )
1314.475 -        __temp &= 0xFFFFFFFF;
1314.476 -
1314.477 -        for (; __temp != 0; __temp >>=4)
1314.478 -          *--__ptr = __table_ptr[((unsigned)__temp & 0xF)];
1314.479 -        
1314.480 -        if (__flags & ios_base::showbase) {
1314.481 -          *--__ptr = __table_ptr[16];
1314.482 -          *--__ptr = '0';
1314.483 -        }
1314.484 -      }
1314.485 -      break;
1314.486 -    default: 
1314.487 -      {
1314.488 -#if defined(__HP_aCC) && (__HP_aCC == 1)
1314.489 -        bool _IsSigned = !((_Integer)-1 > 0);
1314.490 -	if (_IsSigned)
1314.491 -	  __ptr = __write_decimal_backward(__ptr, __x, __flags, __true_type() );
1314.492 -        else
1314.493 -	  __ptr = __write_decimal_backward(__ptr, __x, __flags, __false_type() );
1314.494 -#else
1314.495 -	typedef typename __bool2type<numeric_limits<_Integer>::is_signed>::_Ret _IsSigned;
1314.496 -	__ptr = __write_decimal_backward(__ptr, __x, __flags, _IsSigned());
1314.497 -# endif
1314.498 -      }
1314.499 -      break;
1314.500 -    }  
1314.501 -  }
1314.502 -  // return pointer to beginning of the string
1314.503 -  return __ptr;
1314.504 -}
1314.505 -
1314.506 -//
1314.507 -// num_put<>
1314.508 -//
1314.509 -
1314.510 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1314.511 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1314.512 -template <class _CharT, class _OutputIterator>
1314.513 -locale::id num_put<_CharT, _OutputIterator>::id;
1314.514 -#endif
1314.515 -# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1314.516 -
1314.517 -typedef num_put<char, const char*> num_put_char;
1314.518 -typedef num_put<char, char*> num_put_char_2;
1314.519 -typedef num_put<char, ostreambuf_iterator<char, char_traits<char> > > num_put_char_3;
1314.520 -typedef num_put<char, back_insert_iterator<string> > num_put_char_4;
1314.521 -
1314.522 -#ifndef __SYMBIAN32__
1314.523 -__DECLARE_INSTANCE(locale::id, num_put_char::id, );
1314.524 -__DECLARE_INSTANCE(locale::id, num_put_char_2::id, );
1314.525 -__DECLARE_INSTANCE(locale::id, num_put_char_3::id, );
1314.526 -#endif
1314.527 -
1314.528 -# ifndef _STLP_NO_WCHAR_T
1314.529 -
1314.530 -typedef num_put<wchar_t, const wchar_t*> num_put_wchar_t;
1314.531 -typedef num_put<wchar_t, wchar_t*> num_put_wchar_t_2;
1314.532 -typedef num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > num_put_wchar_t_3;
1314.533 -
1314.534 -#ifndef __SYMBIAN32__
1314.535 -__DECLARE_INSTANCE(locale::id, num_put_wchar_t::id, );
1314.536 -__DECLARE_INSTANCE(locale::id, num_put_wchar_t_2::id, );
1314.537 -__DECLARE_INSTANCE(locale::id, num_put_wchar_t_3::id, );
1314.538 -#endif
1314.539 -
1314.540 -# endif
1314.541 -
1314.542 -# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1314.543 -
1314.544 -// issue 118
1314.545 -
1314.546 -# ifndef _STLP_NO_BOOL
1314.547 -
1314.548 -template <class _CharT, class _OutputIter>  
1314.549 -_OutputIter 
1314.550 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, 
1314.551 -                                     char_type __fill,  bool __val) const {
1314.552 -  if (!(__f.flags() & ios_base::boolalpha))
1314.553 -    return this->do_put(__s, __f, __fill, __STATIC_CAST(long,__val));
1314.554 -
1314.555 -  locale __loc = __f.getloc();
1314.556 -    typedef numpunct<_CharT> _Punct;
1314.557 -    const _Punct& __np = use_facet<_Punct>(__loc);
1314.558 -
1314.559 -  //const numpunct<_CharT>& __np = *(const numpunct<_CharT>*)__f._M_numpunct_facet();
1314.560 -
1314.561 -  basic_string<_CharT> __str = __val ? __np.truename() : __np.falsename();
1314.562 -
1314.563 -  // Reuse __copy_integer_and_fill.  Since internal padding makes no
1314.564 -  // sense for bool, though, make sure we use something else instead.
1314.565 -  // The last two argument to __copy_integer_and_fill are dummies.
1314.566 -  ios_base::fmtflags __flags = __f.flags();
1314.567 -  if ((__flags & ios_base::adjustfield) == ios_base::internal)
1314.568 -    __flags = (__flags & ~ios_base::adjustfield) | ios_base::right;
1314.569 -
1314.570 -  return __copy_integer_and_fill(__str.c_str(), __str.size(), __s,
1314.571 -                                 __flags, __f.width(0), __fill,
1314.572 -                                 (_CharT) 0, (_CharT) 0);
1314.573 -}
1314.574 -
1314.575 -# endif
1314.576 -
1314.577 -template <class _CharT, class _OutputIter>
1314.578 -_OutputIter 
1314.579 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1314.580 -                                     long __val) const {
1314.581 -
1314.582 -  char __buf[64];               // Large enough for a base 8 64-bit integer,
1314.583 -                                // plus any necessary grouping.  
1314.584 -  ios_base::fmtflags __flags = __f.flags();
1314.585 -  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);  
1314.586 -  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1314.587 -}
1314.588 -
1314.589 -
1314.590 -template <class _CharT, class _OutputIter>  
1314.591 -_OutputIter 
1314.592 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1314.593 -				     unsigned long __val) const {
1314.594 -  char __buf[64];               // Large enough for a base 8 64-bit integer,
1314.595 -                                // plus any necessary grouping.
1314.596 -  
1314.597 -  ios_base::fmtflags __flags = __f.flags();
1314.598 -  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);
1314.599 -  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1314.600 -}
1314.601 -
1314.602 -template <class _CharT, class _OutputIter>  
1314.603 -_OutputIter 
1314.604 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1314.605 -                                     double __val) const {
1314.606 -  return _M_do_put_float(__s, __f, __fill, __val);
1314.607 -}
1314.608 -
1314.609 -#ifndef _STLP_NO_LONG_DOUBLE
1314.610 -template <class _CharT, class _OutputIter>  
1314.611 -_OutputIter 
1314.612 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1314.613 -                                     long double __val) const {
1314.614 -  return _M_do_put_float(__s, __f, __fill, __val);
1314.615 -}
1314.616 -#endif
1314.617 -
1314.618 -#ifdef _STLP_LONG_LONG
1314.619 -template <class _CharT, class _OutputIter>  
1314.620 -_OutputIter 
1314.621 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1314.622 -                                     _STLP_LONG_LONG __val) const {
1314.623 -  char __buf[64];               // Large enough for a base 8 64-bit integer,
1314.624 -                                // plus any necessary grouping.
1314.625 -  
1314.626 -  ios_base::fmtflags __flags = __f.flags();
1314.627 -  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);
1314.628 -  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1314.629 -}
1314.630 -
1314.631 -template <class _CharT, class _OutputIter>  
1314.632 -_OutputIter 
1314.633 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1314.634 -                                     unsigned _STLP_LONG_LONG __val) const {
1314.635 -  char __buf[64];               // Large enough for a base 8 64-bit integer,
1314.636 -                                // plus any necessary grouping.
1314.637 -  
1314.638 -  ios_base::fmtflags __flags = __f.flags();
1314.639 -  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);  
1314.640 -  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1314.641 -}
1314.642 -
1314.643 -#endif /* _STLP_LONG_LONG */
1314.644 -
1314.645 -
1314.646 -// lib.facet.num.put.virtuals "12 For conversion from void* the specifier is %p."
1314.647 -template <class _CharT, class _OutputIter>
1314.648 -_OutputIter
1314.649 -num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT /*__fill*/,
1314.650 -				     const void* __val) const {
1314.651 -  //const ctype<_CharT>& __c_type = *(const ctype<_CharT>*)__f._M_ctype_facet();
1314.652 -  const ctype<_CharT>& __c_type  = use_facet< ctype<_CharT> >(__f.getloc());
1314.653 -  ios_base::fmtflags __save_flags = __f.flags();
1314.654 -
1314.655 -  __f.setf(ios_base::hex, ios_base::basefield);
1314.656 -  __f.setf(ios_base::showbase);
1314.657 -  __f.setf(ios_base::internal, ios_base::adjustfield);
1314.658 -  //__f.width((sizeof(void*) * 2) + 2); // digits in pointer type plus '0x' prefix //making output equal to linux.
1314.659 -# if defined(_STLP_LONG_LONG) && !defined(__MRC__) //*ty 11/24/2001 - MrCpp can not cast from void* to long long
1314.660 -  _OutputIter result = this->do_put(__s, __f, __c_type.widen('0'), __REINTERPRET_CAST(unsigned _STLP_LONG_LONG,__val));
1314.661 -# else
1314.662 -  _OutputIter result = this->do_put(__s, __f, __c_type.widen('0'), __REINTERPRET_CAST(unsigned long,__val));
1314.663 -# endif
1314.664 -  __f.flags(__save_flags);
1314.665 -  return result;
1314.666 -}
1314.667 -
1314.668 -_STLP_END_NAMESPACE
1314.669 -
1314.670 -# endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */
1314.671 -
1314.672 -#endif /* _STLP_NUM_PUT_C */
1314.673 -
1314.674 -// Local Variables:
1314.675 -// mode:C++
1314.676 -// End:
  1315.1 --- a/epoc32/include/stdapis/stlport/stl/_num_put.h	Tue Mar 16 16:12:26 2010 +0000
  1315.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1315.3 @@ -1,202 +0,0 @@
  1315.4 -/*
  1315.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1315.6 - *
  1315.7 - * Copyright (c) 1999
  1315.8 - * Silicon Graphics Computer Systems, Inc.
  1315.9 - *
 1315.10 - * Copyright (c) 1999 
 1315.11 - * Boris Fomitchev
 1315.12 - *
 1315.13 - * This material is provided "as is", with absolutely no warranty expressed
 1315.14 - * or implied. Any use is at your own risk.
 1315.15 - *
 1315.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1315.17 - * without fee, provided the above notices are retained on all copies.
 1315.18 - * Permission to modify the code and to distribute modified code is granted,
 1315.19 - * provided the above notices are retained, and a notice that the code was
 1315.20 - * modified is included with the above copyright notice.
 1315.21 - *
 1315.22 - */ 
 1315.23 -// WARNING: This is an internal header file, included by other C++
 1315.24 -// standard library headers.  You should not attempt to use this header
 1315.25 -// file directly.
 1315.26 -
 1315.27 -
 1315.28 -#ifndef _STLP_INTERNAL_NUM_PUT_H
 1315.29 -#define _STLP_INTERNAL_NUM_PUT_H
 1315.30 -
 1315.31 -#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1315.32 -# include <stl/_numpunct.h>
 1315.33 -#endif
 1315.34 -#ifndef _STLP_INTERNAL_CTYPE_H
 1315.35 -# include <stl/_ctype.h>
 1315.36 -#endif
 1315.37 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1315.38 -# include <stl/_ostreambuf_iterator.h>
 1315.39 -#endif
 1315.40 -
 1315.41 -_STLP_BEGIN_NAMESPACE
 1315.42 -
 1315.43 -//----------------------------------------------------------------------
 1315.44 -// num_put facet
 1315.45 -
 1315.46 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
 1315.47 -template <class _CharT, class _OutputIter>  
 1315.48 -# else
 1315.49 -template <class _CharT, class _OutputIter = ostreambuf_iterator<_CharT, char_traits<_CharT> > >  
 1315.50 -# endif
 1315.51 -class num_put: public locale::facet
 1315.52 -{
 1315.53 -  friend class _Locale;
 1315.54 -public:
 1315.55 -  typedef _CharT      char_type;
 1315.56 -  typedef _OutputIter iter_type;
 1315.57 -
 1315.58 -  explicit  num_put(size_t __refs = 0) : _BaseFacet(__refs) {}
 1315.59 -
 1315.60 -# ifndef _STLP_NO_BOOL
 1315.61 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.62 -                bool __val) const {
 1315.63 -    return do_put(__s, __f, __fill, __val);
 1315.64 -  }
 1315.65 -# endif
 1315.66 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.67 -               long __val) const {
 1315.68 -    return do_put(__s, __f, __fill, __val);
 1315.69 -  }
 1315.70 -
 1315.71 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.72 -                unsigned long __val) const {
 1315.73 -    return do_put(__s, __f, __fill, __val);
 1315.74 -  }
 1315.75 -
 1315.76 -#ifdef _STLP_LONG_LONG
 1315.77 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.78 -                _STLP_LONG_LONG __val) const {
 1315.79 -    return do_put(__s, __f, __fill, __val);
 1315.80 -  }
 1315.81 -
 1315.82 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.83 -                unsigned _STLP_LONG_LONG __val) const {
 1315.84 -    return do_put(__s, __f, __fill, __val);
 1315.85 -  }
 1315.86 -#endif
 1315.87 -
 1315.88 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.89 -                double __val) const {
 1315.90 -    return do_put(__s, __f, __fill, (double)__val);
 1315.91 -  }
 1315.92 -
 1315.93 -#ifndef _STLP_NO_LONG_DOUBLE
 1315.94 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1315.95 -                long double __val) const {
 1315.96 -    return do_put(__s, __f, __fill, __val);
 1315.97 -  }
 1315.98 -# endif
 1315.99 -
1315.100 -  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
1315.101 -                const void * __val) const {
1315.102 -    return do_put(__s, __f, __fill, __val);
1315.103 -  }
1315.104 -
1315.105 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1315.106 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1315.107 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1315.108 -                GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *);
1315.109 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1315.110 -	//wchar_t
1315.111 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1315.112 -	                GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *);
1315.113 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(wchar_t**);
1315.114 -    //adding for new iterator type
1315.115 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1315.116 -	                GetFacetLocaleId(back_insert_iterator<string> *);
1315.117 -#else
1315.118 -  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1315.119 -#endif
1315.120 -
1315.121 -protected:
1315.122 -  ~num_put() {}   
1315.123 -# ifndef _STLP_NO_BOOL
1315.124 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, bool __val) const;
1315.125 -# endif
1315.126 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, long __val) const;
1315.127 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, unsigned long __val) const;
1315.128 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, double __val) const;
1315.129 -#ifndef _STLP_NO_LONG_DOUBLE
1315.130 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, long double __val) const;
1315.131 -#endif
1315.132 -
1315.133 -#ifdef _STLP_LONG_LONG
1315.134 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, _STLP_LONG_LONG __val) const;
1315.135 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, 
1315.136 -                           unsigned _STLP_LONG_LONG __val) const ;
1315.137 -#endif /* _STLP_LONG_LONG  */
1315.138 -  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, const void* __val) const;
1315.139 -};
1315.140 -
1315.141 -# ifdef _STLP_USE_TEMPLATE_EXPORT
1315.142 -_STLP_EXPORT_TEMPLATE_CLASS num_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1315.143 -// _STLP_EXPORT_TEMPLATE_CLASS num_put<char, char*>;
1315.144 -#  ifndef _STLP_NO_WCHAR_T
1315.145 -_STLP_EXPORT_TEMPLATE_CLASS num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1315.146 -// _STLP_EXPORT_TEMPLATE_CLASS num_put<wchar_t, wchar_t*>;
1315.147 -#  endif /* _STLP_NO_WCHAR_T */
1315.148 -# endif
1315.149 -
1315.150 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
1315.151 -
1315.152 -template <class _Integer>
1315.153 -char* _STLP_CALL
1315.154 -__write_integer_backward(char* __buf, ios_base::fmtflags __flags, _Integer __x);
1315.155 -
1315.156 -extern _STLP_DECLSPEC int  _STLP_CALL __string_to_float(const string&, float&);
1315.157 -extern _STLP_DECLSPEC int  _STLP_CALL __string_to_float(const string&, double&);
1315.158 -extern _STLP_DECLSPEC void _STLP_CALL __write_float(string&, ios_base::fmtflags, int, double);
1315.159 -# ifndef _STLP_NO_LONG_DOUBLE
1315.160 -int  _STLP_CALL __string_to_float(const string&, long double&);
1315.161 -extern _STLP_DECLSPEC void _STLP_CALL __write_float(string&, ios_base::fmtflags, int, long double);
1315.162 -# endif
1315.163 -
1315.164 -#ifndef _STLP_NO_WCHAR_T
1315.165 -extern _STLP_DECLSPEC wchar_t* _STLP_CALL __convert_float_buffer(const char*, const char*, wchar_t*, const ctype<wchar_t>&, wchar_t);
1315.166 -#endif
1315.167 -extern _STLP_DECLSPEC void _STLP_CALL __adjust_float_buffer(char*, char*, char);
1315.168 -
1315.169 -extern _STLP_DECLSPEC char* _STLP_CALL
1315.170 -__write_integer(char* buf, ios_base::fmtflags flags, long x);
1315.171 -
1315.172 -extern _STLP_DECLSPEC ptrdiff_t _STLP_CALL __insert_grouping(char* first, char* last, const string&, char, char, char, int);
1315.173 -#  ifndef _STLP_NO_WCHAR_T
1315.174 -extern _STLP_DECLSPEC ptrdiff_t _STLP_CALL __insert_grouping(wchar_t*, wchar_t*, const string&, wchar_t, wchar_t, wchar_t, int);
1315.175 -#  endif
1315.176 -
1315.177 -# endif
1315.178 -
1315.179 -# if defined (__BORLANDC__) && defined (_RTLDLL)
1315.180 -inline void _Stl_loc_init_num_put() {
1315.181 -  
1315.182 -  num_put<char, ostreambuf_iterator<char, char_traits<char> > >::id._M_index = 14;
1315.183 -  num_put<char, char*>::id._M_index = 15;
1315.184 -  
1315.185 -# ifndef _STLP_NO_WCHAR_T
1315.186 -  num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > ::id._M_index = 33;
1315.187 -  num_put<wchar_t, wchar_t*>::id._M_index = 34;
1315.188 -# endif
1315.189 -  
1315.190 -}
1315.191 - 
1315.192 -# endif
1315.193 -
1315.194 -_STLP_END_NAMESPACE
1315.195 -
1315.196 -#  if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && ! defined (_STLP_LINK_TIME_INSTANTIATION)
1315.197 -#   include <stl/_num_put.c>
1315.198 -#  endif
1315.199 -
1315.200 -#endif /* _STLP_INTERNAL_NUMERIC_FACETS_H */
1315.201 -
1315.202 -// Local Variables:
1315.203 -// mode:C++
1315.204 -// End:
1315.205 -
  1316.1 --- a/epoc32/include/stdapis/stlport/stl/_numeric.c	Tue Mar 16 16:12:26 2010 +0000
  1316.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1316.3 @@ -1,104 +0,0 @@
  1316.4 -/*
  1316.5 - *
  1316.6 - *
  1316.7 - * Copyright (c) 1994
  1316.8 - * Hewlett-Packard Company
  1316.9 - *
 1316.10 - * Copyright (c) 1996,1997
 1316.11 - * Silicon Graphics Computer Systems, Inc.
 1316.12 - *
 1316.13 - * Copyright (c) 1997
 1316.14 - * Moscow Center for SPARC Technology
 1316.15 - *
 1316.16 - * Copyright (c) 1999 
 1316.17 - * Boris Fomitchev
 1316.18 - *
 1316.19 - * This material is provided "as is", with absolutely no warranty expressed
 1316.20 - * or implied. Any use is at your own risk.
 1316.21 - *
 1316.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1316.23 - * without fee, provided the above notices are retained on all copies.
 1316.24 - * Permission to modify the code and to distribute modified code is granted,
 1316.25 - * provided the above notices are retained, and a notice that the code was
 1316.26 - * modified is included with the above copyright notice.
 1316.27 - *
 1316.28 - */
 1316.29 -#ifndef _STLP_NUMERIC_C
 1316.30 -#define _STLP_NUMERIC_C
 1316.31 -
 1316.32 -#ifndef _STLP_INTERNAL_NUMERIC_H
 1316.33 -# include <stl/_numeric.h>
 1316.34 -#endif
 1316.35 -
 1316.36 -_STLP_BEGIN_NAMESPACE
 1316.37 -
 1316.38 -template <class _InputIterator, class _OutputIterator, class _Tp,
 1316.39 -          class _BinaryOperation>
 1316.40 -_OutputIterator 
 1316.41 -__partial_sum(_InputIterator __first, _InputIterator __last, 
 1316.42 -              _OutputIterator __result, _Tp*, _BinaryOperation __binary_op)
 1316.43 -{
 1316.44 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1316.45 -  if (__first == __last) return __result;
 1316.46 -  *__result = *__first;
 1316.47 -
 1316.48 -  _Tp __val = *__first;
 1316.49 -  while (++__first != __last) {
 1316.50 -    __val = __binary_op(__val, *__first);
 1316.51 -    *++__result = __val;
 1316.52 -  }
 1316.53 -  return ++__result;
 1316.54 -}
 1316.55 -
 1316.56 -template <class _InputIterator, class _OutputIterator, class _Tp, 
 1316.57 -          class _BinaryOperation>
 1316.58 -_OutputIterator
 1316.59 -__adjacent_difference(_InputIterator __first, _InputIterator __last, 
 1316.60 -                      _OutputIterator __result, _Tp*,
 1316.61 -                      _BinaryOperation __binary_op) {
 1316.62 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1316.63 -  if (__first == __last) return __result;
 1316.64 -  *__result = *__first;
 1316.65 -  _Tp __val = *__first;
 1316.66 -  while (++__first != __last) {
 1316.67 -    _Tp __tmp = *__first;
 1316.68 -    *++__result = __binary_op(__tmp, __val);
 1316.69 -    __val = __tmp;
 1316.70 -  }
 1316.71 -  return ++__result;
 1316.72 -}
 1316.73 -
 1316.74 -
 1316.75 -template <class _Tp, class _Integer, class _MonoidOperation>
 1316.76 -_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr) 
 1316.77 -{
 1316.78 -  _STLP_MPWFIX_TRY
 1316.79 -  if (__n == 0)
 1316.80 -    return __identity_element(__opr);
 1316.81 -  else {
 1316.82 -    while ((__n & 1) == 0) {
 1316.83 -      __n >>= 1;
 1316.84 -      __x = __opr(__x, __x);
 1316.85 -    }
 1316.86 -    _Tp __result = __x;
 1316.87 -	_STLP_MPWFIX_TRY
 1316.88 -    __n >>= 1;
 1316.89 -    while (__n != 0) {
 1316.90 -      __x = __opr(__x, __x);
 1316.91 -      if ((__n & 1) != 0)
 1316.92 -        __result = __opr(__result, __x);
 1316.93 -      __n >>= 1;
 1316.94 -    }
 1316.95 -    return __result;
 1316.96 -	_STLP_MPWFIX_CATCH
 1316.97 -  }
 1316.98 -  _STLP_MPWFIX_CATCH_ACTION(__x = _Tp())
 1316.99 -}
1316.100 -
1316.101 -_STLP_END_NAMESPACE
1316.102 -
1316.103 -#endif /*  _STLP_NUMERIC_C */
1316.104 -
1316.105 -// Local Variables:
1316.106 -// mode:C++
1316.107 -// End:
  1317.1 --- a/epoc32/include/stdapis/stlport/stl/_numeric.h	Tue Mar 16 16:12:26 2010 +0000
  1317.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1317.3 @@ -1,190 +0,0 @@
  1317.4 -/*
  1317.5 - *
  1317.6 - * Copyright (c) 1994
  1317.7 - * Hewlett-Packard Company
  1317.8 - *
  1317.9 - * Copyright (c) 1996,1997
 1317.10 - * Silicon Graphics Computer Systems, Inc.
 1317.11 - *
 1317.12 - * Copyright (c) 1999 
 1317.13 - * Boris Fomitchev
 1317.14 - *
 1317.15 - * This material is provided "as is", with absolutely no warranty expressed
 1317.16 - * or implied. Any use is at your own risk.
 1317.17 - *
 1317.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1317.19 - * without fee, provided the above notices are retained on all copies.
 1317.20 - * Permission to modify the code and to distribute modified code is granted,
 1317.21 - * provided the above notices are retained, and a notice that the code was
 1317.22 - * modified is included with the above copyright notice.
 1317.23 - *
 1317.24 - */
 1317.25 -
 1317.26 -/* NOTE: This is an internal header file, included by other STL headers.
 1317.27 - *   You should not attempt to use it directly.
 1317.28 - */
 1317.29 -
 1317.30 -
 1317.31 -#ifndef _STLP_INTERNAL_NUMERIC_H
 1317.32 -#define _STLP_INTERNAL_NUMERIC_H
 1317.33 -
 1317.34 -#ifndef _STLP_INTERNAL_FUNCTION_H
 1317.35 -# include <stl/_function_base.h>
 1317.36 -#endif
 1317.37 -
 1317.38 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1317.39 -# include <stl/_iterator_base.h>
 1317.40 -#endif
 1317.41 -
 1317.42 -_STLP_BEGIN_NAMESPACE
 1317.43 -
 1317.44 -template <class _InputIterator, class _Tp>
 1317.45 -_STLP_INLINE_LOOP
 1317.46 -_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp _Init)
 1317.47 -{
 1317.48 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1317.49 -  for ( ; __first != __last; ++__first)
 1317.50 -#ifndef 	__SYMBIAN32__  	
 1317.51 -    _Init = _Init + *__first;
 1317.52 -#else
 1317.53 -	    _Init +=  *__first;
 1317.54 -#endif
 1317.55 -  return _Init;
 1317.56 -}
 1317.57 -
 1317.58 -template <class _InputIterator, class _Tp, class _BinaryOperation>
 1317.59 -_STLP_INLINE_LOOP
 1317.60 -_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp _Init,
 1317.61 -               _BinaryOperation __binary_op)
 1317.62 -{
 1317.63 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1317.64 -  for ( ; __first != __last; ++__first)
 1317.65 -    _Init = __binary_op(_Init, *__first);
 1317.66 -  return _Init;
 1317.67 -}
 1317.68 -
 1317.69 -template <class _InputIterator1, class _InputIterator2, class _Tp>
 1317.70 -_STLP_INLINE_LOOP
 1317.71 -_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
 1317.72 -                  _InputIterator2 __first2, _Tp _Init)
 1317.73 -{
 1317.74 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1317.75 -  for ( ; __first1 != __last1; ++__first1, ++__first2)
 1317.76 -    _Init = _Init + (*__first1 * *__first2);
 1317.77 -  return _Init;
 1317.78 -}
 1317.79 -
 1317.80 -template <class _InputIterator1, class _InputIterator2, class _Tp,
 1317.81 -          class _BinaryOperation1, class _BinaryOperation2>
 1317.82 -_STLP_INLINE_LOOP
 1317.83 -_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
 1317.84 -                  _InputIterator2 __first2, _Tp _Init, 
 1317.85 -                  _BinaryOperation1 __binary_op1,
 1317.86 -                  _BinaryOperation2 __binary_op2)
 1317.87 -{
 1317.88 -  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1317.89 -  for ( ; __first1 != __last1; ++__first1, ++__first2)
 1317.90 -    _Init = __binary_op1(_Init, __binary_op2(*__first1, *__first2));
 1317.91 -  return _Init;
 1317.92 -}
 1317.93 -
 1317.94 -template <class _InputIterator, class _OutputIterator, class _Tp,
 1317.95 -          class _BinaryOperation>
 1317.96 -_OutputIterator 
 1317.97 -__partial_sum(_InputIterator __first, _InputIterator __last, 
 1317.98 -              _OutputIterator __result, _Tp*, _BinaryOperation __binary_op);
 1317.99 -
1317.100 -
1317.101 -template <class _InputIterator, class _OutputIterator>
1317.102 -inline _OutputIterator 
1317.103 -partial_sum(_InputIterator __first, _InputIterator __last,
1317.104 -            _OutputIterator __result) {
1317.105 -  return __partial_sum(__first, __last, __result, _STLP_VALUE_TYPE(__first, _InputIterator),
1317.106 -                       __plus(_STLP_VALUE_TYPE(__first, _InputIterator)));
1317.107 -}
1317.108 -
1317.109 -template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
1317.110 -inline _OutputIterator 
1317.111 -partial_sum(_InputIterator __first, _InputIterator __last,
1317.112 -            _OutputIterator __result, _BinaryOperation __binary_op) {
1317.113 -  return __partial_sum(__first, __last, __result, _STLP_VALUE_TYPE(__first, _InputIterator), 
1317.114 -                       __binary_op);
1317.115 -}
1317.116 -
1317.117 -
1317.118 -template <class _InputIterator, class _OutputIterator, class _Tp, 
1317.119 -          class _BinaryOperation>
1317.120 -_OutputIterator
1317.121 -__adjacent_difference(_InputIterator __first, _InputIterator __last, 
1317.122 -                      _OutputIterator __result, _Tp*,
1317.123 -                      _BinaryOperation __binary_op);
1317.124 -
1317.125 -template <class _InputIterator, class _OutputIterator>
1317.126 -inline _OutputIterator
1317.127 -adjacent_difference(_InputIterator __first,
1317.128 -                    _InputIterator __last, _OutputIterator __result) {
1317.129 -  return __adjacent_difference(__first, __last, __result,
1317.130 -                               _STLP_VALUE_TYPE(__first, _InputIterator),
1317.131 -                               __minus(_STLP_VALUE_TYPE(__first, _InputIterator)));
1317.132 -}
1317.133 -
1317.134 -template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
1317.135 -_OutputIterator 
1317.136 -adjacent_difference(_InputIterator __first, _InputIterator __last,
1317.137 -                    _OutputIterator __result, _BinaryOperation __binary_op) {
1317.138 -  return __adjacent_difference(__first, __last, __result,
1317.139 -                               _STLP_VALUE_TYPE(__first, _InputIterator),
1317.140 -                               __binary_op);
1317.141 -}
1317.142 -
1317.143 -template <class _Tp, class _Integer, class _MonoidOperation>
1317.144 -_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr);
1317.145 -
1317.146 -# ifndef _STLP_NO_EXTENSIONS
1317.147 -
1317.148 -// Returns __x ** __n, where __n >= 0.  _Note that "multiplication"
1317.149 -// is required to be associative, but not necessarily commutative.
1317.150 -
1317.151 -template <class _Tp, class _Integer>
1317.152 -inline _Tp __power(_Tp __x, _Integer __n)
1317.153 -{
1317.154 -  return __power(__x, __n, multiplies<_Tp>());
1317.155 -}
1317.156 -
1317.157 -// Alias for the internal name __power.  Note that power is an extension,
1317.158 -// not part of the C++ standard.
1317.159 -template <class _Tp, class _Integer, class _MonoidOperation>
1317.160 -inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __opr) {
1317.161 -  return __power(__x, __n, __opr);
1317.162 -}
1317.163 -
1317.164 -
1317.165 -template <class _Tp, class _Integer>
1317.166 -inline _Tp power(_Tp __x, _Integer __n) {
1317.167 -  return __power(__x, __n, multiplies<_Tp>());
1317.168 -}
1317.169 -
1317.170 -// iota is not part of the C++ standard.  It is an extension.
1317.171 -
1317.172 -template <class _ForwardIterator, class _Tp>
1317.173 -_STLP_INLINE_LOOP
1317.174 -void 
1317.175 -iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __val)
1317.176 -{
1317.177 -  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1317.178 -  while (__first != __last)
1317.179 -    *__first++ = __val++;
1317.180 -}
1317.181 -# endif
1317.182 -
1317.183 -_STLP_END_NAMESPACE
1317.184 -
1317.185 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1317.186 -#  include <stl/_numeric.c>
1317.187 -# endif
1317.188 -
1317.189 -#endif /* _STLP_INTERNAL_NUMERIC_H */
1317.190 -
1317.191 -// Local Variables:
1317.192 -// mode:C++
1317.193 -// End:
  1318.1 --- a/epoc32/include/stdapis/stlport/stl/_numpunct.h	Tue Mar 16 16:12:26 2010 +0000
  1318.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1318.3 @@ -1,295 +0,0 @@
  1318.4 -/*
  1318.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1318.6 - *
  1318.7 - * Copyright (c) 1999
  1318.8 - * Silicon Graphics Computer Systems, Inc.
  1318.9 - *
 1318.10 - * Copyright (c) 1999 
 1318.11 - * Boris Fomitchev
 1318.12 - *
 1318.13 - * This material is provided "as is", with absolutely no warranty expressed
 1318.14 - * or implied. Any use is at your own risk.
 1318.15 - *
 1318.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1318.17 - * without fee, provided the above notices are retained on all copies.
 1318.18 - * Permission to modify the code and to distribute modified code is granted,
 1318.19 - * provided the above notices are retained, and a notice that the code was
 1318.20 - * modified is included with the above copyright notice.
 1318.21 - *
 1318.22 - */ 
 1318.23 -// WARNING: This is an internal header file, included by other C++
 1318.24 -// standard library headers.  You should not attempt to use this header
 1318.25 -// file directly.
 1318.26 -
 1318.27 -
 1318.28 -#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1318.29 -#define _STLP_INTERNAL_NUMPUNCT_H
 1318.30 -
 1318.31 -#ifndef _STLP_IOS_BASE_H
 1318.32 -# include <stl/_ios_base.h>
 1318.33 -#endif
 1318.34 -
 1318.35 -# ifndef _STLP_C_LOCALE_H
 1318.36 -#  include <stl/c_locale.h>
 1318.37 -# endif
 1318.38 -
 1318.39 -#ifndef _STLP_STRING_H
 1318.40 -# include <stl/_string.h>
 1318.41 -#endif
 1318.42 -
 1318.43 -_STLP_BEGIN_NAMESPACE
 1318.44 -
 1318.45 -//----------------------------------------------------------------------
 1318.46 -// numpunct facets
 1318.47 -
 1318.48 -#ifdef	__SYMBIAN32__
 1318.49 -extern locale::id& Numpunct_charT_GetFacetLocaleId(const char* type);
 1318.50 -
 1318.51 -template <class _CharT> class numpunct: public locale::facet
 1318.52 -{
 1318.53 -	friend class _Locale;
 1318.54 -public:
 1318.55 - 	typedef char               		char_type;
 1318.56 -  	typedef basic_string<_CharT>             string_type;
 1318.57 -	explicit numpunct(size_t __refs = 0) : _BaseFacet(__refs) {
 1318.58 -	_M_truename.append(1, (_CharT)'t');
 1318.59 -	_M_truename.append(1, (_CharT)'r');
 1318.60 -	_M_truename.append(1, (_CharT)'u');
 1318.61 -	_M_truename.append(1, (_CharT)'e');
 1318.62 -
 1318.63 -	_M_falsename.append(1, (_CharT)'f');
 1318.64 -	_M_falsename.append(1, (_CharT)'a');
 1318.65 -	_M_falsename.append(1, (_CharT)'l');
 1318.66 -	_M_falsename.append(1, (_CharT)'s');
 1318.67 -	_M_falsename.append(1, (_CharT)'e');
 1318.68 -	}
 1318.69 -	
 1318.70 -  	_CharT decimal_point() const { return do_decimal_point(); }
 1318.71 -  	_CharT thousands_sep() const { return do_thousands_sep(); }
 1318.72 -  	string grouping() const { return do_grouping(); }
 1318.73 -  	string_type truename() const { return do_truename(); }
 1318.74 -  	string_type falsename() const { return do_falsename(); }
 1318.75 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1318.76 -	static locale::id& GetFacetLocaleId(){return Numpunct_charT_GetFacetLocaleId(typeid(_CharT).name()); }
 1318.77 -#else
 1318.78 -  	 static locale::id id;
 1318.79 -#endif
 1318.80 -
 1318.81 -# ifndef _STLP_NO_FRIEND_TEMPLATES
 1318.82 -protected:
 1318.83 -# endif
 1318.84 -	~numpunct();
 1318.85 -
 1318.86 -protected:
 1318.87 -  	 static string_type  _M_truename;
 1318.88 -  	static string_type  _M_falsename;
 1318.89 -  	static string  _M_grouping;
 1318.90 -protected:
 1318.91 -
 1318.92 -  	virtual _CharT do_decimal_point() const;
 1318.93 -  	virtual _CharT do_thousands_sep() const;
 1318.94 -  	virtual string do_grouping() const; 
 1318.95 -  	virtual string_type do_truename() const;
 1318.96 -  	virtual string_type do_falsename()  const;
 1318.97 -};
 1318.98 -
 1318.99 -template <class _CharT>
1318.100 -basic_string<_CharT> numpunct<_CharT>::_M_truename;
1318.101 -template <class _CharT>
1318.102 -basic_string<_CharT> numpunct<_CharT>::_M_falsename;
1318.103 -template <class _CharT>
1318.104 -string numpunct<_CharT>::_M_grouping ;
1318.105 -
1318.106 -_STLP_DECLSPEC _Locale_numeric* __acquire_numericE(const char* );
1318.107 -_STLP_DECLSPEC void __release_numericE(_Locale_numeric* );
1318.108 -_STLP_DECLSPEC const char* _Locale_trueE(_Locale_numeric*);
1318.109 -_STLP_DECLSPEC const char* _Locale_falseE(_Locale_numeric*);
1318.110 -_STLP_DECLSPEC char _Locale_decimal_pointE(_Locale_numeric*);
1318.111 -_STLP_DECLSPEC char _Locale_thousands_sepE(_Locale_numeric*);
1318.112 -_STLP_DECLSPEC const char*_Locale_groupingE(_Locale_numeric*);
1318.113 -
1318.114 -template <class _CharT>
1318.115 -class numpunct_byname : public numpunct<_CharT>{
1318.116 -public:
1318.117 -	typedef _CharT                char_type;
1318.118 -  	typedef basic_string<_CharT>              string_type;
1318.119 -
1318.120 -  	explicit  numpunct_byname(const char* name, size_t refs = 0);	
1318.121 -protected:
1318.122 -
1318.123 -	   ~numpunct_byname();
1318.124 -
1318.125 -	 virtual _CharT   do_decimal_point() const;
1318.126 -  	 virtual _CharT   do_thousands_sep() const;
1318.127 -	  virtual string do_grouping()      const;
1318.128 -
1318.129 -private:
1318.130 -  	_Locale_numeric* _M_numeric;
1318.131 -};
1318.132 -
1318.133 -#else
1318.134 -template <class _CharT> class numpunct {};
1318.135 -template <class _CharT> class numpunct_byname {};
1318.136 -#endif
1318.137 -template <class _Ch, class _InIt> class num_get;
1318.138 -
1318.139 -_STLP_TEMPLATE_NULL
1318.140 -#ifdef __SYMBIAN32__
1318.141 -class numpunct <char> : public locale::facet
1318.142 -#else
1318.143 -class _STLP_CLASS_DECLSPEC numpunct<char> : public locale::facet
1318.144 -#endif
1318.145 -{
1318.146 -  friend class _Locale;
1318.147 -# ifndef _STLP_NO_FRIEND_TEMPLATES
1318.148 -  template <class _Ch, class _InIt> friend class num_get;
1318.149 -# endif
1318.150 -public:
1318.151 -  typedef char               char_type;
1318.152 -  typedef string             string_type;
1318.153 -
1318.154 -  explicit numpunct(size_t __refs = 0) : _BaseFacet(__refs) {}
1318.155 -
1318.156 -  char decimal_point() const { return do_decimal_point(); }
1318.157 -  char thousands_sep() const { return do_thousands_sep(); }
1318.158 -  string grouping() const { return do_grouping(); }
1318.159 -  string truename() const { return do_truename(); }
1318.160 -  string falsename() const { return do_falsename(); }
1318.161 -
1318.162 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1318.163 -	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1318.164 -#else
1318.165 -  	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1318.166 -#endif
1318.167 -
1318.168 -# ifndef _STLP_NO_FRIEND_TEMPLATES
1318.169 -protected:
1318.170 -# endif
1318.171 -  ~numpunct(){};
1318.172 -
1318.173 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1318.174 -public:
1318.175 -  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_truename();
1318.176 -  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_falsename();
1318.177 -  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_grouping();
1318.178 -#else
1318.179 -protected:
1318.180 -  _STLP_STATIC_MEMBER_DECLSPEC static string  _M_truename;
1318.181 -  _STLP_STATIC_MEMBER_DECLSPEC static string  _M_falsename;
1318.182 -  _STLP_STATIC_MEMBER_DECLSPEC static string  _M_grouping;
1318.183 -#endif
1318.184 -
1318.185 -protected:
1318.186 -
1318.187 -  _STLP_DECLSPEC virtual char do_decimal_point() const;
1318.188 -  _STLP_DECLSPEC virtual char do_thousands_sep() const;
1318.189 -  _STLP_DECLSPEC virtual string do_grouping() const;
1318.190 -  _STLP_DECLSPEC virtual string do_truename() const;
1318.191 -  _STLP_DECLSPEC virtual string do_falsename()  const;
1318.192 -};
1318.193 -
1318.194 -# if ! defined (_STLP_NO_WCHAR_T)
1318.195 -
1318.196 -_STLP_TEMPLATE_NULL
1318.197 -#ifdef __SYMBIAN32__
1318.198 -class numpunct<wchar_t> : public locale::facet
1318.199 -#else
1318.200 -class _STLP_CLASS_DECLSPEC numpunct<wchar_t> : public locale::facet
1318.201 -#endif
1318.202 -{
1318.203 -  friend class _Locale;
1318.204 -public:
1318.205 -  typedef wchar_t               char_type;
1318.206 -  typedef wstring               string_type;
1318.207 -
1318.208 -  explicit numpunct(size_t __refs = 0) : _BaseFacet(__refs) {}
1318.209 -
1318.210 -  wchar_t decimal_point() const { return do_decimal_point(); }
1318.211 -  wchar_t thousands_sep() const { return do_thousands_sep(); }
1318.212 -  string grouping() const { return do_grouping(); }
1318.213 -  wstring truename() const { return do_truename(); }
1318.214 -  wstring falsename() const { return do_falsename(); }
1318.215 -
1318.216 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1318.217 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1318.218 -#else
1318.219 - 	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1318.220 -#endif
1318.221 -
1318.222 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1318.223 -public:
1318.224 -  _STLP_STATIC_MEMBER_DECLSPEC static wstring&  GetNumPunct_M_Wchar_truename();
1318.225 -  _STLP_STATIC_MEMBER_DECLSPEC static wstring&  GetNumPunct_M_Wchar_falsename();
1318.226 -  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_Wchar_grouping();
1318.227 -#else
1318.228 -protected:
1318.229 -  _STLP_STATIC_MEMBER_DECLSPEC static wstring _M_truename;
1318.230 -  _STLP_STATIC_MEMBER_DECLSPEC static wstring _M_falsename;
1318.231 -  _STLP_STATIC_MEMBER_DECLSPEC static string _M_grouping;
1318.232 -#endif
1318.233 -protected:
1318.234 -  ~numpunct() {}
1318.235 -
1318.236 -  _STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1318.237 -  _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1318.238 -  _STLP_DECLSPEC virtual string do_grouping() const;
1318.239 -  _STLP_DECLSPEC virtual wstring do_truename() const;
1318.240 -  _STLP_DECLSPEC virtual wstring do_falsename()  const;
1318.241 -};
1318.242 -
1318.243 -# endif /* WCHAR_T */
1318.244 -
1318.245 -_STLP_TEMPLATE_NULL
1318.246 -class _STLP_CLASS_DECLSPEC numpunct_byname<char> : public numpunct<char> {
1318.247 -public:
1318.248 -  typedef char                char_type;
1318.249 -  typedef string              string_type;
1318.250 -
1318.251 -  explicit _STLP_DECLSPEC numpunct_byname(const char* __name, size_t __refs = 0);
1318.252 -
1318.253 -protected:
1318.254 -
1318.255 -_STLP_DECLSPEC   ~numpunct_byname();
1318.256 -
1318.257 -_STLP_DECLSPEC   virtual char   do_decimal_point() const;
1318.258 -  _STLP_DECLSPEC virtual char   do_thousands_sep() const;
1318.259 -_STLP_DECLSPEC   virtual string do_grouping()      const;
1318.260 -
1318.261 -private:
1318.262 -  _Locale_numeric* _M_numeric;
1318.263 -};
1318.264 -
1318.265 -# ifndef _STLP_NO_WCHAR_T
1318.266 -_STLP_TEMPLATE_NULL
1318.267 -class _STLP_CLASS_DECLSPEC numpunct_byname<wchar_t>: public numpunct<wchar_t> {
1318.268 -public:
1318.269 -  typedef wchar_t               char_type;
1318.270 -  typedef wstring               string_type;
1318.271 -
1318.272 -  explicit _STLP_DECLSPEC numpunct_byname(const char* __name, size_t __refs = 0);
1318.273 -
1318.274 -protected:
1318.275 -
1318.276 -_STLP_DECLSPEC   ~numpunct_byname();
1318.277 -
1318.278 -_STLP_DECLSPEC   virtual wchar_t   do_decimal_point() const;
1318.279 -  _STLP_DECLSPEC virtual wchar_t   do_thousands_sep() const;
1318.280 -_STLP_DECLSPEC   virtual string do_grouping() const;
1318.281 -
1318.282 -private:
1318.283 -  _Locale_numeric* _M_numeric;
1318.284 -};
1318.285 -
1318.286 -# endif /* WCHAR_T */
1318.287 -
1318.288 -#ifdef	__SYMBIAN32__
1318.289 -#include<stl/_numpunct.c>
1318.290 -#endif
1318.291 -_STLP_END_NAMESPACE
1318.292 -
1318.293 -#endif /* _STLP_NUMPUNCT_H */
1318.294 -
1318.295 -// Local Variables:
1318.296 -// mode:C++
1318.297 -// End:
1318.298 -
  1319.1 --- a/epoc32/include/stdapis/stlport/stl/_ostream.c	Tue Mar 16 16:12:26 2010 +0000
  1319.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1319.3 @@ -1,425 +0,0 @@
  1319.4 -/*
  1319.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1319.6 - *
  1319.7 - * Copyright (c) 1999
  1319.8 - * Silicon Graphics Computer Systems, Inc.
  1319.9 - *
 1319.10 - * Copyright (c) 1999 
 1319.11 - * Boris Fomitchev
 1319.12 - *
 1319.13 - * This material is provided "as is", with absolutely no warranty expressed
 1319.14 - * or implied. Any use is at your own risk.
 1319.15 - *
 1319.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1319.17 - * without fee, provided the above notices are retained on all copies.
 1319.18 - * Permission to modify the code and to distribute modified code is granted,
 1319.19 - * provided the above notices are retained, and a notice that the code was
 1319.20 - * modified is included with the above copyright notice.
 1319.21 - *
 1319.22 - */ 
 1319.23 -#ifndef _STLP_OSTREAM_C
 1319.24 -#define _STLP_OSTREAM_C
 1319.25 -
 1319.26 -
 1319.27 -#ifndef _STLP_INTERNAL_OSTREAM_H
 1319.28 -# include <stl/_ostream.h>
 1319.29 -#endif
 1319.30 -
 1319.31 -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1319.32 -
 1319.33 -#if !defined (_STLP_INTERNAL_NUM_PUT_H)
 1319.34 -# include <stl/_num_put.h>            // For basic_streambuf and iterators
 1319.35 -#endif
 1319.36 -
 1319.37 -_STLP_BEGIN_NAMESPACE
 1319.38 -
 1319.39 -// Helper functions for istream<>::sentry constructor.
 1319.40 -template <class _CharT, class _Traits>
 1319.41 -bool
 1319.42 -_M_init(basic_ostream<_CharT, _Traits>& __str) {
 1319.43 -  if (__str.good()) {
 1319.44 -    // boris : check if this is needed !
 1319.45 -    if (!__str.rdbuf())
 1319.46 -      __str.setstate(ios_base::badbit);
 1319.47 -    if (__str.tie())
 1319.48 -      __str.tie()->flush();
 1319.49 -    return __str.good();
 1319.50 -  } else
 1319.51 -    return false;
 1319.52 -}
 1319.53 -
 1319.54 -//----------------------------------------------------------------------
 1319.55 -// Definitions of non-inline member functions.
 1319.56 -
 1319.57 -// Constructor, destructor
 1319.58 -
 1319.59 -template <class _CharT, class _Traits>
 1319.60 -_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>
 1319.61 -  ::basic_ostream(basic_streambuf<_CharT, _Traits>* __buf)
 1319.62 -    : basic_ios<_CharT, _Traits>() 
 1319.63 -{
 1319.64 -  this->init(__buf);
 1319.65 -}
 1319.66 -
 1319.67 -template <class _CharT, class _Traits>
 1319.68 -_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>::~basic_ostream()
 1319.69 -{}
 1319.70 -
 1319.71 -// Output directly from a streambuf.
 1319.72 -template <class _CharT, class _Traits>
 1319.73 -_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>& 
 1319.74 -basic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<_CharT, _Traits>* __from)
 1319.75 -{
 1319.76 -  sentry __sentry(*this);
 1319.77 -  if (__sentry) {
 1319.78 -    if (__from) {
 1319.79 -      bool __any_inserted = __from->gptr() != __from->egptr()
 1319.80 -        ? this->_M_copy_buffered(__from, this->rdbuf())
 1319.81 -        : this->_M_copy_unbuffered(__from, this->rdbuf());
 1319.82 -      if (!__any_inserted)
 1319.83 -        this->setstate(ios_base::failbit);
 1319.84 -    }
 1319.85 -    else
 1319.86 -      this->setstate(ios_base::badbit);
 1319.87 -  }
 1319.88 -
 1319.89 -  return *this;
 1319.90 -}
 1319.91 -
 1319.92 -// Helper functions for the streambuf version of operator<<.  The
 1319.93 -// exception-handling code is complicated because exceptions thrown
 1319.94 -// while extracting characters are treated differently than exceptions
 1319.95 -// thrown while inserting characters.
 1319.96 -
 1319.97 -template <class _CharT, class _Traits>
 1319.98 -bool basic_ostream<_CharT, _Traits>
 1319.99 -  ::_M_copy_buffered(basic_streambuf<_CharT, _Traits>* __from,
1319.100 -                     basic_streambuf<_CharT, _Traits>* __to)
1319.101 -{
1319.102 -  bool __any_inserted = false;
1319.103 -
1319.104 -  while (__from->egptr() != __from->gptr()) {
1319.105 -    const ptrdiff_t __avail = __from->egptr() - __from->gptr();
1319.106 -
1319.107 -    streamsize __nwritten;
1319.108 -    _STLP_TRY {
1319.109 -      __nwritten = __to->sputn(__from->gptr(), __avail);
1319.110 -      __from->gbump((int)__nwritten);
1319.111 -    }
1319.112 -    _STLP_CATCH_ALL {
1319.113 -      this->_M_handle_exception(ios_base::badbit);
1319.114 -      return __any_inserted;
1319.115 -    }
1319.116 -
1319.117 -    if (__nwritten == __avail) {
1319.118 -      _STLP_TRY {
1319.119 -        if (this->_S_eof(__from->sgetc()))
1319.120 -          return true;
1319.121 -        else
1319.122 -          __any_inserted = true;
1319.123 -      }
1319.124 -      _STLP_CATCH_ALL {
1319.125 -        this->_M_handle_exception(ios_base::failbit);
1319.126 -        return false;
1319.127 -      }
1319.128 -    }
1319.129 -
1319.130 -    else if (__nwritten != 0)
1319.131 -      return true;
1319.132 -
1319.133 -    else
1319.134 -      return __any_inserted;
1319.135 -  }
1319.136 -
1319.137 -  // No characters are in the buffer, but we aren't at EOF.  Switch to
1319.138 -  // unbuffered mode.
1319.139 -  return __any_inserted || this->_M_copy_unbuffered(__from, __to);
1319.140 -}
1319.141 -
1319.142 -template <class _CharT, class _Traits>
1319.143 -bool basic_ostream<_CharT, _Traits>
1319.144 -  ::_M_copy_unbuffered(basic_streambuf<_CharT, _Traits>* __from,
1319.145 -                       basic_streambuf<_CharT, _Traits>* __to)
1319.146 -{
1319.147 -  bool __any_inserted = false;
1319.148 -
1319.149 -#ifdef __SYMBIAN32__
1319.150 -  int_type __c;
1319.151 -    _STLP_TRY {
1319.152 -  __c = __from->sgetc();;
1319.153 -    }
1319.154 -    _STLP_CATCH_ALL {
1319.155 -      this->_M_handle_exception(ios_base::failbit);
1319.156 -      return __any_inserted;
1319.157 -    }
1319.158 -  for(;;){
1319.159 -
1319.160 -    if (this->_S_eof(__c))
1319.161 -      return __any_inserted;
1319.162 -
1319.163 -    else {
1319.164 -      int_type __tmp;
1319.165 -      _STLP_TRY {
1319.166 -        __tmp = __to->sputc(__c);
1319.167 -      }
1319.168 -      _STLP_CATCH_ALL {
1319.169 -        this->_M_handle_exception(ios_base::badbit);
1319.170 -        return __any_inserted;
1319.171 -      }
1319.172 -
1319.173 -      if (this->_S_eof(__tmp)) {
1319.174 -        break;
1319.175 -      }
1319.176 -      else
1319.177 -        __any_inserted = true;
1319.178 -    }
1319.179 -    _STLP_TRY {
1319.180 -      __c = __from->snextc();
1319.181 -    }
1319.182 -    _STLP_CATCH_ALL {
1319.183 -      this->_M_handle_exception(ios_base::failbit);
1319.184 -      return __any_inserted;
1319.185 -    }
1319.186 -  }
1319.187 -#else
1319.188 -  while (true) {
1319.189 -    int_type __c;
1319.190 -    _STLP_TRY {
1319.191 -      __c = __from->sbumpc();
1319.192 -    }
1319.193 -    _STLP_CATCH_ALL {
1319.194 -      this->_M_handle_exception(ios_base::failbit);
1319.195 -      return __any_inserted;
1319.196 -    }
1319.197 -
1319.198 -    if (this->_S_eof(__c))
1319.199 -      return __any_inserted;
1319.200 -
1319.201 -    else {
1319.202 -      int_type __tmp;
1319.203 -      _STLP_TRY {
1319.204 -        __tmp = __to->sputc(__c);
1319.205 -      }
1319.206 -      _STLP_CATCH_ALL {
1319.207 -        this->_M_handle_exception(ios_base::badbit);
1319.208 -        return __any_inserted;
1319.209 -      }
1319.210 -
1319.211 -      if (this->_S_eof(__tmp)) {
1319.212 -        _STLP_TRY {
1319.213 -          /* __tmp = */ __from->sputbackc(__c);
1319.214 -        }
1319.215 -        _STLP_CATCH_ALL {
1319.216 -          this->_M_handle_exception(ios_base::badbit);
1319.217 -          return __any_inserted;
1319.218 -        }
1319.219 -      }
1319.220 -      else
1319.221 -        __any_inserted = true;
1319.222 -    }
1319.223 -  }
1319.224 -#endif
1319.225 -  return __any_inserted;
1319.226 -}
1319.227 -
1319.228 -// Helper function for numeric output.
1319.229 -
1319.230 -template <class _CharT, class _Traits, class _Number>
1319.231 -basic_ostream<_CharT, _Traits>&  _STLP_CALL
1319.232 -_M_put_num(basic_ostream<_CharT, _Traits>& __os, _Number __x)
1319.233 -{
1319.234 -  typedef typename basic_ostream<_CharT, _Traits>::sentry _Sentry;
1319.235 -  _Sentry __sentry(__os);
1319.236 -  bool __failed = true;
1319.237 -
1319.238 -  if (__sentry) {
1319.239 -    _STLP_TRY {
1319.240 -      typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > _NumPut;      
1319.241 -      __failed = (use_facet<_NumPut>(__os.getloc())).put(
1319.242 -                                                         ostreambuf_iterator<_CharT, _Traits>(__os.rdbuf()), 
1319.243 -                                                         __os, __os.fill(),
1319.244 -                                                         __x).failed();
1319.245 -    }
1319.246 -    _STLP_CATCH_ALL {
1319.247 -      __os._M_handle_exception(ios_base::badbit);
1319.248 -    }
1319.249 -  }
1319.250 -  if (__failed)
1319.251 -    __os.setstate(ios_base::badbit); 
1319.252 -  return __os;
1319.253 -}
1319.254 -
1319.255 -# if defined (_STLP_USE_TEMPLATE_EXPORT)  && defined (__BUILDING_STLPORT)
1319.256 -_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL
1319.257 -_M_put_num(basic_ostream<char, char_traits<char> >&, unsigned long);
1319.258 -_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >&  _STLP_CALL
1319.259 -_M_put_num(basic_ostream<char, char_traits<char> >&, long);
1319.260 -#  if defined (_STLP_LONG_LONG)
1319.261 -_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >&  _STLP_CALL
1319.262 -_M_put_num(basic_ostream<char, char_traits<char> >&, unsigned _STLP_LONG_LONG);
1319.263 -_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >&  _STLP_CALL
1319.264 -_M_put_num(basic_ostream<char, char_traits<char> >&, _STLP_LONG_LONG );
1319.265 -#  endif
1319.266 -# endif
1319.267 -
1319.268 -template <class _CharT, class _Traits>
1319.269 -void basic_ostream<_CharT, _Traits>::_M_put_char(_CharT __c)
1319.270 -{
1319.271 -  sentry __sentry(*this);
1319.272 -  if (__sentry) {
1319.273 -    bool __failed = true;
1319.274 -    _STLP_TRY {
1319.275 -      streamsize __npad = this->width() > 0 ? this->width() - 1 : 0;
1319.276 -      //      if (__npad <= 1)
1319.277 -      if (__npad == 0)
1319.278 -        __failed = this->_S_eof(this->rdbuf()->sputc(__c));
1319.279 -      else if ((this->flags() & ios_base::adjustfield) == ios_base::left) {
1319.280 -        __failed = this->_S_eof(this->rdbuf()->sputc(__c));
1319.281 -        __failed = __failed || 
1319.282 -                   this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1319.283 -      }
1319.284 -      else {
1319.285 -        __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1319.286 -        __failed = __failed || this->_S_eof(this->rdbuf()->sputc(__c));
1319.287 -      }
1319.288 -
1319.289 -      this->width(0);
1319.290 -    }
1319.291 -    _STLP_CATCH_ALL {
1319.292 -      this->_M_handle_exception(ios_base::badbit);
1319.293 -    }
1319.294 -
1319.295 -    if (__failed)
1319.296 -      this->setstate(ios_base::badbit);
1319.297 -  }
1319.298 -}
1319.299 -
1319.300 -template <class _CharT, class _Traits>
1319.301 -void basic_ostream<_CharT, _Traits>::_M_put_nowiden(const _CharT* __s)
1319.302 -{
1319.303 -  sentry __sentry(*this);
1319.304 -  if (__sentry) {
1319.305 -    bool __failed = true;
1319.306 -    streamsize __n = _Traits::length(__s);
1319.307 -    streamsize __npad = this->width() > __n ? this->width() - __n : 0;
1319.308 -
1319.309 -    _STLP_TRY {
1319.310 -      if (__npad == 0)
1319.311 -        __failed = this->rdbuf()->sputn(__s, __n) != __n;
1319.312 -      else if ((this->flags() & ios_base::adjustfield) == ios_base::left) {
1319.313 -        __failed = this->rdbuf()->sputn(__s, __n) != __n;
1319.314 -        __failed = __failed || 
1319.315 -                   this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1319.316 -      }
1319.317 -      else {
1319.318 -        __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1319.319 -        __failed = __failed || this->rdbuf()->sputn(__s, __n) != __n;
1319.320 -      }
1319.321 -
1319.322 -      this->width(0);
1319.323 -    }
1319.324 -    _STLP_CATCH_ALL {
1319.325 -      this->_M_handle_exception(ios_base::badbit);
1319.326 -    }
1319.327 -
1319.328 -    if (__failed)
1319.329 -      this->setstate(ios_base::failbit);
1319.330 -  }
1319.331 -}
1319.332 -
1319.333 -template <class _CharT, class _Traits>
1319.334 -void basic_ostream<_CharT, _Traits>::_M_put_widen(const char* __s)
1319.335 -{
1319.336 -  sentry __sentry(*this);
1319.337 -  if (__sentry) {
1319.338 -    bool __failed = true;
1319.339 -    streamsize __n = char_traits<char>::length(__s);
1319.340 -    streamsize __npad = this->width() > __n ? this->width() - __n : 0;
1319.341 -
1319.342 -    _STLP_TRY {
1319.343 -      if (__npad == 0)
1319.344 -        __failed = !this->_M_put_widen_aux(__s, __n);
1319.345 -      else if ((this->flags() & ios_base::adjustfield) == ios_base::left) {
1319.346 -        __failed = !this->_M_put_widen_aux(__s, __n);
1319.347 -        __failed = __failed || 
1319.348 -                   this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1319.349 -      }
1319.350 -      else {
1319.351 -        __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1319.352 -        __failed = __failed || !this->_M_put_widen_aux(__s, __n);
1319.353 -      }
1319.354 -
1319.355 -      this->width(0);
1319.356 -    }
1319.357 -    _STLP_CATCH_ALL {
1319.358 -      this->_M_handle_exception(ios_base::badbit);
1319.359 -    }
1319.360 -
1319.361 -    if (__failed)
1319.362 -      this->setstate(ios_base::failbit);
1319.363 -  }
1319.364 -}
1319.365 -
1319.366 -template <class _CharT, class _Traits>
1319.367 -bool basic_ostream<_CharT, _Traits>::_M_put_widen_aux(const char* __s,
1319.368 -                                                      streamsize __n)
1319.369 -{
1319.370 -  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1319.371 -
1319.372 -  for ( ; __n > 0 ; --__n)
1319.373 -    if (this->_S_eof(__buf->sputc(this->widen(*__s++))))
1319.374 -      return false;
1319.375 -  return true;
1319.376 -}
1319.377 -
1319.378 -// Unformatted output of a single character.
1319.379 -template <class _CharT, class _Traits>
1319.380 -_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>&
1319.381 -basic_ostream<_CharT, _Traits>::put(char_type __c)
1319.382 -{
1319.383 -  sentry __sentry(*this);
1319.384 -  bool __failed = true;
1319.385 -
1319.386 -  if (__sentry) {
1319.387 -    _STLP_TRY {
1319.388 -      __failed = this->_S_eof(this->rdbuf()->sputc(__c));
1319.389 -    }
1319.390 -    _STLP_CATCH_ALL {
1319.391 -      this->_M_handle_exception(ios_base::badbit);
1319.392 -    }
1319.393 -  }
1319.394 -
1319.395 -  if (__failed)
1319.396 -    this->setstate(ios_base::badbit);
1319.397 -
1319.398 -  return *this;
1319.399 -}
1319.400 -
1319.401 -// Unformatted output of a single character.
1319.402 -template <class _CharT, class _Traits>
1319.403 -_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>&
1319.404 -basic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n)
1319.405 -{
1319.406 -  sentry __sentry(*this);
1319.407 -  bool __failed = true;
1319.408 -
1319.409 -  if (__sentry) {
1319.410 -    _STLP_TRY {
1319.411 -      __failed = this->rdbuf()->sputn(__s, __n) != __n;
1319.412 -    }
1319.413 -    _STLP_CATCH_ALL {
1319.414 -      this->_M_handle_exception(ios_base::badbit);
1319.415 -    }
1319.416 -  }
1319.417 -
1319.418 -  if (__failed)
1319.419 -    this->setstate(ios_base::badbit);
1319.420 -
1319.421 -  return *this;
1319.422 -}
1319.423 -
1319.424 -_STLP_END_NAMESPACE
1319.425 -
1319.426 -#endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1319.427 -
1319.428 -#endif /* _STLP_OSTREAM_C */
  1320.1 --- a/epoc32/include/stdapis/stlport/stl/_ostream.h	Tue Mar 16 16:12:26 2010 +0000
  1320.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1320.3 @@ -1,411 +0,0 @@
  1320.4 -/*
  1320.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1320.6 - *
  1320.7 - * Copyright (c) 1999
  1320.8 - * Silicon Graphics Computer Systems, Inc.
  1320.9 - *
 1320.10 - * Copyright (c) 1999 
 1320.11 - * Boris Fomitchev
 1320.12 - *
 1320.13 - * This material is provided "as is", with absolutely no warranty expressed
 1320.14 - * or implied. Any use is at your own risk.
 1320.15 - *
 1320.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1320.17 - * without fee, provided the above notices are retained on all copies.
 1320.18 - * Permission to modify the code and to distribute modified code is granted,
 1320.19 - * provided the above notices are retained, and a notice that the code was
 1320.20 - * modified is included with the above copyright notice.
 1320.21 - *
 1320.22 - */ 
 1320.23 -
 1320.24 -
 1320.25 -#ifndef _STLP_INTERNAL_OSTREAM_H
 1320.26 -#define _STLP_INTERNAL_OSTREAM_H
 1320.27 -
 1320.28 -#ifndef _STLP_INTERNAL_IOS_H
 1320.29 -# include <stl/_ios.h>                  // For basic_ios<>.  Includes <iosfwd>.
 1320.30 -#endif
 1320.31 -
 1320.32 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1320.33 -# include <stl/_ostreambuf_iterator.h>
 1320.34 -#endif
 1320.35 -
 1320.36 -_STLP_BEGIN_NAMESPACE
 1320.37 -
 1320.38 -template <class _CharT, class _Traits, class _Number> 
 1320.39 -basic_ostream<_CharT, _Traits>& _STLP_CALL
 1320.40 -_M_put_num(basic_ostream<_CharT, _Traits>& __os, _Number __x);
 1320.41 -
 1320.42 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
 1320.43 -template <class _CharT, class _Traits>
 1320.44 -class _Osentry;
 1320.45 -# endif
 1320.46 -
 1320.47 -template <class _CharT, class _Traits>
 1320.48 -bool
 1320.49 -_M_init(basic_ostream<_CharT, _Traits>& __str);
 1320.50 -
 1320.51 -//----------------------------------------------------------------------
 1320.52 -// class basic_ostream<>
 1320.53 -
 1320.54 -template <class _CharT, class _Traits>
 1320.55 -class basic_ostream : virtual public basic_ios<_CharT, _Traits>
 1320.56 -{
 1320.57 -  typedef basic_ostream<_CharT, _Traits> _Self;
 1320.58 -  
 1320.59 -public:                         // Types
 1320.60 -  typedef _CharT                     char_type;
 1320.61 -  typedef typename _Traits::int_type int_type;
 1320.62 -  typedef typename _Traits::pos_type pos_type;
 1320.63 -  typedef typename _Traits::off_type off_type;
 1320.64 -  typedef _Traits                    traits_type;
 1320.65 -  typedef basic_ios<_CharT, _Traits> _Basic_ios;
 1320.66 -
 1320.67 -public:                         // Constructor and destructor.
 1320.68 -  _STLP_DECLSPEC explicit basic_ostream(basic_streambuf<_CharT, _Traits>* __buf);
 1320.69 -  _STLP_DECLSPEC ~basic_ostream();
 1320.70 -
 1320.71 -public:                         // Hooks for manipulators.
 1320.72 -  typedef basic_ios<_CharT, _Traits>& (_STLP_CALL *__ios_fn)(basic_ios<_CharT, _Traits>&);
 1320.73 -  typedef ios_base& (_STLP_CALL *__ios_base_fn)(ios_base&);
 1320.74 -  typedef _Self& (_STLP_CALL *__ostream_fn)(_Self&);
 1320.75 -  _Self& operator<< (__ostream_fn __f) { return __f(*this); }
 1320.76 -  _Self & operator<< (__ios_base_fn __f) { __f(*this); return *this; }
 1320.77 -  _Self& operator<< (__ios_fn __ff) { __ff(*this); return *this; }
 1320.78 -
 1320.79 -private:
 1320.80 -  bool _M_copy_buffered(basic_streambuf<_CharT, _Traits>* __from,
 1320.81 -                        basic_streambuf<_CharT, _Traits>* __to);
 1320.82 -  bool _M_copy_unbuffered(basic_streambuf<_CharT, _Traits>* __from,
 1320.83 -                          basic_streambuf<_CharT, _Traits>* __to);
 1320.84 -
 1320.85 -public:
 1320.86 -  void _M_put_char(_CharT __c);
 1320.87 -
 1320.88 -  void _M_put_nowiden(const _CharT* __s);
 1320.89 -  void _M_put_widen(const char* __s);
 1320.90 -  bool _M_put_widen_aux(const char* __s, streamsize __n);
 1320.91 -
 1320.92 -public:                         // Unformatted output.
 1320.93 -  _Self& put(char_type __c);
 1320.94 -  _Self& write(const char_type* __s, streamsize __n);
 1320.95 -
 1320.96 -public:                         // Formatted output.
 1320.97 -  // Formatted output from a streambuf.
 1320.98 -  _Self& operator<<(basic_streambuf<_CharT, _Traits>* __buf);
 1320.99 -# ifndef _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER
1320.100 -  // this is needed for compiling with option char = unsigned
1320.101 -  _Self& operator<<(unsigned char __x) { _M_put_char(__x); return *this; }
1320.102 -# endif
1320.103 -#ifdef __SYMBIAN32__
1320.104 -  _Self& operator<<(short __x) 
1320.105 -    { 
1320.106 -	ios_base::fmtflags __fmtf =
1320.107 -		ios_base::flags() & ios_base::basefield;
1320.108 -    long __ly = (__fmtf == ios_base::oct ||  __fmtf == ios_base::hex) ? 
1320.109 -                    (long)(unsigned short)(__x) : (long)__x;
1320.110 -    return _M_put_num(*this,  __ly); 
1320.111 -    }
1320.112 -  _Self& operator<<(int __x) 
1320.113 -  { 
1320.114 -	ios_base::fmtflags __fmtf =
1320.115 -		ios_base::flags() & ios_base::basefield;
1320.116 -    long __ly = (__fmtf == ios_base::oct ||  __fmtf == ios_base::hex) ? 
1320.117 -                    (long)(unsigned int)(__x) : (long)__x;
1320.118 -    return _M_put_num(*this,  __ly); 
1320.119 -  }
1320.120 -#else
1320.121 -  _Self& operator<<(short __x) { return _M_put_num(*this,  __x); }
1320.122 -  _Self& operator<<(int __x) { return _M_put_num(*this,  __x); }
1320.123 -#endif
1320.124 -  _Self& operator<<(unsigned int __x) { return _M_put_num(*this,  __STATIC_CAST(unsigned long,__x)); }
1320.125 -  _Self& operator<<(unsigned short __x) { return _M_put_num(*this,  __STATIC_CAST(unsigned long,__x)); }
1320.126 -  _Self& operator<<(long __x) { return _M_put_num(*this,  __x); }
1320.127 -  _Self& operator<<(unsigned long __x) { return _M_put_num(*this,  __x); }
1320.128 -#ifdef _STLP_LONG_LONG
1320.129 -  _Self& operator<< (_STLP_LONG_LONG __x)     { return _M_put_num(*this,  __x); }
1320.130 -  _Self& operator<< (unsigned _STLP_LONG_LONG __x) { return _M_put_num(*this,  __x); }
1320.131 -#endif 
1320.132 -  _Self& operator<<(float __x)
1320.133 -    { return _M_put_num(*this,  __STATIC_CAST(double,__x)); }
1320.134 -  _Self& operator<<(double __x) { return _M_put_num(*this,  __x); }
1320.135 -# ifndef _STLP_NO_LONG_DOUBLE
1320.136 -  _Self& operator<<(long double __x) { return _M_put_num(*this,  __x); }
1320.137 -# endif
1320.138 -  _Self& operator<<(const void* __x) { return _M_put_num(*this,  __x); }
1320.139 -# ifndef _STLP_NO_BOOL
1320.140 -  _Self& operator<<(bool __x) { return _M_put_num(*this,  __x); }
1320.141 -# endif
1320.142 -
1320.143 -public:                         // Buffer positioning and manipulation.
1320.144 -  _Self& flush() {
1320.145 -    if (this->rdbuf())
1320.146 -      if (this->rdbuf()->pubsync() == -1)
1320.147 -        this->setstate(ios_base::badbit);
1320.148 -    return *this;
1320.149 -  }
1320.150 -
1320.151 -  pos_type tellp() {
1320.152 -    return this->rdbuf() && !this->fail()
1320.153 -      ? this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out)
1320.154 -      : pos_type(-1);
1320.155 -  }
1320.156 -
1320.157 -  _Self& seekp(pos_type __pos) {
1320.158 -    if (this->rdbuf() && !this->fail())
1320.159 -      if( pos_type(off_type(-1)) == this->rdbuf()->pubseekpos(__pos, ios_base::out))
1320.160 -        this->setstate(ios_base::failbit);
1320.161 -    return *this;
1320.162 -  }
1320.163 -
1320.164 -  _Self& seekp(off_type __off, ios_base::seekdir __dir) {
1320.165 -    if (this->rdbuf() && !this->fail())
1320.166 -      if( pos_type(off_type(-1)) == this->rdbuf()->pubseekoff(__off, __dir, ios_base::out))
1320.167 -        this->setstate(ios_base::failbit);
1320.168 -    return *this;
1320.169 -  }
1320.170 -
1320.171 -#if defined (_STLP_USE_TEMPLATE_EXPORT)
1320.172 -  // If we are using DLL specs, we have not to use inner classes
1320.173 -  // end class declaration here
1320.174 -  typedef _Osentry<_CharT, _Traits>  sentry;
1320.175 -};
1320.176 -#  define sentry _Osentry
1320.177 -  template <class _CharT, class _Traits>
1320.178 -  class _Osentry {
1320.179 -    typedef _Osentry<_CharT, _Traits> _Self;
1320.180 -# else
1320.181 -    class sentry {
1320.182 -      typedef sentry _Self;
1320.183 -# endif
1320.184 -    private:
1320.185 -      basic_ostream<_CharT, _Traits>& _M_str;
1320.186 -      //      basic_streambuf<_CharT, _Traits>* _M_buf;
1320.187 -      bool _M_ok;
1320.188 -    public:
1320.189 -      explicit sentry(basic_ostream<_CharT, _Traits>& __str)
1320.190 -        : _M_str(__str), /* _M_buf(__str.rdbuf()), */ _M_ok(_M_init(__str))
1320.191 -      {
1320.192 -      }
1320.193 -      
1320.194 -      ~sentry() {
1320.195 -        if (_M_str.flags() & ios_base::unitbuf)
1320.196 -# ifndef _STLP_INCOMPLETE_EXCEPTION_HEADER 
1320.197 -          if (!_STLP_VENDOR_EXCEPT_STD::uncaught_exception())
1320.198 -# endif
1320.199 -            _M_str.flush();
1320.200 -      }
1320.201 -
1320.202 -      operator bool() const { return _M_ok; }
1320.203 -    private:                        // Disable assignment and copy constructor.
1320.204 -      sentry(const _Self& __s) : _M_str (__s._M_str) {};
1320.205 -      void operator=(const _Self&) {};
1320.206 -    };
1320.207 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1320.208 -#  undef sentry
1320.209 -# else
1320.210 -  // close basic_ostream class definition here    
1320.211 -};
1320.212 -# endif
1320.213 -  
1320.214 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1320.215 -_STLP_EXPORT_TEMPLATE_CLASS basic_ostream<char, char_traits<char> >;
1320.216 -_STLP_EXPORT_TEMPLATE_CLASS _Osentry<char, char_traits<char> >;
1320.217 -#  if !defined (_STLP_NO_WCHAR_T)
1320.218 -_STLP_EXPORT_TEMPLATE_CLASS basic_ostream<wchar_t, char_traits<wchar_t> >;
1320.219 -_STLP_EXPORT_TEMPLATE_CLASS _Osentry<wchar_t, char_traits<wchar_t> >;
1320.220 -#  endif
1320.221 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1320.222 -
1320.223 -template <class _CharT, class _Traits>
1320.224 -inline basic_streambuf<_CharT, _Traits>* _STLP_CALL 
1320.225 -_M_get_ostreambuf(basic_ostream<_CharT, _Traits>& __St) 
1320.226 -{
1320.227 -  return __St.rdbuf();
1320.228 -}
1320.229 -
1320.230 -// Non-member functions.
1320.231 -
1320.232 -template <class _CharT, class _Traits>
1320.233 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.234 -operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c) {
1320.235 -  __os._M_put_char(__c);
1320.236 -  return __os;
1320.237 -}
1320.238 -
1320.239 -template <class _CharT, class _Traits>
1320.240 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.241 -operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __s) {
1320.242 -#ifdef __SYMBIAN32__
1320.243 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__s);
1320.244 -#else
1320.245 -  __os._M_put_nowiden(__s);
1320.246 -#endif
1320.247 -  return __os;
1320.248 -}
1320.249 -
1320.250 -# ifdef _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER
1320.251 -// some specializations
1320.252 -
1320.253 -inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1320.254 -operator<<(basic_ostream<char, char_traits<char> >& __os, char __c) {
1320.255 -  __os._M_put_char(__c);
1320.256 -  return __os;
1320.257 -}
1320.258 -
1320.259 -inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1320.260 -operator<<(basic_ostream<char, char_traits<char> >& __os, signed char __c) {
1320.261 -  __os._M_put_char(__c);
1320.262 -  return __os;
1320.263 -}
1320.264 -
1320.265 -inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1320.266 -operator<<(basic_ostream<char, char_traits<char> >& __os, unsigned char __c) {
1320.267 -  __os._M_put_char(__c);
1320.268 -  return __os;
1320.269 -}
1320.270 -
1320.271 -inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1320.272 -operator<<(basic_ostream<char, char_traits<char> >& __os, const char* __s) {
1320.273 -#ifdef __SYMBIAN32__
1320.274 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__s);
1320.275 -#else
1320.276 -  __os._M_put_nowiden(__s);
1320.277 -#endif
1320.278 -  return __os;
1320.279 -}
1320.280 -
1320.281 -inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1320.282 -operator<<(basic_ostream<char, char_traits<char> >& __os, const signed char* __s) {
1320.283 -#ifdef __SYMBIAN32__
1320.284 -   !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.285 -#else
1320.286 -   __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.287 -#endif
1320.288 -  return __os;
1320.289 -}
1320.290 -
1320.291 -inline basic_ostream<char, char_traits<char> >&
1320.292 -operator<<(basic_ostream<char, char_traits<char> >& __os, const unsigned char* __s) {
1320.293 -#ifdef __SYMBIAN32__
1320.294 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.295 -#else
1320.296 -  __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.297 -#endif
1320.298 -  return __os;
1320.299 -}
1320.300 -
1320.301 -# else
1320.302 -
1320.303 -// also for compilers who might use that
1320.304 -template <class _CharT, class _Traits>
1320.305 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.306 -operator<<(basic_ostream<_CharT, _Traits>& __os, char __c) {
1320.307 -  __os._M_put_char(__os.widen(__c));
1320.308 -  return __os;
1320.309 -}
1320.310 -
1320.311 -template <class _Traits>
1320.312 -inline basic_ostream<char, _Traits>& _STLP_CALL
1320.313 -operator<<(basic_ostream<char, _Traits>& __os, char __c) {
1320.314 -  __os._M_put_char(__c);
1320.315 -  return __os;
1320.316 -}
1320.317 -
1320.318 -template <class _Traits>
1320.319 -inline basic_ostream<char, _Traits>& _STLP_CALL
1320.320 -operator<<(basic_ostream<char, _Traits>& __os, signed char __c) {
1320.321 -  __os._M_put_char(__c);
1320.322 -  return __os;
1320.323 -}
1320.324 -
1320.325 -template <class _Traits>
1320.326 -inline basic_ostream<char, _Traits>& _STLP_CALL
1320.327 -operator<<(basic_ostream<char, _Traits>& __os, unsigned char __c) {
1320.328 -  __os._M_put_char(__c);
1320.329 -  return __os;
1320.330 -}
1320.331 -
1320.332 -template <class _CharT, class _Traits>
1320.333 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.334 -operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __s) {
1320.335 -#ifdef __SYMBIAN32__
1320.336 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_widen(__s);
1320.337 -#else
1320.338 -  __os._M_put_widen(__s);
1320.339 -#endif
1320.340 -  return __os;
1320.341 -}
1320.342 -
1320.343 -template <class _Traits>
1320.344 -inline basic_ostream<char, _Traits>& _STLP_CALL
1320.345 -operator<<(basic_ostream<char, _Traits>& __os, const char* __s) {
1320.346 -#ifdef __SYMBIAN32__
1320.347 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__s);
1320.348 -#else
1320.349 -  __os._M_put_nowiden(__s);
1320.350 -#endif
1320.351 -  return __os;
1320.352 -}
1320.353 -
1320.354 -template <class _Traits>
1320.355 -inline basic_ostream<char, _Traits>& _STLP_CALL
1320.356 -operator<<(basic_ostream<char, _Traits>& __os, const signed char* __s) {
1320.357 -#ifdef __SYMBIAN32__
1320.358 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.359 -#else
1320.360 -  __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.361 -#endif
1320.362 -  return __os;
1320.363 -}
1320.364 -
1320.365 -template <class _Traits>
1320.366 -inline basic_ostream<char, _Traits>&
1320.367 -operator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __s) {
1320.368 -#ifdef __SYMBIAN32__
1320.369 -  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.370 -#else
1320.371 -  __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1320.372 -#endif
1320.373 -  return __os;
1320.374 -}
1320.375 -# endif /* _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER */
1320.376 -
1320.377 -//----------------------------------------------------------------------
1320.378 -// basic_ostream manipulators.
1320.379 -
1320.380 -template <class _CharT, class _Traits>
1320.381 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.382 -endl(basic_ostream<_CharT, _Traits>& __os) {
1320.383 -  __os.put(__os.widen('\n'));
1320.384 -  __os.flush();
1320.385 -  return __os;
1320.386 -}
1320.387 -
1320.388 -template <class _CharT, class _Traits>
1320.389 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.390 -ends(basic_ostream<_CharT, _Traits>& __os) {
1320.391 -  __os.put(_STLP_DEFAULT_CONSTRUCTED(_CharT));
1320.392 -  return __os;
1320.393 -}
1320.394 -
1320.395 -template <class _CharT, class _Traits>
1320.396 -inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1320.397 -flush(basic_ostream<_CharT, _Traits>& __os) {
1320.398 -  __os.flush();
1320.399 -  return __os;
1320.400 -}
1320.401 -
1320.402 -_STLP_END_NAMESPACE
1320.403 -
1320.404 -#  undef _STLP_MANIP_INLINE
1320.405 -
1320.406 -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1320.407 -#  include <stl/_ostream.c>
1320.408 -# endif
1320.409 -
1320.410 -#endif /* _STLP_INTERNAL_OSTREAM_H */
1320.411 -
1320.412 -// Local Variables:
1320.413 -// mode:C++
1320.414 -// End:
  1321.1 --- a/epoc32/include/stdapis/stlport/stl/_ostreambuf_iterator.h	Tue Mar 16 16:12:26 2010 +0000
  1321.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1321.3 @@ -1,97 +0,0 @@
  1321.4 -/*
  1321.5 - * Copyright (c) 1999
  1321.6 - * Silicon Graphics Computer Systems, Inc.
  1321.7 - *
  1321.8 - * Copyright (c) 1999 
  1321.9 - * Boris Fomitchev
 1321.10 - *
 1321.11 - * This material is provided "as is", with absolutely no warranty expressed
 1321.12 - * or implied. Any use is at your own risk.
 1321.13 - *
 1321.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1321.15 - * without fee, provided the above notices are retained on all copies.
 1321.16 - * Permission to modify the code and to distribute modified code is granted,
 1321.17 - * provided the above notices are retained, and a notice that the code was
 1321.18 - * modified is included with the above copyright notice.
 1321.19 - *
 1321.20 - */ 
 1321.21 -// WARNING: This is an internal header file, included by other C++
 1321.22 -// standard library headers.  You should not attempt to use this header
 1321.23 -// file directly.
 1321.24 -
 1321.25 -
 1321.26 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1321.27 -#define _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1321.28 -
 1321.29 -#ifndef _STLP_INTERNAL_STREAMBUF
 1321.30 -# include <stl/_streambuf.h>
 1321.31 -#endif
 1321.32 -
 1321.33 -_STLP_BEGIN_NAMESPACE
 1321.34 -
 1321.35 -template <class _CharT, class _Traits>
 1321.36 -extern basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_ostreambuf(basic_ostream<_CharT, _Traits>& ) ;
 1321.37 -
 1321.38 -// The default template argument is declared in iosfwd
 1321.39 -template<class _CharT, class _Traits>
 1321.40 -class ostreambuf_iterator
 1321.41 -{
 1321.42 -public:
 1321.43 -  typedef _CharT                           char_type;
 1321.44 -  typedef _Traits                          traits_type;
 1321.45 -  typedef typename _Traits::int_type       int_type;
 1321.46 -  typedef basic_streambuf<_CharT, _Traits> streambuf_type;
 1321.47 -  typedef basic_ostream<_CharT, _Traits>   ostream_type;
 1321.48 -
 1321.49 -  typedef output_iterator_tag              iterator_category;
 1321.50 -  typedef void                             value_type;
 1321.51 -  typedef void                             difference_type;
 1321.52 -  typedef void                             pointer;
 1321.53 -  typedef void                             reference;
 1321.54 -
 1321.55 -public:
 1321.56 -  ostreambuf_iterator(streambuf_type* __buf) _STLP_NOTHROW : _M_buf(__buf), _M_ok(__buf!=0) {}
 1321.57 -  //  ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW : _M_buf(_M_get_ostreambuf(__o)), _M_ok(_M_buf != 0) {}
 1321.58 -  inline ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW;
 1321.59 -
 1321.60 -  ostreambuf_iterator<_CharT, _Traits>& operator=(char_type __c) {
 1321.61 -    _M_ok = _M_ok && !traits_type::eq_int_type(_M_buf->sputc(__c),
 1321.62 -                                               traits_type::eof());
 1321.63 -    return *this;
 1321.64 -  }    
 1321.65 -  
 1321.66 -  ostreambuf_iterator<_CharT, _Traits>& operator*()     { return *this; }
 1321.67 -  ostreambuf_iterator<_CharT, _Traits>& operator++()    { return *this; }
 1321.68 -  ostreambuf_iterator<_CharT, _Traits>& operator++(int) { return *this; }
 1321.69 -
 1321.70 -  bool failed() const { return !_M_ok; }
 1321.71 -
 1321.72 -private:
 1321.73 -  streambuf_type* _M_buf;
 1321.74 -  bool _M_ok;
 1321.75 -};
 1321.76 -
 1321.77 -template <class _CharT, class _Traits>
 1321.78 -inline ostreambuf_iterator<_CharT, _Traits>::ostreambuf_iterator(basic_ostream<_CharT, _Traits>& __o) _STLP_NOTHROW : _M_buf(_M_get_ostreambuf(__o)), _M_ok(_M_buf != 0) {}
 1321.79 -
 1321.80 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
 1321.81 -_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<char, char_traits<char> >;
 1321.82 -#  if defined (INSTANTIATE_WIDE_STREAMS)
 1321.83 -_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<wchar_t, char_traits<wchar_t> >;
 1321.84 -#  endif
 1321.85 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
 1321.86 -
 1321.87 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1321.88 -template <class _CharT, class _Traits>
 1321.89 -inline output_iterator_tag _STLP_CALL 
 1321.90 -iterator_category(const ostreambuf_iterator<_CharT, _Traits>&) { return output_iterator_tag(); }
 1321.91 -# endif
 1321.92 -
 1321.93 -_STLP_END_NAMESPACE
 1321.94 -
 1321.95 -#endif /* _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H */
 1321.96 -
 1321.97 -// Local Variables:
 1321.98 -// mode:C++
 1321.99 -// End:
1321.100 -
  1322.1 --- a/epoc32/include/stdapis/stlport/stl/_pair.h	Tue Mar 16 16:12:26 2010 +0000
  1322.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1322.3 @@ -1,210 +0,0 @@
  1322.4 -/*
  1322.5 - *
  1322.6 - * Copyright (c) 1994
  1322.7 - * Hewlett-Packard Company
  1322.8 - *
  1322.9 - * Copyright (c) 1996,1997
 1322.10 - * Silicon Graphics Computer Systems, Inc.
 1322.11 - *
 1322.12 - * Copyright (c) 1997
 1322.13 - * Moscow Center for SPARC Technology
 1322.14 - *
 1322.15 - * Copyright (c) 1999 
 1322.16 - * Boris Fomitchev
 1322.17 - *
 1322.18 - * This material is provided "as is", with absolutely no warranty expressed
 1322.19 - * or implied. Any use is at your own risk.
 1322.20 - *
 1322.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1322.22 - * without fee, provided the above notices are retained on all copies.
 1322.23 - * Permission to modify the code and to distribute modified code is granted,
 1322.24 - * provided the above notices are retained, and a notice that the code was
 1322.25 - * modified is included with the above copyright notice.
 1322.26 - *
 1322.27 - */
 1322.28 -
 1322.29 -
 1322.30 -/* NOTE: This is an internal header file, included by other STL headers.
 1322.31 - *   You should not attempt to use it directly.
 1322.32 - */
 1322.33 -
 1322.34 -#ifndef _STLP_INTERNAL_PAIR_H
 1322.35 -#define _STLP_INTERNAL_PAIR_H
 1322.36 -
 1322.37 -#include <stl/_construct.h>
 1322.38 -
 1322.39 -_STLP_BEGIN_NAMESPACE
 1322.40 -
 1322.41 -#ifdef _STLP_USE_TRAP_LEAVE
 1322.42 -template <class _T1, class _T2>
 1322.43 -struct pair {
 1322.44 -  typedef _T1 first_type;
 1322.45 -  typedef _T2 second_type;
 1322.46 -
 1322.47 -  _T1 first;
 1322.48 -  _STLP_StackPusher<_T1> __pusher;
 1322.49 -  _T2 second;
 1322.50 -
 1322.51 -  // first and second should construct themselves with their default constructors in ANSI order
 1322.52 -  pair() : __pusher(&first) {
 1322.53 -    CleanupStack::Pop();
 1322.54 -  }
 1322.55 -
 1322.56 -  pair(const _T1& __a, const _T2& __b) : first(__a), __pusher(&first), second(__b) {
 1322.57 -    CleanupStack::Pop();
 1322.58 -  }
 1322.59 -
 1322.60 -  // undergroud extensions
 1322.61 -  pair(const _T1& __a, __false_type) : first(__a), __pusher(&first), second() {
 1322.62 -    CleanupStack::Pop();
 1322.63 -  }
 1322.64 -  pair(__true_type, const _T2& __a) : first(), __pusher(&first), second(__a) {
 1322.65 -    CleanupStack::Pop();
 1322.66 -  }
 1322.67 -
 1322.68 -#if defined (_STLP_MEMBER_TEMPLATES) && !(defined (_STLP_MSVC) && (_STLP_MSVC < 1200))
 1322.69 -  template <class _U1, class _U2>
 1322.70 -  pair(const pair<_U1, _U2>& __p) : first(__p.first), __pusher(&first), second(__p.second) {
 1322.71 -    CleanupStack::Pop();
 1322.72 -  }
 1322.73 -
 1322.74 -  pair(const pair<_T1,_T2>& __o) : first(__o.first), __pusher(&first), second(__o.second) {
 1322.75 -    CleanupStack::Pop();
 1322.76 -  }
 1322.77 -#endif
 1322.78 -  __TRIVIAL_DESTRUCTOR(pair)
 1322.79 -};
 1322.80 -
 1322.81 -#else
 1322.82 -
 1322.83 -template <class _T1, class _T2>
 1322.84 -struct pair {
 1322.85 -  typedef _T1 first_type;
 1322.86 -  typedef _T2 second_type;
 1322.87 -
 1322.88 -  _T1 first;
 1322.89 -  _T2 second;
 1322.90 -# if defined (_STLP_CONST_CONSTRUCTOR_BUG)
 1322.91 -  pair() {}
 1322.92 -# else
 1322.93 -  pair() : first(_T1()), second(_T2()) {}
 1322.94 -# endif
 1322.95 -  pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {}
 1322.96 -
 1322.97 -  // undergroud extensions
 1322.98 -  pair(const _T1& __a, __false_type) : first(__a), second() {}
 1322.99 -  pair(const _T2& __a, __true_type) : first(), second(__a) {}
1322.100 -
1322.101 -#if defined (_STLP_MEMBER_TEMPLATES) && !(defined (_STLP_MSVC) && (_STLP_MSVC < 1200))
1322.102 -  template <class _U1, class _U2>
1322.103 -  pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}
1322.104 -
1322.105 -  pair(const pair<_T1,_T2>& __o) : first(__o.first), second(__o.second) {}
1322.106 -#endif
1322.107 -  __TRIVIAL_DESTRUCTOR(pair)
1322.108 -};
1322.109 -#endif
1322.110 -
1322.111 -template <class _T1, class _T2>
1322.112 -inline bool _STLP_CALL operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
1322.113 -{ 
1322.114 -  return __x.first == __y.first && __x.second == __y.second; 
1322.115 -}
1322.116 -
1322.117 -template <class _T1, class _T2>
1322.118 -inline bool _STLP_CALL operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
1322.119 -{ 
1322.120 -  return __x.first < __y.first || 
1322.121 -         (!(__y.first < __x.first) && __x.second < __y.second); 
1322.122 -}
1322.123 -
1322.124 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1322.125 -
1322.126 -template <class _T1, class _T2>
1322.127 -inline bool _STLP_CALL operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1322.128 -  return !(__x == __y);
1322.129 -}
1322.130 -
1322.131 -template <class _T1, class _T2>
1322.132 -inline bool _STLP_CALL operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1322.133 -  return __y < __x;
1322.134 -}
1322.135 -
1322.136 -template <class _T1, class _T2>
1322.137 -inline bool _STLP_CALL operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1322.138 -  return !(__y < __x);
1322.139 -}
1322.140 -
1322.141 -template <class _T1, class _T2>
1322.142 -inline bool _STLP_CALL operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1322.143 -  return !(__x < __y);
1322.144 -}
1322.145 -
1322.146 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1322.147 -
1322.148 -
1322.149 -#if defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && ! defined (_STLP_NO_EXTENSIONS) && ! defined (__BORLANDC__) && ! defined (__DMC__)
1322.150 -template <class _T1, class _T2, int _Sz>
1322.151 -inline pair<_T1, _T2 const*> make_pair(_T1 const& __x,
1322.152 -                                       _T2 const (&__y)[_Sz])
1322.153 -{
1322.154 -  return pair<_T1, _T2 const*>(__x, static_cast<_T2 const*>(__y));
1322.155 -}
1322.156 -
1322.157 -template <class _T1, class _T2, int _Sz>
1322.158 -inline pair<_T1 const*, _T2> make_pair(_T1 const (&__x)[_Sz],
1322.159 -                                       _T2 const& __y)
1322.160 -{
1322.161 -  return pair<_T1 const*, _T2>(static_cast<_T1 const*>(__x), __y);
1322.162 -}
1322.163 -
1322.164 -template <class _T1, class _T2, int _Sz1, int _Sz2>
1322.165 -inline pair<_T1 const*, _T2 const*> make_pair(_T1 const (&__x)[_Sz1],
1322.166 -                                              _T2 const (&__y)[_Sz2])
1322.167 -{
1322.168 -  return pair<_T1 const*, _T2 const*>(static_cast<_T1 const*>(__x),
1322.169 -                                      static_cast<_T2 const*>(__y));
1322.170 -}
1322.171 -#endif
1322.172 -
1322.173 -template <class _T1, class _T2>
1322.174 -inline pair<_T1, _T2> _STLP_CALL make_pair(const _T1& __x, const _T2& __y)
1322.175 -{
1322.176 -  return pair<_T1, _T2>(__x, __y);
1322.177 -}
1322.178 -
1322.179 -
1322.180 -_STLP_END_NAMESPACE
1322.181 -
1322.182 -# if defined (_STLP_USE_NAMESPACES) || ! defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) 
1322.183 -_STLP_BEGIN_RELOPS_NAMESPACE
1322.184 -
1322.185 -template <class _Tp>
1322.186 -inline bool _STLP_CALL operator!=(const _Tp& __x, const _Tp& __y) {
1322.187 -  return !(__x == __y);
1322.188 -}
1322.189 -
1322.190 -template <class _Tp>
1322.191 -inline bool _STLP_CALL operator>(const _Tp& __x, const _Tp& __y) {
1322.192 -  return __y < __x;
1322.193 -}
1322.194 -
1322.195 -template <class _Tp>
1322.196 -inline bool _STLP_CALL operator<=(const _Tp& __x, const _Tp& __y) {
1322.197 -  return !(__y < __x);
1322.198 -}
1322.199 -
1322.200 -template <class _Tp>
1322.201 -inline bool _STLP_CALL  operator>=(const _Tp& __x, const _Tp& __y) {
1322.202 -  return !(__x < __y);
1322.203 -}
1322.204 -
1322.205 -_STLP_END_RELOPS_NAMESPACE
1322.206 -
1322.207 -# endif
1322.208 -
1322.209 -#endif /* _STLP_INTERNAL_PAIR_H */
1322.210 -
1322.211 -// Local Variables:
1322.212 -// mode:C++
1322.213 -// End:
  1323.1 --- a/epoc32/include/stdapis/stlport/stl/_pthread_alloc.h	Tue Mar 16 16:12:26 2010 +0000
  1323.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1323.3 @@ -1,489 +0,0 @@
  1323.4 -/*
  1323.5 - *
  1323.6 - * Copyright (c) 1994
  1323.7 - * Hewlett-Packard Company
  1323.8 - *
  1323.9 - * Copyright (c) 1996,1997
 1323.10 - * Silicon Graphics Computer Systems, Inc.
 1323.11 - *
 1323.12 - * Copyright (c) 1997
 1323.13 - * Moscow Center for SPARC Technology
 1323.14 - *
 1323.15 - * Copyright (c) 1999 
 1323.16 - * Boris Fomitchev
 1323.17 - *
 1323.18 - * This material is provided "as is", with absolutely no warranty expressed
 1323.19 - * or implied. Any use is at your own risk.
 1323.20 - *
 1323.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1323.22 - * without fee, provided the above notices are retained on all copies.
 1323.23 - * Permission to modify the code and to distribute modified code is granted,
 1323.24 - * provided the above notices are retained, and a notice that the code was
 1323.25 - * modified is included with the above copyright notice.
 1323.26 - *
 1323.27 - */
 1323.28 -
 1323.29 -#ifndef _STLP_PTHREAD_ALLOC_H
 1323.30 -#define _STLP_PTHREAD_ALLOC_H
 1323.31 -
 1323.32 -// Pthread-specific node allocator.
 1323.33 -// This is similar to the default allocator, except that free-list
 1323.34 -// information is kept separately for each thread, avoiding locking.
 1323.35 -// This should be reasonably fast even in the presence of threads.
 1323.36 -// The down side is that storage may not be well-utilized.
 1323.37 -// It is not an error to allocate memory in thread A and deallocate
 1323.38 -// it in thread B.  But this effectively transfers ownership of the memory,
 1323.39 -// so that it can only be reallocated by thread B.  Thus this can effectively
 1323.40 -// result in a storage leak if it's done on a regular basis.
 1323.41 -// It can also result in frequent sharing of
 1323.42 -// cache lines among processors, with potentially serious performance
 1323.43 -// consequences.
 1323.44 -
 1323.45 -#include <pthread.h>
 1323.46 -
 1323.47 -#ifndef _STLP_INTERNAL_ALLOC_H
 1323.48 -#include <stl/_alloc.h>
 1323.49 -#endif
 1323.50 -
 1323.51 -#ifndef __RESTRICT
 1323.52 -#  define __RESTRICT
 1323.53 -#endif
 1323.54 -
 1323.55 -_STLP_BEGIN_NAMESPACE
 1323.56 -
 1323.57 -#define _STLP_DATA_ALIGNMENT 8
 1323.58 -
 1323.59 -union _Pthread_alloc_obj {
 1323.60 -    union _Pthread_alloc_obj * __free_list_link;
 1323.61 -    char __client_data[_STLP_DATA_ALIGNMENT];    /* The client sees this.    */
 1323.62 -};
 1323.63 -
 1323.64 -// Pthread allocators don't appear to the client to have meaningful
 1323.65 -// instances.  We do in fact need to associate some state with each
 1323.66 -// thread.  That state is represented by
 1323.67 -// _Pthread_alloc_per_thread_state<_Max_size>.
 1323.68 -
 1323.69 -template<size_t _Max_size>
 1323.70 -struct _Pthread_alloc_per_thread_state {
 1323.71 -  typedef _Pthread_alloc_obj __obj;
 1323.72 -  enum { _S_NFREELISTS = _Max_size/_STLP_DATA_ALIGNMENT };
 1323.73 -
 1323.74 -  // Free list link for list of available per thread structures.
 1323.75 -  // When one of these becomes available for reuse due to thread
 1323.76 -  // termination, any objects in its free list remain associated
 1323.77 -  // with it.  The whole structure may then be used by a newly
 1323.78 -  // created thread.
 1323.79 -  _Pthread_alloc_per_thread_state() : __next(0)
 1323.80 -  {
 1323.81 -    memset((void *)__free_list, 0, (size_t)_S_NFREELISTS * sizeof(__obj *));
 1323.82 -  }
 1323.83 -  // Returns an object of size __n, and possibly adds to size n free list.
 1323.84 -  void *_M_refill(size_t __n);
 1323.85 -  
 1323.86 -  _Pthread_alloc_obj* volatile __free_list[_S_NFREELISTS]; 
 1323.87 -  _Pthread_alloc_per_thread_state<_Max_size> * __next; 
 1323.88 -  // this data member is only to be used by per_thread_allocator, which returns memory to the originating thread.
 1323.89 -  _STLP_mutex _M_lock;
 1323.90 -
 1323.91 - };
 1323.92 -
 1323.93 -// Pthread-specific allocator.
 1323.94 -// The argument specifies the largest object size allocated from per-thread
 1323.95 -// free lists.  Larger objects are allocated using malloc_alloc.
 1323.96 -// Max_size must be a power of 2.
 1323.97 -template < __DFL_NON_TYPE_PARAM(size_t, _Max_size, _MAX_BYTES) >
 1323.98 -class _Pthread_alloc {
 1323.99 -
1323.100 -public: // but only for internal use:
1323.101 -
1323.102 -  typedef _Pthread_alloc_obj __obj;
1323.103 -  typedef _Pthread_alloc_per_thread_state<_Max_size> __state_type;
1323.104 -  typedef char value_type;
1323.105 -
1323.106 -  // Allocates a chunk for nobjs of size size.  nobjs may be reduced
1323.107 -  // if it is inconvenient to allocate the requested number.
1323.108 -  static char *_S_chunk_alloc(size_t __size, size_t &__nobjs);
1323.109 -
1323.110 -  enum {_S_ALIGN = _STLP_DATA_ALIGNMENT};
1323.111 -
1323.112 -  static size_t _S_round_up(size_t __bytes) {
1323.113 -        return (((__bytes) + (int)_S_ALIGN-1) & ~((int)_S_ALIGN - 1));
1323.114 -  }
1323.115 -  static size_t _S_freelist_index(size_t __bytes) {
1323.116 -        return (((__bytes) + (int)_S_ALIGN-1)/(int)_S_ALIGN - 1);
1323.117 -  }
1323.118 -
1323.119 -private:
1323.120 -  // Chunk allocation state. And other shared state.
1323.121 -  // Protected by _S_chunk_allocator_lock.
1323.122 -  static _STLP_mutex_base _S_chunk_allocator_lock;
1323.123 -  static char *_S_start_free;
1323.124 -  static char *_S_end_free;
1323.125 -  static size_t _S_heap_size;
1323.126 -  static _Pthread_alloc_per_thread_state<_Max_size>* _S_free_per_thread_states;
1323.127 -  static pthread_key_t _S_key;
1323.128 -  static bool _S_key_initialized;
1323.129 -        // Pthread key under which per thread state is stored. 
1323.130 -        // Allocator instances that are currently unclaimed by any thread.
1323.131 -  static void _S_destructor(void *instance);
1323.132 -        // Function to be called on thread exit to reclaim per thread
1323.133 -        // state.
1323.134 -  static _Pthread_alloc_per_thread_state<_Max_size> *_S_new_per_thread_state();
1323.135 -public:
1323.136 -        // Return a recycled or new per thread state.
1323.137 -  static _Pthread_alloc_per_thread_state<_Max_size> *_S_get_per_thread_state();
1323.138 -private:
1323.139 -        // ensure that the current thread has an associated
1323.140 -        // per thread state.
1323.141 -  class _M_lock;
1323.142 -  friend class _M_lock;
1323.143 -  class _M_lock {
1323.144 -      public:
1323.145 -        _M_lock () { _S_chunk_allocator_lock._M_acquire_lock(); }
1323.146 -        ~_M_lock () { _S_chunk_allocator_lock._M_release_lock(); }
1323.147 -  };
1323.148 -
1323.149 -public:
1323.150 -
1323.151 -  /* n must be > 0      */
1323.152 -  static void * allocate(size_t __n)
1323.153 -  {
1323.154 -    __obj * volatile * __my_free_list;
1323.155 -    __obj * __RESTRICT __result;
1323.156 -    __state_type* __a;
1323.157 -
1323.158 -    if (__n > _Max_size) {
1323.159 -        return(__malloc_alloc<0>::allocate(__n));
1323.160 -    }
1323.161 -
1323.162 -    __a = _S_get_per_thread_state();
1323.163 -
1323.164 -    __my_free_list = __a -> __free_list + _S_freelist_index(__n);
1323.165 -    __result = *__my_free_list;
1323.166 -    if (__result == 0) {
1323.167 -        void *__r = __a -> _M_refill(_S_round_up(__n));
1323.168 -        return __r;
1323.169 -    }
1323.170 -    *__my_free_list = __result -> __free_list_link;
1323.171 -    return (__result);
1323.172 -  };
1323.173 -
1323.174 -  /* p may not be 0 */
1323.175 -  static void deallocate(void *__p, size_t __n)
1323.176 -  {
1323.177 -    __obj *__q = (__obj *)__p;
1323.178 -    __obj * volatile * __my_free_list;
1323.179 -    __state_type* __a;
1323.180 -
1323.181 -    if (__n > _Max_size) {
1323.182 -        __malloc_alloc<0>::deallocate(__p, __n);
1323.183 -        return;
1323.184 -    }
1323.185 -
1323.186 -    __a = _S_get_per_thread_state();
1323.187 -    
1323.188 -    __my_free_list = __a->__free_list + _S_freelist_index(__n);
1323.189 -    __q -> __free_list_link = *__my_free_list;
1323.190 -    *__my_free_list = __q;
1323.191 -  }
1323.192 -
1323.193 -  // boris : versions for per_thread_allocator
1323.194 -  /* n must be > 0      */
1323.195 -  static void * allocate(size_t __n, __state_type* __a)
1323.196 -  {
1323.197 -    __obj * volatile * __my_free_list;
1323.198 -    __obj * __RESTRICT __result;
1323.199 -
1323.200 -    if (__n > _Max_size) {
1323.201 -        return(__malloc_alloc<0>::allocate(__n));
1323.202 -    }
1323.203 -
1323.204 -    // boris : here, we have to lock per thread state, as we may be getting memory from
1323.205 -    // different thread pool.
1323.206 -    _STLP_mutex_lock __lock(__a->_M_lock);
1323.207 -
1323.208 -    __my_free_list = __a -> __free_list + _S_freelist_index(__n);
1323.209 -    __result = *__my_free_list;
1323.210 -    if (__result == 0) {
1323.211 -        void *__r = __a -> _M_refill(_S_round_up(__n));
1323.212 -        return __r;
1323.213 -    }
1323.214 -    *__my_free_list = __result -> __free_list_link;
1323.215 -    return (__result);
1323.216 -  };
1323.217 -
1323.218 -  /* p may not be 0 */
1323.219 -  static void deallocate(void *__p, size_t __n, __state_type* __a)
1323.220 -  {
1323.221 -    __obj *__q = (__obj *)__p;
1323.222 -    __obj * volatile * __my_free_list;
1323.223 -
1323.224 -    if (__n > _Max_size) {
1323.225 -        __malloc_alloc<0>::deallocate(__p, __n);
1323.226 -        return;
1323.227 -    }
1323.228 -
1323.229 -    // boris : here, we have to lock per thread state, as we may be returning memory from
1323.230 -    // different thread.
1323.231 -    _STLP_mutex_lock __lock(__a->_M_lock);
1323.232 -
1323.233 -    __my_free_list = __a->__free_list + _S_freelist_index(__n);
1323.234 -    __q -> __free_list_link = *__my_free_list;
1323.235 -    *__my_free_list = __q;
1323.236 -  }
1323.237 -
1323.238 -  static void * reallocate(void *__p, size_t __old_sz, size_t __new_sz);
1323.239 -
1323.240 -} ;
1323.241 -
1323.242 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1323.243 -_STLP_EXPORT_TEMPLATE_CLASS _Pthread_alloc<_MAX_BYTES>;
1323.244 -# endif
1323.245 -
1323.246 -typedef _Pthread_alloc<_MAX_BYTES> __pthread_alloc;
1323.247 -typedef __pthread_alloc pthread_alloc;
1323.248 -
1323.249 -template <class _Tp>
1323.250 -class pthread_allocator {
1323.251 -  typedef pthread_alloc _S_Alloc;          // The underlying allocator.
1323.252 -public:
1323.253 -  typedef size_t     size_type;
1323.254 -  typedef ptrdiff_t  difference_type;
1323.255 -  typedef _Tp*       pointer;
1323.256 -  typedef const _Tp* const_pointer;
1323.257 -  typedef _Tp&       reference;
1323.258 -  typedef const _Tp& const_reference;
1323.259 -  typedef _Tp        value_type;
1323.260 -
1323.261 -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1323.262 -  template <class _NewType> struct rebind {
1323.263 -    typedef pthread_allocator<_NewType> other;
1323.264 -  };
1323.265 -#endif
1323.266 -
1323.267 -  pthread_allocator() _STLP_NOTHROW {}
1323.268 -  pthread_allocator(const pthread_allocator<_Tp>& a) _STLP_NOTHROW {}
1323.269 -
1323.270 -#if defined (_STLP_MEMBER_TEMPLATES) /* && defined (_STLP_FUNCTION_PARTIAL_ORDER) */
1323.271 -  template <class _OtherType> pthread_allocator(const pthread_allocator<_OtherType>&)
1323.272 -		_STLP_NOTHROW {}
1323.273 -#endif
1323.274 -
1323.275 -  ~pthread_allocator() _STLP_NOTHROW {}
1323.276 -
1323.277 -  pointer address(reference __x) const { return &__x; }
1323.278 -  const_pointer address(const_reference __x) const { return &__x; }
1323.279 -
1323.280 -  // __n is permitted to be 0.  The C++ standard says nothing about what
1323.281 -  // the return value is when __n == 0.
1323.282 -  _Tp* allocate(size_type __n, const void* = 0) {
1323.283 -    return __n != 0 ? __STATIC_CAST(_Tp*,_S_Alloc::allocate(__n * sizeof(_Tp)))
1323.284 -                    : 0;
1323.285 -  }
1323.286 -
1323.287 -  // p is not permitted to be a null pointer.
1323.288 -  void deallocate(pointer __p, size_type __n)
1323.289 -    { _S_Alloc::deallocate(__p, __n * sizeof(_Tp)); }
1323.290 -
1323.291 -  size_type max_size() const _STLP_NOTHROW 
1323.292 -    { return size_t(-1) / sizeof(_Tp); }
1323.293 -
1323.294 -  void construct(pointer __p, const _Tp& __val) { _STLP_PLACEMENT_NEW (__p) _Tp(__val); }
1323.295 -  void destroy(pointer _p) { _p->~_Tp(); }
1323.296 -};
1323.297 -
1323.298 -_STLP_TEMPLATE_NULL
1323.299 -class _STLP_CLASS_DECLSPEC pthread_allocator<void> {
1323.300 -public:
1323.301 -  typedef size_t      size_type;
1323.302 -  typedef ptrdiff_t   difference_type;
1323.303 -  typedef void*       pointer;
1323.304 -  typedef const void* const_pointer;
1323.305 -  typedef void        value_type;
1323.306 -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1323.307 -  template <class _NewType> struct rebind {
1323.308 -    typedef pthread_allocator<_NewType> other;
1323.309 -  };
1323.310 -#endif
1323.311 -};
1323.312 -
1323.313 -template <class _T1, class _T2>
1323.314 -inline bool operator==(const pthread_allocator<_T1>&,
1323.315 -                       const pthread_allocator<_T2>& a2) 
1323.316 -{
1323.317 -  return true;
1323.318 -}
1323.319 -
1323.320 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1323.321 -template <class _T1, class _T2>
1323.322 -inline bool operator!=(const pthread_allocator<_T1>&,
1323.323 -                       const pthread_allocator<_T2>&)
1323.324 -{
1323.325 -  return false;
1323.326 -}
1323.327 -#endif
1323.328 -
1323.329 -
1323.330 -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1323.331 -
1323.332 -# ifdef _STLP_USE_RAW_SGI_ALLOCATORS
1323.333 -template <class _Tp, size_t _Max_size>
1323.334 -struct _Alloc_traits<_Tp, _Pthread_alloc<_Max_size> >
1323.335 -{
1323.336 -  typedef __allocator<_Tp, _Pthread_alloc<_Max_size> > 
1323.337 -          allocator_type;
1323.338 -};
1323.339 -# endif
1323.340 -
1323.341 -template <class _Tp, class _Atype>
1323.342 -struct _Alloc_traits<_Tp, pthread_allocator<_Atype> >
1323.343 -{
1323.344 -  typedef pthread_allocator<_Tp> allocator_type;
1323.345 -};
1323.346 -
1323.347 -#endif
1323.348 -
1323.349 -#if !defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
1323.350 -
1323.351 -template <class _Tp1, class _Tp2>
1323.352 -inline pthread_allocator<_Tp2>&
1323.353 -__stl_alloc_rebind(pthread_allocator<_Tp1>& __x, const _Tp2*) {
1323.354 -  return (pthread_allocator<_Tp2>&)__x;
1323.355 -}
1323.356 -
1323.357 -template <class _Tp1, class _Tp2>
1323.358 -inline pthread_allocator<_Tp2>
1323.359 -__stl_alloc_create(pthread_allocator<_Tp1>&, const _Tp2*) {
1323.360 -  return pthread_allocator<_Tp2>();
1323.361 -}
1323.362 -
1323.363 -#endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1323.364 -
1323.365 -//
1323.366 -// per_thread_allocator<> : this allocator always return memory to the same thread 
1323.367 -// it was allocated from.
1323.368 -//
1323.369 -
1323.370 -template <class _Tp>
1323.371 -class per_thread_allocator {
1323.372 -  typedef pthread_alloc _S_Alloc;          // The underlying allocator.
1323.373 -  typedef pthread_alloc::__state_type __state_type;
1323.374 -public:
1323.375 -  typedef size_t     size_type;
1323.376 -  typedef ptrdiff_t  difference_type;
1323.377 -  typedef _Tp*       pointer;
1323.378 -  typedef const _Tp* const_pointer;
1323.379 -  typedef _Tp&       reference;
1323.380 -  typedef const _Tp& const_reference;
1323.381 -  typedef _Tp        value_type;
1323.382 -
1323.383 -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1323.384 -  template <class _NewType> struct rebind {
1323.385 -    typedef per_thread_allocator<_NewType> other;
1323.386 -  };
1323.387 -#endif
1323.388 -
1323.389 -  per_thread_allocator() _STLP_NOTHROW { 
1323.390 -    _M_state = _S_Alloc::_S_get_per_thread_state();
1323.391 -  }
1323.392 -  per_thread_allocator(const per_thread_allocator<_Tp>& __a) _STLP_NOTHROW : _M_state(__a._M_state){}
1323.393 -
1323.394 -#if defined (_STLP_MEMBER_TEMPLATES) /* && defined (_STLP_FUNCTION_PARTIAL_ORDER) */
1323.395 -  template <class _OtherType> per_thread_allocator(const per_thread_allocator<_OtherType>& __a)
1323.396 -		_STLP_NOTHROW : _M_state(__a._M_state) {}
1323.397 -#endif
1323.398 -
1323.399 -  ~per_thread_allocator() _STLP_NOTHROW {}
1323.400 -
1323.401 -  pointer address(reference __x) const { return &__x; }
1323.402 -  const_pointer address(const_reference __x) const { return &__x; }
1323.403 -
1323.404 -  // __n is permitted to be 0.  The C++ standard says nothing about what
1323.405 -  // the return value is when __n == 0.
1323.406 -  _Tp* allocate(size_type __n, const void* = 0) {
1323.407 -    return __n != 0 ? __STATIC_CAST(_Tp*,_S_Alloc::allocate(__n * sizeof(_Tp), _M_state)): 0;
1323.408 -  }
1323.409 -
1323.410 -  // p is not permitted to be a null pointer.
1323.411 -  void deallocate(pointer __p, size_type __n)
1323.412 -    { _S_Alloc::deallocate(__p, __n * sizeof(_Tp), _M_state); }
1323.413 -
1323.414 -  size_type max_size() const _STLP_NOTHROW 
1323.415 -    { return size_t(-1) / sizeof(_Tp); }
1323.416 -
1323.417 -  void construct(pointer __p, const _Tp& __val) { _STLP_PLACEMENT_NEW (__p) _Tp(__val); }
1323.418 -  void destroy(pointer _p) { _p->~_Tp(); }
1323.419 -
1323.420 -  // state is being kept here
1323.421 -  __state_type* _M_state;
1323.422 -};
1323.423 -
1323.424 -_STLP_TEMPLATE_NULL
1323.425 -class _STLP_CLASS_DECLSPEC per_thread_allocator<void> {
1323.426 -public:
1323.427 -  typedef size_t      size_type;
1323.428 -  typedef ptrdiff_t   difference_type;
1323.429 -  typedef void*       pointer;
1323.430 -  typedef const void* const_pointer;
1323.431 -  typedef void        value_type;
1323.432 -#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1323.433 -  template <class _NewType> struct rebind {
1323.434 -    typedef per_thread_allocator<_NewType> other;
1323.435 -  };
1323.436 -#endif
1323.437 -};
1323.438 -
1323.439 -template <class _T1, class _T2>
1323.440 -inline bool operator==(const per_thread_allocator<_T1>& __a1,
1323.441 -                       const per_thread_allocator<_T2>& __a2) 
1323.442 -{
1323.443 -  return __a1._M_state == __a2._M_state;
1323.444 -}
1323.445 -
1323.446 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1323.447 -template <class _T1, class _T2>
1323.448 -inline bool operator!=(const per_thread_allocator<_T1>& __a1,
1323.449 -                       const per_thread_allocator<_T2>& __a2)
1323.450 -{
1323.451 -  return __a1._M_state != __a2._M_state;
1323.452 -}
1323.453 -#endif
1323.454 -
1323.455 -
1323.456 -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1323.457 -
1323.458 -template <class _Tp, class _Atype>
1323.459 -struct _Alloc_traits<_Tp, per_thread_allocator<_Atype> >
1323.460 -{
1323.461 -  typedef per_thread_allocator<_Tp> allocator_type;
1323.462 -};
1323.463 -
1323.464 -#endif
1323.465 -
1323.466 -#if !defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
1323.467 -
1323.468 -template <class _Tp1, class _Tp2>
1323.469 -inline per_thread_allocator<_Tp2>&
1323.470 -__stl_alloc_rebind(per_thread_allocator<_Tp1>& __x, const _Tp2*) {
1323.471 -  return (per_thread_allocator<_Tp2>&)__x;
1323.472 -}
1323.473 -
1323.474 -template <class _Tp1, class _Tp2>
1323.475 -inline per_thread_allocator<_Tp2>
1323.476 -__stl_alloc_create(per_thread_allocator<_Tp1>&, const _Tp2*) {
1323.477 -  return per_thread_allocator<_Tp2>();
1323.478 -}
1323.479 -
1323.480 -#endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1323.481 -
1323.482 -_STLP_END_NAMESPACE
1323.483 -
1323.484 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1323.485 -#  include <stl/_pthread_alloc.c>
1323.486 -# endif
1323.487 -
1323.488 -#endif /* _STLP_PTHREAD_ALLOC */
1323.489 -
1323.490 -// Local Variables:
1323.491 -// mode:C++
1323.492 -// End:
  1324.1 --- a/epoc32/include/stdapis/stlport/stl/_ptrs_specialize.h	Tue Mar 16 16:12:26 2010 +0000
  1324.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1324.3 @@ -1,72 +0,0 @@
  1324.4 -#ifndef _STLP_PTRS_SPECIALIZE_H
  1324.5 -# define _STLP_PTRS_SPECIALIZE_H
  1324.6 -
  1324.7 -// the following is a workaround for arrow operator problems
  1324.8 -#  if defined  ( _STLP_NO_ARROW_OPERATOR ) 
  1324.9 -// User wants to disable proxy -> operators
 1324.10 -#    define _STLP_DEFINE_ARROW_OPERATOR
 1324.11 -#    define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp)
 1324.12 -# else
 1324.13 -// Compiler can handle generic -> operator.
 1324.14 -#  define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp)
 1324.15 -#  ifdef __BORLANDC__
 1324.16 -#   define _STLP_DEFINE_ARROW_OPERATOR  pointer operator->() const { return &(*(*this)); }
 1324.17 -#  elif defined ( _STLP_WINCE ) || defined(__WATCOMC__)
 1324.18 -#   define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; }
 1324.19 -#  else
 1324.20 -#   define _STLP_DEFINE_ARROW_OPERATOR  pointer operator->() const { return &(operator*()); }
 1324.21 -#  endif
 1324.22 -# endif /* _STLP_NO_ARROW_OPERATOR */
 1324.23 -
 1324.24 -// Important pointers specializations
 1324.25 -
 1324.26 -# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
 1324.27 -#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type)
 1324.28 -#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type)
 1324.29 -# else
 1324.30 -#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<true> {};
 1324.31 -#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) \
 1324.32 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type*) \
 1324.33 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type*) \
 1324.34 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type**) \
 1324.35 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type* const *) \
 1324.36 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type**) \
 1324.37 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type***) \
 1324.38 -_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type***)
 1324.39 -# endif
 1324.40 -
 1324.41 -# define _STLP_POINTERS_SPECIALIZE(_Type) _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Type)
 1324.42 -
 1324.43 -#  if !defined ( _STLP_NO_BOOL )
 1324.44 -_STLP_POINTERS_SPECIALIZE( bool )
 1324.45 -#  endif
 1324.46 -_STLP_TYPE_TRAITS_POD_SPECIALIZE_V(void)
 1324.47 -# ifndef _STLP_NO_SIGNED_BUILTINS
 1324.48 -  _STLP_POINTERS_SPECIALIZE( signed char )
 1324.49 -# endif
 1324.50 -  _STLP_POINTERS_SPECIALIZE( char )
 1324.51 -  _STLP_POINTERS_SPECIALIZE( unsigned char )
 1324.52 -  _STLP_POINTERS_SPECIALIZE( short )
 1324.53 -  _STLP_POINTERS_SPECIALIZE( unsigned short )
 1324.54 -  _STLP_POINTERS_SPECIALIZE( int )
 1324.55 -  _STLP_POINTERS_SPECIALIZE( unsigned int )
 1324.56 -  _STLP_POINTERS_SPECIALIZE( long )
 1324.57 -  _STLP_POINTERS_SPECIALIZE( unsigned long )
 1324.58 -  _STLP_POINTERS_SPECIALIZE( float )
 1324.59 -  _STLP_POINTERS_SPECIALIZE( double )
 1324.60 -#  if !defined ( _STLP_NO_LONG_DOUBLE )
 1324.61 -  _STLP_POINTERS_SPECIALIZE( long double )
 1324.62 -#  endif
 1324.63 -#  if defined ( _STLP_LONG_LONG)
 1324.64 -  _STLP_POINTERS_SPECIALIZE( _STLP_LONG_LONG )
 1324.65 -  _STLP_POINTERS_SPECIALIZE( unsigned _STLP_LONG_LONG )
 1324.66 -#  endif
 1324.67 -#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
 1324.68 -  _STLP_POINTERS_SPECIALIZE( wchar_t )
 1324.69 -#  endif
 1324.70 -
 1324.71 -# undef _STLP_ARROW_SPECIALIZE
 1324.72 -# undef _STLP_ARROW_SPECIALIZE_WITH_PTRS
 1324.73 -# undef _STLP_TYPE_TRAITS_POD_SPECIALIZE_V
 1324.74 -
 1324.75 -#endif
  1325.1 --- a/epoc32/include/stdapis/stlport/stl/_queue.h	Tue Mar 16 16:12:26 2010 +0000
  1325.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1325.3 @@ -1,212 +0,0 @@
  1325.4 -/*
  1325.5 - *
  1325.6 - * Copyright (c) 1994
  1325.7 - * Hewlett-Packard Company
  1325.8 - *
  1325.9 - * Copyright (c) 1996,1997
 1325.10 - * Silicon Graphics Computer Systems, Inc.
 1325.11 - *
 1325.12 - * Copyright (c) 1997
 1325.13 - * Moscow Center for SPARC Technology
 1325.14 - *
 1325.15 - * Copyright (c) 1999 
 1325.16 - * Boris Fomitchev
 1325.17 - *
 1325.18 - * This material is provided "as is", with absolutely no warranty expressed
 1325.19 - * or implied. Any use is at your own risk.
 1325.20 - *
 1325.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1325.22 - * without fee, provided the above notices are retained on all copies.
 1325.23 - * Permission to modify the code and to distribute modified code is granted,
 1325.24 - * provided the above notices are retained, and a notice that the code was
 1325.25 - * modified is included with the above copyright notice.
 1325.26 - *
 1325.27 - */
 1325.28 -
 1325.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1325.30 - *   You should not attempt to use it directly.
 1325.31 - */
 1325.32 -
 1325.33 -#ifndef _STLP_INTERNAL_QUEUE_H
 1325.34 -#define _STLP_INTERNAL_QUEUE_H
 1325.35 -
 1325.36 -#ifndef _STLP_INTERNAL_DEQUE_H
 1325.37 -# include <stl/_deque.h>
 1325.38 -#endif
 1325.39 -
 1325.40 -#ifndef _STLP_INTERNAL_VECTOR_H
 1325.41 -# include <stl/_vector.h>
 1325.42 -#endif
 1325.43 -
 1325.44 -#ifndef _STLP_INTERNAL_HEAP_H
 1325.45 -# include <stl/_heap.h>
 1325.46 -#endif
 1325.47 -
 1325.48 -#ifndef _STLP_INTERNAL_FUNCTION_H
 1325.49 -# include <stl/_function.h>
 1325.50 -#endif
 1325.51 -
 1325.52 -#if defined(__SC__) && !defined(__DMC__)		//*ty 12/07/2001 - since "comp" is a built-in type and reserved under SCpp
 1325.53 -#define comp _Comp
 1325.54 -#endif
 1325.55 -
 1325.56 -_STLP_BEGIN_NAMESPACE
 1325.57 -
 1325.58 -# if ! defined ( _STLP_LIMITED_DEFAULT_TEMPLATES )
 1325.59 -template <class _Tp, class _Sequence = deque<_Tp> >
 1325.60 -# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
 1325.61 -#  define _STLP_QUEUE_ARGS _Tp
 1325.62 -template <class _Tp>
 1325.63 -# else
 1325.64 -template <class _Tp, class _Sequence>
 1325.65 -# endif
 1325.66 -
 1325.67 -class queue {
 1325.68 -# if defined ( _STLP_QUEUE_ARGS )
 1325.69 -  typedef deque<_Tp> _Sequence;
 1325.70 -# endif
 1325.71 -public:
 1325.72 -  typedef typename _Sequence::value_type      value_type;
 1325.73 -  typedef typename _Sequence::size_type       size_type;
 1325.74 -  typedef          _Sequence                  container_type;
 1325.75 -
 1325.76 -  typedef typename _Sequence::reference       reference;
 1325.77 -  typedef typename _Sequence::const_reference const_reference;
 1325.78 -
 1325.79 -protected:
 1325.80 -  _Sequence c;
 1325.81 -public:
 1325.82 -  queue() : c() {}
 1325.83 -  explicit queue(const _Sequence& __c) : c(__c) {}
 1325.84 -
 1325.85 -  bool empty() const { return c.empty(); }
 1325.86 -  size_type size() const { return c.size(); }
 1325.87 -  reference front() { return c.front(); }
 1325.88 -  const_reference front() const { return c.front(); }
 1325.89 -  reference back() { return c.back(); }
 1325.90 -  const_reference back() const { return c.back(); }
 1325.91 -  void push(const value_type& __x) { c.push_back(__x); }
 1325.92 -  void pop() { c.pop_front(); }
 1325.93 -  const _Sequence& _Get_c() const { return c; }
 1325.94 -};
 1325.95 -
 1325.96 -# ifndef _STLP_QUEUE_ARGS
 1325.97 -#  define _STLP_QUEUE_ARGS _Tp, _Sequence
 1325.98 -#  define _STLP_QUEUE_HEADER_ARGS class _Tp, class _Sequence
 1325.99 -# else
1325.100 -#  define _STLP_QUEUE_HEADER_ARGS class _Tp
1325.101 -# endif
1325.102 -
1325.103 -template < _STLP_QUEUE_HEADER_ARGS >
1325.104 -inline bool _STLP_CALL 
1325.105 -operator==(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y)
1325.106 -{
1325.107 -  return __x._Get_c() == __y._Get_c();
1325.108 -}
1325.109 -
1325.110 -template < _STLP_QUEUE_HEADER_ARGS >
1325.111 -inline bool _STLP_CALL
1325.112 -operator<(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y)
1325.113 -{
1325.114 -  return __x._Get_c() < __y._Get_c();
1325.115 -}
1325.116 -
1325.117 -_STLP_RELOPS_OPERATORS( template < _STLP_QUEUE_HEADER_ARGS >, queue<_STLP_QUEUE_ARGS > )
1325.118 -
1325.119 -# if !(defined ( _STLP_LIMITED_DEFAULT_TEMPLATES ) || defined ( _STLP_TEMPLATE_PARAM_SUBTYPE_BUG ))
1325.120 -template <class _Tp, class _Sequence = vector<_Tp>, 
1325.121 -          class _Compare = less<_STLP_HEADER_TYPENAME _Sequence::value_type> >
1325.122 -# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
1325.123 -template <class _Tp>
1325.124 -# else
1325.125 -template <class _Tp, class _Sequence, class _Compare>
1325.126 -# endif
1325.127 -class  priority_queue {
1325.128 -# ifdef _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS
1325.129 -  typedef vector<_Tp> _Sequence;
1325.130 -  typedef less< typename vector<_Tp>::value_type> _Compare; 
1325.131 -# endif
1325.132 -public:
1325.133 -  typedef typename _Sequence::value_type      value_type;
1325.134 -  typedef typename _Sequence::size_type       size_type;
1325.135 -  typedef          _Sequence                  container_type;
1325.136 -
1325.137 -  typedef typename _Sequence::reference       reference;
1325.138 -  typedef typename _Sequence::const_reference const_reference;
1325.139 -protected:
1325.140 -  _Sequence c;
1325.141 -  _Compare comp;
1325.142 -public:
1325.143 -  priority_queue() : c() {}
1325.144 -  explicit priority_queue(const _Compare& __x) :  c(), comp(__x) {}
1325.145 -  explicit  priority_queue(const _Compare& __x, const _Sequence& __s) 
1325.146 -    : c(__s), comp(__x)
1325.147 -    { make_heap(c.begin(), c.end(), comp); }
1325.148 -
1325.149 -#ifdef _STLP_MEMBER_TEMPLATES
1325.150 -  template <class _InputIterator>
1325.151 -  priority_queue(_InputIterator __first, _InputIterator __last) 
1325.152 -    : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
1325.153 -
1325.154 -  template <class _InputIterator>
1325.155 -  priority_queue(_InputIterator __first, 
1325.156 -                 _InputIterator __last, const _Compare& __x)
1325.157 -    : c(__first, __last), comp(__x)
1325.158 -    { make_heap(c.begin(), c.end(), comp); }
1325.159 -
1325.160 -  template <class _InputIterator>
1325.161 -  priority_queue(_InputIterator __first, _InputIterator __last,
1325.162 -                 const _Compare& __x, const _Sequence& __s)
1325.163 -  : c(__s), comp(__x)
1325.164 -  { 
1325.165 -    c.insert(c.end(), __first, __last);
1325.166 -    make_heap(c.begin(), c.end(), comp);
1325.167 -  }
1325.168 -
1325.169 -#else /* _STLP_MEMBER_TEMPLATES */
1325.170 -  priority_queue(const value_type* __first, const value_type* __last) 
1325.171 -    : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
1325.172 -
1325.173 -  priority_queue(const value_type* __first, const value_type* __last, 
1325.174 -                 const _Compare& __x) 
1325.175 -    : c(__first, __last), comp(__x)
1325.176 -    { make_heap(c.begin(), c.end(), comp); }
1325.177 -
1325.178 -  priority_queue(const value_type* __first, const value_type* __last, 
1325.179 -                 const _Compare& __x, const _Sequence& __c)
1325.180 -    : c(__c), comp(__x)
1325.181 -  { 
1325.182 -    c.insert(c.end(), __first, __last);
1325.183 -    make_heap(c.begin(), c.end(), comp);
1325.184 -  }
1325.185 -#endif /* _STLP_MEMBER_TEMPLATES */
1325.186 -
1325.187 -  bool empty() const { return c.empty(); }
1325.188 -  size_type size() const { return c.size(); }
1325.189 -  const_reference top() const { return c.front(); }
1325.190 -  void push(const value_type& __x) {
1325.191 -    _STLP_TRY {
1325.192 -      c.push_back(__x); 
1325.193 -      push_heap(c.begin(), c.end(), comp);
1325.194 -    }
1325.195 -    _STLP_UNWIND(c.clear());
1325.196 -  }
1325.197 -  void pop() {
1325.198 -    _STLP_TRY {
1325.199 -      pop_heap(c.begin(), c.end(), comp);
1325.200 -      c.pop_back();
1325.201 -    }
1325.202 -    _STLP_UNWIND(c.clear());
1325.203 -  }
1325.204 -};
1325.205 -
1325.206 -_STLP_END_NAMESPACE
1325.207 -
1325.208 -#  undef _STLP_QUEUE_ARGS
1325.209 -#  undef _STLP_QUEUE_HEADER_ARGS
1325.210 -
1325.211 -#endif /* _STLP_INTERNAL_QUEUE_H */
1325.212 -
1325.213 -// Local Variables:
1325.214 -// mode:C++
1325.215 -// End:
  1326.1 --- a/epoc32/include/stdapis/stlport/stl/_range_errors.h	Tue Mar 16 16:12:26 2010 +0000
  1326.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1326.3 @@ -1,105 +0,0 @@
  1326.4 -/*
  1326.5 - * Copyright (c) 1999
  1326.6 - * Silicon Graphics
  1326.7 - *
  1326.8 - * Permission to use, copy, modify, distribute and sell this software
  1326.9 - * and its documentation for any purpose is hereby granted without fee,
 1326.10 - * provided that the above copyright notice appear in all copies and
 1326.11 - * that both that copyright notice and this permission notice appear
 1326.12 - * in supporting documentation.  Silicon Graphics makes no
 1326.13 - * representations about the suitability of this software for any
 1326.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1326.15 - *
 1326.16 - */
 1326.17 -
 1326.18 -#ifndef _STLP_RANGE_ERRORS_H
 1326.19 -#define _STLP_RANGE_ERRORS_H
 1326.20 -
 1326.21 -// A few places in the STL throw range errors, using standard exception
 1326.22 -// classes defined in <stdexcept>.  This header file provides functions
 1326.23 -// to throw those exception objects.
 1326.24 -
 1326.25 -// _STLP_DONT_THROW_RANGE_ERRORS is a hook so that users can disable
 1326.26 -// this exception throwing.
 1326.27 -#if defined(_STLP_CAN_THROW_RANGE_ERRORS) && defined(_STLP_USE_EXCEPTIONS) \
 1326.28 -    && !defined(_STLP_DONT_THROW_RANGE_ERRORS)
 1326.29 -# define _STLP_THROW_RANGE_ERRORS
 1326.30 -#endif
 1326.31 -
 1326.32 -// For the STLport iostreams, only declaration here, definition is in the lib
 1326.33 -
 1326.34 -#if defined ( _STLP_OWN_IOSTREAMS  ) && ! defined (_STLP_EXTERN_RANGE_ERRORS) 
 1326.35 -#  define _STLP_EXTERN_RANGE_ERRORS
 1326.36 -# endif
 1326.37 -
 1326.38 -#if defined (_STLP_EXTERN_RANGE_ERRORS)
 1326.39 -# ifndef _STLP_STDEXCEPT
 1326.40 -#  include <stdexcept>
 1326.41 -# endif
 1326.42 -_STLP_BEGIN_NAMESPACE
 1326.43 -void  _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg);
 1326.44 -void  _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg);
 1326.45 -void  _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg);
 1326.46 -void  _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg);
 1326.47 -void  _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg);
 1326.48 -_STLP_END_NAMESPACE
 1326.49 -#else
 1326.50 -
 1326.51 -#if defined(_STLP_THROW_RANGE_ERRORS)
 1326.52 -# ifndef _STLP_STDEXCEPT
 1326.53 -#  include <stdexcept>
 1326.54 -# endif
 1326.55 -# ifndef _STLP_STRING
 1326.56 -#  include <string>
 1326.57 -# endif
 1326.58 -# define _STLP_THROW_MSG(ex,msg)  throw ex(string(msg))
 1326.59 -#else
 1326.60 -# if defined (_STLP_WINCE)
 1326.61 -#  define _STLP_THROW_MSG(ex,msg)  TerminateProcess(GetCurrentProcess(), 0)
 1326.62 -# else
 1326.63 -#  include <cstdlib>
 1326.64 -#  include <cstdio>
 1326.65 -# ifdef _STLP_USE_TRAP_LEAVE
 1326.66 -#  define _STLP_THROW_MSG(ex,msg) { STDEX_REPORT_EXCEPTION(msg) ; User::Leave(STDEX_##ex); }
 1326.67 -#  include <stdexcept>
 1326.68 -# else
 1326.69 -#  define _STLP_THROW_MSG(ex,msg)  puts(msg),_STLP_ABORT()
 1326.70 -# endif
 1326.71 -# endif
 1326.72 -#endif
 1326.73 -
 1326.74 -// For wrapper mode and throwing range errors, include the
 1326.75 -// stdexcept header and throw the appropriate exceptions directly.
 1326.76 -
 1326.77 -_STLP_BEGIN_NAMESPACE
 1326.78 -inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg) { 
 1326.79 -  _STLP_THROW_MSG(range_error, __msg); 
 1326.80 -}
 1326.81 -
 1326.82 -inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg) { 
 1326.83 -  _STLP_THROW_MSG(out_of_range, __msg); 
 1326.84 -}
 1326.85 -
 1326.86 -inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg) { 
 1326.87 -  _STLP_THROW_MSG(length_error, __msg); 
 1326.88 -}
 1326.89 -
 1326.90 -inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg) { 
 1326.91 -  _STLP_THROW_MSG(invalid_argument, __msg); 
 1326.92 -}
 1326.93 -
 1326.94 -inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg) { 
 1326.95 -  _STLP_THROW_MSG(overflow_error, __msg); 
 1326.96 -}
 1326.97 -_STLP_END_NAMESPACE
 1326.98 -
 1326.99 -# undef _STLP_THROW_MSG
1326.100 -
1326.101 -# endif /* EXTERN_RANGE_ERRORS */
1326.102 -
1326.103 -
1326.104 -#endif /* _STLP_RANGE_ERRORS_H */
1326.105 -
1326.106 -// Local Variables:
1326.107 -// mode:C++
1326.108 -// End:
  1327.1 --- a/epoc32/include/stdapis/stlport/stl/_raw_storage_iter.h	Tue Mar 16 16:12:26 2010 +0000
  1327.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1327.3 @@ -1,82 +0,0 @@
  1327.4 -/*
  1327.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1327.6 - * Copyright (c) 1994
  1327.7 - * Hewlett-Packard Company
  1327.8 - *
  1327.9 - * Copyright (c) 1996,1997
 1327.10 - * Silicon Graphics Computer Systems, Inc.
 1327.11 - *
 1327.12 - * Copyright (c) 1997
 1327.13 - * Moscow Center for SPARC Technology
 1327.14 - *
 1327.15 - * Copyright (c) 1999 
 1327.16 - * Boris Fomitchev
 1327.17 - *
 1327.18 - * This material is provided "as is", with absolutely no warranty expressed
 1327.19 - * or implied. Any use is at your own risk.
 1327.20 - *
 1327.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1327.22 - * without fee, provided the above notices are retained on all copies.
 1327.23 - * Permission to modify the code and to distribute modified code is granted,
 1327.24 - * provided the above notices are retained, and a notice that the code was
 1327.25 - * modified is included with the above copyright notice.
 1327.26 - *
 1327.27 - */
 1327.28 -
 1327.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1327.30 - * You should not attempt to use it directly.
 1327.31 - */
 1327.32 -
 1327.33 -#ifndef _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
 1327.34 -#define _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
 1327.35 -
 1327.36 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1327.37 -#  include <stl/_iterator_base.h>
 1327.38 -#endif
 1327.39 -
 1327.40 -_STLP_BEGIN_NAMESPACE
 1327.41 -
 1327.42 -template <class _ForwardIterator, class _Tp>
 1327.43 -class raw_storage_iterator 
 1327.44 -# if defined (_STLP_HAS_VOID_SPECIALIZATION) || defined (__SYMBIAN32__)
 1327.45 -      : public iterator<output_iterator_tag,void,void,void,void>
 1327.46 -# endif
 1327.47 -{
 1327.48 -protected:
 1327.49 -  _ForwardIterator _M_iter;
 1327.50 -public:
 1327.51 -  typedef output_iterator_tag iterator_category;
 1327.52 -# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1327.53 -  typedef void                value_type;
 1327.54 -  typedef void                difference_type;
 1327.55 -  typedef void                pointer;
 1327.56 -  typedef void                reference;
 1327.57 -# endif
 1327.58 -  explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {}
 1327.59 -  raw_storage_iterator<_ForwardIterator, _Tp>& operator*() { return *this; }
 1327.60 -  raw_storage_iterator<_ForwardIterator, _Tp>& operator=(const _Tp& __element) {
 1327.61 -    _Construct(&*_M_iter, __element);
 1327.62 -    return *this;
 1327.63 -  }        
 1327.64 -  raw_storage_iterator<_ForwardIterator, _Tp>& operator++() {
 1327.65 -    ++_M_iter;
 1327.66 -    return *this;
 1327.67 -  }
 1327.68 -  raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) {
 1327.69 -    raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this;
 1327.70 -    ++_M_iter;
 1327.71 -    return __tmp;
 1327.72 -  }
 1327.73 -};
 1327.74 -
 1327.75 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1327.76 -template <class _ForwardIterator, class _Tp>
 1327.77 -inline output_iterator_tag iterator_category(const raw_storage_iterator<_ForwardIterator, _Tp>&) { return output_iterator_tag(); }
 1327.78 -#endif
 1327.79 -_STLP_END_NAMESPACE
 1327.80 -
 1327.81 -#endif /* _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H */
 1327.82 -
 1327.83 -// Local Variables:
 1327.84 -// mode:C++
 1327.85 -// End:
  1328.1 --- a/epoc32/include/stdapis/stlport/stl/_rope.c	Tue Mar 16 16:12:26 2010 +0000
  1328.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1328.3 @@ -1,1545 +0,0 @@
  1328.4 -/*
  1328.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1328.6 - * Copyright (c) 1996,1997
  1328.7 - * Silicon Graphics Computer Systems, Inc.
  1328.8 - *
  1328.9 - * Copyright (c) 1999 
 1328.10 - * Boris Fomitchev
 1328.11 - *
 1328.12 - * This material is provided "as is", with absolutely no warranty expressed
 1328.13 - * or implied. Any use is at your own risk.
 1328.14 - *
 1328.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1328.16 - * without fee, provided the above notices are retained on all copies.
 1328.17 - * Permission to modify the code and to distribute modified code is granted,
 1328.18 - * provided the above notices are retained, and a notice that the code was
 1328.19 - * modified is included with the above copyright notice.
 1328.20 - *
 1328.21 - */
 1328.22 -
 1328.23 -/* NOTE: This is an internal header file, included by other STL headers.
 1328.24 - *   You should not attempt to use it directly.
 1328.25 - */
 1328.26 -
 1328.27 -// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
 1328.28 -// if necessary.  Assumes path_end[leaf_index] and leaf_pos are correct.
 1328.29 -// Results in a valid buf_ptr if the iterator can be legitimately
 1328.30 -// dereferenced.
 1328.31 -# ifndef _STLP_ROPEIMPL_H
 1328.32 -# define _STLP_ROPEIMPL_H
 1328.33 -
 1328.34 -#ifndef _STLP_INTERNAL_ROPE_H
 1328.35 -# include <stl/_rope.h>
 1328.36 -#endif
 1328.37 -
 1328.38 -# ifndef _STLP_CSTDIO
 1328.39 -#  include <cstdio>
 1328.40 -# endif
 1328.41 -
 1328.42 -#ifndef _STLP_IOSTREAM
 1328.43 -# include <iostream>
 1328.44 -#endif
 1328.45 -
 1328.46 -# include <stl/_range_errors.h>
 1328.47 -
 1328.48 -_STLP_BEGIN_NAMESPACE
 1328.49 -
 1328.50 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1328.51 -# define __allocator__ _Alloc
 1328.52 -# else
 1328.53 -# define __allocator__ allocator_type
 1328.54 -# endif
 1328.55 -
 1328.56 -template<class _CharT, class _Alloc>
 1328.57 -_Rope_iterator<_CharT, _Alloc>::_Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos)
 1328.58 -  : _Rope_iterator_base<_CharT,_Alloc>(__r->_M_tree_ptr._M_data, __pos),
 1328.59 -  _M_root_rope(__r) { _RopeRep::_S_ref(this->_M_root); }
 1328.60 -
 1328.61 -template<class _CharT, class _Alloc>
 1328.62 -_Rope_iterator<_CharT, _Alloc>::_Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos): 
 1328.63 -  _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos), 
 1328.64 -  _M_root_rope(&__r) {
 1328.65 -  _RopeRep::_S_ref(this->_M_root); if (!(__r.empty()))_S_setcache(*this);
 1328.66 -}
 1328.67 -
 1328.68 -template<class _CharT, class _Alloc>
 1328.69 -void 
 1328.70 -_Rope_RopeRep<_CharT, _Alloc>::_M_free_c_string()
 1328.71 -{
 1328.72 -  _CharT* __cstr = _M_c_string;
 1328.73 -  if (0 != __cstr) {
 1328.74 -    size_t _p_size = _M_size._M_data + 1;
 1328.75 -    _STLP_STD::_Destroy(__cstr, __cstr + _p_size);
 1328.76 -    _M_size.deallocate(__cstr, _p_size);
 1328.77 -  }
 1328.78 -}
 1328.79 -
 1328.80 -
 1328.81 -// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
 1328.82 -// if necessary.  Assumes _M_path_end[leaf_index] and leaf_pos are correct.
 1328.83 -// Results in a valid buf_ptr if the iterator can be legitimately
 1328.84 -// dereferenced.
 1328.85 -template <class _CharT, class _Alloc>
 1328.86 -void _Rope_iterator_base<_CharT,_Alloc>::_S_setbuf( 
 1328.87 -  _Rope_iterator_base<_CharT,_Alloc>& __x)
 1328.88 -{
 1328.89 -    const _RopeRep* __leaf = __x._M_path_end[__x._M_leaf_index];
 1328.90 -    size_t __leaf_pos = __x._M_leaf_pos;
 1328.91 -    size_t __pos = __x._M_current_pos;
 1328.92 -
 1328.93 -    switch(__leaf->_M_tag) {
 1328.94 -	case _RopeRep::_S_leaf:
 1328.95 -	    __x._M_buf_start = 
 1328.96 -	      ((_Rope_RopeLeaf<_CharT,_Alloc>*)__leaf)->_M_data;
 1328.97 -	    __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos);
 1328.98 -	    __x._M_buf_end = __x._M_buf_start + __leaf->_M_size._M_data;
 1328.99 -	    break;
1328.100 -	case _RopeRep::_S_function:
1328.101 -	case _RopeRep::_S_substringfn:
1328.102 -	    {
1328.103 -		size_t __len = _S_iterator_buf_len;
1328.104 -		size_t __buf_start_pos = __leaf_pos;
1328.105 -		size_t __leaf_end = __leaf_pos + __leaf->_M_size._M_data;
1328.106 -		char_producer<_CharT>* __fn =
1328.107 -			((_Rope_RopeFunction<_CharT,_Alloc>*)__leaf)->_M_fn;
1328.108 -
1328.109 -		if (__buf_start_pos + __len <= __pos) {
1328.110 -		    __buf_start_pos = __pos - __len/4;
1328.111 -		    if (__buf_start_pos + __len > __leaf_end) {
1328.112 -			__buf_start_pos = __leaf_end - __len;
1328.113 -		    }
1328.114 -		}
1328.115 -		if (__buf_start_pos + __len > __leaf_end) {
1328.116 -		    __len = __leaf_end - __buf_start_pos;
1328.117 -		}
1328.118 -		(*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf);
1328.119 -		__x._M_buf_ptr = __x._M_tmp_buf + (__pos - __buf_start_pos);
1328.120 -		__x._M_buf_start = __x._M_tmp_buf;
1328.121 -		__x._M_buf_end = __x._M_tmp_buf + __len;
1328.122 -	    }
1328.123 -	    break;
1328.124 -	default:
1328.125 -      _STLP_ASSERT(0)
1328.126 -        ;
1328.127 -    }
1328.128 -}
1328.129 -
1328.130 -// Set path and buffer inside a rope iterator.  We assume that 
1328.131 -// pos and root are already set.
1328.132 -template <class _CharT, class _Alloc>
1328.133 -void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache
1328.134 -(_Rope_iterator_base<_CharT,_Alloc>& __x)
1328.135 -{
1328.136 -    const _RopeRep* __path[_RopeRep::_S_max_rope_depth+1];
1328.137 -    const _RopeRep* __curr_rope;
1328.138 -    int __curr_depth = -1;  /* index into path    */
1328.139 -    size_t __curr_start_pos = 0;
1328.140 -    size_t __pos = __x._M_current_pos;
1328.141 -    unsigned char __dirns = 0; // Bit vector marking right turns in the path
1328.142 -
1328.143 -    _STLP_ASSERT(__pos <= __x._M_root->_M_size._M_data)
1328.144 -    if (__pos >= __x._M_root->_M_size._M_data) {
1328.145 -	__x._M_buf_ptr = 0;
1328.146 -	return;
1328.147 -    }
1328.148 -    __curr_rope = __x._M_root;
1328.149 -    if (0 != __curr_rope->_M_c_string) {
1328.150 -	/* Treat the root as a leaf. */
1328.151 -	__x._M_buf_start = __curr_rope->_M_c_string;
1328.152 -	__x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size._M_data;
1328.153 -	__x._M_buf_ptr = __curr_rope->_M_c_string + __pos;
1328.154 -	__x._M_path_end[0] = __curr_rope;
1328.155 -	__x._M_leaf_index = 0;
1328.156 -	__x._M_leaf_pos = 0;
1328.157 -	return;
1328.158 -    }
1328.159 -    for(;;) {
1328.160 -	++__curr_depth;
1328.161 -	_STLP_ASSERT(__curr_depth <= _RopeRep::_S_max_rope_depth)
1328.162 -	__path[__curr_depth] = __curr_rope;
1328.163 -	switch(__curr_rope->_M_tag) {
1328.164 -	  case _RopeRep::_S_leaf:
1328.165 -	  case _RopeRep::_S_function:
1328.166 -	  case _RopeRep::_S_substringfn:
1328.167 -	    __x._M_leaf_pos = __curr_start_pos;
1328.168 -	    goto done;
1328.169 -	  case _RopeRep::_S_concat:
1328.170 -	    {
1328.171 -		_Rope_RopeConcatenation<_CharT,_Alloc>* __c =
1328.172 -			(_Rope_RopeConcatenation<_CharT,_Alloc>*)__curr_rope;
1328.173 -		_RopeRep* __left = __c->_M_left;
1328.174 -		size_t __left_len = __left->_M_size._M_data;
1328.175 -		
1328.176 -		__dirns <<= 1;
1328.177 -		if (__pos >= __curr_start_pos + __left_len) {
1328.178 -		    __dirns |= 1;
1328.179 -		    __curr_rope = __c->_M_right;
1328.180 -		    __curr_start_pos += __left_len;
1328.181 -		} else {
1328.182 -		    __curr_rope = __left;
1328.183 -		}
1328.184 -	    }
1328.185 -	    break;
1328.186 -	}
1328.187 -    }
1328.188 -  done:
1328.189 -    // Copy last section of path into _M_path_end.
1328.190 -      {
1328.191 -	int __i = -1;
1328.192 -	int __j = __curr_depth + 1 - _S_path_cache_len;
1328.193 -
1328.194 -	if (__j < 0) __j = 0;
1328.195 -	while (__j <= __curr_depth) {
1328.196 -	    __x._M_path_end[++__i] = __path[__j++];
1328.197 -	}
1328.198 -	__x._M_leaf_index = __i;
1328.199 -      }
1328.200 -      __x._M_path_directions = __dirns;
1328.201 -      _S_setbuf(__x);
1328.202 -}
1328.203 -
1328.204 -// Specialized version of the above.  Assumes that
1328.205 -// the path cache is valid for the previous position.
1328.206 -template <class _CharT, class _Alloc>
1328.207 -void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache_for_incr
1328.208 -(_Rope_iterator_base<_CharT,_Alloc>& __x)
1328.209 -{
1328.210 -    int __current_index = __x._M_leaf_index;
1328.211 -    const _RopeRep* __current_node = __x._M_path_end[__current_index];
1328.212 -    size_t __len = __current_node->_M_size._M_data;
1328.213 -    size_t __node_start_pos = __x._M_leaf_pos;
1328.214 -    unsigned char __dirns = __x._M_path_directions;
1328.215 -    _Rope_RopeConcatenation<_CharT,_Alloc>* __c;
1328.216 -
1328.217 -    _STLP_ASSERT(__x._M_current_pos <= __x._M_root->_M_size._M_data)
1328.218 -    if (__x._M_current_pos - __node_start_pos < __len) {
1328.219 -	/* More stuff in this leaf, we just didn't cache it. */
1328.220 -	_S_setbuf(__x);
1328.221 -	return;
1328.222 -    }
1328.223 -    _STLP_ASSERT(__node_start_pos + __len == __x._M_current_pos)
1328.224 -    //  node_start_pos is starting position of last_node.
1328.225 -    while (--__current_index >= 0) {
1328.226 -	if (!(__dirns & 1) /* Path turned left */) 
1328.227 -	  break;
1328.228 -	__current_node = __x._M_path_end[__current_index];
1328.229 -	__c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;
1328.230 -	// Otherwise we were in the right child.  Thus we should pop
1328.231 -	// the concatenation node.
1328.232 -	__node_start_pos -= __c->_M_left->_M_size._M_data;
1328.233 -	__dirns >>= 1;
1328.234 -    }
1328.235 -    if (__current_index < 0) {
1328.236 -	// We underflowed the cache. Punt.
1328.237 -	_S_setcache(__x);
1328.238 -	return;
1328.239 -    }
1328.240 -    __current_node = __x._M_path_end[__current_index];
1328.241 -    __c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;
1328.242 -    // current_node is a concatenation node.  We are positioned on the first
1328.243 -    // character in its right child.
1328.244 -    // node_start_pos is starting position of current_node.
1328.245 -    __node_start_pos += __c->_M_left->_M_size._M_data;
1328.246 -    __current_node = __c->_M_right;
1328.247 -    __x._M_path_end[++__current_index] = __current_node;
1328.248 -    __dirns |= 1;
1328.249 -    while (_RopeRep::_S_concat == __current_node->_M_tag) {
1328.250 -	++__current_index;
1328.251 -	if (_S_path_cache_len == __current_index) {
1328.252 -	    int __i;
1328.253 -	    for (__i = 0; __i < _S_path_cache_len-1; __i++) {
1328.254 -		__x._M_path_end[__i] = __x._M_path_end[__i+1];
1328.255 -	    }
1328.256 -	    --__current_index;
1328.257 -	}
1328.258 -	__current_node =
1328.259 -	    ((_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node)->_M_left;
1328.260 -	__x._M_path_end[__current_index] = __current_node;
1328.261 -	__dirns <<= 1;
1328.262 -	// node_start_pos is unchanged.
1328.263 -    }
1328.264 -    __x._M_leaf_index = __current_index;
1328.265 -    __x._M_leaf_pos = __node_start_pos;
1328.266 -    __x._M_path_directions = __dirns;
1328.267 -    _S_setbuf(__x);
1328.268 -}
1328.269 -
1328.270 -template <class _CharT, class _Alloc>
1328.271 -void _Rope_iterator_base<_CharT,_Alloc>::_M_incr(size_t __n) {
1328.272 -    _M_current_pos += __n;
1328.273 -    if (0 != _M_buf_ptr) {
1328.274 -        size_t __chars_left = _M_buf_end - _M_buf_ptr;
1328.275 -        if (__chars_left > __n) {
1328.276 -            _M_buf_ptr += __n;
1328.277 -        } else if (__chars_left == __n) {
1328.278 -            _M_buf_ptr += __n;
1328.279 -            _S_setcache_for_incr(*this);
1328.280 -        } else {
1328.281 -            _M_buf_ptr = 0;
1328.282 -        }
1328.283 -    }
1328.284 -}
1328.285 -
1328.286 -template <class _CharT, class _Alloc>
1328.287 -void _Rope_iterator_base<_CharT,_Alloc>::_M_decr(size_t __n) {
1328.288 -    if (0 != _M_buf_ptr) {
1328.289 -        size_t __chars_left = _M_buf_ptr - _M_buf_start;
1328.290 -        if (__chars_left >= __n) {
1328.291 -            _M_buf_ptr -= __n;
1328.292 -        } else {
1328.293 -            _M_buf_ptr = 0;
1328.294 -        }
1328.295 -    }
1328.296 -    _M_current_pos -= __n;
1328.297 -}
1328.298 -
1328.299 -template <class _CharT, class _Alloc>
1328.300 -void _Rope_iterator<_CharT,_Alloc>::_M_check() {
1328.301 -    if (_M_root_rope->_M_tree_ptr._M_data != this->_M_root) {
1328.302 -        // _Rope was modified.  Get things fixed up.
1328.303 -        _RopeRep::_S_unref(this->_M_root);
1328.304 -        this->_M_root = _M_root_rope->_M_tree_ptr._M_data;
1328.305 -        _RopeRep::_S_ref(this->_M_root);
1328.306 -        this->_M_buf_ptr = 0;
1328.307 -    }
1328.308 -}
1328.309 -
1328.310 -# ifndef _GC
1328.311 -//  There are several reasons for not doing this with virtual destructors
1328.312 -//  and a class specific delete operator:
1328.313 -//  - A class specific delete operator can't easily get access to
1328.314 -//    allocator instances if we need them.
1328.315 -//  - Any virtual function would need a 4 or byte vtable pointer;
1328.316 -//    this only requires a one byte tag per object.
1328.317 -template <class _CharT, class _Alloc>
1328.318 -void _Rope_RopeRep<_CharT,_Alloc>::_M_free_tree()
1328.319 -{
1328.320 -    switch(_M_tag) {
1328.321 -	case _S_leaf:
1328.322 -	    {
1328.323 -	      typedef _Rope_RopeLeaf<_CharT,_Alloc> _Rope_RopeLeaf_T;
1328.324 -          _Rope_RopeLeaf_T* __l = (_Rope_RopeLeaf_T*)this;
1328.325 -          _STLP_STD::_Destroy(__l); // ->_Rope_RopeLeaf<_CharT,_Alloc>::~_Rope_RopeLeaf();
1328.326 -	      _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, _Rope_RopeLeaf_T).deallocate(__l, 1);
1328.327 -	        break;
1328.328 -	    }
1328.329 -	case _S_concat:
1328.330 -	    {
1328.331 -               typedef _Rope_RopeConcatenation<_CharT,_Alloc> _Rope_RopeConcatenation_T;
1328.332 -               _Rope_RopeConcatenation_T* __c  = (_Rope_RopeConcatenation_T*)this;
1328.333 -               _STLP_STD::_Destroy(__c);
1328.334 -               _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, 
1328.335 -                               _Rope_RopeConcatenation_T).deallocate(__c, 1);
1328.336 -	        break;
1328.337 -	    }
1328.338 -	case _S_function:
1328.339 -	    {
1328.340 -            typedef _Rope_RopeFunction<_CharT,_Alloc> _Rope_RopeFunctionT;
1328.341 -              _Rope_RopeFunctionT* __f = (_Rope_RopeFunctionT*)this;
1328.342 -              _STLP_STD::_Destroy(__f);
1328.343 -              _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, 
1328.344 -                                 _Rope_RopeFunctionT).deallocate(__f, 1);
1328.345 -	        break;
1328.346 -	    }
1328.347 -	case _S_substringfn:
1328.348 -	    {
1328.349 -            typedef _Rope_RopeSubstring<_CharT,_Alloc> _Rope_RopeSubstring_T;
1328.350 -              _Rope_RopeSubstring_T* __ss = (_Rope_RopeSubstring_T*)this;
1328.351 -              _STLP_STD::_Destroy(__ss);
1328.352 -              _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, 
1328.353 -                              _Rope_RopeSubstring_T).deallocate(__ss, 1);
1328.354 -		break;
1328.355 -	    }
1328.356 -    }
1328.357 -}
1328.358 -#endif
1328.359 -
1328.360 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
1328.361 -#   define __RopeLeaf__ _Rope_RopeLeaf<_CharT,_Alloc>
1328.362 -#   define __RopeRep__ _Rope_RopeRep<_CharT,_Alloc>
1328.363 -#   define _RopeLeaf _Rope_RopeLeaf<_CharT,_Alloc>
1328.364 -#   define _RopeRep _Rope_RopeRep<_CharT,_Alloc>
1328.365 -#   define size_type size_t
1328.366 -# else
1328.367 -#   define __RopeLeaf__ _STLP_TYPENAME_ON_RETURN_TYPE rope<_CharT,_Alloc>::_RopeLeaf
1328.368 -#   define __RopeRep__ _STLP_TYPENAME_ON_RETURN_TYPE rope<_CharT,_Alloc>::_RopeRep
1328.369 -# endif
1328.370 -
1328.371 -// Concatenate a C string onto a leaf rope by copying the rope data.
1328.372 -// Used for short ropes.
1328.373 -template <class _CharT, class _Alloc>
1328.374 -__RopeLeaf__*
1328.375 -rope<_CharT,_Alloc>::_S_leaf_concat_char_iter
1328.376 -		(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
1328.377 -{
1328.378 -    size_t __old_len = __r->_M_size._M_data;
1328.379 -    _CharT* __new_data = __r->_M_size.allocate(_S_rounded_up_size(__old_len + __len));
1328.380 -    _RopeLeaf* __result;
1328.381 -    
1328.382 -    uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
1328.383 -    uninitialized_copy_n(__iter, __len, __new_data + __old_len);
1328.384 -    _S_cond_store_eos(__new_data[__old_len + __len]);
1328.385 -    _STLP_TRY {
1328.386 -	__result = _S_new_RopeLeaf(__new_data, __old_len + __len,
1328.387 -				   __r->get_allocator());
1328.388 -    }
1328.389 -    _STLP_UNWIND(_RopeRep::_S_free_string(__new_data, __old_len + __len,
1328.390 -					     __r->get_allocator()));
1328.391 -    return __result;
1328.392 -}
1328.393 -
1328.394 -#ifndef __GC
1328.395 -// As above, but it's OK to clobber original if refcount is 1
1328.396 -template <class _CharT, class _Alloc>
1328.397 -__RopeLeaf__*
1328.398 -rope<_CharT,_Alloc>::_S_destr_leaf_concat_char_iter
1328.399 -		(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
1328.400 -{
1328.401 -    _STLP_ASSERT(__r->_M_ref_count >= 1)
1328.402 -    if (__r->_M_ref_count > 1)
1328.403 -      return _S_leaf_concat_char_iter(__r, __iter, __len);
1328.404 -    size_t __old_len = __r->_M_size._M_data;
1328.405 -    if (_S_allocated_capacity(__old_len) >= __old_len + __len) {
1328.406 -	// The space has been partially initialized for the standard
1328.407 -	// character types.  But that doesn't matter for those types.
1328.408 -	uninitialized_copy_n(__iter, __len, __r->_M_data + __old_len);
1328.409 -	if (_S_is_basic_char_type((_CharT*)0)) {
1328.410 -	    _S_cond_store_eos(__r->_M_data[__old_len + __len]);
1328.411 -	    _STLP_ASSERT(__r->_M_c_string == __r->_M_data)
1328.412 -	} else if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string) {
1328.413 -	    __r->_M_free_c_string();
1328.414 -	    __r->_M_c_string = 0;
1328.415 -	}
1328.416 -	__r->_M_size._M_data = __old_len + __len;
1328.417 -	_STLP_ASSERT(__r->_M_ref_count == 1)
1328.418 -	__r->_M_ref_count = 2;
1328.419 -	return __r;
1328.420 -    } else {
1328.421 -	_RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len);
1328.422 -	_STLP_ASSERT(__result->_M_ref_count == 1)
1328.423 -	return __result;
1328.424 -    }
1328.425 -}
1328.426 -#endif
1328.427 -
1328.428 -// Assumes left and right are not 0.
1328.429 -// Does not increment (nor decrement on exception) child reference counts.
1328.430 -// Result has ref count 1.
1328.431 -template <class _CharT, class _Alloc>
1328.432 -__RopeRep__*
1328.433 -rope<_CharT,_Alloc>::_S_tree_concat (_RopeRep* __left, _RopeRep* __right)
1328.434 -{
1328.435 -    _RopeConcatenation* __result =
1328.436 -      _S_new_RopeConcatenation(__left, __right, __left->get_allocator());
1328.437 -    size_t __depth = __result->_M_depth;
1328.438 -    
1328.439 -    _STLP_ASSERT(__left->get_allocator() == __right->get_allocator())
1328.440 -    if (__depth > 20 && (__result->_M_size._M_data < 1000 ||
1328.441 -			 __depth > _RopeRep::_S_max_rope_depth)) {
1328.442 -        _RopeRep* __balanced;
1328.443 -      
1328.444 -	_STLP_TRY {
1328.445 -	   __balanced = _S_balance(__result);
1328.446 -#          ifndef __GC
1328.447 -	     if (__result != __balanced) {
1328.448 -		_STLP_ASSERT(1 == __result->_M_ref_count
1328.449 -			     && 1 == __balanced->_M_ref_count)
1328.450 -	     }
1328.451 -#          endif
1328.452 -	   __result->_M_unref_nonnil();
1328.453 -        }
1328.454 -      _STLP_UNWIND((_STLP_CREATE_ALLOCATOR(allocator_type,(allocator_type&)__left->_M_size,
1328.455 -                                    _RopeConcatenation).deallocate(__result,1)));
1328.456 -		// In case of exception, we need to deallocate
1328.457 -		// otherwise dangling result node.  But caller
1328.458 -		// still owns its children.  Thus unref is
1328.459 -		// inappropriate.
1328.460 -	return __balanced;
1328.461 -    } else {
1328.462 -	return __result;
1328.463 -    }
1328.464 -}
1328.465 -
1328.466 -template <class _CharT, class _Alloc>
1328.467 -__RopeRep__*
1328.468 -rope<_CharT,_Alloc>::_S_concat_char_iter
1328.469 -		(_RopeRep* __r, const _CharT*__s, size_t __slen)
1328.470 -{
1328.471 -    _RopeRep* __result;
1328.472 -    if (0 == __slen) {
1328.473 -	_S_ref(__r);
1328.474 -	return __r;
1328.475 -    }
1328.476 -    if (0 == __r)
1328.477 -      return _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
1328.478 -					      /* __r->get_allocator()*/ allocator_type() );
1328.479 -    if (_RopeRep::_S_leaf == __r->_M_tag && 
1328.480 -          __r->_M_size._M_data + __slen <= _S_copy_max) {
1328.481 -	__result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
1328.482 -#       ifndef __GC
1328.483 -	  _STLP_ASSERT(1 == __result->_M_ref_count)
1328.484 -#       endif
1328.485 -	return __result;
1328.486 -    }
1328.487 -    if (_RopeRep::_S_concat == __r->_M_tag
1328.488 -	&& _RopeRep::_S_leaf == ((_RopeConcatenation*)__r)->_M_right->_M_tag) {
1328.489 -	_RopeLeaf* __right = 
1328.490 -	  (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right);
1328.491 -	if (__right->_M_size._M_data + __slen <= _S_copy_max) {
1328.492 -	  _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left;
1328.493 -	  _RopeRep* __nright = 
1328.494 -	    _S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen);
1328.495 -	  __left->_M_ref_nonnil();
1328.496 -	  _STLP_TRY {
1328.497 -	    __result = _S_tree_concat(__left, __nright);
1328.498 -          }
1328.499 -	  _STLP_UNWIND(_S_unref(__left); _S_unref(__nright));
1328.500 -#         ifndef __GC
1328.501 -	    _STLP_ASSERT(1 == __result->_M_ref_count)
1328.502 -#         endif
1328.503 -	  return __result;
1328.504 -	}
1328.505 -    }
1328.506 -    _RopeRep* __nright =
1328.507 -      _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
1328.508 -    _STLP_TRY {
1328.509 -      __r->_M_ref_nonnil();
1328.510 -      __result = _S_tree_concat(__r, __nright);
1328.511 -    }
1328.512 -    _STLP_UNWIND(_S_unref(__r); _S_unref(__nright));
1328.513 -#   ifndef __GC
1328.514 -      _STLP_ASSERT(1 == __result->_M_ref_count)
1328.515 -#   endif
1328.516 -    return __result;
1328.517 -}
1328.518 -
1328.519 -#ifndef __GC
1328.520 -template <class _CharT, class _Alloc>
1328.521 -__RopeRep__* 
1328.522 -rope<_CharT,_Alloc>::_S_destr_concat_char_iter(
1328.523 -  _RopeRep* __r, const _CharT* __s, size_t __slen)
1328.524 -{
1328.525 -    _RopeRep* __result;
1328.526 -    if (0 == __r)
1328.527 -      return _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
1328.528 -					      /* __r-> */allocator_type());
1328.529 -    size_t __count = __r->_M_ref_count;
1328.530 -    size_t __orig_size = __r->_M_size._M_data;
1328.531 -    _STLP_ASSERT(__count >= 1)
1328.532 -    if (__count > 1) return _S_concat_char_iter(__r, __s, __slen);
1328.533 -    if (0 == __slen) {
1328.534 -	__r->_M_ref_count = 2;      // One more than before
1328.535 -	return __r;
1328.536 -    }
1328.537 -    if (__orig_size + __slen <= _S_copy_max && 
1328.538 -          _RopeRep::_S_leaf == __r->_M_tag) {
1328.539 -	__result = _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
1328.540 -	return __result;
1328.541 -    }
1328.542 -    if (_RopeRep::_S_concat == __r->_M_tag) {
1328.543 -	_RopeLeaf* __right = (_RopeLeaf*)(((_RopeConcatenation*)__r)->_M_right);
1328.544 -	if (_RopeRep::_S_leaf == __right->_M_tag
1328.545 -	    && __right->_M_size._M_data + __slen <= _S_copy_max) {
1328.546 -	  _RopeRep* __new_right = 
1328.547 -	    _S_destr_leaf_concat_char_iter(__right, __s, __slen);
1328.548 -	  if (__right == __new_right) {
1328.549 -	      _STLP_ASSERT(__new_right->_M_ref_count == 2)
1328.550 -	      __new_right->_M_ref_count = 1;
1328.551 -	  } else {
1328.552 -	      _STLP_ASSERT(__new_right->_M_ref_count >= 1)
1328.553 -	      __right->_M_unref_nonnil();
1328.554 -	  }
1328.555 -	  _STLP_ASSERT(__r->_M_ref_count == 1)
1328.556 -	  __r->_M_ref_count = 2;    // One more than before.
1328.557 -      ((_RopeConcatenation*)__r)->_M_right = __new_right;
1328.558 -      // E.Musser : moved below
1328.559 -      //	  __r->_M_size._M_data = __orig_size + __slen;
1328.560 -	  if (0 != __r->_M_c_string) {
1328.561 -	      __r->_M_free_c_string();
1328.562 -	      __r->_M_c_string = 0;
1328.563 -	  }
1328.564 -	  __r->_M_size._M_data = __orig_size + __slen;
1328.565 -	  return __r;
1328.566 -	}
1328.567 -    }
1328.568 -    _RopeRep* __right =
1328.569 -      _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
1328.570 -    __r->_M_ref_nonnil();
1328.571 -    _STLP_TRY {
1328.572 -      __result = _S_tree_concat(__r, __right);
1328.573 -    }
1328.574 -    _STLP_UNWIND(_S_unref(__r); _S_unref(__right))
1328.575 -    _STLP_ASSERT(1 == __result->_M_ref_count)
1328.576 -    return __result;
1328.577 -}
1328.578 -#endif /* !__GC */
1328.579 -
1328.580 -template <class _CharT, class _Alloc>
1328.581 -__RopeRep__*
1328.582 -rope<_CharT,_Alloc>::_S_concat_rep(_RopeRep* __left, _RopeRep* __right)
1328.583 -{
1328.584 -    if (0 == __left) {
1328.585 -	_S_ref(__right);
1328.586 -	return __right;
1328.587 -    }
1328.588 -    if (0 == __right) {
1328.589 -	__left->_M_ref_nonnil();
1328.590 -	return __left;
1328.591 -    }
1328.592 -    if (_RopeRep::_S_leaf == __right->_M_tag) {
1328.593 -	if (_RopeRep::_S_leaf == __left->_M_tag) {
1328.594 -	  if (__right->_M_size._M_data + __left->_M_size._M_data <= _S_copy_max) {
1328.595 -	    return _S_leaf_concat_char_iter((_RopeLeaf*)__left,
1328.596 -					 ((_RopeLeaf*)__right)->_M_data,
1328.597 -					 __right->_M_size._M_data);
1328.598 -	  }
1328.599 -	} else if (_RopeRep::_S_concat == __left->_M_tag
1328.600 -		   && _RopeRep::_S_leaf ==
1328.601 -		      ((_RopeConcatenation*)__left)->_M_right->_M_tag) {
1328.602 -	  _RopeLeaf* __leftright =
1328.603 -		    (_RopeLeaf*)(((_RopeConcatenation*)__left)->_M_right); 
1328.604 -	  if (__leftright->_M_size._M_data + __right->_M_size._M_data <= _S_copy_max) {
1328.605 -	    _RopeRep* __leftleft = ((_RopeConcatenation*)__left)->_M_left;
1328.606 -	    _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright,
1328.607 -					   ((_RopeLeaf*)__right)->_M_data,
1328.608 -					   __right->_M_size._M_data);
1328.609 -	    __leftleft->_M_ref_nonnil();
1328.610 -	    _STLP_TRY {
1328.611 -	      return(_S_tree_concat(__leftleft, __rest));
1328.612 -            }
1328.613 -	    _STLP_UNWIND(_S_unref(__leftleft); _S_unref(__rest))
1328.614 -	  }
1328.615 -	}
1328.616 -    }
1328.617 -    __left->_M_ref_nonnil();
1328.618 -    __right->_M_ref_nonnil();
1328.619 -    _STLP_TRY {
1328.620 -      return(_S_tree_concat(__left, __right));
1328.621 -    }
1328.622 -    _STLP_UNWIND(_S_unref(__left); _S_unref(__right));
1328.623 -#ifdef _STLP_THROW_RETURN_BUG
1328.624 -	return 0;
1328.625 -#endif
1328.626 -}
1328.627 -
1328.628 -template <class _CharT, class _Alloc>
1328.629 -__RopeRep__*
1328.630 -rope<_CharT,_Alloc>::_S_substring(_RopeRep* __base, 
1328.631 -                               size_t __start, size_t __endp1)
1328.632 -{
1328.633 -    if (0 == __base) return 0;
1328.634 -    size_t __len = __base->_M_size._M_data;
1328.635 -    size_t __adj_endp1;
1328.636 -    const size_t __lazy_threshold = 128;
1328.637 -    
1328.638 -    if (__endp1 >= __len) {
1328.639 -	if (0 == __start) {
1328.640 -	    __base->_M_ref_nonnil();
1328.641 -	    return __base;
1328.642 -	} else {
1328.643 -	    __adj_endp1 = __len;
1328.644 -	}
1328.645 -    } else {
1328.646 -	__adj_endp1 = __endp1;
1328.647 -    }
1328.648 -    switch(__base->_M_tag) {
1328.649 -	case _RopeRep::_S_concat:
1328.650 -	    {
1328.651 -		_RopeConcatenation* __c = (_RopeConcatenation*)__base;
1328.652 -		_RopeRep* __left = __c->_M_left;
1328.653 -		_RopeRep* __right = __c->_M_right;
1328.654 -		size_t __left_len = __left->_M_size._M_data;
1328.655 -		_RopeRep* __result;
1328.656 -
1328.657 -		if (__adj_endp1 <= __left_len) {
1328.658 -		    return _S_substring(__left, __start, __endp1);
1328.659 -		} else if (__start >= __left_len) {
1328.660 -		    return _S_substring(__right, __start - __left_len,
1328.661 -				  __adj_endp1 - __left_len);
1328.662 -		}
1328.663 -		_Self_destruct_ptr __left_result(
1328.664 -		  _S_substring(__left, __start, __left_len));
1328.665 -		_Self_destruct_ptr __right_result(
1328.666 -		  _S_substring(__right, 0, __endp1 - __left_len));
1328.667 -		_STLP_MPWFIX_TRY		//*TY 06/01/2000 - mpw forgets to call dtor on __left_result and __right_result without this try block
1328.668 -		__result = _S_concat_rep(__left_result, __right_result);
1328.669 -#               ifndef __GC
1328.670 -		  _STLP_ASSERT(1 == __result->_M_ref_count)
1328.671 -#               endif
1328.672 -		return __result;
1328.673 -		_STLP_MPWFIX_CATCH		//*TY 06/01/2000 - 
1328.674 -	    }
1328.675 -	case _RopeRep::_S_leaf:
1328.676 -	    {
1328.677 -		_RopeLeaf* __l = (_RopeLeaf*)__base;
1328.678 -		_RopeLeaf* __result;
1328.679 -		size_t __result_len;
1328.680 -		if (__start >= __adj_endp1) return 0;
1328.681 -		__result_len = __adj_endp1 - __start;
1328.682 -		if (__result_len > __lazy_threshold) goto lazy;
1328.683 -#               ifdef __GC
1328.684 -		    const _CharT* __section = __l->_M_data + __start;
1328.685 -		    __result = _S_new_RopeLeaf(__section, __result_len,
1328.686 -					  __base->get_allocator());
1328.687 -		    __result->_M_c_string = 0;  // Not eos terminated.
1328.688 -#               else
1328.689 -		    // We should sometimes create substring node instead.
1328.690 -		    __result = _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(
1328.691 -					__l->_M_data + __start, __result_len,
1328.692 -					__base->get_allocator());
1328.693 -#               endif
1328.694 -		return __result;
1328.695 -	    }
1328.696 -	case _RopeRep::_S_substringfn:
1328.697 -	    // Avoid introducing multiple layers of substring nodes.
1328.698 -	    {
1328.699 -		_RopeSubstring* __old = (_RopeSubstring*)__base;
1328.700 -		size_t __result_len;
1328.701 -		if (__start >= __adj_endp1) return 0;
1328.702 -		__result_len = __adj_endp1 - __start;
1328.703 -		if (__result_len > __lazy_threshold) {
1328.704 -		    _RopeSubstring* __result =
1328.705 -			_S_new_RopeSubstring(__old->_M_base,
1328.706 -					  __start + __old->_M_start,
1328.707 -					  __adj_endp1 - __start,
1328.708 -					  __base->get_allocator());
1328.709 -		    return __result;
1328.710 -
1328.711 -		} // *** else fall through: ***
1328.712 -	    }
1328.713 -	case _RopeRep::_S_function:
1328.714 -	    {
1328.715 -		_RopeFunction* __f = (_RopeFunction*)__base;
1328.716 -		if (__start >= __adj_endp1) return 0;
1328.717 -		size_t __result_len = __adj_endp1 - __start;
1328.718 -
1328.719 -		if (__result_len > __lazy_threshold) goto lazy;
1328.720 -		_CharT* __section = __base->_M_size.allocate(_S_rounded_up_size(__result_len));
1328.721 -		_STLP_TRY {
1328.722 -		  (*(__f->_M_fn))(__start, __result_len, __section);
1328.723 -                }
1328.724 -		_STLP_UNWIND(_RopeRep::_S_free_string(
1328.725 -	               __section, __result_len, __base->get_allocator()));
1328.726 -		_S_cond_store_eos(__section[__result_len]);
1328.727 -		return _S_new_RopeLeaf(__section, __result_len,
1328.728 -				       __base->get_allocator());
1328.729 -	    }
1328.730 -    }
1328.731 -    /*NOTREACHED*/
1328.732 -    _STLP_ASSERT(false)
1328.733 -  lazy:
1328.734 -    {
1328.735 -	// Create substring node.
1328.736 -	return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start,
1328.737 -			       __base->get_allocator());
1328.738 -    }
1328.739 -}
1328.740 -
1328.741 -template<class _CharT>
1328.742 -class _Rope_flatten_char_consumer : public _Rope_char_consumer<_CharT> {
1328.743 -    private:
1328.744 -	_CharT* _M_buf_ptr;
1328.745 -    public:
1328.746 -	//  _CharT* _M_buffer;  // XXX not used
1328.747 -
1328.748 -	_Rope_flatten_char_consumer(_CharT* __buffer) {
1328.749 -	    _M_buf_ptr = __buffer;
1328.750 -	};
1328.751 -	~_Rope_flatten_char_consumer() {}
1328.752 -	bool operator() (const _CharT* __leaf, size_t __n) {
1328.753 -	    uninitialized_copy_n(__leaf, __n, _M_buf_ptr);
1328.754 -	    _M_buf_ptr += __n;
1328.755 -	    return true;
1328.756 -	}
1328.757 -};
1328.758 -	    
1328.759 -template<class _CharT>
1328.760 -class _Rope_find_char_char_consumer : public _Rope_char_consumer<_CharT> {
1328.761 -    private:
1328.762 -	_CharT _M_pattern;
1328.763 -    public:
1328.764 -	size_t _M_count;  // Number of nonmatching characters
1328.765 -	_Rope_find_char_char_consumer(_CharT __p) 
1328.766 -	  : _M_pattern(__p), _M_count(0) {}
1328.767 -	~_Rope_find_char_char_consumer() {}
1328.768 -	bool operator() (const _CharT* __leaf, size_t __n) {
1328.769 -	    size_t __i;
1328.770 -	    for (__i = 0; __i < __n; __i++) {
1328.771 -		if (__leaf[__i] == _M_pattern) {
1328.772 -		    _M_count += __i; return false;
1328.773 -		}
1328.774 -	    }
1328.775 -	    _M_count += __n; return true;
1328.776 -	}
1328.777 -};
1328.778 -
1328.779 -#if !defined (_STLP_USE_NO_IOSTREAMS)	    
1328.780 -#if defined (_STLP_USE_NEW_IOSTREAMS)
1328.781 -  template<class _CharT, class _Traits>
1328.782 -  // Here _CharT is both the stream and rope character type.
1328.783 -#else
1328.784 - template<class _CharT>
1328.785 -  // Here _CharT is the rope character type.  Unlike in the
1328.786 -  // above case, we somewhat handle the case in which it doesn't
1328.787 -  // match the stream character type, i.e. char.
1328.788 -#endif
1328.789 -class _Rope_insert_char_consumer : public _Rope_char_consumer<_CharT> {
1328.790 -    private:
1328.791 -#       if defined (_STLP_USE_NEW_IOSTREAMS)
1328.792 -	  typedef basic_ostream<_CharT,_Traits> _Insert_ostream;
1328.793 -#	else
1328.794 - 	typedef ostream _Insert_ostream;
1328.795 -#	endif
1328.796 -	_Insert_ostream& _M_o;
1328.797 -    public:
1328.798 -	// _CharT* buffer;    // XXX not used
1328.799 -	_Rope_insert_char_consumer(_Insert_ostream& __writer) 
1328.800 -	  : _M_o(__writer) {};
1328.801 -#if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))		//*TY 05/23/2000 - added support for mpw compiler's trigger function approach to generate vtable
1328.802 -  ~_Rope_insert_char_consumer();		//*TY 05/23/2000 - 
1328.803 -#else		//*TY 05/23/2000 - 
1328.804 -  ~_Rope_insert_char_consumer() {}
1328.805 -#endif		//*TY 05/23/2000 - 
1328.806 -		// Caller is presumed to own the ostream
1328.807 -	bool operator() (const _CharT* __leaf, size_t __n);
1328.808 -		// Returns true to continue traversal.
1328.809 -};
1328.810 -	    
1328.811 -# if defined ( _STLP_USE_NEW_IOSTREAMS )
1328.812 -#  if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))		//*TY 05/23/2000 - added support for mpw compiler's trigger function approach to generate vtable
1328.813 -  template<class _CharT, class _Traits>
1328.814 -  _Rope_insert_char_consumer<_CharT, _Traits>::  ~_Rope_insert_char_consumer() {}
1328.815 -#  endif		//*TY 05/23/2000 - 
1328.816 -
1328.817 -  template<class _CharT, class _Traits>
1328.818 -  bool _Rope_insert_char_consumer<_CharT, _Traits>::operator()
1328.819 -					(const _CharT* __leaf, size_t __n)
1328.820 -{
1328.821 -    size_t __i;
1328.822 -    //  We assume that formatting is set up correctly for each element.
1328.823 -    for (__i = 0; __i < __n; __i++) _M_o.put(__leaf[__i]);
1328.824 -    return true;
1328.825 -}
1328.826 -# else
1328.827 -#  if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))		//*TY 05/23/2000 - added support for mpw compiler's trigger function approach to generate vtable
1328.828 -  template<class _CharT>
1328.829 -  _Rope_insert_char_consumer<_CharT>::  ~_Rope_insert_char_consumer() {}
1328.830 -#  endif		//*TY 05/23/2000 - 
1328.831 -
1328.832 -  template<class _CharT>
1328.833 -  bool _Rope_insert_char_consumer<_CharT>::operator()
1328.834 -					(const _CharT* __leaf, size_t __n)
1328.835 -  {
1328.836 -    size_t __i;
1328.837 -    //  We assume that formatting is set up correctly for each element.
1328.838 -    for (__i = 0; __i < __n; __i++) _M_o << __leaf[__i];
1328.839 -    return true;
1328.840 -  }
1328.841 -
1328.842 -# if !defined (_STLP_NO_METHOD_SPECIALIZATION)
1328.843 -_STLP_TEMPLATE_NULL
1328.844 -inline bool 
1328.845 -_Rope_insert_char_consumer<char>::operator()
1328.846 -					(const char* __leaf, size_t __n)
1328.847 -{
1328.848 -    size_t __i;
1328.849 -    for (__i = 0; __i < __n; __i++) _M_o.put(__leaf[__i]);
1328.850 -    return true;
1328.851 -}
1328.852 -
1328.853 -#endif /* _STLP_METHOD_SPECIALIZATION */
1328.854 -#endif /* _STLP_USE_NEW_IOSTREAM */
1328.855 -#endif /* if !defined (_STLP_USE_NO_IOSTREAMS) */
1328.856 -
1328.857 -template <class _CharT, class _Alloc>
1328.858 -bool rope<_CharT, _Alloc>::_S_apply_to_pieces(
1328.859 -				_Rope_char_consumer<_CharT>& __c,
1328.860 -				const _RopeRep* __r,
1328.861 -				size_t __begin, size_t __end)
1328.862 -{
1328.863 -    if (0 == __r) return true;
1328.864 -    switch(__r->_M_tag) {
1328.865 -	case _RopeRep::_S_concat:
1328.866 -	    {
1328.867 -		_RopeConcatenation* __conc = (_RopeConcatenation*)__r;
1328.868 -		_RopeRep* __left =  __conc->_M_left;
1328.869 -		size_t __left_len = __left->_M_size._M_data;
1328.870 -		if (__begin < __left_len) {
1328.871 -		    size_t __left_end = (min) (__left_len, __end);
1328.872 -		    if (!_S_apply_to_pieces(__c, __left, __begin, __left_end))
1328.873 -			return false;
1328.874 -		}
1328.875 -		if (__end > __left_len) {
1328.876 -		    _RopeRep* __right =  __conc->_M_right;
1328.877 -		    size_t __right_start = (max)(__left_len, __begin);
1328.878 -		    if (!_S_apply_to_pieces(__c, __right,
1328.879 -					 __right_start - __left_len,
1328.880 -					 __end - __left_len)) {
1328.881 -			return false;
1328.882 -		    }
1328.883 -		}
1328.884 -	    }
1328.885 -	    return true;
1328.886 -	case _RopeRep::_S_leaf:
1328.887 -	    {
1328.888 -		_RopeLeaf* __l = (_RopeLeaf*)__r;
1328.889 -		return __c.operator()(__l->_M_data + __begin, __end - __begin);
1328.890 -	    }
1328.891 -	case _RopeRep::_S_function:
1328.892 -	case _RopeRep::_S_substringfn:
1328.893 -	    {
1328.894 -		_RopeFunction* __f = (_RopeFunction*)__r;
1328.895 -		size_t __len = __end - __begin;
1328.896 -#ifdef __SYMBIAN32__
1328.897 -		bool __result = false;
1328.898 -#else
1328.899 -		bool __result;
1328.900 -#endif
1328.901 -		_CharT* __buffer =
1328.902 -		  (_CharT*)__sgi_alloc::allocate(__len * sizeof(_CharT));
1328.903 -		_STLP_TRY {
1328.904 -		  (*(__f->_M_fn))(__begin, __len, __buffer);
1328.905 -		  __result = __c.operator()(__buffer, __len);
1328.906 -                  __sgi_alloc::deallocate(__buffer, __len * sizeof(_CharT));
1328.907 -                }
1328.908 -		_STLP_UNWIND((__sgi_alloc::deallocate(__buffer,
1328.909 -						      __len * sizeof(_CharT))))
1328.910 -		return __result;
1328.911 -	    }
1328.912 -	default:
1328.913 -	    _STLP_ASSERT(false)
1328.914 -	    /*NOTREACHED*/
1328.915 -	    return false;
1328.916 -    }
1328.917 -}
1328.918 -
1328.919 -template <class _CharT> inline bool _Rope_is_simple(_CharT*) { return false; }
1328.920 -inline bool _Rope_is_simple(char*) { return true; }
1328.921 -# ifdef _STLP_HAS_WCHAR_T
1328.922 -inline bool _Rope_is_simple(wchar_t*) { return true; }
1328.923 -# endif
1328.924 -
1328.925 -#if !defined (_STLP_USE_NO_IOSTREAMS)
1328.926 -#if defined (_STLP_USE_NEW_IOSTREAMS)
1328.927 -  template<class _CharT, class _Traits>
1328.928 -  inline void _Rope_fill(basic_ostream<_CharT, _Traits>& __o, size_t __n)
1328.929 -#else
1328.930 -inline void _Rope_fill(ostream& __o, size_t __n)
1328.931 -#endif
1328.932 -{
1328.933 -    char __f = __o.fill();
1328.934 -    size_t __i;
1328.935 -
1328.936 -    for (__i = 0; __i < __n; __i++) __o.put(__f);
1328.937 -}
1328.938 -    
1328.939 -#if defined (_STLP_USE_NEW_IOSTREAMS)
1328.940 -  template<class _CharT, class _Traits, class _Alloc>
1328.941 -  basic_ostream<_CharT, _Traits>& operator<<
1328.942 -					(basic_ostream<_CharT, _Traits>& __o,
1328.943 -					 const rope<_CharT, _Alloc>& __r)
1328.944 -# else
1328.945 -template<class _CharT, class _Alloc>
1328.946 -ostream& operator<< (ostream& __o, const rope<_CharT, _Alloc>& __r)
1328.947 -#endif
1328.948 -{
1328.949 -    size_t __w = __o.width();
1328.950 -    bool __left = bool(__o.flags() & ios::left);
1328.951 -    size_t __pad_len;
1328.952 -    size_t __rope_len = __r.size();
1328.953 -#   if defined (_STLP_USE_NEW_IOSTREAMS)
1328.954 -      _Rope_insert_char_consumer<_CharT, _Traits> __c(__o);
1328.955 -#   else
1328.956 -    _Rope_insert_char_consumer<_CharT> __c(__o);
1328.957 -#   endif
1328.958 -    bool __is_simple = _Rope_is_simple((_CharT*)0);
1328.959 -    
1328.960 -    if (__rope_len < __w) {
1328.961 -	__pad_len = __w - __rope_len;
1328.962 -    } else {
1328.963 -	__pad_len = 0;
1328.964 -    }
1328.965 -    if (!__is_simple) __o.width(__w/__rope_len);
1328.966 -    _STLP_TRY {
1328.967 -      if (__is_simple && !__left && __pad_len > 0) {
1328.968 -	_Rope_fill(__o, __pad_len);
1328.969 -      }
1328.970 -      __r.apply_to_pieces(0, __r.size(), __c);
1328.971 -      if (__is_simple && __left && __pad_len > 0) {
1328.972 -	_Rope_fill(__o, __pad_len);
1328.973 -      }
1328.974 -      if (!__is_simple)
1328.975 -        __o.width(__w);
1328.976 -    }
1328.977 -    _STLP_UNWIND(if (!__is_simple) __o.width(__w))
1328.978 -    return __o;
1328.979 -}
1328.980 -
1328.981 -#endif /* NO_IOSTREAMS */
1328.982 -
1328.983 -template <class _CharT, class _Alloc>
1328.984 -_CharT*
1328.985 -rope<_CharT,_Alloc>::_S_flatten(_RopeRep* __r,
1328.986 -				 size_t __start, size_t __len,
1328.987 -				 _CharT* __buffer)
1328.988 -{
1328.989 -    _Rope_flatten_char_consumer<_CharT> __c(__buffer);
1328.990 -    _S_apply_to_pieces(__c, __r, __start, __start + __len);
1328.991 -    return(__buffer + __len);
1328.992 -}
1328.993 -
1328.994 -template <class _CharT, class _Alloc>
1328.995 -size_t
1328.996 -rope<_CharT,_Alloc>::find(_CharT __pattern, size_t __start) const
1328.997 -{
1328.998 -    _Rope_find_char_char_consumer<_CharT> __c(__pattern);
1328.999 -    _S_apply_to_pieces(__c, _M_tree_ptr._M_data, __start, size());
1328.1000 -    size_type __result_pos = __start + __c._M_count;
1328.1001 -#   ifndef _STLP_OLD_ROPE_SEMANTICS
1328.1002 -	if (__result_pos == size()) __result_pos = npos;
1328.1003 -#   endif
1328.1004 -    return __result_pos;
1328.1005 -}
1328.1006 -
1328.1007 -template <class _CharT, class _Alloc>
1328.1008 -_CharT*
1328.1009 -rope<_CharT,_Alloc>::_S_flatten(_Rope_RopeRep<_CharT, _Alloc>* __r, _CharT* __buffer)
1328.1010 -{
1328.1011 -    if (0 == __r) return __buffer;
1328.1012 -    switch(__r->_M_tag) {
1328.1013 -	case _RopeRep::_S_concat:
1328.1014 -	    {
1328.1015 -		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1328.1016 -		_RopeRep* __left = __c->_M_left;
1328.1017 -		_RopeRep* __right = __c->_M_right;
1328.1018 -		_CharT* __rest = _S_flatten(__left, __buffer);
1328.1019 -		return _S_flatten(__right, __rest);
1328.1020 -	    }
1328.1021 -	case _RopeRep::_S_leaf:
1328.1022 -	    {
1328.1023 -		_RopeLeaf* __l = (_RopeLeaf*)__r;
1328.1024 -		return copy_n(__l->_M_data, __l->_M_size._M_data, __buffer).second;
1328.1025 -	    }
1328.1026 -	case _RopeRep::_S_function:
1328.1027 -	case _RopeRep::_S_substringfn:
1328.1028 -	    // We dont yet do anything with substring nodes.
1328.1029 -	    // This needs to be fixed before ropefiles will work well.
1328.1030 -	    {
1328.1031 -		_RopeFunction* __f = (_RopeFunction*)__r;
1328.1032 -		(*(__f->_M_fn))(0, __f->_M_size._M_data, __buffer);
1328.1033 -		return __buffer + __f->_M_size._M_data;
1328.1034 -	    }
1328.1035 -	default:
1328.1036 -	    _STLP_ASSERT(false)
1328.1037 -	    /*NOTREACHED*/
1328.1038 -	    return 0;
1328.1039 -    }
1328.1040 -}
1328.1041 -
1328.1042 -
1328.1043 -// This needs work for _CharT != char
1328.1044 -template <class _CharT, class _Alloc>
1328.1045 -void
1328.1046 -rope<_CharT,_Alloc>::_S_dump(_RopeRep* __r, int __indent)
1328.1047 -{
1328.1048 -    for (int __i = 0; __i < __indent; __i++) putchar(' ');
1328.1049 -    if (0 == __r) {
1328.1050 -      printf("NULL\n"); return;
1328.1051 -    }
1328.1052 -    if (_RopeRep::_S_concat == __r->_M_tag) {
1328.1053 -	_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1328.1054 -	_RopeRep* __left = __c->_M_left;
1328.1055 -	_RopeRep* __right = __c->_M_right;
1328.1056 -
1328.1057 -#       ifdef __GC
1328.1058 -	  printf("Concatenation %p (depth = %d, len = %ld, %s balanced)\n",
1328.1059 -	    __r, __r->_M_depth, __r->_M_size._M_data, __r->_M_is_balanced? "" : "not");
1328.1060 -#       else
1328.1061 -	  printf("Concatenation %p (rc = %ld, depth = %d, "
1328.1062 -	           "len = %ld, %s balanced)\n",
1328.1063 -		 __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size._M_data,
1328.1064 -		 __r->_M_is_balanced? "" : "not");
1328.1065 -#       endif
1328.1066 -	_S_dump(__left, __indent + 2);
1328.1067 -	_S_dump(__right, __indent + 2);
1328.1068 -	return;
1328.1069 -    } else {
1328.1070 -	const char* __kind;
1328.1071 -
1328.1072 -	switch (__r->_M_tag) {
1328.1073 -	    case _RopeRep::_S_leaf:
1328.1074 -		__kind = "Leaf";
1328.1075 -		break;
1328.1076 -	    case _RopeRep::_S_function:
1328.1077 -		__kind = "Function";
1328.1078 -		break;
1328.1079 -	    case _RopeRep::_S_substringfn:
1328.1080 -		__kind = "Function representing substring";
1328.1081 -		break;
1328.1082 -	    default:
1328.1083 -		__kind = "(corrupted kind field!)";
1328.1084 -	}
1328.1085 -#       ifdef __GC
1328.1086 -	  printf("%s %p (depth = %d, len = %ld) ",
1328.1087 -		 __kind, __r, __r->_M_depth, __r->_M_size._M_data);
1328.1088 -#       else
1328.1089 -	  printf("%s %p (rc = %ld, depth = %d, len = %ld) ",
1328.1090 -		 __kind, __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size._M_data);
1328.1091 -#       endif
1328.1092 -	if (_S_is_one_byte_char_type((_CharT*)0)) {
1328.1093 -	    const int __max_len = 40;
1328.1094 -	    _Self_destruct_ptr __prefix(_S_substring(__r, 0, __max_len));
1328.1095 -	    _CharT __buffer[__max_len + 1];
1328.1096 -	    bool __too_big = __r->_M_size._M_data > __prefix->_M_size._M_data;
1328.1097 -
1328.1098 -	    _S_flatten(__prefix, __buffer);
1328.1099 -	    __buffer[__prefix->_M_size._M_data] = _S_eos((_CharT*)0); 
1328.1100 -	    printf("%s%s\n", 
1328.1101 -	           (char*)__buffer, __too_big? "...\n" : "\n");
1328.1102 -	} else {
1328.1103 -	    printf("\n");
1328.1104 -	}
1328.1105 -    }
1328.1106 -}
1328.1107 -
1328.1108 -# define __ROPE_TABLE_BODY  = { \
1328.1109 -/* 0 */1, /* 1 */2, /* 2 */3, /* 3 */5, /* 4 */8, /* 5 */13, /* 6 */21,         \
1328.1110 -/* 7 */34, /* 8 */55, /* 9 */89, /* 10 */144, /* 11 */233, /* 12 */377,         \
1328.1111 -/* 13 */610, /* 14 */987, /* 15 */1597, /* 16 */2584, /* 17 */4181,             \
1328.1112 -/* 18 */6765ul, /* 19 */10946ul, /* 20 */17711ul, /* 21 */28657ul, /* 22 */46368ul,   \
1328.1113 -/* 23 */75025ul, /* 24 */121393ul, /* 25 */196418ul, /* 26 */317811ul,                \
1328.1114 -/* 27 */514229ul, /* 28 */832040ul, /* 29 */1346269ul, /* 30 */2178309ul,             \
1328.1115 -/* 31 */3524578ul, /* 32 */5702887ul, /* 33 */9227465ul, /* 34 */14930352ul,          \
1328.1116 -/* 35 */24157817ul, /* 36 */39088169ul, /* 37 */63245986ul, /* 38 */102334155ul,      \
1328.1117 -/* 39 */165580141ul, /* 40 */267914296ul, /* 41 */433494437ul,                        \
1328.1118 -/* 42 */701408733ul, /* 43 */1134903170ul, /* 44 */1836311903ul,                      \
1328.1119 -/* 45 */2971215073ul }
1328.1120 -
1328.1121 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1328.1122 -template <class _CharT, class _Alloc>
1328.1123 -const unsigned long
1328.1124 -rope<_CharT,_Alloc>::_S_min_len[__ROPE_DEPTH_SIZE] __ROPE_TABLE_BODY ;
1328.1125 -# else 
1328.1126 -__DECLARE_INSTANCE(const unsigned long, 
1328.1127 -                   crope::_S_min_len[__ROPE_DEPTH_SIZE],
1328.1128 -                   __ROPE_TABLE_BODY);
1328.1129 -#  ifndef _STLP_NO_WCHAR_T
1328.1130 -__DECLARE_INSTANCE(const unsigned long, 
1328.1131 -                   wrope::_S_min_len[__ROPE_DEPTH_SIZE],
1328.1132 -                   __ROPE_TABLE_BODY);
1328.1133 -#  endif
1328.1134 -# endif
1328.1135 -# undef __ROPE_DEPTH_SIZE
1328.1136 -# undef __ROPE_MAX_DEPTH
1328.1137 -# undef __ROPE_TABLE_BODY
1328.1138 -
1328.1139 -// These are Fibonacci numbers < 2**32.
1328.1140 -
1328.1141 -template <class _CharT, class _Alloc>
1328.1142 -__RopeRep__*
1328.1143 -rope<_CharT,_Alloc>::_S_balance(_RopeRep* __r)
1328.1144 -{
1328.1145 -    _RopeRep* __forest[_RopeRep::_S_max_rope_depth + 1];
1328.1146 -    _RopeRep* __result = 0;
1328.1147 -    int __i;
1328.1148 -    // Invariant:
1328.1149 -    // The concatenation of forest in descending order is equal to __r.
1328.1150 -    // __forest[__i]._M_size._M_data >= _S_min_len[__i]
1328.1151 -    // __forest[__i]._M_depth = __i
1328.1152 -    // References from forest are included in refcount.
1328.1153 -
1328.1154 -    for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i) 
1328.1155 -      __forest[__i] = 0;
1328.1156 -    _STLP_TRY {
1328.1157 -      _S_add_to_forest(__r, __forest);
1328.1158 -      for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i) 
1328.1159 -        if (0 != __forest[__i]) {
1328.1160 -#	ifndef __GC
1328.1161 -	  _Self_destruct_ptr __old(__result);
1328.1162 -#	endif
1328.1163 -	  __result = _S_concat_rep(__forest[__i], __result);
1328.1164 -	__forest[__i]->_M_unref_nonnil();
1328.1165 -#	if !defined(__GC) && defined(_STLP_USE_EXCEPTIONS)
1328.1166 -	  __forest[__i] = 0;
1328.1167 -#	endif
1328.1168 -      }
1328.1169 -    }
1328.1170 -    _STLP_UNWIND(for(__i = 0; __i <= _RopeRep::_S_max_rope_depth; __i++)
1328.1171 -		 _S_unref(__forest[__i]))
1328.1172 -    if (__result->_M_depth > _RopeRep::_S_max_rope_depth) {
1328.1173 -	__stl_throw_range_error("rope too long");
1328.1174 -    }
1328.1175 -    return(__result);
1328.1176 -}
1328.1177 -
1328.1178 -
1328.1179 -template <class _CharT, class _Alloc>
1328.1180 -void
1328.1181 -rope<_CharT,_Alloc>::_S_add_to_forest(_RopeRep* __r, _RopeRep** __forest)
1328.1182 -{
1328.1183 -    if (__r -> _M_is_balanced) {
1328.1184 -	_S_add_leaf_to_forest(__r, __forest);
1328.1185 -	return;
1328.1186 -    }
1328.1187 -    _STLP_ASSERT(__r->_M_tag == _RopeRep::_S_concat)
1328.1188 -    {
1328.1189 -	_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1328.1190 -
1328.1191 -	_S_add_to_forest(__c->_M_left, __forest);
1328.1192 -	_S_add_to_forest(__c->_M_right, __forest);
1328.1193 -    }
1328.1194 -}
1328.1195 -
1328.1196 -
1328.1197 -template <class _CharT, class _Alloc>
1328.1198 -void
1328.1199 -rope<_CharT,_Alloc>::_S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest)
1328.1200 -{
1328.1201 -    _RopeRep* __insertee;   		// included in refcount
1328.1202 -    _RopeRep* __too_tiny = 0;    	// included in refcount
1328.1203 -    int __i;  				// forest[0..__i-1] is empty
1328.1204 -    size_t __s = __r->_M_size._M_data;
1328.1205 -
1328.1206 -    for (__i = 0; __s >= _S_min_len[__i+1]/* not this bucket */; ++__i) {
1328.1207 -	if (0 != __forest[__i]) {
1328.1208 -#	    ifndef __GC
1328.1209 -	      _Self_destruct_ptr __old(__too_tiny);
1328.1210 -#	    endif
1328.1211 -	    __too_tiny = _S_concat_and_set_balanced(__forest[__i], __too_tiny);
1328.1212 -	    __forest[__i]->_M_unref_nonnil();
1328.1213 -	    __forest[__i] = 0;
1328.1214 -	}
1328.1215 -    }
1328.1216 -    {
1328.1217 -#	ifndef __GC
1328.1218 -	  _Self_destruct_ptr __old(__too_tiny);
1328.1219 -#	endif
1328.1220 -	__insertee = _S_concat_and_set_balanced(__too_tiny, __r);
1328.1221 -    }
1328.1222 -    // Too_tiny dead, and no longer included in refcount.
1328.1223 -    // Insertee is live and included.
1328.1224 -    _STLP_ASSERT(_S_is_almost_balanced(__insertee))
1328.1225 -    _STLP_ASSERT(__insertee->_M_depth <= __r->_M_depth + 1)
1328.1226 -    for (;; ++__i) {
1328.1227 -	if (0 != __forest[__i]) {
1328.1228 -#	    ifndef __GC
1328.1229 -	      _Self_destruct_ptr __old(__insertee);
1328.1230 -#	    endif
1328.1231 -	    __insertee = _S_concat_and_set_balanced(__forest[__i], __insertee);
1328.1232 -	    __forest[__i]->_M_unref_nonnil();
1328.1233 -	    __forest[__i] = 0;
1328.1234 -	    _STLP_ASSERT(_S_is_almost_balanced(__insertee))
1328.1235 -	}
1328.1236 -	_STLP_ASSERT(_S_min_len[__i] <= __insertee->_M_size._M_data)
1328.1237 -	_STLP_ASSERT(__forest[__i] == 0)
1328.1238 -	if (__i == _RopeRep::_S_max_rope_depth || 
1328.1239 -	      __insertee->_M_size._M_data < _S_min_len[__i+1]) {
1328.1240 -	    __forest[__i] = __insertee;
1328.1241 -	    // refcount is OK since __insertee is now dead.
1328.1242 -	    return;
1328.1243 -	}
1328.1244 -    }
1328.1245 -}
1328.1246 -
1328.1247 -template <class _CharT, class _Alloc>
1328.1248 -_CharT
1328.1249 -rope<_CharT,_Alloc>::_S_fetch(_RopeRep* __r, size_type __i)
1328.1250 -{
1328.1251 -    __GC_CONST _CharT* __cstr = __r->_M_c_string;
1328.1252 -
1328.1253 -    _STLP_ASSERT(__i < __r->_M_size._M_data)
1328.1254 -    if (0 != __cstr) return __cstr[__i]; 
1328.1255 -    for(;;) {
1328.1256 -      switch(__r->_M_tag) {
1328.1257 -	case _RopeRep::_S_concat:
1328.1258 -	    {
1328.1259 -		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1328.1260 -		_RopeRep* __left = __c->_M_left;
1328.1261 -		size_t __left_len = __left->_M_size._M_data;
1328.1262 -
1328.1263 -		if (__i >= __left_len) {
1328.1264 -		    __i -= __left_len;
1328.1265 -		    __r = __c->_M_right;
1328.1266 -		} else {
1328.1267 -		    __r = __left;
1328.1268 -		}
1328.1269 -	    }
1328.1270 -	    break;
1328.1271 -	case _RopeRep::_S_leaf:
1328.1272 -	    {
1328.1273 -		_RopeLeaf* __l = (_RopeLeaf*)__r;
1328.1274 -		return __l->_M_data[__i];
1328.1275 -	    }
1328.1276 -	case _RopeRep::_S_function:
1328.1277 -	case _RopeRep::_S_substringfn:
1328.1278 -	    {
1328.1279 -		_RopeFunction* __f = (_RopeFunction*)__r;
1328.1280 -		_CharT __result;
1328.1281 -
1328.1282 -		(*(__f->_M_fn))(__i, 1, &__result);
1328.1283 -		return __result;
1328.1284 -	    }
1328.1285 -      }
1328.1286 -    }
1328.1287 -#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1328.1288 -    return 0;
1328.1289 -#endif
1328.1290 -}
1328.1291 -
1328.1292 -# ifndef __GC
1328.1293 -// Return a uniquely referenced character slot for the given
1328.1294 -// position, or 0 if that's not possible.
1328.1295 -template <class _CharT, class _Alloc>
1328.1296 -_CharT*
1328.1297 -rope<_CharT,_Alloc>::_S_fetch_ptr(_RopeRep* __r, size_type __i)
1328.1298 -{
1328.1299 -    _RopeRep* __clrstack[_RopeRep::_S_max_rope_depth];
1328.1300 -    size_t __csptr = 0;
1328.1301 -
1328.1302 -    for(;;) {
1328.1303 -      if (__r->_M_ref_count > 1) return 0;
1328.1304 -      switch(__r->_M_tag) {
1328.1305 -	case _RopeRep::_S_concat:
1328.1306 -	    {
1328.1307 -		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1328.1308 -		_RopeRep* __left = __c->_M_left;
1328.1309 -		size_t __left_len = __left->_M_size._M_data;
1328.1310 -
1328.1311 -		if (__c->_M_c_string != 0) __clrstack[__csptr++] = __c;
1328.1312 -		if (__i >= __left_len) {
1328.1313 -		    __i -= __left_len;
1328.1314 -		    __r = __c->_M_right;
1328.1315 -		} else {
1328.1316 -		    __r = __left;
1328.1317 -		}
1328.1318 -	    }
1328.1319 -	    break;
1328.1320 -	case _RopeRep::_S_leaf:
1328.1321 -	    {
1328.1322 -		_RopeLeaf* __l = (_RopeLeaf*)__r;
1328.1323 -		if (__l->_M_c_string != __l->_M_data && __l->_M_c_string != 0)
1328.1324 -		    __clrstack[__csptr++] = __l;
1328.1325 -		while (__csptr > 0) {
1328.1326 -		    -- __csptr;
1328.1327 -		    _RopeRep* __d = __clrstack[__csptr];
1328.1328 -		    __d->_M_free_c_string();
1328.1329 -		    __d->_M_c_string = 0;
1328.1330 -		}
1328.1331 -		return __l->_M_data + __i;
1328.1332 -	    }
1328.1333 -	case _RopeRep::_S_function:
1328.1334 -	case _RopeRep::_S_substringfn:
1328.1335 -	    return 0;
1328.1336 -      }
1328.1337 -    }
1328.1338 -#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1328.1339 -    return 0;
1328.1340 -#endif
1328.1341 -
1328.1342 -}
1328.1343 -# endif /* __GC */
1328.1344 -
1328.1345 -// The following could be implemented trivially using
1328.1346 -// lexicographical_compare_3way.
1328.1347 -// We do a little more work to avoid dealing with rope iterators for
1328.1348 -// flat strings.
1328.1349 -template <class _CharT, class _Alloc>
1328.1350 -int
1328.1351 -rope<_CharT,_Alloc>::_S_compare (const _RopeRep* __left, 
1328.1352 -                                 const _RopeRep* __right)
1328.1353 -{
1328.1354 -    size_t __left_len;
1328.1355 -    size_t __right_len;
1328.1356 -
1328.1357 -    if (0 == __right) return 0 != __left;
1328.1358 -    if (0 == __left) return -1;
1328.1359 -    __left_len = __left->_M_size._M_data;
1328.1360 -    __right_len = __right->_M_size._M_data;
1328.1361 -    if (_RopeRep::_S_leaf == __left->_M_tag) {
1328.1362 -	_RopeLeaf* __l = (_RopeLeaf*) __left;
1328.1363 -	if (_RopeRep::_S_leaf == __right->_M_tag) {
1328.1364 -	    _RopeLeaf* __r = (_RopeLeaf*) __right;
1328.1365 -	    return lexicographical_compare_3way(
1328.1366 -			__l->_M_data, __l->_M_data + __left_len,
1328.1367 -			__r->_M_data, __r->_M_data + __right_len);
1328.1368 -	} else {
1328.1369 -	    const_iterator __rstart(__right, 0);
1328.1370 -	    const_iterator __rend(__right, __right_len);
1328.1371 -	    return lexicographical_compare_3way(
1328.1372 -			__l->_M_data, __l->_M_data + __left_len,
1328.1373 -			__rstart, __rend);
1328.1374 -	}
1328.1375 -    } else {
1328.1376 -	const_iterator __lstart(__left, 0);
1328.1377 -	const_iterator __lend(__left, __left_len);
1328.1378 -	if (_RopeRep::_S_leaf == __right->_M_tag) {
1328.1379 -	    _RopeLeaf* __r = (_RopeLeaf*) __right;
1328.1380 -	    return lexicographical_compare_3way(
1328.1381 -				   __lstart, __lend,
1328.1382 -				   __r->_M_data, __r->_M_data + __right_len);
1328.1383 -	} else {
1328.1384 -	    const_iterator __rstart(__right, 0);
1328.1385 -	    const_iterator __rend(__right, __right_len);
1328.1386 -	    return lexicographical_compare_3way(
1328.1387 -				   __lstart, __lend,
1328.1388 -				   __rstart, __rend);
1328.1389 -	}
1328.1390 -    }
1328.1391 -}
1328.1392 -
1328.1393 -// Assignment to reference proxies.
1328.1394 -template <class _CharT, class _Alloc>
1328.1395 -_Rope_char_ref_proxy<_CharT, _Alloc>&
1328.1396 -_Rope_char_ref_proxy<_CharT, _Alloc>::operator= (_CharT __c) {
1328.1397 -    _RopeRep* __old = _M_root->_M_tree_ptr._M_data;
1328.1398 -#   ifndef __GC
1328.1399 -	// First check for the case in which everything is uniquely
1328.1400 -	// referenced.  In that case we can do this destructively.
1328.1401 -	_CharT* __ptr = _My_rope::_S_fetch_ptr(__old, _M_pos);
1328.1402 -	if (0 != __ptr) {
1328.1403 -	    *__ptr = __c;
1328.1404 -	    return *this;
1328.1405 -	}
1328.1406 -#   endif
1328.1407 -    _Self_destruct_ptr __left(
1328.1408 -      _My_rope::_S_substring(__old, 0, _M_pos));
1328.1409 -    _Self_destruct_ptr __right(
1328.1410 -      _My_rope::_S_substring(__old, _M_pos+1, __old->_M_size._M_data));
1328.1411 -    _Self_destruct_ptr __result_left(
1328.1412 -      _My_rope::_S_destr_concat_char_iter(__left, &__c, 1));
1328.1413 -
1328.1414 -#   ifndef __GC
1328.1415 -      _STLP_ASSERT(__left == __result_left || 1 == __result_left->_M_ref_count)
1328.1416 -#   endif
1328.1417 -    _RopeRep* __result =
1328.1418 -      _My_rope::_S_concat_rep(__result_left, __right);
1328.1419 -#   ifndef __GC
1328.1420 -      _STLP_ASSERT(1 <= __result->_M_ref_count)
1328.1421 -      _RopeRep::_S_unref(__old);
1328.1422 -#   endif
1328.1423 -    _M_root->_M_tree_ptr._M_data = __result;
1328.1424 -    return *this;
1328.1425 -}
1328.1426 -
1328.1427 -template <class _CharT, class _Alloc>
1328.1428 -_Rope_char_ptr_proxy<_CharT, _Alloc>
1328.1429 -_Rope_char_ref_proxy<_CharT, _Alloc>::operator& () const {
1328.1430 -    return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this);
1328.1431 -}
1328.1432 -
1328.1433 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1328.1434 -template<class _CharT, class _Alloc>
1328.1435 -_CharT rope<_CharT,_Alloc>::_S_empty_c_str[1] = { _CharT() };
1328.1436 -# else
1328.1437 -__DECLARE_INSTANCE(char, crope::_S_empty_c_str[1], ={0});
1328.1438 -# ifdef _STLP_HAS_WCHAR_T
1328.1439 -__DECLARE_INSTANCE(wchar_t, wrope::_S_empty_c_str[1], ={0});
1328.1440 -# endif /* _STLP_HAS_WCHAR_T */
1328.1441 -# endif /* _STLP_STATIC_TEMPLATE_DATA */
1328.1442 -// # endif
1328.1443 -
1328.1444 -template<class _CharT, class _Alloc>
1328.1445 -const _CharT* rope<_CharT,_Alloc>::c_str() const {
1328.1446 -    if (0 == _M_tree_ptr._M_data) {
1328.1447 -        _S_empty_c_str[0] = _S_eos((_CharT*)0);  // Possibly redundant,
1328.1448 -					     // but probably fast.
1328.1449 -        return _S_empty_c_str;
1328.1450 -    }
1328.1451 -    __GC_CONST _CharT* __old_c_string = _M_tree_ptr._M_data->_M_c_string;
1328.1452 -    if (0 != __old_c_string) return(__old_c_string);
1328.1453 -    size_t __s = size();
1328.1454 -   _CharT* __result = _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_tree_ptr, _CharT).allocate(__s + 1);
1328.1455 -    _S_flatten(_M_tree_ptr._M_data, __result);
1328.1456 -    __result[__s] = _S_eos((_CharT*)0);
1328.1457 -#   ifdef __GC
1328.1458 -	_M_tree_ptr._M_data->_M_c_string = __result;
1328.1459 -#   else
1328.1460 -      if ((__old_c_string = (__GC_CONST _CharT*)
1328.1461 -	   _Atomic_swap((__stl_atomic_t *)(&(_M_tree_ptr._M_data->_M_c_string)),
1328.1462 -			(__stl_atomic_t)__result)) != 0) {
1328.1463 -	// It must have been added in the interim.  Hence it had to have been
1328.1464 -	// separately allocated.  Deallocate the old copy, since we just
1328.1465 -	// replaced it.
1328.1466 -	_STLP_STD::_Destroy(__old_c_string, __old_c_string + __s + 1);
1328.1467 -      _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_tree_ptr, _CharT).deallocate(__old_c_string, __s + 1);
1328.1468 -      }
1328.1469 -#   endif
1328.1470 -    return(__result);
1328.1471 -}
1328.1472 -
1328.1473 -template<class _CharT, class _Alloc>
1328.1474 -const _CharT* rope<_CharT,_Alloc>::replace_with_c_str() {
1328.1475 -    if (0 == _M_tree_ptr._M_data) {
1328.1476 -        _S_empty_c_str[0] = _S_eos((_CharT*)0);
1328.1477 -        return _S_empty_c_str;
1328.1478 -    }
1328.1479 -    __GC_CONST _CharT* __old_c_string = _M_tree_ptr._M_data->_M_c_string;
1328.1480 -    if (_RopeRep::_S_leaf == _M_tree_ptr._M_data->_M_tag && 0 != __old_c_string) {
1328.1481 -	return(__old_c_string);
1328.1482 -    }
1328.1483 -    size_t __s = size();
1328.1484 -    _CharT* __result = _M_tree_ptr.allocate(_S_rounded_up_size(__s));
1328.1485 -    _S_flatten(_M_tree_ptr._M_data, __result);
1328.1486 -    __result[__s] = _S_eos((_CharT*)0);
1328.1487 -    _M_tree_ptr._M_data->_M_unref_nonnil();
1328.1488 -    _M_tree_ptr._M_data = _S_new_RopeLeaf(__result, __s, get_allocator());
1328.1489 -    return(__result);
1328.1490 -}
1328.1491 -
1328.1492 -// Algorithm specializations.  More should be added.
1328.1493 -
1328.1494 -#ifndef _STLP_MSVC
1328.1495 -// I couldn't get this to work with VC++
1328.1496 -template<class _CharT,class _Alloc>
1328.1497 -void
1328.1498 -_Rope_rotate(_Rope_iterator<_CharT,_Alloc> __first,
1328.1499 -              _Rope_iterator<_CharT,_Alloc> __middle,
1328.1500 -              _Rope_iterator<_CharT,_Alloc> __last)
1328.1501 -{
1328.1502 -    _STLP_ASSERT(__first.container() == __middle.container()
1328.1503 -                 && __middle.container() == __last.container())
1328.1504 -    rope<_CharT,_Alloc>& __r(__first.container());
1328.1505 -    rope<_CharT,_Alloc> __prefix = __r.substr(0, __first.index());
1328.1506 -    rope<_CharT,_Alloc> __suffix = 
1328.1507 -      __r.substr(__last.index(), __r.size() - __last.index());
1328.1508 -    rope<_CharT,_Alloc> __part1 = 
1328.1509 -      __r.substr(__middle.index(), __last.index() - __middle.index());
1328.1510 -    rope<_CharT,_Alloc> __part2 = 
1328.1511 -      __r.substr(__first.index(), __middle.index() - __first.index());
1328.1512 -    __r = __prefix;
1328.1513 -    __r += __part1;
1328.1514 -    __r += __part2;
1328.1515 -    __r += __suffix;
1328.1516 -}
1328.1517 -
1328.1518 -
1328.1519 -# if 0
1328.1520 -// Probably not useful for several reasons:
1328.1521 -// - for SGIs 7.1 compiler and probably some others,
1328.1522 -//   this forces lots of rope<wchar_t, ...> instantiations, creating a
1328.1523 -//   code bloat and compile time problem.  (Fixed in 7.2.)
1328.1524 -// - wchar_t is 4 bytes wide on most UNIX platforms, making it unattractive
1328.1525 -//   for unicode strings.  Unsigned short may be a better character
1328.1526 -//   type.
1328.1527 -inline void rotate(
1328.1528 -		_Rope_iterator<wchar_t,_STLP_DEFAULT_ALLOCATOR(char) > __first,
1328.1529 -                _Rope_iterator<wchar_t,_STLP_DEFAULT_ALLOCATOR(char) > __middle,
1328.1530 -                _Rope_iterator<wchar_t,_STLP_DEFAULT_ALLOCATOR(char) > __last) {
1328.1531 -    _Rope_rotate(__first, __middle, __last);
1328.1532 -}
1328.1533 -# endif
1328.1534 -#endif /* _STLP_MSVC */
1328.1535 -
1328.1536 -#   undef __RopeLeaf__ 
1328.1537 -#   undef __RopeRep__ 
1328.1538 -#   undef __RopeLeaf 
1328.1539 -#   undef __RopeRep 
1328.1540 -#   undef size_type
1328.1541 -
1328.1542 -_STLP_END_NAMESPACE
1328.1543 -
1328.1544 -# endif /* ROPEIMPL_H */
1328.1545 -
1328.1546 -// Local Variables:
1328.1547 -// mode:C++
1328.1548 -// End:
  1329.1 --- a/epoc32/include/stdapis/stlport/stl/_rope.h	Tue Mar 16 16:12:26 2010 +0000
  1329.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1329.3 @@ -1,2518 +0,0 @@
  1329.4 -/*
  1329.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1329.6 - * Copyright (c) 1996,1997
  1329.7 - * Silicon Graphics Computer Systems, Inc.
  1329.8 - *
  1329.9 - * Copyright (c) 1997
 1329.10 - * Moscow Center for SPARC Technology
 1329.11 - *
 1329.12 - * Copyright (c) 1999 
 1329.13 - * Boris Fomitchev
 1329.14 - *
 1329.15 - * This material is provided "as is", with absolutely no warranty expressed
 1329.16 - * or implied. Any use is at your own risk.
 1329.17 - *
 1329.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1329.19 - * without fee, provided the above notices are retained on all copies.
 1329.20 - * Permission to modify the code and to distribute modified code is granted,
 1329.21 - * provided the above notices are retained, and a notice that the code was
 1329.22 - * modified is included with the above copyright notice.
 1329.23 - *
 1329.24 - */
 1329.25 -
 1329.26 -/* NOTE: This is an internal header file, included by other STL headers.
 1329.27 - *   You should not attempt to use it directly.
 1329.28 - */
 1329.29 -
 1329.30 -// rope<_CharT,_Alloc> is a sequence of _CharT.
 1329.31 -// Ropes appear to be mutable, but update operations
 1329.32 -// really copy enough of the data structure to leave the original
 1329.33 -// valid.  Thus ropes can be logically copied by just copying
 1329.34 -// a pointer value.
 1329.35 -
 1329.36 -#ifndef _STLP_INTERNAL_ROPE_H
 1329.37 -# define _STLP_INTERNAL_ROPE_H
 1329.38 -
 1329.39 -# ifndef _STLP_INTERNAL_ALGOBASE_H
 1329.40 -#  include <stl/_algobase.h>
 1329.41 -# endif
 1329.42 -
 1329.43 -# ifndef _STLP_IOSFWD
 1329.44 -#  include <iosfwd>
 1329.45 -# endif
 1329.46 -
 1329.47 -# ifndef _STLP_INTERNAL_ALLOC_H
 1329.48 -#  include <stl/_alloc.h>
 1329.49 -# endif
 1329.50 -
 1329.51 -# ifndef _STLP_INTERNAL_ITERATOR_H
 1329.52 -#  include <stl/_iterator.h>
 1329.53 -# endif
 1329.54 -
 1329.55 -# ifndef _STLP_INTERNAL_ALGO_H
 1329.56 -#  include <stl/_algo.h>
 1329.57 -# endif
 1329.58 -
 1329.59 -# ifndef _STLP_INTERNAL_FUNCTION_H
 1329.60 -#  include <stl/_function.h>
 1329.61 -# endif
 1329.62 -
 1329.63 -# ifndef _STLP_INTERNAL_NUMERIC_H
 1329.64 -#  include <stl/_numeric.h>
 1329.65 -# endif
 1329.66 -
 1329.67 -# ifndef _STLP_INTERNAL_HASH_FUN_H
 1329.68 -#  include <stl/_hash_fun.h>
 1329.69 -# endif
 1329.70 -
 1329.71 -# ifdef __GC
 1329.72 -#   define __GC_CONST const
 1329.73 -# else
 1329.74 -# include <stl/_threads.h>
 1329.75 -#   define __GC_CONST   // constant except for deallocation
 1329.76 -# endif
 1329.77 -# ifdef _STLP_SGI_THREADS
 1329.78 -#    include <mutex.h>
 1329.79 -# endif
 1329.80 -
 1329.81 -#ifdef _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM 
 1329.82 -#  define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) (_Alloc_traits<_Tp,__atype>::create_allocator(__a)) 
 1329.83 -#elif defined(__MRC__)||defined(__SC__) 
 1329.84 -#  define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) __stl_alloc_create<_Tp,__atype>(__a,(_Tp*)0) 
 1329.85 -#else 
 1329.86 -#  define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) __stl_alloc_create(__a,(_Tp*)0) 
 1329.87 -#endif 
 1329.88 -
 1329.89 -_STLP_BEGIN_NAMESPACE
 1329.90 -
 1329.91 -// First a lot of forward declarations.  The standard seems to require
 1329.92 -// much stricter "declaration before use" than many of the implementations
 1329.93 -// that preceded it.
 1329.94 -template<class _CharT, _STLP_DEFAULT_ALLOCATOR_SELECT(_CharT) > class rope;
 1329.95 -template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
 1329.96 -template<class _CharT, class _Alloc> struct _Rope_RopeRep;
 1329.97 -template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
 1329.98 -template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
 1329.99 -template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
1329.100 -template<class _CharT, class _Alloc> class _Rope_iterator;
1329.101 -template<class _CharT, class _Alloc> class _Rope_const_iterator;
1329.102 -template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
1329.103 -template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;
1329.104 -
1329.105 -// Some helpers, so we can use power on ropes.
1329.106 -// See below for why this isn't local to the implementation.
1329.107 -
1329.108 -// This uses a nonstandard refcount convention.
1329.109 -// The result has refcount 0.
1329.110 -template<class _CharT, class _Alloc>
1329.111 -struct _Rope_Concat_fn
1329.112 -  : public binary_function<rope<_CharT,_Alloc>, rope<_CharT,_Alloc>,
1329.113 -  rope<_CharT,_Alloc> > {
1329.114 -  rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x,
1329.115 -                                  const rope<_CharT,_Alloc>& __y) {
1329.116 -    return __x + __y;
1329.117 -  }
1329.118 -};
1329.119 -
1329.120 -template <class _CharT, class _Alloc>
1329.121 -inline
1329.122 -rope<_CharT,_Alloc>
1329.123 -__identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
1329.124 -{
1329.125 -  return rope<_CharT,_Alloc>();
1329.126 -}
1329.127 -
1329.128 -// The _S_eos function is used for those functions that
1329.129 -// convert to/from C-like strings to detect the end of the string.
1329.130 -
1329.131 -// The end-of-C-string character.
1329.132 -// This is what the draft standard says it should be.
1329.133 -template <class _CharT>
1329.134 -inline _CharT _S_eos(_CharT*) { return _CharT(); }
1329.135 -
1329.136 -// fbp : some compilers fail to zero-initialize builtins ;(
1329.137 -inline const char _S_eos(const char*) { return 0; }
1329.138 -# ifdef _STLP_HAS_WCHAR_T
1329.139 -inline const wchar_t _S_eos(const wchar_t*) { return 0; }
1329.140 -# endif
1329.141 -
1329.142 -// Test for basic character types.
1329.143 -// For basic character types leaves having a trailing eos.
1329.144 -template <class _CharT>
1329.145 -inline bool _S_is_basic_char_type(_CharT*) { return false; }
1329.146 -template <class _CharT>
1329.147 -inline bool _S_is_one_byte_char_type(_CharT*) { return false; }
1329.148 -
1329.149 -inline bool _S_is_basic_char_type(char*) { return true; }
1329.150 -inline bool _S_is_one_byte_char_type(char*) { return true; }
1329.151 -# ifdef _STLP_HAS_WCHAR_T
1329.152 -inline bool _S_is_basic_char_type(wchar_t*) { return true; }
1329.153 -# endif
1329.154 -
1329.155 -// Store an eos iff _CharT is a basic character type.
1329.156 -// Do not reference _S_eos if it isn't.
1329.157 -template <class _CharT>
1329.158 -inline void _S_cond_store_eos(_CharT&) {}
1329.159 -
1329.160 -inline void _S_cond_store_eos(char& __c) { __c = 0; }
1329.161 -# ifdef _STLP_HAS_WCHAR_T
1329.162 -inline void _S_cond_store_eos(wchar_t& __c) { __c = 0; }
1329.163 -# endif
1329.164 -
1329.165 -// char_producers are logically functions that generate a section of
1329.166 -// a string.  These can be convereted to ropes.  The resulting rope
1329.167 -// invokes the char_producer on demand.  This allows, for example,
1329.168 -// files to be viewed as ropes without reading the entire file.
1329.169 -template <class _CharT>
1329.170 -class char_producer {
1329.171 -public:
1329.172 -  virtual ~char_producer() {};
1329.173 -  virtual void operator()(size_t __start_pos, size_t __len, 
1329.174 -                          _CharT* __buffer) = 0;
1329.175 -  // Buffer should really be an arbitrary output iterator.
1329.176 -  // That way we could flatten directly into an ostream, etc.
1329.177 -  // This is thoroughly impossible, since iterator types don't
1329.178 -  // have runtime descriptions.
1329.179 -};
1329.180 -
1329.181 -// Sequence buffers:
1329.182 -//
1329.183 -// Sequence must provide an append operation that appends an
1329.184 -// array to the sequence.  Sequence buffers are useful only if
1329.185 -// appending an entire array is cheaper than appending element by element.
1329.186 -// This is true for many string representations.
1329.187 -// This should  perhaps inherit from ostream<sequence::value_type>
1329.188 -// and be implemented correspondingly, so that they can be used
1329.189 -// for formatted.  For the sake of portability, we don't do this yet.
1329.190 -//
1329.191 -// For now, sequence buffers behave as output iterators.  But they also
1329.192 -// behave a little like basic_ostringstream<sequence::value_type> and a
1329.193 -// little like containers.
1329.194 -
1329.195 -template<class _Sequence
1329.196 -# if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \
1329.197 -       defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM ))
1329.198 -, size_t _Buf_sz = 100
1329.199 -#   if defined(__sgi) && !defined(__GNUC__)
1329.200 -#	 define __TYPEDEF_WORKAROUND
1329.201 -,class _V = typename _Sequence::value_type
1329.202 -#   endif /* __sgi */
1329.203 -# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1329.204 ->
1329.205 -// The 3rd parameter works around a common compiler bug.
1329.206 -class sequence_buffer : public iterator <output_iterator_tag, void, void, void, void> {
1329.207 -public:
1329.208 -#       ifndef __TYPEDEF_WORKAROUND
1329.209 -  typedef typename _Sequence::value_type value_type;
1329.210 -  typedef sequence_buffer<_Sequence
1329.211 -# if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \
1329.212 -       defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM ))
1329.213 -  , _Buf_sz
1329.214 -  > _Self;
1329.215 -# else /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1329.216 -  > _Self;
1329.217 -  enum { _Buf_sz = 100}; 
1329.218 -# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1329.219 -  // # endif
1329.220 -#	else /* __TYPEDEF_WORKAROUND */
1329.221 -  typedef _V value_type;
1329.222 -  typedef sequence_buffer<_Sequence, _Buf_sz, _V> _Self;
1329.223 -#	endif /* __TYPEDEF_WORKAROUND */
1329.224 -protected:
1329.225 -  _Sequence* _M_prefix;
1329.226 -  value_type _M_buffer[_Buf_sz];
1329.227 -  size_t     _M_buf_count;
1329.228 -public:
1329.229 -  void flush() {
1329.230 -    _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
1329.231 -    _M_buf_count = 0;
1329.232 -  }
1329.233 -  ~sequence_buffer() { flush(); }
1329.234 -  sequence_buffer() : _M_prefix(0), _M_buf_count(0) {}
1329.235 -  sequence_buffer(const _Self& __x) {
1329.236 -    _M_prefix = __x._M_prefix;
1329.237 -    _M_buf_count = __x._M_buf_count;
1329.238 -    copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
1329.239 -  }
1329.240 -  sequence_buffer(_Self& __x) {
1329.241 -    __x.flush();
1329.242 -    _M_prefix = __x._M_prefix;
1329.243 -    _M_buf_count = 0;
1329.244 -  }
1329.245 -  sequence_buffer(_Sequence& __s) : _M_prefix(&__s), _M_buf_count(0) {}
1329.246 -  _Self& operator= (_Self& __x) {
1329.247 -    __x.flush();
1329.248 -    _M_prefix = __x._M_prefix;
1329.249 -    _M_buf_count = 0;
1329.250 -    return *this;
1329.251 -  }
1329.252 -  _Self& operator= (const _Self& __x) {
1329.253 -    _M_prefix = __x._M_prefix;
1329.254 -    _M_buf_count = __x._M_buf_count;
1329.255 -    copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
1329.256 -    return *this;
1329.257 -  }
1329.258 -  void push_back(value_type __x)
1329.259 -  {
1329.260 -    if (_M_buf_count < _Buf_sz) {
1329.261 -      _M_buffer[_M_buf_count] = __x;
1329.262 -      ++_M_buf_count;
1329.263 -    } else {
1329.264 -      flush();
1329.265 -      _M_buffer[0] = __x;
1329.266 -      _M_buf_count = 1;
1329.267 -    }
1329.268 -  }
1329.269 -  void append(value_type* __s, size_t __len)
1329.270 -  {
1329.271 -    if (__len + _M_buf_count <= _Buf_sz) {
1329.272 -      size_t __i = _M_buf_count;
1329.273 -      size_t __j = 0;
1329.274 -      for (; __j < __len; __i++, __j++) {
1329.275 -        _M_buffer[__i] = __s[__j];
1329.276 -      }
1329.277 -      _M_buf_count += __len;
1329.278 -    } else if (0 == _M_buf_count) {
1329.279 -      _M_prefix->append(__s, __s + __len);
1329.280 -    } else {
1329.281 -      flush();
1329.282 -      append(__s, __len);
1329.283 -    }
1329.284 -  }
1329.285 -  _Self& write(value_type* __s, size_t __len)
1329.286 -  {
1329.287 -    append(__s, __len);
1329.288 -    return *this;
1329.289 -  }
1329.290 -  _Self& put(value_type __x)
1329.291 -  {
1329.292 -    push_back(__x);
1329.293 -    return *this;
1329.294 -  }
1329.295 -  _Self& operator=(const value_type& __rhs)
1329.296 -  {
1329.297 -    push_back(__rhs);
1329.298 -    return *this;
1329.299 -  }
1329.300 -  _Self& operator*() { return *this; }
1329.301 -  _Self& operator++() { return *this; }
1329.302 -  _Self& operator++(int) { return *this; }
1329.303 -};
1329.304 -
1329.305 -// The following should be treated as private, at least for now.
1329.306 -template<class _CharT>
1329.307 -class _Rope_char_consumer {
1329.308 -public:
1329.309 -  // If we had member templates, these should not be virtual.
1329.310 -  // For now we need to use run-time parametrization where
1329.311 -  // compile-time would do.  _Hence this should all be private
1329.312 -  // for now.
1329.313 -  // The symmetry with char_producer is accidental and temporary.
1329.314 -  virtual ~_Rope_char_consumer() {};
1329.315 -  virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
1329.316 -};
1329.317 -
1329.318 -//
1329.319 -// What follows should really be local to rope.  Unfortunately,
1329.320 -// that doesn't work, since it makes it impossible to define generic
1329.321 -// equality on rope iterators.  According to the draft standard, the
1329.322 -// template parameters for such an equality operator cannot be inferred
1329.323 -// from the occurence of a member class as a parameter.
1329.324 -// (SGI compilers in fact allow this, but the __result wouldn't be
1329.325 -// portable.)
1329.326 -// Similarly, some of the static member functions are member functions
1329.327 -// only to avoid polluting the global namespace, and to circumvent
1329.328 -// restrictions on type inference for template functions.
1329.329 -//
1329.330 -
1329.331 -//
1329.332 -// The internal data structure for representing a rope.  This is
1329.333 -// private to the implementation.  A rope is really just a pointer
1329.334 -// to one of these.
1329.335 -//
1329.336 -// A few basic functions for manipulating this data structure
1329.337 -// are members of _RopeRep.  Most of the more complex algorithms
1329.338 -// are implemented as rope members.
1329.339 -//
1329.340 -// Some of the static member functions of _RopeRep have identically
1329.341 -// named functions in rope that simply invoke the _RopeRep versions.
1329.342 -//
1329.343 -// A macro to introduce various allocation and deallocation functions
1329.344 -// These need to be defined differently depending on whether or not
1329.345 -// we are using standard conforming allocators, and whether the allocator
1329.346 -// instances have real state.  Thus this macro is invoked repeatedly
1329.347 -// with different definitions of __ROPE_DEFINE_ALLOC.
1329.348 -
1329.349 -#if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1329.350 -# define __ROPE_DEFINE_ALLOC(_Tp, __name, _M_proxy) \
1329.351 -        typedef typename \
1329.352 -          _Alloc_traits<_Tp,_Alloc>::allocator_type __name##Allocator;
1329.353 -
1329.354 -#define __ROPE_DEFINE_ALLOCS(__a, _M_proxy) \
1329.355 -        __ROPE_DEFINE_ALLOC(_CharT,_Data, _M_proxy) /* character data */ \
1329.356 -        typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
1329.357 -        __ROPE_DEFINE_ALLOC(__C,_C, _M_proxy) \
1329.358 -        typedef _Rope_RopeLeaf<_CharT,__a> __L; \
1329.359 -        __ROPE_DEFINE_ALLOC(__L,_L, _M_proxy) \
1329.360 -        typedef _Rope_RopeFunction<_CharT,__a> __F; \
1329.361 -        __ROPE_DEFINE_ALLOC(__F,_F, _M_proxy) \
1329.362 -        typedef _Rope_RopeSubstring<_CharT,__a> __S; \
1329.363 -        __ROPE_DEFINE_ALLOC(__S,_S,_M_proxy)
1329.364 -#else
1329.365 -#define __ROPE_DEFINE_ALLOC(_Tp, __name, _M_proxy) 
1329.366 -#define __ROPE_DEFINE_ALLOCS(__a, _M_proxy)
1329.367 -#endif
1329.368 -
1329.369 -
1329.370 -template<class _CharT, class _Alloc>
1329.371 -struct _Rope_RopeRep
1329.372 -# ifndef __GC
1329.373 -  : public _Refcount_Base
1329.374 -# endif
1329.375 -{
1329.376 -  typedef _Rope_RopeRep<_CharT, _Alloc> _Self;
1329.377 -public:
1329.378 -#  define __ROPE_MAX_DEPTH  45
1329.379 -#  define __ROPE_DEPTH_SIZE 46
1329.380 -  enum { _S_max_rope_depth = __ROPE_MAX_DEPTH };
1329.381 -  enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function};
1329.382 -  // Apparently needed by VC++
1329.383 -  // The data fields of leaves are allocated with some
1329.384 -  // extra space, to accomodate future growth and for basic
1329.385 -  // character types, to hold a trailing eos character.
1329.386 -  enum { _S_alloc_granularity = 8 };
1329.387 -
1329.388 -  
1329.389 -  _Tag _M_tag:8;
1329.390 -  bool _M_is_balanced:8;
1329.391 -
1329.392 -  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1329.393 -  typedef typename _Alloc_traits<_CharT,_Alloc>::allocator_type
1329.394 -  allocator_type;
1329.395 -  
1329.396 -  allocator_type get_allocator() const { return allocator_type(_M_size);  }
1329.397 -
1329.398 -  unsigned char _M_depth;
1329.399 -  __GC_CONST _CharT* _M_c_string;
1329.400 -  _STLP_alloc_proxy<size_t, _CharT, allocator_type> _M_size;
1329.401 -
1329.402 -# ifdef _STLP_NO_ARROW_OPERATOR
1329.403 -  _Rope_RopeRep() : _Refcount_Base(1), _M_size(allocator_type(), 0) {}
1329.404 -# endif
1329.405 -
1329.406 -  /* Flattened version of string, if needed.  */
1329.407 -  /* typically 0.                             */
1329.408 -  /* If it's not 0, then the memory is owned  */
1329.409 -  /* by this node.                            */
1329.410 -  /* In the case of a leaf, this may point to */
1329.411 -  /* the same memory as the data field.       */
1329.412 -  _Rope_RopeRep(_Tag __t, int __d, bool __b, size_t _p_size,
1329.413 -                allocator_type __a) :
1329.414 -#         ifndef __GC
1329.415 -    _Refcount_Base(1),
1329.416 -#	  endif
1329.417 -    _M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0), _M_size(__a, _p_size)
1329.418 -  { }
1329.419 -#   ifdef __GC
1329.420 -  void _M_incr () {}
1329.421 -#   endif
1329.422 -
1329.423 -  // fbp : moved from RopeLeaf
1329.424 -  static size_t _S_rounded_up_size(size_t __n) {
1329.425 -    size_t __size_with_eos;
1329.426 -    
1329.427 -    if (_S_is_basic_char_type((_CharT*)0)) {
1329.428 -      __size_with_eos = __n + 1;
1329.429 -    } else {
1329.430 -      __size_with_eos = __n;
1329.431 -    }
1329.432 -#       ifdef __GC
1329.433 -    return __size_with_eos;
1329.434 -#       else
1329.435 -    // Allow slop for in-place expansion.
1329.436 -    return (__size_with_eos + _S_alloc_granularity-1)
1329.437 -      &~ (_S_alloc_granularity-1);
1329.438 -#       endif
1329.439 -  }
1329.440 -
1329.441 -  static void _S_free_string(__GC_CONST _CharT* __s, size_t __len,
1329.442 -                             allocator_type __a) {
1329.443 -
1329.444 -    if (!_S_is_basic_char_type((_CharT*)0)) {
1329.445 -      _STLP_STD::_Destroy(__s, __s + __len);
1329.446 -    }
1329.447 -    //  This has to be a static member, so this gets a bit messy
1329.448 -#   ifdef _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM
1329.449 -    __a.deallocate(__s, _S_rounded_up_size(__len));		//*ty 03/24/2001 - restored not to use __stl_alloc_rebind() since it is not defined under _STLP_MEMBER_TEMPLATE_CLASSES
1329.450 -#   else
1329.451 -    __stl_alloc_rebind (__a, (_CharT*)0).deallocate(__s, _S_rounded_up_size(__len));
1329.452 -#   endif
1329.453 -  }
1329.454 -  
1329.455 -  // Deallocate data section of a leaf.
1329.456 -  // This shouldn't be a member function.
1329.457 -  // But its hard to do anything else at the
1329.458 -  // moment, because it's templatized w.r.t.
1329.459 -  // an allocator.
1329.460 -  // Does nothing if __GC is defined.
1329.461 -#   ifndef __GC
1329.462 -  void _M_free_c_string();
1329.463 -  void _M_free_tree();
1329.464 -  // Deallocate t. Assumes t is not 0.
1329.465 -  void _M_unref_nonnil()
1329.466 -  {
1329.467 -    _M_decr(); if (!_M_ref_count) _M_free_tree();
1329.468 -  }
1329.469 -  void _M_ref_nonnil()
1329.470 -  {
1329.471 -    _M_incr();
1329.472 -  }
1329.473 -  static void _S_unref(_Self* __t)
1329.474 -  {
1329.475 -    if (0 != __t) {
1329.476 -      __t->_M_unref_nonnil();
1329.477 -    }
1329.478 -  }
1329.479 -  static void _S_ref(_Self* __t)
1329.480 -  {
1329.481 -    if (0 != __t) __t->_M_incr();
1329.482 -  }
1329.483 -  static void _S_free_if_unref(_Self* __t)
1329.484 -  {
1329.485 -    if (0 != __t && 0 == __t->_M_ref_count) __t->_M_free_tree();
1329.486 -  }
1329.487 -#   else /* __GC */
1329.488 -  void _M_unref_nonnil() {}
1329.489 -  void _M_ref_nonnil() {}
1329.490 -  static void _S_unref(_Self*) {}
1329.491 -  static void _S_ref(_Self*) {}
1329.492 -  static void _S_free_if_unref(_Self*) {}
1329.493 -#   endif
1329.494 -
1329.495 -  __ROPE_DEFINE_ALLOCS(_Alloc, _M_size)
1329.496 -    };
1329.497 -
1329.498 -template<class _CharT, class _Alloc>
1329.499 -struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
1329.500 -public:
1329.501 -  __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
1329.502 -                                /* The allocated size is         */
1329.503 -                                /* _S_rounded_up_size(size), except */
1329.504 -                                /* in the GC case, in which it   */
1329.505 -                                /* doesn't matter.               */
1329.506 -  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1329.507 -  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1329.508 -  _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t _p_size, allocator_type __a)
1329.509 -    : _Rope_RopeRep<_CharT,_Alloc>(_Rope_RopeRep<_CharT,_Alloc>::_S_leaf, 0, true, _p_size, __a), 
1329.510 -    _M_data(__d)
1329.511 -  {
1329.512 -    _STLP_ASSERT(_p_size > 0)
1329.513 -    if (_S_is_basic_char_type((_CharT *)0)) {
1329.514 -      // already eos terminated.
1329.515 -      this->_M_c_string = __d;
1329.516 -    }
1329.517 -  }
1329.518 -
1329.519 -# ifdef _STLP_NO_ARROW_OPERATOR
1329.520 -  _Rope_RopeLeaf() {}
1329.521 -  _Rope_RopeLeaf(const _Rope_RopeLeaf<_CharT, _Alloc>& ) {}
1329.522 -# endif
1329.523 -  
1329.524 -// The constructor assumes that d has been allocated with
1329.525 -  // the proper allocator and the properly padded size.
1329.526 -  // In contrast, the destructor deallocates the data:
1329.527 -# ifndef __GC
1329.528 -  ~_Rope_RopeLeaf() {
1329.529 -    if (_M_data != this->_M_c_string) {
1329.530 -      this->_M_free_c_string();
1329.531 -    }
1329.532 -    _Rope_RopeRep<_CharT,_Alloc>::_S_free_string(_M_data, this->_M_size._M_data, this->get_allocator());
1329.533 -  }
1329.534 -# endif
1329.535 -};
1329.536 -
1329.537 -template<class _CharT, class _Alloc>
1329.538 -struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
1329.539 -public:
1329.540 -  _Rope_RopeRep<_CharT,_Alloc>* _M_left;
1329.541 -  _Rope_RopeRep<_CharT,_Alloc>* _M_right;
1329.542 -  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1329.543 -  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1329.544 -  _Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
1329.545 -                          _Rope_RopeRep<_CharT,_Alloc>* __r,
1329.546 -                          allocator_type __a)
1329.547 -    :   _Rope_RopeRep<_CharT,_Alloc>(
1329.548 -                                     _Rope_RopeRep<_CharT,_Alloc>::_S_concat, 
1329.549 -				     (max)(__l->_M_depth, __r->_M_depth) + 1, false,
1329.550 -                                     __l->_M_size._M_data + __r->_M_size._M_data, __a), _M_left(__l), _M_right(__r)
1329.551 -  {}
1329.552 -# ifdef _STLP_NO_ARROW_OPERATOR
1329.553 -  _Rope_RopeConcatenation() {}
1329.554 -  _Rope_RopeConcatenation(const _Rope_RopeConcatenation<_CharT, _Alloc>&) {}
1329.555 -# endif
1329.556 -
1329.557 -# ifndef __GC
1329.558 -  ~_Rope_RopeConcatenation() {
1329.559 -    this->_M_free_c_string();
1329.560 -    _M_left->_M_unref_nonnil();
1329.561 -    _M_right->_M_unref_nonnil();
1329.562 -  }
1329.563 -# endif
1329.564 -};
1329.565 -
1329.566 -template<class _CharT, class _Alloc>
1329.567 -struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
1329.568 -public:
1329.569 -  char_producer<_CharT>* _M_fn;
1329.570 -#   ifndef __GC
1329.571 -  bool _M_delete_when_done; // Char_producer is owned by the
1329.572 -                                // rope and should be explicitly
1329.573 -                                // deleted when the rope becomes
1329.574 -                                // inaccessible.
1329.575 -#   else
1329.576 -  // In the GC case, we either register the rope for
1329.577 -  // finalization, or not.  Thus the field is unnecessary;
1329.578 -  // the information is stored in the collector data structures.
1329.579 -  // We do need a finalization procedure to be invoked by the
1329.580 -  // collector.
1329.581 -  static void _S_fn_finalization_proc(void * __tree, void *) {
1329.582 -    delete ((_Rope_RopeFunction *)__tree) -> _M_fn;
1329.583 -  }
1329.584 -#   endif
1329.585 -  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1329.586 -  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1329.587 -# ifdef _STLP_NO_ARROW_OPERATOR
1329.588 -  _Rope_RopeFunction() {}
1329.589 -  _Rope_RopeFunction(const _Rope_RopeFunction<_CharT, _Alloc>& ) {}
1329.590 -# endif
1329.591 -
1329.592 -  _Rope_RopeFunction(char_producer<_CharT>* __f, size_t _p_size,
1329.593 -                     bool __d, allocator_type __a)
1329.594 -    :
1329.595 -    _Rope_RopeRep<_CharT,_Alloc>(_Rope_RopeRep<_CharT,_Alloc>::_S_function, 0, true, _p_size, __a),
1329.596 -    _M_fn(__f)
1329.597 -#       ifndef __GC
1329.598 -    , _M_delete_when_done(__d)
1329.599 -#       endif
1329.600 -  {
1329.601 -    _STLP_ASSERT(_p_size > 0)
1329.602 -#       ifdef __GC
1329.603 -    if (__d) {
1329.604 -      GC_REGISTER_FINALIZER(
1329.605 -                            this, _Rope_RopeFunction::_S_fn_finalization_proc, 0, 0, 0);
1329.606 -    }
1329.607 -#       endif
1329.608 -  }
1329.609 -# ifndef __GC
1329.610 -  ~_Rope_RopeFunction() {
1329.611 -    this->_M_free_c_string();
1329.612 -    if (_M_delete_when_done) {
1329.613 -      delete _M_fn;
1329.614 -    }
1329.615 -  }
1329.616 -# endif
1329.617 -};
1329.618 -// Substring results are usually represented using just
1329.619 -// concatenation nodes.  But in the case of very long flat ropes
1329.620 -// or ropes with a functional representation that isn't practical.
1329.621 -// In that case, we represent the __result as a special case of
1329.622 -// RopeFunction, whose char_producer points back to the rope itself.
1329.623 -// In all cases except repeated substring operations and
1329.624 -// deallocation, we treat the __result as a RopeFunction.
1329.625 -template<class _CharT, class _Alloc>
1329.626 -# if  ( defined (__IBMCPP__) && (__IBMCPP__ == 500) )  // JFA 10-Aug-2000 for some reason xlC cares about the order
1329.627 -struct _Rope_RopeSubstring : public char_producer<_CharT> , public _Rope_RopeFunction<_CharT,_Alloc>
1329.628 -# else
1329.629 -struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
1329.630 -                             public char_producer<_CharT>
1329.631 -# endif
1329.632 -{
1329.633 -public:
1329.634 -  // XXX this whole class should be rewritten.
1329.635 -  typedef _Rope_RopeRep<_CharT,_Alloc> _Base;
1329.636 -  _Rope_RopeRep<_CharT,_Alloc>* _M_base;      // not 0
1329.637 -  size_t _M_start;
1329.638 -  virtual void operator()(size_t __start_pos, size_t __req_len,
1329.639 -                          _CharT* __buffer) {
1329.640 -    switch(_M_base->_M_tag) {
1329.641 -    case _Base::_S_function:
1329.642 -    case _Base::_S_substringfn:
1329.643 -      {
1329.644 -        char_producer<_CharT>* __fn =
1329.645 -          ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;
1329.646 -        _STLP_ASSERT(__start_pos + __req_len <= this->_M_size._M_data)
1329.647 -        _STLP_ASSERT(_M_start + this->_M_size._M_data <= _M_base->_M_size._M_data)
1329.648 -        (*__fn)(__start_pos + _M_start, __req_len, __buffer);
1329.649 -      }
1329.650 -      break;
1329.651 -    case _Base::_S_leaf:
1329.652 -      {
1329.653 -        __GC_CONST _CharT* __s =
1329.654 -          ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;
1329.655 -        uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,
1329.656 -                             __buffer);
1329.657 -      }
1329.658 -      break;
1329.659 -    default:
1329.660 -      _STLP_ASSERT(false)
1329.661 -        ;
1329.662 -    }
1329.663 -  }
1329.664 -
1329.665 -  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1329.666 -  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1329.667 -
1329.668 -  _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
1329.669 -                      size_t __l, allocator_type __a)
1329.670 -    : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a),
1329.671 -	_M_base(__b),
1329.672 -    _M_start(__s)
1329.673 -       
1329.674 -  {
1329.675 -    _STLP_ASSERT(__l > 0)
1329.676 -    _STLP_ASSERT(__s + __l <= __b->_M_size._M_data)
1329.677 -#       ifndef __GC
1329.678 -    _M_base->_M_ref_nonnil();
1329.679 -#       endif
1329.680 -    this->_M_tag = _Base::_S_substringfn;
1329.681 -  }
1329.682 -  virtual ~_Rope_RopeSubstring()
1329.683 -  { 
1329.684 -#       ifndef __GC
1329.685 -    _M_base->_M_unref_nonnil();
1329.686 -#       endif
1329.687 -  }
1329.688 -};
1329.689 -
1329.690 -// Self-destructing pointers to Rope_rep.
1329.691 -// These are not conventional smart pointers.  Their
1329.692 -// only purpose in life is to ensure that unref is called
1329.693 -// on the pointer either at normal exit or if an exception
1329.694 -// is raised.  It is the caller's responsibility to
1329.695 -// adjust reference counts when these pointers are initialized
1329.696 -// or assigned to.  (This convention significantly reduces
1329.697 -// the number of potentially expensive reference count
1329.698 -// updates.)
1329.699 -#ifndef __GC
1329.700 -template<class _CharT, class _Alloc>
1329.701 -struct _Rope_self_destruct_ptr {
1329.702 -  _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;
1329.703 -  ~_Rope_self_destruct_ptr() 
1329.704 -  { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); }
1329.705 -#   ifdef _STLP_USE_EXCEPTIONS
1329.706 -  _Rope_self_destruct_ptr() : _M_ptr(0) {};
1329.707 -#   else
1329.708 -  _Rope_self_destruct_ptr() {};
1329.709 -#   endif
1329.710 -  _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {}
1329.711 -  _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }
1329.712 -  _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }
1329.713 -  operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }
1329.714 -  _Rope_self_destruct_ptr<_CharT, _Alloc>& 
1329.715 -  operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)
1329.716 -  { _M_ptr = __x; return *this; }
1329.717 -};
1329.718 -#endif
1329.719 -
1329.720 -// Dereferencing a nonconst iterator has to return something
1329.721 -// that behaves almost like a reference.  It's not possible to
1329.722 -// return an actual reference since assignment requires extra
1329.723 -// work.  And we would get into the same problems as with the
1329.724 -// CD2 version of basic_string.
1329.725 -template<class _CharT, class _Alloc>
1329.726 -class _Rope_char_ref_proxy {
1329.727 -  typedef _Rope_char_ref_proxy<_CharT, _Alloc> _Self;
1329.728 -  friend class rope<_CharT,_Alloc>;
1329.729 -  friend class _Rope_iterator<_CharT,_Alloc>;
1329.730 -  friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
1329.731 -#   ifdef __GC
1329.732 -  typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
1329.733 -#   else
1329.734 -  typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
1329.735 -#   endif
1329.736 -  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1329.737 -  typedef rope<_CharT,_Alloc> _My_rope;
1329.738 -  size_t _M_pos;
1329.739 -  _CharT _M_current;
1329.740 -  bool _M_current_valid;
1329.741 -  _My_rope* _M_root;     // The whole rope.
1329.742 -public:
1329.743 -  _Rope_char_ref_proxy(_My_rope* __r, size_t __p) :
1329.744 -    _M_pos(__p), _M_current_valid(false), _M_root(__r) {}
1329.745 -  _Rope_char_ref_proxy(const _Self& __x) :
1329.746 -    _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
1329.747 -  // Don't preserve cache if the reference can outlive the
1329.748 -  // expression.  We claim that's not possible without calling
1329.749 -  // a copy constructor or generating reference to a proxy
1329.750 -  // reference.  We declare the latter to have undefined semantics.
1329.751 -  _Rope_char_ref_proxy(_My_rope* __r, size_t __p,
1329.752 -                       _CharT __c) :
1329.753 -    _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
1329.754 -  inline operator _CharT () const;
1329.755 -  _Self& operator= (_CharT __c);
1329.756 -  _Rope_char_ptr_proxy<_CharT, _Alloc> operator& () const;
1329.757 -  _Self& operator= (const _Self& __c) {
1329.758 -    return operator=((_CharT)__c); 
1329.759 -  }
1329.760 -};
1329.761 -
1329.762 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1329.763 -template<class _CharT, class __Alloc>
1329.764 -inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
1329.765 -                 _Rope_char_ref_proxy <_CharT, __Alloc > __b) {
1329.766 -  _CharT __tmp = __a;
1329.767 -  __a = __b;
1329.768 -  __b = __tmp;
1329.769 -}
1329.770 -#else
1329.771 -// There is no really acceptable way to handle this.  The default
1329.772 -// definition of swap doesn't work for proxy references.
1329.773 -// It can't really be made to work, even with ugly hacks, since
1329.774 -// the only unusual operation it uses is the copy constructor, which
1329.775 -// is needed for other purposes.  We provide a macro for
1329.776 -// full specializations, and instantiate the most common case.
1329.777 -# define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \
1329.778 -    inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \
1329.779 -                     _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \
1329.780 -        _CharT __tmp = __a; \
1329.781 -        __a = __b; \
1329.782 -        __b = __tmp; \
1329.783 -    }
1329.784 -
1329.785 -_ROPE_SWAP_SPECIALIZATION(char,_STLP_DEFAULT_ALLOCATOR(char) )
1329.786 -
1329.787 -#endif /* !_STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1329.788 -
1329.789 -  template<class _CharT, class _Alloc>
1329.790 -class _Rope_char_ptr_proxy {
1329.791 -  // XXX this class should be rewritten.
1329.792 -public:
1329.793 -  typedef _Rope_char_ptr_proxy<_CharT, _Alloc> _Self;
1329.794 -  friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
1329.795 -  size_t _M_pos;
1329.796 -  rope<_CharT,_Alloc>* _M_root;     // The whole rope.
1329.797 -
1329.798 -  _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x) 
1329.799 -    : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
1329.800 -  _Rope_char_ptr_proxy(const _Self& __x)
1329.801 -    : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
1329.802 -  _Rope_char_ptr_proxy() {}
1329.803 -  _Rope_char_ptr_proxy(_CharT* __x) : _M_pos(0), _M_root(0) {
1329.804 -    _STLP_ASSERT(0 == __x)
1329.805 -  }
1329.806 -  _Self& 
1329.807 -  operator= (const _Self& __x) {
1329.808 -    _M_pos = __x._M_pos;
1329.809 -    _M_root = __x._M_root;
1329.810 -    return *this;
1329.811 -  }
1329.812 -
1329.813 -  _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const {
1329.814 -    return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos);
1329.815 -  }
1329.816 -};
1329.817 -
1329.818 -
1329.819 -// Rope iterators:
1329.820 -// Unlike in the C version, we cache only part of the stack
1329.821 -// for rope iterators, since they must be efficiently copyable.
1329.822 -// When we run out of cache, we have to reconstruct the iterator
1329.823 -// value.
1329.824 -// Pointers from iterators are not included in reference counts.
1329.825 -// Iterators are assumed to be thread private.  Ropes can
1329.826 -// be shared.
1329.827 -
1329.828 -template<class _CharT, class _Alloc>
1329.829 -class _Rope_iterator_base
1329.830 -/*   : public random_access_iterator<_CharT, ptrdiff_t>  */
1329.831 -{
1329.832 -  friend class rope<_CharT,_Alloc>;
1329.833 -  typedef _Rope_iterator_base<_CharT, _Alloc> _Self;
1329.834 -public:
1329.835 -  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1329.836 -  // Borland doesnt want this to be protected.
1329.837 -  //  protected:
1329.838 -  enum { _S_path_cache_len = 4 }; // Must be <= 9.
1329.839 -  enum { _S_iterator_buf_len = 15 };
1329.840 -  size_t _M_current_pos;
1329.841 -  _RopeRep* _M_root;     // The whole rope.
1329.842 -  size_t _M_leaf_pos;    // Starting position for current leaf
1329.843 -  __GC_CONST _CharT* _M_buf_start;
1329.844 -  // Buffer possibly
1329.845 -  // containing current char.
1329.846 -  __GC_CONST _CharT* _M_buf_ptr;
1329.847 -  // Pointer to current char in buffer.
1329.848 -  // != 0 ==> buffer valid.
1329.849 -  __GC_CONST _CharT* _M_buf_end;
1329.850 -  // One past __last valid char in buffer.
1329.851 -  // What follows is the path cache.  We go out of our
1329.852 -  // way to make this compact.
1329.853 -  // Path_end contains the bottom section of the path from
1329.854 -  // the root to the current leaf.
1329.855 -  const _RopeRep* _M_path_end[_S_path_cache_len];
1329.856 -  int _M_leaf_index;     // Last valid __pos in path_end;
1329.857 -  // _M_path_end[0] ... _M_path_end[leaf_index-1]
1329.858 -  // point to concatenation nodes.
1329.859 -  unsigned char _M_path_directions;
1329.860 -  // (path_directions >> __i) & 1 is 1
1329.861 -  // iff we got from _M_path_end[leaf_index - __i - 1]
1329.862 -  // to _M_path_end[leaf_index - __i] by going to the
1329.863 -  // __right. Assumes path_cache_len <= 9.
1329.864 -  _CharT _M_tmp_buf[_S_iterator_buf_len];
1329.865 -  // Short buffer for surrounding chars.
1329.866 -  // This is useful primarily for 
1329.867 -  // RopeFunctions.  We put the buffer
1329.868 -  // here to avoid locking in the
1329.869 -  // multithreaded case.
1329.870 -  // The cached path is generally assumed to be valid
1329.871 -  // only if the buffer is valid.
1329.872 -  static void _S_setbuf(_Rope_iterator_base<_CharT, _Alloc>& __x);
1329.873 -  // Set buffer contents given
1329.874 -  // path cache.
1329.875 -  static void _S_setcache(_Rope_iterator_base<_CharT, _Alloc>& __x);
1329.876 -  // Set buffer contents and
1329.877 -  // path cache.
1329.878 -  static void _S_setcache_for_incr(_Rope_iterator_base<_CharT, _Alloc>& __x);
1329.879 -  // As above, but assumes path
1329.880 -  // cache is valid for previous posn.
1329.881 -  _Rope_iterator_base() {}
1329.882 -  _Rope_iterator_base(_RopeRep* __root, size_t __pos)
1329.883 -    : _M_current_pos(__pos),_M_root(__root),  _M_buf_ptr(0) {}
1329.884 -  void _M_incr(size_t __n);
1329.885 -  void _M_decr(size_t __n);
1329.886 -public:
1329.887 -  size_t index() const { return _M_current_pos; }
1329.888 -  _Rope_iterator_base(const _Self& __x) {
1329.889 -    if (0 != __x._M_buf_ptr) {
1329.890 -      *this = __x;
1329.891 -    } else {
1329.892 -      _M_current_pos = __x._M_current_pos;
1329.893 -      _M_root = __x._M_root;
1329.894 -      _M_buf_ptr = 0;
1329.895 -    }
1329.896 -  }
1329.897 -};
1329.898 -
1329.899 -template<class _CharT, class _Alloc> class _Rope_iterator;
1329.900 -
1329.901 -template<class _CharT, class _Alloc>
1329.902 -class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
1329.903 -  friend class rope<_CharT,_Alloc>;
1329.904 -  typedef  _Rope_const_iterator<_CharT, _Alloc> _Self;
1329.905 -  typedef _Rope_iterator_base<_CharT,_Alloc> _Base;
1329.906 -  //  protected:
1329.907 -public:
1329.908 -#   ifndef _STLP_HAS_NO_NAMESPACES
1329.909 -  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1329.910 -  // The one from the base class may not be directly visible.
1329.911 -#   endif
1329.912 -  _Rope_const_iterator(const _RopeRep* __root, size_t __pos):
1329.913 -    _Rope_iterator_base<_CharT,_Alloc>(
1329.914 -                                       __CONST_CAST(_RopeRep*,__root), __pos)
1329.915 -    // Only nonconst iterators modify root ref count
1329.916 -  {}
1329.917 -public:
1329.918 -  typedef _CharT reference;   // Really a value.  Returning a reference
1329.919 -                                // Would be a mess, since it would have
1329.920 -                                // to be included in refcount.
1329.921 -  typedef const _CharT* pointer;
1329.922 -  typedef _CharT value_type;
1329.923 -  typedef ptrdiff_t difference_type;
1329.924 -  typedef random_access_iterator_tag iterator_category;
1329.925 -
1329.926 -public:
1329.927 -  _Rope_const_iterator() {};
1329.928 -  _Rope_const_iterator(const _Self& __x) :
1329.929 -    _Rope_iterator_base<_CharT,_Alloc>(__x) { }
1329.930 -  _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x): 
1329.931 -    _Rope_iterator_base<_CharT,_Alloc>(__x) {}
1329.932 -  _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) :
1329.933 -    _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos) {}
1329.934 -  _Self& operator= (const _Self& __x) {
1329.935 -    if (0 != __x._M_buf_ptr) {
1329.936 -      *(__STATIC_CAST(_Base*,this)) = __x;
1329.937 -    } else {
1329.938 -      this->_M_current_pos = __x._M_current_pos;
1329.939 -      this->_M_root = __x._M_root;
1329.940 -      this->_M_buf_ptr = 0;
1329.941 -    }
1329.942 -    return(*this);
1329.943 -  }
1329.944 -  reference operator*() {
1329.945 -    if (0 == this->_M_buf_ptr) _S_setcache(*this);
1329.946 -    return *(this->_M_buf_ptr);
1329.947 -  }
1329.948 -  _Self& operator++() {
1329.949 -    __GC_CONST _CharT* __next;
1329.950 -    if (0 != this->_M_buf_ptr && (__next = this->_M_buf_ptr + 1) < this->_M_buf_end) {
1329.951 -      this->_M_buf_ptr = __next;
1329.952 -      ++this->_M_current_pos;
1329.953 -    } else {
1329.954 -      this->_M_incr(1);
1329.955 -    }
1329.956 -    return *this;
1329.957 -  }
1329.958 -  _Self& operator+=(ptrdiff_t __n) {
1329.959 -    if (__n >= 0) {
1329.960 -      this->_M_incr(__n);
1329.961 -    } else {
1329.962 -      this->_M_decr(-__n);
1329.963 -    }
1329.964 -    return *this;
1329.965 -  }
1329.966 -  _Self& operator--() {
1329.967 -    this->_M_decr(1);
1329.968 -    return *this;
1329.969 -  }
1329.970 -  _Self& operator-=(ptrdiff_t __n) {
1329.971 -    if (__n >= 0) {
1329.972 -      this->_M_decr(__n);
1329.973 -    } else {
1329.974 -      this->_M_incr(-__n);
1329.975 -    }
1329.976 -    return *this;
1329.977 -  }
1329.978 -  _Self operator++(int) {
1329.979 -    size_t __old_pos = this->_M_current_pos;
1329.980 -    this->_M_incr(1);
1329.981 -    return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
1329.982 -    // This makes a subsequent dereference expensive.
1329.983 -    // Perhaps we should instead copy the iterator
1329.984 -    // if it has a valid cache?
1329.985 -  }
1329.986 -  _Self operator--(int) {
1329.987 -    size_t __old_pos = this->_M_current_pos;
1329.988 -    this->_M_decr(1);
1329.989 -    return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
1329.990 -  }
1329.991 -  inline reference operator[](size_t __n);
1329.992 -};
1329.993 -
1329.994 -template<class _CharT, class _Alloc>
1329.995 -class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
1329.996 -  friend class rope<_CharT,_Alloc>;
1329.997 -  typedef _Rope_iterator<_CharT, _Alloc> _Self;
1329.998 -  typedef _Rope_iterator_base<_CharT,_Alloc> _Base;
1329.999 -  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1329.1000 -  //  protected:
1329.1001 -public:
1329.1002 -  rope<_CharT,_Alloc>* _M_root_rope;
1329.1003 -  // root is treated as a cached version of this,
1329.1004 -  // and is used to detect changes to the underlying
1329.1005 -  // rope.
1329.1006 -  // Root is included in the reference count.
1329.1007 -  // This is necessary so that we can detect changes reliably.
1329.1008 -  // Unfortunately, it requires careful bookkeeping for the
1329.1009 -  // nonGC case.
1329.1010 -  _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos);
1329.1011 -  
1329.1012 -  void _M_check();
1329.1013 -public:
1329.1014 -  typedef _Rope_char_ref_proxy<_CharT,_Alloc>  reference;
1329.1015 -  typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer;
1329.1016 -  typedef _CharT value_type;
1329.1017 -  typedef ptrdiff_t difference_type;
1329.1018 -  typedef random_access_iterator_tag iterator_category;
1329.1019 -public:
1329.1020 -  ~_Rope_iterator() 		//*TY 5/6/00 - added dtor to balance reference count
1329.1021 -  {
1329.1022 -    _RopeRep::_S_unref(this->_M_root);
1329.1023 -  }
1329.1024 -  
1329.1025 -  rope<_CharT,_Alloc>& container() { return *_M_root_rope; }
1329.1026 -  _Rope_iterator() {
1329.1027 -    this->_M_root = 0;  // Needed for reference counting.
1329.1028 -  };
1329.1029 -  _Rope_iterator(const  _Self& __x) :
1329.1030 -    _Rope_iterator_base<_CharT,_Alloc>(__x) {
1329.1031 -    _M_root_rope = __x._M_root_rope;
1329.1032 -    _RopeRep::_S_ref(this->_M_root);
1329.1033 -  }
1329.1034 -  _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos);
1329.1035 -  _Self& operator= (const  _Self& __x) {
1329.1036 -    _RopeRep* __old = this->_M_root;
1329.1037 -    
1329.1038 -    _RopeRep::_S_ref(__x._M_root);
1329.1039 -    if (0 != __x._M_buf_ptr) {
1329.1040 -      _M_root_rope = __x._M_root_rope;
1329.1041 -      *(__STATIC_CAST(_Base*,this)) = __x;
1329.1042 -    } else {
1329.1043 -      this->_M_current_pos = __x._M_current_pos;
1329.1044 -      this->_M_root = __x._M_root;
1329.1045 -      _M_root_rope = __x._M_root_rope;
1329.1046 -      this->_M_buf_ptr = 0;
1329.1047 -    }
1329.1048 -    _RopeRep::_S_unref(__old);
1329.1049 -    return(*this);
1329.1050 -  }
1329.1051 -  reference operator*() {
1329.1052 -    _M_check();
1329.1053 -    if (0 == this->_M_buf_ptr) {
1329.1054 -      return _Rope_char_ref_proxy<_CharT,_Alloc>(
1329.1055 -                                                 _M_root_rope, this->_M_current_pos);
1329.1056 -    } else {
1329.1057 -      return _Rope_char_ref_proxy<_CharT,_Alloc>(
1329.1058 -                                                 _M_root_rope, this->_M_current_pos, *(this->_M_buf_ptr));
1329.1059 -    }
1329.1060 -  }
1329.1061 -  _Self& operator++() {
1329.1062 -    this->_M_incr(1);
1329.1063 -    return *this;
1329.1064 -  }
1329.1065 -  _Self& operator+=(ptrdiff_t __n) {
1329.1066 -    if (__n >= 0) {
1329.1067 -      this->_M_incr(__n);
1329.1068 -    } else {
1329.1069 -      this->_M_decr(-__n);
1329.1070 -    }
1329.1071 -    return *this;
1329.1072 -  }
1329.1073 -  _Self& operator--() {
1329.1074 -    this->_M_decr(1);
1329.1075 -    return *this;
1329.1076 -  }
1329.1077 -  _Self& operator-=(ptrdiff_t __n) {
1329.1078 -    if (__n >= 0) {
1329.1079 -      this->_M_decr(__n);
1329.1080 -    } else {
1329.1081 -      this->_M_incr(-__n);
1329.1082 -    }
1329.1083 -    return *this;
1329.1084 -  }
1329.1085 -  _Self operator++(int) {
1329.1086 -    size_t __old_pos = this->_M_current_pos;
1329.1087 -    this->_M_incr(1);
1329.1088 -    return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
1329.1089 -  }
1329.1090 -  _Self operator--(int) {
1329.1091 -    size_t __old_pos = this->_M_current_pos;
1329.1092 -    this->_M_decr(1);
1329.1093 -    return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
1329.1094 -  }
1329.1095 -  reference operator[](ptrdiff_t __n) {
1329.1096 -    return _Rope_char_ref_proxy<_CharT,_Alloc>(
1329.1097 -                                               _M_root_rope, this->_M_current_pos + __n);
1329.1098 -  }
1329.1099 -};
1329.1100 -
1329.1101 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1329.1102 -template <class _CharT, class _Alloc>
1329.1103 -inline random_access_iterator_tag
1329.1104 -iterator_category(const _Rope_iterator<_CharT,_Alloc>&) {  return random_access_iterator_tag();}
1329.1105 -template <class _CharT, class _Alloc>
1329.1106 -inline _CharT* value_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; }
1329.1107 -template <class _CharT, class _Alloc>
1329.1108 -inline ptrdiff_t* distance_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; }
1329.1109 -template <class _CharT, class _Alloc>
1329.1110 -inline random_access_iterator_tag
1329.1111 -iterator_category(const _Rope_const_iterator<_CharT,_Alloc>&) { return random_access_iterator_tag(); }
1329.1112 -template <class _CharT, class _Alloc>
1329.1113 -inline _CharT* value_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; }
1329.1114 -template <class _CharT, class _Alloc>
1329.1115 -inline ptrdiff_t* distance_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; }
1329.1116 -#endif
1329.1117 -
1329.1118 -template <class _CharT, class _Alloc>
1329.1119 -class rope {
1329.1120 -  typedef rope<_CharT,_Alloc> _Self;
1329.1121 -public:
1329.1122 -  typedef _CharT value_type;
1329.1123 -  typedef ptrdiff_t difference_type;
1329.1124 -  typedef size_t size_type;
1329.1125 -  typedef _CharT const_reference;
1329.1126 -  typedef const _CharT* const_pointer;
1329.1127 -  typedef _Rope_iterator<_CharT,_Alloc> iterator;
1329.1128 -  typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator;
1329.1129 -  typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
1329.1130 -  typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer;
1329.1131 -  
1329.1132 -  friend class _Rope_iterator<_CharT,_Alloc>;
1329.1133 -  friend class _Rope_const_iterator<_CharT,_Alloc>;
1329.1134 -  friend struct _Rope_RopeRep<_CharT,_Alloc>;
1329.1135 -  friend class _Rope_iterator_base<_CharT,_Alloc>;
1329.1136 -  friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
1329.1137 -  friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
1329.1138 -  friend struct _Rope_RopeSubstring<_CharT,_Alloc>;
1329.1139 -
1329.1140 -  _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS;
1329.1141 -  
1329.1142 -protected:
1329.1143 -  typedef __GC_CONST _CharT* _Cstrptr;
1329.1144 -  
1329.1145 -  static _CharT _S_empty_c_str[1];
1329.1146 -  
1329.1147 -  static bool _S_is0(_CharT __c) { return __c == _S_eos((_CharT*)0); }
1329.1148 -  enum { _S_copy_max = 23 };
1329.1149 -  // For strings shorter than _S_copy_max, we copy to
1329.1150 -  // concatenate.
1329.1151 -  
1329.1152 -public:
1329.1153 -  typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
1329.1154 -  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1329.1155 -  typedef typename _Alloc_traits<_CharT,_Alloc>::allocator_type  allocator_type;
1329.1156 -  allocator_type get_allocator() const { return allocator_type(_M_tree_ptr); }
1329.1157 -public:
1329.1158 -  // The only data member of a rope:
1329.1159 -  _STLP_alloc_proxy<_RopeRep*, _CharT, allocator_type> _M_tree_ptr;
1329.1160 -
1329.1161 -  typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation;
1329.1162 -  typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
1329.1163 -  typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
1329.1164 -  typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring;
1329.1165 -
1329.1166 -
1329.1167 -
1329.1168 -  // Retrieve a character at the indicated position.
1329.1169 -  static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
1329.1170 -
1329.1171 -#       ifndef __GC
1329.1172 -  // Obtain a pointer to the character at the indicated position.
1329.1173 -  // The pointer can be used to change the character.
1329.1174 -  // If such a pointer cannot be produced, as is frequently the
1329.1175 -  // case, 0 is returned instead.
1329.1176 -  // (Returns nonzero only if all nodes in the path have a refcount
1329.1177 -  // of 1.)
1329.1178 -  static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
1329.1179 -#       endif
1329.1180 -
1329.1181 -  static bool _S_apply_to_pieces(
1329.1182 -                                // should be template parameter
1329.1183 -                                 _Rope_char_consumer<_CharT>& __c,
1329.1184 -                                 const _RopeRep* __r,
1329.1185 -                                 size_t __begin, size_t __end);
1329.1186 -                                // begin and end are assumed to be in range.
1329.1187 -
1329.1188 -#       ifndef __GC
1329.1189 -  static void _S_unref(_RopeRep* __t)
1329.1190 -  {
1329.1191 -    _RopeRep::_S_unref(__t);
1329.1192 -  }
1329.1193 -  static void _S_ref(_RopeRep* __t)
1329.1194 -  {
1329.1195 -    _RopeRep::_S_ref(__t);
1329.1196 -  }
1329.1197 -#       else /* __GC */
1329.1198 -  static void _S_unref(_RopeRep*) {}
1329.1199 -  static void _S_ref(_RopeRep*) {}
1329.1200 -#       endif
1329.1201 -
1329.1202 -
1329.1203 -#       ifdef __GC
1329.1204 -  typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
1329.1205 -#       else
1329.1206 -  typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
1329.1207 -#       endif
1329.1208 -
1329.1209 -  // _Result is counted in refcount.
1329.1210 -  static _RopeRep* _S_substring(_RopeRep* __base,
1329.1211 -                                size_t __start, size_t __endp1);
1329.1212 -
1329.1213 -  static _RopeRep* _S_concat_char_iter(_RopeRep* __r,
1329.1214 -                                       const _CharT* __iter, size_t __slen);
1329.1215 -  // Concatenate rope and char ptr, copying __s.
1329.1216 -  // Should really take an arbitrary iterator.
1329.1217 -  // Result is counted in refcount.
1329.1218 -  static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r,
1329.1219 -                                             const _CharT* __iter, size_t __slen)
1329.1220 -    // As above, but one reference to __r is about to be
1329.1221 -    // destroyed.  Thus the pieces may be recycled if all
1329.1222 -    // relevent reference counts are 1.
1329.1223 -#           ifdef __GC
1329.1224 -    // We can't really do anything since refcounts are unavailable.
1329.1225 -  { return _S_concat_char_iter(__r, __iter, __slen); }
1329.1226 -#           else
1329.1227 -  ;
1329.1228 -#           endif
1329.1229 -
1329.1230 -  static _RopeRep* _S_concat_rep(_RopeRep* __left, _RopeRep* __right);
1329.1231 -  // General concatenation on _RopeRep.  _Result
1329.1232 -  // has refcount of 1.  Adjusts argument refcounts.
1329.1233 -
1329.1234 -public:
1329.1235 -  void apply_to_pieces( size_t __begin, size_t __end,
1329.1236 -                        _Rope_char_consumer<_CharT>& __c) const {
1329.1237 -    _S_apply_to_pieces(__c, _M_tree_ptr._M_data, __begin, __end);
1329.1238 -  }
1329.1239 -
1329.1240 -
1329.1241 -protected:
1329.1242 -
1329.1243 -  static size_t _S_rounded_up_size(size_t __n) {
1329.1244 -    return _RopeRep::_S_rounded_up_size(__n);
1329.1245 -  }
1329.1246 -
1329.1247 -  static size_t _S_allocated_capacity(size_t __n) {
1329.1248 -    if (_S_is_basic_char_type((_CharT*)0)) {
1329.1249 -      return _S_rounded_up_size(__n) - 1;
1329.1250 -    } else {
1329.1251 -      return _S_rounded_up_size(__n);
1329.1252 -    }
1329.1253 -  }
1329.1254 -                
1329.1255 -  // Allocate and construct a RopeLeaf using the supplied allocator
1329.1256 -  // Takes ownership of s instead of copying.
1329.1257 -  static _RopeLeaf* _S_new_RopeLeaf(__GC_CONST _CharT *__s,
1329.1258 -                                    size_t _p_size, allocator_type __a)
1329.1259 -  {
1329.1260 -   _RopeLeaf* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a, _RopeLeaf).allocate(1,(const void*)0);
1329.1261 -    _STLP_TRY {
1329.1262 -      _STLP_PLACEMENT_NEW(__space) _RopeLeaf(__s, _p_size, __a);
1329.1263 -    }
1329.1264 -   _STLP_UNWIND(_STLP_CREATE_ALLOCATOR(allocator_type,__a, 
1329.1265 -                                   _RopeLeaf).deallocate(__space, 1))
1329.1266 -	  return __space;
1329.1267 -  }
1329.1268 -
1329.1269 -  static _RopeConcatenation* _S_new_RopeConcatenation(
1329.1270 -                                                      _RopeRep* __left, _RopeRep* __right,
1329.1271 -                                                      allocator_type __a)
1329.1272 -  {
1329.1273 -   _RopeConcatenation* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a,
1329.1274 -                                                    _RopeConcatenation).allocate(1,(const void*)0);
1329.1275 -    return _STLP_PLACEMENT_NEW(__space) _RopeConcatenation(__left, __right, __a);
1329.1276 -  }
1329.1277 -
1329.1278 -  static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f,
1329.1279 -                                            size_t _p_size, bool __d, allocator_type __a)
1329.1280 -  {
1329.1281 -   _RopeFunction* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a, 
1329.1282 -                                               _RopeFunction).allocate(1,(const void*)0);
1329.1283 -    return _STLP_PLACEMENT_NEW(__space) _RopeFunction(__f, _p_size, __d, __a);
1329.1284 -  }
1329.1285 -
1329.1286 -  static _RopeSubstring* _S_new_RopeSubstring(
1329.1287 -                                              _Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
1329.1288 -                                              size_t __l, allocator_type __a)
1329.1289 -  {
1329.1290 -   _RopeSubstring* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a, 
1329.1291 -                                                _RopeSubstring).allocate(1,(const void*)0);
1329.1292 -    return _STLP_PLACEMENT_NEW(__space) _RopeSubstring(__b, __s, __l, __a);
1329.1293 -  }
1329.1294 -
1329.1295 -#         define _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _p_size, __a) \
1329.1296 -                _S_RopeLeaf_from_unowned_char_ptr(__s, _p_size, __a)     
1329.1297 -
1329.1298 -  static
1329.1299 -  _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
1329.1300 -                                               size_t _p_size, allocator_type __a)
1329.1301 -  {
1329.1302 -    if (0 == _p_size) return 0;
1329.1303 -
1329.1304 -   _CharT* __buf = _STLP_CREATE_ALLOCATOR(allocator_type,__a, _CharT).allocate(_S_rounded_up_size(_p_size));
1329.1305 -
1329.1306 -    uninitialized_copy_n(__s, _p_size, __buf);
1329.1307 -    _S_cond_store_eos(__buf[_p_size]);
1329.1308 -
1329.1309 -    _STLP_TRY {
1329.1310 -      return _S_new_RopeLeaf(__buf, _p_size, __a);
1329.1311 -    }
1329.1312 -    _STLP_UNWIND(_RopeRep::_S_free_string(__buf, _p_size, __a))
1329.1313 -            
1329.1314 -# if defined (_STLP_THROW_RETURN_BUG)
1329.1315 -      return 0;
1329.1316 -# endif
1329.1317 -  }
1329.1318 -            
1329.1319 -
1329.1320 -  // Concatenation of nonempty strings.
1329.1321 -  // Always builds a concatenation node.
1329.1322 -  // Rebalances if the result is too deep.
1329.1323 -  // Result has refcount 1.
1329.1324 -  // Does not increment left and right ref counts even though
1329.1325 -  // they are referenced.
1329.1326 -  static _RopeRep*
1329.1327 -  _S_tree_concat(_RopeRep* __left, _RopeRep* __right);
1329.1328 -
1329.1329 -  // Concatenation helper functions
1329.1330 -  static _RopeLeaf*
1329.1331 -  _S_leaf_concat_char_iter(_RopeLeaf* __r,
1329.1332 -                           const _CharT* __iter, size_t __slen);
1329.1333 -  // Concatenate by copying leaf.
1329.1334 -  // should take an arbitrary iterator
1329.1335 -  // result has refcount 1.
1329.1336 -#       ifndef __GC
1329.1337 -  static _RopeLeaf* _S_destr_leaf_concat_char_iter
1329.1338 -  (_RopeLeaf* __r, const _CharT* __iter, size_t __slen);
1329.1339 -  // A version that potentially clobbers __r if __r->_M_ref_count == 1.
1329.1340 -#       endif
1329.1341 -
1329.1342 -
1329.1343 -  // A helper function for exponentiating strings.
1329.1344 -  // This uses a nonstandard refcount convention.
1329.1345 -  // The result has refcount 0.
1329.1346 -  friend struct _Rope_Concat_fn<_CharT,_Alloc>;
1329.1347 -  typedef _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
1329.1348 -
1329.1349 -public:
1329.1350 -  static size_t _S_char_ptr_len(const _CharT* __s) {
1329.1351 -    const _CharT* __p = __s;
1329.1352 -	  
1329.1353 -    while (!_S_is0(*__p)) { ++__p; }
1329.1354 -    return (__p - __s);
1329.1355 -  }
1329.1356 -
1329.1357 -public: /* for operators */
1329.1358 -  rope(_RopeRep* __t, const allocator_type& __a = allocator_type())
1329.1359 -    : _M_tree_ptr(__a, __t) { }
1329.1360 -private:
1329.1361 -  // Copy __r to the _CharT buffer.
1329.1362 -  // Returns __buffer + __r->_M_size._M_data.
1329.1363 -  // Assumes that buffer is uninitialized.
1329.1364 -  static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
1329.1365 -
1329.1366 -  // Again, with explicit starting position and length.
1329.1367 -  // Assumes that buffer is uninitialized.
1329.1368 -  static _CharT* _S_flatten(_RopeRep* __r,
1329.1369 -                            size_t __start, size_t __len,
1329.1370 -                            _CharT* __buffer);
1329.1371 -
1329.1372 -  // fbp : HP aCC prohibits access to protected min_len from within static methods ( ?? )
1329.1373 -public:
1329.1374 -  static const unsigned long _S_min_len[46];
1329.1375 -protected:
1329.1376 -  static bool _S_is_balanced(_RopeRep* __r)
1329.1377 -  { return (__r->_M_size._M_data >= _S_min_len[__r->_M_depth]); }
1329.1378 -
1329.1379 -  static bool _S_is_almost_balanced(_RopeRep* __r)
1329.1380 -  { return (__r->_M_depth == 0 ||
1329.1381 -            __r->_M_size._M_data >= _S_min_len[__r->_M_depth - 1]); }
1329.1382 -
1329.1383 -  static bool _S_is_roughly_balanced(_RopeRep* __r)
1329.1384 -  { return (__r->_M_depth <= 1 ||
1329.1385 -            __r->_M_size._M_data >= _S_min_len[__r->_M_depth - 2]); }
1329.1386 -
1329.1387 -  // Assumes the result is not empty.
1329.1388 -  static _RopeRep* _S_concat_and_set_balanced(_RopeRep* __left,
1329.1389 -                                              _RopeRep* __right)
1329.1390 -  {
1329.1391 -    _RopeRep* __result = _S_concat_rep(__left, __right);
1329.1392 -    if (_S_is_balanced(__result)) __result->_M_is_balanced = true;
1329.1393 -    return __result;
1329.1394 -  }
1329.1395 -
1329.1396 -  // The basic rebalancing operation.  Logically copies the
1329.1397 -  // rope.  The result has refcount of 1.  The client will
1329.1398 -  // usually decrement the reference count of __r.
1329.1399 -  // The result is within height 2 of balanced by the above
1329.1400 -  // definition.
1329.1401 -  static _RopeRep* _S_balance(_RopeRep* __r);
1329.1402 -
1329.1403 -  // Add all unbalanced subtrees to the forest of balanceed trees.
1329.1404 -  // Used only by balance.
1329.1405 -  static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest);
1329.1406 -        
1329.1407 -  // Add __r to forest, assuming __r is already balanced.
1329.1408 -  static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest);
1329.1409 -
1329.1410 -  // Print to stdout, exposing structure
1329.1411 -  static void _S_dump(_RopeRep* __r, int __indent = 0);
1329.1412 -
1329.1413 -  // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp.
1329.1414 -  static int _S_compare(const _RopeRep* __x, const _RopeRep* __y);
1329.1415 -
1329.1416 -public:
1329.1417 -  bool empty() const { return 0 == _M_tree_ptr._M_data; }
1329.1418 -
1329.1419 -  // Comparison member function.  This is public only for those
1329.1420 -  // clients that need a ternary comparison.  Others
1329.1421 -  // should use the comparison operators below.
1329.1422 -  int compare(const _Self& __y) const {
1329.1423 -    return _S_compare(_M_tree_ptr._M_data, __y._M_tree_ptr._M_data);
1329.1424 -  }
1329.1425 -
1329.1426 -  rope(const _CharT* __s, const allocator_type& __a = allocator_type())
1329.1427 -    : _M_tree_ptr(__a, _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _S_char_ptr_len(__s),__a))
1329.1428 -  { }
1329.1429 -
1329.1430 -  rope(const _CharT* __s, size_t __len,
1329.1431 -       const allocator_type& __a = allocator_type())
1329.1432 -    : _M_tree_ptr(__a, (_STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __len, __a)))
1329.1433 -  { }
1329.1434 -
1329.1435 -  // Should perhaps be templatized with respect to the iterator type
1329.1436 -  // and use Sequence_buffer.  (It should perhaps use sequence_buffer
1329.1437 -  // even now.)
1329.1438 -  rope(const _CharT *__s, const _CharT *__e,
1329.1439 -       const allocator_type& __a = allocator_type())
1329.1440 -    : _M_tree_ptr(__a, _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __e - __s, __a))
1329.1441 -  { }
1329.1442 -
1329.1443 -  rope(const const_iterator& __s, const const_iterator& __e,
1329.1444 -       const allocator_type& __a = allocator_type())
1329.1445 -    : _M_tree_ptr(__a, _S_substring(__s._M_root, __s._M_current_pos,
1329.1446 -                                    __e._M_current_pos))
1329.1447 -  { }
1329.1448 -
1329.1449 -  rope(const iterator& __s, const iterator& __e,
1329.1450 -       const allocator_type& __a = allocator_type())
1329.1451 -    : _M_tree_ptr(__a, _S_substring(__s._M_root, __s._M_current_pos,
1329.1452 -                                    __e._M_current_pos))
1329.1453 -  { }
1329.1454 -
1329.1455 -  rope(_CharT __c, const allocator_type& __a = allocator_type())
1329.1456 -    : _M_tree_ptr(__a, (_RopeRep*)0)
1329.1457 -  {
1329.1458 -    _CharT* __buf = _M_tree_ptr.allocate(_S_rounded_up_size(1));
1329.1459 -
1329.1460 -    _Construct(__buf, __c);
1329.1461 -    _STLP_TRY {
1329.1462 -      _M_tree_ptr._M_data = _S_new_RopeLeaf(__buf, 1, __a);
1329.1463 -    }
1329.1464 -    _STLP_UNWIND(_RopeRep::_S_free_string(__buf, 1, __a))
1329.1465 -      }
1329.1466 -
1329.1467 -  rope(size_t __n, _CharT __c,     
1329.1468 -       const allocator_type& __a = allocator_type()):
1329.1469 -    _M_tree_ptr(__a, (_RopeRep*)0) {
1329.1470 -    rope<_CharT,_Alloc> __result;
1329.1471 -# define  __exponentiate_threshold size_t(32)
1329.1472 -    _RopeRep* __remainder;
1329.1473 -    rope<_CharT,_Alloc> __remainder_rope;
1329.1474 -	    
1329.1475 -    // gcc-2.7.2 bugs
1329.1476 -    typedef _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
1329.1477 -	    
1329.1478 -    if (0 == __n)
1329.1479 -      return;
1329.1480 -	    
1329.1481 -    size_t __exponent = __n / __exponentiate_threshold;
1329.1482 -    size_t __rest = __n % __exponentiate_threshold;
1329.1483 -    if (0 == __rest) {
1329.1484 -      __remainder = 0;
1329.1485 -    } else {
1329.1486 -      _CharT* __rest_buffer = _M_tree_ptr.allocate(_S_rounded_up_size(__rest));
1329.1487 -      uninitialized_fill_n(__rest_buffer, __rest, __c);
1329.1488 -      _S_cond_store_eos(__rest_buffer[__rest]);
1329.1489 -      _STLP_TRY {
1329.1490 -		__remainder = _S_new_RopeLeaf(__rest_buffer, __rest, __a);
1329.1491 -      }
1329.1492 -      _STLP_UNWIND(_RopeRep::_S_free_string(__rest_buffer, __rest, __a))
1329.1493 -		}
1329.1494 -    __remainder_rope._M_tree_ptr._M_data = __remainder;
1329.1495 -    if (__exponent != 0) {
1329.1496 -      _CharT* __base_buffer =
1329.1497 -		_M_tree_ptr.allocate(_S_rounded_up_size(__exponentiate_threshold));
1329.1498 -      _RopeLeaf* __base_leaf;
1329.1499 -      rope<_CharT,_Alloc> __base_rope;
1329.1500 -      uninitialized_fill_n(__base_buffer, __exponentiate_threshold, __c);
1329.1501 -      _S_cond_store_eos(__base_buffer[__exponentiate_threshold]);
1329.1502 -      _STLP_TRY {
1329.1503 -		__base_leaf = _S_new_RopeLeaf(__base_buffer,
1329.1504 -                                      __exponentiate_threshold, __a);
1329.1505 -      }
1329.1506 -      _STLP_UNWIND(_RopeRep::_S_free_string(__base_buffer, 
1329.1507 -                                            __exponentiate_threshold, __a))
1329.1508 -		__base_rope._M_tree_ptr._M_data = __base_leaf;
1329.1509 -      if (1 == __exponent) {
1329.1510 -		__result = __base_rope;
1329.1511 -#         ifndef __GC
1329.1512 -		_STLP_ASSERT(2 == __result._M_tree_ptr._M_data->_M_ref_count)
1329.1513 -		// One each for base_rope and __result
1329.1514 -#         endif
1329.1515 -      } else {
1329.1516 -		__result = power(__base_rope, __exponent, _Concat_fn());
1329.1517 -      }
1329.1518 -      if (0 != __remainder) {
1329.1519 -		__result += __remainder_rope;
1329.1520 -      }
1329.1521 -    } else {
1329.1522 -      __result = __remainder_rope;
1329.1523 -    }
1329.1524 -    _M_tree_ptr._M_data = __result._M_tree_ptr._M_data;
1329.1525 -    _M_tree_ptr._M_data->_M_ref_nonnil();
1329.1526 -# undef __exponentiate_threshold
1329.1527 -  }
1329.1528 -
1329.1529 -  rope(const allocator_type& __a = allocator_type())
1329.1530 -    : _M_tree_ptr(__a, (_RopeRep*)0) {}
1329.1531 -
1329.1532 -  // Construct a rope from a function that can compute its members
1329.1533 -  rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
1329.1534 -       const allocator_type& __a = allocator_type())
1329.1535 -    : _M_tree_ptr(__a, (_RopeRep*)0)
1329.1536 -  {
1329.1537 -    _M_tree_ptr._M_data = (0 == __len) ?
1329.1538 -      0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a);
1329.1539 -  }
1329.1540 -
1329.1541 -  rope(const _Self& __x)
1329.1542 -    : _M_tree_ptr(__x.get_allocator(), __x._M_tree_ptr._M_data)
1329.1543 -  {
1329.1544 -    _S_ref(_M_tree_ptr._M_data);
1329.1545 -  }
1329.1546 -
1329.1547 -  ~rope()
1329.1548 -  {
1329.1549 -    _S_unref(_M_tree_ptr._M_data);
1329.1550 -  }
1329.1551 -
1329.1552 -  _Self& operator=(const _Self& __x)
1329.1553 -  {
1329.1554 -    _RopeRep* __old = _M_tree_ptr._M_data;
1329.1555 -    _STLP_ASSERT(get_allocator() == __x.get_allocator())
1329.1556 -    _M_tree_ptr._M_data = __x._M_tree_ptr._M_data;
1329.1557 -    _S_ref(_M_tree_ptr._M_data);
1329.1558 -    _S_unref(__old);
1329.1559 -    return(*this);
1329.1560 -  }
1329.1561 -  void clear()
1329.1562 -  {
1329.1563 -    _S_unref(_M_tree_ptr._M_data);
1329.1564 -    _M_tree_ptr._M_data = 0;
1329.1565 -  }
1329.1566 -  void push_back(_CharT __x)
1329.1567 -  {
1329.1568 -    _RopeRep* __old = _M_tree_ptr._M_data;
1329.1569 -    _M_tree_ptr._M_data = _S_destr_concat_char_iter(_M_tree_ptr._M_data, &__x, 1);
1329.1570 -    _S_unref(__old);
1329.1571 -  }
1329.1572 -
1329.1573 -  void pop_back()
1329.1574 -  {
1329.1575 -    _RopeRep* __old = _M_tree_ptr._M_data;
1329.1576 -    _M_tree_ptr._M_data = 
1329.1577 -      _S_substring(_M_tree_ptr._M_data, 0, _M_tree_ptr._M_data->_M_size._M_data - 1);
1329.1578 -    _S_unref(__old);
1329.1579 -  }
1329.1580 -
1329.1581 -  _CharT back() const
1329.1582 -  {
1329.1583 -    return _S_fetch(_M_tree_ptr._M_data, _M_tree_ptr._M_data->_M_size._M_data - 1);
1329.1584 -  }
1329.1585 -
1329.1586 -  void push_front(_CharT __x)
1329.1587 -  {
1329.1588 -    _RopeRep* __old = _M_tree_ptr._M_data;
1329.1589 -    _RopeRep* __left =
1329.1590 -      _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(&__x, 1, get_allocator());
1329.1591 -    _STLP_TRY {
1329.1592 -      _M_tree_ptr._M_data = _S_concat_rep(__left, _M_tree_ptr._M_data);
1329.1593 -      _S_unref(__old);
1329.1594 -      _S_unref(__left);
1329.1595 -    }
1329.1596 -    _STLP_UNWIND(_S_unref(__left))
1329.1597 -      }
1329.1598 -
1329.1599 -  void pop_front()
1329.1600 -  {
1329.1601 -    _RopeRep* __old = _M_tree_ptr._M_data;
1329.1602 -    _M_tree_ptr._M_data = _S_substring(_M_tree_ptr._M_data, 1, _M_tree_ptr._M_data->_M_size._M_data);
1329.1603 -    _S_unref(__old);
1329.1604 -  }
1329.1605 -
1329.1606 -  _CharT front() const
1329.1607 -  {
1329.1608 -    return _S_fetch(_M_tree_ptr._M_data, 0);
1329.1609 -  }
1329.1610 -
1329.1611 -  void balance()
1329.1612 -  {
1329.1613 -    _RopeRep* __old = _M_tree_ptr._M_data;
1329.1614 -    _M_tree_ptr._M_data = _S_balance(_M_tree_ptr._M_data);
1329.1615 -    _S_unref(__old);
1329.1616 -  }
1329.1617 -
1329.1618 -  void copy(_CharT* __buffer) const {
1329.1619 -    _STLP_STD::_Destroy(__buffer, __buffer + size());
1329.1620 -    _S_flatten(_M_tree_ptr._M_data, __buffer);
1329.1621 -  }
1329.1622 -
1329.1623 -  // This is the copy function from the standard, but
1329.1624 -  // with the arguments reordered to make it consistent with the
1329.1625 -  // rest of the interface.
1329.1626 -  // Note that this guaranteed not to compile if the draft standard
1329.1627 -  // order is assumed.
1329.1628 -  size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const 
1329.1629 -  {
1329.1630 -    size_t _p_size = size();
1329.1631 -    size_t __len = (__pos + __n > _p_size? _p_size - __pos : __n);
1329.1632 -
1329.1633 -    _STLP_STD::_Destroy(__buffer, __buffer + __len);
1329.1634 -    _S_flatten(_M_tree_ptr._M_data, __pos, __len, __buffer);
1329.1635 -    return __len;
1329.1636 -  }
1329.1637 -
1329.1638 -  // Print to stdout, exposing structure.  May be useful for
1329.1639 -  // performance debugging.
1329.1640 -  void dump() {
1329.1641 -    _S_dump(_M_tree_ptr._M_data);
1329.1642 -  }
1329.1643 -
1329.1644 -  // Convert to 0 terminated string in new allocated memory.
1329.1645 -  // Embedded 0s in the input do not terminate the copy.
1329.1646 -  const _CharT* c_str() const;
1329.1647 -
1329.1648 -  // As above, but lso use the flattened representation as the
1329.1649 -  // the new rope representation.
1329.1650 -  const _CharT* replace_with_c_str();
1329.1651 -
1329.1652 -  // Reclaim memory for the c_str generated flattened string.
1329.1653 -  // Intentionally undocumented, since it's hard to say when this
1329.1654 -  // is safe for multiple threads.
1329.1655 -  void delete_c_str () {
1329.1656 -    if (0 == _M_tree_ptr._M_data) return;
1329.1657 -    if (_RopeRep::_S_leaf == _M_tree_ptr._M_data->_M_tag && 
1329.1658 -        ((_RopeLeaf*)_M_tree_ptr._M_data)->_M_data == 
1329.1659 -        _M_tree_ptr._M_data->_M_c_string) {
1329.1660 -      // Representation shared
1329.1661 -      return;
1329.1662 -    }
1329.1663 -#           ifndef __GC
1329.1664 -    _M_tree_ptr._M_data->_M_free_c_string();
1329.1665 -#           endif
1329.1666 -    _M_tree_ptr._M_data->_M_c_string = 0;
1329.1667 -  }
1329.1668 -
1329.1669 -  _CharT operator[] (size_type __pos) const {
1329.1670 -    return _S_fetch(_M_tree_ptr._M_data, __pos);
1329.1671 -  }
1329.1672 -
1329.1673 -  _CharT at(size_type __pos) const {
1329.1674 -    // if (__pos >= size()) throw out_of_range;  // XXX
1329.1675 -    return (*this)[__pos];
1329.1676 -  }
1329.1677 -
1329.1678 -  const_iterator begin() const {
1329.1679 -    return(const_iterator(_M_tree_ptr._M_data, 0));
1329.1680 -  }
1329.1681 -
1329.1682 -  // An easy way to get a const iterator from a non-const container.
1329.1683 -  const_iterator const_begin() const {
1329.1684 -    return(const_iterator(_M_tree_ptr._M_data, 0));
1329.1685 -  }
1329.1686 -
1329.1687 -  const_iterator end() const {
1329.1688 -    return(const_iterator(_M_tree_ptr._M_data, size()));
1329.1689 -  }
1329.1690 -
1329.1691 -  const_iterator const_end() const {
1329.1692 -    return(const_iterator(_M_tree_ptr._M_data, size()));
1329.1693 -  }
1329.1694 -
1329.1695 -  size_type size() const { 
1329.1696 -    return(0 == _M_tree_ptr._M_data? 0 : _M_tree_ptr._M_data->_M_size._M_data);
1329.1697 -  }
1329.1698 -
1329.1699 -  size_type length() const {
1329.1700 -    return size();
1329.1701 -  }
1329.1702 -
1329.1703 -  size_type max_size() const {
1329.1704 -    return _S_min_len[__ROPE_MAX_DEPTH-1] - 1;
1329.1705 -    //  Guarantees that the result can be sufficirntly
1329.1706 -    //  balanced.  Longer ropes will probably still work,
1329.1707 -    //  but it's harder to make guarantees.
1329.1708 -  }
1329.1709 -
1329.1710 -  const_reverse_iterator rbegin() const {
1329.1711 -    return const_reverse_iterator(end());
1329.1712 -  }
1329.1713 -
1329.1714 -  const_reverse_iterator const_rbegin() const {
1329.1715 -    return const_reverse_iterator(end());
1329.1716 -  }
1329.1717 -
1329.1718 -  const_reverse_iterator rend() const {
1329.1719 -    return const_reverse_iterator(begin());
1329.1720 -  }
1329.1721 -
1329.1722 -  const_reverse_iterator const_rend() const {
1329.1723 -    return const_reverse_iterator(begin());
1329.1724 -  }
1329.1725 -  // The symmetric cases are intentionally omitted, since they're presumed
1329.1726 -  // to be less common, and we don't handle them as well.
1329.1727 -
1329.1728 -  // The following should really be templatized.
1329.1729 -  // The first argument should be an input iterator or
1329.1730 -  // forward iterator with value_type _CharT.
1329.1731 -  _Self& append(const _CharT* __iter, size_t __n) {
1329.1732 -    _RopeRep* __result = 
1329.1733 -      _S_destr_concat_char_iter(_M_tree_ptr._M_data, __iter, __n);
1329.1734 -    _S_unref(_M_tree_ptr._M_data);
1329.1735 -    _M_tree_ptr._M_data = __result;
1329.1736 -    return *this;
1329.1737 -  }
1329.1738 -
1329.1739 -  _Self& append(const _CharT* __c_string) {
1329.1740 -    size_t __len = _S_char_ptr_len(__c_string);
1329.1741 -    append(__c_string, __len);
1329.1742 -    return(*this);
1329.1743 -  }
1329.1744 -
1329.1745 -  _Self& append(const _CharT* __s, const _CharT* __e) {
1329.1746 -    _RopeRep* __result =
1329.1747 -      _S_destr_concat_char_iter(_M_tree_ptr._M_data, __s, __e - __s);
1329.1748 -    _S_unref(_M_tree_ptr._M_data);
1329.1749 -    _M_tree_ptr._M_data = __result;
1329.1750 -    return *this;
1329.1751 -  }
1329.1752 -
1329.1753 -  _Self& append(const_iterator __s, const_iterator __e) {
1329.1754 -    _STLP_ASSERT(__s._M_root == __e._M_root)
1329.1755 -    _STLP_ASSERT(get_allocator() == __s._M_root->get_allocator())
1329.1756 -    _Self_destruct_ptr __appendee(_S_substring(
1329.1757 -                                               __s._M_root, __s._M_current_pos, __e._M_current_pos));
1329.1758 -    _RopeRep* __result = 
1329.1759 -      _S_concat_rep(_M_tree_ptr._M_data, (_RopeRep*)__appendee);
1329.1760 -    _S_unref(_M_tree_ptr._M_data);
1329.1761 -    _M_tree_ptr._M_data = __result;
1329.1762 -    return *this;
1329.1763 -  }
1329.1764 -
1329.1765 -  _Self& append(_CharT __c) {
1329.1766 -    _RopeRep* __result = 
1329.1767 -      _S_destr_concat_char_iter(_M_tree_ptr._M_data, &__c, 1);
1329.1768 -    _S_unref(_M_tree_ptr._M_data);
1329.1769 -    _M_tree_ptr._M_data = __result;
1329.1770 -    return *this;
1329.1771 -  }
1329.1772 -
1329.1773 -  _Self& append() { return append(_CharT()); }  // XXX why?
1329.1774 -
1329.1775 -  _Self& append(const _Self& __y) {
1329.1776 -    _STLP_ASSERT(__y.get_allocator() == get_allocator())
1329.1777 -    _RopeRep* __result = _S_concat_rep(_M_tree_ptr._M_data, __y._M_tree_ptr._M_data);
1329.1778 -    _S_unref(_M_tree_ptr._M_data);
1329.1779 -    _M_tree_ptr._M_data = __result;
1329.1780 -    return *this;
1329.1781 -  }
1329.1782 -
1329.1783 -  _Self& append(size_t __n, _CharT __c) {
1329.1784 -    rope<_CharT,_Alloc> __last(__n, __c);
1329.1785 -    return append(__last);
1329.1786 -  }
1329.1787 -
1329.1788 -  void swap(_Self& __b) {
1329.1789 -    _STLP_ASSERT(get_allocator() == __b.get_allocator())
1329.1790 -    _RopeRep* __tmp = _M_tree_ptr._M_data;
1329.1791 -    _M_tree_ptr._M_data = __b._M_tree_ptr._M_data;
1329.1792 -    __b._M_tree_ptr._M_data = __tmp;
1329.1793 -  }
1329.1794 -
1329.1795 -
1329.1796 -protected:
1329.1797 -  // Result is included in refcount.
1329.1798 -  static _RopeRep* replace(_RopeRep* __old, size_t __pos1,
1329.1799 -                           size_t __pos2, _RopeRep* __r) {
1329.1800 -    if (0 == __old) { _S_ref(__r); return __r; }
1329.1801 -    _Self_destruct_ptr __left(
1329.1802 -                              _S_substring(__old, 0, __pos1));
1329.1803 -    _Self_destruct_ptr __right(
1329.1804 -                               _S_substring(__old, __pos2, __old->_M_size._M_data));
1329.1805 -	_STLP_MPWFIX_TRY	//*TY 06/01/2000 - 
1329.1806 -    _RopeRep* __result;
1329.1807 -
1329.1808 -    if (0 == __r) {
1329.1809 -      __result = _S_concat_rep(__left, __right);
1329.1810 -    } else {
1329.1811 -      _STLP_ASSERT(__old->get_allocator() == __r->get_allocator())
1329.1812 -      _Self_destruct_ptr __left_result(_S_concat_rep(__left, __r));
1329.1813 -      __result = _S_concat_rep(__left_result, __right);
1329.1814 -    }
1329.1815 -    return __result;
1329.1816 -	_STLP_MPWFIX_CATCH	//*TY 06/01/2000 - 
1329.1817 -  }
1329.1818 -
1329.1819 -public:
1329.1820 -  void insert(size_t __p, const _Self& __r) {
1329.1821 -    _RopeRep* __result = 
1329.1822 -      replace(_M_tree_ptr._M_data, __p, __p, __r._M_tree_ptr._M_data);
1329.1823 -    _STLP_ASSERT(get_allocator() == __r.get_allocator())
1329.1824 -    _S_unref(_M_tree_ptr._M_data);
1329.1825 -    _M_tree_ptr._M_data = __result;
1329.1826 -  }
1329.1827 -
1329.1828 -  void insert(size_t __p, size_t __n, _CharT __c) {
1329.1829 -    rope<_CharT,_Alloc> __r(__n,__c);
1329.1830 -    insert(__p, __r);
1329.1831 -  }
1329.1832 -
1329.1833 -  void insert(size_t __p, const _CharT* __i, size_t __n) {
1329.1834 -    _Self_destruct_ptr __left(_S_substring(_M_tree_ptr._M_data, 0, __p));
1329.1835 -    _Self_destruct_ptr __right(_S_substring(_M_tree_ptr._M_data, __p, size()));
1329.1836 -    _Self_destruct_ptr __left_result(
1329.1837 -                                     _S_concat_char_iter(__left, __i, __n));
1329.1838 -    // _S_ destr_concat_char_iter should be safe here.
1329.1839 -    // But as it stands it's probably not a win, since __left
1329.1840 -    // is likely to have additional references.
1329.1841 -    _RopeRep* __result = _S_concat_rep(__left_result, __right);
1329.1842 -    _S_unref(_M_tree_ptr._M_data);
1329.1843 -    _M_tree_ptr._M_data = __result;
1329.1844 -  }
1329.1845 -
1329.1846 -  void insert(size_t __p, const _CharT* __c_string) {
1329.1847 -    insert(__p, __c_string, _S_char_ptr_len(__c_string));
1329.1848 -  }
1329.1849 -
1329.1850 -  void insert(size_t __p, _CharT __c) {
1329.1851 -    insert(__p, &__c, 1);
1329.1852 -  }
1329.1853 -
1329.1854 -  void insert(size_t __p) {
1329.1855 -    _CharT __c = _CharT();
1329.1856 -    insert(__p, &__c, 1);
1329.1857 -  }
1329.1858 -
1329.1859 -  void insert(size_t __p, const _CharT* __i, const _CharT* __j) {
1329.1860 -    _Self __r(__i, __j);
1329.1861 -    insert(__p, __r);
1329.1862 -  }
1329.1863 -
1329.1864 -  void insert(size_t __p, const const_iterator& __i,
1329.1865 -              const const_iterator& __j) {
1329.1866 -    _Self __r(__i, __j);
1329.1867 -    insert(__p, __r);
1329.1868 -  }
1329.1869 -
1329.1870 -  void insert(size_t __p, const iterator& __i,
1329.1871 -              const iterator& __j) {
1329.1872 -    _Self __r(__i, __j);
1329.1873 -    insert(__p, __r);
1329.1874 -  }
1329.1875 -
1329.1876 -  // (position, length) versions of replace operations:
1329.1877 -
1329.1878 -  void replace(size_t __p, size_t __n, const _Self& __r) {
1329.1879 -    _RopeRep* __result = 
1329.1880 -      replace(_M_tree_ptr._M_data, __p, __p + __n, __r._M_tree_ptr._M_data);
1329.1881 -    _S_unref(_M_tree_ptr._M_data);
1329.1882 -    _M_tree_ptr._M_data = __result;
1329.1883 -  }
1329.1884 -
1329.1885 -  void replace(size_t __p, size_t __n, 
1329.1886 -               const _CharT* __i, size_t __i_len) {
1329.1887 -    _Self __r(__i, __i_len);
1329.1888 -    replace(__p, __n, __r);
1329.1889 -  }
1329.1890 -
1329.1891 -  void replace(size_t __p, size_t __n, _CharT __c) {
1329.1892 -    _Self __r(__c);
1329.1893 -    replace(__p, __n, __r);
1329.1894 -  }
1329.1895 -
1329.1896 -  void replace(size_t __p, size_t __n, const _CharT* __c_string) {
1329.1897 -    _Self __r(__c_string);
1329.1898 -    replace(__p, __n, __r);
1329.1899 -  }
1329.1900 -
1329.1901 -  void replace(size_t __p, size_t __n, 
1329.1902 -               const _CharT* __i, const _CharT* __j) {
1329.1903 -    _Self __r(__i, __j);
1329.1904 -    replace(__p, __n, __r);
1329.1905 -  }
1329.1906 -
1329.1907 -  void replace(size_t __p, size_t __n,
1329.1908 -               const const_iterator& __i, const const_iterator& __j) {
1329.1909 -    _Self __r(__i, __j);
1329.1910 -    replace(__p, __n, __r);
1329.1911 -  }
1329.1912 -
1329.1913 -  void replace(size_t __p, size_t __n,
1329.1914 -               const iterator& __i, const iterator& __j) {
1329.1915 -    _Self __r(__i, __j);
1329.1916 -    replace(__p, __n, __r);
1329.1917 -  }
1329.1918 -
1329.1919 -  // Single character variants:
1329.1920 -  void replace(size_t __p, _CharT __c) {
1329.1921 -    iterator __i(this, __p);
1329.1922 -    *__i = __c;
1329.1923 -  }
1329.1924 -
1329.1925 -  void replace(size_t __p, const _Self& __r) {
1329.1926 -    replace(__p, 1, __r);
1329.1927 -  }
1329.1928 -
1329.1929 -  void replace(size_t __p, const _CharT* __i, size_t __i_len) {
1329.1930 -    replace(__p, 1, __i, __i_len);
1329.1931 -  }
1329.1932 -
1329.1933 -  void replace(size_t __p, const _CharT* __c_string) {
1329.1934 -    replace(__p, 1, __c_string);
1329.1935 -  }
1329.1936 -
1329.1937 -  void replace(size_t __p, const _CharT* __i, const _CharT* __j) {
1329.1938 -    replace(__p, 1, __i, __j);
1329.1939 -  }
1329.1940 -
1329.1941 -  void replace(size_t __p, const const_iterator& __i,
1329.1942 -               const const_iterator& __j) {
1329.1943 -    replace(__p, 1, __i, __j);
1329.1944 -  }
1329.1945 -
1329.1946 -  void replace(size_t __p, const iterator& __i,
1329.1947 -               const iterator& __j) {
1329.1948 -    replace(__p, 1, __i, __j);
1329.1949 -  }
1329.1950 -
1329.1951 -  // Erase, (position, size) variant.
1329.1952 -  void erase(size_t __p, size_t __n) {
1329.1953 -    _RopeRep* __result = replace(_M_tree_ptr._M_data, __p, __p + __n, 0);
1329.1954 -    _S_unref(_M_tree_ptr._M_data);
1329.1955 -    _M_tree_ptr._M_data = __result;
1329.1956 -  }
1329.1957 -
1329.1958 -  // Erase, single character
1329.1959 -  void erase(size_t __p) {
1329.1960 -    erase(__p, __p + 1);
1329.1961 -  }
1329.1962 -
1329.1963 -  // Insert, iterator variants.  
1329.1964 -  iterator insert(const iterator& __p, const _Self& __r)
1329.1965 -  { insert(__p.index(), __r); return __p; }
1329.1966 -  iterator insert(const iterator& __p, size_t __n, _CharT __c)
1329.1967 -  { insert(__p.index(), __n, __c); return __p; }
1329.1968 -  iterator insert(const iterator& __p, _CharT __c) 
1329.1969 -  { insert(__p.index(), __c); return __p; }
1329.1970 -  iterator insert(const iterator& __p ) 
1329.1971 -  { insert(__p.index()); return __p; }
1329.1972 -  iterator insert(const iterator& __p, const _CharT* c_string) 
1329.1973 -  { insert(__p.index(), c_string); return __p; }
1329.1974 -  iterator insert(const iterator& __p, const _CharT* __i, size_t __n)
1329.1975 -  { insert(__p.index(), __i, __n); return __p; }
1329.1976 -  iterator insert(const iterator& __p, const _CharT* __i, 
1329.1977 -                  const _CharT* __j)
1329.1978 -  { insert(__p.index(), __i, __j);  return __p; }
1329.1979 -  iterator insert(const iterator& __p,
1329.1980 -                  const const_iterator& __i, const const_iterator& __j)
1329.1981 -  { insert(__p.index(), __i, __j); return __p; }
1329.1982 -  iterator insert(const iterator& __p,
1329.1983 -                  const iterator& __i, const iterator& __j)
1329.1984 -  { insert(__p.index(), __i, __j); return __p; }
1329.1985 -
1329.1986 -  // Replace, range variants.
1329.1987 -  void replace(const iterator& __p, const iterator& __q,
1329.1988 -               const _Self& __r)
1329.1989 -  { replace(__p.index(), __q.index() - __p.index(), __r); }
1329.1990 -  void replace(const iterator& __p, const iterator& __q, _CharT __c)
1329.1991 -  { replace(__p.index(), __q.index() - __p.index(), __c); }
1329.1992 -  void replace(const iterator& __p, const iterator& __q,
1329.1993 -               const _CharT* __c_string)
1329.1994 -  { replace(__p.index(), __q.index() - __p.index(), __c_string); }
1329.1995 -  void replace(const iterator& __p, const iterator& __q,
1329.1996 -               const _CharT* __i, size_t __n)
1329.1997 -  { replace(__p.index(), __q.index() - __p.index(), __i, __n); }
1329.1998 -  void replace(const iterator& __p, const iterator& __q,
1329.1999 -               const _CharT* __i, const _CharT* __j)
1329.2000 -  { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
1329.2001 -  void replace(const iterator& __p, const iterator& __q,
1329.2002 -               const const_iterator& __i, const const_iterator& __j)
1329.2003 -  { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
1329.2004 -  void replace(const iterator& __p, const iterator& __q,
1329.2005 -               const iterator& __i, const iterator& __j)
1329.2006 -  { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
1329.2007 -
1329.2008 -  // Replace, iterator variants.
1329.2009 -  void replace(const iterator& __p, const _Self& __r)
1329.2010 -  { replace(__p.index(), __r); }
1329.2011 -  void replace(const iterator& __p, _CharT __c)
1329.2012 -  { replace(__p.index(), __c); }
1329.2013 -  void replace(const iterator& __p, const _CharT* __c_string)
1329.2014 -  { replace(__p.index(), __c_string); }
1329.2015 -  void replace(const iterator& __p, const _CharT* __i, size_t __n)
1329.2016 -  { replace(__p.index(), __i, __n); }
1329.2017 -  void replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
1329.2018 -  { replace(__p.index(), __i, __j); }
1329.2019 -  void replace(const iterator& __p, const_iterator __i, 
1329.2020 -               const_iterator __j)
1329.2021 -  { replace(__p.index(), __i, __j); }
1329.2022 -  void replace(const iterator& __p, iterator __i, iterator __j)
1329.2023 -  { replace(__p.index(), __i, __j); }
1329.2024 -
1329.2025 -  // Iterator and range variants of erase
1329.2026 -  iterator erase(const iterator& __p, const iterator& __q) {
1329.2027 -    size_t __p_index = __p.index();
1329.2028 -    erase(__p_index, __q.index() - __p_index);
1329.2029 -    return iterator(this, __p_index);
1329.2030 -  }
1329.2031 -  iterator erase(const iterator& __p) {
1329.2032 -    size_t __p_index = __p.index();
1329.2033 -    erase(__p_index, 1);
1329.2034 -    return iterator(this, __p_index);
1329.2035 -  }
1329.2036 -
1329.2037 -  _Self substr(size_t __start, size_t __len = 1) const {
1329.2038 -    return rope<_CharT,_Alloc>(
1329.2039 -                               _S_substring(_M_tree_ptr._M_data, __start, __start + __len));
1329.2040 -  }
1329.2041 -
1329.2042 -  _Self substr(iterator __start, iterator __end) const {
1329.2043 -    return rope<_CharT,_Alloc>(
1329.2044 -                               _S_substring(_M_tree_ptr._M_data, __start.index(), __end.index()));
1329.2045 -  }
1329.2046 -        
1329.2047 -  _Self substr(iterator __start) const {
1329.2048 -    size_t __pos = __start.index();
1329.2049 -    return rope<_CharT,_Alloc>(
1329.2050 -                               _S_substring(_M_tree_ptr._M_data, __pos, __pos + 1));
1329.2051 -  }
1329.2052 -        
1329.2053 -  _Self substr(const_iterator __start, const_iterator __end) const {
1329.2054 -    // This might eventually take advantage of the cache in the
1329.2055 -    // iterator.
1329.2056 -    return rope<_CharT,_Alloc>(
1329.2057 -                               _S_substring(_M_tree_ptr._M_data, __start.index(), __end.index()));
1329.2058 -  }
1329.2059 -
1329.2060 -  rope<_CharT,_Alloc> substr(const_iterator __start) {
1329.2061 -    size_t __pos = __start.index();
1329.2062 -    return rope<_CharT,_Alloc>(
1329.2063 -                               _S_substring(_M_tree_ptr._M_data, __pos, __pos + 1));
1329.2064 -  }
1329.2065 -
1329.2066 -  enum { npos = -1 };
1329.2067 -
1329.2068 -  //         static const size_type npos;
1329.2069 -
1329.2070 -  size_type find(_CharT __c, size_type __pos = 0) const;
1329.2071 -  size_type find(const _CharT* __s, size_type __pos = 0) const {
1329.2072 -    size_type __result_pos;
1329.2073 -    const_iterator __result = search(const_begin() + (ptrdiff_t)__pos, const_end(),
1329.2074 -                                     __s, __s + _S_char_ptr_len(__s));
1329.2075 -    __result_pos = __result.index();
1329.2076 -#           ifndef _STLP_OLD_ROPE_SEMANTICS
1329.2077 -    if (__result_pos == size()) __result_pos = npos;
1329.2078 -#           endif
1329.2079 -    return __result_pos;
1329.2080 -  }
1329.2081 -
1329.2082 -  iterator mutable_begin() {
1329.2083 -    return(iterator(this, 0));
1329.2084 -  }
1329.2085 -
1329.2086 -  iterator mutable_end() {
1329.2087 -    return(iterator(this, size()));
1329.2088 -  }
1329.2089 -
1329.2090 -  reverse_iterator mutable_rbegin() {
1329.2091 -    return reverse_iterator(mutable_end());
1329.2092 -  }
1329.2093 -
1329.2094 -  reverse_iterator mutable_rend() {
1329.2095 -    return reverse_iterator(mutable_begin());
1329.2096 -  }
1329.2097 -
1329.2098 -  reference mutable_reference_at(size_type __pos) {
1329.2099 -    return reference(this, __pos);
1329.2100 -  }
1329.2101 -
1329.2102 -#       ifdef __STD_STUFF
1329.2103 -  reference operator[] (size_type __pos) {
1329.2104 -    return reference(this, __pos);
1329.2105 -  }
1329.2106 -
1329.2107 -  reference at(size_type __pos) {
1329.2108 -    // if (__pos >= size()) throw out_of_range;  // XXX
1329.2109 -    return (*this)[__pos];
1329.2110 -  }
1329.2111 -
1329.2112 -  void resize(size_type, _CharT) {}
1329.2113 -  void resize(size_type) {}
1329.2114 -  void reserve(size_type = 0) {}
1329.2115 -  size_type capacity() const {
1329.2116 -    return max_size();
1329.2117 -  }
1329.2118 -
1329.2119 -  // Stuff below this line is dangerous because it's error prone.
1329.2120 -  // I would really like to get rid of it.
1329.2121 -  // copy function with funny arg ordering.
1329.2122 -  size_type copy(_CharT* __buffer, size_type __n, 
1329.2123 -                 size_type __pos = 0) const {
1329.2124 -    return copy(__pos, __n, __buffer);
1329.2125 -  }
1329.2126 -
1329.2127 -  iterator end() { return mutable_end(); }
1329.2128 -
1329.2129 -  iterator begin() { return mutable_begin(); }
1329.2130 -
1329.2131 -  reverse_iterator rend() { return mutable_rend(); }
1329.2132 -
1329.2133 -  reverse_iterator rbegin() { return mutable_rbegin(); }
1329.2134 -
1329.2135 -#       else
1329.2136 -
1329.2137 -  const_iterator end() { return const_end(); }
1329.2138 -
1329.2139 -  const_iterator begin() { return const_begin(); }
1329.2140 -
1329.2141 -  const_reverse_iterator rend() { return const_rend(); }
1329.2142 -  
1329.2143 -  const_reverse_iterator rbegin() { return const_rbegin(); }
1329.2144 -
1329.2145 -#	endif
1329.2146 -
1329.2147 -  __ROPE_DEFINE_ALLOCS(_Alloc, _M_tree_ptr)
1329.2148 -    };
1329.2149 -
1329.2150 -# undef __ROPE_DEFINE_ALLOC
1329.2151 -# undef __ROPE_DEFINE_ALLOCS
1329.2152 -
1329.2153 -template <class _CharT, class _Alloc>
1329.2154 -inline _CharT 
1329.2155 -_Rope_const_iterator< _CharT, _Alloc>::operator[](size_t __n)
1329.2156 -{
1329.2157 -  return rope<_CharT,_Alloc>::_S_fetch(this->_M_root, this->_M_current_pos + __n);
1329.2158 -}
1329.2159 -
1329.2160 -template <class _CharT, class _Alloc>
1329.2161 -inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2162 -                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2163 -  return (__x._M_current_pos == __y._M_current_pos && 
1329.2164 -          __x._M_root == __y._M_root);
1329.2165 -}
1329.2166 -
1329.2167 -template <class _CharT, class _Alloc>
1329.2168 -inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2169 -                       const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2170 -  return (__x._M_current_pos < __y._M_current_pos);
1329.2171 -}
1329.2172 -
1329.2173 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1329.2174 -
1329.2175 -template <class _CharT, class _Alloc>
1329.2176 -inline bool operator!= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2177 -                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2178 -  return !(__x == __y);
1329.2179 -}
1329.2180 -
1329.2181 -template <class _CharT, class _Alloc>
1329.2182 -inline bool operator> (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2183 -                       const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2184 -  return __y < __x;
1329.2185 -}
1329.2186 -
1329.2187 -template <class _CharT, class _Alloc>
1329.2188 -inline bool operator<= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2189 -                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2190 -  return !(__y < __x);
1329.2191 -}
1329.2192 -
1329.2193 -template <class _CharT, class _Alloc>
1329.2194 -inline bool operator>= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2195 -                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2196 -  return !(__x < __y);
1329.2197 -}
1329.2198 -
1329.2199 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1329.2200 -
1329.2201 -template <class _CharT, class _Alloc>
1329.2202 -inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x,
1329.2203 -                           const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1329.2204 -  return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
1329.2205 -}
1329.2206 -
1329.2207 -#if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000		// dwa 8/21/97  - "ambiguous access to overloaded function" bug.
1329.2208 -template <class _CharT, class _Alloc>
1329.2209 -inline _Rope_const_iterator<_CharT,_Alloc>
1329.2210 -operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
1329.2211 -  return _Rope_const_iterator<_CharT,_Alloc>(
1329.2212 -                                             __x._M_root, __x._M_current_pos - __n);
1329.2213 -}
1329.2214 -# endif
1329.2215 -
1329.2216 -template <class _CharT, class _Alloc>
1329.2217 -inline _Rope_const_iterator<_CharT,_Alloc>
1329.2218 -operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
1329.2219 -  return _Rope_const_iterator<_CharT,_Alloc>(
1329.2220 -                                             __x._M_root, __x._M_current_pos + __n);
1329.2221 -}
1329.2222 -
1329.2223 -template <class _CharT, class _Alloc>
1329.2224 -inline _Rope_const_iterator<_CharT,_Alloc>
1329.2225 -operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x) {
1329.2226 -  return _Rope_const_iterator<_CharT,_Alloc>(
1329.2227 -                                             __x._M_root, __x._M_current_pos + __n);
1329.2228 -}
1329.2229 -
1329.2230 -template <class _CharT, class _Alloc>
1329.2231 -inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2232 -                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2233 -  return (__x._M_current_pos == __y._M_current_pos && 
1329.2234 -          __x._M_root_rope == __y._M_root_rope);
1329.2235 -}
1329.2236 -
1329.2237 -template <class _CharT, class _Alloc>
1329.2238 -inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2239 -                       const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2240 -  return (__x._M_current_pos < __y._M_current_pos);
1329.2241 -}
1329.2242 -
1329.2243 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1329.2244 -
1329.2245 -template <class _CharT, class _Alloc>
1329.2246 -inline bool operator!= (const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2247 -                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2248 -  return !(__x == __y);
1329.2249 -}
1329.2250 -
1329.2251 -template <class _CharT, class _Alloc>
1329.2252 -inline bool operator> (const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2253 -                       const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2254 -  return __y < __x;
1329.2255 -}
1329.2256 -
1329.2257 -template <class _CharT, class _Alloc>
1329.2258 -inline bool operator<= (const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2259 -                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2260 -  return !(__y < __x);
1329.2261 -}
1329.2262 -
1329.2263 -template <class _CharT, class _Alloc>
1329.2264 -inline bool operator>= (const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2265 -                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2266 -  return !(__x < __y);
1329.2267 -}
1329.2268 -
1329.2269 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1329.2270 -
1329.2271 -template <class _CharT, class _Alloc>
1329.2272 -inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2273 -                           const _Rope_iterator<_CharT,_Alloc>& __y) {
1329.2274 -  return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
1329.2275 -}
1329.2276 -
1329.2277 -#if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000		// dwa 8/21/97  - "ambiguous access to overloaded function" bug.
1329.2278 -template <class _CharT, class _Alloc>
1329.2279 -inline _Rope_iterator<_CharT,_Alloc>
1329.2280 -operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2281 -          ptrdiff_t __n) {
1329.2282 -  return _Rope_iterator<_CharT,_Alloc>(
1329.2283 -                                       __x._M_root_rope, __x._M_current_pos - __n);
1329.2284 -}
1329.2285 -# endif
1329.2286 -
1329.2287 -template <class _CharT, class _Alloc>
1329.2288 -inline _Rope_iterator<_CharT,_Alloc>
1329.2289 -operator+(const _Rope_iterator<_CharT,_Alloc>& __x,
1329.2290 -          ptrdiff_t __n) {
1329.2291 -  return _Rope_iterator<_CharT,_Alloc>(
1329.2292 -                                       __x._M_root_rope, __x._M_current_pos + __n);
1329.2293 -}
1329.2294 -
1329.2295 -template <class _CharT, class _Alloc>
1329.2296 -inline _Rope_iterator<_CharT,_Alloc>
1329.2297 -operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) {
1329.2298 -  return _Rope_iterator<_CharT,_Alloc>(
1329.2299 -                                       __x._M_root_rope, __x._M_current_pos + __n);
1329.2300 -}
1329.2301 -
1329.2302 -template <class _CharT, class _Alloc>
1329.2303 -inline
1329.2304 -rope<_CharT,_Alloc>
1329.2305 -operator+ (const rope<_CharT,_Alloc>& __left,
1329.2306 -           const rope<_CharT,_Alloc>& __right)
1329.2307 -{
1329.2308 -  _STLP_ASSERT(__left.get_allocator() == __right.get_allocator())
1329.2309 -  return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_rep(__left._M_tree_ptr._M_data, __right._M_tree_ptr._M_data));
1329.2310 -  // Inlining this should make it possible to keep __left and
1329.2311 -  // __right in registers.
1329.2312 -}
1329.2313 -
1329.2314 -template <class _CharT, class _Alloc>
1329.2315 -inline
1329.2316 -rope<_CharT,_Alloc>&
1329.2317 -operator+= (rope<_CharT,_Alloc>& __left, 
1329.2318 -            const rope<_CharT,_Alloc>& __right)
1329.2319 -{
1329.2320 -  __left.append(__right);
1329.2321 -  return __left;
1329.2322 -}
1329.2323 -
1329.2324 -template <class _CharT, class _Alloc>
1329.2325 -inline
1329.2326 -rope<_CharT,_Alloc>
1329.2327 -operator+ (const rope<_CharT,_Alloc>& __left,
1329.2328 -           const _CharT* __right) {
1329.2329 -  size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right);
1329.2330 -  return rope<_CharT,_Alloc>(
1329.2331 -                             rope<_CharT,_Alloc>::_S_concat_char_iter(
1329.2332 -                                                                      __left._M_tree_ptr._M_data, __right, __rlen)); 
1329.2333 -}
1329.2334 -
1329.2335 -template <class _CharT, class _Alloc>
1329.2336 -inline
1329.2337 -rope<_CharT,_Alloc>&
1329.2338 -operator+= (rope<_CharT,_Alloc>& __left,
1329.2339 -            const _CharT* __right) {
1329.2340 -  __left.append(__right);
1329.2341 -  return __left;
1329.2342 -}
1329.2343 -
1329.2344 -template <class _CharT, class _Alloc>
1329.2345 -inline
1329.2346 -rope<_CharT,_Alloc>
1329.2347 -operator+ (const rope<_CharT,_Alloc>& __left, _STLP_SIMPLE_TYPE(_CharT) __right) {
1329.2348 -  return rope<_CharT,_Alloc>(
1329.2349 -                             rope<_CharT,_Alloc>::_S_concat_char_iter(
1329.2350 -                                                                      __left._M_tree_ptr._M_data, &__right, 1));
1329.2351 -}
1329.2352 -
1329.2353 -template <class _CharT, class _Alloc>
1329.2354 -inline
1329.2355 -rope<_CharT,_Alloc>&
1329.2356 -operator+= (rope<_CharT,_Alloc>& __left, _STLP_SIMPLE_TYPE(_CharT) __right) {
1329.2357 -  __left.append(__right);
1329.2358 -  return __left;
1329.2359 -}
1329.2360 -
1329.2361 -template <class _CharT, class _Alloc>
1329.2362 -inline bool
1329.2363 -operator< (const rope<_CharT,_Alloc>& __left, 
1329.2364 -           const rope<_CharT,_Alloc>& __right) {
1329.2365 -  return __left.compare(__right) < 0;
1329.2366 -}
1329.2367 -        
1329.2368 -template <class _CharT, class _Alloc>
1329.2369 -inline bool
1329.2370 -operator== (const rope<_CharT,_Alloc>& __left, 
1329.2371 -            const rope<_CharT,_Alloc>& __right) {
1329.2372 -  return __left.compare(__right) == 0;
1329.2373 -}
1329.2374 -
1329.2375 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1329.2376 -
1329.2377 -template <class _CharT, class _Alloc>
1329.2378 -inline bool
1329.2379 -operator!= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1329.2380 -  return !(__x == __y);
1329.2381 -}
1329.2382 -
1329.2383 -template <class _CharT, class _Alloc>
1329.2384 -inline bool
1329.2385 -operator> (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1329.2386 -  return __y < __x;
1329.2387 -}
1329.2388 -
1329.2389 -template <class _CharT, class _Alloc>
1329.2390 -inline bool
1329.2391 -operator<= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1329.2392 -  return !(__y < __x);
1329.2393 -}
1329.2394 -
1329.2395 -template <class _CharT, class _Alloc>
1329.2396 -inline bool
1329.2397 -operator>= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1329.2398 -  return !(__x < __y);
1329.2399 -}
1329.2400 -
1329.2401 -template <class _CharT, class _Alloc>
1329.2402 -inline bool operator!= (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
1329.2403 -                        const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
1329.2404 -  return !(__x == __y);
1329.2405 -}
1329.2406 -
1329.2407 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1329.2408 -
1329.2409 -template <class _CharT, class _Alloc>
1329.2410 -inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
1329.2411 -                        const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
1329.2412 -  return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root);
1329.2413 -}
1329.2414 -
1329.2415 -#ifdef _STLP_USE_NEW_IOSTREAMS
1329.2416 -template<class _CharT, class _Traits, class _Alloc>
1329.2417 -basic_ostream<_CharT, _Traits>& operator<< (
1329.2418 -                                            basic_ostream<_CharT, _Traits>& __o,
1329.2419 -                                            const rope<_CharT, _Alloc>& __r);
1329.2420 -#elif ! defined (_STLP_USE_NO_IOSTREAMS)
1329.2421 -template<class _CharT, class _Alloc>
1329.2422 -ostream& operator<< (ostream& __o, const rope<_CharT,_Alloc>& __r);        
1329.2423 -#endif
1329.2424 -        
1329.2425 -typedef rope<char, _STLP_DEFAULT_ALLOCATOR(char) > crope;
1329.2426 -# ifdef _STLP_HAS_WCHAR_T
1329.2427 -typedef rope<wchar_t, _STLP_DEFAULT_ALLOCATOR(wchar_t) > wrope;
1329.2428 -# endif
1329.2429 -
1329.2430 -inline crope::reference __mutable_reference_at(crope& __c, size_t __i)
1329.2431 -{
1329.2432 -  return __c.mutable_reference_at(__i);
1329.2433 -}
1329.2434 -
1329.2435 -# ifdef _STLP_HAS_WCHAR_T
1329.2436 -inline wrope::reference __mutable_reference_at(wrope& __c, size_t __i)
1329.2437 -{
1329.2438 -  return __c.mutable_reference_at(__i);
1329.2439 -}
1329.2440 -# endif
1329.2441 -
1329.2442 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1329.2443 -
1329.2444 -template <class _CharT, class _Alloc>
1329.2445 -inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) {
1329.2446 -  __x.swap(__y);
1329.2447 -}
1329.2448 -#else
1329.2449 -
1329.2450 -inline void swap(crope& __x, crope& __y) { __x.swap(__y); }
1329.2451 -# ifdef _STLP_HAS_WCHAR_T	// dwa 8/21/97
1329.2452 -inline void swap(wrope& __x, wrope& __y) { __x.swap(__y); }
1329.2453 -# endif
1329.2454 -
1329.2455 -#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1329.2456 -
1329.2457 -
1329.2458 -// Hash functions should probably be revisited later:
1329.2459 -_STLP_TEMPLATE_NULL struct hash<crope>
1329.2460 -{
1329.2461 -  size_t operator()(const crope& __str) const
1329.2462 -  {
1329.2463 -    size_t _p_size = __str.size();
1329.2464 -
1329.2465 -    if (0 == _p_size) return 0;
1329.2466 -    return 13*__str[0] + 5*__str[_p_size - 1] + _p_size;
1329.2467 -  }
1329.2468 -};
1329.2469 -
1329.2470 -# ifdef _STLP_HAS_WCHAR_T	// dwa 8/21/97
1329.2471 -_STLP_TEMPLATE_NULL struct hash<wrope>
1329.2472 -{
1329.2473 -  size_t operator()(const wrope& __str) const
1329.2474 -  {
1329.2475 -    size_t _p_size = __str.size();
1329.2476 -
1329.2477 -    if (0 == _p_size) return 0;
1329.2478 -    return 13*__str[0] + 5*__str[_p_size - 1] + _p_size;
1329.2479 -  }
1329.2480 -};
1329.2481 -#endif
1329.2482 -
1329.2483 -#ifndef _STLP_MSVC
1329.2484 -// I couldn't get this to work with VC++
1329.2485 -template<class _CharT,class _Alloc>
1329.2486 -void
1329.2487 -_Rope_rotate(_Rope_iterator<_CharT,_Alloc> __first,
1329.2488 -             _Rope_iterator<_CharT,_Alloc> __middle,
1329.2489 -             _Rope_iterator<_CharT,_Alloc> __last);
1329.2490 -
1329.2491 -#if !defined(__GNUC__)
1329.2492 -// Appears to confuse g++
1329.2493 -inline void rotate(_Rope_iterator<char,_STLP_DEFAULT_ALLOCATOR(char) > __first,
1329.2494 -                   _Rope_iterator<char,_STLP_DEFAULT_ALLOCATOR(char) > __middle,
1329.2495 -                   _Rope_iterator<char,_STLP_DEFAULT_ALLOCATOR(char) > __last) {
1329.2496 -  _Rope_rotate(__first, __middle, __last);
1329.2497 -}
1329.2498 -#endif
1329.2499 -
1329.2500 -#endif
1329.2501 -
1329.2502 -template <class _CharT, class _Alloc>
1329.2503 -inline _Rope_char_ref_proxy<_CharT, _Alloc>::operator _CharT () const
1329.2504 -{
1329.2505 -  if (_M_current_valid) {
1329.2506 -	return _M_current;
1329.2507 -  } else {
1329.2508 -    return _My_rope::_S_fetch(_M_root->_M_tree_ptr._M_data, _M_pos);
1329.2509 -  }
1329.2510 -}
1329.2511 -_STLP_END_NAMESPACE
1329.2512 -
1329.2513 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1329.2514 -#  include <stl/_rope.c>
1329.2515 -# endif
1329.2516 -
1329.2517 -# endif /* _STLP_INTERNAL_ROPE_H */
1329.2518 -
1329.2519 -// Local Variables:
1329.2520 -// mode:C++
1329.2521 -// End:
  1330.1 --- a/epoc32/include/stdapis/stlport/stl/_slist.c	Tue Mar 16 16:12:26 2010 +0000
  1330.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1330.3 @@ -1,179 +0,0 @@
  1330.4 -/*
  1330.5 - *
  1330.6 - * Copyright (c) 1996,1997
  1330.7 - * Silicon Graphics Computer Systems, Inc.
  1330.8 - *
  1330.9 - * Copyright (c) 1999 
 1330.10 - * Boris Fomitchev
 1330.11 - *
 1330.12 - * This material is provided "as is", with absolutely no warranty expressed
 1330.13 - * or implied. Any use is at your own risk.
 1330.14 - *
 1330.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1330.16 - * without fee, provided the above notices are retained on all copies.
 1330.17 - * Permission to modify the code and to distribute modified code is granted,
 1330.18 - * provided the above notices are retained, and a notice that the code was
 1330.19 - * modified is included with the above copyright notice.
 1330.20 - *
 1330.21 - */
 1330.22 -#ifndef _STLP_SLIST_C
 1330.23 -#define _STLP_SLIST_C
 1330.24 -
 1330.25 -#ifndef _STLP_INTERNAL_SLIST_H
 1330.26 -# include <stl/_slist.h>
 1330.27 -#endif
 1330.28 -
 1330.29 -# undef slist
 1330.30 -# define  slist  __WORKAROUND_DBG_RENAME(slist)
 1330.31 -# if defined (_STLP_NESTED_TYPE_PARAM_BUG) 
 1330.32 -#  define size_type          size_t
 1330.33 -# endif
 1330.34 -
 1330.35 -_STLP_BEGIN_NAMESPACE
 1330.36 -
 1330.37 -template <class _Tp, class _Alloc> 
 1330.38 -_Slist_node_base*
 1330.39 -_Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first,
 1330.40 -                                        _Slist_node_base* __last_node) {
 1330.41 -  _Slist_node<_Tp>* __cur = (_Slist_node<_Tp>*) (__before_first->_M_next);
 1330.42 -  while (__cur != __last_node) {
 1330.43 -    _Slist_node<_Tp>* __tmp = __cur;
 1330.44 -    __cur = (_Slist_node<_Tp>*) __cur->_M_next;
 1330.45 -    _STLP_STD::_Destroy(&__tmp->_M_data);
 1330.46 -    _M_head.deallocate(__tmp,1);
 1330.47 -  }
 1330.48 -  __before_first->_M_next = __last_node;
 1330.49 -  return __last_node;
 1330.50 -}
 1330.51 -
 1330.52 -template <class _Tp, class _Alloc>
 1330.53 -slist<_Tp,_Alloc>& slist<_Tp,_Alloc>::operator=(const slist<_Tp,_Alloc>& __x)
 1330.54 -{
 1330.55 -  if (&__x != this) {
 1330.56 -    _Node_base* __p1 = &this->_M_head._M_data;
 1330.57 -    _Node* __n1 = (_Node*) this->_M_head._M_data._M_next;
 1330.58 -    const _Node* __n2 = (const _Node*) __x._M_head._M_data._M_next;
 1330.59 -    while (__n1 && __n2) {
 1330.60 -      __n1->_M_data = __n2->_M_data;
 1330.61 -      __p1 = __n1;
 1330.62 -      __n1 = (_Node*) __n1->_M_next;
 1330.63 -      __n2 = (const _Node*) __n2->_M_next;
 1330.64 -    }
 1330.65 -    if (__n2 == 0)
 1330.66 -      this->_M_erase_after(__p1, 0);
 1330.67 -    else
 1330.68 -      _M_insert_after_range(__p1, const_iterator((_Node*)__n2), 
 1330.69 -                                  const_iterator(0));
 1330.70 -  }
 1330.71 -  return *this;
 1330.72 -}
 1330.73 -
 1330.74 -template <class _Tp, class _Alloc>
 1330.75 -void slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) {
 1330.76 -  _Node_base* __prev = &this->_M_head._M_data;
 1330.77 -  _Node* __node = (_Node*) this->_M_head._M_data._M_next;
 1330.78 -  for ( ; __node != 0 && __n > 0 ; --__n) {
 1330.79 -    __node->_M_data = __val;
 1330.80 -    __prev = __node;
 1330.81 -    __node = (_Node*) __node->_M_next;
 1330.82 -  }
 1330.83 -  if (__n > 0)
 1330.84 -    _M_insert_after_fill(__prev, __n, __val);
 1330.85 -  else
 1330.86 -    this->_M_erase_after(__prev, 0);
 1330.87 -}
 1330.88 -
 1330.89 -
 1330.90 -template <class _Tp, class _Alloc>
 1330.91 -void slist<_Tp,_Alloc>::resize(size_type __len, const _Tp& __x)
 1330.92 -{
 1330.93 -  _Node_base* __cur = &this->_M_head._M_data;
 1330.94 -  while (__cur->_M_next != 0 && __len > 0) {
 1330.95 -    --__len;
 1330.96 -    __cur = __cur->_M_next;
 1330.97 -  }
 1330.98 -  if (__cur->_M_next) 
 1330.99 -    this->_M_erase_after(__cur, 0);
1330.100 -  else
1330.101 -    _M_insert_after_fill(__cur, __len, __x);
1330.102 -}
1330.103 -
1330.104 -template <class _Tp, class _Alloc>
1330.105 -void slist<_Tp,_Alloc>::remove(const _Tp& __val)
1330.106 -{
1330.107 -  _Node_base* __cur = &this->_M_head._M_data;
1330.108 -  while (__cur && __cur->_M_next) {
1330.109 -    if (((_Node*) __cur->_M_next)->_M_data == __val)
1330.110 -      this->_M_erase_after(__cur);
1330.111 -    else
1330.112 -      __cur = __cur->_M_next;
1330.113 -  }
1330.114 -}
1330.115 -
1330.116 -template <class _Tp, class _Alloc> 
1330.117 -void slist<_Tp,_Alloc>::unique()
1330.118 -{
1330.119 -  _Node_base* __cur = this->_M_head._M_data._M_next;
1330.120 -  if (__cur) {
1330.121 -    while (__cur->_M_next) {
1330.122 -      if (((_Node*)__cur)->_M_data == 
1330.123 -          ((_Node*)(__cur->_M_next))->_M_data)
1330.124 -        this->_M_erase_after(__cur);
1330.125 -      else
1330.126 -        __cur = __cur->_M_next;
1330.127 -    }
1330.128 -  }
1330.129 -}
1330.130 -
1330.131 -template <class _Tp, class _Alloc>
1330.132 -void slist<_Tp,_Alloc>::merge(slist<_Tp,_Alloc>& __x)
1330.133 -{
1330.134 -  _Node_base* __n1 = &this->_M_head._M_data;
1330.135 -  while (__n1->_M_next && __x._M_head._M_data._M_next) {
1330.136 -    if (((_Node*) __x._M_head._M_data._M_next)->_M_data < 
1330.137 -        ((_Node*)       __n1->_M_next)->_M_data) 
1330.138 -      _Sl_global_inst::__splice_after(__n1, &__x._M_head._M_data, __x._M_head._M_data._M_next);
1330.139 -    __n1 = __n1->_M_next;
1330.140 -  }
1330.141 -  if (__x._M_head._M_data._M_next) {
1330.142 -    __n1->_M_next = __x._M_head._M_data._M_next;
1330.143 -    __x._M_head._M_data._M_next = 0;
1330.144 -  }
1330.145 -}
1330.146 -
1330.147 -template <class _Tp, class _Alloc>
1330.148 -void slist<_Tp,_Alloc>::sort()
1330.149 -{
1330.150 -  if (this->_M_head._M_data._M_next && this->_M_head._M_data._M_next->_M_next) {
1330.151 -    _Self __carry;
1330.152 -    _Self __counter[64];
1330.153 -    int __fill = 0;
1330.154 -    while (!empty()) {
1330.155 -      _Sl_global_inst::__splice_after(&__carry._M_head._M_data, &this->_M_head._M_data, this->_M_head._M_data._M_next);
1330.156 -      int __i = 0;
1330.157 -      while (__i < __fill && !__counter[__i].empty()) {
1330.158 -        __counter[__i].merge(__carry);
1330.159 -        __carry.swap(__counter[__i]);
1330.160 -        ++__i;
1330.161 -      }
1330.162 -      __carry.swap(__counter[__i]);
1330.163 -      if (__i == __fill)
1330.164 -        ++__fill;
1330.165 -    }
1330.166 -
1330.167 -    for (int __i = 1; __i < __fill; ++__i)
1330.168 -      __counter[__i].merge(__counter[__i-1]);
1330.169 -    this->swap(__counter[__fill-1]);
1330.170 -  }
1330.171 -}
1330.172 -
1330.173 -# undef slist
1330.174 -# undef size_type
1330.175 -
1330.176 -_STLP_END_NAMESPACE
1330.177 -
1330.178 -#endif /*  _STLP_SLIST_C */
1330.179 -
1330.180 -// Local Variables:
1330.181 -// mode:C++
1330.182 -// End:
  1331.1 --- a/epoc32/include/stdapis/stlport/stl/_slist_base.c	Tue Mar 16 16:12:26 2010 +0000
  1331.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1331.3 @@ -1,109 +0,0 @@
  1331.4 -/*
  1331.5 - *
  1331.6 - *
  1331.7 - * Copyright (c) 1994
  1331.8 - * Hewlett-Packard Company
  1331.9 - *
 1331.10 - * Copyright (c) 1996,1997
 1331.11 - * Silicon Graphics Computer Systems, Inc.
 1331.12 - *
 1331.13 - * Copyright (c) 1997
 1331.14 - * Moscow Center for SPARC Technology
 1331.15 - *
 1331.16 - * Copyright (c) 1999 
 1331.17 - * Boris Fomitchev
 1331.18 - *
 1331.19 - * This material is provided "as is", with absolutely no warranty expressed
 1331.20 - * or implied. Any use is at your own risk.
 1331.21 - *
 1331.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1331.23 - * without fee, provided the above notices are retained on all copies.
 1331.24 - * Permission to modify the code and to distribute modified code is granted,
 1331.25 - * provided the above notices are retained, and a notice that the code was
 1331.26 - * modified is included with the above copyright notice.
 1331.27 - *
 1331.28 - */
 1331.29 -#ifndef _STLP_SLIST_BASE_C
 1331.30 -#define _STLP_SLIST_BASE_C
 1331.31 -
 1331.32 -#ifndef _STLP_INTERNAL_SLIST_BASE_H
 1331.33 -# include <stl/_slist_base.h>
 1331.34 -#endif
 1331.35 -
 1331.36 -_STLP_BEGIN_NAMESPACE
 1331.37 -
 1331.38 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1331.39 -
 1331.40 -template <class _Dummy>
 1331.41 -_Slist_node_base*  _STLP_CALL
 1331.42 -_Sl_global<_Dummy>::__previous(_Slist_node_base* __head,
 1331.43 -			       const _Slist_node_base* __node)
 1331.44 -{
 1331.45 -  while (__head && __head->_M_next != __node)
 1331.46 -    __head = __head->_M_next;
 1331.47 -  return __head;
 1331.48 -}
 1331.49 -
 1331.50 -template <class _Dummy>
 1331.51 -void _STLP_CALL
 1331.52 -_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, _Slist_node_base* __head)
 1331.53 -{
 1331.54 -  _Slist_node_base* __before_last = __previous(__head, 0);
 1331.55 -  if (__before_last != __head) {
 1331.56 -    _Slist_node_base* __after = __pos->_M_next;
 1331.57 -    __pos->_M_next = __head->_M_next;
 1331.58 -    __head->_M_next = 0;
 1331.59 -    __before_last->_M_next = __after;
 1331.60 -  }
 1331.61 -}
 1331.62 -
 1331.63 -template <class _Dummy>
 1331.64 -void _STLP_CALL
 1331.65 -_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos,
 1331.66 -				   _Slist_node_base* __before_first,
 1331.67 -				   _Slist_node_base* __before_last)
 1331.68 -{
 1331.69 -  if (__pos != __before_first && __pos != __before_last) {
 1331.70 -    _Slist_node_base* __first = __before_first->_M_next;
 1331.71 -    _Slist_node_base* __after = __pos->_M_next;
 1331.72 -    __before_first->_M_next = __before_last->_M_next;
 1331.73 -    __pos->_M_next = __first;
 1331.74 -    __before_last->_M_next = __after;
 1331.75 -  }
 1331.76 -}
 1331.77 -
 1331.78 -template <class _Dummy>
 1331.79 -_Slist_node_base* _STLP_CALL
 1331.80 -_Sl_global<_Dummy>::__reverse(_Slist_node_base* __node)
 1331.81 -{
 1331.82 -  _Slist_node_base* __result = __node;
 1331.83 -  __node = __node->_M_next;
 1331.84 -  __result->_M_next = 0;
 1331.85 -  while(__node) {
 1331.86 -    _Slist_node_base* __next = __node->_M_next;
 1331.87 -    __node->_M_next = __result;
 1331.88 -    __result = __node;
 1331.89 -    __node = __next;
 1331.90 -  }
 1331.91 -  return __result;
 1331.92 -}
 1331.93 -
 1331.94 -template <class _Dummy> 
 1331.95 -size_t _STLP_CALL
 1331.96 -_Sl_global<_Dummy>::size(_Slist_node_base* __node)
 1331.97 -{
 1331.98 -  size_t __result = 0;
 1331.99 -  for ( ; __node != 0; __node = __node->_M_next)
1331.100 -    ++__result;
1331.101 -  return __result;
1331.102 -}
1331.103 -
1331.104 -#endif /* defined (__BUILDING_STLPORT) || ! defined (_STLP_OWN_IOSTREAMS) */
1331.105 -
1331.106 -_STLP_END_NAMESPACE
1331.107 -
1331.108 -#endif /*  _STLP_SLIST_BASE_C */
1331.109 -
1331.110 -// Local Variables:
1331.111 -// mode:C++
1331.112 -// End:
  1332.1 --- a/epoc32/include/stdapis/stlport/stl/_slist_base.h	Tue Mar 16 16:12:26 2010 +0000
  1332.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1332.3 @@ -1,87 +0,0 @@
  1332.4 -/*
  1332.5 - *
  1332.6 - * Copyright (c) 1996,1997
  1332.7 - * Silicon Graphics Computer Systems, Inc.
  1332.8 - *
  1332.9 - * Copyright (c) 1997
 1332.10 - * Moscow Center for SPARC Technology
 1332.11 - *
 1332.12 - * Copyright (c) 1999 
 1332.13 - * Boris Fomitchev
 1332.14 - *
 1332.15 - * This material is provided "as is", with absolutely no warranty expressed
 1332.16 - * or implied. Any use is at your own risk.
 1332.17 - *
 1332.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1332.19 - * without fee, provided the above notices are retained on all copies.
 1332.20 - * Permission to modify the code and to distribute modified code is granted,
 1332.21 - * provided the above notices are retained, and a notice that the code was
 1332.22 - * modified is included with the above copyright notice.
 1332.23 - *
 1332.24 - */
 1332.25 -
 1332.26 -/* NOTE: This is an internal header file, included by other STL headers.
 1332.27 - *   You should not attempt to use it directly.
 1332.28 - */
 1332.29 -
 1332.30 -#ifndef _STLP_INTERNAL_SLIST_BASE_H
 1332.31 -#define _STLP_INTERNAL_SLIST_BASE_H
 1332.32 -
 1332.33 -#ifndef _STLP_CSTDDEF
 1332.34 -#include <cstddef>
 1332.35 -#endif
 1332.36 -
 1332.37 -_STLP_BEGIN_NAMESPACE 
 1332.38 -
 1332.39 -struct _Slist_node_base
 1332.40 -{
 1332.41 -  _Slist_node_base* _M_next;
 1332.42 -};
 1332.43 -
 1332.44 -inline _Slist_node_base*
 1332.45 -__slist_make_link(_Slist_node_base* __prev_node,
 1332.46 -                  _Slist_node_base* __new_node)
 1332.47 -{
 1332.48 -  __new_node->_M_next = __prev_node->_M_next;
 1332.49 -  __prev_node->_M_next = __new_node;
 1332.50 -  return __new_node;
 1332.51 -}
 1332.52 -
 1332.53 -
 1332.54 -template <class _Dummy>
 1332.55 -class _Sl_global {
 1332.56 -public:
 1332.57 -  // those used to be global functions 
 1332.58 -  // moved here to reduce code bloat without templatizing _Slist_iterator_base
 1332.59 -  static size_t _STLP_CALL size(_Slist_node_base* __node);
 1332.60 -  static _Slist_node_base* _STLP_CALL __reverse(_Slist_node_base* __node);
 1332.61 -  static void _STLP_CALL __splice_after(_Slist_node_base* __pos,
 1332.62 -                                        _Slist_node_base* __before_first,
 1332.63 -                                        _Slist_node_base* __before_last);
 1332.64 -  
 1332.65 -  static void _STLP_CALL __splice_after(_Slist_node_base* __pos, _Slist_node_base* __head);
 1332.66 -
 1332.67 -  static _Slist_node_base* _STLP_CALL __previous(_Slist_node_base* __head,
 1332.68 -                                                 const _Slist_node_base* __node);
 1332.69 -  static const _Slist_node_base* _STLP_CALL __previous(const _Slist_node_base* __head,
 1332.70 -					    const _Slist_node_base* __node) {
 1332.71 -    return _Sl_global<_Dummy>::__previous((_Slist_node_base*)__head, __node);
 1332.72 -  }
 1332.73 -};
 1332.74 -
 1332.75 -# if defined (_STLP_USE_TEMPLATE_EXPORT) 
 1332.76 -_STLP_EXPORT_TEMPLATE_CLASS _Sl_global<bool>;
 1332.77 -# endif
 1332.78 -typedef _Sl_global<bool> _Sl_global_inst;
 1332.79 -
 1332.80 -_STLP_END_NAMESPACE
 1332.81 -
 1332.82 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
 1332.83 -#  include <stl/_slist_base.c>
 1332.84 -# endif
 1332.85 -
 1332.86 -#endif /* _STLP_INTERNAL_SLIST_BASE_H */
 1332.87 -
 1332.88 -// Local Variables:
 1332.89 -// mode:C++
 1332.90 -// End:
  1333.1 --- a/epoc32/include/stdapis/stlport/stl/_sstream.c	Tue Mar 16 16:12:26 2010 +0000
  1333.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1333.3 @@ -1,671 +0,0 @@
  1333.4 -/*
  1333.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1333.6 - * Copyright (c) 1999
  1333.7 - * Silicon Graphics Computer Systems, Inc.
  1333.8 - *
  1333.9 - * Copyright (c) 1999 
 1333.10 - * Boris Fomitchev
 1333.11 - *
 1333.12 - * This material is provided "as is", with absolutely no warranty expressed
 1333.13 - * or implied. Any use is at your own risk.
 1333.14 - *
 1333.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1333.16 - * without fee, provided the above notices are retained on all copies.
 1333.17 - * Permission to modify the code and to distribute modified code is granted,
 1333.18 - * provided the above notices are retained, and a notice that the code was
 1333.19 - * modified is included with the above copyright notice.
 1333.20 - *
 1333.21 - */ 
 1333.22 -
 1333.23 -#ifndef _STLP_SSTREAM_C
 1333.24 -#define _STLP_SSTREAM_C
 1333.25 -
 1333.26 -#ifndef _STLP_SSTREAM_H
 1333.27 -# include <stl/_sstream.h>
 1333.28 -#include <stl/_stdio_file.h> 
 1333.29 -#endif
 1333.30 -
 1333.31 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1333.32 -
 1333.33 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1333.34 -// no wint_t is supported for this mode
 1333.35 -# define __BSB_int_type__ int
 1333.36 -# define __BSB_pos_type__ streampos
 1333.37 -# else
 1333.38 -# define __BSB_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
 1333.39 -# define __BSB_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
 1333.40 -# endif
 1333.41 -
 1333.42 -_STLP_BEGIN_NAMESPACE
 1333.43 -
 1333.44 -//----------------------------------------------------------------------
 1333.45 -// Non-inline stringbuf member functions.
 1333.46 -
 1333.47 -// Constructors.  Note that the base class constructor sets all of the
 1333.48 -// get and area pointers to null.
 1333.49 -
 1333.50 -template <class _CharT, class _Traits, class _Alloc>
 1333.51 -_STLP_EXP_DECLSPEC basic_stringbuf<_CharT, _Traits, _Alloc>
 1333.52 -  ::basic_stringbuf(ios_base::openmode __mode)
 1333.53 -    : basic_streambuf<_CharT, _Traits>(), _M_mode(__mode), _M_str()
 1333.54 -{
 1333.55 -#ifdef __SYMBIAN32__
 1333.56 -if (_M_mode & ios_base::out) {
 1333.57 -   if (_M_mode & (ios_base::app | ios_base::ate))
 1333.58 -       //increment the streampos to reflect the current streampos while writing
 1333.59 -       _M_str._M_stream_pos += _M_str.size();
 1333.60 -}
 1333.61 -#endif
 1333.62 -}
 1333.63 -
 1333.64 -template <class _CharT, class _Traits, class _Alloc>
 1333.65 -_STLP_EXP_DECLSPEC basic_stringbuf<_CharT, _Traits, _Alloc>
 1333.66 -  ::basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __s, ios_base::openmode __mode)
 1333.67 -    : basic_streambuf<_CharT, _Traits>(), _M_mode(__mode), _M_str(__s)
 1333.68 -{
 1333.69 -#ifdef __SYMBIAN32__
 1333.70 -if (_M_mode & ios_base::out) {
 1333.71 -   if (_M_mode & (ios_base::app | ios_base::ate))
 1333.72 -     //increment the streampos to reflect the current streampos while writing
 1333.73 -     _M_str._M_stream_pos += _M_str.size();
 1333.74 -}
 1333.75 -#endif
 1333.76 -  _M_set_ptrs();
 1333.77 -}
 1333.78 -
 1333.79 -template <class _CharT, class _Traits, class _Alloc>
 1333.80 -_STLP_EXP_DECLSPEC basic_stringbuf<_CharT, _Traits, _Alloc>::~basic_stringbuf()
 1333.81 -{}
 1333.82 -
 1333.83 -// Set the underlying string to a new value.
 1333.84 -template <class _CharT, class _Traits, class _Alloc>
 1333.85 -_STLP_EXP_DECLSPEC void 
 1333.86 -basic_stringbuf<_CharT, _Traits, _Alloc>::str(const basic_string<_CharT, _Traits, _Alloc>& __s)
 1333.87 -{
 1333.88 -  _M_str = __s;
 1333.89 -  _M_set_ptrs();
 1333.90 -}
 1333.91 -
 1333.92 -template <class _CharT, class _Traits, class _Alloc>
 1333.93 -void 
 1333.94 -basic_stringbuf<_CharT, _Traits, _Alloc>::_M_set_ptrs() {
 1333.95 -  _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
 1333.96 -  _CharT* __data_end = __data_ptr + _M_str.size();
 1333.97 -  // The initial read position is the beginning of the string.
 1333.98 -  if (_M_mode & ios_base::in) {
 1333.99 -    if (_M_mode & ios_base::ate)
1333.100 -      this->setg(__data_ptr, __data_end, __data_end);
1333.101 -    else
1333.102 -      this->setg(__data_ptr, __data_ptr, __data_end);
1333.103 -  }
1333.104 -  
1333.105 -  // The initial write position is the beginning of the string.
1333.106 -  if (_M_mode & ios_base::out) {
1333.107 -    if (_M_mode & (ios_base::app | ios_base::ate))
1333.108 -      this->setp(__data_end, __data_end);
1333.109 -    else
1333.110 -      this->setp(__data_ptr, __data_end);
1333.111 -  }
1333.112 -}
1333.113 -
1333.114 -// Precondition: gptr() >= egptr().  Returns a character, if one is available.
1333.115 -template <class _CharT, class _Traits, class _Alloc>
1333.116 -_STLP_EXP_DECLSPEC __BSB_int_type__
1333.117 -basic_stringbuf<_CharT, _Traits, _Alloc>::underflow()
1333.118 -{
1333.119 -  return this->gptr() != this->egptr()
1333.120 -    ? _Traits::to_int_type(*this->gptr())
1333.121 -    : _Traits::eof();
1333.122 -}
1333.123 -
1333.124 -// Precondition: gptr() >= egptr().
1333.125 -template <class _CharT, class _Traits, class _Alloc>
1333.126 -_STLP_EXP_DECLSPEC __BSB_int_type__
1333.127 -basic_stringbuf<_CharT, _Traits, _Alloc>::uflow()
1333.128 -{
1333.129 -  if (this->gptr() != this->egptr()) {
1333.130 -    int_type __c = _Traits::to_int_type(*this->gptr());
1333.131 -    this->gbump(1);
1333.132 -    return __c;
1333.133 -  }
1333.134 -  else
1333.135 -    return _Traits::eof();
1333.136 -}
1333.137 -
1333.138 -template <class _CharT, class _Traits, class _Alloc>
1333.139 -_STLP_EXP_DECLSPEC __BSB_int_type__
1333.140 -basic_stringbuf<_CharT, _Traits, _Alloc>::pbackfail(int_type __c)
1333.141 -{
1333.142 -  if (this->gptr() != this->eback()) {
1333.143 -    if (!_Traits::eq_int_type(__c, _Traits::eof())) {
1333.144 -
1333.145 -if (_Traits::eq(_Traits::to_char_type(__c), this->gptr()[-1])
1333.146 -      		|| _M_mode == (ios_base::in | ios_base::out)) {
1333.147 -        this->gbump(-1);
1333.148 -      	*this->gptr() = _Traits::to_char_type(__c);
1333.149 -      	return _Traits::not_eof(__c);
1333.150 -      }
1333.151 -      else{
1333.152 -	  	return _Traits::eof();
1333.153 -	  }
1333.154 -    }
1333.155 -    else {
1333.156 -      this->gbump(-1);
1333.157 -      return _Traits::not_eof(__c);
1333.158 -    }
1333.159 -  }
1333.160 -	else
1333.161 -    return _Traits::eof();
1333.162 -}
1333.163 -
1333.164 -template <class _CharT, class _Traits, class _Alloc>
1333.165 -_STLP_EXP_DECLSPEC __BSB_int_type__
1333.166 -basic_stringbuf<_CharT, _Traits, _Alloc>::overflow(int_type __c)
1333.167 -{
1333.168 -  // fbp : reverse order of "ifs" to pass Dietmar's test.
1333.169 -  // Apparently, standard allows overflow with eof even for read-only streams.
1333.170 -  if (!_Traits::eq_int_type(__c, _Traits::eof())) {
1333.171 -    if (_M_mode & ios_base::out) {
1333.172 -      if (!(_M_mode & ios_base::in)) {
1333.173 -        // It's a write-only streambuf, so we can use special append buffer.
1333.174 -        if (this->pptr() == this->epptr())
1333.175 -          this->_M_append_buffer();
1333.176 -      
1333.177 -        if (this->pptr() != this->epptr()) {
1333.178 -          *this->pptr() = _Traits::to_char_type(__c);
1333.179 -          this->pbump(1);
1333.180 -          return __c;
1333.181 -        }
1333.182 -        else
1333.183 -          return _Traits::eof();
1333.184 -      }
1333.185 -
1333.186 -      else {
1333.187 -        // We're not using a special append buffer, just the string itself.
1333.188 -        if (this->pptr() == this->epptr()) {
1333.189 -          ptrdiff_t __offset = this->gptr() - this->eback();
1333.190 -          _M_str.push_back(_Traits::to_char_type(__c));
1333.191 -
1333.192 -	  _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1333.193 -	  size_t __data_size = _M_str.size();
1333.194 -
1333.195 -          this->setg(__data_ptr, __data_ptr + __offset, __data_ptr+__data_size);
1333.196 -          this->setp(__data_ptr, __data_ptr + __data_size);
1333.197 -          this->pbump((int)__data_size);
1333.198 -          return __c;
1333.199 -        }
1333.200 -        else {
1333.201 -          *this->pptr() = _Traits::to_char_type(__c);
1333.202 -          this->pbump(1);
1333.203 -          return __c;
1333.204 -        }
1333.205 -      }
1333.206 -    }
1333.207 -    else                          // Overflow always fails if it's read-only 
1333.208 -      return _Traits::eof();
1333.209 -  }
1333.210 -  else                        // __c is EOF, so we don't have to do anything
1333.211 -    return _Traits::not_eof(__c);
1333.212 -}
1333.213 -
1333.214 -template <class _CharT, class _Traits, class _Alloc>
1333.215 -_STLP_EXP_DECLSPEC streamsize 
1333.216 -basic_stringbuf<_CharT, _Traits, _Alloc>::xsputn(const char_type* __s,
1333.217 -                                                 streamsize __n)
1333.218 -{
1333.219 -  streamsize __nwritten = 0;
1333.220 -
1333.221 -  if ((_M_mode & ios_base::out) && __n > 0) {
1333.222 -    // If the put pointer is somewhere in the middle of the string,
1333.223 -    // then overwrite instead of append.
1333.224 -    if (this->pbase() == _M_str.data() ) {
1333.225 -      ptrdiff_t __avail = _M_str.data() + _M_str.size() - this->pptr();
1333.226 -      if (__avail > __n) {
1333.227 -        _Traits::copy(this->pptr(), __s, __n);
1333.228 -        this->pbump((int)__n);
1333.229 -#ifdef __SYMBIAN32__
1333.230 -   //     _M_str._M_stream_pos += __n; //increment streampos to number of characters in stream
1333.231 -#endif
1333.232 -        return __n;
1333.233 -      }
1333.234 -      else {
1333.235 -        _Traits::copy(this->pptr(), __s, __avail);
1333.236 -        __nwritten += __avail;
1333.237 -        __n -= __avail;
1333.238 -        __s += __avail;
1333.239 -#ifdef __SYMBIAN32__
1333.240 -  //      _M_str._M_stream_pos += __avail;//increment streampos to number of characters in stream
1333.241 -#endif
1333.242 -        this->setp(_M_Buf, _M_Buf + __STATIC_CAST(int,_S_BufSiz));
1333.243 -      }
1333.244 -    }
1333.245 -
1333.246 -    // At this point we know we're appending.
1333.247 -    if (_M_mode & ios_base::in) {
1333.248 -      ptrdiff_t __get_offset = this->gptr() - this->eback();
1333.249 -      _M_str.append(__s, __s + __n);
1333.250 -      
1333.251 -      _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1333.252 -      size_t __data_size = _M_str.size();
1333.253 -
1333.254 -      this->setg(__data_ptr, __data_ptr + __get_offset, __data_ptr+__data_size);
1333.255 -      this->setp(__data_ptr, __data_ptr + __data_size);
1333.256 -      this->pbump((int)__data_size);
1333.257 -    }
1333.258 -    else {
1333.259 -      _M_append_buffer();
1333.260 -#ifdef __SYMBIAN32__      
1333.261 -      if (_M_str._M_stream_pos >= 0 
1333.262 -          && (_M_str._M_stream_pos < _M_str.size())) {          
1333.263 -          if((_M_str.size() - _M_str._M_stream_pos) >= __n)
1333.264 -          	_M_str.replace(_M_str._M_stream_pos, __n, __s);          
1333.265 -          else
1333.266 -          	{
1333.267 -          	_M_str.replace(_M_str._M_stream_pos, (_M_str.size() - _M_str._M_stream_pos), __s);
1333.268 -          	_M_str.append(__s + (__n - (_M_str.size() - _M_str._M_stream_pos)), __s + __n);
1333.269 -          	}
1333.270 -      } else {
1333.271 -          _M_str.append(__s, __s + __n);
1333.272 -      }
1333.273 -      _M_str._M_stream_pos += __n;
1333.274 -#else //__SYMBIAN32__      
1333.275 -      _M_str.append(__s, __s + __n);
1333.276 -#endif // __SYMBIAN32__      
1333.277 -    }
1333.278 -    __nwritten += __n;
1333.279 -  }
1333.280 -
1333.281 -  return __nwritten;
1333.282 -}
1333.283 -
1333.284 -template <class _CharT, class _Traits, class _Alloc>
1333.285 -streamsize 
1333.286 -basic_stringbuf<_CharT, _Traits, _Alloc>::_M_xsputnc(char_type __c,
1333.287 -                                                     streamsize __n)
1333.288 -{
1333.289 -  streamsize __nwritten = 0;
1333.290 -
1333.291 -  if ((_M_mode & ios_base::out) && __n > 0) {
1333.292 -    // If the put pointer is somewhere in the middle of the string,
1333.293 -    // then overwrite instead of append.
1333.294 -    if (this->pbase() == _M_str.data()) {
1333.295 -      ptrdiff_t __avail = _M_str.data() + _M_str.size() - this->pptr();
1333.296 -      if (__avail > __n) {
1333.297 -        _Traits::assign(this->pptr(), __n, __c);
1333.298 -        this->pbump((int)__n);
1333.299 -        return __n;
1333.300 -      }
1333.301 -      else {
1333.302 -        _Traits::assign(this->pptr(), __avail, __c);
1333.303 -        __nwritten += __avail;
1333.304 -        __n -= __avail;
1333.305 -        this->setp(_M_Buf, _M_Buf + __STATIC_CAST(int,_S_BufSiz));
1333.306 -      }
1333.307 -    }
1333.308 -
1333.309 -    // At this point we know we're appending.
1333.310 -    if (this->_M_mode & ios_base::in) {
1333.311 -      ptrdiff_t __get_offset = this->gptr() - this->eback();
1333.312 -      _M_str.append(__n, __c);
1333.313 -
1333.314 -      _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1333.315 -      size_t __data_size = _M_str.size();
1333.316 -
1333.317 -      this->setg(__data_ptr, __data_ptr + __get_offset, __data_ptr+__data_size);
1333.318 -      this->setp(__data_ptr, __data_ptr + __data_size);
1333.319 -      this->pbump((int)__data_size);
1333.320 -
1333.321 -    }
1333.322 -    else {
1333.323 -      _M_append_buffer();
1333.324 -//      _M_str.append(__n, __c);
1333.325 -#ifdef __SYMBIAN32__      
1333.326 -      if (_M_str._M_stream_pos >= 0 
1333.327 -          && (_M_str._M_stream_pos < _M_str.size())) {          
1333.328 -          if((_M_str.size() - _M_str._M_stream_pos) >= __n)
1333.329 -          	_M_str.replace(_M_str._M_stream_pos,__n, __n, __c);          
1333.330 -          else
1333.331 -          	{
1333.332 -          	_M_str.replace(_M_str._M_stream_pos, (_M_str.size() - _M_str._M_stream_pos), (_M_str.size() - _M_str._M_stream_pos), __c);
1333.333 -          	_M_str.append(__n, __c);
1333.334 -          	}
1333.335 -      } else {
1333.336 -          _M_str.append(__n, __c);
1333.337 -      }
1333.338 -      _M_str._M_stream_pos += __n;
1333.339 -#else //__SYMBIAN32__      
1333.340 -      _M_str.append(__n, __c);
1333.341 -#endif // __SYMBIAN32__      
1333.342 -    }
1333.343 -
1333.344 -    __nwritten += __n;
1333.345 -  }
1333.346 -
1333.347 -  return __nwritten;
1333.348 -}
1333.349 -
1333.350 -// According to the C++ standard the effects of setbuf are implementation
1333.351 -// defined, except that setbuf(0, 0) has no effect.  In this implementation,
1333.352 -// setbuf(<anything>, n), for n > 0, calls reserve(n) on the underlying
1333.353 -// string.
1333.354 -template <class _CharT, class _Traits, class _Alloc>
1333.355 -_STLP_EXP_DECLSPEC basic_streambuf<_CharT, _Traits>*
1333.356 -#ifdef __SYMBIAN32__
1333.357 -basic_stringbuf<_CharT, _Traits, _Alloc>::setbuf(_CharT* __s, streamsize __n)
1333.358 -#else
1333.359 -basic_stringbuf<_CharT, _Traits, _Alloc>::setbuf(_CharT*, streamsize __n)
1333.360 -#endif //__SYMBIAN32__
1333.361 -{
1333.362 -  if (__n > 0) {
1333.363 -    bool __do_get_area = false;
1333.364 -    bool __do_put_area = false;
1333.365 -    ptrdiff_t __offg = 0;
1333.366 -    ptrdiff_t __offp = 0;
1333.367 -
1333.368 -    if (this->pbase() == _M_str.data()) {
1333.369 -      __do_put_area = true;
1333.370 -      __offp = this->pptr() - this->pbase();
1333.371 -    }
1333.372 -
1333.373 -    if (this->eback() == _M_str.data()) {
1333.374 -      __do_get_area = true;
1333.375 -      __offg = this->gptr() - this->eback();
1333.376 -    }
1333.377 -
1333.378 -    if ((_M_mode & ios_base::out) && !(_M_mode & ios_base::in))
1333.379 -      _M_append_buffer();
1333.380 -
1333.381 -    _M_str.reserve(__n);
1333.382 -
1333.383 -    _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1333.384 -#ifdef __SYMBIAN32__
1333.385 -    size_t __data_size = __n;
1333.386 -    memmove(__data_ptr, __s, __n*sizeof(_CharT));    
1333.387 -    _M_str._M_start = __data_ptr;
1333.388 -    _M_str._M_finish = __data_ptr+__n;
1333.389 -#else
1333.390 -    size_t __data_size = _M_str.size();
1333.391 -#endif //__SYMBIAN32__
1333.392 -
1333.393 -    if (__do_get_area) {
1333.394 -#ifdef __SYMBIAN32__
1333.395 -      this->setg(__data_ptr, __data_ptr, __data_ptr+__data_size);
1333.396 -#else
1333.397 -      this->setg(__data_ptr, __data_ptr + __offg, __data_ptr+__data_size);
1333.398 -#endif //__SYMBIAN32__      
1333.399 -    }
1333.400 -
1333.401 -    if (__do_put_area) {
1333.402 -      this->setp(__data_ptr, __data_ptr+__data_size);
1333.403 -#ifndef __SYMBIAN32__
1333.404 -      this->pbump((int)__offp);
1333.405 -#endif //__SYMBIAN32__      
1333.406 -    }
1333.407 -  }
1333.408 -
1333.409 -  return this;
1333.410 -}
1333.411 -
1333.412 -template <class _CharT, class _Traits, class _Alloc>
1333.413 -_STLP_EXP_DECLSPEC __BSB_pos_type__
1333.414 -basic_stringbuf<_CharT, _Traits, _Alloc>::seekoff(off_type __off, 
1333.415 -            ios_base::seekdir __dir,
1333.416 -            ios_base::openmode __mode)
1333.417 -{
1333.418 -  bool __stl_in  = false;
1333.419 -  bool __stl_out = false;
1333.420 -  
1333.421 -  if ((__mode & (ios_base::in | ios_base::out)) == (ios_base::in | ios_base::out) ) {
1333.422 -    if (__dir == ios_base::beg || __dir == ios_base::end)
1333.423 -      __stl_in = __stl_out = true;
1333.424 -  }
1333.425 -  else if (__mode & ios_base::in)
1333.426 -    __stl_in = true;
1333.427 -  else if (__mode & ios_base::out)
1333.428 -    __stl_out = true;
1333.429 -
1333.430 -  if (!__stl_in && !__stl_out)
1333.431 -    return pos_type(off_type(-1));
1333.432 -  else if ((__stl_in  && (!(_M_mode & ios_base::in) || this->gptr() == 0)) ||
1333.433 -           (__stl_out && (!(_M_mode & ios_base::out) || this->pptr() == 0)))
1333.434 -    return pos_type(off_type(-1));
1333.435 -
1333.436 -#ifdef __SYMBIAN32__
1333.437 -  if (_M_mode & ios_base::out)
1333.438 -#else
1333.439 -  if ((_M_mode & ios_base::out) && !(_M_mode & ios_base::in))
1333.440 -#endif
1333.441 -    _M_append_buffer();
1333.442 -
1333.443 -  streamoff __newoff;
1333.444 -  switch(__dir) {
1333.445 -  case ios_base::beg:
1333.446 -    __newoff = 0;
1333.447 -    break;
1333.448 -  case ios_base::end:
1333.449 -    __newoff = _M_str.size();
1333.450 -    break;
1333.451 -  case ios_base::cur:
1333.452 -    __newoff = __stl_in ? this->gptr() - this->eback() 
1333.453 -#ifdef __SYMBIAN32__    
1333.454 -                    : ((this->pbase() != this->_M_str) ? _M_str._M_stream_pos
1333.455 -                    : this->pptr() - this->pbase());
1333.456 -#else
1333.457 -                    : this->pptr() - this->pbase();
1333.458 -#endif //__SYMBIAN32__                                                            
1333.459 -    break;
1333.460 -  default:
1333.461 -    return pos_type(off_type(-1));
1333.462 -  }
1333.463 -
1333.464 -  __off += __newoff;
1333.465 -
1333.466 -  if (__stl_in) {
1333.467 -    ptrdiff_t __n = this->egptr() - this->eback();
1333.468 -
1333.469 -    if (__off < 0 || __off > __n)
1333.470 -      return pos_type(off_type(-1));
1333.471 -    else
1333.472 -      this->setg(this->eback(), this->eback() + __off, this->eback() + __n);
1333.473 -  }
1333.474 -
1333.475 -  if (__stl_out) {
1333.476 -    ptrdiff_t __n;
1333.477 -#ifdef __SYMBIAN32__
1333.478 -    //if (this->pbase() != this->_M_str) {
1333.479 -    void* __data_ptr1 = reinterpret_cast<void*>(this->pbase());
1333.480 -		_CharT* __data_ptr2 = __CONST_CAST(_CharT*,this->_M_str.data());
1333.481 -				
1333.482 -       if (__data_ptr1 != __data_ptr2) {
1333.483 -        __n = _M_str.size();
1333.484 -    } else {
1333.485 -#endif // __SYMBIAN32__
1333.486 -    __n = this->epptr() - this->pbase();
1333.487 -#ifdef __SYMBIAN32__
1333.488 -    }
1333.489 -#endif //__SYMBIAN32__        
1333.490 -    if (__off < 0 || __off > __n)
1333.491 -      return pos_type(off_type(-1));
1333.492 -    else {
1333.493 -#ifdef __SYMBIAN32__
1333.494 -		void* __data_ptr1 = reinterpret_cast<void*>(this->pbase());
1333.495 -		_CharT* __data_ptr2 = __CONST_CAST(_CharT*,this->_M_str.data());
1333.496 -				
1333.497 -       if (__data_ptr1 != __data_ptr2) {
1333.498 -           _M_str._M_stream_pos = __off;
1333.499 -       } else {
1333.500 -#endif //__SYMBIAN32__
1333.501 -      this->setp(this->pbase(), this->pbase() + __n);
1333.502 -      this->pbump((int)__off);
1333.503 -#ifdef __SYMBIAN32__      
1333.504 -      }
1333.505 -#endif // __SYMBIAN32__      
1333.506 -    }
1333.507 -  }
1333.508 -
1333.509 -  return pos_type(__off);
1333.510 -}
1333.511 -
1333.512 -template <class _CharT, class _Traits, class _Alloc>
1333.513 -_STLP_EXP_DECLSPEC __BSB_pos_type__
1333.514 -basic_stringbuf<_CharT, _Traits, _Alloc>
1333.515 -  ::seekpos(pos_type __pos, ios_base::openmode __mode)
1333.516 -{
1333.517 -  bool __stl_in  = (__mode & ios_base::in) != 0;
1333.518 -  bool __stl_out = (__mode & ios_base::out) != 0;
1333.519 -
1333.520 -  if ((__stl_in  && (!(_M_mode & ios_base::in) || this->gptr() == 0)) ||
1333.521 -      (__stl_out && (!(_M_mode & ios_base::out) || this->pptr() == 0)) ||
1333.522 -      (!__stl_in && !__stl_out))
1333.523 -    return pos_type(off_type(-1));
1333.524 -
1333.525 -  const off_type __n = __pos - pos_type(off_type(0));
1333.526 -  if ((_M_mode & ios_base::out) && !(_M_mode & ios_base::in))
1333.527 -    _M_append_buffer();
1333.528 -
1333.529 -  if (__stl_in) {
1333.530 -    if (__n < 0 || __n > this->egptr() - this->eback())
1333.531 -      return pos_type(off_type(-1));
1333.532 -    this->setg(this->eback(), this->eback() + __n, this->egptr());
1333.533 -  }
1333.534 -
1333.535 -  if (__stl_out) {
1333.536 -    if (__n < 0 || size_t(__n) > _M_str.size())
1333.537 -      return pos_type(off_type(-1));
1333.538 -
1333.539 -    _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1333.540 -    size_t __data_size = _M_str.size();
1333.541 -    
1333.542 -    this->setp(__data_ptr, __data_ptr+__data_size);
1333.543 -    this->pbump((int)__n);
1333.544 -  }
1333.545 -
1333.546 -  return __pos;
1333.547 -}
1333.548 -
1333.549 -// This is declared as a const member function because it is 
1333.550 -// called by basic_stringbuf<>::str().  Precondition: this is a
1333.551 -// write-only stringbuf.  We can't use an output buffer for read-
1333.552 -// write stringbufs.  Postcondition: pptr is reset to the beginning
1333.553 -// of the buffer.
1333.554 -template <class _CharT, class _Traits, class _Alloc>
1333.555 -void basic_stringbuf<_CharT, _Traits, _Alloc>::_M_append_buffer() const
1333.556 -
1333.557 -{
1333.558 -  // Do we have a buffer to append?
1333.559 -  if (this->pbase() == this->_M_Buf && this->pptr() != this->_M_Buf) {
1333.560 -    basic_stringbuf<_CharT, _Traits, _Alloc>* __this = __CONST_CAST(_Self*,this);
1333.561 -#ifdef __SYMBIAN32__    
1333.562 -    size_t __n = this->pptr() - this->pbase();
1333.563 -    if (__this->_M_str._M_stream_pos >= 0 
1333.564 -        && (__this->_M_str._M_stream_pos != __this->_M_str.size())) {
1333.565 -        {
1333.566 -        *(this->pptr()) = (_CharT)0;
1333.567 -#ifdef  __SYMBIAN32__
1333.568 -        __this->_M_str.replace(_M_str._M_stream_pos, __n, (const _CharT*)this->pbase(), (const _CharT*)this->pptr()-(const _CharT*)this->pbase());
1333.569 -#else
1333.570 -	__this->_M_str.replace(_M_str._M_stream_pos, __n, (const _CharT*)this->pbase());
1333.571 -
1333.572 -#endif
1333.573 -        }
1333.574 -    } else {
1333.575 -        __this->_M_str.append((const _CharT*)this->pbase(), (const _CharT*)this->pptr());
1333.576 -    }
1333.577 -    __this->_M_str._M_stream_pos += __n;
1333.578 -#else // __SYMBAIN32__    
1333.579 -    __this->_M_str.append((const _CharT*)this->pbase(), (const _CharT*)this->pptr());
1333.580 -#endif // __SYMBIAN32__    
1333.581 -    __this->setp(__CONST_CAST(_CharT*,_M_Buf),
1333.582 -                 __CONST_CAST(_CharT*,_M_Buf + __STATIC_CAST(int,_S_BufSiz)));
1333.583 -  }
1333.584 -
1333.585 -  // Have we run off the end of the string?
1333.586 -  else if (this->pptr() == this->epptr()) {
1333.587 -    basic_stringbuf<_CharT, _Traits, _Alloc>* __this = __CONST_CAST(_Self*,this);
1333.588 -    __this->setp(__CONST_CAST(_CharT*,_M_Buf),
1333.589 -                 __CONST_CAST(_CharT*,_M_Buf + __STATIC_CAST(int,_S_BufSiz)));
1333.590 -  __this->_M_str._M_stream_pos = __this->_M_str._M_finish - __this->_M_str._M_start;
1333.591 -  }
1333.592 -}
1333.593 -
1333.594 -//----------------------------------------------------------------------
1333.595 -// Non-inline istringstream member functions.
1333.596 -
1333.597 -template <class _CharT, class _Traits, class _Alloc>
1333.598 -basic_istringstream<_CharT, _Traits, _Alloc>
1333.599 -  ::basic_istringstream(ios_base::openmode __mode)
1333.600 -    : basic_istream<_CharT, _Traits>(0),
1333.601 -      _M_buf(__mode | ios_base::in)
1333.602 -{
1333.603 -  this->init(&_M_buf);
1333.604 -}
1333.605 -
1333.606 -template <class _CharT, class _Traits, class _Alloc>
1333.607 -basic_istringstream<_CharT, _Traits, _Alloc>
1333.608 -  ::basic_istringstream(const _String& __str,ios_base::openmode __mode)
1333.609 -    : basic_istream<_CharT, _Traits>(0),
1333.610 -      _M_buf(__str, __mode | ios_base::in)
1333.611 -{
1333.612 -  this->init(&_M_buf);
1333.613 -}
1333.614 -
1333.615 -template <class _CharT, class _Traits, class _Alloc>
1333.616 -basic_istringstream<_CharT, _Traits, _Alloc>::~basic_istringstream()
1333.617 -{}
1333.618 -
1333.619 -//----------------------------------------------------------------------
1333.620 -// Non-inline ostringstream member functions.
1333.621 -
1333.622 -template <class _CharT, class _Traits, class _Alloc>
1333.623 -basic_ostringstream<_CharT, _Traits, _Alloc>
1333.624 -  ::basic_ostringstream(ios_base::openmode __mode)
1333.625 -    : basic_ostream<_CharT, _Traits>(0),
1333.626 -      _M_buf(__mode | ios_base::out)
1333.627 -{
1333.628 -  this->init(&_M_buf);
1333.629 -}
1333.630 -  
1333.631 -template <class _CharT, class _Traits, class _Alloc>
1333.632 -basic_ostringstream<_CharT, _Traits, _Alloc>
1333.633 -  ::basic_ostringstream(const _String& __str, ios_base::openmode __mode)
1333.634 -    : basic_ostream<_CharT, _Traits>(0),
1333.635 -      _M_buf(__str, __mode | ios_base::out)
1333.636 -{
1333.637 -  this->init(&_M_buf);
1333.638 -}
1333.639 -
1333.640 -template <class _CharT, class _Traits, class _Alloc>
1333.641 -basic_ostringstream<_CharT, _Traits, _Alloc>::~basic_ostringstream()
1333.642 -{}
1333.643 -
1333.644 -//----------------------------------------------------------------------
1333.645 -// Non-inline stringstream member functions.
1333.646 -
1333.647 -template <class _CharT, class _Traits, class _Alloc>
1333.648 -_STLP_EXP_DECLSPEC basic_stringstream<_CharT, _Traits, _Alloc>
1333.649 -  ::basic_stringstream(ios_base::openmode __mode)
1333.650 -    : basic_iostream<_CharT, _Traits>(0), _M_buf(__mode)
1333.651 -{
1333.652 -   this->init(&_M_buf);
1333.653 -}
1333.654 -
1333.655 -template <class _CharT, class _Traits, class _Alloc>
1333.656 -_STLP_EXP_DECLSPEC basic_stringstream<_CharT, _Traits, _Alloc>
1333.657 -  ::basic_stringstream(const _String& __str, ios_base::openmode __mode)
1333.658 -    : basic_iostream<_CharT, _Traits>(0), _M_buf(__str, __mode)
1333.659 -{
1333.660 -  this->init(&_M_buf);
1333.661 -}
1333.662 -
1333.663 -template <class _CharT, class _Traits, class _Alloc>
1333.664 -basic_stringstream<_CharT, _Traits, _Alloc>::~basic_stringstream()
1333.665 -{}
1333.666 -
1333.667 -_STLP_END_NAMESPACE
1333.668 -
1333.669 -# undef __BSB_int_type__
1333.670 -# undef __BSB_pos_type__
1333.671 -
1333.672 -# endif /* EXPOSE */
1333.673 -
1333.674 -#endif /* _STLP_SSTREAM_C */
  1334.1 --- a/epoc32/include/stdapis/stlport/stl/_sstream.h	Tue Mar 16 16:12:26 2010 +0000
  1334.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1334.3 @@ -1,273 +0,0 @@
  1334.4 -/*
  1334.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1334.6 - * Copyright (c) 1999
  1334.7 - * Silicon Graphics Computer Systems, Inc.
  1334.8 - *
  1334.9 - * Copyright (c) 1999 
 1334.10 - * Boris Fomitchev
 1334.11 - *
 1334.12 - * This material is provided "as is", with absolutely no warranty expressed
 1334.13 - * or implied. Any use is at your own risk.
 1334.14 - *
 1334.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1334.16 - * without fee, provided the above notices are retained on all copies.
 1334.17 - * Permission to modify the code and to distribute modified code is granted,
 1334.18 - * provided the above notices are retained, and a notice that the code was
 1334.19 - * modified is included with the above copyright notice.
 1334.20 - *
 1334.21 - */ 
 1334.22 -
 1334.23 -
 1334.24 -// This header defines classes basic_stringbuf, basic_istringstream,
 1334.25 -// basic_ostringstream, and basic_stringstream.  These classes 
 1334.26 -// represent streamsbufs and streams whose sources or destinations are
 1334.27 -// C++ strings.
 1334.28 -
 1334.29 -#ifndef _STLP_SSTREAM_H
 1334.30 -#define _STLP_SSTREAM_H
 1334.31 -
 1334.32 -#ifndef _STLP_INTERNAL_STREAMBUF
 1334.33 -# include <stl/_streambuf.h>
 1334.34 -#endif
 1334.35 -
 1334.36 -#ifndef _STLP_INTERNAL_ISTREAM_H
 1334.37 -# include <stl/_istream.h> // Includes <ostream>, <ios>, <iosfwd>
 1334.38 -#endif
 1334.39 -
 1334.40 -#ifndef _STLP_STRING_H
 1334.41 -# include <stl/_string.h>
 1334.42 -#endif
 1334.43 -
 1334.44 -_STLP_BEGIN_NAMESPACE
 1334.45 -
 1334.46 -//----------------------------------------------------------------------
 1334.47 -// This version of basic_stringbuf relies on the internal details of
 1334.48 -// basic_string.  It relies on the fact that, in this implementation,
 1334.49 -// basic_string's iterators are pointers.  It also assumes (as allowed
 1334.50 -// by the standard) that _CharT is a POD type.
 1334.51 -
 1334.52 -// We have a very small buffer for the put area, just so that we don't
 1334.53 -// have to use append() for every sputc.  Conceptually, the buffer
 1334.54 -// immediately follows the end of the underlying string.  We use this
 1334.55 -// buffer when appending to write-only streambufs, but we don't use it
 1334.56 -// for read-write streambufs.
 1334.57 -
 1334.58 -template <class _CharT, class _Traits, class _Alloc>
 1334.59 -#ifdef __SYMBIAN32__
 1334.60 -NONSHARABLE_CLASS ( basic_stringbuf ) : public basic_streambuf<_CharT, _Traits>
 1334.61 -#else
 1334.62 -class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
 1334.63 -#endif
 1334.64 -{
 1334.65 -public:                         // Typedefs.
 1334.66 -  typedef _CharT                     char_type;
 1334.67 -  typedef typename _Traits::int_type int_type;
 1334.68 -  typedef typename _Traits::pos_type pos_type;
 1334.69 -  typedef typename _Traits::off_type off_type;
 1334.70 -  typedef _Traits                    traits_type;
 1334.71 -
 1334.72 -  typedef basic_streambuf<_CharT, _Traits>          _Base;
 1334.73 -  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Self;
 1334.74 -  typedef basic_string<_CharT, _Traits, _Alloc>     _String;
 1334.75 -
 1334.76 -public:                         // Constructors, destructor.
 1334.77 -  _STLP_DECLSPEC explicit basic_stringbuf(ios_base::openmode __mode
 1334.78 -                                      = ios_base::in | ios_base::out);
 1334.79 -  _STLP_DECLSPEC explicit basic_stringbuf(const _String& __s, ios_base::openmode __mode
 1334.80 -                                      = ios_base::in | ios_base::out);
 1334.81 -  _STLP_DECLSPEC virtual ~basic_stringbuf();
 1334.82 -
 1334.83 -public:                         // Get or set the string.
 1334.84 -  _String str() const { 
 1334.85 -      if ( _M_mode & ios_base::out )
 1334.86 -           _M_append_buffer();
 1334.87 -      return _M_str; 
 1334.88 -   }
 1334.89 -  _STLP_DECLSPEC void str(const _String& __s);
 1334.90 -
 1334.91 -protected:                      // Overridden virtual member functions.
 1334.92 -  virtual int_type underflow();
 1334.93 -  virtual int_type uflow();
 1334.94 -  virtual int_type pbackfail(int_type __c);
 1334.95 -  virtual int_type overflow(int_type __c);
 1334.96 -  int_type pbackfail() {return pbackfail(_Traits::eof());}
 1334.97 -  int_type overflow() {return overflow(_Traits::eof());}
 1334.98 -
 1334.99 -  virtual streamsize xsputn(const char_type* __s, streamsize __n);
1334.100 -  virtual streamsize _M_xsputnc(char_type __c, streamsize __n);
1334.101 -
1334.102 -  virtual _Base* setbuf(_CharT* __buf, streamsize __n);
1334.103 -  virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir,
1334.104 -                           ios_base::openmode __mode 
1334.105 -                                      = ios_base::in | ios_base::out);
1334.106 -  virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 
1334.107 -                                      = ios_base::in | ios_base::out);
1334.108 -  ios_base::openmode _M_mode;
1334.109 -
1334.110 -private:                        // Helper functions.
1334.111 -  // Append the internal buffer to the string if necessary.
1334.112 -  void _M_append_buffer() const;
1334.113 -  void _M_set_ptrs();
1334.114 -
1334.115 -private:
1334.116 -  mutable basic_string<_CharT, _Traits, _Alloc> _M_str;
1334.117 -
1334.118 -  enum _JustName { _S_BufSiz = 8 };
1334.119 -  _CharT _M_Buf[ 8 /* _S_BufSiz */];
1334.120 -};
1334.121 -
1334.122 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1334.123 -_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<char, char_traits<char>, allocator<char> >;
1334.124 -#  if !defined (_STLP_NO_WCHAR_T)
1334.125 -_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1334.126 -#  endif
1334.127 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1334.128 -
1334.129 -//----------------------------------------------------------------------
1334.130 -// Class basic_istringstream, an input stream that uses a stringbuf.
1334.131 -
1334.132 -template <class _CharT, class _Traits, class _Alloc>
1334.133 -#ifdef __SYMBIAN32__
1334.134 -NONSHARABLE_CLASS ( basic_istringstream ) : public basic_istream<_CharT, _Traits>
1334.135 -#else
1334.136 -class basic_istringstream : public basic_istream<_CharT, _Traits>
1334.137 -#endif
1334.138 -{
1334.139 -public:                         // Typedefs
1334.140 -  typedef typename _Traits::char_type   char_type;
1334.141 -  typedef typename _Traits::int_type    int_type;
1334.142 -  typedef typename _Traits::pos_type    pos_type;
1334.143 -  typedef typename _Traits::off_type    off_type;
1334.144 -  typedef _Traits traits_type;
1334.145 -
1334.146 -  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1334.147 -  typedef basic_istream<_CharT, _Traits>            _Base;
1334.148 -  typedef basic_string<_CharT, _Traits, _Alloc>     _String;
1334.149 -  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Buf;
1334.150 -
1334.151 -public:                         // Constructors, destructor.
1334.152 -  basic_istringstream(ios_base::openmode __mode = ios_base::in);
1334.153 -  basic_istringstream(const _String& __str,
1334.154 -                      ios_base::openmode __mode = ios_base::in);
1334.155 -  ~basic_istringstream();
1334.156 -
1334.157 -public:                         // Member functions
1334.158 -
1334.159 -  basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const
1334.160 -    { return __CONST_CAST(_Buf*,&_M_buf); }
1334.161 -
1334.162 -  _String str() const { return _M_buf.str(); }
1334.163 -  void str(const _String& __s) { _M_buf.str(__s); }
1334.164 -  
1334.165 -private:
1334.166 -  basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf;
1334.167 -};
1334.168 -
1334.169 -
1334.170 -//----------------------------------------------------------------------
1334.171 -// Class basic_ostringstream, an output stream that uses a stringbuf.
1334.172 -
1334.173 -template <class _CharT, class _Traits, class _Alloc>
1334.174 -#ifdef __SYMBIAN32__
1334.175 -NONSHARABLE_CLASS ( basic_ostringstream ) : public basic_ostream<_CharT, _Traits>
1334.176 -#else
1334.177 -class basic_ostringstream : public basic_ostream<_CharT, _Traits>
1334.178 -#endif
1334.179 -{
1334.180 -public:                         // Typedefs
1334.181 -  typedef typename _Traits::char_type   char_type;
1334.182 -  typedef typename _Traits::int_type    int_type;
1334.183 -  typedef typename _Traits::pos_type    pos_type;
1334.184 -  typedef typename _Traits::off_type    off_type;
1334.185 -  typedef _Traits traits_type;
1334.186 -
1334.187 -  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1334.188 -  typedef basic_ostream<_CharT, _Traits>            _Base;
1334.189 -  typedef basic_string<_CharT, _Traits, _Alloc>     _String;
1334.190 -  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Buf;
1334.191 -
1334.192 -public:                         // Constructors, destructor.
1334.193 -  basic_ostringstream(ios_base::openmode __mode = ios_base::out);
1334.194 -  basic_ostringstream(const _String& __str,
1334.195 -                      ios_base::openmode __mode = ios_base::out);
1334.196 -  ~basic_ostringstream();
1334.197 -
1334.198 -public:                         // Member functions.
1334.199 -
1334.200 -  basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const
1334.201 -    { return __CONST_CAST(_Buf*,&_M_buf); }
1334.202 -
1334.203 -  _String str() const { return _M_buf.str(); }
1334.204 -    void str(const _String& __s) { _M_buf.str(__s); } // dwa 02/07/00 - BUG STOMPER DAVE
1334.205 -
1334.206 -
1334.207 -private:
1334.208 -  basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf;
1334.209 -};
1334.210 -
1334.211 -
1334.212 -//----------------------------------------------------------------------
1334.213 -// Class basic_stringstream, a bidirectional stream that uses a stringbuf.
1334.214 -
1334.215 -template <class _CharT, class _Traits, class _Alloc>
1334.216 -#ifdef __SYMBIAN32__
1334.217 -NONSHARABLE_CLASS ( basic_stringstream ) : public basic_iostream<_CharT, _Traits>
1334.218 -#else
1334.219 -class basic_stringstream : public basic_iostream<_CharT, _Traits>
1334.220 -#endif
1334.221 -{
1334.222 -public:                         // Typedefs
1334.223 -  typedef typename _Traits::char_type char_type;
1334.224 -  typedef typename _Traits::int_type  int_type;
1334.225 -  typedef typename _Traits::pos_type  pos_type;
1334.226 -  typedef typename _Traits::off_type  off_type;
1334.227 -  typedef _Traits  traits_type;
1334.228 -
1334.229 -  typedef basic_ios<_CharT, _Traits>                 _Basic_ios;
1334.230 -  typedef basic_iostream<_CharT, _Traits>            _Base;
1334.231 -  typedef basic_string<_CharT, _Traits, _Alloc>      _String;
1334.232 -  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Buf;
1334.233 -  
1334.234 -  typedef ios_base::openmode openmode;
1334.235 -
1334.236 -public:                         // Constructors, destructor.
1334.237 -  _STLP_DECLSPEC basic_stringstream(openmode __mod = ios_base::in | ios_base::out);
1334.238 -  _STLP_DECLSPEC basic_stringstream(const _String& __str,
1334.239 -                     openmode __mod = ios_base::in | ios_base::out);
1334.240 -  ~basic_stringstream();
1334.241 -
1334.242 -public:                         // Member functions.
1334.243 -
1334.244 -  basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const
1334.245 -    { return __CONST_CAST(_Buf*,&_M_buf); }
1334.246 -
1334.247 -  _String str() const { return _M_buf.str(); }
1334.248 -    void str(const _String& __s) { _M_buf.str(__s); }
1334.249 -
1334.250 -private:
1334.251 -  basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf;
1334.252 -};
1334.253 -
1334.254 -
1334.255 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1334.256 -_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<char, char_traits<char>, allocator<char> >;
1334.257 -_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<char, char_traits<char>, allocator<char> >;
1334.258 -_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<char, char_traits<char>, allocator<char> >;
1334.259 -#  if !defined (_STLP_NO_WCHAR_T)
1334.260 -_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1334.261 -_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1334.262 -_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1334.263 -#  endif
1334.264 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1334.265 -
1334.266 -_STLP_END_NAMESPACE
1334.267 -
1334.268 -# if  defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1334.269 -#  include <stl/_sstream.c>
1334.270 -# endif
1334.271 -
1334.272 -#endif /* _STLP_SSTREAM_H */
1334.273 -
1334.274 -// Local Variables:
1334.275 -// mode:C++
1334.276 -// End:
  1335.1 --- a/epoc32/include/stdapis/stlport/stl/_stack.h	Tue Mar 16 16:12:26 2010 +0000
  1335.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1335.3 @@ -1,105 +0,0 @@
  1335.4 -/*
  1335.5 - *
  1335.6 - * Copyright (c) 1994
  1335.7 - * Hewlett-Packard Company
  1335.8 - *
  1335.9 - * Copyright (c) 1996,1997
 1335.10 - * Silicon Graphics Computer Systems, Inc.
 1335.11 - *
 1335.12 - * Copyright (c) 1997
 1335.13 - * Moscow Center for SPARC Technology
 1335.14 - *
 1335.15 - * Copyright (c) 1999 
 1335.16 - * Boris Fomitchev
 1335.17 - *
 1335.18 - * This material is provided "as is", with absolutely no warranty expressed
 1335.19 - * or implied. Any use is at your own risk.
 1335.20 - *
 1335.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1335.22 - * without fee, provided the above notices are retained on all copies.
 1335.23 - * Permission to modify the code and to distribute modified code is granted,
 1335.24 - * provided the above notices are retained, and a notice that the code was
 1335.25 - * modified is included with the above copyright notice.
 1335.26 - *
 1335.27 - */
 1335.28 -
 1335.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1335.30 - *   You should not attempt to use it directly.
 1335.31 - */
 1335.32 -
 1335.33 -#ifndef _STLP_INTERNAL_STACK_H
 1335.34 -#define _STLP_INTERNAL_STACK_H
 1335.35 -
 1335.36 -#ifndef _STLP_INTERNAL_DEQUE_H
 1335.37 -# include <stl/_deque.h>
 1335.38 -#endif
 1335.39 -
 1335.40 -_STLP_BEGIN_NAMESPACE
 1335.41 -
 1335.42 -# if !defined ( _STLP_LIMITED_DEFAULT_TEMPLATES )
 1335.43 -template <class _Tp, class _Sequence = deque<_Tp> >
 1335.44 -# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
 1335.45 -# define _STLP_STACK_ARGS _Tp
 1335.46 -template <class _Tp>
 1335.47 -# else
 1335.48 -template <class _Tp, class _Sequence>
 1335.49 -# endif
 1335.50 -class stack {
 1335.51 -
 1335.52 -# ifdef _STLP_STACK_ARGS 
 1335.53 -  typedef deque<_Tp> _Sequence;
 1335.54 -# endif
 1335.55 -
 1335.56 -public:
 1335.57 -  typedef typename _Sequence::value_type      value_type;
 1335.58 -  typedef typename _Sequence::size_type       size_type;
 1335.59 -  typedef          _Sequence                  container_type;
 1335.60 -
 1335.61 -  typedef typename _Sequence::reference       reference;
 1335.62 -  typedef typename _Sequence::const_reference const_reference;
 1335.63 -protected:
 1335.64 -  _Sequence c;
 1335.65 -public:
 1335.66 -  stack() : c() {}
 1335.67 -  explicit stack(const _Sequence& __s) : c(__s) {}
 1335.68 -
 1335.69 -  bool empty() const { return c.empty(); }
 1335.70 -  size_type size() const { return c.size(); }
 1335.71 -  reference top() { return c.back(); }
 1335.72 -  const_reference top() const { return c.back(); }
 1335.73 -  void push(const value_type& __x) { c.push_back(__x); }
 1335.74 -  void pop() { c.pop_back(); }
 1335.75 -  const _Sequence& _Get_c() const { return c; }
 1335.76 -};
 1335.77 -
 1335.78 -# ifndef _STLP_STACK_ARGS
 1335.79 -#  define _STLP_STACK_ARGS _Tp, _Sequence
 1335.80 -#  define _STLP_STACK_HEADER_ARGS class _Tp, class _Sequence
 1335.81 -# else
 1335.82 -#  define _STLP_STACK_HEADER_ARGS class _Tp
 1335.83 -# endif
 1335.84 -
 1335.85 -template < _STLP_STACK_HEADER_ARGS >
 1335.86 -inline bool _STLP_CALL  operator==(const stack< _STLP_STACK_ARGS >& __x, const stack< _STLP_STACK_ARGS >& __y)
 1335.87 -{
 1335.88 -  return __x._Get_c() == __y._Get_c();
 1335.89 -}
 1335.90 -
 1335.91 -template < _STLP_STACK_HEADER_ARGS >
 1335.92 -inline bool _STLP_CALL  operator<(const stack< _STLP_STACK_ARGS >& __x, const stack< _STLP_STACK_ARGS >& __y)
 1335.93 -{
 1335.94 -  return __x._Get_c() < __y._Get_c();
 1335.95 -}
 1335.96 -
 1335.97 -_STLP_RELOPS_OPERATORS(template < _STLP_STACK_HEADER_ARGS >, stack< _STLP_STACK_ARGS >)
 1335.98 -    
 1335.99 -_STLP_END_NAMESPACE
1335.100 -
1335.101 -#  undef _STLP_STACK_ARGS
1335.102 -#  undef _STLP_STACK_HEADER_ARGS
1335.103 -
1335.104 -#endif /* _STLP_INTERNAL_STACK_H */
1335.105 -
1335.106 -// Local Variables:
1335.107 -// mode:C++
1335.108 -// End:
  1336.1 --- a/epoc32/include/stdapis/stlport/stl/_stream_iterator.h	Tue Mar 16 16:12:26 2010 +0000
  1336.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1336.3 @@ -1,343 +0,0 @@
  1336.4 -/*
  1336.5 - *
  1336.6 - * Copyright (c) 1994
  1336.7 - * Hewlett-Packard Company
  1336.8 - *
  1336.9 - * Copyright (c) 1996-1998
 1336.10 - * Silicon Graphics Computer Systems, Inc.
 1336.11 - *
 1336.12 - * Copyright (c) 1997
 1336.13 - * Moscow Center for SPARC Technology
 1336.14 - *
 1336.15 - * Copyright (c) 1999 
 1336.16 - * Boris Fomitchev
 1336.17 - *
 1336.18 - * This material is provided "as is", with absolutely no warranty expressed
 1336.19 - * or implied. Any use is at your own risk.
 1336.20 - *
 1336.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1336.22 - * without fee, provided the above notices are retained on all copies.
 1336.23 - * Permission to modify the code and to distribute modified code is granted,
 1336.24 - * provided the above notices are retained, and a notice that the code was
 1336.25 - * modified is included with the above copyright notice.
 1336.26 - *
 1336.27 - */
 1336.28 -
 1336.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1336.30 - *   You should not attempt to use it directly.
 1336.31 - */
 1336.32 -
 1336.33 -#if !defined (_STLP_INTERNAL_STREAM_ITERATOR_H) && ! defined (_STLP_USE_NO_IOSTREAMS)
 1336.34 -#define _STLP_INTERNAL_STREAM_ITERATOR_H
 1336.35 -
 1336.36 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1336.37 -# include <stl/_iterator_base.h>
 1336.38 -#endif
 1336.39 -
 1336.40 -// streambuf_iterators predeclarations must appear first
 1336.41 -#ifndef _STLP_IOSFWD
 1336.42 -# include <iosfwd>
 1336.43 -#endif
 1336.44 -
 1336.45 -#ifndef _STLP_INTERNAL_ALGOBASE_H
 1336.46 -#include <stl/_algobase.h>
 1336.47 -#endif
 1336.48 -
 1336.49 -#if defined (_STLP_OWN_IOSTREAMS)
 1336.50 -
 1336.51 -#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1336.52 -# include <stl/_ostreambuf_iterator.h>
 1336.53 -#endif
 1336.54 -
 1336.55 -#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1336.56 -# include <stl/_istreambuf_iterator.h>
 1336.57 -#endif
 1336.58 -
 1336.59 -#ifndef _STLP_INTERNAL_ISTREAM_H
 1336.60 -# include <stl/_istream.h>
 1336.61 -#endif
 1336.62 -#endif /* _STLP_OWN_IOSTREAMS */
 1336.63 -
 1336.64 -// istream_iterator and ostream_iterator look very different if we're
 1336.65 -// using new, templatized iostreams than if we're using the old cfront
 1336.66 -// version.
 1336.67 -
 1336.68 -# if defined (_STLP_USE_NEW_IOSTREAMS) 
 1336.69 -
 1336.70 -_STLP_BEGIN_NAMESPACE
 1336.71 -
 1336.72 -#  ifndef _STLP_LIMITED_DEFAULT_TEMPLATES
 1336.73 -template <class _Tp, 
 1336.74 -          class _CharT = _STLP_DEFAULTCHAR, class _Traits = char_traits<_CharT>,
 1336.75 -          class _Dist = ptrdiff_t> 
 1336.76 -#   define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _CharT, class _Traits, class _Dist
 1336.77 -#   define __ISI_TMPL_ARGUMENTS _Tp, _CharT, _Traits, _Dist
 1336.78 -class istream_iterator : public iterator<input_iterator_tag, _Tp , _Dist,
 1336.79 -                         const _Tp*, const _Tp& > {
 1336.80 -#  else
 1336.81 -
 1336.82 -#   if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
 1336.83 -#    define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
 1336.84 -#    define __ISI_TMPL_ARGUMENTS        _Tp
 1336.85 -template <class _Tp>
 1336.86 -class istream_iterator : public iterator<input_iterator_tag, _Tp , ptrdiff_t, 
 1336.87 -                         const _Tp*, const _Tp& > {
 1336.88 -#   else
 1336.89 -#    define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
 1336.90 -#    define __ISI_TMPL_ARGUMENTS        _Tp, _Dist
 1336.91 -template <class _Tp,__DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
 1336.92 -class istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist , 
 1336.93 -                                         const _Tp*, const _Tp& > {
 1336.94 -#   endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
 1336.95 -
 1336.96 -#  endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */
 1336.97 -
 1336.98 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
 1336.99 -  typedef char _CharT;
1336.100 -  typedef char_traits<char> _Traits;
1336.101 -#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1336.102 -  typedef ptrdiff_t _Dist;
1336.103 -#  endif
1336.104 -# endif
1336.105 -
1336.106 -  typedef istream_iterator< __ISI_TMPL_ARGUMENTS > _Self;
1336.107 -public:
1336.108 -  typedef _CharT                         char_type;
1336.109 -  typedef _Traits                        traits_type;
1336.110 -  typedef basic_istream<_CharT, _Traits> istream_type;
1336.111 -
1336.112 -  typedef input_iterator_tag             iterator_category;
1336.113 -  typedef _Tp                            value_type;
1336.114 -  typedef _Dist                          difference_type;
1336.115 -  typedef const _Tp*                     pointer;
1336.116 -  typedef const _Tp&                     reference;
1336.117 -
1336.118 -  istream_iterator() : _M_stream(0), _M_ok(false) {}
1336.119 -  istream_iterator(istream_type& __s) : _M_stream(&__s) { _M_read(); }
1336.120 -
1336.121 -  reference operator*() const { return _M_value; }
1336.122 -
1336.123 -  _STLP_DEFINE_ARROW_OPERATOR
1336.124 -
1336.125 -  _Self& operator++() { 
1336.126 -    _M_read(); 
1336.127 -    return *this;
1336.128 -  }
1336.129 -  _Self operator++(int)  {
1336.130 -    _Self __tmp = *this;
1336.131 -    _M_read();
1336.132 -    return __tmp;
1336.133 -  }
1336.134 -
1336.135 -  bool _M_equal(const _Self& __x) const
1336.136 -    { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
1336.137 -
1336.138 -private:
1336.139 -  istream_type* _M_stream;
1336.140 -  _Tp _M_value;
1336.141 -  bool _M_ok;
1336.142 -
1336.143 -  void _M_read() {
1336.144 -    _M_ok = (_M_stream && *_M_stream) ? true : false;
1336.145 -    if (_M_ok) {
1336.146 -      *_M_stream >> _M_value;
1336.147 -      _M_ok = *_M_stream ? true : false;
1336.148 -    }
1336.149 -  }
1336.150 -};
1336.151 -
1336.152 -#ifndef _STLP_LIMITED_DEFAULT_TEMPLATES
1336.153 -template <class _TpP,
1336.154 -          class _CharT = _STLP_DEFAULTCHAR, class _Traits = char_traits<_CharT> >
1336.155 -#else
1336.156 -template <class _TpP>
1336.157 -#endif
1336.158 -class ostream_iterator: public iterator<output_iterator_tag, void, void, void, void> {
1336.159 -# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1336.160 -  typedef char _CharT;
1336.161 -  typedef char_traits<char> _Traits;
1336.162 -  typedef ostream_iterator<_TpP> _Self;
1336.163 -# else
1336.164 -  typedef ostream_iterator<_TpP, _CharT, _Traits> _Self;
1336.165 -# endif
1336.166 -public:
1336.167 -  typedef _CharT                         char_type;
1336.168 -  typedef _Traits                        traits_type;
1336.169 -  typedef basic_ostream<_CharT, _Traits> ostream_type;
1336.170 -
1336.171 -  typedef output_iterator_tag            iterator_category;
1336.172 -
1336.173 -  ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
1336.174 -  ostream_iterator(ostream_type& __s, const _CharT* __c) 
1336.175 -    : _M_stream(&__s), _M_string(__c)  {}
1336.176 -  _Self& operator=(const _TpP& __val) { 
1336.177 -    *_M_stream << __val;
1336.178 -    if (_M_string) *_M_stream << _M_string;
1336.179 -    return *this;
1336.180 -  }
1336.181 -  _Self& operator*() { return *this; }
1336.182 -  _Self& operator++() { return *this; } 
1336.183 -  _Self& operator++(int) { return *this; } 
1336.184 -private:
1336.185 -  ostream_type* _M_stream;
1336.186 -  const _CharT* _M_string;
1336.187 -};
1336.188 -
1336.189 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1336.190 -#  ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1336.191 -template <class _TpP>
1336.192 -inline output_iterator_tag _STLP_CALL 
1336.193 -iterator_category(const ostream_iterator<_TpP>&) { return output_iterator_tag(); }
1336.194 -# else
1336.195 -template <class _TpP, class _CharT, class _Traits>
1336.196 -inline output_iterator_tag _STLP_CALL 
1336.197 -iterator_category(const ostream_iterator<_TpP, _CharT, _Traits>&) { return output_iterator_tag(); }
1336.198 -#  endif
1336.199 -# endif
1336.200 -
1336.201 -_STLP_END_NAMESPACE
1336.202 -
1336.203 -# elif ! defined(_STLP_USE_NO_IOSTREAMS)
1336.204 -
1336.205 -_STLP_BEGIN_NAMESPACE
1336.206 -
1336.207 -#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1336.208 -#  define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
1336.209 -#  define __ISI_TMPL_ARGUMENTS        _Tp
1336.210 -template <class _Tp>
1336.211 -class istream_iterator : public iterator<input_iterator_tag, _Tp, ptrdiff_t, 
1336.212 -                         const _Tp*, const _Tp& > {
1336.213 -#  else
1336.214 -#  define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
1336.215 -#  define __ISI_TMPL_ARGUMENTS        _Tp, _Dist
1336.216 -template <class _Tp, __DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
1336.217 -class istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist, 
1336.218 -                         const _Tp*, const _Tp& > {
1336.219 -#  endif
1336.220 -
1336.221 -protected:
1336.222 -  istream* _M_stream;
1336.223 -  _Tp _M_value;
1336.224 -  bool _M_end_marker;
1336.225 -  void _M_read() {
1336.226 -    _M_end_marker = (*_M_stream) ? true : false;
1336.227 -    if (_M_end_marker) *_M_stream >> _M_value;
1336.228 -    _M_end_marker = (*_M_stream) ? true : false;
1336.229 -}
1336.230 -public:
1336.231 -  typedef input_iterator_tag  iterator_category;
1336.232 -  typedef _Tp                 value_type;
1336.233 -  typedef _Dist               difference_type;
1336.234 -  typedef const _Tp*          pointer;
1336.235 -  typedef const _Tp&          reference;
1336.236 -
1336.237 -  istream_iterator() : _M_stream(&cin), _M_end_marker(false) {}
1336.238 -  istream_iterator(istream& __s) : _M_stream(&__s) { _M_read(); }
1336.239 -  reference operator*() const { return _M_value; }
1336.240 -
1336.241 -  _STLP_DEFINE_ARROW_OPERATOR
1336.242 -
1336.243 -  istream_iterator< __ISI_TMPL_ARGUMENTS >& operator++() { 
1336.244 -    _M_read(); 
1336.245 -    return *this;
1336.246 -  }
1336.247 -  istream_iterator< __ISI_TMPL_ARGUMENTS > operator++(int)  {
1336.248 -    istream_iterator< __ISI_TMPL_ARGUMENTS > __tmp = *this;
1336.249 -    _M_read();
1336.250 -    return __tmp;
1336.251 -  }
1336.252 -  inline bool _M_equal(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) const {
1336.253 -    return (_M_stream == __y._M_stream &&
1336.254 -	    _M_end_marker == __y._M_end_marker) ||
1336.255 -      _M_end_marker == false && __y._M_end_marker == false;
1336.256 -  }
1336.257 -};
1336.258 -
1336.259 -template <class _Tp>
1336.260 -class ostream_iterator {
1336.261 -protected:
1336.262 -  ostream* _M_stream;
1336.263 -  const char* _M_string;
1336.264 -public:
1336.265 -  typedef output_iterator_tag iterator_category;
1336.266 -# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1336.267 -  typedef void                value_type;
1336.268 -  typedef void                difference_type;
1336.269 -  typedef void                pointer;
1336.270 -  typedef void                reference;
1336.271 -# endif
1336.272 -  ostream_iterator(ostream& __s) : _M_stream(&__s), _M_string(0) {}
1336.273 -  ostream_iterator(ostream& __s, const char* __c) 
1336.274 -    : _M_stream(&__s), _M_string(__c)  {}
1336.275 -  ostream_iterator<_Tp>& operator=(const _Tp& __val) { 
1336.276 -    *_M_stream << __val;
1336.277 -    if (_M_string) *_M_stream << _M_string;
1336.278 -    return *this;
1336.279 -  }
1336.280 -  ostream_iterator<_Tp>& operator*() { return *this; }
1336.281 -  ostream_iterator<_Tp>& operator++() { return *this; } 
1336.282 -  ostream_iterator<_Tp>& operator++(int) { return *this; } 
1336.283 -};
1336.284 -
1336.285 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1336.286 -template <class _Tp> inline output_iterator_tag 
1336.287 -iterator_category(const ostream_iterator<_Tp>&) { return output_iterator_tag(); }
1336.288 -#endif
1336.289 -
1336.290 -_STLP_END_NAMESPACE
1336.291 -
1336.292 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1336.293 -
1336.294 -// form-independent definiotion of stream iterators
1336.295 -_STLP_BEGIN_NAMESPACE
1336.296 -
1336.297 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1336.298 -inline bool _STLP_CALL 
1336.299 -operator==(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
1336.300 -           const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) {
1336.301 -  return __x._M_equal(__y);
1336.302 -}
1336.303 -
1336.304 -#  ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1336.305 -
1336.306 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1336.307 -inline bool _STLP_CALL 
1336.308 -operator!=(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
1336.309 -           const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) {
1336.310 -  return !__x._M_equal(__y);
1336.311 -}
1336.312 -
1336.313 -#  endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1336.314 -
1336.315 -# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1336.316 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1336.317 -inline input_iterator_tag _STLP_CALL 
1336.318 -iterator_category(const istream_iterator< __ISI_TMPL_ARGUMENTS >&)
1336.319 -{ return input_iterator_tag(); }
1336.320 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1336.321 -inline _Tp* _STLP_CALL 
1336.322 -value_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Tp*) 0; }
1336.323 -
1336.324 -#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1336.325 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1336.326 -inline ptrdiff_t* _STLP_CALL 
1336.327 -distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (ptrdiff_t*)0; }
1336.328 -#  else
1336.329 -template < __ISI_TMPL_HEADER_ARGUMENTS >
1336.330 -inline _Dist* _STLP_CALL 
1336.331 -distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Dist*)0; }
1336.332 -#  endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
1336.333 -
1336.334 -# endif 
1336.335 -
1336.336 -_STLP_END_NAMESPACE
1336.337 -
1336.338 -#  undef __ISI_TMPL_HEADER_ARGUMENTS
1336.339 -#  undef __ISI_TMPL_ARGUMENTS
1336.340 -
1336.341 -
1336.342 -#endif /* _STLP_INTERNAL_STREAM_ITERATOR_H */
1336.343 -
1336.344 -// Local Variables:
1336.345 -// mode:C++
1336.346 -// End:
  1337.1 --- a/epoc32/include/stdapis/stlport/stl/_streambuf.c	Tue Mar 16 16:12:26 2010 +0000
  1337.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1337.3 @@ -1,218 +0,0 @@
  1337.4 -/*
  1337.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1337.6 - *
  1337.7 - * Copyright (c) 1999
  1337.8 - * Silicon Graphics Computer Systems, Inc.
  1337.9 - *
 1337.10 - * Copyright (c) 1999 
 1337.11 - * Boris Fomitchev
 1337.12 - *
 1337.13 - * This material is provided "as is", with absolutely no warranty expressed
 1337.14 - * or implied. Any use is at your own risk.
 1337.15 - *
 1337.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1337.17 - * without fee, provided the above notices are retained on all copies.
 1337.18 - * Permission to modify the code and to distribute modified code is granted,
 1337.19 - * provided the above notices are retained, and a notice that the code was
 1337.20 - * modified is included with the above copyright notice.
 1337.21 - *
 1337.22 - */ 
 1337.23 -#ifndef _STLP_STREAMBUF_C
 1337.24 -#define _STLP_STREAMBUF_C
 1337.25 -
 1337.26 -#ifndef _STLP_INTERNAL_STREAMBUF
 1337.27 -# include <stl/_streambuf.h>
 1337.28 -#endif
 1337.29 -
 1337.30 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1337.31 -
 1337.32 -_STLP_BEGIN_NAMESPACE
 1337.33 -//----------------------------------------------------------------------
 1337.34 -// Non-inline basic_streambuf<> member functions.
 1337.35 -
 1337.36 -template <class _CharT, class _Traits>
 1337.37 -_STLP_EXP_DECLSPEC basic_streambuf<_CharT, _Traits>::basic_streambuf()
 1337.38 -  : _M_gbegin(0), _M_gnext(0), _M_gend(0),
 1337.39 -    _M_pbegin(0), _M_pnext(0), _M_pend(0),
 1337.40 -    _M_locale()
 1337.41 -{
 1337.42 -  //  _M_lock._M_initialize();
 1337.43 -}
 1337.44 -
 1337.45 -template <class _CharT, class _Traits>
 1337.46 -_STLP_EXP_DECLSPEC  basic_streambuf<_CharT, _Traits>::~basic_streambuf() 
 1337.47 -{}
 1337.48 -
 1337.49 -
 1337.50 -template <class _CharT, class _Traits>
 1337.51 -_STLP_EXP_DECLSPEC locale 
 1337.52 -basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) {
 1337.53 -  this->imbue(__loc);
 1337.54 -  locale __tmp = _M_locale;
 1337.55 -  _M_locale = __loc;
 1337.56 -  return __tmp;
 1337.57 -}
 1337.58 -
 1337.59 -template <class _CharT, class _Traits>
 1337.60 -_STLP_EXP_DECLSPEC streamsize
 1337.61 -basic_streambuf<_CharT, _Traits>::xsgetn(_CharT* __s, streamsize __n)
 1337.62 -{
 1337.63 -  streamsize __result = 0;
 1337.64 -  const int_type __eof = _Traits::eof();
 1337.65 -
 1337.66 -  while (__result < __n) {
 1337.67 -    if (_M_gnext < _M_gend) {
 1337.68 -      size_t __chunk = (min) (__STATIC_CAST(size_t,_M_gend - _M_gnext),
 1337.69 -                           __STATIC_CAST(size_t,__n - __result));
 1337.70 -      _Traits::copy(__s, _M_gnext, __chunk);
 1337.71 -      __result += __chunk;
 1337.72 -      __s += __chunk;
 1337.73 -      _M_gnext += __chunk;
 1337.74 -    }
 1337.75 -    else {
 1337.76 -      int_type __c = this->sbumpc();
 1337.77 -      if (!_Traits::eq_int_type(__c, __eof)) {
 1337.78 -        *__s = __c;
 1337.79 -        ++__result;
 1337.80 -	++__s;
 1337.81 -      }
 1337.82 -      else
 1337.83 -        break; 
 1337.84 -    }
 1337.85 -  }
 1337.86 -  
 1337.87 -  return __result;
 1337.88 -}
 1337.89 -
 1337.90 -template <class _CharT, class _Traits>
 1337.91 -_STLP_EXP_DECLSPEC streamsize
 1337.92 -basic_streambuf<_CharT, _Traits>::xsputn(const _CharT* __s, streamsize __n)
 1337.93 -{
 1337.94 -  streamsize __result = 0;
 1337.95 -  const int_type __eof = _Traits::eof();
 1337.96 -
 1337.97 -  while (__result < __n) {
 1337.98 -    if (_M_pnext < _M_pend) {
 1337.99 -      size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext),
1337.100 -                           __STATIC_CAST(size_t,__n - __result));
1337.101 -      _Traits::copy(_M_pnext, __s, __chunk);
1337.102 -      __result += __chunk;
1337.103 -      __s += __chunk;
1337.104 -      _M_pnext += __chunk;
1337.105 -    }
1337.106 -
1337.107 -    else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(*__s)),
1337.108 -                                   __eof)) {
1337.109 -      ++__result;
1337.110 -      ++__s;
1337.111 -    }
1337.112 -    else
1337.113 -      break;
1337.114 -  }
1337.115 -  return __result;
1337.116 -}
1337.117 -
1337.118 -template <class _CharT, class _Traits>
1337.119 -_STLP_EXP_DECLSPEC streamsize
1337.120 -basic_streambuf<_CharT, _Traits>::_M_xsputnc(_CharT __c, streamsize __n)
1337.121 -{
1337.122 -  streamsize __result = 0;
1337.123 -  const int_type __eof = _Traits::eof();
1337.124 -
1337.125 -  while (__result < __n) {
1337.126 -    if (_M_pnext < _M_pend) {
1337.127 -      size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext),
1337.128 -                           __STATIC_CAST(size_t,__n - __result));
1337.129 -      _Traits::assign(_M_pnext, __chunk, __c);
1337.130 -      __result += __chunk;
1337.131 -      _M_pnext += __chunk;
1337.132 -    }
1337.133 -
1337.134 -    else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(__c)),
1337.135 -                                   __eof))
1337.136 -      ++__result;
1337.137 -    else
1337.138 -      break;
1337.139 -  }
1337.140 -  return __result;
1337.141 -}
1337.142 -
1337.143 -template <class _CharT, class _Traits>
1337.144 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1337.145 -basic_streambuf<_CharT, _Traits>::_M_snextc_aux()  
1337.146 -{
1337.147 -  int_type __eof = _Traits::eof();
1337.148 -  if (_M_gend == _M_gnext)
1337.149 -    return _Traits::eq_int_type(this->uflow(), __eof) ? __eof : this->sgetc();
1337.150 -  else {
1337.151 -    _M_gnext = _M_gend;
1337.152 -    return this->underflow();
1337.153 -  }
1337.154 -}
1337.155 -
1337.156 -template <class _CharT, class _Traits>
1337.157 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1337.158 -basic_streambuf<_CharT, _Traits>::pbackfail(int_type) { 
1337.159 - return _Traits::eof(); 
1337.160 -}
1337.161 -
1337.162 -template <class _CharT, class _Traits>
1337.163 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1337.164 -basic_streambuf<_CharT, _Traits>::overflow(int_type) { 
1337.165 -  return _Traits::eof(); 
1337.166 -}
1337.167 -
1337.168 -template <class _CharT, class _Traits>
1337.169 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1337.170 -basic_streambuf<_CharT, _Traits>::uflow() {
1337.171 -    return ( _Traits::eq_int_type(this->underflow(),_Traits::eof()) ?
1337.172 -             _Traits::eof() :
1337.173 -             _Traits::to_int_type(*_M_gnext++));
1337.174 -}
1337.175 -
1337.176 -template <class _CharT, class _Traits>
1337.177 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1337.178 -basic_streambuf<_CharT, _Traits>::underflow()
1337.179 -{ return _Traits::eof(); }
1337.180 -
1337.181 -template <class _CharT, class _Traits>
1337.182 -_STLP_EXP_DECLSPEC streamsize 
1337.183 -basic_streambuf<_CharT, _Traits>::showmanyc()
1337.184 -{ return 0; }
1337.185 -
1337.186 -template <class _CharT, class _Traits>
1337.187 -_STLP_EXP_DECLSPEC void 
1337.188 -basic_streambuf<_CharT, _Traits>::imbue(const locale&) {}
1337.189 -
1337.190 -template <class _CharT, class _Traits>
1337.191 -_STLP_EXP_DECLSPEC int
1337.192 -basic_streambuf<_CharT, _Traits>::sync() { return 0; }
1337.193 -
1337.194 -template <class _CharT, class _Traits>
1337.195 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type 
1337.196 -basic_streambuf<_CharT, _Traits>::seekpos(pos_type, ios_base::openmode)
1337.197 -{ return pos_type(-1); }
1337.198 -
1337.199 -template <class _CharT, class _Traits>
1337.200 -_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type 
1337.201 -basic_streambuf<_CharT, _Traits>::seekoff(off_type, ios_base::seekdir,
1337.202 -					  ios_base::openmode)
1337.203 -{ return pos_type(-1); }
1337.204 -
1337.205 -template <class _CharT, class _Traits>
1337.206 -_STLP_EXP_DECLSPEC basic_streambuf<_CharT, _Traits>* 
1337.207 -basic_streambuf<_CharT, _Traits>:: setbuf(char_type*, streamsize)
1337.208 -{ return this; }
1337.209 -
1337.210 -
1337.211 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1337.212 -#  if !defined (_STLP_NO_WCHAR_T)
1337.213 -_STLP_EXPORT_TEMPLATE_CLASS basic_streambuf<wchar_t, char_traits<wchar_t> >;
1337.214 -#  endif
1337.215 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1337.216 -
1337.217 -_STLP_END_NAMESPACE
1337.218 -
1337.219 -# endif /* EXPOSE */
1337.220 -
1337.221 -#endif
  1338.1 --- a/epoc32/include/stdapis/stlport/stl/_streambuf.h	Tue Mar 16 16:12:26 2010 +0000
  1338.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1338.3 @@ -1,537 +0,0 @@
  1338.4 -/*
  1338.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1338.6 - *
  1338.7 - * Copyright (c) 1999
  1338.8 - * Silicon Graphics Computer Systems, Inc.
  1338.9 - *
 1338.10 - * Copyright (c) 1999 
 1338.11 - * Boris Fomitchev
 1338.12 - *
 1338.13 - * This material is provided "as is", with absolutely no warranty expressed
 1338.14 - * or implied. Any use is at your own risk.
 1338.15 - *
 1338.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1338.17 - * without fee, provided the above notices are retained on all copies.
 1338.18 - * Permission to modify the code and to distribute modified code is granted,
 1338.19 - * provided the above notices are retained, and a notice that the code was
 1338.20 - * modified is included with the above copyright notice.
 1338.21 - *
 1338.22 - */ 
 1338.23 -#ifndef _STLP_INTERNAL_STREAMBUF
 1338.24 -#define _STLP_INTERNAL_STREAMBUF
 1338.25 -
 1338.26 -#ifndef _STLP_IOS_BASE_H
 1338.27 -#include <stl/_ios_base.h>      // Needed for ios_base bitfield members.
 1338.28 -                                // <ios_base> includes <iosfwd>.
 1338.29 -#endif
 1338.30 -
 1338.31 -#ifndef _STLP_STDIO_FILE_H
 1338.32 -#include <stl/_stdio_file.h>     // Declaration of struct FILE, and of
 1338.33 -                                // functions to manipulate it.
 1338.34 -#endif
 1338.35 -
 1338.36 -_STLP_BEGIN_NAMESPACE
 1338.37 -
 1338.38 -//----------------------------------------------------------------------
 1338.39 -// Class basic_streambuf<>, the base class of the streambuf hierarchy.
 1338.40 -
 1338.41 -// A basic_streambuf<> manages an input (get) area and an output (put)
 1338.42 -// area.  Each is described by three pointers: a beginning, an end, and a
 1338.43 -// current position.  basic_streambuf<> contains some very simple member
 1338.44 -// functions that manipulate those six pointers, but almost all of the real
 1338.45 -// functionality gets delegated to protected virtual member functions.
 1338.46 -// All of the public member functions are inline, and most of the protected
 1338.47 -// member functions are virtual.
 1338.48 -
 1338.49 -// Although basic_streambuf<> is not abstract, it is useful only as a base
 1338.50 -// class.  Its virtual member functions have default definitions such that
 1338.51 -// reading from a basic_streambuf<> will always yield EOF, and writing to a
 1338.52 -// basic_streambuf<> will always fail.
 1338.53 -
 1338.54 -// The second template parameter, _Traits, defaults to char_traits<_CharT>.
 1338.55 -// The default is declared in header <iosfwd>, and it isn't declared here
 1338.56 -// because C++ language rules do not allow it to be declared twice. 
 1338.57 -
 1338.58 -template <class _CharT, class _Traits>
 1338.59 -#ifdef __SYMBIAN32__
 1338.60 -class basic_streambuf 
 1338.61 -#else
 1338.62 -class basic_streambuf
 1338.63 -#endif
 1338.64 -{
 1338.65 -  friend class basic_istream<_CharT, _Traits>;
 1338.66 -  friend class basic_ostream<_CharT, _Traits>;
 1338.67 -
 1338.68 -public:                         // Typedefs.
 1338.69 -  typedef _CharT                     char_type;
 1338.70 -  typedef typename _Traits::int_type int_type;
 1338.71 -  typedef typename _Traits::pos_type pos_type;
 1338.72 -  typedef typename _Traits::off_type off_type;
 1338.73 -  typedef _Traits                    traits_type;
 1338.74 -
 1338.75 -private:                        // Data members.
 1338.76 -
 1338.77 -  char_type* _M_gbegin;         // Beginning of get area
 1338.78 -  char_type* _M_gnext;          // Current position within the get area
 1338.79 -  char_type* _M_gend;           // End of get area
 1338.80 -
 1338.81 -  char_type* _M_pbegin;         // Beginning of put area
 1338.82 -  char_type* _M_pnext;          // Current position within the put area
 1338.83 -  char_type* _M_pend;           // End of put area
 1338.84 -
 1338.85 -  locale _M_locale;             // The streambuf's locale object
 1338.86 -
 1338.87 -public:                         // Extension: locking, for thread safety.
 1338.88 -  _STLP_mutex _M_lock;
 1338.89 -
 1338.90 -public:                         // Destructor.
 1338.91 -  _STLP_DECLSPEC virtual ~basic_streambuf();
 1338.92 -
 1338.93 -protected:                      // The default constructor.
 1338.94 -  _STLP_DECLSPEC basic_streambuf();
 1338.95 -
 1338.96 -protected:                      // Protected interface to the get area.
 1338.97 -  char_type* eback() const { return _M_gbegin; } // Beginning
 1338.98 -  char_type* gptr()  const { return _M_gnext; }  // Current position
 1338.99 -  char_type* egptr() const { return _M_gend; }   // End
1338.100 -  
1338.101 -  void gbump(int __n) { _M_gnext += __n; }
1338.102 -  void setg(char_type* __gbegin, char_type* __gnext, char_type* __gend) {
1338.103 -    _M_gbegin = __gbegin;
1338.104 -    _M_gnext  = __gnext;
1338.105 -    _M_gend   = __gend;
1338.106 -  }
1338.107 -
1338.108 -public:
1338.109 -  // An alternate public interface to the above functions
1338.110 -  // which allows us to avoid using templated friends which
1338.111 -  // are not supported on some compilers.
1338.112 -
1338.113 -  char_type* _M_eback() const { return eback(); }
1338.114 -  char_type* _M_gptr()  const { return gptr(); }
1338.115 -  char_type* _M_egptr() const { return egptr(); }
1338.116 -  void _M_gbump(int __n)      { gbump(__n); }
1338.117 -  void _M_setg(char_type* __gbegin, char_type* __gnext, char_type* __gend)
1338.118 -    { setg(__gbegin, __gnext, __gend); }
1338.119 -
1338.120 -protected:                      // Protected interface to the put area
1338.121 -
1338.122 -  char_type* pbase() const { return _M_pbegin; } // Beginning
1338.123 -  char_type* pptr()  const { return _M_pnext; }  // Current position
1338.124 -  char_type* epptr() const { return _M_pend; }   // End
1338.125 -
1338.126 -  void pbump(int __n) { _M_pnext += __n; }
1338.127 -  void setp(char_type* __pbegin, char_type* __pend) {
1338.128 -    _M_pbegin = __pbegin;
1338.129 -    _M_pnext  = __pbegin;
1338.130 -    _M_pend   = __pend;
1338.131 -  }
1338.132 -
1338.133 -protected:                      // Virtual buffer management functions.
1338.134 -
1338.135 -  _STLP_DECLSPEC virtual basic_streambuf<_CharT, _Traits>* setbuf(char_type*, streamsize);
1338.136 -
1338.137 -  // Alters the stream position, using an integer offset.  In this
1338.138 -  // class seekoff does nothing; subclasses are expected to override it.
1338.139 -  _STLP_DECLSPEC virtual pos_type seekoff(off_type, ios_base::seekdir,
1338.140 -                           ios_base::openmode = ios_base::in | ios_base::out);
1338.141 -
1338.142 -  // Alters the stream position, using a previously obtained streampos.  In
1338.143 -  // this class seekpos does nothing; subclasses are expected to override it.
1338.144 -  _STLP_DECLSPEC virtual pos_type
1338.145 -  seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out);
1338.146 -
1338.147 -  // Synchronizes (i.e. flushes) the buffer.  All subclasses are expected to 
1338.148 -  // override this virtual member function.
1338.149 -  _STLP_DECLSPEC virtual int sync();
1338.150 -
1338.151 -
1338.152 -public:                         // Buffer management.
1338.153 -  basic_streambuf<_CharT, _Traits>* pubsetbuf(char_type* __s, streamsize __n) 
1338.154 -    { return this->setbuf(__s, __n); }
1338.155 -
1338.156 -  pos_type pubseekoff(off_type __offset, ios_base::seekdir __way,
1338.157 -                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1338.158 -    { return this->seekoff(__offset, __way, __mod); }
1338.159 -
1338.160 -  pos_type pubseekpos(pos_type __sp,
1338.161 -                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1338.162 -    { return this->seekpos(__sp, __mod); }
1338.163 -
1338.164 -  int pubsync() { return this->sync(); }
1338.165 -
1338.166 -protected:                      // Virtual get area functions, as defined in
1338.167 -                                // 17.5.2.4.3 and 17.5.2.4.4 of the standard.
1338.168 -  // Returns a lower bound on the number of characters that we can read,
1338.169 -  // with underflow, before reaching end of file.  (-1 is a special value:
1338.170 -  // it means that underflow will fail.)  Most subclasses should probably
1338.171 -  // override this virtual member function.
1338.172 -  _STLP_DECLSPEC virtual streamsize showmanyc();
1338.173 -
1338.174 -  // Reads up to __n characters.  Return value is the number of 
1338.175 -  // characters read.
1338.176 -  _STLP_DECLSPEC virtual streamsize xsgetn(char_type* __s, streamsize __n);
1338.177 -
1338.178 -  // Called when there is no read position, i.e. when gptr() is null
1338.179 -  // or when gptr() >= egptr().  Subclasses are expected to override
1338.180 -  // this virtual member function.
1338.181 -  _STLP_DECLSPEC virtual int_type underflow();
1338.182 -
1338.183 -  // Similar to underflow(), but used for unbuffered input.  Most 
1338.184 -  // subclasses should probably override this virtual member function.
1338.185 -  _STLP_DECLSPEC virtual int_type uflow();
1338.186 -
1338.187 -  // Called when there is no putback position, i.e. when gptr() is null
1338.188 -  // or when gptr() == eback().  All subclasses are expected to override
1338.189 -  // this virtual member function.
1338.190 -  _STLP_DECLSPEC virtual int_type pbackfail(int_type = traits_type::eof());
1338.191 -
1338.192 -protected:                      // Virtual put area functions, as defined in
1338.193 -                                // 27.5.2.4.5 of the standard.
1338.194 -
1338.195 -  // Writes up to __n characters.  Return value is the number of characters
1338.196 -  // written.
1338.197 -  _STLP_DECLSPEC virtual streamsize xsputn(const char_type* __s, streamsize __n);
1338.198 -
1338.199 -  // Extension: writes up to __n copies of __c.  Return value is the number
1338.200 -  // of characters written.
1338.201 -  _STLP_DECLSPEC virtual streamsize _M_xsputnc(char_type __c, streamsize __n);
1338.202 -
1338.203 -  // Called when there is no write position.  All subclasses are expected to
1338.204 -  // override this virtual member function.
1338.205 -  _STLP_DECLSPEC virtual int_type overflow(int_type = traits_type::eof());
1338.206 -
1338.207 -public:                         // Public members for writing characters.
1338.208 -  // Write a single character.
1338.209 -  int_type sputc(char_type __c) {
1338.210 -    return ((_M_pnext < _M_pend) ? _Traits::to_int_type(*_M_pnext++ = __c)
1338.211 -      : this->overflow(_Traits::to_int_type(__c)));
1338.212 -  }
1338.213 -
1338.214 -  // Write __n characters.
1338.215 -  streamsize sputn(const char_type* __s, streamsize __n)
1338.216 -    { return this->xsputn(__s, __n); }
1338.217 -
1338.218 -  // Extension: write __n copies of __c.
1338.219 -  streamsize _M_sputnc(char_type __c, streamsize __n)
1338.220 -    { return this->_M_xsputnc(__c, __n); }
1338.221 -
1338.222 -private:                        // Helper functions.
1338.223 -  _STLP_DECLSPEC int_type _M_snextc_aux();
1338.224 -
1338.225 -
1338.226 -public:                         // Public members for reading characters.
1338.227 -  streamsize in_avail() {
1338.228 -    return (_M_gnext < _M_gend) ? (_M_gend - _M_gnext) : this->showmanyc();
1338.229 -  }
1338.230 -  
1338.231 -  // Advance to the next character and return it.
1338.232 -  int_type snextc() {
1338.233 -	return ( _M_gend - _M_gnext > 1 ?
1338.234 -             _Traits::to_int_type(*++_M_gnext) :
1338.235 -             this->_M_snextc_aux());
1338.236 -  }
1338.237 -
1338.238 -  // Return the current character and advance to the next.
1338.239 -  int_type sbumpc() {
1338.240 -    return _M_gnext < _M_gend ? _Traits::to_int_type(*_M_gnext++) 
1338.241 -      : this->uflow();
1338.242 -  }
1338.243 -  
1338.244 -  // Return the current character without advancing to the next.
1338.245 -  int_type sgetc() {
1338.246 -    return _M_gnext < _M_gend ? _Traits::to_int_type(*_M_gnext) 
1338.247 -      : this->underflow();
1338.248 -  }
1338.249 -  
1338.250 -  streamsize sgetn(char_type* __s, streamsize __n)
1338.251 -  { return this->xsgetn(__s, __n); }
1338.252 -  
1338.253 -  int_type sputbackc(char_type __c) {
1338.254 -    return ((_M_gbegin < _M_gnext) && _Traits::eq(__c, *(_M_gnext - 1)))
1338.255 -      ? _Traits::to_int_type(*--_M_gnext)
1338.256 -      : this->pbackfail(_Traits::to_int_type(__c));
1338.257 -  }
1338.258 -  
1338.259 -  int_type sungetc() {
1338.260 -    return (_M_gbegin < _M_gnext)
1338.261 -      ? _Traits::to_int_type(*--_M_gnext)
1338.262 -      : this->pbackfail();
1338.263 -  }
1338.264 -
1338.265 -protected:                      // Virtual locale functions.
1338.266 -
1338.267 -  // This is a hook, called by pubimbue() just before pubimbue()
1338.268 -  // sets the streambuf's locale to __loc.  Note that imbue should
1338.269 -  // not (and cannot, since it has no access to streambuf's private
1338.270 -  // members) set the streambuf's locale itself.
1338.271 -  _STLP_DECLSPEC virtual void imbue(const locale&);
1338.272 -
1338.273 -public:                         // Locale-related functions.
1338.274 -  _STLP_DECLSPEC locale pubimbue(const locale&);
1338.275 -  locale getloc() const { return _M_locale; }
1338.276 -
1338.277 -# ifndef _STLP_NO_ANACHRONISMS
1338.278 -  void stossc() { this->sbumpc(); }
1338.279 -# endif
1338.280 -#if defined(__MVS__) || defined(__OS400__)
1338.281 -private: // Data members.
1338.282 -
1338.283 -  char_type* _M_gbegin; // Beginning of get area
1338.284 -  char_type* _M_gnext; // Current position within the get area
1338.285 -  char_type* _M_gend; // End of get area
1338.286 -
1338.287 -  char_type* _M_pbegin; // Beginning of put area
1338.288 -  char_type* _M_pnext; // Current position within the put area
1338.289 -  char_type* _M_pend; // End of put area
1338.290 -#endif
1338.291 -};
1338.292 -
1338.293 -
1338.294 -//----------------------------------------------------------------------
1338.295 -// Specialization: basic_streambuf<char, char_traits<char> >
1338.296 -
1338.297 -// We implement basic_streambuf<char, char_traits<char> > very differently
1338.298 -// than the general basic_streambuf<> template.  The main reason for this
1338.299 -// difference is a requirement in the C++ standard: the standard input
1338.300 -// and output streams cin and cout are required by default to be synchronized
1338.301 -// with the C library components stdin and stdout.  This means it must be
1338.302 -// possible to synchronize a basic_streambuf<char> with a C buffer.
1338.303 -//
1338.304 -// There are two basic ways to do that.  First, the streambuf could be
1338.305 -// unbuffered and delegate all buffering to stdio operations.  This
1338.306 -// would be correct, but slow: it would require at least one virtual
1338.307 -// function call for every character.  Second, the streambuf could use 
1338.308 -// a C stdio FILE as its buffer.  
1338.309 -//
1338.310 -// We choose the latter option.  Every streambuf has pointers to two
1338.311 -// FILE objects, one for the get area and one for the put area.  Ordinarily
1338.312 -// it just uses a FILE object as a convenient way to package the three
1338.313 -// get/put area pointers.  If a basic_streambuf<char> is synchronized with
1338.314 -// a stdio stream, though, then the pointers are to a FILE object that's
1338.315 -// also used by the C library.
1338.316 -//
1338.317 -// The header <stl/_stdio_file.h> encapsulates the implementation details
1338.318 -// of struct FILE.  It contains low-level inline functions that convert
1338.319 -// between whe FILE's internal representation and the three-pointer 
1338.320 -// representation that basic_streambuf<> needs.
1338.321 -
1338.322 -_STLP_TEMPLATE_NULL 
1338.323 -#ifdef __SYMBIAN32__
1338.324 -class basic_streambuf<char, char_traits<char> >
1338.325 -#else
1338.326 -class _STLP_CLASS_DECLSPEC basic_streambuf<char, char_traits<char> >
1338.327 -#endif
1338.328 -{
1338.329 -  friend class basic_istream<char, char_traits<char> >;
1338.330 -  friend class basic_ostream<char, char_traits<char> >;
1338.331 -public:                         // Typedefs.
1338.332 -  typedef char                        char_type;
1338.333 -  typedef char_traits<char>::int_type int_type;
1338.334 -  typedef char_traits<char>::pos_type pos_type;
1338.335 -  typedef char_traits<char>::off_type off_type;
1338.336 -  typedef char_traits<char>           traits_type;
1338.337 -
1338.338 -private:                        // Data members.
1338.339 -
1338.340 -  FILE* _M_get;                 // Reference to the get area
1338.341 -  FILE* _M_put;                 // Reference to the put area
1338.342 -
1338.343 -#if defined(__hpux)
1338.344 -  _FILEX  _M_default_get;          // Get area, unless we're syncing with stdio.
1338.345 -  _FILEX  _M_default_put;          // Put area, unless we're syncing with stdio.
1338.346 -#else
1338.347 -  FILE  _M_default_get;          // Get area, unless we're syncing with stdio.
1338.348 -  FILE  _M_default_put;          // Put area, unless we're syncing with stdio.
1338.349 -#endif
1338.350 -
1338.351 -  locale _M_locale;
1338.352 -
1338.353 -public:                         // Extension: locking, for thread safety.
1338.354 -  _STLP_mutex _M_lock;
1338.355 -
1338.356 -public:                         // Destructor.
1338.357 -  _STLP_DECLSPEC virtual ~basic_streambuf _STLP_PSPEC2(char, char_traits<char>) ();
1338.358 -
1338.359 -public:
1338.360 -  // The default constructor; defined here inline as some compilers require it
1338.361 -  _STLP_DECLSPEC basic_streambuf _STLP_PSPEC2(char, char_traits<char>) ();
1338.362 -  // Extension: a constructor for streambufs synchronized with C stdio files.
1338.363 -  _STLP_DECLSPEC basic_streambuf _STLP_PSPEC2(char, char_traits<char>) (FILE* __get, FILE* __put);
1338.364 -
1338.365 -protected:                      // Protected interface to the get area.
1338.366 -  char_type* eback() const { return _FILE_I_begin(_M_get); }
1338.367 -  char_type* gptr()  const { return _FILE_I_next(_M_get); }
1338.368 -  char_type* egptr() const { return _FILE_I_end(_M_get); }
1338.369 -  void gbump(int __n) { _FILE_I_bump(_M_get, __n); }
1338.370 -  void setg(char_type* __gbegin, char_type* __gnext, char_type* __gend)
1338.371 -    { 
1338.372 -    _FILE_I_set(_M_get, __gbegin, __gnext, __gend); 
1338.373 -#ifdef __SYMBIAN32__
1338.374 -    _change_input_mode();
1338.375 -#endif
1338.376 -    }
1338.377 -
1338.378 -public:
1338.379 -  // An alternate public interface to the above functions
1338.380 -  // which allows us to avoid using templated friends which
1338.381 -  // are not supported on some compilers.
1338.382 -
1338.383 -  char_type* _M_eback() const { return _FILE_I_begin(_M_get); }
1338.384 -  char_type* _M_gptr()  const { return _FILE_I_next(_M_get); }
1338.385 -  char_type* _M_egptr() const { return _FILE_I_end(_M_get); }
1338.386 -
1338.387 -  void _M_gbump(int __n) { _FILE_I_bump(_M_get, __n); }
1338.388 -  void _M_setg(char_type* __gbegin, char_type* __gnext, char_type* __gend)
1338.389 -    { _FILE_I_set(_M_get, __gbegin, __gnext, __gend); }
1338.390 -
1338.391 -protected:                      // Protected interface to the put area
1338.392 -  char_type* pbase() const { return _FILE_O_begin(_M_put); }
1338.393 -  char_type* pptr()  const { return _FILE_O_next(_M_put); }
1338.394 -  char_type* epptr() const { return _FILE_O_end(_M_put); }
1338.395 -
1338.396 -  void pbump(int __n) { _FILE_O_bump(_M_put, __n); }
1338.397 -  void setp(char_type* __pbegin, char_type* __pend)
1338.398 -    { _FILE_O_set(_M_put, __pbegin, __pbegin, __pend); }
1338.399 -
1338.400 -protected:                      // Virtual buffer-management functions.
1338.401 -  _STLP_DECLSPEC virtual basic_streambuf<char, char_traits<char> >* setbuf(char_type*, streamsize);
1338.402 -  _STLP_DECLSPEC virtual pos_type seekoff(off_type, ios_base::seekdir,
1338.403 -                           ios_base::openmode = ios_base::in | ios_base::out);
1338.404 -  _STLP_DECLSPEC  virtual pos_type
1338.405 -  seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out);
1338.406 -  _STLP_DECLSPEC virtual int sync();
1338.407 -
1338.408 -public:                         // Buffer management.
1338.409 -  basic_streambuf<char, char_traits<char> >* pubsetbuf(char_type* __s, streamsize __n) 
1338.410 -    { return this->setbuf(__s, __n); }
1338.411 -
1338.412 -  pos_type pubseekoff(off_type __offset, ios_base::seekdir __way,
1338.413 -                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1338.414 -    { return this->seekoff(__offset, __way, __mod); }
1338.415 -
1338.416 -  pos_type pubseekpos(pos_type __sp,
1338.417 -                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1338.418 -    { return this->seekpos(__sp, __mod); }
1338.419 -
1338.420 -  int pubsync() { return this->sync(); }
1338.421 -
1338.422 -protected:                      // Virtual get area functions.
1338.423 -  _STLP_DECLSPEC virtual streamsize showmanyc();
1338.424 -  _STLP_DECLSPEC virtual streamsize xsgetn(char_type* __s, streamsize __n);
1338.425 -  _STLP_DECLSPEC virtual int_type underflow();
1338.426 -  _STLP_DECLSPEC virtual int_type uflow();
1338.427 -  _STLP_DECLSPEC virtual int_type pbackfail(int_type __c = traits_type::eof());
1338.428 -
1338.429 -protected:                      // Virtual put area functions.
1338.430 -  _STLP_DECLSPEC virtual streamsize xsputn(const char_type* __s, streamsize __n);
1338.431 -  _STLP_DECLSPEC virtual streamsize _M_xsputnc(char_type __c, streamsize __n);
1338.432 -  _STLP_DECLSPEC virtual int_type overflow(int_type = traits_type::eof());
1338.433 -#ifdef __SYMBIAN32__  
1338.434 -  virtual int save_read_buffer () { return 0; }
1338.435 -  virtual void _change_input_mode() {};
1338.436 -#endif
1338.437 -public:                         // Public members for writing characters.
1338.438 -  // Write a single character.
1338.439 -  int_type sputc(char_type __c) {
1338.440 -    int_type __res;
1338.441 -	if( _FILE_O_avail(_M_put) > 0 )
1338.442 -	{
1338.443 -		_FILE_O_postincr(_M_put) = __c;
1338.444 -		__res = traits_type::to_int_type(__c);
1338.445 -	}
1338.446 -	else
1338.447 -      __res = this->overflow(traits_type::to_int_type(__c));
1338.448 -    return __res;
1338.449 -  }
1338.450 -
1338.451 -  // Write __n characters.
1338.452 -  streamsize sputn(const char_type* __s, streamsize __n)
1338.453 -    { return this->xsputn(__s, __n); }
1338.454 -
1338.455 -  // Extension: write __n copies of __c.
1338.456 -  streamsize _M_sputnc(char_type __c, streamsize __n)
1338.457 -    { return this->_M_xsputnc(__c, __n); }
1338.458 -
1338.459 -private:                        // Helper functions.
1338.460 -  _STLP_DECLSPEC int_type _M_snextc_aux();
1338.461 -
1338.462 -public:                         // Public members for reading characters.
1338.463 -  streamsize in_avail()
1338.464 -    { return _FILE_I_avail(_M_get) > 0 ? _FILE_I_avail(_M_get)
1338.465 -#ifdef __SYMBIAN32__  
1338.466 -                                     + save_read_buffer()
1338.467 -#endif
1338.468 -                                     : this->showmanyc(); }
1338.469 -  
1338.470 -  // Advance to the next character and return it.
1338.471 -  int_type snextc() {
1338.472 -    return _FILE_I_avail(_M_get) > 1
1338.473 -      ? traits_type::to_int_type(_FILE_I_preincr(_M_get))
1338.474 -      : this->_M_snextc_aux();
1338.475 -  }
1338.476 -
1338.477 -  // Return the current character and advance to the next.
1338.478 -  int_type sbumpc() {
1338.479 -    return _FILE_I_avail(_M_get) > 0
1338.480 -      ? traits_type::to_int_type(_FILE_I_postincr(_M_get))
1338.481 -      : this->uflow();
1338.482 -  }
1338.483 -
1338.484 -  // Return the current character without advancing to the next.
1338.485 -  int_type sgetc() {
1338.486 -    return _FILE_I_avail(_M_get) > 0
1338.487 -      ? traits_type::to_int_type(*_FILE_I_next(_M_get))
1338.488 -      : this->underflow();
1338.489 -  }
1338.490 -    
1338.491 -  streamsize sgetn(char_type* __s, streamsize __n)
1338.492 -    { return this->xsgetn(__s, __n); }
1338.493 -
1338.494 -  int_type sputbackc(char_type __c) {
1338.495 -    return _FILE_I_begin(_M_get) < _FILE_I_next(_M_get) &&
1338.496 -           __c == *(_FILE_I_next(_M_get) - 1)
1338.497 -      ? traits_type::to_int_type(_FILE_I_predecr(_M_get))
1338.498 -      : this->pbackfail(traits_type::to_int_type(__c));
1338.499 -  }
1338.500 -
1338.501 -  int_type sungetc() {
1338.502 -    return _FILE_I_begin(_M_get) < _FILE_I_next(_M_get)
1338.503 -      ? traits_type::to_int_type(_FILE_I_predecr(_M_get))
1338.504 -      : this->pbackfail();
1338.505 -  }
1338.506 -
1338.507 -protected:                      // Virtual locale functions.
1338.508 -  _STLP_DECLSPEC virtual void imbue(const locale&);
1338.509 -public:                         // Locale-related functions.
1338.510 -  _STLP_DECLSPEC locale pubimbue(const locale&);
1338.511 -  locale getloc() const { return _M_locale; }
1338.512 -
1338.513 -# ifndef _STLP_NO_ANACHRONISMS
1338.514 -public:
1338.515 -  void stossc() { this->sbumpc(); }
1338.516 -# endif
1338.517 -
1338.518 -#if defined(__MVS__) || defined(__OS400__)
1338.519 -private: // Data members.
1338.520 -
1338.521 -  char_type* _M_gbegin; // Beginning of get area
1338.522 -  char_type* _M_gnext; // Current position within the get area
1338.523 -  char_type* _M_gend; // End of get area
1338.524 -
1338.525 -  char_type* _M_pbegin; // Beginning of put area
1338.526 -  char_type* _M_pnext; // Current position within the put area
1338.527 -  char_type* _M_pend; // End of put area
1338.528 -#endif
1338.529 -
1338.530 -};
1338.531 -_STLP_END_NAMESPACE
1338.532 -
1338.533 -# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1338.534 -#  include <stl/_streambuf.c>
1338.535 -# endif
1338.536 -
1338.537 -#endif
1338.538 -// Local Variables:
1338.539 -// mode:C++
1338.540 -// End:
  1339.1 --- a/epoc32/include/stdapis/stlport/stl/_string.c	Tue Mar 16 16:12:26 2010 +0000
  1339.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1339.3 @@ -1,627 +0,0 @@
  1339.4 -/*
  1339.5 - *  © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1339.6 - *
  1339.7 - * Copyright (c) 1994
  1339.8 - * Hewlett-Packard Company
  1339.9 - *
 1339.10 - * Copyright (c) 1996,1997
 1339.11 - * Silicon Graphics Computer Systems, Inc.
 1339.12 - *
 1339.13 - * Copyright (c) 1997
 1339.14 - * Moscow Center for SPARC Technology
 1339.15 - *
 1339.16 - * Copyright (c) 1999 
 1339.17 - * Boris Fomitchev
 1339.18 - *
 1339.19 - * This material is provided "as is", with absolutely no warranty expressed
 1339.20 - * or implied. Any use is at your own risk.
 1339.21 - *
 1339.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1339.23 - * without fee, provided the above notices are retained on all copies.
 1339.24 - * Permission to modify the code and to distribute modified code is granted,
 1339.25 - * provided the above notices are retained, and a notice that the code was
 1339.26 - * modified is included with the above copyright notice.
 1339.27 - *
 1339.28 - */
 1339.29 -#ifndef _STLP_STRING_C
 1339.30 -#define _STLP_STRING_C
 1339.31 -
 1339.32 -#ifndef _STLP_STRING_H
 1339.33 -# include <stl/_string.h>
 1339.34 -#endif
 1339.35 -
 1339.36 -# ifdef _STLP_DEBUG
 1339.37 -#  define basic_string _Nondebug_string
 1339.38 -# endif
 1339.39 -
 1339.40 -# if defined (_STLP_USE_OWN_NAMESPACE) || !defined (_STLP_USE_NATIVE_STRING)
 1339.41 -
 1339.42 -# if defined (_STLP_NESTED_TYPE_PARAM_BUG)
 1339.43 -#  define __size_type__ size_t
 1339.44 -#  define size_type size_t
 1339.45 -#  define iterator   _CharT*
 1339.46 -# else
 1339.47 -#  define __size_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_string<_CharT,_Traits,_Alloc>::size_type
 1339.48 -# endif
 1339.49 -
 1339.50 -_STLP_BEGIN_NAMESPACE
 1339.51 -
 1339.52 -// ------------------------------------------------------------
 1339.53 -// Non-inline declarations.
 1339.54 -
 1339.55 -
 1339.56 -// Change the string's capacity so that it is large enough to hold
 1339.57 -//  at least __res_arg elements, plus the terminating _CharT().  Note that,
 1339.58 -//  if __res_arg < capacity(), this member function may actually decrease
 1339.59 -//  the string's capacity.
 1339.60 -template <class _CharT, class _Traits, class _Alloc> 
 1339.61 -_STLP_EXP_DECLSPEC void basic_string<_CharT,_Traits,_Alloc>::reserve(size_type __res_arg) {
 1339.62 -
 1339.63 -  if (__res_arg >= capacity())
 1339.64 -    {      
 1339.65 -      if (__res_arg > max_size())
 1339.66 -	this->_M_throw_length_error();
 1339.67 -
 1339.68 -      size_type __n = __res_arg + 1;
 1339.69 -      _STLP_LEAVE_VOLATILE pointer __new_start = this->_M_end_of_storage.allocate(__n);
 1339.70 -      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
 1339.71 -      
 1339.72 -      _STLP_TRY {
 1339.73 -	__new_finish = uninitialized_copy(this->_M_start, this->_M_finish, __new_start);
 1339.74 -	_M_construct_null(__new_finish);
 1339.75 -      }
 1339.76 -      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start, __new_finish), 
 1339.77 -		    this->_M_end_of_storage.deallocate(__new_start, __n)));
 1339.78 -      
 1339.79 -      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
 1339.80 -      this->_M_deallocate_block();
 1339.81 -      this->_M_start = __new_start;
 1339.82 -      this->_M_finish = __new_finish;
 1339.83 -      this->_M_end_of_storage._M_data = __new_start + __n;
 1339.84 -    }
 1339.85 -}
 1339.86 -
 1339.87 -template <class _CharT, class _Traits, class _Alloc> 
 1339.88 -_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
 1339.89 -basic_string<_CharT,_Traits,_Alloc>::append(size_type __n, _CharT __c) 
 1339.90 -{
 1339.91 -  if (__n > max_size() || size() > max_size() - __n)
 1339.92 -    this->_M_throw_length_error();
 1339.93 -  if (size() + __n > capacity())
 1339.94 -    reserve(size() + (max)(size(), __n));
 1339.95 -  if (__n > 0) {
 1339.96 -    uninitialized_fill_n(this->_M_finish + 1, __n - 1, __c);
 1339.97 -    _STLP_TRY {
 1339.98 -      _M_construct_null(this->_M_finish + __n);
 1339.99 -    }
1339.100 -    _STLP_UNWIND(_STLP_STD::_Destroy(this->_M_finish + 1, this->_M_finish + __n));
1339.101 -    _Traits::assign(*end(), __c);
1339.102 -    this->_M_finish += __n;
1339.103 -  }
1339.104 -  return *this;
1339.105 -}
1339.106 -
1339.107 -#ifndef _STLP_MEMBER_TEMPLATES
1339.108 -
1339.109 -template <class _CharT, class _Traits, class _Alloc> 
1339.110 -_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>& 
1339.111 -basic_string<_CharT, _Traits, _Alloc>::append(const _CharT* __first,
1339.112 -					      const _CharT* __last)
1339.113 -{
1339.114 -  if (__first != __last) {
1339.115 -    const size_type __old_size = size();
1339.116 -    ptrdiff_t __n = __last - __first;
1339.117 -    if ((size_type)__n > max_size() || __old_size > max_size() - __n)
1339.118 -      this->_M_throw_length_error();
1339.119 -    if (__old_size + __n > capacity()) {
1339.120 -      const size_type __len = __old_size + (max)(__old_size, (size_t) __n) + 1;
1339.121 -      pointer __new_start = this->_M_end_of_storage.allocate(__len);
1339.122 -      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1339.123 -      _STLP_TRY {
1339.124 -        __new_finish = uninitialized_copy(this->_M_start, this->_M_finish, __new_start);
1339.125 -        __new_finish = uninitialized_copy(__first, __last, __new_finish);
1339.126 -        _M_construct_null(__new_finish);
1339.127 -      }
1339.128 -      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish),
1339.129 -                    this->_M_end_of_storage.deallocate(__new_start,__len)));
1339.130 -      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1339.131 -      this->_M_deallocate_block();
1339.132 -      this->_M_start = __new_start;
1339.133 -      this->_M_finish = __new_finish;
1339.134 -      this->_M_end_of_storage._M_data = __new_start + __len; 
1339.135 -    }
1339.136 -    else {
1339.137 -      const _CharT* __f1 = __first;
1339.138 -      ++__f1;
1339.139 -      uninitialized_copy(__f1, __last, this->_M_finish + 1);
1339.140 -      _STLP_TRY {
1339.141 -        _M_construct_null(this->_M_finish + __n);
1339.142 -      }
1339.143 -      _STLP_UNWIND(_STLP_STD::_Destroy(this->_M_finish + 1, this->_M_finish + __n));
1339.144 -      _Traits::assign(*end(), *__first);
1339.145 -      this->_M_finish += __n;
1339.146 -    }
1339.147 -  }
1339.148 -  return *this;  
1339.149 -}
1339.150 -
1339.151 -#endif /* _STLP_MEMBER_TEMPLATES */
1339.152 -
1339.153 -template <class _CharT, class _Traits, class _Alloc> 
1339.154 -_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
1339.155 -basic_string<_CharT,_Traits,_Alloc>::assign(size_type __n, _CharT __c) {
1339.156 -  if (__n <= size()) {
1339.157 -    _Traits::assign(this->_M_start, __n, __c);
1339.158 -    erase(begin() + __n, end());
1339.159 -  }
1339.160 -  else {
1339.161 -    _Traits::assign(this->_M_start, size(), __c);
1339.162 -    append(__n - size(), __c);
1339.163 -  }
1339.164 -  return *this;
1339.165 -}
1339.166 -
1339.167 -template <class _CharT, class _Traits, class _Alloc> 
1339.168 -_CharT* basic_string<_CharT,_Traits,_Alloc> ::_M_insert_aux(_CharT* __p,
1339.169 -                  _CharT __c)
1339.170 -{
1339.171 -  pointer __new_pos = __p;
1339.172 -  if (this->_M_finish + 1 < this->_M_end_of_storage._M_data) {
1339.173 -    _M_construct_null(this->_M_finish + 1);
1339.174 -    _Traits::move(__p + 1, __p, this->_M_finish - __p);
1339.175 -    _Traits::assign(*__p, __c);
1339.176 -    ++this->_M_finish;
1339.177 -  }
1339.178 -  else {
1339.179 -    const size_type __old_len = size();
1339.180 -    const size_type __len = __old_len +
1339.181 -                            (max)(__old_len, __STATIC_CAST(size_type,1)) + 1;
1339.182 -    pointer __new_start = this->_M_end_of_storage.allocate(__len);
1339.183 -    _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1339.184 -    _STLP_TRY {
1339.185 -      __new_pos = uninitialized_copy(this->_M_start, __p, __new_start);
1339.186 -      _Construct(__new_pos, __c);
1339.187 -      __new_finish = __new_pos + 1;
1339.188 -      __new_finish = uninitialized_copy(__p, this->_M_finish, __new_finish);
1339.189 -      _M_construct_null(__new_finish);
1339.190 -    }
1339.191 -    _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish), 
1339.192 -                  this->_M_end_of_storage.deallocate(__new_start,__len)));
1339.193 -    _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1339.194 -    this->_M_deallocate_block();
1339.195 -    this->_M_start = __new_start;
1339.196 -    this->_M_finish = __new_finish;
1339.197 -    this->_M_end_of_storage._M_data = __new_start + __len;
1339.198 -  }
1339.199 -  return __new_pos;
1339.200 -}
1339.201 -
1339.202 -template <class _CharT, class _Traits, class _Alloc> 
1339.203 -_STLP_EXP_DECLSPEC void basic_string<_CharT,_Traits,_Alloc>::insert(iterator __position,
1339.204 -           size_t __n, _CharT __c)
1339.205 -{
1339.206 -  if (__n != 0) {
1339.207 -    if (size_type(this->_M_end_of_storage._M_data - this->_M_finish) >= __n + 1) {
1339.208 -      const size_type __elems_after = this->_M_finish - __position;
1339.209 -      pointer __old_finish = this->_M_finish;
1339.210 -      if (__elems_after >= __n) {
1339.211 -        uninitialized_copy((this->_M_finish - __n) + 1, this->_M_finish + 1,
1339.212 -                           this->_M_finish + 1);
1339.213 -        this->_M_finish += __n;
1339.214 -        _Traits::move(__position + __n,
1339.215 -                      __position, (__elems_after - __n) + 1);
1339.216 -        _Traits::assign(__position, __n, __c);
1339.217 -      }
1339.218 -      else {
1339.219 -        uninitialized_fill_n(this->_M_finish + 1, __n - __elems_after - 1, __c);
1339.220 -        this->_M_finish += __n - __elems_after;
1339.221 -        _STLP_TRY {
1339.222 -          uninitialized_copy(__position, __old_finish + 1, this->_M_finish);
1339.223 -          this->_M_finish += __elems_after;
1339.224 -        }
1339.225 -        _STLP_UNWIND((_STLP_STD::_Destroy(__old_finish + 1, this->_M_finish), 
1339.226 -                      this->_M_finish = __old_finish));
1339.227 -        _Traits::assign(__position, __elems_after + 1, __c);
1339.228 -      }
1339.229 -    }
1339.230 -    else {
1339.231 -      const size_type __old_size = size();        
1339.232 -      const size_type __len = __old_size + (max)(__old_size, __n) + 1;
1339.233 -      pointer __new_start = this->_M_end_of_storage.allocate(__len);
1339.234 -      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1339.235 -      _STLP_TRY {
1339.236 -        __new_finish = uninitialized_copy(this->_M_start, __position, __new_start);
1339.237 -        __new_finish = uninitialized_fill_n(__new_finish, __n, __c);
1339.238 -        __new_finish = uninitialized_copy(__position, this->_M_finish,
1339.239 -                                          __new_finish);
1339.240 -        _M_construct_null(__new_finish);
1339.241 -      }
1339.242 -      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish),
1339.243 -                    this->_M_end_of_storage.deallocate(__new_start,__len)));
1339.244 -      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1339.245 -      this->_M_deallocate_block();
1339.246 -      this->_M_start = __new_start;
1339.247 -      this->_M_finish = __new_finish;
1339.248 -      this->_M_end_of_storage._M_data = __new_start + __len;    
1339.249 -    }
1339.250 -  }
1339.251 -}
1339.252 -
1339.253 -#ifndef _STLP_MEMBER_TEMPLATES
1339.254 -
1339.255 -template <class _CharT, class _Traits, class _Alloc> 
1339.256 -_STLP_EXP_DECLSPEC void 
1339.257 -basic_string<_CharT,_Traits,_Alloc>::insert(iterator __position,
1339.258 -                                            const _CharT* __first, 
1339.259 -                                            const _CharT* __last)
1339.260 -{
1339.261 -  if (__first != __last) {
1339.262 -    const ptrdiff_t __n = __last - __first;
1339.263 -    if (this->_M_end_of_storage._M_data - this->_M_finish >= __n + 1) {
1339.264 -      const ptrdiff_t __elems_after = this->_M_finish - __position;
1339.265 -      pointer __old_finish = this->_M_finish;
1339.266 -      if (__elems_after >= __n) {
1339.267 -        uninitialized_copy((this->_M_finish - __n) + 1, this->_M_finish + 1,
1339.268 -                           this->_M_finish + 1);
1339.269 -        this->_M_finish += __n;
1339.270 -        _Traits::move(__position + __n,
1339.271 -                      __position, (__elems_after - __n) + 1);
1339.272 -        _M_copy(__first, __last, __position);
1339.273 -      }
1339.274 -      else {
1339.275 -        const _CharT* __mid = __first;
1339.276 -        advance(__mid, __elems_after + 1);
1339.277 -        uninitialized_copy(__mid, __last, this->_M_finish + 1);
1339.278 -        this->_M_finish += __n - __elems_after;
1339.279 -        _STLP_TRY {
1339.280 -          uninitialized_copy(__position, __old_finish + 1, this->_M_finish);
1339.281 -          this->_M_finish += __elems_after;
1339.282 -        }
1339.283 -        _STLP_UNWIND((_STLP_STD::_Destroy(__old_finish + 1, this->_M_finish), 
1339.284 -                      this->_M_finish = __old_finish));
1339.285 -        _M_copy(__first, __mid, __position);
1339.286 -      }
1339.287 -    }
1339.288 -    else {
1339.289 -      size_type __old_size = size();        
1339.290 -      size_type __len
1339.291 -        = __old_size + (max)(__old_size, __STATIC_CAST(const size_type,__n)) + 1;
1339.292 -      pointer __new_start = this->_M_end_of_storage.allocate(__len);
1339.293 -      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1339.294 -      _STLP_TRY {
1339.295 -        __new_finish = uninitialized_copy(this->_M_start, __position, __new_start);
1339.296 -        __new_finish = uninitialized_copy(__first, __last, __new_finish);
1339.297 -        __new_finish
1339.298 -          = uninitialized_copy(__position, this->_M_finish, __new_finish);
1339.299 -        _M_construct_null(__new_finish);
1339.300 -      }
1339.301 -      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish),
1339.302 -                    this->_M_end_of_storage.deallocate(__new_start,__len)));
1339.303 -      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1339.304 -      this->_M_deallocate_block();
1339.305 -      this->_M_start = __new_start;
1339.306 -      this->_M_finish = __new_finish;
1339.307 -      this->_M_end_of_storage._M_data = __new_start + __len; 
1339.308 -    }
1339.309 -  }
1339.310 -}
1339.311 -
1339.312 -#endif /* _STLP_MEMBER_TEMPLATES */
1339.313 -
1339.314 -template <class _CharT, class _Traits, class _Alloc> 
1339.315 -_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
1339.316 -basic_string<_CharT,_Traits,_Alloc>::replace(iterator __first, iterator __last, size_type __n, _CharT __c)
1339.317 -{
1339.318 -  size_type __len = (size_type)(__last - __first);
1339.319 -  
1339.320 -  if (__len >= __n) {
1339.321 -    _Traits::assign(__first, __n, __c);
1339.322 -    erase(__first + __n, __last);
1339.323 -  }
1339.324 -  else {
1339.325 -    _Traits::assign(__first, __len, __c);
1339.326 -    insert(__last, __n - __len, __c);
1339.327 -  }
1339.328 -  return *this;
1339.329 -}
1339.330 -
1339.331 -#ifndef _STLP_MEMBER_TEMPLATES
1339.332 -
1339.333 -
1339.334 -template <class _CharT, class _Traits, class _Alloc> 
1339.335 -_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
1339.336 -basic_string<_CharT,_Traits,_Alloc> ::replace(iterator __first, iterator __last,
1339.337 -            const _CharT* __f, const _CharT* __l)
1339.338 -{
1339.339 -  const ptrdiff_t         __n = __l - __f;
1339.340 -  const difference_type __len = __last - __first;
1339.341 -  if (__len >= __n) {
1339.342 -    _M_copy(__f, __l, __first);
1339.343 -    erase(__first + __n, __last);
1339.344 -  }
1339.345 -  else {
1339.346 -    const _CharT* __m = __f + __len;
1339.347 -    _M_copy(__f, __m, __first);
1339.348 -    insert(__last, __m, __l);
1339.349 -  }
1339.350 -  return *this;
1339.351 -}
1339.352 -
1339.353 -#endif /* _STLP_MEMBER_TEMPLATES */
1339.354 -
1339.355 -template <class _CharT, class _Traits, class _Alloc> 
1339.356 -_STLP_EXP_DECLSPEC __size_type__
1339.357 -basic_string<_CharT,_Traits,_Alloc> ::find(const _CharT* __s, size_type __pos, size_type __n) const 
1339.358 -{
1339.359 -#ifndef __SYMBIAN32__ // A different implementation without using search
1339.360 -  if (__pos + __n > size())
1339.361 -    return npos;
1339.362 -  else {
1339.363 -    const const_pointer __result =
1339.364 -      _STLP_STD::search((const _CharT*)this->_M_start + __pos, (const _CharT*)this->_M_finish, 
1339.365 -			__s, __s + __n, _Eq_traits<_Traits>());
1339.366 -    return __result != this->_M_finish ? __result - this->_M_start : npos;
1339.367 -  }
1339.368 -#else
1339.369 -  const size_type __len = this->size();
1339.370 -  size_t __tpos = __pos;
1339.371 -  const _CharT* __data = this->_M_start;
1339.372 -  while (__tpos + __n <= __len) {
1339.373 -    if (traits_type::compare(__data + __tpos, __s, __n) == 0)
1339.374 -      return __tpos;
1339.375 -    ++__tpos;
1339.376 -  }
1339.377 -  return npos;  
1339.378 -#endif //__SYMBIAN32__  
1339.379 -}
1339.380 -
1339.381 -template <class _CharT, class _Traits, class _Alloc> 
1339.382 -_STLP_EXP_DECLSPEC __size_type__
1339.383 -basic_string<_CharT,_Traits,_Alloc> ::find(_CharT __c, size_type __pos) const 
1339.384 -{
1339.385 -  if (__pos >= size())
1339.386 -    return npos;
1339.387 -  else {
1339.388 -    const const_pointer __result =
1339.389 -      _STLP_STD::find_if((const _CharT*)this->_M_start + __pos, (const _CharT*)this->_M_finish,
1339.390 -			 _Eq_char_bound<_Traits>(__c));
1339.391 -    return __result != this->_M_finish ? __result - this->_M_start : npos;
1339.392 -  }
1339.393 -}    
1339.394 -
1339.395 -template <class _CharT, class _Traits, class _Alloc> 
1339.396 -_STLP_EXP_DECLSPEC __size_type__
1339.397 -basic_string<_CharT,_Traits,_Alloc> ::rfind(const _CharT* __s, size_type __pos, size_type __n) const 
1339.398 -{
1339.399 -  const size_t __len = size();
1339.400 -
1339.401 -  if (__n > __len)
1339.402 -    return npos;
1339.403 -  else if (__n == 0)
1339.404 -    return (min) (__len, __pos);
1339.405 -  else {
1339.406 -    const_pointer __last = this->_M_start + (min) (__len - __n, __pos) + __n;
1339.407 -    const_pointer __result = _STLP_STD::find_end((const_pointer)this->_M_start, __last,
1339.408 -						 __s, __s + __n,
1339.409 -						 _Eq_traits<_Traits>());
1339.410 -    return __result != __last ? __result - this->_M_start : npos;
1339.411 -  }
1339.412 -}
1339.413 -
1339.414 -template <class _CharT, class _Traits, class _Alloc> 
1339.415 -_STLP_EXP_DECLSPEC __size_type__
1339.416 -basic_string<_CharT,_Traits,_Alloc> ::rfind(_CharT __c, size_type __pos) const 
1339.417 -{
1339.418 -  const size_type __len = size();
1339.419 -
1339.420 -  if (__len < 1)
1339.421 -    return npos;
1339.422 -  else {
1339.423 -    const const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1339.424 -    const_reverse_iterator __rresult =
1339.425 -      _STLP_STD::find_if(const_reverse_iterator(__last), rend(),
1339.426 -              _Eq_char_bound<_Traits>(__c));
1339.427 -    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1339.428 -  }
1339.429 -}
1339.430 -
1339.431 -template <class _CharT, class _Traits, class _Alloc> 
1339.432 -_STLP_EXP_DECLSPEC __size_type__
1339.433 -basic_string<_CharT,_Traits,_Alloc> 
1339.434 -    ::find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
1339.435 -{
1339.436 -  if (__pos >= size())
1339.437 -    return npos;
1339.438 -  else {
1339.439 -    const_iterator __result = __find_first_of(begin() + __pos, end(),
1339.440 -                                              __s, __s + __n,
1339.441 -                                              _Eq_traits<_Traits>());
1339.442 -    return __result != end() ? __result - begin() : npos;
1339.443 -  }
1339.444 -}
1339.445 -
1339.446 -
1339.447 -template <class _CharT, class _Traits, class _Alloc> 
1339.448 -_STLP_EXP_DECLSPEC __size_type__
1339.449 -basic_string<_CharT,_Traits,_Alloc> 
1339.450 -    ::find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
1339.451 -{
1339.452 -  const size_type __len = size();
1339.453 -
1339.454 -  if (__len < 1)
1339.455 -    return npos;
1339.456 -  else {
1339.457 -    const const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1339.458 -    const const_reverse_iterator __rresult =
1339.459 -      __find_first_of(const_reverse_iterator(__last), rend(),
1339.460 -                      __s, __s + __n,
1339.461 -                      _Eq_traits<_Traits>());
1339.462 -    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1339.463 -  }
1339.464 -}
1339.465 -
1339.466 -
1339.467 -template <class _CharT, class _Traits, class _Alloc> 
1339.468 -_STLP_EXP_DECLSPEC __size_type__
1339.469 -basic_string<_CharT,_Traits,_Alloc> ::find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
1339.470 -{
1339.471 -  typedef typename _Traits::char_type _CharType;
1339.472 -  if (__pos > size())
1339.473 -    return npos;
1339.474 -  else {
1339.475 -    const_pointer __result = _STLP_STD::find_if((const _CharT*)this->_M_start + __pos, 
1339.476 -				      (const _CharT*)this->_M_finish,
1339.477 -                                _Not_within_traits<_Traits>((const _CharType*)__s, 
1339.478 -							    (const _CharType*)__s + __n));
1339.479 -    return __result != this->_M_finish ? __result - this->_M_start : npos;
1339.480 -  }
1339.481 -}
1339.482 -
1339.483 -template <class _CharT, class _Traits, class _Alloc> 
1339.484 -_STLP_EXP_DECLSPEC __size_type__
1339.485 -basic_string<_CharT,_Traits,_Alloc> ::find_first_not_of(_CharT __c, size_type __pos) const
1339.486 -{
1339.487 -  if (__pos > size())
1339.488 -    return npos;
1339.489 -  else {
1339.490 -    const_pointer __result = _STLP_STD::find_if((const _CharT*)this->_M_start + __pos, (const _CharT*)this->_M_finish,
1339.491 -						_Neq_char_bound<_Traits>(__c));
1339.492 -    return __result != this->_M_finish ? __result - this->_M_start : npos;
1339.493 -  }
1339.494 -}    
1339.495 -
1339.496 -template <class _CharT, class _Traits, class _Alloc> 
1339.497 -_STLP_EXP_DECLSPEC __size_type__
1339.498 -basic_string<_CharT,_Traits,_Alloc> ::find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 
1339.499 -{
1339.500 -  typedef typename _Traits::char_type _CharType;
1339.501 -  const size_type __len = size();
1339.502 -
1339.503 -  if (__len < 1)
1339.504 -    return npos;
1339.505 -  else {
1339.506 -    const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1339.507 -    const_reverse_iterator __rlast = const_reverse_iterator(__last);
1339.508 -    const_reverse_iterator __rresult =
1339.509 -      _STLP_STD::find_if(__rlast, rend(),
1339.510 -			 _Not_within_traits<_Traits>((const _CharType*)__s, 
1339.511 -						     (const _CharType*)__s + __n));
1339.512 -    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1339.513 -  }
1339.514 -}
1339.515 -
1339.516 -template <class _CharT, class _Traits, class _Alloc> 
1339.517 -_STLP_EXP_DECLSPEC __size_type__
1339.518 -basic_string<_CharT, _Traits, _Alloc> ::find_last_not_of(_CharT __c, size_type __pos) const 
1339.519 -{
1339.520 -  const size_type __len = size();
1339.521 -
1339.522 -  if (__len < 1)
1339.523 -    return npos;
1339.524 -  else {
1339.525 -    const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1339.526 -    const_reverse_iterator __rlast = const_reverse_iterator(__last);
1339.527 -    const_reverse_iterator __rresult =
1339.528 -      _STLP_STD::find_if(__rlast, rend(),
1339.529 -			 _Neq_char_bound<_Traits>(__c));
1339.530 -    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1339.531 -  }
1339.532 -}
1339.533 -
1339.534 -template <class _CharT, class _Traits, class _Alloc> 
1339.535 -void _STLP_CALL _S_string_copy(const basic_string<_CharT,_Traits,_Alloc>& __s,
1339.536 -                    _CharT* __buf,
1339.537 -                    size_t __n)
1339.538 -{
1339.539 -  if (__n > 0) {
1339.540 -    __n = (min) (__n - 1, __s.size());
1339.541 -    _STLP_STD::copy(__s.begin(), __s.begin() + __n, __buf);
1339.542 -    __buf[__n] = _CharT();
1339.543 -  }
1339.544 -}
1339.545 -_STLP_END_NAMESPACE
1339.546 -
1339.547 -// _string_fwd has to see clean basic_string
1339.548 -# undef basic_string
1339.549 -
1339.550 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1339.551 -#  include <stl/_string_fwd.c> 
1339.552 -# endif
1339.553 -
1339.554 -# ifdef _STLP_DEBUG
1339.555 -#  define basic_string _Nondebug_string
1339.556 -# endif
1339.557 -
1339.558 -# include <stl/_range_errors.h>  
1339.559 -_STLP_BEGIN_NAMESPACE
1339.560 -
1339.561 -// _String_base methods
1339.562 -template <class _Tp, class _Alloc> 
1339.563 -void _String_base<_Tp,_Alloc>::_M_throw_length_error() const {
1339.564 -    __stl_throw_length_error("basic_string");
1339.565 -}
1339.566 -
1339.567 -template <class _Tp, class _Alloc> 
1339.568 -void _String_base<_Tp, _Alloc>::_M_throw_out_of_range() const {
1339.569 -    __stl_throw_out_of_range("basic_string");
1339.570 -}
1339.571 -
1339.572 -template <class _Tp, class _Alloc> 
1339.573 -void _String_base<_Tp, _Alloc>::_M_allocate_block(size_t __n) {  
1339.574 -  if ((__n <= (max_size()+1)) && (__n>0)){ 
1339.575 -    _M_start  = _M_end_of_storage.allocate(__n); 
1339.576 -    _M_finish = _M_start; 
1339.577 -    _M_end_of_storage._M_data = _M_start + __n; 
1339.578 -  } 
1339.579 -    else 
1339.580 -      _M_throw_length_error(); 
1339.581 -} 
1339.582 - 
1339.583 -template <class _CharT, class _Traits, class _Alloc> 
1339.584 -_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>::basic_string()
1339.585 -  : _String_base<_CharT,_Alloc>(allocator_type()) 
1339.586 -{  
1339.587 -  this->_M_start = this->_M_end_of_storage.allocate(8); 
1339.588 -  this->_M_finish = this->_M_start; 
1339.589 -  this->_M_end_of_storage._M_data = this->_M_start + 8; 
1339.590 -  _M_terminate_string();  
1339.591 -  _STLP_POP_CLEANUP_ITEM
1339.592 -} 
1339.593 -
1339.594 -
1339.595 -template <class _CharT, class _Traits, class _Alloc> 
1339.596 -_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT* __s, 
1339.597 -						    const allocator_type& __a) 
1339.598 -  : _String_base<_CharT,_Alloc>(__a)  
1339.599 -{ 
1339.600 -  _STLP_FIX_LITERAL_BUG(__s) 
1339.601 -    _M_range_initialize(__s, __s + traits_type::length(__s));  
1339.602 -  _STLP_POP_CLEANUP_ITEM
1339.603 -} 
1339.604 -
1339.605 -
1339.606 -template <class _CharT, class _Traits, class _Alloc> 
1339.607 -_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>::basic_string(const basic_string<_CharT, _Traits, _Alloc> & __s)  
1339.608 -  : _String_base<_CharT,_Alloc>(__s.get_allocator())  
1339.609 -{  
1339.610 -  _M_range_initialize(__s._M_start, __s._M_finish);  
1339.611 -  _STLP_POP_CLEANUP_ITEM
1339.612 -} 
1339.613 -  
1339.614 -# if defined ( __SUNPRO_CC) && ! defined(_STLP_STATIC_CONST_INIT_BUG)
1339.615 -template <class _CharT, class _Traits, class _Alloc> const size_t basic_string<_CharT, _Traits, _Alloc>::npos;
1339.616 -# endif
1339.617 -
1339.618 -_STLP_END_NAMESPACE
1339.619 -
1339.620 -# undef basic_string
1339.621 -# undef __size_type__
1339.622 -# undef size_type
1339.623 -# undef iterator
1339.624 -# endif /* NATIVE */
1339.625 -
1339.626 -#endif /*  _STLP_STRING_C */
1339.627 -
1339.628 -// Local Variables:
1339.629 -// mode:C++
1339.630 -// End:
  1340.1 --- a/epoc32/include/stdapis/stlport/stl/_string_fwd.h	Tue Mar 16 16:12:26 2010 +0000
  1340.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1340.3 @@ -1,61 +0,0 @@
  1340.4 -/*
  1340.5 - * Copyright (c) 1997
  1340.6 - * Silicon Graphics Computer Systems, Inc.
  1340.7 - *
  1340.8 - * Copyright (c) 1999 
  1340.9 - * Boris Fomitchev
 1340.10 - *
 1340.11 - * This material is provided "as is", with absolutely no warranty expressed
 1340.12 - * or implied. Any use is at your own risk.
 1340.13 - *
 1340.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1340.15 - * without fee, provided the above notices are retained on all copies.
 1340.16 - * Permission to modify the code and to distribute modified code is granted,
 1340.17 - * provided the above notices are retained, and a notice that the code was
 1340.18 - * modified is included with the above copyright notice.
 1340.19 - *
 1340.20 - */
 1340.21 -
 1340.22 -#ifndef _STLP_STRING_FWD_H
 1340.23 -#define _STLP_STRING_FWD_H
 1340.24 -
 1340.25 -#ifndef _STLP_IOSFWD
 1340.26 -# include <iosfwd>
 1340.27 -#endif
 1340.28 -
 1340.29 -_STLP_BEGIN_NAMESPACE
 1340.30 -
 1340.31 -# if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
 1340.32 -template <class _CharT, 
 1340.33 -          class _Traits = char_traits<_CharT>, 
 1340.34 -          class _Alloc = allocator<_CharT> >
 1340.35 -class basic_string;
 1340.36 -# else
 1340.37 -template <class _CharT, 
 1340.38 -          class _Traits, 
 1340.39 -          class _Alloc>
 1340.40 -class basic_string;
 1340.41 -# endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */
 1340.42 -
 1340.43 -typedef basic_string<char, char_traits<char>, allocator<char> > string;
 1340.44 -
 1340.45 -#  ifdef _STLP_HAS_WCHAR_T
 1340.46 -typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
 1340.47 -#  endif
 1340.48 -
 1340.49 -# ifdef _STLP_OWN_IOSTREAMS
 1340.50 -_STLP_DECLSPEC const char*  _STLP_CALL
 1340.51 -__get_c_string(const string& __str);
 1340.52 -# else
 1340.53 -template <class _CharT, class _Traits, class _Alloc>
 1340.54 -const char* _STLP_CALL
 1340.55 -__get_c_string(const basic_string<_CharT, _Traits, _Alloc>& __str);
 1340.56 -# endif
 1340.57 -
 1340.58 -_STLP_END_NAMESPACE
 1340.59 -
 1340.60 -#endif /* _STLP_STRING_FWD_H */
 1340.61 -
 1340.62 -// Local Variables:
 1340.63 -// mode:C++
 1340.64 -// End:
  1341.1 --- a/epoc32/include/stdapis/stlport/stl/_string_hash.h	Tue Mar 16 16:12:26 2010 +0000
  1341.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1341.3 @@ -1,70 +0,0 @@
  1341.4 -/*
  1341.5 - * Copyright (c) 1997-1999
  1341.6 - * Silicon Graphics Computer Systems, Inc.
  1341.7 - *
  1341.8 - * Copyright (c) 1999 
  1341.9 - * Boris Fomitchev
 1341.10 - *
 1341.11 - * This material is provided "as is", with absolutely no warranty expressed
 1341.12 - * or implied. Any use is at your own risk.
 1341.13 - *
 1341.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1341.15 - * without fee, provided the above notices are retained on all copies.
 1341.16 - * Permission to modify the code and to distribute modified code is granted,
 1341.17 - * provided the above notices are retained, and a notice that the code was
 1341.18 - * modified is included with the above copyright notice.
 1341.19 - *
 1341.20 - */
 1341.21 -
 1341.22 -#ifndef _STLP_STRING_HASH_H
 1341.23 -# define _STLP_STRING_HASH_H
 1341.24 -
 1341.25 -#ifndef _STLP_HASH_FUN_H
 1341.26 -# include <stl/_hash_fun.h>
 1341.27 -#endif
 1341.28 -
 1341.29 -#ifndef _STLP_STRING_H
 1341.30 -# include <stl/_string.h>
 1341.31 -#endif
 1341.32 -
 1341.33 -_STLP_BEGIN_NAMESPACE
 1341.34 -
 1341.35 -template <class _CharT, class _Traits, class _Alloc>
 1341.36 -_STLP_INLINE_LOOP size_t
 1341.37 -__stl_string_hash(const basic_string<_CharT,_Traits,_Alloc>& __s) {
 1341.38 -  unsigned long __h = 0;
 1341.39 -  typedef typename basic_string<_CharT,_Traits,_Alloc>::const_pointer const_ptr;
 1341.40 -  size_t __len = __s.size();
 1341.41 -  const _CharT* __data = __s.data();
 1341.42 -  for ( size_t __i = 0; __i < __len; ++__i)
 1341.43 -    __h = 5*__h + __data[__i];
 1341.44 -  return size_t(__h);
 1341.45 -}
 1341.46 -
 1341.47 -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1341.48 -
 1341.49 -template <class _CharT, class _Traits, class _Alloc>
 1341.50 -struct hash<basic_string<_CharT,_Traits,_Alloc> > {
 1341.51 -  size_t operator()(const basic_string<_CharT,_Traits,_Alloc>& __s) const
 1341.52 -    { return __stl_string_hash(__s); }
 1341.53 -};
 1341.54 -
 1341.55 -#else
 1341.56 -
 1341.57 -_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC hash<string> {
 1341.58 -  size_t operator()(const string& __s) const
 1341.59 -    { return __stl_string_hash(__s); }
 1341.60 -};
 1341.61 -
 1341.62 -# if defined (_STLP_HAS_WCHAR_T)
 1341.63 -_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC hash<wstring> {
 1341.64 -  size_t operator()(const wstring& __s) const
 1341.65 -    { return __stl_string_hash(__s); }
 1341.66 -};
 1341.67 -# endif
 1341.68 -
 1341.69 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
 1341.70 -
 1341.71 -_STLP_END_NAMESPACE
 1341.72 -
 1341.73 -#endif
  1342.1 --- a/epoc32/include/stdapis/stlport/stl/_string_io.c	Tue Mar 16 16:12:26 2010 +0000
  1342.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1342.3 @@ -1,369 +0,0 @@
  1342.4 -/*
  1342.5 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1342.6 -
  1342.7 -* Redistribution and use in source and binary forms, with or without 
  1342.8 -* modification, are permitted provided that the following conditions are met:
  1342.9 -
 1342.10 -* Redistributions of source code must retain the above copyright notice, this 
 1342.11 -* list of conditions and the following disclaimer.
 1342.12 -* Redistributions in binary form must reproduce the above copyright notice, 
 1342.13 -* this list of conditions and the following disclaimer in the documentation 
 1342.14 -* and/or other materials provided with the distribution.
 1342.15 -* Neither the name of Nokia Corporation nor the names of its contributors 
 1342.16 -* may be used to endorse or promote products derived from this software 
 1342.17 -* without specific prior written permission.
 1342.18 -
 1342.19 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1342.20 -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1342.21 -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1342.22 -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1342.23 -* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1342.24 -* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1342.25 -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1342.26 -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1342.27 -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1342.28 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1342.29 -*
 1342.30 -* Description:
 1342.31 -*
 1342.32 -*/
 1342.33 -
 1342.34 -#ifndef _STLP_STRING_IO_C
 1342.35 -#define _STLP_STRING_IO_C
 1342.36 -
 1342.37 -#ifndef _STLP_STRING_IO_H
 1342.38 -# include <stl/_string_io.h>
 1342.39 -#endif
 1342.40 -
 1342.41 -#ifndef _STLP_INTERNAL_CTYPE_H
 1342.42 -# include <stl/_ctype.h>
 1342.43 -#endif
 1342.44 -
 1342.45 -# ifdef _STLP_DEBUG
 1342.46 -#  define basic_string _Nondebug_string
 1342.47 -# endif
 1342.48 -
 1342.49 -_STLP_BEGIN_NAMESPACE
 1342.50 -
 1342.51 -# if defined (_STLP_OWN_IOSTREAMS)
 1342.52 -#  define _STLP_USING_IO
 1342.53 -# else
 1342.54 -#  define _STLP_USING_IO _STLP_USING_VENDOR_STD
 1342.55 -# endif
 1342.56 -
 1342.57 -#if defined (_STLP_USE_NEW_IOSTREAMS)
 1342.58 -
 1342.59 -template <class _CharT, class _Traits>
 1342.60 -bool _STLP_CALL
 1342.61 -__stlp_string_fill(basic_ostream<_CharT, _Traits>& __os,
 1342.62 -                  basic_streambuf<_CharT, _Traits>* __buf,
 1342.63 -                  size_t __n)
 1342.64 -{
 1342.65 -  _CharT __f = __os.fill();
 1342.66 -  size_t __i;
 1342.67 -  bool __ok = true;
 1342.68 -
 1342.69 -  for (__i = 0; __i < __n; ++__i)
 1342.70 -    __ok = __ok && !_Traits::eq_int_type(__buf->sputc(__f), _Traits::eof());
 1342.71 -  return __ok;
 1342.72 -}
 1342.73 -
 1342.74 -template <class _CharT, class _Traits, class _Alloc>
 1342.75 -basic_ostream<_CharT, _Traits>& _STLP_CALL
 1342.76 -operator<<(basic_ostream<_CharT, _Traits>& __os, 
 1342.77 -           const basic_string<_CharT,_Traits,_Alloc>& __s)
 1342.78 -{
 1342.79 -
 1342.80 -  _STLP_USING_IO
 1342.81 -  typedef basic_ostream<_CharT, _Traits> __ostream;
 1342.82 -  typename __ostream::sentry __sentry(__os);
 1342.83 -  bool __ok = false;
 1342.84 -
 1342.85 -  if (__sentry) {
 1342.86 -    __ok = true;
 1342.87 -    size_t __n = __s.size();
 1342.88 -    size_t __pad_len = 0;
 1342.89 -    const bool __left = (__os.flags() & __ostream::left) != 0;
 1342.90 -    const size_t __w = __os.width(0);
 1342.91 -    basic_streambuf<_CharT, _Traits>* __buf = __os.rdbuf();
 1342.92 -
 1342.93 -    if (__n < __w) {
 1342.94 -      __pad_len = __w - __n;
 1342.95 -    }
 1342.96 -    
 1342.97 -    if (!__left)
 1342.98 -      __ok = __stlp_string_fill(__os, __buf, __pad_len);    
 1342.99 -
1342.100 -    __ok = __ok && (__buf->sputn(__s.data(), streamsize(__n)) == streamsize(__n));
1342.101 -
1342.102 -    if (__left)
1342.103 -      __ok = __ok && __stlp_string_fill(__os, __buf, __pad_len);
1342.104 -  }
1342.105 -
1342.106 -  if (!__ok)
1342.107 -    __os.setstate(__ostream::failbit);
1342.108 -
1342.109 -  return __os;
1342.110 -}
1342.111 - 
1342.112 -template <class _CharT, class _Traits, class _Alloc>
1342.113 -basic_istream<_CharT, _Traits>& _STLP_CALL 
1342.114 -operator>>(basic_istream<_CharT, _Traits>& __is,
1342.115 -           basic_string<_CharT,_Traits, _Alloc>& __s)
1342.116 -{
1342.117 -  _STLP_USING_IO
1342.118 -  typedef basic_istream<_CharT, _Traits> __istream;
1342.119 -  typename __istream::sentry __sentry(__is);
1342.120 -
1342.121 -  if (__sentry) {
1342.122 -    basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
1342.123 -    typedef ctype<_CharT> _C_type;
1342.124 -
1342.125 -#ifdef _STLP_OWN_IOSTREAMS
1342.126 -    //    const _C_type& _Ctype = use_facet<_C_type>(__loc);
1342.127 -    const _C_type& _Ctype = *(const _C_type*)__is._M_ctype_facet();
1342.128 -#else
1342.129 -# if defined (_STLP_MSVC) && (_STLP_MSVC <= 1200 ) || defined (__ICL)
1342.130 -    const locale& __loc = __is.getloc();
1342.131 -    const _C_type& _Ctype = use_facet(__loc , ( _C_type * ) 0, true);
1342.132 -# elif defined (__SUNPRO_CC)
1342.133 -    const locale& __loc = __is.getloc();
1342.134 -    const _C_type& _Ctype = use_facet(__loc , ( _C_type * ) 0);
1342.135 -# else
1342.136 -    const locale& __loc = __is.getloc();
1342.137 -    const _C_type& _Ctype = use_facet<_C_type>(__loc);
1342.138 -# endif
1342.139 -#endif
1342.140 -    __s.clear();
1342.141 -    size_t __n = __is.width(0);
1342.142 -    if (__n == 0)
1342.143 -      __n = __STATIC_CAST(size_t,-1);
1342.144 -    else
1342.145 -      __s.reserve(__n);
1342.146 -    
1342.147 -
1342.148 -    while (__n-- > 0) {
1342.149 -      typename _Traits::int_type __c1 = __buf->sbumpc();
1342.150 -      if (_Traits::eq_int_type(__c1, _Traits::eof())) {
1342.151 -        __is.setstate(__istream::eofbit);
1342.152 -        break;
1342.153 -      }
1342.154 -      else {
1342.155 -        _CharT __c = _Traits::to_char_type(__c1);
1342.156 -
1342.157 -        if (_Ctype.is(_C_type::space, __c)) {
1342.158 -          if (_Traits::eq_int_type(__buf->sputbackc(__c), _Traits::eof()))
1342.159 -            __is.setstate(__istream::failbit);
1342.160 -          break;
1342.161 -        }
1342.162 -#ifdef __SYMBIAN32__
1342.163 -        else if (__c == '\b') {
1342.164 -          __s.pop_back();
1342.165 -        }
1342.166 -#endif
1342.167 -        else
1342.168 -          __s.push_back(__c);
1342.169 -      }
1342.170 -    }
1342.171 -    
1342.172 -    // If we have read no characters, then set failbit.
1342.173 -    if (__s.size() == 0)
1342.174 -      __is.setstate(__istream::failbit);
1342.175 -  }
1342.176 -  else
1342.177 -    __is.setstate(__istream::failbit);
1342.178 -
1342.179 -  return __is;
1342.180 -}
1342.181 -
1342.182 -template <class _CharT, class _Traits, class _Alloc>    
1342.183 -basic_istream<_CharT, _Traits>& _STLP_CALL 
1342.184 -getline(basic_istream<_CharT, _Traits>& __is,
1342.185 -        basic_string<_CharT,_Traits,_Alloc>& __s,
1342.186 -        _CharT __delim)
1342.187 -{
1342.188 -  _STLP_USING_IO
1342.189 -  typedef basic_istream<_CharT, _Traits> __istream;
1342.190 -  size_t __nread = 0;
1342.191 -  typename basic_istream<_CharT, _Traits>::sentry __sentry(__is, true);
1342.192 -  if (__sentry) {
1342.193 -    basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
1342.194 -    __s.clear();
1342.195 -
1342.196 -    while (__nread < __s.max_size()) {
1342.197 -      int __c1 = __buf->sbumpc();
1342.198 -      if (_Traits::eq_int_type(__c1, _Traits::eof())) {
1342.199 -        __is.setstate(__istream::eofbit);
1342.200 -        break;
1342.201 -      }
1342.202 -      else {
1342.203 -        ++__nread;
1342.204 -        _CharT __c = _Traits::to_char_type(__c1);
1342.205 -        if (!_Traits::eq(__c, __delim)) 
1342.206 -          __s.push_back(__c);
1342.207 -        else
1342.208 -          break;              // Character is extracted but not appended.
1342.209 -      }
1342.210 -    }
1342.211 -  }
1342.212 -  if (__nread == 0 || __nread >= __s.max_size())
1342.213 -    __is.setstate(__istream::failbit);
1342.214 -
1342.215 -  return __is;
1342.216 -}
1342.217 -
1342.218 -#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
1342.219 -
1342.220 -// (reg) For Watcom IO, _OSTREAM_DLL tells if ostream class is in .exe or in .dll
1342.221 -
1342.222 -template <class _CharT, class _Traits, class _Alloc>
1342.223 -_OSTREAM_DLL&  _STLP_CALL operator<<(_OSTREAM_DLL& __os, 
1342.224 -                    const basic_string<_CharT,_Traits,_Alloc>& __s)
1342.225 -{
1342.226 -  _STLP_USING_IO
1342.227 -  streambuf* __buf = __os.rdbuf();
1342.228 -  if (__buf) {
1342.229 -    size_t __n = __s.size();
1342.230 -    size_t __pad_len = 0;
1342.231 -    const bool __left = (__os.flags() & ios::left) !=0;
1342.232 -    const size_t __w = __os.width();
1342.233 -
1342.234 -    if (__n < __w) { 
1342.235 -      __pad_len = __w - __n; 
1342.236 -    } 
1342.237 -    
1342.238 -    if (!__left)
1342.239 -      __stlp_string_fill(__os, __buf, __pad_len);
1342.240 -  
1342.241 -    const size_t __nwritten = __buf->sputn(__s.data(), __n);
1342.242 -
1342.243 -    if (__left)
1342.244 -      __stlp_string_fill(__os, __buf, __pad_len);
1342.245 -
1342.246 -    if (__nwritten != __n)
1342.247 -      __os.clear(__os.rdstate() | ios::failbit);
1342.248 -
1342.249 -    __os.width(0);
1342.250 -  }
1342.251 -  else
1342.252 -    __os.clear(__os.rdstate() | ios::badbit);
1342.253 -
1342.254 -  return __os;
1342.255 -}
1342.256 -
1342.257 -template <class _CharT, class _Traits, class _Alloc>
1342.258 -_ISTREAM_DLL& _STLP_CALL operator>>(_ISTREAM_DLL& __is, basic_string<_CharT,_Traits,_Alloc>& __s)
1342.259 -{
1342.260 -  _STLP_USING_IO
1342.261 -  if (!__is)
1342.262 -    return __is;
1342.263 -
1342.264 -  streambuf* __buf = __is.rdbuf();
1342.265 -  if (__buf) {
1342.266 -
1342.267 -    if (__is.flags() & ios::skipws) {
1342.268 -      //      _CharT __c;
1342.269 -      int __c;
1342.270 -      do {
1342.271 -        __c = __buf->sbumpc();
1342.272 -      }
1342.273 -      while (__c != EOF && isspace((unsigned char)__c));
1342.274 -
1342.275 -      if (__c == EOF) {
1342.276 -        __is.clear(__is.rdstate() | ios::eofbit | ios::failbit);
1342.277 -      }
1342.278 -      else {
1342.279 -	if (__buf->sputbackc(__c) == EOF)
1342.280 -	  __is.clear(__is.rdstate() | ios::failbit);
1342.281 -      }
1342.282 -    }
1342.283 -
1342.284 -    // If we arrive at end of file (or fail for some other reason) while
1342.285 -    // still discarding whitespace, then we don't try to read the string.
1342.286 -    if (__is) {
1342.287 -      __s.clear();
1342.288 -
1342.289 -      size_t __n = __is.width();
1342.290 -      if (__n == 0)
1342.291 -        __n = __STATIC_CAST(size_t,-1);
1342.292 -      else
1342.293 -        __s.reserve(__n);
1342.294 -
1342.295 -      while (__n-- > 0) {
1342.296 -        int __c1 = __buf->sbumpc();
1342.297 -        if (__c1 == EOF) {
1342.298 -          __is.clear(__is.rdstate() | ios::eofbit);
1342.299 -          break;
1342.300 -        }
1342.301 -        else {
1342.302 -          _CharT __c = _Traits::to_char_type(__c1);
1342.303 -
1342.304 -          if (isspace((unsigned char) __c)) {
1342.305 -            if (__buf->sputbackc(__c) == EOF)
1342.306 -              __is.clear(__is.rdstate() | ios::failbit);
1342.307 -            break;
1342.308 -          }
1342.309 -          else
1342.310 -            __s.push_back(__c);
1342.311 -        }
1342.312 -      }
1342.313 -    
1342.314 -      // If we have read no characters, then set failbit.
1342.315 -      if (__s.size() == 0)
1342.316 -        __is.clear(__is.rdstate() | ios::failbit);
1342.317 -    }
1342.318 -
1342.319 -    __is.width(0);
1342.320 -  }
1342.321 -  else                          // We have no streambuf.
1342.322 -    __is.clear(__is.rdstate() | ios::badbit);
1342.323 -
1342.324 -  return __is;
1342.325 -}
1342.326 -
1342.327 -template <class _CharT, class _Traits, class _Alloc>    
1342.328 -_ISTREAM_DLL& _STLP_CALL getline(_ISTREAM_DLL& __is,
1342.329 -                 basic_string<_CharT,_Traits,_Alloc>& __s,
1342.330 -                 _CharT __delim)
1342.331 -{
1342.332 -  _STLP_USING_IO
1342.333 -  streambuf* __buf = __is.rdbuf();
1342.334 -  if (__buf) {
1342.335 -    size_t __nread = 0;
1342.336 -    if (__is) {
1342.337 -      __s.clear();
1342.338 -
1342.339 -      while (__nread < __s.max_size()) {
1342.340 -        int __c1 = __buf->sbumpc();
1342.341 -        if (__c1 == EOF) {
1342.342 -          __is.clear(__is.rdstate() | ios::eofbit);
1342.343 -          break;
1342.344 -        }
1342.345 -        else {
1342.346 -          ++__nread;
1342.347 -          _CharT __c = _Traits::to_char_type(__c1);
1342.348 -          if (!_Traits::eq(__c, __delim)) 
1342.349 -            __s.push_back(__c);
1342.350 -          else
1342.351 -            break;              // Character is extracted but not appended.
1342.352 -        }
1342.353 -      }
1342.354 -    }
1342.355 -
1342.356 -    if (__nread == 0 || __nread >= __s.max_size())
1342.357 -      __is.clear(__is.rdstate() | ios::failbit);
1342.358 -  }
1342.359 -  else
1342.360 -    __is.clear(__is.rdstate() | ios::badbit);
1342.361 -
1342.362 -  return __is;
1342.363 -}
1342.364 -
1342.365 -# endif /* _STLP_NEW_IOSTREAMS */
1342.366 -
1342.367 -_STLP_END_NAMESPACE
1342.368 -
1342.369 -// # undef _STLP_USING_IO
1342.370 -# undef basic_string
1342.371 -
1342.372 -#endif
  1343.1 --- a/epoc32/include/stdapis/stlport/stl/_string_io.h	Tue Mar 16 16:12:26 2010 +0000
  1343.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1343.3 @@ -1,122 +0,0 @@
  1343.4 -/*
  1343.5 - * Copyright (c) 1997-1999
  1343.6 - * Silicon Graphics Computer Systems, Inc.
  1343.7 - *
  1343.8 - * Copyright (c) 1999 
  1343.9 - * Boris Fomitchev
 1343.10 - *
 1343.11 - * This material is provided "as is", with absolutely no warranty expressed
 1343.12 - * or implied. Any use is at your own risk.
 1343.13 - *
 1343.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1343.15 - * without fee, provided the above notices are retained on all copies.
 1343.16 - * Permission to modify the code and to distribute modified code is granted,
 1343.17 - * provided the above notices are retained, and a notice that the code was
 1343.18 - * modified is included with the above copyright notice.
 1343.19 - *
 1343.20 - */
 1343.21 -
 1343.22 -#ifndef _STLP_STRING_IO_H
 1343.23 -#define _STLP_STRING_IO_H
 1343.24 -
 1343.25 -// this is for link-time instantiation
 1343.26 -#if !defined  ( _STLP_STRING )
 1343.27 -# include <string>
 1343.28 -# endif
 1343.29 -
 1343.30 -//#ifndef _STLP_LOCALE
 1343.31 -//# include <locale>
 1343.32 -//#endif
 1343.33 -
 1343.34 -# ifdef _STLP_DEBUG
 1343.35 -#  define basic_string _Nondebug_string
 1343.36 -# endif
 1343.37 -
 1343.38 -// I/O.  
 1343.39 -_STLP_BEGIN_NAMESPACE
 1343.40 -
 1343.41 -#if defined (_STLP_USE_NEW_IOSTREAMS)
 1343.42 -
 1343.43 -template <class _CharT, class _Traits, class _Alloc>
 1343.44 -basic_ostream<_CharT, _Traits>& _STLP_CALL
 1343.45 -operator<<(basic_ostream<_CharT, _Traits>& __os, 
 1343.46 -           const basic_string<_CharT,_Traits,_Alloc>& __s);
 1343.47 -
 1343.48 -template <class _CharT, class _Traits, class _Alloc>
 1343.49 -basic_istream<_CharT, _Traits>&  _STLP_CALL
 1343.50 -operator>>(basic_istream<_CharT, _Traits>& __is,
 1343.51 -           basic_string<_CharT,_Traits,_Alloc>& __s);
 1343.52 -
 1343.53 -template <class _CharT, class _Traits, class _Alloc>    
 1343.54 -basic_istream<_CharT, _Traits>& _STLP_CALL 
 1343.55 -getline(basic_istream<_CharT, _Traits>& __is,
 1343.56 -        basic_string<_CharT,_Traits,_Alloc>& __s,
 1343.57 -        _CharT __delim);
 1343.58 -
 1343.59 -# if !(defined (__BORLANDC__) && ! defined (_STLP_USE_OWN_NAMESPACE))
 1343.60 -
 1343.61 -template <class _CharT, class _Traits, class _Alloc>    
 1343.62 -inline basic_istream<_CharT, _Traits>& _STLP_CALL 
 1343.63 -getline(basic_istream<_CharT, _Traits>& __is,
 1343.64 -        basic_string<_CharT,_Traits,_Alloc>& __s)
 1343.65 -{
 1343.66 -  return getline(__is, __s, __is.widen('\n'));
 1343.67 -}
 1343.68 -# endif
 1343.69 -
 1343.70 -template <class _CharT, class _Traits>
 1343.71 -bool _STLP_CALL
 1343.72 -__stlp_string_fill(basic_ostream<_CharT, _Traits>& __os,
 1343.73 -                  basic_streambuf<_CharT, _Traits>* __buf,
 1343.74 -                  size_t __n);
 1343.75 -#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
 1343.76 -
 1343.77 -// (reg) For Watcom IO, this tells if ostream class is in .exe or in .dll
 1343.78 -# ifdef _WPRTLINK
 1343.79 -typedef _WPRTLINK ostream _OSTREAM_DLL;
 1343.80 -typedef _WPRTLINK istream _ISTREAM_DLL;
 1343.81 -#else
 1343.82 -typedef           ostream _OSTREAM_DLL;
 1343.83 -typedef           istream _ISTREAM_DLL;
 1343.84 -#endif
 1343.85 -
 1343.86 -template <class _CharT, class _Traits, class _Alloc>
 1343.87 -_OSTREAM_DLL& _STLP_CALL operator<<(_OSTREAM_DLL& __os, 
 1343.88 -                    const basic_string<_CharT,_Traits,_Alloc>& __s);
 1343.89 -
 1343.90 -template <class _CharT, class _Traits, class _Alloc>
 1343.91 -_ISTREAM_DLL& _STLP_CALL operator>>(_ISTREAM_DLL& __is, basic_string<_CharT,_Traits,_Alloc>& __s);
 1343.92 -
 1343.93 -template <class _CharT, class _Traits, class _Alloc>    
 1343.94 -_ISTREAM_DLL& _STLP_CALL getline(_ISTREAM_DLL& __is,
 1343.95 -                 basic_string<_CharT,_Traits,_Alloc>& __s,
 1343.96 -                 _CharT __delim);
 1343.97 -
 1343.98 -
 1343.99 -template <class _CharT, class _Traits, class _Alloc>    
1343.100 -inline _ISTREAM_DLL& _STLP_CALL 
1343.101 -getline(_ISTREAM_DLL& __is, basic_string<_CharT,_Traits,_Alloc>& __s)
1343.102 -{
1343.103 -  return getline(__is, __s, '\n');
1343.104 -}
1343.105 -
1343.106 -inline void  _STLP_CALL
1343.107 -__stlp_string_fill(_OSTREAM_DLL& __os, streambuf* __buf, size_t __n)
1343.108 -{
1343.109 -  char __f = __os.fill();
1343.110 -  size_t __i;
1343.111 -
1343.112 -  for (__i = 0; __i < __n; ++__i) __buf->sputc(__f);
1343.113 -}
1343.114 -
1343.115 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1343.116 -
1343.117 -_STLP_END_NAMESPACE
1343.118 -
1343.119 -# undef basic_string
1343.120 -
1343.121 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1343.122 -#  include <stl/_string_io.c>
1343.123 -# endif
1343.124 -
1343.125 -#endif /* _STLP_STRING_IO_H */
  1344.1 --- a/epoc32/include/stdapis/stlport/stl/_strstream.h	Tue Mar 16 16:12:26 2010 +0000
  1344.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1344.3 @@ -1,213 +0,0 @@
  1344.4 -/*
  1344.5 -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1344.6 -
  1344.7 -* Redistribution and use in source and binary forms, with or without 
  1344.8 -* modification, are permitted provided that the following conditions are met:
  1344.9 -
 1344.10 -* Redistributions of source code must retain the above copyright notice, this 
 1344.11 -* list of conditions and the following disclaimer.
 1344.12 -* Redistributions in binary form must reproduce the above copyright notice, 
 1344.13 -* this list of conditions and the following disclaimer in the documentation 
 1344.14 -* and/or other materials provided with the distribution.
 1344.15 -* Neither the name of Nokia Corporation nor the names of its contributors 
 1344.16 -* may be used to endorse or promote products derived from this software 
 1344.17 -* without specific prior written permission.
 1344.18 -
 1344.19 -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1344.20 -* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1344.21 -* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1344.22 -* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1344.23 -* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1344.24 -* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1344.25 -* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1344.26 -* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1344.27 -* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1344.28 -* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1344.29 -*
 1344.30 -* Description:
 1344.31 -*
 1344.32 -*/
 1344.33 -
 1344.34 -#ifndef _STLP_INTERNAL_STREAMBUF
 1344.35 -#include <stl/_streambuf.h>
 1344.36 -#endif
 1344.37 -#ifndef _STLP_ISTREAM
 1344.38 -#include <istream>              // Includes <ostream>, <ios>, <iosfwd>
 1344.39 -#endif
 1344.40 -#ifndef _STLP_STRING_H
 1344.41 -#include <stl/_string.h>
 1344.42 -#endif
 1344.43 -
 1344.44 -_STLP_BEGIN_NAMESPACE
 1344.45 -
 1344.46 -#ifndef _STLP_USE_NAMESPACES
 1344.47 -# define strstream _STLP_strstream 
 1344.48 -# define ostrstream _STLP_ostrstream
 1344.49 -# define istrstream _STLP_istrstream
 1344.50 -# define strstreambuf _STLP_strstreambuf
 1344.51 -#endif
 1344.52 -
 1344.53 -//----------------------------------------------------------------------
 1344.54 -// Class strstreambuf, a streambuf class that manages an array of char.
 1344.55 -// Note that this class is not a template.
 1344.56 -#ifdef __SYMBIAN32__
 1344.57 -class strstreambuf : public basic_streambuf<char, char_traits<char> > 
 1344.58 -#else
 1344.59 -class _STLP_CLASS_DECLSPEC strstreambuf : public basic_streambuf<char, char_traits<char> >
 1344.60 -#endif
 1344.61 -{
 1344.62 -public:                         // Types.
 1344.63 -  typedef char_traits<char>              _Traits;
 1344.64 -  typedef basic_streambuf<char, char_traits<char> > _Base;
 1344.65 -  typedef void* (*__alloc_fn)(size_t);
 1344.66 -  typedef void (*__free_fn)(void*);
 1344.67 -public:                         // Constructor, destructor
 1344.68 -
 1344.69 -  explicit strstreambuf(streamsize _Initial_capacity = 0);
 1344.70 -
 1344.71 -  _STLP_DECLSPEC strstreambuf(__alloc_fn, __free_fn);
 1344.72 -
 1344.73 -  _STLP_DECLSPEC strstreambuf(char* __get, streamsize __n, char* __put = 0);
 1344.74 -  _STLP_DECLSPEC strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0);
 1344.75 -  _STLP_DECLSPEC strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0);
 1344.76 -
 1344.77 -  _STLP_DECLSPEC strstreambuf(const char* __get, streamsize __n);
 1344.78 -  _STLP_DECLSPEC strstreambuf(const signed char* __get, streamsize __n);
 1344.79 -  _STLP_DECLSPEC strstreambuf(const unsigned char* __get, streamsize __n);
 1344.80 -
 1344.81 -  virtual ~strstreambuf();
 1344.82 -
 1344.83 -public:                         // strstreambuf operations.
 1344.84 -  _STLP_DECLSPEC void freeze(bool = true);
 1344.85 -  _STLP_DECLSPEC char* str();
 1344.86 -  _STLP_DECLSPEC int pcount() const;
 1344.87 -
 1344.88 -protected:                      // Overridden virtual member functions.
 1344.89 -  virtual int_type overflow(int_type __c  = _Traits::eof());
 1344.90 -  virtual int_type pbackfail(int_type __c = _Traits::eof());
 1344.91 -  virtual int_type underflow();
 1344.92 -  virtual _Base* setbuf(char* __buf, streamsize __n);
 1344.93 -  virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir,
 1344.94 -                           ios_base::openmode __mode 
 1344.95 -                                      = ios_base::in | ios_base::out);
 1344.96 -  virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 
 1344.97 -                                      = ios_base::in | ios_base::out);
 1344.98 -
 1344.99 -private:                        // Helper functions.
1344.100 -  // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun.
1344.101 -  char* _M_alloc(size_t);
1344.102 -  inline void  _M_free(char*);
1344.103 -
1344.104 -  // Helper function used in constructors.
1344.105 -  void _M_setup(char* __get, char* __put, streamsize __n);
1344.106 -private:                        // Data members.
1344.107 -  __alloc_fn _M_alloc_fun;
1344.108 -  __free_fn  _M_free_fun;
1344.109 -  bool _M_dynamic  : 1;
1344.110 -  bool _M_frozen   : 1;
1344.111 -  bool _M_constant : 1;
1344.112 -#ifdef __SYMBIAN32__
1344.113 -  char* _pfrozenendsave;
1344.114 -  char* _pgetfrozenendsave;
1344.115 -#endif
1344.116 -};
1344.117 -
1344.118 -inline strstreambuf::~strstreambuf()
1344.119 -{
1344.120 -#ifdef __SYMBIAN32__
1344.121 -  if (_M_dynamic && !_M_frozen)
1344.122 -  {
1344.123 -  	if (_M_free_fun)
1344.124 -  		_M_free_fun(eback());
1344.125 -  	else
1344.126 -  		_M_free(eback());
1344.127 -  }
1344.128 -#else  
1344.129 -	if (_M_dynamic && !_M_frozen)
1344.130 -        _M_free(eback());
1344.131 -#endif	
1344.132 -}
1344.133 -
1344.134 -inline void strstreambuf::_M_free(char* p)
1344.135 -{
1344.136 -  if (p)
1344.137 -    if (_M_free_fun)
1344.138 -      _M_free_fun(p);
1344.139 -    else
1344.140 -      delete[] p;
1344.141 -}
1344.142 -
1344.143 -
1344.144 -//----------------------------------------------------------------------
1344.145 -// Class istrstream, an istream that manages a strstreambuf.
1344.146 -
1344.147 -#ifdef __SYMBIAN32__
1344.148 -NONSHARABLE_CLASS (istrstream) : public basic_istream<char, char_traits<char> >
1344.149 -#else
1344.150 -class _STLP_CLASS_DECLSPEC istrstream : public basic_istream<char, char_traits<char> >
1344.151 -#endif
1344.152 -{
1344.153 -public:
1344.154 -  _STLP_DECLSPEC explicit istrstream(char*);
1344.155 -  _STLP_DECLSPEC explicit istrstream(const char*);
1344.156 -  _STLP_DECLSPEC istrstream(char* , streamsize);
1344.157 -  _STLP_DECLSPEC istrstream(const char*, streamsize);
1344.158 -  virtual ~istrstream();
1344.159 -  
1344.160 -  _STLP_DECLSPEC strstreambuf* rdbuf() const;
1344.161 -  _STLP_DECLSPEC char* str();
1344.162 -
1344.163 -private:
1344.164 -  strstreambuf _M_buf;
1344.165 -};
1344.166 -
1344.167 -//----------------------------------------------------------------------
1344.168 -// Class ostrstream
1344.169 -#ifdef __SYMBIAN32__
1344.170 -NONSHARABLE_CLASS (ostrstream) : public basic_ostream<char, char_traits<char> >
1344.171 -#else
1344.172 -class _STLP_CLASS_DECLSPEC ostrstream : public basic_ostream<char, char_traits<char> >
1344.173 -#endif
1344.174 -{
1344.175 -public:
1344.176 -  _STLP_DECLSPEC ostrstream();
1344.177 -  _STLP_DECLSPEC ostrstream(char*, int, ios_base::openmode = ios_base::out);
1344.178 -  virtual ~ostrstream();
1344.179 -
1344.180 -  _STLP_DECLSPEC strstreambuf* rdbuf() const;
1344.181 -  _STLP_DECLSPEC void freeze(bool = true);
1344.182 -  _STLP_DECLSPEC char* str();
1344.183 -  _STLP_DECLSPEC int pcount() const;
1344.184 -
1344.185 -private:
1344.186 -  strstreambuf _M_buf;
1344.187 -};
1344.188 -
1344.189 -//----------------------------------------------------------------------
1344.190 -// Class strstream
1344.191 -#ifdef __SYMBIAN32__
1344.192 -NONSHARABLE_CLASS (strstream) : public basic_iostream<char, char_traits<char> >
1344.193 -#else
1344.194 -class _STLP_CLASS_DECLSPEC strstream : public basic_iostream<char, char_traits<char> >
1344.195 -#endif
1344.196 -{
1344.197 -public:
1344.198 -  typedef char                        char_type;
1344.199 -  typedef char_traits<char>::int_type int_type;
1344.200 -  typedef char_traits<char>::pos_type pos_type;
1344.201 -  typedef char_traits<char>::off_type off_type;
1344.202 -
1344.203 -  _STLP_DECLSPEC strstream();
1344.204 -  _STLP_DECLSPEC strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out);
1344.205 -  virtual ~strstream();
1344.206 -
1344.207 -  _STLP_DECLSPEC strstreambuf* rdbuf() const;
1344.208 -  _STLP_DECLSPEC void freeze(bool = true);
1344.209 -  _STLP_DECLSPEC int pcount() const;
1344.210 -  _STLP_DECLSPEC char* str();
1344.211 -
1344.212 -private:
1344.213 -  strstreambuf _M_buf;
1344.214 -};
1344.215 -
1344.216 -_STLP_END_NAMESPACE
  1345.1 --- a/epoc32/include/stdapis/stlport/stl/_tempbuf.c	Tue Mar 16 16:12:26 2010 +0000
  1345.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1345.3 @@ -1,57 +0,0 @@
  1345.4 -/*
  1345.5 - *
  1345.6 - *
  1345.7 - * Copyright (c) 1994
  1345.8 - * Hewlett-Packard Company
  1345.9 - *
 1345.10 - * Copyright (c) 1996,1997
 1345.11 - * Silicon Graphics Computer Systems, Inc.
 1345.12 - *
 1345.13 - * Copyright (c) 1997
 1345.14 - * Moscow Center for SPARC Technology
 1345.15 - *
 1345.16 - * Copyright (c) 1999 
 1345.17 - * Boris Fomitchev
 1345.18 - *
 1345.19 - * This material is provided "as is", with absolutely no warranty expressed
 1345.20 - * or implied. Any use is at your own risk.
 1345.21 - *
 1345.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1345.23 - * without fee, provided the above notices are retained on all copies.
 1345.24 - * Permission to modify the code and to distribute modified code is granted,
 1345.25 - * provided the above notices are retained, and a notice that the code was
 1345.26 - * modified is included with the above copyright notice.
 1345.27 - *
 1345.28 - */
 1345.29 -#ifndef _STLP_TEMPBUF_C
 1345.30 -#define _STLP_TEMPBUF_C
 1345.31 -
 1345.32 -#ifndef _STLP_INTERNAL_TEMPBUF_H
 1345.33 -# include <stl/_tempbuf.h>
 1345.34 -#endif
 1345.35 -
 1345.36 -_STLP_BEGIN_NAMESPACE
 1345.37 -
 1345.38 -template <class _Tp>
 1345.39 -pair<_Tp*, ptrdiff_t> _STLP_CALL 
 1345.40 -__get_temporary_buffer(ptrdiff_t __len, _Tp*)
 1345.41 -{
 1345.42 -  if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp)))
 1345.43 -    __len = INT_MAX / sizeof(_Tp);
 1345.44 -
 1345.45 -  while (__len > 0) {
 1345.46 -    _Tp* __tmp = (_Tp*) malloc((size_t)__len * sizeof(_Tp));
 1345.47 -    if (__tmp != 0)
 1345.48 -      return pair<_Tp*, ptrdiff_t>(__tmp, __len);
 1345.49 -    __len /= 2;
 1345.50 -  }
 1345.51 -
 1345.52 -  return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0);
 1345.53 -}
 1345.54 -_STLP_END_NAMESPACE
 1345.55 -
 1345.56 -#endif /*  _STLP_TEMPBUF_C */
 1345.57 -
 1345.58 -// Local Variables:
 1345.59 -// mode:C++
 1345.60 -// End:
  1346.1 --- a/epoc32/include/stdapis/stlport/stl/_tempbuf.h	Tue Mar 16 16:12:26 2010 +0000
  1346.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1346.3 @@ -1,165 +0,0 @@
  1346.4 -/*
  1346.5 - *
  1346.6 - * Copyright (c) 1994
  1346.7 - * Hewlett-Packard Company
  1346.8 - *
  1346.9 - * Copyright (c) 1996,1997
 1346.10 - * Silicon Graphics Computer Systems, Inc.
 1346.11 - *
 1346.12 - * Copyright (c) 1997
 1346.13 - * Moscow Center for SPARC Technology
 1346.14 - *
 1346.15 - * Copyright (c) 1999 
 1346.16 - * Boris Fomitchev
 1346.17 - *
 1346.18 - * This material is provided "as is", with absolutely no warranty expressed
 1346.19 - * or implied. Any use is at your own risk.
 1346.20 - *
 1346.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1346.22 - * without fee, provided the above notices are retained on all copies.
 1346.23 - * Permission to modify the code and to distribute modified code is granted,
 1346.24 - * provided the above notices are retained, and a notice that the code was
 1346.25 - * modified is included with the above copyright notice.
 1346.26 - *
 1346.27 - */
 1346.28 -
 1346.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1346.30 - *   You should not attempt to use it directly.
 1346.31 - */
 1346.32 -
 1346.33 -#ifndef _STLP_INTERNAL_TEMPBUF_H
 1346.34 -#define _STLP_INTERNAL_TEMPBUF_H
 1346.35 -
 1346.36 -# ifndef _STLP_CLIMITS
 1346.37 -#  include <climits>
 1346.38 -# endif
 1346.39 -# ifndef _STLP_CSTDLIB
 1346.40 -#  include <cstdlib>
 1346.41 -# endif
 1346.42 -# ifndef _STLP_INTERNAL_UNINITIALIZED_H
 1346.43 -#  include <stl/_uninitialized.h>
 1346.44 -# endif
 1346.45 -
 1346.46 -_STLP_BEGIN_NAMESPACE
 1346.47 -
 1346.48 -template <class _Tp>
 1346.49 -pair<_Tp*, ptrdiff_t>  _STLP_CALL
 1346.50 -__get_temporary_buffer(ptrdiff_t __len, _Tp*);
 1346.51 -
 1346.52 -#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
 1346.53 -
 1346.54 -template <class _Tp>
 1346.55 -inline pair<_Tp*, ptrdiff_t>  _STLP_CALL get_temporary_buffer(ptrdiff_t __len) {
 1346.56 -  return __get_temporary_buffer(__len, (_Tp*) 0);
 1346.57 -}
 1346.58 -
 1346.59 -# if ! defined(_STLP_NO_EXTENSIONS)
 1346.60 -// This overload is not required by the standard; it is an extension.
 1346.61 -// It is supported for backward compatibility with the HP STL, and
 1346.62 -// because not all compilers support the language feature (explicit
 1346.63 -// function template arguments) that is required for the standard
 1346.64 -// version of get_temporary_buffer.
 1346.65 -template <class _Tp>
 1346.66 -inline pair<_Tp*, ptrdiff_t>  _STLP_CALL
 1346.67 -get_temporary_buffer(ptrdiff_t __len, _Tp*) {
 1346.68 -  return __get_temporary_buffer(__len, (_Tp*) 0);
 1346.69 -}
 1346.70 -# endif
 1346.71 -#endif
 1346.72 -
 1346.73 -template <class _Tp>
 1346.74 -inline void  _STLP_CALL return_temporary_buffer(_Tp* __p) {
 1346.75 -// SunPro brain damage
 1346.76 -  free((char*)__p);
 1346.77 -}
 1346.78 -
 1346.79 -template <class _ForwardIterator, class _Tp>
 1346.80 -class _Temporary_buffer {
 1346.81 -private:
 1346.82 -  ptrdiff_t  _M_original_len;
 1346.83 -  ptrdiff_t  _M_len;
 1346.84 -  _Tp*       _M_buffer;
 1346.85 -
 1346.86 -  void _M_allocate_buffer() {
 1346.87 -    _M_original_len = _M_len;
 1346.88 -    _M_buffer = 0;
 1346.89 -
 1346.90 -    if (_M_len > (ptrdiff_t)(INT_MAX / sizeof(_Tp)))
 1346.91 -      _M_len = INT_MAX / sizeof(_Tp);
 1346.92 -
 1346.93 -    while (_M_len > 0) {
 1346.94 -      _M_buffer = (_Tp*) malloc(_M_len * sizeof(_Tp));
 1346.95 -      if (_M_buffer)
 1346.96 -        break;
 1346.97 -      _M_len /= 2;
 1346.98 -    }
 1346.99 -  }
1346.100 -
1346.101 -  void _M_initialize_buffer(const _Tp&, const __true_type&) {}
1346.102 -  void _M_initialize_buffer(const _Tp& val, const __false_type&) {
1346.103 -    uninitialized_fill_n(_M_buffer, _M_len, val);
1346.104 -  }
1346.105 -
1346.106 -public:
1346.107 -  ptrdiff_t size() const { return _M_len; }
1346.108 -  ptrdiff_t requested_size() const { return _M_original_len; }
1346.109 -  _Tp* begin() { return _M_buffer; }
1346.110 -  _Tp* end() { return _M_buffer + _M_len; }
1346.111 -
1346.112 -  _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) {
1346.113 -    // Workaround for a __type_traits bug in the pre-7.3 compiler.
1346.114 -#   if defined(__sgi) && !defined(__GNUC__) && _COMPILER_VERSION < 730
1346.115 -    typedef typename __type_traits<_Tp>::is_POD_type _Trivial;
1346.116 -#   else
1346.117 -     typedef typename __type_traits<_Tp>::has_trivial_default_constructor  _Trivial;
1346.118 -#   endif
1346.119 -    _STLP_TRY {
1346.120 -      _M_len = distance(__first, __last);
1346.121 -      _M_allocate_buffer();
1346.122 -      if (_M_len > 0)
1346.123 -        _M_initialize_buffer(*__first, _Trivial());
1346.124 -    }
1346.125 -    _STLP_UNWIND(free(_M_buffer); _M_buffer = 0; _M_len = 0);
1346.126 -  }
1346.127 - 
1346.128 -  ~_Temporary_buffer() {  
1346.129 -    _STLP_STD::_Destroy(_M_buffer, _M_buffer + _M_len);
1346.130 -    free(_M_buffer);
1346.131 -  }
1346.132 -
1346.133 -private:
1346.134 -  // Disable copy constructor and assignment operator.
1346.135 -  _Temporary_buffer(const _Temporary_buffer<_ForwardIterator, _Tp>&) {}
1346.136 -  void operator=(const _Temporary_buffer<_ForwardIterator, _Tp>&) {}
1346.137 -};
1346.138 -
1346.139 -# ifndef _STLP_NO_EXTENSIONS
1346.140 -
1346.141 -// Class temporary_buffer is not part of the standard.  It is an extension.
1346.142 -
1346.143 -template <class _ForwardIterator, 
1346.144 -          class _Tp 
1346.145 -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1346.146 -                    = typename iterator_traits<_ForwardIterator>::value_type
1346.147 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1346.148 -         >
1346.149 -struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp>
1346.150 -{
1346.151 -  temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
1346.152 -    : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) {}
1346.153 -  ~temporary_buffer() {}
1346.154 -};
1346.155 -
1346.156 -# endif /* _STLP_NO_EXTENSIONS */
1346.157 -    
1346.158 -_STLP_END_NAMESPACE
1346.159 -
1346.160 -# ifndef _STLP_LINK_TIME_INSTANTIATION
1346.161 -#  include <stl/_tempbuf.c>
1346.162 -# endif
1346.163 -
1346.164 -#endif /* _STLP_INTERNAL_TEMPBUF_H */
1346.165 -
1346.166 -// Local Variables:
1346.167 -// mode:C++
1346.168 -// End:
  1347.1 --- a/epoc32/include/stdapis/stlport/stl/_threads.c	Tue Mar 16 16:12:26 2010 +0000
  1347.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1347.3 @@ -1,172 +0,0 @@
  1347.4 -/*
  1347.5 - *
  1347.6 - *
  1347.7 - * Copyright (c) 1994
  1347.8 - * Hewlett-Packard Company
  1347.9 - *
 1347.10 - * Copyright (c) 1996,1997
 1347.11 - * Silicon Graphics Computer Systems, Inc.
 1347.12 - *
 1347.13 - * Copyright (c) 1997
 1347.14 - * Moscow Center for SPARC Technology
 1347.15 - *
 1347.16 - * Copyright (c) 1999 
 1347.17 - * Boris Fomitchev
 1347.18 - *
 1347.19 - * This material is provided "as is", with absolutely no warranty expressed
 1347.20 - * or implied. Any use is at your own risk.
 1347.21 - *
 1347.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1347.23 - * without fee, provided the above notices are retained on all copies.
 1347.24 - * Permission to modify the code and to distribute modified code is granted,
 1347.25 - * provided the above notices are retained, and a notice that the code was
 1347.26 - * modified is included with the above copyright notice.
 1347.27 - *
 1347.28 - */
 1347.29 -#ifndef _STLP_THREADS_C
 1347.30 -#define _STLP_THREADS_C
 1347.31 -
 1347.32 -#ifndef _STLP_INTERNAL_THREADS_H
 1347.33 -# include <stl/_threads.h>
 1347.34 -#endif
 1347.35 -
 1347.36 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1347.37 -
 1347.38 -# if defined(_STLP_SGI_THREADS)
 1347.39 -#  include <time.h>
 1347.40 -# elif defined (_STLP_UNIX)
 1347.41 -#  include <ctime>
 1347.42 -# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
 1347.43 -using _STLP_VENDOR_CSTD::time_t;
 1347.44 -# endif
 1347.45 -#  include <sys/time.h>
 1347.46 -# endif
 1347.47 -
 1347.48 -_STLP_BEGIN_NAMESPACE
 1347.49 -
 1347.50 -# if (_STLP_STATIC_TEMPLATE_DATA > 0)
 1347.51 -
 1347.52 -#  ifdef _STLP_THREADS
 1347.53 -#  if !defined(_STLP_ATOMIC_EXCHANGE) && (defined(_STLP_PTHREADS) || defined(_STLP_UITHREADS) || defined(_STLP_OS2THREADS) || defined(_STLP_USE_PTHREAD_SPINLOCK))
 1347.54 -template<int __dummy>
 1347.55 -_STLP_STATIC_MUTEX
 1347.56 -_Swap_lock_struct<__dummy>::_S_swap_lock _STLP_MUTEX_INITIALIZER;
 1347.57 -#  endif
 1347.58 -#  endif //_STLP_THREADS
 1347.59 -
 1347.60 -#  ifndef _STLP_USE_PTHREAD_SPINLOCK
 1347.61 -template <int __inst>
 1347.62 -unsigned _STLP_mutex_spin<__inst>::__max = _STLP_mutex_spin<__inst>::__low_max;
 1347.63 -
 1347.64 -template <int __inst>
 1347.65 -unsigned _STLP_mutex_spin<__inst>::__last = 0;
 1347.66 -#  endif // _STLP_USE_PTHREAD_SPINLOCK
 1347.67 -
 1347.68 -# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1347.69 -
 1347.70 -#  if defined(_STLP_PTHREADS) || defined(_STLP_UITHREADS) || defined(_STLP_OS2THREADS)
 1347.71 -__DECLARE_INSTANCE(_STLP_STATIC_MUTEX, _Swap_lock_struct<0>::_S_swap_lock, 
 1347.72 -                   _STLP_MUTEX_INITIALIZER  );
 1347.73 -#  endif /* _STLP_PTHREADS */
 1347.74 -
 1347.75 -#  ifndef _STLP_USE_PTHREAD_SPINLOCK
 1347.76 -__DECLARE_INSTANCE(unsigned, _STLP_mutex_spin<0>::__max,  =30);
 1347.77 -__DECLARE_INSTANCE(unsigned, _STLP_mutex_spin<0>::__last, =0);
 1347.78 -#  endif // _STLP_USE_PTHREAD_SPINLOCK
 1347.79 -
 1347.80 -# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1347.81 -
 1347.82 -#ifndef _STLP_USE_PTHREAD_SPINLOCK
 1347.83 -
 1347.84 -#ifdef _STLP_SPARC_SOLARIS_THREADS
 1347.85 -// underground function in libc.so; we do not want dependance on librt
 1347.86 -extern "C" int __nanosleep(const struct timespec*, struct timespec*);
 1347.87 -# define _STLP_NANOSLEEP __nanosleep
 1347.88 -#else
 1347.89 -# define _STLP_NANOSLEEP nanosleep
 1347.90 -#endif
 1347.91 -
 1347.92 -template <int __inst>
 1347.93 -void _STLP_CALL
 1347.94 -_STLP_mutex_spin<__inst>::_S_nsec_sleep(int __log_nsec) {
 1347.95 -#     if defined(_STLP_WIN32THREADS)
 1347.96 -	  if (__log_nsec <= 20) {
 1347.97 -        // Note from boost (www.boost.org): 
 1347.98 -        // Changed to Sleep(1) from Sleep(0).
 1347.99 -        // According to MSDN, Sleep(0) will never yield
1347.100 -        // to a lower-priority thread, whereas Sleep(1)
1347.101 -        // will. Performance seems not to be affected.
1347.102 -	      Sleep(1);
1347.103 -	  } else {
1347.104 -	      Sleep(1 << (__log_nsec - 20));
1347.105 -	  }
1347.106 -#    elif defined(_STLP_OS2THREADS)
1347.107 -      if (__log_nsec <= 20) {
1347.108 -         DosSleep(0);
1347.109 -      } else {
1347.110 -         DosSleep(1 << (__log_nsec - 20));
1347.111 -      }
1347.112 -#     elif defined (_STLP_UNIX)
1347.113 -          timespec __ts;
1347.114 -          /* Max sleep is 2**27nsec ~ 60msec      */
1347.115 -          __ts.tv_sec = 0;
1347.116 -          __ts.tv_nsec = 1 << __log_nsec;
1347.117 -          _STLP_NANOSLEEP(&__ts, 0);
1347.118 -#     endif
1347.119 -  }
1347.120 -
1347.121 -
1347.122 -template <int __inst>
1347.123 -void  _STLP_CALL
1347.124 -_STLP_mutex_spin<__inst>::_M_do_lock(volatile __stl_atomic_t* __lock)
1347.125 -{
1347.126 -#if defined(_STLP_ATOMIC_EXCHANGE)
1347.127 -  if (_Atomic_swap(__lock, 1)) {
1347.128 -    unsigned __my_spin_max = _STLP_mutex_spin<0>::__max;
1347.129 -    unsigned __my_last_spins = _STLP_mutex_spin<0>::__last;
1347.130 -    volatile unsigned __junk = 17; 	// Value doesn't matter.
1347.131 -    unsigned  __i;
1347.132 -    
1347.133 -    for (__i = 0; __i < __my_spin_max; ++__i) {
1347.134 -      if (__i < __my_last_spins/2 || *__lock) {
1347.135 -        __junk *= __junk; __junk *= __junk;
1347.136 -        __junk *= __junk; __junk *= __junk;
1347.137 -      } else {
1347.138 -        if (!_Atomic_swap(__lock, 1)) {
1347.139 -          // got it!
1347.140 -          // Spinning worked.  Thus we're probably not being scheduled
1347.141 -          // against the other process with which we were contending.
1347.142 -          // Thus it makes sense to spin longer the next time.
1347.143 -          _STLP_mutex_spin<0>::__last = __i;
1347.144 -          _STLP_mutex_spin<0>::__max = _STLP_mutex_spin<0>::__high_max;
1347.145 -	    return;
1347.146 -        }
1347.147 -      }
1347.148 -    }
1347.149 -    
1347.150 -    // We are probably being scheduled against the other process.  Sleep.
1347.151 -    _STLP_mutex_spin<0>::__max = _STLP_mutex_spin<0>::__low_max;
1347.152 -    
1347.153 -    for (__i = 0 ;; ++__i) {
1347.154 -      int __log_nsec = __i + 6;
1347.155 -      
1347.156 -      if (__log_nsec > 27) __log_nsec = 27;
1347.157 -      if (!_Atomic_swap(__lock, 1)) {
1347.158 -	  break;
1347.159 -      }
1347.160 -      _S_nsec_sleep(__log_nsec);
1347.161 -    }
1347.162 -    
1347.163 -  } /* first _Atomic_swap */
1347.164 -# endif
1347.165 -}
1347.166 -#endif // _STLP_USE_PTHREAD_SPINLOCK
1347.167 -
1347.168 -_STLP_END_NAMESPACE
1347.169 -
1347.170 -# endif /* BUILDING_STLPORT */
1347.171 -#endif /*  _STLP_THREADS_C */
1347.172 -
1347.173 -// Local Variables:
1347.174 -// mode:C++
1347.175 -// End:
  1348.1 --- a/epoc32/include/stdapis/stlport/stl/_threads.h	Tue Mar 16 16:12:26 2010 +0000
  1348.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1348.3 @@ -1,666 +0,0 @@
  1348.4 -/*
  1348.5 - * Copyright (c) 1997-1999
  1348.6 - * Silicon Graphics Computer Systems, Inc.
  1348.7 - *
  1348.8 - * Copyright (c) 1999 
  1348.9 - * Boris Fomitchev
 1348.10 - *
 1348.11 - * This material is provided "as is", with absolutely no warranty expressed
 1348.12 - * or implied. Any use is at your own risk.
 1348.13 - *
 1348.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1348.15 - * without fee, provided the above notices are retained on all copies.
 1348.16 - * Permission to modify the code and to distribute modified code is granted,
 1348.17 - * provided the above notices are retained, and a notice that the code was
 1348.18 - * modified is included with the above copyright notice.
 1348.19 - *
 1348.20 - */
 1348.21 -
 1348.22 -// WARNING: This is an internal header file, included by other C++
 1348.23 -// standard library headers.  You should not attempt to use this header
 1348.24 -// file directly.
 1348.25 -// Stl_config.h should be included before this file.
 1348.26 -
 1348.27 -
 1348.28 -#ifndef _STLP_INTERNAL_THREADS_H
 1348.29 -#define _STLP_INTERNAL_THREADS_H
 1348.30 -
 1348.31 -// Supported threading models are native SGI, pthreads, uithreads
 1348.32 -// (similar to pthreads, but based on an earlier draft of the Posix
 1348.33 -// threads standard), and Win32 threads.  Uithread support by Jochen
 1348.34 -// Schlick, 1999, and Solaris threads generalized to them.
 1348.35 -
 1348.36 -#ifndef _STLP_CONFIG_H
 1348.37 -#include <stl/_config.h>
 1348.38 -#endif
 1348.39 -
 1348.40 -# if ! defined (_STLP_CSTDDEF)
 1348.41 -#  include <cstddef>
 1348.42 -# endif
 1348.43 -
 1348.44 -# if ! defined (_STLP_CSTDLIB)
 1348.45 -#  include <cstdlib>
 1348.46 -# endif
 1348.47 -
 1348.48 -// On SUN and Mac OS X gcc, zero-initialization works just fine...
 1348.49 -# if defined (__sun) || ( defined(__GNUC__) && defined(__APPLE__) )
 1348.50 -# define _STLP_MUTEX_INITIALIZER
 1348.51 -# endif
 1348.52 -
 1348.53 -# if defined (_STLP_WIN32) || defined (__sgi) || defined (_STLP_SPARC_SOLARIS_THREADS)
 1348.54 -  typedef long __stl_atomic_t;
 1348.55 -# else 
 1348.56 -# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
 1348.57 -// using _STLP_VENDOR_CSTD::size_t;
 1348.58 -using namespace _STLP_VENDOR_CSTD;
 1348.59 -# endif
 1348.60 -  typedef size_t __stl_atomic_t;
 1348.61 -#endif  
 1348.62 -
 1348.63 -# if defined(_STLP_SGI_THREADS)
 1348.64 -#  include <mutex.h>
 1348.65 -// Hack for SGI o32 compilers.
 1348.66 -#if !defined(__add_and_fetch) && \
 1348.67 -    (__mips < 3 || !(defined (_ABIN32) || defined(_ABI64)))
 1348.68 -#  define __add_and_fetch(__l,__v) add_then_test((unsigned long*)__l,__v)  
 1348.69 -#  define __test_and_set(__l,__v)  test_and_set(__l,__v)
 1348.70 -#endif /* o32 */
 1348.71 -
 1348.72 -# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64))
 1348.73 -#  define _STLP_ATOMIC_EXCHANGE(__p, __q) test_and_set(__p, __q)
 1348.74 -# else
 1348.75 -#  define _STLP_ATOMIC_EXCHANGE(__p, __q) __test_and_set((unsigned long*)__p, (unsigned long)__q)
 1348.76 -# endif
 1348.77 -
 1348.78 -#  define _STLP_ATOMIC_INCREMENT(__x) __add_and_fetch(__x, 1)
 1348.79 -#  define _STLP_ATOMIC_DECREMENT(__x) __add_and_fetch(__x, (size_t) -1)
 1348.80 -
 1348.81 -# elif defined (__GNUC__) && defined (__i386__) && defined (__unix__) && defined (_STLP_USE_INLINE_X86_SPINLOCK) 
 1348.82 -
 1348.83 -// gcc on i386 linux, freebsd, etc. 
 1348.84 -
 1348.85 -// This enables the memory caching on x86 linux.  It is critical for SMP
 1348.86 -// without it the performace is DISMAL!
 1348.87 -static inline unsigned long __xchg(volatile __stl_atomic_t* target, int source)
 1348.88 -{
 1348.89 -
 1348.90 -  // The target is refernce in memory rather than the register
 1348.91 -  // because making a copy of it from memory to the register and
 1348.92 -  // back again would ruin the atomic nature of the call.
 1348.93 -  // the source does not need to be delt with atomicly so it can
 1348.94 -  // be copied about as needed.
 1348.95 -  //
 1348.96 -  // The casting of the source is used to prevent gcc from optimizing 
 1348.97 -  // in such a way that breaks the atomic nature of this call.
 1348.98 -  //
 1348.99 -  __asm__ __volatile__("xchgl %1,%0"
1348.100 -		       :"=m" (*(volatile long *) target), "=r" (source)
1348.101 -		       :"m" (*(volatile long *) target), "r" (source) );
1348.102 -  return source;
1348.103 -
1348.104 -  //  The assembly above does the following atomicly:
1348.105 -  //   int temp=source;
1348.106 -  //   source=(int)(*target);
1348.107 -  //   (int)(*target)=temp;
1348.108 -  // return source
1348.109 -}
1348.110 -
1348.111 -static inline void __inc_and_fetch(volatile __stl_atomic_t* __x)
1348.112 -{
1348.113 -  // Referenced in memory rather than register to preserve the atomic nature.
1348.114 -  //
1348.115 -  __asm__ __volatile__(
1348.116 -      "lock; incl %0"
1348.117 -      :"=m" (*__x)
1348.118 -      :"m" (*__x) );
1348.119 -
1348.120 -  //  The assembly above does the following atomicly:
1348.121 -  //   ++(int)(*__x);
1348.122 -
1348.123 -}
1348.124 -static inline void __dec_and_fetch(volatile __stl_atomic_t* __x)
1348.125 -{
1348.126 -  // Referenced in memory rather than register to preserve the atomic nature.
1348.127 -  //
1348.128 -  __asm__ __volatile__(
1348.129 -      "lock; decl %0"
1348.130 -      :"=m" (*__x)
1348.131 -      :"m" (*__x) );
1348.132 -
1348.133 -  //  The assembly above does the following atomicly:
1348.134 -  //   --(int)(*__x);
1348.135 -}
1348.136 -
1348.137 -#  define _STLP_ATOMIC_EXCHANGE(target, newValue) ((__xchg(target, newValue)))
1348.138 -#  define _STLP_ATOMIC_INCREMENT(__x) __inc_and_fetch(__x)
1348.139 -#  define _STLP_ATOMIC_DECREMENT(__x) __dec_and_fetch(__x)
1348.140 -
1348.141 -# elif defined(_STLP_PTHREADS)
1348.142 -
1348.143 -#  include <pthread.h>
1348.144 -#  ifndef _STLP_USE_PTHREAD_SPINLOCK
1348.145 -#   if defined(PTHREAD_MUTEX_INITIALIZER) && !defined(_STLP_MUTEX_INITIALIZER)
1348.146 -#    define _STLP_MUTEX_INITIALIZER = { PTHREAD_MUTEX_INITIALIZER }
1348.147 -#   endif
1348.148 -
1348.149 -//HPUX variants have (on some platforms optional) non-standard "DCE" pthreads impl
1348.150 -#   if defined(_DECTHREADS_) && (defined(_PTHREAD_USE_D4) || defined(__hpux)) && !defined(_CMA_SUPPRESS_EXTERNALS_)
1348.151 -#    define _STLP_PTHREAD_ATTR_DEFAULT pthread_mutexattr_default
1348.152 -#   else
1348.153 -#    define _STLP_PTHREAD_ATTR_DEFAULT 0
1348.154 -#   endif
1348.155 -#  endif // !_STLP_USE_PTHREAD_SPINLOCK 
1348.156 -
1348.157 -# elif defined(_STLP_WIN32THREADS)
1348.158 -#  if !defined (_STLP_WINDOWS_H_INCLUDED) && ! defined (_WINDOWS_H)
1348.159 -#   if ! (defined ( _STLP_MSVC ) || defined (__BORLANDC__) || defined (__ICL) || defined (__WATCOMC__) || defined (__MINGW32__) || defined (__DMC__))
1348.160 -#    ifdef _STLP_USE_MFC
1348.161 -#     include <afx.h>
1348.162 -#    else
1348.163 -#     include <windows.h>
1348.164 -#    endif
1348.165 -#    define _STLP_WINDOWS_H_INCLUDED
1348.166 -#   else 
1348.167 -// This section serves as a replacement for windows.h header for Visual C++
1348.168 -extern "C" {
1348.169 -#   if (defined(_M_MRX000) || defined(_M_ALPHA) \
1348.170 -       || (defined(_M_PPC) && (_MSC_VER >= 1000))) && !defined(RC_INVOKED)
1348.171 -#    define InterlockedIncrement       _InterlockedIncrement
1348.172 -#    define InterlockedDecrement       _InterlockedDecrement
1348.173 -#    define InterlockedExchange        _InterlockedExchange
1348.174 -#    define _STLP_STDCALL
1348.175 -#   else
1348.176 -#    ifdef _MAC
1348.177 -#     define _STLP_STDCALL _cdecl
1348.178 -#    else
1348.179 -#     define _STLP_STDCALL __stdcall
1348.180 -#    endif
1348.181 -#   endif
1348.182 -
1348.183 -#if (_MSC_VER >= 1300) || defined (_STLP_NEW_PLATFORM_SDK)
1348.184 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *);
1348.185 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *);
1348.186 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long);
1348.187 -#else
1348.188 -  // boris : for the latest SDK, you may actually need the other version of the declaration (above)
1348.189 -  // even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ...
1348.190 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*);
1348.191 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*);
1348.192 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long);
1348.193 -#endif
1348.194 -
1348.195 -_STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long);
1348.196 -_STLP_IMPORT_DECLSPEC void _STLP_STDCALL OutputDebugStringA( const char* lpOutputString );
1348.197 -
1348.198 -#ifdef _STLP_DEBUG
1348.199 -typedef unsigned long DWORD;
1348.200 -_STLP_IMPORT_DECLSPEC DWORD _STLP_STDCALL GetCurrentThreadId();
1348.201 -#endif /* _STLP_DEBUG */
1348.202 -
1348.203 -#    if defined (InterlockedIncrement)
1348.204 -#     pragma intrinsic(_InterlockedIncrement)
1348.205 -#     pragma intrinsic(_InterlockedDecrement)
1348.206 -#     pragma intrinsic(_InterlockedExchange)
1348.207 -#    endif
1348.208 -} /* extern "C" */
1348.209 -
1348.210 -#   endif /* STL_MSVC */
1348.211 -
1348.212 -#   define _STLP_WINDOWS_H_INCLUDED
1348.213 -
1348.214 -#  endif /* _STLP_WIN32 */
1348.215 -
1348.216 -#  ifndef _STLP_ATOMIC_INCREMENT
1348.217 -#   define _STLP_ATOMIC_INCREMENT(__x)           InterlockedIncrement((long*)__x)
1348.218 -#   define _STLP_ATOMIC_DECREMENT(__x)           InterlockedDecrement((long*)__x)
1348.219 -#   define _STLP_ATOMIC_EXCHANGE(__x, __y)       InterlockedExchange((long*)__x, (long)__y)
1348.220 -#  endif
1348.221 -# elif defined(__DECC) || defined(__DECCXX)
1348.222 -#  include <machine/builtins.h>
1348.223 -#  define _STLP_ATOMIC_EXCHANGE __ATOMIC_EXCH_LONG
1348.224 -#  define _STLP_ATOMIC_INCREMENT(__x) __ATOMIC_ADD_LONG(__x, 1)
1348.225 -#  define _STLP_ATOMIC_DECREMENT(__x) __ATOMIC_ADD_LONG(__x, -1)
1348.226 -# elif defined(_STLP_SPARC_SOLARIS_THREADS)
1348.227 -#  include <stl/_sparc_atomic.h>
1348.228 -# elif defined (_STLP_UITHREADS)
1348.229 -// this inclusion is potential hazard to bring up all sorts
1348.230 -// of old-style headers. Let's assume vendor already know how
1348.231 -// to deal with that.
1348.232 -#  include <ctime>
1348.233 -# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
1348.234 -using _STLP_VENDOR_CSTD::time_t;
1348.235 -# endif
1348.236 -#  include <synch.h>
1348.237 -#  include <cstdio>
1348.238 -#  include <stl/_cwchar.h>
1348.239 -# elif defined (_STLP_BETHREADS)
1348.240 -#  include <OS.h>
1348.241 -#include <cassert>
1348.242 -#include <stdio.h>
1348.243 -#  define _STLP_MUTEX_INITIALIZER = { 0 }
1348.244 -#elif defined(_STLP_OS2THREADS)
1348.245 -# ifdef __GNUC__
1348.246 -#  define INCL_DOSSEMAPHORES
1348.247 -#  include <os2.h>
1348.248 -# else
1348.249 -  // This section serves to replace os2.h for VisualAge C++
1348.250 -  typedef unsigned long ULONG;
1348.251 -  #ifndef __HEV__  /* INCL_SEMAPHORE may also define HEV */
1348.252 -    #define __HEV__
1348.253 -    typedef ULONG HEV;
1348.254 -    typedef HEV*  PHEV;
1348.255 -  #endif
1348.256 -  typedef ULONG APIRET;
1348.257 -  typedef ULONG HMTX;
1348.258 -  typedef HMTX*  PHMTX;
1348.259 -  typedef const char*  PCSZ;
1348.260 -  typedef ULONG BOOL32;
1348.261 -  APIRET _System DosCreateMutexSem(PCSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState);
1348.262 -  APIRET _System DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
1348.263 -  APIRET _System DosReleaseMutexSem(HMTX hmtx);
1348.264 -  APIRET _System DosCloseMutexSem(HMTX hmtx);
1348.265 -# define _STLP_MUTEX_INITIALIZER = { 0 };
1348.266 -#  endif /* GNUC */
1348.267 -# elif defined(_STLP_VXWORKS_THREADS)
1348.268 -#  include "semLib.h"
1348.269 -# endif
1348.270 -
1348.271 -# ifndef _STLP_MUTEX_INITIALIZER
1348.272 -#   if defined(_STLP_ATOMIC_EXCHANGE)
1348.273 -// we are using our own spinlock. 
1348.274 -#     define _STLP_MUTEX_INITIALIZER = { 0 }
1348.275 -#   elif defined(_STLP_UITHREADS)
1348.276 -// known case
1348.277 -#     define _STLP_MUTEX_INITIALIZER = { DEFAULTMUTEX }
1348.278 -#   else
1348.279 -// we do not have static initializer available. therefore, on-demand synchronization is needed.
1348.280 -#     define _STLP_MUTEX_INITIALIZER
1348.281 -#     define _STLP_MUTEX_NEEDS_ONDEMAND_INITIALIZATION
1348.282 -#   endif
1348.283 -# endif
1348.284 -
1348.285 -_STLP_BEGIN_NAMESPACE
1348.286 -
1348.287 -#ifndef _STLP_USE_PTHREAD_SPINLOCK
1348.288 -// Helper struct.  This is a workaround for various compilers that don't
1348.289 -// handle static variables in inline functions properly.
1348.290 -template <int __inst>
1348.291 -struct _STLP_mutex_spin {
1348.292 -  enum { __low_max = 30, __high_max = 1000 };
1348.293 -  // Low if we suspect uniprocessor, high for multiprocessor.
1348.294 -  static unsigned __max;
1348.295 -  static unsigned __last;
1348.296 -  static void _STLP_CALL _M_do_lock(volatile __stl_atomic_t* __lock);
1348.297 -  static void _STLP_CALL _S_nsec_sleep(int __log_nsec);
1348.298 -};
1348.299 -#endif // !_STLP_USE_PTHREAD_SPINLOCK
1348.300 -
1348.301 -
1348.302 -// Locking class.  Note that this class *does not have a constructor*.
1348.303 -// It must be initialized either statically, with _STLP_MUTEX_INITIALIZER,
1348.304 -// or dynamically, by explicitly calling the _M_initialize member function.
1348.305 -// (This is similar to the ways that a pthreads mutex can be initialized.)
1348.306 -// There are explicit member functions for acquiring and releasing the lock.
1348.307 -
1348.308 -// There is no constructor because static initialization is essential for
1348.309 -// some uses, and only a class aggregate (see section 8.5.1 of the C++
1348.310 -// standard) can be initialized that way.  That means we must have no
1348.311 -// constructors, no base classes, no virtual functions, and no private or
1348.312 -// protected members.
1348.313 -
1348.314 -// For non-static cases, clients should use  _STLP_mutex.
1348.315 -
1348.316 -struct _STLP_CLASS_DECLSPEC _STLP_mutex_base
1348.317 -{
1348.318 -#if defined(_STLP_ATOMIC_EXCHANGE) || defined(_STLP_SGI_THREADS)
1348.319 -  // It should be relatively easy to get this to work on any modern Unix.
1348.320 -  volatile __stl_atomic_t _M_lock;
1348.321 -#endif
1348.322 -
1348.323 -#ifdef _STLP_THREADS
1348.324 -
1348.325 -# ifdef _STLP_ATOMIC_EXCHANGE
1348.326 -  inline void _M_initialize() { _M_lock=0; }
1348.327 -  inline void _M_destroy() {}
1348.328 -
1348.329 -  void _M_acquire_lock() {
1348.330 -    _STLP_mutex_spin<0>::_M_do_lock(&_M_lock);
1348.331 -  }
1348.332 -
1348.333 -  inline void _M_release_lock() {
1348.334 -    volatile __stl_atomic_t* __lock = &_M_lock;
1348.335 -#  if defined(_STLP_SGI_THREADS) && defined(__GNUC__) && __mips >= 3
1348.336 -        asm("sync");
1348.337 -        *__lock = 0;
1348.338 -#  elif defined(_STLP_SGI_THREADS) && __mips >= 3 \
1348.339 -	 && (defined (_ABIN32) || defined(_ABI64))
1348.340 -        __lock_release(__lock);
1348.341 -#  elif defined (_STLP_SPARC_SOLARIS_THREADS)
1348.342 -#   if defined (__WORD64) || defined (__arch64__) || defined (__sparcv9) || defined (__sparcv8plus)
1348.343 -	asm("membar #StoreStore ; membar #LoadStore");
1348.344 -#   else
1348.345 -	asm(" stbar ");
1348.346 -#   endif
1348.347 -        *__lock = 0;	
1348.348 -#  else
1348.349 -        *__lock = 0;
1348.350 -        // This is not sufficient on many multiprocessors, since
1348.351 -        // writes to protected variables and the lock may be reordered.
1348.352 -#  endif
1348.353 -  }
1348.354 -# elif defined(_STLP_PTHREADS)
1348.355 -#  ifdef _STLP_USE_PTHREAD_SPINLOCK
1348.356 -  pthread_spinlock_t _M_lock;
1348.357 -  inline void _M_initialize() { pthread_spin_init( &_M_lock, 0 ); }
1348.358 -  inline void _M_destroy() { pthread_spin_destroy( &_M_lock ); }
1348.359 -
1348.360 -  inline void _M_acquire_lock() { 
1348.361 -    // we do not care about race conditions here : there is only one thread at this point 
1348.362 -    if(!_M_lock) pthread_spin_init( &_M_lock, 0 );
1348.363 -
1348.364 -    // fbp: here, initialization on demand should happen before the lock
1348.365 -    // we use simple strategy as we are sure this only happens on initialization
1348.366 -    pthread_spin_lock( &_M_lock );
1348.367 -  }
1348.368 -
1348.369 -  inline void _M_acquire_lock_nodemand() { 
1348.370 -    pthread_spin_lock( &_M_lock ); 
1348.371 -  }
1348.372 -  inline void _M_release_lock() { pthread_spin_unlock( &_M_lock ); }
1348.373 -#  else // !_STLP_USE_PTHREAD_SPINLOCK
1348.374 -  pthread_mutex_t _M_lock;
1348.375 -
1348.376 -  inline void _M_initialize() {
1348.377 -    pthread_mutex_init(&_M_lock,_STLP_PTHREAD_ATTR_DEFAULT);
1348.378 -  }
1348.379 -  inline void _M_destroy() {
1348.380 -    pthread_mutex_destroy(&_M_lock);
1348.381 -  }
1348.382 -  inline void _M_acquire_lock_nodemand() { 
1348.383 -    pthread_mutex_lock(&_M_lock);
1348.384 -  }
1348.385 -
1348.386 -  inline void _M_acquire_lock() { 
1348.387 -#    if defined (__hpux) && !defined (PTHREAD_MUTEX_INITIALIZER)
1348.388 -      if (!_M_lock.field1)  _M_initialize();
1348.389 -#    endif
1348.390 -     pthread_mutex_lock(&_M_lock);
1348.391 -  }
1348.392 -  inline void _M_release_lock() { pthread_mutex_unlock(&_M_lock); }
1348.393 -#  endif // !_STLP_USE_PTHREAD_SPINLOCK
1348.394 -  
1348.395 -# elif defined (_STLP_UITHREADS)
1348.396 -  mutex_t _M_lock;
1348.397 -  inline void _M_initialize() {
1348.398 -    mutex_init(&_M_lock,0,NULL);	
1348.399 -  }
1348.400 -  inline void _M_destroy() {
1348.401 -    mutex_destroy(&_M_lock);
1348.402 -  }
1348.403 -  inline void _M_acquire_lock() { mutex_lock(&_M_lock); }
1348.404 -  inline void _M_release_lock() { mutex_unlock(&_M_lock); }
1348.405 -
1348.406 -# elif defined(_STLP_OS2THREADS)
1348.407 -  HMTX _M_lock;
1348.408 -  inline void _M_initialize() { DosCreateMutexSem(NULL, &_M_lock, 0, false); }
1348.409 -  inline void _M_destroy() { DosCloseMutexSem(_M_lock); }
1348.410 -  inline void _M_acquire_lock_nodemand() {
1348.411 -    DosRequestMutexSem(_M_lock, SEM_INDEFINITE_WAIT);
1348.412 -  }  
1348.413 -  inline void _M_acquire_lock() {
1348.414 -    if(!_M_lock) _M_initialize();
1348.415 -    DosRequestMutexSem(_M_lock, SEM_INDEFINITE_WAIT);
1348.416 -  }
1348.417 -  inline void _M_release_lock() { DosReleaseMutexSem(_M_lock); }
1348.418 -# elif defined(_STLP_BETHREADS)
1348.419 -  sem_id sem;
1348.420 -  inline void _M_initialize() 
1348.421 -  {
1348.422 -     sem = create_sem(1, "STLPort");
1348.423 -     assert(sem > 0);
1348.424 -  }
1348.425 -  inline void _M_destroy() 
1348.426 -  {
1348.427 -     int t = delete_sem(sem);
1348.428 -     assert(t == B_NO_ERROR);
1348.429 -  }
1348.430 -  inline void _M_acquire_lock_nodemand()
1348.431 -  {
1348.432 -    status_t t;
1348.433 -    t = acquire_sem(sem);
1348.434 -    assert(t == B_NO_ERROR);
1348.435 -  }
1348.436 -  inline void _M_acquire_lock();
1348.437 -  inline void _M_release_lock() 
1348.438 -  {
1348.439 -     status_t t = release_sem(sem);
1348.440 -     assert(t == B_NO_ERROR);
1348.441 -  }
1348.442 -# elif defined(_STLP_VXWORKS_THREADS)
1348.443 -  SEM_ID _M_sem;
1348.444 -  inline void _M_initialize() 
1348.445 -  {
1348.446 -     _M_sem = semMCreate(SEM_Q_FIFO);
1348.447 -     assert(_M_sem > 0);
1348.448 -  }
1348.449 -  inline void _M_destroy() 
1348.450 -  {
1348.451 -    STATUS __s;
1348.452 -    semDelete (_M_sem);
1348.453 -    assert(__s == OK);
1348.454 -  }
1348.455 -  inline void _M_acquire_lock_nodemand()
1348.456 -  {
1348.457 -    STATUS __s;
1348.458 -    semTake (_M_sem, WAIT_FOREVER);
1348.459 -    assert(__s == OK);
1348.460 -  }
1348.461 -  inline void _M_acquire_lock()
1348.462 -  {
1348.463 -    if (!_M_sem)
1348.464 -      _M_initialize();
1348.465 -    _M_acquire_lock_nodemand();
1348.466 -  }
1348.467 -  inline void _M_release_lock() 
1348.468 -  {
1348.469 -    STATUS __s;
1348.470 -    semGive (_M_sem, WAIT_FOREVER);
1348.471 -    assert(__s == OK);
1348.472 -  }
1348.473 -# else		//*ty 11/24/2001 - added configuration check
1348.474 -#  error "Unknown thread facility configuration"
1348.475 -# endif
1348.476 -#else /* No threads */
1348.477 -  inline void _M_initialize() {}
1348.478 -  inline void _M_destroy() {}
1348.479 -  inline void _M_acquire_lock() {}
1348.480 -  inline void _M_release_lock() {}
1348.481 -#endif // _STLP_PTHREADS
1348.482 -};
1348.483 -
1348.484 -
1348.485 -#if defined (_STLP_THREADS) && defined (_STLP_MUTEX_NEEDS_ONDEMAND_INITIALIZATION)
1348.486 -// for use in _STLP_mutex, our purposes do not require ondemand initialization
1348.487 -// also, mutex_base may use some hacks to determine uninitialized state by zero data, which only works for globals.
1348.488 -class _STLP_CLASS_DECLSPEC _STLP_mutex_nodemand : public _STLP_mutex_base {
1348.489 -  inline void _M_acquire_lock() { 
1348.490 -    _M_acquire_lock_nodemand();
1348.491 -  }
1348.492 -};
1348.493 -#else
1348.494 -typedef _STLP_mutex_base _STLP_mutex_nodemand;
1348.495 -#endif
1348.496 -
1348.497 -
1348.498 -// Locking class.  The constructor initializes the lock, the destructor destroys it.
1348.499 -// Well - behaving class, does not need static initializer
1348.500 -class _STLP_CLASS_DECLSPEC _STLP_mutex : public _STLP_mutex_nodemand {
1348.501 -  public:
1348.502 -    inline _STLP_mutex () { _M_initialize(); }
1348.503 -    inline ~_STLP_mutex () { _M_destroy(); }
1348.504 -  private:
1348.505 -    _STLP_mutex(const _STLP_mutex&);
1348.506 -    void operator=(const _STLP_mutex&);
1348.507 -};
1348.508 -
1348.509 -
1348.510 -
1348.511 -/*
1348.512 - * Class _Refcount_Base provides a type, __stl_atomic_t, a data member,
1348.513 - * _M_ref_count, and member functions _M_incr and _M_decr, which perform
1348.514 - * atomic preincrement/predecrement.  The constructor initializes 
1348.515 - * _M_ref_count.
1348.516 - */
1348.517 -struct _STLP_CLASS_DECLSPEC _Refcount_Base
1348.518 -{
1348.519 -  // The data member _M_ref_count
1348.520 -  volatile __stl_atomic_t _M_ref_count;
1348.521 -
1348.522 -# if !defined (_STLP_ATOMIC_EXCHANGE)
1348.523 -  _STLP_mutex _M_mutex;
1348.524 -# endif
1348.525 -
1348.526 -  // Constructor
1348.527 -  _Refcount_Base(__stl_atomic_t __n) : _M_ref_count(__n) {}
1348.528 -
1348.529 -  // _M_incr and _M_decr
1348.530 -# if defined (_STLP_THREADS) && defined (_STLP_ATOMIC_EXCHANGE)
1348.531 -   void _M_incr() { _STLP_ATOMIC_INCREMENT((__stl_atomic_t*)&_M_ref_count); }
1348.532 -   void _M_decr() { _STLP_ATOMIC_DECREMENT((__stl_atomic_t*)&_M_ref_count); }
1348.533 -# elif defined(_STLP_THREADS)
1348.534 -  void _M_incr() {
1348.535 -    _M_mutex._M_acquire_lock();
1348.536 -    ++_M_ref_count;
1348.537 -    _M_mutex._M_release_lock();
1348.538 -  }
1348.539 -  void _M_decr() {
1348.540 -    _M_mutex._M_acquire_lock();
1348.541 -    --_M_ref_count;
1348.542 -    _M_mutex._M_release_lock();
1348.543 -  }
1348.544 -# else  /* No threads */
1348.545 -  void _M_incr() { ++_M_ref_count; }
1348.546 -  void _M_decr() { --_M_ref_count; }
1348.547 -# endif
1348.548 -};
1348.549 -
1348.550 -// Atomic swap on unsigned long
1348.551 -// This is guaranteed to behave as though it were atomic only if all
1348.552 -// possibly concurrent updates use _Atomic_swap.
1348.553 -// In some cases the operation is emulated with a lock.
1348.554 -# if defined (_STLP_THREADS)
1348.555 -#  ifdef _STLP_ATOMIC_EXCHANGE
1348.556 -inline __stl_atomic_t _Atomic_swap(volatile __stl_atomic_t * __p, __stl_atomic_t __q) {
1348.557 -  return (__stl_atomic_t) _STLP_ATOMIC_EXCHANGE(__p,__q);
1348.558 -}
1348.559 -#  elif defined(_STLP_PTHREADS) || defined (_STLP_UITHREADS) || defined (_STLP_OS2THREADS) || defined(_STLP_USE_PTHREAD_SPINLOCK)
1348.560 -// We use a template here only to get a unique initialized instance.
1348.561 -template<int __dummy>
1348.562 -struct _Swap_lock_struct {
1348.563 -  static _STLP_STATIC_MUTEX _S_swap_lock;
1348.564 -};
1348.565 -
1348.566 -
1348.567 -// This should be portable, but performance is expected
1348.568 -// to be quite awful.  This really needs platform specific
1348.569 -// code.
1348.570 -inline __stl_atomic_t _Atomic_swap(volatile __stl_atomic_t * __p, __stl_atomic_t __q) {
1348.571 -  _Swap_lock_struct<0>::_S_swap_lock._M_acquire_lock();
1348.572 -  __stl_atomic_t __result = *__p;
1348.573 -  *__p = __q;
1348.574 -  _Swap_lock_struct<0>::_S_swap_lock._M_release_lock();
1348.575 -  return __result;
1348.576 -}
1348.577 -#  endif // _STLP_PTHREADS || _STLP_UITHREADS || _STLP_OS2THREADS || _STLP_USE_PTHREAD_SPINLOCK
1348.578 -# else // !_STLP_THREADS
1348.579 -/* no threads */
1348.580 -static inline __stl_atomic_t  _STLP_CALL
1348.581 -_Atomic_swap(volatile __stl_atomic_t * __p, __stl_atomic_t __q) {
1348.582 -  __stl_atomic_t __result = *__p;
1348.583 -  *__p = __q;
1348.584 -  return __result;
1348.585 -}
1348.586 -# endif // _STLP_THREADS
1348.587 -
1348.588 -// A locking class that uses _STLP_STATIC_MUTEX.  The constructor takes
1348.589 -// a reference to an _STLP_STATIC_MUTEX, and acquires a lock.  The destructor
1348.590 -// releases the lock.
1348.591 -
1348.592 -struct _STLP_CLASS_DECLSPEC _STLP_auto_lock
1348.593 -{
1348.594 -  _STLP_STATIC_MUTEX& _M_lock;
1348.595 -  
1348.596 -  _STLP_auto_lock(_STLP_STATIC_MUTEX& __lock) : _M_lock(__lock)
1348.597 -    { _M_lock._M_acquire_lock(); }
1348.598 -  ~_STLP_auto_lock() { _M_lock._M_release_lock(); }
1348.599 -
1348.600 -private:
1348.601 -  void operator=(const _STLP_auto_lock&);
1348.602 -  _STLP_auto_lock(const _STLP_auto_lock&);
1348.603 -};
1348.604 -
1348.605 -typedef _STLP_auto_lock _STLP_mutex_lock;
1348.606 -
1348.607 -#ifdef _STLP_BETHREADS
1348.608 -
1348.609 -template <int __inst>
1348.610 -struct _STLP_beos_static_lock_data
1348.611 -{
1348.612 -	static bool is_init;
1348.613 -	struct mutex_t : public _STLP_mutex
1348.614 -	{
1348.615 -		mutex_t()
1348.616 -		{
1348.617 -			_STLP_beos_static_lock_data<0>::is_init = true;
1348.618 -		}
1348.619 -		~mutex_t()
1348.620 -		{
1348.621 -			_STLP_beos_static_lock_data<0>::is_init = false;
1348.622 -		}
1348.623 -	};
1348.624 -	static mutex_t mut;
1348.625 -};
1348.626 -
1348.627 -template <int __inst>
1348.628 -bool _STLP_beos_static_lock_data<__inst>::is_init = false;
1348.629 -template <int __inst>
1348.630 -typename _STLP_beos_static_lock_data<__inst>::mutex_t _STLP_beos_static_lock_data<__inst>::mut;
1348.631 -
1348.632 -
1348.633 -inline void _STLP_mutex_base::_M_acquire_lock() 
1348.634 -{
1348.635 -	if(sem == 0)
1348.636 -	{
1348.637 -		// we need to initialise on demand here
1348.638 -		// to prevent race conditions use our global
1348.639 -		// mutex if it's available:
1348.640 -		if(_STLP_beos_static_lock_data<0>::is_init)
1348.641 -		{
1348.642 -			_STLP_auto_lock al(_STLP_beos_static_lock_data<0>::mut);
1348.643 -			if(sem == 0) _M_initialize();
1348.644 -		}
1348.645 -		else
1348.646 -		{
1348.647 -			// no lock available, we must still be
1348.648 -			// in startup code, THERE MUST BE ONE THREAD
1348.649 -			// ONLY active at this point.
1348.650 -			_M_initialize();
1348.651 -		}
1348.652 -	}
1348.653 -	_M_acquire_lock_nodemand();
1348.654 -}
1348.655 -
1348.656 -#endif
1348.657 -
1348.658 -_STLP_END_NAMESPACE
1348.659 -
1348.660 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1348.661 -#  include <stl/_threads.c>
1348.662 -# endif
1348.663 -
1348.664 -#endif /* _STLP_INTERNAL_THREADS_H */
1348.665 -
1348.666 -// Local Variables:
1348.667 -// mode:C++
1348.668 -// End:
1348.669 -
  1349.1 --- a/epoc32/include/stdapis/stlport/stl/_time_facets.c	Tue Mar 16 16:12:26 2010 +0000
  1349.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1349.3 @@ -1,522 +0,0 @@
  1349.4 -/*
  1349.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1349.6 - *
  1349.7 - * Copyright (c) 1999
  1349.8 - * Silicon Graphics Computer Systems, Inc.
  1349.9 - *
 1349.10 - * Copyright (c) 1999 
 1349.11 - * Boris Fomitchev
 1349.12 - *
 1349.13 - * This material is provided "as is", with absolutely no warranty expressed
 1349.14 - * or implied. Any use is at your own risk.
 1349.15 - *
 1349.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1349.17 - * without fee, provided the above notices are retained on all copies.
 1349.18 - * Permission to modify the code and to distribute modified code is granted,
 1349.19 - * provided the above notices are retained, and a notice that the code was
 1349.20 - * modified is included with the above copyright notice.
 1349.21 - *
 1349.22 - */ 
 1349.23 -#ifndef _STLP_TIME_FACETS_C
 1349.24 -#define _STLP_TIME_FACETS_C
 1349.25 -
 1349.26 -#ifndef _STLP_INTERNAL_TIME_FACETS_H
 1349.27 -# include <stl/_time_facets.h>
 1349.28 -#endif
 1349.29 -
 1349.30 -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1349.31 -
 1349.32 -#ifndef _STLP_INTERNAL_NUM_PUT_H
 1349.33 -# include <stl/_num_put.h>
 1349.34 -#endif
 1349.35 -
 1349.36 -#ifndef _STLP_INTERNAL_NUM_GET_H
 1349.37 -# include <stl/_num_get.h>
 1349.38 -#endif
 1349.39 -
 1349.40 -_STLP_BEGIN_NAMESPACE
 1349.41 -
 1349.42 -//----------------------------------------------------------------------
 1349.43 -// Declarations of static template members.
 1349.44 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
 1349.45 -# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1349.46 -template <class _CharT, class _InputIterator>
 1349.47 -locale::id time_get<_CharT, _InputIterator>::id;
 1349.48 -
 1349.49 -template <class _CharT, class _OutputIterator>
 1349.50 -locale::id time_put<_CharT, _OutputIterator>::id;
 1349.51 -#endif
 1349.52 -
 1349.53 -# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1349.54 -
 1349.55 -typedef time_get<char, const char*> time_get_char;
 1349.56 -typedef time_get<char, char*> time_get_char_2;
 1349.57 -typedef time_get<char, istreambuf_iterator<char, char_traits<char> > > time_get_char_3;
 1349.58 -typedef time_put<char, const char*> time_put_char;
 1349.59 -typedef time_put<char, char*> time_put_char_2;
 1349.60 -typedef time_put<char, ostreambuf_iterator<char, char_traits<char> > > time_put_char_3;
 1349.61 -
 1349.62 -#ifndef __SYMBIAN32__
 1349.63 -__DECLARE_INSTANCE(locale::id, time_get_char::id, );
 1349.64 -__DECLARE_INSTANCE(locale::id, time_get_char_2::id, );
 1349.65 -__DECLARE_INSTANCE(locale::id, time_get_char_3::id, );
 1349.66 -__DECLARE_INSTANCE(locale::id, time_put_char::id, );
 1349.67 -__DECLARE_INSTANCE(locale::id, time_put_char_2::id, );
 1349.68 -__DECLARE_INSTANCE(locale::id, time_put_char_3::id, );
 1349.69 -#endif
 1349.70 -
 1349.71 -# ifndef _STLP_NO_WCHAR_T
 1349.72 -
 1349.73 -typedef time_get<wchar_t, const wchar_t*> time_get_wchar_t;
 1349.74 -typedef time_get<wchar_t, wchar_t*> time_get_wchar_t_2;
 1349.75 -typedef time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_get_wchar_t_3;
 1349.76 -typedef time_put<wchar_t, const wchar_t*> time_put_wchar_t;
 1349.77 -typedef time_put<wchar_t, wchar_t*> time_put_wchar_t_2;
 1349.78 -typedef time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_put_wchar_t_3;
 1349.79 -
 1349.80 -#ifndef __SYMBIAN32__
 1349.81 -__DECLARE_INSTANCE(locale::id, time_get_wchar_t::id, );
 1349.82 -__DECLARE_INSTANCE(locale::id, time_get_wchar_t_2::id, );
 1349.83 -__DECLARE_INSTANCE(locale::id, time_get_wchar_t_3::id, );
 1349.84 -__DECLARE_INSTANCE(locale::id, time_put_wchar_t::id, );
 1349.85 -__DECLARE_INSTANCE(locale::id, time_put_wchar_t_2::id, );
 1349.86 -__DECLARE_INSTANCE(locale::id, time_put_wchar_t_3::id, );
 1349.87 -#endif
 1349.88 -
 1349.89 -# endif
 1349.90 -
 1349.91 -# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1349.92 -
 1349.93 -template <class _InIt, class _RAIt, class _DiffType>
 1349.94 -_RAIt _STLP_CALL
 1349.95 -__match(_InIt& __first, _InIt& __last, _RAIt __name, _RAIt __name_end, _DiffType*) {
 1349.96 -  typedef _DiffType difference_type;
 1349.97 -  difference_type __n = __name_end - __name;
 1349.98 -  size_t __max_pos = 0;
 1349.99 -  difference_type __i;
1349.100 -  difference_type __pos = 0;
1349.101 -  difference_type __check_count = __n;
1349.102 -  bool __do_check[_MAXNAMES];
1349.103 -  _RAIt __matching_name[_MAX_NAME_LENGTH];
1349.104 -
1349.105 -  for (__i = 0; __i < __n; ++__i)
1349.106 -    __max_pos = (max)(__max_pos,  __name[__i].size());
1349.107 -
1349.108 -  for (__i = 0; __i < _MAXNAMES; ++__i)
1349.109 -    __do_check[__i] = true;
1349.110 -
1349.111 -
1349.112 -
1349.113 -  for (__i = 0; __i < _MAX_NAME_LENGTH; ++__i)
1349.114 -    __matching_name[__i] = __name_end;
1349.115 -
1349.116 -  while (__first != __last) {
1349.117 -    for (__i = 0; __i < __n; ++__i)
1349.118 -      if (__do_check[__i])
1349.119 -        if (*__first == __name[__i][__pos]) {
1349.120 -          if (__pos == _DiffType(__name[__i].size()) - 1) {
1349.121 -            __do_check[__i] = 0;
1349.122 -            __matching_name[__pos+1] = __name + __i;
1349.123 -            --__check_count;
1349.124 -            if (__check_count == 0) {
1349.125 -              ++__first; 
1349.126 -	      return __name + __i;
1349.127 -	    }
1349.128 -          }
1349.129 -        }
1349.130 -        else {
1349.131 -          __do_check[__i] = 0;
1349.132 -          --__check_count;
1349.133 -          if (__check_count == 0) 
1349.134 -            return __matching_name[__pos];
1349.135 -        }
1349.136 -
1349.137 -    ++__first; ++__pos;
1349.138 -  }
1349.139 -
1349.140 -  return __matching_name[__pos];
1349.141 -}
1349.142 -
1349.143 -template <class _InIt, class _RAIt>
1349.144 -_RAIt _STLP_CALL
1349.145 -__match(_InIt& __first, _InIt& __last, _RAIt __name, _RAIt __name_end) {
1349.146 -  return __match((_InIt&)__first, (_InIt&)__last, __name, __name_end, _STLP_DISTANCE_TYPE(__name, _InIt));
1349.147 -}
1349.148 -
1349.149 -// __get_formatted_time reads input that is assumed to be formatted
1349.150 -// according to the rules for the C strftime function (C standard,
1349.151 -// 7.12.3.5).  This function is used to implement the do_get_time
1349.152 -// and do_get_date virtual functions, which depend on the locale
1349.153 -// specifications for the time and day formats respectively.
1349.154 -// Note the catchall default case, intended mainly for the '%Z'
1349.155 -// format designator, which does not make sense here since the
1349.156 -// representation of timezones is not part of the locale.
1349.157 -//
1349.158 -// The case branches are implemented either by doing a match using
1349.159 -// the appopriate name table or by doing a __get_integer_nogroup.
1349.160 -//
1349.161 -// 'y' format is assumed to mean that the input represents years
1349.162 -// since 1900.  That is, 2002 should be represented as 102.  There
1349.163 -// is no century-guessing.
1349.164 -//
1349.165 -// The match is successful if and only if the second component of the
1349.166 -// return value is format_end.
1349.167 -
1349.168 -// Note that the antepenultimate parameter is being used only to determine
1349.169 -// the correct overloading for the calls to __get_integer_nogroup.
1349.170 -
1349.171 -template <class _InIt1, class _InIt2 /* , class _Ch */ >
1349.172 -_InIt2 _STLP_CALL
1349.173 -__get_formatted_time _STLP_WEAK (_InIt1 __first,  _InIt1 __last,
1349.174 -                     _InIt2 __format, _InIt2 __format_end,
1349.175 -				 /* _Ch, */ const _Time_Info& __table,
1349.176 -		     ios_base::iostate& __err,
1349.177 -                     tm*         __t) {
1349.178 -  while(__first != __last && __format != __format_end) {
1349.179 -    if (*__format == '%') {
1349.180 -      ++__format;
1349.181 -      char __c = *__format;
1349.182 -      switch (__c) {
1349.183 -        case 'a': {
1349.184 -          const string* __pr =
1349.185 -            __match(__first, __last,
1349.186 -		    (string*)__table._M_dayname + 0 , (string*)__table._M_dayname + 7);
1349.187 -            if (__pr == (string*)__table._M_dayname + 7)
1349.188 -              return __format;
1349.189 -            __t->tm_wday = (int)(__pr - (string*)__table._M_dayname);
1349.190 -            break;
1349.191 -        }
1349.192 -
1349.193 -        case 'A': {
1349.194 -          const string* __pr =
1349.195 -            __match(__first, __last,
1349.196 -		    (string*)__table._M_dayname + 7, (string*)__table._M_dayname + 14);
1349.197 -            if (__pr == (string*)__table._M_dayname + 14)
1349.198 -              return __format;
1349.199 -            __t->tm_wday = (int)(__pr - (string*)__table._M_dayname - 7);
1349.200 -            break;
1349.201 -        }
1349.202 -
1349.203 -        case 'b': {
1349.204 -          const string* __pr =
1349.205 -            __match(__first, __last,
1349.206 -		    (string*)__table._M_monthname + 0, (string*)__table._M_monthname + 12);
1349.207 -            if (__pr == (string*)__table._M_monthname + 12)
1349.208 -              return __format;
1349.209 -            __t->tm_mon = (int)(__pr - (string*)__table._M_monthname);
1349.210 -            break;
1349.211 -        }
1349.212 -
1349.213 -        case 'B': {
1349.214 -          const string* __pr =
1349.215 -            __match(__first, __last,
1349.216 -		    (string*)__table._M_monthname + 12, (string*)__table._M_monthname + 24);
1349.217 -            if (__pr == (string*)__table._M_monthname + 24)
1349.218 -              return __format;
1349.219 -            __t->tm_mon = (int)(__pr - (string*)__table._M_monthname - 12);
1349.220 -            break;
1349.221 -        }
1349.222 -
1349.223 -        case 'd': {
1349.224 -          bool __pr =
1349.225 -            __get_decimal_integer(__first, __last, __t->tm_mday);
1349.226 -          if (!__pr || __t->tm_mday < 1 || __t->tm_mday > 31) {
1349.227 -	    __err |= ios_base::failbit;
1349.228 -            return __format;
1349.229 -	  }
1349.230 -          break;
1349.231 -        }
1349.232 -        
1349.233 -        case 'H': case 'I': {
1349.234 -          bool __pr =
1349.235 -            __get_decimal_integer(__first, __last, __t->tm_hour);
1349.236 -            if (!__pr)
1349.237 -              return __format;
1349.238 -            break;
1349.239 -        }
1349.240 -
1349.241 -        case 'j': {
1349.242 -          bool __pr =
1349.243 -            __get_decimal_integer(__first, __last, __t->tm_yday);
1349.244 -          if (!__pr)
1349.245 -            return __format;
1349.246 -          break;
1349.247 -        }
1349.248 -
1349.249 -        case 'm': {
1349.250 -          bool __pr =
1349.251 -            __get_decimal_integer(__first, __last, __t->tm_mon);
1349.252 -	    --__t->tm_mon;
1349.253 -          if (!__pr || __t->tm_mon < 0 || __t->tm_mon > 11) {
1349.254 -	    __err |= ios_base::failbit;
1349.255 -            return __format;
1349.256 -	  }
1349.257 -          break;
1349.258 -        }
1349.259 -
1349.260 -        case 'M': {
1349.261 -          bool __pr =
1349.262 -            __get_decimal_integer(__first, __last, __t->tm_min);
1349.263 -          if (!__pr)
1349.264 -            return __format;
1349.265 -          break;
1349.266 -        }
1349.267 -
1349.268 -        case 'p': {
1349.269 -          const string* __pr =
1349.270 -            __match(__first, __last, (string*)__table._M_am_pm + 0, (string*)__table._M_am_pm + 2);
1349.271 -          if (__pr == (string*)__table._M_am_pm + 2)
1349.272 -            return __format;
1349.273 -          if (__pr == (string*)__table._M_am_pm + 1)
1349.274 -            __t->tm_hour += 12;
1349.275 -          break;
1349.276 -        }
1349.277 -
1349.278 -        case 'S': {
1349.279 -          bool __pr =
1349.280 -            __get_decimal_integer(__first, __last, __t->tm_sec);
1349.281 -          if (!__pr)
1349.282 -            return __format;
1349.283 -          break;
1349.284 -        }
1349.285 -
1349.286 -	case 'y': {
1349.287 -	  bool __pr =
1349.288 -	    __get_decimal_integer(__first, __last, __t->tm_year);
1349.289 -	  if (!__pr)
1349.290 -	    return __format;
1349.291 -	  break;
1349.292 -        }
1349.293 -
1349.294 -        case 'Y': {
1349.295 -	  bool __pr =
1349.296 -            __get_decimal_integer(__first, __last, __t->tm_year);
1349.297 -          __t->tm_year -= 1900;
1349.298 -          if (!__pr)
1349.299 -            return __format;
1349.300 -          break;
1349.301 -        }
1349.302 -
1349.303 -        default:
1349.304 -          break;
1349.305 -      }
1349.306 -
1349.307 -    }
1349.308 -    else {
1349.309 -      if (*__first != *__format) 
1349.310 -	  	break;
1349.311 -	 __first++;
1349.312 -    }
1349.313 -    
1349.314 -    ++__format;
1349.315 -  }
1349.316 -
1349.317 -  return __format;
1349.318 -}
1349.319 -
1349.320 -template <class _InIt>
1349.321 -bool _STLP_CALL
1349.322 -__get_short_or_long_dayname(_InIt& __first, _InIt& __last,
1349.323 -                            const _Time_Info& __table, tm* __t) {
1349.324 -  const string* __pr =
1349.325 -    __match(__first, __last, __table._M_dayname + 0, __table._M_dayname + 14);
1349.326 -  __t->tm_wday = (int)(__pr - __table._M_dayname) % 7;
1349.327 -  return __pr != __table._M_dayname + 14;
1349.328 -}
1349.329 -
1349.330 -template <class _InIt>
1349.331 -bool _STLP_CALL
1349.332 -__get_short_or_long_monthname(_InIt& __first, _InIt& __last,
1349.333 -                              const _Time_Info& __table, tm* __t) {
1349.334 -  const string* __pr =
1349.335 -    __match(__first, __last, (string*)__table._M_monthname + 0, (string*)__table._M_monthname + 24);
1349.336 -  __t->tm_mon = (int)(__pr - __table._M_monthname) % 12;
1349.337 -  return __pr != __table._M_monthname + 24;
1349.338 -}
1349.339 -
1349.340 -# ifndef _STLP_NO_WCHAR_T
1349.341 -template <class _OuIt>
1349.342 -_OuIt _STLP_CALL
1349.343 -__put_time(char * __first, char * __last, _OuIt __stl_out,
1349.344 -           const ios_base& __s, wchar_t) {
1349.345 -    //const ctype<wchar_t>& __ct = *(ctype<wchar_t>*)__s._M_ctype_facet();
1349.346 -    const ctype<wchar_t>& __ct = use_facet< ctype<wchar_t> >(__s.getloc());
1349.347 -    wchar_t __wbuf[64];
1349.348 -    __ct.widen(__first, __last, __wbuf);
1349.349 -    ptrdiff_t __len = __last - __first;
1349.350 -    wchar_t * __eend = __wbuf + __len;
1349.351 -    return copy((wchar_t*)__wbuf, __eend, __stl_out);
1349.352 -}
1349.353 -# endif
1349.354 -
1349.355 -#ifdef	__SYMBIAN32__
1349.356 -template <class _CharT, class _OuIt>
1349.357 -_OuIt _STLP_CALL
1349.358 -__put_time(char * __first, char * __last, _OuIt __stl_out,
1349.359 -           const ios_base& __s, _CharT) {
1349.360 -    //const ctype<wchar_t>& __ct = *(ctype<wchar_t>*)__s._M_ctype_facet();
1349.361 -    const ctype<_CharT>& __ct = use_facet< ctype<_CharT> >(__s.getloc());
1349.362 -    _CharT __wbuf[64];
1349.363 -    __ct.widen(__first, __last, __wbuf);
1349.364 -    ptrdiff_t __len = __last - __first;
1349.365 -    _CharT * __eend = __wbuf + __len;
1349.366 -    return copy((_CharT*)__wbuf, __eend, __stl_out);
1349.367 -}
1349.368 -
1349.369 -#endif
1349.370 -template <class _Ch, class _InIt>
1349.371 -_InIt
1349.372 -time_get<_Ch, _InIt>::do_get_date(_InIt __s, _InIt  __end,
1349.373 -				  ios_base& /* __str */, ios_base::iostate&  __err,
1349.374 -				  tm* __t) const 
1349.375 -{
1349.376 -  typedef string::const_iterator string_iterator;
1349.377 -
1349.378 -  string_iterator __format
1349.379 -    = _M_timeinfo._M_date_format.begin();
1349.380 -  string_iterator __format_end
1349.381 -    = _M_timeinfo._M_date_format.end();
1349.382 -  
1349.383 -  string_iterator __result
1349.384 -    = __get_formatted_time(__s, __end, __format, __format_end,
1349.385 -                           /* _Ch() ,*/  _M_timeinfo, __err, __t);
1349.386 -  if (__result == __format_end)
1349.387 -    __err = ios_base::goodbit;
1349.388 -  else {
1349.389 -    __err = ios_base::failbit;
1349.390 -    if (__s == __end)
1349.391 -      __err |= ios_base::eofbit;
1349.392 -  }
1349.393 -  return __s;
1349.394 -}
1349.395 -
1349.396 -template <class _Ch, class _InIt>
1349.397 -_InIt
1349.398 -time_get<_Ch, _InIt>::do_get_time(_InIt __s, _InIt  __end,
1349.399 -				  ios_base& /* __str */, ios_base::iostate&  __err,
1349.400 -				  tm* __t) const 
1349.401 -{
1349.402 -  typedef string::const_iterator string_iterator;
1349.403 -  string_iterator __format
1349.404 -    = _M_timeinfo._M_time_format.begin();
1349.405 -  string_iterator __format_end
1349.406 -    = _M_timeinfo._M_time_format.end();
1349.407 -  
1349.408 -  string_iterator __result
1349.409 -    = __get_formatted_time(__s, __end, __format, __format_end,
1349.410 -			   /* _Ch() , */ _M_timeinfo, __err, __t);
1349.411 -  __err = __result == __format_end ? ios_base::goodbit 
1349.412 -    : ios_base::failbit;
1349.413 -  if (__s == __end)
1349.414 -    __err |= ios_base::eofbit;
1349.415 -  return __s;
1349.416 -}
1349.417 -
1349.418 -template <class _Ch, class _InIt>
1349.419 -_InIt
1349.420 -time_get<_Ch, _InIt>::do_get_year(_InIt __s, _InIt  __end,
1349.421 -				  ios_base&, 
1349.422 -				  ios_base::iostate&  __err,
1349.423 -				  tm* __t) const
1349.424 -{
1349.425 -  
1349.426 -  if (__s == __end) {
1349.427 -    __err = ios_base::failbit | ios_base::eofbit;
1349.428 -    return __s;
1349.429 -  }
1349.430 -  
1349.431 -  bool __pr =  __get_decimal_integer(__s, __end, __t->tm_year);
1349.432 -  __t->tm_year -= 1900;
1349.433 -  __err = __pr ? ios_base::goodbit : ios_base::failbit;
1349.434 -  if (__s == __end)
1349.435 -    __err |= ios_base::eofbit;
1349.436 -  
1349.437 -  return __s;
1349.438 -}
1349.439 -
1349.440 -template <class _Ch, class _InIt>
1349.441 -_InIt
1349.442 -time_get<_Ch, _InIt>::do_get_weekday(_InIt __s, _InIt  __end,
1349.443 -				     ios_base& /* __str */, 
1349.444 -				     ios_base::iostate&  __err,
1349.445 -				     tm* __t) const 
1349.446 -{
1349.447 -    bool __result =
1349.448 -      __get_short_or_long_dayname(__s, __end, _M_timeinfo, __t);
1349.449 -    if (__result)
1349.450 -      __err = ios_base::goodbit;
1349.451 -    else {
1349.452 -      __err = ios_base::failbit;
1349.453 -      if (__s == __end)
1349.454 -        __err |= ios_base::eofbit;
1349.455 -    }
1349.456 -    return __s;
1349.457 -}
1349.458 -
1349.459 -template <class _Ch, class _InIt>
1349.460 -_InIt
1349.461 -time_get<_Ch, _InIt>::do_get_monthname(_InIt __s, _InIt  __end,
1349.462 -				       ios_base& /* __str */, 
1349.463 -				       ios_base::iostate&  __err,
1349.464 -				       tm* __t) const 
1349.465 -{
1349.466 -  bool __result =
1349.467 -    __get_short_or_long_monthname(__s, __end, _M_timeinfo, __t);
1349.468 -  if (__result)
1349.469 -    __err = ios_base::goodbit;
1349.470 -  else {
1349.471 -    __err = ios_base::failbit;
1349.472 -    if (__s == __end)
1349.473 -      __err |= ios_base::eofbit;
1349.474 -  }
1349.475 -  return __s;
1349.476 -}
1349.477 -
1349.478 -template<class _Ch, class _OutputIter>
1349.479 -_OutputIter
1349.480 -time_put<_Ch,_OutputIter>::put(_OutputIter __s, ios_base& __f, _Ch __fill,
1349.481 -			       const tm* __tmb,
1349.482 -			       const _Ch* __pat, const _Ch* __pat_end) const 
1349.483 -{
1349.484 -    locale __loc = __f.getloc();
1349.485 -    const ctype<_Ch>& _Ct = use_facet<ctype<_Ch> >(__loc); 
1349.486 - // const ctype<_Ch>& _Ct = *(ctype<_Ch>*)__f._M_ctype_facet(); 
1349.487 -  while (__pat != __pat_end) {
1349.488 -    char __c = _Ct.narrow(*__pat, 0);
1349.489 -    if (__c == '%') {
1349.490 -      char __mod = 0;
1349.491 -      ++__pat;
1349.492 -      __c = _Ct.narrow(*__pat++, 0);
1349.493 -      if(__c == '#') { // MS extension
1349.494 -        __mod = __c;
1349.495 -        __c = _Ct.narrow(*__pat++, 0);
1349.496 -      }
1349.497 -      __s = do_put(__s, __f, __fill, __tmb, __c, __mod);
1349.498 -    }
1349.499 -    else
1349.500 -      *__s++ = *__pat++;
1349.501 -  }
1349.502 -  return __s;
1349.503 -}
1349.504 -
1349.505 -template<class _Ch, class _OutputIter>
1349.506 -_OutputIter
1349.507 -time_put<_Ch,_OutputIter>::do_put(_OutputIter __s, ios_base& __f, _Ch     /* __fill */ ,
1349.508 -				  const tm* __tmb,
1349.509 -				  char __format, char __modifier ) const 
1349.510 -{
1349.511 -  char __buf[64];
1349.512 -  char * __iend = __write_formatted_time(__buf, __format, __modifier,
1349.513 -					 _M_timeinfo, __tmb);
1349.514 -  //  locale __loc = __f.getloc();
1349.515 -  return __put_time(__buf, __iend, __s, __f, _Ch());
1349.516 -}
1349.517 -
1349.518 -_STLP_END_NAMESPACE
1349.519 -
1349.520 -# endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1349.521 -#endif /* _STLP_TIME_FACETS_C */
1349.522 -
1349.523 -// Local Variables:
1349.524 -// mode:C++
1349.525 -// End:
  1350.1 --- a/epoc32/include/stdapis/stlport/stl/_time_facets.h	Tue Mar 16 16:12:26 2010 +0000
  1350.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1350.3 @@ -1,345 +0,0 @@
  1350.4 -/*
  1350.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1350.6 - *
  1350.7 - * Copyright (c) 1999
  1350.8 - * Silicon Graphics Computer Systems, Inc.
  1350.9 - *
 1350.10 - * Copyright (c) 1999 
 1350.11 - * Boris Fomitchev
 1350.12 - *
 1350.13 - * This material is provided "as is", with absolutely no warranty expressed
 1350.14 - * or implied. Any use is at your own risk.
 1350.15 - *
 1350.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1350.17 - * without fee, provided the above notices are retained on all copies.
 1350.18 - * Permission to modify the code and to distribute modified code is granted,
 1350.19 - * provided the above notices are retained, and a notice that the code was
 1350.20 - * modified is included with the above copyright notice.
 1350.21 - *
 1350.22 - */ 
 1350.23 -// WARNING: This is an internal header file, included by other C++
 1350.24 -// standard library headers.  You should not attempt to use this header
 1350.25 -// file directly.
 1350.26 -
 1350.27 -
 1350.28 -#ifndef _STLP_INTERNAL_TIME_FACETS_H
 1350.29 -#define _STLP_INTERNAL_TIME_FACETS_H
 1350.30 -
 1350.31 -#ifndef _STLP_CTIME
 1350.32 -# include <ctime>                // Needed (for struct tm) by time facets
 1350.33 -#endif
 1350.34 -
 1350.35 -#include <stl/c_locale.h>
 1350.36 -#include <stl/_ios_base.h>
 1350.37 -
 1350.38 -_STLP_BEGIN_NAMESPACE
 1350.39 -
 1350.40 -// Template functions used by time_get
 1350.41 -
 1350.42 -// Matching input against a list of names
 1350.43 -
 1350.44 -// Alphabetic input of the names of months and the names
 1350.45 -// of weekdays requires matching input against a list of names.
 1350.46 -// We use a simple generic algorithm to accomplish this.  This
 1350.47 -// algorithm is not very efficient, especially for longer lists
 1350.48 -// of names, but it probably does not matter for the initial
 1350.49 -// implementation and it may never matter, since we do not expect
 1350.50 -// this kind of input to be used very often.  The algorithm
 1350.51 -// could be improved fairly simply by creating a new list of
 1350.52 -// names still in the running at each iteration.  A more sophisticated
 1350.53 -// approach would be to build a trie to do the matching.
 1350.54 -//
 1350.55 -// We compare each character of the input to the corresponding
 1350.56 -// character of each name on the list that has not been eliminated,
 1350.57 -// either because every character in the name has already been
 1350.58 -// matched, or because some character has not been matched.  We
 1350.59 -// continue only as long as there are some names that have not been
 1350.60 -// eliminated.
 1350.61 -
 1350.62 -// We do not really need a random access iterator (a forward iterator
 1350.63 -// would do), but the extra generality makes the notation clumsier,
 1350.64 -// and we don't really need it.
 1350.65 -
 1350.66 -// We can recognize a failed match by the fact that the second
 1350.67 -// component of the return value will be __name_end.
 1350.68 -
 1350.69 -#define _MAXNAMES        64
 1350.70 -#define _MAX_NAME_LENGTH 64
 1350.71 -
 1350.72 -// Both time_get and time_put need a structure of type _Time_Info
 1350.73 -// to provide names and abbreviated names for months and days,
 1350.74 -// as well as the am/pm designator.  The month and weekday tables
 1350.75 -// have the all the abbreviated names before all the full names.
 1350.76 -// The _Time_Info tables are initialized using the non-template
 1350.77 -// function _Init_timeinfo, which has two overloadings:  one
 1350.78 -// with a single reference parameter for the table to be initialized,
 1350.79 -// and one with a second _Locale_time * parameter.  The first form
 1350.80 -// is called by the default constructor and the second by a special
 1350.81 -// constructor invoked from the _byname subclass constructor to
 1350.82 -// construct the base class.
 1350.83 -
 1350.84 -class _STLP_CLASS_DECLSPEC _Time_Info {
 1350.85 -public:
 1350.86 -  string _M_dayname[14];
 1350.87 -  string _M_monthname[24];
 1350.88 -  string _M_am_pm[2];
 1350.89 -  string _M_time_format;
 1350.90 -  string _M_date_format;
 1350.91 -  string _M_date_time_format;
 1350.92 -  string _M_long_date_format;
 1350.93 -  string _M_long_date_time_format;
 1350.94 -};
 1350.95 -
 1350.96 -_STLP_DECLSPEC void _STLP_CALL _Init_timeinfo(_Time_Info&);
 1350.97 -_STLP_DECLSPEC void _STLP_CALL _Init_timeinfo(_Time_Info&, _Locale_time*);
 1350.98 -
 1350.99 -class _STLP_CLASS_DECLSPEC time_base {
1350.100 -public:
1350.101 -  enum dateorder {no_order, dmy, mdy, ymd, ydm};
1350.102 -};
1350.103 -
1350.104 -
1350.105 -template <class _Ch, __DFL_TMPL_PARAM( _InIt , istreambuf_iterator<_Ch>) >
1350.106 -class time_get : public locale::facet, public time_base 
1350.107 -{
1350.108 -  friend class _Locale;
1350.109 -
1350.110 -public:
1350.111 -  typedef _Ch   char_type;
1350.112 -  typedef _InIt iter_type;
1350.113 -
1350.114 -  explicit  time_get(size_t __refs = 0)   : _BaseFacet(__refs) {
1350.115 -      _Init_timeinfo(_M_timeinfo);
1350.116 -  }
1350.117 -  dateorder date_order() const { return do_date_order(); }
1350.118 -  iter_type get_time(iter_type __s, iter_type  __end, ios_base&  __str,
1350.119 -                     ios_base::iostate&  __err, tm* __t) const
1350.120 -    { return do_get_time(__s,  __end,  __str,  __err, __t); }
1350.121 -  iter_type get_date(iter_type __s, iter_type  __end, ios_base&  __str,
1350.122 -                     ios_base::iostate&  __err, tm* __t) const
1350.123 -    { return do_get_date(__s,  __end,  __str,  __err, __t); }
1350.124 -  iter_type get_weekday(iter_type __s, iter_type  __end, ios_base&  __str,
1350.125 -                        ios_base::iostate&  __err, tm* __t) const
1350.126 -    { return do_get_weekday(__s,  __end,  __str,  __err, __t); }
1350.127 -  iter_type get_monthname(iter_type __s, iter_type  __end, ios_base&  __str,
1350.128 -                          ios_base::iostate&  __err, tm* __t) const
1350.129 -    { return do_get_monthname(__s,  __end,  __str,  __err, __t); }
1350.130 -  iter_type get_year(iter_type __s, iter_type  __end, ios_base&  __str,
1350.131 -                     ios_base::iostate&  __err, tm* __t) const
1350.132 -    { return do_get_year(__s,  __end,  __str,  __err, __t); }
1350.133 -
1350.134 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1350.135 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1350.136 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >*);
1350.137 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1350.138 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >*);
1350.139 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char**);
1350.140 -#else
1350.141 - 	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1350.142 -#endif
1350.143 -
1350.144 -protected:
1350.145 -  _Time_Info _M_timeinfo;
1350.146 -
1350.147 -  time_get(_Locale_time *, size_t __refs) : _BaseFacet(__refs) {}
1350.148 -
1350.149 -  ~time_get() {}
1350.150 -
1350.151 -  virtual dateorder do_date_order() const {return no_order;}
1350.152 -    
1350.153 -  virtual iter_type do_get_time(iter_type __s, iter_type  __end,
1350.154 -                                ios_base&, ios_base::iostate&  __err,
1350.155 -                                tm* __t) const;
1350.156 -    
1350.157 -  virtual iter_type do_get_date(iter_type __s, iter_type  __end,
1350.158 -                                ios_base&, ios_base::iostate& __err,
1350.159 -                                tm* __t) const;
1350.160 -
1350.161 -  virtual iter_type do_get_weekday(iter_type __s, iter_type  __end,
1350.162 -                                   ios_base&,
1350.163 -                                   ios_base::iostate& __err,
1350.164 -                                   tm* __t) const;
1350.165 -  virtual iter_type do_get_monthname(iter_type __s, iter_type  __end,
1350.166 -                                     ios_base&,
1350.167 -                                     ios_base::iostate& __err,
1350.168 -                                     tm* __t) const;
1350.169 -  
1350.170 -  virtual iter_type do_get_year(iter_type __s, iter_type  __end,
1350.171 -                                ios_base&, ios_base::iostate& __err,
1350.172 -                                tm* __t) const;
1350.173 -};
1350.174 -
1350.175 -time_base::dateorder _STLP_CALL
1350.176 -_STLP_DECLSPEC __get_date_order(_Locale_time*);
1350.177 -_Locale_time* _STLP_CALL __acquire_time(const char* __name);
1350.178 -void          _STLP_CALL __release_time(_Locale_time* __time);
1350.179 -
1350.180 -template <class _Ch, __DFL_TMPL_PARAM( _InIt , istreambuf_iterator<_Ch>) >
1350.181 -class time_get_byname : public time_get<_Ch, _InIt> 
1350.182 -{
1350.183 -public:
1350.184 -  typedef  time_base::dateorder dateorder;
1350.185 -  typedef _InIt                 iter_type;
1350.186 -
1350.187 -  explicit   time_get_byname(const char* __name, size_t __refs = 0)
1350.188 -    : time_get<_Ch, _InIt>((_Locale_time*) 0, __refs),
1350.189 -      _M_time(__acquire_time(__name))
1350.190 -    { _Init_timeinfo(this->_M_timeinfo, this->_M_time); }
1350.191 -
1350.192 -protected:
1350.193 -  ~time_get_byname() { __release_time(_M_time); }
1350.194 -  dateorder do_date_order() const { return __get_date_order(_M_time); }
1350.195 -private:
1350.196 -  _Locale_time* _M_time;
1350.197 -};
1350.198 -
1350.199 -// time_put facet
1350.200 -
1350.201 -// For the formats 'x, 'X', and 'c', do_put calls the first form of
1350.202 -// put with the pattern obtained from _M_timeinfo._M_date_format or
1350.203 -// _M_timeinfo._M_time_format.
1350.204 -
1350.205 -// Helper function:  __  takes a single-character
1350.206 -// format.  As indicated by the foregoing remark, this will never be
1350.207 -// 'x', 'X', or 'c'.
1350.208 -
1350.209 -_STLP_DECLSPEC char * _STLP_CALL
1350.210 -__write_formatted_time(char * __buf, char __format, char __modifier,
1350.211 -                       const _Time_Info& __table, const tm* __t);
1350.212 -
1350.213 -template <class _OuIt>
1350.214 -inline _OuIt _STLP_CALL __put_time(char * __first, char * __last, _OuIt __out,
1350.215 -                                   const ios_base& /* __loc */, char) {
1350.216 -    return copy(__first, __last, __out);
1350.217 -}
1350.218 -
1350.219 -# ifndef _STLP_NO_WCHAR_T
1350.220 -template <class _OuIt>
1350.221 -_OuIt _STLP_CALL __put_time(char * __first, char * __last, _OuIt __out,
1350.222 -                            const ios_base& __s, wchar_t);
1350.223 -# endif
1350.224 -
1350.225 -template<class _Ch, __DFL_TMPL_PARAM( _OutputIter , ostreambuf_iterator<_Ch> ) >
1350.226 -class time_put : public locale::facet, public time_base
1350.227 -{
1350.228 -  friend class _Locale;
1350.229 -public:
1350.230 -  typedef _Ch      char_type;
1350.231 -  typedef _OutputIter iter_type;
1350.232 -
1350.233 -  explicit   time_put(size_t __refs = 0) : _BaseFacet(__refs) {
1350.234 -    _Init_timeinfo(_M_timeinfo);
1350.235 -  }
1350.236 -
1350.237 -  _OutputIter put(iter_type __s, ios_base& __f, _Ch __fill,
1350.238 -		  const tm* __tmb,
1350.239 -		  const _Ch* __pat, const _Ch* __pat_end) const;
1350.240 -  
1350.241 -  _OutputIter put(iter_type __s, ios_base& __f, _Ch  __fill,
1350.242 -		  const tm* __tmb, char __format, char __modifier = 0) const { 
1350.243 -    return do_put(__s, __f,  __fill, __tmb, __format, __modifier); 
1350.244 -  }
1350.245 -  
1350.246 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1350.247 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1350.248 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> >*);
1350.249 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(wchar_t**);
1350.250 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> >*);
1350.251 -    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1350.252 -#else
1350.253 -   	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1350.254 -#endif
1350.255 -  
1350.256 -protected:
1350.257 -  _Time_Info _M_timeinfo;
1350.258 -
1350.259 -  time_put(_Locale_time* /*__time*/, size_t __refs) : _BaseFacet(__refs) {
1350.260 -    //    _Init_timeinfo(_M_timeinfo, __time);
1350.261 -  }
1350.262 -
1350.263 -  ~time_put() {}
1350.264 -  virtual iter_type do_put(iter_type __s, ios_base& __f,
1350.265 -                           char_type  /* __fill */, const tm* __tmb,
1350.266 -                           char __format, char /* __modifier */) const;
1350.267 -};
1350.268 -
1350.269 -template <class _Ch, __DFL_TMPL_PARAM( _InIt , ostreambuf_iterator<_Ch> ) >
1350.270 -class time_put_byname : public time_put<_Ch, _InIt> 
1350.271 -{
1350.272 -  friend class _Locale;
1350.273 -public:
1350.274 -  typedef time_base::dateorder dateorder;
1350.275 -  typedef _InIt iter_type;
1350.276 -  typedef _Ch   char_type;
1350.277 -
1350.278 -  explicit    time_put_byname(const char * __name, size_t __refs = 0)
1350.279 -    : time_put<_Ch, _InIt>((_Locale_time*) 0, __refs),
1350.280 -    _M_time(__acquire_time(__name))
1350.281 -  { _Init_timeinfo(this->_M_timeinfo, this->_M_time); }
1350.282 -  
1350.283 -protected:
1350.284 -  ~time_put_byname() { __release_time(_M_time); }
1350.285 -
1350.286 -private:
1350.287 -  _Locale_time* _M_time;
1350.288 -};
1350.289 -
1350.290 -# ifdef _STLP_USE_TEMPLATE_EXPORT
1350.291 -_STLP_EXPORT_TEMPLATE_CLASS time_get<char, istreambuf_iterator<char, char_traits<char> > >;
1350.292 -_STLP_EXPORT_TEMPLATE_CLASS time_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1350.293 -// _STLP_EXPORT_TEMPLATE_CLASS time_get<char, const char*>;
1350.294 -// _STLP_EXPORT_TEMPLATE_CLASS time_put<char, char*>;
1350.295 -#  ifndef _STLP_NO_WCHAR_T
1350.296 -_STLP_EXPORT_TEMPLATE_CLASS time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1350.297 -_STLP_EXPORT_TEMPLATE_CLASS time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1350.298 -// _STLP_EXPORT_TEMPLATE_CLASS time_get<wchar_t, const wchar_t*>;
1350.299 -// _STLP_EXPORT_TEMPLATE_CLASS time_put<wchar_t, wchar_t*>;
1350.300 -#  endif /* INSTANTIATE_WIDE_STREAMS */
1350.301 -
1350.302 -# endif
1350.303 -
1350.304 -# if defined (__BORLANDC__) && defined (_RTLDLL)
1350.305 -inline void _Stl_loc_init_time_facets() {
1350.306 -  
1350.307 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1350.308 -  time_get<char, istreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 16;
1350.309 -  time_get<char, const char*>::GetFacetLocaleId()._M_index         = 17;
1350.310 -  time_put<char, ostreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 18;
1350.311 -  time_put<char, char*>::GetFacetLocaleId()._M_index               = 19;
1350.312 -#else
1350.313 -  time_get<char, istreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 16;
1350.314 -  time_get<char, const char*>::id._M_index         = 17;
1350.315 -  time_put<char, ostreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 18;
1350.316 -  time_put<char, char*>::id._M_index               = 19;
1350.317 -#endif
1350.318 -
1350.319 -# ifndef _STLP_NO_WCHAR_T
1350.320 -#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1350.321 -  time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::GetFacetLocaleId()._M_index                   = 35;
1350.322 -  time_get<wchar_t, const wchar_t*>::GetFacetLocaleId()._M_index   = 36;
1350.323 -  time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::GetFacetLocaleId()._M_index                   = 37;
1350.324 -  time_put<wchar_t, wchar_t*>::GetFacetLocaleId()._M_index         = 38;
1350.325 -#else
1350.326 -  time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                   = 35;
1350.327 -  time_get<wchar_t, const wchar_t*>::id._M_index   = 36;
1350.328 -  time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                   = 37;
1350.329 -  time_put<wchar_t, wchar_t*>::id._M_index         = 38;
1350.330 -#endif //__SYMBIAN32__
1350.331 -# endif //!_STLP_NO_WCHAR_T
1350.332 -  
1350.333 -}
1350.334 -# endif
1350.335 -
1350.336 -_STLP_END_NAMESPACE
1350.337 -
1350.338 -#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1350.339 -#  include <stl/_time_facets.c>
1350.340 -# endif
1350.341 -
1350.342 -#endif /* _STLP_INTERNAL_TIME_FACETS_H */
1350.343 -
1350.344 -// Local Variables:
1350.345 -// mode:C++
1350.346 -// End:
1350.347 -
1350.348 -
  1351.1 --- a/epoc32/include/stdapis/stlport/stl/_tree.c	Tue Mar 16 16:12:26 2010 +0000
  1351.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1351.3 @@ -1,715 +0,0 @@
  1351.4 -/*
  1351.5 - *
  1351.6 - *
  1351.7 - * Copyright (c) 1994
  1351.8 - * Hewlett-Packard Company
  1351.9 - *
 1351.10 - * Copyright (c) 1996,1997
 1351.11 - * Silicon Graphics Computer Systems, Inc.
 1351.12 - *
 1351.13 - * Copyright (c) 1997
 1351.14 - * Moscow Center for SPARC Technology
 1351.15 - *
 1351.16 - * Copyright (c) 1999 
 1351.17 - * Boris Fomitchev
 1351.18 - *
 1351.19 - * This material is provided "as is", with absolutely no warranty expressed
 1351.20 - * or implied. Any use is at your own risk.
 1351.21 - *
 1351.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1351.23 - * without fee, provided the above notices are retained on all copies.
 1351.24 - * Permission to modify the code and to distribute modified code is granted,
 1351.25 - * provided the above notices are retained, and a notice that the code was
 1351.26 - * modified is included with the above copyright notice.
 1351.27 - *
 1351.28 - * Modified CRP 7/10/00 for improved conformance / efficiency on insert_unique /
 1351.29 - * insert_equal with valid hint -- efficiency is improved all around, and it is
 1351.30 - * should now be standard conforming for complexity on insert point immediately
 1351.31 - * after hint (amortized constant time).
 1351.32 - *
 1351.33 - */
 1351.34 -#ifndef _STLP_TREE_C
 1351.35 -#define _STLP_TREE_C
 1351.36 -
 1351.37 -#ifndef _STLP_INTERNAL_TREE_H
 1351.38 -# include <stl/_tree.h>
 1351.39 -#endif
 1351.40 -
 1351.41 -// fbp: these defines are for outline methods definitions.
 1351.42 -// needed for definitions to be portable. Should not be used in method bodies.
 1351.43 -# if defined  ( _STLP_NESTED_TYPE_PARAM_BUG )
 1351.44 -#  define __iterator__        _Rb_tree_iterator<_Value, _Nonconst_traits<_Value> > 
 1351.45 -#  define __size_type__       size_t
 1351.46 -#  define iterator __iterator__
 1351.47 -# else
 1351.48 -#  define __iterator__  _STLP_TYPENAME_ON_RETURN_TYPE _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>::iterator
 1351.49 -#  define __size_type__  _STLP_TYPENAME_ON_RETURN_TYPE _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>::size_type
 1351.50 -# endif
 1351.51 -
 1351.52 -#if defined ( _STLP_DEBUG)
 1351.53 -#  define _Rb_tree __WORKAROUND_DBG_RENAME(Rb_tree)
 1351.54 -#endif
 1351.55 -
 1351.56 -_STLP_BEGIN_NAMESPACE
 1351.57 -
 1351.58 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1351.59 -
 1351.60 -template <class _Dummy> void _STLP_CALL
 1351.61 -_Rb_global<_Dummy>::_Rotate_left(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
 1351.62 -{
 1351.63 -  _Rb_tree_node_base* __y = __x->_M_right;
 1351.64 -  __x->_M_right = __y->_M_left;
 1351.65 -  if (__y->_M_left !=0)
 1351.66 -    __y->_M_left->_M_parent = __x;
 1351.67 -  __y->_M_parent = __x->_M_parent;
 1351.68 -
 1351.69 -  if (__x == __root)
 1351.70 -    __root = __y;
 1351.71 -  else if (__x == __x->_M_parent->_M_left)
 1351.72 -    __x->_M_parent->_M_left = __y;
 1351.73 -  else
 1351.74 -    __x->_M_parent->_M_right = __y;
 1351.75 -  __y->_M_left = __x;
 1351.76 -  __x->_M_parent = __y;
 1351.77 -}
 1351.78 -
 1351.79 -template <class _Dummy> void _STLP_CALL 
 1351.80 -_Rb_global<_Dummy>::_Rotate_right(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
 1351.81 -{
 1351.82 -  _Rb_tree_node_base* __y = __x->_M_left;
 1351.83 -  __x->_M_left = __y->_M_right;
 1351.84 -  if (__y->_M_right != 0)
 1351.85 -    __y->_M_right->_M_parent = __x;
 1351.86 -  __y->_M_parent = __x->_M_parent;
 1351.87 -
 1351.88 -  if (__x == __root)
 1351.89 -    __root = __y;
 1351.90 -  else if (__x == __x->_M_parent->_M_right)
 1351.91 -    __x->_M_parent->_M_right = __y;
 1351.92 -  else
 1351.93 -    __x->_M_parent->_M_left = __y;
 1351.94 -  __y->_M_right = __x;
 1351.95 -  __x->_M_parent = __y;
 1351.96 -}
 1351.97 -
 1351.98 -template <class _Dummy> void _STLP_CALL
 1351.99 -_Rb_global<_Dummy>::_Rebalance(_Rb_tree_node_base* __x, 
1351.100 -			       _Rb_tree_node_base*& __root)
1351.101 -{
1351.102 -  __x->_M_color = _S_rb_tree_red;
1351.103 -  while (__x != __root && __x->_M_parent->_M_color == _S_rb_tree_red) {
1351.104 -    if (__x->_M_parent == __x->_M_parent->_M_parent->_M_left) {
1351.105 -      _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_right;
1351.106 -      if (__y && __y->_M_color == _S_rb_tree_red) {
1351.107 -        __x->_M_parent->_M_color = _S_rb_tree_black;
1351.108 -        __y->_M_color = _S_rb_tree_black;
1351.109 -        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1351.110 -        __x = __x->_M_parent->_M_parent;
1351.111 -      }
1351.112 -      else {
1351.113 -        if (__x == __x->_M_parent->_M_right) {
1351.114 -          __x = __x->_M_parent;
1351.115 -          _Rotate_left(__x, __root);
1351.116 -        }
1351.117 -        __x->_M_parent->_M_color = _S_rb_tree_black;
1351.118 -        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1351.119 -        _Rotate_right(__x->_M_parent->_M_parent, __root);
1351.120 -      }
1351.121 -    }
1351.122 -    else {
1351.123 -      _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_left;
1351.124 -      if (__y && __y->_M_color == _S_rb_tree_red) {
1351.125 -        __x->_M_parent->_M_color = _S_rb_tree_black;
1351.126 -        __y->_M_color = _S_rb_tree_black;
1351.127 -        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1351.128 -        __x = __x->_M_parent->_M_parent;
1351.129 -      }
1351.130 -      else {
1351.131 -        if (__x == __x->_M_parent->_M_left) {
1351.132 -          __x = __x->_M_parent;
1351.133 -          _Rotate_right(__x, __root);
1351.134 -        }
1351.135 -        __x->_M_parent->_M_color = _S_rb_tree_black;
1351.136 -        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1351.137 -        _Rotate_left(__x->_M_parent->_M_parent, __root);
1351.138 -      }
1351.139 -    }
1351.140 -  }
1351.141 -  __root->_M_color = _S_rb_tree_black;
1351.142 -}
1351.143 -
1351.144 -template <class _Dummy> _Rb_tree_node_base* _STLP_CALL
1351.145 -_Rb_global<_Dummy>::_Rebalance_for_erase(_Rb_tree_node_base* __z,
1351.146 -					 _Rb_tree_node_base*& __root,
1351.147 -					 _Rb_tree_node_base*& __leftmost,
1351.148 -					 _Rb_tree_node_base*& __rightmost)
1351.149 -{
1351.150 -  _Rb_tree_node_base* __y = __z;
1351.151 -  _Rb_tree_node_base* __x = 0;
1351.152 -  _Rb_tree_node_base* __x_parent = 0;
1351.153 -  if (__y->_M_left == 0)     // __z has at most one non-null child. y == z.
1351.154 -    __x = __y->_M_right;     // __x might be null.
1351.155 -  else
1351.156 -    if (__y->_M_right == 0)  // __z has exactly one non-null child. y == z.
1351.157 -      __x = __y->_M_left;    // __x is not null.
1351.158 -    else {                   // __z has two non-null children.  Set __y to
1351.159 -      __y = __y->_M_right;   //   __z's successor.  __x might be null.
1351.160 -      while (__y->_M_left != 0)
1351.161 -        __y = __y->_M_left;
1351.162 -      __x = __y->_M_right;
1351.163 -    }
1351.164 -  if (__y != __z) {          // relink y in place of z.  y is z's successor
1351.165 -    __z->_M_left->_M_parent = __y; 
1351.166 -    __y->_M_left = __z->_M_left;
1351.167 -    if (__y != __z->_M_right) {
1351.168 -      __x_parent = __y->_M_parent;
1351.169 -      if (__x) __x->_M_parent = __y->_M_parent;
1351.170 -      __y->_M_parent->_M_left = __x;      // __y must be a child of _M_left
1351.171 -      __y->_M_right = __z->_M_right;
1351.172 -      __z->_M_right->_M_parent = __y;
1351.173 -    }
1351.174 -    else
1351.175 -      __x_parent = __y;  
1351.176 -    if (__root == __z)
1351.177 -      __root = __y;
1351.178 -    else if (__z->_M_parent->_M_left == __z)
1351.179 -      __z->_M_parent->_M_left = __y;
1351.180 -    else 
1351.181 -      __z->_M_parent->_M_right = __y;
1351.182 -    __y->_M_parent = __z->_M_parent;
1351.183 -    _STLP_STD::swap(__y->_M_color, __z->_M_color);
1351.184 -    __y = __z;
1351.185 -    // __y now points to node to be actually deleted
1351.186 -  }
1351.187 -  else {                        // __y == __z
1351.188 -    __x_parent = __y->_M_parent;
1351.189 -    if (__x) __x->_M_parent = __y->_M_parent;   
1351.190 -    if (__root == __z)
1351.191 -      __root = __x;
1351.192 -    else 
1351.193 -      if (__z->_M_parent->_M_left == __z)
1351.194 -        __z->_M_parent->_M_left = __x;
1351.195 -      else
1351.196 -        __z->_M_parent->_M_right = __x;
1351.197 -    if (__leftmost == __z) 
1351.198 -      if (__z->_M_right == 0)        // __z->_M_left must be null also
1351.199 -        __leftmost = __z->_M_parent;
1351.200 -    // makes __leftmost == _M_header if __z == __root
1351.201 -      else
1351.202 -        __leftmost = _Rb_tree_node_base::_S_minimum(__x);
1351.203 -    if (__rightmost == __z)  
1351.204 -      if (__z->_M_left == 0)         // __z->_M_right must be null also
1351.205 -        __rightmost = __z->_M_parent;  
1351.206 -    // makes __rightmost == _M_header if __z == __root
1351.207 -      else                      // __x == __z->_M_left
1351.208 -        __rightmost = _Rb_tree_node_base::_S_maximum(__x);
1351.209 -  }
1351.210 -  if (__y->_M_color != _S_rb_tree_red) { 
1351.211 -    while (__x != __root && (__x == 0 || __x->_M_color == _S_rb_tree_black))
1351.212 -      if (__x == __x_parent->_M_left) {
1351.213 -        _Rb_tree_node_base* __w = __x_parent->_M_right;
1351.214 -        if (__w->_M_color == _S_rb_tree_red) {
1351.215 -          __w->_M_color = _S_rb_tree_black;
1351.216 -          __x_parent->_M_color = _S_rb_tree_red;
1351.217 -          _Rotate_left(__x_parent, __root);
1351.218 -          __w = __x_parent->_M_right;
1351.219 -        }
1351.220 -        if ((__w->_M_left == 0 || 
1351.221 -             __w->_M_left->_M_color == _S_rb_tree_black) && (__w->_M_right == 0 || 
1351.222 -             __w->_M_right->_M_color == _S_rb_tree_black)) {
1351.223 -          __w->_M_color = _S_rb_tree_red;
1351.224 -          __x = __x_parent;
1351.225 -          __x_parent = __x_parent->_M_parent;
1351.226 -        } else {
1351.227 -          if (__w->_M_right == 0 || 
1351.228 -              __w->_M_right->_M_color == _S_rb_tree_black) {
1351.229 -            if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black;
1351.230 -            __w->_M_color = _S_rb_tree_red;
1351.231 -            _Rotate_right(__w, __root);
1351.232 -            __w = __x_parent->_M_right;
1351.233 -          }
1351.234 -          __w->_M_color = __x_parent->_M_color;
1351.235 -          __x_parent->_M_color = _S_rb_tree_black;
1351.236 -          if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black;
1351.237 -          _Rotate_left(__x_parent, __root);
1351.238 -          break;
1351.239 -        }
1351.240 -      } else {                  // same as above, with _M_right <-> _M_left.
1351.241 -        _Rb_tree_node_base* __w = __x_parent->_M_left;
1351.242 -        if (__w->_M_color == _S_rb_tree_red) {
1351.243 -          __w->_M_color = _S_rb_tree_black;
1351.244 -          __x_parent->_M_color = _S_rb_tree_red;
1351.245 -          _Rotate_right(__x_parent, __root);
1351.246 -          __w = __x_parent->_M_left;
1351.247 -        }
1351.248 -        if ((__w->_M_right == 0 || 
1351.249 -             __w->_M_right->_M_color == _S_rb_tree_black) && (__w->_M_left == 0 || 
1351.250 -             __w->_M_left->_M_color == _S_rb_tree_black)) {
1351.251 -          __w->_M_color = _S_rb_tree_red;
1351.252 -          __x = __x_parent;
1351.253 -          __x_parent = __x_parent->_M_parent;
1351.254 -        } else {
1351.255 -          if (__w->_M_left == 0 || 
1351.256 -              __w->_M_left->_M_color == _S_rb_tree_black) {
1351.257 -            if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black;
1351.258 -            __w->_M_color = _S_rb_tree_red;
1351.259 -            _Rotate_left(__w, __root);
1351.260 -            __w = __x_parent->_M_left;
1351.261 -          }
1351.262 -          __w->_M_color = __x_parent->_M_color;
1351.263 -          __x_parent->_M_color = _S_rb_tree_black;
1351.264 -          if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black;
1351.265 -          _Rotate_right(__x_parent, __root);
1351.266 -          break;
1351.267 -        }
1351.268 -      }
1351.269 -    if (__x) __x->_M_color = _S_rb_tree_black;
1351.270 -  }
1351.271 -  return __y;
1351.272 -}
1351.273 -
1351.274 -template <class _Dummy> _Rb_tree_node_base* _STLP_CALL
1351.275 -_Rb_global<_Dummy>::_M_decrement(_Rb_tree_node_base* _M_node)
1351.276 -{
1351.277 -  if (_M_node->_M_color == _S_rb_tree_red && _M_node->_M_parent->_M_parent == _M_node)
1351.278 -    _M_node = _M_node->_M_right;
1351.279 -  else if (_M_node->_M_left != 0) {
1351.280 -    _Base_ptr __y = _M_node->_M_left;
1351.281 -    while (__y->_M_right != 0)
1351.282 -      __y = __y->_M_right;
1351.283 -    _M_node = __y;
1351.284 -  }
1351.285 -  else {
1351.286 -    _Base_ptr __y = _M_node->_M_parent;
1351.287 -    while (_M_node == __y->_M_left) {
1351.288 -      _M_node = __y;
1351.289 -      __y = __y->_M_parent;
1351.290 -    }
1351.291 -    _M_node = __y;
1351.292 -  }
1351.293 -  return _M_node;
1351.294 -}
1351.295 -
1351.296 -template <class _Dummy> _Rb_tree_node_base* _STLP_CALL
1351.297 -_Rb_global<_Dummy>::_M_increment(_Rb_tree_node_base* _M_node)
1351.298 -{
1351.299 -  if (_M_node->_M_right != 0) {
1351.300 -    _M_node = _M_node->_M_right;
1351.301 -    while (_M_node->_M_left != 0)
1351.302 -      _M_node = _M_node->_M_left;
1351.303 -  }
1351.304 -  else {
1351.305 -    _Base_ptr __y = _M_node->_M_parent;
1351.306 -    while (_M_node == __y->_M_right) {
1351.307 -      _M_node = __y;
1351.308 -      __y = __y->_M_parent;
1351.309 -    }
1351.310 -    if (_M_node->_M_right != __y)
1351.311 -      _M_node = __y;
1351.312 -  }
1351.313 -  return _M_node;
1351.314 -}
1351.315 -
1351.316 -#endif /* defined (__BUILDING_STLPORT) || ! defined (_STLP_OWN_IOSTREAMS) */
1351.317 -
1351.318 -
1351.319 -template <class _Key, class _Value, class _KeyOfValue, 
1351.320 -          class _Compare, class _Alloc> _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::operator=(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x)
1351.321 -{
1351.322 -  if (this != &__x) {
1351.323 -                                // Note that _Key may be a constant type.
1351.324 -    clear();
1351.325 -    _M_node_count = 0;
1351.326 -    _M_key_compare = __x._M_key_compare;        
1351.327 -    if (__x._M_root() == 0) {
1351.328 -      _M_root() = 0;
1351.329 -      _M_leftmost() = this->_M_header._M_data;
1351.330 -      _M_rightmost() = this->_M_header._M_data;
1351.331 -    }
1351.332 -    else {
1351.333 -      _M_root() = _M_copy(__x._M_root(), this->_M_header._M_data);
1351.334 -      _M_leftmost() = _S_minimum(_M_root());
1351.335 -      _M_rightmost() = _S_maximum(_M_root());
1351.336 -      _M_node_count = __x._M_node_count;
1351.337 -    }
1351.338 -  }
1351.339 -  return *this;
1351.340 -}
1351.341 -
1351.342 -// CRP 7/10/00 inserted argument __w_, which is another hint (meant to
1351.343 -// act like __x_ and ignore a portion of the if conditions -- specify
1351.344 -// __w_ != 0 to bypass comparison as false or __x_ != 0 to bypass
1351.345 -// comparison as true)
1351.346 -template <class _Key, class _Value, class _KeyOfValue, 
1351.347 -          class _Compare, class _Alloc> __iterator__ 
1351.348 -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::_M_insert(_Rb_tree_node_base* __x_, _Rb_tree_node_base* __y_, const _Value& __v,
1351.349 -  _Rb_tree_node_base* __w_)
1351.350 -{
1351.351 -  _Link_type __w = (_Link_type) __w_;
1351.352 -  _Link_type __x = (_Link_type) __x_;
1351.353 -  _Link_type __y = (_Link_type) __y_;
1351.354 -  _Link_type __z;
1351.355 -
1351.356 -  if ( __y == this->_M_header._M_data ||
1351.357 -       ( __w == 0 && // If w != 0, the remainder fails to false
1351.358 -         ( __x != 0 ||     // If x != 0, the remainder succeeds to true
1351.359 -           _M_key_compare( _KeyOfValue()(__v), _S_key(__y) ) )
1351.360 -	 )
1351.361 -       ) {
1351.362 -    
1351.363 -    __z = _M_create_node(__v);
1351.364 -    _S_left(__y) = __z;               // also makes _M_leftmost() = __z 
1351.365 -                                      //    when __y == _M_header
1351.366 -    if (__y == this->_M_header._M_data) {
1351.367 -      _M_root() = __z;
1351.368 -      _M_rightmost() = __z;
1351.369 -    }
1351.370 -    else if (__y == _M_leftmost())
1351.371 -      _M_leftmost() = __z;   // maintain _M_leftmost() pointing to min node
1351.372 -  }
1351.373 -  else {
1351.374 -    __z = _M_create_node(__v);
1351.375 -    _S_right(__y) = __z;
1351.376 -    if (__y == _M_rightmost())
1351.377 -      _M_rightmost() = __z;  // maintain _M_rightmost() pointing to max node
1351.378 -  }
1351.379 -  _S_parent(__z) = __y;
1351.380 -  _S_left(__z) = 0;
1351.381 -  _S_right(__z) = 0;
1351.382 -  _Rb_global_inst::_Rebalance(__z, this->_M_header._M_data->_M_parent);
1351.383 -  ++_M_node_count;
1351.384 -  return iterator(__z);
1351.385 -}
1351.386 -
1351.387 -template <class _Key, class _Value, class _KeyOfValue, 
1351.388 -          class _Compare, class _Alloc> __iterator__
1351.389 -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::insert_equal(const _Value& __v)
1351.390 -{
1351.391 -  _Link_type __y = this->_M_header._M_data;
1351.392 -  _Link_type __x = _M_root();
1351.393 -  while (__x != 0) {
1351.394 -    __y = __x;
1351.395 -    __x = _M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ? 
1351.396 -            _S_left(__x) : _S_right(__x);
1351.397 -  }
1351.398 -  return _M_insert(__x, __y, __v);
1351.399 -}
1351.400 -
1351.401 -
1351.402 -template <class _Key, class _Value, class _KeyOfValue, 
1351.403 -          class _Compare, class _Alloc> pair< _Rb_tree_iterator<_Value, _Nonconst_traits<_Value> >, bool> _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::insert_unique(const _Value& __v)
1351.404 -{
1351.405 -  _Link_type __y = this->_M_header._M_data;
1351.406 -  _Link_type __x = _M_root();
1351.407 -  bool __comp = true;
1351.408 -  while (__x != 0) {
1351.409 -    __y = __x;
1351.410 -    __comp = _M_key_compare(_KeyOfValue()(__v), _S_key(__x));
1351.411 -    __x = __comp ? _S_left(__x) : _S_right(__x);
1351.412 -  }
1351.413 -  iterator __j = iterator(__y);   
1351.414 -  if (__comp)
1351.415 -    if (__j == begin())     
1351.416 -      return pair<iterator,bool>(_M_insert(/* __x*/ __y, __y, __v), true);
1351.417 -    else
1351.418 -      --__j;
1351.419 -  if (_M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
1351.420 -    return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
1351.421 -  return pair<iterator,bool>(__j, false);
1351.422 -}
1351.423 -
1351.424 -// Modifications CRP 7/10/00 as noted to improve conformance and
1351.425 -// efficiency.
1351.426 -template <class _Key, class _Value, class _KeyOfValue, 
1351.427 -          class _Compare, class _Alloc> __iterator__ 
1351.428 -_Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> ::insert_unique(iterator __position, const _Value& __v)
1351.429 -{
1351.430 -  if (__position._M_node == this->_M_header._M_data->_M_left) { // begin()
1351.431 -
1351.432 -    // if the container is empty, fall back on insert_unique.
1351.433 -    if (size() <= 0)
1351.434 -      return insert_unique(__v).first;
1351.435 -
1351.436 -    if ( _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node)))
1351.437 -      return _M_insert(__position._M_node, __position._M_node, __v);
1351.438 -    // first argument just needs to be non-null 
1351.439 -    else
1351.440 -      {
1351.441 -	bool __comp_pos_v = _M_key_compare( _S_key(__position._M_node), _KeyOfValue()(__v) );
1351.442 -	
1351.443 -	if (__comp_pos_v == false)  // compare > and compare < both false so compare equal
1351.444 -	  return __position;
1351.445 -	//Below __comp_pos_v == true
1351.446 -
1351.447 -	// Standard-conformance - does the insertion point fall immediately AFTER
1351.448 -	// the hint?
1351.449 -	iterator __after = __position;
1351.450 -	++__after;
1351.451 -
1351.452 -	// Check for only one member -- in that case, __position points to itself,
1351.453 -	// and attempting to increment will cause an infinite loop.
1351.454 -	if (__after._M_node == this->_M_header._M_data)
1351.455 -	  // Check guarantees exactly one member, so comparison was already
1351.456 -	  // performed and we know the result; skip repeating it in _M_insert
1351.457 -	  // by specifying a non-zero fourth argument.
1351.458 -	  return _M_insert(0, __position._M_node, __v, __position._M_node);
1351.459 -		
1351.460 -	
1351.461 -	// All other cases:
1351.462 -	
1351.463 -	// Optimization to catch insert-equivalent -- save comparison results,
1351.464 -	// and we get this for free.
1351.465 -	if(_M_key_compare( _KeyOfValue()(__v), _S_key(__after._M_node) )) {
1351.466 -	  if (_S_right(__position._M_node) == 0)
1351.467 -	    return _M_insert(0, __position._M_node, __v, __position._M_node);
1351.468 -	  else
1351.469 -	    return _M_insert(__after._M_node, __after._M_node, __v);
1351.470 -	} else {
1351.471 -	    return insert_unique(__v).first;
1351.472 -	}
1351.473 -      }
1351.474 -
1351.475 -  } else if (__position._M_node == this->_M_header._M_data) { // end()
1351.476 -    if (_M_key_compare(_S_key(_M_rightmost()), _KeyOfValue()(__v)))
1351.477 -      // pass along to _M_insert that it can skip comparing
1351.478 -      // v, Key ; since compare Key, v was true, compare v, Key must be false.
1351.479 -      return _M_insert(0, _M_rightmost(), __v, __position._M_node); // Last argument only needs to be non-null
1351.480 -    else
1351.481 -      return insert_unique(__v).first;
1351.482 -  } else {
1351.483 -    iterator __before = __position;
1351.484 -    --__before;
1351.485 -    
1351.486 -    bool __comp_v_pos = _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node));
1351.487 -
1351.488 -    if (__comp_v_pos
1351.489 -      && _M_key_compare( _S_key(__before._M_node), _KeyOfValue()(__v) )) {
1351.490 -
1351.491 -      if (_S_right(__before._M_node) == 0)
1351.492 -        return _M_insert(0, __before._M_node, __v, __before._M_node); // Last argument only needs to be non-null
1351.493 -      else
1351.494 -        return _M_insert(__position._M_node, __position._M_node, __v);
1351.495 -    // first argument just needs to be non-null 
1351.496 -    } else
1351.497 -      {
1351.498 -	// Does the insertion point fall immediately AFTER the hint?
1351.499 -	iterator __after = __position;
1351.500 -	++__after;
1351.501 -	
1351.502 -	// Optimization to catch equivalent cases and avoid unnecessary comparisons
1351.503 -	bool __comp_pos_v = !__comp_v_pos;  // Stored this result earlier
1351.504 -	// If the earlier comparison was true, this comparison doesn't need to be
1351.505 -	// performed because it must be false.  However, if the earlier comparison
1351.506 -	// was false, we need to perform this one because in the equal case, both will
1351.507 -	// be false.
1351.508 -	if (!__comp_v_pos) __comp_pos_v = _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v));
1351.509 -	
1351.510 -	if ( (!__comp_v_pos) // comp_v_pos true implies comp_v_pos false
1351.511 -	     && __comp_pos_v
1351.512 -	     && (__after._M_node == this->_M_header._M_data ||
1351.513 -	        _M_key_compare( _KeyOfValue()(__v), _S_key(__after._M_node) ))) {
1351.514 -	  
1351.515 -	  if (_S_right(__position._M_node) == 0)
1351.516 -	    return _M_insert(0, __position._M_node, __v, __position._M_node);
1351.517 -	  else
1351.518 -	    return _M_insert(__after._M_node, __after._M_node, __v);
1351.519 -	} else {
1351.520 -	  // Test for equivalent case
1351.521 -	  if (__comp_v_pos == __comp_pos_v)
1351.522 -	    return __position;
1351.523 -	  else
1351.524 -	    return insert_unique(__v).first;
1351.525 -	}
1351.526 -      }
1351.527 -  }
1351.528 -}
1351.529 -
1351.530 -
1351.531 -template <class _Key, class _Value, class _KeyOfValue, 
1351.532 -          class _Compare, class _Alloc> __iterator__ 
1351.533 -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::insert_equal(iterator __position, const _Value& __v)
1351.534 -{
1351.535 -  if (__position._M_node == this->_M_header._M_data->_M_left) { // begin()
1351.536 -
1351.537 -    // Check for zero members
1351.538 -    if (size() <= 0)
1351.539 -        return insert_equal(__v);
1351.540 -
1351.541 -    if (!_M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v)))
1351.542 -      return _M_insert(__position._M_node, __position._M_node, __v);
1351.543 -    else    {
1351.544 -      // Check for only one member
1351.545 -      if (__position._M_node->_M_left == __position._M_node)
1351.546 -        // Unlike insert_unique, can't avoid doing a comparison here.
1351.547 -        return _M_insert(0, __position._M_node, __v);
1351.548 -                
1351.549 -      // All other cases:
1351.550 -      // Standard-conformance - does the insertion point fall immediately AFTER
1351.551 -      // the hint?
1351.552 -      iterator __after = __position;
1351.553 -      ++__after;
1351.554 -      
1351.555 -      // Already know that compare(pos, v) must be true!
1351.556 -      // Therefore, we want to know if compare(after, v) is false.
1351.557 -      // (i.e., we now pos < v, now we want to know if v <= after)
1351.558 -      // If not, invalid hint.
1351.559 -      if ( __after._M_node==this->_M_header._M_data ||
1351.560 -	   !_M_key_compare( _S_key(__after._M_node), _KeyOfValue()(__v) ) ) {
1351.561 -        if (_S_right(__position._M_node) == 0)
1351.562 -          return _M_insert(0, __position._M_node, __v, __position._M_node);
1351.563 -        else
1351.564 -          return _M_insert(__after._M_node, __after._M_node, __v);
1351.565 -      } else // Invalid hint
1351.566 -        return insert_equal(__v);
1351.567 -    }
1351.568 -  } else if (__position._M_node == this->_M_header._M_data) {// end()
1351.569 -    if (!_M_key_compare(_KeyOfValue()(__v), _S_key(_M_rightmost())))
1351.570 -      return _M_insert(0, _M_rightmost(), __v, __position._M_node); // Last argument only needs to be non-null
1351.571 -    else
1351.572 -      return insert_equal(__v);
1351.573 -  } else {
1351.574 -    iterator __before = __position;
1351.575 -    --__before;
1351.576 -    // store the result of the comparison between pos and v so
1351.577 -    // that we don't have to do it again later.  Note that this reverses the shortcut
1351.578 -    // on the if, possibly harming efficiency in comparisons; I think the harm will
1351.579 -    // be negligible, and to do what I want to do (save the result of a comparison so
1351.580 -    // that it can be re-used) there is no alternative.  Test here is for before <= v <= pos.
1351.581 -    bool __comp_pos_v = _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v));
1351.582 -    if (!__comp_pos_v
1351.583 -        && !_M_key_compare(_KeyOfValue()(__v), _S_key(__before._M_node))) {
1351.584 -      if (_S_right(__before._M_node) == 0)
1351.585 -        return _M_insert(0, __before._M_node, __v, __before._M_node); // Last argument only needs to be non-null
1351.586 -      else
1351.587 -        return _M_insert(__position._M_node, __position._M_node, __v);
1351.588 -    } else  {
1351.589 -      // Does the insertion point fall immediately AFTER the hint?
1351.590 -      // Test for pos < v <= after
1351.591 -      iterator __after = __position;
1351.592 -      ++__after;
1351.593 -      
1351.594 -      if (__comp_pos_v
1351.595 -	  && ( __after._M_node==this->_M_header._M_data 
1351.596 -	       || !_M_key_compare( _S_key(__after._M_node), _KeyOfValue()(__v) ) ) ) {
1351.597 -        if (_S_right(__position._M_node) == 0)
1351.598 -          return _M_insert(0, __position._M_node, __v, __position._M_node);
1351.599 -        else
1351.600 -          return _M_insert(__after._M_node, __after._M_node, __v);
1351.601 -      } else // Invalid hint
1351.602 -        return insert_equal(__v);
1351.603 -    }
1351.604 -  }
1351.605 -}
1351.606 -
1351.607 -template <class _Key, class _Value, class _KeyOfValue, class _Compare, class _Alloc> _Rb_tree_node<_Value>* 
1351.608 -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::_M_copy(_Rb_tree_node<_Value>* __x, _Rb_tree_node<_Value>* __p)
1351.609 -{
1351.610 -                        // structural copy.  __x and __p must be non-null.
1351.611 -  _STLP_LEAVE_VOLATILE _Link_type __top = _M_clone_node(__x);
1351.612 -  __top->_M_parent = __p;
1351.613 -  
1351.614 -  _STLP_TRY {
1351.615 -    if (__x->_M_right)
1351.616 -      __top->_M_right = _M_copy(_S_right(__x), __top);
1351.617 -    __p = __top;
1351.618 -    __x = _S_left(__x);
1351.619 -
1351.620 -    while (__x != 0) {
1351.621 -      _Link_type __y = _M_clone_node(__x);
1351.622 -      __p->_M_left = __y;
1351.623 -      __y->_M_parent = __p;
1351.624 -      if (__x->_M_right)
1351.625 -        __y->_M_right = _M_copy(_S_right(__x), __y);
1351.626 -      __p = __y;
1351.627 -      __x = _S_left(__x);
1351.628 -    }
1351.629 -  }
1351.630 -  _STLP_UNWIND(_M_erase(__top));
1351.631 -
1351.632 -  return __top;
1351.633 -}
1351.634 -
1351.635 -// this has to stay out-of-line : it's recursive
1351.636 -template <class _Key, class _Value, class _KeyOfValue, 
1351.637 -          class _Compare, class _Alloc> void 
1351.638 -_Rb_tree<_Key,_Value,_KeyOfValue,
1351.639 -  _Compare,_Alloc>::_M_erase(_Rb_tree_node<_Value>* __x)
1351.640 -{
1351.641 -                                // erase without rebalancing
1351.642 -  while (__x != 0) {
1351.643 -    _M_erase(_S_right(__x));
1351.644 -    _Link_type __y = _S_left(__x);
1351.645 -    _STLP_STD::_Destroy(&__x->_M_value_field);
1351.646 -    this->_M_header.deallocate(__x,1);
1351.647 -    __x = __y;
1351.648 -  }
1351.649 -}
1351.650 -
1351.651 -template <class _Key, class _Value, class _KeyOfValue, 
1351.652 -          class _Compare, class _Alloc> __size_type__ 
1351.653 -_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::count(const _Key& __k) const
1351.654 -{
1351.655 -  pair<const_iterator, const_iterator> __p = equal_range(__k);
1351.656 -  size_type __n = distance(__p.first, __p.second);
1351.657 -  return __n;
1351.658 -}
1351.659 -
1351.660 -inline int 
1351.661 -__black_count(_Rb_tree_node_base* __node, _Rb_tree_node_base* __root)
1351.662 -{
1351.663 -  if (__node == 0)
1351.664 -    return 0;
1351.665 -  else {
1351.666 -    int __bc = __node->_M_color == _S_rb_tree_black ? 1 : 0;
1351.667 -    if (__node == __root)
1351.668 -      return __bc;
1351.669 -    else
1351.670 -      return __bc + __black_count(__node->_M_parent, __root);
1351.671 -  }
1351.672 -}
1351.673 -
1351.674 -template <class _Key, class _Value, class _KeyOfValue, 
1351.675 -          class _Compare, class _Alloc> bool _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
1351.676 -{
1351.677 -  if (_M_node_count == 0 || begin() == end())
1351.678 -    return _M_node_count == 0 && begin() == end() && this->_M_header._M_data->_M_left == this->_M_header._M_data
1351.679 -      && this->_M_header._M_data->_M_right == this->_M_header._M_data;
1351.680 -  
1351.681 -  int __len = __black_count(_M_leftmost(), _M_root());
1351.682 -  for (const_iterator __it = begin(); __it != end(); ++__it) {
1351.683 -    _Link_type __x = (_Link_type) __it._M_node;
1351.684 -    _Link_type __L = _S_left(__x);
1351.685 -    _Link_type __R = _S_right(__x);
1351.686 -
1351.687 -    if (__x->_M_color == _S_rb_tree_red)
1351.688 -      if ((__L && __L->_M_color == _S_rb_tree_red) ||
1351.689 -          (__R && __R->_M_color == _S_rb_tree_red))
1351.690 -        return false;
1351.691 -
1351.692 -    if (__L && _M_key_compare(_S_key(__x), _S_key(__L)))
1351.693 -      return false;
1351.694 -    if (__R && _M_key_compare(_S_key(__R), _S_key(__x)))
1351.695 -      return false;
1351.696 -
1351.697 -    if (!__L && !__R && __black_count(__x, _M_root()) != __len)
1351.698 -      return false;
1351.699 -  }
1351.700 -
1351.701 -  if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
1351.702 -    return false;
1351.703 -  if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
1351.704 -    return false;
1351.705 -
1351.706 -  return true;
1351.707 -}
1351.708 -_STLP_END_NAMESPACE
1351.709 -
1351.710 -# undef __iterator__        
1351.711 -# undef iterator
1351.712 -# undef __size_type__  
1351.713 -
1351.714 -#endif /*  _STLP_TREE_C */
1351.715 -
1351.716 -// Local Variables:
1351.717 -// mode:C++
1351.718 -// End:
  1352.1 --- a/epoc32/include/stdapis/stlport/stl/_uninitialized.h	Tue Mar 16 16:12:26 2010 +0000
  1352.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1352.3 @@ -1,291 +0,0 @@
  1352.4 -/*
  1352.5 - *
  1352.6 - * Copyright (c) 1994
  1352.7 - * Hewlett-Packard Company
  1352.8 - *
  1352.9 - * Copyright (c) 1996,1997
 1352.10 - * Silicon Graphics Computer Systems, Inc.
 1352.11 - *
 1352.12 - * Copyright (c) 1997
 1352.13 - * Moscow Center for SPARC Technology
 1352.14 - *
 1352.15 - * Copyright (c) 1999 
 1352.16 - * Boris Fomitchev
 1352.17 - *
 1352.18 - * This material is provided "as is", with absolutely no warranty expressed
 1352.19 - * or implied. Any use is at your own risk.
 1352.20 - *
 1352.21 - * Permission to use or copy this software for any purpose is hereby granted 
 1352.22 - * without fee, provided the above notices are retained on all copies.
 1352.23 - * Permission to modify the code and to distribute modified code is granted,
 1352.24 - * provided the above notices are retained, and a notice that the code was
 1352.25 - * modified is included with the above copyright notice.
 1352.26 - *
 1352.27 - */
 1352.28 -
 1352.29 -/* NOTE: This is an internal header file, included by other STL headers.
 1352.30 - *   You should not attempt to use it directly.
 1352.31 - */
 1352.32 -
 1352.33 -#ifndef _STLP_INTERNAL_UNINITIALIZED_H
 1352.34 -#define _STLP_INTERNAL_UNINITIALIZED_H
 1352.35 -
 1352.36 -# ifndef _STLP_CSTRING
 1352.37 -#  include <cstring>
 1352.38 -# endif
 1352.39 -
 1352.40 -# ifndef _STLP_INTERNAL_ALGOBASE_H
 1352.41 -#  include <stl/_algobase.h>
 1352.42 -# endif
 1352.43 -
 1352.44 -# ifndef _STLP_INTERNAL_CONSTRUCT_H
 1352.45 -#  include <stl/_construct.h>
 1352.46 -# endif
 1352.47 -
 1352.48 -_STLP_BEGIN_NAMESPACE
 1352.49 -
 1352.50 -// uninitialized_copy
 1352.51 -
 1352.52 -// Valid if copy construction is equivalent to assignment, and if the
 1352.53 -//  destructor is trivial.
 1352.54 -template <class _InputIter, class _ForwardIter>
 1352.55 -inline _ForwardIter 
 1352.56 -__uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result,
 1352.57 -                     const __true_type&) {
 1352.58 -  return __copy_aux(__first, __last, __result, _BothPtrType< _InputIter, _ForwardIter> :: _Ret());
 1352.59 -}
 1352.60 -
 1352.61 -template <class _InputIter, class _ForwardIter>
 1352.62 -// _STLP_INLINE_LOOP
 1352.63 -_ForwardIter 
 1352.64 -__uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result,
 1352.65 -                     const __false_type&)
 1352.66 -{
 1352.67 -  _STLP_LEAVE_VOLATILE _ForwardIter __cur = __result;
 1352.68 -  _STLP_TRY  {
 1352.69 -    for ( ; __first != __last; ++__first, ++__cur)
 1352.70 -      _Construct(&*__cur, *__first);
 1352.71 -    //    return __cur;
 1352.72 -  }
 1352.73 -  _STLP_UNWIND (_STLP_STD::_Destroy(__result, __cur)); 
 1352.74 -  return __cur;
 1352.75 -}
 1352.76 -
 1352.77 -template <class _InputIter, class _ForwardIter>
 1352.78 -inline _ForwardIter
 1352.79 -uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result) {
 1352.80 -  return __uninitialized_copy(__first, __last, __result,  _IS_POD_ITER(__result, _ForwardIter));
 1352.81 -}
 1352.82 -
 1352.83 -inline char* 
 1352.84 -uninitialized_copy(const char* __first, const char* __last, char* __result) {
 1352.85 -  return  (char*)__copy_trivial (__first, __last, __result);
 1352.86 -}
 1352.87 -
 1352.88 -#  ifdef _STLP_HAS_WCHAR_T // dwa 8/15/97
 1352.89 -inline wchar_t* 
 1352.90 -uninitialized_copy(const wchar_t* __first, const wchar_t* __last, wchar_t* __result) {
 1352.91 -  return  (wchar_t*)__copy_trivial (__first, __last, __result);
 1352.92 -}
 1352.93 -#  endif /* _STLP_HAS_WCHAR_T */
 1352.94 -
 1352.95 -# ifndef _STLP_NO_EXTENSIONS
 1352.96 -// uninitialized_copy_n (not part of the C++ standard)
 1352.97 -
 1352.98 -template <class _InputIter, class _Size, class _ForwardIter>
 1352.99 -// _STLP_INLINE_LOOP 
1352.100 -pair<_InputIter, _ForwardIter>
1352.101 -__uninitialized_copy_n(_InputIter __first, _Size __count,
1352.102 -                       _ForwardIter __result,
1352.103 -                       const input_iterator_tag &)
1352.104 -{
1352.105 -  _STLP_LEAVE_VOLATILE  _ForwardIter __cur = __result;
1352.106 -  _STLP_TRY {
1352.107 -    for ( ; __count > 0 ; --__count, ++__first, ++__cur) 
1352.108 -      _Construct(&*__cur, *__first);
1352.109 -    //    return pair<_InputIter, _ForwardIter>(__first, __cur);
1352.110 -  }
1352.111 -  _STLP_UNWIND(_STLP_STD::_Destroy(__result, __cur));
1352.112 -
1352.113 -  return pair<_InputIter, _ForwardIter>(__first, __cur);
1352.114 -
1352.115 -}
1352.116 -
1352.117 -# if defined(_STLP_NONTEMPL_BASE_MATCH_BUG) 
1352.118 -template <class _InputIterator, class _Size, class _ForwardIterator>
1352.119 -inline pair<_InputIterator, _ForwardIterator>
1352.120 -__uninitialized_copy_n(_InputIterator __first, _Size __count,
1352.121 -                       _ForwardIterator __result,
1352.122 -                       const forward_iterator_tag &) {
1352.123 -  return __uninitialized_copy_n(__first, __count, __result, input_iterator_tag());
1352.124 -}
1352.125 -
1352.126 -template <class _InputIterator, class _Size, class _ForwardIterator>
1352.127 -inline pair<_InputIterator, _ForwardIterator>
1352.128 -__uninitialized_copy_n(_InputIterator __first, _Size __count,
1352.129 -                       _ForwardIterator __result,
1352.130 -                       const bidirectional_iterator_tag &) {
1352.131 -  return __uninitialized_copy_n(__first, __count, __result, input_iterator_tag());
1352.132 -}
1352.133 -# endif
1352.134 -
1352.135 -
1352.136 -template <class _RandomAccessIter, class _Size, class _ForwardIter>
1352.137 -inline pair<_RandomAccessIter, _ForwardIter>
1352.138 -__uninitialized_copy_n(_RandomAccessIter __first, _Size __count, _ForwardIter __result, const random_access_iterator_tag &) {
1352.139 -  _RandomAccessIter __last = __first + __count;
1352.140 -  return pair<_RandomAccessIter, _ForwardIter>( __last, __uninitialized_copy(__first, __last, __result, 
1352.141 -                                                                             _IS_POD_ITER(__result, _ForwardIter)));
1352.142 -}
1352.143 -
1352.144 -// this is used internally in <rope> , which is extension itself.
1352.145 -template <class _InputIter, class _Size, class _ForwardIter>
1352.146 -inline pair<_InputIter, _ForwardIter>
1352.147 -uninitialized_copy_n(_InputIter __first, _Size __count,
1352.148 -                     _ForwardIter __result) {
1352.149 -  return __uninitialized_copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1352.150 -}
1352.151 -# endif /* _STLP_NO_EXTENSIONS */
1352.152 -
1352.153 -// Valid if copy construction is equivalent to assignment, and if the
1352.154 -// destructor is trivial.
1352.155 -template <class _ForwardIter, class _Tp>
1352.156 -inline void
1352.157 -__uninitialized_fill(_ForwardIter __first, _ForwardIter __last, 
1352.158 -                     const _Tp& __x, const __true_type&) {
1352.159 -  _STLP_STD::fill(__first, __last, __x);
1352.160 -}
1352.161 -
1352.162 -template <class _ForwardIter, class _Tp>
1352.163 -// _STLP_INLINE_LOOP 
1352.164 -void
1352.165 -__uninitialized_fill(_ForwardIter __first, _ForwardIter __last, 
1352.166 -                     const _Tp& __x, const __false_type&)
1352.167 -{
1352.168 -  _STLP_LEAVE_VOLATILE  _ForwardIter __cur = __first;
1352.169 -  _STLP_TRY {
1352.170 -    for ( ; __cur != __last; ++__cur)
1352.171 -      _Construct(&*__cur, __x);
1352.172 -  }
1352.173 -  _STLP_UNWIND(_STLP_STD::_Destroy(__first, __cur));
1352.174 -}
1352.175 -
1352.176 -template <class _ForwardIter, class _Tp>
1352.177 -inline void uninitialized_fill(_ForwardIter __first, _ForwardIter __last,  const _Tp& __x) {
1352.178 -  __uninitialized_fill(__first, __last, __x, _IS_POD_ITER(__first, _ForwardIter));
1352.179 -}
1352.180 -
1352.181 -// Valid if copy construction is equivalent to assignment, and if the
1352.182 -//  destructor is trivial.
1352.183 -template <class _ForwardIter, class _Size, class _Tp>
1352.184 -inline _ForwardIter
1352.185 -__uninitialized_fill_n(_ForwardIter __first, _Size __n,
1352.186 -                       const _Tp& __x, const __true_type&) {
1352.187 -  return _STLP_STD::fill_n(__first, __n, __x);
1352.188 -}
1352.189 -
1352.190 -template <class _ForwardIter, class _Size, class _Tp>
1352.191 -//_STLP_INLINE_LOOP 
1352.192 -_ForwardIter
1352.193 -__uninitialized_fill_n(_ForwardIter __first, _Size __n,
1352.194 -                       const _Tp& __x, const __false_type&)
1352.195 -{
1352.196 -  _STLP_LEAVE_VOLATILE  _ForwardIter __cur = __first;
1352.197 -  _STLP_TRY {
1352.198 -    for ( ; __n > 0; --__n, ++__cur)
1352.199 -      _Construct(&*__cur, __x);
1352.200 -    //    return __cur;
1352.201 -  }
1352.202 -  _STLP_UNWIND(_STLP_STD::_Destroy(__first, __cur));
1352.203 -  // # ifdef _STLP_THROW_RETURN_BUG
1352.204 -  return __cur;
1352.205 -  //# endif
1352.206 -}
1352.207 -
1352.208 -template <class _ForwardIter, class _Size, class _Tp>
1352.209 -inline _ForwardIter 
1352.210 -uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x) {
1352.211 -  return __uninitialized_fill_n(__first, __n, __x, _IS_POD_ITER(__first, _ForwardIter));
1352.212 -}
1352.213 -
1352.214 -// Extensions: __uninitialized_copy_copy, __uninitialized_copy_fill, 
1352.215 -// __uninitialized_fill_copy.
1352.216 -
1352.217 -// __uninitialized_copy_copy
1352.218 -// Copies [first1, last1) into [result, result + (last1 - first1)), and
1352.219 -//  copies [first2, last2) into
1352.220 -//  [result, result + (last1 - first1) + (last2 - first2)).
1352.221 -
1352.222 -template <class _InputIter1, class _InputIter2, class _ForwardIter>
1352.223 -inline _ForwardIter
1352.224 -__uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1,
1352.225 -                          _InputIter2 __first2, _InputIter2 __last2,
1352.226 -                          _ForwardIter __result, __true_type)
1352.227 -{
1352.228 -  return __uninitialized_copy(__first2, __last2, 
1352.229 -                              __uninitialized_copy(__first1, __last1, __result, __true_type()), __true_type());
1352.230 -}
1352.231 -
1352.232 -template <class _InputIter1, class _InputIter2, class _ForwardIter>
1352.233 -// inline 
1352.234 -_ForwardIter
1352.235 -__uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1,
1352.236 -                          _InputIter2 __first2, _InputIter2 __last2,
1352.237 -                          _ForwardIter __result, __false_type)
1352.238 -{
1352.239 -   _STLP_LEAVE_VOLATILE _ForwardIter __mid = __uninitialized_copy(__first1, __last1, __result, _IS_POD_ITER(__result, _ForwardIter));
1352.240 -
1352.241 -  _STLP_TRY {
1352.242 -    return __uninitialized_copy(__first2, __last2, __mid , _IS_POD_ITER(__result, _ForwardIter));
1352.243 -  }
1352.244 -  _STLP_UNWIND (_STLP_STD::_Destroy(__result, __mid));
1352.245 -# ifdef _STLP_THROW_RETURN_BUG
1352.246 -  return __mid;
1352.247 -# endif
1352.248 -}
1352.249 -
1352.250 -// __uninitialized_fill_copy
1352.251 -// Fills [result, mid) with x, and copies [first, last) into
1352.252 -//  [mid, mid + (last - first)).
1352.253 -template <class _ForwardIter, class _Tp, class _InputIter>
1352.254 -// inline 
1352.255 -_ForwardIter 
1352.256 -__uninitialized_fill_copy(_ForwardIter __result, _ForwardIter __mid, const _Tp& __x,
1352.257 -                          _InputIter __first, _InputIter __last)
1352.258 -{
1352.259 -  typedef typename __type_traits<_Tp>::is_POD_type _I_POD;
1352.260 -  __uninitialized_fill(__result, __mid, __x, _I_POD());
1352.261 -  _STLP_TRY {
1352.262 -    return __uninitialized_copy(__first, __last, __mid, _I_POD());
1352.263 -  }
1352.264 -  _STLP_UNWIND (_STLP_STD::_Destroy(__result, __mid));
1352.265 -# ifdef _STLP_THROW_RETURN_BUG
1352.266 -  return __result;
1352.267 -# endif
1352.268 -}
1352.269 -
1352.270 -// __uninitialized_copy_fill
1352.271 -// Copies [first1, last1) into [first2, first2 + (last1 - first1)), and
1352.272 -//  fills [first2 + (last1 - first1), last2) with x.
1352.273 -template <class _InputIter, class _ForwardIter, class _Tp>
1352.274 -// inline 
1352.275 -void
1352.276 -__uninitialized_copy_fill(_InputIter __first1, _InputIter __last1,
1352.277 -                          _ForwardIter __first2, _ForwardIter __last2,
1352.278 -                          const _Tp& __x)
1352.279 -{
1352.280 -  typedef typename __type_traits<_Tp>::is_POD_type _I_POD;
1352.281 -  _ForwardIter __mid2 = __uninitialized_copy(__first1, __last1, __first2, _I_POD());
1352.282 -  _STLP_TRY {
1352.283 -    __uninitialized_fill(__mid2, __last2, __x, _I_POD());
1352.284 -  }
1352.285 -  _STLP_UNWIND(_STLP_STD::_Destroy(__first2, __mid2));
1352.286 -}
1352.287 -
1352.288 -_STLP_END_NAMESPACE
1352.289 -
1352.290 -#endif /* _STLP_INTERNAL_UNINITIALIZED_H */
1352.291 -
1352.292 -// Local Variables:
1352.293 -// mode:C++
1352.294 -// End:
  1353.1 --- a/epoc32/include/stdapis/stlport/stl/_valarray.c	Tue Mar 16 16:12:26 2010 +0000
  1353.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1353.3 @@ -1,203 +0,0 @@
  1353.4 -/*
  1353.5 - *
  1353.6 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1353.7 - *
  1353.8 - * Copyright (c) 1994
  1353.9 - * Hewlett-Packard Company
 1353.10 - *
 1353.11 - * Copyright (c) 1996,1997
 1353.12 - * Silicon Graphics Computer Systems, Inc.
 1353.13 - *
 1353.14 - * Copyright (c) 1997
 1353.15 - * Moscow Center for SPARC Technology
 1353.16 - *
 1353.17 - * Copyright (c) 1999 
 1353.18 - * Boris Fomitchev
 1353.19 - *
 1353.20 - * This material is provided "as is", with absolutely no warranty expressed
 1353.21 - * or implied. Any use is at your own risk.
 1353.22 - *
 1353.23 - * Permission to use or copy this software for any purpose is hereby granted 
 1353.24 - * without fee, provided the above notices are retained on all copies.
 1353.25 - * Permission to modify the code and to distribute modified code is granted,
 1353.26 - * provided the above notices are retained, and a notice that the code was
 1353.27 - * modified is included with the above copyright notice.
 1353.28 - *
 1353.29 - */
 1353.30 -#ifndef _STLP_VALARRAY_C
 1353.31 -#define _STLP_VALARRAY_C
 1353.32 -
 1353.33 -#ifndef _STLP_VALARRAY_H
 1353.34 -# include <stl/_valarray.h>
 1353.35 -#endif
 1353.36 -
 1353.37 -_STLP_BEGIN_NAMESPACE
 1353.38 -
 1353.39 -template <class _Tp>
 1353.40 -_Valarray_bool valarray<_Tp>:: operator!() const {
 1353.41 -  _Valarray_bool __tmp(this->size(), _Valarray_bool::_NoInit());
 1353.42 -  for (size_t __i = 0; __i < this->size(); ++__i)
 1353.43 -    __tmp[__i] = !(*this)[__i];
 1353.44 -  return __tmp;
 1353.45 -}
 1353.46 -
 1353.47 -// Behavior is undefined if __x and *this have different sizes
 1353.48 -template <class _Tp>
 1353.49 -valarray<_Tp>& valarray<_Tp>::operator=(const slice_array<_Tp>& __x)
 1353.50 -{
 1353.51 -  size_t __index = __x._M_slice.start();
 1353.52 -  for (size_t __i = 0;
 1353.53 -       __i < __x._M_slice.size();
 1353.54 -       ++__i, __index += __x._M_slice.stride())
 1353.55 -    (*this)[__i] = (*(__x._M_array))[__index];
 1353.56 -  return *this;
 1353.57 -}
 1353.58 -
 1353.59 -template <class _Tp>
 1353.60 -valarray<_Tp> valarray<_Tp>::operator[](slice __slice) const {
 1353.61 -  valarray<_Tp> __tmp(__slice.size(), _NoInit());
 1353.62 -  size_t __index = __slice.start();
 1353.63 -  for (size_t __i = 0;
 1353.64 -       __i < __slice.size();
 1353.65 -       ++__i, __index += __slice.stride())
 1353.66 -    __tmp[__i] = (*this)[__index];
 1353.67 -  return __tmp;
 1353.68 -}
 1353.69 -
 1353.70 -template <class _Size>
 1353.71 -bool _Gslice_Iter_tmpl<_Size>::_M_incr() {
 1353.72 -  size_t __dim = _M_indices.size() - 1;
 1353.73 -  ++_M_step;
 1353.74 -  while (true) {
 1353.75 -    _M_1d_idx += _M_gslice._M_strides[__dim];
 1353.76 -    if (++_M_indices[__dim] != _M_gslice._M_lengths[__dim])
 1353.77 -      return true;
 1353.78 -    else if (__dim != 0) {
 1353.79 -      _M_1d_idx -=
 1353.80 -	_M_gslice._M_strides[__dim] * _M_gslice._M_lengths[__dim];
 1353.81 -      _M_indices[__dim] = 0;
 1353.82 -      --__dim;
 1353.83 -    }
 1353.84 -    else
 1353.85 -      return false;
 1353.86 -  }
 1353.87 -}
 1353.88 -
 1353.89 -// Behavior is undefined if __x and *this have different sizes, or if
 1353.90 -// __x was constructed from a degenerate gslice.
 1353.91 -template <class _Tp>
 1353.92 -valarray<_Tp>& valarray<_Tp>::operator=(const gslice_array<_Tp>& __x)
 1353.93 -{
 1353.94 -  if (this->size() != 0) {
 1353.95 -    _Gslice_Iter __i(__x._M_gslice);
 1353.96 -    do
 1353.97 -      (*this)[__i._M_step] = __x._M_array[__i._M_1d_idx];
 1353.98 -    while(__i._M_incr());
 1353.99 -  }
1353.100 -  return *this;
1353.101 -}
1353.102 -
1353.103 -template <class _Tp>
1353.104 -valarray<_Tp> valarray<_Tp>::operator[](gslice __slice) const
1353.105 -{
1353.106 -  valarray<_Tp> __tmp(__slice._M_size(), _NoInit());
1353.107 -  if (__tmp.size() != 0) {
1353.108 -    _Gslice_Iter __i(__slice);
1353.109 -    do __tmp[__i._M_step] = (*this)[__i._M_1d_idx]; while(__i._M_incr());
1353.110 -  }
1353.111 -  return __tmp;
1353.112 -}
1353.113 -
1353.114 -template <class _Tp>
1353.115 -valarray<_Tp> valarray<_Tp>::operator[](const _Valarray_bool& __mask) const
1353.116 -{
1353.117 -  size_t _p_size = 0;
1353.118 -  {
1353.119 -    for (size_t __i = 0; __i < __mask.size(); ++__i)
1353.120 -      if (__mask[__i]) ++_p_size;
1353.121 -  }
1353.122 -
1353.123 -  valarray<_Tp> __tmp(_p_size, _NoInit());
1353.124 -  size_t __idx = 0;
1353.125 -  {
1353.126 -    for (size_t __i = 0; __i < __mask.size(); ++__i)
1353.127 -      if (__mask[__i]) __tmp[__idx++] = (*this)[__i];
1353.128 -  }
1353.129 -
1353.130 -  return __tmp;
1353.131 -}
1353.132 -
1353.133 -template <class _Tp>
1353.134 -valarray<_Tp>& valarray<_Tp>::operator=(const indirect_array<_Tp>& __x) {
1353.135 -  for (size_t __i = 0; __i < __x._M_addr.size(); ++__i)
1353.136 -    (*this)[__i] = __x._M_array[__x._M_addr[__i]];
1353.137 -  return *this;
1353.138 -}
1353.139 -
1353.140 -template <class _Tp>
1353.141 -valarray<_Tp>
1353.142 -valarray<_Tp>::operator[](const _Valarray_size_t& __addr) const
1353.143 -{
1353.144 -  valarray<_Tp> __tmp(__addr.size(), _NoInit());
1353.145 -  for (size_t __i = 0; __i < __addr.size(); ++__i)
1353.146 -    __tmp[__i] = (*this)[__addr[__i]];
1353.147 -  return __tmp;
1353.148 -}
1353.149 -
1353.150 -//----------------------------------------------------------------------
1353.151 -// Other valarray noninline member functions
1353.152 -
1353.153 -// Shift and cshift
1353.154 -
1353.155 -template <class _Tp>
1353.156 -valarray<_Tp> valarray<_Tp>::shift(int __n) const
1353.157 -{
1353.158 -  valarray<_Tp> __tmp(this->size());
1353.159 -
1353.160 -  if (__n >= 0) {
1353.161 -    if (__n < this->size())
1353.162 -      copy(this->_M_first + __n, this->_M_first + this->size(),
1353.163 -           __tmp._M_first);
1353.164 -  }
1353.165 -  else {
1353.166 -    if (-__n < this->size())
1353.167 -      copy(this->_M_first, this->_M_first + this->size() + __n,
1353.168 -           __tmp._M_first - __n);
1353.169 -  }
1353.170 -  return __tmp;
1353.171 -}
1353.172 -
1353.173 -template <class _Tp>
1353.174 -valarray<_Tp> valarray<_Tp>::cshift(int __m) const
1353.175 -{
1353.176 -  valarray<_Tp> __tmp(this->size());
1353.177 -  
1353.178 -#ifdef __SYMBIAN32__
1353.179 -	if (!this->size())
1353.180 -		return __tmp;
1353.181 -#endif	
1353.182 -	
1353.183 -  // Reduce __m to an equivalent number in the range [0, size()).  We
1353.184 -  // have to be careful with negative numbers, since the sign of a % b
1353.185 -  // is unspecified when a < 0.
1353.186 -  long __n = __m;
1353.187 -  if (this->size() < (numeric_limits<long>::max)())
1353.188 -    __n %= long(this->size());
1353.189 -  if (__n < 0)
1353.190 -    __n += this->size();
1353.191 -
1353.192 -  copy(this->_M_first,       this->_M_first + __n,
1353.193 -       __tmp._M_first + (this->size() - __n));
1353.194 -  copy(this->_M_first + __n, this->_M_first + this->size(),
1353.195 -       __tmp._M_first);
1353.196 -
1353.197 -  return __tmp;
1353.198 -}
1353.199 -
1353.200 -_STLP_END_NAMESPACE
1353.201 -
1353.202 -#endif /*  _STLP_VALARRAY_C */
1353.203 -
1353.204 -// Local Variables:
1353.205 -// mode:C++
1353.206 -// End:
  1354.1 --- a/epoc32/include/stdapis/stlport/stl/_valarray.h	Tue Mar 16 16:12:26 2010 +0000
  1354.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1354.3 @@ -1,1791 +0,0 @@
  1354.4 -/*
  1354.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1354.6 - * Copyright (c) 1999
  1354.7 - * Silicon Graphics Computer Systems, Inc.
  1354.8 - *
  1354.9 - * Copyright (c) 1999 
 1354.10 - * Boris Fomitchev
 1354.11 - *
 1354.12 - * This material is provided "as is", with absolutely no warranty expressed
 1354.13 - * or implied. Any use is at your own risk.
 1354.14 - *
 1354.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1354.16 - * without fee, provided the above notices are retained on all copies.
 1354.17 - * Permission to modify the code and to distribute modified code is granted,
 1354.18 - * provided the above notices are retained, and a notice that the code was
 1354.19 - * modified is included with the above copyright notice.
 1354.20 - *
 1354.21 - */ 
 1354.22 -
 1354.23 -#ifndef _STLP_VALARRAY_H
 1354.24 -#define _STLP_VALARRAY_H
 1354.25 -
 1354.26 -#ifndef _STLP_CMATH_H_HEADER
 1354.27 -#include <stl/_cmath.h>
 1354.28 -#endif
 1354.29 -#ifndef _STLP_INTERNAL_NEW_HEADER
 1354.30 -#include <stl/_new.h>
 1354.31 -#endif
 1354.32 -#ifndef _STLP_INTERNAL_ALGO_H
 1354.33 -#include <stl/_algo.h>
 1354.34 -#endif
 1354.35 -#ifndef _STLP_INTERNAL_NUMERIC_H
 1354.36 -#include <stl/_numeric.h>
 1354.37 -#endif
 1354.38 -#ifndef _STLP_LIMITS_H
 1354.39 -#include <limits>
 1354.40 -#endif
 1354.41 -
 1354.42 -//To resolve the unidentified identifier __THROW_BAD_ALLOC 
 1354.43 -#include <stl/_alloc.h>
 1354.44 -
 1354.45 -_STLP_BEGIN_NAMESPACE
 1354.46 -
 1354.47 -class slice;
 1354.48 -class gslice;
 1354.49 -
 1354.50 -template <class _Tp> class valarray;
 1354.51 -typedef valarray<bool>    _Valarray_bool;
 1354.52 -typedef valarray<size_t>  _Valarray_size_t;
 1354.53 -
 1354.54 -template <class _Tp> class slice_array;
 1354.55 -template <class _Tp> class gslice_array;
 1354.56 -template <class _Tp> class mask_array;
 1354.57 -template <class _Tp> class indirect_array;
 1354.58 -
 1354.59 -//----------------------------------------------------------------------
 1354.60 -// class valarray
 1354.61 -
 1354.62 -// Base class to handle memory allocation and deallocation.  We can't just
 1354.63 -// use vector<>, because vector<bool> would be unsuitable as an internal 
 1354.64 -// representation for valarray<bool>.
 1354.65 -
 1354.66 -template <class _Tp> 
 1354.67 -struct _Valarray_base
 1354.68 -{
 1354.69 -  _Tp*   _M_first;
 1354.70 -  size_t _M_size;
 1354.71 -
 1354.72 -  _Valarray_base() : _M_first(0), _M_size(0) {}
 1354.73 -  _Valarray_base(size_t __n) : _M_first(0), _M_size(0) { _M_allocate(__n); }
 1354.74 -  ~_Valarray_base() { _M_deallocate(); }
 1354.75 -
 1354.76 -  void _M_allocate(size_t __n) {
 1354.77 -    if (__n != 0) {
 1354.78 -#ifdef __SYMBIAN32__
 1354.79 -      _M_first = ::new _Tp[__n];
 1354.80 -#else
 1354.81 -      _M_first = __STATIC_CAST(_Tp*, (malloc(__n * sizeof(_Tp))));
 1354.82 -#endif
 1354.83 -      _M_size  = __n;
 1354.84 -      if (_M_first == 0) {
 1354.85 -        _M_size = 0;
 1354.86 -        __THROW_BAD_ALLOC;
 1354.87 -      }
 1354.88 -    }
 1354.89 -    else {
 1354.90 -      _M_first = 0;
 1354.91 -      _M_size = 0;
 1354.92 -    }
 1354.93 -  }
 1354.94 -
 1354.95 -  void _M_deallocate() {
 1354.96 -#ifdef __SYMBIAN32__
 1354.97 -    delete [] _M_first;
 1354.98 -#else
 1354.99 -    free(_M_first);
1354.100 -#endif
1354.101 -    _M_first = 0;
1354.102 -    _M_size = 0;
1354.103 -  }
1354.104 -};
1354.105 -
1354.106 -template <class _Tp> 
1354.107 -class valarray : private _Valarray_base<_Tp>
1354.108 -{
1354.109 -  friend class gslice;
1354.110 -
1354.111 -public:
1354.112 -  typedef _Tp value_type;
1354.113 -
1354.114 -  // Basic constructors
1354.115 -  valarray() : _Valarray_base<_Tp>() {}
1354.116 -  valarray(size_t __n) : _Valarray_base<_Tp>(__n) {}
1354.117 -  valarray(const value_type& __x, size_t __n) : _Valarray_base<_Tp>(__n)
1354.118 -    { uninitialized_fill_n(this->_M_first, this->_M_size, __x); }
1354.119 -  valarray(const value_type* __p, size_t __n) : _Valarray_base<_Tp>(__n)
1354.120 -    { uninitialized_copy(__p, __p + __n, this->_M_first); } 
1354.121 -  valarray(const valarray<_Tp>& __x) : _Valarray_base<_Tp>(__x._M_size) {
1354.122 -    uninitialized_copy(__x._M_first, __x._M_first + __x._M_size,
1354.123 -                       this->_M_first);
1354.124 -  }
1354.125 -
1354.126 -  // Constructors from auxiliary array types
1354.127 -  valarray(const slice_array<_Tp>&);
1354.128 -  valarray(const gslice_array<_Tp>&);
1354.129 -  valarray(const mask_array<_Tp>&);
1354.130 -  valarray(const indirect_array<_Tp>&);
1354.131 -
1354.132 -  // Destructor
1354.133 -  ~valarray() { _STLP_STD::_Destroy(this->_M_first, this->_M_first + this->_M_size); }
1354.134 -
1354.135 -  // Extension: constructor that doesn't initialize valarray elements to a
1354.136 -  // specific value.  This is faster for types such as int and double.
1354.137 -private:
1354.138 -  void _M_initialize(const __true_type&) {}
1354.139 -  void _M_initialize(const __false_type&)
1354.140 -    { uninitialized_fill_n(this->_M_first, this->_M_size, value_type()); }
1354.141 -
1354.142 -public:
1354.143 -  struct _NoInit {};
1354.144 -  valarray(size_t __n, _NoInit) : _Valarray_base<_Tp>(__n) {
1354.145 -    typedef typename __type_traits<_Tp>::has_trivial_default_constructor _Is_Trivial;
1354.146 -    _M_initialize(_Is_Trivial());
1354.147 -  }
1354.148 -
1354.149 -public:                         // Assignment
1354.150 -  // Basic assignment.  Note that 'x = y' is undefined if x.size() != y.size()
1354.151 -  valarray<_Tp>& operator=(const valarray<_Tp>& __x) {
1354.152 -    _STLP_ASSERT(__x.size() == this->size())
1354.153 -    if (this != &__x)
1354.154 -      {
1354.155 -#ifdef __SYMBIAN32__
1354.156 -      resize(__x._M_size);
1354.157 -#endif
1354.158 -      copy(__x._M_first, __x._M_first + __x._M_size, this->_M_first);
1354.159 -      }
1354.160 -    return *this;
1354.161 -  }
1354.162 -
1354.163 -  // Scalar assignment
1354.164 -  valarray<_Tp>& operator=(const value_type& __x) {
1354.165 -    fill_n(this->_M_first, this->_M_size, __x);
1354.166 -    return *this;
1354.167 -  }
1354.168 -
1354.169 -  // Assignment of auxiliary array types
1354.170 -  valarray<_Tp>& operator=(const slice_array<_Tp>&);
1354.171 -  valarray<_Tp>& operator=(const gslice_array<_Tp>&);
1354.172 -  valarray<_Tp>& operator=(const mask_array<_Tp>&);
1354.173 -  valarray<_Tp>& operator=(const indirect_array<_Tp>&);
1354.174 -
1354.175 -public:                         // Element access
1354.176 -  value_type  operator[](size_t __n) const { return this->_M_first[__n]; }
1354.177 -  value_type& operator[](size_t __n)       { return this->_M_first[__n]; }
1354.178 -  size_t size() const { return this->_M_size; }
1354.179 -
1354.180 -public:                         // Subsetting operations with auxiliary type
1354.181 -  valarray<_Tp>            operator[](slice) const;
1354.182 -  slice_array<_Tp>    operator[](slice);
1354.183 -  valarray<_Tp>            operator[](gslice) const;
1354.184 -  gslice_array<_Tp>   operator[](const gslice&);  
1354.185 -  valarray<_Tp>            operator[](const _Valarray_bool&) const;
1354.186 -  mask_array<_Tp>     operator[](const _Valarray_bool&);
1354.187 -  valarray<_Tp>            operator[](const _Valarray_size_t&) const;
1354.188 -  indirect_array<_Tp> operator[](const _Valarray_size_t&);
1354.189 -  
1354.190 -public:                         // Unary operators.
1354.191 -  valarray<_Tp> operator+() const { return *this; }
1354.192 -
1354.193 -  valarray<_Tp> operator-() const {
1354.194 -    valarray<_Tp> __tmp(this->size(), _NoInit());
1354.195 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.196 -      __tmp[__i] = -(*this)[__i];
1354.197 -    return __tmp;
1354.198 -  }
1354.199 -  
1354.200 -  valarray<_Tp> operator~() const {
1354.201 -    valarray<_Tp> __tmp(this->size(), _NoInit());
1354.202 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.203 -      __tmp[__i] = ~(*this)[__i];
1354.204 -    return __tmp;
1354.205 -  }
1354.206 -
1354.207 -  _Valarray_bool operator!() const;
1354.208 -
1354.209 -public:                         // Scalar computed assignment.
1354.210 -  valarray<_Tp>& operator*= (const value_type& __x) {
1354.211 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.212 -      (*this)[__i] *= __x;
1354.213 -    return *this;
1354.214 -  }
1354.215 -    
1354.216 -  valarray<_Tp>& operator/= (const value_type& __x) {
1354.217 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.218 -      (*this)[__i] /= __x;
1354.219 -    return *this;
1354.220 -  }
1354.221 -
1354.222 -  valarray<_Tp>& operator%= (const value_type& __x) {
1354.223 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.224 -      (*this)[__i] %= __x;
1354.225 -    return *this;
1354.226 -  }
1354.227 -
1354.228 -  valarray<_Tp>& operator+= (const value_type& __x) {
1354.229 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.230 -      (*this)[__i] += __x;
1354.231 -    return *this;
1354.232 -  }
1354.233 -
1354.234 -  valarray<_Tp>& operator-= (const value_type& __x) {
1354.235 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.236 -      (*this)[__i] -= __x;
1354.237 -    return *this;
1354.238 -  }
1354.239 -
1354.240 -  valarray<_Tp>& operator^= (const value_type& __x) {
1354.241 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.242 -      (*this)[__i] ^= __x;
1354.243 -    return *this;
1354.244 -  }
1354.245 -
1354.246 -  valarray<_Tp>& operator&= (const value_type& __x) {
1354.247 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.248 -      (*this)[__i] &= __x;
1354.249 -    return *this;
1354.250 -  }
1354.251 -
1354.252 -  valarray<_Tp>& operator|= (const value_type& __x) {
1354.253 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.254 -      (*this)[__i] |= __x;
1354.255 -    return *this;
1354.256 -  }
1354.257 -
1354.258 -  valarray<_Tp>& operator<<= (const value_type& __x) {
1354.259 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.260 -      (*this)[__i] <<= __x;
1354.261 -    return *this;
1354.262 -  }
1354.263 -
1354.264 -  valarray<_Tp>& operator>>= (const value_type& __x) {
1354.265 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.266 -      (*this)[__i] >>= __x;
1354.267 -    return *this;
1354.268 -  }
1354.269 -
1354.270 -public:                         // Array computed assignment.
1354.271 -  valarray<_Tp>& operator*= (const valarray<_Tp>& __x) {
1354.272 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.273 -      (*this)[__i] *= __x[__i];
1354.274 -    return *this;
1354.275 -  }
1354.276 -    
1354.277 -  valarray<_Tp>& operator/= (const valarray<_Tp>& __x) {
1354.278 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.279 -      (*this)[__i] /= __x[__i];
1354.280 -    return *this;
1354.281 -  }
1354.282 -
1354.283 -  valarray<_Tp>& operator%= (const valarray<_Tp>& __x) {
1354.284 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.285 -      (*this)[__i] %= __x[__i];
1354.286 -    return *this;
1354.287 -  }
1354.288 -
1354.289 -  valarray<_Tp>& operator+= (const valarray<_Tp>& __x) {
1354.290 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.291 -      (*this)[__i] += __x[__i];
1354.292 -    return *this;
1354.293 -  }
1354.294 -
1354.295 -  valarray<_Tp>& operator-= (const valarray<_Tp>& __x) {
1354.296 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.297 -      (*this)[__i] -= __x[__i];
1354.298 -    return *this;
1354.299 -  }
1354.300 -
1354.301 -  valarray<_Tp>& operator^= (const valarray<_Tp>& __x) {
1354.302 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.303 -      (*this)[__i] ^= __x[__i];
1354.304 -    return *this;
1354.305 -  }
1354.306 -
1354.307 -  valarray<_Tp>& operator&= (const valarray<_Tp>& __x) {
1354.308 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.309 -      (*this)[__i] &= __x[__i];
1354.310 -    return *this;
1354.311 -  }
1354.312 -
1354.313 -  valarray<_Tp>& operator|= (const valarray<_Tp>& __x) {
1354.314 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.315 -      (*this)[__i] |= __x[__i];
1354.316 -    return *this;
1354.317 -  }
1354.318 -
1354.319 -  valarray<_Tp>& operator<<= (const valarray<_Tp>& __x) {
1354.320 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.321 -      (*this)[__i] <<= __x[__i];
1354.322 -    return *this;
1354.323 -  }
1354.324 -
1354.325 -  valarray<_Tp>& operator>>= (const valarray<_Tp>& __x) {
1354.326 -    for (size_t __i = 0; __i < this->size(); ++__i)
1354.327 -      (*this)[__i] >>= __x[__i];
1354.328 -    return *this;
1354.329 -  }
1354.330 -
1354.331 -public:                         // Other member functions.
1354.332 -
1354.333 -  // The result is undefined for zero-length arrays
1354.334 -  value_type sum() const {
1354.335 -    return accumulate(this->_M_first + 1, this->_M_first + this->_M_size,
1354.336 -                      (*this)[0]);
1354.337 -  }
1354.338 -
1354.339 -  // The result is undefined for zero-length arrays
1354.340 -  value_type (min) () const {
1354.341 -    return *min_element(this->_M_first + 0, this->_M_first + this->_M_size);
1354.342 -  }
1354.343 -
1354.344 -  value_type (max) () const {
1354.345 -    return *max_element(this->_M_first + 0, this->_M_first + this->_M_size);
1354.346 -  }
1354.347 -
1354.348 -  valarray<_Tp> shift(int __n) const;
1354.349 -  valarray<_Tp> cshift(int __n) const;
1354.350 -
1354.351 -  valarray<_Tp> apply(value_type __f(value_type)) const {
1354.352 -    valarray<_Tp> __tmp(this->size());
1354.353 -    transform(this->_M_first + 0, this->_M_first + this->_M_size, __tmp._M_first,
1354.354 -              __f);
1354.355 -    return __tmp;
1354.356 -  }
1354.357 -  valarray<_Tp> apply(value_type __f(const value_type&)) const {
1354.358 -    valarray<_Tp> __tmp(this->size());
1354.359 -    transform(this->_M_first + 0, this->_M_first + this->_M_size, __tmp._M_first,
1354.360 -              __f);
1354.361 -    return __tmp;
1354.362 -  }
1354.363 -  
1354.364 -  void resize(size_t __n, value_type __x = value_type()) {
1354.365 -    _STLP_STD::_Destroy(this->_M_first, this->_M_first + this->_M_size);
1354.366 -    this->_Valarray_base<_Tp>::_M_deallocate();
1354.367 -    this->_Valarray_base<_Tp>::_M_allocate(__n);
1354.368 -    uninitialized_fill_n(this->_M_first, this->_M_size, __x);
1354.369 -  }
1354.370 -};
1354.371 -
1354.372 -//----------------------------------------------------------------------
1354.373 -// valarray non-member functions.
1354.374 -
1354.375 -// Binary arithmetic operations between two arrays.  Behavior is
1354.376 -// undefined if the two arrays do not have the same length.
1354.377 -
1354.378 -template <class _Tp> 
1354.379 -inline valarray<_Tp>  _STLP_CALL operator*(const valarray<_Tp>& __x,
1354.380 -                                           const valarray<_Tp>& __y) {
1354.381 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.382 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.383 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.384 -    __tmp[__i] = __x[__i] * __y[__i];
1354.385 -  return __tmp;
1354.386 -}
1354.387 -
1354.388 -template <class _Tp> 
1354.389 -inline valarray<_Tp>  _STLP_CALL operator/(const valarray<_Tp>& __x,
1354.390 -                                           const valarray<_Tp>& __y) {
1354.391 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.392 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.393 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.394 -    __tmp[__i] = __x[__i] / __y[__i];
1354.395 -  return __tmp;
1354.396 -}
1354.397 -
1354.398 -template <class _Tp> 
1354.399 -inline valarray<_Tp>  _STLP_CALL operator%(const valarray<_Tp>& __x,
1354.400 -                                           const valarray<_Tp>& __y) {
1354.401 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.402 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.403 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.404 -    __tmp[__i] = __x[__i] % __y[__i];
1354.405 -  return __tmp;
1354.406 -}
1354.407 -
1354.408 -template <class _Tp> 
1354.409 -inline valarray<_Tp>  _STLP_CALL operator+(const valarray<_Tp>& __x,
1354.410 -                                           const valarray<_Tp>& __y) {
1354.411 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.412 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.413 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.414 -    __tmp[__i] = __x[__i] + __y[__i];
1354.415 -  return __tmp;
1354.416 -}
1354.417 -
1354.418 -template <class _Tp> 
1354.419 -inline valarray<_Tp>  _STLP_CALL operator-(const valarray<_Tp>& __x,
1354.420 -                                           const valarray<_Tp>& __y) {
1354.421 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.422 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.423 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.424 -    __tmp[__i] = __x[__i] - __y[__i];
1354.425 -  return __tmp;
1354.426 -}
1354.427 -
1354.428 -template <class _Tp> 
1354.429 -inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x,
1354.430 -                               const valarray<_Tp>& __y) {
1354.431 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.432 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.433 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.434 -    __tmp[__i] = __x[__i] ^ __y[__i];
1354.435 -  return __tmp;
1354.436 -}
1354.437 -
1354.438 -template <class _Tp> 
1354.439 -inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x,
1354.440 -                               const valarray<_Tp>& __y) {
1354.441 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.442 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.443 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.444 -    __tmp[__i] = __x[__i] & __y[__i];
1354.445 -  return __tmp;
1354.446 -}
1354.447 -
1354.448 -template <class _Tp> 
1354.449 -inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x,
1354.450 -                               const valarray<_Tp>& __y) {
1354.451 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.452 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.453 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.454 -    __tmp[__i] = __x[__i] | __y[__i];
1354.455 -  return __tmp;
1354.456 -}
1354.457 -
1354.458 -template <class _Tp> 
1354.459 -inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x,
1354.460 -                               const valarray<_Tp>& __y) {
1354.461 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.462 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.463 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.464 -    __tmp[__i] = __x[__i] << __y[__i];
1354.465 -  return __tmp;
1354.466 -}
1354.467 -
1354.468 -template <class _Tp> 
1354.469 -inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x,
1354.470 -                               const valarray<_Tp>& __y) {
1354.471 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.472 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.473 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.474 -    __tmp[__i] = __x[__i] >> __y[__i];
1354.475 -  return __tmp;
1354.476 -}
1354.477 -
1354.478 -// Binary arithmetic operations between an array and a scalar.
1354.479 -
1354.480 -template <class _Tp> 
1354.481 -inline valarray<_Tp> _STLP_CALL operator*(const valarray<_Tp>& __x, const _Tp& __c) {
1354.482 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.483 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.484 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.485 -    __tmp[__i] = __x[__i]  * __c;
1354.486 -  return __tmp;
1354.487 -}
1354.488 -
1354.489 -template <class _Tp> 
1354.490 -inline valarray<_Tp> _STLP_CALL operator*(const _Tp& __c, const valarray<_Tp>& __x) {
1354.491 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.492 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.493 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.494 -    __tmp[__i] = __c * __x[__i];
1354.495 -  return __tmp;
1354.496 -}
1354.497 -
1354.498 -template <class _Tp> 
1354.499 -inline valarray<_Tp> _STLP_CALL operator/(const valarray<_Tp>& __x, const _Tp& __c) {
1354.500 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.501 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.502 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.503 -    __tmp[__i] = __x[__i]  / __c;
1354.504 -  return __tmp;
1354.505 -}
1354.506 -
1354.507 -template <class _Tp> 
1354.508 -inline valarray<_Tp> _STLP_CALL operator/(const _Tp& __c, const valarray<_Tp>& __x) {
1354.509 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.510 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.511 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.512 -    __tmp[__i] = __c / __x[__i];
1354.513 -  return __tmp;
1354.514 -}
1354.515 -
1354.516 -template <class _Tp> 
1354.517 -inline valarray<_Tp> _STLP_CALL operator%(const valarray<_Tp>& __x, const _Tp& __c) {
1354.518 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.519 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.520 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.521 -    __tmp[__i] = __x[__i]  % __c;
1354.522 -  return __tmp;
1354.523 -}
1354.524 -
1354.525 -template <class _Tp> 
1354.526 -inline valarray<_Tp> _STLP_CALL operator%(const _Tp& __c, const valarray<_Tp>& __x) {
1354.527 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.528 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.529 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.530 -    __tmp[__i] = __c % __x[__i];
1354.531 -  return __tmp;
1354.532 -}
1354.533 -
1354.534 -template <class _Tp> 
1354.535 -inline valarray<_Tp> _STLP_CALL operator+(const valarray<_Tp>& __x, const _Tp& __c) {
1354.536 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.537 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.538 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.539 -    __tmp[__i] = __x[__i]  + __c;
1354.540 -  return __tmp;
1354.541 -}
1354.542 -
1354.543 -template <class _Tp> 
1354.544 -inline valarray<_Tp> _STLP_CALL operator+(const _Tp& __c, const valarray<_Tp>& __x) {
1354.545 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.546 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.547 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.548 -    __tmp[__i] = __c + __x[__i];
1354.549 -  return __tmp;
1354.550 -}
1354.551 -
1354.552 -template <class _Tp> 
1354.553 -inline valarray<_Tp> _STLP_CALL operator-(const valarray<_Tp>& __x, const _Tp& __c) {
1354.554 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.555 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.556 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.557 -    __tmp[__i] = __x[__i]  - __c;
1354.558 -  return __tmp;
1354.559 -}
1354.560 -
1354.561 -template <class _Tp> 
1354.562 -inline valarray<_Tp> _STLP_CALL operator-(const _Tp& __c, const valarray<_Tp>& __x) {
1354.563 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.564 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.565 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.566 -    __tmp[__i] = __c - __x[__i];
1354.567 -  return __tmp;
1354.568 -}
1354.569 -
1354.570 -template <class _Tp> 
1354.571 -inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x, const _Tp& __c) {
1354.572 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.573 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.574 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.575 -    __tmp[__i] = __x[__i]  ^ __c;
1354.576 -  return __tmp;
1354.577 -}
1354.578 -
1354.579 -template <class _Tp> 
1354.580 -inline valarray<_Tp> _STLP_CALL operator^(const _Tp& __c, const valarray<_Tp>& __x) {
1354.581 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.582 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.583 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.584 -    __tmp[__i] = __c ^ __x[__i];
1354.585 -  return __tmp;
1354.586 -}
1354.587 -
1354.588 -template <class _Tp> 
1354.589 -inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x, const _Tp& __c) {
1354.590 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.591 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.592 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.593 -    __tmp[__i] = __x[__i]  & __c;
1354.594 -  return __tmp;
1354.595 -}
1354.596 -
1354.597 -template <class _Tp> 
1354.598 -inline valarray<_Tp> _STLP_CALL operator&(const _Tp& __c, const valarray<_Tp>& __x) {
1354.599 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.600 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.601 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.602 -    __tmp[__i] = __c & __x[__i];
1354.603 -  return __tmp;
1354.604 -}
1354.605 -
1354.606 -template <class _Tp> 
1354.607 -inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x, const _Tp& __c) {
1354.608 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.609 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.610 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.611 -    __tmp[__i] = __x[__i]  | __c;
1354.612 -  return __tmp;
1354.613 -}
1354.614 -
1354.615 -template <class _Tp> 
1354.616 -inline valarray<_Tp> _STLP_CALL operator|(const _Tp& __c, const valarray<_Tp>& __x) {
1354.617 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.618 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.619 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.620 -    __tmp[__i] = __c | __x[__i];
1354.621 -  return __tmp;
1354.622 -}
1354.623 -
1354.624 -template <class _Tp> 
1354.625 -inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x, const _Tp& __c) {
1354.626 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.627 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.628 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.629 -    __tmp[__i] = __x[__i]  << __c;
1354.630 -  return __tmp;
1354.631 -}
1354.632 -
1354.633 -template <class _Tp> 
1354.634 -inline valarray<_Tp> _STLP_CALL operator<<(const _Tp& __c, const valarray<_Tp>& __x) {
1354.635 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.636 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.637 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.638 -    __tmp[__i] = __c << __x[__i];
1354.639 -  return __tmp;
1354.640 -}
1354.641 -
1354.642 -template <class _Tp> 
1354.643 -inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x, const _Tp& __c) {
1354.644 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.645 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.646 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.647 -    __tmp[__i] = __x[__i]  >> __c;
1354.648 -  return __tmp;
1354.649 -}
1354.650 -
1354.651 -template <class _Tp> 
1354.652 -inline valarray<_Tp> _STLP_CALL operator>>(const _Tp& __c, const valarray<_Tp>& __x) {
1354.653 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.654 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.655 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.656 -    __tmp[__i] = __c >> __x[__i];
1354.657 -  return __tmp;
1354.658 -}
1354.659 -
1354.660 -// Binary logical operations between two arrays.  Behavior is undefined
1354.661 -// if the two arrays have different lengths.  Note that operator== does
1354.662 -// not do what you might at first expect.
1354.663 -
1354.664 -template <class _Tp> 
1354.665 -inline _Valarray_bool _STLP_CALL operator==(const valarray<_Tp>& __x,
1354.666 -                                 const valarray<_Tp>& __y)
1354.667 -{
1354.668 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.669 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.670 -    __tmp[__i] = __x[__i] == __y[__i];
1354.671 -  return __tmp;  
1354.672 -}
1354.673 -
1354.674 -template <class _Tp> 
1354.675 -inline _Valarray_bool _STLP_CALL operator<(const valarray<_Tp>& __x,
1354.676 -                                const valarray<_Tp>& __y)
1354.677 -{
1354.678 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.679 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.680 -    __tmp[__i] = __x[__i] < __y[__i];
1354.681 -  return __tmp;  
1354.682 -}
1354.683 -
1354.684 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1354.685 -
1354.686 -template <class _Tp> 
1354.687 -inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x,
1354.688 -                                 const valarray<_Tp>& __y)
1354.689 -{
1354.690 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.691 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.692 -    __tmp[__i] = __x[__i] != __y[__i];
1354.693 -  return __tmp;  
1354.694 -}
1354.695 -
1354.696 -template <class _Tp> 
1354.697 -inline _Valarray_bool _STLP_CALL operator>(const valarray<_Tp>& __x,
1354.698 -                                const valarray<_Tp>& __y)
1354.699 -{
1354.700 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.701 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.702 -    __tmp[__i] = __x[__i] > __y[__i];
1354.703 -  return __tmp;  
1354.704 -}
1354.705 -
1354.706 -template <class _Tp> 
1354.707 -inline _Valarray_bool _STLP_CALL operator<=(const valarray<_Tp>& __x,
1354.708 -                                 const valarray<_Tp>& __y)
1354.709 -{
1354.710 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.711 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.712 -    __tmp[__i] = __x[__i] <= __y[__i];
1354.713 -  return __tmp;  
1354.714 -}
1354.715 -
1354.716 -template <class _Tp> 
1354.717 -inline _Valarray_bool _STLP_CALL operator>=(const valarray<_Tp>& __x,
1354.718 -                                 const valarray<_Tp>& __y)
1354.719 -{
1354.720 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.721 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.722 -    __tmp[__i] = __x[__i] >= __y[__i];
1354.723 -  return __tmp;  
1354.724 -}
1354.725 -
1354.726 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1354.727 -// fbp : swap ?
1354.728 -
1354.729 -template <class _Tp> 
1354.730 -inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x,
1354.731 -                                 const valarray<_Tp>& __y)
1354.732 -{
1354.733 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.734 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.735 -    __tmp[__i] = __x[__i] && __y[__i];
1354.736 -  return __tmp;  
1354.737 -}
1354.738 -
1354.739 -template <class _Tp> 
1354.740 -inline _Valarray_bool _STLP_CALL operator||(const valarray<_Tp>& __x,
1354.741 -                                 const valarray<_Tp>& __y)
1354.742 -{
1354.743 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.744 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.745 -    __tmp[__i] = __x[__i] || __y[__i];
1354.746 -  return __tmp;  
1354.747 -}
1354.748 -
1354.749 -// Logical operations between an array and a scalar.
1354.750 -
1354.751 -template <class _Tp>
1354.752 -inline _Valarray_bool _STLP_CALL operator==(const valarray<_Tp>& __x, const _Tp& __c)
1354.753 -{
1354.754 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.755 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.756 -    __tmp[__i] = __x[__i] == __c;
1354.757 -  return __tmp;  
1354.758 -}
1354.759 -
1354.760 -template <class _Tp>
1354.761 -inline _Valarray_bool _STLP_CALL operator==(const _Tp& __c, const valarray<_Tp>& __x)
1354.762 -{
1354.763 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.764 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.765 -    __tmp[__i] = __c == __x[__i];
1354.766 -  return __tmp;  
1354.767 -}
1354.768 -
1354.769 -template <class _Tp>
1354.770 -inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x, const _Tp& __c)
1354.771 -{
1354.772 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.773 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.774 -    __tmp[__i] = __x[__i] != __c;
1354.775 -  return __tmp;  
1354.776 -}
1354.777 -
1354.778 -template <class _Tp>
1354.779 -inline _Valarray_bool _STLP_CALL operator!=(const _Tp& __c, const valarray<_Tp>& __x)
1354.780 -{
1354.781 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.782 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.783 -    __tmp[__i] = __c != __x[__i];
1354.784 -  return __tmp;  
1354.785 -}
1354.786 -
1354.787 -template <class _Tp>
1354.788 -inline _Valarray_bool _STLP_CALL operator<(const valarray<_Tp>& __x, const _Tp& __c)
1354.789 -{
1354.790 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.791 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.792 -    __tmp[__i] = __x[__i] < __c;
1354.793 -  return __tmp;  
1354.794 -}
1354.795 -
1354.796 -template <class _Tp>
1354.797 -inline _Valarray_bool _STLP_CALL operator<(const _Tp& __c, const valarray<_Tp>& __x)
1354.798 -{
1354.799 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.800 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.801 -    __tmp[__i] = __c < __x[__i];
1354.802 -  return __tmp;  
1354.803 -}
1354.804 -
1354.805 -template <class _Tp>
1354.806 -inline _Valarray_bool _STLP_CALL operator>(const valarray<_Tp>& __x, const _Tp& __c)
1354.807 -{
1354.808 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.809 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.810 -    __tmp[__i] = __x[__i] > __c;
1354.811 -  return __tmp;  
1354.812 -}
1354.813 -
1354.814 -template <class _Tp>
1354.815 -inline _Valarray_bool _STLP_CALL operator>(const _Tp& __c, const valarray<_Tp>& __x)
1354.816 -{
1354.817 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.818 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.819 -    __tmp[__i] = __c > __x[__i];
1354.820 -  return __tmp;  
1354.821 -}
1354.822 -
1354.823 -template <class _Tp>
1354.824 -inline _Valarray_bool _STLP_CALL operator<=(const valarray<_Tp>& __x, const _Tp& __c)
1354.825 -{
1354.826 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.827 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.828 -    __tmp[__i] = __x[__i]  <= __c;
1354.829 -  return __tmp;  
1354.830 -}
1354.831 -
1354.832 -template <class _Tp>
1354.833 -inline _Valarray_bool _STLP_CALL operator<=(const _Tp& __c, const valarray<_Tp>& __x)
1354.834 -{
1354.835 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.836 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.837 -    __tmp[__i] = __c <= __x[__i];
1354.838 -  return __tmp;  
1354.839 -}
1354.840 -
1354.841 -template <class _Tp>
1354.842 -inline _Valarray_bool _STLP_CALL operator>=(const valarray<_Tp>& __x, const _Tp& __c)
1354.843 -{
1354.844 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.845 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.846 -    __tmp[__i] = __x[__i] >= __c;
1354.847 -  return __tmp;  
1354.848 -}
1354.849 -
1354.850 -template <class _Tp>
1354.851 -inline _Valarray_bool _STLP_CALL operator>=(const _Tp& __c, const valarray<_Tp>& __x)
1354.852 -{
1354.853 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.854 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.855 -    __tmp[__i] = __c >= __x[__i];
1354.856 -  return __tmp;  
1354.857 -}
1354.858 -
1354.859 -template <class _Tp>
1354.860 -inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x, const _Tp& __c)
1354.861 -{
1354.862 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.863 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.864 -    __tmp[__i] = __x[__i] && __c;
1354.865 -  return __tmp;  
1354.866 -}
1354.867 -
1354.868 -template <class _Tp>
1354.869 -inline _Valarray_bool _STLP_CALL operator&&(const _Tp& __c, const valarray<_Tp>& __x)
1354.870 -{
1354.871 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.872 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.873 -    __tmp[__i] = __c && __x[__i];
1354.874 -  return __tmp;  
1354.875 -}
1354.876 -
1354.877 -template <class _Tp>
1354.878 -inline _Valarray_bool _STLP_CALL operator||(const valarray<_Tp>& __x, const _Tp& __c)
1354.879 -{
1354.880 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.881 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.882 -    __tmp[__i] = __x[__i] || __c;
1354.883 -  return __tmp;  
1354.884 -}
1354.885 -
1354.886 -template <class _Tp>
1354.887 -inline _Valarray_bool _STLP_CALL operator||(const _Tp& __c, const valarray<_Tp>& __x)
1354.888 -{
1354.889 -  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1354.890 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.891 -    __tmp[__i] = __c || __x[__i];
1354.892 -  return __tmp;  
1354.893 -}
1354.894 -
1354.895 -// valarray "transcendentals" (the list includes abs and sqrt, which,
1354.896 -// of course, are not transcendental).
1354.897 -
1354.898 -template <class _Tp>
1354.899 -inline valarray<_Tp> abs(const valarray<_Tp>& __x) {
1354.900 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.901 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.902 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.903 -    __tmp[__i] = _STLP_DO_ABS(_Tp)(__x[__i]);
1354.904 -  return __tmp;
1354.905 -}
1354.906 -
1354.907 -template <class _Tp>
1354.908 -inline valarray<_Tp> acos(const valarray<_Tp>& __x) {
1354.909 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.910 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.911 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.912 -    __tmp[__i] = _STLP_DO_ACOS(_Tp)(__x[__i]);
1354.913 -  return __tmp;
1354.914 -}
1354.915 -
1354.916 -template <class _Tp>
1354.917 -inline valarray<_Tp> asin(const valarray<_Tp>& __x) {
1354.918 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.919 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.920 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.921 -    __tmp[__i] = _STLP_DO_ASIN(_Tp)(__x[__i]);
1354.922 -  return __tmp;
1354.923 -}
1354.924 -
1354.925 -template <class _Tp>
1354.926 -inline valarray<_Tp> atan(const valarray<_Tp>& __x) {
1354.927 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.928 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.929 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.930 -    __tmp[__i] = _STLP_DO_ATAN(_Tp)(__x[__i]);
1354.931 -  return __tmp;
1354.932 -}
1354.933 -
1354.934 -template <class _Tp>
1354.935 -inline valarray<_Tp> atan2(const valarray<_Tp>& __x,
1354.936 -                           const valarray<_Tp>& __y) {
1354.937 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.938 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.939 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.940 -    __tmp[__i] = _STLP_DO_ATAN2(_Tp)(__x[__i], __y[__i]);
1354.941 -  return __tmp;
1354.942 -}
1354.943 -
1354.944 -template <class _Tp>
1354.945 -inline valarray<_Tp> atan2(const valarray<_Tp>& __x, const _Tp& __c) {
1354.946 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.947 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.948 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.949 -    __tmp[__i] = _STLP_DO_ATAN2(_Tp)(__x[__i], __c);
1354.950 -  return __tmp;
1354.951 -}
1354.952 -
1354.953 -template <class _Tp>
1354.954 -inline valarray<_Tp> atan2(const _Tp& __c, const valarray<_Tp>& __x) {
1354.955 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.956 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.957 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.958 -    __tmp[__i] = _STLP_DO_ATAN2(_Tp)(__c, __x[__i]);
1354.959 -  return __tmp;
1354.960 -}
1354.961 -
1354.962 -template <class _Tp>
1354.963 -inline valarray<_Tp> cos(const valarray<_Tp>& __x) {
1354.964 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.965 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.966 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.967 -    __tmp[__i] = _STLP_DO_COS(_Tp)(__x[__i]);
1354.968 -  return __tmp;
1354.969 -}
1354.970 -
1354.971 -template <class _Tp>
1354.972 -inline valarray<_Tp> cosh(const valarray<_Tp>& __x) {
1354.973 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.974 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.975 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.976 -    __tmp[__i] = _STLP_DO_COSH(_Tp)(__x[__i]);
1354.977 -  return __tmp;
1354.978 -}
1354.979 -
1354.980 -template <class _Tp>
1354.981 -inline valarray<_Tp> exp(const valarray<_Tp>& __x) {
1354.982 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.983 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.984 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.985 -    __tmp[__i] = _STLP_DO_EXP(_Tp)(__x[__i]);
1354.986 -  return __tmp;
1354.987 -}
1354.988 -
1354.989 -template <class _Tp>
1354.990 -inline valarray<_Tp> log(const valarray<_Tp>& __x) {
1354.991 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.992 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.993 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.994 -    __tmp[__i] = _STLP_DO_LOG(_Tp)(__x[__i]);
1354.995 -  return __tmp;
1354.996 -}
1354.997 -
1354.998 -template <class _Tp>
1354.999 -inline valarray<_Tp> log10(const valarray<_Tp>& __x) {
1354.1000 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1001 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1002 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1003 -    __tmp[__i] = _STLP_DO_LOG10(_Tp)(__x[__i]);
1354.1004 -  return __tmp;
1354.1005 -}
1354.1006 -
1354.1007 -template <class _Tp>
1354.1008 -inline valarray<_Tp> pow(const valarray<_Tp>& __x,
1354.1009 -                           const valarray<_Tp>& __y) {
1354.1010 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1011 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1012 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1013 -    __tmp[__i] = _STLP_DO_POW(_Tp)(__x[__i], __y[__i]);
1354.1014 -  return __tmp;
1354.1015 -}
1354.1016 -
1354.1017 -template <class _Tp>
1354.1018 -inline valarray<_Tp> pow(const valarray<_Tp>& __x, const _Tp& __c) {
1354.1019 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1020 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1021 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1022 -    __tmp[__i] = _STLP_DO_POW(_Tp)(__x[__i], __c);
1354.1023 -  return __tmp;
1354.1024 -}
1354.1025 -
1354.1026 -template <class _Tp>
1354.1027 -inline valarray<_Tp> pow(const _Tp& __c, const valarray<_Tp>& __x) {
1354.1028 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1029 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1030 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1031 -    __tmp[__i] = _STLP_DO_POW(_Tp)(__c, __x[__i]);
1354.1032 -  return __tmp;
1354.1033 -}
1354.1034 -
1354.1035 -template <class _Tp>
1354.1036 -inline valarray<_Tp> sin(const valarray<_Tp>& __x) {
1354.1037 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1038 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1039 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1040 -    __tmp[__i] = _STLP_DO_SIN(_Tp)(__x[__i]);
1354.1041 -  return __tmp;
1354.1042 -}
1354.1043 -
1354.1044 -template <class _Tp>
1354.1045 -inline valarray<_Tp> sinh(const valarray<_Tp>& __x) {
1354.1046 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1047 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1048 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1049 -    __tmp[__i] = _STLP_DO_SINH(_Tp)(__x[__i]);
1354.1050 -  return __tmp;
1354.1051 -}
1354.1052 -
1354.1053 -template <class _Tp>
1354.1054 -inline valarray<_Tp> sqrt(const valarray<_Tp>& __x) {
1354.1055 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1056 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1057 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1058 -    __tmp[__i] = _STLP_DO_SQRT(_Tp)(__x[__i]);
1354.1059 -  return __tmp;
1354.1060 -}
1354.1061 -
1354.1062 -template <class _Tp>
1354.1063 -inline valarray<_Tp> tan(const valarray<_Tp>& __x) {
1354.1064 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1065 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1066 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1067 -    __tmp[__i] = _STLP_DO_TAN(_Tp)(__x[__i]);
1354.1068 -  return __tmp;
1354.1069 -}
1354.1070 -
1354.1071 -template <class _Tp>
1354.1072 -inline valarray<_Tp> tanh(const valarray<_Tp>& __x) {
1354.1073 -  typedef typename valarray<_Tp>::_NoInit _NoInit;
1354.1074 -  valarray<_Tp> __tmp(__x.size(), _NoInit());
1354.1075 -  for (size_t __i = 0; __i < __x.size(); ++__i)
1354.1076 -    __tmp[__i] = _STLP_DO_TANH(_Tp)(__x[__i]);
1354.1077 -  return __tmp;
1354.1078 -}
1354.1079 -
1354.1080 -//----------------------------------------------------------------------
1354.1081 -// slice and slice_array
1354.1082 -
1354.1083 -class slice {
1354.1084 -public:
1354.1085 -  slice() : _M_start(0), _M_length(0), _M_stride(0) {}
1354.1086 -  slice(size_t __start, size_t __length, size_t __stride)
1354.1087 -    : _M_start(__start), _M_length(__length), _M_stride(__stride)
1354.1088 -    {}
1354.1089 -  __TRIVIAL_DESTRUCTOR(slice)
1354.1090 -
1354.1091 -  size_t start()  const { return _M_start; }
1354.1092 -  size_t size()   const { return _M_length; }
1354.1093 -  size_t stride() const { return _M_stride; }
1354.1094 -
1354.1095 -   
1354.1096 -private:
1354.1097 -  size_t _M_start;
1354.1098 -  size_t _M_length;
1354.1099 -  size_t _M_stride;
1354.1100 -};
1354.1101 -
1354.1102 -template <class _Tp>
1354.1103 -class slice_array {
1354.1104 -  friend class valarray<_Tp>;
1354.1105 -public:
1354.1106 -  typedef _Tp value_type;
1354.1107 -
1354.1108 -  void operator=(const valarray<value_type>& __x) const {
1354.1109 -    size_t __index = _M_slice.start();
1354.1110 -    for (size_t __i = 0;
1354.1111 -         __i < _M_slice.size();
1354.1112 -         ++__i, __index += _M_slice.stride())
1354.1113 -#ifdef __SYMBIAN32__
1354.1114 -      (*_M_array)[__index] = __x[__i];
1354.1115 -#else
1354.1116 -      _M_array[__index] = __x[__i];
1354.1117 -#endif
1354.1118 -  }
1354.1119 -
1354.1120 -  void operator*=(const valarray<value_type>& __x) const {
1354.1121 -    size_t __index = _M_slice.start();
1354.1122 -    for (size_t __i = 0;
1354.1123 -         __i < _M_slice.size();
1354.1124 -         ++__i, __index += _M_slice.stride())
1354.1125 -#ifdef __SYMBIAN32__
1354.1126 -        (*_M_array)[__index] *= __x[__i];
1354.1127 -#else
1354.1128 -        _M_array[__index] *= __x[__i];
1354.1129 -#endif
1354.1130 -  }
1354.1131 -
1354.1132 -  void operator/=(const valarray<value_type>& __x) const {
1354.1133 -    size_t __index = _M_slice.start();
1354.1134 -    for (size_t __i = 0;
1354.1135 -         __i < _M_slice.size();
1354.1136 -         ++__i, __index += _M_slice.stride())
1354.1137 -#ifdef __SYMBIAN32__
1354.1138 -      (*_M_array)[__index] /= __x[__i];
1354.1139 -#else
1354.1140 -      _M_array[__index] /= __x[__i];
1354.1141 -#endif
1354.1142 -  }
1354.1143 -
1354.1144 -  void operator%=(const valarray<value_type>& __x) const {
1354.1145 -    size_t __index = _M_slice.start();
1354.1146 -    for (size_t __i = 0;
1354.1147 -         __i < _M_slice.size();
1354.1148 -         ++__i, __index += _M_slice.stride())
1354.1149 -#ifdef __SYMBIAN32__
1354.1150 -      (*_M_array)[__index] %= __x[__i];
1354.1151 -#else
1354.1152 -      _M_array[__index] %= __x[__i];
1354.1153 -#endif
1354.1154 -  }
1354.1155 -
1354.1156 -  void operator+=(const valarray<value_type>& __x) const {
1354.1157 -    size_t __index = _M_slice.start();
1354.1158 -    for (size_t __i = 0;
1354.1159 -         __i < _M_slice.size();
1354.1160 -         ++__i, __index += _M_slice.stride())
1354.1161 -#ifdef __SYMBIAN32__
1354.1162 -      (*_M_array)[__index] += __x[__i];
1354.1163 -#else
1354.1164 -      _M_array[__index] += __x[__i];
1354.1165 -#endif
1354.1166 -  }
1354.1167 -
1354.1168 -  void operator-=(const valarray<value_type>& __x) const {
1354.1169 -    size_t __index = _M_slice.start();
1354.1170 -    for (size_t __i = 0;
1354.1171 -         __i < _M_slice.size();
1354.1172 -         ++__i, __index += _M_slice.stride())
1354.1173 -#ifdef __SYMBIAN32__
1354.1174 -      (*_M_array)[__index] -= __x[__i];
1354.1175 -#else
1354.1176 -      _M_array[__index] -= __x[__i];
1354.1177 -#endif
1354.1178 -  }
1354.1179 -
1354.1180 -  void operator^=(const valarray<value_type>& __x) const {
1354.1181 -    size_t __index = _M_slice.start();
1354.1182 -    for (size_t __i = 0;
1354.1183 -         __i < _M_slice.size();
1354.1184 -         ++__i, __index += _M_slice.stride())
1354.1185 -#ifdef __SYMBIAN32__
1354.1186 -      (*_M_array)[__index] ^= __x[__i];
1354.1187 -#else
1354.1188 -      _M_array[__index] ^= __x[__i];
1354.1189 -#endif
1354.1190 -  }
1354.1191 -
1354.1192 -  void operator&=(const valarray<value_type>& __x) const {
1354.1193 -    size_t __index = _M_slice.start();
1354.1194 -    for (size_t __i = 0;
1354.1195 -         __i < _M_slice.size();
1354.1196 -         ++__i, __index += _M_slice.stride())
1354.1197 -#ifdef __SYMBIAN32__
1354.1198 -      (*_M_array)[__index] &= __x[__i];
1354.1199 -#else
1354.1200 -      _M_array[__index] &= __x[__i];
1354.1201 -#endif
1354.1202 -  }
1354.1203 -
1354.1204 -  void operator|=(const valarray<value_type>& __x) const {
1354.1205 -    size_t __index = _M_slice.start();
1354.1206 -    for (size_t __i = 0;
1354.1207 -         __i < _M_slice.size();
1354.1208 -         ++__i, __index += _M_slice.stride())
1354.1209 -#ifdef __SYMBIAN32__
1354.1210 -      (*_M_array)[__index] |= __x[__i];
1354.1211 -#else
1354.1212 -      _M_array[__index] |= __x[__i];
1354.1213 -#endif
1354.1214 -  }
1354.1215 -
1354.1216 -  void operator<<=(const valarray<value_type>& __x) const {
1354.1217 -    size_t __index = _M_slice.start();
1354.1218 -    for (size_t __i = 0;
1354.1219 -         __i < _M_slice.size();
1354.1220 -         ++__i, __index += _M_slice.stride())
1354.1221 -#ifdef __SYMBIAN32__
1354.1222 -      (*_M_array)[__index] <<= __x[__i];
1354.1223 -#else
1354.1224 -      _M_array[__index] <<= __x[__i];
1354.1225 -#endif
1354.1226 -  }
1354.1227 -
1354.1228 -  void operator>>=(const valarray<value_type>& __x) const {
1354.1229 -    size_t __index = _M_slice.start();
1354.1230 -    for (size_t __i = 0;
1354.1231 -         __i < _M_slice.size();
1354.1232 -         ++__i, __index += _M_slice.stride())
1354.1233 -#ifdef __SYMBIAN32__
1354.1234 -      (*_M_array)[__index] >>= __x[__i];
1354.1235 -#else
1354.1236 -      _M_array[__index] >>= __x[__i];
1354.1237 -#endif
1354.1238 -  }
1354.1239 -
1354.1240 -  void operator=(const value_type& __c) {
1354.1241 -    size_t __index = _M_slice.start();
1354.1242 -    for (size_t __i = 0;
1354.1243 -         __i < _M_slice.size();
1354.1244 -         ++__i, __index += _M_slice.stride())
1354.1245 -#ifdef __SYMBIAN32__
1354.1246 -      (*_M_array)[__index] = __c;
1354.1247 -#else
1354.1248 -      _M_array[__index] = __c;
1354.1249 -#endif
1354.1250 -  }
1354.1251 -  
1354.1252 -  slice_array<_Tp>&
1354.1253 -    operator=(const slice_array<_Tp>& __a)
1354.1254 -    {
1354.1255 -    size_t __index = _M_slice.start();
1354.1256 -    for (size_t __i = __a._M_slice.start();
1354.1257 -         __i < _M_slice.size();
1354.1258 -         __i += __a._M_slice.stride(), __index += _M_slice.stride())
1354.1259 -      _M_array[__index] = __a._M_array[__index][__i];
1354.1260 -    return *this;
1354.1261 -    }
1354.1262 -
1354.1263 -    slice_array(const slice_array<_Tp>& a)
1354.1264 -      : _M_slice(a._M_slice), _M_array(a._M_array){}
1354.1265 -
1354.1266 -  ~slice_array() {}
1354.1267 -
1354.1268 -private:
1354.1269 -  slice_array(const slice& __slice, valarray<_Tp>* __array)
1354.1270 -    : _M_slice(__slice), _M_array(__array)
1354.1271 -    {}
1354.1272 -
1354.1273 -  slice          _M_slice;
1354.1274 -  valarray<_Tp>* _M_array;
1354.1275 -
1354.1276 -private:                        // Disable assignment and default constructor
1354.1277 -  slice_array();
1354.1278 -};
1354.1279 -
1354.1280 -// valarray member functions dealing with slice and slice_array
1354.1281 -
1354.1282 -template <class _Tp>
1354.1283 -inline valarray<_Tp>::valarray(const slice_array<_Tp>& __x)
1354.1284 -  : _Valarray_base<_Tp>(__x._M_slice.size())
1354.1285 -{
1354.1286 -  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1354.1287 -          _Is_Trivial;
1354.1288 -  _M_initialize(_Is_Trivial());  
1354.1289 -  *this = __x;
1354.1290 -}
1354.1291 -
1354.1292 -
1354.1293 -template <class _Tp>
1354.1294 -inline slice_array<_Tp> valarray<_Tp>::operator[](slice __slice) {
1354.1295 -  return slice_array<_Tp>(__slice, this);
1354.1296 -}
1354.1297 -
1354.1298 -//----------------------------------------------------------------------
1354.1299 -// gslice and gslice_array
1354.1300 -
1354.1301 -template <class _Size>
1354.1302 -struct _Gslice_Iter_tmpl;
1354.1303 -
1354.1304 -class gslice {
1354.1305 -  friend struct _Gslice_Iter_tmpl<size_t>;
1354.1306 -public:
1354.1307 -  gslice() : _M_start(0), _M_lengths(0), _M_strides(0) {}
1354.1308 -  gslice(size_t __start,
1354.1309 -         const _Valarray_size_t& __lengths, const _Valarray_size_t& __strides)
1354.1310 -    : _M_start(__start), _M_lengths(__lengths), _M_strides(__strides)
1354.1311 -    {}
1354.1312 -  __TRIVIAL_DESTRUCTOR(gslice)
1354.1313 -
1354.1314 -  size_t start()            const { return _M_start; }
1354.1315 -  _Valarray_size_t size()   const { return _M_lengths; }
1354.1316 -  _Valarray_size_t stride() const { return _M_strides; }
1354.1317 -
1354.1318 -  // Extension: check for an empty gslice.
1354.1319 -  bool _M_empty() const { return _M_lengths.size() == 0; }
1354.1320 -
1354.1321 -  // Extension: number of indices this gslice represents.  (For a degenerate
1354.1322 -  // gslice, they're not necessarily all distinct.)
1354.1323 -  size_t _M_size() const {
1354.1324 -    return !this->_M_empty()
1354.1325 -      ? accumulate(_M_lengths._M_first + 1,
1354.1326 -                   _M_lengths._M_first + _M_lengths._M_size,
1354.1327 -                   _M_lengths[0],
1354.1328 -                   multiplies<size_t>())
1354.1329 -      : 0;
1354.1330 -  }
1354.1331 -
1354.1332 -# ifndef __HP_aCC
1354.1333 -private:
1354.1334 -# endif
1354.1335 -
1354.1336 -  size_t _M_start;
1354.1337 -  _Valarray_size_t _M_lengths;
1354.1338 -  _Valarray_size_t _M_strides;
1354.1339 -};
1354.1340 -
1354.1341 -// This is not an STL iterator.  It is constructed from a gslice, and it
1354.1342 -// steps through the gslice indices in sequence.  See 23.3.6 of the C++
1354.1343 -// standard, paragraphs 2-3, for an explanation of the sequence.  At
1354.1344 -// each step we get two things: the ordinal (i.e. number of steps taken),
1354.1345 -// and the one-dimensional index.
1354.1346 -
1354.1347 -template <class _Size>
1354.1348 -struct _Gslice_Iter_tmpl {
1354.1349 -  _Gslice_Iter_tmpl(const gslice& __gslice)
1354.1350 -    : _M_step(0), _M_1d_idx(__gslice.start()),
1354.1351 -      _M_indices(size_t(0), __gslice._M_lengths.size()),
1354.1352 -      _M_gslice(__gslice)
1354.1353 -    {}
1354.1354 -    
1354.1355 -  bool _M_done() const { return _M_indices[0] == _M_gslice._M_lengths[0]; }
1354.1356 -
1354.1357 -  bool _M_incr();
1354.1358 -
1354.1359 -  _Size _M_step;
1354.1360 -  _Size _M_1d_idx;
1354.1361 -
1354.1362 -  valarray<_Size> _M_indices;
1354.1363 -  const gslice& _M_gslice;
1354.1364 -};
1354.1365 -
1354.1366 -typedef _Gslice_Iter_tmpl<size_t> _Gslice_Iter;
1354.1367 -
1354.1368 -template <class _Tp>
1354.1369 -class gslice_array {
1354.1370 -  friend class valarray<_Tp>;
1354.1371 -public:
1354.1372 -  typedef _Tp value_type;
1354.1373 -
1354.1374 -  void operator= (const valarray<value_type>& __x) const {
1354.1375 -    if (!_M_gslice._M_empty()) {
1354.1376 -      _Gslice_Iter __i(_M_gslice);
1354.1377 -      do _M_array[__i._M_1d_idx] = __x[__i._M_step]; while(__i._M_incr());
1354.1378 -    }
1354.1379 -  }
1354.1380 -
1354.1381 -  void operator*= (const valarray<value_type>& __x) const {
1354.1382 -    if (!_M_gslice._M_empty()) {
1354.1383 -      _Gslice_Iter __i(_M_gslice);
1354.1384 -      do _M_array[__i._M_1d_idx] *= __x[__i._M_step]; while(__i._M_incr());
1354.1385 -    }
1354.1386 -  }
1354.1387 -
1354.1388 -  void operator/= (const valarray<value_type>& __x) const {
1354.1389 -    if (!_M_gslice._M_empty()) {
1354.1390 -      _Gslice_Iter __i(_M_gslice);
1354.1391 -      do _M_array[__i._M_1d_idx] /= __x[__i._M_step]; while(__i._M_incr());
1354.1392 -    }
1354.1393 -  }
1354.1394 -
1354.1395 -  void operator%= (const valarray<value_type>& __x) const {
1354.1396 -    if (!_M_gslice._M_empty()) {
1354.1397 -      _Gslice_Iter __i(_M_gslice);
1354.1398 -      do _M_array[__i._M_1d_idx] %= __x[__i._M_step]; while(__i._M_incr());
1354.1399 -    }
1354.1400 -  }
1354.1401 -
1354.1402 -  void operator+= (const valarray<value_type>& __x) const {
1354.1403 -    if (!_M_gslice._M_empty()) {
1354.1404 -      _Gslice_Iter __i(_M_gslice);
1354.1405 -      do _M_array[__i._M_1d_idx] += __x[__i._M_step]; while(__i._M_incr());
1354.1406 -    }
1354.1407 -  }
1354.1408 -
1354.1409 -  void operator-= (const valarray<value_type>& __x) const {
1354.1410 -    if (!_M_gslice._M_empty()) {
1354.1411 -      _Gslice_Iter __i(_M_gslice);
1354.1412 -      do _M_array[__i._M_1d_idx] -= __x[__i._M_step]; while(__i._M_incr());
1354.1413 -    }
1354.1414 -  }
1354.1415 -
1354.1416 -  void operator^= (const valarray<value_type>& __x) const {
1354.1417 -    if (!_M_gslice._M_empty()) {
1354.1418 -      _Gslice_Iter __i(_M_gslice);
1354.1419 -      do _M_array[__i._M_1d_idx] ^= __x[__i._M_step]; while(__i._M_incr());
1354.1420 -    }
1354.1421 -  }
1354.1422 -
1354.1423 -  void operator&= (const valarray<value_type>& __x) const {
1354.1424 -    if (!_M_gslice._M_empty()) {
1354.1425 -      _Gslice_Iter __i(_M_gslice);
1354.1426 -      do _M_array[__i._M_1d_idx] &= __x[__i._M_step]; while(__i._M_incr());
1354.1427 -    }
1354.1428 -  }
1354.1429 -
1354.1430 -  void operator|= (const valarray<value_type>& __x) const {
1354.1431 -    if (!_M_gslice._M_empty()) {
1354.1432 -      _Gslice_Iter __i(_M_gslice);
1354.1433 -      do _M_array[__i._M_1d_idx] |= __x[__i._M_step]; while(__i._M_incr());
1354.1434 -    }
1354.1435 -  }
1354.1436 -
1354.1437 -  void operator<<= (const valarray<value_type>& __x) const {
1354.1438 -    if (!_M_gslice._M_empty()) {
1354.1439 -      _Gslice_Iter __i(_M_gslice);
1354.1440 -      do _M_array[__i._M_1d_idx] <<= __x[__i._M_step]; while(__i._M_incr());
1354.1441 -    }
1354.1442 -  }
1354.1443 -
1354.1444 -  void operator>>= (const valarray<value_type>& __x) const {
1354.1445 -    if (!_M_gslice._M_empty()) {
1354.1446 -      _Gslice_Iter __i(_M_gslice);
1354.1447 -      do _M_array[__i._M_1d_idx] >>= __x[__i._M_step]; while(__i._M_incr());
1354.1448 -    }
1354.1449 -  }
1354.1450 -
1354.1451 -  void operator= (const value_type& __c) {
1354.1452 -    if (!_M_gslice._M_empty()) {
1354.1453 -      _Gslice_Iter __i(_M_gslice);
1354.1454 -      do _M_array[__i._M_1d_idx] = __c; while(__i._M_incr());
1354.1455 -    }
1354.1456 -  }
1354.1457 -
1354.1458 -  ~gslice_array() {}
1354.1459 -
1354.1460 -private:                        
1354.1461 -  gslice_array(gslice __gslice, valarray<_Tp>& __array)
1354.1462 -    : _M_gslice(__gslice), _M_array(__array)
1354.1463 -    {}
1354.1464 -
1354.1465 -  gslice                _M_gslice;
1354.1466 -  valarray<value_type>& _M_array;
1354.1467 -
1354.1468 -private:                        // Disable assignment
1354.1469 -  void operator=(const gslice_array<_Tp>&);
1354.1470 -};
1354.1471 -
1354.1472 -// valarray member functions dealing with gslice and gslice_array.  Note
1354.1473 -// that it is illegal (behavior is undefined) to construct a gslice_array
1354.1474 -// from a degenerate gslice.
1354.1475 -
1354.1476 -template <class _Tp>
1354.1477 -inline valarray<_Tp>::valarray(const gslice_array<_Tp>& __x)
1354.1478 -  : _Valarray_base<_Tp>(__x._M_gslice._M_size())
1354.1479 -{
1354.1480 -  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1354.1481 -          _Is_Trivial;
1354.1482 -  _M_initialize(_Is_Trivial());  
1354.1483 -  *this = __x;
1354.1484 -}
1354.1485 -
1354.1486 -template <class _Tp>
1354.1487 -inline gslice_array<_Tp> valarray<_Tp>::operator[](const gslice& __slice) {
1354.1488 -  return gslice_array<_Tp>(__slice, *this);
1354.1489 -}
1354.1490 -
1354.1491 -
1354.1492 -//----------------------------------------------------------------------
1354.1493 -// mask_array
1354.1494 -
1354.1495 -template <class _Tp>
1354.1496 -class mask_array {
1354.1497 -  friend class valarray<_Tp>;
1354.1498 -public:
1354.1499 -  typedef _Tp value_type;
1354.1500 -
1354.1501 -  void operator=(const valarray<value_type>& __x) const {
1354.1502 -    size_t __idx = 0;
1354.1503 -#ifdef __SYMBIAN32__    
1354.1504 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1505 -#else    
1354.1506 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1507 -#endif // __SYMBIAN32__    
1354.1508 -      if (_M_mask[__i]) _M_array[__i] = __x[__idx++];
1354.1509 -  }
1354.1510 -
1354.1511 -  void operator*=(const valarray<value_type>& __x) const {
1354.1512 -    size_t __idx = 0;
1354.1513 -#ifdef __SYMBIAN32__    
1354.1514 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1515 -#else    
1354.1516 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1517 -#endif // __SYMBIAN32__    
1354.1518 -      if (_M_mask[__i]) _M_array[__i] *= __x[__idx++];
1354.1519 -  }
1354.1520 -
1354.1521 -  void operator/=(const valarray<value_type>& __x) const {
1354.1522 -    size_t __idx = 0;
1354.1523 -#ifdef __SYMBIAN32__    
1354.1524 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1525 -#else    
1354.1526 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1527 -#endif //__SYMBIAN32__    
1354.1528 -      if (_M_mask[__i]) _M_array[__i] /= __x[__idx++];
1354.1529 -  }
1354.1530 -
1354.1531 -  void operator%=(const valarray<value_type>& __x) const {
1354.1532 -    size_t __idx = 0;
1354.1533 -#ifdef __SYMBIAN32__    
1354.1534 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1535 -#else        
1354.1536 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1537 -#endif    
1354.1538 -      if (_M_mask[__i]) _M_array[__i] %= __x[__idx++];
1354.1539 -  }
1354.1540 -
1354.1541 -  void operator+=(const valarray<value_type>& __x) const {
1354.1542 -    size_t __idx = 0;
1354.1543 -#ifdef __SYMBIAN32__    
1354.1544 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1545 -#else            
1354.1546 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1547 -#endif    
1354.1548 -      if (_M_mask[__i]) _M_array[__i] += __x[__idx++];
1354.1549 -  }
1354.1550 -
1354.1551 -  void operator-=(const valarray<value_type>& __x) const {
1354.1552 -    size_t __idx = 0;
1354.1553 -#ifdef __SYMBIAN32__    
1354.1554 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1555 -#else            
1354.1556 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1557 -#endif //__SYMBIAN32__    
1354.1558 -      if (_M_mask[__i]) _M_array[__i] -= __x[__idx++];
1354.1559 -  }
1354.1560 -  
1354.1561 -  void operator^=(const valarray<value_type>& __x) const {
1354.1562 -    size_t __idx = 0;
1354.1563 -#ifdef __SYMBIAN32__    
1354.1564 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1565 -#else            
1354.1566 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1567 -#endif // __SYMBIAN32__    
1354.1568 -      if (_M_mask[__i]) _M_array[__i] ^= __x[__idx++];
1354.1569 -  }
1354.1570 -
1354.1571 -  void operator&=(const valarray<value_type>& __x) const {
1354.1572 -    size_t __idx = 0;
1354.1573 -#ifdef __SYMBIAN32__    
1354.1574 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1575 -#else            
1354.1576 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1577 -#endif // __SYMBIAN32__    
1354.1578 -      if (_M_mask[__i]) _M_array[__i] &= __x[__idx++];
1354.1579 -  }
1354.1580 -
1354.1581 -  void operator|=(const valarray<value_type>& __x) const {
1354.1582 -    size_t __idx = 0;
1354.1583 -#ifdef __SYMBIAN32__    
1354.1584 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1585 -#else            
1354.1586 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1587 -#endif // __SYMBIAN32__    
1354.1588 -      if (_M_mask[__i]) _M_array[__i] |= __x[__idx++];
1354.1589 -  }
1354.1590 -
1354.1591 -  void operator<<=(const valarray<value_type>& __x) const {
1354.1592 -    size_t __idx = 0;
1354.1593 -#ifdef __SYMBIAN32__    
1354.1594 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1595 -#else            
1354.1596 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1597 -#endif // __SYMBIAN32__    
1354.1598 -      if (_M_mask[__i]) _M_array[__i] <<= __x[__idx++];
1354.1599 -  }
1354.1600 -
1354.1601 -  void operator>>=(const valarray<value_type>& __x) const {
1354.1602 -    size_t __idx = 0;
1354.1603 -#ifdef __SYMBIAN32__    
1354.1604 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1605 -#else            
1354.1606 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1607 -#endif // __SYMBIAN32__    
1354.1608 -      if (_M_mask[__i]) _M_array[__i] >>= __x[__idx++];
1354.1609 -  }
1354.1610 -
1354.1611 -  void operator=(const value_type& __c) const {
1354.1612 -#ifdef __SYMBIAN32__    
1354.1613 -    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1354.1614 -#else          
1354.1615 -    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1354.1616 -#endif // __SYMBIAN32__    
1354.1617 -      if (_M_mask[__i]) _M_array[__i] = __c;
1354.1618 -  }
1354.1619 -
1354.1620 -  ~mask_array() {}
1354.1621 -
1354.1622 -  // Extension: number of true values in the mask
1354.1623 -  size_t _M_num_true() const {
1354.1624 -    size_t __result = 0;
1354.1625 -    for (size_t __i = 0; __i < _M_mask.size(); ++__i)
1354.1626 -      if (_M_mask[__i]) ++__result;
1354.1627 -    return __result;
1354.1628 -  }
1354.1629 -
1354.1630 -private:
1354.1631 -  mask_array(const _Valarray_bool& __mask, valarray<_Tp>& __array)
1354.1632 -    : _M_mask(__mask), _M_array(__array)
1354.1633 -    {}
1354.1634 -
1354.1635 -  _Valarray_bool _M_mask;
1354.1636 -  valarray<_Tp>& _M_array;
1354.1637 -
1354.1638 -private:                        // Disable assignment
1354.1639 -  void operator=(const mask_array<_Tp>&);
1354.1640 -};
1354.1641 -
1354.1642 -// valarray member functions dealing with mask_array
1354.1643 -
1354.1644 -template <class _Tp>
1354.1645 -inline valarray<_Tp>::valarray(const mask_array<_Tp>& __x)
1354.1646 -  : _Valarray_base<_Tp>(__x._M_num_true())
1354.1647 -{
1354.1648 -  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1354.1649 -          _Is_Trivial;
1354.1650 -  _M_initialize(_Is_Trivial());  
1354.1651 -  *this = __x;
1354.1652 -}
1354.1653 -
1354.1654 -// Behavior is undefined if __x._M_num_true() != this->size()
1354.1655 -template <class _Tp>
1354.1656 -inline valarray<_Tp>& valarray<_Tp>::operator=(const mask_array<_Tp>& __x) {
1354.1657 -  size_t __idx = 0;
1354.1658 -  for (size_t __i = 0; __i < __x._M_array.size(); ++__i)
1354.1659 -    if (__x._M_mask[__i]) 
1354.1660 -    {
1354.1661 -#ifdef __SYMBIAN32__
1354.1662 -    if(__idx < this->_M_size)
1354.1663 -        (*this)[__idx++] = __x._M_array[__i];
1354.1664 -    else
1354.1665 -        break;
1354.1666 -#else
1354.1667 -   (*this)[__idx++] = __x._M_array[__i];
1354.1668 -#endif
1354.1669 -    }
1354.1670 -  return *this;
1354.1671 -}
1354.1672 -
1354.1673 -template <class _Tp>
1354.1674 -inline mask_array<_Tp> valarray<_Tp>::operator[](const _Valarray_bool& __mask)
1354.1675 -{
1354.1676 -  return mask_array<_Tp>(__mask, *this);
1354.1677 -}
1354.1678 -
1354.1679 -
1354.1680 -//----------------------------------------------------------------------
1354.1681 -// indirect_array
1354.1682 -
1354.1683 -template <class _Tp>
1354.1684 -class indirect_array {
1354.1685 -  friend class valarray<_Tp>;
1354.1686 -public:
1354.1687 -  typedef _Tp value_type;
1354.1688 -
1354.1689 -  void operator=(const valarray<value_type>& __x) const {
1354.1690 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1691 -      _M_array[_M_addr[__i]] = __x[__i];
1354.1692 -  }
1354.1693 -
1354.1694 -  void operator*=(const valarray<value_type>& __x) const {
1354.1695 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1696 -      _M_array[_M_addr[__i]] *= __x[__i];
1354.1697 -  }
1354.1698 -
1354.1699 -  void operator/=(const valarray<value_type>& __x) const {
1354.1700 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1701 -      _M_array[_M_addr[__i]] /= __x[__i];
1354.1702 -  }
1354.1703 -
1354.1704 -  void operator%=(const valarray<value_type>& __x) const {
1354.1705 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1706 -      _M_array[_M_addr[__i]] %= __x[__i];
1354.1707 -  }
1354.1708 -
1354.1709 -  void operator+=(const valarray<value_type>& __x) const {
1354.1710 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1711 -      _M_array[_M_addr[__i]] += __x[__i];
1354.1712 -  }
1354.1713 -
1354.1714 -  void operator-=(const valarray<value_type>& __x) const {
1354.1715 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1716 -      _M_array[_M_addr[__i]] -= __x[__i];
1354.1717 -  }
1354.1718 -
1354.1719 -  void operator^=(const valarray<value_type>& __x) const {
1354.1720 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1721 -      _M_array[_M_addr[__i]] ^= __x[__i];
1354.1722 -  }
1354.1723 -
1354.1724 -  void operator&=(const valarray<value_type>& __x) const {
1354.1725 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1726 -      _M_array[_M_addr[__i]] &= __x[__i];
1354.1727 -  }
1354.1728 -
1354.1729 -  void operator|=(const valarray<value_type>& __x) const {
1354.1730 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1731 -      _M_array[_M_addr[__i]] |= __x[__i];
1354.1732 -  }
1354.1733 -
1354.1734 -  void operator<<=(const valarray<value_type>& __x) const {
1354.1735 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1736 -      _M_array[_M_addr[__i]] <<= __x[__i];
1354.1737 -  }
1354.1738 -
1354.1739 -  void operator>>=(const valarray<value_type>& __x) const {
1354.1740 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1741 -      _M_array[_M_addr[__i]] >>= __x[__i];
1354.1742 -  }
1354.1743 -
1354.1744 -  void operator=(const value_type& __c) const {
1354.1745 -    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1354.1746 -      _M_array[_M_addr[__i]] = __c;
1354.1747 -  }
1354.1748 -
1354.1749 -  ~indirect_array() {}
1354.1750 -
1354.1751 -private:
1354.1752 -  indirect_array(const _Valarray_size_t& __addr, valarray<_Tp>& __array)
1354.1753 -    : _M_addr(__addr), _M_array(__array)
1354.1754 -    {}
1354.1755 -
1354.1756 -  _Valarray_size_t _M_addr;
1354.1757 -  valarray<_Tp>&   _M_array;
1354.1758 -
1354.1759 -private:                        // Disable assignment
1354.1760 -  void operator=(const indirect_array<_Tp>&);
1354.1761 -};
1354.1762 -
1354.1763 -// valarray member functions dealing with indirect_array
1354.1764 -
1354.1765 -template <class _Tp>
1354.1766 -inline valarray<_Tp>::valarray(const indirect_array<_Tp>& __x)
1354.1767 -  : _Valarray_base<_Tp>(__x._M_addr.size())
1354.1768 -{
1354.1769 -  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1354.1770 -          _Is_Trivial;
1354.1771 -  _M_initialize(_Is_Trivial());  
1354.1772 -  *this = __x;
1354.1773 -}
1354.1774 -
1354.1775 -
1354.1776 -template <class _Tp>
1354.1777 -inline indirect_array<_Tp>
1354.1778 -valarray<_Tp>::operator[](const _Valarray_size_t& __addr)
1354.1779 -{
1354.1780 -  return indirect_array<_Tp>(__addr, *this);
1354.1781 -}
1354.1782 -
1354.1783 -_STLP_END_NAMESPACE
1354.1784 -
1354.1785 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1354.1786 -#  include <stl/_valarray.c>
1354.1787 -# endif
1354.1788 -
1354.1789 -#endif /* _STLP_VALARRAY */
1354.1790 -
1354.1791 -
1354.1792 -// Local Variables:
1354.1793 -// mode:C++
1354.1794 -// End:
  1355.1 --- a/epoc32/include/stdapis/stlport/stl/_vector.c	Tue Mar 16 16:12:26 2010 +0000
  1355.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1355.3 @@ -1,137 +0,0 @@
  1355.4 -/*
  1355.5 - *
  1355.6 - *
  1355.7 - * Copyright (c) 1994
  1355.8 - * Hewlett-Packard Company
  1355.9 - *
 1355.10 - * Copyright (c) 1996,1997
 1355.11 - * Silicon Graphics Computer Systems, Inc.
 1355.12 - *
 1355.13 - * Copyright (c) 1997
 1355.14 - * Moscow Center for SPARC Technology
 1355.15 - *
 1355.16 - * Copyright (c) 1999 
 1355.17 - * Boris Fomitchev
 1355.18 - *
 1355.19 - * This material is provided "as is", with absolutely no warranty expressed
 1355.20 - * or implied. Any use is at your own risk.
 1355.21 - *
 1355.22 - * Permission to use or copy this software for any purpose is hereby granted 
 1355.23 - * without fee, provided the above notices are retained on all copies.
 1355.24 - * Permission to modify the code and to distribute modified code is granted,
 1355.25 - * provided the above notices are retained, and a notice that the code was
 1355.26 - * modified is included with the above copyright notice.
 1355.27 - *
 1355.28 - */
 1355.29 -#ifndef _STLP_VECTOR_C
 1355.30 -#define _STLP_VECTOR_C
 1355.31 -
 1355.32 -# if !defined (_STLP_INTERNAL_VECTOR_H)
 1355.33 -#  include <stl/_vector.h>
 1355.34 -# endif
 1355.35 -
 1355.36 -# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1355.37 -#  define iterator       _Tp*
 1355.38 -#  define size_type           size_t
 1355.39 -# endif
 1355.40 -
 1355.41 -#  undef  vector
 1355.42 -#  define vector __WORKAROUND_DBG_RENAME(vector)
 1355.43 -
 1355.44 -_STLP_BEGIN_NAMESPACE
 1355.45 -
 1355.46 -template <class _Tp, class _Alloc>
 1355.47 -void 
 1355.48 -__vector__<_Tp, _Alloc>::reserve(size_type __n) {
 1355.49 -  if (capacity() < __n) {
 1355.50 -    const size_type __old_size = size();
 1355.51 -    pointer __tmp;
 1355.52 -    if (this->_M_start) {
 1355.53 -      __tmp = _M_allocate_and_copy(__n, this->_M_start, this->_M_finish);
 1355.54 -      _M_clear();
 1355.55 -    } else {
 1355.56 -      __tmp = this->_M_end_of_storage.allocate(__n);
 1355.57 -    }
 1355.58 -    _M_set(__tmp, __tmp + __old_size, __tmp + __n);
 1355.59 -  }
 1355.60 -}
 1355.61 -
 1355.62 -template <class _Tp, class _Alloc>
 1355.63 -void 
 1355.64 -__vector__<_Tp, _Alloc>::_M_fill_insert(
 1355.65 -				    iterator __position, 
 1355.66 -				    size_type __n, const _Tp& __x) {
 1355.67 -  if (__n != 0) {
 1355.68 -    if (size_type(this->_M_end_of_storage._M_data - this->_M_finish) >= __n) {
 1355.69 -      _Tp __x_copy = __x;
 1355.70 -      const size_type __elems_after = this->_M_finish - __position;
 1355.71 -      pointer __old_finish = this->_M_finish;
 1355.72 -      if (__elems_after > __n) {
 1355.73 -        __uninitialized_copy(this->_M_finish - __n, this->_M_finish, this->_M_finish, _IsPODType());
 1355.74 -        this->_M_finish += __n;
 1355.75 -        __copy_backward_ptrs(__position, __old_finish - __n, __old_finish, _TrivialAss());
 1355.76 -        _STLP_STD::fill(__position, __position + __n, __x_copy);
 1355.77 -      }
 1355.78 -      else {
 1355.79 -        uninitialized_fill_n(this->_M_finish, __n - __elems_after, __x_copy);
 1355.80 -        this->_M_finish += __n - __elems_after;
 1355.81 -        __uninitialized_copy(__position, __old_finish, this->_M_finish, _IsPODType());
 1355.82 -        this->_M_finish += __elems_after;
 1355.83 -        _STLP_STD::fill(__position, __old_finish, __x_copy);
 1355.84 -      }
 1355.85 -    }
 1355.86 -    else 
 1355.87 -      _M_insert_overflow(__position, __x, _IsPODType(), __n);
 1355.88 -  }
 1355.89 -}
 1355.90 -
 1355.91 -template <class _Tp, class _Alloc>
 1355.92 -__vector__<_Tp,_Alloc>& 
 1355.93 -__vector__<_Tp,_Alloc>::operator=(const __vector__<_Tp, _Alloc>& __x)
 1355.94 -{
 1355.95 -  if (&__x != this) {
 1355.96 -    const size_type __xlen = __x.size();
 1355.97 -    if (__xlen > capacity()) {
 1355.98 -      pointer __tmp = _M_allocate_and_copy(__xlen, (const_pointer)__x._M_start+0, (const_pointer)__x._M_finish+0);
 1355.99 -      _M_clear();
1355.100 -      this->_M_start = __tmp;
1355.101 -      this->_M_end_of_storage._M_data = this->_M_start + __xlen;
1355.102 -    }
1355.103 -    else if (size() >= __xlen) {
1355.104 -      pointer __i = __copy_ptrs((const_pointer)__x._M_start+0, (const_pointer)__x._M_finish+0, (pointer)this->_M_start, _TrivialAss());
1355.105 -      _STLP_STD::_Destroy(__i, this->_M_finish);
1355.106 -    }
1355.107 -    else {
1355.108 -      __copy_ptrs((const_pointer)__x._M_start, (const_pointer)__x._M_start + size(), (pointer)this->_M_start, _TrivialAss());
1355.109 -      __uninitialized_copy((const_pointer)__x._M_start + size(), (const_pointer)__x._M_finish+0, this->_M_finish, _IsPODType());
1355.110 -    }
1355.111 -    this->_M_finish = this->_M_start + __xlen;
1355.112 -  }
1355.113 -  return *this;
1355.114 -}
1355.115 -
1355.116 -template <class _Tp, class _Alloc>
1355.117 -void __vector__<_Tp, _Alloc>::_M_fill_assign(size_t __n, const _Tp& __val) {
1355.118 -  if (__n > capacity()) {
1355.119 -    __vector__<_Tp, _Alloc> __tmp(__n, __val, get_allocator());
1355.120 -    __tmp.swap(*this);
1355.121 -  }
1355.122 -  else if (__n > size()) {
1355.123 -    fill(begin(), end(), __val);
1355.124 -    this->_M_finish = _STLP_STD::uninitialized_fill_n(this->_M_finish, __n - size(), __val);
1355.125 -  }
1355.126 -  else
1355.127 -    erase(_STLP_STD::fill_n(begin(), __n, __val), end());
1355.128 -}
1355.129 -
1355.130 -_STLP_END_NAMESPACE
1355.131 -
1355.132 -# undef size_type
1355.133 -# undef iterator
1355.134 -# undef vector
1355.135 -
1355.136 -#endif /*  _STLP_VECTOR_C */
1355.137 -
1355.138 -      // Local Variables:
1355.139 -	// mode:C++
1355.140 -	// End:
  1356.1 --- a/epoc32/include/stdapis/stlport/stl/c_locale.h	Tue Mar 16 16:12:26 2010 +0000
  1356.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1356.3 @@ -1,459 +0,0 @@
  1356.4 -/*
  1356.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1356.6 - *
  1356.7 - * Copyright (c) 1999
  1356.8 - * Silicon Graphics Computer Systems, Inc.
  1356.9 - *
 1356.10 - * Copyright (c) 1999 
 1356.11 - * Boris Fomitchev
 1356.12 - *
 1356.13 - * This material is provided "as is", with absolutely no warranty expressed
 1356.14 - * or implied. Any use is at your own risk.
 1356.15 - *
 1356.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1356.17 - * without fee, provided the above notices are retained on all copies.
 1356.18 - * Permission to modify the code and to distribute modified code is granted,
 1356.19 - * provided the above notices are retained, and a notice that the code was
 1356.20 - * modified is included with the above copyright notice.
 1356.21 - *
 1356.22 - */ 
 1356.23 -
 1356.24 -
 1356.25 -#ifndef _STLP_C_LOCALE_H
 1356.26 -# define _STLP_C_LOCALE_H
 1356.27 -
 1356.28 -/*
 1356.29 - * Implementation dependent definitions
 1356.30 - */
 1356.31 -#ifdef __cplusplus
 1356.32 -#  include <stl/_config.h>
 1356.33 -#endif
 1356.34 -
 1356.35 -#if defined(__sgi) 
 1356.36 -# if defined(ROOT_65) /* IRIX 6.5.x */
 1356.37 -#  include <sgidefs.h>
 1356.38 -#  include <standards.h>
 1356.39 -#  include <wchar.h>
 1356.40 -#  include <ctype.h>
 1356.41 -
 1356.42 -# else
 1356.43 -                  /* IRIX pre-6.5 */
 1356.44 -#  include <sgidefs.h>
 1356.45 -#  include <standards.h>
 1356.46 -
 1356.47 -#  if !defined(_SIZE_T) && !defined(_SIZE_T_)
 1356.48 -#   define _SIZE_T
 1356.49 -#    if (_MIPS_SZLONG == 32)
 1356.50 -typedef unsigned int    size_t;
 1356.51 -#    endif
 1356.52 -#    if (_MIPS_SZLONG == 64)
 1356.53 -typedef unsigned long   size_t;
 1356.54 -#    endif
 1356.55 -#   endif
 1356.56 -
 1356.57 -#   ifndef _WCHAR_T
 1356.58 -#    define _WCHAR_T
 1356.59 -#     if (_MIPS_SZLONG == 32)
 1356.60 -typedef long wchar_t;
 1356.61 -#     endif
 1356.62 -#     if (_MIPS_SZLONG == 64)
 1356.63 -typedef __int32_t wchar_t;
 1356.64 -#     endif
 1356.65 -#    endif /* _WCHAR_T */
 1356.66 -
 1356.67 -#    ifndef _WINT_T
 1356.68 -#     define _WINT_T
 1356.69 -#     if (_MIPS_SZLONG == 32)
 1356.70 -        typedef long    wint_t;
 1356.71 -#     endif
 1356.72 -#     if (_MIPS_SZLONG == 64)
 1356.73 -        typedef __int32_t wint_t;
 1356.74 -#     endif
 1356.75 -#    endif /* _WINT_T */
 1356.76 -
 1356.77 -#    ifndef _MBSTATE_T
 1356.78 -#    define _MBSTATE_T
 1356.79 -#    ifdef _MSC_VER
 1356.80 -		typedef int		mbstate_t;
 1356.81 -#    else
 1356.82 -        typedef char    mbstate_t;
 1356.83 -#    endif
 1356.84 -#    endif /* _MBSTATE_T */
 1356.85 -
 1356.86 -#   endif /* ROOT65 */ 
 1356.87 -
 1356.88 -#  else /* __sgi */
 1356.89 -
 1356.90 -# ifdef __cplusplus
 1356.91 -# ifndef _STLP_CSTDDEF
 1356.92 -#  include <cstddef>
 1356.93 -# endif
 1356.94 -# ifndef _STLP_CWCHAR_H
 1356.95 -#  include <stl/_cwchar.h>
 1356.96 -# endif
 1356.97 -# ifndef _STLP_CCTYPE
 1356.98 -#  include <cctype>
 1356.99 -# endif
1356.100 -# else
1356.101 -#  include <stddef.h>
1356.102 -#  include <wchar.h>
1356.103 -#  include <ctype.h>
1356.104 -# endif
1356.105 -
1356.106 -#endif /* __sgi */
1356.107 -
1356.108 -/*
1356.109 - * GENERAL FRAMEWORK
1356.110 - */
1356.111 -
1356.112 -struct _Locale_ctype;
1356.113 -struct _Locale_numeric;
1356.114 -struct _Locale_time;
1356.115 -struct _Locale_collate;
1356.116 -struct _Locale_monetary;
1356.117 -struct _Locale_messages;
1356.118 -
1356.119 -/*
1356.120 -  Bitmask macros.  
1356.121 -*/
1356.122 -
1356.123 -/*
1356.124 - * For narrow characters, we expose the lookup table interface.
1356.125 - */
1356.126 -
1356.127 -/* Internal bitmask macros, os-specific. */
1356.128 -
1356.129 -#if defined(__sgi)              /* IRIX */
1356.130 -
1356.131 -#define _Locale_S      0x00000008      /* Spacing character */
1356.132 -#define _Locale_A      0x00004000      /* Alphabetical characters only */
1356.133 -#define _Locale_B      0x00000040      /* Obsolete: was space char only */
1356.134 -#define _Locale_PR     0x00008000      /* Printable characters only */
1356.135 -#define _Locale_G      0x40000000      /* Graphic characters only */
1356.136 -#define _Locale_BL     0x80000000      /* The blank character class */
1356.137 -
1356.138 -/* Public bitmask macros, must be defined for every OS. These values, of
1356.139 - * course, are specific to IRIX. */
1356.140 -
1356.141 -#define _Locale_CNTRL  0x00000020      /* Control character */
1356.142 -#define _Locale_UPPER  0x00000001      /* Upper case */
1356.143 -#define _Locale_LOWER  0x00000002      /* Lower case */
1356.144 -#define _Locale_DIGIT  0x00000004      /* Numeral (digit) */
1356.145 -#define _Locale_XDIGIT 0x00000080      /* heXadecimal digit */
1356.146 -#define _Locale_PUNCT  0x00000010      /* Punctuation */
1356.147 -#define _Locale_SPACE  (_Locale_S | _Locale_BL)
1356.148 -#define _Locale_PRINT  (_Locale_PUNCT | _Locale_UPPER | _Locale_LOWER | \
1356.149 -                        _Locale_DIGIT | _Locale_A | _Locale_XDIGIT | \
1356.150 -                        _Locale_PR)
1356.151 -#define _Locale_ALPHA  _Locale_A
1356.152 -
1356.153 -/*
1356.154 -* All of these except for graph and blank are from the C standard;
1356.155 -* graph and blank are XPG4.  (graph in XPG4 doesn't mean quite the
1356.156 -* same thing as graph in the C++ library)
1356.157 -*/
1356.158 -
1356.159 -#endif /* IRIX */
1356.160 -
1356.161 -
1356.162 -#if defined( __Lynx__ )
1356.163 - /* azov: On Lynx isalpha defined as (_U | _L), which gives us a mask 
1356.164 -  * unusable in ctype_table. So we have to redefine it and use hard-coded 
1356.165 -  * numbers (to avoid potential clashes if system headers change).
1356.166 -  *
1356.167 -  * P.S. Actually, I see no reason in using platform-specific masks - 
1356.168 -  * having just one set of masks for all platforms should work just as
1356.169 -  * well - we only use them internally and they don't have to be equal 
1356.170 -  * to whatever defined in local ctype.h
1356.171 -  *
1356.172 -  */ 
1356.173 -#   define _Locale_CNTRL  040     /* _C, Control character */
1356.174 -#   define _Locale_UPPER  01      /* _U, Upper case */
1356.175 -#   define _Locale_LOWER  02      /* _L, Lower case */
1356.176 -#   define _Locale_DIGIT  04      /* _N, Numeral (digit) */
1356.177 -#   define _Locale_XDIGIT 0200    /* _X, heXadecimal digit */
1356.178 -#   define _Locale_PUNCT  020     /* _P, Punctuation */
1356.179 -#   define _Locale_SPACE  010     /* _S, Spacing */
1356.180 -#   define _Locale_ALPHA  040000  /* none, Alphanumerical */
1356.181 -#   define _Locale_PRINT  (_Locale_PUNCT | _Locale_UPPER | _Locale_LOWER | \
1356.182 -                           _Locale_DIGIT | _Locale_ALPHA | _Locale_XDIGIT |\
1356.183 -                           _Locale_SPACE ) /* Printable */
1356.184 -# endif /* __Lynx__ */
1356.185 -
1356.186 -#if defined(__GNUC__) || defined (__BORLANDC__) || defined (__COMO__)
1356.187 -
1356.188 -# if defined (__CYGWIN__)
1356.189 -
1356.190 -#  define _Locale_CNTRL  040
1356.191 -#  define _Locale_UPPER  02
1356.192 -#  define _Locale_LOWER  01
1356.193 -#  define _Locale_DIGIT  04
1356.194 -#  define _Locale_XDIGIT ( 0100 | _Locale_DIGIT )
1356.195 -#  define _Locale_PUNCT  020
1356.196 -#  define _Locale_SPACE  010
1356.197 -#  define _Locale_ALPHA  (_Locale_UPPER | _Locale_LOWER)
1356.198 -#  define _Locale_PRINT  (_Locale_ALPHA | _Locale_DIGIT | _Locale_PUNCT | 0200 )
1356.199 -
1356.200 -# elif defined (__FreeBSD__)
1356.201 -
1356.202 -# define _Locale_CNTRL _CTYPE_C
1356.203 -# define _Locale_UPPER _CTYPE_U
1356.204 -# define _Locale_LOWER _CTYPE_L
1356.205 -# define _Locale_DIGIT _CTYPE_D
1356.206 -# define _Locale_XDIGIT _CTYPE_X
1356.207 -# define _Locale_PUNCT _CTYPE_P
1356.208 -# define _Locale_SPACE _CTYPE_S
1356.209 -# define _Locale_PRINT _CTYPE_R
1356.210 -# define _Locale_ALPHA _CTYPE_A
1356.211 -
1356.212 -# elif defined (__NetBSD__) || defined (__amigaos__)
1356.213 - 
1356.214 -#  define _Locale_CNTRL _C
1356.215 -#  define _Locale_UPPER _U
1356.216 -#  define _Locale_LOWER _L
1356.217 -#  define _Locale_DIGIT _N
1356.218 -#  define _Locale_XDIGIT (_N|_X)
1356.219 -#  define _Locale_PUNCT _P
1356.220 -#  define _Locale_SPACE _S
1356.221 -#  define _Locale_PRINT (_P|_U|_L|_N|_B)
1356.222 -#  define _Locale_ALPHA (_U|_L)
1356.223 -# elif defined(__EMX__) /* OS/2 with emx runtime */
1356.224 -#  define _Locale_CNTRL _CNTRL
1356.225 -#  define _Locale_UPPER _UPPER
1356.226 -#  define _Locale_LOWER _LOWER
1356.227 -#  define _Locale_DIGIT _DIGIT
1356.228 -#  define _Locale_XDIGIT _XDIGIT
1356.229 -#  define _Locale_PUNCT _PUNCT
1356.230 -#  define _Locale_SPACE _SPACE
1356.231 -#  define _Locale_PRINT _PRINT
1356.232 -#  define _Locale_ALPHA (_UPPER|_LOWER)
1356.233 -
1356.234 -# elif defined(_STLP_USE_GLIBC) /* linux, using the gnu compiler */
1356.235 -
1356.236 -/* This section uses macros defined in the gnu libc ctype.h header */
1356.237 -
1356.238 -#  define _Locale_CNTRL  _IScntrl
1356.239 -#  define _Locale_UPPER  _ISupper
1356.240 -#  define _Locale_LOWER  _ISlower
1356.241 -#  define _Locale_DIGIT  _ISdigit
1356.242 -#  define _Locale_XDIGIT _ISxdigit
1356.243 -#  define _Locale_PUNCT  _ISpunct
1356.244 -#  define _Locale_SPACE  _ISspace
1356.245 -#  define _Locale_PRINT  _ISprint
1356.246 -#  define _Locale_ALPHA  _ISalpha
1356.247 -
1356.248 -#  endif /* GLIBC */
1356.249 -
1356.250 -#endif /* gnu */
1356.251 -
1356.252 -#if ( defined(__sun) && defined (__SVR4) ) \
1356.253 -    || (defined (__digital__) && defined (__unix__)) \
1356.254 -    || defined(_AIX)
1356.255 -/* fbp : condition from AT&T code*/
1356.256 -#if !(defined(__XPG4_CHAR_CLASS__) || defined(_XPG4_2) || \
1356.257 -    (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 == 4))) && ! defined (_ISCNTRL)
1356.258 -  /* fbp : on 2.5.1, the defines are different ;( */
1356.259 -  // # if ( defined (__sun) && defined (__SVR4) && ! defined (_ISCNTRL) )
1356.260 -#   define _ISCNTRL _C
1356.261 -#   define _ISUPPER _U
1356.262 -#   define _ISLOWER _L
1356.263 -#   define _ISDIGIT _N
1356.264 -#   define _ISXDIGIT _X
1356.265 -#   define _ISPUNCT _P
1356.266 -#   define _ISSPACE _S
1356.267 -#   define _ISPRINT (_P | _U | _L | _N | _B)
1356.268 -#   define _ISALPHA (_U | _L)
1356.269 -#  endif 
1356.270 -
1356.271 -#  define _Locale_CNTRL  _ISCNTRL
1356.272 -#  define _Locale_UPPER  _ISUPPER
1356.273 -#  define _Locale_LOWER  _ISLOWER
1356.274 -#  define _Locale_DIGIT  _ISDIGIT
1356.275 -#  define _Locale_XDIGIT _ISXDIGIT
1356.276 -#  define _Locale_PUNCT  _ISPUNCT
1356.277 -#  define _Locale_SPACE  _ISSPACE
1356.278 -#  define _Locale_PRINT  _ISPRINT
1356.279 -#  define _Locale_ALPHA  _ISALPHA
1356.280 -# elif defined(__SYMBIAN32__)
1356.281 -# define _Locale_CNTRL _CTYPE_C
1356.282 -# define _Locale_UPPER _CTYPE_U
1356.283 -# define _Locale_LOWER _CTYPE_L
1356.284 -# define _Locale_DIGIT _CTYPE_D
1356.285 -# define _Locale_XDIGIT _CTYPE_X
1356.286 -# define _Locale_PUNCT _CTYPE_P
1356.287 -# define _Locale_SPACE _CTYPE_S
1356.288 -# define _Locale_PRINT _CTYPE_R
1356.289 -# define _Locale_ALPHA _CTYPE_A
1356.290 -
1356.291 -#elif defined (__MWERKS__)
1356.292 -#  define _Locale_CNTRL  __control_char
1356.293 -#  define _Locale_UPPER  __upper_case
1356.294 -#  define _Locale_LOWER  __lower_case
1356.295 -#  define _Locale_DIGIT  __digit
1356.296 -#  define _Locale_XDIGIT __hex_digit
1356.297 -#  define _Locale_PUNCT  __punctuation
1356.298 -#  define _Locale_SPACE  __space_char
1356.299 -#  define _Locale_PRINT  __printable
1356.300 -#  define _Locale_ALPHA  __alphanumeric
1356.301 -#elif defined (__BORLANDC__)
1356.302 -#  define _Locale_CNTRL  _IS_CTL
1356.303 -#  define _Locale_UPPER  _IS_UPP
1356.304 -#  define _Locale_LOWER  _IS_LOW
1356.305 -#  define _Locale_DIGIT  _IS_DIG
1356.306 -#  define _Locale_XDIGIT _IS_HEX
1356.307 -#  define _Locale_PUNCT  _IS_PUN
1356.308 -#  define _Locale_SPACE  _IS_SP
1356.309 -#  define _Locale_PRINT  (_IS_SP|_IS_PUN|_IS_UPP|_IS_LOW|_IS_DIG)
1356.310 -#  define _Locale_ALPHA  _IS_ALPHA
1356.311 -#elif defined (_MSC_VER) || defined (__MINGW32__)
1356.312 -#  define _Locale_CNTRL  _CONTROL
1356.313 -#  define _Locale_UPPER  _UPPER
1356.314 -#  define _Locale_LOWER  _LOWER
1356.315 -#  define _Locale_DIGIT  _DIGIT
1356.316 -#  define _Locale_XDIGIT _HEX
1356.317 -#  define _Locale_PUNCT  _PUNCT
1356.318 -#  define _Locale_SPACE  _SPACE
1356.319 -#  define _Locale_PRINT  (_ALPHA | _DIGIT | _BLANK | _PUNCT)
1356.320 -// is this one has to be so complex ?  
1356.321 -#  define _Locale_ALPHA  ( _ALPHA & ~ (_UPPER | _LOWER )) 
1356.322 -#elif defined (__DMC__)
1356.323 -#  define _Locale_CNTRL  _CONTROL
1356.324 -#  define _Locale_UPPER  _UPPER
1356.325 -#  define _Locale_LOWER  _LOWER
1356.326 -#  define _Locale_DIGIT  _DIGIT
1356.327 -#  define _Locale_XDIGIT _HEX
1356.328 -#  define _Locale_PUNCT  _PUNCT
1356.329 -#  define _Locale_SPACE  _SPACE
1356.330 -#  define _Locale_PRINT  (_UPPER | _LOWER | _DIGIT | _PUNCT | _SPACE)
1356.331 -#  define _Locale_ALPHA  _ALPHA
1356.332 -#elif defined(__MRC__) || defined(__SC__)		//*TY 02/24/2000 - added support for MPW
1356.333 -#  define _Locale_CNTRL  _CTL
1356.334 -#  define _Locale_UPPER  _UPP
1356.335 -#  define _Locale_LOWER  _LOW
1356.336 -#  define _Locale_DIGIT  _DIG
1356.337 -#  define _Locale_XDIGIT _HEX
1356.338 -#  define _Locale_PUNCT  _PUN
1356.339 -#  define _Locale_SPACE  _BLA
1356.340 -#  define _Locale_PRINT  (_UPP | _LOW | _DIG | _PUN | _BLA)
1356.341 -#  define _Locale_ALPHA  (_UPP | _LOW)
1356.342 -#elif defined(__MLCCPP__)
1356.343 -#  define _Locale_CNTRL    1
1356.344 -#  define _Locale_UPPER    2
1356.345 -#  define _Locale_LOWER    4
1356.346 -#  define _Locale_DIGIT    8
1356.347 -#  define _Locale_XDIGIT  16
1356.348 -#  define _Locale_PUNCT   32
1356.349 -#  define _Locale_SPACE   64
1356.350 -#  define _Locale_PRINT  128
1356.351 -#  define _Locale_ALPHA  256
1356.352 -
1356.353 -# elif defined (__GNUC__) && defined (__APPLE__)
1356.354 - 
1356.355 -# define _Locale_CNTRL _C
1356.356 -# define _Locale_UPPER _U
1356.357 -# define _Locale_LOWER _L
1356.358 -# define _Locale_DIGIT _D
1356.359 -# define _Locale_XDIGIT _X
1356.360 -# define _Locale_PUNCT _P
1356.361 -# define _Locale_SPACE _S
1356.362 -# define _Locale_PRINT _R
1356.363 -# define _Locale_ALPHA _A
1356.364 -
1356.365 -# elif defined (__hpux) || defined (__osf__)
1356.366 - 
1356.367 -#   if defined(__HP_aCC) && !defined(_INCLUDE_HPUX_SOURCE)
1356.368 -#     define _ISALPHA      0x001
1356.369 -#     define _ISALNUM      0x002
1356.370 -#     define _ISBLANK      0x004
1356.371 -#     define _ISCNTRL      0x008
1356.372 -#     define _ISDIGIT      0x010
1356.373 -#     define _ISGRAPH      0x020
1356.374 -#     define _ISLOWER      0x040
1356.375 -#     define _ISPRINT      0x080
1356.376 -#     define _ISPUNCT      0x100
1356.377 -#     define _ISSPACE      0x200
1356.378 -#     define _ISUPPER      0x400
1356.379 -#     define _ISXDIGIT     0x800
1356.380 -#  endif
1356.381 -#  define _Locale_CNTRL  _ISCNTRL
1356.382 -#  define _Locale_UPPER  _ISUPPER
1356.383 -#  define _Locale_LOWER  _ISLOWER
1356.384 -#  define _Locale_DIGIT  _ISDIGIT
1356.385 -#  define _Locale_XDIGIT _ISXDIGIT
1356.386 -#  define _Locale_PUNCT  _ISPUNCT
1356.387 -#  define _Locale_SPACE  _ISSPACE
1356.388 -#  define _Locale_PRINT  _ISPRINT
1356.389 -#  define _Locale_ALPHA  _ISALPHA
1356.390 -# elif defined (__MVS__) || defined(__OS400__)
1356.391 -#  define _Locale_CNTRL __ISCNTRL
1356.392 -#  define _Locale_UPPER __ISUPPER
1356.393 -#  define _Locale_LOWER __ISLOWER
1356.394 -#  define _Locale_DIGIT __ISDIGIT
1356.395 -#  define _Locale_XDIGIT __ISXDIGIT
1356.396 -#  define _Locale_PUNCT __ISPUNCT
1356.397 -#  define _Locale_SPACE __ISSPACE
1356.398 -#  define _Locale_PRINT __ISPRINT
1356.399 -#  define _Locale_ALPHA __ISALPHA
1356.400 -# elif defined (__QNXNTO__)  || defined (__WATCOMC__)
1356.401 -# define _Locale_CNTRL _CNTRL
1356.402 -# define _Locale_UPPER _UPPER
1356.403 -# define _Locale_LOWER _LOWER
1356.404 -# define _Locale_DIGIT _DIGIT
1356.405 -# define _Locale_XDIGIT _XDIGT
1356.406 -# define _Locale_PUNCT _PUNCT
1356.407 -# define _Locale_SPACE _SPACE
1356.408 -# define _Locale_PRINT _PRINT
1356.409 -# define _Locale_ALPHA (_UPPER | _LOWER)
1356.410 -#elif defined (__DJGPP)
1356.411 -#  define _Locale_CNTRL  __dj_ISCNTRL
1356.412 -#  define _Locale_UPPER  __dj_ISUPPER
1356.413 -#  define _Locale_LOWER  __dj_ISLOWER
1356.414 -#  define _Locale_DIGIT  __dj_ISDIGIT
1356.415 -#  define _Locale_XDIGIT __dj_ISXDIGIT
1356.416 -#  define _Locale_PUNCT  __dj_ISPUNCT
1356.417 -#  define _Locale_SPACE  __dj_ISSPACE
1356.418 -#  define _Locale_PRINT  __dj_ISPRINT
1356.419 -#  define _Locale_ALPHA  __dj_ISALPHA
1356.420 -#elif defined (_STLP_SCO_OPENSERVER)
1356.421 -#  define _Locale_CNTRL _C
1356.422 -#  define _Locale_UPPER _U
1356.423 -#  define _Locale_LOWER _L
1356.424 -#  define _Locale_DIGIT _N
1356.425 -#  define _Locale_XDIGIT _X
1356.426 -#  define _Locale_PUNCT _P
1356.427 -#  define _Locale_SPACE _S
1356.428 -#  define _Locale_PRINT _R
1356.429 -#  define _Locale_ALPHA _A
1356.430 -#elif defined (__NCR_SVR)
1356.431 -#  define _Locale_CNTRL _C
1356.432 -#  define _Locale_UPPER _U
1356.433 -#  define _Locale_LOWER _L
1356.434 -#  define _Locale_DIGIT _N
1356.435 -#  define _Locale_XDIGIT _X
1356.436 -#  define _Locale_PUNCT _P
1356.437 -#  define _Locale_SPACE _S
1356.438 -#  define _Locale_PRINT (_P | _U | _L | _N | _B)
1356.439 -#  define _Locale_ALPHA (_U | _L)
1356.440 -#elif defined (_CRAY)
1356.441 -#  define _Locale_CNTRL  _CNTRL
1356.442 -#  define _Locale_UPPER  _UPPER
1356.443 -#  define _Locale_LOWER  _LOWER
1356.444 -#  define _Locale_DIGIT  _DIGIT
1356.445 -#  define _Locale_XDIGIT _XDIGIT
1356.446 -#  define _Locale_PUNCT  _PUNCT
1356.447 -#  define _Locale_SPACE  _SPACE
1356.448 -#  define _Locale_PRINT  _PRINT
1356.449 -#  define _Locale_ALPHA  _ALPHA
1356.450 -#elif defined (_STLP_VXWORKS_TORNADO)
1356.451 -#define _Locale_UPPER _C_UPPER   /* 0x01 */
1356.452 -#define _Locale_LOWER _C_LOWER /* 0x02 */
1356.453 -#define _Locale_DIGIT  _C_NUMBER   /* 0x04 */
1356.454 -#define _Locale_SPACE  _C_WHITE_SPACE   /* 0x08 */
1356.455 -#define _Locale_PUNCT _C_PUNCT   /* 0x10 */
1356.456 -#define _Locale_CNTRL _C_CONTROL   /* 0x20 */
1356.457 -#define _Locale_XDIGIT _C_HEX_NUMBER   /* 0x40 */
1356.458 -#define _Locale_PRINT  (_C_B | _C_UPPER |  _C_LOWER | _C_NUMBER | _C_PUNCT)
1356.459 -#define _Locale_ALPHA (_C_UPPER |  _C_LOWER) 
1356.460 -#endif
1356.461 -
1356.462 -# endif /* _STLP_C_LOCALE_H */
  1357.1 --- a/epoc32/include/stdapis/stlport/stl/char_traits.h	Tue Mar 16 16:12:26 2010 +0000
  1357.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1357.3 @@ -1,266 +0,0 @@
  1357.4 -/*
  1357.5 - * Copyright (c) 1996,1997
  1357.6 - * Silicon Graphics Computer Systems, Inc.
  1357.7 - *
  1357.8 - * Copyright (c) 1999
  1357.9 - * Boris Fomitchev
 1357.10 - *
 1357.11 - * This material is provided "as is", with absolutely no warranty expressed
 1357.12 - * or implied. Any use is at your own risk.
 1357.13 - *
 1357.14 - * Permission to use or copy this software for any purpose is hereby granted
 1357.15 - * without fee, provided the above notices are retained on all copies.
 1357.16 - * Permission to modify the code and to distribute modified code is granted,
 1357.17 - * provided the above notices are retained, and a notice that the code was
 1357.18 - * modified is included with the above copyright notice.
 1357.19 - *
 1357.20 - */
 1357.21 -
 1357.22 -#ifndef _STLP_CHAR_TRAITS_H
 1357.23 -#define _STLP_CHAR_TRAITS_H
 1357.24 -
 1357.25 -// Define char_traits
 1357.26 -
 1357.27 -# if defined (_STLP_OWN_IOSTREAMS) || ! defined (_STLP_USE_NEW_IOSTREAMS)
 1357.28 -
 1357.29 -# if ! defined (_STLP_CSTDDEF)
 1357.30 -#  include <cstddef>
 1357.31 -# endif
 1357.32 -
 1357.33 -#if ! defined (_STLP_CSTRING)
 1357.34 -#  include <cstring>
 1357.35 -#endif
 1357.36 -
 1357.37 -#if defined (_STLP_UNIX) && defined (_STLP_HAS_NO_NEW_C_HEADERS)
 1357.38 -#include <sys/types.h>          // For off_t
 1357.39 -#endif /* __unix */
 1357.40 -
 1357.41 -#ifdef __BORLANDC__
 1357.42 -# include <mem.h>
 1357.43 -# include <string.h>
 1357.44 -# include <_stddef.h>
 1357.45 -// class mbstate_t;
 1357.46 -#endif
 1357.47 -
 1357.48 -#ifndef __TYPE_TRAITS_H
 1357.49 -# include <stl/type_traits.h>
 1357.50 -#endif
 1357.51 -
 1357.52 -# if !defined (_STLP_CWCHAR)
 1357.53 -#  include <stl/_cwchar.h>
 1357.54 -# endif
 1357.55 -
 1357.56 -_STLP_BEGIN_NAMESPACE
 1357.57 -
 1357.58 -# ifdef _STLP_OWN_IOSTREAMS
 1357.59 -
 1357.60 -template <class _Tp> class allocator;
 1357.61 -
 1357.62 -#define _STLP_NULL_CHAR_INIT(_ChT) _STLP_DEFAULT_CONSTRUCTED(_ChT)
 1357.63 -
 1357.64 -#if defined (__sgi) && defined (_STLP_HAS_NO_NEW_C_HEADERS) /* IRIX */
 1357.65 -typedef off64_t   streamoff;
 1357.66 -// #elif defined (__unix) && defined (_STLP_HAS_NO_NEW_C_HEADERS) /* Other version of UNIX */
 1357.67 -// typedef off_t     streamoff;
 1357.68 -#else /* __unix */
 1357.69 -// boris : here, it's not ptrdiff_t as some Solaris systems have confusing definitions of these.
 1357.70 -typedef long streamoff;
 1357.71 -#endif /* _STLP_HAS_NO_NEW_C_HEADERS */
 1357.72 -
 1357.73 -typedef ptrdiff_t streamsize;
 1357.74 -
 1357.75 -// Class fpos, which represents a position within a file.  (The C++
 1357.76 -// standard calls for it to be defined in <ios>.  This implementation
 1357.77 -// moves it to <iosfwd>, which is included by <ios>.)
 1357.78 -template <class _StateT> class fpos
 1357.79 -{
 1357.80 -public:                         // From table 88 of the C++ standard.
 1357.81 -  fpos(streamoff __pos) : _M_pos(__pos), _M_st(_STLP_NULL_CHAR_INIT(_StateT)) {}
 1357.82 -  fpos() : _M_pos(0), _M_st(_STLP_NULL_CHAR_INIT(_StateT)) {}
 1357.83 -
 1357.84 -  operator streamoff() const { return _M_pos; }
 1357.85 -
 1357.86 -  bool  _STLP_CALL operator==(const fpos<_StateT>& __y) const
 1357.87 -    { return _M_pos == __y._M_pos; }
 1357.88 -  bool _STLP_CALL operator!=(const fpos<_StateT>& __y) const
 1357.89 -    { return _M_pos != __y._M_pos; }
 1357.90 -
 1357.91 -  fpos<_StateT>& operator+=(streamoff __off) {
 1357.92 -    _M_pos += __off;
 1357.93 -    return *this;
 1357.94 -  }
 1357.95 -  fpos<_StateT>& operator-=(streamoff __off) {
 1357.96 -    _M_pos -= __off;
 1357.97 -    return *this;
 1357.98 -  }
 1357.99 -
1357.100 -  fpos<_StateT> operator+(streamoff __off) {
1357.101 -    fpos<_StateT> __tmp(*this);
1357.102 -    __tmp += __off;
1357.103 -    return __tmp;
1357.104 -  }
1357.105 -  fpos<_StateT> operator-(streamoff __off) {
1357.106 -    fpos<_StateT> __tmp(*this);
1357.107 -    __tmp -= __off;
1357.108 -    return __tmp;
1357.109 -  }
1357.110 -
1357.111 -public:                         // Manipulation of the state member.
1357.112 -  _StateT state() const { return _M_st; }
1357.113 -  void state(_StateT __st) { _M_st = __st; }
1357.114 -private:
1357.115 -  streamoff _M_pos;
1357.116 -  _StateT _M_st;
1357.117 -};
1357.118 -
1357.119 -typedef fpos<mbstate_t> streampos;
1357.120 -typedef fpos<mbstate_t> wstreampos;
1357.121 -# endif
1357.122 -
1357.123 -// Class __char_traits_base.
1357.124 -
1357.125 -template <class _CharT, class _IntT> class __char_traits_base {
1357.126 -public:
1357.127 -  typedef _CharT char_type;
1357.128 -  typedef _IntT int_type;
1357.129 -#ifdef _STLP_USE_NEW_IOSTREAMS
1357.130 -  typedef streamoff off_type;
1357.131 -  typedef streampos pos_type;
1357.132 -# ifdef _STLP_NO_MBSTATE_T
1357.133 -  typedef char      state_type;
1357.134 -# else
1357.135 -  typedef mbstate_t state_type;
1357.136 -# endif
1357.137 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1357.138 -
1357.139 -  static void _STLP_CALL assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; }
1357.140 -  static bool _STLP_CALL eq(const _CharT& __c1, const _CharT& __c2)
1357.141 -    { return __c1 == __c2; }
1357.142 -  static bool _STLP_CALL lt(const _CharT& __c1, const _CharT& __c2)
1357.143 -    { return __c1 < __c2; }
1357.144 -
1357.145 -  static int _STLP_CALL compare(const _CharT* __s1, const _CharT* __s2, size_t __n) {
1357.146 -    for (size_t __i = 0; __i < __n; ++__i)
1357.147 -      if (!eq(__s1[__i], __s2[__i]))
1357.148 -        return __s1[__i] < __s2[__i] ? -1 : 1;
1357.149 -    return 0;
1357.150 -  }
1357.151 -
1357.152 -  static size_t _STLP_CALL length(const _CharT* __s) {
1357.153 -    const _CharT _NullChar = _STLP_DEFAULT_CONSTRUCTED(_CharT);
1357.154 -    size_t __i;
1357.155 -    for (__i = 0; !eq(__s[__i], _NullChar); ++__i)
1357.156 -      {}
1357.157 -    return __i;
1357.158 -  }
1357.159 -
1357.160 -  static const _CharT* _STLP_CALL find(const _CharT* __s, size_t __n, const _CharT& __c) {
1357.161 -    for ( ; __n > 0 ; ++__s, --__n)
1357.162 -      if (eq(*__s, __c))
1357.163 -        return __s;
1357.164 -    return 0;
1357.165 -  }
1357.166 -
1357.167 -
1357.168 -  static _CharT* _STLP_CALL move(_CharT* __s1, const _CharT* __s2, size_t _Sz) {
1357.169 -    return (_Sz == 0 ? __s1 : (_CharT*)memmove(__s1, __s2, _Sz * sizeof(_CharT)));
1357.170 -  }
1357.171 -
1357.172 -  static _CharT* _STLP_CALL copy(_CharT* __s1, const _CharT* __s2, size_t __n) {
1357.173 -    return (__n == 0 ? __s1 :
1357.174 -	    (_CharT*)memcpy(__s1, __s2, __n * sizeof(_CharT)));
1357.175 -    }
1357.176 -
1357.177 -  static _CharT* _STLP_CALL assign(_CharT* __s, size_t __n, _CharT __c) {
1357.178 -    for (size_t __i = 0; __i < __n; ++__i)
1357.179 -      __s[__i] = __c;
1357.180 -    return __s;
1357.181 -  }
1357.182 -
1357.183 -  static int_type _STLP_CALL not_eof(const int_type& __c) {
1357.184 -    return !eq_int_type(__c, eof()) ? __c : __STATIC_CAST(int_type, 0);
1357.185 -  }
1357.186 -
1357.187 -  static char_type _STLP_CALL to_char_type(const int_type& __c) {
1357.188 -    return (char_type)__c;
1357.189 -  }
1357.190 -
1357.191 -  static int_type _STLP_CALL to_int_type(const char_type& __c) {
1357.192 -    return (int_type)__c;
1357.193 -  }
1357.194 -
1357.195 -  static bool _STLP_CALL eq_int_type(const int_type& __c1, const int_type& __c2) {
1357.196 -    return __c1 == __c2;
1357.197 -  }
1357.198 -
1357.199 -  static int_type _STLP_CALL eof() {
1357.200 -    return (int_type)-1;
1357.201 -    //    return __STATIC_CAST(int_type,-1);
1357.202 -  }
1357.203 -};
1357.204 -
1357.205 -// Generic char_traits class.  Note that this class is provided only
1357.206 -//  as a base for explicit specialization; it is unlikely to be useful
1357.207 -//  as is for any particular user-defined type.  In particular, it
1357.208 -//  *will not work* for a non-POD type.
1357.209 -
1357.210 -template <class _CharT> class char_traits
1357.211 -  : public __char_traits_base<_CharT, _CharT>
1357.212 -{};
1357.213 -
1357.214 -// Specialization for char.
1357.215 -
1357.216 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC char_traits<char>
1357.217 -  : public __char_traits_base<char, int>
1357.218 -{
1357.219 -public:
1357.220 -  typedef char char_type;
1357.221 -  typedef int int_type;
1357.222 -#ifdef _STLP_USE_NEW_IOSTREAMS
1357.223 -  typedef streamoff off_type;
1357.224 -# ifndef _STLP_NO_MBSTATE_T
1357.225 -  typedef streampos pos_type;
1357.226 -  typedef mbstate_t state_type;
1357.227 -# endif
1357.228 -#endif /* _STLP_USE_NEW_IOSTREAMS */
1357.229 -
1357.230 -  static char _STLP_CALL to_char_type(const int& __c) {
1357.231 -    return (char)(unsigned char)__c;
1357.232 -  }
1357.233 -
1357.234 -  static int _STLP_CALL to_int_type(const char& __c) {
1357.235 -    return (unsigned char)__c;
1357.236 -  }
1357.237 -
1357.238 -  static int _STLP_CALL compare(const char* __s1, const char* __s2, size_t __n)
1357.239 -    { return memcmp(__s1, __s2, __n); }
1357.240 -
1357.241 -  static size_t _STLP_CALL length(const char* __s) { return strlen(__s); }
1357.242 -
1357.243 -  static void _STLP_CALL assign(char& __c1, const char& __c2) { __c1 = __c2; }
1357.244 -
1357.245 -  static char* _STLP_CALL assign(char* __s, size_t __n, char __c)
1357.246 -    { memset(__s, __c, __n); return __s; }
1357.247 -};
1357.248 -
1357.249 -# if defined (_STLP_HAS_WCHAR_T)
1357.250 -// Specialization for wchar_t.
1357.251 -_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC char_traits<wchar_t>
1357.252 -  : public __char_traits_base<wchar_t, wint_t>
1357.253 -{};
1357.254 -# endif
1357.255 -
1357.256 -_STLP_END_NAMESPACE
1357.257 -
1357.258 -# else /* OWN_IOSTREAMS */
1357.259 -
1357.260 -#  include <wrap_std/iosfwd>
1357.261 -
1357.262 -# endif /* OWN_IOSTREAMS */
1357.263 -
1357.264 -#endif /* _STLP_CHAR_TRAITS_H */
1357.265 -
1357.266 -// Local Variables:
1357.267 -// mode:C++
1357.268 -// End:
1357.269 -
  1358.1 --- a/epoc32/include/stdapis/stlport/stl/concept_checks.h	Tue Mar 16 16:12:26 2010 +0000
  1358.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1358.3 @@ -1,810 +0,0 @@
  1358.4 -/*
  1358.5 - * Copyright (c) 1999
  1358.6 - * Silicon Graphics Computer Systems, Inc.
  1358.7 - *
  1358.8 - * Permission to use, copy, modify, distribute and sell this software
  1358.9 - * and its documentation for any purpose is hereby granted without fee,
 1358.10 - * provided that the above copyright notice appear in all copies and
 1358.11 - * that both that copyright notice and this permission notice appear
 1358.12 - * in supporting documentation.  Silicon Graphics makes no
 1358.13 - * representations about the suitability of this software for any
 1358.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1358.15 - */
 1358.16 -
 1358.17 -#ifndef __CONCEPT_CHECKS_H
 1358.18 -#define __CONCEPT_CHECKS_H
 1358.19 -
 1358.20 -/*
 1358.21 -  Use these macro like assertions, but they assert properties
 1358.22 -  on types (usually template arguments). In technical terms they
 1358.23 -  verify whether a type "models" a "concept".
 1358.24 -
 1358.25 -  This set of requirements and the terminology used here is derived
 1358.26 -  from the book "Generic Programming and the STL" by Matt Austern
 1358.27 -  (Addison Wesley). For further information please consult that
 1358.28 -  book. The requirements also are intended to match the ANSI/ISO C++
 1358.29 -  standard.
 1358.30 -
 1358.31 -  This file covers the basic concepts and the iterator concepts.
 1358.32 -  There are several other files that provide the requirements
 1358.33 -  for the STL containers:
 1358.34 -    container_concepts.h
 1358.35 -    sequence_concepts.h
 1358.36 -    assoc_container_concepts.h
 1358.37 -
 1358.38 -  Jeremy Siek, 1999
 1358.39 -
 1358.40 -  TO DO:
 1358.41 -    - some issues with regards to concept classification and mutability
 1358.42 -      including AssociativeContianer -> ForwardContainer
 1358.43 -      and SortedAssociativeContainer -> ReversibleContainer
 1358.44 -    - HashedAssociativeContainer
 1358.45 -    - Allocator
 1358.46 -    - Function Object Concepts
 1358.47 -
 1358.48 -  */
 1358.49 -
 1358.50 -#ifndef _STLP_USE_CONCEPT_CHECKS
 1358.51 -
 1358.52 -// Some compilers lack the features that are necessary for concept checks.
 1358.53 -// On those compilers we define the concept check macros to do nothing.
 1358.54 -#define _STLP_REQUIRES(__type_var, __concept) do {} while(0)
 1358.55 -#define _STLP_CLASS_REQUIRES(__type_var, __concept) \
 1358.56 -  static int  __##__type_var##_##__concept
 1358.57 -#define _STLP_CONVERTIBLE(__type_x, __type_y) do {} while(0)
 1358.58 -#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) do {} while(0)
 1358.59 -#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \
 1358.60 -  static int  __##__type_x##__type_y##_require_same_type
 1358.61 -#define _STLP_GENERATOR_CHECK(__func, __ret) do {} while(0)
 1358.62 -#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \
 1358.63 -  static int  __##__func##__ret##_generator_check
 1358.64 -#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) do {} while(0)
 1358.65 -#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \
 1358.66 -  static int  __##__func##__ret##__arg##_unary_function_check
 1358.67 -#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
 1358.68 -  do {} while(0)
 1358.69 -#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
 1358.70 -  static int  __##__func##__ret##__first##__second##_binary_function_check
 1358.71 -#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
 1358.72 -  do {} while(0)
 1358.73 -#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
 1358.74 -  static int __##__opname##__ret##__first##__second##_require_binary_op
 1358.75 -
 1358.76 -#else /* _STLP_USE_CONCEPT_CHECKS */
 1358.77 -
 1358.78 -// This macro tests whether the template argument "__type_var"
 1358.79 -// satisfies the requirements of "__concept".  Here is a list of concepts
 1358.80 -// that we know how to check:
 1358.81 -//       _Allocator
 1358.82 -//       _Assignable
 1358.83 -//       _DefaultConstructible
 1358.84 -//       _EqualityComparable
 1358.85 -//       _LessThanComparable
 1358.86 -//       _TrivialIterator
 1358.87 -//       _InputIterator
 1358.88 -//       _OutputIterator
 1358.89 -//       _ForwardIterator
 1358.90 -//       _BidirectionalIterator
 1358.91 -//       _RandomAccessIterator
 1358.92 -//       _Mutable_TrivialIterator
 1358.93 -//       _Mutable_ForwardIterator
 1358.94 -//       _Mutable_BidirectionalIterator
 1358.95 -//       _Mutable_RandomAccessIterator
 1358.96 -
 1358.97 -#define _STLP_REQUIRES(__type_var, __concept) \
 1358.98 -do { \
 1358.99 -  void (*__x)( __type_var ) = __concept##_concept_specification< __type_var >\
1358.100 -    ::##__concept##_requirement_violation; __x = __x; } while (0)
1358.101 -
1358.102 -// Use this to check whether type X is convertible to type Y
1358.103 -#define _STLP_CONVERTIBLE(__type_x, __type_y) \
1358.104 -do { \
1358.105 -  void (*__x)( __type_x , __type_y ) = _STL_CONVERT_ERROR< __type_x , \
1358.106 -  __type_y >::__type_X_is_not_convertible_to_type_Y; \
1358.107 -  __x = __x; } while (0)
1358.108 -
1358.109 -// Use this to test whether two template arguments are the same type
1358.110 -#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) \
1358.111 -do { \
1358.112 -  void (*__x)( __type_x , __type_y ) = _STL_SAME_TYPE_ERROR< __type_x, \
1358.113 -    __type_y  >::__type_X_not_same_as_type_Y; \
1358.114 -  __x = __x; } while (0)
1358.115 -
1358.116 -
1358.117 -// function object checks
1358.118 -#define _STLP_GENERATOR_CHECK(__func, __ret) \
1358.119 -do { \
1358.120 -  __ret (*__x)( __func&) = \
1358.121 -     _STL_GENERATOR_ERROR< \
1358.122 -  __func, __ret>::__generator_requirement_violation; \
1358.123 -  __x = __x; } while (0)
1358.124 -
1358.125 -
1358.126 -#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \
1358.127 -do { \
1358.128 -  __ret (*__x)( __func&, const __arg& ) = \
1358.129 -     _STL_UNARY_FUNCTION_ERROR< \
1358.130 -  __func, __ret, __arg>::__unary_function_requirement_violation; \
1358.131 -  __x = __x; } while (0)
1358.132 -
1358.133 -
1358.134 -#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
1358.135 -do { \
1358.136 -  __ret (*__x)( __func&, const __first&, const __second& ) = \
1358.137 -     _STL_BINARY_FUNCTION_ERROR< \
1358.138 -  __func, __ret, __first, __second>::__binary_function_requirement_violation; \
1358.139 -  __x = __x; } while (0)
1358.140 -
1358.141 -
1358.142 -#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
1358.143 -    do { \
1358.144 -  __ret (*__x)( __first&, __second& ) = _STL_BINARY##__opname##_ERROR< \
1358.145 -    __ret, __first, __second>::__binary_operator_requirement_violation; \
1358.146 -  __ret (*__y)( const __first&, const __second& ) = \
1358.147 -    _STL_BINARY##__opname##_ERROR< __ret, __first, __second>:: \
1358.148 -      __const_binary_operator_requirement_violation; \
1358.149 -  __y = __y; __x = __x; } while (0)
1358.150 -
1358.151 -
1358.152 -#ifdef _STLP_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE
1358.153 -
1358.154 -#define _STLP_CLASS_REQUIRES(__type_var, __concept)
1358.155 -#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y)
1358.156 -#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret)
1358.157 -#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg)
1358.158 -#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second)
1358.159 -#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second)
1358.160 -
1358.161 -#else
1358.162 -
1358.163 -// Use this macro inside of template classes, where you would
1358.164 -// like to place requirements on the template arguments to the class
1358.165 -// Warning: do not pass pointers and such (e.g. T*) in as the __type_var,
1358.166 -// since the type_var is used to construct identifiers. Instead typedef
1358.167 -// the pointer type, then use the typedef name for the __type_var.
1358.168 -#define _STLP_CLASS_REQUIRES(__type_var, __concept) \
1358.169 -  typedef void (* __func##__type_var##__concept)( __type_var ); \
1358.170 -  template <__func##__type_var##__concept _Tp1> \
1358.171 -  struct __dummy_struct_##__type_var##__concept { }; \
1358.172 -  static __dummy_struct_##__type_var##__concept< \
1358.173 -    __concept##_concept_specification< \
1358.174 -      __type_var>::__concept##_requirement_violation>  \
1358.175 -  __dummy_ptr_##__type_var##__concept
1358.176 -
1358.177 -
1358.178 -#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \
1358.179 -  typedef void (* __func_##__type_x##__type_y##same_type)( __type_x, \
1358.180 -                                                            __type_y ); \
1358.181 -  template < __func_##__type_x##__type_y##same_type _Tp1> \
1358.182 -  struct __dummy_struct_##__type_x##__type_y##_same_type { }; \
1358.183 -  static __dummy_struct_##__type_x##__type_y##_same_type< \
1358.184 -    _STL_SAME_TYPE_ERROR<__type_x, __type_y>::__type_X_not_same_as_type_Y>  \
1358.185 -  __dummy_ptr_##__type_x##__type_y##_same_type
1358.186 -
1358.187 -
1358.188 -#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \
1358.189 -  typedef __ret (* __f_##__func##__ret##_generator)( __func& ); \
1358.190 -  template <__f_##__func##__ret##_generator _Tp1> \
1358.191 -  struct __dummy_struct_##__func##__ret##_generator { }; \
1358.192 -  static __dummy_struct_##__func##__ret##_generator< \
1358.193 -    _STL_GENERATOR_ERROR< \
1358.194 -      __func, __ret>::__generator_requirement_violation>  \
1358.195 -  __dummy_ptr_##__func##__ret##_generator
1358.196 -
1358.197 -
1358.198 -#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \
1358.199 -  typedef __ret (* __f_##__func##__ret##__arg##_unary_check)( __func&, \
1358.200 -                                                         const __arg& ); \
1358.201 -  template <__f_##__func##__ret##__arg##_unary_check _Tp1> \
1358.202 -  struct __dummy_struct_##__func##__ret##__arg##_unary_check { }; \
1358.203 -  static __dummy_struct_##__func##__ret##__arg##_unary_check< \
1358.204 -    _STL_UNARY_FUNCTION_ERROR< \
1358.205 -      __func, __ret, __arg>::__unary_function_requirement_violation>  \
1358.206 -  __dummy_ptr_##__func##__ret##__arg##_unary_check
1358.207 -
1358.208 -
1358.209 -#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
1358.210 -  typedef __ret (* __f_##__func##__ret##__first##__second##_binary_check)( __func&, const __first&,\
1358.211 -                                                    const __second& ); \
1358.212 -  template <__f_##__func##__ret##__first##__second##_binary_check _Tp1> \
1358.213 -  struct __dummy_struct_##__func##__ret##__first##__second##_binary_check { }; \
1358.214 -  static __dummy_struct_##__func##__ret##__first##__second##_binary_check< \
1358.215 -    _STL_BINARY_FUNCTION_ERROR<__func, __ret, __first, __second>:: \
1358.216 -  __binary_function_requirement_violation>  \
1358.217 -  __dummy_ptr_##__func##__ret##__first##__second##_binary_check
1358.218 -
1358.219 -
1358.220 -#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
1358.221 -  typedef __ret (* __f_##__func##__ret##__first##__second##_binary_op)(const __first&, \
1358.222 -                                                    const __second& ); \
1358.223 -  template <__f_##__func##__ret##__first##__second##_binary_op _Tp1> \
1358.224 -  struct __dummy_struct_##__func##__ret##__first##__second##_binary_op { }; \
1358.225 -  static __dummy_struct_##__func##__ret##__first##__second##_binary_op< \
1358.226 -    _STL_BINARY##__opname##_ERROR<__ret, __first, __second>:: \
1358.227 -  __binary_operator_requirement_violation>  \
1358.228 -  __dummy_ptr_##__func##__ret##__first##__second##_binary_op
1358.229 -
1358.230 -#endif
1358.231 -
1358.232 -/* helper class for finding non-const version of a type. Need to have
1358.233 -   something to assign to etc. when testing constant iterators. */
1358.234 -
1358.235 -template <class _Tp>
1358.236 -struct _Mutable_trait {
1358.237 -  typedef _Tp _Type;
1358.238 -};
1358.239 -template <class _Tp>
1358.240 -struct _Mutable_trait<const _Tp> {
1358.241 -  typedef _Tp _Type;
1358.242 -};
1358.243 -
1358.244 -
1358.245 -/* helper function for avoiding compiler warnings about unused variables */
1358.246 -template <class _Type>
1358.247 -void __sink_unused_warning(_Type) { }
1358.248 -
1358.249 -template <class _TypeX, class _TypeY>
1358.250 -struct _STL_CONVERT_ERROR {
1358.251 -  static void
1358.252 -  __type_X_is_not_convertible_to_type_Y(_TypeX __x, _TypeY) {
1358.253 -    _TypeY __y = __x;
1358.254 -    __sink_unused_warning(__y);
1358.255 -  }
1358.256 -};
1358.257 -
1358.258 -
1358.259 -template <class _Type> struct __check_equal { };
1358.260 -
1358.261 -template <class _TypeX, class _TypeY>
1358.262 -struct _STL_SAME_TYPE_ERROR {
1358.263 -  static void
1358.264 -  __type_X_not_same_as_type_Y(_TypeX , _TypeY ) { 
1358.265 -    __check_equal<_TypeX> t1 = __check_equal<_TypeY>();
1358.266 -  }
1358.267 -};
1358.268 -
1358.269 -
1358.270 -// Some Functon Object Checks
1358.271 -
1358.272 -template <class _Func, class _Ret>
1358.273 -struct _STL_GENERATOR_ERROR {
1358.274 -  static _Ret __generator_requirement_violation(_Func& __f) {
1358.275 -    return __f();
1358.276 -  }
1358.277 -};
1358.278 -
1358.279 -template <class _Func>
1358.280 -struct _STL_GENERATOR_ERROR<_Func, void> {
1358.281 -  static void __generator_requirement_violation(_Func& __f) {
1358.282 -    __f();
1358.283 -  }
1358.284 -};
1358.285 -
1358.286 -
1358.287 -template <class _Func, class _Ret, class _Arg>
1358.288 -struct _STL_UNARY_FUNCTION_ERROR {
1358.289 -  static _Ret
1358.290 -  __unary_function_requirement_violation(_Func& __f,
1358.291 -                                          const _Arg& __arg) {
1358.292 -    return __f(__arg);
1358.293 -  }
1358.294 -};
1358.295 -
1358.296 -template <class _Func, class _Arg>
1358.297 -struct _STL_UNARY_FUNCTION_ERROR<_Func, void, _Arg> {
1358.298 -  static void
1358.299 -  __unary_function_requirement_violation(_Func& __f,
1358.300 -                                          const _Arg& __arg) {
1358.301 -    __f(__arg);
1358.302 -  }
1358.303 -};
1358.304 -
1358.305 -template <class _Func, class _Ret, class _First, class _Second>
1358.306 -struct _STL_BINARY_FUNCTION_ERROR {
1358.307 -  static _Ret
1358.308 -  __binary_function_requirement_violation(_Func& __f,
1358.309 -                                          const _First& __first, 
1358.310 -                                          const _Second& __second) {
1358.311 -    return __f(__first, __second);
1358.312 -  }
1358.313 -};
1358.314 -
1358.315 -template <class _Func, class _First, class _Second>
1358.316 -struct _STL_BINARY_FUNCTION_ERROR<_Func, void, _First, _Second> {
1358.317 -  static void
1358.318 -  __binary_function_requirement_violation(_Func& __f,
1358.319 -                                          const _First& __first, 
1358.320 -                                          const _Second& __second) {
1358.321 -    __f(__first, __second);
1358.322 -  }
1358.323 -};
1358.324 -
1358.325 -
1358.326 -#define _STLP_DEFINE_BINARY_OP_CHECK(_OP, _NAME) \
1358.327 -template <class _Ret, class _First, class _Second> \
1358.328 -struct _STL_BINARY##_NAME##_ERROR { \
1358.329 -  static _Ret \
1358.330 -  __const_binary_operator_requirement_violation(const _First& __first,  \
1358.331 -                                                const _Second& __second) { \
1358.332 -    return __first _OP __second; \
1358.333 -  } \
1358.334 -  static _Ret \
1358.335 -  __binary_operator_requirement_violation(_First& __first,  \
1358.336 -                                          _Second& __second) { \
1358.337 -    return __first _OP __second; \
1358.338 -  } \
1358.339 -}
1358.340 -
1358.341 -_STLP_DEFINE_BINARY_OP_CHECK(==, _OP_EQUAL);
1358.342 -_STLP_DEFINE_BINARY_OP_CHECK(!=, _OP_NOT_EQUAL);
1358.343 -_STLP_DEFINE_BINARY_OP_CHECK(<, _OP_LESS_THAN);
1358.344 -_STLP_DEFINE_BINARY_OP_CHECK(<=, _OP_LESS_EQUAL);
1358.345 -_STLP_DEFINE_BINARY_OP_CHECK(>, _OP_GREATER_THAN);
1358.346 -_STLP_DEFINE_BINARY_OP_CHECK(>=, _OP_GREATER_EQUAL);
1358.347 -_STLP_DEFINE_BINARY_OP_CHECK(+, _OP_PLUS);
1358.348 -_STLP_DEFINE_BINARY_OP_CHECK(*, _OP_TIMES);
1358.349 -_STLP_DEFINE_BINARY_OP_CHECK(/, _OP_DIVIDE);
1358.350 -_STLP_DEFINE_BINARY_OP_CHECK(-, _OP_SUBTRACT);
1358.351 -_STLP_DEFINE_BINARY_OP_CHECK(%, _OP_MOD);
1358.352 -// ...
1358.353 -
1358.354 -// TODO, add unary operators (prefix and postfix)
1358.355 -
1358.356 -/*
1358.357 -  The presence of this class is just to trick EDG into displaying
1358.358 -  these error messages before any other errors. Without the
1358.359 -  classes, the errors in the functions get reported after
1358.360 -  other class errors deep inside the library. The name
1358.361 -  choice just makes for an eye catching error message :)
1358.362 - */
1358.363 -struct _STL_ERROR {
1358.364 -
1358.365 -  template <class _Type>
1358.366 -  static _Type
1358.367 -  __default_constructor_requirement_violation(_Type) {
1358.368 -    return _Type();
1358.369 -  }
1358.370 -  template <class _Type>
1358.371 -  static _Type
1358.372 -  __assignment_operator_requirement_violation(_Type __a) {
1358.373 -    __a = __a;
1358.374 -    return __a;
1358.375 -  }
1358.376 -  template <class _Type>
1358.377 -  static _Type
1358.378 -  __copy_constructor_requirement_violation(_Type __a) {
1358.379 -    _Type __c(__a);
1358.380 -    return __c;
1358.381 -  }
1358.382 -  template <class _Type>
1358.383 -  static _Type
1358.384 -  __const_parameter_required_for_copy_constructor(_Type /* __a */, 
1358.385 -                                                  const _Type& __b) {
1358.386 -    _Type __c(__b);
1358.387 -    return __c;
1358.388 -  }
1358.389 -  template <class _Type>
1358.390 -  static _Type
1358.391 -  __const_parameter_required_for_assignment_operator(_Type __a, 
1358.392 -                                                     const _Type& __b) {
1358.393 -    __a = __b;
1358.394 -    return __a;
1358.395 -  }
1358.396 -  template <class _Type>
1358.397 -  static _Type
1358.398 -  __less_than_comparable_requirement_violation(_Type __a, _Type __b) {
1358.399 -    if (__a < __b || __a > __b || __a <= __b || __a >= __b) return __a;
1358.400 -    return __b;
1358.401 -  }
1358.402 -  template <class _Type>
1358.403 -  static _Type
1358.404 -  __equality_comparable_requirement_violation(_Type __a, _Type __b) {
1358.405 -    if (__a == __b || __a != __b) return __a;
1358.406 -    return __b;
1358.407 -  }
1358.408 -  template <class _Iterator>
1358.409 -  static void
1358.410 -  __dereference_operator_requirement_violation(_Iterator __i) {
1358.411 -    __sink_unused_warning(*__i);
1358.412 -  }
1358.413 -  template <class _Iterator>
1358.414 -  static void
1358.415 -  __dereference_operator_and_assignment_requirement_violation(_Iterator __i) {
1358.416 -    *__i = *__i;
1358.417 -  }
1358.418 -  template <class _Iterator>
1358.419 -  static void
1358.420 -  __preincrement_operator_requirement_violation(_Iterator __i) {
1358.421 -    ++__i;
1358.422 -  }
1358.423 -  template <class _Iterator>
1358.424 -  static void
1358.425 -  __postincrement_operator_requirement_violation(_Iterator __i) {
1358.426 -    __i++;
1358.427 -  }
1358.428 -  template <class _Iterator>
1358.429 -  static void
1358.430 -  __predecrement_operator_requirement_violation(_Iterator __i) {
1358.431 -    --__i;
1358.432 -  }
1358.433 -  template <class _Iterator>
1358.434 -  static void
1358.435 -  __postdecrement_operator_requirement_violation(_Iterator __i) {
1358.436 -    __i--;
1358.437 -  }
1358.438 -  template <class _Iterator, class _Type>
1358.439 -  static void
1358.440 -  __postincrement_operator_and_assignment_requirement_violation(_Iterator __i,
1358.441 -                                                                _Type __t) {
1358.442 -    *__i++ = __t;
1358.443 -  }
1358.444 -  template <class _Iterator, class _Distance>
1358.445 -  static _Iterator
1358.446 -  __iterator_addition_assignment_requirement_violation(_Iterator __i, 
1358.447 -                                                       _Distance __n) {
1358.448 -    __i += __n;
1358.449 -    return __i;
1358.450 -  }
1358.451 -  template <class _Iterator, class _Distance>
1358.452 -  static _Iterator
1358.453 -  __iterator_addition_requirement_violation(_Iterator __i, _Distance __n) {
1358.454 -    __i = __i + __n;
1358.455 -    __i = __n + __i;
1358.456 -    return __i;
1358.457 -  }
1358.458 -  template <class _Iterator, class _Distance>
1358.459 -  static _Iterator
1358.460 -  __iterator_subtraction_assignment_requirement_violation(_Iterator __i,
1358.461 -                                                          _Distance __n) {
1358.462 -    __i -= __n;
1358.463 -    return __i;
1358.464 -  }
1358.465 -  template <class _Iterator, class _Distance>
1358.466 -  static _Iterator
1358.467 -  __iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) {
1358.468 -    __i = __i - __n;
1358.469 -    return __i;
1358.470 -  }
1358.471 -  template <class _Iterator, class _Distance>
1358.472 -  static _Distance
1358.473 -  __difference_operator_requirement_violation(_Iterator __i, _Iterator __j,
1358.474 -                                              _Distance __n) {
1358.475 -    __n = __i - __j;
1358.476 -    return __n;
1358.477 -  }
1358.478 -  template <class _Exp, class _Type, class _Distance>
1358.479 -  static _Type
1358.480 -  __element_access_operator_requirement_violation(_Exp __x, _Type*,
1358.481 -                                                  _Distance __n) {
1358.482 -    return __x[__n];
1358.483 -  }
1358.484 -  template <class _Exp, class _Type, class _Distance>
1358.485 -  static void
1358.486 -  __element_assignment_operator_requirement_violation(_Exp __x,
1358.487 -                                                      _Type* __t,
1358.488 -                                                      _Distance __n) {
1358.489 -    __x[__n] = *__t;
1358.490 -  }
1358.491 -
1358.492 -}; /* _STL_ERROR */
1358.493 -
1358.494 -/* Associated Type Requirements */
1358.495 -
1358.496 -_STLP_BEGIN_NAMESPACE
1358.497 -template <class _Iterator> struct iterator_traits;
1358.498 -_STLP_END_NAMESPACE
1358.499 -
1358.500 -template <class _Iter> 
1358.501 -struct __value_type_type_definition_requirement_violation {
1358.502 -  typedef typename __STD::iterator_traits<_Iter>::value_type value_type;
1358.503 -};
1358.504 -
1358.505 -template <class _Iter> 
1358.506 -struct __difference_type_type_definition_requirement_violation {
1358.507 -  typedef typename __STD::iterator_traits<_Iter>::difference_type
1358.508 -          difference_type;
1358.509 -};
1358.510 -
1358.511 -template <class _Iter> 
1358.512 -struct __reference_type_definition_requirement_violation {
1358.513 -  typedef typename __STD::iterator_traits<_Iter>::reference reference;
1358.514 -};
1358.515 -
1358.516 -template <class _Iter> 
1358.517 -struct __pointer_type_definition_requirement_violation {
1358.518 -  typedef typename __STD::iterator_traits<_Iter>::pointer pointer;
1358.519 -};
1358.520 -
1358.521 -template <class _Iter> 
1358.522 -struct __iterator_category_type_definition_requirement_violation {
1358.523 -  typedef typename __STD::iterator_traits<_Iter>::iterator_category 
1358.524 -          iterator_category;
1358.525 -};
1358.526 -
1358.527 -/* Assignable Requirements */
1358.528 -
1358.529 -
1358.530 -template <class _Type>
1358.531 -struct _Assignable_concept_specification {
1358.532 -  static void _Assignable_requirement_violation(_Type __a) {
1358.533 -    _STL_ERROR::__assignment_operator_requirement_violation(__a);
1358.534 -    _STL_ERROR::__copy_constructor_requirement_violation(__a);
1358.535 -    _STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a);
1358.536 -    _STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a);
1358.537 -  }
1358.538 -};
1358.539 -
1358.540 -/* DefaultConstructible Requirements */
1358.541 -
1358.542 -
1358.543 -template <class _Type>
1358.544 -struct _DefaultConstructible_concept_specification {
1358.545 -  static void _DefaultConstructible_requirement_violation(_Type __a) {
1358.546 -    _STL_ERROR::__default_constructor_requirement_violation(__a);
1358.547 -  }
1358.548 -};
1358.549 -
1358.550 -/* EqualityComparable Requirements */
1358.551 -
1358.552 -template <class _Type>
1358.553 -struct _EqualityComparable_concept_specification {
1358.554 -  static void _EqualityComparable_requirement_violation(_Type __a) {
1358.555 -    _STL_ERROR::__equality_comparable_requirement_violation(__a, __a);
1358.556 -  }
1358.557 -};
1358.558 -
1358.559 -/* LessThanComparable Requirements */
1358.560 -template <class _Type>
1358.561 -struct _LessThanComparable_concept_specification {
1358.562 -  static void _LessThanComparable_requirement_violation(_Type __a) {
1358.563 -    _STL_ERROR::__less_than_comparable_requirement_violation(__a, __a);
1358.564 -  }
1358.565 -};
1358.566 -
1358.567 -/* TrivialIterator Requirements */
1358.568 -
1358.569 -template <class _TrivialIterator>
1358.570 -struct _TrivialIterator_concept_specification {
1358.571 -static void
1358.572 -_TrivialIterator_requirement_violation(_TrivialIterator __i) {
1358.573 -  typedef typename
1358.574 -    __value_type_type_definition_requirement_violation<_TrivialIterator>::
1358.575 -    value_type __T;
1358.576 -  // Refinement of Assignable
1358.577 -  _Assignable_concept_specification<_TrivialIterator>::
1358.578 -    _Assignable_requirement_violation(__i);
1358.579 -  // Refinement of DefaultConstructible
1358.580 -  _DefaultConstructible_concept_specification<_TrivialIterator>::
1358.581 -    _DefaultConstructible_requirement_violation(__i);
1358.582 -  // Refinement of EqualityComparable
1358.583 -  _EqualityComparable_concept_specification<_TrivialIterator>::
1358.584 -    _EqualityComparable_requirement_violation(__i);
1358.585 -  // Valid Expressions
1358.586 -  _STL_ERROR::__dereference_operator_requirement_violation(__i);
1358.587 -}
1358.588 -};
1358.589 -
1358.590 -template <class _TrivialIterator>
1358.591 -struct _Mutable_TrivialIterator_concept_specification {
1358.592 -static void
1358.593 -_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) {
1358.594 -  _TrivialIterator_concept_specification<_TrivialIterator>::
1358.595 -    _TrivialIterator_requirement_violation(__i);
1358.596 -  // Valid Expressions
1358.597 -  _STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i);
1358.598 -}
1358.599 -};
1358.600 -
1358.601 -/* InputIterator Requirements */
1358.602 -
1358.603 -template <class _InputIterator>
1358.604 -struct _InputIterator_concept_specification {
1358.605 -static void
1358.606 -_InputIterator_requirement_violation(_InputIterator __i) {
1358.607 -  // Refinement of TrivialIterator
1358.608 -  _TrivialIterator_concept_specification<_InputIterator>::
1358.609 -    _TrivialIterator_requirement_violation(__i);
1358.610 -  // Associated Types
1358.611 -  __difference_type_type_definition_requirement_violation<_InputIterator>();
1358.612 -  __reference_type_definition_requirement_violation<_InputIterator>();
1358.613 -  __pointer_type_definition_requirement_violation<_InputIterator>();
1358.614 -  __iterator_category_type_definition_requirement_violation<_InputIterator>();
1358.615 -  // Valid Expressions
1358.616 -  _STL_ERROR::__preincrement_operator_requirement_violation(__i);
1358.617 -  _STL_ERROR::__postincrement_operator_requirement_violation(__i);
1358.618 -}
1358.619 -};
1358.620 -
1358.621 -/* OutputIterator Requirements */
1358.622 -
1358.623 -template <class _OutputIterator>
1358.624 -struct _OutputIterator_concept_specification {
1358.625 -static void
1358.626 -_OutputIterator_requirement_violation(_OutputIterator __i) {
1358.627 -  // Refinement of Assignable
1358.628 -  _Assignable_concept_specification<_OutputIterator>::
1358.629 -    _Assignable_requirement_violation(__i);
1358.630 -  // Associated Types
1358.631 -  __iterator_category_type_definition_requirement_violation<_OutputIterator>();
1358.632 -  // Valid Expressions
1358.633 -  _STL_ERROR::__dereference_operator_requirement_violation(__i);
1358.634 -  _STL_ERROR::__preincrement_operator_requirement_violation(__i);
1358.635 -  _STL_ERROR::__postincrement_operator_requirement_violation(__i);
1358.636 -  _STL_ERROR::
1358.637 -    __postincrement_operator_and_assignment_requirement_violation(__i, *__i);
1358.638 -}
1358.639 -};
1358.640 -
1358.641 -/* ForwardIterator Requirements */
1358.642 -
1358.643 -template <class _ForwardIterator>
1358.644 -struct _ForwardIterator_concept_specification {
1358.645 -static void
1358.646 -_ForwardIterator_requirement_violation(_ForwardIterator __i) {
1358.647 -  // Refinement of InputIterator
1358.648 -  _InputIterator_concept_specification<_ForwardIterator>::
1358.649 -    _InputIterator_requirement_violation(__i);
1358.650 -}
1358.651 -};
1358.652 -
1358.653 -template <class _ForwardIterator>
1358.654 -struct _Mutable_ForwardIterator_concept_specification {
1358.655 -static void
1358.656 -_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) {
1358.657 -  _ForwardIterator_concept_specification<_ForwardIterator>::
1358.658 -    _ForwardIterator_requirement_violation(__i);
1358.659 -  // Refinement of OutputIterator
1358.660 -  _OutputIterator_concept_specification<_ForwardIterator>::
1358.661 -    _OutputIterator_requirement_violation(__i);
1358.662 -}
1358.663 -};
1358.664 -
1358.665 -/* BidirectionalIterator Requirements */
1358.666 -
1358.667 -template <class _BidirectionalIterator>
1358.668 -struct _BidirectionalIterator_concept_specification {
1358.669 -static void
1358.670 -_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) {
1358.671 -  // Refinement of ForwardIterator
1358.672 -  _ForwardIterator_concept_specification<_BidirectionalIterator>::
1358.673 -    _ForwardIterator_requirement_violation(__i);
1358.674 -  // Valid Expressions
1358.675 -  _STL_ERROR::__predecrement_operator_requirement_violation(__i);
1358.676 -  _STL_ERROR::__postdecrement_operator_requirement_violation(__i);
1358.677 -}
1358.678 -};
1358.679 -
1358.680 -template <class _BidirectionalIterator>
1358.681 -struct _Mutable_BidirectionalIterator_concept_specification {
1358.682 -static void
1358.683 -_Mutable_BidirectionalIterator_requirement_violation(
1358.684 -       _BidirectionalIterator __i)
1358.685 -{
1358.686 -  _BidirectionalIterator_concept_specification<_BidirectionalIterator>::
1358.687 -    _BidirectionalIterator_requirement_violation(__i);
1358.688 -  // Refinement of mutable_ForwardIterator
1358.689 -  _Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>::
1358.690 -    _Mutable_ForwardIterator_requirement_violation(__i);
1358.691 -  typedef typename
1358.692 -    __value_type_type_definition_requirement_violation<
1358.693 -    _BidirectionalIterator>::value_type __T;
1358.694 -  typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0;
1358.695 -  // Valid Expressions
1358.696 -  _STL_ERROR::
1358.697 -    __postincrement_operator_and_assignment_requirement_violation(__i,
1358.698 -                                                                  *__tmp_ptr);
1358.699 -}
1358.700 -};
1358.701 -
1358.702 -/* RandomAccessIterator Requirements */
1358.703 -
1358.704 -template <class _RandAccIter>
1358.705 -struct _RandomAccessIterator_concept_specification {
1358.706 -static void
1358.707 -_RandomAccessIterator_requirement_violation(_RandAccIter __i) {
1358.708 -  // Refinement of BidirectionalIterator
1358.709 -  _BidirectionalIterator_concept_specification<_RandAccIter>::
1358.710 -    _BidirectionalIterator_requirement_violation(__i);
1358.711 -  // Refinement of LessThanComparable
1358.712 -  _LessThanComparable_concept_specification<_RandAccIter>::
1358.713 -    _LessThanComparable_requirement_violation(__i);
1358.714 -  typedef typename 
1358.715 -        __value_type_type_definition_requirement_violation<_RandAccIter>
1358.716 -        ::value_type
1358.717 -    value_type;
1358.718 -  typedef typename
1358.719 -        __difference_type_type_definition_requirement_violation<_RandAccIter>
1358.720 -        ::difference_type 
1358.721 -    _Dist;
1358.722 -  typedef typename _Mutable_trait<_Dist>::_Type _MutDist;
1358.723 -
1358.724 -  // Valid Expressions
1358.725 -  _STL_ERROR::__iterator_addition_assignment_requirement_violation(__i,
1358.726 -                                                                   _MutDist());
1358.727 -  _STL_ERROR::__iterator_addition_requirement_violation(__i,
1358.728 -                                                        _MutDist());
1358.729 -  _STL_ERROR::
1358.730 -    __iterator_subtraction_assignment_requirement_violation(__i,
1358.731 -                                                            _MutDist());
1358.732 -  _STL_ERROR::__iterator_subtraction_requirement_violation(__i,
1358.733 -                                                           _MutDist());
1358.734 -  _STL_ERROR::__difference_operator_requirement_violation(__i, __i,
1358.735 -                                                          _MutDist());
1358.736 -  typename _Mutable_trait<value_type>::_Type* __dummy_ptr = 0;
1358.737 -  _STL_ERROR::__element_access_operator_requirement_violation(__i,
1358.738 -                                                              __dummy_ptr,
1358.739 -                                                              _MutDist());
1358.740 -}
1358.741 -};
1358.742 -
1358.743 -template <class _RandAccIter>
1358.744 -struct _Mutable_RandomAccessIterator_concept_specification {
1358.745 -static void
1358.746 -_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i)
1358.747 -{
1358.748 -  _RandomAccessIterator_concept_specification<_RandAccIter>::
1358.749 -    _RandomAccessIterator_requirement_violation(__i);
1358.750 -  // Refinement of mutable_BidirectionalIterator
1358.751 -  _Mutable_BidirectionalIterator_concept_specification<_RandAccIter>::
1358.752 -    _Mutable_BidirectionalIterator_requirement_violation(__i);
1358.753 -  typedef typename
1358.754 -        __value_type_type_definition_requirement_violation<_RandAccIter>
1358.755 -        ::value_type
1358.756 -    value_type;
1358.757 -  typedef typename
1358.758 -        __difference_type_type_definition_requirement_violation<_RandAccIter>
1358.759 -        ::difference_type
1358.760 -    _Dist;
1358.761 -
1358.762 -  typename _Mutable_trait<value_type>::_Type* __tmp_ptr = 0;
1358.763 -  // Valid Expressions
1358.764 -  _STL_ERROR::__element_assignment_operator_requirement_violation(__i,
1358.765 -                  __tmp_ptr, _Dist());
1358.766 -}
1358.767 -};
1358.768 -
1358.769 -#define _STLP_TYPEDEF_REQUIREMENT(__REQUIREMENT) \
1358.770 -template <class Type> \
1358.771 -struct __##__REQUIREMENT##__typedef_requirement_violation { \
1358.772 -  typedef typename Type::__REQUIREMENT __REQUIREMENT; \
1358.773 -};
1358.774 -
1358.775 -_STLP_TYPEDEF_REQUIREMENT(value_type);
1358.776 -_STLP_TYPEDEF_REQUIREMENT(difference_type);
1358.777 -_STLP_TYPEDEF_REQUIREMENT(size_type);
1358.778 -_STLP_TYPEDEF_REQUIREMENT(reference);
1358.779 -_STLP_TYPEDEF_REQUIREMENT(const_reference);
1358.780 -_STLP_TYPEDEF_REQUIREMENT(pointer);
1358.781 -_STLP_TYPEDEF_REQUIREMENT(const_pointer);
1358.782 -
1358.783 -
1358.784 -template <class _Alloc>
1358.785 -struct _Allocator_concept_specification {
1358.786 -static void
1358.787 -_Allocator_requirement_violation(_Alloc __a) {
1358.788 -  // Refinement of DefaultConstructible
1358.789 -  _DefaultConstructible_concept_specification<_Alloc>::
1358.790 -    _DefaultConstructible_requirement_violation(__a);
1358.791 -  // Refinement of EqualityComparable
1358.792 -  _EqualityComparable_concept_specification<_Alloc>::
1358.793 -    _EqualityComparable_requirement_violation(__a);
1358.794 -  // Associated Types
1358.795 -  __value_type__typedef_requirement_violation<_Alloc>();
1358.796 -  __difference_type__typedef_requirement_violation<_Alloc>();
1358.797 -  __size_type__typedef_requirement_violation<_Alloc>();
1358.798 -  __reference__typedef_requirement_violation<_Alloc>();
1358.799 -  __const_reference__typedef_requirement_violation<_Alloc>();
1358.800 -  __pointer__typedef_requirement_violation<_Alloc>();
1358.801 -  __const_pointer__typedef_requirement_violation<_Alloc>();
1358.802 -  typedef typename _Alloc::value_type _Type;
1358.803 -  _STLP_REQUIRES_SAME_TYPE(typename _Alloc::rebind<_Type>::other, _Alloc);
1358.804 -}
1358.805 -};
1358.806 -
1358.807 -#endif /* _STLP_USE_CONCEPT_CHECKS */
1358.808 -
1358.809 -#endif /* __CONCEPT_CHECKS_H */
1358.810 -
1358.811 -// Local Variables:
1358.812 -// mode:C++
1358.813 -// End:
  1359.1 --- a/epoc32/include/stdapis/stlport/stl/debug/_debug.c	Tue Mar 16 16:12:26 2010 +0000
  1359.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1359.3 @@ -1,496 +0,0 @@
  1359.4 -/*
  1359.5 - * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1359.6 - *
  1359.7 - * Copyright (c) 1997
  1359.8 - * Moscow Center for SPARC Technology
  1359.9 - *
 1359.10 - * Copyright (c) 1999 
 1359.11 - * Boris Fomitchev
 1359.12 - *
 1359.13 - * This material is provided "as is", with absolutely no warranty expressed
 1359.14 - * or implied. Any use is at your own risk.
 1359.15 - *
 1359.16 - * Permission to use or copy this software for any purpose is hereby granted 
 1359.17 - * without fee, provided the above notices are retained on all copies.
 1359.18 - * Permission to modify the code and to distribute modified code is granted,
 1359.19 - * provided the above notices are retained, and a notice that the code was
 1359.20 - * modified is included with the above copyright notice.
 1359.21 - *
 1359.22 - */
 1359.23 -
 1359.24 -# ifndef _STLP_DEBUG_C
 1359.25 -#  define  _STLP_DEBUG_C
 1359.26 -
 1359.27 -#if defined ( _STLP_DEBUG )
 1359.28 -
 1359.29 -# ifdef _STLP_THREADS
 1359.30 -#  ifndef _STLP_NEED_MUTABLE 
 1359.31 -#   define _STLP_ACQUIRE_LOCK(_Lock) _Lock._M_acquire_lock();
 1359.32 -#   define _STLP_RELEASE_LOCK(_Lock) _Lock._M_release_lock();
 1359.33 -#  else
 1359.34 -#   define _STLP_ACQUIRE_LOCK(_Lock) ((_STLP_mutex&)_Lock)._M_acquire_lock();
 1359.35 -#   define _STLP_RELEASE_LOCK(_Lock) ((_STLP_mutex&)_Lock)._M_release_lock();
 1359.36 -#  endif /* _STLP_NEED_MUTABLE */
 1359.37 -# else
 1359.38 -#  define _STLP_ACQUIRE_LOCK(_Lock)
 1359.39 -#  define _STLP_RELEASE_LOCK(_Lock)
 1359.40 -# endif /* _STLP_THREADS */
 1359.41 -
 1359.42 -_STLP_BEGIN_NAMESPACE
 1359.43 -
 1359.44 -//==========================================================
 1359.45 -//  global non-inline functions
 1359.46 -//==========================================================
 1359.47 -
 1359.48 -// [ i1, i2)
 1359.49 -template <class _Iterator>
 1359.50 -inline bool  _STLP_CALL
 1359.51 -__in_range_aux(const _Iterator& __it, const _Iterator& __first,
 1359.52 -               const _Iterator& __last, const random_access_iterator_tag &) {
 1359.53 -    return ( __it >= __first && 
 1359.54 -             __it < __last);
 1359.55 -}
 1359.56 -
 1359.57 -template <class _Iterator1, class _Iterator>
 1359.58 -# if defined (_STLP_MSVC) && (_STLP_MSVC >= 1100)
 1359.59 -inline bool _STLP_CALL  __in_range_aux(_Iterator1 __it, const _Iterator& __first,
 1359.60 -# else
 1359.61 -inline bool _STLP_CALL  __in_range_aux(const _Iterator1& __it, const _Iterator& __first,
 1359.62 -# endif
 1359.63 -                                       const _Iterator& __last, const forward_iterator_tag &) {
 1359.64 -    _Iterator1 __i(__first);
 1359.65 -    for (;  __i != __last && __i != __it; ++__i);
 1359.66 -    return (__i!=__last);
 1359.67 -}
 1359.68 -
 1359.69 -# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
 1359.70 -template <class _Iterator1, class _Iterator>
 1359.71 -inline bool  _STLP_CALL
 1359.72 -__in_range_aux(const _Iterator1& __it, const _Iterator& __first,
 1359.73 -               const _Iterator& __last, const bidirectional_iterator_tag &) {
 1359.74 -    _Iterator1 __i(__first);
 1359.75 -    for (;  __i != __last && __i != __it; ++__i);
 1359.76 -    return (__i !=__last);
 1359.77 -}
 1359.78 -# endif
 1359.79 -
 1359.80 -template <class _Iterator>
 1359.81 -bool _STLP_CALL  __check_range(const _Iterator& __first, const _Iterator& __last) {
 1359.82 -    _STLP_VERBOSE_RETURN(__valid_range(__first,__last), _StlMsg_INVALID_RANGE )
 1359.83 -    return true;
 1359.84 -}
 1359.85 -
 1359.86 -template <class _Iterator>
 1359.87 -bool _STLP_CALL  __check_range(const _Iterator& __it, 
 1359.88 -                               const _Iterator& __start, const _Iterator& __finish) {
 1359.89 -    _STLP_VERBOSE_RETURN(__in_range(__it,__start, __finish), 
 1359.90 -                         _StlMsg_NOT_IN_RANGE_1)
 1359.91 -    return true;
 1359.92 -}
 1359.93 -
 1359.94 -template <class _Iterator>
 1359.95 -bool _STLP_CALL  __check_range(const _Iterator& __first, const _Iterator& __last, 
 1359.96 -                               const _Iterator& __start, const _Iterator& __finish) {
 1359.97 -    _STLP_VERBOSE_RETURN(__in_range(__first, __last, __start, __finish), 
 1359.98 -                         _StlMsg_NOT_IN_RANGE_2)
 1359.99 -    return true;
1359.100 -}
1359.101 -
1359.102 -//===============================================================
1359.103 -
1359.104 -template <class _Iterator>
1359.105 -void  _STLP_CALL __invalidate_range(const __owned_list* __base, 
1359.106 -                                    const _Iterator& __first,
1359.107 -                                    const _Iterator& __last)
1359.108 -{
1359.109 -    typedef _Iterator* _Safe_iterator_ptr;
1359.110 -    typedef __owned_link _L_type;
1359.111 -    _STLP_ACQUIRE_LOCK(__base->_M_lock)
1359.112 -    _L_type* __pos;
1359.113 -    _L_type* __prev;
1359.114 -
1359.115 -    for (__prev = (_L_type*)&__base->_M_node, __pos= (_L_type*)__prev->_M_next; 
1359.116 -         __pos!=0;) {	    
1359.117 -        if ((!(&__first == (_Iterator*)__pos || &__last == (_Iterator*)__pos))
1359.118 -            &&  __in_range_aux(
1359.119 -			       ((_Iterator*)__pos)->_M_iterator,
1359.120 -			       __first._M_iterator,
1359.121 -			       __last._M_iterator,
1359.122 -			       _STLP_ITERATOR_CATEGORY(__first, _Iterator))) {
1359.123 -	  __pos->_M_owner = 0;
1359.124 -	  __pos = (_L_type*) (__prev->_M_next = __pos->_M_next);
1359.125 -	}
1359.126 -	else {
1359.127 -	  __prev = __pos;
1359.128 -	  __pos=(_L_type*)__pos->_M_next;
1359.129 -	}
1359.130 -    }
1359.131 -    _STLP_RELEASE_LOCK(__base->_M_lock)    
1359.132 -}
1359.133 -
1359.134 -template <class _Iterator>
1359.135 -void  _STLP_CALL __invalidate_iterator(const __owned_list* __base, 
1359.136 -                                       const _Iterator& __it)
1359.137 -{
1359.138 -    typedef __owned_link   _L_type;
1359.139 -    _L_type*  __position, *__prev;
1359.140 -    _STLP_ACQUIRE_LOCK(__base->_M_lock)
1359.141 -    for (__prev = (_L_type*)&__base->_M_node, __position = (_L_type*)__prev->_M_next; 
1359.142 -         __position!= 0;) {
1359.143 -      // this requires safe iterators to be derived from __owned_link
1359.144 -       if ((__position != (_L_type*)&__it) && ((_Iterator*)__position)->_M_iterator ==__it._M_iterator) {
1359.145 -	    __position->_M_owner = 0;
1359.146 -	    __position = (_L_type*) (__prev->_M_next = __position->_M_next);
1359.147 -        }
1359.148 -       else {
1359.149 -	 __prev = __position;
1359.150 -	 __position=(_L_type*)__position->_M_next;
1359.151 -       }
1359.152 -    }
1359.153 -    _STLP_RELEASE_LOCK(__base->_M_lock)
1359.154 -}
1359.155 -
1359.156 -_STLP_END_NAMESPACE
1359.157 -
1359.158 -# endif /* _STLP_DEBUG */
1359.159 -
1359.160 -# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
1359.161 -
1359.162 -// dwa 12/26/99 -- for abort
1359.163 -#  if defined (_STLP_USE_NEW_C_HEADERS)
1359.164 -#   include <cstdlib>
1359.165 -#  else
1359.166 -#   include <stdlib.h>
1359.167 -#  endif
1359.168 -
1359.169 -# if defined (_STLP_WIN32)
1359.170 -#  include <stl/_threads.h>
1359.171 -# endif
1359.172 -
1359.173 -//==========================================================
1359.174 -// .c section
1359.175 -//  owned_list non-inline methods and global functions 
1359.176 -//==========================================================
1359.177 -
1359.178 -#if defined ( _STLP_ASSERTIONS )
1359.179 -
1359.180 -_STLP_BEGIN_NAMESPACE
1359.181 -
1359.182 -# ifndef _STLP_STRING_LITERAL
1359.183 -# define _STLP_STRING_LITERAL(__x) __x
1359.184 -# endif
1359.185 -
1359.186 -# ifdef _STLP_WINCE
1359.187 -#  define _STLP_PERCENT_S "%hs" 
1359.188 -# else
1359.189 -#  define _STLP_PERCENT_S "%s" 
1359.190 -# endif
1359.191 -
1359.192 -# define _STLP_MESSAGE_TABLE_BODY = { \
1359.193 -_STLP_STRING_LITERAL("\n" _STLP_PERCENT_S "(%d): STL error: %s\n"), \
1359.194 -_STLP_STRING_LITERAL(_STLP_PERCENT_S "(%d): STL assertion failure : " _STLP_PERCENT_S "\n" _STLP_ASSERT_MSG_TRAILER), \
1359.195 -_STLP_STRING_LITERAL("\n" _STLP_PERCENT_S "(%d): STL error : " _STLP_PERCENT_S "\n" _STLP_PERCENT_S "(%d): STL assertion failure:     " _STLP_PERCENT_S " \n" _STLP_ASSERT_MSG_TRAILER), \
1359.196 -_STLP_STRING_LITERAL("Invalid argument to operation (see operation documentation)"),                  \
1359.197 -_STLP_STRING_LITERAL("Taking an iterator out of destroyed (or otherwise corrupted) container"),       \
1359.198 -_STLP_STRING_LITERAL("Trying to extract an object out from empty container"),\
1359.199 -_STLP_STRING_LITERAL("Past-the-end iterator could not be erased"),  \
1359.200 -_STLP_STRING_LITERAL("Index out of bounds"),  \
1359.201 -_STLP_STRING_LITERAL("Container doesn't own the iterator"),  \
1359.202 -_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) iterator used"),  \
1359.203 -_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) lefthand iterator in expression"),  \
1359.204 -_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) righthand iterator in expression"),  \
1359.205 -_STLP_STRING_LITERAL("Iterators used in expression are from different owners"),  \
1359.206 -_STLP_STRING_LITERAL("Iterator could not be dereferenced (past-the-end ?)"),  \
1359.207 -_STLP_STRING_LITERAL("Range [first,last) is invalid"),  \
1359.208 -_STLP_STRING_LITERAL("Iterator is not in range [first,last)"),  \
1359.209 -_STLP_STRING_LITERAL("Range [first,last) is not in range [start,finish)"),  \
1359.210 -_STLP_STRING_LITERAL("The advance would produce invalid iterator"),  \
1359.211 -_STLP_STRING_LITERAL("Iterator is singular (advanced beyond the bounds ?)"),  \
1359.212 -_STLP_STRING_LITERAL("Memory block deallocated twice"),  \
1359.213 -_STLP_STRING_LITERAL("Deallocating a block that was never allocated"),  \
1359.214 -_STLP_STRING_LITERAL("Deallocating a memory block allocated for another type"),  \
1359.215 -_STLP_STRING_LITERAL("Size of block passed to deallocate() doesn't match block size"),  \
1359.216 -_STLP_STRING_LITERAL("Pointer underrun - safety margin at front of memory block overwritten"),  \
1359.217 -_STLP_STRING_LITERAL("Pointer overrrun - safety margin at back of memory block overwritten"),   \
1359.218 -_STLP_STRING_LITERAL("Attempt to dereference null pointer returned by auto_ptr::get()"),   \
1359.219 -_STLP_STRING_LITERAL("Unknown problem") \
1359.220 -  }
1359.221 -
1359.222 -# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1359.223 -#ifdef __SYMBIAN32__
1359.224 -template <class _Dummy>
1359.225 -const char* __stl_debug_engine<_Dummy>::_Message_table[_StlMsg_MAX];//  _STLP_MESSAGE_TABLE_BODY;
1359.226 -#else
1359.227 -template <class _Dummy>
1359.228 -const char* __stl_debug_engine<_Dummy>::_Message_table[_StlMsg_MAX]  _STLP_MESSAGE_TABLE_BODY;
1359.229 -#endif
1359.230 -
1359.231 -# else
1359.232 -__DECLARE_INSTANCE(const char*, __stl_debug_engine<bool>::_Message_table[_StlMsg_MAX],
1359.233 -		   _STLP_MESSAGE_TABLE_BODY);
1359.234 -
1359.235 -# endif
1359.236 -
1359.237 -# undef _STLP_STRING_LITERAL
1359.238 -# undef _STLP_PERCENT_S
1359.239 -_STLP_END_NAMESPACE
1359.240 -
1359.241 -// abort()
1359.242 -#    include <cstdlib>
1359.243 -
1359.244 -#  if !defined( _STLP_DEBUG_MESSAGE )
1359.245 -
1359.246 -#    include <cstdarg>
1359.247 -#    include <cstdio>
1359.248 -
1359.249 -_STLP_BEGIN_NAMESPACE
1359.250 -
1359.251 -template <class _Dummy>
1359.252 -void _STLP_CALL  
1359.253 -__stl_debug_engine<_Dummy>::_Message(const char * __format_str, ...)
1359.254 -{
1359.255 -	STLPORT_CSTD::va_list __args;
1359.256 -	va_start( __args, __format_str );
1359.257 -
1359.258 -# if defined (_STLP_WINCE)
1359.259 -	TCHAR __buffer[512];
1359.260 -	int _convert = strlen(__format_str) + 1;
1359.261 -	LPWSTR _lpw = (LPWSTR)alloca(_convert*sizeof(wchar_t));
1359.262 -	_lpw[0] = '\0';
1359.263 -	MultiByteToWideChar(GetACP(), 0, __format_str, -1, _lpw, _convert);
1359.264 -	wvsprintf(__buffer, _lpw, __args);
1359.265 -	//	wvsprintf(__buffer, __format_str, __args);
1359.266 -	_STLP_WINCE_TRACE(__buffer);
1359.267 -# elif defined (_STLP_WIN32) && ( defined(_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)) && ! defined (__WINS__)
1359.268 -    char __buffer [4096];
1359.269 -    _vsnprintf(__buffer, sizeof(__buffer) / sizeof(char),
1359.270 -               __format_str, __args);
1359.271 -    OutputDebugStringA(__buffer);
1359.272 -# elif defined (__amigaos__)
1359.273 -    STLPORT_CSTD::vfprintf(stderr, __format_str, (char *)__args);
1359.274 -# else
1359.275 -    STLPORT_CSTD::vfprintf(stderr, __format_str, __args);
1359.276 -# endif /* WINCE */
1359.277 -
1359.278 -# ifdef _STLP_DEBUG_MESSAGE_POST
1359.279 -	_STLP_DEBUG_MESSAGE_POST
1359.280 -# endif
1359.281 -
1359.282 -    va_end(__args);
1359.283 -
1359.284 -}
1359.285 -
1359.286 -_STLP_END_NAMESPACE
1359.287 -
1359.288 -#  endif /* _STLP_DEBUG_MESSAGE */
1359.289 -
1359.290 -
1359.291 -_STLP_BEGIN_NAMESPACE
1359.292 -
1359.293 -
1359.294 -template <class _Dummy>
1359.295 -void _STLP_CALL  
1359.296 -__stl_debug_engine<_Dummy>::_IndexedError(int __error_ind, const char* __f, int __l)
1359.297 -{
1359.298 -  __stl_debug_message(_Message_table[_StlFormat_ERROR_RETURN], 
1359.299 -		      __f, __l, _Message_table[__error_ind]);
1359.300 -}
1359.301 -
1359.302 -template <class _Dummy>
1359.303 -void _STLP_CALL  
1359.304 -__stl_debug_engine<_Dummy>::_VerboseAssert(const char* __expr, int __error_ind, const char* __f, int __l)
1359.305 -{
1359.306 -  __stl_debug_message(_Message_table[_StlFormat_VERBOSE_ASSERTION_FAILURE],
1359.307 -		      __f, __l, _Message_table[__error_ind], __f, __l, __expr);
1359.308 -  __stl_debug_terminate();
1359.309 -}
1359.310 -
1359.311 -template <class _Dummy>
1359.312 -void _STLP_CALL 
1359.313 -__stl_debug_engine<_Dummy>::_Assert(const char* __expr, const char* __f, int __l)
1359.314 -{
1359.315 -  __stl_debug_message(_Message_table[_StlFormat_ASSERTION_FAILURE],__f, __l, __expr);
1359.316 -  __stl_debug_terminate();
1359.317 -}
1359.318 -
1359.319 -// if exceptions are present, sends unique exception
1359.320 -// if not, calls abort() to terminate
1359.321 -template <class _Dummy>
1359.322 -void _STLP_CALL 
1359.323 -__stl_debug_engine<_Dummy>::_Terminate()
1359.324 -{
1359.325 -# ifdef _STLP_USE_NAMESPACES
1359.326 -  using namespace _STLP_STD;
1359.327 -# endif
1359.328 -# if defined (_STLP_USE_EXCEPTIONS) && ! defined (_STLP_NO_DEBUG_EXCEPTIONS)
1359.329 -  throw __stl_debug_exception();
1359.330 -# else
1359.331 -  _STLP_ABORT();
1359.332 -# endif
1359.333 -}
1359.334 -
1359.335 -_STLP_END_NAMESPACE
1359.336 -
1359.337 -# endif /* _STLP_ASSERTIONS */
1359.338 -
1359.339 -#ifdef _STLP_DEBUG
1359.340 -
1359.341 -_STLP_BEGIN_NAMESPACE
1359.342 -
1359.343 -//==========================================================
1359.344 -//  owned_list non-inline methods 
1359.345 -//==========================================================
1359.346 -
1359.347 -template <class _Dummy>
1359.348 -void  _STLP_CALL
1359.349 -__stl_debug_engine<_Dummy>::_Invalidate_all(__owned_list* __l) {
1359.350 -  _STLP_ACQUIRE_LOCK(__l->_M_lock);
1359.351 -  _Stamp_all(__l, 0);
1359.352 -  __l->_M_node._M_next =0;
1359.353 -  _STLP_RELEASE_LOCK(__l->_M_lock);
1359.354 -}
1359.355 -
1359.356 -// boris : this is unasafe routine; should be used from within critical section only !
1359.357 -template <class _Dummy>
1359.358 -void  _STLP_CALL
1359.359 -__stl_debug_engine<_Dummy>::_Stamp_all(__owned_list* __l, __owned_list* __o) {
1359.360 -  // crucial
1359.361 -  if (__l->_M_node._M_owner) {
1359.362 -    for (__owned_link*  __position = (__owned_link*)__l->_M_node._M_next; 
1359.363 -	 __position != 0; __position= (__owned_link*)__position->_M_next) {
1359.364 -      _STLP_ASSERT(__position->_Owner()== __l)
1359.365 -      __position->_M_owner=__o;
1359.366 -    }
1359.367 -  }
1359.368 -}
1359.369 -
1359.370 -template <class _Dummy>
1359.371 -void  _STLP_CALL
1359.372 -__stl_debug_engine<_Dummy>::_Verify(const __owned_list* __l) {
1359.373 -  _STLP_ACQUIRE_LOCK(__l->_M_lock);
1359.374 -  if (__l) {
1359.375 -    _STLP_ASSERT(__l->_M_node._Owner() != 0)
1359.376 -    for (__owned_link* __position = (__owned_link*)__l->_M_node._M_next; 
1359.377 -         __position != 0; __position= (__owned_link*)__position->_M_next) {
1359.378 -      _STLP_ASSERT(__position->_Owner()== __l)
1359.379 -    }
1359.380 -  }
1359.381 -  _STLP_RELEASE_LOCK(__l->_M_lock);
1359.382 -}
1359.383 -
1359.384 -template <class _Dummy>
1359.385 -void _STLP_CALL  
1359.386 -__stl_debug_engine<_Dummy>::_Swap_owners(__owned_list& __x, __owned_list& __y) {
1359.387 -
1359.388 -  //  according to the standard : --no swap() function invalidates any references, 
1359.389 -  //  pointers,  or  iterators referring to the elements of the containers being swapped.
1359.390 -
1359.391 -  __owned_link* __tmp;
1359.392 -
1359.393 -  // boris : there is a deadlock potential situation here if we lock two containers sequentially.
1359.394 -  // As user is supposed to provide its own synchronization around swap() ( it is unsafe to do any container/iterator access
1359.395 -  // in parallel with swap()), we just do not use any locking at all -- that behaviour is closer to non-debug version
1359.396 -
1359.397 -  __tmp = __x._M_node._M_next;
1359.398 -
1359.399 -  _Stamp_all(&__x, &__y);
1359.400 -  _Stamp_all(&__y, &__x);
1359.401 -
1359.402 -  __x._M_node._M_next = __y._M_node._M_next;
1359.403 -  __y._M_node._M_next = __tmp;  
1359.404 -
1359.405 -}
1359.406 -
1359.407 -template <class _Dummy>
1359.408 -void _STLP_CALL 
1359.409 -__stl_debug_engine<_Dummy>::_M_detach(__owned_list* __l, __owned_link* __c_node) {
1359.410 -  if (__l  != 0) {
1359.411 -
1359.412 -    _STLP_VERBOSE_ASSERT(__l->_Owner()!=0, _StlMsg_INVALID_CONTAINER)
1359.413 -
1359.414 -    _STLP_ACQUIRE_LOCK(__l->_M_lock)
1359.415 -      // boris : re-test the condition in case someone else already deleted us
1359.416 -      if(__c_node->_M_owner != 0) {
1359.417 -        __owned_link* __prev, *__next;
1359.418 -        
1359.419 -        for (__prev = &__l->_M_node; (__next = __prev->_M_next) != __c_node; 
1359.420 -             __prev = __next) {
1359.421 -          _STLP_ASSERT(__next && __next->_Owner() == __l)
1359.422 -            }
1359.423 -        
1359.424 -        __prev->_M_next = __c_node->_M_next;
1359.425 -        __c_node->_M_owner=0;
1359.426 -      }
1359.427 -    _STLP_RELEASE_LOCK(__l->_M_lock)
1359.428 -  }
1359.429 -}
1359.430 -
1359.431 -template <class _Dummy>
1359.432 -void _STLP_CALL 
1359.433 -__stl_debug_engine<_Dummy>::_M_attach(__owned_list* __l, __owned_link* __c_node) {
1359.434 -  if (__l ==0) {
1359.435 -    (__c_node)->_M_owner = 0;    
1359.436 -  } else {
1359.437 -    _STLP_VERBOSE_ASSERT(__l->_Owner()!=0, _StlMsg_INVALID_CONTAINER)
1359.438 -    _STLP_ACQUIRE_LOCK(__l->_M_lock)
1359.439 -    __c_node->_M_owner = __l;
1359.440 -    __c_node->_M_next = __l->_M_node._M_next;
1359.441 -    __l->_M_node._M_next = __c_node;
1359.442 -    _STLP_RELEASE_LOCK(__l->_M_lock)
1359.443 -  }
1359.444 -}
1359.445 -
1359.446 -
1359.447 -template <class _Dummy>
1359.448 -void* _STLP_CALL
1359.449 -__stl_debug_engine<_Dummy>::_Get_container_ptr(const __owned_link* __l) {
1359.450 -  const __owned_list* __owner    = __l->_Owner();
1359.451 -  _STLP_VERBOSE_RETURN_0(__owner != 0, _StlMsg_INVALID_ITERATOR)
1359.452 -  void* __ret = __CONST_CAST(void*,__owner->_Owner());
1359.453 -  _STLP_VERBOSE_RETURN_0(__ret !=0, _StlMsg_INVALID_CONTAINER)
1359.454 -  return __ret;
1359.455 -}
1359.456 -
1359.457 -template <class _Dummy>
1359.458 -bool _STLP_CALL
1359.459 -__stl_debug_engine<_Dummy>::_Check_same_owner( const __owned_link& __i1, 
1359.460 -                                               const __owned_link& __i2)
1359.461 -{
1359.462 -  _STLP_VERBOSE_RETURN(__i1._Valid(), _StlMsg_INVALID_LEFTHAND_ITERATOR)
1359.463 -  _STLP_VERBOSE_RETURN(__i2._Valid(), _StlMsg_INVALID_RIGHTHAND_ITERATOR)
1359.464 -  _STLP_VERBOSE_RETURN((__i1._Owner()==__i2._Owner()), _StlMsg_DIFFERENT_OWNERS)
1359.465 -  return true;
1359.466 -}
1359.467 -
1359.468 -template <class _Dummy>
1359.469 -bool  _STLP_CALL
1359.470 -__stl_debug_engine<_Dummy>::_Check_same_owner_or_null( const __owned_link& __i1, 
1359.471 -						       const __owned_link& __i2)
1359.472 -{
1359.473 -  _STLP_VERBOSE_RETURN(__i1._Owner()==__i2._Owner(), _StlMsg_DIFFERENT_OWNERS)
1359.474 -  return true;
1359.475 -}
1359.476 -
1359.477 -template <class _Dummy>
1359.478 -bool _STLP_CALL
1359.479 -__stl_debug_engine<_Dummy>::_Check_if_owner( const __owned_list * __l, const __owned_link& __it)
1359.480 -{
1359.481 -  const __owned_list* __owner_ptr = __it._Owner();
1359.482 -  _STLP_VERBOSE_RETURN(__owner_ptr!=0, _StlMsg_INVALID_ITERATOR)
1359.483 -  _STLP_VERBOSE_RETURN(__l==__owner_ptr, _StlMsg_NOT_OWNER)
1359.484 -  return true;
1359.485 -}
1359.486 -
1359.487 -
1359.488 -_STLP_END_NAMESPACE
1359.489 -
1359.490 -#endif /* _STLP_DEBUG */
1359.491 -
1359.492 -#endif /* if defined (EXPOSE_GLOBALS_IMPLEMENTATION) */
1359.493 -
1359.494 -#endif /* header guard */
1359.495 -
1359.496 -// Local Variables:
1359.497 -// mode:C++
1359.498 -// End:
1359.499 -
  1360.1 --- a/epoc32/include/stdapis/stlport/stl/debug/_debug.h	Tue Mar 16 16:12:26 2010 +0000
  1360.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1360.3 @@ -1,426 +0,0 @@
  1360.4 -/*
  1360.5 - *
  1360.6 - * Copyright (c) 1997
  1360.7 - * Moscow Center for SPARC Technology
  1360.8 - *
  1360.9 - * Copyright (c) 1999 
 1360.10 - * Boris Fomitchev
 1360.11 - *
 1360.12 - * This material is provided "as is", with absolutely no warranty expressed
 1360.13 - * or implied. Any use is at your own risk.
 1360.14 - *
 1360.15 - * Permission to use or copy this software for any purpose is hereby granted 
 1360.16 - * without fee, provided the above notices are retained on all copies.
 1360.17 - * Permission to modify the code and to distribute modified code is granted,
 1360.18 - * provided the above notices are retained, and a notice that the code was
 1360.19 - * modified is included with the above copyright notice.
 1360.20 - *
 1360.21 - */
 1360.22 -
 1360.23 -#ifndef _STLP_DEBUG_H
 1360.24 -# define _STLP_DEBUG_H
 1360.25 -
 1360.26 -# if defined (_STLP_ASSERTIONS) || defined (_STLP_DEBUG)
 1360.27 -
 1360.28 -#ifndef _STLP_CONFIG_H
 1360.29 -# include <stl/_config.h>
 1360.30 -#endif
 1360.31 -
 1360.32 -# if !defined (_STLP_EXTRA_OPERATORS_FOR_DEBUG) && \
 1360.33 -     ( defined (_STLP_BASE_MATCH_BUG) || (defined (_STLP_MSVC) && _STLP_MSVC < 1100 ) )
 1360.34 -#  define _STLP_EXTRA_OPERATORS_FOR_DEBUG
 1360.35 -# endif
 1360.36 -
 1360.37 -# if !defined(_STLP_FILE__)
 1360.38 -#   define _STLP_FILE__ __FILE__
 1360.39 -# endif
 1360.40 - 
 1360.41 -enum {
 1360.42 -  _StlFormat_ERROR_RETURN,
 1360.43 -  _StlFormat_ASSERTION_FAILURE,
 1360.44 -  _StlFormat_VERBOSE_ASSERTION_FAILURE,
 1360.45 -  _StlMsg_INVALID_ARGUMENT,
 1360.46 -  _StlMsg_INVALID_CONTAINER,
 1360.47 -  _StlMsg_EMPTY_CONTAINER,
 1360.48 -  _StlMsg_ERASE_PAST_THE_END,
 1360.49 -  _StlMsg_OUT_OF_BOUNDS,
 1360.50 -  _StlMsg_NOT_OWNER,
 1360.51 -  _StlMsg_INVALID_ITERATOR,
 1360.52 -  _StlMsg_INVALID_LEFTHAND_ITERATOR,
 1360.53 -  _StlMsg_INVALID_RIGHTHAND_ITERATOR,
 1360.54 -  _StlMsg_DIFFERENT_OWNERS     ,
 1360.55 -  _StlMsg_NOT_DEREFERENCEABLE  ,
 1360.56 -  _StlMsg_INVALID_RANGE        ,
 1360.57 -  _StlMsg_NOT_IN_RANGE_1       ,
 1360.58 -  _StlMsg_NOT_IN_RANGE_2       ,
 1360.59 -  _StlMsg_INVALID_ADVANCE      ,
 1360.60 -  _StlMsg_SINGULAR_ITERATOR    ,
 1360.61 -  // debug alloc messages
 1360.62 -  _StlMsg_DBA_DELETED_TWICE    ,
 1360.63 -  _StlMsg_DBA_NEVER_ALLOCATED  ,
 1360.64 -  _StlMsg_DBA_TYPE_MISMATCH    ,
 1360.65 -  _StlMsg_DBA_SIZE_MISMATCH    ,
 1360.66 -  _StlMsg_DBA_UNDERRUN         ,
 1360.67 -  _StlMsg_DBA_OVERRUN          ,
 1360.68 -  // auto_ptr messages
 1360.69 -  _StlMsg_AUTO_PTR_NULL    ,
 1360.70 -  _StlMsg_UNKNOWN
 1360.71 -  /* _StlMsg_MAX */
 1360.72 -};
 1360.73 -
 1360.74 -/* have to hardcode that ;() */
 1360.75 -# define _StlMsg_MAX 27
 1360.76 -
 1360.77 -_STLP_BEGIN_NAMESPACE
 1360.78 -
 1360.79 -// This class is unique (not inherited from exception),
 1360.80 -// to disallow catch in anything but (...)
 1360.81 -struct __stl_debug_exception {
 1360.82 -  // no members
 1360.83 -};
 1360.84 -
 1360.85 -class _STLP_CLASS_DECLSPEC __owned_link;
 1360.86 -class _STLP_CLASS_DECLSPEC __owned_list;
 1360.87 -
 1360.88 -template <class _Dummy>
 1360.89 -struct __stl_debug_engine {
 1360.90 -
 1360.91 -  // Basic routine to report any debug message
 1360.92 -  // Use _STLP_DEBUG_MESSAGE to override
 1360.93 -  static void _STLP_CALL _Message(const char * format_str, ...);
 1360.94 -
 1360.95 -  // Micsellanous function to report indexed error message
 1360.96 -  static void _STLP_CALL  _IndexedError(int __ind, const char* __f, int __l);
 1360.97 -
 1360.98 -  // Basic assertion report mechanism.
 1360.99 -  // Reports failed assertion via __stl_debug_message and calls _Terminate
1360.100 -  // if _STLP_DEBUG_TERMINATE is specified, calls __stl_debug_terminate instead
1360.101 -  static void _STLP_CALL  _Assert(const char* __expr, const char* __f, int __l);
1360.102 -
1360.103 -  // The same, with additional diagnostics
1360.104 -  static void _STLP_CALL  _VerboseAssert(const char* __expr, int __error_ind, const char* __f, int __l);
1360.105 -
1360.106 -  // If exceptions are present, sends unique exception
1360.107 -  // If not, calls _STLP_ABORT() to terminate
1360.108 -  // Use _STLP_DEBUG_TERMINATE to override
1360.109 -  static void _STLP_CALL  _Terminate();
1360.110 -
1360.111 -# ifdef _STLP_DEBUG
1360.112 -
1360.113 -  // owned_list/link delegate non-inline functions here
1360.114 -
1360.115 -  static bool _STLP_CALL  _Check_same_owner( const __owned_link& __i1, 
1360.116 -                                             const __owned_link& __i2);
1360.117 -  static bool _STLP_CALL  _Check_same_owner_or_null( const __owned_link& __i1, 
1360.118 -                                                     const __owned_link& __i2);
1360.119 -  static bool  _STLP_CALL _Check_if_owner( const __owned_list*, const __owned_link&);
1360.120 -
1360.121 -  static void _STLP_CALL  _Verify(const __owned_list*);
1360.122 -  
1360.123 -  static void _STLP_CALL  _Swap_owners(__owned_list&, __owned_list& /*, bool __swap_roots */ );
1360.124 - 
1360.125 -  static void _STLP_CALL  _Invalidate_all(__owned_list*);
1360.126 -  
1360.127 -  static void _STLP_CALL  _Stamp_all(__owned_list*, __owned_list*);
1360.128 -
1360.129 -  static void _STLP_CALL  _M_detach(__owned_list*, __owned_link*);
1360.130 -
1360.131 -  static void _STLP_CALL  _M_attach(__owned_list*, __owned_link*);
1360.132 -
1360.133 -  // accessor : check and get pointer to the container
1360.134 -  static void* _STLP_CALL  _Get_container_ptr(const __owned_link*);
1360.135 -# endif /* _STLP_DEBUG */
1360.136 -
1360.137 -  // debug messages and formats
1360.138 -   _STLP_STATIC_MEMBER_DECLSPEC static const char* _Message_table[_StlMsg_MAX];
1360.139 -};
1360.140 -
1360.141 -
1360.142 -# if defined (_STLP_USE_TEMPLATE_EXPORT)
1360.143 -_STLP_EXPORT_TEMPLATE struct _STLP_CLASS_DECLSPEC __stl_debug_engine<bool>;
1360.144 -# endif /* _STLP_USE_TEMPLATE_EXPORT */
1360.145 -
1360.146 -typedef __stl_debug_engine<bool> __stl_debugger;
1360.147 -
1360.148 -_STLP_END_NAMESPACE
1360.149 -
1360.150 -#  ifndef _STLP_ASSERT
1360.151 -#   define _STLP_ASSERT(expr) \
1360.152 -     if (!(expr)) {STLPORT::__stl_debugger::_Assert( # expr, _STLP_FILE__, __LINE__);}
1360.153 -#  endif
1360.154 -
1360.155 -# endif /* _STLP_ASSERTIONS || _STLP_DEBUG */
1360.156 -
1360.157 -
1360.158 -// this section is for _STLP_DEBUG only 
1360.159 -#if defined ( _STLP_DEBUG )
1360.160 -
1360.161 -# ifndef _STLP_VERBOSE_ASSERT
1360.162 -// fbp : new form not requiring ";"
1360.163 -#  define _STLP_VERBOSE_ASSERT(expr,__diag_num) \
1360.164 -    if (!(expr)) { STLPORT::__stl_debugger::_VerboseAssert\
1360.165 -                                 ( # expr,  __diag_num, _STLP_FILE__, __LINE__ ); \
1360.166 -         }
1360.167 -# endif
1360.168 -
1360.169 -#  define _STLP_DEBUG_CHECK(expr) _STLP_ASSERT(expr)
1360.170 -#  define _STLP_DEBUG_DO(expr)    expr;
1360.171 -
1360.172 -# ifndef _STLP_VERBOSE_RETURN
1360.173 -#  define _STLP_VERBOSE_RETURN(__expr,__diag_num) if (!(__expr)) { \
1360.174 -       __stl_debugger::_IndexedError(__diag_num, __FILE__ , __LINE__); \
1360.175 -       return false; }
1360.176 -# endif
1360.177 -
1360.178 -# ifndef _STLP_VERBOSE_RETURN_0
1360.179 -#  define _STLP_VERBOSE_RETURN_0(__expr,__diag_num) if (!(__expr)) { \
1360.180 -       __stl_debugger::_IndexedError(__diag_num, __FILE__ , __LINE__); \
1360.181 -       return 0; }
1360.182 -# endif
1360.183 -
1360.184 -#if ! defined (_STLP_INTERNAL_THREADS_H)
1360.185 -# include <stl/_threads.h>
1360.186 -#endif
1360.187 -
1360.188 -#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
1360.189 -# include <stl/_iterator_base.h>
1360.190 -#endif
1360.191 -
1360.192 -_STLP_BEGIN_NAMESPACE
1360.193 -
1360.194 -//=============================================================
1360.195 -template <class _Iterator>
1360.196 -inline bool  _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, 
1360.197 -                                      const random_access_iterator_tag&) { 
1360.198 -    return (__i1< __i2) || (__i1 == __i2);
1360.199 -}
1360.200 -
1360.201 -template <class _Iterator>
1360.202 -inline bool  _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2,
1360.203 -                                      const bidirectional_iterator_tag&) { 
1360.204 -    // check if comparable
1360.205 -    bool __dummy(__i1==__i2);
1360.206 -    return (__dummy==__dummy); 
1360.207 -}
1360.208 -
1360.209 -template <class _Iterator>
1360.210 -inline bool  _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, const forward_iterator_tag&) { 
1360.211 -    // check if comparable
1360.212 -    bool __dummy(__i1==__i2);
1360.213 -    return (__dummy==__dummy); 
1360.214 -}
1360.215 -
1360.216 -template <class _Iterator>
1360.217 -inline bool  _STLP_CALL __valid_range(const _Iterator&,const _Iterator&, const input_iterator_tag&) { 
1360.218 -    return true; 
1360.219 -}
1360.220 -
1360.221 -template <class _Iterator>
1360.222 -inline bool  _STLP_CALL __valid_range(const _Iterator&,const _Iterator&, const output_iterator_tag&) { 
1360.223 -    return true; 
1360.224 -}
1360.225 -
1360.226 -template <class _Iterator>
1360.227 -inline bool  _STLP_CALL __valid_range(const _Iterator& __i1, const _Iterator& __i2) { 
1360.228 -    return __valid_range(__i1,__i2,_STLP_ITERATOR_CATEGORY(__i1, _Iterator));
1360.229 -}
1360.230 -
1360.231 -// Note : that means in range [i1, i2].
1360.232 -template <class _Iterator>
1360.233 -inline bool  _STLP_CALL __in_range(const _Iterator& _It, const _Iterator& __i1,
1360.234 -                                   const _Iterator& __i2) { 
1360.235 -    return __valid_range(__i1,_It,_STLP_ITERATOR_CATEGORY(__i1, _Iterator)) && 
1360.236 -        __valid_range(_It,__i2,_STLP_ITERATOR_CATEGORY(_It, _Iterator));
1360.237 -}
1360.238 -
1360.239 -template <class _Iterator>
1360.240 -inline bool  _STLP_CALL __in_range(const _Iterator& __first, const _Iterator& __last, 
1360.241 -                                   const _Iterator& __start, const _Iterator& __finish) { 
1360.242 -    return __valid_range(__first,__last,_STLP_ITERATOR_CATEGORY(__first, _Iterator)) &&
1360.243 -        __valid_range(__start,__first,_STLP_ITERATOR_CATEGORY(__first, _Iterator)) && 
1360.244 -        __valid_range(__last,__finish,_STLP_ITERATOR_CATEGORY(__last, _Iterator));
1360.245 -}
1360.246 -
1360.247 -//==========================================================
1360.248 -
1360.249 -
1360.250 -class _STLP_CLASS_DECLSPEC __owned_link {
1360.251 -public:
1360.252 -
1360.253 -  __owned_link() : _M_owner(0) {}
1360.254 -  __owned_link(const __owned_list* __c) : _M_owner(0), _M_next(0) {
1360.255 -    __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__c), this);
1360.256 -  }
1360.257 -  __owned_link(const __owned_link& __rhs): _M_owner(0) {
1360.258 -    __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__rhs._M_owner), this);
1360.259 -  }
1360.260 -  __owned_link& operator=(const __owned_link& __rhs) {
1360.261 -    __owned_list* __new_owner = __CONST_CAST(__owned_list*,__rhs._M_owner);
1360.262 -    __owned_list* __old_owner = _M_owner;
1360.263 -    if ( __old_owner != __new_owner ) {
1360.264 -      __stl_debugger::_M_detach(__old_owner, this);
1360.265 -      __stl_debugger::_M_attach(__new_owner, this);
1360.266 -    }
1360.267 -    return *this;
1360.268 -  }
1360.269 -  ~__owned_link() {
1360.270 -    __stl_debugger::_M_detach(_M_owner, this);
1360.271 -    _Invalidate();
1360.272 -  }
1360.273 -  
1360.274 -  const __owned_list* _Owner() const { 
1360.275 -    return _M_owner; 
1360.276 -  }
1360.277 -  __owned_list* _Owner() { 
1360.278 -    return _M_owner; 
1360.279 -  }
1360.280 -  void _Set_owner(const __owned_list* __o)  { 
1360.281 -    _M_owner= __CONST_CAST(__owned_list*,__o); 
1360.282 -  }
1360.283 -  bool  _Valid() const { 
1360.284 -    return _M_owner !=0; 
1360.285 -  }
1360.286 -
1360.287 -  void _Invalidate() { _M_owner=0; _M_next = 0; }
1360.288 -  void _Link_to_self() { _M_next= 0; }
1360.289 -
1360.290 -  __owned_link* _Next() { return _M_next; }
1360.291 -  const __owned_link* _Next() const { return _M_next; }
1360.292 -
1360.293 -public:
1360.294 -  __owned_list* _M_owner;
1360.295 -  __owned_link* _M_next;
1360.296 -};
1360.297 -
1360.298 -
1360.299 -class _STLP_CLASS_DECLSPEC __owned_list {
1360.300 -public:
1360.301 -  __owned_list(const void* __o) {
1360.302 -    //    fprintf(stderr, "__owned_list(): %p\n",(void*)this);
1360.303 -    _M_node._M_owner = __CONST_CAST(__owned_list*, __REINTERPRET_CAST(const __owned_list*,__o)); 
1360.304 -    _M_node._M_next=0;
1360.305 -  }
1360.306 -  ~__owned_list() {
1360.307 -    //    fprintf(stderr, "~__owned_list(): %p\n",(void*)this);
1360.308 -    _Invalidate_all();
1360.309 -    // that prevents detach
1360.310 -    _M_node._Invalidate();
1360.311 -  }
1360.312 -  const void* _Owner() const { 
1360.313 -    return (const void*)_M_node._M_owner; 
1360.314 -  }
1360.315 -  void* _Owner() { 
1360.316 -    return (void*)_M_node._M_owner; 
1360.317 -  }
1360.318 -  bool  _Valid() const { 
1360.319 -    return _M_node._M_owner!=0; 
1360.320 -  }
1360.321 -  void _Invalidate() { _M_node._M_owner=0; }
1360.322 -  
1360.323 -  __owned_link* _First() { return _M_node._Next(); }
1360.324 -  __owned_link* _Last() { return 0 ; }
1360.325 -
1360.326 -  const __owned_link* _First() const { return (__owned_link*)_M_node._M_next; }
1360.327 -  const __owned_link* _Last() const { return 0 ;}
1360.328 -  
1360.329 -  void _Verify() const {
1360.330 -    __stl_debugger::_Verify(this); 
1360.331 -  }
1360.332 -  
1360.333 -  void _Swap_owners(__owned_list& __y) { 
1360.334 -    __stl_debugger::_Swap_owners(*this, __y); 
1360.335 -  }
1360.336 - 
1360.337 -  void _Invalidate_all() { 
1360.338 -    __stl_debugger::_Invalidate_all(this);
1360.339 -  }
1360.340 -  
1360.341 -  mutable __owned_link              _M_node; 
1360.342 -  mutable _STLP_mutex            _M_lock;
1360.343 -  
1360.344 -private:
1360.345 -  // should never be called, should be left undefined,
1360.346 -  // but some compilers complain about it ;(
1360.347 -  __owned_list(const __owned_list&){}
1360.348 -  void operator=(const __owned_list&) {}
1360.349 -
1360.350 -  friend class __owned_link;
1360.351 -  friend struct __stl_debug_engine<bool>;
1360.352 -};
1360.353 -
1360.354 -
1360.355 -//==========================================================
1360.356 -
1360.357 -// forward declaratioins
1360.358 -
1360.359 -template <class _Iterator>
1360.360 -bool  _STLP_CALL __check_range(const _Iterator&, const _Iterator&);
1360.361 -template <class _Iterator>
1360.362 -bool _STLP_CALL  __check_range(const _Iterator&, 
1360.363 -                               const _Iterator&, const _Iterator&);
1360.364 -template <class _Iterator>
1360.365 -bool _STLP_CALL  __check_range(const _Iterator&, const _Iterator& , 
1360.366 -                               const _Iterator&, const _Iterator& );
1360.367 -
1360.368 -template <class _Iterator>
1360.369 -void _STLP_CALL  __invalidate_range(const __owned_list* __base, 
1360.370 -                                    const _Iterator& __first,
1360.371 -                                    const _Iterator& __last);
1360.372 -
1360.373 -template <class _Iterator>
1360.374 -void  _STLP_CALL __invalidate_iterator(const __owned_list* __base, 
1360.375 -                                       const _Iterator& __it);
1360.376 -
1360.377 -//============================================================
1360.378 -
1360.379 -inline bool _STLP_CALL 
1360.380 -__check_same_owner( const __owned_link& __i1, const __owned_link& __i2) {
1360.381 -  return __stl_debugger::_Check_same_owner(__i1,__i2);
1360.382 -}
1360.383 -inline bool _STLP_CALL  
1360.384 -__check_same_owner_or_null( const __owned_link& __i1, const __owned_link& __i2) {
1360.385 -  return __stl_debugger::_Check_same_owner_or_null(__i1,__i2);
1360.386 -}
1360.387 -
1360.388 -template <class _Iterator>
1360.389 -inline bool _STLP_CALL  __check_if_owner( const __owned_list* __owner, 
1360.390 -                                          const _Iterator& __it) {
1360.391 -  return __stl_debugger::_Check_if_owner(__owner, (const __owned_link&)__it);
1360.392 -}
1360.393 -
1360.394 -_STLP_END_NAMESPACE
1360.395 -
1360.396 -# endif /* _STLP_DEBUG */
1360.397 -
1360.398 -#if defined ( _STLP_ASSERTIONS )
1360.399 -
1360.400 -# ifndef _STLP_ASSERT_MSG_TRAILER
1360.401 -#  define _STLP_ASSERT_MSG_TRAILER
1360.402 -# endif
1360.403 -
1360.404 -// dwa 12/30/98 - if _STLP_DEBUG_MESSAGE is defined, the user can supply own definition.
1360.405 -# if !defined( _STLP_DEBUG_MESSAGE )
1360.406 -#   define __stl_debug_message __stl_debugger::_Message
1360.407 -# else
1360.408 -    extern  void __stl_debug_message(const char * format_str, ...);
1360.409 -# endif
1360.410 -
1360.411 -// fbp: if _STLP_DEBUG_TERMINATE is defined, the user can supply own definition.
1360.412 -# if !defined( _STLP_DEBUG_TERMINATE )
1360.413 -#   define __stl_debug_terminate __stl_debugger::_Terminate
1360.414 -# else
1360.415 -    extern  void __stl_debug_terminate(void);
1360.416 -# endif
1360.417 -
1360.418 -#endif
1360.419 -
1360.420 -# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1360.421 -#  include <stl/debug/_debug.c>
1360.422 -# endif
1360.423 -
1360.424 -#endif /* DEBUG_H */
1360.425 -
1360.426 -// Local Variables:
1360.427 -// mode:C++
1360.428 -// End:
1360.429 -
  1361.1 --- a/epoc32/include/stdapis/stlport/stl/msl_string.h	Tue Mar 16 16:12:26 2010 +0000
  1361.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1361.3 @@ -1,42 +0,0 @@
  1361.4 -/*
  1361.5 - * Copyright (c) 1998
  1361.6 - * Mark of the Unicorn, Inc.
  1361.7 - *
  1361.8 - * Permission to use, copy, modify, distribute and sell this software
  1361.9 - * and its documentation for any purpose is hereby granted without fee,
 1361.10 - * provided that the above copyright notice appear in all copies and
 1361.11 - * that both that copyright notice and this permission notice appear
 1361.12 - * in supporting documentation.  Mark of the Unicorn, Inc. makes no
 1361.13 - * representations about the suitability of this software for any
 1361.14 - * purpose.  It is provided "as is" without express or implied warranty.
 1361.15 - *
 1361.16 - */
 1361.17 -#if defined( _STLP_USE_MSIPL ) && !defined( _STLP_MSL_STRING_H_ )
 1361.18 -#define _STLP_MSL_STRING_H_
 1361.19 -
 1361.20 -//# define char_traits __msl_char_traits
 1361.21 -# define basic_string __msl_basic_string
 1361.22 -# define b_str_ref __msl_b_str_ref
 1361.23 -# define basic_istream __msl_basic_istream
 1361.24 -# define basic_ostream __msl_basic_ostream
 1361.25 -# define string __msl_string
 1361.26 -# define wstring __msl_wstring
 1361.27 -# define iterator_traits __msl_iterator_traits
 1361.28 -
 1361.29 -namespace std
 1361.30 -{
 1361.31 -	template<class charT, class traits> class basic_istream;
 1361.32 -	template<class charT, class traits> class basic_ostream;
 1361.33 -}
 1361.34 -
 1361.35 -# include _STLP_NATIVE_HEADER(string)
 1361.36 -// # undef char_traits
 1361.37 -# undef basic_string
 1361.38 -# undef b_str_ref
 1361.39 -# undef basic_istream
 1361.40 -# undef basic_ostream
 1361.41 -# undef string
 1361.42 -# undef wstring
 1361.43 -# undef iterator_traits
 1361.44 -
 1361.45 -#endif
  1362.1 --- a/epoc32/include/stdapis/stlport/stl/type_traits.h	Tue Mar 16 16:12:26 2010 +0000
  1362.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1362.3 @@ -1,418 +0,0 @@
  1362.4 -/*
  1362.5 - *
  1362.6 - * Copyright (c) 1996,1997
  1362.7 - * Silicon Graphics Computer Systems, Inc.
  1362.8 - *
  1362.9 - * Copyright (c) 1997
 1362.10 - * Moscow Center for SPARC Technology
 1362.11 - *
 1362.12 - * Copyright (c) 1999 
 1362.13 - * Boris Fomitchev
 1362.14 - *
 1362.15 - * This material is provided "as is", with absolutely no warranty expressed
 1362.16 - * or implied. Any use is at your own risk.
 1362.17 - *
 1362.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1362.19 - * without fee, provided the above notices are retained on all copies.
 1362.20 - * Permission to modify the code and to distribute modified code is granted,
 1362.21 - * provided the above notices are retained, and a notice that the code was
 1362.22 - * modified is included with the above copyright notice.
 1362.23 - *
 1362.24 - */
 1362.25 -
 1362.26 -#ifndef _STLP_TYPE_TRAITS_H
 1362.27 -#define _STLP_TYPE_TRAITS_H
 1362.28 -
 1362.29 -/*
 1362.30 -This header file provides a framework for allowing compile time dispatch
 1362.31 -based on type attributes. This is useful when writing template code.
 1362.32 -For example, when making a copy of an array of an unknown type, it helps
 1362.33 -to know if the type has a trivial copy constructor or not, to help decide
 1362.34 -if a memcpy can be used.
 1362.35 -
 1362.36 -The class template __type_traits provides a series of typedefs each of
 1362.37 -which is either __true_type or __false_type. The argument to
 1362.38 -__type_traits can be any type. The typedefs within this template will
 1362.39 -attain their correct values by one of these means:
 1362.40 -    1. The general instantiation contain conservative values which work
 1362.41 -       for all types.
 1362.42 -    2. Specializations may be declared to make distinctions between types.
 1362.43 -    3. Some compilers (such as the Silicon Graphics N32 and N64 compilers)
 1362.44 -       will automatically provide the appropriate specializations for all
 1362.45 -       types.
 1362.46 -
 1362.47 -EXAMPLE:
 1362.48 -
 1362.49 -//Copy an array of elements which have non-trivial copy constructors
 1362.50 -template <class T> void copy(T* source, T* destination, int n, __false_type);
 1362.51 -//Copy an array of elements which have trivial copy constructors. Use memcpy.
 1362.52 -template <class T> void copy(T* source, T* destination, int n, __true_type);
 1362.53 -
 1362.54 -//Copy an array of any type by using the most efficient copy mechanism
 1362.55 -template <class T> inline void copy(T* source,T* destination,int n) {
 1362.56 -   copy(source, destination, n,
 1362.57 -        typename __type_traits<T>::has_trivial_copy_constructor());
 1362.58 -}
 1362.59 -*/
 1362.60 -
 1362.61 -#ifdef __WATCOMC__
 1362.62 -# include <stl/_cwchar.h>
 1362.63 -#endif
 1362.64 -
 1362.65 -_STLP_BEGIN_NAMESPACE
 1362.66 -
 1362.67 -struct __true_type {};
 1362.68 -struct __false_type {};
 1362.69 -
 1362.70 -
 1362.71 -template <int _Is> struct __bool2type {
 1362.72 -  typedef __false_type _Ret; 
 1362.73 -};
 1362.74 -
 1362.75 -_STLP_TEMPLATE_NULL
 1362.76 -struct __bool2type<1> { typedef __true_type _Ret; };
 1362.77 -
 1362.78 -_STLP_TEMPLATE_NULL
 1362.79 -struct __bool2type<0> { typedef __false_type _Ret; };
 1362.80 -
 1362.81 -// logical end of 3 predicated
 1362.82 -template <class _P1, class _P2, class _P3>
 1362.83 -struct _Land3 {
 1362.84 -  typedef __false_type _Ret;
 1362.85 -};
 1362.86 -
 1362.87 -_STLP_TEMPLATE_NULL
 1362.88 -struct _Land3<__true_type, __true_type, __true_type> {
 1362.89 -  typedef __true_type _Ret;
 1362.90 -};
 1362.91 -
 1362.92 -
 1362.93 -// Forward declarations.
 1362.94 -template <class _Tp> struct __type_traits; 
 1362.95 -template <int _IsPOD> struct __type_traits_aux {
 1362.96 -   typedef __false_type    has_trivial_default_constructor;
 1362.97 -   typedef __false_type    has_trivial_copy_constructor;
 1362.98 -   typedef __false_type    has_trivial_assignment_operator;
 1362.99 -   typedef __false_type    has_trivial_destructor;
1362.100 -   typedef __false_type    is_POD_type;
1362.101 -};
1362.102 -
1362.103 -_STLP_TEMPLATE_NULL
1362.104 -struct __type_traits_aux<0> {
1362.105 -   typedef __false_type    has_trivial_default_constructor;
1362.106 -   typedef __false_type    has_trivial_copy_constructor;
1362.107 -   typedef __false_type    has_trivial_assignment_operator;
1362.108 -   typedef __false_type    has_trivial_destructor;
1362.109 -   typedef __false_type    is_POD_type;
1362.110 -};
1362.111 -
1362.112 -_STLP_TEMPLATE_NULL
1362.113 -struct __type_traits_aux<1> { 
1362.114 -   typedef __true_type    has_trivial_default_constructor;
1362.115 -   typedef __true_type    has_trivial_copy_constructor;
1362.116 -   typedef __true_type    has_trivial_assignment_operator;
1362.117 -   typedef __true_type    has_trivial_destructor;
1362.118 -   typedef __true_type    is_POD_type;
1362.119 -};
1362.120 -
1362.121 -# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1362.122 -
1362.123 -// Boris : simulation technique is used here according to Adobe Open Source License Version 1.0.
1362.124 -// Copyright 2000 Adobe Systems Incorporated and others. All rights reserved.
1362.125 -// Authors: Mat Marcus and Jesse Jones
1362.126 -// The original version of this source code may be found at
1362.127 -// http://opensource.adobe.com.
1362.128 -
1362.129 -struct _PointerShim {
1362.130 -  // Since the compiler only allows at most one non-trivial
1362.131 -  // implicit conversion we can make use of a shim class to
1362.132 -  // be sure that IsPtr below doesn't accept classes with
1362.133 -  // implicit pointer conversion operators
1362.134 -  _PointerShim(const volatile void*); // no implementation
1362.135 -};
1362.136 -
1362.137 -// These are the discriminating functions
1362.138 -
1362.139 -char _STLP_CALL _IsP(bool, _PointerShim); // no implementation is required
1362.140 -char* _STLP_CALL _IsP(bool, ...);          // no implementation is required
1362.141 -
1362.142 -template <class _Tp>
1362.143 -char _STLP_CALL _IsSameFun(bool, _Tp*, _Tp*); // no implementation is required
1362.144 -char* _STLP_CALL _IsSameFun(bool, ...);          // no implementation is required
1362.145 -
1362.146 -template <class _Tp1, class _Tp2>
1362.147 -struct _IsSame {
1362.148 -  // boris : check!
1362.149 -  static _Tp1* __null_rep1();
1362.150 -  static _Tp2* __null_rep2();
1362.151 -  enum { _Ret = (sizeof(_IsSameFun(false,__null_rep1(),__null_rep2())) == sizeof(char)) };
1362.152 -};
1362.153 -
1362.154 -template <class _Tp>
1362.155 -struct _IsPtr {
1362.156 -  
1362.157 -  // This template meta function takes a type T
1362.158 -  // and returns true exactly when T is a pointer.
1362.159 -  // One can imagine meta-functions discriminating on
1362.160 -  // other criteria.
1362.161 -  static _Tp& __null_rep();
1362.162 -  enum { _Ret = (sizeof(_IsP(false,__null_rep())) == sizeof(char)) };
1362.163 -
1362.164 -};
1362.165 -
1362.166 -template <class _Tp>
1362.167 -struct _IsPtrType {
1362.168 -  enum { _Is =  _IsPtr<_Tp>::_Ret } ;
1362.169 -  typedef __bool2type< _Is > _BT;
1362.170 -  typedef typename _BT::_Ret _Type;
1362.171 -  static _Type _Ret() { return _Type(); }
1362.172 -};
1362.173 -
1362.174 -template <class _Tp1, class _Tp2>
1362.175 -struct _BothPtrType {
1362.176 -  typedef __bool2type< _IsPtr<_Tp1>::_Ret> _B1;
1362.177 -  typedef __bool2type< _IsPtr<_Tp2>::_Ret> _B2;
1362.178 -  typedef typename _B1::_Ret _Type1;
1362.179 -  typedef typename _B2::_Ret _Type2;
1362.180 -  typedef typename _Land3<_Type1, _Type2, __true_type>::_Ret _Type;
1362.181 -  static _Type _Ret() { return _Type(); }
1362.182 -};
1362.183 -
1362.184 -// we make general case dependant on the fact the type is actually a pointer.
1362.185 - 
1362.186 -template <class _Tp>
1362.187 -struct __type_traits : __type_traits_aux<_IsPtr<_Tp>::_Ret> {};
1362.188 -
1362.189 -# else
1362.190 -
1362.191 -template <class _Tp>
1362.192 -struct __type_traits { 
1362.193 -   typedef __true_type     this_dummy_member_must_be_first;
1362.194 -                   /* Do not remove this member. It informs a compiler which
1362.195 -                      automatically specializes __type_traits that this
1362.196 -                      __type_traits template is special. It just makes sure that
1362.197 -                      things work if an implementation is using a template
1362.198 -                      called __type_traits for something unrelated. */
1362.199 -
1362.200 -   /* The following restrictions should be observed for the sake of
1362.201 -      compilers which automatically produce type specific specializations 
1362.202 -      of this class:
1362.203 -          - You may reorder the members below if you wish
1362.204 -          - You may remove any of the members below if you wish
1362.205 -          - You must not rename members without making the corresponding
1362.206 -            name change in the compiler
1362.207 -          - Members you add will be treated like regular members unless
1362.208 -            you add the appropriate support in the compiler. */
1362.209 -   typedef __false_type    has_trivial_default_constructor;
1362.210 -   typedef __false_type    has_trivial_copy_constructor;
1362.211 -   typedef __false_type    has_trivial_assignment_operator;
1362.212 -   typedef __false_type    has_trivial_destructor;
1362.213 -   typedef __false_type    is_POD_type;
1362.214 -};
1362.215 -
1362.216 -
1362.217 -template <class _Tp>  struct _IsPtr { enum { _Ret = 0 }; };
1362.218 -template <class _Tp>  struct _IsPtrType { 
1362.219 -  static __false_type _Ret() { return __false_type();} 
1362.220 -};
1362.221 -template <class _Tp1, class _Tp2>  struct _BothPtrType { 
1362.222 -  static __false_type _Ret() { return __false_type();} 
1362.223 -};
1362.224 -
1362.225 -template <class _Tp1, class _Tp2>
1362.226 -struct _IsSame { enum { _Ret = 0 }; };
1362.227 -
1362.228 -// template <class _Tp1, class _Tp2>
1362.229 -// struct _IsSameType {   static __false_type _Ret() { return __false_type(); }  };
1362.230 -
1362.231 -#  ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1362.232 -template <class _Tp>  struct _IsPtr<_Tp*> { enum { _Ret = 1 }; };
1362.233 -template <class _Tp>  struct _IsPtrType<_Tp*> { 
1362.234 -  static __true_type _Ret() { return __true_type();} 
1362.235 -};
1362.236 -template <class _Tp1, class _Tp2>  struct _BothPtrType<_Tp1*, _Tp2*> { 
1362.237 -  static __true_type _Ret() { return __true_type();} 
1362.238 -};
1362.239 -template <class _Tp>
1362.240 -struct _IsSame<_Tp, _Tp> { enum { _Ret = 1 }; };
1362.241 -#  endif
1362.242 -
1362.243 -# endif /* _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS */
1362.244 -
1362.245 -// Provide some specializations.  This is harmless for compilers that
1362.246 -//  have built-in __types_traits support, and essential for compilers
1362.247 -//  that don't.
1362.248 -#ifndef _STLP_NO_BOOL
1362.249 -_STLP_TEMPLATE_NULL struct __type_traits<bool> : __type_traits_aux<1> {};
1362.250 -#endif /* _STLP_NO_BOOL */
1362.251 -_STLP_TEMPLATE_NULL struct __type_traits<char> : __type_traits_aux<1> {};
1362.252 -#ifndef _STLP_NO_SIGNED_BUILTINS
1362.253 -_STLP_TEMPLATE_NULL struct __type_traits<signed char> : __type_traits_aux<1> {};
1362.254 -# endif
1362.255 -_STLP_TEMPLATE_NULL struct __type_traits<unsigned char> : __type_traits_aux<1> {};
1362.256 -#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
1362.257 -_STLP_TEMPLATE_NULL struct __type_traits<wchar_t> : __type_traits_aux<1> {};
1362.258 -#endif /* _STLP_HAS_WCHAR_T */
1362.259 -
1362.260 -_STLP_TEMPLATE_NULL struct __type_traits<short> : __type_traits_aux<1> {};
1362.261 -_STLP_TEMPLATE_NULL struct __type_traits<unsigned short> : __type_traits_aux<1> {};
1362.262 -_STLP_TEMPLATE_NULL struct __type_traits<int> : __type_traits_aux<1> {};
1362.263 -_STLP_TEMPLATE_NULL struct __type_traits<unsigned int> : __type_traits_aux<1> {};
1362.264 -_STLP_TEMPLATE_NULL struct __type_traits<long> : __type_traits_aux<1> {};
1362.265 -_STLP_TEMPLATE_NULL struct __type_traits<unsigned long> : __type_traits_aux<1> {};
1362.266 -
1362.267 -#ifdef _STLP_LONG_LONG
1362.268 -_STLP_TEMPLATE_NULL struct __type_traits<_STLP_LONG_LONG> : __type_traits_aux<1> {};
1362.269 -_STLP_TEMPLATE_NULL struct __type_traits<unsigned _STLP_LONG_LONG> : __type_traits_aux<1> {};
1362.270 -#endif /* _STLP_LONG_LONG */
1362.271 -
1362.272 -_STLP_TEMPLATE_NULL struct __type_traits<float> : __type_traits_aux<1> {};
1362.273 -_STLP_TEMPLATE_NULL struct __type_traits<double> : __type_traits_aux<1> {};
1362.274 -
1362.275 -# if !defined ( _STLP_NO_LONG_DOUBLE )
1362.276 -_STLP_TEMPLATE_NULL struct __type_traits<long double> : __type_traits_aux<1> {};
1362.277 -# endif
1362.278 -
1362.279 -#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1362.280 -template <class _Tp> struct __type_traits<_Tp*> : __type_traits_aux<1> {};
1362.281 -#endif
1362.282 -
1362.283 -// The following could be written in terms of numeric_limits.  
1362.284 -// We're doing it separately to reduce the number of dependencies.
1362.285 -
1362.286 -template <class _Tp> struct _Is_integer {
1362.287 -  typedef __false_type _Integral;
1362.288 -};
1362.289 -
1362.290 -#ifndef _STLP_NO_BOOL
1362.291 -
1362.292 -_STLP_TEMPLATE_NULL struct _Is_integer<bool> {
1362.293 -  typedef __true_type _Integral;
1362.294 -};
1362.295 -
1362.296 -#endif /* _STLP_NO_BOOL */
1362.297 -
1362.298 -_STLP_TEMPLATE_NULL struct _Is_integer<char> {
1362.299 -  typedef __true_type _Integral;
1362.300 -};
1362.301 -
1362.302 -#ifndef _STLP_NO_SIGNED_BUILTINS
1362.303 -
1362.304 -_STLP_TEMPLATE_NULL struct _Is_integer<signed char> {
1362.305 -  typedef __true_type _Integral;
1362.306 -};
1362.307 -#endif
1362.308 -
1362.309 -_STLP_TEMPLATE_NULL struct _Is_integer<unsigned char> {
1362.310 -  typedef __true_type _Integral;
1362.311 -};
1362.312 -
1362.313 -#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
1362.314 -
1362.315 -_STLP_TEMPLATE_NULL struct _Is_integer<wchar_t> {
1362.316 -  typedef __true_type _Integral;
1362.317 -};
1362.318 -
1362.319 -#endif /* _STLP_HAS_WCHAR_T */
1362.320 -
1362.321 -_STLP_TEMPLATE_NULL struct _Is_integer<short> {
1362.322 -  typedef __true_type _Integral;
1362.323 -};
1362.324 -
1362.325 -_STLP_TEMPLATE_NULL struct _Is_integer<unsigned short> {
1362.326 -  typedef __true_type _Integral;
1362.327 -};
1362.328 -
1362.329 -_STLP_TEMPLATE_NULL struct _Is_integer<int> {
1362.330 -  typedef __true_type _Integral;
1362.331 -};
1362.332 -
1362.333 -_STLP_TEMPLATE_NULL struct _Is_integer<unsigned int> {
1362.334 -  typedef __true_type _Integral;
1362.335 -};
1362.336 -
1362.337 -_STLP_TEMPLATE_NULL struct _Is_integer<long> {
1362.338 -  typedef __true_type _Integral;
1362.339 -};
1362.340 -
1362.341 -_STLP_TEMPLATE_NULL struct _Is_integer<unsigned long> {
1362.342 -  typedef __true_type _Integral;
1362.343 -};
1362.344 -
1362.345 -#ifdef _STLP_LONG_LONG
1362.346 -
1362.347 -_STLP_TEMPLATE_NULL struct _Is_integer<_STLP_LONG_LONG> {
1362.348 -  typedef __true_type _Integral;
1362.349 -};
1362.350 -
1362.351 -_STLP_TEMPLATE_NULL struct _Is_integer<unsigned _STLP_LONG_LONG> {
1362.352 -  typedef __true_type _Integral;
1362.353 -};
1362.354 -
1362.355 -#endif /* _STLP_LONG_LONG */
1362.356 -
1362.357 -template <class _Tp1, class _Tp2>
1362.358 -struct _OKToMemCpy {
1362.359 -  enum { _Same = _IsSame<_Tp1,_Tp2>::_Ret } ;
1362.360 -  typedef typename __type_traits<_Tp1>::has_trivial_assignment_operator _Tr1;
1362.361 -  typedef typename __type_traits<_Tp2>::has_trivial_assignment_operator _Tr2;
1362.362 -  typedef typename __bool2type< _Same >::_Ret _Tr3;
1362.363 -  typedef typename _Land3<_Tr1, _Tr2, _Tr3>::_Ret _Type;
1362.364 -  static _Type _Ret() { return _Type(); }
1362.365 -};
1362.366 -
1362.367 -template <class _Tp1, class _Tp2>
1362.368 -inline _OKToMemCpy<_Tp1, _Tp2> _IsOKToMemCpy(_Tp1*, _Tp2*)  {
1362.369 -  return _OKToMemCpy<_Tp1, _Tp2>();
1362.370 -}
1362.371 -
1362.372 -template <class _Tp> 
1362.373 -struct _IsPOD {
1362.374 -  typedef typename __type_traits<_Tp>::is_POD_type _Type;
1362.375 -  static _Type _Ret() { return _Type(); }
1362.376 -};
1362.377 -
1362.378 -template <class _Tp> 
1362.379 -inline _IsPOD<_Tp>  _Is_POD (_Tp*) { return _IsPOD<_Tp>(); } 
1362.380 -
1362.381 -#  ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1362.382 -#   if defined (__BORLANDC__) || defined (__SUNPRO_CC) || ( defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || ( defined (__sgi) && defined (_COMPILER_VERSION)) || defined (__DMC__)
1362.383 -#   define _IS_POD_ITER(_It, _Tp) __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type()
1362.384 -#   else
1362.385 -#   define _IS_POD_ITER(_It, _Tp) typename __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type()
1362.386 -#   endif
1362.387 -#  else
1362.388 -#   define _IS_POD_ITER(_It, _Tp) _Is_POD( _STLP_VALUE_TYPE( _It, _Tp ) )._Ret()
1362.389 -#  endif
1362.390 -
1362.391 -# ifdef _STLP_DEFAULT_CONSTRUCTOR_BUG
1362.392 -// Those adaptors are here to fix common compiler bug regarding builtins:
1362.393 -// expressions like int k = int() should initialize k to 0
1362.394 -template <class _Tp>
1362.395 -inline _Tp __default_constructed_aux(_Tp*, const __false_type&) {
1362.396 -  return _Tp();
1362.397 -}
1362.398 -template <class _Tp>
1362.399 -inline _Tp __default_constructed_aux(_Tp*, const __true_type&) {
1362.400 -  return _Tp(0);
1362.401 -}
1362.402 -
1362.403 -template <class _Tp>
1362.404 -inline _Tp __default_constructed(_Tp* __p) {
1362.405 -  typedef typename _Is_integer<_Tp>::_Integral _Is_Integral;
1362.406 -  return __default_constructed_aux(__p, _Is_Integral());
1362.407 -}
1362.408 -
1362.409 -#  define _STLP_DEFAULT_CONSTRUCTED(_TTp) __default_constructed((_TTp*)0)
1362.410 -# else
1362.411 -#  define _STLP_DEFAULT_CONSTRUCTED(_TTp) _TTp()
1362.412 -# endif
1362.413 -
1362.414 -_STLP_END_NAMESPACE
1362.415 -
1362.416 -#endif /* __TYPE_TRAITS_H */
1362.417 -
1362.418 -// Local Variables:
1362.419 -// mode:C++
1362.420 -// End:
1362.421 -
  1363.1 --- a/epoc32/include/stdapis/stlport/string	Tue Mar 16 16:12:26 2010 +0000
  1363.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1363.3 @@ -1,62 +0,0 @@
  1363.4 -/*
  1363.5 - * Copyright (c) 1997-1999
  1363.6 - * Silicon Graphics Computer Systems, Inc.
  1363.7 - *
  1363.8 - * Copyright (c) 1999 
  1363.9 - * Boris Fomitchev
 1363.10 - *
 1363.11 - * This material is provided "as is", with absolutely no warranty expressed
 1363.12 - * or implied. Any use is at your own risk.
 1363.13 - *
 1363.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1363.15 - * without fee, provided the above notices are retained on all copies.
 1363.16 - * Permission to modify the code and to distribute modified code is granted,
 1363.17 - * provided the above notices are retained, and a notice that the code was
 1363.18 - * modified is included with the above copyright notice.
 1363.19 - *
 1363.20 - */
 1363.21 -
 1363.22 -#ifndef _STLP_STRING
 1363.23 -# define _STLP_STRING
 1363.24 -
 1363.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1363.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x68
 1363.27 -#  include <stl/_prolog.h>
 1363.28 -# endif
 1363.29 -
 1363.30 -# ifdef _STLP_PRAGMA_ONCE
 1363.31 -#  pragma once
 1363.32 -# endif
 1363.33 -
 1363.34 -#if defined (_STLP_USE_NATIVE_STRING)
 1363.35 -
 1363.36 -// as part of compiled runtime library depends on it.
 1363.37 -
 1363.38 -# if defined (_STLP_MSVC)
 1363.39 -#  include <streambuf>
 1363.40 -#  include <istream>
 1363.41 -# endif
 1363.42 -
 1363.43 -#  include _STLP_NATIVE_HEADER(string)
 1363.44 -
 1363.45 -# endif /* _STLP_USE_NATIVE_STRING */
 1363.46 -
 1363.47 -# if !defined (_STLP_USE_NATIVE_STRING) || defined (_STLP_USE_OWN_NAMESPACE)
 1363.48 -# include <stl/_string.h>
 1363.49 -# else
 1363.50 -# include <stl/_string_hash.h>
 1363.51 -# endif /*_STLP_USE_NATIVE_STRING */
 1363.52 -
 1363.53 -// cleanup
 1363.54 -
 1363.55 -# if (_STLP_OUTERMOST_HEADER_ID == 0x68)
 1363.56 -#  include <stl/_epilog.h>
 1363.57 -#  undef _STLP_OUTERMOST_HEADER_ID
 1363.58 -# endif
 1363.59 -
 1363.60 -#endif /* _STLP_STRING */
 1363.61 -
 1363.62 -// Local Variables:
 1363.63 -// mode:C++
 1363.64 -// End:
 1363.65 -
  1364.1 --- a/epoc32/include/stdapis/stlport/utility	Tue Mar 16 16:12:26 2010 +0000
  1364.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1364.3 @@ -1,65 +0,0 @@
  1364.4 -/*
  1364.5 - *
  1364.6 - * Copyright (c) 1994
  1364.7 - * Hewlett-Packard Company
  1364.8 - *
  1364.9 - * Copyright (c) 1996,1997
 1364.10 - * Silicon Graphics Computer Systems, Inc.
 1364.11 - *
 1364.12 - * Copyright (c) 1999 
 1364.13 - * Boris Fomitchev
 1364.14 - *
 1364.15 - * This material is provided "as is", with absolutely no warranty expressed
 1364.16 - * or implied. Any use is at your own risk.
 1364.17 - *
 1364.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1364.19 - * without fee, provided the above notices are retained on all copies.
 1364.20 - * Permission to modify the code and to distribute modified code is granted,
 1364.21 - * provided the above notices are retained, and a notice that the code was
 1364.22 - * modified is included with the above copyright notice.
 1364.23 - *
 1364.24 - */
 1364.25 -
 1364.26 -#ifndef _STLP_UTILITY
 1364.27 -#define _STLP_UTILITY
 1364.28 -
 1364.29 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1364.30 -#  define _STLP_OUTERMOST_HEADER_ID 0x75
 1364.31 -#  include <stl/_prolog.h>
 1364.32 -# endif
 1364.33 -
 1364.34 -# ifdef _STLP_PRAGMA_ONCE
 1364.35 -#  pragma once
 1364.36 -# endif
 1364.37 -
 1364.38 -# ifndef __TYPE_TRAITS_H
 1364.39 -#  include <stl/type_traits.h>
 1364.40 -# endif
 1364.41 -
 1364.42 -# if !defined (_STLP_DEBUG_H) && (defined  (_STLP_DEBUG) || defined (_STLP_ASSERTIONS))
 1364.43 -#  include <stl/debug/_debug.h>
 1364.44 -# endif
 1364.45 -
 1364.46 -# ifndef _STLP_INTERNAL_PAIR_H
 1364.47 -#  include <stl/_pair.h>
 1364.48 -# endif
 1364.49 -
 1364.50 -# if defined (_STLP_IMPORT_VENDOR_STD)
 1364.51 -#   include _STLP_NATIVE_HEADER(utility)
 1364.52 -# else
 1364.53 -#  if defined (_STLP_MSVC) && ! defined (_STLP_INTERNAL_ITERATOR_H)
 1364.54 -#   include <stl/_iterator.h>
 1364.55 -#  endif
 1364.56 -# endif
 1364.57 -
 1364.58 -# if (_STLP_OUTERMOST_HEADER_ID == 0x75)
 1364.59 -#  include <stl/_epilog.h>
 1364.60 -#  undef _STLP_OUTERMOST_HEADER_ID
 1364.61 -# endif
 1364.62 -
 1364.63 -#endif /* _STLP_UTILITY */
 1364.64 -
 1364.65 -// Local Variables:
 1364.66 -// mode:C++
 1364.67 -// End:
 1364.68 -
  1365.1 --- a/epoc32/include/stdapis/stlport/valarray	Tue Mar 16 16:12:26 2010 +0000
  1365.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1365.3 @@ -1,47 +0,0 @@
  1365.4 -/*
  1365.5 - * Copyright (c) 1999
  1365.6 - * Silicon Graphics Computer Systems, Inc.
  1365.7 - *
  1365.8 - * Copyright (c) 1999 
  1365.9 - * Boris Fomitchev
 1365.10 - *
 1365.11 - * This material is provided "as is", with absolutely no warranty expressed
 1365.12 - * or implied. Any use is at your own risk.
 1365.13 - *
 1365.14 - * Permission to use or copy this software for any purpose is hereby granted 
 1365.15 - * without fee, provided the above notices are retained on all copies.
 1365.16 - * Permission to modify the code and to distribute modified code is granted,
 1365.17 - * provided the above notices are retained, and a notice that the code was
 1365.18 - * modified is included with the above copyright notice.
 1365.19 - *
 1365.20 - */ 
 1365.21 -
 1365.22 -#ifndef _STLP_VALARRAY
 1365.23 -#define _STLP_VALARRAY
 1365.24 -
 1365.25 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1365.26 -#  define _STLP_OUTERMOST_HEADER_ID 0x76
 1365.27 -#  include <stl/_prolog.h>
 1365.28 -# endif
 1365.29 -
 1365.30 -# ifdef _STLP_PRAGMA_ONCE
 1365.31 -#  pragma once
 1365.32 -# endif
 1365.33 -
 1365.34 -#include <stl/_valarray.h>
 1365.35 -
 1365.36 -#if defined (_STLP_WHOLE_VENDOR_STD)
 1365.37 -# include _STLP_NATIVE_HEADER(valarray)
 1365.38 -#endif
 1365.39 -
 1365.40 -# if (_STLP_OUTERMOST_HEADER_ID == 0x76)
 1365.41 -#  include <stl/_epilog.h>
 1365.42 -#  undef _STLP_OUTERMOST_HEADER_ID
 1365.43 -# endif
 1365.44 -
 1365.45 -#endif /* _STLP_VALARRAY */
 1365.46 -
 1365.47 -
 1365.48 -// Local Variables:
 1365.49 -// mode:C++
 1365.50 -// End:
  1366.1 --- a/epoc32/include/stdapis/stlport/vector	Tue Mar 16 16:12:26 2010 +0000
  1366.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1366.3 @@ -1,57 +0,0 @@
  1366.4 -/*
  1366.5 - *
  1366.6 - * Copyright (c) 1994
  1366.7 - * Hewlett-Packard Company
  1366.8 - *
  1366.9 - * Copyright (c) 1996,1997
 1366.10 - * Silicon Graphics Computer Systems, Inc.
 1366.11 - *
 1366.12 - * Copyright (c) 1999 
 1366.13 - * Boris Fomitchev
 1366.14 - *
 1366.15 - * This material is provided "as is", with absolutely no warranty expressed
 1366.16 - * or implied. Any use is at your own risk.
 1366.17 - *
 1366.18 - * Permission to use or copy this software for any purpose is hereby granted 
 1366.19 - * without fee, provided the above notices are retained on all copies.
 1366.20 - * Permission to modify the code and to distribute modified code is granted,
 1366.21 - * provided the above notices are retained, and a notice that the code was
 1366.22 - * modified is included with the above copyright notice.
 1366.23 - *
 1366.24 - */
 1366.25 -
 1366.26 -#ifndef _STLP_VECTOR
 1366.27 -#define _STLP_VECTOR
 1366.28 -
 1366.29 -# ifndef _STLP_OUTERMOST_HEADER_ID
 1366.30 -#  define _STLP_OUTERMOST_HEADER_ID 0x77
 1366.31 -#  include <stl/_prolog.h>
 1366.32 -# endif
 1366.33 -
 1366.34 -# ifdef _STLP_PRAGMA_ONCE
 1366.35 -#  pragma once
 1366.36 -# endif
 1366.37 -
 1366.38 -# ifndef _STLP_INTERNAL_ALGOBASE_H
 1366.39 -#  include <stl/_algobase.h>
 1366.40 -# endif
 1366.41 -
 1366.42 -#ifndef _STLP_INTERNAL_VECTOR_H
 1366.43 -# include <stl/_vector.h>
 1366.44 -#endif
 1366.45 -
 1366.46 -#if defined (_STLP_IMPORT_VENDOR_STD) && ! defined (_STLP_MINIMUM_IMPORT_STD)
 1366.47 -#  include _STLP_NATIVE_HEADER(vector)
 1366.48 -#endif
 1366.49 -
 1366.50 -# if (_STLP_OUTERMOST_HEADER_ID == 0x77)
 1366.51 -#  include <stl/_epilog.h>
 1366.52 -#  undef _STLP_OUTERMOST_HEADER_ID
 1366.53 -# endif
 1366.54 -
 1366.55 -#endif /* _STLP_VECTOR */
 1366.56 -
 1366.57 -// Local Variables:
 1366.58 -// mode:C++
 1366.59 -// End:
 1366.60 -
  1367.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1367.2 +++ b/epoc32/include/stdapis/stlportv5/algorithm	Wed Mar 31 12:27:01 2010 +0100
  1367.3 @@ -0,0 +1,60 @@
  1367.4 +/*
  1367.5 + *
  1367.6 + * Copyright (c) 1994
  1367.7 + * Hewlett-Packard Company
  1367.8 + *
  1367.9 + * Copyright (c) 1996,1997
 1367.10 + * Silicon Graphics Computer Systems, Inc.
 1367.11 + *
 1367.12 + * Copyright (c) 1997
 1367.13 + * Moscow Center for SPARC Technology
 1367.14 + *
 1367.15 + * Copyright (c) 1999 
 1367.16 + * Boris Fomitchev
 1367.17 + *
 1367.18 + * This material is provided "as is", with absolutely no warranty expressed
 1367.19 + * or implied. Any use is at your own risk.
 1367.20 + *
 1367.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1367.22 + * without fee, provided the above notices are retained on all copies.
 1367.23 + * Permission to modify the code and to distribute modified code is granted,
 1367.24 + * provided the above notices are retained, and a notice that the code was
 1367.25 + * modified is included with the above copyright notice.
 1367.26 + *
 1367.27 + */
 1367.28 +
 1367.29 +#ifndef _STLP_ALGORITHM
 1367.30 +#define _STLP_ALGORITHM
 1367.31 +
 1367.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1367.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x1
 1367.34 +#  include <stl/_prolog.h>
 1367.35 +# endif
 1367.36 +
 1367.37 +#ifdef _STLP_PRAGMA_ONCE
 1367.38 +# pragma once
 1367.39 +#endif
 1367.40 +
 1367.41 +# if ! defined (_STLP_USE_NAMESPACES)
 1367.42 +// remove() conflicts, <cstdio> should always go first
 1367.43 +#  include <cstdio>
 1367.44 +# endif
 1367.45 +
 1367.46 +# ifndef _STLP_INTERNAL_ALGO_H
 1367.47 +#  include <stl/_algo.h>
 1367.48 +# endif
 1367.49 +
 1367.50 +#if defined (_STLP_IMPORT_VENDOR_STD)
 1367.51 +# include _STLP_NATIVE_HEADER(algorithm)
 1367.52 +#endif /* _STLP_IMPORT_VENDOR_STD */
 1367.53 +
 1367.54 +# if (_STLP_OUTERMOST_HEADER_ID == 0x1 )
 1367.55 +#  include <stl/_epilog.h>
 1367.56 +#  undef _STLP_OUTERMOST_HEADER_ID
 1367.57 +# endif
 1367.58 +
 1367.59 +#endif /* _STLP_ALGORITHM */
 1367.60 +
 1367.61 +// Local Variables:
 1367.62 +// mode:C++
 1367.63 +// End:
  1368.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1368.2 +++ b/epoc32/include/stdapis/stlportv5/bitset	Wed Mar 31 12:27:01 2010 +0100
  1368.3 @@ -0,0 +1,64 @@
  1368.4 +/*
  1368.5 + * Copyright (c) 1998
  1368.6 + * Silicon Graphics Computer Systems, Inc.
  1368.7 + *
  1368.8 + * Copyright (c) 1999 
  1368.9 + * Boris Fomitchev
 1368.10 + *
 1368.11 + * This material is provided "as is", with absolutely no warranty expressed
 1368.12 + * or implied. Any use is at your own risk.
 1368.13 + *
 1368.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1368.15 + * without fee, provided the above notices are retained on all copies.
 1368.16 + * Permission to modify the code and to distribute modified code is granted,
 1368.17 + * provided the above notices are retained, and a notice that the code was
 1368.18 + * modified is included with the above copyright notice.
 1368.19 + *
 1368.20 + */
 1368.21 +
 1368.22 +#ifndef _STLP_BITSET
 1368.23 +#define _STLP_BITSET
 1368.24 +
 1368.25 +// This implementation of bitset<> has a second template parameter,
 1368.26 +// _WordT, which defaults to unsigned long.  *YOU SHOULD NOT USE
 1368.27 +// THIS FEATURE*.  It is experimental, and it may be removed in
 1368.28 +// future releases.
 1368.29 +
 1368.30 +// A bitset of size N, using words of type _WordT, will have 
 1368.31 +// N % (sizeof(_WordT) * CHAR_BIT) unused bits.  (They are the high-
 1368.32 +// order bits in the highest word.)  It is a class invariant
 1368.33 +// of class bitset<> that those unused bits are always zero.
 1368.34 +
 1368.35 +// Most of the actual code isn't contained in bitset<> itself, but in the 
 1368.36 +// base class _Base_bitset.  The base class works with whole words, not with
 1368.37 +// individual bits.  This allows us to specialize _Base_bitset for the
 1368.38 +// important special case where the bitset is only a single word.
 1368.39 +
 1368.40 +// The C++ standard does not define the precise semantics of operator[].
 1368.41 +// In this implementation the const version of operator[] is equivalent
 1368.42 +// to test(), except that it does no range checking.  The non-const version
 1368.43 +// returns a reference to a bit, again without doing any range checking.
 1368.44 +
 1368.45 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1368.46 +#  define _STLP_OUTERMOST_HEADER_ID 0x2
 1368.47 +#  include <stl/_prolog.h>
 1368.48 +# endif
 1368.49 +
 1368.50 +#ifdef _STLP_PRAGMA_ONCE
 1368.51 +# pragma once
 1368.52 +#endif
 1368.53 +
 1368.54 +# include <stl/_bitset.h>
 1368.55 +
 1368.56 +# if (_STLP_OUTERMOST_HEADER_ID == 0x2 )
 1368.57 +#  include <stl/_epilog.h>
 1368.58 +#  undef _STLP_OUTERMOST_HEADER_ID
 1368.59 +# endif
 1368.60 +
 1368.61 +#endif /* _STLP_BITSET */
 1368.62 +
 1368.63 +
 1368.64 +// Local Variables:
 1368.65 +// mode:C++
 1368.66 +// End:
 1368.67 +
  1369.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1369.2 +++ b/epoc32/include/stdapis/stlportv5/cassert	Wed Mar 31 12:27:01 2010 +0100
  1369.3 @@ -0,0 +1,39 @@
  1369.4 +/*
  1369.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1369.6 + *
  1369.7 + * Copyright (c) 1999 
  1369.8 + * Boris Fomitchev
  1369.9 + *
 1369.10 + * This material is provided "as is", with absolutely no warranty expressed
 1369.11 + * or implied. Any use is at your own risk.
 1369.12 + *
 1369.13 + * Permission to use or copy this software for any purpose is hereby granted 
 1369.14 + * without fee, provided the above notices are retained on all copies.
 1369.15 + * Permission to modify the code and to distribute modified code is granted,
 1369.16 + * provided the above notices are retained, and a notice that the code was
 1369.17 + * modified is included with the above copyright notice.
 1369.18 + *
 1369.19 + */
 1369.20 +
 1369.21 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1369.22 +#  define _STLP_OUTERMOST_HEADER_ID 0x103
 1369.23 +#  include <stl/_prolog.h>
 1369.24 +# endif
 1369.25 +
 1369.26 +
 1369.27 +# if defined (_STLP_USE_NEW_C_HEADERS) || defined (__IN_STLPORT_CASSERT)
 1369.28 +#  include _STLP_NATIVE_CPP_C_HEADER(cassert)
 1369.29 +# else
 1369.30 +#  include <assert.h>
 1369.31 +# endif
 1369.32 +
 1369.33 +
 1369.34 +# if (_STLP_OUTERMOST_HEADER_ID == 0x103 )
 1369.35 +#  include <stl/_epilog.h>
 1369.36 +#  undef _STLP_OUTERMOST_HEADER_ID
 1369.37 +# endif
 1369.38 +
 1369.39 +
 1369.40 +// Local Variables:
 1369.41 +// mode:C++
 1369.42 +// End:
  1370.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1370.2 +++ b/epoc32/include/stdapis/stlportv5/ciso646	Wed Mar 31 12:27:01 2010 +0100
  1370.3 @@ -0,0 +1,41 @@
  1370.4 +/*
  1370.5 + * Copyright (c) 1999
  1370.6 + * Boris Fomitchev
  1370.7 + *
  1370.8 + * This material is provided "as is", with absolutely no warranty expressed
  1370.9 + * or implied. Any use is at your own risk.
 1370.10 + *
 1370.11 + * Permission to use or copy this software for any purpose is hereby granted
 1370.12 + * without fee, provided the above notices are retained on all copies.
 1370.13 + * Permission to modify the code and to distribute modified code is granted,
 1370.14 + * provided the above notices are retained, and a notice that the code was
 1370.15 + * modified is included with the above copyright notice.
 1370.16 + *
 1370.17 + */
 1370.18 +
 1370.19 +#ifndef _STLP_CISO646
 1370.20 +#define _STLP_CISO646
 1370.21 +
 1370.22 +#ifndef _STLP_OUTERMOST_HEADER_ID
 1370.23 +#  define _STLP_OUTERMOST_HEADER_ID 0x107
 1370.24 +#  include <stl/_prolog.h>
 1370.25 +#endif
 1370.26 +
 1370.27 +#if !defined(_STLP_WCE_EVC3) && !defined (N_PLAT_NLM) && !defined (__BORLANDC__)
 1370.28 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1370.29 +#    include _STLP_NATIVE_CPP_C_HEADER(ciso646)
 1370.30 +#  else
 1370.31 +#    include <iso646.h>
 1370.32 +#  endif /* _STLP_USE_NEW_C_HEADERS */
 1370.33 +#endif
 1370.34 +
 1370.35 +#if (_STLP_OUTERMOST_HEADER_ID == 0x107 )
 1370.36 +#  include <stl/_epilog.h>
 1370.37 +#  undef _STLP_OUTERMOST_HEADER_ID
 1370.38 +#endif
 1370.39 +
 1370.40 +#endif /* _STLP_CISO646 */
 1370.41 +
 1370.42 +// Local Variables:
 1370.43 +// mode:C++
 1370.44 +// End:
  1371.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1371.2 +++ b/epoc32/include/stdapis/stlportv5/deque	Wed Mar 31 12:27:01 2010 +0100
  1371.3 @@ -0,0 +1,55 @@
  1371.4 +/*
  1371.5 + *
  1371.6 + * Copyright (c) 1994
  1371.7 + * Hewlett-Packard Company
  1371.8 + *
  1371.9 + * Copyright (c) 1996,1997
 1371.10 + * Silicon Graphics Computer Systems, Inc.
 1371.11 + *
 1371.12 + * Copyright (c) 1997
 1371.13 + * Moscow Center for SPARC Technology
 1371.14 + *
 1371.15 + * Copyright (c) 1999 
 1371.16 + * Boris Fomitchev
 1371.17 + *
 1371.18 + * This material is provided "as is", with absolutely no warranty expressed
 1371.19 + * or implied. Any use is at your own risk.
 1371.20 + *
 1371.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1371.22 + * without fee, provided the above notices are retained on all copies.
 1371.23 + * Permission to modify the code and to distribute modified code is granted,
 1371.24 + * provided the above notices are retained, and a notice that the code was
 1371.25 + * modified is included with the above copyright notice.
 1371.26 + *
 1371.27 + */
 1371.28 +
 1371.29 +#ifndef _STLP_DEQUE
 1371.30 +#define _STLP_DEQUE
 1371.31 +
 1371.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1371.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x22
 1371.34 +#  include <stl/_prolog.h>
 1371.35 +# endif
 1371.36 +
 1371.37 +#ifdef _STLP_PRAGMA_ONCE
 1371.38 +# pragma once
 1371.39 +#endif
 1371.40 +
 1371.41 +#ifndef _STLP_INTERNAL_DEQUE_H
 1371.42 +# include <stl/_deque.h>
 1371.43 +#endif
 1371.44 +
 1371.45 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1371.46 +# include _STLP_NATIVE_HEADER(deque)
 1371.47 +#endif
 1371.48 +
 1371.49 +# if (_STLP_OUTERMOST_HEADER_ID == 0x22)
 1371.50 +#  include <stl/_epilog.h>
 1371.51 +#  undef _STLP_OUTERMOST_HEADER_ID
 1371.52 +# endif
 1371.53 +
 1371.54 +#endif /* _STLP_DEQUE */
 1371.55 +
 1371.56 +// Local Variables:
 1371.57 +// mode:C++
 1371.58 +// End:
  1372.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1372.2 +++ b/epoc32/include/stdapis/stlportv5/exception	Wed Mar 31 12:27:01 2010 +0100
  1372.3 @@ -0,0 +1,229 @@
  1372.4 +/*
  1372.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1372.6 + *
  1372.7 + * Copyright (c) 1996,1997
  1372.8 + * Silicon Graphics Computer Systems, Inc.
  1372.9 + *
 1372.10 + * Copyright (c) 1999 
 1372.11 + * Boris Fomitchev
 1372.12 + *
 1372.13 + * This material is provided "as is", with absolutely no warranty expressed
 1372.14 + * or implied. Any use is at your own risk.
 1372.15 + *
 1372.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1372.17 + * without fee, provided the above notices are retained on all copies.
 1372.18 + * Permission to modify the code and to distribute modified code is granted,
 1372.19 + * provided the above notices are retained, and a notice that the code was
 1372.20 + * modified is included with the above copyright notice.
 1372.21 + *
 1372.22 + */
 1372.23 +
 1372.24 +// This header exists solely for portability.  Normally it just includes
 1372.25 +// the native header <exception>.
 1372.26 +
 1372.27 +// The header <exception> contains low-level functions that interact
 1372.28 +// with a compiler's exception-handling mechanism.  It is assumed to
 1372.29 +// be supplied with the compiler, rather than with the library, because
 1372.30 +// it is inherently tied very closely to the compiler itself.
 1372.31 +
 1372.32 +// On platforms where <exception> does not exist, this header defines
 1372.33 +// an exception base class.  This is *not* a substitute for everything
 1372.34 +// in <exception>, but it suffices to support a bare minimum of STL
 1372.35 +// functionality.
 1372.36 +
 1372.37 +
 1372.38 +# if !defined (_STLP_OUTERMOST_HEADER_ID)
 1372.39 +#  define _STLP_OUTERMOST_HEADER_ID 0x423
 1372.40 +#  include <stl/_prolog.h>
 1372.41 +# elif (_STLP_OUTERMOST_HEADER_ID == 0x423) && ! defined (_STLP_DONT_POP_0x423)
 1372.42 +#  define _STLP_DONT_POP_0x423
 1372.43 +# endif
 1372.44 +
 1372.45 +#ifndef _STLP_EXCEPTION
 1372.46 +#define _STLP_EXCEPTION
 1372.47 +
 1372.48 +# if   ! defined (_STLP_NO_EXCEPTION_HEADER)
 1372.49 +
 1372.50 +#  if defined ( _UNCAUGHT_EXCEPTION )
 1372.51 +#   undef _STLP_INCOMPLETE_EXCEPTION_HEADER
 1372.52 +#  endif
 1372.53 +
 1372.54 +# if defined(_STLP_BROKEN_EXCEPTION_CLASS)
 1372.55 +#  define exception     _STLP_NULLIFIED_BROKEN_EXCEPTION_CLASS
 1372.56 +#  define bad_exception _STLP_NULLIFIED_BROKEN_BAD_EXCEPTION_CLASS
 1372.57 +#  if defined (_STLP_NO_NEW_NEW_HEADER)
 1372.58 +#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception.h)
 1372.59 +#  else
 1372.60 +#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(Exception)
 1372.61 +#  endif
 1372.62 +#  undef exception
 1372.63 +#  undef bad_exception
 1372.64 +# else
 1372.65 +
 1372.66 +#ifndef _STLP_NO_NEW_NEW_HEADER
 1372.67 +#define _STLP_NO_NEW_NEW_HEADER
 1372.68 +#endif
 1372.69 +
 1372.70 +# if defined (_STLP_NO_NEW_NEW_HEADER)
 1372.71 +#  include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception.h)
 1372.72 +# else
 1372.73 +#   include _STLP_NATIVE_CPP_RUNTIME_HEADER(exception)
 1372.74 +# endif
 1372.75 +
 1372.76 +# endif
 1372.77 +
 1372.78 +#    if defined (_STLP_MSVC) || defined (__ICL)
 1372.79 +// dwa 02/04/00 - here I'm assuming that __ICL uses the same library headers as vc6.
 1372.80 +// the header <yvals.h> which ships with vc6 and is included by its native <exception>
 1372.81 +// actually turns on warnings, so we have to turn them back off.
 1372.82 +#      include <config/_msvc_warnings_off.h>
 1372.83 +#    endif
 1372.84 +
 1372.85 +
 1372.86 +#  ifdef _STLP_USE_OWN_NAMESPACE
 1372.87 +
 1372.88 +_STLP_BEGIN_NAMESPACE
 1372.89 +
 1372.90 +#if !defined(_STLP_BROKEN_EXCEPTION_CLASS)
 1372.91 +using _STLP_VENDOR_EXCEPT_STD::exception;
 1372.92 +using _STLP_VENDOR_EXCEPT_STD::bad_exception;
 1372.93 +#endif
 1372.94 +
 1372.95 +# if ! defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS)
 1372.96 +
 1372.97 +// fbp : many platforms present strange mix of
 1372.98 +// those in various namespaces
 1372.99 +#  if !defined(_STLP_VENDOR_UNEXPECTED_STD)
1372.100 +#   define _STLP_VENDOR_UNEXPECTED_STD _STLP_VENDOR_EXCEPT_STD
1372.101 +#  endif
1372.102 +
1372.103 +// weird errors
1372.104 +# if (! defined (__BORLANDC__)) || (defined (__STD_EXCEPTION) && defined (__RWSTD_EXCEPTION_SEEN) && defined ( _STLP_DONT_POP_0x423))
1372.105 +using _STLP_VENDOR_UNEXPECTED_STD::unexpected;
1372.106 +using _STLP_VENDOR_UNEXPECTED_STD::unexpected_handler;
1372.107 +using _STLP_VENDOR_UNEXPECTED_STD::set_unexpected;
1372.108 +using _STLP_VENDOR_UNEXPECTED_STD::terminate;
1372.109 +using _STLP_VENDOR_UNEXPECTED_STD::terminate_handler;
1372.110 +using _STLP_VENDOR_UNEXPECTED_STD::set_terminate;
1372.111 +# endif
1372.112 +
1372.113 +# if !defined (_STLP_INCOMPLETE_EXCEPTION_HEADER) 
1372.114 +using _STLP_VENDOR_UNEXPECTED_STD::uncaught_exception;
1372.115 +# endif
1372.116 +
1372.117 +#  endif
1372.118 +
1372.119 +_STLP_END_NAMESPACE
1372.120 +
1372.121 +#  endif /* _STLP_OWN_NAMESPACE */
1372.122 +
1372.123 +#else /* _STLP_NO_EXCEPTION_HEADER */
1372.124 +
1372.125 +// fbp : absence of <exception> usually means that those
1372.126 +// functions are not going to be called by compiler.
1372.127 +// Still, define them for the user.
1372.128 +#ifdef __SYMBIAN32__
1372.129 +_STLP_BEGIN_NAMESPACE
1372.130 +#endif //__SYMBIAN32__
1372.131 +typedef void (*unexpected_handler)();
1372.132 +unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY;
1372.133 +void unexpected();
1372.134 +
1372.135 +typedef void (*terminate_handler)();
1372.136 +terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY;
1372.137 +void terminate();
1372.138 +
1372.139 +bool uncaught_exception(); // not implemented under mpw as of Jan/1999
1372.140 +
1372.141 +#ifdef __SYMBIAN32__
1372.142 +_STLP_END_NAMESPACE
1372.143 +#endif //__SYMBIAN32__
1372.144 +
1372.145 +#endif  /* _STLP_NO_EXCEPTION_HEADER */	
1372.146 +
1372.147 +# if   defined (_STLP_NO_EXCEPTION_HEADER) || defined(_STLP_BROKEN_EXCEPTION_CLASS)
1372.148 +# ifndef _STLP_EXCEPTION_H
1372.149 +#  define _STLP_EXCEPTION_H
1372.150 +
1372.151 +_STLP_BEGIN_NAMESPACE
1372.152 +
1372.153 +// section 18.6.1
1372.154 +#ifdef __SYMBIAN32__
1372.155 +class exception
1372.156 +#else
1372.157 +class _STLP_CLASS_DECLSPEC exception 
1372.158 +#endif
1372.159 +	{
1372.160 +	public:
1372.161 +# ifdef _STLP_OWN_IOSTREAMS
1372.162 +        _STLP_DECLSPEC exception() _STLP_NOTHROW;
1372.163 +        _STLP_DECLSPEC virtual ~exception() _STLP_NOTHROW;
1372.164 +	_STLP_DECLSPEC virtual const char* what() const _STLP_NOTHROW;
1372.165 +# else
1372.166 +        exception() _STLP_NOTHROW {}
1372.167 +		virtual ~exception() _STLP_NOTHROW {}
1372.168 +		virtual const char* what() const _STLP_NOTHROW {return "class exception";}
1372.169 +# endif
1372.170 +	};
1372.171 +	
1372.172 +	
1372.173 +
1372.174 +// section 18.6.2.1
1372.175 +#ifdef __SYMBIAN32__
1372.176 +class bad_exception : public exception 
1372.177 +#else
1372.178 +class _STLP_CLASS_DECLSPEC bad_exception : public exception 
1372.179 +#endif
1372.180 +	{
1372.181 +	public:
1372.182 +# ifdef _STLP_OWN_IOSTREAMS
1372.183 +	  _STLP_DECLSPEC bad_exception() _STLP_NOTHROW;
1372.184 +	  _STLP_DECLSPEC ~bad_exception() _STLP_NOTHROW;
1372.185 +	  _STLP_DECLSPEC const char* what() const _STLP_NOTHROW;
1372.186 +# else
1372.187 +	  bad_exception() _STLP_NOTHROW {}
1372.188 +	  ~bad_exception() _STLP_NOTHROW {}
1372.189 +	  const char* what() const _STLP_NOTHROW {return "class bad_exception";}
1372.190 +# endif
1372.191 +	};
1372.192 +
1372.193 +#ifdef __SYMBIAN32__
1372.194 +// Give forward declaration, this should be supported by the stdard libraries from platform vendor.
1372.195 +typedef void (*unexpected_handler)();
1372.196 +_STLP_DECLSPEC unexpected_handler set_unexpected(unexpected_handler f) _STLP_NOTHROW_INHERENTLY;
1372.197 +_STLP_DECLSPEC void unexpected();
1372.198 +
1372.199 +typedef void (*terminate_handler)();
1372.200 +_STLP_DECLSPEC terminate_handler set_terminate(terminate_handler f) _STLP_NOTHROW_INHERENTLY;
1372.201 +_STLP_DECLSPEC void terminate();
1372.202 +
1372.203 +_STLP_DECLSPEC bool uncaught_exception(); // not implemented under mpw as of Jan/1999
1372.204 +
1372.205 +#endif
1372.206 +_STLP_END_NAMESPACE
1372.207 +
1372.208 +#endif /* _STLP_NO_EXCEPTION_HEADER */
1372.209 +
1372.210 +_STLP_BEGIN_NAMESPACE
1372.211 +// forward declaration
1372.212 +class __Named_exception;
1372.213 +_STLP_END_NAMESPACE
1372.214 +#endif /* _STLP_EXCEPTION_H */
1372.215 +
1372.216 +#endif //_STLP_EXCEPTION
1372.217 +
1372.218 +# if (_STLP_OUTERMOST_HEADER_ID == 0x423)
1372.219 +#  if ! defined (_STLP_DONT_POP_0x423)
1372.220 +#   include <stl/_epilog.h>
1372.221 +#   undef  _STLP_OUTERMOST_HEADER_ID
1372.222 +#   endif
1372.223 +#   undef  _STLP_DONT_POP_0x423
1372.224 +# endif
1372.225 +
1372.226 +
1372.227 +// Local Variables:
1372.228 +// mode:C++
1372.229 +// End:
1372.230 +
1372.231 +
1372.232 +
  1373.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1373.2 +++ b/epoc32/include/stdapis/stlportv5/functional	Wed Mar 31 12:27:01 2010 +0100
  1373.3 @@ -0,0 +1,48 @@
  1373.4 +/*
  1373.5 + * Copyright (c) 1996,1997
  1373.6 + * Silicon Graphics Computer Systems, Inc.
  1373.7 + *
  1373.8 + * Copyright (c) 1999 
  1373.9 + * Boris Fomitchev
 1373.10 + *
 1373.11 + * This material is provided "as is", with absolutely no warranty expressed
 1373.12 + * or implied. Any use is at your own risk.
 1373.13 + *
 1373.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1373.15 + * without fee, provided the above notices are retained on all copies.
 1373.16 + * Permission to modify the code and to distribute modified code is granted,
 1373.17 + * provided the above notices are retained, and a notice that the code was
 1373.18 + * modified is included with the above copyright notice.
 1373.19 + *
 1373.20 + */
 1373.21 +
 1373.22 +#ifndef _STLP_FUNCTIONAL
 1373.23 +#define _STLP_FUNCTIONAL
 1373.24 +
 1373.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1373.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x27
 1373.27 +#  include <stl/_prolog.h>
 1373.28 +# endif
 1373.29 +
 1373.30 +# ifdef _STLP_PRAGMA_ONCE
 1373.31 +#  pragma once
 1373.32 +# endif
 1373.33 +
 1373.34 +# if defined (_STLP_IMPORT_VENDOR_STD)
 1373.35 +#  include _STLP_NATIVE_HEADER(functional)
 1373.36 +# endif
 1373.37 +
 1373.38 +# ifndef _STLP_INTERNAL_FUNCTION_H
 1373.39 +#  include <stl/_function.h>
 1373.40 +# endif
 1373.41 +
 1373.42 +# if (_STLP_OUTERMOST_HEADER_ID == 0x27)
 1373.43 +#  include <stl/_epilog.h>
 1373.44 +#  undef _STLP_OUTERMOST_HEADER_ID
 1373.45 +# endif
 1373.46 +
 1373.47 +#endif /* _STLP_FUNCTIONAL */
 1373.48 +
 1373.49 +// Local Variables:
 1373.50 +// mode:C++
 1373.51 +// End:
  1374.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1374.2 +++ b/epoc32/include/stdapis/stlportv5/hash_map	Wed Mar 31 12:27:01 2010 +0100
  1374.3 @@ -0,0 +1,42 @@
  1374.4 +/*
  1374.5 + * Copyright (c) 1996,1997
  1374.6 + * Silicon Graphics Computer Systems, Inc.
  1374.7 + *
  1374.8 + * Copyright (c) 1999 
  1374.9 + * Boris Fomitchev
 1374.10 + *
 1374.11 + * This material is provided "as is", with absolutely no warranty expressed
 1374.12 + * or implied. Any use is at your own risk.
 1374.13 + *
 1374.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1374.15 + * without fee, provided the above notices are retained on all copies.
 1374.16 + * Permission to modify the code and to distribute modified code is granted,
 1374.17 + * provided the above notices are retained, and a notice that the code was
 1374.18 + * modified is included with the above copyright notice.
 1374.19 + *
 1374.20 + */
 1374.21 +
 1374.22 +#ifndef _STLP_HASH_MAP
 1374.23 +#define _STLP_HASH_MAP
 1374.24 +
 1374.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1374.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x4028
 1374.27 +#  include <stl/_prolog.h>
 1374.28 +# endif
 1374.29 +
 1374.30 +# ifdef _STLP_PRAGMA_ONCE
 1374.31 +#  pragma once
 1374.32 +# endif
 1374.33 +
 1374.34 +#include <stl/_hash_map.h>
 1374.35 +
 1374.36 +# if (_STLP_OUTERMOST_HEADER_ID == 0x4028)
 1374.37 +#  include <stl/_epilog.h>
 1374.38 +#  undef _STLP_OUTERMOST_HEADER_ID
 1374.39 +# endif
 1374.40 +
 1374.41 +#endif /* _STLP_HASH_MAP */
 1374.42 +
 1374.43 +// Local Variables:
 1374.44 +// mode:C++
 1374.45 +// End:
  1375.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1375.2 +++ b/epoc32/include/stdapis/stlportv5/hash_set	Wed Mar 31 12:27:01 2010 +0100
  1375.3 @@ -0,0 +1,42 @@
  1375.4 +/*
  1375.5 + * Copyright (c) 1996,1997
  1375.6 + * Silicon Graphics Computer Systems, Inc.
  1375.7 + *
  1375.8 + * Copyright (c) 1999 
  1375.9 + * Boris Fomitchev
 1375.10 + *
 1375.11 + * This material is provided "as is", with absolutely no warranty expressed
 1375.12 + * or implied. Any use is at your own risk.
 1375.13 + *
 1375.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1375.15 + * without fee, provided the above notices are retained on all copies.
 1375.16 + * Permission to modify the code and to distribute modified code is granted,
 1375.17 + * provided the above notices are retained, and a notice that the code was
 1375.18 + * modified is included with the above copyright notice.
 1375.19 + *
 1375.20 + */
 1375.21 +
 1375.22 +#ifndef _STLP_HASH_SET
 1375.23 +#define _STLP_HASH_SET
 1375.24 +
 1375.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1375.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x4029
 1375.27 +#  include <stl/_prolog.h>
 1375.28 +# endif
 1375.29 +
 1375.30 +# ifdef _STLP_PRAGMA_ONCE
 1375.31 +#  pragma once
 1375.32 +# endif
 1375.33 +
 1375.34 +#include <stl/_hash_set.h>
 1375.35 +
 1375.36 +# if (_STLP_OUTERMOST_HEADER_ID == 0x4029)
 1375.37 +#  include <stl/_epilog.h>
 1375.38 +#  undef _STLP_OUTERMOST_HEADER_ID
 1375.39 +# endif
 1375.40 +
 1375.41 +#endif /* _STLP_HASH_SET */
 1375.42 +
 1375.43 +// Local Variables:
 1375.44 +// mode:C++
 1375.45 +// End:
  1376.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1376.2 +++ b/epoc32/include/stdapis/stlportv5/ios.h	Wed Mar 31 12:27:01 2010 +0100
  1376.3 @@ -0,0 +1,57 @@
  1376.4 +/*
  1376.5 + * Copyright (c) 1999 
  1376.6 + * Boris Fomitchev
  1376.7 + *
  1376.8 + * This material is provided "as is", with absolutely no warranty expressed
  1376.9 + * or implied. Any use is at your own risk.
 1376.10 + *
 1376.11 + * Permission to use or copy this software for any purpose is hereby granted 
 1376.12 + * without fee, provided the above notices are retained on all copies.
 1376.13 + * Permission to modify the code and to distribute modified code is granted,
 1376.14 + * provided the above notices are retained, and a notice that the code was
 1376.15 + * modified is included with the above copyright notice.
 1376.16 + *
 1376.17 + */
 1376.18 +
 1376.19 +#ifndef _STLP_IOS_H
 1376.20 +# define _STLP_IOS_H
 1376.21 +
 1376.22 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1376.23 +#  define _STLP_OUTERMOST_HEADER_ID 0x1033
 1376.24 +#  include <stl/_prolog.h>
 1376.25 +# endif
 1376.26 +
 1376.27 +# if defined (_STLP_OWN_IOSTREAMS)
 1376.28 +
 1376.29 +#ifdef __BORLANDC__
 1376.30 +#  include <ios.>
 1376.31 +#else
 1376.32 +#  include <ios>
 1376.33 +#endif
 1376.34 +
 1376.35 +# if defined (_STLP_USE_NAMESPACES)
 1376.36 +# include <using/ios>
 1376.37 +# endif
 1376.38 +
 1376.39 +# elif !defined (_STLP_USE_NO_IOSTREAMS)
 1376.40 +
 1376.41 +# include _STLP_NATIVE_OLD_STREAMS_HEADER(ios.h)
 1376.42 +# if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE)
 1376.43 +_STLP_BEGIN_NAMESPACE
 1376.44 +using _STLP_OLD_IO_NAMESPACE::ios;
 1376.45 +_STLP_END_NAMESPACE
 1376.46 +# endif /* _STLP_USE_OWN_NAMESPACE */
 1376.47 +
 1376.48 +# endif
 1376.49 +
 1376.50 +# if (_STLP_OUTERMOST_HEADER_ID == 0x1033)
 1376.51 +#  include <stl/_epilog.h>
 1376.52 +#  undef _STLP_OUTERMOST_HEADER_ID
 1376.53 +# endif
 1376.54 +
 1376.55 +#endif /* _STLP_IOS_H */
 1376.56 +
 1376.57 +// Local Variables:
 1376.58 +// mode:C++
 1376.59 +// End:
 1376.60 +
  1377.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1377.2 +++ b/epoc32/include/stdapis/stlportv5/iso646.h	Wed Mar 31 12:27:01 2010 +0100
  1377.3 @@ -0,0 +1,39 @@
  1377.4 +/*
  1377.5 + * Copyright (c) 1999
  1377.6 + * Boris Fomitchev
  1377.7 + *
  1377.8 + * This material is provided "as is", with absolutely no warranty expressed
  1377.9 + * or implied. Any use is at your own risk.
 1377.10 + *
 1377.11 + * Permission to use or copy this software for any purpose is hereby granted
 1377.12 + * without fee, provided the above notices are retained on all copies.
 1377.13 + * Permission to modify the code and to distribute modified code is granted,
 1377.14 + * provided the above notices are retained, and a notice that the code was
 1377.15 + * modified is included with the above copyright notice.
 1377.16 + *
 1377.17 + */
 1377.18 +
 1377.19 +#if !defined (_STLP_OUTERMOST_HEADER_ID)
 1377.20 +#  define _STLP_OUTERMOST_HEADER_ID 0x204
 1377.21 +#  include <stl/_prolog.h>
 1377.22 +#elif (_STLP_OUTERMOST_HEADER_ID == 0x204) && !defined (_STLP_DONT_POP_HEADER_ID)
 1377.23 +#  define _STLP_DONT_POP_HEADER_ID
 1377.24 +#endif
 1377.25 +
 1377.26 +/* evc3 doesn't have iso646.h */
 1377.27 +#if !defined (_STLP_WCE_EVC3) && !defined (N_PLAT_NLM) && !defined (__BORLANDC__)
 1377.28 +#  include _STLP_NATIVE_C_HEADER(iso646.h)
 1377.29 +#endif
 1377.30 +
 1377.31 +#if (_STLP_OUTERMOST_HEADER_ID == 0x204)
 1377.32 +#  if ! defined (_STLP_DONT_POP_HEADER_ID)
 1377.33 +#    include <stl/_epilog.h>
 1377.34 +#    undef  _STLP_OUTERMOST_HEADER_ID
 1377.35 +#  endif
 1377.36 +#  undef  _STLP_DONT_POP_HEADER_ID
 1377.37 +#endif
 1377.38 +
 1377.39 +/* Local Variables:
 1377.40 + * mode:C++
 1377.41 + * End:
 1377.42 + */
  1378.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1378.2 +++ b/epoc32/include/stdapis/stlportv5/istream.h	Wed Mar 31 12:27:01 2010 +0100
  1378.3 @@ -0,0 +1,63 @@
  1378.4 +/*
  1378.5 + * Copyright (c) 1999 
  1378.6 + * Boris Fomitchev
  1378.7 + *
  1378.8 + * This material is provided "as is", with absolutely no warranty expressed
  1378.9 + * or implied. Any use is at your own risk.
 1378.10 + *
 1378.11 + * Permission to use or copy this software for any purpose is hereby granted 
 1378.12 + * without fee, provided the above notices are retained on all copies.
 1378.13 + * Permission to modify the code and to distribute modified code is granted,
 1378.14 + * provided the above notices are retained, and a notice that the code was
 1378.15 + * modified is included with the above copyright notice.
 1378.16 + *
 1378.17 + */
 1378.18 +
 1378.19 +#ifndef _STLP_ISTREAM_H
 1378.20 +# define _STLP_ISTREAM_H
 1378.21 +
 1378.22 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1378.23 +#  define _STLP_OUTERMOST_HEADER_ID 0x2037
 1378.24 +#  include <stl/_prolog.h>
 1378.25 +# endif
 1378.26 +
 1378.27 +# if defined (_STLP_OWN_IOSTREAMS)
 1378.28 +
 1378.29 +# include <istream>
 1378.30 +
 1378.31 +# ifndef _STLP_HAS_NO_NAMESPACES
 1378.32 +#  ifdef _STLP_BROKEN_USING_DIRECTIVE
 1378.33 +using namespace _STLP_STD;
 1378.34 +#  else
 1378.35 +using _STLP_STD::basic_istream;
 1378.36 +using _STLP_STD::basic_iostream;
 1378.37 +using _STLP_STD::istream;
 1378.38 +using _STLP_STD::iostream;
 1378.39 +using _STLP_STD::ios;
 1378.40 +#   ifndef _STLP_NO_WCHAR_T
 1378.41 +using _STLP_STD::wistream;
 1378.42 +using _STLP_STD::wiostream;
 1378.43 +#   endif
 1378.44 +using _STLP_STD::ws;
 1378.45 +#  endif
 1378.46 +# endif
 1378.47 +
 1378.48 +# elif !defined (_STLP_USE_NO_IOSTREAMS)
 1378.49 +
 1378.50 +# include _STLP_NATIVE_OLD_STREAMS_HEADER(istream.h)
 1378.51 +
 1378.52 +# if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE)
 1378.53 +_STLP_BEGIN_NAMESPACE
 1378.54 +using _STLP_OLD_IO_NAMESPACE::istream;
 1378.55 +_STLP_END_NAMESPACE
 1378.56 +# endif /* _STLP_USE_OWN_NAMESPACE */
 1378.57 +
 1378.58 +# endif /* _STLP_OWN_IOSTREAMS */
 1378.59 +
 1378.60 +# if (_STLP_OUTERMOST_HEADER_ID == 0x2037)
 1378.61 +#  include <stl/_epilog.h>
 1378.62 +#  undef _STLP_OUTERMOST_HEADER_ID
 1378.63 +# endif
 1378.64 +
 1378.65 +#endif /* _STLP_ISTREAM_H */
 1378.66 +
  1379.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1379.2 +++ b/epoc32/include/stdapis/stlportv5/iterator	Wed Mar 31 12:27:01 2010 +0100
  1379.3 @@ -0,0 +1,59 @@
  1379.4 +/*
  1379.5 + *
  1379.6 + * Copyright (c) 1994
  1379.7 + * Hewlett-Packard Company
  1379.8 + *
  1379.9 + * Copyright (c) 1996,1997
 1379.10 + * Silicon Graphics Computer Systems, Inc.
 1379.11 + *
 1379.12 + * Copyright (c) 1997
 1379.13 + * Moscow Center for SPARC Technology
 1379.14 + *
 1379.15 + * Copyright (c) 1999 
 1379.16 + * Boris Fomitchev
 1379.17 + *
 1379.18 + * This material is provided "as is", with absolutely no warranty expressed
 1379.19 + * or implied. Any use is at your own risk.
 1379.20 + *
 1379.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1379.22 + * without fee, provided the above notices are retained on all copies.
 1379.23 + * Permission to modify the code and to distribute modified code is granted,
 1379.24 + * provided the above notices are retained, and a notice that the code was
 1379.25 + * modified is included with the above copyright notice.
 1379.26 + *
 1379.27 + */
 1379.28 +
 1379.29 +#ifndef _STLP_ITERATOR
 1379.30 +#define _STLP_ITERATOR
 1379.31 +
 1379.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1379.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x38
 1379.34 +#  include <stl/_prolog.h>
 1379.35 +# endif
 1379.36 +
 1379.37 +# ifdef _STLP_PRAGMA_ONCE
 1379.38 +#  pragma once
 1379.39 +# endif
 1379.40 +
 1379.41 +#if defined (_STLP_IMPORT_VENDOR_STD)
 1379.42 +# include _STLP_NATIVE_HEADER(iterator)
 1379.43 +#endif /* IMPORT */
 1379.44 +
 1379.45 +# ifndef _STLP_INTERNAL_ITERATOR_H
 1379.46 +#  include <stl/_iterator.h>
 1379.47 +# endif
 1379.48 +
 1379.49 +# ifndef _STLP_INTERNAL_STREAM_ITERATOR_H
 1379.50 +#  include <stl/_stream_iterator.h>
 1379.51 +# endif
 1379.52 +
 1379.53 +# if (_STLP_OUTERMOST_HEADER_ID == 0x38)
 1379.54 +#  include <stl/_epilog.h>
 1379.55 +#  undef _STLP_OUTERMOST_HEADER_ID
 1379.56 +# endif
 1379.57 +
 1379.58 +#endif /* _STLP_ITERATOR */
 1379.59 +
 1379.60 +// Local Variables:
 1379.61 +// mode:C++
 1379.62 +// End:
  1380.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1380.2 +++ b/epoc32/include/stdapis/stlportv5/limits	Wed Mar 31 12:27:01 2010 +0100
  1380.3 @@ -0,0 +1,44 @@
  1380.4 +/*
  1380.5 + * Copyright (c) 1997
  1380.6 + * Silicon Graphics Computer Systems, Inc.
  1380.7 + *
  1380.8 + * Copyright (c) 1999 
  1380.9 + * Boris Fomitchev
 1380.10 + *
 1380.11 + * This material is provided "as is", with absolutely no warranty expressed
 1380.12 + * or implied. Any use is at your own risk.
 1380.13 + *
 1380.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1380.15 + * without fee, provided the above notices are retained on all copies.
 1380.16 + * Permission to modify the code and to distribute modified code is granted,
 1380.17 + * provided the above notices are retained, and a notice that the code was
 1380.18 + * modified is included with the above copyright notice.
 1380.19 + *
 1380.20 + */
 1380.21 +
 1380.22 +#ifndef _STLP_LIMITS
 1380.23 +#define _STLP_LIMITS
 1380.24 +
 1380.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1380.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x39
 1380.27 +#  include <stl/_prolog.h>
 1380.28 +# endif
 1380.29 +
 1380.30 +# ifdef _STLP_PRAGMA_ONCE
 1380.31 +#  pragma once
 1380.32 +# endif
 1380.33 +
 1380.34 +# ifndef _STLP_LIMITS_H
 1380.35 +#  include <stl/_limits.h>
 1380.36 +# endif
 1380.37 +
 1380.38 +# if (_STLP_OUTERMOST_HEADER_ID == 0x39)
 1380.39 +#  include <stl/_epilog.h>
 1380.40 +#  undef _STLP_OUTERMOST_HEADER_ID
 1380.41 +# endif
 1380.42 +
 1380.43 +#endif /* _STLP_LIMITS */
 1380.44 +
 1380.45 +// Local Variables:
 1380.46 +// mode:C++
 1380.47 +// End:
  1381.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1381.2 +++ b/epoc32/include/stdapis/stlportv5/list	Wed Mar 31 12:27:01 2010 +0100
  1381.3 @@ -0,0 +1,55 @@
  1381.4 +/*
  1381.5 + *
  1381.6 + * Copyright (c) 1994
  1381.7 + * Hewlett-Packard Company
  1381.8 + *
  1381.9 + * Copyright (c) 1996,1997
 1381.10 + * Silicon Graphics Computer Systems, Inc.
 1381.11 + *
 1381.12 + * Copyright (c) 1997
 1381.13 + * Moscow Center for SPARC Technology
 1381.14 + *
 1381.15 + * Copyright (c) 1999 
 1381.16 + * Boris Fomitchev
 1381.17 + *
 1381.18 + * This material is provided "as is", with absolutely no warranty expressed
 1381.19 + * or implied. Any use is at your own risk.
 1381.20 + *
 1381.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1381.22 + * without fee, provided the above notices are retained on all copies.
 1381.23 + * Permission to modify the code and to distribute modified code is granted,
 1381.24 + * provided the above notices are retained, and a notice that the code was
 1381.25 + * modified is included with the above copyright notice.
 1381.26 + *
 1381.27 + */
 1381.28 +
 1381.29 +#ifndef _STLP_LIST
 1381.30 +#define _STLP_LIST
 1381.31 +
 1381.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1381.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x40
 1381.34 +#  include <stl/_prolog.h>
 1381.35 +# endif
 1381.36 +
 1381.37 +# ifdef _STLP_PRAGMA_ONCE
 1381.38 +#  pragma once
 1381.39 +# endif
 1381.40 +
 1381.41 +#ifndef _STLP_INTERNAL_LIST_H
 1381.42 +# include <stl/_list.h>
 1381.43 +#endif
 1381.44 +
 1381.45 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1381.46 +# include _STLP_NATIVE_HEADER(list)
 1381.47 +#endif
 1381.48 +
 1381.49 +# if (_STLP_OUTERMOST_HEADER_ID == 0x40)
 1381.50 +#  include <stl/_epilog.h>
 1381.51 +#  undef _STLP_OUTERMOST_HEADER_ID
 1381.52 +# endif
 1381.53 +
 1381.54 +#endif /* _STLP_LIST */
 1381.55 +
 1381.56 +// Local Variables:
 1381.57 +// mode:C++
 1381.58 +// End:
  1382.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1382.2 +++ b/epoc32/include/stdapis/stlportv5/map	Wed Mar 31 12:27:01 2010 +0100
  1382.3 @@ -0,0 +1,53 @@
  1382.4 +/*
  1382.5 + *
  1382.6 + * Copyright (c) 1994
  1382.7 + * Hewlett-Packard Company
  1382.8 + *
  1382.9 + * Copyright (c) 1996,1997
 1382.10 + * Silicon Graphics Computer Systems, Inc.
 1382.11 + *
 1382.12 + * Copyright (c) 1997
 1382.13 + * Moscow Center for SPARC Technology
 1382.14 + *
 1382.15 + * Copyright (c) 1999 
 1382.16 + * Boris Fomitchev
 1382.17 + *
 1382.18 + * This material is provided "as is", with absolutely no warranty expressed
 1382.19 + * or implied. Any use is at your own risk.
 1382.20 + *
 1382.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1382.22 + * without fee, provided the above notices are retained on all copies.
 1382.23 + * Permission to modify the code and to distribute modified code is granted,
 1382.24 + * provided the above notices are retained, and a notice that the code was
 1382.25 + * modified is included with the above copyright notice.
 1382.26 + *
 1382.27 + */
 1382.28 +
 1382.29 +#ifndef _STLP_MAP
 1382.30 +#define _STLP_MAP
 1382.31 +
 1382.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1382.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x43
 1382.34 +#  include <stl/_prolog.h>
 1382.35 +# endif
 1382.36 +
 1382.37 +# ifdef _STLP_PRAGMA_ONCE
 1382.38 +#  pragma once
 1382.39 +# endif
 1382.40 +
 1382.41 +#include <stl/_map.h>
 1382.42 +
 1382.43 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1382.44 +# include _STLP_NATIVE_HEADER(map)
 1382.45 +#endif
 1382.46 +
 1382.47 +# if (_STLP_OUTERMOST_HEADER_ID == 0x43)
 1382.48 +#  include <stl/_epilog.h>
 1382.49 +#  undef _STLP_OUTERMOST_HEADER_ID
 1382.50 +# endif
 1382.51 +
 1382.52 +#endif /* _STLP_MAP */
 1382.53 +
 1382.54 +// Local Variables:
 1382.55 +// mode:C++
 1382.56 +// End:
  1383.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1383.2 +++ b/epoc32/include/stdapis/stlportv5/mem.h	Wed Mar 31 12:27:01 2010 +0100
  1383.3 @@ -0,0 +1,56 @@
  1383.4 +/*
  1383.5 + * Copyright (c) 1999 
  1383.6 + * Boris Fomitchev
  1383.7 + *
  1383.8 + * This material is provided "as is", with absolutely no warranty expressed
  1383.9 + * or implied. Any use is at your own risk.
 1383.10 + *
 1383.11 + * Permission to use or copy this software for any purpose is hereby granted 
 1383.12 + * without fee, provided the above notices are retained on all copies.
 1383.13 + * Permission to modify the code and to distribute modified code is granted,
 1383.14 + * provided the above notices are retained, and a notice that the code was
 1383.15 + * modified is included with the above copyright notice.
 1383.16 + *
 1383.17 + */
 1383.18 +
 1383.19 +// Boris : highly questionable header for BC++
 1383.20 +
 1383.21 +#ifndef _STLP_mem_h
 1383.22 +
 1383.23 +# if !defined (_STLP_OUTERMOST_HEADER_ID)
 1383.24 +#  define _STLP_OUTERMOST_HEADER_ID 0x245
 1383.25 +#  include <stl/_prolog.h>
 1383.26 +# elif (_STLP_OUTERMOST_HEADER_ID == 0x245) && ! defined (_STLP_DONT_POP_0x245)
 1383.27 +#  define _STLP_DONT_POP_0x245
 1383.28 +# endif
 1383.29 +
 1383.30 +# if (__BORLANDC__ > 0x530) && !defined(__linux__)
 1383.31 +#  include <rw/stddefs.h>
 1383.32 +# endif
 1383.33 +
 1383.34 +#   undef __USING_CNAME__
 1383.35 +
 1383.36 +#ifdef __SYMBIAN32__
 1383.37 +#  include <mem.h>
 1383.38 +#else
 1383.39 +#  include _STLP_NATIVE_C_HEADER(mem.h)
 1383.40 +#endif
 1383.41 +
 1383.42 +
 1383.43 +# define _STLP_mem_h 1
 1383.44 +
 1383.45 +# if (_STLP_OUTERMOST_HEADER_ID == 0x245)
 1383.46 +#  if ! defined (_STLP_DONT_POP_0x245)
 1383.47 +#   include <stl/_epilog.h>
 1383.48 +#   undef  _STLP_OUTERMOST_HEADER_ID
 1383.49 +#   endif
 1383.50 +#   undef  _STLP_DONT_POP_0x245
 1383.51 +# endif
 1383.52 +
 1383.53 +#endif /* _STLP_mem_h */
 1383.54 +
 1383.55 +// #endif /* NATIVE */
 1383.56 +// Local Variables:
 1383.57 +// mode:C++
 1383.58 +// End:
 1383.59 +
  1384.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1384.2 +++ b/epoc32/include/stdapis/stlportv5/memory	Wed Mar 31 12:27:01 2010 +0100
  1384.3 @@ -0,0 +1,70 @@
  1384.4 +/*
  1384.5 + * Copyright (c) 1997-1999
  1384.6 + * Silicon Graphics Computer Systems, Inc.
  1384.7 + *
  1384.8 + * Copyright (c) 1999 
  1384.9 + * Boris Fomitchev
 1384.10 + *
 1384.11 + * This material is provided "as is", with absolutely no warranty expressed
 1384.12 + * or implied. Any use is at your own risk.
 1384.13 + *
 1384.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1384.15 + * without fee, provided the above notices are retained on all copies.
 1384.16 + * Permission to modify the code and to distribute modified code is granted,
 1384.17 + * provided the above notices are retained, and a notice that the code was
 1384.18 + * modified is included with the above copyright notice.
 1384.19 + *
 1384.20 + */
 1384.21 +
 1384.22 +#ifndef _STLP_MEMORY
 1384.23 +# define _STLP_MEMORY
 1384.24 +
 1384.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1384.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x46
 1384.27 +#  include <stl/_prolog.h>
 1384.28 +# endif
 1384.29 +
 1384.30 +# ifdef _STLP_PRAGMA_ONCE
 1384.31 +#  pragma once
 1384.32 +# endif
 1384.33 +
 1384.34 +# ifndef _STLP_INTERNAL_ALLOC_H
 1384.35 +#  include <stl/_alloc.h>
 1384.36 +# endif
 1384.37 +
 1384.38 +# ifndef _STLP_INTERNAL_TEMPBUF_H
 1384.39 +#  include <stl/_tempbuf.h>
 1384.40 +# endif
 1384.41 +
 1384.42 +# ifndef _STLP_INTERNAL_RAW_STORAGE_ITER_H
 1384.43 +#  include <stl/_raw_storage_iter.h>
 1384.44 +# endif
 1384.45 +
 1384.46 +# include <stl/_auto_ptr.h>
 1384.47 +
 1384.48 +# if defined (_STLP_IMPORT_VENDOR_STD)
 1384.49 +
 1384.50 +#  if defined (__MSL__)
 1384.51 +#   include _STLP_NATIVE_HEADER(limits)
 1384.52 +#  endif
 1384.53 +
 1384.54 +#  include _STLP_NATIVE_HEADER(memory)
 1384.55 +
 1384.56 +#  if defined (__MSL__) && (__MSL__ >= 0x2405	 && __MSL__ < 0x5201) 
 1384.57 +/*  980401 vss  MSL 2.4  Pro 3 Release  */	
 1384.58 +#   include <new_mem.h>
 1384.59 +#  endif
 1384.60 +
 1384.61 +# endif
 1384.62 +
 1384.63 +# if (_STLP_OUTERMOST_HEADER_ID == 0x46)
 1384.64 +#  include <stl/_epilog.h>
 1384.65 +#  undef _STLP_OUTERMOST_HEADER_ID
 1384.66 +# endif
 1384.67 +
 1384.68 +#endif /* _STLP_MEMORY */
 1384.69 +
 1384.70 +// Local Variables:
 1384.71 +// mode:C++
 1384.72 +// End:
 1384.73 +
  1385.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1385.2 +++ b/epoc32/include/stdapis/stlportv5/pthread_alloc	Wed Mar 31 12:27:01 2010 +0100
  1385.3 @@ -0,0 +1,49 @@
  1385.4 +/*
  1385.5 + *
  1385.6 + * Copyright (c) 1994
  1385.7 + * Hewlett-Packard Company
  1385.8 + *
  1385.9 + * Copyright (c) 1996,1997
 1385.10 + * Silicon Graphics Computer Systems, Inc.
 1385.11 + *
 1385.12 + * Copyright (c) 1997
 1385.13 + * Moscow Center for SPARC Technology
 1385.14 + *
 1385.15 + * Copyright (c) 1999 
 1385.16 + * Boris Fomitchev
 1385.17 + *
 1385.18 + * This material is provided "as is", with absolutely no warranty expressed
 1385.19 + * or implied. Any use is at your own risk.
 1385.20 + *
 1385.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1385.22 + * without fee, provided the above notices are retained on all copies.
 1385.23 + * Permission to modify the code and to distribute modified code is granted,
 1385.24 + * provided the above notices are retained, and a notice that the code was
 1385.25 + * modified is included with the above copyright notice.
 1385.26 + *
 1385.27 + */
 1385.28 +
 1385.29 +#ifndef _STLP_PTHREAD_ALLOC
 1385.30 +#define _STLP_PTHREAD_ALLOC
 1385.31 +
 1385.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1385.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x52
 1385.34 +#  include <stl/_prolog.h>
 1385.35 +# endif
 1385.36 +
 1385.37 +# ifdef _STLP_PRAGMA_ONCE
 1385.38 +#  pragma once
 1385.39 +# endif
 1385.40 +
 1385.41 +# include <stl/_pthread_alloc.h>
 1385.42 +
 1385.43 +# if (_STLP_OUTERMOST_HEADER_ID == 0x52)
 1385.44 +#  include <stl/_epilog.h>
 1385.45 +#  undef _STLP_OUTERMOST_HEADER_ID
 1385.46 +# endif
 1385.47 +
 1385.48 +#endif /* _STLP_PTHREAD_ALLOC */
 1385.49 +
 1385.50 +// Local Variables:
 1385.51 +// mode:C++
 1385.52 +// End:
  1386.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1386.2 +++ b/epoc32/include/stdapis/stlportv5/queue	Wed Mar 31 12:27:01 2010 +0100
  1386.3 @@ -0,0 +1,55 @@
  1386.4 +/*
  1386.5 + *
  1386.6 + * Copyright (c) 1994
  1386.7 + * Hewlett-Packard Company
  1386.8 + *
  1386.9 + * Copyright (c) 1996,1997
 1386.10 + * Silicon Graphics Computer Systems, Inc.
 1386.11 + *
 1386.12 + * Copyright (c) 1997
 1386.13 + * Moscow Center for SPARC Technology
 1386.14 + *
 1386.15 + * Copyright (c) 1999 
 1386.16 + * Boris Fomitchev
 1386.17 + *
 1386.18 + * This material is provided "as is", with absolutely no warranty expressed
 1386.19 + * or implied. Any use is at your own risk.
 1386.20 + *
 1386.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1386.22 + * without fee, provided the above notices are retained on all copies.
 1386.23 + * Permission to modify the code and to distribute modified code is granted,
 1386.24 + * provided the above notices are retained, and a notice that the code was
 1386.25 + * modified is included with the above copyright notice.
 1386.26 + *
 1386.27 + */
 1386.28 +
 1386.29 +#ifndef _STLP_QUEUE
 1386.30 +#define _STLP_QUEUE
 1386.31 +
 1386.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1386.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x53
 1386.34 +#  include <stl/_prolog.h>
 1386.35 +# endif
 1386.36 +
 1386.37 +# ifdef _STLP_PRAGMA_ONCE
 1386.38 +#  pragma once
 1386.39 +# endif
 1386.40 +
 1386.41 +#ifndef _STLP_INTERNAL_QUEUE_H
 1386.42 +# include <stl/_queue.h>
 1386.43 +#endif
 1386.44 +
 1386.45 +#ifndef _STLP_INTERNAL_FUNCTION_H
 1386.46 +# include <functional>
 1386.47 +#endif
 1386.48 +
 1386.49 +# if (_STLP_OUTERMOST_HEADER_ID == 0x53)
 1386.50 +#  include <stl/_epilog.h>
 1386.51 +#  undef _STLP_OUTERMOST_HEADER_ID
 1386.52 +# endif
 1386.53 +
 1386.54 +#endif /* _STLP_QUEUE */
 1386.55 +
 1386.56 +// Local Variables:
 1386.57 +// mode:C++
 1386.58 +// End:
  1387.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1387.2 +++ b/epoc32/include/stdapis/stlportv5/rope	Wed Mar 31 12:27:01 2010 +0100
  1387.3 @@ -0,0 +1,37 @@
  1387.4 +/*
  1387.5 + * Copyright (c) 1997
  1387.6 + * Silicon Graphics Computer Systems, Inc.
  1387.7 + *
  1387.8 + * Permission to use, copy, modify, distribute and sell this software
  1387.9 + * and its documentation for any purpose is hereby granted without fee,
 1387.10 + * provided that the above copyright notice appear in all copies and
 1387.11 + * that both that copyright notice and this permission notice appear
 1387.12 + * in supporting documentation.  Silicon Graphics makes no
 1387.13 + * representations about the suitability of this software for any
 1387.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1387.15 + */
 1387.16 +
 1387.17 +#ifndef _STLP_ROPE
 1387.18 +#define _STLP_ROPE
 1387.19 +
 1387.20 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1387.21 +#  define _STLP_OUTERMOST_HEADER_ID 0x54
 1387.22 +#  include <stl/_prolog.h>
 1387.23 +# endif
 1387.24 +
 1387.25 +# ifdef _STLP_PRAGMA_ONCE
 1387.26 +#  pragma once
 1387.27 +# endif
 1387.28 +
 1387.29 +# include <stl/_rope.h>
 1387.30 +
 1387.31 +# if (_STLP_OUTERMOST_HEADER_ID == 0x54)
 1387.32 +#  include <stl/_epilog.h>
 1387.33 +#  undef _STLP_OUTERMOST_HEADER_ID
 1387.34 +# endif
 1387.35 +
 1387.36 +#endif /* _STLP_ROPE */
 1387.37 +
 1387.38 +// Local Variables:
 1387.39 +// mode:C++
 1387.40 +// End:
  1388.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1388.2 +++ b/epoc32/include/stdapis/stlportv5/set	Wed Mar 31 12:27:01 2010 +0100
  1388.3 @@ -0,0 +1,53 @@
  1388.4 +/*
  1388.5 + *
  1388.6 + * Copyright (c) 1994
  1388.7 + * Hewlett-Packard Company
  1388.8 + *
  1388.9 + * Copyright (c) 1996,1997
 1388.10 + * Silicon Graphics Computer Systems, Inc.
 1388.11 + *
 1388.12 + * Copyright (c) 1997
 1388.13 + * Moscow Center for SPARC Technology
 1388.14 + *
 1388.15 + * Copyright (c) 1999 
 1388.16 + * Boris Fomitchev
 1388.17 + *
 1388.18 + * This material is provided "as is", with absolutely no warranty expressed
 1388.19 + * or implied. Any use is at your own risk.
 1388.20 + *
 1388.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1388.22 + * without fee, provided the above notices are retained on all copies.
 1388.23 + * Permission to modify the code and to distribute modified code is granted,
 1388.24 + * provided the above notices are retained, and a notice that the code was
 1388.25 + * modified is included with the above copyright notice.
 1388.26 + *
 1388.27 + */
 1388.28 +
 1388.29 +#ifndef _STLP_SET
 1388.30 +#define _STLP_SET
 1388.31 +
 1388.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1388.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x55
 1388.34 +#  include <stl/_prolog.h>
 1388.35 +# endif
 1388.36 +
 1388.37 +# ifdef _STLP_PRAGMA_ONCE
 1388.38 +#  pragma once
 1388.39 +# endif
 1388.40 +
 1388.41 +#include <stl/_set.h>
 1388.42 +
 1388.43 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1388.44 +# include _STLP_NATIVE_HEADER(set)
 1388.45 +#endif
 1388.46 +
 1388.47 +# if (_STLP_OUTERMOST_HEADER_ID == 0x55)
 1388.48 +#  include <stl/_epilog.h>
 1388.49 +#  undef _STLP_OUTERMOST_HEADER_ID
 1388.50 +# endif
 1388.51 +
 1388.52 +#endif /* _STLP_SET */
 1388.53 +
 1388.54 +// Local Variables:
 1388.55 +// mode:C++
 1388.56 +// End:
  1389.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1389.2 +++ b/epoc32/include/stdapis/stlportv5/slist	Wed Mar 31 12:27:01 2010 +0100
  1389.3 @@ -0,0 +1,44 @@
  1389.4 +/*
  1389.5 + * Copyright (c) 1997
  1389.6 + * Silicon Graphics Computer Systems, Inc.
  1389.7 + *
  1389.8 + * Permission to use, copy, modify, distribute and sell this software
  1389.9 + * and its documentation for any purpose is hereby granted without fee,
 1389.10 + * provided that the above copyright notice appear in all copies and
 1389.11 + * that both that copyright notice and this permission notice appear
 1389.12 + * in supporting documentation.  Silicon Graphics makes no
 1389.13 + * representations about the suitability of this software for any
 1389.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1389.15 + *
 1389.16 + */
 1389.17 +
 1389.18 +#ifndef _STLP_SLIST
 1389.19 +#define _STLP_SLIST
 1389.20 +
 1389.21 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1389.22 +#  define _STLP_OUTERMOST_HEADER_ID 0x58
 1389.23 +#  include <stl/_prolog.h>
 1389.24 +# endif
 1389.25 +
 1389.26 +# ifdef _STLP_PRAGMA_ONCE
 1389.27 +#  pragma once
 1389.28 +# endif
 1389.29 +
 1389.30 +#ifndef _STLP_INTERNAL_SLIST_H
 1389.31 +# include <stl/_slist.h>
 1389.32 +#endif
 1389.33 +
 1389.34 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1389.35 +# include _STLP_NATIVE_HEADER(slist)
 1389.36 +#endif
 1389.37 +
 1389.38 +# if (_STLP_OUTERMOST_HEADER_ID == 0x58)
 1389.39 +#  include <stl/_epilog.h>
 1389.40 +#  undef _STLP_OUTERMOST_HEADER_ID
 1389.41 +# endif
 1389.42 +
 1389.43 +#endif /* _STLP_SLIST */
 1389.44 +
 1389.45 +// Local Variables:
 1389.46 +// mode:C++
 1389.47 +// End:
  1390.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1390.2 +++ b/epoc32/include/stdapis/stlportv5/stack	Wed Mar 31 12:27:01 2010 +0100
  1390.3 @@ -0,0 +1,55 @@
  1390.4 +/*
  1390.5 + *
  1390.6 + * Copyright (c) 1994
  1390.7 + * Hewlett-Packard Company
  1390.8 + *
  1390.9 + * Copyright (c) 1996,1997
 1390.10 + * Silicon Graphics Computer Systems, Inc.
 1390.11 + *
 1390.12 + * Copyright (c) 1997
 1390.13 + * Moscow Center for SPARC Technology
 1390.14 + *
 1390.15 + * Copyright (c) 1999 
 1390.16 + * Boris Fomitchev
 1390.17 + *
 1390.18 + * This material is provided "as is", with absolutely no warranty expressed
 1390.19 + * or implied. Any use is at your own risk.
 1390.20 + *
 1390.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1390.22 + * without fee, provided the above notices are retained on all copies.
 1390.23 + * Permission to modify the code and to distribute modified code is granted,
 1390.24 + * provided the above notices are retained, and a notice that the code was
 1390.25 + * modified is included with the above copyright notice.
 1390.26 + *
 1390.27 + */
 1390.28 +
 1390.29 +#ifndef _STLP_STACK
 1390.30 +#define _STLP_STACK
 1390.31 +
 1390.32 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1390.33 +#  define _STLP_OUTERMOST_HEADER_ID 0x60
 1390.34 +#  include <stl/_prolog.h>
 1390.35 +# endif
 1390.36 +
 1390.37 +# ifdef _STLP_PRAGMA_ONCE
 1390.38 +#  pragma once
 1390.39 +# endif
 1390.40 +
 1390.41 +#ifndef _STLP_INTERNAL_STACK_H
 1390.42 +#include <stl/_stack.h>
 1390.43 +#endif
 1390.44 +
 1390.45 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1390.46 +# include _STLP_NATIVE_HEADER(stack)
 1390.47 +#endif
 1390.48 +
 1390.49 +# if (_STLP_OUTERMOST_HEADER_ID == 0x60)
 1390.50 +#  include <stl/_epilog.h>
 1390.51 +#  undef _STLP_OUTERMOST_HEADER_ID
 1390.52 +# endif
 1390.53 +
 1390.54 +#endif /* _STLP_STACK */
 1390.55 +
 1390.56 +// Local Variables:
 1390.57 +// mode:C++
 1390.58 +// End:
  1391.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1391.2 +++ b/epoc32/include/stdapis/stlportv5/stdexcept	Wed Mar 31 12:27:01 2010 +0100
  1391.3 @@ -0,0 +1,290 @@
  1391.4 +/*
  1391.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1391.6 + *
  1391.7 + * Copyright (c) 1996,1997
  1391.8 + * Silicon Graphics Computer Systems, Inc.
  1391.9 + *
 1391.10 + * Copyright (c) 1999 
 1391.11 + * Boris Fomitchev
 1391.12 + *
 1391.13 + * This material is provided "as is", with absolutely no warranty expressed
 1391.14 + * or implied. Any use is at your own risk.
 1391.15 + *
 1391.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1391.17 + * without fee, provided the above notices are retained on all copies.
 1391.18 + * Permission to modify the code and to distribute modified code is granted,
 1391.19 + * provided the above notices are retained, and a notice that the code was
 1391.20 + * modified is included with the above copyright notice.
 1391.21 + *
 1391.22 + */
 1391.23 +
 1391.24 +
 1391.25 +# if !defined (_STLP_OUTERMOST_HEADER_ID)
 1391.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x63
 1391.27 +#  include <stl/_prolog.h>
 1391.28 +# elif (_STLP_OUTERMOST_HEADER_ID == 0x63) && ! defined (_STLP_DONT_POP_0x63)
 1391.29 +#  define _STLP_DONT_POP_0x63
 1391.30 +# endif
 1391.31 +
 1391.32 +#ifndef _STLP_STDEXCEPT
 1391.33 +#define _STLP_STDEXCEPT 1
 1391.34 +
 1391.35 +# ifdef _STLP_PRAGMA_ONCE
 1391.36 +#  pragma once
 1391.37 +# endif
 1391.38 +
 1391.39 +#if defined (_STLP_USE_TRAP_LEAVE)
 1391.40 +
 1391.41 +enum {
 1391.42 +  STDEX_bad_alloc			= -10000,
 1391.43 +  STDEX_logic_error			= -10001,
 1391.44 +  STDEX_runtime_error		= -10002,
 1391.45 +  STDEX_domain_error		= -10003,
 1391.46 +  STDEX_invalid_argument	= -10004,
 1391.47 +  STDEX_length_error		= -10005,
 1391.48 +  STDEX_out_of_range		= -10006,
 1391.49 +  STDEX_range_error			= -10007,
 1391.50 +  STDEX_overflow_error		= -10008,
 1391.51 +  STDEX_underflow_error		= -10009
 1391.52 +};
 1391.53 +
 1391.54 +// User may override this
 1391.55 +#ifndef STDEX_REPORT_EXCEPTION
 1391.56 +# define STDEX_REPORT_EXCEPTION(x) 
 1391.57 +#endif
 1391.58 +
 1391.59 +#endif
 1391.60 +
 1391.61 +# if !defined(_STLP_STDEXCEPT_SEEN) && \
 1391.62 +   (!defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE))
 1391.63 +
 1391.64 +#  define _STLP_STDEXCEPT_SEEN 1
 1391.65 +
 1391.66 +#  include <exception>
 1391.67 +
 1391.68 +#if defined(_STLP_USE_EXCEPTIONS) || \
 1391.69 +    !(defined(_MIPS_SIM) && defined(_ABIO32) && _MIPS_SIM == _ABIO32)
 1391.70 +
 1391.71 +# include <cstring>
 1391.72 +
 1391.73 +#ifndef _STLP_INTERNAL_ALLOC_H
 1391.74 +# include <stl/_alloc.h>
 1391.75 +#endif
 1391.76 +
 1391.77 +#ifndef _STLP_STRING_FWD_H
 1391.78 +# include <stl/_string_fwd.h>
 1391.79 +#endif
 1391.80 +
 1391.81 +# define _STLP_OWN_STDEXCEPT 1
 1391.82 +
 1391.83 +_STLP_BEGIN_NAMESPACE
 1391.84 +
 1391.85 +# if   ! defined (_STLP_NO_EXCEPTION_HEADER)
 1391.86 +# if !defined(_STLP_EXCEPTION_BASE) && !defined(_STLP_BROKEN_EXCEPTION_CLASS) && defined (_STLP_USE_NAMESPACES) && defined (_STLP_USE_OWN_NAMESPACE)
 1391.87 +using _STLP_VENDOR_EXCEPT_STD::exception;
 1391.88 +# endif
 1391.89 +# endif
 1391.90 +#  define _STLP_EXCEPTION_BASE exception
 1391.91 +
 1391.92 +#ifdef __SYMBIAN32__
 1391.93 +class __Named_exception : public _STLP_EXCEPTION_BASE {
 1391.94 +#else
 1391.95 +class _STLP_CLASS_DECLSPEC __Named_exception : public _STLP_EXCEPTION_BASE {
 1391.96 +#endif //__SYMBIAN32__
 1391.97 +public:
 1391.98 +  _STLP_DECLSPEC __Named_exception(const string& __str) 
 1391.99 +# ifdef _STLP_OWN_IOSTREAMS
1391.100 +    ;
1391.101 +  _STLP_DECLSPEC const char* what() const _STLP_NOTHROW_INHERENTLY;
1391.102 +  _STLP_DECLSPEC ~__Named_exception() _STLP_NOTHROW_INHERENTLY;
1391.103 +# else
1391.104 +  {
1391.105 +    strncpy(_M_name, __get_c_string(__str), _S_bufsize);
1391.106 +    _M_name[_S_bufsize - 1] = '\0';
1391.107 +  }
1391.108 +  const char* what() const _STLP_NOTHROW_INHERENTLY { return _M_name; }
1391.109 +# endif
1391.110 +
1391.111 +private:
1391.112 +  enum { _S_bufsize = 256 };
1391.113 +  char _M_name[_S_bufsize];
1391.114 +};
1391.115 +
1391.116 +#ifdef __SYMBIAN32__
1391.117 +class logic_error : public __Named_exception {
1391.118 +#else
1391.119 +class _STLP_CLASS_DECLSPEC logic_error : public __Named_exception {
1391.120 +#endif
1391.121 +public:
1391.122 +  _STLP_DECLSPEC logic_error(const string& __s)
1391.123 +#ifdef __SYMBIAN32__
1391.124 +    ;
1391.125 +#else
1391.126 +   : __Named_exception(__s) {}
1391.127 +#endif
1391.128 +# ifdef _STLP_OWN_IOSTREAMS
1391.129 +  _STLP_DECLSPEC ~logic_error() _STLP_NOTHROW_INHERENTLY;
1391.130 +# endif
1391.131 +};
1391.132 +
1391.133 +#ifdef __SYMBIAN32__
1391.134 +class runtime_error : public __Named_exception {
1391.135 +#else
1391.136 +class _STLP_CLASS_DECLSPEC runtime_error : public __Named_exception {
1391.137 +#endif
1391.138 +public:
1391.139 +  _STLP_DECLSPEC runtime_error(const string& __s)
1391.140 +#ifdef __SYMBIAN32__
1391.141 +    ;
1391.142 +#else
1391.143 +   : __Named_exception(__s) {}
1391.144 +#endif
1391.145 +# ifdef _STLP_OWN_IOSTREAMS
1391.146 +  _STLP_DECLSPEC ~runtime_error() _STLP_NOTHROW_INHERENTLY;
1391.147 +# endif
1391.148 +};
1391.149 +
1391.150 +#ifdef __SYMBIAN32__
1391.151 +class domain_error : public logic_error {
1391.152 +#else
1391.153 +class _STLP_CLASS_DECLSPEC domain_error : public logic_error {
1391.154 +#endif
1391.155 +public:
1391.156 +  _STLP_DECLSPEC domain_error(const string& __arg)
1391.157 +#ifdef __SYMBIAN32__
1391.158 +    ;
1391.159 +#else
1391.160 +   : logic_error(__arg) {}
1391.161 +#endif
1391.162 +# ifdef _STLP_OWN_IOSTREAMS
1391.163 +  _STLP_DECLSPEC ~domain_error() _STLP_NOTHROW_INHERENTLY;
1391.164 +# endif
1391.165 +};
1391.166 +
1391.167 +#ifdef __SYMBIAN32__
1391.168 +class invalid_argument : public logic_error {
1391.169 +#else
1391.170 +class _STLP_CLASS_DECLSPEC invalid_argument : public logic_error {
1391.171 +#endif
1391.172 +public:
1391.173 +  _STLP_DECLSPEC invalid_argument(const string& __arg)
1391.174 +#ifdef __SYMBIAN32__
1391.175 +    ;
1391.176 +#else
1391.177 +   : logic_error(__arg) {}
1391.178 +#endif
1391.179 +# ifdef _STLP_OWN_IOSTREAMS
1391.180 +  _STLP_DECLSPEC ~invalid_argument() _STLP_NOTHROW_INHERENTLY;
1391.181 +# endif
1391.182 +};
1391.183 +
1391.184 +#ifdef __SYMBIAN32__
1391.185 +class length_error : public logic_error {
1391.186 +#else
1391.187 +class _STLP_CLASS_DECLSPEC length_error : public logic_error {
1391.188 +#endif
1391.189 +public:
1391.190 +  _STLP_DECLSPEC length_error(const string& __arg)
1391.191 +#ifdef __SYMBIAN32__
1391.192 +    ;
1391.193 +#else
1391.194 +   : logic_error(__arg) {}
1391.195 +#endif
1391.196 +# ifdef _STLP_OWN_IOSTREAMS
1391.197 +  _STLP_DECLSPEC ~length_error() _STLP_NOTHROW_INHERENTLY;
1391.198 +# endif
1391.199 +};
1391.200 +
1391.201 +#ifdef __SYMBIAN32__
1391.202 +class out_of_range : public logic_error {
1391.203 +#else
1391.204 +class _STLP_CLASS_DECLSPEC out_of_range : public logic_error {
1391.205 +#endif
1391.206 +public:
1391.207 +  _STLP_DECLSPEC out_of_range(const string& __arg)
1391.208 +#ifdef __SYMBIAN32__
1391.209 +    ;
1391.210 +#else
1391.211 +   : logic_error(__arg) {}
1391.212 +#endif
1391.213 +# ifdef _STLP_OWN_IOSTREAMS
1391.214 +  _STLP_DECLSPEC ~out_of_range() _STLP_NOTHROW_INHERENTLY;
1391.215 +# endif
1391.216 +};
1391.217 +
1391.218 +#ifdef __SYMBIAN32__
1391.219 +class range_error : public runtime_error {
1391.220 +#else
1391.221 +class _STLP_CLASS_DECLSPEC range_error : public runtime_error {
1391.222 +#endif
1391.223 +public:
1391.224 +  _STLP_DECLSPEC range_error(const string& __arg)
1391.225 +#ifdef __SYMBIAN32__
1391.226 +    ;
1391.227 +#else
1391.228 +   : runtime_error(__arg) {}
1391.229 +#endif
1391.230 +# ifdef _STLP_OWN_IOSTREAMS
1391.231 +  _STLP_DECLSPEC ~range_error() _STLP_NOTHROW_INHERENTLY;
1391.232 +# endif
1391.233 +};
1391.234 +
1391.235 +#ifdef __SYMBIAN32__
1391.236 +class overflow_error : public runtime_error {
1391.237 +#else
1391.238 +class _STLP_CLASS_DECLSPEC overflow_error : public runtime_error {
1391.239 +#endif
1391.240 +public:
1391.241 +  _STLP_DECLSPEC overflow_error(const string& __arg)
1391.242 +#ifdef __SYMBIAN32__
1391.243 +    ;
1391.244 +#else
1391.245 +   : runtime_error(__arg) {}
1391.246 +#endif
1391.247 +# ifdef _STLP_OWN_IOSTREAMS
1391.248 +  _STLP_DECLSPEC ~overflow_error() _STLP_NOTHROW_INHERENTLY;
1391.249 +# endif
1391.250 +};
1391.251 +
1391.252 +#ifdef __SYMBIAN32__
1391.253 +class underflow_error : public runtime_error {
1391.254 +#else
1391.255 +class _STLP_CLASS_DECLSPEC underflow_error : public runtime_error {
1391.256 +#endif
1391.257 +public:
1391.258 +  _STLP_DECLSPEC underflow_error(const string& __arg)
1391.259 +#ifdef __SYMBIAN32__
1391.260 +    ;
1391.261 +#else
1391.262 +   : runtime_error(__arg) {}
1391.263 +#endif
1391.264 +# ifdef _STLP_OWN_IOSTREAMS
1391.265 +  _STLP_DECLSPEC ~underflow_error() _STLP_NOTHROW_INHERENTLY;
1391.266 +# endif
1391.267 +};
1391.268 +
1391.269 +_STLP_END_NAMESPACE
1391.270 +
1391.271 +#endif /* Not o32, and no exceptions */
1391.272 +# endif /* _STLP_STDEXCEPT_SEEN */
1391.273 +
1391.274 +
1391.275 +#if defined (_STLP_USE_NATIVE_STDEXCEPT)
1391.276 +#  include _STLP_NATIVE_HEADER(stdexcept)
1391.277 +# endif
1391.278 +
1391.279 +#endif /* _STLP_STDEXCEPT */
1391.280 +
1391.281 +# if (_STLP_OUTERMOST_HEADER_ID == 0x63)
1391.282 +#  if ! defined (_STLP_DONT_POP_0x63)
1391.283 +#   include <stl/_epilog.h>
1391.284 +#   undef  _STLP_OUTERMOST_HEADER_ID
1391.285 +#   endif
1391.286 +#   undef  _STLP_DONT_POP_0x63
1391.287 +# endif
1391.288 +
1391.289 +
1391.290 +// Local Variables:
1391.291 +// mode:C++
1391.292 +// End:
1391.293 +
  1392.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1392.2 +++ b/epoc32/include/stdapis/stlportv5/stdiostream.h	Wed Mar 31 12:27:01 2010 +0100
  1392.3 @@ -0,0 +1,10 @@
  1392.4 +#ifndef _STLP_misc_stdiostream_h
  1392.5 +# define _STLP_misc_stdiostream_h
  1392.6 +# if (__SUNPRO_CC >= 0x500 )
  1392.7 +#  include <../CCios/stdiostream.h>
  1392.8 +# else if defined (__SUNPRO_CC)
  1392.9 +#  include <../CC/stdiostream.h>
 1392.10 +# else
 1392.11 +#  error "This file is for SUN CC only. Please remove it if it causes any harm for other compilers."
 1392.12 +# endif
 1392.13 +#endif
  1393.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1393.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_abbrevs.h	Wed Mar 31 12:27:01 2010 +0100
  1393.3 @@ -0,0 +1,70 @@
  1393.4 +/*
  1393.5 + *
  1393.6 + * Copyright (c) 1999 
  1393.7 + * Boris Fomitchev
  1393.8 + *
  1393.9 + * This material is provided "as is", with absolutely no warranty expressed
 1393.10 + * or implied. Any use is at your own risk.
 1393.11 + *
 1393.12 + * Permission to use or copy this software for any purpose is hereby granted 
 1393.13 + * without fee, provided the above notices are retained on all copies.
 1393.14 + * Permission to modify the code and to distribute modified code is granted,
 1393.15 + * provided the above notices are retained, and a notice that the code was
 1393.16 + * modified is included with the above copyright notice.
 1393.17 + *
 1393.18 + */
 1393.19 +
 1393.20 +/* NOTE: This is an internal header file, included by other STL headers.
 1393.21 + *   You should not attempt to use it directly.
 1393.22 + */
 1393.23 +
 1393.24 +#ifndef _STLP_INTERNAL_ABBREVS_H
 1393.25 +# define _STLP_INTERNAL_ABBREVS_H
 1393.26 +
 1393.27 +// ugliness is intentional - to reduce conflicts
 1393.28 +#  define input_iterator_tag             _In__ItT
 1393.29 +#  define output_iterator_tag            _Ou__ItT
 1393.30 +#  define bidirectional_iterator_tag     _Bd__ItT
 1393.31 +#  define random_access_iterator_tag     _Ra__ItT
 1393.32 +#  define input_iterator                 _In__It
 1393.33 +#  define output_iterator                _Ou__It
 1393.34 +#  define bidirectional_iterator         _Bd__It
 1393.35 +#  define random_access_iterator         _Ra__It
 1393.36 +#  define reverse_bidirectional_iterator _rBd__It
 1393.37 +#  define reverse_iterator               _r__It
 1393.38 +#  define back_insert_iterator           _bI__It
 1393.39 +#  define front_insert_iterator          _fI__It
 1393.40 +#  define raw_storage_iterator           _rS__It
 1393.41 +#  define _Const_traits _C_Tr
 1393.42 +#  define _Nonconst_traits _N_Tr
 1393.43 +
 1393.44 +// ugliness is intentional - to reduce conflicts probability
 1393.45 +#  define __malloc_alloc   M__A
 1393.46 +#  define __node_alloc     D__A
 1393.47 +#  define __new_alloc      N__A
 1393.48 +#  define __debug_alloc    G__A
 1393.49 +
 1393.50 +#  define __deque_iterator         _dQ__It
 1393.51 +#  define _Buf_traits              _dQ__BTr
 1393.52 +#  define _Deque_iterator          _Dq__It
 1393.53 +
 1393.54 +#  define _Select1st _S1st
 1393.55 +#  define _Select2nd _S2nd
 1393.56 +
 1393.57 +#  define _Hashtable_iterator         _hT__It
 1393.58 +#  define _Hashtable_const_iterator   _hT__cIt
 1393.59 +#  define _Hashtable_node             _hT__N
 1393.60 +#  define _Hashtable_base             _hT__B
 1393.61 +#  define _Ht_iterator _Ht_It
 1393.62 +
 1393.63 +#  define __list_iterator         _L__It
 1393.64 +#  define __slist_iterator         _SL__It
 1393.65 +
 1393.66 +#  define _Rb_tree_node_base       _rbT__NB
 1393.67 +#  define _Rb_tree_node            _rbT__N
 1393.68 +#  define _Rb_base_iterator        _rbTB__It
 1393.69 +#  define _Rb_tree_base_iterator   _rbT__It
 1393.70 +#  define _Rb_tree_base            _rbT__B
 1393.71 +
 1393.72 +#endif
 1393.73 +
  1394.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1394.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_algo.c	Wed Mar 31 12:27:01 2010 +0100
  1394.3 @@ -0,0 +1,1934 @@
  1394.4 +/*
  1394.5 + *
  1394.6 + * Copyright (c) 1994
  1394.7 + * Hewlett-Packard Company
  1394.8 + *
  1394.9 + * Copyright (c) 1996,1997
 1394.10 + * Silicon Graphics Computer Systems, Inc.
 1394.11 + *
 1394.12 + * Copyright (c) 1997
 1394.13 + * Moscow Center for SPARC Technology
 1394.14 + *
 1394.15 + * Copyright (c) 1999 
 1394.16 + * Boris Fomitchev
 1394.17 + *
 1394.18 + * This material is provided "as is", with absolutely no warranty expressed
 1394.19 + * or implied. Any use is at your own risk.
 1394.20 + *
 1394.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1394.22 + * without fee, provided the above notices are retained on all copies.
 1394.23 + * Permission to modify the code and to distribute modified code is granted,
 1394.24 + * provided the above notices are retained, and a notice that the code was
 1394.25 + * modified is included with the above copyright notice.
 1394.26 + *
 1394.27 + */
 1394.28 +
 1394.29 +#ifndef _STLP_ALGO_C
 1394.30 +# define _STLP_ALGO_C
 1394.31 +
 1394.32 +# if !defined (_STLP_INTERNAL_ALGO_H)
 1394.33 +#  include <stl/_algo.h>
 1394.34 +# endif
 1394.35 +
 1394.36 +_STLP_BEGIN_NAMESPACE
 1394.37 +
 1394.38 +template <class _BidirectionalIter, class _Distance, class _Compare>
 1394.39 +void __merge_without_buffer(_BidirectionalIter __first,
 1394.40 +                            _BidirectionalIter __middle,
 1394.41 +                            _BidirectionalIter __last,
 1394.42 +                            _Distance __len1, _Distance __len2,
 1394.43 +                            _Compare __comp);
 1394.44 +
 1394.45 +
 1394.46 +template <class _BidirectionalIter1, class _BidirectionalIter2,
 1394.47 +          class _BidirectionalIter3, class _Compare>
 1394.48 +_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1,
 1394.49 +                                     _BidirectionalIter1 __last1,
 1394.50 +                                     _BidirectionalIter2 __first2,
 1394.51 +                                     _BidirectionalIter2 __last2,
 1394.52 +                                     _BidirectionalIter3 __result,
 1394.53 +                                     _Compare __comp);
 1394.54 +
 1394.55 +template <class _Tp>
 1394.56 +# if !(defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x420 ))
 1394.57 +inline 
 1394.58 +# endif
 1394.59 +const _Tp& __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) {
 1394.60 +  if (__a < __b)
 1394.61 +    if (__b < __c)
 1394.62 +      return __b;
 1394.63 +    else if (__a < __c)
 1394.64 +      return __c;
 1394.65 +    else
 1394.66 +      return __a;
 1394.67 +  else if (__a < __c)
 1394.68 +    return __a;
 1394.69 +  else if (__b < __c)
 1394.70 +    return __c;
 1394.71 +  else
 1394.72 +    return __b;
 1394.73 +}
 1394.74 +
 1394.75 +template <class _Tp, class _Compare>
 1394.76 +# if !(defined (__SUNPRO_CC) && (__SUNPRO_CC < 0x420 ))
 1394.77 +inline 
 1394.78 +# endif
 1394.79 +const _Tp&
 1394.80 +__median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) {
 1394.81 +  if (__comp(__a, __b))
 1394.82 +    if (__comp(__b, __c))
 1394.83 +      return __b;
 1394.84 +    else if (__comp(__a, __c))
 1394.85 +      return __c;
 1394.86 +    else
 1394.87 +      return __a;
 1394.88 +  else if (__comp(__a, __c))
 1394.89 +    return __a;
 1394.90 +  else if (__comp(__b, __c))
 1394.91 +    return __c;
 1394.92 +  else
 1394.93 +    return __b;
 1394.94 +}
 1394.95 +
 1394.96 +template <class _ForwardIter1, class _ForwardIter2>
 1394.97 +_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
 1394.98 +                     _ForwardIter2 __first2, _ForwardIter2 __last2) 
 1394.99 +{
1394.100 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.101 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.102 +  // Test for empty ranges
1394.103 +  if (__first1 == __last1 || __first2 == __last2)
1394.104 +    return __first1;
1394.105 +
1394.106 +  // Test for a pattern of length 1.
1394.107 +  _ForwardIter2 __tmp(__first2);
1394.108 +  ++__tmp;
1394.109 +  if (__tmp == __last2)
1394.110 +    return find(__first1, __last1, *__first2);
1394.111 +
1394.112 +  // General case.
1394.113 +  _ForwardIter2 __p1 = __first2; 
1394.114 +  ++__p1;
1394.115 +
1394.116 +  _ForwardIter1 __current = __first1;
1394.117 +
1394.118 +  while (__first1 != __last1) {
1394.119 +    __first1 = find(__first1, __last1, *__first2);
1394.120 +    if (__first1 == __last1)
1394.121 +      return __last1;
1394.122 +
1394.123 +    _ForwardIter2 __p = __p1;
1394.124 +    __current = __first1; 
1394.125 +    if (++__current == __last1)
1394.126 +      return __last1;
1394.127 +
1394.128 +    while (*__current == *__p) {
1394.129 +      if (++__p == __last2)
1394.130 +        return __first1;
1394.131 +      if (++__current == __last1)
1394.132 +        return __last1;
1394.133 +    }
1394.134 +
1394.135 +    ++__first1;
1394.136 +  }
1394.137 +  return __first1;
1394.138 +}
1394.139 +
1394.140 +// search_n.  Search for __count consecutive copies of __val.
1394.141 +
1394.142 +template <class _ForwardIter, class _Integer, class _Tp>
1394.143 +_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1394.144 +                      _Integer __count, const _Tp& __val) {
1394.145 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.146 +  if (__count <= 0)
1394.147 +    return __first;
1394.148 +  else {
1394.149 +    __first = find(__first, __last, __val);
1394.150 +    while (__first != __last) {
1394.151 +      _Integer __n = __count - 1;
1394.152 +      _ForwardIter __i = __first;
1394.153 +      ++__i;
1394.154 +      while (__i != __last && __n != 0 && *__i == __val) {
1394.155 +        ++__i;
1394.156 +        --__n;
1394.157 +      }
1394.158 +      if (__n == 0)
1394.159 +        return __first;
1394.160 +      else
1394.161 +        __first = find(__i, __last, __val);
1394.162 +    }
1394.163 +    return __last;
1394.164 +  }
1394.165 +}
1394.166 +
1394.167 +template <class _ForwardIter, class _Integer, class _Tp, class _BinaryPred>
1394.168 +_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1394.169 +                      _Integer __count, const _Tp& __val,
1394.170 +                      _BinaryPred __binary_pred) {
1394.171 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.172 +  if (__count <= 0)
1394.173 +    return __first;
1394.174 +  else {
1394.175 +    while (__first != __last) {
1394.176 +      if (__binary_pred(*__first, __val))
1394.177 +        break;
1394.178 +      ++__first;
1394.179 +    }
1394.180 +    while (__first != __last) {
1394.181 +      _Integer __n = __count - 1;
1394.182 +      _ForwardIter __i = __first;
1394.183 +      ++__i;
1394.184 +      while (__i != __last && __n != 0 && __binary_pred(*__i, __val)) {
1394.185 +        ++__i;
1394.186 +        --__n;
1394.187 +      }
1394.188 +      if (__n == 0)
1394.189 +        return __first;
1394.190 +      else {
1394.191 +        while (__i != __last) {
1394.192 +          if (__binary_pred(*__i, __val))
1394.193 +            break;
1394.194 +          ++__i;
1394.195 +        }
1394.196 +        __first = __i;
1394.197 +      }
1394.198 +    }
1394.199 +    return __last;
1394.200 +  }
1394.201 +} 
1394.202 +
1394.203 +template <class _ForwardIter1, class _ForwardIter2>
1394.204 +_ForwardIter1 
1394.205 +find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1394.206 +         _ForwardIter2 __first2, _ForwardIter2 __last2)
1394.207 +{
1394.208 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.209 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.210 +  return __find_end(__first1, __last1, __first2, __last2,
1394.211 +# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1394.212 +                    _STLP_ITERATOR_CATEGORY(__first1, _ForwardIter1),
1394.213 +                    _STLP_ITERATOR_CATEGORY(__first2, _ForwardIter2),
1394.214 +# else
1394.215 +		    forward_iterator_tag(),
1394.216 +                    forward_iterator_tag(),
1394.217 +# endif
1394.218 +                    __equal_to(_STLP_VALUE_TYPE(__first1, _ForwardIter1))
1394.219 +    );
1394.220 +}
1394.221 +
1394.222 +// unique and unique_copy
1394.223 +template <class _InputIterator, class _OutputIterator, class _BinaryPredicate,
1394.224 +					    class _Tp>
1394.225 +_STLP_INLINE_LOOP _OutputIterator 
1394.226 +__unique_copy(_InputIterator __first, _InputIterator __last,
1394.227 +              _OutputIterator __result,
1394.228 +              _BinaryPredicate __binary_pred, _Tp*) {
1394.229 +  _Tp __val = *__first;
1394.230 + _STLP_PUSH_STACK_ITEM(_Tp, &__val)
1394.231 +  *__result = __val;
1394.232 +  while (++__first != __last)
1394.233 +    if (!__binary_pred(__val, *__first)) {
1394.234 +      __val = *__first;
1394.235 +      *++__result = __val;
1394.236 +    }
1394.237 +  return ++__result;
1394.238 +}
1394.239 +
1394.240 +template <class _InputIter, class _OutputIter, class _BinaryPredicate>
1394.241 +inline _OutputIter 
1394.242 +__unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1394.243 +              _BinaryPredicate __binary_pred, const output_iterator_tag &) {
1394.244 +  return __unique_copy(__first, __last, __result, __binary_pred, _STLP_VALUE_TYPE(__first, _InputIter));
1394.245 +}
1394.246 +
1394.247 +template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1394.248 +_STLP_INLINE_LOOP _ForwardIter 
1394.249 +__unique_copy(_InputIter __first, _InputIter __last, _ForwardIter __result, 
1394.250 +              _BinaryPredicate __binary_pred, const forward_iterator_tag &) {
1394.251 +  *__result = *__first;
1394.252 +  while (++__first != __last)
1394.253 +    if (!__binary_pred(*__result, *__first)) *++__result = *__first;
1394.254 +  return ++__result;
1394.255 +}
1394.256 +
1394.257 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
1394.258 +template <class _InputIterator, class _BidirectionalIterator, class _BinaryPredicate>
1394.259 +inline _BidirectionalIterator 
1394.260 +__unique_copy(_InputIterator __first, _InputIterator __last,
1394.261 +              _BidirectionalIterator __result, _BinaryPredicate __binary_pred,
1394.262 +              const bidirectional_iterator_tag &) {
1394.263 +  return __unique_copy(__first, __last, __result, __binary_pred, forward_iterator_tag());
1394.264 +}
1394.265 +
1394.266 +template <class _InputIterator, class _RandomAccessIterator, class _BinaryPredicate>
1394.267 +inline _RandomAccessIterator 
1394.268 +__unique_copy(_InputIterator __first, _InputIterator __last,
1394.269 +              _RandomAccessIterator __result, _BinaryPredicate __binary_pred,
1394.270 +              const random_access_iterator_tag &) {
1394.271 +  return __unique_copy(__first, __last, __result, __binary_pred, forward_iterator_tag());
1394.272 +}
1394.273 +# endif /* _STLP_NONTEMPL_BASE_MATCH_BUG */
1394.274 +
1394.275 +
1394.276 +template <class _InputIter, class _OutputIter>
1394.277 +_OutputIter 
1394.278 +unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result) {
1394.279 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.280 +  if (__first == __last) return __result;
1394.281 +  return __unique_copy(__first, __last, __result, __equal_to(_STLP_VALUE_TYPE(__first, _InputIter)),
1394.282 +                       _STLP_ITERATOR_CATEGORY(__result, _OutputIter));
1394.283 +}
1394.284 +
1394.285 +template <class _InputIter, class _OutputIter, class _BinaryPredicate>
1394.286 +_OutputIter 
1394.287 +unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1394.288 +            _BinaryPredicate __binary_pred) {
1394.289 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.290 +  if (__first == __last) return __result;
1394.291 +  return __unique_copy(__first, __last, __result, __binary_pred,
1394.292 +                       _STLP_ITERATOR_CATEGORY(__result, _OutputIter));
1394.293 +}
1394.294 +
1394.295 +// rotate and rotate_copy, and their auxiliary functions
1394.296 +
1394.297 +template <class _ForwardIter, class _Distance>
1394.298 +_ForwardIter __rotate(_ForwardIter __first,
1394.299 +                      _ForwardIter __middle,
1394.300 +                      _ForwardIter __last,
1394.301 +                      _Distance*,
1394.302 +                      const forward_iterator_tag &) {
1394.303 +  if (__first == __middle)
1394.304 +    return __last;
1394.305 +  if (__last  == __middle)
1394.306 +    return __first;
1394.307 +
1394.308 +  _ForwardIter __first2 = __middle;
1394.309 +  do {
1394.310 +    swap(*__first++, *__first2++);
1394.311 +    if (__first == __middle)
1394.312 +      __middle = __first2;
1394.313 +  } while (__first2 != __last);
1394.314 +
1394.315 +  _ForwardIter __new_middle = __first;
1394.316 +
1394.317 +  __first2 = __middle;
1394.318 +
1394.319 +  while (__first2 != __last) {
1394.320 +    swap (*__first++, *__first2++);
1394.321 +    if (__first == __middle)
1394.322 +      __middle = __first2;
1394.323 +    else if (__first2 == __last)
1394.324 +      __first2 = __middle;
1394.325 +  }
1394.326 +
1394.327 +  return __new_middle;
1394.328 +}
1394.329 +
1394.330 +template <class _BidirectionalIter, class _Distance>
1394.331 +_BidirectionalIter __rotate(_BidirectionalIter __first,
1394.332 +                            _BidirectionalIter __middle,
1394.333 +                            _BidirectionalIter __last,
1394.334 +                            _Distance*,
1394.335 +                            const bidirectional_iterator_tag &) {
1394.336 +  if (__first == __middle)
1394.337 +    return __last;
1394.338 +  if (__last  == __middle)
1394.339 +    return __first;
1394.340 +
1394.341 +  __reverse(__first,  __middle, bidirectional_iterator_tag());
1394.342 +  __reverse(__middle, __last,   bidirectional_iterator_tag());
1394.343 +
1394.344 +  while (__first != __middle && __middle != __last)
1394.345 +    swap (*__first++, *--__last);
1394.346 +
1394.347 +  if (__first == __middle) {
1394.348 +    __reverse(__middle, __last,   bidirectional_iterator_tag());
1394.349 +    return __last;
1394.350 +  }
1394.351 +  else {
1394.352 +    __reverse(__first,  __middle, bidirectional_iterator_tag());
1394.353 +    return __first;
1394.354 +  }
1394.355 +}
1394.356 +
1394.357 +template <class _RandomAccessIter, class _Distance, class _Tp>
1394.358 +_RandomAccessIter __rotate(_RandomAccessIter __first,
1394.359 +                           _RandomAccessIter __middle,
1394.360 +                           _RandomAccessIter __last,
1394.361 +                           _Distance *, _Tp *) {
1394.362 +
1394.363 +  _Distance __n = __last   - __first;
1394.364 +  _Distance __k = __middle - __first;
1394.365 +  _Distance __l = __n - __k;
1394.366 +  _RandomAccessIter __result = __first + (__last - __middle);
1394.367 +
1394.368 +  if (__k==0)  /* __first == middle */
1394.369 +    return __last;
1394.370 +
1394.371 +  if (__k == __l) {
1394.372 +    swap_ranges(__first, __middle, __middle);
1394.373 +    return __result;
1394.374 +  }
1394.375 +
1394.376 +  _Distance __d = __gcd(__n, __k);
1394.377 +
1394.378 +  for (_Distance __i = 0; __i < __d; __i++) {
1394.379 +    _Tp __tmp = *__first;
1394.380 +    _STLP_PUSH_STACK_ITEM(_Tp, &__tmp)
1394.381 +    _RandomAccessIter __p = __first;
1394.382 +
1394.383 +    if (__k < __l) {
1394.384 +      for (_Distance __j = 0; __j < __l/__d; __j++) {
1394.385 +	if (__p > __first + __l) {
1394.386 +          *__p = *(__p - __l);
1394.387 +          __p -= __l;
1394.388 +        }
1394.389 +
1394.390 +        *__p = *(__p + __k);
1394.391 +        __p += __k;
1394.392 +      }
1394.393 +    }
1394.394 +
1394.395 +    else {
1394.396 +      for (_Distance __j = 0; __j < __k/__d - 1; __j ++) {
1394.397 +        if (__p < __last - __k) {
1394.398 +          *__p = *(__p + __k);
1394.399 +          __p += __k;
1394.400 +        }
1394.401 +
1394.402 +        *__p = * (__p - __l);
1394.403 +        __p -= __l;
1394.404 +      }
1394.405 +    }
1394.406 +
1394.407 +    *__p = __tmp;
1394.408 +    ++__first;
1394.409 +  }
1394.410 +
1394.411 +  return __result;
1394.412 +}
1394.413 +
1394.414 +template <class _RandomAccessIter, class _Distance>
1394.415 +inline _RandomAccessIter 
1394.416 +__rotate(_RandomAccessIter __first, _RandomAccessIter __middle, _RandomAccessIter __last,
1394.417 +         _Distance * __dis, const random_access_iterator_tag &) {
1394.418 +  return __rotate(__first, __middle, __last,
1394.419 +                  __dis, _STLP_VALUE_TYPE(__first, _RandomAccessIter));
1394.420 +}
1394.421 +
1394.422 +template <class _ForwardIter>
1394.423 +_ForwardIter 
1394.424 +rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) {
1394.425 +  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1394.426 +  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1394.427 +  return __rotate(__first, __middle, __last,
1394.428 +                  _STLP_DISTANCE_TYPE(__first, _ForwardIter),
1394.429 +                  _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1394.430 +}
1394.431 +
1394.432 +// Return a random number in the range [0, __n).  This function encapsulates
1394.433 +// whether we're using rand (part of the standard C library) or lrand48
1394.434 +// (not standard, but a much better choice whenever it's available).
1394.435 +
1394.436 +template <class _Distance>
1394.437 +inline _Distance __random_number(_Distance __n) {
1394.438 +#ifdef _STLP_NO_DRAND48
1394.439 +  return rand() % __n;
1394.440 +#else
1394.441 +  return lrand48() % __n;
1394.442 +#endif
1394.443 +}
1394.444 +
1394.445 +template <class _RandomAccessIter>
1394.446 +void random_shuffle(_RandomAccessIter __first,
1394.447 +		    _RandomAccessIter __last) {
1394.448 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.449 +  if (__first == __last) return;
1394.450 +  for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
1394.451 +    iter_swap(__i, __first + __random_number((__i - __first) + 1));
1394.452 +}
1394.453 +
1394.454 +template <class _RandomAccessIter, class _RandomNumberGenerator>
1394.455 +void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
1394.456 +                    _RandomNumberGenerator& __rand) {
1394.457 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.458 +  if (__first == __last) return;
1394.459 +  for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
1394.460 +    iter_swap(__i, __first + __rand((__i - __first) + 1));
1394.461 +}
1394.462 +
1394.463 +# ifndef _STLP_NO_EXTENSIONS
1394.464 +
1394.465 +// random_sample and random_sample_n (extensions, not part of the standard).
1394.466 +
1394.467 +template <class _ForwardIter, class _OutputIter, class _Distance>
1394.468 +_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1394.469 +                            _OutputIter __stl_out, const _Distance __n)
1394.470 +{
1394.471 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.472 +  _Distance __remaining = distance(__first, __last);
1394.473 +  _Distance __m = (min) (__n, __remaining);
1394.474 +
1394.475 +  while (__m > 0) {
1394.476 +    if (__random_number(__remaining) < __m) {
1394.477 +      *__stl_out = *__first;
1394.478 +      ++__stl_out;
1394.479 +      --__m;
1394.480 +    }
1394.481 +
1394.482 +    --__remaining;
1394.483 +    ++__first;
1394.484 +  }
1394.485 +  return __stl_out;
1394.486 +}
1394.487 +
1394.488 +
1394.489 +template <class _ForwardIter, class _OutputIter, class _Distance,
1394.490 +          class _RandomNumberGenerator>
1394.491 +_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1394.492 +                            _OutputIter __stl_out, const _Distance __n,
1394.493 +                            _RandomNumberGenerator& __rand)
1394.494 +{
1394.495 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.496 +  _Distance __remaining = distance(__first, __last);
1394.497 +  _Distance __m = (min) (__n, __remaining);
1394.498 +
1394.499 +  while (__m > 0) {
1394.500 +    if (__rand(__remaining) < __m) {
1394.501 +      *__stl_out = *__first;
1394.502 +      ++__stl_out;
1394.503 +      --__m;
1394.504 +    }
1394.505 +
1394.506 +    --__remaining;
1394.507 +    ++__first;
1394.508 +  }
1394.509 +  return __stl_out;
1394.510 +}
1394.511 +
1394.512 +template <class _InputIter, class _RandomAccessIter, class _Distance>
1394.513 +_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last,
1394.514 +                                  _RandomAccessIter __stl_out,
1394.515 +                                  const _Distance __n)
1394.516 +{
1394.517 +  _Distance __m = 0;
1394.518 +  _Distance __t = __n;
1394.519 +  for ( ; __first != __last && __m < __n; ++__m, ++__first) 
1394.520 +    __stl_out[__m] = *__first;
1394.521 +
1394.522 +  while (__first != __last) {
1394.523 +    ++__t;
1394.524 +    _Distance __M = __random_number(__t);
1394.525 +    if (__M < __n)
1394.526 +      __stl_out[__M] = *__first;
1394.527 +    ++__first;
1394.528 +  }
1394.529 +
1394.530 +  return __stl_out + __m;
1394.531 +}
1394.532 +
1394.533 +template <class _InputIter, class _RandomAccessIter,
1394.534 +          class _RandomNumberGenerator, class _Distance>
1394.535 +_RandomAccessIter __random_sample(_InputIter __first, _InputIter __last,
1394.536 +                                  _RandomAccessIter __stl_out,
1394.537 +                                  _RandomNumberGenerator& __rand,
1394.538 +                                  const _Distance __n)
1394.539 +{
1394.540 +  _Distance __m = 0;
1394.541 +  _Distance __t = __n;
1394.542 +  for ( ; __first != __last && __m < __n; ++__m, ++__first)
1394.543 +    __stl_out[__m] = *__first;
1394.544 +
1394.545 +  while (__first != __last) {
1394.546 +    ++__t;
1394.547 +    _Distance __M = __rand(__t);
1394.548 +    if (__M < __n)
1394.549 +      __stl_out[__M] = *__first;
1394.550 +    ++__first;
1394.551 +  }
1394.552 +
1394.553 +  return __stl_out + __m;
1394.554 +}
1394.555 +
1394.556 +template <class _InputIter, class _RandomAccessIter>
1394.557 +_RandomAccessIter
1394.558 +random_sample(_InputIter __first, _InputIter __last,
1394.559 +              _RandomAccessIter __out_first, _RandomAccessIter __out_last) 
1394.560 +{
1394.561 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.562 +  _STLP_DEBUG_CHECK(__check_range(__out_first, __out_last))
1394.563 +  return __random_sample(__first, __last,
1394.564 +                         __out_first, __out_last - __out_first);
1394.565 +}
1394.566 +
1394.567 +template <class _InputIter, class _RandomAccessIter, class _RandomNumberGenerator>
1394.568 +_RandomAccessIter
1394.569 +random_sample(_InputIter __first, _InputIter __last,
1394.570 +              _RandomAccessIter __out_first, _RandomAccessIter __out_last,
1394.571 +              _RandomNumberGenerator& __rand) 
1394.572 +{
1394.573 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.574 +  _STLP_DEBUG_CHECK(__check_range(__out_first, __out_last))
1394.575 +  return __random_sample(__first, __last,
1394.576 +                         __out_first, __rand,
1394.577 +                         __out_last - __out_first);
1394.578 +}
1394.579 +
1394.580 +# endif /* _STLP_NO_EXTENSIONS */
1394.581 +
1394.582 +// partition, stable_partition, and their auxiliary functions
1394.583 +
1394.584 +template <class _ForwardIter, class _Predicate>
1394.585 +_STLP_INLINE_LOOP _ForwardIter __partition(_ForwardIter __first,
1394.586 +                                           _ForwardIter __last,
1394.587 +                                           _Predicate   __pred,
1394.588 +                                           const forward_iterator_tag &) {
1394.589 +  if (__first == __last) return __first;
1394.590 +
1394.591 +  while (__pred(*__first))
1394.592 +    if (++__first == __last) return __first;
1394.593 +
1394.594 +  _ForwardIter __next = __first;
1394.595 +
1394.596 +  while (++__next != __last)
1394.597 +    if (__pred(*__next)) {
1394.598 +      swap(*__first, *__next);
1394.599 +      ++__first;
1394.600 +    }
1394.601 +  return __first;
1394.602 +}
1394.603 +
1394.604 +/* bug fix- start*/
1394.605 +
1394.606 +template <class _ForwardIter>
1394.607 +_ForwardIter
1394.608 +__rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last) {
1394.609 +  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1394.610 +  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1394.611 +  return __rotate_aux(__first, __middle, __last,
1394.612 +                      _STLP_DISTANCE_TYPE(__first, _ForwardIter),
1394.613 +                      _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1394.614 +}
1394.615 +
1394.616 +template <class _ForwardIter, class _Distance>
1394.617 +_ForwardIter __rotate_aux(_ForwardIter __first,
1394.618 +                          _ForwardIter __middle,
1394.619 +                          _ForwardIter __last,
1394.620 +                          _Distance*,
1394.621 +                          const forward_iterator_tag &) {
1394.622 +  if (__first == __middle)
1394.623 +    return __last;
1394.624 +  if (__last  == __middle)
1394.625 +    return __first;
1394.626 +
1394.627 +  _ForwardIter __first2 = __middle;
1394.628 +  do {
1394.629 +    swap(*__first++, *__first2++);
1394.630 +    if (__first == __middle)
1394.631 +      __middle = __first2;
1394.632 +  } while (__first2 != __last);
1394.633 +
1394.634 +  _ForwardIter __new_middle = __first;
1394.635 +
1394.636 +  __first2 = __middle;
1394.637 +
1394.638 +  while (__first2 != __last) {
1394.639 +    swap (*__first++, *__first2++);
1394.640 +    if (__first == __middle)
1394.641 +      __middle = __first2;
1394.642 +    else if (__first2 == __last)
1394.643 +      __first2 = __middle;
1394.644 +  }
1394.645 +
1394.646 +  return __new_middle;
1394.647 +}
1394.648 +
1394.649 +
1394.650 +template <class _ForwardIter, class _Pointer, class _Predicate,
1394.651 +          class _Distance>
1394.652 +_ForwardIter __stable_partition_adaptive(_ForwardIter __first,
1394.653 +                                         _ForwardIter __last,
1394.654 +                                         _Predicate __pred, _Distance __len,
1394.655 +                                         _Pointer __buffer, _Distance __buffer_size,
1394.656 +                                         bool __pred_of_first, bool __pred_of_before_last) {
1394.657 +  if (__len <= __buffer_size) {
1394.658 +    _ForwardIter __result1 = __first;
1394.659 +    _Pointer __result2 = __buffer;
1394.660 +    if ((__first != __last) && (!__pred_of_first || __pred(*__first))) {
1394.661 +      *__result2 = *__first;
1394.662 +      ++__result2; ++__first; --__len;
1394.663 +    }
1394.664 +    for (; __first != __last ; ++__first, --__len) {
1394.665 +      if (((__len == 1) && (__pred_of_before_last || __pred(*__first))) ||
1394.666 +          ((__len != 1) && __pred(*__first))){
1394.667 +        *__result1 = *__first;
1394.668 +        ++__result1;
1394.669 +      }
1394.670 +      else {
1394.671 +        *__result2 = *__first;
1394.672 +        ++__result2;
1394.673 +      }
1394.674 +    }
1394.675 +    copy(__buffer, __result2, __result1);
1394.676 +    return __result1;
1394.677 +  }
1394.678 +  else {
1394.679 +    _ForwardIter __middle = __first;
1394.680 +    _Distance __half_len = __len / 2;
1394.681 +    advance(__middle, __half_len);
1394.682 +    return __rotate(__stable_partition_adaptive(
1394.683 +                          __first, __middle, __pred,
1394.684 +                          __half_len, __buffer, __buffer_size,
1394.685 +                          __pred_of_first, false),
1394.686 +                    __middle,
1394.687 +                    __stable_partition_adaptive(
1394.688 +                          __middle, __last, __pred,
1394.689 +                          __len - __half_len, __buffer, __buffer_size,
1394.690 +                          true, __pred_of_before_last));
1394.691 +  }
1394.692 +}
1394.693 +
1394.694 +
1394.695 +template <class _ForwardIter, class _Predicate, class _Distance>
1394.696 +_ForwardIter __inplace_stable_partition(_ForwardIter __first,
1394.697 +                                        _ForwardIter __last,
1394.698 +                                        _Predicate __pred, _Distance __len,
1394.699 +                                        bool __pred_of_first, bool __pred_of_before_last) {
1394.700 +  if (__len == 1)
1394.701 +    return (__pred_of_first && (__pred_of_before_last || __pred(*__first))) ? __last : __first;
1394.702 +  _ForwardIter __middle = __first;
1394.703 +  _Distance __half_len = __len / 2;
1394.704 +  advance(__middle, __half_len);
1394.705 +  return __rotate(__inplace_stable_partition(__first, __middle, __pred, __half_len, __pred_of_first, false),
1394.706 +                  __middle,
1394.707 +                  __inplace_stable_partition(__middle, __last, __pred, __len - __half_len, true, __pred_of_before_last));
1394.708 +}
1394.709 +
1394.710 +
1394.711 +
1394.712 +template <class _ForwardIter, class _Predicate>
1394.713 +_ForwardIter
1394.714 +stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) {
1394.715 +  _STLP_DEBUG_CHECK(_STLP_PRIV __check_range(__first, __last))
1394.716 +  for (;;) {
1394.717 +    if (__first == __last)
1394.718 +      return __first;
1394.719 +    else if (__pred(*__first))
1394.720 +      ++__first;
1394.721 +    else
1394.722 +      break;
1394.723 +  }
1394.724 +  return  __stable_partition_aux(__first, __last, __pred,
1394.725 +                                           _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1394.726 +}
1394.727 +
1394.728 +
1394.729 +template <class _ForwardIter, class _Predicate, class _Tp, class _Distance>
1394.730 +inline _ForwardIter
1394.731 +__stable_partition_aux_aux(_ForwardIter __first, _ForwardIter __last,
1394.732 +                           _Predicate __pred, _Tp*, _Distance*, bool __pred_of_before_last = false) {
1394.733 +  _Temporary_buffer<_ForwardIter, _Tp> __buf(__first, __last);
1394.734 +  return (__buf.size() > 0) ?
1394.735 +    __stable_partition_adaptive(__first, __last, __pred,
1394.736 +                                _Distance(__buf.requested_size()),
1394.737 +                                __buf.begin(), __buf.size(),
1394.738 +                                false, __pred_of_before_last)  :
1394.739 +    __inplace_stable_partition(__first, __last, __pred,
1394.740 +                               _Distance(__buf.requested_size()),
1394.741 +                               false, __pred_of_before_last);
1394.742 +
1394.743 +}
1394.744 +
1394.745 +template <class _ForwardIter, class _Predicate>
1394.746 +_ForwardIter
1394.747 +__stable_partition_aux(_ForwardIter __first, _ForwardIter __last, _Predicate __pred,
1394.748 +                       const forward_iterator_tag &) {
1394.749 +  return __stable_partition_aux_aux(__first, __last, __pred,
1394.750 +                                    _STLP_VALUE_TYPE(__first, _ForwardIter),
1394.751 +                                    _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1394.752 +}
1394.753 +
1394.754 +
1394.755 +/* bug fix- end*/
1394.756 +
1394.757 +
1394.758 +
1394.759 +template <class _BidirectionalIter, class _Predicate>
1394.760 +_STLP_INLINE_LOOP _BidirectionalIter __partition(_BidirectionalIter __first,
1394.761 +                                                 _BidirectionalIter __last,
1394.762 +                                                 _Predicate __pred,
1394.763 +                                                 const bidirectional_iterator_tag &) {
1394.764 +  while (true) {
1394.765 +    while (true)
1394.766 +      if (__first == __last)
1394.767 +        return __first;
1394.768 +      else if (__pred(*__first))
1394.769 +        ++__first;
1394.770 +      else
1394.771 +        break;
1394.772 +    --__last;
1394.773 +    while (true)
1394.774 +      if (__first == __last)
1394.775 +        return __first;
1394.776 +      else if (!__pred(*__last))
1394.777 +        --__last;
1394.778 +      else
1394.779 +        break;
1394.780 +    iter_swap(__first, __last);
1394.781 +    ++__first;
1394.782 +  }
1394.783 +}
1394.784 +
1394.785 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
1394.786 +template <class _BidirectionalIter, class _Predicate>
1394.787 +inline
1394.788 +_BidirectionalIter __partition(_BidirectionalIter __first,
1394.789 +                               _BidirectionalIter __last,
1394.790 +			       _Predicate __pred,
1394.791 +			       const random_access_iterator_tag &) {
1394.792 +  return __partition(__first, __last, __pred, bidirectional_iterator_tag());
1394.793 +}
1394.794 +# endif
1394.795 +
1394.796 +template <class _ForwardIter, class _Predicate>
1394.797 +_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate   __pred) {
1394.798 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.799 +  return __partition(__first, __last, __pred, _STLP_ITERATOR_CATEGORY(__first, _ForwardIter));
1394.800 +}
1394.801 +
1394.802 +/*
1394.803 +template <class _ForwardIter, class _Predicate, class _Distance>
1394.804 +_ForwardIter __inplace_stable_partition(_ForwardIter __first,
1394.805 +                                        _ForwardIter __last,
1394.806 +                                        _Predicate __pred, _Distance __len) {
1394.807 +  if (__len == 1)
1394.808 +    return __pred(*__first) ? __last : __first;
1394.809 +  _ForwardIter __middle = __first;
1394.810 +  advance(__middle, __len / 2);
1394.811 +  return rotate(__inplace_stable_partition(__first, __middle, __pred, 
1394.812 +                                           __len / 2),
1394.813 +                __middle,
1394.814 +                __inplace_stable_partition(__middle, __last, __pred,
1394.815 +                                           __len - __len / 2));
1394.816 +}
1394.817 +
1394.818 +
1394.819 +template <class _ForwardIter, class _Pointer, class _Predicate, 
1394.820 +          class _Distance>
1394.821 +_ForwardIter __stable_partition_adaptive(_ForwardIter __first,
1394.822 +                                         _ForwardIter __last,
1394.823 +                                         _Predicate __pred, _Distance __len,
1394.824 +                                         _Pointer __buffer,
1394.825 +                                         _Distance __buffer_size) 
1394.826 +{
1394.827 +  if (__len <= __buffer_size) {
1394.828 +    _ForwardIter __result1 = __first;
1394.829 +    _Pointer __result2 = __buffer;
1394.830 +    for ( ; __first != __last ; ++__first)
1394.831 +      if (__pred(*__first)) {
1394.832 +        *__result1 = *__first;
1394.833 +        ++__result1;
1394.834 +      }
1394.835 +      else {
1394.836 +        *__result2 = *__first;
1394.837 +        ++__result2;
1394.838 +      }
1394.839 +    copy(__buffer, __result2, __result1);
1394.840 +    return __result1;
1394.841 +  }
1394.842 +  else {
1394.843 +    _ForwardIter __middle = __first;
1394.844 +    advance(__middle, __len / 2);
1394.845 +    return rotate(__stable_partition_adaptive(
1394.846 +                          __first, __middle, __pred,
1394.847 +                          _Distance(__len / 2), __buffer, __buffer_size),
1394.848 +                    __middle,
1394.849 +                    __stable_partition_adaptive(
1394.850 +                          __middle, __last, __pred,
1394.851 +                          _Distance(__len - __len / 2), __buffer, __buffer_size));
1394.852 +  }
1394.853 +}
1394.854 +*/ //bug fix
1394.855 +template <class _ForwardIter, class _Predicate, class _Tp, class _Distance>
1394.856 +inline _ForwardIter
1394.857 +__stable_partition_aux(_ForwardIter __first, _ForwardIter __last, 
1394.858 +                       _Predicate __pred, _Tp*, _Distance*)
1394.859 +{
1394.860 +  typedef _Temporary_buffer<_ForwardIter, _Tp> _TmpBuf;
1394.861 +  _Temporary_buffer<_ForwardIter, _Tp> __buf(__first, __last);
1394.862 +  _STLP_PUSH_STACK_ITEM(_TmpBuf, &__buf);
1394.863 +
1394.864 +  _STLP_MPWFIX_TRY		//*TY 06/01/2000 - they forget to call dtor for _Temporary_buffer if no try/catch block is present
1394.865 +  return (__buf.size() > 0) ?
1394.866 +    __stable_partition_adaptive(__first, __last, __pred,
1394.867 +				_Distance(__buf.requested_size()),
1394.868 +				__buf.begin(), _Distance(__buf.size()))  :
1394.869 +    __inplace_stable_partition(__first, __last, __pred, 
1394.870 +			       _Distance(__buf.requested_size()));
1394.871 +  _STLP_MPWFIX_CATCH	//*TY 06/01/2000 - they forget to call dtor for _Temporary_buffer if no try/catch block is present
1394.872 +}
1394.873 +/*
1394.874 +template <class _ForwardIter, class _Predicate>
1394.875 +_ForwardIter 
1394.876 +stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) {
1394.877 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.878 +  if (__first == __last)
1394.879 +    return __first;
1394.880 +  else
1394.881 +    return __stable_partition_aux(__first, __last, __pred,
1394.882 +                                  _STLP_VALUE_TYPE(__first, _ForwardIter),
1394.883 +                                  _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1394.884 +}
1394.885 +*/ //bug fix
1394.886 +template <class _RandomAccessIter, class _Tp, class _Compare>
1394.887 +_RandomAccessIter __unguarded_partition(_RandomAccessIter __first, 
1394.888 +                                        _RandomAccessIter __last, 
1394.889 +                                        _Tp __pivot, _Compare __comp) 
1394.890 +{
1394.891 +  _STLP_PUSH_STACK_ITEM(_Tp, &__pivot)
1394.892 +  while (true) {
1394.893 +    while (__comp(*__first, __pivot))
1394.894 +      ++__first;
1394.895 +    --__last;
1394.896 +    while (__comp(__pivot, *__last))
1394.897 +      --__last;
1394.898 +    if (!(__first < __last))
1394.899 +      return __first;
1394.900 +    iter_swap(__first, __last);
1394.901 +    ++__first;
1394.902 +  }
1394.903 +}
1394.904 +
1394.905 +// sort() and its auxiliary functions. 
1394.906 +
1394.907 +# define  __stl_threshold  16
1394.908 +
1394.909 +template <class _RandomAccessIter, class _Tp, class _Compare>
1394.910 +void __unguarded_linear_insert(_RandomAccessIter __last, _Tp __val, 
1394.911 +                               _Compare __comp) {
1394.912 +   _STLP_PUSH_STACK_ITEM(_Tp, &__val)
1394.913 +  _RandomAccessIter __next = __last;
1394.914 +  --__next;  
1394.915 +  while (__comp(__val, *__next)) {
1394.916 +    *__last = *__next;
1394.917 +    __last = __next;
1394.918 +    --__next;
1394.919 +  }
1394.920 +  *__last = __val;
1394.921 +}
1394.922 +
1394.923 +template <class _RandomAccessIter, class _Tp, class _Compare>
1394.924 +inline void __linear_insert(_RandomAccessIter __first, 
1394.925 +                            _RandomAccessIter __last, _Tp __val, _Compare __comp) {
1394.926 +  _STLP_PUSH_STACK_ITEM(_Tp, &__val)
1394.927 +  if (__comp(__val, *__first)) {
1394.928 +    copy_backward(__first, __last, __last + 1);
1394.929 +    *__first = __val;
1394.930 +  }
1394.931 +  else
1394.932 +    __unguarded_linear_insert(__last, __val, __comp);
1394.933 +}
1394.934 +
1394.935 +template <class _RandomAccessIter, class _Compare>
1394.936 +void __insertion_sort(_RandomAccessIter __first,
1394.937 +                      _RandomAccessIter __last, _Compare __comp) {
1394.938 +  if (__first == __last) return;
1394.939 +  for (_RandomAccessIter __i = __first + 1; __i != __last; ++__i)
1394.940 +    __linear_insert(__first, __i, *__i, __comp);	//*TY 12/26/1998 - supply *__i as __val
1394.941 +}
1394.942 +
1394.943 +template <class _RandomAccessIter, class _Tp, class _Compare>
1394.944 +void __unguarded_insertion_sort_aux(_RandomAccessIter __first, 
1394.945 +                                    _RandomAccessIter __last,
1394.946 +                                    _Tp*, _Compare __comp) {
1394.947 +  for (_RandomAccessIter __i = __first; __i != __last; ++__i)
1394.948 +    __unguarded_linear_insert(__i, _Tp(*__i), __comp);
1394.949 +}
1394.950 +
1394.951 +template <class _RandomAccessIter, class _Compare>
1394.952 +inline void __unguarded_insertion_sort(_RandomAccessIter __first, 
1394.953 +                                       _RandomAccessIter __last,
1394.954 +                                       _Compare __comp) {
1394.955 +  __unguarded_insertion_sort_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp);
1394.956 +}
1394.957 +
1394.958 +template <class _RandomAccessIter, class _Compare>
1394.959 +void __final_insertion_sort(_RandomAccessIter __first, 
1394.960 +                            _RandomAccessIter __last, _Compare __comp) {
1394.961 +  if (__last - __first > __stl_threshold) {
1394.962 +    __insertion_sort(__first, __first + __stl_threshold, __comp);
1394.963 +    __unguarded_insertion_sort(__first + __stl_threshold, __last, __comp);
1394.964 +  }
1394.965 +  else
1394.966 +    __insertion_sort(__first, __last, __comp);
1394.967 +}
1394.968 +
1394.969 +template <class _RandomAccessIter, class _Tp, class _Size, class _Compare>
1394.970 +void __introsort_loop(_RandomAccessIter __first,
1394.971 +                      _RandomAccessIter __last, _Tp*,
1394.972 +                      _Size __depth_limit, _Compare __comp)
1394.973 +{
1394.974 +  while (__last - __first > __stl_threshold) {
1394.975 +    if (__depth_limit == 0) {
1394.976 +      partial_sort(__first, __last, __last, __comp);
1394.977 +      return;
1394.978 +    }
1394.979 +    --__depth_limit;
1394.980 +    _RandomAccessIter __cut =
1394.981 +      __unguarded_partition(__first, __last,
1394.982 +                            _Tp(__median(*__first,
1394.983 +                                         *(__first + (__last - __first)/2),
1394.984 +                                         *(__last - 1), __comp)),
1394.985 +       __comp);
1394.986 +    __introsort_loop(__cut, __last, (_Tp*) 0, __depth_limit, __comp);
1394.987 +    __last = __cut;
1394.988 +  }
1394.989 +}
1394.990 +
1394.991 +template <class _RandomAccessIter>
1394.992 +void sort(_RandomAccessIter __first, _RandomAccessIter __last) {
1394.993 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.994 +  if (__first != __last) {
1394.995 +    __introsort_loop(__first, __last,
1394.996 +                     _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1394.997 +                     __lg(__last - __first) * 2, __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)) );
1394.998 +    __final_insertion_sort(__first, __last, __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1394.999 +  }
1394.1000 +}
1394.1001 +
1394.1002 +template <class _RandomAccessIter, class _Compare>
1394.1003 +void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp) {
1394.1004 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1005 +  if (__first != __last) {
1394.1006 +    __introsort_loop(__first, __last,
1394.1007 +                     _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1394.1008 +                     __lg(__last - __first) * 2,
1394.1009 +                     __comp);
1394.1010 +    __final_insertion_sort(__first, __last, __comp);
1394.1011 +  }
1394.1012 +}
1394.1013 +
1394.1014 +// stable_sort() and its auxiliary functions.
1394.1015 +
1394.1016 +template <class _RandomAccessIter, class _Compare>
1394.1017 +void __inplace_stable_sort(_RandomAccessIter __first,
1394.1018 +                           _RandomAccessIter __last, _Compare __comp) {
1394.1019 +  if (__last - __first < 15) {
1394.1020 +    __insertion_sort(__first, __last, __comp);
1394.1021 +    return;
1394.1022 +  }
1394.1023 +  _RandomAccessIter __middle = __first + (__last - __first) / 2;
1394.1024 +  __inplace_stable_sort(__first, __middle, __comp);
1394.1025 +  __inplace_stable_sort(__middle, __last, __comp);
1394.1026 +  __merge_without_buffer(__first, __middle, __last,
1394.1027 +                         __middle - __first,
1394.1028 +                         __last - __middle,
1394.1029 +                         __comp);
1394.1030 +}
1394.1031 +
1394.1032 +template <class _RandomAccessIter1, class _RandomAccessIter2,
1394.1033 +          class _Distance, class _Compare>
1394.1034 +void __merge_sort_loop(_RandomAccessIter1 __first,
1394.1035 +                       _RandomAccessIter1 __last, 
1394.1036 +                       _RandomAccessIter2 __result, _Distance __step_size,
1394.1037 +                       _Compare __comp) {
1394.1038 +  _Distance __two_step = 2 * __step_size;
1394.1039 +
1394.1040 +  while (__last - __first >= __two_step) {
1394.1041 +    __result = merge(__first, __first + __step_size,
1394.1042 +                     __first + __step_size, __first + __two_step,
1394.1043 +                     __result,
1394.1044 +                     __comp);
1394.1045 +    __first += __two_step;
1394.1046 +  }
1394.1047 +  __step_size = (min) (_Distance(__last - __first), __step_size);
1394.1048 +
1394.1049 +  merge(__first, __first + __step_size,
1394.1050 +        __first + __step_size, __last,
1394.1051 +        __result,
1394.1052 +        __comp);
1394.1053 +}
1394.1054 +
1394.1055 +const int __stl_chunk_size = 7;
1394.1056 +        
1394.1057 +template <class _RandomAccessIter, class _Distance, class _Compare>
1394.1058 +void __chunk_insertion_sort(_RandomAccessIter __first, 
1394.1059 +                            _RandomAccessIter __last,
1394.1060 +                            _Distance __chunk_size, _Compare __comp)
1394.1061 +{
1394.1062 +  while (__last - __first >= __chunk_size) {
1394.1063 +    __insertion_sort(__first, __first + __chunk_size, __comp);
1394.1064 +    __first += __chunk_size;
1394.1065 +  }
1394.1066 +  __insertion_sort(__first, __last, __comp);
1394.1067 +}
1394.1068 +
1394.1069 +template <class _RandomAccessIter, class _Pointer, class _Distance,
1394.1070 +          class _Compare>
1394.1071 +void __merge_sort_with_buffer(_RandomAccessIter __first, 
1394.1072 +                              _RandomAccessIter __last, _Pointer __buffer,
1394.1073 +                              _Distance*, _Compare __comp) {
1394.1074 +  _Distance __len = __last - __first;
1394.1075 +  _Pointer __buffer_last = __buffer + __len;
1394.1076 +
1394.1077 +  _Distance __step_size = __stl_chunk_size;
1394.1078 +  __chunk_insertion_sort(__first, __last, __step_size, __comp);
1394.1079 +
1394.1080 +  while (__step_size < __len) {
1394.1081 +    __merge_sort_loop(__first, __last, __buffer, __step_size, __comp);
1394.1082 +    __step_size *= 2;
1394.1083 +    __merge_sort_loop(__buffer, __buffer_last, __first, __step_size, __comp);
1394.1084 +    __step_size *= 2;
1394.1085 +  }
1394.1086 +}
1394.1087 +
1394.1088 +template <class _BidirectionalIter1, class _BidirectionalIter2,
1394.1089 +          class _Distance>
1394.1090 +_BidirectionalIter1 __rotate_adaptive(_BidirectionalIter1 __first,
1394.1091 +                                      _BidirectionalIter1 __middle,
1394.1092 +                                      _BidirectionalIter1 __last,
1394.1093 +                                      _Distance __len1, _Distance __len2,
1394.1094 +                                      _BidirectionalIter2 __buffer,
1394.1095 +                                      _Distance __buffer_size) {
1394.1096 +  if (__len1 > __len2 && __len2 <= __buffer_size) {
1394.1097 +    _BidirectionalIter2 __buffer_end = copy(__middle, __last, __buffer);
1394.1098 +    copy_backward(__first, __middle, __last);
1394.1099 +    return copy(__buffer, __buffer_end, __first);
1394.1100 +  }
1394.1101 +  else if (__len1 <= __buffer_size) {
1394.1102 +    _BidirectionalIter2 __buffer_end = copy(__first, __middle, __buffer);
1394.1103 +    copy(__middle, __last, __first);
1394.1104 +    return copy_backward(__buffer, __buffer_end, __last);
1394.1105 +  }
1394.1106 +  else
1394.1107 +    return rotate(__first, __middle, __last);
1394.1108 +}
1394.1109 +
1394.1110 +template <class _BidirectionalIter, class _Distance, class _Pointer,
1394.1111 +          class _Compare>
1394.1112 +void __merge_adaptive(_BidirectionalIter __first, 
1394.1113 +                      _BidirectionalIter __middle, 
1394.1114 +                      _BidirectionalIter __last,
1394.1115 +                      _Distance __len1, _Distance __len2,
1394.1116 +                      _Pointer __buffer, _Distance __buffer_size,
1394.1117 +                      _Compare __comp) {
1394.1118 +  if (__len1 <= __len2 && __len1 <= __buffer_size) {
1394.1119 +    _Pointer __buffer_end = copy(__first, __middle, __buffer);
1394.1120 +    merge(__buffer, __buffer_end, __middle, __last, __first, __comp);
1394.1121 +  }
1394.1122 +  else if (__len2 <= __buffer_size) {
1394.1123 +    _Pointer __buffer_end = copy(__middle, __last, __buffer);
1394.1124 +    __merge_backward(__first, __middle, __buffer, __buffer_end, __last,
1394.1125 +                     __comp);
1394.1126 +  }
1394.1127 +  else {
1394.1128 +    _BidirectionalIter __first_cut = __first;
1394.1129 +    _BidirectionalIter __second_cut = __middle;
1394.1130 +    _Distance __len11 = 0;
1394.1131 +    _Distance __len22 = 0;
1394.1132 +    if (__len1 > __len2) {
1394.1133 +      __len11 = __len1 / 2;
1394.1134 +      advance(__first_cut, __len11);
1394.1135 +      __second_cut = lower_bound(__middle, __last, *__first_cut, __comp);
1394.1136 +      __len22 += distance(__middle, __second_cut);   
1394.1137 +    }
1394.1138 +    else {
1394.1139 +      __len22 = __len2 / 2;
1394.1140 +      advance(__second_cut, __len22);
1394.1141 +      __first_cut = upper_bound(__first, __middle, *__second_cut, __comp);
1394.1142 +      __len11 += distance(__first, __first_cut);
1394.1143 +    }
1394.1144 +    _BidirectionalIter __new_middle =
1394.1145 +      __rotate_adaptive(__first_cut, __middle, __second_cut, __len1 - __len11,
1394.1146 +                        __len22, __buffer, __buffer_size);
1394.1147 +    __merge_adaptive(__first, __first_cut, __new_middle, __len11,
1394.1148 +                     __len22, __buffer, __buffer_size, __comp);
1394.1149 +    __merge_adaptive(__new_middle, __second_cut, __last, __len1 - __len11,
1394.1150 +                     __len2 - __len22, __buffer, __buffer_size, __comp);
1394.1151 +  }
1394.1152 +}
1394.1153 +
1394.1154 +template <class _RandomAccessIter, class _Pointer, class _Distance, 
1394.1155 +          class _Compare>
1394.1156 +void __stable_sort_adaptive(_RandomAccessIter __first, 
1394.1157 +                            _RandomAccessIter __last, _Pointer __buffer,
1394.1158 +                            _Distance __buffer_size, _Compare __comp) {
1394.1159 +  _Distance __len = (__last - __first + 1) / 2;
1394.1160 +  _RandomAccessIter __middle = __first + __len;
1394.1161 +  if (__len > __buffer_size) {
1394.1162 +    __stable_sort_adaptive(__first, __middle, __buffer, __buffer_size, 
1394.1163 +                           __comp);
1394.1164 +    __stable_sort_adaptive(__middle, __last, __buffer, __buffer_size, 
1394.1165 +                           __comp);
1394.1166 +  }
1394.1167 +  else {
1394.1168 +    __merge_sort_with_buffer(__first, __middle, __buffer, (_Distance*)0,
1394.1169 +                               __comp);
1394.1170 +    __merge_sort_with_buffer(__middle, __last, __buffer, (_Distance*)0,
1394.1171 +                               __comp);
1394.1172 +  }
1394.1173 +  __merge_adaptive(__first, __middle, __last, _Distance(__middle - __first), 
1394.1174 +                   _Distance(__last - __middle), __buffer, __buffer_size,
1394.1175 +                   __comp);
1394.1176 +}
1394.1177 +
1394.1178 +template <class _RandomAccessIter, class _Tp, class _Distance, class _Compare>
1394.1179 +void __stable_sort_aux(_RandomAccessIter __first,
1394.1180 +			      _RandomAccessIter __last, _Tp*, _Distance*,
1394.1181 +			      _Compare __comp) {
1394.1182 +
1394.1183 +  typedef _Temporary_buffer<_RandomAccessIter, _Tp> _TmpBuf;
1394.1184 +  _TmpBuf __buf(__first, __last);
1394.1185 +  _STLP_PUSH_STACK_ITEM(_TmpBuf, &__buf);
1394.1186 +
1394.1187 +  if (__buf.begin() == 0)
1394.1188 +    __inplace_stable_sort(__first, __last, __comp);
1394.1189 +  else 
1394.1190 +    __stable_sort_adaptive(__first, __last, __buf.begin(),
1394.1191 +                           _Distance(__buf.size()),
1394.1192 +                           __comp);
1394.1193 +}
1394.1194 +
1394.1195 +template <class _RandomAccessIter>
1394.1196 +void stable_sort(_RandomAccessIter __first,
1394.1197 +		 _RandomAccessIter __last) {
1394.1198 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1199 +  __stable_sort_aux(__first, __last,
1394.1200 +                    _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1394.1201 +                    _STLP_DISTANCE_TYPE(__first, _RandomAccessIter),
1394.1202 +                    __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1394.1203 +}
1394.1204 +
1394.1205 +template <class _RandomAccessIter, class _Compare>
1394.1206 +void stable_sort(_RandomAccessIter __first,
1394.1207 +		 _RandomAccessIter __last, _Compare __comp) {
1394.1208 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1209 +  __stable_sort_aux(__first, __last,
1394.1210 +                    _STLP_VALUE_TYPE(__first, _RandomAccessIter),
1394.1211 +                    _STLP_DISTANCE_TYPE(__first, _RandomAccessIter), 
1394.1212 +                    __comp);
1394.1213 +}
1394.1214 +
1394.1215 +// partial_sort, partial_sort_copy, and auxiliary functions.
1394.1216 +
1394.1217 +template <class _RandomAccessIter, class _Tp, class _Compare>
1394.1218 +void __partial_sort(_RandomAccessIter __first, _RandomAccessIter __middle,
1394.1219 +                    _RandomAccessIter __last, _Tp*, _Compare __comp) {
1394.1220 +  make_heap(__first, __middle, __comp);
1394.1221 +  for (_RandomAccessIter __i = __middle; __i < __last; ++__i)
1394.1222 +    if (__comp(*__i, *__first))
1394.1223 +      __pop_heap(__first, __middle, __i, _Tp(*__i), __comp,
1394.1224 +                 _STLP_DISTANCE_TYPE(__first, _RandomAccessIter));
1394.1225 +  sort_heap(__first, __middle, __comp);
1394.1226 +}
1394.1227 +
1394.1228 +
1394.1229 +template <class _RandomAccessIter>
1394.1230 +void 
1394.1231 +partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, _RandomAccessIter __last) {
1394.1232 +  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1394.1233 +  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1394.1234 +  __partial_sort(__first, __middle, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), 
1394.1235 +                 __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1394.1236 +}
1394.1237 +
1394.1238 +template <class _RandomAccessIter, class _Compare>
1394.1239 +void partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle,
1394.1240 +                  _RandomAccessIter __last, _Compare __comp) {
1394.1241 +  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1394.1242 +  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1394.1243 +  __partial_sort(__first, __middle, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp);
1394.1244 +}
1394.1245 +
1394.1246 +template <class _InputIter, class _RandomAccessIter, class _Compare,
1394.1247 +          class _Distance, class _Tp>
1394.1248 +_RandomAccessIter __partial_sort_copy(_InputIter __first,
1394.1249 +                                         _InputIter __last,
1394.1250 +                                         _RandomAccessIter __result_first,
1394.1251 +                                         _RandomAccessIter __result_last,
1394.1252 +                                         _Compare __comp, _Distance*, _Tp*) {
1394.1253 +  if (__result_first == __result_last) return __result_last;
1394.1254 +  _RandomAccessIter __result_real_last = __result_first;
1394.1255 +  while(__first != __last && __result_real_last != __result_last) {
1394.1256 +    *__result_real_last = *__first;
1394.1257 +    ++__result_real_last;
1394.1258 +    ++__first;
1394.1259 +  }
1394.1260 +  make_heap(__result_first, __result_real_last, __comp);
1394.1261 +  while (__first != __last) {
1394.1262 +    if (__comp(*__first, *__result_first))
1394.1263 +      __adjust_heap(__result_first, _Distance(0),
1394.1264 +                    _Distance(__result_real_last - __result_first),
1394.1265 +                    _Tp(*__first),
1394.1266 +                    __comp);
1394.1267 +    ++__first;
1394.1268 +  }
1394.1269 +  sort_heap(__result_first, __result_real_last, __comp);
1394.1270 +  return __result_real_last;
1394.1271 +}
1394.1272 +
1394.1273 +template <class _InputIter, class _RandomAccessIter>
1394.1274 +_RandomAccessIter
1394.1275 +partial_sort_copy(_InputIter __first, _InputIter __last,
1394.1276 +                  _RandomAccessIter __result_first, _RandomAccessIter __result_last) {
1394.1277 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1278 +  _STLP_DEBUG_CHECK(__check_range(__result_first, __result_last))
1394.1279 +  return __partial_sort_copy(__first, __last, __result_first, __result_last, 
1394.1280 +                             __less(_STLP_VALUE_TYPE(__first, _InputIter)),
1394.1281 +                             _STLP_DISTANCE_TYPE(__result_first, _RandomAccessIter),
1394.1282 +                             _STLP_VALUE_TYPE(__first, _InputIter));
1394.1283 +}
1394.1284 +
1394.1285 +template <class _InputIter, class _RandomAccessIter, class _Compare>
1394.1286 +_RandomAccessIter
1394.1287 +partial_sort_copy(_InputIter __first, _InputIter __last,
1394.1288 +                  _RandomAccessIter __result_first,
1394.1289 +                  _RandomAccessIter __result_last, _Compare __comp) {
1394.1290 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1291 +  _STLP_DEBUG_CHECK(__check_range(__result_first, __result_last))
1394.1292 +  return __partial_sort_copy(__first, __last, __result_first, __result_last,
1394.1293 +                             __comp,
1394.1294 +                             _STLP_DISTANCE_TYPE(__result_first, _RandomAccessIter),
1394.1295 +                             _STLP_VALUE_TYPE(__first, _InputIter));
1394.1296 +}
1394.1297 +
1394.1298 +// nth_element() and its auxiliary functions.  
1394.1299 +
1394.1300 +template <class _RandomAccessIter, class _Tp, class _Compare>
1394.1301 +void __nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1394.1302 +                   _RandomAccessIter __last, _Tp*, _Compare __comp) {
1394.1303 +  while (__last - __first > 3) {
1394.1304 +    _RandomAccessIter __cut =
1394.1305 +      __unguarded_partition(__first, __last,
1394.1306 +                            _Tp(__median(*__first,
1394.1307 +                                         *(__first + (__last - __first)/2), 
1394.1308 +                                         *(__last - 1),
1394.1309 +                                         __comp)),
1394.1310 +                            __comp);
1394.1311 +    if (__cut <= __nth)
1394.1312 +      __first = __cut;
1394.1313 +    else 
1394.1314 +      __last = __cut;
1394.1315 +  }
1394.1316 +  __insertion_sort(__first, __last, __comp);
1394.1317 +}
1394.1318 +
1394.1319 +
1394.1320 +template <class _RandomAccessIter>
1394.1321 +void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1394.1322 +                 _RandomAccessIter __last) {
1394.1323 +  _STLP_DEBUG_CHECK(__check_range(__first, __nth))
1394.1324 +  _STLP_DEBUG_CHECK(__check_range(__nth, __last))
1394.1325 +  __nth_element(__first, __nth, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), 
1394.1326 +                __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)));
1394.1327 +}
1394.1328 +
1394.1329 +template <class _RandomAccessIter, class _Compare>
1394.1330 +void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1394.1331 +                 _RandomAccessIter __last, _Compare __comp) {
1394.1332 +  _STLP_DEBUG_CHECK(__check_range(__first, __nth))
1394.1333 +  _STLP_DEBUG_CHECK(__check_range(__nth, __last))
1394.1334 +  __nth_element(__first, __nth, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIter), __comp);
1394.1335 +}
1394.1336 +
1394.1337 +// Binary search (lower_bound, upper_bound, equal_range, binary_search).
1394.1338 +
1394.1339 +template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1394.1340 +_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last,
1394.1341 +                           const _Tp& __val, _Compare __comp, _Distance*)
1394.1342 +{
1394.1343 +  _Distance __len = distance(__first, __last);
1394.1344 +  _Distance __half;
1394.1345 +
1394.1346 +  while (__len > 0) {
1394.1347 +    __half = __len >> 1;
1394.1348 +    _ForwardIter __middle = __first;
1394.1349 +    advance(__middle, __half);
1394.1350 +    if (__comp(__val, *__middle))
1394.1351 +      __len = __half;
1394.1352 +    else {
1394.1353 +      __first = __middle;
1394.1354 +      ++__first;
1394.1355 +      __len = __len - __half - 1;
1394.1356 +    }
1394.1357 +  }
1394.1358 +  return __first;
1394.1359 +}
1394.1360 +
1394.1361 +template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1394.1362 +pair<_ForwardIter, _ForwardIter>
1394.1363 +__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
1394.1364 +              _Compare __comp, _Distance*)
1394.1365 +{
1394.1366 +  _Distance __len = distance(__first, __last);
1394.1367 +  _Distance __half;
1394.1368 +
1394.1369 +  while (__len > 0) {
1394.1370 +    __half = __len >> 1;
1394.1371 +    _ForwardIter __middle = __first;
1394.1372 +    advance(__middle, __half);
1394.1373 +    if (__comp(*__middle, __val)) {
1394.1374 +      __first = __middle;
1394.1375 +      ++__first;
1394.1376 +      __len = __len - __half - 1;
1394.1377 +    }
1394.1378 +    else if (__comp(__val, *__middle))
1394.1379 +      __len = __half;
1394.1380 +    else {
1394.1381 +      _ForwardIter __left = lower_bound(__first, __middle, __val, __comp);
1394.1382 +      advance(__first, __len);
1394.1383 +      _ForwardIter __right = upper_bound(++__middle, __first, __val, __comp);
1394.1384 +      return pair<_ForwardIter, _ForwardIter>(__left, __right);
1394.1385 +    }
1394.1386 +  }
1394.1387 +  return pair<_ForwardIter, _ForwardIter>(__first, __first);
1394.1388 +}           
1394.1389 +
1394.1390 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1394.1391 +_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1394.1392 +                  _InputIter2 __first2, _InputIter2 __last2,
1394.1393 +                  _OutputIter __result) {
1394.1394 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1395 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1396 +  while (__first1 != __last1 && __first2 != __last2) {
1394.1397 +    if (*__first2 < *__first1) {
1394.1398 +      *__result = *__first2;
1394.1399 +      ++__first2;
1394.1400 +    }
1394.1401 +    else {
1394.1402 +      *__result = *__first1;
1394.1403 +      ++__first1;
1394.1404 +    }
1394.1405 +    ++__result;
1394.1406 +  }
1394.1407 +  return copy(__first2, __last2, copy(__first1, __last1, __result));
1394.1408 +}
1394.1409 +
1394.1410 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1394.1411 +          class _Compare>
1394.1412 +_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1394.1413 +                  _InputIter2 __first2, _InputIter2 __last2,
1394.1414 +                  _OutputIter __result, _Compare __comp) {
1394.1415 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1416 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1417 +  while (__first1 != __last1 && __first2 != __last2) {
1394.1418 +    if (__comp(*__first2, *__first1)) {
1394.1419 +      *__result = *__first2;
1394.1420 +      ++__first2;
1394.1421 +    }
1394.1422 +    else {
1394.1423 +      *__result = *__first1;
1394.1424 +      ++__first1;
1394.1425 +    }
1394.1426 +    ++__result;
1394.1427 +  }
1394.1428 +  return copy(__first2, __last2, copy(__first1, __last1, __result));
1394.1429 +}
1394.1430 +
1394.1431 +template <class _BidirectionalIter, class _Distance, class _Compare>
1394.1432 +void __merge_without_buffer(_BidirectionalIter __first,
1394.1433 +                            _BidirectionalIter __middle,
1394.1434 +                            _BidirectionalIter __last,
1394.1435 +                            _Distance __len1, _Distance __len2,
1394.1436 +                            _Compare __comp) {
1394.1437 +  if (__len1 == 0 || __len2 == 0)
1394.1438 +    return;
1394.1439 +  if (__len1 + __len2 == 2) {
1394.1440 +    if (__comp(*__middle, *__first))
1394.1441 +      iter_swap(__first, __middle);
1394.1442 +    return;
1394.1443 +  }
1394.1444 +  _BidirectionalIter __first_cut = __first;
1394.1445 +  _BidirectionalIter __second_cut = __middle;
1394.1446 +  _Distance __len11 = 0;
1394.1447 +  _Distance __len22 = 0;
1394.1448 +  if (__len1 > __len2) {
1394.1449 +    __len11 = __len1 / 2;
1394.1450 +    advance(__first_cut, __len11);
1394.1451 +    __second_cut = lower_bound(__middle, __last, *__first_cut, __comp);
1394.1452 +    __len22 += distance(__middle, __second_cut);
1394.1453 +  }
1394.1454 +  else {
1394.1455 +    __len22 = __len2 / 2;
1394.1456 +    advance(__second_cut, __len22);
1394.1457 +    __first_cut = upper_bound(__first, __middle, *__second_cut, __comp);
1394.1458 +    __len11 +=distance(__first, __first_cut);
1394.1459 +  }
1394.1460 +  _BidirectionalIter __new_middle
1394.1461 +    = rotate(__first_cut, __middle, __second_cut);
1394.1462 +  __merge_without_buffer(__first, __first_cut, __new_middle, __len11, __len22,
1394.1463 +                         __comp);
1394.1464 +  __merge_without_buffer(__new_middle, __second_cut, __last, __len1 - __len11,
1394.1465 +                         __len2 - __len22, __comp);
1394.1466 +}
1394.1467 +
1394.1468 +template <class _BidirectionalIter1, class _BidirectionalIter2,
1394.1469 +          class _BidirectionalIter3, class _Compare>
1394.1470 +_BidirectionalIter3 __merge_backward(_BidirectionalIter1 __first1,
1394.1471 +                                     _BidirectionalIter1 __last1,
1394.1472 +                                     _BidirectionalIter2 __first2,
1394.1473 +                                     _BidirectionalIter2 __last2,
1394.1474 +                                     _BidirectionalIter3 __result,
1394.1475 +                                     _Compare __comp) {
1394.1476 +  if (__first1 == __last1)
1394.1477 +    return copy_backward(__first2, __last2, __result);
1394.1478 +  if (__first2 == __last2)
1394.1479 +    return copy_backward(__first1, __last1, __result);
1394.1480 +  --__last1;
1394.1481 +  --__last2;
1394.1482 +  while (true) {
1394.1483 +    if (__comp(*__last2, *__last1)) {
1394.1484 +      *--__result = *__last1;
1394.1485 +      if (__first1 == __last1)
1394.1486 +        return copy_backward(__first2, ++__last2, __result);
1394.1487 +      --__last1;
1394.1488 +    }
1394.1489 +    else {
1394.1490 +      *--__result = *__last2;
1394.1491 +      if (__first2 == __last2)
1394.1492 +        return copy_backward(__first1, ++__last1, __result);
1394.1493 +      --__last2;
1394.1494 +    }
1394.1495 +  }
1394.1496 +}
1394.1497 +
1394.1498 +template <class _BidirectionalIter, class _Tp, 
1394.1499 +          class _Distance, class _Compare>
1394.1500 +inline void __inplace_merge_aux(_BidirectionalIter __first,
1394.1501 +                                _BidirectionalIter __middle,
1394.1502 +                                _BidirectionalIter __last, _Tp*, _Distance*,
1394.1503 +                                _Compare __comp) {
1394.1504 +  _Distance __len1 = distance(__first, __middle);
1394.1505 +  _Distance __len2 = distance(__middle, __last);
1394.1506 +
1394.1507 +  typedef _Temporary_buffer<_BidirectionalIter, _Tp> _TmpBuf;
1394.1508 +  _TmpBuf __buf(__first, __last);
1394.1509 +  _STLP_PUSH_STACK_ITEM(_TmpBuf, &__buf);
1394.1510 +
1394.1511 +  if (__buf.begin() == 0)
1394.1512 +    __merge_without_buffer(__first, __middle, __last, __len1, __len2, __comp);
1394.1513 +  else
1394.1514 +    __merge_adaptive(__first, __middle, __last, __len1, __len2,
1394.1515 +                     __buf.begin(), _Distance(__buf.size()),
1394.1516 +                     __comp);
1394.1517 +}
1394.1518 +
1394.1519 +template <class _BidirectionalIter>
1394.1520 +void inplace_merge(_BidirectionalIter __first,
1394.1521 +		   _BidirectionalIter __middle,
1394.1522 +		   _BidirectionalIter __last) {
1394.1523 +  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1394.1524 +  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1394.1525 +  if (__first == __middle || __middle == __last)
1394.1526 +    return;
1394.1527 +  __inplace_merge_aux(__first, __middle, __last,
1394.1528 +                      _STLP_VALUE_TYPE(__first, _BidirectionalIter), _STLP_DISTANCE_TYPE(__first, _BidirectionalIter),
1394.1529 +                      __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter)));
1394.1530 +}
1394.1531 +
1394.1532 +template <class _BidirectionalIter, class _Compare>
1394.1533 +void inplace_merge(_BidirectionalIter __first,
1394.1534 +		   _BidirectionalIter __middle,
1394.1535 +		   _BidirectionalIter __last, _Compare __comp) {
1394.1536 +  _STLP_DEBUG_CHECK(__check_range(__first, __middle))
1394.1537 +  _STLP_DEBUG_CHECK(__check_range(__middle, __last))
1394.1538 +  if (__first == __middle || __middle == __last)
1394.1539 +    return;
1394.1540 +  __inplace_merge_aux(__first, __middle, __last,
1394.1541 +                      _STLP_VALUE_TYPE(__first, _BidirectionalIter), _STLP_DISTANCE_TYPE(__first, _BidirectionalIter),
1394.1542 +                      __comp);
1394.1543 +}
1394.1544 +
1394.1545 +
1394.1546 +template <class _InputIter1, class _InputIter2, class _Compare>
1394.1547 +bool __includes(_InputIter1 __first1, _InputIter1 __last1,
1394.1548 +                _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) {
1394.1549 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1550 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1551 +  while (__first1 != __last1 && __first2 != __last2)
1394.1552 +    if (__comp(*__first2, *__first1))
1394.1553 +      return false;
1394.1554 +    else if(__comp(*__first1, *__first2)) 
1394.1555 +      ++__first1;
1394.1556 +    else
1394.1557 +      ++__first1, ++__first2;
1394.1558 +
1394.1559 +  return __first2 == __last2;
1394.1560 +}
1394.1561 +
1394.1562 +template <class _InputIter1, class _InputIter2, class _Compare>
1394.1563 +bool includes(_InputIter1 __first1, _InputIter1 __last1,
1394.1564 +              _InputIter2 __first2, _InputIter2 __last2, _Compare __comp) {
1394.1565 +  return __includes(__first1, __last1, __first2, __last2, __comp);
1394.1566 +}
1394.1567 +
1394.1568 +template <class _InputIter1, class _InputIter2>
1394.1569 +bool includes(_InputIter1 __first1, _InputIter1 __last1,
1394.1570 +              _InputIter2 __first2, _InputIter2 __last2) {
1394.1571 +  return __includes(__first1, __last1, __first2, __last2, __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));
1394.1572 +}
1394.1573 +
1394.1574 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1394.1575 +          class _Compare>
1394.1576 +_OutputIter __set_union(_InputIter1 __first1, _InputIter1 __last1,
1394.1577 +                        _InputIter2 __first2, _InputIter2 __last2,
1394.1578 +                        _OutputIter __result, _Compare __comp) {
1394.1579 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1580 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1581 +  while (__first1 != __last1 && __first2 != __last2) {
1394.1582 +    if (__comp(*__first1, *__first2)) {
1394.1583 +      *__result = *__first1;
1394.1584 +      ++__first1;
1394.1585 +    }
1394.1586 +    else if (__comp(*__first2, *__first1)) {
1394.1587 +      *__result = *__first2;
1394.1588 +      ++__first2;
1394.1589 +    }
1394.1590 +    else {
1394.1591 +      *__result = *__first1;
1394.1592 +      ++__first1;
1394.1593 +      ++__first2;
1394.1594 +    }
1394.1595 +    ++__result;
1394.1596 +  }
1394.1597 +  return copy(__first2, __last2, copy(__first1, __last1, __result));
1394.1598 +}
1394.1599 +
1394.1600 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1394.1601 +_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1394.1602 +                      _InputIter2 __first2, _InputIter2 __last2,
1394.1603 +                      _OutputIter __result) {
1394.1604 +  return __set_union(__first1, __last1, __first2, __last2, __result, __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1394.1605 +}
1394.1606 +
1394.1607 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1394.1608 +          class _Compare>
1394.1609 +_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1394.1610 +                      _InputIter2 __first2, _InputIter2 __last2,
1394.1611 +                      _OutputIter __result, _Compare __comp) {
1394.1612 +  return __set_union(__first1, __last1, __first2, __last2, __result, __comp);
1394.1613 +}
1394.1614 +
1394.1615 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1394.1616 +          class _Compare>
1394.1617 +_OutputIter __set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1394.1618 +                               _InputIter2 __first2, _InputIter2 __last2,
1394.1619 +                               _OutputIter __result, _Compare __comp) {
1394.1620 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1621 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1622 +  while (__first1 != __last1 && __first2 != __last2)
1394.1623 +    if (__comp(*__first1, *__first2))
1394.1624 +      ++__first1;
1394.1625 +    else if (__comp(*__first2, *__first1))
1394.1626 +      ++__first2;
1394.1627 +    else {
1394.1628 +      *__result = *__first1;
1394.1629 +      ++__first1;
1394.1630 +      ++__first2;
1394.1631 +      ++__result;
1394.1632 +    }
1394.1633 +  return __result;
1394.1634 +}
1394.1635 +
1394.1636 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1394.1637 +_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1394.1638 +                             _InputIter2 __first2, _InputIter2 __last2,
1394.1639 +                             _OutputIter __result) {
1394.1640 +  return __set_intersection(__first1, __last1, __first2, __last2, __result, __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1394.1641 +}
1394.1642 +
1394.1643 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1394.1644 +          class _Compare>
1394.1645 +_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1394.1646 +                             _InputIter2 __first2, _InputIter2 __last2,
1394.1647 +                             _OutputIter __result, _Compare __comp) {
1394.1648 +  return __set_intersection(__first1, __last1, __first2, __last2, __result, __comp);
1394.1649 +}
1394.1650 +
1394.1651 +template <class _InputIter1, class _InputIter2, class _OutputIter, 
1394.1652 +          class _Compare>
1394.1653 +_OutputIter __set_difference(_InputIter1 __first1, _InputIter1 __last1,
1394.1654 +                             _InputIter2 __first2, _InputIter2 __last2, 
1394.1655 +                             _OutputIter __result, _Compare __comp) {
1394.1656 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1657 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1658 +  while (__first1 != __last1 && __first2 != __last2)
1394.1659 +    if (__comp(*__first1, *__first2)) {
1394.1660 +      *__result = *__first1;
1394.1661 +      ++__first1;
1394.1662 +      ++__result;
1394.1663 +    }
1394.1664 +    else if (__comp(*__first2, *__first1))
1394.1665 +      ++__first2;
1394.1666 +    else {
1394.1667 +      ++__first1;
1394.1668 +      ++__first2;
1394.1669 +    }
1394.1670 +  return copy(__first1, __last1, __result);
1394.1671 +}
1394.1672 +
1394.1673 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1394.1674 +_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1394.1675 +                           _InputIter2 __first2, _InputIter2 __last2,
1394.1676 +                           _OutputIter __result) {
1394.1677 +  return __set_difference(__first1, __last1, __first2, __last2, __result, 
1394.1678 +                          __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1394.1679 +}
1394.1680 +
1394.1681 +template <class _InputIter1, class _InputIter2, class _OutputIter, 
1394.1682 +          class _Compare>
1394.1683 +_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1394.1684 +                           _InputIter2 __first2, _InputIter2 __last2, 
1394.1685 +                           _OutputIter __result, _Compare __comp) {
1394.1686 +  return __set_difference(__first1, __last1, __first2, __last2, __result, __comp);
1394.1687 +}
1394.1688 +
1394.1689 +template <class _InputIter1, class _InputIter2, class _OutputIter, class _Compare>
1394.1690 +_OutputIter 
1394.1691 +__set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1394.1692 +                           _InputIter2 __first2, _InputIter2 __last2,
1394.1693 +                           _OutputIter __result, _Compare __comp) {
1394.1694 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1394.1695 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1394.1696 +  while (__first1 != __last1 && __first2 != __last2)
1394.1697 +    if (__comp(*__first1, *__first2)) {
1394.1698 +      *__result = *__first1;
1394.1699 +      ++__first1;
1394.1700 +      ++__result;
1394.1701 +    }
1394.1702 +    else if (__comp(*__first2, *__first1)) {
1394.1703 +      *__result = *__first2;
1394.1704 +      ++__first2;
1394.1705 +      ++__result;
1394.1706 +    }
1394.1707 +    else {
1394.1708 +      ++__first1;
1394.1709 +      ++__first2;
1394.1710 +    }
1394.1711 +  return copy(__first2, __last2, copy(__first1, __last1, __result));
1394.1712 +}
1394.1713 +
1394.1714 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1394.1715 +_OutputIter 
1394.1716 +set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1394.1717 +                         _InputIter2 __first2, _InputIter2 __last2,
1394.1718 +                         _OutputIter __result) {
1394.1719 +  return __set_symmetric_difference(__first1, __last1, __first2, __last2, __result,
1394.1720 +                                    __less(_STLP_VALUE_TYPE(__first1, _InputIter1)));  
1394.1721 +}
1394.1722 +
1394.1723 +template <class _InputIter1, class _InputIter2, class _OutputIter, class _Compare>
1394.1724 +_OutputIter 
1394.1725 +set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1394.1726 +                         _InputIter2 __first2, _InputIter2 __last2,
1394.1727 +                         _OutputIter __result,
1394.1728 +                         _Compare __comp) {
1394.1729 +  return __set_symmetric_difference(__first1, __last1, __first2, __last2, __result, __comp);
1394.1730 +}
1394.1731 +
1394.1732 +// min_element and max_element, with and without an explicitly supplied
1394.1733 +// comparison function.
1394.1734 +
1394.1735 +template <class _ForwardIter, class _Compare>
1394.1736 +_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last,
1394.1737 +                            _Compare __comp) {
1394.1738 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1739 +  if (__first == __last) return __first;
1394.1740 +  _ForwardIter __result = __first;
1394.1741 +  while (++__first != __last) 
1394.1742 +    if (__comp(*__result, *__first)) __result = __first;
1394.1743 +  return __result;
1394.1744 +}
1394.1745 +
1394.1746 +template <class _ForwardIter>
1394.1747 +_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last) {
1394.1748 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1749 +  if (__first == __last) return __first;
1394.1750 +  _ForwardIter __result = __first;
1394.1751 +  while (++__first != __last) 
1394.1752 +    if (*__result < *__first)
1394.1753 +      __result = __first;
1394.1754 +  return __result;
1394.1755 +}
1394.1756 +
1394.1757 +template <class _ForwardIter>
1394.1758 +_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last) {
1394.1759 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1760 +  if (__first == __last) return __first;
1394.1761 +  _ForwardIter __result = __first;
1394.1762 +  while (++__first != __last) 
1394.1763 +    if (*__first < *__result)
1394.1764 +      __result = __first;
1394.1765 +  return __result;
1394.1766 +}
1394.1767 +
1394.1768 +template <class _ForwardIter, class _Compare>
1394.1769 +_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last,
1394.1770 +                            _Compare __comp) {
1394.1771 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1772 +  if (__first == __last) return __first;
1394.1773 +  _ForwardIter __result = __first;
1394.1774 +  while (++__first != __last) 
1394.1775 +    if (__comp(*__first, *__result)) __result = __first;
1394.1776 +  return __result;
1394.1777 +}
1394.1778 +
1394.1779 +// next_permutation and prev_permutation, with and without an explicitly 
1394.1780 +// supplied comparison function.
1394.1781 +template <class _BidirectionalIter, class _Compare>
1394.1782 +bool __next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1394.1783 +                        _Compare __comp) {
1394.1784 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1785 +  if (__first == __last)
1394.1786 +    return false;
1394.1787 +  _BidirectionalIter __i = __first;
1394.1788 +  ++__i;
1394.1789 +  if (__i == __last)
1394.1790 +    return false;
1394.1791 +  __i = __last;
1394.1792 +  --__i;
1394.1793 +
1394.1794 +  for(;;) {
1394.1795 +    _BidirectionalIter __ii = __i;
1394.1796 +    --__i;
1394.1797 +    if (__comp(*__i, *__ii)) {
1394.1798 +      _BidirectionalIter __j = __last;
1394.1799 +      while (!__comp(*__i, *--__j))
1394.1800 +        {}
1394.1801 +      iter_swap(__i, __j);
1394.1802 +      reverse(__ii, __last);
1394.1803 +      return true;
1394.1804 +    }
1394.1805 +    if (__i == __first) {
1394.1806 +      reverse(__first, __last);
1394.1807 +      return false;
1394.1808 +    }
1394.1809 +  }
1394.1810 +#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1394.1811 +    return 0;
1394.1812 +#endif
1394.1813 +}
1394.1814 +
1394.1815 +template <class _BidirectionalIter>
1394.1816 +bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
1394.1817 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1818 +  return __next_permutation(__first, __last, __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter)));
1394.1819 +}
1394.1820 +
1394.1821 +template <class _BidirectionalIter, class _Compare>
1394.1822 +bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1394.1823 +                      _Compare __comp) {
1394.1824 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1825 +  return __next_permutation(__first, __last, __comp);
1394.1826 +}
1394.1827 +
1394.1828 +template <class _BidirectionalIter, class _Compare>
1394.1829 +bool __prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1394.1830 +                      _Compare __comp) {
1394.1831 +  if (__first == __last)
1394.1832 +    return false;
1394.1833 +  _BidirectionalIter __i = __first;
1394.1834 +  ++__i;
1394.1835 +  if (__i == __last)
1394.1836 +    return false;
1394.1837 +  __i = __last;
1394.1838 +  --__i;
1394.1839 +
1394.1840 +  for(;;) {
1394.1841 +    _BidirectionalIter __ii = __i;
1394.1842 +    --__i;
1394.1843 +    if (__comp(*__ii, *__i)) {
1394.1844 +      _BidirectionalIter __j = __last;
1394.1845 +      while (!__comp(*--__j, *__i))
1394.1846 +        {}
1394.1847 +      iter_swap(__i, __j);
1394.1848 +      reverse(__ii, __last);
1394.1849 +      return true;
1394.1850 +    }
1394.1851 +    if (__i == __first) {
1394.1852 +      reverse(__first, __last);
1394.1853 +      return false;
1394.1854 +    }
1394.1855 +  }
1394.1856 +#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1394.1857 +    return 0;
1394.1858 +#endif
1394.1859 +}
1394.1860 +
1394.1861 +template <class _BidirectionalIter>
1394.1862 +bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last) {
1394.1863 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1864 +  return __prev_permutation(__first, __last, __less(_STLP_VALUE_TYPE(__first, _BidirectionalIter)));
1394.1865 +}
1394.1866 +
1394.1867 +template <class _BidirectionalIter, class _Compare>
1394.1868 +bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1394.1869 +                      _Compare __comp) {
1394.1870 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1871 +  return __prev_permutation(__first, __last, __comp);
1394.1872 +}
1394.1873 +
1394.1874 +# ifndef _STLP_NO_EXTENSIONS
1394.1875 +
1394.1876 +// is_heap, a predicate testing whether or not a range is
1394.1877 +// a heap.  This function is an extension, not part of the C++
1394.1878 +// standard.
1394.1879 +
1394.1880 +
1394.1881 +template <class _RandomAccessIter, class _Distance, class _StrictWeakOrdering>
1394.1882 +bool __is_heap(_RandomAccessIter __first, _StrictWeakOrdering __comp,
1394.1883 +               _Distance __n)
1394.1884 +{
1394.1885 +  _Distance __parent = 0;
1394.1886 +  for (_Distance __child = 1; __child < __n; ++__child) {
1394.1887 +    if (__comp(__first[__parent], __first[__child]))
1394.1888 +      return false;
1394.1889 +    if ((__child & 1) == 0)
1394.1890 +      ++__parent;
1394.1891 +  }
1394.1892 +  return true;
1394.1893 +}
1394.1894 +
1394.1895 +template <class _RandomAccessIter>
1394.1896 +bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last)
1394.1897 +{
1394.1898 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1899 +  return __is_heap(__first, __less(_STLP_VALUE_TYPE(__first, _RandomAccessIter)), __last - __first);
1394.1900 +}
1394.1901 +
1394.1902 +template <class _RandomAccessIter, class _StrictWeakOrdering>
1394.1903 +bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last,
1394.1904 +	     _StrictWeakOrdering __comp)
1394.1905 +{
1394.1906 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1907 +  return __is_heap(__first, __comp, __last - __first);
1394.1908 +}
1394.1909 +
1394.1910 +
1394.1911 +template <class _ForwardIter, class _StrictWeakOrdering>
1394.1912 +bool __is_sorted(_ForwardIter __first, _ForwardIter __last,
1394.1913 +                 _StrictWeakOrdering __comp)
1394.1914 +{
1394.1915 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1394.1916 +  if (__first == __last)
1394.1917 +    return true;
1394.1918 +
1394.1919 +  _ForwardIter __next = __first;
1394.1920 +  for (++__next; __next != __last; __first = __next, ++__next) {
1394.1921 +    if (__comp(*__next, *__first))
1394.1922 +      return false;
1394.1923 +  }
1394.1924 +
1394.1925 +  return true;
1394.1926 +}
1394.1927 +
1394.1928 +# endif /* _STLP_NO_EXTENSIONS */
1394.1929 +
1394.1930 +_STLP_END_NAMESPACE
1394.1931 +
1394.1932 +# undef __stl_threshold
1394.1933 +
1394.1934 +#endif /* _STLP_ALGO_C */
1394.1935 +// Local Variables:
1394.1936 +// mode:C++
1394.1937 +// End:
  1395.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1395.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_algo.h	Wed Mar 31 12:27:01 2010 +0100
  1395.3 @@ -0,0 +1,740 @@
  1395.4 +/*
  1395.5 + *
  1395.6 + * Copyright (c) 1994
  1395.7 + * Hewlett-Packard Company
  1395.8 + *
  1395.9 + * Copyright (c) 1996,1997
 1395.10 + * Silicon Graphics Computer Systems, Inc.
 1395.11 + *
 1395.12 + * Copyright (c) 1997
 1395.13 + * Moscow Center for SPARC Technology
 1395.14 + *
 1395.15 + * Copyright (c) 1999 
 1395.16 + * Boris Fomitchev
 1395.17 + *
 1395.18 + * This material is provided "as is", with absolutely no warranty expressed
 1395.19 + * or implied. Any use is at your own risk.
 1395.20 + *
 1395.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1395.22 + * without fee, provided the above notices are retained on all copies.
 1395.23 + * Permission to modify the code and to distribute modified code is granted,
 1395.24 + * provided the above notices are retained, and a notice that the code was
 1395.25 + * modified is included with the above copyright notice.
 1395.26 + *
 1395.27 + */
 1395.28 +
 1395.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1395.30 + *   You should not attempt to use it directly.
 1395.31 + */
 1395.32 +
 1395.33 +#ifndef _STLP_INTERNAL_ALGO_H
 1395.34 +#define _STLP_INTERNAL_ALGO_H
 1395.35 +
 1395.36 +# ifndef _STLP_INTERNAL_ALGOBASE_H
 1395.37 +#  include <stl/_algobase.h>
 1395.38 +# endif
 1395.39 +
 1395.40 +# ifndef _STLP_INTERNAL_TEMPBUF_H
 1395.41 +#  include <stl/_tempbuf.h>
 1395.42 +# endif
 1395.43 +
 1395.44 +# ifndef _STLP_INTERNAL_HEAP_H
 1395.45 +#  include <stl/_heap.h>
 1395.46 +# endif
 1395.47 +
 1395.48 +# ifndef _STLP_INTERNAL_ITERATOR_H
 1395.49 +#  include <stl/_iterator.h>
 1395.50 +# endif
 1395.51 +
 1395.52 +# ifndef _STLP_INTERNAL_FUNCTION_BASE_H
 1395.53 +#  include <stl/_function_base.h>
 1395.54 +# endif
 1395.55 +
 1395.56 +# ifdef __SUNPRO_CC
 1395.57 +// remove() conflict
 1395.58 +#  include <cstdio>
 1395.59 +# endif
 1395.60 +
 1395.61 +_STLP_BEGIN_NAMESPACE
 1395.62 +
 1395.63 +// for_each.  Apply a function to every element of a range.
 1395.64 +template <class _InputIter, class _Function>
 1395.65 +_STLP_INLINE_LOOP _Function 
 1395.66 +for_each(_InputIter __first, _InputIter __last, _Function __f) {
 1395.67 +  for ( ; __first != __last; ++__first)
 1395.68 +    __f(*__first);
 1395.69 +  return __f;
 1395.70 +}
 1395.71 +
 1395.72 +// count_if
 1395.73 +template <class _InputIter, class _Predicate>
 1395.74 +_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter)
 1395.75 +count_if(_InputIter __first, _InputIter __last, _Predicate __pred) {
 1395.76 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1395.77 +_STLP_DIFFERENCE_TYPE(_InputIter) __n = 0;
 1395.78 +  for ( ; __first != __last; ++__first)
 1395.79 +    if (__pred(*__first))
 1395.80 +      ++__n;
 1395.81 +  return __n;
 1395.82 +}
 1395.83 +
 1395.84 +// adjacent_find.
 1395.85 +
 1395.86 +template <class _ForwardIter, class _BinaryPredicate>
 1395.87 +_STLP_INLINE_LOOP _ForwardIter 
 1395.88 +adjacent_find(_ForwardIter __first, _ForwardIter __last,
 1395.89 +              _BinaryPredicate __binary_pred) {
 1395.90 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1395.91 +  if (__first == __last)
 1395.92 +    return __last;
 1395.93 +  _ForwardIter __next = __first;
 1395.94 +  while(++__next != __last) {
 1395.95 +    if (__binary_pred(*__first, *__next))
 1395.96 +      return __first;
 1395.97 +    __first = __next;
 1395.98 +  }
 1395.99 +  return __last;
1395.100 +}
1395.101 +
1395.102 +template <class _ForwardIter>
1395.103 +_STLP_INLINE_LOOP _ForwardIter 
1395.104 +adjacent_find(_ForwardIter __first, _ForwardIter __last) {
1395.105 +  return adjacent_find(__first, __last,
1395.106 +		       __equal_to(_STLP_VALUE_TYPE(__first, _ForwardIter)));
1395.107 +}
1395.108 +
1395.109 +# ifndef _STLP_NO_ANACHRONISMS
1395.110 +template <class _InputIter, class _Tp, class _Size>
1395.111 +_STLP_INLINE_LOOP void 
1395.112 +count(_InputIter __first, _InputIter __last, const _Tp& __val, _Size& __n) {
1395.113 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.114 +    for ( ; __first != __last; ++__first)
1395.115 +      if (*__first == __val)
1395.116 +        ++__n;
1395.117 +}
1395.118 +
1395.119 +template <class _InputIter, class _Predicate, class _Size>
1395.120 +_STLP_INLINE_LOOP void 
1395.121 +count_if(_InputIter __first, _InputIter __last, _Predicate __pred, _Size& __n) {
1395.122 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.123 +  for ( ; __first != __last; ++__first)
1395.124 +    if (__pred(*__first))
1395.125 +      ++__n;
1395.126 +}
1395.127 +# endif
1395.128 +
1395.129 +template <class _ForwardIter1, class _ForwardIter2>
1395.130 +_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
1395.131 +                     _ForwardIter2 __first2, _ForwardIter2 __last2);
1395.132 +
1395.133 +// search_n.  Search for __count consecutive copies of __val.
1395.134 +template <class _ForwardIter, class _Integer, class _Tp>
1395.135 +_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1395.136 +                      _Integer __count, const _Tp& __val);
1395.137 +template <class _ForwardIter, class _Integer, class _Tp, class _BinaryPred>
1395.138 +_ForwardIter search_n(_ForwardIter __first, _ForwardIter __last,
1395.139 +                      _Integer __count, const _Tp& __val, _BinaryPred __binary_pred);
1395.140 +
1395.141 +template <class _InputIter, class _ForwardIter>
1395.142 +inline _InputIter find_first_of(_InputIter __first1, _InputIter __last1,
1395.143 +                                _ForwardIter __first2, _ForwardIter __last2) {
1395.144 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1395.145 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1395.146 +  return __find_first_of(__first1, __last1, __first2, __last2,__equal_to(_STLP_VALUE_TYPE(__first1, _InputIter)));
1395.147 +}
1395.148 +
1395.149 +template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1395.150 +inline _InputIter 
1395.151 +find_first_of(_InputIter __first1, _InputIter __last1,
1395.152 +              _ForwardIter __first2, _ForwardIter __last2,_BinaryPredicate __comp) {
1395.153 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1395.154 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1395.155 +  return __find_first_of(__first1, __last1, __first2, __last2,__comp);
1395.156 +}
1395.157 +
1395.158 +template <class _ForwardIter1, class _ForwardIter2>
1395.159 +_ForwardIter1 
1395.160 +find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1395.161 +         _ForwardIter2 __first2, _ForwardIter2 __last2);
1395.162 +
1395.163 +// swap_ranges
1395.164 +template <class _ForwardIter1, class _ForwardIter2>
1395.165 +_STLP_INLINE_LOOP _ForwardIter2 
1395.166 +swap_ranges(_ForwardIter1 __first1, _ForwardIter1 __last1, _ForwardIter2 __first2) {
1395.167 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1395.168 +  for ( ; __first1 != __last1; ++__first1, ++__first2)
1395.169 +    iter_swap(__first1, __first2);
1395.170 +  return __first2;
1395.171 +}
1395.172 +
1395.173 +// transform
1395.174 +template <class _InputIter, class _OutputIter, class _UnaryOperation>
1395.175 +_STLP_INLINE_LOOP _OutputIter 
1395.176 +transform(_InputIter __first, _InputIter __last, _OutputIter __result, _UnaryOperation __opr) {
1395.177 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.178 +  for ( ; __first != __last; ++__first, ++__result)
1395.179 +    *__result = __opr(*__first);
1395.180 +  return __result;
1395.181 +}
1395.182 +template <class _InputIter1, class _InputIter2, class _OutputIter, class _BinaryOperation>
1395.183 +_STLP_INLINE_LOOP _OutputIter 
1395.184 +transform(_InputIter1 __first1, _InputIter1 __last1, 
1395.185 +          _InputIter2 __first2, _OutputIter __result,_BinaryOperation __binary_op) {
1395.186 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1395.187 +  for ( ; __first1 != __last1; ++__first1, ++__first2, ++__result)
1395.188 +    *__result = __binary_op(*__first1, *__first2);
1395.189 +  return __result;
1395.190 +}
1395.191 +
1395.192 +// replace_if, replace_copy, replace_copy_if
1395.193 +
1395.194 +template <class _ForwardIter, class _Predicate, class _Tp>
1395.195 +_STLP_INLINE_LOOP void 
1395.196 +replace_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred, const _Tp& __new_value) {
1395.197 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.198 +  for ( ; __first != __last; ++__first)
1395.199 +    if (__pred(*__first))
1395.200 +      *__first = __new_value;
1395.201 +}
1395.202 +
1395.203 +template <class _InputIter, class _OutputIter, class _Tp>
1395.204 +_STLP_INLINE_LOOP  _OutputIter 
1395.205 +replace_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1395.206 +             const _Tp& __old_value, const _Tp& __new_value) {
1395.207 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.208 +  for ( ; __first != __last; ++__first, ++__result)
1395.209 +    *__result = *__first == __old_value ? __new_value : *__first;
1395.210 +  return __result;
1395.211 +}
1395.212 +
1395.213 +template <class _Iterator, class _OutputIter, class _Predicate, class _Tp>
1395.214 +_STLP_INLINE_LOOP _OutputIter 
1395.215 +replace_copy_if(_Iterator __first, _Iterator __last,
1395.216 +                _OutputIter __result,
1395.217 +                _Predicate __pred, const _Tp& __new_value) {
1395.218 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.219 +  for ( ; __first != __last; ++__first, ++__result)
1395.220 +    *__result = __pred(*__first) ? __new_value : *__first;
1395.221 +  return __result;
1395.222 +}
1395.223 +
1395.224 +// generate and generate_n
1395.225 +
1395.226 +template <class _ForwardIter, class _Generator>
1395.227 +_STLP_INLINE_LOOP void 
1395.228 +generate(_ForwardIter __first, _ForwardIter __last, _Generator __gen) {
1395.229 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.230 +  for ( ; __first != __last; ++__first)
1395.231 +    *__first = __gen();
1395.232 +}
1395.233 +
1395.234 +template <class _OutputIter, class _Size, class _Generator>
1395.235 +_STLP_INLINE_LOOP _OutputIter 
1395.236 +generate_n(_OutputIter __first, _Size __n, _Generator __gen) {
1395.237 +  for ( ; __n > 0; --__n, ++__first)
1395.238 +    *__first = __gen();
1395.239 +  return __first;
1395.240 +}
1395.241 +
1395.242 +// remove, remove_if, remove_copy, remove_copy_if
1395.243 +
1395.244 +template <class _InputIter, class _OutputIter, class _Tp>
1395.245 +_STLP_INLINE_LOOP _OutputIter 
1395.246 +remove_copy(_InputIter __first, _InputIter __last,_OutputIter __result, const _Tp& __val) {
1395.247 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.248 +  for ( ; __first != __last; ++__first)
1395.249 +    if (!(*__first == __val)) {
1395.250 +      *__result = *__first;
1395.251 +      ++__result;
1395.252 +    }
1395.253 +  return __result;
1395.254 +}
1395.255 +
1395.256 +template <class _InputIter, class _OutputIter, class _Predicate>
1395.257 +_STLP_INLINE_LOOP _OutputIter 
1395.258 +remove_copy_if(_InputIter __first, _InputIter __last, _OutputIter __result, _Predicate __pred) {
1395.259 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.260 +  for ( ; __first != __last; ++__first)
1395.261 +    if (!__pred(*__first)) {
1395.262 +      *__result = *__first;
1395.263 +      ++__result;
1395.264 +    }
1395.265 +  return __result;
1395.266 +}
1395.267 +
1395.268 +template <class _ForwardIter, class _Tp>
1395.269 +_STLP_INLINE_LOOP _ForwardIter 
1395.270 +remove(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
1395.271 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.272 +  __first = find(__first, __last, __val);
1395.273 +  if (__first == __last)
1395.274 +    return __first;
1395.275 +  else { 
1395.276 +    _ForwardIter __next = __first;
1395.277 +    return remove_copy(++__next, __last, __first, __val);
1395.278 +  }
1395.279 +}
1395.280 +
1395.281 +template <class _ForwardIter, class _Predicate>
1395.282 +_STLP_INLINE_LOOP _ForwardIter 
1395.283 +remove_if(_ForwardIter __first, _ForwardIter __last, _Predicate __pred) {
1395.284 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.285 +  __first = find_if(__first, __last, __pred);
1395.286 +  if ( __first == __last )
1395.287 +    return __first;
1395.288 +  else {
1395.289 +    _ForwardIter __next = __first;
1395.290 +    return remove_copy_if(++__next, __last, __first, __pred);
1395.291 +  }
1395.292 +}
1395.293 +
1395.294 +// unique and unique_copy
1395.295 +template <class _InputIter, class _OutputIter>
1395.296 +_OutputIter unique_copy(_InputIter __first, _InputIter __last, _OutputIter __result);
1395.297 +
1395.298 +template <class _InputIter, class _OutputIter, class _BinaryPredicate>
1395.299 +_OutputIter unique_copy(_InputIter __first, _InputIter __last,_OutputIter __result,
1395.300 +                        _BinaryPredicate __binary_pred);
1395.301 +
1395.302 +template <class _ForwardIter>
1395.303 +inline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last) {
1395.304 +  __first = adjacent_find(__first, __last);
1395.305 +  return unique_copy(__first, __last, __first);
1395.306 +}
1395.307 +
1395.308 +template <class _ForwardIter, class _BinaryPredicate>
1395.309 +inline _ForwardIter unique(_ForwardIter __first, _ForwardIter __last,
1395.310 +                    _BinaryPredicate __binary_pred) {
1395.311 +  __first = adjacent_find(__first, __last, __binary_pred);
1395.312 +  return unique_copy(__first, __last, __first, __binary_pred);
1395.313 +}
1395.314 +
1395.315 +// reverse and reverse_copy, and their auxiliary functions
1395.316 +
1395.317 +template <class _BidirectionalIter>
1395.318 +_STLP_INLINE_LOOP void 
1395.319 +__reverse(_BidirectionalIter __first, _BidirectionalIter __last, const bidirectional_iterator_tag &) {
1395.320 +  for(; __first != __last && __first != --__last; ++__first)
1395.321 +    iter_swap(__first,__last);
1395.322 +}
1395.323 +
1395.324 +
1395.325 +template <class _RandomAccessIter>
1395.326 +_STLP_INLINE_LOOP void 
1395.327 +__reverse(_RandomAccessIter __first, _RandomAccessIter __last, const random_access_iterator_tag &) {
1395.328 +  for (; __first < __last; ++__first) iter_swap(__first, --__last);
1395.329 +}
1395.330 +
1395.331 +template <class _BidirectionalIter>
1395.332 +inline void 
1395.333 +reverse(_BidirectionalIter __first, _BidirectionalIter __last) {
1395.334 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.335 +  __reverse(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _BidirectionalIter));
1395.336 +}
1395.337 +
1395.338 +template <class _BidirectionalIter, class _OutputIter>
1395.339 +_STLP_INLINE_LOOP
1395.340 +_OutputIter reverse_copy(_BidirectionalIter __first,
1395.341 +                            _BidirectionalIter __last,
1395.342 +                            _OutputIter __result) {
1395.343 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.344 +  while (__first != __last) {
1395.345 +    --__last;
1395.346 +    *__result = *__last;
1395.347 +    ++__result;
1395.348 +  }
1395.349 +  return __result;
1395.350 +}
1395.351 +
1395.352 +// rotate and rotate_copy, and their auxiliary functions
1395.353 +
1395.354 +template <class _EuclideanRingElement>
1395.355 +_STLP_INLINE_LOOP
1395.356 +_EuclideanRingElement __gcd(_EuclideanRingElement __m,
1395.357 +                            _EuclideanRingElement __n)
1395.358 +{
1395.359 +  while (__n != 0) {
1395.360 +    _EuclideanRingElement __t = __m % __n;
1395.361 +    __m = __n;
1395.362 +    __n = __t;
1395.363 +  }
1395.364 +  return __m;
1395.365 +}
1395.366 +
1395.367 +template <class _ForwardIter>
1395.368 +_ForwardIter 
1395.369 +rotate(_ForwardIter __first, _ForwardIter __middle, _ForwardIter __last);
1395.370 +
1395.371 +template <class _ForwardIter, class _OutputIter>
1395.372 +inline _OutputIter rotate_copy(_ForwardIter __first, _ForwardIter __middle,
1395.373 +                               _ForwardIter __last, _OutputIter __result) {
1395.374 +  return copy(__first, __middle, copy(__middle, __last, __result));
1395.375 +}
1395.376 +
1395.377 +// random_shuffle
1395.378 +
1395.379 +template <class _RandomAccessIter>
1395.380 +void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last);
1395.381 +
1395.382 +template <class _RandomAccessIter, class _RandomNumberGenerator>
1395.383 +void random_shuffle(_RandomAccessIter __first, _RandomAccessIter __last,
1395.384 +                    _RandomNumberGenerator& __rand);
1395.385 +
1395.386 +# ifndef _STLP_NO_EXTENSIONS
1395.387 +// random_sample and random_sample_n (extensions, not part of the standard).
1395.388 +
1395.389 +template <class _ForwardIter, class _OutputIter, class _Distance>
1395.390 +_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1395.391 +                            _OutputIter __stl_out, const _Distance __n);
1395.392 +
1395.393 +template <class _ForwardIter, class _OutputIter, class _Distance,
1395.394 +          class _RandomNumberGenerator>
1395.395 +_OutputIter random_sample_n(_ForwardIter __first, _ForwardIter __last,
1395.396 +                            _OutputIter __stl_out, const _Distance __n,
1395.397 +                            _RandomNumberGenerator& __rand);
1395.398 +
1395.399 +template <class _InputIter, class _RandomAccessIter>
1395.400 +_RandomAccessIter
1395.401 +random_sample(_InputIter __first, _InputIter __last,
1395.402 +              _RandomAccessIter __out_first, _RandomAccessIter __out_last);
1395.403 +
1395.404 +template <class _InputIter, class _RandomAccessIter, 
1395.405 +          class _RandomNumberGenerator>
1395.406 +_RandomAccessIter
1395.407 +random_sample(_InputIter __first, _InputIter __last,
1395.408 +              _RandomAccessIter __out_first, _RandomAccessIter __out_last,
1395.409 +              _RandomNumberGenerator& __rand);
1395.410 +
1395.411 +# endif /* _STLP_NO_EXTENSIONS */
1395.412 +
1395.413 +// partition, stable_partition, and their auxiliary functions
1395.414 +
1395.415 +template <class _ForwardIter, class _Predicate>
1395.416 +_ForwardIter partition(_ForwardIter __first, _ForwardIter __last, _Predicate   __pred);
1395.417 +
1395.418 +
1395.419 +template <class _ForwardIter, class _Predicate>
1395.420 +_ForwardIter 
1395.421 +stable_partition(_ForwardIter __first, _ForwardIter __last, _Predicate __pred);
1395.422 +
1395.423 +// sort() and its auxiliary functions. 
1395.424 +
1395.425 +template <class _Size>
1395.426 +inline _Size __lg(_Size __n) {
1395.427 +  _Size __k;
1395.428 +  for (__k = 0; __n != 1; __n >>= 1) ++__k;
1395.429 +  return __k;
1395.430 +}
1395.431 +
1395.432 +template <class _RandomAccessIter>
1395.433 +void sort(_RandomAccessIter __first, _RandomAccessIter __last);
1395.434 +template <class _RandomAccessIter, class _Compare>
1395.435 +void sort(_RandomAccessIter __first, _RandomAccessIter __last, _Compare __comp);
1395.436 +
1395.437 +// stable_sort() and its auxiliary functions.
1395.438 +template <class _RandomAccessIter>
1395.439 +void stable_sort(_RandomAccessIter __first,
1395.440 +		 _RandomAccessIter __last);
1395.441 +
1395.442 +template <class _RandomAccessIter, class _Compare>
1395.443 +void stable_sort(_RandomAccessIter __first,
1395.444 +		 _RandomAccessIter __last, _Compare __comp);
1395.445 +
1395.446 +// partial_sort, partial_sort_copy, and auxiliary functions.
1395.447 +
1395.448 +template <class _RandomAccessIter>
1395.449 +void 
1395.450 +partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, _RandomAccessIter __last);
1395.451 +
1395.452 +template <class _RandomAccessIter, class _Compare>
1395.453 +void 
1395.454 +partial_sort(_RandomAccessIter __first,_RandomAccessIter __middle, 
1395.455 +             _RandomAccessIter __last, _Compare __comp);
1395.456 +
1395.457 +template <class _InputIter, class _RandomAccessIter>
1395.458 +_RandomAccessIter
1395.459 +partial_sort_copy(_InputIter __first, _InputIter __last,
1395.460 +                  _RandomAccessIter __result_first, _RandomAccessIter __result_last);
1395.461 +
1395.462 +template <class _InputIter, class _RandomAccessIter, class _Compare>
1395.463 +_RandomAccessIter
1395.464 +partial_sort_copy(_InputIter __first, _InputIter __last,
1395.465 +                  _RandomAccessIter __result_first,
1395.466 +                  _RandomAccessIter __result_last, _Compare __comp);
1395.467 +
1395.468 +// nth_element() and its auxiliary functions.  
1395.469 +
1395.470 +template <class _RandomAccessIter>
1395.471 +void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1395.472 +                 _RandomAccessIter __last);
1395.473 +
1395.474 +template <class _RandomAccessIter, class _Compare>
1395.475 +void nth_element(_RandomAccessIter __first, _RandomAccessIter __nth,
1395.476 +                 _RandomAccessIter __last, _Compare __comp);
1395.477 +
1395.478 +// auxiliary class for lower_bound, etc.
1395.479 +template <class _T1, class _T2>
1395.480 +struct __less_2 {
1395.481 +  bool operator() (const _T1& __x, const _T2 __y) const { return __x < __y ; } 
1395.482 +};
1395.483 +
1395.484 +template <class _T1, class _T2>
1395.485 +__less_2<_T1,_T2> __less2(_T1*, _T2* ) { return __less_2<_T1, _T2>(); }
1395.486 +
1395.487 +#ifdef _STLP_FUNCTION_PARTIAL_ORDER
1395.488 +template <class _Tp>
1395.489 +less<_Tp> __less2(_Tp*, _Tp* ) { return less<_Tp>(); }
1395.490 +#endif
1395.491 +
1395.492 +// Binary search (lower_bound, upper_bound, equal_range, binary_search).
1395.493 +
1395.494 +template <class _ForwardIter, class _Tp>
1395.495 +inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last,
1395.496 +                                   const _Tp& __val) {
1395.497 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.498 +    return __lower_bound(__first, __last, __val, 
1395.499 +			 __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1395.500 +			 _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.501 +}
1395.502 +
1395.503 +template <class _ForwardIter, class _Tp, class _Compare>
1395.504 +inline _ForwardIter lower_bound(_ForwardIter __first, _ForwardIter __last,
1395.505 +                                const _Tp& __val, _Compare __comp) {
1395.506 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.507 +  return __lower_bound(__first, __last, __val, __comp, _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.508 +}
1395.509 +
1395.510 +template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1395.511 +_ForwardIter __upper_bound(_ForwardIter __first, _ForwardIter __last,
1395.512 +                           const _Tp& __val, _Compare __comp, _Distance*);
1395.513 +
1395.514 +template <class _ForwardIter, class _Tp>
1395.515 +inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last,
1395.516 +                                const _Tp& __val) {
1395.517 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.518 +  return __upper_bound(__first, __last, __val, 
1395.519 +		       __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1395.520 +                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.521 +}
1395.522 +
1395.523 +template <class _ForwardIter, class _Tp, class _Compare>
1395.524 +inline _ForwardIter upper_bound(_ForwardIter __first, _ForwardIter __last,
1395.525 +                                const _Tp& __val, _Compare __comp) {
1395.526 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.527 +  return __upper_bound(__first, __last, __val, __comp,
1395.528 +                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.529 +}
1395.530 +
1395.531 +template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1395.532 +pair<_ForwardIter, _ForwardIter>
1395.533 +__equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
1395.534 +              _Compare __comp, _Distance*);
1395.535 +
1395.536 +template <class _ForwardIter, class _Tp>
1395.537 +inline pair<_ForwardIter, _ForwardIter>
1395.538 +equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
1395.539 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.540 +  return __equal_range(__first, __last, __val,  
1395.541 +		       __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1395.542 +                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.543 +}
1395.544 +
1395.545 +template <class _ForwardIter, class _Tp, class _Compare>
1395.546 +inline pair<_ForwardIter, _ForwardIter>
1395.547 +equal_range(_ForwardIter __first, _ForwardIter __last, const _Tp& __val,
1395.548 +            _Compare __comp) {
1395.549 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.550 +  return __equal_range(__first, __last, __val, __comp,
1395.551 +                       _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.552 +} 
1395.553 +
1395.554 +template <class _ForwardIter, class _Tp>
1395.555 +inline bool binary_search(_ForwardIter __first, _ForwardIter __last,
1395.556 +                   const _Tp& __val) {
1395.557 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.558 +  _ForwardIter __i = __lower_bound(__first, __last, __val, 
1395.559 +                                   __less2(_STLP_VALUE_TYPE(__first, _ForwardIter), (_Tp*)0),
1395.560 +                                   _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.561 +  return __i != __last && !(__val < *__i);
1395.562 +}
1395.563 +
1395.564 +template <class _ForwardIter, class _Tp, class _Compare>
1395.565 +inline bool binary_search(_ForwardIter __first, _ForwardIter __last,
1395.566 +                   const _Tp& __val,
1395.567 +                   _Compare __comp) {
1395.568 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1395.569 +  _ForwardIter __i = __lower_bound(__first, __last, __val, __comp, _STLP_DISTANCE_TYPE(__first, _ForwardIter));
1395.570 +  return __i != __last && !__comp(__val, *__i);
1395.571 +}
1395.572 +
1395.573 +// merge, with and without an explicitly supplied comparison function.
1395.574 +
1395.575 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1395.576 +_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1395.577 +                  _InputIter2 __first2, _InputIter2 __last2,
1395.578 +                  _OutputIter __result);
1395.579 + 
1395.580 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1395.581 +          class _Compare>
1395.582 +_OutputIter merge(_InputIter1 __first1, _InputIter1 __last1,
1395.583 +                  _InputIter2 __first2, _InputIter2 __last2,
1395.584 +                  _OutputIter __result, _Compare __comp);
1395.585 +
1395.586 +
1395.587 +// inplace_merge and its auxiliary functions. 
1395.588 +
1395.589 +
1395.590 +template <class _BidirectionalIter>
1395.591 +void inplace_merge(_BidirectionalIter __first,
1395.592 +		   _BidirectionalIter __middle,
1395.593 +		   _BidirectionalIter __last) ;
1395.594 +
1395.595 +template <class _BidirectionalIter, class _Compare>
1395.596 +void inplace_merge(_BidirectionalIter __first,
1395.597 +		   _BidirectionalIter __middle,
1395.598 +		   _BidirectionalIter __last, _Compare __comp);
1395.599 +
1395.600 +// Set algorithms: includes, set_union, set_intersection, set_difference,
1395.601 +// set_symmetric_difference.  All of these algorithms have the precondition
1395.602 +// that their input ranges are sorted and the postcondition that their output
1395.603 +// ranges are sorted.
1395.604 +
1395.605 +template <class _InputIter1, class _InputIter2>
1395.606 +bool includes(_InputIter1 __first1, _InputIter1 __last1,
1395.607 +              _InputIter2 __first2, _InputIter2 __last2);
1395.608 +
1395.609 +template <class _InputIter1, class _InputIter2, class _Compare>
1395.610 +bool includes(_InputIter1 __first1, _InputIter1 __last1,
1395.611 +              _InputIter2 __first2, _InputIter2 __last2, _Compare __comp);
1395.612 + 
1395.613 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1395.614 +_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1395.615 +                      _InputIter2 __first2, _InputIter2 __last2,
1395.616 +                      _OutputIter __result);
1395.617 +
1395.618 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1395.619 +          class _Compare>
1395.620 +_OutputIter set_union(_InputIter1 __first1, _InputIter1 __last1,
1395.621 +                      _InputIter2 __first2, _InputIter2 __last2,
1395.622 +                      _OutputIter __result, _Compare __comp);
1395.623 +
1395.624 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1395.625 +_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1395.626 +                             _InputIter2 __first2, _InputIter2 __last2,
1395.627 +                             _OutputIter __result);
1395.628 +
1395.629 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1395.630 +          class _Compare>
1395.631 +_OutputIter set_intersection(_InputIter1 __first1, _InputIter1 __last1,
1395.632 +                             _InputIter2 __first2, _InputIter2 __last2,
1395.633 +                             _OutputIter __result, _Compare __comp);
1395.634 +
1395.635 +
1395.636 +
1395.637 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1395.638 +_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1395.639 +                           _InputIter2 __first2, _InputIter2 __last2,
1395.640 +                           _OutputIter __result);
1395.641 +
1395.642 +template <class _InputIter1, class _InputIter2, class _OutputIter, 
1395.643 +          class _Compare>
1395.644 +_OutputIter set_difference(_InputIter1 __first1, _InputIter1 __last1,
1395.645 +                           _InputIter2 __first2, _InputIter2 __last2, 
1395.646 +                           _OutputIter __result, _Compare __comp);
1395.647 +
1395.648 +template <class _InputIter1, class _InputIter2, class _OutputIter>
1395.649 +_OutputIter 
1395.650 +set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1395.651 +                         _InputIter2 __first2, _InputIter2 __last2,
1395.652 +                         _OutputIter __result);
1395.653 +
1395.654 +
1395.655 +template <class _InputIter1, class _InputIter2, class _OutputIter,
1395.656 +          class _Compare>
1395.657 +_OutputIter 
1395.658 +set_symmetric_difference(_InputIter1 __first1, _InputIter1 __last1,
1395.659 +                         _InputIter2 __first2, _InputIter2 __last2,
1395.660 +                         _OutputIter __result,
1395.661 +                         _Compare __comp);
1395.662 +
1395.663 +
1395.664 +// min_element and max_element, with and without an explicitly supplied
1395.665 +// comparison function.
1395.666 +
1395.667 +template <class _ForwardIter>
1395.668 +_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last);
1395.669 +template <class _ForwardIter, class _Compare>
1395.670 +_ForwardIter max_element(_ForwardIter __first, _ForwardIter __last,
1395.671 +                            _Compare __comp);
1395.672 +
1395.673 +template <class _ForwardIter>
1395.674 +_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last);
1395.675 +
1395.676 +template <class _ForwardIter, class _Compare>
1395.677 +_ForwardIter min_element(_ForwardIter __first, _ForwardIter __last,
1395.678 +                            _Compare __comp);
1395.679 +
1395.680 +// next_permutation and prev_permutation, with and without an explicitly 
1395.681 +// supplied comparison function.
1395.682 +
1395.683 +template <class _BidirectionalIter>
1395.684 +bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last);
1395.685 +
1395.686 +template <class _BidirectionalIter, class _Compare>
1395.687 +bool next_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1395.688 +                      _Compare __comp);
1395.689 +
1395.690 +
1395.691 +template <class _BidirectionalIter>
1395.692 +bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last);
1395.693 +
1395.694 +
1395.695 +template <class _BidirectionalIter, class _Compare>
1395.696 +bool prev_permutation(_BidirectionalIter __first, _BidirectionalIter __last,
1395.697 +                      _Compare __comp);
1395.698 +
1395.699 +# ifndef _STLP_NO_EXTENSIONS
1395.700 +
1395.701 +// is_heap, a predicate testing whether or not a range is
1395.702 +// a heap.  This function is an extension, not part of the C++
1395.703 +// standard.
1395.704 +
1395.705 +template <class _RandomAccessIter>
1395.706 +bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last);
1395.707 +
1395.708 +template <class _RandomAccessIter, class _StrictWeakOrdering>
1395.709 +bool is_heap(_RandomAccessIter __first, _RandomAccessIter __last,
1395.710 +	     _StrictWeakOrdering __comp);
1395.711 +
1395.712 +
1395.713 +// is_sorted, a predicated testing whether a range is sorted in
1395.714 +// nondescending order.  This is an extension, not part of the C++
1395.715 +// standard.
1395.716 +template <class _ForwardIter, class _StrictWeakOrdering>
1395.717 +bool __is_sorted(_ForwardIter __first, _ForwardIter __last,
1395.718 +                 _StrictWeakOrdering __comp);
1395.719 +
1395.720 +template <class _ForwardIter>
1395.721 +inline bool is_sorted(_ForwardIter __first, _ForwardIter __last) {
1395.722 +  return __is_sorted(__first, __last, __less(_STLP_VALUE_TYPE(__first, _ForwardIter)));
1395.723 +}
1395.724 +
1395.725 +template <class _ForwardIter, class _StrictWeakOrdering>
1395.726 +inline bool is_sorted(_ForwardIter __first, _ForwardIter __last,
1395.727 +                      _StrictWeakOrdering __comp) {
1395.728 +  return __is_sorted(__first, __last, __comp);
1395.729 +}
1395.730 +# endif
1395.731 +
1395.732 +_STLP_END_NAMESPACE
1395.733 +
1395.734 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1395.735 +#  include <stl/_algo.c>
1395.736 +# endif
1395.737 +
1395.738 +#endif /* _STLP_INTERNAL_ALGO_H */
1395.739 +
1395.740 +// Local Variables:
1395.741 +// mode:C++
1395.742 +// End:
1395.743 +
  1396.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1396.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_algobase.c	Wed Mar 31 12:27:01 2010 +0100
  1396.3 @@ -0,0 +1,392 @@
  1396.4 +/*
  1396.5 + *
  1396.6 + * Copyright (c) 1994
  1396.7 + * Hewlett-Packard Company
  1396.8 + *
  1396.9 + * Copyright (c) 1996,1997
 1396.10 + * Silicon Graphics Computer Systems, Inc.
 1396.11 + *
 1396.12 + * Copyright (c) 1997
 1396.13 + * Moscow Center for SPARC Technology
 1396.14 + *
 1396.15 + * Copyright (c) 1999 
 1396.16 + * Boris Fomitchev
 1396.17 + *
 1396.18 + * This material is provided "as is", with absolutely no warranty expressed
 1396.19 + * or implied. Any use is at your own risk.
 1396.20 + *
 1396.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1396.22 + * without fee, provided the above notices are retained on all copies.
 1396.23 + * Permission to modify the code and to distribute modified code is granted,
 1396.24 + * provided the above notices are retained, and a notice that the code was
 1396.25 + * modified is included with the above copyright notice.
 1396.26 + *
 1396.27 + */
 1396.28 +#ifndef _STLP_ALGOBASE_C
 1396.29 +#define _STLP_ALGOBASE_C
 1396.30 +
 1396.31 +# if !defined (_STLP_INTERNAL_ALGOBASE_H)
 1396.32 +#  include <stl/_algobase.h>
 1396.33 +# endif
 1396.34 +
 1396.35 +_STLP_BEGIN_NAMESPACE
 1396.36 +
 1396.37 +template <class _InputIter1, class _InputIter2>
 1396.38 +bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
 1396.39 +                             _InputIter2 __first2, _InputIter2 __last2) {
 1396.40 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1396.41 +    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
 1396.42 +    for ( ; __first1 != __last1 && __first2 != __last2
 1396.43 +	    ; ++__first1, ++__first2) {
 1396.44 +      if (*__first1 < *__first2)
 1396.45 +	return true;
 1396.46 +      if (*__first2 < *__first1)
 1396.47 +	return false;
 1396.48 +    }
 1396.49 +  return __first1 == __last1 && __first2 != __last2;
 1396.50 +}
 1396.51 +
 1396.52 +template <class _InputIter1, class _InputIter2, class _Compare>
 1396.53 +bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
 1396.54 +                             _InputIter2 __first2, _InputIter2 __last2,
 1396.55 +                             _Compare __comp) {
 1396.56 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1396.57 +    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
 1396.58 +    for ( ; __first1 != __last1 && __first2 != __last2
 1396.59 +	    ; ++__first1, ++__first2) {
 1396.60 +      if (__comp(*__first1, *__first2))
 1396.61 +	return true;
 1396.62 +      if (__comp(*__first2, *__first1))
 1396.63 +	return false;
 1396.64 +    }
 1396.65 +  return __first1 == __last1 && __first2 != __last2;
 1396.66 +}
 1396.67 +
 1396.68 +# ifndef _STLP_NO_EXTENSIONS
 1396.69 +
 1396.70 +template <class _InputIter1, class _InputIter2>
 1396.71 +int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
 1396.72 +                                   _InputIter2 __first2, _InputIter2 __last2)
 1396.73 +{
 1396.74 +  while (__first1 != __last1 && __first2 != __last2) {
 1396.75 +    if (*__first1 < *__first2)
 1396.76 +      return -1;
 1396.77 +    if (*__first2 < *__first1)
 1396.78 +      return 1;
 1396.79 +    ++__first1;
 1396.80 +    ++__first2;
 1396.81 +  }
 1396.82 +  if (__first2 == __last2) {
 1396.83 +    return !(__first1 == __last1);
 1396.84 +  }
 1396.85 +  else {
 1396.86 +    return -1;
 1396.87 +  }
 1396.88 +}
 1396.89 +
 1396.90 +
 1396.91 +template <class _InputIter1, class _InputIter2>
 1396.92 +int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
 1396.93 +                                 _InputIter2 __first2, _InputIter2 __last2)
 1396.94 +{
 1396.95 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1396.96 +    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
 1396.97 +    return __lexicographical_compare_3way(__first1, __last1, __first2, __last2);
 1396.98 +}
 1396.99 +# endif
1396.100 +
1396.101 +template <class _RandomAccessIter, class _Tp>
1396.102 +_STLP_INLINE_LOOP _RandomAccessIter __find(_RandomAccessIter __first, _RandomAccessIter __last,
1396.103 +                                           const _Tp& __val,
1396.104 +                                           const random_access_iterator_tag &)
1396.105 +{
1396.106 +  _STLP_DIFFERENCE_TYPE(_RandomAccessIter) __trip_count = (__last - __first) >> 2;
1396.107 +
1396.108 +  for ( ; __trip_count > 0 ; --__trip_count) {
1396.109 +    if (*__first == __val) return __first;
1396.110 +    ++__first;
1396.111 +
1396.112 +    if (*__first == __val) return __first;
1396.113 +    ++__first;
1396.114 +
1396.115 +    if (*__first == __val) return __first;
1396.116 +    ++__first;
1396.117 +
1396.118 +    if (*__first == __val) return __first;
1396.119 +    ++__first;
1396.120 +  }
1396.121 +
1396.122 +  switch(__last - __first) {
1396.123 +  case 3:
1396.124 +    if (*__first == __val) return __first;
1396.125 +    ++__first;
1396.126 +  case 2:
1396.127 +    if (*__first == __val) return __first;
1396.128 +    ++__first;
1396.129 +  case 1:
1396.130 +    if (*__first == __val) return __first;
1396.131 +    ++__first;
1396.132 +  case 0:
1396.133 +  default:
1396.134 +    return __last;
1396.135 +  }
1396.136 +}
1396.137 +
1396.138 +template <class _RandomAccessIter, class _Predicate>
1396.139 +_STLP_INLINE_LOOP _RandomAccessIter __find_if(_RandomAccessIter __first, _RandomAccessIter __last,
1396.140 +                                              _Predicate __pred,
1396.141 +                                              const random_access_iterator_tag &)
1396.142 +{
1396.143 +  _STLP_DIFFERENCE_TYPE(_RandomAccessIter) __trip_count = (__last - __first) >> 2;
1396.144 +
1396.145 +  for ( ; __trip_count > 0 ; --__trip_count) {
1396.146 +    if (__pred(*__first)) return __first;
1396.147 +    ++__first;
1396.148 +
1396.149 +    if (__pred(*__first)) return __first;
1396.150 +    ++__first;
1396.151 +
1396.152 +    if (__pred(*__first)) return __first;
1396.153 +    ++__first;
1396.154 +
1396.155 +    if (__pred(*__first)) return __first;
1396.156 +    ++__first;
1396.157 +  }
1396.158 +
1396.159 +  switch(__last - __first) {
1396.160 +  case 3:
1396.161 +    if (__pred(*__first)) return __first;
1396.162 +    ++__first;
1396.163 +  case 2:
1396.164 +    if (__pred(*__first)) return __first;
1396.165 +    ++__first;
1396.166 +  case 1:
1396.167 +    if (__pred(*__first)) return __first;
1396.168 +    //    ++__first;
1396.169 +  case 0:
1396.170 +  default:
1396.171 +    return __last;
1396.172 +  }
1396.173 +}
1396.174 +
1396.175 +template <class _InputIter, class _Tp>
1396.176 +inline _InputIter __find(_InputIter __first, _InputIter __last,
1396.177 +			 const _Tp& __val,
1396.178 +			 const input_iterator_tag &)
1396.179 +{
1396.180 +  while (__first != __last && !(*__first == __val))
1396.181 +    ++__first;
1396.182 +  return __first;
1396.183 +}
1396.184 +
1396.185 +template <class _InputIter, class _Predicate>
1396.186 +inline _InputIter __find_if(_InputIter __first, _STLP_MPW_EXTRA_CONST _InputIter __last,
1396.187 +                            _Predicate __pred,
1396.188 +                            const input_iterator_tag &)
1396.189 +{
1396.190 +  while (__first != __last && !__pred(*__first))
1396.191 +    ++__first;
1396.192 +  return __first;
1396.193 +}
1396.194 +
1396.195 +template <class _InputIter, class _Predicate>
1396.196 +_InputIter find_if(_InputIter __first, _InputIter __last,
1396.197 +                   _Predicate __pred) {
1396.198 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1396.199 +    return __find_if(__first, __last, __pred, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1396.200 +}
1396.201 +
1396.202 +template <class _InputIter, class _Tp>
1396.203 +_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val)
1396.204 +{
1396.205 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1396.206 +    return __find(__first, __last, __val, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1396.207 +}
1396.208 +
1396.209 +template <class _ForwardIter1, class _ForwardIter2, class _BinaryPred>
1396.210 +_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
1396.211 +                     _ForwardIter2 __first2, _ForwardIter2 __last2,
1396.212 +                     _BinaryPred  __predicate) 
1396.213 +{
1396.214 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1396.215 +    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1396.216 +    // Test for empty ranges
1396.217 +    if (__first1 == __last1 || __first2 == __last2)
1396.218 +      return __first1;
1396.219 +
1396.220 +  // Test for a pattern of length 1.
1396.221 +  _ForwardIter2 __tmp(__first2);
1396.222 +  ++__tmp;
1396.223 +  if (__tmp == __last2) {
1396.224 +    while (__first1 != __last1 && !__predicate(*__first1, *__first2))
1396.225 +      ++__first1;
1396.226 +    return __first1;    
1396.227 +  }
1396.228 +  
1396.229 +  // General case.
1396.230 +
1396.231 +  _ForwardIter2 __p1, __p;
1396.232 +
1396.233 +  __p1 = __first2; ++__p1;
1396.234 +
1396.235 +  //  _ForwardIter1 __current = __first1;
1396.236 +
1396.237 +  while (__first1 != __last1) {
1396.238 +    while (__first1 != __last1) {
1396.239 +      if (__predicate(*__first1, *__first2))
1396.240 +        break;
1396.241 +      ++__first1;
1396.242 +    }
1396.243 +    while (__first1 != __last1 && !__predicate(*__first1, *__first2))
1396.244 +      ++__first1;
1396.245 +    if (__first1 == __last1)
1396.246 +      return __last1;
1396.247 +
1396.248 +    __p = __p1;
1396.249 +    _ForwardIter1 __current = __first1; 
1396.250 +    if (++__current == __last1) return __last1;
1396.251 +
1396.252 +    while (__predicate(*__current, *__p)) {
1396.253 +      if (++__p == __last2)
1396.254 +        return __first1;
1396.255 +      if (++__current == __last1)
1396.256 +        return __last1;
1396.257 +    }
1396.258 +
1396.259 +    ++__first1;
1396.260 +  }
1396.261 +  return __first1;
1396.262 +}
1396.263 +
1396.264 +// find_first_of, with and without an explicitly supplied comparison function.
1396.265 +
1396.266 +template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1396.267 +_InputIter __find_first_of(_InputIter __first1, _InputIter __last1,
1396.268 +                           _ForwardIter __first2, _ForwardIter __last2,
1396.269 +                           _BinaryPredicate __comp) {
1396.270 +  for ( ; __first1 != __last1; ++__first1) 
1396.271 +    for (_ForwardIter __iter = __first2; __iter != __last2; ++__iter)
1396.272 +      if (__comp(*__first1, *__iter))
1396.273 +        return __first1;
1396.274 +  return __last1;
1396.275 +}
1396.276 +
1396.277 +
1396.278 +// find_end, with and without an explicitly supplied comparison function.
1396.279 +// Search [first2, last2) as a subsequence in [first1, last1), and return
1396.280 +// the *last* possible match.  Note that find_end for bidirectional iterators
1396.281 +// is much faster than for forward iterators.
1396.282 +
1396.283 +// find_end for forward iterators. 
1396.284 +
1396.285 +template <class _ForwardIter1, class _ForwardIter2,
1396.286 +  class _BinaryPredicate>
1396.287 +_ForwardIter1 __find_end(_ForwardIter1 __first1, _ForwardIter1 __last1,
1396.288 +                         _ForwardIter2 __first2, _ForwardIter2 __last2,
1396.289 +                         const forward_iterator_tag &, const forward_iterator_tag &,
1396.290 +                         _BinaryPredicate __comp)
1396.291 +{
1396.292 +  if (__first2 == __last2)
1396.293 +    return __last1;
1396.294 +  else {
1396.295 +    _ForwardIter1 __result = __last1;
1396.296 +    while (1) {
1396.297 +      _ForwardIter1 __new_result
1396.298 +        = search(__first1, __last1, __first2, __last2, __comp);
1396.299 +      if (__new_result == __last1)
1396.300 +        return __result;
1396.301 +      else {
1396.302 +        __result = __new_result;
1396.303 +        __first1 = __new_result;
1396.304 +        ++__first1;
1396.305 +      }
1396.306 +    }
1396.307 +  }
1396.308 +}
1396.309 +
1396.310 +// find_end for bidirectional iterators.  Requires partial specialization.
1396.311 +#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1396.312 +
1396.313 +#if ! defined (_STLP_INTERNAL_ITERATOR_H)
1396.314 +_STLP_END_NAMESPACE
1396.315 +# include <stl/_iterator.h>
1396.316 +_STLP_BEGIN_NAMESPACE 
1396.317 +#endif
1396.318 +
1396.319 +template <class _BidirectionalIter1, class _BidirectionalIter2,
1396.320 +  class _BinaryPredicate>
1396.321 +_BidirectionalIter1
1396.322 +__find_end(_BidirectionalIter1 __first1, _BidirectionalIter1 __last1,
1396.323 +           _BidirectionalIter2 __first2, _BidirectionalIter2 __last2,
1396.324 +           const bidirectional_iterator_tag &, const bidirectional_iterator_tag &, 
1396.325 +           _BinaryPredicate __comp)
1396.326 +{
1396.327 +  typedef reverse_iterator<_BidirectionalIter1> _RevIter1;
1396.328 +  typedef reverse_iterator<_BidirectionalIter2> _RevIter2;
1396.329 +
1396.330 +  _RevIter1 __rlast1(__first1);
1396.331 +  _RevIter2 __rlast2(__first2);
1396.332 +  _RevIter1 __rresult = search(_RevIter1(__last1), __rlast1,
1396.333 +                               _RevIter2(__last2), __rlast2,
1396.334 +                               __comp);
1396.335 +
1396.336 +  if (__rresult == __rlast1)
1396.337 +    return __last1;
1396.338 +  else {
1396.339 +    _BidirectionalIter1 __result = __rresult.base();
1396.340 +    advance(__result, -distance(__first2, __last2));
1396.341 +    return __result;
1396.342 +  }
1396.343 +}
1396.344 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1396.345 +
1396.346 +template <class _ForwardIter1, class _ForwardIter2, 
1396.347 +  class _BinaryPredicate>
1396.348 +_ForwardIter1 
1396.349 +find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1396.350 +         _ForwardIter2 __first2, _ForwardIter2 __last2,
1396.351 +         _BinaryPredicate __comp)
1396.352 +{
1396.353 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1396.354 +    _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1396.355 +    return __find_end(__first1, __last1, __first2, __last2,
1396.356 +# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1396.357 +		      _STLP_ITERATOR_CATEGORY(__first1, _ForwardIter1),
1396.358 +		      _STLP_ITERATOR_CATEGORY(__first2, _ForwardIter2),
1396.359 +# else
1396.360 +		      forward_iterator_tag(),
1396.361 +		      forward_iterator_tag(),
1396.362 +# endif
1396.363 +		      __comp);
1396.364 +}
1396.365 +
1396.366 +template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1396.367 +_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last,
1396.368 +			   const _Tp& __val, _Compare __comp, _Distance*)
1396.369 +{
1396.370 +  _Distance __len = distance(__first, __last);
1396.371 +  _Distance __half;
1396.372 +  _ForwardIter __middle;
1396.373 +
1396.374 +  while (__len > 0) {
1396.375 +    __half = __len >> 1;
1396.376 +    __middle = __first;
1396.377 +    advance(__middle, __half);
1396.378 +    if (__comp(*__middle, __val)) {
1396.379 +      __first = __middle;
1396.380 +      ++__first;
1396.381 +      __len = __len - __half - 1;
1396.382 +    }
1396.383 +    else
1396.384 +      __len = __half;
1396.385 +  }
1396.386 +  return __first;
1396.387 +}
1396.388 +
1396.389 +_STLP_END_NAMESPACE
1396.390 +
1396.391 +#endif /* _STLP_ALGOBASE_C */
1396.392 +
1396.393 +// Local Variables:
1396.394 +// mode:C++
1396.395 +// End:
  1397.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1397.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_algobase.h	Wed Mar 31 12:27:01 2010 +0100
  1397.3 @@ -0,0 +1,583 @@
  1397.4 +/*
  1397.5 + *
  1397.6 + * Copyright (c) 1994
  1397.7 + * Hewlett-Packard Company
  1397.8 + *
  1397.9 + * Copyright (c) 1996,1997
 1397.10 + * Silicon Graphics Computer Systems, Inc.
 1397.11 + *
 1397.12 + * Copyright (c) 1997
 1397.13 + * Moscow Center for SPARC Technology
 1397.14 + *
 1397.15 + * Copyright (c) 1999 
 1397.16 + * Boris Fomitchev
 1397.17 + *
 1397.18 + * This material is provided "as is", with absolutely no warranty expressed
 1397.19 + * or implied. Any use is at your own risk.
 1397.20 + *
 1397.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1397.22 + * without fee, provided the above notices are retained on all copies.
 1397.23 + * Permission to modify the code and to distribute modified code is granted,
 1397.24 + * provided the above notices are retained, and a notice that the code was
 1397.25 + * modified is included with the above copyright notice.
 1397.26 + *
 1397.27 + */
 1397.28 +
 1397.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1397.30 + *   You should not attempt to use it directly.
 1397.31 + */
 1397.32 +
 1397.33 +
 1397.34 +#ifndef _STLP_INTERNAL_ALGOBASE_H
 1397.35 +#define _STLP_INTERNAL_ALGOBASE_H
 1397.36 +
 1397.37 +# if ! defined (_STLP_CSTDDEF)
 1397.38 +#  include <cstddef>
 1397.39 +# endif
 1397.40 +
 1397.41 +#ifndef _STLP_CSTRING
 1397.42 +# include <cstring>
 1397.43 +#endif
 1397.44 +
 1397.45 +#ifndef _STLP_CLIMITS
 1397.46 +# include <climits>
 1397.47 +#endif
 1397.48 +
 1397.49 +# if ! defined (_STLP_CSTDLIB)
 1397.50 +#  include <cstdlib>
 1397.51 +# endif
 1397.52 +
 1397.53 +# ifndef _STLP_INTERNAL_PAIR_H
 1397.54 +#  include <stl/_pair.h>
 1397.55 +# endif
 1397.56 +
 1397.57 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1397.58 +# include <stl/_iterator_base.h>
 1397.59 +#endif
 1397.60 +
 1397.61 +_STLP_BEGIN_NAMESPACE
 1397.62 +// swap and iter_swap
 1397.63 +template <class _Tp>
 1397.64 +inline void swap(_Tp& __a, _Tp& __b) {
 1397.65 +  _Tp __tmp = __a;
 1397.66 +  __a = __b;
 1397.67 +  __b = __tmp;
 1397.68 +}
 1397.69 +
 1397.70 +template <class _ForwardIter1, class _ForwardIter2>
 1397.71 +inline void iter_swap(_ForwardIter1 __i1, _ForwardIter2 __i2) {
 1397.72 +  swap(*__i1, *__i2);
 1397.73 +}
 1397.74 +
 1397.75 +//--------------------------------------------------
 1397.76 +// min and max
 1397.77 +
 1397.78 +# if !defined (__BORLANDC__) || defined (_STLP_USE_OWN_NAMESPACE)
 1397.79 +template <class _Tp>
 1397.80 +inline const _Tp& (min)(const _Tp& __a, const _Tp& __b) { return __b < __a ? __b : __a; }
 1397.81 +template <class _Tp>
 1397.82 +inline const _Tp& (max)(const _Tp& __a, const _Tp& __b) {  return  __a < __b ? __b : __a; }
 1397.83 +#endif /* __BORLANDC__ */
 1397.84 +
 1397.85 +# if defined (__BORLANDC__) && ( __BORLANDC__ < 0x530 || defined (_STLP_USE_OWN_NAMESPACE))
 1397.86 +inline unsigned long (min) (unsigned long __a, unsigned long __b) { return __b < __a ? __b : __a; }
 1397.87 +inline unsigned long (max) (unsigned long __a, unsigned long __b) {  return  __a < __b ? __b : __a; }
 1397.88 +# endif
 1397.89 +
 1397.90 +template <class _Tp, class _Compare>
 1397.91 +inline const _Tp& (min)(const _Tp& __a, const _Tp& __b, _Compare __comp) { 
 1397.92 +  return __comp(__b, __a) ? __b : __a;
 1397.93 +}
 1397.94 +
 1397.95 +template <class _Tp, class _Compare>
 1397.96 +inline const _Tp& (max)(const _Tp& __a, const _Tp& __b, _Compare __comp) {
 1397.97 +  return __comp(__a, __b) ? __b : __a;
 1397.98 +}
 1397.99 +
1397.100 +//--------------------------------------------------
1397.101 +// copy
1397.102 +
1397.103 +// All of these auxiliary functions serve two purposes.  (1) Replace
1397.104 +// calls to copy with memmove whenever possible.  (Memmove, not memcpy,
1397.105 +// because the input and output ranges are permitted to overlap.)
1397.106 +// (2) If we're using random access iterators, then write the loop as
1397.107 +// a for loop with an explicit count.
1397.108 +
1397.109 +template <class _InputIter, class _OutputIter, class _Distance>
1397.110 +inline _OutputIter __copy(_InputIter __first, _InputIter __last,
1397.111 +                          _OutputIter __result,
1397.112 +                          const input_iterator_tag &, _Distance*) {
1397.113 +  for ( ; __first != __last; ++__result, ++__first)
1397.114 +    *__result = *__first;
1397.115 +  return __result;
1397.116 +}
1397.117 +
1397.118 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 
1397.119 +template <class _InputIter, class _OutputIter, class _Distance>
1397.120 +inline _OutputIter __copy(_InputIter __first, _InputIter __last,
1397.121 +			  _OutputIter __result, const forward_iterator_tag &, _Distance* ) {
1397.122 +  for ( ; __first != __last; ++__result, ++__first)
1397.123 +    *__result = *__first;
1397.124 +  return __result;
1397.125 +}
1397.126 +
1397.127 +
1397.128 +template <class _InputIter, class _OutputIter, class _Distance>
1397.129 +inline _OutputIter __copy(_InputIter __first, _InputIter __last,
1397.130 +			  _OutputIter __result, const bidirectional_iterator_tag &, _Distance* __dis) {
1397.131 +  for ( ; __first != __last; ++__result, ++__first)
1397.132 +    *__result = *__first;
1397.133 +  return __result;
1397.134 +}
1397.135 +# endif 
1397.136 +
1397.137 +template <class _RandomAccessIter, class _OutputIter, class _Distance>
1397.138 +inline _OutputIter
1397.139 +__copy(_RandomAccessIter __first, _RandomAccessIter __last,
1397.140 +       _OutputIter __result, const random_access_iterator_tag &, _Distance*) {
1397.141 +  for (_Distance __n = __last - __first; __n > 0; --__n) {
1397.142 +    *__result = *__first;
1397.143 +    ++__first;
1397.144 +    ++__result;
1397.145 +  }
1397.146 +  return __result;
1397.147 +}
1397.148 +
1397.149 +inline void*
1397.150 +__copy_trivial(const void* __first, const void* __last, void* __result) {
1397.151 +  return (__last == __first) ? __result : 
1397.152 +    ((char*)memmove(__result, __first, ((const char*)__last - (const char*)__first))) + 
1397.153 +    ((const char*)__last - (const char*)__first);
1397.154 +}
1397.155 +
1397.156 +//--------------------------------------------------
1397.157 +// copy_backward auxiliary functions
1397.158 +
1397.159 +template <class _BidirectionalIter1, class _BidirectionalIter2, 
1397.160 +          class _Distance>
1397.161 +inline _BidirectionalIter2 __copy_backward(_BidirectionalIter1 __first, 
1397.162 +                                           _BidirectionalIter1 __last, 
1397.163 +                                           _BidirectionalIter2 __result,
1397.164 +                                           const bidirectional_iterator_tag &,
1397.165 +                                           _Distance*) 
1397.166 +{
1397.167 +  while (__first != __last)
1397.168 +    *--__result = *--__last;
1397.169 +  return __result;
1397.170 +}
1397.171 +
1397.172 +template <class _RandomAccessIter, class _BidirectionalIter, class _Distance>
1397.173 +inline _BidirectionalIter __copy_backward(_RandomAccessIter __first, 
1397.174 +                                          _RandomAccessIter __last, 
1397.175 +                                          _BidirectionalIter __result,
1397.176 +                                          const random_access_iterator_tag &,
1397.177 +                                          _Distance*)
1397.178 +{
1397.179 +  for (_Distance __n = __last - __first; __n > 0; --__n)
1397.180 +    *--__result = *--__last;
1397.181 +  return __result;
1397.182 +}
1397.183 +
1397.184 +inline void*
1397.185 +__copy_trivial_backward(const void* __first, const void* __last, void* __result) {
1397.186 +  const ptrdiff_t _Num = (const char*)__last - (const char*)__first;
1397.187 +  return (_Num > 0) ? memmove((char*)__result - _Num, __first, _Num) : __result ;
1397.188 +}
1397.189 +
1397.190 +template <class _InputIter, class _OutputIter>
1397.191 +inline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1397.192 +  return __copy(__first, __last, __result, 
1397.193 +                _STLP_ITERATOR_CATEGORY(__first, _InputIter), 
1397.194 +                _STLP_DISTANCE_TYPE(__first, _InputIter));
1397.195 +}
1397.196 +template <class _InputIter, class _OutputIter>
1397.197 +inline _OutputIter __copy_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1397.198 +// we know they all pointers, so this cast is OK 
1397.199 +  //  return (_OutputIter)__copy_trivial(&(*__first), &(*__last), &(*__result));
1397.200 +  return (_OutputIter)__copy_trivial(__first, __last, __result);
1397.201 +}
1397.202 +
1397.203 +template <class _InputIter, class _OutputIter>
1397.204 +inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1397.205 +  return __copy_ptrs(__first, __last, __result, 
1397.206 +                     _IsOKToMemCpy(_STLP_VALUE_TYPE(__first, _InputIter), 
1397.207 +                                   _STLP_VALUE_TYPE(__result, _OutputIter))._Ret());
1397.208 +}
1397.209 +
1397.210 +template <class _InputIter, class _OutputIter>
1397.211 +inline _OutputIter __copy_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1397.212 +  return __copy(__first, __last, __result, 
1397.213 +		_STLP_ITERATOR_CATEGORY(__first, _InputIter), _STLP_DISTANCE_TYPE(__first, _InputIter));
1397.214 +}
1397.215 +
1397.216 +template <class _InputIter, class _OutputIter>
1397.217 +inline _OutputIter copy(_InputIter __first, _InputIter __last, _OutputIter __result) {
1397.218 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1397.219 +    return __copy_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter> :: _Ret());
1397.220 +}
1397.221 +
1397.222 +template <class _InputIter, class _OutputIter>
1397.223 +inline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1397.224 +  return __copy_backward(__first, __last, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter), _STLP_DISTANCE_TYPE(__first, _InputIter));
1397.225 +}
1397.226 +template <class _InputIter, class _OutputIter>
1397.227 +inline _OutputIter __copy_backward_ptrs(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1397.228 +  return (_OutputIter)__copy_trivial_backward(__first, __last, __result);  
1397.229 +}
1397.230 +
1397.231 +template <class _InputIter, class _OutputIter>
1397.232 +inline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __false_type&) {
1397.233 +  return __copy_backward(__first, __last, __result, _STLP_ITERATOR_CATEGORY(__first,_InputIter), _STLP_DISTANCE_TYPE(__first, _InputIter));
1397.234 +}
1397.235 +
1397.236 +template <class _InputIter, class _OutputIter>
1397.237 +inline _OutputIter __copy_backward_aux(_InputIter __first, _InputIter __last, _OutputIter __result, const __true_type&) {
1397.238 +  return __copy_backward_ptrs(__first, __last, __result,  
1397.239 +                              _IsOKToMemCpy(_STLP_VALUE_TYPE(__first, _InputIter), 
1397.240 +                                            _STLP_VALUE_TYPE(__result, _OutputIter))._Ret());
1397.241 +}
1397.242 +
1397.243 +template <class _InputIter, class _OutputIter>
1397.244 +inline _OutputIter copy_backward(_InputIter __first, _InputIter __last, _OutputIter __result) {
1397.245 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1397.246 +    return __copy_backward_aux(__first, __last, __result, _BothPtrType< _InputIter, _OutputIter> :: _Ret() );
1397.247 +}
1397.248 +
1397.249 +#if ! defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined ( _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS )
1397.250 +#define _STLP_DECLARE_COPY_TRIVIAL(_Tp)                                \
1397.251 +inline _Tp* copy(const _Tp* __first, const _Tp* __last, _Tp* __result) \
1397.252 +{ return (_Tp*)__copy_trivial(__first, __last, __result); } \
1397.253 +inline _Tp* copy_backward(const _Tp* __first, const _Tp* __last, _Tp* __result) \
1397.254 +{ return (_Tp*)__copy_trivial_backward(__first, __last, __result); }
1397.255 +
1397.256 +_STLP_DECLARE_COPY_TRIVIAL(char)
1397.257 +# ifndef _STLP_NO_SIGNED_BUILTINS
1397.258 +_STLP_DECLARE_COPY_TRIVIAL(signed char)
1397.259 +# endif
1397.260 +_STLP_DECLARE_COPY_TRIVIAL(unsigned char)
1397.261 +_STLP_DECLARE_COPY_TRIVIAL(short)
1397.262 +_STLP_DECLARE_COPY_TRIVIAL(unsigned short)
1397.263 +_STLP_DECLARE_COPY_TRIVIAL(int)
1397.264 +_STLP_DECLARE_COPY_TRIVIAL(unsigned int)
1397.265 +_STLP_DECLARE_COPY_TRIVIAL(long)
1397.266 +_STLP_DECLARE_COPY_TRIVIAL(unsigned long)
1397.267 +#if !defined(_STLP_NO_WCHAR_T) && !defined (_STLP_WCHAR_T_IS_USHORT) 
1397.268 +_STLP_DECLARE_COPY_TRIVIAL(wchar_t)
1397.269 +#endif
1397.270 +#ifdef _STLP_LONG_LONG
1397.271 +_STLP_DECLARE_COPY_TRIVIAL(long long)
1397.272 +_STLP_DECLARE_COPY_TRIVIAL(unsigned long long)
1397.273 +#endif 
1397.274 +_STLP_DECLARE_COPY_TRIVIAL(float)
1397.275 +_STLP_DECLARE_COPY_TRIVIAL(double)
1397.276 +# ifndef _STLP_NO_LONG_DOUBLE
1397.277 +_STLP_DECLARE_COPY_TRIVIAL(long double)
1397.278 +# endif
1397.279 +#undef _STLP_DECLARE_COPY_TRIVIAL
1397.280 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1397.281 +
1397.282 +//--------------------------------------------------
1397.283 +// copy_n (not part of the C++ standard)
1397.284 +
1397.285 +template <class _InputIter, class _Size, class _OutputIter>
1397.286 +_STLP_INLINE_LOOP 
1397.287 +pair<_InputIter, _OutputIter> __copy_n(_InputIter __first, _Size __count,
1397.288 +                                       _OutputIter __result,
1397.289 +                                       const input_iterator_tag &) {
1397.290 +  for ( ; __count > 0; --__count) {
1397.291 +    *__result = *__first;
1397.292 +    ++__first;
1397.293 +    ++__result;
1397.294 +  }
1397.295 +  return pair<_InputIter, _OutputIter>(__first, __result);
1397.296 +}
1397.297 +
1397.298 +template <class _RAIter, class _Size, class _OutputIter>
1397.299 +inline pair<_RAIter, _OutputIter>
1397.300 +__copy_n(_RAIter __first, _Size __count,
1397.301 +         _OutputIter __result,
1397.302 +         const random_access_iterator_tag &) {
1397.303 +  _RAIter __last = __first + __count;
1397.304 +  return pair<_RAIter, _OutputIter>(__last, copy(__first, __last, __result));
1397.305 +}
1397.306 +
1397.307 +template <class _InputIter, class _Size, class _OutputIter>
1397.308 +inline pair<_InputIter, _OutputIter>
1397.309 +__copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
1397.310 +  _STLP_FIX_LITERAL_BUG(__first)
1397.311 +  return __copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1397.312 +}
1397.313 +
1397.314 +template <class _InputIter, class _Size, class _OutputIter>
1397.315 +inline pair<_InputIter, _OutputIter>
1397.316 +copy_n(_InputIter __first, _Size __count, _OutputIter __result) {
1397.317 +  _STLP_FIX_LITERAL_BUG(__first)
1397.318 +  return __copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1397.319 +}
1397.320 +
1397.321 +//--------------------------------------------------
1397.322 +// fill and fill_n
1397.323 +
1397.324 +
1397.325 +template <class _ForwardIter, class _Tp>
1397.326 +_STLP_INLINE_LOOP
1397.327 +void fill(_ForwardIter __first, _ForwardIter __last, const _Tp& __val) {
1397.328 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1397.329 +  for ( ; __first != __last; ++__first)
1397.330 +    *__first = __val;
1397.331 +}
1397.332 +
1397.333 +template <class _OutputIter, class _Size, class _Tp>
1397.334 +_STLP_INLINE_LOOP
1397.335 +_OutputIter fill_n(_OutputIter __first, _Size __n, const _Tp& __val) {
1397.336 +  _STLP_FIX_LITERAL_BUG(__first)
1397.337 +  for ( ; __n > 0; --__n, ++__first)
1397.338 +    *__first = __val;
1397.339 +  return __first;
1397.340 +}
1397.341 +
1397.342 +
1397.343 +// Specialization: for one-byte types we can use memset.
1397.344 +
1397.345 +inline void fill(unsigned char* __first, unsigned char* __last,
1397.346 +                 const unsigned char& __val) {
1397.347 +  unsigned char __tmp = __val;
1397.348 +  memset(__first, __tmp, __last - __first);
1397.349 +}
1397.350 +# ifndef _STLP_NO_SIGNED_BUILTINS
1397.351 +inline void fill(signed char* __first, signed char* __last,
1397.352 +                 const signed char& __val) {
1397.353 +  signed char __tmp = __val;
1397.354 +  memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first);
1397.355 +}
1397.356 +# endif
1397.357 +inline void fill(char* __first, char* __last, const char& __val) {
1397.358 +  char __tmp = __val;
1397.359 +  memset(__first, __STATIC_CAST(unsigned char,__tmp), __last - __first);
1397.360 +}
1397.361 +
1397.362 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1397.363 +
1397.364 +template <class _Size>
1397.365 +inline unsigned char* fill_n(unsigned char* __first, _Size __n,
1397.366 +                             const unsigned char& __val) {
1397.367 +  fill(__first, __first + __n, __val);
1397.368 +  return __first + __n;
1397.369 +}
1397.370 +
1397.371 +template <class _Size>
1397.372 +inline signed char* fill_n(char* __first, _Size __n,
1397.373 +                           const signed char& __val) {
1397.374 +  fill(__first, __first + __n, __val);
1397.375 +  return __first + __n;
1397.376 +}
1397.377 +
1397.378 +template <class _Size>
1397.379 +inline char* fill_n(char* __first, _Size __n, const char& __val) {
1397.380 +  fill(__first, __first + __n, __val);
1397.381 +  return __first + __n;
1397.382 +}
1397.383 +
1397.384 +#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1397.385 +
1397.386 +
1397.387 +//--------------------------------------------------
1397.388 +// equal and mismatch
1397.389 +
1397.390 +template <class _InputIter1, class _InputIter2>
1397.391 +_STLP_INLINE_LOOP
1397.392 +pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
1397.393 +                                        _InputIter1 __last1,
1397.394 +                                        _InputIter2 __first2) {
1397.395 +  _STLP_FIX_LITERAL_BUG(__first2)
1397.396 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1397.397 +  while (__first1 != __last1 && *__first1 == *__first2) {
1397.398 +    ++__first1;
1397.399 +    ++__first2;
1397.400 +  }
1397.401 +  return pair<_InputIter1, _InputIter2>(__first1, __first2);
1397.402 +}
1397.403 +
1397.404 +template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
1397.405 +_STLP_INLINE_LOOP
1397.406 +pair<_InputIter1, _InputIter2> mismatch(_InputIter1 __first1,
1397.407 +                                        _InputIter1 __last1,
1397.408 +                                        _InputIter2 __first2,
1397.409 +                                        _BinaryPredicate __binary_pred) {
1397.410 +  _STLP_FIX_LITERAL_BUG(__first2)
1397.411 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1397.412 +  while (__first1 != __last1 && __binary_pred(*__first1, *__first2)) {
1397.413 +    ++__first1;
1397.414 +    ++__first2;
1397.415 +  }
1397.416 +  return pair<_InputIter1, _InputIter2>(__first1, __first2);
1397.417 +}
1397.418 +
1397.419 +template <class _InputIter1, class _InputIter2>
1397.420 +_STLP_INLINE_LOOP
1397.421 +bool equal(_InputIter1 __first1, _InputIter1 __last1,
1397.422 +                  _InputIter2 __first2) {
1397.423 +  _STLP_FIX_LITERAL_BUG(__first1) _STLP_FIX_LITERAL_BUG(__last1)  _STLP_FIX_LITERAL_BUG(__first2)
1397.424 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1397.425 +  for ( ; __first1 != __last1; ++__first1, ++__first2)
1397.426 +    if (!(*__first1 == *__first2))
1397.427 +      return false;
1397.428 +  return true;
1397.429 +}
1397.430 +
1397.431 +template <class _InputIter1, class _InputIter2, class _BinaryPredicate>
1397.432 +_STLP_INLINE_LOOP
1397.433 +bool equal(_InputIter1 __first1, _InputIter1 __last1,
1397.434 +                  _InputIter2 __first2, _BinaryPredicate __binary_pred) {
1397.435 +  _STLP_FIX_LITERAL_BUG(__first2)
1397.436 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1397.437 +  for ( ; __first1 != __last1; ++__first1, ++__first2)
1397.438 +    if (!__binary_pred(*__first1, *__first2))
1397.439 +      return false;
1397.440 +  return true;
1397.441 +}
1397.442 +
1397.443 +//--------------------------------------------------
1397.444 +// lexicographical_compare and lexicographical_compare_3way.
1397.445 +// (the latter is not part of the C++ standard.)
1397.446 +
1397.447 +template <class _InputIter1, class _InputIter2>
1397.448 +bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
1397.449 +                             _InputIter2 __first2, _InputIter2 __last2);
1397.450 +
1397.451 +template <class _InputIter1, class _InputIter2, class _Compare>
1397.452 +bool lexicographical_compare(_InputIter1 __first1, _InputIter1 __last1,
1397.453 +                             _InputIter2 __first2, _InputIter2 __last2,
1397.454 +                             _Compare __comp);
1397.455 +
1397.456 +inline bool 
1397.457 +lexicographical_compare(const unsigned char* __first1,
1397.458 +                        const unsigned char* __last1,
1397.459 +                        const unsigned char* __first2,
1397.460 +                        const unsigned char* __last2)
1397.461 +{
1397.462 +  const size_t __len1 = __last1 - __first1;
1397.463 +  const size_t __len2 = __last2 - __first2;
1397.464 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
1397.465 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1397.466 +
1397.467 +  const int __result = memcmp(__first1, __first2, (min) (__len1, __len2));
1397.468 +  return __result != 0 ? (__result < 0) : (__len1 < __len2);
1397.469 +}
1397.470 +
1397.471 +
1397.472 +# if !(CHAR_MAX == SCHAR_MAX)
1397.473 +inline bool lexicographical_compare(const char* __first1, const char* __last1,
1397.474 +                                    const char* __first2, const char* __last2)
1397.475 +{
1397.476 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1)) 
1397.477 +  _STLP_DEBUG_CHECK(__check_range(__first2, __last2))
1397.478 +
1397.479 +  return lexicographical_compare((const unsigned char*) __first1,
1397.480 +                                 (const unsigned char*) __last1,
1397.481 +                                 (const unsigned char*) __first2,
1397.482 +                                 (const unsigned char*) __last2);
1397.483 +}
1397.484 +#endif /* CHAR_MAX == SCHAR_MAX */
1397.485 +
1397.486 +template <class _InputIter1, class _InputIter2>
1397.487 +int __lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
1397.488 +                                   _InputIter2 __first2, _InputIter2 __last2);
1397.489 +
1397.490 +inline int
1397.491 +__lexicographical_compare_3way(const unsigned char* __first1,
1397.492 +                               const unsigned char* __last1,
1397.493 +                               const unsigned char* __first2,
1397.494 +                               const unsigned char* __last2)
1397.495 +{
1397.496 +  const ptrdiff_t __len1 = __last1 - __first1;
1397.497 +  const ptrdiff_t __len2 = __last2 - __first2;
1397.498 +  const int __result = memcmp(__first1, __first2, (min) (__len1, __len2));
1397.499 +  return __result != 0 ? __result 
1397.500 +                       : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1));
1397.501 +}
1397.502 +
1397.503 +
1397.504 +# if !(CHAR_MAX == SCHAR_MAX)
1397.505 +inline int 
1397.506 +__lexicographical_compare_3way(const char* __first1, const char* __last1,
1397.507 +                               const char* __first2, const char* __last2)
1397.508 +{
1397.509 +  return __lexicographical_compare_3way((const unsigned char*) __first1,
1397.510 +                                        (const unsigned char*) __last1,
1397.511 +                                        (const unsigned char*) __first2,
1397.512 +                                        (const unsigned char*) __last2);
1397.513 +}
1397.514 +# endif
1397.515 +
1397.516 +# ifndef _STLP_NO_EXTENSIONS
1397.517 +
1397.518 +template <class _InputIter1, class _InputIter2>
1397.519 +int lexicographical_compare_3way(_InputIter1 __first1, _InputIter1 __last1,
1397.520 +                                 _InputIter2 __first2, _InputIter2 __last2);
1397.521 +
1397.522 +# endif /* EXTENSIONS */
1397.523 +
1397.524 +// count
1397.525 +template <class _InputIter, class _Tp>
1397.526 +_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_InputIter)
1397.527 +count(_InputIter __first, _InputIter __last, const _Tp& __val) {
1397.528 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1397.529 +  _STLP_DIFFERENCE_TYPE(_InputIter) __n = 0;
1397.530 +  for ( ; __first != __last; ++__first)
1397.531 +    if (*__first == __val)
1397.532 +      ++__n;
1397.533 +  return __n;
1397.534 +}
1397.535 +
1397.536 +// find and find_if. Note find may be expressed in terms of find_if if appropriate binder was available.
1397.537 +template <class _InputIter, class _Tp>
1397.538 +_InputIter find(_InputIter __first, _InputIter __last, const _Tp& __val);
1397.539 +template <class _InputIter, class _Predicate>
1397.540 +_InputIter find_if(_InputIter __first, _InputIter __last, _Predicate __pred);
1397.541 +
1397.542 +// search.
1397.543 +template <class _ForwardIter1, class _ForwardIter2, class _BinaryPred>
1397.544 +_ForwardIter1 search(_ForwardIter1 __first1, _ForwardIter1 __last1,
1397.545 +                     _ForwardIter2 __first2, _ForwardIter2 __last2, _BinaryPred  __predicate);
1397.546 +
1397.547 +// find_first_of
1397.548 +template <class _InputIter, class _ForwardIter, class _BinaryPredicate>
1397.549 +_InputIter __find_first_of(_InputIter __first1, _InputIter __last1,
1397.550 +                           _ForwardIter __first2, _ForwardIter __last2,
1397.551 +                           _BinaryPredicate __comp);
1397.552 +
1397.553 +template <class _ForwardIter1, class _ForwardIter2, 
1397.554 +          class _BinaryPredicate>
1397.555 +_ForwardIter1 
1397.556 +find_end(_ForwardIter1 __first1, _ForwardIter1 __last1, 
1397.557 +         _ForwardIter2 __first2, _ForwardIter2 __last2,
1397.558 +         _BinaryPredicate __comp);
1397.559 +
1397.560 +// replace
1397.561 +template <class _ForwardIter, class _Tp>
1397.562 +_STLP_INLINE_LOOP void 
1397.563 +replace(_ForwardIter __first, _ForwardIter __last,
1397.564 +        const _Tp& __old_value, const _Tp& __new_value) {
1397.565 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1397.566 +  for ( ; __first != __last; ++__first)
1397.567 +    if (*__first == __old_value)
1397.568 +      *__first = __new_value;
1397.569 +}
1397.570 +
1397.571 +template <class _ForwardIter, class _Tp, class _Compare, class _Distance>
1397.572 +_ForwardIter __lower_bound(_ForwardIter __first, _ForwardIter __last,
1397.573 +                              const _Tp& __val, _Compare __comp, _Distance*);
1397.574 +
1397.575 +_STLP_END_NAMESPACE
1397.576 +
1397.577 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1397.578 +#  include <stl/_algobase.c>
1397.579 +# endif
1397.580 +
1397.581 +#endif /* _STLP_INTERNAL_ALGOBASE_H */
1397.582 +
1397.583 +// Local Variables:
1397.584 +// mode:C++
1397.585 +// End:
1397.586 +
  1398.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1398.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_alloc.c	Wed Mar 31 12:27:01 2010 +0100
  1398.3 @@ -0,0 +1,378 @@
  1398.4 +/*
  1398.5 + *
  1398.6 + * Copyright (c) 1996,1997
  1398.7 + * Silicon Graphics Computer Systems, Inc.
  1398.8 + *
  1398.9 + * Copyright (c) 1997
 1398.10 + * Moscow Center for SPARC Technology
 1398.11 + *
 1398.12 + * Copyright (c) 1999 
 1398.13 + * Boris Fomitchev
 1398.14 + *
 1398.15 + * This material is provided "as is", with absolutely no warranty expressed
 1398.16 + * or implied. Any use is at your own risk.
 1398.17 + *
 1398.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1398.19 + * without fee, provided the above notices are retained on all copies.
 1398.20 + * Permission to modify the code and to distribute modified code is granted,
 1398.21 + * provided the above notices are retained, and a notice that the code was
 1398.22 + * modified is included with the above copyright notice.
 1398.23 + *
 1398.24 + */
 1398.25 +#ifndef _STLP_ALLOC_C
 1398.26 +#define _STLP_ALLOC_C
 1398.27 +
 1398.28 +#ifdef __WATCOMC__
 1398.29 +#pragma warning 13 9
 1398.30 +#pragma warning 367 9
 1398.31 +#pragma warning 368 9
 1398.32 +#endif
 1398.33 +
 1398.34 +#ifndef _STLP_INTERNAL_ALLOC_H
 1398.35 +#  include <stl/_alloc.h>
 1398.36 +#endif
 1398.37 +
 1398.38 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1398.39 +
 1398.40 +# ifdef _STLP_SGI_THREADS
 1398.41 +  // We test whether threads are in use before locking.
 1398.42 +  // Perhaps this should be moved into stl_threads.h, but that
 1398.43 +  // probably makes it harder to avoid the procedure call when
 1398.44 +  // it isn't needed.
 1398.45 +    extern "C" {
 1398.46 +      extern int __us_rsthread_malloc;
 1398.47 +    }
 1398.48 +# endif
 1398.49 +
 1398.50 +
 1398.51 +// Specialised debug form of malloc which does not provide "false"
 1398.52 +// memory leaks when run with debug CRT libraries.
 1398.53 +#if defined(_STLP_MSVC) && (_STLP_MSVC>=1020 && defined(_STLP_DEBUG_ALLOC)) && ! defined (_STLP_WINCE)
 1398.54 +#  include <crtdbg.h>
 1398.55 +inline void* __stlp_chunk_malloc(size_t __bytes) { _STLP_CHECK_NULL_ALLOC(_malloc_dbg(__bytes, _CRT_BLOCK, __FILE__, __LINE__)); }
 1398.56 +#else	// !_DEBUG
 1398.57 +# ifdef _STLP_NODE_ALLOC_USE_MALLOC
 1398.58 +#  include <cstdlib>
 1398.59 +inline void* __stlp_chunk_malloc(size_t __bytes) { _STLP_CHECK_NULL_ALLOC(_STLP_VENDOR_CSTD::malloc(__bytes)); }
 1398.60 +# else
 1398.61 +inline void* __stlp_chunk_malloc(size_t __bytes) { return _STLP_STD::__stl_new(__bytes); }
 1398.62 +# endif
 1398.63 +#endif	// !_DEBUG
 1398.64 +
 1398.65 +
 1398.66 +#define _S_FREELIST_INDEX(__bytes) ((__bytes-size_t(1))>>(int)_ALIGN_SHIFT)
 1398.67 +
 1398.68 +_STLP_BEGIN_NAMESPACE
 1398.69 +
 1398.70 +#ifndef _STLP_NO_NODE_ALLOC
 1398.71 +
 1398.72 +template <int __inst>
 1398.73 +void *  _STLP_CALL __malloc_alloc<__inst>::_S_oom_malloc(size_t __n)
 1398.74 +{
 1398.75 +  __oom_handler_type __my_malloc_handler;
 1398.76 +  void * __result;
 1398.77 +
 1398.78 +  for (;;) {
 1398.79 +    __my_malloc_handler = __oom_handler;
 1398.80 +    if (0 == __my_malloc_handler) { __THROW_BAD_ALLOC; }
 1398.81 +    (*__my_malloc_handler)();
 1398.82 +    __result = malloc(__n);
 1398.83 +    if (__result) return(__result);
 1398.84 +  }
 1398.85 +#if defined(_STLP_NEED_UNREACHABLE_RETURN)
 1398.86 +  return 0;
 1398.87 +#endif
 1398.88 +
 1398.89 +}
 1398.90 +
 1398.91 +#endif
 1398.92 +
 1398.93 +template <class _Alloc>
 1398.94 +void *  _STLP_CALL __debug_alloc<_Alloc>::allocate(size_t __n) {
 1398.95 +  size_t __real_n = __n + __extra_before_chunk() + __extra_after_chunk();
 1398.96 +  __alloc_header *__result = (__alloc_header *)__allocator_type::allocate(__real_n);
 1398.97 +  memset((char*)__result, __shred_byte, __real_n*sizeof(value_type));
 1398.98 +  __result->__magic = __magic;
 1398.99 +  __result->__type_size = sizeof(value_type);
1398.100 +  __result->_M_size = (_STLP_UINT32_T)__n;
1398.101 +  return ((char*)__result) + (long)__extra_before;
1398.102 +}
1398.103 +
1398.104 +template <class _Alloc>
1398.105 +void  _STLP_CALL
1398.106 +__debug_alloc<_Alloc>::deallocate(void *__p, size_t __n) {
1398.107 +  __alloc_header * __real_p = (__alloc_header*)((char *)__p -(long)__extra_before);
1398.108 +  // check integrity
1398.109 +  _STLP_VERBOSE_ASSERT(__real_p->__magic != __deleted_magic, _StlMsg_DBA_DELETED_TWICE)
1398.110 +  _STLP_VERBOSE_ASSERT(__real_p->__magic == __magic, _StlMsg_DBA_NEVER_ALLOCATED)
1398.111 +  _STLP_VERBOSE_ASSERT(__real_p->__type_size == 1,_StlMsg_DBA_TYPE_MISMATCH)
1398.112 +  _STLP_VERBOSE_ASSERT(__real_p->_M_size == __n, _StlMsg_DBA_SIZE_MISMATCH)
1398.113 +  // check pads on both sides
1398.114 +  unsigned char* __tmp;
1398.115 +  for (__tmp= (unsigned char*)(__real_p+1); __tmp < (unsigned char*)__p; __tmp++) {  
1398.116 +    _STLP_VERBOSE_ASSERT(*__tmp==__shred_byte, _StlMsg_DBA_UNDERRUN)
1398.117 +      }
1398.118 +  
1398.119 +  size_t __real_n= __n + __extra_before_chunk() + __extra_after_chunk();
1398.120 +  
1398.121 +  for (__tmp= ((unsigned char*)__p)+__n*sizeof(value_type); 
1398.122 +       __tmp < ((unsigned char*)__real_p)+__real_n ; __tmp++) {
1398.123 +    _STLP_VERBOSE_ASSERT(*__tmp==__shred_byte, _StlMsg_DBA_OVERRUN)
1398.124 +      }
1398.125 +  
1398.126 +  // that may be unfortunate, just in case
1398.127 +  __real_p->__magic=__deleted_magic;
1398.128 +  memset((char*)__p, __shred_byte, __n*sizeof(value_type));
1398.129 +  __allocator_type::deallocate(__real_p, __real_n);
1398.130 +}
1398.131 +
1398.132 +#ifndef _STLP_NO_NODE_ALLOC
1398.133 +
1398.134 +// # ifdef _STLP_THREADS
1398.135 +
1398.136 +template <bool __threads, int __inst>
1398.137 +class _Node_Alloc_Lock {
1398.138 +public:
1398.139 +  _Node_Alloc_Lock() { 
1398.140 +    
1398.141 +#  ifdef _STLP_SGI_THREADS
1398.142 +    if (__threads && __us_rsthread_malloc)
1398.143 +#  else /* !_STLP_SGI_THREADS */
1398.144 +      if (__threads) 
1398.145 +#  endif
1398.146 +    	_S_lock._M_acquire_lock(); 
1398.147 +  }
1398.148 +  
1398.149 +  ~_Node_Alloc_Lock() {
1398.150 +#  ifdef _STLP_SGI_THREADS
1398.151 +    if (__threads && __us_rsthread_malloc)
1398.152 +#  else /* !_STLP_SGI_THREADS */
1398.153 +      if (__threads)
1398.154 +#  endif
1398.155 +        _S_lock._M_release_lock(); 
1398.156 +  }
1398.157 +  
1398.158 +  static _STLP_STATIC_MUTEX _S_lock;
1398.159 +};
1398.160 +
1398.161 +// # endif  /* _STLP_THREADS */
1398.162 +
1398.163 +
1398.164 +template <bool __threads, int __inst>
1398.165 +void* _STLP_CALL
1398.166 +__node_alloc<__threads, __inst>::_M_allocate(size_t __n) {
1398.167 +  void*  __r;
1398.168 +  _Obj * _STLP_VOLATILE * __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n);
1398.169 +  // #       ifdef _STLP_THREADS
1398.170 +  /*REFERENCED*/
1398.171 +  _Node_Alloc_Lock<__threads, __inst> __lock_instance;
1398.172 +  // #       endif
1398.173 +  // Acquire the lock here with a constructor call.
1398.174 +  // This ensures that it is released in exit or during stack
1398.175 +  // unwinding.
1398.176 +  if ( (__r  = *__my_free_list) != 0 ) {
1398.177 +    *__my_free_list = ((_Obj*)__r) -> _M_free_list_link;
1398.178 +  } else {
1398.179 +    __r = _S_refill(__n);
1398.180 +  }
1398.181 +  // lock is released here
1398.182 +  return __r;
1398.183 +}
1398.184 +
1398.185 +template <bool __threads, int __inst>
1398.186 +void _STLP_CALL
1398.187 +__node_alloc<__threads, __inst>::_M_deallocate(void *__p, size_t __n) {
1398.188 +  _Obj * _STLP_VOLATILE * __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n);
1398.189 +  // #       ifdef _STLP_THREADS
1398.190 +  /*REFERENCED*/
1398.191 +  _Node_Alloc_Lock<__threads, __inst> __lock_instance;
1398.192 +  // #       endif /* _STLP_THREADS */
1398.193 +  // acquire lock
1398.194 +  ((_Obj *)__p) -> _M_free_list_link = *__my_free_list;
1398.195 +  *__my_free_list = (_Obj *)__p;
1398.196 +  // lock is released here
1398.197 +}
1398.198 +
1398.199 +/* We allocate memory in large chunks in order to avoid fragmenting     */
1398.200 +/* the malloc heap too much.                                            */
1398.201 +/* We assume that size is properly aligned.                             */
1398.202 +/* We hold the allocation lock.                                         */
1398.203 +template <bool __threads, int __inst>
1398.204 +char* _STLP_CALL
1398.205 +__node_alloc<__threads, __inst>::_S_chunk_alloc(size_t _p_size, 
1398.206 +						int& __nobjs)
1398.207 +{
1398.208 +  char* __result;
1398.209 +  size_t __total_bytes = _p_size * __nobjs;
1398.210 +  size_t __bytes_left = _S_end_free - _S_start_free;
1398.211 +
1398.212 +  if (__bytes_left >= __total_bytes) {
1398.213 +    __result = _S_start_free;
1398.214 +    _S_start_free += __total_bytes;
1398.215 +    return(__result);
1398.216 +  } else if (__bytes_left >= _p_size) {
1398.217 +    __nobjs = (int)(__bytes_left/_p_size);
1398.218 +    __total_bytes = _p_size * __nobjs;
1398.219 +    __result = _S_start_free;
1398.220 +    _S_start_free += __total_bytes;
1398.221 +    return(__result);
1398.222 +  } else {
1398.223 +    size_t __bytes_to_get = 
1398.224 +      2 * __total_bytes + _S_round_up(_S_heap_size >> 4);
1398.225 +    // Try to make use of the left-over piece.
1398.226 +    if (__bytes_left > 0) {
1398.227 +      _Obj* _STLP_VOLATILE* __my_free_list =
1398.228 +	_S_free_list + _S_FREELIST_INDEX(__bytes_left);
1398.229 +
1398.230 +      ((_Obj*)_S_start_free) -> _M_free_list_link = *__my_free_list;
1398.231 +      *__my_free_list = (_Obj*)_S_start_free;
1398.232 +    }
1398.233 +    _S_start_free = (char*)__stlp_chunk_malloc(__bytes_to_get);
1398.234 +    if (0 == _S_start_free) {
1398.235 +      size_t __i;
1398.236 +      _Obj* _STLP_VOLATILE* __my_free_list;
1398.237 +      _Obj* __p;
1398.238 +      // Try to make do with what we have.  That can't
1398.239 +      // hurt.  We do not try smaller requests, since that tends
1398.240 +      // to result in disaster on multi-process machines.
1398.241 +      for (__i = _p_size; __i <= (size_t)_MAX_BYTES; __i += (size_t)_ALIGN) {
1398.242 +	__my_free_list = _S_free_list + _S_FREELIST_INDEX(__i);
1398.243 +	__p = *__my_free_list;
1398.244 +	if (0 != __p) {
1398.245 +	  *__my_free_list = __p -> _M_free_list_link;
1398.246 +	  _S_start_free = (char*)__p;
1398.247 +	  _S_end_free = _S_start_free + __i;
1398.248 +	  return(_S_chunk_alloc(_p_size, __nobjs));
1398.249 +	  // Any leftover piece will eventually make it to the
1398.250 +	  // right free list.
1398.251 +	}
1398.252 +      }
1398.253 +      _S_end_free = 0;	// In case of exception.
1398.254 +      _S_start_free = (char*)__stlp_chunk_malloc(__bytes_to_get);
1398.255 +    /*
1398.256 +      (char*)malloc_alloc::allocate(__bytes_to_get);
1398.257 +      */
1398.258 +
1398.259 +      // This should either throw an
1398.260 +      // exception or remedy the situation.  Thus we assume it
1398.261 +      // succeeded.
1398.262 +    }
1398.263 +    _S_heap_size += __bytes_to_get;
1398.264 +    _S_end_free = _S_start_free + __bytes_to_get;
1398.265 +    return(_S_chunk_alloc(_p_size, __nobjs));
1398.266 +  }
1398.267 +}
1398.268 +
1398.269 +
1398.270 +/* Returns an object of size __n, and optionally adds to size __n free list.*/
1398.271 +/* We assume that __n is properly aligned.                                */
1398.272 +/* We hold the allocation lock.                                         */
1398.273 +template <bool __threads, int __inst>
1398.274 +void* _STLP_CALL
1398.275 +__node_alloc<__threads, __inst>::_S_refill(size_t __n)
1398.276 +{
1398.277 +  int __nobjs = 20;
1398.278 +  __n = _S_round_up(__n);
1398.279 +  char* __chunk = _S_chunk_alloc(__n, __nobjs);
1398.280 +  _Obj* _STLP_VOLATILE* __my_free_list;
1398.281 +  _Obj* __result;
1398.282 +  _Obj* __current_obj;
1398.283 +  _Obj* __next_obj;
1398.284 +  int __i;
1398.285 +
1398.286 +  if (1 == __nobjs) return(__chunk);
1398.287 +  __my_free_list = _S_free_list + _S_FREELIST_INDEX(__n);
1398.288 +
1398.289 +  /* Build free list in chunk */
1398.290 +  __result = (_Obj*)__chunk;
1398.291 +  *__my_free_list = __next_obj = (_Obj*)(__chunk + __n);
1398.292 +  for (__i = 1; ; __i++) {
1398.293 +    __current_obj = __next_obj;
1398.294 +    __next_obj = (_Obj*)((char*)__next_obj + __n);
1398.295 +    if (__nobjs - 1 == __i) {
1398.296 +      __current_obj -> _M_free_list_link = 0;
1398.297 +      break;
1398.298 +    } else {
1398.299 +      __current_obj -> _M_free_list_link = __next_obj;
1398.300 +    }
1398.301 +  }
1398.302 +  return(__result);
1398.303 +}
1398.304 +
1398.305 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1398.306 +// malloc_alloc out-of-memory handling
1398.307 +template <int __inst>
1398.308 +__oom_handler_type __malloc_alloc<__inst>::__oom_handler=(__oom_handler_type)0 ;
1398.309 +
1398.310 +#ifdef _STLP_THREADS
1398.311 +    template <bool __threads, int __inst>
1398.312 +    _STLP_STATIC_MUTEX
1398.313 +    _Node_Alloc_Lock<__threads, __inst>::_S_lock _STLP_MUTEX_INITIALIZER;
1398.314 +#endif
1398.315 +
1398.316 +template <bool __threads, int __inst>
1398.317 +_Node_alloc_obj * _STLP_VOLATILE
1398.318 +__node_alloc<__threads, __inst>::_S_free_list[_STLP_NFREELISTS]
1398.319 += {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
1398.320 +// The 16 zeros are necessary to make version 4.1 of the SunPro
1398.321 +// compiler happy.  Otherwise it appears to allocate too little
1398.322 +// space for the array.
1398.323 +
1398.324 +template <bool __threads, int __inst>
1398.325 +char *__node_alloc<__threads, __inst>::_S_start_free = 0;
1398.326 +
1398.327 +template <bool __threads, int __inst>
1398.328 +char *__node_alloc<__threads, __inst>::_S_end_free = 0;
1398.329 +
1398.330 +template <bool __threads, int __inst>
1398.331 +size_t __node_alloc<__threads, __inst>::_S_heap_size = 0;
1398.332 +
1398.333 +
1398.334 +# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1398.335 +
1398.336 +__DECLARE_INSTANCE(__oom_handler_type, __malloc_alloc<0>::__oom_handler, =0);
1398.337 +
1398.338 +# define _STLP_ALLOC_NOTHREADS __node_alloc<false, 0>
1398.339 +# define _STLP_ALLOC_THREADS   __node_alloc<true, 0>
1398.340 +# define _STLP_ALLOC_NOTHREADS_LOCK _Node_Alloc_Lock<false, 0>
1398.341 +# define _STLP_ALLOC_THREADS_LOCK   _Node_Alloc_Lock<true, 0>
1398.342 +
1398.343 +__DECLARE_INSTANCE(char *, _STLP_ALLOC_NOTHREADS::_S_start_free,=0);
1398.344 +__DECLARE_INSTANCE(char *, _STLP_ALLOC_NOTHREADS::_S_end_free,=0);
1398.345 +__DECLARE_INSTANCE(size_t, _STLP_ALLOC_NOTHREADS::_S_heap_size,=0);
1398.346 +__DECLARE_INSTANCE(_Node_alloc_obj * _STLP_VOLATILE,
1398.347 +                   _STLP_ALLOC_NOTHREADS::_S_free_list[_STLP_NFREELISTS],
1398.348 +                   ={0});
1398.349 +__DECLARE_INSTANCE(char *, _STLP_ALLOC_THREADS::_S_start_free,=0);
1398.350 +__DECLARE_INSTANCE(char *, _STLP_ALLOC_THREADS::_S_end_free,=0);
1398.351 +__DECLARE_INSTANCE(size_t, _STLP_ALLOC_THREADS::_S_heap_size,=0);
1398.352 +__DECLARE_INSTANCE(_Node_alloc_obj * _STLP_VOLATILE,
1398.353 +                   _STLP_ALLOC_THREADS::_S_free_list[_STLP_NFREELISTS],
1398.354 +                   ={0});
1398.355 +// #   ifdef _STLP_THREADS
1398.356 +__DECLARE_INSTANCE(_STLP_STATIC_MUTEX,
1398.357 +                   _STLP_ALLOC_NOTHREADS_LOCK::_S_lock,
1398.358 +                   _STLP_MUTEX_INITIALIZER);
1398.359 +__DECLARE_INSTANCE(_STLP_STATIC_MUTEX,
1398.360 +                   _STLP_ALLOC_THREADS_LOCK::_S_lock,
1398.361 +                   _STLP_MUTEX_INITIALIZER);
1398.362 +// #   endif
1398.363 +
1398.364 +# undef _STLP_ALLOC_THREADS
1398.365 +# undef _STLP_ALLOC_NOTHREADS
1398.366 +
1398.367 +#  endif /* _STLP_STATIC_TEMPLATE_DATA */
1398.368 +
1398.369 +#endif
1398.370 +
1398.371 +_STLP_END_NAMESPACE
1398.372 +
1398.373 +# undef _S_FREELIST_INDEX
1398.374 +
1398.375 +# endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */
1398.376 +
1398.377 +#endif /*  _STLP_ALLOC_C */
1398.378 +
1398.379 +// Local Variables:
1398.380 +// mode:C++
1398.381 +// End:
  1399.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1399.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_alloc.h	Wed Mar 31 12:27:01 2010 +0100
  1399.3 @@ -0,0 +1,543 @@
  1399.4 +/*
  1399.5 + *
  1399.6 + * Copyright (c) 1996,1997
  1399.7 + * Silicon Graphics Computer Systems, Inc.
  1399.8 + *
  1399.9 + * Copyright (c) 1997
 1399.10 + * Moscow Center for SPARC Technology
 1399.11 + *
 1399.12 + * Copyright (c) 1999 
 1399.13 + * Boris Fomitchev
 1399.14 + *
 1399.15 + * This material is provided "as is", with absolutely no warranty expressed
 1399.16 + * or implied. Any use is at your own risk.
 1399.17 + *
 1399.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1399.19 + * without fee, provided the above notices are retained on all copies.
 1399.20 + * Permission to modify the code and to distribute modified code is granted,
 1399.21 + * provided the above notices are retained, and a notice that the code was
 1399.22 + * modified is included with the above copyright notice.
 1399.23 + *
 1399.24 + */
 1399.25 +
 1399.26 +/* NOTE: This is an internal header file, included by other STL headers.
 1399.27 + *   You should not attempt to use it directly.
 1399.28 + */
 1399.29 +
 1399.30 +#ifndef _STLP_INTERNAL_ALLOC_H
 1399.31 +#define _STLP_INTERNAL_ALLOC_H
 1399.32 +
 1399.33 +# ifndef _STLP_CSTDDEF
 1399.34 +#  include <cstddef>
 1399.35 +# endif
 1399.36 +
 1399.37 +#if !defined (_STLP_DEBUG_H) && (defined  (_STLP_DEBUG) || defined (_STLP_ASSERTIONS))
 1399.38 +# include <stl/debug/_debug.h>
 1399.39 +#endif
 1399.40 +
 1399.41 +# ifndef _STLP_CSTDLIB
 1399.42 +#  include <cstdlib>
 1399.43 +# endif
 1399.44 +# ifndef _STLP_CSTRING
 1399.45 +#  include <cstring>
 1399.46 +# endif
 1399.47 +
 1399.48 +# ifndef __THROW_BAD_ALLOC
 1399.49 +#  if !defined(_STLP_USE_EXCEPTIONS)
 1399.50 +#   if !defined (_STLP_CSTDIO)
 1399.51 +#    include <cstdio>
 1399.52 +#   endif
 1399.53 +#   if !defined (_STLP_CSTDLIB)
 1399.54 +#    include <cstdlib>
 1399.55 +#   endif
 1399.56 +#   define __THROW_BAD_ALLOC puts("out of memory\n"); exit(1)
 1399.57 +#  else /* !defined(_STLP_USE_EXCEPTIONS) */
 1399.58 +#   define __THROW_BAD_ALLOC throw _STLP_STD::bad_alloc()
 1399.59 +#  endif /* !defined(_STLP_USE_EXCEPTIONS) */
 1399.60 +# endif   /* __THROW_BAD_ALLOC */
 1399.61 +
 1399.62 +# ifndef _STLP_INTERNAL_NEW_HEADER
 1399.63 +#  include <stl/_new.h>
 1399.64 +# endif
 1399.65 +
 1399.66 +// #if ! defined (__SYMBIAN32__)
 1399.67 +#if /* defined (_STLP_THREADS) && */ ! defined (_STLP_INTERNAL_THREADS_H)
 1399.68 +# include <stl/_threads.h>
 1399.69 +// #endif
 1399.70 +#endif
 1399.71 +
 1399.72 +#ifndef _STLP_INTERNAL_CONSTRUCT_H
 1399.73 +# include <stl/_construct.h>
 1399.74 +#endif
 1399.75 +
 1399.76 +#ifndef __ALLOC
 1399.77 +#   define __ALLOC __sgi_alloc
 1399.78 +#endif
 1399.79 +
 1399.80 +# ifndef __RESTRICT
 1399.81 +#  define __RESTRICT
 1399.82 +# endif
 1399.83 +
 1399.84 +#if defined (_STLP_THREADS) || (defined(_STLP_OWN_IOSTREAMS) && ! defined (_STLP_NO_THREADS) && ! defined (_NOTHREADS) )
 1399.85 +# define _STLP_NODE_ALLOCATOR_THREADS true
 1399.86 +#else
 1399.87 +# define _STLP_NODE_ALLOCATOR_THREADS false
 1399.88 +#endif
 1399.89 +
 1399.90 +_STLP_BEGIN_NAMESPACE
 1399.91 +
 1399.92 +# if defined (_STLP_USE_RAW_SGI_ALLOCATORS)
 1399.93 +template <class _Tp, class _Alloc> struct __allocator;
 1399.94 +# endif
 1399.95 +
 1399.96 +#ifndef _STLP_NO_NODE_ALLOC
 1399.97 +
 1399.98 +// Malloc-based allocator.  Typically slower than default alloc below.
 1399.99 +// Typically thread-safe and more storage efficient.
1399.100 +
1399.101 +typedef void (* __oom_handler_type)();
1399.102 +
1399.103 +template <int __inst>
1399.104 +class __malloc_alloc {
1399.105 +private:
1399.106 +  static void* _STLP_CALL _S_oom_malloc(size_t);
1399.107 +  static __oom_handler_type __oom_handler;
1399.108 +public:
1399.109 +  // this one is needed for proper simple_alloc wrapping
1399.110 +  typedef char value_type;
1399.111 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1399.112 +  template <class _Tp1> struct rebind {
1399.113 +    typedef __allocator<_Tp1, __malloc_alloc<__inst> > other;
1399.114 +  };
1399.115 +# endif
1399.116 +  static void* _STLP_CALL allocate(size_t __n)    {
1399.117 +    void* __result = malloc(__n);
1399.118 +    if (0 == __result) __result = _S_oom_malloc(__n);
1399.119 +    return __result;
1399.120 +  }
1399.121 +  static void _STLP_CALL deallocate(void* __p, size_t /* __n */) { free((char*)__p); }
1399.122 +  static __oom_handler_type _STLP_CALL set_malloc_handler(__oom_handler_type __f) {
1399.123 +    __oom_handler_type __old = __oom_handler;
1399.124 +    __oom_handler = __f;
1399.125 +    return(__old);
1399.126 +  }
1399.127 +};
1399.128 +
1399.129 +# endif
1399.130 +
1399.131 +// New-based allocator.  Typically slower than default alloc below.
1399.132 +// Typically thread-safe and more storage efficient.
1399.133 +class _STLP_CLASS_DECLSPEC __new_alloc {
1399.134 +public:
1399.135 +  // this one is needed for proper simple_alloc wrapping
1399.136 +  typedef char value_type;
1399.137 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) &&  defined(_STLP_USE_RAW_SGI_ALLOCATORS)
1399.138 +  template <class _Tp1> struct rebind {
1399.139 +    typedef __allocator<_Tp1, __new_alloc > other;
1399.140 +  };
1399.141 +# endif
1399.142 +  static void* _STLP_CALL  allocate(size_t __n) {  
1399.143 +    return __stl_new(__n); 
1399.144 +  }
1399.145 +  static void _STLP_CALL deallocate(void* __p, size_t) { __stl_delete(__p); }
1399.146 +};
1399.147 +
1399.148 +
1399.149 +// Allocator adaptor to check size arguments for debugging.
1399.150 +// Reports errors using assert.  Checking can be disabled with
1399.151 +// NDEBUG, but it's far better to just use the underlying allocator
1399.152 +// instead when no checking is desired.
1399.153 +// There is some evidence that this can confuse Purify.
1399.154 +// This adaptor can only be applied to raw allocators
1399.155 +
1399.156 +template <class _Alloc>
1399.157 +class __debug_alloc : public _Alloc {
1399.158 +public:
1399.159 +  typedef _Alloc __allocator_type;
1399.160 +  typedef typename _Alloc::value_type value_type;
1399.161 +private:
1399.162 +  struct __alloc_header {
1399.163 +    size_t __magic: 16;
1399.164 +    size_t __type_size:16;
1399.165 +    _STLP_UINT32_T _M_size;
1399.166 +  }; // that is 8 bytes for sure
1399.167 +  // Sunpro CC has bug on enums, so extra_before/after set explicitly
1399.168 +  enum { __pad=8, __magic=0xdeba, __deleted_magic = 0xdebd,
1399.169 +	 __shred_byte= _STLP_SHRED_BYTE
1399.170 +  };
1399.171 +
1399.172 +  enum { __extra_before = 16, __extra_after = 8 };
1399.173 +  // Size of space used to store size.  Note
1399.174 +  // that this must be large enough to preserve
1399.175 +  // alignment.
1399.176 +  static size_t _STLP_CALL __extra_before_chunk() {
1399.177 +    return (long)__extra_before/sizeof(value_type)+
1399.178 +      (size_t)((long)__extra_before%sizeof(value_type)>0);
1399.179 +  }
1399.180 +  static size_t _STLP_CALL __extra_after_chunk() {
1399.181 +    return (long)__extra_after/sizeof(value_type)+
1399.182 +      (size_t)((long)__extra_after%sizeof(value_type)>0);
1399.183 +  }
1399.184 +public:
1399.185 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1399.186 +  template <class _Tp1> struct rebind {
1399.187 +    typedef __allocator< _Tp1, __debug_alloc<_Alloc> > other;
1399.188 +  };
1399.189 +# endif
1399.190 +  __debug_alloc() {}
1399.191 +  ~__debug_alloc() {}
1399.192 +  static void * _STLP_CALL allocate(size_t);
1399.193 +  static void _STLP_CALL deallocate(void *, size_t);
1399.194 +};
1399.195 +
1399.196 +# if defined(__OS400__)
1399.197 +enum {_ALIGN = 16, _ALIGN_SHIFT=4, _MAX_BYTES = 256};
1399.198 +#  define  _STLP_NFREELISTS 16
1399.199 +# else
1399.200 +enum {_ALIGN = 8, _ALIGN_SHIFT=3, _MAX_BYTES = 128};
1399.201 +#  define  _STLP_NFREELISTS 16
1399.202 +# endif /* __OS400__ */
1399.203 +
1399.204 +#ifndef _STLP_NO_NODE_ALLOC
1399.205 +
1399.206 +// Default node allocator.
1399.207 +// With a reasonable compiler, this should be roughly as fast as the
1399.208 +// original STL class-specific allocators, but with less fragmentation.
1399.209 +// Default_alloc_template parameters are experimental and MAY
1399.210 +// DISAPPEAR in the future.  Clients should just use alloc for now.
1399.211 +//
1399.212 +// Important implementation properties:
1399.213 +// 1. If the client request an object of size > _MAX_BYTES, the resulting
1399.214 +//    object will be obtained directly from malloc.
1399.215 +// 2. In all other cases, we allocate an object of size exactly
1399.216 +//    _S_round_up(requested_size).  Thus the client has enough size
1399.217 +//    information that we can return the object to the proper free list
1399.218 +//    without permanently losing part of the object.
1399.219 +//
1399.220 +
1399.221 +// The first template parameter specifies whether more than one thread
1399.222 +// may use this allocator.  It is safe to allocate an object from
1399.223 +// one instance of a default_alloc and deallocate it with another
1399.224 +// one.  This effectively transfers its ownership to the second one.
1399.225 +// This may have undesirable effects on reference locality.
1399.226 +// The second parameter is unreferenced and serves only to allow the
1399.227 +// creation of multiple default_alloc instances.
1399.228 +
1399.229 +class _STLP_CLASS_DECLSPEC _Node_alloc_obj {
1399.230 +public:
1399.231 +    _Node_alloc_obj * _M_free_list_link;
1399.232 +};
1399.233 +
1399.234 +template <bool __threads, int __inst>
1399.235 +class __node_alloc {
1399.236 +  _STLP_PRIVATE:
1399.237 +  static inline size_t _STLP_CALL _S_round_up(size_t __bytes) { return (((__bytes) + (size_t)_ALIGN-1) & ~((size_t)_ALIGN - 1)); }
1399.238 +  typedef _Node_alloc_obj _Obj;
1399.239 +private:
1399.240 +  // Returns an object of size __n, and optionally adds to size __n free list.
1399.241 +  static void*  _STLP_CALL _S_refill(size_t __n);
1399.242 +  // Allocates a chunk for nobjs of size size.  nobjs may be reduced
1399.243 +  // if it is inconvenient to allocate the requested number.
1399.244 +  static char*  _STLP_CALL _S_chunk_alloc(size_t __p_size, int& __nobjs);
1399.245 +  // Chunk allocation state.
1399.246 +  static _Node_alloc_obj * _STLP_VOLATILE _S_free_list[_STLP_NFREELISTS]; 
1399.247 +  static char* _S_start_free;
1399.248 +  static char* _S_end_free;
1399.249 +  static size_t _S_heap_size;
1399.250 +  static void * _STLP_CALL _M_allocate(size_t __n);
1399.251 +  /* __p may not be 0 */
1399.252 +  static void _STLP_CALL _M_deallocate(void *__p, size_t __n);
1399.253 +public:
1399.254 +  // this one is needed for proper simple_alloc wrapping
1399.255 +  typedef char value_type;
1399.256 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1399.257 +  template <class _Tp1> struct rebind {
1399.258 +    typedef __allocator<_Tp1, __node_alloc<__threads, __inst> > other;
1399.259 +  };
1399.260 +# endif
1399.261 +  /* __n must be > 0      */
1399.262 +  static void * _STLP_CALL allocate(size_t __n) { 
1399.263 +return (__n > (size_t)_MAX_BYTES) ?  __stl_new(__n) : _M_allocate(__n); }
1399.264 +  /* __p may not be 0 */
1399.265 +  static void _STLP_CALL deallocate(void *__p, size_t __n) { 
1399.266 +if (__n > (size_t)_MAX_BYTES) __stl_delete(__p); else _M_deallocate(__p, __n); }
1399.267 +};
1399.268 +
1399.269 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1399.270 +_STLP_EXPORT_TEMPLATE_CLASS __malloc_alloc<0>;
1399.271 +_STLP_EXPORT_TEMPLATE_CLASS __node_alloc<_STLP_NODE_ALLOCATOR_THREADS, 0>;
1399.272 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1399.273 +typedef __node_alloc<_STLP_NODE_ALLOCATOR_THREADS, 0> _Node_alloc;
1399.274 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1399.275 +_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<_Node_alloc>;
1399.276 +_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__new_alloc>;
1399.277 +_STLP_EXPORT_TEMPLATE_CLASS __debug_alloc<__malloc_alloc<0> >;
1399.278 +# endif
1399.279 +
1399.280 +#endif
1399.281 +
1399.282 +# if defined (_STLP_USE_PERTHREAD_ALLOC)
1399.283 +
1399.284 +_STLP_END_NAMESPACE
1399.285 +// include additional header here
1399.286 +# include <stl/_pthread_alloc.h>
1399.287 +_STLP_BEGIN_NAMESPACE
1399.288 +
1399.289 +#  if defined ( _STLP_DEBUG_ALLOC )
1399.290 +typedef __debug_alloc<__pthread_alloc> __sgi_alloc;
1399.291 +#  else
1399.292 +typedef __pthread_alloc __sgi_alloc;
1399.293 +#  endif /* _STLP_DEBUG_ALLOC */
1399.294 +
1399.295 +typedef __pthread_alloc __single_client_alloc;
1399.296 +typedef __pthread_alloc __multithreaded_alloc;
1399.297 +
1399.298 +# else
1399.299 +
1399.300 +# if defined ( _STLP_USE_NEWALLOC )
1399.301 +
1399.302 +#  if defined ( _STLP_DEBUG_ALLOC )
1399.303 +typedef __debug_alloc<__new_alloc> __sgi_alloc;
1399.304 +#  else
1399.305 +typedef __new_alloc __sgi_alloc;
1399.306 +#  endif /* _STLP_DEBUG_ALLOC */
1399.307 +
1399.308 +typedef __new_alloc __single_client_alloc;
1399.309 +typedef __new_alloc __multithreaded_alloc;
1399.310 +
1399.311 +#  elif defined (_STLP_USE_MALLOC)
1399.312 +
1399.313 +#   if defined ( _STLP_DEBUG_ALLOC )
1399.314 +typedef __debug_alloc<__malloc_alloc<0> > __sgi_alloc;
1399.315 +#   else
1399.316 +typedef __malloc_alloc<0> __sgi_alloc;
1399.317 +#   endif /* _STLP_DEBUG_ALLOC */
1399.318 +
1399.319 +typedef __malloc_alloc<0> __single_client_alloc;
1399.320 +typedef __malloc_alloc<0> __multithreaded_alloc;
1399.321 +
1399.322 +# else
1399.323 +
1399.324 +#   if defined ( _STLP_DEBUG_ALLOC )
1399.325 +typedef __debug_alloc<_Node_alloc> __sgi_alloc;
1399.326 +#   else
1399.327 +typedef _Node_alloc __sgi_alloc;
1399.328 +#   endif
1399.329 +
1399.330 +typedef __node_alloc<false, 0> __single_client_alloc;
1399.331 +typedef __node_alloc<true, 0>  __multithreaded_alloc;
1399.332 +
1399.333 +#  endif /* _STLP_USE_NEWALLOC */
1399.334 +# endif /* PTHREAD_ALLOC */
1399.335 +
1399.336 +// This implements allocators as specified in the C++ standard.  
1399.337 +//
1399.338 +// Note that standard-conforming allocators use many language features
1399.339 +// that are not yet widely implemented.  In particular, they rely on
1399.340 +// member templates, partial specialization, partial ordering of function
1399.341 +// templates, the typename keyword, and the use of the template keyword
1399.342 +// to refer to a template member of a dependent type.
1399.343 +
1399.344 +template <class _Tp>
1399.345 +class allocator {
1399.346 +public:
1399.347 +
1399.348 +  typedef _Tp        value_type;
1399.349 +  typedef value_type *       pointer;
1399.350 +  typedef const _Tp* const_pointer;
1399.351 +  typedef _Tp&       reference;
1399.352 +  typedef const _Tp& const_reference;
1399.353 +  typedef size_t     size_type;
1399.354 +  typedef ptrdiff_t  difference_type;
1399.355 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1399.356 +  template <class _Tp1> struct rebind {
1399.357 +    typedef allocator<_Tp1> other;
1399.358 +  };
1399.359 +# endif
1399.360 +  allocator() _STLP_NOTHROW {}
1399.361 + # if defined (_STLP_MEMBER_TEMPLATES)
1399.362 +  template <class _Tp1> allocator(const allocator<_Tp1>&) _STLP_NOTHROW {}
1399.363 + # endif    
1399.364 +  allocator(const allocator<_Tp>&) _STLP_NOTHROW {}
1399.365 +  ~allocator() _STLP_NOTHROW {}
1399.366 +  pointer address(reference __x) const { return &__x; }
1399.367 +  const_pointer address(const_reference __x) const { return &__x; }
1399.368 +  // __n is permitted to be 0.  The C++ standard says nothing about what the return value is when __n == 0.
1399.369 +  _Tp* allocate(size_type __n, const void* = 0) { 
1399.370 +    return __n != 0 ? __REINTERPRET_CAST(value_type*,__sgi_alloc::allocate(__n * sizeof(value_type))) : 0;
1399.371 +  }
1399.372 +  // __p is permitted to be a null pointer, only if n==0.
1399.373 +  void deallocate(pointer __p, size_type __n) {
1399.374 +    _STLP_ASSERT( (__p == 0) == (__n == 0) )
1399.375 +      if (__p != 0) __sgi_alloc::deallocate((void*)__p, __n * sizeof(value_type));
1399.376 +  }
1399.377 +  // backwards compatibility
1399.378 +  void deallocate(pointer __p) const {  if (__p != 0) __sgi_alloc::deallocate((void*)__p, sizeof(value_type)); }
1399.379 +  size_type max_size() const _STLP_NOTHROW  { return size_t(-1) / sizeof(value_type); }
1399.380 +  void construct(pointer __p, const _Tp& __val) { _STLP_STD::_Construct(__p, __val); }
1399.381 +  void destroy(pointer __p) { _STLP_STD::_Destroy(__p); }
1399.382 +# if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))
1399.383 +  template <class _T2> bool operator==(const allocator<_T2>&) const  _STLP_NOTHROW { return true; }
1399.384 +  template <class _T2> bool operator!=(const allocator<_T2>&) const _STLP_NOTHROW { return false; }
1399.385 +# endif
1399.386 +};
1399.387 +
1399.388 +_STLP_TEMPLATE_NULL
1399.389 +class _STLP_CLASS_DECLSPEC allocator<void> {
1399.390 +public:
1399.391 +  typedef size_t      size_type;
1399.392 +  typedef ptrdiff_t   difference_type;
1399.393 +  typedef void*       pointer;
1399.394 +  typedef const void* const_pointer;
1399.395 +# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1399.396 +  typedef void        value_type;
1399.397 +# endif
1399.398 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1399.399 +  template <class _Tp1> struct rebind {
1399.400 +    typedef allocator<_Tp1> other;
1399.401 +  };
1399.402 +# endif
1399.403 +# if defined(__MRC__)||(defined(__SC__)&&!defined(__DMC__))		//*ty 03/24/2001 - MPW compilers get confused on these operator definitions
1399.404 +  template <class _T2> bool operator==(const allocator<_T2>&) const _STLP_NOTHROW { return true; }
1399.405 +  template <class _T2> bool operator!=(const allocator<_T2>&) const _STLP_NOTHROW { return false; }
1399.406 +# endif
1399.407 +};
1399.408 +
1399.409 +#if !(defined(__MRC__)||(defined(__SC__)&&!defined(__DMC__)))		//*ty 03/24/2001 - MPW compilers get confused on these operator definitions
1399.410 +template <class _T1, class _T2> inline bool  _STLP_CALL operator==(const allocator<_T1>&, const allocator<_T2>&) _STLP_NOTHROW { return true; }
1399.411 +template <class _T1, class _T2> inline bool  _STLP_CALL operator!=(const allocator<_T1>&, const allocator<_T2>&) _STLP_NOTHROW { return false; }
1399.412 +#endif
1399.413 +
1399.414 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1399.415 +_STLP_EXPORT_TEMPLATE_CLASS allocator<char>;
1399.416 +#  if defined (_STLP_HAS_WCHAR_T)
1399.417 +_STLP_EXPORT_TEMPLATE_CLASS allocator<wchar_t>;
1399.418 +#  endif
1399.419 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1399.420 +
1399.421 +// Another allocator adaptor: _Alloc_traits.  This serves two
1399.422 +// purposes.  First, make it possible to write containers that can use
1399.423 +// either SGI-style allocators or standard-conforming allocator.
1399.424 +
1399.425 +// The fully general version.
1399.426 +template <class _Tp, class _Allocator>
1399.427 +struct _Alloc_traits
1399.428 +{
1399.429 +  typedef _Allocator _Orig;
1399.430 +# if defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM) 
1399.431 +  typedef typename _Allocator::_STLP_TEMPLATE rebind<_Tp> _Rebind_type;
1399.432 +  typedef typename _Rebind_type::other  allocator_type;
1399.433 +  static allocator_type create_allocator(const _Orig& __a) { return allocator_type(__a); }
1399.434 +# else
1399.435 +  // this is not actually true, used only to pass this type through
1399.436 +  // to dynamic overload selection in _STLP_alloc_proxy methods
1399.437 +  typedef _Allocator allocator_type;
1399.438 +# endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1399.439 +};
1399.440 +
1399.441 +#ifndef _STLP_FORCE_ALLOCATORS
1399.442 +#define _STLP_FORCE_ALLOCATORS(a,y) 
1399.443 +#endif
1399.444 +
1399.445 +#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1399.446 +// The version for the default allocator, for rare occasion when we have partial spec w/o member template classes
1399.447 +template <class _Tp, class _Tp1>
1399.448 +struct _Alloc_traits<_Tp, allocator<_Tp1> > {
1399.449 +  typedef allocator<_Tp1> _Orig;
1399.450 +  typedef allocator<_Tp> allocator_type;
1399.451 +  static allocator_type create_allocator(const allocator<_Tp1 >& __a) { return allocator_type(__a); }
1399.452 +};
1399.453 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1399.454 +
1399.455 +/* macro to convert the allocator for initialization
1399.456 + * not using MEMBER_TEMPLATE_CLASSES as it should work given template constructor  */
1399.457 +#if defined (_STLP_MEMBER_TEMPLATES) || ! defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1399.458 +/* if _STLP_NO_TEMPLATE_CONVERSIONS is set, the member template constructor is
1399.459 + * not used implicitly to convert allocator parameter, so let us do it explicitly */
1399.460 +# if defined (_STLP_MEMBER_TEMPLATE_CLASSES) && defined (_STLP_NO_TEMPLATE_CONVERSIONS)
1399.461 +#  define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __stl_alloc_create(__a,(_Tp*)0)
1399.462 +# else
1399.463 +#  define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __a
1399.464 +# endif
1399.465 +/* else convert, but only if partial specialization works, since else
1399.466 + * Container::allocator_type won't be different */
1399.467 +#else 
1399.468 +#  define _STLP_CONVERT_ALLOCATOR(__a, _Tp) __stl_alloc_create(__a,(_Tp*)0)
1399.469 +#endif
1399.470 +
1399.471 +# if defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM) 
1399.472 +template <class _Tp, class _Alloc>
1399.473 +inline _STLP_TYPENAME_ON_RETURN_TYPE _Alloc_traits<_Tp, _Alloc>::allocator_type  _STLP_CALL
1399.474 +__stl_alloc_create(const _Alloc& __a, const _Tp*) {
1399.475 +  typedef typename _Alloc::_STLP_TEMPLATE rebind<_Tp>::other _Rebound_type;
1399.476 +  return _Rebound_type(__a);
1399.477 +}
1399.478 +#else
1399.479 +// If custom allocators are being used without member template classes support :
1399.480 +// user (on purpose) is forced to define rebind/get operations !!!
1399.481 +template <class _Tp1, class _Tp2>
1399.482 +inline allocator<_Tp2>& _STLP_CALL
1399.483 +__stl_alloc_rebind(allocator<_Tp1>& __a, const _Tp2*) {  return (allocator<_Tp2>&)(__a); }
1399.484 +template <class _Tp1, class _Tp2>
1399.485 +inline allocator<_Tp2> _STLP_CALL
1399.486 +__stl_alloc_create(const allocator<_Tp1>&, const _Tp2*) { return allocator<_Tp2>(); }
1399.487 +#endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1399.488 +
1399.489 +# ifdef _STLP_USE_RAW_SGI_ALLOCATORS
1399.490 +// move obsolete stuff out of the way
1399.491 +# include <stl/_alloc_old.h>
1399.492 +# endif
1399.493 +
1399.494 +// inheritance is being used for EBO optimization
1399.495 +template <class _Value, class _Tp, class _MaybeReboundAlloc>
1399.496 +class _STLP_alloc_proxy : public _MaybeReboundAlloc {
1399.497 +private:
1399.498 +  typedef _MaybeReboundAlloc _Base;
1399.499 +  typedef _STLP_alloc_proxy<_Value, _Tp, _MaybeReboundAlloc> _Self;
1399.500 +public:
1399.501 +  _Value _M_data;
1399.502 +  inline _STLP_alloc_proxy(const _MaybeReboundAlloc& __a, _Value __p) : _MaybeReboundAlloc(__a), _M_data(__p) {}
1399.503 +
1399.504 +# if 0
1399.505 +  inline _STLP_alloc_proxy(const _Self& __x) : _MaybeReboundAlloc(__x), _M_data(__x._M_data) {} 
1399.506 +  // construction/destruction
1399.507 +  inline _Self& operator = (const _Self& __x) { 
1399.508 +    *(_MaybeReboundAlloc*)this = *(_MaybeReboundAlloc*)__x;
1399.509 +    _M_data = __x._M_data; return *this; 
1399.510 +  } 
1399.511 +  inline _Self& operator = (const _Base& __x) { ((_Base&)*this) = __x; return *this; } 
1399.512 +# endif
1399.513 +  // Unified interface to perform allocate()/deallocate() with limited
1399.514 +  // language support
1399.515 +#if ! defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
1399.516 +  // else it is rebound already, and allocate() member is accessible
1399.517 +  inline _Tp* allocate(size_t __n) { 
1399.518 +    return __stl_alloc_rebind(__STATIC_CAST(_Base&,*this),(_Tp*)0).allocate(__n,0); 
1399.519 +  }
1399.520 +  inline void deallocate(_Tp* __p, size_t __n) { 
1399.521 +    __stl_alloc_rebind(__STATIC_CAST(_Base&, *this),(_Tp*)0).deallocate(__p, __n); 
1399.522 +  }
1399.523 +#endif /* !_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1399.524 +};
1399.525 +
1399.526 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1399.527 +_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<char *,char,allocator<char> >;
1399.528 +#  if defined (_STLP_HAS_WCHAR_T)
1399.529 +_STLP_EXPORT_TEMPLATE_CLASS _STLP_alloc_proxy<wchar_t *,wchar_t,allocator<wchar_t> >;
1399.530 +#  endif
1399.531 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1399.532 +
1399.533 +# undef _STLP_NODE_ALLOCATOR_THREADS
1399.534 +
1399.535 +_STLP_END_NAMESPACE
1399.536 +
1399.537 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1399.538 +#  include <stl/_alloc.c>
1399.539 +# endif
1399.540 +
1399.541 +#endif /* _STLP_INTERNAL_ALLOC_H */
1399.542 +
1399.543 +// Local Variables:
1399.544 +// mode:C++
1399.545 +// End:
1399.546 +
  1400.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1400.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_auto_ptr.h	Wed Mar 31 12:27:01 2010 +0100
  1400.3 @@ -0,0 +1,175 @@
  1400.4 +/*
  1400.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1400.6 + * Copyright (c) 1997-1999
  1400.7 + * Silicon Graphics Computer Systems, Inc.
  1400.8 + *
  1400.9 + * Copyright (c) 1999
 1400.10 + * Boris Fomitchev
 1400.11 + *
 1400.12 + * This material is provided "as is", with absolutely no warranty expressed
 1400.13 + * or implied. Any use is at your own risk.
 1400.14 + *
 1400.15 + * Permission to use or copy this software for any purpose is hereby granted
 1400.16 + * without fee, provided the above notices are retained on all copies.
 1400.17 + * Permission to modify the code and to distribute modified code is granted,
 1400.18 + * provided the above notices are retained, and a notice that the code was
 1400.19 + * modified is included with the above copyright notice.
 1400.20 + *
 1400.21 + */
 1400.22 +
 1400.23 +#ifndef _STLP_AUTO_PTR_H
 1400.24 +# define _STLP_AUTO_PTR_H
 1400.25 +
 1400.26 +_STLP_BEGIN_NAMESPACE
 1400.27 +// implementation primitive
 1400.28 +class __ptr_base {
 1400.29 +public:
 1400.30 +  void* _M_p;
 1400.31 +  void  __set(const void* __p) { _M_p = __CONST_CAST(void*,__p); }
 1400.32 +  void  __set(void* __p) { _M_p = __p; }
 1400.33 +};
 1400.34 +
 1400.35 +template <class _Tp> class auto_ptr_ref {
 1400.36 +public:
 1400.37 +  __ptr_base& _M_r;
 1400.38 +  _Tp* const _M_p;
 1400.39 +
 1400.40 +  auto_ptr_ref(__ptr_base& __r, _Tp* __p) : _M_r(__r), _M_p(__p) {  }
 1400.41 +
 1400.42 +  _Tp* release() const { _M_r.__set((void*)0); return _M_p; }
 1400.43 +
 1400.44 +};
 1400.45 +
 1400.46 +template<class _Tp> class auto_ptr :  public __ptr_base {
 1400.47 +public:
 1400.48 +  typedef _Tp element_type;
 1400.49 +  typedef auto_ptr<_Tp>           _Self;
 1400.50 +
 1400.51 +  _Tp* release() {
 1400.52 +    _Tp* __px = this->get();
 1400.53 +    this->_M_p = 0;
 1400.54 +    return __px;
 1400.55 +  }
 1400.56 +
 1400.57 +  void reset(_Tp* __px=0) {
 1400.58 +    _Tp* __pt = this->get();
 1400.59 +    if (__px != __pt)
 1400.60 +      delete __pt;
 1400.61 +    this->__set(__px);
 1400.62 +  }
 1400.63 +
 1400.64 +  _Tp* get() const { return __REINTERPRET_CAST(_Tp*,__CONST_CAST(void*,_M_p)); }
 1400.65 +
 1400.66 +# if !defined (_STLP_NO_ARROW_OPERATOR)
 1400.67 +  _Tp* operator->() const {
 1400.68 +    _STLP_VERBOSE_ASSERT(get()!=0, _StlMsg_AUTO_PTR_NULL)
 1400.69 +    return get();
 1400.70 +  }
 1400.71 +# endif
 1400.72 +  _Tp& operator*() const  {
 1400.73 +    _STLP_VERBOSE_ASSERT(get()!=0, _StlMsg_AUTO_PTR_NULL)
 1400.74 +    return *get();
 1400.75 +  }
 1400.76 +
 1400.77 +  auto_ptr() {
 1400.78 +    this->_M_p = 0;
 1400.79 +# ifdef _STLP_USE_TRAP_LEAVE
 1400.80 +    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
 1400.81 +# endif
 1400.82 +  }
 1400.83 +
 1400.84 +  explicit auto_ptr(_Tp* __px) {
 1400.85 +    this->__set(__px);
 1400.86 +# ifdef _STLP_USE_TRAP_LEAVE
 1400.87 +    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
 1400.88 +# endif
 1400.89 +  }
 1400.90 +
 1400.91 +#if defined (_STLP_MEMBER_TEMPLATES)
 1400.92 +# if !defined (_STLP_NO_TEMPLATE_CONVERSIONS)
 1400.93 +  template<class _Tp1> auto_ptr(auto_ptr<_Tp1>& __r) {
 1400.94 +    _Tp* __conversionCheck = __r.release();
 1400.95 +    this->__set(__conversionCheck);
 1400.96 +# ifdef _STLP_USE_TRAP_LEAVE
 1400.97 +    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
 1400.98 +# endif
 1400.99 +  }
1400.100 +# endif
1400.101 +  template<class _Tp1> auto_ptr<_Tp>& operator=(auto_ptr<_Tp1>& __r) {
1400.102 +    _Tp* __conversionCheck = __r.release();
1400.103 +    reset(__conversionCheck);
1400.104 +    return *this;
1400.105 +  }
1400.106 +#endif /* _STLP_MEMBER_TEMPLATES */
1400.107 +
1400.108 +  auto_ptr(_Self& __r)
1400.109 +  { this->__set(__r.release());
1400.110 +# ifdef _STLP_USE_TRAP_LEAVE
1400.111 +    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
1400.112 +# endif
1400.113 +  }
1400.114 +
1400.115 +  _Self& operator=(_Self& __r)  {
1400.116 +    reset(__r.release());
1400.117 +    return *this;
1400.118 +  }
1400.119 +
1400.120 +  ~auto_ptr() { _STLP_POP_ITEM reset(0); }
1400.121 +
1400.122 +  auto_ptr(auto_ptr_ref<_Tp> __r) {
1400.123 +    this->__set(__r.release());
1400.124 +# ifdef _STLP_USE_TRAP_LEAVE
1400.125 +    CleanupStack::PushL(TCleanupItem(Close, (void*)this));
1400.126 +# endif
1400.127 +  }
1400.128 +
1400.129 +  _Self& operator=(auto_ptr_ref<_Tp> __r) {
1400.130 +    reset(__r.release());
1400.131 +    return *this;
1400.132 +  }
1400.133 +
1400.134 +
1400.135 +  _Self& operator=(_Tp* __px) {
1400.136 +  	reset(__px);
1400.137 +    return *this;
1400.138 +  }
1400.139 +
1400.140 +
1400.141 +
1400.142 +# if defined(_STLP_MEMBER_TEMPLATES) && !defined(_STLP_NO_TEMPLATE_CONVERSIONS)
1400.143 +  template<class _Tp1> operator auto_ptr_ref<_Tp1>() {
1400.144 +    return auto_ptr_ref<_Tp1>(*this, this->get());
1400.145 +  }
1400.146 +  template<class _Tp1> operator auto_ptr<_Tp1>() {
1400.147 +    return auto_ptr<_Tp1>(release());
1400.148 +  }
1400.149 +# else
1400.150 +  operator auto_ptr_ref<_Tp>()
1400.151 +  { return auto_ptr_ref<_Tp>(*this, this->get()); }
1400.152 +# endif
1400.153 +
1400.154 +# ifdef _STLP_USE_TRAP_LEAVE
1400.155 +  static void Close(void* aPtr);
1400.156 +# endif
1400.157 +
1400.158 +};
1400.159 +
1400.160 +# ifdef _STLP_USE_TRAP_LEAVE
1400.161 +template <class _Tp>
1400.162 +void
1400.163 +auto_ptr<_Tp>::Close(void* aPtr)
1400.164 +{
1400.165 +  auto_ptr<_Tp>* self = (auto_ptr<_Tp>*)aPtr;
1400.166 +  self->reset(0);
1400.167 +}
1400.168 +# endif
1400.169 +
1400.170 +
1400.171 +_STLP_END_NAMESPACE
1400.172 +
1400.173 +#endif /* _STLP_AUTO_PTR_H */
1400.174 +
1400.175 +// Local Variables:
1400.176 +// mode:C++
1400.177 +// End:
1400.178 +
  1401.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1401.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_bitset.c	Wed Mar 31 12:27:01 2010 +0100
  1401.3 @@ -0,0 +1,407 @@
  1401.4 +/*
  1401.5 + * Copyright (c) 1998
  1401.6 + * Silicon Graphics Computer Systems, Inc.
  1401.7 + *
  1401.8 + * Copyright (c) 1999 
  1401.9 + * Boris Fomitchev
 1401.10 + *
 1401.11 + * This material is provided "as is", with absolutely no warranty expressed
 1401.12 + * or implied. Any use is at your own risk.
 1401.13 + *
 1401.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1401.15 + * without fee, provided the above notices are retained on all copies.
 1401.16 + * Permission to modify the code and to distribute modified code is granted,
 1401.17 + * provided the above notices are retained, and a notice that the code was
 1401.18 + * modified is included with the above copyright notice.
 1401.19 + *
 1401.20 + */
 1401.21 +
 1401.22 +#ifndef _STLP_BITSET_C
 1401.23 +# define  _STLP_BITSET_C
 1401.24 +
 1401.25 +# ifndef _STLP_BITSET_H
 1401.26 +#  include <stl/_bitset.h>
 1401.27 +# endif
 1401.28 +
 1401.29 +# define __BITS_PER_WORD (CHAR_BIT*sizeof(unsigned long))
 1401.30 +
 1401.31 +_STLP_BEGIN_NAMESPACE
 1401.32 +
 1401.33 +//
 1401.34 +// Definitions of non-inline functions from _Base_bitset.
 1401.35 +// 
 1401.36 +
 1401.37 +
 1401.38 +template<size_t _Nw>
 1401.39 +void _STLP_IMPORT_METHOD _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) 
 1401.40 +{
 1401.41 +
 1401.42 +  if (__shift != 0) {
 1401.43 +    const size_t __wshift = __shift / __BITS_PER_WORD;
 1401.44 +    const size_t __offset = __shift % __BITS_PER_WORD;
 1401.45 +
 1401.46 +    if (__offset == 0)
 1401.47 +      for (size_t __n = _Nw - 1; __n >= __wshift; --__n)
 1401.48 +        _M_w[__n] = _M_w[__n - __wshift];
 1401.49 +
 1401.50 +    else {
 1401.51 +      const size_t __sub_offset = __BITS_PER_WORD - __offset;
 1401.52 +      for (size_t __n = _Nw - 1; __n > __wshift; --__n)
 1401.53 +        _M_w[__n] = (_M_w[__n - __wshift] << __offset) | 
 1401.54 +                    (_M_w[__n - __wshift - 1] >> __sub_offset);
 1401.55 +      _M_w[__wshift] = _M_w[0] << __offset;
 1401.56 +    }
 1401.57 +
 1401.58 +    fill(_M_w + 0, _M_w + __wshift, __STATIC_CAST(_WordT,0));
 1401.59 +  }
 1401.60 +}
 1401.61 +
 1401.62 +template<size_t _Nw>
 1401.63 +void _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) 
 1401.64 +{
 1401.65 +
 1401.66 +  if (__shift != 0) {
 1401.67 +    const size_t __wshift = __shift / __BITS_PER_WORD;
 1401.68 +    const size_t __offset = __shift % __BITS_PER_WORD;
 1401.69 +    const size_t __limit = _Nw - __wshift - 1;
 1401.70 +
 1401.71 +    if (__offset == 0)
 1401.72 +      for (size_t __n = 0; __n <= __limit; ++__n)
 1401.73 +        _M_w[__n] = _M_w[__n + __wshift];
 1401.74 +
 1401.75 +    else {
 1401.76 +      const size_t __sub_offset = __BITS_PER_WORD - __offset;
 1401.77 +      for (size_t __n = 0; __n < __limit; ++__n)
 1401.78 +        _M_w[__n] = (_M_w[__n + __wshift] >> __offset) |
 1401.79 +                    (_M_w[__n + __wshift + 1] << __sub_offset);
 1401.80 +      _M_w[__limit] = _M_w[_Nw-1] >> __offset;
 1401.81 +    }
 1401.82 +
 1401.83 +    fill(_M_w + __limit + 1, _M_w + _Nw, __STATIC_CAST(_WordT,0));
 1401.84 +  }
 1401.85 +}
 1401.86 +
 1401.87 +template<size_t _Nw>
 1401.88 +unsigned long _Base_bitset<_Nw>::_M_do_to_ulong() const
 1401.89 +{
 1401.90 +  for (size_t __i = 1; __i < _Nw; ++__i) 
 1401.91 +    if (_M_w[__i]) 
 1401.92 +      __stl_throw_overflow_error("bitset");
 1401.93 +  return _M_w[0];
 1401.94 +} // End _M_do_to_ulong
 1401.95 +
 1401.96 +template<size_t _Nw>
 1401.97 +size_t _Base_bitset<_Nw>::_M_do_find_first(size_t __not_found) const 
 1401.98 +{
 1401.99 +  for ( size_t __i = 0; __i < _Nw; __i++ ) {
1401.100 +    _WordT __thisword = _M_w[__i];
1401.101 +    if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1401.102 +      // find byte within word
1401.103 +      for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
1401.104 +        unsigned char __this_byte
1401.105 +          = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1401.106 +        if ( __this_byte )
1401.107 +          return __i*__BITS_PER_WORD + __j*CHAR_BIT +
1401.108 +            _Bs_G<bool>::_S_first_one[__this_byte];
1401.109 +
1401.110 +        __thisword >>= CHAR_BIT;
1401.111 +      }
1401.112 +    }
1401.113 +  }
1401.114 +  // not found, so return an indication of failure.
1401.115 +  return __not_found;
1401.116 +}
1401.117 +
1401.118 +template<size_t _Nw>
1401.119 +size_t
1401.120 +_Base_bitset<_Nw>::_M_do_find_next(size_t __prev, 
1401.121 +                                   size_t __not_found) const
1401.122 +{
1401.123 +  // make bound inclusive
1401.124 +  ++__prev;
1401.125 +
1401.126 +  // check out of bounds
1401.127 +  if ( __prev >= _Nw * __BITS_PER_WORD )
1401.128 +    return __not_found;
1401.129 +
1401.130 +    // search first word
1401.131 +  size_t __i = _S_whichword(__prev);
1401.132 +  _WordT __thisword = _M_w[__i];
1401.133 +
1401.134 +    // mask off bits below bound
1401.135 +  __thisword &= (~__STATIC_CAST(_WordT,0)) << _S_whichbit(__prev);
1401.136 +
1401.137 +  if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1401.138 +    // find byte within word
1401.139 +    // get first byte into place
1401.140 +    __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
1401.141 +    for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
1401.142 +      unsigned char __this_byte
1401.143 +        = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1401.144 +      if ( __this_byte )
1401.145 +        return __i*__BITS_PER_WORD + __j*CHAR_BIT +
1401.146 +          _Bs_G<bool>::_S_first_one[__this_byte];
1401.147 +
1401.148 +      __thisword >>= CHAR_BIT;
1401.149 +    }
1401.150 +  }
1401.151 +
1401.152 +  // check subsequent words
1401.153 +  __i++;
1401.154 +  for ( ; __i < _Nw; __i++ ) {
1401.155 +    /* _WordT */ __thisword = _M_w[__i];
1401.156 +    if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1401.157 +      // find byte within word
1401.158 +      for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
1401.159 +        unsigned char __this_byte
1401.160 +          = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1401.161 +        if ( __this_byte )
1401.162 +          return __i*__BITS_PER_WORD + __j*CHAR_BIT +
1401.163 +            _Bs_G<bool>::_S_first_one[__this_byte];
1401.164 +
1401.165 +        __thisword >>= CHAR_BIT;
1401.166 +      }
1401.167 +    }
1401.168 +  }
1401.169 +
1401.170 +  // not found, so return an indication of failure.
1401.171 +  return __not_found;
1401.172 +} // end _M_do_find_next
1401.173 +
1401.174 +
1401.175 +
1401.176 +# if ! defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1401.177 +
1401.178 +#if defined ( _STLP_USE_NEW_IOSTREAMS)
1401.179 +
1401.180 +template <class _CharT, class _Traits, size_t _Nb>
1401.181 +basic_istream<_CharT, _Traits>& _STLP_CALL
1401.182 +operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x)
1401.183 +{
1401.184 +  basic_string<_CharT, _Traits> __tmp;
1401.185 +  __tmp.reserve(_Nb);
1401.186 +
1401.187 +  // Skip whitespace
1401.188 +  typename basic_istream<_CharT, _Traits>::sentry __sentry(__is);
1401.189 +  if (__sentry) {
1401.190 +    basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
1401.191 +    for (size_t __i = 0; __i < _Nb; ++__i) {
1401.192 +      static typename _Traits::int_type __eof = _Traits::eof();
1401.193 +
1401.194 +      typename _Traits::int_type __c1 = __buf->sbumpc();
1401.195 +      if (_Traits::eq_int_type(__c1, __eof)) {
1401.196 +        __is.setstate(ios_base::eofbit);
1401.197 +        break;
1401.198 +      }
1401.199 +      else {
1401.200 +        char __c2 = _Traits::to_char_type(__c1);
1401.201 +        char __c  = __is.narrow(__c2, '*');
1401.202 +
1401.203 +        if (__c == '0' || __c == '1')
1401.204 +          __tmp.push_back(__c);
1401.205 +        else if (_Traits::eq_int_type(__buf->sputbackc(__c2), __eof)) {
1401.206 +          __is.setstate(ios_base::failbit);
1401.207 +          break;
1401.208 +        }
1401.209 +      }
1401.210 +    }
1401.211 +
1401.212 +    if (__tmp.empty())
1401.213 +      __is.setstate(ios_base::failbit);
1401.214 +    else
1401.215 +      __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb);
1401.216 +  }
1401.217 +
1401.218 +  return __is;
1401.219 +}
1401.220 +
1401.221 +template <class _CharT, class _Traits, size_t _Nb>
1401.222 +basic_ostream<_CharT, _Traits>& _STLP_CALL
1401.223 +operator<<(basic_ostream<_CharT, _Traits>& __os,
1401.224 +           const bitset<_Nb>& __x)
1401.225 +{
1401.226 +  basic_string<_CharT, _Traits> __tmp;
1401.227 +  __x._M_copy_to_string(__tmp);
1401.228 +  return __os << __tmp;
1401.229 +}
1401.230 +
1401.231 +#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
1401.232 +
1401.233 +// (reg) For Watcom IO, this tells if ostream class is in .exe or in .dll
1401.234 +template <size_t _Nb>
1401.235 +_ISTREAM_DLL& _STLP_CALL
1401.236 +operator>>(_ISTREAM_DLL& __is, bitset<_Nb>& __x) {
1401.237 +  string __tmp;
1401.238 +  __tmp.reserve(_Nb);
1401.239 +
1401.240 +  // In new templatized iostreams, use istream::sentry
1401.241 +  if (__is.flags() & ios::skipws) {
1401.242 +    char __c;
1401.243 +    do 
1401.244 +      __is.get(__c);
1401.245 +    while (__is && isspace(__c));
1401.246 +    if (__is)
1401.247 +      __is.putback(__c);
1401.248 +  }
1401.249 +
1401.250 +  for (size_t __i = 0; __i < _Nb; ++__i) {
1401.251 +    char __c;
1401.252 +    __is.get(__c);
1401.253 +
1401.254 +    if (!__is)
1401.255 +      break;
1401.256 +    else if (__c != '0' && __c != '1') {
1401.257 +      __is.putback(__c);
1401.258 +      break;
1401.259 +    }
1401.260 +    else
1401.261 +      __tmp.push_back(__c);
1401.262 +  }
1401.263 +
1401.264 +  if (__tmp.empty()) 
1401.265 +    __is.clear(__is.rdstate() | ios::failbit);
1401.266 +  else
1401.267 +    __x._M_copy_from_string(__tmp, __STATIC_CAST(size_t,0), _Nb);
1401.268 +
1401.269 +  return __is;
1401.270 +}
1401.271 +
1401.272 +# endif /* _STLP_USE_NEW_IOSTREAMS */
1401.273 +
1401.274 +# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1401.275 +
1401.276 +
1401.277 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
1401.278 +
1401.279 +// ------------------------------------------------------------
1401.280 +// Lookup tables for find and count operations.
1401.281 +
1401.282 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1401.283 +template<class _Dummy>
1401.284 +const unsigned char _Bs_G<_Dummy>::_S_bit_count[256] = {
1401.285 +# else
1401.286 +const unsigned char _Bs_G<bool>::_S_bit_count[256] _STLP_WEAK = {
1401.287 +# endif
1401.288 +  0, /*   0 */ 1, /*   1 */ 1, /*   2 */ 2, /*   3 */ 1, /*   4 */
1401.289 +  2, /*   5 */ 2, /*   6 */ 3, /*   7 */ 1, /*   8 */ 2, /*   9 */
1401.290 +  2, /*  10 */ 3, /*  11 */ 2, /*  12 */ 3, /*  13 */ 3, /*  14 */
1401.291 +  4, /*  15 */ 1, /*  16 */ 2, /*  17 */ 2, /*  18 */ 3, /*  19 */
1401.292 +  2, /*  20 */ 3, /*  21 */ 3, /*  22 */ 4, /*  23 */ 2, /*  24 */
1401.293 +  3, /*  25 */ 3, /*  26 */ 4, /*  27 */ 3, /*  28 */ 4, /*  29 */
1401.294 +  4, /*  30 */ 5, /*  31 */ 1, /*  32 */ 2, /*  33 */ 2, /*  34 */
1401.295 +  3, /*  35 */ 2, /*  36 */ 3, /*  37 */ 3, /*  38 */ 4, /*  39 */
1401.296 +  2, /*  40 */ 3, /*  41 */ 3, /*  42 */ 4, /*  43 */ 3, /*  44 */
1401.297 +  4, /*  45 */ 4, /*  46 */ 5, /*  47 */ 2, /*  48 */ 3, /*  49 */
1401.298 +  3, /*  50 */ 4, /*  51 */ 3, /*  52 */ 4, /*  53 */ 4, /*  54 */
1401.299 +  5, /*  55 */ 3, /*  56 */ 4, /*  57 */ 4, /*  58 */ 5, /*  59 */
1401.300 +  4, /*  60 */ 5, /*  61 */ 5, /*  62 */ 6, /*  63 */ 1, /*  64 */
1401.301 +  2, /*  65 */ 2, /*  66 */ 3, /*  67 */ 2, /*  68 */ 3, /*  69 */
1401.302 +  3, /*  70 */ 4, /*  71 */ 2, /*  72 */ 3, /*  73 */ 3, /*  74 */
1401.303 +  4, /*  75 */ 3, /*  76 */ 4, /*  77 */ 4, /*  78 */ 5, /*  79 */
1401.304 +  2, /*  80 */ 3, /*  81 */ 3, /*  82 */ 4, /*  83 */ 3, /*  84 */
1401.305 +  4, /*  85 */ 4, /*  86 */ 5, /*  87 */ 3, /*  88 */ 4, /*  89 */
1401.306 +  4, /*  90 */ 5, /*  91 */ 4, /*  92 */ 5, /*  93 */ 5, /*  94 */
1401.307 +  6, /*  95 */ 2, /*  96 */ 3, /*  97 */ 3, /*  98 */ 4, /*  99 */
1401.308 +  3, /* 100 */ 4, /* 101 */ 4, /* 102 */ 5, /* 103 */ 3, /* 104 */
1401.309 +  4, /* 105 */ 4, /* 106 */ 5, /* 107 */ 4, /* 108 */ 5, /* 109 */
1401.310 +  5, /* 110 */ 6, /* 111 */ 3, /* 112 */ 4, /* 113 */ 4, /* 114 */
1401.311 +  5, /* 115 */ 4, /* 116 */ 5, /* 117 */ 5, /* 118 */ 6, /* 119 */
1401.312 +  4, /* 120 */ 5, /* 121 */ 5, /* 122 */ 6, /* 123 */ 5, /* 124 */
1401.313 +  6, /* 125 */ 6, /* 126 */ 7, /* 127 */ 1, /* 128 */ 2, /* 129 */
1401.314 +  2, /* 130 */ 3, /* 131 */ 2, /* 132 */ 3, /* 133 */ 3, /* 134 */
1401.315 +  4, /* 135 */ 2, /* 136 */ 3, /* 137 */ 3, /* 138 */ 4, /* 139 */
1401.316 +  3, /* 140 */ 4, /* 141 */ 4, /* 142 */ 5, /* 143 */ 2, /* 144 */
1401.317 +  3, /* 145 */ 3, /* 146 */ 4, /* 147 */ 3, /* 148 */ 4, /* 149 */
1401.318 +  4, /* 150 */ 5, /* 151 */ 3, /* 152 */ 4, /* 153 */ 4, /* 154 */
1401.319 +  5, /* 155 */ 4, /* 156 */ 5, /* 157 */ 5, /* 158 */ 6, /* 159 */
1401.320 +  2, /* 160 */ 3, /* 161 */ 3, /* 162 */ 4, /* 163 */ 3, /* 164 */
1401.321 +  4, /* 165 */ 4, /* 166 */ 5, /* 167 */ 3, /* 168 */ 4, /* 169 */
1401.322 +  4, /* 170 */ 5, /* 171 */ 4, /* 172 */ 5, /* 173 */ 5, /* 174 */
1401.323 +  6, /* 175 */ 3, /* 176 */ 4, /* 177 */ 4, /* 178 */ 5, /* 179 */
1401.324 +  4, /* 180 */ 5, /* 181 */ 5, /* 182 */ 6, /* 183 */ 4, /* 184 */
1401.325 +  5, /* 185 */ 5, /* 186 */ 6, /* 187 */ 5, /* 188 */ 6, /* 189 */
1401.326 +  6, /* 190 */ 7, /* 191 */ 2, /* 192 */ 3, /* 193 */ 3, /* 194 */
1401.327 +  4, /* 195 */ 3, /* 196 */ 4, /* 197 */ 4, /* 198 */ 5, /* 199 */
1401.328 +  3, /* 200 */ 4, /* 201 */ 4, /* 202 */ 5, /* 203 */ 4, /* 204 */
1401.329 +  5, /* 205 */ 5, /* 206 */ 6, /* 207 */ 3, /* 208 */ 4, /* 209 */
1401.330 +  4, /* 210 */ 5, /* 211 */ 4, /* 212 */ 5, /* 213 */ 5, /* 214 */
1401.331 +  6, /* 215 */ 4, /* 216 */ 5, /* 217 */ 5, /* 218 */ 6, /* 219 */
1401.332 +  5, /* 220 */ 6, /* 221 */ 6, /* 222 */ 7, /* 223 */ 3, /* 224 */
1401.333 +  4, /* 225 */ 4, /* 226 */ 5, /* 227 */ 4, /* 228 */ 5, /* 229 */
1401.334 +  5, /* 230 */ 6, /* 231 */ 4, /* 232 */ 5, /* 233 */ 5, /* 234 */
1401.335 +  6, /* 235 */ 5, /* 236 */ 6, /* 237 */ 6, /* 238 */ 7, /* 239 */
1401.336 +  4, /* 240 */ 5, /* 241 */ 5, /* 242 */ 6, /* 243 */ 5, /* 244 */
1401.337 +  6, /* 245 */ 6, /* 246 */ 7, /* 247 */ 5, /* 248 */ 6, /* 249 */
1401.338 +  6, /* 250 */ 7, /* 251 */ 6, /* 252 */ 7, /* 253 */ 7, /* 254 */
1401.339 +  8  /* 255 */
1401.340 +}; // end _Bitset_global
1401.341 +
1401.342 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1401.343 +template<class _Dummy>
1401.344 +const unsigned char _Bs_G<_Dummy>::_S_first_one[256] = {
1401.345 +# else
1401.346 +const unsigned char _Bs_G<bool>::_S_first_one[256] _STLP_WEAK = {
1401.347 +# endif
1401.348 +
1401.349 +  0, /*   0 */ 0, /*   1 */ 1, /*   2 */ 0, /*   3 */ 2, /*   4 */
1401.350 +  0, /*   5 */ 1, /*   6 */ 0, /*   7 */ 3, /*   8 */ 0, /*   9 */
1401.351 +  1, /*  10 */ 0, /*  11 */ 2, /*  12 */ 0, /*  13 */ 1, /*  14 */
1401.352 +  0, /*  15 */ 4, /*  16 */ 0, /*  17 */ 1, /*  18 */ 0, /*  19 */
1401.353 +  2, /*  20 */ 0, /*  21 */ 1, /*  22 */ 0, /*  23 */ 3, /*  24 */
1401.354 +  0, /*  25 */ 1, /*  26 */ 0, /*  27 */ 2, /*  28 */ 0, /*  29 */
1401.355 +  1, /*  30 */ 0, /*  31 */ 5, /*  32 */ 0, /*  33 */ 1, /*  34 */
1401.356 +  0, /*  35 */ 2, /*  36 */ 0, /*  37 */ 1, /*  38 */ 0, /*  39 */
1401.357 +  3, /*  40 */ 0, /*  41 */ 1, /*  42 */ 0, /*  43 */ 2, /*  44 */
1401.358 +  0, /*  45 */ 1, /*  46 */ 0, /*  47 */ 4, /*  48 */ 0, /*  49 */
1401.359 +  1, /*  50 */ 0, /*  51 */ 2, /*  52 */ 0, /*  53 */ 1, /*  54 */
1401.360 +  0, /*  55 */ 3, /*  56 */ 0, /*  57 */ 1, /*  58 */ 0, /*  59 */
1401.361 +  2, /*  60 */ 0, /*  61 */ 1, /*  62 */ 0, /*  63 */ 6, /*  64 */
1401.362 +  0, /*  65 */ 1, /*  66 */ 0, /*  67 */ 2, /*  68 */ 0, /*  69 */
1401.363 +  1, /*  70 */ 0, /*  71 */ 3, /*  72 */ 0, /*  73 */ 1, /*  74 */
1401.364 +  0, /*  75 */ 2, /*  76 */ 0, /*  77 */ 1, /*  78 */ 0, /*  79 */
1401.365 +  4, /*  80 */ 0, /*  81 */ 1, /*  82 */ 0, /*  83 */ 2, /*  84 */
1401.366 +  0, /*  85 */ 1, /*  86 */ 0, /*  87 */ 3, /*  88 */ 0, /*  89 */
1401.367 +  1, /*  90 */ 0, /*  91 */ 2, /*  92 */ 0, /*  93 */ 1, /*  94 */
1401.368 +  0, /*  95 */ 5, /*  96 */ 0, /*  97 */ 1, /*  98 */ 0, /*  99 */
1401.369 +  2, /* 100 */ 0, /* 101 */ 1, /* 102 */ 0, /* 103 */ 3, /* 104 */
1401.370 +  0, /* 105 */ 1, /* 106 */ 0, /* 107 */ 2, /* 108 */ 0, /* 109 */
1401.371 +  1, /* 110 */ 0, /* 111 */ 4, /* 112 */ 0, /* 113 */ 1, /* 114 */
1401.372 +  0, /* 115 */ 2, /* 116 */ 0, /* 117 */ 1, /* 118 */ 0, /* 119 */
1401.373 +  3, /* 120 */ 0, /* 121 */ 1, /* 122 */ 0, /* 123 */ 2, /* 124 */
1401.374 +  0, /* 125 */ 1, /* 126 */ 0, /* 127 */ 7, /* 128 */ 0, /* 129 */
1401.375 +  1, /* 130 */ 0, /* 131 */ 2, /* 132 */ 0, /* 133 */ 1, /* 134 */
1401.376 +  0, /* 135 */ 3, /* 136 */ 0, /* 137 */ 1, /* 138 */ 0, /* 139 */
1401.377 +  2, /* 140 */ 0, /* 141 */ 1, /* 142 */ 0, /* 143 */ 4, /* 144 */
1401.378 +  0, /* 145 */ 1, /* 146 */ 0, /* 147 */ 2, /* 148 */ 0, /* 149 */
1401.379 +  1, /* 150 */ 0, /* 151 */ 3, /* 152 */ 0, /* 153 */ 1, /* 154 */
1401.380 +  0, /* 155 */ 2, /* 156 */ 0, /* 157 */ 1, /* 158 */ 0, /* 159 */
1401.381 +  5, /* 160 */ 0, /* 161 */ 1, /* 162 */ 0, /* 163 */ 2, /* 164 */
1401.382 +  0, /* 165 */ 1, /* 166 */ 0, /* 167 */ 3, /* 168 */ 0, /* 169 */
1401.383 +  1, /* 170 */ 0, /* 171 */ 2, /* 172 */ 0, /* 173 */ 1, /* 174 */
1401.384 +  0, /* 175 */ 4, /* 176 */ 0, /* 177 */ 1, /* 178 */ 0, /* 179 */
1401.385 +  2, /* 180 */ 0, /* 181 */ 1, /* 182 */ 0, /* 183 */ 3, /* 184 */
1401.386 +  0, /* 185 */ 1, /* 186 */ 0, /* 187 */ 2, /* 188 */ 0, /* 189 */
1401.387 +  1, /* 190 */ 0, /* 191 */ 6, /* 192 */ 0, /* 193 */ 1, /* 194 */
1401.388 +  0, /* 195 */ 2, /* 196 */ 0, /* 197 */ 1, /* 198 */ 0, /* 199 */
1401.389 +  3, /* 200 */ 0, /* 201 */ 1, /* 202 */ 0, /* 203 */ 2, /* 204 */
1401.390 +  0, /* 205 */ 1, /* 206 */ 0, /* 207 */ 4, /* 208 */ 0, /* 209 */
1401.391 +  1, /* 210 */ 0, /* 211 */ 2, /* 212 */ 0, /* 213 */ 1, /* 214 */
1401.392 +  0, /* 215 */ 3, /* 216 */ 0, /* 217 */ 1, /* 218 */ 0, /* 219 */
1401.393 +  2, /* 220 */ 0, /* 221 */ 1, /* 222 */ 0, /* 223 */ 5, /* 224 */
1401.394 +  0, /* 225 */ 1, /* 226 */ 0, /* 227 */ 2, /* 228 */ 0, /* 229 */
1401.395 +  1, /* 230 */ 0, /* 231 */ 3, /* 232 */ 0, /* 233 */ 1, /* 234 */
1401.396 +  0, /* 235 */ 2, /* 236 */ 0, /* 237 */ 1, /* 238 */ 0, /* 239 */
1401.397 +  4, /* 240 */ 0, /* 241 */ 1, /* 242 */ 0, /* 243 */ 2, /* 244 */
1401.398 +  0, /* 245 */ 1, /* 246 */ 0, /* 247 */ 3, /* 248 */ 0, /* 249 */
1401.399 +  1, /* 250 */ 0, /* 251 */ 2, /* 252 */ 0, /* 253 */ 1, /* 254 */
1401.400 +  0, /* 255 */
1401.401 +}; // end _Bitset_global
1401.402 +
1401.403 +# endif /* defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) */
1401.404 +
1401.405 +_STLP_END_NAMESPACE
1401.406 +
1401.407 +#  undef __BITS_PER_WORD
1401.408 +#  undef bitset
1401.409 +
1401.410 +#endif /*  _STLP_BITSET_C */
  1402.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1402.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_bitset.h	Wed Mar 31 12:27:01 2010 +0100
  1402.3 @@ -0,0 +1,791 @@
  1402.4 +/*
  1402.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1402.6 + * Copyright (c) 1998
  1402.7 + * Silicon Graphics Computer Systems, Inc.
  1402.8 + *
  1402.9 + * Copyright (c) 1999 
 1402.10 + * Boris Fomitchev
 1402.11 + *
 1402.12 + * This material is provided "as is", with absolutely no warranty expressed
 1402.13 + * or implied. Any use is at your own risk.
 1402.14 + *
 1402.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1402.16 + * without fee, provided the above notices are retained on all copies.
 1402.17 + * Permission to modify the code and to distribute modified code is granted,
 1402.18 + * provided the above notices are retained, and a notice that the code was
 1402.19 + * modified is included with the above copyright notice.
 1402.20 + *
 1402.21 + */
 1402.22 +
 1402.23 +#ifndef _STLP_BITSET_H
 1402.24 +#define _STLP_BITSET_H
 1402.25 +
 1402.26 +// A bitset of size N has N % (sizeof(unsigned long) * CHAR_BIT) unused 
 1402.27 +// bits.  (They are the high- order bits in the highest word.)  It is
 1402.28 +// a class invariant of class bitset<> that those unused bits are
 1402.29 +// always zero.
 1402.30 +
 1402.31 +// Most of the actual code isn't contained in bitset<> itself, but in the 
 1402.32 +// base class _Base_bitset.  The base class works with whole words, not with
 1402.33 +// individual bits.  This allows us to specialize _Base_bitset for the
 1402.34 +// important special case where the bitset is only a single word.
 1402.35 +
 1402.36 +// The C++ standard does not define the precise semantics of operator[].
 1402.37 +// In this implementation the const version of operator[] is equivalent
 1402.38 +// to test(), except that it does no range checking.  The non-const version
 1402.39 +// returns a reference to a bit, again without doing any range checking.
 1402.40 +
 1402.41 +
 1402.42 +# ifndef _STLP_INTERNAL_ALGOBASE_H
 1402.43 +#  include <stl/_algobase.h>
 1402.44 +# endif
 1402.45 +
 1402.46 +# ifndef _STLP_INTERNAL_ALLOC_H
 1402.47 +#  include <stl/_alloc.h>
 1402.48 +# endif
 1402.49 +
 1402.50 +# ifndef _STLP_INTERNAL_ITERATOR_H
 1402.51 +#  include <stl/_iterator.h>
 1402.52 +# endif
 1402.53 +
 1402.54 +# ifndef _STLP_INTERNAL_UNINITIALIZED_H
 1402.55 +#  include <stl/_uninitialized.h>
 1402.56 +# endif
 1402.57 +
 1402.58 +# ifndef _STLP_RANGE_ERRORS_H
 1402.59 +#  include <stl/_range_errors.h>
 1402.60 +# endif
 1402.61 +
 1402.62 +# ifndef _STLP_STRING
 1402.63 +#  include <string>
 1402.64 +# endif
 1402.65 +
 1402.66 +# ifndef _STLP_ISTREAM
 1402.67 +#  include <istream>
 1402.68 +# endif
 1402.69 +
 1402.70 +#define __BITS_PER_WORD (CHAR_BIT*sizeof(unsigned long))
 1402.71 +#define __BITSET_WORDS(__n) ((__n + __BITS_PER_WORD - 1)/__BITS_PER_WORD)
 1402.72 +
 1402.73 +_STLP_BEGIN_NAMESPACE
 1402.74 +
 1402.75 +// structure to aid in counting bits
 1402.76 +template<class _Dummy> 
 1402.77 +class _Bs_G {
 1402.78 +public:
 1402.79 +  static const unsigned char _S_bit_count[256];
 1402.80 +  // Mapping from 8 bit unsigned integers to the index of the first one
 1402.81 +  // bit:
 1402.82 +  static const unsigned char _S_first_one[256];
 1402.83 +};
 1402.84 +
 1402.85 +//
 1402.86 +// Base class: general case.
 1402.87 +//
 1402.88 +
 1402.89 +template<size_t _Nw>
 1402.90 +struct _Base_bitset {
 1402.91 +  typedef unsigned long _WordT;
 1402.92 +
 1402.93 +  _WordT _M_w[_Nw];                // 0 is the least significant word.
 1402.94 +
 1402.95 +  _Base_bitset( void ) { _M_do_reset(); }
 1402.96 +
 1402.97 +  _Base_bitset(unsigned long __val) {
 1402.98 +    _M_do_reset();
 1402.99 +    _M_w[0] = __val;
1402.100 +  }
1402.101 +  
1402.102 +  static size_t _STLP_CALL _S_whichword( size_t __pos ) {
1402.103 +    return __pos / __BITS_PER_WORD;
1402.104 +  }
1402.105 +  static size_t _STLP_CALL _S_whichbyte( size_t __pos ) {
1402.106 +    return (__pos % __BITS_PER_WORD) / CHAR_BIT;
1402.107 +  }
1402.108 +  static size_t _STLP_CALL _S_whichbit( size_t __pos ) {
1402.109 +    return __pos % __BITS_PER_WORD;
1402.110 +  }
1402.111 +  static _WordT _STLP_CALL _S_maskbit( size_t __pos ) {
1402.112 +    return __STATIC_CAST(_WordT,1) << _S_whichbit(__pos);
1402.113 +  }
1402.114 +
1402.115 +  _WordT& _M_getword(size_t __pos)       { return _M_w[_S_whichword(__pos)]; }
1402.116 +  _WordT  _M_getword(size_t __pos) const { return _M_w[_S_whichword(__pos)]; }
1402.117 +
1402.118 +  _WordT& _M_hiword()       { return _M_w[_Nw - 1]; }
1402.119 +  _WordT  _M_hiword() const { return _M_w[_Nw - 1]; }
1402.120 +
1402.121 +  void _M_do_and(const _Base_bitset<_Nw>& __x) {
1402.122 +    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1402.123 +      _M_w[__i] &= __x._M_w[__i];
1402.124 +    }
1402.125 +  }
1402.126 +
1402.127 +  void _M_do_or(const _Base_bitset<_Nw>& __x) {
1402.128 +    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1402.129 +      _M_w[__i] |= __x._M_w[__i];
1402.130 +    }
1402.131 +  }
1402.132 +
1402.133 +  void _M_do_xor(const _Base_bitset<_Nw>& __x) {
1402.134 +    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1402.135 +      _M_w[__i] ^= __x._M_w[__i];
1402.136 +    }
1402.137 +  }
1402.138 +
1402.139 +  void _M_do_left_shift(size_t __shift);
1402.140 +
1402.141 +  void _M_do_right_shift(size_t __shift);
1402.142 +
1402.143 +  void _M_do_flip() {
1402.144 +    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1402.145 +      _M_w[__i] = ~_M_w[__i];
1402.146 +    }
1402.147 +  }
1402.148 +
1402.149 +  void _M_do_set() {
1402.150 +    for ( size_t __i = 0; __i < _Nw; __i++ ) {
1402.151 +      _M_w[__i] = ~__STATIC_CAST(_WordT,0);
1402.152 +    }
1402.153 +  }
1402.154 +
1402.155 +
1402.156 +  void _M_do_reset() { memset(_M_w, 0, _Nw * sizeof(_WordT)); }
1402.157 +
1402.158 +  bool _M_is_equal(const _Base_bitset<_Nw>& __x) const {
1402.159 +    for (size_t __i = 0; __i < _Nw; ++__i) {
1402.160 +      if (_M_w[__i] != __x._M_w[__i])
1402.161 +        return false;
1402.162 +    }
1402.163 +    return true;
1402.164 +  }
1402.165 +
1402.166 +  bool _M_is_any() const {
1402.167 +    for ( size_t __i = 0; __i < _Nw ; __i++ ) {
1402.168 +      if ( _M_w[__i] != __STATIC_CAST(_WordT,0) )
1402.169 +        return true;
1402.170 +    }
1402.171 +    return false;
1402.172 +  }
1402.173 +
1402.174 +  size_t _M_do_count() const {
1402.175 +    size_t __result = 0;
1402.176 +    const unsigned char* __byte_ptr = (const unsigned char*)_M_w;
1402.177 +    const unsigned char* __end_ptr = (const unsigned char*)(_M_w+_Nw);
1402.178 +
1402.179 +    while ( __byte_ptr < __end_ptr ) {
1402.180 +      __result += _Bs_G<bool>::_S_bit_count[*__byte_ptr];
1402.181 +      __byte_ptr++;
1402.182 +    }
1402.183 +    return __result;
1402.184 +  }
1402.185 +
1402.186 +  unsigned long _M_do_to_ulong() const; 
1402.187 +
1402.188 +  // find first "on" bit
1402.189 +  size_t _M_do_find_first(size_t __not_found) const;
1402.190 +
1402.191 +  // find the next "on" bit that follows "prev"
1402.192 +  size_t _M_do_find_next(size_t __prev, size_t __not_found) const;
1402.193 +};
1402.194 +
1402.195 +//
1402.196 +// Base class: specialization for a single word.
1402.197 +//
1402.198 +
1402.199 +_STLP_TEMPLATE_NULL
1402.200 +struct _Base_bitset<1UL> {
1402.201 +  typedef unsigned long _WordT;
1402.202 +  typedef _Base_bitset<1UL> _Self;
1402.203 +
1402.204 +  _WordT _M_w;
1402.205 +
1402.206 +  _Base_bitset( void ) : _M_w(0) {}
1402.207 +  _Base_bitset(unsigned long __val) : _M_w(__val) {}
1402.208 +  
1402.209 +  static size_t _STLP_CALL _S_whichword( size_t __pos ) {
1402.210 +    return __pos / __BITS_PER_WORD ;
1402.211 +  }
1402.212 +  static size_t _STLP_CALL _S_whichbyte( size_t __pos ) {
1402.213 +    return (__pos % __BITS_PER_WORD) / CHAR_BIT;
1402.214 +  }
1402.215 +  static size_t _STLP_CALL _S_whichbit( size_t __pos ) {
1402.216 +    return __pos % __BITS_PER_WORD;
1402.217 +  }
1402.218 +  static _WordT _STLP_CALL _S_maskbit( size_t __pos ) {
1402.219 +    return (__STATIC_CAST(_WordT,1)) << _S_whichbit(__pos);
1402.220 +  }
1402.221 +
1402.222 +  _WordT& _M_getword(size_t)       { return _M_w; }
1402.223 +  _WordT  _M_getword(size_t) const { return _M_w; }
1402.224 +
1402.225 +  _WordT& _M_hiword()       { return _M_w; }
1402.226 +  _WordT  _M_hiword() const { return _M_w; }
1402.227 +
1402.228 +
1402.229 +  void _M_do_and(const _Self& __x) { _M_w &= __x._M_w; }
1402.230 +  void _M_do_or(const _Self& __x)  { _M_w |= __x._M_w; }
1402.231 +  void _M_do_xor(const _Self& __x) { _M_w ^= __x._M_w; }
1402.232 +  void _M_do_left_shift(size_t __shift)     { _M_w <<= __shift; }
1402.233 +  void _M_do_right_shift(size_t __shift)    { _M_w >>= __shift; }
1402.234 +  void _M_do_flip()                       { _M_w = ~_M_w; }
1402.235 +  void _M_do_set()                        { _M_w = ~__STATIC_CAST(_WordT,0); }
1402.236 +  void _M_do_reset()                      { _M_w = 0; }
1402.237 +
1402.238 +  bool _M_is_equal(const _Self& __x) const {
1402.239 +    return _M_w == __x._M_w;
1402.240 +  }
1402.241 +  bool _M_is_any() const {
1402.242 +    return _M_w != 0;
1402.243 +  }
1402.244 +
1402.245 +  size_t _M_do_count() const {
1402.246 +    size_t __result = 0;
1402.247 +    const unsigned char* __byte_ptr = (const unsigned char*)&_M_w;
1402.248 +    const unsigned char* __end_ptr = ((const unsigned char*)&_M_w)+sizeof(_M_w);
1402.249 +    while ( __byte_ptr < __end_ptr ) {
1402.250 +      __result += _Bs_G<bool>::_S_bit_count[*__byte_ptr];
1402.251 +      __byte_ptr++;
1402.252 +    }
1402.253 +    return __result;
1402.254 +  }
1402.255 +
1402.256 +  unsigned long _M_do_to_ulong() const { return _M_w; }
1402.257 +
1402.258 +  inline size_t _M_do_find_first(size_t __not_found) const;
1402.259 +
1402.260 +  // find the next "on" bit that follows "prev"
1402.261 +  inline size_t _M_do_find_next(size_t __prev, size_t __not_found) const; 
1402.262 +
1402.263 +};
1402.264 +
1402.265 +
1402.266 +// ------------------------------------------------------------
1402.267 +//
1402.268 +// Definitions of should-be-non-inline functions from the single-word version of
1402.269 +//  _Base_bitset.
1402.270 +//
1402.271 +
1402.272 +inline size_t 
1402.273 +_Base_bitset<1UL>::_M_do_find_first(size_t __not_found) const
1402.274 +{
1402.275 +  //  typedef unsigned long _WordT;
1402.276 +  _WordT __thisword = _M_w;
1402.277 +
1402.278 +  if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1402.279 +    // find byte within word
1402.280 +    for ( size_t __j = 0; __j < sizeof(_WordT); __j++ ) {
1402.281 +      unsigned char __this_byte
1402.282 +        = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1402.283 +      if ( __this_byte )
1402.284 +        return __j*CHAR_BIT + _Bs_G<bool>::_S_first_one[__this_byte];
1402.285 +
1402.286 +      __thisword >>= CHAR_BIT;
1402.287 +    }
1402.288 +  }
1402.289 +  // not found, so return a value that indicates failure.
1402.290 +  return __not_found;
1402.291 +}
1402.292 +
1402.293 +inline size_t 
1402.294 +_Base_bitset<1UL>::_M_do_find_next(size_t __prev, 
1402.295 +                                   size_t __not_found ) const
1402.296 +{
1402.297 +  // make bound inclusive
1402.298 +  ++__prev;
1402.299 +
1402.300 +  // check out of bounds
1402.301 +  if ( __prev >= __BITS_PER_WORD )
1402.302 +    return __not_found;
1402.303 +
1402.304 +    // search first (and only) word
1402.305 +  _WordT __thisword = _M_w;
1402.306 +
1402.307 +  // mask off bits below bound
1402.308 +  __thisword &= (~__STATIC_CAST(_WordT,0)) << _S_whichbit(__prev);
1402.309 +
1402.310 +  if ( __thisword != __STATIC_CAST(_WordT,0) ) {
1402.311 +    // find byte within word
1402.312 +    // get first byte into place
1402.313 +    __thisword >>= _S_whichbyte(__prev) * CHAR_BIT;
1402.314 +    for ( size_t __j = _S_whichbyte(__prev); __j < sizeof(_WordT); __j++ ) {
1402.315 +      unsigned char __this_byte
1402.316 +        = __STATIC_CAST(unsigned char,(__thisword & (~(unsigned char)0)));
1402.317 +      if ( __this_byte )
1402.318 +        return __j*CHAR_BIT + _Bs_G<bool>::_S_first_one[__this_byte];
1402.319 +
1402.320 +      __thisword >>= CHAR_BIT;
1402.321 +    }
1402.322 +  }
1402.323 +
1402.324 +  // not found, so return a value that indicates failure.
1402.325 +  return __not_found;
1402.326 +} // end _M_do_find_next
1402.327 +
1402.328 +
1402.329 +// ------------------------------------------------------------
1402.330 +// Helper class to zero out the unused high-order bits in the highest word.
1402.331 +
1402.332 +template <size_t _Extrabits> struct _Sanitize {
1402.333 +  static void _STLP_CALL _M_do_sanitize(unsigned long& __val)
1402.334 +    { __val &= ~((~__STATIC_CAST(unsigned long,0)) << _Extrabits); }
1402.335 +};
1402.336 +
1402.337 +_STLP_TEMPLATE_NULL struct _Sanitize<0UL> {
1402.338 +  static void _STLP_CALL _M_do_sanitize(unsigned long) {}
1402.339 +};
1402.340 +
1402.341 +// ------------------------------------------------------------
1402.342 +// Class bitset.
1402.343 +//   _Nb may be any nonzero number of type size_t.
1402.344 +
1402.345 +
1402.346 +template<size_t _Nb>
1402.347 +class bitset : public _Base_bitset<__BITSET_WORDS(_Nb) > 
1402.348 +{
1402.349 +public:
1402.350 +  enum { _Words = __BITSET_WORDS(_Nb) } ;
1402.351 +
1402.352 +private:
1402.353 +  typedef _Base_bitset< _Words > _Base;
1402.354 +
1402.355 +  void _M_do_sanitize() {
1402.356 +    _Sanitize<_Nb%__BITS_PER_WORD >::_M_do_sanitize(this->_M_hiword());
1402.357 +  }
1402.358 +public:
1402.359 +  typedef unsigned long _WordT;
1402.360 +  struct reference;
1402.361 +  friend struct reference;
1402.362 +
1402.363 +  // bit reference:
1402.364 +  struct reference {
1402.365 +  typedef _Base_bitset<_Words > _Bitset_base;
1402.366 +  typedef bitset<_Nb> _Bitset;
1402.367 +    //    friend _Bitset;
1402.368 +    _WordT *_M_wp;
1402.369 +    size_t _M_bpos;
1402.370 +
1402.371 +    // should be left undefined
1402.372 +    reference() {}
1402.373 +
1402.374 +    reference( _Bitset& __b, size_t __pos ) {
1402.375 +      _M_wp = &__b._M_getword(__pos);
1402.376 +      _M_bpos = _Bitset_base::_S_whichbit(__pos);
1402.377 +    }
1402.378 +
1402.379 +  public:
1402.380 +    ~reference() {}
1402.381 +
1402.382 +    // for b[i] = __x;
1402.383 +    reference& operator=(bool __x) {
1402.384 +      if ( __x )
1402.385 +        *_M_wp |= _Bitset_base::_S_maskbit(_M_bpos);
1402.386 +      else
1402.387 +        *_M_wp &= ~_Bitset_base::_S_maskbit(_M_bpos);
1402.388 +
1402.389 +      return *this;
1402.390 +    }
1402.391 +
1402.392 +    // for b[i] = b[__j];
1402.393 +    reference& operator=(const reference& __j) {
1402.394 +      if ( (*(__j._M_wp) & _Bitset_base::_S_maskbit(__j._M_bpos)) )
1402.395 +        *_M_wp |= _Bitset_base::_S_maskbit(_M_bpos);
1402.396 +      else
1402.397 +        *_M_wp &= ~_Bitset_base::_S_maskbit(_M_bpos);
1402.398 +
1402.399 +      return *this;
1402.400 +    }
1402.401 +
1402.402 +    // flips the bit
1402.403 +    bool operator~() const { return (*(_M_wp) & _Bitset_base::_S_maskbit(_M_bpos)) == 0; }
1402.404 +
1402.405 +    // for __x = b[i];
1402.406 +    operator bool() const { return (*(_M_wp) & _Bitset_base::_S_maskbit(_M_bpos)) != 0; }
1402.407 +
1402.408 +    // for b[i].flip();
1402.409 +    reference& flip() {
1402.410 +      *_M_wp ^= _Bitset_base::_S_maskbit(_M_bpos);
1402.411 +      return *this;
1402.412 +    }
1402.413 +  };
1402.414 +
1402.415 +  // 23.3.5.1 constructors:
1402.416 +  bitset() {}
1402.417 +
1402.418 +  bitset(unsigned long __val) : _Base_bitset<_Words>(__val) { _M_do_sanitize(); }
1402.419 +
1402.420 +# ifdef _STLP_MEMBER_TEMPLATES
1402.421 +  template<class _CharT, class _Traits, class _Alloc>
1402.422 +  explicit bitset(const basic_string<_CharT,_Traits,_Alloc>& __s,
1402.423 +                  size_t __pos = 0)
1402.424 +    : _Base_bitset<_Words >() 
1402.425 +  {
1402.426 +    if (__pos > __s.size()) 
1402.427 +      __stl_throw_out_of_range("bitset");
1402.428 +    _M_copy_from_string(__s, __pos,
1402.429 +                        basic_string<_CharT, _Traits, _Alloc>::npos);
1402.430 +  }
1402.431 +  template<class _CharT, class _Traits, class _Alloc>
1402.432 +  bitset(const basic_string<_CharT, _Traits, _Alloc>& __s,
1402.433 +          size_t __pos,
1402.434 +          size_t __n)
1402.435 +  : _Base_bitset<_Words >() 
1402.436 +  {
1402.437 +    if (__pos > __s.size()) 
1402.438 +      __stl_throw_out_of_range("bitset");
1402.439 +    _M_copy_from_string(__s, __pos, __n);
1402.440 +  }
1402.441 +#else /* _STLP_MEMBER_TEMPLATES */
1402.442 +  explicit bitset(const string& __s,
1402.443 +                  size_t __pos = 0,
1402.444 +                  size_t __n = (size_t)-1) 
1402.445 +    : _Base_bitset<_Words >() 
1402.446 +  {
1402.447 +    if (__pos > __s.size()) 
1402.448 +      __stl_throw_out_of_range("bitset");
1402.449 +    _M_copy_from_string(__s, __pos, __n);
1402.450 +  }
1402.451 +#endif /* _STLP_MEMBER_TEMPLATES */
1402.452 +
1402.453 +  // 23.3.5.2 bitset operations:
1402.454 +  bitset<_Nb>& operator&=(const bitset<_Nb>& __rhs) {
1402.455 +    this->_M_do_and(__rhs);
1402.456 +    return *this;
1402.457 +  }
1402.458 +
1402.459 +  bitset<_Nb>& operator|=(const bitset<_Nb>& __rhs) {
1402.460 +    this->_M_do_or(__rhs);
1402.461 +    return *this;
1402.462 +  }
1402.463 +
1402.464 +  bitset<_Nb>& operator^=(const bitset<_Nb>& __rhs) {
1402.465 +    this->_M_do_xor(__rhs);
1402.466 +    return *this;
1402.467 +  }
1402.468 +
1402.469 +  bitset<_Nb>& operator<<=(size_t __pos) {
1402.470 +#ifdef __SYMBIAN32__
1402.471 +	if(__pos < _Nb)
1402.472 +	{
1402.473 +    	this->_M_do_left_shift(__pos);
1402.474 +    	this->_M_do_sanitize();
1402.475 +	}
1402.476 +	else
1402.477 +		this->_M_do_reset();
1402.478 +#else
1402.479 +	this->_M_do_left_shift(__pos);
1402.480 +	this->_M_do_sanitize();
1402.481 +#endif
1402.482 +
1402.483 +    return *this;
1402.484 +  }
1402.485 +
1402.486 +  bitset<_Nb>& operator>>=(size_t __pos) {
1402.487 +#ifdef __SYMBIAN32__
1402.488 +	if(__pos < _Nb)
1402.489 +	{
1402.490 +    	this->_M_do_right_shift(__pos);
1402.491 +    	this->_M_do_sanitize();
1402.492 +	}
1402.493 +	else
1402.494 +		this->_M_do_reset();
1402.495 +#else
1402.496 +	this->_M_do_right_shift(__pos);
1402.497 +    this->_M_do_sanitize();
1402.498 +#endif
1402.499 +
1402.500 +    return *this;
1402.501 +  }
1402.502 +
1402.503 +  //
1402.504 +  // Extension:
1402.505 +  // Versions of single-bit set, reset, flip, test with no range checking.
1402.506 +  //
1402.507 +
1402.508 +  bitset<_Nb>& _Unchecked_set(size_t __pos) {
1402.509 +    this->_M_getword(__pos) |= _Base_bitset<_Words > ::_S_maskbit(__pos);
1402.510 +    return *this;
1402.511 +  }
1402.512 +
1402.513 +  bitset<_Nb>& _Unchecked_set(size_t __pos, int __val) {
1402.514 +    if (__val)
1402.515 +      this->_M_getword(__pos) |= this->_S_maskbit(__pos);
1402.516 +    else
1402.517 +      this->_M_getword(__pos) &= ~ this->_S_maskbit(__pos);
1402.518 +
1402.519 +    return *this;
1402.520 +  }
1402.521 +
1402.522 +  bitset<_Nb>& _Unchecked_reset(size_t __pos) {
1402.523 +    this->_M_getword(__pos) &= ~ this->_S_maskbit(__pos);
1402.524 +    return *this;
1402.525 +  }
1402.526 +
1402.527 +  bitset<_Nb>& _Unchecked_flip(size_t __pos) {
1402.528 +    this->_M_getword(__pos) ^= this->_S_maskbit(__pos);
1402.529 +    return *this;
1402.530 +  }
1402.531 +
1402.532 +  bool _Unchecked_test(size_t __pos) const {
1402.533 +    return (this->_M_getword(__pos) & this->_S_maskbit(__pos)) != __STATIC_CAST(_WordT,0);
1402.534 +  }
1402.535 +
1402.536 +  // Set, reset, and flip.
1402.537 +
1402.538 +  bitset<_Nb>& set() {
1402.539 +    this->_M_do_set();
1402.540 +    this->_M_do_sanitize();
1402.541 +    return *this;
1402.542 +  }
1402.543 +
1402.544 +  bitset<_Nb>& set(size_t __pos) {
1402.545 +    if (__pos >= _Nb)
1402.546 +      __stl_throw_out_of_range("bitset");
1402.547 +    return _Unchecked_set(__pos);
1402.548 +  }
1402.549 +
1402.550 +  bitset<_Nb>& set(size_t __pos, int __val) {
1402.551 +    if (__pos >= _Nb)
1402.552 +      __stl_throw_out_of_range("bitset");
1402.553 +    return _Unchecked_set(__pos, __val);
1402.554 +  }
1402.555 +
1402.556 +  bitset<_Nb>& reset() {
1402.557 +    this->_M_do_reset();
1402.558 +    return *this;
1402.559 +  }
1402.560 +
1402.561 +  bitset<_Nb>& reset(size_t __pos) {
1402.562 +    if (__pos >= _Nb)
1402.563 +      __stl_throw_out_of_range("bitset");
1402.564 +
1402.565 +    return _Unchecked_reset(__pos);
1402.566 +  }
1402.567 +
1402.568 +  bitset<_Nb>& flip() {
1402.569 +    this->_M_do_flip();
1402.570 +    this->_M_do_sanitize();
1402.571 +    return *this;
1402.572 +  }
1402.573 +
1402.574 +  bitset<_Nb>& flip(size_t __pos) {
1402.575 +    if (__pos >= _Nb)
1402.576 +      __stl_throw_out_of_range("bitset");
1402.577 +
1402.578 +    return _Unchecked_flip(__pos);
1402.579 +  }
1402.580 +
1402.581 +  bitset<_Nb> operator~() const { 
1402.582 +    return bitset<_Nb>(*this).flip();
1402.583 +  }
1402.584 +
1402.585 +  // element access:
1402.586 +  //for b[i];
1402.587 +  reference operator[](size_t __pos) { return reference(*this,__pos); }
1402.588 +  bool operator[](size_t __pos) const { return _Unchecked_test(__pos); }
1402.589 +
1402.590 +  unsigned long to_ulong() const { return this->_M_do_to_ulong(); }
1402.591 +
1402.592 +#if defined (_STLP_MEMBER_TEMPLATES) && !  defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
1402.593 +  template <class _CharT, class _Traits, class _Alloc>
1402.594 +  basic_string<_CharT, _Traits, _Alloc> to_string() const {
1402.595 +    basic_string<_CharT, _Traits, _Alloc> __result;
1402.596 +    _M_copy_to_string(__result);
1402.597 +    return __result;
1402.598 +  }
1402.599 +#else
1402.600 +  string to_string() const {
1402.601 +    string __result;
1402.602 +    _M_copy_to_string(__result);
1402.603 +    return __result;
1402.604 +  }
1402.605 +#endif /* _STLP_EXPLICIT_FUNCTION_TMPL_ARGS */
1402.606 +
1402.607 +  size_t count() const { return this->_M_do_count(); }
1402.608 +
1402.609 +  size_t size() const { return _Nb; }
1402.610 +
1402.611 +  bool operator==(const bitset<_Nb>& __rhs) const {
1402.612 +    return this->_M_is_equal(__rhs);
1402.613 +  }
1402.614 +  bool operator!=(const bitset<_Nb>& __rhs) const {
1402.615 +    return !this->_M_is_equal(__rhs);
1402.616 +  }
1402.617 +
1402.618 +  bool test(size_t __pos) const {
1402.619 +    if (__pos >= _Nb)
1402.620 +      __stl_throw_out_of_range("bitset");
1402.621 +    
1402.622 +    return _Unchecked_test(__pos);
1402.623 +  }
1402.624 +
1402.625 +  bool any() const { return this->_M_is_any(); }
1402.626 +  bool none() const { return !this->_M_is_any(); }
1402.627 +
1402.628 +  bitset<_Nb> operator<<(size_t __pos) const { 
1402.629 +    bitset<_Nb> __result(*this);
1402.630 +    __result <<= __pos ;  return __result; 
1402.631 +  }
1402.632 +  bitset<_Nb> operator>>(size_t __pos) const { 
1402.633 +    bitset<_Nb> __result(*this);
1402.634 +    __result >>= __pos ;  return __result; 
1402.635 +  }
1402.636 +
1402.637 +  //
1402.638 +  // EXTENSIONS: bit-find operations.  These operations are
1402.639 +  // experimental, and are subject to change or removal in future
1402.640 +  // versions.
1402.641 +  // 
1402.642 +
1402.643 +  // find the index of the first "on" bit
1402.644 +  size_t _Find_first() const 
1402.645 +    { return this->_M_do_find_first(_Nb); }
1402.646 +
1402.647 +  // find the index of the next "on" bit after prev
1402.648 +  size_t _Find_next( size_t __prev ) const 
1402.649 +    { return this->_M_do_find_next(__prev, _Nb); }
1402.650 +
1402.651 +//
1402.652 +// Definitions of should-be non-inline member functions.
1402.653 +//
1402.654 +# if defined (_STLP_MEMBER_TEMPLATES)
1402.655 +  template<class _CharT, class _Traits, class _Alloc>
1402.656 +    void _M_copy_from_string(const basic_string<_CharT,_Traits,_Alloc>& __s,
1402.657 +			     size_t __pos,
1402.658 +			     size_t __n) {
1402.659 +#else
1402.660 +    void _M_copy_from_string(const string& __s,
1402.661 +			     size_t __pos,
1402.662 +			     size_t __n) {
1402.663 +      typedef char_traits<char> _Traits;
1402.664 +#endif
1402.665 +      reset();
1402.666 +      size_t __tmp = _Nb;
1402.667 +      const size_t __Nbits = (min) (__tmp, (min) (__n, __s.size() - __pos));
1402.668 +      for ( size_t __i= 0; __i < __Nbits; ++__i) {
1402.669 +        typename _Traits::int_type __k = _Traits::to_int_type(__s[__pos + __Nbits - __i - 1]);
1402.670 +        // boris : widen() ?
1402.671 +        if (__k == '1')
1402.672 +          set(__i);
1402.673 +        else if (__k !='0')
1402.674 +          __stl_throw_invalid_argument("bitset");
1402.675 +      }
1402.676 +    }
1402.677 +  
1402.678 +# if defined (_STLP_MEMBER_TEMPLATES)
1402.679 +  template <class _CharT, class _Traits, class _Alloc>
1402.680 +    void _M_copy_to_string(basic_string<_CharT, _Traits, _Alloc>& __s) const
1402.681 +# else
1402.682 +    void _M_copy_to_string(string& __s) const
1402.683 +# endif
1402.684 +    {
1402.685 +      __s.assign(_Nb, '0');
1402.686 +      
1402.687 +      for (size_t __i = 0; __i < _Nb; ++__i) 
1402.688 +	if (_Unchecked_test(__i))
1402.689 +	  __s[_Nb - 1 - __i] = '1';
1402.690 +    }
1402.691 +
1402.692 +# if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1402.693 +  bitset<_Nb> operator&(const bitset<_Nb>& __y) const {
1402.694 +    bitset<_Nb> __result(*this);
1402.695 +    __result &= __y;
1402.696 +    return __result;
1402.697 +  }
1402.698 +  bitset<_Nb> operator|(const bitset<_Nb>& __y) const {
1402.699 +    bitset<_Nb> __result(*this);
1402.700 +    __result |= __y;
1402.701 +    return __result;
1402.702 +  }
1402.703 +  bitset<_Nb> operator^(const bitset<_Nb>& __y) const {
1402.704 +    bitset<_Nb> __result(*this);
1402.705 +    __result ^= __y;
1402.706 +    return __result;
1402.707 +  }
1402.708 +# endif 
1402.709 +
1402.710 +};
1402.711 +
1402.712 +// ------------------------------------------------------------
1402.713 +//
1402.714 +// 23.3.5.3 bitset operations:
1402.715 +//
1402.716 +
1402.717 +# if ! defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1402.718 +
1402.719 +template <size_t _Nb>
1402.720 +inline bitset<_Nb>  _STLP_CALL
1402.721 +operator&(const bitset<_Nb>& __x,
1402.722 +          const bitset<_Nb>& __y) {
1402.723 +  bitset<_Nb> __result(__x);
1402.724 +  __result &= __y;
1402.725 +  return __result;
1402.726 +}
1402.727 +
1402.728 +
1402.729 +template <size_t _Nb>
1402.730 +inline bitset<_Nb>  _STLP_CALL
1402.731 +operator|(const bitset<_Nb>& __x,
1402.732 +          const bitset<_Nb>& __y) {
1402.733 +  bitset<_Nb> __result(__x);
1402.734 +  __result |= __y;
1402.735 +  return __result;
1402.736 +}
1402.737 +
1402.738 +template <size_t _Nb>
1402.739 +inline bitset<_Nb>  _STLP_CALL
1402.740 +operator^(const bitset<_Nb>& __x,
1402.741 +          const bitset<_Nb>& __y) {
1402.742 +  bitset<_Nb> __result(__x);
1402.743 +  __result ^= __y;
1402.744 +  return __result;
1402.745 +}
1402.746 +
1402.747 +#if defined ( _STLP_USE_NEW_IOSTREAMS )
1402.748 +
1402.749 +template <class _CharT, class _Traits, size_t _Nb>
1402.750 +basic_istream<_CharT, _Traits>&  _STLP_CALL
1402.751 +operator>>(basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x);
1402.752 +
1402.753 +
1402.754 +template <class _CharT, class _Traits, size_t _Nb>
1402.755 +basic_ostream<_CharT, _Traits>& _STLP_CALL
1402.756 +operator<<(basic_ostream<_CharT, _Traits>& __os, const bitset<_Nb>& __x);
1402.757 +
1402.758 +#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
1402.759 +
1402.760 +// (reg) For Watcom IO, this tells if ostream class is in .exe or in .dll
1402.761 +template <size_t _Nb>
1402.762 +_ISTREAM_DLL& _STLP_CALL
1402.763 +operator>>(_ISTREAM_DLL& __is, bitset<_Nb>& __x);
1402.764 +
1402.765 +template <size_t _Nb>
1402.766 +inline _OSTREAM_DLL&  _STLP_CALL operator<<(_OSTREAM_DLL& __os, const bitset<_Nb>& __x) {
1402.767 +  string __tmp;
1402.768 +  __x._M_copy_to_string(__tmp);
1402.769 +  return __os << __tmp;
1402.770 +}
1402.771 +
1402.772 +#endif
1402.773 +
1402.774 +# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1402.775 +
1402.776 +#  undef  bitset
1402.777 +
1402.778 +
1402.779 +_STLP_END_NAMESPACE
1402.780 +
1402.781 +#  undef __BITS_PER_WORD
1402.782 +#  undef __BITSET_WORDS
1402.783 +
1402.784 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1402.785 +#  include <stl/_bitset.c>
1402.786 +# endif
1402.787 +
1402.788 +#endif /* _STLP_BITSET_H */
1402.789 +
1402.790 +
1402.791 +// Local Variables:
1402.792 +// mode:C++
1402.793 +// End:
1402.794 +
  1403.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1403.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_bvector.h	Wed Mar 31 12:27:01 2010 +0100
  1403.3 @@ -0,0 +1,831 @@
  1403.4 +/*
  1403.5 + *
  1403.6 + * Copyright (c) 1994
  1403.7 + * Hewlett-Packard Company
  1403.8 + *
  1403.9 + * Copyright (c) 1996,1997
 1403.10 + * Silicon Graphics Computer Systems, Inc.
 1403.11 + *
 1403.12 + * Copyright (c) 1997
 1403.13 + * Moscow Center for SPARC Technology
 1403.14 + *
 1403.15 + * Copyright (c) 1999 
 1403.16 + * Boris Fomitchev
 1403.17 + *
 1403.18 + * This material is provided "as is", with absolutely no warranty expressed
 1403.19 + * or implied. Any use is at your own risk.
 1403.20 + *
 1403.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1403.22 + * without fee, provided the above notices are retained on all copies.
 1403.23 + * Permission to modify the code and to distribute modified code is granted,
 1403.24 + * provided the above notices are retained, and a notice that the code was
 1403.25 + * modified is included with the above copyright notice.
 1403.26 + *
 1403.27 + */
 1403.28 +
 1403.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1403.30 + *   You should not attempt to use it directly.
 1403.31 + */
 1403.32 +
 1403.33 +#ifndef _STLP_INTERNAL_BVECTOR_H
 1403.34 +#define _STLP_INTERNAL_BVECTOR_H
 1403.35 +
 1403.36 +#ifndef _STLP_INTERNAL_VECTOR_H
 1403.37 +# include <stl/_vector.h>
 1403.38 +# endif
 1403.39 +
 1403.40 +#ifndef __WORD_BIT
 1403.41 +#define __WORD_BIT (int(CHAR_BIT*sizeof(unsigned int)))
 1403.42 +#endif
 1403.43 +
 1403.44 +_STLP_BEGIN_NAMESPACE 
 1403.45 +
 1403.46 +struct _Bit_reference {
 1403.47 +  unsigned int* _M_p;
 1403.48 +  unsigned int _M_mask;
 1403.49 +  _Bit_reference(unsigned int* __x, unsigned int __y) 
 1403.50 +    : _M_p(__x), _M_mask(__y) {}
 1403.51 +
 1403.52 +public:
 1403.53 +  _Bit_reference() : _M_p(0), _M_mask(0) {}
 1403.54 +
 1403.55 +  operator bool() const { 
 1403.56 +	  return !(!(*_M_p & _M_mask)); 
 1403.57 +  }
 1403.58 +  _Bit_reference& operator=(bool __x) {
 1403.59 +    if (__x)  *_M_p |= _M_mask;
 1403.60 +    else      *_M_p &= ~_M_mask;
 1403.61 +    return *this;
 1403.62 +  }
 1403.63 +  _Bit_reference& operator=(const _Bit_reference& __x) {
 1403.64 +	  return *this = bool(__x); 
 1403.65 +  }
 1403.66 +  bool operator==(const _Bit_reference& __x) const {
 1403.67 +	  return bool(*this) == bool(__x); 
 1403.68 +  }
 1403.69 +  bool operator<(const _Bit_reference& __x) const {
 1403.70 +    return !bool(*this) && bool(__x);
 1403.71 +  }
 1403.72 +
 1403.73 +  _Bit_reference& operator |= (bool __x) {
 1403.74 +	  if (__x)
 1403.75 +		  *_M_p |= _M_mask;
 1403.76 +	  return *this;
 1403.77 +  }
 1403.78 +  _Bit_reference& operator &= (bool __x) {
 1403.79 +	  if (!__x)
 1403.80 +		  *_M_p &= ~_M_mask;
 1403.81 +	  return *this;
 1403.82 +  }
 1403.83 +  void flip() { *_M_p ^= _M_mask; }
 1403.84 +};
 1403.85 +
 1403.86 +
 1403.87 +inline void swap(_Bit_reference& __x, _Bit_reference& __y)
 1403.88 +{
 1403.89 +  bool __tmp = (bool)__x;
 1403.90 +  __x = __y;
 1403.91 +  __y = __tmp;
 1403.92 +}
 1403.93 +
 1403.94 +struct _Bit_iterator_base;
 1403.95 +
 1403.96 +struct _Bit_iterator_base
 1403.97 +{
 1403.98 +  typedef ptrdiff_t difference_type;
 1403.99 +
1403.100 +  unsigned int* _M_p;
1403.101 +  unsigned int  _M_offset;
1403.102 +
1403.103 +  void _M_bump_up() {
1403.104 +    if (_M_offset++ == __WORD_BIT - 1) {
1403.105 +      _M_offset = 0;
1403.106 +      ++_M_p;
1403.107 +    }
1403.108 +  }
1403.109 +
1403.110 +  void _M_bump_down() {
1403.111 +    if (_M_offset-- == 0) {
1403.112 +      _M_offset = __WORD_BIT - 1;
1403.113 +      --_M_p;
1403.114 +    }
1403.115 +  }
1403.116 +
1403.117 +  _Bit_iterator_base() : _M_p(0), _M_offset(0) {}
1403.118 +  _Bit_iterator_base(unsigned int* __x, unsigned int __y) : _M_p(__x), _M_offset(__y) {}
1403.119 +  //  _Bit_iterator_base( const _Bit_iterator_base& __x) : _M_p(__x._M_p), _M_offset(__x._M_offset) {}
1403.120 +  //  _Bit_iterator_base& operator = ( const _Bit_iterator_base& __x) { _M_p = __x._M_p ; _M_offset = __x._M_offset ; return *this; }
1403.121 +
1403.122 +  void _M_advance (difference_type __i) {
1403.123 +    difference_type __n = __i + _M_offset;
1403.124 +    _M_p += __n / __WORD_BIT;
1403.125 +    __n = __n % __WORD_BIT;
1403.126 +    if (__n < 0) {
1403.127 +      _M_offset = (unsigned int) __n + __WORD_BIT;
1403.128 +      --_M_p;
1403.129 +    } else
1403.130 +      _M_offset = (unsigned int) __n;
1403.131 +  }
1403.132 +
1403.133 +  difference_type _M_subtract(const _Bit_iterator_base& __x) const {
1403.134 +    return __WORD_BIT * (_M_p - __x._M_p) + _M_offset - __x._M_offset;
1403.135 +  }
1403.136 +};
1403.137 +
1403.138 +inline bool  _STLP_CALL operator==(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) {
1403.139 +  return __y._M_p == __x._M_p && __y._M_offset == __x._M_offset;
1403.140 +}
1403.141 +inline bool  _STLP_CALL operator!=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) {
1403.142 +  return __y._M_p != __x._M_p || __y._M_offset != __x._M_offset;
1403.143 +}
1403.144 +
1403.145 +inline bool _STLP_CALL operator<(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) {
1403.146 +  return __x._M_p < __y._M_p || (__x._M_p == __y._M_p && __x._M_offset < __y._M_offset);
1403.147 +}
1403.148 +
1403.149 +inline bool _STLP_CALL operator>(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)  { 
1403.150 +  return operator <(__y , __x); 
1403.151 +}
1403.152 +inline bool _STLP_CALL operator<=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { 
1403.153 +  return !(__y < __x); 
1403.154 +}
1403.155 +inline bool _STLP_CALL operator>=(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) { 
1403.156 +  return !(__x < __y); 
1403.157 +}
1403.158 +
1403.159 +template <class _Ref, class _Ptr>
1403.160 +struct _Bit_iter : public _Bit_iterator_base
1403.161 +{
1403.162 +  typedef _Ref  reference;
1403.163 +  typedef _Ptr  pointer;
1403.164 +  typedef _Bit_iter<_Ref, _Ptr> _Self;
1403.165 +  typedef random_access_iterator_tag iterator_category;
1403.166 +  typedef bool value_type;
1403.167 +  typedef ptrdiff_t difference_type;
1403.168 +  typedef size_t size_type;
1403.169 +
1403.170 +  _Bit_iter(unsigned int* __x, unsigned int __y) : _Bit_iterator_base(__x, __y) {}
1403.171 +  _Bit_iter() {}
1403.172 +
1403.173 +  _Bit_iter(const _Bit_iter<_Bit_reference, _Bit_reference*>& __x): 
1403.174 +    _Bit_iterator_base((const _Bit_iterator_base&)__x) {}
1403.175 +
1403.176 +  //  _Self& operator = (const _Bit_iter<_Bit_reference, _Bit_reference*>& __x)
1403.177 +  //   { (_Bit_iterator_base&)*this = (const _Bit_iterator_base&)__x; return *this; }
1403.178 +
1403.179 +  reference operator*() const { 
1403.180 +    return _Bit_reference(_M_p, 1UL << _M_offset); 
1403.181 +  }
1403.182 +  _Self& operator++() {
1403.183 +    _M_bump_up();
1403.184 +    return *this;
1403.185 +  }
1403.186 +  _Self operator++(int) {
1403.187 +    _Self __tmp = *this;
1403.188 +    _M_bump_up();
1403.189 +    return __tmp;
1403.190 +  }
1403.191 +  _Self& operator--() {
1403.192 +    _M_bump_down();
1403.193 +    return *this;
1403.194 +  }
1403.195 +  _Self operator--(int) {
1403.196 +    _Self __tmp = *this;
1403.197 +    _M_bump_down();
1403.198 +    return __tmp;
1403.199 +  }
1403.200 +  _Self& operator+=(difference_type __i) {
1403.201 +    _M_advance(__i);
1403.202 +    return *this;
1403.203 +  }
1403.204 +  _Self& operator-=(difference_type __i) {
1403.205 +    *this += -__i;
1403.206 +    return *this;
1403.207 +  }
1403.208 +  _Self operator+(difference_type __i) const {
1403.209 +    _Self __tmp = *this;
1403.210 +    return __tmp += __i;
1403.211 +  }
1403.212 +  _Self operator-(difference_type __i) const {
1403.213 +    _Self __tmp = *this;
1403.214 +    return __tmp -= __i;
1403.215 +  }
1403.216 +  difference_type operator-(const _Self& __x) const {
1403.217 +    return _M_subtract(__x);
1403.218 +  }
1403.219 +  reference operator[](difference_type __i) { return *(*this + __i); }
1403.220 +};
1403.221 +
1403.222 +template <class _Ref, class _Ptr>
1403.223 +inline _Bit_iter<_Ref,_Ptr>  _STLP_CALL
1403.224 +operator+(ptrdiff_t __n, const _Bit_iter<_Ref, _Ptr>& __x) {
1403.225 +   return __x + __n;
1403.226 +}
1403.227 +
1403.228 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1403.229 +inline random_access_iterator_tag  iterator_category(const _Bit_iterator_base&) {return random_access_iterator_tag();}
1403.230 +inline ptrdiff_t* distance_type(const _Bit_iterator_base&) {return (ptrdiff_t*)0;}
1403.231 +inline bool* value_type(const _Bit_iter<_Bit_reference, _Bit_reference*>&) {return (bool*)0;}
1403.232 +inline bool* value_type(const _Bit_iter<bool, const bool*>&) {return (bool*)0;}
1403.233 +# endif
1403.234 +
1403.235 +typedef _Bit_iter<bool, const bool*> _Bit_const_iterator;
1403.236 +typedef _Bit_iter<_Bit_reference, _Bit_reference*> _Bit_iterator;
1403.237 +
1403.238 +// Bit-vector base class, which encapsulates the difference between
1403.239 +//  old SGI-style allocators and standard-conforming allocators.
1403.240 +
1403.241 +
1403.242 +template <class _Alloc>
1403.243 +class _Bvector_base
1403.244 +{
1403.245 +public:
1403.246 +  _STLP_FORCE_ALLOCATORS(bool, _Alloc)
1403.247 +  typedef typename _Alloc_traits<bool, _Alloc>::allocator_type allocator_type;
1403.248 +  typedef unsigned int __chunk_type;
1403.249 +  typedef typename _Alloc_traits<__chunk_type, 
1403.250 +          _Alloc>::allocator_type __chunk_allocator_type;
1403.251 +  allocator_type get_allocator() const { 
1403.252 +    return _STLP_CONVERT_ALLOCATOR((const __chunk_allocator_type&)_M_end_of_storage, bool); 
1403.253 +  }
1403.254 +  static allocator_type __get_dfl_allocator() { return allocator_type(); }
1403.255 +   
1403.256 +  _Bvector_base(const allocator_type& __a)
1403.257 +    : _M_start(), _M_finish(), _M_end_of_storage(_STLP_CONVERT_ALLOCATOR(__a, __chunk_type),
1403.258 +						 (__chunk_type*)0) {
1403.259 +  }
1403.260 +  ~_Bvector_base() { _M_deallocate();
1403.261 +  }
1403.262 +
1403.263 +protected:
1403.264 +
1403.265 +  unsigned int* _M_bit_alloc(size_t __n) 
1403.266 +    { return _M_end_of_storage.allocate((__n + __WORD_BIT - 1)/__WORD_BIT); }
1403.267 +  void _M_deallocate() {
1403.268 +    if (_M_start._M_p)
1403.269 +      _M_end_of_storage.deallocate(_M_start._M_p,
1403.270 +				   _M_end_of_storage._M_data - _M_start._M_p);
1403.271 +  }
1403.272 +
1403.273 +  _Bit_iterator _M_start;
1403.274 +  _Bit_iterator _M_finish;
1403.275 +  _STLP_alloc_proxy<__chunk_type*, __chunk_type, __chunk_allocator_type> _M_end_of_storage;  
1403.276 +};
1403.277 +
1403.278 +
1403.279 +// The next few lines are confusing.  What we're doing is declaring a
1403.280 +//  partial specialization of vector<T, Alloc> if we have the necessary
1403.281 +//  compiler support.  Otherwise, we define a class bit_vector which uses
1403.282 +//  the default allocator. 
1403.283 +
1403.284 +#if defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined(_STLP_NO_BOOL) && ! defined (__SUNPRO_CC)
1403.285 +# define _STLP_VECBOOL_TEMPLATE
1403.286 +# define __BVEC_TMPL_HEADER template <class _Alloc>
1403.287 +#else
1403.288 +# undef _STLP_VECBOOL_TEMPLATE
1403.289 +# ifdef _STLP_NO_BOOL
1403.290 +#  define __BVEC_TMPL_HEADER
1403.291 +# else
1403.292 +#  define __BVEC_TMPL_HEADER _STLP_TEMPLATE_NULL
1403.293 +# endif
1403.294 +# if !(defined(__MRC__)||(defined(__SC__)&&!defined(__DMC__)))			//*TY 12/17/2000 - 
1403.295 +#  define _Alloc _STLP_DEFAULT_ALLOCATOR(bool)
1403.296 +# else
1403.297 +#  define _Alloc allocator<bool>
1403.298 +# endif
1403.299 +#endif
1403.300 +
1403.301 +#ifdef _STLP_NO_BOOL
1403.302 +# define __BVECTOR_QUALIFIED bit_vector
1403.303 +# define __BVECTOR           bit_vector
1403.304 +#else
1403.305 +# ifdef _STLP_VECBOOL_TEMPLATE
1403.306 +#  define __BVECTOR_QUALIFIED __WORKAROUND_DBG_RENAME(vector) <bool, _Alloc>
1403.307 +# else
1403.308 +#  define __BVECTOR_QUALIFIED __WORKAROUND_DBG_RENAME(vector) <bool, allocator<bool> >
1403.309 +# endif
1403.310 +#if defined (_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS)
1403.311 +# define __BVECTOR __BVECTOR_QUALIFIED
1403.312 +#else
1403.313 +# define __BVECTOR __WORKAROUND_DBG_RENAME(vector)
1403.314 +#endif
1403.315 +#endif
1403.316 +
1403.317 +
1403.318 +__BVEC_TMPL_HEADER
1403.319 +class __BVECTOR_QUALIFIED : public _Bvector_base<_Alloc >
1403.320 +{
1403.321 +  typedef _Bvector_base<_Alloc > _Base;
1403.322 +  typedef __BVECTOR_QUALIFIED _Self;
1403.323 +public:
1403.324 +  typedef bool value_type;
1403.325 +  typedef size_t size_type;
1403.326 +  typedef ptrdiff_t difference_type; 
1403.327 +  typedef _Bit_reference reference;
1403.328 +  typedef bool const_reference;
1403.329 +  typedef _Bit_reference* pointer;
1403.330 +  typedef const bool* const_pointer;
1403.331 +  typedef random_access_iterator_tag _Iterator_category;
1403.332 +
1403.333 +  typedef _Bit_iterator                iterator;
1403.334 +  typedef _Bit_const_iterator          const_iterator;
1403.335 +
1403.336 +#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1403.337 +  typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator;
1403.338 +  typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator;
1403.339 +#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1403.340 +# if defined (_STLP_MSVC50_COMPATIBILITY)
1403.341 +  typedef _STLP_STD::reverse_iterator<const_iterator, value_type, const_reference, 
1403.342 +  const_pointer, difference_type> const_reverse_iterator;
1403.343 +  typedef _STLP_STD::reverse_iterator<iterator, value_type, reference, reference*, 
1403.344 +  difference_type> reverse_iterator;
1403.345 +# else
1403.346 +  typedef _STLP_STD::reverse_iterator<const_iterator, value_type, const_reference, 
1403.347 +                                  difference_type> const_reverse_iterator;
1403.348 +  typedef _STLP_STD::reverse_iterator<iterator, value_type, reference, difference_type>
1403.349 +          reverse_iterator;
1403.350 +# endif
1403.351 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1403.352 +
1403.353 +# ifdef _STLP_VECBOOL_TEMPLATE
1403.354 +  typedef typename _Bvector_base<_Alloc >::allocator_type allocator_type;
1403.355 +  typedef typename _Bvector_base<_Alloc >::__chunk_type __chunk_type ;
1403.356 +# else
1403.357 +  typedef _Bvector_base<_Alloc >::allocator_type allocator_type;
1403.358 +  typedef _Bvector_base<_Alloc >::__chunk_type __chunk_type ;
1403.359 +# endif
1403.360 +
1403.361 +protected:
1403.362 +
1403.363 +  void _M_initialize(size_type __n) {
1403.364 +    unsigned int* __q = this->_M_bit_alloc(__n);
1403.365 +    this->_M_end_of_storage._M_data = __q + (__n + __WORD_BIT - 1)/__WORD_BIT;
1403.366 +    this->_M_start = iterator(__q, 0);
1403.367 +    this->_M_finish = this->_M_start + difference_type(__n);
1403.368 +  }
1403.369 +  void _M_insert_aux(iterator __position, bool __x) {
1403.370 +    if (this->_M_finish._M_p != this->_M_end_of_storage._M_data) {
1403.371 +      __copy_backward(__position, this->_M_finish, this->_M_finish + 1, random_access_iterator_tag(), (difference_type*)0 );
1403.372 +      *__position = __x;
1403.373 +      ++this->_M_finish;
1403.374 +    }
1403.375 +    else {
1403.376 +      size_type __len = size() ? 2 * size() : __WORD_BIT;
1403.377 +      unsigned int* __q = this->_M_bit_alloc(__len);
1403.378 +      iterator __i = copy(begin(), __position, iterator(__q, 0));
1403.379 +      *__i++ = __x;
1403.380 +      this->_M_finish = copy(__position, end(), __i);
1403.381 +      this->_M_deallocate();
1403.382 +      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1403.383 +      this->_M_start = iterator(__q, 0);
1403.384 +    }
1403.385 +  }
1403.386 +
1403.387 +#ifdef _STLP_MEMBER_TEMPLATES
1403.388 +  template <class _InputIterator>
1403.389 +  void _M_initialize_range(_InputIterator __first, _InputIterator __last,
1403.390 +			const input_iterator_tag &) {
1403.391 +    this->_M_start = iterator();
1403.392 +    this->_M_finish = iterator();
1403.393 +    this->_M_end_of_storage._M_data = 0;
1403.394 +    for ( ; __first != __last; ++__first) 
1403.395 +      push_back(*__first);
1403.396 +  }
1403.397 +
1403.398 +  template <class _ForwardIterator>
1403.399 +  void _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
1403.400 +                           const forward_iterator_tag &) {
1403.401 +    size_type __n = distance(__first, __last);
1403.402 +    _M_initialize(__n);
1403.403 +    //    copy(__first, __last, _M_start);
1403.404 +    copy(__first, __last, this->_M_start); // dwa 12/22/99 -- resolving ambiguous reference.
1403.405 +  }
1403.406 +
1403.407 +  template <class _InputIterator>
1403.408 +  void _M_insert_range(iterator __pos,
1403.409 +                       _InputIterator __first, _InputIterator __last,
1403.410 +                       const input_iterator_tag &) {
1403.411 +    for ( ; __first != __last; ++__first) {
1403.412 +      __pos = insert(__pos, *__first);
1403.413 +      ++__pos;
1403.414 +    }
1403.415 +  }
1403.416 +
1403.417 +  template <class _ForwardIterator>
1403.418 +  void _M_insert_range(iterator __position,
1403.419 +                       _ForwardIterator __first, _ForwardIterator __last,
1403.420 +                       const forward_iterator_tag &) {
1403.421 +    if (__first != __last) {
1403.422 +      size_type __n = distance(__first, __last);
1403.423 +      if (capacity() - size() >= __n) {
1403.424 +        __copy_backward(__position, end(), this->_M_finish + difference_type(__n), random_access_iterator_tag(), (difference_type*)0 );
1403.425 +        copy(__first, __last, __position);
1403.426 +        this->_M_finish += difference_type(__n);
1403.427 +      }
1403.428 +      else {
1403.429 +        size_type __len = size() + (max)(size(), __n);
1403.430 +        unsigned int* __q = this->_M_bit_alloc(__len);
1403.431 +        iterator __i = copy(begin(), __position, iterator(__q, 0));
1403.432 +        __i = copy(__first, __last, __i);
1403.433 +        this->_M_finish = copy(__position, end(), __i);
1403.434 +        this->_M_deallocate();
1403.435 +        this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1403.436 +        this->_M_start = iterator(__q, 0);
1403.437 +      }
1403.438 +    }
1403.439 +  }      
1403.440 +
1403.441 +#endif /* _STLP_MEMBER_TEMPLATES */
1403.442 +
1403.443 +public:
1403.444 +  iterator begin() { return this->_M_start; }
1403.445 +  const_iterator begin() const { return this->_M_start; }
1403.446 +  iterator end() { return this->_M_finish; }
1403.447 +  const_iterator end() const { return this->_M_finish; }
1403.448 +
1403.449 +  reverse_iterator rbegin() { return reverse_iterator(end()); }
1403.450 +  const_reverse_iterator rbegin() const { 
1403.451 +    return const_reverse_iterator(end()); 
1403.452 +  }
1403.453 +  reverse_iterator rend() { return reverse_iterator(begin()); }
1403.454 +  const_reverse_iterator rend() const { 
1403.455 +    return const_reverse_iterator(begin()); 
1403.456 +  }
1403.457 +
1403.458 +  size_type size() const { return size_type(end() - begin()); }
1403.459 +  size_type max_size() const { return size_type(-1); }
1403.460 +  size_type capacity() const {
1403.461 +    return size_type(const_iterator(this->_M_end_of_storage._M_data, 0) - begin());
1403.462 +  }
1403.463 +  bool empty() const { return begin() == end(); }
1403.464 +  reference operator[](size_type __n) 
1403.465 +  { return *(begin() + difference_type(__n)); }
1403.466 +  const_reference operator[](size_type __n) const 
1403.467 +  { return *(begin() + difference_type(__n)); }
1403.468 +
1403.469 +  void _M_range_check(size_type __n) const {
1403.470 +    if (__n >= this->size())
1403.471 +      __stl_throw_range_error("vector<bool>");
1403.472 +  }
1403.473 +
1403.474 +  reference at(size_type __n)
1403.475 +    { _M_range_check(__n); return (*this)[__n]; }
1403.476 +  const_reference at(size_type __n) const
1403.477 +    { _M_range_check(__n); return (*this)[__n]; }
1403.478 +
1403.479 +  explicit __BVECTOR(const allocator_type& __a = allocator_type())
1403.480 +    : _Bvector_base<_Alloc >(__a) {
1403.481 +    _STLP_POP_IF_CHECK
1403.482 +  }
1403.483 +
1403.484 +  __BVECTOR(size_type __n, bool __val,
1403.485 +            const allocator_type& __a = 
1403.486 +	    allocator_type())
1403.487 +    : _Bvector_base<_Alloc >(__a)
1403.488 +  {
1403.489 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.490 +    _M_initialize(__n);
1403.491 +    fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __val ? ~0 : 0);
1403.492 +    _STLP_POP_CLEANUP_ITEM	  
1403.493 +  }
1403.494 +
1403.495 +  explicit __BVECTOR(size_type __n)
1403.496 +    : _Bvector_base<_Alloc >(allocator_type())
1403.497 +  {
1403.498 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.499 +    _M_initialize(__n);
1403.500 +    fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), 0);
1403.501 +    _STLP_POP_CLEANUP_ITEM  
1403.502 +  }
1403.503 +
1403.504 +  __BVECTOR(const _Self& __x) : _Bvector_base<_Alloc >(__x.get_allocator()) {
1403.505 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.506 +    _M_initialize(__x.size());
1403.507 +    copy(__x.begin(), __x.end(), this->_M_start);
1403.508 +    _STLP_POP_CLEANUP_ITEM  
1403.509 +  }
1403.510 +
1403.511 +#if defined (_STLP_MEMBER_TEMPLATES)
1403.512 +  template <class _Integer>
1403.513 +  void _M_initialize_dispatch(_Integer __n, _Integer __x, const __true_type&) {
1403.514 +    _M_initialize(__n);
1403.515 +    fill(this->_M_start._M_p, this->_M_end_of_storage._M_data, __x ? ~0 : 0);
1403.516 +  }
1403.517 +    
1403.518 +  template <class _InputIterator>
1403.519 +  void _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
1403.520 +                              const __false_type&) {
1403.521 +    _M_initialize_range(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1403.522 +  }
1403.523 +# ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
1403.524 +  // Check whether it's an integral type.  If so, it's not an iterator.
1403.525 +  template <class _InputIterator>
1403.526 +  __BVECTOR(_InputIterator __first, _InputIterator __last)
1403.527 +    : _Base(allocator_type())
1403.528 +  {
1403.529 +    typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1403.530 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.531 +    _M_initialize_dispatch(__first, __last, _Integral());
1403.532 +    _STLP_POP_CLEANUP_ITEM  
1403.533 +  }
1403.534 +# endif
1403.535 +  template <class _InputIterator>
1403.536 +  __BVECTOR(_InputIterator __first, _InputIterator __last,
1403.537 +            const allocator_type& __a _STLP_ALLOCATOR_TYPE_DFL)
1403.538 +    : _Base(__a)
1403.539 +  {
1403.540 +    typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1403.541 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.542 +    _M_initialize_dispatch(__first, __last, _Integral());
1403.543 +    _STLP_POP_CLEANUP_ITEM  
1403.544 +  }
1403.545 +#else /* _STLP_MEMBER_TEMPLATES */
1403.546 +  __BVECTOR(const_iterator __first, const_iterator __last,
1403.547 +            const allocator_type& __a = allocator_type())
1403.548 +    : _Bvector_base<_Alloc >(__a)
1403.549 +  {
1403.550 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.551 +    size_type __n = distance(__first, __last);
1403.552 +    _M_initialize(__n);
1403.553 +    copy(__first, __last, this->_M_start);
1403.554 +    _STLP_POP_CLEANUP_ITEM  
1403.555 +  }
1403.556 +  __BVECTOR(const bool* __first, const bool* __last,
1403.557 +            const allocator_type& __a = allocator_type())
1403.558 +    : _Bvector_base<_Alloc >(__a)
1403.559 +  {
1403.560 +    size_type __n = distance(__first, __last);
1403.561 +    _STLP_PUSH_CLEANUP_ITEM(_Base, this)  
1403.562 +    _M_initialize(__n);
1403.563 +    copy(__first, __last, this->_M_start);
1403.564 +    _STLP_POP_CLEANUP_ITEM  
1403.565 +  }
1403.566 +#endif /* _STLP_MEMBER_TEMPLATES */
1403.567 +
1403.568 +  ~__BVECTOR() { }
1403.569 +
1403.570 +  __BVECTOR_QUALIFIED& operator=(const __BVECTOR_QUALIFIED& __x) {
1403.571 +    if (&__x == this) return *this;
1403.572 +    if (__x.size() > capacity()) {
1403.573 +      this->_M_deallocate();
1403.574 +      _M_initialize(__x.size());
1403.575 +    }
1403.576 +    copy(__x.begin(), __x.end(), begin());
1403.577 +    this->_M_finish = begin() + difference_type(__x.size());
1403.578 +    return *this;
1403.579 +  }
1403.580 +
1403.581 +#ifdef _STLP_USE_TRAP_LEAVE
1403.582 +public:
1403.583 +  static void* operator new (size_t __n, TLeave) { return _STLP_StackHelper<bool>::_NewLC(__n); }
1403.584 +  static void* operator new (size_t __n) { return _STLP_StackHelper<bool>::_NewLC(__n); }
1403.585 +#endif
1403.586 +
1403.587 +  // assign(), a generalized assignment member function.  Two
1403.588 +  // versions: one that takes a count, and one that takes a range.
1403.589 +  // The range version is a member template, so we dispatch on whether
1403.590 +  // or not the type is an integer.
1403.591 +
1403.592 +  void _M_fill_assign(size_t __n, bool __x) {
1403.593 +    if (__n > size()) {
1403.594 +      fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __x ? ~0 : 0);
1403.595 +      insert(end(), __n - size(), __x);
1403.596 +    }
1403.597 +    else {
1403.598 +      erase(begin() + __n, end());
1403.599 +      fill(this->_M_start._M_p, (__chunk_type*)(this->_M_end_of_storage._M_data), __x ? ~0 : 0);
1403.600 +    }
1403.601 +  }
1403.602 +  void assign(size_t __n, bool __x) { _M_fill_assign(__n, __x); }
1403.603 +
1403.604 +#ifdef _STLP_MEMBER_TEMPLATES
1403.605 +
1403.606 +  template <class _InputIterator>
1403.607 +  void assign(_InputIterator __first, _InputIterator __last) {
1403.608 +    typedef typename _Is_integer<_InputIterator>::_Integral _Integral;
1403.609 +    _M_assign_dispatch(__first, __last, _Integral());
1403.610 +  }
1403.611 +
1403.612 +  template <class _Integer>
1403.613 +  void _M_assign_dispatch(_Integer __n, _Integer __val, const __true_type&)
1403.614 +    { _M_fill_assign((size_t) __n, (bool) __val); }
1403.615 +
1403.616 +  template <class _InputIter>
1403.617 +  void _M_assign_dispatch(_InputIter __first, _InputIter __last, const __false_type&)
1403.618 +    { _M_assign_aux(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIter)); }
1403.619 +
1403.620 +  template <class _InputIterator>
1403.621 +  void _M_assign_aux(_InputIterator __first, _InputIterator __last,
1403.622 +                     const input_iterator_tag &) {
1403.623 +    iterator __cur = begin();
1403.624 +    for ( ; __first != __last && __cur != end(); ++__cur, ++__first)
1403.625 +      *__cur = *__first;
1403.626 +    if (__first == __last)
1403.627 +      erase(__cur, end());
1403.628 +    else
1403.629 +      insert(end(), __first, __last);
1403.630 +  }
1403.631 +
1403.632 +  template <class _ForwardIterator>
1403.633 +  void _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
1403.634 +                     const forward_iterator_tag &) {
1403.635 +    size_type __len = distance(__first, __last);
1403.636 +    if (__len < size())
1403.637 +      erase(copy(__first, __last, begin()), end());
1403.638 +    else {
1403.639 +      _ForwardIterator __mid = __first;
1403.640 +      advance(__mid, size());
1403.641 +      copy(__first, __mid, begin());
1403.642 +      insert(end(), __mid, __last);
1403.643 +    }
1403.644 +  }    
1403.645 +
1403.646 +#endif /* _STLP_MEMBER_TEMPLATES */
1403.647 +
1403.648 +  void reserve(size_type __n) {
1403.649 +    if (capacity() < __n) {
1403.650 +      unsigned int* __q = this->_M_bit_alloc(__n);
1403.651 +      _Bit_iterator __z(__q, 0);
1403.652 +      this->_M_finish = copy(begin(), end(), __z);
1403.653 +      this->_M_deallocate();
1403.654 +      this->_M_start = iterator(__q, 0);
1403.655 +      this->_M_end_of_storage._M_data = __q + (__n + __WORD_BIT - 1)/__WORD_BIT;
1403.656 +    }
1403.657 +  }
1403.658 +
1403.659 +  reference front() { return *begin(); }
1403.660 +  const_reference front() const { return *begin(); }
1403.661 +  reference back() { return *(end() - 1); }
1403.662 +  const_reference back() const { return *(end() - 1); }
1403.663 +  void push_back(bool __x) {
1403.664 +    if (this->_M_finish._M_p != this->_M_end_of_storage._M_data) {
1403.665 +      *(this->_M_finish) = __x;
1403.666 +      ++this->_M_finish;
1403.667 +    }
1403.668 +    else
1403.669 +      _M_insert_aux(end(), __x);
1403.670 +  }
1403.671 +  void swap(__BVECTOR_QUALIFIED& __x) {
1403.672 +    _STLP_STD::swap(this->_M_start, __x._M_start);
1403.673 +    _STLP_STD::swap(this->_M_finish, __x._M_finish);
1403.674 +    _STLP_STD::swap(this->_M_end_of_storage, __x._M_end_of_storage);
1403.675 +  }
1403.676 +  iterator insert(iterator __position, bool __x = bool()) {
1403.677 +    difference_type __n = __position - begin();
1403.678 +    if (this->_M_finish._M_p != this->_M_end_of_storage._M_data && __position == end()) {
1403.679 +      *(this->_M_finish) = __x;
1403.680 +      ++this->_M_finish;
1403.681 +    }
1403.682 +    else
1403.683 +      _M_insert_aux(__position, __x);
1403.684 +    return begin() + __n;
1403.685 +  }
1403.686 +
1403.687 +#if defined ( _STLP_MEMBER_TEMPLATES )
1403.688 +
1403.689 +  template <class _Integer>
1403.690 +  void _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
1403.691 +                          const __true_type&) {
1403.692 +    _M_fill_insert(__pos, (size_type) __n, (bool) __x);
1403.693 +  }
1403.694 +
1403.695 +  template <class _InputIterator>
1403.696 +  void _M_insert_dispatch(iterator __pos,
1403.697 +                          _InputIterator __first, _InputIterator __last,
1403.698 +                          const __false_type&) {
1403.699 +    _M_insert_range(__pos, __first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1403.700 +  }
1403.701 +
1403.702 +  // Check whether it's an integral type.  If so, it's not an iterator.
1403.703 +  template <class _InputIterator>
1403.704 +  void insert(iterator __position,
1403.705 +              _InputIterator __first, _InputIterator __last) {
1403.706 +    typedef typename _Is_integer<_InputIterator>::_Integral _Is_Integral;
1403.707 +    _M_insert_dispatch(__position, __first, __last, _Is_Integral());
1403.708 +  }
1403.709 +#else /* _STLP_MEMBER_TEMPLATES */
1403.710 +  void insert(iterator __position,
1403.711 +              const_iterator __first, const_iterator __last) {
1403.712 +    if (__first == __last) return;
1403.713 +    size_type __n = distance(__first, __last);
1403.714 +    if (capacity() - size() >= __n) {
1403.715 +      __copy_backward(__position, end(), this->_M_finish + __n,
1403.716 +                      random_access_iterator_tag(), (difference_type*)0 );
1403.717 +      copy(__first, __last, __position);
1403.718 +      this->_M_finish += __n;
1403.719 +    }
1403.720 +    else {
1403.721 +      size_type __len = size() + (max)(size(), __n);
1403.722 +      unsigned int* __q = this->_M_bit_alloc(__len);
1403.723 +      iterator __i = copy(begin(), __position, iterator(__q, 0));
1403.724 +      __i = copy(__first, __last, __i);
1403.725 +      this->_M_finish = copy(__position, end(), __i);
1403.726 +      this->_M_deallocate();
1403.727 +      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1403.728 +      this->_M_start = iterator(__q, 0);
1403.729 +    }
1403.730 +  }
1403.731 +
1403.732 +  void insert(iterator __position, const bool* __first, const bool* __last) {
1403.733 +    if (__first == __last) return;
1403.734 +    size_type __n = distance(__first, __last);
1403.735 +    if (capacity() - size() >= __n) {
1403.736 +      __copy_backward(__position, end(), this->_M_finish + __n, 
1403.737 +                      random_access_iterator_tag(), (difference_type*)0 );
1403.738 +      copy(__first, __last, __position);
1403.739 +      this->_M_finish += __n;
1403.740 +    }
1403.741 +    else {
1403.742 +      size_type __len = size() + (max)(size(), __n);
1403.743 +      unsigned int* __q = this->_M_bit_alloc(__len);
1403.744 +      iterator __i = copy(begin(), __position, iterator(__q, 0));
1403.745 +      __i = copy(__first, __last, __i);
1403.746 +      this->_M_finish = copy(__position, end(), __i);
1403.747 +      this->_M_deallocate();
1403.748 +      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1403.749 +      this->_M_start = iterator(__q, 0);
1403.750 +    }
1403.751 +  }
1403.752 +#endif /* _STLP_MEMBER_TEMPLATES */
1403.753 +  
1403.754 +  void _M_fill_insert(iterator __position, size_type __n, bool __x) {
1403.755 +    if (__n == 0) return;
1403.756 +    if (capacity() - size() >= __n) {
1403.757 +      __copy_backward(__position, end(), this->_M_finish + difference_type(__n), random_access_iterator_tag(), (difference_type*)0 );
1403.758 +      fill(__position, __position + difference_type(__n), __x);
1403.759 +      this->_M_finish += difference_type(__n);
1403.760 +    }
1403.761 +    else {
1403.762 +      size_type __len = size() + (max)(size(), __n);
1403.763 +      unsigned int* __q = this->_M_bit_alloc(__len);
1403.764 +      iterator __i = copy(begin(), __position, iterator(__q, 0));
1403.765 +      fill_n(__i, __n, __x);
1403.766 +      this->_M_finish = copy(__position, end(), __i + difference_type(__n));
1403.767 +      this->_M_deallocate();
1403.768 +      this->_M_end_of_storage._M_data = __q + (__len + __WORD_BIT - 1)/__WORD_BIT;
1403.769 +      this->_M_start = iterator(__q, 0);
1403.770 +    }
1403.771 +  }
1403.772 +
1403.773 +  void insert(iterator __position, size_type __n, bool __x) {
1403.774 +    _M_fill_insert(__position, __n, __x);
1403.775 +  }
1403.776 +
1403.777 +  void pop_back() {
1403.778 +      --this->_M_finish; 
1403.779 +  }
1403.780 +  iterator erase(iterator __position) {
1403.781 +    if (__position + 1 != end())
1403.782 +      copy(__position + 1, end(), __position);
1403.783 +      --this->_M_finish;
1403.784 +    return __position;
1403.785 +  }
1403.786 +  iterator erase(iterator __first, iterator __last) {
1403.787 +    this->_M_finish = copy(__last, end(), __first);
1403.788 +    return __first;
1403.789 +  }
1403.790 +  void resize(size_type __new_size, bool __x = bool()) {
1403.791 +    if (__new_size < size()) 
1403.792 +      erase(begin() + difference_type(__new_size), end());
1403.793 +    else
1403.794 +      insert(end(), __new_size - size(), __x);
1403.795 +  }
1403.796 +  void flip() {
1403.797 +    for (unsigned int* __p = this->_M_start._M_p; __p != this->_M_end_of_storage._M_data; ++__p)
1403.798 +      *__p = ~*__p;
1403.799 +  }
1403.800 +
1403.801 +  void clear() { erase(begin(), end()); }
1403.802 +};
1403.803 +
1403.804 +# if defined  ( _STLP_NO_BOOL ) || defined (__HP_aCC) // fixed soon (03/17/2000)
1403.805 + 
1403.806 +#define _STLP_TEMPLATE_HEADER __BVEC_TMPL_HEADER
1403.807 +#define _STLP_TEMPLATE_CONTAINER __BVECTOR_QUALIFIED
1403.808 +#include <stl/_relops_cont.h>
1403.809 +#undef _STLP_TEMPLATE_CONTAINER
1403.810 +#undef _STLP_TEMPLATE_HEADER
1403.811 +  
1403.812 +# endif /* NO_BOOL */
1403.813 +  
1403.814 +#if !defined (_STLP_NO_BOOL)
1403.815 +// This typedef is non-standard.  It is provided for backward compatibility.
1403.816 +  typedef __WORKAROUND_DBG_RENAME(vector) <bool, allocator<bool> > bit_vector;
1403.817 +#endif
1403.818 +
1403.819 +_STLP_END_NAMESPACE
1403.820 +
1403.821 +#undef _Alloc
1403.822 +#undef _STLP_VECBOOL_TEMPLATE
1403.823 +#undef __BVECTOR
1403.824 +#undef __BVECTOR_QUALIFIED
1403.825 +#undef __BVEC_TMPL_HEADER
1403.826 +
1403.827 +# undef __WORD_BIT
1403.828 +
1403.829 +#endif /* _STLP_INTERNAL_BVECTOR_H */
1403.830 +
1403.831 +// Local Variables:
1403.832 +// mode:C++
1403.833 +// End:
1403.834 +
  1404.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1404.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_carray.h	Wed Mar 31 12:27:01 2010 +0100
  1404.3 @@ -0,0 +1,61 @@
  1404.4 +/*
  1404.5 + * Copyright (c) 2005
  1404.6 + * Francois Dumont
  1404.7 + *
  1404.8 + * This material is provided "as is", with absolutely no warranty expressed
  1404.9 + * or implied. Any use is at your own risk.
 1404.10 + *
 1404.11 + * Permission to use or copy this software for any purpose is hereby granted
 1404.12 + * without fee, provided the above notices are retained on all copies.
 1404.13 + * Permission to modify the code and to distribute modified code is granted,
 1404.14 + * provided the above notices are retained, and a notice that the code was
 1404.15 + * modified is included with the above copyright notice.
 1404.16 + *
 1404.17 + */
 1404.18 +
 1404.19 +/* NOTE: This is an internal header file, included by other STL headers.
 1404.20 + *   You should not attempt to use it directly.
 1404.21 + */
 1404.22 +
 1404.23 +#ifndef _STLP_CARRAY_H
 1404.24 +#define _STLP_CARRAY_H
 1404.25 +
 1404.26 +/* Purpose: Mimic a pur C array with the additionnal feature of
 1404.27 + * being able to be used with type not default constructible.
 1404.28 + */
 1404.29 +
 1404.30 +#ifndef _STLP_INTERNAL_CONSTRUCT_H
 1404.31 +#  include <stl/_construct.h>
 1404.32 +#endif
 1404.33 +
 1404.34 +_STLP_BEGIN_NAMESPACE
 1404.35 +
 1404.36 +_STLP_MOVE_TO_PRIV_NAMESPACE
 1404.37 +
 1404.38 +template <class _Tp, size_t _Nb>
 1404.39 +struct _CArray {
 1404.40 +  _CArray (const _Tp& __val) {
 1404.41 +    for (size_t __i = 0; __i < _Nb; ++__i) {
 1404.42 +      _Copy_Construct(__REINTERPRET_CAST(_Tp*, _M_data + __i * sizeof(_Tp)), __val);
 1404.43 +    }
 1404.44 +  }
 1404.45 +
 1404.46 +  ~_CArray() {
 1404.47 +    _Destroy_Range(__REINTERPRET_CAST(_Tp*, _M_data + 0),
 1404.48 +                   __REINTERPRET_CAST(_Tp*, _M_data + _Nb * sizeof(_Tp)));
 1404.49 +  }
 1404.50 +
 1404.51 +  _Tp& operator [] (size_t __i) {
 1404.52 +    _STLP_ASSERT(__i < _Nb)
 1404.53 +    return *__REINTERPRET_CAST(_Tp*, _M_data + __i * sizeof(_Tp));
 1404.54 +  }
 1404.55 +
 1404.56 +private:
 1404.57 +  char _M_data[sizeof(_Tp) * _Nb];
 1404.58 +};
 1404.59 +
 1404.60 +_STLP_MOVE_TO_STD_NAMESPACE
 1404.61 +
 1404.62 +_STLP_END_NAMESPACE
 1404.63 +
 1404.64 +#endif //_STLP_CARRAY_H
  1405.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1405.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cctype.h	Wed Mar 31 12:27:01 2010 +0100
  1405.3 @@ -0,0 +1,45 @@
  1405.4 +/*
  1405.5 + * Copyright (c) 1999
  1405.6 + * Boris Fomitchev
  1405.7 + *
  1405.8 + * This material is provided "as is", with absolutely no warranty expressed
  1405.9 + * or implied. Any use is at your own risk.
 1405.10 + *
 1405.11 + * Permission to use or copy this software for any purpose is hereby granted
 1405.12 + * without fee, provided the above notices are retained on all copies.
 1405.13 + * Permission to modify the code and to distribute modified code is granted,
 1405.14 + * provided the above notices are retained, and a notice that the code was
 1405.15 + * modified is included with the above copyright notice.
 1405.16 + *
 1405.17 + */
 1405.18 +
 1405.19 +#ifndef _STLP_INTERNAL_CCTYPE
 1405.20 +#define _STLP_INTERNAL_CCTYPE
 1405.21 +
 1405.22 +#if defined (_STLP_USE_NEW_C_HEADERS)
 1405.23 +#  include _STLP_NATIVE_CPP_C_HEADER(cctype)
 1405.24 +#else
 1405.25 +#  include <ctype.h>
 1405.26 +#endif /* _STLP_USE_NEW_C_HEADERS */
 1405.27 +
 1405.28 +#if ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1405.29 +#  if defined ( _STLP_IMPORT_VENDOR_CSTD )
 1405.30 +_STLP_BEGIN_NAMESPACE
 1405.31 +using _STLP_VENDOR_CSTD::isalnum;
 1405.32 +using _STLP_VENDOR_CSTD::isalpha;
 1405.33 +using _STLP_VENDOR_CSTD::iscntrl;
 1405.34 +using _STLP_VENDOR_CSTD::isdigit;
 1405.35 +using _STLP_VENDOR_CSTD::isgraph;
 1405.36 +using _STLP_VENDOR_CSTD::islower;
 1405.37 +using _STLP_VENDOR_CSTD::isprint;
 1405.38 +using _STLP_VENDOR_CSTD::ispunct;
 1405.39 +using _STLP_VENDOR_CSTD::isspace;
 1405.40 +using _STLP_VENDOR_CSTD::isupper;
 1405.41 +using _STLP_VENDOR_CSTD::isxdigit;
 1405.42 +using _STLP_VENDOR_CSTD::tolower;
 1405.43 +using _STLP_VENDOR_CSTD::toupper;
 1405.44 +_STLP_END_NAMESPACE
 1405.45 +#  endif /* _STLP_IMPORT_VENDOR_CSTD*/
 1405.46 +#endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1405.47 +
 1405.48 +#endif
  1406.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1406.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_check_config.h	Wed Mar 31 12:27:01 2010 +0100
  1406.3 @@ -0,0 +1,37 @@
  1406.4 +// This file is reserved to site configuration purpose
  1406.5 +// and should NEVER be overridden by user
  1406.6 +
  1406.7 +# if defined ( _STLP_NO_OWN_IOSTREAMS )
  1406.8 +
  1406.9 +// User choose not to use SGI iostreams, which means no
 1406.10 +// precompiled library will be used and he is free to override
 1406.11 +// any STLport configuration flags
 1406.12 +
 1406.13 +# else
 1406.14 +
 1406.15 +// The following will be defined in stl_config.h :
 1406.16 +// # define _STLP_OWN_IOSTREAMS 1
 1406.17 +# endif
 1406.18 +
 1406.19 +/*
 1406.20 + *  Consistency check : if we use SGI iostreams, we have to use consistent
 1406.21 + *  thread model (single-threaded or multi-threaded) with the compiled library
 1406.22 + *  
 1406.23 + *  Default is multithreaded build. If you want to build and use single-threaded
 1406.24 + *  STLport, please change _STLP_NOTHREADS configuration setting above and rebuild the library
 1406.25 + *
 1406.26 + */
 1406.27 +
 1406.28 +# if defined (_STLP_OWN_IOSTREAMS) \
 1406.29 +  && !defined (_STLP_NO_THREADS) && !defined (_REENTRANT)
 1406.30 +
 1406.31 +#  if defined(_MSC_VER) && !defined(__MWERKS__) && !defined (__COMO__) && !defined(_MT)
 1406.32 +#   error "Only multi-threaded runtime library may be linked with STLport!"  
 1406.33 +#  endif
 1406.34 +
 1406.35 +// boris : you may change that to build non-threadsafe STLport library
 1406.36 +#  if defined (__BUILDING_STLPORT) /* || defined (_STLP_DEBUG) */
 1406.37 +#   define _REENTRANT 1
 1406.38 +#  endif
 1406.39 +
 1406.40 +# endif
  1407.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1407.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_clocale.h	Wed Mar 31 12:27:01 2010 +0100
  1407.3 @@ -0,0 +1,39 @@
  1407.4 +/*
  1407.5 + * Copyright (c) 1999
  1407.6 + * Boris Fomitchev
  1407.7 + *
  1407.8 + * This material is provided "as is", with absolutely no warranty expressed
  1407.9 + * or implied. Any use is at your own risk.
 1407.10 + *
 1407.11 + * Permission to use or copy this software for any purpose is hereby granted
 1407.12 + * without fee, provided the above notices are retained on all copies.
 1407.13 + * Permission to modify the code and to distribute modified code is granted,
 1407.14 + * provided the above notices are retained, and a notice that the code was
 1407.15 + * modified is included with the above copyright notice.
 1407.16 + *
 1407.17 + */
 1407.18 +
 1407.19 +#ifndef _STLP_INTERNAL_CLOCALE
 1407.20 +#define _STLP_INTERNAL_CLOCALE
 1407.21 +
 1407.22 +#if !defined (_STLP_WCE_EVC3)
 1407.23 +
 1407.24 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1407.25 +#    include _STLP_NATIVE_CPP_C_HEADER(clocale)
 1407.26 +#  else
 1407.27 +#    include _STLP_NATIVE_C_HEADER(locale.h)
 1407.28 +#  endif
 1407.29 +
 1407.30 +#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1407.31 +_STLP_BEGIN_NAMESPACE
 1407.32 +using _STLP_VENDOR_CSTD::lconv;
 1407.33 +#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1407.34 +using _STLP_VENDOR_CSTD::localeconv;
 1407.35 +using _STLP_VENDOR_CSTD::setlocale;
 1407.36 +#    endif
 1407.37 +_STLP_END_NAMESPACE
 1407.38 +#  endif
 1407.39 +
 1407.40 +#endif /* !_STLP_WCE_EVC3 */
 1407.41 +
 1407.42 +#endif
  1408.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1408.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cmath.h	Wed Mar 31 12:27:01 2010 +0100
  1408.3 @@ -0,0 +1,210 @@
  1408.4 +/*
  1408.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1408.6 + *
  1408.7 + * Copyright (c) 1999 
  1408.8 + * Boris Fomitchev
  1408.9 + *
 1408.10 + * This material is provided "as is", with absolutely no warranty expressed
 1408.11 + * or implied. Any use is at your own risk.
 1408.12 + *
 1408.13 + * Permission to use or copy this software for any purpose is hereby granted 
 1408.14 + * without fee, provided the above notices are retained on all copies.
 1408.15 + * Permission to modify the code and to distribute modified code is granted,
 1408.16 + * provided the above notices are retained, and a notice that the code was
 1408.17 + * modified is included with the above copyright notice.
 1408.18 + *
 1408.19 + */
 1408.20 +
 1408.21 +#ifndef _STLP_CMATH_H_HEADER
 1408.22 +# define _STLP_CMATH_H_HEADER
 1408.23 +
 1408.24 +# include <cmath>
 1408.25 +
 1408.26 +_STLP_BEGIN_NAMESPACE
 1408.27 +
 1408.28 +# if defined  (_STLP_SAME_FUNCTION_NAME_RESOLUTION_BUG) && (! defined (_STLP_VXWORKS_TORNADO)) 
 1408.29 +
 1408.30 +// this proxy is needed for some compilers to resolve problems
 1408.31 +// calling sqrt() from within sqrt(), etc.
 1408.32 +template <class _Tp>
 1408.33 +struct _STL_math_proxy {
 1408.34 +  static inline _Tp _do_abs(const _Tp& __x)     { return _STLP_VENDOR_CSTD::fabs(__x); } 
 1408.35 +  static inline _Tp _do_acos(const _Tp& __x)    { return _STLP_VENDOR_CSTD::acos(__x); } 
 1408.36 +  static inline _Tp _do_asin(const _Tp& __x)    { return _STLP_VENDOR_CSTD::asin(__x); } 
 1408.37 +  static inline _Tp _do_atan(const _Tp& __x)    { return _STLP_VENDOR_CSTD::atan(__x); } 
 1408.38 +  static inline _Tp _do_atan2(const _Tp& __x, const _Tp& __y)  { return _STLP_VENDOR_CSTD::atan2(__x, __y); } 
 1408.39 +  static inline _Tp _do_cos(const _Tp& __x)     { return _STLP_VENDOR_CSTD::cos(__x); } 
 1408.40 +  static inline _Tp _do_cosh(const _Tp& __x)    { return _STLP_VENDOR_CSTD::cosh(__x); } 
 1408.41 +  static inline _Tp _do_floor(const _Tp& __x)    { return _STLP_VENDOR_CSTD::floor(__x); } 
 1408.42 +  static inline _Tp _do_ceil(const _Tp& __x)    { return _STLP_VENDOR_CSTD::ceil(__x); } 
 1408.43 +  static inline _Tp _do_fmod(const _Tp& __x, const _Tp& __y)    { return _STLP_VENDOR_CSTD::fmod(__x, __y); } 
 1408.44 +  static inline _Tp _do_frexp(const _Tp& __x, int* __y)    { return _STLP_VENDOR_CSTD::frexp(__x, __y); } 
 1408.45 +  static inline _Tp _do_ldexp(const _Tp& __x, int __y)    { return _STLP_VENDOR_CSTD::ldexp(__x, __y); } 
 1408.46 +  static inline _Tp _do_modf(const _Tp& __x, double* __y) { return _STLP_VENDOR_CSTD::modf(__x, __y); }
 1408.47 +  static inline _Tp _do_log(const _Tp& __x)     { return _STLP_VENDOR_CSTD::log(__x); } 
 1408.48 +  static inline _Tp _do_log10(const _Tp& __x)   { return _STLP_VENDOR_CSTD::log10(__x); } 
 1408.49 +  static inline _Tp _do_pow(const _Tp& __x, const _Tp& __y)    { return _STLP_VENDOR_CSTD::pow(__x, __y); } 
 1408.50 +  static inline _Tp _do_pow(const _Tp& __x, int __y)    { return _STLP_VENDOR_CSTD::pow(__x, __y); } 
 1408.51 +  static inline _Tp _do_sin(const _Tp& __x)     { return _STLP_VENDOR_CSTD::sin(__x); } 
 1408.52 +  static inline _Tp _do_sinh(const _Tp& __x)    { return _STLP_VENDOR_CSTD::sinh(__x); } 
 1408.53 +
 1408.54 +  static inline _Tp _do_sqrt(const _Tp& __x)    { return _STLP_VENDOR_CSTD::sqrt(__x); } 
 1408.55 +  static inline _Tp _do_tan(const _Tp& __x)     { return _STLP_VENDOR_CSTD::tan(__x); } 
 1408.56 +  static inline _Tp _do_tanh(const _Tp& __x)    { return _STLP_VENDOR_CSTD::tanh(__x); } 
 1408.57 +  static inline _Tp _do_exp(const _Tp& __x)     { return _STLP_VENDOR_CSTD::exp(__x); } 
 1408.58 +  static inline _Tp _do_hypot(const _Tp& __x, const _Tp& __y)   { return _STLP_VENDOR_CSTD::hypot(__x, __y); } 
 1408.59 +};
 1408.60 +
 1408.61 +#  define _STLP_DO_ABS(_Tp)   _STL_math_proxy<_Tp>::_do_abs
 1408.62 +#  define _STLP_DO_ACOS(_Tp)  _STL_math_proxy<_Tp>::_do_acos
 1408.63 +#  define _STLP_DO_ASIN(_Tp)  _STL_math_proxy<_Tp>::_do_asin
 1408.64 +#  define _STLP_DO_ATAN(_Tp)  _STL_math_proxy<_Tp>::_do_atan
 1408.65 +#  define _STLP_DO_ATAN2(_Tp) _STL_math_proxy<_Tp>::_do_atan2
 1408.66 +#  define _STLP_DO_COS(_Tp)   _STL_math_proxy<_Tp>::_do_cos
 1408.67 +#  define _STLP_DO_COSH(_Tp)  _STL_math_proxy<_Tp>::_do_cosh
 1408.68 +#  define _STLP_DO_FLOOR(_Tp) _STL_math_proxy<_Tp>::_do_floor
 1408.69 +#  define _STLP_DO_CEIL(_Tp) _STL_math_proxy<_Tp>::_do_ceil
 1408.70 +#  define _STLP_DO_FMOD(_Tp) _STL_math_proxy<_Tp>::_do_fmod
 1408.71 +#  define _STLP_DO_FREXP(_Tp) _STL_math_proxy<_Tp>::_do_frexp
 1408.72 +#  define _STLP_DO_LDEXP(_Tp) _STL_math_proxy<_Tp>::_do_ldexp
 1408.73 +#  define _STLP_DO_MODF(_Tp) _STL_math_proxy<_Tp>::_do_modf
 1408.74 +#  define _STLP_DO_LOG(_Tp)   _STL_math_proxy<_Tp>::_do_log
 1408.75 +#  define _STLP_DO_LOG10(_Tp) _STL_math_proxy<_Tp>::_do_log10
 1408.76 +#  define _STLP_DO_POW(_Tp)   _STL_math_proxy<_Tp>::_do_pow
 1408.77 +#  define _STLP_DO_SIN(_Tp)   _STL_math_proxy<_Tp>::_do_sin
 1408.78 +#  define _STLP_DO_SINH(_Tp)  _STL_math_proxy<_Tp>::_do_sinh
 1408.79 +#  define _STLP_DO_SQRT(_Tp)  _STL_math_proxy<_Tp>::_do_sqrt
 1408.80 +#  define _STLP_DO_TAN(_Tp)   _STL_math_proxy<_Tp>::_do_tan
 1408.81 +#  define _STLP_DO_TANH(_Tp)  _STL_math_proxy<_Tp>::_do_tanh
 1408.82 +#  define _STLP_DO_EXP(_Tp)   _STL_math_proxy<_Tp>::_do_exp
 1408.83 +#  define _STLP_DO_HYPOT(_Tp) _STL_math_proxy<_Tp>::_do_hypot
 1408.84 +# else
 1408.85 +#  define _STLP_DO_ABS(_Tp)   _STLP_VENDOR_CSTD::fabs
 1408.86 +#  define _STLP_DO_ACOS(_Tp)  _STLP_VENDOR_CSTD::acos
 1408.87 +#  define _STLP_DO_ASIN(_Tp)  _STLP_VENDOR_CSTD::asin
 1408.88 +#  define _STLP_DO_ATAN(_Tp)  _STLP_VENDOR_CSTD::atan
 1408.89 +#  define _STLP_DO_ATAN2(_Tp) _STLP_VENDOR_CSTD::atan2
 1408.90 +#  define _STLP_DO_COS(_Tp)   _STLP_VENDOR_CSTD::cos
 1408.91 +#  define _STLP_DO_COSH(_Tp)  _STLP_VENDOR_CSTD::cosh
 1408.92 +#  define _STLP_DO_FLOOR(_Tp)  _STLP_VENDOR_CSTD::floor
 1408.93 +#  define _STLP_DO_CEIL(_Tp)   _STLP_VENDOR_CSTD::ceil
 1408.94 +#  define _STLP_DO_FMOD(_Tp)   _STLP_VENDOR_CSTD::fmod
 1408.95 +#  define _STLP_DO_FREXP(_Tp) _STLP_VENDOR_CSTD::frexp
 1408.96 +#  define _STLP_DO_LDEXP(_Tp) _STLP_VENDOR_CSTD::ldexp
 1408.97 +#  define _STLP_DO_MODF(_Tp) _STLP_VENDOR_CSTD::modf
 1408.98 +#  define _STLP_DO_LOG(_Tp)   _STLP_VENDOR_CSTD::log
 1408.99 +#  define _STLP_DO_LOG10(_Tp) _STLP_VENDOR_CSTD::log10
1408.100 +#  define _STLP_DO_POW(_Tp)   _STLP_VENDOR_CSTD::pow
1408.101 +#  define _STLP_DO_SIN(_Tp)   _STLP_VENDOR_CSTD::sin
1408.102 +#  define _STLP_DO_SINH(_Tp)  _STLP_VENDOR_CSTD::sinh
1408.103 +#  define _STLP_DO_SQRT(_Tp)  _STLP_VENDOR_CSTD::sqrt
1408.104 +#  define _STLP_DO_TAN(_Tp)   _STLP_VENDOR_CSTD::tan
1408.105 +#  define _STLP_DO_TANH(_Tp)  _STLP_VENDOR_CSTD::tanh
1408.106 +#  define _STLP_DO_EXP(_Tp)   _STLP_VENDOR_CSTD::exp
1408.107 +#  define _STLP_DO_HYPOT(_Tp) ::hypot
1408.108 +# endif
1408.109 +
1408.110 +_STLP_END_NAMESPACE
1408.111 +
1408.112 +# if (defined (_STLP_HAS_NO_NEW_C_HEADERS) || defined(_STLP_MSVC) || defined (__ICL)) && !defined (_STLP_HAS_NO_NAMESPACES)
1408.113 +
1408.114 +#if (! defined (_STLP_USE_NEW_C_HEADERS)) && ! defined (_STLP_VXWORKS_TORNADO)
1408.115 +_STLP_BEGIN_NAMESPACE
1408.116 +
1408.117 +#  ifndef _STLP_HAS_NATIVE_FLOAT_ABS
1408.118 +inline double abs(double __x)                 { return _STLP_DO_ABS(double)(__x); }
1408.119 +inline float abs (float __x)                  { return _STLP_DO_ABS(float)(__x); }
1408.120 +#  endif
1408.121 +
1408.122 +#if  ( defined (__SYMBIAN32__) || defined (__WINS__))
1408.123 +inline double pow(double __x, int __y)        { return _STLP_DO_POW(double)(__x, __y); }
1408.124 +inline float acos (float __x)                 { return _STLP_DO_ACOS(float)(__x); }
1408.125 +inline float asin (float __x)                 { return _STLP_DO_ASIN(float)(__x); }
1408.126 +inline float atan (float __x)                 { return _STLP_DO_ATAN(float)(__x); }
1408.127 +inline float atan2(float __x, float __y)      { return _STLP_DO_ATAN2(float)(__x, __y); }
1408.128 +inline float ceil (float __x)                 { return _STLP_DO_CEIL(float)(__x); }
1408.129 +inline float cos (float __x)                  { return _STLP_DO_COS(float)(__x); }
1408.130 +inline float cosh (float __x)                 { return _STLP_DO_COSH(float)(__x); }
1408.131 +inline float exp (float __x)                  { return _STLP_DO_EXP(float)(__x); }
1408.132 +# ifdef _STLP_USE_NAMESPACES
1408.133 +inline float fabs (float __x)                 { return _STLP_DO_ABS(float)(__x); }
1408.134 +# endif
1408.135 +inline float floor(float __x)                 { return _STLP_DO_FLOOR(float)(__x); }
1408.136 +inline float fmod (float __x, float __y)      { return _STLP_DO_FMOD(float)(__x, __y); }
1408.137 +inline float frexp(float __x, int* __y)       { return _STLP_DO_FREXP(float)(__x, __y); }
1408.138 +inline float ldexp(float __x, int __y)        { return _STLP_DO_LDEXP(float)(__x, __y); }
1408.139 +// fbp : float versions are not always available
1408.140 +#if !defined(_STLP_VENDOR_LONG_DOUBLE_MATH)		//*ty 11/25/2001 - 
1408.141 +inline float modf (float __x, float* __y)     { 
1408.142 + #ifndef __SYMBIAN32__
1408.143 +  double __dd[2]; 
1408.144 +  double __res = _STLP_DO_MODF(double)((double)__x, __dd); 
1408.145 +  __y[0] = (float)__dd[0] ; __y[1] = (float)__dd[1]; 
1408.146 +  return (float)__res; 
1408.147 +#else
1408.148 +  float f = modff(__x, __y);
1408.149 +  return f;
1408.150 +#endif    
1408.151 +}
1408.152 +#else		//*ty 11/25/2001 - i.e. for apple SCpp
1408.153 +inline float modf (float __x, float* __y)     { 
1408.154 +  long double __dd[2]; 
1408.155 +  long double __res = _STLP_DO_MODF(long double)((long double)__x, __dd); 
1408.156 +  __y[0] = (float)__dd[0] ; __y[1] = (float)__dd[1]; 
1408.157 +  return (float)__res; 
1408.158 +}
1408.159 +#endif		//*ty 11/25/2001 - 
1408.160 +
1408.161 +inline float log (float __x)                  { return _STLP_DO_LOG(float)(__x); }
1408.162 +inline float log10(float __x)                 { return _STLP_DO_LOG10(float)(__x); }
1408.163 +inline float pow (float __x, float __y)       { return _STLP_DO_POW(float)(__x, __y); }
1408.164 +inline float pow (float __x, int __y)         { return _STLP_DO_POW(float)(__x, __y); }
1408.165 +inline float sin (float __x)                  { return _STLP_DO_SIN(float)(__x); }
1408.166 +inline float sinh (float __x)                 { return _STLP_DO_SINH(float)(__x); }
1408.167 +inline float sqrt (float __x)                 { return _STLP_DO_SQRT(float)(__x); }
1408.168 +inline float tan (float __x)                  { return _STLP_DO_TAN(float)(__x); }
1408.169 +inline float tanh (float __x)                 { return _STLP_DO_TANH(float)(__x); }
1408.170 +
1408.171 +#  if ! (defined  (_STLP_NO_LONG_DOUBLE) || defined(_STLP_VENDOR_LONG_DOUBLE_MATH))
1408.172 +
1408.173 +#if !( defined (__MVS__) || defined (_STLP_HAS_NATIVE_FLOAT_ABS))
1408.174 +inline long double abs (long double __x)                  { return _STLP_DO_ABS(long double)((double)__x); }
1408.175 +#endif
1408.176 +inline long double acos (long double __x)                 { return _STLP_DO_ACOS(long double)(__x); }
1408.177 +inline long double asin (long double __x)                 { return _STLP_DO_ASIN(long double)(__x); }
1408.178 +inline long double atan (long double __x)                 { return _STLP_DO_ATAN(long double)(__x); }
1408.179 +inline long double atan2(long double __x, long double __y)      { return _STLP_DO_ATAN2(long double)(__x, __y); }
1408.180 +inline long double ceil (long double __x)                 { return _STLP_DO_CEIL(long double)(__x); }
1408.181 +inline long double cos (long double __x)                  { return _STLP_DO_COS(long double)(__x); }
1408.182 +inline long double cosh (long double __x)                 { return _STLP_DO_COSH(long double)(__x); }
1408.183 +inline long double exp (long double __x)                  { return _STLP_DO_EXP(long double)(__x); }
1408.184 +inline long double fabs (long double __x)                 { return _STLP_DO_ABS(long double)(__x); }
1408.185 +inline long double floor(long double __x)                 { return _STLP_DO_FLOOR(long double)(__x); }
1408.186 +inline long double fmod (long double __x, long double __y)      { return _STLP_DO_FMOD(long double)(__x, __y); }
1408.187 +inline long double frexp(long double __x, int* __y)       { return _STLP_DO_FREXP(long double)(__x, __y); }
1408.188 +inline long double ldexp(long double __x, int __y)        { return _STLP_DO_LDEXP(long double)(__x, __y); }
1408.189 +// fbp : long double versions are not available
1408.190 +inline long double modf (long double __x, long double* __y)     { 
1408.191 +  double __dd[2]; 
1408.192 +  double __res = _STLP_DO_MODF(double)((double)__x, __dd); 
1408.193 +  __y[0] = (long double)__dd[0] ; __y[1] = (long double)__dd[1]; 
1408.194 +  return (long double)__res; 
1408.195 +}
1408.196 +inline long double log (long double __x)                  { return _STLP_DO_LOG(long double)(__x); }
1408.197 +inline long double log10(long double __x)                 { return _STLP_DO_LOG10(long double)(__x); }
1408.198 +inline long double pow (long double __x, long double __y)       { return _STLP_DO_POW(long double)(__x, __y); }
1408.199 +inline long double pow (long double __x, int __y)         { return _STLP_DO_POW(long double)(__x, __y); }
1408.200 +inline long double sin (long double __x)                  { return _STLP_DO_SIN(long double)(__x); }
1408.201 +inline long double sinh (long double __x)                 { return _STLP_DO_SINH(long double)(__x); }
1408.202 +inline long double sqrt (long double __x)                 { return _STLP_DO_SQRT(long double)(__x); }
1408.203 +inline long double tan (long double __x)                  { return _STLP_DO_TAN(long double)(__x); }
1408.204 +inline long double tanh (long double __x)                 { return _STLP_DO_TANH(long double)(__x); }
1408.205 +#endif
1408.206 +#endif
1408.207 +
1408.208 +_STLP_END_NAMESPACE
1408.209 +
1408.210 +# endif /* NEW_C_HEADERS */
1408.211 +# endif /* NEW_C_HEADERS */
1408.212 +
1408.213 +#endif /* CMATH_H */
  1409.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1409.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_codecvt.h	Wed Mar 31 12:27:01 2010 +0100
  1409.3 @@ -0,0 +1,323 @@
  1409.4 +/*
  1409.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1409.6 + *
  1409.7 + * Copyright (c) 1999
  1409.8 + * Silicon Graphics Computer Systems, Inc.
  1409.9 + *
 1409.10 + * Copyright (c) 1999 
 1409.11 + * Boris Fomitchev
 1409.12 + *
 1409.13 + * This material is provided "as is", with absolutely no warranty expressed
 1409.14 + * or implied. Any use is at your own risk.
 1409.15 + *
 1409.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1409.17 + * without fee, provided the above notices are retained on all copies.
 1409.18 + * Permission to modify the code and to distribute modified code is granted,
 1409.19 + * provided the above notices are retained, and a notice that the code was
 1409.20 + * modified is included with the above copyright notice.
 1409.21 + *
 1409.22 + */ 
 1409.23 +// WARNING: This is an internal header file, included by other C++
 1409.24 +// standard library headers.  You should not attempt to use this header
 1409.25 +// file directly.
 1409.26 +
 1409.27 +
 1409.28 +#ifndef _STLP_INTERNAL_CODECVT_H
 1409.29 +#define _STLP_INTERNAL_CODECVT_H
 1409.30 +
 1409.31 +# ifndef _STLP_C_LOCALE_H
 1409.32 +#  include <stl/c_locale.h>
 1409.33 +# endif
 1409.34 +# ifndef _STLP_INTERNAL_LOCALE_H
 1409.35 +#  include <stl/_locale.h>
 1409.36 +# endif
 1409.37 +
 1409.38 +_STLP_BEGIN_NAMESPACE
 1409.39 +
 1409.40 +class _STLP_CLASS_DECLSPEC codecvt_base {
 1409.41 +public:
 1409.42 +  enum result {ok, partial, error, noconv};
 1409.43 +};
 1409.44 +
 1409.45 +template <class _InternT, class _ExternT, class _StateT>
 1409.46 +class codecvt : public locale::facet, public codecvt_base {
 1409.47 +  typedef _InternT intern_type;
 1409.48 +  typedef _ExternT extern_type;
 1409.49 +  typedef _StateT state_type;
 1409.50 +};
 1409.51 + 
 1409.52 +template <class _InternT, class _ExternT, class _StateT>
 1409.53 +class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT> {};
 1409.54 +
 1409.55 +_STLP_TEMPLATE_NULL
 1409.56 +#ifdef __SYMBIAN32__
 1409.57 +class codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base
 1409.58 +#else
 1409.59 +class _STLP_CLASS_DECLSPEC codecvt<char, char, mbstate_t> : public locale::facet, public codecvt_base
 1409.60 +#endif
 1409.61 +{
 1409.62 +  friend class _Locale;
 1409.63 +public:
 1409.64 +  typedef char       intern_type;
 1409.65 +  typedef char       extern_type;
 1409.66 +  typedef mbstate_t  state_type;
 1409.67 +
 1409.68 +  explicit codecvt(size_t __refs = 0) : _BaseFacet(__refs) {}
 1409.69 +
 1409.70 +  result out(state_type&  __state,
 1409.71 +             const char*  __from,
 1409.72 +             const char*  __from_end,
 1409.73 +             const char*& __from_next,
 1409.74 +             char*        __to,
 1409.75 +             char*        __to_limit, 
 1409.76 +             char*&       __to_next) const {
 1409.77 +    return do_out(__state, 
 1409.78 +                  __from, __from_end, __from_next,
 1409.79 +                  __to,   __to_limit, __to_next);
 1409.80 +  }
 1409.81 +
 1409.82 +  result unshift(mbstate_t& __state,
 1409.83 +                 char* __to, char* __to_limit, char*& __to_next) const
 1409.84 +    { return do_unshift(__state, __to, __to_limit, __to_next); }
 1409.85 +    
 1409.86 +  result in(state_type&   __state,
 1409.87 +            const char*  __from,
 1409.88 +            const char*  __from_end,  
 1409.89 +            const char*& __from_next,
 1409.90 +            char*        __to, 
 1409.91 +            char*        __to_limit, 
 1409.92 +            char*&       __to_next) const {
 1409.93 +    return do_in(__state,
 1409.94 +                 __from, __from_end, __from_next,
 1409.95 +                 __to,   __to_limit, __to_next);
 1409.96 +  }
 1409.97 +
 1409.98 +  int encoding() const _STLP_NOTHROW { return do_encoding(); }
 1409.99 +
1409.100 +  bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); }
1409.101 +
1409.102 +  int length(const state_type& __state,
1409.103 +             const char* __from, const char* __end,
1409.104 +             size_t __max) const
1409.105 +    { return do_length(__state, __from, __end, __max); }
1409.106 +  
1409.107 +  int max_length() const _STLP_NOTHROW { return do_max_length(); }
1409.108 +
1409.109 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1409.110 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1409.111 +#else
1409.112 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1409.113 +#endif
1409.114 +
1409.115 +protected:
1409.116 +_STLP_DECLSPEC  ~codecvt();
1409.117 +
1409.118 +  _STLP_DECLSPEC virtual result do_out(mbstate_t&   /* __state */,
1409.119 +                        const char*  __from,
1409.120 +                        const char*  /* __from_end */,
1409.121 +                        const char*& __from_next,
1409.122 +                        char*        __to,
1409.123 +                        char*        /* __to_limit */,
1409.124 +                        char*&       __to_next) const;
1409.125 +
1409.126 +    _STLP_DECLSPEC virtual result do_in (mbstate_t&   /* __state */ , 
1409.127 +                        const char*  __from,
1409.128 +                        const char*  /* __from_end */,
1409.129 +                        const char*& __from_next,
1409.130 +                        char*        __to,
1409.131 +                        char*        /* __to_end */,
1409.132 +                        char*&       __to_next) const;
1409.133 +
1409.134 +  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t& /* __state */,
1409.135 +                            char*      __to,
1409.136 +                            char*      /* __to_limit */,
1409.137 +                            char*&     __to_next) const;
1409.138 +
1409.139 +  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
1409.140 +  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
1409.141 +  _STLP_DECLSPEC   virtual int do_length(const mbstate_t&         __state,
1409.142 +                        const  char* __from, 
1409.143 +                        const  char* __end,
1409.144 +                        size_t __max) const;
1409.145 +  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
1409.146 +private:
1409.147 +  codecvt(const codecvt<char, char, mbstate_t>&);
1409.148 +  codecvt<char, char, mbstate_t>& operator =(const codecvt<char, char, mbstate_t>&); 
1409.149 +};
1409.150 +
1409.151 +# ifndef _STLP_NO_WCHAR_T
1409.152 + 
1409.153 +_STLP_TEMPLATE_NULL
1409.154 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1409.155 +class codecvt<wchar_t, char, mbstate_t>  : public locale::facet, public codecvt_base
1409.156 +#else
1409.157 +class _STLP_CLASS_DECLSPEC codecvt<wchar_t, char, mbstate_t>  : public locale::facet, public codecvt_base
1409.158 +#endif
1409.159 +{
1409.160 +  friend class _Locale;
1409.161 +public:
1409.162 +  typedef wchar_t    intern_type;
1409.163 +  typedef char       extern_type;
1409.164 +  typedef mbstate_t  state_type;
1409.165 +
1409.166 +  explicit codecvt(size_t __refs = 0) : _BaseFacet(__refs) {}
1409.167 +
1409.168 +  result out(mbstate_t&       __state,
1409.169 +             const wchar_t*  __from,
1409.170 +             const wchar_t*  __from_end,
1409.171 +             const wchar_t*& __from_next,
1409.172 +             char*           __to,
1409.173 +             char*           __to_limit,
1409.174 +             char*&          __to_next) const {
1409.175 +    return do_out(__state,
1409.176 +                  __from, __from_end, __from_next, 
1409.177 +                  __to,   __to_limit, __to_next);
1409.178 +  }
1409.179 +
1409.180 +  result unshift(mbstate_t& __state,
1409.181 +                 char*  __to, char*  __to_limit, char*& __to_next) const {
1409.182 +    return do_unshift(__state, __to, __to_limit, __to_next);
1409.183 +  }
1409.184 +    
1409.185 +  result in(mbstate_t&    __state,
1409.186 +            const char*  __from,
1409.187 +            const char*  __from_end,  
1409.188 +            const char*& __from_next,
1409.189 +            wchar_t*     __to, 
1409.190 +            wchar_t*     __to_limit, 
1409.191 +            wchar_t*&    __to_next) const {
1409.192 +    return do_in(__state, 
1409.193 +                 __from, __from_end, __from_next,
1409.194 +                 __to,  __to_limit, __to_next);
1409.195 +  }
1409.196 +
1409.197 +  int encoding() const _STLP_NOTHROW { return do_encoding(); }
1409.198 +
1409.199 +  bool always_noconv() const _STLP_NOTHROW { return do_always_noconv(); }
1409.200 +
1409.201 +  int length(const mbstate_t&        __state,
1409.202 +             const char* __from,
1409.203 +             const char* __end,
1409.204 +             size_t             __max) const
1409.205 +    { return do_length(__state, __from, __end, __max); }
1409.206 +  
1409.207 +  int max_length() const _STLP_NOTHROW { return do_max_length(); }
1409.208 +
1409.209 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1409.210 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1409.211 +#else
1409.212 +  	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1409.213 +#endif
1409.214 +
1409.215 +protected:
1409.216 +    _STLP_DECLSPEC  ~codecvt();
1409.217 +
1409.218 +  _STLP_DECLSPEC   virtual result do_out(mbstate_t&         __state,
1409.219 +                        const wchar_t*  __from,
1409.220 +                        const wchar_t*  __from_end,
1409.221 +                        const wchar_t*& __from_next,
1409.222 +                        char*        __to,
1409.223 +                        char*        __to_limit,
1409.224 +                        char*&       __to_next) const;
1409.225 +
1409.226 +  _STLP_DECLSPEC   virtual result do_in (mbstate_t&         __state,
1409.227 +                        const char*  __from,
1409.228 +                        const char*  __from_end,
1409.229 +                        const char*& __from_next,
1409.230 +                        wchar_t*        __to,
1409.231 +                        wchar_t*        __to_limit,
1409.232 +                        wchar_t*&       __to_next) const;
1409.233 +
1409.234 +  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t&   __state,
1409.235 +                            char*  __to, 
1409.236 +                            char*  __to_limit,
1409.237 +                            char*& __to_next) const;
1409.238 +
1409.239 +  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
1409.240 +
1409.241 +  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
1409.242 +  
1409.243 +  _STLP_DECLSPEC   virtual int do_length(const mbstate_t& __state,
1409.244 +                        const  char* __from, 
1409.245 +                        const  char* __end,
1409.246 +                        size_t __max) const;
1409.247 +
1409.248 +  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
1409.249 +
1409.250 +private:
1409.251 +  codecvt(const codecvt<wchar_t, char, mbstate_t>&);
1409.252 +  codecvt<wchar_t, char, mbstate_t>& operator = (const codecvt<wchar_t, char, mbstate_t>&);  
1409.253 +};
1409.254 +
1409.255 +# endif
1409.256 +
1409.257 +_STLP_TEMPLATE_NULL
1409.258 +class _STLP_CLASS_DECLSPEC codecvt_byname<char, char, mbstate_t>
1409.259 +  : public codecvt<char, char, mbstate_t> {
1409.260 +public:
1409.261 +  explicit _STLP_DECLSPEC codecvt_byname(const char* __name, size_t __refs = 0);
1409.262 +  ~codecvt_byname();
1409.263 +private:
1409.264 +  codecvt_byname(const codecvt_byname<char, char, mbstate_t>&);
1409.265 +  codecvt_byname<char, char, mbstate_t>& operator =(const codecvt_byname<char, char, mbstate_t>&);  
1409.266 +};
1409.267 +
1409.268 +# ifndef _STLP_NO_WCHAR_T
1409.269 +_STLP_TEMPLATE_NULL
1409.270 +class codecvt_byname<wchar_t, char, mbstate_t>
1409.271 +  : public codecvt<wchar_t, char, mbstate_t> 
1409.272 +{
1409.273 +public:
1409.274 +  explicit _STLP_DECLSPEC codecvt_byname(const char * __name, size_t __refs = 0);    
1409.275 +
1409.276 +protected:
1409.277 +    _STLP_DECLSPEC ~codecvt_byname();
1409.278 +
1409.279 +  _STLP_DECLSPEC   virtual result do_out(mbstate_t&         __state,
1409.280 +                        const wchar_t*  __from,
1409.281 +                        const wchar_t*  __from_end,
1409.282 +                        const wchar_t*& __from_next,
1409.283 +                        char*        __to,
1409.284 +                        char*        __to_limit,
1409.285 +                        char*&       __to_next) const;
1409.286 +
1409.287 +  _STLP_DECLSPEC   virtual result do_in (mbstate_t&         __state,
1409.288 +                        const char*  __from,
1409.289 +                        const char*  __from_end,
1409.290 +                        const char*& __from_next,
1409.291 +                        wchar_t*        __to,
1409.292 +                        wchar_t*        __to_limit,
1409.293 +                        wchar_t*&       __to_next) const;
1409.294 +
1409.295 +  _STLP_DECLSPEC   virtual result do_unshift(mbstate_t&   __state,
1409.296 +                            char*  __to, 
1409.297 +                            char*  __to_limit,
1409.298 +                            char*& __to_next) const;
1409.299 +
1409.300 +  _STLP_DECLSPEC   virtual int do_encoding() const _STLP_NOTHROW;
1409.301 +
1409.302 +  _STLP_DECLSPEC   virtual bool do_always_noconv() const _STLP_NOTHROW;
1409.303 +  
1409.304 +  _STLP_DECLSPEC   virtual int do_length(const mbstate_t&         __state,
1409.305 +                        const  char* __from, 
1409.306 +                        const  char* __end,
1409.307 +                        size_t __max) const;
1409.308 +
1409.309 +  _STLP_DECLSPEC   virtual int do_max_length() const _STLP_NOTHROW;
1409.310 +
1409.311 +private:
1409.312 +  _Locale_ctype* _M_ctype;
1409.313 +  codecvt_byname(const codecvt_byname<wchar_t, char, mbstate_t>&);
1409.314 +  codecvt_byname<wchar_t, char, mbstate_t>& operator =(const codecvt_byname<wchar_t, char, mbstate_t>&);  
1409.315 +};
1409.316 +
1409.317 +# endif
1409.318 +
1409.319 +_STLP_END_NAMESPACE
1409.320 +
1409.321 +#endif /* _STLP_INTERNAL_CODECVT_H */
1409.322 +
1409.323 +// Local Variables:
1409.324 +// mode:C++
1409.325 +// End:
1409.326 +
  1410.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1410.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_collate.h	Wed Mar 31 12:27:01 2010 +0100
  1410.3 @@ -0,0 +1,204 @@
  1410.4 +/*
  1410.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1410.6 + *
  1410.7 + * Copyright (c) 1999
  1410.8 + * Silicon Graphics Computer Systems, Inc.
  1410.9 + *
 1410.10 + * Copyright (c) 1999 
 1410.11 + * Boris Fomitchev
 1410.12 + *
 1410.13 + * This material is provided "as is", with absolutely no warranty expressed
 1410.14 + * or implied. Any use is at your own risk.
 1410.15 + *
 1410.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1410.17 + * without fee, provided the above notices are retained on all copies.
 1410.18 + * Permission to modify the code and to distribute modified code is granted,
 1410.19 + * provided the above notices are retained, and a notice that the code was
 1410.20 + * modified is included with the above copyright notice.
 1410.21 + *
 1410.22 + */ 
 1410.23 +// WARNING: This is an internal header file, included by other C++
 1410.24 +// standard library headers.  You should not attempt to use this header
 1410.25 +// file directly.
 1410.26 +
 1410.27 +#ifndef _STLP_INTERNAL_COLLATE_H
 1410.28 +#define _STLP_INTERNAL_COLLATE_H
 1410.29 +
 1410.30 +#ifndef _STLP_C_LOCALE_H
 1410.31 +# include <stl/c_locale.h>
 1410.32 +#endif
 1410.33 +
 1410.34 +#ifndef _STLP_INTERNAL_LOCALE_H
 1410.35 +# include <stl/_locale.h>
 1410.36 +#endif
 1410.37 +
 1410.38 +#ifndef _STLP_STRING_H
 1410.39 +# include <stl/_string.h>
 1410.40 +#endif
 1410.41 +
 1410.42 +_STLP_BEGIN_NAMESPACE
 1410.43 +
 1410.44 +
 1410.45 +template <class _CharT> class collate {};
 1410.46 +template <class _CharT> class collate_byname {};
 1410.47 +
 1410.48 +_STLP_TEMPLATE_NULL
 1410.49 +#ifdef __SYMBIAN32__
 1410.50 +class  collate<char> : public locale::facet
 1410.51 +#else
 1410.52 +class _STLP_CLASS_DECLSPEC collate<char> : public locale::facet
 1410.53 +#endif
 1410.54 +{
 1410.55 +  friend class _Locale;
 1410.56 +public:
 1410.57 +  typedef char   char_type;
 1410.58 +  typedef string string_type;
 1410.59 +
 1410.60 +  explicit collate(size_t __refs = 0) : _BaseFacet(__refs) {}
 1410.61 +
 1410.62 +  int compare(const char* __low1, const char* __high1,
 1410.63 +              const char* __low2, const char* __high2) const {
 1410.64 +    return do_compare( __low1, __high1, __low2, __high2);
 1410.65 +  }
 1410.66 +
 1410.67 +  string_type transform(const char* __low, const char* __high) const {
 1410.68 +    return do_transform(__low, __high);
 1410.69 +  }
 1410.70 +
 1410.71 +  long hash(const char* __low, const char* __high) const
 1410.72 +    { return do_hash(__low, __high); }
 1410.73 +
 1410.74 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1410.75 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
 1410.76 +#else
 1410.77 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
 1410.78 +#endif
 1410.79 +
 1410.80 +protected:
 1410.81 +_STLP_DECLSPEC  ~collate();
 1410.82 +
 1410.83 +_STLP_DECLSPEC   virtual int do_compare(const char*, const char*,
 1410.84 +                         const char*, const char*) const;
 1410.85 +_STLP_DECLSPEC   virtual string_type do_transform(const char*, const char*) const;
 1410.86 +_STLP_DECLSPEC   virtual long do_hash(const char*, const char*) const;
 1410.87 +private:
 1410.88 +  collate(const collate<char>&);
 1410.89 +  collate<char>& operator =(const collate<char>&);  
 1410.90 +};
 1410.91 +
 1410.92 +# ifndef _STLP_NO_WCHAR_T
 1410.93 +
 1410.94 +_STLP_TEMPLATE_NULL
 1410.95 +#ifdef __SYMBIAN32__
 1410.96 +class  collate<wchar_t> : public locale::facet
 1410.97 +#else
 1410.98 +class _STLP_CLASS_DECLSPEC collate<wchar_t> : public locale::facet
 1410.99 +#endif
1410.100 +{
1410.101 +  friend class _Locale;
1410.102 +public:
1410.103 +  typedef wchar_t char_type;
1410.104 +  typedef wstring string_type;
1410.105 +
1410.106 +  explicit collate(size_t __refs = 0) : _BaseFacet(__refs) {}
1410.107 +
1410.108 +  int compare(const wchar_t* __low1, const wchar_t* __high1,
1410.109 +              const wchar_t* __low2, const wchar_t* __high2) const {
1410.110 +    return do_compare( __low1, __high1, __low2, __high2);
1410.111 +  }
1410.112 +
1410.113 +  string_type transform(const wchar_t* __low, const wchar_t* __high) const {
1410.114 +    return do_transform(__low, __high);
1410.115 +  }
1410.116 +
1410.117 +  long hash(const wchar_t* __low, const wchar_t* __high) const
1410.118 +    { return do_hash(__low, __high); }
1410.119 +
1410.120 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1410.121 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1410.122 +#else
1410.123 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1410.124 +#endif
1410.125 +
1410.126 +protected:
1410.127 +_STLP_DECLSPEC   ~collate();
1410.128 +
1410.129 +_STLP_DECLSPEC   virtual int do_compare(const wchar_t*, const wchar_t*,
1410.130 +                         const wchar_t*, const wchar_t*) const;
1410.131 +_STLP_DECLSPEC   virtual string_type do_transform(const wchar_t*, const wchar_t*) const;
1410.132 +_STLP_DECLSPEC   virtual long do_hash(const wchar_t* __low, const wchar_t* __high) const;
1410.133 +private:
1410.134 +  collate(const collate<wchar_t>&);
1410.135 +  collate<wchar_t>& operator = (const collate<wchar_t>&);  
1410.136 +};
1410.137 +
1410.138 +# endif /* NO_WCHAR_T */
1410.139 +
1410.140 +_STLP_TEMPLATE_NULL
1410.141 +class _STLP_CLASS_DECLSPEC collate_byname<char>: public collate<char> 
1410.142 +{
1410.143 +public:
1410.144 +  explicit _STLP_DECLSPEC collate_byname(const char* __name, size_t __refs = 0);
1410.145 +
1410.146 +protected:
1410.147 +_STLP_DECLSPEC   ~collate_byname();
1410.148 +
1410.149 +_STLP_DECLSPEC   virtual int do_compare(const char*, const char*,
1410.150 +                         const char*, const char*) const;
1410.151 +_STLP_DECLSPEC   virtual string_type do_transform(const char*, const char*) const;
1410.152 +
1410.153 +private:
1410.154 +  _Locale_collate* _M_collate;
1410.155 +  collate_byname(const collate_byname<char>&);
1410.156 +  collate_byname<char>& operator =(const collate_byname<char>&);  
1410.157 +};
1410.158 +
1410.159 +# ifndef _STLP_NO_WCHAR_T
1410.160 +
1410.161 +_STLP_TEMPLATE_NULL
1410.162 +class _STLP_CLASS_DECLSPEC collate_byname<wchar_t>: public collate<wchar_t> 
1410.163 +{
1410.164 +public:
1410.165 +  explicit _STLP_DECLSPEC  collate_byname(const char * __name, size_t __refs = 0);
1410.166 +
1410.167 +protected:
1410.168 +_STLP_DECLSPEC   ~collate_byname();
1410.169 +
1410.170 +_STLP_DECLSPEC   virtual int do_compare(const wchar_t*, const wchar_t*,
1410.171 +                         const wchar_t*, const wchar_t*) const;
1410.172 +_STLP_DECLSPEC   virtual string_type do_transform(const wchar_t*, const wchar_t*) const;
1410.173 +
1410.174 +private:
1410.175 +  _Locale_collate* _M_collate;
1410.176 +  collate_byname(const collate_byname<wchar_t>&);
1410.177 +  collate_byname<wchar_t>& operator =(const collate_byname<wchar_t>&);  
1410.178 +};
1410.179 +
1410.180 +# endif /* NO_WCHAR_T */
1410.181 +
1410.182 +
1410.183 +template <class _CharT, class _Traits, class _Alloc>
1410.184 +bool 
1410.185 +__locale_do_operator_call (const locale* __that, 
1410.186 +                           const basic_string<_CharT, _Traits, _Alloc >& __x,
1410.187 +                           const basic_string<_CharT, _Traits, _Alloc >& __y) 
1410.188 +{
1410.189 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1410.190 +  collate<_CharT>* __f = (collate<_CharT>*)__that->_M_get_facet(collate<_CharT>::GetFacetLocaleId());
1410.191 +#else
1410.192 +  collate<_CharT>* __f = (collate<_CharT>*)__that->_M_get_facet(collate<_CharT>::id);
1410.193 +#endif
1410.194 +  if (!__f)
1410.195 +    __that->_M_throw_runtime_error();
1410.196 +  return __f->compare(__x.data(), __x.data() + __x.size(),
1410.197 +                      __y.data(), __y.data() + __y.size()) < 0;
1410.198 +  
1410.199 +}
1410.200 +
1410.201 +_STLP_END_NAMESPACE
1410.202 +
1410.203 +#endif /* _STLP_INTERNAL_COLLATE_H */
1410.204 +
1410.205 +// Local Variables:
1410.206 +// mode:C++
1410.207 +// End:
  1411.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1411.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_complex.c	Wed Mar 31 12:27:01 2010 +0100
  1411.3 @@ -0,0 +1,169 @@
  1411.4 +/*
  1411.5 + * Copyright (c) 1999
  1411.6 + * Silicon Graphics Computer Systems, Inc.
  1411.7 + *
  1411.8 + * Copyright (c) 1999 
  1411.9 + * Boris Fomitchev
 1411.10 + *
 1411.11 + * This material is provided "as is", with absolutely no warranty expressed
 1411.12 + * or implied. Any use is at your own risk.
 1411.13 + *
 1411.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1411.15 + * without fee, provided the above notices are retained on all copies.
 1411.16 + * Permission to modify the code and to distribute modified code is granted,
 1411.17 + * provided the above notices are retained, and a notice that the code was
 1411.18 + * modified is included with the above copyright notice.
 1411.19 + *
 1411.20 + */ 
 1411.21 +#ifndef _STLP_COMPLEX_C
 1411.22 +#define _STLP_COMPLEX_C
 1411.23 +
 1411.24 +# ifndef _STLP_internal_complex_h
 1411.25 +#  include <stl/_complex.h>
 1411.26 +# endif
 1411.27 +
 1411.28 +#include <istream>
 1411.29 +
 1411.30 +#ifdef _STLP_USE_NEW_IOSTREAMS
 1411.31 +# include <sstream>
 1411.32 +#endif
 1411.33 +
 1411.34 +_STLP_BEGIN_NAMESPACE
 1411.35 +
 1411.36 +// Non-inline member functions.
 1411.37 +
 1411.38 +template <class _Tp>
 1411.39 +void complex<_Tp>::_div(const _Tp& __z1_r, const _Tp& __z1_i,
 1411.40 +                        const _Tp& __z2_r, const _Tp& __z2_i,
 1411.41 +                        _Tp& __res_r, _Tp& __res_i) {
 1411.42 +  _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
 1411.43 +  _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
 1411.44 +
 1411.45 +  if (__ar <= __ai) {
 1411.46 +    _Tp __ratio = __z2_r / __z2_i;
 1411.47 +    _Tp __denom = __z2_i * (1 + __ratio * __ratio);
 1411.48 +    __res_r = (__z1_r * __ratio + __z1_i) / __denom;
 1411.49 +    __res_i = (__z1_i * __ratio - __z1_r) / __denom;
 1411.50 +  }
 1411.51 +  else {
 1411.52 +    _Tp __ratio = __z2_i / __z2_r;
 1411.53 +    _Tp __denom = __z2_r * (1 + __ratio * __ratio);
 1411.54 +    __res_r = (__z1_r + __z1_i * __ratio) / __denom;
 1411.55 +    __res_i = (__z1_i - __z1_r * __ratio) / __denom;
 1411.56 +  }
 1411.57 +}
 1411.58 +
 1411.59 +template <class _Tp>
 1411.60 +void complex<_Tp>::_div(const _Tp& __z1_r,
 1411.61 +                        const _Tp& __z2_r, const _Tp& __z2_i,
 1411.62 +                        _Tp& __res_r, _Tp& __res_i) {
 1411.63 +  _Tp __ar = __z2_r >= 0 ? __z2_r : -__z2_r;
 1411.64 +  _Tp __ai = __z2_i >= 0 ? __z2_i : -__z2_i;
 1411.65 +
 1411.66 +  if (__ar <= __ai) {
 1411.67 +    _Tp __ratio = __z2_r / __z2_i;
 1411.68 +    _Tp __denom = __z2_i * (1 + __ratio * __ratio);
 1411.69 +    __res_r = (__z1_r * __ratio) / __denom;
 1411.70 +    __res_i = - __z1_r / __denom;
 1411.71 +  }
 1411.72 +  else {
 1411.73 +    _Tp __ratio = __z2_i / __z2_r;
 1411.74 +    _Tp __denom = __z2_r * (1 + __ratio * __ratio);
 1411.75 +    __res_r = __z1_r / __denom;
 1411.76 +    __res_i = - (__z1_r * __ratio) / __denom;
 1411.77 +  }
 1411.78 +}
 1411.79 +
 1411.80 +// I/O.
 1411.81 +
 1411.82 +#ifdef _STLP_USE_NEW_IOSTREAMS
 1411.83 +
 1411.84 +// Complex output, in the form (re,im).  We use a two-step process 
 1411.85 +// involving stringstream so that we get the padding right.  
 1411.86 +template <class _Tp, class _CharT, class _Traits>
 1411.87 +basic_ostream<_CharT, _Traits>& _STLP_CALL
 1411.88 +operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z)
 1411.89 +{
 1411.90 +  basic_ostringstream<_CharT, _Traits, allocator<_CharT> > __tmp;
 1411.91 +  __tmp.flags(__os.flags());
 1411.92 +  __tmp.imbue(__os.getloc());
 1411.93 +  __tmp.precision(__os.precision());
 1411.94 +  __tmp << '(' << __z.real() << ',' << __z.imag() << ')';
 1411.95 +  return __os << __tmp.str();
 1411.96 +}
 1411.97 +
 1411.98 +// Complex input from arbitrary streams.  Note that results in some
 1411.99 +// locales may be confusing, since the decimal character varies with
1411.100 +// locale and the separator between real and imaginary parts does not.
1411.101 +
1411.102 +template <class _Tp, class _CharT, class _Traits>
1411.103 +basic_istream<_CharT, _Traits>& _STLP_CALL
1411.104 +operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z)
1411.105 +{
1411.106 +  _Tp  __re = 0;
1411.107 +  _Tp  __im = 0;
1411.108 +
1411.109 +  // typedef ctype<_CharT> _Ctype;
1411.110 +  //  locale __loc = __is.getloc();
1411.111 +  //const _Ctype&  __c_type  = use_facet<_Ctype>(__loc);
1411.112 +  const ctype<_CharT>& __c_type = *(const ctype<_CharT>*)__is._M_ctype_facet();
1411.113 +
1411.114 +  char   __punct[4] = "(,)";
1411.115 +  _CharT __wpunct[3];
1411.116 +  __c_type.widen(__punct, __punct + 3, __wpunct);
1411.117 +
1411.118 +  _CharT __c;
1411.119 +
1411.120 +  __is >> __c;
1411.121 +  if (_Traits::eq(__c, __wpunct[0])) {  // Left paren
1411.122 +    __is >> __re >> __c;
1411.123 +    if (_Traits::eq(__c, __wpunct[1]))  // Comma
1411.124 +      __is >> __im >> __c;
1411.125 +    if (!_Traits::eq(__c, __wpunct[2])) // Right paren
1411.126 +      __is.setstate(ios_base::failbit);
1411.127 +  }
1411.128 +  else {
1411.129 +    __is.putback(__c);
1411.130 +    __is >> __re;
1411.131 +  }
1411.132 +
1411.133 +  if (__is)
1411.134 +    __z = complex<_Tp>(__re, __im);
1411.135 +  return __is;
1411.136 +}
1411.137 +
1411.138 +
1411.139 +#else /* _STLP_USE_NEW_IOSTREAMS */
1411.140 +
1411.141 +template <class _Tp>
1411.142 +ostream& _STLP_CALL operator<<(ostream& s, const complex<_Tp>& __z)
1411.143 +{
1411.144 +  return s << "( " << __z._M_re <<", " << __z._M_im <<")";
1411.145 +}
1411.146 +
1411.147 +template <class _Tp>
1411.148 +istream& _STLP_CALL operator>>(istream& s, complex<_Tp>& a)
1411.149 +{
1411.150 +  _Tp re = 0, im = 0;
1411.151 +  char 	c = 0;
1411.152 +
1411.153 +  s >> c;
1411.154 +  if (c == '(') {
1411.155 +    s >> re >> c;
1411.156 +    if (c == ',') s >> im >> c;
1411.157 +    if (c != ')') s.clear(ios::badbit);
1411.158 +  }
1411.159 +  else {
1411.160 +    s.putback(c);
1411.161 +    s >> re;
1411.162 +  }
1411.163 +
1411.164 +  if (s) a = complex<_Tp>(re, im);
1411.165 +  return s;
1411.166 +}
1411.167 +
1411.168 +#endif /* _STLP_USE_NEW_IOSTREAMS */
1411.169 +
1411.170 +_STLP_END_NAMESPACE
1411.171 +
1411.172 +#endif /* _STLP_COMPLEX_C */
  1412.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1412.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_complex.h	Wed Mar 31 12:27:01 2010 +0100
  1412.3 @@ -0,0 +1,1013 @@
  1412.4 +/*
  1412.5 + * Copyright (c) 1999
  1412.6 + * Silicon Graphics Computer Systems, Inc.
  1412.7 + *
  1412.8 + * Copyright (c) 1999 
  1412.9 + * Boris Fomitchev
 1412.10 + *
 1412.11 + * This material is provided "as is", with absolutely no warranty expressed
 1412.12 + * or implied. Any use is at your own risk.
 1412.13 + *
 1412.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1412.15 + * without fee, provided the above notices are retained on all copies.
 1412.16 + * Permission to modify the code and to distribute modified code is granted,
 1412.17 + * provided the above notices are retained, and a notice that the code was
 1412.18 + * modified is included with the above copyright notice.
 1412.19 + *
 1412.20 + */ 
 1412.21 +#ifndef _STLP_internal_complex_h
 1412.22 +#define _STLP_internal_complex_h
 1412.23 +
 1412.24 +// This header declares the template class complex, as described in 
 1412.25 +// in the draft C++ standard.  Single-precision complex numbers
 1412.26 +// are complex<float>, double-precision are complex<double>, and
 1412.27 +// quad precision are complex<long double>.
 1412.28 +
 1412.29 +// Note that the template class complex is declared within namespace
 1412.30 +// std, as called for by the draft C++ standard.  
 1412.31 +
 1412.32 +#include <stl/_cmath.h>
 1412.33 +#include <iosfwd>
 1412.34 +
 1412.35 +_STLP_BEGIN_NAMESPACE
 1412.36 +
 1412.37 +#if !defined(_STLP_NO_COMPLEX_SPECIALIZATIONS)		//*TY 02/25/2000 - added for MPW compiler workaround
 1412.38 +
 1412.39 +template <class _Tp> struct complex;
 1412.40 +
 1412.41 +_STLP_TEMPLATE_NULL  struct _STLP_CLASS_DECLSPEC complex<float>;
 1412.42 +_STLP_TEMPLATE_NULL  struct _STLP_CLASS_DECLSPEC complex<double>;
 1412.43 +# ifndef _STLP_NO_LONG_DOUBLE
 1412.44 +_STLP_TEMPLATE_NULL  struct _STLP_CLASS_DECLSPEC complex<long double>;
 1412.45 +# endif
 1412.46 +# endif
 1412.47 +
 1412.48 +template <class _Tp>
 1412.49 +struct complex {
 1412.50 +  typedef _Tp value_type;
 1412.51 +  typedef complex<_Tp> _Self;
 1412.52 +
 1412.53 +  // Constructors, destructor, assignment operator.
 1412.54 +  complex() : _M_re(0), _M_im(0) {}
 1412.55 +  complex(const value_type& __x)
 1412.56 +    : _M_re(__x), _M_im(0) {}
 1412.57 +  complex(const value_type& __x, const value_type& __y)
 1412.58 +    : _M_re(__x), _M_im(__y) {}
 1412.59 +  complex(const _Self& __z)
 1412.60 +    : _M_re(__z._M_re), _M_im(__z._M_im) {}
 1412.61 +
 1412.62 +  _Self& operator=(const _Self& __z) {
 1412.63 +    _M_re = __z._M_re;
 1412.64 +    _M_im = __z._M_im;
 1412.65 +    return *this;
 1412.66 +  }
 1412.67 +
 1412.68 +#if defined (_STLP_MEMBER_TEMPLATES) && ( defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) || defined(_STLP_NO_COMPLEX_SPECIALIZATIONS))
 1412.69 +  template <class _Tp2>
 1412.70 +  explicit complex(const complex<_Tp2>& __z)
 1412.71 +    : _M_re(__z._M_re), _M_im(__z._M_im) {}
 1412.72 +
 1412.73 +  template <class _Tp2>
 1412.74 +  _Self& operator=(const complex<_Tp2>& __z) {
 1412.75 +    _M_re = __z._M_re;
 1412.76 +    _M_im = __z._M_im;
 1412.77 +    return *this;
 1412.78 +  }
 1412.79 +#endif /* _STLP_MEMBER_TEMPLATES */
 1412.80 +
 1412.81 +  // Element access.
 1412.82 +  value_type real() const { return _M_re; }
 1412.83 +  value_type imag() const { return _M_im; }
 1412.84 +
 1412.85 +  // Arithmetic op= operations involving one real argument.
 1412.86 +
 1412.87 +  _Self& operator= (const value_type& __x) {
 1412.88 +    _M_re = __x;
 1412.89 +    _M_im = 0;
 1412.90 +    return *this;
 1412.91 +  }
 1412.92 +  _Self& operator+= (const value_type& __x) {
 1412.93 +    _M_re += __x;
 1412.94 +    return *this;
 1412.95 +  }
 1412.96 +  _Self& operator-= (const value_type& __x) {
 1412.97 +    _M_re -= __x;
 1412.98 +    return *this;
 1412.99 +  }
1412.100 +  _Self& operator*= (const value_type& __x) {
1412.101 +    _M_re *= __x;
1412.102 +    _M_im *= __x;
1412.103 +    return *this;
1412.104 +  }
1412.105 +  _Self& operator/= (const value_type& __x) {
1412.106 +    _M_re /= __x;
1412.107 +    _M_im /= __x;
1412.108 +    return *this;
1412.109 +  }
1412.110 +
1412.111 +  // Arithmetic op= operations involving two complex arguments.
1412.112 +
1412.113 +  static void  _STLP_CALL _div(const value_type& __z1_r, const value_type& __z1_i,
1412.114 +                   const value_type& __z2_r, const value_type& __z2_i,
1412.115 +                   value_type& __res_r, value_type& __res_i);
1412.116 +
1412.117 +  static void _STLP_CALL _div(const value_type& __z1_r, 
1412.118 +                   const value_type& __z2_r, const value_type& __z2_i,
1412.119 +                   value_type& __res_r, value_type& __res_i);
1412.120 +
1412.121 +#if defined ( _STLP_MEMBER_TEMPLATES ) // && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
1412.122 +
1412.123 +  template <class _Tp2> _Self& operator+= (const complex<_Tp2>& __z) {
1412.124 +    _M_re += __z._M_re;
1412.125 +    _M_im += __z._M_im;
1412.126 +    return *this;
1412.127 +  }
1412.128 +
1412.129 +  template <class _Tp2> _Self& operator-= (const complex<_Tp2>& __z) {
1412.130 +    _M_re -= __z._M_re;
1412.131 +    _M_im -= __z._M_im;
1412.132 +    return *this;
1412.133 +  }
1412.134 +
1412.135 +  template <class _Tp2> _Self& operator*= (const complex<_Tp2>& __z) {
1412.136 +    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.137 +    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.138 +    _M_re = __r;
1412.139 +    _M_im = __i;
1412.140 +    return *this;
1412.141 +  }
1412.142 +
1412.143 +  template <class _Tp2> _Self& operator/= (const complex<_Tp2>& __z) {
1412.144 +    value_type __r;
1412.145 +    value_type __i;
1412.146 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.147 +    _M_re = __r;
1412.148 +    _M_im = __i;
1412.149 +    return *this;
1412.150 +  }
1412.151 +
1412.152 +#endif /* _STLP_MEMBER_TEMPLATES */
1412.153 +
1412.154 +  _Self& operator+= (const _Self& __z) {
1412.155 +    _M_re += __z._M_re;
1412.156 +    _M_im += __z._M_im;
1412.157 +    return *this;
1412.158 +  }
1412.159 +
1412.160 +  _Self& operator-= (const _Self& __z) {
1412.161 +    _M_re -= __z._M_re;
1412.162 +    _M_im -= __z._M_im;
1412.163 +    return *this;
1412.164 +  }
1412.165 +  
1412.166 +  _Self& operator*= (const _Self& __z) {
1412.167 +    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.168 +    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.169 +    _M_re = __r;
1412.170 +    _M_im = __i;
1412.171 +    return *this;
1412.172 +  }
1412.173 +
1412.174 +  _Self& operator/= (const _Self& __z) {
1412.175 +    value_type __r;
1412.176 +    value_type __i;
1412.177 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.178 +    _M_re = __r;
1412.179 +    _M_im = __i;
1412.180 +    return *this;
1412.181 +  }
1412.182 +
1412.183 +  // Data members.
1412.184 +  value_type _M_re;
1412.185 +  value_type _M_im;
1412.186 +};
1412.187 +
1412.188 +#if !defined(_STLP_NO_COMPLEX_SPECIALIZATIONS)		//*TY 02/25/2000 - added for MPW compiler workaround
1412.189 +// Explicit specializations for float, double, long double.  The only
1412.190 +// reason for these specializations is to enable automatic conversions
1412.191 +// from complex<float> to complex<double>, and complex<double> to
1412.192 +// complex<long double>.
1412.193 +
1412.194 +
1412.195 +_STLP_TEMPLATE_NULL
1412.196 +struct _STLP_CLASS_DECLSPEC complex<float> {
1412.197 +  typedef float value_type;
1412.198 +  typedef complex<float> _Self;
1412.199 +  // Constructors, destructor, assignment operator.
1412.200 +
1412.201 +  complex(value_type __x = 0.0, value_type __y = 0.0)
1412.202 +    : _M_re(__x), _M_im(__y) {}
1412.203 +
1412.204 +  complex(const complex<float>& __z)    : _M_re(__z._M_re), _M_im(__z._M_im) {} 
1412.205 +
1412.206 +  inline explicit complex(const complex<double>& __z);
1412.207 +# ifndef _STLP_NO_LONG_DOUBLE
1412.208 +  inline explicit complex(const complex<long double>& __z);
1412.209 +# endif
1412.210 +  // Element access.
1412.211 +  value_type real() const { return _M_re; }
1412.212 +  value_type imag() const { return _M_im; }
1412.213 +
1412.214 +  // Arithmetic op= operations involving one real argument.
1412.215 +
1412.216 +  _Self& operator= (value_type __x) {
1412.217 +    _M_re = __x;
1412.218 +    _M_im = 0;
1412.219 +    return *this;
1412.220 +  }
1412.221 +  _Self& operator+= (value_type __x) {
1412.222 +    _M_re += __x;
1412.223 +    return *this;
1412.224 +  }
1412.225 +  _Self& operator-= (value_type __x) {
1412.226 +    _M_re -= __x;
1412.227 +    return *this;
1412.228 +  }
1412.229 +  _Self& operator*= (value_type __x) {
1412.230 +    _M_re *= __x;
1412.231 +    _M_im *= __x;
1412.232 +    return *this;
1412.233 +  }
1412.234 +  _Self& operator/= (value_type __x) {
1412.235 +    _M_re /= __x;
1412.236 +    _M_im /= __x;
1412.237 +    return *this;
1412.238 +  }
1412.239 +
1412.240 +  // Arithmetic op= operations involving two complex arguments.
1412.241 +
1412.242 +   _STLP_DECLSPEC static void _STLP_CALL _div(const float& __z1_r, const float& __z1_i,
1412.243 +                              const float& __z2_r, const float& __z2_i,
1412.244 +                              float& __res_r, float& __res_i);
1412.245 +    
1412.246 +   _STLP_DECLSPEC static void _STLP_CALL _div(const float& __z1_r, 
1412.247 +                              const float& __z2_r, const float& __z2_i,
1412.248 +                              float& __res_r, float& __res_i);
1412.249 +    
1412.250 +#if defined (_STLP_MEMBER_TEMPLATES)
1412.251 +
1412.252 +  template <class _Tp2>
1412.253 +  complex<float>& operator=(const complex<_Tp2>& __z) {
1412.254 +    _M_re = __z._M_re;
1412.255 +    _M_im = __z._M_im;
1412.256 +    return *this;
1412.257 +  }
1412.258 +
1412.259 +  template <class _Tp2>
1412.260 +  complex<float>& operator+= (const complex<_Tp2>& __z) {
1412.261 +    _M_re += __z._M_re;
1412.262 +    _M_im += __z._M_im;
1412.263 +    return *this;
1412.264 +  }
1412.265 +
1412.266 +  template <class _Tp2>
1412.267 +  complex<float>& operator-= (const complex<_Tp2>& __z) {
1412.268 +    _M_re -= __z._M_re;
1412.269 +    _M_im -= __z._M_im;
1412.270 +    return *this;
1412.271 +  }
1412.272 +
1412.273 +  template <class _Tp2>
1412.274 +  complex<float>& operator*= (const complex<_Tp2>& __z) {
1412.275 +    float __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.276 +    float __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.277 +    _M_re = __r;
1412.278 +    _M_im = __i;
1412.279 +    return *this;
1412.280 +  }
1412.281 +
1412.282 +  template <class _Tp2>
1412.283 +  complex<float>& operator/= (const complex<_Tp2>& __z) {
1412.284 +    float __r;
1412.285 +    float __i;
1412.286 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.287 +    _M_re = __r;
1412.288 +    _M_im = __i;
1412.289 +    return *this;
1412.290 +  }
1412.291 +
1412.292 +#endif /* _STLP_MEMBER_TEMPLATES */
1412.293 +
1412.294 +  _Self& operator=(const _Self& __z) {
1412.295 +    _M_re = __z._M_re;
1412.296 +    _M_im = __z._M_im;
1412.297 +    return *this;
1412.298 +  }
1412.299 +
1412.300 +  _Self& operator+= (const _Self& __z) {
1412.301 +    _M_re += __z._M_re;
1412.302 +    _M_im += __z._M_im;
1412.303 +    return *this;
1412.304 +  }
1412.305 +
1412.306 +  _Self& operator-= (const _Self& __z) {
1412.307 +    _M_re -= __z._M_re;
1412.308 +    _M_im -= __z._M_im;
1412.309 +    return *this;
1412.310 +  }
1412.311 +  
1412.312 +  _Self& operator*= (const _Self& __z) {
1412.313 +    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.314 +    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.315 +    _M_re = __r;
1412.316 +    _M_im = __i;
1412.317 +    return *this;
1412.318 +  }
1412.319 +
1412.320 +  _Self& operator/= (const _Self& __z) {
1412.321 +    value_type __r;
1412.322 +    value_type __i;
1412.323 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.324 +    _M_re = __r;
1412.325 +    _M_im = __i;
1412.326 +    return *this;
1412.327 +  }
1412.328 +
1412.329 +  // Data members.
1412.330 +  value_type _M_re;
1412.331 +  value_type _M_im;
1412.332 +};
1412.333 +
1412.334 +_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC complex<double> {
1412.335 +  typedef double value_type;
1412.336 +  typedef complex<double> _Self;
1412.337 +
1412.338 +  // Constructors, destructor, assignment operator.
1412.339 +
1412.340 +  complex(value_type __x = 0.0, value_type __y = 0.0)
1412.341 +    : _M_re(__x), _M_im(__y) {}
1412.342 +
1412.343 +  complex(const complex<double>& __z)
1412.344 +    : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.345 +  inline complex(const complex<float>& __z);
1412.346 +# ifndef _STLP_NO_LONG_DOUBLE
1412.347 +  explicit inline complex(const complex<long double>& __z);
1412.348 +# endif
1412.349 +  // Element access.
1412.350 +  value_type real() const { return _M_re; }
1412.351 +  value_type imag() const { return _M_im; }
1412.352 +
1412.353 +  // Arithmetic op= operations involving one real argument.
1412.354 +
1412.355 +  _Self& operator= (value_type __x) {
1412.356 +    _M_re = __x;
1412.357 +    _M_im = 0;
1412.358 +    return *this;
1412.359 +  }
1412.360 +  _Self& operator+= (value_type __x) {
1412.361 +    _M_re += __x;
1412.362 +    return *this;
1412.363 +  }
1412.364 +  _Self& operator-= (value_type __x) {
1412.365 +    _M_re -= __x;
1412.366 +    return *this;
1412.367 +  }
1412.368 +  _Self& operator*= (value_type __x) {
1412.369 +    _M_re *= __x;
1412.370 +    _M_im *= __x;
1412.371 +    return *this;
1412.372 +  }
1412.373 +  _Self& operator/= (value_type __x) {
1412.374 +    _M_re /= __x;
1412.375 +    _M_im /= __x;
1412.376 +    return *this;
1412.377 +  }
1412.378 +
1412.379 +  // Arithmetic op= operations involving two complex arguments.
1412.380 +
1412.381 +  _STLP_DECLSPEC static void _STLP_CALL _div(const double& __z1_r, const double& __z1_i,
1412.382 +                              const double& __z2_r, const double& __z2_i,
1412.383 +                              double& __res_r, double& __res_i);
1412.384 +  _STLP_DECLSPEC static void _STLP_CALL _div(const double& __z1_r, 
1412.385 +                              const double& __z2_r, const double& __z2_i,
1412.386 +                              double& __res_r, double& __res_i);
1412.387 +    
1412.388 +#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
1412.389 +
1412.390 +  template <class _Tp2>
1412.391 +  complex<double>& operator=(const complex<_Tp2>& __z) {
1412.392 +    _M_re = __z._M_re;
1412.393 +    _M_im = __z._M_im;
1412.394 +    return *this;
1412.395 +  }
1412.396 +
1412.397 +  template <class _Tp2>
1412.398 +  complex<double>& operator+= (const complex<_Tp2>& __z) {
1412.399 +    _M_re += __z._M_re;
1412.400 +    _M_im += __z._M_im;
1412.401 +    return *this;
1412.402 +  }
1412.403 +
1412.404 +  template <class _Tp2>
1412.405 +  complex<double>& operator-= (const complex<_Tp2>& __z) {
1412.406 +    _M_re -= __z._M_re;
1412.407 +    _M_im -= __z._M_im;
1412.408 +    return *this;
1412.409 +  }
1412.410 +
1412.411 +  template <class _Tp2>
1412.412 +  complex<double>& operator*= (const complex<_Tp2>& __z) {
1412.413 +    double __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.414 +    double __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.415 +    _M_re = __r;
1412.416 +    _M_im = __i;
1412.417 +    return *this;
1412.418 +  }
1412.419 +
1412.420 +  template <class _Tp2>
1412.421 +  complex<double>& operator/= (const complex<_Tp2>& __z) {
1412.422 +    double __r;
1412.423 +    double __i;
1412.424 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.425 +    _M_re = __r;
1412.426 +    _M_im = __i;
1412.427 +    return *this;
1412.428 +  }
1412.429 +
1412.430 +#endif /* _STLP_MEMBER_TEMPLATES */
1412.431 +
1412.432 +  _Self& operator=(const _Self& __z) {
1412.433 +    _M_re = __z._M_re;
1412.434 +    _M_im = __z._M_im;
1412.435 +    return *this;
1412.436 +  }
1412.437 +
1412.438 +  _Self& operator+= (const _Self& __z) {
1412.439 +    _M_re += __z._M_re;
1412.440 +    _M_im += __z._M_im;
1412.441 +    return *this;
1412.442 +  }
1412.443 +
1412.444 +  _Self& operator-= (const _Self& __z) {
1412.445 +    _M_re -= __z._M_re;
1412.446 +    _M_im -= __z._M_im;
1412.447 +    return *this;
1412.448 +  }
1412.449 +  
1412.450 +  _Self& operator*= (const _Self& __z) {
1412.451 +    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.452 +    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.453 +    _M_re = __r;
1412.454 +    _M_im = __i;
1412.455 +    return *this;
1412.456 +  }
1412.457 +
1412.458 +  _Self& operator/= (const _Self& __z) {
1412.459 +    value_type __r;
1412.460 +    value_type __i;
1412.461 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.462 +    _M_re = __r;
1412.463 +    _M_im = __i;
1412.464 +    return *this;
1412.465 +  }
1412.466 +
1412.467 +  // Data members.
1412.468 +  value_type _M_re;
1412.469 +  value_type _M_im;
1412.470 +};
1412.471 +
1412.472 +# ifndef _STLP_NO_LONG_DOUBLE
1412.473 +
1412.474 +_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC complex<long double> {
1412.475 +  typedef long double value_type;
1412.476 +  typedef complex<long double> _Self;
1412.477 +
1412.478 +  // Constructors, destructor, assignment operator.
1412.479 +  complex(value_type __x = 0.0, value_type __y = 0.0)
1412.480 +    : _M_re(__x), _M_im(__y) {}
1412.481 +
1412.482 +  complex(const complex<long double>& __z)
1412.483 +    : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.484 +  inline complex(const complex<float>& __z);
1412.485 +  inline complex(const complex<double>& __z);
1412.486 +
1412.487 +  // Element access.
1412.488 +  value_type real() const { return _M_re; }
1412.489 +  value_type imag() const { return _M_im; }
1412.490 +
1412.491 +  // Arithmetic op= operations involving one real argument.
1412.492 +
1412.493 +  _Self& operator= (value_type __x) {
1412.494 +    _M_re = __x;
1412.495 +    _M_im = 0;
1412.496 +    return *this;
1412.497 +  }
1412.498 +  _Self& operator+= (value_type __x) {
1412.499 +    _M_re += __x;
1412.500 +    return *this;
1412.501 +  }
1412.502 +  _Self& operator-= (value_type __x) {
1412.503 +    _M_re -= __x;
1412.504 +    return *this;
1412.505 +  }
1412.506 +  _Self& operator*= (value_type __x) {
1412.507 +    _M_re *= __x;
1412.508 +    _M_im *= __x;
1412.509 +    return *this;
1412.510 +  }
1412.511 +  _Self& operator/= (value_type __x) {
1412.512 +    _M_re /= __x;
1412.513 +    _M_im /= __x;
1412.514 +    return *this;
1412.515 +  }
1412.516 +
1412.517 +  // Arithmetic op= operations involving two complex arguments.
1412.518 +
1412.519 +  _STLP_DECLSPEC static void _STLP_CALL _div(const long double& __z1_r, const long double& __z1_i,
1412.520 +                              const long double& __z2_r, const long double& __z2_i,
1412.521 +                              long double& __res_r, long double& __res_i);
1412.522 +
1412.523 +  _STLP_DECLSPEC static void _STLP_CALL _div(const long double& __z1_r, 
1412.524 +                              const long double& __z2_r, const long double& __z2_i,
1412.525 +                              long double& __res_r, long double& __res_i);
1412.526 +
1412.527 +#if defined (_STLP_MEMBER_TEMPLATES) && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER)
1412.528 +
1412.529 +  template <class _Tp2>
1412.530 +  complex<long double>& operator=(const complex<_Tp2>& __z) {
1412.531 +    _M_re = __z._M_re;
1412.532 +    _M_im = __z._M_im;
1412.533 +    return *this;
1412.534 +  }
1412.535 +
1412.536 +  template <class _Tp2>
1412.537 +  complex<long double>& operator+= (const complex<_Tp2>& __z) {
1412.538 +    _M_re += __z._M_re;
1412.539 +    _M_im += __z._M_im;
1412.540 +    return *this;
1412.541 +  }
1412.542 +
1412.543 +  template <class _Tp2>
1412.544 +  complex<long double>& operator-= (const complex<_Tp2>& __z) {
1412.545 +    _M_re -= __z._M_re;
1412.546 +    _M_im -= __z._M_im;
1412.547 +    return *this;
1412.548 +  }
1412.549 +
1412.550 +  template <class _Tp2>
1412.551 +  complex<long double>& operator*= (const complex<_Tp2>& __z) {
1412.552 +    long double __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.553 +    long double __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.554 +    _M_re = __r;
1412.555 +    _M_im = __i;
1412.556 +    return *this;
1412.557 +  }
1412.558 +
1412.559 +  template <class _Tp2>
1412.560 +  complex<long double>& operator/= (const complex<_Tp2>& __z) {
1412.561 +    long double __r;
1412.562 +    long double __i;
1412.563 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.564 +    _M_re = __r;
1412.565 +    _M_im = __i;
1412.566 +    return *this;
1412.567 +  }
1412.568 +
1412.569 +#endif /* _STLP_MEMBER_TEMPLATES */
1412.570 +
1412.571 +  _Self& operator=(const _Self& __z) {
1412.572 +    _M_re = __z._M_re;
1412.573 +    _M_im = __z._M_im;
1412.574 +    return *this;
1412.575 +  }
1412.576 +
1412.577 +  _Self& operator+= (const _Self& __z) {
1412.578 +    _M_re += __z._M_re;
1412.579 +    _M_im += __z._M_im;
1412.580 +    return *this;
1412.581 +  }
1412.582 +
1412.583 +  _Self& operator-= (const _Self& __z) {
1412.584 +    _M_re -= __z._M_re;
1412.585 +    _M_im -= __z._M_im;
1412.586 +    return *this;
1412.587 +  }
1412.588 +  
1412.589 +  _Self& operator*= (const _Self& __z) {
1412.590 +    value_type __r = _M_re * __z._M_re - _M_im * __z._M_im;
1412.591 +    value_type __i = _M_re * __z._M_im + _M_im * __z._M_re;
1412.592 +    _M_re = __r;
1412.593 +    _M_im = __i;
1412.594 +    return *this;
1412.595 +  }
1412.596 +
1412.597 +  _Self& operator/= (const _Self& __z) {
1412.598 +    value_type __r;
1412.599 +    value_type __i;
1412.600 +    _div(_M_re, _M_im, __z._M_re, __z._M_im, __r, __i);
1412.601 +    _M_re = __r;
1412.602 +    _M_im = __i;
1412.603 +    return *this;
1412.604 +  }
1412.605 +
1412.606 +  // Data members.
1412.607 +  value_type _M_re;
1412.608 +  value_type _M_im;
1412.609 +};
1412.610 +
1412.611 +# endif /* _STLP_NO_LONG_DOUBLE */
1412.612 +
1412.613 +// Converting constructors from one of these three specialized types
1412.614 +// to another.
1412.615 +
1412.616 +inline complex<float>::complex(const complex<double>& __z)
1412.617 +  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.618 +inline complex<double>::complex(const complex<float>& __z)
1412.619 +  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.620 +# ifndef _STLP_NO_LONG_DOUBLE
1412.621 +inline complex<float>::complex(const complex<long double>& __z)
1412.622 +  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.623 +inline complex<double>::complex(const complex<long double>& __z)
1412.624 +  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.625 +inline complex<long double>::complex(const complex<float>& __z)
1412.626 +  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.627 +inline complex<long double>::complex(const complex<double>& __z)
1412.628 +  : _M_re(__z._M_re), _M_im(__z._M_im) {}
1412.629 +# endif
1412.630 +
1412.631 +# endif /* SPECIALIZATIONS */
1412.632 +
1412.633 +// Unary non-member arithmetic operators.
1412.634 +
1412.635 +template <class _Tp>
1412.636 +inline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z) {
1412.637 +  return __z;
1412.638 +}
1412.639 +
1412.640 +template <class _Tp>
1412.641 +inline complex<_Tp> _STLP_CALL  operator-(const complex<_Tp>& __z) {
1412.642 +  return complex<_Tp>(-__z._M_re, -__z._M_im);
1412.643 +}
1412.644 +
1412.645 +// Non-member arithmetic operations involving one real argument.
1412.646 +
1412.647 +template <class _Tp> 
1412.648 +inline complex<_Tp> _STLP_CALL operator+(const _Tp& __x, const complex<_Tp>& __z) {
1412.649 +  return complex<_Tp>(__x + __z._M_re, __z._M_im);
1412.650 +}
1412.651 +
1412.652 +template <class _Tp> 
1412.653 +inline complex<_Tp> _STLP_CALL operator+(const complex<_Tp>& __z, const _Tp& __x) {
1412.654 +  return complex<_Tp>(__z._M_re + __x, __z._M_im);
1412.655 +}
1412.656 +
1412.657 +template <class _Tp> 
1412.658 +inline complex<_Tp> _STLP_CALL operator-(const _Tp& __x, const complex<_Tp>& __z) {
1412.659 +  return complex<_Tp>(__x - __z._M_re, -__z._M_im);
1412.660 +}
1412.661 +
1412.662 +template <class _Tp> 
1412.663 +inline complex<_Tp> _STLP_CALL operator-(const complex<_Tp>& __z, const _Tp& __x) {
1412.664 +  return complex<_Tp>(__z._M_re - __x, __z._M_im);
1412.665 +}
1412.666 +
1412.667 +template <class _Tp> 
1412.668 +inline complex<_Tp> _STLP_CALL operator*(const _Tp& __x, const complex<_Tp>& __z) {
1412.669 +  return complex<_Tp>(__x * __z._M_re, __x * __z._M_im);
1412.670 +}
1412.671 +
1412.672 +template <class _Tp> 
1412.673 +inline complex<_Tp> _STLP_CALL operator*(const complex<_Tp>& __z, const _Tp& __x) {
1412.674 +  return complex<_Tp>(__z._M_re * __x, __z._M_im * __x);
1412.675 +}
1412.676 +
1412.677 +template <class _Tp> 
1412.678 +inline complex<_Tp> _STLP_CALL operator/(const _Tp& __x, const complex<_Tp>& __z) {
1412.679 +  complex<_Tp> __result;
1412.680 +  complex<_Tp>::_div(__x,
1412.681 +                     __z._M_re, __z._M_im,
1412.682 +                     __result._M_re, __result._M_im);
1412.683 +  return __result;
1412.684 +}
1412.685 +
1412.686 +template <class _Tp> 
1412.687 +inline complex<_Tp> _STLP_CALL operator/(const complex<_Tp>& __z, const _Tp& __x) {
1412.688 +  return complex<_Tp>(__z._M_re / __x, __z._M_im / __x);
1412.689 +}
1412.690 +
1412.691 +// Non-member arithmetic operations involving two complex arguments
1412.692 +
1412.693 +template <class _Tp> 
1412.694 +inline complex<_Tp> _STLP_CALL 
1412.695 +operator+(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1412.696 +  return complex<_Tp>(__z1._M_re + __z2._M_re, __z1._M_im + __z2._M_im);
1412.697 +}
1412.698 +
1412.699 +template <class _Tp> 
1412.700 +inline complex<_Tp> _STLP_CALL 
1412.701 +operator-(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1412.702 +  return complex<_Tp>(__z1._M_re - __z2._M_re, __z1._M_im - __z2._M_im);
1412.703 +}
1412.704 +
1412.705 +template <class _Tp> 
1412.706 +inline complex<_Tp> _STLP_CALL 
1412.707 +operator*(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1412.708 +  return complex<_Tp>(__z1._M_re * __z2._M_re - __z1._M_im * __z2._M_im,
1412.709 +                      __z1._M_re * __z2._M_im + __z1._M_im * __z2._M_re);
1412.710 +}
1412.711 +
1412.712 +template <class _Tp> 
1412.713 +inline complex<_Tp> _STLP_CALL 
1412.714 +operator/(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1412.715 +  complex<_Tp> __result;
1412.716 +  complex<_Tp>::_div(__z1._M_re, __z1._M_im,
1412.717 +                     __z2._M_re, __z2._M_im,
1412.718 +                     __result._M_re, __result._M_im);
1412.719 +  return __result;
1412.720 +}
1412.721 +
1412.722 +// Comparison operators.
1412.723 +
1412.724 +template <class _Tp> 
1412.725 +inline bool _STLP_CALL operator==(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1412.726 +  return __z1._M_re == __z2._M_re && __z1._M_im == __z2._M_im;
1412.727 +}
1412.728 +
1412.729 +template <class _Tp> 
1412.730 +inline bool _STLP_CALL operator==(const complex<_Tp>& __z, const _Tp& __x) {
1412.731 +  return __z._M_re == __x && __z._M_im == 0;
1412.732 +}
1412.733 +
1412.734 +template <class _Tp> 
1412.735 +inline bool _STLP_CALL operator==(const _Tp& __x, const complex<_Tp>& __z) {
1412.736 +  return __x == __z._M_re && 0 == __z._M_im;
1412.737 +}
1412.738 +
1412.739 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1412.740 +
1412.741 +template <class _Tp> 
1412.742 +inline bool _STLP_CALL operator!=(const complex<_Tp>& __z1, const complex<_Tp>& __z2) {
1412.743 +  return __z1._M_re != __z2._M_re || __z1._M_im != __z2._M_im;
1412.744 +}
1412.745 +
1412.746 +#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1412.747 +
1412.748 +template <class _Tp> 
1412.749 +inline bool _STLP_CALL operator!=(const complex<_Tp>& __z, const _Tp& __x) {
1412.750 +  return __z._M_re != __x || __z._M_im != 0;
1412.751 +}
1412.752 +
1412.753 +template <class _Tp> 
1412.754 +inline bool _STLP_CALL operator!=(const _Tp& __x, const complex<_Tp>& __z) {
1412.755 +  return __x != __z._M_re || 0 != __z._M_im;
1412.756 +}
1412.757 +
1412.758 +// Other basic arithmetic operations
1412.759 +
1412.760 +template <class _Tp> 
1412.761 +inline _Tp _STLP_CALL real(const complex<_Tp>& __z) {
1412.762 +  return __z._M_re;
1412.763 +}
1412.764 +
1412.765 +template <class _Tp> 
1412.766 +inline _Tp _STLP_CALL imag(const complex<_Tp>& __z) {
1412.767 +  return __z._M_im;
1412.768 +}
1412.769 +
1412.770 +#ifdef __SYMBIAN32__
1412.771 +template <class _Tp>
1412.772 +#ifdef __WINSCW__
1412.773 +_STLP_DECLSPEC 
1412.774 +#endif
1412.775 +_Tp  _STLP_CALL abs_tp(const complex<_Tp>&);
1412.776 +
1412.777 +template <class _Tp>
1412.778 +#ifdef __WINSCW__
1412.779 +_STLP_DECLSPEC 
1412.780 +#endif
1412.781 +_Tp  _STLP_CALL arg_tp(const complex<_Tp>&);
1412.782 +
1412.783 +template <class _Tp>
1412.784 +#ifdef __WINSCW__
1412.785 +_STLP_DECLSPEC 
1412.786 +#endif
1412.787 +complex<_Tp> _STLP_CALL polar_tp(const _Tp& __rho, const _Tp& __phi);
1412.788 +
1412.789 +template <class _Tp>
1412.790 +_Tp _STLP_CALL abs(const complex<_Tp>& __z)
1412.791 + {
1412.792 + return abs_tp(__z);
1412.793 + }
1412.794 +
1412.795 +template <class _Tp>
1412.796 +_Tp _STLP_CALL arg(const complex<_Tp>& __z)
1412.797 + {
1412.798 + return arg_tp(__z);
1412.799 + }
1412.800 +
1412.801 +template <class _Tp>
1412.802 +complex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi) {
1412.803 + return polar_tp(__rho, __phi);
1412.804 +}
1412.805 +
1412.806 +#else
1412.807 +template <class _Tp>
1412.808 +_Tp _STLP_CALL abs(const complex<_Tp>& __z) {
1412.809 +  return _Tp(abs(complex<double>(double(__z.real()), double(__z.imag()))));
1412.810 +}
1412.811 +
1412.812 +template <class _Tp>
1412.813 +_Tp _STLP_CALL arg(const complex<_Tp>& __z) {
1412.814 +  return _Tp(arg(complex<double>(double(__z.real()), double(__z.imag()))));
1412.815 +}
1412.816 +
1412.817 +#endif
1412.818 +
1412.819 +
1412.820 +template <class _Tp>
1412.821 +inline _Tp _STLP_CALL norm(const complex<_Tp>& __z) {
1412.822 +  return __z._M_re * __z._M_re + __z._M_im * __z._M_im;
1412.823 +}
1412.824 +
1412.825 +template <class _Tp>
1412.826 +inline complex<_Tp> _STLP_CALL conj(const complex<_Tp>& __z) {
1412.827 +  return complex<_Tp>(__z._M_re, -__z._M_im);
1412.828 +}
1412.829 +
1412.830 +template <class _Tp>
1412.831 +complex<_Tp> _STLP_CALL polar(const _Tp& __rho) {
1412.832 +  return complex<_Tp>(__rho, 0);
1412.833 +}
1412.834 +
1412.835 +#ifndef __SYMBIAN32__
1412.836 +template <class _Tp>
1412.837 +complex<_Tp> _STLP_CALL polar(const _Tp& __rho, const _Tp& __phi) {
1412.838 +  complex<double> __tmp = polar(double(__rho), double(__phi));
1412.839 +  return complex<_Tp>(_Tp(__tmp.real()), _Tp(__tmp.imag()));
1412.840 +}
1412.841 +
1412.842 +
1412.843 +_STLP_TEMPLATE_NULL
1412.844 +_STLP_DECLSPEC float  _STLP_CALL abs(const complex<float>&);
1412.845 +#ifndef _STLP_COMPLEX_SPECIALIZATION_BUG
1412.846 +_STLP_TEMPLATE_NULL
1412.847 +_STLP_DECLSPEC double  _STLP_CALL abs(const complex<double>&);
1412.848 +_STLP_TEMPLATE_NULL
1412.849 +_STLP_DECLSPEC double  _STLP_CALL arg(const complex<double>&);
1412.850 +_STLP_TEMPLATE_NULL
1412.851 +_STLP_DECLSPEC complex<double> _STLP_CALL polar(const double& __rho, const double& __phi);
1412.852 +#endif
1412.853 +_STLP_TEMPLATE_NULL
1412.854 +_STLP_DECLSPEC float  _STLP_CALL arg(const complex<float>&);
1412.855 +_STLP_TEMPLATE_NULL
1412.856 +_STLP_DECLSPEC complex<float> _STLP_CALL polar(const float& __rho, const float& __phi);
1412.857 +
1412.858 +
1412.859 +# ifndef _STLP_NO_LONG_DOUBLE
1412.860 +_STLP_TEMPLATE_NULL
1412.861 +_STLP_DECLSPEC long double  _STLP_CALL arg(const complex<long double>&);
1412.862 +_STLP_TEMPLATE_NULL
1412.863 +_STLP_DECLSPEC long double  _STLP_CALL abs(const complex<long double>&);
1412.864 +_STLP_TEMPLATE_NULL
1412.865 +_STLP_DECLSPEC complex<long double> _STLP_CALL polar(const long double&, const long double&);
1412.866 +# endif
1412.867 +#endif
1412.868 +
1412.869 +
1412.870 +#ifdef _STLP_USE_NEW_IOSTREAMS
1412.871 +
1412.872 +// Complex output, in the form (re,im).  We use a two-step process 
1412.873 +// involving stringstream so that we get the padding right.  
1412.874 +template <class _Tp, class _CharT, class _Traits>
1412.875 +basic_ostream<_CharT, _Traits>&  _STLP_CALL 
1412.876 +operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __z);
1412.877 +
1412.878 +template <class _Tp, class _CharT, class _Traits>
1412.879 +basic_istream<_CharT, _Traits>& _STLP_CALL 
1412.880 +operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __z);
1412.881 +
1412.882 +// Specializations for narrow characters; lets us avoid widen.
1412.883 +
1412.884 +_STLP_OPERATOR_TEMPLATE
1412.885 +_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 
1412.886 +operator>>(basic_istream<char, char_traits<char> >& __is, complex<float>& __z);
1412.887 +
1412.888 +_STLP_OPERATOR_TEMPLATE
1412.889 +_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 
1412.890 +operator>>(basic_istream<char, char_traits<char> >& __is, complex<double>& __z);
1412.891 +
1412.892 +
1412.893 +_STLP_OPERATOR_TEMPLATE
1412.894 +_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 
1412.895 +operator<<(basic_ostream<char, char_traits<char> >& __is, const complex<float>& __z);
1412.896 +
1412.897 +_STLP_OPERATOR_TEMPLATE
1412.898 +_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 
1412.899 +operator<<(basic_ostream<char, char_traits<char> >& __is, const complex<double>& __z);
1412.900 +
1412.901 +#  if ! defined (_STLP_NO_LONG_DOUBLE)
1412.902 +_STLP_OPERATOR_TEMPLATE
1412.903 +_STLP_DECLSPEC basic_istream<char, char_traits<char> >& _STLP_CALL 
1412.904 +operator>>(basic_istream<char, char_traits<char> >& __is, complex<long double>& __z);
1412.905 +
1412.906 +_STLP_OPERATOR_TEMPLATE
1412.907 +_STLP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL 
1412.908 +operator<<(basic_ostream<char, char_traits<char> >& __is, const complex<long double>& __z);
1412.909 +
1412.910 +# endif
1412.911 +
1412.912 +# if defined (_STLP_USE_TEMPLATE_EXPORT) && ! defined (_STLP_NO_WCHAR_T)
1412.913 +
1412.914 +_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator>>(
1412.915 +        basic_istream<wchar_t, char_traits<wchar_t> >&, complex<double>&);
1412.916 +_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator<<(
1412.917 +        basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<double>&);
1412.918 +_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator>>(
1412.919 +        basic_istream<wchar_t, char_traits<wchar_t> >&, complex<float>&);
1412.920 +_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator<<(
1412.921 +        basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<float>&);
1412.922 +
1412.923 +#  ifndef _STLP_NO_LONG_DOUBLE
1412.924 +_STLP_EXPORT_TEMPLATE basic_istream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator>>(
1412.925 +        basic_istream<wchar_t, char_traits<wchar_t> >&, complex<long double>&);
1412.926 +_STLP_EXPORT_TEMPLATE basic_ostream<wchar_t, char_traits<wchar_t> >& _STLP_CALL operator<<(
1412.927 +        basic_ostream<wchar_t, char_traits<wchar_t> >&, const complex<long double>&);
1412.928 +#  endif
1412.929 +
1412.930 +# endif /* USE_TEMPLATE_EXPORT */
1412.931 +
1412.932 +#else /* _STLP_USE_NEW_IOSTREAMS */
1412.933 +
1412.934 +template <class _Tp>
1412.935 +ostream& _STLP_CALL operator<<(ostream& s, const complex<_Tp>& __z);
1412.936 +
1412.937 +template <class _Tp>
1412.938 +istream& _STLP_CALL  operator>>(istream& s, complex<_Tp>& a);
1412.939 +
1412.940 +#endif /* _STLP_USE_NEW_IOSTREAMS */
1412.941 +
1412.942 +
1412.943 +// Transcendental functions.  These are defined only for float, 
1412.944 +//  double, and long double.  (Sqrt isn't transcendental, of course,
1412.945 +//  but it's included in this section anyway.)
1412.946 +
1412.947 +_STLP_DECLSPEC complex<float> _STLP_CALL sqrt(const complex<float>&);
1412.948 +
1412.949 +_STLP_DECLSPEC complex<float> _STLP_CALL exp(const complex<float>&);
1412.950 +_STLP_DECLSPEC complex<float> _STLP_CALL  log(const complex<float>&);
1412.951 +_STLP_DECLSPEC complex<float> _STLP_CALL log10(const complex<float>&);
1412.952 +
1412.953 +_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, int);
1412.954 +_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, const float&);
1412.955 +_STLP_DECLSPEC complex<float> _STLP_CALL pow(const float&, const complex<float>&);
1412.956 +_STLP_DECLSPEC complex<float> _STLP_CALL pow(const complex<float>&, const complex<float>&);
1412.957 +
1412.958 +_STLP_DECLSPEC complex<float> _STLP_CALL sin(const complex<float>&);
1412.959 +_STLP_DECLSPEC complex<float> _STLP_CALL cos(const complex<float>&);
1412.960 +_STLP_DECLSPEC complex<float> _STLP_CALL tan(const complex<float>&);
1412.961 +
1412.962 +_STLP_DECLSPEC complex<float> _STLP_CALL sinh(const complex<float>&);
1412.963 +_STLP_DECLSPEC complex<float> _STLP_CALL cosh(const complex<float>&);
1412.964 +_STLP_DECLSPEC complex<float> _STLP_CALL tanh(const complex<float>&);
1412.965 +
1412.966 +_STLP_DECLSPEC complex<double> _STLP_CALL sqrt(const complex<double>&);
1412.967 +
1412.968 +_STLP_DECLSPEC complex<double> _STLP_CALL exp(const complex<double>&);
1412.969 +_STLP_DECLSPEC complex<double> _STLP_CALL log(const complex<double>&);
1412.970 +_STLP_DECLSPEC complex<double> _STLP_CALL log10(const complex<double>&);
1412.971 +
1412.972 +_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, int);
1412.973 +_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, const double&);
1412.974 +_STLP_DECLSPEC complex<double> _STLP_CALL pow(const double&, const complex<double>&);
1412.975 +_STLP_DECLSPEC complex<double> _STLP_CALL pow(const complex<double>&, const complex<double>&);
1412.976 +
1412.977 +_STLP_DECLSPEC complex<double> _STLP_CALL sin(const complex<double>&);
1412.978 +_STLP_DECLSPEC complex<double> _STLP_CALL cos(const complex<double>&);
1412.979 +_STLP_DECLSPEC complex<double> _STLP_CALL tan(const complex<double>&);
1412.980 +
1412.981 +_STLP_DECLSPEC complex<double> _STLP_CALL sinh(const complex<double>&);
1412.982 +_STLP_DECLSPEC complex<double> _STLP_CALL cosh(const complex<double>&);
1412.983 +_STLP_DECLSPEC complex<double> _STLP_CALL tanh(const complex<double>&);
1412.984 +
1412.985 +# ifndef _STLP_NO_LONG_DOUBLE
1412.986 +_STLP_DECLSPEC complex<long double> _STLP_CALL sqrt(const complex<long double>&);
1412.987 +_STLP_DECLSPEC complex<long double> _STLP_CALL exp(const complex<long double>&);
1412.988 +_STLP_DECLSPEC complex<long double> _STLP_CALL log(const complex<long double>&);
1412.989 +_STLP_DECLSPEC complex<long double> _STLP_CALL log10(const complex<long double>&);
1412.990 +
1412.991 +_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, int);
1412.992 +_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&, const long double&);
1412.993 +_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const long double&, const complex<long double>&);
1412.994 +_STLP_DECLSPEC complex<long double> _STLP_CALL pow(const complex<long double>&,
1412.995 +                                                   const complex<long double>&);
1412.996 +
1412.997 +_STLP_DECLSPEC complex<long double> _STLP_CALL sin(const complex<long double>&);
1412.998 +_STLP_DECLSPEC complex<long double> _STLP_CALL cos(const complex<long double>&);
1412.999 +_STLP_DECLSPEC complex<long double> _STLP_CALL tan(const complex<long double>&);
1412.1000 +
1412.1001 +_STLP_DECLSPEC complex<long double> _STLP_CALL sinh(const complex<long double>&);
1412.1002 +_STLP_DECLSPEC complex<long double> _STLP_CALL cosh(const complex<long double>&);
1412.1003 +_STLP_DECLSPEC complex<long double> _STLP_CALL tanh(const complex<long double>&);
1412.1004 +# endif
1412.1005 +
1412.1006 +_STLP_END_NAMESPACE
1412.1007 +
1412.1008 +# ifndef _STLP_LINK_TIME_INSTANTIATION
1412.1009 +#  include <stl/_complex.c>
1412.1010 +# endif
1412.1011 +
1412.1012 +#endif /* _STLP_template_complex */
1412.1013 +
1412.1014 +// Local Variables:
1412.1015 +// mode:C++
1412.1016 +// End:
  1413.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1413.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_config_compat_post.h	Wed Mar 31 12:27:01 2010 +0100
  1413.3 @@ -0,0 +1,35 @@
  1413.4 +//==========================================
  1413.5 +
  1413.6 +# define __SGI_STL_PORT  _STLPORT_VERSION
  1413.7 +
  1413.8 +# if defined (_STLP_DEBUG) && ! defined ( __STL_DEBUG )
  1413.9 +#  define __STL_DEBUG _STLP_DEBUG
 1413.10 +# endif
 1413.11 +
 1413.12 +# if defined (_STLP_USE_NAMESPACES)
 1413.13 +#  undef  __STL_USE_NAMESPACES 
 1413.14 +#  define __STL_USE_NAMESPACES _STLP_USE_NAMESPACES
 1413.15 +# endif
 1413.16 +
 1413.17 +# if defined (_STLP_USE_EXCEPTIONS)
 1413.18 +#  undef  __STL_USE_EXCEPTIONS 
 1413.19 +#  define __STL_USE_EXCEPTIONS _STLP_USE_EXCEPTIONS
 1413.20 +# endif
 1413.21 +
 1413.22 +# if defined (_STLP_USE_NEW_IOSTREAMS) && ! defined ( __STL_USE_NEW_IOSTREAMS )
 1413.23 +#  define __STL_USE_NEW_IOSTREAMS _STLP_USE_NEW_IOSTREAMS
 1413.24 +# endif
 1413.25 +
 1413.26 +# if defined (_STLP_BEGIN_NAMESPACE) && ! defined ( __STL_BEGIN_NAMESPACE )
 1413.27 +#  define __STL_BEGIN_NAMESPACE _STLP_BEGIN_NAMESPACE
 1413.28 +#  define __STL_END_NAMESPACE _STLP_END_NAMESPACE
 1413.29 +#  define __STL_VENDOR_STD _STLP_VENDOR_STD
 1413.30 +#  define __STL_VENDOR_CSTD _STLP_VENDOR_CSTD
 1413.31 +# endif
 1413.32 +
 1413.33 +/*
 1413.34 +# if defined (_STLP_XXX) && ! defined ( __STL_XXX )
 1413.35 +#  define __STL_XXX _STLP_XXX
 1413.36 +# endif
 1413.37 +*/
 1413.38 +
  1414.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1414.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_construct.h	Wed Mar 31 12:27:01 2010 +0100
  1414.3 @@ -0,0 +1,252 @@
  1414.4 +/*
  1414.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1414.6 + * Copyright (c) 1994
  1414.7 + * Hewlett-Packard Company
  1414.8 + *
  1414.9 + * Copyright (c) 1996,1997
 1414.10 + * Silicon Graphics Computer Systems, Inc.
 1414.11 + *
 1414.12 + * Copyright (c) 1997
 1414.13 + * Moscow Center for SPARC Technology
 1414.14 + *
 1414.15 + * Copyright (c) 1999 
 1414.16 + * Boris Fomitchev
 1414.17 + *
 1414.18 + * This material is provided "as is", with absolutely no warranty expressed
 1414.19 + * or implied. Any use is at your own risk.
 1414.20 + *
 1414.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1414.22 + * without fee, provided the above notices are retained on all copies.
 1414.23 + * Permission to modify the code and to distribute modified code is granted,
 1414.24 + * provided the above notices are retained, and a notice that the code was
 1414.25 + * modified is included with the above copyright notice.
 1414.26 + *
 1414.27 + */
 1414.28 +
 1414.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1414.30 + *   You should not attempt to use it directly.
 1414.31 + */
 1414.32 +
 1414.33 +#ifndef _STLP_INTERNAL_CONSTRUCT_H
 1414.34 +#define _STLP_INTERNAL_CONSTRUCT_H
 1414.35 +
 1414.36 +#ifdef _STLP_USE_TRAP_LEAVE
 1414.37 +#include <e32base.h>
 1414.38 +#endif // _STLP_USE_TRAP_LEAVE
 1414.39 +
 1414.40 +# if defined (_STLP_DEBUG_UNINITIALIZED) && ! defined (_STLP_CSTRING)
 1414.41 +# include <cstring>
 1414.42 +# endif
 1414.43 +
 1414.44 +# ifndef _STLP_INTERNAL_NEW_HEADER
 1414.45 +#  include <stl/_new.h>
 1414.46 +# endif
 1414.47 +
 1414.48 +
 1414.49 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1414.50 +# include <stl/_iterator_base.h>
 1414.51 +#endif
 1414.52 +
 1414.53 +_STLP_BEGIN_NAMESPACE
 1414.54 +
 1414.55 +# ifdef _STLP_TRIVIAL_DESTRUCTOR_BUG
 1414.56 +template <class _Tp>
 1414.57 +inline void __destroy_aux(_Tp* __pointer, const __false_type&) { __pointer->~_Tp(); }
 1414.58 +template <class _Tp>
 1414.59 +inline void __destroy_aux(_Tp* __pointer, const __true_type&) {}
 1414.60 +# endif
 1414.61 +
 1414.62 +template <class _Tp>
 1414.63 +inline void _Destroy(_Tp* __pointer) {
 1414.64 +# if _MSC_VER >= 1010
 1414.65 +  __pointer;
 1414.66 +# endif	// _MSC_VER >= 1000
 1414.67 +# ifdef _STLP_TRIVIAL_DESTRUCTOR_BUG
 1414.68 +  typedef typename __type_traits<_Tp>::has_trivial_destructor _Trivial_destructor;
 1414.69 +  __destroy_aux(__pointer, _Trivial_destructor());
 1414.70 +# else
 1414.71 +#  if ( defined (__BORLANDC__) && ( __BORLANDC__ < 0x500 ) )
 1414.72 +    __pointer->_Tp::~_Tp();
 1414.73 +#  else
 1414.74 +    __pointer->~_Tp();
 1414.75 +#  endif
 1414.76 +# endif
 1414.77 +# ifdef _STLP_DEBUG_UNINITIALIZED
 1414.78 +	memset((char*)__pointer, _STLP_SHRED_BYTE, sizeof(_Tp));
 1414.79 +# endif
 1414.80 +}
 1414.81 +
 1414.82 +# if defined (new)
 1414.83 +#   define _STLP_NEW_REDEFINE new
 1414.84 +#   undef new
 1414.85 +# endif 
 1414.86 +
 1414.87 +# ifdef _STLP_DEFAULT_CONSTRUCTOR_BUG
 1414.88 +template <class _T1>
 1414.89 +inline void _Construct_aux (_T1* __p, const __false_type&) {
 1414.90 +_STLP_PLACEMENT_NEW (__p) _T1();
 1414.91 +}
 1414.92 +
 1414.93 +template <class _T1>
 1414.94 +inline void _Construct_aux (_T1* __p, const __true_type&) {
 1414.95 +_STLP_PLACEMENT_NEW (__p) _T1(0);
 1414.96 +}
 1414.97 +# endif
 1414.98 +
 1414.99 +template <class _T1, class _T2>
1414.100 +inline void _Construct(_T1* __p, const _T2& __val) {
1414.101 +# ifdef _STLP_DEBUG_UNINITIALIZED
1414.102 +	memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1));
1414.103 +# endif
1414.104 +    _STLP_PLACEMENT_NEW (__p) _T1(__val);
1414.105 +}
1414.106 +
1414.107 +template <class _T1>
1414.108 +inline void _Construct(_T1* __p) {
1414.109 +# ifdef _STLP_DEBUG_UNINITIALIZED
1414.110 +  memset((char*)__p, _STLP_SHRED_BYTE, sizeof(_T1));
1414.111 +# endif
1414.112 +# ifdef _STLP_DEFAULT_CONSTRUCTOR_BUG
1414.113 +typedef typename _Is_integer<_T1>::_Integral _Is_Integral;
1414.114 +_Construct_aux (__p, _Is_Integral() );
1414.115 +# else
1414.116 +  _STLP_PLACEMENT_NEW (__p) _T1();
1414.117 +# endif
1414.118 +}
1414.119 +
1414.120 +# if defined(_STLP_NEW_REDEFINE)
1414.121 +# ifdef DEBUG_NEW
1414.122 +#  define new DEBUG_NEW
1414.123 +# endif
1414.124 +#  undef _STLP_NEW_REDEFINE
1414.125 +# endif 
1414.126 +
1414.127 +template <class _ForwardIterator>
1414.128 +_STLP_INLINE_LOOP void
1414.129 +__destroy_aux(_ForwardIterator __first, _ForwardIterator __last, const __false_type&) {
1414.130 +  for ( ; __first != __last; ++__first)
1414.131 +    _STLP_STD::_Destroy(&*__first);
1414.132 +}
1414.133 +
1414.134 +template <class _ForwardIterator> 
1414.135 +inline void __destroy_aux(_ForwardIterator, _ForwardIterator, const __true_type&) {}
1414.136 +
1414.137 +template <class _ForwardIterator, class _Tp>
1414.138 +inline void 
1414.139 +__destroy(_ForwardIterator __first, _ForwardIterator __last, _Tp*) {
1414.140 +  typedef typename __type_traits<_Tp>::has_trivial_destructor _Trivial_destructor;
1414.141 +  __destroy_aux(__first, __last, _Trivial_destructor());
1414.142 +}
1414.143 +
1414.144 +template <class _ForwardIterator>
1414.145 +inline void _Destroy(_ForwardIterator __first, _ForwardIterator __last) {
1414.146 +  __destroy(__first, __last, _STLP_VALUE_TYPE(__first, _ForwardIterator));
1414.147 +}
1414.148 +
1414.149 +inline void _Destroy(char*, char*) {}
1414.150 +# ifdef _STLP_HAS_WCHAR_T // dwa 8/15/97
1414.151 +inline void _Destroy(wchar_t*, wchar_t*) {}
1414.152 +inline void _Destroy(const wchar_t*, const wchar_t*) {}
1414.153 +# endif
1414.154 +
1414.155 +# ifndef _STLP_NO_ANACHRONISMS
1414.156 +// --------------------------------------------------
1414.157 +// Old names from the HP STL.
1414.158 +
1414.159 +template <class _T1, class _T2>
1414.160 +inline void construct(_T1* __p, const _T2& __val) {_Construct(__p, __val); }
1414.161 +template <class _T1>
1414.162 +inline void construct(_T1* __p) { _Construct(__p); }
1414.163 +template <class _Tp>
1414.164 +inline void destroy(_Tp* __pointer) {  _STLP_STD::_Destroy(__pointer); }
1414.165 +template <class _ForwardIterator>
1414.166 +inline void destroy(_ForwardIterator __first, _ForwardIterator __last) { _STLP_STD::_Destroy(__first, __last); }
1414.167 +# endif
1414.168 +
1414.169 +#ifdef _STLP_USE_TRAP_LEAVE
1414.170 +
1414.171 +struct TCleanupOverlay
1414.172 +{
1414.173 +    TAny *vtable;
1414.174 +    TAny *iBase;
1414.175 +    TAny *iTop;
1414.176 +    TAny *iNext;
1414.177 +};
1414.178 +
1414.179 +template <class _Tp>
1414.180 +struct _STLP_StackHelper {
1414.181 +  static unsigned int Check( void *ptr );
1414.182 +  static void* _NewLC (size_t __n);
1414.183 +};
1414.184 +
1414.185 +struct _STLP_StackPopper {
1414.186 +  ~_STLP_StackPopper() { CleanupStack::Pop(); }
1414.187 +};
1414.188 +
1414.189 +template <class _Tp>
1414.190 +struct _STLP_Cleanup {
1414.191 +  static void clear(TAny* __p);
1414.192 +};
1414.193 +
1414.194 +# define _STLP_PUSH_CLEANUP_ITEM(_Tp, __p)  CleanupStack::PushL(TCleanupItem(&_STLP_Cleanup< _Tp >::clear, (TAny*)__p));
1414.195 +# define _STLP_PUSH_STACK_ITEM(_Tp, __p)  _STLP_PUSH_CLEANUP_ITEM(_Tp, __p)   _STLP_StackPopper __Popper; _STLP_no_unused_variable_warning( __Popper );
1414.196 +# define _STLP_POP_IF_CHECK if (_STLP_StackHelper<bool>::Check(this)) CleanupStack::Pop();
1414.197 +# define _STLP_POP_CLEANUP_ITEM CleanupStack::Pop(); _STLP_POP_IF_CHECK
1414.198 +
1414.199 +# define _STLP_POP_ITEM CleanupStack::Pop();
1414.200 +
1414.201 +// to be used in complex object constructors
1414.202 +template <class _Tp>
1414.203 +struct _STLP_StackPusher {
1414.204 +  _STLP_StackPusher(_Tp * __p) { _STLP_PUSH_CLEANUP_ITEM(_Tp, (void*)__p) }
1414.205 +};
1414.206 +
1414.207 +template <class _Tp>
1414.208 +unsigned int _STLP_StackHelper<_Tp>::Check( void *ptr )
1414.209 +
1414.210 +{
1414.211 +    TCleanupTrapHandler *handler =
1414.212 +        (TCleanupTrapHandler *)User::TrapHandler();
1414.213 +
1414.214 +    CCleanup &cleanup = handler->Cleanup();
1414.215 +
1414.216 +    TCleanupOverlay *overlay = (TCleanupOverlay *)( &cleanup );
1414.217 +
1414.218 +    char *raw = (char *)(overlay->iNext) - 4;
1414.219 +    void *topptr = *( (void **)(raw) );
1414.220 +
1414.221 +    return ( ptr == topptr );
1414.222 +} 
1414.223 +
1414.224 +
1414.225 +template <class _Tp>
1414.226 +void* _STLP_StackHelper<_Tp>::_NewLC(size_t __n) { 
1414.227 +  void* __p = ::operator new (__n, ELeave) ; 
1414.228 +  // constructor will pop it back
1414.229 +  CleanupStack::PushL(__p); 
1414.230 +  return __p;
1414.231 +}
1414.232 +
1414.233 +template <class _Tp>
1414.234 +void _STLP_Cleanup<_Tp>::clear(TAny* __p)
1414.235 +{
1414.236 +  ((_Tp*)__p)->~_Tp();
1414.237 +}
1414.238 +
1414.239 +
1414.240 +#else
1414.241 +# define _STLP_PUSH_CLEANUP_ITEM(_Tp, __p)
1414.242 +# define _STLP_POP_CLEANUP_ITEM
1414.243 +# define _STLP_PUSH_STACK_ITEM(_Tp, p)
1414.244 +# define _STLP_POP_ITEM
1414.245 +# define _STLP_POP_IF_CHECK
1414.246 +# define TPush TLeave
1414.247 +#endif
1414.248 +
1414.249 +_STLP_END_NAMESPACE
1414.250 +
1414.251 +#endif /* _STLP_INTERNAL_CONSTRUCT_H */
1414.252 +
1414.253 +// Local Variables:
1414.254 +// mode:C++
1414.255 +// End:
  1415.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1415.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_csetjmp.h	Wed Mar 31 12:27:01 2010 +0100
  1415.3 @@ -0,0 +1,65 @@
  1415.4 +/*
  1415.5 + * Copyright (c) 1999
  1415.6 + * Boris Fomitchev
  1415.7 + *
  1415.8 + * This material is provided "as is", with absolutely no warranty expressed
  1415.9 + * or implied. Any use is at your own risk.
 1415.10 + *
 1415.11 + * Permission to use or copy this software for any purpose is hereby granted
 1415.12 + * without fee, provided the above notices are retained on all copies.
 1415.13 + * Permission to modify the code and to distribute modified code is granted,
 1415.14 + * provided the above notices are retained, and a notice that the code was
 1415.15 + * modified is included with the above copyright notice.
 1415.16 + *
 1415.17 + */
 1415.18 +
 1415.19 +#ifndef _STLP_INTERNAL_CSETJMP
 1415.20 +#define _STLP_INTERNAL_CSETJMP
 1415.21 +
 1415.22 +// if the macro is on, the header is already there
 1415.23 +#if !defined (setjmp)
 1415.24 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1415.25 +#    include _STLP_NATIVE_CPP_C_HEADER(csetjmp)
 1415.26 +#  else
 1415.27 +#    define _STLP_NATIVE_SETJMP_H_INCLUDED
 1415.28 +#    include _STLP_NATIVE_C_HEADER(setjmp.h)
 1415.29 +#  endif
 1415.30 +#endif
 1415.31 +
 1415.32 +#if defined (_STLP_IMPORT_VENDOR_CSTD)
 1415.33 +
 1415.34 +#  if defined (__BORLANDC__) && defined (_STLP_USE_NEW_C_HEADERS)
 1415.35 +/* For Borland, even if stdjmp.h is included symbols won't be in global namespace
 1415.36 + * so we need to reach them in vendor namespace:
 1415.37 + */
 1415.38 +#    undef _STLP_NATIVE_SETJMP_H_INCLUDED
 1415.39 +#  endif
 1415.40 +
 1415.41 +_STLP_BEGIN_NAMESPACE
 1415.42 +#  if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED)
 1415.43 +using _STLP_VENDOR_CSTD::jmp_buf;
 1415.44 +#  else
 1415.45 +// if setjmp.h was included first, this is in global namespace, not in
 1415.46 +// vendor's std.  - 2005-08-04, ptr
 1415.47 +using ::jmp_buf;
 1415.48 +#  endif
 1415.49 +#  if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1415.50 +#    if !defined (setjmp)
 1415.51 +#      if !defined (__MSL__) || ((__MSL__ > 0x7001) && (__MSL__ < 0x8000))
 1415.52 +#        ifndef _STLP_NATIVE_SETJMP_H_INCLUDED
 1415.53 +using _STLP_VENDOR_CSTD::setjmp;
 1415.54 +#        else
 1415.55 +using ::setjmp;
 1415.56 +#        endif
 1415.57 +#      endif
 1415.58 +#    endif
 1415.59 +#    if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED)
 1415.60 +using _STLP_VENDOR_CSTD::longjmp;
 1415.61 +#    else
 1415.62 +using ::longjmp;
 1415.63 +#    endif
 1415.64 +#  endif
 1415.65 +_STLP_END_NAMESPACE
 1415.66 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1415.67 +
 1415.68 +#endif
  1416.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1416.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_csignal.h	Wed Mar 31 12:27:01 2010 +0100
  1416.3 @@ -0,0 +1,37 @@
  1416.4 +/*
  1416.5 + * Copyright (c) 1999
  1416.6 + * Boris Fomitchev
  1416.7 + *
  1416.8 + * This material is provided "as is", with absolutely no warranty expressed
  1416.9 + * or implied. Any use is at your own risk.
 1416.10 + *
 1416.11 + * Permission to use or copy this software for any purpose is hereby granted
 1416.12 + * without fee, provided the above notices are retained on all copies.
 1416.13 + * Permission to modify the code and to distribute modified code is granted,
 1416.14 + * provided the above notices are retained, and a notice that the code was
 1416.15 + * modified is included with the above copyright notice.
 1416.16 + *
 1416.17 + */
 1416.18 +
 1416.19 +#ifndef _STLP_INTERNAL_CSIGNAL
 1416.20 +#define _STLP_INTERNAL_CSIGNAL
 1416.21 +
 1416.22 +#if !defined (_STLP_WCE)
 1416.23 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1416.24 +#    include _STLP_NATIVE_CPP_C_HEADER(csignal)
 1416.25 +#  else
 1416.26 +#    include _STLP_NATIVE_C_HEADER(signal.h)
 1416.27 +#  endif
 1416.28 +
 1416.29 +#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1416.30 +_STLP_BEGIN_NAMESPACE
 1416.31 +#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1416.32 +using _STLP_VENDOR_CSTD::signal;
 1416.33 +using _STLP_VENDOR_CSTD::raise;
 1416.34 +#    endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1416.35 +using _STLP_VENDOR_CSTD::sig_atomic_t;
 1416.36 +_STLP_END_NAMESPACE
 1416.37 +#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1416.38 +#endif
 1416.39 +
 1416.40 +#endif /* _STLP_INTERNAL_CSIGNAL */
  1417.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1417.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cstdarg.h	Wed Mar 31 12:27:01 2010 +0100
  1417.3 @@ -0,0 +1,30 @@
  1417.4 +/*
  1417.5 + * Copyright (c) 1999
  1417.6 + * Boris Fomitchev
  1417.7 + *
  1417.8 + * This material is provided "as is", with absolutely no warranty expressed
  1417.9 + * or implied. Any use is at your own risk.
 1417.10 + *
 1417.11 + * Permission to use or copy this software for any purpose is hereby granted
 1417.12 + * without fee, provided the above notices are retained on all copies.
 1417.13 + * Permission to modify the code and to distribute modified code is granted,
 1417.14 + * provided the above notices are retained, and a notice that the code was
 1417.15 + * modified is included with the above copyright notice.
 1417.16 + */
 1417.17 +
 1417.18 +#ifndef _STLP_INTERNAL_CSTDARG
 1417.19 +#define _STLP_INTERNAL_CSTDARG
 1417.20 +
 1417.21 +#if defined (_STLP_USE_NEW_C_HEADERS)
 1417.22 +#  include _STLP_NATIVE_CPP_C_HEADER(cstdarg)
 1417.23 +#else
 1417.24 +#  include _STLP_NATIVE_C_HEADER(stdarg.h)
 1417.25 +#endif
 1417.26 +
 1417.27 +#ifdef _STLP_IMPORT_VENDOR_CSTD
 1417.28 +_STLP_BEGIN_NAMESPACE
 1417.29 +using _STLP_VENDOR_CSTD::va_list;
 1417.30 +_STLP_END_NAMESPACE
 1417.31 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1417.32 +
 1417.33 +#endif
  1418.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1418.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cstddef.h	Wed Mar 31 12:27:01 2010 +0100
  1418.3 @@ -0,0 +1,40 @@
  1418.4 +/*
  1418.5 + * Copyright (c) 1999
  1418.6 + * Boris Fomitchev
  1418.7 + *
  1418.8 + * This material is provided "as is", with absolutely no warranty expressed
  1418.9 + * or implied. Any use is at your own risk.
 1418.10 + *
 1418.11 + * Permission to use or copy this software for any purpose is hereby granted
 1418.12 + * without fee, provided the above notices are retained on all copies.
 1418.13 + * Permission to modify the code and to distribute modified code is granted,
 1418.14 + * provided the above notices are retained, and a notice that the code was
 1418.15 + * modified is included with the above copyright notice.
 1418.16 + *
 1418.17 + */
 1418.18 +
 1418.19 +#ifndef _STLP_INTERNAL_CSTDDEF
 1418.20 +#define _STLP_INTERNAL_CSTDDEF
 1418.21 +
 1418.22 +#  if (__GNUC__ >= 3) && defined (__CYGWIN__) // this total HACK is the only expedient way I could cygwin to work with GCC 3.0
 1418.23 +#    define __need_wint_t // mostly because wint_t didn't seem to get defined otherwise :(
 1418.24 +#    define __need_wchar_t
 1418.25 +#    define __need_size_t
 1418.26 +#    define __need_ptrdiff_t
 1418.27 +#    define __need_NULL
 1418.28 +#  endif
 1418.29 +
 1418.30 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1418.31 +#    include _STLP_NATIVE_CPP_C_HEADER(cstddef)
 1418.32 +#  else
 1418.33 +#    include <stddef.h>
 1418.34 +#  endif
 1418.35 +
 1418.36 +#  ifdef _STLP_IMPORT_VENDOR_CSTD
 1418.37 +_STLP_BEGIN_NAMESPACE
 1418.38 +using _STLP_VENDOR_CSTD::ptrdiff_t;
 1418.39 +using _STLP_VENDOR_CSTD::size_t;
 1418.40 +_STLP_END_NAMESPACE
 1418.41 +#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1418.42 +
 1418.43 +#endif /* _STLP_INTERNAL_CSTDDEF */
  1419.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1419.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cstdio.h	Wed Mar 31 12:27:01 2010 +0100
  1419.3 @@ -0,0 +1,125 @@
  1419.4 +/*
  1419.5 + * Copyright (c) 1999
  1419.6 + * Boris Fomitchev
  1419.7 + *
  1419.8 + * This material is provided "as is", with absolutely no warranty expressed
  1419.9 + * or implied. Any use is at your own risk.
 1419.10 + *
 1419.11 + * Permission to use or copy this software for any purpose is hereby granted
 1419.12 + * without fee, provided the above notices are retained on all copies.
 1419.13 + * Permission to modify the code and to distribute modified code is granted,
 1419.14 + * provided the above notices are retained, and a notice that the code was
 1419.15 + * modified is included with the above copyright notice.
 1419.16 + *
 1419.17 + */
 1419.18 +
 1419.19 +#ifndef _STLP_INTERNAL_CSTDIO
 1419.20 +#define _STLP_INTERNAL_CSTDIO
 1419.21 +
 1419.22 +#if defined (__Lynx__)
 1419.23 +#  include _STLP_NATIVE_C_HEADER(stdarg.h)
 1419.24 +#endif
 1419.25 +
 1419.26 +#if defined (_STLP_USE_NEW_C_HEADERS)
 1419.27 +#  include _STLP_NATIVE_CPP_C_HEADER(cstdio)
 1419.28 +#else
 1419.29 +#  include _STLP_NATIVE_C_HEADER(stdio.h)
 1419.30 +#endif
 1419.31 +
 1419.32 +#if (defined (__MWERKS__) && !defined (N_PLAT_NLM))  || defined (__BORLANDC__)
 1419.33 +#  undef stdin
 1419.34 +#  undef stdout
 1419.35 +#  undef stderr
 1419.36 +#  if defined (__MWERKS__)
 1419.37 +#  define stdin   (&_STLP_VENDOR_CSTD::__files[0])
 1419.38 +#  define stdout  (&_STLP_VENDOR_CSTD::__files[1])
 1419.39 +#  define stderr  (&_STLP_VENDOR_CSTD::__files[2])
 1419.40 +#  elif defined (__BORLANDC__)
 1419.41 +#    define stdin   (&_STLP_VENDOR_CSTD::_streams[0])
 1419.42 +#    define stdout  (&_STLP_VENDOR_CSTD::_streams[1])
 1419.43 +#    define stderr  (&_STLP_VENDOR_CSTD::_streams[2])
 1419.44 +#  endif
 1419.45 +#endif
 1419.46 +
 1419.47 +#if defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400) || defined (_STLP_USING_PLATFORM_SDK_COMPILER)
 1419.48 +inline int vsnprintf(char *s1, size_t n, const char *s2, va_list v)
 1419.49 +{ return _STLP_VENDOR_CSTD::_vsnprintf(s1, n, s2, v); }
 1419.50 +#endif
 1419.51 +
 1419.52 +#if defined (_STLP_IMPORT_VENDOR_CSTD )
 1419.53 +_STLP_BEGIN_NAMESPACE
 1419.54 +using _STLP_VENDOR_CSTD::FILE;
 1419.55 +using _STLP_VENDOR_CSTD::fpos_t;
 1419.56 +using _STLP_VENDOR_CSTD::size_t;
 1419.57 +
 1419.58 +// undef obsolete macros
 1419.59 +#  undef putc
 1419.60 +#  undef getc
 1419.61 +#  undef getchar
 1419.62 +#  undef putchar
 1419.63 +#  undef feof
 1419.64 +#  undef ferror
 1419.65 +
 1419.66 +#  if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1419.67 +using _STLP_VENDOR_CSTD::clearerr;
 1419.68 +using _STLP_VENDOR_CSTD::fclose;
 1419.69 +using _STLP_VENDOR_CSTD::feof;
 1419.70 +using _STLP_VENDOR_CSTD::ferror;
 1419.71 +using _STLP_VENDOR_CSTD::fflush;
 1419.72 +using _STLP_VENDOR_CSTD::fgetc;
 1419.73 +using _STLP_VENDOR_CSTD::fgetpos;
 1419.74 +using _STLP_VENDOR_CSTD::fgets;
 1419.75 +using _STLP_VENDOR_CSTD::fopen;
 1419.76 +using _STLP_VENDOR_CSTD::fprintf;
 1419.77 +using _STLP_VENDOR_CSTD::fputc;
 1419.78 +using _STLP_VENDOR_CSTD::fputs;
 1419.79 +using _STLP_VENDOR_CSTD::fread;
 1419.80 +#    if _WIN32_WCE < 0x500 // CE5 stopped supplying this
 1419.81 +using _STLP_VENDOR_CSTD::freopen;
 1419.82 +#    endif
 1419.83 +using _STLP_VENDOR_CSTD::fscanf;
 1419.84 +using _STLP_VENDOR_CSTD::fseek;
 1419.85 +using _STLP_VENDOR_CSTD::fsetpos;
 1419.86 +using _STLP_VENDOR_CSTD::ftell;
 1419.87 +using _STLP_VENDOR_CSTD::fwrite;
 1419.88 +
 1419.89 +#    if  !(defined (__IBMCPP__) && (__IBMCPP__ >= 500))
 1419.90 +#      if _WIN32_WCE < 0x500 // CE5 stopped supplying this except as macros. TODO: use inline function to redirect to the macros?
 1419.91 + using _STLP_VENDOR_CSTD::getc;
 1419.92 + using _STLP_VENDOR_CSTD::putc;
 1419.93 +#      endif
 1419.94 + using _STLP_VENDOR_CSTD::getchar;
 1419.95 + using _STLP_VENDOR_CSTD::putchar;
 1419.96 +#    endif
 1419.97 +
 1419.98 +using _STLP_VENDOR_CSTD::gets;
 1419.99 +#    if _WIN32_WCE < 0x500 // CE5 stopped supplying this
1419.100 +using _STLP_VENDOR_CSTD::perror;
1419.101 +#    endif
1419.102 +using _STLP_VENDOR_CSTD::printf;
1419.103 +using _STLP_VENDOR_CSTD::puts;
1419.104 +#    if _WIN32_WCE < 0x500 // CE5 stopped supplying this
1419.105 +using _STLP_VENDOR_CSTD::remove;
1419.106 +using _STLP_VENDOR_CSTD::rename;
1419.107 +using _STLP_VENDOR_CSTD::rewind;
1419.108 +using _STLP_VENDOR_CSTD::setbuf;
1419.109 +using _STLP_VENDOR_CSTD::tmpfile;
1419.110 +using _STLP_VENDOR_CSTD::tmpnam;
1419.111 +#    endif
1419.112 +using _STLP_VENDOR_CSTD::scanf;
1419.113 +using _STLP_VENDOR_CSTD::setvbuf;
1419.114 +using _STLP_VENDOR_CSTD::sprintf;
1419.115 +using _STLP_VENDOR_CSTD::sscanf;
1419.116 +using _STLP_VENDOR_CSTD::ungetc;
1419.117 +using _STLP_VENDOR_CSTD::vfprintf;
1419.118 +using _STLP_VENDOR_CSTD::vprintf;
1419.119 +using _STLP_VENDOR_CSTD::vsprintf;
1419.120 +#    if ((defined (__MWERKS__) && !defined (N_PLAT_NLM)) || (defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400)) || \
1419.121 +        (defined (__BORLANDC__)))
1419.122 +using _STLP_VENDOR_CSTD::vsnprintf;
1419.123 +#    endif
1419.124 +#  endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
1419.125 +_STLP_END_NAMESPACE
1419.126 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
1419.127 +
1419.128 +#endif /* _STLP_INTERNAL_CSTDIO */
  1420.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1420.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cstdlib.h	Wed Mar 31 12:27:01 2010 +0100
  1420.3 @@ -0,0 +1,179 @@
  1420.4 +/*
  1420.5 + * Copyright (c) 1999
  1420.6 + * Boris Fomitchev
  1420.7 + *
  1420.8 + * This material is provided "as is", with absolutely no warranty expressed
  1420.9 + * or implied. Any use is at your own risk.
 1420.10 + *
 1420.11 + * Permission to use or copy this software for any purpose is hereby granted
 1420.12 + * without fee, provided the above notices are retained on all copies.
 1420.13 + * Permission to modify the code and to distribute modified code is granted,
 1420.14 + * provided the above notices are retained, and a notice that the code was
 1420.15 + * modified is included with the above copyright notice.
 1420.16 + *
 1420.17 + */
 1420.18 +
 1420.19 +#ifndef _STLP_INTERNAL_CSTDLIB
 1420.20 +#define _STLP_INTERNAL_CSTDLIB
 1420.21 +
 1420.22 +#if defined (_STLP_USE_NEW_C_HEADERS)
 1420.23 +#  include _STLP_NATIVE_CPP_C_HEADER(cstdlib)
 1420.24 +#else
 1420.25 +#  include <stdlib.h>
 1420.26 +#endif
 1420.27 +
 1420.28 +#if defined (__BORLANDC__)
 1420.29 +/* Borland process.h header do not bring anything here and is just included
 1420.30 + * in order to avoid inclusion later. This header cannot be included later
 1420.31 + * because Borland compiler consider that for instance the abort function
 1420.32 + * defined as extern "C" cannot be overloaded and it finds 2 "overloads",
 1420.33 + * once in native std namespace and the other in STLport namespace...
 1420.34 + */
 1420.35 +#  include <process.h>
 1420.36 +#endif
 1420.37 +
 1420.38 +/* on evc3/evc4 including stdlib.h also defines setjmp macro */
 1420.39 +#if defined (_STLP_WCE)
 1420.40 +#  define _STLP_NATIVE_SETJMP_H_INCLUDED
 1420.41 +#endif
 1420.42 +
 1420.43 +#if defined (__MSL__) && (__MSL__ <= 0x5003)
 1420.44 +namespace std {
 1420.45 +  typedef ::div_t div_t;
 1420.46 +  typedef ::ldiv_t ldiv_t;
 1420.47 +#  ifdef __MSL_LONGLONG_SUPPORT__
 1420.48 +  typedef ::lldiv_t lldiv_t;
 1420.49 +#  endif
 1420.50 +}
 1420.51 +#endif
 1420.52 +
 1420.53 +#ifdef _STLP_IMPORT_VENDOR_CSTD
 1420.54 +_STLP_BEGIN_NAMESPACE
 1420.55 +using _STLP_VENDOR_CSTD::div_t;
 1420.56 +using _STLP_VENDOR_CSTD::ldiv_t;
 1420.57 +using _STLP_VENDOR_CSTD::size_t;
 1420.58 +
 1420.59 +#  ifndef _STLP_NO_CSTD_FUNCTION_IMPORTS
 1420.60 +#    ifndef _STLP_WCE
 1420.61 +// these functions just don't exist on Windows CE
 1420.62 +using _STLP_VENDOR_CSTD::abort;
 1420.63 +using _STLP_VENDOR_CSTD::getenv;
 1420.64 +using _STLP_VENDOR_CSTD::mblen;
 1420.65 +using _STLP_VENDOR_CSTD::mbtowc;
 1420.66 +using _STLP_VENDOR_CSTD::system;
 1420.67 +using _STLP_VENDOR_CSTD::bsearch;
 1420.68 +#    endif
 1420.69 +using _STLP_VENDOR_CSTD::atexit;
 1420.70 +using _STLP_VENDOR_CSTD::exit;
 1420.71 +using _STLP_VENDOR_CSTD::calloc;
 1420.72 +using _STLP_VENDOR_CSTD::free;
 1420.73 +using _STLP_VENDOR_CSTD::malloc;
 1420.74 +using _STLP_VENDOR_CSTD::realloc;
 1420.75 +using _STLP_VENDOR_CSTD::atof;
 1420.76 +using _STLP_VENDOR_CSTD::atoi;
 1420.77 +using _STLP_VENDOR_CSTD::atol;
 1420.78 +using _STLP_VENDOR_CSTD::mbstowcs;
 1420.79 +using _STLP_VENDOR_CSTD::strtod;
 1420.80 +using _STLP_VENDOR_CSTD::strtol;
 1420.81 +using _STLP_VENDOR_CSTD::strtoul;
 1420.82 +
 1420.83 +#    if !(defined (_STLP_NO_NATIVE_WIDE_STREAMS) || defined (_STLP_NO_MBSTATE_T))
 1420.84 +using _STLP_VENDOR_CSTD::wcstombs;
 1420.85 +#      ifndef _STLP_WCE
 1420.86 +using _STLP_VENDOR_CSTD::wctomb;
 1420.87 +#      endif
 1420.88 +#    endif
 1420.89 +using _STLP_VENDOR_CSTD::qsort;
 1420.90 +using _STLP_VENDOR_CSTD::labs;
 1420.91 +using _STLP_VENDOR_CSTD::ldiv;
 1420.92 +#    if defined (_STLP_LONG_LONG) && !defined (_STLP_NO_VENDOR_STDLIB_L)
 1420.93 +#      if !defined(__sun)
 1420.94 +using _STLP_VENDOR_CSTD::llabs;
 1420.95 +using _STLP_VENDOR_CSTD::lldiv_t;
 1420.96 +using _STLP_VENDOR_CSTD::lldiv;
 1420.97 +#      else
 1420.98 +using ::llabs;
 1420.99 +using ::lldiv_t;
1420.100 +using ::lldiv;
1420.101 +#      endif
1420.102 +#    endif
1420.103 +using _STLP_VENDOR_CSTD::rand;
1420.104 +using _STLP_VENDOR_CSTD::srand;
1420.105 +#  endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
1420.106 +_STLP_END_NAMESPACE
1420.107 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
1420.108 +
1420.109 +#if defined (__BORLANDC__) && defined (_STLP_USE_NEW_C_HEADERS)
1420.110 +//In this config bcc define everything in std namespace and not in
1420.111 +//the global one.
1420.112 +inline int abs(int __x) { return _STLP_VENDOR_CSTD::abs(__x); }
1420.113 +inline _STLP_VENDOR_CSTD::div_t div(int __x, int __y) { return _STLP_VENDOR_CSTD::div(__x, __y); }
1420.114 +#endif
1420.115 +
1420.116 +#if defined(_MSC_EXTENSIONS) && defined(_STLP_MSVC) && (_STLP_MSVC <= 1300)
1420.117 +#  define _STLP_RESTORE_FUNCTION_INTRINSIC
1420.118 +#  pragma warning (push)
1420.119 +#  pragma warning (disable: 4162)
1420.120 +#  pragma function (abs)
1420.121 +#endif
1420.122 +
1420.123 +//HP-UX native lib has abs() and div() functions in global namespace
1420.124 +#if !defined (__HP_aCC) || (__HP_aCC < 30000)
1420.125 +
1420.126 +//MSVC starting with .Net 2003 already define all math functions in global namespace:
1420.127 +#  if !defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1310) || defined(UNDER_CE)
1420.128 +inline long abs(long __x) { return _STLP_VENDOR_CSTD::labs(__x); }
1420.129 +#  endif
1420.130 +
1420.131 +/** VC since version 8 has this, the platform SDK and CE SDKs hanging behind. */
1420.132 +#  if !defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1400) || defined (_STLP_USING_PLATFORM_SDK_COMPILER) || defined(UNDER_CE)
1420.133 +inline _STLP_VENDOR_CSTD::ldiv_t div(long __x, long __y) { return _STLP_VENDOR_CSTD::ldiv(__x, __y); }
1420.134 +#  endif
1420.135 +
1420.136 +#endif
1420.137 +
1420.138 +#if defined (_STLP_RESTORE_FUNCTION_INTRINSIC)
1420.139 +#  pragma intrinsic (abs)
1420.140 +#  pragma warning (pop)
1420.141 +#  undef _STLP_RESTORE_FUNCTION_INTRINSIC
1420.142 +#endif
1420.143 +
1420.144 +#if defined (_STLP_LONG_LONG)
1420.145 +#  if !defined (_STLP_NO_VENDOR_STDLIB_L)
1420.146 +#    if !defined (__sun)
1420.147 +inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return _STLP_VENDOR_CSTD::llabs(__x); }
1420.148 +inline lldiv_t div(_STLP_LONG_LONG __x, _STLP_LONG_LONG __y) { return _STLP_VENDOR_CSTD::lldiv(__x, __y); }
1420.149 +#    else
1420.150 +inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return ::llabs(__x); }
1420.151 +inline lldiv_t div(_STLP_LONG_LONG __x, _STLP_LONG_LONG __y) { return ::lldiv(__x, __y); }
1420.152 +#    endif
1420.153 +#  else
1420.154 +inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; }
1420.155 +#  endif
1420.156 +#endif
1420.157 +
1420.158 +/* C++ Standard is unclear about several call to 'using ::func' if new overloads
1420.159 + * of ::func appears between 2 successive 'using' calls. To avoid this potential
1420.160 + * problem we provide all abs overload before the 'using' call.
1420.161 + * Beware: This header inclusion has to be after all abs overload of this file.
1420.162 + *         The first 'using ::abs' call is going to be in the other header.
1420.163 + */
1420.164 +#ifndef _STLP_INTERNAL_CMATH
1420.165 +#  include <stl/_cmath.h>
1420.166 +#endif
1420.167 +
1420.168 +#if defined (_STLP_IMPORT_VENDOR_CSTD) && !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
1420.169 +// ad hoc, don't replace with _STLP_VENDOR_CSTD::abs here! - ptr 2005-03-05
1420.170 +_STLP_BEGIN_NAMESPACE
1420.171 +using ::abs;
1420.172 +#  if !defined (N_PLAT_NLM)
1420.173 +using ::div;
1420.174 +#  else
1420.175 +// Don't use div from clib or libc on NetWare---buggy! - ptr 2005-06-06
1420.176 +inline div_t div(int __x, int __y) { div_t d; d.quot = __x / __y; d.rem = __x % __y; return d; }
1420.177 +inline ldiv_t div(long __x, long __y) { ldiv_t d; d.quot = __x / __y; d.rem = __x % __y; return d; }
1420.178 +#  endif
1420.179 +_STLP_END_NAMESPACE
1420.180 +#endif
1420.181 +
1420.182 +#endif /* _STLP_INTERNAL_CSTDLIB */
  1421.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1421.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cstring.h	Wed Mar 31 12:27:01 2010 +0100
  1421.3 @@ -0,0 +1,31 @@
  1421.4 +/*
  1421.5 + * Copyright (c) 1999
  1421.6 + * Boris Fomitchev
  1421.7 + *
  1421.8 + * This material is provided "as is", with absolutely no warranty expressed
  1421.9 + * or implied. Any use is at your own risk.
 1421.10 + *
 1421.11 + * Permission to use or copy this software for any purpose is hereby granted
 1421.12 + * without fee, provided the above notices are retained on all copies.
 1421.13 + * Permission to modify the code and to distribute modified code is granted,
 1421.14 + * provided the above notices are retained, and a notice that the code was
 1421.15 + * modified is included with the above copyright notice.
 1421.16 + *
 1421.17 + */
 1421.18 +
 1421.19 +#ifndef _STLP_INTERNAL_CSTRING
 1421.20 +#define _STLP_INTERNAL_CSTRING
 1421.21 +
 1421.22 +#if defined (_STLP_USE_NEW_C_HEADERS)
 1421.23 +#  include _STLP_NATIVE_CPP_C_HEADER(cstring)
 1421.24 +#else
 1421.25 +#  include _STLP_NATIVE_C_HEADER(string.h)
 1421.26 +#endif
 1421.27 +
 1421.28 +#ifdef _STLP_IMPORT_VENDOR_CSTD
 1421.29 +_STLP_BEGIN_NAMESPACE
 1421.30 +#  include <using/cstring>
 1421.31 +_STLP_END_NAMESPACE
 1421.32 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1421.33 +
 1421.34 +#endif /* _STLP_INTERNAL_CSTRING */
  1422.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1422.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ctime.h	Wed Mar 31 12:27:01 2010 +0100
  1422.3 @@ -0,0 +1,52 @@
  1422.4 +/*
  1422.5 + * Copyright (c) 1999
  1422.6 + * Boris Fomitchev
  1422.7 + *
  1422.8 + * This material is provided "as is", with absolutely no warranty expressed
  1422.9 + * or implied. Any use is at your own risk.
 1422.10 + *
 1422.11 + * Permission to use or copy this software for any purpose is hereby granted
 1422.12 + * without fee, provided the above notices are retained on all copies.
 1422.13 + * Permission to modify the code and to distribute modified code is granted,
 1422.14 + * provided the above notices are retained, and a notice that the code was
 1422.15 + * modified is included with the above copyright notice.
 1422.16 + *
 1422.17 + */
 1422.18 +
 1422.19 +#ifndef _STLP_INTERNAL_CTIME
 1422.20 +#define _STLP_INTERNAL_CTIME
 1422.21 +
 1422.22 +#if !defined (_STLP_WCE_EVC3)
 1422.23 +
 1422.24 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1422.25 +#    include _STLP_NATIVE_CPP_C_HEADER(ctime)
 1422.26 +#  else
 1422.27 +#    include _STLP_NATIVE_C_HEADER(time.h)
 1422.28 +#  endif
 1422.29 +
 1422.30 +#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1422.31 +_STLP_BEGIN_NAMESPACE
 1422.32 +using _STLP_VENDOR_CSTD::size_t;
 1422.33 +using _STLP_VENDOR_CSTD::clock_t;
 1422.34 +using _STLP_VENDOR_CSTD::time_t;
 1422.35 +using _STLP_VENDOR_CSTD::tm;
 1422.36 +#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1422.37 +using _STLP_VENDOR_CSTD::clock;
 1422.38 +using _STLP_VENDOR_CSTD::asctime;
 1422.39 +using _STLP_VENDOR_CSTD::ctime;
 1422.40 +using _STLP_VENDOR_CSTD::gmtime;
 1422.41 +
 1422.42 +#      if _WIN32_WCE < 0x500 // CE5 stopped supplying this
 1422.43 +using _STLP_VENDOR_CSTD::difftime;
 1422.44 +#      endif
 1422.45 +using _STLP_VENDOR_CSTD::mktime;
 1422.46 +using _STLP_VENDOR_CSTD::localtime;
 1422.47 +using _STLP_VENDOR_CSTD::strftime;
 1422.48 +using _STLP_VENDOR_CSTD::time;
 1422.49 +#    endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1422.50 +_STLP_END_NAMESPACE
 1422.51 +#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1422.52 +
 1422.53 +#endif
 1422.54 +
 1422.55 +#endif /* _STLP_INTERNAL_CTIME */
  1423.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1423.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ctraits_fns.h	Wed Mar 31 12:27:01 2010 +0100
  1423.3 @@ -0,0 +1,95 @@
  1423.4 +/*
  1423.5 + * Copyright (c) 1999
  1423.6 + * Silicon Graphics Computer Systems, Inc.
  1423.7 + *
  1423.8 + * Permission to use, copy, modify, distribute and sell this software
  1423.9 + * and its documentation for any purpose is hereby granted without fee,
 1423.10 + * provided that the above copyright notice appear in all copies and
 1423.11 + * that both that copyright notice and this permission notice appear
 1423.12 + * in supporting documentation.  Silicon Graphics makes no
 1423.13 + * representations about the suitability of this software for any
 1423.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1423.15 + */ 
 1423.16 +
 1423.17 +// WARNING: This is an internal header file, included by other C++
 1423.18 +// standard library headers.  You should not attempt to use this header
 1423.19 +// file directly.
 1423.20 +
 1423.21 +#ifndef _STLP_INTERNAL_CTRAITS_FUNCTIONS_H
 1423.22 +#define _STLP_INTERNAL_CTRAITS_FUNCTIONS_H
 1423.23 +
 1423.24 +# ifndef _STLP_INTERNAL_FUNCTION_H 
 1423.25 +#  include <stl/_function_base.h>
 1423.26 +# endif
 1423.27 +
 1423.28 +// This file contains a few small adapters that allow a character
 1423.29 +// traits class to be used as a function object.
 1423.30 +
 1423.31 +_STLP_BEGIN_NAMESPACE
 1423.32 +
 1423.33 +template <class _Traits>
 1423.34 +struct _Eq_traits
 1423.35 +  : public binary_function<typename _Traits::char_type,
 1423.36 +                           typename _Traits::char_type,
 1423.37 +                           bool>
 1423.38 +{
 1423.39 +  bool operator()(const typename _Traits::char_type& __x,
 1423.40 +                  const typename _Traits::char_type& __y) const
 1423.41 +    { return _Traits::eq(__x, __y); }
 1423.42 +};
 1423.43 +
 1423.44 +template <class _Traits>
 1423.45 +struct _Eq_char_bound
 1423.46 +  : public unary_function<typename _Traits::char_type, bool>
 1423.47 +{
 1423.48 +  typename _Traits::char_type __val;
 1423.49 +  _Eq_char_bound(typename _Traits::char_type __c) : __val(__c) {}
 1423.50 +  bool operator()(const typename _Traits::char_type& __x) const
 1423.51 +    { return _Traits::eq(__x, __val); }
 1423.52 +};
 1423.53 +
 1423.54 +template <class _Traits>
 1423.55 +struct _Neq_char_bound
 1423.56 +  : public unary_function<typename _Traits::char_type, bool>
 1423.57 +{
 1423.58 +  typename _Traits::char_type __val;
 1423.59 +  _Neq_char_bound(typename _Traits::char_type __c) : __val(__c) {}
 1423.60 +  bool operator()(const typename _Traits::char_type& __x) const
 1423.61 +    { return !_Traits::eq(__x, __val); }
 1423.62 +};
 1423.63 +
 1423.64 +template <class _Traits>
 1423.65 +struct _Eq_int_bound
 1423.66 +  : public unary_function<typename _Traits::char_type, bool>
 1423.67 +{
 1423.68 +  typename _Traits::int_type __val;
 1423.69 +
 1423.70 +  _Eq_int_bound(typename _Traits::int_type __c) : __val(__c) {}
 1423.71 +  bool operator()(const typename _Traits::char_type& __x) const
 1423.72 +    { return _Traits::eq_int_type(_Traits::to_int_type(__x), __val); }
 1423.73 +};
 1423.74 +
 1423.75 +# if 0
 1423.76 +template <class _Traits>
 1423.77 +struct _Lt_traits
 1423.78 +  : public binary_function<typename _Traits::char_type,
 1423.79 +                           typename _Traits::char_type,
 1423.80 +                           bool>
 1423.81 +{
 1423.82 +  bool operator()(const typename _Traits::char_type& __x,
 1423.83 +                  const typename _Traits::char_type& __y) const
 1423.84 +    { return _Traits::lt(__x, __y); }
 1423.85 +};
 1423.86 +# endif
 1423.87 +
 1423.88 +_STLP_END_NAMESPACE
 1423.89 +
 1423.90 +#endif /* _STLP_INTERNAL_CTRAITS_FUNCTIONS_H */
 1423.91 +
 1423.92 +// Local Variables:
 1423.93 +// mode:C++
 1423.94 +// End:
 1423.95 +
 1423.96 +
 1423.97 +
 1423.98 +
  1424.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1424.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cwchar.h	Wed Mar 31 12:27:01 2010 +0100
  1424.3 @@ -0,0 +1,119 @@
  1424.4 +/*
  1424.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1424.6 + * Copyright (c) 1999
  1424.7 + * Boris Fomitchev
  1424.8 + *
  1424.9 + * This material is provided "as is", with absolutely no warranty expressed
 1424.10 + * or implied. Any use is at your own risk.
 1424.11 + *
 1424.12 + * Permission to use or copy this software for any purpose is hereby granted 
 1424.13 + * without fee, provided the above notices are retained on all copies.
 1424.14 + * Permission to modify the code and to distribute modified code is granted,
 1424.15 + * provided the above notices are retained, and a notice that the code was
 1424.16 + * modified is included with the above copyright notice.
 1424.17 + *
 1424.18 + */
 1424.19 +
 1424.20 +#ifndef _STLP_CWCHAR_H
 1424.21 +# define _STLP_CWCHAR_H
 1424.22 +
 1424.23 +#ifndef _STLP_NO_WCHAR_T
 1424.24 +#ifdef __cplusplus
 1424.25 +# include <cwchar>
 1424.26 +#else
 1424.27 +# include <wchar.h>
 1424.28 +#endif
 1424.29 +#endif
 1424.30 +
 1424.31 +# if defined (__MRC__) || defined (__SC__) || defined (__BORLANDC__) || defined(__FreeBSD__) || (defined (__GNUC__) && defined (__APPLE__) || defined( __Lynx__ )) || defined (_STLP_NO_WCHAR_T)
 1424.32 +
 1424.33 +#ifdef __SYMBIAN32__
 1424.34 +#  include <stddef.h>
 1424.35 +#else
 1424.36 +# include _STLP_NATIVE_C_HEADER(stddef.h)
 1424.37 +#endif
 1424.38 +#  if defined (__FreeBSD__) || defined (__Lynx__)
 1424.39 +#   ifndef _WINT_T
 1424.40 +typedef long int wint_t;
 1424.41 +#    define _WINT_T
 1424.42 +#   endif /* _WINT_T */
 1424.43 +#  endif
 1424.44 +# endif
 1424.45 +
 1424.46 +# if defined ( _STLP_OWN_IOSTREAMS ) && defined (_STLP_NO_NATIVE_MBSTATE_T) && ! defined (_STLP_NO_MBSTATE_T) && ! defined (_MBSTATE_T) && ! defined (__mbstate_t_defined)
 1424.47 +#  define _STLP_USE_OWN_MBSTATE_T
 1424.48 +#  define _MBSTATE_T
 1424.49 +# endif
 1424.50 +
 1424.51 +# ifdef _STLP_USE_OWN_MBSTATE_T
 1424.52 +
 1424.53 +#ifndef __SYMBIAN32__ //no more using the structure __stl_mbstate_t. usinfg _mb_state_t from _types.h.
 1424.54 +// to be compatible across different SUN platforms
 1424.55 +#ifdef __sun
 1424.56 +# define __stl_mbstate_t __mbstate_t
 1424.57 +#endif
 1424.58 +
 1424.59 +struct __stl_mbstate_t;
 1424.60 +
 1424.61 +# ifdef __cplusplus
 1424.62 +struct __stl_mbstate_t { 
 1424.63 +  __stl_mbstate_t( long __st = 0 ) { _M_state[0] = __st ; }
 1424.64 +  __stl_mbstate_t& operator=(const long __st) {
 1424.65 +    _M_state[0] = __st;              
 1424.66 +    return *this;
 1424.67 +  } 
 1424.68 +  __stl_mbstate_t(const __stl_mbstate_t& __x) {_M_state[0]= __x._M_state[0]; }         
 1424.69 +  __stl_mbstate_t& operator=(const __stl_mbstate_t& __x) {
 1424.70 +    _M_state[0]= __x._M_state[0];              
 1424.71 +    return *this;
 1424.72 +  }
 1424.73 +# if defined (__sun)
 1424.74 +#  ifdef _LP64
 1424.75 +  long _M_state[4];
 1424.76 +#  else
 1424.77 +  int _M_state[6];
 1424.78 +#  endif
 1424.79 +# else       
 1424.80 +  long _M_state[1];
 1424.81 +# endif
 1424.82 +};          
 1424.83 +
 1424.84 +inline bool operator==(const __stl_mbstate_t& __x, const __stl_mbstate_t& __y) {
 1424.85 +  return ( __x._M_state[0] == __y._M_state[0] );
 1424.86 +}
 1424.87 +
 1424.88 +inline bool operator!=(const __stl_mbstate_t& __x, const __stl_mbstate_t& __y) {
 1424.89 +  return ( __x._M_state[0] == __y._M_state[0] );
 1424.90 +}
 1424.91 +# endif
 1424.92 +
 1424.93 +
 1424.94 +#endif //#if __SYMBIAN32__
 1424.95 +_STLP_BEGIN_NAMESPACE
 1424.96 +//typedef __mbstate_t __stl_mbstate_t;
 1424.97 +//typedef __mbstate_t mbstate_t;
 1424.98 +
 1424.99 +_STLP_END_NAMESPACE
1424.100 +
1424.101 +# endif /* _STLP_USE_OWN_MBSTATE_T */
1424.102 +
1424.103 +#if !defined (_STLP_NO_WCHAR_T)
1424.104 +# ifndef WCHAR_MIN
1424.105 +#  define WCHAR_MIN 0
1424.106 +// SUNpro has some bugs with casts. wchar_t is size of int there anyway.
1424.107 +#  if defined (__SUNPRO_CC) || defined (__DJGPP)
1424.108 +#   define WCHAR_MAX (~0)
1424.109 +#  else
1424.110 +#   define WCHAR_MAX ((wchar_t)~0)
1424.111 +#  endif
1424.112 +# endif
1424.113 +#endif
1424.114 +
1424.115 +# if defined  (_STLP_IMPORT_VENDOR_CSTD) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
1424.116 +_STLP_BEGIN_NAMESPACE  
1424.117 +using namespace _STLP_VENDOR_CSTD;
1424.118 +_STLP_END_NAMESPACE
1424.119 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
1424.120 +
1424.121 +#endif /* _STLP_CWCHAR_H */
1424.122 +
  1425.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1425.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_cwctype.h	Wed Mar 31 12:27:01 2010 +0100
  1425.3 @@ -0,0 +1,93 @@
  1425.4 +/*
  1425.5 + * Copyright (c) 1999
  1425.6 + * Boris Fomitchev
  1425.7 + *
  1425.8 + * This material is provided "as is", with absolutely no warranty expressed
  1425.9 + * or implied. Any use is at your own risk.
 1425.10 + *
 1425.11 + * Permission to use or copy this software for any purpose is hereby granted
 1425.12 + * without fee, provided the above notices are retained on all copies.
 1425.13 + * Permission to modify the code and to distribute modified code is granted,
 1425.14 + * provided the above notices are retained, and a notice that the code was
 1425.15 + * modified is included with the above copyright notice.
 1425.16 + *
 1425.17 + */
 1425.18 +
 1425.19 +#ifndef _STLP_INTERNAL_CWCTYPE
 1425.20 +#define _STLP_INTERNAL_CWCTYPE
 1425.21 +
 1425.22 +#if defined (__BORLANDC__) && !defined (_STLP_INTERNAL_CCTYPE)
 1425.23 +#  include <stl/_cctype.h>
 1425.24 +#endif
 1425.25 +
 1425.26 +#if !defined (_STLP_WCE_EVC3)
 1425.27 +#  if defined (_STLP_USE_NEW_C_HEADERS)
 1425.28 +#    if !defined (N_PLAT_NLM)
 1425.29 +#      include _STLP_NATIVE_CPP_C_HEADER(cwctype)
 1425.30 +#    else
 1425.31 +       // see comments in stlport/cwchar about wint_t on Novell
 1425.32 +#      include _STLP_NATIVE_CPP_C_HEADER(wchar_t.h)
 1425.33 +#      include _STLP_NATIVE_C_HEADER(stddef.h)
 1425.34 +#      include _STLP_NATIVE_C_HEADER(stdio.h)
 1425.35 +#    endif
 1425.36 +#    if defined (__MSL__) && !defined (N_PLAT_NLM)
 1425.37 +namespace std {
 1425.38 +  typedef wchar_t wctrans_t;
 1425.39 +  wint_t towctrans(wint_t c, wctrans_t value);
 1425.40 +  wctrans_t wctrans(const char *name);
 1425.41 +}
 1425.42 +using std::wctrans_t;
 1425.43 +using std::towctrans;
 1425.44 +using std::wctrans;
 1425.45 +#    endif
 1425.46 +#  else
 1425.47 +#    include _STLP_NATIVE_C_HEADER(wctype.h)
 1425.48 +#  endif
 1425.49 +
 1425.50 +#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1425.51 +
 1425.52 +#    if defined (_STLP_USE_GLIBC) && !(defined (_GLIBCPP_USE_WCHAR_T) || defined (_GLIBCXX_USE_WCHAR_T)) || \
 1425.53 +        defined (__sun) || defined (__FreeBSD__) || \
 1425.54 +        defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION < 3) || (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION <= 0))
 1425.55 +//We take wide functions from global namespace:
 1425.56 +#      define _STLP_VENDOR_CSTD_WFUNC
 1425.57 +#    else
 1425.58 +#      define _STLP_VENDOR_CSTD_WFUNC _STLP_VENDOR_CSTD
 1425.59 +#    endif
 1425.60 +
 1425.61 +_STLP_BEGIN_NAMESPACE
 1425.62 +using _STLP_VENDOR_CSTD_WFUNC::wctype_t;
 1425.63 +using _STLP_VENDOR_CSTD_WFUNC::wint_t;
 1425.64 +#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1425.65 +#      if !defined (__BORLANDC__) && !defined (__MSL__)
 1425.66 +using _STLP_VENDOR_CSTD_WFUNC::wctrans_t;
 1425.67 +#        if !defined (__DMC__) && (!defined(_WIN32_WCE) || _WIN32_WCE<0x500)
 1425.68 +using _STLP_VENDOR_CSTD_WFUNC::towctrans;
 1425.69 +using _STLP_VENDOR_CSTD_WFUNC::wctrans;
 1425.70 +using _STLP_VENDOR_CSTD_WFUNC::wctype;
 1425.71 +#        endif
 1425.72 +using _STLP_VENDOR_CSTD_WFUNC::iswctype;
 1425.73 +#      endif
 1425.74 +#      if !defined(N_PLAT_NLM)
 1425.75 +using _STLP_VENDOR_CSTD_WFUNC::iswalnum;
 1425.76 +using _STLP_VENDOR_CSTD_WFUNC::iswalpha;
 1425.77 +using _STLP_VENDOR_CSTD_WFUNC::iswcntrl;
 1425.78 +
 1425.79 +using _STLP_VENDOR_CSTD_WFUNC::iswdigit;
 1425.80 +using _STLP_VENDOR_CSTD_WFUNC::iswgraph;
 1425.81 +using _STLP_VENDOR_CSTD_WFUNC::iswlower;
 1425.82 +using _STLP_VENDOR_CSTD_WFUNC::iswprint;
 1425.83 +using _STLP_VENDOR_CSTD_WFUNC::iswpunct;
 1425.84 +using _STLP_VENDOR_CSTD_WFUNC::iswspace;
 1425.85 +using _STLP_VENDOR_CSTD_WFUNC::iswupper;
 1425.86 +using _STLP_VENDOR_CSTD_WFUNC::iswxdigit;
 1425.87 +
 1425.88 +using _STLP_VENDOR_CSTD_WFUNC::towlower;
 1425.89 +using _STLP_VENDOR_CSTD_WFUNC::towupper;
 1425.90 +#      endif /* !N_PLAT_NLM */
 1425.91 +#    endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1425.92 +_STLP_END_NAMESPACE
 1425.93 +#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1425.94 +#endif /* _STLP_WCE_EVC3 */
 1425.95 +
 1425.96 +#endif /* _STLP_INTERNAL_CWCTYPE */
  1426.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1426.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_deque.c	Wed Mar 31 12:27:01 2010 +0100
  1426.3 @@ -0,0 +1,691 @@
  1426.4 +/*
  1426.5 + *
  1426.6 + *
  1426.7 + * Copyright (c) 1994
  1426.8 + * Hewlett-Packard Company
  1426.9 + *
 1426.10 + * Copyright (c) 1996,1997
 1426.11 + * Silicon Graphics Computer Systems, Inc.
 1426.12 + *
 1426.13 + * Copyright (c) 1997
 1426.14 + * Moscow Center for SPARC Technology
 1426.15 + *
 1426.16 + * Copyright (c) 1999 
 1426.17 + * Boris Fomitchev
 1426.18 + *
 1426.19 + * This material is provided "as is", with absolutely no warranty expressed
 1426.20 + * or implied. Any use is at your own risk.
 1426.21 + *
 1426.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1426.23 + * without fee, provided the above notices are retained on all copies.
 1426.24 + * Permission to modify the code and to distribute modified code is granted,
 1426.25 + * provided the above notices are retained, and a notice that the code was
 1426.26 + * modified is included with the above copyright notice.
 1426.27 + *
 1426.28 + */
 1426.29 +#ifndef _STLP_DEQUE_C
 1426.30 +# define _STLP_DEQUE_C
 1426.31 +
 1426.32 +# ifndef _STLP_INTERNAL_DEQUE_H
 1426.33 +#  include <stl/_deque.h>
 1426.34 +# endif
 1426.35 +
 1426.36 +_STLP_BEGIN_NAMESPACE
 1426.37 +
 1426.38 +// Non-inline member functions from _Deque_base.
 1426.39 +
 1426.40 +template <class _Tp, class _Alloc >
 1426.41 +_Deque_base<_Tp,_Alloc >::~_Deque_base() {
 1426.42 +  if (_M_map._M_data) {
 1426.43 +    if (_M_start._M_node) {
 1426.44 +      _M_destroy_nodes(_M_start._M_node, this->_M_finish._M_node + 1);
 1426.45 +    }
 1426.46 +    _M_map.deallocate(_M_map._M_data, _M_map_size._M_data);
 1426.47 +  }
 1426.48 +}
 1426.49 +
 1426.50 +template <class _Tp, class _Alloc >
 1426.51 +void
 1426.52 +_Deque_base<_Tp,_Alloc>::_M_initialize_map(size_t __num_elements)
 1426.53 +{
 1426.54 +  size_t __num_nodes = 
 1426.55 +    __num_elements / this->buffer_size() + 1 ;
 1426.56 +
 1426.57 +  _M_map_size._M_data = (max)((size_t) _S_initial_map_size, __num_nodes + 2);
 1426.58 +  _M_map._M_data = _M_map.allocate(_M_map_size._M_data);
 1426.59 +
 1426.60 +  _Tp** __nstart = _M_map._M_data + (_M_map_size._M_data - __num_nodes) / 2;
 1426.61 +  _Tp** __nfinish = __nstart + __num_nodes;
 1426.62 +    
 1426.63 +  _STLP_TRY {
 1426.64 +    _M_create_nodes(__nstart, __nfinish);
 1426.65 +  }
 1426.66 +  _STLP_UNWIND((_M_map.deallocate(_M_map._M_data, _M_map_size._M_data), 
 1426.67 +                _M_map._M_data = 0, _M_map_size._M_data = 0));
 1426.68 +  _M_start._M_set_node(__nstart);
 1426.69 +  this->_M_finish._M_set_node(__nfinish - 1);
 1426.70 +  _M_start._M_cur = _M_start._M_first;
 1426.71 +  this->_M_finish._M_cur = this->_M_finish._M_first +
 1426.72 +               __num_elements % this->buffer_size();
 1426.73 +}
 1426.74 +
 1426.75 +template <class _Tp, class _Alloc >
 1426.76 +void
 1426.77 +_Deque_base<_Tp,_Alloc>::_M_create_nodes(_Tp** __nstart,
 1426.78 +                                                  _Tp** __nfinish)
 1426.79 +{
 1426.80 +  _Tp** _STLP_LEAVE_VOLATILE __cur = 0;
 1426.81 +  _STLP_TRY {
 1426.82 +    for (__cur = __nstart; __cur < __nfinish; ++__cur)
 1426.83 +      *__cur = _M_map_size.allocate(this->buffer_size());
 1426.84 +  }
 1426.85 +  _STLP_UNWIND(_M_destroy_nodes(__nstart, __cur));
 1426.86 +}
 1426.87 +
 1426.88 +template <class _Tp, class _Alloc >
 1426.89 +void 
 1426.90 +_Deque_base<_Tp,_Alloc>::_M_destroy_nodes(_Tp** __nstart,
 1426.91 +                                                   _Tp** __nfinish)
 1426.92 +{
 1426.93 +  for (_Tp** __n = __nstart; __n < __nfinish; ++__n)
 1426.94 +    _M_map_size.deallocate(*__n, this->buffer_size());
 1426.95 +}
 1426.96 +
 1426.97 +
 1426.98 +
 1426.99 +// Non-inline member functions
1426.100 +
1426.101 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
1426.102 +// qualified references 
1426.103 +#   define __iterator__           _Deque_iterator<_Tp, _Nonconst_traits<_Tp> >
1426.104 +#   define const_iterator         _Deque_iterator<_Tp, _Const_traits<_Tp>  > 
1426.105 +#   define iterator               __iterator__
1426.106 +#   define size_type              size_t
1426.107 +#   define value_type             _Tp
1426.108 +# else
1426.109 +#  define __iterator__           _STLP_TYPENAME_ON_RETURN_TYPE __deque__<_Tp, _Alloc>::iterator
1426.110 +# endif
1426.111 +
1426.112 +template <class _Tp, class _Alloc >
1426.113 +__deque__<_Tp, _Alloc >&  
1426.114 +__deque__<_Tp, _Alloc >::operator= (const __deque__<_Tp, _Alloc >& __x) {
1426.115 +  const size_type __len = size();
1426.116 +  if (&__x != this) {
1426.117 +    if (__len >= __x.size())
1426.118 +      erase(copy(__x.begin(), __x.end(), this->_M_start), this->_M_finish);
1426.119 +    else {
1426.120 +      const_iterator __mid = __x.begin() + difference_type(__len);
1426.121 +      copy(__x.begin(), __mid, this->_M_start);
1426.122 +      insert(this->_M_finish, __mid, __x.end());
1426.123 +    }
1426.124 +  }
1426.125 +  return *this;
1426.126 +}        
1426.127 +
1426.128 +template <class _Tp, class _Alloc >
1426.129 +void 
1426.130 +__deque__<_Tp, _Alloc >::_M_fill_insert(iterator __pos,
1426.131 +					     size_type __n, const value_type& __x)
1426.132 +{
1426.133 +  if (__pos._M_cur == this->_M_start._M_cur) {
1426.134 +    iterator __new_start = _M_reserve_elements_at_front(__n);
1426.135 +    _STLP_TRY {
1426.136 +      uninitialized_fill(__new_start, this->_M_start, __x);
1426.137 +    }
1426.138 +    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1426.139 +    this->_M_start = __new_start;
1426.140 +  }
1426.141 +  else if (__pos._M_cur == this->_M_finish._M_cur) {
1426.142 +    iterator __new_finish = _M_reserve_elements_at_back(__n);
1426.143 +    _STLP_TRY {
1426.144 +      uninitialized_fill(this->_M_finish, __new_finish, __x);
1426.145 +    }
1426.146 +    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node+1, __new_finish._M_node+1));
1426.147 +    this->_M_finish = __new_finish;
1426.148 +  }
1426.149 +  else 
1426.150 +    _M_insert_aux(__pos, __n, __x);
1426.151 +}
1426.152 +
1426.153 +#ifndef _STLP_MEMBER_TEMPLATES  
1426.154 +
1426.155 +template <class _Tp, class _Alloc >
1426.156 +void __deque__<_Tp, _Alloc>::insert(iterator __pos,
1426.157 +                                           const value_type* __first,
1426.158 +                                           const value_type* __last) {
1426.159 +  size_type __n = __last - __first;
1426.160 +  if (__pos._M_cur == this->_M_start._M_cur) {
1426.161 +    iterator __new_start = _M_reserve_elements_at_front(__n);
1426.162 +    _STLP_TRY {
1426.163 +      uninitialized_copy(__first, __last, __new_start);
1426.164 +    }
1426.165 +    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1426.166 +    this->_M_start = __new_start;
1426.167 +  }
1426.168 +  else if (__pos._M_cur == this->_M_finish._M_cur) {
1426.169 +    iterator __new_finish = _M_reserve_elements_at_back(__n);
1426.170 +    _STLP_TRY {
1426.171 +      uninitialized_copy(__first, __last, this->_M_finish);
1426.172 +    }
1426.173 +    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, 
1426.174 +                                  __new_finish._M_node + 1));
1426.175 +    this->_M_finish = __new_finish;
1426.176 +  }
1426.177 +  else
1426.178 +    _M_insert_aux(__pos, __first, __last, __n);
1426.179 +}
1426.180 +
1426.181 +template <class _Tp, class _Alloc >
1426.182 +void __deque__<_Tp,_Alloc>::insert(iterator __pos,
1426.183 +                                         const_iterator __first,
1426.184 +                                         const_iterator __last)
1426.185 +{
1426.186 +  size_type __n = __last - __first;
1426.187 +  if (__pos._M_cur == this->_M_start._M_cur) {
1426.188 +    iterator __new_start = _M_reserve_elements_at_front(__n);
1426.189 +    _STLP_TRY {
1426.190 +      uninitialized_copy(__first, __last, __new_start);
1426.191 +    }
1426.192 +    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1426.193 +    this->_M_start = __new_start;
1426.194 +  }
1426.195 +  else if (__pos._M_cur == this->_M_finish._M_cur) {
1426.196 +    iterator __new_finish = _M_reserve_elements_at_back(__n);
1426.197 +    _STLP_TRY {
1426.198 +      uninitialized_copy(__first, __last, this->_M_finish);
1426.199 +    }
1426.200 +    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1,__new_finish._M_node + 1));
1426.201 +    this->_M_finish = __new_finish;
1426.202 +  }
1426.203 +  else
1426.204 +    _M_insert_aux(__pos, __first, __last, __n);
1426.205 +}
1426.206 +
1426.207 +#endif /* _STLP_MEMBER_TEMPLATES */
1426.208 +
1426.209 +template <class _Tp, class _Alloc >
1426.210 +__iterator__ 
1426.211 +__deque__<_Tp,_Alloc>::erase(iterator __first, iterator __last)
1426.212 +{
1426.213 +  if (__first == this->_M_start && __last == this->_M_finish) {
1426.214 +    clear();
1426.215 +    return this->_M_finish;
1426.216 +  }
1426.217 +  else {
1426.218 +    difference_type __n = __last - __first;
1426.219 +    difference_type __elems_before = __first - this->_M_start;
1426.220 +    if (__elems_before < difference_type(this->size() - __n) / 2) {
1426.221 +      copy_backward(this->_M_start, __first, __last);
1426.222 +      iterator __new_start = this->_M_start + __n;
1426.223 +      _STLP_STD::_Destroy(this->_M_start, __new_start);
1426.224 +      this->_M_destroy_nodes(this->_M_start._M_node, __new_start._M_node);
1426.225 +      this->_M_start = __new_start;
1426.226 +    }
1426.227 +    else {
1426.228 +      copy(__last, this->_M_finish, __first);
1426.229 +      iterator __new_finish = this->_M_finish - __n;
1426.230 +      _STLP_STD::_Destroy(__new_finish, this->_M_finish);
1426.231 +      this->_M_destroy_nodes(__new_finish._M_node + 1, this->_M_finish._M_node + 1);
1426.232 +      this->_M_finish = __new_finish;
1426.233 +    }
1426.234 +    return this->_M_start + __elems_before;
1426.235 +  }
1426.236 +}
1426.237 +
1426.238 +template <class _Tp, class _Alloc >
1426.239 +void __deque__<_Tp,_Alloc>::clear()
1426.240 +{
1426.241 +  for (_Map_pointer __node = this->_M_start._M_node + 1;
1426.242 +       __node < this->_M_finish._M_node;
1426.243 +       ++__node) {
1426.244 +    _STLP_STD::_Destroy(*__node, *__node + this->buffer_size());
1426.245 +    this->_M_map_size.deallocate(*__node, this->buffer_size());
1426.246 +  }
1426.247 +
1426.248 +  if (this->_M_start._M_node != this->_M_finish._M_node) {
1426.249 +    _STLP_STD::_Destroy(this->_M_start._M_cur, this->_M_start._M_last);
1426.250 +    _STLP_STD::_Destroy(this->_M_finish._M_first, this->_M_finish._M_cur);
1426.251 +    this->_M_map_size.deallocate(this->_M_finish._M_first, this->buffer_size());
1426.252 +  }
1426.253 +  else
1426.254 +    _STLP_STD::_Destroy(this->_M_start._M_cur, this->_M_finish._M_cur);
1426.255 +
1426.256 +  this->_M_finish = this->_M_start;
1426.257 +}
1426.258 +
1426.259 +// Precondition: this->_M_start and this->_M_finish have already been initialized,
1426.260 +// but none of the deque's elements have yet been constructed.
1426.261 +template <class _Tp, class _Alloc >
1426.262 +void 
1426.263 +__deque__<_Tp,_Alloc>::_M_fill_initialize(const value_type& __val) {
1426.264 +  _STLP_LEAVE_VOLATILE _Map_pointer __cur = 0;
1426.265 +  _STLP_TRY {
1426.266 +    for (__cur = this->_M_start._M_node; __cur < this->_M_finish._M_node; ++__cur)
1426.267 +      uninitialized_fill(*__cur, *__cur + this->buffer_size(), __val);
1426.268 +    uninitialized_fill(this->_M_finish._M_first, this->_M_finish._M_cur, __val);
1426.269 +  }
1426.270 +  _STLP_UNWIND(_STLP_STD::_Destroy(this->_M_start, iterator(*__cur, __cur)));
1426.271 +}
1426.272 +
1426.273 +
1426.274 +// Called only if this->_M_finish._M_cur == this->_M_finish._M_last - 1.
1426.275 +template <class _Tp, class _Alloc >
1426.276 +void
1426.277 +__deque__<_Tp,_Alloc>::_M_push_back_aux_v(const value_type& __t)
1426.278 +{
1426.279 +  value_type __t_copy = __t;
1426.280 +  _STLP_PUSH_CLEANUP_ITEM(value_type, &__t_copy); 
1426.281 +  _M_reserve_map_at_back();
1426.282 +  *(this->_M_finish._M_node + 1) = this->_M_map_size.allocate(this->buffer_size());
1426.283 +  _STLP_TRY {
1426.284 +    _Construct(this->_M_finish._M_cur, __t_copy);
1426.285 +    this->_M_finish._M_set_node(this->_M_finish._M_node + 1);
1426.286 +    this->_M_finish._M_cur = this->_M_finish._M_first;
1426.287 +  }
1426.288 +  _STLP_UNWIND(this->_M_map_size.deallocate(*(this->_M_finish._M_node + 1), 
1426.289 +				      this->buffer_size()));
1426.290 +#ifdef _STLP_USE_TRAP_LEAVE
1426.291 +    CleanupStack::Pop(); 
1426.292 +#endif  
1426.293 +}
1426.294 +
1426.295 +# ifndef _STLP_NO_ANACHRONISMS
1426.296 +// Called only if this->_M_finish._M_cur == this->_M_finish._M_last - 1.
1426.297 +template <class _Tp, class _Alloc >
1426.298 +void
1426.299 +__deque__<_Tp,_Alloc>::_M_push_back_aux()
1426.300 +{
1426.301 +  _M_reserve_map_at_back();
1426.302 +  *(this->_M_finish._M_node + 1) = this->_M_map_size.allocate(this->buffer_size());
1426.303 +  _STLP_TRY {
1426.304 +    _Construct(this->_M_finish._M_cur);
1426.305 +    this->_M_finish._M_set_node(this->_M_finish._M_node + 1);
1426.306 +    this->_M_finish._M_cur = this->_M_finish._M_first;
1426.307 +  }
1426.308 +  _STLP_UNWIND(this->_M_map_size.deallocate(*(this->_M_finish._M_node + 1), 
1426.309 +				      this->buffer_size()));
1426.310 +}
1426.311 +# endif
1426.312 +
1426.313 +// Called only if this->_M_start._M_cur == this->_M_start._M_first.
1426.314 +template <class _Tp, class _Alloc >
1426.315 +void 
1426.316 +__deque__<_Tp,_Alloc>::_M_push_front_aux_v(const value_type& __t)
1426.317 +{
1426.318 +  value_type __t_copy = __t;
1426.319 +  _STLP_PUSH_CLEANUP_ITEM(value_type, &__t_copy); 
1426.320 +  _M_reserve_map_at_front();
1426.321 +  *(this->_M_start._M_node - 1) = this->_M_map_size.allocate(this->buffer_size());
1426.322 +  _STLP_TRY {
1426.323 +    this->_M_start._M_set_node(this->_M_start._M_node - 1);
1426.324 +    this->_M_start._M_cur = this->_M_start._M_last - 1;
1426.325 +    _Construct(this->_M_start._M_cur, __t_copy);
1426.326 +  }
1426.327 +  _STLP_UNWIND((++this->_M_start, 
1426.328 +		this->_M_map_size.deallocate(*(this->_M_start._M_node - 1), this->buffer_size())));
1426.329 +#ifdef _STLP_USE_TRAP_LEAVE
1426.330 +    CleanupStack::Pop(); 
1426.331 +#endif  
1426.332 +} 
1426.333 +
1426.334 +
1426.335 +# ifndef _STLP_NO_ANACHRONISMS
1426.336 +// Called only if this->_M_start._M_cur == this->_M_start._M_first.
1426.337 +template <class _Tp, class _Alloc >
1426.338 +void 
1426.339 +__deque__<_Tp,_Alloc>::_M_push_front_aux()
1426.340 +{
1426.341 +  _M_reserve_map_at_front();
1426.342 +  *(this->_M_start._M_node - 1) = this->_M_map_size.allocate(this->buffer_size());
1426.343 +  _STLP_TRY {
1426.344 +    this->_M_start._M_set_node(this->_M_start._M_node - 1);
1426.345 +    this->_M_start._M_cur = this->_M_start._M_last - 1;
1426.346 +    _Construct(this->_M_start._M_cur);
1426.347 +  }
1426.348 +  _STLP_UNWIND((++this->_M_start, this->_M_map_size.deallocate(*(this->_M_start._M_node - 1), 
1426.349 +						   this->buffer_size() )));
1426.350 +} 
1426.351 +# endif
1426.352 +
1426.353 +// Called only if this->_M_finish._M_cur == this->_M_finish._M_first.
1426.354 +template <class _Tp, class _Alloc >
1426.355 +void 
1426.356 +__deque__<_Tp,_Alloc>::_M_pop_back_aux()
1426.357 +{
1426.358 +  this->_M_map_size.deallocate(this->_M_finish._M_first, this->buffer_size());
1426.359 +  this->_M_finish._M_set_node(this->_M_finish._M_node - 1);
1426.360 +  this->_M_finish._M_cur = this->_M_finish._M_last - 1;
1426.361 +  _STLP_STD::_Destroy(this->_M_finish._M_cur);
1426.362 +}
1426.363 +
1426.364 +// Called only if this->_M_start._M_cur == this->_M_start._M_last - 1.  Note that 
1426.365 +// if the deque has at least one element (a precondition for this member 
1426.366 +// function), and if this->_M_start._M_cur == this->_M_start._M_last, then the deque 
1426.367 +// must have at least two nodes.
1426.368 +template <class _Tp, class _Alloc >
1426.369 +void 
1426.370 +__deque__<_Tp,_Alloc>::_M_pop_front_aux()
1426.371 +{
1426.372 +  _STLP_STD::_Destroy(this->_M_start._M_cur);
1426.373 +  this->_M_map_size.deallocate(this->_M_start._M_first, this->buffer_size());
1426.374 +  this->_M_start._M_set_node(this->_M_start._M_node + 1);
1426.375 +  this->_M_start._M_cur = this->_M_start._M_first;
1426.376 +}      
1426.377 +
1426.378 +
1426.379 +
1426.380 +template <class _Tp, class _Alloc >
1426.381 +__iterator__
1426.382 +__deque__<_Tp,_Alloc>::_M_insert_aux_prepare(iterator __pos) {
1426.383 +  difference_type __index = __pos - this->_M_start;
1426.384 +  if (__index < difference_type(size() / 2)) {
1426.385 +    push_front(front());
1426.386 +    iterator __front1 = this->_M_start;
1426.387 +    ++__front1;
1426.388 +    iterator __front2 = __front1;
1426.389 +    ++__front2;
1426.390 +    __pos = this->_M_start + __index;
1426.391 +    iterator __pos1 = __pos;
1426.392 +    ++__pos1;
1426.393 +    copy(__front2, __pos1, __front1);
1426.394 +  }
1426.395 +  else {
1426.396 +    push_back(back());
1426.397 +    iterator __back1 = this->_M_finish;
1426.398 +    --__back1;
1426.399 +    iterator __back2 = __back1;
1426.400 +    --__back2;
1426.401 +    __pos = this->_M_start + __index;
1426.402 +    copy_backward(__pos, __back2, __back1);
1426.403 +  }
1426.404 +  return __pos;
1426.405 +}
1426.406 +
1426.407 +template <class _Tp, class _Alloc >
1426.408 +__iterator__
1426.409 +__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1426.410 +				     const value_type& __x) {
1426.411 +  value_type __x_copy = __x;
1426.412 +  _STLP_PUSH_CLEANUP_ITEM(value_type, &__x_copy); 
1426.413 +  _STLP_MPWFIX_TRY		//*TY 06/01/2000 - mpw forget to call dtor on __x_copy without this try block
1426.414 +  __pos = _M_insert_aux_prepare(__pos);
1426.415 +  *__pos = __x_copy;
1426.416 +#ifdef _STLP_USE_TRAP_LEAVE
1426.417 +    CleanupStack::Pop(); 
1426.418 +#endif 
1426.419 +  return __pos;
1426.420 +  _STLP_MPWFIX_CATCH		//*TY 06/01/2000 - 
1426.421 +}
1426.422 +
1426.423 +template <class _Tp, class _Alloc >
1426.424 +__iterator__
1426.425 +__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos)
1426.426 +{
1426.427 +  __pos = _M_insert_aux_prepare(__pos);
1426.428 +  *__pos = value_type();
1426.429 +  return __pos;
1426.430 +}
1426.431 +
1426.432 +template <class _Tp, class _Alloc >
1426.433 +void
1426.434 +__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1426.435 +                                           size_type __n,
1426.436 +                                           const value_type& __x)
1426.437 +{
1426.438 +  const difference_type __elems_before = __pos - this->_M_start;
1426.439 +  size_type __length = this->size();
1426.440 +  value_type __x_copy = __x;
1426.441 +  _STLP_PUSH_CLEANUP_ITEM(value_type, &__x_copy); 
1426.442 +
1426.443 +  if (__elems_before < difference_type(__length / 2)) {
1426.444 +    iterator __new_start = _M_reserve_elements_at_front(__n);
1426.445 +    iterator __old_start = this->_M_start;
1426.446 +    __pos = this->_M_start + __elems_before;
1426.447 +    _STLP_TRY {
1426.448 +      if (__elems_before >= difference_type(__n)) {
1426.449 +        iterator __start_n = this->_M_start + difference_type(__n);
1426.450 +        uninitialized_copy(this->_M_start, __start_n, __new_start);
1426.451 +        this->_M_start = __new_start;
1426.452 +        copy(__start_n, __pos, __old_start);
1426.453 +        fill(__pos - difference_type(__n), __pos, __x_copy);
1426.454 +      }
1426.455 +      else {
1426.456 +        __uninitialized_copy_fill(this->_M_start, __pos, __new_start, 
1426.457 +	                          this->_M_start, __x_copy);
1426.458 +        this->_M_start = __new_start;
1426.459 +        fill(__old_start, __pos, __x_copy);
1426.460 +      }
1426.461 +    }
1426.462 +    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1426.463 +  }
1426.464 +  else {
1426.465 +    iterator __new_finish = _M_reserve_elements_at_back(__n);
1426.466 +    iterator __old_finish = this->_M_finish;
1426.467 +    const difference_type __elems_after = 
1426.468 +      difference_type(__length) - __elems_before;
1426.469 +    __pos = this->_M_finish - __elems_after;
1426.470 +    _STLP_TRY {
1426.471 +      if (__elems_after > difference_type(__n)) {
1426.472 +        iterator __finish_n = this->_M_finish - difference_type(__n);
1426.473 +        uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish);
1426.474 +        this->_M_finish = __new_finish;
1426.475 +        copy_backward(__pos, __finish_n, __old_finish);
1426.476 +        fill(__pos, __pos + difference_type(__n), __x_copy);
1426.477 +      }
1426.478 +      else {
1426.479 +        __uninitialized_fill_copy(this->_M_finish, __pos + difference_type(__n),
1426.480 +                                  __x_copy, __pos, this->_M_finish);
1426.481 +        this->_M_finish = __new_finish;
1426.482 +        fill(__pos, __old_finish, __x_copy);
1426.483 +      }
1426.484 +    }
1426.485 +    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1));
1426.486 +  }
1426.487 +#ifdef _STLP_USE_TRAP_LEAVE
1426.488 +  CleanupStack::Pop();
1426.489 +#endif  
1426.490 +}
1426.491 +
1426.492 +#ifndef _STLP_MEMBER_TEMPLATES 
1426.493 +template <class _Tp, class _Alloc >
1426.494 +void 
1426.495 +__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1426.496 +                                           const value_type* __first,
1426.497 +                                           const value_type* __last,
1426.498 +                                           size_type __n)
1426.499 +{
1426.500 +
1426.501 +  const difference_type __elemsbefore = __pos - this->_M_start;
1426.502 +  size_type __length = size();
1426.503 +  if (__elemsbefore < difference_type(__length / 2)) {
1426.504 +    iterator __new_start = _M_reserve_elements_at_front(__n);
1426.505 +    iterator __old_start = this->_M_start;
1426.506 +    __pos = this->_M_start + __elemsbefore;
1426.507 +    _STLP_TRY {
1426.508 +      if (__elemsbefore >= difference_type(__n)) {
1426.509 +        iterator __start_n = this->_M_start + difference_type(__n);
1426.510 +        uninitialized_copy(this->_M_start, __start_n, __new_start);
1426.511 +        this->_M_start = __new_start;
1426.512 +        copy(__start_n, __pos, __old_start);
1426.513 +        copy(__first, __last, __pos - difference_type(__n));
1426.514 +      }
1426.515 +      else {
1426.516 +        const value_type* __mid = 
1426.517 +	  __first + (difference_type(__n) - __elemsbefore);
1426.518 +        __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid,
1426.519 +                                  __new_start, _IsPODType());
1426.520 +        this->_M_start = __new_start;
1426.521 +        copy(__mid, __last, __old_start);
1426.522 +      }
1426.523 +    }
1426.524 +    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1426.525 +  }
1426.526 +  else {
1426.527 +    iterator __new_finish = _M_reserve_elements_at_back(__n);
1426.528 +    iterator __old_finish = this->_M_finish;
1426.529 +    const difference_type __elemsafter = 
1426.530 +      difference_type(__length) - __elemsbefore;
1426.531 +    __pos = this->_M_finish - __elemsafter;
1426.532 +    _STLP_TRY {
1426.533 +      if (__elemsafter > difference_type(__n)) {
1426.534 +        iterator __finish_n = this->_M_finish - difference_type(__n);
1426.535 +        uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish);
1426.536 +        this->_M_finish = __new_finish;
1426.537 +        copy_backward(__pos, __finish_n, __old_finish);
1426.538 +        copy(__first, __last, __pos);
1426.539 +      }
1426.540 +      else {
1426.541 +        const value_type* __mid = __first + __elemsafter;
1426.542 +        __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish, _IsPODType());
1426.543 +        this->_M_finish = __new_finish;
1426.544 +        copy(__first, __mid, __pos);
1426.545 +      }
1426.546 +    }
1426.547 +    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1));
1426.548 +  }
1426.549 +}
1426.550 +
1426.551 +template <class _Tp, class _Alloc >
1426.552 +void
1426.553 +__deque__<_Tp,_Alloc>::_M_insert_aux(iterator __pos,
1426.554 +                                           const_iterator __first,
1426.555 +                                           const_iterator __last,
1426.556 +                                           size_type __n)
1426.557 +{
1426.558 +  const difference_type __elemsbefore = __pos - this->_M_start;
1426.559 +  size_type __length = size();
1426.560 +  if (__elemsbefore < difference_type(__length / 2)) {
1426.561 +    iterator __new_start = _M_reserve_elements_at_front(__n);
1426.562 +    iterator __old_start = this->_M_start;
1426.563 +    __pos = this->_M_start + __elemsbefore;
1426.564 +    _STLP_TRY {
1426.565 +      if (__elemsbefore >= difference_type(__n)) {
1426.566 +        iterator __start_n = this->_M_start + __n;
1426.567 +        uninitialized_copy(this->_M_start, __start_n, __new_start);
1426.568 +        this->_M_start = __new_start;
1426.569 +        copy(__start_n, __pos, __old_start);
1426.570 +        copy(__first, __last, __pos - difference_type(__n));
1426.571 +      }
1426.572 +      else {
1426.573 +        const_iterator __mid = __first + (__n - __elemsbefore);
1426.574 +        __uninitialized_copy_copy(this->_M_start, __pos, __first, __mid,
1426.575 +                                  __new_start, _IsPODType());
1426.576 +        this->_M_start = __new_start;
1426.577 +        copy(__mid, __last, __old_start);
1426.578 +      }
1426.579 +    }
1426.580 +    _STLP_UNWIND(this->_M_destroy_nodes(__new_start._M_node, this->_M_start._M_node));
1426.581 +  }
1426.582 +  else {
1426.583 +    iterator __new_finish = _M_reserve_elements_at_back(__n);
1426.584 +    iterator __old_finish = this->_M_finish;
1426.585 +    const difference_type __elemsafter = __length - __elemsbefore;
1426.586 +    __pos = this->_M_finish - __elemsafter;
1426.587 +    _STLP_TRY {
1426.588 +      if (__elemsafter > difference_type(__n)) {
1426.589 +        iterator __finish_n = this->_M_finish - difference_type(__n);
1426.590 +        uninitialized_copy(__finish_n, this->_M_finish, this->_M_finish);
1426.591 +        this->_M_finish = __new_finish;
1426.592 +        copy_backward(__pos, __finish_n, __old_finish);
1426.593 +        copy(__first, __last, __pos);
1426.594 +      }
1426.595 +      else {
1426.596 +        const_iterator __mid = __first + __elemsafter;
1426.597 +        __uninitialized_copy_copy(__mid, __last, __pos, this->_M_finish, this->_M_finish, _IsPODType());
1426.598 +        this->_M_finish = __new_finish;
1426.599 +        copy(__first, __mid, __pos);
1426.600 +      }
1426.601 +    }
1426.602 +    _STLP_UNWIND(this->_M_destroy_nodes(this->_M_finish._M_node + 1, __new_finish._M_node + 1));
1426.603 +  }
1426.604 +}
1426.605 +
1426.606 +#endif /* _STLP_MEMBER_TEMPLATES */
1426.607 +
1426.608 +template <class _Tp, class _Alloc >
1426.609 +void 
1426.610 +__deque__<_Tp,_Alloc>::_M_new_elements_at_front(size_type __new_elems)
1426.611 +{
1426.612 +  size_type __new_nodes
1426.613 +      = (__new_elems + this->buffer_size() - 1) / this->buffer_size();
1426.614 +  _M_reserve_map_at_front(__new_nodes);
1426.615 +  size_type __i =1;
1426.616 +  _STLP_TRY {
1426.617 +    for (; __i <= __new_nodes; ++__i)
1426.618 +      *(this->_M_start._M_node - __i) = this->_M_map_size.allocate(this->buffer_size());
1426.619 +  }
1426.620 +  _STLP_CATCH_ALL {
1426.621 +    for (size_type __j = 1; __j < __i; ++__j)
1426.622 +      this->_M_map_size.deallocate(*(this->_M_start._M_node - __j), this->buffer_size());
1426.623 +    _STLP_RETHROW;
1426.624 +  }
1426.625 +}
1426.626 +
1426.627 +template <class _Tp, class _Alloc >
1426.628 +void 
1426.629 +__deque__<_Tp,_Alloc>::_M_new_elements_at_back(size_type __new_elems)
1426.630 +{
1426.631 +  size_type __new_nodes
1426.632 +      = (__new_elems + this->buffer_size() - 1) / this->buffer_size();
1426.633 +  _M_reserve_map_at_back(__new_nodes);
1426.634 +  size_type __i = 1;
1426.635 +  _STLP_TRY {
1426.636 +    for (; __i <= __new_nodes; ++__i)
1426.637 +      *(this->_M_finish._M_node + __i) = this->_M_map_size.allocate(this->buffer_size());
1426.638 +  }
1426.639 +  _STLP_CATCH_ALL {
1426.640 +    for (size_type __j = 1; __j < __i; ++__j)
1426.641 +      this->_M_map_size.deallocate(*(this->_M_finish._M_node + __j), this->buffer_size());
1426.642 +    _STLP_RETHROW;
1426.643 +  }
1426.644 +}
1426.645 +
1426.646 +template <class _Tp, class _Alloc >
1426.647 +void 
1426.648 +__deque__<_Tp,_Alloc>::_M_reallocate_map(size_type __nodes_to_add,
1426.649 +                                              bool __add_at_front)
1426.650 +{
1426.651 +  size_type __old_num_nodes = this->_M_finish._M_node - this->_M_start._M_node + 1;
1426.652 +  size_type __new_num_nodes = __old_num_nodes + __nodes_to_add;
1426.653 +
1426.654 +  _Map_pointer __new_nstart;
1426.655 +  if (this->_M_map_size._M_data > 2 * __new_num_nodes) {
1426.656 +    __new_nstart = this->_M_map._M_data + (this->_M_map_size._M_data - __new_num_nodes) / 2 
1426.657 +                     + (__add_at_front ? __nodes_to_add : 0);
1426.658 +    if (__new_nstart < this->_M_start._M_node)
1426.659 +      copy(this->_M_start._M_node, this->_M_finish._M_node + 1, __new_nstart);
1426.660 +    else
1426.661 +      copy_backward(this->_M_start._M_node, this->_M_finish._M_node + 1, 
1426.662 +                    __new_nstart + __old_num_nodes);
1426.663 +  }
1426.664 +  else {
1426.665 +    size_type __new_map_size = 
1426.666 +      this->_M_map_size._M_data + (max)((size_t)this->_M_map_size._M_data, __nodes_to_add) + 2;
1426.667 +
1426.668 +    _Map_pointer __new_map = this->_M_map.allocate(__new_map_size);
1426.669 +    __new_nstart = __new_map + (__new_map_size - __new_num_nodes) / 2
1426.670 +                         + (__add_at_front ? __nodes_to_add : 0);
1426.671 +    copy(this->_M_start._M_node, this->_M_finish._M_node + 1, __new_nstart);
1426.672 +    this->_M_map.deallocate(this->_M_map._M_data, this->_M_map_size._M_data);
1426.673 +
1426.674 +    this->_M_map._M_data = __new_map;
1426.675 +    this->_M_map_size._M_data = __new_map_size;
1426.676 +  }
1426.677 +
1426.678 +  this->_M_start._M_set_node(__new_nstart);
1426.679 +  this->_M_finish._M_set_node(__new_nstart + __old_num_nodes - 1);
1426.680 +}
1426.681 +
1426.682 +_STLP_END_NAMESPACE
1426.683 +
1426.684 +# undef __iterator__
1426.685 +# undef iterator
1426.686 +# undef const_iterator
1426.687 +# undef size_type
1426.688 +# undef value_type
1426.689 +
1426.690 +#endif /*  _STLP_DEQUE_C */
1426.691 +
1426.692 +// Local Variables:
1426.693 +// mode:C++
1426.694 +// End:
  1427.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1427.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_fstream.c	Wed Mar 31 12:27:01 2010 +0100
  1427.3 @@ -0,0 +1,891 @@
  1427.4 +/*
  1427.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1427.6 + *
  1427.7 + * Copyright (c) 1996,1997
  1427.8 + * Silicon Graphics Computer Systems, Inc.
  1427.9 + *
 1427.10 + * Copyright (c) 1999 
 1427.11 + * Boris Fomitchev
 1427.12 + *
 1427.13 + * This material is provided "as is", with absolutely no warranty expressed
 1427.14 + * or implied. Any use is at your own risk.
 1427.15 + *
 1427.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1427.17 + * without fee, provided the above notices are retained on all copies.
 1427.18 + * Permission to modify the code and to distribute modified code is granted,
 1427.19 + * provided the above notices are retained, and a notice that the code was
 1427.20 + * modified is included with the above copyright notice.
 1427.21 + *
 1427.22 + */
 1427.23 +#ifndef _STLP_FSTREAM_C
 1427.24 +#define _STLP_FSTREAM_C
 1427.25 +
 1427.26 +# ifndef _STLP_INTERNAL_FSTREAM_H
 1427.27 +#  include <stl/_fstream.h>
 1427.28 +# endif
 1427.29 +
 1427.30 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1427.31 +
 1427.32 +_STLP_BEGIN_NAMESPACE
 1427.33 +
 1427.34 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1427.35 +// no wchar_t is supported for this mode
 1427.36 +# define __BF_int_type__ int
 1427.37 +# define __BF_pos_type__ streampos
 1427.38 +# define __BF_off_type__ streamoff
 1427.39 +# else
 1427.40 +# define __BF_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::int_type
 1427.41 +# define __BF_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::pos_type
 1427.42 +# define __BF_off_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::off_type
 1427.43 +# endif
 1427.44 +
 1427.45 +
 1427.46 +//----------------------------------------------------------------------
 1427.47 +// Public basic_filebuf<> member functions
 1427.48 +
 1427.49 +template <class _CharT, class _Traits>
 1427.50 +basic_filebuf<_CharT, _Traits>::basic_filebuf()
 1427.51 +     :  basic_streambuf<_CharT, _Traits>(), _M_base(),
 1427.52 +    _M_constant_width(false), _M_always_noconv(false),
 1427.53 +    _M_int_buf_dynamic(false),
 1427.54 +    _M_in_input_mode(false), _M_in_output_mode(false),
 1427.55 +    _M_in_error_mode(false), _M_in_putback_mode(false),
 1427.56 +    _M_int_buf(0), _M_int_buf_EOS(0),
 1427.57 +    _M_ext_buf(0), _M_ext_buf_EOS(0),
 1427.58 +    _M_ext_buf_converted(0), _M_ext_buf_end(0),
 1427.59 +    _M_state(_STLP_DEFAULT_CONSTRUCTED(_State_type)),
 1427.60 +    _M_end_state(_STLP_DEFAULT_CONSTRUCTED(_State_type)),
 1427.61 +    _M_mmap_base(0), _M_mmap_len(0),
 1427.62 +    _M_saved_eback(0), _M_saved_gptr(0), _M_saved_egptr(0),
 1427.63 +    _M_codecvt(0),
 1427.64 +    _M_width(1), _M_max_width(1)
 1427.65 +{
 1427.66 +  this->_M_setup_codecvt(locale());
 1427.67 +}
 1427.68 +
 1427.69 +template <class _CharT, class _Traits>
 1427.70 +basic_filebuf<_CharT, _Traits>::~basic_filebuf() {
 1427.71 +  this->close();
 1427.72 +  _M_deallocate_buffers();
 1427.73 +}
 1427.74 +
 1427.75 +
 1427.76 +template <class _CharT, class _Traits>
 1427.77 +_STLP_TYPENAME_ON_RETURN_TYPE basic_filebuf<_CharT, _Traits>::int_type 
 1427.78 +basic_filebuf<_CharT, _Traits>::underflow() 
 1427.79 +{
 1427.80 +  return _Underflow<_CharT, _Traits>::_M_doit(this);
 1427.81 +}
 1427.82 +
 1427.83 +template <class _CharT, class _Traits>
 1427.84 +basic_filebuf<_CharT, _Traits>* 
 1427.85 +basic_filebuf<_CharT, _Traits>::close()
 1427.86 +{
 1427.87 +  bool __ok = this->is_open();
 1427.88 +
 1427.89 +  if (_M_in_output_mode) {
 1427.90 +    __ok = __ok && !_Traits::eq_int_type(this->overflow(traits_type::eof()),
 1427.91 +                                         traits_type::eof());
 1427.92 +    __ok == __ok && this->_M_unshift();
 1427.93 +  }
 1427.94 +  else if (_M_in_input_mode)
 1427.95 +      this->_M_exit_input_mode();
 1427.96 +
 1427.97 +  // Note order of arguments.  We close the file even if __ok is false.
 1427.98 +  __ok = _M_base._M_close() && __ok;
 1427.99 +
1427.100 +  // Restore the initial state, except that we don't deallocate the buffer
1427.101 +  // or mess with the cached codecvt information.
1427.102 +  _M_state = _M_end_state = _State_type();
1427.103 +  _M_ext_buf_converted = _M_ext_buf_end = 0;
1427.104 +
1427.105 +  _M_mmap_base = 0;
1427.106 +  _M_mmap_len = 0;
1427.107 +
1427.108 +#ifdef __SYMBIAN32__
1427.109 +  if (__ok) {
1427.110 +#endif // __SYMBIAN32__
1427.111 +  this->setg(0, 0, 0);
1427.112 +  this->setp(0, 0);
1427.113 +#ifdef __SYMBIAN32__  
1427.114 +  }
1427.115 +#endif // __SYMBIAN32__
1427.116 +
1427.117 +  _M_saved_eback = _M_saved_gptr = _M_saved_egptr = 0;
1427.118 +
1427.119 +  _M_in_input_mode = _M_in_output_mode = _M_in_error_mode = _M_in_putback_mode
1427.120 +    = false;
1427.121 +
1427.122 +  return __ok ? this : 0;
1427.123 +}
1427.124 +
1427.125 +// This member function is called whenever we exit input mode.
1427.126 +// It unmaps the memory-mapped file, if any, and sets
1427.127 +// _M_in_input_mode to false.  
1427.128 +template <class _CharT, class _Traits>
1427.129 +void basic_filebuf<_CharT, _Traits>::_M_exit_input_mode()
1427.130 +{
1427.131 +   if (_M_mmap_base != 0)
1427.132 +     _M_base._M_unmap(_M_mmap_base, _M_mmap_len); 
1427.133 +   _M_in_input_mode = false;
1427.134 +   _M_mmap_base = 0;
1427.135 +}
1427.136 +
1427.137 +
1427.138 +//----------------------------------------------------------------------
1427.139 +// basic_filebuf<> overridden protected virtual member functions
1427.140 +
1427.141 +template <class _CharT, class _Traits>
1427.142 +streamsize basic_filebuf<_CharT, _Traits>::showmanyc()
1427.143 +{
1427.144 +  // Is there any possibility that reads can succeed?
1427.145 +#ifdef __SYMBIAN32__
1427.146 +  if (!this->is_open() || !(_M_base.__o_mode() & (int)ios_base::in) || _M_in_error_mode)
1427.147 +#else
1427.148 +  if (!this->is_open() || _M_in_output_mode || _M_in_error_mode)
1427.149 +#endif
1427.150 +    return -1;
1427.151 +
1427.152 +  else if (_M_in_putback_mode)
1427.153 +    return this->egptr() - this->gptr();
1427.154 +
1427.155 +  else if (_M_constant_width) {
1427.156 +    streamoff __pos  = _M_base._M_seek(0, ios_base::cur);
1427.157 +    streamoff __size = _M_base._M_file_size();
1427.158 +#ifdef __SYMBIAN32__
1427.159 +    if(__size == 0)
1427.160 +        return 0;
1427.161 +#endif
1427.162 +    return __pos >= 0 && __size > __pos ? __size - __pos : -1;
1427.163 +  }
1427.164 +
1427.165 +  else 
1427.166 +    return 0;
1427.167 +}
1427.168 +
1427.169 +
1427.170 +// Make a putback position available, if necessary, by switching to a 
1427.171 +// special internal buffer used only for putback.  The buffer is
1427.172 +// [_M_pback_buf, _M_pback_buf + _S_pback_buf_size), but the base
1427.173 +// class only sees a piece of it at a time.  (We want to make sure
1427.174 +// that we don't try to read a character that hasn't been initialized.)
1427.175 +// The end of the putback buffer is always _M_pback_buf + _S_pback_buf_size,
1427.176 +// but the beginning is usually not _M_pback_buf.
1427.177 +template <class _CharT, class _Traits>
1427.178 +__BF_int_type__ 
1427.179 +basic_filebuf<_CharT, _Traits>::pbackfail(int_type __c)
1427.180 +{
1427.181 +  const int_type __eof = traits_type::eof();
1427.182 +
1427.183 +  // If we aren't already in input mode, pushback is impossible.
1427.184 +  if (!_M_in_input_mode)
1427.185 +    return __eof;
1427.186 +
1427.187 +  // We can use the ordinary get buffer if there's enough space, and
1427.188 +  // if it's a buffer that we're allowed to write to.
1427.189 +  if (this->gptr() != this->eback() &&
1427.190 +      (traits_type::eq_int_type(__c, __eof) ||
1427.191 +       traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1]) ||
1427.192 +       !_M_mmap_base)) {
1427.193 +    this->gbump(-1);
1427.194 +    if (traits_type::eq_int_type(__c, __eof) ||
1427.195 +        traits_type::eq(traits_type::to_char_type(__c), *this->gptr()))
1427.196 +      return traits_type::to_int_type(*this->gptr());
1427.197 +  }
1427.198 +  else if (!traits_type::eq_int_type(__c, __eof)) {
1427.199 +    // Are we in the putback buffer already?
1427.200 +    _CharT* __pback_end = _M_pback_buf + __STATIC_CAST(int,_S_pback_buf_size);
1427.201 +    if (_M_in_putback_mode) {
1427.202 +      // Do we have more room in the putback buffer?
1427.203 +      if (this->eback() != _M_pback_buf) 
1427.204 +        this->setg(this->egptr() - 1, this->egptr() - 1, __pback_end);
1427.205 +      else
1427.206 +        return __eof;           // No more room in the buffer, so fail.
1427.207 +    }
1427.208 +    else {                      // We're not yet in the putback buffer.
1427.209 +      _M_saved_eback = this->eback();
1427.210 +      _M_saved_gptr  = this->gptr();
1427.211 +      _M_saved_egptr = this->egptr();
1427.212 +      this->setg(__pback_end - 1, __pback_end - 1, __pback_end);
1427.213 +      _M_in_putback_mode = true;
1427.214 +    }
1427.215 +  }
1427.216 +  else
1427.217 +  {
1427.218 +#ifdef __SYMBIAN32__
1427.219 +    if (traits_type::eq_int_type(__c, __eof) )
1427.220 +    {
1427.221 +        if(_M_in_putback_mode)
1427.222 +        {
1427.223 +            _M_in_putback_mode = false;
1427.224 +            // we are at putback mode
1427.225 +            if(_M_saved_eback != _M_saved_gptr)
1427.226 +            {
1427.227 +                this->setg(_M_saved_eback, _M_saved_gptr - 1, _M_saved_egptr);
1427.228 +                return *this->gptr();
1427.229 +            }
1427.230 +            else
1427.231 +                this->setg(_M_saved_eback, _M_saved_gptr, _M_saved_egptr);
1427.232 +         
1427.233 +         }
1427.234 +         else
1427.235 +         {
1427.236 +            if(!this->eback())
1427.237 +            {
1427.238 +                streamoff __pos  = _M_base._M_seek(0, ios_base::cur);
1427.239 +                streamoff __size = _M_base._M_file_size();
1427.240 +                if( __size > 0 && __pos > 0 && __pos == __size)
1427.241 +                    __pos  = _M_base._M_seek(__pos - 1, ios_base::beg);
1427.242 +                this->underflow();
1427.243 +                this->setg(this->eback(), this->gptr(), this->egptr());
1427.244 +                return *this->gptr();
1427.245 +            }
1427.246 +            else
1427.247 +            {
1427.248 +                this->setg(this->eback(), this->gptr() - 1, this->egptr());
1427.249 +                return *this->gptr();
1427.250 +            }
1427.251 +         }
1427.252 +    }
1427.253 +#endif
1427.254 +    return __eof;
1427.255 +  }
1427.256 +  // We have made a putback position available.  Assign to it, and return.
1427.257 +  *this->gptr() = traits_type::to_char_type(__c);
1427.258 +  return __c;
1427.259 +}
1427.260 +
1427.261 +// This member function flushes the put area, and also outputs the
1427.262 +// character __c (unless __c is eof).  Invariant: we always leave room
1427.263 +// in the internal buffer for one character more than the base class knows
1427.264 +// about.  We see the internal buffer as [_M_int_buf, _M_int_buf_EOS), but
1427.265 +// the base class only sees [_M_int_buf, _M_int_buf_EOS - 1).
1427.266 +template <class _CharT, class _Traits>
1427.267 +__BF_int_type__
1427.268 +basic_filebuf<_CharT, _Traits>::overflow(int_type __c)
1427.269 +{
1427.270 +  // Switch to output mode, if necessary.
1427.271 +  bool putflag = false;
1427.272 +  if (!_M_in_output_mode)
1427.273 +  {
1427.274 +#ifdef __SYMBIAN32__
1427.275 +    if(this->_M_int_buf)
1427.276 +        putflag = true;
1427.277 +#endif
1427.278 +    if (!_M_switch_to_output_mode())
1427.279 +      return traits_type::eof();
1427.280 +  }
1427.281 +  _CharT* __ibegin = this->_M_int_buf;
1427.282 +  _CharT* __iend   = this->pptr();
1427.283 +  this->setp(_M_int_buf, _M_int_buf_EOS - 1);
1427.284 +
1427.285 +  // Put __c at the end of the internal buffer.
1427.286 +  if (!traits_type::eq_int_type(__c, traits_type::eof()))
1427.287 +    *__iend++ = __c;
1427.288 +#ifdef __SYMBIAN32__
1427.289 +  int current_pos = this->gptr() - this->eback();
1427.290 +  streamoff __size = _M_base._M_file_size();
1427.291 +  if(current_pos > 0 && current_pos < __size && _M_base.__is_open())
1427.292 +    _M_base._M_seek(current_pos, ios_base::beg);
1427.293 +#endif
1427.294 +
1427.295 +  // For variable-width encodings, output may take more than one pass.
1427.296 +  while (__ibegin != __iend) {
1427.297 +    const _CharT* __inext = __ibegin;
1427.298 +    char* __enext         = _M_ext_buf;
1427.299 +    typename _Codecvt::result __status
1427.300 +      = _M_codecvt->out(_M_state, __ibegin, __iend, __inext,
1427.301 +                                  _M_ext_buf, _M_ext_buf_EOS, __enext);
1427.302 +    if (__status == _Codecvt::noconv)
1427.303 +#ifdef __SYMBIAN32__    
1427.304 +    {
1427.305 +      if(_Noconv_output<_Traits>::_M_doit(this, __ibegin, __iend))
1427.306 +      {
1427.307 +        if (this->eback())
1427.308 +            {
1427.309 +            *(this->gptr()) = __c;
1427.310 +            this->setg(this->eback(), this->gptr() + 1, this->egptr());
1427.311 +            }
1427.312 +        if(putflag && this->pptr()  < this->epptr())
1427.313 +            this->setp(this->pptr() + 1, this->epptr());
1427.314 +        return traits_type::not_eof(__c);
1427.315 +      }
1427.316 +      else
1427.317 +        return _M_output_error();
1427.318 +    }
1427.319 +#else
1427.320 +      return _Noconv_output<_Traits>::_M_doit(this, __ibegin, __iend)
1427.321 +        ? traits_type::not_eof(__c)
1427.322 +        : _M_output_error();
1427.323 +#endif
1427.324 +    // For a constant-width encoding we know that the external buffer
1427.325 +    // is large enough, so failure to consume the entire internal buffer
1427.326 +    // or to produce the correct number of external characters, is an error.
1427.327 +    // For a variable-width encoding, however, we require only that we 
1427.328 +    // consume at least one internal character
1427.329 +    else if (__status != _Codecvt::error && 
1427.330 +             ((__inext == __iend && (__enext - _M_ext_buf == 
1427.331 +                                     _M_width * (__iend - __ibegin))) ||
1427.332 +              (!_M_constant_width && __inext != __ibegin))) {
1427.333 +        // We successfully converted part or all of the internal buffer.
1427.334 +      ptrdiff_t __n = __enext - _M_ext_buf;
1427.335 +      if (_M_write(_M_ext_buf, __n))
1427.336 +        __ibegin += __inext - __ibegin;
1427.337 +      else
1427.338 +        return _M_output_error();
1427.339 +    }
1427.340 +    else
1427.341 +      return _M_output_error();
1427.342 +  }
1427.343 +
1427.344 +  return traits_type::not_eof(__c);
1427.345 +}
1427.346 +
1427.347 +// This member function must be called before any I/O has been
1427.348 +// performed on the stream, otherwise it has no effect.
1427.349 +//
1427.350 +// __buf == 0 && __n == 0 means to make ths stream unbuffered.
1427.351 +// __buf != 0 && __n > 0 means to use __buf as the stream's internal
1427.352 +// buffer, rather than the buffer that would otherwise be allocated
1427.353 +// automatically.  __buf must be a pointer to an array of _CharT whose
1427.354 +// size is at least __n.
1427.355 +template <class _CharT, class _Traits>
1427.356 +basic_streambuf<_CharT, _Traits>*
1427.357 +basic_filebuf<_CharT, _Traits>::setbuf(_CharT* __buf, streamsize __n)
1427.358 +{
1427.359 +  if (!_M_in_input_mode &&! _M_in_output_mode && !_M_in_error_mode &&
1427.360 +      _M_int_buf == 0) {
1427.361 +    if (__buf == 0 && __n == 0)
1427.362 +      _M_allocate_buffers(0, 1);
1427.363 +    else if (__buf != 0 && __n > 0)
1427.364 +      _M_allocate_buffers(__buf, __n);
1427.365 +  }
1427.366 +  return this;
1427.367 +}
1427.368 +
1427.369 +template <class _CharT, class _Traits>
1427.370 +__BF_pos_type__
1427.371 +basic_filebuf<_CharT, _Traits>::seekoff(off_type __off,
1427.372 +                                        ios_base::seekdir __whence,
1427.373 +                                        ios_base::openmode /* dummy */)
1427.374 +{
1427.375 +  if (this->is_open() &&
1427.376 +      (__off == 0 || (_M_constant_width && this->_M_base._M_in_binary_mode()))) {
1427.377 +
1427.378 +    if (!_M_seek_init(__off != 0 || __whence != ios_base::cur))
1427.379 +      return pos_type(-1);
1427.380 +
1427.381 +    // Seek to beginning or end, regardless of whether we're in input mode.
1427.382 +    if (__whence == ios_base::beg || __whence == ios_base::end)
1427.383 +      return _M_seek_return(_M_base._M_seek(_M_width * __off, __whence),
1427.384 +                            _State_type());
1427.385 +
1427.386 +    // Seek relative to current position.  Complicated if we're in input mode.
1427.387 +    else if (__whence == ios_base::cur) {
1427.388 +
1427.389 +      if (!_M_in_input_mode)
1427.390 +        return _M_seek_return(_M_base._M_seek(_M_width * __off, __whence),
1427.391 +                              _State_type());
1427.392 +      else if (_M_mmap_base != 0) {
1427.393 +        // __off is relative to gptr().  We need to do a bit of arithmetic
1427.394 +        // to get an offset relative to the external file pointer.
1427.395 +        streamoff __adjust = _M_mmap_len - (this->gptr() - (_CharT*) _M_mmap_base);
1427.396 +
1427.397 +        // if __off == 0, we do not need to exit input mode and to shift file pointer
1427.398 +        if (__off == 0) {
1427.399 +          return pos_type(_M_base._M_seek(0, ios_base::cur) - __adjust);
1427.400 +        }
1427.401 +        else
1427.402 +#ifdef __SYMBIAN32__       
1427.403 +        return _M_seek_return(_M_base._M_seek(__off, ios_base::cur), _State_type());
1427.404 +#else      
1427.405 +          return _M_seek_return(_M_base._M_seek(__off - __adjust, ios_base::cur), _State_type());
1427.406 +#endif
1427.407 +      }
1427.408 +      else if (_M_constant_width) { // Get or set the position.  
1427.409 +
1427.410 +        streamoff __iadj = _M_width * (this->gptr() - this->eback());
1427.411 +        
1427.412 +        // Compensate for offset relative to gptr versus offset relative
1427.413 +        // to external pointer.  For a text-oriented stream, where the 
1427.414 +        // compensation is more than just pointer arithmetic, we may get
1427.415 +        // but not set the current position.
1427.416 +        
1427.417 +        if (__iadj <= _M_ext_buf_end - _M_ext_buf) {
1427.418 +          
1427.419 +          streamoff __eadj =  _M_base._M_get_offset(_M_ext_buf + __iadj, _M_ext_buf_end);
1427.420 +
1427.421 +          if (__off == 0) {
1427.422 +            return pos_type(_M_base._M_seek(0, ios_base::cur) - __eadj);
1427.423 +          }  else {
1427.424 +            return _M_seek_return(_M_base._M_seek(__off - __eadj, ios_base::cur), _State_type());
1427.425 +          }
1427.426 +        }
1427.427 +        else
1427.428 +          return pos_type(-1);
1427.429 +      }
1427.430 +      else {                    // Get the position.  Encoding is var width.
1427.431 +        // Get position in internal buffer.
1427.432 +        ptrdiff_t __ipos = this->gptr() - this->eback();
1427.433 +        
1427.434 +        // Get corresponding position in external buffer.
1427.435 +        _State_type __state = _M_state;
1427.436 +        int __epos = _M_codecvt->length(__state, _M_ext_buf, _M_ext_buf_end,
1427.437 +                                        __ipos);
1427.438 +
1427.439 +        // Sanity check (expensive): make sure __epos is the right answer.
1427.440 +        _State_type __tmp_state = _M_state;
1427.441 +        _Filebuf_Tmp_Buf<_CharT> __buf(__ipos);
1427.442 +        _CharT* __ibegin = __buf._M_ptr;
1427.443 +        _CharT* __inext  = __ibegin;
1427.444 +
1427.445 +        const char* __dummy;
1427.446 +        typename _Codecvt::result __status
1427.447 +          = _M_codecvt->in(__tmp_state,
1427.448 +                           _M_ext_buf, _M_ext_buf + __epos, __dummy,
1427.449 +                           __ibegin, __ibegin + __ipos, __inext);
1427.450 +        if (__status != _Codecvt::error &&
1427.451 +            (__status == _Codecvt::noconv ||
1427.452 +             (__inext == __ibegin + __ipos &&
1427.453 +              equal(this->gptr(), this->eback(), __ibegin,
1427.454 +                    _Eq_traits<traits_type>())))) {
1427.455 +          // Get the current position (at the end of the external buffer),
1427.456 +          // then adjust it.  Again, it might be a text-oriented stream.
1427.457 +          streamoff __cur = _M_base._M_seek(0, ios_base::cur);
1427.458 +          streamoff __adj =
1427.459 +            _M_base._M_get_offset(_M_ext_buf, _M_ext_buf + __epos) -
1427.460 +            _M_base._M_get_offset(_M_ext_buf, _M_ext_buf_end);
1427.461 +          if (__cur != -1 && __cur + __adj >= 0)
1427.462 +            return _M_seek_return(__cur + __adj, __state);
1427.463 +          else
1427.464 +            return pos_type(-1);
1427.465 +        }
1427.466 +        else                    // We failed the sanity check.
1427.467 +          return pos_type(-1);
1427.468 +      }
1427.469 +    }
1427.470 +    else                        // Unrecognized value for __whence.
1427.471 +      return pos_type(-1);
1427.472 +  }
1427.473 +  else
1427.474 +    return pos_type(-1);
1427.475 +}
1427.476 +
1427.477 +
1427.478 +template <class _CharT, class _Traits>
1427.479 +__BF_pos_type__
1427.480 +basic_filebuf<_CharT, _Traits>::seekpos(pos_type __pos,
1427.481 +                                        ios_base::openmode /* dummy */)
1427.482 +{
1427.483 +  if (this->is_open()) {
1427.484 +    if (!_M_seek_init(true))
1427.485 +      return pos_type(-1);
1427.486 +
1427.487 +    streamoff __off = off_type(__pos);
1427.488 +    if (__off != -1 && _M_base._M_seek(__off, ios_base::beg) != -1) {
1427.489 +      _M_state = __pos.state();
1427.490 +      return _M_seek_return(__off, __pos.state());
1427.491 +    }
1427.492 +    else
1427.493 +      return pos_type(-1);
1427.494 +  }
1427.495 +  else
1427.496 +    return pos_type(-1);
1427.497 +}
1427.498 +
1427.499 +
1427.500 +template <class _CharT, class _Traits>
1427.501 +int basic_filebuf<_CharT, _Traits>::sync()
1427.502 +{
1427.503 +  if (_M_in_output_mode)
1427.504 +    return traits_type::eq_int_type(this->overflow(traits_type::eof()),
1427.505 +                                    traits_type::eof())
1427.506 +      ? -1
1427.507 +      : 0;
1427.508 +  else
1427.509 +    return 0;
1427.510 +}
1427.511 +
1427.512 +
1427.513 +// Change the filebuf's locale.  This member function has no effect
1427.514 +// unless it is called before any I/O is performed on the stream.
1427.515 +template <class _CharT, class _Traits>
1427.516 +void basic_filebuf<_CharT, _Traits>::imbue(const locale& __loc)
1427.517 +{
1427.518 +  if (!_M_in_input_mode &&! _M_in_output_mode && !_M_in_error_mode) {
1427.519 +    this->_M_setup_codecvt(__loc);
1427.520 +  }
1427.521 +}
1427.522 +
1427.523 +//----------------------------------------------------------------------
1427.524 +// basic_filebuf<> helper functions.
1427.525 +
1427.526 +//----------------------------------------
1427.527 +// Helper functions for switching between modes.
1427.528 +
1427.529 +// This member function is called if we're performing the first I/O
1427.530 +// operation on a filebuf, or if we're performing an input operation 
1427.531 +// immediately after a seek.
1427.532 +template <class _CharT, class _Traits>
1427.533 +bool basic_filebuf<_CharT, _Traits>::_M_switch_to_input_mode()
1427.534 +{
1427.535 +
1427.536 +  if (this->is_open() && (((int)_M_base.__o_mode() & (int)ios_base::in) !=0)
1427.537 +#ifndef __SYMBIAN32__
1427.538 +      && (_M_in_output_mode == 0) 
1427.539 +#endif
1427.540 +      && (_M_in_error_mode == 0)) {
1427.541 +#ifdef __STLP_NO_WRITE_SIDE_BUFFERING__
1427.542 +    // If file has been opened in input|output mode
1427.543 +    if ((((int)_M_base.__o_mode() & (int)ios_base::out) !=0) 
1427.544 +#ifndef __SYMBIAN32__
1427.545 +        && sync()
1427.546 +#endif
1427.547 +        && !_M_int_buf && !_M_allocate_buffers(0, 1))
1427.548 +#else
1427.549 +    if (!_M_int_buf && !_M_allocate_buffers())
1427.550 +#endif
1427.551 +      return false;
1427.552 +
1427.553 +    _M_ext_buf_converted = _M_ext_buf;
1427.554 +    _M_ext_buf_end       = _M_ext_buf;
1427.555 +
1427.556 +    _M_end_state    = _M_state;
1427.557 +
1427.558 +    _M_in_input_mode = true;
1427.559 +    return true;
1427.560 +  }
1427.561 +  else
1427.562 +
1427.563 +    return false;
1427.564 +}
1427.565 +
1427.566 +
1427.567 +// This member function is called if we're performing the first I/O
1427.568 +// operation on a filebuf, or if we're performing an output operation 
1427.569 +// immediately after a seek.
1427.570 +template <class _CharT, class _Traits>
1427.571 +bool basic_filebuf<_CharT, _Traits>::_M_switch_to_output_mode()
1427.572 +{
1427.573 +  if (this->is_open() && (_M_base.__o_mode() & (int)ios_base::out) &&
1427.574 +#ifdef __SYMBIAN32__  
1427.575 +      _M_in_error_mode == 0) {
1427.576 +#else      
1427.577 +      _M_in_input_mode == 0 && _M_in_error_mode == 0) {
1427.578 +#endif //__SYMBIAN32__      
1427.579 +
1427.580 +#ifdef __STLP_NO_WRITE_SIDE_BUFFERING__
1427.581 +    if (!_M_int_buf && !_M_allocate_buffers(0, 1))
1427.582 +#else
1427.583 +    if (!_M_int_buf && !_M_allocate_buffers())
1427.584 +#endif
1427.585 +      return false;
1427.586 +
1427.587 +    // In append mode, every write does an implicit seek to the end
1427.588 +    // of the file.  Whenever leaving output mode, the end of file
1427.589 +    // get put in the initial shift state.
1427.590 +    if (_M_base.__o_mode() & ios_base::app)
1427.591 +      _M_state = _State_type();
1427.592 +
1427.593 +    this->setp(_M_int_buf, _M_int_buf_EOS - 1);
1427.594 +    _M_in_output_mode = true;
1427.595 +
1427.596 +    return true;
1427.597 +  }
1427.598 +  else
1427.599 +    return false;
1427.600 +}
1427.601 +
1427.602 +
1427.603 +//----------------------------------------
1427.604 +// Helper functions for input
1427.605 +
1427.606 +// This member function is called if there is an error during input.
1427.607 +// It puts the filebuf in error mode, clear the get area buffer, and
1427.608 +// returns eof.
1427.609 +// returns eof.  Error mode is sticky; it is cleared only by close or
1427.610 +// seek.
1427.611 +
1427.612 +template <class _CharT, class _Traits>
1427.613 +__BF_int_type__
1427.614 +basic_filebuf<_CharT, _Traits>::_M_input_error()
1427.615 +{
1427.616 +   this->_M_exit_input_mode();   
1427.617 +  _M_in_output_mode = false;
1427.618 +  _M_in_error_mode = true;
1427.619 +  this->setg(0, 0, 0);
1427.620 +  return traits_type::eof();
1427.621 +}
1427.622 +
1427.623 +template <class _CharT, class _Traits>
1427.624 +__BF_int_type__ 
1427.625 +basic_filebuf<_CharT, _Traits>::_M_underflow_aux() 
1427.626 +{
1427.627 +  // We have the state and file position from the end of the internal
1427.628 +  // buffer.  This round, they become the beginning of the internal buffer.
1427.629 +  _M_state    = _M_end_state;
1427.630 +
1427.631 +  // Fill the external buffer.  Start with any leftover characters that
1427.632 +  // didn't get converted last time.
1427.633 +  if (_M_ext_buf_end > _M_ext_buf_converted)
1427.634 +
1427.635 +    _M_ext_buf_end = copy(_M_ext_buf_converted, _M_ext_buf_end, _M_ext_buf);
1427.636 +    // boris : copy_backward did not work
1427.637 +    //_M_ext_buf_end = copy_backward(_M_ext_buf_converted, _M_ext_buf_end, 
1427.638 +    //_M_ext_buf+ (_M_ext_buf_end - _M_ext_buf_converted));
1427.639 +  else
1427.640 +    {
1427.641 +#ifdef __SYMBIAN32__
1427.642 +     if(_M_ext_buf == NULL)
1427.643 +    _M_allocate_buffers(0, MMAP_CHUNK);
1427.644 +#endif
1427.645 +    _M_ext_buf_end = _M_ext_buf;
1427.646 +    }
1427.647 +  // Now fill the external buffer with characters from the file.  This is
1427.648 +  // a loop because occasonally we don't get enough external characters
1427.649 +  // to make progress.
1427.650 +  while (true) {
1427.651 +    ptrdiff_t __n = _M_base._M_read(_M_ext_buf_end, _M_ext_buf_EOS - _M_ext_buf_end);
1427.652 + 
1427.653 +    // Don't enter error mode for a failed read.  Error mode is sticky,
1427.654 +    // and we might succeed if we try again.
1427.655 +#ifdef __SYMBIAN32__    //plum hall bug 577
1427.656 +    int nn = (char*)_M_ext_buf_end-(char*)_M_ext_buf; //number of chars unconverted last time
1427.657 +    if ( (__n <= 0) && ( nn<=0 ) )
1427.658 +#else
1427.659 +	if (__n <= 0)
1427.660 +#endif    
1427.661 +      return traits_type::eof();
1427.662 +
1427.663 +    // Convert the external buffer to internal characters.  
1427.664 +    _M_ext_buf_end += __n;
1427.665 +    const char*   __enext;
1427.666 +    _CharT* __inext;
1427.667 +
1427.668 +    typename _Codecvt::result __status
1427.669 +      = _M_codecvt->in(_M_end_state,
1427.670 +                       _M_ext_buf, _M_ext_buf_end, __enext,
1427.671 +                       _M_int_buf, _M_int_buf_EOS, __inext);
1427.672 +
1427.673 +    // Error conditions: (1) Return value of error.  (2) Producing internal
1427.674 +    // characters without consuming external characters.  (3) In fixed-width
1427.675 +    // encodings, producing an internal sequence whose length is inconsistent
1427.676 +    // with that of the internal sequence.  (4) Failure to produce any 
1427.677 +    // characters if we have enough characters in the external buffer, where
1427.678 +    // "enough" means the largest possible width of a single character.
1427.679 +    if (__status == _Codecvt::noconv)
1427.680 +      return _Noconv_input<_Traits>::_M_doit(this);
1427.681 +
1427.682 +    else if (__status == _Codecvt::error ||
1427.683 +             (__inext != _M_int_buf && __enext == _M_ext_buf) ||
1427.684 +             (_M_constant_width &&
1427.685 +              //         __inext - _M_int_buf != _M_width * (__enext - _M_ext_buf)) ||
1427.686 +              (__inext - _M_int_buf) *  _M_width != (__enext - _M_ext_buf)) ||
1427.687 +             (__inext == _M_int_buf && __enext - _M_ext_buf >= _M_max_width))
1427.688 +      return _M_input_error();
1427.689 +    
1427.690 +    else if (__inext != _M_int_buf) {
1427.691 +      _M_ext_buf_converted = _M_ext_buf + (__enext - _M_ext_buf);
1427.692 +      this->setg(_M_int_buf, _M_int_buf, __inext);
1427.693 +      return traits_type::to_int_type(*_M_int_buf);
1427.694 +    }
1427.695 +    // We need to go around the loop again to get more external characters.
1427.696 +  } 
1427.697 +}
1427.698 +
1427.699 +//----------------------------------------
1427.700 +// Helper functions for output
1427.701 +
1427.702 +// This member function is called if there is an error during output.
1427.703 +// It puts the filebuf in error mode, clear the put area buffer, and
1427.704 +// returns eof.  Error mode is sticky; it is cleared only by close or
1427.705 +// seek.
1427.706 +template <class _CharT, class _Traits>
1427.707 +__BF_int_type__
1427.708 +basic_filebuf<_CharT, _Traits>::_M_output_error()
1427.709 +{
1427.710 +  _M_in_output_mode = false;
1427.711 +  _M_in_input_mode = false;
1427.712 +  _M_in_error_mode = true;
1427.713 +  this->setp(0, 0);
1427.714 +  return traits_type::eof();
1427.715 +}
1427.716 +
1427.717 +
1427.718 +// Write whatever sequence of characters is necessary to get back to
1427.719 +// the initial shift state.  This function overwrites the external
1427.720 +// buffer, changes the external file position, and changes the state.
1427.721 +// Precondition: the internal buffer is empty.
1427.722 +template <class _CharT, class _Traits>
1427.723 +bool basic_filebuf<_CharT, _Traits>::_M_unshift()
1427.724 +{
1427.725 +  if (_M_in_output_mode && !_M_constant_width) {
1427.726 +    typename _Codecvt::result __status;
1427.727 +    do {
1427.728 +      char* __enext = _M_ext_buf;
1427.729 +      __status = _M_codecvt->unshift(_M_state,
1427.730 +                                     _M_ext_buf, _M_ext_buf_EOS, __enext);
1427.731 +      if (__status == _Codecvt::noconv ||
1427.732 +          (__enext == _M_ext_buf && __status == _Codecvt::ok))
1427.733 +        return true;
1427.734 +      else if (__status == _Codecvt::error)
1427.735 +        return false;
1427.736 +      else if (!_M_write(_M_ext_buf, __enext - _M_ext_buf))
1427.737 +        return false;
1427.738 +    } while(__status == _Codecvt::partial);
1427.739 +  }
1427.740 +
1427.741 +  return true;
1427.742 +}
1427.743 +
1427.744 +
1427.745 +//----------------------------------------
1427.746 +// Helper functions for buffer allocation and deallocation
1427.747 +
1427.748 +// This member function is called when we're initializing a filebuf's
1427.749 +// internal and external buffers.  The argument is the size of the
1427.750 +// internal buffer; the external buffer is sized using the character
1427.751 +// width in the current encoding.  Preconditions: the buffers are currently
1427.752 +// null.  __n >= 1.  __buf is either a null pointer or a pointer to an 
1427.753 +// array show size is at least __n.
1427.754 +
1427.755 +// We need __n >= 1 for two different reasons.  For input, the base
1427.756 +// class always needs a buffer because of the sementics of underflow().
1427.757 +// For output, we want to have an internal buffer that's larger by one
1427.758 +// element than the buffer that the base class knows about.  (See 
1427.759 +// basic_filebuf<>::overflow() for the reason.)
1427.760 +template <class _CharT, class _Traits>
1427.761 +bool 
1427.762 +basic_filebuf<_CharT, _Traits>::_M_allocate_buffers(_CharT* __buf, streamsize __n)
1427.763 +{
1427.764 +
1427.765 +  if (__buf == 0) {
1427.766 +    _M_int_buf = __STATIC_CAST(_CharT*,malloc(__n * sizeof(_CharT)));
1427.767 +    if (! _M_int_buf)
1427.768 +      return false;
1427.769 +    _M_int_buf_dynamic = true;
1427.770 +  }
1427.771 +  else {
1427.772 +    _M_int_buf = __buf;
1427.773 +    _M_int_buf_dynamic = false;
1427.774 +  }
1427.775 +  
1427.776 +  size_t __ebufsiz = (max)(__n * (max)(_M_codecvt->encoding(), 1),
1427.777 +                      streamsize(_M_codecvt->max_length()));
1427.778 +
1427.779 +  _M_ext_buf = __STATIC_CAST(char*,malloc(__ebufsiz));
1427.780 +  if (!_M_ext_buf) {
1427.781 +    _M_deallocate_buffers();
1427.782 +    return false;
1427.783 +  }
1427.784 +
1427.785 +  _M_int_buf_EOS = _M_int_buf + __n;
1427.786 +  _M_ext_buf_EOS = _M_ext_buf + __ebufsiz;
1427.787 +  return true;
1427.788 +}
1427.789 +
1427.790 +// Abbreviation for the most common case.
1427.791 +template <class _CharT, class _Traits>
1427.792 +bool basic_filebuf<_CharT, _Traits>::_M_allocate_buffers()
1427.793 +{
1427.794 +  // Choose a buffer that's at least 4096 characters long and that's a
1427.795 +  // multiple of the page size.
1427.796 +  streamsize __default_bufsiz =
1427.797 +    ((_M_base.__page_size() + 4095UL) / _M_base.__page_size()) * _M_base.__page_size();
1427.798 +  return _M_allocate_buffers(0, __default_bufsiz);
1427.799 +}
1427.800 +
1427.801 +template <class _CharT, class _Traits>
1427.802 +void basic_filebuf<_CharT, _Traits>::_M_deallocate_buffers()
1427.803 +{
1427.804 +  if (_M_int_buf_dynamic)
1427.805 +    free(_M_int_buf);
1427.806 +  free(_M_ext_buf);
1427.807 +  _M_int_buf     = 0;
1427.808 +  _M_int_buf_EOS = 0;
1427.809 +  _M_ext_buf     = 0;
1427.810 +  _M_ext_buf_EOS = 0;
1427.811 +}
1427.812 +
1427.813 +
1427.814 +//----------------------------------------
1427.815 +// Helper functiosn for seek and imbue
1427.816 +
1427.817 +template <class _CharT, class _Traits>
1427.818 +bool basic_filebuf<_CharT, _Traits>::_M_seek_init(bool __do_unshift) {
1427.819 +  // If we're in error mode, leave it.
1427.820 +   _M_in_error_mode = false;
1427.821 +   
1427.822 +  // Flush the output buffer if we're in output mode, and (conditionally)
1427.823 +  // emit an unshift sequence.
1427.824 +  if (_M_in_output_mode) {
1427.825 +    bool __ok = !traits_type::eq_int_type(this->overflow(traits_type::eof()),
1427.826 +                                          traits_type::eof());
1427.827 +    if (__do_unshift)
1427.828 +      __ok = __ok && this->_M_unshift();
1427.829 +    if (!__ok) {
1427.830 +      _M_in_output_mode = false;
1427.831 +      _M_in_error_mode = true;
1427.832 +      this->setp(0, 0);
1427.833 +      return false;
1427.834 +    }
1427.835 +  }
1427.836 +
1427.837 +  // Discard putback characters, if any.
1427.838 +  if (_M_in_input_mode && _M_in_putback_mode)
1427.839 +    _M_exit_putback_mode();
1427.840 +
1427.841 +  return true;
1427.842 +}
1427.843 +
1427.844 +
1427.845 +// Change the filebuf's locale.  This member function has no effect
1427.846 +// unless it is called before any I/O is performed on the stream.
1427.847 +template <class _CharT, class _Traits>
1427.848 +void basic_filebuf<_CharT, _Traits>::_M_setup_codecvt(const locale& __loc)
1427.849 +{
1427.850 +  _M_codecvt = &use_facet<_Codecvt>(__loc) ;
1427.851 +  int __encoding    = _M_codecvt->encoding();
1427.852 +
1427.853 +  _M_width          = (max)(__encoding, 1);
1427.854 +  _M_max_width      = _M_codecvt->max_length();
1427.855 +  _M_constant_width = __encoding > 0;
1427.856 +  _M_always_noconv  = _M_codecvt->always_noconv();
1427.857 +}
1427.858 +
1427.859 +
1427.860 +
1427.861 +template <class _CharT, class _Traits>
1427.862 +  _STLP_EXP_DECLSPEC basic_fstream<_CharT, _Traits>::basic_fstream()
1427.863 +    : basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() {
1427.864 +      this->init(&_M_buf);
1427.865 +  }
1427.866 +
1427.867 +
1427.868 +template <class _CharT, class _Traits>
1427.869 +  _STLP_EXP_DECLSPEC basic_fstream<_CharT, _Traits>::~basic_fstream(){}
1427.870 +  
1427.871 +#ifdef __SYMBIAN32__
1427.872 +template <class _CharT, class _Traits>
1427.873 +int basic_filebuf<_CharT, _Traits>::save_read_buffer ()
1427.874 +    {
1427.875 +    return _M_in_putback_mode ? _M_saved_egptr - _M_saved_gptr : 0;
1427.876 +    }
1427.877 +template <class _CharT, class _Traits>
1427.878 +void basic_filebuf<_CharT, _Traits>::_change_input_mode ()
1427.879 +    {
1427.880 +    _M_in_input_mode = 1;
1427.881 +    }
1427.882 +
1427.883 +#endif
1427.884 +
1427.885 +_STLP_END_NAMESPACE
1427.886 +
1427.887 +# undef __BF_int_type__
1427.888 +# undef __BF_pos_type__
1427.889 +# undef __BF_off_type__
1427.890 +
1427.891 +# endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1427.892 +
1427.893 +#endif /* _STLP_FSTREAM_C */
1427.894 +
  1428.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1428.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_fstream.h	Wed Mar 31 12:27:01 2010 +0100
  1428.3 @@ -0,0 +1,767 @@
  1428.4 +/*
  1428.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1428.6 + *
  1428.7 + * Copyright (c) 1999
  1428.8 + * Silicon Graphics Computer Systems, Inc.
  1428.9 + *
 1428.10 + * Copyright (c) 1999 
 1428.11 + * Boris Fomitchev
 1428.12 + *
 1428.13 + * This material is provided "as is", with absolutely no warranty expressed
 1428.14 + * or implied. Any use is at your own risk.
 1428.15 + *
 1428.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1428.17 + * without fee, provided the above notices are retained on all copies.
 1428.18 + * Permission to modify the code and to distribute modified code is granted,
 1428.19 + * provided the above notices are retained, and a notice that the code was
 1428.20 + * modified is included with the above copyright notice.
 1428.21 + *
 1428.22 + */ 
 1428.23 +// This header defines classes basic_filebuf, basic_ifstream,
 1428.24 +// basic_ofstream, and basic_fstream.  These classes represent
 1428.25 +// streambufs and streams whose sources or destinations are files.
 1428.26 +
 1428.27 +#ifndef _STLP_INTERNAL_FSTREAM_H
 1428.28 +#define _STLP_INTERNAL_FSTREAM_H
 1428.29 +
 1428.30 +#if defined(__sgi) && !defined(__GNUC__) && !defined(_STANDARD_C_PLUS_PLUS)
 1428.31 +#error This header file requires the -LANG:std option
 1428.32 +#endif
 1428.33 +
 1428.34 +#ifndef _STLP_INTERNAL_STREAMBUF
 1428.35 +# include <stl/_streambuf.h>
 1428.36 +#endif
 1428.37 +
 1428.38 +#ifndef _STLP_INTERNAL_ISTREAM_H
 1428.39 +#include <stl/_istream.h>
 1428.40 +#endif
 1428.41 +
 1428.42 +#ifndef _STLP_INTERNAL_CODECVT_H
 1428.43 +#include <stl/_codecvt.h>
 1428.44 +#endif
 1428.45 +
 1428.46 +#ifndef _STLP_STDIO_FILE_H
 1428.47 +#include <stl/_stdio_file.h>
 1428.48 +#endif
 1428.49 +
 1428.50 +// fbp : let us map 1 MB maximum, just be sure not to trash VM
 1428.51 +//for hardware defining 8kb of mmap chunk
 1428.52 +# ifdef __SYMBIAN32__
 1428.53 +# define MMAP_CHUNK 0x2000UL
 1428.54 +# else
 1428.55 +# define MMAP_CHUNK 0x100000UL
 1428.56 +# endif
 1428.57 +
 1428.58 +#if !defined (_STLP_USE_UNIX_IO) && !defined(_STLP_USE_WIN32_IO) \
 1428.59 +    && ! defined (_STLP_USE_UNIX_EMULATION_IO) && !defined (_STLP_USE_STDIO_IO)
 1428.60 +
 1428.61 +# if defined (_STLP_UNIX)  || defined (__CYGWIN__) || defined (__amigaos__) || defined (__EMX__) || defined (__SYMBIAN32__)
 1428.62 +// open/close/read/write
 1428.63 +#  define _STLP_USE_UNIX_IO
 1428.64 +# elif defined (_STLP_WIN32)  && ! defined (__CYGWIN__)
 1428.65 +// CreateFile/ReadFile/WriteFile
 1428.66 +#  define _STLP_USE_WIN32_IO
 1428.67 +# elif defined (_STLP_WIN16) || defined (_STLP_WIN32) || defined (_STLP_MAC)
 1428.68 +// _open/_read/_write
 1428.69 +#  define _STLP_USE_UNIX_EMULATION_IO
 1428.70 +# else
 1428.71 +// fopen/fread/fwrite
 1428.72 +#  define _STLP_USE_STDIO_IO
 1428.73 +# endif /* _STLP_UNIX */
 1428.74 +
 1428.75 +#endif /* mode selection */
 1428.76 +
 1428.77 +
 1428.78 +#if defined (_STLP_USE_WIN32_IO)
 1428.79 +typedef void* _STLP_fd;
 1428.80 +#elif defined (_STLP_USE_UNIX_EMULATION_IO) || defined (_STLP_USE_STDIO_IO) || defined (_STLP_USE_UNIX_IO)
 1428.81 +typedef int _STLP_fd;
 1428.82 +#else
 1428.83 +#error "Configure i/o !"
 1428.84 +#endif
 1428.85 +
 1428.86 +
 1428.87 +_STLP_BEGIN_NAMESPACE
 1428.88 +
 1428.89 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1428.90 +_STLP_DECLSPEC size_t& get_fstream_Filebuf_Base_GetPageSize();
 1428.91 +#endif //__LIBSTD_CPP_SYMBIAN32_WSD__
 1428.92 +//----------------------------------------------------------------------
 1428.93 +// Class _Filebuf_base, a private base class to factor out the system-
 1428.94 +// dependent code from basic_filebuf<>.
 1428.95 +
 1428.96 +class _STLP_CLASS_DECLSPEC _Filebuf_base {
 1428.97 +public:                      // Opening and closing files.
 1428.98 +  _STLP_DECLSPEC _Filebuf_base();
 1428.99 +
1428.100 +  _STLP_DECLSPEC bool _M_open(const char*, ios_base::openmode, long __protection);
1428.101 +  _STLP_DECLSPEC bool _M_open(const char*, ios_base::openmode);
1428.102 +  _STLP_DECLSPEC bool _M_open(int __id, ios_base::openmode = ios_base::__default_mode);
1428.103 +  _STLP_DECLSPEC bool _M_close();
1428.104 +
1428.105 +public:                      // Low-level I/O, like Unix read/write
1428.106 +  _STLP_DECLSPEC ptrdiff_t _M_read(char* __buf,  ptrdiff_t __n);
1428.107 +  _STLP_DECLSPEC streamoff _M_seek(streamoff __offset, ios_base::seekdir __dir);
1428.108 +  _STLP_DECLSPEC streamoff _M_file_size();
1428.109 +  _STLP_DECLSPEC bool _M_write(char* __buf,  ptrdiff_t __n);
1428.110 +
1428.111 +public:                      // Memory-mapped I/O.
1428.112 +  _STLP_DECLSPEC void* _M_mmap(streamoff __offset, streamoff __len);
1428.113 +  _STLP_DECLSPEC void _M_unmap(void* __mmap_base, streamoff __len);
1428.114 +
1428.115 +public:
1428.116 +  // Returns a value n such that, if pos is the file pointer at the
1428.117 +  // beginning of the range [first, last), pos + n is the file pointer at
1428.118 +  // the end.  On many operating systems n == __last - __first.
1428.119 +  // In Unix, writing n characters always bumps the file position by n.
1428.120 +  // In Windows text mode, however, it bumps the file position by n + m,
1428.121 +  // where m is the number of newlines in the range.  That's because an
1428.122 +  // internal \n corresponds to an external two-character sequence.
1428.123 +  streamoff _M_get_offset(char* __first, char* __last) {
1428.124 +#if defined (_STLP_UNIX) || defined (_STLP_MAC)
1428.125 +    return __last - __first;
1428.126 +#else // defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS)
1428.127 +    return ( (_M_openmode & ios_base::binary) != 0 )
1428.128 +      ? (__last - __first)
1428.129 +      : count(__first, __last, '\n') + (__last - __first);
1428.130 +#endif
1428.131 +  }
1428.132 +
1428.133 +  // Returns true if we're in binary mode or if we're using an OS or file 
1428.134 +  // system where there is no distinction between text and binary mode.
1428.135 +  bool _M_in_binary_mode() const {
1428.136 +# if defined (_STLP_UNIX) || defined (_STLP_MAC)  || defined(__BEOS__) || defined (__amigaos__) || defined (_STLP_VXWORKS_TORNADO)
1428.137 +    return true;
1428.138 +# elif defined (_STLP_WIN32) || defined (_STLP_WIN16) || defined (_STLP_DOS) || defined (_STLP_VM) || defined (__EMX__)
1428.139 +    return (_M_openmode & ios_base::binary) != 0;
1428.140 +# else 
1428.141 +//#   error "Port!"
1428.142 +#pragma message(" Symbian I/O stream support on progress."__FILE__)
1428.143 +# endif
1428.144 +  }
1428.145 +
1428.146 +protected:                      // Static data members.
1428.147 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1428.148 +  static size_t _M_page_size;
1428.149 +#endif //__SYMBIAN32__
1428.150 +
1428.151 +protected:                      // Data members.
1428.152 +  _STLP_fd _M_file_id;
1428.153 +# ifdef _STLP_USE_STDIO_IO
1428.154 +  // for stdio, the whole FILE* is being kept here
1428.155 +  FILE* _M_file;
1428.156 +# endif
1428.157 +# ifdef _STLP_USE_WIN32_IO
1428.158 +  void* _M_view_id; 
1428.159 +# endif
1428.160 +
1428.161 +  ios_base::openmode _M_openmode     ;
1428.162 +  unsigned char      _M_is_open      ;
1428.163 +  unsigned char      _M_should_close ;
1428.164 +  unsigned char      _M_regular_file ;
1428.165 +
1428.166 +public :
1428.167 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1428.168 +  static size_t  _STLP_CALL __page_size() { return get_fstream_Filebuf_Base_GetPageSize(); }
1428.169 +#else
1428.170 +  static size_t  _STLP_CALL __page_size() { return _M_page_size; } 
1428.171 +#endif  
1428.172 +  int  __o_mode() const { return (int)_M_openmode; } 
1428.173 +  bool __is_open()      const { return (_M_is_open !=0 ); } 
1428.174 +  bool __should_close() const { return (_M_should_close != 0); } 
1428.175 +  bool __regular_file() const { return (_M_regular_file != 0); }
1428.176 +  _STLP_fd __get_fd() const { return _M_file_id; }
1428.177 +};
1428.178 +
1428.179 +
1428.180 +
1428.181 +
1428.182 +//----------------------------------------------------------------------
1428.183 +// Class basic_filebuf<>.
1428.184 +
1428.185 +// Forward declaration of two helper classes.
1428.186 +template <class _Traits> class _Noconv_input;
1428.187 +_STLP_TEMPLATE_NULL
1428.188 +class _Noconv_input<char_traits<char> >;
1428.189 +
1428.190 +template <class _Traits> class _Noconv_output;
1428.191 +_STLP_TEMPLATE_NULL
1428.192 +class _Noconv_output< char_traits<char> >;
1428.193 +
1428.194 +// There is a specialized version of underflow, for basic_filebuf<char>,
1428.195 +// in fstream.cxx.
1428.196 +
1428.197 +template <class _CharT, class _Traits>
1428.198 +class _Underflow;
1428.199 +
1428.200 + _STLP_TEMPLATE_NULL class _Underflow< char, char_traits<char> >;
1428.201 +
1428.202 +template <class _CharT, class _Traits>
1428.203 +class basic_filebuf : public basic_streambuf<_CharT, _Traits>
1428.204 +{
1428.205 +public:                         // Types.
1428.206 +  typedef _CharT                     char_type;
1428.207 +  typedef typename _Traits::int_type int_type;
1428.208 +  typedef typename _Traits::pos_type pos_type;
1428.209 +  typedef typename _Traits::off_type off_type;
1428.210 +  typedef _Traits                    traits_type;
1428.211 +
1428.212 +  typedef typename _Traits::state_type _State_type;
1428.213 +  typedef basic_streambuf<_CharT, _Traits> _Base;
1428.214 +  typedef basic_filebuf<_CharT, _Traits> _Self;
1428.215 +
1428.216 +public:                         // Constructors, destructor.
1428.217 +  basic_filebuf();  
1428.218 +  ~basic_filebuf();
1428.219 +  
1428.220 +public:                         // Opening and closing files.
1428.221 +  bool is_open() const { return _M_base.__is_open(); }
1428.222 +
1428.223 +  _Self* open(const char* __s, ios_base::openmode __m) {
1428.224 +    return _M_base._M_open(__s, __m) ? this : 0;
1428.225 +  }
1428.226 +
1428.227 +# ifndef _STLP_NO_EXTENSIONS
1428.228 +  // These two version of open() and file descriptor getter are extensions.
1428.229 +  _Self* open(const char* __s, ios_base::openmode __m,
1428.230 +		      long __protection) {
1428.231 +    return _M_base._M_open(__s, __m, __protection) ? this : 0;
1428.232 +  }
1428.233 +  
1428.234 +  _STLP_fd fd() const { return _M_base.__get_fd(); }
1428.235 +
1428.236 +  _Self* open(int __id, ios_base::openmode _Init_mode = ios_base::__default_mode) {
1428.237 +    return this->_M_open(__id, _Init_mode);
1428.238 +  }
1428.239 +# endif
1428.240 +
1428.241 +  _Self* _M_open(int __id, ios_base::openmode _Init_mode = ios_base::__default_mode) {
1428.242 +    return _M_base._M_open(__id, _Init_mode) ? this : 0;
1428.243 +  }
1428.244 +
1428.245 +  _Self* close();
1428.246 +
1428.247 +protected:                      // Virtual functions from basic_streambuf.
1428.248 +  virtual streamsize showmanyc();
1428.249 +  virtual int_type underflow();
1428.250 +
1428.251 +  virtual int_type pbackfail(int_type = traits_type::eof());
1428.252 +  virtual int_type overflow(int_type = traits_type::eof());
1428.253 +
1428.254 +  virtual basic_streambuf<_CharT, _Traits>* setbuf(char_type*, streamsize);
1428.255 +  virtual pos_type seekoff(off_type, ios_base::seekdir,
1428.256 +                           ios_base::openmode = ios_base::in | ios_base::out);
1428.257 +  virtual pos_type seekpos(pos_type,
1428.258 +                           ios_base::openmode = ios_base::in | ios_base::out);
1428.259 +
1428.260 +  virtual int sync();
1428.261 +  virtual void imbue(const locale&);
1428.262 +
1428.263 +#ifdef __SYMBIAN32__  
1428.264 +  virtual int save_read_buffer ();
1428.265 +  virtual void _change_input_mode();
1428.266 +#endif
1428.267 +
1428.268 +private:                        // Helper functions.
1428.269 +
1428.270 +  // Precondition: we are currently in putback input mode.  Effect:
1428.271 +  // switches back to ordinary input mode.
1428.272 +  void _M_exit_putback_mode() {
1428.273 +    this->setg(_M_saved_eback, _M_saved_gptr, _M_saved_egptr);
1428.274 +    _M_in_putback_mode = false;
1428.275 +  }
1428.276 +  bool _M_switch_to_input_mode();
1428.277 +  void _M_exit_input_mode();
1428.278 +  bool _M_switch_to_output_mode();
1428.279 +
1428.280 +  int_type _M_input_error();
1428.281 +  int_type _M_underflow_aux();
1428.282 +  //  friend class _Noconv_input<_Traits>;
1428.283 +  //  friend class _Noconv_output<_Traits>;
1428.284 +  friend class _Underflow<_CharT, _Traits>;
1428.285 +
1428.286 +  int_type _M_output_error();
1428.287 +  bool _M_unshift();
1428.288 +
1428.289 +  bool _M_allocate_buffers(_CharT* __buf, streamsize __n);
1428.290 +  bool _M_allocate_buffers();
1428.291 +  void _M_deallocate_buffers();
1428.292 +
1428.293 +  pos_type _M_seek_return(off_type __off, _State_type __state) {
1428.294 +    if (__off != -1) {
1428.295 +      if (_M_in_input_mode)
1428.296 +        _M_exit_input_mode();
1428.297 +#ifndef __SYMBIAN32__	  
1428.298 +      _M_in_input_mode = false; //moved down, because setg again sets  input mode
1428.299 +#endif
1428.300 +      _M_in_output_mode = false;
1428.301 +      _M_in_putback_mode = false;
1428.302 +      _M_in_error_mode = false;
1428.303 +      this->setg(0, 0, 0);
1428.304 +      this->setp(0, 0);
1428.305 +#ifdef __SYMBIAN32__	  
1428.306 +			_M_in_input_mode = false; 
1428.307 +#endif
1428.308 +    }
1428.309 +    
1428.310 +    pos_type __result(__off);
1428.311 +    __result.state(__state);
1428.312 +    return __result;
1428.313 +  }
1428.314 +  
1428.315 +  bool _M_seek_init(bool __do_unshift);
1428.316 +
1428.317 +  void _M_setup_codecvt(const locale&);
1428.318 +
1428.319 +private:                        // Data members used in all modes.
1428.320 +
1428.321 +  _Filebuf_base _M_base;
1428.322 +
1428.323 +private:                        // Locale-related information.
1428.324 +
1428.325 +  unsigned char _M_constant_width;
1428.326 +  unsigned char _M_always_noconv;
1428.327 +  
1428.328 +  // private:                        // Mode flags.
1428.329 +  unsigned char _M_int_buf_dynamic;  // True if internal buffer is heap allocated,
1428.330 +  // false if it was supplied by the user.
1428.331 +  unsigned char _M_in_input_mode;
1428.332 +  unsigned char _M_in_output_mode;
1428.333 +  unsigned char _M_in_error_mode;
1428.334 +  unsigned char _M_in_putback_mode;
1428.335 +  
1428.336 +  // Internal buffer: characters seen by the filebuf's clients.
1428.337 +  _CharT* _M_int_buf;
1428.338 +  _CharT* _M_int_buf_EOS;
1428.339 +  
1428.340 +  // External buffer: characters corresponding to the external file.
1428.341 +  char* _M_ext_buf;
1428.342 +  char* _M_ext_buf_EOS;
1428.343 +
1428.344 +  // The range [_M_ext_buf, _M_ext_buf_converted) contains the external
1428.345 +  // characters corresponding to the sequence in the internal buffer.  The
1428.346 +  // range [_M_ext_buf_converted, _M_ext_buf_end) contains characters that
1428.347 +  // have been read into the external buffer but have not been converted
1428.348 +  // to an internal sequence.
1428.349 +  char* _M_ext_buf_converted;
1428.350 +  char* _M_ext_buf_end;
1428.351 +
1428.352 +  // State corresponding to beginning of internal buffer.
1428.353 +  _State_type _M_state;
1428.354 +
1428.355 +private:                        // Data members used only in input mode.
1428.356 +
1428.357 +  // Similar to _M_state except that it corresponds to
1428.358 +  // the end of the internal buffer instead of the beginning.
1428.359 +  _State_type _M_end_state;
1428.360 +
1428.361 +  // This is a null pointer unless we are in mmap input mode.
1428.362 +  void*     _M_mmap_base;
1428.363 +  streamoff _M_mmap_len;
1428.364 +
1428.365 +private:                        // Data members used only in putback mode.
1428.366 +  _CharT* _M_saved_eback;
1428.367 +  _CharT* _M_saved_gptr;
1428.368 +  _CharT* _M_saved_egptr;
1428.369 +
1428.370 +  typedef codecvt<_CharT, char, _State_type> _Codecvt;
1428.371 +  const _Codecvt* _M_codecvt;
1428.372 +
1428.373 +  int _M_width;                 // Width of the encoding (if constant), else 1
1428.374 +  int _M_max_width;             // Largest possible width of single character.
1428.375 +
1428.376 +
1428.377 +  enum { _S_pback_buf_size = 8 };
1428.378 +  _CharT _M_pback_buf[_S_pback_buf_size];
1428.379 +
1428.380 +  // for _Noconv_output
1428.381 +public:
1428.382 +  bool _M_write(char* __buf,  ptrdiff_t __n) {return _M_base._M_write(__buf, __n); }
1428.383 +
1428.384 +public:
1428.385 +  int_type
1428.386 +  _M_do_noconv_input() {
1428.387 +    _M_ext_buf_converted = _M_ext_buf_end;
1428.388 +    this->setg((char_type*)_M_ext_buf, (char_type*)_M_ext_buf, (char_type*)_M_ext_buf_end);
1428.389 +    return traits_type::to_int_type(*_M_ext_buf);
1428.390 +  }
1428.391 +};
1428.392 +
1428.393 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1428.394 +_STLP_EXPORT_TEMPLATE_CLASS basic_filebuf<char, char_traits<char> >;
1428.395 +#  if ! defined (_STLP_NO_WCHAR_T)
1428.396 +_STLP_EXPORT_TEMPLATE_CLASS basic_filebuf<wchar_t, char_traits<wchar_t> >;
1428.397 +#  endif
1428.398 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1428.399 +
1428.400 +// public:
1428.401 +// helper class.
1428.402 +template <class _CharT>
1428.403 +struct _Filebuf_Tmp_Buf
1428.404 +{
1428.405 +  _CharT* _M_ptr;
1428.406 +  _Filebuf_Tmp_Buf(ptrdiff_t __n) : _M_ptr(0) { _M_ptr = new _CharT[__n]; }
1428.407 +  ~_Filebuf_Tmp_Buf() { delete[] _M_ptr; }
1428.408 +};
1428.409 +
1428.410 +
1428.411 +//
1428.412 +// This class had to be designed very carefully to work
1428.413 +// with Visual C++.
1428.414 +//
1428.415 +template <class _Traits>
1428.416 +class _Noconv_output {
1428.417 +public:
1428.418 +  typedef typename _Traits::char_type char_type;
1428.419 +  static bool  _STLP_CALL _M_doit(basic_filebuf<char_type, _Traits >*, 
1428.420 +                                  char_type*, char_type*)
1428.421 +  {
1428.422 +      return false; 
1428.423 +  }
1428.424 +};
1428.425 +
1428.426 +_STLP_TEMPLATE_NULL
1428.427 +class _STLP_CLASS_DECLSPEC _Noconv_output< char_traits<char> > {
1428.428 +public:
1428.429 +  static bool  _STLP_CALL
1428.430 +  _M_doit(basic_filebuf<char, char_traits<char> >* __buf, 
1428.431 +          char* __first, char* __last)
1428.432 +  {
1428.433 +    ptrdiff_t __n = __last - __first;
1428.434 +    if (__buf->_M_write(__first, __n)) {
1428.435 +      return true;
1428.436 +    }
1428.437 +    else
1428.438 +      return false; 
1428.439 +  }
1428.440 +};
1428.441 +
1428.442 +//----------------------------------------------------------------------
1428.443 +// basic_filebuf<> helper functions.
1428.444 +
1428.445 +
1428.446 +//----------------------------------------
1428.447 +// Helper functions for switching between modes.
1428.448 +
1428.449 +//
1428.450 +// This class had to be designed very carefully to work
1428.451 +// with Visual C++.
1428.452 +//
1428.453 +template <class _Traits>
1428.454 +class _Noconv_input {
1428.455 +public:
1428.456 +  typedef typename _Traits::int_type int_type;
1428.457 +  typedef typename _Traits::char_type char_type;
1428.458 +
1428.459 +  static inline int_type _STLP_CALL
1428.460 +  _M_doit(basic_filebuf<char_type, _Traits>*) 
1428.461 +  {
1428.462 +    return 0;
1428.463 +  }
1428.464 +};
1428.465 +
1428.466 +_STLP_TEMPLATE_NULL
1428.467 +class _Noconv_input<char_traits<char> > {
1428.468 +public:
1428.469 +  static inline int _STLP_CALL
1428.470 +  _M_doit(basic_filebuf<char, char_traits<char> >* __buf)  {
1428.471 +    return __buf->_M_do_noconv_input();
1428.472 +  }
1428.473 +};
1428.474 +
1428.475 +// underflow() may be called for one of two reasons.  (1) We've
1428.476 +// been going through the special putback buffer, and we need to move back
1428.477 +// to the regular internal buffer.  (2) We've exhausted the internal buffer,
1428.478 +// and we need to replentish it.  
1428.479 +template <class _CharT, class _Traits>
1428.480 +class _Underflow {
1428.481 +public:
1428.482 +  typedef typename _Traits::int_type int_type;
1428.483 +  typedef _Traits                    traits_type;
1428.484 +  
1428.485 +  static int_type _STLP_CALL _M_doit(basic_filebuf<_CharT, _Traits>* __this);
1428.486 +};
1428.487 +
1428.488 +
1428.489 +// Specialization of underflow: if the character type is char, maybe
1428.490 +// we can use mmap instead of read.
1428.491 +_STLP_TEMPLATE_NULL
1428.492 +class _STLP_CLASS_DECLSPEC _Underflow< char, char_traits<char> > {
1428.493 +public:
1428.494 +  typedef char_traits<char>::int_type int_type;
1428.495 +  typedef char_traits<char> traits_type;
1428.496 +  _STLP_DECLSPEC static  int _STLP_CALL _M_doit(basic_filebuf<char, traits_type >* __this);
1428.497 +};
1428.498 +
1428.499 +// There is a specialized version of underflow, for basic_filebuf<char>,
1428.500 +// in fstream.cxx.
1428.501 +
1428.502 +template <class _CharT, class _Traits>
1428.503 +_STLP_TYPENAME_ON_RETURN_TYPE _Underflow<_CharT, _Traits>::int_type // _STLP_CALL
1428.504 + _Underflow<_CharT, _Traits>::_M_doit(basic_filebuf<_CharT, _Traits>* __this)
1428.505 +{
1428.506 +  if (!__this->_M_in_input_mode) {
1428.507 +    if (!__this->_M_switch_to_input_mode())
1428.508 +      return traits_type::eof();
1428.509 +  }
1428.510 +  
1428.511 +  else if (__this->_M_in_putback_mode) {
1428.512 +    __this->_M_exit_putback_mode();
1428.513 +    if (__this->gptr() != __this->egptr()) {
1428.514 +      int_type __c = traits_type::to_int_type(*__this->gptr());
1428.515 +      return __c;
1428.516 +    }
1428.517 +  }
1428.518 +  
1428.519 +  return __this->_M_underflow_aux();
1428.520 +}
1428.521 +
1428.522 +#if defined( _STLP_USE_TEMPLATE_EXPORT ) && ! defined (_STLP_NO_WCHAR_T)
1428.523 +_STLP_EXPORT_TEMPLATE_CLASS _Underflow<wchar_t, char_traits<wchar_t> >;
1428.524 +#endif
1428.525 +
1428.526 +
1428.527 +//----------------------------------------------------------------------
1428.528 +// Class basic_ifstream<>
1428.529 +
1428.530 +template <class _CharT, class _Traits>
1428.531 +class basic_ifstream : public basic_istream<_CharT, _Traits>
1428.532 +{
1428.533 +public:                         // Types
1428.534 +  typedef _CharT                     char_type;
1428.535 +  typedef typename _Traits::int_type int_type;
1428.536 +  typedef typename _Traits::pos_type pos_type;
1428.537 +  typedef typename _Traits::off_type off_type;
1428.538 +  typedef _Traits                    traits_type;
1428.539 +
1428.540 +  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1428.541 +  typedef basic_istream<_CharT, _Traits>            _Base;
1428.542 +  typedef basic_filebuf<_CharT, _Traits>            _Buf;
1428.543 +
1428.544 +public:                         // Constructors, destructor.
1428.545 +
1428.546 +  basic_ifstream() : 
1428.547 +    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0), _M_buf() {
1428.548 +      this->init(&_M_buf);
1428.549 +  }
1428.550 +
1428.551 +  explicit basic_ifstream(const char* __s, ios_base::openmode __mod = ios_base::in) : 
1428.552 +    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0),
1428.553 +    _M_buf() {
1428.554 +      this->init(&_M_buf);
1428.555 +      if (!_M_buf.open(__s, __mod | ios_base::in))
1428.556 +	this->setstate(ios_base::failbit);
1428.557 +  }
1428.558 +
1428.559 +# ifndef _STLP_NO_EXTENSIONS
1428.560 +  explicit basic_ifstream(int __id, ios_base::openmode __mod = ios_base::in) : 
1428.561 +    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0), _M_buf() {
1428.562 +    this->init(&_M_buf);
1428.563 +    if (!_M_buf.open(__id, __mod | ios_base::in))
1428.564 +      this->setstate(ios_base::failbit);
1428.565 +  }
1428.566 +  basic_ifstream(const char* __s, ios_base::openmode __m,
1428.567 +		 long __protection) : 
1428.568 +    basic_ios<_CharT, _Traits>(),  basic_istream<_CharT, _Traits>(0), _M_buf() {
1428.569 +    this->init(&_M_buf);
1428.570 +    if (!_M_buf.open(__s, __m | ios_base::in, __protection))
1428.571 +      this->setstate(ios_base::failbit);  
1428.572 +  }
1428.573 +  
1428.574 +# endif
1428.575 +
1428.576 +  ~basic_ifstream() {}
1428.577 +
1428.578 +public:                         // File and buffer operations.
1428.579 +  basic_filebuf<_CharT, _Traits>* rdbuf() const
1428.580 +    { return __CONST_CAST(_Buf*,&_M_buf); }
1428.581 +
1428.582 +  bool is_open() {
1428.583 +    return this->rdbuf()->is_open();
1428.584 +  }
1428.585 +
1428.586 +  void open(const char* __s, ios_base::openmode __mod = ios_base::in) {
1428.587 +    if (!this->rdbuf()->open(__s, __mod | ios_base::in))
1428.588 +      this->setstate(ios_base::failbit);
1428.589 +  }
1428.590 +
1428.591 +  void close() {
1428.592 +    if (!this->rdbuf()->close())
1428.593 +      this->setstate(ios_base::failbit);
1428.594 +  }
1428.595 +
1428.596 +
1428.597 +private:
1428.598 +  basic_filebuf<_CharT, _Traits> _M_buf;
1428.599 +};
1428.600 +
1428.601 +
1428.602 +//----------------------------------------------------------------------
1428.603 +// Class basic_ofstream<>
1428.604 +
1428.605 +template <class _CharT, class _Traits>
1428.606 +class basic_ofstream : public basic_ostream<_CharT, _Traits>
1428.607 +{
1428.608 +public:                         // Types
1428.609 +  typedef _CharT                     char_type;
1428.610 +  typedef typename _Traits::int_type int_type;
1428.611 +  typedef typename _Traits::pos_type pos_type;
1428.612 +  typedef typename _Traits::off_type off_type;
1428.613 +  typedef _Traits                    traits_type;
1428.614 +
1428.615 +  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1428.616 +  typedef basic_ostream<_CharT, _Traits>            _Base;
1428.617 +  typedef basic_filebuf<_CharT, _Traits>            _Buf;
1428.618 +
1428.619 +public:                         // Constructors, destructor.
1428.620 +  basic_ofstream() : 
1428.621 +    basic_ios<_CharT, _Traits>(), 
1428.622 +    basic_ostream<_CharT, _Traits>(0), _M_buf() {
1428.623 +      this->init(&_M_buf);
1428.624 +  }
1428.625 +  explicit basic_ofstream(const char* __s, ios_base::openmode __mod = ios_base::out) 
1428.626 +    : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0),
1428.627 +      _M_buf() {
1428.628 +	this->init(&_M_buf);
1428.629 +	if (!_M_buf.open(__s, __mod | ios_base::out))
1428.630 +	  this->setstate(ios_base::failbit);
1428.631 +  }
1428.632 +
1428.633 +# ifndef _STLP_NO_EXTENSIONS
1428.634 +  explicit basic_ofstream(int __id, ios_base::openmode __mod = ios_base::out) 
1428.635 +    : basic_ios<_CharT, _Traits>(), basic_ostream<_CharT, _Traits>(0),
1428.636 +    _M_buf() {
1428.637 + 	this->init(&_M_buf);
1428.638 + 	if (!_M_buf.open(__id, __mod | ios_base::out))
1428.639 + 	  this->setstate(ios_base::failbit);
1428.640 +  }
1428.641 +  basic_ofstream(const char* __s, ios_base::openmode __m, long __protection) : 
1428.642 +    basic_ios<_CharT, _Traits>(),  basic_ostream<_CharT, _Traits>(0), _M_buf() {
1428.643 +    this->init(&_M_buf);
1428.644 +    if (!_M_buf.open(__s, __m | ios_base::out, __protection))
1428.645 +      this->setstate(ios_base::failbit);  
1428.646 +  }
1428.647 +# endif
1428.648 +  
1428.649 +  ~basic_ofstream() {}
1428.650 +
1428.651 +public:                         // File and buffer operations.
1428.652 +  basic_filebuf<_CharT, _Traits>* rdbuf() const
1428.653 +    { return __CONST_CAST(_Buf*,&_M_buf); } 
1428.654 +
1428.655 +  bool is_open() {
1428.656 +    return this->rdbuf()->is_open();
1428.657 +  }
1428.658 +
1428.659 +  void open(const char* __s, ios_base::openmode __mod= ios_base::out) {
1428.660 +    if (!this->rdbuf()->open(__s, __mod | ios_base::out))
1428.661 +      this->setstate(ios_base::failbit);
1428.662 +  }
1428.663 +
1428.664 +  void close() {
1428.665 +    if (!this->rdbuf()->close())
1428.666 +      this->setstate(ios_base::failbit);
1428.667 +  }
1428.668 +
1428.669 +private:
1428.670 +  basic_filebuf<_CharT, _Traits> _M_buf;
1428.671 +};
1428.672 +
1428.673 +
1428.674 +//----------------------------------------------------------------------
1428.675 +// Class basic_fstream<>
1428.676 +
1428.677 +template <class _CharT, class _Traits>
1428.678 +class basic_fstream : public basic_iostream<_CharT, _Traits>
1428.679 +{
1428.680 +public:                         // Types
1428.681 +  typedef _CharT                     char_type;
1428.682 +  typedef typename _Traits::int_type int_type;
1428.683 +  typedef typename _Traits::pos_type pos_type;
1428.684 +  typedef typename _Traits::off_type off_type;
1428.685 +  typedef _Traits                    traits_type;
1428.686 +
1428.687 +  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1428.688 +  typedef basic_iostream<_CharT, _Traits>           _Base;
1428.689 +  typedef basic_filebuf<_CharT, _Traits>            _Buf;
1428.690 +
1428.691 +public:                         // Constructors, destructor.
1428.692 +  
1428.693 +  _STLP_DECLSPEC basic_fstream();
1428.694 +  explicit basic_fstream(const char* __s,
1428.695 +                         ios_base::openmode __mod = ios_base::in | ios_base::out) :
1428.696 +    basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() {
1428.697 +      this->init(&_M_buf);
1428.698 +      if (!_M_buf.open(__s, __mod))
1428.699 +	this->setstate(ios_base::failbit);
1428.700 +  }
1428.701 +
1428.702 +# ifndef _STLP_NO_EXTENSIONS
1428.703 +  explicit basic_fstream(int __id,
1428.704 +                         ios_base::openmode __mod = ios_base::in | ios_base::out) :
1428.705 +    basic_ios<_CharT, _Traits>(), basic_iostream<_CharT, _Traits>(0), _M_buf() {
1428.706 +    this->init(&_M_buf);
1428.707 +    if (!_M_buf.open(__id, __mod))
1428.708 +      this->setstate(ios_base::failbit);
1428.709 +  }
1428.710 +  basic_fstream(const char* __s, ios_base::openmode __m, long __protection) : 
1428.711 +    basic_ios<_CharT, _Traits>(),  basic_iostream<_CharT, _Traits>(0), _M_buf() {
1428.712 +    this->init(&_M_buf);
1428.713 +    if (!_M_buf.open(__s, __m, __protection))
1428.714 +      this->setstate(ios_base::failbit);  
1428.715 +  }
1428.716 +# endif    
1428.717 +  _STLP_DECLSPEC ~basic_fstream();
1428.718 +
1428.719 +public:                         // File and buffer operations.
1428.720 +
1428.721 +  basic_filebuf<_CharT, _Traits>* rdbuf() const
1428.722 +    { return __CONST_CAST(_Buf*,&_M_buf); } 
1428.723 +
1428.724 +  bool is_open() {
1428.725 +    return this->rdbuf()->is_open();
1428.726 +  }
1428.727 +
1428.728 +  void open(const char* __s, 
1428.729 +	    ios_base::openmode __mod = 
1428.730 +	    ios_base::in | ios_base::out) {
1428.731 +    if (!this->rdbuf()->open(__s, __mod))
1428.732 +      this->setstate(ios_base::failbit);
1428.733 +  }
1428.734 +
1428.735 +  void close() {
1428.736 +    if (!this->rdbuf()->close())
1428.737 +      this->setstate(ios_base::failbit);
1428.738 +  }
1428.739 +
1428.740 +private:
1428.741 +  basic_filebuf<_CharT, _Traits> _M_buf;
1428.742 +};
1428.743 +
1428.744 +_STLP_END_NAMESPACE
1428.745 +
1428.746 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1428.747 +#  include <stl/_fstream.c>
1428.748 +# endif
1428.749 +
1428.750 +_STLP_BEGIN_NAMESPACE
1428.751 +
1428.752 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1428.753 +_STLP_EXPORT_TEMPLATE_CLASS basic_ifstream<char, char_traits<char> >;
1428.754 +_STLP_EXPORT_TEMPLATE_CLASS basic_ofstream<char, char_traits<char> >;
1428.755 +_STLP_EXPORT_TEMPLATE_CLASS basic_fstream<char, char_traits<char> >;
1428.756 +#  if ! defined (_STLP_NO_WCHAR_T)
1428.757 +_STLP_EXPORT_TEMPLATE_CLASS basic_ifstream<wchar_t, char_traits<wchar_t> >;
1428.758 +_STLP_EXPORT_TEMPLATE_CLASS basic_ofstream<wchar_t, char_traits<wchar_t> >;
1428.759 +_STLP_EXPORT_TEMPLATE_CLASS basic_fstream<wchar_t, char_traits<wchar_t> >;
1428.760 +#  endif
1428.761 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1428.762 +
1428.763 +_STLP_END_NAMESPACE
1428.764 +
1428.765 +#endif /* _STLP_FSTREAM */
1428.766 +
1428.767 +
1428.768 +// Local Variables:
1428.769 +// mode:C++
1428.770 +// End:
  1429.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1429.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_function.h	Wed Mar 31 12:27:01 2010 +0100
  1429.3 @@ -0,0 +1,371 @@
  1429.4 +/*
  1429.5 + *
  1429.6 + * Copyright (c) 1994
  1429.7 + * Hewlett-Packard Company
  1429.8 + *
  1429.9 + * Copyright (c) 1996-1998
 1429.10 + * Silicon Graphics Computer Systems, Inc.
 1429.11 + *
 1429.12 + * Copyright (c) 1997
 1429.13 + * Moscow Center for SPARC Technology
 1429.14 + *
 1429.15 + * Copyright (c) 1999 
 1429.16 + * Boris Fomitchev
 1429.17 + *
 1429.18 + * This material is provided "as is", with absolutely no warranty expressed
 1429.19 + * or implied. Any use is at your own risk.
 1429.20 + *
 1429.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1429.22 + * without fee, provided the above notices are retained on all copies.
 1429.23 + * Permission to modify the code and to distribute modified code is granted,
 1429.24 + * provided the above notices are retained, and a notice that the code was
 1429.25 + * modified is included with the above copyright notice.
 1429.26 + *
 1429.27 + */
 1429.28 +
 1429.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1429.30 + *   You should not attempt to use it directly.
 1429.31 + */
 1429.32 +
 1429.33 +#ifndef _STLP_INTERNAL_FUNCTION_H
 1429.34 +#define _STLP_INTERNAL_FUNCTION_H
 1429.35 +
 1429.36 +#ifndef _STLP_INTERNAL_FUNCTION_BASE_H
 1429.37 +#include <stl/_function_base.h>
 1429.38 +#endif
 1429.39 +
 1429.40 +_STLP_BEGIN_NAMESPACE
 1429.41 +
 1429.42 +# ifndef _STLP_NO_EXTENSIONS
 1429.43 +// identity_element (not part of the C++ standard).
 1429.44 +template <class _Tp> inline _Tp identity_element(plus<_Tp>) {  return _Tp(0); }
 1429.45 +template <class _Tp> inline _Tp identity_element(multiplies<_Tp>) { return _Tp(1); }
 1429.46 +# endif
 1429.47 +
 1429.48 +#  if defined (_STLP_BASE_TYPEDEF_BUG)
 1429.49 +// this workaround is needed for SunPro 4.0.1
 1429.50 +// suggested by "Martin Abernethy" <gma@paston.co.uk>:
 1429.51 +
 1429.52 +// We have to introduce the XXary_predicate_aux structures in order to
 1429.53 +// access the argument and return types of predicate functions supplied
 1429.54 +// as type parameters. SUN C++ 4.0.1 compiler gives errors for template type parameters
 1429.55 +// of the form 'name1::name2', where name1 is itself a type parameter.
 1429.56 +template <class _Pair>
 1429.57 +struct __pair_aux : private _Pair
 1429.58 +{
 1429.59 +	typedef typename _Pair::first_type first_type;
 1429.60 +	typedef typename _Pair::second_type second_type;
 1429.61 +};
 1429.62 +
 1429.63 +template <class _Operation>
 1429.64 +struct __unary_fun_aux : private _Operation
 1429.65 +{
 1429.66 +	typedef typename _Operation::argument_type argument_type;
 1429.67 +	typedef typename _Operation::result_type result_type;
 1429.68 +};
 1429.69 +
 1429.70 +template <class _Operation>
 1429.71 +struct __binary_fun_aux  : private _Operation
 1429.72 +{
 1429.73 +	typedef typename _Operation::first_argument_type first_argument_type;
 1429.74 +	typedef typename _Operation::second_argument_type second_argument_type;
 1429.75 +	typedef typename _Operation::result_type result_type;
 1429.76 +};
 1429.77 +
 1429.78 +#  define __UNARY_ARG(__Operation,__type)  __unary_fun_aux<__Operation>::__type
 1429.79 +#  define __BINARY_ARG(__Operation,__type)  __binary_fun_aux<__Operation>::__type
 1429.80 +#  define __PAIR_ARG(__Pair,__type)  __pair_aux<__Pair>::__type
 1429.81 +# else
 1429.82 +#  define __UNARY_ARG(__Operation,__type)  __Operation::__type
 1429.83 +#  define __BINARY_ARG(__Operation,__type) __Operation::__type
 1429.84 +#  define __PAIR_ARG(__Pair,__type) __Pair::__type
 1429.85 +# endif
 1429.86 +
 1429.87 +template <class _Predicate>
 1429.88 +class unary_negate : 
 1429.89 +    public unary_function<typename __UNARY_ARG(_Predicate,argument_type), bool> {
 1429.90 +protected:
 1429.91 +  _Predicate _M_pred;
 1429.92 +public:
 1429.93 +  explicit unary_negate(const _Predicate& __x) : _M_pred(__x) {}
 1429.94 +  bool operator()(const typename _Predicate::argument_type& __x) const {
 1429.95 +    return !_M_pred(__x);
 1429.96 +  }
 1429.97 +};
 1429.98 +
 1429.99 +template <class _Predicate>
1429.100 +inline unary_negate<_Predicate> 
1429.101 +not1(const _Predicate& __pred)
1429.102 +{
1429.103 +  return unary_negate<_Predicate>(__pred);
1429.104 +}
1429.105 +
1429.106 +template <class _Predicate> 
1429.107 +class binary_negate 
1429.108 +    : public binary_function<typename __BINARY_ARG(_Predicate,first_argument_type),
1429.109 +			     typename __BINARY_ARG(_Predicate,second_argument_type), 
1429.110 +                             bool> {
1429.111 +protected:
1429.112 +  _Predicate _M_pred;
1429.113 +public:
1429.114 +  explicit binary_negate(const _Predicate& __x) : _M_pred(__x) {}
1429.115 +  bool operator()(const typename _Predicate::first_argument_type& __x, 
1429.116 +                  const typename _Predicate::second_argument_type& __y) const
1429.117 +  {
1429.118 +    return !_M_pred(__x, __y); 
1429.119 +  }
1429.120 +};
1429.121 +
1429.122 +template <class _Predicate>
1429.123 +inline binary_negate<_Predicate> 
1429.124 +not2(const _Predicate& __pred)
1429.125 +{
1429.126 +  return binary_negate<_Predicate>(__pred);
1429.127 +}
1429.128 +
1429.129 +template <class _Operation> 
1429.130 +class binder1st : 
1429.131 +    public unary_function<typename __BINARY_ARG(_Operation,second_argument_type),
1429.132 +                          typename __BINARY_ARG(_Operation,result_type) > {
1429.133 +protected:
1429.134 +  _Operation op;
1429.135 +  typename _Operation::first_argument_type value;
1429.136 +public:
1429.137 +  binder1st(const _Operation& __x,
1429.138 +            const typename _Operation::first_argument_type& __y)
1429.139 +      : op(__x), value(__y) {}
1429.140 +
1429.141 +  typename _Operation::result_type
1429.142 +  operator()(const typename _Operation::second_argument_type& __x) const {
1429.143 +    return op(value, __x); 
1429.144 +  }
1429.145 +
1429.146 +  typename _Operation::result_type
1429.147 +  operator()(typename _Operation::second_argument_type& __x) const {
1429.148 +    return op(value, __x); 
1429.149 +  }
1429.150 +};
1429.151 +
1429.152 +template <class _Operation, class _Tp>
1429.153 +inline binder1st<_Operation> 
1429.154 +bind1st(const _Operation& __fn, const _Tp& __x) 
1429.155 +{
1429.156 +  typedef typename _Operation::first_argument_type _Arg1_type;
1429.157 +  return binder1st<_Operation>(__fn, _Arg1_type(__x));
1429.158 +}
1429.159 +
1429.160 +template <class _Operation> 
1429.161 +class binder2nd
1429.162 +  : public unary_function<typename __BINARY_ARG(_Operation,first_argument_type),
1429.163 +                          typename __BINARY_ARG(_Operation,result_type)> {
1429.164 +protected:
1429.165 +  _Operation op;
1429.166 +  typename _Operation::second_argument_type value;
1429.167 +public:
1429.168 +  binder2nd(const _Operation& __x,
1429.169 +            const typename _Operation::second_argument_type& __y) 
1429.170 +      : op(__x), value(__y) {}
1429.171 +
1429.172 +  typename _Operation::result_type
1429.173 +  operator()(const typename _Operation::first_argument_type& __x) const {
1429.174 +    return op(__x, value); 
1429.175 +  }
1429.176 +
1429.177 +  typename _Operation::result_type
1429.178 +  operator()(typename _Operation::first_argument_type& __x) const {
1429.179 +    return op(__x, value); 
1429.180 +  }
1429.181 +};
1429.182 +
1429.183 +template <class _Operation, class _Tp>
1429.184 +inline binder2nd<_Operation> 
1429.185 +bind2nd(const _Operation& __fn, const _Tp& __x) 
1429.186 +{
1429.187 +  typedef typename _Operation::second_argument_type _Arg2_type;
1429.188 +  return binder2nd<_Operation>(__fn, _Arg2_type(__x));
1429.189 +}
1429.190 +
1429.191 +# ifndef _STLP_NO_EXTENSIONS
1429.192 +// unary_compose and binary_compose (extensions, not part of the standard).
1429.193 +
1429.194 +template <class _Operation1, class _Operation2>
1429.195 +class unary_compose : 
1429.196 +  public unary_function<typename __UNARY_ARG(_Operation2,argument_type),
1429.197 +                        typename __UNARY_ARG(_Operation1,result_type)> {
1429.198 +protected:
1429.199 +  _Operation1 _M_fn1;
1429.200 +  _Operation2 _M_fn2;
1429.201 +public:
1429.202 +  unary_compose(const _Operation1& __x, const _Operation2& __y) 
1429.203 +    : _M_fn1(__x), _M_fn2(__y) {}
1429.204 +
1429.205 +  typename _Operation1::result_type
1429.206 +  operator()(const typename _Operation2::argument_type& __x) const {
1429.207 +    return _M_fn1(_M_fn2(__x));
1429.208 +  }
1429.209 +
1429.210 +  typename _Operation1::result_type
1429.211 +  operator()(typename _Operation2::argument_type& __x) const {
1429.212 +    return _M_fn1(_M_fn2(__x));
1429.213 +  }
1429.214 +};
1429.215 +
1429.216 +template <class _Operation1, class _Operation2>
1429.217 +inline unary_compose<_Operation1,_Operation2> 
1429.218 +compose1(const _Operation1& __fn1, const _Operation2& __fn2)
1429.219 +{
1429.220 +  return unary_compose<_Operation1,_Operation2>(__fn1, __fn2);
1429.221 +}
1429.222 +
1429.223 +template <class _Operation1, class _Operation2, class _Operation3>
1429.224 +class binary_compose : 
1429.225 +    public unary_function<typename __UNARY_ARG(_Operation2,argument_type),
1429.226 +                          typename __BINARY_ARG(_Operation1,result_type)> {
1429.227 +protected:
1429.228 +  _Operation1 _M_fn1;
1429.229 +  _Operation2 _M_fn2;
1429.230 +  _Operation3 _M_fn3;
1429.231 +public:
1429.232 +  binary_compose(const _Operation1& __x, const _Operation2& __y, 
1429.233 +                 const _Operation3& __z) 
1429.234 +    : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { }
1429.235 +
1429.236 +  typename _Operation1::result_type
1429.237 +  operator()(const typename _Operation2::argument_type& __x) const {
1429.238 +    return _M_fn1(_M_fn2(__x), _M_fn3(__x));
1429.239 +  }
1429.240 +
1429.241 +  typename _Operation1::result_type
1429.242 +  operator()(typename _Operation2::argument_type& __x) const {
1429.243 +    return _M_fn1(_M_fn2(__x), _M_fn3(__x));
1429.244 +  }
1429.245 +};
1429.246 +
1429.247 +template <class _Operation1, class _Operation2, class _Operation3>
1429.248 +inline binary_compose<_Operation1, _Operation2, _Operation3> 
1429.249 +compose2(const _Operation1& __fn1, const _Operation2& __fn2, 
1429.250 +         const _Operation3& __fn3)
1429.251 +{
1429.252 +  return binary_compose<_Operation1,_Operation2,_Operation3>
1429.253 +    (__fn1, __fn2, __fn3);
1429.254 +}
1429.255 +
1429.256 +# endif /* _STLP_NO_EXTENSIONS */
1429.257 +
1429.258 +# ifndef _STLP_NO_EXTENSIONS
1429.259 +
1429.260 +// identity is an extension: it is not part of the standard.
1429.261 +template <class _Tp> struct identity : public _Identity<_Tp> {};
1429.262 +// select1st and select2nd are extensions: they are not part of the standard.
1429.263 +template <class _Pair> struct select1st : public _Select1st<_Pair> {};
1429.264 +template <class _Pair> struct select2nd : public _Select2nd<_Pair> {};
1429.265 +
1429.266 +template <class _Arg1, class _Arg2> 
1429.267 +struct project1st : public _Project1st<_Arg1, _Arg2> {};
1429.268 +
1429.269 +template <class _Arg1, class _Arg2>
1429.270 +struct project2nd : public _Project2nd<_Arg1, _Arg2> {};
1429.271 +
1429.272 +
1429.273 +// constant_void_fun, constant_unary_fun, and constant_binary_fun are
1429.274 +// extensions: they are not part of the standard.  (The same, of course,
1429.275 +// is true of the helper functions constant0, constant1, and constant2.)
1429.276 +
1429.277 +template <class _Result>
1429.278 +struct _Constant_void_fun {
1429.279 +  typedef _Result result_type;
1429.280 +  result_type _M_val;
1429.281 +
1429.282 +  _Constant_void_fun(const result_type& __v) : _M_val(__v) {}
1429.283 +  const result_type& operator()() const { return _M_val; }
1429.284 +};  
1429.285 +
1429.286 +
1429.287 +template <class _Result>
1429.288 +struct constant_void_fun : public _Constant_void_fun<_Result> {
1429.289 +  constant_void_fun(const _Result& __v) : _Constant_void_fun<_Result>(__v) {}
1429.290 +};  
1429.291 +
1429.292 +template <class _Result, __DFL_TMPL_PARAM( _Argument , _Result) >
1429.293 +struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument>
1429.294 +{
1429.295 +  constant_unary_fun(const _Result& __v)
1429.296 +    : _Constant_unary_fun<_Result, _Argument>(__v) {}
1429.297 +};
1429.298 +
1429.299 +template <class _Result, __DFL_TMPL_PARAM( _Arg1 , _Result), __DFL_TMPL_PARAM( _Arg2 , _Arg1) >
1429.300 +struct constant_binary_fun
1429.301 +  : public _Constant_binary_fun<_Result, _Arg1, _Arg2>
1429.302 +{
1429.303 +  constant_binary_fun(const _Result& __v)
1429.304 +    : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {}
1429.305 +};
1429.306 +
1429.307 +template <class _Result>
1429.308 +inline constant_void_fun<_Result> constant0(const _Result& __val)
1429.309 +{
1429.310 +  return constant_void_fun<_Result>(__val);
1429.311 +}
1429.312 +
1429.313 +template <class _Result>
1429.314 +inline constant_unary_fun<_Result,_Result> constant1(const _Result& __val)
1429.315 +{
1429.316 +  return constant_unary_fun<_Result,_Result>(__val);
1429.317 +}
1429.318 +
1429.319 +template <class _Result>
1429.320 +inline constant_binary_fun<_Result,_Result,_Result> 
1429.321 +constant2(const _Result& __val)
1429.322 +{
1429.323 +  return constant_binary_fun<_Result,_Result,_Result>(__val);
1429.324 +}
1429.325 +
1429.326 +// subtractive_rng is an extension: it is not part of the standard.
1429.327 +// Note: this code assumes that int is 32 bits.
1429.328 +class subtractive_rng : public unary_function<_STLP_UINT32_T, _STLP_UINT32_T> {
1429.329 +private:
1429.330 +  _STLP_UINT32_T _M_table[55];
1429.331 +  _STLP_UINT32_T _M_index1;
1429.332 +  _STLP_UINT32_T _M_index2;
1429.333 +public:
1429.334 +  _STLP_UINT32_T operator()(_STLP_UINT32_T __limit) {
1429.335 +    _M_index1 = (_M_index1 + 1) % 55;
1429.336 +    _M_index2 = (_M_index2 + 1) % 55;
1429.337 +    _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2];
1429.338 +    return _M_table[_M_index1] % __limit;
1429.339 +  }
1429.340 +
1429.341 +  void _M_initialize(_STLP_UINT32_T __seed)
1429.342 +  {
1429.343 +    _STLP_UINT32_T __k = 1;
1429.344 +    _M_table[54] = __seed;
1429.345 +    _STLP_UINT32_T __i;
1429.346 +    for (__i = 0; __i < 54; __i++) {
1429.347 +        _STLP_UINT32_T __ii = (21 * (__i + 1) % 55) - 1;
1429.348 +        _M_table[__ii] = __k;
1429.349 +        __k = __seed - __k;
1429.350 +        __seed = _M_table[__ii];
1429.351 +    }
1429.352 +    for (int __loop = 0; __loop < 4; __loop++) {
1429.353 +        for (__i = 0; __i < 55; __i++)
1429.354 +            _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55];
1429.355 +    }
1429.356 +    _M_index1 = 0;
1429.357 +    _M_index2 = 31;
1429.358 +  }
1429.359 +
1429.360 +  subtractive_rng(unsigned int __seed) { _M_initialize(__seed); }
1429.361 +  subtractive_rng() { _M_initialize(161803398ul); }
1429.362 +};
1429.363 +
1429.364 +# endif /* _STLP_NO_EXTENSIONS */
1429.365 +
1429.366 +_STLP_END_NAMESPACE
1429.367 +
1429.368 +#include <stl/_function_adaptors.h>
1429.369 +
1429.370 +#endif /* _STLP_INTERNAL_FUNCTION_H */
1429.371 +
1429.372 +// Local Variables:
1429.373 +// mode:C++
1429.374 +// End:
  1430.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1430.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_function_adaptors.h	Wed Mar 31 12:27:01 2010 +0100
  1430.3 @@ -0,0 +1,802 @@
  1430.4 +/*
  1430.5 + *
  1430.6 + * Copyright (c) 1994
  1430.7 + * Hewlett-Packard Company
  1430.8 + *
  1430.9 + * Copyright (c) 1996-1998
 1430.10 + * Silicon Graphics Computer Systems, Inc.
 1430.11 + *
 1430.12 + * Copyright (c) 1997
 1430.13 + * Moscow Center for SPARC Technology
 1430.14 + *
 1430.15 + * Copyright (c) 1999 
 1430.16 + * Boris Fomitchev
 1430.17 + *
 1430.18 + * Copyright (c) 2000
 1430.19 + * Pavel Kuznetsov
 1430.20 + *
 1430.21 + * Copyright (c) 2001
 1430.22 + * Meridian'93
 1430.23 + *
 1430.24 + * This material is provided "as is", with absolutely no warranty expressed
 1430.25 + * or implied. Any use is at your own risk.
 1430.26 + *
 1430.27 + * Permission to use or copy this software for any purpose is hereby granted 
 1430.28 + * without fee, provided the above notices are retained on all copies.
 1430.29 + * Permission to modify the code and to distribute modified code is granted,
 1430.30 + * provided the above notices are retained, and a notice that the code was
 1430.31 + * modified is included with the above copyright notice.
 1430.32 + *
 1430.33 + */
 1430.34 +
 1430.35 +/* NOTE: This is an internal header file, included by other STL headers.
 1430.36 + *   You should not attempt to use it directly.
 1430.37 + */
 1430.38 +
 1430.39 +// This file has noo macro protection as it is meant to be included several times
 1430.40 +// from other header.
 1430.41 +// Adaptor function objects: pointers to member functions.
 1430.42 +
 1430.43 +// There are a total of 16 = 2^4 function objects in this family.
 1430.44 +//  (1) Member functions taking no arguments vs member functions taking
 1430.45 +//       one argument.
 1430.46 +//  (2) Call through pointer vs call through reference.
 1430.47 +//  (3) Member function with void return type vs member function with
 1430.48 +//      non-void return type.
 1430.49 +//  (4) Const vs non-const member function.
 1430.50 +
 1430.51 +// Note that choice (3) is nothing more than a workaround: according
 1430.52 +//  to the draft, compilers should handle void and non-void the same way.
 1430.53 +//  This feature is not yet widely implemented, though.  You can only use
 1430.54 +//  member functions returning void if your compiler supports partial
 1430.55 +//  specialization.
 1430.56 +
 1430.57 +// All of this complexity is in the function objects themselves.  You can
 1430.58 +//  ignore it by using the helper function mem_fun and mem_fun_ref,
 1430.59 +//  which create whichever type of adaptor is appropriate.
 1430.60 +
 1430.61 +_STLP_BEGIN_NAMESPACE
 1430.62 +
 1430.63 +//This implementation will only be used if needed, that is to say when there is the return void bug
 1430.64 +//and when there is no partial template specialization
 1430.65 +#if defined(_STLP_DONT_RETURN_VOID) && defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined(_STLP_MEMBER_TEMPLATE_CLASSES)
 1430.66 +
 1430.67 +template<class _Result, class _Tp>
 1430.68 +class _Mem_fun0_ptr : public unary_function<_Tp*, _Result> {
 1430.69 +protected:
 1430.70 +  typedef _Result (_Tp::*__fun_type) ();
 1430.71 +  explicit _Mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
 1430.72 +
 1430.73 +public:
 1430.74 +  _Result operator ()(_Tp* __p) const { return (__p->*_M_f)(); }
 1430.75 +
 1430.76 +private:
 1430.77 +  __fun_type _M_f;
 1430.78 +};
 1430.79 +
 1430.80 +template<class _Result, class _Tp, class _Arg>
 1430.81 +class _Mem_fun1_ptr : public binary_function<_Tp*,_Arg,_Result> {
 1430.82 +protected:
 1430.83 +  typedef _Result (_Tp::*__fun_type) (_Arg);
 1430.84 +  explicit _Mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
 1430.85 +
 1430.86 +public:
 1430.87 +  _Result operator ()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); }
 1430.88 +
 1430.89 +private:
 1430.90 +  __fun_type _M_f;
 1430.91 +};
 1430.92 +
 1430.93 +template<class _Result, class _Tp>
 1430.94 +class _Const_mem_fun0_ptr : public unary_function<const _Tp*,_Result> {
 1430.95 +protected:
 1430.96 +  typedef _Result (_Tp::*__fun_type) () const;
 1430.97 +  explicit _Const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
 1430.98 +
 1430.99 +public:
1430.100 +  _Result operator ()(const _Tp* __p) const { return (__p->*_M_f)(); }
1430.101 +
1430.102 +private:
1430.103 +  __fun_type _M_f;
1430.104 +};
1430.105 +
1430.106 +template<class _Result, class _Tp, class _Arg>
1430.107 +class _Const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,_Result> {
1430.108 +protected:
1430.109 +  typedef _Result (_Tp::*__fun_type) (_Arg) const;
1430.110 +  explicit _Const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
1430.111 +
1430.112 +public:
1430.113 +  _Result operator ()(const _Tp* __p, _Arg __x) const {
1430.114 +    return (__p->*_M_f)(__x); }
1430.115 +
1430.116 +private:
1430.117 +  __fun_type _M_f;
1430.118 +};
1430.119 +
1430.120 +template<class _Result, class _Tp>
1430.121 +class _Mem_fun0_ref : public unary_function<_Tp&,_Result> {
1430.122 +protected:
1430.123 +  typedef _Result (_Tp::*__fun_type) ();
1430.124 +  explicit _Mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1430.125 +
1430.126 +public:
1430.127 +  _Result operator ()(_Tp& __p) const { return (__p.*_M_f)(); }
1430.128 +
1430.129 +private:
1430.130 +  __fun_type _M_f;
1430.131 +};
1430.132 +
1430.133 +template<class _Result, class _Tp, class _Arg>
1430.134 +class _Mem_fun1_ref : public binary_function<_Tp&,_Arg,_Result> {
1430.135 +protected:
1430.136 +  typedef _Result (_Tp::*__fun_type) (_Arg);
1430.137 +  explicit _Mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1430.138 +
1430.139 +public:
1430.140 +  _Result operator ()(_Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); }
1430.141 +
1430.142 +private:
1430.143 +  __fun_type _M_f;
1430.144 +};
1430.145 +
1430.146 +template<class _Result, class _Tp>
1430.147 +class _Const_mem_fun0_ref : public unary_function<const _Tp&,_Result> {
1430.148 +protected:
1430.149 +  typedef _Result (_Tp::*__fun_type) () const;
1430.150 +  explicit _Const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1430.151 +
1430.152 +public:
1430.153 +  _Result operator ()(const _Tp& __p) const { return (__p.*_M_f)(); }
1430.154 +
1430.155 +private:
1430.156 +  __fun_type _M_f;
1430.157 +};
1430.158 +
1430.159 +template<class _Result, class _Tp, class _Arg>
1430.160 +class _Const_mem_fun1_ref : public binary_function<const _Tp&,_Arg,_Result> {
1430.161 +protected:
1430.162 +  typedef _Result (_Tp::*__fun_type) (_Arg) const;
1430.163 +  explicit _Const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1430.164 +
1430.165 +public:
1430.166 +  _Result operator ()(const _Tp& __p, _Arg __x) const { return (__p.*_M_f)(__x); }
1430.167 +
1430.168 +private:
1430.169 +  __fun_type _M_f;
1430.170 +};
1430.171 +
1430.172 +template<class _Result> 
1430.173 +struct _Mem_fun_traits {
1430.174 +  template<class _Tp> 
1430.175 +  struct _Args0 {
1430.176 +    typedef _Mem_fun0_ptr<_Result,_Tp>            _Ptr;
1430.177 +    typedef _Const_mem_fun0_ptr<_Result,_Tp>      _Ptr_const;
1430.178 +    typedef _Mem_fun0_ref<_Result,_Tp>            _Ref;
1430.179 +    typedef _Const_mem_fun0_ref<_Result,_Tp>      _Ref_const;
1430.180 +  };
1430.181 +
1430.182 +  template<class _Tp, class _Arg>
1430.183 +  struct _Args1 {
1430.184 +    typedef _Mem_fun1_ptr<_Result,_Tp,_Arg>       _Ptr;
1430.185 +    typedef _Const_mem_fun1_ptr<_Result,_Tp,_Arg> _Ptr_const;
1430.186 +    typedef _Mem_fun1_ref<_Result,_Tp,_Arg>       _Ref;
1430.187 +    typedef _Const_mem_fun1_ref<_Result,_Tp,_Arg> _Ref_const;
1430.188 +  };
1430.189 +};
1430.190 +
1430.191 +template<class _Arg, class _Result>
1430.192 +class _Ptr_fun1_base : public unary_function<_Arg, _Result> {
1430.193 +protected:
1430.194 +  typedef _Result (*__fun_type) (_Arg);
1430.195 +  explicit _Ptr_fun1_base(__fun_type __f) : _M_f(__f) {}
1430.196 +
1430.197 +public:
1430.198 +  _Result operator()(_Arg __x) const { return _M_f(__x); }
1430.199 +
1430.200 +private:
1430.201 +  __fun_type _M_f;
1430.202 +};
1430.203 +
1430.204 +template <class _Arg1, class _Arg2, class _Result>
1430.205 +class _Ptr_fun2_base : public binary_function<_Arg1,_Arg2,_Result> {
1430.206 +protected:
1430.207 +  typedef _Result (*__fun_type) (_Arg1, _Arg2);
1430.208 +  explicit _Ptr_fun2_base(__fun_type __f) : _M_f(__f) {}
1430.209 +
1430.210 +public:
1430.211 +  _Result operator()(_Arg1 __x, _Arg2 __y) const { return _M_f(__x, __y); }
1430.212 +
1430.213 +private:
1430.214 +  __fun_type _M_f;
1430.215 +};
1430.216 +
1430.217 +template<class _Result> 
1430.218 +struct _Ptr_fun_traits {
1430.219 +  template<class _Arg> struct _Args1 {
1430.220 +    typedef _Ptr_fun1_base<_Arg,_Result> _Fun;
1430.221 +  };
1430.222 +
1430.223 +  template<class _Arg1, class _Arg2> struct _Args2 {
1430.224 +    typedef _Ptr_fun2_base<_Arg1,_Arg2,_Result> _Fun;
1430.225 +  };
1430.226 +};
1430.227 +
1430.228 +/*Specialization for void return type
1430.229 +*/
1430.230 +template<class _Tp>
1430.231 +class _Void_mem_fun0_ptr : public unary_function<_Tp*,void> {
1430.232 +protected:
1430.233 +  typedef void (_Tp::*__fun_type) ();
1430.234 +  explicit _Void_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
1430.235 +
1430.236 +public:
1430.237 +  void operator ()(_Tp* __p) const { (__p->*_M_f)(); }
1430.238 +
1430.239 +private:
1430.240 +  __fun_type _M_f;
1430.241 +};
1430.242 +
1430.243 +template<class _Tp, class _Arg>
1430.244 +class _Void_mem_fun1_ptr : public binary_function<_Tp*,_Arg,void> {
1430.245 +protected:
1430.246 +  typedef void (_Tp::*__fun_type) (_Arg);
1430.247 +  explicit _Void_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
1430.248 +
1430.249 +public:
1430.250 +  void operator ()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1430.251 +
1430.252 +private:
1430.253 +  __fun_type _M_f;
1430.254 +};
1430.255 +
1430.256 +template<class _Tp>
1430.257 +class _Void_const_mem_fun0_ptr : public unary_function<const _Tp*,void> {
1430.258 +protected:
1430.259 +  typedef void (_Tp::*__fun_type) () const;
1430.260 +  explicit _Void_const_mem_fun0_ptr(__fun_type __f) : _M_f(__f) {}
1430.261 +
1430.262 +public:
1430.263 +  void operator ()(const _Tp* __p) const { (__p->*_M_f)(); }
1430.264 +
1430.265 +private:
1430.266 +  __fun_type _M_f;
1430.267 +};
1430.268 +
1430.269 +template<class _Tp, class _Arg>
1430.270 +class _Void_const_mem_fun1_ptr : public binary_function<const _Tp*,_Arg,void> {
1430.271 +protected:
1430.272 +  typedef void (_Tp::*__fun_type) (_Arg) const;
1430.273 +  explicit _Void_const_mem_fun1_ptr(__fun_type __f) : _M_f(__f) {}
1430.274 +
1430.275 +public:
1430.276 +  void operator ()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1430.277 +
1430.278 +private:
1430.279 +  __fun_type _M_f;
1430.280 +};
1430.281 +
1430.282 +template<class _Tp>
1430.283 +class _Void_mem_fun0_ref : public unary_function<_Tp&,void> {
1430.284 +protected:
1430.285 +  typedef void (_Tp::*__fun_type) ();
1430.286 +  explicit _Void_mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1430.287 +
1430.288 +public:
1430.289 +  void operator ()(_Tp& __p) const { (__p.*_M_f)(); }
1430.290 +
1430.291 +private:
1430.292 +  __fun_type _M_f;
1430.293 +};
1430.294 +
1430.295 +template<class _Tp, class _Arg>
1430.296 +class _Void_mem_fun1_ref : public binary_function<_Tp&,_Arg,void> {
1430.297 +protected:
1430.298 +  typedef void (_Tp::*__fun_type) (_Arg);
1430.299 +  explicit _Void_mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1430.300 +
1430.301 +public:
1430.302 +  void operator ()(_Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); }
1430.303 +
1430.304 +private:
1430.305 +  __fun_type _M_f;
1430.306 +};
1430.307 +
1430.308 +template<class _Tp>
1430.309 +class _Void_const_mem_fun0_ref : public unary_function<const _Tp&,void> {
1430.310 +protected:
1430.311 +  typedef void (_Tp::*__fun_type) () const;
1430.312 +  explicit _Void_const_mem_fun0_ref(__fun_type __f) : _M_f(__f) {}
1430.313 +
1430.314 +public:
1430.315 +  void operator ()(const _Tp& __p) const { (__p.*_M_f)(); }
1430.316 +
1430.317 +private:
1430.318 +  __fun_type _M_f;
1430.319 +};
1430.320 +
1430.321 +template<class _Tp, class _Arg>
1430.322 +class _Void_const_mem_fun1_ref : public binary_function<const _Tp&,_Arg,void> {
1430.323 +protected:
1430.324 +  typedef void (_Tp::*__fun_type) (_Arg) const;
1430.325 +  explicit _Void_const_mem_fun1_ref(__fun_type __f) : _M_f(__f) {}
1430.326 +
1430.327 +public:
1430.328 +  void operator ()(const _Tp& __p, _Arg __x) const { (__p.*_M_f)(__x); }
1430.329 +
1430.330 +private:
1430.331 +  __fun_type _M_f;
1430.332 +};
1430.333 +
1430.334 +_STLP_TEMPLATE_NULL
1430.335 +struct _Mem_fun_traits<void> {
1430.336 +  template<class _Tp> struct _Args0 {
1430.337 +    typedef _Void_mem_fun0_ptr<_Tp>             _Ptr;
1430.338 +    typedef _Void_const_mem_fun0_ptr<_Tp>       _Ptr_const;
1430.339 +    typedef _Void_mem_fun0_ref<_Tp>             _Ref;
1430.340 +    typedef _Void_const_mem_fun0_ref<_Tp>       _Ref_const;
1430.341 +  };
1430.342 +
1430.343 +  template<class _Tp, class _Arg> struct _Args1 {
1430.344 +    typedef _Void_mem_fun1_ptr<_Tp,_Arg>        _Ptr;
1430.345 +    typedef _Void_const_mem_fun1_ptr<_Tp,_Arg>  _Ptr_const;
1430.346 +    typedef _Void_mem_fun1_ref<_Tp,_Arg>        _Ref;
1430.347 +    typedef _Void_const_mem_fun1_ref<_Tp,_Arg>  _Ref_const;
1430.348 +  };
1430.349 +};
1430.350 +
1430.351 +template<class _Arg>
1430.352 +class _Ptr_void_fun1_base : public unary_function<_Arg, void> {
1430.353 +protected:
1430.354 +  typedef void (*__fun_type) (_Arg);
1430.355 +  explicit _Ptr_void_fun1_base(__fun_type __f) : _M_f(__f) {}
1430.356 +
1430.357 +public:
1430.358 +  void operator()(_Arg __x) const { _M_f(__x); }
1430.359 +
1430.360 +private:
1430.361 +  __fun_type _M_f;
1430.362 +};
1430.363 +
1430.364 +template <class _Arg1, class _Arg2>
1430.365 +class _Ptr_void_fun2_base : public binary_function<_Arg1,_Arg2,void> {
1430.366 +protected:
1430.367 +  typedef void (*__fun_type) (_Arg1, _Arg2);
1430.368 +  explicit _Ptr_void_fun2_base(__fun_type __f) : _M_f(__f) {}
1430.369 +
1430.370 +public:
1430.371 +  void operator()(_Arg1 __x, _Arg2 __y) const { _M_f(__x, __y); }
1430.372 +
1430.373 +private:
1430.374 +  __fun_type _M_f;
1430.375 +};
1430.376 +
1430.377 +_STLP_TEMPLATE_NULL
1430.378 +struct _Ptr_fun_traits<void> {
1430.379 +  template<class _Arg> struct _Args1 {
1430.380 +    typedef _Ptr_void_fun1_base<_Arg> _Fun;
1430.381 +  };
1430.382 +  
1430.383 +  template<class _Arg1, class _Arg2> struct _Args2 {
1430.384 +    typedef _Ptr_void_fun2_base<_Arg1,_Arg2> _Fun;
1430.385 +  };
1430.386 +};
1430.387 +
1430.388 +// pavel: need extra level of inheritance here since MSVC++ does not
1430.389 +// accept traits-based fake partial specialization for template
1430.390 +// arguments other than first
1430.391 +
1430.392 +template<class _Result, class _Arg>
1430.393 +class _Ptr_fun1 : 
1430.394 +  public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun {
1430.395 +protected:
1430.396 +  typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Arg>::_Fun _Base;
1430.397 +  explicit _Ptr_fun1(typename _Base::__fun_type __f) : _Base(__f) {}
1430.398 +};
1430.399 +
1430.400 +template<class _Result, class _Arg1, class _Arg2>
1430.401 +class _Ptr_fun2 : 
1430.402 +  public _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun {
1430.403 +protected:
1430.404 +  typedef typename _Ptr_fun_traits<_Result>::_STLP_TEMPLATE _Args2<_Arg1,_Arg2>::_Fun _Base;
1430.405 +  explicit _Ptr_fun2(typename _Base::__fun_type __f) : _Base(__f) {}
1430.406 +};
1430.407 +
1430.408 +
1430.409 +#endif /*_STLP_DONT_RETURN_VOID && _STLP_NO_CLASS_PARTIAL_SPECIALIZATION && _STLP_MEMBER_TEMPLATE_CLASSES*/
1430.410 +
1430.411 +
1430.412 +#if !defined(_STLP_DONT_RETURN_VOID) || !defined(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) || !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1430.413 +
1430.414 +template <class _Ret, class _Tp>
1430.415 +class mem_fun_t : public unary_function<_Tp*,_Ret> {
1430.416 +  typedef _Ret (_Tp::*__fun_type)(void);
1430.417 +public:
1430.418 +  explicit mem_fun_t(__fun_type __pf) : _M_f(__pf) {}
1430.419 +  _Ret operator()(_Tp* __p) const { return (__p->*_M_f)(); }
1430.420 +private:
1430.421 +  __fun_type _M_f;
1430.422 +};
1430.423 +
1430.424 +template <class _Ret, class _Tp>
1430.425 +class const_mem_fun_t : public unary_function<const _Tp*,_Ret> {
1430.426 +  typedef _Ret (_Tp::*__fun_type)(void) const;
1430.427 +public:
1430.428 +  explicit const_mem_fun_t(__fun_type __pf) : _M_f(__pf) {}
1430.429 +  _Ret operator()(const _Tp* __p) const { return (__p->*_M_f)(); }
1430.430 +private:
1430.431 +  __fun_type _M_f;
1430.432 +};
1430.433 +
1430.434 +
1430.435 +template <class _Ret, class _Tp>
1430.436 +class mem_fun_ref_t : public unary_function<_Tp,_Ret> {
1430.437 +  typedef _Ret (_Tp::*__fun_type)(void);
1430.438 +public:
1430.439 +  explicit mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {}
1430.440 +  _Ret operator()(_Tp& __r) const { return (__r.*_M_f)(); }
1430.441 +private:
1430.442 +  __fun_type _M_f;
1430.443 +};
1430.444 +
1430.445 +template <class _Ret, class _Tp>
1430.446 +class const_mem_fun_ref_t : public unary_function<_Tp,_Ret> {
1430.447 +  typedef _Ret (_Tp::*__fun_type)(void) const;
1430.448 +public:
1430.449 +  explicit const_mem_fun_ref_t(__fun_type __pf) : _M_f(__pf) {}
1430.450 +  _Ret operator()(const _Tp& __r) const { return (__r.*_M_f)(); }
1430.451 +private:
1430.452 +  __fun_type _M_f;
1430.453 +};
1430.454 +
1430.455 +template <class _Ret, class _Tp, class _Arg>
1430.456 +class mem_fun1_t : public binary_function<_Tp*,_Arg,_Ret> {
1430.457 +  typedef _Ret (_Tp::*__fun_type)(_Arg);
1430.458 +public:
1430.459 +  explicit mem_fun1_t(__fun_type __pf) : _M_f(__pf) {}
1430.460 +  _Ret operator()(_Tp* __p, _Arg __x) const { return (__p->*_M_f)(__x); }
1430.461 +private:
1430.462 +  __fun_type _M_f;
1430.463 +};
1430.464 +
1430.465 +template <class _Ret, class _Tp, class _Arg>
1430.466 +class const_mem_fun1_t : public binary_function<const _Tp*,_Arg,_Ret> {
1430.467 +  typedef _Ret (_Tp::*__fun_type)(_Arg) const;
1430.468 +public:
1430.469 +  explicit const_mem_fun1_t(__fun_type __pf) : _M_f(__pf) {}
1430.470 +  _Ret operator()(const _Tp* __p, _Arg __x) const
1430.471 +    { return (__p->*_M_f)(__x); }
1430.472 +private:
1430.473 +  __fun_type _M_f;
1430.474 +};
1430.475 +
1430.476 +template <class _Ret, class _Tp, class _Arg>
1430.477 +class mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
1430.478 +  typedef _Ret (_Tp::*__fun_type)(_Arg);
1430.479 +public:
1430.480 +  explicit mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {}
1430.481 +  _Ret operator()(_Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }
1430.482 +private:
1430.483 +  __fun_type _M_f;
1430.484 +};
1430.485 +
1430.486 +template <class _Ret, class _Tp, class _Arg>
1430.487 +class const_mem_fun1_ref_t : public binary_function<_Tp,_Arg,_Ret> {
1430.488 +  typedef _Ret (_Tp::*__fun_type)(_Arg) const;
1430.489 +public:
1430.490 +  explicit const_mem_fun1_ref_t(__fun_type __pf) : _M_f(__pf) {}
1430.491 +  _Ret operator()(const _Tp& __r, _Arg __x) const { return (__r.*_M_f)(__x); }
1430.492 +private:
1430.493 +  __fun_type _M_f;
1430.494 +};
1430.495 +
1430.496 +template <class _Arg, class _Result>
1430.497 +class pointer_to_unary_function : public unary_function<_Arg, _Result> {
1430.498 +protected:
1430.499 +  _Result (*_M_ptr)(_Arg);
1430.500 +public:
1430.501 +  pointer_to_unary_function() {}
1430.502 +  explicit pointer_to_unary_function(_Result (*__x)(_Arg)) : _M_ptr(__x) {}
1430.503 +  _Result operator()(_Arg __x) const { return _M_ptr(__x); }
1430.504 +};
1430.505 +
1430.506 +template <class _Arg1, class _Arg2, class _Result>
1430.507 +class pointer_to_binary_function : 
1430.508 +  public binary_function<_Arg1,_Arg2,_Result> {
1430.509 +protected:
1430.510 +    _Result (*_M_ptr)(_Arg1, _Arg2);
1430.511 +public:
1430.512 +    pointer_to_binary_function() {}
1430.513 +    explicit pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) 
1430.514 +      : _M_ptr(__x) {}
1430.515 +    _Result operator()(_Arg1 __x, _Arg2 __y) const {
1430.516 +      return _M_ptr(__x, __y);
1430.517 +    }
1430.518 +};
1430.519 +
1430.520 +
1430.521 +#if defined(_STLP_DONT_RETURN_VOID) && !defined(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION)
1430.522 +//Partial specialization for the void type
1430.523 +template <class _Tp>
1430.524 +class mem_fun_t<void, _Tp> : public unary_function<_Tp*,void> {
1430.525 +  typedef void (_Tp::*__fun_type)(void);
1430.526 +public:
1430.527 +  explicit mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1430.528 +  void operator()(_Tp* __p) const { (__p->*_M_f)(); }
1430.529 +private:
1430.530 +  __fun_type _M_f;
1430.531 +};
1430.532 +
1430.533 +template <class _Tp>
1430.534 +class const_mem_fun_t<void, _Tp> : public unary_function<const _Tp*,void> {
1430.535 +  typedef void (_Tp::*__fun_type)(void) const;
1430.536 +public:
1430.537 +  explicit const_mem_fun_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1430.538 +  void operator()(const _Tp* __p) const { (__p->*_M_f)(); }
1430.539 +private:
1430.540 +  __fun_type _M_f;
1430.541 +};
1430.542 +
1430.543 +template <class _Tp>
1430.544 +class mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
1430.545 +  typedef void (_Tp::*__fun_type)(void);
1430.546 +public:
1430.547 +  explicit mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1430.548 +  void operator()(_Tp& __r) const { (__r.*_M_f)(); }
1430.549 +private:
1430.550 +  __fun_type _M_f;
1430.551 +};
1430.552 +
1430.553 +template <class _Tp>
1430.554 +class const_mem_fun_ref_t<void, _Tp> : public unary_function<_Tp,void> {
1430.555 +  typedef void (_Tp::*__fun_type)(void) const;
1430.556 +public:
1430.557 +  explicit const_mem_fun_ref_t _STLP_PSPEC2(void,_Tp) (__fun_type __pf) : _M_f(__pf) {}
1430.558 +  void operator()(const _Tp& __r) const { (__r.*_M_f)(); }
1430.559 +private:
1430.560 +  __fun_type _M_f;
1430.561 +};
1430.562 +
1430.563 +template <class _Tp, class _Arg>
1430.564 +class mem_fun1_t<void, _Tp, _Arg> : public binary_function<_Tp*,_Arg,void> {
1430.565 +  typedef void (_Tp::*__fun_type)(_Arg);
1430.566 +public:
1430.567 +  explicit mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1430.568 +  void operator()(_Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1430.569 +private:
1430.570 +  __fun_type _M_f;
1430.571 +};
1430.572 +
1430.573 +template <class _Tp, class _Arg>
1430.574 +class const_mem_fun1_t<void, _Tp, _Arg> 
1430.575 +  : public binary_function<const _Tp*,_Arg,void> {
1430.576 +  typedef void (_Tp::*__fun_type)(_Arg) const;
1430.577 +public:
1430.578 +  explicit const_mem_fun1_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1430.579 +  void operator()(const _Tp* __p, _Arg __x) const { (__p->*_M_f)(__x); }
1430.580 +private:
1430.581 +  __fun_type _M_f;
1430.582 +};
1430.583 +
1430.584 +template <class _Tp, class _Arg>
1430.585 +class mem_fun1_ref_t<void, _Tp, _Arg>
1430.586 +  : public binary_function<_Tp,_Arg,void> {
1430.587 +  typedef void (_Tp::*__fun_type)(_Arg);
1430.588 +public:
1430.589 +  explicit mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1430.590 +  void operator()(_Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }
1430.591 +private:
1430.592 +  __fun_type _M_f;
1430.593 +};
1430.594 +
1430.595 +template <class _Tp, class _Arg>
1430.596 +class const_mem_fun1_ref_t<void, _Tp, _Arg>
1430.597 +  : public binary_function<_Tp,_Arg,void> {
1430.598 +  typedef void (_Tp::*__fun_type)(_Arg) const;
1430.599 +public:
1430.600 +  explicit const_mem_fun1_ref_t _STLP_PSPEC3(void,_Tp,_Arg) (__fun_type __pf) : _M_f(__pf) {}
1430.601 +  void operator()(const _Tp& __r, _Arg __x) const { (__r.*_M_f)(__x); }
1430.602 +private:
1430.603 +  __fun_type _M_f;
1430.604 +};
1430.605 +
1430.606 +template <class _Arg>
1430.607 +class pointer_to_unary_function : public unary_function<_Arg, void> {
1430.608 +  typedef void (*__fun_type)(_Arg);
1430.609 +  __fun_type _M_ptr;
1430.610 +public:
1430.611 +  pointer_to_unary_function() {}
1430.612 +  explicit pointer_to_unary_function(__fun_type __x) : _M_ptr(__x) {}
1430.613 +  void operator()(_Arg __x) const { _M_ptr(__x); }
1430.614 +};
1430.615 +
1430.616 +template <class _Arg1, class _Arg2>
1430.617 +class pointer_to_binary_function : public binary_function<_Arg1,_Arg2,void> {
1430.618 +  typedef void (*__fun_type)(_Arg1, _Arg2);
1430.619 +  __fun_type _M_ptr;
1430.620 +public:
1430.621 +  pointer_to_binary_function() {}
1430.622 +  explicit pointer_to_binary_function(__fun_type __x) : _M_ptr(__x) {}
1430.623 +  void operator()(_Arg1 __x, _Arg2 __y) const { _M_ptr(__x, __y); }
1430.624 +};
1430.625 +
1430.626 +#endif /*_STLP_DONT_RETURN_VOID && !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION*/
1430.627 +
1430.628 +#else /*!_STLP_DONT_RETURN_VOID || !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION || !_STLP_MEMBER_TEMPLATE_CLASSES*/
1430.629 +
1430.630 +//mem_fun_t
1430.631 +template <class _Result, class _Tp>
1430.632 +class mem_fun_t : 
1430.633 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr {
1430.634 +  typedef typename
1430.635 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr _Base;
1430.636 +public:
1430.637 +  explicit mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.638 +};
1430.639 +
1430.640 +//const_mem_fun_t
1430.641 +template <class _Result, class _Tp>
1430.642 +class const_mem_fun_t : 
1430.643 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const {
1430.644 +  typedef typename
1430.645 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ptr_const _Base;
1430.646 +public:
1430.647 +  explicit const_mem_fun_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.648 +};
1430.649 +
1430.650 +//mem_fun_ref_t
1430.651 +template <class _Result, class _Tp>
1430.652 +class mem_fun_ref_t :
1430.653 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref {
1430.654 +  typedef typename
1430.655 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref _Base;
1430.656 +public:
1430.657 +  explicit mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.658 +};
1430.659 +
1430.660 +//const_mem_fun_ref_t
1430.661 +template <class _Result, class _Tp>
1430.662 +class const_mem_fun_ref_t :
1430.663 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const {
1430.664 +  typedef typename
1430.665 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args0<_Tp>::_Ref_const _Base;
1430.666 +public:
1430.667 +  explicit const_mem_fun_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.668 +};
1430.669 +
1430.670 +//mem_fun1_t
1430.671 +template <class _Result, class _Tp, class _Arg>
1430.672 +class mem_fun1_t :
1430.673 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr {
1430.674 +  typedef typename
1430.675 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr _Base;
1430.676 +public:
1430.677 +  explicit mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.678 +};
1430.679 +
1430.680 +//const_mem_fun1_t
1430.681 +template <class _Result, class _Tp, class _Arg>
1430.682 +class const_mem_fun1_t :
1430.683 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const {
1430.684 +  typedef typename
1430.685 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ptr_const _Base;
1430.686 +public:
1430.687 +  explicit const_mem_fun1_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.688 +};
1430.689 +
1430.690 +//mem_fun1_ref_t
1430.691 +template <class _Result, class _Tp, class _Arg>
1430.692 +class mem_fun1_ref_t :
1430.693 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref {
1430.694 +  typedef typename
1430.695 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref _Base;
1430.696 +public:
1430.697 +  explicit mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.698 +};
1430.699 +
1430.700 +//const_mem_fun1_t
1430.701 +template <class _Result, class _Tp, class _Arg>
1430.702 +class const_mem_fun1_ref_t :
1430.703 +  public _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const {
1430.704 +  typedef typename
1430.705 +    _Mem_fun_traits<_Result>::_STLP_TEMPLATE _Args1<_Tp,_Arg>::_Ref_const _Base;
1430.706 +public:
1430.707 +  explicit const_mem_fun1_ref_t(typename _Base::__fun_type __f) : _Base(__f) {}
1430.708 +};
1430.709 +
1430.710 +
1430.711 +template <class _Arg, class _Result>
1430.712 +class pointer_to_unary_function :
1430.713 +public _Ptr_fun1<_Result,_Arg> {
1430.714 +  typedef typename 
1430.715 +    _Ptr_fun1<_Result,_Arg>::__fun_type __fun_type;
1430.716 +public:
1430.717 +  explicit pointer_to_unary_function(__fun_type __f)
1430.718 +    : _Ptr_fun1<_Result,_Arg>(__f) {}
1430.719 +};
1430.720 +
1430.721 +template <class _Arg1, class _Arg2, class _Result>
1430.722 +class pointer_to_binary_function :
1430.723 +public _Ptr_fun2<_Result,_Arg1,_Arg2> {
1430.724 +  typedef typename
1430.725 +    _Ptr_fun2<_Result,_Arg1,_Arg2>::__fun_type __fun_type;
1430.726 +public:
1430.727 +  explicit pointer_to_binary_function(__fun_type __f)
1430.728 +    : _Ptr_fun2<_Result,_Arg1,_Arg2>(__f) {}
1430.729 +};
1430.730 +
1430.731 +#endif /*!_STLP_DONT_RETURN_VOID || !_STLP_NO_CLASS_PARTIAL_SPECIALIZATION || !_STLP_MEMBER_TEMPLATE_CLASSES*/
1430.732 +
1430.733 +
1430.734 +# if !defined (_STLP_MEMBER_POINTER_PARAM_BUG)
1430.735 +// Mem_fun adaptor helper functions.  There are only two:
1430.736 +//  mem_fun and mem_fun_ref.  (mem_fun1 and mem_fun1_ref 
1430.737 +//  are provided for backward compatibility, but they are no longer
1430.738 +//  part of the C++ standard.)
1430.739 +
1430.740 +template <class _Result, class _Tp>
1430.741 +inline mem_fun_t<_Result,_Tp> 
1430.742 +mem_fun(_Result (_Tp::*__f)()) { return mem_fun_t<_Result,_Tp>(__f); }
1430.743 +
1430.744 +template <class _Result, class _Tp>
1430.745 +inline const_mem_fun_t<_Result,_Tp> 
1430.746 +mem_fun(_Result (_Tp::*__f)() const)  { return const_mem_fun_t<_Result,_Tp>(__f); }
1430.747 +
1430.748 +template <class _Result, class _Tp>
1430.749 +inline mem_fun_ref_t<_Result,_Tp> 
1430.750 +mem_fun_ref(_Result (_Tp::*__f)())  { return mem_fun_ref_t<_Result,_Tp>(__f); }
1430.751 +
1430.752 +template <class _Result, class _Tp>
1430.753 +inline const_mem_fun_ref_t<_Result,_Tp> 
1430.754 +mem_fun_ref(_Result (_Tp::*__f)() const)  { return const_mem_fun_ref_t<_Result,_Tp>(__f); }
1430.755 +
1430.756 +template <class _Result, class _Tp, class _Arg>
1430.757 +inline mem_fun1_t<_Result,_Tp,_Arg> 
1430.758 +mem_fun(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1430.759 +
1430.760 +template <class _Result, class _Tp, class _Arg>
1430.761 +inline const_mem_fun1_t<_Result,_Tp,_Arg> 
1430.762 +mem_fun(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1430.763 +
1430.764 +template <class _Result, class _Tp, class _Arg>
1430.765 +inline mem_fun1_ref_t<_Result,_Tp,_Arg> 
1430.766 +mem_fun_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1430.767 +
1430.768 +template <class _Result, class _Tp, class _Arg>
1430.769 +inline const_mem_fun1_ref_t<_Result,_Tp,_Arg>
1430.770 +mem_fun_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1430.771 +
1430.772 +# if !(defined (_STLP_NO_EXTENSIONS) || defined (_STLP_NO_ANACHRONISMS))
1430.773 +//  mem_fun1 and mem_fun1_ref are no longer part of the C++ standard,
1430.774 +//  but they are provided for backward compatibility.
1430.775 +template <class _Result, class _Tp, class _Arg>
1430.776 +inline mem_fun1_t<_Result,_Tp,_Arg> 
1430.777 +mem_fun1(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1430.778 +
1430.779 +template <class _Result, class _Tp, class _Arg>
1430.780 +inline const_mem_fun1_t<_Result,_Tp,_Arg> 
1430.781 +mem_fun1(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_t<_Result,_Tp,_Arg>(__f); }
1430.782 +
1430.783 +template <class _Result, class _Tp, class _Arg>
1430.784 +inline mem_fun1_ref_t<_Result,_Tp,_Arg> 
1430.785 +mem_fun1_ref(_Result (_Tp::*__f)(_Arg)) { return mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1430.786 +
1430.787 +template <class _Result, class _Tp, class _Arg>
1430.788 +inline const_mem_fun1_ref_t<_Result,_Tp,_Arg>
1430.789 +mem_fun1_ref(_Result (_Tp::*__f)(_Arg) const) { return const_mem_fun1_ref_t<_Result,_Tp,_Arg>(__f); }
1430.790 +
1430.791 +# endif /* _STLP_NO_EXTENSIONS */
1430.792 +
1430.793 +# endif /* _STLP_MEMBER_POINTER_PARAM_BUG */
1430.794 +
1430.795 +template <class _Arg, class _Result>
1430.796 +inline pointer_to_unary_function<_Arg, _Result>
1430.797 +ptr_fun(_Result (*__f)(_Arg)) 
1430.798 +{ return pointer_to_unary_function<_Arg, _Result>(__f); }
1430.799 +
1430.800 +template <class _Arg1, class _Arg2, class _Result>
1430.801 +inline pointer_to_binary_function<_Arg1,_Arg2,_Result> 
1430.802 +ptr_fun(_Result (*__f)(_Arg1, _Arg2)) 
1430.803 +{ return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f); }
1430.804 +
1430.805 +_STLP_END_NAMESPACE
  1431.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1431.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_function_base.h	Wed Mar 31 12:27:01 2010 +0100
  1431.3 @@ -0,0 +1,226 @@
  1431.4 +/*
  1431.5 + *
  1431.6 + * Copyright (c) 1994
  1431.7 + * Hewlett-Packard Company
  1431.8 + *
  1431.9 + * Copyright (c) 1996-1998
 1431.10 + * Silicon Graphics Computer Systems, Inc.
 1431.11 + *
 1431.12 + * Copyright (c) 1997
 1431.13 + * Moscow Center for SPARC Technology
 1431.14 + *
 1431.15 + * Copyright (c) 1999 
 1431.16 + * Boris Fomitchev
 1431.17 + *
 1431.18 + * This material is provided "as is", with absolutely no warranty expressed
 1431.19 + * or implied. Any use is at your own risk.
 1431.20 + *
 1431.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1431.22 + * without fee, provided the above notices are retained on all copies.
 1431.23 + * Permission to modify the code and to distribute modified code is granted,
 1431.24 + * provided the above notices are retained, and a notice that the code was
 1431.25 + * modified is included with the above copyright notice.
 1431.26 + *
 1431.27 + */
 1431.28 +
 1431.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1431.30 + *   You should not attempt to use it directly.
 1431.31 + */
 1431.32 +
 1431.33 +#ifndef _STLP_INTERNAL_FUNCTION_BASE_H
 1431.34 +#define _STLP_INTERNAL_FUNCTION_BASE_H
 1431.35 +
 1431.36 +#ifndef _STLP_CONFIG_H
 1431.37 +#include <stl/_config.h>
 1431.38 +#endif
 1431.39 +
 1431.40 +_STLP_BEGIN_NAMESPACE
 1431.41 +
 1431.42 +template <class _Arg, class _Result>
 1431.43 +struct unary_function {
 1431.44 +  typedef _Arg argument_type;
 1431.45 +  typedef _Result result_type;
 1431.46 +};
 1431.47 +
 1431.48 +template <class _Arg1, class _Arg2, class _Result>
 1431.49 +struct binary_function {
 1431.50 +  typedef _Arg1 first_argument_type;
 1431.51 +  typedef _Arg2 second_argument_type;
 1431.52 +  typedef _Result result_type;
 1431.53 +};      
 1431.54 +
 1431.55 +template <class _Tp>
 1431.56 +struct equal_to : public binary_function<_Tp,_Tp,bool> 
 1431.57 +{
 1431.58 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x == __y; }
 1431.59 +};
 1431.60 +
 1431.61 +template <class _Tp>
 1431.62 +struct not_equal_to : public binary_function<_Tp,_Tp,bool> 
 1431.63 +{
 1431.64 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x != __y; }
 1431.65 +};
 1431.66 +
 1431.67 +template <class _Tp>
 1431.68 +struct greater : public binary_function<_Tp,_Tp,bool> 
 1431.69 +{
 1431.70 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x > __y; }
 1431.71 +};
 1431.72 +
 1431.73 +template <class _Tp>
 1431.74 +struct less : public binary_function<_Tp,_Tp,bool> 
 1431.75 +{
 1431.76 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
 1431.77 +};
 1431.78 +
 1431.79 +template <class _Tp>
 1431.80 +struct greater_equal : public binary_function<_Tp,_Tp,bool>
 1431.81 +{
 1431.82 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x >= __y; }
 1431.83 +};
 1431.84 +
 1431.85 +template <class _Tp>
 1431.86 +struct less_equal : public binary_function<_Tp,_Tp,bool> 
 1431.87 +{
 1431.88 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x <= __y; }
 1431.89 +};
 1431.90 +
 1431.91 +template <class _Tp>
 1431.92 +less<_Tp> __less(_Tp* ) { return less<_Tp>(); }
 1431.93 +
 1431.94 +template <class _Tp>
 1431.95 +equal_to<_Tp> __equal_to(_Tp* ) { return equal_to<_Tp>(); }
 1431.96 +
 1431.97 +template <class _Tp>
 1431.98 +struct plus : public binary_function<_Tp,_Tp,_Tp> {
 1431.99 +  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x + __y; }
1431.100 +};
1431.101 +
1431.102 +template <class _Tp>
1431.103 +struct minus : public binary_function<_Tp,_Tp,_Tp> {
1431.104 +  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x - __y; }
1431.105 +};
1431.106 +
1431.107 +template <class _Tp>
1431.108 +plus<_Tp> __plus(_Tp* ) { return plus<_Tp>(); }
1431.109 +
1431.110 +template <class _Tp>
1431.111 +minus<_Tp> __minus(_Tp* ) { return minus<_Tp>(); }
1431.112 +
1431.113 +template <class _Tp>
1431.114 +struct multiplies : public binary_function<_Tp,_Tp,_Tp> {
1431.115 +  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x * __y; }
1431.116 +};
1431.117 +
1431.118 +template <class _Tp>
1431.119 +struct divides : public binary_function<_Tp,_Tp,_Tp> {
1431.120 +  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x / __y; }
1431.121 +};
1431.122 +
1431.123 +template <class _Tp>
1431.124 +struct modulus : public binary_function<_Tp,_Tp,_Tp> 
1431.125 +{
1431.126 +  _Tp operator()(const _Tp& __x, const _Tp& __y) const { return __x % __y; }
1431.127 +};
1431.128 +
1431.129 +template <class _Tp>
1431.130 +struct negate : public unary_function<_Tp,_Tp> 
1431.131 +{
1431.132 +  _Tp operator()(const _Tp& __x) const { return -__x; }
1431.133 +};
1431.134 +
1431.135 +template <class _Tp>
1431.136 +struct logical_and : public binary_function<_Tp,_Tp,bool>
1431.137 +{
1431.138 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x && __y; }
1431.139 +};
1431.140 +
1431.141 +template <class _Tp>
1431.142 +struct logical_or : public binary_function<_Tp,_Tp,bool>
1431.143 +{
1431.144 +  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x || __y; }
1431.145 +};
1431.146 +
1431.147 +template <class _Tp>
1431.148 +struct logical_not : public unary_function<_Tp,bool>
1431.149 +{
1431.150 +  bool operator()(const _Tp& __x) const { return !__x; }
1431.151 +};
1431.152 +
1431.153 +template <class _Pair>
1431.154 +struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> {
1431.155 +  const typename _Pair::first_type& operator()(const _Pair& __x) const {
1431.156 +    return __x.first;
1431.157 +  }
1431.158 +};
1431.159 +
1431.160 +template <class _Pair>
1431.161 +struct _Select2nd : public unary_function<_Pair, typename _Pair::second_type>
1431.162 +{
1431.163 +  const typename _Pair::second_type& operator()(const _Pair& __x) const {
1431.164 +    return __x.second;
1431.165 +  }
1431.166 +};
1431.167 +
1431.168 +// project1st and project2nd are extensions: they are not part of the standard
1431.169 +template <class _Arg1, class _Arg2>
1431.170 +struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> {
1431.171 +  _Arg1 operator()(const _Arg1& __x, const _Arg2&) const { return __x; }
1431.172 +};
1431.173 +
1431.174 +template <class _Arg1, class _Arg2>
1431.175 +struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> {
1431.176 +  _Arg2 operator()(const _Arg1&, const _Arg2& __y) const { return __y; }
1431.177 +};
1431.178 +
1431.179 +#ifdef _STLP_MULTI_CONST_TEMPLATE_ARG_BUG
1431.180 +// fbp : sort of select1st just for maps
1431.181 +template <class _Pair, class _Whatever>		
1431.182 +// JDJ (CW Pro1 doesn't like const when first_type is also const)
1431.183 +struct __Select1st_hint : public unary_function<_Pair, _Whatever> {
1431.184 +    const _Whatever& operator () (const _Pair& __x) const { return __x.first; }
1431.185 +};
1431.186 +# define  _STLP_SELECT1ST(__x,__y) __Select1st_hint< __x, __y >
1431.187 +# else
1431.188 +# define  _STLP_SELECT1ST(__x, __y) _Select1st< __x >
1431.189 +# endif
1431.190 +
1431.191 +template <class _Tp>
1431.192 +struct _Identity : public unary_function<_Tp,_Tp> {
1431.193 +  const _Tp& operator()(const _Tp& __x) const { return __x; }
1431.194 +};
1431.195 +
1431.196 +template <class _Result, class _Argument>
1431.197 +struct _Constant_unary_fun {
1431.198 +  typedef _Argument argument_type;
1431.199 +  typedef  _Result  result_type;
1431.200 +  result_type _M_val;
1431.201 +
1431.202 +  _Constant_unary_fun(const result_type& __v) : _M_val(__v) {}
1431.203 +  const result_type& operator()(const _Argument&) const { return _M_val; }
1431.204 +};
1431.205 +
1431.206 +template <class _Result, class _Arg1, class _Arg2>
1431.207 +struct _Constant_binary_fun {
1431.208 +  typedef  _Arg1   first_argument_type;
1431.209 +  typedef  _Arg2   second_argument_type;
1431.210 +  typedef  _Result result_type;
1431.211 +  _Result _M_val;
1431.212 +
1431.213 +  _Constant_binary_fun(const _Result& __v) : _M_val(__v) {}
1431.214 +  const result_type& operator()(const _Arg1&, const _Arg2&) const {
1431.215 +    return _M_val;
1431.216 +  }
1431.217 +};
1431.218 +
1431.219 +// identity_element (not part of the C++ standard).
1431.220 +template <class _Tp> inline _Tp __identity_element(plus<_Tp>) {  return _Tp(0); }
1431.221 +template <class _Tp> inline _Tp __identity_element(multiplies<_Tp>) { return _Tp(1); }
1431.222 +
1431.223 +_STLP_END_NAMESPACE
1431.224 +
1431.225 +#endif /* _STLP_INTERNAL_FUNCTION_BASE_H */
1431.226 +
1431.227 +// Local Variables:
1431.228 +// mode:C++
1431.229 +// End:
  1432.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1432.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_hash_fun.h	Wed Mar 31 12:27:01 2010 +0100
  1432.3 @@ -0,0 +1,107 @@
  1432.4 +/*
  1432.5 + * Copyright (c) 1996-1998
  1432.6 + * Silicon Graphics Computer Systems, Inc.
  1432.7 + *
  1432.8 + * Permission to use, copy, modify, distribute and sell this software
  1432.9 + * and its documentation for any purpose is hereby granted without fee,
 1432.10 + * provided that the above copyright notice appear in all copies and
 1432.11 + * that both that copyright notice and this permission notice appear
 1432.12 + * in supporting documentation.  Silicon Graphics makes no
 1432.13 + * representations about the suitability of this software for any
 1432.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1432.15 + *
 1432.16 + *
 1432.17 + * Copyright (c) 1994
 1432.18 + * Hewlett-Packard Company
 1432.19 + *
 1432.20 + * Permission to use, copy, modify, distribute and sell this software
 1432.21 + * and its documentation for any purpose is hereby granted without fee,
 1432.22 + * provided that the above copyright notice appear in all copies and
 1432.23 + * that both that copyright notice and this permission notice appear
 1432.24 + * in supporting documentation.  Hewlett-Packard Company makes no
 1432.25 + * representations about the suitability of this software for any
 1432.26 + * purpose.  It is provided "as is" without express or implied warranty.
 1432.27 + *
 1432.28 + */
 1432.29 +
 1432.30 +/* NOTE: This is an internal header file, included by other STL headers.
 1432.31 + *   You should not attempt to use it directly.
 1432.32 + */
 1432.33 +
 1432.34 +#ifndef _STLP_HASH_FUN_H
 1432.35 +#define _STLP_HASH_FUN_H
 1432.36 +
 1432.37 +# ifndef _STLP_CSTDDEF
 1432.38 +#  include <cstddef>
 1432.39 +# endif
 1432.40 +
 1432.41 +_STLP_BEGIN_NAMESPACE
 1432.42 +
 1432.43 +template <class _Key> struct hash { };
 1432.44 +
 1432.45 +inline size_t __stl_hash_string(const char* __s)
 1432.46 +{
 1432.47 +  _STLP_FIX_LITERAL_BUG(__s)
 1432.48 +  unsigned long __h = 0; 
 1432.49 +  for ( ; *__s; ++__s)
 1432.50 +    __h = 5*__h + *__s;
 1432.51 +  
 1432.52 +  return size_t(__h);
 1432.53 +}
 1432.54 +
 1432.55 +_STLP_TEMPLATE_NULL struct hash<char*>
 1432.56 +{
 1432.57 +  size_t operator()(const char* __s) const { _STLP_FIX_LITERAL_BUG(__s) return __stl_hash_string(__s); }
 1432.58 +};
 1432.59 +
 1432.60 +_STLP_TEMPLATE_NULL struct hash<const char*>
 1432.61 +{
 1432.62 +  size_t operator()(const char* __s) const { _STLP_FIX_LITERAL_BUG(__s) return __stl_hash_string(__s); }
 1432.63 +};
 1432.64 +
 1432.65 +_STLP_TEMPLATE_NULL struct hash<char> {
 1432.66 +  size_t operator()(char __x) const { return __x; }
 1432.67 +};
 1432.68 +_STLP_TEMPLATE_NULL struct hash<unsigned char> {
 1432.69 +  size_t operator()(unsigned char __x) const { return __x; }
 1432.70 +};
 1432.71 +#ifndef _STLP_NO_SIGNED_BUILTINS
 1432.72 +_STLP_TEMPLATE_NULL struct hash<signed char> {
 1432.73 +  size_t operator()(unsigned char __x) const { return __x; }
 1432.74 +};
 1432.75 +#endif
 1432.76 +_STLP_TEMPLATE_NULL struct hash<short> {
 1432.77 +  size_t operator()(short __x) const { return __x; }
 1432.78 +};
 1432.79 +_STLP_TEMPLATE_NULL struct hash<unsigned short> {
 1432.80 +  size_t operator()(unsigned short __x) const { return __x; }
 1432.81 +};
 1432.82 +_STLP_TEMPLATE_NULL struct hash<int> {
 1432.83 +  size_t operator()(int __x) const { return __x; }
 1432.84 +};
 1432.85 +_STLP_TEMPLATE_NULL struct hash<unsigned int> {
 1432.86 +  size_t operator()(unsigned int __x) const { return __x; }
 1432.87 +};
 1432.88 +_STLP_TEMPLATE_NULL struct hash<long> {
 1432.89 +  size_t operator()(long __x) const { return __x; }
 1432.90 +};
 1432.91 +_STLP_TEMPLATE_NULL struct hash<unsigned long> {
 1432.92 +  size_t operator()(unsigned long __x) const { return __x; }
 1432.93 +};
 1432.94 +
 1432.95 +# if defined (_STLP_LONG_LONG)
 1432.96 +_STLP_TEMPLATE_NULL struct hash<_STLP_LONG_LONG> {
 1432.97 +  size_t operator()(long x) const { return x; }
 1432.98 +};
 1432.99 +_STLP_TEMPLATE_NULL struct hash<unsigned _STLP_LONG_LONG> {
1432.100 +  size_t operator()(unsigned long x) const { return x; }
1432.101 +};
1432.102 +# endif
1432.103 +
1432.104 +_STLP_END_NAMESPACE
1432.105 +
1432.106 +#endif /* _STLP_HASH_FUN_H */
1432.107 +
1432.108 +// Local Variables:
1432.109 +// mode:C++
1432.110 +// End:
  1433.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1433.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_hashtable.c	Wed Mar 31 12:27:01 2010 +0100
  1433.3 @@ -0,0 +1,471 @@
  1433.4 +/*
  1433.5 + *
  1433.6 + *
  1433.7 + * Copyright (c) 1994
  1433.8 + * Hewlett-Packard Company
  1433.9 + *
 1433.10 + * Copyright (c) 1996,1997
 1433.11 + * Silicon Graphics Computer Systems, Inc.
 1433.12 + *
 1433.13 + * Copyright (c) 1997
 1433.14 + * Moscow Center for SPARC Technology
 1433.15 + *
 1433.16 + * Copyright (c) 1999 
 1433.17 + * Boris Fomitchev
 1433.18 + *
 1433.19 + * This material is provided "as is", with absolutely no warranty expressed
 1433.20 + * or implied. Any use is at your own risk.
 1433.21 + *
 1433.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1433.23 + * without fee, provided the above notices are retained on all copies.
 1433.24 + * Permission to modify the code and to distribute modified code is granted,
 1433.25 + * provided the above notices are retained, and a notice that the code was
 1433.26 + * modified is included with the above copyright notice.
 1433.27 + *
 1433.28 + */
 1433.29 +#ifndef _STLP_HASHTABLE_C
 1433.30 +#define _STLP_HASHTABLE_C
 1433.31 +
 1433.32 +#ifndef _STLP_INTERNAL_HASHTABLE_H
 1433.33 +# include <stl/_hashtable.h>
 1433.34 +#endif
 1433.35 +
 1433.36 +#ifdef _STLP_DEBUG
 1433.37 +#  define hashtable __WORKAROUND_DBG_RENAME(hashtable)
 1433.38 +#endif
 1433.39 +
 1433.40 +_STLP_BEGIN_NAMESPACE
 1433.41 +
 1433.42 +# define __PRIME_LIST_BODY { \
 1433.43 +  53ul,         97ul,         193ul,       389ul,       769ul,      \
 1433.44 +  1543ul,       3079ul,       6151ul,      12289ul,     24593ul,    \
 1433.45 +  49157ul,      98317ul,      196613ul,    393241ul,    786433ul,   \
 1433.46 +  1572869ul,    3145739ul,    6291469ul,   12582917ul,  25165843ul, \
 1433.47 +  50331653ul,   100663319ul,  201326611ul, 402653189ul, 805306457ul,\
 1433.48 +  1610612741ul, 3221225473ul, 4294967291ul  \
 1433.49 +}
 1433.50 +
 1433.51 +#if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
 1433.52 +template <class _Tp>
 1433.53 +const size_t _Stl_prime<_Tp>::_M_list[__stl_num_primes] = __PRIME_LIST_BODY;
 1433.54 +#else
 1433.55 +__DECLARE_INSTANCE(const size_t, 
 1433.56 +		   _Stl_prime_type::_M_list[], =__PRIME_LIST_BODY);
 1433.57 +#endif /* _STLP_STATIC_TEMPLATE_DATA */
 1433.58 +
 1433.59 +# undef __PRIME_LIST_BODY
 1433.60 +
 1433.61 +// fbp: these defines are for outline methods definitions.
 1433.62 +// needed to definitions to be portable. Should not be used in method bodies.
 1433.63 +
 1433.64 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1433.65 +#  define __size_type__       size_t
 1433.66 +#  define size_type           size_t
 1433.67 +#  define value_type      _Val
 1433.68 +#  define key_type        _Key
 1433.69 +#  define _Node           _Hashtable_node<_Val>
 1433.70 +#  define __reference__       _Val&
 1433.71 +
 1433.72 +#  define __iterator__        _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>
 1433.73 +#  define __const_iterator__  _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>
 1433.74 +# else
 1433.75 +#  define __size_type__        _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::size_type
 1433.76 +#  define __reference__        _STLP_TYPENAME_ON_RETURN_TYPE  hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::reference
 1433.77 +#  define __iterator__         _STLP_TYPENAME_ON_RETURN_TYPE hashtable<_Val, _Key, _HF, _ExK, _EqK, _All>::iterator
 1433.78 +# endif
 1433.79 +
 1433.80 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, 
 1433.81 +          class _All>
 1433.82 +_Hashtable_node<_Val>*
 1433.83 +_Hashtable_iterator<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_skip_to_next() {
 1433.84 +  size_t __bucket = _M_ht->_M_bkt_num(_M_cur->_M_val);
 1433.85 +  size_t __h_sz;
 1433.86 +  __h_sz = this->_M_ht->bucket_count();
 1433.87 +
 1433.88 +  _Node* __i=0;
 1433.89 +  while (__i==0 && ++__bucket < __h_sz)
 1433.90 +    __i = (_Node*)_M_ht->_M_buckets[__bucket];
 1433.91 +  return __i;
 1433.92 +}
 1433.93 +
 1433.94 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, 
 1433.95 +          class _All>
 1433.96 +__size_type__
 1433.97 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_next_size(size_type __n) const    { 
 1433.98 +  const size_type* __first = (const size_type*)_Stl_prime_type::_M_list;
 1433.99 +  const size_type* __last =  (const size_type*)_Stl_prime_type::_M_list + (int)__stl_num_primes;
1433.100 +  const size_type* pos = __lower_bound(__first, __last, __n, __less((size_type*)0), (ptrdiff_t*)0);
1433.101 +  return (pos == __last ? *(__last - 1) : *pos);
1433.102 +}
1433.103 +
1433.104 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.105 +bool 
1433.106 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_equal(
1433.107 +						  const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht1,
1433.108 +						  const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht2)
1433.109 +{
1433.110 +  //  typedef _Hashtable_node<_Val> _Node;
1433.111 +  if (__ht1.bucket_count() != __ht2.bucket_count())
1433.112 +    return false;
1433.113 +  for (size_t __n = 0; __n < __ht1.bucket_count(); ++__n) {
1433.114 +    const _Node* __cur1 = __ht1._M_get_bucket(__n);
1433.115 +    const _Node* __cur2 = __ht2._M_get_bucket(__n);
1433.116 +    for ( ; __cur1 && __cur2 && __cur1->_M_val == __cur2->_M_val;
1433.117 +          __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next)
1433.118 +      {}
1433.119 +    if (__cur1 || __cur2)
1433.120 +      return false;
1433.121 +  }
1433.122 +  return true;
1433.123 +}  
1433.124 +
1433.125 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.126 +pair< _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All> , bool> 
1433.127 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.128 +  ::insert_unique_noresize(const value_type& __obj)
1433.129 +{
1433.130 +  const size_type __n = _M_bkt_num(__obj);
1433.131 +  _Node* __first = (_Node*)_M_buckets[__n];
1433.132 +
1433.133 +  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) 
1433.134 +    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj)))
1433.135 +      return pair<iterator, bool>(iterator(__cur, this), false);
1433.136 +
1433.137 +  _Node* __tmp = _M_new_node(__obj);
1433.138 +  __tmp->_M_next = __first;
1433.139 +  _M_buckets[__n] = __tmp;
1433.140 +  ++_M_num_elements._M_data;
1433.141 +  return pair<iterator, bool>(iterator(__tmp, this), true);
1433.142 +}
1433.143 +
1433.144 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.145 +__iterator__ 
1433.146 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.147 +  ::insert_equal_noresize(const value_type& __obj)
1433.148 +{
1433.149 +  const size_type __n = _M_bkt_num(__obj);
1433.150 +  _Node* __first = (_Node*)_M_buckets[__n];
1433.151 +
1433.152 +  for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) 
1433.153 +    if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) {
1433.154 +      _Node* __tmp = _M_new_node(__obj);
1433.155 +      __tmp->_M_next = __cur->_M_next;
1433.156 +      __cur->_M_next = __tmp;
1433.157 +      ++_M_num_elements._M_data;
1433.158 +      return iterator(__tmp, this);
1433.159 +    }
1433.160 +
1433.161 +  _Node* __tmp = _M_new_node(__obj);
1433.162 +  __tmp->_M_next = __first;
1433.163 +  _M_buckets[__n] = __tmp;
1433.164 +  ++_M_num_elements._M_data;
1433.165 +  return iterator(__tmp, this);
1433.166 +}
1433.167 +
1433.168 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.169 +__reference__ 
1433.170 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::_M_insert(const value_type& __obj)
1433.171 +{
1433.172 +  resize(_M_num_elements._M_data + 1);
1433.173 +
1433.174 +  size_type __n = _M_bkt_num(__obj);
1433.175 +  _Node* __first = (_Node*)_M_buckets[__n];
1433.176 +
1433.177 +  _Node* __tmp = _M_new_node(__obj);
1433.178 +  __tmp->_M_next = __first;
1433.179 +  _M_buckets[__n] = __tmp;
1433.180 +  ++_M_num_elements._M_data;
1433.181 +  return __tmp->_M_val;
1433.182 +}
1433.183 +
1433.184 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.185 +__reference__ 
1433.186 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::find_or_insert(const value_type& __obj)
1433.187 +{
1433.188 +
1433.189 +  _Node* __first = _M_find(_M_get_key(__obj));
1433.190 +  if (__first)
1433.191 +    return __first->_M_val;
1433.192 +  else
1433.193 +    return _M_insert(__obj);
1433.194 +}
1433.195 +
1433.196 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.197 +pair< _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>,
1433.198 +      _Ht_iterator<_Val, _Nonconst_traits<_Val>, _Key, _HF, _ExK, _EqK, _All> > 
1433.199 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::equal_range(const key_type& __key)
1433.200 +{
1433.201 +  typedef pair<iterator, iterator> _Pii;
1433.202 +  const size_type __n = _M_bkt_num_key(__key);
1433.203 +
1433.204 +  for (_Node* __first = (_Node*)_M_buckets[__n]; __first; __first = __first->_M_next)
1433.205 +    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
1433.206 +      for (_Node* __cur = __first->_M_next; __cur; __cur = __cur->_M_next)
1433.207 +        if (!_M_equals(_M_get_key(__cur->_M_val), __key))
1433.208 +          return _Pii(iterator(__first, this), iterator(__cur, this));
1433.209 +      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
1433.210 +        if (_M_buckets[__m])
1433.211 +          return _Pii(iterator(__first, this),
1433.212 +                     iterator((_Node*)_M_buckets[__m], this));
1433.213 +      return _Pii(iterator(__first, this), end());
1433.214 +    }
1433.215 +  return _Pii(end(), end());
1433.216 +}
1433.217 +
1433.218 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.219 +pair< _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All>, 
1433.220 +     _Ht_iterator<_Val, _Const_traits<_Val>, _Key, _HF, _ExK, _EqK, _All> > 
1433.221 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.222 +  ::equal_range(const key_type& __key) const
1433.223 +{
1433.224 +  typedef pair<const_iterator, const_iterator> _Pii;
1433.225 +  const size_type __n = _M_bkt_num_key(__key);
1433.226 +
1433.227 +  for (const _Node* __first = (_Node*)_M_buckets[__n] ;
1433.228 +       __first; 
1433.229 +       __first = __first->_M_next) {
1433.230 +    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
1433.231 +      for (const _Node* __cur = __first->_M_next;
1433.232 +           __cur;
1433.233 +           __cur = __cur->_M_next)
1433.234 +        if (!_M_equals(_M_get_key(__cur->_M_val), __key))
1433.235 +          return _Pii(const_iterator(__first, this),
1433.236 +                      const_iterator(__cur, this));
1433.237 +      for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m)
1433.238 +        if (_M_buckets[__m])
1433.239 +          return _Pii(const_iterator(__first, this),
1433.240 +                      const_iterator((_Node*)_M_buckets[__m], this));
1433.241 +      return _Pii(const_iterator(__first, this), end());
1433.242 +    }
1433.243 +  }
1433.244 +  return _Pii(end(), end());
1433.245 +}
1433.246 +
1433.247 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.248 +__size_type__ 
1433.249 +hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::erase(const key_type& __key)
1433.250 +{
1433.251 +  const size_type __n = _M_bkt_num_key(__key);
1433.252 +  _Node* __first = (_Node*)_M_buckets[__n];
1433.253 +  size_type __erased = 0;
1433.254 +
1433.255 +  if (__first) {
1433.256 +    _Node* __cur = __first;
1433.257 +    _Node* __next = __cur->_M_next;
1433.258 +    while (__next) {
1433.259 +      if (_M_equals(_M_get_key(__next->_M_val), __key)) {
1433.260 +        __cur->_M_next = __next->_M_next;
1433.261 +        _M_delete_node(__next);
1433.262 +        __next = __cur->_M_next;
1433.263 +        ++__erased;
1433.264 +        --_M_num_elements._M_data;
1433.265 +      }
1433.266 +      else {
1433.267 +        __cur = __next;
1433.268 +        __next = __cur->_M_next;
1433.269 +      }
1433.270 +    }
1433.271 +    if (_M_equals(_M_get_key(__first->_M_val), __key)) {
1433.272 +      _M_buckets[__n] = __first->_M_next;
1433.273 +      _M_delete_node(__first);
1433.274 +      ++__erased;
1433.275 +      --_M_num_elements._M_data;
1433.276 +    }
1433.277 +  }
1433.278 +  return __erased;
1433.279 +}
1433.280 +
1433.281 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.282 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::erase(const const_iterator& __it)
1433.283 +{
1433.284 +  // const iterator& __it = __REINTERPRET_CAST(const iterator&,_c_it);
1433.285 +  const _Node* __p = __it._M_cur;
1433.286 +  if (__p) {
1433.287 +    const size_type __n = _M_bkt_num(__p->_M_val);
1433.288 +    _Node* __cur = (_Node*)_M_buckets[__n];
1433.289 +
1433.290 +    if (__cur == __p) {
1433.291 +      _M_buckets[__n] = __cur->_M_next;
1433.292 +      _M_delete_node(__cur);
1433.293 +      --_M_num_elements._M_data;
1433.294 +    }
1433.295 +    else {
1433.296 +      _Node* __next = __cur->_M_next;
1433.297 +      while (__next) {
1433.298 +        if (__next == __p) {
1433.299 +          __cur->_M_next = __next->_M_next;
1433.300 +          _M_delete_node(__next);
1433.301 +          --_M_num_elements._M_data;
1433.302 +          break;
1433.303 +        }
1433.304 +        else {
1433.305 +          __cur = __next;
1433.306 +          __next = __cur->_M_next;
1433.307 +        }
1433.308 +      }
1433.309 +    }
1433.310 +  }
1433.311 +}
1433.312 +
1433.313 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.314 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.315 +  ::erase(const_iterator _c_first, const_iterator _c_last)
1433.316 +{
1433.317 +  iterator& __first = (iterator&)_c_first;
1433.318 +  iterator& __last = (iterator&)_c_last;
1433.319 +  size_type __f_bucket = __first._M_cur ? 
1433.320 +    _M_bkt_num(__first._M_cur->_M_val) : _M_buckets.size();
1433.321 +  size_type __l_bucket = __last._M_cur ? 
1433.322 +    _M_bkt_num(__last._M_cur->_M_val) : _M_buckets.size();
1433.323 +  if (__first._M_cur == __last._M_cur)
1433.324 +    return;
1433.325 +  else if (__f_bucket == __l_bucket)
1433.326 +    _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur);
1433.327 +  else {
1433.328 +    _M_erase_bucket(__f_bucket, __first._M_cur, 0);
1433.329 +    for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n)
1433.330 +      _M_erase_bucket(__n, 0);
1433.331 +    if (__l_bucket != _M_buckets.size())
1433.332 +      _M_erase_bucket(__l_bucket, __last._M_cur);
1433.333 +  }
1433.334 +}
1433.335 +
1433.336 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.337 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.338 +  ::resize(size_type __num_elements_hint)
1433.339 +{
1433.340 +  const size_type __old_n = _M_buckets.size();
1433.341 +  if (__num_elements_hint > __old_n) {
1433.342 +    const size_type __n = _M_next_size(__num_elements_hint);
1433.343 +    if (__n > __old_n) {
1433.344 +      _BucketVector __tmp(__n, (void*)(0),
1433.345 +			  _M_buckets.get_allocator());
1433.346 +      _STLP_PUSH_CLEANUP_ITEM(_BucketVector, &__tmp);
1433.347 +      _STLP_TRY {
1433.348 +        for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) {
1433.349 +          _Node* __first = (_Node*)_M_buckets[__bucket];
1433.350 +          while (__first) {
1433.351 +            size_type __new_bucket = _M_bkt_num(__first->_M_val, __n);
1433.352 +            _M_buckets[__bucket] = __first->_M_next;
1433.353 +            __first->_M_next = (_Node*)__tmp[__new_bucket];
1433.354 +            __tmp[__new_bucket] = __first;
1433.355 +            __first = (_Node*)_M_buckets[__bucket];          
1433.356 +          }
1433.357 +        }
1433.358 +        _M_buckets.swap(__tmp);
1433.359 +      }
1433.360 +      _STLP_CATCH_ALL {
1433.361 +        for (size_type __bucket = 0; __bucket < __tmp.size(); ++__bucket) {
1433.362 +          while (__tmp[__bucket]) {
1433.363 +            _Node* __next = ((_Node*)__tmp[__bucket])->_M_next;
1433.364 +            _M_delete_node((_Node*)__tmp[__bucket]);
1433.365 +            __tmp[__bucket] = __next;
1433.366 +          }
1433.367 +        }
1433.368 +        _STLP_RETHROW;
1433.369 +    }
1433.370 +#ifdef _STLP_USE_TRAP_LEAVE
1433.371 +      CleanupStack::Pop();
1433.372 +#endif
1433.373 +
1433.374 +    }
1433.375 +  }
1433.376 +}
1433.377 +
1433.378 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.379 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.380 +  ::_M_erase_bucket(const size_type __n, _Node* __first, _Node* __last)
1433.381 +{
1433.382 +  _Node* __cur = (_Node*)_M_buckets[__n];
1433.383 +  if (__cur == __first)
1433.384 +    _M_erase_bucket(__n, __last);
1433.385 +  else {
1433.386 +    _Node* __next;
1433.387 +    for (__next = __cur->_M_next; 
1433.388 +         __next != __first; 
1433.389 +         __cur = __next, __next = __cur->_M_next)
1433.390 +      ;
1433.391 +    while (__next != __last) {
1433.392 +      __cur->_M_next = __next->_M_next;
1433.393 +      _M_delete_node(__next);
1433.394 +      __next = __cur->_M_next;
1433.395 +      --_M_num_elements._M_data;
1433.396 +    }
1433.397 +  }
1433.398 +}
1433.399 +
1433.400 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.401 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.402 +  ::_M_erase_bucket(const size_type __n, _Node* __last)
1433.403 +{
1433.404 +  _Node* __cur = (_Node*)_M_buckets[__n];
1433.405 +  while (__cur && __cur != __last) {
1433.406 +    _Node* __next = __cur->_M_next;
1433.407 +    _M_delete_node(__cur);
1433.408 +    __cur = __next;
1433.409 +    _M_buckets[__n] = __cur;
1433.410 +    --_M_num_elements._M_data;
1433.411 +  }
1433.412 +}
1433.413 +
1433.414 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.415 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>::clear()
1433.416 +{
1433.417 +  for (size_type __i = 0; __i < _M_buckets.size(); ++__i) {
1433.418 +    _Node* __cur = (_Node*)_M_buckets[__i];
1433.419 +    while (__cur != 0) {
1433.420 +      _Node* __next = __cur->_M_next;
1433.421 +      _M_delete_node(__cur);
1433.422 +      __cur = __next;
1433.423 +    }
1433.424 +    _M_buckets[__i] = 0;
1433.425 +  }
1433.426 +  _M_num_elements._M_data = 0;
1433.427 +}
1433.428 +
1433.429 +    
1433.430 +template <class _Val, class _Key, class _HF, class _ExK, class _EqK, class _All>
1433.431 +void hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>
1433.432 +  ::_M_copy_from(const hashtable<_Val,_Key,_HF,_ExK,_EqK,_All>& __ht)
1433.433 +{
1433.434 +  _M_buckets.clear();
1433.435 +  _M_buckets.reserve(__ht._M_buckets.size());
1433.436 +  _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (void*) 0);
1433.437 +  _STLP_TRY {
1433.438 +    for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) {
1433.439 +      const _Node* __cur = (_Node*)__ht._M_buckets[__i];
1433.440 +      if (__cur) {
1433.441 +        _Node* __xcopy = _M_new_node(__cur->_M_val);
1433.442 +        _M_buckets[__i] = __xcopy;
1433.443 +
1433.444 +        for (_Node* __next = __cur->_M_next; 
1433.445 +             __next; 
1433.446 +             __cur = __next, __next = __cur->_M_next) {
1433.447 +          __xcopy->_M_next = _M_new_node(__next->_M_val);
1433.448 +          __xcopy = __xcopy->_M_next;
1433.449 +        }
1433.450 +      }
1433.451 +    }
1433.452 +    _M_num_elements._M_data = __ht._M_num_elements._M_data;
1433.453 +  }
1433.454 +  _STLP_UNWIND(clear());
1433.455 +}
1433.456 +
1433.457 +# undef __iterator__ 
1433.458 +# undef const_iterator
1433.459 +# undef __size_type__
1433.460 +# undef __reference__
1433.461 +# undef size_type       
1433.462 +# undef value_type      
1433.463 +# undef key_type        
1433.464 +# undef _Node            
1433.465 +# undef __stl_num_primes
1433.466 +# undef hashtable
1433.467 +
1433.468 +_STLP_END_NAMESPACE
1433.469 +
1433.470 +#endif /*  _STLP_HASHTABLE_C */
1433.471 +
1433.472 +// Local Variables:
1433.473 +// mode:C++
1433.474 +// End:
  1434.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1434.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_heap.c	Wed Mar 31 12:27:01 2010 +0100
  1434.3 @@ -0,0 +1,242 @@
  1434.4 +/*
  1434.5 + *
  1434.6 + *
  1434.7 + * Copyright (c) 1994
  1434.8 + * Hewlett-Packard Company
  1434.9 + *
 1434.10 + * Copyright (c) 1996,1997
 1434.11 + * Silicon Graphics Computer Systems, Inc.
 1434.12 + *
 1434.13 + * Copyright (c) 1997
 1434.14 + * Moscow Center for SPARC Technology
 1434.15 + *
 1434.16 + * Copyright (c) 1999 
 1434.17 + * Boris Fomitchev
 1434.18 + *
 1434.19 + * This material is provided "as is", with absolutely no warranty expressed
 1434.20 + * or implied. Any use is at your own risk.
 1434.21 + *
 1434.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1434.23 + * without fee, provided the above notices are retained on all copies.
 1434.24 + * Permission to modify the code and to distribute modified code is granted,
 1434.25 + * provided the above notices are retained, and a notice that the code was
 1434.26 + * modified is included with the above copyright notice.
 1434.27 + *
 1434.28 + */
 1434.29 +#ifndef _STLP_HEAP_C
 1434.30 +#define _STLP_HEAP_C
 1434.31 +
 1434.32 +#ifndef _STLP_INTERNAL_HEAP_H
 1434.33 +# include <stl/_heap.h>
 1434.34 +#endif
 1434.35 +
 1434.36 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1434.37 +# include <stl/_iterator_base.h>
 1434.38 +#endif
 1434.39 +
 1434.40 +_STLP_BEGIN_NAMESPACE
 1434.41 +
 1434.42 +template <class _RandomAccessIterator, class _Distance, class _Tp>
 1434.43 +_STLP_INLINE_LOOP
 1434.44 +void 
 1434.45 +__push_heap(_RandomAccessIterator __first,
 1434.46 +            _Distance __holeIndex, _Distance __topIndex, _Tp __val)
 1434.47 +{
 1434.48 +  _Distance __parent = (__holeIndex - 1) / 2;
 1434.49 +  while (__holeIndex > __topIndex && *(__first + __parent) < __val) {
 1434.50 +    *(__first + __holeIndex) = *(__first + __parent);
 1434.51 +    __holeIndex = __parent;
 1434.52 +    __parent = (__holeIndex - 1) / 2;
 1434.53 +  }    
 1434.54 +  *(__first + __holeIndex) = __val;
 1434.55 +}
 1434.56 +
 1434.57 +template <class _RandomAccessIterator, class _Distance, class _Tp>
 1434.58 +inline void 
 1434.59 +__push_heap_aux(_RandomAccessIterator __first,
 1434.60 +                _RandomAccessIterator __last, _Distance*, _Tp*)
 1434.61 +{
 1434.62 +  __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), 
 1434.63 +              _Tp(*(__last - 1)));
 1434.64 +}
 1434.65 +
 1434.66 +template <class _RandomAccessIterator>
 1434.67 +void 
 1434.68 +push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
 1434.69 +{
 1434.70 +  __push_heap_aux(__first, __last,
 1434.71 +                  _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator), _STLP_VALUE_TYPE(__first, _RandomAccessIterator));
 1434.72 +}
 1434.73 +
 1434.74 +
 1434.75 +template <class _RandomAccessIterator, class _Distance, class _Tp, 
 1434.76 +          class _Compare>
 1434.77 +_STLP_INLINE_LOOP
 1434.78 +void
 1434.79 +__push_heap(_RandomAccessIterator __first, _Distance __holeIndex,
 1434.80 +            _Distance __topIndex, _Tp __val, _Compare __comp)
 1434.81 +{
 1434.82 +  _Distance __parent = (__holeIndex - 1) / 2;
 1434.83 +  while (__holeIndex > __topIndex && __comp(*(__first + __parent), __val)) {
 1434.84 +    *(__first + __holeIndex) = *(__first + __parent);
 1434.85 +    __holeIndex = __parent;
 1434.86 +    __parent = (__holeIndex - 1) / 2;
 1434.87 +  }
 1434.88 +  *(__first + __holeIndex) = __val;
 1434.89 +}
 1434.90 +
 1434.91 +template <class _RandomAccessIterator, class _Compare,
 1434.92 +          class _Distance, class _Tp>
 1434.93 +inline void 
 1434.94 +__push_heap_aux(_RandomAccessIterator __first,
 1434.95 +                _RandomAccessIterator __last, _Compare __comp,
 1434.96 +                _Distance*, _Tp*) 
 1434.97 +{
 1434.98 +  __push_heap(__first, _Distance((__last - __first) - 1), _Distance(0), 
 1434.99 +              _Tp(*(__last - 1)), __comp);
1434.100 +}
1434.101 +
1434.102 +template <class _RandomAccessIterator, class _Compare>
1434.103 +void 
1434.104 +push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
1434.105 +          _Compare __comp) 
1434.106 +{
1434.107 +  __push_heap_aux(__first, __last, __comp,
1434.108 +                  _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator), _STLP_VALUE_TYPE(__first, _RandomAccessIterator));
1434.109 +}
1434.110 +
1434.111 +template <class _RandomAccessIterator, class _Distance, class _Tp>
1434.112 +void 
1434.113 +__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
1434.114 +              _Distance __len, _Tp __val) {
1434.115 +  _Distance __topIndex = __holeIndex;
1434.116 +  _Distance __secondChild = 2 * __holeIndex + 2;
1434.117 +  while (__secondChild < __len) {
1434.118 +    if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))
1434.119 +      __secondChild--;
1434.120 +    *(__first + __holeIndex) = *(__first + __secondChild);
1434.121 +    __holeIndex = __secondChild;
1434.122 +    __secondChild = 2 * (__secondChild + 1);
1434.123 +  }
1434.124 +  if (__secondChild == __len) {
1434.125 +    *(__first + __holeIndex) = *(__first + (__secondChild - 1));
1434.126 +    __holeIndex = __secondChild - 1;
1434.127 +  }
1434.128 +  __push_heap(__first, __holeIndex, __topIndex, __val);
1434.129 +}
1434.130 +
1434.131 +
1434.132 +template <class _RandomAccessIterator, class _Tp>
1434.133 +inline void 
1434.134 +__pop_heap_aux(_RandomAccessIterator __first, _RandomAccessIterator __last, _Tp*) {
1434.135 +  __pop_heap(__first, __last - 1, __last - 1, 
1434.136 +             _Tp(*(__last - 1)), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1434.137 +}
1434.138 +
1434.139 +template <class _RandomAccessIterator>
1434.140 +void pop_heap(_RandomAccessIterator __first, 
1434.141 +	      _RandomAccessIterator __last) {
1434.142 +  __pop_heap_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIterator));
1434.143 +}
1434.144 +
1434.145 +template <class _RandomAccessIterator, class _Distance,
1434.146 +          class _Tp, class _Compare>
1434.147 +void
1434.148 +__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
1434.149 +              _Distance __len, _Tp __val, _Compare __comp)
1434.150 +{
1434.151 +  _Distance __topIndex = __holeIndex;
1434.152 +  _Distance __secondChild = 2 * __holeIndex + 2;
1434.153 +  while (__secondChild < __len) {
1434.154 +    if (__comp(*(__first + __secondChild), *(__first + (__secondChild - 1))))
1434.155 +      __secondChild--;
1434.156 +    *(__first + __holeIndex) = *(__first + __secondChild);
1434.157 +    __holeIndex = __secondChild;
1434.158 +    __secondChild = 2 * (__secondChild + 1);
1434.159 +  }
1434.160 +  if (__secondChild == __len) {
1434.161 +    *(__first + __holeIndex) = *(__first + (__secondChild - 1));
1434.162 +    __holeIndex = __secondChild - 1;
1434.163 +  }
1434.164 +  __push_heap(__first, __holeIndex, __topIndex, __val, __comp);
1434.165 +}
1434.166 +
1434.167 +
1434.168 +template <class _RandomAccessIterator, class _Tp, class _Compare>
1434.169 +inline void 
1434.170 +__pop_heap_aux(_RandomAccessIterator __first,
1434.171 +               _RandomAccessIterator __last, _Tp*, _Compare __comp)
1434.172 +{
1434.173 +  __pop_heap(__first, __last - 1, __last - 1, _Tp(*(__last - 1)), __comp,
1434.174 +             _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1434.175 +}
1434.176 +
1434.177 +
1434.178 +template <class _RandomAccessIterator, class _Compare>
1434.179 +void 
1434.180 +pop_heap(_RandomAccessIterator __first,
1434.181 +         _RandomAccessIterator __last, _Compare __comp)
1434.182 +{
1434.183 +    __pop_heap_aux(__first, __last, _STLP_VALUE_TYPE(__first, _RandomAccessIterator), __comp);
1434.184 +}
1434.185 +
1434.186 +template <class _RandomAccessIterator, class _Tp, class _Distance>
1434.187 +_STLP_INLINE_LOOP
1434.188 +void 
1434.189 +__make_heap(_RandomAccessIterator __first,
1434.190 +            _RandomAccessIterator __last, _Tp*, _Distance*)
1434.191 +{
1434.192 +  if (__last - __first < 2) return;
1434.193 +  _Distance __len = __last - __first;
1434.194 +  _Distance __parent = (__len - 2)/2;
1434.195 +    
1434.196 +  while (true) {
1434.197 +    __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)));
1434.198 +    if (__parent == 0) return;
1434.199 +    __parent--;
1434.200 +  }
1434.201 +}
1434.202 +
1434.203 +template <class _RandomAccessIterator>
1434.204 +void 
1434.205 +make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
1434.206 +{
1434.207 +  __make_heap(__first, __last,
1434.208 +              _STLP_VALUE_TYPE(__first, _RandomAccessIterator), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1434.209 +}
1434.210 +
1434.211 +template <class _RandomAccessIterator, class _Compare,
1434.212 +          class _Tp, class _Distance>
1434.213 +_STLP_INLINE_LOOP
1434.214 +void
1434.215 +__make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
1434.216 +            _Compare __comp, _Tp*, _Distance*)
1434.217 +{
1434.218 +  if (__last - __first < 2) return;
1434.219 +  _Distance __len = __last - __first;
1434.220 +  _Distance __parent = (__len - 2)/2;
1434.221 +    
1434.222 +  while (true) {
1434.223 +    __adjust_heap(__first, __parent, __len, _Tp(*(__first + __parent)),
1434.224 +                  __comp);
1434.225 +    if (__parent == 0) return;
1434.226 +    __parent--;
1434.227 +  }
1434.228 +}
1434.229 +
1434.230 +template <class _RandomAccessIterator, class _Compare>
1434.231 +void 
1434.232 +make_heap(_RandomAccessIterator __first, 
1434.233 +          _RandomAccessIterator __last, _Compare __comp)
1434.234 +{
1434.235 +  __make_heap(__first, __last, __comp,
1434.236 +              _STLP_VALUE_TYPE(__first, _RandomAccessIterator), _STLP_DISTANCE_TYPE(__first, _RandomAccessIterator));
1434.237 +}
1434.238 +
1434.239 +_STLP_END_NAMESPACE
1434.240 +
1434.241 +#endif /*  _STLP_HEAP_C */
1434.242 +
1434.243 +// Local Variables:
1434.244 +// mode:C++
1434.245 +// End:
  1435.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1435.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_heap.h	Wed Mar 31 12:27:01 2010 +0100
  1435.3 @@ -0,0 +1,129 @@
  1435.4 +/*
  1435.5 + *
  1435.6 + * Copyright (c) 1994
  1435.7 + * Hewlett-Packard Company
  1435.8 + *
  1435.9 + * Permission to use, copy, modify, distribute and sell this software
 1435.10 + * and its documentation for any purpose is hereby granted without fee,
 1435.11 + * provided that the above copyright notice appear in all copies and
 1435.12 + * that both that copyright notice and this permission notice appear
 1435.13 + * in supporting documentation.  Hewlett-Packard Company makes no
 1435.14 + * representations about the suitability of this software for any
 1435.15 + * purpose.  It is provided "as is" without express or implied warranty.
 1435.16 + *
 1435.17 + * Copyright (c) 1997
 1435.18 + * Silicon Graphics Computer Systems, Inc.
 1435.19 + *
 1435.20 + * Permission to use, copy, modify, distribute and sell this software
 1435.21 + * and its documentation for any purpose is hereby granted without fee,
 1435.22 + * provided that the above copyright notice appear in all copies and
 1435.23 + * that both that copyright notice and this permission notice appear
 1435.24 + * in supporting documentation.  Silicon Graphics makes no
 1435.25 + * representations about the suitability of this software for any
 1435.26 + * purpose.  It is provided "as is" without express or implied warranty.
 1435.27 + */
 1435.28 +
 1435.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1435.30 + *   You should not attempt to use it directly.
 1435.31 + */
 1435.32 +
 1435.33 +#ifndef _STLP_INTERNAL_HEAP_H
 1435.34 +#define _STLP_INTERNAL_HEAP_H
 1435.35 +
 1435.36 +#ifndef _STLP_CONFIG_H
 1435.37 +#include <stl/_config.h>
 1435.38 +#endif
 1435.39 +
 1435.40 +_STLP_BEGIN_NAMESPACE
 1435.41 +
 1435.42 +// Heap-manipulation functions: push_heap, pop_heap, make_heap, sort_heap.
 1435.43 +
 1435.44 +template <class _RandomAccessIterator>
 1435.45 +void 
 1435.46 +push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);
 1435.47 +
 1435.48 +
 1435.49 +template <class _RandomAccessIterator, class _Compare>
 1435.50 +void 
 1435.51 +push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
 1435.52 +          _Compare __comp);
 1435.53 +
 1435.54 +template <class _RandomAccessIterator, class _Distance, class _Tp>
 1435.55 +void 
 1435.56 +__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
 1435.57 +              _Distance __len, _Tp __val);
 1435.58 +
 1435.59 +template <class _RandomAccessIterator, class _Tp, class _Distance>
 1435.60 +inline void 
 1435.61 +__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
 1435.62 +           _RandomAccessIterator __result, _Tp __val, _Distance*)
 1435.63 +{
 1435.64 +  *__result = *__first;
 1435.65 +  __adjust_heap(__first, _Distance(0), _Distance(__last - __first), __val);
 1435.66 +}
 1435.67 +
 1435.68 +template <class _RandomAccessIterator>
 1435.69 +void pop_heap(_RandomAccessIterator __first, 
 1435.70 +	      _RandomAccessIterator __last);
 1435.71 +
 1435.72 +template <class _RandomAccessIterator, class _Distance,
 1435.73 +          class _Tp, class _Compare>
 1435.74 +void
 1435.75 +__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
 1435.76 +              _Distance __len, _Tp __val, _Compare __comp);
 1435.77 +
 1435.78 +template <class _RandomAccessIterator, class _Tp, class _Compare, 
 1435.79 +          class _Distance>
 1435.80 +inline void 
 1435.81 +__pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
 1435.82 +           _RandomAccessIterator __result, _Tp __val, _Compare __comp,
 1435.83 +           _Distance*)
 1435.84 +{
 1435.85 +  *__result = *__first;
 1435.86 +  __adjust_heap(__first, _Distance(0), _Distance(__last - __first), 
 1435.87 +                __val, __comp);
 1435.88 +}
 1435.89 +
 1435.90 +template <class _RandomAccessIterator, class _Compare>
 1435.91 +void 
 1435.92 +pop_heap(_RandomAccessIterator __first,
 1435.93 +         _RandomAccessIterator __last, _Compare __comp);
 1435.94 +
 1435.95 +template <class _RandomAccessIterator>
 1435.96 +void 
 1435.97 +make_heap(_RandomAccessIterator __first, _RandomAccessIterator __last);
 1435.98 +
 1435.99 +template <class _RandomAccessIterator, class _Compare>
1435.100 +void 
1435.101 +make_heap(_RandomAccessIterator __first, 
1435.102 +          _RandomAccessIterator __last, _Compare __comp);
1435.103 +
1435.104 +template <class _RandomAccessIterator>
1435.105 +_STLP_INLINE_LOOP
1435.106 +void sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
1435.107 +{
1435.108 +  while (__last - __first > 1)
1435.109 +    pop_heap(__first, __last--);
1435.110 +}
1435.111 +
1435.112 +template <class _RandomAccessIterator, class _Compare>
1435.113 +_STLP_INLINE_LOOP
1435.114 +void 
1435.115 +sort_heap(_RandomAccessIterator __first,
1435.116 +          _RandomAccessIterator __last, _Compare __comp)
1435.117 +{
1435.118 +  while (__last - __first > 1)
1435.119 +    pop_heap(__first, __last--, __comp);
1435.120 +}
1435.121 +
1435.122 +_STLP_END_NAMESPACE
1435.123 +
1435.124 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1435.125 +#  include <stl/_heap.c>
1435.126 +# endif
1435.127 +
1435.128 +#endif /* _STLP_INTERNAL_HEAP_H */
1435.129 +
1435.130 +// Local Variables:
1435.131 +// mode:C++
1435.132 +// End:
  1436.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1436.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ios.c	Wed Mar 31 12:27:01 2010 +0100
  1436.3 @@ -0,0 +1,134 @@
  1436.4 +/*
  1436.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1436.6 + * Copyright (c) 1999
  1436.7 + * Silicon Graphics Computer Systems, Inc.
  1436.8 + *
  1436.9 + * Copyright (c) 1999 
 1436.10 + * Boris Fomitchev
 1436.11 + *
 1436.12 + * This material is provided "as is", with absolutely no warranty expressed
 1436.13 + * or implied. Any use is at your own risk.
 1436.14 + *
 1436.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1436.16 + * without fee, provided the above notices are retained on all copies.
 1436.17 + * Permission to modify the code and to distribute modified code is granted,
 1436.18 + * provided the above notices are retained, and a notice that the code was
 1436.19 + * modified is included with the above copyright notice.
 1436.20 + *
 1436.21 + */ 
 1436.22 +#ifndef _STLP_IOS_C
 1436.23 +#define _STLP_IOS_C
 1436.24 +
 1436.25 +#ifndef _STLP_INTERNAL_IOS_H
 1436.26 +# include <stl/_ios.h>
 1436.27 +#endif
 1436.28 +
 1436.29 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1436.30 +
 1436.31 +#ifndef _STLP_INTERNAL_STREAMBUF
 1436.32 +# include <stl/_streambuf.h>
 1436.33 +#endif
 1436.34 +
 1436.35 +#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1436.36 +# include <stl/_numpunct.h>
 1436.37 +#endif
 1436.38 +
 1436.39 +_STLP_BEGIN_NAMESPACE
 1436.40 +
 1436.41 +// basic_ios<>'s non-inline member functions
 1436.42 +
 1436.43 +// Public constructor, taking a streambuf.
 1436.44 +template <class _CharT, class _Traits>
 1436.45 +basic_ios<_CharT, _Traits>
 1436.46 +  ::basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf)
 1436.47 +    : ios_base(),
 1436.48 +      _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0)
 1436.49 +{
 1436.50 +  init(__streambuf);
 1436.51 +}
 1436.52 +
 1436.53 +template <class _CharT, class _Traits>
 1436.54 +basic_streambuf<_CharT, _Traits>*
 1436.55 +basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __buf)
 1436.56 +{
 1436.57 +  basic_streambuf<_CharT, _Traits>* __tmp = _M_streambuf;
 1436.58 +  _M_streambuf = __buf;
 1436.59 +  this->clear();
 1436.60 +  return __tmp;
 1436.61 +}
 1436.62 +
 1436.63 +template <class _CharT, class _Traits>
 1436.64 +basic_ios<_CharT, _Traits>&
 1436.65 +basic_ios<_CharT, _Traits>::copyfmt(const basic_ios<_CharT, _Traits>& __x)
 1436.66 +{
 1436.67 +  _M_invoke_callbacks(erase_event);
 1436.68 +  _M_copy_state(__x);           // Inherited from ios_base.
 1436.69 +  _M_fill = __x._M_fill;
 1436.70 +  _M_tied_ostream = __x._M_tied_ostream;
 1436.71 +  _M_invoke_callbacks(copyfmt_event);
 1436.72 + // this->_M_set_exception_mask(__x.exceptions()); //Exceptions should  copy not simply set. should throw exception if mask&state ==1 ,while copying exception.
 1436.73 +  this->exceptions(__x.exceptions());
 1436.74 +  return *this;
 1436.75 +}
 1436.76 +//#ifndef __SYMBIAN32__ // Moved to src
 1436.77 +template <class _CharT, class _Traits>
 1436.78 +locale basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
 1436.79 +{
 1436.80 +  locale __tmp = ios_base::imbue(__loc);
 1436.81 +
 1436.82 +  if (_M_streambuf)
 1436.83 +    _M_streambuf->pubimbue(__loc);
 1436.84 +
 1436.85 +  // no throwing here
 1436.86 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1436.87 +  this->_M_cached_ctype = __loc._M_get_facet(ctype<char_type>::GetFacetLocaleId()) ;
 1436.88 +  this->_M_cached_numpunct = __loc._M_get_facet(numpunct<char_type>::GetFacetLocaleId()) ;
 1436.89 +#else
 1436.90 +  this->_M_cached_ctype = __loc._M_get_facet(ctype<char_type>::id) ;
 1436.91 +  this->_M_cached_numpunct = __loc._M_get_facet(numpunct<char_type>::id) ;
 1436.92 +#endif //__LIBSTD_CPP_SYMBIAN32_WSD__
 1436.93 +  this->_M_cached_grouping = ((numpunct<char_type>*)_M_cached_numpunct)->grouping() ;
 1436.94 +  return __tmp;
 1436.95 +}
 1436.96 +//#endif // __SYMBIAN32__
 1436.97 +// Protected constructor and initialization functions. The default
 1436.98 +// constructor creates an uninitialized basic_ios, and init() initializes
 1436.99 +// all of the members to the values in Table 89 of the C++ standard.
1436.100 +
1436.101 +template <class _CharT, class _Traits>
1436.102 +basic_ios<_CharT, _Traits>::basic_ios()
1436.103 +  : ios_base(),
1436.104 +    _M_fill(_STLP_NULL_CHAR_INIT(_CharT)), _M_streambuf(0), _M_tied_ostream(0)
1436.105 +{}
1436.106 +
1436.107 +template <class _CharT, class _Traits>
1436.108 +void
1436.109 +basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
1436.110 +{
1436.111 +  this->rdbuf(__sb);
1436.112 +  this->imbue(locale());
1436.113 +  this->tie(0);
1436.114 +  this->_M_set_exception_mask(ios_base::goodbit);
1436.115 +  this->_M_clear_nothrow(__sb != 0 ? ios_base::goodbit : ios_base::badbit);
1436.116 +  ios_base::flags(ios_base::skipws | ios_base::dec);
1436.117 +  ios_base::width(0);
1436.118 +  ios_base::precision(6);
1436.119 +  this->fill(widen(' '));
1436.120 +  // We don't need to worry about any of the three arrays: they are
1436.121 +  // initialized correctly in ios_base's constructor.
1436.122 +}
1436.123 +
1436.124 +// This is never called except from within a catch clause.
1436.125 +template <class _CharT, class _Traits>
1436.126 +void basic_ios<_CharT, _Traits>::_M_handle_exception(ios_base::iostate __flag)
1436.127 +{
1436.128 +  this->_M_setstate_nothrow(__flag);
1436.129 +  if (this->_M_get_exception_mask() & __flag)
1436.130 +    _STLP_RETHROW;
1436.131 +}
1436.132 +
1436.133 +_STLP_END_NAMESPACE
1436.134 +
1436.135 +#endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1436.136 +
1436.137 +#endif /* _STLP_IOS_C */
  1437.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1437.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ios.h	Wed Mar 31 12:27:01 2010 +0100
  1437.3 @@ -0,0 +1,204 @@
  1437.4 +/*
  1437.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1437.6 + * Copyright (c) 1999
  1437.7 + * Silicon Graphics Computer Systems, Inc.
  1437.8 + *
  1437.9 + * Copyright (c) 1999 
 1437.10 + * Boris Fomitchev
 1437.11 + *
 1437.12 + * This material is provided "as is", with absolutely no warranty expressed
 1437.13 + * or implied. Any use is at your own risk.
 1437.14 + *
 1437.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1437.16 + * without fee, provided the above notices are retained on all copies.
 1437.17 + * Permission to modify the code and to distribute modified code is granted,
 1437.18 + * provided the above notices are retained, and a notice that the code was
 1437.19 + * modified is included with the above copyright notice.
 1437.20 + *
 1437.21 + */ 
 1437.22 +#ifndef _STLP_INTERNAL_IOS_H
 1437.23 +#define _STLP_INTERNAL_IOS_H
 1437.24 +
 1437.25 +
 1437.26 +#ifndef _STLP_IOS_BASE_H
 1437.27 +# include <stl/_ios_base.h>
 1437.28 +#endif
 1437.29 +
 1437.30 +#ifndef _STLP_INTERNAL_CTYPE_H
 1437.31 +# include <stl/_ctype.h>
 1437.32 +#endif
 1437.33 +#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1437.34 +# include <stl/_numpunct.h>
 1437.35 +#endif
 1437.36 +
 1437.37 +_STLP_BEGIN_NAMESPACE
 1437.38 +
 1437.39 +// ----------------------------------------------------------------------
 1437.40 +
 1437.41 +// Class basic_ios, a subclass of ios_base.  The only important difference
 1437.42 +// between the two is that basic_ios is a class template, parameterized
 1437.43 +// by the character type.  ios_base exists to factor out all of the
 1437.44 +// common properties that don't depend on the character type.
 1437.45 +
 1437.46 +// The second template parameter, _Traits, defaults to char_traits<_CharT>.
 1437.47 +// The default is declared in header <iosfwd>, and it isn't declared here
 1437.48 +// because C++ language rules do not allow it to be declared twice.
 1437.49 +
 1437.50 +template <class _CharT, class _Traits>
 1437.51 +#ifdef __SYMBIAN32__
 1437.52 +class basic_ios : public ios_base {
 1437.53 +#else
 1437.54 +class basic_ios : public ios_base {
 1437.55 +#endif
 1437.56 +  friend class ios_base;
 1437.57 +public:                         // Synonyms for types.
 1437.58 +  typedef _CharT                     char_type;
 1437.59 +  typedef typename _Traits::int_type int_type;
 1437.60 +  typedef typename _Traits::pos_type pos_type;
 1437.61 +  typedef typename _Traits::off_type off_type;
 1437.62 +  typedef _Traits                    traits_type;
 1437.63 +
 1437.64 +public:                         // Constructor, destructor.
 1437.65 +  explicit basic_ios(basic_streambuf<_CharT, _Traits>* __streambuf);
 1437.66 +  virtual ~basic_ios() {}
 1437.67 +
 1437.68 +public:                         // Members from clause 27.4.4.2
 1437.69 +  basic_ostream<_CharT, _Traits>* tie() const {
 1437.70 +    return _M_tied_ostream;
 1437.71 +  }
 1437.72 +  basic_ostream<_CharT, _Traits>*
 1437.73 +  tie(basic_ostream<char_type, traits_type>* __new_tied_ostream) {
 1437.74 +    basic_ostream<char_type, traits_type>* __tmp = _M_tied_ostream;
 1437.75 +    _M_tied_ostream = __new_tied_ostream;
 1437.76 +    return __tmp;
 1437.77 +  }
 1437.78 +
 1437.79 +  basic_streambuf<_CharT, _Traits>* rdbuf() const
 1437.80 +    { return _M_streambuf; }
 1437.81 +
 1437.82 +  basic_streambuf<_CharT, _Traits>*
 1437.83 +  rdbuf(basic_streambuf<char_type, traits_type>*);
 1437.84 +
 1437.85 +  // Copies __x's state to *this.
 1437.86 +  basic_ios<_CharT, _Traits>& copyfmt(const basic_ios<_CharT, _Traits>& __x);
 1437.87 +
 1437.88 +  char_type fill() const { return _M_fill; }
 1437.89 +  char_type fill(char_type __fill) {
 1437.90 +    char_type __tmp(_M_fill);
 1437.91 +    _M_fill = __fill;
 1437.92 +    return __tmp;
 1437.93 +  }
 1437.94 +
 1437.95 +public:                         // Members from 27.4.4.3.  These four functions
 1437.96 +                                // can almost be defined in ios_base.
 1437.97 +
 1437.98 +  void clear(iostate __state = goodbit) {
 1437.99 +    _M_clear_nothrow(this->rdbuf() ? __state : iostate(__state|ios_base::badbit));
1437.100 +    _M_check_exception_mask();
1437.101 +  }
1437.102 +  void setstate(iostate __state) { this->clear(rdstate() | __state); }
1437.103 +
1437.104 +  iostate exceptions() const { return this->_M_get_exception_mask(); }
1437.105 +  void exceptions(iostate __mask) {
1437.106 +    this->_M_set_exception_mask(__mask);
1437.107 +    this->clear(this->rdstate());
1437.108 +  }
1437.109 +
1437.110 +public:                         // Locale-related member functions.
1437.111 +  locale imbue(const locale&);
1437.112 +
1437.113 +  inline char narrow(_CharT, char) const ;
1437.114 +  inline _CharT widen(char) const; 
1437.115 +
1437.116 +  // Helper function that makes testing for EOF more convenient.
1437.117 +  static bool _STLP_CALL _S_eof(int_type __c) {
1437.118 +    const int_type __eof = _Traits::eof();
1437.119 +    return _Traits::eq_int_type(__c, __eof);
1437.120 +  }
1437.121 +
1437.122 +protected:
1437.123 +  basic_ios();
1437.124 +
1437.125 +  void init(basic_streambuf<_CharT, _Traits>* __streambuf);
1437.126 +
1437.127 +public:
1437.128 +  
1437.129 +  // Helper function used in istream and ostream.  It is called only from
1437.130 +  // a catch clause.
1437.131 +  void _M_handle_exception(ios_base::iostate __flag);
1437.132 +  
1437.133 +private:                        // Data members
1437.134 +  char_type _M_fill;            // The fill character, used for padding.
1437.135 +
1437.136 +  basic_streambuf<_CharT, _Traits>* _M_streambuf;
1437.137 +  basic_ostream<_CharT, _Traits>*   _M_tied_ostream;
1437.138 +
1437.139 +};
1437.140 +
1437.141 +
1437.142 +template <class _CharT, class _Traits>
1437.143 +inline char 
1437.144 +basic_ios<_CharT, _Traits>::narrow(_CharT __c, char __default) const
1437.145 +{ return ((const ctype<_CharT>*)this->_M_ctype_facet())->narrow(__c, __default); }
1437.146 +
1437.147 +template <class _CharT, class _Traits>
1437.148 +inline _CharT 
1437.149 +basic_ios<_CharT, _Traits>::widen(char __c) const
1437.150 +{ 
1437.151 +  return ((const ctype<_CharT>*)this->_M_ctype_facet())->widen(__c); }
1437.152 +
1437.153 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1437.154 +_STLP_EXPORT_TEMPLATE_CLASS basic_ios<char, char_traits<char> >;
1437.155 +#  if ! defined (_STLP_NO_WCHAR_T)
1437.156 +_STLP_EXPORT_TEMPLATE_CLASS basic_ios<wchar_t, char_traits<wchar_t> >;
1437.157 +#  endif
1437.158 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1437.159 +
1437.160 +# if !defined (_STLP_NO_METHOD_SPECIALIZATION)
1437.161 +_STLP_TEMPLATE_NULL
1437.162 +inline char
1437.163 +basic_ios<char, char_traits<char> >::narrow(char __c, char) const
1437.164 +{
1437.165 +  return __c;
1437.166 +}
1437.167 +
1437.168 +_STLP_TEMPLATE_NULL
1437.169 +inline char
1437.170 +basic_ios<char, char_traits<char> >::widen(char __c) const
1437.171 +{
1437.172 +  return __c;
1437.173 +}
1437.174 +# endif /* _STLP_NO_METHOD_SPECIALIZATION */
1437.175 +
1437.176 +
1437.177 +_STLP_END_NAMESPACE
1437.178 +
1437.179 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1437.180 +#  include <stl/_ios.c>
1437.181 +# endif
1437.182 +
1437.183 +// The following is needed to ensure that the inlined _Stl_loc_init functions
1437.184 +// that ios_base::_Loc_init::_Loc_init() calls are found eventually.
1437.185 +// Otherwise, undefined externs may be caused.
1437.186 +
1437.187 +#if defined(__BORLANDC__) && defined(_RTLDLL)
1437.188 +# ifndef _STLP_INTERNAL_NUM_PUT_H
1437.189 +#  include <stl/_num_put.h>
1437.190 +# endif
1437.191 +# ifndef _STLP_INTERNAL_NUM_GET_H
1437.192 +#   include <stl/_num_get.h>
1437.193 +# endif
1437.194 +# ifndef _STLP_INTERNAL_MONETARY_H
1437.195 +#  include <stl/_monetary.h>
1437.196 +# endif
1437.197 +# ifndef _STLP_INTERNAL_TIME_FACETS_H
1437.198 +#  include <stl/_time_facets.h>
1437.199 +# endif
1437.200 +#endif
1437.201 +
1437.202 +#endif /* _STLP_IOS */
1437.203 +
1437.204 +// Local Variables:
1437.205 +// mode:C++
1437.206 +// End:
1437.207 +
  1438.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1438.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ios_base.h	Wed Mar 31 12:27:01 2010 +0100
  1438.3 @@ -0,0 +1,439 @@
  1438.4 +/*
  1438.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1438.6 + * Copyright (c) 1999
  1438.7 + * Silicon Graphics Computer Systems, Inc.
  1438.8 + *
  1438.9 + * Copyright (c) 1999 
 1438.10 + * Boris Fomitchev
 1438.11 + *
 1438.12 + * This material is provided "as is", with absolutely no warranty expressed
 1438.13 + * or implied. Any use is at your own risk.
 1438.14 + *
 1438.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1438.16 + * without fee, provided the above notices are retained on all copies.
 1438.17 + * Permission to modify the code and to distribute modified code is granted,
 1438.18 + * provided the above notices are retained, and a notice that the code was
 1438.19 + * modified is included with the above copyright notice.
 1438.20 + *
 1438.21 + */ 
 1438.22 +#ifndef _STLP_IOS_BASE_H
 1438.23 +#define _STLP_IOS_BASE_H
 1438.24 +
 1438.25 +#ifndef _STLP_STDEXCEPT
 1438.26 +#include <stdexcept>
 1438.27 +#endif
 1438.28 +#ifndef _STLP_UTILITY
 1438.29 +#include <utility>
 1438.30 +#endif
 1438.31 +#ifndef _STLP_INTERNAL_LOCALE_H
 1438.32 +#include <stl/_locale.h>
 1438.33 +#endif
 1438.34 +#ifndef _STLP_STRING_H
 1438.35 +# include <stl/_string.h>
 1438.36 +#endif
 1438.37 +
 1438.38 +_STLP_BEGIN_NAMESPACE
 1438.39 +
 1438.40 +// ----------------------------------------------------------------------
 1438.41 +
 1438.42 +// Class ios_base.  This is the base class of the ios hierarchy, which
 1438.43 +// includes basic_istream and basic_ostream.  Classes in the ios
 1438.44 +// hierarchy are actually quite simple: they are just glorified
 1438.45 +// wrapper classes.  They delegate buffering and physical character
 1438.46 +// manipulation to the streambuf classes, and they delegate most
 1438.47 +// formatting tasks to a locale.
 1438.48 +
 1438.49 +#ifdef __SYMBIAN32__
 1438.50 +class ios_base {
 1438.51 +#else
 1438.52 +class _STLP_CLASS_DECLSPEC ios_base {
 1438.53 +#endif
 1438.54 +public:
 1438.55 +  
 1438.56 +  class _STLP_CLASS_DECLSPEC failure : public __Named_exception {
 1438.57 +  public:
 1438.58 +    _STLP_DECLSPEC explicit failure(const string&);
 1438.59 +    _STLP_DECLSPEC virtual ~failure() _STLP_NOTHROW_INHERENTLY;
 1438.60 +  };
 1438.61 +
 1438.62 +  typedef int fmtflags;
 1438.63 +  typedef int iostate;
 1438.64 +  typedef int openmode;
 1438.65 +  typedef int seekdir;
 1438.66 +
 1438.67 +# ifndef _STLP_NO_ANACHRONISMS
 1438.68 +  typedef fmtflags fmt_flags;
 1438.69 +# endif
 1438.70 +
 1438.71 +  // Formatting flags.
 1438.72 +# ifdef _STLP_STATIC_CONST_INIT_BUG
 1438.73 +  enum  {
 1438.74 +# else
 1438.75 +  // boris : type for all those constants is int   
 1438.76 +  static const int
 1438.77 +# endif
 1438.78 +    left       = 0x0001,
 1438.79 +    right      = 0x0002,
 1438.80 +    internal   = 0x0004,
 1438.81 +    dec        = 0x0008,
 1438.82 +    hex        = 0x0010,
 1438.83 +    oct        = 0x0020,
 1438.84 +    fixed      = 0x0040,
 1438.85 +    scientific = 0x0080,
 1438.86 +    boolalpha  = 0x0100,
 1438.87 +    showbase   = 0x0200,
 1438.88 +    showpoint  = 0x0400,
 1438.89 +    showpos    = 0x0800,
 1438.90 +    skipws     = 0x1000,
 1438.91 +    unitbuf    = 0x2000,
 1438.92 +    uppercase  = 0x4000,
 1438.93 +    adjustfield = left | right | internal,
 1438.94 +    basefield   = dec | hex | oct,
 1438.95 +    floatfield  = scientific | fixed,
 1438.96 +    
 1438.97 +    // State flags.
 1438.98 +    goodbit = 0x00,
 1438.99 +    badbit  = 0x01,
1438.100 +    eofbit  = 0x02,
1438.101 +    failbit = 0x04,
1438.102 +    
1438.103 +    // Openmode flags.
1438.104 +    __default_mode = 0x0, /* implementation detail */
1438.105 +    app    = 0x01,
1438.106 +    ate    = 0x02,
1438.107 +    binary = 0x04,
1438.108 +    in     = 0x08,
1438.109 +    out    = 0x10,
1438.110 +    trunc  = 0x20,
1438.111 +    
1438.112 +    // Seekdir flags
1438.113 +    
1438.114 +    beg = 0x01,
1438.115 +    cur = 0x02,
1438.116 +    end = 0x04
1438.117 +# ifdef _STLP_STATIC_CONST_INIT_BUG
1438.118 +  }
1438.119 +# endif
1438.120 +  ;
1438.121 +
1438.122 +public:                         // Flag-manipulation functions.
1438.123 +  fmtflags flags() const { return _M_fmtflags; }
1438.124 +  fmtflags flags(fmtflags __flags) {
1438.125 +    fmtflags __tmp = _M_fmtflags;
1438.126 +    _M_fmtflags = __flags;
1438.127 +    return __tmp;
1438.128 +  }
1438.129 +
1438.130 +  fmtflags setf(fmtflags __flag) {
1438.131 +    fmtflags __tmp = _M_fmtflags;
1438.132 +    _M_fmtflags |= __flag;
1438.133 +    return __tmp;
1438.134 +  }
1438.135 +  fmtflags setf(fmtflags __flag, fmtflags __mask) {
1438.136 +    fmtflags __tmp = _M_fmtflags;
1438.137 +    _M_fmtflags &= ~__mask;
1438.138 +    _M_fmtflags |= __flag & __mask;
1438.139 +    return __tmp;
1438.140 +  }
1438.141 +  void unsetf(fmtflags __mask) { _M_fmtflags &= ~__mask; }
1438.142 +
1438.143 +  streamsize precision() const { return _M_precision; }
1438.144 +  streamsize precision(streamsize __newprecision) {
1438.145 +    streamsize __tmp = _M_precision;
1438.146 +    _M_precision = __newprecision;
1438.147 +    return __tmp;
1438.148 +  }
1438.149 +
1438.150 +  streamsize width() const { return _M_width; }
1438.151 +  streamsize width(streamsize __newwidth) {
1438.152 +    streamsize __tmp = _M_width;
1438.153 +    _M_width = __newwidth;
1438.154 +    return __tmp;
1438.155 +  }
1438.156 +
1438.157 +public:                         // Locales
1438.158 +  _STLP_DECLSPEC locale imbue(const locale&);
1438.159 +  _STLP_DECLSPEC locale getloc() const;// { return _M_locale; }
1438.160 +
1438.161 +public:                         // Auxiliary storage.
1438.162 +  _STLP_DECLSPEC static int _STLP_CALL xalloc();
1438.163 +  _STLP_DECLSPEC long&  iword(int __index);
1438.164 +  _STLP_DECLSPEC void*& pword(int __index);
1438.165 +
1438.166 +public:                         // Destructor.
1438.167 +  _STLP_DECLSPEC virtual ~ios_base();
1438.168 +
1438.169 +public:                         // Callbacks.
1438.170 +  enum event { erase_event, imbue_event, copyfmt_event };
1438.171 +  typedef void (*event_callback)(event, ios_base&, int __index);
1438.172 +  _STLP_DECLSPEC void register_callback(event_callback __fn, int __index);
1438.173 +
1438.174 +public:                         // This member function affects only
1438.175 +                                // the eight predefined ios objects:
1438.176 +                                // cin, cout, etc.
1438.177 +  _STLP_DECLSPEC static bool _STLP_CALL sync_with_stdio(bool __sync = true);
1438.178 +
1438.179 +public:                         // The C++ standard requires only that these
1438.180 +                                // member functions be defined in basic_ios.
1438.181 +                                // We define them in the non-template
1438.182 +                                // base class to avoid code duplication.
1438.183 +  operator void*() const { return !fail() ? (void*) __CONST_CAST(ios_base*,this) : (void*) 0; }
1438.184 +  bool operator!() const { return fail(); }
1438.185 +
1438.186 +  iostate rdstate() const { return _M_iostate; }
1438.187 +
1438.188 +  bool good() const { return _M_iostate == 0; }
1438.189 +  bool eof() const { return (_M_iostate & eofbit) != 0; }
1438.190 +  bool fail() const { return (_M_iostate & (failbit | badbit)) != 0; }
1438.191 +  bool bad() const { return (_M_iostate & badbit) != 0; }
1438.192 +
1438.193 +protected:                      // The functional protected interface.
1438.194 +
1438.195 +  // Copies the state of __x to *this.  This member function makes it
1438.196 +  // possible to implement basic_ios::copyfmt without having to expose
1438.197 +  // ios_base's private data members.  Does not copy _M_exception_mask
1438.198 +  // or _M_iostate.
1438.199 +  _STLP_DECLSPEC void _M_copy_state(const ios_base& __x);
1438.200 +
1438.201 +  void _M_setstate_nothrow(iostate __state) { _M_iostate |= __state; }
1438.202 +  void _M_clear_nothrow(iostate __state) { _M_iostate = __state; }
1438.203 +  iostate _M_get_exception_mask() const { return _M_exception_mask; }
1438.204 +  void _M_set_exception_mask(iostate __mask) { _M_exception_mask = __mask; }
1438.205 +  void _M_check_exception_mask() { 
1438.206 +    if (_M_iostate & _M_exception_mask)
1438.207 +      _M_throw_failure(); 
1438.208 +  }
1438.209 +
1438.210 +  _STLP_DECLSPEC void _M_invoke_callbacks(event);
1438.211 +  _STLP_DECLSPEC void _M_throw_failure();
1438.212 +
1438.213 +  _STLP_DECLSPEC ios_base();                   // Default constructor.
1438.214 +
1438.215 +protected:                        // Initialization of the I/O system
1438.216 +  static void _STLP_CALL _S_initialize();
1438.217 +  static void _STLP_CALL _S_uninitialize();
1438.218 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1438.219 +	static bool _S_was_synced;
1438.220 +# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1438.221 +  friend void CallIosInit();
1438.222 +private:                        // Invalidate the copy constructor and
1438.223 +                                // assignment operator.
1438.224 +  ios_base(const ios_base&);
1438.225 +  void operator=(const ios_base&);
1438.226 +
1438.227 +private:                        // Data members.
1438.228 +
1438.229 +  fmtflags _M_fmtflags;         // Flags
1438.230 +  iostate _M_iostate;
1438.231 +  openmode _M_openmode;
1438.232 +  seekdir _M_seekdir;
1438.233 +  iostate _M_exception_mask;
1438.234 +
1438.235 +  streamsize _M_precision;
1438.236 +  streamsize _M_width;
1438.237 +
1438.238 +  locale _M_locale;
1438.239 +
1438.240 +  pair<event_callback, int>* _M_callbacks;
1438.241 +  size_t _M_num_callbacks;      // Size of the callback array.
1438.242 +  size_t _M_callback_index;     // Index of the next available callback;
1438.243 +                                // initially zero.
1438.244 +
1438.245 +  long* _M_iwords;              // Auxiliary storage.  The count is zero
1438.246 +  size_t _M_num_iwords;         // if and only if the pointer is null.
1438.247 +
1438.248 +  void** _M_pwords;
1438.249 +  size_t _M_num_pwords;
1438.250 +
1438.251 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1438.252 +	static int _S_index;
1438.253 +# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1438.254 +
1438.255 +
1438.256 +protected:
1438.257 +  // Cached copies of the curent locale's facets.  Set by init() and imbue().
1438.258 +  locale::facet* _M_cached_ctype;
1438.259 +  locale::facet* _M_cached_numpunct;
1438.260 +  string         _M_cached_grouping;
1438.261 +public:
1438.262 +  // Equivalent to &use_facet< Facet >(getloc()), but faster.
1438.263 +  const locale::facet* _M_ctype_facet() const { return _M_cached_ctype; }
1438.264 +  const locale::facet* _M_numpunct_facet() const { return _M_cached_numpunct; }
1438.265 +  const string&  _M_grouping() const { return _M_cached_grouping; }
1438.266 +public:
1438.267 +
1438.268 +  // ----------------------------------------------------------------------
1438.269 +  // Nested initializer class.  This is an implementation detail, but it's
1438.270 +  // prescribed by the standard.  The static initializer object (on 
1438.271 +  // implementations where such a thing is required) is declared in
1438.272 +  // <iostream>
1438.273 +  
1438.274 +  class _STLP_CLASS_DECLSPEC Init {
1438.275 +  public:
1438.276 +    _STLP_DECLSPEC Init();
1438.277 +    _STLP_DECLSPEC ~Init();
1438.278 +  private:
1438.279 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1438.280 +    static long _S_count;
1438.281 +# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1438.282 +    friend class ios_base;
1438.283 +  };
1438.284 +
1438.285 +  // this class is needed to ensure locale initialization w/o <iostream> inclusion
1438.286 +  class _STLP_CLASS_DECLSPEC _Loc_init {
1438.287 +  public:
1438.288 +    _STLP_DECLSPEC _Loc_init();
1438.289 +    _STLP_DECLSPEC ~_Loc_init();
1438.290 +  private:
1438.291 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1438.292 +	static long _S_count;
1438.293 +# endif //__LIBSTD_CPP_SYMBIAN32_WSD__
1438.294 +    friend class locale;
1438.295 +    friend class ios_base;
1438.296 +  };
1438.297 +
1438.298 +  friend class Init;
1438.299 +
1438.300 +public:
1438.301 +# ifndef _STLP_NO_ANACHRONISMS
1438.302 +  //  31.6  Old iostreams members                         [depr.ios.members]
1438.303 +  typedef iostate  io_state;
1438.304 +  typedef openmode open_mode;
1438.305 +  typedef seekdir  seek_dir;
1438.306 +  typedef _STLP_STD::streamoff  streamoff;
1438.307 +  typedef _STLP_STD::streampos  streampos;
1438.308 +# endif  
1438.309 +};
1438.310 +
1438.311 +inline _STLP_EXP_DECLSPEC locale ios_base::getloc() const 
1438.312 +    { 
1438.313 +    return _M_locale; 
1438.314 +    }
1438.315 +
1438.316 +// ----------------------------------------------------------------------
1438.317 +// ios_base manipulator functions, from section 27.4.5 of the C++ standard.
1438.318 +// All of them are trivial one-line wrapper functions.
1438.319 +
1438.320 +// fmtflag manipulators, section 27.4.5.1
1438.321 +inline ios_base& _STLP_CALL boolalpha(ios_base& __s)
1438.322 +  { __s.setf(ios_base::boolalpha); return __s;}
1438.323 +
1438.324 +inline ios_base& _STLP_CALL noboolalpha(ios_base& __s)
1438.325 +  { __s.unsetf(ios_base::boolalpha); return __s;}
1438.326 +
1438.327 +inline ios_base& _STLP_CALL showbase(ios_base& __s)
1438.328 +  { __s.setf(ios_base::showbase); return __s;}
1438.329 +
1438.330 +inline ios_base& _STLP_CALL noshowbase(ios_base& __s)
1438.331 +  { __s.unsetf(ios_base::showbase); return __s;}
1438.332 +
1438.333 +inline ios_base& _STLP_CALL showpoint(ios_base& __s)
1438.334 +  { __s.setf(ios_base::showpoint); return __s;}
1438.335 +
1438.336 +inline ios_base& _STLP_CALL noshowpoint(ios_base& __s)
1438.337 +  { __s.unsetf(ios_base::showpoint); return __s;}
1438.338 +
1438.339 +inline ios_base& _STLP_CALL showpos(ios_base& __s)
1438.340 +  { __s.setf(ios_base::showpos); return __s;}
1438.341 +
1438.342 +inline ios_base& _STLP_CALL noshowpos(ios_base& __s) 
1438.343 +  { __s.unsetf(ios_base::showpos); return __s;}
1438.344 +
1438.345 +inline ios_base& _STLP_CALL skipws(ios_base& __s)
1438.346 +  { __s.setf(ios_base::skipws); return __s;}
1438.347 +
1438.348 +inline ios_base& _STLP_CALL noskipws(ios_base& __s)
1438.349 +  { __s.unsetf(ios_base::skipws); return __s;}
1438.350 +
1438.351 +inline ios_base& _STLP_CALL uppercase(ios_base& __s)
1438.352 +  { __s.setf(ios_base::uppercase); return __s;}
1438.353 +
1438.354 +inline ios_base& _STLP_CALL nouppercase(ios_base& __s)
1438.355 +  { __s.unsetf(ios_base::uppercase); return __s;}
1438.356 +
1438.357 +inline ios_base& _STLP_CALL unitbuf(ios_base& __s)
1438.358 +  { __s.setf(ios_base::unitbuf); return __s;}
1438.359 +
1438.360 +inline ios_base& _STLP_CALL nounitbuf(ios_base& __s)
1438.361 +  { __s.unsetf(ios_base::unitbuf); return __s;}
1438.362 +
1438.363 +
1438.364 +// adjustfield manipulators, section 27.4.5.2
1438.365 +inline ios_base& _STLP_CALL internal(ios_base& __s)
1438.366 +  { __s.setf(ios_base::internal, ios_base::adjustfield); return __s; }
1438.367 +
1438.368 +inline ios_base& _STLP_CALL left(ios_base& __s)
1438.369 +  { __s.setf(ios_base::left, ios_base::adjustfield); return __s; }
1438.370 +
1438.371 +inline ios_base& _STLP_CALL right(ios_base& __s)
1438.372 +  { __s.setf(ios_base::right, ios_base::adjustfield); return __s; }
1438.373 +
1438.374 +// basefield manipulators, section 27.4.5.3
1438.375 +inline ios_base& _STLP_CALL dec(ios_base& __s)
1438.376 +  { __s.setf(ios_base::dec, ios_base::basefield); return __s; }
1438.377 +
1438.378 +inline ios_base& _STLP_CALL hex(ios_base& __s) 
1438.379 +  { __s.setf(ios_base::hex, ios_base::basefield); return __s; }
1438.380 +
1438.381 +inline ios_base& _STLP_CALL oct(ios_base& __s)
1438.382 +  { __s.setf(ios_base::oct, ios_base::basefield); return __s; }
1438.383 +
1438.384 +
1438.385 +// floatfield manipulators, section 27.4.5.3
1438.386 +inline ios_base& _STLP_CALL fixed(ios_base& __s)
1438.387 +  { __s.setf(ios_base::fixed, ios_base::floatfield); return __s; }
1438.388 +
1438.389 +inline ios_base& _STLP_CALL scientific(ios_base& __s)
1438.390 +  { __s.setf(ios_base::scientific, ios_base::floatfield); return __s; }
1438.391 +
1438.392 +#if defined(__BORLANDC__) && defined(_RTLDLL)
1438.393 +
1438.394 +long ios_base::_Loc_init::_S_count = 0;
1438.395 +
1438.396 +void _STLP_CALL _Stl_loc_init_num_put();
1438.397 +void _STLP_CALL _Stl_loc_init_num_get();
1438.398 +void _STLP_CALL _Stl_loc_init_monetary();
1438.399 +void _STLP_CALL _Stl_loc_init_time_facets();
1438.400 +
1438.401 +inline ios_base::_Loc_init::_Loc_init() {
1438.402 +  if (_S_count++ == 0) {
1438.403 +      _Stl_loc_init_num_put();
1438.404 +      _Stl_loc_init_num_get();
1438.405 +      _Stl_loc_init_monetary();
1438.406 +      _Stl_loc_init_time_facets();
1438.407 +      locale::_S_initialize();
1438.408 +  }
1438.409 +}
1438.410 +
1438.411 +inline ios_base::_Loc_init::~_Loc_init() {
1438.412 +    if (--_S_count == 0)
1438.413 +      locale::_S_uninitialize();
1438.414 +}
1438.415 +
1438.416 +#endif /* __BORLANDC__ */
1438.417 +
1438.418 +#if 0
1438.419 +#ifdef __SYMBIAN32__
1438.420 +#pragma message("Symbian I/O stream support on progress.")
1438.421 +inline ios_base::_Loc_init::_Loc_init() {
1438.422 +}
1438.423 +
1438.424 +inline ios_base::_Loc_init::~_Loc_init() {
1438.425 +}
1438.426 +#endif
1438.427 +
1438.428 +inline ios_base::Init::Init() {
1438.429 +}
1438.430 +
1438.431 +inline ios_base::Init::~Init() {
1438.432 +}
1438.433 +#endif
1438.434 +
1438.435 +_STLP_END_NAMESPACE
1438.436 +
1438.437 +#endif /* _STLP_IOS_BASE */
1438.438 +
1438.439 +// Local Variables:
1438.440 +// mode:C++
1438.441 +// End:
1438.442 +
  1439.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1439.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ioserr.h	Wed Mar 31 12:27:01 2010 +0100
  1439.3 @@ -0,0 +1,12 @@
  1439.4 +/*
  1439.5 + * This file is included in every header that needs the STLport library to be
  1439.6 + * built; the header files mostly are the iostreams-headers. The file checks for
  1439.7 + * _STLP_USE_NO_IOSTREAMS or _STLP_NO_IOSTREAMS being not defined, so that the
  1439.8 + * iostreams part of STLport cannot be used when the symbols were defined
  1439.9 + * accidentally.
 1439.10 + */
 1439.11 +#if defined (_STLP_NO_IOSTREAMS)
 1439.12 +#  error STLport iostreams header cannot be used; you chose not to use iostreams in the STLport configuration file (stlport/stl/config/user_config.h).
 1439.13 +#elif defined (_STLP_USE_NO_IOSTREAMS )
 1439.14 +#  error STLport iostreams header cannot be used; your compiler do not support it.
 1439.15 +#endif
  1440.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1440.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_iosfwd.h	Wed Mar 31 12:27:01 2010 +0100
  1440.3 @@ -0,0 +1,159 @@
  1440.4 +# ifndef _STLP_INTERNAL_IOSFWD
  1440.5 +#  define _STLP_INTERNAL_IOSFWD
  1440.6 +
  1440.7 +#if defined(__sgi) && !defined(__GNUC__) && !defined(_STANDARD_C_PLUS_PLUS)
  1440.8 +#error This header file requires the -LANG:std option
  1440.9 +#endif
 1440.10 +
 1440.11 +// This file provides forward declarations of the most important I/O
 1440.12 +// classes.  Note that almost all of those classes are class templates,
 1440.13 +// with default template arguments.  According to the C++ standard, 
 1440.14 +// if a class template is declared more than once in the same scope
 1440.15 +// then only one of those declarations may have default arguments.  
 1440.16 +
 1440.17 +// <iosfwd> contains the same declarations as other headers, and including
 1440.18 +// both <iosfwd> and (say) <iostream> is permitted.  This means that only
 1440.19 +// one header may contain those default template arguments.
 1440.20 +
 1440.21 +// In this implementation, the declarations in <iosfwd> contain default
 1440.22 +// template arguments.  All of the other I/O headers include <iosfwd>.
 1440.23 +
 1440.24 +#ifndef _STLP_CHAR_TRAITS_H
 1440.25 +# include <stl/char_traits.h>
 1440.26 +#endif
 1440.27 +
 1440.28 +_STLP_BEGIN_NAMESPACE
 1440.29 +
 1440.30 +class _STLP_CLASS_DECLSPEC ios_base;
 1440.31 +
 1440.32 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.33 +class basic_ios;
 1440.34 +
 1440.35 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.36 +class basic_streambuf;
 1440.37 +
 1440.38 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.39 +class basic_istream;
 1440.40 +
 1440.41 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.42 +class basic_ostream;
 1440.43 +
 1440.44 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.45 +class basic_iostream;
 1440.46 +
 1440.47 +template <class _CharT, __DFL_TMPL_PARAM( _Traits , char_traits<_CharT>),
 1440.48 +          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1440.49 +class basic_stringbuf;
 1440.50 +
 1440.51 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
 1440.52 +          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1440.53 +class basic_istringstream;
 1440.54 +
 1440.55 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
 1440.56 +          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1440.57 +class basic_ostringstream;
 1440.58 +
 1440.59 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>),
 1440.60 +          __DFL_TMPL_PARAM(_Allocator , allocator<_CharT>) >
 1440.61 +class basic_stringstream;
 1440.62 +
 1440.63 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.64 +class basic_filebuf;
 1440.65 +
 1440.66 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.67 +class basic_ifstream;
 1440.68 +
 1440.69 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.70 +class basic_ofstream;
 1440.71 +
 1440.72 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.73 +class basic_fstream;
 1440.74 +
 1440.75 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.76 +class istreambuf_iterator;
 1440.77 +
 1440.78 +template <class _CharT, __DFL_TMPL_PARAM(_Traits , char_traits<_CharT>) >
 1440.79 +class ostreambuf_iterator;
 1440.80 +
 1440.81 +typedef basic_ios<char, char_traits<char> >    ios;
 1440.82 +
 1440.83 +# ifndef _STLP_NO_WCHAR_T
 1440.84 +typedef basic_ios<wchar_t, char_traits<wchar_t> > wios;
 1440.85 +# endif
 1440.86 +
 1440.87 +// Forward declaration of class locale, and of the most important facets.
 1440.88 +class locale;
 1440.89 +# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
 1440.90 +template <class _Facet>
 1440.91 +struct _Use_facet {
 1440.92 +  const locale& __loc;
 1440.93 +  _Use_facet(const locale& __p_loc) : __loc(__p_loc) {}
 1440.94 +  inline const _Facet& operator *() const;
 1440.95 +};
 1440.96 +# define use_facet *_Use_facet
 1440.97 +# else
 1440.98 +template <class _Facet> inline const _Facet& use_facet(const locale&);
 1440.99 +# endif
1440.100 +
1440.101 +template <class _CharT> class ctype;
1440.102 +template <class _CharT> class ctype_byname;
1440.103 +template <class _CharT> class collate;
1440.104 +template <class _CharT> class collate_byname;
1440.105 +
1440.106 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype<char>;
1440.107 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype_byname<char>;
1440.108 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate<char>;
1440.109 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate_byname<char>;
1440.110 +
1440.111 +#  ifndef _STLP_NO_WCHAR_T
1440.112 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype<wchar_t>;
1440.113 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC ctype_byname<wchar_t>;
1440.114 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate<wchar_t>;
1440.115 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC collate_byname<wchar_t>;
1440.116 +#  endif
1440.117 +
1440.118 +# if !(defined (__SUNPRO_CC) && __SUNPRO_CC < 0x500 ) && !defined(_STLP_WINCE)
1440.119 +// Typedefs for ordinary (narrow-character) streams.
1440.120 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC basic_streambuf<char, char_traits<char> >;
1440.121 +# endif
1440.122 +
1440.123 +typedef basic_istream<char, char_traits<char> >   istream;
1440.124 +typedef basic_ostream<char, char_traits<char> >   ostream;
1440.125 +typedef basic_iostream<char, char_traits<char> >  iostream;
1440.126 +typedef basic_streambuf<char,char_traits<char> > streambuf;
1440.127 +
1440.128 +typedef basic_stringbuf<char, char_traits<char>, allocator<char> >     stringbuf;
1440.129 +typedef basic_istringstream<char, char_traits<char>, allocator<char> > istringstream;
1440.130 +typedef basic_ostringstream<char, char_traits<char>, allocator<char> > ostringstream;
1440.131 +typedef basic_stringstream<char, char_traits<char>, allocator<char> >  stringstream;
1440.132 +
1440.133 +typedef basic_filebuf<char, char_traits<char> >  filebuf;
1440.134 +typedef basic_ifstream<char, char_traits<char> > ifstream;
1440.135 +typedef basic_ofstream<char, char_traits<char> > ofstream;
1440.136 +typedef basic_fstream<char, char_traits<char> >  fstream;
1440.137 +
1440.138 +# ifndef _STLP_NO_WCHAR_T
1440.139 +// Typedefs for wide-character streams.
1440.140 +typedef basic_streambuf<wchar_t, char_traits<wchar_t> > wstreambuf;
1440.141 +typedef basic_istream<wchar_t, char_traits<wchar_t> >   wistream;
1440.142 +typedef basic_ostream<wchar_t, char_traits<wchar_t> >   wostream;
1440.143 +typedef basic_iostream<wchar_t, char_traits<wchar_t> >  wiostream;
1440.144 +
1440.145 +typedef basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >     wstringbuf;
1440.146 +typedef basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wistringstream;
1440.147 +typedef basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wostringstream;
1440.148 +typedef basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >  wstringstream;
1440.149 +
1440.150 +typedef basic_filebuf<wchar_t, char_traits<wchar_t> >  wfilebuf;
1440.151 +typedef basic_ifstream<wchar_t, char_traits<wchar_t> > wifstream;
1440.152 +typedef basic_ofstream<wchar_t, char_traits<wchar_t> > wofstream;
1440.153 +typedef basic_fstream<wchar_t, char_traits<wchar_t> >  wfstream;
1440.154 +# endif
1440.155 +
1440.156 +_STLP_END_NAMESPACE
1440.157 +
1440.158 +#endif
1440.159 +
1440.160 +// Local Variables:
1440.161 +// mode:C++
1440.162 +// End:
  1441.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1441.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_iostream_string.h	Wed Mar 31 12:27:01 2010 +0100
  1441.3 @@ -0,0 +1,140 @@
  1441.4 +/*
  1441.5 + * Copyright (c) 2004
  1441.6 + * Francois Dumont
  1441.7 + *
  1441.8 + * This material is provided "as is", with absolutely no warranty expressed
  1441.9 + * or implied. Any use is at your own risk.
 1441.10 + *
 1441.11 + * Permission to use or copy this software for any purpose is hereby granted
 1441.12 + * without fee, provided the above notices are retained on all copies.
 1441.13 + * Permission to modify the code and to distribute modified code is granted,
 1441.14 + * provided the above notices are retained, and a notice that the code was
 1441.15 + * modified is included with the above copyright notice.
 1441.16 + *
 1441.17 + */
 1441.18 +
 1441.19 + /*
 1441.20 +  * This is an internal string for the STLport own iostream implementation.
 1441.21 +  * The only diference rely on the allocator used to instanciate the basic_string.
 1441.22 +  * Its goals is to improve performance limitating the number of dynamic allocation
 1441.23 +  * that could occur when requesting a big float ouput for instance. This allocator
 1441.24 +  * is not standard conformant as it has an internal state (the static buffer)
 1441.25 +  */
 1441.26 +
 1441.27 +
 1441.28 +#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H
 1441.29 +#define _STLP_INTERNAL_IOSTREAM_STRING_H
 1441.30 +
 1441.31 +#ifndef _STLP_INTERNAL_ALLOC_H
 1441.32 +#  include <stl/_alloc.h>
 1441.33 +#endif /* _STLP_INTERNAL_ALLOC_H */
 1441.34 +
 1441.35 +#ifndef _STLP_INTERNAL_STRING_H
 1441.36 +#  include <stl/_string.h>
 1441.37 +#endif /* _STLP_INTERNAL_STRING_H */
 1441.38 +
 1441.39 +_STLP_BEGIN_NAMESPACE
 1441.40 +
 1441.41 +_STLP_MOVE_TO_PRIV_NAMESPACE
 1441.42 +
 1441.43 +template <class _CharT>
 1441.44 +class __iostring_allocator : public allocator<_CharT> {
 1441.45 +public:
 1441.46 +  enum { _STR_SIZE = 256 };
 1441.47 +
 1441.48 +private:
 1441.49 +  enum { _BUF_SIZE = _STR_SIZE + 1 };
 1441.50 +  typedef allocator<_CharT> _Base;
 1441.51 +  _CharT _M_static_buf[_BUF_SIZE];
 1441.52 +
 1441.53 +public:
 1441.54 +  typedef typename _Base::size_type size_type;
 1441.55 +  typedef typename _Base::pointer pointer;
 1441.56 +#if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
 1441.57 +  template <class _Tp1> struct rebind {
 1441.58 +#  if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1300)
 1441.59 +    typedef __iostring_allocator<_Tp1> other;
 1441.60 +#  else
 1441.61 +    typedef _STLP_PRIV __iostring_allocator<_Tp1> other;
 1441.62 +#  endif
 1441.63 +  };
 1441.64 +#endif
 1441.65 +
 1441.66 +  _CharT* allocate(size_type __n, const void* __ptr = 0) {
 1441.67 +    if (__n > _BUF_SIZE) {
 1441.68 +      return _Base::allocate(__n, __ptr);
 1441.69 +    }
 1441.70 +    return _M_static_buf;
 1441.71 +  }
 1441.72 +  void deallocate(pointer __p, size_type __n) {
 1441.73 +    if (__p != _M_static_buf) _Base::deallocate(__p, __n);
 1441.74 +  }
 1441.75 +};
 1441.76 +
 1441.77 +#if defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) || !defined (_STLP_MEMBER_TEMPLATES)
 1441.78 +/*
 1441.79 + * As the __iostring_allocator allocator will only be used in the basic_string implementation
 1441.80 + * we known that it is never going to be bound to another type that the one used to instantiate
 1441.81 + * the basic_string. This is why the associated __stl_alloc_rebind has only one template
 1441.82 + * parameter.
 1441.83 + */
 1441.84 +_STLP_MOVE_TO_STD_NAMESPACE
 1441.85 +
 1441.86 +template <class _Tp>
 1441.87 +inline _STLP_PRIV __iostring_allocator<_Tp>& _STLP_CALL
 1441.88 +__stl_alloc_rebind(_STLP_PRIV __iostring_allocator<_Tp>& __a, const _Tp*)
 1441.89 +{ return __a; }
 1441.90 +template <class _Tp>
 1441.91 +inline _STLP_PRIV __iostring_allocator<_Tp> _STLP_CALL
 1441.92 +__stl_alloc_create(const _STLP_PRIV __iostring_allocator<_Tp>&, const _Tp*)
 1441.93 +{ return _STLP_PRIV __iostring_allocator<_Tp>(); }
 1441.94 +
 1441.95 +_STLP_MOVE_TO_PRIV_NAMESPACE
 1441.96 +#endif /* _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE */
 1441.97 +
 1441.98 +#if !defined (_STLP_DEBUG)
 1441.99 +template <class _CharT>
1441.100 +struct __basic_iostring : public basic_string<_CharT, char_traits<_CharT>, __iostring_allocator<_CharT> > {
1441.101 +  /*
1441.102 +   * A consequence of the non standard conformant allocator is that a string using it
1441.103 +   * must always be presized to the allocator static buffer size because the basic_string implementation
1441.104 +   * do not manage an allocator returning always the same memory adress as long as the
1441.105 +   * requested memory block size is under a certain value.
1441.106 +   */
1441.107 +  typedef __basic_iostring<_CharT> _Self;
1441.108 +  typedef basic_string<_CharT, char_traits<_CharT>, __iostring_allocator<_CharT> > _Base;
1441.109 +  typedef typename _Base::_Reserve_t _Reserve_t;
1441.110 +
1441.111 +  __basic_iostring() : _Base(_Reserve_t(), __iostring_allocator<_CharT>::_STR_SIZE)
1441.112 +  {}
1441.113 +
1441.114 +  _Self& operator=(const _CharT* __s) {
1441.115 +    _Base::operator=(__s);
1441.116 +    return *this;
1441.117 +  }
1441.118 +};
1441.119 +
1441.120 +typedef __basic_iostring<char> __iostring;
1441.121 +
1441.122 +#  if !defined (_STLP_NO_WCHAR_T)
1441.123 +typedef __basic_iostring<wchar_t> __iowstring;
1441.124 +#  endif
1441.125 +
1441.126 +#  define _STLP_BASIC_IOSTRING(_CharT) _STLP_PRIV __basic_iostring<_CharT>
1441.127 +
1441.128 +#else
1441.129 +
1441.130 +typedef string __iostring;
1441.131 +#  if !defined (_STLP_NO_WCHAR_T)
1441.132 +typedef wstring __iowstring;
1441.133 +#  endif
1441.134 +
1441.135 +#  define _STLP_BASIC_IOSTRING(_CharT) basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> >
1441.136 +
1441.137 +#endif
1441.138 +
1441.139 +_STLP_MOVE_TO_STD_NAMESPACE
1441.140 +
1441.141 +_STLP_END_NAMESPACE
1441.142 +
1441.143 +#endif /* _STLP_INTERNAL_IOSTREAM_STRING_H */
  1442.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1442.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_istream.c	Wed Mar 31 12:27:01 2010 +0100
  1442.3 @@ -0,0 +1,1534 @@
  1442.4 +/*
  1442.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1442.6 + * Copyright (c) 1999
  1442.7 + * Silicon Graphics Computer Systems, Inc.
  1442.8 + *
  1442.9 + * Copyright (c) 1999
 1442.10 + * Boris Fomitchev
 1442.11 + *
 1442.12 + * This material is provided "as is", with absolutely no warranty expressed
 1442.13 + * or implied. Any use is at your own risk.
 1442.14 + *
 1442.15 + * Permission to use or copy this software for any purpose is hereby granted
 1442.16 + * without fee, provided the above notices are retained on all copies.
 1442.17 + * Permission to modify the code and to distribute modified code is granted,
 1442.18 + * provided the above notices are retained, and a notice that the code was
 1442.19 + * modified is included with the above copyright notice.
 1442.20 + *
 1442.21 + */
 1442.22 +#ifndef _STLP_ISTREAM_C
 1442.23 +#define _STLP_ISTREAM_C
 1442.24 +
 1442.25 +#ifndef _STLP_INTERNAL_ISTREAM_H
 1442.26 +# include <stl/_istream.h>
 1442.27 +#endif
 1442.28 +
 1442.29 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1442.30 +
 1442.31 +#ifndef _STLP_LIMITS_H
 1442.32 +# include <stl/_limits.h>
 1442.33 +#endif
 1442.34 +
 1442.35 +#ifndef _STLP_INTERNAL_NUM_GET_H
 1442.36 +# include <stl/_num_get.h>
 1442.37 +#endif
 1442.38 +
 1442.39 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1442.40 +// no wchar_t is supported for this mode
 1442.41 +# define __BIS_int_type__ int
 1442.42 +# define __BIS_pos_type__ streampos
 1442.43 +# define __BIS_off_type__ streamoff
 1442.44 +# else
 1442.45 +# define __BIS_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::int_type
 1442.46 +# define __BIS_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::pos_type
 1442.47 +# define __BIS_off_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_istream<_CharT, _Traits>::off_type
 1442.48 +# endif
 1442.49 +
 1442.50 +_STLP_BEGIN_NAMESPACE
 1442.51 +
 1442.52 +//----------------------------------------------------------------------
 1442.53 +// Function object structs used by some member functions.
 1442.54 +
 1442.55 +template <class _Traits>
 1442.56 +struct _Is_not_wspace {
 1442.57 +  typedef typename _Traits::char_type argument_type;
 1442.58 +  typedef bool                        result_type;
 1442.59 +
 1442.60 +  const ctype<argument_type>* _M_ctype;
 1442.61 +
 1442.62 +  _Is_not_wspace(const ctype<argument_type>* __c_type) : _M_ctype(__c_type) {}
 1442.63 +  bool operator()(argument_type __c) const
 1442.64 +    { return !_M_ctype->is(ctype_base::space, __c); }
 1442.65 +};
 1442.66 +
 1442.67 +template <class _Traits>
 1442.68 +struct _Is_wspace_null {
 1442.69 +  typedef typename _Traits::char_type argument_type;
 1442.70 +  typedef bool                        result_type;
 1442.71 +
 1442.72 +  const ctype<argument_type>* _M_ctype;
 1442.73 +
 1442.74 +  _Is_wspace_null(const ctype<argument_type>* __c_type) : _M_ctype(__c_type) {}
 1442.75 +  bool operator()(argument_type __c) const {
 1442.76 +    return _Traits::eq(__c, argument_type()) ||
 1442.77 +           _M_ctype->is(ctype_base::space, __c);
 1442.78 +  }
 1442.79 +};
 1442.80 +
 1442.81 +template <class _Traits>
 1442.82 +struct _Scan_for_wspace {
 1442.83 +  typedef typename _Traits::char_type  char_type;
 1442.84 +  typedef char_type*                   first_argument_type;
 1442.85 +  typedef char_type*                   second_argument_type;
 1442.86 +  typedef char_type*                   result_type;
 1442.87 +
 1442.88 +  const ctype<char_type>* _M_ctype;
 1442.89 +
 1442.90 +  _Scan_for_wspace(const ctype<char_type>* __ctype) : _M_ctype(__ctype) {}
 1442.91 +  const char_type*
 1442.92 +  operator()(const char_type* __first, const char_type* __last) const {
 1442.93 +    return _M_ctype->scan_is(ctype_base::space, __first, __last);
 1442.94 +  }
 1442.95 +};
 1442.96 +
 1442.97 +template <class _Traits>
 1442.98 +struct _Scan_wspace_null {
 1442.99 +  typedef typename _Traits::char_type  char_type;
1442.100 +  typedef char_type*                   first_argument_type;
1442.101 +  typedef char_type*                   second_argument_type;
1442.102 +  typedef char_type*                   result_type;
1442.103 +
1442.104 +  const ctype<char_type>* _M_ctype;
1442.105 +
1442.106 +  _Scan_wspace_null(const ctype<char_type>* __c_type) : _M_ctype(__c_type) {}
1442.107 +  const char_type*
1442.108 +  operator()(const char_type* __first, const char_type* __last) const {
1442.109 +    __last = find_if(__first, __last,
1442.110 +                     _Eq_char_bound<_Traits>(char_type()));
1442.111 +    return _M_ctype->scan_is(ctype_base::space, __first, __last);
1442.112 +  }
1442.113 +};
1442.114 +
1442.115 +template <class _Traits>
1442.116 +struct _Scan_for_not_wspace {
1442.117 +  typedef typename _Traits::char_type  char_type;
1442.118 +  typedef char_type*                   first_argument_type;
1442.119 +  typedef char_type*                   second_argument_type;
1442.120 +  typedef char_type*                   result_type;
1442.121 +
1442.122 +  const ctype<char_type>* _M_ctype;
1442.123 +
1442.124 +  _Scan_for_not_wspace(const ctype<char_type>* __c_type) : _M_ctype(__c_type) {}
1442.125 +  const char_type*
1442.126 +  operator()(const char_type* __first, const char_type* __last) const {
1442.127 +    return _M_ctype->scan_not(ctype_base::space, __first, __last);
1442.128 +  }
1442.129 +};
1442.130 +
1442.131 +template <class _Traits>
1442.132 +struct _Scan_for_char_val
1442.133 +{
1442.134 +  typedef typename _Traits::char_type char_type;
1442.135 +  typedef char_type*                  first_argument_type;
1442.136 +  typedef char_type*                  second_argument_type;
1442.137 +  typedef char_type*                  result_type;
1442.138 +
1442.139 +  char_type _M_val;
1442.140 +
1442.141 +  _Scan_for_char_val(char_type __val) : _M_val(__val) {}
1442.142 +
1442.143 +  const char_type*
1442.144 +  operator()(const char_type* __first, const char_type* __last) const {
1442.145 +    return find_if(__first, __last, _Eq_char_bound<_Traits>(_M_val));
1442.146 +  }
1442.147 +};
1442.148 +
1442.149 +template <class _Traits>
1442.150 +struct _Scan_for_int_val
1442.151 +{
1442.152 +  typedef typename _Traits::char_type char_type;
1442.153 +  typedef typename _Traits::int_type  int_type;
1442.154 +  typedef char_type*                  first_argument_type;
1442.155 +  typedef char_type*                  second_argument_type;
1442.156 +  typedef char_type*                  result_type;
1442.157 +
1442.158 +  int_type _M_val;
1442.159 +
1442.160 +  _Scan_for_int_val(int_type __val) : _M_val(__val) {}
1442.161 +
1442.162 +  const char_type*
1442.163 +  operator()(const char_type* __first, const char_type* __last) const {
1442.164 +    return find_if(__first, __last,
1442.165 +                   _Eq_int_bound<_Traits>(_M_val));
1442.166 +  }
1442.167 +};
1442.168 +
1442.169 +// Helper function: try to push back a character to a streambuf,
1442.170 +// return true if the pushback succeeded.  Does not throw.
1442.171 +
1442.172 +template <class _CharT, class _Traits>
1442.173 +bool _STLP_CALL
1442.174 +__pushback(basic_streambuf<_CharT, _Traits>* __buf, _CharT __c)
1442.175 +{
1442.176 +  bool ret;
1442.177 +  _STLP_TRY {
1442.178 +    const typename _Traits::int_type __eof = _Traits::eof();
1442.179 +    ret = !_Traits::eq_int_type(__buf->sputbackc(__c), __eof);
1442.180 +  }
1442.181 +  _STLP_CATCH_ALL {
1442.182 +    ret = false;
1442.183 +  }
1442.184 +  return ret;
1442.185 +}
1442.186 +
1442.187 +template <class _CharT, class _Traits>
1442.188 +basic_istream<_CharT, _Traits>& _STLP_CALL
1442.189 +ws(basic_istream<_CharT, _Traits>& __is)
1442.190 +{
1442.191 +  typedef typename basic_istream<_CharT, _Traits>::sentry      _Sentry;
1442.192 +  _Sentry __sentry(__is, _No_Skip_WS()); // Don't skip whitespace.
1442.193 +  if (__sentry)
1442.194 +    __is._M_skip_whitespace(false);
1442.195 +  return __is;
1442.196 +}
1442.197 +
1442.198 +// Helper functions for istream<>::sentry constructor.
1442.199 +template <class _CharT, class _Traits>
1442.200 +bool
1442.201 +_M_init_skip(basic_istream<_CharT, _Traits>& __is) {
1442.202 +  if (__is.good()) {
1442.203 +    if (__is.tie())
1442.204 +      __is.tie()->flush();
1442.205 +
1442.206 +    __is._M_skip_whitespace(true);
1442.207 +  }
1442.208 +
1442.209 +  if (!__is.good()) {
1442.210 +    __is.setstate(ios_base::failbit);
1442.211 +    return false;
1442.212 +  } else
1442.213 +    return true;
1442.214 +}
1442.215 +
1442.216 +template <class _CharT, class _Traits>
1442.217 +bool
1442.218 +_M_init_noskip(basic_istream<_CharT, _Traits>& __is){
1442.219 +  if (__is.good()) {
1442.220 +    if (__is.tie())
1442.221 +      __is.tie()->flush();
1442.222 +
1442.223 +    if (!__is.rdbuf())
1442.224 +      __is.setstate(ios_base::badbit);
1442.225 +  }
1442.226 +  else
1442.227 +    __is.setstate(ios_base::failbit);
1442.228 +  return __is.good();
1442.229 +}
1442.230 +
1442.231 +//----------------------------------------------------------------------
1442.232 +// Definitions of basic_istream<>'s noninline member functions.
1442.233 +
1442.234 +// Helper function for formatted input of numbers.
1442.235 +template <class _CharT, class _Traits, class _Number>
1442.236 +ios_base::iostate _STLP_CALL
1442.237 +_M_get_num(basic_istream<_CharT, _Traits>& __that, _Number& __val)
1442.238 +{
1442.239 +  typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry;
1442.240 +  ios_base::iostate __err = 0;
1442.241 +  _Sentry __sentry( __that );     // Skip whitespace.
1442.242 +  if (__sentry) {
1442.243 +    typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> > _Num_get;
1442.244 +    _STLP_TRY {
1442.245 +      ((const _Num_get&)use_facet<_Num_get>(__that.getloc())).get(istreambuf_iterator<_CharT, _Traits>(__that.rdbuf()),
1442.246 +					0, __that, __err, __val);
1442.247 +    }
1442.248 +    _STLP_CATCH_ALL {
1442.249 +      __that._M_handle_exception(ios_base::badbit);
1442.250 +    }
1442.251 +    if (__err) __that.setstate(__err);
1442.252 +  }
1442.253 +  return __err;
1442.254 +}
1442.255 +
1442.256 +
1442.257 +// Unformatted input
1442.258 +
1442.259 +template <class _CharT, class _Traits>
1442.260 +__BIS_int_type__
1442.261 +basic_istream<_CharT, _Traits>::peek()
1442.262 +{
1442.263 +  typename _Traits::int_type __tmp = _Traits::eof();
1442.264 +
1442.265 +  this->_M_gcount = 0;
1442.266 +  sentry __sentry(*this, _No_Skip_WS());
1442.267 +
1442.268 +  if (__sentry) {
1442.269 +    _STLP_TRY {
1442.270 +      __tmp = this->rdbuf()->sgetc();
1442.271 +    }
1442.272 +    _STLP_CATCH_ALL {
1442.273 +      this->_M_handle_exception(ios_base::badbit);
1442.274 +    }
1442.275 +  }
1442.276 +  else
1442.277 +  {
1442.278 +    if (this->_S_eof(__tmp))
1442.279 +    {
1442.280 +      this->clear();
1442.281 +      this->setstate(ios_base::eofbit);
1442.282 +    }
1442.283 +  }
1442.284 +  return __tmp;
1442.285 +}
1442.286 +
1442.287 +
1442.288 +template <class _CharT, class _Traits>
1442.289 +__BIS_int_type__
1442.290 +basic_istream<_CharT, _Traits>::get()
1442.291 +{
1442.292 +  typename _Traits::int_type __tmp = _Traits::eof();
1442.293 +  sentry __sentry(*this, _No_Skip_WS());
1442.294 +  this->_M_gcount = 0;
1442.295 +
1442.296 +  if (__sentry) {
1442.297 +    _STLP_TRY {
1442.298 +      __tmp = this->rdbuf()->sbumpc();
1442.299 +    }
1442.300 +    _STLP_CATCH_ALL {
1442.301 +      this->_M_handle_exception(ios_base::badbit);
1442.302 +    }
1442.303 +
1442.304 +    if (!this->_S_eof(__tmp))
1442.305 +      this->_M_gcount = 1;
1442.306 +  }
1442.307 +
1442.308 +  if (_M_gcount == 0)
1442.309 +    this->setstate(ios_base::eofbit | ios_base::failbit);
1442.310 +
1442.311 +  return __tmp;
1442.312 +}
1442.313 +
1442.314 +template <class _CharT, class _Traits>
1442.315 +basic_istream<_CharT, _Traits>&
1442.316 +basic_istream<_CharT, _Traits>::get(_CharT& __c)
1442.317 +{
1442.318 +  sentry __sentry(*this, _No_Skip_WS());
1442.319 +  this->_M_gcount = 0;
1442.320 +
1442.321 +  if (__sentry) {
1442.322 +    typename _Traits::int_type __tmp = _Traits::eof();
1442.323 +    _STLP_TRY {
1442.324 +      __tmp = this->rdbuf()->sbumpc();
1442.325 +    }
1442.326 +    _STLP_CATCH_ALL {
1442.327 +      this->_M_handle_exception(ios_base::badbit);
1442.328 +    }
1442.329 +
1442.330 +    if (!this->_S_eof(__tmp)) {
1442.331 +      this->_M_gcount = 1;
1442.332 +      __c = _Traits::to_char_type(__tmp);
1442.333 +    }
1442.334 +  }
1442.335 +
1442.336 +  if (this->_M_gcount == 0)
1442.337 +    this->setstate(ios_base::eofbit | ios_base::failbit);
1442.338 +
1442.339 +  return *this;
1442.340 +}
1442.341 +
1442.342 +
1442.343 +
1442.344 +// Read characters and discard them.  The standard specifies a single
1442.345 +// function with two arguments, each with a default.  We instead use
1442.346 +// three overloded functions, because it's possible to implement the
1442.347 +// first two more efficiently than the fully general third version.
1442.348 +template <class _CharT, class _Traits>
1442.349 +basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::ignore()
1442.350 +{
1442.351 +  sentry __sentry(*this, _No_Skip_WS());
1442.352 +  this->_M_gcount = 0;
1442.353 +
1442.354 +  if (__sentry) {
1442.355 +    int_type __c;
1442.356 +    _STLP_TRY {
1442.357 +      __c = this->rdbuf()->sbumpc();
1442.358 +    }
1442.359 +    _STLP_CATCH_ALL {
1442.360 +      this->_M_handle_exception(ios_base::badbit);
1442.361 +      return *this;
1442.362 +    }
1442.363 +
1442.364 +    if (!this->_S_eof(__c))
1442.365 +      this->_M_gcount = 1;
1442.366 +    else
1442.367 +      this->setstate(ios_base::eofbit);
1442.368 +  }
1442.369 +
1442.370 +  return *this;
1442.371 +}
1442.372 +
1442.373 +// Putback
1442.374 +
1442.375 +template <class _CharT, class _Traits>
1442.376 +basic_istream<_CharT, _Traits>&
1442.377 +basic_istream<_CharT, _Traits>::putback(_CharT __c) {
1442.378 +  this->_M_gcount = 0;
1442.379 +  sentry __sentry(*this, _No_Skip_WS());
1442.380 +
1442.381 +  if (__sentry) {
1442.382 +    typename _Traits::int_type __tmp = _Traits::eof();
1442.383 +    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.384 +//    if (!__buf || this->_S_eof(__buf->sputbackc(__c)))
1442.385 +    if (__buf) {
1442.386 +      _STLP_TRY {
1442.387 +        __tmp = __buf->sputbackc(__c);
1442.388 +      }
1442.389 +      _STLP_CATCH_ALL {
1442.390 +        this->_M_handle_exception(ios_base::badbit);
1442.391 +      }
1442.392 +    }
1442.393 +    if (this->_S_eof(__tmp))
1442.394 +      this->setstate(ios_base::badbit);
1442.395 +  }
1442.396 +  else
1442.397 +    this->setstate(ios_base::failbit);
1442.398 +
1442.399 +  return *this;
1442.400 +}
1442.401 +
1442.402 +template <class _CharT, class _Traits>
1442.403 +basic_istream<_CharT, _Traits>& basic_istream<_CharT, _Traits>::unget() {
1442.404 +  this->_M_gcount = 0;
1442.405 +
1442.406 +  sentry __sentry(*this, _No_Skip_WS());
1442.407 +
1442.408 +  if (__sentry) {
1442.409 +    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.410 +    //     if (!__buf || _Traits::eq_int_type(__buf->sungetc(), _Traits::eof()))
1442.411 +    if (__buf) {
1442.412 +      _STLP_TRY {
1442.413 +        _CharT __tmp;
1442.414 +        __tmp = __buf->sungetc();
1442.415 +#ifdef 	__SYMBIAN32__
1442.416 +	if (__tmp == (_CharT)-1) //chek for eof
1442.417 +#else
1442.418 +        if (this->_S_eof(__tmp))
1442.419 +#endif			
1442.420 +          this->setstate(ios_base::badbit);
1442.421 +      }
1442.422 +      _STLP_CATCH_ALL {
1442.423 +        this->_M_handle_exception(ios_base::badbit);
1442.424 +      }
1442.425 +    } else
1442.426 +      this->setstate(ios_base::badbit);
1442.427 +  }
1442.428 +  else
1442.429 +    this->setstate(ios_base::failbit);
1442.430 +
1442.431 +  return *this;
1442.432 +}
1442.433 +
1442.434 +// Positioning and buffer control.
1442.435 +
1442.436 +template <class _CharT, class _Traits>
1442.437 +int basic_istream<_CharT, _Traits>::sync() {
1442.438 +  sentry __sentry(*this, _No_Skip_WS());
1442.439 +
1442.440 +  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.441 +  if (__buf) {
1442.442 +    if (__buf->pubsync() == -1) {
1442.443 +      this->setstate(ios_base::badbit);
1442.444 +      return -1;
1442.445 +    }
1442.446 +    else
1442.447 +      return 0;
1442.448 +  }
1442.449 +  else
1442.450 +    return -1;
1442.451 +}
1442.452 +
1442.453 +template <class _CharT, class _Traits>
1442.454 +__BIS_pos_type__
1442.455 +basic_istream<_CharT, _Traits>::tellg() {
1442.456 +#ifndef __SYMBIAN32__
1442.457 +  sentry __sentry(*this, _No_Skip_WS());
1442.458 +#endif
1442.459 +  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.460 +  return (__buf && !this->fail()) ? __buf->pubseekoff(0, ios_base::cur, ios_base::in)
1442.461 +    : pos_type(-1);
1442.462 +}
1442.463 +
1442.464 +template <class _CharT, class _Traits>
1442.465 +basic_istream<_CharT, _Traits>&
1442.466 +basic_istream<_CharT, _Traits>::seekg(pos_type __pos) {
1442.467 +#ifndef __SYMBIAN32__
1442.468 +  sentry __sentry(*this, _No_Skip_WS());
1442.469 +#endif
1442.470 +  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.471 +  if (!this->fail() && __buf)
1442.472 +  {
1442.473 +    pos_type pos = __buf->pubseekpos(__pos, ios_base::in);
1442.474 +    if(pos == pos_type(off_type(-1)))
1442.475 +    	this->setstate(ios_base::failbit);
1442.476 +  }
1442.477 +  return *this;
1442.478 +}
1442.479 +
1442.480 +template <class _CharT, class _Traits>
1442.481 +basic_istream<_CharT, _Traits>&
1442.482 +basic_istream<_CharT, _Traits>::seekg(off_type __off, ios_base::seekdir __dir)
1442.483 +{
1442.484 +#ifndef __SYMBIAN32__
1442.485 +  sentry __sentry(*this, _No_Skip_WS());
1442.486 +#endif
1442.487 +  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.488 +  if (!this->fail() && __buf)
1442.489 +  {
1442.490 +
1442.491 +    pos_type pos = __buf->pubseekoff(__off, __dir, ios_base::in);
1442.492 +    if(pos == pos_type(off_type(-1)))
1442.493 +     	this->setstate(ios_base::failbit);
1442.494 +  }
1442.495 +  return *this;
1442.496 +}
1442.497 +
1442.498 +// Formatted input of characters and character arrays.
1442.499 +
1442.500 +template <class _CharT, class _Traits>
1442.501 +void basic_istream<_CharT, _Traits>::_M_formatted_get(_CharT& __c)
1442.502 +{
1442.503 +//  typename _Traits::int_type __tmp = _Traits::eof();
1442.504 +
1442.505 +  sentry __sentry(*this); // Skip whitespace.
1442.506 +
1442.507 +  if (__sentry) {
1442.508 +    typename _Traits::int_type __tmp = _Traits::eof();
1442.509 +
1442.510 +    _STLP_TRY {
1442.511 +      __tmp = this->rdbuf()->sbumpc();
1442.512 +    }
1442.513 +    _STLP_CATCH_ALL {
1442.514 +      this->_M_handle_exception(ios_base::badbit);
1442.515 +      return;
1442.516 +    }
1442.517 +
1442.518 +    if (!this->_S_eof(__tmp))
1442.519 +      __c = _Traits::to_char_type(__tmp);
1442.520 +    else
1442.521 +      this->setstate(ios_base::eofbit | ios_base::failbit);
1442.522 +  }
1442.523 +}
1442.524 +
1442.525 +
1442.526 +//---------------------------------------------------------------------------
1442.527 +// istream's helper functions.
1442.528 +
1442.529 +// A generic function for unbuffered input.  We stop when we reach EOF,
1442.530 +// or when we have extracted _Num characters, or when the function object
1442.531 +// __is_delim return true.  In the last case, it extracts the character
1442.532 +// for which __is_delim is true, if and only if __extract_delim is true.
1442.533 +// It appends a null character to the end of the string; this means that
1442.534 +// it may store up to _Num + 1 characters.
1442.535 +//
1442.536 +// __is_getline governs two corner cases: reading _Num characters without
1442.537 +// encountering delim or eof (in which case failbit is set if __is_getline
1442.538 +// is true); and reading _Num characters where the _Num+1'st character is
1442.539 +// eof (in which case eofbit is set if __is_getline is true).
1442.540 +//
1442.541 +// It is assumed that __is_delim never throws.
1442.542 +//
1442.543 +// Return value is the number of characters extracted, including the
1442.544 +// delimiter if it is extracted.  Note that the number of characaters
1442.545 +// extracted isn't necessarily the same as the number stored.
1442.546 +
1442.547 +template < class _CharT, class _Traits, class _Is_Delim>
1442.548 +streamsize _STLP_CALL
1442.549 +_M_read_unbuffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __buf,
1442.550 +                       streamsize _Num, _CharT* __s,
1442.551 +                       _Is_Delim __is_delim,
1442.552 +                       bool __extract_delim, bool __append_null,
1442.553 +                       bool __is_getline)
1442.554 +{
1442.555 +  streamsize __n = 0;
1442.556 +  ios_base::iostate __status = 0;
1442.557 +
1442.558 +  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1442.559 +  // The operations that can potentially throw are sbumpc, snextc, and sgetc.
1442.560 +  _STLP_TRY {
1442.561 +# if 0
1442.562 +    int_type __c = __buf->sgetc();
1442.563 +    while (true) {
1442.564 +      if (__that->_S_eof(__c)) {
1442.565 +        if (__n < _Num || __is_getline)
1442.566 +          __status |= ios_base::eofbit;
1442.567 +        break;
1442.568 +      }
1442.569 +
1442.570 +      else if (__is_delim(__c)) {
1442.571 +        if (__extract_delim) {  // Extract and discard current character.
1442.572 +          __buf->sbumpc();
1442.573 +          ++__n;
1442.574 +        }
1442.575 +        break;
1442.576 +      }
1442.577 +
1442.578 +      else if (__n == _Num) {
1442.579 +        if (__is_getline)
1442.580 +          __status |= ios_base::failbit;
1442.581 +        break;
1442.582 +      }
1442.583 +
1442.584 +      *__s++ = _Traits::to_char_type(__c);
1442.585 +      ++__n;
1442.586 +      __c = __buf->snextc();
1442.587 +    }
1442.588 +# else
1442.589 +// int_type __c = __buf->sbumpc(); // __buf->sgetc();
1442.590 +while (true) {
1442.591 +
1442.592 +int_type __c = __buf->sbumpc(); // sschwarz
1442.593 +
1442.594 +if (__that->_S_eof(__c)) {
1442.595 +if (__n < _Num || __is_getline)
1442.596 +__status |= ios_base::eofbit;
1442.597 +break;
1442.598 +}
1442.599 +
1442.600 +else if (__is_delim(__c)) {
1442.601 +if (__extract_delim) { // Extract and discard current character.
1442.602 +// __buf->sbumpc();
1442.603 +++__n;
1442.604 +}
1442.605 +break;
1442.606 +}
1442.607 +
1442.608 +else { // regular character
1442.609 +
1442.610 +*__s++ = _Traits::to_char_type(__c);
1442.611 +++__n;
1442.612 +
1442.613 +}
1442.614 +
1442.615 +if (__n == _Num) {
1442.616 +if (__is_getline) // didn't find delimiter as one of the _Num chars
1442.617 +__status |= ios_base::failbit;
1442.618 +break;
1442.619 +}
1442.620 +
1442.621 +// *__s++ = _Traits::to_char_type(__c);
1442.622 +// ++__n;
1442.623 +
1442.624 +}
1442.625 +
1442.626 +# endif
1442.627 +
1442.628 +  }
1442.629 +  _STLP_CATCH_ALL {
1442.630 +    __that->_M_handle_exception(ios_base::badbit);
1442.631 +    *__s = _STLP_DEFAULT_CONSTRUCTED(_CharT);
1442.632 +    return __n;
1442.633 +  }
1442.634 +
1442.635 +  if (__append_null)
1442.636 +    *__s =  _STLP_DEFAULT_CONSTRUCTED(_CharT);
1442.637 +  if (__status)
1442.638 +    __that->setstate(__status);    // This might throw.
1442.639 +  return __n;
1442.640 +}
1442.641 +
1442.642 +// Much like _M_read_unbuffered, but with one additional function object:
1442.643 +// __scan_delim(first, last) returns the first pointer p in [first, last)
1442.644 +// such that __is_delim(p) is true.
1442.645 +
1442.646 +template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim>
1442.647 +streamsize _STLP_CALL
1442.648 +_M_read_buffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __buf,
1442.649 +                     streamsize _Num, _CharT* __s,
1442.650 +                     _Is_Delim __is_delim, _Scan_Delim __scan_delim,
1442.651 +                     bool __extract_delim, bool __append_null,
1442.652 +                     bool __is_getline)
1442.653 +{
1442.654 +  streamsize __n = 0;
1442.655 +  ios_base::iostate __status = 0;
1442.656 +  bool __done    = false;
1442.657 +
1442.658 +  _STLP_TRY {
1442.659 +    while (__buf->_M_egptr() != __buf->_M_gptr() && !__done) {
1442.660 +      const _CharT* __first = __buf->_M_gptr();
1442.661 +      const _CharT* __last  = __buf->_M_egptr();
1442.662 +      ptrdiff_t __request = _Num - __n;
1442.663 +
1442.664 +      const _CharT* __p  = __scan_delim(__first, __last);
1442.665 +      ptrdiff_t __chunk = (min) (ptrdiff_t(__p - __first), __request);
1442.666 +      _Traits::copy(__s, __first, __chunk);
1442.667 +      __s += __chunk;
1442.668 +      __n += __chunk;
1442.669 +      __buf->_M_gbump((int)__chunk);
1442.670 +
1442.671 +      // We terminated by finding delim.
1442.672 +      if (__p != __last && __p - __first <= __request) {
1442.673 +        if (__extract_delim) {
1442.674 +          __n += 1;
1442.675 +          __buf->_M_gbump(1);
1442.676 +        }
1442.677 +        __done = true;
1442.678 +      }
1442.679 +
1442.680 +      // We terminated by reading all the characters we were asked for.
1442.681 +      else if(__n == _Num) {
1442.682 +
1442.683 +        // Find out if we have reached eof.  This matters for getline.
1442.684 +        if (__is_getline) {
1442.685 +          if (__chunk == __last - __first) {
1442.686 +            if (__that->_S_eof(__buf->sgetc()))
1442.687 +              __status |= ios_base::eofbit;
1442.688 +          }
1442.689 +          else
1442.690 +            __status |= ios_base::failbit;
1442.691 +        }
1442.692 +        __done   = true;
1442.693 +      }
1442.694 +
1442.695 +      // The buffer contained fewer than _Num - __n characters.  Either we're
1442.696 +      // at eof, or we should refill the buffer and try again.
1442.697 +      else {
1442.698 +	if (__that->_S_eof(__buf->sgetc())) {
1442.699 +          __status |= ios_base::eofbit;
1442.700 +          __done = true;
1442.701 +        }
1442.702 +      }
1442.703 +    } // Close the while loop.
1442.704 +  }
1442.705 +  _STLP_CATCH_ALL {
1442.706 +    __that->_M_handle_exception(ios_base::badbit);
1442.707 +    __done = true;
1442.708 +  }
1442.709 +
1442.710 +  if (__done) {
1442.711 +    if (__append_null)
1442.712 +        *__s =  _STLP_DEFAULT_CONSTRUCTED(_CharT);
1442.713 +    if (__status != 0)
1442.714 +      __that->setstate(__status);   // This might throw.
1442.715 +    return __n;
1442.716 +  }
1442.717 +
1442.718 +  // If execution has reached this point, then we have an empty buffer but
1442.719 +  // we have not reached eof.  What that means is that the streambuf has
1442.720 +  // decided to switch from buffered to unbuffered input.  We switch to
1442.721 +  // to _M_read_unbuffered.
1442.722 +
1442.723 +  return __n + _M_read_unbuffered(__that,  __buf, _Num - __n, __s, __is_delim,
1442.724 +                                  __extract_delim,__append_null,__is_getline);
1442.725 +}
1442.726 +
1442.727 +
1442.728 +
1442.729 +
1442.730 +template <class _CharT, class _Traits>
1442.731 +basic_istream<_CharT, _Traits>&
1442.732 +basic_istream<_CharT, _Traits>::get(_CharT* __s, streamsize __n,
1442.733 +                                    _CharT __delim) {
1442.734 +  sentry __sentry(*this, _No_Skip_WS());
1442.735 +  this->_M_gcount = 0;
1442.736 +
1442.737 +  if (__sentry) {
1442.738 +    if (__n > 0) {
1442.739 +      basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.740 +
1442.741 +      if (__buf->egptr() != __buf->gptr())
1442.742 +        this->_M_gcount =
1442.743 +          _M_read_buffered(this,  __buf, __n - 1, __s,
1442.744 +                           _Eq_char_bound<_Traits>(__delim),
1442.745 +                           _Scan_for_char_val<_Traits>(__delim),
1442.746 +                           false, true, false);
1442.747 +      else
1442.748 +        this->_M_gcount =
1442.749 +          _M_read_unbuffered(this,  __buf, __n - 1, __s,
1442.750 +                             _Eq_char_bound<_Traits>(__delim),
1442.751 +                             false, true, false);
1442.752 +    }
1442.753 +  }
1442.754 +#ifdef __SYMBIAN32__
1442.755 +  *(__s + this->_M_gcount) = _STLP_DEFAULT_CONSTRUCTED(_CharT);
1442.756 +#endif //__SYMBIAN32__  
1442.757 +  if (this->_M_gcount == 0)
1442.758 +    this->setstate(ios_base::failbit);
1442.759 +
1442.760 +  return *this;
1442.761 +}
1442.762 +
1442.763 +// Getline is essentially identical to get, except that it extracts
1442.764 +// the delimiter.
1442.765 +template <class _CharT, class _Traits>
1442.766 +basic_istream<_CharT, _Traits>&
1442.767 +basic_istream<_CharT, _Traits>::getline(_CharT* __s, streamsize __n,
1442.768 +                                        _CharT __delim) {
1442.769 +  sentry __sentry(*this, _No_Skip_WS());
1442.770 +  this->_M_gcount = 0;
1442.771 +
1442.772 +  if (__sentry) {
1442.773 +    if (__n > 0) {
1442.774 +      basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.775 +      this->_M_gcount = __buf->egptr() != __buf->gptr()
1442.776 +        ? _M_read_buffered(this,  __buf, __n - 1, __s,
1442.777 +                           _Eq_char_bound<_Traits>(__delim),
1442.778 +                           _Scan_for_char_val<_Traits>(__delim),
1442.779 +                           true, true, true)
1442.780 +        : _M_read_unbuffered(this,  __buf, __n - 1, __s,
1442.781 +                             _Eq_char_bound<_Traits>(__delim),
1442.782 +                             true, true, true);
1442.783 +    }
1442.784 +  }
1442.785 +
1442.786 +  if (this->_M_gcount == 0)
1442.787 +    this->setstate(ios_base::failbit);
1442.788 +
1442.789 +  return *this;
1442.790 +}
1442.791 +
1442.792 +// Read n characters.  We don't look for any delimiter, and we don't
1442.793 +// put in a terminating null character.
1442.794 +template <class _CharT, class _Traits>
1442.795 +basic_istream<_CharT, _Traits>&
1442.796 +basic_istream<_CharT, _Traits>::read(char_type* __s, streamsize __n)
1442.797 +{
1442.798 +  sentry __sentry(*this, _No_Skip_WS());
1442.799 +  this->_M_gcount = 0;
1442.800 +
1442.801 +  if (__sentry && !this->eof()) {
1442.802 +    basic_streambuf<_CharT, _Traits>*__buf = this->rdbuf();
1442.803 +    if (__buf->gptr() != __buf->egptr())
1442.804 +      _M_gcount
1442.805 +        = _M_read_buffered(this,  __buf, __n, __s,
1442.806 +                           _Constant_unary_fun<bool, int_type>(false),
1442.807 +                           _Project2nd<const _CharT*, const _CharT*>(),
1442.808 +                           false, false, false);
1442.809 +    else
1442.810 +      _M_gcount
1442.811 +        = _M_read_unbuffered(this,  __buf, __n, __s,
1442.812 +                             _Constant_unary_fun<bool, int_type>(false),
1442.813 +                             false, false, false);
1442.814 +  }
1442.815 +  else
1442.816 +    this->setstate(ios_base::failbit);
1442.817 +
1442.818 +  if (this->eof())
1442.819 +    this->setstate(ios_base::eofbit | ios_base::failbit);
1442.820 +
1442.821 +  return *this;
1442.822 +}
1442.823 +
1442.824 +
1442.825 +// Read n or fewer characters.  We don't look for any delimiter, and
1442.826 +// we don't put in a terminating null character.
1442.827 +template <class _CharT, class _Traits>
1442.828 +streamsize
1442.829 +basic_istream<_CharT, _Traits>::readsome(char_type* __s, streamsize __nmax)
1442.830 +{
1442.831 +  sentry __sentry(*this, _No_Skip_WS());
1442.832 +  this->_M_gcount = 0;
1442.833 +
1442.834 +  if (__sentry && !this->eof() && __nmax >= 0) {
1442.835 +
1442.836 +    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.837 +    streamsize __avail = __buf->in_avail();
1442.838 +
1442.839 +    // fbp : isn't full-blown setstate required here ?
1442.840 +    if (__avail == -1)
1442.841 +      this->_M_setstate_nothrow(ios_base::eofbit);
1442.842 +
1442.843 +    else if (__avail != 0) {
1442.844 +
1442.845 +      if (__buf->gptr() != __buf->egptr())
1442.846 +        _M_gcount
1442.847 +          = _M_read_buffered(this,  __buf, (min) (__avail, __nmax), __s,
1442.848 +                             _Constant_unary_fun<bool, int_type>(false),
1442.849 +                             _Project2nd<const _CharT*, const _CharT*>(),
1442.850 +                             false, false, false);
1442.851 +      else
1442.852 +        _M_gcount
1442.853 +          = _M_read_unbuffered(this,  __buf, (min) (__avail, __nmax), __s,
1442.854 +                               _Constant_unary_fun<bool, int_type>(false),
1442.855 +                               false, false, false);
1442.856 +    }
1442.857 +  }
1442.858 +  else {
1442.859 +    // fbp : changed so that failbit is set only there, to pass Dietmar's test
1442.860 +    if (this->eof())
1442.861 +      this->setstate(ios_base::eofbit | ios_base::failbit);
1442.862 +    else
1442.863 +      {
1442.864 +      if (__nmax < 0)
1442.865 +        {
1442.866 +        basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.867 +        streamsize __avail = __buf->in_avail();
1442.868 +        if(__avail == -1)
1442.869 +            this->setstate(ios_base::eofbit);
1442.870 +        }
1442.871 +      else
1442.872 +        this->setstate(ios_base::failbit);
1442.873 +      }
1442.874 +  }
1442.875 +
1442.876 +  //  if (this->eof())
1442.877 +  //    this->setstate(ios_base::eofbit | ios_base::failbit);
1442.878 +
1442.879 +  return _M_gcount;
1442.880 +}
1442.881 +
1442.882 +template <class _CharT, class _Traits>
1442.883 +void basic_istream<_CharT, _Traits>::_M_formatted_get(_CharT* __s)
1442.884 +{
1442.885 +  sentry __sentry(*this); // Skip whitespace.
1442.886 +
1442.887 +  if (__sentry) {
1442.888 +    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.889 +    streamsize __nmax = this->width() > 0
1442.890 +      ? this->width() - 1
1442.891 +      : (numeric_limits<streamsize>::max)() / sizeof(_CharT) - 1;
1442.892 +
1442.893 +    streamsize __n = __buf->gptr() != __buf->egptr()
1442.894 +      ? _M_read_buffered(this,  __buf, __nmax, __s,
1442.895 +                         _Is_wspace_null<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1442.896 +                         _Scan_wspace_null<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1442.897 +			 false, true, false)
1442.898 +      : _M_read_unbuffered(this,  __buf, __nmax, __s,
1442.899 +                           _Is_wspace_null<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1442.900 +			   false, true, false);
1442.901 +    if (__n == 0)
1442.902 +      this->setstate(ios_base::failbit);
1442.903 +  }
1442.904 +  this->width(0);
1442.905 +}
1442.906 +
1442.907 +// A generic unbuffered function for ignoring characters.  We stop
1442.908 +// when we reach EOF, or when the function object __is_delim returns
1442.909 +// true.  In the last case, it extracts the character for which
1442.910 +// __is_delim is true, if and only if __extract_delim is true.
1442.911 +
1442.912 +template < class _CharT, class _Traits, class _Is_Delim>
1442.913 +void _STLP_CALL
1442.914 +_M_ignore_unbuffered(basic_istream<_CharT, _Traits>* __that,
1442.915 +		     basic_streambuf<_CharT, _Traits>* __buf,
1442.916 +		     _Is_Delim __is_delim,
1442.917 +		     bool __extract_delim, bool __set_failbit)
1442.918 +{
1442.919 +  bool __done = false;
1442.920 +  ios_base::iostate __status = 0;
1442.921 +  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1442.922 +
1442.923 +  _STLP_TRY {
1442.924 +#ifdef __SYMBIAN32__
1442.925 +    int_type __c = __buf->sgetc();
1442.926 +    do {
1442.927 +
1442.928 +      if (__that->_S_eof(__c)) {
1442.929 +        __done = true;
1442.930 +        __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit
1442.931 +                                  : ios_base::eofbit;
1442.932 +        break;
1442.933 +      }
1442.934 +
1442.935 +      else if (__is_delim(__c)) {
1442.936 +        __done = true;
1442.937 +        if (__extract_delim)
1442.938 +            __buf->snextc();
1442.939 +        break;
1442.940 +        
1442.941 +        }
1442.942 +      __c = __buf->snextc();        
1442.943 +      } while(!__done);
1442.944 +#else
1442.945 +    while (!__done) {
1442.946 +      int_type __c = __buf->sbumpc();
1442.947 +
1442.948 +      if (__that->_S_eof(__c)) {
1442.949 +        __done = true;
1442.950 +        __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit
1442.951 +                                  : ios_base::eofbit;
1442.952 +      }
1442.953 +
1442.954 +      else if (__is_delim(__c)) {
1442.955 +        __done = true;
1442.956 +        if (!__extract_delim)
1442.957 +          if (__that->_S_eof(__buf->sputbackc(_Traits::to_char_type(__c))))
1442.958 +            __status |= ios_base::failbit;
1442.959 +      }
1442.960 +    }
1442.961 +#endif
1442.962 +  }
1442.963 +  _STLP_CATCH_ALL {
1442.964 +    __that->_M_handle_exception(ios_base::badbit);
1442.965 +  }
1442.966 +
1442.967 +  __that->setstate(__status);
1442.968 +}
1442.969 +
1442.970 +// A generic buffered function for ignoring characters.  Much like
1442.971 +// _M_ignore_unbuffered, but with one additional function object:
1442.972 +// __scan_delim(first, last) returns the first pointer p in [first,
1442.973 +// last) such that __is_delim(p) is true.
1442.974 +
1442.975 +template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim>
1442.976 +void _STLP_CALL
1442.977 +_M_ignore_buffered(basic_istream<_CharT, _Traits>* __that,
1442.978 +		   basic_streambuf<_CharT, _Traits>* __buf,
1442.979 +		   _Is_Delim __is_delim, _Scan_Delim __scan_delim,
1442.980 +		   bool __extract_delim, bool __set_failbit)
1442.981 +{
1442.982 +  bool __at_eof      = false;
1442.983 +  bool __found_delim = false;
1442.984 +
1442.985 +  _STLP_TRY {
1442.986 +    while (__buf->_M_egptr() != __buf->_M_gptr() && !__at_eof && !__found_delim) {
1442.987 +      const _CharT* __p = __scan_delim(__buf->_M_gptr(), __buf->_M_egptr());
1442.988 +      __buf->_M_gbump((int)(__p - __buf->_M_gptr()));
1442.989 +
1442.990 +      if (__p != __buf->_M_egptr()) { // We found delim, so we're done.
1442.991 +        if (__extract_delim)
1442.992 +          __buf->_M_gbump(1);
1442.993 +        __found_delim = true;
1442.994 +      }
1442.995 +
1442.996 +      else                         // No delim.  Try to refil the buffer.
1442.997 +        __at_eof = __that->_S_eof(__buf->sgetc());
1442.998 +    }                              // Close the while loop.
1442.999 +  }
1442.1000 +  _STLP_CATCH_ALL {
1442.1001 +    __that->_M_handle_exception(ios_base::badbit);
1442.1002 +    return;
1442.1003 +  }
1442.1004 +
1442.1005 +  if (__at_eof) {
1442.1006 +    __that->setstate(__set_failbit ? ios_base::eofbit | ios_base::failbit
1442.1007 +                                   : ios_base::eofbit);
1442.1008 +    return;
1442.1009 +  }
1442.1010 +  if (__found_delim)
1442.1011 +    return;
1442.1012 +
1442.1013 +  // If execution has reached this point, then we have an empty buffer but
1442.1014 +  // we have not reached eof.  What that means is that the streambuf has
1442.1015 +  // decided to switch from a buffered to an unbuffered mode.  We switch
1442.1016 +  // to _M_ignore_unbuffered.
1442.1017 +  _M_ignore_unbuffered(__that,  __buf, __is_delim, __extract_delim, __set_failbit);
1442.1018 +}
1442.1019 +
1442.1020 +// Overloaded versions of _M_ignore_unbuffered and _M_ignore_unbuffered
1442.1021 +// with an explicit count _Num.  Return value is the number of
1442.1022 +// characters extracted.
1442.1023 +//
1442.1024 +// The function object __max_chars takes two arguments, _Num and __n
1442.1025 +// (the latter being the number of characters we have already read),
1442.1026 +// and returns the maximum number of characters to read from the buffer.
1442.1027 +// We parameterize _M_ignore_buffered so that we can use it for both
1442.1028 +// bounded and unbounded input; for the former the function object should
1442.1029 +// be minus<>, and for the latter it should return a constant maximum value.
1442.1030 +
1442.1031 +template < class _CharT, class _Traits, class _Max_Chars, class _Is_Delim>
1442.1032 +streamsize _STLP_CALL
1442.1033 +_M_ignore_unbuffered(basic_istream<_CharT, _Traits>* __that,
1442.1034 +		     basic_streambuf<_CharT, _Traits>* __buf,
1442.1035 +		     streamsize _Num, _Max_Chars __max_chars,
1442.1036 +		     _Is_Delim __is_delim,
1442.1037 +		     bool __extract_delim, bool __set_failbit)
1442.1038 +{
1442.1039 +  streamsize __n = 0;
1442.1040 +  ios_base::iostate __status = 0;
1442.1041 +  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1442.1042 +
1442.1043 +  _STLP_TRY {
1442.1044 +    while (__max_chars(_Num, __n) > 0) {
1442.1045 +      int_type __c = __buf->sbumpc();
1442.1046 +
1442.1047 +      if (__that->_S_eof(__c)) {
1442.1048 +        __status |= __set_failbit ? ios_base::eofbit | ios_base::failbit
1442.1049 +                                  : ios_base::eofbit;
1442.1050 +        break;
1442.1051 +      }
1442.1052 +
1442.1053 +      else if (__is_delim(__c)) {
1442.1054 +        if (__extract_delim)
1442.1055 +          ++__n;
1442.1056 +        else if (__that->_S_eof(__buf->sputbackc(_Traits::to_char_type(__c))))
1442.1057 +          __status |= ios_base::failbit;
1442.1058 +
1442.1059 +        break;
1442.1060 +      }
1442.1061 +      // fbp : added counter increment to pass Dietmar's test
1442.1062 +      ++__n;
1442.1063 +    }
1442.1064 +  }
1442.1065 +  _STLP_CATCH_ALL {
1442.1066 +    __that->_M_handle_exception(ios_base::badbit);
1442.1067 +  }
1442.1068 +
1442.1069 +  if (__status)
1442.1070 +    __that->setstate(__status);   // This might throw.
1442.1071 +  return __n;
1442.1072 +}
1442.1073 +
1442.1074 +template < class _CharT, class _Traits, class _Max_Chars, class _Is_Delim, class _Scan_Delim>
1442.1075 +streamsize _STLP_CALL
1442.1076 +_M_ignore_buffered(basic_istream<_CharT, _Traits>* __that,
1442.1077 +		   basic_streambuf<_CharT, _Traits>* __buf,
1442.1078 +		   streamsize _Num,
1442.1079 +		   _Max_Chars __max_chars,
1442.1080 +		   _Is_Delim __is_delim, _Scan_Delim __scan_delim,
1442.1081 +		   bool __extract_delim, bool __set_failbit)
1442.1082 +{
1442.1083 +  streamsize __n = 0;
1442.1084 +  bool __at_eof = false;
1442.1085 +  bool __done   = false;
1442.1086 +
1442.1087 +  _STLP_TRY {
1442.1088 +    while (__buf->_M_egptr() != __buf->_M_gptr() && !__done) {
1442.1089 +      ptrdiff_t __avail = __buf->_M_egptr() - __buf->_M_gptr();
1442.1090 +      streamsize __m = __max_chars(_Num, __n);
1442.1091 +
1442.1092 +      if (__avail >= __m) {       // We have more characters than we need.
1442.1093 +        const _CharT* __last = __buf->_M_gptr() + __m;
1442.1094 +        const _CharT* __p = __scan_delim(__buf->_M_gptr(), __last);
1442.1095 +        ptrdiff_t __chunk = __p - __buf->_M_gptr();
1442.1096 +        __n += __chunk;
1442.1097 +        __buf->_M_gbump((int)__chunk);
1442.1098 +
1442.1099 +        if (__extract_delim && __p != __last) {
1442.1100 +          __n += 1;
1442.1101 +          __buf->_M_gbump(1);
1442.1102 +        }
1442.1103 +
1442.1104 +        __done = true;
1442.1105 +      }
1442.1106 +
1442.1107 +      else {
1442.1108 +        const _CharT* __p = __scan_delim(__buf->_M_gptr(), __buf->_M_egptr());
1442.1109 +        ptrdiff_t __chunk = __p - __buf->_M_gptr();
1442.1110 +        __n += __chunk;
1442.1111 +        __buf->_M_gbump((int)__chunk);
1442.1112 +
1442.1113 +        if (__p != __buf->_M_egptr()) { // We found delim.
1442.1114 +          if (__extract_delim) {
1442.1115 +            __n += 1;
1442.1116 +            __buf->_M_gbump(1);
1442.1117 +          }
1442.1118 +
1442.1119 +          __done = true;
1442.1120 +        }
1442.1121 +
1442.1122 +        // We didn't find delim.  Try to refill the buffer.
1442.1123 +        else if (__that->_S_eof(__buf->sgetc())) {
1442.1124 +          __done   = true;
1442.1125 +          __at_eof = true;
1442.1126 +        }
1442.1127 +      }
1442.1128 +    } // Close the while loop.
1442.1129 +  }
1442.1130 +  _STLP_CATCH_ALL {
1442.1131 +    __that->_M_handle_exception(ios_base::badbit);
1442.1132 +    return __n;
1442.1133 +  }
1442.1134 +
1442.1135 +  if (__at_eof)
1442.1136 +    __that->setstate(__set_failbit ? ios_base::eofbit | ios_base::failbit
1442.1137 +                                   : ios_base::eofbit);
1442.1138 +
1442.1139 +  if (__done)
1442.1140 +    return __n;
1442.1141 +
1442.1142 +  // If execution has reached this point, then we have an empty buffer but
1442.1143 +  // we have not reached eof.  What that means is that the streambuf has
1442.1144 +  // decided to switch from buffered to unbuffered input.  We switch to
1442.1145 +  // to _M_ignore_unbuffered.
1442.1146 +
1442.1147 +  return __n + _M_ignore_unbuffered( __that,  __buf, _Num, __max_chars,
1442.1148 +                                    __is_delim, __extract_delim, __set_failbit);
1442.1149 +}
1442.1150 +
1442.1151 +
1442.1152 +template <class _CharT, class _Traits>
1442.1153 +basic_istream<_CharT, _Traits>&
1442.1154 +basic_istream<_CharT, _Traits>::ignore(streamsize __n)
1442.1155 +{
1442.1156 +  sentry __sentry(*this, _No_Skip_WS());
1442.1157 +  this->_M_gcount = 0;
1442.1158 +
1442.1159 +  if (__sentry) {
1442.1160 +    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.1161 +    typedef _Constant_unary_fun<bool, int_type> _Const_bool;
1442.1162 +    typedef _Constant_binary_fun<streamsize, streamsize, streamsize>
1442.1163 +      _Const_streamsize;
1442.1164 +    const streamsize __maxss = (numeric_limits<streamsize>::max)();
1442.1165 +
1442.1166 +    if (__n == (numeric_limits<int>::max)()) {
1442.1167 +      if (__buf->gptr() != __buf->egptr())
1442.1168 +        _M_gcount
1442.1169 +          = _M_ignore_buffered(this,  __buf,
1442.1170 +                               __maxss, _Const_streamsize(__maxss),
1442.1171 +                               _Const_bool(false),
1442.1172 +                               _Project2nd<const _CharT*, const _CharT*>(),
1442.1173 +                               false, false);
1442.1174 +      else
1442.1175 +        _M_gcount = _M_ignore_unbuffered(this,  __buf,
1442.1176 +                                         __maxss, _Const_streamsize(__maxss),
1442.1177 +                                         _Const_bool(false), false, false);
1442.1178 +    }
1442.1179 +    else {
1442.1180 +      if (__buf->gptr() != __buf->egptr())
1442.1181 +        _M_gcount
1442.1182 +          = _M_ignore_buffered(this,  __buf,
1442.1183 +                               __n, minus<streamsize>(),
1442.1184 +                               _Const_bool(false),
1442.1185 +                               _Project2nd<const _CharT*, const _CharT*>(),
1442.1186 +                               false, false);
1442.1187 +      else
1442.1188 +        _M_gcount = _M_ignore_unbuffered(this,  __buf, __n, minus<streamsize>(),
1442.1189 +                                         _Const_bool(false), false, false);
1442.1190 +    }
1442.1191 +  }
1442.1192 +
1442.1193 +  return *this;
1442.1194 +}
1442.1195 +
1442.1196 +template <class _CharT, class _Traits>
1442.1197 +basic_istream<_CharT, _Traits>&
1442.1198 +basic_istream<_CharT, _Traits>::ignore(streamsize __n, int_type __delim)
1442.1199 +{
1442.1200 +  sentry __sentry(*this, _No_Skip_WS());
1442.1201 +  this->_M_gcount = 0;
1442.1202 +
1442.1203 +  if (__sentry) {
1442.1204 +    basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.1205 +    typedef _Constant_unary_fun<bool, int_type> _Const_bool;
1442.1206 +    typedef _Constant_binary_fun<streamsize, streamsize, streamsize>
1442.1207 +      _Const_streamsize;
1442.1208 +    const streamsize __maxss = (numeric_limits<streamsize>::max)();
1442.1209 +
1442.1210 +    if (__n == (numeric_limits<int>::max)()) {
1442.1211 +      if (__buf->gptr() != __buf->egptr())
1442.1212 +        _M_gcount = _M_ignore_buffered(this,  __buf,
1442.1213 +                                       __maxss, _Const_streamsize(__maxss),
1442.1214 +                                       _Eq_int_bound<_Traits>(__delim),
1442.1215 +                                       _Scan_for_int_val<_Traits>(__delim),
1442.1216 +                                       true, false);
1442.1217 +      else
1442.1218 +        _M_gcount = _M_ignore_unbuffered(this,  __buf,
1442.1219 +                                         __maxss, _Const_streamsize(__maxss),
1442.1220 +                                         _Eq_int_bound<_Traits>(__delim),
1442.1221 +                                         true, false);
1442.1222 +    }
1442.1223 +    else {
1442.1224 +      if (__buf->gptr() != __buf->egptr())
1442.1225 +        _M_gcount = _M_ignore_buffered(this,  __buf,
1442.1226 +                                       __n, minus<streamsize>(),
1442.1227 +                                       _Eq_int_bound<_Traits>(
1442.1228 +                                               __delim),
1442.1229 +                                       _Scan_for_int_val<_Traits>(__delim),
1442.1230 +                                       true, false);
1442.1231 +      else
1442.1232 +        _M_gcount = _M_ignore_unbuffered(this,  __buf, __n, minus<streamsize>(),
1442.1233 +                                         _Eq_int_bound<_Traits>(__delim),
1442.1234 +                                         true, false);
1442.1235 +    }
1442.1236 +  }
1442.1237 +
1442.1238 +  return *this;
1442.1239 +}
1442.1240 +
1442.1241 +// This member function does not construct a sentry object, because
1442.1242 +// it is called from sentry's constructor.
1442.1243 +template <class _CharT, class _Traits>
1442.1244 +void basic_istream<_CharT, _Traits>::_M_skip_whitespace(bool __set_failbit)
1442.1245 +{
1442.1246 +  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1442.1247 +  if (!__buf)
1442.1248 +    this->setstate(ios_base::badbit);
1442.1249 +  else if (__buf->gptr() != __buf->egptr())
1442.1250 +    _M_ignore_buffered(this,  __buf,
1442.1251 +                       _Is_not_wspace<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1442.1252 +                       _Scan_for_not_wspace<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1442.1253 +                       false, __set_failbit);
1442.1254 +  else
1442.1255 +    _M_ignore_unbuffered(this,  __buf,
1442.1256 +                         _Is_not_wspace<_Traits>((const ctype<_CharT>*)this->_M_ctype_facet()),
1442.1257 +                         false, __set_failbit);
1442.1258 +}
1442.1259 +
1442.1260 +
1442.1261 +// This is a very simple loop that reads characters from __src and puts
1442.1262 +// them into __dest.  It looks complicated because of the (standard-
1442.1263 +// mandated) exception handling policy.
1442.1264 +//
1442.1265 +// We stop when we get an exception, when we fail to insert into the
1442.1266 +// output streambuf, or when __is_delim is true.
1442.1267 +
1442.1268 +template < class _CharT, class _Traits, class _Is_Delim>
1442.1269 +streamsize _STLP_CALL
1442.1270 +_M_copy_unbuffered( basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __src,
1442.1271 +		    basic_streambuf<_CharT, _Traits>* __dest,
1442.1272 +		    _Is_Delim __is_delim,
1442.1273 +		    bool __extract_delim, bool __rethrow)
1442.1274 +{
1442.1275 +  streamsize __extracted = 0;
1442.1276 +  ios_base::iostate __status = 0;
1442.1277 +  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1442.1278 +  int_type __c;
1442.1279 +
1442.1280 +  _STLP_TRY {
1442.1281 +#ifdef __SYMBIAN32__
1442.1282 +    __c = __src->sgetc();
1442.1283 +    for(;; __c =  __src->snextc()){
1442.1284 +  
1442.1285 +      // If we failed to get a character, then quit.
1442.1286 +      if (__that->_S_eof(__c)) {
1442.1287 +        __status |= ios_base::eofbit;
1442.1288 +        break;
1442.1289 +      }  
1442.1290 +      // If it's the delimiter, then quit.
1442.1291 +      else if (__is_delim(__c)) {
1442.1292 +        if (!__extract_delim)
1442.1293 +          __status |= ios_base::failbit;
1442.1294 +        break;
1442.1295 +      }
1442.1296 +      
1442.1297 +      else {
1442.1298 +      
1442.1299 +        // Try to put the character in the output streambuf.
1442.1300 +        _STLP_TRY {
1442.1301 +          if (!__that->_S_eof(__dest->sputc(__c)))
1442.1302 +            ++__extracted;
1442.1303 +          else
1442.1304 +            break;
1442.1305 +        }
1442.1306 +        _STLP_CATCH_ALL {
1442.1307 +          __status |= ios_base::failbit;
1442.1308 +          break;
1442.1309 +        }
1442.1310 +        
1442.1311 +      }
1442.1312 +
1442.1313 +    } /* while (true) */
1442.1314 +#else
1442.1315 +    while (true) {
1442.1316 +
1442.1317 +      // Get a character. If there's an exception, catch and (maybe) rethrow it.
1442.1318 +      __c = __src->sbumpc();
1442.1319 +
1442.1320 +      // If we failed to get a character, then quit.
1442.1321 +      if (__that->_S_eof(__c)) {
1442.1322 +        __status |= ios_base::eofbit;
1442.1323 +        break;
1442.1324 +      }
1442.1325 +      // If it's the delimiter, then quit.
1442.1326 +      else if (__is_delim(__c)) {
1442.1327 +        if (!__extract_delim && !__pushback(__src, _Traits::to_char_type(__c)))
1442.1328 +          __status |= ios_base::failbit;
1442.1329 +        break;
1442.1330 +      }
1442.1331 +
1442.1332 +      else {
1442.1333 +
1442.1334 +        // Try to put the character in the output streambuf.
1442.1335 +        bool __failed = false;
1442.1336 +        _STLP_TRY {
1442.1337 +          if (!__that->_S_eof(__dest->sputc(__c)))
1442.1338 +            ++__extracted;
1442.1339 +          else
1442.1340 +            __failed = true;
1442.1341 +        }
1442.1342 +        _STLP_CATCH_ALL {
1442.1343 +          __failed = true;
1442.1344 +        }
1442.1345 +
1442.1346 +        // If we failed to put the character in the output streambuf, then
1442.1347 +        // try to push it back to the input streambuf.
1442.1348 +        if (__failed && !__pushback(__src, _Traits::to_char_type(__c)))
1442.1349 +          __status |= ios_base::failbit;
1442.1350 +
1442.1351 +        // fbp : avoiding infinite loop in io-27-6-1-2-3.exp
1442.1352 +        if (__failed)
1442.1353 +          break;
1442.1354 +      }
1442.1355 +
1442.1356 +    } /* while (true) */
1442.1357 +#endif    
1442.1358 +  }
1442.1359 +  // fbp : this try/catch moved here in reasonable assumption
1442.1360 +  // __is_delim never throw (__pushback is guaranteed not to)
1442.1361 +  _STLP_CATCH_ALL {
1442.1362 +    // See 27.6.1.2.3, paragraph 13.
1442.1363 +    if (__rethrow && __extracted == 0)
1442.1364 +      __that->_M_handle_exception(ios_base::failbit);
1442.1365 +  }
1442.1366 +  __that->setstate(__status);
1442.1367 +  return __extracted;
1442.1368 +}
1442.1369 +
1442.1370 +// Buffered copying from one streambuf to another.  We copy the characters
1442.1371 +// in chunks, rather than one at a time.  We still have to worry about all
1442.1372 +// of the error conditions we checked in _M_copy_unbuffered, plus one more:
1442.1373 +// the streambuf might decide to switch from a buffered to an unbuffered mode.
1442.1374 +
1442.1375 +template < class _CharT, class _Traits, class _Is_Delim, class _Scan_Delim>
1442.1376 +streamsize _STLP_CALL
1442.1377 +_M_copy_buffered(basic_istream<_CharT, _Traits>* __that, basic_streambuf<_CharT, _Traits>* __src,
1442.1378 +                     basic_streambuf<_CharT, _Traits>* __dest,
1442.1379 +                     _Scan_Delim __scan_delim, _Is_Delim __is_delim,
1442.1380 +                     bool __extract_delim, bool __rethrow)
1442.1381 +{
1442.1382 +  streamsize __extracted = 0;
1442.1383 +  ios_base::iostate __status = 0;
1442.1384 +  typedef typename basic_istream<_CharT, _Traits>::int_type int_type;
1442.1385 +  int_type __c = _Traits::eof();
1442.1386 +  _CharT* __first = __src->_M_gptr();
1442.1387 +  ptrdiff_t __avail = __src->_M_egptr() - __first;
1442.1388 +  // fbp : introduced to move catch/try blocks out of the loop
1442.1389 +  bool __do_handle_exceptions;
1442.1390 +
1442.1391 +  _STLP_TRY {
1442.1392 +    while (true) {
1442.1393 +      __do_handle_exceptions = false ;
1442.1394 +      const _CharT* __last = __scan_delim(__first, __src->_M_egptr());
1442.1395 +
1442.1396 +      // Try to copy the entire input buffer to the output buffer.
1442.1397 +      streamsize __n = __dest->sputn(__first, __extract_delim && __last != __src->_M_egptr()
1442.1398 +                                     ? (__last - __first) + 1
1442.1399 +                                     : (__last - __first));
1442.1400 +      __src->_M_gbump((int)__n);
1442.1401 +      __extracted += __n;
1442.1402 +
1442.1403 +      // from this on, catch() will call _M_handle_exceptions()
1442.1404 +      __do_handle_exceptions = true;
1442.1405 +
1442.1406 +      if (__n < __avail)          // We found the delimiter, or else failed to
1442.1407 +        break;                    // copy some characters.
1442.1408 +
1442.1409 +      __c = __src->sgetc();
1442.1410 +
1442.1411 +      // Three possibilities: we succeeded in refilling the buffer, or
1442.1412 +      // we got EOF, or the streambuf has switched to unbuffered mode.
1442.1413 +      __first = __src->_M_gptr();
1442.1414 +      __avail = __src->_M_egptr() - __first;
1442.1415 +
1442.1416 +      if (__avail > 0)
1442.1417 +        {}	// dwa 1/16/00 -- suppress a Metrowerks warning
1442.1418 +      else if (__that->_S_eof(__c)) {
1442.1419 +        __status |= ios_base::eofbit;
1442.1420 +        break;
1442.1421 +      }
1442.1422 +      else
1442.1423 +        return __extracted + _M_copy_unbuffered(__that,  __src, __dest, __is_delim,
1442.1424 +                                                __extract_delim, __rethrow);
1442.1425 +    } /* while */
1442.1426 +  }
1442.1427 +
1442.1428 +  _STLP_CATCH_ALL {
1442.1429 +    // See 27.6.1.2.3, paragraph 13.
1442.1430 +    if (__rethrow && __do_handle_exceptions &&  __extracted == 0)
1442.1431 +      __that->_M_handle_exception(ios_base::failbit);
1442.1432 +  }
1442.1433 +
1442.1434 +  if (__status)
1442.1435 +    __that->setstate(__status);   // This might throw.
1442.1436 +  return __extracted;
1442.1437 +}
1442.1438 +
1442.1439 +
1442.1440 +
1442.1441 +template <class _CharT, class _Traits>
1442.1442 +basic_istream<_CharT, _Traits>&
1442.1443 +basic_istream<_CharT, _Traits>
1442.1444 +  ::get(basic_streambuf<_CharT, _Traits>& __dest, _CharT __delim)
1442.1445 +{
1442.1446 +  sentry __sentry(*this, _No_Skip_WS());
1442.1447 +  this->_M_gcount = 0;
1442.1448 +
1442.1449 +  if (__sentry) {
1442.1450 +    basic_streambuf<_CharT, _Traits>* __src = this->rdbuf();
1442.1451 +
1442.1452 +    if (__src)
1442.1453 +      this->_M_gcount = __src->egptr() != __src->gptr()
1442.1454 +        ? _M_copy_buffered(this,  __src, &__dest,
1442.1455 +                           _Scan_for_char_val<_Traits>(__delim),
1442.1456 +                           _Eq_char_bound<_Traits>(__delim),
1442.1457 +                           false, false)
1442.1458 +        : _M_copy_unbuffered(this,  __src, &__dest,
1442.1459 +                             _Eq_char_bound<_Traits>(__delim),
1442.1460 +                             false, false);
1442.1461 +  }
1442.1462 +
1442.1463 +  if (this->_M_gcount == 0)
1442.1464 +    this->setstate(ios_base::failbit);
1442.1465 +
1442.1466 +  return *this;
1442.1467 +}
1442.1468 +
1442.1469 +// Copying characters into a streambuf.
1442.1470 +template <class _CharT, class _Traits>
1442.1471 +basic_istream<_CharT, _Traits>&
1442.1472 +basic_istream<_CharT, _Traits>
1442.1473 +  ::operator>>(basic_streambuf<_CharT, _Traits>* __dest)
1442.1474 +{
1442.1475 +  streamsize __n = 0;
1442.1476 +  typedef typename basic_istream<_CharT, _Traits>::sentry _Sentry;
1442.1477 +  _Sentry __sentry(*this);
1442.1478 +  if (__sentry) {
1442.1479 +    basic_streambuf<_CharT, _Traits>* __src = this->rdbuf();
1442.1480 +    if (__src && __dest)
1442.1481 +      __n = __src->egptr() != __src->gptr()
1442.1482 +        ? _M_copy_buffered(this,  __src, __dest,
1442.1483 +                           _Project2nd<const _CharT*, const _CharT*>(),
1442.1484 +                           _Constant_unary_fun<bool, int_type>(false),
1442.1485 +                           false, true)
1442.1486 +        : _M_copy_unbuffered(this,  __src, __dest,
1442.1487 +                             _Constant_unary_fun<bool, int_type>(false),
1442.1488 +                             false, true);
1442.1489 +  }
1442.1490 +
1442.1491 +  if (__n == 0)
1442.1492 +    this->setstate(ios_base::failbit);
1442.1493 +
1442.1494 +  return *this;
1442.1495 +}
1442.1496 +
1442.1497 +// ----------------------------------------------------------------
1442.1498 +// basic_iostream<> class
1442.1499 +// ----------------------------------------------------------------
1442.1500 +
1442.1501 +template <class _CharT, class _Traits>
1442.1502 +_STLP_EXP_DECLSPEC basic_iostream<_CharT, _Traits>
1442.1503 +  ::basic_iostream(basic_streambuf<_CharT, _Traits>* __buf)
1442.1504 +    : basic_ios<_CharT, _Traits>(),
1442.1505 +      basic_istream<_CharT, _Traits>(__buf),
1442.1506 +      basic_ostream<_CharT, _Traits>(__buf)
1442.1507 +{
1442.1508 +  this->init(__buf);
1442.1509 +}
1442.1510 +
1442.1511 +template <class _CharT, class _Traits>
1442.1512 +_STLP_EXP_DECLSPEC basic_iostream<_CharT, _Traits>::~basic_iostream()
1442.1513 +{}
1442.1514 +
1442.1515 +
1442.1516 +template <class _CharT, class _Traits>
1442.1517 +_STLP_EXP_DECLSPEC basic_istream<_CharT, _Traits>
1442.1518 +    ::basic_istream(basic_streambuf<_CharT, _Traits>* __buf) :
1442.1519 +    basic_ios<_CharT, _Traits>(), _M_gcount(0) {
1442.1520 +    this->init(__buf);
1442.1521 +  }
1442.1522 +
1442.1523 +template <class _CharT, class _Traits>
1442.1524 +_STLP_EXP_DECLSPEC basic_istream<_CharT, _Traits>
1442.1525 +  ::~basic_istream() {}
1442.1526 +
1442.1527 +
1442.1528 +
1442.1529 +_STLP_END_NAMESPACE
1442.1530 +
1442.1531 +# undef __BIS_int_type__
1442.1532 +# undef __BIS_pos_type__
1442.1533 +# undef __BIS_off_type__
1442.1534 +
1442.1535 +# endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1442.1536 +
1442.1537 +#endif /* _STLP_ISTREAM_C */
  1443.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1443.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_istream.h	Wed Mar 31 12:27:01 2010 +0100
  1443.3 @@ -0,0 +1,342 @@
  1443.4 +/*
  1443.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1443.6 + * Copyright (c) 1999
  1443.7 + * Silicon Graphics Computer Systems, Inc.
  1443.8 + *
  1443.9 + * Copyright (c) 1999 
 1443.10 + * Boris Fomitchev
 1443.11 + *
 1443.12 + * This material is provided "as is", with absolutely no warranty expressed
 1443.13 + * or implied. Any use is at your own risk.
 1443.14 + *
 1443.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1443.16 + * without fee, provided the above notices are retained on all copies.
 1443.17 + * Permission to modify the code and to distribute modified code is granted,
 1443.18 + * provided the above notices are retained, and a notice that the code was
 1443.19 + * modified is included with the above copyright notice.
 1443.20 + *
 1443.21 + */ 
 1443.22 +#ifndef _STLP_INTERNAL_ISTREAM_H
 1443.23 +#define _STLP_INTERNAL_ISTREAM_H
 1443.24 +
 1443.25 +// this block is included by _ostream.h, we include it here to lower #include level
 1443.26 +# if defined (_STLP_HAS_WCHAR_T) && !defined (_STLP_CWCHAR_H)
 1443.27 +#  include <stl/_cwchar.h>
 1443.28 +# endif
 1443.29 +
 1443.30 +# ifndef _STLP_INTERNAL_IOS_H
 1443.31 +#  include <stl/_ios.h>                  // For basic_ios<>.  Includes <iosfwd>.
 1443.32 +# endif
 1443.33 +
 1443.34 +#ifndef _STLP_INTERNAL_OSTREAM_H
 1443.35 +# include <stl/_ostream.h>              // Needed as a base class of basic_iostream.
 1443.36 +#endif
 1443.37 +
 1443.38 +#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1443.39 +# include <stl/_istreambuf_iterator.h>
 1443.40 +#endif
 1443.41 +
 1443.42 +#include <stl/_ctraits_fns.h>    // Helper functions that allow char traits
 1443.43 +                                // to be used as function objects.
 1443.44 +_STLP_BEGIN_NAMESPACE
 1443.45 +
 1443.46 +template <class _CharT, class _Traits, class _Number> 
 1443.47 +ios_base::iostate _STLP_CALL
 1443.48 +_M_get_num(basic_istream<_CharT, _Traits>& __that, _Number& __val);
 1443.49 +
 1443.50 +#if defined (_STLP_USE_TEMPLATE_EXPORT)
 1443.51 +template <class _CharT, class _Traits>
 1443.52 +class _Isentry;
 1443.53 +#endif
 1443.54 +
 1443.55 +struct _No_Skip_WS {};        // Dummy class used by sentry.
 1443.56 +
 1443.57 +template <class _CharT, class _Traits>
 1443.58 +bool _M_init_skip(basic_istream<_CharT, _Traits>& __is);
 1443.59 +template <class _CharT, class _Traits>
 1443.60 +bool _M_init_noskip(basic_istream<_CharT, _Traits>& __is);
 1443.61 +
 1443.62 +//----------------------------------------------------------------------
 1443.63 +// Class basic_istream, a class that performs formatted input through
 1443.64 +// a stream buffer.
 1443.65 +
 1443.66 +// The second template parameter, _Traits, defaults to char_traits<_CharT>.
 1443.67 +// The default is declared in header <iosfwd>, and it isn't declared here
 1443.68 +// because C++ language rules do not allow it to be declared twice. 
 1443.69 +
 1443.70 +template <class _CharT, class _Traits>
 1443.71 +class basic_istream : virtual public basic_ios<_CharT, _Traits> {
 1443.72 +public:
 1443.73 +                         // Types
 1443.74 +  typedef _CharT                     char_type;
 1443.75 +  typedef typename _Traits::int_type int_type;
 1443.76 +  typedef typename _Traits::pos_type pos_type;
 1443.77 +  typedef typename _Traits::off_type off_type;
 1443.78 +  typedef _Traits                    traits_type;
 1443.79 +  typedef basic_ios<_CharT, _Traits>     _Basic_ios;
 1443.80 +  typedef basic_istream<_CharT, _Traits> _Self;
 1443.81 +
 1443.82 +  typedef basic_ios<_CharT, _Traits>& (_STLP_CALL *__ios_fn)(basic_ios<_CharT, _Traits>&);
 1443.83 +  typedef ios_base& (_STLP_CALL *__ios_base_fn)(ios_base&);
 1443.84 +  typedef _Self& (_STLP_CALL *__istream_fn)(_Self&);
 1443.85 +
 1443.86 +public:                         // Constructor and destructor.
 1443.87 +  _STLP_DECLSPEC explicit basic_istream(basic_streambuf<_CharT, _Traits>* __buf);
 1443.88 +  _STLP_DECLSPEC ~basic_istream();
 1443.89 +
 1443.90 +public:                         // Nested sentry class.
 1443.91 +
 1443.92 +public:                         // Hooks for manipulators.  The arguments are
 1443.93 +                                // function pointers.
 1443.94 +  _Self& operator>> (__istream_fn __f) { return __f(*this); }
 1443.95 +  _Self& operator>> (__ios_fn __f) {  __f(*this); return *this; }
 1443.96 +  _Self& operator>> (__ios_base_fn __f) { __f(*this); return *this; }
 1443.97 +
 1443.98 +public:                         // Formatted input of numbers.
 1443.99 +  _Self& operator>> (short& __val) {
1443.100 +    long __lval = __val;
1443.101 +    unsigned short __uval;
1443.102 +   _M_get_num(*this, __lval);
1443.103 +    __val = __STATIC_CAST(short, __lval);
1443.104 +    __uval = __lval;
1443.105 +    // check if we lose digits
1443.106 +    //    if ((__val != __lval) && ((unsigned short)__val != __lval))
1443.107 +    if ((__val != __lval) && ((long)__uval != __lval))
1443.108 +      this->setstate(ios_base::failbit); 
1443.109 +    return *this; 
1443.110 +  }
1443.111 +  _Self& operator>> (int& __val) { 
1443.112 +    long __lval = __val;
1443.113 +    unsigned int __uval;
1443.114 +    _M_get_num(*this, __lval);
1443.115 +    __val = __lval;
1443.116 +    __uval = __lval;
1443.117 +    // check if we lose digits
1443.118 +    //    if ((__val != __lval) && ((unsigned int)__val != __lval))
1443.119 +    if ((__val != __lval) && ((long)__uval != __lval))
1443.120 +      this->setstate(ios_base::failbit); 
1443.121 +    return *this;
1443.122 +  }
1443.123 +  _Self& operator>> (unsigned short& __val) { _M_get_num(*this, __val); return *this; }
1443.124 +  _Self& operator>> (unsigned int& __val) { _M_get_num(*this, __val); return *this; }
1443.125 +  _Self& operator>> (long& __val) { _M_get_num(*this, __val); return *this; }
1443.126 +  _Self& operator>> (unsigned long& __val) { _M_get_num(*this, __val); return *this; }
1443.127 +#ifdef _STLP_LONG_LONG
1443.128 +  _Self& operator>> (_STLP_LONG_LONG& __val) { _M_get_num(*this, __val); return *this; }
1443.129 +  _Self& operator>> (unsigned _STLP_LONG_LONG& __val) { _M_get_num(*this, __val); return *this; }
1443.130 +#endif 
1443.131 +  _Self& operator>> (float& __val)  { _M_get_num(*this, __val); return *this; }
1443.132 +  _Self& operator>> (double& __val) { _M_get_num(*this, __val); return *this; }
1443.133 +# ifndef _STLP_NO_LONG_DOUBLE
1443.134 +  _Self& operator>> (long double& __val) { _M_get_num(*this, __val); return *this; }
1443.135 +# endif
1443.136 +# ifndef _STLP_NO_BOOL
1443.137 +  _Self& operator>> (bool& __val) { _M_get_num(*this, __val); return *this; }
1443.138 +# endif
1443.139 +  _Self& operator>> (void*& __val) { _M_get_num(*this, __val); return *this; }
1443.140 +
1443.141 +public:                         // Copying characters into a streambuf.
1443.142 +  _Self& operator>>(basic_streambuf<_CharT, _Traits>*);
1443.143 +
1443.144 +public:                         // Unformatted input.
1443.145 +  streamsize gcount() const { return _M_gcount; }
1443.146 +  int_type peek();
1443.147 +
1443.148 +public:                         // get() for single characters
1443.149 +  int_type get();
1443.150 +  _Self& get(char_type& __c);
1443.151 +
1443.152 +public:                         // get() for character arrays.
1443.153 +  _Self& get(char_type* __s, streamsize __n, char_type __delim);
1443.154 +  _Self& get(char_type* __s, streamsize __n)
1443.155 +    { return get(__s, __n, this->widen('\n')); }
1443.156 +
1443.157 +public:                         // get() for streambufs
1443.158 +  _Self& get(basic_streambuf<_CharT, _Traits>& __buf,
1443.159 +                     char_type __delim);
1443.160 +  _Self& get(basic_streambuf<_CharT, _Traits>& __buf)
1443.161 +    { return get(__buf, this->widen('\n')); }
1443.162 +
1443.163 +public:                         // getline()
1443.164 +  _Self& getline(char_type* __s, streamsize __n, char_type delim);
1443.165 +  _Self& getline(char_type* __s, streamsize __n)
1443.166 +    { return getline(__s, __n, this->widen('\n')); }
1443.167 +
1443.168 +public:                         // read(), readsome(), ignore()
1443.169 +  _Self& ignore();
1443.170 +  _Self& ignore(streamsize __n);
1443.171 +#if (defined (_STLP_MSVC) && _STLP_MSVC < 1200)
1443.172 +  inline
1443.173 +#endif
1443.174 +  _Self& ignore(streamsize __n, int_type __delim);
1443.175 +
1443.176 +  _Self& read(char_type* __s, streamsize __n);
1443.177 +  streamsize readsome(char_type* __s, streamsize __n);
1443.178 +
1443.179 +public:                         // putback
1443.180 +  _Self& putback(char_type __c);
1443.181 +  _Self& unget();
1443.182 +
1443.183 +public:                         // Positioning and buffer control.
1443.184 +  int sync();
1443.185 +
1443.186 +  pos_type tellg();
1443.187 +  _Self& seekg(pos_type __pos);
1443.188 +  _Self& seekg(off_type, ios_base::seekdir);
1443.189 +
1443.190 +public:                         // Helper functions for non-member extractors.
1443.191 +  void _M_formatted_get(_CharT& __c);
1443.192 +  void _M_formatted_get(_CharT* __s);
1443.193 +  void _M_skip_whitespace(bool __set_failbit);
1443.194 +
1443.195 +private:                        // Number of characters extracted by the
1443.196 +  streamsize _M_gcount;         // most recent unformatted input function.
1443.197 +
1443.198 +public:
1443.199 +
1443.200 +#if defined (_STLP_USE_TEMPLATE_EXPORT)
1443.201 +  // If we are using DLL specs, we have not to use inner classes
1443.202 +  // end class declaration here
1443.203 +  typedef _Isentry<_CharT, _Traits>      sentry;
1443.204 +};
1443.205 +#  define sentry _Isentry
1443.206 +template <class _CharT, class _Traits>
1443.207 +class _Isentry {
1443.208 +  typedef _Isentry<_CharT, _Traits> _Self;
1443.209 +# else
1443.210 +  class sentry {
1443.211 +    typedef sentry _Self;
1443.212 +#endif
1443.213 +    
1443.214 +  private:
1443.215 +    const bool _M_ok;
1443.216 +    //    basic_streambuf<_CharT, _Traits>* _M_buf;
1443.217 +        
1443.218 +  public:
1443.219 +    typedef _Traits traits_type;
1443.220 +    
1443.221 +    explicit sentry(basic_istream<_CharT, _Traits>& __is,
1443.222 +                    bool __noskipws = false) : 
1443.223 +      _M_ok((__noskipws || !(__is.flags() & ios_base::skipws)) ? _M_init_noskip(__is) :  _M_init_skip(__is) )
1443.224 +      /* , _M_buf(__is.rdbuf()) */
1443.225 +      {}
1443.226 +    
1443.227 +    // Calling this constructor is the same as calling the previous one with 
1443.228 +    // __noskipws = true, except that it doesn't require a runtime test.
1443.229 +    sentry(basic_istream<_CharT, _Traits>& __is, _No_Skip_WS) : /* _M_buf(__is.rdbuf()), */
1443.230 +      _M_ok(_M_init_noskip(__is)) {}
1443.231 +    
1443.232 +    ~sentry() {}
1443.233 +    
1443.234 +    operator bool() const { return _M_ok; }
1443.235 +    
1443.236 +  private:                        // Disable assignment and copy constructor.
1443.237 +    sentry(const _Self&) : _M_ok(false) {}
1443.238 +    void operator=(const _Self&) {}
1443.239 +  };
1443.240 +  
1443.241 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1443.242 +#  undef sentry
1443.243 +# else
1443.244 +  // close basic_istream class definition here
1443.245 +};
1443.246 +# endif
1443.247 +
1443.248 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1443.249 +_STLP_EXPORT_TEMPLATE_CLASS _Isentry<char, char_traits<char> >;
1443.250 +_STLP_EXPORT_TEMPLATE_CLASS basic_istream<char, char_traits<char> >;
1443.251 +#  if ! defined (_STLP_NO_WCHAR_T)
1443.252 +_STLP_EXPORT_TEMPLATE_CLASS _Isentry<wchar_t, char_traits<wchar_t> >;
1443.253 +_STLP_EXPORT_TEMPLATE_CLASS basic_istream<wchar_t, char_traits<wchar_t> >;
1443.254 +#  endif
1443.255 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1443.256 +
1443.257 +// Non-member character and string extractor functions.
1443.258 +
1443.259 +template <class _CharT, class _Traits>
1443.260 +inline basic_istream<_CharT, _Traits>& _STLP_CALL  
1443.261 +operator>>(basic_istream<_CharT, _Traits>& __stl_in, _CharT& __c) {
1443.262 +  __stl_in._M_formatted_get(__c);
1443.263 +  return __stl_in;
1443.264 +}
1443.265 +
1443.266 +template <class _Traits>
1443.267 +inline basic_istream<char, _Traits>& _STLP_CALL  
1443.268 +operator>>(basic_istream<char, _Traits>& __stl_in, unsigned char& __c) {
1443.269 +  __stl_in._M_formatted_get(__REINTERPRET_CAST(char&,__c));
1443.270 +  return __stl_in;
1443.271 +}
1443.272 +
1443.273 +template <class _Traits>
1443.274 +inline basic_istream<char, _Traits>& _STLP_CALL 
1443.275 +operator>>(basic_istream<char, _Traits>& __stl_in, signed char& __c) {
1443.276 +  __stl_in._M_formatted_get(__REINTERPRET_CAST(char&,__c));
1443.277 +  return __stl_in;
1443.278 +}
1443.279 +
1443.280 +template <class _CharT, class _Traits>
1443.281 +inline basic_istream<_CharT, _Traits>& _STLP_CALL 
1443.282 +operator>>(basic_istream<_CharT, _Traits>& __stl_in, _CharT* __s) {
1443.283 +  __stl_in._M_formatted_get(__s);
1443.284 +  return __stl_in;
1443.285 +}
1443.286 +
1443.287 +template <class _Traits>
1443.288 +inline basic_istream<char, _Traits>& _STLP_CALL 
1443.289 +operator>>(basic_istream<char, _Traits>& __stl_in, unsigned char* __s) {
1443.290 +  __stl_in._M_formatted_get(__REINTERPRET_CAST(char*,__s));
1443.291 +  return __stl_in;
1443.292 +}
1443.293 +
1443.294 +template <class _Traits>
1443.295 +inline basic_istream<char, _Traits>& _STLP_CALL 
1443.296 +operator>>(basic_istream<char, _Traits>& __stl_in, signed char* __s) {
1443.297 +  __stl_in._M_formatted_get(__REINTERPRET_CAST(char*,__s));
1443.298 +  return __stl_in;
1443.299 +}
1443.300 +
1443.301 +//----------------------------------------------------------------------
1443.302 +// istream manipulator.
1443.303 +template <class _CharT, class _Traits>
1443.304 +basic_istream<_CharT, _Traits>& _STLP_CALL
1443.305 +ws(basic_istream<_CharT, _Traits>& __is);
1443.306 +
1443.307 +//----------------------------------------------------------------------
1443.308 +// Class iostream.
1443.309 +
1443.310 +template <class _CharT, class _Traits>
1443.311 +class basic_iostream
1443.312 +  : public basic_istream<_CharT, _Traits>,
1443.313 +    public basic_ostream<_CharT, _Traits>
1443.314 +{
1443.315 +public:
1443.316 +  typedef basic_ios<_CharT, _Traits> _Basic_ios;
1443.317 +
1443.318 +  _STLP_DECLSPEC explicit basic_iostream(basic_streambuf<_CharT, _Traits>* __buf);
1443.319 +  _STLP_DECLSPEC virtual ~basic_iostream();
1443.320 +};
1443.321 +
1443.322 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1443.323 +_STLP_EXPORT_TEMPLATE_CLASS basic_iostream<char, char_traits<char> >;
1443.324 +#  if ! defined (_STLP_NO_WCHAR_T)
1443.325 +_STLP_EXPORT_TEMPLATE_CLASS basic_iostream<wchar_t, char_traits<wchar_t> >;
1443.326 +#  endif
1443.327 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1443.328 +
1443.329 +template <class _CharT, class _Traits>
1443.330 +basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_istreambuf(basic_istream<_CharT, _Traits>& __is) 
1443.331 +{
1443.332 +  return __is.rdbuf();
1443.333 +}
1443.334 +
1443.335 +_STLP_END_NAMESPACE
1443.336 +
1443.337 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1443.338 +#  include <stl/_istream.c>
1443.339 +# endif
1443.340 +
1443.341 +#endif /* _STLP_INTERNAL_ISTREAM_H */
1443.342 +
1443.343 +// Local Variables:
1443.344 +// mode:C++
1443.345 +// End:
  1444.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1444.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_istreambuf_iterator.h	Wed Mar 31 12:27:01 2010 +0100
  1444.3 @@ -0,0 +1,169 @@
  1444.4 +/*
  1444.5 + * Copyright (c) 1999
  1444.6 + * Silicon Graphics Computer Systems, Inc.
  1444.7 + *
  1444.8 + * Copyright (c) 1999 
  1444.9 + * Boris Fomitchev
 1444.10 + *
 1444.11 + * This material is provided "as is", with absolutely no warranty expressed
 1444.12 + * or implied. Any use is at your own risk.
 1444.13 + *
 1444.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1444.15 + * without fee, provided the above notices are retained on all copies.
 1444.16 + * Permission to modify the code and to distribute modified code is granted,
 1444.17 + * provided the above notices are retained, and a notice that the code was
 1444.18 + * modified is included with the above copyright notice.
 1444.19 + *
 1444.20 + */ 
 1444.21 +// WARNING: This is an internal header file, included by other C++
 1444.22 +// standard library headers.  You should not attempt to use this header
 1444.23 +// file directly.
 1444.24 +
 1444.25 +
 1444.26 +#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1444.27 +#define _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1444.28 +
 1444.29 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1444.30 +# include <stl/_iterator_base.h>
 1444.31 +#endif
 1444.32 +
 1444.33 +#ifndef _STLP_INTERNAL_STREAMBUF
 1444.34 +# include <stl/_streambuf.h>
 1444.35 +#endif
 1444.36 +
 1444.37 +_STLP_BEGIN_NAMESPACE
 1444.38 +
 1444.39 +// defined in _istream.h
 1444.40 +template <class _CharT, class _Traits>
 1444.41 +extern basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_istreambuf(basic_istream<_CharT, _Traits>& ) ;
 1444.42 +
 1444.43 +// We do not read any characters until operator* is called. operator* calls sgetc 
 1444.44 +// unless the iterator is unchanged from the last call in which case a cached value is
 1444.45 +// used. Calls to operator++ use sbumpc.
 1444.46 +
 1444.47 +template<class _CharT, class _Traits>
 1444.48 +class istreambuf_iterator
 1444.49 +{
 1444.50 +public:
 1444.51 +  typedef _CharT                           char_type;
 1444.52 +  typedef _Traits                          traits_type;
 1444.53 +  typedef typename _Traits::int_type       int_type;
 1444.54 +  typedef basic_streambuf<_CharT, _Traits> streambuf_type;
 1444.55 +  typedef basic_istream<_CharT, _Traits>   istream_type;
 1444.56 +
 1444.57 +  typedef input_iterator_tag               iterator_category;
 1444.58 +  typedef _CharT                           value_type;
 1444.59 +  typedef typename _Traits::off_type       difference_type;
 1444.60 +  typedef const _CharT*                    pointer;
 1444.61 +  typedef const _CharT&                    reference;
 1444.62 +
 1444.63 +public:
 1444.64 +  istreambuf_iterator(streambuf_type* __p = 0) { this->_M_init(__p); }
 1444.65 +  //  istreambuf_iterator(basic_istream<_CharT, _Traits>& __is) { this->_M_init(_M_get_istreambuf(__is)); }
 1444.66 +  inline istreambuf_iterator(basic_istream<_CharT, _Traits>& __is);
 1444.67 +
 1444.68 +  char_type operator*() const { this->_M_getc(); return _M_c; }
 1444.69 +  istreambuf_iterator<_CharT, _Traits>& operator++() { this->_M_bumpc(); return *this; }
 1444.70 +  istreambuf_iterator<_CharT, _Traits>  operator++(int);
 1444.71 +
 1444.72 +  bool equal(const istreambuf_iterator<_CharT, _Traits>& __i) const {
 1444.73 +    if (this->_M_buf)
 1444.74 +      this->_M_getc();
 1444.75 +    if (__i._M_buf)
 1444.76 +      __i._M_getc(); 
 1444.77 +    return this->_M_eof == __i._M_eof;
 1444.78 +  }
 1444.79 +
 1444.80 +private:
 1444.81 +  void _M_init(streambuf_type* __p) {
 1444.82 +    _M_buf = __p;
 1444.83 +    _M_eof = !__p;
 1444.84 +    //    _M_is_initialized = _M_eof;
 1444.85 +    _M_have_c = false;
 1444.86 +  }
 1444.87 +
 1444.88 +  void _M_getc() const {
 1444.89 +    if (_M_have_c)
 1444.90 +      return;
 1444.91 +    int_type __c = _M_buf->sgetc();
 1444.92 +# if !defined (_STLP_NEED_MUTABLE) /* && ! defined (__SUNPRO_CC) */
 1444.93 +    _M_c = traits_type::to_char_type(__c);
 1444.94 +    _M_eof = traits_type::eq_int_type(__c, traits_type::eof());
 1444.95 +    _M_have_c = true;
 1444.96 +# else
 1444.97 +    typedef istreambuf_iterator<_CharT,_Traits> _Self;
 1444.98 +    _Self* __that = __CONST_CAST(_Self*, this);
 1444.99 +    __that->_M_c = __STATIC_CAST(_CharT, traits_type::to_char_type(__c));
1444.100 +    __that->_M_eof = traits_type::eq_int_type(__c, traits_type::eof());
1444.101 +    __that->_M_have_c = true;
1444.102 +# endif
1444.103 +  }
1444.104 +
1444.105 +  int_type _M_bumpc() {
1444.106 +  	int_type ch = _M_buf->sbumpc();
1444.107 +     _M_have_c = false;
1444.108 +	 return ch;
1444.109 +  }
1444.110 +
1444.111 +private:
1444.112 +  streambuf_type* _M_buf;
1444.113 +  mutable _CharT _M_c;
1444.114 +  mutable unsigned char _M_eof;
1444.115 +  mutable unsigned char _M_have_c;
1444.116 +};
1444.117 +
1444.118 +template<class _CharT, class _Traits>
1444.119 +inline istreambuf_iterator<_CharT, _Traits>::istreambuf_iterator(basic_istream<_CharT, _Traits>& __is) 
1444.120 +{ this->_M_init(_M_get_istreambuf(__is)); }
1444.121 +
1444.122 +template<class _CharT, class _Traits>
1444.123 +inline bool _STLP_CALL operator==(const istreambuf_iterator<_CharT, _Traits>& __x,
1444.124 +                                  const istreambuf_iterator<_CharT, _Traits>& __y) {
1444.125 +  return __x.equal(__y);
1444.126 +}
1444.127 +
1444.128 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1444.129 +
1444.130 +template<class _CharT, class _Traits>
1444.131 +inline bool _STLP_CALL operator!=(const istreambuf_iterator<_CharT, _Traits>& __x,
1444.132 +                                  const istreambuf_iterator<_CharT, _Traits>& __y) {
1444.133 +  return !__x.equal(__y);
1444.134 +}
1444.135 +
1444.136 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1444.137 +
1444.138 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1444.139 +_STLP_EXPORT_TEMPLATE_CLASS istreambuf_iterator<char, char_traits<char> >;
1444.140 +#  if defined (INSTANTIATE_WIDE_STREAMS)
1444.141 +_STLP_EXPORT_TEMPLATE_CLASS istreambuf_iterator<wchar_t, char_traits<wchar_t> >;
1444.142 +#  endif
1444.143 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1444.144 +
1444.145 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1444.146 +template <class _CharT, class _Traits>
1444.147 +inline input_iterator_tag _STLP_CALL iterator_category(const istreambuf_iterator<_CharT, _Traits>&) { return input_iterator_tag(); }
1444.148 +template <class _CharT, class _Traits>
1444.149 +inline streamoff* _STLP_CALL 
1444.150 +distance_type(const istreambuf_iterator<_CharT, _Traits>&) { return (streamoff*)0; }
1444.151 +template <class _CharT, class _Traits>
1444.152 +inline _CharT* _STLP_CALL value_type(const istreambuf_iterator<_CharT, _Traits>&) { return (_CharT*)0; }
1444.153 +# endif
1444.154 +
1444.155 +template <class _CharT, class _Traits>
1444.156 +istreambuf_iterator<_CharT, _Traits>
1444.157 +istreambuf_iterator<_CharT, _Traits>::operator++(int) {
1444.158 +  istreambuf_iterator<_CharT, _Traits> __tmp = *this;
1444.159 +  __tmp._M_c = this->_M_bumpc();
1444.160 +  __tmp._M_have_c = true;
1444.161 +  this->_M_have_c = false;
1444.162 +  return __tmp;
1444.163 +}
1444.164 +
1444.165 +_STLP_END_NAMESPACE
1444.166 +
1444.167 +#endif /* _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H */
1444.168 +
1444.169 +// Local Variables:
1444.170 +// mode:C++
1444.171 +// End:
1444.172 +
  1445.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1445.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_iterator_base.h	Wed Mar 31 12:27:01 2010 +0100
  1445.3 @@ -0,0 +1,463 @@
  1445.4 +/*
  1445.5 + *
  1445.6 + * Copyright (c) 1994
  1445.7 + * Hewlett-Packard Company
  1445.8 + *
  1445.9 + * Copyright (c) 1996-1998
 1445.10 + * Silicon Graphics Computer Systems, Inc.
 1445.11 + *
 1445.12 + * Copyright (c) 1997
 1445.13 + * Moscow Center for SPARC Technology
 1445.14 + *
 1445.15 + * Copyright (c) 1999 
 1445.16 + * Boris Fomitchev
 1445.17 + *
 1445.18 + * This material is provided "as is", with absolutely no warranty expressed
 1445.19 + * or implied. Any use is at your own risk.
 1445.20 + *
 1445.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1445.22 + * without fee, provided the above notices are retained on all copies.
 1445.23 + * Permission to modify the code and to distribute modified code is granted,
 1445.24 + * provided the above notices are retained, and a notice that the code was
 1445.25 + * modified is included with the above copyright notice.
 1445.26 + *
 1445.27 + */
 1445.28 +
 1445.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1445.30 + *   You should not attempt to use it directly.
 1445.31 + */
 1445.32 +
 1445.33 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1445.34 +#define _STLP_INTERNAL_ITERATOR_BASE_H
 1445.35 +
 1445.36 +#ifndef _STLP_CSTDDEF
 1445.37 +# include <cstddef>
 1445.38 +#endif
 1445.39 +
 1445.40 +# if defined  (_STLP_IMPORT_VENDOR_CSTD) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
 1445.41 +_STLP_BEGIN_NAMESPACE  
 1445.42 +using namespace _STLP_VENDOR_CSTD;
 1445.43 +_STLP_END_NAMESPACE
 1445.44 +#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1445.45 +
 1445.46 +#ifndef __TYPE_TRAITS_H
 1445.47 +# include <stl/type_traits.h>
 1445.48 +#endif
 1445.49 +
 1445.50 +_STLP_BEGIN_NAMESPACE
 1445.51 +
 1445.52 +struct input_iterator_tag {};
 1445.53 +struct output_iterator_tag {};
 1445.54 +struct forward_iterator_tag : public input_iterator_tag {};
 1445.55 +struct bidirectional_iterator_tag : public forward_iterator_tag {};
 1445.56 +struct random_access_iterator_tag : public bidirectional_iterator_tag {};
 1445.57 +
 1445.58 +
 1445.59 +template <class _Category, class _Tp, __DFL_TMPL_PARAM(_Distance,ptrdiff_t),
 1445.60 +          __DFL_TMPL_PARAM(_Pointer,_Tp*), __DFL_TMPL_PARAM(_Reference,_Tp&) >
 1445.61 +struct iterator {
 1445.62 +  typedef _Category  iterator_category;
 1445.63 +  typedef _Tp        value_type;
 1445.64 +  typedef _Distance  difference_type;
 1445.65 +  typedef _Pointer   pointer;
 1445.66 +  typedef _Reference reference;
 1445.67 +};
 1445.68 +_STLP_TEMPLATE_NULL
 1445.69 +struct iterator<output_iterator_tag, void, void, void, void> {
 1445.70 +  typedef output_iterator_tag  iterator_category;
 1445.71 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1445.72 +  typedef void                value_type;
 1445.73 +  typedef void                difference_type;
 1445.74 +  typedef void                pointer;
 1445.75 +  typedef void                reference;
 1445.76 +#endif
 1445.77 +};
 1445.78 +
 1445.79 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1445.80 +#  define _STLP_ITERATOR_CATEGORY(_It, _Tp) iterator_category(_It)
 1445.81 +#  define _STLP_DISTANCE_TYPE(_It, _Tp)     distance_type(_It)
 1445.82 +#  define _STLP_VALUE_TYPE(_It, _Tp)        value_type(_It)
 1445.83 +# else
 1445.84 +#  ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1445.85 +#   define _STLP_VALUE_TYPE(_It, _Tp)        (typename iterator_traits< _Tp >::value_type*)0
 1445.86 +#   define _STLP_DISTANCE_TYPE(_It, _Tp)     (typename iterator_traits< _Tp >::difference_type*)0
 1445.87 +#   if defined (__BORLANDC__) || defined (__SUNPRO_CC) || ( defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || ( defined (__sgi) && defined (_COMPILER_VERSION)) || defined (__DMC__)
 1445.88 +#    define _STLP_ITERATOR_CATEGORY(_It, _Tp) iterator_traits< _Tp >::iterator_category()
 1445.89 +#   else
 1445.90 +#    define _STLP_ITERATOR_CATEGORY(_It, _Tp) typename iterator_traits< _Tp >::iterator_category()
 1445.91 +#   endif
 1445.92 +#  else
 1445.93 +#   define _STLP_ITERATOR_CATEGORY(_It, _Tp) __iterator_category(_It, _IsPtrType<_Tp>::_Ret())
 1445.94 +#   define _STLP_DISTANCE_TYPE(_It, _Tp)     (ptrdiff_t*)0
 1445.95 +#   define _STLP_VALUE_TYPE(_It, _Tp)        __value_type(_It, _IsPtrType<_Tp>::_Ret() )
 1445.96 +#  endif
 1445.97 +# endif
 1445.98 +
 1445.99 +template <class _Iterator>
1445.100 +struct iterator_traits {
1445.101 +  typedef typename _Iterator::iterator_category iterator_category;
1445.102 +  typedef typename _Iterator::value_type        value_type;
1445.103 +  typedef typename _Iterator::difference_type   difference_type;
1445.104 +  typedef typename _Iterator::pointer           pointer;
1445.105 +  typedef typename _Iterator::reference         reference;
1445.106 +};
1445.107 +
1445.108 +
1445.109 +# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && ! defined (__SUNPRO_CC)
1445.110 +#  define _STLP_DIFFERENCE_TYPE(_Iterator) typename iterator_traits<_Iterator>::difference_type
1445.111 +# else
1445.112 +#  define _STLP_DIFFERENCE_TYPE(_Iterator) ptrdiff_t
1445.113 +# endif
1445.114 +
1445.115 +# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1445.116 +
1445.117 +// fbp : this order keeps gcc happy
1445.118 +template <class _Tp>
1445.119 +struct iterator_traits<const _Tp*> {
1445.120 +  typedef random_access_iterator_tag iterator_category;
1445.121 +  typedef _Tp                         value_type;
1445.122 +  typedef ptrdiff_t                   difference_type;
1445.123 +  typedef const _Tp*                  pointer;
1445.124 +  typedef const _Tp&                  reference;
1445.125 +};
1445.126 +
1445.127 +template <class _Tp>
1445.128 +struct iterator_traits<_Tp*> {
1445.129 +  typedef random_access_iterator_tag iterator_category;
1445.130 +  typedef _Tp                         value_type;
1445.131 +  typedef ptrdiff_t                   difference_type;
1445.132 +  typedef _Tp*                        pointer;
1445.133 +  typedef _Tp&                        reference;
1445.134 +};
1445.135 +
1445.136 +#  if defined (__BORLANDC__)
1445.137 +template <class _Tp>
1445.138 +struct iterator_traits<_Tp* const> {
1445.139 +  typedef random_access_iterator_tag iterator_category;
1445.140 +  typedef _Tp                         value_type;
1445.141 +  typedef ptrdiff_t                   difference_type;
1445.142 +  typedef const _Tp*                  pointer;
1445.143 +  typedef const _Tp&                  reference;
1445.144 +};
1445.145 +#  endif
1445.146 +
1445.147 +# endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1445.148 +
1445.149 +
1445.150 +# if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) \
1445.151 +  || (defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) && ! defined (_STLP_NO_ARROW_OPERATOR))
1445.152 +#  define _STLP_POINTERS_SPECIALIZE( _TpP )
1445.153 +#  define _STLP_DEFINE_ARROW_OPERATOR  pointer operator->() const { return &(operator*()); }
1445.154 +# else 
1445.155 +#  include <stl/_ptrs_specialize.h>
1445.156 +# endif
1445.157 +
1445.158 +# ifndef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1445.159 +// The overloaded functions iterator_category, distance_type, and
1445.160 +// value_type are not part of the C++ standard.  (They have been
1445.161 +// replaced by struct iterator_traits.)  They are included for
1445.162 +// backward compatibility with the HP STL.
1445.163 +// We introduce internal names for these functions.
1445.164 +
1445.165 +#  ifdef  _STLP_CLASS_PARTIAL_SPECIALIZATION
1445.166 +
1445.167 +template <class _Iter>
1445.168 +inline typename iterator_traits<_Iter>::iterator_category __iterator_category(const _Iter&) {
1445.169 +  typedef typename iterator_traits<_Iter>::iterator_category _Category;
1445.170 +  return _Category();
1445.171 +}
1445.172 +
1445.173 +template <class _Iter>
1445.174 +inline typename iterator_traits<_Iter>::difference_type* __distance_type(const _Iter&) {
1445.175 +  typedef typename iterator_traits<_Iter>::difference_type _diff_type;
1445.176 +  return __STATIC_CAST(_diff_type*,0);
1445.177 +}
1445.178 +
1445.179 +template <class _Iter>
1445.180 +inline typename iterator_traits<_Iter>::value_type* __value_type(const _Iter&) {
1445.181 +  typedef typename iterator_traits<_Iter>::value_type _value_type;
1445.182 +  return __STATIC_CAST(_value_type*,0);
1445.183 +}
1445.184 +
1445.185 +# else
1445.186 +
1445.187 +template <class _Iter>
1445.188 +inline random_access_iterator_tag 
1445.189 +__iterator_category(const _Iter&, const __true_type&) {
1445.190 +  return random_access_iterator_tag();
1445.191 +}
1445.192 +
1445.193 +template <class _Iter>
1445.194 +inline _STLP_TYPENAME_ON_RETURN_TYPE iterator_traits<_Iter>::iterator_category
1445.195 +__iterator_category(const _Iter&, const __false_type&) {
1445.196 +  typedef typename iterator_traits<_Iter>::iterator_category _Category;
1445.197 +  return _Category();
1445.198 +}
1445.199 +
1445.200 +
1445.201 +template <class _Iter>
1445.202 +inline ptrdiff_t* _STLP_CALL __distance_type(const _Iter&) { return (ptrdiff_t*)(0); }
1445.203 +
1445.204 +template <class _Iter>
1445.205 +inline _STLP_TYPENAME_ON_RETURN_TYPE iterator_traits<_Iter>::value_type* 
1445.206 +__value_type(const _Iter&, const __false_type&) {
1445.207 +  typedef typename iterator_traits<_Iter>::value_type _value_type;
1445.208 +  return __STATIC_CAST(_value_type*,0);
1445.209 +}
1445.210 +
1445.211 +template <class _Tp>
1445.212 +inline _Tp*  
1445.213 +__value_type(const _Tp*, const __true_type&) {
1445.214 +  return __STATIC_CAST(_Tp*, 0);
1445.215 +}
1445.216 +
1445.217 +# endif
1445.218 +
1445.219 +#else /* old queries */
1445.220 +template <class _Category, class _Tp, class _Distance, class _Pointer, class _Reference>
1445.221 +inline _Category _STLP_CALL iterator_category(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return _Category(); }
1445.222 +template <class _Category, class _Tp, class _Distance, class _Pointer, class _Reference>
1445.223 +inline _Tp* _STLP_CALL value_type(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return (_Tp*)(0); }
1445.224 +template <class _Category, class _Tp, class _Distance, class _Pointer, class _Reference>
1445.225 +inline _Distance* _STLP_CALL distance_type(const iterator<_Category,_Tp,_Distance,_Pointer,_Reference>&) { return (_Distance*)(0); }
1445.226 +template <class _Tp>
1445.227 +inline random_access_iterator_tag _STLP_CALL iterator_category(const _Tp*) { return random_access_iterator_tag(); }
1445.228 +template <class _Tp>
1445.229 +inline _Tp* _STLP_CALL value_type(const _Tp*) { return (_Tp*)(0); }
1445.230 +template <class _Tp>
1445.231 +inline ptrdiff_t* _STLP_CALL distance_type(const _Tp*) { return (ptrdiff_t*)(0); }
1445.232 +#endif /* _STLP_USE_OLD_HP_ITERATOR_QUERIES */
1445.233 +
1445.234 +# if ! defined (_STLP_NO_ANACHRONISMS)
1445.235 +// The base classes input_iterator, output_iterator, forward_iterator,
1445.236 +// bidirectional_iterator, and random_access_iterator are not part of
1445.237 +// the C++ standard.  (They have been replaced by struct iterator.)
1445.238 +// They are included for backward compatibility with the HP STL.
1445.239 +template <class _Tp, class _Distance> struct input_iterator : 
1445.240 +  public iterator <input_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1445.241 +struct output_iterator : public iterator <output_iterator_tag, void, void, void, void> {};
1445.242 +template <class _Tp, class _Distance> struct forward_iterator :
1445.243 +  public iterator<forward_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1445.244 +template <class _Tp, class _Distance> struct bidirectional_iterator :
1445.245 +  public iterator<bidirectional_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1445.246 +template <class _Tp, class _Distance> struct random_access_iterator :
1445.247 +  public iterator<random_access_iterator_tag, _Tp, _Distance, _Tp*, _Tp&> {};
1445.248 +
1445.249 +# if defined (_STLP_BASE_MATCH_BUG) && defined (_STLP_USE_OLD_HP_ITERATOR_QUERIES)
1445.250 +template <class _Tp, class _Distance> 
1445.251 +inline input_iterator_tag _STLP_CALL 
1445.252 +iterator_category(const input_iterator<_Tp, _Distance>&) { return input_iterator_tag(); }
1445.253 +inline output_iterator_tag _STLP_CALL
1445.254 +iterator_category(const output_iterator&) { return output_iterator_tag(); }
1445.255 +template <class _Tp, class _Distance> 
1445.256 +inline forward_iterator_tag _STLP_CALL
1445.257 +iterator_category(const forward_iterator<_Tp, _Distance>&) { return forward_iterator_tag(); }
1445.258 +template <class _Tp, class _Distance> 
1445.259 +inline bidirectional_iterator_tag _STLP_CALL 
1445.260 +iterator_category(const bidirectional_iterator<_Tp, _Distance>&) { return bidirectional_iterator_tag(); }
1445.261 +template <class _Tp, class _Distance> 
1445.262 +inline random_access_iterator_tag _STLP_CALL
1445.263 +iterator_category(const random_access_iterator<_Tp, _Distance>&) { return random_access_iterator_tag(); }
1445.264 +template <class _Tp, class _Distance> 
1445.265 +inline _Tp*  _STLP_CALL value_type(const input_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1445.266 +template <class _Tp, class _Distance> 
1445.267 +inline _Tp* _STLP_CALL value_type(const forward_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1445.268 +template <class _Tp, class _Distance> 
1445.269 +inline _Tp* _STLP_CALL value_type(const bidirectional_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1445.270 +template <class _Tp, class _Distance> 
1445.271 +inline _Tp* _STLP_CALL value_type(const random_access_iterator<_Tp, _Distance>&) { return (_Tp*)(0); }
1445.272 +template <class _Tp, class _Distance> 
1445.273 +inline _Distance* _STLP_CALL distance_type(const input_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }
1445.274 +template <class _Tp, class _Distance> 
1445.275 +inline _Distance* _STLP_CALL distance_type(const forward_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }
1445.276 +template <class _Tp, class _Distance> 
1445.277 +inline _Distance* _STLP_CALL distance_type(const bidirectional_iterator<_Tp, _Distance>&) { return (_Distance*)(0);}
1445.278 +template <class _Tp, class _Distance> 
1445.279 +inline _Distance* _STLP_CALL distance_type(const random_access_iterator<_Tp, _Distance>&) { return (_Distance*)(0); }
1445.280 +# endif /* BASE_MATCH */
1445.281 +
1445.282 +#endif /* _STLP_NO_ANACHRONISMS */
1445.283 +
1445.284 +template <class _InputIterator, class _Distance>
1445.285 +inline void _STLP_CALL __distance(const _InputIterator& __first, const _InputIterator& __last,
1445.286 +				  _Distance& __n, const input_iterator_tag &) {
1445.287 +  _InputIterator __it(__first);
1445.288 +  while (__it != __last) { ++__it; ++__n; }
1445.289 +}
1445.290 +
1445.291 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 
1445.292 +template <class _ForwardIterator, class _Distance>
1445.293 +inline void _STLP_CALL __distance(const _ForwardIterator& __first, const _ForwardIterator& __last,
1445.294 +				  _Distance& __n, const forward_iterator_tag &) {
1445.295 +  _ForwardIterator __it(__first);
1445.296 +  while (__it != __last) { ++__first; ++__n; }
1445.297 +}
1445.298 +
1445.299 +template <class _BidirectionalIterator, class _Distance>
1445.300 +_STLP_INLINE_LOOP void _STLP_CALL __distance(const _BidirectionalIterator& __first, 
1445.301 +					     const _BidirectionalIterator& __last,
1445.302 +					     _Distance& __n, const bidirectional_iterator_tag &) {
1445.303 +  _BidirectionalIterator __it(__first);
1445.304 +  while (__it != __last) { ++__it; ++__n; }
1445.305 +}
1445.306 +# endif
1445.307 +
1445.308 +template <class _RandomAccessIterator, class _Distance>
1445.309 +inline void _STLP_CALL __distance(const _RandomAccessIterator& __first, 
1445.310 +				  const _RandomAccessIterator& __last, 
1445.311 +				  _Distance& __n, const random_access_iterator_tag &) {
1445.312 +  __n += __last - __first;
1445.313 +}
1445.314 +
1445.315 +#ifndef _STLP_NO_ANACHRONISMS 
1445.316 +template <class _InputIterator, class _Distance>
1445.317 +inline void _STLP_CALL distance(const _InputIterator& __first, 
1445.318 +				const _InputIterator& __last, _Distance& __n) {
1445.319 +  __distance(__first, __last, __n, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1445.320 +}
1445.321 +#endif
1445.322 +
1445.323 +template <class _InputIterator>
1445.324 +inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL
1445.325 +__distance(const _InputIterator& __first, const _InputIterator& __last, const input_iterator_tag &) {
1445.326 +  _STLP_DIFFERENCE_TYPE(_InputIterator) __n = 0;
1445.327 +  _InputIterator __it(__first);  
1445.328 +  while (__it != __last) {
1445.329 +    ++__it; ++__n;
1445.330 +  }
1445.331 +  return __n;
1445.332 +}
1445.333 +
1445.334 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG) 
1445.335 +template <class _ForwardIterator>
1445.336 +inline _STLP_DIFFERENCE_TYPE(_ForwardIterator) _STLP_CALL 
1445.337 +__distance(const _ForwardIterator& __first, const _ForwardIterator& __last,
1445.338 +           const forward_iterator_tag &)
1445.339 +{
1445.340 +  _STLP_DIFFERENCE_TYPE(_ForwardIterator) __n = 0;
1445.341 +  _ForwardIterator __it(__first);
1445.342 +  while (__it != __last) {
1445.343 +    ++__it; ++__n;
1445.344 +  }
1445.345 +  return __n;
1445.346 +}
1445.347 +
1445.348 +template <class _BidirectionalIterator>
1445.349 +_STLP_INLINE_LOOP _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) _STLP_CALL 
1445.350 +__distance(const _BidirectionalIterator& __first, 
1445.351 +           const _BidirectionalIterator& __last,
1445.352 +           const bidirectional_iterator_tag &) {
1445.353 +  _STLP_DIFFERENCE_TYPE(_BidirectionalIterator) __n = 0;
1445.354 +  _BidirectionalIterator __it(__first);
1445.355 +  while (__it != __last) {
1445.356 +    ++__it; ++__n;
1445.357 +  }
1445.358 +  return __n;
1445.359 +}
1445.360 +# endif
1445.361 +
1445.362 +template <class _RandomAccessIterator>
1445.363 +inline _STLP_DIFFERENCE_TYPE(_RandomAccessIterator) _STLP_CALL
1445.364 +__distance(const _RandomAccessIterator& __first, const _RandomAccessIterator& __last,
1445.365 +           const random_access_iterator_tag &) {
1445.366 +  return __last - __first;
1445.367 +}
1445.368 +
1445.369 +template <class _InputIterator>
1445.370 +inline _STLP_DIFFERENCE_TYPE(_InputIterator) _STLP_CALL
1445.371 +distance(const _InputIterator& __first, const _InputIterator& __last) {
1445.372 +  return __distance(__first, __last, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));  
1445.373 +}
1445.374 +
1445.375 +
1445.376 +// fbp: those are being used for iterator/const_iterator definitions everywhere
1445.377 +template <class _Tp>
1445.378 +struct _Nonconst_traits;
1445.379 +
1445.380 +template <class _Tp>
1445.381 +struct _Const_traits {
1445.382 +  typedef _Tp value_type;
1445.383 +  typedef const _Tp&  reference;
1445.384 +  typedef const _Tp*  pointer;
1445.385 +  typedef _Nonconst_traits<_Tp> _Non_const_traits;
1445.386 +};
1445.387 +
1445.388 +template <class _Tp>
1445.389 +struct _Nonconst_traits {
1445.390 +  typedef _Tp value_type;
1445.391 +  typedef _Tp& reference;
1445.392 +  typedef _Tp* pointer;
1445.393 +  typedef _Nonconst_traits<_Tp> _Non_const_traits;
1445.394 +};
1445.395 +
1445.396 +#  if defined (_STLP_BASE_TYPEDEF_BUG)
1445.397 +// this workaround is needed for SunPro 4.0.1
1445.398 +template <class _Traits>
1445.399 +struct __cnst_traits_aux : private _Traits
1445.400 +{
1445.401 +  typedef typename _Traits::value_type value_type;
1445.402 +};
1445.403 +#  define __TRAITS_VALUE_TYPE(_Traits) __cnst_traits_aux<_Traits>::value_type
1445.404 +#  else
1445.405 +#  define __TRAITS_VALUE_TYPE(_Traits) _Traits::value_type
1445.406 +#  endif
1445.407 +
1445.408 +# if defined (_STLP_MSVC)
1445.409 +// MSVC specific
1445.410 +template <class _InputIterator, class _Dist>
1445.411 +inline void  _STLP_CALL _Distance(_InputIterator __first, 
1445.412 +		      _InputIterator __last, _Dist& __n) {
1445.413 +  __distance(__first, __last, __n, _STLP_ITERATOR_CATEGORY(__first, _InputIterator));
1445.414 +}
1445.415 +# endif
1445.416 +
1445.417 +template <class _InputIter, class _Distance>
1445.418 +_STLP_INLINE_LOOP void  _STLP_CALL __advance(_InputIter& __i, _Distance __n, const input_iterator_tag &) {
1445.419 +  while (__n--) ++__i;
1445.420 +}
1445.421 +
1445.422 +// fbp : added output iterator tag variant
1445.423 +template <class _InputIter, class _Distance>
1445.424 +_STLP_INLINE_LOOP void  _STLP_CALL __advance(_InputIter& __i, _Distance __n, const output_iterator_tag &) {
1445.425 +  while (__n--) ++__i;
1445.426 +}
1445.427 +
1445.428 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
1445.429 +template <class _ForwardIterator, class _Distance>
1445.430 +_STLP_INLINE_LOOP void _STLP_CALL __advance(_ForwardIterator& i, _Distance n, const forward_iterator_tag &) {
1445.431 +    while (n--) ++i;
1445.432 +}
1445.433 +# endif
1445.434 +
1445.435 +template <class _BidirectionalIterator, class _Distance>
1445.436 +_STLP_INLINE_LOOP void _STLP_CALL __advance(_BidirectionalIterator& __i, _Distance __n, 
1445.437 +                      const bidirectional_iterator_tag &) {
1445.438 +  if (__n > 0)
1445.439 +    while (__n--) ++__i;
1445.440 +  else
1445.441 +    while (__n++) --__i;
1445.442 +}
1445.443 +
1445.444 +template <class _RandomAccessIterator, class _Distance>
1445.445 +inline void _STLP_CALL __advance(_RandomAccessIterator& __i, _Distance __n, 
1445.446 +                      const random_access_iterator_tag &) {
1445.447 +  __i += __n;
1445.448 +}
1445.449 +
1445.450 +template <class _InputIterator, class _Distance>
1445.451 +inline void _STLP_CALL advance(_InputIterator& __i, _Distance __n) {
1445.452 +  __advance(__i, __n, _STLP_ITERATOR_CATEGORY(__i, _InputIterator));
1445.453 +}
1445.454 +
1445.455 +_STLP_END_NAMESPACE
1445.456 +
1445.457 +# if defined (_STLP_DEBUG) && ! defined (_STLP_DEBUG_H)
1445.458 +#  include <stl/debug/_debug.h>
1445.459 +# endif
1445.460 +
1445.461 +#endif /* _STLP_INTERNAL_ITERATOR_BASE_H */
1445.462 +
1445.463 +
1445.464 +// Local Variables:
1445.465 +// mode:C++
1445.466 +// End:
  1446.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1446.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_iterator_old.h	Wed Mar 31 12:27:01 2010 +0100
  1446.3 @@ -0,0 +1,351 @@
  1446.4 +/*
  1446.5 + *
  1446.6 + * Copyright (c) 1994
  1446.7 + * Hewlett-Packard Company
  1446.8 + *
  1446.9 + * Copyright (c) 1996-1998
 1446.10 + * Silicon Graphics Computer Systems, Inc.
 1446.11 + *
 1446.12 + * Copyright (c) 1997
 1446.13 + * Moscow Center for SPARC Technology
 1446.14 + *
 1446.15 + * Copyright (c) 1999 
 1446.16 + * Boris Fomitchev
 1446.17 + *
 1446.18 + * This material is provided "as is", with absolutely no warranty expressed
 1446.19 + * or implied. Any use is at your own risk.
 1446.20 + *
 1446.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1446.22 + * without fee, provided the above notices are retained on all copies.
 1446.23 + * Permission to modify the code and to distribute modified code is granted,
 1446.24 + * provided the above notices are retained, and a notice that the code was
 1446.25 + * modified is included with the above copyright notice.
 1446.26 + *
 1446.27 + */
 1446.28 +
 1446.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1446.30 + *   You should not attempt to use it directly.
 1446.31 + */
 1446.32 +
 1446.33 +#ifndef _STLP_INTERNAL_ITERATOR_OLD_H
 1446.34 +#define _STLP_INTERNAL_ITERATOR_OLD_H
 1446.35 +
 1446.36 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1446.37 +# include <stl/_iterator_base.h>
 1446.38 +#endif
 1446.39 +
 1446.40 +_STLP_BEGIN_NAMESPACE
 1446.41 +
 1446.42 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1446.43 +
 1446.44 +template <class _Container>
 1446.45 +inline output_iterator_tag _STLP_CALL
 1446.46 +iterator_category(const back_insert_iterator<_Container>&) { return output_iterator_tag(); }
 1446.47 +template <class _Container>
 1446.48 +inline output_iterator_tag _STLP_CALL
 1446.49 +iterator_category(const front_insert_iterator<_Container>&) { return output_iterator_tag(); }
 1446.50 +template <class _Container>
 1446.51 +inline output_iterator_tag _STLP_CALL
 1446.52 +iterator_category(const insert_iterator<_Container>&) { return output_iterator_tag(); }
 1446.53 +
 1446.54 +# endif
 1446.55 +
 1446.56 +# if defined (_STLP_MSVC50_COMPATIBILITY)
 1446.57 +# define __Reference _Reference, class _Pointer
 1446.58 +# define Reference__ _Reference, _Pointer
 1446.59 +template <class _BidirectionalIterator, class _Tp, 
 1446.60 +    __DFL_TMPL_PARAM(_Reference, _Tp& ),
 1446.61 +    __DFL_TMPL_PARAM(_Pointer, _Tp*),
 1446.62 +    __DFL_TYPE_PARAM(_Distance, ptrdiff_t)> 
 1446.63 +# else
 1446.64 +# define __Reference _Reference
 1446.65 +# define Reference__ _Reference
 1446.66 +template <class _BidirectionalIterator, class _Tp, __DFL_TMPL_PARAM(_Reference, _Tp& ),
 1446.67 +    __DFL_TYPE_PARAM(_Distance, ptrdiff_t)> 
 1446.68 +# endif
 1446.69 +class reverse_bidirectional_iterator {
 1446.70 +  typedef reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, 
 1446.71 +                                         Reference__, _Distance> _Self;
 1446.72 +  //  friend inline bool operator== _STLP_NULL_TMPL_ARGS (const _Self& x, const _Self& y);
 1446.73 +protected:
 1446.74 +  _BidirectionalIterator current;
 1446.75 +public:
 1446.76 +  typedef bidirectional_iterator_tag iterator_category;
 1446.77 +  typedef _Tp                        value_type;
 1446.78 +  typedef _Distance                  difference_type;
 1446.79 +# if defined (_STLP_MSVC50_COMPATIBILITY)
 1446.80 +  typedef _Pointer                   pointer;
 1446.81 +# else
 1446.82 +  typedef _Tp*                       pointer;
 1446.83 +# endif
 1446.84 +  typedef _Reference                 reference;
 1446.85 +
 1446.86 +  reverse_bidirectional_iterator() {}
 1446.87 +  explicit reverse_bidirectional_iterator(_BidirectionalIterator __x)
 1446.88 +    : current(__x) {}
 1446.89 +  _BidirectionalIterator base() const { return current; }
 1446.90 +  _Reference operator*() const {
 1446.91 +    _BidirectionalIterator __tmp = current;
 1446.92 +    return *--__tmp;
 1446.93 +  }
 1446.94 +# if !(defined _STLP_NO_ARROW_OPERATOR)
 1446.95 +  _STLP_DEFINE_ARROW_OPERATOR
 1446.96 +# endif
 1446.97 +  _Self& operator++() {
 1446.98 +    --current;
 1446.99 +    return *this;
1446.100 +  }
1446.101 +  _Self operator++(int) {
1446.102 +    _Self __tmp = *this;
1446.103 +    --current;
1446.104 +    return __tmp;
1446.105 +  }
1446.106 +  _Self& operator--() {
1446.107 +    ++current;
1446.108 +    return *this;
1446.109 +  }
1446.110 +  _Self operator--(int) {
1446.111 +    _Self __tmp = *this;
1446.112 +    ++current;
1446.113 +    return __tmp;
1446.114 +  }
1446.115 +};
1446.116 +
1446.117 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1446.118 +template <class _BidirectionalIterator, class _Tp, class __Reference, 
1446.119 +          class _Distance>
1446.120 +inline bidirectional_iterator_tag _STLP_CALL
1446.121 +iterator_category(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&) 
1446.122 +{ return bidirectional_iterator_tag(); }
1446.123 +template <class _BidirectionalIterator, class _Tp, class __Reference, 
1446.124 +  class _Distance>
1446.125 +inline _Tp* _STLP_CALL
1446.126 +value_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&)
1446.127 +{ return (_Tp*) 0; }
1446.128 +template <class _BidirectionalIterator, class _Tp, class __Reference, 
1446.129 +          class _Distance>
1446.130 +inline _Distance* _STLP_CALL
1446.131 +distance_type(const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp, Reference__, _Distance>&)
1446.132 +{ return (_Distance*) 0; }
1446.133 +#endif
1446.134 +
1446.135 +template <class _BidirectionalIterator, class _Tp, class __Reference, 
1446.136 +          class _Distance>
1446.137 +inline bool  _STLP_CALL operator==(
1446.138 +    const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
1446.139 +                                               Reference__, _Distance>& __x,
1446.140 +    const reverse_bidirectional_iterator<_BidirectionalIterator, _Tp,
1446.141 +                                               Reference__, _Distance>& __y)
1446.142 +{
1446.143 +  return __x.base() == __y.base();
1446.144 +}
1446.145 +
1446.146 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1446.147 +
1446.148 +template <class _BiIter, class _Tp, class __Reference, class _Distance>
1446.149 +inline bool  _STLP_CALL operator!=(
1446.150 +    const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __x, 
1446.151 +    const reverse_bidirectional_iterator<_BiIter, _Tp, Reference__, _Distance>& __y)
1446.152 +{
1446.153 +  return !(__x == __y);
1446.154 +}
1446.155 +
1446.156 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1446.157 +
1446.158 +#if ! defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1446.159 +
1446.160 +// This is the old version of reverse_iterator, as found in the original
1446.161 +//  HP STL.  It does not use partial specialization.
1446.162 +
1446.163 +template <class _RandomAccessIterator, 
1446.164 +# if defined (__MSL__) && (__MSL__ >= 0x2405) \
1446.165 +	|| defined(__MRC__) || (defined(__SC__) && !defined(__DMC__))		//*ty 03/22/2001 - give the default to the secont param under MPW. 
1446.166 +												// I believe giving the default will cause any harm even though the 2nd type parameter 
1446.167 +												// still have to be provided for T* type iterators.
1446.168 +	__DFL_TMPL_PARAM(_Tp,iterator_traits<_RandomAccessIterator>::value_type),
1446.169 +# else
1446.170 +	class _Tp,
1446.171 +#endif
1446.172 + __DFL_TMPL_PARAM(_Reference,_Tp&),
1446.173 +# if defined (_STLP_MSVC50_COMPATIBILITY)
1446.174 +        __DFL_TMPL_PARAM(_Pointer, _Tp*),
1446.175 +# endif
1446.176 +        __DFL_TYPE_PARAM(_Distance,ptrdiff_t)> 
1446.177 +class reverse_iterator {
1446.178 +  typedef reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>
1446.179 +          _Self;
1446.180 +protected:
1446.181 +  _RandomAccessIterator __current;
1446.182 +public:
1446.183 +  typedef random_access_iterator_tag iterator_category;
1446.184 +  typedef _Tp                        value_type;
1446.185 +  typedef _Distance                  difference_type;
1446.186 +# if defined (_STLP_MSVC50_COMPATIBILITY)
1446.187 +  typedef _Pointer                   pointer;
1446.188 +# else
1446.189 +  typedef _Tp*                       pointer;
1446.190 +# endif
1446.191 +  typedef _Reference                 reference;
1446.192 +
1446.193 +  reverse_iterator() {}
1446.194 +  reverse_iterator(const _Self& __x) : __current(__x.base()) {}
1446.195 +  explicit reverse_iterator(_RandomAccessIterator __x) : __current(__x) {}
1446.196 +  _Self& operator=(const _Self& __x) {__current = __x.base(); return *this; }  
1446.197 +       
1446.198 +  _RandomAccessIterator base() const { return __current; }
1446.199 +  _Reference operator*() const { return *(__current - (difference_type)1); }
1446.200 +
1446.201 +# if !(defined _STLP_NO_ARROW_OPERATOR)
1446.202 +  _STLP_DEFINE_ARROW_OPERATOR
1446.203 +# endif
1446.204 +
1446.205 +  _Self& operator++() {
1446.206 +    --__current;
1446.207 +    return *this;
1446.208 +  }
1446.209 +  _Self operator++(int) {
1446.210 +    _Self __tmp = *this;
1446.211 +    --__current;
1446.212 +    return __tmp;
1446.213 +  }
1446.214 +  _Self& operator--() {
1446.215 +    ++__current;
1446.216 +    return *this;
1446.217 +  }
1446.218 +  _Self operator--(int) {
1446.219 +    _Self __tmp = *this;
1446.220 +    ++__current;
1446.221 +    return __tmp;
1446.222 +  }
1446.223 +  _Self operator+(_Distance __n) const {
1446.224 +    return _Self(__current - __n);
1446.225 +  }
1446.226 +  _Self& operator+=(_Distance __n) {
1446.227 +    __current -= __n;
1446.228 +    return *this;
1446.229 +  }
1446.230 +  _Self operator-(_Distance __n) const {
1446.231 +    return _Self(__current + __n);
1446.232 +  }
1446.233 +  _Self& operator-=(_Distance __n) {
1446.234 +    __current += __n;
1446.235 +    return *this;
1446.236 +  }
1446.237 +  _Reference operator[](_Distance __n) const { return *(*this + __n); }
1446.238 +};
1446.239 +
1446.240 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1446.241 +template <class _RandomAccessIterator, class _Tp, 
1446.242 +          class __Reference, class _Distance>
1446.243 +inline random_access_iterator_tag _STLP_CALL
1446.244 +iterator_category(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&)
1446.245 +{ return random_access_iterator_tag(); }
1446.246 +template <class _RandomAccessIterator, class _Tp,
1446.247 +  class __Reference, class _Distance>
1446.248 +inline _Tp*  _STLP_CALL value_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&)
1446.249 +{ return (_Tp*) 0; }
1446.250 +template <class _RandomAccessIterator, class _Tp,
1446.251 +          class __Reference, class _Distance>
1446.252 +inline _Distance*  _STLP_CALL
1446.253 +distance_type(const reverse_iterator<_RandomAccessIterator, _Tp, Reference__, _Distance>&)
1446.254 +{ return (_Distance*) 0; }
1446.255 +#endif
1446.256 +
1446.257 +template <class _RandomAccessIterator, class _Tp,
1446.258 +          class __Reference, class _Distance>
1446.259 +inline bool  _STLP_CALL
1446.260 +operator==(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.261 +                                  Reference__, _Distance>& __x, 
1446.262 +           const reverse_iterator<_RandomAccessIterator, _Tp,
1446.263 +                                  Reference__, _Distance>& __y)
1446.264 +{
1446.265 +  return __x.base() == __y.base();
1446.266 +}
1446.267 +
1446.268 +template <class _RandomAccessIterator, class _Tp,
1446.269 +          class __Reference, class _Distance>
1446.270 +inline bool _STLP_CALL 
1446.271 +operator<(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.272 +                                 Reference__, _Distance>& __x, 
1446.273 +          const reverse_iterator<_RandomAccessIterator, _Tp,
1446.274 +                                 Reference__, _Distance>& __y)
1446.275 +{
1446.276 +  return __y.base() < __x.base();
1446.277 +}
1446.278 +
1446.279 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1446.280 +
1446.281 +template <class _RandomAccessIterator, class _Tp,
1446.282 +          class __Reference, class _Distance>
1446.283 +inline bool _STLP_CALL 
1446.284 +operator!=(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.285 +                                  Reference__, _Distance>& __x, 
1446.286 +           const reverse_iterator<_RandomAccessIterator, _Tp,
1446.287 +                                  Reference__, _Distance>& __y) {
1446.288 +  return !(__x == __y);
1446.289 +}
1446.290 +
1446.291 +template <class _RandomAccessIterator, class _Tp,
1446.292 +          class __Reference, class _Distance>
1446.293 +inline bool _STLP_CALL 
1446.294 +operator>(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.295 +                                 Reference__, _Distance>& __x, 
1446.296 +          const reverse_iterator<_RandomAccessIterator, _Tp,
1446.297 +                                 Reference__, _Distance>& __y) {
1446.298 +  return __y < __x;
1446.299 +}
1446.300 +
1446.301 +template <class _RandomAccessIterator, class _Tp,
1446.302 +          class __Reference, class _Distance>
1446.303 +inline bool _STLP_CALL 
1446.304 +operator<=(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.305 +                                  Reference__, _Distance>& __x, 
1446.306 +           const reverse_iterator<_RandomAccessIterator, _Tp,
1446.307 +                                  Reference__, _Distance>& __y) {
1446.308 +  return !(__y < __x);
1446.309 +}
1446.310 +
1446.311 +template <class _RandomAccessIterator, class _Tp,
1446.312 +          class __Reference, class _Distance>
1446.313 +inline bool _STLP_CALL 
1446.314 +operator>=(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.315 +                                  Reference__, _Distance>& __x, 
1446.316 +           const reverse_iterator<_RandomAccessIterator, _Tp,
1446.317 +                                  Reference__, _Distance>& __y) {
1446.318 +  return !(__x < __y);
1446.319 +}
1446.320 +
1446.321 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1446.322 +
1446.323 +template <class _RandomAccessIterator, class _Tp,
1446.324 +          class __Reference, class _Distance>
1446.325 +inline _Distance  _STLP_CALL
1446.326 +operator-(const reverse_iterator<_RandomAccessIterator, _Tp,
1446.327 +                                 Reference__, _Distance>& __x, 
1446.328 +          const reverse_iterator<_RandomAccessIterator, _Tp,
1446.329 +                                 Reference__, _Distance>& __y)
1446.330 +{
1446.331 +  return __y.base() - __x.base();
1446.332 +}
1446.333 +
1446.334 +template <class _RandomAccessIterator, class _Tp,
1446.335 +          class __Reference, class _Distance>
1446.336 +inline reverse_iterator<_RandomAccessIterator, _Tp,
1446.337 +                        Reference__, _Distance>  _STLP_CALL
1446.338 +operator+(_Distance __n,
1446.339 +          const reverse_iterator<_RandomAccessIterator, _Tp,
1446.340 +                                 Reference__, _Distance>& __x)
1446.341 +{
1446.342 +  return reverse_iterator<_RandomAccessIterator, _Tp,
1446.343 +                          Reference__, _Distance>(__x.base() - __n);
1446.344 +}
1446.345 +
1446.346 +#endif /* ! defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION ) */
1446.347 +
1446.348 +_STLP_END_NAMESPACE
1446.349 +
1446.350 +#endif /* _STLP_INTERNAL_ITERATOR_H */
1446.351 +
1446.352 +// Local Variables:
1446.353 +// mode:C++
1446.354 +// End:
  1447.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1447.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_limits.c	Wed Mar 31 12:27:01 2010 +0100
  1447.3 @@ -0,0 +1,270 @@
  1447.4 +/*
  1447.5 + * Copyright (c) 1998,1999
  1447.6 + * Silicon Graphics Computer Systems, Inc.
  1447.7 + *
  1447.8 + * Copyright (c) 1999 
  1447.9 + * Boris Fomitchev
 1447.10 + *
 1447.11 + * This material is provided "as is", with absolutely no warranty expressed
 1447.12 + * or implied. Any use is at your own risk.
 1447.13 + *
 1447.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1447.15 + * without fee, provided the above notices are retained on all copies.
 1447.16 + * Permission to modify the code and to distribute modified code is granted,
 1447.17 + * provided the above notices are retained, and a notice that the code was
 1447.18 + * modified is included with the above copyright notice.
 1447.19 + *
 1447.20 + */
 1447.21 +
 1447.22 +# if !defined (_STLP_LIMITS_C)
 1447.23 +#  define _STLP_LIMITS_C
 1447.24 +
 1447.25 +#ifndef _STLP_INTERNAL_LIMITS_H
 1447.26 +# include <stl/_limits.h>
 1447.27 +#endif
 1447.28 +
 1447.29 +//==========================================================
 1447.30 +//  numeric_limits static members
 1447.31 +//==========================================================
 1447.32 +
 1447.33 +_STLP_BEGIN_NAMESPACE
 1447.34 +
 1447.35 +# if ! defined ( _STLP_STATIC_CONST_INIT_BUG)
 1447.36 +
 1447.37 +#   define __declare_numeric_base_member(__type, __mem, _Init) \
 1447.38 +template <class __number> \
 1447.39 +  const __type _Numeric_limits_base<__number>:: __mem
 1447.40 +
 1447.41 +__declare_numeric_base_member(bool, is_specialized, false);
 1447.42 +__declare_numeric_base_member(int, digits, 0);
 1447.43 +__declare_numeric_base_member(int, digits10, 0);
 1447.44 +__declare_numeric_base_member(bool, is_signed, false);
 1447.45 +__declare_numeric_base_member(bool, is_integer, false);
 1447.46 +__declare_numeric_base_member(bool, is_exact, false);
 1447.47 +__declare_numeric_base_member(int, radix, 0);
 1447.48 +__declare_numeric_base_member(int, min_exponent, 0);
 1447.49 +__declare_numeric_base_member(int, max_exponent, 0);
 1447.50 +__declare_numeric_base_member(int, min_exponent10, 0);
 1447.51 +__declare_numeric_base_member(int, max_exponent10, 0);
 1447.52 +__declare_numeric_base_member(bool, has_infinity, false);
 1447.53 +__declare_numeric_base_member(bool, has_quiet_NaN, false);
 1447.54 +__declare_numeric_base_member(bool, has_signaling_NaN, false);
 1447.55 +__declare_numeric_base_member(float_denorm_style, has_denorm, denorm_absent);
 1447.56 +__declare_numeric_base_member(bool, has_denorm_loss, false);
 1447.57 +__declare_numeric_base_member(bool, is_iec559, false);
 1447.58 +__declare_numeric_base_member(bool, is_bounded, false);
 1447.59 +__declare_numeric_base_member(bool, is_modulo, false);
 1447.60 +__declare_numeric_base_member(bool, traps, false);
 1447.61 +__declare_numeric_base_member(bool, tinyness_before, false);
 1447.62 +__declare_numeric_base_member(float_round_style, round_style, round_toward_zero);
 1447.63 +
 1447.64 +# undef __declare_numeric_base_member
 1447.65 +
 1447.66 +#   define __declare_integer_limits_member(__type, __mem, _Init) \
 1447.67 +template <class _Int, _STLP_LIMITS_MIN_TYPE __imin, _STLP_LIMITS_MAX_TYPE __imax, int __idigits, bool __ismod> \
 1447.68 +  const __type _Integer_limits<_Int, __imin, __imax, __idigits, __ismod>:: __mem
 1447.69 +
 1447.70 +__declare_integer_limits_member(bool, is_specialized, true);
 1447.71 +__declare_integer_limits_member(int, digits, (__idigits < 0) ? \
 1447.72 +			    ((int)((sizeof(_Int) * (CHAR_BIT))) - ((__imin == 0) ? 0 : 1)) \
 1447.73 +                            : (__idigits) );
 1447.74 +__declare_integer_limits_member(int, digits10, (int)(301UL * digits) /1000);
 1447.75 +__declare_integer_limits_member(bool, is_signed, __imin != 0);
 1447.76 +__declare_integer_limits_member(bool, is_integer, true);
 1447.77 +__declare_integer_limits_member(bool, is_exact, true);
 1447.78 +__declare_integer_limits_member(int, radix, 2);
 1447.79 +__declare_integer_limits_member(bool, is_bounded, true);
 1447.80 +__declare_integer_limits_member(bool, is_modulo, true);
 1447.81 +
 1447.82 +#   define __declare_float_limits_member(__type, __mem, _Init) \
 1447.83 +template <class __number,  \
 1447.84 +         int __Digits, int __Digits10,    \
 1447.85 +         int __MinExp, int __MaxExp,      \
 1447.86 +         int __MinExp10, int __MaxExp10,  \
 1447.87 +         bool __IsIEC559, \
 1447.88 +         float_round_style __RoundStyle> \
 1447.89 +const __type _Floating_limits< __number, __Digits, __Digits10,    \
 1447.90 +         __MinExp, __MaxExp, __MinExp10, __MaxExp10,  \
 1447.91 +         __IsIEC559, __RoundStyle>::\
 1447.92 +         __mem
 1447.93 +
 1447.94 +__declare_float_limits_member(bool, is_specialized, true);  
 1447.95 +__declare_float_limits_member(int, digits, __Digits);  
 1447.96 +__declare_float_limits_member(int, digits10, __Digits10);  
 1447.97 +__declare_float_limits_member(bool, is_signed, true);  
 1447.98 +__declare_float_limits_member(int, radix, FLT_RADIX);  
 1447.99 +__declare_float_limits_member(int, min_exponent, __MinExp);  
1447.100 +__declare_float_limits_member(int, max_exponent, __MaxExp);  
1447.101 +__declare_float_limits_member(int, min_exponent10, __MinExp10);  
1447.102 +__declare_float_limits_member(int, max_exponent10, __MaxExp10);  
1447.103 +__declare_float_limits_member(bool, has_infinity, true);
1447.104 +__declare_float_limits_member(bool, has_quiet_NaN, true);
1447.105 +__declare_float_limits_member(bool, has_signaling_NaN, true);
1447.106 +__declare_float_limits_member(float_denorm_style, has_denorm, denorm_indeterminate);
1447.107 +__declare_float_limits_member(bool, has_denorm_loss, false);
1447.108 +__declare_float_limits_member(bool, is_iec559, __IsIEC559);
1447.109 +__declare_float_limits_member(bool, is_bounded, true);
1447.110 +__declare_float_limits_member(bool, traps, true);
1447.111 +__declare_float_limits_member(bool, tinyness_before, false);
1447.112 +__declare_float_limits_member(float_round_style, round_style, __RoundStyle);
1447.113 +
1447.114 +# endif /* _STLP_STATIC_CONST_INIT_BUG */
1447.115 +
1447.116 +
1447.117 +# ifdef _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
1447.118 +
1447.119 +# if defined(_STLP_BIG_ENDIAN)
1447.120 +# if defined(__OS400__)
1447.121 +#  define _STLP_FLOAT_INF_REP { 0x7f80, 0 }
1447.122 +#  define _STLP_FLOAT_QNAN_REP { 0xffc0, 0 }
1447.123 +#  define _STLP_FLOAT_SNAN_REP { 0xff80, 0 }
1447.124 +#  define _STLP_DOUBLE_INF_REP { 0x7ff0, 0, 0, 0 }
1447.125 +#  define _STLP_DOUBLE_QNAN_REP { 0xfff8, 0, 0, 0 }
1447.126 +#  define _STLP_DOUBLE_SNAN_REP { 0xfff0, 0, 0, 0 }
1447.127 +#  define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
1447.128 +#  define _STLP_LDOUBLE_QNAN_REP { 0xfff8, 0, 0, 0, 0, 0, 0, 0 }
1447.129 +#  define _STLP_LDOUBLE_SNAN_REP { 0xfff0, 0, 0, 0, 0, 0, 0, 0 }
1447.130 +# else
1447.131 +#  define _STLP_FLOAT_INF_REP   { 0x7f80, 0 }
1447.132 +#  define _STLP_FLOAT_SNAN_REP  { 0x7f81, 0 }
1447.133 +#  define _STLP_FLOAT_QNAN_REP  { 0x7fc1, 0 }
1447.134 +#  define _STLP_DOUBLE_INF_REP  { 0x7ff0, 0, 0, 0 }
1447.135 +#  define _STLP_DOUBLE_QNAN_REP { 0x7ff1, 0, 0, 0 }
1447.136 +#  define _STLP_DOUBLE_SNAN_REP { 0x7ff9, 0, 0, 0 }
1447.137 +#  define _STLP_LDOUBLE_INF_REP { 0x7ff0, 0, 0, 0, 0, 0, 0, 0 }
1447.138 +#  define _STLP_LDOUBLE_SNAN_REP { 0x7ff1, 0, 0, 0, 0, 0, 0, 0 }
1447.139 +#  define _STLP_LDOUBLE_QNAN_REP { 0x7ff9, 0, 0, 0, 0, 0, 0, 0 }
1447.140 +# endif
1447.141 +
1447.142 +# elif defined (_STLP_LITTLE_ENDIAN)
1447.143 +
1447.144 +# if 0 /* defined(_STLP_MSVC) || defined(__linux__) */
1447.145 +// some IA-32 platform ?? 
1447.146 +#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
1447.147 +#  define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
1447.148 +#  define _STLP_FLOAT_SNAN_REP { 0, 0xff80 }
1447.149 +
1447.150 +#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
1447.151 +#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
1447.152 +#  define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0xfff0 }
1447.153 +#  define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
1447.154 +#  define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
1447.155 +#  define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF0, 0 } // ????
1447.156 +
1447.157 +# elif defined(__DECCXX)
1447.158 +
1447.159 +#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
1447.160 +#  define _STLP_FLOAT_QNAN_REP { 0, 0xffc0 }
1447.161 +#  define _STLP_FLOAT_SNAN_REP { 0x5555, 0x7f85 }
1447.162 +
1447.163 +#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
1447.164 +#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0xfff8 }
1447.165 +#  define _STLP_DOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x7ff5 }
1447.166 +
1447.167 +#  define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0, 0, 0, 0, 0x7fff }
1447.168 +#  define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0, 0, 0, 0x8000, 0xffff }
1447.169 +#  define _STLP_LDOUBLE_SNAN_REP { 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x5555, 0x7fff}
1447.170 +# else
1447.171 +#  define _STLP_FLOAT_INF_REP { 0, 0x7f80 }
1447.172 +#  define _STLP_FLOAT_QNAN_REP { 0, 0x7fa0 }
1447.173 +#  define _STLP_FLOAT_SNAN_REP { 0, 0x7fc0 }
1447.174 +#  define _STLP_DOUBLE_INF_REP { 0, 0, 0, 0x7ff0 }
1447.175 +#  define _STLP_DOUBLE_QNAN_REP { 0, 0, 0, 0x7ff4 }
1447.176 +#  define _STLP_DOUBLE_SNAN_REP { 0, 0, 0, 0x7ff8 }
1447.177 +#  if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)
1447.178 +#   define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x7FF0, 0 } // ????
1447.179 +#   define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xFFF8, 0 } // ????
1447.180 +#   define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xFFF8, 0 }
1447.181 +#  else
1447.182 +#   define _STLP_LDOUBLE_INF_REP { 0, 0, 0, 0x8000, 0x7fff }
1447.183 +#   define _STLP_LDOUBLE_QNAN_REP { 0, 0, 0, 0xa000, 0x7fff }
1447.184 +#   define _STLP_LDOUBLE_SNAN_REP { 0, 0, 0, 0xc000, 0x7fff }
1447.185 +#  endif
1447.186 +# endif
1447.187 +#else
1447.188 +/* This is an architecture we don't know how to handle. Return some
1447.189 +obviously wrong values. */
1447.190 +# define _STLP_FLOAT_INF_REP { 0, 0 }
1447.191 +# define _STLP_FLOAT_QNAN_REP { 0, 0 }
1447.192 +# define _STLP_FLOAT_SNAN_REP { 0, 0 }
1447.193 +# define _STLP_DOUBLE_INF_REP { 0, 0 }
1447.194 +# define _STLP_DOUBLE_QNAN_REP { 0, 0 }
1447.195 +# define _STLP_DOUBLE_SNAN_REP { 0, 0 }
1447.196 +# define _STLP_LDOUBLE_INF_REP { 0 }
1447.197 +# define _STLP_LDOUBLE_QNAN_REP { 0 }
1447.198 +# define _STLP_LDOUBLE_SNAN_REP { 0 }
1447.199 +
1447.200 +#endif
1447.201 +
1447.202 +#if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1447.203 +# ifndef _STLP_NO_LONG_DOUBLE
1447.204 +template <class __dummy>
1447.205 +const _L_rep _LimG<__dummy>::_L_inf  = {_STLP_LDOUBLE_INF_REP}; 
1447.206 +template <class __dummy>
1447.207 +const _L_rep _LimG<__dummy>::_L_qNaN  = {_STLP_LDOUBLE_QNAN_REP}; 
1447.208 +template <class __dummy>
1447.209 +const _L_rep _LimG<__dummy>::_L_sNaN  = {_STLP_LDOUBLE_SNAN_REP}; 
1447.210 +# endif
1447.211 +template <class __dummy>
1447.212 +const _D_rep _LimG<__dummy>::_D_inf  = {_STLP_DOUBLE_INF_REP}; 
1447.213 +template <class __dummy>
1447.214 +const _D_rep _LimG<__dummy>::_D_qNaN  = {_STLP_DOUBLE_QNAN_REP}; 
1447.215 +template <class __dummy>
1447.216 +const _D_rep _LimG<__dummy>::_D_sNaN  = {_STLP_DOUBLE_SNAN_REP}; 
1447.217 +template <class __dummy>
1447.218 +const _F_rep _LimG<__dummy>::_F_inf  = {_STLP_FLOAT_INF_REP}; 
1447.219 +template <class __dummy>
1447.220 +const _F_rep _LimG<__dummy>::_F_qNaN  = {_STLP_FLOAT_QNAN_REP}; 
1447.221 +template <class __dummy>
1447.222 +const _F_rep _LimG<__dummy>::_F_sNaN  = {_STLP_FLOAT_SNAN_REP}; 
1447.223 +
1447.224 +#else
1447.225 +
1447.226 +__DECLARE_INSTANCE( const _F_rep,
1447.227 +                   _LimG<bool>::_F_inf,  = _STLP_FLOAT_INF_REP);
1447.228 +__DECLARE_INSTANCE( const _F_rep,
1447.229 +                   _LimG<bool>::_F_qNaN,  = _STLP_FLOAT_QNAN_REP);
1447.230 +__DECLARE_INSTANCE( const _F_rep,
1447.231 +                   _LimG<bool>::_F_sNaN,  = _STLP_FLOAT_SNAN_REP);
1447.232 +__DECLARE_INSTANCE( const _D_rep,
1447.233 +                   _LimG<bool>::_D_inf,  = _STLP_DOUBLE_INF_REP);
1447.234 +__DECLARE_INSTANCE( const _D_rep,
1447.235 +                   _LimG<bool>::_D_qNaN,  = _STLP_DOUBLE_QNAN_REP);
1447.236 +__DECLARE_INSTANCE( const _D_rep,
1447.237 +                   _LimG<bool>::_D_sNaN,  = _STLP_DOUBLE_SNAN_REP);
1447.238 +# ifndef _STLP_NO_LONG_DOUBLE
1447.239 +__DECLARE_INSTANCE( const _L_rep,
1447.240 +                   _LimG<bool>::_L_inf,  = _STLP_LDOUBLE_INF_REP);
1447.241 +__DECLARE_INSTANCE( const _L_rep,
1447.242 +                   _LimG<bool>::_L_qNaN,  = _STLP_LDOUBLE_QNAN_REP);
1447.243 +__DECLARE_INSTANCE( const _L_rep,
1447.244 +                   _LimG<bool>::_L_sNaN,  = _STLP_LDOUBLE_SNAN_REP);
1447.245 +# endif
1447.246 +
1447.247 +#endif /* STATIC_DATA */   
1447.248 +
1447.249 +# endif /* _STLP_EXPOSE_GLOBALS_IMPLEMENTATION */
1447.250 +    
1447.251 +# undef __declare_integer_limits_member
1447.252 +# undef __declare_float_limits_member
1447.253 +# undef __HACK_ILIMITS
1447.254 +# undef __HACK_NOTHING
1447.255 +# undef __declare_int_members
1447.256 +# undef __declare_float_members
1447.257 +# undef _STLP_LIMITS_MIN_TYPE
1447.258 +# undef _STLP_LIMITS_MAX_TYPE
1447.259 +
1447.260 +# undef _STLP_FLOAT_INF_REP
1447.261 +# undef _STLP_FLOAT_QNAN_REP
1447.262 +# undef _STLP_FLOAT_SNAN_REP
1447.263 +# undef _STLP_DOUBLE_INF_REP
1447.264 +# undef _STLP_DOUBLE_QNAN_REP
1447.265 +# undef _STLP_DOUBLE_SNAN_REP
1447.266 +# undef _STLP_LDOUBLE_INF_REP
1447.267 +# undef _STLP_LDOUBLE_QNAN_REP
1447.268 +# undef _STLP_LDOUBLE_SNAN_REP
1447.269 +
1447.270 +_STLP_END_NAMESPACE
1447.271 +
1447.272 +
1447.273 +#endif /* _STLP_LIMITS_C_INCLUDED */
  1448.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1448.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_list.c	Wed Mar 31 12:27:01 2010 +0100
  1448.3 @@ -0,0 +1,252 @@
  1448.4 +/*
  1448.5 + *
  1448.6 + *
  1448.7 + * Copyright (c) 1994
  1448.8 + * Hewlett-Packard Company
  1448.9 + *
 1448.10 + * Copyright (c) 1996,1997
 1448.11 + * Silicon Graphics Computer Systems, Inc.
 1448.12 + *
 1448.13 + * Copyright (c) 1997
 1448.14 + * Moscow Center for SPARC Technology
 1448.15 + *
 1448.16 + * Copyright (c) 1999 
 1448.17 + * Boris Fomitchev
 1448.18 + *
 1448.19 + * This material is provided "as is", with absolutely no warranty expressed
 1448.20 + * or implied. Any use is at your own risk.
 1448.21 + *
 1448.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1448.23 + * without fee, provided the above notices are retained on all copies.
 1448.24 + * Permission to modify the code and to distribute modified code is granted,
 1448.25 + * provided the above notices are retained, and a notice that the code was
 1448.26 + * modified is included with the above copyright notice.
 1448.27 + *
 1448.28 + */
 1448.29 +#ifndef _STLP_LIST_C
 1448.30 +#define _STLP_LIST_C
 1448.31 +
 1448.32 +#ifndef _STLP_INTERNAL_LIST_H
 1448.33 +# include <stl/_list.h>
 1448.34 +#endif
 1448.35 +
 1448.36 +#if defined (__WATCOMC__) || defined (_STLP_USE_TRAP_LEAVE)
 1448.37 +#include <vector>
 1448.38 +#endif
 1448.39 +
 1448.40 +# undef list
 1448.41 +# define  list  __WORKAROUND_DBG_RENAME(list)
 1448.42 +
 1448.43 +_STLP_BEGIN_NAMESPACE
 1448.44 +
 1448.45 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1448.46 +
 1448.47 +template <class _Dummy>
 1448.48 +void _STLP_CALL
 1448.49 +_List_global<_Dummy>::_Transfer(_List_node_base* __position, 
 1448.50 +				_List_node_base* __first, _List_node_base* __last) {
 1448.51 +  if (__position != __last) {
 1448.52 +    // Remove [first, last) from its old position.
 1448.53 +    ((_Node*) (__last->_M_prev))->_M_next = __position;
 1448.54 +    ((_Node*) (__first->_M_prev))->_M_next    = __last;
 1448.55 +    ((_Node*) (__position->_M_prev))->_M_next = __first; 
 1448.56 +    
 1448.57 +    // Splice [first, last) into its new position.
 1448.58 +    _Node* __tmp = (_Node*) (__position->_M_prev);
 1448.59 +    __position->_M_prev = __last->_M_prev;
 1448.60 +    __last->_M_prev      = __first->_M_prev; 
 1448.61 +    __first->_M_prev    = __tmp;
 1448.62 +  }
 1448.63 +}
 1448.64 +
 1448.65 +#endif /* defined (__BUILDING_STLPORT) || ! defined (_STLP_OWN_IOSTREAMS) */
 1448.66 +
 1448.67 +
 1448.68 +template <class _Tp, class _Alloc>
 1448.69 +void 
 1448.70 +_List_base<_Tp,_Alloc>::clear() 
 1448.71 +{
 1448.72 +  _List_node<_Tp>* __cur = this->_M_node._M_data;
 1448.73 +  if (!__cur)
 1448.74 +	return;
 1448.75 +  __cur = (_List_node<_Tp>*)__cur->_M_next;
 1448.76 +  while (__cur != this->_M_node._M_data) {
 1448.77 +    _List_node<_Tp>* __tmp = __cur;
 1448.78 +    __cur = (_List_node<_Tp>*) __cur->_M_next;
 1448.79 +    _STLP_STD::_Destroy(&__tmp->_M_data);
 1448.80 +    this->_M_node.deallocate(__tmp, 1);
 1448.81 +  }
 1448.82 +  this->_M_node._M_data->_M_next = this->_M_node._M_data;
 1448.83 +  this->_M_node._M_data->_M_prev = this->_M_node._M_data;
 1448.84 +}
 1448.85 +
 1448.86 +# if defined (_STLP_NESTED_TYPE_PARAM_BUG) 
 1448.87 +#  define size_type      size_t
 1448.88 +# endif
 1448.89 +
 1448.90 +template <class _Tp, class _Alloc>
 1448.91 +void list<_Tp, _Alloc>::resize(size_type __new_size, _Tp __x)
 1448.92 +{
 1448.93 +  iterator __i = begin();
 1448.94 +  size_type __len = 0;
 1448.95 +  for ( ; __i != end() && __len < __new_size; ++__i, ++__len);
 1448.96 +
 1448.97 +  if (__len == __new_size)
 1448.98 +    erase(__i, end());
 1448.99 +  else                          // __i == end()
1448.100 +    insert(end(), __new_size - __len, __x);
1448.101 +}
1448.102 +
1448.103 +template <class _Tp, class _Alloc>
1448.104 +list<_Tp, _Alloc>& list<_Tp, _Alloc>::operator=(const list<_Tp, _Alloc>& __x)
1448.105 +{
1448.106 +  if (this != &__x) {
1448.107 +    iterator __first1 = begin();
1448.108 +    iterator __last1 = end();
1448.109 +    const_iterator __first2 = __x.begin();
1448.110 +    const_iterator __last2 = __x.end();
1448.111 +    while (__first1 != __last1 && __first2 != __last2) 
1448.112 +      *__first1++ = *__first2++;
1448.113 +    if (__first2 == __last2)
1448.114 +      erase(__first1, __last1);
1448.115 +    else
1448.116 +      insert(__last1, __first2, __last2);
1448.117 +  }
1448.118 +  return *this;
1448.119 +}
1448.120 +
1448.121 +template <class _Tp, class _Alloc>
1448.122 +void list<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) {
1448.123 +  iterator __i = begin();
1448.124 +  for ( ; __i != end() && __n > 0; ++__i, --__n)
1448.125 +    *__i = __val;
1448.126 +  if (__n > 0)
1448.127 +    insert(end(), __n, __val);
1448.128 +  else
1448.129 +    erase(__i, end());
1448.130 +}
1448.131 +
1448.132 +template <class _Tp, class _Alloc, class _Predicate> 
1448.133 +void _S_remove_if(list<_Tp, _Alloc>& __that, _Predicate __pred)  {
1448.134 +  typename list<_Tp, _Alloc>::iterator __first = __that.begin();
1448.135 +  typename list<_Tp, _Alloc>::iterator __last = __that.end();
1448.136 +  while (__first != __last) {
1448.137 +    typename list<_Tp, _Alloc>::iterator __next = __first;
1448.138 +    ++__next;
1448.139 +    if (__pred(*__first)) __that.erase(__first);
1448.140 +    __first = __next;
1448.141 +  }
1448.142 +}
1448.143 +
1448.144 +template <class _Tp, class _Alloc, class _BinaryPredicate>
1448.145 +void _S_unique(list<_Tp, _Alloc>& __that, _BinaryPredicate __binary_pred) {
1448.146 +  typename list<_Tp, _Alloc>::iterator __first = __that.begin();
1448.147 +  typename list<_Tp, _Alloc>::iterator __last = __that.end();
1448.148 +  if (__first == __last) return;
1448.149 +  typename list<_Tp, _Alloc>::iterator __next = __first;
1448.150 +  while (++__next != __last) {
1448.151 +    if (__binary_pred(*__first, *__next))
1448.152 +      __that.erase(__next);
1448.153 +    else
1448.154 +      __first = __next;
1448.155 +    __next = __first;
1448.156 +  }
1448.157 +}
1448.158 +
1448.159 +template <class _Tp, class _Alloc, class _StrictWeakOrdering>
1448.160 +void _S_merge(list<_Tp, _Alloc>& __that, list<_Tp, _Alloc>& __x,
1448.161 +	      _StrictWeakOrdering __comp) {
1448.162 +  typedef typename list<_Tp, _Alloc>::iterator _Literator;
1448.163 +  _Literator __first1 = __that.begin();
1448.164 +  _Literator __last1 = __that.end();
1448.165 +  _Literator __first2 = __x.begin();
1448.166 +  _Literator __last2 = __x.end();
1448.167 +  while (__first1 != __last1 && __first2 != __last2)
1448.168 +    if (__comp(*__first2, *__first1)) {
1448.169 +      _Literator __next = __first2;
1448.170 +      _List_global_inst::_Transfer(__first1._M_node, __first2._M_node, (++__next)._M_node);
1448.171 +      __first2 = __next;
1448.172 +    }
1448.173 +    else
1448.174 +      ++__first1;
1448.175 +  if (__first2 != __last2) _List_global_inst::_Transfer(__last1._M_node, __first2._M_node, __last2._M_node);
1448.176 +}
1448.177 +
1448.178 +template <class _Tp, class _Alloc, class _StrictWeakOrdering>
1448.179 +void _S_sort(list<_Tp, _Alloc>& __that, _StrictWeakOrdering __comp) {
1448.180 +  // Do nothing if the list has length 0 or 1.
1448.181 +  if (__that._M_node._M_data->_M_next != __that._M_node._M_data &&
1448.182 +      (__that._M_node._M_data->_M_next)->_M_next != __that._M_node._M_data) {
1448.183 +
1448.184 +#if !defined (__WATCOMC__)
1448.185 +#ifdef _STLP_USE_TRAP_LEAVE
1448.186 +    typedef vector<list<_Tp, _Alloc>*, _Alloc>  _TmpVec;
1448.187 +    _TmpVec* __pTmp = new _TmpVec();
1448.188 +    _TmpVec& __counter = *__pTmp;
1448.189 +    for (int i = 0; 1< 64; ++i) {
1448.190 +      list<_Tp, _Alloc>* __pTmp2 = new list<_Tp, _Alloc>;
1448.191 +      __counter.push_back (__pTmp2);
1448.192 +    }
1448.193 +    list<_Tp, _Alloc>* __pcarry = new list<_Tp, _Alloc>;
1448.194 +    list<_Tp, _Alloc>& __carry = *__pcarry;
1448.195 +#else
1448.196 +    list<_Tp, _Alloc> __counter[64];
1448.197 +    list<_Tp, _Alloc> __carry;
1448.198 +#endif
1448.199 +#else
1448.200 +    list<_Tp, _Alloc> __carry;
1448.201 +    __vector__<list<_Tp, _Alloc>, _Alloc> __counter(64);		
1448.202 +#endif
1448.203 +    int __fill = 0;
1448.204 +#ifdef _STLP_USE_TRAP_LEAVE
1448.205 +    while (!__that.empty()) {
1448.206 +      __carry.splice(__carry.begin(), __that, __that.begin());
1448.207 +      int __i = 0;
1448.208 +
1448.209 +      while(__i < __fill && !__counter[__i]->empty()) {
1448.210 +	_S_merge(*__counter[__i], __carry, __comp);
1448.211 +	__carry.swap(*__counter[__i++]);
1448.212 +      }
1448.213 +      __carry.swap(*__counter[__i]);         
1448.214 +      if (__i == __fill) ++__fill;
1448.215 +    } 
1448.216 +    
1448.217 +    for (int __i = 1; __i < __fill; ++__i) 
1448.218 +      _S_merge(*__counter[__i], *__counter[__i-1], __comp);
1448.219 +    __that.swap(*__counter[__fill-1]);
1448.220 +
1448.221 +    // those objects won't just go away
1448.222 +    __counter.clear();
1448.223 +    CleanupStack::Pop(66);
1448.224 +  }    
1448.225 +# else
1448.226 +    while (!__that.empty()) {
1448.227 +      __carry.splice(__carry.begin(), __that, __that.begin());
1448.228 +      int __i = 0;
1448.229 +
1448.230 +      while(__i < __fill && !__counter[__i].empty()) {
1448.231 +	_S_merge(__counter[__i], __carry, __comp);
1448.232 +	__carry.swap(__counter[__i++]);
1448.233 +      }
1448.234 +      __carry.swap(__counter[__i]);         
1448.235 +      if (__i == __fill) ++__fill;
1448.236 +    } 
1448.237 +    
1448.238 +    for (int __i = 1; __i < __fill; ++__i) 
1448.239 +      _S_merge(__counter[__i], __counter[__i-1], __comp);
1448.240 +    __that.swap(__counter[__fill-1]);
1448.241 +  }
1448.242 +# endif
1448.243 +
1448.244 +}
1448.245 +
1448.246 +# undef  list
1448.247 +# undef  size_type
1448.248 +
1448.249 +_STLP_END_NAMESPACE
1448.250 +
1448.251 +#endif /*  _STLP_LIST_C */
1448.252 +
1448.253 +// Local Variables:
1448.254 +// mode:C++
1448.255 +// End:
  1449.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1449.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_locale.h	Wed Mar 31 12:27:01 2010 +0100
  1449.3 @@ -0,0 +1,259 @@
  1449.4 +/*
  1449.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1449.6 + *
  1449.7 + * Copyright (c) 1999
  1449.8 + * Silicon Graphics Computer Systems, Inc.
  1449.9 + *
 1449.10 + * Copyright (c) 1999 
 1449.11 + * Boris Fomitchev
 1449.12 + *
 1449.13 + * This material is provided "as is", with absolutely no warranty expressed
 1449.14 + * or implied. Any use is at your own risk.
 1449.15 + *
 1449.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1449.17 + * without fee, provided the above notices are retained on all copies.
 1449.18 + * Permission to modify the code and to distribute modified code is granted,
 1449.19 + * provided the above notices are retained, and a notice that the code was
 1449.20 + * modified is included with the above copyright notice.
 1449.21 + *
 1449.22 + */ 
 1449.23 +// WARNING: This is an internal header file, included by other C++
 1449.24 +// standard library headers.  You should not attempt to use this header
 1449.25 +// file directly.
 1449.26 +
 1449.27 +
 1449.28 +#ifndef _STLP_INTERNAL_LOCALE_H
 1449.29 +#define _STLP_INTERNAL_LOCALE_H
 1449.30 +
 1449.31 +#ifndef _STLP_CSTDLIB
 1449.32 +# include <cstdlib>
 1449.33 +#endif
 1449.34 +
 1449.35 +#ifndef _STLP_CWCHAR_H
 1449.36 +# include <stl/_cwchar.h>
 1449.37 +#endif
 1449.38 +
 1449.39 +#ifndef _STLP_INTERNAL_THREADS_H
 1449.40 +# include <stl/_threads.h>
 1449.41 +#endif
 1449.42 +
 1449.43 +#ifndef _STLP_STRING_FWD_H
 1449.44 +# include <stl/_string_fwd.h>
 1449.45 +#endif
 1449.46 +
 1449.47 +_STLP_BEGIN_NAMESPACE
 1449.48 +
 1449.49 +class _STLP_CLASS_DECLSPEC _Locale_impl;             // Forward declaration of opaque type.
 1449.50 +class _STLP_CLASS_DECLSPEC _Locale;             // Forward declaration of opaque type.
 1449.51 +class _STLP_CLASS_DECLSPEC locale;
 1449.52 +class _STLP_CLASS_DECLSPEC ios_base;
 1449.53 +
 1449.54 +
 1449.55 +template <class _CharT, class _Traits, class _Alloc>
 1449.56 +bool 
 1449.57 +__locale_do_operator_call (const locale* __that, 
 1449.58 +                           const basic_string<_CharT, _Traits, _Alloc >& __x,
 1449.59 +                           const basic_string<_CharT, _Traits, _Alloc >& __y);
 1449.60 +
 1449.61 +#  define _BaseFacet locale::facet
 1449.62 +
 1449.63 +class _STLP_CLASS_DECLSPEC locale {
 1449.64 +public:
 1449.65 +  // types:
 1449.66 +
 1449.67 +  class 
 1449.68 +#if defined (__SYMBIAN32__) || defined(__GCCE__)
 1449.69 +  _STLP_CLASS_DECLSPEC  
 1449.70 +#else
 1449.71 +    _STLP_DECLSPEC 
 1449.72 +#endif
 1449.73 +  facet : private _Refcount_Base {
 1449.74 +  protected:
 1449.75 +    explicit facet(size_t __no_del = 0) : _Refcount_Base(1), _M_delete(__no_del == 0) {}
 1449.76 +
 1449.77 +    _STLP_DECLSPEC virtual ~facet();
 1449.78 +    friend class locale;
 1449.79 +    friend class _Locale_impl;
 1449.80 +    friend class _Locale;
 1449.81 +    
 1449.82 +  private:                        // Invalidate assignment and copying.
 1449.83 +    facet(const facet& __f) : _Refcount_Base(1), _M_delete(__f._M_delete == 0)  {};       
 1449.84 +    void operator=(const facet&); 
 1449.85 +    
 1449.86 +  private:                        // Data members.
 1449.87 +    const bool _M_delete;
 1449.88 +  };
 1449.89 +  
 1449.90 +#if defined(__MVS__) || defined(__OS400__)
 1449.91 +  struct
 1449.92 +#else
 1449.93 +  class
 1449.94 +#endif
 1449.95 +  _STLP_DECLSPEC id {
 1449.96 +    friend class locale;
 1449.97 +    friend class _Locale_impl;
 1449.98 +  public:
 1449.99 +    size_t _M_index;
1449.100 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1449.101 +   static _STLP_STATIC_MEMBER_DECLSPEC size_t& get_locale_id_S_max();
1449.102 +# else
1449.103 +    static size_t _S_max;
1449.104 +# endif
1449.105 +  };
1449.106 +
1449.107 +  typedef int category;
1449.108 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
1449.109 +  enum _Category {
1449.110 +# else
1449.111 +  static const category
1449.112 +# endif
1449.113 +    none      = 0x000,
1449.114 +    collate   = 0x010,
1449.115 +    ctype     = 0x020,
1449.116 +    monetary  = 0x040,
1449.117 +    numeric   = 0x100,
1449.118 +    time      = 0x200,
1449.119 +    messages  = 0x400,
1449.120 +    all       = collate | ctype | monetary | numeric | time | messages
1449.121 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
1449.122 +  }
1449.123 +# endif
1449.124 +  ;
1449.125 +
1449.126 +  // construct/copy/destroy:
1449.127 +  _STLP_DECLSPEC locale();
1449.128 +  _STLP_DECLSPEC locale(const locale&) _STLP_NOTHROW;
1449.129 +  explicit locale(const char *);
1449.130 +  locale(const locale&, const char*, category);
1449.131 +
1449.132 +  // those are for internal use
1449.133 +  locale(_Locale_impl*);
1449.134 +  locale(_Locale_impl*, bool);
1449.135 +
1449.136 +public:
1449.137 +
1449.138 +# if defined ( _STLP_MEMBER_TEMPLATES ) /* && defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) */
1449.139 +  template <class _Facet> 
1449.140 +  locale(const locale& __loc, _Facet* __f) : _M_impl(0)
1449.141 +    {
1449.142 +      //      _M_impl = this->_S_copy_impl(__loc._M_impl, __f != 0);
1449.143 +      new(this) locale(__loc._M_impl, __f != 0);
1449.144 +      if (__f != 0)
1449.145 +        this->_M_insert((facet*)__f, _Facet::GetFacetLocaleId());
1449.146 +    }
1449.147 +# endif
1449.148 +
1449.149 +  locale(const locale&, const locale&, category);
1449.150 +  _STLP_DECLSPEC ~locale() _STLP_NOTHROW;
1449.151 +  _STLP_DECLSPEC const locale& operator=(const locale&) _STLP_NOTHROW;
1449.152 +
1449.153 +# if !(defined (_STLP_NO_MEMBER_TEMPLATES) || defined (_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS))
1449.154 +  template <class _Facet> locale combine(const locale& __loc) const{
1449.155 +    locale __result(__loc._M_impl, true);
1449.156 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1449.157 +    if (facet* __f = __loc._M_get_facet(_Facet::GetFacetLocaleId())) {
1449.158 +      __result._M_insert((facet*)__f, _Facet::GetFacetLocaleId());
1449.159 +#else
1449.160 +    if (facet* __f = __loc._M_get_facet(_Facet::id)) {
1449.161 +      __result._M_insert((facet*)__f, _Facet::id);
1449.162 +#endif
1449.163 +      __f->_M_incr();
1449.164 +    }
1449.165 +    else
1449.166 +      _M_throw_runtime_error();    
1449.167 +    return __result;
1449.168 +  }
1449.169 +# endif
1449.170 +  // locale operations:
1449.171 +  _STLP_DECLSPEC string name() const;
1449.172 +
1449.173 +  _STLP_DECLSPEC bool operator==(const locale&) const;
1449.174 +  _STLP_DECLSPEC bool operator!=(const locale&) const;
1449.175 +
1449.176 +# if ! defined ( _STLP_MEMBER_TEMPLATES ) || defined (_STLP_INLINE_MEMBER_TEMPLATES) || (defined(__MWERKS__) && __MWERKS__ <= 0x2301)
1449.177 +  bool operator()(const string& __x, const string& __y) const;
1449.178 +#  ifndef _STLP_NO_WCHAR_T
1449.179 +  bool operator()(const wstring& __x, const wstring& __y) const;
1449.180 +#  endif
1449.181 +# else
1449.182 +  template <class _CharT, class _Traits, class _Alloc>
1449.183 +  bool operator()(const basic_string<_CharT, _Traits, _Alloc>& __x,
1449.184 +                  const basic_string<_CharT, _Traits, _Alloc>& __y) const  {
1449.185 +    return __locale_do_operator_call(this, __x, __y);
1449.186 +  }              
1449.187 +# endif
1449.188 +
1449.189 +  // global locale objects:
1449.190 +  _STLP_DECLSPEC static locale _STLP_CALL global(const locale&);
1449.191 +  _STLP_DECLSPEC static const locale& _STLP_CALL classic();
1449.192 +
1449.193 +public:                         // Helper functions for locale globals.
1449.194 +  _STLP_DECLSPEC facet* _M_get_facet(const id&) const;
1449.195 +  // same, but throws
1449.196 +  _STLP_DECLSPEC facet* _M_use_facet(const id&) const;
1449.197 +  _STLP_DECLSPEC static void _STLP_CALL _M_throw_runtime_error(const char* = 0);
1449.198 +  static void _STLP_CALL _S_initialize();
1449.199 +  static void _STLP_CALL _S_uninitialize();
1449.200 +
1449.201 +private:                        // More helper functions.
1449.202 +  //  static _Locale_impl* _STLP_CALL _S_copy_impl(_Locale_impl*, bool);
1449.203 +  _STLP_DECLSPEC void _M_insert(facet* __f, id& __id);
1449.204 +
1449.205 +  // friends:
1449.206 +  friend class _Locale_impl;
1449.207 +  friend class _Locale;
1449.208 +  friend class ios_base;
1449.209 +
1449.210 +private:                        // Data members
1449.211 +  _Locale_impl* _M_impl;
1449.212 +};
1449.213 +
1449.214 +//----------------------------------------------------------------------
1449.215 +// locale globals
1449.216 +
1449.217 +# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1449.218 +template <class _Facet>
1449.219 +inline const _Facet& 
1449.220 +_Use_facet<_Facet>::operator *() const
1449.221 +# else
1449.222 +template <class _Facet> inline const _Facet& use_facet(const locale& __loc)
1449.223 +# endif
1449.224 +{
1449.225 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1449.226 +  return *__STATIC_CAST(const _Facet*,__loc._M_use_facet(_Facet::GetFacetLocaleId()));
1449.227 +#else
1449.228 +  return *__STATIC_CAST(const _Facet*,__loc._M_use_facet(_Facet::id));
1449.229 +#endif
1449.230 +}
1449.231 +
1449.232 + 
1449.233 +# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1449.234 +template <class _Facet> 
1449.235 +struct has_facet {
1449.236 +  const locale& __loc;
1449.237 +  has_facet(const locale& __p_loc) : __loc(__p_loc) {}
1449.238 +  operator bool() const _STLP_NOTHROW
1449.239 +# else
1449.240 +template <class _Facet> inline bool has_facet(const locale& __loc) _STLP_NOTHROW 
1449.241 +# endif
1449.242 +{
1449.243 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1449.244 +  return (__loc._M_get_facet(_Facet::GetFacetLocaleId()) != 0);
1449.245 +#else
1449.246 +  return (__loc._M_get_facet(_Facet::id) != 0);
1449.247 +#endif
1449.248 +}
1449.249 +
1449.250 +# ifdef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1449.251 +  // close class definition
1449.252 +};
1449.253 +# endif
1449.254 +
1449.255 +_STLP_END_NAMESPACE
1449.256 +
1449.257 +#endif /* _STLP_INTERNAL_LOCALE_H */
1449.258 +
1449.259 +// Local Variables:
1449.260 +// mode:C++
1449.261 +// End:
1449.262 +
  1450.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1450.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_mbstate_t.h	Wed Mar 31 12:27:01 2010 +0100
  1450.3 @@ -0,0 +1,39 @@
  1450.4 +/*
  1450.5 + * Copyright (c) 1999
  1450.6 + * Boris Fomitchev
  1450.7 + *
  1450.8 + * This material is provided "as is", with absolutely no warranty expressed
  1450.9 + * or implied. Any use is at your own risk.
 1450.10 + *
 1450.11 + * Permission to use or copy this software for any purpose is hereby granted
 1450.12 + * without fee, provided the above notices are retained on all copies.
 1450.13 + * Permission to modify the code and to distribute modified code is granted,
 1450.14 + * provided the above notices are retained, and a notice that the code was
 1450.15 + * modified is included with the above copyright notice.
 1450.16 + *
 1450.17 + */
 1450.18 +
 1450.19 +#ifndef _STLP_INTERNAL_MBSTATE_T
 1450.20 +#define _STLP_INTERNAL_MBSTATE_T
 1450.21 +
 1450.22 +#if (defined (__OpenBSD__) || defined (__FreeBSD__)) && defined (__GNUC__) && !defined (_GLIBCPP_HAVE_MBSTATE_T)
 1450.23 +#  define __mbstate_t_defined /* mbstate_t defined in native <cwchar>, so not defined in C! */
 1450.24 +#endif
 1450.25 +
 1450.26 +#if defined (_STLP_NO_NATIVE_MBSTATE_T) && !defined (_STLP_NO_MBSTATE_T) && !defined (_MBSTATE_T) && !defined (__mbstate_t_defined)
 1450.27 +#  define _STLP_USE_OWN_MBSTATE_T
 1450.28 +#  define _MBSTATE_T
 1450.29 +#endif
 1450.30 +
 1450.31 +#if defined (_STLP_USE_OWN_MBSTATE_T)
 1450.32 +typedef int mbstate_t;
 1450.33 +
 1450.34 +#  if defined (__cplusplus)
 1450.35 +_STLP_BEGIN_NAMESPACE
 1450.36 +using ::mbstate_t;
 1450.37 +_STLP_END_NAMESPACE
 1450.38 +#  endif
 1450.39 +
 1450.40 +#endif /* _STLP_USE_OWN_MBSTATE_T */
 1450.41 +
 1450.42 +#endif /* _STLP_INTERNAL_MBSTATE_T */
  1451.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1451.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_messages_facets.h	Wed Mar 31 12:27:01 2010 +0100
  1451.3 @@ -0,0 +1,186 @@
  1451.4 +/*
  1451.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1451.6 + *
  1451.7 + * Copyright (c) 1999
  1451.8 + * Silicon Graphics Computer Systems, Inc.
  1451.9 + *
 1451.10 + * Copyright (c) 1999 
 1451.11 + * Boris Fomitchev
 1451.12 + *
 1451.13 + * This material is provided "as is", with absolutely no warranty expressed
 1451.14 + * or implied. Any use is at your own risk.
 1451.15 + *
 1451.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1451.17 + * without fee, provided the above notices are retained on all copies.
 1451.18 + * Permission to modify the code and to distribute modified code is granted,
 1451.19 + * provided the above notices are retained, and a notice that the code was
 1451.20 + * modified is included with the above copyright notice.
 1451.21 + *
 1451.22 + */ 
 1451.23 +
 1451.24 +// WARNING: This is an internal header file, included by other C++
 1451.25 +// standard library headers.  You should not attempt to use this header
 1451.26 +// file directly.
 1451.27 +
 1451.28 +
 1451.29 +#ifndef _STLP_INTERNAL_MESSAGES_H
 1451.30 +#define _STLP_INTERNAL_MESSAGES_H
 1451.31 +
 1451.32 +#ifndef _STLP_IOS_BASE_H
 1451.33 +# include <stl/_ios_base.h>
 1451.34 +#endif
 1451.35 +
 1451.36 +# ifndef _STLP_C_LOCALE_H
 1451.37 +#  include <stl/c_locale.h>
 1451.38 +# endif
 1451.39 +
 1451.40 +#ifndef _STLP_STRING_H
 1451.41 +# include <stl/_string.h>
 1451.42 +#endif
 1451.43 +
 1451.44 +_STLP_BEGIN_NAMESPACE
 1451.45 +
 1451.46 +// messages facets
 1451.47 +
 1451.48 +class messages_base {
 1451.49 +public:
 1451.50 +  typedef int catalog;
 1451.51 +};
 1451.52 +
 1451.53 +template <class _CharT> class messages {};
 1451.54 +
 1451.55 +class _Messages;
 1451.56 +
 1451.57 +_STLP_TEMPLATE_NULL
 1451.58 +#ifdef __SYMBIAN32__
 1451.59 +class messages<char> : public locale::facet, public messages_base
 1451.60 +#else
 1451.61 +class _STLP_CLASS_DECLSPEC messages<char> : public locale::facet, public messages_base
 1451.62 +#endif
 1451.63 +{
 1451.64 +  friend class _Locale;
 1451.65 +public:
 1451.66 +  typedef messages_base::catalog catalog;
 1451.67 +  typedef char                   char_type;
 1451.68 +  typedef string    string_type;
 1451.69 +
 1451.70 + _STLP_DECLSPEC explicit messages(size_t __refs = 0);
 1451.71 +
 1451.72 + catalog open(const string& __fn, const locale& __loc) const
 1451.73 +    { return do_open(__fn, __loc); }
 1451.74 +  string_type get(catalog __c, int __set, int __msgid,
 1451.75 +		  const string_type& __dfault) const
 1451.76 +    { return do_get(__c, __set, __msgid, __dfault); }
 1451.77 +  inline void close(catalog __c) const
 1451.78 +    { do_close(__c); }
 1451.79 +
 1451.80 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1451.81 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
 1451.82 +#else
 1451.83 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
 1451.84 +#endif
 1451.85 +
 1451.86 +  _STLP_DECLSPEC  messages(_Messages*);
 1451.87 +
 1451.88 +protected:
 1451.89 + _STLP_DECLSPEC  messages(size_t, _Locale_messages*);
 1451.90 +_STLP_DECLSPEC   ~messages();
 1451.91 +
 1451.92 +_STLP_DECLSPEC   virtual catalog     do_open(const string& __fn, const locale& __loc) const;
 1451.93 +_STLP_DECLSPEC   virtual string_type do_get(catalog __c, int __set, int __msgid,
 1451.94 +                             const string_type& __dfault) const;
 1451.95 +_STLP_DECLSPEC   virtual void        do_close(catalog __c) const;
 1451.96 +
 1451.97 +  void _M_initialize(const char* __name);
 1451.98 +
 1451.99 +private:
1451.100 +  _Messages* _M_impl;
1451.101 +};
1451.102 +
1451.103 +# if !defined (_STLP_NO_WCHAR_T)
1451.104 +
1451.105 +_STLP_TEMPLATE_NULL
1451.106 +#ifdef __SYMBIAN32__
1451.107 +class messages<wchar_t> : public locale::facet, public messages_base
1451.108 +#else
1451.109 +class _STLP_CLASS_DECLSPEC messages<wchar_t> : public locale::facet, public messages_base
1451.110 +#endif
1451.111 +{
1451.112 +  friend class _Locale;
1451.113 +public:
1451.114 +  typedef messages_base::catalog catalog;
1451.115 +  typedef wchar_t                char_type;
1451.116 +  typedef wstring  string_type;
1451.117 +
1451.118 +_STLP_DECLSPEC   explicit messages(size_t __refs = 0);
1451.119 +  
1451.120 +  inline catalog open(const string& __fn, const locale& __loc) const
1451.121 +    { return do_open(__fn, __loc); }
1451.122 +  inline string_type get(catalog __c, int __set, int __msgid,
1451.123 +                         const string_type& __dfault) const
1451.124 +    { return do_get(__c, __set, __msgid, __dfault); }
1451.125 +  inline void close(catalog __c) const
1451.126 +    { do_close(__c); }
1451.127 +
1451.128 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1451.129 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1451.130 +#else
1451.131 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1451.132 +#endif
1451.133 +
1451.134 +  _STLP_DECLSPEC  messages(_Messages*);
1451.135 +
1451.136 +protected:
1451.137 +
1451.138 +_STLP_DECLSPEC   messages(size_t, _Locale_messages*);
1451.139 +_STLP_DECLSPEC   ~messages();
1451.140 +
1451.141 +_STLP_DECLSPEC   virtual catalog     do_open(const string& __fn, const locale& __loc) const;
1451.142 +_STLP_DECLSPEC   virtual string_type do_get(catalog __c, int __set, int __msgid,
1451.143 +                             const string_type& __dfault) const;
1451.144 +_STLP_DECLSPEC   virtual void        do_close(catalog __c) const;
1451.145 +
1451.146 +  void _M_initialize(const char* __name);
1451.147 +
1451.148 +private:
1451.149 +  _Messages* _M_impl;
1451.150 +};
1451.151 +
1451.152 +# endif /* WCHAR_T */
1451.153 +
1451.154 +template <class _CharT> class messages_byname {};
1451.155 +
1451.156 +_STLP_TEMPLATE_NULL
1451.157 +class _STLP_CLASS_DECLSPEC messages_byname<char> : public messages<char> {
1451.158 +public:
1451.159 +  typedef messages_base::catalog catalog;
1451.160 +  typedef string     string_type;
1451.161 +
1451.162 + _STLP_DECLSPEC  explicit messages_byname(const char* __name, size_t __refs = 0);
1451.163 +
1451.164 +protected:
1451.165 +_STLP_DECLSPEC   ~messages_byname();
1451.166 +};
1451.167 +
1451.168 +# ifndef _STLP_NO_WCHAR_T
1451.169 +_STLP_TEMPLATE_NULL
1451.170 +class _STLP_CLASS_DECLSPEC messages_byname<wchar_t> : public messages<wchar_t> {
1451.171 +public:
1451.172 +  typedef messages_base::catalog catalog;
1451.173 +  typedef wstring                string_type;
1451.174 +
1451.175 +_STLP_DECLSPEC   explicit messages_byname(const char* __name, size_t __refs = 0);
1451.176 +
1451.177 +protected:
1451.178 +_STLP_DECLSPEC   ~messages_byname();
1451.179 +};
1451.180 +# endif /* WCHAR_T */
1451.181 +
1451.182 +_STLP_END_NAMESPACE
1451.183 +
1451.184 +#endif /* _STLP_INTERNAL_MESSAGES_H */
1451.185 +
1451.186 +// Local Variables:
1451.187 +// mode:C++
1451.188 +// End:
1451.189 +
  1452.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1452.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_monetary.c	Wed Mar 31 12:27:01 2010 +0100
  1452.3 @@ -0,0 +1,827 @@
  1452.4 +/*
  1452.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1452.6 + *
  1452.7 + * Copyright (c) 1999
  1452.8 + * Silicon Graphics Computer Systems, Inc.
  1452.9 + *
 1452.10 + * Copyright (c) 1999 
 1452.11 + * Boris Fomitchev
 1452.12 + *
 1452.13 + * This material is provided "as is", with absolutely no warranty expressed
 1452.14 + * or implied. Any use is at your own risk.
 1452.15 + *
 1452.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1452.17 + * without fee, provided the above notices are retained on all copies.
 1452.18 + * Permission to modify the code and to distribute modified code is granted,
 1452.19 + * provided the above notices are retained, and a notice that the code was
 1452.20 + * modified is included with the above copyright notice.
 1452.21 + *
 1452.22 + */ 
 1452.23 +#ifndef _STLP_MONETARY_C
 1452.24 +#define _STLP_MONETARY_C
 1452.25 +
 1452.26 +# ifndef _STLP_INTERNAL_MONETARY_H
 1452.27 +#  include <stl/_monetary.h>
 1452.28 +# endif
 1452.29 +
 1452.30 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1452.31 +
 1452.32 +#ifndef _STLP_INTERNAL_IOS_H
 1452.33 +# include <stl/_ios.h>
 1452.34 +#endif
 1452.35 +
 1452.36 +#ifndef _STLP_INTERNAL_NUM_PUT_H
 1452.37 +# include <stl/_num_put.h>
 1452.38 +#endif
 1452.39 +
 1452.40 +#ifndef _STLP_INTERNAL_NUM_GET_H
 1452.41 +# include <stl/_num_get.h>
 1452.42 +#endif
 1452.43 +
 1452.44 +_STLP_BEGIN_NAMESPACE
 1452.45 +
 1452.46 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
 1452.47 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1452.48 +template <class _CharT, class _InputIterator>
 1452.49 +locale::id money_get<_CharT, _InputIterator>::id;
 1452.50 +
 1452.51 +template <class _CharT, class _OutputIterator>
 1452.52 +locale::id money_put<_CharT, _OutputIterator>::id;
 1452.53 +#endif
 1452.54 +# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1452.55 +
 1452.56 +typedef money_get<char, const char*> money_get_char;
 1452.57 +typedef money_put<char, char*> money_put_char;
 1452.58 +typedef money_get<char, istreambuf_iterator<char, char_traits<char> > > money_get_char_2;
 1452.59 +typedef money_put<char, ostreambuf_iterator<char, char_traits<char> > > money_put_char_2;
 1452.60 +
 1452.61 +#ifndef __SYMBIAN32__
 1452.62 +__DECLARE_INSTANCE(locale::id, money_get_char::id, );
 1452.63 +__DECLARE_INSTANCE(locale::id, money_put_char::id, );
 1452.64 +__DECLARE_INSTANCE(locale::id, money_get_char_2::id, );
 1452.65 +__DECLARE_INSTANCE(locale::id, money_put_char_2::id, );
 1452.66 +#endif
 1452.67 +
 1452.68 +# ifndef _STLP_NO_WCHAR_T
 1452.69 +
 1452.70 +typedef money_get<wchar_t, const wchar_t*> money_get_wchar_t;
 1452.71 +typedef money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > money_get_wchar_t_2;
 1452.72 +typedef money_put<wchar_t, wchar_t*> money_put_wchar_t;
 1452.73 +typedef money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > money_put_wchar_t_2;
 1452.74 +
 1452.75 +#ifndef __SYMBIAN32__
 1452.76 +__DECLARE_INSTANCE(locale::id, money_get_wchar_t::id, );
 1452.77 +__DECLARE_INSTANCE(locale::id, money_put_wchar_t::id, );
 1452.78 +__DECLARE_INSTANCE(locale::id, money_get_wchar_t_2::id, );
 1452.79 +__DECLARE_INSTANCE(locale::id, money_put_wchar_t_2::id, );
 1452.80 +#endif
 1452.81 +
 1452.82 +# endif
 1452.83 +# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1452.84 +
 1452.85 +// money_get facets
 1452.86 +
 1452.87 +
 1452.88 +// helper functions for do_get
 1452.89 +template <class _InIt1, class _InIt2>
 1452.90 +pair<_InIt1, bool> __get_string(_InIt1 __first,     _InIt1 __last,
 1452.91 +                               _InIt2 __str_first, _InIt2 __str_last) {
 1452.92 +  pair<_InIt1, _InIt2> __pr = mismatch(__first, __last, __str_first);
 1452.93 +  return make_pair(__pr.first, __pr.second == __str_last);
 1452.94 +}
 1452.95 +
 1452.96 +template <class _InIt, class _OuIt, class _CharT>
 1452.97 +bool
 1452.98 +__get_monetary_value(_InIt& __first, _InIt __last, _OuIt __stl_out,
 1452.99 +                     const ctype<_CharT>& _c_type,
1452.100 +                     _CharT   __point,
1452.101 +                     int      __frac_digits,
1452.102 +                     _CharT __sep,
1452.103 +                     const string& __grouping,
1452.104 +                     bool&         __syntax_ok)
1452.105 +{
1452.106 +
1452.107 +	size_t __digits = 0;
1452.108 +
1452.109 +  if (__first == __last || !_c_type.is(ctype_base::digit, *__first))
1452.110 +    return false;
1452.111 +
1452.112 +  char __group_sizes[128];
1452.113 +  char* __group_sizes_end = __grouping.size() == 0 ? 0 : __group_sizes;
1452.114 +  char   __current_group_size = 0;
1452.115 +
1452.116 +  while (__first != __last) {
1452.117 +    if (_c_type.is(ctype_base::digit, *__first)) {
1452.118 +      ++__current_group_size;
1452.119 +      *__stl_out++ = *__first++;
1452.120 +	  __digits++;
1452.121 +    }
1452.122 +#ifdef __SYMBIAN32__
1452.123 +else if ( (__current_group_size)&&(__group_sizes_end) ){
1452.124 +#else
1452.125 +    else if (__group_sizes_end) {
1452.126 +#endif		
1452.127 +      if (*__first == __sep) {
1452.128 +	*__group_sizes_end++ = __current_group_size; 
1452.129 +	__current_group_size = 0;
1452.130 +	++__first;
1452.131 +      }
1452.132 +      else break;
1452.133 +    }
1452.134 +    else
1452.135 +      break;
1452.136 +  }
1452.137 +
1452.138 +  if (__grouping.size() == 0)
1452.139 +    __syntax_ok = true;
1452.140 +  else {
1452.141 +    if (__group_sizes_end != __group_sizes)
1452.142 +     *__group_sizes_end++ = __current_group_size; 
1452.143 +    
1452.144 +    __syntax_ok = __valid_grouping(__group_sizes, __group_sizes_end,
1452.145 +                                   __grouping.data(), __grouping.data()+ __grouping.size());  
1452.146 +    
1452.147 +    if (__first == __last || *__first != __point) {
1452.148 +      for (int __digits = 0; __digits != __frac_digits; ++__digits)
1452.149 +        *__stl_out++ = _CharT('0');
1452.150 +      return true; // OK not to have decimal point
1452.151 +    }
1452.152 +  }
1452.153 +//bug fix testcase_22427 - commented
1452.154 +//  ++__first; 
1452.155 +
1452.156 +
1452.157 +  //bug fix testcase_22427 - added if
1452.158 +
1452.159 +  if (__first != __last && *__first == __point && __frac_digits)
1452.160 +  {  	
1452.161 +	//bug fix testcase_22427 - commented
1452.162 +	++__first; 
1452.163 +	  while (__first != __last && _c_type.is(ctype_base::digit, *__first)) {
1452.164 +	      *__stl_out++ = *__first++;
1452.165 +	     ++__digits;
1452.166 +	  }
1452.167 +  }
1452.168 +
1452.169 +  //bug fix testcase_22427 - condition changed
1452.170 +//  __syntax_ok = __syntax_ok && (__digits == __frac_digits);
1452.171 +  
1452.172 + if(__digits == 0)
1452.173 +  	__syntax_ok = false;
1452.174 +
1452.175 +  return true;
1452.176 +}
1452.177 +
1452.178 +# ifndef _STLP_NO_LONG_DOUBLE
1452.179 +
1452.180 +//===== methods ======
1452.181 +template <class _CharT, class _InputIter>
1452.182 +_InputIter 
1452.183 +money_get<_CharT, _InputIter>::do_get(_InputIter __s, _InputIter  __end, bool  __intl,
1452.184 +				      ios_base&  __str, ios_base::iostate& __err,
1452.185 +				      long double& __units) const {
1452.186 +  string_type __buf;
1452.187 +  __s = do_get(__s, __end, __intl, __str, __err, __buf);
1452.188 +
1452.189 +  if (__err == ios_base::goodbit || __err == ios_base::eofbit) {
1452.190 +    __buf.push_back(0);
1452.191 +    typename string_type::iterator __b = __buf.begin(), __e = __buf.end();
1452.192 +    // Can't use atold, since it might be wchar_t. Don't get confused by name below :
1452.193 +    // it's perfectly capable of reading long double.
1452.194 +    __get_decimal_integer(__b, __e, __units);
1452.195 +  }
1452.196 +  if (__s == __end)
1452.197 +    __err |= ios_base::eofbit;
1452.198 +  return __s;
1452.199 +}
1452.200 +# endif
1452.201 +
1452.202 +template <class _CharT, class _InputIter>
1452.203 +_InputIter 
1452.204 +money_get<_CharT, _InputIter>::do_get(iter_type __s, 
1452.205 +				      iter_type  __end, bool  __intl,
1452.206 +				      ios_base&  __str, ios_base::iostate&  __err,
1452.207 +				      string_type& __digits) const {
1452.208 +	__err = 0;
1452.209 +  if (__s == __end) {
1452.210 +    __err |= ios_base::eofbit;
1452.211 +    return __s;
1452.212 +  }
1452.213 +
1452.214 +  typedef moneypunct<_CharT, false> _Punct;
1452.215 +  typedef moneypunct<_CharT, true>  _Punct_intl;
1452.216 +  typedef ctype<_CharT>             _Ctype;
1452.217 +#ifdef __SYMBIAN32__			
1452.218 +	bool		__isSignSympresent = false;
1452.219 +#endif			
1452.220 +
1452.221 + bool	__testvalid = true;
1452.222 +  locale __loc = __str.getloc();
1452.223 +  const _Punct&      __punct      = use_facet<_Punct>(__loc) ;
1452.224 +  const _Punct_intl& __punct_intl = use_facet<_Punct_intl>(__loc) ;
1452.225 +  const _Ctype&      __c_type      = use_facet<_Ctype>(__loc) ;
1452.226 +                   
1452.227 +  money_base::pattern __format = __intl ? __punct_intl.neg_format()
1452.228 +                                        : __punct.neg_format();
1452.229 +  string_type __ns = __intl ? __punct_intl.negative_sign()
1452.230 +                            : __punct.negative_sign();
1452.231 +  string_type __ps = __intl ? __punct_intl.positive_sign()
1452.232 +                            : __punct.positive_sign();
1452.233 +  string_type __sign  = __ps;
1452.234 +  int __i;
1452.235 +  bool __is_positive = true;
1452.236 +  bool __symbol_required = (__str.flags() & ios_base::showbase) !=0;
1452.237 +  string_type __buf;
1452.238 +  back_insert_iterator<string_type> __stl_out(__buf);
1452.239 +//  pair<iter_type, bool> __result;
1452.240 +
1452.241 +  for (__i = 0; __i < 4; ++__i) {
1452.242 +    switch (__format.field[__i]) {
1452.243 +    case (char) money_base::none:
1452.244 +#ifndef	__SYMBIAN32__
1452.245 +	  case (char) money_base::space:
1452.246 +#endif	  	
1452.247 +
1452.248 +      if (__i == 3) {
1452.249 +        //if (__c_type.is(ctype_base::space, *__s)) { //gnu buf fix, 22/12/06
1452.250 +        if((__s != __end) && (!__c_type.is(ctype_base::space, *__s)) && (__ps.size()<=1) && (__ns.size()<=1) ){
1452.251 +          __err = ios_base::failbit;
1452.252 +          return __s;
1452.253 +        }
1452.254 +       // break; //gnu bug fix 2/1/07
1452.255 +      }
1452.256 +      while (__s != __end && __c_type.is(ctype_base::space, *__s))
1452.257 +        ++__s;
1452.258 +      break;
1452.259 +#ifdef	__SYMBIAN32__	  
1452.260 +    case (char) money_base::space:
1452.261 +      if (!__c_type.is(ctype_base::space, *__s)) {
1452.262 +#ifdef __SYMBIAN32__      
1452.263 +      	if(!__isSignSympresent) //if no sign symbol present, space is not mandatory.
1452.264 +      		break;
1452.265 +#endif      	
1452.266 +        __err = ios_base::failbit;
1452.267 +        return __s;
1452.268 +      }
1452.269 +      ++__s;
1452.270 +      while (__s != __end && __c_type.is(ctype_base::space, *__s))
1452.271 +        ++__s;
1452.272 +      break;
1452.273 +#endif	  
1452.274 +    case money_base::symbol: {
1452.275 +      string_type __curs = __intl ? __punct_intl.curr_symbol()
1452.276 +                                : __punct.curr_symbol();
1452.277 +      pair<iter_type, bool>
1452.278 +      __result  = __get_string(__s, __end, __curs.begin(), __curs.end());
1452.279 +      if (!__result.second && __symbol_required)
1452.280 +        __err = ios_base::failbit;
1452.281 +      __s = __result.first;
1452.282 +      break;
1452.283 +    }
1452.284 +    case money_base::sign: {
1452.285 +      if (__s == __end) {
1452.286 +        if (__ps.size() == 0)
1452.287 +          break;
1452.288 +        if (__ns.size() == 0) {
1452.289 +          __is_positive = false;
1452.290 +	__sign  = __ns;
1452.291 +          break;
1452.292 +        }
1452.293 +        __err = ios_base::failbit;
1452.294 +        return __s;
1452.295 +      }
1452.296 +      else {
1452.297 +        if (__ps.size() == 0) {
1452.298 +          if (__ns.size() == 0)
1452.299 +            break;
1452.300 +          if (*__s == __ns[0]) {
1452.301 +            ++__s;
1452.302 +            __is_positive = false;
1452.303 +			__sign  = __ns;
1452.304 +#ifdef __SYMBIAN32__			
1452.305 +			__isSignSympresent = true;
1452.306 +#endif			
1452.307 +
1452.308 +            break;
1452.309 +          }
1452.310 +        //  __err = ios_base::failbit; //if ps !=0 and ns!=0, and no negative sign mean it is positive, not fail.
1452.311 +	  //          return __s;
1452.312 +	  break;
1452.313 +        } 
1452.314 +        else {
1452.315 +          if (*__s == __ps[0]) {
1452.316 +            ++__s;
1452.317 +#ifdef __SYMBIAN32__			
1452.318 +			__isSignSympresent = true;
1452.319 +#endif			
1452.320 +
1452.321 +            break;
1452.322 +          }
1452.323 +#ifdef	__SYMBIAN32__
1452.324 +	    if (__ns.size() == 0) //here positive have symbol,negative have no symbol
1452.325 +	    {
1452.326 +	    	__is_positive = false; // in this case if symbol not present means it is negative
1452.327 +	    	__sign = __ns;
1452.328 +	    	break;
1452.329 +	    }
1452.330 +            
1452.331 +#else          
1452.332 +          if (__ns.size() == 0)
1452.333 +            break;
1452.334 +#endif          
1452.335 +          if (*__s == __ns[0]) {
1452.336 +            ++__s;
1452.337 +            __is_positive = false;
1452.338 +			__sign  = __ns;
1452.339 +#ifdef __SYMBIAN32__			
1452.340 +			__isSignSympresent = true;
1452.341 +#endif			
1452.342 +            break;
1452.343 +          }
1452.344 +          __err = ios_base::failbit;
1452.345 +	  //          return __s;
1452.346 +        }
1452.347 +      }
1452.348 +      return __s;
1452.349 +      //      break;
1452.350 +    }
1452.351 +    case money_base::value: {
1452.352 +      _CharT __point = __intl ? __punct_intl.decimal_point()
1452.353 +                              : __punct.decimal_point();
1452.354 +      int __frac_digits = __intl ? __punct_intl.frac_digits()
1452.355 +                                 : __punct.frac_digits();
1452.356 +      string __grouping = __intl ? __punct_intl.grouping()
1452.357 +                                 : __punct.grouping();
1452.358 +      bool __syntax_ok = true;
1452.359 +
1452.360 +      bool __result;
1452.361 +
1452.362 +      _CharT __sep = __grouping.size() == 0 ? _CharT() : 
1452.363 +	__intl ? __punct_intl.thousands_sep() : __punct.thousands_sep();
1452.364 +
1452.365 +      __result = __get_monetary_value(__s, __end, __stl_out, __c_type,
1452.366 +                                      __point, __frac_digits,
1452.367 +                                      __sep,
1452.368 +                                      __grouping, __syntax_ok);      
1452.369 +
1452.370 +      if (!__syntax_ok)
1452.371 +        __err |= ios_base::failbit;
1452.372 +      if (!__result) {
1452.373 +        __err = ios_base::failbit;
1452.374 +        return __s;
1452.375 +      }
1452.376 +      break;
1452.377 +      
1452.378 +    }                           // Close money_base::value case
1452.379 +
1452.380 +
1452.381 +    }                           // Close switch statement
1452.382 +  }                             // Close for loop
1452.383 +
1452.384 +#ifndef __SYMBIAN32__ //find the given number pos or neg, required for cases where sign is present at string starting and ending
1452.385 +	do{
1452.386 +	bool type = true;
1452.387 +
1452.388 +	int si = __ps.size();
1452.389 +	for (int i = 1;i<__ps.size();i++)
1452.390 +		{
1452.391 +			if(__s[i-1]!=__ps[i])
1452.392 +			{
1452.393 +				type = false;
1452.394 +				break;
1452.395 +			}
1452.396 +		}
1452.397 +	
1452.398 +	if ((si!=0) && (type ==true))
1452.399 +	{
1452.400 +		__sign = __ps;
1452.401 +            break;
1452.402 +	}  
1452.403 +          if (__ns.size() == 0)
1452.404 +            break;
1452.405 +	type = true;
1452.406 +	for (int i =1;i<__ns.size();i++)
1452.407 +		{
1452.408 +			if(__s[i-1]!=__ns[i])
1452.409 +			{
1452.410 +				type = false;
1452.411 +				break;
1452.412 +			}
1452.413 +		}
1452.414 +          if (type ==true) {
1452.415 +            __is_positive = false;
1452.416 +		__sign = __ns;
1452.417 +            break;
1452.418 +          }
1452.419 +	}while(0);
1452.420 +
1452.421 +#endif
1452.422 +
1452.423 +
1452.424 +#ifdef __SYMBIAN32__
1452.425 +// Need to get the rest of the sign characters, if they exist.
1452.426 +      if (__sign.size() > 1)
1452.427 +        {
1452.428 +          int __len = __sign.size();
1452.429 +          int __i = 1;
1452.430 +	  char_type __c = *__s;
1452.431 +	  char_type __eol = '\0';
1452.432 +          for (; __c != __eol && __i < __len; __i++)
1452.433 +          	{
1452.434 +            	if (__s != __end)
1452.435 +              	__c = *(++__s);
1452.436 +            	
1452.437 +          }
1452.438 +		  //checking sign completely extracted successfully
1452.439 +		 
1452.440 +          if (__i != __len)
1452.441 +            __testvalid = false;
1452.442 +        }
1452.443 +
1452.444 +#endif
1452.445 +
1452.446 +  if (__is_positive) {
1452.447 +    if (__ps.size() > 1) {
1452.448 +#ifndef __SYMBIAN32__		
1452.449 +      pair<_InputIter, bool>
1452.450 +        __result = __get_string(__s, __end, __ps.begin() + 1, __ps.end());
1452.451 +      __s = __result.first;
1452.452 +      if (!__result.second)
1452.453 +	__err |= ios::failbit;
1452.454 +#endif
1452.455 +	if(!__testvalid)
1452.456 +		__err |= ios::failbit;
1452.457 +    }
1452.458 +    if (!(__err & ios_base::failbit))
1452.459 +      __digits = __buf;
1452.460 +  }
1452.461 +  else {
1452.462 +    if (__ns.size() > 1) {
1452.463 +#ifndef __SYMBIAN32__		
1452.464 +      pair<_InputIter, bool>
1452.465 +        __result = __get_string(__s, __end, __ns.begin() + 1, __ns.end());
1452.466 +      __s = __result.first;
1452.467 +      if (!__result.second)
1452.468 +	__err |= ios::failbit;
1452.469 +#endif
1452.470 +	if(!__testvalid)
1452.471 +		__err |= ios::failbit;
1452.472 +    }
1452.473 +    if (!(__err & ios::failbit) && (__ns == __sign)) {
1452.474 +      __buf.insert(__buf.begin(),__c_type.widen('-'));      
1452.475 +    }
1452.476 +#ifdef __SYMBIAN32__	
1452.477 +  if (!(__err & ios_base::failbit))
1452.478 +      __digits = __buf;	
1452.479 +#else  
1452.480 +   __digits = __buf;	
1452.481 +#endif
1452.482 +  }
1452.483 +  if (__s == __end)
1452.484 +    __err |= ios::eofbit;
1452.485 +
1452.486 +  return __s;
1452.487 +}
1452.488 +
1452.489 +// money_put facets
1452.490 +
1452.491 +template <class _CharT, class _OutputIter>
1452.492 +_OutputIter
1452.493 +money_put<_CharT, _OutputIter>
1452.494 + ::do_put(_OutputIter __s, bool __intl, ios_base& __str,
1452.495 +          char_type __fill,
1452.496 +          const string_type& __digits) const { 
1452.497 +  typedef ctype<_CharT>             _Ctype;
1452.498 +  typedef moneypunct<_CharT, false> _Punct;
1452.499 +  typedef moneypunct<_CharT, true>  _Punct_intl;
1452.500 +
1452.501 +  locale __loc = __str.getloc();
1452.502 +  const _Ctype&      __c_type      = use_facet<_Ctype>(__loc) ;
1452.503 +  const _Punct&      __punct      = use_facet<_Punct>(__loc) ;
1452.504 +  const _Punct_intl& __punct_intl = use_facet<_Punct_intl>(__loc) ;
1452.505 +
1452.506 +  // some special characters
1452.507 +
1452.508 +  char_type __minus = __c_type.widen('-');
1452.509 +  char_type __plus  = __c_type.widen('+');
1452.510 +  char_type __space = __c_type.widen(' ');
1452.511 +  char_type __zero  = __c_type.widen('0');
1452.512 +  char_type __point = __intl ? __c_type.widen(__punct_intl.decimal_point())
1452.513 +			     : __c_type.widen(__punct.decimal_point());
1452.514 +
1452.515 +  char_type __sep = __intl ? __punct_intl.thousands_sep()
1452.516 +			   : __punct     .thousands_sep();
1452.517 +
1452.518 +  string __grouping = __intl ? __punct_intl.grouping()
1452.519 +		             : __punct     .grouping();
1452.520 +				
1452.521 +  int __frac_digits      = __intl ? __punct_intl.frac_digits() 
1452.522 +                                  : __punct.frac_digits();
1452.523 +
1452.524 +  string_type __curr_sym = __intl ? __punct_intl.curr_symbol() 
1452.525 +                                  : __punct.curr_symbol();
1452.526 +
1452.527 +    // if there are no digits we are going to return __s.  If there
1452.528 +    // are digits, but not enough to fill the frac_digits, we are
1452.529 +    // going to add zeros.  I don't know whether this is right or
1452.530 +    // not.
1452.531 +
1452.532 +  if (__digits.size() == 0) 
1452.533 +    return __s;
1452.534 +
1452.535 +  typename string_type::const_iterator __digits_first = __digits.begin();
1452.536 +  typename string_type::const_iterator __digits_last  = __digits.end();
1452.537 +
1452.538 +  bool __is_negative = *__digits_first == __minus;
1452.539 +  if (__is_negative)
1452.540 +    ++__digits_first;
1452.541 +
1452.542 +  string_type __sign = __intl ?
1452.543 +			 __is_negative ? __punct_intl.negative_sign()
1452.544 +				       : __punct_intl.positive_sign()
1452.545 +			      :
1452.546 +			 __is_negative ? __punct.negative_sign()
1452.547 +				       : __punct.positive_sign();
1452.548 +  typename string_type::const_iterator __cp = __digits_first;
1452.549 +  while (__cp != __digits_last && __c_type.is(ctype_base::digit, *__cp))
1452.550 +    ++__cp;
1452.551 +  if (__cp == __digits_first)
1452.552 +    return __s;
1452.553 +  __digits_last = __cp;
1452.554 +
1452.555 +  // If grouping is required, we make a copy of __digits and
1452.556 +  // insert the grouping.
1452.557 +
1452.558 +  // To handle the fractional digits, we augment the first group
1452.559 +  // by frac_digits.  If there is only one group, we need first
1452.560 +  // to duplicate it.
1452.561 +
1452.562 +  string_type __new_digits(__digits_first, __digits_last);
1452.563 +#ifdef	__SYMBIAN32__
1452.564 +	int __numberofseperators = 0;
1452.565 +	if (__grouping.size()>0)
1452.566 +	__numberofseperators = (__new_digits.size()/__grouping[0])+1;
1452.567 +	else
1452.568 +		__numberofseperators = 0;
1452.569 +  __new_digits.resize(__new_digits.size()+__numberofseperators);
1452.570 +#endif  
1452.571 +  if (__grouping.size() != 0) {
1452.572 +    if (__grouping.size() == 1)
1452.573 +      __grouping.push_back(__grouping[0]);
1452.574 +    __grouping[0] += __frac_digits;
1452.575 +    _CharT* __data_ptr = __CONST_CAST(_CharT*,__new_digits.data());
1452.576 +    _CharT* __data_end = __data_ptr + __new_digits.size();
1452.577 +    
1452.578 +    
1452.579 +    ptrdiff_t __value_length = __insert_grouping(__data_ptr,
1452.580 +#ifdef	__SYMBIAN32__	    
1452.581 +	  				         __data_end-__numberofseperators,
1452.582 +#else
1452.583 +							__data_end,
1452.584 +#endif	  				         
1452.585 +					         __grouping,
1452.586 +					         __sep,
1452.587 +					         __plus, __minus, 0);
1452.588 +    __digits_first = __new_digits.begin();
1452.589 +    __digits_last  = __digits_first + __value_length;
1452.590 +  }
1452.591 +
1452.592 +  // Determine the amount of padding required, if any.  
1452.593 +#ifdef	__SYMBIAN32__
1452.594 +	  int __width        = __str.width(); //width returns signed value.
1452.595 +#else    
1452.596 +  size_t __width        = __str.width();
1452.597 +#endif
1452.598 +
1452.599 +#if defined(_STLP_DEBUG) && (defined(__HP_aCC) || (__HP_aCC <= 1))
1452.600 +  size_t __value_length = operator -(__digits_last, __digits_first);
1452.601 +#else
1452.602 +  size_t __value_length = __digits_last - __digits_first;
1452.603 +#endif
1452.604 +
1452.605 +  size_t __length       = __value_length;
1452.606 +      
1452.607 +  __length += __sign.size();
1452.608 +  if (__frac_digits != 0)
1452.609 +    ++__length;
1452.610 +
1452.611 +  bool __generate_curr = (__str.flags() & ios_base::showbase) !=0;
1452.612 +  if (__generate_curr)
1452.613 +    __length += __curr_sym.size();
1452.614 +  money_base::pattern __format =
1452.615 +    __intl ? (__is_negative ? __punct_intl.neg_format() 
1452.616 +                            : __punct_intl.pos_format())
1452.617 +           : (__is_negative ? __punct.neg_format() 
1452.618 +                            : __punct.pos_format());
1452.619 +  {
1452.620 +    for (int __i = 0; __i < 4; ++__i)
1452.621 +      if (__format.field[__i] == (char) money_base::space)
1452.622 +        ++__length;
1452.623 +  }
1452.624 +
1452.625 +  size_t __fill_amt = (int)__length < __width ? __width - __length : 0;
1452.626 +
1452.627 +  ios_base::fmtflags __fill_pos = __str.flags() & ios_base::adjustfield;
1452.628 +
1452.629 +  if (__fill_amt != 0 &&
1452.630 +      !(__fill_pos & (ios_base::left | ios_base::internal)))
1452.631 +    __s = fill_n(__s, __fill_amt, __fill);
1452.632 +    
1452.633 +  for (int __i = 0; __i < 4; ++__i) {
1452.634 +    char __ffield = __format.field[__i];
1452.635 +    if (__ffield == money_base::none) {
1452.636 +      if (__fill_amt != 0 && __fill_pos == ios_base::internal)
1452.637 +        __s = fill_n(__s, __fill_amt, __fill);
1452.638 +    }
1452.639 +    else if (__ffield == money_base::space) {
1452.640 +#ifdef __SYMBIAN32__
1452.641 +	if(__fill != __space)
1452.642 +		*__s++ = __fill;
1452.643 +	else
1452.644 +#endif		
1452.645 +      *__s++ = __space;
1452.646 +      if (__fill_amt != 0 && __fill_pos == ios_base::internal)
1452.647 +        __s = fill_n(__s, __fill_amt, __fill);
1452.648 +    }
1452.649 +    else if (__ffield == money_base::symbol) {
1452.650 +      if (__generate_curr)
1452.651 +        __s = copy(__curr_sym.begin(), __curr_sym.end(), __s);
1452.652 +    }
1452.653 +    else if (__ffield == money_base::sign) {
1452.654 +      if (__sign.size() != 0)
1452.655 +        *__s++ = __sign[0];
1452.656 +    }
1452.657 +    else if (__ffield == money_base::value) {
1452.658 +      if (__frac_digits == 0)
1452.659 +        __s = copy(__digits_first, __digits_last, __s);
1452.660 +      else {
1452.661 +        if ((int)__value_length <= __frac_digits) {
1452.662 +          *__s++ = __point;
1452.663 +          __s = copy(__digits_first, __digits_last, __s);
1452.664 +          __s =  fill_n(__s, __frac_digits - __value_length, __zero);
1452.665 +        }
1452.666 +        else {
1452.667 +#ifdef	__SYMBIAN32__
1452.668 +	  if (__frac_digits>0)
1452.669 +	  	{
1452.670 +#endif	  	
1452.671 +          __s = copy(__digits_first, __digits_last - __frac_digits, __s);
1452.672 +          if (__frac_digits != 0) {
1452.673 +            *__s++ = __point;
1452.674 +            __s = copy(__digits_last - __frac_digits, __digits_last, __s);
1452.675 +#ifdef	__SYMBIAN32__
1452.676 +	          }
1452.677 +#endif			  
1452.678 +          }
1452.679 +        }
1452.680 +      }
1452.681 +    }
1452.682 +  } // Close for loop
1452.683 +
1452.684 +  // Ouput rest of sign if necessary.
1452.685 +
1452.686 +  if (__sign.size() > 1)
1452.687 +    __s = copy(__sign.begin() + 1, __sign.end(), __s);
1452.688 +  if (!(__fill_pos & (ios_base::right | ios_base::internal)))
1452.689 +    __s = fill_n(__s, __fill_amt, __fill);
1452.690 +  
1452.691 +#ifdef __SYMBIAN32__
1452.692 +	__str.width(0);
1452.693 +#endif
1452.694 +  return __s;
1452.695 +}
1452.696 +
1452.697 +#ifdef	__SYMBIAN32__
1452.698 +/*
1452.699 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.700 +moneypunct<_CharT, _International>::moneypunct(size_t __refs = 0):_BaseFacet(__refs)
1452.701 +{ 
1452.702 +	
1452.703 +	
1452.704 +}*/
1452.705 +
1452.706 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.707 +_CharT        moneypunct<_CharT,_International>::do_decimal_point() const
1452.708 +{
1452.709 +	return _CharT('.');
1452.710 +}
1452.711 +
1452.712 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.713 +_CharT        moneypunct<_CharT,_International>::do_thousands_sep() const
1452.714 +{
1452.715 +	return _CharT(',');
1452.716 +}
1452.717 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.718 +basic_string<_CharT>      moneypunct<_CharT,_International>::do_curr_symbol()   const
1452.719 +{
1452.720 +	return _M_currSym;
1452.721 +}
1452.722 +
1452.723 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.724 +basic_string<_CharT>      moneypunct<_CharT,_International>::do_positive_sign()   const
1452.725 +{
1452.726 +	return _M_psign;
1452.727 +}
1452.728 +
1452.729 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.730 +basic_string<_CharT>      moneypunct<_CharT,_International>::do_negative_sign()   const
1452.731 +{
1452.732 +	return _M_nsign;
1452.733 +}
1452.734 +
1452.735 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.736 +string      moneypunct<_CharT,_International>::do_grouping()   const
1452.737 +{
1452.738 +	return _M_group;
1452.739 +}
1452.740 +
1452.741 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.742 +money_base::pattern        moneypunct<_CharT,_International>::do_pos_format()   const
1452.743 +{
1452.744 +	return _M_pos_format;
1452.745 +}
1452.746 +
1452.747 +template<class _CharT, bool _International>//__DFL_NON_TYPE_PARAM(bool, _International, false)>
1452.748 +money_base::pattern        moneypunct<_CharT,_International>::do_neg_format()   const
1452.749 +{
1452.750 +	return _M_neg_format;
1452.751 +}
1452.752 +
1452.753 +template<class _CharT, bool _International>
1452.754 +int       moneypunct<_CharT,_International>::do_frac_digits()   const
1452.755 +{
1452.756 +	return 0;
1452.757 +}
1452.758 +
1452.759 +
1452.760 +//monetary_byname<any>
1452.761 +
1452.762 +template<class _CharT, bool _International>
1452.763 +_CharT moneypunct_byname<_CharT, _International>::do_decimal_point() const 
1452.764 +  {return _Locale_mon_decimal_pointE(_M_monetary);}
1452.765 +
1452.766 +template<class _CharT, bool _International>
1452.767 +_CharT moneypunct_byname<_CharT, _International>::do_thousands_sep() const
1452.768 +  {return _Locale_mon_thousands_sepE(_M_monetary);}
1452.769 +
1452.770 +template<class _CharT, bool _International>
1452.771 +string  moneypunct_byname<_CharT, _International>::do_grouping() const
1452.772 +  {return moneypunct<_CharT,_International>::_M_group;}
1452.773 +
1452.774 +template<class _CharT, bool _International>
1452.775 +basic_string<_CharT> moneypunct_byname<_CharT, _International>::do_curr_symbol() const
1452.776 +  {return moneypunct<_CharT,_International>::_M_currSym;}
1452.777 +
1452.778 +template<class _CharT, bool _International>
1452.779 +basic_string<_CharT> moneypunct_byname<_CharT, _International>::do_positive_sign() const
1452.780 +  {return moneypunct<_CharT,_International>::_M_psign;}
1452.781 +
1452.782 +template<class _CharT, bool _International>
1452.783 +basic_string<_CharT> moneypunct_byname<_CharT, _International>::do_negative_sign() const
1452.784 +  {return moneypunct<_CharT,_International>::_M_nsign;}
1452.785 +
1452.786 +template<class _CharT, bool _International>
1452.787 +int moneypunct_byname<_CharT, _International>::do_frac_digits() const 
1452.788 +  {return _Locale_int_frac_digitsE(_M_monetary);}
1452.789 +
1452.790 +template<class _CharT, bool _International>
1452.791 +void moneypunct_byname<_CharT, _International>::Convert_string2_string_chart(basic_string<_CharT> &dst, string src)
1452.792 +	{
1452.793 +		int length = src.length();
1452.794 +		const char* str = src.c_str();
1452.795 +		for(int i = 0; i<length;i++)
1452.796 +		{
1452.797 +			dst.append(1, (_CharT)*str++);
1452.798 +			
1452.799 +		}
1452.800 +			
1452.801 +	}
1452.802 +
1452.803 +template<class _CharT, bool _International>
1452.804 +moneypunct_byname<_CharT, _International>::moneypunct_byname(const char * name,
1452.805 +						  size_t refs):
1452.806 +  moneypunct<_CharT, _International>(refs),
1452.807 +  _M_monetary(__acquire_monetaryE(name))
1452.808 +{
1452.809 +  if (!_M_monetary)
1452.810 +    locale::_M_throw_runtime_error();
1452.811 +  
1452.812 +  		moneypunct<_CharT,_International>::_M_group = _Locale_mon_groupingE(_M_monetary);
1452.813 +		Convert_string2_string_chart(moneypunct<_CharT,_International>::_M_psign, _Locale_positive_signE(_M_monetary));
1452.814 +		Convert_string2_string_chart(moneypunct<_CharT,_International>::_M_nsign, _Locale_negative_signE(_M_monetary));
1452.815 +		Convert_string2_string_chart(moneypunct<_CharT,_International>::_M_currSym, _Locale_int_curr_symbolE(_M_monetary));
1452.816 +}
1452.817 +
1452.818 +template<class _CharT, bool _International>
1452.819 +moneypunct_byname<_CharT, _International>::~moneypunct_byname()
1452.820 +{
1452.821 +  __release_monetaryE(_M_monetary);
1452.822 +}
1452.823 +
1452.824 +
1452.825 +#endif
1452.826 +_STLP_END_NAMESPACE
1452.827 +
1452.828 +# endif /* EXPOSE */
1452.829 +
1452.830 +#endif /* _STLP_MONETARY_C */
  1453.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1453.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_monetary.h	Wed Mar 31 12:27:01 2010 +0100
  1453.3 @@ -0,0 +1,641 @@
  1453.4 +/*
  1453.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1453.6 + *
  1453.7 + * Copyright (c) 1999
  1453.8 + * Silicon Graphics Computer Systems, Inc.
  1453.9 + *
 1453.10 + * Copyright (c) 1999 
 1453.11 + * Boris Fomitchev
 1453.12 + *
 1453.13 + * This material is provided "as is", with absolutely no warranty expressed
 1453.14 + * or implied. Any use is at your own risk.
 1453.15 + *
 1453.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1453.17 + * without fee, provided the above notices are retained on all copies.
 1453.18 + * Permission to modify the code and to distribute modified code is granted,
 1453.19 + * provided the above notices are retained, and a notice that the code was
 1453.20 + * modified is included with the above copyright notice.
 1453.21 + *
 1453.22 + */ 
 1453.23 +// WARNING: This is an internal header file, included by other C++
 1453.24 +// standard library headers.  You should not attempt to use this header
 1453.25 +// file directly.
 1453.26 +
 1453.27 +
 1453.28 +#ifndef _STLP_INTERNAL_MONETARY_H
 1453.29 +#define _STLP_INTERNAL_MONETARY_H
 1453.30 +
 1453.31 +#ifndef _STLP_INTERNAL_CTYPE_H
 1453.32 +# include <stl/_ctype.h>
 1453.33 +#endif
 1453.34 +
 1453.35 +#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1453.36 +# include <stl/_ostreambuf_iterator.h>
 1453.37 +#endif
 1453.38 +
 1453.39 +#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1453.40 +# include <stl/_istreambuf_iterator.h>
 1453.41 +#endif
 1453.42 +
 1453.43 +_STLP_BEGIN_NAMESPACE
 1453.44 +
 1453.45 +class money_base {
 1453.46 +public:
 1453.47 +  enum part {none, space, symbol, sign, value};
 1453.48 +  struct pattern {
 1453.49 +    char field[4];
 1453.50 +  };
 1453.51 +};
 1453.52 +
 1453.53 +
 1453.54 +#ifdef __SYMBIAN32__
 1453.55 +
 1453.56 +extern locale::id& Moneypunct_charT_GetFacetLocaleId(const char* type);
 1453.57 +_STLP_DECLSPEC void _Init_monetary_formatsE(money_base::pattern& pos_format,
 1453.58 +				   money_base::pattern& neg_format);
 1453.59 +
 1453.60 +template <class _CharT, __DFL_NON_TYPE_PARAM(bool, _International, false) > 
 1453.61 +class moneypunct : public locale::facet , public money_base
 1453.62 +{
 1453.63 +public:
 1453.64 +  typedef _CharT                 		char_type;
 1453.65 +  typedef basic_string<_CharT>		string_type;
 1453.66 +  explicit moneypunct _STLP_PSPEC2(_CharT, _International) (size_t __refs = 0)
 1453.67 +  	{
 1453.68 +  		_Init_monetary_formatsE(_M_pos_format, _M_neg_format);
 1453.69 +  	}
 1453.70 +  _CharT        decimal_point() const { return do_decimal_point(); }
 1453.71 +  _CharT         thousands_sep() const { return do_thousands_sep(); }
 1453.72 +  string      grouping()      const { return do_grouping(); }
 1453.73 +  string_type curr_symbol()   const { return do_curr_symbol(); }
 1453.74 +  string_type positive_sign() const { return do_positive_sign(); }
 1453.75 +  string_type negative_sign() const { return do_negative_sign(); }
 1453.76 +  int         frac_digits()   const { return do_frac_digits(); }
 1453.77 +  pattern     pos_format()    const { return do_pos_format(); }
 1453.78 +  pattern     neg_format()    const { return do_neg_format(); }
 1453.79 +  #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1453.80 +    static locale::id& GetFacetLocaleId(){return Moneypunct_charT_GetFacetLocaleId(typeid(_CharT).name());  };
 1453.81 +#else
 1453.82 +   static locale::id id;
 1453.83 +#endif
 1453.84 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
 1453.85 +  enum _IntlVal { intl = _International } ;
 1453.86 +# else
 1453.87 +  static const bool intl = _International;
 1453.88 +# endif
 1453.89 +
 1453.90 +protected:
 1453.91 +  pattern _M_pos_format;
 1453.92 +  pattern _M_neg_format;
 1453.93 +  
 1453.94 +  static string_type	 _M_psign, _M_nsign, _M_currSym;
 1453.95 +  static string _M_group;
 1453.96 + ~moneypunct _STLP_PSPEC2(char, true) () { };
 1453.97 +
 1453.98 + virtual _CharT        do_decimal_point() const;
 1453.99 + virtual _CharT        do_thousands_sep() const;
1453.100 + virtual string      do_grouping()      const;
1453.101 +
1453.102 + virtual basic_string<_CharT>      do_curr_symbol()   const;
1453.103 +
1453.104 + virtual basic_string<_CharT>      do_positive_sign() const;
1453.105 + virtual basic_string<_CharT>      do_negative_sign() const;
1453.106 + virtual int         do_frac_digits()   const;
1453.107 + virtual pattern     do_pos_format()    const;
1453.108 + virtual pattern     do_neg_format()    const;
1453.109 +
1453.110 +  friend class _Locale;
1453.111 +
1453.112 +};
1453.113 +template <class _CharT, bool  _International> 
1453.114 +string	moneypunct<_CharT, _International>::_M_group;
1453.115 +template <class _CharT, bool  _International> 
1453.116 +basic_string<_CharT>	moneypunct<_CharT, _International>::_M_psign;
1453.117 +template <class _CharT, bool  _International> 
1453.118 +basic_string<_CharT>	moneypunct<_CharT, _International>::_M_nsign;
1453.119 +template <class _CharT, bool  _International> 
1453.120 +basic_string<_CharT>	moneypunct<_CharT, _International>::_M_currSym;
1453.121 +
1453.122 +
1453.123 +#else
1453.124 +// moneypunct facets: forward declaration
1453.125 +template <class _charT, __DFL_NON_TYPE_PARAM(bool, _International, false) > class moneypunct {};
1453.126 +#endif
1453.127 +
1453.128 +// money_get facets
1453.129 +
1453.130 +template <class _CharT, __DFL_TMPL_PARAM(_InputIter , istreambuf_iterator<_CharT>) >
1453.131 +class money_get : public locale::facet 
1453.132 +{
1453.133 +  friend class _Locale;
1453.134 +public:
1453.135 +  typedef _CharT               char_type;
1453.136 +  typedef _InputIter           iter_type;
1453.137 +  typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1453.138 +
1453.139 +  money_get(size_t __refs = 0) : _BaseFacet(__refs) {}
1453.140 +# ifndef _STLP_NO_LONG_DOUBLE
1453.141 +  iter_type get(iter_type __s, iter_type  __end, bool __intl,
1453.142 +                ios_base&  __str, ios_base::iostate&  __err,
1453.143 +                long double& __units) const
1453.144 +    { return do_get(__s,  __end, __intl,  __str,  __err, __units); }
1453.145 +# endif  
1453.146 +  iter_type get(iter_type __s, iter_type  __end, bool __intl,
1453.147 +                ios_base&  __str, ios_base::iostate& __err,
1453.148 +                string_type& __digits) const
1453.149 +    { return do_get(__s,  __end, __intl,  __str,  __err, __digits); }
1453.150 +
1453.151 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1453.152 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1453.153 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* );
1453.154 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1453.155 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* );
1453.156 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char **);
1453.157 +#else
1453.158 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1453.159 +#endif
1453.160 +
1453.161 +protected:
1453.162 +  ~money_get() {}
1453.163 +# ifndef _STLP_NO_LONG_DOUBLE
1453.164 +  virtual iter_type do_get(iter_type __s, iter_type  __end, bool  __intl,
1453.165 +                           ios_base&  __str, ios_base::iostate& __err,
1453.166 +                           long double& __units) const;
1453.167 +# endif
1453.168 +  virtual iter_type do_get(iter_type __s, iter_type __end, bool __intl,
1453.169 +                           ios_base&  __str, ios_base::iostate& __err,
1453.170 +                           string_type& __digits) const;
1453.171 +};
1453.172 +
1453.173 +
1453.174 +// moneypunct facets: definition of specializations
1453.175 +
1453.176 +_STLP_TEMPLATE_NULL
1453.177 +#ifdef __SYMBIAN32__
1453.178 +class moneypunct<char, true> : public locale::facet, public money_base
1453.179 +#else
1453.180 +class _STLP_CLASS_DECLSPEC moneypunct<char, true> : public locale::facet, public money_base
1453.181 +#endif
1453.182 +{
1453.183 +
1453.184 +public:
1453.185 +  typedef char                 char_type;
1453.186 +  typedef string               string_type;
1453.187 +_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(char, true) (size_t __refs = 0);
1453.188 +
1453.189 +  char        decimal_point() const { return do_decimal_point(); }
1453.190 +  char        thousands_sep() const { return do_thousands_sep(); }
1453.191 +  string      grouping()      const { return do_grouping(); }
1453.192 +  string_type curr_symbol()   const { return do_curr_symbol(); }
1453.193 +  string_type positive_sign() const { return do_positive_sign(); }
1453.194 +  string_type negative_sign() const { return do_negative_sign(); }
1453.195 +  int         frac_digits()   const { return do_frac_digits(); }
1453.196 +  pattern     pos_format()    const { return do_pos_format(); }
1453.197 +  pattern     neg_format()    const { return do_neg_format(); }
1453.198 +
1453.199 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1453.200 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1453.201 +#else
1453.202 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1453.203 +#endif
1453.204 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
1453.205 +  enum _IntlVal { intl = 1 } ;
1453.206 +# else
1453.207 +  static const bool intl = true;
1453.208 +# endif
1453.209 +
1453.210 +protected:
1453.211 +  pattern _M_pos_format;
1453.212 +  pattern _M_neg_format;
1453.213 +
1453.214 +_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(char, true) ();
1453.215 +
1453.216 +_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1453.217 +  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1453.218 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.219 +
1453.220 +_STLP_DECLSPEC   virtual string      do_curr_symbol()   const;
1453.221 +
1453.222 +_STLP_DECLSPEC   virtual string      do_positive_sign() const;
1453.223 +_STLP_DECLSPEC   virtual string      do_negative_sign() const;
1453.224 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.225 +_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1453.226 +_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1453.227 +
1453.228 +  friend class _Locale;
1453.229 +
1453.230 +};
1453.231 +
1453.232 +_STLP_TEMPLATE_NULL
1453.233 +#ifdef __SYMBIAN32__
1453.234 +class moneypunct<char, false> : public locale::facet, public money_base
1453.235 +#else
1453.236 +class _STLP_CLASS_DECLSPEC moneypunct<char, false> : public locale::facet, public money_base
1453.237 +#endif
1453.238 +{
1453.239 +public:
1453.240 +  typedef char                 char_type;
1453.241 +  typedef string               string_type;
1453.242 +
1453.243 +_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(char, false) (size_t __refs = 0);
1453.244 +
1453.245 +  char        decimal_point() const { return do_decimal_point(); }
1453.246 +  char        thousands_sep() const { return do_thousands_sep(); }
1453.247 +  string      grouping()      const { return do_grouping(); }
1453.248 +  string_type curr_symbol()   const { return do_curr_symbol(); }
1453.249 +  string_type positive_sign() const { return do_positive_sign(); }
1453.250 +  string_type negative_sign() const { return do_negative_sign(); }
1453.251 +  int         frac_digits()   const { return do_frac_digits(); }
1453.252 +  pattern     pos_format()    const { return do_pos_format(); }
1453.253 +  pattern     neg_format()    const { return do_neg_format(); }
1453.254 +
1453.255 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1453.256 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1453.257 +#else
1453.258 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1453.259 +#endif
1453.260 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
1453.261 +  enum _IntlVal { intl = 0 } ;
1453.262 +# else
1453.263 +  static const bool intl = false;
1453.264 +# endif
1453.265 +
1453.266 +protected:
1453.267 +  pattern _M_pos_format;
1453.268 +  pattern _M_neg_format;
1453.269 +
1453.270 +_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(char, false) ();
1453.271 +
1453.272 +_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1453.273 +  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1453.274 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.275 +
1453.276 +_STLP_DECLSPEC   virtual string      do_curr_symbol()   const;
1453.277 +
1453.278 +_STLP_DECLSPEC   virtual string      do_positive_sign() const;
1453.279 +_STLP_DECLSPEC   virtual string      do_negative_sign() const;
1453.280 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.281 +_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1453.282 +_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1453.283 +
1453.284 +  friend class _Locale;
1453.285 +};
1453.286 +
1453.287 +
1453.288 +# ifndef _STLP_NO_WCHAR_T
1453.289 +
1453.290 +_STLP_TEMPLATE_NULL
1453.291 +#ifdef __SYMBIAN32__
1453.292 +class moneypunct<wchar_t, true> : public locale::facet, public money_base
1453.293 +#else
1453.294 +class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, true> : public locale::facet, public money_base
1453.295 +#endif
1453.296 +{
1453.297 +  friend class _Locale;
1453.298 +public:
1453.299 +  typedef wchar_t                 char_type;
1453.300 +  typedef wstring                 string_type;
1453.301 +_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(wchar_t, true) (size_t __refs = 0);
1453.302 +  wchar_t     decimal_point() const { return do_decimal_point(); }
1453.303 +  wchar_t     thousands_sep() const { return do_thousands_sep(); }
1453.304 +  string      grouping()      const { return do_grouping(); }
1453.305 +  string_type curr_symbol()   const { return do_curr_symbol(); }
1453.306 +  string_type positive_sign() const { return do_positive_sign(); }
1453.307 +  string_type negative_sign() const { return do_negative_sign(); }
1453.308 +  int         frac_digits()   const { return do_frac_digits(); }
1453.309 +  pattern     pos_format()    const { return do_pos_format(); }
1453.310 +  pattern     neg_format()    const { return do_neg_format(); }
1453.311 +
1453.312 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1453.313 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1453.314 +#else
1453.315 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1453.316 +#endif
1453.317 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
1453.318 +  enum _IntlVal { intl = 1 } ;
1453.319 +# else
1453.320 +  static const bool intl = true;
1453.321 +# endif
1453.322 +
1453.323 +protected:
1453.324 +  pattern _M_pos_format;
1453.325 +  pattern _M_neg_format;
1453.326 +
1453.327 +_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(wchar_t, true) ();
1453.328 +
1453.329 +_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1453.330 +  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1453.331 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.332 +
1453.333 +_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1453.334 +
1453.335 +_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1453.336 +_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1453.337 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.338 +_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1453.339 +_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1453.340 +};
1453.341 +
1453.342 +
1453.343 +_STLP_TEMPLATE_NULL
1453.344 +#ifdef __SYMBIAN32__
1453.345 +class moneypunct<wchar_t, false> : public locale::facet, public money_base
1453.346 +#else
1453.347 +class _STLP_CLASS_DECLSPEC moneypunct<wchar_t, false> : public locale::facet, public money_base
1453.348 +#endif
1453.349 +{
1453.350 +  friend class _Locale;
1453.351 +public:
1453.352 +  typedef wchar_t                 char_type;
1453.353 +  typedef wstring                 string_type;
1453.354 +_STLP_DECLSPEC   explicit moneypunct _STLP_PSPEC2(wchar_t, false) (size_t __refs = 0);
1453.355 +  wchar_t     decimal_point() const { return do_decimal_point(); }
1453.356 +  wchar_t     thousands_sep() const { return do_thousands_sep(); }
1453.357 +  string      grouping()      const { return do_grouping(); }
1453.358 +  string_type curr_symbol()   const { return do_curr_symbol(); }
1453.359 +  string_type positive_sign() const { return do_positive_sign(); }
1453.360 +  string_type negative_sign() const { return do_negative_sign(); }
1453.361 +  int         frac_digits()   const { return do_frac_digits(); }
1453.362 +  pattern     pos_format()    const { return do_pos_format(); }
1453.363 +  pattern     neg_format()    const { return do_neg_format(); }
1453.364 +
1453.365 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1453.366 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1453.367 +#else
1453.368 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1453.369 +#endif
1453.370 +# if defined (_STLP_STATIC_CONST_INIT_BUG)
1453.371 +  enum _IntlVal { intl = 0 } ;
1453.372 +# else
1453.373 +  static const bool intl = false;
1453.374 +# endif
1453.375 +
1453.376 +protected:
1453.377 +  pattern _M_pos_format;
1453.378 +  pattern _M_neg_format;
1453.379 +
1453.380 +_STLP_DECLSPEC   ~moneypunct _STLP_PSPEC2(wchar_t, false) ();
1453.381 +
1453.382 +_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1453.383 +  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1453.384 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.385 +
1453.386 +_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1453.387 +
1453.388 +_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1453.389 +_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1453.390 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.391 +_STLP_DECLSPEC   virtual pattern     do_pos_format()    const;
1453.392 +_STLP_DECLSPEC   virtual pattern     do_neg_format()    const;
1453.393 +};
1453.394 +
1453.395 +# endif
1453.396 +
1453.397 +
1453.398 +#ifdef __SYMBIAN32__
1453.399 +_STLP_DECLSPEC  _Locale_monetary* __acquire_monetaryE(const char* );
1453.400 +_STLP_DECLSPEC void __release_monetaryE (_Locale_monetary* );
1453.401 +
1453.402 +
1453.403 +_STLP_DECLSPEC char _Locale_mon_decimal_pointE(_Locale_monetary* _M_monetary);
1453.404 +
1453.405 +_STLP_DECLSPEC char _Locale_mon_thousands_sepE(_Locale_monetary* _M_monetary);
1453.406 +
1453.407 +_STLP_DECLSPEC string _Locale_mon_groupingE(_Locale_monetary* _M_monetary);
1453.408 +
1453.409 +_STLP_DECLSPEC string _Locale_int_curr_symbolE(_Locale_monetary* _M_monetary);
1453.410 +
1453.411 +
1453.412 +_STLP_DECLSPEC string _Locale_positive_signE(_Locale_monetary* _M_monetary);
1453.413 +
1453.414 +_STLP_DECLSPEC string _Locale_negative_signE(_Locale_monetary* _M_monetary);
1453.415 +
1453.416 +_STLP_DECLSPEC int _Locale_int_frac_digitsE(_Locale_monetary* _M_monetary);
1453.417 +
1453.418 +
1453.419 +template <class _CharT, __DFL_NON_TYPE_PARAM(bool , _International , false) > 
1453.420 +class moneypunct_byname: public  moneypunct<_CharT, _International>
1453.421 +{
1453.422 +public:
1453.423 +  typedef money_base::pattern   pattern;
1453.424 +  typedef char                  char_type;
1453.425 +  typedef basic_string<_CharT>                string_type;
1453.426 +
1453.427 +  explicit moneypunct_byname _STLP_PSPEC2(char, _International) (const char * __name, size_t __refs = 0);
1453.428 +  
1453.429 +protected:
1453.430 +  _Locale_monetary* _M_monetary;
1453.431 +  ~moneypunct_byname _STLP_PSPEC2(_CharT, _International) ();
1453.432 +  virtual _CharT        do_decimal_point() const;
1453.433 +  virtual _CharT        do_thousands_sep() const;
1453.434 +  virtual string      do_grouping()      const;
1453.435 +
1453.436 +  virtual string_type do_curr_symbol()   const;
1453.437 +
1453.438 +  virtual string_type do_positive_sign() const;
1453.439 + virtual string_type do_negative_sign() const;
1453.440 + virtual int         do_frac_digits()   const;
1453.441 + private: 
1453.442 + void Convert_string2_string_chart(basic_string<_CharT> &dst, string src);
1453.443 + 	
1453.444 +};
1453.445 +
1453.446 +#else
1453.447 +
1453.448 +template <class _charT, __DFL_NON_TYPE_PARAM(bool , _International , false) > class moneypunct_byname {};
1453.449 +
1453.450 +#endif
1453.451 +
1453.452 +_STLP_TEMPLATE_NULL
1453.453 +class _STLP_CLASS_DECLSPEC moneypunct_byname<char, true> : public moneypunct<char, true> 
1453.454 +{
1453.455 +public:
1453.456 +  typedef money_base::pattern   pattern;
1453.457 +  typedef char                  char_type;
1453.458 +  typedef string                string_type;
1453.459 +
1453.460 +  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, true) (const char * __name, size_t __refs = 0);
1453.461 +
1453.462 +protected:
1453.463 +  _Locale_monetary* _M_monetary;
1453.464 +_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(char, true) ();
1453.465 +_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1453.466 +  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1453.467 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.468 +
1453.469 +_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1453.470 +
1453.471 +_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1453.472 +_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1453.473 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.474 +};
1453.475 +
1453.476 +_STLP_TEMPLATE_NULL
1453.477 +class _STLP_CLASS_DECLSPEC moneypunct_byname<char, false> : public moneypunct<char, false> 
1453.478 +{
1453.479 +public:
1453.480 +  typedef money_base::pattern   pattern;
1453.481 +  typedef char                  char_type;
1453.482 +  typedef string                string_type;
1453.483 +
1453.484 +  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(char, false) (const char * __name, size_t __refs = 0);
1453.485 +
1453.486 +protected:
1453.487 +  _Locale_monetary* _M_monetary;
1453.488 +_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(char, false) ();
1453.489 +_STLP_DECLSPEC   virtual char        do_decimal_point() const;
1453.490 +  _STLP_DECLSPEC virtual char        do_thousands_sep() const;
1453.491 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.492 +
1453.493 +_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1453.494 +
1453.495 +_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1453.496 +_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1453.497 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.498 +};
1453.499 +
1453.500 +# ifndef _STLP_NO_WCHAR_T
1453.501 +_STLP_TEMPLATE_NULL
1453.502 +class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, true> : public moneypunct<wchar_t, true> 
1453.503 +{
1453.504 +public:
1453.505 +  typedef money_base::pattern   pattern;
1453.506 +  typedef wchar_t               char_type;
1453.507 +  typedef wstring               string_type;
1453.508 +
1453.509 +  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, true) (const char * __name, size_t __refs = 0);
1453.510 +
1453.511 +protected:
1453.512 +  _Locale_monetary* _M_monetary;
1453.513 +_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(wchar_t, true) ();
1453.514 +_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1453.515 +  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1453.516 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.517 +
1453.518 +_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1453.519 +
1453.520 +_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1453.521 +_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1453.522 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.523 +};
1453.524 +
1453.525 +_STLP_TEMPLATE_NULL
1453.526 +class _STLP_CLASS_DECLSPEC moneypunct_byname<wchar_t, false> : public moneypunct<wchar_t, false> 
1453.527 +{
1453.528 +public:
1453.529 +  typedef money_base::pattern   pattern;
1453.530 +  typedef wchar_t               char_type;
1453.531 +  typedef wstring               string_type;
1453.532 +
1453.533 +  explicit _STLP_DECLSPEC moneypunct_byname _STLP_PSPEC2(wchar_t, false) (const char * __name, size_t __refs = 0);
1453.534 +
1453.535 +protected:
1453.536 +  _Locale_monetary* _M_monetary;
1453.537 +_STLP_DECLSPEC   ~moneypunct_byname _STLP_PSPEC2(wchar_t, false) ();
1453.538 +_STLP_DECLSPEC   virtual wchar_t     do_decimal_point() const;
1453.539 +  _STLP_DECLSPEC virtual wchar_t     do_thousands_sep() const;
1453.540 +_STLP_DECLSPEC   virtual string      do_grouping()      const;
1453.541 +
1453.542 +_STLP_DECLSPEC   virtual string_type do_curr_symbol()   const;
1453.543 +
1453.544 +_STLP_DECLSPEC   virtual string_type do_positive_sign() const;
1453.545 +_STLP_DECLSPEC   virtual string_type do_negative_sign() const;
1453.546 +_STLP_DECLSPEC   virtual int         do_frac_digits()   const;
1453.547 +};
1453.548 +# endif
1453.549 +
1453.550 +//===== methods ======
1453.551 +
1453.552 +
1453.553 +// money_put facets
1453.554 +
1453.555 +template <class _CharT, __DFL_TMPL_PARAM( _OutputIter , ostreambuf_iterator<_CharT>) >
1453.556 +class money_put : public locale::facet {
1453.557 +  friend class _Locale;
1453.558 +
1453.559 +public:
1453.560 +  typedef _CharT               char_type;
1453.561 +  typedef _OutputIter          iter_type;
1453.562 +  typedef basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> > string_type;
1453.563 +
1453.564 +   money_put(size_t __refs = 0) : _BaseFacet(__refs) {}
1453.565 +# ifndef _STLP_NO_LONG_DOUBLE
1453.566 +  iter_type put(iter_type __s, bool __intl, ios_base& __str,
1453.567 +                char_type  __fill, long double __units) const
1453.568 +    { return do_put(__s, __intl, __str, __fill, __units); }
1453.569 +# endif
1453.570 +  iter_type put(iter_type __s, bool __intl, ios_base& __str,
1453.571 +                char_type  __fill, 
1453.572 +                const string_type& __digits) const
1453.573 +    { return do_put(__s, __intl, __str, __fill, __digits); }
1453.574 +
1453.575 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1453.576 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1453.577 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& 
1453.578 +                GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *);
1453.579 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& 
1453.580 +                GetFacetLocaleId(wchar_t**);
1453.581 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& 
1453.582 +                GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *);
1453.583 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1453.584 +#else
1453.585 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1453.586 +#endif
1453.587 +
1453.588 +protected:
1453.589 +  ~money_put() {}
1453.590 +# ifndef _STLP_NO_LONG_DOUBLE
1453.591 +  virtual iter_type do_put(iter_type __s, bool  __intl, ios_base&  __str,
1453.592 +                           char_type __fill, long double /*  __units */ ) const {
1453.593 +
1453.594 +    locale __loc = __str.getloc();
1453.595 +    _CharT  __buf[64];
1453.596 +    return do_put(__s, __intl, __str, __fill, __buf + 0);
1453.597 +  }
1453.598 +# endif    
1453.599 +  virtual iter_type do_put(iter_type __s, bool  __intl, ios_base&  __str,
1453.600 +                           char_type __fill,
1453.601 +                           const string_type& __digits) const;
1453.602 +};
1453.603 +
1453.604 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1453.605 +_STLP_EXPORT_TEMPLATE_CLASS money_get<char, istreambuf_iterator<char, char_traits<char> > >;
1453.606 +_STLP_EXPORT_TEMPLATE_CLASS money_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1453.607 +// _STLP_EXPORT_TEMPLATE_CLASS money_get<char, const char* >;
1453.608 +// _STLP_EXPORT_TEMPLATE_CLASS money_put<char, char* >;
1453.609 +#  if ! defined (_STLP_NO_WCHAR_T)
1453.610 +_STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1453.611 +_STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1453.612 +// _STLP_EXPORT_TEMPLATE_CLASS money_get<wchar_t, const wchar_t* >;
1453.613 +// _STLP_EXPORT_TEMPLATE_CLASS money_put<wchar_t, wchar_t* >;
1453.614 +#  endif
1453.615 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1453.616 +
1453.617 +# if defined (__BORLANDC__) && defined (_RTLDLL)
1453.618 +inline void _Stl_loc_init_monetary() {
1453.619 +  money_get<char, istreambuf_iterator<char, char_traits<char> > >::id._M_index                     = 8;
1453.620 +  money_get<char, const char*>::id._M_index        = 9;
1453.621 +  money_put<char, ostreambuf_iterator<char, char_traits<char> > >::id._M_index                     = 10;
1453.622 +  money_put<char, char*>::id._M_index              = 11;
1453.623 +# ifndef _STLP_NO_WCHAR_T
1453.624 +  money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                  = 27;
1453.625 +  money_get<wchar_t, const wchar_t*>::id._M_index  = 28;
1453.626 +  money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                  = 29;
1453.627 +  money_put<wchar_t, wchar_t*>::id._M_index        = 30;
1453.628 +# endif  
1453.629 +}
1453.630 +#endif
1453.631 +
1453.632 +_STLP_END_NAMESPACE
1453.633 +
1453.634 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1453.635 +#  include <stl/_monetary.c>
1453.636 +# endif
1453.637 +
1453.638 +#endif /* _STLP_INTERNAL_MONETARY_H */
1453.639 +
1453.640 +// Local Variables:
1453.641 +// mode:C++
1453.642 +// End:
1453.643 +
1453.644 +
  1454.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1454.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_move_construct_fwk.h	Wed Mar 31 12:27:01 2010 +0100
  1454.3 @@ -0,0 +1,160 @@
  1454.4 +/*
  1454.5 + *
  1454.6 + * Copyright (c) 2003
  1454.7 + * François Dumont
  1454.8 + *
  1454.9 + * This material is provided "as is", with absolutely no warranty expressed
 1454.10 + * or implied. Any use is at your own risk.
 1454.11 + *
 1454.12 + * Permission to use or copy this software for any purpose is hereby granted
 1454.13 + * without fee, provided the above notices are retained on all copies.
 1454.14 + * Permission to modify the code and to distribute modified code is granted,
 1454.15 + * provided the above notices are retained, and a notice that the code was
 1454.16 + * modified is included with the above copyright notice.
 1454.17 + *
 1454.18 + */
 1454.19 +
 1454.20 +#ifndef _STLP_MOVE_CONSTRUCT_FWK_H
 1454.21 +#define _STLP_MOVE_CONSTRUCT_FWK_H
 1454.22 +
 1454.23 +#ifndef _STLP_TYPE_TRAITS_H
 1454.24 +#  include <stl/type_traits.h>
 1454.25 +#endif
 1454.26 +
 1454.27 +_STLP_BEGIN_NAMESPACE
 1454.28 +
 1454.29 +/*************************************************************
 1454.30 + * Move constructor framework
 1454.31 + *************************************************************/
 1454.32 +
 1454.33 +/*************************************************************
 1454.34 + *Partial move:
 1454.35 + *The source HAS to be a valid instance after the move!
 1454.36 + *************************************************************/
 1454.37 +template <class _Tp>
 1454.38 +class __move_source {
 1454.39 +public:
 1454.40 +  explicit __move_source (_Tp &_src) : _M_data(_src)
 1454.41 +  {}
 1454.42 +
 1454.43 +  _Tp& get() const
 1454.44 +  { return _M_data; }
 1454.45 +private:
 1454.46 +  _Tp &_M_data;
 1454.47 +
 1454.48 +  //We explicitely forbid assignment to avoid warning:
 1454.49 +  typedef __move_source<_Tp> _Self;
 1454.50 +  _Self& operator = (_Self const&);
 1454.51 +};
 1454.52 +
 1454.53 +//Class used to signal move constructor support, implementation and type.
 1454.54 +template <class _Tp>
 1454.55 +struct __move_traits {
 1454.56 +  /*
 1454.57 +   * implemented tells if a the special move constructor has to be called or the classic
 1454.58 +   * copy constructor is just fine. Most of the time the copy constructor is fine only
 1454.59 +   * if the following info is true.
 1454.60 +   */
 1454.61 +#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && \
 1454.62 +   !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && \
 1454.63 +   !defined (_STLP_NO_MOVE_SEMANTIC)
 1454.64 +  typedef typename _IsSTLportClass<_Tp>::_Ret implemented;
 1454.65 +#else
 1454.66 +  typedef __false_type implemented;
 1454.67 +#endif
 1454.68 +  /*
 1454.69 +   * complete tells if the move is complete or partial, that is to say, does the source
 1454.70 +   * needs to be destroyed once it has been moved.
 1454.71 +   */
 1454.72 +  typedef typename __type_traits<_Tp>::has_trivial_destructor complete;
 1454.73 +};
 1454.74 +
 1454.75 +#if !defined (_STLP_NO_MOVE_SEMANTIC)
 1454.76 +typedef __true_type __stlp_movable;
 1454.77 +#else
 1454.78 +typedef __false_type __stlp_movable;
 1454.79 +#endif
 1454.80 +
 1454.81 +_STLP_MOVE_TO_PRIV_NAMESPACE
 1454.82 +
 1454.83 +/*
 1454.84 + * This struct should never be used if the user has not explicitely stipulated
 1454.85 + * that its class support the full move concept. To check that the return type
 1454.86 + * in such a case will be __invalid_source<_Tp> to generate a compile error
 1454.87 + * revealing the configuration problem.
 1454.88 + */
 1454.89 +template <class _Tp>
 1454.90 +struct _MoveSourceTraits {
 1454.91 +  typedef typename __move_traits<_Tp>::implemented _MvImpRet;
 1454.92 +#if defined (__BORLANDC__)
 1454.93 +  typedef typename __selectT<_MvImpRet,
 1454.94 +#else
 1454.95 +  enum {_MvImp = __type2bool<_MvImpRet>::_Ret};
 1454.96 +  typedef typename __select<_MvImp,
 1454.97 +#endif
 1454.98 +                            __move_source<_Tp>,
 1454.99 +                            _Tp const&>::_Ret _Type;
1454.100 +};
1454.101 +
1454.102 +//The helper function
1454.103 +template <class _Tp>
1454.104 +inline _STLP_TYPENAME_ON_RETURN_TYPE _MoveSourceTraits<_Tp>::_Type
1454.105 +_AsMoveSource (_Tp &src) {
1454.106 +  typedef typename _MoveSourceTraits<_Tp>::_Type _SrcType;
1454.107 +  return _SrcType(src);
1454.108 +}
1454.109 +
1454.110 +//Helper structs used for many class.
1454.111 +template <class _Tp>
1454.112 +struct __move_traits_aux {
1454.113 +  typedef typename __move_traits<_Tp>::implemented implemented;
1454.114 +  typedef typename __move_traits<_Tp>::complete complete;
1454.115 +};
1454.116 +
1454.117 +template <class _Tp1, class _Tp2>
1454.118 +struct __move_traits_aux2 {
1454.119 +  typedef __move_traits<_Tp1> _MoveTraits1;
1454.120 +  typedef __move_traits<_Tp2> _MoveTraits2;
1454.121 +
1454.122 +  typedef typename _Lor2<typename _MoveTraits1::implemented,
1454.123 +                         typename _MoveTraits2::implemented>::_Ret implemented;
1454.124 +  typedef typename _Land2<typename _MoveTraits1::complete,
1454.125 +                          typename _MoveTraits2::complete>::_Ret complete;
1454.126 +};
1454.127 +
1454.128 +/*
1454.129 + * Most of the time a class implement a move constructor but its use depends
1454.130 + * on a third party, this is what the following struct are for.
1454.131 + */
1454.132 +template <class _Tp>
1454.133 +struct __move_traits_help {
1454.134 +  typedef __true_type implemented;
1454.135 +  typedef typename __move_traits<_Tp>::complete complete;
1454.136 +};
1454.137 +
1454.138 +template <class _Tp1, class _Tp2>
1454.139 +struct __move_traits_help1 {
1454.140 +  typedef __move_traits<_Tp1> _MoveTraits1;
1454.141 +  typedef __move_traits<_Tp2> _MoveTraits2;
1454.142 +
1454.143 +  typedef typename _Lor2<typename _MoveTraits1::implemented,
1454.144 +                         typename _MoveTraits2::implemented>::_Ret implemented;
1454.145 +  typedef typename _Land2<typename _MoveTraits1::complete,
1454.146 +                          typename _MoveTraits2::complete>::_Ret complete;
1454.147 +};
1454.148 +
1454.149 +template <class _Tp1, class _Tp2>
1454.150 +struct __move_traits_help2 {
1454.151 +  typedef __move_traits<_Tp1> _MoveTraits1;
1454.152 +  typedef __move_traits<_Tp2> _MoveTraits2;
1454.153 +
1454.154 +  typedef __stlp_movable implemented;
1454.155 +  typedef typename _Land2<typename _MoveTraits1::complete,
1454.156 +                          typename _MoveTraits2::complete>::_Ret complete;
1454.157 +};
1454.158 +
1454.159 +_STLP_MOVE_TO_STD_NAMESPACE
1454.160 +
1454.161 +_STLP_END_NAMESPACE
1454.162 +
1454.163 +#endif /* _STLP_MOVE_CONSTRUCT_FWK_H */
  1455.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1455.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_new.h	Wed Mar 31 12:27:01 2010 +0100
  1455.3 @@ -0,0 +1,208 @@
  1455.4 +/*
  1455.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1455.6 +
  1455.7 +* Redistribution and use in source and binary forms, with or without 
  1455.8 +* modification, are permitted provided that the following conditions are met:
  1455.9 +
 1455.10 +* Redistributions of source code must retain the above copyright notice, this 
 1455.11 +* list of conditions and the following disclaimer.
 1455.12 +* Redistributions in binary form must reproduce the above copyright notice, 
 1455.13 +* this list of conditions and the following disclaimer in the documentation 
 1455.14 +* and/or other materials provided with the distribution.
 1455.15 +* Neither the name of Nokia Corporation nor the names of its contributors 
 1455.16 +* may be used to endorse or promote products derived from this software 
 1455.17 +* without specific prior written permission.
 1455.18 +
 1455.19 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1455.20 +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1455.21 +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1455.22 +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1455.23 +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1455.24 +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1455.25 +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1455.26 +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1455.27 +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1455.28 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1455.29 +*
 1455.30 +* Description:
 1455.31 +*
 1455.32 +*/
 1455.33 +
 1455.34 +#ifndef _STLP_NEW_H_HEADER
 1455.35 +# define _STLP_NEW_H_HEADER
 1455.36 +
 1455.37 +# ifdef _STLP_NO_BAD_ALLOC
 1455.38 +# ifndef _STLP_NEW_DONT_THROW
 1455.39 +#   define _STLP_NEW_DONT_THROW 1
 1455.40 +# endif /* _STLP_NEW_DONT_THROW */
 1455.41 +
 1455.42 +#  include <exception>
 1455.43 +
 1455.44 +
 1455.45 +_STLP_BEGIN_NAMESPACE
 1455.46 +
 1455.47 +#if defined(__SYMBIAN32__) && defined( __WINSCW__)
 1455.48 +// already defined symcpp.h included from rvct2_2.h
 1455.49 +struct nothrow_t {};
 1455.50 +#endif
 1455.51 +
 1455.52 +
 1455.53 +# ifdef _STLP_OWN_IOSTREAMS
 1455.54 +#ifdef __ARMCC__
 1455.55 +extern _STLP_DECLSPEC const nothrow_t nothrow;
 1455.56 +#else
 1455.57 +extern IMPORT_C const nothrow_t& GetNoThrowObj();
 1455.58 +#define nothrow GetNoThrowObj()
 1455.59 +#endif
 1455.60 +# else
 1455.61 +#  define nothrow nothrow_t()
 1455.62 +# endif
 1455.63 +#ifndef _STLP_EXCEPTION_BASE
 1455.64 +#  define _STLP_EXCEPTION_BASE exception
 1455.65 +#endif
 1455.66 +
 1455.67 +class bad_alloc : public _STLP_EXCEPTION_BASE { 
 1455.68 +public:
 1455.69 +  bad_alloc () _STLP_NOTHROW_INHERENTLY { }
 1455.70 +  bad_alloc(const bad_alloc&) _STLP_NOTHROW_INHERENTLY { }
 1455.71 +  bad_alloc& operator=(const bad_alloc&) _STLP_NOTHROW_INHERENTLY {return *this;}
 1455.72 +  ~bad_alloc () _STLP_NOTHROW_INHERENTLY { }
 1455.73 +  const char* what() const _STLP_NOTHROW_INHERENTLY { return "bad alloc"; }
 1455.74 +};
 1455.75 +
 1455.76 +_STLP_END_NAMESPACE
 1455.77 +
 1455.78 +#endif /* _STLP_NO_BAD_ALLOC */
 1455.79 +
 1455.80 +#if defined (_STLP_WINCE)
 1455.81 +_STLP_BEGIN_NAMESPACE
 1455.82 +
 1455.83 +inline void* _STLP_CALL __stl_new(size_t __n) {
 1455.84 +  return ::malloc(__n);
 1455.85 +}
 1455.86 +
 1455.87 +inline void _STLP_CALL __stl_delete(void* __p) {
 1455.88 +  free(__p);
 1455.89 +}
 1455.90 +
 1455.91 +#ifndef __cdecl
 1455.92 +# define __cdecl
 1455.93 +#endif
 1455.94 +
 1455.95 +_STLP_END_NAMESPACE
 1455.96 +
 1455.97 +#else /* _STLP_WINCE */
 1455.98 +
 1455.99 +#include <new>
1455.100 +
1455.101 +# ifndef _STLP_NO_BAD_ALLOC
1455.102 +#  ifdef _STLP_USE_OWN_NAMESPACE
1455.103 +
1455.104 +    _STLP_BEGIN_NAMESPACE
1455.105 +    using _STLP_VENDOR_EXCEPT_STD::bad_alloc;
1455.106 +    using _STLP_VENDOR_EXCEPT_STD::nothrow_t;
1455.107 +    using _STLP_VENDOR_EXCEPT_STD::nothrow;
1455.108 +
1455.109 +#  if defined (_STLP_GLOBAL_NEW_HANDLER)
1455.110 +    using ::new_handler;
1455.111 +    using ::set_new_handler;
1455.112 +#  else
1455.113 +    using _STLP_VENDOR_EXCEPT_STD::new_handler;
1455.114 +    using _STLP_VENDOR_EXCEPT_STD::set_new_handler;
1455.115 +#  endif
1455.116 +    
1455.117 +    _STLP_END_NAMESPACE
1455.118 +
1455.119 +#  endif /* _STLP_OWN_NAMESPACE */
1455.120 +
1455.121 +# endif /* _STLP_NO_BAD_ALLOC */
1455.122 +
1455.123 +# if defined (_STLP_NO_NEW_NEW_HEADER) || defined (_STLP_NEW_DONT_THROW) || defined (__SYMBIAN32__) \
1455.124 +                    || defined (__WINS__) && ! defined (_STLP_CHECK_NULL_ALLOC)
1455.125 +#  define _STLP_CHECK_NULL_ALLOC(__x) void* __y = __x;if (__y == 0){_STLP_THROW(bad_alloc());}return __y
1455.126 +# if defined (__SYMBIAN32__)
1455.127 +//# define _STLP_NEW operator new
1455.128 +#define _STLP_NEW  ::malloc
1455.129 +#endif
1455.130 +/*
1455.131 +# elif defined (__SYMBIAN32__) || defined (__WINS__)
1455.132 +#  ifndef _STLP_USE_TRAP_LEAVE
1455.133 +#   define _STLP_CHECK_NULL_ALLOC(__x) void* __y = __x;if (__y == 0){abort();}return __y
1455.134 +#  else
1455.135 +#   define _STLP_NEW(x) :: operator new (x, ELeave) 
1455.136 +#   define _STLP_CHECK_NULL_ALLOC(__x) return __x
1455.137 +#  endif
1455.138 +*/
1455.139 +# else
1455.140 +#  define _STLP_CHECK_NULL_ALLOC(__x) return __x
1455.141 +# endif
1455.142 +
1455.143 +#ifndef _STLP_NEW
1455.144 +# define _STLP_NEW ::operator new
1455.145 +#endif
1455.146 +# define _STLP_PLACEMENT_NEW ::new
1455.147 +
1455.148 +_STLP_BEGIN_NAMESPACE
1455.149 +
1455.150 +#ifdef __SYMBIAN32__
1455.151 +
1455.152 +typedef void(*new_handler)();
1455.153 +
1455.154 +_STLP_DECLSPEC new_handler set_new_handler(new_handler pnew) throw();
1455.155 +
1455.156 +#endif
1455.157 +
1455.158 +#if (( defined(__IBMCPP__)|| defined(__OS400__) || defined (__xlC__) || defined (qTidyHeap)) && defined(__DEBUG_ALLOC__) )
1455.159 +inline void*  _STLP_CALL __stl_new(size_t __n) {  _STLP_CHECK_NULL_ALLOC(_STLP_NEW(__n, __FILE__, __LINE__)); }
1455.160 +inline void _STLP_CALL __stl_delete(void* __p) { ::operator delete(__p, __FILE__, __LINE__); }
1455.161 +#else
1455.162 +inline void*  _STLP_CALL __stl_new(size_t __n)   { return ::operator new(__n); }
1455.163 +inline void   _STLP_CALL __stl_delete(void* __p) { ::operator delete(__p); }
1455.164 +#endif
1455.165 +_STLP_END_NAMESPACE
1455.166 +
1455.167 +
1455.168 +# endif /* _STLP_WINCE */
1455.169 +
1455.170 +#if defined(__SYMBIAN32__) && !defined(__GCCE__)
1455.171 +_STLP_DECLSPEC void *operator new(unsigned int aSize);
1455.172 +
1455.173 +_STLP_DECLSPEC void *operator new[](unsigned int aSize);
1455.174 +#endif
1455.175 +
1455.176 +_STLP_DECLSPEC void operator delete(void* aPtr) throw();
1455.177 +
1455.178 +_STLP_DECLSPEC void operator delete[](void* aPtr) throw();
1455.179 +
1455.180 +_STLP_DECLSPEC void* operator new(unsigned int aSize, const std::nothrow_t& /*aNoThrow*/) throw();
1455.181 +
1455.182 +_STLP_DECLSPEC void* operator new[](unsigned int aSize, const std::nothrow_t& aNoThrow) throw();
1455.183 +
1455.184 +_STLP_DECLSPEC void operator delete(void* aPtr, const std::nothrow_t& /*aNoThrow*/) throw();
1455.185 +
1455.186 +_STLP_DECLSPEC void operator delete[](void* aPtr, const std::nothrow_t& /*aNoThrow*/) throw();
1455.187 +
1455.188 +
1455.189 +// placement delete
1455.190 +#ifndef __PLACEMENT_VEC_NEW_INLINE
1455.191 +#define __PLACEMENT_VEC_NEW_INLINE
1455.192 +inline void* operator new[](unsigned int /*aSize*/, void* aBase) throw()
1455.193 +	{return aBase;}
1455.194 +inline void operator delete[](void* /*aPtr*/, void* /*aBase*/) throw()
1455.195 +    {
1455.196 +    
1455.197 +    }
1455.198 +#endif
1455.199 +
1455.200 +#ifndef __PLACEMENT_NEW_INLINE
1455.201 +#define __PLACEMENT_NEW_INLINE
1455.202 +inline void* operator new(unsigned int /*aSize*/, void* aBase) throw()
1455.203 +	{return aBase;}
1455.204 +
1455.205 +// Global placement operator delete
1455.206 +inline void operator delete(void* /*aPtr*/, void* /*aBase*/) throw()
1455.207 +	{}
1455.208 +#endif //__PLACEMENT_NEW_INLINE
1455.209 +
1455.210 +
1455.211 +#endif /* _STLP_NEW_H_HEADER */
  1456.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1456.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_null_stream.h	Wed Mar 31 12:27:01 2010 +0100
  1456.3 @@ -0,0 +1,42 @@
  1456.4 +/*
  1456.5 + * Copyright (c) 2000
  1456.6 + * Boris Fomitchev
  1456.7 + *
  1456.8 + * This material is provided "as is", with absolutely no warranty expressed
  1456.9 + * or implied. Any use is at your own risk.
 1456.10 + *
 1456.11 + * Permission to use or copy this software for any purpose is hereby granted 
 1456.12 + * without fee, provided the above notices are retained on all copies.
 1456.13 + * Permission to modify the code and to distribute modified code is granted,
 1456.14 + * provided the above notices are retained, and a notice that the code was
 1456.15 + * modified is included with the above copyright notice.
 1456.16 + *
 1456.17 + */
 1456.18 +
 1456.19 +#ifndef _STLP_NULL_STREAM_H
 1456.20 +# define _STLP_NULL_STREAM_H
 1456.21 +
 1456.22 +_STLP_BEGIN_NAMESPACE
 1456.23 +
 1456.24 +struct __null_stream 
 1456.25 +{
 1456.26 +    void flush() { }
 1456.27 +};
 1456.28 +
 1456.29 +template <class _Tp>
 1456.30 +__null_stream& operator <<(__null_stream& __x, const _Tp& ) 
 1456.31 +{
 1456.32 +    return __x;
 1456.33 +}
 1456.34 +
 1456.35 +template <class _Tp>
 1456.36 +__null_stream& operator >>(const _Tp&, __null_stream& __x ) 
 1456.37 +{
 1456.38 +    return __x;
 1456.39 +}
 1456.40 +
 1456.41 +extern __null_stream cin, cout, cerr, endl, ws, hex, dec;
 1456.42 +
 1456.43 +_STLP_END_NAMESPACE
 1456.44 +
 1456.45 +# endif
  1457.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1457.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_num_get.c	Wed Mar 31 12:27:01 2010 +0100
  1457.3 @@ -0,0 +1,882 @@
  1457.4 +/*
  1457.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1457.6 + * Copyright (c) 1999
  1457.7 + * Silicon Graphics Computer Systems, Inc.
  1457.8 + *
  1457.9 + * Copyright (c) 1999
 1457.10 + * Boris Fomitchev
 1457.11 + *
 1457.12 + * This material is provided "as is", with absolutely no warranty expressed
 1457.13 + * or implied. Any use is at your own risk.
 1457.14 + *
 1457.15 + * Permission to use or copy this software for any purpose is hereby granted
 1457.16 + * without fee, provided the above notices are retained on all copies.
 1457.17 + * Permission to modify the code and to distribute modified code is granted,
 1457.18 + * provided the above notices are retained, and a notice that the code was
 1457.19 + * modified is included with the above copyright notice.
 1457.20 + *
 1457.21 + */
 1457.22 +#ifndef _STLP_NUM_GET_C
 1457.23 +#define _STLP_NUM_GET_C
 1457.24 +
 1457.25 +#ifndef _STLP_INTERNAL_NUM_GET_H
 1457.26 +# include <stl/_num_get.h>
 1457.27 +#endif
 1457.28 +
 1457.29 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1457.30 +
 1457.31 +#ifndef _STLP_LIMITS_H
 1457.32 +# include <stl/_limits.h>
 1457.33 +#endif
 1457.34 +
 1457.35 +_STLP_DECLSPEC  unsigned char*  __get_digit_val_table(void);
 1457.36 +_STLP_DECLSPEC  char*  __get_narrow_atoms(void);
 1457.37 +_STLP_BEGIN_NAMESPACE
 1457.38 +
 1457.39 +extern const unsigned char __digit_val_table[];
 1457.40 +
 1457.41 +template < class _InputIter, class _Integer, class _CharT>
 1457.42 +_InputIter _STLP_CALL
 1457.43 +_M_do_get_integer(_InputIter&, _InputIter&, ios_base&, ios_base::iostate&, _Integer&, _CharT*);
 1457.44 +
 1457.45 +// _M_do_get_integer and its helper functions.
 1457.46 +
 1457.47 +#ifdef	__SYMBIAN32__
 1457.48 +template<class _CharT>
 1457.49 +inline bool _STLP_CALL __get_fdigit(_CharT& c, const _CharT* digits)
 1457.50 +  { 
 1457.51 +
 1457.52 +  const _CharT* p = find(digits, digits + 10, c);
 1457.53 +  if (p != digits + 10) {
 1457.54 +    c = (_CharT)( (_CharT)'0' + (p - digits));
 1457.55 +    return true;
 1457.56 +  }
 1457.57 +  else
 1457.58 +    return false;
 1457.59 +}
 1457.60 +
 1457.61 +#endif
 1457.62 +inline bool _STLP_CALL __get_fdigit(char& __c, const char*)
 1457.63 +  { return __c >= '0' && __c <= '9'; }
 1457.64 +
 1457.65 +inline bool _STLP_CALL __get_fdigit_or_sep(char& __c, char __sep, const char *)
 1457.66 +{
 1457.67 +  if (__c == __sep) {
 1457.68 +    __c = ',' ;
 1457.69 +    return true ;
 1457.70 +  } else
 1457.71 +    return  ( __c >= '0' && __c <= '9');
 1457.72 +}
 1457.73 +
 1457.74 +# ifndef _STLP_NO_WCHAR_T
 1457.75 +
 1457.76 +// Similar, except return the character itself instead of the numeric
 1457.77 +// value.  Used for floating-point input.
 1457.78 +inline bool  _STLP_CALL __get_fdigit(wchar_t& c, const wchar_t* digits)
 1457.79 +{
 1457.80 +  const wchar_t* p = find(digits, digits + 10, c);
 1457.81 +  if (p != digits + 10) {
 1457.82 +    c = (char)('0' + (p - digits));
 1457.83 +    return true;
 1457.84 +  }
 1457.85 +  else
 1457.86 +    return false;
 1457.87 +}
 1457.88 +
 1457.89 +inline bool  _STLP_CALL __get_fdigit_or_sep(wchar_t& c, wchar_t sep,
 1457.90 +                                     const wchar_t * digits)
 1457.91 +{
 1457.92 +  if (c == sep) {
 1457.93 +    c = (char)',';
 1457.94 +    return true;
 1457.95 +  }
 1457.96 +  else
 1457.97 +    return __get_fdigit(c, digits);
 1457.98 +}
 1457.99 +#ifdef __SYMBIAN32__
1457.100 +template <class _CharT>
1457.101 +inline bool  _STLP_CALL __get_fdigit_or_sep(_CharT& c, _CharT sep,
1457.102 +                                     const _CharT * digits)
1457.103 +{
1457.104 +  if (c == sep) {
1457.105 +    c = (_CharT)',';
1457.106 +    return true;
1457.107 +  }
1457.108 +  else
1457.109 +    return __get_fdigit(c, digits);
1457.110 +}
1457.111 +
1457.112 +
1457.113 +
1457.114 +#endif
1457.115 +#endif
1457.116 +inline int _STLP_CALL
1457.117 +__get_digit_from_table(unsigned __index)
1457.118 +{
1457.119 +  return (__index > 127 ? 0xFF : __get_digit_val_table()[__index]);
1457.120 +}
1457.121 +
1457.122 +extern const char __narrow_atoms[];
1457.123 +
1457.124 +template <class _InputIter, class _CharT>
1457.125 +int
1457.126 +_M_get_base_or_zero(_InputIter& __stl_in, _InputIter& __end, ios_base& __str, _CharT*)
1457.127 +{
1457.128 +  _CharT __atoms[5];
1457.129 +  const ctype<_CharT>& __c_type = use_facet< ctype<_CharT> >(__str.getloc());
1457.130 +  // const ctype<_CharT>& __c_type = *(const ctype<_CharT>*)__str._M_ctype_facet();
1457.131 +
1457.132 +  __c_type.widen(__get_narrow_atoms(), __get_narrow_atoms() + 5, __atoms);
1457.133 +
1457.134 +  bool __negative = false;
1457.135 +  _CharT __c = *__stl_in;
1457.136 +
1457.137 +  if (__c == __atoms[1] /* __xminus_char */ ) {
1457.138 +    __negative = true;
1457.139 +    ++__stl_in;
1457.140 +  }
1457.141 +  else if (__c == __atoms[0] /* __xplus_char */ )
1457.142 +    ++__stl_in;
1457.143 +
1457.144 +
1457.145 +  int __base;
1457.146 +  int __valid_zero = 0;
1457.147 +
1457.148 +  ios_base::fmtflags __basefield = __str.flags() & ios_base::basefield;
1457.149 +
1457.150 +  switch (__basefield) {
1457.151 +  case ios_base::oct:
1457.152 +    __base = 8;
1457.153 +    break;
1457.154 +  case ios_base::dec:
1457.155 +    __base = 10;
1457.156 +    break;
1457.157 +  case ios_base::hex:
1457.158 +    __base = 16;
1457.159 +    if (__stl_in != __end && *__stl_in == __atoms[2] /* __zero_char */ ) {
1457.160 +      ++__stl_in;
1457.161 +      if (__stl_in != __end &&
1457.162 +          (*__stl_in == __atoms[3] /* __x_char */ || *__stl_in == __atoms[4] /* __X_char */ ))
1457.163 +        ++__stl_in;
1457.164 +      else
1457.165 +        __valid_zero = 1; // That zero is valid by itself.
1457.166 +    }
1457.167 +    break;
1457.168 +  default:
1457.169 +    if (__stl_in != __end && *__stl_in == __atoms[2] /* __zero_char */ ) {
1457.170 +      ++__stl_in;
1457.171 +      if (__stl_in != __end &&
1457.172 +          (*__stl_in == __atoms[3] /* __x_char */ || *__stl_in == __atoms[4] /* __X_char */ )) {
1457.173 +        ++__stl_in;
1457.174 +        __base = 16;
1457.175 +      }
1457.176 +      else
1457.177 +        {
1457.178 +          __base = 8;
1457.179 +          __valid_zero = 1; // That zero is still valid by itself.
1457.180 +        }
1457.181 +    }
1457.182 +    else
1457.183 +      __base = 10;
1457.184 +    break;
1457.185 +  }
1457.186 +  return (__base << 2) | ((int)__negative << 1) | __valid_zero;
1457.187 +}
1457.188 +
1457.189 +
1457.190 +template <class _InputIter, class _Integer>
1457.191 +bool _STLP_CALL
1457.192 +__get_integer(_InputIter& __first, _InputIter& __last,
1457.193 +	      int __base, _Integer& __val,
1457.194 +	      int __got, bool __is_negative, char __separator, const string& __grouping, const __true_type&)
1457.195 +{
1457.196 +  bool __ovflow = false;
1457.197 +  bool __valid_group = true;
1457.198 +
1457.199 +  _Integer __result = 0;
1457.200 +  bool __is_group = !__grouping.empty();
1457.201 +//  char __group_sizes[64];
1457.202 +  char __group_sizes[256] = {0}; //group sizes can be more
1457.203 +#ifdef	__SYMBIAN32__
1457.204 +int __current_group_size = __got;
1457.205 +#else
1457.206 +  int __current_group_size = 0;
1457.207 +#endif
1457.208 +  char* __group_sizes_end = __group_sizes;
1457.209 +   int prv_got = 0;
1457.210 +   
1457.211 +   
1457.212 +  _Integer __over_base = (numeric_limits<_Integer>::min)() / __STATIC_CAST(_Integer, __base);
1457.213 +
1457.214 +   for ( ; __first != __last ; ++__first) {
1457.215 +
1457.216 +     const char __c = *__first;
1457.217 +
1457.218 +     if (__is_group && __c == __separator) {
1457.219 +	 if (prv_got == __got) //no successive seperators
1457.220 +	 	return false;
1457.221 +	 prv_got = __got;
1457.222 +       *__group_sizes_end++ = __current_group_size;       
1457.223 +       __current_group_size = 0;
1457.224 +       continue;
1457.225 +     }
1457.226 +
1457.227 +     int __n = __get_digit_from_table(__c);
1457.228 +
1457.229 +     if (__n >= __base)
1457.230 +	 	break;
1457.231 +
1457.232 +     ++__got;
1457.233 +     ++__current_group_size;
1457.234 +
1457.235 +     if (__result < __over_base)
1457.236 +       __ovflow = true;  // don't need to keep accumulating
1457.237 +     else {
1457.238 +       _Integer __next = __STATIC_CAST(_Integer, __base * __result - __n);
1457.239 +       if (__result != 0)
1457.240 +#ifdef	__SYMBIAN32__
1457.241 +	if (__is_negative)
1457.242 +		__ovflow = __ovflow || __next >= __result;
1457.243 +	else
1457.244 +		__ovflow = __ovflow || (__next-1) >= __result; //For signed char, the ranges are -128 to 127, 
1457.245 +#else
1457.246 +	 __ovflow = __ovflow || __next >= __result;
1457.247 +#endif
1457.248 +       __result = __next;
1457.249 +     }
1457.250 +   }
1457.251 +
1457.252 +   if (__is_group && __group_sizes_end != __group_sizes) {
1457.253 +     *__group_sizes_end++ = __current_group_size;
1457.254 +     
1457.255 +   }
1457.256 +
1457.257 +   // fbp : added to not modify value if nothing was read
1457.258 +   if (__got > 0) {
1457.259 +       __val = __ovflow
1457.260 +	 ? __is_negative ? (numeric_limits<_Integer>::min)()
1457.261 +	 : (numeric_limits<_Integer>::max)()
1457.262 +	 : (__is_negative ? __result : __STATIC_CAST(_Integer, -__result));
1457.263 +   }
1457.264 +   __valid_group = __valid_grouping(__group_sizes, __group_sizes_end,
1457.265 +									    __grouping.data(), __grouping.data()+ __grouping.size());
1457.266 +
1457.267 +	if (__valid_group == false)
1457.268 +	__val = 0;
1457.269 +
1457.270 +  // overflow is being treated as failure
1457.271 +  return ((__got > 0) && !__ovflow) && (__is_group == 0 || __valid_group) ;
1457.272 +}
1457.273 +
1457.274 +template <class _InputIter, class _Integer>
1457.275 +bool _STLP_CALL
1457.276 +__get_integer(_InputIter& __first, _InputIter& __last,
1457.277 +	      int __base, _Integer& __val,
1457.278 +	      int __got, bool __is_negative, char __separator, const string& __grouping, const __false_type&)
1457.279 +{
1457.280 +  bool __ovflow = false;
1457.281 +  bool __valid_group = true;
1457.282 +  _Integer __result = 0;
1457.283 +  bool __is_group = !__grouping.empty();
1457.284 +//  char __group_sizes[64];
1457.285 +  char __group_sizes[256] = {0};//group sizes can be more
1457.286 +  int __current_group_size = 0;
1457.287 +  char* __group_sizes_end = __group_sizes;
1457.288 +     int prv_got = 0;
1457.289 +
1457.290 + 
1457.291 +  _Integer  __over_base = (numeric_limits<_Integer>::max)() / __STATIC_CAST(_Integer, __base);
1457.292 +
1457.293 +  for ( ; __first != __last ; ++__first) {
1457.294 +
1457.295 +    const char __c = *__first;
1457.296 +/*
1457.297 +    //if (__is_group && __c == __separator) { //no seperator at the start of number.
1457.298 +    if (__is_group && __c == __separator && __got) {
1457.299 +      // seperator should come after extracting some digits
1457.300 +      	if (!__current_group_size)
1457.301 +      		break;
1457.302 +     *__group_sizes_end++ = __current_group_size;    
1457.303 +      __current_group_size = 0;
1457.304 +      continue;
1457.305 +    }
1457.306 +*/
1457.307 +	if (__is_group && __c == __separator) {
1457.308 +	 if (prv_got == __got) //no successive seperators
1457.309 +	 	return false;
1457.310 +	 	prv_got = __got;
1457.311 +       *__group_sizes_end++ = __current_group_size;       
1457.312 +       __current_group_size = 0;
1457.313 +       continue;
1457.314 +     }
1457.315 +    int __n = __get_digit_from_table(__c);
1457.316 +
1457.317 +    if (__n >= __base)
1457.318 +    	break;
1457.319 +
1457.320 +    ++__got;
1457.321 +    ++__current_group_size;
1457.322 +
1457.323 +    if (__result > __over_base)
1457.324 +      __ovflow = true;  //don't need to keep accumulating
1457.325 +    else {
1457.326 +      _Integer __next = __STATIC_CAST(_Integer, __base * __result + __n);
1457.327 +	if (__result != 0)
1457.328 +	  __ovflow = __ovflow || __next <= __result;
1457.329 +	__result = __next;
1457.330 +      }
1457.331 +  }
1457.332 +
1457.333 +  if (__is_group && __group_sizes_end != __group_sizes) {
1457.334 +      *__group_sizes_end++ = __current_group_size;     
1457.335 +  }
1457.336 +
1457.337 +  // fbp : added to not modify value if nothing was read
1457.338 +  if (__got > 0) {
1457.339 +      __val = __ovflow
1457.340 +	? (numeric_limits<_Integer>::max)()
1457.341 +	: (__is_negative ? __STATIC_CAST(_Integer, -__result) : __result);
1457.342 +  }
1457.343 +  __valid_group =  __valid_grouping(__group_sizes, __group_sizes_end,
1457.344 +					 __grouping.data(), __grouping.data()+ __grouping.size());
1457.345 +
1457.346 +	if (__valid_group == false)
1457.347 +	__val = 0;
1457.348 +
1457.349 +  // overflow is being treated as failure
1457.350 +  return ((__got > 0) && !__ovflow) &&
1457.351 +    (__is_group == 0 ||__valid_group) ;
1457.352 +}
1457.353 +
1457.354 +
1457.355 +template <class _InputIter, class _Integer>
1457.356 +bool _STLP_CALL
1457.357 +__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val)
1457.358 +{
1457.359 +  string __grp;
1457.360 +  return __get_integer(__first, __last, 10, __val, 0, false, ' ', __grp, __false_type());
1457.361 +}
1457.362 +
1457.363 +template <class _InputIter, class _Integer, class _CharT>
1457.364 +_InputIter _STLP_CALL
1457.365 +_M_do_get_integer(_InputIter& __stl_in, _InputIter& __end, ios_base& __str,
1457.366 +                  ios_base::iostate& __err, _Integer& __val, _CharT* __pc)
1457.367 +{
1457.368 +
1457.369 +#if defined(__HP_aCC) && (__HP_aCC == 1)
1457.370 +  bool _IsSigned = !((_Integer)(-1) > 0);
1457.371 +#else
1457.372 +  typedef typename __bool2type<numeric_limits<_Integer>::is_signed>::_Ret _IsSigned;
1457.373 +#endif
1457.374 +
1457.375 +  //const numpunct<_CharT>& __numpunct = *(const numpunct<_CharT>*)__str._M_numpunct_facet();
1457.376 +  const numpunct<_CharT>& __numpunct = use_facet< numpunct<_CharT> >(__str.getloc());
1457.377 +//  const string& __grouping = __str._M_grouping(); // cached copy //stdcxx fix - 11/1/06
1457.378 +  const string& __grouping = __numpunct.grouping();
1457.379 +
1457.380 +
1457.381 +  const int __base_or_zero = _M_get_base_or_zero(__stl_in, __end, __str, __pc);
1457.382 +  int  __got = __base_or_zero & 1;
1457.383 +
1457.384 +  bool __result;
1457.385 +
1457.386 +  if (__stl_in == __end) {      // We may have already read a 0.  If so,
1457.387 +
1457.388 +    if (__got > 0) {       // the result is 0 even if we're at eof.
1457.389 +      __val = 0;
1457.390 +      __result = true;
1457.391 +    }
1457.392 +    else
1457.393 +      __result = false;
1457.394 +  } else {
1457.395 +
1457.396 +    const bool __negative = __base_or_zero & 2;
1457.397 +    const int __base = __base_or_zero >> 2;
1457.398 +
1457.399 +#if defined(__HP_aCC) && (__HP_aCC == 1)
1457.400 +     if (_IsSigned)
1457.401 +       __result = __get_integer(__stl_in, __end, __base,  __val, __got, __negative, __numpunct.thousands_sep(), __grouping, __true_type() );
1457.402 +     else
1457.403 +      __result = __get_integer(__stl_in, __end, __base,  __val, __got, __negative, __numpunct.thousands_sep(), __grouping, __false_type() );
1457.404 +#else
1457.405 +#ifdef __SYMBIAN32__
1457.406 +    _Integer __tval;
1457.407 +    __result = __get_integer(__stl_in, __end, __base,  __tval, __got, __negative, __numpunct.thousands_sep(), __grouping, _IsSigned());
1457.408 +    if(__result)
1457.409 +        __val = __tval;
1457.410 +#else
1457.411 +    __result = __get_integer(__stl_in, __end, __base,  __val, __got, __negative, __numpunct.thousands_sep(), __grouping, _IsSigned());
1457.412 +#endif    
1457.413 +# endif
1457.414 +  }
1457.415 +
1457.416 +  __err = __STATIC_CAST(ios_base::iostate, __result ? ios_base::goodbit : ios_base::failbit);
1457.417 +
1457.418 +  if (__stl_in == __end)
1457.419 +    __err |= ios_base::eofbit;
1457.420 +  return __stl_in;
1457.421 +}
1457.422 +
1457.423 +// _M_read_float and its helper functions.
1457.424 +template <class _InputIter, class _CharT>
1457.425 +_InputIter  _STLP_CALL
1457.426 +__copy_sign(_InputIter __first, _InputIter __last, string& __v,
1457.427 +            _CharT __xplus, _CharT __xminus) {
1457.428 +    if (__first != __last) {
1457.429 +    _CharT __c = *__first;
1457.430 +    if (__c == __xplus)
1457.431 +      ++__first;
1457.432 +    else if (__c == __xminus) {
1457.433 +      __v.push_back('-');
1457.434 +      ++__first;
1457.435 +    }
1457.436 +  }
1457.437 +  return __first;
1457.438 +}
1457.439 +
1457.440 +
1457.441 +template <class _InputIter, class _CharT>
1457.442 +bool _STLP_CALL
1457.443 +__copy_digits(_InputIter& __first, _InputIter& __last,
1457.444 +              string& __v, const _CharT* __digits)
1457.445 +{
1457.446 +  bool __ok = false;
1457.447 +
1457.448 +  for ( ; __first != __last; ++__first) {
1457.449 +    _CharT __c = *__first;
1457.450 +    if (__get_fdigit(__c, __digits)) {
1457.451 +      __v.push_back((char)__c);
1457.452 +      __ok = true;
1457.453 +    }
1457.454 +    else
1457.455 +      break;
1457.456 +  }
1457.457 +  return __ok;
1457.458 +}
1457.459 +
1457.460 +template <class _InputIter, class _CharT>
1457.461 +bool _STLP_CALL
1457.462 +__copy_grouped_digits(_InputIter& __first, _InputIter& __last,
1457.463 +		      string& __v, const _CharT * __digits,
1457.464 +		      _CharT __sep, const string& __grouping,
1457.465 +		      bool& __grouping_ok)
1457.466 +{
1457.467 +  bool __ok = false;
1457.468 +//  char __group_sizes[64];
1457.469 +  char __group_sizes[256] = {0};//group sizes can be more
1457.470 +  char*__group_sizes_end = __group_sizes;
1457.471 +  char __current_group_size = 0;
1457.472 +
1457.473 +  for ( ; __first != __last; ++__first) {
1457.474 +    _CharT __c = *__first;
1457.475 +    bool __tmp = __get_fdigit_or_sep(__c, __sep, __digits);
1457.476 +    if (__tmp) {
1457.477 +      if (__c == ',') { 
1457.478 +      	// seperator should come after extracting some digits
1457.479 +      	if (!__current_group_size)
1457.480 +      		break;
1457.481 +      	
1457.482 +        *__group_sizes_end++ = __current_group_size;        
1457.483 +        __current_group_size = 0;
1457.484 +      }
1457.485 +      else {
1457.486 +        __ok = true;
1457.487 +        __v.push_back((char)__c);
1457.488 +        ++__current_group_size;
1457.489 +      }
1457.490 +    }
1457.491 +    else
1457.492 +      break;
1457.493 +  }
1457.494 +
1457.495 +  if (__group_sizes_end != __group_sizes)
1457.496 +    *__group_sizes_end++ = __current_group_size;    
1457.497 +  __grouping_ok = __valid_grouping(__group_sizes, __group_sizes_end, __grouping.data(), __grouping.data() + __grouping.size());
1457.498 +  __ok = __ok & __grouping_ok; //Added, to check for valid grouping. If not valid grouping should return false.
1457.499 +  return __ok;
1457.500 +}
1457.501 +
1457.502 +
1457.503 +template <class _InputIter, class _CharT>
1457.504 +bool _STLP_CALL
1457.505 +_M_read_float(string& __buf, _InputIter& __stl_in, _InputIter& __end, ios_base& __s, _CharT*)
1457.506 +{
1457.507 +  // Create a string, copying characters of the form
1457.508 +  // [+-]? [0-9]* .? [0-9]* ([eE] [+-]? [0-9]+)?
1457.509 +
1457.510 +  bool __digits_before_dot /* = false */;
1457.511 +  bool __digits_after_dot = false;
1457.512 +  bool __ok;
1457.513 +
1457.514 +  bool   __grouping_ok = true;
1457.515 +
1457.516 +  const ctype<_CharT>& __ct = use_facet< ctype<_CharT> >(__s.getloc());
1457.517 +  // const ctype<_CharT>& __ct = *(const ctype<_CharT>*)__s._M_ctype_facet();
1457.518 +  //const numpunct<_CharT>& __numpunct = *(const numpunct<_CharT>*)__s._M_numpunct_facet();
1457.519 +  const numpunct<_CharT>& __numpunct = use_facet< numpunct<_CharT> >(__s.getloc());
1457.520 +//  const string& __grouping = __s._M_grouping(); // cached copy //stdcxx fix - 11/1/06
1457.521 +    const string& __grouping = __numpunct.grouping();
1457.522 +
1457.523 +  _CharT __dot = __numpunct.decimal_point();
1457.524 +  _CharT __sep = __numpunct.thousands_sep();
1457.525 +
1457.526 +  _CharT __digits[10];
1457.527 +  _CharT __xplus;
1457.528 +  _CharT __xminus;
1457.529 +
1457.530 +  _CharT __pow_e;
1457.531 +  _CharT __pow_E;
1457.532 +
1457.533 +  _Initialize_get_float(__ct, __xplus, __xminus, __pow_e, __pow_E, __digits);
1457.534 +
1457.535 +  // Get an optional sign
1457.536 +  __stl_in = __copy_sign(__stl_in, __end, __buf, __xplus, __xminus);
1457.537 +
1457.538 +  // Get an optional string of digits.
1457.539 +  if (__grouping.size() != 0)
1457.540 +    __digits_before_dot = __copy_grouped_digits(__stl_in, __end, __buf, __digits,
1457.541 +						__sep, __grouping, __grouping_ok);
1457.542 +  else
1457.543 +    __digits_before_dot = __copy_digits(__stl_in, __end, __buf, __digits);
1457.544 +
1457.545 +  // Get an optional decimal point, and an optional string of digits.
1457.546 +  if (__stl_in != __end && *__stl_in == __dot) {
1457.547 +    __buf.push_back('.');
1457.548 +    ++__stl_in;
1457.549 +    __digits_after_dot = __copy_digits(__stl_in, __end, __buf, __digits);
1457.550 +  }
1457.551 +
1457.552 +  // There have to be some digits, somewhere.
1457.553 +  __ok = __digits_before_dot || __digits_after_dot;
1457.554 +
1457.555 +  // Get an optional exponent.
1457.556 +  if (__ok && __stl_in != __end && (*__stl_in == __pow_e || *__stl_in == __pow_E)) {
1457.557 +    __buf.push_back('e');
1457.558 +    ++__stl_in;
1457.559 +    __stl_in = __copy_sign(__stl_in, __end, __buf, __xplus, __xminus);
1457.560 +    __ok = __copy_digits(__stl_in, __end, __buf, __digits);
1457.561 +    // If we have an exponent then the sign
1457.562 +    // is optional but the digits aren't.
1457.563 +  }
1457.564 +
1457.565 +  return __ok;
1457.566 +}
1457.567 +
1457.568 +//
1457.569 +// num_get<>, num_put<>
1457.570 +//
1457.571 +
1457.572 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1457.573 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1457.574 +template <class _CharT, class _InputIterator>
1457.575 +locale::id num_get<_CharT, _InputIterator>::id;
1457.576 +#endif
1457.577 +# else
1457.578 +
1457.579 +typedef num_get<char, const char*> num_get_char;
1457.580 +typedef num_get<char, istreambuf_iterator<char, char_traits<char> > > num_get_char_2;
1457.581 +
1457.582 +#ifndef __SYMBIAN32__
1457.583 +__DECLARE_INSTANCE(locale::id, num_get_char::id, );
1457.584 +__DECLARE_INSTANCE(locale::id, num_get_char_2::id, );
1457.585 +#endif
1457.586 +
1457.587 +# ifndef _STLP_NO_WCHAR_T
1457.588 +
1457.589 +typedef num_get<wchar_t, const wchar_t*> num_get_wchar_t;
1457.590 +typedef num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > num_get_wchar_t_2;
1457.591 +
1457.592 +#ifndef __SYMBIAN32__
1457.593 +__DECLARE_INSTANCE(locale::id, num_get_wchar_t::id, );
1457.594 +__DECLARE_INSTANCE(locale::id, num_get_wchar_t_2::id, );
1457.595 +#endif
1457.596 +
1457.597 +# endif
1457.598 +
1457.599 +# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1457.600 +
1457.601 +# ifndef _STLP_NO_BOOL
1457.602 +template <class _CharT, class _InputIter>
1457.603 +_InputIter
1457.604 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end,
1457.605 +                                    ios_base& __s,
1457.606 +                                    ios_base::iostate& __err, bool& __x) const
1457.607 +{
1457.608 +  if (__s.flags() & ios_base::boolalpha) {
1457.609 +    locale __loc = __s.getloc();
1457.610 +    //const _Numpunct& __np = *(const _Numpunct*)__s._M_numpunct_facet();
1457.611 +        const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc) ;
1457.612 +//    const ctype<_CharT>& __ct =    use_facet<ctype<_CharT> >(__loc) ;
1457.613 +
1457.614 +    const basic_string<_CharT> __truename  = __np.truename();
1457.615 +    const basic_string<_CharT> __falsename = __np.falsename();
1457.616 +    bool __true_ok  = true;
1457.617 +    bool __false_ok = true;
1457.618 +
1457.619 +    size_t __n = 0;
1457.620 +    for ( ; __stl_in != __end; ++__stl_in) {
1457.621 +      _CharT __c = *__stl_in;
1457.622 +      __true_ok  = __true_ok  && (__c == __truename[__n]);
1457.623 +      __false_ok = __false_ok && (__c == __falsename[__n]);
1457.624 +      ++__n;
1457.625 +
1457.626 +      if ((!__true_ok && !__false_ok) ||
1457.627 +          (__true_ok  && __n >= __truename.size()) ||
1457.628 +          (__false_ok && __n >= __falsename.size())) {
1457.629 +          
1457.630 +          if (__true_ok || __false_ok)  //if anything OK then increment, else, break
1457.631 +		++__stl_in;
1457.632 +        break;
1457.633 +      }
1457.634 +    }
1457.635 +	// stdcxx fix, Changed to check for complete true,false string
1457.636 +    if (__true_ok  && __n < __truename.size()) 
1457.637 +   {
1457.638 +	for ( ; __stl_in != __end; ++__stl_in) {
1457.639 +      		_CharT __c = *__stl_in;
1457.640 +      		__true_ok  = __true_ok  && (__c == __truename[__n]);
1457.641 +		++__n;  
1457.642 +		 if ((!__true_ok) ||(__true_ok  && __n >= __truename.size()) )
1457.643 +		 {
1457.644 +		 	if(__true_ok)
1457.645 +		 		++__stl_in;
1457.646 +          		break;
1457.647 +		 }
1457.648 +		 	
1457.649 +	}
1457.650 +	 if (__true_ok  && __n < __truename.size()) 
1457.651 +	   	__true_ok  = false;
1457.652 +    }
1457.653 +    if (__false_ok && __n < __falsename.size())
1457.654 +   {
1457.655 +
1457.656 +   		for ( ; __stl_in != __end; ++__stl_in) {
1457.657 +      		_CharT __c = *__stl_in;
1457.658 +      		__false_ok  = __false_ok  && (__c == __falsename[__n]);
1457.659 +		++__n;  
1457.660 +		 if ((!__false_ok) ||(__false_ok  && __n >= __falsename.size()) )         
1457.661 +          	{
1457.662 +			if(__false_ok)
1457.663 +				++__stl_in;
1457.664 +          		break;
1457.665 +		 }
1457.666 +		 	
1457.667 +		}
1457.668 +		if (__false_ok && __n < __falsename.size())
1457.669 +   			__false_ok = false;
1457.670 +    }
1457.671 +
1457.672 +    if (__true_ok || __false_ok) {
1457.673 +      __err = ios_base::goodbit;
1457.674 +      __x = __true_ok;
1457.675 +    }
1457.676 +    else
1457.677 +      __err = ios_base::failbit;
1457.678 +
1457.679 +    if (__stl_in == __end)
1457.680 +      __err |= ios_base::eofbit;
1457.681 +
1457.682 +    return __stl_in;
1457.683 +  }
1457.684 +
1457.685 +  else {
1457.686 +    long __lx;
1457.687 +    _InputIter __tmp = this->do_get(__stl_in, __end, __s, __err, __lx);
1457.688 +    if (!(__err & ios_base::failbit)) {
1457.689 +      if (__lx == 0)
1457.690 +        __x = false;
1457.691 +      else if (__lx == 1)
1457.692 +        __x = true;
1457.693 +      else
1457.694 +        __err |= ios_base::failbit;
1457.695 +    }
1457.696 +    return __tmp;
1457.697 +  }
1457.698 +}
1457.699 +
1457.700 +# endif /* _STLP_NO_BOOL */
1457.701 +
1457.702 +//# ifdef _STLP_FIX_LIBRARY_ISSUES
1457.703 +template <class _CharT, class _InputIter>
1457.704 +_InputIter
1457.705 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.706 +                                    ios_base::iostate& __err, short& __val) const {
1457.707 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.708 +}
1457.709 +
1457.710 +template <class _CharT, class _InputIter>
1457.711 +_InputIter
1457.712 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.713 +                                    ios_base::iostate& __err, int& __val) const {
1457.714 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.715 +}
1457.716 +
1457.717 +//# endif
1457.718 +
1457.719 +template <class _CharT, class _InputIter>
1457.720 +_InputIter
1457.721 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.722 +                                    ios_base::iostate& __err, long& __val) const {
1457.723 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.724 +}
1457.725 +
1457.726 +template <class _CharT, class _InputIter>
1457.727 +_InputIter
1457.728 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.729 +                                    ios_base::iostate& __err,
1457.730 +                                    unsigned short& __val) const {
1457.731 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.732 +}
1457.733 +
1457.734 +template <class _CharT, class _InputIter>
1457.735 +_InputIter
1457.736 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.737 +                                    ios_base::iostate& __err,
1457.738 +                                    unsigned int& __val) const {
1457.739 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.740 +}
1457.741 +
1457.742 +template <class _CharT, class _InputIter>
1457.743 +_InputIter
1457.744 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.745 +                                    ios_base::iostate& __err,
1457.746 +                                    unsigned long& __val) const {
1457.747 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.748 +}
1457.749 +
1457.750 +
1457.751 +template <class _CharT, class _InputIter>
1457.752 +_InputIter
1457.753 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.754 +                                    ios_base::iostate& __err,
1457.755 +                                    float& __val) const {
1457.756 +  string __buf ;
1457.757 +  bool __ok = _M_read_float(__buf, __stl_in, __end, __str, (_CharT*)0 );
1457.758 +  if(__ok) //If success reading float then convert it.
1457.759 +  {
1457.760 +#ifdef __SYMBIAN32__
1457.761 +    float __tval;
1457.762 +    __ok = __string_to_float(__buf, __tval);
1457.763 +    if(__ok)
1457.764 +        __val = __tval;
1457.765 +#else
1457.766 +    __string_to_float(__buf, __val);
1457.767 +#endif    
1457.768 +  }
1457.769 +  __err = __STATIC_CAST(ios_base::iostate, __ok ? ios_base::goodbit : ios_base::failbit);
1457.770 +  if (__stl_in == __end)
1457.771 +    __err |= ios_base::eofbit;
1457.772 +  return __stl_in;
1457.773 +}
1457.774 +
1457.775 +template <class _CharT, class _InputIter>
1457.776 +_InputIter
1457.777 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.778 +                                    ios_base::iostate& __err,
1457.779 +                                    double& __val) const {
1457.780 +  string __buf ;
1457.781 +  bool __ok = _M_read_float(__buf, __stl_in, __end, __str, (_CharT*)0 );
1457.782 +  if(__ok) //If success reading float then convert it.
1457.783 +  {
1457.784 +#ifdef __SYMBIAN32__
1457.785 +    double __tval;
1457.786 +    __ok = __string_to_float(__buf, __tval);
1457.787 +    if(__ok)
1457.788 +        __val = __tval;
1457.789 +#else
1457.790 +    __string_to_float(__buf, __val);
1457.791 +#endif    
1457.792 +  }
1457.793 +  __err = __STATIC_CAST(ios_base::iostate, __ok ? ios_base::goodbit : ios_base::failbit);
1457.794 +  if (__stl_in == __end)
1457.795 +    __err |= ios_base::eofbit;
1457.796 +  return __stl_in;
1457.797 +}
1457.798 +
1457.799 +#ifndef _STLP_NO_LONG_DOUBLE
1457.800 +template <class _CharT, class _InputIter>
1457.801 +_InputIter
1457.802 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.803 +				    ios_base::iostate& __err,
1457.804 +                                    long double& __val) const {
1457.805 +  string __buf ;
1457.806 +  bool __ok = _M_read_float(__buf, __stl_in, __end, __str, (_CharT*)0 );
1457.807 +  if(__ok) //If success reading float then convert it.
1457.808 +  {
1457.809 +#ifdef __SYMBIAN32__
1457.810 +    long double __tval;
1457.811 +    __ok = __string_to_float(__buf, __tval);
1457.812 +    if(__ok)
1457.813 +        __val = __tval;
1457.814 +#else
1457.815 +    __string_to_float(__buf, __val);
1457.816 +#endif    
1457.817 +  }
1457.818 +  __err = __STATIC_CAST(ios_base::iostate, __ok ? ios_base::goodbit : ios_base::failbit);
1457.819 +  if (__stl_in == __end)
1457.820 +    __err |= ios_base::eofbit;
1457.821 +  return __stl_in;
1457.822 +}
1457.823 +#endif /* _STLP_NO_LONG_DOUBLE */
1457.824 +
1457.825 +template <class _CharT, class _InputIter>
1457.826 +_InputIter
1457.827 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.828 +                           ios_base::iostate& __err,
1457.829 +                           void*& __p) const {
1457.830 +#ifdef	__SYMBIAN32__
1457.831 +	unsigned long __val;	//using only long
1457.832 +#else
1457.833 +# if defined(_STLP_LONG_LONG)&&!defined(__MRC__)		//*ty 12/07/2001 - MrCpp can not cast from long long to void*
1457.834 +  unsigned _STLP_LONG_LONG __val;
1457.835 +# else
1457.836 +  unsigned long __val;
1457.837 +# endif
1457.838 +#endif //__SYMBIAN32__
1457.839 +#ifdef __SYMBIAN32__
1457.840 +    ios_base::fmtflags __save_flags = __str.flags();
1457.841 +
1457.842 +    __str.setf(ios_base::hex, ios_base::basefield);
1457.843 +    __str.setf(ios_base::showbase);
1457.844 +    __str.setf(ios_base::internal, ios_base::adjustfield);
1457.845 +    __str.width((sizeof(void*) * 2) + 2);
1457.846 +#endif // __SYMBIAN32__
1457.847 +    iter_type __tmp = _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.848 +    if (!(__err & ios_base::failbit))
1457.849 +      __p = __REINTERPRET_CAST(void*,(long)__val);
1457.850 +#ifdef __SYMBIAN32__
1457.851 +    __str.flags(__save_flags);
1457.852 +#endif //__SYMBIAN32__
1457.853 +    return __tmp;
1457.854 +  }
1457.855 +
1457.856 +
1457.857 +#ifdef _STLP_LONG_LONG
1457.858 +
1457.859 +template <class _CharT, class _InputIter>
1457.860 +_InputIter
1457.861 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.862 +                                    ios_base::iostate& __err,
1457.863 +                                    _STLP_LONG_LONG& __val) const {
1457.864 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.865 +}
1457.866 +
1457.867 +template <class _CharT, class _InputIter>
1457.868 +_InputIter
1457.869 +num_get<_CharT, _InputIter>::do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1457.870 +                                    ios_base::iostate& __err,
1457.871 +                                    unsigned _STLP_LONG_LONG& __val) const {
1457.872 +  return _M_do_get_integer(__stl_in, __end, __str, __err, __val, (_CharT*)0 );
1457.873 +}
1457.874 +
1457.875 +#endif /* _STLP_LONG_LONG */
1457.876 +
1457.877 +_STLP_END_NAMESPACE
1457.878 +
1457.879 +# endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */
1457.880 +
1457.881 +#endif /* _STLP_NUMERIC_FACETS_C */
1457.882 +
1457.883 +// Local Variables:
1457.884 +// mode:C++
1457.885 +// End:
  1458.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1458.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_num_get.h	Wed Mar 31 12:27:01 2010 +0100
  1458.3 @@ -0,0 +1,316 @@
  1458.4 +/*
  1458.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1458.6 + * Copyright (c) 1999
  1458.7 + * Silicon Graphics Computer Systems, Inc.
  1458.8 + *
  1458.9 + * Copyright (c) 1999 
 1458.10 + * Boris Fomitchev
 1458.11 + *
 1458.12 + * This material is provided "as is", with absolutely no warranty expressed
 1458.13 + * or implied. Any use is at your own risk.
 1458.14 + *
 1458.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1458.16 + * without fee, provided the above notices are retained on all copies.
 1458.17 + * Permission to modify the code and to distribute modified code is granted,
 1458.18 + * provided the above notices are retained, and a notice that the code was
 1458.19 + * modified is included with the above copyright notice.
 1458.20 + *
 1458.21 + */ 
 1458.22 +// WARNING: This is an internal header file, included by other C++
 1458.23 +// standard library headers.  You should not attempt to use this header
 1458.24 +// file directly.
 1458.25 +
 1458.26 +
 1458.27 +#ifndef _STLP_INTERNAL_NUM_GET_H
 1458.28 +#define _STLP_INTERNAL_NUM_GET_H
 1458.29 +
 1458.30 +#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1458.31 +# include <stl/_istreambuf_iterator.h>
 1458.32 +#endif
 1458.33 +
 1458.34 +# ifndef _STLP_C_LOCALE_H
 1458.35 +#  include <stl/c_locale.h>
 1458.36 +# endif
 1458.37 +
 1458.38 +#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1458.39 +# include <stl/_numpunct.h>
 1458.40 +#endif
 1458.41 +#ifndef _STLP_INTERNAL_CTYPE_H
 1458.42 +# include <stl/_ctype.h>
 1458.43 +#endif
 1458.44 +
 1458.45 +_STLP_BEGIN_NAMESPACE
 1458.46 +
 1458.47 +//----------------------------------------------------------------------
 1458.48 +// num_get facets
 1458.49 +
 1458.50 +# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
 1458.51 +template <class _CharT, class _InputIter>  
 1458.52 +# else
 1458.53 +template <class _CharT, class _InputIter = istreambuf_iterator<_CharT> >  
 1458.54 +# endif
 1458.55 +#ifdef __SYMBIAN32__
 1458.56 +class num_get : public locale::facet
 1458.57 +#else
 1458.58 +class num_get: public locale::facet
 1458.59 +#endif
 1458.60 +{
 1458.61 +  friend class _Locale;
 1458.62 +public:
 1458.63 +  typedef _CharT     char_type;
 1458.64 +  typedef _InputIter iter_type;
 1458.65 +
 1458.66 +  explicit   num_get(size_t __refs = 0): locale::facet(__refs) {}
 1458.67 +    
 1458.68 +# ifndef _STLP_NO_BOOL
 1458.69 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1458.70 +                ios_base::iostate& __err, bool& __val) const {
 1458.71 +    return do_get(__stl_in, __end, __str, __err, __val);
 1458.72 +  }
 1458.73 +# endif
 1458.74 +
 1458.75 +//# ifdef _STLP_FIX_LIBRARY_ISSUES
 1458.76 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1458.77 +                ios_base::iostate& __err, short& __val) const {
 1458.78 +    return do_get(__stl_in, __end, __str, __err, __val);
 1458.79 +  }
 1458.80 +
 1458.81 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1458.82 +                ios_base::iostate& __err, int& __val) const {
 1458.83 +    return do_get(__stl_in, __end, __str, __err, __val);
 1458.84 +  }
 1458.85 +//# endif
 1458.86 +
 1458.87 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1458.88 +                ios_base::iostate& __err, long& __val) const {
 1458.89 +    return do_get(__stl_in, __end, __str, __err, __val);
 1458.90 +  }
 1458.91 +
 1458.92 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1458.93 +                ios_base::iostate& __err, unsigned short& __val) const {
 1458.94 +    return do_get(__stl_in, __end, __str, __err, __val);
 1458.95 +  }
 1458.96 +
 1458.97 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
 1458.98 +                ios_base::iostate& __err, unsigned int& __val) const {
 1458.99 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.100 +  }
1458.101 +
1458.102 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.103 +                ios_base::iostate& __err, unsigned long& __val) const {
1458.104 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.105 +  }
1458.106 +
1458.107 +#ifdef _STLP_LONG_LONG
1458.108 +
1458.109 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.110 +                ios_base::iostate& __err, _STLP_LONG_LONG& __val) const {
1458.111 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.112 +  }
1458.113 +
1458.114 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.115 +                ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const {
1458.116 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.117 +  }
1458.118 +
1458.119 +#endif /* _STLP_LONG_LONG */
1458.120 +
1458.121 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.122 +                 ios_base::iostate& __err, float& __val) const {
1458.123 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.124 +  }
1458.125 +
1458.126 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.127 +                ios_base::iostate& __err, double& __val) const {
1458.128 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.129 +  }
1458.130 +
1458.131 +# ifndef _STLP_NO_LONG_DOUBLE
1458.132 +
1458.133 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.134 +                ios_base::iostate& __err, long double& __val) const {
1458.135 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.136 +  }
1458.137 +# endif
1458.138 +
1458.139 +  _InputIter get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.140 +                ios_base::iostate& __err, void*& __val) const {
1458.141 +    return do_get(__stl_in, __end, __str, __err, __val);
1458.142 +  }
1458.143 +
1458.144 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1458.145 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1458.146 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* );
1458.147 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1458.148 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* );
1458.149 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char**);
1458.150 +    
1458.151 +#else
1458.152 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1458.153 +#endif
1458.154 +
1458.155 +protected:
1458.156 +  ~num_get() {}
1458.157 +
1458.158 +  typedef string               string_type; 
1458.159 +  typedef ctype<_CharT>        _Ctype;
1458.160 +  typedef numpunct<_CharT>     _Numpunct;
1458.161 +
1458.162 +# ifndef _STLP_NO_BOOL
1458.163 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end,
1458.164 +                           ios_base& __str, ios_base::iostate& __err, bool& __val) const;
1458.165 +# endif
1458.166 +
1458.167 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.168 +                           ios_base::iostate& __err, long& __val) const;
1458.169 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.170 +                           ios_base::iostate& __err, unsigned short& __val) const;
1458.171 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.172 +                           ios_base::iostate& __err, unsigned int& __val) const;
1458.173 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.174 +                           ios_base::iostate& __err, unsigned long& __val) const;
1458.175 +//# ifdef _STLP_FIX_LIBRARY_ISSUES
1458.176 +  // issue 118 : those are actually not supposed to be here
1458.177 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.178 +                           ios_base::iostate& __err, short& __val) const;
1458.179 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.180 +                           ios_base::iostate& __err, int& __val) const;
1458.181 +//# endif
1458.182 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.183 +                          ios_base::iostate& __err, float& __val) const;
1458.184 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.185 +                           ios_base::iostate& __err, double& __val) const;
1458.186 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.187 +                           ios_base::iostate& __err,
1458.188 +                           void*& __p) const;
1458.189 +
1458.190 +#ifndef _STLP_NO_LONG_DOUBLE
1458.191 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.192 +                           ios_base::iostate& __err, long double& __val) const;
1458.193 +#endif /* _STLP_NO_LONG_DOUBLE */
1458.194 +
1458.195 +#ifdef _STLP_LONG_LONG
1458.196 +
1458.197 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.198 +                            ios_base::iostate& __err, _STLP_LONG_LONG& __val) const;
1458.199 +  virtual _InputIter do_get(_InputIter __stl_in, _InputIter __end, ios_base& __str,
1458.200 +                           ios_base::iostate& __err, unsigned _STLP_LONG_LONG& __val) const;
1458.201 +#endif /* _STLP_LONG_LONG */
1458.202 +
1458.203 +};
1458.204 +
1458.205 +
1458.206 +# ifdef _STLP_USE_TEMPLATE_EXPORT
1458.207 +_STLP_EXPORT_TEMPLATE_CLASS num_get<char, istreambuf_iterator<char, char_traits<char> > >;
1458.208 +// _STLP_EXPORT_TEMPLATE_CLASS num_get<char, const char*>;
1458.209 +#  ifndef _STLP_NO_WCHAR_T
1458.210 +_STLP_EXPORT_TEMPLATE_CLASS num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1458.211 +// _STLP_EXPORT_TEMPLATE_CLASS num_get<wchar_t, const wchar_t*>;
1458.212 +#  endif /* _STLP_NO_WCHAR_T */
1458.213 +# endif
1458.214 +
1458.215 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
1458.216 +
1458.217 +_STLP_DECLSPEC extern bool  _STLP_CALL __valid_grouping(const char*, const char*, const char*, const char*);
1458.218 +
1458.219 +template <class _InputIter, class _Integer>
1458.220 +bool _STLP_CALL
1458.221 +__get_decimal_integer(_InputIter& __first, _InputIter& __last, _Integer& __val);
1458.222 +
1458.223 +inline bool _STLP_CALL __get_fdigit(char& __c, const char*);
1458.224 +inline bool _STLP_CALL __get_fdigit_or_sep(char& __c, char __sep, const char *);
1458.225 +# ifndef _STLP_NO_WCHAR_T
1458.226 +inline bool _STLP_CALL __get_fdigit(wchar_t&, const wchar_t*);
1458.227 +inline bool _STLP_CALL __get_fdigit_or_sep(wchar_t&, wchar_t, const wchar_t*);
1458.228 +# endif
1458.229 +
1458.230 +inline void  _STLP_CALL
1458.231 +_Initialize_get_float(const ctype<char>&,
1458.232 +                       char& Plus, char& Minus,
1458.233 +                       char& pow_e, char& pow_E,
1458.234 +                       char*)
1458.235 +{
1458.236 +  Plus = '+';
1458.237 +  Minus = '-';
1458.238 +  pow_e = 'e';
1458.239 +  pow_E = 'E';
1458.240 +}
1458.241 +// Helper functions for _M_do_get_float.
1458.242 +
1458.243 +# ifndef _STLP_NO_WCHAR_T
1458.244 +
1458.245 +inline void  _STLP_CALL
1458.246 +_Initialize_get_float( const ctype<wchar_t>& ct,
1458.247 +                       wchar_t& Plus, wchar_t& Minus,
1458.248 +                       wchar_t& pow_e, wchar_t& pow_E,
1458.249 +                       wchar_t* digits)
1458.250 +{
1458.251 +  char ndigits[11] = "0123456789";
1458.252 +  Plus  = ct.widen('+');
1458.253 +  Minus = ct.widen('-');
1458.254 +  pow_e = ct.widen('e');
1458.255 +  pow_E = ct.widen('E');
1458.256 +  ct.widen(ndigits + 0, ndigits + 10, digits);
1458.257 +}
1458.258 +
1458.259 +# endif /* WCHAR_T */
1458.260 +
1458.261 +#ifdef __SYMBIAN32__
1458.262 +template<class _CharT>
1458.263 +inline void  _STLP_CALL
1458.264 +_Initialize_get_float( const ctype<_CharT>& ct,
1458.265 +                       _CharT& Plus, _CharT& Minus,
1458.266 +                       _CharT& pow_e, _CharT& pow_E,
1458.267 +                       _CharT* digits)
1458.268 +{
1458.269 +  char ndigits[11] = "0123456789";
1458.270 +  Plus  = ct.widen('+');
1458.271 +  Minus = ct.widen('-');
1458.272 +  pow_e = ct.widen('e');
1458.273 +  pow_E = ct.widen('E');
1458.274 +  ct.widen(ndigits + 0, ndigits + 10, digits);
1458.275 +}
1458.276 +#endif
1458.277 +
1458.278 +int  _STLP_CALL __string_to_float(const string&, float&);
1458.279 +int  _STLP_CALL __string_to_float(const string&, double&);
1458.280 +# ifndef _STLP_NO_LONG_DOUBLE
1458.281 +int  _STLP_CALL __string_to_float(const string&, long double&);
1458.282 +# endif
1458.283 +# endif
1458.284 +
1458.285 +# if defined (__BORLANDC__) && defined (_RTLDLL)
1458.286 +inline void _Stl_loc_init_num_get() {  
1458.287 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1458.288 +  num_get<char, istreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index = 12;
1458.289 +  num_get<char, const char*>::GetFacetLocaleId()._M_index = 13;
1458.290 +#else
1458.291 +  num_get<char, istreambuf_iterator<char, char_traits<char> > >::id._M_index = 12;
1458.292 +  num_get<char, const char*>::id._M_index = 13;
1458.293 +#endif
1458.294 +# ifndef _STLP_NO_WCHAR_T
1458.295 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1458.296 +  num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::GetFacetLocaleId()._M_index = 31;
1458.297 +  num_get<wchar_t, const wchar_t*>::GetFacetLocaleId()._M_index = 32;
1458.298 +#else
1458.299 +  num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index = 31;
1458.300 +  num_get<wchar_t, const wchar_t*>::id._M_index = 32;
1458.301 +#endif
1458.302 +# endif
1458.303 +} 
1458.304 +# endif
1458.305 +
1458.306 +_STLP_DECLSPEC unsigned char* _STLP_CALL __get_digit_val_table(void);
1458.307 +_STLP_DECLSPEC char* _STLP_CALL __get_narrow_atoms(void);
1458.308 +_STLP_END_NAMESPACE
1458.309 +
1458.310 +#  if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && ! defined (_STLP_LINK_TIME_INSTANTIATION)
1458.311 +#   include <stl/_num_get.c>
1458.312 +#  endif
1458.313 +
1458.314 +#endif /* _STLP_INTERNAL_NUM_GET_H */
1458.315 +
1458.316 +// Local Variables:
1458.317 +// mode:C++
1458.318 +// End:
1458.319 +
  1459.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1459.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_num_put.c	Wed Mar 31 12:27:01 2010 +0100
  1459.3 @@ -0,0 +1,673 @@
  1459.4 +/*
  1459.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1459.6 + *
  1459.7 + * Copyright (c) 1999
  1459.8 + * Silicon Graphics Computer Systems, Inc.
  1459.9 + *
 1459.10 + * Copyright (c) 1999 
 1459.11 + * Boris Fomitchev
 1459.12 + *
 1459.13 + * This material is provided "as is", with absolutely no warranty expressed
 1459.14 + * or implied. Any use is at your own risk.
 1459.15 + *
 1459.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1459.17 + * without fee, provided the above notices are retained on all copies.
 1459.18 + * Permission to modify the code and to distribute modified code is granted,
 1459.19 + * provided the above notices are retained, and a notice that the code was
 1459.20 + * modified is included with the above copyright notice.
 1459.21 + *
 1459.22 + */ 
 1459.23 +#ifndef _STLP_NUM_PUT_C
 1459.24 +#define _STLP_NUM_PUT_C
 1459.25 +
 1459.26 +#ifndef _STLP_INTERNAL_NUM_PUT_H
 1459.27 +# include <stl/_num_put.h>
 1459.28 +#endif
 1459.29 +
 1459.30 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1459.31 +
 1459.32 +#ifndef _STLP_LIMITS_H
 1459.33 +# include <stl/_limits.h>
 1459.34 +#endif
 1459.35 +
 1459.36 +_STLP_BEGIN_NAMESPACE
 1459.37 +
 1459.38 +// _M_do_put_float and its helper functions.  Strategy: write the output
 1459.39 +// to a buffer of char, transform the buffer to _CharT, and then copy
 1459.40 +// it to the output.
 1459.41 +
 1459.42 +template <class _CharT, class _OutputIter,class _Float>
 1459.43 +_OutputIter _STLP_CALL
 1459.44 +_M_do_put_float(_OutputIter __s, ios_base& __f, _CharT __fill,_Float    __x);
 1459.45 +
 1459.46 +
 1459.47 +//----------------------------------------------------------------------
 1459.48 +// num_put facet
 1459.49 +
 1459.50 +template <class _CharT, class _OutputIter>
 1459.51 +_OutputIter  _STLP_CALL
 1459.52 +__copy_float_and_fill(const _CharT* __first, const _CharT* __last,
 1459.53 +                      _OutputIter __stl_out,
 1459.54 +                      ios_base::fmtflags __flags,
 1459.55 +                      streamsize __width, _CharT __fill,
 1459.56 +                      _CharT __xplus, _CharT __xminus) {
 1459.57 +  if (__width <= __last - __first)
 1459.58 +    return copy(__first, __last, __stl_out);
 1459.59 +  else {
 1459.60 +    streamsize __pad = __width - (__last - __first);
 1459.61 +    ios_base::fmtflags __dir = __flags & ios_base::adjustfield;
 1459.62 +
 1459.63 +    if (__dir == ios_base::left) {
 1459.64 +      __stl_out = copy(__first, __last, __stl_out);
 1459.65 +      return fill_n(__stl_out, __pad, __fill);
 1459.66 +    }
 1459.67 +    else if (__dir == ios_base::internal && __first != __last &&
 1459.68 +             (*__first == __xplus || *__first == __xminus)) {
 1459.69 +      *__stl_out++ = *__first++;
 1459.70 +      __stl_out = fill_n(__stl_out, __pad, __fill);
 1459.71 +      return copy(__first, __last, __stl_out);
 1459.72 +    }
 1459.73 +    else {
 1459.74 +      __stl_out = fill_n(__stl_out, __pad, __fill);
 1459.75 +      return copy(__first, __last, __stl_out);
 1459.76 +    }
 1459.77 +  }
 1459.78 +}
 1459.79 +
 1459.80 +#ifndef _STLP_NO_WCHAR_T
 1459.81 +// Helper routine for wchar_t
 1459.82 +template <class _OutputIter>
 1459.83 +_OutputIter  _STLP_CALL
 1459.84 +__put_float(char* __ibuf, char* __iend, _OutputIter __stl_out,
 1459.85 +            ios_base& __f, wchar_t __fill,
 1459.86 +            wchar_t __decimal_point,
 1459.87 +            wchar_t __sep, const string& __grouping)
 1459.88 +{
 1459.89 +  //const ctype<wchar_t>& __ct = *(ctype<wchar_t>*)__f._M_ctype_facet() ;
 1459.90 +    const ctype<wchar_t>& __ct  = use_facet< ctype<wchar_t> >(__f.getloc());
 1459.91 +
 1459.92 + // wchar_t __wbuf[128]; //stdcxx fix
 1459.93 +  wchar_t __wbuf[256+10];
 1459.94 +  wchar_t* __eend = __convert_float_buffer(__ibuf, __iend, __wbuf,
 1459.95 +                                           __ct, __decimal_point);
 1459.96 +  if (!__grouping.empty()) {
 1459.97 +    // In order to do separator-insertion only to the left of the
 1459.98 +    // decimal point, we adjust the size of the first (right-most)
 1459.99 +    // group.  We need to be careful if there is only one entry in
1459.100 +    // grouping:  in this case we need to duplicate the first entry.
1459.101 +
1459.102 +    string __new_grouping = __grouping;
1459.103 +    wchar_t* __decimal_pos = find(__wbuf, __eend, __decimal_point);
1459.104 +    if (__grouping.size() == 1)
1459.105 +      __new_grouping.push_back(__grouping[0]);
1459.106 +
1459.107 +	// dwa 1/24/00 - try as I might, there doesn't seem to be a way
1459.108 +    // to suppress the warning
1459.109 +    __new_grouping[0] += __STATIC_CAST(char, __eend - __decimal_pos);
1459.110 +    ptrdiff_t __len = __insert_grouping(__wbuf, __eend, __new_grouping,
1459.111 +					__sep,
1459.112 +					__ct.widen('+'), __ct.widen('-'),
1459.113 +					0);
1459.114 +    __eend = __wbuf + __len;
1459.115 +  }
1459.116 +
1459.117 +  return __copy_float_and_fill(__wbuf, __eend, __stl_out,
1459.118 +                               __f.flags(), __f.width(0), __fill,
1459.119 +                               __ct.widen('+'), __ct.widen('-')); 
1459.120 +}
1459.121 +# endif /* WCHAR_T */
1459.122 +
1459.123 +#ifdef __SYMBIAN32__
1459.124 +template<class _CharT>
1459.125 +ptrdiff_t _STLP_CALL
1459.126 +__insert_grouping(_CharT * first, _CharT * last, const string& grouping,
1459.127 +		  _CharT separator, _CharT Plus, _CharT Minus, int basechars)
1459.128 +{
1459.129 +	int length = last-first;
1459.130 +	ptrdiff_t res;	
1459.131 +	char*	str = new char(length+64); //morespace for seperators
1459.132 +	memset(str,'\0',length+64);
1459.133 +	memcpy(str,first, length);
1459.134 +	char _separator = (char)separator;
1459.135 +	char _Plus = (char)Plus;
1459.136 +	char _Minus = (char)Minus;
1459.137 +	
1459.138 +  	res = __insert_grouping(str, str+length, grouping, 
1459.139 +			       _separator, _Plus, _Minus, basechars);
1459.140 +	memcpy(first,str,res);
1459.141 +	delete str;
1459.142 +	return res;
1459.143 +	
1459.144 +}
1459.145 +
1459.146 +#endif
1459.147 +// Helper routine for char
1459.148 +template <class _OutputIter>
1459.149 +_OutputIter  _STLP_CALL
1459.150 +__put_float(char* __ibuf, char* __iend, _OutputIter __stl_out,
1459.151 +            ios_base& __f, char __fill,
1459.152 +            char __decimal_point,
1459.153 +            char __sep, const string& __grouping)
1459.154 +{
1459.155 +  __adjust_float_buffer(__ibuf, __iend, __decimal_point);
1459.156 +  if (!__grouping.empty()) {
1459.157 +    string __new_grouping = __grouping;
1459.158 +    const char * __decimal_pos = find(__ibuf, __iend, __decimal_point);
1459.159 +    if (__grouping.size() == 1)
1459.160 +      __new_grouping.push_back(__grouping[0]);
1459.161 +    __new_grouping[0] += __STATIC_CAST(char, (__iend - __decimal_pos));
1459.162 +    ptrdiff_t __len = __insert_grouping(__ibuf, __iend, __new_grouping,
1459.163 +					__sep, '+', '-', 0);
1459.164 +    __iend = __ibuf + __len;
1459.165 +  }
1459.166 +
1459.167 +  return __copy_float_and_fill(__ibuf, __iend, __stl_out,
1459.168 +                               __f.flags(), __f.width(0), __fill, '+', '-');
1459.169 +}
1459.170 +
1459.171 +#ifdef __SYMBIAN32__
1459.172 +
1459.173 +template <class _CharT, class _OutputIter>
1459.174 +_OutputIter  _STLP_CALL
1459.175 +__put_float(char* __ibuf, char* __iend, _OutputIter __stl_out,
1459.176 +            ios_base& __f, _CharT __fill,
1459.177 +            _CharT __decimal_point,
1459.178 +            _CharT __sep, const string& __grouping)
1459.179 +{
1459.180 +  __adjust_float_buffer(__ibuf, __iend, __decimal_point);
1459.181 +  if (!__grouping.empty()) {
1459.182 +    string __new_grouping = __grouping;
1459.183 +    const char * __decimal_pos = find(__ibuf, __iend, __decimal_point);
1459.184 +    if (__grouping.size() == 1)
1459.185 +      __new_grouping.push_back(__grouping[0]);
1459.186 +    __new_grouping[0] += __STATIC_CAST(char, (__iend - __decimal_pos));
1459.187 +    ptrdiff_t __len = __insert_grouping(__ibuf, __iend, __new_grouping,
1459.188 +					__sep, '+', '-', 0);
1459.189 +    __iend = __ibuf + __len;
1459.190 +  }
1459.191 +
1459.192 +	_CharT __wbuf[64];
1459.193 +	locale __loc = __f.getloc();
1459.194 +	const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
1459.195 +	__ct.widen(__ibuf, __iend, __wbuf);
1459.196 +	
1459.197 + 	ptrdiff_t __len  =  __iend - __ibuf; 
1459.198 +  return __copy_float_and_fill(__wbuf, __wbuf+__len, __stl_out,
1459.199 +                               __f.flags(), __f.width(0), __fill, (_CharT)'+', (_CharT)'-');
1459.200 +}
1459.201 +
1459.202 +
1459.203 +#endif
1459.204 +template <class _CharT, class _OutputIter, class _Float>
1459.205 +_OutputIter _STLP_CALL
1459.206 +_M_do_put_float(_OutputIter __s, ios_base& __f,
1459.207 +                _CharT __fill, _Float __x)
1459.208 +{
1459.209 +  string __buf;
1459.210 +  __buf.reserve(256+10); //+2 - 10/1/07
1459.211 +  __write_float(__buf, __f.flags(), (int)__f.precision(), __x);
1459.212 +
1459.213 +  //const numpunct<_CharT>& __np = *(const numpunct<_CharT>*)__f._M_numpunct_facet();
1459.214 +  const numpunct<_CharT>& __np = use_facet< numpunct<_CharT> >(__f.getloc());
1459.215 +  
1459.216 +  return __put_float(__CONST_CAST(char*, __buf.c_str()), 
1459.217 +                     __CONST_CAST(char*, __buf.c_str()) + __buf.size(),
1459.218 +                     __s, __f, __fill,
1459.219 +                     __np.decimal_point(),
1459.220 +	//	                 __np.thousands_sep(), __f._M_grouping()); //stdcxx fix - 17/1/07
1459.221 +			__np.thousands_sep(), __np.grouping());
1459.222 +}
1459.223 +
1459.224 +// _M_do_put_integer and its helper functions.
1459.225 +
1459.226 +template <class _CharT, class _OutputIter>
1459.227 +_OutputIter _STLP_CALL
1459.228 +__copy_integer_and_fill(const _CharT* __buf, ptrdiff_t __len,
1459.229 +                        _OutputIter __stl_out,
1459.230 +                        ios_base::fmtflags __flg, streamsize __wid, _CharT __fill,
1459.231 +                        _CharT __xplus, _CharT __xminus)
1459.232 +{
1459.233 +  if (__len >= __wid)
1459.234 +    return copy(__buf, __buf + __len, __stl_out);
1459.235 +  else {
1459.236 +    ptrdiff_t __pad = __wid - __len;
1459.237 +    ios_base::fmtflags __dir = __flg & ios_base::adjustfield;
1459.238 +
1459.239 +    if (__dir == ios_base::left) {
1459.240 +      __stl_out = copy(__buf, __buf + __len, __stl_out);
1459.241 +      return fill_n(__stl_out, __pad, __fill);
1459.242 +    }
1459.243 +    else if (__dir == ios_base::internal && __len != 0 &&
1459.244 +             (__buf[0] == __xplus || __buf[0] == __xminus)) {
1459.245 +      *__stl_out++ = __buf[0];
1459.246 +      __stl_out = fill_n(__stl_out, __pad, __fill);
1459.247 +      return copy(__buf + 1, __buf + __len, __stl_out);
1459.248 +    }
1459.249 +    else if (__dir == ios_base::internal && __len >= 2 &&
1459.250 +             (__flg & ios_base::showbase) &&
1459.251 +             (__flg & ios_base::basefield) == ios_base::hex) {
1459.252 +      *__stl_out++ = __buf[0];
1459.253 +      *__stl_out++ = __buf[1];
1459.254 +      __stl_out = fill_n(__stl_out, __pad, __fill);
1459.255 +      return copy(__buf + 2, __buf + __len, __stl_out);
1459.256 +    }
1459.257 +    else {
1459.258 +      __stl_out = fill_n(__stl_out, __pad, __fill);
1459.259 +      return copy(__buf, __buf + __len, __stl_out);
1459.260 +    }
1459.261 +  }
1459.262 +}
1459.263 +
1459.264 +#ifndef _STLP_NO_WCHAR_T
1459.265 +// Helper function for wchar_t
1459.266 +template <class _OutputIter>
1459.267 +_OutputIter _STLP_CALL
1459.268 +__put_integer(char* __buf, char* __iend, _OutputIter __s,
1459.269 +              ios_base& __f,
1459.270 +              ios_base::fmtflags __flags, wchar_t __fill)
1459.271 +{
1459.272 +  locale __loc = __f.getloc();
1459.273 +   const ctype<wchar_t>& __ct = use_facet<ctype<wchar_t> >(__loc);
1459.274 +  //const ctype<wchar_t>& __ct = *(const ctype<wchar_t>*)__f._M_ctype_facet();
1459.275 +
1459.276 +  wchar_t __xplus  = __ct.widen('+');
1459.277 +  wchar_t __xminus = __ct.widen('-');
1459.278 +
1459.279 +  wchar_t __wbuf[64];
1459.280 +  __ct.widen(__buf, __iend, __wbuf);
1459.281 +  ptrdiff_t __len = __iend - __buf;
1459.282 +  wchar_t* __eend = __wbuf + __len;
1459.283 +
1459.284 +    const numpunct<wchar_t>& __np = use_facet<numpunct<wchar_t> >(__loc);
1459.285 +    const string& __grouping = __np.grouping();
1459.286 +
1459.287 +  //const numpunct<wchar_t>& __np = *(const numpunct<wchar_t>*)__f._M_numpunct_facet();
1459.288 + // const string& __grouping = __f._M_grouping();
1459.289 +
1459.290 +  if (!__grouping.empty()) {
1459.291 +    int __basechars;
1459.292 +    if (__flags & ios_base::showbase)
1459.293 +      switch (__flags & ios_base::basefield) {
1459.294 +	case ios_base::hex: __basechars = 2; break;
1459.295 +	case ios_base::oct: __basechars = 1; break;
1459.296 +	default: __basechars = 0;
1459.297 +      }
1459.298 +    else
1459.299 +      __basechars = 0;
1459.300 +
1459.301 +    __len = __insert_grouping(__wbuf, __eend, __grouping, __np.thousands_sep(),
1459.302 +			      __xplus, __xminus, __basechars);
1459.303 +  }
1459.304 +
1459.305 +  return __copy_integer_and_fill((wchar_t*)__wbuf, __len, __s,
1459.306 +                                 __flags, __f.width(0), __fill, __xplus, __xminus);
1459.307 +}
1459.308 +#endif
1459.309 +
1459.310 +#ifdef	__SYMBIAN32__
1459.311 +template <class _CharT, class _OutputIter>
1459.312 +_OutputIter _STLP_CALL
1459.313 +__put_integer(char* __buf, char* __iend, _OutputIter __s,
1459.314 +              ios_base& __f,
1459.315 +              ios_base::fmtflags __flags, _CharT __fill)
1459.316 +{
1459.317 +  locale __loc = __f.getloc();
1459.318 +   const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
1459.319 +  //const ctype<wchar_t>& __ct = *(const ctype<wchar_t>*)__f._M_ctype_facet();
1459.320 +
1459.321 +  _CharT __xplus  = '+';
1459.322 +  _CharT __xminus = '-';
1459.323 +
1459.324 +  _CharT __wbuf[64];
1459.325 +  
1459.326 +  ptrdiff_t __len = __iend - __buf;
1459.327 +  _CharT* __eend = __wbuf + __len;
1459.328 +
1459.329 +
1459.330 +    const numpunct<char>& __np = use_facet<numpunct<char> >(__loc);
1459.331 +    const string& __grouping = __np.grouping();
1459.332 +
1459.333 +  //const numpunct<wchar_t>& __np = *(const numpunct<wchar_t>*)__f._M_numpunct_facet();
1459.334 + // const string& __grouping = __f._M_grouping();
1459.335 +
1459.336 +  if (!__grouping.empty()) {
1459.337 +    int __basechars;
1459.338 +    if (__flags & ios_base::showbase)
1459.339 +      switch (__flags & ios_base::basefield) {
1459.340 +	case ios_base::hex: __basechars = 2; break;
1459.341 +	case ios_base::oct: __basechars = 1; break;
1459.342 +	default: __basechars = 0;
1459.343 +      }
1459.344 +    else
1459.345 +      __basechars = 0;
1459.346 +
1459.347 +    __len = __insert_grouping(__buf, __iend, __grouping, __np.thousands_sep(),
1459.348 +			     __ct.narrow( __xplus, '+'), __ct.narrow(__xminus, '-'), __basechars);
1459.349 +	__ct.widen(__buf, __iend, __wbuf);
1459.350 +	
1459.351 +  }
1459.352 +
1459.353 +  return __copy_integer_and_fill(__wbuf, __len, __s,
1459.354 +                                 __flags, __f.width(0), __fill, __xplus, __xminus);
1459.355 +}
1459.356 +
1459.357 +
1459.358 +#endif
1459.359 +// Helper function for char
1459.360 +template <class _OutputIter>
1459.361 +_OutputIter _STLP_CALL
1459.362 +__put_integer(char* __buf, char* __iend, _OutputIter __s,
1459.363 +              ios_base& __f, ios_base::fmtflags __flags, char __fill)
1459.364 +{
1459.365 +  ptrdiff_t __len = __iend - __buf;
1459.366 +  char __grpbuf[64];
1459.367 +
1459.368 +  //  const numpunct<char>& __np = use_facet<numpunct<char> >(__f.getloc());
1459.369 +  //  const string& __grouping = __np.grouping();
1459.370 +
1459.371 +  const numpunct<char>& __np = *(const numpunct<char>*)__f._M_numpunct_facet();
1459.372 +//  const string& __grouping = __f._M_grouping(); //stdcxx fix, 17/1/07
1459.373 +  const string& __grouping = __np.grouping();
1459.374 +
1459.375 +  if (!__grouping.empty()) {
1459.376 +    int __basechars;
1459.377 +    if (__flags & ios_base::showbase)
1459.378 +      switch (__flags & ios_base::basefield) {
1459.379 +	case ios_base::hex: __basechars = 2; break;
1459.380 +	case ios_base::oct: __basechars = 1; break;
1459.381 +	default: __basechars = 0;
1459.382 +      }
1459.383 +    else
1459.384 +      __basechars = 0;
1459.385 + 
1459.386 +     // make sure there is room at the end of the buffer
1459.387 +     // we pass to __insert_grouping
1459.388 +
1459.389 +    copy(__buf, __iend, (char *) __grpbuf);
1459.390 +    __buf = __grpbuf;
1459.391 +    __iend = __grpbuf + __len; 
1459.392 +    __len = __insert_grouping(__buf, __iend, __grouping, __np.thousands_sep(), 
1459.393 +                              '+', '-', __basechars);
1459.394 +  }
1459.395 +  
1459.396 +  return __copy_integer_and_fill(__buf, __len, __s, __flags, __f.width(0), __fill, '+', '-');
1459.397 +}
1459.398 +
1459.399 +#ifdef _STLP_LONG_LONG
1459.400 +typedef _STLP_LONG_LONG __max_int_t;
1459.401 +typedef unsigned _STLP_LONG_LONG __umax_int_t;
1459.402 +#else
1459.403 +typedef long __max_int_t;
1459.404 +typedef unsigned long __umax_int_t;
1459.405 +#endif
1459.406 +
1459.407 +extern _STLP_DECLSPEC const char* get_hex_char_table_lo();
1459.408 +extern _STLP_DECLSPEC const char* get_hex_char_table_hi();
1459.409 +
1459.410 +template <class _Integer>
1459.411 +inline char* _STLP_CALL
1459.412 +__write_decimal_backward(char* __ptr, _Integer __x, ios_base::fmtflags __flags, const __true_type& /* is_signed */)
1459.413 +{
1459.414 +  const bool __negative = __x < 0 ;
1459.415 +  __max_int_t __temp = __x;
1459.416 +  __umax_int_t __utemp = __negative?-__temp:__temp;
1459.417 +
1459.418 +  for (; __utemp != 0; __utemp /= 10)
1459.419 +    *--__ptr = (int)(__utemp % 10) + '0';	  
1459.420 +  // put sign if needed or requested
1459.421 +  if (__negative)
1459.422 +    *--__ptr = '-';
1459.423 +  else if (__flags & ios_base::showpos)
1459.424 +    *--__ptr = '+';
1459.425 +  return __ptr;
1459.426 +}
1459.427 +
1459.428 +template <class _Integer>
1459.429 +inline char* _STLP_CALL
1459.430 +__write_decimal_backward(char* __ptr, _Integer __x, ios_base::fmtflags __flags, const __false_type& /* is_signed */)
1459.431 +{
1459.432 +  for (; __x != 0; __x /= 10)
1459.433 +    *--__ptr = (int)(__x % 10) + '0';
1459.434 +  // put sign if requested
1459.435 +  if (__flags & ios_base::showpos)
1459.436 +    *--__ptr = '+';
1459.437 +  return __ptr;
1459.438 +}
1459.439 +
1459.440 +template <class _Integer>
1459.441 +char* _STLP_CALL
1459.442 +__write_integer_backward(char* __buf, ios_base::fmtflags __flags, _Integer __x)
1459.443 +{
1459.444 +  char* __ptr = __buf;
1459.445 +  __umax_int_t __temp;
1459.446 +
1459.447 +  if (__x == 0) {
1459.448 +    *--__ptr = '0';
1459.449 +    if ((__flags & ios_base::showpos) && ( (__flags & (ios_base::hex | ios_base::oct)) == 0 ))
1459.450 +      *--__ptr = '+';
1459.451 +  }
1459.452 +  else {
1459.453 +    
1459.454 +    switch (__flags & ios_base::basefield) {
1459.455 +    case ios_base::oct:
1459.456 +      __temp = __x;
1459.457 +      // if the size of integer is less than 8, clear upper part
1459.458 +      if ( sizeof(__x) < 8  && sizeof(__umax_int_t) >= 8 )
1459.459 +        __temp &= 0xFFFFFFFF;
1459.460 +
1459.461 +      for (; __temp != 0; __temp >>=3)
1459.462 +        *--__ptr = (((unsigned)__temp)& 0x7) + '0';
1459.463 +      
1459.464 +      // put leading '0' is showbase is set
1459.465 +      if (__flags & ios_base::showbase)
1459.466 +        *--__ptr = '0';
1459.467 +      break;
1459.468 +    case ios_base::hex: 
1459.469 +      {
1459.470 +        const char* __table_ptr = (__flags & ios_base::uppercase) ? 
1459.471 +          get_hex_char_table_hi() : get_hex_char_table_lo();
1459.472 +      __temp = __x;
1459.473 +      // if the size of integer is less than 8, clear upper part
1459.474 +      if ( sizeof(__x) < 8  && sizeof(__umax_int_t) >= 8 )
1459.475 +        __temp &= 0xFFFFFFFF;
1459.476 +
1459.477 +        for (; __temp != 0; __temp >>=4)
1459.478 +          *--__ptr = __table_ptr[((unsigned)__temp & 0xF)];
1459.479 +        
1459.480 +        if (__flags & ios_base::showbase) {
1459.481 +          *--__ptr = __table_ptr[16];
1459.482 +          *--__ptr = '0';
1459.483 +        }
1459.484 +      }
1459.485 +      break;
1459.486 +    default: 
1459.487 +      {
1459.488 +#if defined(__HP_aCC) && (__HP_aCC == 1)
1459.489 +        bool _IsSigned = !((_Integer)-1 > 0);
1459.490 +	if (_IsSigned)
1459.491 +	  __ptr = __write_decimal_backward(__ptr, __x, __flags, __true_type() );
1459.492 +        else
1459.493 +	  __ptr = __write_decimal_backward(__ptr, __x, __flags, __false_type() );
1459.494 +#else
1459.495 +	typedef typename __bool2type<numeric_limits<_Integer>::is_signed>::_Ret _IsSigned;
1459.496 +	__ptr = __write_decimal_backward(__ptr, __x, __flags, _IsSigned());
1459.497 +# endif
1459.498 +      }
1459.499 +      break;
1459.500 +    }  
1459.501 +  }
1459.502 +  // return pointer to beginning of the string
1459.503 +  return __ptr;
1459.504 +}
1459.505 +
1459.506 +//
1459.507 +// num_put<>
1459.508 +//
1459.509 +
1459.510 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1459.511 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1459.512 +template <class _CharT, class _OutputIterator>
1459.513 +locale::id num_put<_CharT, _OutputIterator>::id;
1459.514 +#endif
1459.515 +# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1459.516 +
1459.517 +typedef num_put<char, const char*> num_put_char;
1459.518 +typedef num_put<char, char*> num_put_char_2;
1459.519 +typedef num_put<char, ostreambuf_iterator<char, char_traits<char> > > num_put_char_3;
1459.520 +typedef num_put<char, back_insert_iterator<string> > num_put_char_4;
1459.521 +
1459.522 +#ifndef __SYMBIAN32__
1459.523 +__DECLARE_INSTANCE(locale::id, num_put_char::id, );
1459.524 +__DECLARE_INSTANCE(locale::id, num_put_char_2::id, );
1459.525 +__DECLARE_INSTANCE(locale::id, num_put_char_3::id, );
1459.526 +#endif
1459.527 +
1459.528 +# ifndef _STLP_NO_WCHAR_T
1459.529 +
1459.530 +typedef num_put<wchar_t, const wchar_t*> num_put_wchar_t;
1459.531 +typedef num_put<wchar_t, wchar_t*> num_put_wchar_t_2;
1459.532 +typedef num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > num_put_wchar_t_3;
1459.533 +
1459.534 +#ifndef __SYMBIAN32__
1459.535 +__DECLARE_INSTANCE(locale::id, num_put_wchar_t::id, );
1459.536 +__DECLARE_INSTANCE(locale::id, num_put_wchar_t_2::id, );
1459.537 +__DECLARE_INSTANCE(locale::id, num_put_wchar_t_3::id, );
1459.538 +#endif
1459.539 +
1459.540 +# endif
1459.541 +
1459.542 +# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
1459.543 +
1459.544 +// issue 118
1459.545 +
1459.546 +# ifndef _STLP_NO_BOOL
1459.547 +
1459.548 +template <class _CharT, class _OutputIter>  
1459.549 +_OutputIter 
1459.550 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, 
1459.551 +                                     char_type __fill,  bool __val) const {
1459.552 +  if (!(__f.flags() & ios_base::boolalpha))
1459.553 +    return this->do_put(__s, __f, __fill, __STATIC_CAST(long,__val));
1459.554 +
1459.555 +  locale __loc = __f.getloc();
1459.556 +    typedef numpunct<_CharT> _Punct;
1459.557 +    const _Punct& __np = use_facet<_Punct>(__loc);
1459.558 +
1459.559 +  //const numpunct<_CharT>& __np = *(const numpunct<_CharT>*)__f._M_numpunct_facet();
1459.560 +
1459.561 +  basic_string<_CharT> __str = __val ? __np.truename() : __np.falsename();
1459.562 +
1459.563 +  // Reuse __copy_integer_and_fill.  Since internal padding makes no
1459.564 +  // sense for bool, though, make sure we use something else instead.
1459.565 +  // The last two argument to __copy_integer_and_fill are dummies.
1459.566 +  ios_base::fmtflags __flags = __f.flags();
1459.567 +  if ((__flags & ios_base::adjustfield) == ios_base::internal)
1459.568 +    __flags = (__flags & ~ios_base::adjustfield) | ios_base::right;
1459.569 +
1459.570 +  return __copy_integer_and_fill(__str.c_str(), __str.size(), __s,
1459.571 +                                 __flags, __f.width(0), __fill,
1459.572 +                                 (_CharT) 0, (_CharT) 0);
1459.573 +}
1459.574 +
1459.575 +# endif
1459.576 +
1459.577 +template <class _CharT, class _OutputIter>
1459.578 +_OutputIter 
1459.579 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1459.580 +                                     long __val) const {
1459.581 +
1459.582 +  char __buf[64];               // Large enough for a base 8 64-bit integer,
1459.583 +                                // plus any necessary grouping.  
1459.584 +  ios_base::fmtflags __flags = __f.flags();
1459.585 +  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);  
1459.586 +  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1459.587 +}
1459.588 +
1459.589 +
1459.590 +template <class _CharT, class _OutputIter>  
1459.591 +_OutputIter 
1459.592 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1459.593 +				     unsigned long __val) const {
1459.594 +  char __buf[64];               // Large enough for a base 8 64-bit integer,
1459.595 +                                // plus any necessary grouping.
1459.596 +  
1459.597 +  ios_base::fmtflags __flags = __f.flags();
1459.598 +  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);
1459.599 +  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1459.600 +}
1459.601 +
1459.602 +template <class _CharT, class _OutputIter>  
1459.603 +_OutputIter 
1459.604 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1459.605 +                                     double __val) const {
1459.606 +  return _M_do_put_float(__s, __f, __fill, __val);
1459.607 +}
1459.608 +
1459.609 +#ifndef _STLP_NO_LONG_DOUBLE
1459.610 +template <class _CharT, class _OutputIter>  
1459.611 +_OutputIter 
1459.612 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1459.613 +                                     long double __val) const {
1459.614 +  return _M_do_put_float(__s, __f, __fill, __val);
1459.615 +}
1459.616 +#endif
1459.617 +
1459.618 +#ifdef _STLP_LONG_LONG
1459.619 +template <class _CharT, class _OutputIter>  
1459.620 +_OutputIter 
1459.621 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1459.622 +                                     _STLP_LONG_LONG __val) const {
1459.623 +  char __buf[64];               // Large enough for a base 8 64-bit integer,
1459.624 +                                // plus any necessary grouping.
1459.625 +  
1459.626 +  ios_base::fmtflags __flags = __f.flags();
1459.627 +  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);
1459.628 +  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1459.629 +}
1459.630 +
1459.631 +template <class _CharT, class _OutputIter>  
1459.632 +_OutputIter 
1459.633 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT __fill,
1459.634 +                                     unsigned _STLP_LONG_LONG __val) const {
1459.635 +  char __buf[64];               // Large enough for a base 8 64-bit integer,
1459.636 +                                // plus any necessary grouping.
1459.637 +  
1459.638 +  ios_base::fmtflags __flags = __f.flags();
1459.639 +  char* __ibeg = __write_integer_backward((char*)__buf+64, __flags, __val);  
1459.640 +  return __put_integer(__ibeg, (char*)__buf+64, __s, __f, __flags, __fill);
1459.641 +}
1459.642 +
1459.643 +#endif /* _STLP_LONG_LONG */
1459.644 +
1459.645 +
1459.646 +// lib.facet.num.put.virtuals "12 For conversion from void* the specifier is %p."
1459.647 +template <class _CharT, class _OutputIter>
1459.648 +_OutputIter
1459.649 +num_put<_CharT, _OutputIter>::do_put(_OutputIter __s, ios_base& __f, _CharT /*__fill*/,
1459.650 +				     const void* __val) const {
1459.651 +  //const ctype<_CharT>& __c_type = *(const ctype<_CharT>*)__f._M_ctype_facet();
1459.652 +  const ctype<_CharT>& __c_type  = use_facet< ctype<_CharT> >(__f.getloc());
1459.653 +  ios_base::fmtflags __save_flags = __f.flags();
1459.654 +
1459.655 +  __f.setf(ios_base::hex, ios_base::basefield);
1459.656 +  __f.setf(ios_base::showbase);
1459.657 +  __f.setf(ios_base::internal, ios_base::adjustfield);
1459.658 +  //__f.width((sizeof(void*) * 2) + 2); // digits in pointer type plus '0x' prefix //making output equal to linux.
1459.659 +# if defined(_STLP_LONG_LONG) && !defined(__MRC__) //*ty 11/24/2001 - MrCpp can not cast from void* to long long
1459.660 +  _OutputIter result = this->do_put(__s, __f, __c_type.widen('0'), __REINTERPRET_CAST(unsigned _STLP_LONG_LONG,__val));
1459.661 +# else
1459.662 +  _OutputIter result = this->do_put(__s, __f, __c_type.widen('0'), __REINTERPRET_CAST(unsigned long,__val));
1459.663 +# endif
1459.664 +  __f.flags(__save_flags);
1459.665 +  return result;
1459.666 +}
1459.667 +
1459.668 +_STLP_END_NAMESPACE
1459.669 +
1459.670 +# endif /* _STLP_EXPOSE_STREAM_IMPLEMENTATION */
1459.671 +
1459.672 +#endif /* _STLP_NUM_PUT_C */
1459.673 +
1459.674 +// Local Variables:
1459.675 +// mode:C++
1459.676 +// End:
  1460.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1460.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_num_put.h	Wed Mar 31 12:27:01 2010 +0100
  1460.3 @@ -0,0 +1,202 @@
  1460.4 +/*
  1460.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1460.6 + *
  1460.7 + * Copyright (c) 1999
  1460.8 + * Silicon Graphics Computer Systems, Inc.
  1460.9 + *
 1460.10 + * Copyright (c) 1999 
 1460.11 + * Boris Fomitchev
 1460.12 + *
 1460.13 + * This material is provided "as is", with absolutely no warranty expressed
 1460.14 + * or implied. Any use is at your own risk.
 1460.15 + *
 1460.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1460.17 + * without fee, provided the above notices are retained on all copies.
 1460.18 + * Permission to modify the code and to distribute modified code is granted,
 1460.19 + * provided the above notices are retained, and a notice that the code was
 1460.20 + * modified is included with the above copyright notice.
 1460.21 + *
 1460.22 + */ 
 1460.23 +// WARNING: This is an internal header file, included by other C++
 1460.24 +// standard library headers.  You should not attempt to use this header
 1460.25 +// file directly.
 1460.26 +
 1460.27 +
 1460.28 +#ifndef _STLP_INTERNAL_NUM_PUT_H
 1460.29 +#define _STLP_INTERNAL_NUM_PUT_H
 1460.30 +
 1460.31 +#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1460.32 +# include <stl/_numpunct.h>
 1460.33 +#endif
 1460.34 +#ifndef _STLP_INTERNAL_CTYPE_H
 1460.35 +# include <stl/_ctype.h>
 1460.36 +#endif
 1460.37 +#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1460.38 +# include <stl/_ostreambuf_iterator.h>
 1460.39 +#endif
 1460.40 +
 1460.41 +_STLP_BEGIN_NAMESPACE
 1460.42 +
 1460.43 +//----------------------------------------------------------------------
 1460.44 +// num_put facet
 1460.45 +
 1460.46 +# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
 1460.47 +template <class _CharT, class _OutputIter>  
 1460.48 +# else
 1460.49 +template <class _CharT, class _OutputIter = ostreambuf_iterator<_CharT, char_traits<_CharT> > >  
 1460.50 +# endif
 1460.51 +class num_put: public locale::facet
 1460.52 +{
 1460.53 +  friend class _Locale;
 1460.54 +public:
 1460.55 +  typedef _CharT      char_type;
 1460.56 +  typedef _OutputIter iter_type;
 1460.57 +
 1460.58 +  explicit  num_put(size_t __refs = 0) : _BaseFacet(__refs) {}
 1460.59 +
 1460.60 +# ifndef _STLP_NO_BOOL
 1460.61 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.62 +                bool __val) const {
 1460.63 +    return do_put(__s, __f, __fill, __val);
 1460.64 +  }
 1460.65 +# endif
 1460.66 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.67 +               long __val) const {
 1460.68 +    return do_put(__s, __f, __fill, __val);
 1460.69 +  }
 1460.70 +
 1460.71 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.72 +                unsigned long __val) const {
 1460.73 +    return do_put(__s, __f, __fill, __val);
 1460.74 +  }
 1460.75 +
 1460.76 +#ifdef _STLP_LONG_LONG
 1460.77 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.78 +                _STLP_LONG_LONG __val) const {
 1460.79 +    return do_put(__s, __f, __fill, __val);
 1460.80 +  }
 1460.81 +
 1460.82 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.83 +                unsigned _STLP_LONG_LONG __val) const {
 1460.84 +    return do_put(__s, __f, __fill, __val);
 1460.85 +  }
 1460.86 +#endif
 1460.87 +
 1460.88 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.89 +                double __val) const {
 1460.90 +    return do_put(__s, __f, __fill, (double)__val);
 1460.91 +  }
 1460.92 +
 1460.93 +#ifndef _STLP_NO_LONG_DOUBLE
 1460.94 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
 1460.95 +                long double __val) const {
 1460.96 +    return do_put(__s, __f, __fill, __val);
 1460.97 +  }
 1460.98 +# endif
 1460.99 +
1460.100 +  iter_type put(iter_type __s, ios_base& __f, char_type __fill,
1460.101 +                const void * __val) const {
1460.102 +    return do_put(__s, __f, __fill, __val);
1460.103 +  }
1460.104 +
1460.105 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1460.106 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1460.107 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1460.108 +                GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *);
1460.109 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1460.110 +	//wchar_t
1460.111 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1460.112 +	                GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *);
1460.113 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(wchar_t**);
1460.114 +    //adding for new iterator type
1460.115 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id&
1460.116 +	                GetFacetLocaleId(back_insert_iterator<string> *);
1460.117 +#else
1460.118 +  _STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1460.119 +#endif
1460.120 +
1460.121 +protected:
1460.122 +  ~num_put() {}   
1460.123 +# ifndef _STLP_NO_BOOL
1460.124 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, bool __val) const;
1460.125 +# endif
1460.126 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, long __val) const;
1460.127 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, unsigned long __val) const;
1460.128 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, double __val) const;
1460.129 +#ifndef _STLP_NO_LONG_DOUBLE
1460.130 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, long double __val) const;
1460.131 +#endif
1460.132 +
1460.133 +#ifdef _STLP_LONG_LONG
1460.134 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, _STLP_LONG_LONG __val) const;
1460.135 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, 
1460.136 +                           unsigned _STLP_LONG_LONG __val) const ;
1460.137 +#endif /* _STLP_LONG_LONG  */
1460.138 +  virtual _OutputIter do_put(_OutputIter __s, ios_base& __f, _CharT __fill, const void* __val) const;
1460.139 +};
1460.140 +
1460.141 +# ifdef _STLP_USE_TEMPLATE_EXPORT
1460.142 +_STLP_EXPORT_TEMPLATE_CLASS num_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1460.143 +// _STLP_EXPORT_TEMPLATE_CLASS num_put<char, char*>;
1460.144 +#  ifndef _STLP_NO_WCHAR_T
1460.145 +_STLP_EXPORT_TEMPLATE_CLASS num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1460.146 +// _STLP_EXPORT_TEMPLATE_CLASS num_put<wchar_t, wchar_t*>;
1460.147 +#  endif /* _STLP_NO_WCHAR_T */
1460.148 +# endif
1460.149 +
1460.150 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
1460.151 +
1460.152 +template <class _Integer>
1460.153 +char* _STLP_CALL
1460.154 +__write_integer_backward(char* __buf, ios_base::fmtflags __flags, _Integer __x);
1460.155 +
1460.156 +extern _STLP_DECLSPEC int  _STLP_CALL __string_to_float(const string&, float&);
1460.157 +extern _STLP_DECLSPEC int  _STLP_CALL __string_to_float(const string&, double&);
1460.158 +extern _STLP_DECLSPEC void _STLP_CALL __write_float(string&, ios_base::fmtflags, int, double);
1460.159 +# ifndef _STLP_NO_LONG_DOUBLE
1460.160 +int  _STLP_CALL __string_to_float(const string&, long double&);
1460.161 +extern _STLP_DECLSPEC void _STLP_CALL __write_float(string&, ios_base::fmtflags, int, long double);
1460.162 +# endif
1460.163 +
1460.164 +#ifndef _STLP_NO_WCHAR_T
1460.165 +extern _STLP_DECLSPEC wchar_t* _STLP_CALL __convert_float_buffer(const char*, const char*, wchar_t*, const ctype<wchar_t>&, wchar_t);
1460.166 +#endif
1460.167 +extern _STLP_DECLSPEC void _STLP_CALL __adjust_float_buffer(char*, char*, char);
1460.168 +
1460.169 +extern _STLP_DECLSPEC char* _STLP_CALL
1460.170 +__write_integer(char* buf, ios_base::fmtflags flags, long x);
1460.171 +
1460.172 +extern _STLP_DECLSPEC ptrdiff_t _STLP_CALL __insert_grouping(char* first, char* last, const string&, char, char, char, int);
1460.173 +#  ifndef _STLP_NO_WCHAR_T
1460.174 +extern _STLP_DECLSPEC ptrdiff_t _STLP_CALL __insert_grouping(wchar_t*, wchar_t*, const string&, wchar_t, wchar_t, wchar_t, int);
1460.175 +#  endif
1460.176 +
1460.177 +# endif
1460.178 +
1460.179 +# if defined (__BORLANDC__) && defined (_RTLDLL)
1460.180 +inline void _Stl_loc_init_num_put() {
1460.181 +  
1460.182 +  num_put<char, ostreambuf_iterator<char, char_traits<char> > >::id._M_index = 14;
1460.183 +  num_put<char, char*>::id._M_index = 15;
1460.184 +  
1460.185 +# ifndef _STLP_NO_WCHAR_T
1460.186 +  num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > ::id._M_index = 33;
1460.187 +  num_put<wchar_t, wchar_t*>::id._M_index = 34;
1460.188 +# endif
1460.189 +  
1460.190 +}
1460.191 + 
1460.192 +# endif
1460.193 +
1460.194 +_STLP_END_NAMESPACE
1460.195 +
1460.196 +#  if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && ! defined (_STLP_LINK_TIME_INSTANTIATION)
1460.197 +#   include <stl/_num_put.c>
1460.198 +#  endif
1460.199 +
1460.200 +#endif /* _STLP_INTERNAL_NUMERIC_FACETS_H */
1460.201 +
1460.202 +// Local Variables:
1460.203 +// mode:C++
1460.204 +// End:
1460.205 +
  1461.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1461.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_numeric.c	Wed Mar 31 12:27:01 2010 +0100
  1461.3 @@ -0,0 +1,104 @@
  1461.4 +/*
  1461.5 + *
  1461.6 + *
  1461.7 + * Copyright (c) 1994
  1461.8 + * Hewlett-Packard Company
  1461.9 + *
 1461.10 + * Copyright (c) 1996,1997
 1461.11 + * Silicon Graphics Computer Systems, Inc.
 1461.12 + *
 1461.13 + * Copyright (c) 1997
 1461.14 + * Moscow Center for SPARC Technology
 1461.15 + *
 1461.16 + * Copyright (c) 1999 
 1461.17 + * Boris Fomitchev
 1461.18 + *
 1461.19 + * This material is provided "as is", with absolutely no warranty expressed
 1461.20 + * or implied. Any use is at your own risk.
 1461.21 + *
 1461.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1461.23 + * without fee, provided the above notices are retained on all copies.
 1461.24 + * Permission to modify the code and to distribute modified code is granted,
 1461.25 + * provided the above notices are retained, and a notice that the code was
 1461.26 + * modified is included with the above copyright notice.
 1461.27 + *
 1461.28 + */
 1461.29 +#ifndef _STLP_NUMERIC_C
 1461.30 +#define _STLP_NUMERIC_C
 1461.31 +
 1461.32 +#ifndef _STLP_INTERNAL_NUMERIC_H
 1461.33 +# include <stl/_numeric.h>
 1461.34 +#endif
 1461.35 +
 1461.36 +_STLP_BEGIN_NAMESPACE
 1461.37 +
 1461.38 +template <class _InputIterator, class _OutputIterator, class _Tp,
 1461.39 +          class _BinaryOperation>
 1461.40 +_OutputIterator 
 1461.41 +__partial_sum(_InputIterator __first, _InputIterator __last, 
 1461.42 +              _OutputIterator __result, _Tp*, _BinaryOperation __binary_op)
 1461.43 +{
 1461.44 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1461.45 +  if (__first == __last) return __result;
 1461.46 +  *__result = *__first;
 1461.47 +
 1461.48 +  _Tp __val = *__first;
 1461.49 +  while (++__first != __last) {
 1461.50 +    __val = __binary_op(__val, *__first);
 1461.51 +    *++__result = __val;
 1461.52 +  }
 1461.53 +  return ++__result;
 1461.54 +}
 1461.55 +
 1461.56 +template <class _InputIterator, class _OutputIterator, class _Tp, 
 1461.57 +          class _BinaryOperation>
 1461.58 +_OutputIterator
 1461.59 +__adjacent_difference(_InputIterator __first, _InputIterator __last, 
 1461.60 +                      _OutputIterator __result, _Tp*,
 1461.61 +                      _BinaryOperation __binary_op) {
 1461.62 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1461.63 +  if (__first == __last) return __result;
 1461.64 +  *__result = *__first;
 1461.65 +  _Tp __val = *__first;
 1461.66 +  while (++__first != __last) {
 1461.67 +    _Tp __tmp = *__first;
 1461.68 +    *++__result = __binary_op(__tmp, __val);
 1461.69 +    __val = __tmp;
 1461.70 +  }
 1461.71 +  return ++__result;
 1461.72 +}
 1461.73 +
 1461.74 +
 1461.75 +template <class _Tp, class _Integer, class _MonoidOperation>
 1461.76 +_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr) 
 1461.77 +{
 1461.78 +  _STLP_MPWFIX_TRY
 1461.79 +  if (__n == 0)
 1461.80 +    return __identity_element(__opr);
 1461.81 +  else {
 1461.82 +    while ((__n & 1) == 0) {
 1461.83 +      __n >>= 1;
 1461.84 +      __x = __opr(__x, __x);
 1461.85 +    }
 1461.86 +    _Tp __result = __x;
 1461.87 +	_STLP_MPWFIX_TRY
 1461.88 +    __n >>= 1;
 1461.89 +    while (__n != 0) {
 1461.90 +      __x = __opr(__x, __x);
 1461.91 +      if ((__n & 1) != 0)
 1461.92 +        __result = __opr(__result, __x);
 1461.93 +      __n >>= 1;
 1461.94 +    }
 1461.95 +    return __result;
 1461.96 +	_STLP_MPWFIX_CATCH
 1461.97 +  }
 1461.98 +  _STLP_MPWFIX_CATCH_ACTION(__x = _Tp())
 1461.99 +}
1461.100 +
1461.101 +_STLP_END_NAMESPACE
1461.102 +
1461.103 +#endif /*  _STLP_NUMERIC_C */
1461.104 +
1461.105 +// Local Variables:
1461.106 +// mode:C++
1461.107 +// End:
  1462.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1462.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_numeric.h	Wed Mar 31 12:27:01 2010 +0100
  1462.3 @@ -0,0 +1,190 @@
  1462.4 +/*
  1462.5 + *
  1462.6 + * Copyright (c) 1994
  1462.7 + * Hewlett-Packard Company
  1462.8 + *
  1462.9 + * Copyright (c) 1996,1997
 1462.10 + * Silicon Graphics Computer Systems, Inc.
 1462.11 + *
 1462.12 + * Copyright (c) 1999 
 1462.13 + * Boris Fomitchev
 1462.14 + *
 1462.15 + * This material is provided "as is", with absolutely no warranty expressed
 1462.16 + * or implied. Any use is at your own risk.
 1462.17 + *
 1462.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1462.19 + * without fee, provided the above notices are retained on all copies.
 1462.20 + * Permission to modify the code and to distribute modified code is granted,
 1462.21 + * provided the above notices are retained, and a notice that the code was
 1462.22 + * modified is included with the above copyright notice.
 1462.23 + *
 1462.24 + */
 1462.25 +
 1462.26 +/* NOTE: This is an internal header file, included by other STL headers.
 1462.27 + *   You should not attempt to use it directly.
 1462.28 + */
 1462.29 +
 1462.30 +
 1462.31 +#ifndef _STLP_INTERNAL_NUMERIC_H
 1462.32 +#define _STLP_INTERNAL_NUMERIC_H
 1462.33 +
 1462.34 +#ifndef _STLP_INTERNAL_FUNCTION_H
 1462.35 +# include <stl/_function_base.h>
 1462.36 +#endif
 1462.37 +
 1462.38 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1462.39 +# include <stl/_iterator_base.h>
 1462.40 +#endif
 1462.41 +
 1462.42 +_STLP_BEGIN_NAMESPACE
 1462.43 +
 1462.44 +template <class _InputIterator, class _Tp>
 1462.45 +_STLP_INLINE_LOOP
 1462.46 +_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp _Init)
 1462.47 +{
 1462.48 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1462.49 +  for ( ; __first != __last; ++__first)
 1462.50 +#ifndef 	__SYMBIAN32__  	
 1462.51 +    _Init = _Init + *__first;
 1462.52 +#else
 1462.53 +	    _Init +=  *__first;
 1462.54 +#endif
 1462.55 +  return _Init;
 1462.56 +}
 1462.57 +
 1462.58 +template <class _InputIterator, class _Tp, class _BinaryOperation>
 1462.59 +_STLP_INLINE_LOOP
 1462.60 +_Tp accumulate(_InputIterator __first, _InputIterator __last, _Tp _Init,
 1462.61 +               _BinaryOperation __binary_op)
 1462.62 +{
 1462.63 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
 1462.64 +  for ( ; __first != __last; ++__first)
 1462.65 +    _Init = __binary_op(_Init, *__first);
 1462.66 +  return _Init;
 1462.67 +}
 1462.68 +
 1462.69 +template <class _InputIterator1, class _InputIterator2, class _Tp>
 1462.70 +_STLP_INLINE_LOOP
 1462.71 +_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
 1462.72 +                  _InputIterator2 __first2, _Tp _Init)
 1462.73 +{
 1462.74 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1462.75 +  for ( ; __first1 != __last1; ++__first1, ++__first2)
 1462.76 +    _Init = _Init + (*__first1 * *__first2);
 1462.77 +  return _Init;
 1462.78 +}
 1462.79 +
 1462.80 +template <class _InputIterator1, class _InputIterator2, class _Tp,
 1462.81 +          class _BinaryOperation1, class _BinaryOperation2>
 1462.82 +_STLP_INLINE_LOOP
 1462.83 +_Tp inner_product(_InputIterator1 __first1, _InputIterator1 __last1,
 1462.84 +                  _InputIterator2 __first2, _Tp _Init, 
 1462.85 +                  _BinaryOperation1 __binary_op1,
 1462.86 +                  _BinaryOperation2 __binary_op2)
 1462.87 +{
 1462.88 +  _STLP_DEBUG_CHECK(__check_range(__first1, __last1))
 1462.89 +  for ( ; __first1 != __last1; ++__first1, ++__first2)
 1462.90 +    _Init = __binary_op1(_Init, __binary_op2(*__first1, *__first2));
 1462.91 +  return _Init;
 1462.92 +}
 1462.93 +
 1462.94 +template <class _InputIterator, class _OutputIterator, class _Tp,
 1462.95 +          class _BinaryOperation>
 1462.96 +_OutputIterator 
 1462.97 +__partial_sum(_InputIterator __first, _InputIterator __last, 
 1462.98 +              _OutputIterator __result, _Tp*, _BinaryOperation __binary_op);
 1462.99 +
1462.100 +
1462.101 +template <class _InputIterator, class _OutputIterator>
1462.102 +inline _OutputIterator 
1462.103 +partial_sum(_InputIterator __first, _InputIterator __last,
1462.104 +            _OutputIterator __result) {
1462.105 +  return __partial_sum(__first, __last, __result, _STLP_VALUE_TYPE(__first, _InputIterator),
1462.106 +                       __plus(_STLP_VALUE_TYPE(__first, _InputIterator)));
1462.107 +}
1462.108 +
1462.109 +template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
1462.110 +inline _OutputIterator 
1462.111 +partial_sum(_InputIterator __first, _InputIterator __last,
1462.112 +            _OutputIterator __result, _BinaryOperation __binary_op) {
1462.113 +  return __partial_sum(__first, __last, __result, _STLP_VALUE_TYPE(__first, _InputIterator), 
1462.114 +                       __binary_op);
1462.115 +}
1462.116 +
1462.117 +
1462.118 +template <class _InputIterator, class _OutputIterator, class _Tp, 
1462.119 +          class _BinaryOperation>
1462.120 +_OutputIterator
1462.121 +__adjacent_difference(_InputIterator __first, _InputIterator __last, 
1462.122 +                      _OutputIterator __result, _Tp*,
1462.123 +                      _BinaryOperation __binary_op);
1462.124 +
1462.125 +template <class _InputIterator, class _OutputIterator>
1462.126 +inline _OutputIterator
1462.127 +adjacent_difference(_InputIterator __first,
1462.128 +                    _InputIterator __last, _OutputIterator __result) {
1462.129 +  return __adjacent_difference(__first, __last, __result,
1462.130 +                               _STLP_VALUE_TYPE(__first, _InputIterator),
1462.131 +                               __minus(_STLP_VALUE_TYPE(__first, _InputIterator)));
1462.132 +}
1462.133 +
1462.134 +template <class _InputIterator, class _OutputIterator, class _BinaryOperation>
1462.135 +_OutputIterator 
1462.136 +adjacent_difference(_InputIterator __first, _InputIterator __last,
1462.137 +                    _OutputIterator __result, _BinaryOperation __binary_op) {
1462.138 +  return __adjacent_difference(__first, __last, __result,
1462.139 +                               _STLP_VALUE_TYPE(__first, _InputIterator),
1462.140 +                               __binary_op);
1462.141 +}
1462.142 +
1462.143 +template <class _Tp, class _Integer, class _MonoidOperation>
1462.144 +_Tp __power(_Tp __x, _Integer __n, _MonoidOperation __opr);
1462.145 +
1462.146 +# ifndef _STLP_NO_EXTENSIONS
1462.147 +
1462.148 +// Returns __x ** __n, where __n >= 0.  _Note that "multiplication"
1462.149 +// is required to be associative, but not necessarily commutative.
1462.150 +
1462.151 +template <class _Tp, class _Integer>
1462.152 +inline _Tp __power(_Tp __x, _Integer __n)
1462.153 +{
1462.154 +  return __power(__x, __n, multiplies<_Tp>());
1462.155 +}
1462.156 +
1462.157 +// Alias for the internal name __power.  Note that power is an extension,
1462.158 +// not part of the C++ standard.
1462.159 +template <class _Tp, class _Integer, class _MonoidOperation>
1462.160 +inline _Tp power(_Tp __x, _Integer __n, _MonoidOperation __opr) {
1462.161 +  return __power(__x, __n, __opr);
1462.162 +}
1462.163 +
1462.164 +
1462.165 +template <class _Tp, class _Integer>
1462.166 +inline _Tp power(_Tp __x, _Integer __n) {
1462.167 +  return __power(__x, __n, multiplies<_Tp>());
1462.168 +}
1462.169 +
1462.170 +// iota is not part of the C++ standard.  It is an extension.
1462.171 +
1462.172 +template <class _ForwardIterator, class _Tp>
1462.173 +_STLP_INLINE_LOOP
1462.174 +void 
1462.175 +iota(_ForwardIterator __first, _ForwardIterator __last, _Tp __val)
1462.176 +{
1462.177 +  _STLP_DEBUG_CHECK(__check_range(__first, __last))
1462.178 +  while (__first != __last)
1462.179 +    *__first++ = __val++;
1462.180 +}
1462.181 +# endif
1462.182 +
1462.183 +_STLP_END_NAMESPACE
1462.184 +
1462.185 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1462.186 +#  include <stl/_numeric.c>
1462.187 +# endif
1462.188 +
1462.189 +#endif /* _STLP_INTERNAL_NUMERIC_H */
1462.190 +
1462.191 +// Local Variables:
1462.192 +// mode:C++
1462.193 +// End:
  1463.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1463.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_numpunct.h	Wed Mar 31 12:27:01 2010 +0100
  1463.3 @@ -0,0 +1,295 @@
  1463.4 +/*
  1463.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1463.6 + *
  1463.7 + * Copyright (c) 1999
  1463.8 + * Silicon Graphics Computer Systems, Inc.
  1463.9 + *
 1463.10 + * Copyright (c) 1999 
 1463.11 + * Boris Fomitchev
 1463.12 + *
 1463.13 + * This material is provided "as is", with absolutely no warranty expressed
 1463.14 + * or implied. Any use is at your own risk.
 1463.15 + *
 1463.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1463.17 + * without fee, provided the above notices are retained on all copies.
 1463.18 + * Permission to modify the code and to distribute modified code is granted,
 1463.19 + * provided the above notices are retained, and a notice that the code was
 1463.20 + * modified is included with the above copyright notice.
 1463.21 + *
 1463.22 + */ 
 1463.23 +// WARNING: This is an internal header file, included by other C++
 1463.24 +// standard library headers.  You should not attempt to use this header
 1463.25 +// file directly.
 1463.26 +
 1463.27 +
 1463.28 +#ifndef _STLP_INTERNAL_NUMPUNCT_H
 1463.29 +#define _STLP_INTERNAL_NUMPUNCT_H
 1463.30 +
 1463.31 +#ifndef _STLP_IOS_BASE_H
 1463.32 +# include <stl/_ios_base.h>
 1463.33 +#endif
 1463.34 +
 1463.35 +# ifndef _STLP_C_LOCALE_H
 1463.36 +#  include <stl/c_locale.h>
 1463.37 +# endif
 1463.38 +
 1463.39 +#ifndef _STLP_STRING_H
 1463.40 +# include <stl/_string.h>
 1463.41 +#endif
 1463.42 +
 1463.43 +_STLP_BEGIN_NAMESPACE
 1463.44 +
 1463.45 +//----------------------------------------------------------------------
 1463.46 +// numpunct facets
 1463.47 +
 1463.48 +#ifdef	__SYMBIAN32__
 1463.49 +extern locale::id& Numpunct_charT_GetFacetLocaleId(const char* type);
 1463.50 +
 1463.51 +template <class _CharT> class numpunct: public locale::facet
 1463.52 +{
 1463.53 +	friend class _Locale;
 1463.54 +public:
 1463.55 + 	typedef char               		char_type;
 1463.56 +  	typedef basic_string<_CharT>             string_type;
 1463.57 +	explicit numpunct(size_t __refs = 0) : _BaseFacet(__refs) {
 1463.58 +	_M_truename.append(1, (_CharT)'t');
 1463.59 +	_M_truename.append(1, (_CharT)'r');
 1463.60 +	_M_truename.append(1, (_CharT)'u');
 1463.61 +	_M_truename.append(1, (_CharT)'e');
 1463.62 +
 1463.63 +	_M_falsename.append(1, (_CharT)'f');
 1463.64 +	_M_falsename.append(1, (_CharT)'a');
 1463.65 +	_M_falsename.append(1, (_CharT)'l');
 1463.66 +	_M_falsename.append(1, (_CharT)'s');
 1463.67 +	_M_falsename.append(1, (_CharT)'e');
 1463.68 +	}
 1463.69 +	
 1463.70 +  	_CharT decimal_point() const { return do_decimal_point(); }
 1463.71 +  	_CharT thousands_sep() const { return do_thousands_sep(); }
 1463.72 +  	string grouping() const { return do_grouping(); }
 1463.73 +  	string_type truename() const { return do_truename(); }
 1463.74 +  	string_type falsename() const { return do_falsename(); }
 1463.75 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1463.76 +	static locale::id& GetFacetLocaleId(){return Numpunct_charT_GetFacetLocaleId(typeid(_CharT).name()); }
 1463.77 +#else
 1463.78 +  	 static locale::id id;
 1463.79 +#endif
 1463.80 +
 1463.81 +# ifndef _STLP_NO_FRIEND_TEMPLATES
 1463.82 +protected:
 1463.83 +# endif
 1463.84 +	~numpunct();
 1463.85 +
 1463.86 +protected:
 1463.87 +  	 static string_type  _M_truename;
 1463.88 +  	static string_type  _M_falsename;
 1463.89 +  	static string  _M_grouping;
 1463.90 +protected:
 1463.91 +
 1463.92 +  	virtual _CharT do_decimal_point() const;
 1463.93 +  	virtual _CharT do_thousands_sep() const;
 1463.94 +  	virtual string do_grouping() const; 
 1463.95 +  	virtual string_type do_truename() const;
 1463.96 +  	virtual string_type do_falsename()  const;
 1463.97 +};
 1463.98 +
 1463.99 +template <class _CharT>
1463.100 +basic_string<_CharT> numpunct<_CharT>::_M_truename;
1463.101 +template <class _CharT>
1463.102 +basic_string<_CharT> numpunct<_CharT>::_M_falsename;
1463.103 +template <class _CharT>
1463.104 +string numpunct<_CharT>::_M_grouping ;
1463.105 +
1463.106 +_STLP_DECLSPEC _Locale_numeric* __acquire_numericE(const char* );
1463.107 +_STLP_DECLSPEC void __release_numericE(_Locale_numeric* );
1463.108 +_STLP_DECLSPEC const char* _Locale_trueE(_Locale_numeric*);
1463.109 +_STLP_DECLSPEC const char* _Locale_falseE(_Locale_numeric*);
1463.110 +_STLP_DECLSPEC char _Locale_decimal_pointE(_Locale_numeric*);
1463.111 +_STLP_DECLSPEC char _Locale_thousands_sepE(_Locale_numeric*);
1463.112 +_STLP_DECLSPEC const char*_Locale_groupingE(_Locale_numeric*);
1463.113 +
1463.114 +template <class _CharT>
1463.115 +class numpunct_byname : public numpunct<_CharT>{
1463.116 +public:
1463.117 +	typedef _CharT                char_type;
1463.118 +  	typedef basic_string<_CharT>              string_type;
1463.119 +
1463.120 +  	explicit  numpunct_byname(const char* name, size_t refs = 0);	
1463.121 +protected:
1463.122 +
1463.123 +	   ~numpunct_byname();
1463.124 +
1463.125 +	 virtual _CharT   do_decimal_point() const;
1463.126 +  	 virtual _CharT   do_thousands_sep() const;
1463.127 +	  virtual string do_grouping()      const;
1463.128 +
1463.129 +private:
1463.130 +  	_Locale_numeric* _M_numeric;
1463.131 +};
1463.132 +
1463.133 +#else
1463.134 +template <class _CharT> class numpunct {};
1463.135 +template <class _CharT> class numpunct_byname {};
1463.136 +#endif
1463.137 +template <class _Ch, class _InIt> class num_get;
1463.138 +
1463.139 +_STLP_TEMPLATE_NULL
1463.140 +#ifdef __SYMBIAN32__
1463.141 +class numpunct <char> : public locale::facet
1463.142 +#else
1463.143 +class _STLP_CLASS_DECLSPEC numpunct<char> : public locale::facet
1463.144 +#endif
1463.145 +{
1463.146 +  friend class _Locale;
1463.147 +# ifndef _STLP_NO_FRIEND_TEMPLATES
1463.148 +  template <class _Ch, class _InIt> friend class num_get;
1463.149 +# endif
1463.150 +public:
1463.151 +  typedef char               char_type;
1463.152 +  typedef string             string_type;
1463.153 +
1463.154 +  explicit numpunct(size_t __refs = 0) : _BaseFacet(__refs) {}
1463.155 +
1463.156 +  char decimal_point() const { return do_decimal_point(); }
1463.157 +  char thousands_sep() const { return do_thousands_sep(); }
1463.158 +  string grouping() const { return do_grouping(); }
1463.159 +  string truename() const { return do_truename(); }
1463.160 +  string falsename() const { return do_falsename(); }
1463.161 +
1463.162 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1463.163 +	_STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1463.164 +#else
1463.165 +  	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1463.166 +#endif
1463.167 +
1463.168 +# ifndef _STLP_NO_FRIEND_TEMPLATES
1463.169 +protected:
1463.170 +# endif
1463.171 +  ~numpunct(){};
1463.172 +
1463.173 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1463.174 +public:
1463.175 +  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_truename();
1463.176 +  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_falsename();
1463.177 +  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_grouping();
1463.178 +#else
1463.179 +protected:
1463.180 +  _STLP_STATIC_MEMBER_DECLSPEC static string  _M_truename;
1463.181 +  _STLP_STATIC_MEMBER_DECLSPEC static string  _M_falsename;
1463.182 +  _STLP_STATIC_MEMBER_DECLSPEC static string  _M_grouping;
1463.183 +#endif
1463.184 +
1463.185 +protected:
1463.186 +
1463.187 +  _STLP_DECLSPEC virtual char do_decimal_point() const;
1463.188 +  _STLP_DECLSPEC virtual char do_thousands_sep() const;
1463.189 +  _STLP_DECLSPEC virtual string do_grouping() const;
1463.190 +  _STLP_DECLSPEC virtual string do_truename() const;
1463.191 +  _STLP_DECLSPEC virtual string do_falsename()  const;
1463.192 +};
1463.193 +
1463.194 +# if ! defined (_STLP_NO_WCHAR_T)
1463.195 +
1463.196 +_STLP_TEMPLATE_NULL
1463.197 +#ifdef __SYMBIAN32__
1463.198 +class numpunct<wchar_t> : public locale::facet
1463.199 +#else
1463.200 +class _STLP_CLASS_DECLSPEC numpunct<wchar_t> : public locale::facet
1463.201 +#endif
1463.202 +{
1463.203 +  friend class _Locale;
1463.204 +public:
1463.205 +  typedef wchar_t               char_type;
1463.206 +  typedef wstring               string_type;
1463.207 +
1463.208 +  explicit numpunct(size_t __refs = 0) : _BaseFacet(__refs) {}
1463.209 +
1463.210 +  wchar_t decimal_point() const { return do_decimal_point(); }
1463.211 +  wchar_t thousands_sep() const { return do_thousands_sep(); }
1463.212 +  string grouping() const { return do_grouping(); }
1463.213 +  wstring truename() const { return do_truename(); }
1463.214 +  wstring falsename() const { return do_falsename(); }
1463.215 +
1463.216 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1463.217 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1463.218 +#else
1463.219 + 	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1463.220 +#endif
1463.221 +
1463.222 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1463.223 +public:
1463.224 +  _STLP_STATIC_MEMBER_DECLSPEC static wstring&  GetNumPunct_M_Wchar_truename();
1463.225 +  _STLP_STATIC_MEMBER_DECLSPEC static wstring&  GetNumPunct_M_Wchar_falsename();
1463.226 +  _STLP_STATIC_MEMBER_DECLSPEC static string&  GetNumPunct_M_Wchar_grouping();
1463.227 +#else
1463.228 +protected:
1463.229 +  _STLP_STATIC_MEMBER_DECLSPEC static wstring _M_truename;
1463.230 +  _STLP_STATIC_MEMBER_DECLSPEC static wstring _M_falsename;
1463.231 +  _STLP_STATIC_MEMBER_DECLSPEC static string _M_grouping;
1463.232 +#endif
1463.233 +protected:
1463.234 +  ~numpunct() {}
1463.235 +
1463.236 +  _STLP_DECLSPEC virtual wchar_t do_decimal_point() const;
1463.237 +  _STLP_DECLSPEC virtual wchar_t do_thousands_sep() const;
1463.238 +  _STLP_DECLSPEC virtual string do_grouping() const;
1463.239 +  _STLP_DECLSPEC virtual wstring do_truename() const;
1463.240 +  _STLP_DECLSPEC virtual wstring do_falsename()  const;
1463.241 +};
1463.242 +
1463.243 +# endif /* WCHAR_T */
1463.244 +
1463.245 +_STLP_TEMPLATE_NULL
1463.246 +class _STLP_CLASS_DECLSPEC numpunct_byname<char> : public numpunct<char> {
1463.247 +public:
1463.248 +  typedef char                char_type;
1463.249 +  typedef string              string_type;
1463.250 +
1463.251 +  explicit _STLP_DECLSPEC numpunct_byname(const char* __name, size_t __refs = 0);
1463.252 +
1463.253 +protected:
1463.254 +
1463.255 +_STLP_DECLSPEC   ~numpunct_byname();
1463.256 +
1463.257 +_STLP_DECLSPEC   virtual char   do_decimal_point() const;
1463.258 +  _STLP_DECLSPEC virtual char   do_thousands_sep() const;
1463.259 +_STLP_DECLSPEC   virtual string do_grouping()      const;
1463.260 +
1463.261 +private:
1463.262 +  _Locale_numeric* _M_numeric;
1463.263 +};
1463.264 +
1463.265 +# ifndef _STLP_NO_WCHAR_T
1463.266 +_STLP_TEMPLATE_NULL
1463.267 +class _STLP_CLASS_DECLSPEC numpunct_byname<wchar_t>: public numpunct<wchar_t> {
1463.268 +public:
1463.269 +  typedef wchar_t               char_type;
1463.270 +  typedef wstring               string_type;
1463.271 +
1463.272 +  explicit _STLP_DECLSPEC numpunct_byname(const char* __name, size_t __refs = 0);
1463.273 +
1463.274 +protected:
1463.275 +
1463.276 +_STLP_DECLSPEC   ~numpunct_byname();
1463.277 +
1463.278 +_STLP_DECLSPEC   virtual wchar_t   do_decimal_point() const;
1463.279 +  _STLP_DECLSPEC virtual wchar_t   do_thousands_sep() const;
1463.280 +_STLP_DECLSPEC   virtual string do_grouping() const;
1463.281 +
1463.282 +private:
1463.283 +  _Locale_numeric* _M_numeric;
1463.284 +};
1463.285 +
1463.286 +# endif /* WCHAR_T */
1463.287 +
1463.288 +#ifdef	__SYMBIAN32__
1463.289 +#include<stl/_numpunct.c>
1463.290 +#endif
1463.291 +_STLP_END_NAMESPACE
1463.292 +
1463.293 +#endif /* _STLP_NUMPUNCT_H */
1463.294 +
1463.295 +// Local Variables:
1463.296 +// mode:C++
1463.297 +// End:
1463.298 +
  1464.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1464.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ostream.c	Wed Mar 31 12:27:01 2010 +0100
  1464.3 @@ -0,0 +1,425 @@
  1464.4 +/*
  1464.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1464.6 + *
  1464.7 + * Copyright (c) 1999
  1464.8 + * Silicon Graphics Computer Systems, Inc.
  1464.9 + *
 1464.10 + * Copyright (c) 1999 
 1464.11 + * Boris Fomitchev
 1464.12 + *
 1464.13 + * This material is provided "as is", with absolutely no warranty expressed
 1464.14 + * or implied. Any use is at your own risk.
 1464.15 + *
 1464.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1464.17 + * without fee, provided the above notices are retained on all copies.
 1464.18 + * Permission to modify the code and to distribute modified code is granted,
 1464.19 + * provided the above notices are retained, and a notice that the code was
 1464.20 + * modified is included with the above copyright notice.
 1464.21 + *
 1464.22 + */ 
 1464.23 +#ifndef _STLP_OSTREAM_C
 1464.24 +#define _STLP_OSTREAM_C
 1464.25 +
 1464.26 +
 1464.27 +#ifndef _STLP_INTERNAL_OSTREAM_H
 1464.28 +# include <stl/_ostream.h>
 1464.29 +#endif
 1464.30 +
 1464.31 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1464.32 +
 1464.33 +#if !defined (_STLP_INTERNAL_NUM_PUT_H)
 1464.34 +# include <stl/_num_put.h>            // For basic_streambuf and iterators
 1464.35 +#endif
 1464.36 +
 1464.37 +_STLP_BEGIN_NAMESPACE
 1464.38 +
 1464.39 +// Helper functions for istream<>::sentry constructor.
 1464.40 +template <class _CharT, class _Traits>
 1464.41 +bool
 1464.42 +_M_init(basic_ostream<_CharT, _Traits>& __str) {
 1464.43 +  if (__str.good()) {
 1464.44 +    // boris : check if this is needed !
 1464.45 +    if (!__str.rdbuf())
 1464.46 +      __str.setstate(ios_base::badbit);
 1464.47 +    if (__str.tie())
 1464.48 +      __str.tie()->flush();
 1464.49 +    return __str.good();
 1464.50 +  } else
 1464.51 +    return false;
 1464.52 +}
 1464.53 +
 1464.54 +//----------------------------------------------------------------------
 1464.55 +// Definitions of non-inline member functions.
 1464.56 +
 1464.57 +// Constructor, destructor
 1464.58 +
 1464.59 +template <class _CharT, class _Traits>
 1464.60 +_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>
 1464.61 +  ::basic_ostream(basic_streambuf<_CharT, _Traits>* __buf)
 1464.62 +    : basic_ios<_CharT, _Traits>() 
 1464.63 +{
 1464.64 +  this->init(__buf);
 1464.65 +}
 1464.66 +
 1464.67 +template <class _CharT, class _Traits>
 1464.68 +_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>::~basic_ostream()
 1464.69 +{}
 1464.70 +
 1464.71 +// Output directly from a streambuf.
 1464.72 +template <class _CharT, class _Traits>
 1464.73 +_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>& 
 1464.74 +basic_ostream<_CharT, _Traits>::operator<<(basic_streambuf<_CharT, _Traits>* __from)
 1464.75 +{
 1464.76 +  sentry __sentry(*this);
 1464.77 +  if (__sentry) {
 1464.78 +    if (__from) {
 1464.79 +      bool __any_inserted = __from->gptr() != __from->egptr()
 1464.80 +        ? this->_M_copy_buffered(__from, this->rdbuf())
 1464.81 +        : this->_M_copy_unbuffered(__from, this->rdbuf());
 1464.82 +      if (!__any_inserted)
 1464.83 +        this->setstate(ios_base::failbit);
 1464.84 +    }
 1464.85 +    else
 1464.86 +      this->setstate(ios_base::badbit);
 1464.87 +  }
 1464.88 +
 1464.89 +  return *this;
 1464.90 +}
 1464.91 +
 1464.92 +// Helper functions for the streambuf version of operator<<.  The
 1464.93 +// exception-handling code is complicated because exceptions thrown
 1464.94 +// while extracting characters are treated differently than exceptions
 1464.95 +// thrown while inserting characters.
 1464.96 +
 1464.97 +template <class _CharT, class _Traits>
 1464.98 +bool basic_ostream<_CharT, _Traits>
 1464.99 +  ::_M_copy_buffered(basic_streambuf<_CharT, _Traits>* __from,
1464.100 +                     basic_streambuf<_CharT, _Traits>* __to)
1464.101 +{
1464.102 +  bool __any_inserted = false;
1464.103 +
1464.104 +  while (__from->egptr() != __from->gptr()) {
1464.105 +    const ptrdiff_t __avail = __from->egptr() - __from->gptr();
1464.106 +
1464.107 +    streamsize __nwritten;
1464.108 +    _STLP_TRY {
1464.109 +      __nwritten = __to->sputn(__from->gptr(), __avail);
1464.110 +      __from->gbump((int)__nwritten);
1464.111 +    }
1464.112 +    _STLP_CATCH_ALL {
1464.113 +      this->_M_handle_exception(ios_base::badbit);
1464.114 +      return __any_inserted;
1464.115 +    }
1464.116 +
1464.117 +    if (__nwritten == __avail) {
1464.118 +      _STLP_TRY {
1464.119 +        if (this->_S_eof(__from->sgetc()))
1464.120 +          return true;
1464.121 +        else
1464.122 +          __any_inserted = true;
1464.123 +      }
1464.124 +      _STLP_CATCH_ALL {
1464.125 +        this->_M_handle_exception(ios_base::failbit);
1464.126 +        return false;
1464.127 +      }
1464.128 +    }
1464.129 +
1464.130 +    else if (__nwritten != 0)
1464.131 +      return true;
1464.132 +
1464.133 +    else
1464.134 +      return __any_inserted;
1464.135 +  }
1464.136 +
1464.137 +  // No characters are in the buffer, but we aren't at EOF.  Switch to
1464.138 +  // unbuffered mode.
1464.139 +  return __any_inserted || this->_M_copy_unbuffered(__from, __to);
1464.140 +}
1464.141 +
1464.142 +template <class _CharT, class _Traits>
1464.143 +bool basic_ostream<_CharT, _Traits>
1464.144 +  ::_M_copy_unbuffered(basic_streambuf<_CharT, _Traits>* __from,
1464.145 +                       basic_streambuf<_CharT, _Traits>* __to)
1464.146 +{
1464.147 +  bool __any_inserted = false;
1464.148 +
1464.149 +#ifdef __SYMBIAN32__
1464.150 +  int_type __c;
1464.151 +    _STLP_TRY {
1464.152 +  __c = __from->sgetc();;
1464.153 +    }
1464.154 +    _STLP_CATCH_ALL {
1464.155 +      this->_M_handle_exception(ios_base::failbit);
1464.156 +      return __any_inserted;
1464.157 +    }
1464.158 +  for(;;){
1464.159 +
1464.160 +    if (this->_S_eof(__c))
1464.161 +      return __any_inserted;
1464.162 +
1464.163 +    else {
1464.164 +      int_type __tmp;
1464.165 +      _STLP_TRY {
1464.166 +        __tmp = __to->sputc(__c);
1464.167 +      }
1464.168 +      _STLP_CATCH_ALL {
1464.169 +        this->_M_handle_exception(ios_base::badbit);
1464.170 +        return __any_inserted;
1464.171 +      }
1464.172 +
1464.173 +      if (this->_S_eof(__tmp)) {
1464.174 +        break;
1464.175 +      }
1464.176 +      else
1464.177 +        __any_inserted = true;
1464.178 +    }
1464.179 +    _STLP_TRY {
1464.180 +      __c = __from->snextc();
1464.181 +    }
1464.182 +    _STLP_CATCH_ALL {
1464.183 +      this->_M_handle_exception(ios_base::failbit);
1464.184 +      return __any_inserted;
1464.185 +    }
1464.186 +  }
1464.187 +#else
1464.188 +  while (true) {
1464.189 +    int_type __c;
1464.190 +    _STLP_TRY {
1464.191 +      __c = __from->sbumpc();
1464.192 +    }
1464.193 +    _STLP_CATCH_ALL {
1464.194 +      this->_M_handle_exception(ios_base::failbit);
1464.195 +      return __any_inserted;
1464.196 +    }
1464.197 +
1464.198 +    if (this->_S_eof(__c))
1464.199 +      return __any_inserted;
1464.200 +
1464.201 +    else {
1464.202 +      int_type __tmp;
1464.203 +      _STLP_TRY {
1464.204 +        __tmp = __to->sputc(__c);
1464.205 +      }
1464.206 +      _STLP_CATCH_ALL {
1464.207 +        this->_M_handle_exception(ios_base::badbit);
1464.208 +        return __any_inserted;
1464.209 +      }
1464.210 +
1464.211 +      if (this->_S_eof(__tmp)) {
1464.212 +        _STLP_TRY {
1464.213 +          /* __tmp = */ __from->sputbackc(__c);
1464.214 +        }
1464.215 +        _STLP_CATCH_ALL {
1464.216 +          this->_M_handle_exception(ios_base::badbit);
1464.217 +          return __any_inserted;
1464.218 +        }
1464.219 +      }
1464.220 +      else
1464.221 +        __any_inserted = true;
1464.222 +    }
1464.223 +  }
1464.224 +#endif
1464.225 +  return __any_inserted;
1464.226 +}
1464.227 +
1464.228 +// Helper function for numeric output.
1464.229 +
1464.230 +template <class _CharT, class _Traits, class _Number>
1464.231 +basic_ostream<_CharT, _Traits>&  _STLP_CALL
1464.232 +_M_put_num(basic_ostream<_CharT, _Traits>& __os, _Number __x)
1464.233 +{
1464.234 +  typedef typename basic_ostream<_CharT, _Traits>::sentry _Sentry;
1464.235 +  _Sentry __sentry(__os);
1464.236 +  bool __failed = true;
1464.237 +
1464.238 +  if (__sentry) {
1464.239 +    _STLP_TRY {
1464.240 +      typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> > _NumPut;      
1464.241 +      __failed = (use_facet<_NumPut>(__os.getloc())).put(
1464.242 +                                                         ostreambuf_iterator<_CharT, _Traits>(__os.rdbuf()), 
1464.243 +                                                         __os, __os.fill(),
1464.244 +                                                         __x).failed();
1464.245 +    }
1464.246 +    _STLP_CATCH_ALL {
1464.247 +      __os._M_handle_exception(ios_base::badbit);
1464.248 +    }
1464.249 +  }
1464.250 +  if (__failed)
1464.251 +    __os.setstate(ios_base::badbit); 
1464.252 +  return __os;
1464.253 +}
1464.254 +
1464.255 +# if defined (_STLP_USE_TEMPLATE_EXPORT)  && defined (__BUILDING_STLPORT)
1464.256 +_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >& _STLP_CALL
1464.257 +_M_put_num(basic_ostream<char, char_traits<char> >&, unsigned long);
1464.258 +_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >&  _STLP_CALL
1464.259 +_M_put_num(basic_ostream<char, char_traits<char> >&, long);
1464.260 +#  if defined (_STLP_LONG_LONG)
1464.261 +_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >&  _STLP_CALL
1464.262 +_M_put_num(basic_ostream<char, char_traits<char> >&, unsigned _STLP_LONG_LONG);
1464.263 +_STLP_EXPORT_TEMPLATE _STLP_EXP_DECLSPEC basic_ostream<char, char_traits<char> >&  _STLP_CALL
1464.264 +_M_put_num(basic_ostream<char, char_traits<char> >&, _STLP_LONG_LONG );
1464.265 +#  endif
1464.266 +# endif
1464.267 +
1464.268 +template <class _CharT, class _Traits>
1464.269 +void basic_ostream<_CharT, _Traits>::_M_put_char(_CharT __c)
1464.270 +{
1464.271 +  sentry __sentry(*this);
1464.272 +  if (__sentry) {
1464.273 +    bool __failed = true;
1464.274 +    _STLP_TRY {
1464.275 +      streamsize __npad = this->width() > 0 ? this->width() - 1 : 0;
1464.276 +      //      if (__npad <= 1)
1464.277 +      if (__npad == 0)
1464.278 +        __failed = this->_S_eof(this->rdbuf()->sputc(__c));
1464.279 +      else if ((this->flags() & ios_base::adjustfield) == ios_base::left) {
1464.280 +        __failed = this->_S_eof(this->rdbuf()->sputc(__c));
1464.281 +        __failed = __failed || 
1464.282 +                   this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1464.283 +      }
1464.284 +      else {
1464.285 +        __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1464.286 +        __failed = __failed || this->_S_eof(this->rdbuf()->sputc(__c));
1464.287 +      }
1464.288 +
1464.289 +      this->width(0);
1464.290 +    }
1464.291 +    _STLP_CATCH_ALL {
1464.292 +      this->_M_handle_exception(ios_base::badbit);
1464.293 +    }
1464.294 +
1464.295 +    if (__failed)
1464.296 +      this->setstate(ios_base::badbit);
1464.297 +  }
1464.298 +}
1464.299 +
1464.300 +template <class _CharT, class _Traits>
1464.301 +void basic_ostream<_CharT, _Traits>::_M_put_nowiden(const _CharT* __s)
1464.302 +{
1464.303 +  sentry __sentry(*this);
1464.304 +  if (__sentry) {
1464.305 +    bool __failed = true;
1464.306 +    streamsize __n = _Traits::length(__s);
1464.307 +    streamsize __npad = this->width() > __n ? this->width() - __n : 0;
1464.308 +
1464.309 +    _STLP_TRY {
1464.310 +      if (__npad == 0)
1464.311 +        __failed = this->rdbuf()->sputn(__s, __n) != __n;
1464.312 +      else if ((this->flags() & ios_base::adjustfield) == ios_base::left) {
1464.313 +        __failed = this->rdbuf()->sputn(__s, __n) != __n;
1464.314 +        __failed = __failed || 
1464.315 +                   this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1464.316 +      }
1464.317 +      else {
1464.318 +        __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1464.319 +        __failed = __failed || this->rdbuf()->sputn(__s, __n) != __n;
1464.320 +      }
1464.321 +
1464.322 +      this->width(0);
1464.323 +    }
1464.324 +    _STLP_CATCH_ALL {
1464.325 +      this->_M_handle_exception(ios_base::badbit);
1464.326 +    }
1464.327 +
1464.328 +    if (__failed)
1464.329 +      this->setstate(ios_base::failbit);
1464.330 +  }
1464.331 +}
1464.332 +
1464.333 +template <class _CharT, class _Traits>
1464.334 +void basic_ostream<_CharT, _Traits>::_M_put_widen(const char* __s)
1464.335 +{
1464.336 +  sentry __sentry(*this);
1464.337 +  if (__sentry) {
1464.338 +    bool __failed = true;
1464.339 +    streamsize __n = char_traits<char>::length(__s);
1464.340 +    streamsize __npad = this->width() > __n ? this->width() - __n : 0;
1464.341 +
1464.342 +    _STLP_TRY {
1464.343 +      if (__npad == 0)
1464.344 +        __failed = !this->_M_put_widen_aux(__s, __n);
1464.345 +      else if ((this->flags() & ios_base::adjustfield) == ios_base::left) {
1464.346 +        __failed = !this->_M_put_widen_aux(__s, __n);
1464.347 +        __failed = __failed || 
1464.348 +                   this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1464.349 +      }
1464.350 +      else {
1464.351 +        __failed = this->rdbuf()->_M_sputnc(this->fill(), __npad) != __npad;
1464.352 +        __failed = __failed || !this->_M_put_widen_aux(__s, __n);
1464.353 +      }
1464.354 +
1464.355 +      this->width(0);
1464.356 +    }
1464.357 +    _STLP_CATCH_ALL {
1464.358 +      this->_M_handle_exception(ios_base::badbit);
1464.359 +    }
1464.360 +
1464.361 +    if (__failed)
1464.362 +      this->setstate(ios_base::failbit);
1464.363 +  }
1464.364 +}
1464.365 +
1464.366 +template <class _CharT, class _Traits>
1464.367 +bool basic_ostream<_CharT, _Traits>::_M_put_widen_aux(const char* __s,
1464.368 +                                                      streamsize __n)
1464.369 +{
1464.370 +  basic_streambuf<_CharT, _Traits>* __buf = this->rdbuf();
1464.371 +
1464.372 +  for ( ; __n > 0 ; --__n)
1464.373 +    if (this->_S_eof(__buf->sputc(this->widen(*__s++))))
1464.374 +      return false;
1464.375 +  return true;
1464.376 +}
1464.377 +
1464.378 +// Unformatted output of a single character.
1464.379 +template <class _CharT, class _Traits>
1464.380 +_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>&
1464.381 +basic_ostream<_CharT, _Traits>::put(char_type __c)
1464.382 +{
1464.383 +  sentry __sentry(*this);
1464.384 +  bool __failed = true;
1464.385 +
1464.386 +  if (__sentry) {
1464.387 +    _STLP_TRY {
1464.388 +      __failed = this->_S_eof(this->rdbuf()->sputc(__c));
1464.389 +    }
1464.390 +    _STLP_CATCH_ALL {
1464.391 +      this->_M_handle_exception(ios_base::badbit);
1464.392 +    }
1464.393 +  }
1464.394 +
1464.395 +  if (__failed)
1464.396 +    this->setstate(ios_base::badbit);
1464.397 +
1464.398 +  return *this;
1464.399 +}
1464.400 +
1464.401 +// Unformatted output of a single character.
1464.402 +template <class _CharT, class _Traits>
1464.403 +_STLP_EXP_DECLSPEC basic_ostream<_CharT, _Traits>&
1464.404 +basic_ostream<_CharT, _Traits>::write(const char_type* __s, streamsize __n)
1464.405 +{
1464.406 +  sentry __sentry(*this);
1464.407 +  bool __failed = true;
1464.408 +
1464.409 +  if (__sentry) {
1464.410 +    _STLP_TRY {
1464.411 +      __failed = this->rdbuf()->sputn(__s, __n) != __n;
1464.412 +    }
1464.413 +    _STLP_CATCH_ALL {
1464.414 +      this->_M_handle_exception(ios_base::badbit);
1464.415 +    }
1464.416 +  }
1464.417 +
1464.418 +  if (__failed)
1464.419 +    this->setstate(ios_base::badbit);
1464.420 +
1464.421 +  return *this;
1464.422 +}
1464.423 +
1464.424 +_STLP_END_NAMESPACE
1464.425 +
1464.426 +#endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1464.427 +
1464.428 +#endif /* _STLP_OSTREAM_C */
  1465.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1465.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ostream.h	Wed Mar 31 12:27:01 2010 +0100
  1465.3 @@ -0,0 +1,411 @@
  1465.4 +/*
  1465.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1465.6 + *
  1465.7 + * Copyright (c) 1999
  1465.8 + * Silicon Graphics Computer Systems, Inc.
  1465.9 + *
 1465.10 + * Copyright (c) 1999 
 1465.11 + * Boris Fomitchev
 1465.12 + *
 1465.13 + * This material is provided "as is", with absolutely no warranty expressed
 1465.14 + * or implied. Any use is at your own risk.
 1465.15 + *
 1465.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1465.17 + * without fee, provided the above notices are retained on all copies.
 1465.18 + * Permission to modify the code and to distribute modified code is granted,
 1465.19 + * provided the above notices are retained, and a notice that the code was
 1465.20 + * modified is included with the above copyright notice.
 1465.21 + *
 1465.22 + */ 
 1465.23 +
 1465.24 +
 1465.25 +#ifndef _STLP_INTERNAL_OSTREAM_H
 1465.26 +#define _STLP_INTERNAL_OSTREAM_H
 1465.27 +
 1465.28 +#ifndef _STLP_INTERNAL_IOS_H
 1465.29 +# include <stl/_ios.h>                  // For basic_ios<>.  Includes <iosfwd>.
 1465.30 +#endif
 1465.31 +
 1465.32 +#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1465.33 +# include <stl/_ostreambuf_iterator.h>
 1465.34 +#endif
 1465.35 +
 1465.36 +_STLP_BEGIN_NAMESPACE
 1465.37 +
 1465.38 +template <class _CharT, class _Traits, class _Number> 
 1465.39 +basic_ostream<_CharT, _Traits>& _STLP_CALL
 1465.40 +_M_put_num(basic_ostream<_CharT, _Traits>& __os, _Number __x);
 1465.41 +
 1465.42 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
 1465.43 +template <class _CharT, class _Traits>
 1465.44 +class _Osentry;
 1465.45 +# endif
 1465.46 +
 1465.47 +template <class _CharT, class _Traits>
 1465.48 +bool
 1465.49 +_M_init(basic_ostream<_CharT, _Traits>& __str);
 1465.50 +
 1465.51 +//----------------------------------------------------------------------
 1465.52 +// class basic_ostream<>
 1465.53 +
 1465.54 +template <class _CharT, class _Traits>
 1465.55 +class basic_ostream : virtual public basic_ios<_CharT, _Traits>
 1465.56 +{
 1465.57 +  typedef basic_ostream<_CharT, _Traits> _Self;
 1465.58 +  
 1465.59 +public:                         // Types
 1465.60 +  typedef _CharT                     char_type;
 1465.61 +  typedef typename _Traits::int_type int_type;
 1465.62 +  typedef typename _Traits::pos_type pos_type;
 1465.63 +  typedef typename _Traits::off_type off_type;
 1465.64 +  typedef _Traits                    traits_type;
 1465.65 +  typedef basic_ios<_CharT, _Traits> _Basic_ios;
 1465.66 +
 1465.67 +public:                         // Constructor and destructor.
 1465.68 +  _STLP_DECLSPEC explicit basic_ostream(basic_streambuf<_CharT, _Traits>* __buf);
 1465.69 +  _STLP_DECLSPEC ~basic_ostream();
 1465.70 +
 1465.71 +public:                         // Hooks for manipulators.
 1465.72 +  typedef basic_ios<_CharT, _Traits>& (_STLP_CALL *__ios_fn)(basic_ios<_CharT, _Traits>&);
 1465.73 +  typedef ios_base& (_STLP_CALL *__ios_base_fn)(ios_base&);
 1465.74 +  typedef _Self& (_STLP_CALL *__ostream_fn)(_Self&);
 1465.75 +  _Self& operator<< (__ostream_fn __f) { return __f(*this); }
 1465.76 +  _Self & operator<< (__ios_base_fn __f) { __f(*this); return *this; }
 1465.77 +  _Self& operator<< (__ios_fn __ff) { __ff(*this); return *this; }
 1465.78 +
 1465.79 +private:
 1465.80 +  bool _M_copy_buffered(basic_streambuf<_CharT, _Traits>* __from,
 1465.81 +                        basic_streambuf<_CharT, _Traits>* __to);
 1465.82 +  bool _M_copy_unbuffered(basic_streambuf<_CharT, _Traits>* __from,
 1465.83 +                          basic_streambuf<_CharT, _Traits>* __to);
 1465.84 +
 1465.85 +public:
 1465.86 +  void _M_put_char(_CharT __c);
 1465.87 +
 1465.88 +  void _M_put_nowiden(const _CharT* __s);
 1465.89 +  void _M_put_widen(const char* __s);
 1465.90 +  bool _M_put_widen_aux(const char* __s, streamsize __n);
 1465.91 +
 1465.92 +public:                         // Unformatted output.
 1465.93 +  _Self& put(char_type __c);
 1465.94 +  _Self& write(const char_type* __s, streamsize __n);
 1465.95 +
 1465.96 +public:                         // Formatted output.
 1465.97 +  // Formatted output from a streambuf.
 1465.98 +  _Self& operator<<(basic_streambuf<_CharT, _Traits>* __buf);
 1465.99 +# ifndef _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER
1465.100 +  // this is needed for compiling with option char = unsigned
1465.101 +  _Self& operator<<(unsigned char __x) { _M_put_char(__x); return *this; }
1465.102 +# endif
1465.103 +#ifdef __SYMBIAN32__
1465.104 +  _Self& operator<<(short __x) 
1465.105 +    { 
1465.106 +	ios_base::fmtflags __fmtf =
1465.107 +		ios_base::flags() & ios_base::basefield;
1465.108 +    long __ly = (__fmtf == ios_base::oct ||  __fmtf == ios_base::hex) ? 
1465.109 +                    (long)(unsigned short)(__x) : (long)__x;
1465.110 +    return _M_put_num(*this,  __ly); 
1465.111 +    }
1465.112 +  _Self& operator<<(int __x) 
1465.113 +  { 
1465.114 +	ios_base::fmtflags __fmtf =
1465.115 +		ios_base::flags() & ios_base::basefield;
1465.116 +    long __ly = (__fmtf == ios_base::oct ||  __fmtf == ios_base::hex) ? 
1465.117 +                    (long)(unsigned int)(__x) : (long)__x;
1465.118 +    return _M_put_num(*this,  __ly); 
1465.119 +  }
1465.120 +#else
1465.121 +  _Self& operator<<(short __x) { return _M_put_num(*this,  __x); }
1465.122 +  _Self& operator<<(int __x) { return _M_put_num(*this,  __x); }
1465.123 +#endif
1465.124 +  _Self& operator<<(unsigned int __x) { return _M_put_num(*this,  __STATIC_CAST(unsigned long,__x)); }
1465.125 +  _Self& operator<<(unsigned short __x) { return _M_put_num(*this,  __STATIC_CAST(unsigned long,__x)); }
1465.126 +  _Self& operator<<(long __x) { return _M_put_num(*this,  __x); }
1465.127 +  _Self& operator<<(unsigned long __x) { return _M_put_num(*this,  __x); }
1465.128 +#ifdef _STLP_LONG_LONG
1465.129 +  _Self& operator<< (_STLP_LONG_LONG __x)     { return _M_put_num(*this,  __x); }
1465.130 +  _Self& operator<< (unsigned _STLP_LONG_LONG __x) { return _M_put_num(*this,  __x); }
1465.131 +#endif 
1465.132 +  _Self& operator<<(float __x)
1465.133 +    { return _M_put_num(*this,  __STATIC_CAST(double,__x)); }
1465.134 +  _Self& operator<<(double __x) { return _M_put_num(*this,  __x); }
1465.135 +# ifndef _STLP_NO_LONG_DOUBLE
1465.136 +  _Self& operator<<(long double __x) { return _M_put_num(*this,  __x); }
1465.137 +# endif
1465.138 +  _Self& operator<<(const void* __x) { return _M_put_num(*this,  __x); }
1465.139 +# ifndef _STLP_NO_BOOL
1465.140 +  _Self& operator<<(bool __x) { return _M_put_num(*this,  __x); }
1465.141 +# endif
1465.142 +
1465.143 +public:                         // Buffer positioning and manipulation.
1465.144 +  _Self& flush() {
1465.145 +    if (this->rdbuf())
1465.146 +      if (this->rdbuf()->pubsync() == -1)
1465.147 +        this->setstate(ios_base::badbit);
1465.148 +    return *this;
1465.149 +  }
1465.150 +
1465.151 +  pos_type tellp() {
1465.152 +    return this->rdbuf() && !this->fail()
1465.153 +      ? this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out)
1465.154 +      : pos_type(-1);
1465.155 +  }
1465.156 +
1465.157 +  _Self& seekp(pos_type __pos) {
1465.158 +    if (this->rdbuf() && !this->fail())
1465.159 +      if( pos_type(off_type(-1)) == this->rdbuf()->pubseekpos(__pos, ios_base::out))
1465.160 +        this->setstate(ios_base::failbit);
1465.161 +    return *this;
1465.162 +  }
1465.163 +
1465.164 +  _Self& seekp(off_type __off, ios_base::seekdir __dir) {
1465.165 +    if (this->rdbuf() && !this->fail())
1465.166 +      if( pos_type(off_type(-1)) == this->rdbuf()->pubseekoff(__off, __dir, ios_base::out))
1465.167 +        this->setstate(ios_base::failbit);
1465.168 +    return *this;
1465.169 +  }
1465.170 +
1465.171 +#if defined (_STLP_USE_TEMPLATE_EXPORT)
1465.172 +  // If we are using DLL specs, we have not to use inner classes
1465.173 +  // end class declaration here
1465.174 +  typedef _Osentry<_CharT, _Traits>  sentry;
1465.175 +};
1465.176 +#  define sentry _Osentry
1465.177 +  template <class _CharT, class _Traits>
1465.178 +  class _Osentry {
1465.179 +    typedef _Osentry<_CharT, _Traits> _Self;
1465.180 +# else
1465.181 +    class sentry {
1465.182 +      typedef sentry _Self;
1465.183 +# endif
1465.184 +    private:
1465.185 +      basic_ostream<_CharT, _Traits>& _M_str;
1465.186 +      //      basic_streambuf<_CharT, _Traits>* _M_buf;
1465.187 +      bool _M_ok;
1465.188 +    public:
1465.189 +      explicit sentry(basic_ostream<_CharT, _Traits>& __str)
1465.190 +        : _M_str(__str), /* _M_buf(__str.rdbuf()), */ _M_ok(_M_init(__str))
1465.191 +      {
1465.192 +      }
1465.193 +      
1465.194 +      ~sentry() {
1465.195 +        if (_M_str.flags() & ios_base::unitbuf)
1465.196 +# ifndef _STLP_INCOMPLETE_EXCEPTION_HEADER 
1465.197 +          if (!_STLP_VENDOR_EXCEPT_STD::uncaught_exception())
1465.198 +# endif
1465.199 +            _M_str.flush();
1465.200 +      }
1465.201 +
1465.202 +      operator bool() const { return _M_ok; }
1465.203 +    private:                        // Disable assignment and copy constructor.
1465.204 +      sentry(const _Self& __s) : _M_str (__s._M_str) {};
1465.205 +      void operator=(const _Self&) {};
1465.206 +    };
1465.207 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1465.208 +#  undef sentry
1465.209 +# else
1465.210 +  // close basic_ostream class definition here    
1465.211 +};
1465.212 +# endif
1465.213 +  
1465.214 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1465.215 +_STLP_EXPORT_TEMPLATE_CLASS basic_ostream<char, char_traits<char> >;
1465.216 +_STLP_EXPORT_TEMPLATE_CLASS _Osentry<char, char_traits<char> >;
1465.217 +#  if !defined (_STLP_NO_WCHAR_T)
1465.218 +_STLP_EXPORT_TEMPLATE_CLASS basic_ostream<wchar_t, char_traits<wchar_t> >;
1465.219 +_STLP_EXPORT_TEMPLATE_CLASS _Osentry<wchar_t, char_traits<wchar_t> >;
1465.220 +#  endif
1465.221 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1465.222 +
1465.223 +template <class _CharT, class _Traits>
1465.224 +inline basic_streambuf<_CharT, _Traits>* _STLP_CALL 
1465.225 +_M_get_ostreambuf(basic_ostream<_CharT, _Traits>& __St) 
1465.226 +{
1465.227 +  return __St.rdbuf();
1465.228 +}
1465.229 +
1465.230 +// Non-member functions.
1465.231 +
1465.232 +template <class _CharT, class _Traits>
1465.233 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.234 +operator<<(basic_ostream<_CharT, _Traits>& __os, _CharT __c) {
1465.235 +  __os._M_put_char(__c);
1465.236 +  return __os;
1465.237 +}
1465.238 +
1465.239 +template <class _CharT, class _Traits>
1465.240 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.241 +operator<<(basic_ostream<_CharT, _Traits>& __os, const _CharT* __s) {
1465.242 +#ifdef __SYMBIAN32__
1465.243 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__s);
1465.244 +#else
1465.245 +  __os._M_put_nowiden(__s);
1465.246 +#endif
1465.247 +  return __os;
1465.248 +}
1465.249 +
1465.250 +# ifdef _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER
1465.251 +// some specializations
1465.252 +
1465.253 +inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1465.254 +operator<<(basic_ostream<char, char_traits<char> >& __os, char __c) {
1465.255 +  __os._M_put_char(__c);
1465.256 +  return __os;
1465.257 +}
1465.258 +
1465.259 +inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1465.260 +operator<<(basic_ostream<char, char_traits<char> >& __os, signed char __c) {
1465.261 +  __os._M_put_char(__c);
1465.262 +  return __os;
1465.263 +}
1465.264 +
1465.265 +inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1465.266 +operator<<(basic_ostream<char, char_traits<char> >& __os, unsigned char __c) {
1465.267 +  __os._M_put_char(__c);
1465.268 +  return __os;
1465.269 +}
1465.270 +
1465.271 +inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1465.272 +operator<<(basic_ostream<char, char_traits<char> >& __os, const char* __s) {
1465.273 +#ifdef __SYMBIAN32__
1465.274 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__s);
1465.275 +#else
1465.276 +  __os._M_put_nowiden(__s);
1465.277 +#endif
1465.278 +  return __os;
1465.279 +}
1465.280 +
1465.281 +inline basic_ostream<char, char_traits<char> >& _STLP_CALL
1465.282 +operator<<(basic_ostream<char, char_traits<char> >& __os, const signed char* __s) {
1465.283 +#ifdef __SYMBIAN32__
1465.284 +   !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.285 +#else
1465.286 +   __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.287 +#endif
1465.288 +  return __os;
1465.289 +}
1465.290 +
1465.291 +inline basic_ostream<char, char_traits<char> >&
1465.292 +operator<<(basic_ostream<char, char_traits<char> >& __os, const unsigned char* __s) {
1465.293 +#ifdef __SYMBIAN32__
1465.294 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.295 +#else
1465.296 +  __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.297 +#endif
1465.298 +  return __os;
1465.299 +}
1465.300 +
1465.301 +# else
1465.302 +
1465.303 +// also for compilers who might use that
1465.304 +template <class _CharT, class _Traits>
1465.305 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.306 +operator<<(basic_ostream<_CharT, _Traits>& __os, char __c) {
1465.307 +  __os._M_put_char(__os.widen(__c));
1465.308 +  return __os;
1465.309 +}
1465.310 +
1465.311 +template <class _Traits>
1465.312 +inline basic_ostream<char, _Traits>& _STLP_CALL
1465.313 +operator<<(basic_ostream<char, _Traits>& __os, char __c) {
1465.314 +  __os._M_put_char(__c);
1465.315 +  return __os;
1465.316 +}
1465.317 +
1465.318 +template <class _Traits>
1465.319 +inline basic_ostream<char, _Traits>& _STLP_CALL
1465.320 +operator<<(basic_ostream<char, _Traits>& __os, signed char __c) {
1465.321 +  __os._M_put_char(__c);
1465.322 +  return __os;
1465.323 +}
1465.324 +
1465.325 +template <class _Traits>
1465.326 +inline basic_ostream<char, _Traits>& _STLP_CALL
1465.327 +operator<<(basic_ostream<char, _Traits>& __os, unsigned char __c) {
1465.328 +  __os._M_put_char(__c);
1465.329 +  return __os;
1465.330 +}
1465.331 +
1465.332 +template <class _CharT, class _Traits>
1465.333 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.334 +operator<<(basic_ostream<_CharT, _Traits>& __os, const char* __s) {
1465.335 +#ifdef __SYMBIAN32__
1465.336 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_widen(__s);
1465.337 +#else
1465.338 +  __os._M_put_widen(__s);
1465.339 +#endif
1465.340 +  return __os;
1465.341 +}
1465.342 +
1465.343 +template <class _Traits>
1465.344 +inline basic_ostream<char, _Traits>& _STLP_CALL
1465.345 +operator<<(basic_ostream<char, _Traits>& __os, const char* __s) {
1465.346 +#ifdef __SYMBIAN32__
1465.347 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__s);
1465.348 +#else
1465.349 +  __os._M_put_nowiden(__s);
1465.350 +#endif
1465.351 +  return __os;
1465.352 +}
1465.353 +
1465.354 +template <class _Traits>
1465.355 +inline basic_ostream<char, _Traits>& _STLP_CALL
1465.356 +operator<<(basic_ostream<char, _Traits>& __os, const signed char* __s) {
1465.357 +#ifdef __SYMBIAN32__
1465.358 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.359 +#else
1465.360 +  __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.361 +#endif
1465.362 +  return __os;
1465.363 +}
1465.364 +
1465.365 +template <class _Traits>
1465.366 +inline basic_ostream<char, _Traits>&
1465.367 +operator<<(basic_ostream<char, _Traits>& __os, const unsigned char* __s) {
1465.368 +#ifdef __SYMBIAN32__
1465.369 +  !__s ? __os.setstate(ios_base::badbit):__os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.370 +#else
1465.371 +  __os._M_put_nowiden(__REINTERPRET_CAST(const char*,__s));
1465.372 +#endif
1465.373 +  return __os;
1465.374 +}
1465.375 +# endif /* _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER */
1465.376 +
1465.377 +//----------------------------------------------------------------------
1465.378 +// basic_ostream manipulators.
1465.379 +
1465.380 +template <class _CharT, class _Traits>
1465.381 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.382 +endl(basic_ostream<_CharT, _Traits>& __os) {
1465.383 +  __os.put(__os.widen('\n'));
1465.384 +  __os.flush();
1465.385 +  return __os;
1465.386 +}
1465.387 +
1465.388 +template <class _CharT, class _Traits>
1465.389 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.390 +ends(basic_ostream<_CharT, _Traits>& __os) {
1465.391 +  __os.put(_STLP_DEFAULT_CONSTRUCTED(_CharT));
1465.392 +  return __os;
1465.393 +}
1465.394 +
1465.395 +template <class _CharT, class _Traits>
1465.396 +inline basic_ostream<_CharT, _Traits>& _STLP_CALL
1465.397 +flush(basic_ostream<_CharT, _Traits>& __os) {
1465.398 +  __os.flush();
1465.399 +  return __os;
1465.400 +}
1465.401 +
1465.402 +_STLP_END_NAMESPACE
1465.403 +
1465.404 +#  undef _STLP_MANIP_INLINE
1465.405 +
1465.406 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1465.407 +#  include <stl/_ostream.c>
1465.408 +# endif
1465.409 +
1465.410 +#endif /* _STLP_INTERNAL_OSTREAM_H */
1465.411 +
1465.412 +// Local Variables:
1465.413 +// mode:C++
1465.414 +// End:
  1466.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1466.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ostreambuf_iterator.h	Wed Mar 31 12:27:01 2010 +0100
  1466.3 @@ -0,0 +1,97 @@
  1466.4 +/*
  1466.5 + * Copyright (c) 1999
  1466.6 + * Silicon Graphics Computer Systems, Inc.
  1466.7 + *
  1466.8 + * Copyright (c) 1999 
  1466.9 + * Boris Fomitchev
 1466.10 + *
 1466.11 + * This material is provided "as is", with absolutely no warranty expressed
 1466.12 + * or implied. Any use is at your own risk.
 1466.13 + *
 1466.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1466.15 + * without fee, provided the above notices are retained on all copies.
 1466.16 + * Permission to modify the code and to distribute modified code is granted,
 1466.17 + * provided the above notices are retained, and a notice that the code was
 1466.18 + * modified is included with the above copyright notice.
 1466.19 + *
 1466.20 + */ 
 1466.21 +// WARNING: This is an internal header file, included by other C++
 1466.22 +// standard library headers.  You should not attempt to use this header
 1466.23 +// file directly.
 1466.24 +
 1466.25 +
 1466.26 +#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1466.27 +#define _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1466.28 +
 1466.29 +#ifndef _STLP_INTERNAL_STREAMBUF
 1466.30 +# include <stl/_streambuf.h>
 1466.31 +#endif
 1466.32 +
 1466.33 +_STLP_BEGIN_NAMESPACE
 1466.34 +
 1466.35 +template <class _CharT, class _Traits>
 1466.36 +extern basic_streambuf<_CharT, _Traits>* _STLP_CALL _M_get_ostreambuf(basic_ostream<_CharT, _Traits>& ) ;
 1466.37 +
 1466.38 +// The default template argument is declared in iosfwd
 1466.39 +template<class _CharT, class _Traits>
 1466.40 +class ostreambuf_iterator
 1466.41 +{
 1466.42 +public:
 1466.43 +  typedef _CharT                           char_type;
 1466.44 +  typedef _Traits                          traits_type;
 1466.45 +  typedef typename _Traits::int_type       int_type;
 1466.46 +  typedef basic_streambuf<_CharT, _Traits> streambuf_type;
 1466.47 +  typedef basic_ostream<_CharT, _Traits>   ostream_type;
 1466.48 +
 1466.49 +  typedef output_iterator_tag              iterator_category;
 1466.50 +  typedef void                             value_type;
 1466.51 +  typedef void                             difference_type;
 1466.52 +  typedef void                             pointer;
 1466.53 +  typedef void                             reference;
 1466.54 +
 1466.55 +public:
 1466.56 +  ostreambuf_iterator(streambuf_type* __buf) _STLP_NOTHROW : _M_buf(__buf), _M_ok(__buf!=0) {}
 1466.57 +  //  ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW : _M_buf(_M_get_ostreambuf(__o)), _M_ok(_M_buf != 0) {}
 1466.58 +  inline ostreambuf_iterator(ostream_type& __o) _STLP_NOTHROW;
 1466.59 +
 1466.60 +  ostreambuf_iterator<_CharT, _Traits>& operator=(char_type __c) {
 1466.61 +    _M_ok = _M_ok && !traits_type::eq_int_type(_M_buf->sputc(__c),
 1466.62 +                                               traits_type::eof());
 1466.63 +    return *this;
 1466.64 +  }    
 1466.65 +  
 1466.66 +  ostreambuf_iterator<_CharT, _Traits>& operator*()     { return *this; }
 1466.67 +  ostreambuf_iterator<_CharT, _Traits>& operator++()    { return *this; }
 1466.68 +  ostreambuf_iterator<_CharT, _Traits>& operator++(int) { return *this; }
 1466.69 +
 1466.70 +  bool failed() const { return !_M_ok; }
 1466.71 +
 1466.72 +private:
 1466.73 +  streambuf_type* _M_buf;
 1466.74 +  bool _M_ok;
 1466.75 +};
 1466.76 +
 1466.77 +template <class _CharT, class _Traits>
 1466.78 +inline ostreambuf_iterator<_CharT, _Traits>::ostreambuf_iterator(basic_ostream<_CharT, _Traits>& __o) _STLP_NOTHROW : _M_buf(_M_get_ostreambuf(__o)), _M_ok(_M_buf != 0) {}
 1466.79 +
 1466.80 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
 1466.81 +_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<char, char_traits<char> >;
 1466.82 +#  if defined (INSTANTIATE_WIDE_STREAMS)
 1466.83 +_STLP_EXPORT_TEMPLATE_CLASS ostreambuf_iterator<wchar_t, char_traits<wchar_t> >;
 1466.84 +#  endif
 1466.85 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
 1466.86 +
 1466.87 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1466.88 +template <class _CharT, class _Traits>
 1466.89 +inline output_iterator_tag _STLP_CALL 
 1466.90 +iterator_category(const ostreambuf_iterator<_CharT, _Traits>&) { return output_iterator_tag(); }
 1466.91 +# endif
 1466.92 +
 1466.93 +_STLP_END_NAMESPACE
 1466.94 +
 1466.95 +#endif /* _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H */
 1466.96 +
 1466.97 +// Local Variables:
 1466.98 +// mode:C++
 1466.99 +// End:
1466.100 +
  1467.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1467.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_pair.h	Wed Mar 31 12:27:01 2010 +0100
  1467.3 @@ -0,0 +1,210 @@
  1467.4 +/*
  1467.5 + *
  1467.6 + * Copyright (c) 1994
  1467.7 + * Hewlett-Packard Company
  1467.8 + *
  1467.9 + * Copyright (c) 1996,1997
 1467.10 + * Silicon Graphics Computer Systems, Inc.
 1467.11 + *
 1467.12 + * Copyright (c) 1997
 1467.13 + * Moscow Center for SPARC Technology
 1467.14 + *
 1467.15 + * Copyright (c) 1999 
 1467.16 + * Boris Fomitchev
 1467.17 + *
 1467.18 + * This material is provided "as is", with absolutely no warranty expressed
 1467.19 + * or implied. Any use is at your own risk.
 1467.20 + *
 1467.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1467.22 + * without fee, provided the above notices are retained on all copies.
 1467.23 + * Permission to modify the code and to distribute modified code is granted,
 1467.24 + * provided the above notices are retained, and a notice that the code was
 1467.25 + * modified is included with the above copyright notice.
 1467.26 + *
 1467.27 + */
 1467.28 +
 1467.29 +
 1467.30 +/* NOTE: This is an internal header file, included by other STL headers.
 1467.31 + *   You should not attempt to use it directly.
 1467.32 + */
 1467.33 +
 1467.34 +#ifndef _STLP_INTERNAL_PAIR_H
 1467.35 +#define _STLP_INTERNAL_PAIR_H
 1467.36 +
 1467.37 +#include <stl/_construct.h>
 1467.38 +
 1467.39 +_STLP_BEGIN_NAMESPACE
 1467.40 +
 1467.41 +#ifdef _STLP_USE_TRAP_LEAVE
 1467.42 +template <class _T1, class _T2>
 1467.43 +struct pair {
 1467.44 +  typedef _T1 first_type;
 1467.45 +  typedef _T2 second_type;
 1467.46 +
 1467.47 +  _T1 first;
 1467.48 +  _STLP_StackPusher<_T1> __pusher;
 1467.49 +  _T2 second;
 1467.50 +
 1467.51 +  // first and second should construct themselves with their default constructors in ANSI order
 1467.52 +  pair() : __pusher(&first) {
 1467.53 +    CleanupStack::Pop();
 1467.54 +  }
 1467.55 +
 1467.56 +  pair(const _T1& __a, const _T2& __b) : first(__a), __pusher(&first), second(__b) {
 1467.57 +    CleanupStack::Pop();
 1467.58 +  }
 1467.59 +
 1467.60 +  // undergroud extensions
 1467.61 +  pair(const _T1& __a, __false_type) : first(__a), __pusher(&first), second() {
 1467.62 +    CleanupStack::Pop();
 1467.63 +  }
 1467.64 +  pair(__true_type, const _T2& __a) : first(), __pusher(&first), second(__a) {
 1467.65 +    CleanupStack::Pop();
 1467.66 +  }
 1467.67 +
 1467.68 +#if defined (_STLP_MEMBER_TEMPLATES) && !(defined (_STLP_MSVC) && (_STLP_MSVC < 1200))
 1467.69 +  template <class _U1, class _U2>
 1467.70 +  pair(const pair<_U1, _U2>& __p) : first(__p.first), __pusher(&first), second(__p.second) {
 1467.71 +    CleanupStack::Pop();
 1467.72 +  }
 1467.73 +
 1467.74 +  pair(const pair<_T1,_T2>& __o) : first(__o.first), __pusher(&first), second(__o.second) {
 1467.75 +    CleanupStack::Pop();
 1467.76 +  }
 1467.77 +#endif
 1467.78 +  __TRIVIAL_DESTRUCTOR(pair)
 1467.79 +};
 1467.80 +
 1467.81 +#else
 1467.82 +
 1467.83 +template <class _T1, class _T2>
 1467.84 +struct pair {
 1467.85 +  typedef _T1 first_type;
 1467.86 +  typedef _T2 second_type;
 1467.87 +
 1467.88 +  _T1 first;
 1467.89 +  _T2 second;
 1467.90 +# if defined (_STLP_CONST_CONSTRUCTOR_BUG)
 1467.91 +  pair() {}
 1467.92 +# else
 1467.93 +  pair() : first(_T1()), second(_T2()) {}
 1467.94 +# endif
 1467.95 +  pair(const _T1& __a, const _T2& __b) : first(__a), second(__b) {}
 1467.96 +
 1467.97 +  // undergroud extensions
 1467.98 +  pair(const _T1& __a, __false_type) : first(__a), second() {}
 1467.99 +  pair(const _T2& __a, __true_type) : first(), second(__a) {}
1467.100 +
1467.101 +#if defined (_STLP_MEMBER_TEMPLATES) && !(defined (_STLP_MSVC) && (_STLP_MSVC < 1200))
1467.102 +  template <class _U1, class _U2>
1467.103 +  pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {}
1467.104 +
1467.105 +  pair(const pair<_T1,_T2>& __o) : first(__o.first), second(__o.second) {}
1467.106 +#endif
1467.107 +  __TRIVIAL_DESTRUCTOR(pair)
1467.108 +};
1467.109 +#endif
1467.110 +
1467.111 +template <class _T1, class _T2>
1467.112 +inline bool _STLP_CALL operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
1467.113 +{ 
1467.114 +  return __x.first == __y.first && __x.second == __y.second; 
1467.115 +}
1467.116 +
1467.117 +template <class _T1, class _T2>
1467.118 +inline bool _STLP_CALL operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
1467.119 +{ 
1467.120 +  return __x.first < __y.first || 
1467.121 +         (!(__y.first < __x.first) && __x.second < __y.second); 
1467.122 +}
1467.123 +
1467.124 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1467.125 +
1467.126 +template <class _T1, class _T2>
1467.127 +inline bool _STLP_CALL operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1467.128 +  return !(__x == __y);
1467.129 +}
1467.130 +
1467.131 +template <class _T1, class _T2>
1467.132 +inline bool _STLP_CALL operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1467.133 +  return __y < __x;
1467.134 +}
1467.135 +
1467.136 +template <class _T1, class _T2>
1467.137 +inline bool _STLP_CALL operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1467.138 +  return !(__y < __x);
1467.139 +}
1467.140 +
1467.141 +template <class _T1, class _T2>
1467.142 +inline bool _STLP_CALL operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) {
1467.143 +  return !(__x < __y);
1467.144 +}
1467.145 +
1467.146 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1467.147 +
1467.148 +
1467.149 +#if defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && ! defined (_STLP_NO_EXTENSIONS) && ! defined (__BORLANDC__) && ! defined (__DMC__)
1467.150 +template <class _T1, class _T2, int _Sz>
1467.151 +inline pair<_T1, _T2 const*> make_pair(_T1 const& __x,
1467.152 +                                       _T2 const (&__y)[_Sz])
1467.153 +{
1467.154 +  return pair<_T1, _T2 const*>(__x, static_cast<_T2 const*>(__y));
1467.155 +}
1467.156 +
1467.157 +template <class _T1, class _T2, int _Sz>
1467.158 +inline pair<_T1 const*, _T2> make_pair(_T1 const (&__x)[_Sz],
1467.159 +                                       _T2 const& __y)
1467.160 +{
1467.161 +  return pair<_T1 const*, _T2>(static_cast<_T1 const*>(__x), __y);
1467.162 +}
1467.163 +
1467.164 +template <class _T1, class _T2, int _Sz1, int _Sz2>
1467.165 +inline pair<_T1 const*, _T2 const*> make_pair(_T1 const (&__x)[_Sz1],
1467.166 +                                              _T2 const (&__y)[_Sz2])
1467.167 +{
1467.168 +  return pair<_T1 const*, _T2 const*>(static_cast<_T1 const*>(__x),
1467.169 +                                      static_cast<_T2 const*>(__y));
1467.170 +}
1467.171 +#endif
1467.172 +
1467.173 +template <class _T1, class _T2>
1467.174 +inline pair<_T1, _T2> _STLP_CALL make_pair(const _T1& __x, const _T2& __y)
1467.175 +{
1467.176 +  return pair<_T1, _T2>(__x, __y);
1467.177 +}
1467.178 +
1467.179 +
1467.180 +_STLP_END_NAMESPACE
1467.181 +
1467.182 +# if defined (_STLP_USE_NAMESPACES) || ! defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE) 
1467.183 +_STLP_BEGIN_RELOPS_NAMESPACE
1467.184 +
1467.185 +template <class _Tp>
1467.186 +inline bool _STLP_CALL operator!=(const _Tp& __x, const _Tp& __y) {
1467.187 +  return !(__x == __y);
1467.188 +}
1467.189 +
1467.190 +template <class _Tp>
1467.191 +inline bool _STLP_CALL operator>(const _Tp& __x, const _Tp& __y) {
1467.192 +  return __y < __x;
1467.193 +}
1467.194 +
1467.195 +template <class _Tp>
1467.196 +inline bool _STLP_CALL operator<=(const _Tp& __x, const _Tp& __y) {
1467.197 +  return !(__y < __x);
1467.198 +}
1467.199 +
1467.200 +template <class _Tp>
1467.201 +inline bool _STLP_CALL  operator>=(const _Tp& __x, const _Tp& __y) {
1467.202 +  return !(__x < __y);
1467.203 +}
1467.204 +
1467.205 +_STLP_END_RELOPS_NAMESPACE
1467.206 +
1467.207 +# endif
1467.208 +
1467.209 +#endif /* _STLP_INTERNAL_PAIR_H */
1467.210 +
1467.211 +// Local Variables:
1467.212 +// mode:C++
1467.213 +// End:
  1468.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1468.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_pthread_alloc.h	Wed Mar 31 12:27:01 2010 +0100
  1468.3 @@ -0,0 +1,489 @@
  1468.4 +/*
  1468.5 + *
  1468.6 + * Copyright (c) 1994
  1468.7 + * Hewlett-Packard Company
  1468.8 + *
  1468.9 + * Copyright (c) 1996,1997
 1468.10 + * Silicon Graphics Computer Systems, Inc.
 1468.11 + *
 1468.12 + * Copyright (c) 1997
 1468.13 + * Moscow Center for SPARC Technology
 1468.14 + *
 1468.15 + * Copyright (c) 1999 
 1468.16 + * Boris Fomitchev
 1468.17 + *
 1468.18 + * This material is provided "as is", with absolutely no warranty expressed
 1468.19 + * or implied. Any use is at your own risk.
 1468.20 + *
 1468.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1468.22 + * without fee, provided the above notices are retained on all copies.
 1468.23 + * Permission to modify the code and to distribute modified code is granted,
 1468.24 + * provided the above notices are retained, and a notice that the code was
 1468.25 + * modified is included with the above copyright notice.
 1468.26 + *
 1468.27 + */
 1468.28 +
 1468.29 +#ifndef _STLP_PTHREAD_ALLOC_H
 1468.30 +#define _STLP_PTHREAD_ALLOC_H
 1468.31 +
 1468.32 +// Pthread-specific node allocator.
 1468.33 +// This is similar to the default allocator, except that free-list
 1468.34 +// information is kept separately for each thread, avoiding locking.
 1468.35 +// This should be reasonably fast even in the presence of threads.
 1468.36 +// The down side is that storage may not be well-utilized.
 1468.37 +// It is not an error to allocate memory in thread A and deallocate
 1468.38 +// it in thread B.  But this effectively transfers ownership of the memory,
 1468.39 +// so that it can only be reallocated by thread B.  Thus this can effectively
 1468.40 +// result in a storage leak if it's done on a regular basis.
 1468.41 +// It can also result in frequent sharing of
 1468.42 +// cache lines among processors, with potentially serious performance
 1468.43 +// consequences.
 1468.44 +
 1468.45 +#include <pthread.h>
 1468.46 +
 1468.47 +#ifndef _STLP_INTERNAL_ALLOC_H
 1468.48 +#include <stl/_alloc.h>
 1468.49 +#endif
 1468.50 +
 1468.51 +#ifndef __RESTRICT
 1468.52 +#  define __RESTRICT
 1468.53 +#endif
 1468.54 +
 1468.55 +_STLP_BEGIN_NAMESPACE
 1468.56 +
 1468.57 +#define _STLP_DATA_ALIGNMENT 8
 1468.58 +
 1468.59 +union _Pthread_alloc_obj {
 1468.60 +    union _Pthread_alloc_obj * __free_list_link;
 1468.61 +    char __client_data[_STLP_DATA_ALIGNMENT];    /* The client sees this.    */
 1468.62 +};
 1468.63 +
 1468.64 +// Pthread allocators don't appear to the client to have meaningful
 1468.65 +// instances.  We do in fact need to associate some state with each
 1468.66 +// thread.  That state is represented by
 1468.67 +// _Pthread_alloc_per_thread_state<_Max_size>.
 1468.68 +
 1468.69 +template<size_t _Max_size>
 1468.70 +struct _Pthread_alloc_per_thread_state {
 1468.71 +  typedef _Pthread_alloc_obj __obj;
 1468.72 +  enum { _S_NFREELISTS = _Max_size/_STLP_DATA_ALIGNMENT };
 1468.73 +
 1468.74 +  // Free list link for list of available per thread structures.
 1468.75 +  // When one of these becomes available for reuse due to thread
 1468.76 +  // termination, any objects in its free list remain associated
 1468.77 +  // with it.  The whole structure may then be used by a newly
 1468.78 +  // created thread.
 1468.79 +  _Pthread_alloc_per_thread_state() : __next(0)
 1468.80 +  {
 1468.81 +    memset((void *)__free_list, 0, (size_t)_S_NFREELISTS * sizeof(__obj *));
 1468.82 +  }
 1468.83 +  // Returns an object of size __n, and possibly adds to size n free list.
 1468.84 +  void *_M_refill(size_t __n);
 1468.85 +  
 1468.86 +  _Pthread_alloc_obj* volatile __free_list[_S_NFREELISTS]; 
 1468.87 +  _Pthread_alloc_per_thread_state<_Max_size> * __next; 
 1468.88 +  // this data member is only to be used by per_thread_allocator, which returns memory to the originating thread.
 1468.89 +  _STLP_mutex _M_lock;
 1468.90 +
 1468.91 + };
 1468.92 +
 1468.93 +// Pthread-specific allocator.
 1468.94 +// The argument specifies the largest object size allocated from per-thread
 1468.95 +// free lists.  Larger objects are allocated using malloc_alloc.
 1468.96 +// Max_size must be a power of 2.
 1468.97 +template < __DFL_NON_TYPE_PARAM(size_t, _Max_size, _MAX_BYTES) >
 1468.98 +class _Pthread_alloc {
 1468.99 +
1468.100 +public: // but only for internal use:
1468.101 +
1468.102 +  typedef _Pthread_alloc_obj __obj;
1468.103 +  typedef _Pthread_alloc_per_thread_state<_Max_size> __state_type;
1468.104 +  typedef char value_type;
1468.105 +
1468.106 +  // Allocates a chunk for nobjs of size size.  nobjs may be reduced
1468.107 +  // if it is inconvenient to allocate the requested number.
1468.108 +  static char *_S_chunk_alloc(size_t __size, size_t &__nobjs);
1468.109 +
1468.110 +  enum {_S_ALIGN = _STLP_DATA_ALIGNMENT};
1468.111 +
1468.112 +  static size_t _S_round_up(size_t __bytes) {
1468.113 +        return (((__bytes) + (int)_S_ALIGN-1) & ~((int)_S_ALIGN - 1));
1468.114 +  }
1468.115 +  static size_t _S_freelist_index(size_t __bytes) {
1468.116 +        return (((__bytes) + (int)_S_ALIGN-1)/(int)_S_ALIGN - 1);
1468.117 +  }
1468.118 +
1468.119 +private:
1468.120 +  // Chunk allocation state. And other shared state.
1468.121 +  // Protected by _S_chunk_allocator_lock.
1468.122 +  static _STLP_mutex_base _S_chunk_allocator_lock;
1468.123 +  static char *_S_start_free;
1468.124 +  static char *_S_end_free;
1468.125 +  static size_t _S_heap_size;
1468.126 +  static _Pthread_alloc_per_thread_state<_Max_size>* _S_free_per_thread_states;
1468.127 +  static pthread_key_t _S_key;
1468.128 +  static bool _S_key_initialized;
1468.129 +        // Pthread key under which per thread state is stored. 
1468.130 +        // Allocator instances that are currently unclaimed by any thread.
1468.131 +  static void _S_destructor(void *instance);
1468.132 +        // Function to be called on thread exit to reclaim per thread
1468.133 +        // state.
1468.134 +  static _Pthread_alloc_per_thread_state<_Max_size> *_S_new_per_thread_state();
1468.135 +public:
1468.136 +        // Return a recycled or new per thread state.
1468.137 +  static _Pthread_alloc_per_thread_state<_Max_size> *_S_get_per_thread_state();
1468.138 +private:
1468.139 +        // ensure that the current thread has an associated
1468.140 +        // per thread state.
1468.141 +  class _M_lock;
1468.142 +  friend class _M_lock;
1468.143 +  class _M_lock {
1468.144 +      public:
1468.145 +        _M_lock () { _S_chunk_allocator_lock._M_acquire_lock(); }
1468.146 +        ~_M_lock () { _S_chunk_allocator_lock._M_release_lock(); }
1468.147 +  };
1468.148 +
1468.149 +public:
1468.150 +
1468.151 +  /* n must be > 0      */
1468.152 +  static void * allocate(size_t __n)
1468.153 +  {
1468.154 +    __obj * volatile * __my_free_list;
1468.155 +    __obj * __RESTRICT __result;
1468.156 +    __state_type* __a;
1468.157 +
1468.158 +    if (__n > _Max_size) {
1468.159 +        return(__malloc_alloc<0>::allocate(__n));
1468.160 +    }
1468.161 +
1468.162 +    __a = _S_get_per_thread_state();
1468.163 +
1468.164 +    __my_free_list = __a -> __free_list + _S_freelist_index(__n);
1468.165 +    __result = *__my_free_list;
1468.166 +    if (__result == 0) {
1468.167 +        void *__r = __a -> _M_refill(_S_round_up(__n));
1468.168 +        return __r;
1468.169 +    }
1468.170 +    *__my_free_list = __result -> __free_list_link;
1468.171 +    return (__result);
1468.172 +  };
1468.173 +
1468.174 +  /* p may not be 0 */
1468.175 +  static void deallocate(void *__p, size_t __n)
1468.176 +  {
1468.177 +    __obj *__q = (__obj *)__p;
1468.178 +    __obj * volatile * __my_free_list;
1468.179 +    __state_type* __a;
1468.180 +
1468.181 +    if (__n > _Max_size) {
1468.182 +        __malloc_alloc<0>::deallocate(__p, __n);
1468.183 +        return;
1468.184 +    }
1468.185 +
1468.186 +    __a = _S_get_per_thread_state();
1468.187 +    
1468.188 +    __my_free_list = __a->__free_list + _S_freelist_index(__n);
1468.189 +    __q -> __free_list_link = *__my_free_list;
1468.190 +    *__my_free_list = __q;
1468.191 +  }
1468.192 +
1468.193 +  // boris : versions for per_thread_allocator
1468.194 +  /* n must be > 0      */
1468.195 +  static void * allocate(size_t __n, __state_type* __a)
1468.196 +  {
1468.197 +    __obj * volatile * __my_free_list;
1468.198 +    __obj * __RESTRICT __result;
1468.199 +
1468.200 +    if (__n > _Max_size) {
1468.201 +        return(__malloc_alloc<0>::allocate(__n));
1468.202 +    }
1468.203 +
1468.204 +    // boris : here, we have to lock per thread state, as we may be getting memory from
1468.205 +    // different thread pool.
1468.206 +    _STLP_mutex_lock __lock(__a->_M_lock);
1468.207 +
1468.208 +    __my_free_list = __a -> __free_list + _S_freelist_index(__n);
1468.209 +    __result = *__my_free_list;
1468.210 +    if (__result == 0) {
1468.211 +        void *__r = __a -> _M_refill(_S_round_up(__n));
1468.212 +        return __r;
1468.213 +    }
1468.214 +    *__my_free_list = __result -> __free_list_link;
1468.215 +    return (__result);
1468.216 +  };
1468.217 +
1468.218 +  /* p may not be 0 */
1468.219 +  static void deallocate(void *__p, size_t __n, __state_type* __a)
1468.220 +  {
1468.221 +    __obj *__q = (__obj *)__p;
1468.222 +    __obj * volatile * __my_free_list;
1468.223 +
1468.224 +    if (__n > _Max_size) {
1468.225 +        __malloc_alloc<0>::deallocate(__p, __n);
1468.226 +        return;
1468.227 +    }
1468.228 +
1468.229 +    // boris : here, we have to lock per thread state, as we may be returning memory from
1468.230 +    // different thread.
1468.231 +    _STLP_mutex_lock __lock(__a->_M_lock);
1468.232 +
1468.233 +    __my_free_list = __a->__free_list + _S_freelist_index(__n);
1468.234 +    __q -> __free_list_link = *__my_free_list;
1468.235 +    *__my_free_list = __q;
1468.236 +  }
1468.237 +
1468.238 +  static void * reallocate(void *__p, size_t __old_sz, size_t __new_sz);
1468.239 +
1468.240 +} ;
1468.241 +
1468.242 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1468.243 +_STLP_EXPORT_TEMPLATE_CLASS _Pthread_alloc<_MAX_BYTES>;
1468.244 +# endif
1468.245 +
1468.246 +typedef _Pthread_alloc<_MAX_BYTES> __pthread_alloc;
1468.247 +typedef __pthread_alloc pthread_alloc;
1468.248 +
1468.249 +template <class _Tp>
1468.250 +class pthread_allocator {
1468.251 +  typedef pthread_alloc _S_Alloc;          // The underlying allocator.
1468.252 +public:
1468.253 +  typedef size_t     size_type;
1468.254 +  typedef ptrdiff_t  difference_type;
1468.255 +  typedef _Tp*       pointer;
1468.256 +  typedef const _Tp* const_pointer;
1468.257 +  typedef _Tp&       reference;
1468.258 +  typedef const _Tp& const_reference;
1468.259 +  typedef _Tp        value_type;
1468.260 +
1468.261 +#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1468.262 +  template <class _NewType> struct rebind {
1468.263 +    typedef pthread_allocator<_NewType> other;
1468.264 +  };
1468.265 +#endif
1468.266 +
1468.267 +  pthread_allocator() _STLP_NOTHROW {}
1468.268 +  pthread_allocator(const pthread_allocator<_Tp>& a) _STLP_NOTHROW {}
1468.269 +
1468.270 +#if defined (_STLP_MEMBER_TEMPLATES) /* && defined (_STLP_FUNCTION_PARTIAL_ORDER) */
1468.271 +  template <class _OtherType> pthread_allocator(const pthread_allocator<_OtherType>&)
1468.272 +		_STLP_NOTHROW {}
1468.273 +#endif
1468.274 +
1468.275 +  ~pthread_allocator() _STLP_NOTHROW {}
1468.276 +
1468.277 +  pointer address(reference __x) const { return &__x; }
1468.278 +  const_pointer address(const_reference __x) const { return &__x; }
1468.279 +
1468.280 +  // __n is permitted to be 0.  The C++ standard says nothing about what
1468.281 +  // the return value is when __n == 0.
1468.282 +  _Tp* allocate(size_type __n, const void* = 0) {
1468.283 +    return __n != 0 ? __STATIC_CAST(_Tp*,_S_Alloc::allocate(__n * sizeof(_Tp)))
1468.284 +                    : 0;
1468.285 +  }
1468.286 +
1468.287 +  // p is not permitted to be a null pointer.
1468.288 +  void deallocate(pointer __p, size_type __n)
1468.289 +    { _S_Alloc::deallocate(__p, __n * sizeof(_Tp)); }
1468.290 +
1468.291 +  size_type max_size() const _STLP_NOTHROW 
1468.292 +    { return size_t(-1) / sizeof(_Tp); }
1468.293 +
1468.294 +  void construct(pointer __p, const _Tp& __val) { _STLP_PLACEMENT_NEW (__p) _Tp(__val); }
1468.295 +  void destroy(pointer _p) { _p->~_Tp(); }
1468.296 +};
1468.297 +
1468.298 +_STLP_TEMPLATE_NULL
1468.299 +class _STLP_CLASS_DECLSPEC pthread_allocator<void> {
1468.300 +public:
1468.301 +  typedef size_t      size_type;
1468.302 +  typedef ptrdiff_t   difference_type;
1468.303 +  typedef void*       pointer;
1468.304 +  typedef const void* const_pointer;
1468.305 +  typedef void        value_type;
1468.306 +#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1468.307 +  template <class _NewType> struct rebind {
1468.308 +    typedef pthread_allocator<_NewType> other;
1468.309 +  };
1468.310 +#endif
1468.311 +};
1468.312 +
1468.313 +template <class _T1, class _T2>
1468.314 +inline bool operator==(const pthread_allocator<_T1>&,
1468.315 +                       const pthread_allocator<_T2>& a2) 
1468.316 +{
1468.317 +  return true;
1468.318 +}
1468.319 +
1468.320 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1468.321 +template <class _T1, class _T2>
1468.322 +inline bool operator!=(const pthread_allocator<_T1>&,
1468.323 +                       const pthread_allocator<_T2>&)
1468.324 +{
1468.325 +  return false;
1468.326 +}
1468.327 +#endif
1468.328 +
1468.329 +
1468.330 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1468.331 +
1468.332 +# ifdef _STLP_USE_RAW_SGI_ALLOCATORS
1468.333 +template <class _Tp, size_t _Max_size>
1468.334 +struct _Alloc_traits<_Tp, _Pthread_alloc<_Max_size> >
1468.335 +{
1468.336 +  typedef __allocator<_Tp, _Pthread_alloc<_Max_size> > 
1468.337 +          allocator_type;
1468.338 +};
1468.339 +# endif
1468.340 +
1468.341 +template <class _Tp, class _Atype>
1468.342 +struct _Alloc_traits<_Tp, pthread_allocator<_Atype> >
1468.343 +{
1468.344 +  typedef pthread_allocator<_Tp> allocator_type;
1468.345 +};
1468.346 +
1468.347 +#endif
1468.348 +
1468.349 +#if !defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
1468.350 +
1468.351 +template <class _Tp1, class _Tp2>
1468.352 +inline pthread_allocator<_Tp2>&
1468.353 +__stl_alloc_rebind(pthread_allocator<_Tp1>& __x, const _Tp2*) {
1468.354 +  return (pthread_allocator<_Tp2>&)__x;
1468.355 +}
1468.356 +
1468.357 +template <class _Tp1, class _Tp2>
1468.358 +inline pthread_allocator<_Tp2>
1468.359 +__stl_alloc_create(pthread_allocator<_Tp1>&, const _Tp2*) {
1468.360 +  return pthread_allocator<_Tp2>();
1468.361 +}
1468.362 +
1468.363 +#endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1468.364 +
1468.365 +//
1468.366 +// per_thread_allocator<> : this allocator always return memory to the same thread 
1468.367 +// it was allocated from.
1468.368 +//
1468.369 +
1468.370 +template <class _Tp>
1468.371 +class per_thread_allocator {
1468.372 +  typedef pthread_alloc _S_Alloc;          // The underlying allocator.
1468.373 +  typedef pthread_alloc::__state_type __state_type;
1468.374 +public:
1468.375 +  typedef size_t     size_type;
1468.376 +  typedef ptrdiff_t  difference_type;
1468.377 +  typedef _Tp*       pointer;
1468.378 +  typedef const _Tp* const_pointer;
1468.379 +  typedef _Tp&       reference;
1468.380 +  typedef const _Tp& const_reference;
1468.381 +  typedef _Tp        value_type;
1468.382 +
1468.383 +#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1468.384 +  template <class _NewType> struct rebind {
1468.385 +    typedef per_thread_allocator<_NewType> other;
1468.386 +  };
1468.387 +#endif
1468.388 +
1468.389 +  per_thread_allocator() _STLP_NOTHROW { 
1468.390 +    _M_state = _S_Alloc::_S_get_per_thread_state();
1468.391 +  }
1468.392 +  per_thread_allocator(const per_thread_allocator<_Tp>& __a) _STLP_NOTHROW : _M_state(__a._M_state){}
1468.393 +
1468.394 +#if defined (_STLP_MEMBER_TEMPLATES) /* && defined (_STLP_FUNCTION_PARTIAL_ORDER) */
1468.395 +  template <class _OtherType> per_thread_allocator(const per_thread_allocator<_OtherType>& __a)
1468.396 +		_STLP_NOTHROW : _M_state(__a._M_state) {}
1468.397 +#endif
1468.398 +
1468.399 +  ~per_thread_allocator() _STLP_NOTHROW {}
1468.400 +
1468.401 +  pointer address(reference __x) const { return &__x; }
1468.402 +  const_pointer address(const_reference __x) const { return &__x; }
1468.403 +
1468.404 +  // __n is permitted to be 0.  The C++ standard says nothing about what
1468.405 +  // the return value is when __n == 0.
1468.406 +  _Tp* allocate(size_type __n, const void* = 0) {
1468.407 +    return __n != 0 ? __STATIC_CAST(_Tp*,_S_Alloc::allocate(__n * sizeof(_Tp), _M_state)): 0;
1468.408 +  }
1468.409 +
1468.410 +  // p is not permitted to be a null pointer.
1468.411 +  void deallocate(pointer __p, size_type __n)
1468.412 +    { _S_Alloc::deallocate(__p, __n * sizeof(_Tp), _M_state); }
1468.413 +
1468.414 +  size_type max_size() const _STLP_NOTHROW 
1468.415 +    { return size_t(-1) / sizeof(_Tp); }
1468.416 +
1468.417 +  void construct(pointer __p, const _Tp& __val) { _STLP_PLACEMENT_NEW (__p) _Tp(__val); }
1468.418 +  void destroy(pointer _p) { _p->~_Tp(); }
1468.419 +
1468.420 +  // state is being kept here
1468.421 +  __state_type* _M_state;
1468.422 +};
1468.423 +
1468.424 +_STLP_TEMPLATE_NULL
1468.425 +class _STLP_CLASS_DECLSPEC per_thread_allocator<void> {
1468.426 +public:
1468.427 +  typedef size_t      size_type;
1468.428 +  typedef ptrdiff_t   difference_type;
1468.429 +  typedef void*       pointer;
1468.430 +  typedef const void* const_pointer;
1468.431 +  typedef void        value_type;
1468.432 +#ifdef _STLP_MEMBER_TEMPLATE_CLASSES
1468.433 +  template <class _NewType> struct rebind {
1468.434 +    typedef per_thread_allocator<_NewType> other;
1468.435 +  };
1468.436 +#endif
1468.437 +};
1468.438 +
1468.439 +template <class _T1, class _T2>
1468.440 +inline bool operator==(const per_thread_allocator<_T1>& __a1,
1468.441 +                       const per_thread_allocator<_T2>& __a2) 
1468.442 +{
1468.443 +  return __a1._M_state == __a2._M_state;
1468.444 +}
1468.445 +
1468.446 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1468.447 +template <class _T1, class _T2>
1468.448 +inline bool operator!=(const per_thread_allocator<_T1>& __a1,
1468.449 +                       const per_thread_allocator<_T2>& __a2)
1468.450 +{
1468.451 +  return __a1._M_state != __a2._M_state;
1468.452 +}
1468.453 +#endif
1468.454 +
1468.455 +
1468.456 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1468.457 +
1468.458 +template <class _Tp, class _Atype>
1468.459 +struct _Alloc_traits<_Tp, per_thread_allocator<_Atype> >
1468.460 +{
1468.461 +  typedef per_thread_allocator<_Tp> allocator_type;
1468.462 +};
1468.463 +
1468.464 +#endif
1468.465 +
1468.466 +#if !defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
1468.467 +
1468.468 +template <class _Tp1, class _Tp2>
1468.469 +inline per_thread_allocator<_Tp2>&
1468.470 +__stl_alloc_rebind(per_thread_allocator<_Tp1>& __x, const _Tp2*) {
1468.471 +  return (per_thread_allocator<_Tp2>&)__x;
1468.472 +}
1468.473 +
1468.474 +template <class _Tp1, class _Tp2>
1468.475 +inline per_thread_allocator<_Tp2>
1468.476 +__stl_alloc_create(per_thread_allocator<_Tp1>&, const _Tp2*) {
1468.477 +  return per_thread_allocator<_Tp2>();
1468.478 +}
1468.479 +
1468.480 +#endif /* _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM */
1468.481 +
1468.482 +_STLP_END_NAMESPACE
1468.483 +
1468.484 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1468.485 +#  include <stl/_pthread_alloc.c>
1468.486 +# endif
1468.487 +
1468.488 +#endif /* _STLP_PTHREAD_ALLOC */
1468.489 +
1468.490 +// Local Variables:
1468.491 +// mode:C++
1468.492 +// End:
  1469.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1469.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_ptrs_specialize.h	Wed Mar 31 12:27:01 2010 +0100
  1469.3 @@ -0,0 +1,72 @@
  1469.4 +#ifndef _STLP_PTRS_SPECIALIZE_H
  1469.5 +# define _STLP_PTRS_SPECIALIZE_H
  1469.6 +
  1469.7 +// the following is a workaround for arrow operator problems
  1469.8 +#  if defined  ( _STLP_NO_ARROW_OPERATOR ) 
  1469.9 +// User wants to disable proxy -> operators
 1469.10 +#    define _STLP_DEFINE_ARROW_OPERATOR
 1469.11 +#    define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp)
 1469.12 +# else
 1469.13 +// Compiler can handle generic -> operator.
 1469.14 +#  define _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Tp)
 1469.15 +#  ifdef __BORLANDC__
 1469.16 +#   define _STLP_DEFINE_ARROW_OPERATOR  pointer operator->() const { return &(*(*this)); }
 1469.17 +#  elif defined ( _STLP_WINCE ) || defined(__WATCOMC__)
 1469.18 +#   define _STLP_DEFINE_ARROW_OPERATOR pointer operator->() const { reference x = operator*(); return &x; }
 1469.19 +#  else
 1469.20 +#   define _STLP_DEFINE_ARROW_OPERATOR  pointer operator->() const { return &(operator*()); }
 1469.21 +#  endif
 1469.22 +# endif /* _STLP_NO_ARROW_OPERATOR */
 1469.23 +
 1469.24 +// Important pointers specializations
 1469.25 +
 1469.26 +# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
 1469.27 +#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type)
 1469.28 +#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type)
 1469.29 +# else
 1469.30 +#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type) _STLP_TEMPLATE_NULL struct __type_traits<_Type> : __type_traits_aux<true> {};
 1469.31 +#  define _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) \
 1469.32 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type*) \
 1469.33 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type*) \
 1469.34 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type**) \
 1469.35 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type* const *) \
 1469.36 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type**) \
 1469.37 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(_Type***) \
 1469.38 +_STLP_TYPE_TRAITS_POD_SPECIALIZE(const _Type***)
 1469.39 +# endif
 1469.40 +
 1469.41 +# define _STLP_POINTERS_SPECIALIZE(_Type) _STLP_TYPE_TRAITS_POD_SPECIALIZE_V(_Type) _STLP_ARROW_SPECIALIZE_WITH_PTRS(_Type)
 1469.42 +
 1469.43 +#  if !defined ( _STLP_NO_BOOL )
 1469.44 +_STLP_POINTERS_SPECIALIZE( bool )
 1469.45 +#  endif
 1469.46 +_STLP_TYPE_TRAITS_POD_SPECIALIZE_V(void)
 1469.47 +# ifndef _STLP_NO_SIGNED_BUILTINS
 1469.48 +  _STLP_POINTERS_SPECIALIZE( signed char )
 1469.49 +# endif
 1469.50 +  _STLP_POINTERS_SPECIALIZE( char )
 1469.51 +  _STLP_POINTERS_SPECIALIZE( unsigned char )
 1469.52 +  _STLP_POINTERS_SPECIALIZE( short )
 1469.53 +  _STLP_POINTERS_SPECIALIZE( unsigned short )
 1469.54 +  _STLP_POINTERS_SPECIALIZE( int )
 1469.55 +  _STLP_POINTERS_SPECIALIZE( unsigned int )
 1469.56 +  _STLP_POINTERS_SPECIALIZE( long )
 1469.57 +  _STLP_POINTERS_SPECIALIZE( unsigned long )
 1469.58 +  _STLP_POINTERS_SPECIALIZE( float )
 1469.59 +  _STLP_POINTERS_SPECIALIZE( double )
 1469.60 +#  if !defined ( _STLP_NO_LONG_DOUBLE )
 1469.61 +  _STLP_POINTERS_SPECIALIZE( long double )
 1469.62 +#  endif
 1469.63 +#  if defined ( _STLP_LONG_LONG)
 1469.64 +  _STLP_POINTERS_SPECIALIZE( _STLP_LONG_LONG )
 1469.65 +  _STLP_POINTERS_SPECIALIZE( unsigned _STLP_LONG_LONG )
 1469.66 +#  endif
 1469.67 +#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
 1469.68 +  _STLP_POINTERS_SPECIALIZE( wchar_t )
 1469.69 +#  endif
 1469.70 +
 1469.71 +# undef _STLP_ARROW_SPECIALIZE
 1469.72 +# undef _STLP_ARROW_SPECIALIZE_WITH_PTRS
 1469.73 +# undef _STLP_TYPE_TRAITS_POD_SPECIALIZE_V
 1469.74 +
 1469.75 +#endif
  1470.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1470.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_queue.h	Wed Mar 31 12:27:01 2010 +0100
  1470.3 @@ -0,0 +1,212 @@
  1470.4 +/*
  1470.5 + *
  1470.6 + * Copyright (c) 1994
  1470.7 + * Hewlett-Packard Company
  1470.8 + *
  1470.9 + * Copyright (c) 1996,1997
 1470.10 + * Silicon Graphics Computer Systems, Inc.
 1470.11 + *
 1470.12 + * Copyright (c) 1997
 1470.13 + * Moscow Center for SPARC Technology
 1470.14 + *
 1470.15 + * Copyright (c) 1999 
 1470.16 + * Boris Fomitchev
 1470.17 + *
 1470.18 + * This material is provided "as is", with absolutely no warranty expressed
 1470.19 + * or implied. Any use is at your own risk.
 1470.20 + *
 1470.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1470.22 + * without fee, provided the above notices are retained on all copies.
 1470.23 + * Permission to modify the code and to distribute modified code is granted,
 1470.24 + * provided the above notices are retained, and a notice that the code was
 1470.25 + * modified is included with the above copyright notice.
 1470.26 + *
 1470.27 + */
 1470.28 +
 1470.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1470.30 + *   You should not attempt to use it directly.
 1470.31 + */
 1470.32 +
 1470.33 +#ifndef _STLP_INTERNAL_QUEUE_H
 1470.34 +#define _STLP_INTERNAL_QUEUE_H
 1470.35 +
 1470.36 +#ifndef _STLP_INTERNAL_DEQUE_H
 1470.37 +# include <stl/_deque.h>
 1470.38 +#endif
 1470.39 +
 1470.40 +#ifndef _STLP_INTERNAL_VECTOR_H
 1470.41 +# include <stl/_vector.h>
 1470.42 +#endif
 1470.43 +
 1470.44 +#ifndef _STLP_INTERNAL_HEAP_H
 1470.45 +# include <stl/_heap.h>
 1470.46 +#endif
 1470.47 +
 1470.48 +#ifndef _STLP_INTERNAL_FUNCTION_H
 1470.49 +# include <stl/_function.h>
 1470.50 +#endif
 1470.51 +
 1470.52 +#if defined(__SC__) && !defined(__DMC__)		//*ty 12/07/2001 - since "comp" is a built-in type and reserved under SCpp
 1470.53 +#define comp _Comp
 1470.54 +#endif
 1470.55 +
 1470.56 +_STLP_BEGIN_NAMESPACE
 1470.57 +
 1470.58 +# if ! defined ( _STLP_LIMITED_DEFAULT_TEMPLATES )
 1470.59 +template <class _Tp, class _Sequence = deque<_Tp> >
 1470.60 +# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
 1470.61 +#  define _STLP_QUEUE_ARGS _Tp
 1470.62 +template <class _Tp>
 1470.63 +# else
 1470.64 +template <class _Tp, class _Sequence>
 1470.65 +# endif
 1470.66 +
 1470.67 +class queue {
 1470.68 +# if defined ( _STLP_QUEUE_ARGS )
 1470.69 +  typedef deque<_Tp> _Sequence;
 1470.70 +# endif
 1470.71 +public:
 1470.72 +  typedef typename _Sequence::value_type      value_type;
 1470.73 +  typedef typename _Sequence::size_type       size_type;
 1470.74 +  typedef          _Sequence                  container_type;
 1470.75 +
 1470.76 +  typedef typename _Sequence::reference       reference;
 1470.77 +  typedef typename _Sequence::const_reference const_reference;
 1470.78 +
 1470.79 +protected:
 1470.80 +  _Sequence c;
 1470.81 +public:
 1470.82 +  queue() : c() {}
 1470.83 +  explicit queue(const _Sequence& __c) : c(__c) {}
 1470.84 +
 1470.85 +  bool empty() const { return c.empty(); }
 1470.86 +  size_type size() const { return c.size(); }
 1470.87 +  reference front() { return c.front(); }
 1470.88 +  const_reference front() const { return c.front(); }
 1470.89 +  reference back() { return c.back(); }
 1470.90 +  const_reference back() const { return c.back(); }
 1470.91 +  void push(const value_type& __x) { c.push_back(__x); }
 1470.92 +  void pop() { c.pop_front(); }
 1470.93 +  const _Sequence& _Get_c() const { return c; }
 1470.94 +};
 1470.95 +
 1470.96 +# ifndef _STLP_QUEUE_ARGS
 1470.97 +#  define _STLP_QUEUE_ARGS _Tp, _Sequence
 1470.98 +#  define _STLP_QUEUE_HEADER_ARGS class _Tp, class _Sequence
 1470.99 +# else
1470.100 +#  define _STLP_QUEUE_HEADER_ARGS class _Tp
1470.101 +# endif
1470.102 +
1470.103 +template < _STLP_QUEUE_HEADER_ARGS >
1470.104 +inline bool _STLP_CALL 
1470.105 +operator==(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y)
1470.106 +{
1470.107 +  return __x._Get_c() == __y._Get_c();
1470.108 +}
1470.109 +
1470.110 +template < _STLP_QUEUE_HEADER_ARGS >
1470.111 +inline bool _STLP_CALL
1470.112 +operator<(const queue<_STLP_QUEUE_ARGS >& __x, const queue<_STLP_QUEUE_ARGS >& __y)
1470.113 +{
1470.114 +  return __x._Get_c() < __y._Get_c();
1470.115 +}
1470.116 +
1470.117 +_STLP_RELOPS_OPERATORS( template < _STLP_QUEUE_HEADER_ARGS >, queue<_STLP_QUEUE_ARGS > )
1470.118 +
1470.119 +# if !(defined ( _STLP_LIMITED_DEFAULT_TEMPLATES ) || defined ( _STLP_TEMPLATE_PARAM_SUBTYPE_BUG ))
1470.120 +template <class _Tp, class _Sequence = vector<_Tp>, 
1470.121 +          class _Compare = less<_STLP_HEADER_TYPENAME _Sequence::value_type> >
1470.122 +# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
1470.123 +template <class _Tp>
1470.124 +# else
1470.125 +template <class _Tp, class _Sequence, class _Compare>
1470.126 +# endif
1470.127 +class  priority_queue {
1470.128 +# ifdef _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS
1470.129 +  typedef vector<_Tp> _Sequence;
1470.130 +  typedef less< typename vector<_Tp>::value_type> _Compare; 
1470.131 +# endif
1470.132 +public:
1470.133 +  typedef typename _Sequence::value_type      value_type;
1470.134 +  typedef typename _Sequence::size_type       size_type;
1470.135 +  typedef          _Sequence                  container_type;
1470.136 +
1470.137 +  typedef typename _Sequence::reference       reference;
1470.138 +  typedef typename _Sequence::const_reference const_reference;
1470.139 +protected:
1470.140 +  _Sequence c;
1470.141 +  _Compare comp;
1470.142 +public:
1470.143 +  priority_queue() : c() {}
1470.144 +  explicit priority_queue(const _Compare& __x) :  c(), comp(__x) {}
1470.145 +  explicit  priority_queue(const _Compare& __x, const _Sequence& __s) 
1470.146 +    : c(__s), comp(__x)
1470.147 +    { make_heap(c.begin(), c.end(), comp); }
1470.148 +
1470.149 +#ifdef _STLP_MEMBER_TEMPLATES
1470.150 +  template <class _InputIterator>
1470.151 +  priority_queue(_InputIterator __first, _InputIterator __last) 
1470.152 +    : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
1470.153 +
1470.154 +  template <class _InputIterator>
1470.155 +  priority_queue(_InputIterator __first, 
1470.156 +                 _InputIterator __last, const _Compare& __x)
1470.157 +    : c(__first, __last), comp(__x)
1470.158 +    { make_heap(c.begin(), c.end(), comp); }
1470.159 +
1470.160 +  template <class _InputIterator>
1470.161 +  priority_queue(_InputIterator __first, _InputIterator __last,
1470.162 +                 const _Compare& __x, const _Sequence& __s)
1470.163 +  : c(__s), comp(__x)
1470.164 +  { 
1470.165 +    c.insert(c.end(), __first, __last);
1470.166 +    make_heap(c.begin(), c.end(), comp);
1470.167 +  }
1470.168 +
1470.169 +#else /* _STLP_MEMBER_TEMPLATES */
1470.170 +  priority_queue(const value_type* __first, const value_type* __last) 
1470.171 +    : c(__first, __last) { make_heap(c.begin(), c.end(), comp); }
1470.172 +
1470.173 +  priority_queue(const value_type* __first, const value_type* __last, 
1470.174 +                 const _Compare& __x) 
1470.175 +    : c(__first, __last), comp(__x)
1470.176 +    { make_heap(c.begin(), c.end(), comp); }
1470.177 +
1470.178 +  priority_queue(const value_type* __first, const value_type* __last, 
1470.179 +                 const _Compare& __x, const _Sequence& __c)
1470.180 +    : c(__c), comp(__x)
1470.181 +  { 
1470.182 +    c.insert(c.end(), __first, __last);
1470.183 +    make_heap(c.begin(), c.end(), comp);
1470.184 +  }
1470.185 +#endif /* _STLP_MEMBER_TEMPLATES */
1470.186 +
1470.187 +  bool empty() const { return c.empty(); }
1470.188 +  size_type size() const { return c.size(); }
1470.189 +  const_reference top() const { return c.front(); }
1470.190 +  void push(const value_type& __x) {
1470.191 +    _STLP_TRY {
1470.192 +      c.push_back(__x); 
1470.193 +      push_heap(c.begin(), c.end(), comp);
1470.194 +    }
1470.195 +    _STLP_UNWIND(c.clear());
1470.196 +  }
1470.197 +  void pop() {
1470.198 +    _STLP_TRY {
1470.199 +      pop_heap(c.begin(), c.end(), comp);
1470.200 +      c.pop_back();
1470.201 +    }
1470.202 +    _STLP_UNWIND(c.clear());
1470.203 +  }
1470.204 +};
1470.205 +
1470.206 +_STLP_END_NAMESPACE
1470.207 +
1470.208 +#  undef _STLP_QUEUE_ARGS
1470.209 +#  undef _STLP_QUEUE_HEADER_ARGS
1470.210 +
1470.211 +#endif /* _STLP_INTERNAL_QUEUE_H */
1470.212 +
1470.213 +// Local Variables:
1470.214 +// mode:C++
1470.215 +// End:
  1471.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1471.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_range_errors.h	Wed Mar 31 12:27:01 2010 +0100
  1471.3 @@ -0,0 +1,105 @@
  1471.4 +/*
  1471.5 + * Copyright (c) 1999
  1471.6 + * Silicon Graphics
  1471.7 + *
  1471.8 + * Permission to use, copy, modify, distribute and sell this software
  1471.9 + * and its documentation for any purpose is hereby granted without fee,
 1471.10 + * provided that the above copyright notice appear in all copies and
 1471.11 + * that both that copyright notice and this permission notice appear
 1471.12 + * in supporting documentation.  Silicon Graphics makes no
 1471.13 + * representations about the suitability of this software for any
 1471.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1471.15 + *
 1471.16 + */
 1471.17 +
 1471.18 +#ifndef _STLP_RANGE_ERRORS_H
 1471.19 +#define _STLP_RANGE_ERRORS_H
 1471.20 +
 1471.21 +// A few places in the STL throw range errors, using standard exception
 1471.22 +// classes defined in <stdexcept>.  This header file provides functions
 1471.23 +// to throw those exception objects.
 1471.24 +
 1471.25 +// _STLP_DONT_THROW_RANGE_ERRORS is a hook so that users can disable
 1471.26 +// this exception throwing.
 1471.27 +#if defined(_STLP_CAN_THROW_RANGE_ERRORS) && defined(_STLP_USE_EXCEPTIONS) \
 1471.28 +    && !defined(_STLP_DONT_THROW_RANGE_ERRORS)
 1471.29 +# define _STLP_THROW_RANGE_ERRORS
 1471.30 +#endif
 1471.31 +
 1471.32 +// For the STLport iostreams, only declaration here, definition is in the lib
 1471.33 +
 1471.34 +#if defined ( _STLP_OWN_IOSTREAMS  ) && ! defined (_STLP_EXTERN_RANGE_ERRORS) 
 1471.35 +#  define _STLP_EXTERN_RANGE_ERRORS
 1471.36 +# endif
 1471.37 +
 1471.38 +#if defined (_STLP_EXTERN_RANGE_ERRORS)
 1471.39 +# ifndef _STLP_STDEXCEPT
 1471.40 +#  include <stdexcept>
 1471.41 +# endif
 1471.42 +_STLP_BEGIN_NAMESPACE
 1471.43 +void  _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg);
 1471.44 +void  _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg);
 1471.45 +void  _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg);
 1471.46 +void  _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg);
 1471.47 +void  _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg);
 1471.48 +_STLP_END_NAMESPACE
 1471.49 +#else
 1471.50 +
 1471.51 +#if defined(_STLP_THROW_RANGE_ERRORS)
 1471.52 +# ifndef _STLP_STDEXCEPT
 1471.53 +#  include <stdexcept>
 1471.54 +# endif
 1471.55 +# ifndef _STLP_STRING
 1471.56 +#  include <string>
 1471.57 +# endif
 1471.58 +# define _STLP_THROW_MSG(ex,msg)  throw ex(string(msg))
 1471.59 +#else
 1471.60 +# if defined (_STLP_WINCE)
 1471.61 +#  define _STLP_THROW_MSG(ex,msg)  TerminateProcess(GetCurrentProcess(), 0)
 1471.62 +# else
 1471.63 +#  include <cstdlib>
 1471.64 +#  include <cstdio>
 1471.65 +# ifdef _STLP_USE_TRAP_LEAVE
 1471.66 +#  define _STLP_THROW_MSG(ex,msg) { STDEX_REPORT_EXCEPTION(msg) ; User::Leave(STDEX_##ex); }
 1471.67 +#  include <stdexcept>
 1471.68 +# else
 1471.69 +#  define _STLP_THROW_MSG(ex,msg)  puts(msg),_STLP_ABORT()
 1471.70 +# endif
 1471.71 +# endif
 1471.72 +#endif
 1471.73 +
 1471.74 +// For wrapper mode and throwing range errors, include the
 1471.75 +// stdexcept header and throw the appropriate exceptions directly.
 1471.76 +
 1471.77 +_STLP_BEGIN_NAMESPACE
 1471.78 +inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_range_error(const char* __msg) { 
 1471.79 +  _STLP_THROW_MSG(range_error, __msg); 
 1471.80 +}
 1471.81 +
 1471.82 +inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_out_of_range(const char* __msg) { 
 1471.83 +  _STLP_THROW_MSG(out_of_range, __msg); 
 1471.84 +}
 1471.85 +
 1471.86 +inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_length_error(const char* __msg) { 
 1471.87 +  _STLP_THROW_MSG(length_error, __msg); 
 1471.88 +}
 1471.89 +
 1471.90 +inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_invalid_argument(const char* __msg) { 
 1471.91 +  _STLP_THROW_MSG(invalid_argument, __msg); 
 1471.92 +}
 1471.93 +
 1471.94 +inline void _STLP_DECLSPEC _STLP_CALL __stl_throw_overflow_error(const char* __msg) { 
 1471.95 +  _STLP_THROW_MSG(overflow_error, __msg); 
 1471.96 +}
 1471.97 +_STLP_END_NAMESPACE
 1471.98 +
 1471.99 +# undef _STLP_THROW_MSG
1471.100 +
1471.101 +# endif /* EXTERN_RANGE_ERRORS */
1471.102 +
1471.103 +
1471.104 +#endif /* _STLP_RANGE_ERRORS_H */
1471.105 +
1471.106 +// Local Variables:
1471.107 +// mode:C++
1471.108 +// End:
  1472.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1472.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_raw_storage_iter.h	Wed Mar 31 12:27:01 2010 +0100
  1472.3 @@ -0,0 +1,82 @@
  1472.4 +/*
  1472.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1472.6 + * Copyright (c) 1994
  1472.7 + * Hewlett-Packard Company
  1472.8 + *
  1472.9 + * Copyright (c) 1996,1997
 1472.10 + * Silicon Graphics Computer Systems, Inc.
 1472.11 + *
 1472.12 + * Copyright (c) 1997
 1472.13 + * Moscow Center for SPARC Technology
 1472.14 + *
 1472.15 + * Copyright (c) 1999 
 1472.16 + * Boris Fomitchev
 1472.17 + *
 1472.18 + * This material is provided "as is", with absolutely no warranty expressed
 1472.19 + * or implied. Any use is at your own risk.
 1472.20 + *
 1472.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1472.22 + * without fee, provided the above notices are retained on all copies.
 1472.23 + * Permission to modify the code and to distribute modified code is granted,
 1472.24 + * provided the above notices are retained, and a notice that the code was
 1472.25 + * modified is included with the above copyright notice.
 1472.26 + *
 1472.27 + */
 1472.28 +
 1472.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1472.30 + * You should not attempt to use it directly.
 1472.31 + */
 1472.32 +
 1472.33 +#ifndef _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
 1472.34 +#define _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
 1472.35 +
 1472.36 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1472.37 +#  include <stl/_iterator_base.h>
 1472.38 +#endif
 1472.39 +
 1472.40 +_STLP_BEGIN_NAMESPACE
 1472.41 +
 1472.42 +template <class _ForwardIterator, class _Tp>
 1472.43 +class raw_storage_iterator 
 1472.44 +# if defined (_STLP_HAS_VOID_SPECIALIZATION) || defined (__SYMBIAN32__)
 1472.45 +      : public iterator<output_iterator_tag,void,void,void,void>
 1472.46 +# endif
 1472.47 +{
 1472.48 +protected:
 1472.49 +  _ForwardIterator _M_iter;
 1472.50 +public:
 1472.51 +  typedef output_iterator_tag iterator_category;
 1472.52 +# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1472.53 +  typedef void                value_type;
 1472.54 +  typedef void                difference_type;
 1472.55 +  typedef void                pointer;
 1472.56 +  typedef void                reference;
 1472.57 +# endif
 1472.58 +  explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {}
 1472.59 +  raw_storage_iterator<_ForwardIterator, _Tp>& operator*() { return *this; }
 1472.60 +  raw_storage_iterator<_ForwardIterator, _Tp>& operator=(const _Tp& __element) {
 1472.61 +    _Construct(&*_M_iter, __element);
 1472.62 +    return *this;
 1472.63 +  }        
 1472.64 +  raw_storage_iterator<_ForwardIterator, _Tp>& operator++() {
 1472.65 +    ++_M_iter;
 1472.66 +    return *this;
 1472.67 +  }
 1472.68 +  raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) {
 1472.69 +    raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this;
 1472.70 +    ++_M_iter;
 1472.71 +    return __tmp;
 1472.72 +  }
 1472.73 +};
 1472.74 +
 1472.75 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
 1472.76 +template <class _ForwardIterator, class _Tp>
 1472.77 +inline output_iterator_tag iterator_category(const raw_storage_iterator<_ForwardIterator, _Tp>&) { return output_iterator_tag(); }
 1472.78 +#endif
 1472.79 +_STLP_END_NAMESPACE
 1472.80 +
 1472.81 +#endif /* _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H */
 1472.82 +
 1472.83 +// Local Variables:
 1472.84 +// mode:C++
 1472.85 +// End:
  1473.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1473.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_rope.c	Wed Mar 31 12:27:01 2010 +0100
  1473.3 @@ -0,0 +1,1545 @@
  1473.4 +/*
  1473.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1473.6 + * Copyright (c) 1996,1997
  1473.7 + * Silicon Graphics Computer Systems, Inc.
  1473.8 + *
  1473.9 + * Copyright (c) 1999 
 1473.10 + * Boris Fomitchev
 1473.11 + *
 1473.12 + * This material is provided "as is", with absolutely no warranty expressed
 1473.13 + * or implied. Any use is at your own risk.
 1473.14 + *
 1473.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1473.16 + * without fee, provided the above notices are retained on all copies.
 1473.17 + * Permission to modify the code and to distribute modified code is granted,
 1473.18 + * provided the above notices are retained, and a notice that the code was
 1473.19 + * modified is included with the above copyright notice.
 1473.20 + *
 1473.21 + */
 1473.22 +
 1473.23 +/* NOTE: This is an internal header file, included by other STL headers.
 1473.24 + *   You should not attempt to use it directly.
 1473.25 + */
 1473.26 +
 1473.27 +// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
 1473.28 +// if necessary.  Assumes path_end[leaf_index] and leaf_pos are correct.
 1473.29 +// Results in a valid buf_ptr if the iterator can be legitimately
 1473.30 +// dereferenced.
 1473.31 +# ifndef _STLP_ROPEIMPL_H
 1473.32 +# define _STLP_ROPEIMPL_H
 1473.33 +
 1473.34 +#ifndef _STLP_INTERNAL_ROPE_H
 1473.35 +# include <stl/_rope.h>
 1473.36 +#endif
 1473.37 +
 1473.38 +# ifndef _STLP_CSTDIO
 1473.39 +#  include <cstdio>
 1473.40 +# endif
 1473.41 +
 1473.42 +#ifndef _STLP_IOSTREAM
 1473.43 +# include <iostream>
 1473.44 +#endif
 1473.45 +
 1473.46 +# include <stl/_range_errors.h>
 1473.47 +
 1473.48 +_STLP_BEGIN_NAMESPACE
 1473.49 +
 1473.50 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1473.51 +# define __allocator__ _Alloc
 1473.52 +# else
 1473.53 +# define __allocator__ allocator_type
 1473.54 +# endif
 1473.55 +
 1473.56 +template<class _CharT, class _Alloc>
 1473.57 +_Rope_iterator<_CharT, _Alloc>::_Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos)
 1473.58 +  : _Rope_iterator_base<_CharT,_Alloc>(__r->_M_tree_ptr._M_data, __pos),
 1473.59 +  _M_root_rope(__r) { _RopeRep::_S_ref(this->_M_root); }
 1473.60 +
 1473.61 +template<class _CharT, class _Alloc>
 1473.62 +_Rope_iterator<_CharT, _Alloc>::_Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos): 
 1473.63 +  _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos), 
 1473.64 +  _M_root_rope(&__r) {
 1473.65 +  _RopeRep::_S_ref(this->_M_root); if (!(__r.empty()))_S_setcache(*this);
 1473.66 +}
 1473.67 +
 1473.68 +template<class _CharT, class _Alloc>
 1473.69 +void 
 1473.70 +_Rope_RopeRep<_CharT, _Alloc>::_M_free_c_string()
 1473.71 +{
 1473.72 +  _CharT* __cstr = _M_c_string;
 1473.73 +  if (0 != __cstr) {
 1473.74 +    size_t _p_size = _M_size._M_data + 1;
 1473.75 +    _STLP_STD::_Destroy(__cstr, __cstr + _p_size);
 1473.76 +    _M_size.deallocate(__cstr, _p_size);
 1473.77 +  }
 1473.78 +}
 1473.79 +
 1473.80 +
 1473.81 +// Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
 1473.82 +// if necessary.  Assumes _M_path_end[leaf_index] and leaf_pos are correct.
 1473.83 +// Results in a valid buf_ptr if the iterator can be legitimately
 1473.84 +// dereferenced.
 1473.85 +template <class _CharT, class _Alloc>
 1473.86 +void _Rope_iterator_base<_CharT,_Alloc>::_S_setbuf( 
 1473.87 +  _Rope_iterator_base<_CharT,_Alloc>& __x)
 1473.88 +{
 1473.89 +    const _RopeRep* __leaf = __x._M_path_end[__x._M_leaf_index];
 1473.90 +    size_t __leaf_pos = __x._M_leaf_pos;
 1473.91 +    size_t __pos = __x._M_current_pos;
 1473.92 +
 1473.93 +    switch(__leaf->_M_tag) {
 1473.94 +	case _RopeRep::_S_leaf:
 1473.95 +	    __x._M_buf_start = 
 1473.96 +	      ((_Rope_RopeLeaf<_CharT,_Alloc>*)__leaf)->_M_data;
 1473.97 +	    __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos);
 1473.98 +	    __x._M_buf_end = __x._M_buf_start + __leaf->_M_size._M_data;
 1473.99 +	    break;
1473.100 +	case _RopeRep::_S_function:
1473.101 +	case _RopeRep::_S_substringfn:
1473.102 +	    {
1473.103 +		size_t __len = _S_iterator_buf_len;
1473.104 +		size_t __buf_start_pos = __leaf_pos;
1473.105 +		size_t __leaf_end = __leaf_pos + __leaf->_M_size._M_data;
1473.106 +		char_producer<_CharT>* __fn =
1473.107 +			((_Rope_RopeFunction<_CharT,_Alloc>*)__leaf)->_M_fn;
1473.108 +
1473.109 +		if (__buf_start_pos + __len <= __pos) {
1473.110 +		    __buf_start_pos = __pos - __len/4;
1473.111 +		    if (__buf_start_pos + __len > __leaf_end) {
1473.112 +			__buf_start_pos = __leaf_end - __len;
1473.113 +		    }
1473.114 +		}
1473.115 +		if (__buf_start_pos + __len > __leaf_end) {
1473.116 +		    __len = __leaf_end - __buf_start_pos;
1473.117 +		}
1473.118 +		(*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf);
1473.119 +		__x._M_buf_ptr = __x._M_tmp_buf + (__pos - __buf_start_pos);
1473.120 +		__x._M_buf_start = __x._M_tmp_buf;
1473.121 +		__x._M_buf_end = __x._M_tmp_buf + __len;
1473.122 +	    }
1473.123 +	    break;
1473.124 +	default:
1473.125 +      _STLP_ASSERT(0)
1473.126 +        ;
1473.127 +    }
1473.128 +}
1473.129 +
1473.130 +// Set path and buffer inside a rope iterator.  We assume that 
1473.131 +// pos and root are already set.
1473.132 +template <class _CharT, class _Alloc>
1473.133 +void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache
1473.134 +(_Rope_iterator_base<_CharT,_Alloc>& __x)
1473.135 +{
1473.136 +    const _RopeRep* __path[_RopeRep::_S_max_rope_depth+1];
1473.137 +    const _RopeRep* __curr_rope;
1473.138 +    int __curr_depth = -1;  /* index into path    */
1473.139 +    size_t __curr_start_pos = 0;
1473.140 +    size_t __pos = __x._M_current_pos;
1473.141 +    unsigned char __dirns = 0; // Bit vector marking right turns in the path
1473.142 +
1473.143 +    _STLP_ASSERT(__pos <= __x._M_root->_M_size._M_data)
1473.144 +    if (__pos >= __x._M_root->_M_size._M_data) {
1473.145 +	__x._M_buf_ptr = 0;
1473.146 +	return;
1473.147 +    }
1473.148 +    __curr_rope = __x._M_root;
1473.149 +    if (0 != __curr_rope->_M_c_string) {
1473.150 +	/* Treat the root as a leaf. */
1473.151 +	__x._M_buf_start = __curr_rope->_M_c_string;
1473.152 +	__x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size._M_data;
1473.153 +	__x._M_buf_ptr = __curr_rope->_M_c_string + __pos;
1473.154 +	__x._M_path_end[0] = __curr_rope;
1473.155 +	__x._M_leaf_index = 0;
1473.156 +	__x._M_leaf_pos = 0;
1473.157 +	return;
1473.158 +    }
1473.159 +    for(;;) {
1473.160 +	++__curr_depth;
1473.161 +	_STLP_ASSERT(__curr_depth <= _RopeRep::_S_max_rope_depth)
1473.162 +	__path[__curr_depth] = __curr_rope;
1473.163 +	switch(__curr_rope->_M_tag) {
1473.164 +	  case _RopeRep::_S_leaf:
1473.165 +	  case _RopeRep::_S_function:
1473.166 +	  case _RopeRep::_S_substringfn:
1473.167 +	    __x._M_leaf_pos = __curr_start_pos;
1473.168 +	    goto done;
1473.169 +	  case _RopeRep::_S_concat:
1473.170 +	    {
1473.171 +		_Rope_RopeConcatenation<_CharT,_Alloc>* __c =
1473.172 +			(_Rope_RopeConcatenation<_CharT,_Alloc>*)__curr_rope;
1473.173 +		_RopeRep* __left = __c->_M_left;
1473.174 +		size_t __left_len = __left->_M_size._M_data;
1473.175 +		
1473.176 +		__dirns <<= 1;
1473.177 +		if (__pos >= __curr_start_pos + __left_len) {
1473.178 +		    __dirns |= 1;
1473.179 +		    __curr_rope = __c->_M_right;
1473.180 +		    __curr_start_pos += __left_len;
1473.181 +		} else {
1473.182 +		    __curr_rope = __left;
1473.183 +		}
1473.184 +	    }
1473.185 +	    break;
1473.186 +	}
1473.187 +    }
1473.188 +  done:
1473.189 +    // Copy last section of path into _M_path_end.
1473.190 +      {
1473.191 +	int __i = -1;
1473.192 +	int __j = __curr_depth + 1 - _S_path_cache_len;
1473.193 +
1473.194 +	if (__j < 0) __j = 0;
1473.195 +	while (__j <= __curr_depth) {
1473.196 +	    __x._M_path_end[++__i] = __path[__j++];
1473.197 +	}
1473.198 +	__x._M_leaf_index = __i;
1473.199 +      }
1473.200 +      __x._M_path_directions = __dirns;
1473.201 +      _S_setbuf(__x);
1473.202 +}
1473.203 +
1473.204 +// Specialized version of the above.  Assumes that
1473.205 +// the path cache is valid for the previous position.
1473.206 +template <class _CharT, class _Alloc>
1473.207 +void _Rope_iterator_base<_CharT,_Alloc>::_S_setcache_for_incr
1473.208 +(_Rope_iterator_base<_CharT,_Alloc>& __x)
1473.209 +{
1473.210 +    int __current_index = __x._M_leaf_index;
1473.211 +    const _RopeRep* __current_node = __x._M_path_end[__current_index];
1473.212 +    size_t __len = __current_node->_M_size._M_data;
1473.213 +    size_t __node_start_pos = __x._M_leaf_pos;
1473.214 +    unsigned char __dirns = __x._M_path_directions;
1473.215 +    _Rope_RopeConcatenation<_CharT,_Alloc>* __c;
1473.216 +
1473.217 +    _STLP_ASSERT(__x._M_current_pos <= __x._M_root->_M_size._M_data)
1473.218 +    if (__x._M_current_pos - __node_start_pos < __len) {
1473.219 +	/* More stuff in this leaf, we just didn't cache it. */
1473.220 +	_S_setbuf(__x);
1473.221 +	return;
1473.222 +    }
1473.223 +    _STLP_ASSERT(__node_start_pos + __len == __x._M_current_pos)
1473.224 +    //  node_start_pos is starting position of last_node.
1473.225 +    while (--__current_index >= 0) {
1473.226 +	if (!(__dirns & 1) /* Path turned left */) 
1473.227 +	  break;
1473.228 +	__current_node = __x._M_path_end[__current_index];
1473.229 +	__c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;
1473.230 +	// Otherwise we were in the right child.  Thus we should pop
1473.231 +	// the concatenation node.
1473.232 +	__node_start_pos -= __c->_M_left->_M_size._M_data;
1473.233 +	__dirns >>= 1;
1473.234 +    }
1473.235 +    if (__current_index < 0) {
1473.236 +	// We underflowed the cache. Punt.
1473.237 +	_S_setcache(__x);
1473.238 +	return;
1473.239 +    }
1473.240 +    __current_node = __x._M_path_end[__current_index];
1473.241 +    __c = (_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node;
1473.242 +    // current_node is a concatenation node.  We are positioned on the first
1473.243 +    // character in its right child.
1473.244 +    // node_start_pos is starting position of current_node.
1473.245 +    __node_start_pos += __c->_M_left->_M_size._M_data;
1473.246 +    __current_node = __c->_M_right;
1473.247 +    __x._M_path_end[++__current_index] = __current_node;
1473.248 +    __dirns |= 1;
1473.249 +    while (_RopeRep::_S_concat == __current_node->_M_tag) {
1473.250 +	++__current_index;
1473.251 +	if (_S_path_cache_len == __current_index) {
1473.252 +	    int __i;
1473.253 +	    for (__i = 0; __i < _S_path_cache_len-1; __i++) {
1473.254 +		__x._M_path_end[__i] = __x._M_path_end[__i+1];
1473.255 +	    }
1473.256 +	    --__current_index;
1473.257 +	}
1473.258 +	__current_node =
1473.259 +	    ((_Rope_RopeConcatenation<_CharT,_Alloc>*)__current_node)->_M_left;
1473.260 +	__x._M_path_end[__current_index] = __current_node;
1473.261 +	__dirns <<= 1;
1473.262 +	// node_start_pos is unchanged.
1473.263 +    }
1473.264 +    __x._M_leaf_index = __current_index;
1473.265 +    __x._M_leaf_pos = __node_start_pos;
1473.266 +    __x._M_path_directions = __dirns;
1473.267 +    _S_setbuf(__x);
1473.268 +}
1473.269 +
1473.270 +template <class _CharT, class _Alloc>
1473.271 +void _Rope_iterator_base<_CharT,_Alloc>::_M_incr(size_t __n) {
1473.272 +    _M_current_pos += __n;
1473.273 +    if (0 != _M_buf_ptr) {
1473.274 +        size_t __chars_left = _M_buf_end - _M_buf_ptr;
1473.275 +        if (__chars_left > __n) {
1473.276 +            _M_buf_ptr += __n;
1473.277 +        } else if (__chars_left == __n) {
1473.278 +            _M_buf_ptr += __n;
1473.279 +            _S_setcache_for_incr(*this);
1473.280 +        } else {
1473.281 +            _M_buf_ptr = 0;
1473.282 +        }
1473.283 +    }
1473.284 +}
1473.285 +
1473.286 +template <class _CharT, class _Alloc>
1473.287 +void _Rope_iterator_base<_CharT,_Alloc>::_M_decr(size_t __n) {
1473.288 +    if (0 != _M_buf_ptr) {
1473.289 +        size_t __chars_left = _M_buf_ptr - _M_buf_start;
1473.290 +        if (__chars_left >= __n) {
1473.291 +            _M_buf_ptr -= __n;
1473.292 +        } else {
1473.293 +            _M_buf_ptr = 0;
1473.294 +        }
1473.295 +    }
1473.296 +    _M_current_pos -= __n;
1473.297 +}
1473.298 +
1473.299 +template <class _CharT, class _Alloc>
1473.300 +void _Rope_iterator<_CharT,_Alloc>::_M_check() {
1473.301 +    if (_M_root_rope->_M_tree_ptr._M_data != this->_M_root) {
1473.302 +        // _Rope was modified.  Get things fixed up.
1473.303 +        _RopeRep::_S_unref(this->_M_root);
1473.304 +        this->_M_root = _M_root_rope->_M_tree_ptr._M_data;
1473.305 +        _RopeRep::_S_ref(this->_M_root);
1473.306 +        this->_M_buf_ptr = 0;
1473.307 +    }
1473.308 +}
1473.309 +
1473.310 +# ifndef _GC
1473.311 +//  There are several reasons for not doing this with virtual destructors
1473.312 +//  and a class specific delete operator:
1473.313 +//  - A class specific delete operator can't easily get access to
1473.314 +//    allocator instances if we need them.
1473.315 +//  - Any virtual function would need a 4 or byte vtable pointer;
1473.316 +//    this only requires a one byte tag per object.
1473.317 +template <class _CharT, class _Alloc>
1473.318 +void _Rope_RopeRep<_CharT,_Alloc>::_M_free_tree()
1473.319 +{
1473.320 +    switch(_M_tag) {
1473.321 +	case _S_leaf:
1473.322 +	    {
1473.323 +	      typedef _Rope_RopeLeaf<_CharT,_Alloc> _Rope_RopeLeaf_T;
1473.324 +          _Rope_RopeLeaf_T* __l = (_Rope_RopeLeaf_T*)this;
1473.325 +          _STLP_STD::_Destroy(__l); // ->_Rope_RopeLeaf<_CharT,_Alloc>::~_Rope_RopeLeaf();
1473.326 +	      _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, _Rope_RopeLeaf_T).deallocate(__l, 1);
1473.327 +	        break;
1473.328 +	    }
1473.329 +	case _S_concat:
1473.330 +	    {
1473.331 +               typedef _Rope_RopeConcatenation<_CharT,_Alloc> _Rope_RopeConcatenation_T;
1473.332 +               _Rope_RopeConcatenation_T* __c  = (_Rope_RopeConcatenation_T*)this;
1473.333 +               _STLP_STD::_Destroy(__c);
1473.334 +               _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, 
1473.335 +                               _Rope_RopeConcatenation_T).deallocate(__c, 1);
1473.336 +	        break;
1473.337 +	    }
1473.338 +	case _S_function:
1473.339 +	    {
1473.340 +            typedef _Rope_RopeFunction<_CharT,_Alloc> _Rope_RopeFunctionT;
1473.341 +              _Rope_RopeFunctionT* __f = (_Rope_RopeFunctionT*)this;
1473.342 +              _STLP_STD::_Destroy(__f);
1473.343 +              _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, 
1473.344 +                                 _Rope_RopeFunctionT).deallocate(__f, 1);
1473.345 +	        break;
1473.346 +	    }
1473.347 +	case _S_substringfn:
1473.348 +	    {
1473.349 +            typedef _Rope_RopeSubstring<_CharT,_Alloc> _Rope_RopeSubstring_T;
1473.350 +              _Rope_RopeSubstring_T* __ss = (_Rope_RopeSubstring_T*)this;
1473.351 +              _STLP_STD::_Destroy(__ss);
1473.352 +              _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_size, 
1473.353 +                              _Rope_RopeSubstring_T).deallocate(__ss, 1);
1473.354 +		break;
1473.355 +	    }
1473.356 +    }
1473.357 +}
1473.358 +#endif
1473.359 +
1473.360 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
1473.361 +#   define __RopeLeaf__ _Rope_RopeLeaf<_CharT,_Alloc>
1473.362 +#   define __RopeRep__ _Rope_RopeRep<_CharT,_Alloc>
1473.363 +#   define _RopeLeaf _Rope_RopeLeaf<_CharT,_Alloc>
1473.364 +#   define _RopeRep _Rope_RopeRep<_CharT,_Alloc>
1473.365 +#   define size_type size_t
1473.366 +# else
1473.367 +#   define __RopeLeaf__ _STLP_TYPENAME_ON_RETURN_TYPE rope<_CharT,_Alloc>::_RopeLeaf
1473.368 +#   define __RopeRep__ _STLP_TYPENAME_ON_RETURN_TYPE rope<_CharT,_Alloc>::_RopeRep
1473.369 +# endif
1473.370 +
1473.371 +// Concatenate a C string onto a leaf rope by copying the rope data.
1473.372 +// Used for short ropes.
1473.373 +template <class _CharT, class _Alloc>
1473.374 +__RopeLeaf__*
1473.375 +rope<_CharT,_Alloc>::_S_leaf_concat_char_iter
1473.376 +		(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
1473.377 +{
1473.378 +    size_t __old_len = __r->_M_size._M_data;
1473.379 +    _CharT* __new_data = __r->_M_size.allocate(_S_rounded_up_size(__old_len + __len));
1473.380 +    _RopeLeaf* __result;
1473.381 +    
1473.382 +    uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
1473.383 +    uninitialized_copy_n(__iter, __len, __new_data + __old_len);
1473.384 +    _S_cond_store_eos(__new_data[__old_len + __len]);
1473.385 +    _STLP_TRY {
1473.386 +	__result = _S_new_RopeLeaf(__new_data, __old_len + __len,
1473.387 +				   __r->get_allocator());
1473.388 +    }
1473.389 +    _STLP_UNWIND(_RopeRep::_S_free_string(__new_data, __old_len + __len,
1473.390 +					     __r->get_allocator()));
1473.391 +    return __result;
1473.392 +}
1473.393 +
1473.394 +#ifndef __GC
1473.395 +// As above, but it's OK to clobber original if refcount is 1
1473.396 +template <class _CharT, class _Alloc>
1473.397 +__RopeLeaf__*
1473.398 +rope<_CharT,_Alloc>::_S_destr_leaf_concat_char_iter
1473.399 +		(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
1473.400 +{
1473.401 +    _STLP_ASSERT(__r->_M_ref_count >= 1)
1473.402 +    if (__r->_M_ref_count > 1)
1473.403 +      return _S_leaf_concat_char_iter(__r, __iter, __len);
1473.404 +    size_t __old_len = __r->_M_size._M_data;
1473.405 +    if (_S_allocated_capacity(__old_len) >= __old_len + __len) {
1473.406 +	// The space has been partially initialized for the standard
1473.407 +	// character types.  But that doesn't matter for those types.
1473.408 +	uninitialized_copy_n(__iter, __len, __r->_M_data + __old_len);
1473.409 +	if (_S_is_basic_char_type((_CharT*)0)) {
1473.410 +	    _S_cond_store_eos(__r->_M_data[__old_len + __len]);
1473.411 +	    _STLP_ASSERT(__r->_M_c_string == __r->_M_data)
1473.412 +	} else if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string) {
1473.413 +	    __r->_M_free_c_string();
1473.414 +	    __r->_M_c_string = 0;
1473.415 +	}
1473.416 +	__r->_M_size._M_data = __old_len + __len;
1473.417 +	_STLP_ASSERT(__r->_M_ref_count == 1)
1473.418 +	__r->_M_ref_count = 2;
1473.419 +	return __r;
1473.420 +    } else {
1473.421 +	_RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len);
1473.422 +	_STLP_ASSERT(__result->_M_ref_count == 1)
1473.423 +	return __result;
1473.424 +    }
1473.425 +}
1473.426 +#endif
1473.427 +
1473.428 +// Assumes left and right are not 0.
1473.429 +// Does not increment (nor decrement on exception) child reference counts.
1473.430 +// Result has ref count 1.
1473.431 +template <class _CharT, class _Alloc>
1473.432 +__RopeRep__*
1473.433 +rope<_CharT,_Alloc>::_S_tree_concat (_RopeRep* __left, _RopeRep* __right)
1473.434 +{
1473.435 +    _RopeConcatenation* __result =
1473.436 +      _S_new_RopeConcatenation(__left, __right, __left->get_allocator());
1473.437 +    size_t __depth = __result->_M_depth;
1473.438 +    
1473.439 +    _STLP_ASSERT(__left->get_allocator() == __right->get_allocator())
1473.440 +    if (__depth > 20 && (__result->_M_size._M_data < 1000 ||
1473.441 +			 __depth > _RopeRep::_S_max_rope_depth)) {
1473.442 +        _RopeRep* __balanced;
1473.443 +      
1473.444 +	_STLP_TRY {
1473.445 +	   __balanced = _S_balance(__result);
1473.446 +#          ifndef __GC
1473.447 +	     if (__result != __balanced) {
1473.448 +		_STLP_ASSERT(1 == __result->_M_ref_count
1473.449 +			     && 1 == __balanced->_M_ref_count)
1473.450 +	     }
1473.451 +#          endif
1473.452 +	   __result->_M_unref_nonnil();
1473.453 +        }
1473.454 +      _STLP_UNWIND((_STLP_CREATE_ALLOCATOR(allocator_type,(allocator_type&)__left->_M_size,
1473.455 +                                    _RopeConcatenation).deallocate(__result,1)));
1473.456 +		// In case of exception, we need to deallocate
1473.457 +		// otherwise dangling result node.  But caller
1473.458 +		// still owns its children.  Thus unref is
1473.459 +		// inappropriate.
1473.460 +	return __balanced;
1473.461 +    } else {
1473.462 +	return __result;
1473.463 +    }
1473.464 +}
1473.465 +
1473.466 +template <class _CharT, class _Alloc>
1473.467 +__RopeRep__*
1473.468 +rope<_CharT,_Alloc>::_S_concat_char_iter
1473.469 +		(_RopeRep* __r, const _CharT*__s, size_t __slen)
1473.470 +{
1473.471 +    _RopeRep* __result;
1473.472 +    if (0 == __slen) {
1473.473 +	_S_ref(__r);
1473.474 +	return __r;
1473.475 +    }
1473.476 +    if (0 == __r)
1473.477 +      return _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
1473.478 +					      /* __r->get_allocator()*/ allocator_type() );
1473.479 +    if (_RopeRep::_S_leaf == __r->_M_tag && 
1473.480 +          __r->_M_size._M_data + __slen <= _S_copy_max) {
1473.481 +	__result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
1473.482 +#       ifndef __GC
1473.483 +	  _STLP_ASSERT(1 == __result->_M_ref_count)
1473.484 +#       endif
1473.485 +	return __result;
1473.486 +    }
1473.487 +    if (_RopeRep::_S_concat == __r->_M_tag
1473.488 +	&& _RopeRep::_S_leaf == ((_RopeConcatenation*)__r)->_M_right->_M_tag) {
1473.489 +	_RopeLeaf* __right = 
1473.490 +	  (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right);
1473.491 +	if (__right->_M_size._M_data + __slen <= _S_copy_max) {
1473.492 +	  _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left;
1473.493 +	  _RopeRep* __nright = 
1473.494 +	    _S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen);
1473.495 +	  __left->_M_ref_nonnil();
1473.496 +	  _STLP_TRY {
1473.497 +	    __result = _S_tree_concat(__left, __nright);
1473.498 +          }
1473.499 +	  _STLP_UNWIND(_S_unref(__left); _S_unref(__nright));
1473.500 +#         ifndef __GC
1473.501 +	    _STLP_ASSERT(1 == __result->_M_ref_count)
1473.502 +#         endif
1473.503 +	  return __result;
1473.504 +	}
1473.505 +    }
1473.506 +    _RopeRep* __nright =
1473.507 +      _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
1473.508 +    _STLP_TRY {
1473.509 +      __r->_M_ref_nonnil();
1473.510 +      __result = _S_tree_concat(__r, __nright);
1473.511 +    }
1473.512 +    _STLP_UNWIND(_S_unref(__r); _S_unref(__nright));
1473.513 +#   ifndef __GC
1473.514 +      _STLP_ASSERT(1 == __result->_M_ref_count)
1473.515 +#   endif
1473.516 +    return __result;
1473.517 +}
1473.518 +
1473.519 +#ifndef __GC
1473.520 +template <class _CharT, class _Alloc>
1473.521 +__RopeRep__* 
1473.522 +rope<_CharT,_Alloc>::_S_destr_concat_char_iter(
1473.523 +  _RopeRep* __r, const _CharT* __s, size_t __slen)
1473.524 +{
1473.525 +    _RopeRep* __result;
1473.526 +    if (0 == __r)
1473.527 +      return _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
1473.528 +					      /* __r-> */allocator_type());
1473.529 +    size_t __count = __r->_M_ref_count;
1473.530 +    size_t __orig_size = __r->_M_size._M_data;
1473.531 +    _STLP_ASSERT(__count >= 1)
1473.532 +    if (__count > 1) return _S_concat_char_iter(__r, __s, __slen);
1473.533 +    if (0 == __slen) {
1473.534 +	__r->_M_ref_count = 2;      // One more than before
1473.535 +	return __r;
1473.536 +    }
1473.537 +    if (__orig_size + __slen <= _S_copy_max && 
1473.538 +          _RopeRep::_S_leaf == __r->_M_tag) {
1473.539 +	__result = _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
1473.540 +	return __result;
1473.541 +    }
1473.542 +    if (_RopeRep::_S_concat == __r->_M_tag) {
1473.543 +	_RopeLeaf* __right = (_RopeLeaf*)(((_RopeConcatenation*)__r)->_M_right);
1473.544 +	if (_RopeRep::_S_leaf == __right->_M_tag
1473.545 +	    && __right->_M_size._M_data + __slen <= _S_copy_max) {
1473.546 +	  _RopeRep* __new_right = 
1473.547 +	    _S_destr_leaf_concat_char_iter(__right, __s, __slen);
1473.548 +	  if (__right == __new_right) {
1473.549 +	      _STLP_ASSERT(__new_right->_M_ref_count == 2)
1473.550 +	      __new_right->_M_ref_count = 1;
1473.551 +	  } else {
1473.552 +	      _STLP_ASSERT(__new_right->_M_ref_count >= 1)
1473.553 +	      __right->_M_unref_nonnil();
1473.554 +	  }
1473.555 +	  _STLP_ASSERT(__r->_M_ref_count == 1)
1473.556 +	  __r->_M_ref_count = 2;    // One more than before.
1473.557 +      ((_RopeConcatenation*)__r)->_M_right = __new_right;
1473.558 +      // E.Musser : moved below
1473.559 +      //	  __r->_M_size._M_data = __orig_size + __slen;
1473.560 +	  if (0 != __r->_M_c_string) {
1473.561 +	      __r->_M_free_c_string();
1473.562 +	      __r->_M_c_string = 0;
1473.563 +	  }
1473.564 +	  __r->_M_size._M_data = __orig_size + __slen;
1473.565 +	  return __r;
1473.566 +	}
1473.567 +    }
1473.568 +    _RopeRep* __right =
1473.569 +      _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->get_allocator());
1473.570 +    __r->_M_ref_nonnil();
1473.571 +    _STLP_TRY {
1473.572 +      __result = _S_tree_concat(__r, __right);
1473.573 +    }
1473.574 +    _STLP_UNWIND(_S_unref(__r); _S_unref(__right))
1473.575 +    _STLP_ASSERT(1 == __result->_M_ref_count)
1473.576 +    return __result;
1473.577 +}
1473.578 +#endif /* !__GC */
1473.579 +
1473.580 +template <class _CharT, class _Alloc>
1473.581 +__RopeRep__*
1473.582 +rope<_CharT,_Alloc>::_S_concat_rep(_RopeRep* __left, _RopeRep* __right)
1473.583 +{
1473.584 +    if (0 == __left) {
1473.585 +	_S_ref(__right);
1473.586 +	return __right;
1473.587 +    }
1473.588 +    if (0 == __right) {
1473.589 +	__left->_M_ref_nonnil();
1473.590 +	return __left;
1473.591 +    }
1473.592 +    if (_RopeRep::_S_leaf == __right->_M_tag) {
1473.593 +	if (_RopeRep::_S_leaf == __left->_M_tag) {
1473.594 +	  if (__right->_M_size._M_data + __left->_M_size._M_data <= _S_copy_max) {
1473.595 +	    return _S_leaf_concat_char_iter((_RopeLeaf*)__left,
1473.596 +					 ((_RopeLeaf*)__right)->_M_data,
1473.597 +					 __right->_M_size._M_data);
1473.598 +	  }
1473.599 +	} else if (_RopeRep::_S_concat == __left->_M_tag
1473.600 +		   && _RopeRep::_S_leaf ==
1473.601 +		      ((_RopeConcatenation*)__left)->_M_right->_M_tag) {
1473.602 +	  _RopeLeaf* __leftright =
1473.603 +		    (_RopeLeaf*)(((_RopeConcatenation*)__left)->_M_right); 
1473.604 +	  if (__leftright->_M_size._M_data + __right->_M_size._M_data <= _S_copy_max) {
1473.605 +	    _RopeRep* __leftleft = ((_RopeConcatenation*)__left)->_M_left;
1473.606 +	    _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright,
1473.607 +					   ((_RopeLeaf*)__right)->_M_data,
1473.608 +					   __right->_M_size._M_data);
1473.609 +	    __leftleft->_M_ref_nonnil();
1473.610 +	    _STLP_TRY {
1473.611 +	      return(_S_tree_concat(__leftleft, __rest));
1473.612 +            }
1473.613 +	    _STLP_UNWIND(_S_unref(__leftleft); _S_unref(__rest))
1473.614 +	  }
1473.615 +	}
1473.616 +    }
1473.617 +    __left->_M_ref_nonnil();
1473.618 +    __right->_M_ref_nonnil();
1473.619 +    _STLP_TRY {
1473.620 +      return(_S_tree_concat(__left, __right));
1473.621 +    }
1473.622 +    _STLP_UNWIND(_S_unref(__left); _S_unref(__right));
1473.623 +#ifdef _STLP_THROW_RETURN_BUG
1473.624 +	return 0;
1473.625 +#endif
1473.626 +}
1473.627 +
1473.628 +template <class _CharT, class _Alloc>
1473.629 +__RopeRep__*
1473.630 +rope<_CharT,_Alloc>::_S_substring(_RopeRep* __base, 
1473.631 +                               size_t __start, size_t __endp1)
1473.632 +{
1473.633 +    if (0 == __base) return 0;
1473.634 +    size_t __len = __base->_M_size._M_data;
1473.635 +    size_t __adj_endp1;
1473.636 +    const size_t __lazy_threshold = 128;
1473.637 +    
1473.638 +    if (__endp1 >= __len) {
1473.639 +	if (0 == __start) {
1473.640 +	    __base->_M_ref_nonnil();
1473.641 +	    return __base;
1473.642 +	} else {
1473.643 +	    __adj_endp1 = __len;
1473.644 +	}
1473.645 +    } else {
1473.646 +	__adj_endp1 = __endp1;
1473.647 +    }
1473.648 +    switch(__base->_M_tag) {
1473.649 +	case _RopeRep::_S_concat:
1473.650 +	    {
1473.651 +		_RopeConcatenation* __c = (_RopeConcatenation*)__base;
1473.652 +		_RopeRep* __left = __c->_M_left;
1473.653 +		_RopeRep* __right = __c->_M_right;
1473.654 +		size_t __left_len = __left->_M_size._M_data;
1473.655 +		_RopeRep* __result;
1473.656 +
1473.657 +		if (__adj_endp1 <= __left_len) {
1473.658 +		    return _S_substring(__left, __start, __endp1);
1473.659 +		} else if (__start >= __left_len) {
1473.660 +		    return _S_substring(__right, __start - __left_len,
1473.661 +				  __adj_endp1 - __left_len);
1473.662 +		}
1473.663 +		_Self_destruct_ptr __left_result(
1473.664 +		  _S_substring(__left, __start, __left_len));
1473.665 +		_Self_destruct_ptr __right_result(
1473.666 +		  _S_substring(__right, 0, __endp1 - __left_len));
1473.667 +		_STLP_MPWFIX_TRY		//*TY 06/01/2000 - mpw forgets to call dtor on __left_result and __right_result without this try block
1473.668 +		__result = _S_concat_rep(__left_result, __right_result);
1473.669 +#               ifndef __GC
1473.670 +		  _STLP_ASSERT(1 == __result->_M_ref_count)
1473.671 +#               endif
1473.672 +		return __result;
1473.673 +		_STLP_MPWFIX_CATCH		//*TY 06/01/2000 - 
1473.674 +	    }
1473.675 +	case _RopeRep::_S_leaf:
1473.676 +	    {
1473.677 +		_RopeLeaf* __l = (_RopeLeaf*)__base;
1473.678 +		_RopeLeaf* __result;
1473.679 +		size_t __result_len;
1473.680 +		if (__start >= __adj_endp1) return 0;
1473.681 +		__result_len = __adj_endp1 - __start;
1473.682 +		if (__result_len > __lazy_threshold) goto lazy;
1473.683 +#               ifdef __GC
1473.684 +		    const _CharT* __section = __l->_M_data + __start;
1473.685 +		    __result = _S_new_RopeLeaf(__section, __result_len,
1473.686 +					  __base->get_allocator());
1473.687 +		    __result->_M_c_string = 0;  // Not eos terminated.
1473.688 +#               else
1473.689 +		    // We should sometimes create substring node instead.
1473.690 +		    __result = _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(
1473.691 +					__l->_M_data + __start, __result_len,
1473.692 +					__base->get_allocator());
1473.693 +#               endif
1473.694 +		return __result;
1473.695 +	    }
1473.696 +	case _RopeRep::_S_substringfn:
1473.697 +	    // Avoid introducing multiple layers of substring nodes.
1473.698 +	    {
1473.699 +		_RopeSubstring* __old = (_RopeSubstring*)__base;
1473.700 +		size_t __result_len;
1473.701 +		if (__start >= __adj_endp1) return 0;
1473.702 +		__result_len = __adj_endp1 - __start;
1473.703 +		if (__result_len > __lazy_threshold) {
1473.704 +		    _RopeSubstring* __result =
1473.705 +			_S_new_RopeSubstring(__old->_M_base,
1473.706 +					  __start + __old->_M_start,
1473.707 +					  __adj_endp1 - __start,
1473.708 +					  __base->get_allocator());
1473.709 +		    return __result;
1473.710 +
1473.711 +		} // *** else fall through: ***
1473.712 +	    }
1473.713 +	case _RopeRep::_S_function:
1473.714 +	    {
1473.715 +		_RopeFunction* __f = (_RopeFunction*)__base;
1473.716 +		if (__start >= __adj_endp1) return 0;
1473.717 +		size_t __result_len = __adj_endp1 - __start;
1473.718 +
1473.719 +		if (__result_len > __lazy_threshold) goto lazy;
1473.720 +		_CharT* __section = __base->_M_size.allocate(_S_rounded_up_size(__result_len));
1473.721 +		_STLP_TRY {
1473.722 +		  (*(__f->_M_fn))(__start, __result_len, __section);
1473.723 +                }
1473.724 +		_STLP_UNWIND(_RopeRep::_S_free_string(
1473.725 +	               __section, __result_len, __base->get_allocator()));
1473.726 +		_S_cond_store_eos(__section[__result_len]);
1473.727 +		return _S_new_RopeLeaf(__section, __result_len,
1473.728 +				       __base->get_allocator());
1473.729 +	    }
1473.730 +    }
1473.731 +    /*NOTREACHED*/
1473.732 +    _STLP_ASSERT(false)
1473.733 +  lazy:
1473.734 +    {
1473.735 +	// Create substring node.
1473.736 +	return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start,
1473.737 +			       __base->get_allocator());
1473.738 +    }
1473.739 +}
1473.740 +
1473.741 +template<class _CharT>
1473.742 +class _Rope_flatten_char_consumer : public _Rope_char_consumer<_CharT> {
1473.743 +    private:
1473.744 +	_CharT* _M_buf_ptr;
1473.745 +    public:
1473.746 +	//  _CharT* _M_buffer;  // XXX not used
1473.747 +
1473.748 +	_Rope_flatten_char_consumer(_CharT* __buffer) {
1473.749 +	    _M_buf_ptr = __buffer;
1473.750 +	};
1473.751 +	~_Rope_flatten_char_consumer() {}
1473.752 +	bool operator() (const _CharT* __leaf, size_t __n) {
1473.753 +	    uninitialized_copy_n(__leaf, __n, _M_buf_ptr);
1473.754 +	    _M_buf_ptr += __n;
1473.755 +	    return true;
1473.756 +	}
1473.757 +};
1473.758 +	    
1473.759 +template<class _CharT>
1473.760 +class _Rope_find_char_char_consumer : public _Rope_char_consumer<_CharT> {
1473.761 +    private:
1473.762 +	_CharT _M_pattern;
1473.763 +    public:
1473.764 +	size_t _M_count;  // Number of nonmatching characters
1473.765 +	_Rope_find_char_char_consumer(_CharT __p) 
1473.766 +	  : _M_pattern(__p), _M_count(0) {}
1473.767 +	~_Rope_find_char_char_consumer() {}
1473.768 +	bool operator() (const _CharT* __leaf, size_t __n) {
1473.769 +	    size_t __i;
1473.770 +	    for (__i = 0; __i < __n; __i++) {
1473.771 +		if (__leaf[__i] == _M_pattern) {
1473.772 +		    _M_count += __i; return false;
1473.773 +		}
1473.774 +	    }
1473.775 +	    _M_count += __n; return true;
1473.776 +	}
1473.777 +};
1473.778 +
1473.779 +#if !defined (_STLP_USE_NO_IOSTREAMS)	    
1473.780 +#if defined (_STLP_USE_NEW_IOSTREAMS)
1473.781 +  template<class _CharT, class _Traits>
1473.782 +  // Here _CharT is both the stream and rope character type.
1473.783 +#else
1473.784 + template<class _CharT>
1473.785 +  // Here _CharT is the rope character type.  Unlike in the
1473.786 +  // above case, we somewhat handle the case in which it doesn't
1473.787 +  // match the stream character type, i.e. char.
1473.788 +#endif
1473.789 +class _Rope_insert_char_consumer : public _Rope_char_consumer<_CharT> {
1473.790 +    private:
1473.791 +#       if defined (_STLP_USE_NEW_IOSTREAMS)
1473.792 +	  typedef basic_ostream<_CharT,_Traits> _Insert_ostream;
1473.793 +#	else
1473.794 + 	typedef ostream _Insert_ostream;
1473.795 +#	endif
1473.796 +	_Insert_ostream& _M_o;
1473.797 +    public:
1473.798 +	// _CharT* buffer;    // XXX not used
1473.799 +	_Rope_insert_char_consumer(_Insert_ostream& __writer) 
1473.800 +	  : _M_o(__writer) {};
1473.801 +#if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))		//*TY 05/23/2000 - added support for mpw compiler's trigger function approach to generate vtable
1473.802 +  ~_Rope_insert_char_consumer();		//*TY 05/23/2000 - 
1473.803 +#else		//*TY 05/23/2000 - 
1473.804 +  ~_Rope_insert_char_consumer() {}
1473.805 +#endif		//*TY 05/23/2000 - 
1473.806 +		// Caller is presumed to own the ostream
1473.807 +	bool operator() (const _CharT* __leaf, size_t __n);
1473.808 +		// Returns true to continue traversal.
1473.809 +};
1473.810 +	    
1473.811 +# if defined ( _STLP_USE_NEW_IOSTREAMS )
1473.812 +#  if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))		//*TY 05/23/2000 - added support for mpw compiler's trigger function approach to generate vtable
1473.813 +  template<class _CharT, class _Traits>
1473.814 +  _Rope_insert_char_consumer<_CharT, _Traits>::  ~_Rope_insert_char_consumer() {}
1473.815 +#  endif		//*TY 05/23/2000 - 
1473.816 +
1473.817 +  template<class _CharT, class _Traits>
1473.818 +  bool _Rope_insert_char_consumer<_CharT, _Traits>::operator()
1473.819 +					(const _CharT* __leaf, size_t __n)
1473.820 +{
1473.821 +    size_t __i;
1473.822 +    //  We assume that formatting is set up correctly for each element.
1473.823 +    for (__i = 0; __i < __n; __i++) _M_o.put(__leaf[__i]);
1473.824 +    return true;
1473.825 +}
1473.826 +# else
1473.827 +#  if defined(__MRC__)||(defined(__SC__) && !defined(__DMC__))		//*TY 05/23/2000 - added support for mpw compiler's trigger function approach to generate vtable
1473.828 +  template<class _CharT>
1473.829 +  _Rope_insert_char_consumer<_CharT>::  ~_Rope_insert_char_consumer() {}
1473.830 +#  endif		//*TY 05/23/2000 - 
1473.831 +
1473.832 +  template<class _CharT>
1473.833 +  bool _Rope_insert_char_consumer<_CharT>::operator()
1473.834 +					(const _CharT* __leaf, size_t __n)
1473.835 +  {
1473.836 +    size_t __i;
1473.837 +    //  We assume that formatting is set up correctly for each element.
1473.838 +    for (__i = 0; __i < __n; __i++) _M_o << __leaf[__i];
1473.839 +    return true;
1473.840 +  }
1473.841 +
1473.842 +# if !defined (_STLP_NO_METHOD_SPECIALIZATION)
1473.843 +_STLP_TEMPLATE_NULL
1473.844 +inline bool 
1473.845 +_Rope_insert_char_consumer<char>::operator()
1473.846 +					(const char* __leaf, size_t __n)
1473.847 +{
1473.848 +    size_t __i;
1473.849 +    for (__i = 0; __i < __n; __i++) _M_o.put(__leaf[__i]);
1473.850 +    return true;
1473.851 +}
1473.852 +
1473.853 +#endif /* _STLP_METHOD_SPECIALIZATION */
1473.854 +#endif /* _STLP_USE_NEW_IOSTREAM */
1473.855 +#endif /* if !defined (_STLP_USE_NO_IOSTREAMS) */
1473.856 +
1473.857 +template <class _CharT, class _Alloc>
1473.858 +bool rope<_CharT, _Alloc>::_S_apply_to_pieces(
1473.859 +				_Rope_char_consumer<_CharT>& __c,
1473.860 +				const _RopeRep* __r,
1473.861 +				size_t __begin, size_t __end)
1473.862 +{
1473.863 +    if (0 == __r) return true;
1473.864 +    switch(__r->_M_tag) {
1473.865 +	case _RopeRep::_S_concat:
1473.866 +	    {
1473.867 +		_RopeConcatenation* __conc = (_RopeConcatenation*)__r;
1473.868 +		_RopeRep* __left =  __conc->_M_left;
1473.869 +		size_t __left_len = __left->_M_size._M_data;
1473.870 +		if (__begin < __left_len) {
1473.871 +		    size_t __left_end = (min) (__left_len, __end);
1473.872 +		    if (!_S_apply_to_pieces(__c, __left, __begin, __left_end))
1473.873 +			return false;
1473.874 +		}
1473.875 +		if (__end > __left_len) {
1473.876 +		    _RopeRep* __right =  __conc->_M_right;
1473.877 +		    size_t __right_start = (max)(__left_len, __begin);
1473.878 +		    if (!_S_apply_to_pieces(__c, __right,
1473.879 +					 __right_start - __left_len,
1473.880 +					 __end - __left_len)) {
1473.881 +			return false;
1473.882 +		    }
1473.883 +		}
1473.884 +	    }
1473.885 +	    return true;
1473.886 +	case _RopeRep::_S_leaf:
1473.887 +	    {
1473.888 +		_RopeLeaf* __l = (_RopeLeaf*)__r;
1473.889 +		return __c.operator()(__l->_M_data + __begin, __end - __begin);
1473.890 +	    }
1473.891 +	case _RopeRep::_S_function:
1473.892 +	case _RopeRep::_S_substringfn:
1473.893 +	    {
1473.894 +		_RopeFunction* __f = (_RopeFunction*)__r;
1473.895 +		size_t __len = __end - __begin;
1473.896 +#ifdef __SYMBIAN32__
1473.897 +		bool __result = false;
1473.898 +#else
1473.899 +		bool __result;
1473.900 +#endif
1473.901 +		_CharT* __buffer =
1473.902 +		  (_CharT*)__sgi_alloc::allocate(__len * sizeof(_CharT));
1473.903 +		_STLP_TRY {
1473.904 +		  (*(__f->_M_fn))(__begin, __len, __buffer);
1473.905 +		  __result = __c.operator()(__buffer, __len);
1473.906 +                  __sgi_alloc::deallocate(__buffer, __len * sizeof(_CharT));
1473.907 +                }
1473.908 +		_STLP_UNWIND((__sgi_alloc::deallocate(__buffer,
1473.909 +						      __len * sizeof(_CharT))))
1473.910 +		return __result;
1473.911 +	    }
1473.912 +	default:
1473.913 +	    _STLP_ASSERT(false)
1473.914 +	    /*NOTREACHED*/
1473.915 +	    return false;
1473.916 +    }
1473.917 +}
1473.918 +
1473.919 +template <class _CharT> inline bool _Rope_is_simple(_CharT*) { return false; }
1473.920 +inline bool _Rope_is_simple(char*) { return true; }
1473.921 +# ifdef _STLP_HAS_WCHAR_T
1473.922 +inline bool _Rope_is_simple(wchar_t*) { return true; }
1473.923 +# endif
1473.924 +
1473.925 +#if !defined (_STLP_USE_NO_IOSTREAMS)
1473.926 +#if defined (_STLP_USE_NEW_IOSTREAMS)
1473.927 +  template<class _CharT, class _Traits>
1473.928 +  inline void _Rope_fill(basic_ostream<_CharT, _Traits>& __o, size_t __n)
1473.929 +#else
1473.930 +inline void _Rope_fill(ostream& __o, size_t __n)
1473.931 +#endif
1473.932 +{
1473.933 +    char __f = __o.fill();
1473.934 +    size_t __i;
1473.935 +
1473.936 +    for (__i = 0; __i < __n; __i++) __o.put(__f);
1473.937 +}
1473.938 +    
1473.939 +#if defined (_STLP_USE_NEW_IOSTREAMS)
1473.940 +  template<class _CharT, class _Traits, class _Alloc>
1473.941 +  basic_ostream<_CharT, _Traits>& operator<<
1473.942 +					(basic_ostream<_CharT, _Traits>& __o,
1473.943 +					 const rope<_CharT, _Alloc>& __r)
1473.944 +# else
1473.945 +template<class _CharT, class _Alloc>
1473.946 +ostream& operator<< (ostream& __o, const rope<_CharT, _Alloc>& __r)
1473.947 +#endif
1473.948 +{
1473.949 +    size_t __w = __o.width();
1473.950 +    bool __left = bool(__o.flags() & ios::left);
1473.951 +    size_t __pad_len;
1473.952 +    size_t __rope_len = __r.size();
1473.953 +#   if defined (_STLP_USE_NEW_IOSTREAMS)
1473.954 +      _Rope_insert_char_consumer<_CharT, _Traits> __c(__o);
1473.955 +#   else
1473.956 +    _Rope_insert_char_consumer<_CharT> __c(__o);
1473.957 +#   endif
1473.958 +    bool __is_simple = _Rope_is_simple((_CharT*)0);
1473.959 +    
1473.960 +    if (__rope_len < __w) {
1473.961 +	__pad_len = __w - __rope_len;
1473.962 +    } else {
1473.963 +	__pad_len = 0;
1473.964 +    }
1473.965 +    if (!__is_simple) __o.width(__w/__rope_len);
1473.966 +    _STLP_TRY {
1473.967 +      if (__is_simple && !__left && __pad_len > 0) {
1473.968 +	_Rope_fill(__o, __pad_len);
1473.969 +      }
1473.970 +      __r.apply_to_pieces(0, __r.size(), __c);
1473.971 +      if (__is_simple && __left && __pad_len > 0) {
1473.972 +	_Rope_fill(__o, __pad_len);
1473.973 +      }
1473.974 +      if (!__is_simple)
1473.975 +        __o.width(__w);
1473.976 +    }
1473.977 +    _STLP_UNWIND(if (!__is_simple) __o.width(__w))
1473.978 +    return __o;
1473.979 +}
1473.980 +
1473.981 +#endif /* NO_IOSTREAMS */
1473.982 +
1473.983 +template <class _CharT, class _Alloc>
1473.984 +_CharT*
1473.985 +rope<_CharT,_Alloc>::_S_flatten(_RopeRep* __r,
1473.986 +				 size_t __start, size_t __len,
1473.987 +				 _CharT* __buffer)
1473.988 +{
1473.989 +    _Rope_flatten_char_consumer<_CharT> __c(__buffer);
1473.990 +    _S_apply_to_pieces(__c, __r, __start, __start + __len);
1473.991 +    return(__buffer + __len);
1473.992 +}
1473.993 +
1473.994 +template <class _CharT, class _Alloc>
1473.995 +size_t
1473.996 +rope<_CharT,_Alloc>::find(_CharT __pattern, size_t __start) const
1473.997 +{
1473.998 +    _Rope_find_char_char_consumer<_CharT> __c(__pattern);
1473.999 +    _S_apply_to_pieces(__c, _M_tree_ptr._M_data, __start, size());
1473.1000 +    size_type __result_pos = __start + __c._M_count;
1473.1001 +#   ifndef _STLP_OLD_ROPE_SEMANTICS
1473.1002 +	if (__result_pos == size()) __result_pos = npos;
1473.1003 +#   endif
1473.1004 +    return __result_pos;
1473.1005 +}
1473.1006 +
1473.1007 +template <class _CharT, class _Alloc>
1473.1008 +_CharT*
1473.1009 +rope<_CharT,_Alloc>::_S_flatten(_Rope_RopeRep<_CharT, _Alloc>* __r, _CharT* __buffer)
1473.1010 +{
1473.1011 +    if (0 == __r) return __buffer;
1473.1012 +    switch(__r->_M_tag) {
1473.1013 +	case _RopeRep::_S_concat:
1473.1014 +	    {
1473.1015 +		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1473.1016 +		_RopeRep* __left = __c->_M_left;
1473.1017 +		_RopeRep* __right = __c->_M_right;
1473.1018 +		_CharT* __rest = _S_flatten(__left, __buffer);
1473.1019 +		return _S_flatten(__right, __rest);
1473.1020 +	    }
1473.1021 +	case _RopeRep::_S_leaf:
1473.1022 +	    {
1473.1023 +		_RopeLeaf* __l = (_RopeLeaf*)__r;
1473.1024 +		return copy_n(__l->_M_data, __l->_M_size._M_data, __buffer).second;
1473.1025 +	    }
1473.1026 +	case _RopeRep::_S_function:
1473.1027 +	case _RopeRep::_S_substringfn:
1473.1028 +	    // We dont yet do anything with substring nodes.
1473.1029 +	    // This needs to be fixed before ropefiles will work well.
1473.1030 +	    {
1473.1031 +		_RopeFunction* __f = (_RopeFunction*)__r;
1473.1032 +		(*(__f->_M_fn))(0, __f->_M_size._M_data, __buffer);
1473.1033 +		return __buffer + __f->_M_size._M_data;
1473.1034 +	    }
1473.1035 +	default:
1473.1036 +	    _STLP_ASSERT(false)
1473.1037 +	    /*NOTREACHED*/
1473.1038 +	    return 0;
1473.1039 +    }
1473.1040 +}
1473.1041 +
1473.1042 +
1473.1043 +// This needs work for _CharT != char
1473.1044 +template <class _CharT, class _Alloc>
1473.1045 +void
1473.1046 +rope<_CharT,_Alloc>::_S_dump(_RopeRep* __r, int __indent)
1473.1047 +{
1473.1048 +    for (int __i = 0; __i < __indent; __i++) putchar(' ');
1473.1049 +    if (0 == __r) {
1473.1050 +      printf("NULL\n"); return;
1473.1051 +    }
1473.1052 +    if (_RopeRep::_S_concat == __r->_M_tag) {
1473.1053 +	_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1473.1054 +	_RopeRep* __left = __c->_M_left;
1473.1055 +	_RopeRep* __right = __c->_M_right;
1473.1056 +
1473.1057 +#       ifdef __GC
1473.1058 +	  printf("Concatenation %p (depth = %d, len = %ld, %s balanced)\n",
1473.1059 +	    __r, __r->_M_depth, __r->_M_size._M_data, __r->_M_is_balanced? "" : "not");
1473.1060 +#       else
1473.1061 +	  printf("Concatenation %p (rc = %ld, depth = %d, "
1473.1062 +	           "len = %ld, %s balanced)\n",
1473.1063 +		 __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size._M_data,
1473.1064 +		 __r->_M_is_balanced? "" : "not");
1473.1065 +#       endif
1473.1066 +	_S_dump(__left, __indent + 2);
1473.1067 +	_S_dump(__right, __indent + 2);
1473.1068 +	return;
1473.1069 +    } else {
1473.1070 +	const char* __kind;
1473.1071 +
1473.1072 +	switch (__r->_M_tag) {
1473.1073 +	    case _RopeRep::_S_leaf:
1473.1074 +		__kind = "Leaf";
1473.1075 +		break;
1473.1076 +	    case _RopeRep::_S_function:
1473.1077 +		__kind = "Function";
1473.1078 +		break;
1473.1079 +	    case _RopeRep::_S_substringfn:
1473.1080 +		__kind = "Function representing substring";
1473.1081 +		break;
1473.1082 +	    default:
1473.1083 +		__kind = "(corrupted kind field!)";
1473.1084 +	}
1473.1085 +#       ifdef __GC
1473.1086 +	  printf("%s %p (depth = %d, len = %ld) ",
1473.1087 +		 __kind, __r, __r->_M_depth, __r->_M_size._M_data);
1473.1088 +#       else
1473.1089 +	  printf("%s %p (rc = %ld, depth = %d, len = %ld) ",
1473.1090 +		 __kind, __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size._M_data);
1473.1091 +#       endif
1473.1092 +	if (_S_is_one_byte_char_type((_CharT*)0)) {
1473.1093 +	    const int __max_len = 40;
1473.1094 +	    _Self_destruct_ptr __prefix(_S_substring(__r, 0, __max_len));
1473.1095 +	    _CharT __buffer[__max_len + 1];
1473.1096 +	    bool __too_big = __r->_M_size._M_data > __prefix->_M_size._M_data;
1473.1097 +
1473.1098 +	    _S_flatten(__prefix, __buffer);
1473.1099 +	    __buffer[__prefix->_M_size._M_data] = _S_eos((_CharT*)0); 
1473.1100 +	    printf("%s%s\n", 
1473.1101 +	           (char*)__buffer, __too_big? "...\n" : "\n");
1473.1102 +	} else {
1473.1103 +	    printf("\n");
1473.1104 +	}
1473.1105 +    }
1473.1106 +}
1473.1107 +
1473.1108 +# define __ROPE_TABLE_BODY  = { \
1473.1109 +/* 0 */1, /* 1 */2, /* 2 */3, /* 3 */5, /* 4 */8, /* 5 */13, /* 6 */21,         \
1473.1110 +/* 7 */34, /* 8 */55, /* 9 */89, /* 10 */144, /* 11 */233, /* 12 */377,         \
1473.1111 +/* 13 */610, /* 14 */987, /* 15 */1597, /* 16 */2584, /* 17 */4181,             \
1473.1112 +/* 18 */6765ul, /* 19 */10946ul, /* 20 */17711ul, /* 21 */28657ul, /* 22 */46368ul,   \
1473.1113 +/* 23 */75025ul, /* 24 */121393ul, /* 25 */196418ul, /* 26 */317811ul,                \
1473.1114 +/* 27 */514229ul, /* 28 */832040ul, /* 29 */1346269ul, /* 30 */2178309ul,             \
1473.1115 +/* 31 */3524578ul, /* 32 */5702887ul, /* 33 */9227465ul, /* 34 */14930352ul,          \
1473.1116 +/* 35 */24157817ul, /* 36 */39088169ul, /* 37 */63245986ul, /* 38 */102334155ul,      \
1473.1117 +/* 39 */165580141ul, /* 40 */267914296ul, /* 41 */433494437ul,                        \
1473.1118 +/* 42 */701408733ul, /* 43 */1134903170ul, /* 44 */1836311903ul,                      \
1473.1119 +/* 45 */2971215073ul }
1473.1120 +
1473.1121 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1473.1122 +template <class _CharT, class _Alloc>
1473.1123 +const unsigned long
1473.1124 +rope<_CharT,_Alloc>::_S_min_len[__ROPE_DEPTH_SIZE] __ROPE_TABLE_BODY ;
1473.1125 +# else 
1473.1126 +__DECLARE_INSTANCE(const unsigned long, 
1473.1127 +                   crope::_S_min_len[__ROPE_DEPTH_SIZE],
1473.1128 +                   __ROPE_TABLE_BODY);
1473.1129 +#  ifndef _STLP_NO_WCHAR_T
1473.1130 +__DECLARE_INSTANCE(const unsigned long, 
1473.1131 +                   wrope::_S_min_len[__ROPE_DEPTH_SIZE],
1473.1132 +                   __ROPE_TABLE_BODY);
1473.1133 +#  endif
1473.1134 +# endif
1473.1135 +# undef __ROPE_DEPTH_SIZE
1473.1136 +# undef __ROPE_MAX_DEPTH
1473.1137 +# undef __ROPE_TABLE_BODY
1473.1138 +
1473.1139 +// These are Fibonacci numbers < 2**32.
1473.1140 +
1473.1141 +template <class _CharT, class _Alloc>
1473.1142 +__RopeRep__*
1473.1143 +rope<_CharT,_Alloc>::_S_balance(_RopeRep* __r)
1473.1144 +{
1473.1145 +    _RopeRep* __forest[_RopeRep::_S_max_rope_depth + 1];
1473.1146 +    _RopeRep* __result = 0;
1473.1147 +    int __i;
1473.1148 +    // Invariant:
1473.1149 +    // The concatenation of forest in descending order is equal to __r.
1473.1150 +    // __forest[__i]._M_size._M_data >= _S_min_len[__i]
1473.1151 +    // __forest[__i]._M_depth = __i
1473.1152 +    // References from forest are included in refcount.
1473.1153 +
1473.1154 +    for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i) 
1473.1155 +      __forest[__i] = 0;
1473.1156 +    _STLP_TRY {
1473.1157 +      _S_add_to_forest(__r, __forest);
1473.1158 +      for (__i = 0; __i <= _RopeRep::_S_max_rope_depth; ++__i) 
1473.1159 +        if (0 != __forest[__i]) {
1473.1160 +#	ifndef __GC
1473.1161 +	  _Self_destruct_ptr __old(__result);
1473.1162 +#	endif
1473.1163 +	  __result = _S_concat_rep(__forest[__i], __result);
1473.1164 +	__forest[__i]->_M_unref_nonnil();
1473.1165 +#	if !defined(__GC) && defined(_STLP_USE_EXCEPTIONS)
1473.1166 +	  __forest[__i] = 0;
1473.1167 +#	endif
1473.1168 +      }
1473.1169 +    }
1473.1170 +    _STLP_UNWIND(for(__i = 0; __i <= _RopeRep::_S_max_rope_depth; __i++)
1473.1171 +		 _S_unref(__forest[__i]))
1473.1172 +    if (__result->_M_depth > _RopeRep::_S_max_rope_depth) {
1473.1173 +	__stl_throw_range_error("rope too long");
1473.1174 +    }
1473.1175 +    return(__result);
1473.1176 +}
1473.1177 +
1473.1178 +
1473.1179 +template <class _CharT, class _Alloc>
1473.1180 +void
1473.1181 +rope<_CharT,_Alloc>::_S_add_to_forest(_RopeRep* __r, _RopeRep** __forest)
1473.1182 +{
1473.1183 +    if (__r -> _M_is_balanced) {
1473.1184 +	_S_add_leaf_to_forest(__r, __forest);
1473.1185 +	return;
1473.1186 +    }
1473.1187 +    _STLP_ASSERT(__r->_M_tag == _RopeRep::_S_concat)
1473.1188 +    {
1473.1189 +	_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1473.1190 +
1473.1191 +	_S_add_to_forest(__c->_M_left, __forest);
1473.1192 +	_S_add_to_forest(__c->_M_right, __forest);
1473.1193 +    }
1473.1194 +}
1473.1195 +
1473.1196 +
1473.1197 +template <class _CharT, class _Alloc>
1473.1198 +void
1473.1199 +rope<_CharT,_Alloc>::_S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest)
1473.1200 +{
1473.1201 +    _RopeRep* __insertee;   		// included in refcount
1473.1202 +    _RopeRep* __too_tiny = 0;    	// included in refcount
1473.1203 +    int __i;  				// forest[0..__i-1] is empty
1473.1204 +    size_t __s = __r->_M_size._M_data;
1473.1205 +
1473.1206 +    for (__i = 0; __s >= _S_min_len[__i+1]/* not this bucket */; ++__i) {
1473.1207 +	if (0 != __forest[__i]) {
1473.1208 +#	    ifndef __GC
1473.1209 +	      _Self_destruct_ptr __old(__too_tiny);
1473.1210 +#	    endif
1473.1211 +	    __too_tiny = _S_concat_and_set_balanced(__forest[__i], __too_tiny);
1473.1212 +	    __forest[__i]->_M_unref_nonnil();
1473.1213 +	    __forest[__i] = 0;
1473.1214 +	}
1473.1215 +    }
1473.1216 +    {
1473.1217 +#	ifndef __GC
1473.1218 +	  _Self_destruct_ptr __old(__too_tiny);
1473.1219 +#	endif
1473.1220 +	__insertee = _S_concat_and_set_balanced(__too_tiny, __r);
1473.1221 +    }
1473.1222 +    // Too_tiny dead, and no longer included in refcount.
1473.1223 +    // Insertee is live and included.
1473.1224 +    _STLP_ASSERT(_S_is_almost_balanced(__insertee))
1473.1225 +    _STLP_ASSERT(__insertee->_M_depth <= __r->_M_depth + 1)
1473.1226 +    for (;; ++__i) {
1473.1227 +	if (0 != __forest[__i]) {
1473.1228 +#	    ifndef __GC
1473.1229 +	      _Self_destruct_ptr __old(__insertee);
1473.1230 +#	    endif
1473.1231 +	    __insertee = _S_concat_and_set_balanced(__forest[__i], __insertee);
1473.1232 +	    __forest[__i]->_M_unref_nonnil();
1473.1233 +	    __forest[__i] = 0;
1473.1234 +	    _STLP_ASSERT(_S_is_almost_balanced(__insertee))
1473.1235 +	}
1473.1236 +	_STLP_ASSERT(_S_min_len[__i] <= __insertee->_M_size._M_data)
1473.1237 +	_STLP_ASSERT(__forest[__i] == 0)
1473.1238 +	if (__i == _RopeRep::_S_max_rope_depth || 
1473.1239 +	      __insertee->_M_size._M_data < _S_min_len[__i+1]) {
1473.1240 +	    __forest[__i] = __insertee;
1473.1241 +	    // refcount is OK since __insertee is now dead.
1473.1242 +	    return;
1473.1243 +	}
1473.1244 +    }
1473.1245 +}
1473.1246 +
1473.1247 +template <class _CharT, class _Alloc>
1473.1248 +_CharT
1473.1249 +rope<_CharT,_Alloc>::_S_fetch(_RopeRep* __r, size_type __i)
1473.1250 +{
1473.1251 +    __GC_CONST _CharT* __cstr = __r->_M_c_string;
1473.1252 +
1473.1253 +    _STLP_ASSERT(__i < __r->_M_size._M_data)
1473.1254 +    if (0 != __cstr) return __cstr[__i]; 
1473.1255 +    for(;;) {
1473.1256 +      switch(__r->_M_tag) {
1473.1257 +	case _RopeRep::_S_concat:
1473.1258 +	    {
1473.1259 +		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1473.1260 +		_RopeRep* __left = __c->_M_left;
1473.1261 +		size_t __left_len = __left->_M_size._M_data;
1473.1262 +
1473.1263 +		if (__i >= __left_len) {
1473.1264 +		    __i -= __left_len;
1473.1265 +		    __r = __c->_M_right;
1473.1266 +		} else {
1473.1267 +		    __r = __left;
1473.1268 +		}
1473.1269 +	    }
1473.1270 +	    break;
1473.1271 +	case _RopeRep::_S_leaf:
1473.1272 +	    {
1473.1273 +		_RopeLeaf* __l = (_RopeLeaf*)__r;
1473.1274 +		return __l->_M_data[__i];
1473.1275 +	    }
1473.1276 +	case _RopeRep::_S_function:
1473.1277 +	case _RopeRep::_S_substringfn:
1473.1278 +	    {
1473.1279 +		_RopeFunction* __f = (_RopeFunction*)__r;
1473.1280 +		_CharT __result;
1473.1281 +
1473.1282 +		(*(__f->_M_fn))(__i, 1, &__result);
1473.1283 +		return __result;
1473.1284 +	    }
1473.1285 +      }
1473.1286 +    }
1473.1287 +#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1473.1288 +    return 0;
1473.1289 +#endif
1473.1290 +}
1473.1291 +
1473.1292 +# ifndef __GC
1473.1293 +// Return a uniquely referenced character slot for the given
1473.1294 +// position, or 0 if that's not possible.
1473.1295 +template <class _CharT, class _Alloc>
1473.1296 +_CharT*
1473.1297 +rope<_CharT,_Alloc>::_S_fetch_ptr(_RopeRep* __r, size_type __i)
1473.1298 +{
1473.1299 +    _RopeRep* __clrstack[_RopeRep::_S_max_rope_depth];
1473.1300 +    size_t __csptr = 0;
1473.1301 +
1473.1302 +    for(;;) {
1473.1303 +      if (__r->_M_ref_count > 1) return 0;
1473.1304 +      switch(__r->_M_tag) {
1473.1305 +	case _RopeRep::_S_concat:
1473.1306 +	    {
1473.1307 +		_RopeConcatenation* __c = (_RopeConcatenation*)__r;
1473.1308 +		_RopeRep* __left = __c->_M_left;
1473.1309 +		size_t __left_len = __left->_M_size._M_data;
1473.1310 +
1473.1311 +		if (__c->_M_c_string != 0) __clrstack[__csptr++] = __c;
1473.1312 +		if (__i >= __left_len) {
1473.1313 +		    __i -= __left_len;
1473.1314 +		    __r = __c->_M_right;
1473.1315 +		} else {
1473.1316 +		    __r = __left;
1473.1317 +		}
1473.1318 +	    }
1473.1319 +	    break;
1473.1320 +	case _RopeRep::_S_leaf:
1473.1321 +	    {
1473.1322 +		_RopeLeaf* __l = (_RopeLeaf*)__r;
1473.1323 +		if (__l->_M_c_string != __l->_M_data && __l->_M_c_string != 0)
1473.1324 +		    __clrstack[__csptr++] = __l;
1473.1325 +		while (__csptr > 0) {
1473.1326 +		    -- __csptr;
1473.1327 +		    _RopeRep* __d = __clrstack[__csptr];
1473.1328 +		    __d->_M_free_c_string();
1473.1329 +		    __d->_M_c_string = 0;
1473.1330 +		}
1473.1331 +		return __l->_M_data + __i;
1473.1332 +	    }
1473.1333 +	case _RopeRep::_S_function:
1473.1334 +	case _RopeRep::_S_substringfn:
1473.1335 +	    return 0;
1473.1336 +      }
1473.1337 +    }
1473.1338 +#if defined(_STLP_NEED_UNREACHABLE_RETURN)
1473.1339 +    return 0;
1473.1340 +#endif
1473.1341 +
1473.1342 +}
1473.1343 +# endif /* __GC */
1473.1344 +
1473.1345 +// The following could be implemented trivially using
1473.1346 +// lexicographical_compare_3way.
1473.1347 +// We do a little more work to avoid dealing with rope iterators for
1473.1348 +// flat strings.
1473.1349 +template <class _CharT, class _Alloc>
1473.1350 +int
1473.1351 +rope<_CharT,_Alloc>::_S_compare (const _RopeRep* __left, 
1473.1352 +                                 const _RopeRep* __right)
1473.1353 +{
1473.1354 +    size_t __left_len;
1473.1355 +    size_t __right_len;
1473.1356 +
1473.1357 +    if (0 == __right) return 0 != __left;
1473.1358 +    if (0 == __left) return -1;
1473.1359 +    __left_len = __left->_M_size._M_data;
1473.1360 +    __right_len = __right->_M_size._M_data;
1473.1361 +    if (_RopeRep::_S_leaf == __left->_M_tag) {
1473.1362 +	_RopeLeaf* __l = (_RopeLeaf*) __left;
1473.1363 +	if (_RopeRep::_S_leaf == __right->_M_tag) {
1473.1364 +	    _RopeLeaf* __r = (_RopeLeaf*) __right;
1473.1365 +	    return lexicographical_compare_3way(
1473.1366 +			__l->_M_data, __l->_M_data + __left_len,
1473.1367 +			__r->_M_data, __r->_M_data + __right_len);
1473.1368 +	} else {
1473.1369 +	    const_iterator __rstart(__right, 0);
1473.1370 +	    const_iterator __rend(__right, __right_len);
1473.1371 +	    return lexicographical_compare_3way(
1473.1372 +			__l->_M_data, __l->_M_data + __left_len,
1473.1373 +			__rstart, __rend);
1473.1374 +	}
1473.1375 +    } else {
1473.1376 +	const_iterator __lstart(__left, 0);
1473.1377 +	const_iterator __lend(__left, __left_len);
1473.1378 +	if (_RopeRep::_S_leaf == __right->_M_tag) {
1473.1379 +	    _RopeLeaf* __r = (_RopeLeaf*) __right;
1473.1380 +	    return lexicographical_compare_3way(
1473.1381 +				   __lstart, __lend,
1473.1382 +				   __r->_M_data, __r->_M_data + __right_len);
1473.1383 +	} else {
1473.1384 +	    const_iterator __rstart(__right, 0);
1473.1385 +	    const_iterator __rend(__right, __right_len);
1473.1386 +	    return lexicographical_compare_3way(
1473.1387 +				   __lstart, __lend,
1473.1388 +				   __rstart, __rend);
1473.1389 +	}
1473.1390 +    }
1473.1391 +}
1473.1392 +
1473.1393 +// Assignment to reference proxies.
1473.1394 +template <class _CharT, class _Alloc>
1473.1395 +_Rope_char_ref_proxy<_CharT, _Alloc>&
1473.1396 +_Rope_char_ref_proxy<_CharT, _Alloc>::operator= (_CharT __c) {
1473.1397 +    _RopeRep* __old = _M_root->_M_tree_ptr._M_data;
1473.1398 +#   ifndef __GC
1473.1399 +	// First check for the case in which everything is uniquely
1473.1400 +	// referenced.  In that case we can do this destructively.
1473.1401 +	_CharT* __ptr = _My_rope::_S_fetch_ptr(__old, _M_pos);
1473.1402 +	if (0 != __ptr) {
1473.1403 +	    *__ptr = __c;
1473.1404 +	    return *this;
1473.1405 +	}
1473.1406 +#   endif
1473.1407 +    _Self_destruct_ptr __left(
1473.1408 +      _My_rope::_S_substring(__old, 0, _M_pos));
1473.1409 +    _Self_destruct_ptr __right(
1473.1410 +      _My_rope::_S_substring(__old, _M_pos+1, __old->_M_size._M_data));
1473.1411 +    _Self_destruct_ptr __result_left(
1473.1412 +      _My_rope::_S_destr_concat_char_iter(__left, &__c, 1));
1473.1413 +
1473.1414 +#   ifndef __GC
1473.1415 +      _STLP_ASSERT(__left == __result_left || 1 == __result_left->_M_ref_count)
1473.1416 +#   endif
1473.1417 +    _RopeRep* __result =
1473.1418 +      _My_rope::_S_concat_rep(__result_left, __right);
1473.1419 +#   ifndef __GC
1473.1420 +      _STLP_ASSERT(1 <= __result->_M_ref_count)
1473.1421 +      _RopeRep::_S_unref(__old);
1473.1422 +#   endif
1473.1423 +    _M_root->_M_tree_ptr._M_data = __result;
1473.1424 +    return *this;
1473.1425 +}
1473.1426 +
1473.1427 +template <class _CharT, class _Alloc>
1473.1428 +_Rope_char_ptr_proxy<_CharT, _Alloc>
1473.1429 +_Rope_char_ref_proxy<_CharT, _Alloc>::operator& () const {
1473.1430 +    return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this);
1473.1431 +}
1473.1432 +
1473.1433 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1473.1434 +template<class _CharT, class _Alloc>
1473.1435 +_CharT rope<_CharT,_Alloc>::_S_empty_c_str[1] = { _CharT() };
1473.1436 +# else
1473.1437 +__DECLARE_INSTANCE(char, crope::_S_empty_c_str[1], ={0});
1473.1438 +# ifdef _STLP_HAS_WCHAR_T
1473.1439 +__DECLARE_INSTANCE(wchar_t, wrope::_S_empty_c_str[1], ={0});
1473.1440 +# endif /* _STLP_HAS_WCHAR_T */
1473.1441 +# endif /* _STLP_STATIC_TEMPLATE_DATA */
1473.1442 +// # endif
1473.1443 +
1473.1444 +template<class _CharT, class _Alloc>
1473.1445 +const _CharT* rope<_CharT,_Alloc>::c_str() const {
1473.1446 +    if (0 == _M_tree_ptr._M_data) {
1473.1447 +        _S_empty_c_str[0] = _S_eos((_CharT*)0);  // Possibly redundant,
1473.1448 +					     // but probably fast.
1473.1449 +        return _S_empty_c_str;
1473.1450 +    }
1473.1451 +    __GC_CONST _CharT* __old_c_string = _M_tree_ptr._M_data->_M_c_string;
1473.1452 +    if (0 != __old_c_string) return(__old_c_string);
1473.1453 +    size_t __s = size();
1473.1454 +   _CharT* __result = _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_tree_ptr, _CharT).allocate(__s + 1);
1473.1455 +    _S_flatten(_M_tree_ptr._M_data, __result);
1473.1456 +    __result[__s] = _S_eos((_CharT*)0);
1473.1457 +#   ifdef __GC
1473.1458 +	_M_tree_ptr._M_data->_M_c_string = __result;
1473.1459 +#   else
1473.1460 +      if ((__old_c_string = (__GC_CONST _CharT*)
1473.1461 +	   _Atomic_swap((__stl_atomic_t *)(&(_M_tree_ptr._M_data->_M_c_string)),
1473.1462 +			(__stl_atomic_t)__result)) != 0) {
1473.1463 +	// It must have been added in the interim.  Hence it had to have been
1473.1464 +	// separately allocated.  Deallocate the old copy, since we just
1473.1465 +	// replaced it.
1473.1466 +	_STLP_STD::_Destroy(__old_c_string, __old_c_string + __s + 1);
1473.1467 +      _STLP_CREATE_ALLOCATOR(allocator_type,(const allocator_type&)_M_tree_ptr, _CharT).deallocate(__old_c_string, __s + 1);
1473.1468 +      }
1473.1469 +#   endif
1473.1470 +    return(__result);
1473.1471 +}
1473.1472 +
1473.1473 +template<class _CharT, class _Alloc>
1473.1474 +const _CharT* rope<_CharT,_Alloc>::replace_with_c_str() {
1473.1475 +    if (0 == _M_tree_ptr._M_data) {
1473.1476 +        _S_empty_c_str[0] = _S_eos((_CharT*)0);
1473.1477 +        return _S_empty_c_str;
1473.1478 +    }
1473.1479 +    __GC_CONST _CharT* __old_c_string = _M_tree_ptr._M_data->_M_c_string;
1473.1480 +    if (_RopeRep::_S_leaf == _M_tree_ptr._M_data->_M_tag && 0 != __old_c_string) {
1473.1481 +	return(__old_c_string);
1473.1482 +    }
1473.1483 +    size_t __s = size();
1473.1484 +    _CharT* __result = _M_tree_ptr.allocate(_S_rounded_up_size(__s));
1473.1485 +    _S_flatten(_M_tree_ptr._M_data, __result);
1473.1486 +    __result[__s] = _S_eos((_CharT*)0);
1473.1487 +    _M_tree_ptr._M_data->_M_unref_nonnil();
1473.1488 +    _M_tree_ptr._M_data = _S_new_RopeLeaf(__result, __s, get_allocator());
1473.1489 +    return(__result);
1473.1490 +}
1473.1491 +
1473.1492 +// Algorithm specializations.  More should be added.
1473.1493 +
1473.1494 +#ifndef _STLP_MSVC
1473.1495 +// I couldn't get this to work with VC++
1473.1496 +template<class _CharT,class _Alloc>
1473.1497 +void
1473.1498 +_Rope_rotate(_Rope_iterator<_CharT,_Alloc> __first,
1473.1499 +              _Rope_iterator<_CharT,_Alloc> __middle,
1473.1500 +              _Rope_iterator<_CharT,_Alloc> __last)
1473.1501 +{
1473.1502 +    _STLP_ASSERT(__first.container() == __middle.container()
1473.1503 +                 && __middle.container() == __last.container())
1473.1504 +    rope<_CharT,_Alloc>& __r(__first.container());
1473.1505 +    rope<_CharT,_Alloc> __prefix = __r.substr(0, __first.index());
1473.1506 +    rope<_CharT,_Alloc> __suffix = 
1473.1507 +      __r.substr(__last.index(), __r.size() - __last.index());
1473.1508 +    rope<_CharT,_Alloc> __part1 = 
1473.1509 +      __r.substr(__middle.index(), __last.index() - __middle.index());
1473.1510 +    rope<_CharT,_Alloc> __part2 = 
1473.1511 +      __r.substr(__first.index(), __middle.index() - __first.index());
1473.1512 +    __r = __prefix;
1473.1513 +    __r += __part1;
1473.1514 +    __r += __part2;
1473.1515 +    __r += __suffix;
1473.1516 +}
1473.1517 +
1473.1518 +
1473.1519 +# if 0
1473.1520 +// Probably not useful for several reasons:
1473.1521 +// - for SGIs 7.1 compiler and probably some others,
1473.1522 +//   this forces lots of rope<wchar_t, ...> instantiations, creating a
1473.1523 +//   code bloat and compile time problem.  (Fixed in 7.2.)
1473.1524 +// - wchar_t is 4 bytes wide on most UNIX platforms, making it unattractive
1473.1525 +//   for unicode strings.  Unsigned short may be a better character
1473.1526 +//   type.
1473.1527 +inline void rotate(
1473.1528 +		_Rope_iterator<wchar_t,_STLP_DEFAULT_ALLOCATOR(char) > __first,
1473.1529 +                _Rope_iterator<wchar_t,_STLP_DEFAULT_ALLOCATOR(char) > __middle,
1473.1530 +                _Rope_iterator<wchar_t,_STLP_DEFAULT_ALLOCATOR(char) > __last) {
1473.1531 +    _Rope_rotate(__first, __middle, __last);
1473.1532 +}
1473.1533 +# endif
1473.1534 +#endif /* _STLP_MSVC */
1473.1535 +
1473.1536 +#   undef __RopeLeaf__ 
1473.1537 +#   undef __RopeRep__ 
1473.1538 +#   undef __RopeLeaf 
1473.1539 +#   undef __RopeRep 
1473.1540 +#   undef size_type
1473.1541 +
1473.1542 +_STLP_END_NAMESPACE
1473.1543 +
1473.1544 +# endif /* ROPEIMPL_H */
1473.1545 +
1473.1546 +// Local Variables:
1473.1547 +// mode:C++
1473.1548 +// End:
  1474.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1474.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_rope.h	Wed Mar 31 12:27:01 2010 +0100
  1474.3 @@ -0,0 +1,2518 @@
  1474.4 +/*
  1474.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1474.6 + * Copyright (c) 1996,1997
  1474.7 + * Silicon Graphics Computer Systems, Inc.
  1474.8 + *
  1474.9 + * Copyright (c) 1997
 1474.10 + * Moscow Center for SPARC Technology
 1474.11 + *
 1474.12 + * Copyright (c) 1999 
 1474.13 + * Boris Fomitchev
 1474.14 + *
 1474.15 + * This material is provided "as is", with absolutely no warranty expressed
 1474.16 + * or implied. Any use is at your own risk.
 1474.17 + *
 1474.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1474.19 + * without fee, provided the above notices are retained on all copies.
 1474.20 + * Permission to modify the code and to distribute modified code is granted,
 1474.21 + * provided the above notices are retained, and a notice that the code was
 1474.22 + * modified is included with the above copyright notice.
 1474.23 + *
 1474.24 + */
 1474.25 +
 1474.26 +/* NOTE: This is an internal header file, included by other STL headers.
 1474.27 + *   You should not attempt to use it directly.
 1474.28 + */
 1474.29 +
 1474.30 +// rope<_CharT,_Alloc> is a sequence of _CharT.
 1474.31 +// Ropes appear to be mutable, but update operations
 1474.32 +// really copy enough of the data structure to leave the original
 1474.33 +// valid.  Thus ropes can be logically copied by just copying
 1474.34 +// a pointer value.
 1474.35 +
 1474.36 +#ifndef _STLP_INTERNAL_ROPE_H
 1474.37 +# define _STLP_INTERNAL_ROPE_H
 1474.38 +
 1474.39 +# ifndef _STLP_INTERNAL_ALGOBASE_H
 1474.40 +#  include <stl/_algobase.h>
 1474.41 +# endif
 1474.42 +
 1474.43 +# ifndef _STLP_IOSFWD
 1474.44 +#  include <iosfwd>
 1474.45 +# endif
 1474.46 +
 1474.47 +# ifndef _STLP_INTERNAL_ALLOC_H
 1474.48 +#  include <stl/_alloc.h>
 1474.49 +# endif
 1474.50 +
 1474.51 +# ifndef _STLP_INTERNAL_ITERATOR_H
 1474.52 +#  include <stl/_iterator.h>
 1474.53 +# endif
 1474.54 +
 1474.55 +# ifndef _STLP_INTERNAL_ALGO_H
 1474.56 +#  include <stl/_algo.h>
 1474.57 +# endif
 1474.58 +
 1474.59 +# ifndef _STLP_INTERNAL_FUNCTION_H
 1474.60 +#  include <stl/_function.h>
 1474.61 +# endif
 1474.62 +
 1474.63 +# ifndef _STLP_INTERNAL_NUMERIC_H
 1474.64 +#  include <stl/_numeric.h>
 1474.65 +# endif
 1474.66 +
 1474.67 +# ifndef _STLP_INTERNAL_HASH_FUN_H
 1474.68 +#  include <stl/_hash_fun.h>
 1474.69 +# endif
 1474.70 +
 1474.71 +# ifdef __GC
 1474.72 +#   define __GC_CONST const
 1474.73 +# else
 1474.74 +# include <stl/_threads.h>
 1474.75 +#   define __GC_CONST   // constant except for deallocation
 1474.76 +# endif
 1474.77 +# ifdef _STLP_SGI_THREADS
 1474.78 +#    include <mutex.h>
 1474.79 +# endif
 1474.80 +
 1474.81 +#ifdef _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM 
 1474.82 +#  define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) (_Alloc_traits<_Tp,__atype>::create_allocator(__a)) 
 1474.83 +#elif defined(__MRC__)||defined(__SC__) 
 1474.84 +#  define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) __stl_alloc_create<_Tp,__atype>(__a,(_Tp*)0) 
 1474.85 +#else 
 1474.86 +#  define _STLP_CREATE_ALLOCATOR(__atype,__a, _Tp) __stl_alloc_create(__a,(_Tp*)0) 
 1474.87 +#endif 
 1474.88 +
 1474.89 +_STLP_BEGIN_NAMESPACE
 1474.90 +
 1474.91 +// First a lot of forward declarations.  The standard seems to require
 1474.92 +// much stricter "declaration before use" than many of the implementations
 1474.93 +// that preceded it.
 1474.94 +template<class _CharT, _STLP_DEFAULT_ALLOCATOR_SELECT(_CharT) > class rope;
 1474.95 +template<class _CharT, class _Alloc> struct _Rope_RopeConcatenation;
 1474.96 +template<class _CharT, class _Alloc> struct _Rope_RopeRep;
 1474.97 +template<class _CharT, class _Alloc> struct _Rope_RopeLeaf;
 1474.98 +template<class _CharT, class _Alloc> struct _Rope_RopeFunction;
 1474.99 +template<class _CharT, class _Alloc> struct _Rope_RopeSubstring;
1474.100 +template<class _CharT, class _Alloc> class _Rope_iterator;
1474.101 +template<class _CharT, class _Alloc> class _Rope_const_iterator;
1474.102 +template<class _CharT, class _Alloc> class _Rope_char_ref_proxy;
1474.103 +template<class _CharT, class _Alloc> class _Rope_char_ptr_proxy;
1474.104 +
1474.105 +// Some helpers, so we can use power on ropes.
1474.106 +// See below for why this isn't local to the implementation.
1474.107 +
1474.108 +// This uses a nonstandard refcount convention.
1474.109 +// The result has refcount 0.
1474.110 +template<class _CharT, class _Alloc>
1474.111 +struct _Rope_Concat_fn
1474.112 +  : public binary_function<rope<_CharT,_Alloc>, rope<_CharT,_Alloc>,
1474.113 +  rope<_CharT,_Alloc> > {
1474.114 +  rope<_CharT,_Alloc> operator() (const rope<_CharT,_Alloc>& __x,
1474.115 +                                  const rope<_CharT,_Alloc>& __y) {
1474.116 +    return __x + __y;
1474.117 +  }
1474.118 +};
1474.119 +
1474.120 +template <class _CharT, class _Alloc>
1474.121 +inline
1474.122 +rope<_CharT,_Alloc>
1474.123 +__identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
1474.124 +{
1474.125 +  return rope<_CharT,_Alloc>();
1474.126 +}
1474.127 +
1474.128 +// The _S_eos function is used for those functions that
1474.129 +// convert to/from C-like strings to detect the end of the string.
1474.130 +
1474.131 +// The end-of-C-string character.
1474.132 +// This is what the draft standard says it should be.
1474.133 +template <class _CharT>
1474.134 +inline _CharT _S_eos(_CharT*) { return _CharT(); }
1474.135 +
1474.136 +// fbp : some compilers fail to zero-initialize builtins ;(
1474.137 +inline const char _S_eos(const char*) { return 0; }
1474.138 +# ifdef _STLP_HAS_WCHAR_T
1474.139 +inline const wchar_t _S_eos(const wchar_t*) { return 0; }
1474.140 +# endif
1474.141 +
1474.142 +// Test for basic character types.
1474.143 +// For basic character types leaves having a trailing eos.
1474.144 +template <class _CharT>
1474.145 +inline bool _S_is_basic_char_type(_CharT*) { return false; }
1474.146 +template <class _CharT>
1474.147 +inline bool _S_is_one_byte_char_type(_CharT*) { return false; }
1474.148 +
1474.149 +inline bool _S_is_basic_char_type(char*) { return true; }
1474.150 +inline bool _S_is_one_byte_char_type(char*) { return true; }
1474.151 +# ifdef _STLP_HAS_WCHAR_T
1474.152 +inline bool _S_is_basic_char_type(wchar_t*) { return true; }
1474.153 +# endif
1474.154 +
1474.155 +// Store an eos iff _CharT is a basic character type.
1474.156 +// Do not reference _S_eos if it isn't.
1474.157 +template <class _CharT>
1474.158 +inline void _S_cond_store_eos(_CharT&) {}
1474.159 +
1474.160 +inline void _S_cond_store_eos(char& __c) { __c = 0; }
1474.161 +# ifdef _STLP_HAS_WCHAR_T
1474.162 +inline void _S_cond_store_eos(wchar_t& __c) { __c = 0; }
1474.163 +# endif
1474.164 +
1474.165 +// char_producers are logically functions that generate a section of
1474.166 +// a string.  These can be convereted to ropes.  The resulting rope
1474.167 +// invokes the char_producer on demand.  This allows, for example,
1474.168 +// files to be viewed as ropes without reading the entire file.
1474.169 +template <class _CharT>
1474.170 +class char_producer {
1474.171 +public:
1474.172 +  virtual ~char_producer() {};
1474.173 +  virtual void operator()(size_t __start_pos, size_t __len, 
1474.174 +                          _CharT* __buffer) = 0;
1474.175 +  // Buffer should really be an arbitrary output iterator.
1474.176 +  // That way we could flatten directly into an ostream, etc.
1474.177 +  // This is thoroughly impossible, since iterator types don't
1474.178 +  // have runtime descriptions.
1474.179 +};
1474.180 +
1474.181 +// Sequence buffers:
1474.182 +//
1474.183 +// Sequence must provide an append operation that appends an
1474.184 +// array to the sequence.  Sequence buffers are useful only if
1474.185 +// appending an entire array is cheaper than appending element by element.
1474.186 +// This is true for many string representations.
1474.187 +// This should  perhaps inherit from ostream<sequence::value_type>
1474.188 +// and be implemented correspondingly, so that they can be used
1474.189 +// for formatted.  For the sake of portability, we don't do this yet.
1474.190 +//
1474.191 +// For now, sequence buffers behave as output iterators.  But they also
1474.192 +// behave a little like basic_ostringstream<sequence::value_type> and a
1474.193 +// little like containers.
1474.194 +
1474.195 +template<class _Sequence
1474.196 +# if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \
1474.197 +       defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM ))
1474.198 +, size_t _Buf_sz = 100
1474.199 +#   if defined(__sgi) && !defined(__GNUC__)
1474.200 +#	 define __TYPEDEF_WORKAROUND
1474.201 +,class _V = typename _Sequence::value_type
1474.202 +#   endif /* __sgi */
1474.203 +# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1474.204 +>
1474.205 +// The 3rd parameter works around a common compiler bug.
1474.206 +class sequence_buffer : public iterator <output_iterator_tag, void, void, void, void> {
1474.207 +public:
1474.208 +#       ifndef __TYPEDEF_WORKAROUND
1474.209 +  typedef typename _Sequence::value_type value_type;
1474.210 +  typedef sequence_buffer<_Sequence
1474.211 +# if !(defined (_STLP_NON_TYPE_TMPL_PARAM_BUG) || \
1474.212 +       defined ( _STLP_NO_DEFAULT_NON_TYPE_PARAM ))
1474.213 +  , _Buf_sz
1474.214 +  > _Self;
1474.215 +# else /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1474.216 +  > _Self;
1474.217 +  enum { _Buf_sz = 100}; 
1474.218 +# endif /* _STLP_NON_TYPE_TMPL_PARAM_BUG */
1474.219 +  // # endif
1474.220 +#	else /* __TYPEDEF_WORKAROUND */
1474.221 +  typedef _V value_type;
1474.222 +  typedef sequence_buffer<_Sequence, _Buf_sz, _V> _Self;
1474.223 +#	endif /* __TYPEDEF_WORKAROUND */
1474.224 +protected:
1474.225 +  _Sequence* _M_prefix;
1474.226 +  value_type _M_buffer[_Buf_sz];
1474.227 +  size_t     _M_buf_count;
1474.228 +public:
1474.229 +  void flush() {
1474.230 +    _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
1474.231 +    _M_buf_count = 0;
1474.232 +  }
1474.233 +  ~sequence_buffer() { flush(); }
1474.234 +  sequence_buffer() : _M_prefix(0), _M_buf_count(0) {}
1474.235 +  sequence_buffer(const _Self& __x) {
1474.236 +    _M_prefix = __x._M_prefix;
1474.237 +    _M_buf_count = __x._M_buf_count;
1474.238 +    copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
1474.239 +  }
1474.240 +  sequence_buffer(_Self& __x) {
1474.241 +    __x.flush();
1474.242 +    _M_prefix = __x._M_prefix;
1474.243 +    _M_buf_count = 0;
1474.244 +  }
1474.245 +  sequence_buffer(_Sequence& __s) : _M_prefix(&__s), _M_buf_count(0) {}
1474.246 +  _Self& operator= (_Self& __x) {
1474.247 +    __x.flush();
1474.248 +    _M_prefix = __x._M_prefix;
1474.249 +    _M_buf_count = 0;
1474.250 +    return *this;
1474.251 +  }
1474.252 +  _Self& operator= (const _Self& __x) {
1474.253 +    _M_prefix = __x._M_prefix;
1474.254 +    _M_buf_count = __x._M_buf_count;
1474.255 +    copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
1474.256 +    return *this;
1474.257 +  }
1474.258 +  void push_back(value_type __x)
1474.259 +  {
1474.260 +    if (_M_buf_count < _Buf_sz) {
1474.261 +      _M_buffer[_M_buf_count] = __x;
1474.262 +      ++_M_buf_count;
1474.263 +    } else {
1474.264 +      flush();
1474.265 +      _M_buffer[0] = __x;
1474.266 +      _M_buf_count = 1;
1474.267 +    }
1474.268 +  }
1474.269 +  void append(value_type* __s, size_t __len)
1474.270 +  {
1474.271 +    if (__len + _M_buf_count <= _Buf_sz) {
1474.272 +      size_t __i = _M_buf_count;
1474.273 +      size_t __j = 0;
1474.274 +      for (; __j < __len; __i++, __j++) {
1474.275 +        _M_buffer[__i] = __s[__j];
1474.276 +      }
1474.277 +      _M_buf_count += __len;
1474.278 +    } else if (0 == _M_buf_count) {
1474.279 +      _M_prefix->append(__s, __s + __len);
1474.280 +    } else {
1474.281 +      flush();
1474.282 +      append(__s, __len);
1474.283 +    }
1474.284 +  }
1474.285 +  _Self& write(value_type* __s, size_t __len)
1474.286 +  {
1474.287 +    append(__s, __len);
1474.288 +    return *this;
1474.289 +  }
1474.290 +  _Self& put(value_type __x)
1474.291 +  {
1474.292 +    push_back(__x);
1474.293 +    return *this;
1474.294 +  }
1474.295 +  _Self& operator=(const value_type& __rhs)
1474.296 +  {
1474.297 +    push_back(__rhs);
1474.298 +    return *this;
1474.299 +  }
1474.300 +  _Self& operator*() { return *this; }
1474.301 +  _Self& operator++() { return *this; }
1474.302 +  _Self& operator++(int) { return *this; }
1474.303 +};
1474.304 +
1474.305 +// The following should be treated as private, at least for now.
1474.306 +template<class _CharT>
1474.307 +class _Rope_char_consumer {
1474.308 +public:
1474.309 +  // If we had member templates, these should not be virtual.
1474.310 +  // For now we need to use run-time parametrization where
1474.311 +  // compile-time would do.  _Hence this should all be private
1474.312 +  // for now.
1474.313 +  // The symmetry with char_producer is accidental and temporary.
1474.314 +  virtual ~_Rope_char_consumer() {};
1474.315 +  virtual bool operator()(const _CharT* __buffer, size_t __len) = 0;
1474.316 +};
1474.317 +
1474.318 +//
1474.319 +// What follows should really be local to rope.  Unfortunately,
1474.320 +// that doesn't work, since it makes it impossible to define generic
1474.321 +// equality on rope iterators.  According to the draft standard, the
1474.322 +// template parameters for such an equality operator cannot be inferred
1474.323 +// from the occurence of a member class as a parameter.
1474.324 +// (SGI compilers in fact allow this, but the __result wouldn't be
1474.325 +// portable.)
1474.326 +// Similarly, some of the static member functions are member functions
1474.327 +// only to avoid polluting the global namespace, and to circumvent
1474.328 +// restrictions on type inference for template functions.
1474.329 +//
1474.330 +
1474.331 +//
1474.332 +// The internal data structure for representing a rope.  This is
1474.333 +// private to the implementation.  A rope is really just a pointer
1474.334 +// to one of these.
1474.335 +//
1474.336 +// A few basic functions for manipulating this data structure
1474.337 +// are members of _RopeRep.  Most of the more complex algorithms
1474.338 +// are implemented as rope members.
1474.339 +//
1474.340 +// Some of the static member functions of _RopeRep have identically
1474.341 +// named functions in rope that simply invoke the _RopeRep versions.
1474.342 +//
1474.343 +// A macro to introduce various allocation and deallocation functions
1474.344 +// These need to be defined differently depending on whether or not
1474.345 +// we are using standard conforming allocators, and whether the allocator
1474.346 +// instances have real state.  Thus this macro is invoked repeatedly
1474.347 +// with different definitions of __ROPE_DEFINE_ALLOC.
1474.348 +
1474.349 +#if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1474.350 +# define __ROPE_DEFINE_ALLOC(_Tp, __name, _M_proxy) \
1474.351 +        typedef typename \
1474.352 +          _Alloc_traits<_Tp,_Alloc>::allocator_type __name##Allocator;
1474.353 +
1474.354 +#define __ROPE_DEFINE_ALLOCS(__a, _M_proxy) \
1474.355 +        __ROPE_DEFINE_ALLOC(_CharT,_Data, _M_proxy) /* character data */ \
1474.356 +        typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
1474.357 +        __ROPE_DEFINE_ALLOC(__C,_C, _M_proxy) \
1474.358 +        typedef _Rope_RopeLeaf<_CharT,__a> __L; \
1474.359 +        __ROPE_DEFINE_ALLOC(__L,_L, _M_proxy) \
1474.360 +        typedef _Rope_RopeFunction<_CharT,__a> __F; \
1474.361 +        __ROPE_DEFINE_ALLOC(__F,_F, _M_proxy) \
1474.362 +        typedef _Rope_RopeSubstring<_CharT,__a> __S; \
1474.363 +        __ROPE_DEFINE_ALLOC(__S,_S,_M_proxy)
1474.364 +#else
1474.365 +#define __ROPE_DEFINE_ALLOC(_Tp, __name, _M_proxy) 
1474.366 +#define __ROPE_DEFINE_ALLOCS(__a, _M_proxy)
1474.367 +#endif
1474.368 +
1474.369 +
1474.370 +template<class _CharT, class _Alloc>
1474.371 +struct _Rope_RopeRep
1474.372 +# ifndef __GC
1474.373 +  : public _Refcount_Base
1474.374 +# endif
1474.375 +{
1474.376 +  typedef _Rope_RopeRep<_CharT, _Alloc> _Self;
1474.377 +public:
1474.378 +#  define __ROPE_MAX_DEPTH  45
1474.379 +#  define __ROPE_DEPTH_SIZE 46
1474.380 +  enum { _S_max_rope_depth = __ROPE_MAX_DEPTH };
1474.381 +  enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function};
1474.382 +  // Apparently needed by VC++
1474.383 +  // The data fields of leaves are allocated with some
1474.384 +  // extra space, to accomodate future growth and for basic
1474.385 +  // character types, to hold a trailing eos character.
1474.386 +  enum { _S_alloc_granularity = 8 };
1474.387 +
1474.388 +  
1474.389 +  _Tag _M_tag:8;
1474.390 +  bool _M_is_balanced:8;
1474.391 +
1474.392 +  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1474.393 +  typedef typename _Alloc_traits<_CharT,_Alloc>::allocator_type
1474.394 +  allocator_type;
1474.395 +  
1474.396 +  allocator_type get_allocator() const { return allocator_type(_M_size);  }
1474.397 +
1474.398 +  unsigned char _M_depth;
1474.399 +  __GC_CONST _CharT* _M_c_string;
1474.400 +  _STLP_alloc_proxy<size_t, _CharT, allocator_type> _M_size;
1474.401 +
1474.402 +# ifdef _STLP_NO_ARROW_OPERATOR
1474.403 +  _Rope_RopeRep() : _Refcount_Base(1), _M_size(allocator_type(), 0) {}
1474.404 +# endif
1474.405 +
1474.406 +  /* Flattened version of string, if needed.  */
1474.407 +  /* typically 0.                             */
1474.408 +  /* If it's not 0, then the memory is owned  */
1474.409 +  /* by this node.                            */
1474.410 +  /* In the case of a leaf, this may point to */
1474.411 +  /* the same memory as the data field.       */
1474.412 +  _Rope_RopeRep(_Tag __t, int __d, bool __b, size_t _p_size,
1474.413 +                allocator_type __a) :
1474.414 +#         ifndef __GC
1474.415 +    _Refcount_Base(1),
1474.416 +#	  endif
1474.417 +    _M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0), _M_size(__a, _p_size)
1474.418 +  { }
1474.419 +#   ifdef __GC
1474.420 +  void _M_incr () {}
1474.421 +#   endif
1474.422 +
1474.423 +  // fbp : moved from RopeLeaf
1474.424 +  static size_t _S_rounded_up_size(size_t __n) {
1474.425 +    size_t __size_with_eos;
1474.426 +    
1474.427 +    if (_S_is_basic_char_type((_CharT*)0)) {
1474.428 +      __size_with_eos = __n + 1;
1474.429 +    } else {
1474.430 +      __size_with_eos = __n;
1474.431 +    }
1474.432 +#       ifdef __GC
1474.433 +    return __size_with_eos;
1474.434 +#       else
1474.435 +    // Allow slop for in-place expansion.
1474.436 +    return (__size_with_eos + _S_alloc_granularity-1)
1474.437 +      &~ (_S_alloc_granularity-1);
1474.438 +#       endif
1474.439 +  }
1474.440 +
1474.441 +  static void _S_free_string(__GC_CONST _CharT* __s, size_t __len,
1474.442 +                             allocator_type __a) {
1474.443 +
1474.444 +    if (!_S_is_basic_char_type((_CharT*)0)) {
1474.445 +      _STLP_STD::_Destroy(__s, __s + __len);
1474.446 +    }
1474.447 +    //  This has to be a static member, so this gets a bit messy
1474.448 +#   ifdef _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM
1474.449 +    __a.deallocate(__s, _S_rounded_up_size(__len));		//*ty 03/24/2001 - restored not to use __stl_alloc_rebind() since it is not defined under _STLP_MEMBER_TEMPLATE_CLASSES
1474.450 +#   else
1474.451 +    __stl_alloc_rebind (__a, (_CharT*)0).deallocate(__s, _S_rounded_up_size(__len));
1474.452 +#   endif
1474.453 +  }
1474.454 +  
1474.455 +  // Deallocate data section of a leaf.
1474.456 +  // This shouldn't be a member function.
1474.457 +  // But its hard to do anything else at the
1474.458 +  // moment, because it's templatized w.r.t.
1474.459 +  // an allocator.
1474.460 +  // Does nothing if __GC is defined.
1474.461 +#   ifndef __GC
1474.462 +  void _M_free_c_string();
1474.463 +  void _M_free_tree();
1474.464 +  // Deallocate t. Assumes t is not 0.
1474.465 +  void _M_unref_nonnil()
1474.466 +  {
1474.467 +    _M_decr(); if (!_M_ref_count) _M_free_tree();
1474.468 +  }
1474.469 +  void _M_ref_nonnil()
1474.470 +  {
1474.471 +    _M_incr();
1474.472 +  }
1474.473 +  static void _S_unref(_Self* __t)
1474.474 +  {
1474.475 +    if (0 != __t) {
1474.476 +      __t->_M_unref_nonnil();
1474.477 +    }
1474.478 +  }
1474.479 +  static void _S_ref(_Self* __t)
1474.480 +  {
1474.481 +    if (0 != __t) __t->_M_incr();
1474.482 +  }
1474.483 +  static void _S_free_if_unref(_Self* __t)
1474.484 +  {
1474.485 +    if (0 != __t && 0 == __t->_M_ref_count) __t->_M_free_tree();
1474.486 +  }
1474.487 +#   else /* __GC */
1474.488 +  void _M_unref_nonnil() {}
1474.489 +  void _M_ref_nonnil() {}
1474.490 +  static void _S_unref(_Self*) {}
1474.491 +  static void _S_ref(_Self*) {}
1474.492 +  static void _S_free_if_unref(_Self*) {}
1474.493 +#   endif
1474.494 +
1474.495 +  __ROPE_DEFINE_ALLOCS(_Alloc, _M_size)
1474.496 +    };
1474.497 +
1474.498 +template<class _CharT, class _Alloc>
1474.499 +struct _Rope_RopeLeaf : public _Rope_RopeRep<_CharT,_Alloc> {
1474.500 +public:
1474.501 +  __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
1474.502 +                                /* The allocated size is         */
1474.503 +                                /* _S_rounded_up_size(size), except */
1474.504 +                                /* in the GC case, in which it   */
1474.505 +                                /* doesn't matter.               */
1474.506 +  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1474.507 +  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1474.508 +  _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t _p_size, allocator_type __a)
1474.509 +    : _Rope_RopeRep<_CharT,_Alloc>(_Rope_RopeRep<_CharT,_Alloc>::_S_leaf, 0, true, _p_size, __a), 
1474.510 +    _M_data(__d)
1474.511 +  {
1474.512 +    _STLP_ASSERT(_p_size > 0)
1474.513 +    if (_S_is_basic_char_type((_CharT *)0)) {
1474.514 +      // already eos terminated.
1474.515 +      this->_M_c_string = __d;
1474.516 +    }
1474.517 +  }
1474.518 +
1474.519 +# ifdef _STLP_NO_ARROW_OPERATOR
1474.520 +  _Rope_RopeLeaf() {}
1474.521 +  _Rope_RopeLeaf(const _Rope_RopeLeaf<_CharT, _Alloc>& ) {}
1474.522 +# endif
1474.523 +  
1474.524 +// The constructor assumes that d has been allocated with
1474.525 +  // the proper allocator and the properly padded size.
1474.526 +  // In contrast, the destructor deallocates the data:
1474.527 +# ifndef __GC
1474.528 +  ~_Rope_RopeLeaf() {
1474.529 +    if (_M_data != this->_M_c_string) {
1474.530 +      this->_M_free_c_string();
1474.531 +    }
1474.532 +    _Rope_RopeRep<_CharT,_Alloc>::_S_free_string(_M_data, this->_M_size._M_data, this->get_allocator());
1474.533 +  }
1474.534 +# endif
1474.535 +};
1474.536 +
1474.537 +template<class _CharT, class _Alloc>
1474.538 +struct _Rope_RopeConcatenation : public _Rope_RopeRep<_CharT,_Alloc> {
1474.539 +public:
1474.540 +  _Rope_RopeRep<_CharT,_Alloc>* _M_left;
1474.541 +  _Rope_RopeRep<_CharT,_Alloc>* _M_right;
1474.542 +  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1474.543 +  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1474.544 +  _Rope_RopeConcatenation(_Rope_RopeRep<_CharT,_Alloc>* __l,
1474.545 +                          _Rope_RopeRep<_CharT,_Alloc>* __r,
1474.546 +                          allocator_type __a)
1474.547 +    :   _Rope_RopeRep<_CharT,_Alloc>(
1474.548 +                                     _Rope_RopeRep<_CharT,_Alloc>::_S_concat, 
1474.549 +				     (max)(__l->_M_depth, __r->_M_depth) + 1, false,
1474.550 +                                     __l->_M_size._M_data + __r->_M_size._M_data, __a), _M_left(__l), _M_right(__r)
1474.551 +  {}
1474.552 +# ifdef _STLP_NO_ARROW_OPERATOR
1474.553 +  _Rope_RopeConcatenation() {}
1474.554 +  _Rope_RopeConcatenation(const _Rope_RopeConcatenation<_CharT, _Alloc>&) {}
1474.555 +# endif
1474.556 +
1474.557 +# ifndef __GC
1474.558 +  ~_Rope_RopeConcatenation() {
1474.559 +    this->_M_free_c_string();
1474.560 +    _M_left->_M_unref_nonnil();
1474.561 +    _M_right->_M_unref_nonnil();
1474.562 +  }
1474.563 +# endif
1474.564 +};
1474.565 +
1474.566 +template<class _CharT, class _Alloc>
1474.567 +struct _Rope_RopeFunction : public _Rope_RopeRep<_CharT,_Alloc> {
1474.568 +public:
1474.569 +  char_producer<_CharT>* _M_fn;
1474.570 +#   ifndef __GC
1474.571 +  bool _M_delete_when_done; // Char_producer is owned by the
1474.572 +                                // rope and should be explicitly
1474.573 +                                // deleted when the rope becomes
1474.574 +                                // inaccessible.
1474.575 +#   else
1474.576 +  // In the GC case, we either register the rope for
1474.577 +  // finalization, or not.  Thus the field is unnecessary;
1474.578 +  // the information is stored in the collector data structures.
1474.579 +  // We do need a finalization procedure to be invoked by the
1474.580 +  // collector.
1474.581 +  static void _S_fn_finalization_proc(void * __tree, void *) {
1474.582 +    delete ((_Rope_RopeFunction *)__tree) -> _M_fn;
1474.583 +  }
1474.584 +#   endif
1474.585 +  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1474.586 +  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1474.587 +# ifdef _STLP_NO_ARROW_OPERATOR
1474.588 +  _Rope_RopeFunction() {}
1474.589 +  _Rope_RopeFunction(const _Rope_RopeFunction<_CharT, _Alloc>& ) {}
1474.590 +# endif
1474.591 +
1474.592 +  _Rope_RopeFunction(char_producer<_CharT>* __f, size_t _p_size,
1474.593 +                     bool __d, allocator_type __a)
1474.594 +    :
1474.595 +    _Rope_RopeRep<_CharT,_Alloc>(_Rope_RopeRep<_CharT,_Alloc>::_S_function, 0, true, _p_size, __a),
1474.596 +    _M_fn(__f)
1474.597 +#       ifndef __GC
1474.598 +    , _M_delete_when_done(__d)
1474.599 +#       endif
1474.600 +  {
1474.601 +    _STLP_ASSERT(_p_size > 0)
1474.602 +#       ifdef __GC
1474.603 +    if (__d) {
1474.604 +      GC_REGISTER_FINALIZER(
1474.605 +                            this, _Rope_RopeFunction::_S_fn_finalization_proc, 0, 0, 0);
1474.606 +    }
1474.607 +#       endif
1474.608 +  }
1474.609 +# ifndef __GC
1474.610 +  ~_Rope_RopeFunction() {
1474.611 +    this->_M_free_c_string();
1474.612 +    if (_M_delete_when_done) {
1474.613 +      delete _M_fn;
1474.614 +    }
1474.615 +  }
1474.616 +# endif
1474.617 +};
1474.618 +// Substring results are usually represented using just
1474.619 +// concatenation nodes.  But in the case of very long flat ropes
1474.620 +// or ropes with a functional representation that isn't practical.
1474.621 +// In that case, we represent the __result as a special case of
1474.622 +// RopeFunction, whose char_producer points back to the rope itself.
1474.623 +// In all cases except repeated substring operations and
1474.624 +// deallocation, we treat the __result as a RopeFunction.
1474.625 +template<class _CharT, class _Alloc>
1474.626 +# if  ( defined (__IBMCPP__) && (__IBMCPP__ == 500) )  // JFA 10-Aug-2000 for some reason xlC cares about the order
1474.627 +struct _Rope_RopeSubstring : public char_producer<_CharT> , public _Rope_RopeFunction<_CharT,_Alloc>
1474.628 +# else
1474.629 +struct _Rope_RopeSubstring : public _Rope_RopeFunction<_CharT,_Alloc>,
1474.630 +                             public char_producer<_CharT>
1474.631 +# endif
1474.632 +{
1474.633 +public:
1474.634 +  // XXX this whole class should be rewritten.
1474.635 +  typedef _Rope_RopeRep<_CharT,_Alloc> _Base;
1474.636 +  _Rope_RopeRep<_CharT,_Alloc>* _M_base;      // not 0
1474.637 +  size_t _M_start;
1474.638 +  virtual void operator()(size_t __start_pos, size_t __req_len,
1474.639 +                          _CharT* __buffer) {
1474.640 +    switch(_M_base->_M_tag) {
1474.641 +    case _Base::_S_function:
1474.642 +    case _Base::_S_substringfn:
1474.643 +      {
1474.644 +        char_producer<_CharT>* __fn =
1474.645 +          ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;
1474.646 +        _STLP_ASSERT(__start_pos + __req_len <= this->_M_size._M_data)
1474.647 +        _STLP_ASSERT(_M_start + this->_M_size._M_data <= _M_base->_M_size._M_data)
1474.648 +        (*__fn)(__start_pos + _M_start, __req_len, __buffer);
1474.649 +      }
1474.650 +      break;
1474.651 +    case _Base::_S_leaf:
1474.652 +      {
1474.653 +        __GC_CONST _CharT* __s =
1474.654 +          ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;
1474.655 +        uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,
1474.656 +                             __buffer);
1474.657 +      }
1474.658 +      break;
1474.659 +    default:
1474.660 +      _STLP_ASSERT(false)
1474.661 +        ;
1474.662 +    }
1474.663 +  }
1474.664 +
1474.665 +  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1474.666 +  typedef typename _Rope_RopeRep<_CharT,_Alloc>::allocator_type allocator_type;
1474.667 +
1474.668 +  _Rope_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
1474.669 +                      size_t __l, allocator_type __a)
1474.670 +    : _Rope_RopeFunction<_CharT,_Alloc>(this, __l, false, __a),
1474.671 +	_M_base(__b),
1474.672 +    _M_start(__s)
1474.673 +       
1474.674 +  {
1474.675 +    _STLP_ASSERT(__l > 0)
1474.676 +    _STLP_ASSERT(__s + __l <= __b->_M_size._M_data)
1474.677 +#       ifndef __GC
1474.678 +    _M_base->_M_ref_nonnil();
1474.679 +#       endif
1474.680 +    this->_M_tag = _Base::_S_substringfn;
1474.681 +  }
1474.682 +  virtual ~_Rope_RopeSubstring()
1474.683 +  { 
1474.684 +#       ifndef __GC
1474.685 +    _M_base->_M_unref_nonnil();
1474.686 +#       endif
1474.687 +  }
1474.688 +};
1474.689 +
1474.690 +// Self-destructing pointers to Rope_rep.
1474.691 +// These are not conventional smart pointers.  Their
1474.692 +// only purpose in life is to ensure that unref is called
1474.693 +// on the pointer either at normal exit or if an exception
1474.694 +// is raised.  It is the caller's responsibility to
1474.695 +// adjust reference counts when these pointers are initialized
1474.696 +// or assigned to.  (This convention significantly reduces
1474.697 +// the number of potentially expensive reference count
1474.698 +// updates.)
1474.699 +#ifndef __GC
1474.700 +template<class _CharT, class _Alloc>
1474.701 +struct _Rope_self_destruct_ptr {
1474.702 +  _Rope_RopeRep<_CharT,_Alloc>* _M_ptr;
1474.703 +  ~_Rope_self_destruct_ptr() 
1474.704 +  { _Rope_RopeRep<_CharT,_Alloc>::_S_unref(_M_ptr); }
1474.705 +#   ifdef _STLP_USE_EXCEPTIONS
1474.706 +  _Rope_self_destruct_ptr() : _M_ptr(0) {};
1474.707 +#   else
1474.708 +  _Rope_self_destruct_ptr() {};
1474.709 +#   endif
1474.710 +  _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT,_Alloc>* __p) : _M_ptr(__p) {}
1474.711 +  _Rope_RopeRep<_CharT,_Alloc>& operator*() { return *_M_ptr; }
1474.712 +  _Rope_RopeRep<_CharT,_Alloc>* operator->() { return _M_ptr; }
1474.713 +  operator _Rope_RopeRep<_CharT,_Alloc>*() { return _M_ptr; }
1474.714 +  _Rope_self_destruct_ptr<_CharT, _Alloc>& 
1474.715 +  operator= (_Rope_RopeRep<_CharT,_Alloc>* __x)
1474.716 +  { _M_ptr = __x; return *this; }
1474.717 +};
1474.718 +#endif
1474.719 +
1474.720 +// Dereferencing a nonconst iterator has to return something
1474.721 +// that behaves almost like a reference.  It's not possible to
1474.722 +// return an actual reference since assignment requires extra
1474.723 +// work.  And we would get into the same problems as with the
1474.724 +// CD2 version of basic_string.
1474.725 +template<class _CharT, class _Alloc>
1474.726 +class _Rope_char_ref_proxy {
1474.727 +  typedef _Rope_char_ref_proxy<_CharT, _Alloc> _Self;
1474.728 +  friend class rope<_CharT,_Alloc>;
1474.729 +  friend class _Rope_iterator<_CharT,_Alloc>;
1474.730 +  friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
1474.731 +#   ifdef __GC
1474.732 +  typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
1474.733 +#   else
1474.734 +  typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
1474.735 +#   endif
1474.736 +  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1474.737 +  typedef rope<_CharT,_Alloc> _My_rope;
1474.738 +  size_t _M_pos;
1474.739 +  _CharT _M_current;
1474.740 +  bool _M_current_valid;
1474.741 +  _My_rope* _M_root;     // The whole rope.
1474.742 +public:
1474.743 +  _Rope_char_ref_proxy(_My_rope* __r, size_t __p) :
1474.744 +    _M_pos(__p), _M_current_valid(false), _M_root(__r) {}
1474.745 +  _Rope_char_ref_proxy(const _Self& __x) :
1474.746 +    _M_pos(__x._M_pos), _M_current_valid(false), _M_root(__x._M_root) {}
1474.747 +  // Don't preserve cache if the reference can outlive the
1474.748 +  // expression.  We claim that's not possible without calling
1474.749 +  // a copy constructor or generating reference to a proxy
1474.750 +  // reference.  We declare the latter to have undefined semantics.
1474.751 +  _Rope_char_ref_proxy(_My_rope* __r, size_t __p,
1474.752 +                       _CharT __c) :
1474.753 +    _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) {}
1474.754 +  inline operator _CharT () const;
1474.755 +  _Self& operator= (_CharT __c);
1474.756 +  _Rope_char_ptr_proxy<_CharT, _Alloc> operator& () const;
1474.757 +  _Self& operator= (const _Self& __c) {
1474.758 +    return operator=((_CharT)__c); 
1474.759 +  }
1474.760 +};
1474.761 +
1474.762 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1474.763 +template<class _CharT, class __Alloc>
1474.764 +inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
1474.765 +                 _Rope_char_ref_proxy <_CharT, __Alloc > __b) {
1474.766 +  _CharT __tmp = __a;
1474.767 +  __a = __b;
1474.768 +  __b = __tmp;
1474.769 +}
1474.770 +#else
1474.771 +// There is no really acceptable way to handle this.  The default
1474.772 +// definition of swap doesn't work for proxy references.
1474.773 +// It can't really be made to work, even with ugly hacks, since
1474.774 +// the only unusual operation it uses is the copy constructor, which
1474.775 +// is needed for other purposes.  We provide a macro for
1474.776 +// full specializations, and instantiate the most common case.
1474.777 +# define _ROPE_SWAP_SPECIALIZATION(_CharT, __Alloc) \
1474.778 +    inline void swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a, \
1474.779 +                     _Rope_char_ref_proxy <_CharT, __Alloc > __b) { \
1474.780 +        _CharT __tmp = __a; \
1474.781 +        __a = __b; \
1474.782 +        __b = __tmp; \
1474.783 +    }
1474.784 +
1474.785 +_ROPE_SWAP_SPECIALIZATION(char,_STLP_DEFAULT_ALLOCATOR(char) )
1474.786 +
1474.787 +#endif /* !_STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1474.788 +
1474.789 +  template<class _CharT, class _Alloc>
1474.790 +class _Rope_char_ptr_proxy {
1474.791 +  // XXX this class should be rewritten.
1474.792 +public:
1474.793 +  typedef _Rope_char_ptr_proxy<_CharT, _Alloc> _Self;
1474.794 +  friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
1474.795 +  size_t _M_pos;
1474.796 +  rope<_CharT,_Alloc>* _M_root;     // The whole rope.
1474.797 +
1474.798 +  _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x) 
1474.799 +    : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
1474.800 +  _Rope_char_ptr_proxy(const _Self& __x)
1474.801 +    : _M_pos(__x._M_pos), _M_root(__x._M_root) {}
1474.802 +  _Rope_char_ptr_proxy() {}
1474.803 +  _Rope_char_ptr_proxy(_CharT* __x) : _M_pos(0), _M_root(0) {
1474.804 +    _STLP_ASSERT(0 == __x)
1474.805 +  }
1474.806 +  _Self& 
1474.807 +  operator= (const _Self& __x) {
1474.808 +    _M_pos = __x._M_pos;
1474.809 +    _M_root = __x._M_root;
1474.810 +    return *this;
1474.811 +  }
1474.812 +
1474.813 +  _Rope_char_ref_proxy<_CharT,_Alloc> operator*() const {
1474.814 +    return _Rope_char_ref_proxy<_CharT,_Alloc>(_M_root, _M_pos);
1474.815 +  }
1474.816 +};
1474.817 +
1474.818 +
1474.819 +// Rope iterators:
1474.820 +// Unlike in the C version, we cache only part of the stack
1474.821 +// for rope iterators, since they must be efficiently copyable.
1474.822 +// When we run out of cache, we have to reconstruct the iterator
1474.823 +// value.
1474.824 +// Pointers from iterators are not included in reference counts.
1474.825 +// Iterators are assumed to be thread private.  Ropes can
1474.826 +// be shared.
1474.827 +
1474.828 +template<class _CharT, class _Alloc>
1474.829 +class _Rope_iterator_base
1474.830 +/*   : public random_access_iterator<_CharT, ptrdiff_t>  */
1474.831 +{
1474.832 +  friend class rope<_CharT,_Alloc>;
1474.833 +  typedef _Rope_iterator_base<_CharT, _Alloc> _Self;
1474.834 +public:
1474.835 +  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1474.836 +  // Borland doesnt want this to be protected.
1474.837 +  //  protected:
1474.838 +  enum { _S_path_cache_len = 4 }; // Must be <= 9.
1474.839 +  enum { _S_iterator_buf_len = 15 };
1474.840 +  size_t _M_current_pos;
1474.841 +  _RopeRep* _M_root;     // The whole rope.
1474.842 +  size_t _M_leaf_pos;    // Starting position for current leaf
1474.843 +  __GC_CONST _CharT* _M_buf_start;
1474.844 +  // Buffer possibly
1474.845 +  // containing current char.
1474.846 +  __GC_CONST _CharT* _M_buf_ptr;
1474.847 +  // Pointer to current char in buffer.
1474.848 +  // != 0 ==> buffer valid.
1474.849 +  __GC_CONST _CharT* _M_buf_end;
1474.850 +  // One past __last valid char in buffer.
1474.851 +  // What follows is the path cache.  We go out of our
1474.852 +  // way to make this compact.
1474.853 +  // Path_end contains the bottom section of the path from
1474.854 +  // the root to the current leaf.
1474.855 +  const _RopeRep* _M_path_end[_S_path_cache_len];
1474.856 +  int _M_leaf_index;     // Last valid __pos in path_end;
1474.857 +  // _M_path_end[0] ... _M_path_end[leaf_index-1]
1474.858 +  // point to concatenation nodes.
1474.859 +  unsigned char _M_path_directions;
1474.860 +  // (path_directions >> __i) & 1 is 1
1474.861 +  // iff we got from _M_path_end[leaf_index - __i - 1]
1474.862 +  // to _M_path_end[leaf_index - __i] by going to the
1474.863 +  // __right. Assumes path_cache_len <= 9.
1474.864 +  _CharT _M_tmp_buf[_S_iterator_buf_len];
1474.865 +  // Short buffer for surrounding chars.
1474.866 +  // This is useful primarily for 
1474.867 +  // RopeFunctions.  We put the buffer
1474.868 +  // here to avoid locking in the
1474.869 +  // multithreaded case.
1474.870 +  // The cached path is generally assumed to be valid
1474.871 +  // only if the buffer is valid.
1474.872 +  static void _S_setbuf(_Rope_iterator_base<_CharT, _Alloc>& __x);
1474.873 +  // Set buffer contents given
1474.874 +  // path cache.
1474.875 +  static void _S_setcache(_Rope_iterator_base<_CharT, _Alloc>& __x);
1474.876 +  // Set buffer contents and
1474.877 +  // path cache.
1474.878 +  static void _S_setcache_for_incr(_Rope_iterator_base<_CharT, _Alloc>& __x);
1474.879 +  // As above, but assumes path
1474.880 +  // cache is valid for previous posn.
1474.881 +  _Rope_iterator_base() {}
1474.882 +  _Rope_iterator_base(_RopeRep* __root, size_t __pos)
1474.883 +    : _M_current_pos(__pos),_M_root(__root),  _M_buf_ptr(0) {}
1474.884 +  void _M_incr(size_t __n);
1474.885 +  void _M_decr(size_t __n);
1474.886 +public:
1474.887 +  size_t index() const { return _M_current_pos; }
1474.888 +  _Rope_iterator_base(const _Self& __x) {
1474.889 +    if (0 != __x._M_buf_ptr) {
1474.890 +      *this = __x;
1474.891 +    } else {
1474.892 +      _M_current_pos = __x._M_current_pos;
1474.893 +      _M_root = __x._M_root;
1474.894 +      _M_buf_ptr = 0;
1474.895 +    }
1474.896 +  }
1474.897 +};
1474.898 +
1474.899 +template<class _CharT, class _Alloc> class _Rope_iterator;
1474.900 +
1474.901 +template<class _CharT, class _Alloc>
1474.902 +class _Rope_const_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
1474.903 +  friend class rope<_CharT,_Alloc>;
1474.904 +  typedef  _Rope_const_iterator<_CharT, _Alloc> _Self;
1474.905 +  typedef _Rope_iterator_base<_CharT,_Alloc> _Base;
1474.906 +  //  protected:
1474.907 +public:
1474.908 +#   ifndef _STLP_HAS_NO_NAMESPACES
1474.909 +  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1474.910 +  // The one from the base class may not be directly visible.
1474.911 +#   endif
1474.912 +  _Rope_const_iterator(const _RopeRep* __root, size_t __pos):
1474.913 +    _Rope_iterator_base<_CharT,_Alloc>(
1474.914 +                                       __CONST_CAST(_RopeRep*,__root), __pos)
1474.915 +    // Only nonconst iterators modify root ref count
1474.916 +  {}
1474.917 +public:
1474.918 +  typedef _CharT reference;   // Really a value.  Returning a reference
1474.919 +                                // Would be a mess, since it would have
1474.920 +                                // to be included in refcount.
1474.921 +  typedef const _CharT* pointer;
1474.922 +  typedef _CharT value_type;
1474.923 +  typedef ptrdiff_t difference_type;
1474.924 +  typedef random_access_iterator_tag iterator_category;
1474.925 +
1474.926 +public:
1474.927 +  _Rope_const_iterator() {};
1474.928 +  _Rope_const_iterator(const _Self& __x) :
1474.929 +    _Rope_iterator_base<_CharT,_Alloc>(__x) { }
1474.930 +  _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x): 
1474.931 +    _Rope_iterator_base<_CharT,_Alloc>(__x) {}
1474.932 +  _Rope_const_iterator(const rope<_CharT,_Alloc>& __r, size_t __pos) :
1474.933 +    _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr._M_data, __pos) {}
1474.934 +  _Self& operator= (const _Self& __x) {
1474.935 +    if (0 != __x._M_buf_ptr) {
1474.936 +      *(__STATIC_CAST(_Base*,this)) = __x;
1474.937 +    } else {
1474.938 +      this->_M_current_pos = __x._M_current_pos;
1474.939 +      this->_M_root = __x._M_root;
1474.940 +      this->_M_buf_ptr = 0;
1474.941 +    }
1474.942 +    return(*this);
1474.943 +  }
1474.944 +  reference operator*() {
1474.945 +    if (0 == this->_M_buf_ptr) _S_setcache(*this);
1474.946 +    return *(this->_M_buf_ptr);
1474.947 +  }
1474.948 +  _Self& operator++() {
1474.949 +    __GC_CONST _CharT* __next;
1474.950 +    if (0 != this->_M_buf_ptr && (__next = this->_M_buf_ptr + 1) < this->_M_buf_end) {
1474.951 +      this->_M_buf_ptr = __next;
1474.952 +      ++this->_M_current_pos;
1474.953 +    } else {
1474.954 +      this->_M_incr(1);
1474.955 +    }
1474.956 +    return *this;
1474.957 +  }
1474.958 +  _Self& operator+=(ptrdiff_t __n) {
1474.959 +    if (__n >= 0) {
1474.960 +      this->_M_incr(__n);
1474.961 +    } else {
1474.962 +      this->_M_decr(-__n);
1474.963 +    }
1474.964 +    return *this;
1474.965 +  }
1474.966 +  _Self& operator--() {
1474.967 +    this->_M_decr(1);
1474.968 +    return *this;
1474.969 +  }
1474.970 +  _Self& operator-=(ptrdiff_t __n) {
1474.971 +    if (__n >= 0) {
1474.972 +      this->_M_decr(__n);
1474.973 +    } else {
1474.974 +      this->_M_incr(-__n);
1474.975 +    }
1474.976 +    return *this;
1474.977 +  }
1474.978 +  _Self operator++(int) {
1474.979 +    size_t __old_pos = this->_M_current_pos;
1474.980 +    this->_M_incr(1);
1474.981 +    return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
1474.982 +    // This makes a subsequent dereference expensive.
1474.983 +    // Perhaps we should instead copy the iterator
1474.984 +    // if it has a valid cache?
1474.985 +  }
1474.986 +  _Self operator--(int) {
1474.987 +    size_t __old_pos = this->_M_current_pos;
1474.988 +    this->_M_decr(1);
1474.989 +    return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
1474.990 +  }
1474.991 +  inline reference operator[](size_t __n);
1474.992 +};
1474.993 +
1474.994 +template<class _CharT, class _Alloc>
1474.995 +class _Rope_iterator : public _Rope_iterator_base<_CharT,_Alloc> {
1474.996 +  friend class rope<_CharT,_Alloc>;
1474.997 +  typedef _Rope_iterator<_CharT, _Alloc> _Self;
1474.998 +  typedef _Rope_iterator_base<_CharT,_Alloc> _Base;
1474.999 +  typedef _Rope_RopeRep<_CharT,_Alloc> _RopeRep;
1474.1000 +  //  protected:
1474.1001 +public:
1474.1002 +  rope<_CharT,_Alloc>* _M_root_rope;
1474.1003 +  // root is treated as a cached version of this,
1474.1004 +  // and is used to detect changes to the underlying
1474.1005 +  // rope.
1474.1006 +  // Root is included in the reference count.
1474.1007 +  // This is necessary so that we can detect changes reliably.
1474.1008 +  // Unfortunately, it requires careful bookkeeping for the
1474.1009 +  // nonGC case.
1474.1010 +  _Rope_iterator(rope<_CharT,_Alloc>* __r, size_t __pos);
1474.1011 +  
1474.1012 +  void _M_check();
1474.1013 +public:
1474.1014 +  typedef _Rope_char_ref_proxy<_CharT,_Alloc>  reference;
1474.1015 +  typedef _Rope_char_ref_proxy<_CharT,_Alloc>* pointer;
1474.1016 +  typedef _CharT value_type;
1474.1017 +  typedef ptrdiff_t difference_type;
1474.1018 +  typedef random_access_iterator_tag iterator_category;
1474.1019 +public:
1474.1020 +  ~_Rope_iterator() 		//*TY 5/6/00 - added dtor to balance reference count
1474.1021 +  {
1474.1022 +    _RopeRep::_S_unref(this->_M_root);
1474.1023 +  }
1474.1024 +  
1474.1025 +  rope<_CharT,_Alloc>& container() { return *_M_root_rope; }
1474.1026 +  _Rope_iterator() {
1474.1027 +    this->_M_root = 0;  // Needed for reference counting.
1474.1028 +  };
1474.1029 +  _Rope_iterator(const  _Self& __x) :
1474.1030 +    _Rope_iterator_base<_CharT,_Alloc>(__x) {
1474.1031 +    _M_root_rope = __x._M_root_rope;
1474.1032 +    _RopeRep::_S_ref(this->_M_root);
1474.1033 +  }
1474.1034 +  _Rope_iterator(rope<_CharT,_Alloc>& __r, size_t __pos);
1474.1035 +  _Self& operator= (const  _Self& __x) {
1474.1036 +    _RopeRep* __old = this->_M_root;
1474.1037 +    
1474.1038 +    _RopeRep::_S_ref(__x._M_root);
1474.1039 +    if (0 != __x._M_buf_ptr) {
1474.1040 +      _M_root_rope = __x._M_root_rope;
1474.1041 +      *(__STATIC_CAST(_Base*,this)) = __x;
1474.1042 +    } else {
1474.1043 +      this->_M_current_pos = __x._M_current_pos;
1474.1044 +      this->_M_root = __x._M_root;
1474.1045 +      _M_root_rope = __x._M_root_rope;
1474.1046 +      this->_M_buf_ptr = 0;
1474.1047 +    }
1474.1048 +    _RopeRep::_S_unref(__old);
1474.1049 +    return(*this);
1474.1050 +  }
1474.1051 +  reference operator*() {
1474.1052 +    _M_check();
1474.1053 +    if (0 == this->_M_buf_ptr) {
1474.1054 +      return _Rope_char_ref_proxy<_CharT,_Alloc>(
1474.1055 +                                                 _M_root_rope, this->_M_current_pos);
1474.1056 +    } else {
1474.1057 +      return _Rope_char_ref_proxy<_CharT,_Alloc>(
1474.1058 +                                                 _M_root_rope, this->_M_current_pos, *(this->_M_buf_ptr));
1474.1059 +    }
1474.1060 +  }
1474.1061 +  _Self& operator++() {
1474.1062 +    this->_M_incr(1);
1474.1063 +    return *this;
1474.1064 +  }
1474.1065 +  _Self& operator+=(ptrdiff_t __n) {
1474.1066 +    if (__n >= 0) {
1474.1067 +      this->_M_incr(__n);
1474.1068 +    } else {
1474.1069 +      this->_M_decr(-__n);
1474.1070 +    }
1474.1071 +    return *this;
1474.1072 +  }
1474.1073 +  _Self& operator--() {
1474.1074 +    this->_M_decr(1);
1474.1075 +    return *this;
1474.1076 +  }
1474.1077 +  _Self& operator-=(ptrdiff_t __n) {
1474.1078 +    if (__n >= 0) {
1474.1079 +      this->_M_decr(__n);
1474.1080 +    } else {
1474.1081 +      this->_M_incr(-__n);
1474.1082 +    }
1474.1083 +    return *this;
1474.1084 +  }
1474.1085 +  _Self operator++(int) {
1474.1086 +    size_t __old_pos = this->_M_current_pos;
1474.1087 +    this->_M_incr(1);
1474.1088 +    return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
1474.1089 +  }
1474.1090 +  _Self operator--(int) {
1474.1091 +    size_t __old_pos = this->_M_current_pos;
1474.1092 +    this->_M_decr(1);
1474.1093 +    return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
1474.1094 +  }
1474.1095 +  reference operator[](ptrdiff_t __n) {
1474.1096 +    return _Rope_char_ref_proxy<_CharT,_Alloc>(
1474.1097 +                                               _M_root_rope, this->_M_current_pos + __n);
1474.1098 +  }
1474.1099 +};
1474.1100 +
1474.1101 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1474.1102 +template <class _CharT, class _Alloc>
1474.1103 +inline random_access_iterator_tag
1474.1104 +iterator_category(const _Rope_iterator<_CharT,_Alloc>&) {  return random_access_iterator_tag();}
1474.1105 +template <class _CharT, class _Alloc>
1474.1106 +inline _CharT* value_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; }
1474.1107 +template <class _CharT, class _Alloc>
1474.1108 +inline ptrdiff_t* distance_type(const _Rope_iterator<_CharT,_Alloc>&) { return 0; }
1474.1109 +template <class _CharT, class _Alloc>
1474.1110 +inline random_access_iterator_tag
1474.1111 +iterator_category(const _Rope_const_iterator<_CharT,_Alloc>&) { return random_access_iterator_tag(); }
1474.1112 +template <class _CharT, class _Alloc>
1474.1113 +inline _CharT* value_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; }
1474.1114 +template <class _CharT, class _Alloc>
1474.1115 +inline ptrdiff_t* distance_type(const _Rope_const_iterator<_CharT,_Alloc>&) { return 0; }
1474.1116 +#endif
1474.1117 +
1474.1118 +template <class _CharT, class _Alloc>
1474.1119 +class rope {
1474.1120 +  typedef rope<_CharT,_Alloc> _Self;
1474.1121 +public:
1474.1122 +  typedef _CharT value_type;
1474.1123 +  typedef ptrdiff_t difference_type;
1474.1124 +  typedef size_t size_type;
1474.1125 +  typedef _CharT const_reference;
1474.1126 +  typedef const _CharT* const_pointer;
1474.1127 +  typedef _Rope_iterator<_CharT,_Alloc> iterator;
1474.1128 +  typedef _Rope_const_iterator<_CharT,_Alloc> const_iterator;
1474.1129 +  typedef _Rope_char_ref_proxy<_CharT,_Alloc> reference;
1474.1130 +  typedef _Rope_char_ptr_proxy<_CharT,_Alloc> pointer;
1474.1131 +  
1474.1132 +  friend class _Rope_iterator<_CharT,_Alloc>;
1474.1133 +  friend class _Rope_const_iterator<_CharT,_Alloc>;
1474.1134 +  friend struct _Rope_RopeRep<_CharT,_Alloc>;
1474.1135 +  friend class _Rope_iterator_base<_CharT,_Alloc>;
1474.1136 +  friend class _Rope_char_ptr_proxy<_CharT,_Alloc>;
1474.1137 +  friend class _Rope_char_ref_proxy<_CharT,_Alloc>;
1474.1138 +  friend struct _Rope_RopeSubstring<_CharT,_Alloc>;
1474.1139 +
1474.1140 +  _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS;
1474.1141 +  
1474.1142 +protected:
1474.1143 +  typedef __GC_CONST _CharT* _Cstrptr;
1474.1144 +  
1474.1145 +  static _CharT _S_empty_c_str[1];
1474.1146 +  
1474.1147 +  static bool _S_is0(_CharT __c) { return __c == _S_eos((_CharT*)0); }
1474.1148 +  enum { _S_copy_max = 23 };
1474.1149 +  // For strings shorter than _S_copy_max, we copy to
1474.1150 +  // concatenate.
1474.1151 +  
1474.1152 +public:
1474.1153 +  typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
1474.1154 +  _STLP_FORCE_ALLOCATORS(_CharT, _Alloc)
1474.1155 +  typedef typename _Alloc_traits<_CharT,_Alloc>::allocator_type  allocator_type;
1474.1156 +  allocator_type get_allocator() const { return allocator_type(_M_tree_ptr); }
1474.1157 +public:
1474.1158 +  // The only data member of a rope:
1474.1159 +  _STLP_alloc_proxy<_RopeRep*, _CharT, allocator_type> _M_tree_ptr;
1474.1160 +
1474.1161 +  typedef _Rope_RopeConcatenation<_CharT,_Alloc> _RopeConcatenation;
1474.1162 +  typedef _Rope_RopeLeaf<_CharT,_Alloc> _RopeLeaf;
1474.1163 +  typedef _Rope_RopeFunction<_CharT,_Alloc> _RopeFunction;
1474.1164 +  typedef _Rope_RopeSubstring<_CharT,_Alloc> _RopeSubstring;
1474.1165 +
1474.1166 +
1474.1167 +
1474.1168 +  // Retrieve a character at the indicated position.
1474.1169 +  static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
1474.1170 +
1474.1171 +#       ifndef __GC
1474.1172 +  // Obtain a pointer to the character at the indicated position.
1474.1173 +  // The pointer can be used to change the character.
1474.1174 +  // If such a pointer cannot be produced, as is frequently the
1474.1175 +  // case, 0 is returned instead.
1474.1176 +  // (Returns nonzero only if all nodes in the path have a refcount
1474.1177 +  // of 1.)
1474.1178 +  static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
1474.1179 +#       endif
1474.1180 +
1474.1181 +  static bool _S_apply_to_pieces(
1474.1182 +                                // should be template parameter
1474.1183 +                                 _Rope_char_consumer<_CharT>& __c,
1474.1184 +                                 const _RopeRep* __r,
1474.1185 +                                 size_t __begin, size_t __end);
1474.1186 +                                // begin and end are assumed to be in range.
1474.1187 +
1474.1188 +#       ifndef __GC
1474.1189 +  static void _S_unref(_RopeRep* __t)
1474.1190 +  {
1474.1191 +    _RopeRep::_S_unref(__t);
1474.1192 +  }
1474.1193 +  static void _S_ref(_RopeRep* __t)
1474.1194 +  {
1474.1195 +    _RopeRep::_S_ref(__t);
1474.1196 +  }
1474.1197 +#       else /* __GC */
1474.1198 +  static void _S_unref(_RopeRep*) {}
1474.1199 +  static void _S_ref(_RopeRep*) {}
1474.1200 +#       endif
1474.1201 +
1474.1202 +
1474.1203 +#       ifdef __GC
1474.1204 +  typedef _Rope_RopeRep<_CharT,_Alloc>* _Self_destruct_ptr;
1474.1205 +#       else
1474.1206 +  typedef _Rope_self_destruct_ptr<_CharT,_Alloc> _Self_destruct_ptr;
1474.1207 +#       endif
1474.1208 +
1474.1209 +  // _Result is counted in refcount.
1474.1210 +  static _RopeRep* _S_substring(_RopeRep* __base,
1474.1211 +                                size_t __start, size_t __endp1);
1474.1212 +
1474.1213 +  static _RopeRep* _S_concat_char_iter(_RopeRep* __r,
1474.1214 +                                       const _CharT* __iter, size_t __slen);
1474.1215 +  // Concatenate rope and char ptr, copying __s.
1474.1216 +  // Should really take an arbitrary iterator.
1474.1217 +  // Result is counted in refcount.
1474.1218 +  static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r,
1474.1219 +                                             const _CharT* __iter, size_t __slen)
1474.1220 +    // As above, but one reference to __r is about to be
1474.1221 +    // destroyed.  Thus the pieces may be recycled if all
1474.1222 +    // relevent reference counts are 1.
1474.1223 +#           ifdef __GC
1474.1224 +    // We can't really do anything since refcounts are unavailable.
1474.1225 +  { return _S_concat_char_iter(__r, __iter, __slen); }
1474.1226 +#           else
1474.1227 +  ;
1474.1228 +#           endif
1474.1229 +
1474.1230 +  static _RopeRep* _S_concat_rep(_RopeRep* __left, _RopeRep* __right);
1474.1231 +  // General concatenation on _RopeRep.  _Result
1474.1232 +  // has refcount of 1.  Adjusts argument refcounts.
1474.1233 +
1474.1234 +public:
1474.1235 +  void apply_to_pieces( size_t __begin, size_t __end,
1474.1236 +                        _Rope_char_consumer<_CharT>& __c) const {
1474.1237 +    _S_apply_to_pieces(__c, _M_tree_ptr._M_data, __begin, __end);
1474.1238 +  }
1474.1239 +
1474.1240 +
1474.1241 +protected:
1474.1242 +
1474.1243 +  static size_t _S_rounded_up_size(size_t __n) {
1474.1244 +    return _RopeRep::_S_rounded_up_size(__n);
1474.1245 +  }
1474.1246 +
1474.1247 +  static size_t _S_allocated_capacity(size_t __n) {
1474.1248 +    if (_S_is_basic_char_type((_CharT*)0)) {
1474.1249 +      return _S_rounded_up_size(__n) - 1;
1474.1250 +    } else {
1474.1251 +      return _S_rounded_up_size(__n);
1474.1252 +    }
1474.1253 +  }
1474.1254 +                
1474.1255 +  // Allocate and construct a RopeLeaf using the supplied allocator
1474.1256 +  // Takes ownership of s instead of copying.
1474.1257 +  static _RopeLeaf* _S_new_RopeLeaf(__GC_CONST _CharT *__s,
1474.1258 +                                    size_t _p_size, allocator_type __a)
1474.1259 +  {
1474.1260 +   _RopeLeaf* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a, _RopeLeaf).allocate(1,(const void*)0);
1474.1261 +    _STLP_TRY {
1474.1262 +      _STLP_PLACEMENT_NEW(__space) _RopeLeaf(__s, _p_size, __a);
1474.1263 +    }
1474.1264 +   _STLP_UNWIND(_STLP_CREATE_ALLOCATOR(allocator_type,__a, 
1474.1265 +                                   _RopeLeaf).deallocate(__space, 1))
1474.1266 +	  return __space;
1474.1267 +  }
1474.1268 +
1474.1269 +  static _RopeConcatenation* _S_new_RopeConcatenation(
1474.1270 +                                                      _RopeRep* __left, _RopeRep* __right,
1474.1271 +                                                      allocator_type __a)
1474.1272 +  {
1474.1273 +   _RopeConcatenation* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a,
1474.1274 +                                                    _RopeConcatenation).allocate(1,(const void*)0);
1474.1275 +    return _STLP_PLACEMENT_NEW(__space) _RopeConcatenation(__left, __right, __a);
1474.1276 +  }
1474.1277 +
1474.1278 +  static _RopeFunction* _S_new_RopeFunction(char_producer<_CharT>* __f,
1474.1279 +                                            size_t _p_size, bool __d, allocator_type __a)
1474.1280 +  {
1474.1281 +   _RopeFunction* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a, 
1474.1282 +                                               _RopeFunction).allocate(1,(const void*)0);
1474.1283 +    return _STLP_PLACEMENT_NEW(__space) _RopeFunction(__f, _p_size, __d, __a);
1474.1284 +  }
1474.1285 +
1474.1286 +  static _RopeSubstring* _S_new_RopeSubstring(
1474.1287 +                                              _Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
1474.1288 +                                              size_t __l, allocator_type __a)
1474.1289 +  {
1474.1290 +   _RopeSubstring* __space = _STLP_CREATE_ALLOCATOR(allocator_type,__a, 
1474.1291 +                                                _RopeSubstring).allocate(1,(const void*)0);
1474.1292 +    return _STLP_PLACEMENT_NEW(__space) _RopeSubstring(__b, __s, __l, __a);
1474.1293 +  }
1474.1294 +
1474.1295 +#         define _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _p_size, __a) \
1474.1296 +                _S_RopeLeaf_from_unowned_char_ptr(__s, _p_size, __a)     
1474.1297 +
1474.1298 +  static
1474.1299 +  _RopeLeaf* _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
1474.1300 +                                               size_t _p_size, allocator_type __a)
1474.1301 +  {
1474.1302 +    if (0 == _p_size) return 0;
1474.1303 +
1474.1304 +   _CharT* __buf = _STLP_CREATE_ALLOCATOR(allocator_type,__a, _CharT).allocate(_S_rounded_up_size(_p_size));
1474.1305 +
1474.1306 +    uninitialized_copy_n(__s, _p_size, __buf);
1474.1307 +    _S_cond_store_eos(__buf[_p_size]);
1474.1308 +
1474.1309 +    _STLP_TRY {
1474.1310 +      return _S_new_RopeLeaf(__buf, _p_size, __a);
1474.1311 +    }
1474.1312 +    _STLP_UNWIND(_RopeRep::_S_free_string(__buf, _p_size, __a))
1474.1313 +            
1474.1314 +# if defined (_STLP_THROW_RETURN_BUG)
1474.1315 +      return 0;
1474.1316 +# endif
1474.1317 +  }
1474.1318 +            
1474.1319 +
1474.1320 +  // Concatenation of nonempty strings.
1474.1321 +  // Always builds a concatenation node.
1474.1322 +  // Rebalances if the result is too deep.
1474.1323 +  // Result has refcount 1.
1474.1324 +  // Does not increment left and right ref counts even though
1474.1325 +  // they are referenced.
1474.1326 +  static _RopeRep*
1474.1327 +  _S_tree_concat(_RopeRep* __left, _RopeRep* __right);
1474.1328 +
1474.1329 +  // Concatenation helper functions
1474.1330 +  static _RopeLeaf*
1474.1331 +  _S_leaf_concat_char_iter(_RopeLeaf* __r,
1474.1332 +                           const _CharT* __iter, size_t __slen);
1474.1333 +  // Concatenate by copying leaf.
1474.1334 +  // should take an arbitrary iterator
1474.1335 +  // result has refcount 1.
1474.1336 +#       ifndef __GC
1474.1337 +  static _RopeLeaf* _S_destr_leaf_concat_char_iter
1474.1338 +  (_RopeLeaf* __r, const _CharT* __iter, size_t __slen);
1474.1339 +  // A version that potentially clobbers __r if __r->_M_ref_count == 1.
1474.1340 +#       endif
1474.1341 +
1474.1342 +
1474.1343 +  // A helper function for exponentiating strings.
1474.1344 +  // This uses a nonstandard refcount convention.
1474.1345 +  // The result has refcount 0.
1474.1346 +  friend struct _Rope_Concat_fn<_CharT,_Alloc>;
1474.1347 +  typedef _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
1474.1348 +
1474.1349 +public:
1474.1350 +  static size_t _S_char_ptr_len(const _CharT* __s) {
1474.1351 +    const _CharT* __p = __s;
1474.1352 +	  
1474.1353 +    while (!_S_is0(*__p)) { ++__p; }
1474.1354 +    return (__p - __s);
1474.1355 +  }
1474.1356 +
1474.1357 +public: /* for operators */
1474.1358 +  rope(_RopeRep* __t, const allocator_type& __a = allocator_type())
1474.1359 +    : _M_tree_ptr(__a, __t) { }
1474.1360 +private:
1474.1361 +  // Copy __r to the _CharT buffer.
1474.1362 +  // Returns __buffer + __r->_M_size._M_data.
1474.1363 +  // Assumes that buffer is uninitialized.
1474.1364 +  static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
1474.1365 +
1474.1366 +  // Again, with explicit starting position and length.
1474.1367 +  // Assumes that buffer is uninitialized.
1474.1368 +  static _CharT* _S_flatten(_RopeRep* __r,
1474.1369 +                            size_t __start, size_t __len,
1474.1370 +                            _CharT* __buffer);
1474.1371 +
1474.1372 +  // fbp : HP aCC prohibits access to protected min_len from within static methods ( ?? )
1474.1373 +public:
1474.1374 +  static const unsigned long _S_min_len[46];
1474.1375 +protected:
1474.1376 +  static bool _S_is_balanced(_RopeRep* __r)
1474.1377 +  { return (__r->_M_size._M_data >= _S_min_len[__r->_M_depth]); }
1474.1378 +
1474.1379 +  static bool _S_is_almost_balanced(_RopeRep* __r)
1474.1380 +  { return (__r->_M_depth == 0 ||
1474.1381 +            __r->_M_size._M_data >= _S_min_len[__r->_M_depth - 1]); }
1474.1382 +
1474.1383 +  static bool _S_is_roughly_balanced(_RopeRep* __r)
1474.1384 +  { return (__r->_M_depth <= 1 ||
1474.1385 +            __r->_M_size._M_data >= _S_min_len[__r->_M_depth - 2]); }
1474.1386 +
1474.1387 +  // Assumes the result is not empty.
1474.1388 +  static _RopeRep* _S_concat_and_set_balanced(_RopeRep* __left,
1474.1389 +                                              _RopeRep* __right)
1474.1390 +  {
1474.1391 +    _RopeRep* __result = _S_concat_rep(__left, __right);
1474.1392 +    if (_S_is_balanced(__result)) __result->_M_is_balanced = true;
1474.1393 +    return __result;
1474.1394 +  }
1474.1395 +
1474.1396 +  // The basic rebalancing operation.  Logically copies the
1474.1397 +  // rope.  The result has refcount of 1.  The client will
1474.1398 +  // usually decrement the reference count of __r.
1474.1399 +  // The result is within height 2 of balanced by the above
1474.1400 +  // definition.
1474.1401 +  static _RopeRep* _S_balance(_RopeRep* __r);
1474.1402 +
1474.1403 +  // Add all unbalanced subtrees to the forest of balanceed trees.
1474.1404 +  // Used only by balance.
1474.1405 +  static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest);
1474.1406 +        
1474.1407 +  // Add __r to forest, assuming __r is already balanced.
1474.1408 +  static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest);
1474.1409 +
1474.1410 +  // Print to stdout, exposing structure
1474.1411 +  static void _S_dump(_RopeRep* __r, int __indent = 0);
1474.1412 +
1474.1413 +  // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp.
1474.1414 +  static int _S_compare(const _RopeRep* __x, const _RopeRep* __y);
1474.1415 +
1474.1416 +public:
1474.1417 +  bool empty() const { return 0 == _M_tree_ptr._M_data; }
1474.1418 +
1474.1419 +  // Comparison member function.  This is public only for those
1474.1420 +  // clients that need a ternary comparison.  Others
1474.1421 +  // should use the comparison operators below.
1474.1422 +  int compare(const _Self& __y) const {
1474.1423 +    return _S_compare(_M_tree_ptr._M_data, __y._M_tree_ptr._M_data);
1474.1424 +  }
1474.1425 +
1474.1426 +  rope(const _CharT* __s, const allocator_type& __a = allocator_type())
1474.1427 +    : _M_tree_ptr(__a, _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _S_char_ptr_len(__s),__a))
1474.1428 +  { }
1474.1429 +
1474.1430 +  rope(const _CharT* __s, size_t __len,
1474.1431 +       const allocator_type& __a = allocator_type())
1474.1432 +    : _M_tree_ptr(__a, (_STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __len, __a)))
1474.1433 +  { }
1474.1434 +
1474.1435 +  // Should perhaps be templatized with respect to the iterator type
1474.1436 +  // and use Sequence_buffer.  (It should perhaps use sequence_buffer
1474.1437 +  // even now.)
1474.1438 +  rope(const _CharT *__s, const _CharT *__e,
1474.1439 +       const allocator_type& __a = allocator_type())
1474.1440 +    : _M_tree_ptr(__a, _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __e - __s, __a))
1474.1441 +  { }
1474.1442 +
1474.1443 +  rope(const const_iterator& __s, const const_iterator& __e,
1474.1444 +       const allocator_type& __a = allocator_type())
1474.1445 +    : _M_tree_ptr(__a, _S_substring(__s._M_root, __s._M_current_pos,
1474.1446 +                                    __e._M_current_pos))
1474.1447 +  { }
1474.1448 +
1474.1449 +  rope(const iterator& __s, const iterator& __e,
1474.1450 +       const allocator_type& __a = allocator_type())
1474.1451 +    : _M_tree_ptr(__a, _S_substring(__s._M_root, __s._M_current_pos,
1474.1452 +                                    __e._M_current_pos))
1474.1453 +  { }
1474.1454 +
1474.1455 +  rope(_CharT __c, const allocator_type& __a = allocator_type())
1474.1456 +    : _M_tree_ptr(__a, (_RopeRep*)0)
1474.1457 +  {
1474.1458 +    _CharT* __buf = _M_tree_ptr.allocate(_S_rounded_up_size(1));
1474.1459 +
1474.1460 +    _Construct(__buf, __c);
1474.1461 +    _STLP_TRY {
1474.1462 +      _M_tree_ptr._M_data = _S_new_RopeLeaf(__buf, 1, __a);
1474.1463 +    }
1474.1464 +    _STLP_UNWIND(_RopeRep::_S_free_string(__buf, 1, __a))
1474.1465 +      }
1474.1466 +
1474.1467 +  rope(size_t __n, _CharT __c,     
1474.1468 +       const allocator_type& __a = allocator_type()):
1474.1469 +    _M_tree_ptr(__a, (_RopeRep*)0) {
1474.1470 +    rope<_CharT,_Alloc> __result;
1474.1471 +# define  __exponentiate_threshold size_t(32)
1474.1472 +    _RopeRep* __remainder;
1474.1473 +    rope<_CharT,_Alloc> __remainder_rope;
1474.1474 +	    
1474.1475 +    // gcc-2.7.2 bugs
1474.1476 +    typedef _Rope_Concat_fn<_CharT,_Alloc> _Concat_fn;
1474.1477 +	    
1474.1478 +    if (0 == __n)
1474.1479 +      return;
1474.1480 +	    
1474.1481 +    size_t __exponent = __n / __exponentiate_threshold;
1474.1482 +    size_t __rest = __n % __exponentiate_threshold;
1474.1483 +    if (0 == __rest) {
1474.1484 +      __remainder = 0;
1474.1485 +    } else {
1474.1486 +      _CharT* __rest_buffer = _M_tree_ptr.allocate(_S_rounded_up_size(__rest));
1474.1487 +      uninitialized_fill_n(__rest_buffer, __rest, __c);
1474.1488 +      _S_cond_store_eos(__rest_buffer[__rest]);
1474.1489 +      _STLP_TRY {
1474.1490 +		__remainder = _S_new_RopeLeaf(__rest_buffer, __rest, __a);
1474.1491 +      }
1474.1492 +      _STLP_UNWIND(_RopeRep::_S_free_string(__rest_buffer, __rest, __a))
1474.1493 +		}
1474.1494 +    __remainder_rope._M_tree_ptr._M_data = __remainder;
1474.1495 +    if (__exponent != 0) {
1474.1496 +      _CharT* __base_buffer =
1474.1497 +		_M_tree_ptr.allocate(_S_rounded_up_size(__exponentiate_threshold));
1474.1498 +      _RopeLeaf* __base_leaf;
1474.1499 +      rope<_CharT,_Alloc> __base_rope;
1474.1500 +      uninitialized_fill_n(__base_buffer, __exponentiate_threshold, __c);
1474.1501 +      _S_cond_store_eos(__base_buffer[__exponentiate_threshold]);
1474.1502 +      _STLP_TRY {
1474.1503 +		__base_leaf = _S_new_RopeLeaf(__base_buffer,
1474.1504 +                                      __exponentiate_threshold, __a);
1474.1505 +      }
1474.1506 +      _STLP_UNWIND(_RopeRep::_S_free_string(__base_buffer, 
1474.1507 +                                            __exponentiate_threshold, __a))
1474.1508 +		__base_rope._M_tree_ptr._M_data = __base_leaf;
1474.1509 +      if (1 == __exponent) {
1474.1510 +		__result = __base_rope;
1474.1511 +#         ifndef __GC
1474.1512 +		_STLP_ASSERT(2 == __result._M_tree_ptr._M_data->_M_ref_count)
1474.1513 +		// One each for base_rope and __result
1474.1514 +#         endif
1474.1515 +      } else {
1474.1516 +		__result = power(__base_rope, __exponent, _Concat_fn());
1474.1517 +      }
1474.1518 +      if (0 != __remainder) {
1474.1519 +		__result += __remainder_rope;
1474.1520 +      }
1474.1521 +    } else {
1474.1522 +      __result = __remainder_rope;
1474.1523 +    }
1474.1524 +    _M_tree_ptr._M_data = __result._M_tree_ptr._M_data;
1474.1525 +    _M_tree_ptr._M_data->_M_ref_nonnil();
1474.1526 +# undef __exponentiate_threshold
1474.1527 +  }
1474.1528 +
1474.1529 +  rope(const allocator_type& __a = allocator_type())
1474.1530 +    : _M_tree_ptr(__a, (_RopeRep*)0) {}
1474.1531 +
1474.1532 +  // Construct a rope from a function that can compute its members
1474.1533 +  rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
1474.1534 +       const allocator_type& __a = allocator_type())
1474.1535 +    : _M_tree_ptr(__a, (_RopeRep*)0)
1474.1536 +  {
1474.1537 +    _M_tree_ptr._M_data = (0 == __len) ?
1474.1538 +      0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a);
1474.1539 +  }
1474.1540 +
1474.1541 +  rope(const _Self& __x)
1474.1542 +    : _M_tree_ptr(__x.get_allocator(), __x._M_tree_ptr._M_data)
1474.1543 +  {
1474.1544 +    _S_ref(_M_tree_ptr._M_data);
1474.1545 +  }
1474.1546 +
1474.1547 +  ~rope()
1474.1548 +  {
1474.1549 +    _S_unref(_M_tree_ptr._M_data);
1474.1550 +  }
1474.1551 +
1474.1552 +  _Self& operator=(const _Self& __x)
1474.1553 +  {
1474.1554 +    _RopeRep* __old = _M_tree_ptr._M_data;
1474.1555 +    _STLP_ASSERT(get_allocator() == __x.get_allocator())
1474.1556 +    _M_tree_ptr._M_data = __x._M_tree_ptr._M_data;
1474.1557 +    _S_ref(_M_tree_ptr._M_data);
1474.1558 +    _S_unref(__old);
1474.1559 +    return(*this);
1474.1560 +  }
1474.1561 +  void clear()
1474.1562 +  {
1474.1563 +    _S_unref(_M_tree_ptr._M_data);
1474.1564 +    _M_tree_ptr._M_data = 0;
1474.1565 +  }
1474.1566 +  void push_back(_CharT __x)
1474.1567 +  {
1474.1568 +    _RopeRep* __old = _M_tree_ptr._M_data;
1474.1569 +    _M_tree_ptr._M_data = _S_destr_concat_char_iter(_M_tree_ptr._M_data, &__x, 1);
1474.1570 +    _S_unref(__old);
1474.1571 +  }
1474.1572 +
1474.1573 +  void pop_back()
1474.1574 +  {
1474.1575 +    _RopeRep* __old = _M_tree_ptr._M_data;
1474.1576 +    _M_tree_ptr._M_data = 
1474.1577 +      _S_substring(_M_tree_ptr._M_data, 0, _M_tree_ptr._M_data->_M_size._M_data - 1);
1474.1578 +    _S_unref(__old);
1474.1579 +  }
1474.1580 +
1474.1581 +  _CharT back() const
1474.1582 +  {
1474.1583 +    return _S_fetch(_M_tree_ptr._M_data, _M_tree_ptr._M_data->_M_size._M_data - 1);
1474.1584 +  }
1474.1585 +
1474.1586 +  void push_front(_CharT __x)
1474.1587 +  {
1474.1588 +    _RopeRep* __old = _M_tree_ptr._M_data;
1474.1589 +    _RopeRep* __left =
1474.1590 +      _STLP_ROPE_FROM_UNOWNED_CHAR_PTR(&__x, 1, get_allocator());
1474.1591 +    _STLP_TRY {
1474.1592 +      _M_tree_ptr._M_data = _S_concat_rep(__left, _M_tree_ptr._M_data);
1474.1593 +      _S_unref(__old);
1474.1594 +      _S_unref(__left);
1474.1595 +    }
1474.1596 +    _STLP_UNWIND(_S_unref(__left))
1474.1597 +      }
1474.1598 +
1474.1599 +  void pop_front()
1474.1600 +  {
1474.1601 +    _RopeRep* __old = _M_tree_ptr._M_data;
1474.1602 +    _M_tree_ptr._M_data = _S_substring(_M_tree_ptr._M_data, 1, _M_tree_ptr._M_data->_M_size._M_data);
1474.1603 +    _S_unref(__old);
1474.1604 +  }
1474.1605 +
1474.1606 +  _CharT front() const
1474.1607 +  {
1474.1608 +    return _S_fetch(_M_tree_ptr._M_data, 0);
1474.1609 +  }
1474.1610 +
1474.1611 +  void balance()
1474.1612 +  {
1474.1613 +    _RopeRep* __old = _M_tree_ptr._M_data;
1474.1614 +    _M_tree_ptr._M_data = _S_balance(_M_tree_ptr._M_data);
1474.1615 +    _S_unref(__old);
1474.1616 +  }
1474.1617 +
1474.1618 +  void copy(_CharT* __buffer) const {
1474.1619 +    _STLP_STD::_Destroy(__buffer, __buffer + size());
1474.1620 +    _S_flatten(_M_tree_ptr._M_data, __buffer);
1474.1621 +  }
1474.1622 +
1474.1623 +  // This is the copy function from the standard, but
1474.1624 +  // with the arguments reordered to make it consistent with the
1474.1625 +  // rest of the interface.
1474.1626 +  // Note that this guaranteed not to compile if the draft standard
1474.1627 +  // order is assumed.
1474.1628 +  size_type copy(size_type __pos, size_type __n, _CharT* __buffer) const 
1474.1629 +  {
1474.1630 +    size_t _p_size = size();
1474.1631 +    size_t __len = (__pos + __n > _p_size? _p_size - __pos : __n);
1474.1632 +
1474.1633 +    _STLP_STD::_Destroy(__buffer, __buffer + __len);
1474.1634 +    _S_flatten(_M_tree_ptr._M_data, __pos, __len, __buffer);
1474.1635 +    return __len;
1474.1636 +  }
1474.1637 +
1474.1638 +  // Print to stdout, exposing structure.  May be useful for
1474.1639 +  // performance debugging.
1474.1640 +  void dump() {
1474.1641 +    _S_dump(_M_tree_ptr._M_data);
1474.1642 +  }
1474.1643 +
1474.1644 +  // Convert to 0 terminated string in new allocated memory.
1474.1645 +  // Embedded 0s in the input do not terminate the copy.
1474.1646 +  const _CharT* c_str() const;
1474.1647 +
1474.1648 +  // As above, but lso use the flattened representation as the
1474.1649 +  // the new rope representation.
1474.1650 +  const _CharT* replace_with_c_str();
1474.1651 +
1474.1652 +  // Reclaim memory for the c_str generated flattened string.
1474.1653 +  // Intentionally undocumented, since it's hard to say when this
1474.1654 +  // is safe for multiple threads.
1474.1655 +  void delete_c_str () {
1474.1656 +    if (0 == _M_tree_ptr._M_data) return;
1474.1657 +    if (_RopeRep::_S_leaf == _M_tree_ptr._M_data->_M_tag && 
1474.1658 +        ((_RopeLeaf*)_M_tree_ptr._M_data)->_M_data == 
1474.1659 +        _M_tree_ptr._M_data->_M_c_string) {
1474.1660 +      // Representation shared
1474.1661 +      return;
1474.1662 +    }
1474.1663 +#           ifndef __GC
1474.1664 +    _M_tree_ptr._M_data->_M_free_c_string();
1474.1665 +#           endif
1474.1666 +    _M_tree_ptr._M_data->_M_c_string = 0;
1474.1667 +  }
1474.1668 +
1474.1669 +  _CharT operator[] (size_type __pos) const {
1474.1670 +    return _S_fetch(_M_tree_ptr._M_data, __pos);
1474.1671 +  }
1474.1672 +
1474.1673 +  _CharT at(size_type __pos) const {
1474.1674 +    // if (__pos >= size()) throw out_of_range;  // XXX
1474.1675 +    return (*this)[__pos];
1474.1676 +  }
1474.1677 +
1474.1678 +  const_iterator begin() const {
1474.1679 +    return(const_iterator(_M_tree_ptr._M_data, 0));
1474.1680 +  }
1474.1681 +
1474.1682 +  // An easy way to get a const iterator from a non-const container.
1474.1683 +  const_iterator const_begin() const {
1474.1684 +    return(const_iterator(_M_tree_ptr._M_data, 0));
1474.1685 +  }
1474.1686 +
1474.1687 +  const_iterator end() const {
1474.1688 +    return(const_iterator(_M_tree_ptr._M_data, size()));
1474.1689 +  }
1474.1690 +
1474.1691 +  const_iterator const_end() const {
1474.1692 +    return(const_iterator(_M_tree_ptr._M_data, size()));
1474.1693 +  }
1474.1694 +
1474.1695 +  size_type size() const { 
1474.1696 +    return(0 == _M_tree_ptr._M_data? 0 : _M_tree_ptr._M_data->_M_size._M_data);
1474.1697 +  }
1474.1698 +
1474.1699 +  size_type length() const {
1474.1700 +    return size();
1474.1701 +  }
1474.1702 +
1474.1703 +  size_type max_size() const {
1474.1704 +    return _S_min_len[__ROPE_MAX_DEPTH-1] - 1;
1474.1705 +    //  Guarantees that the result can be sufficirntly
1474.1706 +    //  balanced.  Longer ropes will probably still work,
1474.1707 +    //  but it's harder to make guarantees.
1474.1708 +  }
1474.1709 +
1474.1710 +  const_reverse_iterator rbegin() const {
1474.1711 +    return const_reverse_iterator(end());
1474.1712 +  }
1474.1713 +
1474.1714 +  const_reverse_iterator const_rbegin() const {
1474.1715 +    return const_reverse_iterator(end());
1474.1716 +  }
1474.1717 +
1474.1718 +  const_reverse_iterator rend() const {
1474.1719 +    return const_reverse_iterator(begin());
1474.1720 +  }
1474.1721 +
1474.1722 +  const_reverse_iterator const_rend() const {
1474.1723 +    return const_reverse_iterator(begin());
1474.1724 +  }
1474.1725 +  // The symmetric cases are intentionally omitted, since they're presumed
1474.1726 +  // to be less common, and we don't handle them as well.
1474.1727 +
1474.1728 +  // The following should really be templatized.
1474.1729 +  // The first argument should be an input iterator or
1474.1730 +  // forward iterator with value_type _CharT.
1474.1731 +  _Self& append(const _CharT* __iter, size_t __n) {
1474.1732 +    _RopeRep* __result = 
1474.1733 +      _S_destr_concat_char_iter(_M_tree_ptr._M_data, __iter, __n);
1474.1734 +    _S_unref(_M_tree_ptr._M_data);
1474.1735 +    _M_tree_ptr._M_data = __result;
1474.1736 +    return *this;
1474.1737 +  }
1474.1738 +
1474.1739 +  _Self& append(const _CharT* __c_string) {
1474.1740 +    size_t __len = _S_char_ptr_len(__c_string);
1474.1741 +    append(__c_string, __len);
1474.1742 +    return(*this);
1474.1743 +  }
1474.1744 +
1474.1745 +  _Self& append(const _CharT* __s, const _CharT* __e) {
1474.1746 +    _RopeRep* __result =
1474.1747 +      _S_destr_concat_char_iter(_M_tree_ptr._M_data, __s, __e - __s);
1474.1748 +    _S_unref(_M_tree_ptr._M_data);
1474.1749 +    _M_tree_ptr._M_data = __result;
1474.1750 +    return *this;
1474.1751 +  }
1474.1752 +
1474.1753 +  _Self& append(const_iterator __s, const_iterator __e) {
1474.1754 +    _STLP_ASSERT(__s._M_root == __e._M_root)
1474.1755 +    _STLP_ASSERT(get_allocator() == __s._M_root->get_allocator())
1474.1756 +    _Self_destruct_ptr __appendee(_S_substring(
1474.1757 +                                               __s._M_root, __s._M_current_pos, __e._M_current_pos));
1474.1758 +    _RopeRep* __result = 
1474.1759 +      _S_concat_rep(_M_tree_ptr._M_data, (_RopeRep*)__appendee);
1474.1760 +    _S_unref(_M_tree_ptr._M_data);
1474.1761 +    _M_tree_ptr._M_data = __result;
1474.1762 +    return *this;
1474.1763 +  }
1474.1764 +
1474.1765 +  _Self& append(_CharT __c) {
1474.1766 +    _RopeRep* __result = 
1474.1767 +      _S_destr_concat_char_iter(_M_tree_ptr._M_data, &__c, 1);
1474.1768 +    _S_unref(_M_tree_ptr._M_data);
1474.1769 +    _M_tree_ptr._M_data = __result;
1474.1770 +    return *this;
1474.1771 +  }
1474.1772 +
1474.1773 +  _Self& append() { return append(_CharT()); }  // XXX why?
1474.1774 +
1474.1775 +  _Self& append(const _Self& __y) {
1474.1776 +    _STLP_ASSERT(__y.get_allocator() == get_allocator())
1474.1777 +    _RopeRep* __result = _S_concat_rep(_M_tree_ptr._M_data, __y._M_tree_ptr._M_data);
1474.1778 +    _S_unref(_M_tree_ptr._M_data);
1474.1779 +    _M_tree_ptr._M_data = __result;
1474.1780 +    return *this;
1474.1781 +  }
1474.1782 +
1474.1783 +  _Self& append(size_t __n, _CharT __c) {
1474.1784 +    rope<_CharT,_Alloc> __last(__n, __c);
1474.1785 +    return append(__last);
1474.1786 +  }
1474.1787 +
1474.1788 +  void swap(_Self& __b) {
1474.1789 +    _STLP_ASSERT(get_allocator() == __b.get_allocator())
1474.1790 +    _RopeRep* __tmp = _M_tree_ptr._M_data;
1474.1791 +    _M_tree_ptr._M_data = __b._M_tree_ptr._M_data;
1474.1792 +    __b._M_tree_ptr._M_data = __tmp;
1474.1793 +  }
1474.1794 +
1474.1795 +
1474.1796 +protected:
1474.1797 +  // Result is included in refcount.
1474.1798 +  static _RopeRep* replace(_RopeRep* __old, size_t __pos1,
1474.1799 +                           size_t __pos2, _RopeRep* __r) {
1474.1800 +    if (0 == __old) { _S_ref(__r); return __r; }
1474.1801 +    _Self_destruct_ptr __left(
1474.1802 +                              _S_substring(__old, 0, __pos1));
1474.1803 +    _Self_destruct_ptr __right(
1474.1804 +                               _S_substring(__old, __pos2, __old->_M_size._M_data));
1474.1805 +	_STLP_MPWFIX_TRY	//*TY 06/01/2000 - 
1474.1806 +    _RopeRep* __result;
1474.1807 +
1474.1808 +    if (0 == __r) {
1474.1809 +      __result = _S_concat_rep(__left, __right);
1474.1810 +    } else {
1474.1811 +      _STLP_ASSERT(__old->get_allocator() == __r->get_allocator())
1474.1812 +      _Self_destruct_ptr __left_result(_S_concat_rep(__left, __r));
1474.1813 +      __result = _S_concat_rep(__left_result, __right);
1474.1814 +    }
1474.1815 +    return __result;
1474.1816 +	_STLP_MPWFIX_CATCH	//*TY 06/01/2000 - 
1474.1817 +  }
1474.1818 +
1474.1819 +public:
1474.1820 +  void insert(size_t __p, const _Self& __r) {
1474.1821 +    _RopeRep* __result = 
1474.1822 +      replace(_M_tree_ptr._M_data, __p, __p, __r._M_tree_ptr._M_data);
1474.1823 +    _STLP_ASSERT(get_allocator() == __r.get_allocator())
1474.1824 +    _S_unref(_M_tree_ptr._M_data);
1474.1825 +    _M_tree_ptr._M_data = __result;
1474.1826 +  }
1474.1827 +
1474.1828 +  void insert(size_t __p, size_t __n, _CharT __c) {
1474.1829 +    rope<_CharT,_Alloc> __r(__n,__c);
1474.1830 +    insert(__p, __r);
1474.1831 +  }
1474.1832 +
1474.1833 +  void insert(size_t __p, const _CharT* __i, size_t __n) {
1474.1834 +    _Self_destruct_ptr __left(_S_substring(_M_tree_ptr._M_data, 0, __p));
1474.1835 +    _Self_destruct_ptr __right(_S_substring(_M_tree_ptr._M_data, __p, size()));
1474.1836 +    _Self_destruct_ptr __left_result(
1474.1837 +                                     _S_concat_char_iter(__left, __i, __n));
1474.1838 +    // _S_ destr_concat_char_iter should be safe here.
1474.1839 +    // But as it stands it's probably not a win, since __left
1474.1840 +    // is likely to have additional references.
1474.1841 +    _RopeRep* __result = _S_concat_rep(__left_result, __right);
1474.1842 +    _S_unref(_M_tree_ptr._M_data);
1474.1843 +    _M_tree_ptr._M_data = __result;
1474.1844 +  }
1474.1845 +
1474.1846 +  void insert(size_t __p, const _CharT* __c_string) {
1474.1847 +    insert(__p, __c_string, _S_char_ptr_len(__c_string));
1474.1848 +  }
1474.1849 +
1474.1850 +  void insert(size_t __p, _CharT __c) {
1474.1851 +    insert(__p, &__c, 1);
1474.1852 +  }
1474.1853 +
1474.1854 +  void insert(size_t __p) {
1474.1855 +    _CharT __c = _CharT();
1474.1856 +    insert(__p, &__c, 1);
1474.1857 +  }
1474.1858 +
1474.1859 +  void insert(size_t __p, const _CharT* __i, const _CharT* __j) {
1474.1860 +    _Self __r(__i, __j);
1474.1861 +    insert(__p, __r);
1474.1862 +  }
1474.1863 +
1474.1864 +  void insert(size_t __p, const const_iterator& __i,
1474.1865 +              const const_iterator& __j) {
1474.1866 +    _Self __r(__i, __j);
1474.1867 +    insert(__p, __r);
1474.1868 +  }
1474.1869 +
1474.1870 +  void insert(size_t __p, const iterator& __i,
1474.1871 +              const iterator& __j) {
1474.1872 +    _Self __r(__i, __j);
1474.1873 +    insert(__p, __r);
1474.1874 +  }
1474.1875 +
1474.1876 +  // (position, length) versions of replace operations:
1474.1877 +
1474.1878 +  void replace(size_t __p, size_t __n, const _Self& __r) {
1474.1879 +    _RopeRep* __result = 
1474.1880 +      replace(_M_tree_ptr._M_data, __p, __p + __n, __r._M_tree_ptr._M_data);
1474.1881 +    _S_unref(_M_tree_ptr._M_data);
1474.1882 +    _M_tree_ptr._M_data = __result;
1474.1883 +  }
1474.1884 +
1474.1885 +  void replace(size_t __p, size_t __n, 
1474.1886 +               const _CharT* __i, size_t __i_len) {
1474.1887 +    _Self __r(__i, __i_len);
1474.1888 +    replace(__p, __n, __r);
1474.1889 +  }
1474.1890 +
1474.1891 +  void replace(size_t __p, size_t __n, _CharT __c) {
1474.1892 +    _Self __r(__c);
1474.1893 +    replace(__p, __n, __r);
1474.1894 +  }
1474.1895 +
1474.1896 +  void replace(size_t __p, size_t __n, const _CharT* __c_string) {
1474.1897 +    _Self __r(__c_string);
1474.1898 +    replace(__p, __n, __r);
1474.1899 +  }
1474.1900 +
1474.1901 +  void replace(size_t __p, size_t __n, 
1474.1902 +               const _CharT* __i, const _CharT* __j) {
1474.1903 +    _Self __r(__i, __j);
1474.1904 +    replace(__p, __n, __r);
1474.1905 +  }
1474.1906 +
1474.1907 +  void replace(size_t __p, size_t __n,
1474.1908 +               const const_iterator& __i, const const_iterator& __j) {
1474.1909 +    _Self __r(__i, __j);
1474.1910 +    replace(__p, __n, __r);
1474.1911 +  }
1474.1912 +
1474.1913 +  void replace(size_t __p, size_t __n,
1474.1914 +               const iterator& __i, const iterator& __j) {
1474.1915 +    _Self __r(__i, __j);
1474.1916 +    replace(__p, __n, __r);
1474.1917 +  }
1474.1918 +
1474.1919 +  // Single character variants:
1474.1920 +  void replace(size_t __p, _CharT __c) {
1474.1921 +    iterator __i(this, __p);
1474.1922 +    *__i = __c;
1474.1923 +  }
1474.1924 +
1474.1925 +  void replace(size_t __p, const _Self& __r) {
1474.1926 +    replace(__p, 1, __r);
1474.1927 +  }
1474.1928 +
1474.1929 +  void replace(size_t __p, const _CharT* __i, size_t __i_len) {
1474.1930 +    replace(__p, 1, __i, __i_len);
1474.1931 +  }
1474.1932 +
1474.1933 +  void replace(size_t __p, const _CharT* __c_string) {
1474.1934 +    replace(__p, 1, __c_string);
1474.1935 +  }
1474.1936 +
1474.1937 +  void replace(size_t __p, const _CharT* __i, const _CharT* __j) {
1474.1938 +    replace(__p, 1, __i, __j);
1474.1939 +  }
1474.1940 +
1474.1941 +  void replace(size_t __p, const const_iterator& __i,
1474.1942 +               const const_iterator& __j) {
1474.1943 +    replace(__p, 1, __i, __j);
1474.1944 +  }
1474.1945 +
1474.1946 +  void replace(size_t __p, const iterator& __i,
1474.1947 +               const iterator& __j) {
1474.1948 +    replace(__p, 1, __i, __j);
1474.1949 +  }
1474.1950 +
1474.1951 +  // Erase, (position, size) variant.
1474.1952 +  void erase(size_t __p, size_t __n) {
1474.1953 +    _RopeRep* __result = replace(_M_tree_ptr._M_data, __p, __p + __n, 0);
1474.1954 +    _S_unref(_M_tree_ptr._M_data);
1474.1955 +    _M_tree_ptr._M_data = __result;
1474.1956 +  }
1474.1957 +
1474.1958 +  // Erase, single character
1474.1959 +  void erase(size_t __p) {
1474.1960 +    erase(__p, __p + 1);
1474.1961 +  }
1474.1962 +
1474.1963 +  // Insert, iterator variants.  
1474.1964 +  iterator insert(const iterator& __p, const _Self& __r)
1474.1965 +  { insert(__p.index(), __r); return __p; }
1474.1966 +  iterator insert(const iterator& __p, size_t __n, _CharT __c)
1474.1967 +  { insert(__p.index(), __n, __c); return __p; }
1474.1968 +  iterator insert(const iterator& __p, _CharT __c) 
1474.1969 +  { insert(__p.index(), __c); return __p; }
1474.1970 +  iterator insert(const iterator& __p ) 
1474.1971 +  { insert(__p.index()); return __p; }
1474.1972 +  iterator insert(const iterator& __p, const _CharT* c_string) 
1474.1973 +  { insert(__p.index(), c_string); return __p; }
1474.1974 +  iterator insert(const iterator& __p, const _CharT* __i, size_t __n)
1474.1975 +  { insert(__p.index(), __i, __n); return __p; }
1474.1976 +  iterator insert(const iterator& __p, const _CharT* __i, 
1474.1977 +                  const _CharT* __j)
1474.1978 +  { insert(__p.index(), __i, __j);  return __p; }
1474.1979 +  iterator insert(const iterator& __p,
1474.1980 +                  const const_iterator& __i, const const_iterator& __j)
1474.1981 +  { insert(__p.index(), __i, __j); return __p; }
1474.1982 +  iterator insert(const iterator& __p,
1474.1983 +                  const iterator& __i, const iterator& __j)
1474.1984 +  { insert(__p.index(), __i, __j); return __p; }
1474.1985 +
1474.1986 +  // Replace, range variants.
1474.1987 +  void replace(const iterator& __p, const iterator& __q,
1474.1988 +               const _Self& __r)
1474.1989 +  { replace(__p.index(), __q.index() - __p.index(), __r); }
1474.1990 +  void replace(const iterator& __p, const iterator& __q, _CharT __c)
1474.1991 +  { replace(__p.index(), __q.index() - __p.index(), __c); }
1474.1992 +  void replace(const iterator& __p, const iterator& __q,
1474.1993 +               const _CharT* __c_string)
1474.1994 +  { replace(__p.index(), __q.index() - __p.index(), __c_string); }
1474.1995 +  void replace(const iterator& __p, const iterator& __q,
1474.1996 +               const _CharT* __i, size_t __n)
1474.1997 +  { replace(__p.index(), __q.index() - __p.index(), __i, __n); }
1474.1998 +  void replace(const iterator& __p, const iterator& __q,
1474.1999 +               const _CharT* __i, const _CharT* __j)
1474.2000 +  { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
1474.2001 +  void replace(const iterator& __p, const iterator& __q,
1474.2002 +               const const_iterator& __i, const const_iterator& __j)
1474.2003 +  { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
1474.2004 +  void replace(const iterator& __p, const iterator& __q,
1474.2005 +               const iterator& __i, const iterator& __j)
1474.2006 +  { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
1474.2007 +
1474.2008 +  // Replace, iterator variants.
1474.2009 +  void replace(const iterator& __p, const _Self& __r)
1474.2010 +  { replace(__p.index(), __r); }
1474.2011 +  void replace(const iterator& __p, _CharT __c)
1474.2012 +  { replace(__p.index(), __c); }
1474.2013 +  void replace(const iterator& __p, const _CharT* __c_string)
1474.2014 +  { replace(__p.index(), __c_string); }
1474.2015 +  void replace(const iterator& __p, const _CharT* __i, size_t __n)
1474.2016 +  { replace(__p.index(), __i, __n); }
1474.2017 +  void replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
1474.2018 +  { replace(__p.index(), __i, __j); }
1474.2019 +  void replace(const iterator& __p, const_iterator __i, 
1474.2020 +               const_iterator __j)
1474.2021 +  { replace(__p.index(), __i, __j); }
1474.2022 +  void replace(const iterator& __p, iterator __i, iterator __j)
1474.2023 +  { replace(__p.index(), __i, __j); }
1474.2024 +
1474.2025 +  // Iterator and range variants of erase
1474.2026 +  iterator erase(const iterator& __p, const iterator& __q) {
1474.2027 +    size_t __p_index = __p.index();
1474.2028 +    erase(__p_index, __q.index() - __p_index);
1474.2029 +    return iterator(this, __p_index);
1474.2030 +  }
1474.2031 +  iterator erase(const iterator& __p) {
1474.2032 +    size_t __p_index = __p.index();
1474.2033 +    erase(__p_index, 1);
1474.2034 +    return iterator(this, __p_index);
1474.2035 +  }
1474.2036 +
1474.2037 +  _Self substr(size_t __start, size_t __len = 1) const {
1474.2038 +    return rope<_CharT,_Alloc>(
1474.2039 +                               _S_substring(_M_tree_ptr._M_data, __start, __start + __len));
1474.2040 +  }
1474.2041 +
1474.2042 +  _Self substr(iterator __start, iterator __end) const {
1474.2043 +    return rope<_CharT,_Alloc>(
1474.2044 +                               _S_substring(_M_tree_ptr._M_data, __start.index(), __end.index()));
1474.2045 +  }
1474.2046 +        
1474.2047 +  _Self substr(iterator __start) const {
1474.2048 +    size_t __pos = __start.index();
1474.2049 +    return rope<_CharT,_Alloc>(
1474.2050 +                               _S_substring(_M_tree_ptr._M_data, __pos, __pos + 1));
1474.2051 +  }
1474.2052 +        
1474.2053 +  _Self substr(const_iterator __start, const_iterator __end) const {
1474.2054 +    // This might eventually take advantage of the cache in the
1474.2055 +    // iterator.
1474.2056 +    return rope<_CharT,_Alloc>(
1474.2057 +                               _S_substring(_M_tree_ptr._M_data, __start.index(), __end.index()));
1474.2058 +  }
1474.2059 +
1474.2060 +  rope<_CharT,_Alloc> substr(const_iterator __start) {
1474.2061 +    size_t __pos = __start.index();
1474.2062 +    return rope<_CharT,_Alloc>(
1474.2063 +                               _S_substring(_M_tree_ptr._M_data, __pos, __pos + 1));
1474.2064 +  }
1474.2065 +
1474.2066 +  enum { npos = -1 };
1474.2067 +
1474.2068 +  //         static const size_type npos;
1474.2069 +
1474.2070 +  size_type find(_CharT __c, size_type __pos = 0) const;
1474.2071 +  size_type find(const _CharT* __s, size_type __pos = 0) const {
1474.2072 +    size_type __result_pos;
1474.2073 +    const_iterator __result = search(const_begin() + (ptrdiff_t)__pos, const_end(),
1474.2074 +                                     __s, __s + _S_char_ptr_len(__s));
1474.2075 +    __result_pos = __result.index();
1474.2076 +#           ifndef _STLP_OLD_ROPE_SEMANTICS
1474.2077 +    if (__result_pos == size()) __result_pos = npos;
1474.2078 +#           endif
1474.2079 +    return __result_pos;
1474.2080 +  }
1474.2081 +
1474.2082 +  iterator mutable_begin() {
1474.2083 +    return(iterator(this, 0));
1474.2084 +  }
1474.2085 +
1474.2086 +  iterator mutable_end() {
1474.2087 +    return(iterator(this, size()));
1474.2088 +  }
1474.2089 +
1474.2090 +  reverse_iterator mutable_rbegin() {
1474.2091 +    return reverse_iterator(mutable_end());
1474.2092 +  }
1474.2093 +
1474.2094 +  reverse_iterator mutable_rend() {
1474.2095 +    return reverse_iterator(mutable_begin());
1474.2096 +  }
1474.2097 +
1474.2098 +  reference mutable_reference_at(size_type __pos) {
1474.2099 +    return reference(this, __pos);
1474.2100 +  }
1474.2101 +
1474.2102 +#       ifdef __STD_STUFF
1474.2103 +  reference operator[] (size_type __pos) {
1474.2104 +    return reference(this, __pos);
1474.2105 +  }
1474.2106 +
1474.2107 +  reference at(size_type __pos) {
1474.2108 +    // if (__pos >= size()) throw out_of_range;  // XXX
1474.2109 +    return (*this)[__pos];
1474.2110 +  }
1474.2111 +
1474.2112 +  void resize(size_type, _CharT) {}
1474.2113 +  void resize(size_type) {}
1474.2114 +  void reserve(size_type = 0) {}
1474.2115 +  size_type capacity() const {
1474.2116 +    return max_size();
1474.2117 +  }
1474.2118 +
1474.2119 +  // Stuff below this line is dangerous because it's error prone.
1474.2120 +  // I would really like to get rid of it.
1474.2121 +  // copy function with funny arg ordering.
1474.2122 +  size_type copy(_CharT* __buffer, size_type __n, 
1474.2123 +                 size_type __pos = 0) const {
1474.2124 +    return copy(__pos, __n, __buffer);
1474.2125 +  }
1474.2126 +
1474.2127 +  iterator end() { return mutable_end(); }
1474.2128 +
1474.2129 +  iterator begin() { return mutable_begin(); }
1474.2130 +
1474.2131 +  reverse_iterator rend() { return mutable_rend(); }
1474.2132 +
1474.2133 +  reverse_iterator rbegin() { return mutable_rbegin(); }
1474.2134 +
1474.2135 +#       else
1474.2136 +
1474.2137 +  const_iterator end() { return const_end(); }
1474.2138 +
1474.2139 +  const_iterator begin() { return const_begin(); }
1474.2140 +
1474.2141 +  const_reverse_iterator rend() { return const_rend(); }
1474.2142 +  
1474.2143 +  const_reverse_iterator rbegin() { return const_rbegin(); }
1474.2144 +
1474.2145 +#	endif
1474.2146 +
1474.2147 +  __ROPE_DEFINE_ALLOCS(_Alloc, _M_tree_ptr)
1474.2148 +    };
1474.2149 +
1474.2150 +# undef __ROPE_DEFINE_ALLOC
1474.2151 +# undef __ROPE_DEFINE_ALLOCS
1474.2152 +
1474.2153 +template <class _CharT, class _Alloc>
1474.2154 +inline _CharT 
1474.2155 +_Rope_const_iterator< _CharT, _Alloc>::operator[](size_t __n)
1474.2156 +{
1474.2157 +  return rope<_CharT,_Alloc>::_S_fetch(this->_M_root, this->_M_current_pos + __n);
1474.2158 +}
1474.2159 +
1474.2160 +template <class _CharT, class _Alloc>
1474.2161 +inline bool operator== (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2162 +                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2163 +  return (__x._M_current_pos == __y._M_current_pos && 
1474.2164 +          __x._M_root == __y._M_root);
1474.2165 +}
1474.2166 +
1474.2167 +template <class _CharT, class _Alloc>
1474.2168 +inline bool operator< (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2169 +                       const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2170 +  return (__x._M_current_pos < __y._M_current_pos);
1474.2171 +}
1474.2172 +
1474.2173 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1474.2174 +
1474.2175 +template <class _CharT, class _Alloc>
1474.2176 +inline bool operator!= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2177 +                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2178 +  return !(__x == __y);
1474.2179 +}
1474.2180 +
1474.2181 +template <class _CharT, class _Alloc>
1474.2182 +inline bool operator> (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2183 +                       const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2184 +  return __y < __x;
1474.2185 +}
1474.2186 +
1474.2187 +template <class _CharT, class _Alloc>
1474.2188 +inline bool operator<= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2189 +                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2190 +  return !(__y < __x);
1474.2191 +}
1474.2192 +
1474.2193 +template <class _CharT, class _Alloc>
1474.2194 +inline bool operator>= (const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2195 +                        const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2196 +  return !(__x < __y);
1474.2197 +}
1474.2198 +
1474.2199 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1474.2200 +
1474.2201 +template <class _CharT, class _Alloc>
1474.2202 +inline ptrdiff_t operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x,
1474.2203 +                           const _Rope_const_iterator<_CharT,_Alloc>& __y) {
1474.2204 +  return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
1474.2205 +}
1474.2206 +
1474.2207 +#if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000		// dwa 8/21/97  - "ambiguous access to overloaded function" bug.
1474.2208 +template <class _CharT, class _Alloc>
1474.2209 +inline _Rope_const_iterator<_CharT,_Alloc>
1474.2210 +operator-(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
1474.2211 +  return _Rope_const_iterator<_CharT,_Alloc>(
1474.2212 +                                             __x._M_root, __x._M_current_pos - __n);
1474.2213 +}
1474.2214 +# endif
1474.2215 +
1474.2216 +template <class _CharT, class _Alloc>
1474.2217 +inline _Rope_const_iterator<_CharT,_Alloc>
1474.2218 +operator+(const _Rope_const_iterator<_CharT,_Alloc>& __x, ptrdiff_t __n) {
1474.2219 +  return _Rope_const_iterator<_CharT,_Alloc>(
1474.2220 +                                             __x._M_root, __x._M_current_pos + __n);
1474.2221 +}
1474.2222 +
1474.2223 +template <class _CharT, class _Alloc>
1474.2224 +inline _Rope_const_iterator<_CharT,_Alloc>
1474.2225 +operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT,_Alloc>& __x) {
1474.2226 +  return _Rope_const_iterator<_CharT,_Alloc>(
1474.2227 +                                             __x._M_root, __x._M_current_pos + __n);
1474.2228 +}
1474.2229 +
1474.2230 +template <class _CharT, class _Alloc>
1474.2231 +inline bool operator== (const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2232 +                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2233 +  return (__x._M_current_pos == __y._M_current_pos && 
1474.2234 +          __x._M_root_rope == __y._M_root_rope);
1474.2235 +}
1474.2236 +
1474.2237 +template <class _CharT, class _Alloc>
1474.2238 +inline bool operator< (const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2239 +                       const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2240 +  return (__x._M_current_pos < __y._M_current_pos);
1474.2241 +}
1474.2242 +
1474.2243 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1474.2244 +
1474.2245 +template <class _CharT, class _Alloc>
1474.2246 +inline bool operator!= (const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2247 +                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2248 +  return !(__x == __y);
1474.2249 +}
1474.2250 +
1474.2251 +template <class _CharT, class _Alloc>
1474.2252 +inline bool operator> (const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2253 +                       const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2254 +  return __y < __x;
1474.2255 +}
1474.2256 +
1474.2257 +template <class _CharT, class _Alloc>
1474.2258 +inline bool operator<= (const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2259 +                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2260 +  return !(__y < __x);
1474.2261 +}
1474.2262 +
1474.2263 +template <class _CharT, class _Alloc>
1474.2264 +inline bool operator>= (const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2265 +                        const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2266 +  return !(__x < __y);
1474.2267 +}
1474.2268 +
1474.2269 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1474.2270 +
1474.2271 +template <class _CharT, class _Alloc>
1474.2272 +inline ptrdiff_t operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2273 +                           const _Rope_iterator<_CharT,_Alloc>& __y) {
1474.2274 +  return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos;
1474.2275 +}
1474.2276 +
1474.2277 +#if !defined( __MWERKS__ ) || __MWERKS__ >= 0x2000		// dwa 8/21/97  - "ambiguous access to overloaded function" bug.
1474.2278 +template <class _CharT, class _Alloc>
1474.2279 +inline _Rope_iterator<_CharT,_Alloc>
1474.2280 +operator-(const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2281 +          ptrdiff_t __n) {
1474.2282 +  return _Rope_iterator<_CharT,_Alloc>(
1474.2283 +                                       __x._M_root_rope, __x._M_current_pos - __n);
1474.2284 +}
1474.2285 +# endif
1474.2286 +
1474.2287 +template <class _CharT, class _Alloc>
1474.2288 +inline _Rope_iterator<_CharT,_Alloc>
1474.2289 +operator+(const _Rope_iterator<_CharT,_Alloc>& __x,
1474.2290 +          ptrdiff_t __n) {
1474.2291 +  return _Rope_iterator<_CharT,_Alloc>(
1474.2292 +                                       __x._M_root_rope, __x._M_current_pos + __n);
1474.2293 +}
1474.2294 +
1474.2295 +template <class _CharT, class _Alloc>
1474.2296 +inline _Rope_iterator<_CharT,_Alloc>
1474.2297 +operator+(ptrdiff_t __n, const _Rope_iterator<_CharT,_Alloc>& __x) {
1474.2298 +  return _Rope_iterator<_CharT,_Alloc>(
1474.2299 +                                       __x._M_root_rope, __x._M_current_pos + __n);
1474.2300 +}
1474.2301 +
1474.2302 +template <class _CharT, class _Alloc>
1474.2303 +inline
1474.2304 +rope<_CharT,_Alloc>
1474.2305 +operator+ (const rope<_CharT,_Alloc>& __left,
1474.2306 +           const rope<_CharT,_Alloc>& __right)
1474.2307 +{
1474.2308 +  _STLP_ASSERT(__left.get_allocator() == __right.get_allocator())
1474.2309 +  return rope<_CharT,_Alloc>(rope<_CharT,_Alloc>::_S_concat_rep(__left._M_tree_ptr._M_data, __right._M_tree_ptr._M_data));
1474.2310 +  // Inlining this should make it possible to keep __left and
1474.2311 +  // __right in registers.
1474.2312 +}
1474.2313 +
1474.2314 +template <class _CharT, class _Alloc>
1474.2315 +inline
1474.2316 +rope<_CharT,_Alloc>&
1474.2317 +operator+= (rope<_CharT,_Alloc>& __left, 
1474.2318 +            const rope<_CharT,_Alloc>& __right)
1474.2319 +{
1474.2320 +  __left.append(__right);
1474.2321 +  return __left;
1474.2322 +}
1474.2323 +
1474.2324 +template <class _CharT, class _Alloc>
1474.2325 +inline
1474.2326 +rope<_CharT,_Alloc>
1474.2327 +operator+ (const rope<_CharT,_Alloc>& __left,
1474.2328 +           const _CharT* __right) {
1474.2329 +  size_t __rlen = rope<_CharT,_Alloc>::_S_char_ptr_len(__right);
1474.2330 +  return rope<_CharT,_Alloc>(
1474.2331 +                             rope<_CharT,_Alloc>::_S_concat_char_iter(
1474.2332 +                                                                      __left._M_tree_ptr._M_data, __right, __rlen)); 
1474.2333 +}
1474.2334 +
1474.2335 +template <class _CharT, class _Alloc>
1474.2336 +inline
1474.2337 +rope<_CharT,_Alloc>&
1474.2338 +operator+= (rope<_CharT,_Alloc>& __left,
1474.2339 +            const _CharT* __right) {
1474.2340 +  __left.append(__right);
1474.2341 +  return __left;
1474.2342 +}
1474.2343 +
1474.2344 +template <class _CharT, class _Alloc>
1474.2345 +inline
1474.2346 +rope<_CharT,_Alloc>
1474.2347 +operator+ (const rope<_CharT,_Alloc>& __left, _STLP_SIMPLE_TYPE(_CharT) __right) {
1474.2348 +  return rope<_CharT,_Alloc>(
1474.2349 +                             rope<_CharT,_Alloc>::_S_concat_char_iter(
1474.2350 +                                                                      __left._M_tree_ptr._M_data, &__right, 1));
1474.2351 +}
1474.2352 +
1474.2353 +template <class _CharT, class _Alloc>
1474.2354 +inline
1474.2355 +rope<_CharT,_Alloc>&
1474.2356 +operator+= (rope<_CharT,_Alloc>& __left, _STLP_SIMPLE_TYPE(_CharT) __right) {
1474.2357 +  __left.append(__right);
1474.2358 +  return __left;
1474.2359 +}
1474.2360 +
1474.2361 +template <class _CharT, class _Alloc>
1474.2362 +inline bool
1474.2363 +operator< (const rope<_CharT,_Alloc>& __left, 
1474.2364 +           const rope<_CharT,_Alloc>& __right) {
1474.2365 +  return __left.compare(__right) < 0;
1474.2366 +}
1474.2367 +        
1474.2368 +template <class _CharT, class _Alloc>
1474.2369 +inline bool
1474.2370 +operator== (const rope<_CharT,_Alloc>& __left, 
1474.2371 +            const rope<_CharT,_Alloc>& __right) {
1474.2372 +  return __left.compare(__right) == 0;
1474.2373 +}
1474.2374 +
1474.2375 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1474.2376 +
1474.2377 +template <class _CharT, class _Alloc>
1474.2378 +inline bool
1474.2379 +operator!= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1474.2380 +  return !(__x == __y);
1474.2381 +}
1474.2382 +
1474.2383 +template <class _CharT, class _Alloc>
1474.2384 +inline bool
1474.2385 +operator> (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1474.2386 +  return __y < __x;
1474.2387 +}
1474.2388 +
1474.2389 +template <class _CharT, class _Alloc>
1474.2390 +inline bool
1474.2391 +operator<= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1474.2392 +  return !(__y < __x);
1474.2393 +}
1474.2394 +
1474.2395 +template <class _CharT, class _Alloc>
1474.2396 +inline bool
1474.2397 +operator>= (const rope<_CharT,_Alloc>& __x, const rope<_CharT,_Alloc>& __y) {
1474.2398 +  return !(__x < __y);
1474.2399 +}
1474.2400 +
1474.2401 +template <class _CharT, class _Alloc>
1474.2402 +inline bool operator!= (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
1474.2403 +                        const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
1474.2404 +  return !(__x == __y);
1474.2405 +}
1474.2406 +
1474.2407 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1474.2408 +
1474.2409 +template <class _CharT, class _Alloc>
1474.2410 +inline bool operator== (const _Rope_char_ptr_proxy<_CharT,_Alloc>& __x,
1474.2411 +                        const _Rope_char_ptr_proxy<_CharT,_Alloc>& __y) {
1474.2412 +  return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root);
1474.2413 +}
1474.2414 +
1474.2415 +#ifdef _STLP_USE_NEW_IOSTREAMS
1474.2416 +template<class _CharT, class _Traits, class _Alloc>
1474.2417 +basic_ostream<_CharT, _Traits>& operator<< (
1474.2418 +                                            basic_ostream<_CharT, _Traits>& __o,
1474.2419 +                                            const rope<_CharT, _Alloc>& __r);
1474.2420 +#elif ! defined (_STLP_USE_NO_IOSTREAMS)
1474.2421 +template<class _CharT, class _Alloc>
1474.2422 +ostream& operator<< (ostream& __o, const rope<_CharT,_Alloc>& __r);        
1474.2423 +#endif
1474.2424 +        
1474.2425 +typedef rope<char, _STLP_DEFAULT_ALLOCATOR(char) > crope;
1474.2426 +# ifdef _STLP_HAS_WCHAR_T
1474.2427 +typedef rope<wchar_t, _STLP_DEFAULT_ALLOCATOR(wchar_t) > wrope;
1474.2428 +# endif
1474.2429 +
1474.2430 +inline crope::reference __mutable_reference_at(crope& __c, size_t __i)
1474.2431 +{
1474.2432 +  return __c.mutable_reference_at(__i);
1474.2433 +}
1474.2434 +
1474.2435 +# ifdef _STLP_HAS_WCHAR_T
1474.2436 +inline wrope::reference __mutable_reference_at(wrope& __c, size_t __i)
1474.2437 +{
1474.2438 +  return __c.mutable_reference_at(__i);
1474.2439 +}
1474.2440 +# endif
1474.2441 +
1474.2442 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1474.2443 +
1474.2444 +template <class _CharT, class _Alloc>
1474.2445 +inline void swap(rope<_CharT,_Alloc>& __x, rope<_CharT,_Alloc>& __y) {
1474.2446 +  __x.swap(__y);
1474.2447 +}
1474.2448 +#else
1474.2449 +
1474.2450 +inline void swap(crope& __x, crope& __y) { __x.swap(__y); }
1474.2451 +# ifdef _STLP_HAS_WCHAR_T	// dwa 8/21/97
1474.2452 +inline void swap(wrope& __x, wrope& __y) { __x.swap(__y); }
1474.2453 +# endif
1474.2454 +
1474.2455 +#endif /* _STLP_FUNCTION_TMPL_PARTIAL_ORDER */
1474.2456 +
1474.2457 +
1474.2458 +// Hash functions should probably be revisited later:
1474.2459 +_STLP_TEMPLATE_NULL struct hash<crope>
1474.2460 +{
1474.2461 +  size_t operator()(const crope& __str) const
1474.2462 +  {
1474.2463 +    size_t _p_size = __str.size();
1474.2464 +
1474.2465 +    if (0 == _p_size) return 0;
1474.2466 +    return 13*__str[0] + 5*__str[_p_size - 1] + _p_size;
1474.2467 +  }
1474.2468 +};
1474.2469 +
1474.2470 +# ifdef _STLP_HAS_WCHAR_T	// dwa 8/21/97
1474.2471 +_STLP_TEMPLATE_NULL struct hash<wrope>
1474.2472 +{
1474.2473 +  size_t operator()(const wrope& __str) const
1474.2474 +  {
1474.2475 +    size_t _p_size = __str.size();
1474.2476 +
1474.2477 +    if (0 == _p_size) return 0;
1474.2478 +    return 13*__str[0] + 5*__str[_p_size - 1] + _p_size;
1474.2479 +  }
1474.2480 +};
1474.2481 +#endif
1474.2482 +
1474.2483 +#ifndef _STLP_MSVC
1474.2484 +// I couldn't get this to work with VC++
1474.2485 +template<class _CharT,class _Alloc>
1474.2486 +void
1474.2487 +_Rope_rotate(_Rope_iterator<_CharT,_Alloc> __first,
1474.2488 +             _Rope_iterator<_CharT,_Alloc> __middle,
1474.2489 +             _Rope_iterator<_CharT,_Alloc> __last);
1474.2490 +
1474.2491 +#if !defined(__GNUC__)
1474.2492 +// Appears to confuse g++
1474.2493 +inline void rotate(_Rope_iterator<char,_STLP_DEFAULT_ALLOCATOR(char) > __first,
1474.2494 +                   _Rope_iterator<char,_STLP_DEFAULT_ALLOCATOR(char) > __middle,
1474.2495 +                   _Rope_iterator<char,_STLP_DEFAULT_ALLOCATOR(char) > __last) {
1474.2496 +  _Rope_rotate(__first, __middle, __last);
1474.2497 +}
1474.2498 +#endif
1474.2499 +
1474.2500 +#endif
1474.2501 +
1474.2502 +template <class _CharT, class _Alloc>
1474.2503 +inline _Rope_char_ref_proxy<_CharT, _Alloc>::operator _CharT () const
1474.2504 +{
1474.2505 +  if (_M_current_valid) {
1474.2506 +	return _M_current;
1474.2507 +  } else {
1474.2508 +    return _My_rope::_S_fetch(_M_root->_M_tree_ptr._M_data, _M_pos);
1474.2509 +  }
1474.2510 +}
1474.2511 +_STLP_END_NAMESPACE
1474.2512 +
1474.2513 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1474.2514 +#  include <stl/_rope.c>
1474.2515 +# endif
1474.2516 +
1474.2517 +# endif /* _STLP_INTERNAL_ROPE_H */
1474.2518 +
1474.2519 +// Local Variables:
1474.2520 +// mode:C++
1474.2521 +// End:
  1475.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1475.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_slist.c	Wed Mar 31 12:27:01 2010 +0100
  1475.3 @@ -0,0 +1,179 @@
  1475.4 +/*
  1475.5 + *
  1475.6 + * Copyright (c) 1996,1997
  1475.7 + * Silicon Graphics Computer Systems, Inc.
  1475.8 + *
  1475.9 + * Copyright (c) 1999 
 1475.10 + * Boris Fomitchev
 1475.11 + *
 1475.12 + * This material is provided "as is", with absolutely no warranty expressed
 1475.13 + * or implied. Any use is at your own risk.
 1475.14 + *
 1475.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1475.16 + * without fee, provided the above notices are retained on all copies.
 1475.17 + * Permission to modify the code and to distribute modified code is granted,
 1475.18 + * provided the above notices are retained, and a notice that the code was
 1475.19 + * modified is included with the above copyright notice.
 1475.20 + *
 1475.21 + */
 1475.22 +#ifndef _STLP_SLIST_C
 1475.23 +#define _STLP_SLIST_C
 1475.24 +
 1475.25 +#ifndef _STLP_INTERNAL_SLIST_H
 1475.26 +# include <stl/_slist.h>
 1475.27 +#endif
 1475.28 +
 1475.29 +# undef slist
 1475.30 +# define  slist  __WORKAROUND_DBG_RENAME(slist)
 1475.31 +# if defined (_STLP_NESTED_TYPE_PARAM_BUG) 
 1475.32 +#  define size_type          size_t
 1475.33 +# endif
 1475.34 +
 1475.35 +_STLP_BEGIN_NAMESPACE
 1475.36 +
 1475.37 +template <class _Tp, class _Alloc> 
 1475.38 +_Slist_node_base*
 1475.39 +_Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first,
 1475.40 +                                        _Slist_node_base* __last_node) {
 1475.41 +  _Slist_node<_Tp>* __cur = (_Slist_node<_Tp>*) (__before_first->_M_next);
 1475.42 +  while (__cur != __last_node) {
 1475.43 +    _Slist_node<_Tp>* __tmp = __cur;
 1475.44 +    __cur = (_Slist_node<_Tp>*) __cur->_M_next;
 1475.45 +    _STLP_STD::_Destroy(&__tmp->_M_data);
 1475.46 +    _M_head.deallocate(__tmp,1);
 1475.47 +  }
 1475.48 +  __before_first->_M_next = __last_node;
 1475.49 +  return __last_node;
 1475.50 +}
 1475.51 +
 1475.52 +template <class _Tp, class _Alloc>
 1475.53 +slist<_Tp,_Alloc>& slist<_Tp,_Alloc>::operator=(const slist<_Tp,_Alloc>& __x)
 1475.54 +{
 1475.55 +  if (&__x != this) {
 1475.56 +    _Node_base* __p1 = &this->_M_head._M_data;
 1475.57 +    _Node* __n1 = (_Node*) this->_M_head._M_data._M_next;
 1475.58 +    const _Node* __n2 = (const _Node*) __x._M_head._M_data._M_next;
 1475.59 +    while (__n1 && __n2) {
 1475.60 +      __n1->_M_data = __n2->_M_data;
 1475.61 +      __p1 = __n1;
 1475.62 +      __n1 = (_Node*) __n1->_M_next;
 1475.63 +      __n2 = (const _Node*) __n2->_M_next;
 1475.64 +    }
 1475.65 +    if (__n2 == 0)
 1475.66 +      this->_M_erase_after(__p1, 0);
 1475.67 +    else
 1475.68 +      _M_insert_after_range(__p1, const_iterator((_Node*)__n2), 
 1475.69 +                                  const_iterator(0));
 1475.70 +  }
 1475.71 +  return *this;
 1475.72 +}
 1475.73 +
 1475.74 +template <class _Tp, class _Alloc>
 1475.75 +void slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val) {
 1475.76 +  _Node_base* __prev = &this->_M_head._M_data;
 1475.77 +  _Node* __node = (_Node*) this->_M_head._M_data._M_next;
 1475.78 +  for ( ; __node != 0 && __n > 0 ; --__n) {
 1475.79 +    __node->_M_data = __val;
 1475.80 +    __prev = __node;
 1475.81 +    __node = (_Node*) __node->_M_next;
 1475.82 +  }
 1475.83 +  if (__n > 0)
 1475.84 +    _M_insert_after_fill(__prev, __n, __val);
 1475.85 +  else
 1475.86 +    this->_M_erase_after(__prev, 0);
 1475.87 +}
 1475.88 +
 1475.89 +
 1475.90 +template <class _Tp, class _Alloc>
 1475.91 +void slist<_Tp,_Alloc>::resize(size_type __len, const _Tp& __x)
 1475.92 +{
 1475.93 +  _Node_base* __cur = &this->_M_head._M_data;
 1475.94 +  while (__cur->_M_next != 0 && __len > 0) {
 1475.95 +    --__len;
 1475.96 +    __cur = __cur->_M_next;
 1475.97 +  }
 1475.98 +  if (__cur->_M_next) 
 1475.99 +    this->_M_erase_after(__cur, 0);
1475.100 +  else
1475.101 +    _M_insert_after_fill(__cur, __len, __x);
1475.102 +}
1475.103 +
1475.104 +template <class _Tp, class _Alloc>
1475.105 +void slist<_Tp,_Alloc>::remove(const _Tp& __val)
1475.106 +{
1475.107 +  _Node_base* __cur = &this->_M_head._M_data;
1475.108 +  while (__cur && __cur->_M_next) {
1475.109 +    if (((_Node*) __cur->_M_next)->_M_data == __val)
1475.110 +      this->_M_erase_after(__cur);
1475.111 +    else
1475.112 +      __cur = __cur->_M_next;
1475.113 +  }
1475.114 +}
1475.115 +
1475.116 +template <class _Tp, class _Alloc> 
1475.117 +void slist<_Tp,_Alloc>::unique()
1475.118 +{
1475.119 +  _Node_base* __cur = this->_M_head._M_data._M_next;
1475.120 +  if (__cur) {
1475.121 +    while (__cur->_M_next) {
1475.122 +      if (((_Node*)__cur)->_M_data == 
1475.123 +          ((_Node*)(__cur->_M_next))->_M_data)
1475.124 +        this->_M_erase_after(__cur);
1475.125 +      else
1475.126 +        __cur = __cur->_M_next;
1475.127 +    }
1475.128 +  }
1475.129 +}
1475.130 +
1475.131 +template <class _Tp, class _Alloc>
1475.132 +void slist<_Tp,_Alloc>::merge(slist<_Tp,_Alloc>& __x)
1475.133 +{
1475.134 +  _Node_base* __n1 = &this->_M_head._M_data;
1475.135 +  while (__n1->_M_next && __x._M_head._M_data._M_next) {
1475.136 +    if (((_Node*) __x._M_head._M_data._M_next)->_M_data < 
1475.137 +        ((_Node*)       __n1->_M_next)->_M_data) 
1475.138 +      _Sl_global_inst::__splice_after(__n1, &__x._M_head._M_data, __x._M_head._M_data._M_next);
1475.139 +    __n1 = __n1->_M_next;
1475.140 +  }
1475.141 +  if (__x._M_head._M_data._M_next) {
1475.142 +    __n1->_M_next = __x._M_head._M_data._M_next;
1475.143 +    __x._M_head._M_data._M_next = 0;
1475.144 +  }
1475.145 +}
1475.146 +
1475.147 +template <class _Tp, class _Alloc>
1475.148 +void slist<_Tp,_Alloc>::sort()
1475.149 +{
1475.150 +  if (this->_M_head._M_data._M_next && this->_M_head._M_data._M_next->_M_next) {
1475.151 +    _Self __carry;
1475.152 +    _Self __counter[64];
1475.153 +    int __fill = 0;
1475.154 +    while (!empty()) {
1475.155 +      _Sl_global_inst::__splice_after(&__carry._M_head._M_data, &this->_M_head._M_data, this->_M_head._M_data._M_next);
1475.156 +      int __i = 0;
1475.157 +      while (__i < __fill && !__counter[__i].empty()) {
1475.158 +        __counter[__i].merge(__carry);
1475.159 +        __carry.swap(__counter[__i]);
1475.160 +        ++__i;
1475.161 +      }
1475.162 +      __carry.swap(__counter[__i]);
1475.163 +      if (__i == __fill)
1475.164 +        ++__fill;
1475.165 +    }
1475.166 +
1475.167 +    for (int __i = 1; __i < __fill; ++__i)
1475.168 +      __counter[__i].merge(__counter[__i-1]);
1475.169 +    this->swap(__counter[__fill-1]);
1475.170 +  }
1475.171 +}
1475.172 +
1475.173 +# undef slist
1475.174 +# undef size_type
1475.175 +
1475.176 +_STLP_END_NAMESPACE
1475.177 +
1475.178 +#endif /*  _STLP_SLIST_C */
1475.179 +
1475.180 +// Local Variables:
1475.181 +// mode:C++
1475.182 +// End:
  1476.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1476.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_slist_base.c	Wed Mar 31 12:27:01 2010 +0100
  1476.3 @@ -0,0 +1,109 @@
  1476.4 +/*
  1476.5 + *
  1476.6 + *
  1476.7 + * Copyright (c) 1994
  1476.8 + * Hewlett-Packard Company
  1476.9 + *
 1476.10 + * Copyright (c) 1996,1997
 1476.11 + * Silicon Graphics Computer Systems, Inc.
 1476.12 + *
 1476.13 + * Copyright (c) 1997
 1476.14 + * Moscow Center for SPARC Technology
 1476.15 + *
 1476.16 + * Copyright (c) 1999 
 1476.17 + * Boris Fomitchev
 1476.18 + *
 1476.19 + * This material is provided "as is", with absolutely no warranty expressed
 1476.20 + * or implied. Any use is at your own risk.
 1476.21 + *
 1476.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1476.23 + * without fee, provided the above notices are retained on all copies.
 1476.24 + * Permission to modify the code and to distribute modified code is granted,
 1476.25 + * provided the above notices are retained, and a notice that the code was
 1476.26 + * modified is included with the above copyright notice.
 1476.27 + *
 1476.28 + */
 1476.29 +#ifndef _STLP_SLIST_BASE_C
 1476.30 +#define _STLP_SLIST_BASE_C
 1476.31 +
 1476.32 +#ifndef _STLP_INTERNAL_SLIST_BASE_H
 1476.33 +# include <stl/_slist_base.h>
 1476.34 +#endif
 1476.35 +
 1476.36 +_STLP_BEGIN_NAMESPACE
 1476.37 +
 1476.38 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1476.39 +
 1476.40 +template <class _Dummy>
 1476.41 +_Slist_node_base*  _STLP_CALL
 1476.42 +_Sl_global<_Dummy>::__previous(_Slist_node_base* __head,
 1476.43 +			       const _Slist_node_base* __node)
 1476.44 +{
 1476.45 +  while (__head && __head->_M_next != __node)
 1476.46 +    __head = __head->_M_next;
 1476.47 +  return __head;
 1476.48 +}
 1476.49 +
 1476.50 +template <class _Dummy>
 1476.51 +void _STLP_CALL
 1476.52 +_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos, _Slist_node_base* __head)
 1476.53 +{
 1476.54 +  _Slist_node_base* __before_last = __previous(__head, 0);
 1476.55 +  if (__before_last != __head) {
 1476.56 +    _Slist_node_base* __after = __pos->_M_next;
 1476.57 +    __pos->_M_next = __head->_M_next;
 1476.58 +    __head->_M_next = 0;
 1476.59 +    __before_last->_M_next = __after;
 1476.60 +  }
 1476.61 +}
 1476.62 +
 1476.63 +template <class _Dummy>
 1476.64 +void _STLP_CALL
 1476.65 +_Sl_global<_Dummy>::__splice_after(_Slist_node_base* __pos,
 1476.66 +				   _Slist_node_base* __before_first,
 1476.67 +				   _Slist_node_base* __before_last)
 1476.68 +{
 1476.69 +  if (__pos != __before_first && __pos != __before_last) {
 1476.70 +    _Slist_node_base* __first = __before_first->_M_next;
 1476.71 +    _Slist_node_base* __after = __pos->_M_next;
 1476.72 +    __before_first->_M_next = __before_last->_M_next;
 1476.73 +    __pos->_M_next = __first;
 1476.74 +    __before_last->_M_next = __after;
 1476.75 +  }
 1476.76 +}
 1476.77 +
 1476.78 +template <class _Dummy>
 1476.79 +_Slist_node_base* _STLP_CALL
 1476.80 +_Sl_global<_Dummy>::__reverse(_Slist_node_base* __node)
 1476.81 +{
 1476.82 +  _Slist_node_base* __result = __node;
 1476.83 +  __node = __node->_M_next;
 1476.84 +  __result->_M_next = 0;
 1476.85 +  while(__node) {
 1476.86 +    _Slist_node_base* __next = __node->_M_next;
 1476.87 +    __node->_M_next = __result;
 1476.88 +    __result = __node;
 1476.89 +    __node = __next;
 1476.90 +  }
 1476.91 +  return __result;
 1476.92 +}
 1476.93 +
 1476.94 +template <class _Dummy> 
 1476.95 +size_t _STLP_CALL
 1476.96 +_Sl_global<_Dummy>::size(_Slist_node_base* __node)
 1476.97 +{
 1476.98 +  size_t __result = 0;
 1476.99 +  for ( ; __node != 0; __node = __node->_M_next)
1476.100 +    ++__result;
1476.101 +  return __result;
1476.102 +}
1476.103 +
1476.104 +#endif /* defined (__BUILDING_STLPORT) || ! defined (_STLP_OWN_IOSTREAMS) */
1476.105 +
1476.106 +_STLP_END_NAMESPACE
1476.107 +
1476.108 +#endif /*  _STLP_SLIST_BASE_C */
1476.109 +
1476.110 +// Local Variables:
1476.111 +// mode:C++
1476.112 +// End:
  1477.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1477.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_slist_base.h	Wed Mar 31 12:27:01 2010 +0100
  1477.3 @@ -0,0 +1,87 @@
  1477.4 +/*
  1477.5 + *
  1477.6 + * Copyright (c) 1996,1997
  1477.7 + * Silicon Graphics Computer Systems, Inc.
  1477.8 + *
  1477.9 + * Copyright (c) 1997
 1477.10 + * Moscow Center for SPARC Technology
 1477.11 + *
 1477.12 + * Copyright (c) 1999 
 1477.13 + * Boris Fomitchev
 1477.14 + *
 1477.15 + * This material is provided "as is", with absolutely no warranty expressed
 1477.16 + * or implied. Any use is at your own risk.
 1477.17 + *
 1477.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1477.19 + * without fee, provided the above notices are retained on all copies.
 1477.20 + * Permission to modify the code and to distribute modified code is granted,
 1477.21 + * provided the above notices are retained, and a notice that the code was
 1477.22 + * modified is included with the above copyright notice.
 1477.23 + *
 1477.24 + */
 1477.25 +
 1477.26 +/* NOTE: This is an internal header file, included by other STL headers.
 1477.27 + *   You should not attempt to use it directly.
 1477.28 + */
 1477.29 +
 1477.30 +#ifndef _STLP_INTERNAL_SLIST_BASE_H
 1477.31 +#define _STLP_INTERNAL_SLIST_BASE_H
 1477.32 +
 1477.33 +#ifndef _STLP_CSTDDEF
 1477.34 +#include <cstddef>
 1477.35 +#endif
 1477.36 +
 1477.37 +_STLP_BEGIN_NAMESPACE 
 1477.38 +
 1477.39 +struct _Slist_node_base
 1477.40 +{
 1477.41 +  _Slist_node_base* _M_next;
 1477.42 +};
 1477.43 +
 1477.44 +inline _Slist_node_base*
 1477.45 +__slist_make_link(_Slist_node_base* __prev_node,
 1477.46 +                  _Slist_node_base* __new_node)
 1477.47 +{
 1477.48 +  __new_node->_M_next = __prev_node->_M_next;
 1477.49 +  __prev_node->_M_next = __new_node;
 1477.50 +  return __new_node;
 1477.51 +}
 1477.52 +
 1477.53 +
 1477.54 +template <class _Dummy>
 1477.55 +class _Sl_global {
 1477.56 +public:
 1477.57 +  // those used to be global functions 
 1477.58 +  // moved here to reduce code bloat without templatizing _Slist_iterator_base
 1477.59 +  static size_t _STLP_CALL size(_Slist_node_base* __node);
 1477.60 +  static _Slist_node_base* _STLP_CALL __reverse(_Slist_node_base* __node);
 1477.61 +  static void _STLP_CALL __splice_after(_Slist_node_base* __pos,
 1477.62 +                                        _Slist_node_base* __before_first,
 1477.63 +                                        _Slist_node_base* __before_last);
 1477.64 +  
 1477.65 +  static void _STLP_CALL __splice_after(_Slist_node_base* __pos, _Slist_node_base* __head);
 1477.66 +
 1477.67 +  static _Slist_node_base* _STLP_CALL __previous(_Slist_node_base* __head,
 1477.68 +                                                 const _Slist_node_base* __node);
 1477.69 +  static const _Slist_node_base* _STLP_CALL __previous(const _Slist_node_base* __head,
 1477.70 +					    const _Slist_node_base* __node) {
 1477.71 +    return _Sl_global<_Dummy>::__previous((_Slist_node_base*)__head, __node);
 1477.72 +  }
 1477.73 +};
 1477.74 +
 1477.75 +# if defined (_STLP_USE_TEMPLATE_EXPORT) 
 1477.76 +_STLP_EXPORT_TEMPLATE_CLASS _Sl_global<bool>;
 1477.77 +# endif
 1477.78 +typedef _Sl_global<bool> _Sl_global_inst;
 1477.79 +
 1477.80 +_STLP_END_NAMESPACE
 1477.81 +
 1477.82 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
 1477.83 +#  include <stl/_slist_base.c>
 1477.84 +# endif
 1477.85 +
 1477.86 +#endif /* _STLP_INTERNAL_SLIST_BASE_H */
 1477.87 +
 1477.88 +// Local Variables:
 1477.89 +// mode:C++
 1477.90 +// End:
  1478.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1478.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_sstream.c	Wed Mar 31 12:27:01 2010 +0100
  1478.3 @@ -0,0 +1,671 @@
  1478.4 +/*
  1478.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1478.6 + * Copyright (c) 1999
  1478.7 + * Silicon Graphics Computer Systems, Inc.
  1478.8 + *
  1478.9 + * Copyright (c) 1999 
 1478.10 + * Boris Fomitchev
 1478.11 + *
 1478.12 + * This material is provided "as is", with absolutely no warranty expressed
 1478.13 + * or implied. Any use is at your own risk.
 1478.14 + *
 1478.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1478.16 + * without fee, provided the above notices are retained on all copies.
 1478.17 + * Permission to modify the code and to distribute modified code is granted,
 1478.18 + * provided the above notices are retained, and a notice that the code was
 1478.19 + * modified is included with the above copyright notice.
 1478.20 + *
 1478.21 + */ 
 1478.22 +
 1478.23 +#ifndef _STLP_SSTREAM_C
 1478.24 +#define _STLP_SSTREAM_C
 1478.25 +
 1478.26 +#ifndef _STLP_SSTREAM_H
 1478.27 +# include <stl/_sstream.h>
 1478.28 +#include <stl/_stdio_file.h> 
 1478.29 +#endif
 1478.30 +
 1478.31 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1478.32 +
 1478.33 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1478.34 +// no wint_t is supported for this mode
 1478.35 +# define __BSB_int_type__ int
 1478.36 +# define __BSB_pos_type__ streampos
 1478.37 +# else
 1478.38 +# define __BSB_int_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_stringbuf<_CharT, _Traits, _Alloc>::int_type
 1478.39 +# define __BSB_pos_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_stringbuf<_CharT, _Traits, _Alloc>::pos_type
 1478.40 +# endif
 1478.41 +
 1478.42 +_STLP_BEGIN_NAMESPACE
 1478.43 +
 1478.44 +//----------------------------------------------------------------------
 1478.45 +// Non-inline stringbuf member functions.
 1478.46 +
 1478.47 +// Constructors.  Note that the base class constructor sets all of the
 1478.48 +// get and area pointers to null.
 1478.49 +
 1478.50 +template <class _CharT, class _Traits, class _Alloc>
 1478.51 +_STLP_EXP_DECLSPEC basic_stringbuf<_CharT, _Traits, _Alloc>
 1478.52 +  ::basic_stringbuf(ios_base::openmode __mode)
 1478.53 +    : basic_streambuf<_CharT, _Traits>(), _M_mode(__mode), _M_str()
 1478.54 +{
 1478.55 +#ifdef __SYMBIAN32__
 1478.56 +if (_M_mode & ios_base::out) {
 1478.57 +   if (_M_mode & (ios_base::app | ios_base::ate))
 1478.58 +       //increment the streampos to reflect the current streampos while writing
 1478.59 +       _M_str._M_stream_pos += _M_str.size();
 1478.60 +}
 1478.61 +#endif
 1478.62 +}
 1478.63 +
 1478.64 +template <class _CharT, class _Traits, class _Alloc>
 1478.65 +_STLP_EXP_DECLSPEC basic_stringbuf<_CharT, _Traits, _Alloc>
 1478.66 +  ::basic_stringbuf(const basic_string<_CharT, _Traits, _Alloc>& __s, ios_base::openmode __mode)
 1478.67 +    : basic_streambuf<_CharT, _Traits>(), _M_mode(__mode), _M_str(__s)
 1478.68 +{
 1478.69 +#ifdef __SYMBIAN32__
 1478.70 +if (_M_mode & ios_base::out) {
 1478.71 +   if (_M_mode & (ios_base::app | ios_base::ate))
 1478.72 +     //increment the streampos to reflect the current streampos while writing
 1478.73 +     _M_str._M_stream_pos += _M_str.size();
 1478.74 +}
 1478.75 +#endif
 1478.76 +  _M_set_ptrs();
 1478.77 +}
 1478.78 +
 1478.79 +template <class _CharT, class _Traits, class _Alloc>
 1478.80 +_STLP_EXP_DECLSPEC basic_stringbuf<_CharT, _Traits, _Alloc>::~basic_stringbuf()
 1478.81 +{}
 1478.82 +
 1478.83 +// Set the underlying string to a new value.
 1478.84 +template <class _CharT, class _Traits, class _Alloc>
 1478.85 +_STLP_EXP_DECLSPEC void 
 1478.86 +basic_stringbuf<_CharT, _Traits, _Alloc>::str(const basic_string<_CharT, _Traits, _Alloc>& __s)
 1478.87 +{
 1478.88 +  _M_str = __s;
 1478.89 +  _M_set_ptrs();
 1478.90 +}
 1478.91 +
 1478.92 +template <class _CharT, class _Traits, class _Alloc>
 1478.93 +void 
 1478.94 +basic_stringbuf<_CharT, _Traits, _Alloc>::_M_set_ptrs() {
 1478.95 +  _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
 1478.96 +  _CharT* __data_end = __data_ptr + _M_str.size();
 1478.97 +  // The initial read position is the beginning of the string.
 1478.98 +  if (_M_mode & ios_base::in) {
 1478.99 +    if (_M_mode & ios_base::ate)
1478.100 +      this->setg(__data_ptr, __data_end, __data_end);
1478.101 +    else
1478.102 +      this->setg(__data_ptr, __data_ptr, __data_end);
1478.103 +  }
1478.104 +  
1478.105 +  // The initial write position is the beginning of the string.
1478.106 +  if (_M_mode & ios_base::out) {
1478.107 +    if (_M_mode & (ios_base::app | ios_base::ate))
1478.108 +      this->setp(__data_end, __data_end);
1478.109 +    else
1478.110 +      this->setp(__data_ptr, __data_end);
1478.111 +  }
1478.112 +}
1478.113 +
1478.114 +// Precondition: gptr() >= egptr().  Returns a character, if one is available.
1478.115 +template <class _CharT, class _Traits, class _Alloc>
1478.116 +_STLP_EXP_DECLSPEC __BSB_int_type__
1478.117 +basic_stringbuf<_CharT, _Traits, _Alloc>::underflow()
1478.118 +{
1478.119 +  return this->gptr() != this->egptr()
1478.120 +    ? _Traits::to_int_type(*this->gptr())
1478.121 +    : _Traits::eof();
1478.122 +}
1478.123 +
1478.124 +// Precondition: gptr() >= egptr().
1478.125 +template <class _CharT, class _Traits, class _Alloc>
1478.126 +_STLP_EXP_DECLSPEC __BSB_int_type__
1478.127 +basic_stringbuf<_CharT, _Traits, _Alloc>::uflow()
1478.128 +{
1478.129 +  if (this->gptr() != this->egptr()) {
1478.130 +    int_type __c = _Traits::to_int_type(*this->gptr());
1478.131 +    this->gbump(1);
1478.132 +    return __c;
1478.133 +  }
1478.134 +  else
1478.135 +    return _Traits::eof();
1478.136 +}
1478.137 +
1478.138 +template <class _CharT, class _Traits, class _Alloc>
1478.139 +_STLP_EXP_DECLSPEC __BSB_int_type__
1478.140 +basic_stringbuf<_CharT, _Traits, _Alloc>::pbackfail(int_type __c)
1478.141 +{
1478.142 +  if (this->gptr() != this->eback()) {
1478.143 +    if (!_Traits::eq_int_type(__c, _Traits::eof())) {
1478.144 +
1478.145 +if (_Traits::eq(_Traits::to_char_type(__c), this->gptr()[-1])
1478.146 +      		|| _M_mode == (ios_base::in | ios_base::out)) {
1478.147 +        this->gbump(-1);
1478.148 +      	*this->gptr() = _Traits::to_char_type(__c);
1478.149 +      	return _Traits::not_eof(__c);
1478.150 +      }
1478.151 +      else{
1478.152 +	  	return _Traits::eof();
1478.153 +	  }
1478.154 +    }
1478.155 +    else {
1478.156 +      this->gbump(-1);
1478.157 +      return _Traits::not_eof(__c);
1478.158 +    }
1478.159 +  }
1478.160 +	else
1478.161 +    return _Traits::eof();
1478.162 +}
1478.163 +
1478.164 +template <class _CharT, class _Traits, class _Alloc>
1478.165 +_STLP_EXP_DECLSPEC __BSB_int_type__
1478.166 +basic_stringbuf<_CharT, _Traits, _Alloc>::overflow(int_type __c)
1478.167 +{
1478.168 +  // fbp : reverse order of "ifs" to pass Dietmar's test.
1478.169 +  // Apparently, standard allows overflow with eof even for read-only streams.
1478.170 +  if (!_Traits::eq_int_type(__c, _Traits::eof())) {
1478.171 +    if (_M_mode & ios_base::out) {
1478.172 +      if (!(_M_mode & ios_base::in)) {
1478.173 +        // It's a write-only streambuf, so we can use special append buffer.
1478.174 +        if (this->pptr() == this->epptr())
1478.175 +          this->_M_append_buffer();
1478.176 +      
1478.177 +        if (this->pptr() != this->epptr()) {
1478.178 +          *this->pptr() = _Traits::to_char_type(__c);
1478.179 +          this->pbump(1);
1478.180 +          return __c;
1478.181 +        }
1478.182 +        else
1478.183 +          return _Traits::eof();
1478.184 +      }
1478.185 +
1478.186 +      else {
1478.187 +        // We're not using a special append buffer, just the string itself.
1478.188 +        if (this->pptr() == this->epptr()) {
1478.189 +          ptrdiff_t __offset = this->gptr() - this->eback();
1478.190 +          _M_str.push_back(_Traits::to_char_type(__c));
1478.191 +
1478.192 +	  _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1478.193 +	  size_t __data_size = _M_str.size();
1478.194 +
1478.195 +          this->setg(__data_ptr, __data_ptr + __offset, __data_ptr+__data_size);
1478.196 +          this->setp(__data_ptr, __data_ptr + __data_size);
1478.197 +          this->pbump((int)__data_size);
1478.198 +          return __c;
1478.199 +        }
1478.200 +        else {
1478.201 +          *this->pptr() = _Traits::to_char_type(__c);
1478.202 +          this->pbump(1);
1478.203 +          return __c;
1478.204 +        }
1478.205 +      }
1478.206 +    }
1478.207 +    else                          // Overflow always fails if it's read-only 
1478.208 +      return _Traits::eof();
1478.209 +  }
1478.210 +  else                        // __c is EOF, so we don't have to do anything
1478.211 +    return _Traits::not_eof(__c);
1478.212 +}
1478.213 +
1478.214 +template <class _CharT, class _Traits, class _Alloc>
1478.215 +_STLP_EXP_DECLSPEC streamsize 
1478.216 +basic_stringbuf<_CharT, _Traits, _Alloc>::xsputn(const char_type* __s,
1478.217 +                                                 streamsize __n)
1478.218 +{
1478.219 +  streamsize __nwritten = 0;
1478.220 +
1478.221 +  if ((_M_mode & ios_base::out) && __n > 0) {
1478.222 +    // If the put pointer is somewhere in the middle of the string,
1478.223 +    // then overwrite instead of append.
1478.224 +    if (this->pbase() == _M_str.data() ) {
1478.225 +      ptrdiff_t __avail = _M_str.data() + _M_str.size() - this->pptr();
1478.226 +      if (__avail > __n) {
1478.227 +        _Traits::copy(this->pptr(), __s, __n);
1478.228 +        this->pbump((int)__n);
1478.229 +#ifdef __SYMBIAN32__
1478.230 +   //     _M_str._M_stream_pos += __n; //increment streampos to number of characters in stream
1478.231 +#endif
1478.232 +        return __n;
1478.233 +      }
1478.234 +      else {
1478.235 +        _Traits::copy(this->pptr(), __s, __avail);
1478.236 +        __nwritten += __avail;
1478.237 +        __n -= __avail;
1478.238 +        __s += __avail;
1478.239 +#ifdef __SYMBIAN32__
1478.240 +  //      _M_str._M_stream_pos += __avail;//increment streampos to number of characters in stream
1478.241 +#endif
1478.242 +        this->setp(_M_Buf, _M_Buf + __STATIC_CAST(int,_S_BufSiz));
1478.243 +      }
1478.244 +    }
1478.245 +
1478.246 +    // At this point we know we're appending.
1478.247 +    if (_M_mode & ios_base::in) {
1478.248 +      ptrdiff_t __get_offset = this->gptr() - this->eback();
1478.249 +      _M_str.append(__s, __s + __n);
1478.250 +      
1478.251 +      _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1478.252 +      size_t __data_size = _M_str.size();
1478.253 +
1478.254 +      this->setg(__data_ptr, __data_ptr + __get_offset, __data_ptr+__data_size);
1478.255 +      this->setp(__data_ptr, __data_ptr + __data_size);
1478.256 +      this->pbump((int)__data_size);
1478.257 +    }
1478.258 +    else {
1478.259 +      _M_append_buffer();
1478.260 +#ifdef __SYMBIAN32__      
1478.261 +      if (_M_str._M_stream_pos >= 0 
1478.262 +          && (_M_str._M_stream_pos < _M_str.size())) {          
1478.263 +          if((_M_str.size() - _M_str._M_stream_pos) >= __n)
1478.264 +          	_M_str.replace(_M_str._M_stream_pos, __n, __s);          
1478.265 +          else
1478.266 +          	{
1478.267 +          	_M_str.replace(_M_str._M_stream_pos, (_M_str.size() - _M_str._M_stream_pos), __s);
1478.268 +          	_M_str.append(__s + (__n - (_M_str.size() - _M_str._M_stream_pos)), __s + __n);
1478.269 +          	}
1478.270 +      } else {
1478.271 +          _M_str.append(__s, __s + __n);
1478.272 +      }
1478.273 +      _M_str._M_stream_pos += __n;
1478.274 +#else //__SYMBIAN32__      
1478.275 +      _M_str.append(__s, __s + __n);
1478.276 +#endif // __SYMBIAN32__      
1478.277 +    }
1478.278 +    __nwritten += __n;
1478.279 +  }
1478.280 +
1478.281 +  return __nwritten;
1478.282 +}
1478.283 +
1478.284 +template <class _CharT, class _Traits, class _Alloc>
1478.285 +streamsize 
1478.286 +basic_stringbuf<_CharT, _Traits, _Alloc>::_M_xsputnc(char_type __c,
1478.287 +                                                     streamsize __n)
1478.288 +{
1478.289 +  streamsize __nwritten = 0;
1478.290 +
1478.291 +  if ((_M_mode & ios_base::out) && __n > 0) {
1478.292 +    // If the put pointer is somewhere in the middle of the string,
1478.293 +    // then overwrite instead of append.
1478.294 +    if (this->pbase() == _M_str.data()) {
1478.295 +      ptrdiff_t __avail = _M_str.data() + _M_str.size() - this->pptr();
1478.296 +      if (__avail > __n) {
1478.297 +        _Traits::assign(this->pptr(), __n, __c);
1478.298 +        this->pbump((int)__n);
1478.299 +        return __n;
1478.300 +      }
1478.301 +      else {
1478.302 +        _Traits::assign(this->pptr(), __avail, __c);
1478.303 +        __nwritten += __avail;
1478.304 +        __n -= __avail;
1478.305 +        this->setp(_M_Buf, _M_Buf + __STATIC_CAST(int,_S_BufSiz));
1478.306 +      }
1478.307 +    }
1478.308 +
1478.309 +    // At this point we know we're appending.
1478.310 +    if (this->_M_mode & ios_base::in) {
1478.311 +      ptrdiff_t __get_offset = this->gptr() - this->eback();
1478.312 +      _M_str.append(__n, __c);
1478.313 +
1478.314 +      _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1478.315 +      size_t __data_size = _M_str.size();
1478.316 +
1478.317 +      this->setg(__data_ptr, __data_ptr + __get_offset, __data_ptr+__data_size);
1478.318 +      this->setp(__data_ptr, __data_ptr + __data_size);
1478.319 +      this->pbump((int)__data_size);
1478.320 +
1478.321 +    }
1478.322 +    else {
1478.323 +      _M_append_buffer();
1478.324 +//      _M_str.append(__n, __c);
1478.325 +#ifdef __SYMBIAN32__      
1478.326 +      if (_M_str._M_stream_pos >= 0 
1478.327 +          && (_M_str._M_stream_pos < _M_str.size())) {          
1478.328 +          if((_M_str.size() - _M_str._M_stream_pos) >= __n)
1478.329 +          	_M_str.replace(_M_str._M_stream_pos,__n, __n, __c);          
1478.330 +          else
1478.331 +          	{
1478.332 +          	_M_str.replace(_M_str._M_stream_pos, (_M_str.size() - _M_str._M_stream_pos), (_M_str.size() - _M_str._M_stream_pos), __c);
1478.333 +          	_M_str.append(__n, __c);
1478.334 +          	}
1478.335 +      } else {
1478.336 +          _M_str.append(__n, __c);
1478.337 +      }
1478.338 +      _M_str._M_stream_pos += __n;
1478.339 +#else //__SYMBIAN32__      
1478.340 +      _M_str.append(__n, __c);
1478.341 +#endif // __SYMBIAN32__      
1478.342 +    }
1478.343 +
1478.344 +    __nwritten += __n;
1478.345 +  }
1478.346 +
1478.347 +  return __nwritten;
1478.348 +}
1478.349 +
1478.350 +// According to the C++ standard the effects of setbuf are implementation
1478.351 +// defined, except that setbuf(0, 0) has no effect.  In this implementation,
1478.352 +// setbuf(<anything>, n), for n > 0, calls reserve(n) on the underlying
1478.353 +// string.
1478.354 +template <class _CharT, class _Traits, class _Alloc>
1478.355 +_STLP_EXP_DECLSPEC basic_streambuf<_CharT, _Traits>*
1478.356 +#ifdef __SYMBIAN32__
1478.357 +basic_stringbuf<_CharT, _Traits, _Alloc>::setbuf(_CharT* __s, streamsize __n)
1478.358 +#else
1478.359 +basic_stringbuf<_CharT, _Traits, _Alloc>::setbuf(_CharT*, streamsize __n)
1478.360 +#endif //__SYMBIAN32__
1478.361 +{
1478.362 +  if (__n > 0) {
1478.363 +    bool __do_get_area = false;
1478.364 +    bool __do_put_area = false;
1478.365 +    ptrdiff_t __offg = 0;
1478.366 +    ptrdiff_t __offp = 0;
1478.367 +
1478.368 +    if (this->pbase() == _M_str.data()) {
1478.369 +      __do_put_area = true;
1478.370 +      __offp = this->pptr() - this->pbase();
1478.371 +    }
1478.372 +
1478.373 +    if (this->eback() == _M_str.data()) {
1478.374 +      __do_get_area = true;
1478.375 +      __offg = this->gptr() - this->eback();
1478.376 +    }
1478.377 +
1478.378 +    if ((_M_mode & ios_base::out) && !(_M_mode & ios_base::in))
1478.379 +      _M_append_buffer();
1478.380 +
1478.381 +    _M_str.reserve(__n);
1478.382 +
1478.383 +    _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1478.384 +#ifdef __SYMBIAN32__
1478.385 +    size_t __data_size = __n;
1478.386 +    memmove(__data_ptr, __s, __n*sizeof(_CharT));    
1478.387 +    _M_str._M_start = __data_ptr;
1478.388 +    _M_str._M_finish = __data_ptr+__n;
1478.389 +#else
1478.390 +    size_t __data_size = _M_str.size();
1478.391 +#endif //__SYMBIAN32__
1478.392 +
1478.393 +    if (__do_get_area) {
1478.394 +#ifdef __SYMBIAN32__
1478.395 +      this->setg(__data_ptr, __data_ptr, __data_ptr+__data_size);
1478.396 +#else
1478.397 +      this->setg(__data_ptr, __data_ptr + __offg, __data_ptr+__data_size);
1478.398 +#endif //__SYMBIAN32__      
1478.399 +    }
1478.400 +
1478.401 +    if (__do_put_area) {
1478.402 +      this->setp(__data_ptr, __data_ptr+__data_size);
1478.403 +#ifndef __SYMBIAN32__
1478.404 +      this->pbump((int)__offp);
1478.405 +#endif //__SYMBIAN32__      
1478.406 +    }
1478.407 +  }
1478.408 +
1478.409 +  return this;
1478.410 +}
1478.411 +
1478.412 +template <class _CharT, class _Traits, class _Alloc>
1478.413 +_STLP_EXP_DECLSPEC __BSB_pos_type__
1478.414 +basic_stringbuf<_CharT, _Traits, _Alloc>::seekoff(off_type __off, 
1478.415 +            ios_base::seekdir __dir,
1478.416 +            ios_base::openmode __mode)
1478.417 +{
1478.418 +  bool __stl_in  = false;
1478.419 +  bool __stl_out = false;
1478.420 +  
1478.421 +  if ((__mode & (ios_base::in | ios_base::out)) == (ios_base::in | ios_base::out) ) {
1478.422 +    if (__dir == ios_base::beg || __dir == ios_base::end)
1478.423 +      __stl_in = __stl_out = true;
1478.424 +  }
1478.425 +  else if (__mode & ios_base::in)
1478.426 +    __stl_in = true;
1478.427 +  else if (__mode & ios_base::out)
1478.428 +    __stl_out = true;
1478.429 +
1478.430 +  if (!__stl_in && !__stl_out)
1478.431 +    return pos_type(off_type(-1));
1478.432 +  else if ((__stl_in  && (!(_M_mode & ios_base::in) || this->gptr() == 0)) ||
1478.433 +           (__stl_out && (!(_M_mode & ios_base::out) || this->pptr() == 0)))
1478.434 +    return pos_type(off_type(-1));
1478.435 +
1478.436 +#ifdef __SYMBIAN32__
1478.437 +  if (_M_mode & ios_base::out)
1478.438 +#else
1478.439 +  if ((_M_mode & ios_base::out) && !(_M_mode & ios_base::in))
1478.440 +#endif
1478.441 +    _M_append_buffer();
1478.442 +
1478.443 +  streamoff __newoff;
1478.444 +  switch(__dir) {
1478.445 +  case ios_base::beg:
1478.446 +    __newoff = 0;
1478.447 +    break;
1478.448 +  case ios_base::end:
1478.449 +    __newoff = _M_str.size();
1478.450 +    break;
1478.451 +  case ios_base::cur:
1478.452 +    __newoff = __stl_in ? this->gptr() - this->eback() 
1478.453 +#ifdef __SYMBIAN32__    
1478.454 +                    : ((this->pbase() != this->_M_str) ? _M_str._M_stream_pos
1478.455 +                    : this->pptr() - this->pbase());
1478.456 +#else
1478.457 +                    : this->pptr() - this->pbase();
1478.458 +#endif //__SYMBIAN32__                                                            
1478.459 +    break;
1478.460 +  default:
1478.461 +    return pos_type(off_type(-1));
1478.462 +  }
1478.463 +
1478.464 +  __off += __newoff;
1478.465 +
1478.466 +  if (__stl_in) {
1478.467 +    ptrdiff_t __n = this->egptr() - this->eback();
1478.468 +
1478.469 +    if (__off < 0 || __off > __n)
1478.470 +      return pos_type(off_type(-1));
1478.471 +    else
1478.472 +      this->setg(this->eback(), this->eback() + __off, this->eback() + __n);
1478.473 +  }
1478.474 +
1478.475 +  if (__stl_out) {
1478.476 +    ptrdiff_t __n;
1478.477 +#ifdef __SYMBIAN32__
1478.478 +    //if (this->pbase() != this->_M_str) {
1478.479 +    void* __data_ptr1 = reinterpret_cast<void*>(this->pbase());
1478.480 +		_CharT* __data_ptr2 = __CONST_CAST(_CharT*,this->_M_str.data());
1478.481 +				
1478.482 +       if (__data_ptr1 != __data_ptr2) {
1478.483 +        __n = _M_str.size();
1478.484 +    } else {
1478.485 +#endif // __SYMBIAN32__
1478.486 +    __n = this->epptr() - this->pbase();
1478.487 +#ifdef __SYMBIAN32__
1478.488 +    }
1478.489 +#endif //__SYMBIAN32__        
1478.490 +    if (__off < 0 || __off > __n)
1478.491 +      return pos_type(off_type(-1));
1478.492 +    else {
1478.493 +#ifdef __SYMBIAN32__
1478.494 +		void* __data_ptr1 = reinterpret_cast<void*>(this->pbase());
1478.495 +		_CharT* __data_ptr2 = __CONST_CAST(_CharT*,this->_M_str.data());
1478.496 +				
1478.497 +       if (__data_ptr1 != __data_ptr2) {
1478.498 +           _M_str._M_stream_pos = __off;
1478.499 +       } else {
1478.500 +#endif //__SYMBIAN32__
1478.501 +      this->setp(this->pbase(), this->pbase() + __n);
1478.502 +      this->pbump((int)__off);
1478.503 +#ifdef __SYMBIAN32__      
1478.504 +      }
1478.505 +#endif // __SYMBIAN32__      
1478.506 +    }
1478.507 +  }
1478.508 +
1478.509 +  return pos_type(__off);
1478.510 +}
1478.511 +
1478.512 +template <class _CharT, class _Traits, class _Alloc>
1478.513 +_STLP_EXP_DECLSPEC __BSB_pos_type__
1478.514 +basic_stringbuf<_CharT, _Traits, _Alloc>
1478.515 +  ::seekpos(pos_type __pos, ios_base::openmode __mode)
1478.516 +{
1478.517 +  bool __stl_in  = (__mode & ios_base::in) != 0;
1478.518 +  bool __stl_out = (__mode & ios_base::out) != 0;
1478.519 +
1478.520 +  if ((__stl_in  && (!(_M_mode & ios_base::in) || this->gptr() == 0)) ||
1478.521 +      (__stl_out && (!(_M_mode & ios_base::out) || this->pptr() == 0)) ||
1478.522 +      (!__stl_in && !__stl_out))
1478.523 +    return pos_type(off_type(-1));
1478.524 +
1478.525 +  const off_type __n = __pos - pos_type(off_type(0));
1478.526 +  if ((_M_mode & ios_base::out) && !(_M_mode & ios_base::in))
1478.527 +    _M_append_buffer();
1478.528 +
1478.529 +  if (__stl_in) {
1478.530 +    if (__n < 0 || __n > this->egptr() - this->eback())
1478.531 +      return pos_type(off_type(-1));
1478.532 +    this->setg(this->eback(), this->eback() + __n, this->egptr());
1478.533 +  }
1478.534 +
1478.535 +  if (__stl_out) {
1478.536 +    if (__n < 0 || size_t(__n) > _M_str.size())
1478.537 +      return pos_type(off_type(-1));
1478.538 +
1478.539 +    _CharT* __data_ptr = __CONST_CAST(_CharT*,_M_str.data());
1478.540 +    size_t __data_size = _M_str.size();
1478.541 +    
1478.542 +    this->setp(__data_ptr, __data_ptr+__data_size);
1478.543 +    this->pbump((int)__n);
1478.544 +  }
1478.545 +
1478.546 +  return __pos;
1478.547 +}
1478.548 +
1478.549 +// This is declared as a const member function because it is 
1478.550 +// called by basic_stringbuf<>::str().  Precondition: this is a
1478.551 +// write-only stringbuf.  We can't use an output buffer for read-
1478.552 +// write stringbufs.  Postcondition: pptr is reset to the beginning
1478.553 +// of the buffer.
1478.554 +template <class _CharT, class _Traits, class _Alloc>
1478.555 +void basic_stringbuf<_CharT, _Traits, _Alloc>::_M_append_buffer() const
1478.556 +
1478.557 +{
1478.558 +  // Do we have a buffer to append?
1478.559 +  if (this->pbase() == this->_M_Buf && this->pptr() != this->_M_Buf) {
1478.560 +    basic_stringbuf<_CharT, _Traits, _Alloc>* __this = __CONST_CAST(_Self*,this);
1478.561 +#ifdef __SYMBIAN32__    
1478.562 +    size_t __n = this->pptr() - this->pbase();
1478.563 +    if (__this->_M_str._M_stream_pos >= 0 
1478.564 +        && (__this->_M_str._M_stream_pos != __this->_M_str.size())) {
1478.565 +        {
1478.566 +        *(this->pptr()) = (_CharT)0;
1478.567 +#ifdef  __SYMBIAN32__
1478.568 +        __this->_M_str.replace(_M_str._M_stream_pos, __n, (const _CharT*)this->pbase(), (const _CharT*)this->pptr()-(const _CharT*)this->pbase());
1478.569 +#else
1478.570 +	__this->_M_str.replace(_M_str._M_stream_pos, __n, (const _CharT*)this->pbase());
1478.571 +
1478.572 +#endif
1478.573 +        }
1478.574 +    } else {
1478.575 +        __this->_M_str.append((const _CharT*)this->pbase(), (const _CharT*)this->pptr());
1478.576 +    }
1478.577 +    __this->_M_str._M_stream_pos += __n;
1478.578 +#else // __SYMBAIN32__    
1478.579 +    __this->_M_str.append((const _CharT*)this->pbase(), (const _CharT*)this->pptr());
1478.580 +#endif // __SYMBIAN32__    
1478.581 +    __this->setp(__CONST_CAST(_CharT*,_M_Buf),
1478.582 +                 __CONST_CAST(_CharT*,_M_Buf + __STATIC_CAST(int,_S_BufSiz)));
1478.583 +  }
1478.584 +
1478.585 +  // Have we run off the end of the string?
1478.586 +  else if (this->pptr() == this->epptr()) {
1478.587 +    basic_stringbuf<_CharT, _Traits, _Alloc>* __this = __CONST_CAST(_Self*,this);
1478.588 +    __this->setp(__CONST_CAST(_CharT*,_M_Buf),
1478.589 +                 __CONST_CAST(_CharT*,_M_Buf + __STATIC_CAST(int,_S_BufSiz)));
1478.590 +  __this->_M_str._M_stream_pos = __this->_M_str._M_finish - __this->_M_str._M_start;
1478.591 +  }
1478.592 +}
1478.593 +
1478.594 +//----------------------------------------------------------------------
1478.595 +// Non-inline istringstream member functions.
1478.596 +
1478.597 +template <class _CharT, class _Traits, class _Alloc>
1478.598 +basic_istringstream<_CharT, _Traits, _Alloc>
1478.599 +  ::basic_istringstream(ios_base::openmode __mode)
1478.600 +    : basic_istream<_CharT, _Traits>(0),
1478.601 +      _M_buf(__mode | ios_base::in)
1478.602 +{
1478.603 +  this->init(&_M_buf);
1478.604 +}
1478.605 +
1478.606 +template <class _CharT, class _Traits, class _Alloc>
1478.607 +basic_istringstream<_CharT, _Traits, _Alloc>
1478.608 +  ::basic_istringstream(const _String& __str,ios_base::openmode __mode)
1478.609 +    : basic_istream<_CharT, _Traits>(0),
1478.610 +      _M_buf(__str, __mode | ios_base::in)
1478.611 +{
1478.612 +  this->init(&_M_buf);
1478.613 +}
1478.614 +
1478.615 +template <class _CharT, class _Traits, class _Alloc>
1478.616 +basic_istringstream<_CharT, _Traits, _Alloc>::~basic_istringstream()
1478.617 +{}
1478.618 +
1478.619 +//----------------------------------------------------------------------
1478.620 +// Non-inline ostringstream member functions.
1478.621 +
1478.622 +template <class _CharT, class _Traits, class _Alloc>
1478.623 +basic_ostringstream<_CharT, _Traits, _Alloc>
1478.624 +  ::basic_ostringstream(ios_base::openmode __mode)
1478.625 +    : basic_ostream<_CharT, _Traits>(0),
1478.626 +      _M_buf(__mode | ios_base::out)
1478.627 +{
1478.628 +  this->init(&_M_buf);
1478.629 +}
1478.630 +  
1478.631 +template <class _CharT, class _Traits, class _Alloc>
1478.632 +basic_ostringstream<_CharT, _Traits, _Alloc>
1478.633 +  ::basic_ostringstream(const _String& __str, ios_base::openmode __mode)
1478.634 +    : basic_ostream<_CharT, _Traits>(0),
1478.635 +      _M_buf(__str, __mode | ios_base::out)
1478.636 +{
1478.637 +  this->init(&_M_buf);
1478.638 +}
1478.639 +
1478.640 +template <class _CharT, class _Traits, class _Alloc>
1478.641 +basic_ostringstream<_CharT, _Traits, _Alloc>::~basic_ostringstream()
1478.642 +{}
1478.643 +
1478.644 +//----------------------------------------------------------------------
1478.645 +// Non-inline stringstream member functions.
1478.646 +
1478.647 +template <class _CharT, class _Traits, class _Alloc>
1478.648 +_STLP_EXP_DECLSPEC basic_stringstream<_CharT, _Traits, _Alloc>
1478.649 +  ::basic_stringstream(ios_base::openmode __mode)
1478.650 +    : basic_iostream<_CharT, _Traits>(0), _M_buf(__mode)
1478.651 +{
1478.652 +   this->init(&_M_buf);
1478.653 +}
1478.654 +
1478.655 +template <class _CharT, class _Traits, class _Alloc>
1478.656 +_STLP_EXP_DECLSPEC basic_stringstream<_CharT, _Traits, _Alloc>
1478.657 +  ::basic_stringstream(const _String& __str, ios_base::openmode __mode)
1478.658 +    : basic_iostream<_CharT, _Traits>(0), _M_buf(__str, __mode)
1478.659 +{
1478.660 +  this->init(&_M_buf);
1478.661 +}
1478.662 +
1478.663 +template <class _CharT, class _Traits, class _Alloc>
1478.664 +basic_stringstream<_CharT, _Traits, _Alloc>::~basic_stringstream()
1478.665 +{}
1478.666 +
1478.667 +_STLP_END_NAMESPACE
1478.668 +
1478.669 +# undef __BSB_int_type__
1478.670 +# undef __BSB_pos_type__
1478.671 +
1478.672 +# endif /* EXPOSE */
1478.673 +
1478.674 +#endif /* _STLP_SSTREAM_C */
  1479.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1479.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_sstream.h	Wed Mar 31 12:27:01 2010 +0100
  1479.3 @@ -0,0 +1,273 @@
  1479.4 +/*
  1479.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1479.6 + * Copyright (c) 1999
  1479.7 + * Silicon Graphics Computer Systems, Inc.
  1479.8 + *
  1479.9 + * Copyright (c) 1999 
 1479.10 + * Boris Fomitchev
 1479.11 + *
 1479.12 + * This material is provided "as is", with absolutely no warranty expressed
 1479.13 + * or implied. Any use is at your own risk.
 1479.14 + *
 1479.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1479.16 + * without fee, provided the above notices are retained on all copies.
 1479.17 + * Permission to modify the code and to distribute modified code is granted,
 1479.18 + * provided the above notices are retained, and a notice that the code was
 1479.19 + * modified is included with the above copyright notice.
 1479.20 + *
 1479.21 + */ 
 1479.22 +
 1479.23 +
 1479.24 +// This header defines classes basic_stringbuf, basic_istringstream,
 1479.25 +// basic_ostringstream, and basic_stringstream.  These classes 
 1479.26 +// represent streamsbufs and streams whose sources or destinations are
 1479.27 +// C++ strings.
 1479.28 +
 1479.29 +#ifndef _STLP_SSTREAM_H
 1479.30 +#define _STLP_SSTREAM_H
 1479.31 +
 1479.32 +#ifndef _STLP_INTERNAL_STREAMBUF
 1479.33 +# include <stl/_streambuf.h>
 1479.34 +#endif
 1479.35 +
 1479.36 +#ifndef _STLP_INTERNAL_ISTREAM_H
 1479.37 +# include <stl/_istream.h> // Includes <ostream>, <ios>, <iosfwd>
 1479.38 +#endif
 1479.39 +
 1479.40 +#ifndef _STLP_STRING_H
 1479.41 +# include <stl/_string.h>
 1479.42 +#endif
 1479.43 +
 1479.44 +_STLP_BEGIN_NAMESPACE
 1479.45 +
 1479.46 +//----------------------------------------------------------------------
 1479.47 +// This version of basic_stringbuf relies on the internal details of
 1479.48 +// basic_string.  It relies on the fact that, in this implementation,
 1479.49 +// basic_string's iterators are pointers.  It also assumes (as allowed
 1479.50 +// by the standard) that _CharT is a POD type.
 1479.51 +
 1479.52 +// We have a very small buffer for the put area, just so that we don't
 1479.53 +// have to use append() for every sputc.  Conceptually, the buffer
 1479.54 +// immediately follows the end of the underlying string.  We use this
 1479.55 +// buffer when appending to write-only streambufs, but we don't use it
 1479.56 +// for read-write streambufs.
 1479.57 +
 1479.58 +template <class _CharT, class _Traits, class _Alloc>
 1479.59 +#ifdef __SYMBIAN32__
 1479.60 +NONSHARABLE_CLASS ( basic_stringbuf ) : public basic_streambuf<_CharT, _Traits>
 1479.61 +#else
 1479.62 +class basic_stringbuf : public basic_streambuf<_CharT, _Traits>
 1479.63 +#endif
 1479.64 +{
 1479.65 +public:                         // Typedefs.
 1479.66 +  typedef _CharT                     char_type;
 1479.67 +  typedef typename _Traits::int_type int_type;
 1479.68 +  typedef typename _Traits::pos_type pos_type;
 1479.69 +  typedef typename _Traits::off_type off_type;
 1479.70 +  typedef _Traits                    traits_type;
 1479.71 +
 1479.72 +  typedef basic_streambuf<_CharT, _Traits>          _Base;
 1479.73 +  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Self;
 1479.74 +  typedef basic_string<_CharT, _Traits, _Alloc>     _String;
 1479.75 +
 1479.76 +public:                         // Constructors, destructor.
 1479.77 +  _STLP_DECLSPEC explicit basic_stringbuf(ios_base::openmode __mode
 1479.78 +                                      = ios_base::in | ios_base::out);
 1479.79 +  _STLP_DECLSPEC explicit basic_stringbuf(const _String& __s, ios_base::openmode __mode
 1479.80 +                                      = ios_base::in | ios_base::out);
 1479.81 +  _STLP_DECLSPEC virtual ~basic_stringbuf();
 1479.82 +
 1479.83 +public:                         // Get or set the string.
 1479.84 +  _String str() const { 
 1479.85 +      if ( _M_mode & ios_base::out )
 1479.86 +           _M_append_buffer();
 1479.87 +      return _M_str; 
 1479.88 +   }
 1479.89 +  _STLP_DECLSPEC void str(const _String& __s);
 1479.90 +
 1479.91 +protected:                      // Overridden virtual member functions.
 1479.92 +  virtual int_type underflow();
 1479.93 +  virtual int_type uflow();
 1479.94 +  virtual int_type pbackfail(int_type __c);
 1479.95 +  virtual int_type overflow(int_type __c);
 1479.96 +  int_type pbackfail() {return pbackfail(_Traits::eof());}
 1479.97 +  int_type overflow() {return overflow(_Traits::eof());}
 1479.98 +
 1479.99 +  virtual streamsize xsputn(const char_type* __s, streamsize __n);
1479.100 +  virtual streamsize _M_xsputnc(char_type __c, streamsize __n);
1479.101 +
1479.102 +  virtual _Base* setbuf(_CharT* __buf, streamsize __n);
1479.103 +  virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir,
1479.104 +                           ios_base::openmode __mode 
1479.105 +                                      = ios_base::in | ios_base::out);
1479.106 +  virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 
1479.107 +                                      = ios_base::in | ios_base::out);
1479.108 +  ios_base::openmode _M_mode;
1479.109 +
1479.110 +private:                        // Helper functions.
1479.111 +  // Append the internal buffer to the string if necessary.
1479.112 +  void _M_append_buffer() const;
1479.113 +  void _M_set_ptrs();
1479.114 +
1479.115 +private:
1479.116 +  mutable basic_string<_CharT, _Traits, _Alloc> _M_str;
1479.117 +
1479.118 +  enum _JustName { _S_BufSiz = 8 };
1479.119 +  _CharT _M_Buf[ 8 /* _S_BufSiz */];
1479.120 +};
1479.121 +
1479.122 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1479.123 +_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<char, char_traits<char>, allocator<char> >;
1479.124 +#  if !defined (_STLP_NO_WCHAR_T)
1479.125 +_STLP_EXPORT_TEMPLATE_CLASS basic_stringbuf<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1479.126 +#  endif
1479.127 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1479.128 +
1479.129 +//----------------------------------------------------------------------
1479.130 +// Class basic_istringstream, an input stream that uses a stringbuf.
1479.131 +
1479.132 +template <class _CharT, class _Traits, class _Alloc>
1479.133 +#ifdef __SYMBIAN32__
1479.134 +NONSHARABLE_CLASS ( basic_istringstream ) : public basic_istream<_CharT, _Traits>
1479.135 +#else
1479.136 +class basic_istringstream : public basic_istream<_CharT, _Traits>
1479.137 +#endif
1479.138 +{
1479.139 +public:                         // Typedefs
1479.140 +  typedef typename _Traits::char_type   char_type;
1479.141 +  typedef typename _Traits::int_type    int_type;
1479.142 +  typedef typename _Traits::pos_type    pos_type;
1479.143 +  typedef typename _Traits::off_type    off_type;
1479.144 +  typedef _Traits traits_type;
1479.145 +
1479.146 +  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1479.147 +  typedef basic_istream<_CharT, _Traits>            _Base;
1479.148 +  typedef basic_string<_CharT, _Traits, _Alloc>     _String;
1479.149 +  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Buf;
1479.150 +
1479.151 +public:                         // Constructors, destructor.
1479.152 +  basic_istringstream(ios_base::openmode __mode = ios_base::in);
1479.153 +  basic_istringstream(const _String& __str,
1479.154 +                      ios_base::openmode __mode = ios_base::in);
1479.155 +  ~basic_istringstream();
1479.156 +
1479.157 +public:                         // Member functions
1479.158 +
1479.159 +  basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const
1479.160 +    { return __CONST_CAST(_Buf*,&_M_buf); }
1479.161 +
1479.162 +  _String str() const { return _M_buf.str(); }
1479.163 +  void str(const _String& __s) { _M_buf.str(__s); }
1479.164 +  
1479.165 +private:
1479.166 +  basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf;
1479.167 +};
1479.168 +
1479.169 +
1479.170 +//----------------------------------------------------------------------
1479.171 +// Class basic_ostringstream, an output stream that uses a stringbuf.
1479.172 +
1479.173 +template <class _CharT, class _Traits, class _Alloc>
1479.174 +#ifdef __SYMBIAN32__
1479.175 +NONSHARABLE_CLASS ( basic_ostringstream ) : public basic_ostream<_CharT, _Traits>
1479.176 +#else
1479.177 +class basic_ostringstream : public basic_ostream<_CharT, _Traits>
1479.178 +#endif
1479.179 +{
1479.180 +public:                         // Typedefs
1479.181 +  typedef typename _Traits::char_type   char_type;
1479.182 +  typedef typename _Traits::int_type    int_type;
1479.183 +  typedef typename _Traits::pos_type    pos_type;
1479.184 +  typedef typename _Traits::off_type    off_type;
1479.185 +  typedef _Traits traits_type;
1479.186 +
1479.187 +  typedef basic_ios<_CharT, _Traits>                _Basic_ios;
1479.188 +  typedef basic_ostream<_CharT, _Traits>            _Base;
1479.189 +  typedef basic_string<_CharT, _Traits, _Alloc>     _String;
1479.190 +  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Buf;
1479.191 +
1479.192 +public:                         // Constructors, destructor.
1479.193 +  basic_ostringstream(ios_base::openmode __mode = ios_base::out);
1479.194 +  basic_ostringstream(const _String& __str,
1479.195 +                      ios_base::openmode __mode = ios_base::out);
1479.196 +  ~basic_ostringstream();
1479.197 +
1479.198 +public:                         // Member functions.
1479.199 +
1479.200 +  basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const
1479.201 +    { return __CONST_CAST(_Buf*,&_M_buf); }
1479.202 +
1479.203 +  _String str() const { return _M_buf.str(); }
1479.204 +    void str(const _String& __s) { _M_buf.str(__s); } // dwa 02/07/00 - BUG STOMPER DAVE
1479.205 +
1479.206 +
1479.207 +private:
1479.208 +  basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf;
1479.209 +};
1479.210 +
1479.211 +
1479.212 +//----------------------------------------------------------------------
1479.213 +// Class basic_stringstream, a bidirectional stream that uses a stringbuf.
1479.214 +
1479.215 +template <class _CharT, class _Traits, class _Alloc>
1479.216 +#ifdef __SYMBIAN32__
1479.217 +NONSHARABLE_CLASS ( basic_stringstream ) : public basic_iostream<_CharT, _Traits>
1479.218 +#else
1479.219 +class basic_stringstream : public basic_iostream<_CharT, _Traits>
1479.220 +#endif
1479.221 +{
1479.222 +public:                         // Typedefs
1479.223 +  typedef typename _Traits::char_type char_type;
1479.224 +  typedef typename _Traits::int_type  int_type;
1479.225 +  typedef typename _Traits::pos_type  pos_type;
1479.226 +  typedef typename _Traits::off_type  off_type;
1479.227 +  typedef _Traits  traits_type;
1479.228 +
1479.229 +  typedef basic_ios<_CharT, _Traits>                 _Basic_ios;
1479.230 +  typedef basic_iostream<_CharT, _Traits>            _Base;
1479.231 +  typedef basic_string<_CharT, _Traits, _Alloc>      _String;
1479.232 +  typedef basic_stringbuf<_CharT, _Traits, _Alloc>  _Buf;
1479.233 +  
1479.234 +  typedef ios_base::openmode openmode;
1479.235 +
1479.236 +public:                         // Constructors, destructor.
1479.237 +  _STLP_DECLSPEC basic_stringstream(openmode __mod = ios_base::in | ios_base::out);
1479.238 +  _STLP_DECLSPEC basic_stringstream(const _String& __str,
1479.239 +                     openmode __mod = ios_base::in | ios_base::out);
1479.240 +  ~basic_stringstream();
1479.241 +
1479.242 +public:                         // Member functions.
1479.243 +
1479.244 +  basic_stringbuf<_CharT, _Traits, _Alloc>* rdbuf() const
1479.245 +    { return __CONST_CAST(_Buf*,&_M_buf); }
1479.246 +
1479.247 +  _String str() const { return _M_buf.str(); }
1479.248 +    void str(const _String& __s) { _M_buf.str(__s); }
1479.249 +
1479.250 +private:
1479.251 +  basic_stringbuf<_CharT, _Traits, _Alloc> _M_buf;
1479.252 +};
1479.253 +
1479.254 +
1479.255 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1479.256 +_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<char, char_traits<char>, allocator<char> >;
1479.257 +_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<char, char_traits<char>, allocator<char> >;
1479.258 +_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<char, char_traits<char>, allocator<char> >;
1479.259 +#  if !defined (_STLP_NO_WCHAR_T)
1479.260 +_STLP_EXPORT_TEMPLATE_CLASS basic_istringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1479.261 +_STLP_EXPORT_TEMPLATE_CLASS basic_ostringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1479.262 +_STLP_EXPORT_TEMPLATE_CLASS basic_stringstream<wchar_t, char_traits<wchar_t>, allocator<wchar_t>  >;
1479.263 +#  endif
1479.264 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1479.265 +
1479.266 +_STLP_END_NAMESPACE
1479.267 +
1479.268 +# if  defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1479.269 +#  include <stl/_sstream.c>
1479.270 +# endif
1479.271 +
1479.272 +#endif /* _STLP_SSTREAM_H */
1479.273 +
1479.274 +// Local Variables:
1479.275 +// mode:C++
1479.276 +// End:
  1480.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1480.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_stack.h	Wed Mar 31 12:27:01 2010 +0100
  1480.3 @@ -0,0 +1,105 @@
  1480.4 +/*
  1480.5 + *
  1480.6 + * Copyright (c) 1994
  1480.7 + * Hewlett-Packard Company
  1480.8 + *
  1480.9 + * Copyright (c) 1996,1997
 1480.10 + * Silicon Graphics Computer Systems, Inc.
 1480.11 + *
 1480.12 + * Copyright (c) 1997
 1480.13 + * Moscow Center for SPARC Technology
 1480.14 + *
 1480.15 + * Copyright (c) 1999 
 1480.16 + * Boris Fomitchev
 1480.17 + *
 1480.18 + * This material is provided "as is", with absolutely no warranty expressed
 1480.19 + * or implied. Any use is at your own risk.
 1480.20 + *
 1480.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1480.22 + * without fee, provided the above notices are retained on all copies.
 1480.23 + * Permission to modify the code and to distribute modified code is granted,
 1480.24 + * provided the above notices are retained, and a notice that the code was
 1480.25 + * modified is included with the above copyright notice.
 1480.26 + *
 1480.27 + */
 1480.28 +
 1480.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1480.30 + *   You should not attempt to use it directly.
 1480.31 + */
 1480.32 +
 1480.33 +#ifndef _STLP_INTERNAL_STACK_H
 1480.34 +#define _STLP_INTERNAL_STACK_H
 1480.35 +
 1480.36 +#ifndef _STLP_INTERNAL_DEQUE_H
 1480.37 +# include <stl/_deque.h>
 1480.38 +#endif
 1480.39 +
 1480.40 +_STLP_BEGIN_NAMESPACE
 1480.41 +
 1480.42 +# if !defined ( _STLP_LIMITED_DEFAULT_TEMPLATES )
 1480.43 +template <class _Tp, class _Sequence = deque<_Tp> >
 1480.44 +# elif defined ( _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS )
 1480.45 +# define _STLP_STACK_ARGS _Tp
 1480.46 +template <class _Tp>
 1480.47 +# else
 1480.48 +template <class _Tp, class _Sequence>
 1480.49 +# endif
 1480.50 +class stack {
 1480.51 +
 1480.52 +# ifdef _STLP_STACK_ARGS 
 1480.53 +  typedef deque<_Tp> _Sequence;
 1480.54 +# endif
 1480.55 +
 1480.56 +public:
 1480.57 +  typedef typename _Sequence::value_type      value_type;
 1480.58 +  typedef typename _Sequence::size_type       size_type;
 1480.59 +  typedef          _Sequence                  container_type;
 1480.60 +
 1480.61 +  typedef typename _Sequence::reference       reference;
 1480.62 +  typedef typename _Sequence::const_reference const_reference;
 1480.63 +protected:
 1480.64 +  _Sequence c;
 1480.65 +public:
 1480.66 +  stack() : c() {}
 1480.67 +  explicit stack(const _Sequence& __s) : c(__s) {}
 1480.68 +
 1480.69 +  bool empty() const { return c.empty(); }
 1480.70 +  size_type size() const { return c.size(); }
 1480.71 +  reference top() { return c.back(); }
 1480.72 +  const_reference top() const { return c.back(); }
 1480.73 +  void push(const value_type& __x) { c.push_back(__x); }
 1480.74 +  void pop() { c.pop_back(); }
 1480.75 +  const _Sequence& _Get_c() const { return c; }
 1480.76 +};
 1480.77 +
 1480.78 +# ifndef _STLP_STACK_ARGS
 1480.79 +#  define _STLP_STACK_ARGS _Tp, _Sequence
 1480.80 +#  define _STLP_STACK_HEADER_ARGS class _Tp, class _Sequence
 1480.81 +# else
 1480.82 +#  define _STLP_STACK_HEADER_ARGS class _Tp
 1480.83 +# endif
 1480.84 +
 1480.85 +template < _STLP_STACK_HEADER_ARGS >
 1480.86 +inline bool _STLP_CALL  operator==(const stack< _STLP_STACK_ARGS >& __x, const stack< _STLP_STACK_ARGS >& __y)
 1480.87 +{
 1480.88 +  return __x._Get_c() == __y._Get_c();
 1480.89 +}
 1480.90 +
 1480.91 +template < _STLP_STACK_HEADER_ARGS >
 1480.92 +inline bool _STLP_CALL  operator<(const stack< _STLP_STACK_ARGS >& __x, const stack< _STLP_STACK_ARGS >& __y)
 1480.93 +{
 1480.94 +  return __x._Get_c() < __y._Get_c();
 1480.95 +}
 1480.96 +
 1480.97 +_STLP_RELOPS_OPERATORS(template < _STLP_STACK_HEADER_ARGS >, stack< _STLP_STACK_ARGS >)
 1480.98 +    
 1480.99 +_STLP_END_NAMESPACE
1480.100 +
1480.101 +#  undef _STLP_STACK_ARGS
1480.102 +#  undef _STLP_STACK_HEADER_ARGS
1480.103 +
1480.104 +#endif /* _STLP_INTERNAL_STACK_H */
1480.105 +
1480.106 +// Local Variables:
1480.107 +// mode:C++
1480.108 +// End:
  1481.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1481.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_stdexcept.h	Wed Mar 31 12:27:01 2010 +0100
  1481.3 @@ -0,0 +1,110 @@
  1481.4 +/*
  1481.5 + * Copyright (c) 1996,1997
  1481.6 + * Silicon Graphics Computer Systems, Inc.
  1481.7 + *
  1481.8 + * Copyright (c) 1999
  1481.9 + * Boris Fomitchev
 1481.10 + *
 1481.11 + * This material is provided "as is", with absolutely no warranty expressed
 1481.12 + * or implied. Any use is at your own risk.
 1481.13 + *
 1481.14 + * Permission to use or copy this software for any purpose is hereby granted
 1481.15 + * without fee, provided the above notices are retained on all copies.
 1481.16 + * Permission to modify the code and to distribute modified code is granted,
 1481.17 + * provided the above notices are retained, and a notice that the code was
 1481.18 + * modified is included with the above copyright notice.
 1481.19 + *
 1481.20 + */
 1481.21 +
 1481.22 +#ifndef _STLP_INTERNAL_STDEXCEPT
 1481.23 +#define _STLP_INTERNAL_STDEXCEPT
 1481.24 +
 1481.25 +#ifndef _STLP_INTERNAL_STDEXCEPT_BASE
 1481.26 +#  include <stl/_stdexcept_base.h>
 1481.27 +#endif
 1481.28 +
 1481.29 +#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE)
 1481.30 +
 1481.31 +#  if defined(_STLP_USE_EXCEPTIONS) || \
 1481.32 +    !(defined(_MIPS_SIM) && defined(_ABIO32) && (_MIPS_SIM == _ABIO32))
 1481.33 +
 1481.34 +_STLP_BEGIN_NAMESPACE
 1481.35 +
 1481.36 +class _STLP_CLASS_DECLSPEC logic_error : public __Named_exception {
 1481.37 +public:
 1481.38 +  logic_error(const string& __s) : __Named_exception(__s) {}
 1481.39 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.40 +  ~logic_error() _STLP_NOTHROW_INHERENTLY;
 1481.41 +#    endif
 1481.42 +};
 1481.43 +
 1481.44 +class _STLP_CLASS_DECLSPEC runtime_error : public __Named_exception {
 1481.45 +public:
 1481.46 +  runtime_error(const string& __s) : __Named_exception(__s) {}
 1481.47 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.48 +  ~runtime_error() _STLP_NOTHROW_INHERENTLY;
 1481.49 +#    endif
 1481.50 +};
 1481.51 +
 1481.52 +class _STLP_CLASS_DECLSPEC domain_error : public logic_error {
 1481.53 +public:
 1481.54 +  domain_error(const string& __arg) : logic_error(__arg) {}
 1481.55 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.56 +  ~domain_error() _STLP_NOTHROW_INHERENTLY;
 1481.57 +#    endif
 1481.58 +};
 1481.59 +
 1481.60 +class _STLP_CLASS_DECLSPEC invalid_argument : public logic_error {
 1481.61 +public:
 1481.62 +  invalid_argument(const string& __arg) : logic_error(__arg) {}
 1481.63 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.64 +  ~invalid_argument() _STLP_NOTHROW_INHERENTLY;
 1481.65 +#    endif
 1481.66 +};
 1481.67 +
 1481.68 +class _STLP_CLASS_DECLSPEC length_error : public logic_error {
 1481.69 +public:
 1481.70 +  length_error(const string& __arg) : logic_error(__arg) {}
 1481.71 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.72 +  ~length_error() _STLP_NOTHROW_INHERENTLY;
 1481.73 +#    endif
 1481.74 +};
 1481.75 +
 1481.76 +class _STLP_CLASS_DECLSPEC out_of_range : public logic_error {
 1481.77 +public:
 1481.78 +  out_of_range(const string& __arg) : logic_error(__arg) {}
 1481.79 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.80 +  ~out_of_range() _STLP_NOTHROW_INHERENTLY;
 1481.81 +#    endif
 1481.82 +};
 1481.83 +
 1481.84 +class _STLP_CLASS_DECLSPEC range_error : public runtime_error {
 1481.85 +public:
 1481.86 +  range_error(const string& __arg) : runtime_error(__arg) {}
 1481.87 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.88 +  ~range_error() _STLP_NOTHROW_INHERENTLY;
 1481.89 +#    endif
 1481.90 +};
 1481.91 +
 1481.92 +class _STLP_CLASS_DECLSPEC overflow_error : public runtime_error {
 1481.93 +public:
 1481.94 +  overflow_error(const string& __arg) : runtime_error(__arg) {}
 1481.95 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1481.96 +  ~overflow_error() _STLP_NOTHROW_INHERENTLY;
 1481.97 +#    endif
 1481.98 +};
 1481.99 +
1481.100 +class _STLP_CLASS_DECLSPEC underflow_error : public runtime_error {
1481.101 +public:
1481.102 +  underflow_error(const string& __arg) : runtime_error(__arg) {}
1481.103 +#    ifndef _STLP_USE_NO_IOSTREAMS
1481.104 +  ~underflow_error() _STLP_NOTHROW_INHERENTLY;
1481.105 +#    endif
1481.106 +};
1481.107 +
1481.108 +_STLP_END_NAMESPACE
1481.109 +
1481.110 +#  endif
1481.111 +#endif
1481.112 +
1481.113 +#endif /* _STLP_INTERNAL_STDEXCEPT */
  1482.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1482.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_stdexcept_base.h	Wed Mar 31 12:27:01 2010 +0100
  1482.3 @@ -0,0 +1,102 @@
  1482.4 +/*
  1482.5 + * Copyright (c) 1996,1997
  1482.6 + * Silicon Graphics Computer Systems, Inc.
  1482.7 + *
  1482.8 + * Copyright (c) 1999
  1482.9 + * Boris Fomitchev
 1482.10 + *
 1482.11 + * This material is provided "as is", with absolutely no warranty expressed
 1482.12 + * or implied. Any use is at your own risk.
 1482.13 + *
 1482.14 + * Permission to use or copy this software for any purpose is hereby granted
 1482.15 + * without fee, provided the above notices are retained on all copies.
 1482.16 + * Permission to modify the code and to distribute modified code is granted,
 1482.17 + * provided the above notices are retained, and a notice that the code was
 1482.18 + * modified is included with the above copyright notice.
 1482.19 + *
 1482.20 + */
 1482.21 +
 1482.22 +#ifndef _STLP_INTERNAL_STDEXCEPT_BASE
 1482.23 +#define _STLP_INTERNAL_STDEXCEPT_BASE
 1482.24 +
 1482.25 +#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE)
 1482.26 +
 1482.27 +#  ifndef _STLP_INTERNAL_EXCEPTION
 1482.28 +#    include <stl/_exception.h>
 1482.29 +#  endif
 1482.30 +
 1482.31 +#  if defined(_STLP_USE_EXCEPTIONS) || \
 1482.32 +    !(defined(_MIPS_SIM) && defined(_ABIO32) && (_MIPS_SIM == _ABIO32))
 1482.33 +
 1482.34 +#    ifndef _STLP_INTERNAL_CSTRING
 1482.35 +#      include <stl/_cstring.h>
 1482.36 +#    endif
 1482.37 +
 1482.38 +#    ifndef _STLP_STRING_FWD_H
 1482.39 +#      include <stl/_string_fwd.h>
 1482.40 +#    endif
 1482.41 +
 1482.42 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1482.43 +#      define _STLP_OWN_STDEXCEPT 1
 1482.44 +#    endif
 1482.45 +
 1482.46 +_STLP_BEGIN_NAMESPACE
 1482.47 +
 1482.48 +/* We disable the 4275 warning for
 1482.49 + *  - WinCE where there are only static version of the native C++ runtime.
 1482.50 + *  - The MSVC compilers when the STLport user wants to make an STLport dll linked to
 1482.51 + *    the static C++ native runtime. In this case the std::exception base class is no more
 1482.52 + *    exported from native dll but is used as a base class for the exported __Named_exception
 1482.53 + *    class.
 1482.54 + */
 1482.55 +#    if defined (_STLP_WCE_NET) || \
 1482.56 +        defined (_STLP_USE_DYNAMIC_LIB) && defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
 1482.57 +#      define _STLP_DO_WARNING_POP
 1482.58 +#      pragma warning (push)
 1482.59 +#      pragma warning (disable: 4275) // Non dll interface class 'exception' used as base
 1482.60 +                                      // for dll-interface class '__Named_exception'
 1482.61 +#    endif
 1482.62 +
 1482.63 +#    if !defined (_STLP_NO_EXCEPTION_HEADER)
 1482.64 +#      if !defined (_STLP_EXCEPTION_BASE) && !defined (_STLP_BROKEN_EXCEPTION_CLASS) && \
 1482.65 +           defined (_STLP_USE_NAMESPACES) &&  defined (_STLP_USE_OWN_NAMESPACE)
 1482.66 +using _STLP_VENDOR_EXCEPT_STD::exception;
 1482.67 +#      endif
 1482.68 +#    endif
 1482.69 +#    define _STLP_EXCEPTION_BASE exception
 1482.70 +
 1482.71 +class _STLP_CLASS_DECLSPEC __Named_exception : public _STLP_EXCEPTION_BASE {
 1482.72 +public:
 1482.73 +  __Named_exception(const string& __str)
 1482.74 +#    ifndef _STLP_USE_NO_IOSTREAMS
 1482.75 +    ;
 1482.76 +  const char* what() const _STLP_NOTHROW_INHERENTLY;
 1482.77 +  ~__Named_exception() _STLP_NOTHROW_INHERENTLY;
 1482.78 +#    else
 1482.79 +  {
 1482.80 +#      if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS)
 1482.81 +    strncpy(_M_name, _STLP_PRIV __get_c_string(__str), _S_bufsize);
 1482.82 +#      else
 1482.83 +    strncpy_s(_STLP_ARRAY_AND_SIZE(_M_name), _STLP_PRIV __get_c_string(__str), _S_bufsize);
 1482.84 +#      endif
 1482.85 +    _M_name[_S_bufsize - 1] = '\0';
 1482.86 +  }
 1482.87 +  const char* what() const _STLP_NOTHROW_INHERENTLY { return _M_name; }
 1482.88 +#    endif
 1482.89 +
 1482.90 +private:
 1482.91 +  enum { _S_bufsize = 256 };
 1482.92 +  char _M_name[_S_bufsize];
 1482.93 +};
 1482.94 +
 1482.95 +#    if defined (_STLP_DO_WARNING_POP)
 1482.96 +#      pragma warning (pop)
 1482.97 +#      undef _STLP_DO_WARNING_POP
 1482.98 +#    endif
 1482.99 +
1482.100 +_STLP_END_NAMESPACE
1482.101 +
1482.102 +#  endif /* Not o32, and no exceptions */
1482.103 +#endif /* _STLP_STDEXCEPT_SEEN */
1482.104 +
1482.105 +#endif /* _STLP_INTERNAL_STDEXCEPT_BASE */
  1483.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1483.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_stlport_version.h	Wed Mar 31 12:27:01 2010 +0100
  1483.3 @@ -0,0 +1,30 @@
  1483.4 + /*
  1483.5 + *
  1483.6 + * Copyright (c) 2005
  1483.7 + * Francois Dumont
  1483.8 + *
  1483.9 + * This material is provided "as is", with absolutely no warranty expressed
 1483.10 + * or implied. Any use is at your own risk.
 1483.11 + *
 1483.12 + * Permission to use or copy this software for any purpose is hereby granted
 1483.13 + * without fee, provided the above notices are retained on all copies.
 1483.14 + * Permission to modify the code and to distribute modified code is granted,
 1483.15 + * provided the above notices are retained, and a notice that the code was
 1483.16 + * modified is included with the above copyright notice.
 1483.17 + *
 1483.18 + */
 1483.19 +
 1483.20 +#ifndef _STLP_STLPORT_VERSION_H
 1483.21 +#define _STLP_STLPORT_VERSION_H
 1483.22 +
 1483.23 +/* The last SGI STL release we merged with */
 1483.24 +#define __SGI_STL 0x330
 1483.25 +
 1483.26 +/* STLport version */
 1483.27 +#define _STLPORT_MAJOR 5
 1483.28 +#define _STLPORT_MINOR 1
 1483.29 +#define _STLPORT_PATCHLEVEL 0
 1483.30 +
 1483.31 +#define _STLPORT_VERSION 0x510
 1483.32 +
 1483.33 +#endif /* _STLP_STLPORT_VERSION_H */
  1484.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1484.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_stream_iterator.h	Wed Mar 31 12:27:01 2010 +0100
  1484.3 @@ -0,0 +1,343 @@
  1484.4 +/*
  1484.5 + *
  1484.6 + * Copyright (c) 1994
  1484.7 + * Hewlett-Packard Company
  1484.8 + *
  1484.9 + * Copyright (c) 1996-1998
 1484.10 + * Silicon Graphics Computer Systems, Inc.
 1484.11 + *
 1484.12 + * Copyright (c) 1997
 1484.13 + * Moscow Center for SPARC Technology
 1484.14 + *
 1484.15 + * Copyright (c) 1999 
 1484.16 + * Boris Fomitchev
 1484.17 + *
 1484.18 + * This material is provided "as is", with absolutely no warranty expressed
 1484.19 + * or implied. Any use is at your own risk.
 1484.20 + *
 1484.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1484.22 + * without fee, provided the above notices are retained on all copies.
 1484.23 + * Permission to modify the code and to distribute modified code is granted,
 1484.24 + * provided the above notices are retained, and a notice that the code was
 1484.25 + * modified is included with the above copyright notice.
 1484.26 + *
 1484.27 + */
 1484.28 +
 1484.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1484.30 + *   You should not attempt to use it directly.
 1484.31 + */
 1484.32 +
 1484.33 +#if !defined (_STLP_INTERNAL_STREAM_ITERATOR_H) && ! defined (_STLP_USE_NO_IOSTREAMS)
 1484.34 +#define _STLP_INTERNAL_STREAM_ITERATOR_H
 1484.35 +
 1484.36 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
 1484.37 +# include <stl/_iterator_base.h>
 1484.38 +#endif
 1484.39 +
 1484.40 +// streambuf_iterators predeclarations must appear first
 1484.41 +#ifndef _STLP_IOSFWD
 1484.42 +# include <iosfwd>
 1484.43 +#endif
 1484.44 +
 1484.45 +#ifndef _STLP_INTERNAL_ALGOBASE_H
 1484.46 +#include <stl/_algobase.h>
 1484.47 +#endif
 1484.48 +
 1484.49 +#if defined (_STLP_OWN_IOSTREAMS)
 1484.50 +
 1484.51 +#ifndef _STLP_INTERNAL_OSTREAMBUF_ITERATOR_H
 1484.52 +# include <stl/_ostreambuf_iterator.h>
 1484.53 +#endif
 1484.54 +
 1484.55 +#ifndef _STLP_INTERNAL_ISTREAMBUF_ITERATOR_H
 1484.56 +# include <stl/_istreambuf_iterator.h>
 1484.57 +#endif
 1484.58 +
 1484.59 +#ifndef _STLP_INTERNAL_ISTREAM_H
 1484.60 +# include <stl/_istream.h>
 1484.61 +#endif
 1484.62 +#endif /* _STLP_OWN_IOSTREAMS */
 1484.63 +
 1484.64 +// istream_iterator and ostream_iterator look very different if we're
 1484.65 +// using new, templatized iostreams than if we're using the old cfront
 1484.66 +// version.
 1484.67 +
 1484.68 +# if defined (_STLP_USE_NEW_IOSTREAMS) 
 1484.69 +
 1484.70 +_STLP_BEGIN_NAMESPACE
 1484.71 +
 1484.72 +#  ifndef _STLP_LIMITED_DEFAULT_TEMPLATES
 1484.73 +template <class _Tp, 
 1484.74 +          class _CharT = _STLP_DEFAULTCHAR, class _Traits = char_traits<_CharT>,
 1484.75 +          class _Dist = ptrdiff_t> 
 1484.76 +#   define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _CharT, class _Traits, class _Dist
 1484.77 +#   define __ISI_TMPL_ARGUMENTS _Tp, _CharT, _Traits, _Dist
 1484.78 +class istream_iterator : public iterator<input_iterator_tag, _Tp , _Dist,
 1484.79 +                         const _Tp*, const _Tp& > {
 1484.80 +#  else
 1484.81 +
 1484.82 +#   if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
 1484.83 +#    define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
 1484.84 +#    define __ISI_TMPL_ARGUMENTS        _Tp
 1484.85 +template <class _Tp>
 1484.86 +class istream_iterator : public iterator<input_iterator_tag, _Tp , ptrdiff_t, 
 1484.87 +                         const _Tp*, const _Tp& > {
 1484.88 +#   else
 1484.89 +#    define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
 1484.90 +#    define __ISI_TMPL_ARGUMENTS        _Tp, _Dist
 1484.91 +template <class _Tp,__DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
 1484.92 +class istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist , 
 1484.93 +                                         const _Tp*, const _Tp& > {
 1484.94 +#   endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
 1484.95 +
 1484.96 +#  endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */
 1484.97 +
 1484.98 +# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
 1484.99 +  typedef char _CharT;
1484.100 +  typedef char_traits<char> _Traits;
1484.101 +#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1484.102 +  typedef ptrdiff_t _Dist;
1484.103 +#  endif
1484.104 +# endif
1484.105 +
1484.106 +  typedef istream_iterator< __ISI_TMPL_ARGUMENTS > _Self;
1484.107 +public:
1484.108 +  typedef _CharT                         char_type;
1484.109 +  typedef _Traits                        traits_type;
1484.110 +  typedef basic_istream<_CharT, _Traits> istream_type;
1484.111 +
1484.112 +  typedef input_iterator_tag             iterator_category;
1484.113 +  typedef _Tp                            value_type;
1484.114 +  typedef _Dist                          difference_type;
1484.115 +  typedef const _Tp*                     pointer;
1484.116 +  typedef const _Tp&                     reference;
1484.117 +
1484.118 +  istream_iterator() : _M_stream(0), _M_ok(false) {}
1484.119 +  istream_iterator(istream_type& __s) : _M_stream(&__s) { _M_read(); }
1484.120 +
1484.121 +  reference operator*() const { return _M_value; }
1484.122 +
1484.123 +  _STLP_DEFINE_ARROW_OPERATOR
1484.124 +
1484.125 +  _Self& operator++() { 
1484.126 +    _M_read(); 
1484.127 +    return *this;
1484.128 +  }
1484.129 +  _Self operator++(int)  {
1484.130 +    _Self __tmp = *this;
1484.131 +    _M_read();
1484.132 +    return __tmp;
1484.133 +  }
1484.134 +
1484.135 +  bool _M_equal(const _Self& __x) const
1484.136 +    { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
1484.137 +
1484.138 +private:
1484.139 +  istream_type* _M_stream;
1484.140 +  _Tp _M_value;
1484.141 +  bool _M_ok;
1484.142 +
1484.143 +  void _M_read() {
1484.144 +    _M_ok = (_M_stream && *_M_stream) ? true : false;
1484.145 +    if (_M_ok) {
1484.146 +      *_M_stream >> _M_value;
1484.147 +      _M_ok = *_M_stream ? true : false;
1484.148 +    }
1484.149 +  }
1484.150 +};
1484.151 +
1484.152 +#ifndef _STLP_LIMITED_DEFAULT_TEMPLATES
1484.153 +template <class _TpP,
1484.154 +          class _CharT = _STLP_DEFAULTCHAR, class _Traits = char_traits<_CharT> >
1484.155 +#else
1484.156 +template <class _TpP>
1484.157 +#endif
1484.158 +class ostream_iterator: public iterator<output_iterator_tag, void, void, void, void> {
1484.159 +# ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1484.160 +  typedef char _CharT;
1484.161 +  typedef char_traits<char> _Traits;
1484.162 +  typedef ostream_iterator<_TpP> _Self;
1484.163 +# else
1484.164 +  typedef ostream_iterator<_TpP, _CharT, _Traits> _Self;
1484.165 +# endif
1484.166 +public:
1484.167 +  typedef _CharT                         char_type;
1484.168 +  typedef _Traits                        traits_type;
1484.169 +  typedef basic_ostream<_CharT, _Traits> ostream_type;
1484.170 +
1484.171 +  typedef output_iterator_tag            iterator_category;
1484.172 +
1484.173 +  ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
1484.174 +  ostream_iterator(ostream_type& __s, const _CharT* __c) 
1484.175 +    : _M_stream(&__s), _M_string(__c)  {}
1484.176 +  _Self& operator=(const _TpP& __val) { 
1484.177 +    *_M_stream << __val;
1484.178 +    if (_M_string) *_M_stream << _M_string;
1484.179 +    return *this;
1484.180 +  }
1484.181 +  _Self& operator*() { return *this; }
1484.182 +  _Self& operator++() { return *this; } 
1484.183 +  _Self& operator++(int) { return *this; } 
1484.184 +private:
1484.185 +  ostream_type* _M_stream;
1484.186 +  const _CharT* _M_string;
1484.187 +};
1484.188 +
1484.189 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1484.190 +#  ifdef _STLP_LIMITED_DEFAULT_TEMPLATES
1484.191 +template <class _TpP>
1484.192 +inline output_iterator_tag _STLP_CALL 
1484.193 +iterator_category(const ostream_iterator<_TpP>&) { return output_iterator_tag(); }
1484.194 +# else
1484.195 +template <class _TpP, class _CharT, class _Traits>
1484.196 +inline output_iterator_tag _STLP_CALL 
1484.197 +iterator_category(const ostream_iterator<_TpP, _CharT, _Traits>&) { return output_iterator_tag(); }
1484.198 +#  endif
1484.199 +# endif
1484.200 +
1484.201 +_STLP_END_NAMESPACE
1484.202 +
1484.203 +# elif ! defined(_STLP_USE_NO_IOSTREAMS)
1484.204 +
1484.205 +_STLP_BEGIN_NAMESPACE
1484.206 +
1484.207 +#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1484.208 +#  define __ISI_TMPL_HEADER_ARGUMENTS class _Tp
1484.209 +#  define __ISI_TMPL_ARGUMENTS        _Tp
1484.210 +template <class _Tp>
1484.211 +class istream_iterator : public iterator<input_iterator_tag, _Tp, ptrdiff_t, 
1484.212 +                         const _Tp*, const _Tp& > {
1484.213 +#  else
1484.214 +#  define __ISI_TMPL_HEADER_ARGUMENTS class _Tp, class _Dist
1484.215 +#  define __ISI_TMPL_ARGUMENTS        _Tp, _Dist
1484.216 +template <class _Tp, __DFL_TYPE_PARAM(_Dist, ptrdiff_t)>
1484.217 +class istream_iterator : public iterator<input_iterator_tag, _Tp, _Dist, 
1484.218 +                         const _Tp*, const _Tp& > {
1484.219 +#  endif
1484.220 +
1484.221 +protected:
1484.222 +  istream* _M_stream;
1484.223 +  _Tp _M_value;
1484.224 +  bool _M_end_marker;
1484.225 +  void _M_read() {
1484.226 +    _M_end_marker = (*_M_stream) ? true : false;
1484.227 +    if (_M_end_marker) *_M_stream >> _M_value;
1484.228 +    _M_end_marker = (*_M_stream) ? true : false;
1484.229 +}
1484.230 +public:
1484.231 +  typedef input_iterator_tag  iterator_category;
1484.232 +  typedef _Tp                 value_type;
1484.233 +  typedef _Dist               difference_type;
1484.234 +  typedef const _Tp*          pointer;
1484.235 +  typedef const _Tp&          reference;
1484.236 +
1484.237 +  istream_iterator() : _M_stream(&cin), _M_end_marker(false) {}
1484.238 +  istream_iterator(istream& __s) : _M_stream(&__s) { _M_read(); }
1484.239 +  reference operator*() const { return _M_value; }
1484.240 +
1484.241 +  _STLP_DEFINE_ARROW_OPERATOR
1484.242 +
1484.243 +  istream_iterator< __ISI_TMPL_ARGUMENTS >& operator++() { 
1484.244 +    _M_read(); 
1484.245 +    return *this;
1484.246 +  }
1484.247 +  istream_iterator< __ISI_TMPL_ARGUMENTS > operator++(int)  {
1484.248 +    istream_iterator< __ISI_TMPL_ARGUMENTS > __tmp = *this;
1484.249 +    _M_read();
1484.250 +    return __tmp;
1484.251 +  }
1484.252 +  inline bool _M_equal(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) const {
1484.253 +    return (_M_stream == __y._M_stream &&
1484.254 +	    _M_end_marker == __y._M_end_marker) ||
1484.255 +      _M_end_marker == false && __y._M_end_marker == false;
1484.256 +  }
1484.257 +};
1484.258 +
1484.259 +template <class _Tp>
1484.260 +class ostream_iterator {
1484.261 +protected:
1484.262 +  ostream* _M_stream;
1484.263 +  const char* _M_string;
1484.264 +public:
1484.265 +  typedef output_iterator_tag iterator_category;
1484.266 +# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1484.267 +  typedef void                value_type;
1484.268 +  typedef void                difference_type;
1484.269 +  typedef void                pointer;
1484.270 +  typedef void                reference;
1484.271 +# endif
1484.272 +  ostream_iterator(ostream& __s) : _M_stream(&__s), _M_string(0) {}
1484.273 +  ostream_iterator(ostream& __s, const char* __c) 
1484.274 +    : _M_stream(&__s), _M_string(__c)  {}
1484.275 +  ostream_iterator<_Tp>& operator=(const _Tp& __val) { 
1484.276 +    *_M_stream << __val;
1484.277 +    if (_M_string) *_M_stream << _M_string;
1484.278 +    return *this;
1484.279 +  }
1484.280 +  ostream_iterator<_Tp>& operator*() { return *this; }
1484.281 +  ostream_iterator<_Tp>& operator++() { return *this; } 
1484.282 +  ostream_iterator<_Tp>& operator++(int) { return *this; } 
1484.283 +};
1484.284 +
1484.285 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1484.286 +template <class _Tp> inline output_iterator_tag 
1484.287 +iterator_category(const ostream_iterator<_Tp>&) { return output_iterator_tag(); }
1484.288 +#endif
1484.289 +
1484.290 +_STLP_END_NAMESPACE
1484.291 +
1484.292 +#endif /* _STLP_USE_NEW_IOSTREAMS */
1484.293 +
1484.294 +// form-independent definiotion of stream iterators
1484.295 +_STLP_BEGIN_NAMESPACE
1484.296 +
1484.297 +template < __ISI_TMPL_HEADER_ARGUMENTS >
1484.298 +inline bool _STLP_CALL 
1484.299 +operator==(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
1484.300 +           const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) {
1484.301 +  return __x._M_equal(__y);
1484.302 +}
1484.303 +
1484.304 +#  ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1484.305 +
1484.306 +template < __ISI_TMPL_HEADER_ARGUMENTS >
1484.307 +inline bool _STLP_CALL 
1484.308 +operator!=(const istream_iterator< __ISI_TMPL_ARGUMENTS >& __x,
1484.309 +           const istream_iterator< __ISI_TMPL_ARGUMENTS >& __y) {
1484.310 +  return !__x._M_equal(__y);
1484.311 +}
1484.312 +
1484.313 +#  endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1484.314 +
1484.315 +# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1484.316 +template < __ISI_TMPL_HEADER_ARGUMENTS >
1484.317 +inline input_iterator_tag _STLP_CALL 
1484.318 +iterator_category(const istream_iterator< __ISI_TMPL_ARGUMENTS >&)
1484.319 +{ return input_iterator_tag(); }
1484.320 +template < __ISI_TMPL_HEADER_ARGUMENTS >
1484.321 +inline _Tp* _STLP_CALL 
1484.322 +value_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Tp*) 0; }
1484.323 +
1484.324 +#  if defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && ! defined (_STLP_DEFAULT_TYPE_PARAM)
1484.325 +template < __ISI_TMPL_HEADER_ARGUMENTS >
1484.326 +inline ptrdiff_t* _STLP_CALL 
1484.327 +distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (ptrdiff_t*)0; }
1484.328 +#  else
1484.329 +template < __ISI_TMPL_HEADER_ARGUMENTS >
1484.330 +inline _Dist* _STLP_CALL 
1484.331 +distance_type(const istream_iterator< __ISI_TMPL_ARGUMENTS >&) { return (_Dist*)0; }
1484.332 +#  endif /* _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS */
1484.333 +
1484.334 +# endif 
1484.335 +
1484.336 +_STLP_END_NAMESPACE
1484.337 +
1484.338 +#  undef __ISI_TMPL_HEADER_ARGUMENTS
1484.339 +#  undef __ISI_TMPL_ARGUMENTS
1484.340 +
1484.341 +
1484.342 +#endif /* _STLP_INTERNAL_STREAM_ITERATOR_H */
1484.343 +
1484.344 +// Local Variables:
1484.345 +// mode:C++
1484.346 +// End:
  1485.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1485.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_streambuf.c	Wed Mar 31 12:27:01 2010 +0100
  1485.3 @@ -0,0 +1,218 @@
  1485.4 +/*
  1485.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1485.6 + *
  1485.7 + * Copyright (c) 1999
  1485.8 + * Silicon Graphics Computer Systems, Inc.
  1485.9 + *
 1485.10 + * Copyright (c) 1999 
 1485.11 + * Boris Fomitchev
 1485.12 + *
 1485.13 + * This material is provided "as is", with absolutely no warranty expressed
 1485.14 + * or implied. Any use is at your own risk.
 1485.15 + *
 1485.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1485.17 + * without fee, provided the above notices are retained on all copies.
 1485.18 + * Permission to modify the code and to distribute modified code is granted,
 1485.19 + * provided the above notices are retained, and a notice that the code was
 1485.20 + * modified is included with the above copyright notice.
 1485.21 + *
 1485.22 + */ 
 1485.23 +#ifndef _STLP_STREAMBUF_C
 1485.24 +#define _STLP_STREAMBUF_C
 1485.25 +
 1485.26 +#ifndef _STLP_INTERNAL_STREAMBUF
 1485.27 +# include <stl/_streambuf.h>
 1485.28 +#endif
 1485.29 +
 1485.30 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1485.31 +
 1485.32 +_STLP_BEGIN_NAMESPACE
 1485.33 +//----------------------------------------------------------------------
 1485.34 +// Non-inline basic_streambuf<> member functions.
 1485.35 +
 1485.36 +template <class _CharT, class _Traits>
 1485.37 +_STLP_EXP_DECLSPEC basic_streambuf<_CharT, _Traits>::basic_streambuf()
 1485.38 +  : _M_gbegin(0), _M_gnext(0), _M_gend(0),
 1485.39 +    _M_pbegin(0), _M_pnext(0), _M_pend(0),
 1485.40 +    _M_locale()
 1485.41 +{
 1485.42 +  //  _M_lock._M_initialize();
 1485.43 +}
 1485.44 +
 1485.45 +template <class _CharT, class _Traits>
 1485.46 +_STLP_EXP_DECLSPEC  basic_streambuf<_CharT, _Traits>::~basic_streambuf() 
 1485.47 +{}
 1485.48 +
 1485.49 +
 1485.50 +template <class _CharT, class _Traits>
 1485.51 +_STLP_EXP_DECLSPEC locale 
 1485.52 +basic_streambuf<_CharT, _Traits>::pubimbue(const locale& __loc) {
 1485.53 +  this->imbue(__loc);
 1485.54 +  locale __tmp = _M_locale;
 1485.55 +  _M_locale = __loc;
 1485.56 +  return __tmp;
 1485.57 +}
 1485.58 +
 1485.59 +template <class _CharT, class _Traits>
 1485.60 +_STLP_EXP_DECLSPEC streamsize
 1485.61 +basic_streambuf<_CharT, _Traits>::xsgetn(_CharT* __s, streamsize __n)
 1485.62 +{
 1485.63 +  streamsize __result = 0;
 1485.64 +  const int_type __eof = _Traits::eof();
 1485.65 +
 1485.66 +  while (__result < __n) {
 1485.67 +    if (_M_gnext < _M_gend) {
 1485.68 +      size_t __chunk = (min) (__STATIC_CAST(size_t,_M_gend - _M_gnext),
 1485.69 +                           __STATIC_CAST(size_t,__n - __result));
 1485.70 +      _Traits::copy(__s, _M_gnext, __chunk);
 1485.71 +      __result += __chunk;
 1485.72 +      __s += __chunk;
 1485.73 +      _M_gnext += __chunk;
 1485.74 +    }
 1485.75 +    else {
 1485.76 +      int_type __c = this->sbumpc();
 1485.77 +      if (!_Traits::eq_int_type(__c, __eof)) {
 1485.78 +        *__s = __c;
 1485.79 +        ++__result;
 1485.80 +	++__s;
 1485.81 +      }
 1485.82 +      else
 1485.83 +        break; 
 1485.84 +    }
 1485.85 +  }
 1485.86 +  
 1485.87 +  return __result;
 1485.88 +}
 1485.89 +
 1485.90 +template <class _CharT, class _Traits>
 1485.91 +_STLP_EXP_DECLSPEC streamsize
 1485.92 +basic_streambuf<_CharT, _Traits>::xsputn(const _CharT* __s, streamsize __n)
 1485.93 +{
 1485.94 +  streamsize __result = 0;
 1485.95 +  const int_type __eof = _Traits::eof();
 1485.96 +
 1485.97 +  while (__result < __n) {
 1485.98 +    if (_M_pnext < _M_pend) {
 1485.99 +      size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext),
1485.100 +                           __STATIC_CAST(size_t,__n - __result));
1485.101 +      _Traits::copy(_M_pnext, __s, __chunk);
1485.102 +      __result += __chunk;
1485.103 +      __s += __chunk;
1485.104 +      _M_pnext += __chunk;
1485.105 +    }
1485.106 +
1485.107 +    else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(*__s)),
1485.108 +                                   __eof)) {
1485.109 +      ++__result;
1485.110 +      ++__s;
1485.111 +    }
1485.112 +    else
1485.113 +      break;
1485.114 +  }
1485.115 +  return __result;
1485.116 +}
1485.117 +
1485.118 +template <class _CharT, class _Traits>
1485.119 +_STLP_EXP_DECLSPEC streamsize
1485.120 +basic_streambuf<_CharT, _Traits>::_M_xsputnc(_CharT __c, streamsize __n)
1485.121 +{
1485.122 +  streamsize __result = 0;
1485.123 +  const int_type __eof = _Traits::eof();
1485.124 +
1485.125 +  while (__result < __n) {
1485.126 +    if (_M_pnext < _M_pend) {
1485.127 +      size_t __chunk = (min) (__STATIC_CAST(size_t,_M_pend - _M_pnext),
1485.128 +                           __STATIC_CAST(size_t,__n - __result));
1485.129 +      _Traits::assign(_M_pnext, __chunk, __c);
1485.130 +      __result += __chunk;
1485.131 +      _M_pnext += __chunk;
1485.132 +    }
1485.133 +
1485.134 +    else if (!_Traits::eq_int_type(this->overflow(_Traits::to_int_type(__c)),
1485.135 +                                   __eof))
1485.136 +      ++__result;
1485.137 +    else
1485.138 +      break;
1485.139 +  }
1485.140 +  return __result;
1485.141 +}
1485.142 +
1485.143 +template <class _CharT, class _Traits>
1485.144 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1485.145 +basic_streambuf<_CharT, _Traits>::_M_snextc_aux()  
1485.146 +{
1485.147 +  int_type __eof = _Traits::eof();
1485.148 +  if (_M_gend == _M_gnext)
1485.149 +    return _Traits::eq_int_type(this->uflow(), __eof) ? __eof : this->sgetc();
1485.150 +  else {
1485.151 +    _M_gnext = _M_gend;
1485.152 +    return this->underflow();
1485.153 +  }
1485.154 +}
1485.155 +
1485.156 +template <class _CharT, class _Traits>
1485.157 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1485.158 +basic_streambuf<_CharT, _Traits>::pbackfail(int_type) { 
1485.159 + return _Traits::eof(); 
1485.160 +}
1485.161 +
1485.162 +template <class _CharT, class _Traits>
1485.163 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1485.164 +basic_streambuf<_CharT, _Traits>::overflow(int_type) { 
1485.165 +  return _Traits::eof(); 
1485.166 +}
1485.167 +
1485.168 +template <class _CharT, class _Traits>
1485.169 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1485.170 +basic_streambuf<_CharT, _Traits>::uflow() {
1485.171 +    return ( _Traits::eq_int_type(this->underflow(),_Traits::eof()) ?
1485.172 +             _Traits::eof() :
1485.173 +             _Traits::to_int_type(*_M_gnext++));
1485.174 +}
1485.175 +
1485.176 +template <class _CharT, class _Traits>
1485.177 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::int_type 
1485.178 +basic_streambuf<_CharT, _Traits>::underflow()
1485.179 +{ return _Traits::eof(); }
1485.180 +
1485.181 +template <class _CharT, class _Traits>
1485.182 +_STLP_EXP_DECLSPEC streamsize 
1485.183 +basic_streambuf<_CharT, _Traits>::showmanyc()
1485.184 +{ return 0; }
1485.185 +
1485.186 +template <class _CharT, class _Traits>
1485.187 +_STLP_EXP_DECLSPEC void 
1485.188 +basic_streambuf<_CharT, _Traits>::imbue(const locale&) {}
1485.189 +
1485.190 +template <class _CharT, class _Traits>
1485.191 +_STLP_EXP_DECLSPEC int
1485.192 +basic_streambuf<_CharT, _Traits>::sync() { return 0; }
1485.193 +
1485.194 +template <class _CharT, class _Traits>
1485.195 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type 
1485.196 +basic_streambuf<_CharT, _Traits>::seekpos(pos_type, ios_base::openmode)
1485.197 +{ return pos_type(-1); }
1485.198 +
1485.199 +template <class _CharT, class _Traits>
1485.200 +_STLP_EXP_DECLSPEC _STLP_TYPENAME_ON_RETURN_TYPE basic_streambuf<_CharT, _Traits>::pos_type 
1485.201 +basic_streambuf<_CharT, _Traits>::seekoff(off_type, ios_base::seekdir,
1485.202 +					  ios_base::openmode)
1485.203 +{ return pos_type(-1); }
1485.204 +
1485.205 +template <class _CharT, class _Traits>
1485.206 +_STLP_EXP_DECLSPEC basic_streambuf<_CharT, _Traits>* 
1485.207 +basic_streambuf<_CharT, _Traits>:: setbuf(char_type*, streamsize)
1485.208 +{ return this; }
1485.209 +
1485.210 +
1485.211 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1485.212 +#  if !defined (_STLP_NO_WCHAR_T)
1485.213 +_STLP_EXPORT_TEMPLATE_CLASS basic_streambuf<wchar_t, char_traits<wchar_t> >;
1485.214 +#  endif
1485.215 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1485.216 +
1485.217 +_STLP_END_NAMESPACE
1485.218 +
1485.219 +# endif /* EXPOSE */
1485.220 +
1485.221 +#endif
  1486.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1486.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_streambuf.h	Wed Mar 31 12:27:01 2010 +0100
  1486.3 @@ -0,0 +1,537 @@
  1486.4 +/*
  1486.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1486.6 + *
  1486.7 + * Copyright (c) 1999
  1486.8 + * Silicon Graphics Computer Systems, Inc.
  1486.9 + *
 1486.10 + * Copyright (c) 1999 
 1486.11 + * Boris Fomitchev
 1486.12 + *
 1486.13 + * This material is provided "as is", with absolutely no warranty expressed
 1486.14 + * or implied. Any use is at your own risk.
 1486.15 + *
 1486.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1486.17 + * without fee, provided the above notices are retained on all copies.
 1486.18 + * Permission to modify the code and to distribute modified code is granted,
 1486.19 + * provided the above notices are retained, and a notice that the code was
 1486.20 + * modified is included with the above copyright notice.
 1486.21 + *
 1486.22 + */ 
 1486.23 +#ifndef _STLP_INTERNAL_STREAMBUF
 1486.24 +#define _STLP_INTERNAL_STREAMBUF
 1486.25 +
 1486.26 +#ifndef _STLP_IOS_BASE_H
 1486.27 +#include <stl/_ios_base.h>      // Needed for ios_base bitfield members.
 1486.28 +                                // <ios_base> includes <iosfwd>.
 1486.29 +#endif
 1486.30 +
 1486.31 +#ifndef _STLP_STDIO_FILE_H
 1486.32 +#include <stl/_stdio_file.h>     // Declaration of struct FILE, and of
 1486.33 +                                // functions to manipulate it.
 1486.34 +#endif
 1486.35 +
 1486.36 +_STLP_BEGIN_NAMESPACE
 1486.37 +
 1486.38 +//----------------------------------------------------------------------
 1486.39 +// Class basic_streambuf<>, the base class of the streambuf hierarchy.
 1486.40 +
 1486.41 +// A basic_streambuf<> manages an input (get) area and an output (put)
 1486.42 +// area.  Each is described by three pointers: a beginning, an end, and a
 1486.43 +// current position.  basic_streambuf<> contains some very simple member
 1486.44 +// functions that manipulate those six pointers, but almost all of the real
 1486.45 +// functionality gets delegated to protected virtual member functions.
 1486.46 +// All of the public member functions are inline, and most of the protected
 1486.47 +// member functions are virtual.
 1486.48 +
 1486.49 +// Although basic_streambuf<> is not abstract, it is useful only as a base
 1486.50 +// class.  Its virtual member functions have default definitions such that
 1486.51 +// reading from a basic_streambuf<> will always yield EOF, and writing to a
 1486.52 +// basic_streambuf<> will always fail.
 1486.53 +
 1486.54 +// The second template parameter, _Traits, defaults to char_traits<_CharT>.
 1486.55 +// The default is declared in header <iosfwd>, and it isn't declared here
 1486.56 +// because C++ language rules do not allow it to be declared twice. 
 1486.57 +
 1486.58 +template <class _CharT, class _Traits>
 1486.59 +#ifdef __SYMBIAN32__
 1486.60 +class basic_streambuf 
 1486.61 +#else
 1486.62 +class basic_streambuf
 1486.63 +#endif
 1486.64 +{
 1486.65 +  friend class basic_istream<_CharT, _Traits>;
 1486.66 +  friend class basic_ostream<_CharT, _Traits>;
 1486.67 +
 1486.68 +public:                         // Typedefs.
 1486.69 +  typedef _CharT                     char_type;
 1486.70 +  typedef typename _Traits::int_type int_type;
 1486.71 +  typedef typename _Traits::pos_type pos_type;
 1486.72 +  typedef typename _Traits::off_type off_type;
 1486.73 +  typedef _Traits                    traits_type;
 1486.74 +
 1486.75 +private:                        // Data members.
 1486.76 +
 1486.77 +  char_type* _M_gbegin;         // Beginning of get area
 1486.78 +  char_type* _M_gnext;          // Current position within the get area
 1486.79 +  char_type* _M_gend;           // End of get area
 1486.80 +
 1486.81 +  char_type* _M_pbegin;         // Beginning of put area
 1486.82 +  char_type* _M_pnext;          // Current position within the put area
 1486.83 +  char_type* _M_pend;           // End of put area
 1486.84 +
 1486.85 +  locale _M_locale;             // The streambuf's locale object
 1486.86 +
 1486.87 +public:                         // Extension: locking, for thread safety.
 1486.88 +  _STLP_mutex _M_lock;
 1486.89 +
 1486.90 +public:                         // Destructor.
 1486.91 +  _STLP_DECLSPEC virtual ~basic_streambuf();
 1486.92 +
 1486.93 +protected:                      // The default constructor.
 1486.94 +  _STLP_DECLSPEC basic_streambuf();
 1486.95 +
 1486.96 +protected:                      // Protected interface to the get area.
 1486.97 +  char_type* eback() const { return _M_gbegin; } // Beginning
 1486.98 +  char_type* gptr()  const { return _M_gnext; }  // Current position
 1486.99 +  char_type* egptr() const { return _M_gend; }   // End
1486.100 +  
1486.101 +  void gbump(int __n) { _M_gnext += __n; }
1486.102 +  void setg(char_type* __gbegin, char_type* __gnext, char_type* __gend) {
1486.103 +    _M_gbegin = __gbegin;
1486.104 +    _M_gnext  = __gnext;
1486.105 +    _M_gend   = __gend;
1486.106 +  }
1486.107 +
1486.108 +public:
1486.109 +  // An alternate public interface to the above functions
1486.110 +  // which allows us to avoid using templated friends which
1486.111 +  // are not supported on some compilers.
1486.112 +
1486.113 +  char_type* _M_eback() const { return eback(); }
1486.114 +  char_type* _M_gptr()  const { return gptr(); }
1486.115 +  char_type* _M_egptr() const { return egptr(); }
1486.116 +  void _M_gbump(int __n)      { gbump(__n); }
1486.117 +  void _M_setg(char_type* __gbegin, char_type* __gnext, char_type* __gend)
1486.118 +    { setg(__gbegin, __gnext, __gend); }
1486.119 +
1486.120 +protected:                      // Protected interface to the put area
1486.121 +
1486.122 +  char_type* pbase() const { return _M_pbegin; } // Beginning
1486.123 +  char_type* pptr()  const { return _M_pnext; }  // Current position
1486.124 +  char_type* epptr() const { return _M_pend; }   // End
1486.125 +
1486.126 +  void pbump(int __n) { _M_pnext += __n; }
1486.127 +  void setp(char_type* __pbegin, char_type* __pend) {
1486.128 +    _M_pbegin = __pbegin;
1486.129 +    _M_pnext  = __pbegin;
1486.130 +    _M_pend   = __pend;
1486.131 +  }
1486.132 +
1486.133 +protected:                      // Virtual buffer management functions.
1486.134 +
1486.135 +  _STLP_DECLSPEC virtual basic_streambuf<_CharT, _Traits>* setbuf(char_type*, streamsize);
1486.136 +
1486.137 +  // Alters the stream position, using an integer offset.  In this
1486.138 +  // class seekoff does nothing; subclasses are expected to override it.
1486.139 +  _STLP_DECLSPEC virtual pos_type seekoff(off_type, ios_base::seekdir,
1486.140 +                           ios_base::openmode = ios_base::in | ios_base::out);
1486.141 +
1486.142 +  // Alters the stream position, using a previously obtained streampos.  In
1486.143 +  // this class seekpos does nothing; subclasses are expected to override it.
1486.144 +  _STLP_DECLSPEC virtual pos_type
1486.145 +  seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out);
1486.146 +
1486.147 +  // Synchronizes (i.e. flushes) the buffer.  All subclasses are expected to 
1486.148 +  // override this virtual member function.
1486.149 +  _STLP_DECLSPEC virtual int sync();
1486.150 +
1486.151 +
1486.152 +public:                         // Buffer management.
1486.153 +  basic_streambuf<_CharT, _Traits>* pubsetbuf(char_type* __s, streamsize __n) 
1486.154 +    { return this->setbuf(__s, __n); }
1486.155 +
1486.156 +  pos_type pubseekoff(off_type __offset, ios_base::seekdir __way,
1486.157 +                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1486.158 +    { return this->seekoff(__offset, __way, __mod); }
1486.159 +
1486.160 +  pos_type pubseekpos(pos_type __sp,
1486.161 +                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1486.162 +    { return this->seekpos(__sp, __mod); }
1486.163 +
1486.164 +  int pubsync() { return this->sync(); }
1486.165 +
1486.166 +protected:                      // Virtual get area functions, as defined in
1486.167 +                                // 17.5.2.4.3 and 17.5.2.4.4 of the standard.
1486.168 +  // Returns a lower bound on the number of characters that we can read,
1486.169 +  // with underflow, before reaching end of file.  (-1 is a special value:
1486.170 +  // it means that underflow will fail.)  Most subclasses should probably
1486.171 +  // override this virtual member function.
1486.172 +  _STLP_DECLSPEC virtual streamsize showmanyc();
1486.173 +
1486.174 +  // Reads up to __n characters.  Return value is the number of 
1486.175 +  // characters read.
1486.176 +  _STLP_DECLSPEC virtual streamsize xsgetn(char_type* __s, streamsize __n);
1486.177 +
1486.178 +  // Called when there is no read position, i.e. when gptr() is null
1486.179 +  // or when gptr() >= egptr().  Subclasses are expected to override
1486.180 +  // this virtual member function.
1486.181 +  _STLP_DECLSPEC virtual int_type underflow();
1486.182 +
1486.183 +  // Similar to underflow(), but used for unbuffered input.  Most 
1486.184 +  // subclasses should probably override this virtual member function.
1486.185 +  _STLP_DECLSPEC virtual int_type uflow();
1486.186 +
1486.187 +  // Called when there is no putback position, i.e. when gptr() is null
1486.188 +  // or when gptr() == eback().  All subclasses are expected to override
1486.189 +  // this virtual member function.
1486.190 +  _STLP_DECLSPEC virtual int_type pbackfail(int_type = traits_type::eof());
1486.191 +
1486.192 +protected:                      // Virtual put area functions, as defined in
1486.193 +                                // 27.5.2.4.5 of the standard.
1486.194 +
1486.195 +  // Writes up to __n characters.  Return value is the number of characters
1486.196 +  // written.
1486.197 +  _STLP_DECLSPEC virtual streamsize xsputn(const char_type* __s, streamsize __n);
1486.198 +
1486.199 +  // Extension: writes up to __n copies of __c.  Return value is the number
1486.200 +  // of characters written.
1486.201 +  _STLP_DECLSPEC virtual streamsize _M_xsputnc(char_type __c, streamsize __n);
1486.202 +
1486.203 +  // Called when there is no write position.  All subclasses are expected to
1486.204 +  // override this virtual member function.
1486.205 +  _STLP_DECLSPEC virtual int_type overflow(int_type = traits_type::eof());
1486.206 +
1486.207 +public:                         // Public members for writing characters.
1486.208 +  // Write a single character.
1486.209 +  int_type sputc(char_type __c) {
1486.210 +    return ((_M_pnext < _M_pend) ? _Traits::to_int_type(*_M_pnext++ = __c)
1486.211 +      : this->overflow(_Traits::to_int_type(__c)));
1486.212 +  }
1486.213 +
1486.214 +  // Write __n characters.
1486.215 +  streamsize sputn(const char_type* __s, streamsize __n)
1486.216 +    { return this->xsputn(__s, __n); }
1486.217 +
1486.218 +  // Extension: write __n copies of __c.
1486.219 +  streamsize _M_sputnc(char_type __c, streamsize __n)
1486.220 +    { return this->_M_xsputnc(__c, __n); }
1486.221 +
1486.222 +private:                        // Helper functions.
1486.223 +  _STLP_DECLSPEC int_type _M_snextc_aux();
1486.224 +
1486.225 +
1486.226 +public:                         // Public members for reading characters.
1486.227 +  streamsize in_avail() {
1486.228 +    return (_M_gnext < _M_gend) ? (_M_gend - _M_gnext) : this->showmanyc();
1486.229 +  }
1486.230 +  
1486.231 +  // Advance to the next character and return it.
1486.232 +  int_type snextc() {
1486.233 +	return ( _M_gend - _M_gnext > 1 ?
1486.234 +             _Traits::to_int_type(*++_M_gnext) :
1486.235 +             this->_M_snextc_aux());
1486.236 +  }
1486.237 +
1486.238 +  // Return the current character and advance to the next.
1486.239 +  int_type sbumpc() {
1486.240 +    return _M_gnext < _M_gend ? _Traits::to_int_type(*_M_gnext++) 
1486.241 +      : this->uflow();
1486.242 +  }
1486.243 +  
1486.244 +  // Return the current character without advancing to the next.
1486.245 +  int_type sgetc() {
1486.246 +    return _M_gnext < _M_gend ? _Traits::to_int_type(*_M_gnext) 
1486.247 +      : this->underflow();
1486.248 +  }
1486.249 +  
1486.250 +  streamsize sgetn(char_type* __s, streamsize __n)
1486.251 +  { return this->xsgetn(__s, __n); }
1486.252 +  
1486.253 +  int_type sputbackc(char_type __c) {
1486.254 +    return ((_M_gbegin < _M_gnext) && _Traits::eq(__c, *(_M_gnext - 1)))
1486.255 +      ? _Traits::to_int_type(*--_M_gnext)
1486.256 +      : this->pbackfail(_Traits::to_int_type(__c));
1486.257 +  }
1486.258 +  
1486.259 +  int_type sungetc() {
1486.260 +    return (_M_gbegin < _M_gnext)
1486.261 +      ? _Traits::to_int_type(*--_M_gnext)
1486.262 +      : this->pbackfail();
1486.263 +  }
1486.264 +
1486.265 +protected:                      // Virtual locale functions.
1486.266 +
1486.267 +  // This is a hook, called by pubimbue() just before pubimbue()
1486.268 +  // sets the streambuf's locale to __loc.  Note that imbue should
1486.269 +  // not (and cannot, since it has no access to streambuf's private
1486.270 +  // members) set the streambuf's locale itself.
1486.271 +  _STLP_DECLSPEC virtual void imbue(const locale&);
1486.272 +
1486.273 +public:                         // Locale-related functions.
1486.274 +  _STLP_DECLSPEC locale pubimbue(const locale&);
1486.275 +  locale getloc() const { return _M_locale; }
1486.276 +
1486.277 +# ifndef _STLP_NO_ANACHRONISMS
1486.278 +  void stossc() { this->sbumpc(); }
1486.279 +# endif
1486.280 +#if defined(__MVS__) || defined(__OS400__)
1486.281 +private: // Data members.
1486.282 +
1486.283 +  char_type* _M_gbegin; // Beginning of get area
1486.284 +  char_type* _M_gnext; // Current position within the get area
1486.285 +  char_type* _M_gend; // End of get area
1486.286 +
1486.287 +  char_type* _M_pbegin; // Beginning of put area
1486.288 +  char_type* _M_pnext; // Current position within the put area
1486.289 +  char_type* _M_pend; // End of put area
1486.290 +#endif
1486.291 +};
1486.292 +
1486.293 +
1486.294 +//----------------------------------------------------------------------
1486.295 +// Specialization: basic_streambuf<char, char_traits<char> >
1486.296 +
1486.297 +// We implement basic_streambuf<char, char_traits<char> > very differently
1486.298 +// than the general basic_streambuf<> template.  The main reason for this
1486.299 +// difference is a requirement in the C++ standard: the standard input
1486.300 +// and output streams cin and cout are required by default to be synchronized
1486.301 +// with the C library components stdin and stdout.  This means it must be
1486.302 +// possible to synchronize a basic_streambuf<char> with a C buffer.
1486.303 +//
1486.304 +// There are two basic ways to do that.  First, the streambuf could be
1486.305 +// unbuffered and delegate all buffering to stdio operations.  This
1486.306 +// would be correct, but slow: it would require at least one virtual
1486.307 +// function call for every character.  Second, the streambuf could use 
1486.308 +// a C stdio FILE as its buffer.  
1486.309 +//
1486.310 +// We choose the latter option.  Every streambuf has pointers to two
1486.311 +// FILE objects, one for the get area and one for the put area.  Ordinarily
1486.312 +// it just uses a FILE object as a convenient way to package the three
1486.313 +// get/put area pointers.  If a basic_streambuf<char> is synchronized with
1486.314 +// a stdio stream, though, then the pointers are to a FILE object that's
1486.315 +// also used by the C library.
1486.316 +//
1486.317 +// The header <stl/_stdio_file.h> encapsulates the implementation details
1486.318 +// of struct FILE.  It contains low-level inline functions that convert
1486.319 +// between whe FILE's internal representation and the three-pointer 
1486.320 +// representation that basic_streambuf<> needs.
1486.321 +
1486.322 +_STLP_TEMPLATE_NULL 
1486.323 +#ifdef __SYMBIAN32__
1486.324 +class basic_streambuf<char, char_traits<char> >
1486.325 +#else
1486.326 +class _STLP_CLASS_DECLSPEC basic_streambuf<char, char_traits<char> >
1486.327 +#endif
1486.328 +{
1486.329 +  friend class basic_istream<char, char_traits<char> >;
1486.330 +  friend class basic_ostream<char, char_traits<char> >;
1486.331 +public:                         // Typedefs.
1486.332 +  typedef char                        char_type;
1486.333 +  typedef char_traits<char>::int_type int_type;
1486.334 +  typedef char_traits<char>::pos_type pos_type;
1486.335 +  typedef char_traits<char>::off_type off_type;
1486.336 +  typedef char_traits<char>           traits_type;
1486.337 +
1486.338 +private:                        // Data members.
1486.339 +
1486.340 +  FILE* _M_get;                 // Reference to the get area
1486.341 +  FILE* _M_put;                 // Reference to the put area
1486.342 +
1486.343 +#if defined(__hpux)
1486.344 +  _FILEX  _M_default_get;          // Get area, unless we're syncing with stdio.
1486.345 +  _FILEX  _M_default_put;          // Put area, unless we're syncing with stdio.
1486.346 +#else
1486.347 +  FILE  _M_default_get;          // Get area, unless we're syncing with stdio.
1486.348 +  FILE  _M_default_put;          // Put area, unless we're syncing with stdio.
1486.349 +#endif
1486.350 +
1486.351 +  locale _M_locale;
1486.352 +
1486.353 +public:                         // Extension: locking, for thread safety.
1486.354 +  _STLP_mutex _M_lock;
1486.355 +
1486.356 +public:                         // Destructor.
1486.357 +  _STLP_DECLSPEC virtual ~basic_streambuf _STLP_PSPEC2(char, char_traits<char>) ();
1486.358 +
1486.359 +public:
1486.360 +  // The default constructor; defined here inline as some compilers require it
1486.361 +  _STLP_DECLSPEC basic_streambuf _STLP_PSPEC2(char, char_traits<char>) ();
1486.362 +  // Extension: a constructor for streambufs synchronized with C stdio files.
1486.363 +  _STLP_DECLSPEC basic_streambuf _STLP_PSPEC2(char, char_traits<char>) (FILE* __get, FILE* __put);
1486.364 +
1486.365 +protected:                      // Protected interface to the get area.
1486.366 +  char_type* eback() const { return _FILE_I_begin(_M_get); }
1486.367 +  char_type* gptr()  const { return _FILE_I_next(_M_get); }
1486.368 +  char_type* egptr() const { return _FILE_I_end(_M_get); }
1486.369 +  void gbump(int __n) { _FILE_I_bump(_M_get, __n); }
1486.370 +  void setg(char_type* __gbegin, char_type* __gnext, char_type* __gend)
1486.371 +    { 
1486.372 +    _FILE_I_set(_M_get, __gbegin, __gnext, __gend); 
1486.373 +#ifdef __SYMBIAN32__
1486.374 +    _change_input_mode();
1486.375 +#endif
1486.376 +    }
1486.377 +
1486.378 +public:
1486.379 +  // An alternate public interface to the above functions
1486.380 +  // which allows us to avoid using templated friends which
1486.381 +  // are not supported on some compilers.
1486.382 +
1486.383 +  char_type* _M_eback() const { return _FILE_I_begin(_M_get); }
1486.384 +  char_type* _M_gptr()  const { return _FILE_I_next(_M_get); }
1486.385 +  char_type* _M_egptr() const { return _FILE_I_end(_M_get); }
1486.386 +
1486.387 +  void _M_gbump(int __n) { _FILE_I_bump(_M_get, __n); }
1486.388 +  void _M_setg(char_type* __gbegin, char_type* __gnext, char_type* __gend)
1486.389 +    { _FILE_I_set(_M_get, __gbegin, __gnext, __gend); }
1486.390 +
1486.391 +protected:                      // Protected interface to the put area
1486.392 +  char_type* pbase() const { return _FILE_O_begin(_M_put); }
1486.393 +  char_type* pptr()  const { return _FILE_O_next(_M_put); }
1486.394 +  char_type* epptr() const { return _FILE_O_end(_M_put); }
1486.395 +
1486.396 +  void pbump(int __n) { _FILE_O_bump(_M_put, __n); }
1486.397 +  void setp(char_type* __pbegin, char_type* __pend)
1486.398 +    { _FILE_O_set(_M_put, __pbegin, __pbegin, __pend); }
1486.399 +
1486.400 +protected:                      // Virtual buffer-management functions.
1486.401 +  _STLP_DECLSPEC virtual basic_streambuf<char, char_traits<char> >* setbuf(char_type*, streamsize);
1486.402 +  _STLP_DECLSPEC virtual pos_type seekoff(off_type, ios_base::seekdir,
1486.403 +                           ios_base::openmode = ios_base::in | ios_base::out);
1486.404 +  _STLP_DECLSPEC  virtual pos_type
1486.405 +  seekpos(pos_type, ios_base::openmode = ios_base::in | ios_base::out);
1486.406 +  _STLP_DECLSPEC virtual int sync();
1486.407 +
1486.408 +public:                         // Buffer management.
1486.409 +  basic_streambuf<char, char_traits<char> >* pubsetbuf(char_type* __s, streamsize __n) 
1486.410 +    { return this->setbuf(__s, __n); }
1486.411 +
1486.412 +  pos_type pubseekoff(off_type __offset, ios_base::seekdir __way,
1486.413 +                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1486.414 +    { return this->seekoff(__offset, __way, __mod); }
1486.415 +
1486.416 +  pos_type pubseekpos(pos_type __sp,
1486.417 +                      ios_base::openmode __mod = ios_base::in | ios_base::out)
1486.418 +    { return this->seekpos(__sp, __mod); }
1486.419 +
1486.420 +  int pubsync() { return this->sync(); }
1486.421 +
1486.422 +protected:                      // Virtual get area functions.
1486.423 +  _STLP_DECLSPEC virtual streamsize showmanyc();
1486.424 +  _STLP_DECLSPEC virtual streamsize xsgetn(char_type* __s, streamsize __n);
1486.425 +  _STLP_DECLSPEC virtual int_type underflow();
1486.426 +  _STLP_DECLSPEC virtual int_type uflow();
1486.427 +  _STLP_DECLSPEC virtual int_type pbackfail(int_type __c = traits_type::eof());
1486.428 +
1486.429 +protected:                      // Virtual put area functions.
1486.430 +  _STLP_DECLSPEC virtual streamsize xsputn(const char_type* __s, streamsize __n);
1486.431 +  _STLP_DECLSPEC virtual streamsize _M_xsputnc(char_type __c, streamsize __n);
1486.432 +  _STLP_DECLSPEC virtual int_type overflow(int_type = traits_type::eof());
1486.433 +#ifdef __SYMBIAN32__  
1486.434 +  virtual int save_read_buffer () { return 0; }
1486.435 +  virtual void _change_input_mode() {};
1486.436 +#endif
1486.437 +public:                         // Public members for writing characters.
1486.438 +  // Write a single character.
1486.439 +  int_type sputc(char_type __c) {
1486.440 +    int_type __res;
1486.441 +	if( _FILE_O_avail(_M_put) > 0 )
1486.442 +	{
1486.443 +		_FILE_O_postincr(_M_put) = __c;
1486.444 +		__res = traits_type::to_int_type(__c);
1486.445 +	}
1486.446 +	else
1486.447 +      __res = this->overflow(traits_type::to_int_type(__c));
1486.448 +    return __res;
1486.449 +  }
1486.450 +
1486.451 +  // Write __n characters.
1486.452 +  streamsize sputn(const char_type* __s, streamsize __n)
1486.453 +    { return this->xsputn(__s, __n); }
1486.454 +
1486.455 +  // Extension: write __n copies of __c.
1486.456 +  streamsize _M_sputnc(char_type __c, streamsize __n)
1486.457 +    { return this->_M_xsputnc(__c, __n); }
1486.458 +
1486.459 +private:                        // Helper functions.
1486.460 +  _STLP_DECLSPEC int_type _M_snextc_aux();
1486.461 +
1486.462 +public:                         // Public members for reading characters.
1486.463 +  streamsize in_avail()
1486.464 +    { return _FILE_I_avail(_M_get) > 0 ? _FILE_I_avail(_M_get)
1486.465 +#ifdef __SYMBIAN32__  
1486.466 +                                     + save_read_buffer()
1486.467 +#endif
1486.468 +                                     : this->showmanyc(); }
1486.469 +  
1486.470 +  // Advance to the next character and return it.
1486.471 +  int_type snextc() {
1486.472 +    return _FILE_I_avail(_M_get) > 1
1486.473 +      ? traits_type::to_int_type(_FILE_I_preincr(_M_get))
1486.474 +      : this->_M_snextc_aux();
1486.475 +  }
1486.476 +
1486.477 +  // Return the current character and advance to the next.
1486.478 +  int_type sbumpc() {
1486.479 +    return _FILE_I_avail(_M_get) > 0
1486.480 +      ? traits_type::to_int_type(_FILE_I_postincr(_M_get))
1486.481 +      : this->uflow();
1486.482 +  }
1486.483 +
1486.484 +  // Return the current character without advancing to the next.
1486.485 +  int_type sgetc() {
1486.486 +    return _FILE_I_avail(_M_get) > 0
1486.487 +      ? traits_type::to_int_type(*_FILE_I_next(_M_get))
1486.488 +      : this->underflow();
1486.489 +  }
1486.490 +    
1486.491 +  streamsize sgetn(char_type* __s, streamsize __n)
1486.492 +    { return this->xsgetn(__s, __n); }
1486.493 +
1486.494 +  int_type sputbackc(char_type __c) {
1486.495 +    return _FILE_I_begin(_M_get) < _FILE_I_next(_M_get) &&
1486.496 +           __c == *(_FILE_I_next(_M_get) - 1)
1486.497 +      ? traits_type::to_int_type(_FILE_I_predecr(_M_get))
1486.498 +      : this->pbackfail(traits_type::to_int_type(__c));
1486.499 +  }
1486.500 +
1486.501 +  int_type sungetc() {
1486.502 +    return _FILE_I_begin(_M_get) < _FILE_I_next(_M_get)
1486.503 +      ? traits_type::to_int_type(_FILE_I_predecr(_M_get))
1486.504 +      : this->pbackfail();
1486.505 +  }
1486.506 +
1486.507 +protected:                      // Virtual locale functions.
1486.508 +  _STLP_DECLSPEC virtual void imbue(const locale&);
1486.509 +public:                         // Locale-related functions.
1486.510 +  _STLP_DECLSPEC locale pubimbue(const locale&);
1486.511 +  locale getloc() const { return _M_locale; }
1486.512 +
1486.513 +# ifndef _STLP_NO_ANACHRONISMS
1486.514 +public:
1486.515 +  void stossc() { this->sbumpc(); }
1486.516 +# endif
1486.517 +
1486.518 +#if defined(__MVS__) || defined(__OS400__)
1486.519 +private: // Data members.
1486.520 +
1486.521 +  char_type* _M_gbegin; // Beginning of get area
1486.522 +  char_type* _M_gnext; // Current position within the get area
1486.523 +  char_type* _M_gend; // End of get area
1486.524 +
1486.525 +  char_type* _M_pbegin; // Beginning of put area
1486.526 +  char_type* _M_pnext; // Current position within the put area
1486.527 +  char_type* _M_pend; // End of put area
1486.528 +#endif
1486.529 +
1486.530 +};
1486.531 +_STLP_END_NAMESPACE
1486.532 +
1486.533 +# if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1486.534 +#  include <stl/_streambuf.c>
1486.535 +# endif
1486.536 +
1486.537 +#endif
1486.538 +// Local Variables:
1486.539 +// mode:C++
1486.540 +// End:
  1487.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1487.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string.c	Wed Mar 31 12:27:01 2010 +0100
  1487.3 @@ -0,0 +1,627 @@
  1487.4 +/*
  1487.5 + *  © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1487.6 + *
  1487.7 + * Copyright (c) 1994
  1487.8 + * Hewlett-Packard Company
  1487.9 + *
 1487.10 + * Copyright (c) 1996,1997
 1487.11 + * Silicon Graphics Computer Systems, Inc.
 1487.12 + *
 1487.13 + * Copyright (c) 1997
 1487.14 + * Moscow Center for SPARC Technology
 1487.15 + *
 1487.16 + * Copyright (c) 1999 
 1487.17 + * Boris Fomitchev
 1487.18 + *
 1487.19 + * This material is provided "as is", with absolutely no warranty expressed
 1487.20 + * or implied. Any use is at your own risk.
 1487.21 + *
 1487.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1487.23 + * without fee, provided the above notices are retained on all copies.
 1487.24 + * Permission to modify the code and to distribute modified code is granted,
 1487.25 + * provided the above notices are retained, and a notice that the code was
 1487.26 + * modified is included with the above copyright notice.
 1487.27 + *
 1487.28 + */
 1487.29 +#ifndef _STLP_STRING_C
 1487.30 +#define _STLP_STRING_C
 1487.31 +
 1487.32 +#ifndef _STLP_STRING_H
 1487.33 +# include <stl/_string.h>
 1487.34 +#endif
 1487.35 +
 1487.36 +# ifdef _STLP_DEBUG
 1487.37 +#  define basic_string _Nondebug_string
 1487.38 +# endif
 1487.39 +
 1487.40 +# if defined (_STLP_USE_OWN_NAMESPACE) || !defined (_STLP_USE_NATIVE_STRING)
 1487.41 +
 1487.42 +# if defined (_STLP_NESTED_TYPE_PARAM_BUG)
 1487.43 +#  define __size_type__ size_t
 1487.44 +#  define size_type size_t
 1487.45 +#  define iterator   _CharT*
 1487.46 +# else
 1487.47 +#  define __size_type__ _STLP_TYPENAME_ON_RETURN_TYPE basic_string<_CharT,_Traits,_Alloc>::size_type
 1487.48 +# endif
 1487.49 +
 1487.50 +_STLP_BEGIN_NAMESPACE
 1487.51 +
 1487.52 +// ------------------------------------------------------------
 1487.53 +// Non-inline declarations.
 1487.54 +
 1487.55 +
 1487.56 +// Change the string's capacity so that it is large enough to hold
 1487.57 +//  at least __res_arg elements, plus the terminating _CharT().  Note that,
 1487.58 +//  if __res_arg < capacity(), this member function may actually decrease
 1487.59 +//  the string's capacity.
 1487.60 +template <class _CharT, class _Traits, class _Alloc> 
 1487.61 +_STLP_EXP_DECLSPEC void basic_string<_CharT,_Traits,_Alloc>::reserve(size_type __res_arg) {
 1487.62 +
 1487.63 +  if (__res_arg >= capacity())
 1487.64 +    {      
 1487.65 +      if (__res_arg > max_size())
 1487.66 +	this->_M_throw_length_error();
 1487.67 +
 1487.68 +      size_type __n = __res_arg + 1;
 1487.69 +      _STLP_LEAVE_VOLATILE pointer __new_start = this->_M_end_of_storage.allocate(__n);
 1487.70 +      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
 1487.71 +      
 1487.72 +      _STLP_TRY {
 1487.73 +	__new_finish = uninitialized_copy(this->_M_start, this->_M_finish, __new_start);
 1487.74 +	_M_construct_null(__new_finish);
 1487.75 +      }
 1487.76 +      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start, __new_finish), 
 1487.77 +		    this->_M_end_of_storage.deallocate(__new_start, __n)));
 1487.78 +      
 1487.79 +      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
 1487.80 +      this->_M_deallocate_block();
 1487.81 +      this->_M_start = __new_start;
 1487.82 +      this->_M_finish = __new_finish;
 1487.83 +      this->_M_end_of_storage._M_data = __new_start + __n;
 1487.84 +    }
 1487.85 +}
 1487.86 +
 1487.87 +template <class _CharT, class _Traits, class _Alloc> 
 1487.88 +_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
 1487.89 +basic_string<_CharT,_Traits,_Alloc>::append(size_type __n, _CharT __c) 
 1487.90 +{
 1487.91 +  if (__n > max_size() || size() > max_size() - __n)
 1487.92 +    this->_M_throw_length_error();
 1487.93 +  if (size() + __n > capacity())
 1487.94 +    reserve(size() + (max)(size(), __n));
 1487.95 +  if (__n > 0) {
 1487.96 +    uninitialized_fill_n(this->_M_finish + 1, __n - 1, __c);
 1487.97 +    _STLP_TRY {
 1487.98 +      _M_construct_null(this->_M_finish + __n);
 1487.99 +    }
1487.100 +    _STLP_UNWIND(_STLP_STD::_Destroy(this->_M_finish + 1, this->_M_finish + __n));
1487.101 +    _Traits::assign(*end(), __c);
1487.102 +    this->_M_finish += __n;
1487.103 +  }
1487.104 +  return *this;
1487.105 +}
1487.106 +
1487.107 +#ifndef _STLP_MEMBER_TEMPLATES
1487.108 +
1487.109 +template <class _CharT, class _Traits, class _Alloc> 
1487.110 +_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>& 
1487.111 +basic_string<_CharT, _Traits, _Alloc>::append(const _CharT* __first,
1487.112 +					      const _CharT* __last)
1487.113 +{
1487.114 +  if (__first != __last) {
1487.115 +    const size_type __old_size = size();
1487.116 +    ptrdiff_t __n = __last - __first;
1487.117 +    if ((size_type)__n > max_size() || __old_size > max_size() - __n)
1487.118 +      this->_M_throw_length_error();
1487.119 +    if (__old_size + __n > capacity()) {
1487.120 +      const size_type __len = __old_size + (max)(__old_size, (size_t) __n) + 1;
1487.121 +      pointer __new_start = this->_M_end_of_storage.allocate(__len);
1487.122 +      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1487.123 +      _STLP_TRY {
1487.124 +        __new_finish = uninitialized_copy(this->_M_start, this->_M_finish, __new_start);
1487.125 +        __new_finish = uninitialized_copy(__first, __last, __new_finish);
1487.126 +        _M_construct_null(__new_finish);
1487.127 +      }
1487.128 +      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish),
1487.129 +                    this->_M_end_of_storage.deallocate(__new_start,__len)));
1487.130 +      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1487.131 +      this->_M_deallocate_block();
1487.132 +      this->_M_start = __new_start;
1487.133 +      this->_M_finish = __new_finish;
1487.134 +      this->_M_end_of_storage._M_data = __new_start + __len; 
1487.135 +    }
1487.136 +    else {
1487.137 +      const _CharT* __f1 = __first;
1487.138 +      ++__f1;
1487.139 +      uninitialized_copy(__f1, __last, this->_M_finish + 1);
1487.140 +      _STLP_TRY {
1487.141 +        _M_construct_null(this->_M_finish + __n);
1487.142 +      }
1487.143 +      _STLP_UNWIND(_STLP_STD::_Destroy(this->_M_finish + 1, this->_M_finish + __n));
1487.144 +      _Traits::assign(*end(), *__first);
1487.145 +      this->_M_finish += __n;
1487.146 +    }
1487.147 +  }
1487.148 +  return *this;  
1487.149 +}
1487.150 +
1487.151 +#endif /* _STLP_MEMBER_TEMPLATES */
1487.152 +
1487.153 +template <class _CharT, class _Traits, class _Alloc> 
1487.154 +_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
1487.155 +basic_string<_CharT,_Traits,_Alloc>::assign(size_type __n, _CharT __c) {
1487.156 +  if (__n <= size()) {
1487.157 +    _Traits::assign(this->_M_start, __n, __c);
1487.158 +    erase(begin() + __n, end());
1487.159 +  }
1487.160 +  else {
1487.161 +    _Traits::assign(this->_M_start, size(), __c);
1487.162 +    append(__n - size(), __c);
1487.163 +  }
1487.164 +  return *this;
1487.165 +}
1487.166 +
1487.167 +template <class _CharT, class _Traits, class _Alloc> 
1487.168 +_CharT* basic_string<_CharT,_Traits,_Alloc> ::_M_insert_aux(_CharT* __p,
1487.169 +                  _CharT __c)
1487.170 +{
1487.171 +  pointer __new_pos = __p;
1487.172 +  if (this->_M_finish + 1 < this->_M_end_of_storage._M_data) {
1487.173 +    _M_construct_null(this->_M_finish + 1);
1487.174 +    _Traits::move(__p + 1, __p, this->_M_finish - __p);
1487.175 +    _Traits::assign(*__p, __c);
1487.176 +    ++this->_M_finish;
1487.177 +  }
1487.178 +  else {
1487.179 +    const size_type __old_len = size();
1487.180 +    const size_type __len = __old_len +
1487.181 +                            (max)(__old_len, __STATIC_CAST(size_type,1)) + 1;
1487.182 +    pointer __new_start = this->_M_end_of_storage.allocate(__len);
1487.183 +    _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1487.184 +    _STLP_TRY {
1487.185 +      __new_pos = uninitialized_copy(this->_M_start, __p, __new_start);
1487.186 +      _Construct(__new_pos, __c);
1487.187 +      __new_finish = __new_pos + 1;
1487.188 +      __new_finish = uninitialized_copy(__p, this->_M_finish, __new_finish);
1487.189 +      _M_construct_null(__new_finish);
1487.190 +    }
1487.191 +    _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish), 
1487.192 +                  this->_M_end_of_storage.deallocate(__new_start,__len)));
1487.193 +    _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1487.194 +    this->_M_deallocate_block();
1487.195 +    this->_M_start = __new_start;
1487.196 +    this->_M_finish = __new_finish;
1487.197 +    this->_M_end_of_storage._M_data = __new_start + __len;
1487.198 +  }
1487.199 +  return __new_pos;
1487.200 +}
1487.201 +
1487.202 +template <class _CharT, class _Traits, class _Alloc> 
1487.203 +_STLP_EXP_DECLSPEC void basic_string<_CharT,_Traits,_Alloc>::insert(iterator __position,
1487.204 +           size_t __n, _CharT __c)
1487.205 +{
1487.206 +  if (__n != 0) {
1487.207 +    if (size_type(this->_M_end_of_storage._M_data - this->_M_finish) >= __n + 1) {
1487.208 +      const size_type __elems_after = this->_M_finish - __position;
1487.209 +      pointer __old_finish = this->_M_finish;
1487.210 +      if (__elems_after >= __n) {
1487.211 +        uninitialized_copy((this->_M_finish - __n) + 1, this->_M_finish + 1,
1487.212 +                           this->_M_finish + 1);
1487.213 +        this->_M_finish += __n;
1487.214 +        _Traits::move(__position + __n,
1487.215 +                      __position, (__elems_after - __n) + 1);
1487.216 +        _Traits::assign(__position, __n, __c);
1487.217 +      }
1487.218 +      else {
1487.219 +        uninitialized_fill_n(this->_M_finish + 1, __n - __elems_after - 1, __c);
1487.220 +        this->_M_finish += __n - __elems_after;
1487.221 +        _STLP_TRY {
1487.222 +          uninitialized_copy(__position, __old_finish + 1, this->_M_finish);
1487.223 +          this->_M_finish += __elems_after;
1487.224 +        }
1487.225 +        _STLP_UNWIND((_STLP_STD::_Destroy(__old_finish + 1, this->_M_finish), 
1487.226 +                      this->_M_finish = __old_finish));
1487.227 +        _Traits::assign(__position, __elems_after + 1, __c);
1487.228 +      }
1487.229 +    }
1487.230 +    else {
1487.231 +      const size_type __old_size = size();        
1487.232 +      const size_type __len = __old_size + (max)(__old_size, __n) + 1;
1487.233 +      pointer __new_start = this->_M_end_of_storage.allocate(__len);
1487.234 +      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1487.235 +      _STLP_TRY {
1487.236 +        __new_finish = uninitialized_copy(this->_M_start, __position, __new_start);
1487.237 +        __new_finish = uninitialized_fill_n(__new_finish, __n, __c);
1487.238 +        __new_finish = uninitialized_copy(__position, this->_M_finish,
1487.239 +                                          __new_finish);
1487.240 +        _M_construct_null(__new_finish);
1487.241 +      }
1487.242 +      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish),
1487.243 +                    this->_M_end_of_storage.deallocate(__new_start,__len)));
1487.244 +      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1487.245 +      this->_M_deallocate_block();
1487.246 +      this->_M_start = __new_start;
1487.247 +      this->_M_finish = __new_finish;
1487.248 +      this->_M_end_of_storage._M_data = __new_start + __len;    
1487.249 +    }
1487.250 +  }
1487.251 +}
1487.252 +
1487.253 +#ifndef _STLP_MEMBER_TEMPLATES
1487.254 +
1487.255 +template <class _CharT, class _Traits, class _Alloc> 
1487.256 +_STLP_EXP_DECLSPEC void 
1487.257 +basic_string<_CharT,_Traits,_Alloc>::insert(iterator __position,
1487.258 +                                            const _CharT* __first, 
1487.259 +                                            const _CharT* __last)
1487.260 +{
1487.261 +  if (__first != __last) {
1487.262 +    const ptrdiff_t __n = __last - __first;
1487.263 +    if (this->_M_end_of_storage._M_data - this->_M_finish >= __n + 1) {
1487.264 +      const ptrdiff_t __elems_after = this->_M_finish - __position;
1487.265 +      pointer __old_finish = this->_M_finish;
1487.266 +      if (__elems_after >= __n) {
1487.267 +        uninitialized_copy((this->_M_finish - __n) + 1, this->_M_finish + 1,
1487.268 +                           this->_M_finish + 1);
1487.269 +        this->_M_finish += __n;
1487.270 +        _Traits::move(__position + __n,
1487.271 +                      __position, (__elems_after - __n) + 1);
1487.272 +        _M_copy(__first, __last, __position);
1487.273 +      }
1487.274 +      else {
1487.275 +        const _CharT* __mid = __first;
1487.276 +        advance(__mid, __elems_after + 1);
1487.277 +        uninitialized_copy(__mid, __last, this->_M_finish + 1);
1487.278 +        this->_M_finish += __n - __elems_after;
1487.279 +        _STLP_TRY {
1487.280 +          uninitialized_copy(__position, __old_finish + 1, this->_M_finish);
1487.281 +          this->_M_finish += __elems_after;
1487.282 +        }
1487.283 +        _STLP_UNWIND((_STLP_STD::_Destroy(__old_finish + 1, this->_M_finish), 
1487.284 +                      this->_M_finish = __old_finish));
1487.285 +        _M_copy(__first, __mid, __position);
1487.286 +      }
1487.287 +    }
1487.288 +    else {
1487.289 +      size_type __old_size = size();        
1487.290 +      size_type __len
1487.291 +        = __old_size + (max)(__old_size, __STATIC_CAST(const size_type,__n)) + 1;
1487.292 +      pointer __new_start = this->_M_end_of_storage.allocate(__len);
1487.293 +      _STLP_LEAVE_VOLATILE pointer __new_finish = __new_start;
1487.294 +      _STLP_TRY {
1487.295 +        __new_finish = uninitialized_copy(this->_M_start, __position, __new_start);
1487.296 +        __new_finish = uninitialized_copy(__first, __last, __new_finish);
1487.297 +        __new_finish
1487.298 +          = uninitialized_copy(__position, this->_M_finish, __new_finish);
1487.299 +        _M_construct_null(__new_finish);
1487.300 +      }
1487.301 +      _STLP_UNWIND((_STLP_STD::_Destroy(__new_start,__new_finish),
1487.302 +                    this->_M_end_of_storage.deallocate(__new_start,__len)));
1487.303 +      _STLP_STD::_Destroy(this->_M_start, this->_M_finish + 1);
1487.304 +      this->_M_deallocate_block();
1487.305 +      this->_M_start = __new_start;
1487.306 +      this->_M_finish = __new_finish;
1487.307 +      this->_M_end_of_storage._M_data = __new_start + __len; 
1487.308 +    }
1487.309 +  }
1487.310 +}
1487.311 +
1487.312 +#endif /* _STLP_MEMBER_TEMPLATES */
1487.313 +
1487.314 +template <class _CharT, class _Traits, class _Alloc> 
1487.315 +_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
1487.316 +basic_string<_CharT,_Traits,_Alloc>::replace(iterator __first, iterator __last, size_type __n, _CharT __c)
1487.317 +{
1487.318 +  size_type __len = (size_type)(__last - __first);
1487.319 +  
1487.320 +  if (__len >= __n) {
1487.321 +    _Traits::assign(__first, __n, __c);
1487.322 +    erase(__first + __n, __last);
1487.323 +  }
1487.324 +  else {
1487.325 +    _Traits::assign(__first, __len, __c);
1487.326 +    insert(__last, __n - __len, __c);
1487.327 +  }
1487.328 +  return *this;
1487.329 +}
1487.330 +
1487.331 +#ifndef _STLP_MEMBER_TEMPLATES
1487.332 +
1487.333 +
1487.334 +template <class _CharT, class _Traits, class _Alloc> 
1487.335 +_STLP_EXP_DECLSPEC basic_string<_CharT,_Traits,_Alloc>& 
1487.336 +basic_string<_CharT,_Traits,_Alloc> ::replace(iterator __first, iterator __last,
1487.337 +            const _CharT* __f, const _CharT* __l)
1487.338 +{
1487.339 +  const ptrdiff_t         __n = __l - __f;
1487.340 +  const difference_type __len = __last - __first;
1487.341 +  if (__len >= __n) {
1487.342 +    _M_copy(__f, __l, __first);
1487.343 +    erase(__first + __n, __last);
1487.344 +  }
1487.345 +  else {
1487.346 +    const _CharT* __m = __f + __len;
1487.347 +    _M_copy(__f, __m, __first);
1487.348 +    insert(__last, __m, __l);
1487.349 +  }
1487.350 +  return *this;
1487.351 +}
1487.352 +
1487.353 +#endif /* _STLP_MEMBER_TEMPLATES */
1487.354 +
1487.355 +template <class _CharT, class _Traits, class _Alloc> 
1487.356 +_STLP_EXP_DECLSPEC __size_type__
1487.357 +basic_string<_CharT,_Traits,_Alloc> ::find(const _CharT* __s, size_type __pos, size_type __n) const 
1487.358 +{
1487.359 +#ifndef __SYMBIAN32__ // A different implementation without using search
1487.360 +  if (__pos + __n > size())
1487.361 +    return npos;
1487.362 +  else {
1487.363 +    const const_pointer __result =
1487.364 +      _STLP_STD::search((const _CharT*)this->_M_start + __pos, (const _CharT*)this->_M_finish, 
1487.365 +			__s, __s + __n, _Eq_traits<_Traits>());
1487.366 +    return __result != this->_M_finish ? __result - this->_M_start : npos;
1487.367 +  }
1487.368 +#else
1487.369 +  const size_type __len = this->size();
1487.370 +  size_t __tpos = __pos;
1487.371 +  const _CharT* __data = this->_M_start;
1487.372 +  while (__tpos + __n <= __len) {
1487.373 +    if (traits_type::compare(__data + __tpos, __s, __n) == 0)
1487.374 +      return __tpos;
1487.375 +    ++__tpos;
1487.376 +  }
1487.377 +  return npos;  
1487.378 +#endif //__SYMBIAN32__  
1487.379 +}
1487.380 +
1487.381 +template <class _CharT, class _Traits, class _Alloc> 
1487.382 +_STLP_EXP_DECLSPEC __size_type__
1487.383 +basic_string<_CharT,_Traits,_Alloc> ::find(_CharT __c, size_type __pos) const 
1487.384 +{
1487.385 +  if (__pos >= size())
1487.386 +    return npos;
1487.387 +  else {
1487.388 +    const const_pointer __result =
1487.389 +      _STLP_STD::find_if((const _CharT*)this->_M_start + __pos, (const _CharT*)this->_M_finish,
1487.390 +			 _Eq_char_bound<_Traits>(__c));
1487.391 +    return __result != this->_M_finish ? __result - this->_M_start : npos;
1487.392 +  }
1487.393 +}    
1487.394 +
1487.395 +template <class _CharT, class _Traits, class _Alloc> 
1487.396 +_STLP_EXP_DECLSPEC __size_type__
1487.397 +basic_string<_CharT,_Traits,_Alloc> ::rfind(const _CharT* __s, size_type __pos, size_type __n) const 
1487.398 +{
1487.399 +  const size_t __len = size();
1487.400 +
1487.401 +  if (__n > __len)
1487.402 +    return npos;
1487.403 +  else if (__n == 0)
1487.404 +    return (min) (__len, __pos);
1487.405 +  else {
1487.406 +    const_pointer __last = this->_M_start + (min) (__len - __n, __pos) + __n;
1487.407 +    const_pointer __result = _STLP_STD::find_end((const_pointer)this->_M_start, __last,
1487.408 +						 __s, __s + __n,
1487.409 +						 _Eq_traits<_Traits>());
1487.410 +    return __result != __last ? __result - this->_M_start : npos;
1487.411 +  }
1487.412 +}
1487.413 +
1487.414 +template <class _CharT, class _Traits, class _Alloc> 
1487.415 +_STLP_EXP_DECLSPEC __size_type__
1487.416 +basic_string<_CharT,_Traits,_Alloc> ::rfind(_CharT __c, size_type __pos) const 
1487.417 +{
1487.418 +  const size_type __len = size();
1487.419 +
1487.420 +  if (__len < 1)
1487.421 +    return npos;
1487.422 +  else {
1487.423 +    const const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1487.424 +    const_reverse_iterator __rresult =
1487.425 +      _STLP_STD::find_if(const_reverse_iterator(__last), rend(),
1487.426 +              _Eq_char_bound<_Traits>(__c));
1487.427 +    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1487.428 +  }
1487.429 +}
1487.430 +
1487.431 +template <class _CharT, class _Traits, class _Alloc> 
1487.432 +_STLP_EXP_DECLSPEC __size_type__
1487.433 +basic_string<_CharT,_Traits,_Alloc> 
1487.434 +    ::find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
1487.435 +{
1487.436 +  if (__pos >= size())
1487.437 +    return npos;
1487.438 +  else {
1487.439 +    const_iterator __result = __find_first_of(begin() + __pos, end(),
1487.440 +                                              __s, __s + __n,
1487.441 +                                              _Eq_traits<_Traits>());
1487.442 +    return __result != end() ? __result - begin() : npos;
1487.443 +  }
1487.444 +}
1487.445 +
1487.446 +
1487.447 +template <class _CharT, class _Traits, class _Alloc> 
1487.448 +_STLP_EXP_DECLSPEC __size_type__
1487.449 +basic_string<_CharT,_Traits,_Alloc> 
1487.450 +    ::find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
1487.451 +{
1487.452 +  const size_type __len = size();
1487.453 +
1487.454 +  if (__len < 1)
1487.455 +    return npos;
1487.456 +  else {
1487.457 +    const const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1487.458 +    const const_reverse_iterator __rresult =
1487.459 +      __find_first_of(const_reverse_iterator(__last), rend(),
1487.460 +                      __s, __s + __n,
1487.461 +                      _Eq_traits<_Traits>());
1487.462 +    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1487.463 +  }
1487.464 +}
1487.465 +
1487.466 +
1487.467 +template <class _CharT, class _Traits, class _Alloc> 
1487.468 +_STLP_EXP_DECLSPEC __size_type__
1487.469 +basic_string<_CharT,_Traits,_Alloc> ::find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
1487.470 +{
1487.471 +  typedef typename _Traits::char_type _CharType;
1487.472 +  if (__pos > size())
1487.473 +    return npos;
1487.474 +  else {
1487.475 +    const_pointer __result = _STLP_STD::find_if((const _CharT*)this->_M_start + __pos, 
1487.476 +				      (const _CharT*)this->_M_finish,
1487.477 +                                _Not_within_traits<_Traits>((const _CharType*)__s, 
1487.478 +							    (const _CharType*)__s + __n));
1487.479 +    return __result != this->_M_finish ? __result - this->_M_start : npos;
1487.480 +  }
1487.481 +}
1487.482 +
1487.483 +template <class _CharT, class _Traits, class _Alloc> 
1487.484 +_STLP_EXP_DECLSPEC __size_type__
1487.485 +basic_string<_CharT,_Traits,_Alloc> ::find_first_not_of(_CharT __c, size_type __pos) const
1487.486 +{
1487.487 +  if (__pos > size())
1487.488 +    return npos;
1487.489 +  else {
1487.490 +    const_pointer __result = _STLP_STD::find_if((const _CharT*)this->_M_start + __pos, (const _CharT*)this->_M_finish,
1487.491 +						_Neq_char_bound<_Traits>(__c));
1487.492 +    return __result != this->_M_finish ? __result - this->_M_start : npos;
1487.493 +  }
1487.494 +}    
1487.495 +
1487.496 +template <class _CharT, class _Traits, class _Alloc> 
1487.497 +_STLP_EXP_DECLSPEC __size_type__
1487.498 +basic_string<_CharT,_Traits,_Alloc> ::find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const 
1487.499 +{
1487.500 +  typedef typename _Traits::char_type _CharType;
1487.501 +  const size_type __len = size();
1487.502 +
1487.503 +  if (__len < 1)
1487.504 +    return npos;
1487.505 +  else {
1487.506 +    const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1487.507 +    const_reverse_iterator __rlast = const_reverse_iterator(__last);
1487.508 +    const_reverse_iterator __rresult =
1487.509 +      _STLP_STD::find_if(__rlast, rend(),
1487.510 +			 _Not_within_traits<_Traits>((const _CharType*)__s, 
1487.511 +						     (const _CharType*)__s + __n));
1487.512 +    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1487.513 +  }
1487.514 +}
1487.515 +
1487.516 +template <class _CharT, class _Traits, class _Alloc> 
1487.517 +_STLP_EXP_DECLSPEC __size_type__
1487.518 +basic_string<_CharT, _Traits, _Alloc> ::find_last_not_of(_CharT __c, size_type __pos) const 
1487.519 +{
1487.520 +  const size_type __len = size();
1487.521 +
1487.522 +  if (__len < 1)
1487.523 +    return npos;
1487.524 +  else {
1487.525 +    const_iterator __last = begin() + (min) (__len - 1, __pos) + 1;
1487.526 +    const_reverse_iterator __rlast = const_reverse_iterator(__last);
1487.527 +    const_reverse_iterator __rresult =
1487.528 +      _STLP_STD::find_if(__rlast, rend(),
1487.529 +			 _Neq_char_bound<_Traits>(__c));
1487.530 +    return __rresult != rend() ? (__rresult.base() - 1) - begin() : npos;
1487.531 +  }
1487.532 +}
1487.533 +
1487.534 +template <class _CharT, class _Traits, class _Alloc> 
1487.535 +void _STLP_CALL _S_string_copy(const basic_string<_CharT,_Traits,_Alloc>& __s,
1487.536 +                    _CharT* __buf,
1487.537 +                    size_t __n)
1487.538 +{
1487.539 +  if (__n > 0) {
1487.540 +    __n = (min) (__n - 1, __s.size());
1487.541 +    _STLP_STD::copy(__s.begin(), __s.begin() + __n, __buf);
1487.542 +    __buf[__n] = _CharT();
1487.543 +  }
1487.544 +}
1487.545 +_STLP_END_NAMESPACE
1487.546 +
1487.547 +// _string_fwd has to see clean basic_string
1487.548 +# undef basic_string
1487.549 +
1487.550 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1487.551 +#  include <stl/_string_fwd.c> 
1487.552 +# endif
1487.553 +
1487.554 +# ifdef _STLP_DEBUG
1487.555 +#  define basic_string _Nondebug_string
1487.556 +# endif
1487.557 +
1487.558 +# include <stl/_range_errors.h>  
1487.559 +_STLP_BEGIN_NAMESPACE
1487.560 +
1487.561 +// _String_base methods
1487.562 +template <class _Tp, class _Alloc> 
1487.563 +void _String_base<_Tp,_Alloc>::_M_throw_length_error() const {
1487.564 +    __stl_throw_length_error("basic_string");
1487.565 +}
1487.566 +
1487.567 +template <class _Tp, class _Alloc> 
1487.568 +void _String_base<_Tp, _Alloc>::_M_throw_out_of_range() const {
1487.569 +    __stl_throw_out_of_range("basic_string");
1487.570 +}
1487.571 +
1487.572 +template <class _Tp, class _Alloc> 
1487.573 +void _String_base<_Tp, _Alloc>::_M_allocate_block(size_t __n) {  
1487.574 +  if ((__n <= (max_size()+1)) && (__n>0)){ 
1487.575 +    _M_start  = _M_end_of_storage.allocate(__n); 
1487.576 +    _M_finish = _M_start; 
1487.577 +    _M_end_of_storage._M_data = _M_start + __n; 
1487.578 +  } 
1487.579 +    else 
1487.580 +      _M_throw_length_error(); 
1487.581 +} 
1487.582 + 
1487.583 +template <class _CharT, class _Traits, class _Alloc> 
1487.584 +_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>::basic_string()
1487.585 +  : _String_base<_CharT,_Alloc>(allocator_type()) 
1487.586 +{  
1487.587 +  this->_M_start = this->_M_end_of_storage.allocate(8); 
1487.588 +  this->_M_finish = this->_M_start; 
1487.589 +  this->_M_end_of_storage._M_data = this->_M_start + 8; 
1487.590 +  _M_terminate_string();  
1487.591 +  _STLP_POP_CLEANUP_ITEM
1487.592 +} 
1487.593 +
1487.594 +
1487.595 +template <class _CharT, class _Traits, class _Alloc> 
1487.596 +_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT* __s, 
1487.597 +						    const allocator_type& __a) 
1487.598 +  : _String_base<_CharT,_Alloc>(__a)  
1487.599 +{ 
1487.600 +  _STLP_FIX_LITERAL_BUG(__s) 
1487.601 +    _M_range_initialize(__s, __s + traits_type::length(__s));  
1487.602 +  _STLP_POP_CLEANUP_ITEM
1487.603 +} 
1487.604 +
1487.605 +
1487.606 +template <class _CharT, class _Traits, class _Alloc> 
1487.607 +_STLP_EXP_DECLSPEC basic_string<_CharT, _Traits, _Alloc>::basic_string(const basic_string<_CharT, _Traits, _Alloc> & __s)  
1487.608 +  : _String_base<_CharT,_Alloc>(__s.get_allocator())  
1487.609 +{  
1487.610 +  _M_range_initialize(__s._M_start, __s._M_finish);  
1487.611 +  _STLP_POP_CLEANUP_ITEM
1487.612 +} 
1487.613 +  
1487.614 +# if defined ( __SUNPRO_CC) && ! defined(_STLP_STATIC_CONST_INIT_BUG)
1487.615 +template <class _CharT, class _Traits, class _Alloc> const size_t basic_string<_CharT, _Traits, _Alloc>::npos;
1487.616 +# endif
1487.617 +
1487.618 +_STLP_END_NAMESPACE
1487.619 +
1487.620 +# undef basic_string
1487.621 +# undef __size_type__
1487.622 +# undef size_type
1487.623 +# undef iterator
1487.624 +# endif /* NATIVE */
1487.625 +
1487.626 +#endif /*  _STLP_STRING_C */
1487.627 +
1487.628 +// Local Variables:
1487.629 +// mode:C++
1487.630 +// End:
  1488.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1488.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_base.h	Wed Mar 31 12:27:01 2010 +0100
  1488.3 @@ -0,0 +1,249 @@
  1488.4 +/*
  1488.5 + * Copyright (c) 1997-1999
  1488.6 + * Silicon Graphics Computer Systems, Inc.
  1488.7 + *
  1488.8 + * Copyright (c) 1999
  1488.9 + * Boris Fomitchev
 1488.10 + *
 1488.11 + * Copyright (c) 2003
 1488.12 + * Francois Dumont
 1488.13 + *
 1488.14 + * This material is provided "as is", with absolutely no warranty expressed
 1488.15 + * or implied. Any use is at your own risk.
 1488.16 + *
 1488.17 + * Permission to use or copy this software for any purpose is hereby granted
 1488.18 + * without fee, provided the above notices are retained on all copies.
 1488.19 + * Permission to modify the code and to distribute modified code is granted,
 1488.20 + * provided the above notices are retained, and a notice that the code was
 1488.21 + * modified is included with the above copyright notice.
 1488.22 + *
 1488.23 + */
 1488.24 +
 1488.25 +#ifndef _STLP_STRING_BASE_H
 1488.26 +#define _STLP_STRING_BASE_H
 1488.27 +
 1488.28 +// ------------------------------------------------------------
 1488.29 +// Class _String_base.
 1488.30 +
 1488.31 +// _String_base is a helper class that makes it it easier to write an
 1488.32 +// exception-safe version of basic_string.  The constructor allocates,
 1488.33 +// but does not initialize, a block of memory.  The destructor
 1488.34 +// deallocates, but does not destroy elements within, a block of
 1488.35 +// memory.  The destructor assumes that _M_start either is null, or else
 1488.36 +// points to a block of memory that was allocated using _String_base's
 1488.37 +// allocator and whose size is _M_end_of_storage._M_data - _M_start.
 1488.38 +
 1488.39 +_STLP_BEGIN_NAMESPACE
 1488.40 +
 1488.41 +_STLP_MOVE_TO_PRIV_NAMESPACE
 1488.42 +
 1488.43 +#ifndef _STLP_SHORT_STRING_SZ
 1488.44 +#  define _STLP_SHORT_STRING_SZ 16
 1488.45 +#endif
 1488.46 +
 1488.47 +template <class _Tp, class _Alloc>
 1488.48 +class _String_base {
 1488.49 +  typedef _String_base<_Tp, _Alloc> _Self;
 1488.50 +protected:
 1488.51 +  _STLP_FORCE_ALLOCATORS(_Tp, _Alloc)
 1488.52 +public:
 1488.53 +  //dums: Some compiler(MSVC6) require it to be public not simply protected!
 1488.54 +  enum {_DEFAULT_SIZE = _STLP_SHORT_STRING_SZ};
 1488.55 +  //This is needed by the full move framework
 1488.56 +  typedef typename _Alloc_traits<_Tp, _Alloc>::allocator_type allocator_type;
 1488.57 +  typedef _STLP_alloc_proxy<_Tp*, _Tp, allocator_type> _AllocProxy;
 1488.58 +  typedef size_t size_type;
 1488.59 +private:
 1488.60 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
 1488.61 +  union _Buffers {
 1488.62 +    _Tp*  _M_dynamic_buf;
 1488.63 +    _Tp   _M_static_buf[_DEFAULT_SIZE];
 1488.64 +  } _M_buffers;
 1488.65 +#else
 1488.66 +  _Tp*    _M_start;
 1488.67 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
 1488.68 +protected:
 1488.69 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
 1488.70 +  bool _M_using_static_buf() const {
 1488.71 +    return (_M_end_of_storage._M_data == _M_buffers._M_static_buf + _DEFAULT_SIZE);
 1488.72 +  }
 1488.73 +  _Tp const* _M_Start() const {
 1488.74 +    return _M_using_static_buf()?_M_buffers._M_static_buf:_M_buffers._M_dynamic_buf;
 1488.75 +  }
 1488.76 +  _Tp* _M_Start() {
 1488.77 +    return _M_using_static_buf()?_M_buffers._M_static_buf:_M_buffers._M_dynamic_buf;
 1488.78 +  }
 1488.79 +#else
 1488.80 +  _Tp const* _M_Start() const {return _M_start;}
 1488.81 +  _Tp* _M_Start() {return _M_start;}
 1488.82 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
 1488.83 +
 1488.84 +  _Tp*    _M_finish;
 1488.85 +  _AllocProxy _M_end_of_storage;
 1488.86 +
 1488.87 +  _Tp const* _M_Finish() const {return _M_finish;}
 1488.88 +  _Tp* _M_Finish() {return _M_finish;}
 1488.89 +
 1488.90 +  // Precondition: 0 < __n <= max_size().
 1488.91 +  void _M_allocate_block(size_t __n = _DEFAULT_SIZE);
 1488.92 +  void _M_deallocate_block() {
 1488.93 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
 1488.94 +    if (!_M_using_static_buf() && (_M_buffers._M_dynamic_buf != 0))
 1488.95 +      _M_end_of_storage.deallocate(_M_buffers._M_dynamic_buf, _M_end_of_storage._M_data - _M_buffers._M_dynamic_buf);
 1488.96 +#else
 1488.97 +    if (_M_start != 0)
 1488.98 +      _M_end_of_storage.deallocate(_M_start, _M_end_of_storage._M_data - _M_start);
 1488.99 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1488.100 +  }
1488.101 +
1488.102 +  size_t max_size() const {
1488.103 +    const size_type __string_max_size = size_type(-1) / sizeof(_Tp);
1488.104 +    typename allocator_type::size_type __alloc_max_size = _M_end_of_storage.max_size();
1488.105 +    return (min)(__alloc_max_size, __string_max_size) - 1;
1488.106 +  }
1488.107 +
1488.108 +  _String_base(const allocator_type& __a)
1488.109 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.110 +    : _M_finish(_M_buffers._M_static_buf), _M_end_of_storage(__a, _M_buffers._M_static_buf + _DEFAULT_SIZE)
1488.111 +#else
1488.112 +    : _M_start(0), _M_finish(0), _M_end_of_storage(__a, (_Tp*)0)
1488.113 +#endif
1488.114 +    {}
1488.115 +
1488.116 +  _String_base(const allocator_type& __a, size_t __n)
1488.117 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.118 +    : _M_finish(_M_buffers._M_static_buf), _M_end_of_storage(__a, _M_buffers._M_static_buf + _DEFAULT_SIZE) {
1488.119 +#else
1488.120 +    : _M_start(0), _M_finish(0), _M_end_of_storage(__a, (_Tp*)0) {
1488.121 +#endif
1488.122 +      _M_allocate_block(__n);
1488.123 +    }
1488.124 +
1488.125 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.126 +  void _M_move_src (_Self &src) {
1488.127 +      if (src._M_using_static_buf()) {
1488.128 +        _M_buffers = src._M_buffers;
1488.129 +        _M_finish = _M_buffers._M_static_buf + (src._M_finish - src._M_buffers._M_static_buf);
1488.130 +        _M_end_of_storage._M_data = _M_buffers._M_static_buf + _DEFAULT_SIZE;
1488.131 +      }
1488.132 +      else {
1488.133 +        _M_buffers._M_dynamic_buf = src._M_buffers._M_dynamic_buf;
1488.134 +        _M_finish = src._M_finish;
1488.135 +        _M_end_of_storage._M_data = src._M_end_of_storage._M_data;
1488.136 +        src._M_buffers._M_dynamic_buf = 0;
1488.137 +      }
1488.138 +    }
1488.139 +#endif
1488.140 +
1488.141 +  _String_base(__move_source<_Self> src)
1488.142 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.143 +    : _M_end_of_storage(__move_source<_AllocProxy>(src.get()._M_end_of_storage)) {
1488.144 +      _M_move_src(src.get());
1488.145 +#else
1488.146 +    : _M_start(src.get()._M_start), _M_finish(src.get()._M_finish),
1488.147 +      _M_end_of_storage(__move_source<_AllocProxy>(src.get()._M_end_of_storage)) {
1488.148 +      src.get()._M_start = 0;
1488.149 +#endif
1488.150 +    }
1488.151 +
1488.152 +  ~_String_base() { _M_deallocate_block(); }
1488.153 +
1488.154 +  void _M_reset(_Tp *__start, _Tp *__finish, _Tp *__end_of_storage) {
1488.155 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.156 +    _M_buffers._M_dynamic_buf = __start;
1488.157 +#else
1488.158 +    _M_start = __start;
1488.159 +#endif
1488.160 +    _M_finish = __finish;
1488.161 +    _M_end_of_storage._M_data = __end_of_storage;
1488.162 +  }
1488.163 +
1488.164 +  void _M_destroy_back () {
1488.165 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.166 +    if (!_M_using_static_buf())
1488.167 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1488.168 +      _STLP_STD::_Destroy(_M_finish);
1488.169 +  }
1488.170 +
1488.171 +  void _M_destroy_range(size_t __from_off = 0, size_t __to_off = 1) {
1488.172 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.173 +    if (!_M_using_static_buf())
1488.174 +      _STLP_STD::_Destroy_Range(_M_buffers._M_dynamic_buf + __from_off, _M_finish + __to_off);
1488.175 +#else
1488.176 +    _STLP_STD::_Destroy_Range(_M_start + __from_off, _M_finish + __to_off);
1488.177 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1488.178 +  }
1488.179 +
1488.180 +  void _M_destroy_ptr_range(_Tp *__f, _Tp *__l) {
1488.181 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.182 +    if (!_M_using_static_buf())
1488.183 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1488.184 +      _STLP_STD::_Destroy_Range(__f, __l);
1488.185 +  }
1488.186 +
1488.187 +  void _M_Swap(_Self &__s) {
1488.188 +#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1488.189 +    if (_M_using_static_buf()) {
1488.190 +      if (__s._M_using_static_buf()) {
1488.191 +        _STLP_STD::swap(_M_buffers, __s._M_buffers);
1488.192 +        _Tp *__tmp = _M_finish;
1488.193 +        _M_finish = _M_buffers._M_static_buf + (__s._M_finish - __s._M_buffers._M_static_buf);
1488.194 +        __s._M_finish = __s._M_buffers._M_static_buf + (__tmp - _M_buffers._M_static_buf);
1488.195 +        //We need to swap _M_end_of_storage for allocators with state:
1488.196 +        _M_end_of_storage.swap(__s._M_end_of_storage);
1488.197 +        _M_end_of_storage._M_data = _M_buffers._M_static_buf + _DEFAULT_SIZE;
1488.198 +        __s._M_end_of_storage._M_data = __s._M_buffers._M_static_buf + _DEFAULT_SIZE;
1488.199 +      } else {
1488.200 +        __s._M_Swap(*this);
1488.201 +        return;
1488.202 +      }
1488.203 +    }
1488.204 +    else if (__s._M_using_static_buf()) {
1488.205 +      _Tp *__tmp = _M_buffers._M_dynamic_buf;
1488.206 +      _Tp *__tmp_finish = _M_finish;
1488.207 +      _Tp *__tmp_end_data = _M_end_of_storage._M_data;
1488.208 +      _M_buffers = __s._M_buffers;
1488.209 +      //We need to swap _M_end_of_storage for allocators with state:
1488.210 +      _M_end_of_storage.swap(__s._M_end_of_storage);
1488.211 +      _M_end_of_storage._M_data = _M_buffers._M_static_buf + _DEFAULT_SIZE;
1488.212 +      _M_finish = _M_buffers._M_static_buf + (__s._M_finish - __s._M_buffers._M_static_buf);
1488.213 +      __s._M_buffers._M_dynamic_buf = __tmp;
1488.214 +      __s._M_end_of_storage._M_data = __tmp_end_data;
1488.215 +      __s._M_finish = __tmp_finish;
1488.216 +    }
1488.217 +    else {
1488.218 +      _STLP_STD::swap(_M_buffers._M_dynamic_buf, __s._M_buffers._M_dynamic_buf);
1488.219 +      _M_end_of_storage.swap(__s._M_end_of_storage);
1488.220 +      _STLP_STD::swap(_M_finish, __s._M_finish);
1488.221 +    }
1488.222 +#else
1488.223 +    _STLP_STD::swap(_M_start, __s._M_start);
1488.224 +    _M_end_of_storage.swap(__s._M_end_of_storage);
1488.225 +    _STLP_STD::swap(_M_finish, __s._M_finish);
1488.226 +#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1488.227 +  }
1488.228 +
1488.229 +  void _STLP_FUNCTION_THROWS _M_throw_length_error() const;
1488.230 +  void _STLP_FUNCTION_THROWS _M_throw_out_of_range() const;
1488.231 +};
1488.232 +
1488.233 +#undef _STLP_SHORT_STRING_SZ
1488.234 +
1488.235 +#if defined (_STLP_USE_TEMPLATE_EXPORT)
1488.236 +_STLP_EXPORT_TEMPLATE_CLASS _String_base<char, allocator<char> >;
1488.237 +#  if defined (_STLP_HAS_WCHAR_T)
1488.238 +_STLP_EXPORT_TEMPLATE_CLASS _String_base<wchar_t, allocator<wchar_t> >;
1488.239 +#  endif
1488.240 +#endif /* _STLP_USE_TEMPLATE_EXPORT */
1488.241 +
1488.242 +_STLP_MOVE_TO_STD_NAMESPACE
1488.243 +
1488.244 +_STLP_END_NAMESPACE
1488.245 +
1488.246 +#endif /* _STLP_STRING_BASE_H */
1488.247 +
1488.248 +/*
1488.249 + * Local Variables:
1488.250 + * mode:C++
1488.251 + * End:
1488.252 + */
  1489.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1489.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_fwd.h	Wed Mar 31 12:27:01 2010 +0100
  1489.3 @@ -0,0 +1,61 @@
  1489.4 +/*
  1489.5 + * Copyright (c) 1997
  1489.6 + * Silicon Graphics Computer Systems, Inc.
  1489.7 + *
  1489.8 + * Copyright (c) 1999 
  1489.9 + * Boris Fomitchev
 1489.10 + *
 1489.11 + * This material is provided "as is", with absolutely no warranty expressed
 1489.12 + * or implied. Any use is at your own risk.
 1489.13 + *
 1489.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1489.15 + * without fee, provided the above notices are retained on all copies.
 1489.16 + * Permission to modify the code and to distribute modified code is granted,
 1489.17 + * provided the above notices are retained, and a notice that the code was
 1489.18 + * modified is included with the above copyright notice.
 1489.19 + *
 1489.20 + */
 1489.21 +
 1489.22 +#ifndef _STLP_STRING_FWD_H
 1489.23 +#define _STLP_STRING_FWD_H
 1489.24 +
 1489.25 +#ifndef _STLP_IOSFWD
 1489.26 +# include <iosfwd>
 1489.27 +#endif
 1489.28 +
 1489.29 +_STLP_BEGIN_NAMESPACE
 1489.30 +
 1489.31 +# if !defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
 1489.32 +template <class _CharT, 
 1489.33 +          class _Traits = char_traits<_CharT>, 
 1489.34 +          class _Alloc = allocator<_CharT> >
 1489.35 +class basic_string;
 1489.36 +# else
 1489.37 +template <class _CharT, 
 1489.38 +          class _Traits, 
 1489.39 +          class _Alloc>
 1489.40 +class basic_string;
 1489.41 +# endif /* _STLP_LIMITED_DEFAULT_TEMPLATES */
 1489.42 +
 1489.43 +typedef basic_string<char, char_traits<char>, allocator<char> > string;
 1489.44 +
 1489.45 +#  ifdef _STLP_HAS_WCHAR_T
 1489.46 +typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring;
 1489.47 +#  endif
 1489.48 +
 1489.49 +# ifdef _STLP_OWN_IOSTREAMS
 1489.50 +_STLP_DECLSPEC const char*  _STLP_CALL
 1489.51 +__get_c_string(const string& __str);
 1489.52 +# else
 1489.53 +template <class _CharT, class _Traits, class _Alloc>
 1489.54 +const char* _STLP_CALL
 1489.55 +__get_c_string(const basic_string<_CharT, _Traits, _Alloc>& __str);
 1489.56 +# endif
 1489.57 +
 1489.58 +_STLP_END_NAMESPACE
 1489.59 +
 1489.60 +#endif /* _STLP_STRING_FWD_H */
 1489.61 +
 1489.62 +// Local Variables:
 1489.63 +// mode:C++
 1489.64 +// End:
  1490.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1490.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_hash.h	Wed Mar 31 12:27:01 2010 +0100
  1490.3 @@ -0,0 +1,70 @@
  1490.4 +/*
  1490.5 + * Copyright (c) 1997-1999
  1490.6 + * Silicon Graphics Computer Systems, Inc.
  1490.7 + *
  1490.8 + * Copyright (c) 1999 
  1490.9 + * Boris Fomitchev
 1490.10 + *
 1490.11 + * This material is provided "as is", with absolutely no warranty expressed
 1490.12 + * or implied. Any use is at your own risk.
 1490.13 + *
 1490.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1490.15 + * without fee, provided the above notices are retained on all copies.
 1490.16 + * Permission to modify the code and to distribute modified code is granted,
 1490.17 + * provided the above notices are retained, and a notice that the code was
 1490.18 + * modified is included with the above copyright notice.
 1490.19 + *
 1490.20 + */
 1490.21 +
 1490.22 +#ifndef _STLP_STRING_HASH_H
 1490.23 +# define _STLP_STRING_HASH_H
 1490.24 +
 1490.25 +#ifndef _STLP_HASH_FUN_H
 1490.26 +# include <stl/_hash_fun.h>
 1490.27 +#endif
 1490.28 +
 1490.29 +#ifndef _STLP_STRING_H
 1490.30 +# include <stl/_string.h>
 1490.31 +#endif
 1490.32 +
 1490.33 +_STLP_BEGIN_NAMESPACE
 1490.34 +
 1490.35 +template <class _CharT, class _Traits, class _Alloc>
 1490.36 +_STLP_INLINE_LOOP size_t
 1490.37 +__stl_string_hash(const basic_string<_CharT,_Traits,_Alloc>& __s) {
 1490.38 +  unsigned long __h = 0;
 1490.39 +  typedef typename basic_string<_CharT,_Traits,_Alloc>::const_pointer const_ptr;
 1490.40 +  size_t __len = __s.size();
 1490.41 +  const _CharT* __data = __s.data();
 1490.42 +  for ( size_t __i = 0; __i < __len; ++__i)
 1490.43 +    __h = 5*__h + __data[__i];
 1490.44 +  return size_t(__h);
 1490.45 +}
 1490.46 +
 1490.47 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
 1490.48 +
 1490.49 +template <class _CharT, class _Traits, class _Alloc>
 1490.50 +struct hash<basic_string<_CharT,_Traits,_Alloc> > {
 1490.51 +  size_t operator()(const basic_string<_CharT,_Traits,_Alloc>& __s) const
 1490.52 +    { return __stl_string_hash(__s); }
 1490.53 +};
 1490.54 +
 1490.55 +#else
 1490.56 +
 1490.57 +_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC hash<string> {
 1490.58 +  size_t operator()(const string& __s) const
 1490.59 +    { return __stl_string_hash(__s); }
 1490.60 +};
 1490.61 +
 1490.62 +# if defined (_STLP_HAS_WCHAR_T)
 1490.63 +_STLP_TEMPLATE_NULL struct _STLP_CLASS_DECLSPEC hash<wstring> {
 1490.64 +  size_t operator()(const wstring& __s) const
 1490.65 +    { return __stl_string_hash(__s); }
 1490.66 +};
 1490.67 +# endif
 1490.68 +
 1490.69 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
 1490.70 +
 1490.71 +_STLP_END_NAMESPACE
 1490.72 +
 1490.73 +#endif
  1491.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1491.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_io.c	Wed Mar 31 12:27:01 2010 +0100
  1491.3 @@ -0,0 +1,369 @@
  1491.4 +/*
  1491.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1491.6 +
  1491.7 +* Redistribution and use in source and binary forms, with or without 
  1491.8 +* modification, are permitted provided that the following conditions are met:
  1491.9 +
 1491.10 +* Redistributions of source code must retain the above copyright notice, this 
 1491.11 +* list of conditions and the following disclaimer.
 1491.12 +* Redistributions in binary form must reproduce the above copyright notice, 
 1491.13 +* this list of conditions and the following disclaimer in the documentation 
 1491.14 +* and/or other materials provided with the distribution.
 1491.15 +* Neither the name of Nokia Corporation nor the names of its contributors 
 1491.16 +* may be used to endorse or promote products derived from this software 
 1491.17 +* without specific prior written permission.
 1491.18 +
 1491.19 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1491.20 +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1491.21 +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1491.22 +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1491.23 +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1491.24 +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1491.25 +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1491.26 +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1491.27 +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1491.28 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1491.29 +*
 1491.30 +* Description:
 1491.31 +*
 1491.32 +*/
 1491.33 +
 1491.34 +#ifndef _STLP_STRING_IO_C
 1491.35 +#define _STLP_STRING_IO_C
 1491.36 +
 1491.37 +#ifndef _STLP_STRING_IO_H
 1491.38 +# include <stl/_string_io.h>
 1491.39 +#endif
 1491.40 +
 1491.41 +#ifndef _STLP_INTERNAL_CTYPE_H
 1491.42 +# include <stl/_ctype.h>
 1491.43 +#endif
 1491.44 +
 1491.45 +# ifdef _STLP_DEBUG
 1491.46 +#  define basic_string _Nondebug_string
 1491.47 +# endif
 1491.48 +
 1491.49 +_STLP_BEGIN_NAMESPACE
 1491.50 +
 1491.51 +# if defined (_STLP_OWN_IOSTREAMS)
 1491.52 +#  define _STLP_USING_IO
 1491.53 +# else
 1491.54 +#  define _STLP_USING_IO _STLP_USING_VENDOR_STD
 1491.55 +# endif
 1491.56 +
 1491.57 +#if defined (_STLP_USE_NEW_IOSTREAMS)
 1491.58 +
 1491.59 +template <class _CharT, class _Traits>
 1491.60 +bool _STLP_CALL
 1491.61 +__stlp_string_fill(basic_ostream<_CharT, _Traits>& __os,
 1491.62 +                  basic_streambuf<_CharT, _Traits>* __buf,
 1491.63 +                  size_t __n)
 1491.64 +{
 1491.65 +  _CharT __f = __os.fill();
 1491.66 +  size_t __i;
 1491.67 +  bool __ok = true;
 1491.68 +
 1491.69 +  for (__i = 0; __i < __n; ++__i)
 1491.70 +    __ok = __ok && !_Traits::eq_int_type(__buf->sputc(__f), _Traits::eof());
 1491.71 +  return __ok;
 1491.72 +}
 1491.73 +
 1491.74 +template <class _CharT, class _Traits, class _Alloc>
 1491.75 +basic_ostream<_CharT, _Traits>& _STLP_CALL
 1491.76 +operator<<(basic_ostream<_CharT, _Traits>& __os, 
 1491.77 +           const basic_string<_CharT,_Traits,_Alloc>& __s)
 1491.78 +{
 1491.79 +
 1491.80 +  _STLP_USING_IO
 1491.81 +  typedef basic_ostream<_CharT, _Traits> __ostream;
 1491.82 +  typename __ostream::sentry __sentry(__os);
 1491.83 +  bool __ok = false;
 1491.84 +
 1491.85 +  if (__sentry) {
 1491.86 +    __ok = true;
 1491.87 +    size_t __n = __s.size();
 1491.88 +    size_t __pad_len = 0;
 1491.89 +    const bool __left = (__os.flags() & __ostream::left) != 0;
 1491.90 +    const size_t __w = __os.width(0);
 1491.91 +    basic_streambuf<_CharT, _Traits>* __buf = __os.rdbuf();
 1491.92 +
 1491.93 +    if (__n < __w) {
 1491.94 +      __pad_len = __w - __n;
 1491.95 +    }
 1491.96 +    
 1491.97 +    if (!__left)
 1491.98 +      __ok = __stlp_string_fill(__os, __buf, __pad_len);    
 1491.99 +
1491.100 +    __ok = __ok && (__buf->sputn(__s.data(), streamsize(__n)) == streamsize(__n));
1491.101 +
1491.102 +    if (__left)
1491.103 +      __ok = __ok && __stlp_string_fill(__os, __buf, __pad_len);
1491.104 +  }
1491.105 +
1491.106 +  if (!__ok)
1491.107 +    __os.setstate(__ostream::failbit);
1491.108 +
1491.109 +  return __os;
1491.110 +}
1491.111 + 
1491.112 +template <class _CharT, class _Traits, class _Alloc>
1491.113 +basic_istream<_CharT, _Traits>& _STLP_CALL 
1491.114 +operator>>(basic_istream<_CharT, _Traits>& __is,
1491.115 +           basic_string<_CharT,_Traits, _Alloc>& __s)
1491.116 +{
1491.117 +  _STLP_USING_IO
1491.118 +  typedef basic_istream<_CharT, _Traits> __istream;
1491.119 +  typename __istream::sentry __sentry(__is);
1491.120 +
1491.121 +  if (__sentry) {
1491.122 +    basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
1491.123 +    typedef ctype<_CharT> _C_type;
1491.124 +
1491.125 +#ifdef _STLP_OWN_IOSTREAMS
1491.126 +    //    const _C_type& _Ctype = use_facet<_C_type>(__loc);
1491.127 +    const _C_type& _Ctype = *(const _C_type*)__is._M_ctype_facet();
1491.128 +#else
1491.129 +# if defined (_STLP_MSVC) && (_STLP_MSVC <= 1200 ) || defined (__ICL)
1491.130 +    const locale& __loc = __is.getloc();
1491.131 +    const _C_type& _Ctype = use_facet(__loc , ( _C_type * ) 0, true);
1491.132 +# elif defined (__SUNPRO_CC)
1491.133 +    const locale& __loc = __is.getloc();
1491.134 +    const _C_type& _Ctype = use_facet(__loc , ( _C_type * ) 0);
1491.135 +# else
1491.136 +    const locale& __loc = __is.getloc();
1491.137 +    const _C_type& _Ctype = use_facet<_C_type>(__loc);
1491.138 +# endif
1491.139 +#endif
1491.140 +    __s.clear();
1491.141 +    size_t __n = __is.width(0);
1491.142 +    if (__n == 0)
1491.143 +      __n = __STATIC_CAST(size_t,-1);
1491.144 +    else
1491.145 +      __s.reserve(__n);
1491.146 +    
1491.147 +
1491.148 +    while (__n-- > 0) {
1491.149 +      typename _Traits::int_type __c1 = __buf->sbumpc();
1491.150 +      if (_Traits::eq_int_type(__c1, _Traits::eof())) {
1491.151 +        __is.setstate(__istream::eofbit);
1491.152 +        break;
1491.153 +      }
1491.154 +      else {
1491.155 +        _CharT __c = _Traits::to_char_type(__c1);
1491.156 +
1491.157 +        if (_Ctype.is(_C_type::space, __c)) {
1491.158 +          if (_Traits::eq_int_type(__buf->sputbackc(__c), _Traits::eof()))
1491.159 +            __is.setstate(__istream::failbit);
1491.160 +          break;
1491.161 +        }
1491.162 +#ifdef __SYMBIAN32__
1491.163 +        else if (__c == '\b') {
1491.164 +          __s.pop_back();
1491.165 +        }
1491.166 +#endif
1491.167 +        else
1491.168 +          __s.push_back(__c);
1491.169 +      }
1491.170 +    }
1491.171 +    
1491.172 +    // If we have read no characters, then set failbit.
1491.173 +    if (__s.size() == 0)
1491.174 +      __is.setstate(__istream::failbit);
1491.175 +  }
1491.176 +  else
1491.177 +    __is.setstate(__istream::failbit);
1491.178 +
1491.179 +  return __is;
1491.180 +}
1491.181 +
1491.182 +template <class _CharT, class _Traits, class _Alloc>    
1491.183 +basic_istream<_CharT, _Traits>& _STLP_CALL 
1491.184 +getline(basic_istream<_CharT, _Traits>& __is,
1491.185 +        basic_string<_CharT,_Traits,_Alloc>& __s,
1491.186 +        _CharT __delim)
1491.187 +{
1491.188 +  _STLP_USING_IO
1491.189 +  typedef basic_istream<_CharT, _Traits> __istream;
1491.190 +  size_t __nread = 0;
1491.191 +  typename basic_istream<_CharT, _Traits>::sentry __sentry(__is, true);
1491.192 +  if (__sentry) {
1491.193 +    basic_streambuf<_CharT, _Traits>* __buf = __is.rdbuf();
1491.194 +    __s.clear();
1491.195 +
1491.196 +    while (__nread < __s.max_size()) {
1491.197 +      int __c1 = __buf->sbumpc();
1491.198 +      if (_Traits::eq_int_type(__c1, _Traits::eof())) {
1491.199 +        __is.setstate(__istream::eofbit);
1491.200 +        break;
1491.201 +      }
1491.202 +      else {
1491.203 +        ++__nread;
1491.204 +        _CharT __c = _Traits::to_char_type(__c1);
1491.205 +        if (!_Traits::eq(__c, __delim)) 
1491.206 +          __s.push_back(__c);
1491.207 +        else
1491.208 +          break;              // Character is extracted but not appended.
1491.209 +      }
1491.210 +    }
1491.211 +  }
1491.212 +  if (__nread == 0 || __nread >= __s.max_size())
1491.213 +    __is.setstate(__istream::failbit);
1491.214 +
1491.215 +  return __is;
1491.216 +}
1491.217 +
1491.218 +#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
1491.219 +
1491.220 +// (reg) For Watcom IO, _OSTREAM_DLL tells if ostream class is in .exe or in .dll
1491.221 +
1491.222 +template <class _CharT, class _Traits, class _Alloc>
1491.223 +_OSTREAM_DLL&  _STLP_CALL operator<<(_OSTREAM_DLL& __os, 
1491.224 +                    const basic_string<_CharT,_Traits,_Alloc>& __s)
1491.225 +{
1491.226 +  _STLP_USING_IO
1491.227 +  streambuf* __buf = __os.rdbuf();
1491.228 +  if (__buf) {
1491.229 +    size_t __n = __s.size();
1491.230 +    size_t __pad_len = 0;
1491.231 +    const bool __left = (__os.flags() & ios::left) !=0;
1491.232 +    const size_t __w = __os.width();
1491.233 +
1491.234 +    if (__n < __w) { 
1491.235 +      __pad_len = __w - __n; 
1491.236 +    } 
1491.237 +    
1491.238 +    if (!__left)
1491.239 +      __stlp_string_fill(__os, __buf, __pad_len);
1491.240 +  
1491.241 +    const size_t __nwritten = __buf->sputn(__s.data(), __n);
1491.242 +
1491.243 +    if (__left)
1491.244 +      __stlp_string_fill(__os, __buf, __pad_len);
1491.245 +
1491.246 +    if (__nwritten != __n)
1491.247 +      __os.clear(__os.rdstate() | ios::failbit);
1491.248 +
1491.249 +    __os.width(0);
1491.250 +  }
1491.251 +  else
1491.252 +    __os.clear(__os.rdstate() | ios::badbit);
1491.253 +
1491.254 +  return __os;
1491.255 +}
1491.256 +
1491.257 +template <class _CharT, class _Traits, class _Alloc>
1491.258 +_ISTREAM_DLL& _STLP_CALL operator>>(_ISTREAM_DLL& __is, basic_string<_CharT,_Traits,_Alloc>& __s)
1491.259 +{
1491.260 +  _STLP_USING_IO
1491.261 +  if (!__is)
1491.262 +    return __is;
1491.263 +
1491.264 +  streambuf* __buf = __is.rdbuf();
1491.265 +  if (__buf) {
1491.266 +
1491.267 +    if (__is.flags() & ios::skipws) {
1491.268 +      //      _CharT __c;
1491.269 +      int __c;
1491.270 +      do {
1491.271 +        __c = __buf->sbumpc();
1491.272 +      }
1491.273 +      while (__c != EOF && isspace((unsigned char)__c));
1491.274 +
1491.275 +      if (__c == EOF) {
1491.276 +        __is.clear(__is.rdstate() | ios::eofbit | ios::failbit);
1491.277 +      }
1491.278 +      else {
1491.279 +	if (__buf->sputbackc(__c) == EOF)
1491.280 +	  __is.clear(__is.rdstate() | ios::failbit);
1491.281 +      }
1491.282 +    }
1491.283 +
1491.284 +    // If we arrive at end of file (or fail for some other reason) while
1491.285 +    // still discarding whitespace, then we don't try to read the string.
1491.286 +    if (__is) {
1491.287 +      __s.clear();
1491.288 +
1491.289 +      size_t __n = __is.width();
1491.290 +      if (__n == 0)
1491.291 +        __n = __STATIC_CAST(size_t,-1);
1491.292 +      else
1491.293 +        __s.reserve(__n);
1491.294 +
1491.295 +      while (__n-- > 0) {
1491.296 +        int __c1 = __buf->sbumpc();
1491.297 +        if (__c1 == EOF) {
1491.298 +          __is.clear(__is.rdstate() | ios::eofbit);
1491.299 +          break;
1491.300 +        }
1491.301 +        else {
1491.302 +          _CharT __c = _Traits::to_char_type(__c1);
1491.303 +
1491.304 +          if (isspace((unsigned char) __c)) {
1491.305 +            if (__buf->sputbackc(__c) == EOF)
1491.306 +              __is.clear(__is.rdstate() | ios::failbit);
1491.307 +            break;
1491.308 +          }
1491.309 +          else
1491.310 +            __s.push_back(__c);
1491.311 +        }
1491.312 +      }
1491.313 +    
1491.314 +      // If we have read no characters, then set failbit.
1491.315 +      if (__s.size() == 0)
1491.316 +        __is.clear(__is.rdstate() | ios::failbit);
1491.317 +    }
1491.318 +
1491.319 +    __is.width(0);
1491.320 +  }
1491.321 +  else                          // We have no streambuf.
1491.322 +    __is.clear(__is.rdstate() | ios::badbit);
1491.323 +
1491.324 +  return __is;
1491.325 +}
1491.326 +
1491.327 +template <class _CharT, class _Traits, class _Alloc>    
1491.328 +_ISTREAM_DLL& _STLP_CALL getline(_ISTREAM_DLL& __is,
1491.329 +                 basic_string<_CharT,_Traits,_Alloc>& __s,
1491.330 +                 _CharT __delim)
1491.331 +{
1491.332 +  _STLP_USING_IO
1491.333 +  streambuf* __buf = __is.rdbuf();
1491.334 +  if (__buf) {
1491.335 +    size_t __nread = 0;
1491.336 +    if (__is) {
1491.337 +      __s.clear();
1491.338 +
1491.339 +      while (__nread < __s.max_size()) {
1491.340 +        int __c1 = __buf->sbumpc();
1491.341 +        if (__c1 == EOF) {
1491.342 +          __is.clear(__is.rdstate() | ios::eofbit);
1491.343 +          break;
1491.344 +        }
1491.345 +        else {
1491.346 +          ++__nread;
1491.347 +          _CharT __c = _Traits::to_char_type(__c1);
1491.348 +          if (!_Traits::eq(__c, __delim)) 
1491.349 +            __s.push_back(__c);
1491.350 +          else
1491.351 +            break;              // Character is extracted but not appended.
1491.352 +        }
1491.353 +      }
1491.354 +    }
1491.355 +
1491.356 +    if (__nread == 0 || __nread >= __s.max_size())
1491.357 +      __is.clear(__is.rdstate() | ios::failbit);
1491.358 +  }
1491.359 +  else
1491.360 +    __is.clear(__is.rdstate() | ios::badbit);
1491.361 +
1491.362 +  return __is;
1491.363 +}
1491.364 +
1491.365 +# endif /* _STLP_NEW_IOSTREAMS */
1491.366 +
1491.367 +_STLP_END_NAMESPACE
1491.368 +
1491.369 +// # undef _STLP_USING_IO
1491.370 +# undef basic_string
1491.371 +
1491.372 +#endif
  1492.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1492.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_io.h	Wed Mar 31 12:27:01 2010 +0100
  1492.3 @@ -0,0 +1,122 @@
  1492.4 +/*
  1492.5 + * Copyright (c) 1997-1999
  1492.6 + * Silicon Graphics Computer Systems, Inc.
  1492.7 + *
  1492.8 + * Copyright (c) 1999 
  1492.9 + * Boris Fomitchev
 1492.10 + *
 1492.11 + * This material is provided "as is", with absolutely no warranty expressed
 1492.12 + * or implied. Any use is at your own risk.
 1492.13 + *
 1492.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1492.15 + * without fee, provided the above notices are retained on all copies.
 1492.16 + * Permission to modify the code and to distribute modified code is granted,
 1492.17 + * provided the above notices are retained, and a notice that the code was
 1492.18 + * modified is included with the above copyright notice.
 1492.19 + *
 1492.20 + */
 1492.21 +
 1492.22 +#ifndef _STLP_STRING_IO_H
 1492.23 +#define _STLP_STRING_IO_H
 1492.24 +
 1492.25 +// this is for link-time instantiation
 1492.26 +#if !defined  ( _STLP_STRING )
 1492.27 +# include <string>
 1492.28 +# endif
 1492.29 +
 1492.30 +//#ifndef _STLP_LOCALE
 1492.31 +//# include <locale>
 1492.32 +//#endif
 1492.33 +
 1492.34 +# ifdef _STLP_DEBUG
 1492.35 +#  define basic_string _Nondebug_string
 1492.36 +# endif
 1492.37 +
 1492.38 +// I/O.  
 1492.39 +_STLP_BEGIN_NAMESPACE
 1492.40 +
 1492.41 +#if defined (_STLP_USE_NEW_IOSTREAMS)
 1492.42 +
 1492.43 +template <class _CharT, class _Traits, class _Alloc>
 1492.44 +basic_ostream<_CharT, _Traits>& _STLP_CALL
 1492.45 +operator<<(basic_ostream<_CharT, _Traits>& __os, 
 1492.46 +           const basic_string<_CharT,_Traits,_Alloc>& __s);
 1492.47 +
 1492.48 +template <class _CharT, class _Traits, class _Alloc>
 1492.49 +basic_istream<_CharT, _Traits>&  _STLP_CALL
 1492.50 +operator>>(basic_istream<_CharT, _Traits>& __is,
 1492.51 +           basic_string<_CharT,_Traits,_Alloc>& __s);
 1492.52 +
 1492.53 +template <class _CharT, class _Traits, class _Alloc>    
 1492.54 +basic_istream<_CharT, _Traits>& _STLP_CALL 
 1492.55 +getline(basic_istream<_CharT, _Traits>& __is,
 1492.56 +        basic_string<_CharT,_Traits,_Alloc>& __s,
 1492.57 +        _CharT __delim);
 1492.58 +
 1492.59 +# if !(defined (__BORLANDC__) && ! defined (_STLP_USE_OWN_NAMESPACE))
 1492.60 +
 1492.61 +template <class _CharT, class _Traits, class _Alloc>    
 1492.62 +inline basic_istream<_CharT, _Traits>& _STLP_CALL 
 1492.63 +getline(basic_istream<_CharT, _Traits>& __is,
 1492.64 +        basic_string<_CharT,_Traits,_Alloc>& __s)
 1492.65 +{
 1492.66 +  return getline(__is, __s, __is.widen('\n'));
 1492.67 +}
 1492.68 +# endif
 1492.69 +
 1492.70 +template <class _CharT, class _Traits>
 1492.71 +bool _STLP_CALL
 1492.72 +__stlp_string_fill(basic_ostream<_CharT, _Traits>& __os,
 1492.73 +                  basic_streambuf<_CharT, _Traits>* __buf,
 1492.74 +                  size_t __n);
 1492.75 +#elif ! defined ( _STLP_USE_NO_IOSTREAMS )
 1492.76 +
 1492.77 +// (reg) For Watcom IO, this tells if ostream class is in .exe or in .dll
 1492.78 +# ifdef _WPRTLINK
 1492.79 +typedef _WPRTLINK ostream _OSTREAM_DLL;
 1492.80 +typedef _WPRTLINK istream _ISTREAM_DLL;
 1492.81 +#else
 1492.82 +typedef           ostream _OSTREAM_DLL;
 1492.83 +typedef           istream _ISTREAM_DLL;
 1492.84 +#endif
 1492.85 +
 1492.86 +template <class _CharT, class _Traits, class _Alloc>
 1492.87 +_OSTREAM_DLL& _STLP_CALL operator<<(_OSTREAM_DLL& __os, 
 1492.88 +                    const basic_string<_CharT,_Traits,_Alloc>& __s);
 1492.89 +
 1492.90 +template <class _CharT, class _Traits, class _Alloc>
 1492.91 +_ISTREAM_DLL& _STLP_CALL operator>>(_ISTREAM_DLL& __is, basic_string<_CharT,_Traits,_Alloc>& __s);
 1492.92 +
 1492.93 +template <class _CharT, class _Traits, class _Alloc>    
 1492.94 +_ISTREAM_DLL& _STLP_CALL getline(_ISTREAM_DLL& __is,
 1492.95 +                 basic_string<_CharT,_Traits,_Alloc>& __s,
 1492.96 +                 _CharT __delim);
 1492.97 +
 1492.98 +
 1492.99 +template <class _CharT, class _Traits, class _Alloc>    
1492.100 +inline _ISTREAM_DLL& _STLP_CALL 
1492.101 +getline(_ISTREAM_DLL& __is, basic_string<_CharT,_Traits,_Alloc>& __s)
1492.102 +{
1492.103 +  return getline(__is, __s, '\n');
1492.104 +}
1492.105 +
1492.106 +inline void  _STLP_CALL
1492.107 +__stlp_string_fill(_OSTREAM_DLL& __os, streambuf* __buf, size_t __n)
1492.108 +{
1492.109 +  char __f = __os.fill();
1492.110 +  size_t __i;
1492.111 +
1492.112 +  for (__i = 0; __i < __n; ++__i) __buf->sputc(__f);
1492.113 +}
1492.114 +
1492.115 +#endif /* _STLP_USE_NEW_IOSTREAMS */
1492.116 +
1492.117 +_STLP_END_NAMESPACE
1492.118 +
1492.119 +# undef basic_string
1492.120 +
1492.121 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1492.122 +#  include <stl/_string_io.c>
1492.123 +# endif
1492.124 +
1492.125 +#endif /* _STLP_STRING_IO_H */
  1493.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1493.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_npos.h	Wed Mar 31 12:27:01 2010 +0100
  1493.3 @@ -0,0 +1,27 @@
  1493.4 +/*
  1493.5 + * Copyright (c) 2005
  1493.6 + * Francois Dumont
  1493.7 + *
  1493.8 + * This material is provided "as is", with absolutely no warranty expressed
  1493.9 + * or implied. Any use is at your own risk.
 1493.10 + *
 1493.11 + * Permission to use or copy this software for any purpose is hereby granted
 1493.12 + * without fee, provided the above notices are retained on all copies.
 1493.13 + * Permission to modify the code and to distribute modified code is granted,
 1493.14 + * provided the above notices are retained, and a notice that the code was
 1493.15 + * modified is included with the above copyright notice.
 1493.16 + */
 1493.17 +
 1493.18 +/* This header contains npos definition used in basic_string and rope
 1493.19 + * implementation. It do not have to be guarded as files including it
 1493.20 + * are already guarded and it has sometimes to be included several times.
 1493.21 + */
 1493.22 +
 1493.23 +#if defined (_STLP_STATIC_CONST_INIT_BUG)
 1493.24 +  enum { npos = -1 };
 1493.25 +#elif defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96)
 1493.26 +  // inline initializer conflicts with 'extern template'
 1493.27 +  static const size_t npos;
 1493.28 +#else
 1493.29 +  static const size_t npos = ~(size_t)0;
 1493.30 +#endif
  1494.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1494.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_string_operators.h	Wed Mar 31 12:27:01 2010 +0100
  1494.3 @@ -0,0 +1,602 @@
  1494.4 +/*
  1494.5 + * Copyright (c) 2003
  1494.6 + * Francois Dumont
  1494.7 + *
  1494.8 + * This material is provided "as is", with absolutely no warranty expressed
  1494.9 + * or implied. Any use is at your own risk.
 1494.10 + *
 1494.11 + * Permission to use or copy this software for any purpose is hereby granted
 1494.12 + * without fee, provided the above notices are retained on all copies.
 1494.13 + * Permission to modify the code and to distribute modified code is granted,
 1494.14 + * provided the above notices are retained, and a notice that the code was
 1494.15 + * modified is included with the above copyright notice.
 1494.16 + *
 1494.17 + */
 1494.18 +
 1494.19 +#ifndef _STLP_STRING_OPERATORS_H
 1494.20 +#define _STLP_STRING_OPERATORS_H
 1494.21 +
 1494.22 +_STLP_BEGIN_NAMESPACE
 1494.23 +
 1494.24 +#if !defined (_STLP_USE_TEMPLATE_EXPRESSION)
 1494.25 +
 1494.26 +#  if defined (__GNUC__) || defined (__MLCCPP__)
 1494.27 +#    define _STLP_INIT_AMBIGUITY 1
 1494.28 +#  endif
 1494.29 +
 1494.30 +template <class _CharT, class _Traits, class _Alloc>
 1494.31 +inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1494.32 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __s,
 1494.33 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
 1494.34 +  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1494.35 +  typedef typename _Str::_Reserve_t _Reserve_t;
 1494.36 +#  if defined (_STLP_INIT_AMBIGUITY)
 1494.37 +  // gcc counts this as a function
 1494.38 +  _Str __result  = _Str(_Reserve_t(), __s.size() + __y.size(), __s.get_allocator());
 1494.39 +#  else
 1494.40 +  _Str __result(_Reserve_t(), __s.size() + __y.size(), __s.get_allocator());
 1494.41 +#  endif
 1494.42 +  __result.append(__s);
 1494.43 +  __result.append(__y);
 1494.44 +  return __result;
 1494.45 +}
 1494.46 +
 1494.47 +template <class _CharT, class _Traits, class _Alloc>
 1494.48 +inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1494.49 +operator+(const _CharT* __s,
 1494.50 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
 1494.51 +  _STLP_FIX_LITERAL_BUG(__s)
 1494.52 +  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1494.53 +  typedef typename _Str::_Reserve_t _Reserve_t;
 1494.54 +  const size_t __n = _Traits::length(__s);
 1494.55 +#  if defined (_STLP_INIT_AMBIGUITY)
 1494.56 +  _Str __result = _Str(_Reserve_t(), __n + __y.size(), __y.get_allocator());
 1494.57 +#  else
 1494.58 +  _Str __result(_Reserve_t(), __n + __y.size(), __y.get_allocator());
 1494.59 +#  endif
 1494.60 +  __result.append(__s, __s + __n);
 1494.61 +  __result.append(__y);
 1494.62 +  return __result;
 1494.63 +}
 1494.64 +
 1494.65 +template <class _CharT, class _Traits, class _Alloc>
 1494.66 +inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1494.67 +operator+(_CharT __c,
 1494.68 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
 1494.69 +  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1494.70 +  typedef typename _Str::_Reserve_t _Reserve_t;
 1494.71 +#  if defined (_STLP_INIT_AMBIGUITY)
 1494.72 +  _Str __result = _Str(_Reserve_t(), 1 + __y.size(), __y.get_allocator());
 1494.73 +#  else
 1494.74 +  _Str __result(_Reserve_t(), 1 + __y.size(), __y.get_allocator());
 1494.75 +#  endif
 1494.76 +  __result.push_back(__c);
 1494.77 +  __result.append(__y);
 1494.78 +  return __result;
 1494.79 +}
 1494.80 +
 1494.81 +template <class _CharT, class _Traits, class _Alloc>
 1494.82 +inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1494.83 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __x,
 1494.84 +          const _CharT* __s) {
 1494.85 +  _STLP_FIX_LITERAL_BUG(__s)
 1494.86 +  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1494.87 +  typedef typename _Str::_Reserve_t _Reserve_t;
 1494.88 +  const size_t __n = _Traits::length(__s);
 1494.89 +#  if defined (_STLP_INIT_AMBIGUITY)
 1494.90 +  _Str __result = _Str(_Reserve_t(), __x.size() + __n, __x.get_allocator());
 1494.91 +#  else
 1494.92 +  _Str __result(_Reserve_t(), __x.size() + __n, __x.get_allocator());
 1494.93 +#  endif
 1494.94 +  __result.append(__x);
 1494.95 +  __result.append(__s, __s + __n);
 1494.96 +  return __result;
 1494.97 +}
 1494.98 +
 1494.99 +template <class _CharT, class _Traits, class _Alloc>
1494.100 +inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
1494.101 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.102 +          const _CharT __c) {
1494.103 +  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
1494.104 +  typedef typename _Str::_Reserve_t _Reserve_t;
1494.105 +#  if defined (_STLP_INIT_AMBIGUITY)
1494.106 +  _Str __result = _Str(_Reserve_t(), __x.size() + 1, __x.get_allocator());
1494.107 +#  else
1494.108 +  _Str __result(_Reserve_t(), __x.size() + 1, __x.get_allocator());
1494.109 +#  endif
1494.110 +  __result.append(__x);
1494.111 +  __result.push_back(__c);
1494.112 +  return __result;
1494.113 +}
1494.114 +
1494.115 +#  undef _STLP_INIT_AMBIGUITY
1494.116 +
1494.117 +#else /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.118 +
1494.119 +// addition with basic_string
1494.120 +template <class _CharT, class _Traits, class _Alloc>
1494.121 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.122 +                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.123 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.124 +                                                   _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.125 +                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.126 +                                                   _STLP_PRIV __on_right>,
1494.127 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.128 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __lhs,
1494.129 +          const basic_string<_CharT,_Traits,_Alloc>& __rhs) {
1494.130 +  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.131 +                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.132 +                                                         _STLP_PRIV __on_right> __root_type;
1494.133 +  __root_type __root(__rhs, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__lhs.get_allocator()));
1494.134 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.135 +                                                        __root_type,
1494.136 +                                                        _STLP_PRIV __on_right>(__lhs, __root);
1494.137 +}
1494.138 +
1494.139 +template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1494.140 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.141 +                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.142 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.143 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.144 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __lhs,
1494.145 +          const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __rhs) {
1494.146 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.147 +                                                        _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.148 +                                                        _STLP_PRIV __on_right>(__lhs, __rhs);
1494.149 +}
1494.150 +
1494.151 +template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1494.152 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.153 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.154 +                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.155 +                             _STLP_PRIV __on_left> _STLP_CALL
1494.156 +operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __lhs,
1494.157 +          const basic_string<_CharT,_Traits,_Alloc>& __rhs) {
1494.158 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.159 +                                                        _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.160 +                                                        _STLP_PRIV __on_left>(__lhs, __rhs);
1494.161 +}
1494.162 +
1494.163 +// addition with C string
1494.164 +template <class _CharT, class _Traits, class _Alloc>
1494.165 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.166 +                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.167 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.168 +                                                   _STLP_PRIV __cstr_wrapper<_CharT>,
1494.169 +                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.170 +                                                   _STLP_PRIV __on_right>,
1494.171 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.172 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.173 +          const _CharT* __s) {
1494.174 +  const size_t __n = _Traits::length(__s);
1494.175 +  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>,
1494.176 +                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.177 +                                                         _STLP_PRIV __on_right> __root_type;
1494.178 +  __root_type __root(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator()));
1494.179 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.180 +                                                        __root_type, _STLP_PRIV __on_right>(__x, __root);
1494.181 +}
1494.182 +
1494.183 +template <class _CharT, class _Traits, class _Alloc>
1494.184 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.185 +                             _STLP_PRIV __cstr_wrapper<_CharT>,
1494.186 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.187 +                                                   _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.188 +                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.189 +                                                   _STLP_PRIV __on_right>,
1494.190 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.191 +operator+(const _CharT* __s,
1494.192 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.193 +  const size_t __n = _Traits::length(__s);
1494.194 +  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.195 +                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.196 +                                                         _STLP_PRIV __on_right> __root_type;
1494.197 +  __root_type __root(__y, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__y.get_allocator()));
1494.198 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>,
1494.199 +                                                        __root_type,
1494.200 +                                                        _STLP_PRIV __on_right>(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), __root);
1494.201 +}
1494.202 +
1494.203 +template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1494.204 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.205 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.206 +                             _STLP_PRIV __cstr_wrapper<_CharT>,
1494.207 +                             _STLP_PRIV __on_left> _STLP_CALL
1494.208 +operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x,
1494.209 +          const _CharT* __s) {
1494.210 +  const size_t __n = _Traits::length(__s);
1494.211 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.212 +                                                        _STLP_PRIV __cstr_wrapper<_CharT>,
1494.213 +                                                        _STLP_PRIV __on_left>(__x, _STLP_PRIV __cstr_wrapper<_CharT>(__s, __n));
1494.214 +}
1494.215 +
1494.216 +template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1494.217 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.218 +                             _STLP_PRIV __cstr_wrapper<_CharT>,
1494.219 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.220 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.221 +operator+(const _CharT* __s,
1494.222 +          const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __y) {
1494.223 +  const size_t __n = _Traits::length(__s);
1494.224 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>,
1494.225 +                                                        _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.226 +                                                        _STLP_PRIV __on_right>(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), __y);
1494.227 +}
1494.228 +
1494.229 +// addition with char
1494.230 +template <class _CharT, class _Traits, class _Alloc>
1494.231 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.232 +                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.233 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.234 +                                                   _STLP_PRIV __char_wrapper<_CharT>,
1494.235 +                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.236 +                                                   _STLP_PRIV __on_right>,
1494.237 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.238 +operator+(const basic_string<_CharT,_Traits,_Alloc>& __x, const _CharT __c) {
1494.239 +  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1494.240 +                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.241 +                                                         _STLP_PRIV __on_right> __root_type;
1494.242 +  __root_type __root(__c, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator()));
1494.243 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.244 +                                                        __root_type, _STLP_PRIV __on_right>(__x, __root);
1494.245 +}
1494.246 +
1494.247 +template <class _CharT, class _Traits, class _Alloc>
1494.248 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.249 +                             _STLP_PRIV __char_wrapper<_CharT>,
1494.250 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.251 +                                                   _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.252 +                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.253 +                                                   _STLP_PRIV __on_right>,
1494.254 +                             _STLP_PRIV __on_right> _STLP_CALL
1494.255 +operator+(const _CharT __c, const basic_string<_CharT,_Traits,_Alloc>& __x) {
1494.256 +  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1494.257 +                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1494.258 +                                                         _STLP_PRIV __on_right> __root_type;
1494.259 +  __root_type __root(__x, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator()));
1494.260 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1494.261 +                                                        __root_type, _STLP_PRIV __on_right>(__c, __root);
1494.262 +}
1494.263 +
1494.264 +template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1494.265 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1494.266 +                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.267 +                             _STLP_PRIV __char_wrapper<_CharT>,
1494.268 +                             _STLP_PRIV __on_left> _STLP_CALL
1494.269 +operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x, const _CharT __c) {
1494.270 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.271 +                                                        _STLP_PRIV __char_wrapper<_CharT>, _STLP_PRIV __on_left>(__x, __c);
1494.272 +}
1494.273 +
1494.274 +template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1494.275 +inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1494.276 +                                                      _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.277 +                                                      _STLP_PRIV __on_right> _STLP_CALL
1494.278 +operator+(const _CharT __c, const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x) {
1494.279 +  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1494.280 +                                                        _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1494.281 +                                                        _STLP_PRIV __on_right>(__c, __x);
1494.282 +}
1494.283 +
1494.284 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.285 +
1494.286 +// Operator== and operator!=
1494.287 +
1494.288 +template <class _CharT, class _Traits, class _Alloc>
1494.289 +inline bool _STLP_CALL
1494.290 +operator==(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.291 +           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.292 +  return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0;
1494.293 +}
1494.294 +
1494.295 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.296 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.297 +inline bool _STLP_CALL
1494.298 +operator==(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.299 +           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.300 +  return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0;
1494.301 +}
1494.302 +
1494.303 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.304 +inline bool _STLP_CALL
1494.305 +operator==(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.306 +           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.307 +  return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0;
1494.308 +}
1494.309 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.310 +
1494.311 +
1494.312 +template <class _CharT, class _Traits, class _Alloc>
1494.313 +inline bool _STLP_CALL
1494.314 +operator==(const _CharT* __s,
1494.315 +           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.316 +  _STLP_FIX_LITERAL_BUG(__s)
1494.317 +  size_t __n = _Traits::length(__s);
1494.318 +  return __n == __y.size() && _Traits::compare(__s, __y.data(), __n) == 0;
1494.319 +}
1494.320 +
1494.321 +template <class _CharT, class _Traits, class _Alloc>
1494.322 +inline bool _STLP_CALL
1494.323 +operator==(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.324 +           const _CharT* __s) {
1494.325 +  _STLP_FIX_LITERAL_BUG(__s)
1494.326 +  size_t __n = _Traits::length(__s);
1494.327 +  return __x.size() == __n && _Traits::compare(__x.data(), __s, __n) == 0;
1494.328 +}
1494.329 +
1494.330 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.331 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.332 +inline bool _STLP_CALL
1494.333 +operator==(const _CharT* __s,
1494.334 +           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.335 +  _STLP_FIX_LITERAL_BUG(__s)
1494.336 +  size_t __n = _Traits::length(__s);
1494.337 +  return __n == __y.size() && _Traits::compare(__s, __y.data(), __n) == 0;
1494.338 +}
1494.339 +
1494.340 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.341 +inline bool _STLP_CALL
1494.342 +operator==(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.343 +           const _CharT* __s) {
1494.344 +  _STLP_FIX_LITERAL_BUG(__s)
1494.345 +  size_t __n = _Traits::length(__s);
1494.346 +  return __x.size() == __n && _Traits::compare(__x.data(), __s, __n) == 0;
1494.347 +}
1494.348 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.349 +
1494.350 +// Operator< (and also >, <=, and >=).
1494.351 +
1494.352 +template <class _CharT, class _Traits, class _Alloc>
1494.353 +inline bool _STLP_CALL
1494.354 +operator<(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.355 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.356 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1494.357 +                                                          __y.begin(), __y.end()) < 0;
1494.358 +}
1494.359 +
1494.360 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.361 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.362 +inline bool _STLP_CALL
1494.363 +operator<(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.364 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.365 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1494.366 +                                                          __y.begin(), __y.end()) < 0;
1494.367 +}
1494.368 +
1494.369 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.370 +inline bool _STLP_CALL
1494.371 +operator<(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.372 +          const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.373 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1494.374 +                                                          __y.begin(), __y.end()) < 0;
1494.375 +}
1494.376 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.377 +
1494.378 +template <class _CharT, class _Traits, class _Alloc>
1494.379 +inline bool _STLP_CALL
1494.380 +operator<(const _CharT* __s,
1494.381 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.382 +  _STLP_FIX_LITERAL_BUG(__s)
1494.383 +  size_t __n = _Traits::length(__s);
1494.384 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__s, __s + __n,
1494.385 +                                                          __y.begin(), __y.end()) < 0;
1494.386 +}
1494.387 +
1494.388 +template <class _CharT, class _Traits, class _Alloc>
1494.389 +inline bool _STLP_CALL
1494.390 +operator<(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.391 +          const _CharT* __s) {
1494.392 +  _STLP_FIX_LITERAL_BUG(__s)
1494.393 +  size_t __n = _Traits::length(__s);
1494.394 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1494.395 +                                                          __s, __s + __n) < 0;
1494.396 +}
1494.397 +
1494.398 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.399 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.400 +inline bool _STLP_CALL
1494.401 +operator<(const _CharT* __s,
1494.402 +          const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.403 +  _STLP_FIX_LITERAL_BUG(__s)
1494.404 +  size_t __n = _Traits::length(__s);
1494.405 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__s, __s + __n,
1494.406 +                                                          __y.begin(), __y.end()) < 0;
1494.407 +}
1494.408 +
1494.409 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.410 +inline bool _STLP_CALL
1494.411 +operator<(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.412 +          const _CharT* __s) {
1494.413 +  _STLP_FIX_LITERAL_BUG(__s)
1494.414 +  size_t __n = _Traits::length(__s);
1494.415 +  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1494.416 +                                                          __s, __s + __n) < 0;
1494.417 +}
1494.418 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.419 +
1494.420 +#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE)
1494.421 +
1494.422 +/* Only defined if _STLP_USE_SEPARATE_RELOPS_NAMESPACE is defined otherwise
1494.423 + * it might introduce ambiguity with pure template relational operators
1494.424 + * from rel_ops namespace.
1494.425 + */
1494.426 +template <class _CharT, class _Traits, class _Alloc>
1494.427 +inline bool _STLP_CALL
1494.428 +operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.429 +           const basic_string<_CharT,_Traits,_Alloc>& __y)
1494.430 +{ return !(__x == __y); }
1494.431 +
1494.432 +template <class _CharT, class _Traits, class _Alloc>
1494.433 +inline bool _STLP_CALL
1494.434 +operator>(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.435 +          const basic_string<_CharT,_Traits,_Alloc>& __y)
1494.436 +{ return __y < __x; }
1494.437 +
1494.438 +template <class _CharT, class _Traits, class _Alloc>
1494.439 +inline bool _STLP_CALL
1494.440 +operator<=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.441 +           const basic_string<_CharT,_Traits,_Alloc>& __y)
1494.442 +{ return !(__y < __x); }
1494.443 +
1494.444 +template <class _CharT, class _Traits, class _Alloc>
1494.445 +inline bool _STLP_CALL
1494.446 +operator>=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.447 +           const basic_string<_CharT,_Traits,_Alloc>& __y)
1494.448 +{ return !(__x < __y); }
1494.449 +
1494.450 +#  if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.451 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.452 +inline bool _STLP_CALL
1494.453 +operator!=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.454 +           const basic_string<_CharT,_Traits,_Alloc>& __y)
1494.455 +{ return !(__x==__y); }
1494.456 +
1494.457 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.458 +inline bool _STLP_CALL
1494.459 +operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.460 +           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y)
1494.461 +{ return !(__x==__y); }
1494.462 +#  endif
1494.463 +
1494.464 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1494.465 +
1494.466 +template <class _CharT, class _Traits, class _Alloc>
1494.467 +inline bool _STLP_CALL
1494.468 +operator!=(const _CharT* __s,
1494.469 +           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.470 +  _STLP_FIX_LITERAL_BUG(__s)
1494.471 +  return !(__s == __y);
1494.472 +}
1494.473 +
1494.474 +template <class _CharT, class _Traits, class _Alloc>
1494.475 +inline bool _STLP_CALL
1494.476 +operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.477 +           const _CharT* __s) {
1494.478 +  _STLP_FIX_LITERAL_BUG(__s)
1494.479 +  return !(__x == __s);
1494.480 +}
1494.481 +
1494.482 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.483 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.484 +inline bool _STLP_CALL
1494.485 +operator!=(const _CharT* __s,
1494.486 +           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.487 +  _STLP_FIX_LITERAL_BUG(__s)
1494.488 +  return !(__s == __y);
1494.489 +}
1494.490 +
1494.491 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.492 +inline bool _STLP_CALL
1494.493 +operator!=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.494 +           const _CharT* __s) {
1494.495 +  _STLP_FIX_LITERAL_BUG(__s)
1494.496 +  return !(__x == __s);
1494.497 +}
1494.498 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.499 +
1494.500 +template <class _CharT, class _Traits, class _Alloc>
1494.501 +inline bool _STLP_CALL
1494.502 +operator>(const _CharT* __s,
1494.503 +          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.504 +  _STLP_FIX_LITERAL_BUG(__s)
1494.505 +  return __y < __s;
1494.506 +}
1494.507 +
1494.508 +template <class _CharT, class _Traits, class _Alloc>
1494.509 +inline bool _STLP_CALL
1494.510 +operator>(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.511 +          const _CharT* __s) {
1494.512 +  _STLP_FIX_LITERAL_BUG(__s)
1494.513 +  return __s < __x;
1494.514 +}
1494.515 +
1494.516 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.517 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.518 +inline bool _STLP_CALL
1494.519 +operator>(const _CharT* __s,
1494.520 +          const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.521 +  _STLP_FIX_LITERAL_BUG(__s)
1494.522 +  return __y < __s;
1494.523 +}
1494.524 +
1494.525 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.526 +inline bool _STLP_CALL
1494.527 +operator>(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.528 +          const _CharT* __s) {
1494.529 +  _STLP_FIX_LITERAL_BUG(__s)
1494.530 +  return __s < __x;
1494.531 +}
1494.532 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.533 +
1494.534 +template <class _CharT, class _Traits, class _Alloc>
1494.535 +inline bool _STLP_CALL
1494.536 +operator<=(const _CharT* __s,
1494.537 +           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.538 +  _STLP_FIX_LITERAL_BUG(__s)
1494.539 +  return !(__y < __s);
1494.540 +}
1494.541 +
1494.542 +template <class _CharT, class _Traits, class _Alloc>
1494.543 +inline bool _STLP_CALL
1494.544 +operator<=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.545 +           const _CharT* __s) {
1494.546 +  _STLP_FIX_LITERAL_BUG(__s)
1494.547 +  return !(__s < __x);
1494.548 +}
1494.549 +
1494.550 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.551 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.552 +inline bool _STLP_CALL
1494.553 +operator<=(const _CharT* __s,
1494.554 +           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.555 +  _STLP_FIX_LITERAL_BUG(__s)
1494.556 +  return !(__y < __s);
1494.557 +}
1494.558 +
1494.559 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.560 +inline bool _STLP_CALL
1494.561 +operator<=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.562 +           const _CharT* __s) {
1494.563 +  _STLP_FIX_LITERAL_BUG(__s)
1494.564 +  return !(__s < __x);
1494.565 +}
1494.566 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.567 +
1494.568 +template <class _CharT, class _Traits, class _Alloc>
1494.569 +inline bool _STLP_CALL
1494.570 +operator>=(const _CharT* __s,
1494.571 +           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1494.572 +  _STLP_FIX_LITERAL_BUG(__s)
1494.573 +  return !(__s < __y);
1494.574 +}
1494.575 +
1494.576 +template <class _CharT, class _Traits, class _Alloc>
1494.577 +inline bool _STLP_CALL
1494.578 +operator>=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1494.579 +           const _CharT* __s) {
1494.580 +  _STLP_FIX_LITERAL_BUG(__s)
1494.581 +  return !(__x < __s);
1494.582 +}
1494.583 +
1494.584 +#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1494.585 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.586 +inline bool _STLP_CALL
1494.587 +operator>=(const _CharT* __s,
1494.588 +           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1494.589 +  _STLP_FIX_LITERAL_BUG(__s)
1494.590 +  return !(__s < __y);
1494.591 +}
1494.592 +
1494.593 +template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1494.594 +inline bool _STLP_CALL
1494.595 +operator>=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1494.596 +           const _CharT* __s) {
1494.597 +  _STLP_FIX_LITERAL_BUG(__s)
1494.598 +  return !(__x < __s);
1494.599 +}
1494.600 +#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1494.601 +
1494.602 +_STLP_END_NAMESPACE
1494.603 +
1494.604 +#endif /* _STLP_STRING_OPERATORS_H */
1494.605 +
  1495.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1495.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_strstream.h	Wed Mar 31 12:27:01 2010 +0100
  1495.3 @@ -0,0 +1,213 @@
  1495.4 +/*
  1495.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1495.6 +
  1495.7 +* Redistribution and use in source and binary forms, with or without 
  1495.8 +* modification, are permitted provided that the following conditions are met:
  1495.9 +
 1495.10 +* Redistributions of source code must retain the above copyright notice, this 
 1495.11 +* list of conditions and the following disclaimer.
 1495.12 +* Redistributions in binary form must reproduce the above copyright notice, 
 1495.13 +* this list of conditions and the following disclaimer in the documentation 
 1495.14 +* and/or other materials provided with the distribution.
 1495.15 +* Neither the name of Nokia Corporation nor the names of its contributors 
 1495.16 +* may be used to endorse or promote products derived from this software 
 1495.17 +* without specific prior written permission.
 1495.18 +
 1495.19 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1495.20 +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1495.21 +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1495.22 +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1495.23 +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1495.24 +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1495.25 +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1495.26 +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1495.27 +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1495.28 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1495.29 +*
 1495.30 +* Description:
 1495.31 +*
 1495.32 +*/
 1495.33 +
 1495.34 +#ifndef _STLP_INTERNAL_STREAMBUF
 1495.35 +#include <stl/_streambuf.h>
 1495.36 +#endif
 1495.37 +#ifndef _STLP_ISTREAM
 1495.38 +#include <istream>              // Includes <ostream>, <ios>, <iosfwd>
 1495.39 +#endif
 1495.40 +#ifndef _STLP_STRING_H
 1495.41 +#include <stl/_string.h>
 1495.42 +#endif
 1495.43 +
 1495.44 +_STLP_BEGIN_NAMESPACE
 1495.45 +
 1495.46 +#ifndef _STLP_USE_NAMESPACES
 1495.47 +# define strstream _STLP_strstream 
 1495.48 +# define ostrstream _STLP_ostrstream
 1495.49 +# define istrstream _STLP_istrstream
 1495.50 +# define strstreambuf _STLP_strstreambuf
 1495.51 +#endif
 1495.52 +
 1495.53 +//----------------------------------------------------------------------
 1495.54 +// Class strstreambuf, a streambuf class that manages an array of char.
 1495.55 +// Note that this class is not a template.
 1495.56 +#ifdef __SYMBIAN32__
 1495.57 +class strstreambuf : public basic_streambuf<char, char_traits<char> > 
 1495.58 +#else
 1495.59 +class _STLP_CLASS_DECLSPEC strstreambuf : public basic_streambuf<char, char_traits<char> >
 1495.60 +#endif
 1495.61 +{
 1495.62 +public:                         // Types.
 1495.63 +  typedef char_traits<char>              _Traits;
 1495.64 +  typedef basic_streambuf<char, char_traits<char> > _Base;
 1495.65 +  typedef void* (*__alloc_fn)(size_t);
 1495.66 +  typedef void (*__free_fn)(void*);
 1495.67 +public:                         // Constructor, destructor
 1495.68 +
 1495.69 +  explicit strstreambuf(streamsize _Initial_capacity = 0);
 1495.70 +
 1495.71 +  _STLP_DECLSPEC strstreambuf(__alloc_fn, __free_fn);
 1495.72 +
 1495.73 +  _STLP_DECLSPEC strstreambuf(char* __get, streamsize __n, char* __put = 0);
 1495.74 +  _STLP_DECLSPEC strstreambuf(signed char* __get, streamsize __n, signed char* __put = 0);
 1495.75 +  _STLP_DECLSPEC strstreambuf(unsigned char* __get, streamsize __n, unsigned char* __put=0);
 1495.76 +
 1495.77 +  _STLP_DECLSPEC strstreambuf(const char* __get, streamsize __n);
 1495.78 +  _STLP_DECLSPEC strstreambuf(const signed char* __get, streamsize __n);
 1495.79 +  _STLP_DECLSPEC strstreambuf(const unsigned char* __get, streamsize __n);
 1495.80 +
 1495.81 +  virtual ~strstreambuf();
 1495.82 +
 1495.83 +public:                         // strstreambuf operations.
 1495.84 +  _STLP_DECLSPEC void freeze(bool = true);
 1495.85 +  _STLP_DECLSPEC char* str();
 1495.86 +  _STLP_DECLSPEC int pcount() const;
 1495.87 +
 1495.88 +protected:                      // Overridden virtual member functions.
 1495.89 +  virtual int_type overflow(int_type __c  = _Traits::eof());
 1495.90 +  virtual int_type pbackfail(int_type __c = _Traits::eof());
 1495.91 +  virtual int_type underflow();
 1495.92 +  virtual _Base* setbuf(char* __buf, streamsize __n);
 1495.93 +  virtual pos_type seekoff(off_type __off, ios_base::seekdir __dir,
 1495.94 +                           ios_base::openmode __mode 
 1495.95 +                                      = ios_base::in | ios_base::out);
 1495.96 +  virtual pos_type seekpos(pos_type __pos, ios_base::openmode __mode 
 1495.97 +                                      = ios_base::in | ios_base::out);
 1495.98 +
 1495.99 +private:                        // Helper functions.
1495.100 +  // Dynamic allocation, possibly using _M_alloc_fun and _M_free_fun.
1495.101 +  char* _M_alloc(size_t);
1495.102 +  inline void  _M_free(char*);
1495.103 +
1495.104 +  // Helper function used in constructors.
1495.105 +  void _M_setup(char* __get, char* __put, streamsize __n);
1495.106 +private:                        // Data members.
1495.107 +  __alloc_fn _M_alloc_fun;
1495.108 +  __free_fn  _M_free_fun;
1495.109 +  bool _M_dynamic  : 1;
1495.110 +  bool _M_frozen   : 1;
1495.111 +  bool _M_constant : 1;
1495.112 +#ifdef __SYMBIAN32__
1495.113 +  char* _pfrozenendsave;
1495.114 +  char* _pgetfrozenendsave;
1495.115 +#endif
1495.116 +};
1495.117 +
1495.118 +inline strstreambuf::~strstreambuf()
1495.119 +{
1495.120 +#ifdef __SYMBIAN32__
1495.121 +  if (_M_dynamic && !_M_frozen)
1495.122 +  {
1495.123 +  	if (_M_free_fun)
1495.124 +  		_M_free_fun(eback());
1495.125 +  	else
1495.126 +  		_M_free(eback());
1495.127 +  }
1495.128 +#else  
1495.129 +	if (_M_dynamic && !_M_frozen)
1495.130 +        _M_free(eback());
1495.131 +#endif	
1495.132 +}
1495.133 +
1495.134 +inline void strstreambuf::_M_free(char* p)
1495.135 +{
1495.136 +  if (p)
1495.137 +    if (_M_free_fun)
1495.138 +      _M_free_fun(p);
1495.139 +    else
1495.140 +      delete[] p;
1495.141 +}
1495.142 +
1495.143 +
1495.144 +//----------------------------------------------------------------------
1495.145 +// Class istrstream, an istream that manages a strstreambuf.
1495.146 +
1495.147 +#ifdef __SYMBIAN32__
1495.148 +NONSHARABLE_CLASS (istrstream) : public basic_istream<char, char_traits<char> >
1495.149 +#else
1495.150 +class _STLP_CLASS_DECLSPEC istrstream : public basic_istream<char, char_traits<char> >
1495.151 +#endif
1495.152 +{
1495.153 +public:
1495.154 +  _STLP_DECLSPEC explicit istrstream(char*);
1495.155 +  _STLP_DECLSPEC explicit istrstream(const char*);
1495.156 +  _STLP_DECLSPEC istrstream(char* , streamsize);
1495.157 +  _STLP_DECLSPEC istrstream(const char*, streamsize);
1495.158 +  virtual ~istrstream();
1495.159 +  
1495.160 +  _STLP_DECLSPEC strstreambuf* rdbuf() const;
1495.161 +  _STLP_DECLSPEC char* str();
1495.162 +
1495.163 +private:
1495.164 +  strstreambuf _M_buf;
1495.165 +};
1495.166 +
1495.167 +//----------------------------------------------------------------------
1495.168 +// Class ostrstream
1495.169 +#ifdef __SYMBIAN32__
1495.170 +NONSHARABLE_CLASS (ostrstream) : public basic_ostream<char, char_traits<char> >
1495.171 +#else
1495.172 +class _STLP_CLASS_DECLSPEC ostrstream : public basic_ostream<char, char_traits<char> >
1495.173 +#endif
1495.174 +{
1495.175 +public:
1495.176 +  _STLP_DECLSPEC ostrstream();
1495.177 +  _STLP_DECLSPEC ostrstream(char*, int, ios_base::openmode = ios_base::out);
1495.178 +  virtual ~ostrstream();
1495.179 +
1495.180 +  _STLP_DECLSPEC strstreambuf* rdbuf() const;
1495.181 +  _STLP_DECLSPEC void freeze(bool = true);
1495.182 +  _STLP_DECLSPEC char* str();
1495.183 +  _STLP_DECLSPEC int pcount() const;
1495.184 +
1495.185 +private:
1495.186 +  strstreambuf _M_buf;
1495.187 +};
1495.188 +
1495.189 +//----------------------------------------------------------------------
1495.190 +// Class strstream
1495.191 +#ifdef __SYMBIAN32__
1495.192 +NONSHARABLE_CLASS (strstream) : public basic_iostream<char, char_traits<char> >
1495.193 +#else
1495.194 +class _STLP_CLASS_DECLSPEC strstream : public basic_iostream<char, char_traits<char> >
1495.195 +#endif
1495.196 +{
1495.197 +public:
1495.198 +  typedef char                        char_type;
1495.199 +  typedef char_traits<char>::int_type int_type;
1495.200 +  typedef char_traits<char>::pos_type pos_type;
1495.201 +  typedef char_traits<char>::off_type off_type;
1495.202 +
1495.203 +  _STLP_DECLSPEC strstream();
1495.204 +  _STLP_DECLSPEC strstream(char*, int, ios_base::openmode = ios_base::in | ios_base::out);
1495.205 +  virtual ~strstream();
1495.206 +
1495.207 +  _STLP_DECLSPEC strstreambuf* rdbuf() const;
1495.208 +  _STLP_DECLSPEC void freeze(bool = true);
1495.209 +  _STLP_DECLSPEC int pcount() const;
1495.210 +  _STLP_DECLSPEC char* str();
1495.211 +
1495.212 +private:
1495.213 +  strstreambuf _M_buf;
1495.214 +};
1495.215 +
1495.216 +_STLP_END_NAMESPACE
  1496.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1496.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_tempbuf.c	Wed Mar 31 12:27:01 2010 +0100
  1496.3 @@ -0,0 +1,57 @@
  1496.4 +/*
  1496.5 + *
  1496.6 + *
  1496.7 + * Copyright (c) 1994
  1496.8 + * Hewlett-Packard Company
  1496.9 + *
 1496.10 + * Copyright (c) 1996,1997
 1496.11 + * Silicon Graphics Computer Systems, Inc.
 1496.12 + *
 1496.13 + * Copyright (c) 1997
 1496.14 + * Moscow Center for SPARC Technology
 1496.15 + *
 1496.16 + * Copyright (c) 1999 
 1496.17 + * Boris Fomitchev
 1496.18 + *
 1496.19 + * This material is provided "as is", with absolutely no warranty expressed
 1496.20 + * or implied. Any use is at your own risk.
 1496.21 + *
 1496.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1496.23 + * without fee, provided the above notices are retained on all copies.
 1496.24 + * Permission to modify the code and to distribute modified code is granted,
 1496.25 + * provided the above notices are retained, and a notice that the code was
 1496.26 + * modified is included with the above copyright notice.
 1496.27 + *
 1496.28 + */
 1496.29 +#ifndef _STLP_TEMPBUF_C
 1496.30 +#define _STLP_TEMPBUF_C
 1496.31 +
 1496.32 +#ifndef _STLP_INTERNAL_TEMPBUF_H
 1496.33 +# include <stl/_tempbuf.h>
 1496.34 +#endif
 1496.35 +
 1496.36 +_STLP_BEGIN_NAMESPACE
 1496.37 +
 1496.38 +template <class _Tp>
 1496.39 +pair<_Tp*, ptrdiff_t> _STLP_CALL 
 1496.40 +__get_temporary_buffer(ptrdiff_t __len, _Tp*)
 1496.41 +{
 1496.42 +  if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp)))
 1496.43 +    __len = INT_MAX / sizeof(_Tp);
 1496.44 +
 1496.45 +  while (__len > 0) {
 1496.46 +    _Tp* __tmp = (_Tp*) malloc((size_t)__len * sizeof(_Tp));
 1496.47 +    if (__tmp != 0)
 1496.48 +      return pair<_Tp*, ptrdiff_t>(__tmp, __len);
 1496.49 +    __len /= 2;
 1496.50 +  }
 1496.51 +
 1496.52 +  return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0);
 1496.53 +}
 1496.54 +_STLP_END_NAMESPACE
 1496.55 +
 1496.56 +#endif /*  _STLP_TEMPBUF_C */
 1496.57 +
 1496.58 +// Local Variables:
 1496.59 +// mode:C++
 1496.60 +// End:
  1497.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1497.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_tempbuf.h	Wed Mar 31 12:27:01 2010 +0100
  1497.3 @@ -0,0 +1,165 @@
  1497.4 +/*
  1497.5 + *
  1497.6 + * Copyright (c) 1994
  1497.7 + * Hewlett-Packard Company
  1497.8 + *
  1497.9 + * Copyright (c) 1996,1997
 1497.10 + * Silicon Graphics Computer Systems, Inc.
 1497.11 + *
 1497.12 + * Copyright (c) 1997
 1497.13 + * Moscow Center for SPARC Technology
 1497.14 + *
 1497.15 + * Copyright (c) 1999 
 1497.16 + * Boris Fomitchev
 1497.17 + *
 1497.18 + * This material is provided "as is", with absolutely no warranty expressed
 1497.19 + * or implied. Any use is at your own risk.
 1497.20 + *
 1497.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1497.22 + * without fee, provided the above notices are retained on all copies.
 1497.23 + * Permission to modify the code and to distribute modified code is granted,
 1497.24 + * provided the above notices are retained, and a notice that the code was
 1497.25 + * modified is included with the above copyright notice.
 1497.26 + *
 1497.27 + */
 1497.28 +
 1497.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1497.30 + *   You should not attempt to use it directly.
 1497.31 + */
 1497.32 +
 1497.33 +#ifndef _STLP_INTERNAL_TEMPBUF_H
 1497.34 +#define _STLP_INTERNAL_TEMPBUF_H
 1497.35 +
 1497.36 +# ifndef _STLP_CLIMITS
 1497.37 +#  include <climits>
 1497.38 +# endif
 1497.39 +# ifndef _STLP_CSTDLIB
 1497.40 +#  include <cstdlib>
 1497.41 +# endif
 1497.42 +# ifndef _STLP_INTERNAL_UNINITIALIZED_H
 1497.43 +#  include <stl/_uninitialized.h>
 1497.44 +# endif
 1497.45 +
 1497.46 +_STLP_BEGIN_NAMESPACE
 1497.47 +
 1497.48 +template <class _Tp>
 1497.49 +pair<_Tp*, ptrdiff_t>  _STLP_CALL
 1497.50 +__get_temporary_buffer(ptrdiff_t __len, _Tp*);
 1497.51 +
 1497.52 +#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
 1497.53 +
 1497.54 +template <class _Tp>
 1497.55 +inline pair<_Tp*, ptrdiff_t>  _STLP_CALL get_temporary_buffer(ptrdiff_t __len) {
 1497.56 +  return __get_temporary_buffer(__len, (_Tp*) 0);
 1497.57 +}
 1497.58 +
 1497.59 +# if ! defined(_STLP_NO_EXTENSIONS)
 1497.60 +// This overload is not required by the standard; it is an extension.
 1497.61 +// It is supported for backward compatibility with the HP STL, and
 1497.62 +// because not all compilers support the language feature (explicit
 1497.63 +// function template arguments) that is required for the standard
 1497.64 +// version of get_temporary_buffer.
 1497.65 +template <class _Tp>
 1497.66 +inline pair<_Tp*, ptrdiff_t>  _STLP_CALL
 1497.67 +get_temporary_buffer(ptrdiff_t __len, _Tp*) {
 1497.68 +  return __get_temporary_buffer(__len, (_Tp*) 0);
 1497.69 +}
 1497.70 +# endif
 1497.71 +#endif
 1497.72 +
 1497.73 +template <class _Tp>
 1497.74 +inline void  _STLP_CALL return_temporary_buffer(_Tp* __p) {
 1497.75 +// SunPro brain damage
 1497.76 +  free((char*)__p);
 1497.77 +}
 1497.78 +
 1497.79 +template <class _ForwardIterator, class _Tp>
 1497.80 +class _Temporary_buffer {
 1497.81 +private:
 1497.82 +  ptrdiff_t  _M_original_len;
 1497.83 +  ptrdiff_t  _M_len;
 1497.84 +  _Tp*       _M_buffer;
 1497.85 +
 1497.86 +  void _M_allocate_buffer() {
 1497.87 +    _M_original_len = _M_len;
 1497.88 +    _M_buffer = 0;
 1497.89 +
 1497.90 +    if (_M_len > (ptrdiff_t)(INT_MAX / sizeof(_Tp)))
 1497.91 +      _M_len = INT_MAX / sizeof(_Tp);
 1497.92 +
 1497.93 +    while (_M_len > 0) {
 1497.94 +      _M_buffer = (_Tp*) malloc(_M_len * sizeof(_Tp));
 1497.95 +      if (_M_buffer)
 1497.96 +        break;
 1497.97 +      _M_len /= 2;
 1497.98 +    }
 1497.99 +  }
1497.100 +
1497.101 +  void _M_initialize_buffer(const _Tp&, const __true_type&) {}
1497.102 +  void _M_initialize_buffer(const _Tp& val, const __false_type&) {
1497.103 +    uninitialized_fill_n(_M_buffer, _M_len, val);
1497.104 +  }
1497.105 +
1497.106 +public:
1497.107 +  ptrdiff_t size() const { return _M_len; }
1497.108 +  ptrdiff_t requested_size() const { return _M_original_len; }
1497.109 +  _Tp* begin() { return _M_buffer; }
1497.110 +  _Tp* end() { return _M_buffer + _M_len; }
1497.111 +
1497.112 +  _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) {
1497.113 +    // Workaround for a __type_traits bug in the pre-7.3 compiler.
1497.114 +#   if defined(__sgi) && !defined(__GNUC__) && _COMPILER_VERSION < 730
1497.115 +    typedef typename __type_traits<_Tp>::is_POD_type _Trivial;
1497.116 +#   else
1497.117 +     typedef typename __type_traits<_Tp>::has_trivial_default_constructor  _Trivial;
1497.118 +#   endif
1497.119 +    _STLP_TRY {
1497.120 +      _M_len = distance(__first, __last);
1497.121 +      _M_allocate_buffer();
1497.122 +      if (_M_len > 0)
1497.123 +        _M_initialize_buffer(*__first, _Trivial());
1497.124 +    }
1497.125 +    _STLP_UNWIND(free(_M_buffer); _M_buffer = 0; _M_len = 0);
1497.126 +  }
1497.127 + 
1497.128 +  ~_Temporary_buffer() {  
1497.129 +    _STLP_STD::_Destroy(_M_buffer, _M_buffer + _M_len);
1497.130 +    free(_M_buffer);
1497.131 +  }
1497.132 +
1497.133 +private:
1497.134 +  // Disable copy constructor and assignment operator.
1497.135 +  _Temporary_buffer(const _Temporary_buffer<_ForwardIterator, _Tp>&) {}
1497.136 +  void operator=(const _Temporary_buffer<_ForwardIterator, _Tp>&) {}
1497.137 +};
1497.138 +
1497.139 +# ifndef _STLP_NO_EXTENSIONS
1497.140 +
1497.141 +// Class temporary_buffer is not part of the standard.  It is an extension.
1497.142 +
1497.143 +template <class _ForwardIterator, 
1497.144 +          class _Tp 
1497.145 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1497.146 +                    = typename iterator_traits<_ForwardIterator>::value_type
1497.147 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1497.148 +         >
1497.149 +struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp>
1497.150 +{
1497.151 +  temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
1497.152 +    : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) {}
1497.153 +  ~temporary_buffer() {}
1497.154 +};
1497.155 +
1497.156 +# endif /* _STLP_NO_EXTENSIONS */
1497.157 +    
1497.158 +_STLP_END_NAMESPACE
1497.159 +
1497.160 +# ifndef _STLP_LINK_TIME_INSTANTIATION
1497.161 +#  include <stl/_tempbuf.c>
1497.162 +# endif
1497.163 +
1497.164 +#endif /* _STLP_INTERNAL_TEMPBUF_H */
1497.165 +
1497.166 +// Local Variables:
1497.167 +// mode:C++
1497.168 +// End:
  1498.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1498.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_threads.c	Wed Mar 31 12:27:01 2010 +0100
  1498.3 @@ -0,0 +1,172 @@
  1498.4 +/*
  1498.5 + *
  1498.6 + *
  1498.7 + * Copyright (c) 1994
  1498.8 + * Hewlett-Packard Company
  1498.9 + *
 1498.10 + * Copyright (c) 1996,1997
 1498.11 + * Silicon Graphics Computer Systems, Inc.
 1498.12 + *
 1498.13 + * Copyright (c) 1997
 1498.14 + * Moscow Center for SPARC Technology
 1498.15 + *
 1498.16 + * Copyright (c) 1999 
 1498.17 + * Boris Fomitchev
 1498.18 + *
 1498.19 + * This material is provided "as is", with absolutely no warranty expressed
 1498.20 + * or implied. Any use is at your own risk.
 1498.21 + *
 1498.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1498.23 + * without fee, provided the above notices are retained on all copies.
 1498.24 + * Permission to modify the code and to distribute modified code is granted,
 1498.25 + * provided the above notices are retained, and a notice that the code was
 1498.26 + * modified is included with the above copyright notice.
 1498.27 + *
 1498.28 + */
 1498.29 +#ifndef _STLP_THREADS_C
 1498.30 +#define _STLP_THREADS_C
 1498.31 +
 1498.32 +#ifndef _STLP_INTERNAL_THREADS_H
 1498.33 +# include <stl/_threads.h>
 1498.34 +#endif
 1498.35 +
 1498.36 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1498.37 +
 1498.38 +# if defined(_STLP_SGI_THREADS)
 1498.39 +#  include <time.h>
 1498.40 +# elif defined (_STLP_UNIX)
 1498.41 +#  include <ctime>
 1498.42 +# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
 1498.43 +using _STLP_VENDOR_CSTD::time_t;
 1498.44 +# endif
 1498.45 +#  include <sys/time.h>
 1498.46 +# endif
 1498.47 +
 1498.48 +_STLP_BEGIN_NAMESPACE
 1498.49 +
 1498.50 +# if (_STLP_STATIC_TEMPLATE_DATA > 0)
 1498.51 +
 1498.52 +#  ifdef _STLP_THREADS
 1498.53 +#  if !defined(_STLP_ATOMIC_EXCHANGE) && (defined(_STLP_PTHREADS) || defined(_STLP_UITHREADS) || defined(_STLP_OS2THREADS) || defined(_STLP_USE_PTHREAD_SPINLOCK))
 1498.54 +template<int __dummy>
 1498.55 +_STLP_STATIC_MUTEX
 1498.56 +_Swap_lock_struct<__dummy>::_S_swap_lock _STLP_MUTEX_INITIALIZER;
 1498.57 +#  endif
 1498.58 +#  endif //_STLP_THREADS
 1498.59 +
 1498.60 +#  ifndef _STLP_USE_PTHREAD_SPINLOCK
 1498.61 +template <int __inst>
 1498.62 +unsigned _STLP_mutex_spin<__inst>::__max = _STLP_mutex_spin<__inst>::__low_max;
 1498.63 +
 1498.64 +template <int __inst>
 1498.65 +unsigned _STLP_mutex_spin<__inst>::__last = 0;
 1498.66 +#  endif // _STLP_USE_PTHREAD_SPINLOCK
 1498.67 +
 1498.68 +# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1498.69 +
 1498.70 +#  if defined(_STLP_PTHREADS) || defined(_STLP_UITHREADS) || defined(_STLP_OS2THREADS)
 1498.71 +__DECLARE_INSTANCE(_STLP_STATIC_MUTEX, _Swap_lock_struct<0>::_S_swap_lock, 
 1498.72 +                   _STLP_MUTEX_INITIALIZER  );
 1498.73 +#  endif /* _STLP_PTHREADS */
 1498.74 +
 1498.75 +#  ifndef _STLP_USE_PTHREAD_SPINLOCK
 1498.76 +__DECLARE_INSTANCE(unsigned, _STLP_mutex_spin<0>::__max,  =30);
 1498.77 +__DECLARE_INSTANCE(unsigned, _STLP_mutex_spin<0>::__last, =0);
 1498.78 +#  endif // _STLP_USE_PTHREAD_SPINLOCK
 1498.79 +
 1498.80 +# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1498.81 +
 1498.82 +#ifndef _STLP_USE_PTHREAD_SPINLOCK
 1498.83 +
 1498.84 +#ifdef _STLP_SPARC_SOLARIS_THREADS
 1498.85 +// underground function in libc.so; we do not want dependance on librt
 1498.86 +extern "C" int __nanosleep(const struct timespec*, struct timespec*);
 1498.87 +# define _STLP_NANOSLEEP __nanosleep
 1498.88 +#else
 1498.89 +# define _STLP_NANOSLEEP nanosleep
 1498.90 +#endif
 1498.91 +
 1498.92 +template <int __inst>
 1498.93 +void _STLP_CALL
 1498.94 +_STLP_mutex_spin<__inst>::_S_nsec_sleep(int __log_nsec) {
 1498.95 +#     if defined(_STLP_WIN32THREADS)
 1498.96 +	  if (__log_nsec <= 20) {
 1498.97 +        // Note from boost (www.boost.org): 
 1498.98 +        // Changed to Sleep(1) from Sleep(0).
 1498.99 +        // According to MSDN, Sleep(0) will never yield
1498.100 +        // to a lower-priority thread, whereas Sleep(1)
1498.101 +        // will. Performance seems not to be affected.
1498.102 +	      Sleep(1);
1498.103 +	  } else {
1498.104 +	      Sleep(1 << (__log_nsec - 20));
1498.105 +	  }
1498.106 +#    elif defined(_STLP_OS2THREADS)
1498.107 +      if (__log_nsec <= 20) {
1498.108 +         DosSleep(0);
1498.109 +      } else {
1498.110 +         DosSleep(1 << (__log_nsec - 20));
1498.111 +      }
1498.112 +#     elif defined (_STLP_UNIX)
1498.113 +          timespec __ts;
1498.114 +          /* Max sleep is 2**27nsec ~ 60msec      */
1498.115 +          __ts.tv_sec = 0;
1498.116 +          __ts.tv_nsec = 1 << __log_nsec;
1498.117 +          _STLP_NANOSLEEP(&__ts, 0);
1498.118 +#     endif
1498.119 +  }
1498.120 +
1498.121 +
1498.122 +template <int __inst>
1498.123 +void  _STLP_CALL
1498.124 +_STLP_mutex_spin<__inst>::_M_do_lock(volatile __stl_atomic_t* __lock)
1498.125 +{
1498.126 +#if defined(_STLP_ATOMIC_EXCHANGE)
1498.127 +  if (_Atomic_swap(__lock, 1)) {
1498.128 +    unsigned __my_spin_max = _STLP_mutex_spin<0>::__max;
1498.129 +    unsigned __my_last_spins = _STLP_mutex_spin<0>::__last;
1498.130 +    volatile unsigned __junk = 17; 	// Value doesn't matter.
1498.131 +    unsigned  __i;
1498.132 +    
1498.133 +    for (__i = 0; __i < __my_spin_max; ++__i) {
1498.134 +      if (__i < __my_last_spins/2 || *__lock) {
1498.135 +        __junk *= __junk; __junk *= __junk;
1498.136 +        __junk *= __junk; __junk *= __junk;
1498.137 +      } else {
1498.138 +        if (!_Atomic_swap(__lock, 1)) {
1498.139 +          // got it!
1498.140 +          // Spinning worked.  Thus we're probably not being scheduled
1498.141 +          // against the other process with which we were contending.
1498.142 +          // Thus it makes sense to spin longer the next time.
1498.143 +          _STLP_mutex_spin<0>::__last = __i;
1498.144 +          _STLP_mutex_spin<0>::__max = _STLP_mutex_spin<0>::__high_max;
1498.145 +	    return;
1498.146 +        }
1498.147 +      }
1498.148 +    }
1498.149 +    
1498.150 +    // We are probably being scheduled against the other process.  Sleep.
1498.151 +    _STLP_mutex_spin<0>::__max = _STLP_mutex_spin<0>::__low_max;
1498.152 +    
1498.153 +    for (__i = 0 ;; ++__i) {
1498.154 +      int __log_nsec = __i + 6;
1498.155 +      
1498.156 +      if (__log_nsec > 27) __log_nsec = 27;
1498.157 +      if (!_Atomic_swap(__lock, 1)) {
1498.158 +	  break;
1498.159 +      }
1498.160 +      _S_nsec_sleep(__log_nsec);
1498.161 +    }
1498.162 +    
1498.163 +  } /* first _Atomic_swap */
1498.164 +# endif
1498.165 +}
1498.166 +#endif // _STLP_USE_PTHREAD_SPINLOCK
1498.167 +
1498.168 +_STLP_END_NAMESPACE
1498.169 +
1498.170 +# endif /* BUILDING_STLPORT */
1498.171 +#endif /*  _STLP_THREADS_C */
1498.172 +
1498.173 +// Local Variables:
1498.174 +// mode:C++
1498.175 +// End:
  1499.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1499.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_threads.h	Wed Mar 31 12:27:01 2010 +0100
  1499.3 @@ -0,0 +1,666 @@
  1499.4 +/*
  1499.5 + * Copyright (c) 1997-1999
  1499.6 + * Silicon Graphics Computer Systems, Inc.
  1499.7 + *
  1499.8 + * Copyright (c) 1999 
  1499.9 + * Boris Fomitchev
 1499.10 + *
 1499.11 + * This material is provided "as is", with absolutely no warranty expressed
 1499.12 + * or implied. Any use is at your own risk.
 1499.13 + *
 1499.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1499.15 + * without fee, provided the above notices are retained on all copies.
 1499.16 + * Permission to modify the code and to distribute modified code is granted,
 1499.17 + * provided the above notices are retained, and a notice that the code was
 1499.18 + * modified is included with the above copyright notice.
 1499.19 + *
 1499.20 + */
 1499.21 +
 1499.22 +// WARNING: This is an internal header file, included by other C++
 1499.23 +// standard library headers.  You should not attempt to use this header
 1499.24 +// file directly.
 1499.25 +// Stl_config.h should be included before this file.
 1499.26 +
 1499.27 +
 1499.28 +#ifndef _STLP_INTERNAL_THREADS_H
 1499.29 +#define _STLP_INTERNAL_THREADS_H
 1499.30 +
 1499.31 +// Supported threading models are native SGI, pthreads, uithreads
 1499.32 +// (similar to pthreads, but based on an earlier draft of the Posix
 1499.33 +// threads standard), and Win32 threads.  Uithread support by Jochen
 1499.34 +// Schlick, 1999, and Solaris threads generalized to them.
 1499.35 +
 1499.36 +#ifndef _STLP_CONFIG_H
 1499.37 +#include <stl/_config.h>
 1499.38 +#endif
 1499.39 +
 1499.40 +# if ! defined (_STLP_CSTDDEF)
 1499.41 +#  include <cstddef>
 1499.42 +# endif
 1499.43 +
 1499.44 +# if ! defined (_STLP_CSTDLIB)
 1499.45 +#  include <cstdlib>
 1499.46 +# endif
 1499.47 +
 1499.48 +// On SUN and Mac OS X gcc, zero-initialization works just fine...
 1499.49 +# if defined (__sun) || ( defined(__GNUC__) && defined(__APPLE__) )
 1499.50 +# define _STLP_MUTEX_INITIALIZER
 1499.51 +# endif
 1499.52 +
 1499.53 +# if defined (_STLP_WIN32) || defined (__sgi) || defined (_STLP_SPARC_SOLARIS_THREADS)
 1499.54 +  typedef long __stl_atomic_t;
 1499.55 +# else 
 1499.56 +# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
 1499.57 +// using _STLP_VENDOR_CSTD::size_t;
 1499.58 +using namespace _STLP_VENDOR_CSTD;
 1499.59 +# endif
 1499.60 +  typedef size_t __stl_atomic_t;
 1499.61 +#endif  
 1499.62 +
 1499.63 +# if defined(_STLP_SGI_THREADS)
 1499.64 +#  include <mutex.h>
 1499.65 +// Hack for SGI o32 compilers.
 1499.66 +#if !defined(__add_and_fetch) && \
 1499.67 +    (__mips < 3 || !(defined (_ABIN32) || defined(_ABI64)))
 1499.68 +#  define __add_and_fetch(__l,__v) add_then_test((unsigned long*)__l,__v)  
 1499.69 +#  define __test_and_set(__l,__v)  test_and_set(__l,__v)
 1499.70 +#endif /* o32 */
 1499.71 +
 1499.72 +# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64))
 1499.73 +#  define _STLP_ATOMIC_EXCHANGE(__p, __q) test_and_set(__p, __q)
 1499.74 +# else
 1499.75 +#  define _STLP_ATOMIC_EXCHANGE(__p, __q) __test_and_set((unsigned long*)__p, (unsigned long)__q)
 1499.76 +# endif
 1499.77 +
 1499.78 +#  define _STLP_ATOMIC_INCREMENT(__x) __add_and_fetch(__x, 1)
 1499.79 +#  define _STLP_ATOMIC_DECREMENT(__x) __add_and_fetch(__x, (size_t) -1)
 1499.80 +
 1499.81 +# elif defined (__GNUC__) && defined (__i386__) && defined (__unix__) && defined (_STLP_USE_INLINE_X86_SPINLOCK) 
 1499.82 +
 1499.83 +// gcc on i386 linux, freebsd, etc. 
 1499.84 +
 1499.85 +// This enables the memory caching on x86 linux.  It is critical for SMP
 1499.86 +// without it the performace is DISMAL!
 1499.87 +static inline unsigned long __xchg(volatile __stl_atomic_t* target, int source)
 1499.88 +{
 1499.89 +
 1499.90 +  // The target is refernce in memory rather than the register
 1499.91 +  // because making a copy of it from memory to the register and
 1499.92 +  // back again would ruin the atomic nature of the call.
 1499.93 +  // the source does not need to be delt with atomicly so it can
 1499.94 +  // be copied about as needed.
 1499.95 +  //
 1499.96 +  // The casting of the source is used to prevent gcc from optimizing 
 1499.97 +  // in such a way that breaks the atomic nature of this call.
 1499.98 +  //
 1499.99 +  __asm__ __volatile__("xchgl %1,%0"
1499.100 +		       :"=m" (*(volatile long *) target), "=r" (source)
1499.101 +		       :"m" (*(volatile long *) target), "r" (source) );
1499.102 +  return source;
1499.103 +
1499.104 +  //  The assembly above does the following atomicly:
1499.105 +  //   int temp=source;
1499.106 +  //   source=(int)(*target);
1499.107 +  //   (int)(*target)=temp;
1499.108 +  // return source
1499.109 +}
1499.110 +
1499.111 +static inline void __inc_and_fetch(volatile __stl_atomic_t* __x)
1499.112 +{
1499.113 +  // Referenced in memory rather than register to preserve the atomic nature.
1499.114 +  //
1499.115 +  __asm__ __volatile__(
1499.116 +      "lock; incl %0"
1499.117 +      :"=m" (*__x)
1499.118 +      :"m" (*__x) );
1499.119 +
1499.120 +  //  The assembly above does the following atomicly:
1499.121 +  //   ++(int)(*__x);
1499.122 +
1499.123 +}
1499.124 +static inline void __dec_and_fetch(volatile __stl_atomic_t* __x)
1499.125 +{
1499.126 +  // Referenced in memory rather than register to preserve the atomic nature.
1499.127 +  //
1499.128 +  __asm__ __volatile__(
1499.129 +      "lock; decl %0"
1499.130 +      :"=m" (*__x)
1499.131 +      :"m" (*__x) );
1499.132 +
1499.133 +  //  The assembly above does the following atomicly:
1499.134 +  //   --(int)(*__x);
1499.135 +}
1499.136 +
1499.137 +#  define _STLP_ATOMIC_EXCHANGE(target, newValue) ((__xchg(target, newValue)))
1499.138 +#  define _STLP_ATOMIC_INCREMENT(__x) __inc_and_fetch(__x)
1499.139 +#  define _STLP_ATOMIC_DECREMENT(__x) __dec_and_fetch(__x)
1499.140 +
1499.141 +# elif defined(_STLP_PTHREADS)
1499.142 +
1499.143 +#  include <pthread.h>
1499.144 +#  ifndef _STLP_USE_PTHREAD_SPINLOCK
1499.145 +#   if defined(PTHREAD_MUTEX_INITIALIZER) && !defined(_STLP_MUTEX_INITIALIZER)
1499.146 +#    define _STLP_MUTEX_INITIALIZER = { PTHREAD_MUTEX_INITIALIZER }
1499.147 +#   endif
1499.148 +
1499.149 +//HPUX variants have (on some platforms optional) non-standard "DCE" pthreads impl
1499.150 +#   if defined(_DECTHREADS_) && (defined(_PTHREAD_USE_D4) || defined(__hpux)) && !defined(_CMA_SUPPRESS_EXTERNALS_)
1499.151 +#    define _STLP_PTHREAD_ATTR_DEFAULT pthread_mutexattr_default
1499.152 +#   else
1499.153 +#    define _STLP_PTHREAD_ATTR_DEFAULT 0
1499.154 +#   endif
1499.155 +#  endif // !_STLP_USE_PTHREAD_SPINLOCK 
1499.156 +
1499.157 +# elif defined(_STLP_WIN32THREADS)
1499.158 +#  if !defined (_STLP_WINDOWS_H_INCLUDED) && ! defined (_WINDOWS_H)
1499.159 +#   if ! (defined ( _STLP_MSVC ) || defined (__BORLANDC__) || defined (__ICL) || defined (__WATCOMC__) || defined (__MINGW32__) || defined (__DMC__))
1499.160 +#    ifdef _STLP_USE_MFC
1499.161 +#     include <afx.h>
1499.162 +#    else
1499.163 +#     include <windows.h>
1499.164 +#    endif
1499.165 +#    define _STLP_WINDOWS_H_INCLUDED
1499.166 +#   else 
1499.167 +// This section serves as a replacement for windows.h header for Visual C++
1499.168 +extern "C" {
1499.169 +#   if (defined(_M_MRX000) || defined(_M_ALPHA) \
1499.170 +       || (defined(_M_PPC) && (_MSC_VER >= 1000))) && !defined(RC_INVOKED)
1499.171 +#    define InterlockedIncrement       _InterlockedIncrement
1499.172 +#    define InterlockedDecrement       _InterlockedDecrement
1499.173 +#    define InterlockedExchange        _InterlockedExchange
1499.174 +#    define _STLP_STDCALL
1499.175 +#   else
1499.176 +#    ifdef _MAC
1499.177 +#     define _STLP_STDCALL _cdecl
1499.178 +#    else
1499.179 +#     define _STLP_STDCALL __stdcall
1499.180 +#    endif
1499.181 +#   endif
1499.182 +
1499.183 +#if (_MSC_VER >= 1300) || defined (_STLP_NEW_PLATFORM_SDK)
1499.184 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *);
1499.185 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *);
1499.186 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long);
1499.187 +#else
1499.188 +  // boris : for the latest SDK, you may actually need the other version of the declaration (above)
1499.189 +  // even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ...
1499.190 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*);
1499.191 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*);
1499.192 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long);
1499.193 +#endif
1499.194 +
1499.195 +_STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long);
1499.196 +_STLP_IMPORT_DECLSPEC void _STLP_STDCALL OutputDebugStringA( const char* lpOutputString );
1499.197 +
1499.198 +#ifdef _STLP_DEBUG
1499.199 +typedef unsigned long DWORD;
1499.200 +_STLP_IMPORT_DECLSPEC DWORD _STLP_STDCALL GetCurrentThreadId();
1499.201 +#endif /* _STLP_DEBUG */
1499.202 +
1499.203 +#    if defined (InterlockedIncrement)
1499.204 +#     pragma intrinsic(_InterlockedIncrement)
1499.205 +#     pragma intrinsic(_InterlockedDecrement)
1499.206 +#     pragma intrinsic(_InterlockedExchange)
1499.207 +#    endif
1499.208 +} /* extern "C" */
1499.209 +
1499.210 +#   endif /* STL_MSVC */
1499.211 +
1499.212 +#   define _STLP_WINDOWS_H_INCLUDED
1499.213 +
1499.214 +#  endif /* _STLP_WIN32 */
1499.215 +
1499.216 +#  ifndef _STLP_ATOMIC_INCREMENT
1499.217 +#   define _STLP_ATOMIC_INCREMENT(__x)           InterlockedIncrement((long*)__x)
1499.218 +#   define _STLP_ATOMIC_DECREMENT(__x)           InterlockedDecrement((long*)__x)
1499.219 +#   define _STLP_ATOMIC_EXCHANGE(__x, __y)       InterlockedExchange((long*)__x, (long)__y)
1499.220 +#  endif
1499.221 +# elif defined(__DECC) || defined(__DECCXX)
1499.222 +#  include <machine/builtins.h>
1499.223 +#  define _STLP_ATOMIC_EXCHANGE __ATOMIC_EXCH_LONG
1499.224 +#  define _STLP_ATOMIC_INCREMENT(__x) __ATOMIC_ADD_LONG(__x, 1)
1499.225 +#  define _STLP_ATOMIC_DECREMENT(__x) __ATOMIC_ADD_LONG(__x, -1)
1499.226 +# elif defined(_STLP_SPARC_SOLARIS_THREADS)
1499.227 +#  include <stl/_sparc_atomic.h>
1499.228 +# elif defined (_STLP_UITHREADS)
1499.229 +// this inclusion is potential hazard to bring up all sorts
1499.230 +// of old-style headers. Let's assume vendor already know how
1499.231 +// to deal with that.
1499.232 +#  include <ctime>
1499.233 +# if defined (_STLP_USE_NAMESPACES) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
1499.234 +using _STLP_VENDOR_CSTD::time_t;
1499.235 +# endif
1499.236 +#  include <synch.h>
1499.237 +#  include <cstdio>
1499.238 +#  include <stl/_cwchar.h>
1499.239 +# elif defined (_STLP_BETHREADS)
1499.240 +#  include <OS.h>
1499.241 +#include <cassert>
1499.242 +#include <stdio.h>
1499.243 +#  define _STLP_MUTEX_INITIALIZER = { 0 }
1499.244 +#elif defined(_STLP_OS2THREADS)
1499.245 +# ifdef __GNUC__
1499.246 +#  define INCL_DOSSEMAPHORES
1499.247 +#  include <os2.h>
1499.248 +# else
1499.249 +  // This section serves to replace os2.h for VisualAge C++
1499.250 +  typedef unsigned long ULONG;
1499.251 +  #ifndef __HEV__  /* INCL_SEMAPHORE may also define HEV */
1499.252 +    #define __HEV__
1499.253 +    typedef ULONG HEV;
1499.254 +    typedef HEV*  PHEV;
1499.255 +  #endif
1499.256 +  typedef ULONG APIRET;
1499.257 +  typedef ULONG HMTX;
1499.258 +  typedef HMTX*  PHMTX;
1499.259 +  typedef const char*  PCSZ;
1499.260 +  typedef ULONG BOOL32;
1499.261 +  APIRET _System DosCreateMutexSem(PCSZ pszName, PHEV phev, ULONG flAttr, BOOL32 fState);
1499.262 +  APIRET _System DosRequestMutexSem(HMTX hmtx, ULONG ulTimeout);
1499.263 +  APIRET _System DosReleaseMutexSem(HMTX hmtx);
1499.264 +  APIRET _System DosCloseMutexSem(HMTX hmtx);
1499.265 +# define _STLP_MUTEX_INITIALIZER = { 0 };
1499.266 +#  endif /* GNUC */
1499.267 +# elif defined(_STLP_VXWORKS_THREADS)
1499.268 +#  include "semLib.h"
1499.269 +# endif
1499.270 +
1499.271 +# ifndef _STLP_MUTEX_INITIALIZER
1499.272 +#   if defined(_STLP_ATOMIC_EXCHANGE)
1499.273 +// we are using our own spinlock. 
1499.274 +#     define _STLP_MUTEX_INITIALIZER = { 0 }
1499.275 +#   elif defined(_STLP_UITHREADS)
1499.276 +// known case
1499.277 +#     define _STLP_MUTEX_INITIALIZER = { DEFAULTMUTEX }
1499.278 +#   else
1499.279 +// we do not have static initializer available. therefore, on-demand synchronization is needed.
1499.280 +#     define _STLP_MUTEX_INITIALIZER
1499.281 +#     define _STLP_MUTEX_NEEDS_ONDEMAND_INITIALIZATION
1499.282 +#   endif
1499.283 +# endif
1499.284 +
1499.285 +_STLP_BEGIN_NAMESPACE
1499.286 +
1499.287 +#ifndef _STLP_USE_PTHREAD_SPINLOCK
1499.288 +// Helper struct.  This is a workaround for various compilers that don't
1499.289 +// handle static variables in inline functions properly.
1499.290 +template <int __inst>
1499.291 +struct _STLP_mutex_spin {
1499.292 +  enum { __low_max = 30, __high_max = 1000 };
1499.293 +  // Low if we suspect uniprocessor, high for multiprocessor.
1499.294 +  static unsigned __max;
1499.295 +  static unsigned __last;
1499.296 +  static void _STLP_CALL _M_do_lock(volatile __stl_atomic_t* __lock);
1499.297 +  static void _STLP_CALL _S_nsec_sleep(int __log_nsec);
1499.298 +};
1499.299 +#endif // !_STLP_USE_PTHREAD_SPINLOCK
1499.300 +
1499.301 +
1499.302 +// Locking class.  Note that this class *does not have a constructor*.
1499.303 +// It must be initialized either statically, with _STLP_MUTEX_INITIALIZER,
1499.304 +// or dynamically, by explicitly calling the _M_initialize member function.
1499.305 +// (This is similar to the ways that a pthreads mutex can be initialized.)
1499.306 +// There are explicit member functions for acquiring and releasing the lock.
1499.307 +
1499.308 +// There is no constructor because static initialization is essential for
1499.309 +// some uses, and only a class aggregate (see section 8.5.1 of the C++
1499.310 +// standard) can be initialized that way.  That means we must have no
1499.311 +// constructors, no base classes, no virtual functions, and no private or
1499.312 +// protected members.
1499.313 +
1499.314 +// For non-static cases, clients should use  _STLP_mutex.
1499.315 +
1499.316 +struct _STLP_CLASS_DECLSPEC _STLP_mutex_base
1499.317 +{
1499.318 +#if defined(_STLP_ATOMIC_EXCHANGE) || defined(_STLP_SGI_THREADS)
1499.319 +  // It should be relatively easy to get this to work on any modern Unix.
1499.320 +  volatile __stl_atomic_t _M_lock;
1499.321 +#endif
1499.322 +
1499.323 +#ifdef _STLP_THREADS
1499.324 +
1499.325 +# ifdef _STLP_ATOMIC_EXCHANGE
1499.326 +  inline void _M_initialize() { _M_lock=0; }
1499.327 +  inline void _M_destroy() {}
1499.328 +
1499.329 +  void _M_acquire_lock() {
1499.330 +    _STLP_mutex_spin<0>::_M_do_lock(&_M_lock);
1499.331 +  }
1499.332 +
1499.333 +  inline void _M_release_lock() {
1499.334 +    volatile __stl_atomic_t* __lock = &_M_lock;
1499.335 +#  if defined(_STLP_SGI_THREADS) && defined(__GNUC__) && __mips >= 3
1499.336 +        asm("sync");
1499.337 +        *__lock = 0;
1499.338 +#  elif defined(_STLP_SGI_THREADS) && __mips >= 3 \
1499.339 +	 && (defined (_ABIN32) || defined(_ABI64))
1499.340 +        __lock_release(__lock);
1499.341 +#  elif defined (_STLP_SPARC_SOLARIS_THREADS)
1499.342 +#   if defined (__WORD64) || defined (__arch64__) || defined (__sparcv9) || defined (__sparcv8plus)
1499.343 +	asm("membar #StoreStore ; membar #LoadStore");
1499.344 +#   else
1499.345 +	asm(" stbar ");
1499.346 +#   endif
1499.347 +        *__lock = 0;	
1499.348 +#  else
1499.349 +        *__lock = 0;
1499.350 +        // This is not sufficient on many multiprocessors, since
1499.351 +        // writes to protected variables and the lock may be reordered.
1499.352 +#  endif
1499.353 +  }
1499.354 +# elif defined(_STLP_PTHREADS)
1499.355 +#  ifdef _STLP_USE_PTHREAD_SPINLOCK
1499.356 +  pthread_spinlock_t _M_lock;
1499.357 +  inline void _M_initialize() { pthread_spin_init( &_M_lock, 0 ); }
1499.358 +  inline void _M_destroy() { pthread_spin_destroy( &_M_lock ); }
1499.359 +
1499.360 +  inline void _M_acquire_lock() { 
1499.361 +    // we do not care about race conditions here : there is only one thread at this point 
1499.362 +    if(!_M_lock) pthread_spin_init( &_M_lock, 0 );
1499.363 +
1499.364 +    // fbp: here, initialization on demand should happen before the lock
1499.365 +    // we use simple strategy as we are sure this only happens on initialization
1499.366 +    pthread_spin_lock( &_M_lock );
1499.367 +  }
1499.368 +
1499.369 +  inline void _M_acquire_lock_nodemand() { 
1499.370 +    pthread_spin_lock( &_M_lock ); 
1499.371 +  }
1499.372 +  inline void _M_release_lock() { pthread_spin_unlock( &_M_lock ); }
1499.373 +#  else // !_STLP_USE_PTHREAD_SPINLOCK
1499.374 +  pthread_mutex_t _M_lock;
1499.375 +
1499.376 +  inline void _M_initialize() {
1499.377 +    pthread_mutex_init(&_M_lock,_STLP_PTHREAD_ATTR_DEFAULT);
1499.378 +  }
1499.379 +  inline void _M_destroy() {
1499.380 +    pthread_mutex_destroy(&_M_lock);
1499.381 +  }
1499.382 +  inline void _M_acquire_lock_nodemand() { 
1499.383 +    pthread_mutex_lock(&_M_lock);
1499.384 +  }
1499.385 +
1499.386 +  inline void _M_acquire_lock() { 
1499.387 +#    if defined (__hpux) && !defined (PTHREAD_MUTEX_INITIALIZER)
1499.388 +      if (!_M_lock.field1)  _M_initialize();
1499.389 +#    endif
1499.390 +     pthread_mutex_lock(&_M_lock);
1499.391 +  }
1499.392 +  inline void _M_release_lock() { pthread_mutex_unlock(&_M_lock); }
1499.393 +#  endif // !_STLP_USE_PTHREAD_SPINLOCK
1499.394 +  
1499.395 +# elif defined (_STLP_UITHREADS)
1499.396 +  mutex_t _M_lock;
1499.397 +  inline void _M_initialize() {
1499.398 +    mutex_init(&_M_lock,0,NULL);	
1499.399 +  }
1499.400 +  inline void _M_destroy() {
1499.401 +    mutex_destroy(&_M_lock);
1499.402 +  }
1499.403 +  inline void _M_acquire_lock() { mutex_lock(&_M_lock); }
1499.404 +  inline void _M_release_lock() { mutex_unlock(&_M_lock); }
1499.405 +
1499.406 +# elif defined(_STLP_OS2THREADS)
1499.407 +  HMTX _M_lock;
1499.408 +  inline void _M_initialize() { DosCreateMutexSem(NULL, &_M_lock, 0, false); }
1499.409 +  inline void _M_destroy() { DosCloseMutexSem(_M_lock); }
1499.410 +  inline void _M_acquire_lock_nodemand() {
1499.411 +    DosRequestMutexSem(_M_lock, SEM_INDEFINITE_WAIT);
1499.412 +  }  
1499.413 +  inline void _M_acquire_lock() {
1499.414 +    if(!_M_lock) _M_initialize();
1499.415 +    DosRequestMutexSem(_M_lock, SEM_INDEFINITE_WAIT);
1499.416 +  }
1499.417 +  inline void _M_release_lock() { DosReleaseMutexSem(_M_lock); }
1499.418 +# elif defined(_STLP_BETHREADS)
1499.419 +  sem_id sem;
1499.420 +  inline void _M_initialize() 
1499.421 +  {
1499.422 +     sem = create_sem(1, "STLPort");
1499.423 +     assert(sem > 0);
1499.424 +  }
1499.425 +  inline void _M_destroy() 
1499.426 +  {
1499.427 +     int t = delete_sem(sem);
1499.428 +     assert(t == B_NO_ERROR);
1499.429 +  }
1499.430 +  inline void _M_acquire_lock_nodemand()
1499.431 +  {
1499.432 +    status_t t;
1499.433 +    t = acquire_sem(sem);
1499.434 +    assert(t == B_NO_ERROR);
1499.435 +  }
1499.436 +  inline void _M_acquire_lock();
1499.437 +  inline void _M_release_lock() 
1499.438 +  {
1499.439 +     status_t t = release_sem(sem);
1499.440 +     assert(t == B_NO_ERROR);
1499.441 +  }
1499.442 +# elif defined(_STLP_VXWORKS_THREADS)
1499.443 +  SEM_ID _M_sem;
1499.444 +  inline void _M_initialize() 
1499.445 +  {
1499.446 +     _M_sem = semMCreate(SEM_Q_FIFO);
1499.447 +     assert(_M_sem > 0);
1499.448 +  }
1499.449 +  inline void _M_destroy() 
1499.450 +  {
1499.451 +    STATUS __s;
1499.452 +    semDelete (_M_sem);
1499.453 +    assert(__s == OK);
1499.454 +  }
1499.455 +  inline void _M_acquire_lock_nodemand()
1499.456 +  {
1499.457 +    STATUS __s;
1499.458 +    semTake (_M_sem, WAIT_FOREVER);
1499.459 +    assert(__s == OK);
1499.460 +  }
1499.461 +  inline void _M_acquire_lock()
1499.462 +  {
1499.463 +    if (!_M_sem)
1499.464 +      _M_initialize();
1499.465 +    _M_acquire_lock_nodemand();
1499.466 +  }
1499.467 +  inline void _M_release_lock() 
1499.468 +  {
1499.469 +    STATUS __s;
1499.470 +    semGive (_M_sem, WAIT_FOREVER);
1499.471 +    assert(__s == OK);
1499.472 +  }
1499.473 +# else		//*ty 11/24/2001 - added configuration check
1499.474 +#  error "Unknown thread facility configuration"
1499.475 +# endif
1499.476 +#else /* No threads */
1499.477 +  inline void _M_initialize() {}
1499.478 +  inline void _M_destroy() {}
1499.479 +  inline void _M_acquire_lock() {}
1499.480 +  inline void _M_release_lock() {}
1499.481 +#endif // _STLP_PTHREADS
1499.482 +};
1499.483 +
1499.484 +
1499.485 +#if defined (_STLP_THREADS) && defined (_STLP_MUTEX_NEEDS_ONDEMAND_INITIALIZATION)
1499.486 +// for use in _STLP_mutex, our purposes do not require ondemand initialization
1499.487 +// also, mutex_base may use some hacks to determine uninitialized state by zero data, which only works for globals.
1499.488 +class _STLP_CLASS_DECLSPEC _STLP_mutex_nodemand : public _STLP_mutex_base {
1499.489 +  inline void _M_acquire_lock() { 
1499.490 +    _M_acquire_lock_nodemand();
1499.491 +  }
1499.492 +};
1499.493 +#else
1499.494 +typedef _STLP_mutex_base _STLP_mutex_nodemand;
1499.495 +#endif
1499.496 +
1499.497 +
1499.498 +// Locking class.  The constructor initializes the lock, the destructor destroys it.
1499.499 +// Well - behaving class, does not need static initializer
1499.500 +class _STLP_CLASS_DECLSPEC _STLP_mutex : public _STLP_mutex_nodemand {
1499.501 +  public:
1499.502 +    inline _STLP_mutex () { _M_initialize(); }
1499.503 +    inline ~_STLP_mutex () { _M_destroy(); }
1499.504 +  private:
1499.505 +    _STLP_mutex(const _STLP_mutex&);
1499.506 +    void operator=(const _STLP_mutex&);
1499.507 +};
1499.508 +
1499.509 +
1499.510 +
1499.511 +/*
1499.512 + * Class _Refcount_Base provides a type, __stl_atomic_t, a data member,
1499.513 + * _M_ref_count, and member functions _M_incr and _M_decr, which perform
1499.514 + * atomic preincrement/predecrement.  The constructor initializes 
1499.515 + * _M_ref_count.
1499.516 + */
1499.517 +struct _STLP_CLASS_DECLSPEC _Refcount_Base
1499.518 +{
1499.519 +  // The data member _M_ref_count
1499.520 +  volatile __stl_atomic_t _M_ref_count;
1499.521 +
1499.522 +# if !defined (_STLP_ATOMIC_EXCHANGE)
1499.523 +  _STLP_mutex _M_mutex;
1499.524 +# endif
1499.525 +
1499.526 +  // Constructor
1499.527 +  _Refcount_Base(__stl_atomic_t __n) : _M_ref_count(__n) {}
1499.528 +
1499.529 +  // _M_incr and _M_decr
1499.530 +# if defined (_STLP_THREADS) && defined (_STLP_ATOMIC_EXCHANGE)
1499.531 +   void _M_incr() { _STLP_ATOMIC_INCREMENT((__stl_atomic_t*)&_M_ref_count); }
1499.532 +   void _M_decr() { _STLP_ATOMIC_DECREMENT((__stl_atomic_t*)&_M_ref_count); }
1499.533 +# elif defined(_STLP_THREADS)
1499.534 +  void _M_incr() {
1499.535 +    _M_mutex._M_acquire_lock();
1499.536 +    ++_M_ref_count;
1499.537 +    _M_mutex._M_release_lock();
1499.538 +  }
1499.539 +  void _M_decr() {
1499.540 +    _M_mutex._M_acquire_lock();
1499.541 +    --_M_ref_count;
1499.542 +    _M_mutex._M_release_lock();
1499.543 +  }
1499.544 +# else  /* No threads */
1499.545 +  void _M_incr() { ++_M_ref_count; }
1499.546 +  void _M_decr() { --_M_ref_count; }
1499.547 +# endif
1499.548 +};
1499.549 +
1499.550 +// Atomic swap on unsigned long
1499.551 +// This is guaranteed to behave as though it were atomic only if all
1499.552 +// possibly concurrent updates use _Atomic_swap.
1499.553 +// In some cases the operation is emulated with a lock.
1499.554 +# if defined (_STLP_THREADS)
1499.555 +#  ifdef _STLP_ATOMIC_EXCHANGE
1499.556 +inline __stl_atomic_t _Atomic_swap(volatile __stl_atomic_t * __p, __stl_atomic_t __q) {
1499.557 +  return (__stl_atomic_t) _STLP_ATOMIC_EXCHANGE(__p,__q);
1499.558 +}
1499.559 +#  elif defined(_STLP_PTHREADS) || defined (_STLP_UITHREADS) || defined (_STLP_OS2THREADS) || defined(_STLP_USE_PTHREAD_SPINLOCK)
1499.560 +// We use a template here only to get a unique initialized instance.
1499.561 +template<int __dummy>
1499.562 +struct _Swap_lock_struct {
1499.563 +  static _STLP_STATIC_MUTEX _S_swap_lock;
1499.564 +};
1499.565 +
1499.566 +
1499.567 +// This should be portable, but performance is expected
1499.568 +// to be quite awful.  This really needs platform specific
1499.569 +// code.
1499.570 +inline __stl_atomic_t _Atomic_swap(volatile __stl_atomic_t * __p, __stl_atomic_t __q) {
1499.571 +  _Swap_lock_struct<0>::_S_swap_lock._M_acquire_lock();
1499.572 +  __stl_atomic_t __result = *__p;
1499.573 +  *__p = __q;
1499.574 +  _Swap_lock_struct<0>::_S_swap_lock._M_release_lock();
1499.575 +  return __result;
1499.576 +}
1499.577 +#  endif // _STLP_PTHREADS || _STLP_UITHREADS || _STLP_OS2THREADS || _STLP_USE_PTHREAD_SPINLOCK
1499.578 +# else // !_STLP_THREADS
1499.579 +/* no threads */
1499.580 +static inline __stl_atomic_t  _STLP_CALL
1499.581 +_Atomic_swap(volatile __stl_atomic_t * __p, __stl_atomic_t __q) {
1499.582 +  __stl_atomic_t __result = *__p;
1499.583 +  *__p = __q;
1499.584 +  return __result;
1499.585 +}
1499.586 +# endif // _STLP_THREADS
1499.587 +
1499.588 +// A locking class that uses _STLP_STATIC_MUTEX.  The constructor takes
1499.589 +// a reference to an _STLP_STATIC_MUTEX, and acquires a lock.  The destructor
1499.590 +// releases the lock.
1499.591 +
1499.592 +struct _STLP_CLASS_DECLSPEC _STLP_auto_lock
1499.593 +{
1499.594 +  _STLP_STATIC_MUTEX& _M_lock;
1499.595 +  
1499.596 +  _STLP_auto_lock(_STLP_STATIC_MUTEX& __lock) : _M_lock(__lock)
1499.597 +    { _M_lock._M_acquire_lock(); }
1499.598 +  ~_STLP_auto_lock() { _M_lock._M_release_lock(); }
1499.599 +
1499.600 +private:
1499.601 +  void operator=(const _STLP_auto_lock&);
1499.602 +  _STLP_auto_lock(const _STLP_auto_lock&);
1499.603 +};
1499.604 +
1499.605 +typedef _STLP_auto_lock _STLP_mutex_lock;
1499.606 +
1499.607 +#ifdef _STLP_BETHREADS
1499.608 +
1499.609 +template <int __inst>
1499.610 +struct _STLP_beos_static_lock_data
1499.611 +{
1499.612 +	static bool is_init;
1499.613 +	struct mutex_t : public _STLP_mutex
1499.614 +	{
1499.615 +		mutex_t()
1499.616 +		{
1499.617 +			_STLP_beos_static_lock_data<0>::is_init = true;
1499.618 +		}
1499.619 +		~mutex_t()
1499.620 +		{
1499.621 +			_STLP_beos_static_lock_data<0>::is_init = false;
1499.622 +		}
1499.623 +	};
1499.624 +	static mutex_t mut;
1499.625 +};
1499.626 +
1499.627 +template <int __inst>
1499.628 +bool _STLP_beos_static_lock_data<__inst>::is_init = false;
1499.629 +template <int __inst>
1499.630 +typename _STLP_beos_static_lock_data<__inst>::mutex_t _STLP_beos_static_lock_data<__inst>::mut;
1499.631 +
1499.632 +
1499.633 +inline void _STLP_mutex_base::_M_acquire_lock() 
1499.634 +{
1499.635 +	if(sem == 0)
1499.636 +	{
1499.637 +		// we need to initialise on demand here
1499.638 +		// to prevent race conditions use our global
1499.639 +		// mutex if it's available:
1499.640 +		if(_STLP_beos_static_lock_data<0>::is_init)
1499.641 +		{
1499.642 +			_STLP_auto_lock al(_STLP_beos_static_lock_data<0>::mut);
1499.643 +			if(sem == 0) _M_initialize();
1499.644 +		}
1499.645 +		else
1499.646 +		{
1499.647 +			// no lock available, we must still be
1499.648 +			// in startup code, THERE MUST BE ONE THREAD
1499.649 +			// ONLY active at this point.
1499.650 +			_M_initialize();
1499.651 +		}
1499.652 +	}
1499.653 +	_M_acquire_lock_nodemand();
1499.654 +}
1499.655 +
1499.656 +#endif
1499.657 +
1499.658 +_STLP_END_NAMESPACE
1499.659 +
1499.660 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1499.661 +#  include <stl/_threads.c>
1499.662 +# endif
1499.663 +
1499.664 +#endif /* _STLP_INTERNAL_THREADS_H */
1499.665 +
1499.666 +// Local Variables:
1499.667 +// mode:C++
1499.668 +// End:
1499.669 +
  1500.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1500.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_time_facets.c	Wed Mar 31 12:27:01 2010 +0100
  1500.3 @@ -0,0 +1,522 @@
  1500.4 +/*
  1500.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1500.6 + *
  1500.7 + * Copyright (c) 1999
  1500.8 + * Silicon Graphics Computer Systems, Inc.
  1500.9 + *
 1500.10 + * Copyright (c) 1999 
 1500.11 + * Boris Fomitchev
 1500.12 + *
 1500.13 + * This material is provided "as is", with absolutely no warranty expressed
 1500.14 + * or implied. Any use is at your own risk.
 1500.15 + *
 1500.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1500.17 + * without fee, provided the above notices are retained on all copies.
 1500.18 + * Permission to modify the code and to distribute modified code is granted,
 1500.19 + * provided the above notices are retained, and a notice that the code was
 1500.20 + * modified is included with the above copyright notice.
 1500.21 + *
 1500.22 + */ 
 1500.23 +#ifndef _STLP_TIME_FACETS_C
 1500.24 +#define _STLP_TIME_FACETS_C
 1500.25 +
 1500.26 +#ifndef _STLP_INTERNAL_TIME_FACETS_H
 1500.27 +# include <stl/_time_facets.h>
 1500.28 +#endif
 1500.29 +
 1500.30 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION)
 1500.31 +
 1500.32 +#ifndef _STLP_INTERNAL_NUM_PUT_H
 1500.33 +# include <stl/_num_put.h>
 1500.34 +#endif
 1500.35 +
 1500.36 +#ifndef _STLP_INTERNAL_NUM_GET_H
 1500.37 +# include <stl/_num_get.h>
 1500.38 +#endif
 1500.39 +
 1500.40 +_STLP_BEGIN_NAMESPACE
 1500.41 +
 1500.42 +//----------------------------------------------------------------------
 1500.43 +// Declarations of static template members.
 1500.44 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
 1500.45 +# if !defined(__LIBSTD_CPP_SYMBIAN32_WSD__) && !defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
 1500.46 +template <class _CharT, class _InputIterator>
 1500.47 +locale::id time_get<_CharT, _InputIterator>::id;
 1500.48 +
 1500.49 +template <class _CharT, class _OutputIterator>
 1500.50 +locale::id time_put<_CharT, _OutputIterator>::id;
 1500.51 +#endif
 1500.52 +
 1500.53 +# else /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1500.54 +
 1500.55 +typedef time_get<char, const char*> time_get_char;
 1500.56 +typedef time_get<char, char*> time_get_char_2;
 1500.57 +typedef time_get<char, istreambuf_iterator<char, char_traits<char> > > time_get_char_3;
 1500.58 +typedef time_put<char, const char*> time_put_char;
 1500.59 +typedef time_put<char, char*> time_put_char_2;
 1500.60 +typedef time_put<char, ostreambuf_iterator<char, char_traits<char> > > time_put_char_3;
 1500.61 +
 1500.62 +#ifndef __SYMBIAN32__
 1500.63 +__DECLARE_INSTANCE(locale::id, time_get_char::id, );
 1500.64 +__DECLARE_INSTANCE(locale::id, time_get_char_2::id, );
 1500.65 +__DECLARE_INSTANCE(locale::id, time_get_char_3::id, );
 1500.66 +__DECLARE_INSTANCE(locale::id, time_put_char::id, );
 1500.67 +__DECLARE_INSTANCE(locale::id, time_put_char_2::id, );
 1500.68 +__DECLARE_INSTANCE(locale::id, time_put_char_3::id, );
 1500.69 +#endif
 1500.70 +
 1500.71 +# ifndef _STLP_NO_WCHAR_T
 1500.72 +
 1500.73 +typedef time_get<wchar_t, const wchar_t*> time_get_wchar_t;
 1500.74 +typedef time_get<wchar_t, wchar_t*> time_get_wchar_t_2;
 1500.75 +typedef time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_get_wchar_t_3;
 1500.76 +typedef time_put<wchar_t, const wchar_t*> time_put_wchar_t;
 1500.77 +typedef time_put<wchar_t, wchar_t*> time_put_wchar_t_2;
 1500.78 +typedef time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > time_put_wchar_t_3;
 1500.79 +
 1500.80 +#ifndef __SYMBIAN32__
 1500.81 +__DECLARE_INSTANCE(locale::id, time_get_wchar_t::id, );
 1500.82 +__DECLARE_INSTANCE(locale::id, time_get_wchar_t_2::id, );
 1500.83 +__DECLARE_INSTANCE(locale::id, time_get_wchar_t_3::id, );
 1500.84 +__DECLARE_INSTANCE(locale::id, time_put_wchar_t::id, );
 1500.85 +__DECLARE_INSTANCE(locale::id, time_put_wchar_t_2::id, );
 1500.86 +__DECLARE_INSTANCE(locale::id, time_put_wchar_t_3::id, );
 1500.87 +#endif
 1500.88 +
 1500.89 +# endif
 1500.90 +
 1500.91 +# endif /* ( _STLP_STATIC_TEMPLATE_DATA > 0 ) */
 1500.92 +
 1500.93 +template <class _InIt, class _RAIt, class _DiffType>
 1500.94 +_RAIt _STLP_CALL
 1500.95 +__match(_InIt& __first, _InIt& __last, _RAIt __name, _RAIt __name_end, _DiffType*) {
 1500.96 +  typedef _DiffType difference_type;
 1500.97 +  difference_type __n = __name_end - __name;
 1500.98 +  size_t __max_pos = 0;
 1500.99 +  difference_type __i;
1500.100 +  difference_type __pos = 0;
1500.101 +  difference_type __check_count = __n;
1500.102 +  bool __do_check[_MAXNAMES];
1500.103 +  _RAIt __matching_name[_MAX_NAME_LENGTH];
1500.104 +
1500.105 +  for (__i = 0; __i < __n; ++__i)
1500.106 +    __max_pos = (max)(__max_pos,  __name[__i].size());
1500.107 +
1500.108 +  for (__i = 0; __i < _MAXNAMES; ++__i)
1500.109 +    __do_check[__i] = true;
1500.110 +
1500.111 +
1500.112 +
1500.113 +  for (__i = 0; __i < _MAX_NAME_LENGTH; ++__i)
1500.114 +    __matching_name[__i] = __name_end;
1500.115 +
1500.116 +  while (__first != __last) {
1500.117 +    for (__i = 0; __i < __n; ++__i)
1500.118 +      if (__do_check[__i])
1500.119 +        if (*__first == __name[__i][__pos]) {
1500.120 +          if (__pos == _DiffType(__name[__i].size()) - 1) {
1500.121 +            __do_check[__i] = 0;
1500.122 +            __matching_name[__pos+1] = __name + __i;
1500.123 +            --__check_count;
1500.124 +            if (__check_count == 0) {
1500.125 +              ++__first; 
1500.126 +	      return __name + __i;
1500.127 +	    }
1500.128 +          }
1500.129 +        }
1500.130 +        else {
1500.131 +          __do_check[__i] = 0;
1500.132 +          --__check_count;
1500.133 +          if (__check_count == 0) 
1500.134 +            return __matching_name[__pos];
1500.135 +        }
1500.136 +
1500.137 +    ++__first; ++__pos;
1500.138 +  }
1500.139 +
1500.140 +  return __matching_name[__pos];
1500.141 +}
1500.142 +
1500.143 +template <class _InIt, class _RAIt>
1500.144 +_RAIt _STLP_CALL
1500.145 +__match(_InIt& __first, _InIt& __last, _RAIt __name, _RAIt __name_end) {
1500.146 +  return __match((_InIt&)__first, (_InIt&)__last, __name, __name_end, _STLP_DISTANCE_TYPE(__name, _InIt));
1500.147 +}
1500.148 +
1500.149 +// __get_formatted_time reads input that is assumed to be formatted
1500.150 +// according to the rules for the C strftime function (C standard,
1500.151 +// 7.12.3.5).  This function is used to implement the do_get_time
1500.152 +// and do_get_date virtual functions, which depend on the locale
1500.153 +// specifications for the time and day formats respectively.
1500.154 +// Note the catchall default case, intended mainly for the '%Z'
1500.155 +// format designator, which does not make sense here since the
1500.156 +// representation of timezones is not part of the locale.
1500.157 +//
1500.158 +// The case branches are implemented either by doing a match using
1500.159 +// the appopriate name table or by doing a __get_integer_nogroup.
1500.160 +//
1500.161 +// 'y' format is assumed to mean that the input represents years
1500.162 +// since 1900.  That is, 2002 should be represented as 102.  There
1500.163 +// is no century-guessing.
1500.164 +//
1500.165 +// The match is successful if and only if the second component of the
1500.166 +// return value is format_end.
1500.167 +
1500.168 +// Note that the antepenultimate parameter is being used only to determine
1500.169 +// the correct overloading for the calls to __get_integer_nogroup.
1500.170 +
1500.171 +template <class _InIt1, class _InIt2 /* , class _Ch */ >
1500.172 +_InIt2 _STLP_CALL
1500.173 +__get_formatted_time _STLP_WEAK (_InIt1 __first,  _InIt1 __last,
1500.174 +                     _InIt2 __format, _InIt2 __format_end,
1500.175 +				 /* _Ch, */ const _Time_Info& __table,
1500.176 +		     ios_base::iostate& __err,
1500.177 +                     tm*         __t) {
1500.178 +  while(__first != __last && __format != __format_end) {
1500.179 +    if (*__format == '%') {
1500.180 +      ++__format;
1500.181 +      char __c = *__format;
1500.182 +      switch (__c) {
1500.183 +        case 'a': {
1500.184 +          const string* __pr =
1500.185 +            __match(__first, __last,
1500.186 +		    (string*)__table._M_dayname + 0 , (string*)__table._M_dayname + 7);
1500.187 +            if (__pr == (string*)__table._M_dayname + 7)
1500.188 +              return __format;
1500.189 +            __t->tm_wday = (int)(__pr - (string*)__table._M_dayname);
1500.190 +            break;
1500.191 +        }
1500.192 +
1500.193 +        case 'A': {
1500.194 +          const string* __pr =
1500.195 +            __match(__first, __last,
1500.196 +		    (string*)__table._M_dayname + 7, (string*)__table._M_dayname + 14);
1500.197 +            if (__pr == (string*)__table._M_dayname + 14)
1500.198 +              return __format;
1500.199 +            __t->tm_wday = (int)(__pr - (string*)__table._M_dayname - 7);
1500.200 +            break;
1500.201 +        }
1500.202 +
1500.203 +        case 'b': {
1500.204 +          const string* __pr =
1500.205 +            __match(__first, __last,
1500.206 +		    (string*)__table._M_monthname + 0, (string*)__table._M_monthname + 12);
1500.207 +            if (__pr == (string*)__table._M_monthname + 12)
1500.208 +              return __format;
1500.209 +            __t->tm_mon = (int)(__pr - (string*)__table._M_monthname);
1500.210 +            break;
1500.211 +        }
1500.212 +
1500.213 +        case 'B': {
1500.214 +          const string* __pr =
1500.215 +            __match(__first, __last,
1500.216 +		    (string*)__table._M_monthname + 12, (string*)__table._M_monthname + 24);
1500.217 +            if (__pr == (string*)__table._M_monthname + 24)
1500.218 +              return __format;
1500.219 +            __t->tm_mon = (int)(__pr - (string*)__table._M_monthname - 12);
1500.220 +            break;
1500.221 +        }
1500.222 +
1500.223 +        case 'd': {
1500.224 +          bool __pr =
1500.225 +            __get_decimal_integer(__first, __last, __t->tm_mday);
1500.226 +          if (!__pr || __t->tm_mday < 1 || __t->tm_mday > 31) {
1500.227 +	    __err |= ios_base::failbit;
1500.228 +            return __format;
1500.229 +	  }
1500.230 +          break;
1500.231 +        }
1500.232 +        
1500.233 +        case 'H': case 'I': {
1500.234 +          bool __pr =
1500.235 +            __get_decimal_integer(__first, __last, __t->tm_hour);
1500.236 +            if (!__pr)
1500.237 +              return __format;
1500.238 +            break;
1500.239 +        }
1500.240 +
1500.241 +        case 'j': {
1500.242 +          bool __pr =
1500.243 +            __get_decimal_integer(__first, __last, __t->tm_yday);
1500.244 +          if (!__pr)
1500.245 +            return __format;
1500.246 +          break;
1500.247 +        }
1500.248 +
1500.249 +        case 'm': {
1500.250 +          bool __pr =
1500.251 +            __get_decimal_integer(__first, __last, __t->tm_mon);
1500.252 +	    --__t->tm_mon;
1500.253 +          if (!__pr || __t->tm_mon < 0 || __t->tm_mon > 11) {
1500.254 +	    __err |= ios_base::failbit;
1500.255 +            return __format;
1500.256 +	  }
1500.257 +          break;
1500.258 +        }
1500.259 +
1500.260 +        case 'M': {
1500.261 +          bool __pr =
1500.262 +            __get_decimal_integer(__first, __last, __t->tm_min);
1500.263 +          if (!__pr)
1500.264 +            return __format;
1500.265 +          break;
1500.266 +        }
1500.267 +
1500.268 +        case 'p': {
1500.269 +          const string* __pr =
1500.270 +            __match(__first, __last, (string*)__table._M_am_pm + 0, (string*)__table._M_am_pm + 2);
1500.271 +          if (__pr == (string*)__table._M_am_pm + 2)
1500.272 +            return __format;
1500.273 +          if (__pr == (string*)__table._M_am_pm + 1)
1500.274 +            __t->tm_hour += 12;
1500.275 +          break;
1500.276 +        }
1500.277 +
1500.278 +        case 'S': {
1500.279 +          bool __pr =
1500.280 +            __get_decimal_integer(__first, __last, __t->tm_sec);
1500.281 +          if (!__pr)
1500.282 +            return __format;
1500.283 +          break;
1500.284 +        }
1500.285 +
1500.286 +	case 'y': {
1500.287 +	  bool __pr =
1500.288 +	    __get_decimal_integer(__first, __last, __t->tm_year);
1500.289 +	  if (!__pr)
1500.290 +	    return __format;
1500.291 +	  break;
1500.292 +        }
1500.293 +
1500.294 +        case 'Y': {
1500.295 +	  bool __pr =
1500.296 +            __get_decimal_integer(__first, __last, __t->tm_year);
1500.297 +          __t->tm_year -= 1900;
1500.298 +          if (!__pr)
1500.299 +            return __format;
1500.300 +          break;
1500.301 +        }
1500.302 +
1500.303 +        default:
1500.304 +          break;
1500.305 +      }
1500.306 +
1500.307 +    }
1500.308 +    else {
1500.309 +      if (*__first != *__format) 
1500.310 +	  	break;
1500.311 +	 __first++;
1500.312 +    }
1500.313 +    
1500.314 +    ++__format;
1500.315 +  }
1500.316 +
1500.317 +  return __format;
1500.318 +}
1500.319 +
1500.320 +template <class _InIt>
1500.321 +bool _STLP_CALL
1500.322 +__get_short_or_long_dayname(_InIt& __first, _InIt& __last,
1500.323 +                            const _Time_Info& __table, tm* __t) {
1500.324 +  const string* __pr =
1500.325 +    __match(__first, __last, __table._M_dayname + 0, __table._M_dayname + 14);
1500.326 +  __t->tm_wday = (int)(__pr - __table._M_dayname) % 7;
1500.327 +  return __pr != __table._M_dayname + 14;
1500.328 +}
1500.329 +
1500.330 +template <class _InIt>
1500.331 +bool _STLP_CALL
1500.332 +__get_short_or_long_monthname(_InIt& __first, _InIt& __last,
1500.333 +                              const _Time_Info& __table, tm* __t) {
1500.334 +  const string* __pr =
1500.335 +    __match(__first, __last, (string*)__table._M_monthname + 0, (string*)__table._M_monthname + 24);
1500.336 +  __t->tm_mon = (int)(__pr - __table._M_monthname) % 12;
1500.337 +  return __pr != __table._M_monthname + 24;
1500.338 +}
1500.339 +
1500.340 +# ifndef _STLP_NO_WCHAR_T
1500.341 +template <class _OuIt>
1500.342 +_OuIt _STLP_CALL
1500.343 +__put_time(char * __first, char * __last, _OuIt __stl_out,
1500.344 +           const ios_base& __s, wchar_t) {
1500.345 +    //const ctype<wchar_t>& __ct = *(ctype<wchar_t>*)__s._M_ctype_facet();
1500.346 +    const ctype<wchar_t>& __ct = use_facet< ctype<wchar_t> >(__s.getloc());
1500.347 +    wchar_t __wbuf[64];
1500.348 +    __ct.widen(__first, __last, __wbuf);
1500.349 +    ptrdiff_t __len = __last - __first;
1500.350 +    wchar_t * __eend = __wbuf + __len;
1500.351 +    return copy((wchar_t*)__wbuf, __eend, __stl_out);
1500.352 +}
1500.353 +# endif
1500.354 +
1500.355 +#ifdef	__SYMBIAN32__
1500.356 +template <class _CharT, class _OuIt>
1500.357 +_OuIt _STLP_CALL
1500.358 +__put_time(char * __first, char * __last, _OuIt __stl_out,
1500.359 +           const ios_base& __s, _CharT) {
1500.360 +    //const ctype<wchar_t>& __ct = *(ctype<wchar_t>*)__s._M_ctype_facet();
1500.361 +    const ctype<_CharT>& __ct = use_facet< ctype<_CharT> >(__s.getloc());
1500.362 +    _CharT __wbuf[64];
1500.363 +    __ct.widen(__first, __last, __wbuf);
1500.364 +    ptrdiff_t __len = __last - __first;
1500.365 +    _CharT * __eend = __wbuf + __len;
1500.366 +    return copy((_CharT*)__wbuf, __eend, __stl_out);
1500.367 +}
1500.368 +
1500.369 +#endif
1500.370 +template <class _Ch, class _InIt>
1500.371 +_InIt
1500.372 +time_get<_Ch, _InIt>::do_get_date(_InIt __s, _InIt  __end,
1500.373 +				  ios_base& /* __str */, ios_base::iostate&  __err,
1500.374 +				  tm* __t) const 
1500.375 +{
1500.376 +  typedef string::const_iterator string_iterator;
1500.377 +
1500.378 +  string_iterator __format
1500.379 +    = _M_timeinfo._M_date_format.begin();
1500.380 +  string_iterator __format_end
1500.381 +    = _M_timeinfo._M_date_format.end();
1500.382 +  
1500.383 +  string_iterator __result
1500.384 +    = __get_formatted_time(__s, __end, __format, __format_end,
1500.385 +                           /* _Ch() ,*/  _M_timeinfo, __err, __t);
1500.386 +  if (__result == __format_end)
1500.387 +    __err = ios_base::goodbit;
1500.388 +  else {
1500.389 +    __err = ios_base::failbit;
1500.390 +    if (__s == __end)
1500.391 +      __err |= ios_base::eofbit;
1500.392 +  }
1500.393 +  return __s;
1500.394 +}
1500.395 +
1500.396 +template <class _Ch, class _InIt>
1500.397 +_InIt
1500.398 +time_get<_Ch, _InIt>::do_get_time(_InIt __s, _InIt  __end,
1500.399 +				  ios_base& /* __str */, ios_base::iostate&  __err,
1500.400 +				  tm* __t) const 
1500.401 +{
1500.402 +  typedef string::const_iterator string_iterator;
1500.403 +  string_iterator __format
1500.404 +    = _M_timeinfo._M_time_format.begin();
1500.405 +  string_iterator __format_end
1500.406 +    = _M_timeinfo._M_time_format.end();
1500.407 +  
1500.408 +  string_iterator __result
1500.409 +    = __get_formatted_time(__s, __end, __format, __format_end,
1500.410 +			   /* _Ch() , */ _M_timeinfo, __err, __t);
1500.411 +  __err = __result == __format_end ? ios_base::goodbit 
1500.412 +    : ios_base::failbit;
1500.413 +  if (__s == __end)
1500.414 +    __err |= ios_base::eofbit;
1500.415 +  return __s;
1500.416 +}
1500.417 +
1500.418 +template <class _Ch, class _InIt>
1500.419 +_InIt
1500.420 +time_get<_Ch, _InIt>::do_get_year(_InIt __s, _InIt  __end,
1500.421 +				  ios_base&, 
1500.422 +				  ios_base::iostate&  __err,
1500.423 +				  tm* __t) const
1500.424 +{
1500.425 +  
1500.426 +  if (__s == __end) {
1500.427 +    __err = ios_base::failbit | ios_base::eofbit;
1500.428 +    return __s;
1500.429 +  }
1500.430 +  
1500.431 +  bool __pr =  __get_decimal_integer(__s, __end, __t->tm_year);
1500.432 +  __t->tm_year -= 1900;
1500.433 +  __err = __pr ? ios_base::goodbit : ios_base::failbit;
1500.434 +  if (__s == __end)
1500.435 +    __err |= ios_base::eofbit;
1500.436 +  
1500.437 +  return __s;
1500.438 +}
1500.439 +
1500.440 +template <class _Ch, class _InIt>
1500.441 +_InIt
1500.442 +time_get<_Ch, _InIt>::do_get_weekday(_InIt __s, _InIt  __end,
1500.443 +				     ios_base& /* __str */, 
1500.444 +				     ios_base::iostate&  __err,
1500.445 +				     tm* __t) const 
1500.446 +{
1500.447 +    bool __result =
1500.448 +      __get_short_or_long_dayname(__s, __end, _M_timeinfo, __t);
1500.449 +    if (__result)
1500.450 +      __err = ios_base::goodbit;
1500.451 +    else {
1500.452 +      __err = ios_base::failbit;
1500.453 +      if (__s == __end)
1500.454 +        __err |= ios_base::eofbit;
1500.455 +    }
1500.456 +    return __s;
1500.457 +}
1500.458 +
1500.459 +template <class _Ch, class _InIt>
1500.460 +_InIt
1500.461 +time_get<_Ch, _InIt>::do_get_monthname(_InIt __s, _InIt  __end,
1500.462 +				       ios_base& /* __str */, 
1500.463 +				       ios_base::iostate&  __err,
1500.464 +				       tm* __t) const 
1500.465 +{
1500.466 +  bool __result =
1500.467 +    __get_short_or_long_monthname(__s, __end, _M_timeinfo, __t);
1500.468 +  if (__result)
1500.469 +    __err = ios_base::goodbit;
1500.470 +  else {
1500.471 +    __err = ios_base::failbit;
1500.472 +    if (__s == __end)
1500.473 +      __err |= ios_base::eofbit;
1500.474 +  }
1500.475 +  return __s;
1500.476 +}
1500.477 +
1500.478 +template<class _Ch, class _OutputIter>
1500.479 +_OutputIter
1500.480 +time_put<_Ch,_OutputIter>::put(_OutputIter __s, ios_base& __f, _Ch __fill,
1500.481 +			       const tm* __tmb,
1500.482 +			       const _Ch* __pat, const _Ch* __pat_end) const 
1500.483 +{
1500.484 +    locale __loc = __f.getloc();
1500.485 +    const ctype<_Ch>& _Ct = use_facet<ctype<_Ch> >(__loc); 
1500.486 + // const ctype<_Ch>& _Ct = *(ctype<_Ch>*)__f._M_ctype_facet(); 
1500.487 +  while (__pat != __pat_end) {
1500.488 +    char __c = _Ct.narrow(*__pat, 0);
1500.489 +    if (__c == '%') {
1500.490 +      char __mod = 0;
1500.491 +      ++__pat;
1500.492 +      __c = _Ct.narrow(*__pat++, 0);
1500.493 +      if(__c == '#') { // MS extension
1500.494 +        __mod = __c;
1500.495 +        __c = _Ct.narrow(*__pat++, 0);
1500.496 +      }
1500.497 +      __s = do_put(__s, __f, __fill, __tmb, __c, __mod);
1500.498 +    }
1500.499 +    else
1500.500 +      *__s++ = *__pat++;
1500.501 +  }
1500.502 +  return __s;
1500.503 +}
1500.504 +
1500.505 +template<class _Ch, class _OutputIter>
1500.506 +_OutputIter
1500.507 +time_put<_Ch,_OutputIter>::do_put(_OutputIter __s, ios_base& __f, _Ch     /* __fill */ ,
1500.508 +				  const tm* __tmb,
1500.509 +				  char __format, char __modifier ) const 
1500.510 +{
1500.511 +  char __buf[64];
1500.512 +  char * __iend = __write_formatted_time(__buf, __format, __modifier,
1500.513 +					 _M_timeinfo, __tmb);
1500.514 +  //  locale __loc = __f.getloc();
1500.515 +  return __put_time(__buf, __iend, __s, __f, _Ch());
1500.516 +}
1500.517 +
1500.518 +_STLP_END_NAMESPACE
1500.519 +
1500.520 +# endif /* defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) */
1500.521 +#endif /* _STLP_TIME_FACETS_C */
1500.522 +
1500.523 +// Local Variables:
1500.524 +// mode:C++
1500.525 +// End:
  1501.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1501.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_time_facets.h	Wed Mar 31 12:27:01 2010 +0100
  1501.3 @@ -0,0 +1,345 @@
  1501.4 +/*
  1501.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1501.6 + *
  1501.7 + * Copyright (c) 1999
  1501.8 + * Silicon Graphics Computer Systems, Inc.
  1501.9 + *
 1501.10 + * Copyright (c) 1999 
 1501.11 + * Boris Fomitchev
 1501.12 + *
 1501.13 + * This material is provided "as is", with absolutely no warranty expressed
 1501.14 + * or implied. Any use is at your own risk.
 1501.15 + *
 1501.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1501.17 + * without fee, provided the above notices are retained on all copies.
 1501.18 + * Permission to modify the code and to distribute modified code is granted,
 1501.19 + * provided the above notices are retained, and a notice that the code was
 1501.20 + * modified is included with the above copyright notice.
 1501.21 + *
 1501.22 + */ 
 1501.23 +// WARNING: This is an internal header file, included by other C++
 1501.24 +// standard library headers.  You should not attempt to use this header
 1501.25 +// file directly.
 1501.26 +
 1501.27 +
 1501.28 +#ifndef _STLP_INTERNAL_TIME_FACETS_H
 1501.29 +#define _STLP_INTERNAL_TIME_FACETS_H
 1501.30 +
 1501.31 +#ifndef _STLP_CTIME
 1501.32 +# include <ctime>                // Needed (for struct tm) by time facets
 1501.33 +#endif
 1501.34 +
 1501.35 +#include <stl/c_locale.h>
 1501.36 +#include <stl/_ios_base.h>
 1501.37 +
 1501.38 +_STLP_BEGIN_NAMESPACE
 1501.39 +
 1501.40 +// Template functions used by time_get
 1501.41 +
 1501.42 +// Matching input against a list of names
 1501.43 +
 1501.44 +// Alphabetic input of the names of months and the names
 1501.45 +// of weekdays requires matching input against a list of names.
 1501.46 +// We use a simple generic algorithm to accomplish this.  This
 1501.47 +// algorithm is not very efficient, especially for longer lists
 1501.48 +// of names, but it probably does not matter for the initial
 1501.49 +// implementation and it may never matter, since we do not expect
 1501.50 +// this kind of input to be used very often.  The algorithm
 1501.51 +// could be improved fairly simply by creating a new list of
 1501.52 +// names still in the running at each iteration.  A more sophisticated
 1501.53 +// approach would be to build a trie to do the matching.
 1501.54 +//
 1501.55 +// We compare each character of the input to the corresponding
 1501.56 +// character of each name on the list that has not been eliminated,
 1501.57 +// either because every character in the name has already been
 1501.58 +// matched, or because some character has not been matched.  We
 1501.59 +// continue only as long as there are some names that have not been
 1501.60 +// eliminated.
 1501.61 +
 1501.62 +// We do not really need a random access iterator (a forward iterator
 1501.63 +// would do), but the extra generality makes the notation clumsier,
 1501.64 +// and we don't really need it.
 1501.65 +
 1501.66 +// We can recognize a failed match by the fact that the second
 1501.67 +// component of the return value will be __name_end.
 1501.68 +
 1501.69 +#define _MAXNAMES        64
 1501.70 +#define _MAX_NAME_LENGTH 64
 1501.71 +
 1501.72 +// Both time_get and time_put need a structure of type _Time_Info
 1501.73 +// to provide names and abbreviated names for months and days,
 1501.74 +// as well as the am/pm designator.  The month and weekday tables
 1501.75 +// have the all the abbreviated names before all the full names.
 1501.76 +// The _Time_Info tables are initialized using the non-template
 1501.77 +// function _Init_timeinfo, which has two overloadings:  one
 1501.78 +// with a single reference parameter for the table to be initialized,
 1501.79 +// and one with a second _Locale_time * parameter.  The first form
 1501.80 +// is called by the default constructor and the second by a special
 1501.81 +// constructor invoked from the _byname subclass constructor to
 1501.82 +// construct the base class.
 1501.83 +
 1501.84 +class _STLP_CLASS_DECLSPEC _Time_Info {
 1501.85 +public:
 1501.86 +  string _M_dayname[14];
 1501.87 +  string _M_monthname[24];
 1501.88 +  string _M_am_pm[2];
 1501.89 +  string _M_time_format;
 1501.90 +  string _M_date_format;
 1501.91 +  string _M_date_time_format;
 1501.92 +  string _M_long_date_format;
 1501.93 +  string _M_long_date_time_format;
 1501.94 +};
 1501.95 +
 1501.96 +_STLP_DECLSPEC void _STLP_CALL _Init_timeinfo(_Time_Info&);
 1501.97 +_STLP_DECLSPEC void _STLP_CALL _Init_timeinfo(_Time_Info&, _Locale_time*);
 1501.98 +
 1501.99 +class _STLP_CLASS_DECLSPEC time_base {
1501.100 +public:
1501.101 +  enum dateorder {no_order, dmy, mdy, ymd, ydm};
1501.102 +};
1501.103 +
1501.104 +
1501.105 +template <class _Ch, __DFL_TMPL_PARAM( _InIt , istreambuf_iterator<_Ch>) >
1501.106 +class time_get : public locale::facet, public time_base 
1501.107 +{
1501.108 +  friend class _Locale;
1501.109 +
1501.110 +public:
1501.111 +  typedef _Ch   char_type;
1501.112 +  typedef _InIt iter_type;
1501.113 +
1501.114 +  explicit  time_get(size_t __refs = 0)   : _BaseFacet(__refs) {
1501.115 +      _Init_timeinfo(_M_timeinfo);
1501.116 +  }
1501.117 +  dateorder date_order() const { return do_date_order(); }
1501.118 +  iter_type get_time(iter_type __s, iter_type  __end, ios_base&  __str,
1501.119 +                     ios_base::iostate&  __err, tm* __t) const
1501.120 +    { return do_get_time(__s,  __end,  __str,  __err, __t); }
1501.121 +  iter_type get_date(iter_type __s, iter_type  __end, ios_base&  __str,
1501.122 +                     ios_base::iostate&  __err, tm* __t) const
1501.123 +    { return do_get_date(__s,  __end,  __str,  __err, __t); }
1501.124 +  iter_type get_weekday(iter_type __s, iter_type  __end, ios_base&  __str,
1501.125 +                        ios_base::iostate&  __err, tm* __t) const
1501.126 +    { return do_get_weekday(__s,  __end,  __str,  __err, __t); }
1501.127 +  iter_type get_monthname(iter_type __s, iter_type  __end, ios_base&  __str,
1501.128 +                          ios_base::iostate&  __err, tm* __t) const
1501.129 +    { return do_get_monthname(__s,  __end,  __str,  __err, __t); }
1501.130 +  iter_type get_year(iter_type __s, iter_type  __end, ios_base&  __str,
1501.131 +                     ios_base::iostate&  __err, tm* __t) const
1501.132 +    { return do_get_year(__s,  __end,  __str,  __err, __t); }
1501.133 +
1501.134 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1501.135 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1501.136 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >*);
1501.137 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const wchar_t**);
1501.138 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >*);
1501.139 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(const char**);
1501.140 +#else
1501.141 + 	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1501.142 +#endif
1501.143 +
1501.144 +protected:
1501.145 +  _Time_Info _M_timeinfo;
1501.146 +
1501.147 +  time_get(_Locale_time *, size_t __refs) : _BaseFacet(__refs) {}
1501.148 +
1501.149 +  ~time_get() {}
1501.150 +
1501.151 +  virtual dateorder do_date_order() const {return no_order;}
1501.152 +    
1501.153 +  virtual iter_type do_get_time(iter_type __s, iter_type  __end,
1501.154 +                                ios_base&, ios_base::iostate&  __err,
1501.155 +                                tm* __t) const;
1501.156 +    
1501.157 +  virtual iter_type do_get_date(iter_type __s, iter_type  __end,
1501.158 +                                ios_base&, ios_base::iostate& __err,
1501.159 +                                tm* __t) const;
1501.160 +
1501.161 +  virtual iter_type do_get_weekday(iter_type __s, iter_type  __end,
1501.162 +                                   ios_base&,
1501.163 +                                   ios_base::iostate& __err,
1501.164 +                                   tm* __t) const;
1501.165 +  virtual iter_type do_get_monthname(iter_type __s, iter_type  __end,
1501.166 +                                     ios_base&,
1501.167 +                                     ios_base::iostate& __err,
1501.168 +                                     tm* __t) const;
1501.169 +  
1501.170 +  virtual iter_type do_get_year(iter_type __s, iter_type  __end,
1501.171 +                                ios_base&, ios_base::iostate& __err,
1501.172 +                                tm* __t) const;
1501.173 +};
1501.174 +
1501.175 +time_base::dateorder _STLP_CALL
1501.176 +_STLP_DECLSPEC __get_date_order(_Locale_time*);
1501.177 +_Locale_time* _STLP_CALL __acquire_time(const char* __name);
1501.178 +void          _STLP_CALL __release_time(_Locale_time* __time);
1501.179 +
1501.180 +template <class _Ch, __DFL_TMPL_PARAM( _InIt , istreambuf_iterator<_Ch>) >
1501.181 +class time_get_byname : public time_get<_Ch, _InIt> 
1501.182 +{
1501.183 +public:
1501.184 +  typedef  time_base::dateorder dateorder;
1501.185 +  typedef _InIt                 iter_type;
1501.186 +
1501.187 +  explicit   time_get_byname(const char* __name, size_t __refs = 0)
1501.188 +    : time_get<_Ch, _InIt>((_Locale_time*) 0, __refs),
1501.189 +      _M_time(__acquire_time(__name))
1501.190 +    { _Init_timeinfo(this->_M_timeinfo, this->_M_time); }
1501.191 +
1501.192 +protected:
1501.193 +  ~time_get_byname() { __release_time(_M_time); }
1501.194 +  dateorder do_date_order() const { return __get_date_order(_M_time); }
1501.195 +private:
1501.196 +  _Locale_time* _M_time;
1501.197 +};
1501.198 +
1501.199 +// time_put facet
1501.200 +
1501.201 +// For the formats 'x, 'X', and 'c', do_put calls the first form of
1501.202 +// put with the pattern obtained from _M_timeinfo._M_date_format or
1501.203 +// _M_timeinfo._M_time_format.
1501.204 +
1501.205 +// Helper function:  __  takes a single-character
1501.206 +// format.  As indicated by the foregoing remark, this will never be
1501.207 +// 'x', 'X', or 'c'.
1501.208 +
1501.209 +_STLP_DECLSPEC char * _STLP_CALL
1501.210 +__write_formatted_time(char * __buf, char __format, char __modifier,
1501.211 +                       const _Time_Info& __table, const tm* __t);
1501.212 +
1501.213 +template <class _OuIt>
1501.214 +inline _OuIt _STLP_CALL __put_time(char * __first, char * __last, _OuIt __out,
1501.215 +                                   const ios_base& /* __loc */, char) {
1501.216 +    return copy(__first, __last, __out);
1501.217 +}
1501.218 +
1501.219 +# ifndef _STLP_NO_WCHAR_T
1501.220 +template <class _OuIt>
1501.221 +_OuIt _STLP_CALL __put_time(char * __first, char * __last, _OuIt __out,
1501.222 +                            const ios_base& __s, wchar_t);
1501.223 +# endif
1501.224 +
1501.225 +template<class _Ch, __DFL_TMPL_PARAM( _OutputIter , ostreambuf_iterator<_Ch> ) >
1501.226 +class time_put : public locale::facet, public time_base
1501.227 +{
1501.228 +  friend class _Locale;
1501.229 +public:
1501.230 +  typedef _Ch      char_type;
1501.231 +  typedef _OutputIter iter_type;
1501.232 +
1501.233 +  explicit   time_put(size_t __refs = 0) : _BaseFacet(__refs) {
1501.234 +    _Init_timeinfo(_M_timeinfo);
1501.235 +  }
1501.236 +
1501.237 +  _OutputIter put(iter_type __s, ios_base& __f, _Ch __fill,
1501.238 +		  const tm* __tmb,
1501.239 +		  const _Ch* __pat, const _Ch* __pat_end) const;
1501.240 +  
1501.241 +  _OutputIter put(iter_type __s, ios_base& __f, _Ch  __fill,
1501.242 +		  const tm* __tmb, char __format, char __modifier = 0) const { 
1501.243 +    return do_put(__s, __f,  __fill, __tmb, __format, __modifier); 
1501.244 +  }
1501.245 +  
1501.246 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1501.247 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId();
1501.248 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> >*);
1501.249 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(wchar_t**);
1501.250 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> >*);
1501.251 +    _STLP_STATIC_MEMBER_DECLSPEC static locale::id& GetFacetLocaleId(char**);
1501.252 +#else
1501.253 +   	_STLP_STATIC_MEMBER_DECLSPEC static locale::id id;
1501.254 +#endif
1501.255 +  
1501.256 +protected:
1501.257 +  _Time_Info _M_timeinfo;
1501.258 +
1501.259 +  time_put(_Locale_time* /*__time*/, size_t __refs) : _BaseFacet(__refs) {
1501.260 +    //    _Init_timeinfo(_M_timeinfo, __time);
1501.261 +  }
1501.262 +
1501.263 +  ~time_put() {}
1501.264 +  virtual iter_type do_put(iter_type __s, ios_base& __f,
1501.265 +                           char_type  /* __fill */, const tm* __tmb,
1501.266 +                           char __format, char /* __modifier */) const;
1501.267 +};
1501.268 +
1501.269 +template <class _Ch, __DFL_TMPL_PARAM( _InIt , ostreambuf_iterator<_Ch> ) >
1501.270 +class time_put_byname : public time_put<_Ch, _InIt> 
1501.271 +{
1501.272 +  friend class _Locale;
1501.273 +public:
1501.274 +  typedef time_base::dateorder dateorder;
1501.275 +  typedef _InIt iter_type;
1501.276 +  typedef _Ch   char_type;
1501.277 +
1501.278 +  explicit    time_put_byname(const char * __name, size_t __refs = 0)
1501.279 +    : time_put<_Ch, _InIt>((_Locale_time*) 0, __refs),
1501.280 +    _M_time(__acquire_time(__name))
1501.281 +  { _Init_timeinfo(this->_M_timeinfo, this->_M_time); }
1501.282 +  
1501.283 +protected:
1501.284 +  ~time_put_byname() { __release_time(_M_time); }
1501.285 +
1501.286 +private:
1501.287 +  _Locale_time* _M_time;
1501.288 +};
1501.289 +
1501.290 +# ifdef _STLP_USE_TEMPLATE_EXPORT
1501.291 +_STLP_EXPORT_TEMPLATE_CLASS time_get<char, istreambuf_iterator<char, char_traits<char> > >;
1501.292 +_STLP_EXPORT_TEMPLATE_CLASS time_put<char, ostreambuf_iterator<char, char_traits<char> > >;
1501.293 +// _STLP_EXPORT_TEMPLATE_CLASS time_get<char, const char*>;
1501.294 +// _STLP_EXPORT_TEMPLATE_CLASS time_put<char, char*>;
1501.295 +#  ifndef _STLP_NO_WCHAR_T
1501.296 +_STLP_EXPORT_TEMPLATE_CLASS time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1501.297 +_STLP_EXPORT_TEMPLATE_CLASS time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >;
1501.298 +// _STLP_EXPORT_TEMPLATE_CLASS time_get<wchar_t, const wchar_t*>;
1501.299 +// _STLP_EXPORT_TEMPLATE_CLASS time_put<wchar_t, wchar_t*>;
1501.300 +#  endif /* INSTANTIATE_WIDE_STREAMS */
1501.301 +
1501.302 +# endif
1501.303 +
1501.304 +# if defined (__BORLANDC__) && defined (_RTLDLL)
1501.305 +inline void _Stl_loc_init_time_facets() {
1501.306 +  
1501.307 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1501.308 +  time_get<char, istreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 16;
1501.309 +  time_get<char, const char*>::GetFacetLocaleId()._M_index         = 17;
1501.310 +  time_put<char, ostreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 18;
1501.311 +  time_put<char, char*>::GetFacetLocaleId()._M_index               = 19;
1501.312 +#else
1501.313 +  time_get<char, istreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 16;
1501.314 +  time_get<char, const char*>::id._M_index         = 17;
1501.315 +  time_put<char, ostreambuf_iterator<char, char_traits<char> > >::GetFacetLocaleId()._M_index                      = 18;
1501.316 +  time_put<char, char*>::id._M_index               = 19;
1501.317 +#endif
1501.318 +
1501.319 +# ifndef _STLP_NO_WCHAR_T
1501.320 +#if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
1501.321 +  time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::GetFacetLocaleId()._M_index                   = 35;
1501.322 +  time_get<wchar_t, const wchar_t*>::GetFacetLocaleId()._M_index   = 36;
1501.323 +  time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::GetFacetLocaleId()._M_index                   = 37;
1501.324 +  time_put<wchar_t, wchar_t*>::GetFacetLocaleId()._M_index         = 38;
1501.325 +#else
1501.326 +  time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                   = 35;
1501.327 +  time_get<wchar_t, const wchar_t*>::id._M_index   = 36;
1501.328 +  time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id._M_index                   = 37;
1501.329 +  time_put<wchar_t, wchar_t*>::id._M_index         = 38;
1501.330 +#endif //__SYMBIAN32__
1501.331 +# endif //!_STLP_NO_WCHAR_T
1501.332 +  
1501.333 +}
1501.334 +# endif
1501.335 +
1501.336 +_STLP_END_NAMESPACE
1501.337 +
1501.338 +#if defined (_STLP_EXPOSE_STREAM_IMPLEMENTATION) && !defined (_STLP_LINK_TIME_INSTANTIATION)
1501.339 +#  include <stl/_time_facets.c>
1501.340 +# endif
1501.341 +
1501.342 +#endif /* _STLP_INTERNAL_TIME_FACETS_H */
1501.343 +
1501.344 +// Local Variables:
1501.345 +// mode:C++
1501.346 +// End:
1501.347 +
1501.348 +
  1502.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1502.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_tree.c	Wed Mar 31 12:27:01 2010 +0100
  1502.3 @@ -0,0 +1,715 @@
  1502.4 +/*
  1502.5 + *
  1502.6 + *
  1502.7 + * Copyright (c) 1994
  1502.8 + * Hewlett-Packard Company
  1502.9 + *
 1502.10 + * Copyright (c) 1996,1997
 1502.11 + * Silicon Graphics Computer Systems, Inc.
 1502.12 + *
 1502.13 + * Copyright (c) 1997
 1502.14 + * Moscow Center for SPARC Technology
 1502.15 + *
 1502.16 + * Copyright (c) 1999 
 1502.17 + * Boris Fomitchev
 1502.18 + *
 1502.19 + * This material is provided "as is", with absolutely no warranty expressed
 1502.20 + * or implied. Any use is at your own risk.
 1502.21 + *
 1502.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1502.23 + * without fee, provided the above notices are retained on all copies.
 1502.24 + * Permission to modify the code and to distribute modified code is granted,
 1502.25 + * provided the above notices are retained, and a notice that the code was
 1502.26 + * modified is included with the above copyright notice.
 1502.27 + *
 1502.28 + * Modified CRP 7/10/00 for improved conformance / efficiency on insert_unique /
 1502.29 + * insert_equal with valid hint -- efficiency is improved all around, and it is
 1502.30 + * should now be standard conforming for complexity on insert point immediately
 1502.31 + * after hint (amortized constant time).
 1502.32 + *
 1502.33 + */
 1502.34 +#ifndef _STLP_TREE_C
 1502.35 +#define _STLP_TREE_C
 1502.36 +
 1502.37 +#ifndef _STLP_INTERNAL_TREE_H
 1502.38 +# include <stl/_tree.h>
 1502.39 +#endif
 1502.40 +
 1502.41 +// fbp: these defines are for outline methods definitions.
 1502.42 +// needed for definitions to be portable. Should not be used in method bodies.
 1502.43 +# if defined  ( _STLP_NESTED_TYPE_PARAM_BUG )
 1502.44 +#  define __iterator__        _Rb_tree_iterator<_Value, _Nonconst_traits<_Value> > 
 1502.45 +#  define __size_type__       size_t
 1502.46 +#  define iterator __iterator__
 1502.47 +# else
 1502.48 +#  define __iterator__  _STLP_TYPENAME_ON_RETURN_TYPE _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>::iterator
 1502.49 +#  define __size_type__  _STLP_TYPENAME_ON_RETURN_TYPE _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>::size_type
 1502.50 +# endif
 1502.51 +
 1502.52 +#if defined ( _STLP_DEBUG)
 1502.53 +#  define _Rb_tree __WORKAROUND_DBG_RENAME(Rb_tree)
 1502.54 +#endif
 1502.55 +
 1502.56 +_STLP_BEGIN_NAMESPACE
 1502.57 +
 1502.58 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
 1502.59 +
 1502.60 +template <class _Dummy> void _STLP_CALL
 1502.61 +_Rb_global<_Dummy>::_Rotate_left(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
 1502.62 +{
 1502.63 +  _Rb_tree_node_base* __y = __x->_M_right;
 1502.64 +  __x->_M_right = __y->_M_left;
 1502.65 +  if (__y->_M_left !=0)
 1502.66 +    __y->_M_left->_M_parent = __x;
 1502.67 +  __y->_M_parent = __x->_M_parent;
 1502.68 +
 1502.69 +  if (__x == __root)
 1502.70 +    __root = __y;
 1502.71 +  else if (__x == __x->_M_parent->_M_left)
 1502.72 +    __x->_M_parent->_M_left = __y;
 1502.73 +  else
 1502.74 +    __x->_M_parent->_M_right = __y;
 1502.75 +  __y->_M_left = __x;
 1502.76 +  __x->_M_parent = __y;
 1502.77 +}
 1502.78 +
 1502.79 +template <class _Dummy> void _STLP_CALL 
 1502.80 +_Rb_global<_Dummy>::_Rotate_right(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root)
 1502.81 +{
 1502.82 +  _Rb_tree_node_base* __y = __x->_M_left;
 1502.83 +  __x->_M_left = __y->_M_right;
 1502.84 +  if (__y->_M_right != 0)
 1502.85 +    __y->_M_right->_M_parent = __x;
 1502.86 +  __y->_M_parent = __x->_M_parent;
 1502.87 +
 1502.88 +  if (__x == __root)
 1502.89 +    __root = __y;
 1502.90 +  else if (__x == __x->_M_parent->_M_right)
 1502.91 +    __x->_M_parent->_M_right = __y;
 1502.92 +  else
 1502.93 +    __x->_M_parent->_M_left = __y;
 1502.94 +  __y->_M_right = __x;
 1502.95 +  __x->_M_parent = __y;
 1502.96 +}
 1502.97 +
 1502.98 +template <class _Dummy> void _STLP_CALL
 1502.99 +_Rb_global<_Dummy>::_Rebalance(_Rb_tree_node_base* __x, 
1502.100 +			       _Rb_tree_node_base*& __root)
1502.101 +{
1502.102 +  __x->_M_color = _S_rb_tree_red;
1502.103 +  while (__x != __root && __x->_M_parent->_M_color == _S_rb_tree_red) {
1502.104 +    if (__x->_M_parent == __x->_M_parent->_M_parent->_M_left) {
1502.105 +      _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_right;
1502.106 +      if (__y && __y->_M_color == _S_rb_tree_red) {
1502.107 +        __x->_M_parent->_M_color = _S_rb_tree_black;
1502.108 +        __y->_M_color = _S_rb_tree_black;
1502.109 +        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1502.110 +        __x = __x->_M_parent->_M_parent;
1502.111 +      }
1502.112 +      else {
1502.113 +        if (__x == __x->_M_parent->_M_right) {
1502.114 +          __x = __x->_M_parent;
1502.115 +          _Rotate_left(__x, __root);
1502.116 +        }
1502.117 +        __x->_M_parent->_M_color = _S_rb_tree_black;
1502.118 +        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1502.119 +        _Rotate_right(__x->_M_parent->_M_parent, __root);
1502.120 +      }
1502.121 +    }
1502.122 +    else {
1502.123 +      _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_left;
1502.124 +      if (__y && __y->_M_color == _S_rb_tree_red) {
1502.125 +        __x->_M_parent->_M_color = _S_rb_tree_black;
1502.126 +        __y->_M_color = _S_rb_tree_black;
1502.127 +        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1502.128 +        __x = __x->_M_parent->_M_parent;
1502.129 +      }
1502.130 +      else {
1502.131 +        if (__x == __x->_M_parent->_M_left) {
1502.132 +          __x = __x->_M_parent;
1502.133 +          _Rotate_right(__x, __root);
1502.134 +        }
1502.135 +        __x->_M_parent->_M_color = _S_rb_tree_black;
1502.136 +        __x->_M_parent->_M_parent->_M_color = _S_rb_tree_red;
1502.137 +        _Rotate_left(__x->_M_parent->_M_parent, __root);
1502.138 +      }
1502.139 +    }
1502.140 +  }
1502.141 +  __root->_M_color = _S_rb_tree_black;
1502.142 +}
1502.143 +
1502.144 +template <class _Dummy> _Rb_tree_node_base* _STLP_CALL
1502.145 +_Rb_global<_Dummy>::_Rebalance_for_erase(_Rb_tree_node_base* __z,
1502.146 +					 _Rb_tree_node_base*& __root,
1502.147 +					 _Rb_tree_node_base*& __leftmost,
1502.148 +					 _Rb_tree_node_base*& __rightmost)
1502.149 +{
1502.150 +  _Rb_tree_node_base* __y = __z;
1502.151 +  _Rb_tree_node_base* __x = 0;
1502.152 +  _Rb_tree_node_base* __x_parent = 0;
1502.153 +  if (__y->_M_left == 0)     // __z has at most one non-null child. y == z.
1502.154 +    __x = __y->_M_right;     // __x might be null.
1502.155 +  else
1502.156 +    if (__y->_M_right == 0)  // __z has exactly one non-null child. y == z.
1502.157 +      __x = __y->_M_left;    // __x is not null.
1502.158 +    else {                   // __z has two non-null children.  Set __y to
1502.159 +      __y = __y->_M_right;   //   __z's successor.  __x might be null.
1502.160 +      while (__y->_M_left != 0)
1502.161 +        __y = __y->_M_left;
1502.162 +      __x = __y->_M_right;
1502.163 +    }
1502.164 +  if (__y != __z) {          // relink y in place of z.  y is z's successor
1502.165 +    __z->_M_left->_M_parent = __y; 
1502.166 +    __y->_M_left = __z->_M_left;
1502.167 +    if (__y != __z->_M_right) {
1502.168 +      __x_parent = __y->_M_parent;
1502.169 +      if (__x) __x->_M_parent = __y->_M_parent;
1502.170 +      __y->_M_parent->_M_left = __x;      // __y must be a child of _M_left
1502.171 +      __y->_M_right = __z->_M_right;
1502.172 +      __z->_M_right->_M_parent = __y;
1502.173 +    }
1502.174 +    else
1502.175 +      __x_parent = __y;  
1502.176 +    if (__root == __z)
1502.177 +      __root = __y;
1502.178 +    else if (__z->_M_parent->_M_left == __z)
1502.179 +      __z->_M_parent->_M_left = __y;
1502.180 +    else 
1502.181 +      __z->_M_parent->_M_right = __y;
1502.182 +    __y->_M_parent = __z->_M_parent;
1502.183 +    _STLP_STD::swap(__y->_M_color, __z->_M_color);
1502.184 +    __y = __z;
1502.185 +    // __y now points to node to be actually deleted
1502.186 +  }
1502.187 +  else {                        // __y == __z
1502.188 +    __x_parent = __y->_M_parent;
1502.189 +    if (__x) __x->_M_parent = __y->_M_parent;   
1502.190 +    if (__root == __z)
1502.191 +      __root = __x;
1502.192 +    else 
1502.193 +      if (__z->_M_parent->_M_left == __z)
1502.194 +        __z->_M_parent->_M_left = __x;
1502.195 +      else
1502.196 +        __z->_M_parent->_M_right = __x;
1502.197 +    if (__leftmost == __z) 
1502.198 +      if (__z->_M_right == 0)        // __z->_M_left must be null also
1502.199 +        __leftmost = __z->_M_parent;
1502.200 +    // makes __leftmost == _M_header if __z == __root
1502.201 +      else
1502.202 +        __leftmost = _Rb_tree_node_base::_S_minimum(__x);
1502.203 +    if (__rightmost == __z)  
1502.204 +      if (__z->_M_left == 0)         // __z->_M_right must be null also
1502.205 +        __rightmost = __z->_M_parent;  
1502.206 +    // makes __rightmost == _M_header if __z == __root
1502.207 +      else                      // __x == __z->_M_left
1502.208 +        __rightmost = _Rb_tree_node_base::_S_maximum(__x);
1502.209 +  }
1502.210 +  if (__y->_M_color != _S_rb_tree_red) { 
1502.211 +    while (__x != __root && (__x == 0 || __x->_M_color == _S_rb_tree_black))
1502.212 +      if (__x == __x_parent->_M_left) {
1502.213 +        _Rb_tree_node_base* __w = __x_parent->_M_right;
1502.214 +        if (__w->_M_color == _S_rb_tree_red) {
1502.215 +          __w->_M_color = _S_rb_tree_black;
1502.216 +          __x_parent->_M_color = _S_rb_tree_red;
1502.217 +          _Rotate_left(__x_parent, __root);
1502.218 +          __w = __x_parent->_M_right;
1502.219 +        }
1502.220 +        if ((__w->_M_left == 0 || 
1502.221 +             __w->_M_left->_M_color == _S_rb_tree_black) && (__w->_M_right == 0 || 
1502.222 +             __w->_M_right->_M_color == _S_rb_tree_black)) {
1502.223 +          __w->_M_color = _S_rb_tree_red;
1502.224 +          __x = __x_parent;
1502.225 +          __x_parent = __x_parent->_M_parent;
1502.226 +        } else {
1502.227 +          if (__w->_M_right == 0 || 
1502.228 +              __w->_M_right->_M_color == _S_rb_tree_black) {
1502.229 +            if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black;
1502.230 +            __w->_M_color = _S_rb_tree_red;
1502.231 +            _Rotate_right(__w, __root);
1502.232 +            __w = __x_parent->_M_right;
1502.233 +          }
1502.234 +          __w->_M_color = __x_parent->_M_color;
1502.235 +          __x_parent->_M_color = _S_rb_tree_black;
1502.236 +          if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black;
1502.237 +          _Rotate_left(__x_parent, __root);
1502.238 +          break;
1502.239 +        }
1502.240 +      } else {                  // same as above, with _M_right <-> _M_left.
1502.241 +        _Rb_tree_node_base* __w = __x_parent->_M_left;
1502.242 +        if (__w->_M_color == _S_rb_tree_red) {
1502.243 +          __w->_M_color = _S_rb_tree_black;
1502.244 +          __x_parent->_M_color = _S_rb_tree_red;
1502.245 +          _Rotate_right(__x_parent, __root);
1502.246 +          __w = __x_parent->_M_left;
1502.247 +        }
1502.248 +        if ((__w->_M_right == 0 || 
1502.249 +             __w->_M_right->_M_color == _S_rb_tree_black) && (__w->_M_left == 0 || 
1502.250 +             __w->_M_left->_M_color == _S_rb_tree_black)) {
1502.251 +          __w->_M_color = _S_rb_tree_red;
1502.252 +          __x = __x_parent;
1502.253 +          __x_parent = __x_parent->_M_parent;
1502.254 +        } else {
1502.255 +          if (__w->_M_left == 0 || 
1502.256 +              __w->_M_left->_M_color == _S_rb_tree_black) {
1502.257 +            if (__w->_M_right) __w->_M_right->_M_color = _S_rb_tree_black;
1502.258 +            __w->_M_color = _S_rb_tree_red;
1502.259 +            _Rotate_left(__w, __root);
1502.260 +            __w = __x_parent->_M_left;
1502.261 +          }
1502.262 +          __w->_M_color = __x_parent->_M_color;
1502.263 +          __x_parent->_M_color = _S_rb_tree_black;
1502.264 +          if (__w->_M_left) __w->_M_left->_M_color = _S_rb_tree_black;
1502.265 +          _Rotate_right(__x_parent, __root);
1502.266 +          break;
1502.267 +        }
1502.268 +      }
1502.269 +    if (__x) __x->_M_color = _S_rb_tree_black;
1502.270 +  }
1502.271 +  return __y;
1502.272 +}
1502.273 +
1502.274 +template <class _Dummy> _Rb_tree_node_base* _STLP_CALL
1502.275 +_Rb_global<_Dummy>::_M_decrement(_Rb_tree_node_base* _M_node)
1502.276 +{
1502.277 +  if (_M_node->_M_color == _S_rb_tree_red && _M_node->_M_parent->_M_parent == _M_node)
1502.278 +    _M_node = _M_node->_M_right;
1502.279 +  else if (_M_node->_M_left != 0) {
1502.280 +    _Base_ptr __y = _M_node->_M_left;
1502.281 +    while (__y->_M_right != 0)
1502.282 +      __y = __y->_M_right;
1502.283 +    _M_node = __y;
1502.284 +  }
1502.285 +  else {
1502.286 +    _Base_ptr __y = _M_node->_M_parent;
1502.287 +    while (_M_node == __y->_M_left) {
1502.288 +      _M_node = __y;
1502.289 +      __y = __y->_M_parent;
1502.290 +    }
1502.291 +    _M_node = __y;
1502.292 +  }
1502.293 +  return _M_node;
1502.294 +}
1502.295 +
1502.296 +template <class _Dummy> _Rb_tree_node_base* _STLP_CALL
1502.297 +_Rb_global<_Dummy>::_M_increment(_Rb_tree_node_base* _M_node)
1502.298 +{
1502.299 +  if (_M_node->_M_right != 0) {
1502.300 +    _M_node = _M_node->_M_right;
1502.301 +    while (_M_node->_M_left != 0)
1502.302 +      _M_node = _M_node->_M_left;
1502.303 +  }
1502.304 +  else {
1502.305 +    _Base_ptr __y = _M_node->_M_parent;
1502.306 +    while (_M_node == __y->_M_right) {
1502.307 +      _M_node = __y;
1502.308 +      __y = __y->_M_parent;
1502.309 +    }
1502.310 +    if (_M_node->_M_right != __y)
1502.311 +      _M_node = __y;
1502.312 +  }
1502.313 +  return _M_node;
1502.314 +}
1502.315 +
1502.316 +#endif /* defined (__BUILDING_STLPORT) || ! defined (_STLP_OWN_IOSTREAMS) */
1502.317 +
1502.318 +
1502.319 +template <class _Key, class _Value, class _KeyOfValue, 
1502.320 +          class _Compare, class _Alloc> _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::operator=(const _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>& __x)
1502.321 +{
1502.322 +  if (this != &__x) {
1502.323 +                                // Note that _Key may be a constant type.
1502.324 +    clear();
1502.325 +    _M_node_count = 0;
1502.326 +    _M_key_compare = __x._M_key_compare;        
1502.327 +    if (__x._M_root() == 0) {
1502.328 +      _M_root() = 0;
1502.329 +      _M_leftmost() = this->_M_header._M_data;
1502.330 +      _M_rightmost() = this->_M_header._M_data;
1502.331 +    }
1502.332 +    else {
1502.333 +      _M_root() = _M_copy(__x._M_root(), this->_M_header._M_data);
1502.334 +      _M_leftmost() = _S_minimum(_M_root());
1502.335 +      _M_rightmost() = _S_maximum(_M_root());
1502.336 +      _M_node_count = __x._M_node_count;
1502.337 +    }
1502.338 +  }
1502.339 +  return *this;
1502.340 +}
1502.341 +
1502.342 +// CRP 7/10/00 inserted argument __w_, which is another hint (meant to
1502.343 +// act like __x_ and ignore a portion of the if conditions -- specify
1502.344 +// __w_ != 0 to bypass comparison as false or __x_ != 0 to bypass
1502.345 +// comparison as true)
1502.346 +template <class _Key, class _Value, class _KeyOfValue, 
1502.347 +          class _Compare, class _Alloc> __iterator__ 
1502.348 +_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::_M_insert(_Rb_tree_node_base* __x_, _Rb_tree_node_base* __y_, const _Value& __v,
1502.349 +  _Rb_tree_node_base* __w_)
1502.350 +{
1502.351 +  _Link_type __w = (_Link_type) __w_;
1502.352 +  _Link_type __x = (_Link_type) __x_;
1502.353 +  _Link_type __y = (_Link_type) __y_;
1502.354 +  _Link_type __z;
1502.355 +
1502.356 +  if ( __y == this->_M_header._M_data ||
1502.357 +       ( __w == 0 && // If w != 0, the remainder fails to false
1502.358 +         ( __x != 0 ||     // If x != 0, the remainder succeeds to true
1502.359 +           _M_key_compare( _KeyOfValue()(__v), _S_key(__y) ) )
1502.360 +	 )
1502.361 +       ) {
1502.362 +    
1502.363 +    __z = _M_create_node(__v);
1502.364 +    _S_left(__y) = __z;               // also makes _M_leftmost() = __z 
1502.365 +                                      //    when __y == _M_header
1502.366 +    if (__y == this->_M_header._M_data) {
1502.367 +      _M_root() = __z;
1502.368 +      _M_rightmost() = __z;
1502.369 +    }
1502.370 +    else if (__y == _M_leftmost())
1502.371 +      _M_leftmost() = __z;   // maintain _M_leftmost() pointing to min node
1502.372 +  }
1502.373 +  else {
1502.374 +    __z = _M_create_node(__v);
1502.375 +    _S_right(__y) = __z;
1502.376 +    if (__y == _M_rightmost())
1502.377 +      _M_rightmost() = __z;  // maintain _M_rightmost() pointing to max node
1502.378 +  }
1502.379 +  _S_parent(__z) = __y;
1502.380 +  _S_left(__z) = 0;
1502.381 +  _S_right(__z) = 0;
1502.382 +  _Rb_global_inst::_Rebalance(__z, this->_M_header._M_data->_M_parent);
1502.383 +  ++_M_node_count;
1502.384 +  return iterator(__z);
1502.385 +}
1502.386 +
1502.387 +template <class _Key, class _Value, class _KeyOfValue, 
1502.388 +          class _Compare, class _Alloc> __iterator__
1502.389 +_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::insert_equal(const _Value& __v)
1502.390 +{
1502.391 +  _Link_type __y = this->_M_header._M_data;
1502.392 +  _Link_type __x = _M_root();
1502.393 +  while (__x != 0) {
1502.394 +    __y = __x;
1502.395 +    __x = _M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ? 
1502.396 +            _S_left(__x) : _S_right(__x);
1502.397 +  }
1502.398 +  return _M_insert(__x, __y, __v);
1502.399 +}
1502.400 +
1502.401 +
1502.402 +template <class _Key, class _Value, class _KeyOfValue, 
1502.403 +          class _Compare, class _Alloc> pair< _Rb_tree_iterator<_Value, _Nonconst_traits<_Value> >, bool> _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::insert_unique(const _Value& __v)
1502.404 +{
1502.405 +  _Link_type __y = this->_M_header._M_data;
1502.406 +  _Link_type __x = _M_root();
1502.407 +  bool __comp = true;
1502.408 +  while (__x != 0) {
1502.409 +    __y = __x;
1502.410 +    __comp = _M_key_compare(_KeyOfValue()(__v), _S_key(__x));
1502.411 +    __x = __comp ? _S_left(__x) : _S_right(__x);
1502.412 +  }
1502.413 +  iterator __j = iterator(__y);   
1502.414 +  if (__comp)
1502.415 +    if (__j == begin())     
1502.416 +      return pair<iterator,bool>(_M_insert(/* __x*/ __y, __y, __v), true);
1502.417 +    else
1502.418 +      --__j;
1502.419 +  if (_M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
1502.420 +    return pair<iterator,bool>(_M_insert(__x, __y, __v), true);
1502.421 +  return pair<iterator,bool>(__j, false);
1502.422 +}
1502.423 +
1502.424 +// Modifications CRP 7/10/00 as noted to improve conformance and
1502.425 +// efficiency.
1502.426 +template <class _Key, class _Value, class _KeyOfValue, 
1502.427 +          class _Compare, class _Alloc> __iterator__ 
1502.428 +_Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> ::insert_unique(iterator __position, const _Value& __v)
1502.429 +{
1502.430 +  if (__position._M_node == this->_M_header._M_data->_M_left) { // begin()
1502.431 +
1502.432 +    // if the container is empty, fall back on insert_unique.
1502.433 +    if (size() <= 0)
1502.434 +      return insert_unique(__v).first;
1502.435 +
1502.436 +    if ( _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node)))
1502.437 +      return _M_insert(__position._M_node, __position._M_node, __v);
1502.438 +    // first argument just needs to be non-null 
1502.439 +    else
1502.440 +      {
1502.441 +	bool __comp_pos_v = _M_key_compare( _S_key(__position._M_node), _KeyOfValue()(__v) );
1502.442 +	
1502.443 +	if (__comp_pos_v == false)  // compare > and compare < both false so compare equal
1502.444 +	  return __position;
1502.445 +	//Below __comp_pos_v == true
1502.446 +
1502.447 +	// Standard-conformance - does the insertion point fall immediately AFTER
1502.448 +	// the hint?
1502.449 +	iterator __after = __position;
1502.450 +	++__after;
1502.451 +
1502.452 +	// Check for only one member -- in that case, __position points to itself,
1502.453 +	// and attempting to increment will cause an infinite loop.
1502.454 +	if (__after._M_node == this->_M_header._M_data)
1502.455 +	  // Check guarantees exactly one member, so comparison was already
1502.456 +	  // performed and we know the result; skip repeating it in _M_insert
1502.457 +	  // by specifying a non-zero fourth argument.
1502.458 +	  return _M_insert(0, __position._M_node, __v, __position._M_node);
1502.459 +		
1502.460 +	
1502.461 +	// All other cases:
1502.462 +	
1502.463 +	// Optimization to catch insert-equivalent -- save comparison results,
1502.464 +	// and we get this for free.
1502.465 +	if(_M_key_compare( _KeyOfValue()(__v), _S_key(__after._M_node) )) {
1502.466 +	  if (_S_right(__position._M_node) == 0)
1502.467 +	    return _M_insert(0, __position._M_node, __v, __position._M_node);
1502.468 +	  else
1502.469 +	    return _M_insert(__after._M_node, __after._M_node, __v);
1502.470 +	} else {
1502.471 +	    return insert_unique(__v).first;
1502.472 +	}
1502.473 +      }
1502.474 +
1502.475 +  } else if (__position._M_node == this->_M_header._M_data) { // end()
1502.476 +    if (_M_key_compare(_S_key(_M_rightmost()), _KeyOfValue()(__v)))
1502.477 +      // pass along to _M_insert that it can skip comparing
1502.478 +      // v, Key ; since compare Key, v was true, compare v, Key must be false.
1502.479 +      return _M_insert(0, _M_rightmost(), __v, __position._M_node); // Last argument only needs to be non-null
1502.480 +    else
1502.481 +      return insert_unique(__v).first;
1502.482 +  } else {
1502.483 +    iterator __before = __position;
1502.484 +    --__before;
1502.485 +    
1502.486 +    bool __comp_v_pos = _M_key_compare(_KeyOfValue()(__v), _S_key(__position._M_node));
1502.487 +
1502.488 +    if (__comp_v_pos
1502.489 +      && _M_key_compare( _S_key(__before._M_node), _KeyOfValue()(__v) )) {
1502.490 +
1502.491 +      if (_S_right(__before._M_node) == 0)
1502.492 +        return _M_insert(0, __before._M_node, __v, __before._M_node); // Last argument only needs to be non-null
1502.493 +      else
1502.494 +        return _M_insert(__position._M_node, __position._M_node, __v);
1502.495 +    // first argument just needs to be non-null 
1502.496 +    } else
1502.497 +      {
1502.498 +	// Does the insertion point fall immediately AFTER the hint?
1502.499 +	iterator __after = __position;
1502.500 +	++__after;
1502.501 +	
1502.502 +	// Optimization to catch equivalent cases and avoid unnecessary comparisons
1502.503 +	bool __comp_pos_v = !__comp_v_pos;  // Stored this result earlier
1502.504 +	// If the earlier comparison was true, this comparison doesn't need to be
1502.505 +	// performed because it must be false.  However, if the earlier comparison
1502.506 +	// was false, we need to perform this one because in the equal case, both will
1502.507 +	// be false.
1502.508 +	if (!__comp_v_pos) __comp_pos_v = _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v));
1502.509 +	
1502.510 +	if ( (!__comp_v_pos) // comp_v_pos true implies comp_v_pos false
1502.511 +	     && __comp_pos_v
1502.512 +	     && (__after._M_node == this->_M_header._M_data ||
1502.513 +	        _M_key_compare( _KeyOfValue()(__v), _S_key(__after._M_node) ))) {
1502.514 +	  
1502.515 +	  if (_S_right(__position._M_node) == 0)
1502.516 +	    return _M_insert(0, __position._M_node, __v, __position._M_node);
1502.517 +	  else
1502.518 +	    return _M_insert(__after._M_node, __after._M_node, __v);
1502.519 +	} else {
1502.520 +	  // Test for equivalent case
1502.521 +	  if (__comp_v_pos == __comp_pos_v)
1502.522 +	    return __position;
1502.523 +	  else
1502.524 +	    return insert_unique(__v).first;
1502.525 +	}
1502.526 +      }
1502.527 +  }
1502.528 +}
1502.529 +
1502.530 +
1502.531 +template <class _Key, class _Value, class _KeyOfValue, 
1502.532 +          class _Compare, class _Alloc> __iterator__ 
1502.533 +_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::insert_equal(iterator __position, const _Value& __v)
1502.534 +{
1502.535 +  if (__position._M_node == this->_M_header._M_data->_M_left) { // begin()
1502.536 +
1502.537 +    // Check for zero members
1502.538 +    if (size() <= 0)
1502.539 +        return insert_equal(__v);
1502.540 +
1502.541 +    if (!_M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v)))
1502.542 +      return _M_insert(__position._M_node, __position._M_node, __v);
1502.543 +    else    {
1502.544 +      // Check for only one member
1502.545 +      if (__position._M_node->_M_left == __position._M_node)
1502.546 +        // Unlike insert_unique, can't avoid doing a comparison here.
1502.547 +        return _M_insert(0, __position._M_node, __v);
1502.548 +                
1502.549 +      // All other cases:
1502.550 +      // Standard-conformance - does the insertion point fall immediately AFTER
1502.551 +      // the hint?
1502.552 +      iterator __after = __position;
1502.553 +      ++__after;
1502.554 +      
1502.555 +      // Already know that compare(pos, v) must be true!
1502.556 +      // Therefore, we want to know if compare(after, v) is false.
1502.557 +      // (i.e., we now pos < v, now we want to know if v <= after)
1502.558 +      // If not, invalid hint.
1502.559 +      if ( __after._M_node==this->_M_header._M_data ||
1502.560 +	   !_M_key_compare( _S_key(__after._M_node), _KeyOfValue()(__v) ) ) {
1502.561 +        if (_S_right(__position._M_node) == 0)
1502.562 +          return _M_insert(0, __position._M_node, __v, __position._M_node);
1502.563 +        else
1502.564 +          return _M_insert(__after._M_node, __after._M_node, __v);
1502.565 +      } else // Invalid hint
1502.566 +        return insert_equal(__v);
1502.567 +    }
1502.568 +  } else if (__position._M_node == this->_M_header._M_data) {// end()
1502.569 +    if (!_M_key_compare(_KeyOfValue()(__v), _S_key(_M_rightmost())))
1502.570 +      return _M_insert(0, _M_rightmost(), __v, __position._M_node); // Last argument only needs to be non-null
1502.571 +    else
1502.572 +      return insert_equal(__v);
1502.573 +  } else {
1502.574 +    iterator __before = __position;
1502.575 +    --__before;
1502.576 +    // store the result of the comparison between pos and v so
1502.577 +    // that we don't have to do it again later.  Note that this reverses the shortcut
1502.578 +    // on the if, possibly harming efficiency in comparisons; I think the harm will
1502.579 +    // be negligible, and to do what I want to do (save the result of a comparison so
1502.580 +    // that it can be re-used) there is no alternative.  Test here is for before <= v <= pos.
1502.581 +    bool __comp_pos_v = _M_key_compare(_S_key(__position._M_node), _KeyOfValue()(__v));
1502.582 +    if (!__comp_pos_v
1502.583 +        && !_M_key_compare(_KeyOfValue()(__v), _S_key(__before._M_node))) {
1502.584 +      if (_S_right(__before._M_node) == 0)
1502.585 +        return _M_insert(0, __before._M_node, __v, __before._M_node); // Last argument only needs to be non-null
1502.586 +      else
1502.587 +        return _M_insert(__position._M_node, __position._M_node, __v);
1502.588 +    } else  {
1502.589 +      // Does the insertion point fall immediately AFTER the hint?
1502.590 +      // Test for pos < v <= after
1502.591 +      iterator __after = __position;
1502.592 +      ++__after;
1502.593 +      
1502.594 +      if (__comp_pos_v
1502.595 +	  && ( __after._M_node==this->_M_header._M_data 
1502.596 +	       || !_M_key_compare( _S_key(__after._M_node), _KeyOfValue()(__v) ) ) ) {
1502.597 +        if (_S_right(__position._M_node) == 0)
1502.598 +          return _M_insert(0, __position._M_node, __v, __position._M_node);
1502.599 +        else
1502.600 +          return _M_insert(__after._M_node, __after._M_node, __v);
1502.601 +      } else // Invalid hint
1502.602 +        return insert_equal(__v);
1502.603 +    }
1502.604 +  }
1502.605 +}
1502.606 +
1502.607 +template <class _Key, class _Value, class _KeyOfValue, class _Compare, class _Alloc> _Rb_tree_node<_Value>* 
1502.608 +_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::_M_copy(_Rb_tree_node<_Value>* __x, _Rb_tree_node<_Value>* __p)
1502.609 +{
1502.610 +                        // structural copy.  __x and __p must be non-null.
1502.611 +  _STLP_LEAVE_VOLATILE _Link_type __top = _M_clone_node(__x);
1502.612 +  __top->_M_parent = __p;
1502.613 +  
1502.614 +  _STLP_TRY {
1502.615 +    if (__x->_M_right)
1502.616 +      __top->_M_right = _M_copy(_S_right(__x), __top);
1502.617 +    __p = __top;
1502.618 +    __x = _S_left(__x);
1502.619 +
1502.620 +    while (__x != 0) {
1502.621 +      _Link_type __y = _M_clone_node(__x);
1502.622 +      __p->_M_left = __y;
1502.623 +      __y->_M_parent = __p;
1502.624 +      if (__x->_M_right)
1502.625 +        __y->_M_right = _M_copy(_S_right(__x), __y);
1502.626 +      __p = __y;
1502.627 +      __x = _S_left(__x);
1502.628 +    }
1502.629 +  }
1502.630 +  _STLP_UNWIND(_M_erase(__top));
1502.631 +
1502.632 +  return __top;
1502.633 +}
1502.634 +
1502.635 +// this has to stay out-of-line : it's recursive
1502.636 +template <class _Key, class _Value, class _KeyOfValue, 
1502.637 +          class _Compare, class _Alloc> void 
1502.638 +_Rb_tree<_Key,_Value,_KeyOfValue,
1502.639 +  _Compare,_Alloc>::_M_erase(_Rb_tree_node<_Value>* __x)
1502.640 +{
1502.641 +                                // erase without rebalancing
1502.642 +  while (__x != 0) {
1502.643 +    _M_erase(_S_right(__x));
1502.644 +    _Link_type __y = _S_left(__x);
1502.645 +    _STLP_STD::_Destroy(&__x->_M_value_field);
1502.646 +    this->_M_header.deallocate(__x,1);
1502.647 +    __x = __y;
1502.648 +  }
1502.649 +}
1502.650 +
1502.651 +template <class _Key, class _Value, class _KeyOfValue, 
1502.652 +          class _Compare, class _Alloc> __size_type__ 
1502.653 +_Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc> ::count(const _Key& __k) const
1502.654 +{
1502.655 +  pair<const_iterator, const_iterator> __p = equal_range(__k);
1502.656 +  size_type __n = distance(__p.first, __p.second);
1502.657 +  return __n;
1502.658 +}
1502.659 +
1502.660 +inline int 
1502.661 +__black_count(_Rb_tree_node_base* __node, _Rb_tree_node_base* __root)
1502.662 +{
1502.663 +  if (__node == 0)
1502.664 +    return 0;
1502.665 +  else {
1502.666 +    int __bc = __node->_M_color == _S_rb_tree_black ? 1 : 0;
1502.667 +    if (__node == __root)
1502.668 +      return __bc;
1502.669 +    else
1502.670 +      return __bc + __black_count(__node->_M_parent, __root);
1502.671 +  }
1502.672 +}
1502.673 +
1502.674 +template <class _Key, class _Value, class _KeyOfValue, 
1502.675 +          class _Compare, class _Alloc> bool _Rb_tree<_Key,_Value,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
1502.676 +{
1502.677 +  if (_M_node_count == 0 || begin() == end())
1502.678 +    return _M_node_count == 0 && begin() == end() && this->_M_header._M_data->_M_left == this->_M_header._M_data
1502.679 +      && this->_M_header._M_data->_M_right == this->_M_header._M_data;
1502.680 +  
1502.681 +  int __len = __black_count(_M_leftmost(), _M_root());
1502.682 +  for (const_iterator __it = begin(); __it != end(); ++__it) {
1502.683 +    _Link_type __x = (_Link_type) __it._M_node;
1502.684 +    _Link_type __L = _S_left(__x);
1502.685 +    _Link_type __R = _S_right(__x);
1502.686 +
1502.687 +    if (__x->_M_color == _S_rb_tree_red)
1502.688 +      if ((__L && __L->_M_color == _S_rb_tree_red) ||
1502.689 +          (__R && __R->_M_color == _S_rb_tree_red))
1502.690 +        return false;
1502.691 +
1502.692 +    if (__L && _M_key_compare(_S_key(__x), _S_key(__L)))
1502.693 +      return false;
1502.694 +    if (__R && _M_key_compare(_S_key(__R), _S_key(__x)))
1502.695 +      return false;
1502.696 +
1502.697 +    if (!__L && !__R && __black_count(__x, _M_root()) != __len)
1502.698 +      return false;
1502.699 +  }
1502.700 +
1502.701 +  if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
1502.702 +    return false;
1502.703 +  if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
1502.704 +    return false;
1502.705 +
1502.706 +  return true;
1502.707 +}
1502.708 +_STLP_END_NAMESPACE
1502.709 +
1502.710 +# undef __iterator__        
1502.711 +# undef iterator
1502.712 +# undef __size_type__  
1502.713 +
1502.714 +#endif /*  _STLP_TREE_C */
1502.715 +
1502.716 +// Local Variables:
1502.717 +// mode:C++
1502.718 +// End:
  1503.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1503.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_uninitialized.h	Wed Mar 31 12:27:01 2010 +0100
  1503.3 @@ -0,0 +1,291 @@
  1503.4 +/*
  1503.5 + *
  1503.6 + * Copyright (c) 1994
  1503.7 + * Hewlett-Packard Company
  1503.8 + *
  1503.9 + * Copyright (c) 1996,1997
 1503.10 + * Silicon Graphics Computer Systems, Inc.
 1503.11 + *
 1503.12 + * Copyright (c) 1997
 1503.13 + * Moscow Center for SPARC Technology
 1503.14 + *
 1503.15 + * Copyright (c) 1999 
 1503.16 + * Boris Fomitchev
 1503.17 + *
 1503.18 + * This material is provided "as is", with absolutely no warranty expressed
 1503.19 + * or implied. Any use is at your own risk.
 1503.20 + *
 1503.21 + * Permission to use or copy this software for any purpose is hereby granted 
 1503.22 + * without fee, provided the above notices are retained on all copies.
 1503.23 + * Permission to modify the code and to distribute modified code is granted,
 1503.24 + * provided the above notices are retained, and a notice that the code was
 1503.25 + * modified is included with the above copyright notice.
 1503.26 + *
 1503.27 + */
 1503.28 +
 1503.29 +/* NOTE: This is an internal header file, included by other STL headers.
 1503.30 + *   You should not attempt to use it directly.
 1503.31 + */
 1503.32 +
 1503.33 +#ifndef _STLP_INTERNAL_UNINITIALIZED_H
 1503.34 +#define _STLP_INTERNAL_UNINITIALIZED_H
 1503.35 +
 1503.36 +# ifndef _STLP_CSTRING
 1503.37 +#  include <cstring>
 1503.38 +# endif
 1503.39 +
 1503.40 +# ifndef _STLP_INTERNAL_ALGOBASE_H
 1503.41 +#  include <stl/_algobase.h>
 1503.42 +# endif
 1503.43 +
 1503.44 +# ifndef _STLP_INTERNAL_CONSTRUCT_H
 1503.45 +#  include <stl/_construct.h>
 1503.46 +# endif
 1503.47 +
 1503.48 +_STLP_BEGIN_NAMESPACE
 1503.49 +
 1503.50 +// uninitialized_copy
 1503.51 +
 1503.52 +// Valid if copy construction is equivalent to assignment, and if the
 1503.53 +//  destructor is trivial.
 1503.54 +template <class _InputIter, class _ForwardIter>
 1503.55 +inline _ForwardIter 
 1503.56 +__uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result,
 1503.57 +                     const __true_type&) {
 1503.58 +  return __copy_aux(__first, __last, __result, _BothPtrType< _InputIter, _ForwardIter> :: _Ret());
 1503.59 +}
 1503.60 +
 1503.61 +template <class _InputIter, class _ForwardIter>
 1503.62 +// _STLP_INLINE_LOOP
 1503.63 +_ForwardIter 
 1503.64 +__uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result,
 1503.65 +                     const __false_type&)
 1503.66 +{
 1503.67 +  _STLP_LEAVE_VOLATILE _ForwardIter __cur = __result;
 1503.68 +  _STLP_TRY  {
 1503.69 +    for ( ; __first != __last; ++__first, ++__cur)
 1503.70 +      _Construct(&*__cur, *__first);
 1503.71 +    //    return __cur;
 1503.72 +  }
 1503.73 +  _STLP_UNWIND (_STLP_STD::_Destroy(__result, __cur)); 
 1503.74 +  return __cur;
 1503.75 +}
 1503.76 +
 1503.77 +template <class _InputIter, class _ForwardIter>
 1503.78 +inline _ForwardIter
 1503.79 +uninitialized_copy(_InputIter __first, _InputIter __last, _ForwardIter __result) {
 1503.80 +  return __uninitialized_copy(__first, __last, __result,  _IS_POD_ITER(__result, _ForwardIter));
 1503.81 +}
 1503.82 +
 1503.83 +inline char* 
 1503.84 +uninitialized_copy(const char* __first, const char* __last, char* __result) {
 1503.85 +  return  (char*)__copy_trivial (__first, __last, __result);
 1503.86 +}
 1503.87 +
 1503.88 +#  ifdef _STLP_HAS_WCHAR_T // dwa 8/15/97
 1503.89 +inline wchar_t* 
 1503.90 +uninitialized_copy(const wchar_t* __first, const wchar_t* __last, wchar_t* __result) {
 1503.91 +  return  (wchar_t*)__copy_trivial (__first, __last, __result);
 1503.92 +}
 1503.93 +#  endif /* _STLP_HAS_WCHAR_T */
 1503.94 +
 1503.95 +# ifndef _STLP_NO_EXTENSIONS
 1503.96 +// uninitialized_copy_n (not part of the C++ standard)
 1503.97 +
 1503.98 +template <class _InputIter, class _Size, class _ForwardIter>
 1503.99 +// _STLP_INLINE_LOOP 
1503.100 +pair<_InputIter, _ForwardIter>
1503.101 +__uninitialized_copy_n(_InputIter __first, _Size __count,
1503.102 +                       _ForwardIter __result,
1503.103 +                       const input_iterator_tag &)
1503.104 +{
1503.105 +  _STLP_LEAVE_VOLATILE  _ForwardIter __cur = __result;
1503.106 +  _STLP_TRY {
1503.107 +    for ( ; __count > 0 ; --__count, ++__first, ++__cur) 
1503.108 +      _Construct(&*__cur, *__first);
1503.109 +    //    return pair<_InputIter, _ForwardIter>(__first, __cur);
1503.110 +  }
1503.111 +  _STLP_UNWIND(_STLP_STD::_Destroy(__result, __cur));
1503.112 +
1503.113 +  return pair<_InputIter, _ForwardIter>(__first, __cur);
1503.114 +
1503.115 +}
1503.116 +
1503.117 +# if defined(_STLP_NONTEMPL_BASE_MATCH_BUG) 
1503.118 +template <class _InputIterator, class _Size, class _ForwardIterator>
1503.119 +inline pair<_InputIterator, _ForwardIterator>
1503.120 +__uninitialized_copy_n(_InputIterator __first, _Size __count,
1503.121 +                       _ForwardIterator __result,
1503.122 +                       const forward_iterator_tag &) {
1503.123 +  return __uninitialized_copy_n(__first, __count, __result, input_iterator_tag());
1503.124 +}
1503.125 +
1503.126 +template <class _InputIterator, class _Size, class _ForwardIterator>
1503.127 +inline pair<_InputIterator, _ForwardIterator>
1503.128 +__uninitialized_copy_n(_InputIterator __first, _Size __count,
1503.129 +                       _ForwardIterator __result,
1503.130 +                       const bidirectional_iterator_tag &) {
1503.131 +  return __uninitialized_copy_n(__first, __count, __result, input_iterator_tag());
1503.132 +}
1503.133 +# endif
1503.134 +
1503.135 +
1503.136 +template <class _RandomAccessIter, class _Size, class _ForwardIter>
1503.137 +inline pair<_RandomAccessIter, _ForwardIter>
1503.138 +__uninitialized_copy_n(_RandomAccessIter __first, _Size __count, _ForwardIter __result, const random_access_iterator_tag &) {
1503.139 +  _RandomAccessIter __last = __first + __count;
1503.140 +  return pair<_RandomAccessIter, _ForwardIter>( __last, __uninitialized_copy(__first, __last, __result, 
1503.141 +                                                                             _IS_POD_ITER(__result, _ForwardIter)));
1503.142 +}
1503.143 +
1503.144 +// this is used internally in <rope> , which is extension itself.
1503.145 +template <class _InputIter, class _Size, class _ForwardIter>
1503.146 +inline pair<_InputIter, _ForwardIter>
1503.147 +uninitialized_copy_n(_InputIter __first, _Size __count,
1503.148 +                     _ForwardIter __result) {
1503.149 +  return __uninitialized_copy_n(__first, __count, __result, _STLP_ITERATOR_CATEGORY(__first, _InputIter));
1503.150 +}
1503.151 +# endif /* _STLP_NO_EXTENSIONS */
1503.152 +
1503.153 +// Valid if copy construction is equivalent to assignment, and if the
1503.154 +// destructor is trivial.
1503.155 +template <class _ForwardIter, class _Tp>
1503.156 +inline void
1503.157 +__uninitialized_fill(_ForwardIter __first, _ForwardIter __last, 
1503.158 +                     const _Tp& __x, const __true_type&) {
1503.159 +  _STLP_STD::fill(__first, __last, __x);
1503.160 +}
1503.161 +
1503.162 +template <class _ForwardIter, class _Tp>
1503.163 +// _STLP_INLINE_LOOP 
1503.164 +void
1503.165 +__uninitialized_fill(_ForwardIter __first, _ForwardIter __last, 
1503.166 +                     const _Tp& __x, const __false_type&)
1503.167 +{
1503.168 +  _STLP_LEAVE_VOLATILE  _ForwardIter __cur = __first;
1503.169 +  _STLP_TRY {
1503.170 +    for ( ; __cur != __last; ++__cur)
1503.171 +      _Construct(&*__cur, __x);
1503.172 +  }
1503.173 +  _STLP_UNWIND(_STLP_STD::_Destroy(__first, __cur));
1503.174 +}
1503.175 +
1503.176 +template <class _ForwardIter, class _Tp>
1503.177 +inline void uninitialized_fill(_ForwardIter __first, _ForwardIter __last,  const _Tp& __x) {
1503.178 +  __uninitialized_fill(__first, __last, __x, _IS_POD_ITER(__first, _ForwardIter));
1503.179 +}
1503.180 +
1503.181 +// Valid if copy construction is equivalent to assignment, and if the
1503.182 +//  destructor is trivial.
1503.183 +template <class _ForwardIter, class _Size, class _Tp>
1503.184 +inline _ForwardIter
1503.185 +__uninitialized_fill_n(_ForwardIter __first, _Size __n,
1503.186 +                       const _Tp& __x, const __true_type&) {
1503.187 +  return _STLP_STD::fill_n(__first, __n, __x);
1503.188 +}
1503.189 +
1503.190 +template <class _ForwardIter, class _Size, class _Tp>
1503.191 +//_STLP_INLINE_LOOP 
1503.192 +_ForwardIter
1503.193 +__uninitialized_fill_n(_ForwardIter __first, _Size __n,
1503.194 +                       const _Tp& __x, const __false_type&)
1503.195 +{
1503.196 +  _STLP_LEAVE_VOLATILE  _ForwardIter __cur = __first;
1503.197 +  _STLP_TRY {
1503.198 +    for ( ; __n > 0; --__n, ++__cur)
1503.199 +      _Construct(&*__cur, __x);
1503.200 +    //    return __cur;
1503.201 +  }
1503.202 +  _STLP_UNWIND(_STLP_STD::_Destroy(__first, __cur));
1503.203 +  // # ifdef _STLP_THROW_RETURN_BUG
1503.204 +  return __cur;
1503.205 +  //# endif
1503.206 +}
1503.207 +
1503.208 +template <class _ForwardIter, class _Size, class _Tp>
1503.209 +inline _ForwardIter 
1503.210 +uninitialized_fill_n(_ForwardIter __first, _Size __n, const _Tp& __x) {
1503.211 +  return __uninitialized_fill_n(__first, __n, __x, _IS_POD_ITER(__first, _ForwardIter));
1503.212 +}
1503.213 +
1503.214 +// Extensions: __uninitialized_copy_copy, __uninitialized_copy_fill, 
1503.215 +// __uninitialized_fill_copy.
1503.216 +
1503.217 +// __uninitialized_copy_copy
1503.218 +// Copies [first1, last1) into [result, result + (last1 - first1)), and
1503.219 +//  copies [first2, last2) into
1503.220 +//  [result, result + (last1 - first1) + (last2 - first2)).
1503.221 +
1503.222 +template <class _InputIter1, class _InputIter2, class _ForwardIter>
1503.223 +inline _ForwardIter
1503.224 +__uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1,
1503.225 +                          _InputIter2 __first2, _InputIter2 __last2,
1503.226 +                          _ForwardIter __result, __true_type)
1503.227 +{
1503.228 +  return __uninitialized_copy(__first2, __last2, 
1503.229 +                              __uninitialized_copy(__first1, __last1, __result, __true_type()), __true_type());
1503.230 +}
1503.231 +
1503.232 +template <class _InputIter1, class _InputIter2, class _ForwardIter>
1503.233 +// inline 
1503.234 +_ForwardIter
1503.235 +__uninitialized_copy_copy(_InputIter1 __first1, _InputIter1 __last1,
1503.236 +                          _InputIter2 __first2, _InputIter2 __last2,
1503.237 +                          _ForwardIter __result, __false_type)
1503.238 +{
1503.239 +   _STLP_LEAVE_VOLATILE _ForwardIter __mid = __uninitialized_copy(__first1, __last1, __result, _IS_POD_ITER(__result, _ForwardIter));
1503.240 +
1503.241 +  _STLP_TRY {
1503.242 +    return __uninitialized_copy(__first2, __last2, __mid , _IS_POD_ITER(__result, _ForwardIter));
1503.243 +  }
1503.244 +  _STLP_UNWIND (_STLP_STD::_Destroy(__result, __mid));
1503.245 +# ifdef _STLP_THROW_RETURN_BUG
1503.246 +  return __mid;
1503.247 +# endif
1503.248 +}
1503.249 +
1503.250 +// __uninitialized_fill_copy
1503.251 +// Fills [result, mid) with x, and copies [first, last) into
1503.252 +//  [mid, mid + (last - first)).
1503.253 +template <class _ForwardIter, class _Tp, class _InputIter>
1503.254 +// inline 
1503.255 +_ForwardIter 
1503.256 +__uninitialized_fill_copy(_ForwardIter __result, _ForwardIter __mid, const _Tp& __x,
1503.257 +                          _InputIter __first, _InputIter __last)
1503.258 +{
1503.259 +  typedef typename __type_traits<_Tp>::is_POD_type _I_POD;
1503.260 +  __uninitialized_fill(__result, __mid, __x, _I_POD());
1503.261 +  _STLP_TRY {
1503.262 +    return __uninitialized_copy(__first, __last, __mid, _I_POD());
1503.263 +  }
1503.264 +  _STLP_UNWIND (_STLP_STD::_Destroy(__result, __mid));
1503.265 +# ifdef _STLP_THROW_RETURN_BUG
1503.266 +  return __result;
1503.267 +# endif
1503.268 +}
1503.269 +
1503.270 +// __uninitialized_copy_fill
1503.271 +// Copies [first1, last1) into [first2, first2 + (last1 - first1)), and
1503.272 +//  fills [first2 + (last1 - first1), last2) with x.
1503.273 +template <class _InputIter, class _ForwardIter, class _Tp>
1503.274 +// inline 
1503.275 +void
1503.276 +__uninitialized_copy_fill(_InputIter __first1, _InputIter __last1,
1503.277 +                          _ForwardIter __first2, _ForwardIter __last2,
1503.278 +                          const _Tp& __x)
1503.279 +{
1503.280 +  typedef typename __type_traits<_Tp>::is_POD_type _I_POD;
1503.281 +  _ForwardIter __mid2 = __uninitialized_copy(__first1, __last1, __first2, _I_POD());
1503.282 +  _STLP_TRY {
1503.283 +    __uninitialized_fill(__mid2, __last2, __x, _I_POD());
1503.284 +  }
1503.285 +  _STLP_UNWIND(_STLP_STD::_Destroy(__first2, __mid2));
1503.286 +}
1503.287 +
1503.288 +_STLP_END_NAMESPACE
1503.289 +
1503.290 +#endif /* _STLP_INTERNAL_UNINITIALIZED_H */
1503.291 +
1503.292 +// Local Variables:
1503.293 +// mode:C++
1503.294 +// End:
  1504.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1504.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_unordered_map.h	Wed Mar 31 12:27:01 2010 +0100
  1504.3 @@ -0,0 +1,427 @@
  1504.4 +/*
  1504.5 + * Copyright (c) 2004
  1504.6 + * Francois Dumont
  1504.7 + *
  1504.8 + * This material is provided "as is", with absolutely no warranty expressed
  1504.9 + * or implied. Any use is at your own risk.
 1504.10 + *
 1504.11 + * Permission to use or copy this software for any purpose is hereby granted
 1504.12 + * without fee, provided the above notices are retained on all copies.
 1504.13 + * Permission to modify the code and to distribute modified code is granted,
 1504.14 + * provided the above notices are retained, and a notice that the code was
 1504.15 + * modified is included with the above copyright notice.
 1504.16 + *
 1504.17 + */
 1504.18 +
 1504.19 +/* NOTE: This is an internal header file, included by other STL headers.
 1504.20 + *   You should not attempt to use it directly.
 1504.21 + */
 1504.22 +
 1504.23 +#ifndef _STLP_INTERNAL_UNORDERED_MAP_H
 1504.24 +#define _STLP_INTERNAL_UNORDERED_MAP_H
 1504.25 +
 1504.26 +#ifndef _STLP_INTERNAL_HASHTABLE_H
 1504.27 +#  include <stl/_hashtable.h>
 1504.28 +#endif
 1504.29 +
 1504.30 +_STLP_BEGIN_NAMESPACE
 1504.31 +
 1504.32 +//Specific iterator traits creation
 1504.33 +_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMapTraitsT, traits)
 1504.34 +
 1504.35 +template <class _Key, class _Tp, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Key>),
 1504.36 +          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Key>),
 1504.37 +          _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(const _Key, _Tp) >
 1504.38 +class unordered_map
 1504.39 +#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
 1504.40 +               : public __stlport_class<unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> >
 1504.41 +#endif
 1504.42 +{
 1504.43 +private:
 1504.44 +  typedef unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self;
 1504.45 +public:
 1504.46 +  typedef _Key key_type;
 1504.47 +  typedef _Tp data_type;
 1504.48 +  typedef _Tp mapped_type;
 1504.49 +#if !defined (__DMC__)
 1504.50 +  typedef pair<const key_type, data_type> value_type;
 1504.51 +#else
 1504.52 +  typedef pair<key_type, data_type> value_type;
 1504.53 +#endif
 1504.54 +private:
 1504.55 +  //Specific iterator traits creation
 1504.56 +  typedef _STLP_PRIV _UnorderedMapTraitsT<value_type> _UnorderedMapTraits;
 1504.57 +
 1504.58 +public:
 1504.59 +  typedef hashtable<value_type, key_type, _HashFcn, _UnorderedMapTraits,
 1504.60 +                    _STLP_SELECT1ST(value_type,  _Key), _EqualKey, _Alloc > _Ht;
 1504.61 +
 1504.62 +  typedef typename _Ht::hasher hasher;
 1504.63 +  typedef typename _Ht::key_equal key_equal;
 1504.64 +
 1504.65 +  typedef typename _Ht::size_type size_type;
 1504.66 +  typedef typename _Ht::difference_type difference_type;
 1504.67 +  typedef typename _Ht::pointer pointer;
 1504.68 +  typedef typename _Ht::const_pointer const_pointer;
 1504.69 +  typedef typename _Ht::reference reference;
 1504.70 +  typedef typename _Ht::const_reference const_reference;
 1504.71 +
 1504.72 +  typedef typename _Ht::iterator iterator;
 1504.73 +  typedef typename _Ht::const_iterator const_iterator;
 1504.74 +  typedef typename _Ht::local_iterator local_iterator;
 1504.75 +  typedef typename _Ht::const_local_iterator const_local_iterator;
 1504.76 +
 1504.77 +  typedef typename _Ht::allocator_type allocator_type;
 1504.78 +
 1504.79 +  hasher hash_function() const { return _M_ht.hash_funct(); }
 1504.80 +  key_equal key_eq() const { return _M_ht.key_eq(); }
 1504.81 +  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
 1504.82 +
 1504.83 +private:
 1504.84 +  _Ht _M_ht;
 1504.85 +  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
 1504.86 +
 1504.87 +public:
 1504.88 +  explicit unordered_map(size_type __n = 100, const hasher& __hf = hasher(),
 1504.89 +                         const key_equal& __eql = key_equal(),
 1504.90 +                         const allocator_type& __a = allocator_type())
 1504.91 +    : _M_ht(__n, __hf, __eql, __a) {}
 1504.92 +
 1504.93 +  unordered_map(__move_source<_Self> src)
 1504.94 +    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
 1504.95 +
 1504.96 +#if defined (_STLP_MEMBER_TEMPLATES)
 1504.97 +  template <class _InputIterator>
 1504.98 +  unordered_map(_InputIterator __f, _InputIterator __l,
 1504.99 +                size_type __n = 100, const hasher& __hf = hasher(),
1504.100 +                const key_equal& __eql = key_equal(),
1504.101 +                const allocator_type& __a = allocator_type())
1504.102 +    : _M_ht(__n, __hf, __eql, __a)
1504.103 +  { _M_ht.insert_unique(__f, __l); }
1504.104 +#else
1504.105 +  unordered_map(const value_type* __f, const value_type* __l,
1504.106 +                size_type __n = 100, const hasher& __hf = hasher(),
1504.107 +                const key_equal& __eql = key_equal(),
1504.108 +                const allocator_type& __a = allocator_type())
1504.109 +    : _M_ht(__n, __hf, __eql, __a)
1504.110 +  { _M_ht.insert_unique(__f, __l); }
1504.111 +
1504.112 +  unordered_map(const_iterator __f, const_iterator __l,
1504.113 +                size_type __n = 100, const hasher& __hf = hasher(),
1504.114 +                const key_equal& __eql = key_equal(),
1504.115 +                const allocator_type& __a = allocator_type())
1504.116 +    : _M_ht(__n, __hf, __eql, __a)
1504.117 +  { _M_ht.insert_unique(__f, __l); }
1504.118 +#endif /*_STLP_MEMBER_TEMPLATES */
1504.119 +
1504.120 +  _Self& operator = (const _Self& __other)
1504.121 +  { _M_ht = __other._M_ht; return *this; }
1504.122 +
1504.123 +  size_type size() const { return _M_ht.size(); }
1504.124 +  size_type max_size() const { return _M_ht.max_size(); }
1504.125 +  bool empty() const { return _M_ht.empty(); }
1504.126 +  void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); }
1504.127 +
1504.128 +  iterator begin() { return _M_ht.begin(); }
1504.129 +  iterator end() { return _M_ht.end(); }
1504.130 +  const_iterator begin() const { return _M_ht.begin(); }
1504.131 +  const_iterator end() const { return _M_ht.end(); }
1504.132 +
1504.133 +  pair<iterator,bool> insert(const value_type& __obj)
1504.134 +  { return _M_ht.insert_unique(__obj); }
1504.135 +  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1504.136 +  { return _M_ht.insert_unique(__obj); }
1504.137 +#if defined (_STLP_MEMBER_TEMPLATES)
1504.138 +  template <class _InputIterator>
1504.139 +  void insert(_InputIterator __f, _InputIterator __l)
1504.140 +#else
1504.141 +  void insert(const value_type* __f, const value_type* __l)
1504.142 +  { _M_ht.insert_unique(__f,__l); }
1504.143 +  void insert(const_iterator __f, const_iterator __l)
1504.144 +#endif /*_STLP_MEMBER_TEMPLATES */
1504.145 +  { _M_ht.insert_unique(__f, __l); }
1504.146 +
1504.147 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.148 +  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1504.149 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.150 +  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1504.151 +
1504.152 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.153 +  _Tp& operator[](const _KT& __key) {
1504.154 +    iterator __it = _M_ht.find(__key);
1504.155 +    return (__it == _M_ht.end() ?
1504.156 +      _M_ht._M_insert(value_type(__key, _STLP_DEFAULT_CONSTRUCTED(_Tp))).second :
1504.157 +      (*__it).second );
1504.158 +  }
1504.159 +
1504.160 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.161 +  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1504.162 +
1504.163 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.164 +  pair<iterator, iterator> equal_range(const _KT& __key)
1504.165 +  { return _M_ht.equal_range(__key); }
1504.166 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.167 +  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1504.168 +  { return _M_ht.equal_range(__key); }
1504.169 +
1504.170 +  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1504.171 +  void erase(const_iterator __it) { _M_ht.erase(__it); }
1504.172 +  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1504.173 +  void clear() { _M_ht.clear(); }
1504.174 +
1504.175 +  size_type bucket_count() const { return _M_ht.bucket_count(); }
1504.176 +  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1504.177 +  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1504.178 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.179 +  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1504.180 +  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1504.181 +  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1504.182 +  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1504.183 +  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1504.184 +
1504.185 +  float load_factor() const { return _M_ht.load_factor(); }
1504.186 +  float max_load_factor() const { return _M_ht.max_load_factor(); }
1504.187 +  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1504.188 +  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1504.189 +};
1504.190 +
1504.191 +//Specific iterator traits creation
1504.192 +_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMultimapTraitsT, traits)
1504.193 +
1504.194 +template <class _Key, class _Tp, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Key>),
1504.195 +          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Key>),
1504.196 +          _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(const _Key, _Tp) >
1504.197 +class unordered_multimap
1504.198 +#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
1504.199 +                    : public __stlport_class<unordered_multimap<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> >
1504.200 +#endif
1504.201 +{
1504.202 +private:
1504.203 +  typedef unordered_multimap<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self;
1504.204 +public:
1504.205 +  typedef _Key key_type;
1504.206 +  typedef _Tp data_type;
1504.207 +  typedef _Tp mapped_type;
1504.208 +#if !defined (__DMC__)
1504.209 +  typedef pair<const key_type, data_type> value_type;
1504.210 +#else
1504.211 +  typedef pair<key_type, data_type> value_type;
1504.212 +#endif
1504.213 +private:
1504.214 +  //Specific iterator traits creation
1504.215 +  typedef _STLP_PRIV _UnorderedMultimapTraitsT<value_type> _UnorderedMultimapTraits;
1504.216 +
1504.217 +public:
1504.218 +  typedef hashtable<value_type, key_type, _HashFcn, _UnorderedMultimapTraits,
1504.219 +                    _STLP_SELECT1ST(value_type,  _Key), _EqualKey, _Alloc > _Ht;
1504.220 +
1504.221 +  typedef typename _Ht::hasher hasher;
1504.222 +  typedef typename _Ht::key_equal key_equal;
1504.223 +
1504.224 +  typedef typename _Ht::size_type size_type;
1504.225 +  typedef typename _Ht::difference_type difference_type;
1504.226 +  typedef typename _Ht::pointer pointer;
1504.227 +  typedef typename _Ht::const_pointer const_pointer;
1504.228 +  typedef typename _Ht::reference reference;
1504.229 +  typedef typename _Ht::const_reference const_reference;
1504.230 +
1504.231 +  typedef typename _Ht::iterator iterator;
1504.232 +  typedef typename _Ht::const_iterator const_iterator;
1504.233 +  typedef typename _Ht::local_iterator local_iterator;
1504.234 +  typedef typename _Ht::const_local_iterator const_local_iterator;
1504.235 +
1504.236 +  typedef typename _Ht::allocator_type allocator_type;
1504.237 +
1504.238 +  hasher hash_function() const { return _M_ht.hash_funct(); }
1504.239 +  key_equal key_eq() const { return _M_ht.key_eq(); }
1504.240 +  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
1504.241 +
1504.242 +private:
1504.243 +  _Ht _M_ht;
1504.244 +  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
1504.245 +
1504.246 +public:
1504.247 +  explicit unordered_multimap(size_type __n = 100, const hasher& __hf = hasher(),
1504.248 +                              const key_equal& __eql = key_equal(),
1504.249 +                              const allocator_type& __a = allocator_type())
1504.250 +    : _M_ht(__n, __hf, __eql, __a) {}
1504.251 +
1504.252 +  unordered_multimap(__move_source<_Self> src)
1504.253 +    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
1504.254 +
1504.255 +#if defined (_STLP_MEMBER_TEMPLATES)
1504.256 +  template <class _InputIterator>
1504.257 +  unordered_multimap(_InputIterator __f, _InputIterator __l,
1504.258 +                     size_type __n = 100, const hasher& __hf = hasher(),
1504.259 +                     const key_equal& __eql = key_equal(),
1504.260 +                     const allocator_type& __a = allocator_type())
1504.261 +    : _M_ht(__n, __hf, __eql, __a)
1504.262 +  { _M_ht.insert_equal(__f, __l); }
1504.263 +#else
1504.264 +  unordered_multimap(const value_type* __f, const value_type* __l,
1504.265 +                     size_type __n = 100, const hasher& __hf = hasher(),
1504.266 +                     const key_equal& __eql = key_equal(),
1504.267 +                     const allocator_type& __a = allocator_type())
1504.268 +    : _M_ht(__n, __hf, __eql, __a)
1504.269 +  { _M_ht.insert_equal(__f, __l); }
1504.270 +
1504.271 +  unordered_multimap(const_iterator __f, const_iterator __l,
1504.272 +                     size_type __n = 100, const hasher& __hf = hasher(),
1504.273 +                     const key_equal& __eql = key_equal(),
1504.274 +                     const allocator_type& __a = allocator_type())
1504.275 +    : _M_ht(__n, __hf, __eql, __a)
1504.276 +  { _M_ht.insert_equal(__f, __l); }
1504.277 +#endif /*_STLP_MEMBER_TEMPLATES */
1504.278 +
1504.279 +  _Self& operator = (const _Self& __other)
1504.280 +  { _M_ht = __other._M_ht; return *this; }
1504.281 +
1504.282 +  size_type size() const { return _M_ht.size(); }
1504.283 +  size_type max_size() const { return _M_ht.max_size(); }
1504.284 +  bool empty() const { return _M_ht.empty(); }
1504.285 +  void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); }
1504.286 +
1504.287 +  iterator begin() { return _M_ht.begin(); }
1504.288 +  iterator end() { return _M_ht.end(); }
1504.289 +  const_iterator begin() const { return _M_ht.begin(); }
1504.290 +  const_iterator end() const { return _M_ht.end(); }
1504.291 +
1504.292 +  iterator insert(const value_type& __obj)
1504.293 +  { return _M_ht.insert_equal(__obj); }
1504.294 +  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1504.295 +  { return _M_ht.insert_equal(__obj); }
1504.296 +#if defined (_STLP_MEMBER_TEMPLATES)
1504.297 +  template <class _InputIterator>
1504.298 +  void insert(_InputIterator __f, _InputIterator __l)
1504.299 +#else
1504.300 +  void insert(const value_type* __f, const value_type* __l)
1504.301 +  { _M_ht.insert_equal(__f,__l); }
1504.302 +  void insert(const_iterator __f, const_iterator __l)
1504.303 +#endif /*_STLP_MEMBER_TEMPLATES */
1504.304 +  { _M_ht.insert_equal(__f, __l); }
1504.305 +
1504.306 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.307 +  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1504.308 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.309 +  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1504.310 +
1504.311 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.312 +  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1504.313 +
1504.314 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.315 +  pair<iterator, iterator> equal_range(const _KT& __key)
1504.316 +  { return _M_ht.equal_range(__key); }
1504.317 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.318 +  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1504.319 +  { return _M_ht.equal_range(__key); }
1504.320 +
1504.321 +  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1504.322 +  void erase(const_iterator __it) { _M_ht.erase(__it); }
1504.323 +  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1504.324 +  void clear() { _M_ht.clear(); }
1504.325 +
1504.326 +  size_type bucket_count() const { return _M_ht.bucket_count(); }
1504.327 +  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1504.328 +  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1504.329 +  _STLP_TEMPLATE_FOR_CONT_EXT
1504.330 +  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1504.331 +  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1504.332 +  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1504.333 +  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1504.334 +  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1504.335 +
1504.336 +  float load_factor() const { return _M_ht.load_factor(); }
1504.337 +  float max_load_factor() const { return _M_ht.max_load_factor(); }
1504.338 +  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1504.339 +  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1504.340 +};
1504.341 +
1504.342 +#define _STLP_TEMPLATE_HEADER template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
1504.343 +#define _STLP_TEMPLATE_CONTAINER unordered_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>
1504.344 +
1504.345 +#include <stl/_relops_hash_cont.h>
1504.346 +
1504.347 +#undef _STLP_TEMPLATE_CONTAINER
1504.348 +#define _STLP_TEMPLATE_CONTAINER unordered_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>
1504.349 +
1504.350 +#include <stl/_relops_hash_cont.h>
1504.351 +
1504.352 +#undef _STLP_TEMPLATE_CONTAINER
1504.353 +#undef _STLP_TEMPLATE_HEADER
1504.354 +
1504.355 +// Specialization of insert_iterator so that it will work for unordered_map
1504.356 +// and unordered_multimap.
1504.357 +
1504.358 +#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1504.359 +template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1504.360 +struct __move_traits<unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > :
1504.361 +  _STLP_PRIV __move_traits_help<typename unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>::_Ht>
1504.362 +{};
1504.363 +
1504.364 +template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1504.365 +struct __move_traits<unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > :
1504.366 +  _STLP_PRIV __move_traits_help<typename unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>::_Ht>
1504.367 +{};
1504.368 +
1504.369 +template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1504.370 +class insert_iterator<unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > {
1504.371 +protected:
1504.372 +  typedef unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container;
1504.373 +  _Container* container;
1504.374 +public:
1504.375 +  typedef _Container          container_type;
1504.376 +  typedef output_iterator_tag iterator_category;
1504.377 +  typedef void                value_type;
1504.378 +  typedef void                difference_type;
1504.379 +  typedef void                pointer;
1504.380 +  typedef void                reference;
1504.381 +
1504.382 +  insert_iterator(_Container& __x) : container(&__x) {}
1504.383 +  insert_iterator(_Container& __x, typename _Container::iterator)
1504.384 +    : container(&__x) {}
1504.385 +  insert_iterator<_Container>&
1504.386 +  operator=(const typename _Container::value_type& __val) {
1504.387 +    container->insert(__val);
1504.388 +    return *this;
1504.389 +  }
1504.390 +  insert_iterator<_Container>& operator*() { return *this; }
1504.391 +  insert_iterator<_Container>& operator++() { return *this; }
1504.392 +  insert_iterator<_Container>& operator++(int) { return *this; }
1504.393 +};
1504.394 +
1504.395 +template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1504.396 +class insert_iterator<unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > {
1504.397 +protected:
1504.398 +  typedef unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container;
1504.399 +  _Container* container;
1504.400 +  typename _Container::iterator iter;
1504.401 +public:
1504.402 +  typedef _Container          container_type;
1504.403 +  typedef output_iterator_tag iterator_category;
1504.404 +  typedef void                value_type;
1504.405 +  typedef void                difference_type;
1504.406 +  typedef void                pointer;
1504.407 +  typedef void                reference;
1504.408 +
1504.409 +  insert_iterator(_Container& __x) : container(&__x) {}
1504.410 +  insert_iterator(_Container& __x, typename _Container::iterator)
1504.411 +    : container(&__x) {}
1504.412 +  insert_iterator<_Container>&
1504.413 +  operator=(const typename _Container::value_type& __val) {
1504.414 +    container->insert(__val);
1504.415 +    return *this;
1504.416 +  }
1504.417 +  insert_iterator<_Container>& operator*() { return *this; }
1504.418 +  insert_iterator<_Container>& operator++() { return *this; }
1504.419 +  insert_iterator<_Container>& operator++(int) { return *this; }
1504.420 +};
1504.421 +
1504.422 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1504.423 +
1504.424 +_STLP_END_NAMESPACE
1504.425 +
1504.426 +#endif /* _STLP_INTERNAL_UNORDERED_MAP_H */
1504.427 +
1504.428 +// Local Variables:
1504.429 +// mode:C++
1504.430 +// End:
  1505.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1505.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_unordered_set.h	Wed Mar 31 12:27:01 2010 +0100
  1505.3 @@ -0,0 +1,398 @@
  1505.4 +/*
  1505.5 + * Copyright (c) 2004
  1505.6 + * Francois Dumont
  1505.7 + *
  1505.8 + * This material is provided "as is", with absolutely no warranty expressed
  1505.9 + * or implied. Any use is at your own risk.
 1505.10 + *
 1505.11 + * Permission to use or copy this software for any purpose is hereby granted
 1505.12 + * without fee, provided the above notices are retained on all copies.
 1505.13 + * Permission to modify the code and to distribute modified code is granted,
 1505.14 + * provided the above notices are retained, and a notice that the code was
 1505.15 + * modified is included with the above copyright notice.
 1505.16 + *
 1505.17 + */
 1505.18 +
 1505.19 +/* NOTE: This is an internal header file, included by other STL headers.
 1505.20 + *   You should not attempt to use it directly.
 1505.21 + */
 1505.22 +
 1505.23 +#ifndef _STLP_INTERNAL_UNORDERED_SET_H
 1505.24 +#define _STLP_INTERNAL_UNORDERED_SET_H
 1505.25 +
 1505.26 +#ifndef _STLP_INTERNAL_HASHTABLE_H
 1505.27 +#  include <stl/_hashtable.h>
 1505.28 +#endif
 1505.29 +
 1505.30 +_STLP_BEGIN_NAMESPACE
 1505.31 +
 1505.32 +//Specific iterator traits creation
 1505.33 +_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedSetTraitsT, Const_traits)
 1505.34 +
 1505.35 +template <class _Value, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Value>),
 1505.36 +          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Value>),
 1505.37 +          _STLP_DEFAULT_ALLOCATOR_SELECT(_Value) >
 1505.38 +class unordered_set
 1505.39 +#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
 1505.40 +               : public __stlport_class<unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> >
 1505.41 +#endif
 1505.42 +{
 1505.43 +  typedef unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> _Self;
 1505.44 +  //Specific iterator traits creation
 1505.45 +  typedef _STLP_PRIV _UnorderedSetTraitsT<_Value> _UnorderedSetTraits;
 1505.46 +public:
 1505.47 +  typedef hashtable<_Value, _Value, _HashFcn,
 1505.48 +                    _UnorderedSetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht;
 1505.49 +public:
 1505.50 +  typedef typename _Ht::key_type key_type;
 1505.51 +  typedef typename _Ht::value_type value_type;
 1505.52 +  typedef typename _Ht::hasher hasher;
 1505.53 +  typedef typename _Ht::key_equal key_equal;
 1505.54 +
 1505.55 +  typedef typename _Ht::size_type size_type;
 1505.56 +  typedef typename _Ht::difference_type difference_type;
 1505.57 +  typedef typename _Ht::pointer         pointer;
 1505.58 +  typedef typename _Ht::const_pointer   const_pointer;
 1505.59 +  typedef typename _Ht::reference       reference;
 1505.60 +  typedef typename _Ht::const_reference const_reference;
 1505.61 +
 1505.62 +  typedef typename _Ht::iterator iterator;
 1505.63 +  typedef typename _Ht::const_iterator const_iterator;
 1505.64 +  typedef typename _Ht::local_iterator local_iterator;
 1505.65 +  typedef typename _Ht::const_local_iterator const_local_iterator;
 1505.66 +
 1505.67 +  typedef typename _Ht::allocator_type allocator_type;
 1505.68 +
 1505.69 +  hasher hash_function() const { return _M_ht.hash_funct(); }
 1505.70 +  key_equal key_eq() const { return _M_ht.key_eq(); }
 1505.71 +  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
 1505.72 +
 1505.73 +private:
 1505.74 +  _Ht _M_ht;
 1505.75 +  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
 1505.76 +
 1505.77 +public:
 1505.78 +  explicit unordered_set(size_type __n = 100, const hasher& __hf = hasher(),
 1505.79 +                         const key_equal& __eql = key_equal(),
 1505.80 +                         const allocator_type& __a = allocator_type())
 1505.81 +    : _M_ht(__n, __hf, __eql, __a) {}
 1505.82 +
 1505.83 +  unordered_set(__move_source<_Self> src)
 1505.84 +    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
 1505.85 +
 1505.86 +#if defined (_STLP_MEMBER_TEMPLATES)
 1505.87 +  template <class _InputIterator>
 1505.88 +  unordered_set(_InputIterator __f, _InputIterator __l,
 1505.89 +                size_type __n = 100, const hasher& __hf = hasher(),
 1505.90 +                const key_equal& __eql = key_equal(),
 1505.91 +                const allocator_type& __a = allocator_type())
 1505.92 +    : _M_ht(__n, __hf, __eql, __a)
 1505.93 +  { _M_ht.insert_unique(__f, __l); }
 1505.94 +#else
 1505.95 +  unordered_set(const value_type* __f, const value_type* __l,
 1505.96 +                size_type __n = 100, const hasher& __hf = hasher(),
 1505.97 +                const key_equal& __eql = key_equal(),
 1505.98 +                const allocator_type& __a = allocator_type())
 1505.99 +    : _M_ht(__n, __hf, __eql, __a)
1505.100 +  { _M_ht.insert_unique(__f, __l); }
1505.101 +
1505.102 +  unordered_set(const_iterator __f, const_iterator __l,
1505.103 +                size_type __n = 100, const hasher& __hf = hasher(),
1505.104 +                const key_equal& __eql = key_equal(),
1505.105 +                const allocator_type& __a = allocator_type())
1505.106 +    : _M_ht(__n, __hf, __eql, __a)
1505.107 +  { _M_ht.insert_unique(__f, __l); }
1505.108 +#endif /*_STLP_MEMBER_TEMPLATES */
1505.109 +
1505.110 +  _Self& operator = (const _Self& __other)
1505.111 +  { _M_ht = __other._M_ht; return *this; }
1505.112 +
1505.113 +  size_type size() const { return _M_ht.size(); }
1505.114 +  size_type max_size() const { return _M_ht.max_size(); }
1505.115 +  bool empty() const { return _M_ht.empty(); }
1505.116 +  void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); }
1505.117 +
1505.118 +  iterator begin() { return _M_ht.begin(); }
1505.119 +  iterator end() { return _M_ht.end(); }
1505.120 +  const_iterator begin() const { return _M_ht.begin(); }
1505.121 +  const_iterator end() const { return _M_ht.end(); }
1505.122 +
1505.123 +  pair<iterator, bool> insert(const value_type& __obj)
1505.124 +  { return _M_ht.insert_unique(__obj); }
1505.125 +  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1505.126 +  { return _M_ht.insert_unique(__obj); }
1505.127 +#if defined (_STLP_MEMBER_TEMPLATES)
1505.128 +  template <class _InputIterator>
1505.129 +  void insert(_InputIterator __f, _InputIterator __l)
1505.130 +#else
1505.131 +  void insert(const_iterator __f, const_iterator __l)
1505.132 +  {_M_ht.insert_unique(__f, __l); }
1505.133 +  void insert(const value_type* __f, const value_type* __l)
1505.134 +#endif
1505.135 +  { _M_ht.insert_unique(__f,__l); }
1505.136 +
1505.137 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.138 +  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1505.139 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.140 +  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1505.141 +
1505.142 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.143 +  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1505.144 +
1505.145 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.146 +  pair<iterator, iterator> equal_range(const _KT& __key)
1505.147 +  { return _M_ht.equal_range(__key); }
1505.148 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.149 +  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1505.150 +  { return _M_ht.equal_range(__key); }
1505.151 +
1505.152 +  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1505.153 +  void erase(const_iterator __it) { _M_ht.erase(__it); }
1505.154 +  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1505.155 +  void clear() { _M_ht.clear(); }
1505.156 +
1505.157 +  size_type bucket_count() const { return _M_ht.bucket_count(); }
1505.158 +  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1505.159 +  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1505.160 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.161 +  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1505.162 +  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1505.163 +  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1505.164 +  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1505.165 +  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1505.166 +
1505.167 +  float load_factor() const { return _M_ht.load_factor(); }
1505.168 +  float max_load_factor() const { return _M_ht.max_load_factor(); }
1505.169 +  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1505.170 +  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1505.171 +};
1505.172 +
1505.173 +//Specific iterator traits creation
1505.174 +_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMultisetTraitsT, Const_traits)
1505.175 +
1505.176 +template <class _Value, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Value>),
1505.177 +          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Value>),
1505.178 +          _STLP_DEFAULT_ALLOCATOR_SELECT(_Value) >
1505.179 +class unordered_multiset
1505.180 +#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
1505.181 +               : public __stlport_class<unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> >
1505.182 +#endif
1505.183 +{
1505.184 +  typedef unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Self;
1505.185 +  //Specific iterator traits creation
1505.186 +  typedef _STLP_PRIV _UnorderedMultisetTraitsT<_Value> _UnorderedMultisetTraits;
1505.187 +public:
1505.188 +  typedef hashtable<_Value, _Value, _HashFcn,
1505.189 +                    _UnorderedMultisetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht;
1505.190 +
1505.191 +  typedef typename _Ht::key_type key_type;
1505.192 +  typedef typename _Ht::value_type value_type;
1505.193 +  typedef typename _Ht::hasher hasher;
1505.194 +  typedef typename _Ht::key_equal key_equal;
1505.195 +
1505.196 +  typedef typename _Ht::size_type size_type;
1505.197 +  typedef typename _Ht::difference_type difference_type;
1505.198 +  typedef typename _Ht::pointer       pointer;
1505.199 +  typedef typename _Ht::const_pointer const_pointer;
1505.200 +  typedef typename _Ht::reference reference;
1505.201 +  typedef typename _Ht::const_reference const_reference;
1505.202 +
1505.203 +  typedef typename _Ht::iterator iterator;
1505.204 +  typedef typename _Ht::const_iterator const_iterator;
1505.205 +  typedef typename _Ht::local_iterator local_iterator;
1505.206 +  typedef typename _Ht::const_local_iterator const_local_iterator;
1505.207 +
1505.208 +  typedef typename _Ht::allocator_type allocator_type;
1505.209 +
1505.210 +  hasher hash_function() const { return _M_ht.hash_funct(); }
1505.211 +  key_equal key_eq() const { return _M_ht.key_eq(); }
1505.212 +  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
1505.213 +
1505.214 +private:
1505.215 +  _Ht _M_ht;
1505.216 +  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
1505.217 +
1505.218 +public:
1505.219 +  explicit unordered_multiset(size_type __n = 100, const hasher& __hf = hasher(),
1505.220 +                              const key_equal& __eql = key_equal(),
1505.221 +                              const allocator_type& __a = allocator_type())
1505.222 +    : _M_ht(__n, __hf, __eql, __a) {}
1505.223 +
1505.224 +  unordered_multiset(__move_source<_Self> src)
1505.225 +    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
1505.226 +
1505.227 +#if defined (_STLP_MEMBER_TEMPLATES)
1505.228 +  template <class _InputIterator>
1505.229 +  unordered_multiset(_InputIterator __f, _InputIterator __l,
1505.230 +                     size_type __n = 100, const hasher& __hf = hasher(),
1505.231 +                     const key_equal& __eql = key_equal(),
1505.232 +                     const allocator_type& __a = allocator_type())
1505.233 +    : _M_ht(__n, __hf, __eql, __a)
1505.234 +  { _M_ht.insert_equal(__f, __l); }
1505.235 +#else
1505.236 +  unordered_multiset(const value_type* __f, const value_type* __l,
1505.237 +                     size_type __n = 100, const hasher& __hf = hasher(),
1505.238 +                     const key_equal& __eql = key_equal(),
1505.239 +                     const allocator_type& __a = allocator_type())
1505.240 +    : _M_ht(__n, __hf, __eql, __a)
1505.241 +  { _M_ht.insert_equal(__f, __l); }
1505.242 +
1505.243 +  unordered_multiset(const_iterator __f, const_iterator __l,
1505.244 +                     size_type __n = 100, const hasher& __hf = hasher(),
1505.245 +                     const key_equal& __eql = key_equal(),
1505.246 +                     const allocator_type& __a = allocator_type())
1505.247 +    : _M_ht(__n, __hf, __eql, __a)
1505.248 +  { _M_ht.insert_equal(__f, __l); }
1505.249 +#endif /*_STLP_MEMBER_TEMPLATES */
1505.250 +
1505.251 +  _Self& operator = (const _Self& __other)
1505.252 +  { _M_ht = __other._M_ht; return *this; }
1505.253 +
1505.254 +  size_type size() const { return _M_ht.size(); }
1505.255 +  size_type max_size() const { return _M_ht.max_size(); }
1505.256 +  bool empty() const { return _M_ht.empty(); }
1505.257 +  void swap(_Self& hs) { _M_ht.swap(hs._M_ht); }
1505.258 +
1505.259 +  iterator begin() { return _M_ht.begin(); }
1505.260 +  iterator end() { return _M_ht.end(); }
1505.261 +  const_iterator begin() const { return _M_ht.begin(); }
1505.262 +  const_iterator end() const { return _M_ht.end(); }
1505.263 +
1505.264 +  iterator insert(const value_type& __obj)
1505.265 +  { return _M_ht.insert_equal(__obj); }
1505.266 +  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1505.267 +  { return _M_ht.insert_equal(__obj); }
1505.268 +#if defined (_STLP_MEMBER_TEMPLATES)
1505.269 +  template <class _InputIterator>
1505.270 +  void insert(_InputIterator __f, _InputIterator __l)
1505.271 +#else
1505.272 +  void insert(const value_type* __f, const value_type* __l)
1505.273 +  { _M_ht.insert_equal(__f,__l); }
1505.274 +  void insert(const_iterator __f, const_iterator __l)
1505.275 +#endif /*_STLP_MEMBER_TEMPLATES */
1505.276 +  { _M_ht.insert_equal(__f, __l); }
1505.277 +
1505.278 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.279 +  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1505.280 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.281 +  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1505.282 +
1505.283 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.284 +  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1505.285 +
1505.286 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.287 +  pair<iterator, iterator> equal_range(const _KT& __key)
1505.288 +  { return _M_ht.equal_range(__key); }
1505.289 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.290 +  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1505.291 +  { return _M_ht.equal_range(__key); }
1505.292 +
1505.293 +  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1505.294 +  void erase(const_iterator __it) { _M_ht.erase(__it); }
1505.295 +  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1505.296 +  void clear() { _M_ht.clear(); }
1505.297 +
1505.298 +  size_type bucket_count() const { return _M_ht.bucket_count(); }
1505.299 +  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1505.300 +  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1505.301 +  _STLP_TEMPLATE_FOR_CONT_EXT
1505.302 +  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1505.303 +  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1505.304 +  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1505.305 +  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1505.306 +  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1505.307 +
1505.308 +  float load_factor() const { return _M_ht.load_factor(); }
1505.309 +  float max_load_factor() const { return _M_ht.max_load_factor(); }
1505.310 +  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1505.311 +  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1505.312 +};
1505.313 +
1505.314 +#define _STLP_TEMPLATE_HEADER template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1505.315 +#define _STLP_TEMPLATE_CONTAINER unordered_set<_Value,_HashFcn,_EqualKey,_Alloc>
1505.316 +
1505.317 +#include <stl/_relops_hash_cont.h>
1505.318 +
1505.319 +#undef _STLP_TEMPLATE_CONTAINER
1505.320 +#define _STLP_TEMPLATE_CONTAINER unordered_multiset<_Value,_HashFcn,_EqualKey,_Alloc>
1505.321 +#include <stl/_relops_hash_cont.h>
1505.322 +
1505.323 +#undef _STLP_TEMPLATE_CONTAINER
1505.324 +#undef _STLP_TEMPLATE_HEADER
1505.325 +
1505.326 +// Specialization of insert_iterator so that it will work for unordered_set
1505.327 +// and unordered_multiset.
1505.328 +
1505.329 +#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1505.330 +template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1505.331 +struct __move_traits<unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> > :
1505.332 +  _STLP_PRIV __move_traits_aux<typename unordered_set<_Value, _HashFcn, _EqualKey, _Alloc>::_Ht>
1505.333 +{};
1505.334 +
1505.335 +template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1505.336 +struct __move_traits<unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > :
1505.337 +  _STLP_PRIV __move_traits_aux<typename unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc>::_Ht>
1505.338 +{};
1505.339 +
1505.340 +template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1505.341 +class insert_iterator<unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> > {
1505.342 +protected:
1505.343 +  typedef unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> _Container;
1505.344 +  _Container* container;
1505.345 +public:
1505.346 +  typedef _Container          container_type;
1505.347 +  typedef output_iterator_tag iterator_category;
1505.348 +  typedef void                value_type;
1505.349 +  typedef void                difference_type;
1505.350 +  typedef void                pointer;
1505.351 +  typedef void                reference;
1505.352 +
1505.353 +  insert_iterator(_Container& __x) : container(&__x) {}
1505.354 +  insert_iterator(_Container& __x, typename _Container::iterator)
1505.355 +    : container(&__x) {}
1505.356 +  insert_iterator<_Container>&
1505.357 +  operator=(const typename _Container::value_type& __val) {
1505.358 +    container->insert(__val);
1505.359 +    return *this;
1505.360 +  }
1505.361 +  insert_iterator<_Container>& operator*() { return *this; }
1505.362 +  insert_iterator<_Container>& operator++() { return *this; }
1505.363 +  insert_iterator<_Container>& operator++(int) { return *this; }
1505.364 +};
1505.365 +
1505.366 +template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1505.367 +class insert_iterator<unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > {
1505.368 +protected:
1505.369 +  typedef unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Container;
1505.370 +  _Container* container;
1505.371 +  typename _Container::iterator iter;
1505.372 +public:
1505.373 +  typedef _Container          container_type;
1505.374 +  typedef output_iterator_tag iterator_category;
1505.375 +  typedef void                value_type;
1505.376 +  typedef void                difference_type;
1505.377 +  typedef void                pointer;
1505.378 +  typedef void                reference;
1505.379 +
1505.380 +  insert_iterator(_Container& __x) : container(&__x) {}
1505.381 +  insert_iterator(_Container& __x, typename _Container::iterator)
1505.382 +    : container(&__x) {}
1505.383 +  insert_iterator<_Container>&
1505.384 +  operator=(const typename _Container::value_type& __val) {
1505.385 +    container->insert(__val);
1505.386 +    return *this;
1505.387 +  }
1505.388 +  insert_iterator<_Container>& operator*() { return *this; }
1505.389 +  insert_iterator<_Container>& operator++() { return *this; }
1505.390 +  insert_iterator<_Container>& operator++(int) { return *this; }
1505.391 +};
1505.392 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1505.393 +
1505.394 +_STLP_END_NAMESPACE
1505.395 +
1505.396 +#endif /* _STLP_INTERNAL_UNORDERED_SET_H */
1505.397 +
1505.398 +// Local Variables:
1505.399 +// mode:C++
1505.400 +// End:
1505.401 +
  1506.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1506.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_valarray.c	Wed Mar 31 12:27:01 2010 +0100
  1506.3 @@ -0,0 +1,203 @@
  1506.4 +/*
  1506.5 + *
  1506.6 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1506.7 + *
  1506.8 + * Copyright (c) 1994
  1506.9 + * Hewlett-Packard Company
 1506.10 + *
 1506.11 + * Copyright (c) 1996,1997
 1506.12 + * Silicon Graphics Computer Systems, Inc.
 1506.13 + *
 1506.14 + * Copyright (c) 1997
 1506.15 + * Moscow Center for SPARC Technology
 1506.16 + *
 1506.17 + * Copyright (c) 1999 
 1506.18 + * Boris Fomitchev
 1506.19 + *
 1506.20 + * This material is provided "as is", with absolutely no warranty expressed
 1506.21 + * or implied. Any use is at your own risk.
 1506.22 + *
 1506.23 + * Permission to use or copy this software for any purpose is hereby granted 
 1506.24 + * without fee, provided the above notices are retained on all copies.
 1506.25 + * Permission to modify the code and to distribute modified code is granted,
 1506.26 + * provided the above notices are retained, and a notice that the code was
 1506.27 + * modified is included with the above copyright notice.
 1506.28 + *
 1506.29 + */
 1506.30 +#ifndef _STLP_VALARRAY_C
 1506.31 +#define _STLP_VALARRAY_C
 1506.32 +
 1506.33 +#ifndef _STLP_VALARRAY_H
 1506.34 +# include <stl/_valarray.h>
 1506.35 +#endif
 1506.36 +
 1506.37 +_STLP_BEGIN_NAMESPACE
 1506.38 +
 1506.39 +template <class _Tp>
 1506.40 +_Valarray_bool valarray<_Tp>:: operator!() const {
 1506.41 +  _Valarray_bool __tmp(this->size(), _Valarray_bool::_NoInit());
 1506.42 +  for (size_t __i = 0; __i < this->size(); ++__i)
 1506.43 +    __tmp[__i] = !(*this)[__i];
 1506.44 +  return __tmp;
 1506.45 +}
 1506.46 +
 1506.47 +// Behavior is undefined if __x and *this have different sizes
 1506.48 +template <class _Tp>
 1506.49 +valarray<_Tp>& valarray<_Tp>::operator=(const slice_array<_Tp>& __x)
 1506.50 +{
 1506.51 +  size_t __index = __x._M_slice.start();
 1506.52 +  for (size_t __i = 0;
 1506.53 +       __i < __x._M_slice.size();
 1506.54 +       ++__i, __index += __x._M_slice.stride())
 1506.55 +    (*this)[__i] = (*(__x._M_array))[__index];
 1506.56 +  return *this;
 1506.57 +}
 1506.58 +
 1506.59 +template <class _Tp>
 1506.60 +valarray<_Tp> valarray<_Tp>::operator[](slice __slice) const {
 1506.61 +  valarray<_Tp> __tmp(__slice.size(), _NoInit());
 1506.62 +  size_t __index = __slice.start();
 1506.63 +  for (size_t __i = 0;
 1506.64 +       __i < __slice.size();
 1506.65 +       ++__i, __index += __slice.stride())
 1506.66 +    __tmp[__i] = (*this)[__index];
 1506.67 +  return __tmp;
 1506.68 +}
 1506.69 +
 1506.70 +template <class _Size>
 1506.71 +bool _Gslice_Iter_tmpl<_Size>::_M_incr() {
 1506.72 +  size_t __dim = _M_indices.size() - 1;
 1506.73 +  ++_M_step;
 1506.74 +  while (true) {
 1506.75 +    _M_1d_idx += _M_gslice._M_strides[__dim];
 1506.76 +    if (++_M_indices[__dim] != _M_gslice._M_lengths[__dim])
 1506.77 +      return true;
 1506.78 +    else if (__dim != 0) {
 1506.79 +      _M_1d_idx -=
 1506.80 +	_M_gslice._M_strides[__dim] * _M_gslice._M_lengths[__dim];
 1506.81 +      _M_indices[__dim] = 0;
 1506.82 +      --__dim;
 1506.83 +    }
 1506.84 +    else
 1506.85 +      return false;
 1506.86 +  }
 1506.87 +}
 1506.88 +
 1506.89 +// Behavior is undefined if __x and *this have different sizes, or if
 1506.90 +// __x was constructed from a degenerate gslice.
 1506.91 +template <class _Tp>
 1506.92 +valarray<_Tp>& valarray<_Tp>::operator=(const gslice_array<_Tp>& __x)
 1506.93 +{
 1506.94 +  if (this->size() != 0) {
 1506.95 +    _Gslice_Iter __i(__x._M_gslice);
 1506.96 +    do
 1506.97 +      (*this)[__i._M_step] = __x._M_array[__i._M_1d_idx];
 1506.98 +    while(__i._M_incr());
 1506.99 +  }
1506.100 +  return *this;
1506.101 +}
1506.102 +
1506.103 +template <class _Tp>
1506.104 +valarray<_Tp> valarray<_Tp>::operator[](gslice __slice) const
1506.105 +{
1506.106 +  valarray<_Tp> __tmp(__slice._M_size(), _NoInit());
1506.107 +  if (__tmp.size() != 0) {
1506.108 +    _Gslice_Iter __i(__slice);
1506.109 +    do __tmp[__i._M_step] = (*this)[__i._M_1d_idx]; while(__i._M_incr());
1506.110 +  }
1506.111 +  return __tmp;
1506.112 +}
1506.113 +
1506.114 +template <class _Tp>
1506.115 +valarray<_Tp> valarray<_Tp>::operator[](const _Valarray_bool& __mask) const
1506.116 +{
1506.117 +  size_t _p_size = 0;
1506.118 +  {
1506.119 +    for (size_t __i = 0; __i < __mask.size(); ++__i)
1506.120 +      if (__mask[__i]) ++_p_size;
1506.121 +  }
1506.122 +
1506.123 +  valarray<_Tp> __tmp(_p_size, _NoInit());
1506.124 +  size_t __idx = 0;
1506.125 +  {
1506.126 +    for (size_t __i = 0; __i < __mask.size(); ++__i)
1506.127 +      if (__mask[__i]) __tmp[__idx++] = (*this)[__i];
1506.128 +  }
1506.129 +
1506.130 +  return __tmp;
1506.131 +}
1506.132 +
1506.133 +template <class _Tp>
1506.134 +valarray<_Tp>& valarray<_Tp>::operator=(const indirect_array<_Tp>& __x) {
1506.135 +  for (size_t __i = 0; __i < __x._M_addr.size(); ++__i)
1506.136 +    (*this)[__i] = __x._M_array[__x._M_addr[__i]];
1506.137 +  return *this;
1506.138 +}
1506.139 +
1506.140 +template <class _Tp>
1506.141 +valarray<_Tp>
1506.142 +valarray<_Tp>::operator[](const _Valarray_size_t& __addr) const
1506.143 +{
1506.144 +  valarray<_Tp> __tmp(__addr.size(), _NoInit());
1506.145 +  for (size_t __i = 0; __i < __addr.size(); ++__i)
1506.146 +    __tmp[__i] = (*this)[__addr[__i]];
1506.147 +  return __tmp;
1506.148 +}
1506.149 +
1506.150 +//----------------------------------------------------------------------
1506.151 +// Other valarray noninline member functions
1506.152 +
1506.153 +// Shift and cshift
1506.154 +
1506.155 +template <class _Tp>
1506.156 +valarray<_Tp> valarray<_Tp>::shift(int __n) const
1506.157 +{
1506.158 +  valarray<_Tp> __tmp(this->size());
1506.159 +
1506.160 +  if (__n >= 0) {
1506.161 +    if (__n < this->size())
1506.162 +      copy(this->_M_first + __n, this->_M_first + this->size(),
1506.163 +           __tmp._M_first);
1506.164 +  }
1506.165 +  else {
1506.166 +    if (-__n < this->size())
1506.167 +      copy(this->_M_first, this->_M_first + this->size() + __n,
1506.168 +           __tmp._M_first - __n);
1506.169 +  }
1506.170 +  return __tmp;
1506.171 +}
1506.172 +
1506.173 +template <class _Tp>
1506.174 +valarray<_Tp> valarray<_Tp>::cshift(int __m) const
1506.175 +{
1506.176 +  valarray<_Tp> __tmp(this->size());
1506.177 +  
1506.178 +#ifdef __SYMBIAN32__
1506.179 +	if (!this->size())
1506.180 +		return __tmp;
1506.181 +#endif	
1506.182 +	
1506.183 +  // Reduce __m to an equivalent number in the range [0, size()).  We
1506.184 +  // have to be careful with negative numbers, since the sign of a % b
1506.185 +  // is unspecified when a < 0.
1506.186 +  long __n = __m;
1506.187 +  if (this->size() < (numeric_limits<long>::max)())
1506.188 +    __n %= long(this->size());
1506.189 +  if (__n < 0)
1506.190 +    __n += this->size();
1506.191 +
1506.192 +  copy(this->_M_first,       this->_M_first + __n,
1506.193 +       __tmp._M_first + (this->size() - __n));
1506.194 +  copy(this->_M_first + __n, this->_M_first + this->size(),
1506.195 +       __tmp._M_first);
1506.196 +
1506.197 +  return __tmp;
1506.198 +}
1506.199 +
1506.200 +_STLP_END_NAMESPACE
1506.201 +
1506.202 +#endif /*  _STLP_VALARRAY_C */
1506.203 +
1506.204 +// Local Variables:
1506.205 +// mode:C++
1506.206 +// End:
  1507.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1507.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_valarray.h	Wed Mar 31 12:27:01 2010 +0100
  1507.3 @@ -0,0 +1,1791 @@
  1507.4 +/*
  1507.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1507.6 + * Copyright (c) 1999
  1507.7 + * Silicon Graphics Computer Systems, Inc.
  1507.8 + *
  1507.9 + * Copyright (c) 1999 
 1507.10 + * Boris Fomitchev
 1507.11 + *
 1507.12 + * This material is provided "as is", with absolutely no warranty expressed
 1507.13 + * or implied. Any use is at your own risk.
 1507.14 + *
 1507.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1507.16 + * without fee, provided the above notices are retained on all copies.
 1507.17 + * Permission to modify the code and to distribute modified code is granted,
 1507.18 + * provided the above notices are retained, and a notice that the code was
 1507.19 + * modified is included with the above copyright notice.
 1507.20 + *
 1507.21 + */ 
 1507.22 +
 1507.23 +#ifndef _STLP_VALARRAY_H
 1507.24 +#define _STLP_VALARRAY_H
 1507.25 +
 1507.26 +#ifndef _STLP_CMATH_H_HEADER
 1507.27 +#include <stl/_cmath.h>
 1507.28 +#endif
 1507.29 +#ifndef _STLP_INTERNAL_NEW_HEADER
 1507.30 +#include <stl/_new.h>
 1507.31 +#endif
 1507.32 +#ifndef _STLP_INTERNAL_ALGO_H
 1507.33 +#include <stl/_algo.h>
 1507.34 +#endif
 1507.35 +#ifndef _STLP_INTERNAL_NUMERIC_H
 1507.36 +#include <stl/_numeric.h>
 1507.37 +#endif
 1507.38 +#ifndef _STLP_LIMITS_H
 1507.39 +#include <limits>
 1507.40 +#endif
 1507.41 +
 1507.42 +//To resolve the unidentified identifier __THROW_BAD_ALLOC 
 1507.43 +#include <stl/_alloc.h>
 1507.44 +
 1507.45 +_STLP_BEGIN_NAMESPACE
 1507.46 +
 1507.47 +class slice;
 1507.48 +class gslice;
 1507.49 +
 1507.50 +template <class _Tp> class valarray;
 1507.51 +typedef valarray<bool>    _Valarray_bool;
 1507.52 +typedef valarray<size_t>  _Valarray_size_t;
 1507.53 +
 1507.54 +template <class _Tp> class slice_array;
 1507.55 +template <class _Tp> class gslice_array;
 1507.56 +template <class _Tp> class mask_array;
 1507.57 +template <class _Tp> class indirect_array;
 1507.58 +
 1507.59 +//----------------------------------------------------------------------
 1507.60 +// class valarray
 1507.61 +
 1507.62 +// Base class to handle memory allocation and deallocation.  We can't just
 1507.63 +// use vector<>, because vector<bool> would be unsuitable as an internal 
 1507.64 +// representation for valarray<bool>.
 1507.65 +
 1507.66 +template <class _Tp> 
 1507.67 +struct _Valarray_base
 1507.68 +{
 1507.69 +  _Tp*   _M_first;
 1507.70 +  size_t _M_size;
 1507.71 +
 1507.72 +  _Valarray_base() : _M_first(0), _M_size(0) {}
 1507.73 +  _Valarray_base(size_t __n) : _M_first(0), _M_size(0) { _M_allocate(__n); }
 1507.74 +  ~_Valarray_base() { _M_deallocate(); }
 1507.75 +
 1507.76 +  void _M_allocate(size_t __n) {
 1507.77 +    if (__n != 0) {
 1507.78 +#ifdef __SYMBIAN32__
 1507.79 +      _M_first = ::new _Tp[__n];
 1507.80 +#else
 1507.81 +      _M_first = __STATIC_CAST(_Tp*, (malloc(__n * sizeof(_Tp))));
 1507.82 +#endif
 1507.83 +      _M_size  = __n;
 1507.84 +      if (_M_first == 0) {
 1507.85 +        _M_size = 0;
 1507.86 +        __THROW_BAD_ALLOC;
 1507.87 +      }
 1507.88 +    }
 1507.89 +    else {
 1507.90 +      _M_first = 0;
 1507.91 +      _M_size = 0;
 1507.92 +    }
 1507.93 +  }
 1507.94 +
 1507.95 +  void _M_deallocate() {
 1507.96 +#ifdef __SYMBIAN32__
 1507.97 +    delete [] _M_first;
 1507.98 +#else
 1507.99 +    free(_M_first);
1507.100 +#endif
1507.101 +    _M_first = 0;
1507.102 +    _M_size = 0;
1507.103 +  }
1507.104 +};
1507.105 +
1507.106 +template <class _Tp> 
1507.107 +class valarray : private _Valarray_base<_Tp>
1507.108 +{
1507.109 +  friend class gslice;
1507.110 +
1507.111 +public:
1507.112 +  typedef _Tp value_type;
1507.113 +
1507.114 +  // Basic constructors
1507.115 +  valarray() : _Valarray_base<_Tp>() {}
1507.116 +  valarray(size_t __n) : _Valarray_base<_Tp>(__n) {}
1507.117 +  valarray(const value_type& __x, size_t __n) : _Valarray_base<_Tp>(__n)
1507.118 +    { uninitialized_fill_n(this->_M_first, this->_M_size, __x); }
1507.119 +  valarray(const value_type* __p, size_t __n) : _Valarray_base<_Tp>(__n)
1507.120 +    { uninitialized_copy(__p, __p + __n, this->_M_first); } 
1507.121 +  valarray(const valarray<_Tp>& __x) : _Valarray_base<_Tp>(__x._M_size) {
1507.122 +    uninitialized_copy(__x._M_first, __x._M_first + __x._M_size,
1507.123 +                       this->_M_first);
1507.124 +  }
1507.125 +
1507.126 +  // Constructors from auxiliary array types
1507.127 +  valarray(const slice_array<_Tp>&);
1507.128 +  valarray(const gslice_array<_Tp>&);
1507.129 +  valarray(const mask_array<_Tp>&);
1507.130 +  valarray(const indirect_array<_Tp>&);
1507.131 +
1507.132 +  // Destructor
1507.133 +  ~valarray() { _STLP_STD::_Destroy(this->_M_first, this->_M_first + this->_M_size); }
1507.134 +
1507.135 +  // Extension: constructor that doesn't initialize valarray elements to a
1507.136 +  // specific value.  This is faster for types such as int and double.
1507.137 +private:
1507.138 +  void _M_initialize(const __true_type&) {}
1507.139 +  void _M_initialize(const __false_type&)
1507.140 +    { uninitialized_fill_n(this->_M_first, this->_M_size, value_type()); }
1507.141 +
1507.142 +public:
1507.143 +  struct _NoInit {};
1507.144 +  valarray(size_t __n, _NoInit) : _Valarray_base<_Tp>(__n) {
1507.145 +    typedef typename __type_traits<_Tp>::has_trivial_default_constructor _Is_Trivial;
1507.146 +    _M_initialize(_Is_Trivial());
1507.147 +  }
1507.148 +
1507.149 +public:                         // Assignment
1507.150 +  // Basic assignment.  Note that 'x = y' is undefined if x.size() != y.size()
1507.151 +  valarray<_Tp>& operator=(const valarray<_Tp>& __x) {
1507.152 +    _STLP_ASSERT(__x.size() == this->size())
1507.153 +    if (this != &__x)
1507.154 +      {
1507.155 +#ifdef __SYMBIAN32__
1507.156 +      resize(__x._M_size);
1507.157 +#endif
1507.158 +      copy(__x._M_first, __x._M_first + __x._M_size, this->_M_first);
1507.159 +      }
1507.160 +    return *this;
1507.161 +  }
1507.162 +
1507.163 +  // Scalar assignment
1507.164 +  valarray<_Tp>& operator=(const value_type& __x) {
1507.165 +    fill_n(this->_M_first, this->_M_size, __x);
1507.166 +    return *this;
1507.167 +  }
1507.168 +
1507.169 +  // Assignment of auxiliary array types
1507.170 +  valarray<_Tp>& operator=(const slice_array<_Tp>&);
1507.171 +  valarray<_Tp>& operator=(const gslice_array<_Tp>&);
1507.172 +  valarray<_Tp>& operator=(const mask_array<_Tp>&);
1507.173 +  valarray<_Tp>& operator=(const indirect_array<_Tp>&);
1507.174 +
1507.175 +public:                         // Element access
1507.176 +  value_type  operator[](size_t __n) const { return this->_M_first[__n]; }
1507.177 +  value_type& operator[](size_t __n)       { return this->_M_first[__n]; }
1507.178 +  size_t size() const { return this->_M_size; }
1507.179 +
1507.180 +public:                         // Subsetting operations with auxiliary type
1507.181 +  valarray<_Tp>            operator[](slice) const;
1507.182 +  slice_array<_Tp>    operator[](slice);
1507.183 +  valarray<_Tp>            operator[](gslice) const;
1507.184 +  gslice_array<_Tp>   operator[](const gslice&);  
1507.185 +  valarray<_Tp>            operator[](const _Valarray_bool&) const;
1507.186 +  mask_array<_Tp>     operator[](const _Valarray_bool&);
1507.187 +  valarray<_Tp>            operator[](const _Valarray_size_t&) const;
1507.188 +  indirect_array<_Tp> operator[](const _Valarray_size_t&);
1507.189 +  
1507.190 +public:                         // Unary operators.
1507.191 +  valarray<_Tp> operator+() const { return *this; }
1507.192 +
1507.193 +  valarray<_Tp> operator-() const {
1507.194 +    valarray<_Tp> __tmp(this->size(), _NoInit());
1507.195 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.196 +      __tmp[__i] = -(*this)[__i];
1507.197 +    return __tmp;
1507.198 +  }
1507.199 +  
1507.200 +  valarray<_Tp> operator~() const {
1507.201 +    valarray<_Tp> __tmp(this->size(), _NoInit());
1507.202 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.203 +      __tmp[__i] = ~(*this)[__i];
1507.204 +    return __tmp;
1507.205 +  }
1507.206 +
1507.207 +  _Valarray_bool operator!() const;
1507.208 +
1507.209 +public:                         // Scalar computed assignment.
1507.210 +  valarray<_Tp>& operator*= (const value_type& __x) {
1507.211 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.212 +      (*this)[__i] *= __x;
1507.213 +    return *this;
1507.214 +  }
1507.215 +    
1507.216 +  valarray<_Tp>& operator/= (const value_type& __x) {
1507.217 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.218 +      (*this)[__i] /= __x;
1507.219 +    return *this;
1507.220 +  }
1507.221 +
1507.222 +  valarray<_Tp>& operator%= (const value_type& __x) {
1507.223 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.224 +      (*this)[__i] %= __x;
1507.225 +    return *this;
1507.226 +  }
1507.227 +
1507.228 +  valarray<_Tp>& operator+= (const value_type& __x) {
1507.229 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.230 +      (*this)[__i] += __x;
1507.231 +    return *this;
1507.232 +  }
1507.233 +
1507.234 +  valarray<_Tp>& operator-= (const value_type& __x) {
1507.235 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.236 +      (*this)[__i] -= __x;
1507.237 +    return *this;
1507.238 +  }
1507.239 +
1507.240 +  valarray<_Tp>& operator^= (const value_type& __x) {
1507.241 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.242 +      (*this)[__i] ^= __x;
1507.243 +    return *this;
1507.244 +  }
1507.245 +
1507.246 +  valarray<_Tp>& operator&= (const value_type& __x) {
1507.247 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.248 +      (*this)[__i] &= __x;
1507.249 +    return *this;
1507.250 +  }
1507.251 +
1507.252 +  valarray<_Tp>& operator|= (const value_type& __x) {
1507.253 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.254 +      (*this)[__i] |= __x;
1507.255 +    return *this;
1507.256 +  }
1507.257 +
1507.258 +  valarray<_Tp>& operator<<= (const value_type& __x) {
1507.259 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.260 +      (*this)[__i] <<= __x;
1507.261 +    return *this;
1507.262 +  }
1507.263 +
1507.264 +  valarray<_Tp>& operator>>= (const value_type& __x) {
1507.265 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.266 +      (*this)[__i] >>= __x;
1507.267 +    return *this;
1507.268 +  }
1507.269 +
1507.270 +public:                         // Array computed assignment.
1507.271 +  valarray<_Tp>& operator*= (const valarray<_Tp>& __x) {
1507.272 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.273 +      (*this)[__i] *= __x[__i];
1507.274 +    return *this;
1507.275 +  }
1507.276 +    
1507.277 +  valarray<_Tp>& operator/= (const valarray<_Tp>& __x) {
1507.278 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.279 +      (*this)[__i] /= __x[__i];
1507.280 +    return *this;
1507.281 +  }
1507.282 +
1507.283 +  valarray<_Tp>& operator%= (const valarray<_Tp>& __x) {
1507.284 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.285 +      (*this)[__i] %= __x[__i];
1507.286 +    return *this;
1507.287 +  }
1507.288 +
1507.289 +  valarray<_Tp>& operator+= (const valarray<_Tp>& __x) {
1507.290 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.291 +      (*this)[__i] += __x[__i];
1507.292 +    return *this;
1507.293 +  }
1507.294 +
1507.295 +  valarray<_Tp>& operator-= (const valarray<_Tp>& __x) {
1507.296 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.297 +      (*this)[__i] -= __x[__i];
1507.298 +    return *this;
1507.299 +  }
1507.300 +
1507.301 +  valarray<_Tp>& operator^= (const valarray<_Tp>& __x) {
1507.302 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.303 +      (*this)[__i] ^= __x[__i];
1507.304 +    return *this;
1507.305 +  }
1507.306 +
1507.307 +  valarray<_Tp>& operator&= (const valarray<_Tp>& __x) {
1507.308 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.309 +      (*this)[__i] &= __x[__i];
1507.310 +    return *this;
1507.311 +  }
1507.312 +
1507.313 +  valarray<_Tp>& operator|= (const valarray<_Tp>& __x) {
1507.314 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.315 +      (*this)[__i] |= __x[__i];
1507.316 +    return *this;
1507.317 +  }
1507.318 +
1507.319 +  valarray<_Tp>& operator<<= (const valarray<_Tp>& __x) {
1507.320 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.321 +      (*this)[__i] <<= __x[__i];
1507.322 +    return *this;
1507.323 +  }
1507.324 +
1507.325 +  valarray<_Tp>& operator>>= (const valarray<_Tp>& __x) {
1507.326 +    for (size_t __i = 0; __i < this->size(); ++__i)
1507.327 +      (*this)[__i] >>= __x[__i];
1507.328 +    return *this;
1507.329 +  }
1507.330 +
1507.331 +public:                         // Other member functions.
1507.332 +
1507.333 +  // The result is undefined for zero-length arrays
1507.334 +  value_type sum() const {
1507.335 +    return accumulate(this->_M_first + 1, this->_M_first + this->_M_size,
1507.336 +                      (*this)[0]);
1507.337 +  }
1507.338 +
1507.339 +  // The result is undefined for zero-length arrays
1507.340 +  value_type (min) () const {
1507.341 +    return *min_element(this->_M_first + 0, this->_M_first + this->_M_size);
1507.342 +  }
1507.343 +
1507.344 +  value_type (max) () const {
1507.345 +    return *max_element(this->_M_first + 0, this->_M_first + this->_M_size);
1507.346 +  }
1507.347 +
1507.348 +  valarray<_Tp> shift(int __n) const;
1507.349 +  valarray<_Tp> cshift(int __n) const;
1507.350 +
1507.351 +  valarray<_Tp> apply(value_type __f(value_type)) const {
1507.352 +    valarray<_Tp> __tmp(this->size());
1507.353 +    transform(this->_M_first + 0, this->_M_first + this->_M_size, __tmp._M_first,
1507.354 +              __f);
1507.355 +    return __tmp;
1507.356 +  }
1507.357 +  valarray<_Tp> apply(value_type __f(const value_type&)) const {
1507.358 +    valarray<_Tp> __tmp(this->size());
1507.359 +    transform(this->_M_first + 0, this->_M_first + this->_M_size, __tmp._M_first,
1507.360 +              __f);
1507.361 +    return __tmp;
1507.362 +  }
1507.363 +  
1507.364 +  void resize(size_t __n, value_type __x = value_type()) {
1507.365 +    _STLP_STD::_Destroy(this->_M_first, this->_M_first + this->_M_size);
1507.366 +    this->_Valarray_base<_Tp>::_M_deallocate();
1507.367 +    this->_Valarray_base<_Tp>::_M_allocate(__n);
1507.368 +    uninitialized_fill_n(this->_M_first, this->_M_size, __x);
1507.369 +  }
1507.370 +};
1507.371 +
1507.372 +//----------------------------------------------------------------------
1507.373 +// valarray non-member functions.
1507.374 +
1507.375 +// Binary arithmetic operations between two arrays.  Behavior is
1507.376 +// undefined if the two arrays do not have the same length.
1507.377 +
1507.378 +template <class _Tp> 
1507.379 +inline valarray<_Tp>  _STLP_CALL operator*(const valarray<_Tp>& __x,
1507.380 +                                           const valarray<_Tp>& __y) {
1507.381 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.382 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.383 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.384 +    __tmp[__i] = __x[__i] * __y[__i];
1507.385 +  return __tmp;
1507.386 +}
1507.387 +
1507.388 +template <class _Tp> 
1507.389 +inline valarray<_Tp>  _STLP_CALL operator/(const valarray<_Tp>& __x,
1507.390 +                                           const valarray<_Tp>& __y) {
1507.391 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.392 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.393 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.394 +    __tmp[__i] = __x[__i] / __y[__i];
1507.395 +  return __tmp;
1507.396 +}
1507.397 +
1507.398 +template <class _Tp> 
1507.399 +inline valarray<_Tp>  _STLP_CALL operator%(const valarray<_Tp>& __x,
1507.400 +                                           const valarray<_Tp>& __y) {
1507.401 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.402 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.403 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.404 +    __tmp[__i] = __x[__i] % __y[__i];
1507.405 +  return __tmp;
1507.406 +}
1507.407 +
1507.408 +template <class _Tp> 
1507.409 +inline valarray<_Tp>  _STLP_CALL operator+(const valarray<_Tp>& __x,
1507.410 +                                           const valarray<_Tp>& __y) {
1507.411 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.412 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.413 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.414 +    __tmp[__i] = __x[__i] + __y[__i];
1507.415 +  return __tmp;
1507.416 +}
1507.417 +
1507.418 +template <class _Tp> 
1507.419 +inline valarray<_Tp>  _STLP_CALL operator-(const valarray<_Tp>& __x,
1507.420 +                                           const valarray<_Tp>& __y) {
1507.421 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.422 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.423 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.424 +    __tmp[__i] = __x[__i] - __y[__i];
1507.425 +  return __tmp;
1507.426 +}
1507.427 +
1507.428 +template <class _Tp> 
1507.429 +inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x,
1507.430 +                               const valarray<_Tp>& __y) {
1507.431 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.432 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.433 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.434 +    __tmp[__i] = __x[__i] ^ __y[__i];
1507.435 +  return __tmp;
1507.436 +}
1507.437 +
1507.438 +template <class _Tp> 
1507.439 +inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x,
1507.440 +                               const valarray<_Tp>& __y) {
1507.441 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.442 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.443 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.444 +    __tmp[__i] = __x[__i] & __y[__i];
1507.445 +  return __tmp;
1507.446 +}
1507.447 +
1507.448 +template <class _Tp> 
1507.449 +inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x,
1507.450 +                               const valarray<_Tp>& __y) {
1507.451 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.452 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.453 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.454 +    __tmp[__i] = __x[__i] | __y[__i];
1507.455 +  return __tmp;
1507.456 +}
1507.457 +
1507.458 +template <class _Tp> 
1507.459 +inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x,
1507.460 +                               const valarray<_Tp>& __y) {
1507.461 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.462 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.463 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.464 +    __tmp[__i] = __x[__i] << __y[__i];
1507.465 +  return __tmp;
1507.466 +}
1507.467 +
1507.468 +template <class _Tp> 
1507.469 +inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x,
1507.470 +                               const valarray<_Tp>& __y) {
1507.471 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.472 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.473 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.474 +    __tmp[__i] = __x[__i] >> __y[__i];
1507.475 +  return __tmp;
1507.476 +}
1507.477 +
1507.478 +// Binary arithmetic operations between an array and a scalar.
1507.479 +
1507.480 +template <class _Tp> 
1507.481 +inline valarray<_Tp> _STLP_CALL operator*(const valarray<_Tp>& __x, const _Tp& __c) {
1507.482 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.483 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.484 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.485 +    __tmp[__i] = __x[__i]  * __c;
1507.486 +  return __tmp;
1507.487 +}
1507.488 +
1507.489 +template <class _Tp> 
1507.490 +inline valarray<_Tp> _STLP_CALL operator*(const _Tp& __c, const valarray<_Tp>& __x) {
1507.491 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.492 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.493 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.494 +    __tmp[__i] = __c * __x[__i];
1507.495 +  return __tmp;
1507.496 +}
1507.497 +
1507.498 +template <class _Tp> 
1507.499 +inline valarray<_Tp> _STLP_CALL operator/(const valarray<_Tp>& __x, const _Tp& __c) {
1507.500 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.501 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.502 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.503 +    __tmp[__i] = __x[__i]  / __c;
1507.504 +  return __tmp;
1507.505 +}
1507.506 +
1507.507 +template <class _Tp> 
1507.508 +inline valarray<_Tp> _STLP_CALL operator/(const _Tp& __c, const valarray<_Tp>& __x) {
1507.509 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.510 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.511 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.512 +    __tmp[__i] = __c / __x[__i];
1507.513 +  return __tmp;
1507.514 +}
1507.515 +
1507.516 +template <class _Tp> 
1507.517 +inline valarray<_Tp> _STLP_CALL operator%(const valarray<_Tp>& __x, const _Tp& __c) {
1507.518 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.519 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.520 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.521 +    __tmp[__i] = __x[__i]  % __c;
1507.522 +  return __tmp;
1507.523 +}
1507.524 +
1507.525 +template <class _Tp> 
1507.526 +inline valarray<_Tp> _STLP_CALL operator%(const _Tp& __c, const valarray<_Tp>& __x) {
1507.527 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.528 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.529 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.530 +    __tmp[__i] = __c % __x[__i];
1507.531 +  return __tmp;
1507.532 +}
1507.533 +
1507.534 +template <class _Tp> 
1507.535 +inline valarray<_Tp> _STLP_CALL operator+(const valarray<_Tp>& __x, const _Tp& __c) {
1507.536 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.537 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.538 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.539 +    __tmp[__i] = __x[__i]  + __c;
1507.540 +  return __tmp;
1507.541 +}
1507.542 +
1507.543 +template <class _Tp> 
1507.544 +inline valarray<_Tp> _STLP_CALL operator+(const _Tp& __c, const valarray<_Tp>& __x) {
1507.545 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.546 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.547 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.548 +    __tmp[__i] = __c + __x[__i];
1507.549 +  return __tmp;
1507.550 +}
1507.551 +
1507.552 +template <class _Tp> 
1507.553 +inline valarray<_Tp> _STLP_CALL operator-(const valarray<_Tp>& __x, const _Tp& __c) {
1507.554 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.555 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.556 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.557 +    __tmp[__i] = __x[__i]  - __c;
1507.558 +  return __tmp;
1507.559 +}
1507.560 +
1507.561 +template <class _Tp> 
1507.562 +inline valarray<_Tp> _STLP_CALL operator-(const _Tp& __c, const valarray<_Tp>& __x) {
1507.563 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.564 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.565 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.566 +    __tmp[__i] = __c - __x[__i];
1507.567 +  return __tmp;
1507.568 +}
1507.569 +
1507.570 +template <class _Tp> 
1507.571 +inline valarray<_Tp> _STLP_CALL operator^(const valarray<_Tp>& __x, const _Tp& __c) {
1507.572 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.573 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.574 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.575 +    __tmp[__i] = __x[__i]  ^ __c;
1507.576 +  return __tmp;
1507.577 +}
1507.578 +
1507.579 +template <class _Tp> 
1507.580 +inline valarray<_Tp> _STLP_CALL operator^(const _Tp& __c, const valarray<_Tp>& __x) {
1507.581 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.582 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.583 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.584 +    __tmp[__i] = __c ^ __x[__i];
1507.585 +  return __tmp;
1507.586 +}
1507.587 +
1507.588 +template <class _Tp> 
1507.589 +inline valarray<_Tp> _STLP_CALL operator&(const valarray<_Tp>& __x, const _Tp& __c) {
1507.590 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.591 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.592 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.593 +    __tmp[__i] = __x[__i]  & __c;
1507.594 +  return __tmp;
1507.595 +}
1507.596 +
1507.597 +template <class _Tp> 
1507.598 +inline valarray<_Tp> _STLP_CALL operator&(const _Tp& __c, const valarray<_Tp>& __x) {
1507.599 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.600 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.601 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.602 +    __tmp[__i] = __c & __x[__i];
1507.603 +  return __tmp;
1507.604 +}
1507.605 +
1507.606 +template <class _Tp> 
1507.607 +inline valarray<_Tp> _STLP_CALL operator|(const valarray<_Tp>& __x, const _Tp& __c) {
1507.608 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.609 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.610 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.611 +    __tmp[__i] = __x[__i]  | __c;
1507.612 +  return __tmp;
1507.613 +}
1507.614 +
1507.615 +template <class _Tp> 
1507.616 +inline valarray<_Tp> _STLP_CALL operator|(const _Tp& __c, const valarray<_Tp>& __x) {
1507.617 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.618 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.619 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.620 +    __tmp[__i] = __c | __x[__i];
1507.621 +  return __tmp;
1507.622 +}
1507.623 +
1507.624 +template <class _Tp> 
1507.625 +inline valarray<_Tp> _STLP_CALL operator<<(const valarray<_Tp>& __x, const _Tp& __c) {
1507.626 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.627 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.628 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.629 +    __tmp[__i] = __x[__i]  << __c;
1507.630 +  return __tmp;
1507.631 +}
1507.632 +
1507.633 +template <class _Tp> 
1507.634 +inline valarray<_Tp> _STLP_CALL operator<<(const _Tp& __c, const valarray<_Tp>& __x) {
1507.635 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.636 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.637 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.638 +    __tmp[__i] = __c << __x[__i];
1507.639 +  return __tmp;
1507.640 +}
1507.641 +
1507.642 +template <class _Tp> 
1507.643 +inline valarray<_Tp> _STLP_CALL operator>>(const valarray<_Tp>& __x, const _Tp& __c) {
1507.644 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.645 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.646 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.647 +    __tmp[__i] = __x[__i]  >> __c;
1507.648 +  return __tmp;
1507.649 +}
1507.650 +
1507.651 +template <class _Tp> 
1507.652 +inline valarray<_Tp> _STLP_CALL operator>>(const _Tp& __c, const valarray<_Tp>& __x) {
1507.653 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.654 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.655 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.656 +    __tmp[__i] = __c >> __x[__i];
1507.657 +  return __tmp;
1507.658 +}
1507.659 +
1507.660 +// Binary logical operations between two arrays.  Behavior is undefined
1507.661 +// if the two arrays have different lengths.  Note that operator== does
1507.662 +// not do what you might at first expect.
1507.663 +
1507.664 +template <class _Tp> 
1507.665 +inline _Valarray_bool _STLP_CALL operator==(const valarray<_Tp>& __x,
1507.666 +                                 const valarray<_Tp>& __y)
1507.667 +{
1507.668 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.669 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.670 +    __tmp[__i] = __x[__i] == __y[__i];
1507.671 +  return __tmp;  
1507.672 +}
1507.673 +
1507.674 +template <class _Tp> 
1507.675 +inline _Valarray_bool _STLP_CALL operator<(const valarray<_Tp>& __x,
1507.676 +                                const valarray<_Tp>& __y)
1507.677 +{
1507.678 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.679 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.680 +    __tmp[__i] = __x[__i] < __y[__i];
1507.681 +  return __tmp;  
1507.682 +}
1507.683 +
1507.684 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1507.685 +
1507.686 +template <class _Tp> 
1507.687 +inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x,
1507.688 +                                 const valarray<_Tp>& __y)
1507.689 +{
1507.690 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.691 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.692 +    __tmp[__i] = __x[__i] != __y[__i];
1507.693 +  return __tmp;  
1507.694 +}
1507.695 +
1507.696 +template <class _Tp> 
1507.697 +inline _Valarray_bool _STLP_CALL operator>(const valarray<_Tp>& __x,
1507.698 +                                const valarray<_Tp>& __y)
1507.699 +{
1507.700 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.701 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.702 +    __tmp[__i] = __x[__i] > __y[__i];
1507.703 +  return __tmp;  
1507.704 +}
1507.705 +
1507.706 +template <class _Tp> 
1507.707 +inline _Valarray_bool _STLP_CALL operator<=(const valarray<_Tp>& __x,
1507.708 +                                 const valarray<_Tp>& __y)
1507.709 +{
1507.710 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.711 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.712 +    __tmp[__i] = __x[__i] <= __y[__i];
1507.713 +  return __tmp;  
1507.714 +}
1507.715 +
1507.716 +template <class _Tp> 
1507.717 +inline _Valarray_bool _STLP_CALL operator>=(const valarray<_Tp>& __x,
1507.718 +                                 const valarray<_Tp>& __y)
1507.719 +{
1507.720 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.721 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.722 +    __tmp[__i] = __x[__i] >= __y[__i];
1507.723 +  return __tmp;  
1507.724 +}
1507.725 +
1507.726 +#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1507.727 +// fbp : swap ?
1507.728 +
1507.729 +template <class _Tp> 
1507.730 +inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x,
1507.731 +                                 const valarray<_Tp>& __y)
1507.732 +{
1507.733 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.734 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.735 +    __tmp[__i] = __x[__i] && __y[__i];
1507.736 +  return __tmp;  
1507.737 +}
1507.738 +
1507.739 +template <class _Tp> 
1507.740 +inline _Valarray_bool _STLP_CALL operator||(const valarray<_Tp>& __x,
1507.741 +                                 const valarray<_Tp>& __y)
1507.742 +{
1507.743 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.744 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.745 +    __tmp[__i] = __x[__i] || __y[__i];
1507.746 +  return __tmp;  
1507.747 +}
1507.748 +
1507.749 +// Logical operations between an array and a scalar.
1507.750 +
1507.751 +template <class _Tp>
1507.752 +inline _Valarray_bool _STLP_CALL operator==(const valarray<_Tp>& __x, const _Tp& __c)
1507.753 +{
1507.754 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.755 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.756 +    __tmp[__i] = __x[__i] == __c;
1507.757 +  return __tmp;  
1507.758 +}
1507.759 +
1507.760 +template <class _Tp>
1507.761 +inline _Valarray_bool _STLP_CALL operator==(const _Tp& __c, const valarray<_Tp>& __x)
1507.762 +{
1507.763 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.764 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.765 +    __tmp[__i] = __c == __x[__i];
1507.766 +  return __tmp;  
1507.767 +}
1507.768 +
1507.769 +template <class _Tp>
1507.770 +inline _Valarray_bool _STLP_CALL operator!=(const valarray<_Tp>& __x, const _Tp& __c)
1507.771 +{
1507.772 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.773 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.774 +    __tmp[__i] = __x[__i] != __c;
1507.775 +  return __tmp;  
1507.776 +}
1507.777 +
1507.778 +template <class _Tp>
1507.779 +inline _Valarray_bool _STLP_CALL operator!=(const _Tp& __c, const valarray<_Tp>& __x)
1507.780 +{
1507.781 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.782 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.783 +    __tmp[__i] = __c != __x[__i];
1507.784 +  return __tmp;  
1507.785 +}
1507.786 +
1507.787 +template <class _Tp>
1507.788 +inline _Valarray_bool _STLP_CALL operator<(const valarray<_Tp>& __x, const _Tp& __c)
1507.789 +{
1507.790 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.791 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.792 +    __tmp[__i] = __x[__i] < __c;
1507.793 +  return __tmp;  
1507.794 +}
1507.795 +
1507.796 +template <class _Tp>
1507.797 +inline _Valarray_bool _STLP_CALL operator<(const _Tp& __c, const valarray<_Tp>& __x)
1507.798 +{
1507.799 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.800 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.801 +    __tmp[__i] = __c < __x[__i];
1507.802 +  return __tmp;  
1507.803 +}
1507.804 +
1507.805 +template <class _Tp>
1507.806 +inline _Valarray_bool _STLP_CALL operator>(const valarray<_Tp>& __x, const _Tp& __c)
1507.807 +{
1507.808 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.809 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.810 +    __tmp[__i] = __x[__i] > __c;
1507.811 +  return __tmp;  
1507.812 +}
1507.813 +
1507.814 +template <class _Tp>
1507.815 +inline _Valarray_bool _STLP_CALL operator>(const _Tp& __c, const valarray<_Tp>& __x)
1507.816 +{
1507.817 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.818 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.819 +    __tmp[__i] = __c > __x[__i];
1507.820 +  return __tmp;  
1507.821 +}
1507.822 +
1507.823 +template <class _Tp>
1507.824 +inline _Valarray_bool _STLP_CALL operator<=(const valarray<_Tp>& __x, const _Tp& __c)
1507.825 +{
1507.826 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.827 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.828 +    __tmp[__i] = __x[__i]  <= __c;
1507.829 +  return __tmp;  
1507.830 +}
1507.831 +
1507.832 +template <class _Tp>
1507.833 +inline _Valarray_bool _STLP_CALL operator<=(const _Tp& __c, const valarray<_Tp>& __x)
1507.834 +{
1507.835 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.836 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.837 +    __tmp[__i] = __c <= __x[__i];
1507.838 +  return __tmp;  
1507.839 +}
1507.840 +
1507.841 +template <class _Tp>
1507.842 +inline _Valarray_bool _STLP_CALL operator>=(const valarray<_Tp>& __x, const _Tp& __c)
1507.843 +{
1507.844 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.845 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.846 +    __tmp[__i] = __x[__i] >= __c;
1507.847 +  return __tmp;  
1507.848 +}
1507.849 +
1507.850 +template <class _Tp>
1507.851 +inline _Valarray_bool _STLP_CALL operator>=(const _Tp& __c, const valarray<_Tp>& __x)
1507.852 +{
1507.853 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.854 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.855 +    __tmp[__i] = __c >= __x[__i];
1507.856 +  return __tmp;  
1507.857 +}
1507.858 +
1507.859 +template <class _Tp>
1507.860 +inline _Valarray_bool _STLP_CALL operator&&(const valarray<_Tp>& __x, const _Tp& __c)
1507.861 +{
1507.862 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.863 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.864 +    __tmp[__i] = __x[__i] && __c;
1507.865 +  return __tmp;  
1507.866 +}
1507.867 +
1507.868 +template <class _Tp>
1507.869 +inline _Valarray_bool _STLP_CALL operator&&(const _Tp& __c, const valarray<_Tp>& __x)
1507.870 +{
1507.871 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.872 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.873 +    __tmp[__i] = __c && __x[__i];
1507.874 +  return __tmp;  
1507.875 +}
1507.876 +
1507.877 +template <class _Tp>
1507.878 +inline _Valarray_bool _STLP_CALL operator||(const valarray<_Tp>& __x, const _Tp& __c)
1507.879 +{
1507.880 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.881 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.882 +    __tmp[__i] = __x[__i] || __c;
1507.883 +  return __tmp;  
1507.884 +}
1507.885 +
1507.886 +template <class _Tp>
1507.887 +inline _Valarray_bool _STLP_CALL operator||(const _Tp& __c, const valarray<_Tp>& __x)
1507.888 +{
1507.889 +  _Valarray_bool __tmp(__x.size(), _Valarray_bool::_NoInit());
1507.890 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.891 +    __tmp[__i] = __c || __x[__i];
1507.892 +  return __tmp;  
1507.893 +}
1507.894 +
1507.895 +// valarray "transcendentals" (the list includes abs and sqrt, which,
1507.896 +// of course, are not transcendental).
1507.897 +
1507.898 +template <class _Tp>
1507.899 +inline valarray<_Tp> abs(const valarray<_Tp>& __x) {
1507.900 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.901 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.902 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.903 +    __tmp[__i] = _STLP_DO_ABS(_Tp)(__x[__i]);
1507.904 +  return __tmp;
1507.905 +}
1507.906 +
1507.907 +template <class _Tp>
1507.908 +inline valarray<_Tp> acos(const valarray<_Tp>& __x) {
1507.909 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.910 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.911 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.912 +    __tmp[__i] = _STLP_DO_ACOS(_Tp)(__x[__i]);
1507.913 +  return __tmp;
1507.914 +}
1507.915 +
1507.916 +template <class _Tp>
1507.917 +inline valarray<_Tp> asin(const valarray<_Tp>& __x) {
1507.918 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.919 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.920 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.921 +    __tmp[__i] = _STLP_DO_ASIN(_Tp)(__x[__i]);
1507.922 +  return __tmp;
1507.923 +}
1507.924 +
1507.925 +template <class _Tp>
1507.926 +inline valarray<_Tp> atan(const valarray<_Tp>& __x) {
1507.927 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.928 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.929 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.930 +    __tmp[__i] = _STLP_DO_ATAN(_Tp)(__x[__i]);
1507.931 +  return __tmp;
1507.932 +}
1507.933 +
1507.934 +template <class _Tp>
1507.935 +inline valarray<_Tp> atan2(const valarray<_Tp>& __x,
1507.936 +                           const valarray<_Tp>& __y) {
1507.937 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.938 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.939 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.940 +    __tmp[__i] = _STLP_DO_ATAN2(_Tp)(__x[__i], __y[__i]);
1507.941 +  return __tmp;
1507.942 +}
1507.943 +
1507.944 +template <class _Tp>
1507.945 +inline valarray<_Tp> atan2(const valarray<_Tp>& __x, const _Tp& __c) {
1507.946 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.947 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.948 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.949 +    __tmp[__i] = _STLP_DO_ATAN2(_Tp)(__x[__i], __c);
1507.950 +  return __tmp;
1507.951 +}
1507.952 +
1507.953 +template <class _Tp>
1507.954 +inline valarray<_Tp> atan2(const _Tp& __c, const valarray<_Tp>& __x) {
1507.955 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.956 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.957 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.958 +    __tmp[__i] = _STLP_DO_ATAN2(_Tp)(__c, __x[__i]);
1507.959 +  return __tmp;
1507.960 +}
1507.961 +
1507.962 +template <class _Tp>
1507.963 +inline valarray<_Tp> cos(const valarray<_Tp>& __x) {
1507.964 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.965 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.966 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.967 +    __tmp[__i] = _STLP_DO_COS(_Tp)(__x[__i]);
1507.968 +  return __tmp;
1507.969 +}
1507.970 +
1507.971 +template <class _Tp>
1507.972 +inline valarray<_Tp> cosh(const valarray<_Tp>& __x) {
1507.973 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.974 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.975 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.976 +    __tmp[__i] = _STLP_DO_COSH(_Tp)(__x[__i]);
1507.977 +  return __tmp;
1507.978 +}
1507.979 +
1507.980 +template <class _Tp>
1507.981 +inline valarray<_Tp> exp(const valarray<_Tp>& __x) {
1507.982 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.983 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.984 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.985 +    __tmp[__i] = _STLP_DO_EXP(_Tp)(__x[__i]);
1507.986 +  return __tmp;
1507.987 +}
1507.988 +
1507.989 +template <class _Tp>
1507.990 +inline valarray<_Tp> log(const valarray<_Tp>& __x) {
1507.991 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.992 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.993 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.994 +    __tmp[__i] = _STLP_DO_LOG(_Tp)(__x[__i]);
1507.995 +  return __tmp;
1507.996 +}
1507.997 +
1507.998 +template <class _Tp>
1507.999 +inline valarray<_Tp> log10(const valarray<_Tp>& __x) {
1507.1000 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1001 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1002 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1003 +    __tmp[__i] = _STLP_DO_LOG10(_Tp)(__x[__i]);
1507.1004 +  return __tmp;
1507.1005 +}
1507.1006 +
1507.1007 +template <class _Tp>
1507.1008 +inline valarray<_Tp> pow(const valarray<_Tp>& __x,
1507.1009 +                           const valarray<_Tp>& __y) {
1507.1010 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1011 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1012 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1013 +    __tmp[__i] = _STLP_DO_POW(_Tp)(__x[__i], __y[__i]);
1507.1014 +  return __tmp;
1507.1015 +}
1507.1016 +
1507.1017 +template <class _Tp>
1507.1018 +inline valarray<_Tp> pow(const valarray<_Tp>& __x, const _Tp& __c) {
1507.1019 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1020 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1021 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1022 +    __tmp[__i] = _STLP_DO_POW(_Tp)(__x[__i], __c);
1507.1023 +  return __tmp;
1507.1024 +}
1507.1025 +
1507.1026 +template <class _Tp>
1507.1027 +inline valarray<_Tp> pow(const _Tp& __c, const valarray<_Tp>& __x) {
1507.1028 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1029 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1030 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1031 +    __tmp[__i] = _STLP_DO_POW(_Tp)(__c, __x[__i]);
1507.1032 +  return __tmp;
1507.1033 +}
1507.1034 +
1507.1035 +template <class _Tp>
1507.1036 +inline valarray<_Tp> sin(const valarray<_Tp>& __x) {
1507.1037 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1038 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1039 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1040 +    __tmp[__i] = _STLP_DO_SIN(_Tp)(__x[__i]);
1507.1041 +  return __tmp;
1507.1042 +}
1507.1043 +
1507.1044 +template <class _Tp>
1507.1045 +inline valarray<_Tp> sinh(const valarray<_Tp>& __x) {
1507.1046 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1047 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1048 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1049 +    __tmp[__i] = _STLP_DO_SINH(_Tp)(__x[__i]);
1507.1050 +  return __tmp;
1507.1051 +}
1507.1052 +
1507.1053 +template <class _Tp>
1507.1054 +inline valarray<_Tp> sqrt(const valarray<_Tp>& __x) {
1507.1055 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1056 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1057 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1058 +    __tmp[__i] = _STLP_DO_SQRT(_Tp)(__x[__i]);
1507.1059 +  return __tmp;
1507.1060 +}
1507.1061 +
1507.1062 +template <class _Tp>
1507.1063 +inline valarray<_Tp> tan(const valarray<_Tp>& __x) {
1507.1064 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1065 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1066 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1067 +    __tmp[__i] = _STLP_DO_TAN(_Tp)(__x[__i]);
1507.1068 +  return __tmp;
1507.1069 +}
1507.1070 +
1507.1071 +template <class _Tp>
1507.1072 +inline valarray<_Tp> tanh(const valarray<_Tp>& __x) {
1507.1073 +  typedef typename valarray<_Tp>::_NoInit _NoInit;
1507.1074 +  valarray<_Tp> __tmp(__x.size(), _NoInit());
1507.1075 +  for (size_t __i = 0; __i < __x.size(); ++__i)
1507.1076 +    __tmp[__i] = _STLP_DO_TANH(_Tp)(__x[__i]);
1507.1077 +  return __tmp;
1507.1078 +}
1507.1079 +
1507.1080 +//----------------------------------------------------------------------
1507.1081 +// slice and slice_array
1507.1082 +
1507.1083 +class slice {
1507.1084 +public:
1507.1085 +  slice() : _M_start(0), _M_length(0), _M_stride(0) {}
1507.1086 +  slice(size_t __start, size_t __length, size_t __stride)
1507.1087 +    : _M_start(__start), _M_length(__length), _M_stride(__stride)
1507.1088 +    {}
1507.1089 +  __TRIVIAL_DESTRUCTOR(slice)
1507.1090 +
1507.1091 +  size_t start()  const { return _M_start; }
1507.1092 +  size_t size()   const { return _M_length; }
1507.1093 +  size_t stride() const { return _M_stride; }
1507.1094 +
1507.1095 +   
1507.1096 +private:
1507.1097 +  size_t _M_start;
1507.1098 +  size_t _M_length;
1507.1099 +  size_t _M_stride;
1507.1100 +};
1507.1101 +
1507.1102 +template <class _Tp>
1507.1103 +class slice_array {
1507.1104 +  friend class valarray<_Tp>;
1507.1105 +public:
1507.1106 +  typedef _Tp value_type;
1507.1107 +
1507.1108 +  void operator=(const valarray<value_type>& __x) const {
1507.1109 +    size_t __index = _M_slice.start();
1507.1110 +    for (size_t __i = 0;
1507.1111 +         __i < _M_slice.size();
1507.1112 +         ++__i, __index += _M_slice.stride())
1507.1113 +#ifdef __SYMBIAN32__
1507.1114 +      (*_M_array)[__index] = __x[__i];
1507.1115 +#else
1507.1116 +      _M_array[__index] = __x[__i];
1507.1117 +#endif
1507.1118 +  }
1507.1119 +
1507.1120 +  void operator*=(const valarray<value_type>& __x) const {
1507.1121 +    size_t __index = _M_slice.start();
1507.1122 +    for (size_t __i = 0;
1507.1123 +         __i < _M_slice.size();
1507.1124 +         ++__i, __index += _M_slice.stride())
1507.1125 +#ifdef __SYMBIAN32__
1507.1126 +        (*_M_array)[__index] *= __x[__i];
1507.1127 +#else
1507.1128 +        _M_array[__index] *= __x[__i];
1507.1129 +#endif
1507.1130 +  }
1507.1131 +
1507.1132 +  void operator/=(const valarray<value_type>& __x) const {
1507.1133 +    size_t __index = _M_slice.start();
1507.1134 +    for (size_t __i = 0;
1507.1135 +         __i < _M_slice.size();
1507.1136 +         ++__i, __index += _M_slice.stride())
1507.1137 +#ifdef __SYMBIAN32__
1507.1138 +      (*_M_array)[__index] /= __x[__i];
1507.1139 +#else
1507.1140 +      _M_array[__index] /= __x[__i];
1507.1141 +#endif
1507.1142 +  }
1507.1143 +
1507.1144 +  void operator%=(const valarray<value_type>& __x) const {
1507.1145 +    size_t __index = _M_slice.start();
1507.1146 +    for (size_t __i = 0;
1507.1147 +         __i < _M_slice.size();
1507.1148 +         ++__i, __index += _M_slice.stride())
1507.1149 +#ifdef __SYMBIAN32__
1507.1150 +      (*_M_array)[__index] %= __x[__i];
1507.1151 +#else
1507.1152 +      _M_array[__index] %= __x[__i];
1507.1153 +#endif
1507.1154 +  }
1507.1155 +
1507.1156 +  void operator+=(const valarray<value_type>& __x) const {
1507.1157 +    size_t __index = _M_slice.start();
1507.1158 +    for (size_t __i = 0;
1507.1159 +         __i < _M_slice.size();
1507.1160 +         ++__i, __index += _M_slice.stride())
1507.1161 +#ifdef __SYMBIAN32__
1507.1162 +      (*_M_array)[__index] += __x[__i];
1507.1163 +#else
1507.1164 +      _M_array[__index] += __x[__i];
1507.1165 +#endif
1507.1166 +  }
1507.1167 +
1507.1168 +  void operator-=(const valarray<value_type>& __x) const {
1507.1169 +    size_t __index = _M_slice.start();
1507.1170 +    for (size_t __i = 0;
1507.1171 +         __i < _M_slice.size();
1507.1172 +         ++__i, __index += _M_slice.stride())
1507.1173 +#ifdef __SYMBIAN32__
1507.1174 +      (*_M_array)[__index] -= __x[__i];
1507.1175 +#else
1507.1176 +      _M_array[__index] -= __x[__i];
1507.1177 +#endif
1507.1178 +  }
1507.1179 +
1507.1180 +  void operator^=(const valarray<value_type>& __x) const {
1507.1181 +    size_t __index = _M_slice.start();
1507.1182 +    for (size_t __i = 0;
1507.1183 +         __i < _M_slice.size();
1507.1184 +         ++__i, __index += _M_slice.stride())
1507.1185 +#ifdef __SYMBIAN32__
1507.1186 +      (*_M_array)[__index] ^= __x[__i];
1507.1187 +#else
1507.1188 +      _M_array[__index] ^= __x[__i];
1507.1189 +#endif
1507.1190 +  }
1507.1191 +
1507.1192 +  void operator&=(const valarray<value_type>& __x) const {
1507.1193 +    size_t __index = _M_slice.start();
1507.1194 +    for (size_t __i = 0;
1507.1195 +         __i < _M_slice.size();
1507.1196 +         ++__i, __index += _M_slice.stride())
1507.1197 +#ifdef __SYMBIAN32__
1507.1198 +      (*_M_array)[__index] &= __x[__i];
1507.1199 +#else
1507.1200 +      _M_array[__index] &= __x[__i];
1507.1201 +#endif
1507.1202 +  }
1507.1203 +
1507.1204 +  void operator|=(const valarray<value_type>& __x) const {
1507.1205 +    size_t __index = _M_slice.start();
1507.1206 +    for (size_t __i = 0;
1507.1207 +         __i < _M_slice.size();
1507.1208 +         ++__i, __index += _M_slice.stride())
1507.1209 +#ifdef __SYMBIAN32__
1507.1210 +      (*_M_array)[__index] |= __x[__i];
1507.1211 +#else
1507.1212 +      _M_array[__index] |= __x[__i];
1507.1213 +#endif
1507.1214 +  }
1507.1215 +
1507.1216 +  void operator<<=(const valarray<value_type>& __x) const {
1507.1217 +    size_t __index = _M_slice.start();
1507.1218 +    for (size_t __i = 0;
1507.1219 +         __i < _M_slice.size();
1507.1220 +         ++__i, __index += _M_slice.stride())
1507.1221 +#ifdef __SYMBIAN32__
1507.1222 +      (*_M_array)[__index] <<= __x[__i];
1507.1223 +#else
1507.1224 +      _M_array[__index] <<= __x[__i];
1507.1225 +#endif
1507.1226 +  }
1507.1227 +
1507.1228 +  void operator>>=(const valarray<value_type>& __x) const {
1507.1229 +    size_t __index = _M_slice.start();
1507.1230 +    for (size_t __i = 0;
1507.1231 +         __i < _M_slice.size();
1507.1232 +         ++__i, __index += _M_slice.stride())
1507.1233 +#ifdef __SYMBIAN32__
1507.1234 +      (*_M_array)[__index] >>= __x[__i];
1507.1235 +#else
1507.1236 +      _M_array[__index] >>= __x[__i];
1507.1237 +#endif
1507.1238 +  }
1507.1239 +
1507.1240 +  void operator=(const value_type& __c) {
1507.1241 +    size_t __index = _M_slice.start();
1507.1242 +    for (size_t __i = 0;
1507.1243 +         __i < _M_slice.size();
1507.1244 +         ++__i, __index += _M_slice.stride())
1507.1245 +#ifdef __SYMBIAN32__
1507.1246 +      (*_M_array)[__index] = __c;
1507.1247 +#else
1507.1248 +      _M_array[__index] = __c;
1507.1249 +#endif
1507.1250 +  }
1507.1251 +  
1507.1252 +  slice_array<_Tp>&
1507.1253 +    operator=(const slice_array<_Tp>& __a)
1507.1254 +    {
1507.1255 +    size_t __index = _M_slice.start();
1507.1256 +    for (size_t __i = __a._M_slice.start();
1507.1257 +         __i < _M_slice.size();
1507.1258 +         __i += __a._M_slice.stride(), __index += _M_slice.stride())
1507.1259 +      _M_array[__index] = __a._M_array[__index][__i];
1507.1260 +    return *this;
1507.1261 +    }
1507.1262 +
1507.1263 +    slice_array(const slice_array<_Tp>& a)
1507.1264 +      : _M_slice(a._M_slice), _M_array(a._M_array){}
1507.1265 +
1507.1266 +  ~slice_array() {}
1507.1267 +
1507.1268 +private:
1507.1269 +  slice_array(const slice& __slice, valarray<_Tp>* __array)
1507.1270 +    : _M_slice(__slice), _M_array(__array)
1507.1271 +    {}
1507.1272 +
1507.1273 +  slice          _M_slice;
1507.1274 +  valarray<_Tp>* _M_array;
1507.1275 +
1507.1276 +private:                        // Disable assignment and default constructor
1507.1277 +  slice_array();
1507.1278 +};
1507.1279 +
1507.1280 +// valarray member functions dealing with slice and slice_array
1507.1281 +
1507.1282 +template <class _Tp>
1507.1283 +inline valarray<_Tp>::valarray(const slice_array<_Tp>& __x)
1507.1284 +  : _Valarray_base<_Tp>(__x._M_slice.size())
1507.1285 +{
1507.1286 +  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1507.1287 +          _Is_Trivial;
1507.1288 +  _M_initialize(_Is_Trivial());  
1507.1289 +  *this = __x;
1507.1290 +}
1507.1291 +
1507.1292 +
1507.1293 +template <class _Tp>
1507.1294 +inline slice_array<_Tp> valarray<_Tp>::operator[](slice __slice) {
1507.1295 +  return slice_array<_Tp>(__slice, this);
1507.1296 +}
1507.1297 +
1507.1298 +//----------------------------------------------------------------------
1507.1299 +// gslice and gslice_array
1507.1300 +
1507.1301 +template <class _Size>
1507.1302 +struct _Gslice_Iter_tmpl;
1507.1303 +
1507.1304 +class gslice {
1507.1305 +  friend struct _Gslice_Iter_tmpl<size_t>;
1507.1306 +public:
1507.1307 +  gslice() : _M_start(0), _M_lengths(0), _M_strides(0) {}
1507.1308 +  gslice(size_t __start,
1507.1309 +         const _Valarray_size_t& __lengths, const _Valarray_size_t& __strides)
1507.1310 +    : _M_start(__start), _M_lengths(__lengths), _M_strides(__strides)
1507.1311 +    {}
1507.1312 +  __TRIVIAL_DESTRUCTOR(gslice)
1507.1313 +
1507.1314 +  size_t start()            const { return _M_start; }
1507.1315 +  _Valarray_size_t size()   const { return _M_lengths; }
1507.1316 +  _Valarray_size_t stride() const { return _M_strides; }
1507.1317 +
1507.1318 +  // Extension: check for an empty gslice.
1507.1319 +  bool _M_empty() const { return _M_lengths.size() == 0; }
1507.1320 +
1507.1321 +  // Extension: number of indices this gslice represents.  (For a degenerate
1507.1322 +  // gslice, they're not necessarily all distinct.)
1507.1323 +  size_t _M_size() const {
1507.1324 +    return !this->_M_empty()
1507.1325 +      ? accumulate(_M_lengths._M_first + 1,
1507.1326 +                   _M_lengths._M_first + _M_lengths._M_size,
1507.1327 +                   _M_lengths[0],
1507.1328 +                   multiplies<size_t>())
1507.1329 +      : 0;
1507.1330 +  }
1507.1331 +
1507.1332 +# ifndef __HP_aCC
1507.1333 +private:
1507.1334 +# endif
1507.1335 +
1507.1336 +  size_t _M_start;
1507.1337 +  _Valarray_size_t _M_lengths;
1507.1338 +  _Valarray_size_t _M_strides;
1507.1339 +};
1507.1340 +
1507.1341 +// This is not an STL iterator.  It is constructed from a gslice, and it
1507.1342 +// steps through the gslice indices in sequence.  See 23.3.6 of the C++
1507.1343 +// standard, paragraphs 2-3, for an explanation of the sequence.  At
1507.1344 +// each step we get two things: the ordinal (i.e. number of steps taken),
1507.1345 +// and the one-dimensional index.
1507.1346 +
1507.1347 +template <class _Size>
1507.1348 +struct _Gslice_Iter_tmpl {
1507.1349 +  _Gslice_Iter_tmpl(const gslice& __gslice)
1507.1350 +    : _M_step(0), _M_1d_idx(__gslice.start()),
1507.1351 +      _M_indices(size_t(0), __gslice._M_lengths.size()),
1507.1352 +      _M_gslice(__gslice)
1507.1353 +    {}
1507.1354 +    
1507.1355 +  bool _M_done() const { return _M_indices[0] == _M_gslice._M_lengths[0]; }
1507.1356 +
1507.1357 +  bool _M_incr();
1507.1358 +
1507.1359 +  _Size _M_step;
1507.1360 +  _Size _M_1d_idx;
1507.1361 +
1507.1362 +  valarray<_Size> _M_indices;
1507.1363 +  const gslice& _M_gslice;
1507.1364 +};
1507.1365 +
1507.1366 +typedef _Gslice_Iter_tmpl<size_t> _Gslice_Iter;
1507.1367 +
1507.1368 +template <class _Tp>
1507.1369 +class gslice_array {
1507.1370 +  friend class valarray<_Tp>;
1507.1371 +public:
1507.1372 +  typedef _Tp value_type;
1507.1373 +
1507.1374 +  void operator= (const valarray<value_type>& __x) const {
1507.1375 +    if (!_M_gslice._M_empty()) {
1507.1376 +      _Gslice_Iter __i(_M_gslice);
1507.1377 +      do _M_array[__i._M_1d_idx] = __x[__i._M_step]; while(__i._M_incr());
1507.1378 +    }
1507.1379 +  }
1507.1380 +
1507.1381 +  void operator*= (const valarray<value_type>& __x) const {
1507.1382 +    if (!_M_gslice._M_empty()) {
1507.1383 +      _Gslice_Iter __i(_M_gslice);
1507.1384 +      do _M_array[__i._M_1d_idx] *= __x[__i._M_step]; while(__i._M_incr());
1507.1385 +    }
1507.1386 +  }
1507.1387 +
1507.1388 +  void operator/= (const valarray<value_type>& __x) const {
1507.1389 +    if (!_M_gslice._M_empty()) {
1507.1390 +      _Gslice_Iter __i(_M_gslice);
1507.1391 +      do _M_array[__i._M_1d_idx] /= __x[__i._M_step]; while(__i._M_incr());
1507.1392 +    }
1507.1393 +  }
1507.1394 +
1507.1395 +  void operator%= (const valarray<value_type>& __x) const {
1507.1396 +    if (!_M_gslice._M_empty()) {
1507.1397 +      _Gslice_Iter __i(_M_gslice);
1507.1398 +      do _M_array[__i._M_1d_idx] %= __x[__i._M_step]; while(__i._M_incr());
1507.1399 +    }
1507.1400 +  }
1507.1401 +
1507.1402 +  void operator+= (const valarray<value_type>& __x) const {
1507.1403 +    if (!_M_gslice._M_empty()) {
1507.1404 +      _Gslice_Iter __i(_M_gslice);
1507.1405 +      do _M_array[__i._M_1d_idx] += __x[__i._M_step]; while(__i._M_incr());
1507.1406 +    }
1507.1407 +  }
1507.1408 +
1507.1409 +  void operator-= (const valarray<value_type>& __x) const {
1507.1410 +    if (!_M_gslice._M_empty()) {
1507.1411 +      _Gslice_Iter __i(_M_gslice);
1507.1412 +      do _M_array[__i._M_1d_idx] -= __x[__i._M_step]; while(__i._M_incr());
1507.1413 +    }
1507.1414 +  }
1507.1415 +
1507.1416 +  void operator^= (const valarray<value_type>& __x) const {
1507.1417 +    if (!_M_gslice._M_empty()) {
1507.1418 +      _Gslice_Iter __i(_M_gslice);
1507.1419 +      do _M_array[__i._M_1d_idx] ^= __x[__i._M_step]; while(__i._M_incr());
1507.1420 +    }
1507.1421 +  }
1507.1422 +
1507.1423 +  void operator&= (const valarray<value_type>& __x) const {
1507.1424 +    if (!_M_gslice._M_empty()) {
1507.1425 +      _Gslice_Iter __i(_M_gslice);
1507.1426 +      do _M_array[__i._M_1d_idx] &= __x[__i._M_step]; while(__i._M_incr());
1507.1427 +    }
1507.1428 +  }
1507.1429 +
1507.1430 +  void operator|= (const valarray<value_type>& __x) const {
1507.1431 +    if (!_M_gslice._M_empty()) {
1507.1432 +      _Gslice_Iter __i(_M_gslice);
1507.1433 +      do _M_array[__i._M_1d_idx] |= __x[__i._M_step]; while(__i._M_incr());
1507.1434 +    }
1507.1435 +  }
1507.1436 +
1507.1437 +  void operator<<= (const valarray<value_type>& __x) const {
1507.1438 +    if (!_M_gslice._M_empty()) {
1507.1439 +      _Gslice_Iter __i(_M_gslice);
1507.1440 +      do _M_array[__i._M_1d_idx] <<= __x[__i._M_step]; while(__i._M_incr());
1507.1441 +    }
1507.1442 +  }
1507.1443 +
1507.1444 +  void operator>>= (const valarray<value_type>& __x) const {
1507.1445 +    if (!_M_gslice._M_empty()) {
1507.1446 +      _Gslice_Iter __i(_M_gslice);
1507.1447 +      do _M_array[__i._M_1d_idx] >>= __x[__i._M_step]; while(__i._M_incr());
1507.1448 +    }
1507.1449 +  }
1507.1450 +
1507.1451 +  void operator= (const value_type& __c) {
1507.1452 +    if (!_M_gslice._M_empty()) {
1507.1453 +      _Gslice_Iter __i(_M_gslice);
1507.1454 +      do _M_array[__i._M_1d_idx] = __c; while(__i._M_incr());
1507.1455 +    }
1507.1456 +  }
1507.1457 +
1507.1458 +  ~gslice_array() {}
1507.1459 +
1507.1460 +private:                        
1507.1461 +  gslice_array(gslice __gslice, valarray<_Tp>& __array)
1507.1462 +    : _M_gslice(__gslice), _M_array(__array)
1507.1463 +    {}
1507.1464 +
1507.1465 +  gslice                _M_gslice;
1507.1466 +  valarray<value_type>& _M_array;
1507.1467 +
1507.1468 +private:                        // Disable assignment
1507.1469 +  void operator=(const gslice_array<_Tp>&);
1507.1470 +};
1507.1471 +
1507.1472 +// valarray member functions dealing with gslice and gslice_array.  Note
1507.1473 +// that it is illegal (behavior is undefined) to construct a gslice_array
1507.1474 +// from a degenerate gslice.
1507.1475 +
1507.1476 +template <class _Tp>
1507.1477 +inline valarray<_Tp>::valarray(const gslice_array<_Tp>& __x)
1507.1478 +  : _Valarray_base<_Tp>(__x._M_gslice._M_size())
1507.1479 +{
1507.1480 +  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1507.1481 +          _Is_Trivial;
1507.1482 +  _M_initialize(_Is_Trivial());  
1507.1483 +  *this = __x;
1507.1484 +}
1507.1485 +
1507.1486 +template <class _Tp>
1507.1487 +inline gslice_array<_Tp> valarray<_Tp>::operator[](const gslice& __slice) {
1507.1488 +  return gslice_array<_Tp>(__slice, *this);
1507.1489 +}
1507.1490 +
1507.1491 +
1507.1492 +//----------------------------------------------------------------------
1507.1493 +// mask_array
1507.1494 +
1507.1495 +template <class _Tp>
1507.1496 +class mask_array {
1507.1497 +  friend class valarray<_Tp>;
1507.1498 +public:
1507.1499 +  typedef _Tp value_type;
1507.1500 +
1507.1501 +  void operator=(const valarray<value_type>& __x) const {
1507.1502 +    size_t __idx = 0;
1507.1503 +#ifdef __SYMBIAN32__    
1507.1504 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1505 +#else    
1507.1506 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1507 +#endif // __SYMBIAN32__    
1507.1508 +      if (_M_mask[__i]) _M_array[__i] = __x[__idx++];
1507.1509 +  }
1507.1510 +
1507.1511 +  void operator*=(const valarray<value_type>& __x) const {
1507.1512 +    size_t __idx = 0;
1507.1513 +#ifdef __SYMBIAN32__    
1507.1514 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1515 +#else    
1507.1516 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1517 +#endif // __SYMBIAN32__    
1507.1518 +      if (_M_mask[__i]) _M_array[__i] *= __x[__idx++];
1507.1519 +  }
1507.1520 +
1507.1521 +  void operator/=(const valarray<value_type>& __x) const {
1507.1522 +    size_t __idx = 0;
1507.1523 +#ifdef __SYMBIAN32__    
1507.1524 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1525 +#else    
1507.1526 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1527 +#endif //__SYMBIAN32__    
1507.1528 +      if (_M_mask[__i]) _M_array[__i] /= __x[__idx++];
1507.1529 +  }
1507.1530 +
1507.1531 +  void operator%=(const valarray<value_type>& __x) const {
1507.1532 +    size_t __idx = 0;
1507.1533 +#ifdef __SYMBIAN32__    
1507.1534 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1535 +#else        
1507.1536 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1537 +#endif    
1507.1538 +      if (_M_mask[__i]) _M_array[__i] %= __x[__idx++];
1507.1539 +  }
1507.1540 +
1507.1541 +  void operator+=(const valarray<value_type>& __x) const {
1507.1542 +    size_t __idx = 0;
1507.1543 +#ifdef __SYMBIAN32__    
1507.1544 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1545 +#else            
1507.1546 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1547 +#endif    
1507.1548 +      if (_M_mask[__i]) _M_array[__i] += __x[__idx++];
1507.1549 +  }
1507.1550 +
1507.1551 +  void operator-=(const valarray<value_type>& __x) const {
1507.1552 +    size_t __idx = 0;
1507.1553 +#ifdef __SYMBIAN32__    
1507.1554 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1555 +#else            
1507.1556 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1557 +#endif //__SYMBIAN32__    
1507.1558 +      if (_M_mask[__i]) _M_array[__i] -= __x[__idx++];
1507.1559 +  }
1507.1560 +  
1507.1561 +  void operator^=(const valarray<value_type>& __x) const {
1507.1562 +    size_t __idx = 0;
1507.1563 +#ifdef __SYMBIAN32__    
1507.1564 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1565 +#else            
1507.1566 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1567 +#endif // __SYMBIAN32__    
1507.1568 +      if (_M_mask[__i]) _M_array[__i] ^= __x[__idx++];
1507.1569 +  }
1507.1570 +
1507.1571 +  void operator&=(const valarray<value_type>& __x) const {
1507.1572 +    size_t __idx = 0;
1507.1573 +#ifdef __SYMBIAN32__    
1507.1574 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1575 +#else            
1507.1576 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1577 +#endif // __SYMBIAN32__    
1507.1578 +      if (_M_mask[__i]) _M_array[__i] &= __x[__idx++];
1507.1579 +  }
1507.1580 +
1507.1581 +  void operator|=(const valarray<value_type>& __x) const {
1507.1582 +    size_t __idx = 0;
1507.1583 +#ifdef __SYMBIAN32__    
1507.1584 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1585 +#else            
1507.1586 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1587 +#endif // __SYMBIAN32__    
1507.1588 +      if (_M_mask[__i]) _M_array[__i] |= __x[__idx++];
1507.1589 +  }
1507.1590 +
1507.1591 +  void operator<<=(const valarray<value_type>& __x) const {
1507.1592 +    size_t __idx = 0;
1507.1593 +#ifdef __SYMBIAN32__    
1507.1594 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1595 +#else            
1507.1596 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1597 +#endif // __SYMBIAN32__    
1507.1598 +      if (_M_mask[__i]) _M_array[__i] <<= __x[__idx++];
1507.1599 +  }
1507.1600 +
1507.1601 +  void operator>>=(const valarray<value_type>& __x) const {
1507.1602 +    size_t __idx = 0;
1507.1603 +#ifdef __SYMBIAN32__    
1507.1604 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1605 +#else            
1507.1606 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1607 +#endif // __SYMBIAN32__    
1507.1608 +      if (_M_mask[__i]) _M_array[__i] >>= __x[__idx++];
1507.1609 +  }
1507.1610 +
1507.1611 +  void operator=(const value_type& __c) const {
1507.1612 +#ifdef __SYMBIAN32__    
1507.1613 +    for (size_t __i = 0; __i < _M_array.size() && __i < _M_mask.size(); ++__i)
1507.1614 +#else          
1507.1615 +    for (size_t __i = 0; __i < _M_array.size(); ++__i)
1507.1616 +#endif // __SYMBIAN32__    
1507.1617 +      if (_M_mask[__i]) _M_array[__i] = __c;
1507.1618 +  }
1507.1619 +
1507.1620 +  ~mask_array() {}
1507.1621 +
1507.1622 +  // Extension: number of true values in the mask
1507.1623 +  size_t _M_num_true() const {
1507.1624 +    size_t __result = 0;
1507.1625 +    for (size_t __i = 0; __i < _M_mask.size(); ++__i)
1507.1626 +      if (_M_mask[__i]) ++__result;
1507.1627 +    return __result;
1507.1628 +  }
1507.1629 +
1507.1630 +private:
1507.1631 +  mask_array(const _Valarray_bool& __mask, valarray<_Tp>& __array)
1507.1632 +    : _M_mask(__mask), _M_array(__array)
1507.1633 +    {}
1507.1634 +
1507.1635 +  _Valarray_bool _M_mask;
1507.1636 +  valarray<_Tp>& _M_array;
1507.1637 +
1507.1638 +private:                        // Disable assignment
1507.1639 +  void operator=(const mask_array<_Tp>&);
1507.1640 +};
1507.1641 +
1507.1642 +// valarray member functions dealing with mask_array
1507.1643 +
1507.1644 +template <class _Tp>
1507.1645 +inline valarray<_Tp>::valarray(const mask_array<_Tp>& __x)
1507.1646 +  : _Valarray_base<_Tp>(__x._M_num_true())
1507.1647 +{
1507.1648 +  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1507.1649 +          _Is_Trivial;
1507.1650 +  _M_initialize(_Is_Trivial());  
1507.1651 +  *this = __x;
1507.1652 +}
1507.1653 +
1507.1654 +// Behavior is undefined if __x._M_num_true() != this->size()
1507.1655 +template <class _Tp>
1507.1656 +inline valarray<_Tp>& valarray<_Tp>::operator=(const mask_array<_Tp>& __x) {
1507.1657 +  size_t __idx = 0;
1507.1658 +  for (size_t __i = 0; __i < __x._M_array.size(); ++__i)
1507.1659 +    if (__x._M_mask[__i]) 
1507.1660 +    {
1507.1661 +#ifdef __SYMBIAN32__
1507.1662 +    if(__idx < this->_M_size)
1507.1663 +        (*this)[__idx++] = __x._M_array[__i];
1507.1664 +    else
1507.1665 +        break;
1507.1666 +#else
1507.1667 +   (*this)[__idx++] = __x._M_array[__i];
1507.1668 +#endif
1507.1669 +    }
1507.1670 +  return *this;
1507.1671 +}
1507.1672 +
1507.1673 +template <class _Tp>
1507.1674 +inline mask_array<_Tp> valarray<_Tp>::operator[](const _Valarray_bool& __mask)
1507.1675 +{
1507.1676 +  return mask_array<_Tp>(__mask, *this);
1507.1677 +}
1507.1678 +
1507.1679 +
1507.1680 +//----------------------------------------------------------------------
1507.1681 +// indirect_array
1507.1682 +
1507.1683 +template <class _Tp>
1507.1684 +class indirect_array {
1507.1685 +  friend class valarray<_Tp>;
1507.1686 +public:
1507.1687 +  typedef _Tp value_type;
1507.1688 +
1507.1689 +  void operator=(const valarray<value_type>& __x) const {
1507.1690 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1691 +      _M_array[_M_addr[__i]] = __x[__i];
1507.1692 +  }
1507.1693 +
1507.1694 +  void operator*=(const valarray<value_type>& __x) const {
1507.1695 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1696 +      _M_array[_M_addr[__i]] *= __x[__i];
1507.1697 +  }
1507.1698 +
1507.1699 +  void operator/=(const valarray<value_type>& __x) const {
1507.1700 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1701 +      _M_array[_M_addr[__i]] /= __x[__i];
1507.1702 +  }
1507.1703 +
1507.1704 +  void operator%=(const valarray<value_type>& __x) const {
1507.1705 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1706 +      _M_array[_M_addr[__i]] %= __x[__i];
1507.1707 +  }
1507.1708 +
1507.1709 +  void operator+=(const valarray<value_type>& __x) const {
1507.1710 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1711 +      _M_array[_M_addr[__i]] += __x[__i];
1507.1712 +  }
1507.1713 +
1507.1714 +  void operator-=(const valarray<value_type>& __x) const {
1507.1715 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1716 +      _M_array[_M_addr[__i]] -= __x[__i];
1507.1717 +  }
1507.1718 +
1507.1719 +  void operator^=(const valarray<value_type>& __x) const {
1507.1720 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1721 +      _M_array[_M_addr[__i]] ^= __x[__i];
1507.1722 +  }
1507.1723 +
1507.1724 +  void operator&=(const valarray<value_type>& __x) const {
1507.1725 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1726 +      _M_array[_M_addr[__i]] &= __x[__i];
1507.1727 +  }
1507.1728 +
1507.1729 +  void operator|=(const valarray<value_type>& __x) const {
1507.1730 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1731 +      _M_array[_M_addr[__i]] |= __x[__i];
1507.1732 +  }
1507.1733 +
1507.1734 +  void operator<<=(const valarray<value_type>& __x) const {
1507.1735 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1736 +      _M_array[_M_addr[__i]] <<= __x[__i];
1507.1737 +  }
1507.1738 +
1507.1739 +  void operator>>=(const valarray<value_type>& __x) const {
1507.1740 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1741 +      _M_array[_M_addr[__i]] >>= __x[__i];
1507.1742 +  }
1507.1743 +
1507.1744 +  void operator=(const value_type& __c) const {
1507.1745 +    for (size_t __i = 0; __i < _M_addr.size(); ++__i)
1507.1746 +      _M_array[_M_addr[__i]] = __c;
1507.1747 +  }
1507.1748 +
1507.1749 +  ~indirect_array() {}
1507.1750 +
1507.1751 +private:
1507.1752 +  indirect_array(const _Valarray_size_t& __addr, valarray<_Tp>& __array)
1507.1753 +    : _M_addr(__addr), _M_array(__array)
1507.1754 +    {}
1507.1755 +
1507.1756 +  _Valarray_size_t _M_addr;
1507.1757 +  valarray<_Tp>&   _M_array;
1507.1758 +
1507.1759 +private:                        // Disable assignment
1507.1760 +  void operator=(const indirect_array<_Tp>&);
1507.1761 +};
1507.1762 +
1507.1763 +// valarray member functions dealing with indirect_array
1507.1764 +
1507.1765 +template <class _Tp>
1507.1766 +inline valarray<_Tp>::valarray(const indirect_array<_Tp>& __x)
1507.1767 +  : _Valarray_base<_Tp>(__x._M_addr.size())
1507.1768 +{
1507.1769 +  typedef typename __type_traits<_Tp>::has_trivial_default_constructor
1507.1770 +          _Is_Trivial;
1507.1771 +  _M_initialize(_Is_Trivial());  
1507.1772 +  *this = __x;
1507.1773 +}
1507.1774 +
1507.1775 +
1507.1776 +template <class _Tp>
1507.1777 +inline indirect_array<_Tp>
1507.1778 +valarray<_Tp>::operator[](const _Valarray_size_t& __addr)
1507.1779 +{
1507.1780 +  return indirect_array<_Tp>(__addr, *this);
1507.1781 +}
1507.1782 +
1507.1783 +_STLP_END_NAMESPACE
1507.1784 +
1507.1785 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1507.1786 +#  include <stl/_valarray.c>
1507.1787 +# endif
1507.1788 +
1507.1789 +#endif /* _STLP_VALARRAY */
1507.1790 +
1507.1791 +
1507.1792 +// Local Variables:
1507.1793 +// mode:C++
1507.1794 +// End:
  1508.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1508.2 +++ b/epoc32/include/stdapis/stlportv5/stl/_vector.c	Wed Mar 31 12:27:01 2010 +0100
  1508.3 @@ -0,0 +1,137 @@
  1508.4 +/*
  1508.5 + *
  1508.6 + *
  1508.7 + * Copyright (c) 1994
  1508.8 + * Hewlett-Packard Company
  1508.9 + *
 1508.10 + * Copyright (c) 1996,1997
 1508.11 + * Silicon Graphics Computer Systems, Inc.
 1508.12 + *
 1508.13 + * Copyright (c) 1997
 1508.14 + * Moscow Center for SPARC Technology
 1508.15 + *
 1508.16 + * Copyright (c) 1999 
 1508.17 + * Boris Fomitchev
 1508.18 + *
 1508.19 + * This material is provided "as is", with absolutely no warranty expressed
 1508.20 + * or implied. Any use is at your own risk.
 1508.21 + *
 1508.22 + * Permission to use or copy this software for any purpose is hereby granted 
 1508.23 + * without fee, provided the above notices are retained on all copies.
 1508.24 + * Permission to modify the code and to distribute modified code is granted,
 1508.25 + * provided the above notices are retained, and a notice that the code was
 1508.26 + * modified is included with the above copyright notice.
 1508.27 + *
 1508.28 + */
 1508.29 +#ifndef _STLP_VECTOR_C
 1508.30 +#define _STLP_VECTOR_C
 1508.31 +
 1508.32 +# if !defined (_STLP_INTERNAL_VECTOR_H)
 1508.33 +#  include <stl/_vector.h>
 1508.34 +# endif
 1508.35 +
 1508.36 +# if defined ( _STLP_NESTED_TYPE_PARAM_BUG )
 1508.37 +#  define iterator       _Tp*
 1508.38 +#  define size_type           size_t
 1508.39 +# endif
 1508.40 +
 1508.41 +#  undef  vector
 1508.42 +#  define vector __WORKAROUND_DBG_RENAME(vector)
 1508.43 +
 1508.44 +_STLP_BEGIN_NAMESPACE
 1508.45 +
 1508.46 +template <class _Tp, class _Alloc>
 1508.47 +void 
 1508.48 +__vector__<_Tp, _Alloc>::reserve(size_type __n) {
 1508.49 +  if (capacity() < __n) {
 1508.50 +    const size_type __old_size = size();
 1508.51 +    pointer __tmp;
 1508.52 +    if (this->_M_start) {
 1508.53 +      __tmp = _M_allocate_and_copy(__n, this->_M_start, this->_M_finish);
 1508.54 +      _M_clear();
 1508.55 +    } else {
 1508.56 +      __tmp = this->_M_end_of_storage.allocate(__n);
 1508.57 +    }
 1508.58 +    _M_set(__tmp, __tmp + __old_size, __tmp + __n);
 1508.59 +  }
 1508.60 +}
 1508.61 +
 1508.62 +template <class _Tp, class _Alloc>
 1508.63 +void 
 1508.64 +__vector__<_Tp, _Alloc>::_M_fill_insert(
 1508.65 +				    iterator __position, 
 1508.66 +				    size_type __n, const _Tp& __x) {
 1508.67 +  if (__n != 0) {
 1508.68 +    if (size_type(this->_M_end_of_storage._M_data - this->_M_finish) >= __n) {
 1508.69 +      _Tp __x_copy = __x;
 1508.70 +      const size_type __elems_after = this->_M_finish - __position;
 1508.71 +      pointer __old_finish = this->_M_finish;
 1508.72 +      if (__elems_after > __n) {
 1508.73 +        __uninitialized_copy(this->_M_finish - __n, this->_M_finish, this->_M_finish, _IsPODType());
 1508.74 +        this->_M_finish += __n;
 1508.75 +        __copy_backward_ptrs(__position, __old_finish - __n, __old_finish, _TrivialAss());
 1508.76 +        _STLP_STD::fill(__position, __position + __n, __x_copy);
 1508.77 +      }
 1508.78 +      else {
 1508.79 +        uninitialized_fill_n(this->_M_finish, __n - __elems_after, __x_copy);
 1508.80 +        this->_M_finish += __n - __elems_after;
 1508.81 +        __uninitialized_copy(__position, __old_finish, this->_M_finish, _IsPODType());
 1508.82 +        this->_M_finish += __elems_after;
 1508.83 +        _STLP_STD::fill(__position, __old_finish, __x_copy);
 1508.84 +      }
 1508.85 +    }
 1508.86 +    else 
 1508.87 +      _M_insert_overflow(__position, __x, _IsPODType(), __n);
 1508.88 +  }
 1508.89 +}
 1508.90 +
 1508.91 +template <class _Tp, class _Alloc>
 1508.92 +__vector__<_Tp,_Alloc>& 
 1508.93 +__vector__<_Tp,_Alloc>::operator=(const __vector__<_Tp, _Alloc>& __x)
 1508.94 +{
 1508.95 +  if (&__x != this) {
 1508.96 +    const size_type __xlen = __x.size();
 1508.97 +    if (__xlen > capacity()) {
 1508.98 +      pointer __tmp = _M_allocate_and_copy(__xlen, (const_pointer)__x._M_start+0, (const_pointer)__x._M_finish+0);
 1508.99 +      _M_clear();
1508.100 +      this->_M_start = __tmp;
1508.101 +      this->_M_end_of_storage._M_data = this->_M_start + __xlen;
1508.102 +    }
1508.103 +    else if (size() >= __xlen) {
1508.104 +      pointer __i = __copy_ptrs((const_pointer)__x._M_start+0, (const_pointer)__x._M_finish+0, (pointer)this->_M_start, _TrivialAss());
1508.105 +      _STLP_STD::_Destroy(__i, this->_M_finish);
1508.106 +    }
1508.107 +    else {
1508.108 +      __copy_ptrs((const_pointer)__x._M_start, (const_pointer)__x._M_start + size(), (pointer)this->_M_start, _TrivialAss());
1508.109 +      __uninitialized_copy((const_pointer)__x._M_start + size(), (const_pointer)__x._M_finish+0, this->_M_finish, _IsPODType());
1508.110 +    }
1508.111 +    this->_M_finish = this->_M_start + __xlen;
1508.112 +  }
1508.113 +  return *this;
1508.114 +}
1508.115 +
1508.116 +template <class _Tp, class _Alloc>
1508.117 +void __vector__<_Tp, _Alloc>::_M_fill_assign(size_t __n, const _Tp& __val) {
1508.118 +  if (__n > capacity()) {
1508.119 +    __vector__<_Tp, _Alloc> __tmp(__n, __val, get_allocator());
1508.120 +    __tmp.swap(*this);
1508.121 +  }
1508.122 +  else if (__n > size()) {
1508.123 +    fill(begin(), end(), __val);
1508.124 +    this->_M_finish = _STLP_STD::uninitialized_fill_n(this->_M_finish, __n - size(), __val);
1508.125 +  }
1508.126 +  else
1508.127 +    erase(_STLP_STD::fill_n(begin(), __n, __val), end());
1508.128 +}
1508.129 +
1508.130 +_STLP_END_NAMESPACE
1508.131 +
1508.132 +# undef size_type
1508.133 +# undef iterator
1508.134 +# undef vector
1508.135 +
1508.136 +#endif /*  _STLP_VECTOR_C */
1508.137 +
1508.138 +      // Local Variables:
1508.139 +	// mode:C++
1508.140 +	// End:
  1509.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1509.2 +++ b/epoc32/include/stdapis/stlportv5/stl/c_locale.h	Wed Mar 31 12:27:01 2010 +0100
  1509.3 @@ -0,0 +1,459 @@
  1509.4 +/*
  1509.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1509.6 + *
  1509.7 + * Copyright (c) 1999
  1509.8 + * Silicon Graphics Computer Systems, Inc.
  1509.9 + *
 1509.10 + * Copyright (c) 1999 
 1509.11 + * Boris Fomitchev
 1509.12 + *
 1509.13 + * This material is provided "as is", with absolutely no warranty expressed
 1509.14 + * or implied. Any use is at your own risk.
 1509.15 + *
 1509.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1509.17 + * without fee, provided the above notices are retained on all copies.
 1509.18 + * Permission to modify the code and to distribute modified code is granted,
 1509.19 + * provided the above notices are retained, and a notice that the code was
 1509.20 + * modified is included with the above copyright notice.
 1509.21 + *
 1509.22 + */ 
 1509.23 +
 1509.24 +
 1509.25 +#ifndef _STLP_C_LOCALE_H
 1509.26 +# define _STLP_C_LOCALE_H
 1509.27 +
 1509.28 +/*
 1509.29 + * Implementation dependent definitions
 1509.30 + */
 1509.31 +#ifdef __cplusplus
 1509.32 +#  include <stl/_config.h>
 1509.33 +#endif
 1509.34 +
 1509.35 +#if defined(__sgi) 
 1509.36 +# if defined(ROOT_65) /* IRIX 6.5.x */
 1509.37 +#  include <sgidefs.h>
 1509.38 +#  include <standards.h>
 1509.39 +#  include <wchar.h>
 1509.40 +#  include <ctype.h>
 1509.41 +
 1509.42 +# else
 1509.43 +                  /* IRIX pre-6.5 */
 1509.44 +#  include <sgidefs.h>
 1509.45 +#  include <standards.h>
 1509.46 +
 1509.47 +#  if !defined(_SIZE_T) && !defined(_SIZE_T_)
 1509.48 +#   define _SIZE_T
 1509.49 +#    if (_MIPS_SZLONG == 32)
 1509.50 +typedef unsigned int    size_t;
 1509.51 +#    endif
 1509.52 +#    if (_MIPS_SZLONG == 64)
 1509.53 +typedef unsigned long   size_t;
 1509.54 +#    endif
 1509.55 +#   endif
 1509.56 +
 1509.57 +#   ifndef _WCHAR_T
 1509.58 +#    define _WCHAR_T
 1509.59 +#     if (_MIPS_SZLONG == 32)
 1509.60 +typedef long wchar_t;
 1509.61 +#     endif
 1509.62 +#     if (_MIPS_SZLONG == 64)
 1509.63 +typedef __int32_t wchar_t;
 1509.64 +#     endif
 1509.65 +#    endif /* _WCHAR_T */
 1509.66 +
 1509.67 +#    ifndef _WINT_T
 1509.68 +#     define _WINT_T
 1509.69 +#     if (_MIPS_SZLONG == 32)
 1509.70 +        typedef long    wint_t;
 1509.71 +#     endif
 1509.72 +#     if (_MIPS_SZLONG == 64)
 1509.73 +        typedef __int32_t wint_t;
 1509.74 +#     endif
 1509.75 +#    endif /* _WINT_T */
 1509.76 +
 1509.77 +#    ifndef _MBSTATE_T
 1509.78 +#    define _MBSTATE_T
 1509.79 +#    ifdef _MSC_VER
 1509.80 +		typedef int		mbstate_t;
 1509.81 +#    else
 1509.82 +        typedef char    mbstate_t;
 1509.83 +#    endif
 1509.84 +#    endif /* _MBSTATE_T */
 1509.85 +
 1509.86 +#   endif /* ROOT65 */ 
 1509.87 +
 1509.88 +#  else /* __sgi */
 1509.89 +
 1509.90 +# ifdef __cplusplus
 1509.91 +# ifndef _STLP_CSTDDEF
 1509.92 +#  include <cstddef>
 1509.93 +# endif
 1509.94 +# ifndef _STLP_CWCHAR_H
 1509.95 +#  include <stl/_cwchar.h>
 1509.96 +# endif
 1509.97 +# ifndef _STLP_CCTYPE
 1509.98 +#  include <cctype>
 1509.99 +# endif
1509.100 +# else
1509.101 +#  include <stddef.h>
1509.102 +#  include <wchar.h>
1509.103 +#  include <ctype.h>
1509.104 +# endif
1509.105 +
1509.106 +#endif /* __sgi */
1509.107 +
1509.108 +/*
1509.109 + * GENERAL FRAMEWORK
1509.110 + */
1509.111 +
1509.112 +struct _Locale_ctype;
1509.113 +struct _Locale_numeric;
1509.114 +struct _Locale_time;
1509.115 +struct _Locale_collate;
1509.116 +struct _Locale_monetary;
1509.117 +struct _Locale_messages;
1509.118 +
1509.119 +/*
1509.120 +  Bitmask macros.  
1509.121 +*/
1509.122 +
1509.123 +/*
1509.124 + * For narrow characters, we expose the lookup table interface.
1509.125 + */
1509.126 +
1509.127 +/* Internal bitmask macros, os-specific. */
1509.128 +
1509.129 +#if defined(__sgi)              /* IRIX */
1509.130 +
1509.131 +#define _Locale_S      0x00000008      /* Spacing character */
1509.132 +#define _Locale_A      0x00004000      /* Alphabetical characters only */
1509.133 +#define _Locale_B      0x00000040      /* Obsolete: was space char only */
1509.134 +#define _Locale_PR     0x00008000      /* Printable characters only */
1509.135 +#define _Locale_G      0x40000000      /* Graphic characters only */
1509.136 +#define _Locale_BL     0x80000000      /* The blank character class */
1509.137 +
1509.138 +/* Public bitmask macros, must be defined for every OS. These values, of
1509.139 + * course, are specific to IRIX. */
1509.140 +
1509.141 +#define _Locale_CNTRL  0x00000020      /* Control character */
1509.142 +#define _Locale_UPPER  0x00000001      /* Upper case */
1509.143 +#define _Locale_LOWER  0x00000002      /* Lower case */
1509.144 +#define _Locale_DIGIT  0x00000004      /* Numeral (digit) */
1509.145 +#define _Locale_XDIGIT 0x00000080      /* heXadecimal digit */
1509.146 +#define _Locale_PUNCT  0x00000010      /* Punctuation */
1509.147 +#define _Locale_SPACE  (_Locale_S | _Locale_BL)
1509.148 +#define _Locale_PRINT  (_Locale_PUNCT | _Locale_UPPER | _Locale_LOWER | \
1509.149 +                        _Locale_DIGIT | _Locale_A | _Locale_XDIGIT | \
1509.150 +                        _Locale_PR)
1509.151 +#define _Locale_ALPHA  _Locale_A
1509.152 +
1509.153 +/*
1509.154 +* All of these except for graph and blank are from the C standard;
1509.155 +* graph and blank are XPG4.  (graph in XPG4 doesn't mean quite the
1509.156 +* same thing as graph in the C++ library)
1509.157 +*/
1509.158 +
1509.159 +#endif /* IRIX */
1509.160 +
1509.161 +
1509.162 +#if defined( __Lynx__ )
1509.163 + /* azov: On Lynx isalpha defined as (_U | _L), which gives us a mask 
1509.164 +  * unusable in ctype_table. So we have to redefine it and use hard-coded 
1509.165 +  * numbers (to avoid potential clashes if system headers change).
1509.166 +  *
1509.167 +  * P.S. Actually, I see no reason in using platform-specific masks - 
1509.168 +  * having just one set of masks for all platforms should work just as
1509.169 +  * well - we only use them internally and they don't have to be equal 
1509.170 +  * to whatever defined in local ctype.h
1509.171 +  *
1509.172 +  */ 
1509.173 +#   define _Locale_CNTRL  040     /* _C, Control character */
1509.174 +#   define _Locale_UPPER  01      /* _U, Upper case */
1509.175 +#   define _Locale_LOWER  02      /* _L, Lower case */
1509.176 +#   define _Locale_DIGIT  04      /* _N, Numeral (digit) */
1509.177 +#   define _Locale_XDIGIT 0200    /* _X, heXadecimal digit */
1509.178 +#   define _Locale_PUNCT  020     /* _P, Punctuation */
1509.179 +#   define _Locale_SPACE  010     /* _S, Spacing */
1509.180 +#   define _Locale_ALPHA  040000  /* none, Alphanumerical */
1509.181 +#   define _Locale_PRINT  (_Locale_PUNCT | _Locale_UPPER | _Locale_LOWER | \
1509.182 +                           _Locale_DIGIT | _Locale_ALPHA | _Locale_XDIGIT |\
1509.183 +                           _Locale_SPACE ) /* Printable */
1509.184 +# endif /* __Lynx__ */
1509.185 +
1509.186 +#if defined(__GNUC__) || defined (__BORLANDC__) || defined (__COMO__)
1509.187 +
1509.188 +# if defined (__CYGWIN__)
1509.189 +
1509.190 +#  define _Locale_CNTRL  040
1509.191 +#  define _Locale_UPPER  02
1509.192 +#  define _Locale_LOWER  01
1509.193 +#  define _Locale_DIGIT  04
1509.194 +#  define _Locale_XDIGIT ( 0100 | _Locale_DIGIT )
1509.195 +#  define _Locale_PUNCT  020
1509.196 +#  define _Locale_SPACE  010
1509.197 +#  define _Locale_ALPHA  (_Locale_UPPER | _Locale_LOWER)
1509.198 +#  define _Locale_PRINT  (_Locale_ALPHA | _Locale_DIGIT | _Locale_PUNCT | 0200 )
1509.199 +
1509.200 +# elif defined (__FreeBSD__)
1509.201 +
1509.202 +# define _Locale_CNTRL _CTYPE_C
1509.203 +# define _Locale_UPPER _CTYPE_U
1509.204 +# define _Locale_LOWER _CTYPE_L
1509.205 +# define _Locale_DIGIT _CTYPE_D
1509.206 +# define _Locale_XDIGIT _CTYPE_X
1509.207 +# define _Locale_PUNCT _CTYPE_P
1509.208 +# define _Locale_SPACE _CTYPE_S
1509.209 +# define _Locale_PRINT _CTYPE_R
1509.210 +# define _Locale_ALPHA _CTYPE_A
1509.211 +
1509.212 +# elif defined (__NetBSD__) || defined (__amigaos__)
1509.213 + 
1509.214 +#  define _Locale_CNTRL _C
1509.215 +#  define _Locale_UPPER _U
1509.216 +#  define _Locale_LOWER _L
1509.217 +#  define _Locale_DIGIT _N
1509.218 +#  define _Locale_XDIGIT (_N|_X)
1509.219 +#  define _Locale_PUNCT _P
1509.220 +#  define _Locale_SPACE _S
1509.221 +#  define _Locale_PRINT (_P|_U|_L|_N|_B)
1509.222 +#  define _Locale_ALPHA (_U|_L)
1509.223 +# elif defined(__EMX__) /* OS/2 with emx runtime */
1509.224 +#  define _Locale_CNTRL _CNTRL
1509.225 +#  define _Locale_UPPER _UPPER
1509.226 +#  define _Locale_LOWER _LOWER
1509.227 +#  define _Locale_DIGIT _DIGIT
1509.228 +#  define _Locale_XDIGIT _XDIGIT
1509.229 +#  define _Locale_PUNCT _PUNCT
1509.230 +#  define _Locale_SPACE _SPACE
1509.231 +#  define _Locale_PRINT _PRINT
1509.232 +#  define _Locale_ALPHA (_UPPER|_LOWER)
1509.233 +
1509.234 +# elif defined(_STLP_USE_GLIBC) /* linux, using the gnu compiler */
1509.235 +
1509.236 +/* This section uses macros defined in the gnu libc ctype.h header */
1509.237 +
1509.238 +#  define _Locale_CNTRL  _IScntrl
1509.239 +#  define _Locale_UPPER  _ISupper
1509.240 +#  define _Locale_LOWER  _ISlower
1509.241 +#  define _Locale_DIGIT  _ISdigit
1509.242 +#  define _Locale_XDIGIT _ISxdigit
1509.243 +#  define _Locale_PUNCT  _ISpunct
1509.244 +#  define _Locale_SPACE  _ISspace
1509.245 +#  define _Locale_PRINT  _ISprint
1509.246 +#  define _Locale_ALPHA  _ISalpha
1509.247 +
1509.248 +#  endif /* GLIBC */
1509.249 +
1509.250 +#endif /* gnu */
1509.251 +
1509.252 +#if ( defined(__sun) && defined (__SVR4) ) \
1509.253 +    || (defined (__digital__) && defined (__unix__)) \
1509.254 +    || defined(_AIX)
1509.255 +/* fbp : condition from AT&T code*/
1509.256 +#if !(defined(__XPG4_CHAR_CLASS__) || defined(_XPG4_2) || \
1509.257 +    (defined(_XOPEN_SOURCE) && (_XOPEN_VERSION - 0 == 4))) && ! defined (_ISCNTRL)
1509.258 +  /* fbp : on 2.5.1, the defines are different ;( */
1509.259 +  // # if ( defined (__sun) && defined (__SVR4) && ! defined (_ISCNTRL) )
1509.260 +#   define _ISCNTRL _C
1509.261 +#   define _ISUPPER _U
1509.262 +#   define _ISLOWER _L
1509.263 +#   define _ISDIGIT _N
1509.264 +#   define _ISXDIGIT _X
1509.265 +#   define _ISPUNCT _P
1509.266 +#   define _ISSPACE _S
1509.267 +#   define _ISPRINT (_P | _U | _L | _N | _B)
1509.268 +#   define _ISALPHA (_U | _L)
1509.269 +#  endif 
1509.270 +
1509.271 +#  define _Locale_CNTRL  _ISCNTRL
1509.272 +#  define _Locale_UPPER  _ISUPPER
1509.273 +#  define _Locale_LOWER  _ISLOWER
1509.274 +#  define _Locale_DIGIT  _ISDIGIT
1509.275 +#  define _Locale_XDIGIT _ISXDIGIT
1509.276 +#  define _Locale_PUNCT  _ISPUNCT
1509.277 +#  define _Locale_SPACE  _ISSPACE
1509.278 +#  define _Locale_PRINT  _ISPRINT
1509.279 +#  define _Locale_ALPHA  _ISALPHA
1509.280 +# elif defined(__SYMBIAN32__)
1509.281 +# define _Locale_CNTRL _CTYPE_C
1509.282 +# define _Locale_UPPER _CTYPE_U
1509.283 +# define _Locale_LOWER _CTYPE_L
1509.284 +# define _Locale_DIGIT _CTYPE_D
1509.285 +# define _Locale_XDIGIT _CTYPE_X
1509.286 +# define _Locale_PUNCT _CTYPE_P
1509.287 +# define _Locale_SPACE _CTYPE_S
1509.288 +# define _Locale_PRINT _CTYPE_R
1509.289 +# define _Locale_ALPHA _CTYPE_A
1509.290 +
1509.291 +#elif defined (__MWERKS__)
1509.292 +#  define _Locale_CNTRL  __control_char
1509.293 +#  define _Locale_UPPER  __upper_case
1509.294 +#  define _Locale_LOWER  __lower_case
1509.295 +#  define _Locale_DIGIT  __digit
1509.296 +#  define _Locale_XDIGIT __hex_digit
1509.297 +#  define _Locale_PUNCT  __punctuation
1509.298 +#  define _Locale_SPACE  __space_char
1509.299 +#  define _Locale_PRINT  __printable
1509.300 +#  define _Locale_ALPHA  __alphanumeric
1509.301 +#elif defined (__BORLANDC__)
1509.302 +#  define _Locale_CNTRL  _IS_CTL
1509.303 +#  define _Locale_UPPER  _IS_UPP
1509.304 +#  define _Locale_LOWER  _IS_LOW
1509.305 +#  define _Locale_DIGIT  _IS_DIG
1509.306 +#  define _Locale_XDIGIT _IS_HEX
1509.307 +#  define _Locale_PUNCT  _IS_PUN
1509.308 +#  define _Locale_SPACE  _IS_SP
1509.309 +#  define _Locale_PRINT  (_IS_SP|_IS_PUN|_IS_UPP|_IS_LOW|_IS_DIG)
1509.310 +#  define _Locale_ALPHA  _IS_ALPHA
1509.311 +#elif defined (_MSC_VER) || defined (__MINGW32__)
1509.312 +#  define _Locale_CNTRL  _CONTROL
1509.313 +#  define _Locale_UPPER  _UPPER
1509.314 +#  define _Locale_LOWER  _LOWER
1509.315 +#  define _Locale_DIGIT  _DIGIT
1509.316 +#  define _Locale_XDIGIT _HEX
1509.317 +#  define _Locale_PUNCT  _PUNCT
1509.318 +#  define _Locale_SPACE  _SPACE
1509.319 +#  define _Locale_PRINT  (_ALPHA | _DIGIT | _BLANK | _PUNCT)
1509.320 +// is this one has to be so complex ?  
1509.321 +#  define _Locale_ALPHA  ( _ALPHA & ~ (_UPPER | _LOWER )) 
1509.322 +#elif defined (__DMC__)
1509.323 +#  define _Locale_CNTRL  _CONTROL
1509.324 +#  define _Locale_UPPER  _UPPER
1509.325 +#  define _Locale_LOWER  _LOWER
1509.326 +#  define _Locale_DIGIT  _DIGIT
1509.327 +#  define _Locale_XDIGIT _HEX
1509.328 +#  define _Locale_PUNCT  _PUNCT
1509.329 +#  define _Locale_SPACE  _SPACE
1509.330 +#  define _Locale_PRINT  (_UPPER | _LOWER | _DIGIT | _PUNCT | _SPACE)
1509.331 +#  define _Locale_ALPHA  _ALPHA
1509.332 +#elif defined(__MRC__) || defined(__SC__)		//*TY 02/24/2000 - added support for MPW
1509.333 +#  define _Locale_CNTRL  _CTL
1509.334 +#  define _Locale_UPPER  _UPP
1509.335 +#  define _Locale_LOWER  _LOW
1509.336 +#  define _Locale_DIGIT  _DIG
1509.337 +#  define _Locale_XDIGIT _HEX
1509.338 +#  define _Locale_PUNCT  _PUN
1509.339 +#  define _Locale_SPACE  _BLA
1509.340 +#  define _Locale_PRINT  (_UPP | _LOW | _DIG | _PUN | _BLA)
1509.341 +#  define _Locale_ALPHA  (_UPP | _LOW)
1509.342 +#elif defined(__MLCCPP__)
1509.343 +#  define _Locale_CNTRL    1
1509.344 +#  define _Locale_UPPER    2
1509.345 +#  define _Locale_LOWER    4
1509.346 +#  define _Locale_DIGIT    8
1509.347 +#  define _Locale_XDIGIT  16
1509.348 +#  define _Locale_PUNCT   32
1509.349 +#  define _Locale_SPACE   64
1509.350 +#  define _Locale_PRINT  128
1509.351 +#  define _Locale_ALPHA  256
1509.352 +
1509.353 +# elif defined (__GNUC__) && defined (__APPLE__)
1509.354 + 
1509.355 +# define _Locale_CNTRL _C
1509.356 +# define _Locale_UPPER _U
1509.357 +# define _Locale_LOWER _L
1509.358 +# define _Locale_DIGIT _D
1509.359 +# define _Locale_XDIGIT _X
1509.360 +# define _Locale_PUNCT _P
1509.361 +# define _Locale_SPACE _S
1509.362 +# define _Locale_PRINT _R
1509.363 +# define _Locale_ALPHA _A
1509.364 +
1509.365 +# elif defined (__hpux) || defined (__osf__)
1509.366 + 
1509.367 +#   if defined(__HP_aCC) && !defined(_INCLUDE_HPUX_SOURCE)
1509.368 +#     define _ISALPHA      0x001
1509.369 +#     define _ISALNUM      0x002
1509.370 +#     define _ISBLANK      0x004
1509.371 +#     define _ISCNTRL      0x008
1509.372 +#     define _ISDIGIT      0x010
1509.373 +#     define _ISGRAPH      0x020
1509.374 +#     define _ISLOWER      0x040
1509.375 +#     define _ISPRINT      0x080
1509.376 +#     define _ISPUNCT      0x100
1509.377 +#     define _ISSPACE      0x200
1509.378 +#     define _ISUPPER      0x400
1509.379 +#     define _ISXDIGIT     0x800
1509.380 +#  endif
1509.381 +#  define _Locale_CNTRL  _ISCNTRL
1509.382 +#  define _Locale_UPPER  _ISUPPER
1509.383 +#  define _Locale_LOWER  _ISLOWER
1509.384 +#  define _Locale_DIGIT  _ISDIGIT
1509.385 +#  define _Locale_XDIGIT _ISXDIGIT
1509.386 +#  define _Locale_PUNCT  _ISPUNCT
1509.387 +#  define _Locale_SPACE  _ISSPACE
1509.388 +#  define _Locale_PRINT  _ISPRINT
1509.389 +#  define _Locale_ALPHA  _ISALPHA
1509.390 +# elif defined (__MVS__) || defined(__OS400__)
1509.391 +#  define _Locale_CNTRL __ISCNTRL
1509.392 +#  define _Locale_UPPER __ISUPPER
1509.393 +#  define _Locale_LOWER __ISLOWER
1509.394 +#  define _Locale_DIGIT __ISDIGIT
1509.395 +#  define _Locale_XDIGIT __ISXDIGIT
1509.396 +#  define _Locale_PUNCT __ISPUNCT
1509.397 +#  define _Locale_SPACE __ISSPACE
1509.398 +#  define _Locale_PRINT __ISPRINT
1509.399 +#  define _Locale_ALPHA __ISALPHA
1509.400 +# elif defined (__QNXNTO__)  || defined (__WATCOMC__)
1509.401 +# define _Locale_CNTRL _CNTRL
1509.402 +# define _Locale_UPPER _UPPER
1509.403 +# define _Locale_LOWER _LOWER
1509.404 +# define _Locale_DIGIT _DIGIT
1509.405 +# define _Locale_XDIGIT _XDIGT
1509.406 +# define _Locale_PUNCT _PUNCT
1509.407 +# define _Locale_SPACE _SPACE
1509.408 +# define _Locale_PRINT _PRINT
1509.409 +# define _Locale_ALPHA (_UPPER | _LOWER)
1509.410 +#elif defined (__DJGPP)
1509.411 +#  define _Locale_CNTRL  __dj_ISCNTRL
1509.412 +#  define _Locale_UPPER  __dj_ISUPPER
1509.413 +#  define _Locale_LOWER  __dj_ISLOWER
1509.414 +#  define _Locale_DIGIT  __dj_ISDIGIT
1509.415 +#  define _Locale_XDIGIT __dj_ISXDIGIT
1509.416 +#  define _Locale_PUNCT  __dj_ISPUNCT
1509.417 +#  define _Locale_SPACE  __dj_ISSPACE
1509.418 +#  define _Locale_PRINT  __dj_ISPRINT
1509.419 +#  define _Locale_ALPHA  __dj_ISALPHA
1509.420 +#elif defined (_STLP_SCO_OPENSERVER)
1509.421 +#  define _Locale_CNTRL _C
1509.422 +#  define _Locale_UPPER _U
1509.423 +#  define _Locale_LOWER _L
1509.424 +#  define _Locale_DIGIT _N
1509.425 +#  define _Locale_XDIGIT _X
1509.426 +#  define _Locale_PUNCT _P
1509.427 +#  define _Locale_SPACE _S
1509.428 +#  define _Locale_PRINT _R
1509.429 +#  define _Locale_ALPHA _A
1509.430 +#elif defined (__NCR_SVR)
1509.431 +#  define _Locale_CNTRL _C
1509.432 +#  define _Locale_UPPER _U
1509.433 +#  define _Locale_LOWER _L
1509.434 +#  define _Locale_DIGIT _N
1509.435 +#  define _Locale_XDIGIT _X
1509.436 +#  define _Locale_PUNCT _P
1509.437 +#  define _Locale_SPACE _S
1509.438 +#  define _Locale_PRINT (_P | _U | _L | _N | _B)
1509.439 +#  define _Locale_ALPHA (_U | _L)
1509.440 +#elif defined (_CRAY)
1509.441 +#  define _Locale_CNTRL  _CNTRL
1509.442 +#  define _Locale_UPPER  _UPPER
1509.443 +#  define _Locale_LOWER  _LOWER
1509.444 +#  define _Locale_DIGIT  _DIGIT
1509.445 +#  define _Locale_XDIGIT _XDIGIT
1509.446 +#  define _Locale_PUNCT  _PUNCT
1509.447 +#  define _Locale_SPACE  _SPACE
1509.448 +#  define _Locale_PRINT  _PRINT
1509.449 +#  define _Locale_ALPHA  _ALPHA
1509.450 +#elif defined (_STLP_VXWORKS_TORNADO)
1509.451 +#define _Locale_UPPER _C_UPPER   /* 0x01 */
1509.452 +#define _Locale_LOWER _C_LOWER /* 0x02 */
1509.453 +#define _Locale_DIGIT  _C_NUMBER   /* 0x04 */
1509.454 +#define _Locale_SPACE  _C_WHITE_SPACE   /* 0x08 */
1509.455 +#define _Locale_PUNCT _C_PUNCT   /* 0x10 */
1509.456 +#define _Locale_CNTRL _C_CONTROL   /* 0x20 */
1509.457 +#define _Locale_XDIGIT _C_HEX_NUMBER   /* 0x40 */
1509.458 +#define _Locale_PRINT  (_C_B | _C_UPPER |  _C_LOWER | _C_NUMBER | _C_PUNCT)
1509.459 +#define _Locale_ALPHA (_C_UPPER |  _C_LOWER) 
1509.460 +#endif
1509.461 +
1509.462 +# endif /* _STLP_C_LOCALE_H */
  1510.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1510.2 +++ b/epoc32/include/stdapis/stlportv5/stl/char_traits.h	Wed Mar 31 12:27:01 2010 +0100
  1510.3 @@ -0,0 +1,266 @@
  1510.4 +/*
  1510.5 + * Copyright (c) 1996,1997
  1510.6 + * Silicon Graphics Computer Systems, Inc.
  1510.7 + *
  1510.8 + * Copyright (c) 1999
  1510.9 + * Boris Fomitchev
 1510.10 + *
 1510.11 + * This material is provided "as is", with absolutely no warranty expressed
 1510.12 + * or implied. Any use is at your own risk.
 1510.13 + *
 1510.14 + * Permission to use or copy this software for any purpose is hereby granted
 1510.15 + * without fee, provided the above notices are retained on all copies.
 1510.16 + * Permission to modify the code and to distribute modified code is granted,
 1510.17 + * provided the above notices are retained, and a notice that the code was
 1510.18 + * modified is included with the above copyright notice.
 1510.19 + *
 1510.20 + */
 1510.21 +
 1510.22 +#ifndef _STLP_CHAR_TRAITS_H
 1510.23 +#define _STLP_CHAR_TRAITS_H
 1510.24 +
 1510.25 +// Define char_traits
 1510.26 +
 1510.27 +# if defined (_STLP_OWN_IOSTREAMS) || ! defined (_STLP_USE_NEW_IOSTREAMS)
 1510.28 +
 1510.29 +# if ! defined (_STLP_CSTDDEF)
 1510.30 +#  include <cstddef>
 1510.31 +# endif
 1510.32 +
 1510.33 +#if ! defined (_STLP_CSTRING)
 1510.34 +#  include <cstring>
 1510.35 +#endif
 1510.36 +
 1510.37 +#if defined (_STLP_UNIX) && defined (_STLP_HAS_NO_NEW_C_HEADERS)
 1510.38 +#include <sys/types.h>          // For off_t
 1510.39 +#endif /* __unix */
 1510.40 +
 1510.41 +#ifdef __BORLANDC__
 1510.42 +# include <mem.h>
 1510.43 +# include <string.h>
 1510.44 +# include <_stddef.h>
 1510.45 +// class mbstate_t;
 1510.46 +#endif
 1510.47 +
 1510.48 +#ifndef __TYPE_TRAITS_H
 1510.49 +# include <stl/type_traits.h>
 1510.50 +#endif
 1510.51 +
 1510.52 +# if !defined (_STLP_CWCHAR)
 1510.53 +#  include <stl/_cwchar.h>
 1510.54 +# endif
 1510.55 +
 1510.56 +_STLP_BEGIN_NAMESPACE
 1510.57 +
 1510.58 +# ifdef _STLP_OWN_IOSTREAMS
 1510.59 +
 1510.60 +template <class _Tp> class allocator;
 1510.61 +
 1510.62 +#define _STLP_NULL_CHAR_INIT(_ChT) _STLP_DEFAULT_CONSTRUCTED(_ChT)
 1510.63 +
 1510.64 +#if defined (__sgi) && defined (_STLP_HAS_NO_NEW_C_HEADERS) /* IRIX */
 1510.65 +typedef off64_t   streamoff;
 1510.66 +// #elif defined (__unix) && defined (_STLP_HAS_NO_NEW_C_HEADERS) /* Other version of UNIX */
 1510.67 +// typedef off_t     streamoff;
 1510.68 +#else /* __unix */
 1510.69 +// boris : here, it's not ptrdiff_t as some Solaris systems have confusing definitions of these.
 1510.70 +typedef long streamoff;
 1510.71 +#endif /* _STLP_HAS_NO_NEW_C_HEADERS */
 1510.72 +
 1510.73 +typedef ptrdiff_t streamsize;
 1510.74 +
 1510.75 +// Class fpos, which represents a position within a file.  (The C++
 1510.76 +// standard calls for it to be defined in <ios>.  This implementation
 1510.77 +// moves it to <iosfwd>, which is included by <ios>.)
 1510.78 +template <class _StateT> class fpos
 1510.79 +{
 1510.80 +public:                         // From table 88 of the C++ standard.
 1510.81 +  fpos(streamoff __pos) : _M_pos(__pos), _M_st(_STLP_NULL_CHAR_INIT(_StateT)) {}
 1510.82 +  fpos() : _M_pos(0), _M_st(_STLP_NULL_CHAR_INIT(_StateT)) {}
 1510.83 +
 1510.84 +  operator streamoff() const { return _M_pos; }
 1510.85 +
 1510.86 +  bool  _STLP_CALL operator==(const fpos<_StateT>& __y) const
 1510.87 +    { return _M_pos == __y._M_pos; }
 1510.88 +  bool _STLP_CALL operator!=(const fpos<_StateT>& __y) const
 1510.89 +    { return _M_pos != __y._M_pos; }
 1510.90 +
 1510.91 +  fpos<_StateT>& operator+=(streamoff __off) {
 1510.92 +    _M_pos += __off;
 1510.93 +    return *this;
 1510.94 +  }
 1510.95 +  fpos<_StateT>& operator-=(streamoff __off) {
 1510.96 +    _M_pos -= __off;
 1510.97 +    return *this;
 1510.98 +  }
 1510.99 +
1510.100 +  fpos<_StateT> operator+(streamoff __off) {
1510.101 +    fpos<_StateT> __tmp(*this);
1510.102 +    __tmp += __off;
1510.103 +    return __tmp;
1510.104 +  }
1510.105 +  fpos<_StateT> operator-(streamoff __off) {
1510.106 +    fpos<_StateT> __tmp(*this);
1510.107 +    __tmp -= __off;
1510.108 +    return __tmp;
1510.109 +  }
1510.110 +
1510.111 +public:                         // Manipulation of the state member.
1510.112 +  _StateT state() const { return _M_st; }
1510.113 +  void state(_StateT __st) { _M_st = __st; }
1510.114 +private:
1510.115 +  streamoff _M_pos;
1510.116 +  _StateT _M_st;
1510.117 +};
1510.118 +
1510.119 +typedef fpos<mbstate_t> streampos;
1510.120 +typedef fpos<mbstate_t> wstreampos;
1510.121 +# endif
1510.122 +
1510.123 +// Class __char_traits_base.
1510.124 +
1510.125 +template <class _CharT, class _IntT> class __char_traits_base {
1510.126 +public:
1510.127 +  typedef _CharT char_type;
1510.128 +  typedef _IntT int_type;
1510.129 +#ifdef _STLP_USE_NEW_IOSTREAMS
1510.130 +  typedef streamoff off_type;
1510.131 +  typedef streampos pos_type;
1510.132 +# ifdef _STLP_NO_MBSTATE_T
1510.133 +  typedef char      state_type;
1510.134 +# else
1510.135 +  typedef mbstate_t state_type;
1510.136 +# endif
1510.137 +#endif /* _STLP_USE_NEW_IOSTREAMS */
1510.138 +
1510.139 +  static void _STLP_CALL assign(char_type& __c1, const char_type& __c2) { __c1 = __c2; }
1510.140 +  static bool _STLP_CALL eq(const _CharT& __c1, const _CharT& __c2)
1510.141 +    { return __c1 == __c2; }
1510.142 +  static bool _STLP_CALL lt(const _CharT& __c1, const _CharT& __c2)
1510.143 +    { return __c1 < __c2; }
1510.144 +
1510.145 +  static int _STLP_CALL compare(const _CharT* __s1, const _CharT* __s2, size_t __n) {
1510.146 +    for (size_t __i = 0; __i < __n; ++__i)
1510.147 +      if (!eq(__s1[__i], __s2[__i]))
1510.148 +        return __s1[__i] < __s2[__i] ? -1 : 1;
1510.149 +    return 0;
1510.150 +  }
1510.151 +
1510.152 +  static size_t _STLP_CALL length(const _CharT* __s) {
1510.153 +    const _CharT _NullChar = _STLP_DEFAULT_CONSTRUCTED(_CharT);
1510.154 +    size_t __i;
1510.155 +    for (__i = 0; !eq(__s[__i], _NullChar); ++__i)
1510.156 +      {}
1510.157 +    return __i;
1510.158 +  }
1510.159 +
1510.160 +  static const _CharT* _STLP_CALL find(const _CharT* __s, size_t __n, const _CharT& __c) {
1510.161 +    for ( ; __n > 0 ; ++__s, --__n)
1510.162 +      if (eq(*__s, __c))
1510.163 +        return __s;
1510.164 +    return 0;
1510.165 +  }
1510.166 +
1510.167 +
1510.168 +  static _CharT* _STLP_CALL move(_CharT* __s1, const _CharT* __s2, size_t _Sz) {
1510.169 +    return (_Sz == 0 ? __s1 : (_CharT*)memmove(__s1, __s2, _Sz * sizeof(_CharT)));
1510.170 +  }
1510.171 +
1510.172 +  static _CharT* _STLP_CALL copy(_CharT* __s1, const _CharT* __s2, size_t __n) {
1510.173 +    return (__n == 0 ? __s1 :
1510.174 +	    (_CharT*)memcpy(__s1, __s2, __n * sizeof(_CharT)));
1510.175 +    }
1510.176 +
1510.177 +  static _CharT* _STLP_CALL assign(_CharT* __s, size_t __n, _CharT __c) {
1510.178 +    for (size_t __i = 0; __i < __n; ++__i)
1510.179 +      __s[__i] = __c;
1510.180 +    return __s;
1510.181 +  }
1510.182 +
1510.183 +  static int_type _STLP_CALL not_eof(const int_type& __c) {
1510.184 +    return !eq_int_type(__c, eof()) ? __c : __STATIC_CAST(int_type, 0);
1510.185 +  }
1510.186 +
1510.187 +  static char_type _STLP_CALL to_char_type(const int_type& __c) {
1510.188 +    return (char_type)__c;
1510.189 +  }
1510.190 +
1510.191 +  static int_type _STLP_CALL to_int_type(const char_type& __c) {
1510.192 +    return (int_type)__c;
1510.193 +  }
1510.194 +
1510.195 +  static bool _STLP_CALL eq_int_type(const int_type& __c1, const int_type& __c2) {
1510.196 +    return __c1 == __c2;
1510.197 +  }
1510.198 +
1510.199 +  static int_type _STLP_CALL eof() {
1510.200 +    return (int_type)-1;
1510.201 +    //    return __STATIC_CAST(int_type,-1);
1510.202 +  }
1510.203 +};
1510.204 +
1510.205 +// Generic char_traits class.  Note that this class is provided only
1510.206 +//  as a base for explicit specialization; it is unlikely to be useful
1510.207 +//  as is for any particular user-defined type.  In particular, it
1510.208 +//  *will not work* for a non-POD type.
1510.209 +
1510.210 +template <class _CharT> class char_traits
1510.211 +  : public __char_traits_base<_CharT, _CharT>
1510.212 +{};
1510.213 +
1510.214 +// Specialization for char.
1510.215 +
1510.216 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC char_traits<char>
1510.217 +  : public __char_traits_base<char, int>
1510.218 +{
1510.219 +public:
1510.220 +  typedef char char_type;
1510.221 +  typedef int int_type;
1510.222 +#ifdef _STLP_USE_NEW_IOSTREAMS
1510.223 +  typedef streamoff off_type;
1510.224 +# ifndef _STLP_NO_MBSTATE_T
1510.225 +  typedef streampos pos_type;
1510.226 +  typedef mbstate_t state_type;
1510.227 +# endif
1510.228 +#endif /* _STLP_USE_NEW_IOSTREAMS */
1510.229 +
1510.230 +  static char _STLP_CALL to_char_type(const int& __c) {
1510.231 +    return (char)(unsigned char)__c;
1510.232 +  }
1510.233 +
1510.234 +  static int _STLP_CALL to_int_type(const char& __c) {
1510.235 +    return (unsigned char)__c;
1510.236 +  }
1510.237 +
1510.238 +  static int _STLP_CALL compare(const char* __s1, const char* __s2, size_t __n)
1510.239 +    { return memcmp(__s1, __s2, __n); }
1510.240 +
1510.241 +  static size_t _STLP_CALL length(const char* __s) { return strlen(__s); }
1510.242 +
1510.243 +  static void _STLP_CALL assign(char& __c1, const char& __c2) { __c1 = __c2; }
1510.244 +
1510.245 +  static char* _STLP_CALL assign(char* __s, size_t __n, char __c)
1510.246 +    { memset(__s, __c, __n); return __s; }
1510.247 +};
1510.248 +
1510.249 +# if defined (_STLP_HAS_WCHAR_T)
1510.250 +// Specialization for wchar_t.
1510.251 +_STLP_TEMPLATE_NULL class _STLP_CLASS_DECLSPEC char_traits<wchar_t>
1510.252 +  : public __char_traits_base<wchar_t, wint_t>
1510.253 +{};
1510.254 +# endif
1510.255 +
1510.256 +_STLP_END_NAMESPACE
1510.257 +
1510.258 +# else /* OWN_IOSTREAMS */
1510.259 +
1510.260 +#  include <wrap_std/iosfwd>
1510.261 +
1510.262 +# endif /* OWN_IOSTREAMS */
1510.263 +
1510.264 +#endif /* _STLP_CHAR_TRAITS_H */
1510.265 +
1510.266 +// Local Variables:
1510.267 +// mode:C++
1510.268 +// End:
1510.269 +
  1511.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1511.2 +++ b/epoc32/include/stdapis/stlportv5/stl/concept_checks.h	Wed Mar 31 12:27:01 2010 +0100
  1511.3 @@ -0,0 +1,810 @@
  1511.4 +/*
  1511.5 + * Copyright (c) 1999
  1511.6 + * Silicon Graphics Computer Systems, Inc.
  1511.7 + *
  1511.8 + * Permission to use, copy, modify, distribute and sell this software
  1511.9 + * and its documentation for any purpose is hereby granted without fee,
 1511.10 + * provided that the above copyright notice appear in all copies and
 1511.11 + * that both that copyright notice and this permission notice appear
 1511.12 + * in supporting documentation.  Silicon Graphics makes no
 1511.13 + * representations about the suitability of this software for any
 1511.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1511.15 + */
 1511.16 +
 1511.17 +#ifndef __CONCEPT_CHECKS_H
 1511.18 +#define __CONCEPT_CHECKS_H
 1511.19 +
 1511.20 +/*
 1511.21 +  Use these macro like assertions, but they assert properties
 1511.22 +  on types (usually template arguments). In technical terms they
 1511.23 +  verify whether a type "models" a "concept".
 1511.24 +
 1511.25 +  This set of requirements and the terminology used here is derived
 1511.26 +  from the book "Generic Programming and the STL" by Matt Austern
 1511.27 +  (Addison Wesley). For further information please consult that
 1511.28 +  book. The requirements also are intended to match the ANSI/ISO C++
 1511.29 +  standard.
 1511.30 +
 1511.31 +  This file covers the basic concepts and the iterator concepts.
 1511.32 +  There are several other files that provide the requirements
 1511.33 +  for the STL containers:
 1511.34 +    container_concepts.h
 1511.35 +    sequence_concepts.h
 1511.36 +    assoc_container_concepts.h
 1511.37 +
 1511.38 +  Jeremy Siek, 1999
 1511.39 +
 1511.40 +  TO DO:
 1511.41 +    - some issues with regards to concept classification and mutability
 1511.42 +      including AssociativeContianer -> ForwardContainer
 1511.43 +      and SortedAssociativeContainer -> ReversibleContainer
 1511.44 +    - HashedAssociativeContainer
 1511.45 +    - Allocator
 1511.46 +    - Function Object Concepts
 1511.47 +
 1511.48 +  */
 1511.49 +
 1511.50 +#ifndef _STLP_USE_CONCEPT_CHECKS
 1511.51 +
 1511.52 +// Some compilers lack the features that are necessary for concept checks.
 1511.53 +// On those compilers we define the concept check macros to do nothing.
 1511.54 +#define _STLP_REQUIRES(__type_var, __concept) do {} while(0)
 1511.55 +#define _STLP_CLASS_REQUIRES(__type_var, __concept) \
 1511.56 +  static int  __##__type_var##_##__concept
 1511.57 +#define _STLP_CONVERTIBLE(__type_x, __type_y) do {} while(0)
 1511.58 +#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) do {} while(0)
 1511.59 +#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \
 1511.60 +  static int  __##__type_x##__type_y##_require_same_type
 1511.61 +#define _STLP_GENERATOR_CHECK(__func, __ret) do {} while(0)
 1511.62 +#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \
 1511.63 +  static int  __##__func##__ret##_generator_check
 1511.64 +#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) do {} while(0)
 1511.65 +#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \
 1511.66 +  static int  __##__func##__ret##__arg##_unary_function_check
 1511.67 +#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
 1511.68 +  do {} while(0)
 1511.69 +#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
 1511.70 +  static int  __##__func##__ret##__first##__second##_binary_function_check
 1511.71 +#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
 1511.72 +  do {} while(0)
 1511.73 +#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
 1511.74 +  static int __##__opname##__ret##__first##__second##_require_binary_op
 1511.75 +
 1511.76 +#else /* _STLP_USE_CONCEPT_CHECKS */
 1511.77 +
 1511.78 +// This macro tests whether the template argument "__type_var"
 1511.79 +// satisfies the requirements of "__concept".  Here is a list of concepts
 1511.80 +// that we know how to check:
 1511.81 +//       _Allocator
 1511.82 +//       _Assignable
 1511.83 +//       _DefaultConstructible
 1511.84 +//       _EqualityComparable
 1511.85 +//       _LessThanComparable
 1511.86 +//       _TrivialIterator
 1511.87 +//       _InputIterator
 1511.88 +//       _OutputIterator
 1511.89 +//       _ForwardIterator
 1511.90 +//       _BidirectionalIterator
 1511.91 +//       _RandomAccessIterator
 1511.92 +//       _Mutable_TrivialIterator
 1511.93 +//       _Mutable_ForwardIterator
 1511.94 +//       _Mutable_BidirectionalIterator
 1511.95 +//       _Mutable_RandomAccessIterator
 1511.96 +
 1511.97 +#define _STLP_REQUIRES(__type_var, __concept) \
 1511.98 +do { \
 1511.99 +  void (*__x)( __type_var ) = __concept##_concept_specification< __type_var >\
1511.100 +    ::##__concept##_requirement_violation; __x = __x; } while (0)
1511.101 +
1511.102 +// Use this to check whether type X is convertible to type Y
1511.103 +#define _STLP_CONVERTIBLE(__type_x, __type_y) \
1511.104 +do { \
1511.105 +  void (*__x)( __type_x , __type_y ) = _STL_CONVERT_ERROR< __type_x , \
1511.106 +  __type_y >::__type_X_is_not_convertible_to_type_Y; \
1511.107 +  __x = __x; } while (0)
1511.108 +
1511.109 +// Use this to test whether two template arguments are the same type
1511.110 +#define _STLP_REQUIRES_SAME_TYPE(__type_x, __type_y) \
1511.111 +do { \
1511.112 +  void (*__x)( __type_x , __type_y ) = _STL_SAME_TYPE_ERROR< __type_x, \
1511.113 +    __type_y  >::__type_X_not_same_as_type_Y; \
1511.114 +  __x = __x; } while (0)
1511.115 +
1511.116 +
1511.117 +// function object checks
1511.118 +#define _STLP_GENERATOR_CHECK(__func, __ret) \
1511.119 +do { \
1511.120 +  __ret (*__x)( __func&) = \
1511.121 +     _STL_GENERATOR_ERROR< \
1511.122 +  __func, __ret>::__generator_requirement_violation; \
1511.123 +  __x = __x; } while (0)
1511.124 +
1511.125 +
1511.126 +#define _STLP_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \
1511.127 +do { \
1511.128 +  __ret (*__x)( __func&, const __arg& ) = \
1511.129 +     _STL_UNARY_FUNCTION_ERROR< \
1511.130 +  __func, __ret, __arg>::__unary_function_requirement_violation; \
1511.131 +  __x = __x; } while (0)
1511.132 +
1511.133 +
1511.134 +#define _STLP_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
1511.135 +do { \
1511.136 +  __ret (*__x)( __func&, const __first&, const __second& ) = \
1511.137 +     _STL_BINARY_FUNCTION_ERROR< \
1511.138 +  __func, __ret, __first, __second>::__binary_function_requirement_violation; \
1511.139 +  __x = __x; } while (0)
1511.140 +
1511.141 +
1511.142 +#define _STLP_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
1511.143 +    do { \
1511.144 +  __ret (*__x)( __first&, __second& ) = _STL_BINARY##__opname##_ERROR< \
1511.145 +    __ret, __first, __second>::__binary_operator_requirement_violation; \
1511.146 +  __ret (*__y)( const __first&, const __second& ) = \
1511.147 +    _STL_BINARY##__opname##_ERROR< __ret, __first, __second>:: \
1511.148 +      __const_binary_operator_requirement_violation; \
1511.149 +  __y = __y; __x = __x; } while (0)
1511.150 +
1511.151 +
1511.152 +#ifdef _STLP_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE
1511.153 +
1511.154 +#define _STLP_CLASS_REQUIRES(__type_var, __concept)
1511.155 +#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y)
1511.156 +#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret)
1511.157 +#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg)
1511.158 +#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second)
1511.159 +#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second)
1511.160 +
1511.161 +#else
1511.162 +
1511.163 +// Use this macro inside of template classes, where you would
1511.164 +// like to place requirements on the template arguments to the class
1511.165 +// Warning: do not pass pointers and such (e.g. T*) in as the __type_var,
1511.166 +// since the type_var is used to construct identifiers. Instead typedef
1511.167 +// the pointer type, then use the typedef name for the __type_var.
1511.168 +#define _STLP_CLASS_REQUIRES(__type_var, __concept) \
1511.169 +  typedef void (* __func##__type_var##__concept)( __type_var ); \
1511.170 +  template <__func##__type_var##__concept _Tp1> \
1511.171 +  struct __dummy_struct_##__type_var##__concept { }; \
1511.172 +  static __dummy_struct_##__type_var##__concept< \
1511.173 +    __concept##_concept_specification< \
1511.174 +      __type_var>::__concept##_requirement_violation>  \
1511.175 +  __dummy_ptr_##__type_var##__concept
1511.176 +
1511.177 +
1511.178 +#define _STLP_CLASS_REQUIRES_SAME_TYPE(__type_x, __type_y) \
1511.179 +  typedef void (* __func_##__type_x##__type_y##same_type)( __type_x, \
1511.180 +                                                            __type_y ); \
1511.181 +  template < __func_##__type_x##__type_y##same_type _Tp1> \
1511.182 +  struct __dummy_struct_##__type_x##__type_y##_same_type { }; \
1511.183 +  static __dummy_struct_##__type_x##__type_y##_same_type< \
1511.184 +    _STL_SAME_TYPE_ERROR<__type_x, __type_y>::__type_X_not_same_as_type_Y>  \
1511.185 +  __dummy_ptr_##__type_x##__type_y##_same_type
1511.186 +
1511.187 +
1511.188 +#define _STLP_CLASS_GENERATOR_CHECK(__func, __ret) \
1511.189 +  typedef __ret (* __f_##__func##__ret##_generator)( __func& ); \
1511.190 +  template <__f_##__func##__ret##_generator _Tp1> \
1511.191 +  struct __dummy_struct_##__func##__ret##_generator { }; \
1511.192 +  static __dummy_struct_##__func##__ret##_generator< \
1511.193 +    _STL_GENERATOR_ERROR< \
1511.194 +      __func, __ret>::__generator_requirement_violation>  \
1511.195 +  __dummy_ptr_##__func##__ret##_generator
1511.196 +
1511.197 +
1511.198 +#define _STLP_CLASS_UNARY_FUNCTION_CHECK(__func, __ret, __arg) \
1511.199 +  typedef __ret (* __f_##__func##__ret##__arg##_unary_check)( __func&, \
1511.200 +                                                         const __arg& ); \
1511.201 +  template <__f_##__func##__ret##__arg##_unary_check _Tp1> \
1511.202 +  struct __dummy_struct_##__func##__ret##__arg##_unary_check { }; \
1511.203 +  static __dummy_struct_##__func##__ret##__arg##_unary_check< \
1511.204 +    _STL_UNARY_FUNCTION_ERROR< \
1511.205 +      __func, __ret, __arg>::__unary_function_requirement_violation>  \
1511.206 +  __dummy_ptr_##__func##__ret##__arg##_unary_check
1511.207 +
1511.208 +
1511.209 +#define _STLP_CLASS_BINARY_FUNCTION_CHECK(__func, __ret, __first, __second) \
1511.210 +  typedef __ret (* __f_##__func##__ret##__first##__second##_binary_check)( __func&, const __first&,\
1511.211 +                                                    const __second& ); \
1511.212 +  template <__f_##__func##__ret##__first##__second##_binary_check _Tp1> \
1511.213 +  struct __dummy_struct_##__func##__ret##__first##__second##_binary_check { }; \
1511.214 +  static __dummy_struct_##__func##__ret##__first##__second##_binary_check< \
1511.215 +    _STL_BINARY_FUNCTION_ERROR<__func, __ret, __first, __second>:: \
1511.216 +  __binary_function_requirement_violation>  \
1511.217 +  __dummy_ptr_##__func##__ret##__first##__second##_binary_check
1511.218 +
1511.219 +
1511.220 +#define _STLP_CLASS_REQUIRES_BINARY_OP(__opname, __ret, __first, __second) \
1511.221 +  typedef __ret (* __f_##__func##__ret##__first##__second##_binary_op)(const __first&, \
1511.222 +                                                    const __second& ); \
1511.223 +  template <__f_##__func##__ret##__first##__second##_binary_op _Tp1> \
1511.224 +  struct __dummy_struct_##__func##__ret##__first##__second##_binary_op { }; \
1511.225 +  static __dummy_struct_##__func##__ret##__first##__second##_binary_op< \
1511.226 +    _STL_BINARY##__opname##_ERROR<__ret, __first, __second>:: \
1511.227 +  __binary_operator_requirement_violation>  \
1511.228 +  __dummy_ptr_##__func##__ret##__first##__second##_binary_op
1511.229 +
1511.230 +#endif
1511.231 +
1511.232 +/* helper class for finding non-const version of a type. Need to have
1511.233 +   something to assign to etc. when testing constant iterators. */
1511.234 +
1511.235 +template <class _Tp>
1511.236 +struct _Mutable_trait {
1511.237 +  typedef _Tp _Type;
1511.238 +};
1511.239 +template <class _Tp>
1511.240 +struct _Mutable_trait<const _Tp> {
1511.241 +  typedef _Tp _Type;
1511.242 +};
1511.243 +
1511.244 +
1511.245 +/* helper function for avoiding compiler warnings about unused variables */
1511.246 +template <class _Type>
1511.247 +void __sink_unused_warning(_Type) { }
1511.248 +
1511.249 +template <class _TypeX, class _TypeY>
1511.250 +struct _STL_CONVERT_ERROR {
1511.251 +  static void
1511.252 +  __type_X_is_not_convertible_to_type_Y(_TypeX __x, _TypeY) {
1511.253 +    _TypeY __y = __x;
1511.254 +    __sink_unused_warning(__y);
1511.255 +  }
1511.256 +};
1511.257 +
1511.258 +
1511.259 +template <class _Type> struct __check_equal { };
1511.260 +
1511.261 +template <class _TypeX, class _TypeY>
1511.262 +struct _STL_SAME_TYPE_ERROR {
1511.263 +  static void
1511.264 +  __type_X_not_same_as_type_Y(_TypeX , _TypeY ) { 
1511.265 +    __check_equal<_TypeX> t1 = __check_equal<_TypeY>();
1511.266 +  }
1511.267 +};
1511.268 +
1511.269 +
1511.270 +// Some Functon Object Checks
1511.271 +
1511.272 +template <class _Func, class _Ret>
1511.273 +struct _STL_GENERATOR_ERROR {
1511.274 +  static _Ret __generator_requirement_violation(_Func& __f) {
1511.275 +    return __f();
1511.276 +  }
1511.277 +};
1511.278 +
1511.279 +template <class _Func>
1511.280 +struct _STL_GENERATOR_ERROR<_Func, void> {
1511.281 +  static void __generator_requirement_violation(_Func& __f) {
1511.282 +    __f();
1511.283 +  }
1511.284 +};
1511.285 +
1511.286 +
1511.287 +template <class _Func, class _Ret, class _Arg>
1511.288 +struct _STL_UNARY_FUNCTION_ERROR {
1511.289 +  static _Ret
1511.290 +  __unary_function_requirement_violation(_Func& __f,
1511.291 +                                          const _Arg& __arg) {
1511.292 +    return __f(__arg);
1511.293 +  }
1511.294 +};
1511.295 +
1511.296 +template <class _Func, class _Arg>
1511.297 +struct _STL_UNARY_FUNCTION_ERROR<_Func, void, _Arg> {
1511.298 +  static void
1511.299 +  __unary_function_requirement_violation(_Func& __f,
1511.300 +                                          const _Arg& __arg) {
1511.301 +    __f(__arg);
1511.302 +  }
1511.303 +};
1511.304 +
1511.305 +template <class _Func, class _Ret, class _First, class _Second>
1511.306 +struct _STL_BINARY_FUNCTION_ERROR {
1511.307 +  static _Ret
1511.308 +  __binary_function_requirement_violation(_Func& __f,
1511.309 +                                          const _First& __first, 
1511.310 +                                          const _Second& __second) {
1511.311 +    return __f(__first, __second);
1511.312 +  }
1511.313 +};
1511.314 +
1511.315 +template <class _Func, class _First, class _Second>
1511.316 +struct _STL_BINARY_FUNCTION_ERROR<_Func, void, _First, _Second> {
1511.317 +  static void
1511.318 +  __binary_function_requirement_violation(_Func& __f,
1511.319 +                                          const _First& __first, 
1511.320 +                                          const _Second& __second) {
1511.321 +    __f(__first, __second);
1511.322 +  }
1511.323 +};
1511.324 +
1511.325 +
1511.326 +#define _STLP_DEFINE_BINARY_OP_CHECK(_OP, _NAME) \
1511.327 +template <class _Ret, class _First, class _Second> \
1511.328 +struct _STL_BINARY##_NAME##_ERROR { \
1511.329 +  static _Ret \
1511.330 +  __const_binary_operator_requirement_violation(const _First& __first,  \
1511.331 +                                                const _Second& __second) { \
1511.332 +    return __first _OP __second; \
1511.333 +  } \
1511.334 +  static _Ret \
1511.335 +  __binary_operator_requirement_violation(_First& __first,  \
1511.336 +                                          _Second& __second) { \
1511.337 +    return __first _OP __second; \
1511.338 +  } \
1511.339 +}
1511.340 +
1511.341 +_STLP_DEFINE_BINARY_OP_CHECK(==, _OP_EQUAL);
1511.342 +_STLP_DEFINE_BINARY_OP_CHECK(!=, _OP_NOT_EQUAL);
1511.343 +_STLP_DEFINE_BINARY_OP_CHECK(<, _OP_LESS_THAN);
1511.344 +_STLP_DEFINE_BINARY_OP_CHECK(<=, _OP_LESS_EQUAL);
1511.345 +_STLP_DEFINE_BINARY_OP_CHECK(>, _OP_GREATER_THAN);
1511.346 +_STLP_DEFINE_BINARY_OP_CHECK(>=, _OP_GREATER_EQUAL);
1511.347 +_STLP_DEFINE_BINARY_OP_CHECK(+, _OP_PLUS);
1511.348 +_STLP_DEFINE_BINARY_OP_CHECK(*, _OP_TIMES);
1511.349 +_STLP_DEFINE_BINARY_OP_CHECK(/, _OP_DIVIDE);
1511.350 +_STLP_DEFINE_BINARY_OP_CHECK(-, _OP_SUBTRACT);
1511.351 +_STLP_DEFINE_BINARY_OP_CHECK(%, _OP_MOD);
1511.352 +// ...
1511.353 +
1511.354 +// TODO, add unary operators (prefix and postfix)
1511.355 +
1511.356 +/*
1511.357 +  The presence of this class is just to trick EDG into displaying
1511.358 +  these error messages before any other errors. Without the
1511.359 +  classes, the errors in the functions get reported after
1511.360 +  other class errors deep inside the library. The name
1511.361 +  choice just makes for an eye catching error message :)
1511.362 + */
1511.363 +struct _STL_ERROR {
1511.364 +
1511.365 +  template <class _Type>
1511.366 +  static _Type
1511.367 +  __default_constructor_requirement_violation(_Type) {
1511.368 +    return _Type();
1511.369 +  }
1511.370 +  template <class _Type>
1511.371 +  static _Type
1511.372 +  __assignment_operator_requirement_violation(_Type __a) {
1511.373 +    __a = __a;
1511.374 +    return __a;
1511.375 +  }
1511.376 +  template <class _Type>
1511.377 +  static _Type
1511.378 +  __copy_constructor_requirement_violation(_Type __a) {
1511.379 +    _Type __c(__a);
1511.380 +    return __c;
1511.381 +  }
1511.382 +  template <class _Type>
1511.383 +  static _Type
1511.384 +  __const_parameter_required_for_copy_constructor(_Type /* __a */, 
1511.385 +                                                  const _Type& __b) {
1511.386 +    _Type __c(__b);
1511.387 +    return __c;
1511.388 +  }
1511.389 +  template <class _Type>
1511.390 +  static _Type
1511.391 +  __const_parameter_required_for_assignment_operator(_Type __a, 
1511.392 +                                                     const _Type& __b) {
1511.393 +    __a = __b;
1511.394 +    return __a;
1511.395 +  }
1511.396 +  template <class _Type>
1511.397 +  static _Type
1511.398 +  __less_than_comparable_requirement_violation(_Type __a, _Type __b) {
1511.399 +    if (__a < __b || __a > __b || __a <= __b || __a >= __b) return __a;
1511.400 +    return __b;
1511.401 +  }
1511.402 +  template <class _Type>
1511.403 +  static _Type
1511.404 +  __equality_comparable_requirement_violation(_Type __a, _Type __b) {
1511.405 +    if (__a == __b || __a != __b) return __a;
1511.406 +    return __b;
1511.407 +  }
1511.408 +  template <class _Iterator>
1511.409 +  static void
1511.410 +  __dereference_operator_requirement_violation(_Iterator __i) {
1511.411 +    __sink_unused_warning(*__i);
1511.412 +  }
1511.413 +  template <class _Iterator>
1511.414 +  static void
1511.415 +  __dereference_operator_and_assignment_requirement_violation(_Iterator __i) {
1511.416 +    *__i = *__i;
1511.417 +  }
1511.418 +  template <class _Iterator>
1511.419 +  static void
1511.420 +  __preincrement_operator_requirement_violation(_Iterator __i) {
1511.421 +    ++__i;
1511.422 +  }
1511.423 +  template <class _Iterator>
1511.424 +  static void
1511.425 +  __postincrement_operator_requirement_violation(_Iterator __i) {
1511.426 +    __i++;
1511.427 +  }
1511.428 +  template <class _Iterator>
1511.429 +  static void
1511.430 +  __predecrement_operator_requirement_violation(_Iterator __i) {
1511.431 +    --__i;
1511.432 +  }
1511.433 +  template <class _Iterator>
1511.434 +  static void
1511.435 +  __postdecrement_operator_requirement_violation(_Iterator __i) {
1511.436 +    __i--;
1511.437 +  }
1511.438 +  template <class _Iterator, class _Type>
1511.439 +  static void
1511.440 +  __postincrement_operator_and_assignment_requirement_violation(_Iterator __i,
1511.441 +                                                                _Type __t) {
1511.442 +    *__i++ = __t;
1511.443 +  }
1511.444 +  template <class _Iterator, class _Distance>
1511.445 +  static _Iterator
1511.446 +  __iterator_addition_assignment_requirement_violation(_Iterator __i, 
1511.447 +                                                       _Distance __n) {
1511.448 +    __i += __n;
1511.449 +    return __i;
1511.450 +  }
1511.451 +  template <class _Iterator, class _Distance>
1511.452 +  static _Iterator
1511.453 +  __iterator_addition_requirement_violation(_Iterator __i, _Distance __n) {
1511.454 +    __i = __i + __n;
1511.455 +    __i = __n + __i;
1511.456 +    return __i;
1511.457 +  }
1511.458 +  template <class _Iterator, class _Distance>
1511.459 +  static _Iterator
1511.460 +  __iterator_subtraction_assignment_requirement_violation(_Iterator __i,
1511.461 +                                                          _Distance __n) {
1511.462 +    __i -= __n;
1511.463 +    return __i;
1511.464 +  }
1511.465 +  template <class _Iterator, class _Distance>
1511.466 +  static _Iterator
1511.467 +  __iterator_subtraction_requirement_violation(_Iterator __i, _Distance __n) {
1511.468 +    __i = __i - __n;
1511.469 +    return __i;
1511.470 +  }
1511.471 +  template <class _Iterator, class _Distance>
1511.472 +  static _Distance
1511.473 +  __difference_operator_requirement_violation(_Iterator __i, _Iterator __j,
1511.474 +                                              _Distance __n) {
1511.475 +    __n = __i - __j;
1511.476 +    return __n;
1511.477 +  }
1511.478 +  template <class _Exp, class _Type, class _Distance>
1511.479 +  static _Type
1511.480 +  __element_access_operator_requirement_violation(_Exp __x, _Type*,
1511.481 +                                                  _Distance __n) {
1511.482 +    return __x[__n];
1511.483 +  }
1511.484 +  template <class _Exp, class _Type, class _Distance>
1511.485 +  static void
1511.486 +  __element_assignment_operator_requirement_violation(_Exp __x,
1511.487 +                                                      _Type* __t,
1511.488 +                                                      _Distance __n) {
1511.489 +    __x[__n] = *__t;
1511.490 +  }
1511.491 +
1511.492 +}; /* _STL_ERROR */
1511.493 +
1511.494 +/* Associated Type Requirements */
1511.495 +
1511.496 +_STLP_BEGIN_NAMESPACE
1511.497 +template <class _Iterator> struct iterator_traits;
1511.498 +_STLP_END_NAMESPACE
1511.499 +
1511.500 +template <class _Iter> 
1511.501 +struct __value_type_type_definition_requirement_violation {
1511.502 +  typedef typename __STD::iterator_traits<_Iter>::value_type value_type;
1511.503 +};
1511.504 +
1511.505 +template <class _Iter> 
1511.506 +struct __difference_type_type_definition_requirement_violation {
1511.507 +  typedef typename __STD::iterator_traits<_Iter>::difference_type
1511.508 +          difference_type;
1511.509 +};
1511.510 +
1511.511 +template <class _Iter> 
1511.512 +struct __reference_type_definition_requirement_violation {
1511.513 +  typedef typename __STD::iterator_traits<_Iter>::reference reference;
1511.514 +};
1511.515 +
1511.516 +template <class _Iter> 
1511.517 +struct __pointer_type_definition_requirement_violation {
1511.518 +  typedef typename __STD::iterator_traits<_Iter>::pointer pointer;
1511.519 +};
1511.520 +
1511.521 +template <class _Iter> 
1511.522 +struct __iterator_category_type_definition_requirement_violation {
1511.523 +  typedef typename __STD::iterator_traits<_Iter>::iterator_category 
1511.524 +          iterator_category;
1511.525 +};
1511.526 +
1511.527 +/* Assignable Requirements */
1511.528 +
1511.529 +
1511.530 +template <class _Type>
1511.531 +struct _Assignable_concept_specification {
1511.532 +  static void _Assignable_requirement_violation(_Type __a) {
1511.533 +    _STL_ERROR::__assignment_operator_requirement_violation(__a);
1511.534 +    _STL_ERROR::__copy_constructor_requirement_violation(__a);
1511.535 +    _STL_ERROR::__const_parameter_required_for_copy_constructor(__a,__a);
1511.536 +    _STL_ERROR::__const_parameter_required_for_assignment_operator(__a,__a);
1511.537 +  }
1511.538 +};
1511.539 +
1511.540 +/* DefaultConstructible Requirements */
1511.541 +
1511.542 +
1511.543 +template <class _Type>
1511.544 +struct _DefaultConstructible_concept_specification {
1511.545 +  static void _DefaultConstructible_requirement_violation(_Type __a) {
1511.546 +    _STL_ERROR::__default_constructor_requirement_violation(__a);
1511.547 +  }
1511.548 +};
1511.549 +
1511.550 +/* EqualityComparable Requirements */
1511.551 +
1511.552 +template <class _Type>
1511.553 +struct _EqualityComparable_concept_specification {
1511.554 +  static void _EqualityComparable_requirement_violation(_Type __a) {
1511.555 +    _STL_ERROR::__equality_comparable_requirement_violation(__a, __a);
1511.556 +  }
1511.557 +};
1511.558 +
1511.559 +/* LessThanComparable Requirements */
1511.560 +template <class _Type>
1511.561 +struct _LessThanComparable_concept_specification {
1511.562 +  static void _LessThanComparable_requirement_violation(_Type __a) {
1511.563 +    _STL_ERROR::__less_than_comparable_requirement_violation(__a, __a);
1511.564 +  }
1511.565 +};
1511.566 +
1511.567 +/* TrivialIterator Requirements */
1511.568 +
1511.569 +template <class _TrivialIterator>
1511.570 +struct _TrivialIterator_concept_specification {
1511.571 +static void
1511.572 +_TrivialIterator_requirement_violation(_TrivialIterator __i) {
1511.573 +  typedef typename
1511.574 +    __value_type_type_definition_requirement_violation<_TrivialIterator>::
1511.575 +    value_type __T;
1511.576 +  // Refinement of Assignable
1511.577 +  _Assignable_concept_specification<_TrivialIterator>::
1511.578 +    _Assignable_requirement_violation(__i);
1511.579 +  // Refinement of DefaultConstructible
1511.580 +  _DefaultConstructible_concept_specification<_TrivialIterator>::
1511.581 +    _DefaultConstructible_requirement_violation(__i);
1511.582 +  // Refinement of EqualityComparable
1511.583 +  _EqualityComparable_concept_specification<_TrivialIterator>::
1511.584 +    _EqualityComparable_requirement_violation(__i);
1511.585 +  // Valid Expressions
1511.586 +  _STL_ERROR::__dereference_operator_requirement_violation(__i);
1511.587 +}
1511.588 +};
1511.589 +
1511.590 +template <class _TrivialIterator>
1511.591 +struct _Mutable_TrivialIterator_concept_specification {
1511.592 +static void
1511.593 +_Mutable_TrivialIterator_requirement_violation(_TrivialIterator __i) {
1511.594 +  _TrivialIterator_concept_specification<_TrivialIterator>::
1511.595 +    _TrivialIterator_requirement_violation(__i);
1511.596 +  // Valid Expressions
1511.597 +  _STL_ERROR::__dereference_operator_and_assignment_requirement_violation(__i);
1511.598 +}
1511.599 +};
1511.600 +
1511.601 +/* InputIterator Requirements */
1511.602 +
1511.603 +template <class _InputIterator>
1511.604 +struct _InputIterator_concept_specification {
1511.605 +static void
1511.606 +_InputIterator_requirement_violation(_InputIterator __i) {
1511.607 +  // Refinement of TrivialIterator
1511.608 +  _TrivialIterator_concept_specification<_InputIterator>::
1511.609 +    _TrivialIterator_requirement_violation(__i);
1511.610 +  // Associated Types
1511.611 +  __difference_type_type_definition_requirement_violation<_InputIterator>();
1511.612 +  __reference_type_definition_requirement_violation<_InputIterator>();
1511.613 +  __pointer_type_definition_requirement_violation<_InputIterator>();
1511.614 +  __iterator_category_type_definition_requirement_violation<_InputIterator>();
1511.615 +  // Valid Expressions
1511.616 +  _STL_ERROR::__preincrement_operator_requirement_violation(__i);
1511.617 +  _STL_ERROR::__postincrement_operator_requirement_violation(__i);
1511.618 +}
1511.619 +};
1511.620 +
1511.621 +/* OutputIterator Requirements */
1511.622 +
1511.623 +template <class _OutputIterator>
1511.624 +struct _OutputIterator_concept_specification {
1511.625 +static void
1511.626 +_OutputIterator_requirement_violation(_OutputIterator __i) {
1511.627 +  // Refinement of Assignable
1511.628 +  _Assignable_concept_specification<_OutputIterator>::
1511.629 +    _Assignable_requirement_violation(__i);
1511.630 +  // Associated Types
1511.631 +  __iterator_category_type_definition_requirement_violation<_OutputIterator>();
1511.632 +  // Valid Expressions
1511.633 +  _STL_ERROR::__dereference_operator_requirement_violation(__i);
1511.634 +  _STL_ERROR::__preincrement_operator_requirement_violation(__i);
1511.635 +  _STL_ERROR::__postincrement_operator_requirement_violation(__i);
1511.636 +  _STL_ERROR::
1511.637 +    __postincrement_operator_and_assignment_requirement_violation(__i, *__i);
1511.638 +}
1511.639 +};
1511.640 +
1511.641 +/* ForwardIterator Requirements */
1511.642 +
1511.643 +template <class _ForwardIterator>
1511.644 +struct _ForwardIterator_concept_specification {
1511.645 +static void
1511.646 +_ForwardIterator_requirement_violation(_ForwardIterator __i) {
1511.647 +  // Refinement of InputIterator
1511.648 +  _InputIterator_concept_specification<_ForwardIterator>::
1511.649 +    _InputIterator_requirement_violation(__i);
1511.650 +}
1511.651 +};
1511.652 +
1511.653 +template <class _ForwardIterator>
1511.654 +struct _Mutable_ForwardIterator_concept_specification {
1511.655 +static void
1511.656 +_Mutable_ForwardIterator_requirement_violation(_ForwardIterator __i) {
1511.657 +  _ForwardIterator_concept_specification<_ForwardIterator>::
1511.658 +    _ForwardIterator_requirement_violation(__i);
1511.659 +  // Refinement of OutputIterator
1511.660 +  _OutputIterator_concept_specification<_ForwardIterator>::
1511.661 +    _OutputIterator_requirement_violation(__i);
1511.662 +}
1511.663 +};
1511.664 +
1511.665 +/* BidirectionalIterator Requirements */
1511.666 +
1511.667 +template <class _BidirectionalIterator>
1511.668 +struct _BidirectionalIterator_concept_specification {
1511.669 +static void
1511.670 +_BidirectionalIterator_requirement_violation(_BidirectionalIterator __i) {
1511.671 +  // Refinement of ForwardIterator
1511.672 +  _ForwardIterator_concept_specification<_BidirectionalIterator>::
1511.673 +    _ForwardIterator_requirement_violation(__i);
1511.674 +  // Valid Expressions
1511.675 +  _STL_ERROR::__predecrement_operator_requirement_violation(__i);
1511.676 +  _STL_ERROR::__postdecrement_operator_requirement_violation(__i);
1511.677 +}
1511.678 +};
1511.679 +
1511.680 +template <class _BidirectionalIterator>
1511.681 +struct _Mutable_BidirectionalIterator_concept_specification {
1511.682 +static void
1511.683 +_Mutable_BidirectionalIterator_requirement_violation(
1511.684 +       _BidirectionalIterator __i)
1511.685 +{
1511.686 +  _BidirectionalIterator_concept_specification<_BidirectionalIterator>::
1511.687 +    _BidirectionalIterator_requirement_violation(__i);
1511.688 +  // Refinement of mutable_ForwardIterator
1511.689 +  _Mutable_ForwardIterator_concept_specification<_BidirectionalIterator>::
1511.690 +    _Mutable_ForwardIterator_requirement_violation(__i);
1511.691 +  typedef typename
1511.692 +    __value_type_type_definition_requirement_violation<
1511.693 +    _BidirectionalIterator>::value_type __T;
1511.694 +  typename _Mutable_trait<__T>::_Type* __tmp_ptr = 0;
1511.695 +  // Valid Expressions
1511.696 +  _STL_ERROR::
1511.697 +    __postincrement_operator_and_assignment_requirement_violation(__i,
1511.698 +                                                                  *__tmp_ptr);
1511.699 +}
1511.700 +};
1511.701 +
1511.702 +/* RandomAccessIterator Requirements */
1511.703 +
1511.704 +template <class _RandAccIter>
1511.705 +struct _RandomAccessIterator_concept_specification {
1511.706 +static void
1511.707 +_RandomAccessIterator_requirement_violation(_RandAccIter __i) {
1511.708 +  // Refinement of BidirectionalIterator
1511.709 +  _BidirectionalIterator_concept_specification<_RandAccIter>::
1511.710 +    _BidirectionalIterator_requirement_violation(__i);
1511.711 +  // Refinement of LessThanComparable
1511.712 +  _LessThanComparable_concept_specification<_RandAccIter>::
1511.713 +    _LessThanComparable_requirement_violation(__i);
1511.714 +  typedef typename 
1511.715 +        __value_type_type_definition_requirement_violation<_RandAccIter>
1511.716 +        ::value_type
1511.717 +    value_type;
1511.718 +  typedef typename
1511.719 +        __difference_type_type_definition_requirement_violation<_RandAccIter>
1511.720 +        ::difference_type 
1511.721 +    _Dist;
1511.722 +  typedef typename _Mutable_trait<_Dist>::_Type _MutDist;
1511.723 +
1511.724 +  // Valid Expressions
1511.725 +  _STL_ERROR::__iterator_addition_assignment_requirement_violation(__i,
1511.726 +                                                                   _MutDist());
1511.727 +  _STL_ERROR::__iterator_addition_requirement_violation(__i,
1511.728 +                                                        _MutDist());
1511.729 +  _STL_ERROR::
1511.730 +    __iterator_subtraction_assignment_requirement_violation(__i,
1511.731 +                                                            _MutDist());
1511.732 +  _STL_ERROR::__iterator_subtraction_requirement_violation(__i,
1511.733 +                                                           _MutDist());
1511.734 +  _STL_ERROR::__difference_operator_requirement_violation(__i, __i,
1511.735 +                                                          _MutDist());
1511.736 +  typename _Mutable_trait<value_type>::_Type* __dummy_ptr = 0;
1511.737 +  _STL_ERROR::__element_access_operator_requirement_violation(__i,
1511.738 +                                                              __dummy_ptr,
1511.739 +                                                              _MutDist());
1511.740 +}
1511.741 +};
1511.742 +
1511.743 +template <class _RandAccIter>
1511.744 +struct _Mutable_RandomAccessIterator_concept_specification {
1511.745 +static void
1511.746 +_Mutable_RandomAccessIterator_requirement_violation(_RandAccIter __i)
1511.747 +{
1511.748 +  _RandomAccessIterator_concept_specification<_RandAccIter>::
1511.749 +    _RandomAccessIterator_requirement_violation(__i);
1511.750 +  // Refinement of mutable_BidirectionalIterator
1511.751 +  _Mutable_BidirectionalIterator_concept_specification<_RandAccIter>::
1511.752 +    _Mutable_BidirectionalIterator_requirement_violation(__i);
1511.753 +  typedef typename
1511.754 +        __value_type_type_definition_requirement_violation<_RandAccIter>
1511.755 +        ::value_type
1511.756 +    value_type;
1511.757 +  typedef typename
1511.758 +        __difference_type_type_definition_requirement_violation<_RandAccIter>
1511.759 +        ::difference_type
1511.760 +    _Dist;
1511.761 +
1511.762 +  typename _Mutable_trait<value_type>::_Type* __tmp_ptr = 0;
1511.763 +  // Valid Expressions
1511.764 +  _STL_ERROR::__element_assignment_operator_requirement_violation(__i,
1511.765 +                  __tmp_ptr, _Dist());
1511.766 +}
1511.767 +};
1511.768 +
1511.769 +#define _STLP_TYPEDEF_REQUIREMENT(__REQUIREMENT) \
1511.770 +template <class Type> \
1511.771 +struct __##__REQUIREMENT##__typedef_requirement_violation { \
1511.772 +  typedef typename Type::__REQUIREMENT __REQUIREMENT; \
1511.773 +};
1511.774 +
1511.775 +_STLP_TYPEDEF_REQUIREMENT(value_type);
1511.776 +_STLP_TYPEDEF_REQUIREMENT(difference_type);
1511.777 +_STLP_TYPEDEF_REQUIREMENT(size_type);
1511.778 +_STLP_TYPEDEF_REQUIREMENT(reference);
1511.779 +_STLP_TYPEDEF_REQUIREMENT(const_reference);
1511.780 +_STLP_TYPEDEF_REQUIREMENT(pointer);
1511.781 +_STLP_TYPEDEF_REQUIREMENT(const_pointer);
1511.782 +
1511.783 +
1511.784 +template <class _Alloc>
1511.785 +struct _Allocator_concept_specification {
1511.786 +static void
1511.787 +_Allocator_requirement_violation(_Alloc __a) {
1511.788 +  // Refinement of DefaultConstructible
1511.789 +  _DefaultConstructible_concept_specification<_Alloc>::
1511.790 +    _DefaultConstructible_requirement_violation(__a);
1511.791 +  // Refinement of EqualityComparable
1511.792 +  _EqualityComparable_concept_specification<_Alloc>::
1511.793 +    _EqualityComparable_requirement_violation(__a);
1511.794 +  // Associated Types
1511.795 +  __value_type__typedef_requirement_violation<_Alloc>();
1511.796 +  __difference_type__typedef_requirement_violation<_Alloc>();
1511.797 +  __size_type__typedef_requirement_violation<_Alloc>();
1511.798 +  __reference__typedef_requirement_violation<_Alloc>();
1511.799 +  __const_reference__typedef_requirement_violation<_Alloc>();
1511.800 +  __pointer__typedef_requirement_violation<_Alloc>();
1511.801 +  __const_pointer__typedef_requirement_violation<_Alloc>();
1511.802 +  typedef typename _Alloc::value_type _Type;
1511.803 +  _STLP_REQUIRES_SAME_TYPE(typename _Alloc::rebind<_Type>::other, _Alloc);
1511.804 +}
1511.805 +};
1511.806 +
1511.807 +#endif /* _STLP_USE_CONCEPT_CHECKS */
1511.808 +
1511.809 +#endif /* __CONCEPT_CHECKS_H */
1511.810 +
1511.811 +// Local Variables:
1511.812 +// mode:C++
1511.813 +// End:
  1512.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1512.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/_mwerks.h	Wed Mar 31 12:27:01 2010 +0100
  1512.3 @@ -0,0 +1,161 @@
  1512.4 +// STLport configuration file
  1512.5 +// It is internal STLport header - DO NOT include it directly
  1512.6 +
  1512.7 +#define _STLP_COMPILER "Metrowerk Codewarrior"
  1512.8 +
  1512.9 +// Bring in definition of __MSL__ and related items
 1512.10 +#include <mslGlobals.h>
 1512.11 +#include <ansi_parms.h>
 1512.12 +
 1512.13 +//
 1512.14 +//  Compiler features
 1512.15 +//
 1512.16 +
 1512.17 +
 1512.18 +// *** CodeWarrior Compiler Common Features ***
 1512.19 +#  if __option(longlong)
 1512.20 +#   define _STLP_LONG_LONG  long long
 1512.21 +#  endif
 1512.22 +
 1512.23 +#  define _STLP_USE_UNIX_EMULATION_IO  1
 1512.24 +
 1512.25 +#  define _STLP_USE_AUTO_PTR_CONVERSIONS  1
 1512.26 +
 1512.27 +# ifdef __INTEL__
 1512.28 +#  define _STLP_LITTLE_ENDIAN
 1512.29 +# else
 1512.30 +#  define _STLP_BIG_ENDIAN
 1512.31 +# endif
 1512.32 +
 1512.33 +#if defined(_MSL_NO_LOCALE)
 1512.34 +#define _STLP_NO_IMPORT_LOCALE
 1512.35 +#endif
 1512.36 +#if !__option( wchar_type )
 1512.37 +# define _STLP_WCHAR_T_IS_USHORT
 1512.38 +#endif
 1512.39 +
 1512.40 +#  if __MWERKS__ < 0x3000
 1512.41 +// *** CodeWarrior Compiler Common Bugs ***
 1512.42 +#   define __MSL_FIX_ITERATORS__(myType)    // Some MSL headers rely on this
 1512.43 +#   define _STLP_NO_FRIEND_TEMPLATES 1  // Bug mysteriously reintroduced in this version.
 1512.44 +#   define _STLP_THROW_RETURN_BUG  1
 1512.45 +#  endif
 1512.46 +
 1512.47 +//  *** Version-specific settings ***
 1512.48 +
 1512.49 +#  if __MWERKS__ >= 0x2405
 1512.50 +#   define _STLP_HAS_NATIVE_FLOAT_ABS
 1512.51 +#  endif
 1512.52 +
 1512.53 +#  if __MWERKS__ < 0x2405
 1512.54 +#   define _STLP_STATIC_CONST_INIT_BUG
 1512.55 +#  endif
 1512.56 +
 1512.57 +#  if __MWERKS__ <= 0x2303
 1512.58 +#   define _STLP_NO_TEMPLATE_CONVERSIONS  1
 1512.59 +#   define _STLP_NO_MEMBER_TEMPLATE_KEYWORD  1
 1512.60 +#  endif
 1512.61 +
 1512.62 +#  if __MWERKS__ < 0x2301
 1512.63 +#   define _STLP_MEMBER_SPECIALIZATION_BUG  1
 1512.64 +#  endif
 1512.65 +
 1512.66 +#  if __MWERKS__ < 0x2300    // CW Pro5 features
 1512.67 +#   define _STLP_INLINE_MEMBER_TEMPLATES 1
 1512.68 +#   define _STLP_RELOPS_IN_STD_BUG   1
 1512.69 +#   define _STLP_DEF_CONST_PLCT_NEW_BUG 1
 1512.70 +#   define _STLP_DEF_CONST_DEF_PARAM_BUG 1
 1512.71 +#   define _STLP_NO_TYPENAME_ON_RETURN_TYPE
 1512.72 +#  endif
 1512.73 +
 1512.74 +#  if __MWERKS__ < 0x2200    // CW Pro4 features
 1512.75 +#   define _STLP_BROKEN_USING_DIRECTIVE  1
 1512.76 +#   define _STLP_NO_MEMBER_TEMPLATES 1
 1512.77 +#   define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
 1512.78 +#   define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
 1512.79 +#   define _STLP_NO_FRIEND_TEMPLATES 1
 1512.80 +#   define _STLP_NO_QUALIFIED_FRIENDS 1
 1512.81 +#   define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
 1512.82 +#  endif
 1512.83 +
 1512.84 +#  if __MWERKS__ < 0x2100      // CW Pro3 features
 1512.85 +#   define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
 1512.86 +#   define _STLP_HAS_NO_NAMESPACES 1
 1512.87 +#   define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
 1512.88 +
 1512.89 +#   define _STLP_NEED_TYPENAME        1
 1512.90 +#   define _STLP_NO_ARROW_OPERATOR 1
 1512.91 +#   define _STLP_TEMPLATE_PARAM_SUBTYPE_BUG  1
 1512.92 +#   define _STLP_FORCED_INLINE_INSTANTIATION_BUG  1
 1512.93 +#   define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG  1
 1512.94 +#   define _STLP_INLINE_NAME_RESOLUTION_BUG  1
 1512.95 +// *** Metrowerks Standard Library Bug ***
 1512.96 +#   define _STLP_MSVC50_COMPATIBILITY 1
 1512.97 +#  endif
 1512.98 +
 1512.99 +#  if __MWERKS__ < 0x2000      // v. 2.0 features
1512.100 +#   define _STLP_NO_WCHAR_T 1
1512.101 +#   define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
1512.102 +#   define _STLP_NON_TYPE_TMPL_PARAM_BUG  1  // dwa 8/21/97 - this bug fixed for CWPro2
1512.103 +#  endif
1512.104 +
1512.105 +#  if __MWERKS__ < 0x1900                 // dwa 8/19/97 - 1.9 Compiler feature defines
1512.106 +#   define _STLP_LIMITED_DEFAULT_TEMPLATES 1
1512.107 +#   define _STLP_BASE_TYPEDEF_BUG        1
1512.108 +#   define _STLP_BASE_MATCH_BUG   1
1512.109 +#   define _STLP_NONTEMPL_BASE_MATCH_BUG 1
1512.110 +#   define _STLP_DEFAULT_TYPE_PARAM  1      // More limited template parameters
1512.111 +
1512.112 +#   if __MWERKS__ < 0x1800
1512.113 +    __GIVE_UP_WITH_STL(CW_18)
1512.114 +#   endif
1512.115 +
1512.116 +#  endif
1512.117 +
1512.118 +
1512.119 +// fixes to native inclusion wrappers.
1512.120 +# if __MWERKS__ >= 0x2300  // CWPro5 changes paths - dwa 2/28/99
1512.121 +#  define _STLP_NATIVE_INCLUDE_PATH  ../include
1512.122 +#  define _STLP_NATIVE_C_INCLUDE_PATH  ../include
1512.123 +#  define _STLP_NATIVE_HEADER(header)     <../include/##header>
1512.124 +#  define _STLP_NATIVE_CPP_C_HEADER(header)     <../include/##header>
1512.125 +#  define _STLP_NATIVE_C_HEADER(header)     <../include/##header>
1512.126 +#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/##header>
1512.127 +# else
1512.128 +
1512.129 +#  define _STLP_NATIVE_INCLUDE_PATH  Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include
1512.130 +#  define _STLP_NATIVE_C_INCLUDE_PATH  Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes
1512.131 +#  define _STLP_NATIVE_HEADER(header)     <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include:##header>
1512.132 +#  define _STLP_NATIVE_CPP_C_HEADER(header)     <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include:##header>
1512.133 +#  define _STLP_NATIVE_C_HEADER(header)     <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes:##header>
1512.134 +#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes:##header>
1512.135 +
1512.136 +# endif
1512.137 +
1512.138 +//Following block come from boost intrinsics.hpp file:
1512.139 +#if defined (__MSL_CPP__) && (__MSL_CPP__ >= 0x8000)
1512.140 +    // Metrowerks compiler is acquiring intrinsic type traits support
1512.141 +    // post version 8.  We hook into the published interface to pick up
1512.142 +    // user defined specializations as well as compiler intrinsics as
1512.143 +    // and when they become available:
1512.144 +#   include <msl_utility>
1512.145 +#   define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) Metrowerks::has_trivial_default_ctor<T>::value
1512.146 +#   define _STLP_HAS_TRIVIAL_COPY(T) Metrowerks::has_trivial_copy_ctor<T>::value
1512.147 +#   define _STLP_HAS_TRIVIAL_ASSIGN(T) Metrowerks::has_trivial_assignment<T>::value
1512.148 +#   define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) Metrowerks::has_trivial_dtor<T>::value
1512.149 +#   define _STLP_IS_POD(T) Metrowerks::is_POD<T>::value
1512.150 +#   define _STLP_HAS_TYPE_TRAITS_INTRINSICS
1512.151 +#endif
1512.152 +
1512.153 +// fbp
1512.154 +# if !defined( __MSL_CPP__ ) || __MSL_CPP__ <= 0x4105
1512.155 +#   define _STLP_NO_NATIVE_WIDE_STREAMS 1
1512.156 +#  endif
1512.157 +
1512.158 +# if defined(__MACH__)
1512.159 +#  define _STLP_MAC
1512.160 +#  define O_BINARY 0
1512.161 +# elif defined(macintosh)
1512.162 +#  define _NOTHREADS
1512.163 +# endif
1512.164 +# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1
  1513.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1513.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/_native_headers.h	Wed Mar 31 12:27:01 2010 +0100
  1513.3 @@ -0,0 +1,50 @@
  1513.4 + /*
  1513.5 +  *
  1513.6 +  * Copyright (c) 2006
  1513.7 +  * Francois Dumont
  1513.8 +  *
  1513.9 +  * This material is provided "as is", with absolutely no warranty expressed
 1513.10 +  * or implied. Any use is at your own risk.
 1513.11 +  *
 1513.12 +  * Permission to use or copy this software for any purpose is hereby granted
 1513.13 +  * without fee, provided the above notices are retained on all copies.
 1513.14 +  * Permission to modify the code and to distribute modified code is granted,
 1513.15 +  * provided the above notices are retained, and a notice that the code was
 1513.16 +  * modified is included with the above copyright notice.
 1513.17 +  *
 1513.18 +  */
 1513.19 +
 1513.20 +#if !defined (_STLP_MAKE_HEADER)
 1513.21 +#  define _STLP_MAKE_HEADER(path, header) <path/header>
 1513.22 +#endif
 1513.23 +
 1513.24 +#if !defined (_STLP_NATIVE_HEADER)
 1513.25 +#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
 1513.26 +#    define _STLP_NATIVE_INCLUDE_PATH ../include
 1513.27 +#  endif
 1513.28 +#  define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header)
 1513.29 +#endif
 1513.30 +
 1513.31 +/* For some compilers, C headers like <stdio.h> are located in separate directory */
 1513.32 +#if !defined (_STLP_NATIVE_C_HEADER)
 1513.33 +#  if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
 1513.34 +#    define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1513.35 +#  endif
 1513.36 +#  define _STLP_NATIVE_C_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_C_INCLUDE_PATH,header)
 1513.37 +#endif
 1513.38 +
 1513.39 +/* For some compilers, C-library headers like <cstdio> are located in separate directory */
 1513.40 +#if !defined (_STLP_NATIVE_CPP_C_HEADER)
 1513.41 +#  if !defined (_STLP_NATIVE_CPP_C_INCLUDE_PATH)
 1513.42 +#    define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1513.43 +#  endif
 1513.44 +#  define _STLP_NATIVE_CPP_C_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_C_INCLUDE_PATH,header)
 1513.45 +#endif
 1513.46 +
 1513.47 +/* Some compilers locate basic C++ runtime support headers (<new>, <typeinfo>, <exception>) in separate directory */
 1513.48 +#if !defined ( _STLP_NATIVE_CPP_RUNTIME_HEADER )
 1513.49 +#  if !defined (_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH)
 1513.50 +#    define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1513.51 +#  endif
 1513.52 +#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH,header)
 1513.53 +#endif
  1514.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1514.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/_system.h	Wed Mar 31 12:27:01 2010 +0100
  1514.3 @@ -0,0 +1,179 @@
  1514.4 +/*
  1514.5 + * Copyright (c) 1997
  1514.6 + * Moscow Center for SPARC Technology
  1514.7 + *
  1514.8 + * Copyright (c) 1999
  1514.9 + * Boris Fomitchev
 1514.10 + *
 1514.11 + * This material is provided "as is", with absolutely no warranty expressed
 1514.12 + * or implied. Any use is at your own risk.
 1514.13 + *
 1514.14 + * Permission to use or copy this software for any purpose is hereby granted
 1514.15 + * without fee, provided the above notices are retained on all copies.
 1514.16 + * Permission to modify the code and to distribute modified code is granted,
 1514.17 + * provided the above notices are retained, and a notice that the code was
 1514.18 + * modified is included with the above copyright notice.
 1514.19 + *
 1514.20 + */
 1514.21 +
 1514.22 +/*
 1514.23 + * Purpose of this file :
 1514.24 + *
 1514.25 + * To hold COMPILER-SPECIFIC portion of STLport settings.
 1514.26 + * In general, user should not edit this file unless
 1514.27 + * using the compiler not recognized below.
 1514.28 + *
 1514.29 + * If your compiler is not being recognized yet,
 1514.30 + * please look for definitions of macros in stl_mycomp.h,
 1514.31 + * copy stl_mycomp.h to stl_YOUR_COMPILER_NAME,
 1514.32 + * adjust flags for your compiler, and add  <include config/stl_YOUR_COMPILER_NAME>
 1514.33 + * to the secton controlled by unique macro defined internaly by your compiler.
 1514.34 + *
 1514.35 + * To change user-definable settings, please edit <user_config.h>
 1514.36 + *
 1514.37 + */
 1514.38 +
 1514.39 +#ifndef __stl_config__system_h
 1514.40 +#define __stl_config__system_h
 1514.41 +
 1514.42 +#if defined (__sun)
 1514.43 +#  include <stl/config/_solaris.h>
 1514.44 +#  if defined (__GNUC__)
 1514.45 +#    include <stl/config/_gcc.h>
 1514.46 +#  elif defined (__SUNPRO_CC)
 1514.47 +#    include <stl/config/_sunprocc.h>
 1514.48 +/*
 1514.49 +#  ifdef __KCC
 1514.50 +#    include <stl/config/_kai.h>
 1514.51 +#  endif
 1514.52 +*/
 1514.53 +#  elif defined (__APOGEE__)  /* Apogee 4.x */
 1514.54 +#    include <stl/config/_apcc.h>
 1514.55 +#  elif defined (__FCC_VERSION) /* Fujitsu Compiler, v4.0 assumed */
 1514.56 +#    include <stl/config/_fujitsu.h>
 1514.57 +#  endif
 1514.58 +#elif defined (__hpux)
 1514.59 +#  include <stl/config/_hpux.h>
 1514.60 +#  if defined (__GNUC__)
 1514.61 +#    include <stl/config/_gcc.h>
 1514.62 +#  elif defined (__HP_aCC)
 1514.63 +#    include <stl/config/_hpacc.h>
 1514.64 +#  endif
 1514.65 +#elif defined (linux) || defined (__linux__)
 1514.66 +#  include <stl/config/_linux.h>
 1514.67 +/* Intel's icc define __GNUC__! */
 1514.68 +#  if defined (__INTEL_COMPILER)
 1514.69 +#    include <stl/config/_icc.h>
 1514.70 +#  elif defined (__GNUC__)
 1514.71 +#    include <stl/config/_gcc.h>
 1514.72 +#  endif
 1514.73 +/*
 1514.74 +#  ifdef __KCC
 1514.75 +#    include <stl/config/_kai.h>
 1514.76 +#  endif
 1514.77 +*/
 1514.78 +#elif defined (__FreeBSD__)
 1514.79 +#  include <stl/config/_freebsd.h>
 1514.80 +#  if defined (__GNUC__)
 1514.81 +#    include <stl/config/_gcc.h>
 1514.82 +#  endif
 1514.83 +#elif defined (__OpenBSD__)
 1514.84 +#  include <stl/config/_openbsd.h>
 1514.85 +#  if defined (__GNUC__)
 1514.86 +#    include <stl/config/_gcc.h>
 1514.87 +#  endif
 1514.88 +#elif defined (N_PLAT_NLM) /* Novell NetWare */
 1514.89 +#  include <stl/config/_netware.h>
 1514.90 +#  ifdef __MWERKS__ /* Metrowerks CodeWarrior */
 1514.91 +#    include <stl/config/_mwccnlm.h>
 1514.92 +#  endif
 1514.93 +#elif defined (__sgi) /* IRIX? */
 1514.94 +#  define _STLP_PLATFORM "SGI Irix"
 1514.95 +#  if defined (__GNUC__)
 1514.96 +#    include <stl/config/_gcc.h>
 1514.97 +#  else
 1514.98 +#    include <stl/config/_sgi.h>
 1514.99 +#  endif
1514.100 +#elif defined (__OS400__) /* AS/400 C++ */
1514.101 +#  define _STLP_PLATFORM "OS 400"
1514.102 +#  if defined (__GNUC__)
1514.103 +#    include <stl/config/_gcc.h>
1514.104 +#  else
1514.105 +#    include <stl/config/_as400.h>
1514.106 +#  endif
1514.107 +#elif defined (_AIX)
1514.108 +#  include <stl/config/_aix.h>
1514.109 +#  if defined (__xlC__) || defined (__IBMC__) || defined ( __IBMCPP__ )
1514.110 +     /* AIX xlC, Visual Age C++ , OS-390 C++ */
1514.111 +#    include <stl/config/_ibm.h>
1514.112 +#  endif
1514.113 +#elif defined (_CRAY) /* Cray C++ 3.4 or 3.5 */
1514.114 +#  define _STLP_PLATFORM "Cray"
1514.115 +#  include <config/_cray.h>
1514.116 +#elif defined (__DECCXX) || defined (__DECC)
1514.117 +#  define _STLP_PLATFORM "DECC"
1514.118 +#  ifdef __vms
1514.119 +#    include <stl/config/_dec_vms.h>
1514.120 +#  else
1514.121 +#    include <stl/config/_dec.h>
1514.122 +#  endif
1514.123 +#elif defined (macintosh) || defined (_MAC)
1514.124 +#  include <stl/config/_mac.h>
1514.125 +#  if defined (__MWERKS__)
1514.126 +#    include <stl/config/_mwerks.h>
1514.127 +#  elif defined (__MRC__) || (defined (__SC__) && (__SC__ >= 0x882))
1514.128 +     /* Apple MPW SCpp 8.8.2, Apple MPW MrCpp 4.1.0 */
1514.129 +#    include <stl/config/_apple.h>
1514.130 +#  endif
1514.131 +#elif defined (__APPLE__)
1514.132 +#  include <stl/config/_macosx.h>
1514.133 +#  ifdef __GNUC__
1514.134 +#    include <stl/config/_gcc.h>
1514.135 +#  endif
1514.136 +#elif defined (__CYGWIN__)
1514.137 +#  include <stl/config/_cygwin.h>
1514.138 +#  if defined (__GNUC__)
1514.139 +#    include <stl/config/_gcc.h>
1514.140 +#  endif
1514.141 +#elif defined (__MINGW32__)
1514.142 +#  define _STLP_PLATFORM "MinGW"
1514.143 +#  if defined (__GNUC__)
1514.144 +#    include <stl/config/_gcc.h>
1514.145 +#  endif
1514.146 +#  include <stl/config/_windows.h>
1514.147 +#elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__) || \
1514.148 +      defined (__WIN16) || defined (WIN16) || defined (_WIN16)
1514.149 +#  if defined ( __BORLANDC__ )  /* Borland C++ ( 4.x - 5.x ) */
1514.150 +#    include <stl/config/_bc.h>
1514.151 +#  elif defined (__WATCOM_CPLUSPLUS__) || defined (__WATCOMC__)  /* Watcom C++ */
1514.152 +#    include <stl/config/_watcom.h>
1514.153 +#  elif defined (__COMO__) || defined (__COMO_VERSION_)
1514.154 +#    include <stl/config/_como.h>
1514.155 +#  elif defined (__DMC__)   /* Digital Mars C++ */
1514.156 +#    include <stl/config/_dm.h>
1514.157 +#  elif defined (__SC__) && (__SC__ < 0x800) /* Symantec 7.5 */
1514.158 +#    include <stl/config/_symantec.h>
1514.159 +#  elif defined (__ICL) /* Intel reference compiler for Win */
1514.160 +#    include <stl/config/_intel.h>
1514.161 +#  elif defined (__MWERKS__)
1514.162 +#    include <stl/config/_mwerks.h>
1514.163 +#  elif defined (_MSC_VER) && (_MSC_VER >= 1200) && defined (UNDER_CE)
1514.164 +     /* Microsoft eMbedded Visual C++ 3.0, 4.0 (.NET) */
1514.165 +#    include <stl/config/_evc.h>
1514.166 +#  elif defined (_MSC_VER)
1514.167 +    /* Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0 */
1514.168 +#    include <stl/config/_msvc.h>
1514.169 +#  endif
1514.170 +
1514.171 +#  include <stl/config/_windows.h>
1514.172 +#else
1514.173 +#  error Unknown platform !!
1514.174 +#endif
1514.175 +
1514.176 +#if !defined (_STLP_COMPILER)
1514.177 +/* Unable to identify the compiler, issue error diagnostic.
1514.178 + * Edit <config/stl_mycomp.h> to set STLport up for your compiler. */
1514.179 +#  include <stl/config/stl_mycomp.h>
1514.180 +#endif
1514.181 +
1514.182 +#endif /* __stl_config__system_h */
  1515.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1515.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/_windows.h	Wed Mar 31 12:27:01 2010 +0100
  1515.3 @@ -0,0 +1,209 @@
  1515.4 +/*
  1515.5 + * Copyright (c) 1997-1999
  1515.6 + * Silicon Graphics Computer Systems, Inc.
  1515.7 + *
  1515.8 + * Copyright (c) 1999
  1515.9 + * Boris Fomitchev
 1515.10 + *
 1515.11 + * Copyright (c) 2003
 1515.12 + * Francois Dumont
 1515.13 + *
 1515.14 + * This material is provided "as is", with absolutely no warranty expressed
 1515.15 + * or implied. Any use is at your own risk.
 1515.16 + *
 1515.17 + * Permission to use or copy this software for any purpose is hereby granted
 1515.18 + * without fee, provided the above notices are retained on all copies.
 1515.19 + * Permission to modify the code and to distribute modified code is granted,
 1515.20 + * provided the above notices are retained, and a notice that the code was
 1515.21 + * modified is included with the above copyright notice.
 1515.22 + *
 1515.23 + */
 1515.24 +#ifndef _STLP_INTERNAL_WINDOWS_H
 1515.25 +#define _STLP_INTERNAL_WINDOWS_H
 1515.26 +
 1515.27 +#if !defined (_STLP_PLATFORM)
 1515.28 +#  define _STLP_PLATFORM "Windows"
 1515.29 +#endif
 1515.30 +
 1515.31 +#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN)
 1515.32 +#  if defined (_MIPSEB)
 1515.33 +#    define _STLP_BIG_ENDIAN 1
 1515.34 +#  endif
 1515.35 +#  if defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
 1515.36 +      defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
 1515.37 +      defined (__alpha__)
 1515.38 +#    define _STLP_LITTLE_ENDIAN 1
 1515.39 +#  endif
 1515.40 +#  if defined (__ia64__)
 1515.41 +    /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
 1515.42 +#    if defined (__BIG_ENDIAN__)
 1515.43 +#      define _STLP_BIG_ENDIAN 1
 1515.44 +#    else
 1515.45 +#      define _STLP_LITTLE_ENDIAN 1
 1515.46 +#    endif
 1515.47 +#  endif
 1515.48 +#endif /* _STLP_BIG_ENDIAN */
 1515.49 +
 1515.50 +#if !defined (_STLP_WINDOWS_H_INCLUDED)
 1515.51 +#  define _STLP_WINDOWS_H_INCLUDED
 1515.52 +#  if !(defined ( _STLP_MSVC ) || defined (__BORLANDC__) || defined (__ICL) || defined (__WATCOMC__) || \
 1515.53 +        defined (__MINGW32__) || defined (__DMC__))
 1515.54 +#    if defined (_STLP_USE_MFC)
 1515.55 +#      include <afx.h>
 1515.56 +#    else
 1515.57 +#      include <windows.h>
 1515.58 +#    endif
 1515.59 +#  else
 1515.60 +/* This section serves as a replacement for windows.h header for Visual C++ */
 1515.61 +#    if defined (__cplusplus)
 1515.62 +extern "C" {
 1515.63 +#    endif
 1515.64 +#    if (defined (_M_AMD64) || defined (_M_IA64) || (!defined (_STLP_WCE) && defined (_M_MRX000)) || defined (_M_ALPHA) || \
 1515.65 +        (defined (_M_PPC) && (_STLP_MSVC_LIB >= 1000))) && !defined (RC_INVOKED)
 1515.66 +#      define InterlockedIncrement       _InterlockedIncrement
 1515.67 +#      define InterlockedDecrement       _InterlockedDecrement
 1515.68 +#      define InterlockedExchange        _InterlockedExchange
 1515.69 +/* Here we use a different macro name than the InterlockedExchangePointer SDK function
 1515.70 + * to avoid macro definition conflict as the SDK might already define InterlockedExchangePointer
 1515.71 + * as a macro.
 1515.72 + */
 1515.73 +#      define STLPInterlockedExchangePointer _InterlockedExchangePointer
 1515.74 +#      define _STLP_STDCALL
 1515.75 +#    else
 1515.76 +#      if defined (_MAC)
 1515.77 +#        define _STLP_STDCALL _cdecl
 1515.78 +#      else
 1515.79 +#        define _STLP_STDCALL __stdcall
 1515.80 +#      endif
 1515.81 +#    endif
 1515.82 +
 1515.83 +#    if defined (_STLP_NEW_PLATFORM_SDK)
 1515.84 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *);
 1515.85 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *);
 1515.86 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long);
 1515.87 +#      if defined (STLPInterlockedExchangePointer)
 1515.88 +_STLP_IMPORT_DECLSPEC void* _STLP_STDCALL STLPInterlockedExchangePointer(void* volatile *, void*);
 1515.89 +#      endif
 1515.90 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchangeAdd(long volatile *, long);
 1515.91 +#    elif defined (_STLP_WCE)
 1515.92 +
 1515.93 +/* start of eMbedded Visual C++ specific section */
 1515.94 +#      include <windef.h> /* needed for basic windows types */
 1515.95 +
 1515.96 +       /** in SDKs generated with PB5, windef.h somehow includes headers which then
 1515.97 +       define setjmp. */
 1515.98 +#      if (_WIN32_WCE >= 0x500)
 1515.99 +#        define _STLP_NATIVE_SETJMP_H_INCLUDED
1515.100 +#      endif
1515.101 +
1515.102 +#      ifndef _WINBASE_ /* winbase.h already included? */
1515.103 +long WINAPI InterlockedIncrement(long*);
1515.104 +long WINAPI InterlockedDecrement(long*);
1515.105 +long WINAPI InterlockedExchange(long*, long);
1515.106 +#      endif
1515.107 +
1515.108 +#      ifndef __WINDOWS__ /* windows.h already included? */
1515.109 +
1515.110 +#        if defined (x86)
1515.111 +#          include <winbase.h> /* needed for inline versions of Interlocked* functions */
1515.112 +#        endif
1515.113 +
1515.114 +#        ifndef _MFC_VER
1515.115 +
1515.116 +#          define MessageBox MessageBoxW
1515.117 +int WINAPI MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
1515.118 +
1515.119 +#          define wvsprintf wvsprintfW
1515.120 +int WINAPI wvsprintfW(LPWSTR, LPCWSTR, va_list ArgList);
1515.121 +
1515.122 +void WINAPI ExitThread(DWORD dwExitCode);
1515.123 +
1515.124 +#          if !defined (COREDLL)
1515.125 +#            define _STLP_WCE_WINBASEAPI DECLSPEC_IMPORT
1515.126 +#          else
1515.127 +#            define _STLP_WCE_WINBASEAPI
1515.128 +#          endif
1515.129 +
1515.130 +_STLP_WCE_WINBASEAPI int WINAPI
1515.131 +MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr,
1515.132 +                    int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
1515.133 +
1515.134 +_STLP_WCE_WINBASEAPI UINT WINAPI GetACP();
1515.135 +
1515.136 +_STLP_WCE_WINBASEAPI BOOL WINAPI TerminateProcess(HANDLE hProcess, DWORD uExitCode);
1515.137 +
1515.138 +#          define OutputDebugString OutputDebugStringW
1515.139 +void WINAPI OutputDebugStringW(LPCWSTR);
1515.140 +
1515.141 +_STLP_WCE_WINBASEAPI void WINAPI Sleep(DWORD);
1515.142 +
1515.143 +#          undef _STLP_WCE_WINBASEAPI
1515.144 +
1515.145 +#        endif /* !_MFC_VER */
1515.146 +
1515.147 +#      endif /* !__WINDOWS__ */
1515.148 +
1515.149 +/* end of eMbedded Visual C++ specific section */
1515.150 +
1515.151 +#    else
1515.152 +/* boris : for the latest SDK, you may actually need the other version of the declaration (above)
1515.153 + * even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ...
1515.154 + */
1515.155 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*);
1515.156 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*);
1515.157 +_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long);
1515.158 +#    endif
1515.159 +
1515.160 +#    if !defined (STLPInterlockedExchangePointer)
1515.161 +/* This API function do not exist in the old platform SDK and is equivalent to
1515.162 + * InterlockedExchange on 32 bits platform:
1515.163 + */
1515.164 +#      if defined (__cplusplus)
1515.165 +/* We do not define this function if we are not in a C++ translation unit just
1515.166 + * because of the inline portability issue it would introduce. We will have to
1515.167 + * fix it the day we need this function for a C translation unit.
1515.168 + */
1515.169 +inline
1515.170 +void* _STLP_CALL STLPInterlockedExchangePointer(void* volatile* __a, void* __b) {
1515.171 +#        if defined (_STLP_MSVC)
1515.172 +/* Here MSVC produces warning if 64 bits portability issue is activated.
1515.173 + * MSVC do not see that _STLP_ATOMIC_EXCHANGE_PTR is a macro which content
1515.174 + * is based on the platform, Win32 or Win64
1515.175 + */
1515.176 +#          pragma warning (push)
1515.177 +#          pragma warning (disable : 4311) // pointer truncation from void* to long
1515.178 +#          pragma warning (disable : 4312) // conversion from long to void* of greater size
1515.179 +#        endif
1515.180 +#        if !defined (_STLP_NO_NEW_STYLE_CASTS)
1515.181 +  return reinterpret_cast<void*>(InterlockedExchange(reinterpret_cast<long*>(const_cast<void**>(__a)),
1515.182 +                                                     reinterpret_cast<long>(__b)));
1515.183 +#        else
1515.184 +  return (void*)InterlockedExchange((long*)__a, (long)__b);
1515.185 +#        endif
1515.186 +#        if defined (_STLP_MSVC)
1515.187 +#          pragma warning (pop)
1515.188 +#        endif
1515.189 +}
1515.190 +#      endif
1515.191 +#    endif
1515.192 +
1515.193 +#    if !defined (_STLP_WCE)
1515.194 +_STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long);
1515.195 +_STLP_IMPORT_DECLSPEC void _STLP_STDCALL OutputDebugStringA(const char* lpOutputString);
1515.196 +#    endif
1515.197 +
1515.198 +#    if defined (InterlockedIncrement)
1515.199 +#      pragma intrinsic(_InterlockedIncrement)
1515.200 +#      pragma intrinsic(_InterlockedDecrement)
1515.201 +#      pragma intrinsic(_InterlockedExchange)
1515.202 +#      pragma intrinsic(_InterlockedExchangePointer)
1515.203 +#    endif
1515.204 +#    if defined (__cplusplus)
1515.205 +} /* extern "C" */
1515.206 +#    endif
1515.207 +
1515.208 +#  endif /* STL_MSVC __BORLANDC__ __ICL __WATCOMC__ __MINGW32__ __DMC__*/
1515.209 +
1515.210 +#endif /* _STLP_WINDOWS_H_INCLUDED */
1515.211 +
1515.212 +#endif /* _STLP_INTERNAL_WINDOWS_H */
  1516.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1516.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/compat.h	Wed Mar 31 12:27:01 2010 +0100
  1516.3 @@ -0,0 +1,84 @@
  1516.4 +
  1516.5 +/*
  1516.6 + * Compatibility section
  1516.7 + * This section sets new-style macros based on old-style ones, for compatibility
  1516.8 + */
  1516.9 +
 1516.10 +#if defined (__STL_DEBUG) && !defined (_STLP_DEBUG)
 1516.11 +#  define _STLP_DEBUG __STL_DEBUG
 1516.12 +#endif
 1516.13 +#if defined (__STL_NO_ANACHRONISMS) && !defined (_STLP_NO_ANACHRONISMS)
 1516.14 +#  define _STLP_NO_ANACHRONISMS __STL_NO_ANACHRONISMS
 1516.15 +#endif
 1516.16 +#if defined (__STL_NO_EXTENSIONS) && !defined (_STLP_NO_EXTENSIONS)
 1516.17 +#  define _STLP_NO_EXTENSIONS __STL_NO_EXTENSIONS
 1516.18 +#endif
 1516.19 +#if defined (__STL_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS)
 1516.20 +#  define _STLP_NO_EXCEPTIONS __STL_NO_EXCEPTIONS
 1516.21 +#endif
 1516.22 +#if defined (__STL_NO_NAMESPACES) && !defined (_STLP_NO_NAMESPACES)
 1516.23 +#  define _STLP_NO_NAMESPACES __STL_NO_NAMESPACES
 1516.24 +#endif
 1516.25 +#if defined (__STL_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS)
 1516.26 +#  define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS __STL_MINIMUM_DEFAULT_TEMPLATE_PARAMS
 1516.27 +#endif
 1516.28 +#if defined (__STL_NO_OWN_NAMESPACE) && !defined (_STLP_NO_OWN_NAMESPACE)
 1516.29 +#  define _STLP_NO_OWN_NAMESPACE __STL_NO_OWN_NAMESPACE
 1516.30 +#endif
 1516.31 +
 1516.32 +#if defined (__STL_NO_RELOPS_NAMESPACE) && !defined (_STLP_NO_RELOPS_NAMESPACE)
 1516.33 +#  define _STLP_NO_RELOPS_NAMESPACE __STL_NO_RELOPS_NAMESPACE
 1516.34 +#endif
 1516.35 +
 1516.36 +#if defined (__STL_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_UNINITIALIZED)
 1516.37 +#  define _STLP_DEBUG_UNINITIALIZED __STL_DEBUG_UNINITIALIZED
 1516.38 +#endif
 1516.39 +#if defined (__STL_SHRED_BYTE) && !defined (_STLP_SHRED_BYTE)
 1516.40 +#  define _STLP_SHRED_BYTE __STL_SHRED_BYTE
 1516.41 +#endif
 1516.42 +#if defined (__STL_USE_MFC) && !defined (_STLP_USE_MFC)
 1516.43 +#  define _STLP_USE_MFC __STL_USE_MFC
 1516.44 +#endif
 1516.45 +
 1516.46 +#if defined (__STL_USE_NEWALLOC) && !defined (_STLP_USE_NEWALLOC)
 1516.47 +#  define _STLP_USE_NEWALLOC __STL_USE_NEWALLOC
 1516.48 +#endif
 1516.49 +#if defined (__STL_USE_MALLOC) && !defined (_STLP_USE_MALLOC)
 1516.50 +#  define _STLP_USE_MALLOC __STL_USE_MALLOC
 1516.51 +#endif
 1516.52 +
 1516.53 +#if defined (__STL_DEBUG_ALLOC) && !defined (_STLP_DEBUG_ALLOC)
 1516.54 +#  define _STLP_DEBUG_ALLOC __STL_DEBUG_ALLOC
 1516.55 +#endif
 1516.56 +
 1516.57 +#if defined (__STL_DEBUG_MESSAGE) && !defined (_STLP_DEBUG_MESSAGE)
 1516.58 +#  define _STLP_DEBUG_MESSAGE __STL_DEBUG_MESSAGE
 1516.59 +#endif
 1516.60 +
 1516.61 +#if defined (__STL_DEBUG_TERMINATE) && !defined (_STLP_DEBUG_TERMINATE)
 1516.62 +#  define _STLP_DEBUG_TERMINATE __STL_DEBUG_TERMINATE
 1516.63 +#endif
 1516.64 +
 1516.65 +#if defined (__STL_USE_ABBREVS) && !defined (_STLP_USE_ABBREVS)
 1516.66 +#  define _STLP_USE_ABBREVS __STL_USE_ABBREVS
 1516.67 +#endif
 1516.68 +
 1516.69 +#if defined (__STL_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_NO_MSVC50_COMPATIBILITY)
 1516.70 +#  define _STLP_NO_MSVC50_COMPATIBILITY __STL_NO_MSVC50_COMPATIBILITY
 1516.71 +#endif
 1516.72 +
 1516.73 +#if defined (__STL_USE_RAW_SGI_ALLOCATORS) && !defined (_STLP_USE_RAW_SGI_ALLOCATORS)
 1516.74 +#  define _STLP_USE_RAW_SGI_ALLOCATORS __STL_USE_RAW_SGI_ALLOCATORS
 1516.75 +#endif
 1516.76 +
 1516.77 +/* STLport do not support anymore the iostream wrapper mode so this macro should
 1516.78 + * always been define for other libraries that was using it:
 1516.79 + */
 1516.80 +#if !defined (_STLP_OWN_IOSTREAMS)
 1516.81 +#  define _STLP_OWN_IOSTREAMS
 1516.82 +#endif
 1516.83 +
 1516.84 +#if defined (_STLP_NO_OWN_IOSTREAMS)
 1516.85 +#  error STLport do not support anymore the wrapper mode. If you want to use STLport \
 1516.86 +use its iostreams implementation or no iostreams at all.
 1516.87 +#endif
  1517.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1517.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/features.h	Wed Mar 31 12:27:01 2010 +0100
  1517.3 @@ -0,0 +1,1194 @@
  1517.4 + /*
  1517.5 +  *
  1517.6 +  * Copyright (c) 1994
  1517.7 +  * Hewlett-Packard Company
  1517.8 +  *
  1517.9 +  * Copyright (c) 1996,1997
 1517.10 +  * Silicon Graphics Computer Systems, Inc.
 1517.11 +  *
 1517.12 +  * Copyright (c) 1997
 1517.13 +  * Moscow Center for SPARC Technology
 1517.14 +  *
 1517.15 +  * Copyright (c) 1999
 1517.16 +  * Boris Fomitchev
 1517.17 +  *
 1517.18 +  * This material is provided "as is", with absolutely no warranty expressed
 1517.19 +  * or implied. Any use is at your own risk.
 1517.20 +  *
 1517.21 +  * Permission to use or copy this software for any purpose is hereby granted
 1517.22 +  * without fee, provided the above notices are retained on all copies.
 1517.23 +  * Permission to modify the code and to distribute modified code is granted,
 1517.24 +  * provided the above notices are retained, and a notice that the code was
 1517.25 +  * modified is included with the above copyright notice.
 1517.26 +  *
 1517.27 +  */
 1517.28 +
 1517.29 +#ifndef _STLP_FEATURES_H
 1517.30 +#define _STLP_FEATURES_H
 1517.31 +
 1517.32 +/*
 1517.33 + * Purpose of this file:
 1517.34 + *
 1517.35 + * Defines all STLport settings.
 1517.36 + * This file is actually a wrapper : it includes compiler-specific
 1517.37 + * settings from <config/stlcomp.h>
 1517.38 + * and user-defined settings from <stl_user_config.h>.
 1517.39 + * See <config/stl_mycomp.h> and <stl_user_config.h> for the description
 1517.40 + * of those macros
 1517.41 + *
 1517.42 + */
 1517.43 +
 1517.44 +/* Definition of the STLport version informations */
 1517.45 +#include <stl/_stlport_version.h>
 1517.46 +
 1517.47 +/* Other macros defined by this file:
 1517.48 +
 1517.49 + * bool, true, and false, if _STLP_NO_BOOL is defined.
 1517.50 + * typename, as a null macro if it's not already a keyword.
 1517.51 + * explicit, as a null macro if it's not already a keyword.
 1517.52 + * namespace-related macros (_STLP_STD, _STLP_BEGIN_NAMESPACE, etc.)
 1517.53 + * exception-related macros (_STLP_TRY, _STLP_UNWIND, etc.)
 1517.54 + * _STLP_ASSERT, either as a test or as a null macro, depending on
 1517.55 +   whether or not _STLP_ASSERTIONS is defined.
 1517.56 +*/
 1517.57 +
 1517.58 +/* Definition of the 2 STLport debug levels */
 1517.59 +#define _STLP_STLPORT_DBG_LEVEL 1
 1517.60 +#define _STLP_STANDARD_DBG_LEVEL 2
 1517.61 +
 1517.62 +/* Placeholder for user to override settings.
 1517.63 + * It could be also used to mask settings from
 1517.64 + * different directories.
 1517.65 + */
 1517.66 +#include <stl/config/user_config.h>
 1517.67 +
 1517.68 +#if defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_LEVEL)
 1517.69 +#  define _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL
 1517.70 +#endif
 1517.71 +
 1517.72 +#if defined (__BUILDING_STLPORT)
 1517.73 +/* For the STLport implementation we can use everything:
 1517.74 + */
 1517.75 +#  if defined (_STLP_NO_ANACHRONISMS)
 1517.76 +#    undef _STLP_NO_ANACHRONISMS
 1517.77 +#  endif
 1517.78 +#  if defined (_STLP_NO_EXTENSIONS)
 1517.79 +#    undef _STLP_NO_EXTENSIONS
 1517.80 +#  endif
 1517.81 +/* Moreover there are things that has no sens:
 1517.82 + */
 1517.83 +#  if defined (_STLP_NO_IOSTREAMS)
 1517.84 +#    error If you do not use iostreams you do not need to build the STLport library.
 1517.85 +#  endif
 1517.86 +#endif
 1517.87 +
 1517.88 +/* ========================================================= */
 1517.89 +/* This file is used for compatibility; it accepts old-style config
 1517.90 +   switches */
 1517.91 +#include <stl/config/compat.h>
 1517.92 +
 1517.93 +/* Common configuration file for this particular installation. */
 1517.94 +#include <stl/config/host.h>
 1517.95 +
 1517.96 +/* Operational Environment specific */
 1517.97 +#include <stl/config/_system.h>
 1517.98 +
 1517.99 +/* ========================================================= */
1517.100 +
1517.101 +/* some fixes to configuration. This also includes modifications
1517.102 + * of STLport switches depending on compiler flags,
1517.103 + * or settings applicable to a group of compilers, such as
1517.104 + * to all who use EDG front-end.
1517.105 + */
1517.106 +#include <stl/config/stl_confix.h>
1517.107 +
1517.108 +#ifdef _STLP_USE_BOOST_SUPPORT
1517.109 +/* We are going to use the boost library support. To limit the problem
1517.110 + * of self referencing headers we have to specify clearly to the boost
1517.111 + * library that the Standard lib is STLport:
1517.112 + */
1517.113 +#  ifndef BOOST_STDLIB_CONFIG
1517.114 +#    define BOOST_STDLIB_CONFIG <boost/config/stdlib/stlport.hpp>
1517.115 +#  endif
1517.116 +#endif
1517.117 +
1517.118 +
1517.119 +/*
1517.120 + * Performs integrity check on user-specified parameters
1517.121 + * and site-specific settings.
1517.122 + */
1517.123 +/*
1517.124 +# include <stl/_check_config.h>
1517.125 +*/
1517.126 +
1517.127 +/* SGI terms */
1517.128 +
1517.129 +#if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES)
1517.130 +#  define _STLP_MEMBER_TEMPLATES 1
1517.131 +#endif
1517.132 +
1517.133 +#if !defined (_STLP_NO_FRIEND_TEMPLATES) && !defined (_STLP_FRIEND_TEMPLATES)
1517.134 +#  define _STLP_FRIEND_TEMPLATES 1
1517.135 +#endif
1517.136 +
1517.137 +#if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1517.138 +#  define _STLP_MEMBER_TEMPLATE_CLASSES 1
1517.139 +#endif
1517.140 +
1517.141 +#if defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
1517.142 +#  define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
1517.143 +#endif
1517.144 +
1517.145 +#if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1517.146 +#  define _STLP_CLASS_PARTIAL_SPECIALIZATION 1
1517.147 +#endif
1517.148 +
1517.149 +#if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
1517.150 +#  define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1
1517.151 +#endif
1517.152 +
1517.153 +#if !defined (_STLP_DONT_USE_SHORT_STRING_OPTIM) && !defined (_STLP_USE_SHORT_STRING_OPTIM)
1517.154 +#  define _STLP_USE_SHORT_STRING_OPTIM 1
1517.155 +#endif
1517.156 +
1517.157 +#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXTENSIONS) && \
1517.158 +   !defined (_STLP_NO_CONTAINERS_EXTENSION) && !defined (_STLP_USE_CONTAINERS_EXTENSION)
1517.159 +#  define _STLP_USE_CONTAINERS_EXTENSION
1517.160 +#endif
1517.161 +
1517.162 +#if defined (_STLP_USE_CONTAINERS_EXTENSION)
1517.163 +#  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
1517.164 +#else
1517.165 +#  define _STLP_TEMPLATE_FOR_CONT_EXT
1517.166 +#endif
1517.167 +
1517.168 +#if defined (_STLP_USE_PTR_SPECIALIZATIONS) && \
1517.169 +    (defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
1517.170 +#  error "Sorry but according the STLport settings your compiler can not support the pointer specialization feature."
1517.171 +#endif
1517.172 +
1517.173 +#if defined (_STLP_NO_IOSTREAMS) && \
1517.174 +   !defined (_STLP_USE_NEWALLOC) && !defined (_STLP_USE_MALLOC)
1517.175 +#  define _STLP_USE_NEWALLOC
1517.176 +#endif
1517.177 +
1517.178 +#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN)
1517.179 +#  if defined (_MIPSEB) || defined (__sparc) || defined (_AIX) || \
1517.180 +      defined (__hpux) || defined (macintosh) || defined (_MAC)
1517.181 +#    define _STLP_BIG_ENDIAN 1
1517.182 +#  elif defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
1517.183 +        defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
1517.184 +        defined (__alpha__)
1517.185 +#    define _STLP_LITTLE_ENDIAN 1
1517.186 +#  elif defined (__ia64__)
1517.187 +    /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
1517.188 +#    if defined (__BIG_ENDIAN__)
1517.189 +#      define _STLP_BIG_ENDIAN 1
1517.190 +#    else
1517.191 +#      define _STLP_LITTLE_ENDIAN 1
1517.192 +#    endif
1517.193 +#  else
1517.194 +#    error "can't determine endianess"
1517.195 +#  endif
1517.196 +#endif /* _STLP_BIG_ENDIAN */
1517.197 +
1517.198 +/* ==========================================================
1517.199 + * final workaround tuning based on given flags
1517.200 + * ========================================================== */
1517.201 +
1517.202 +#ifndef _STLP_UINT32_T
1517.203 +#  define _STLP_UINT32_T unsigned long
1517.204 +#endif
1517.205 +#ifndef _STLP_ABORT
1517.206 +#  define _STLP_ABORT() abort()
1517.207 +#endif
1517.208 +
1517.209 +#if !defined (_STLP_HAS_NO_NAMESPACES)
1517.210 +#  if defined _STLP_NO_NAMESPACES
1517.211 +#    undef _STLP_USE_NAMESPACES
1517.212 +#  else
1517.213 +/* assume it as the default, turn it off later if NO_NAMESPACES selected */
1517.214 +#    undef _STLP_USE_NAMESPACES
1517.215 +#    define _STLP_USE_NAMESPACES 1
1517.216 +#  endif
1517.217 +#endif
1517.218 +
1517.219 +#if defined (_STLP_NO_IOSTREAMS)
1517.220 +#  define _STLP_USE_NO_IOSTREAMS
1517.221 +#endif
1517.222 +
1517.223 +/* Operating system recognition (basic) */
1517.224 +#if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX)  || defined (__NetBSD__) || defined(__OpenBSD__) || defined (__Lynx__)
1517.225 +#  define _STLP_UNIX 1
1517.226 +#elif defined(macintosh) || defined (_MAC)
1517.227 +#  define _STLP_MAC  1
1517.228 +#elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__)
1517.229 +#  define _STLP_WIN32 1
1517.230 +#elif defined (__WIN16) || defined (WIN16) || defined (_WIN16)
1517.231 +#  define _STLP_WIN16
1517.232 +#endif /* __unix */
1517.233 +
1517.234 +#if defined (_STLP_WIN16)
1517.235 +#  define _STLP_LDOUBLE_80
1517.236 +#elif defined(_STLP_WIN32)
1517.237 +#  if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__) || defined (__CYGWIN__)
1517.238 +#    define _STLP_LDOUBLE_64
1517.239 +#  else
1517.240 +#    define _STLP_LDOUBLE_96
1517.241 +#  endif
1517.242 +#elif defined (_STLP_UNIX)
1517.243 +#  if defined (__CYGWIN__)
1517.244 +#    define _STLP_LDOUBLE_96
1517.245 +#  endif
1517.246 +#endif
1517.247 +
1517.248 +#if !defined (_STLP_LDOUBLE_64) && !defined (_STLP_LDOUBLE_80) && !defined (_STLP_LDOUBLE_96) && !defined (_STLP_LDOUBLE_128)
1517.249 +#  define _STLP_LDOUBLE_128
1517.250 +#endif
1517.251 +
1517.252 +#if !defined (_STLP_NO_LONG_DOUBLE)
1517.253 +#  define _STLP_LONGEST_FLOAT_TYPE long double
1517.254 +#else
1517.255 +#  define _STLP_LONGEST_FLOAT_TYPE double
1517.256 +#endif
1517.257 +
1517.258 +/* Native headers access macros */
1517.259 +#include <stl/config/_native_headers.h>
1517.260 +
1517.261 +/*  shared library tune-up */
1517.262 +
1517.263 +#if defined (__BUILDING_STLPORT)
1517.264 +/*  if we are rebuilding right now, place everything here */
1517.265 +#  undef  _STLP_DESIGNATED_DLL
1517.266 +#  define _STLP_DESIGNATED_DLL 1
1517.267 +#endif
1517.268 +
1517.269 +/* Use own namespace always if possible and not explicitly instructed otherwise */
1517.270 +#if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \
1517.271 +   !defined (_STLP_NO_OWN_NAMESPACE)
1517.272 +#  undef  _STLP_USE_OWN_NAMESPACE
1517.273 +#  define _STLP_USE_OWN_NAMESPACE  1
1517.274 +#else
1517.275 +#  undef _STLP_WHOLE_NATIVE_STD
1517.276 +#endif
1517.277 +
1517.278 +#if !defined (_NOTHREADS) && !defined (_STLP_THREADS_DEFINED)
1517.279 +
1517.280 +#  if defined (_PTHREADS)
1517.281 +#    define _STLP_PTHREADS
1517.282 +#    define _STLP_THREADS
1517.283 +#  endif
1517.284 +#  if defined (_UITHREADS)
1517.285 +#    define _STLP_UITHREADS
1517.286 +#    define _STLP_THREADS
1517.287 +#  endif
1517.288 +
1517.289 +#  if defined (__sgi) && !defined (__KCC) && !defined (__GNUC__)
1517.290 +#    define _STLP_SGI_THREADS
1517.291 +#  elif defined (__DECC) || defined (__DECCXX)
1517.292 +#    define _STLP_DEC_THREADS
1517.293 +#  elif defined (_STLP_WIN32) && !defined (_STLP_PTHREADS)
1517.294 +#    define _STLP_WIN32THREADS 1
1517.295 +#  elif ((defined (__sun) && !defined (__linux__)) || defined (_UITHREADS) ) && \
1517.296 +        !defined(_STLP_PTHREADS)
1517.297 +#    define _STLP_UITHREADS
1517.298 +#  elif defined (__OS2__)
1517.299 +#    define _STLP_OS2THREADS
1517.300 +#  elif defined (__BEOS__)
1517.301 +#    define _STLP_BETHREADS
1517.302 +#  elif defined (__MWERKS__) && defined (N_PLAT_NLM) /* (__dest_os == __netware_os) */
1517.303 +#    define _STLP_NWTHREADS
1517.304 +#  else
1517.305 +#    define _STLP_PTHREADS
1517.306 +#  endif /* __sgi */
1517.307 +#  define _STLP_THREADS_DEFINED
1517.308 +#endif
1517.309 +
1517.310 +#if (defined (_REENTRANT) || defined (_THREAD_SAFE) || \
1517.311 +    (defined (_POSIX_THREADS) && defined (__OpenBSD__))) && \
1517.312 +    !defined (_STLP_THREADS)
1517.313 +#  define _STLP_THREADS
1517.314 +#endif /* _REENTRANT */
1517.315 +
1517.316 +#if defined (__linux__) && defined (_STLP_PTHREADS)
1517.317 +/* #  include <features.h> */
1517.318 +
1517.319 +#  if defined (__USE_XOPEN2K) && !defined (_STLP_DONT_USE_PTHREAD_SPINLOCK)
1517.320 +#    define _STLP_USE_PTHREAD_SPINLOCK
1517.321 +#    define _STLP_STATIC_MUTEX _STLP_mutex
1517.322 +#  endif /* __USE_XOPEN2K */
1517.323 +#endif /* __linux__ && _STLP_PTHREADS */
1517.324 +
1517.325 +#if defined (__OpenBSD__) && defined (_POSIX_THREADS) && !defined (_STLP_DONT_USE_PTHREAD_SPINLOCK)
1517.326 +#  define _STLP_USE_PTHREAD_SPINLOCK
1517.327 +#  define _STLP_STATIC_MUTEX _STLP_mutex
1517.328 +#endif
1517.329 +
1517.330 +#ifndef _STLP_STATIC_MUTEX
1517.331 +#  define _STLP_STATIC_MUTEX _STLP_mutex_base
1517.332 +#endif
1517.333 +
1517.334 +#if (defined (_MFC_VER) || defined (_AFXDLL)) && !defined (_STLP_USE_MFC)
1517.335 +#  define _STLP_USE_MFC 1
1517.336 +#endif
1517.337 +
1517.338 +#if defined (_STLP_THREADS)
1517.339 +#  define _STLP_VOLATILE volatile
1517.340 +/* windows.h _MUST be included before bool definition ;( */
1517.341 +#  if defined (_STLP_WIN32THREADS) && defined (_STLP_NO_BOOL)
1517.342 +#    undef  NOMINMAX
1517.343 +#    define NOMINMAX
1517.344 +#    ifdef _STLP_USE_MFC
1517.345 +#      include <afx.h>
1517.346 +#    else
1517.347 +#      include <windows.h>
1517.348 +#    endif
1517.349 +#    define _STLP_WINDOWS_H_INCLUDED
1517.350 +#  endif
1517.351 +#else
1517.352 +#  define _STLP_VOLATILE
1517.353 +#endif
1517.354 +
1517.355 +#if !defined (_STLP_USE_NEW_C_HEADERS) && !defined (_STLP_HAS_NO_NEW_C_HEADERS)
1517.356 +#  define _STLP_USE_NEW_C_HEADERS
1517.357 +#endif
1517.358 +/* disable new-style headers if requested */
1517.359 +#if defined (_STLP_NO_NEW_C_HEADERS)
1517.360 +#  undef _STLP_USE_NEW_C_HEADERS
1517.361 +#endif
1517.362 +
1517.363 +#if !defined (_STLP_STATIC_TEMPLATE_DATA)
1517.364 +#  define _STLP_STATIC_TEMPLATE_DATA 1
1517.365 +#endif
1517.366 +
1517.367 +#if defined (_STLP_BASE_TYPEDEF_BUG)
1517.368 +#  undef  _STLP_BASE_TYPEDEF_OUTSIDE_BUG
1517.369 +#  define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
1517.370 +#endif
1517.371 +
1517.372 +#if defined (_STLP_NESTED_TYPE_PARAM_BUG) || (defined (_STLP_MSVC) && (_STLP_MSVC < 1100))
1517.373 +#  define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG
1517.374 +#endif
1517.375 +
1517.376 +/* SUNpro 4.2 inline string literal bug */
1517.377 +#ifdef _STLP_INLINE_STRING_LITERAL_BUG
1517.378 +#  define _STLP_FIX_LITERAL_BUG(__x) __x = __x;
1517.379 +#else
1517.380 +#  define _STLP_FIX_LITERAL_BUG(__x)
1517.381 +#endif
1517.382 +
1517.383 +#if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1517.384 +#  undef  _STLP_NO_DEFAULT_NON_TYPE_PARAM
1517.385 +#  define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
1517.386 +#endif
1517.387 +
1517.388 +#define _STLP_NEW new
1517.389 +#define _STLP_PLACEMENT_NEW new
1517.390 +
1517.391 +#ifdef _STLP_DEBUG
1517.392 +#  define _STLP_ASSERTIONS 1
1517.393 +#endif
1517.394 +
1517.395 +#if !defined (_STLP_STATIC_ASSERT)
1517.396 +/* Some compiler support 0 size array so we use negative size array to generate
1517.397 + * a compilation time error.
1517.398 + */
1517.399 +#  define _STLP_STATIC_ASSERT(expr) typedef char __static_assert[expr ? 1 : -1];
1517.400 +#endif
1517.401 +
1517.402 +/* apple mpw exception handling bug */
1517.403 +#ifndef _STLP_MPWFIX_TRY
1517.404 +#  define _STLP_MPWFIX_TRY
1517.405 +#endif
1517.406 +#ifndef _STLP_MPWFIX_CATCH
1517.407 +#  define _STLP_MPWFIX_CATCH
1517.408 +#endif
1517.409 +#ifndef _STLP_MPWFIX_CATCH_ACTION
1517.410 +#  define _STLP_MPWFIX_CATCH_ACTION(action)
1517.411 +#endif
1517.412 +
1517.413 +/* if _STLP_DEBUG or _STLP_ASSERTIONS are set, stl/debug/_debug.h defines those */
1517.414 +
1517.415 +#if !defined (_STLP_ASSERTIONS) && !defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_ALLOC)
1517.416 +#  define _STLP_ASSERT(expr)
1517.417 +#endif
1517.418 +
1517.419 +#if !defined (_STLP_DEBUG)
1517.420 +#  define _STLP_VERBOSE_ASSERT(expr,diagnostic)
1517.421 +#  define _STLP_DEBUG_CHECK(expr)
1517.422 +#  define _STLP_DEBUG_DO(expr)
1517.423 +#endif
1517.424 +
1517.425 +#if !defined (_STLP_WEAK)
1517.426 +#  define _STLP_WEAK
1517.427 +#endif
1517.428 +
1517.429 +/* default parameters as template types derived from arguments ( not always supported ) */
1517.430 +#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
1517.431 +#  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname
1517.432 +#else
1517.433 +#  if !defined (_STLP_DEFAULT_TYPE_PARAM)
1517.434 +#    define _STLP_DEFAULT_TYPE_PARAM 1
1517.435 +#  endif
1517.436 +#  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname = defval
1517.437 +#endif
1517.438 +
1517.439 +/* default parameters as complete types */
1517.440 +#if defined (_STLP_DEFAULT_TYPE_PARAM)
1517.441 +#  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname = defval
1517.442 +#  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name = val
1517.443 +#else
1517.444 +#  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname
1517.445 +#  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name
1517.446 +#endif
1517.447 +
1517.448 +/* SGI compatibility */
1517.449 +
1517.450 +#ifdef _STLP_NO_WCHAR_T
1517.451 +#  ifndef _STLP_NO_NATIVE_WIDE_STREAMS
1517.452 +#    define  _STLP_NO_NATIVE_WIDE_STREAMS 1
1517.453 +#  endif
1517.454 +#else
1517.455 +#  define _STLP_HAS_WCHAR_T 1
1517.456 +#endif
1517.457 +
1517.458 +#if !defined (_STLP_NO_AT_MEMBER_FUNCTION)
1517.459 +#  define _STLP_CAN_THROW_RANGE_ERRORS 1
1517.460 +#endif
1517.461 +
1517.462 +#if !defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1517.463 +#  define _STLP_DEFAULT_ALLOCATOR(_Tp) allocator< _Tp >
1517.464 +#  define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) _STLP_DFL_TMPL_PARAM(_Alloc, allocator< _Tp >)
1517.465 +#  define _STLP_DEFAULT_PAIR_ALLOCATOR(_Key, _Tp) allocator< pair < _Key, _Tp > >
1517.466 +#  if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
1517.467 +#    define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc
1517.468 +#    define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
1517.469 +#  else
1517.470 +#    define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \
1517.471 +            class _Alloc = allocator< pair < _Key, _Tp > >
1517.472 +#  endif
1517.473 +#else
1517.474 +#  define _STLP_DEFAULT_ALLOCATOR( _Tp ) __sgi_alloc
1517.475 +#  define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) _STLP_DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
1517.476 +#  define _STLP_DEFAULT_PAIR_ALLOCATOR( _Key, _Tp ) __sgi_alloc
1517.477 +#  define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) _STLP_DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
1517.478 +#  if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) && !defined (_STLP_DEFAULT_TYPE_PARAM)
1517.479 +#    define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
1517.480 +#  endif
1517.481 +#endif
1517.482 +
1517.483 +/* debug mode tool */
1517.484 +#if defined (_STLP_DEBUG)
1517.485 +#  define _STLP_NON_DBG_NAME(X) _NonDbg_##X
1517.486 +#endif
1517.487 +
1517.488 +/* pointer specialization tool */
1517.489 +#if defined (_STLP_USE_PTR_SPECIALIZATIONS)
1517.490 +#  define _STLP_PTR_IMPL_NAME(X) _Impl_##X
1517.491 +#endif
1517.492 +
1517.493 +#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
1517.494 +#  define _STLP_NO_MEM_T_NAME(X) _NoMemT_##X
1517.495 +#  if defined (_STLP_DEBUG)
1517.496 +#    define _STLP_NON_DBG_NO_MEM_T_NAME(X) _NonDbg_NoMemT_##X
1517.497 +#  endif
1517.498 +#endif
1517.499 +
1517.500 +/* this always mean the C library is in global namespace */
1517.501 +#if defined (_STLP_HAS_NO_NEW_C_HEADERS) && !defined (_STLP_VENDOR_GLOBAL_CSTD)
1517.502 +#  define _STLP_VENDOR_GLOBAL_CSTD 1
1517.503 +#endif
1517.504 +
1517.505 +/* Depending of whether compiler supports namespaces,
1517.506 + * tune the parameters for vendor-supplied libraries.
1517.507 + * This section is guarded by _STLP_HAS_NO_NAMESPACES, not by _STLP_USE_NAMESPACES,
1517.508 + * since it depends only on the native features, not on user's preference whether
1517.509 + * to use namespace for STLport or not.
1517.510 + */
1517.511 +#if !defined (_STLP_HAS_NO_NAMESPACES)
1517.512 +/* Import some vendor's headers into corresponding STLport ones if they might be needed
1517.513 + * (if we wrap native iostreams and use namepace other than std::) */
1517.514 +#  if defined (_STLP_WHOLE_NATIVE_STD)
1517.515 +#    define  _STLP_IMPORT_VENDOR_STD 1
1517.516 +#    undef   _STLP_MINIMUM_IMPORT_STD
1517.517 +#  endif
1517.518 +
1517.519 +/* if using stlport:: namespace or if C library stuff is not in vendor's std::,
1517.520 + * try importing 'em.
1517.521 + * MSVC has ambiguity problem when we try to import C-style std:: stuff back into global namespace */
1517.522 +#  if defined (_STLP_USE_NAMESPACES) && (defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD))
1517.523 +#    define  _STLP_IMPORT_VENDOR_CSTD 1
1517.524 +#  endif
1517.525 +
1517.526 +#  if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && !defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS)
1517.527 +#    define _STLP_NO_CSTD_FUNCTION_IMPORTS
1517.528 +#  endif
1517.529 +
1517.530 +#  define _STLP_USING_NAMESPACE(x) using namespace x ;
1517.531 +
1517.532 +namespace std { }
1517.533 +namespace __std_alias = std;
1517.534 +
1517.535 +/* assume std:: namespace for C++ std library if not being told otherwise */
1517.536 +#  if defined (_STLP_VENDOR_GLOBAL_STD)
1517.537 +#    define _STLP_VENDOR_STD
1517.538 +#  else
1517.539 +#    define _STLP_VENDOR_STD __std_alias
1517.540 +#  endif
1517.541 +
1517.542 +/* tune things that come from C library */
1517.543 +#  if  defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS)
1517.544 +/*  in old-style headers, C functions go to global scope. */
1517.545 +#    define _STLP_VENDOR_CSTD
1517.546 +#    define _STLP_USING_VENDOR_CSTD
1517.547 +#  else
1517.548 +#    define _STLP_VENDOR_CSTD  _STLP_VENDOR_STD
1517.549 +#    define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD)
1517.550 +#  endif /* _STLP_VENDOR_CSTD */
1517.551 +/* exception, typeinfo, new - always come from the vendor */
1517.552 +#  if !defined (_STLP_VENDOR_EXCEPT_STD)
1517.553 +#    if defined (_STLP_VENDOR_GLOBAL_EXCEPT_STD)
1517.554 +#      define _STLP_VENDOR_EXCEPT_STD
1517.555 +#    else
1517.556 +#      define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD
1517.557 +#    endif
1517.558 +#  endif
1517.559 +#  define _STLP_OLD_IO_NAMESPACE
1517.560 +#  if !defined (_STLP_VENDOR_MB_NAMESPACE)
1517.561 +#    define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD
1517.562 +#  endif
1517.563 +#else
1517.564 +/* compiler has no namespace support */
1517.565 +#  define _STLP_VENDOR_STD
1517.566 +#  define _STLP_VENDOR_CSTD
1517.567 +#  define _STLP_USING_NAMESPACE(x)
1517.568 +#  define _STLP_USING_VENDOR_CSTD
1517.569 +#  define _STLP_VENDOR_EXCEPT_STD
1517.570 +#endif
1517.571 +
1517.572 +#if defined (_STLP_USE_NAMESPACES)
1517.573 +
1517.574 +#  if defined (_STLP_USE_OWN_NAMESPACE)
1517.575 +#    if !defined (_STLP_STD_NAME)
1517.576 +#      if !defined (_STLP_DEBUG)
1517.577 +#        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
1517.578 +#          ifndef _STLP_THREADS
1517.579 +#            define _STLP_STD_NAME  stlpmtx_std
1517.580 +#          else
1517.581 +#            define _STLP_STD_NAME  stlp_std
1517.582 +#          endif
1517.583 +#        else
1517.584 +#          ifndef _STLP_THREADS
1517.585 +#            define _STLP_STD_NAME  stlpxmtx_std
1517.586 +#          else
1517.587 +#            define _STLP_STD_NAME  stlpx_std
1517.588 +#          endif
1517.589 +#        endif
1517.590 +#      else
1517.591 +/*
1517.592 + * The STLport debug mode is binary incompatible with the other modes,
1517.593 + * lets make it clear on the STLport namespace to generate link errors rather
1517.594 + * than runtime.
1517.595 + */
1517.596 +#        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
1517.597 +#          ifndef _STLP_THREADS
1517.598 +#            define _STLP_STD_NAME  stlpdmtx_std
1517.599 +#          else
1517.600 +#            define _STLP_STD_NAME  stlpd_std
1517.601 +#          endif
1517.602 +#        else
1517.603 +#          ifndef _STLP_THREADS
1517.604 +#            define _STLP_STD_NAME  stlpdxmtx_std
1517.605 +#          else
1517.606 +#            define _STLP_STD_NAME  stlpdx_std
1517.607 +#          endif
1517.608 +#        endif
1517.609 +#      endif
1517.610 +#    endif
1517.611 +namespace _STLP_STD_NAME { }
1517.612 +#  else
1517.613 +#    if defined (_STLP_DEBUG)
1517.614 +namespace stdD = std;
1517.615 +#    endif
1517.616 +#    define _STLP_STD_NAME std
1517.617 +#  endif /* _STLP_USE_OWN_NAMESPACE */
1517.618 +
1517.619 +#  if !defined (_STLP_USING_NAMESPACE_BUG)
1517.620 +#    define _STLP_PRIV_NAME stlp_priv
1517.621 +namespace _STLP_PRIV_NAME {
1517.622 +  using namespace _STLP_STD_NAME;
1517.623 +}
1517.624 +#  else
1517.625 +#    define _STLP_PRIV_NAME priv
1517.626 +#  endif
1517.627 +
1517.628 +#  define _STLP_BEGIN_NAMESPACE namespace _STLP_STD_NAME {
1517.629 +#  define _STLP_END_NAMESPACE }
1517.630 +
1517.631 +#  if !defined (_STLP_DONT_USE_PRIV_NAMESPACE)
1517.632 +#    if !defined (_STLP_USING_NAMESPACE_BUG)
1517.633 +/* We prefer to make private namespace a totaly seperated namespace...
1517.634 + */
1517.635 +#      define _STLP_PRIV ::_STLP_PRIV_NAME::
1517.636 +#      define _STLP_MOVE_TO_PRIV_NAMESPACE } namespace _STLP_PRIV_NAME {
1517.637 +#      define _STLP_MOVE_TO_STD_NAMESPACE } namespace _STLP_STD_NAME {
1517.638 +#    else
1517.639 +/* but sometimes we can't:
1517.640 + */
1517.641 +#      define _STLP_PRIV _STLP_PRIV_NAME::
1517.642 +#      define _STLP_MOVE_TO_PRIV_NAMESPACE namespace _STLP_PRIV_NAME {
1517.643 +#      define _STLP_MOVE_TO_STD_NAMESPACE }
1517.644 +#    endif
1517.645 +#  else
1517.646 +#    define _STLP_PRIV
1517.647 +#    define _STLP_MOVE_TO_PRIV_NAMESPACE
1517.648 +#    define _STLP_MOVE_TO_STD_NAMESPACE
1517.649 +#  endif
1517.650 +
1517.651 +/* decide whether or not we use separate namespace for rel ops */
1517.652 +#  if defined (_STLP_NO_RELOPS_NAMESPACE)
1517.653 +#    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {}
1517.654 +#    define _STLP_END_RELOPS_NAMESPACE }
1517.655 +#  else
1517.656 +/* Use std::rel_ops namespace */
1517.657 +#    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {
1517.658 +#    define _STLP_END_RELOPS_NAMESPACE } }
1517.659 +#    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1517.660 +#  endif /* Use std::rel_ops namespace */
1517.661 +
1517.662 +#  define _STLP_STD ::_STLP_STD_NAME
1517.663 +
1517.664 +/* Official STLport namespace when std is not redefined.
1517.665 + * Here we don't use a macro as stlport is used as file name by boost
1517.666 + * and folder name under beos:
1517.667 + */
1517.668 +namespace stlport = _STLP_STD_NAME;
1517.669 +
1517.670 +/* Backward compatibility:
1517.671 + */
1517.672 +namespace _STL = _STLP_STD_NAME;
1517.673 +#undef __STLPORT_NAMESPACE
1517.674 +#define __STLPORT_NAMESPACE _STLP_STD_NAME
1517.675 +
1517.676 +#else /* _STLP_USE_NAMESPACES */
1517.677 +/* STLport is being put into global namespace */
1517.678 +#  define _STLP_STD
1517.679 +#  define _STLP_PRIV
1517.680 +#  define _STLP_BEGIN_NAMESPACE
1517.681 +#  define _STLP_END_NAMESPACE
1517.682 +#  define _STLP_MOVE_TO_PRIV_NAMESPACE
1517.683 +#  define _STLP_MOVE_TO_STD_NAMESPACE
1517.684 +
1517.685 +/* boris : it was found out that _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1517.686 +   causes less problems than having relational operator templates in global namespace
1517.687 +   Please define _STLP_NO_RELOPS_NAMESPACE in stl_user_config.h if your code rely on them. */
1517.688 +#  if !defined (_STLP_NO_RELOPS_NAMESPACE)
1517.689 +#    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1517.690 +#  endif
1517.691 +#  define _STLP_BEGIN_RELOPS_NAMESPACE
1517.692 +#  define _STLP_END_RELOPS_NAMESPACE
1517.693 +#  undef  _STLP_USE_OWN_NAMESPACE
1517.694 +#endif  /* _STLP_USE_NAMESPACES */
1517.695 +
1517.696 +#define STLPORT_CSTD _STLP_VENDOR_CSTD
1517.697 +#define STLPORT      _STLP_STD_NAME
1517.698 +
1517.699 +#if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG)
1517.700 +#  define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy<T>
1517.701 +#else
1517.702 +#  define _STLP_SIMPLE_TYPE(T) T
1517.703 +#endif
1517.704 +
1517.705 +#ifndef _STLP_RAND48
1517.706 +#  define _STLP_NO_DRAND48
1517.707 +#endif
1517.708 +
1517.709 +/* advanced keywords usage */
1517.710 +#define __C_CAST(__x, __y) ((__x)(__y))
1517.711 +#ifndef  _STLP_NO_NEW_STYLE_CASTS
1517.712 +#  define __CONST_CAST(__x,__y) const_cast<__x>(__y)
1517.713 +#  define __STATIC_CAST(__x,__y) static_cast<__x>(__y)
1517.714 +#  define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y)
1517.715 +#  define __DYNAMIC_CAST(__x,__y) dynamic_cast<__x>(__y)
1517.716 +#else
1517.717 +#  define __STATIC_CAST(__x,__y) __C_CAST(__x, __y)
1517.718 +#  define __CONST_CAST(__x,__y) __C_CAST(__x, __y)
1517.719 +#  define __REINTERPRET_CAST(__x,__y) __C_CAST(__x, __y)
1517.720 +#  define __DYNAMIC_CAST(__x,__y) __C_CAST(__x, __y)
1517.721 +#endif
1517.722 +
1517.723 +#if defined (_STLP_NEED_TYPENAME) && ! defined (typename)
1517.724 +#  define typename
1517.725 +#endif
1517.726 +
1517.727 +#if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE )
1517.728 +#  define _STLP_TYPENAME_ON_RETURN_TYPE
1517.729 +#else
1517.730 +#  define _STLP_TYPENAME_ON_RETURN_TYPE typename
1517.731 +#endif
1517.732 +
1517.733 +#ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
1517.734 +#  define _STLP_HEADER_TYPENAME
1517.735 +#else
1517.736 +#  define _STLP_HEADER_TYPENAME typename
1517.737 +#endif
1517.738 +
1517.739 +#ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD
1517.740 +#  define _STLP_TEMPLATE template
1517.741 +#else
1517.742 +#  define _STLP_TEMPLATE
1517.743 +#endif
1517.744 +
1517.745 +#if defined (_STLP_USE_CONTAINERS_EXTENSION)
1517.746 +#  define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
1517.747 +#  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
1517.748 +#else
1517.749 +#  define _STLP_KEY_TYPE_FOR_CONT_EXT(type) typedef type _KT;
1517.750 +#  define _STLP_TEMPLATE_FOR_CONT_EXT
1517.751 +#endif
1517.752 +
1517.753 +#if defined (_STLP_NEED_EXPLICIT) && !defined (explicit)
1517.754 +#  define explicit
1517.755 +#endif
1517.756 +
1517.757 +#if !defined (_STLP_NEED_MUTABLE)
1517.758 +#  define _STLP_ASSIGN_MUTABLE(type,x,y) x = y
1517.759 +#else
1517.760 +#  define _STLP_ASSIGN_MUTABLE(type,x,y) __CONST_CAST(type,x)=y
1517.761 +#  define mutable
1517.762 +#endif
1517.763 +
1517.764 +#if defined (_STLP_NO_SIGNED_BUILTINS)
1517.765 +/* old HP-UX doesn't understand "signed" keyword */
1517.766 +#  define signed
1517.767 +#endif
1517.768 +
1517.769 +#if defined (_STLP_LOOP_INLINE_PROBLEMS)
1517.770 +#  define _STLP_INLINE_LOOP
1517.771 +#else
1517.772 +#  define _STLP_INLINE_LOOP inline
1517.773 +#endif
1517.774 +
1517.775 +#define _STLP_PRIVATE public
1517.776 +
1517.777 +#ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
1517.778 +#  define _STLP_TEMPLATE_NULL template<>
1517.779 +#else
1517.780 +#  define _STLP_TEMPLATE_NULL
1517.781 +#endif
1517.782 +
1517.783 +#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1517.784 +#  define _STLP_OPERATOR_TEMPLATE
1517.785 +#else
1517.786 +#  define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL
1517.787 +#endif
1517.788 +
1517.789 +#ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION
1517.790 +/* unless we have other compiler problem, try simulating partial spec here */
1517.791 +#  if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
1517.792 +#    define _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1517.793 +#  endif
1517.794 +/* For your own iterators, please use inheritance from iterator<> instead of these obsolete queries. */
1517.795 +#  if  (defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
1517.796 +#    if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES )
1517.797 +#      define _STLP_USE_OLD_HP_ITERATOR_QUERIES
1517.798 +#    endif
1517.799 +#  elif defined ( _STLP_NO_ANACHRONISMS )
1517.800 +#    undef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1517.801 +#  endif
1517.802 +#endif
1517.803 +
1517.804 +#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1517.805 +#  define _STLP_NULL_TMPL_ARGS <>
1517.806 +# else
1517.807 +#  define _STLP_NULL_TMPL_ARGS
1517.808 +#endif
1517.809 +
1517.810 +#if !defined (_STLP_ALLOCATOR_TYPE_DFL)
1517.811 +#  if defined (_STLP_DONT_SUP_DFLT_PARAM)
1517.812 +#    define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
1517.813 +#  endif
1517.814 +#  if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
1517.815 +#    define _STLP_ALLOCATOR_TYPE_DFL
1517.816 +#  else
1517.817 +#    define _STLP_ALLOCATOR_TYPE_DFL = allocator_type()
1517.818 +#  endif
1517.819 +#endif
1517.820 +
1517.821 +/* When the compiler do not correctly initialized the basic types value in default parameters we prefer
1517.822 + * to avoid them to be able to correct this bug.
1517.823 + */
1517.824 +#if defined (_STLP_DEF_CONST_DEF_PARAM_BUG)
1517.825 +#  define _STLP_DONT_SUP_DFLT_PARAM 1
1517.826 +#endif
1517.827 +
1517.828 +#if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR)
1517.829 +#  define _STLP_NO_ARROW_OPERATOR
1517.830 +#endif
1517.831 +
1517.832 +#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1517.833 +#  if !(defined (_STLP_NO_ARROW_OPERATOR)) && \
1517.834 +       !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY)
1517.835 +/* this one is needed for proper reverse_iterator<> operator ->() handling */
1517.836 +#    define _STLP_MSVC50_COMPATIBILITY 1
1517.837 +#  endif
1517.838 +#endif
1517.839 +
1517.840 +#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1517.841 +#  if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) )
1517.842 +#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1517.843 +   typedef typename _STLP_STD :: reverse_iterator<const_iterator> const_reverse_iterator; \
1517.844 +   typedef typename _STLP_STD :: reverse_iterator<iterator> reverse_iterator
1517.845 +#  elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__)
1517.846 +#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1517.847 +   typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<const_iterator> const_reverse_iterator; \
1517.848 +   typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<iterator> reverse_iterator
1517.849 +#  else
1517.850 +#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1517.851 +   typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator; \
1517.852 +   typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator
1517.853 +#  endif
1517.854 +#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1517.855 +#  if defined (_STLP_MSVC50_COMPATIBILITY)
1517.856 +#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1517.857 +  typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
1517.858 +    const_pointer, difference_type>  const_reverse_iterator; \
1517.859 +  typedef _STLP_STD::__reverse_iterator<iterator, value_type, reference, pointer, difference_type> \
1517.860 +    reverse_iterator
1517.861 +#  else
1517.862 +#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1517.863 +  typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
1517.864 +    difference_type>  const_reverse_iterator; \
1517.865 +  typedef _STLP_STD::__reverse_iterator<iterator, value_type, \
1517.866 +    reference, difference_type> \
1517.867 +    reverse_iterator
1517.868 +#  endif
1517.869 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1517.870 +
1517.871 +#define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \
1517.872 +        _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator)
1517.873 +#define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \
1517.874 +        _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator)
1517.875 +
1517.876 +#define __IMPORT_CONTAINER_TYPEDEFS(_Super)                              \
1517.877 +    typedef typename _Super::value_type value_type;                      \
1517.878 +    typedef typename _Super::size_type size_type;                        \
1517.879 +    typedef typename _Super::difference_type difference_type;            \
1517.880 +    typedef typename _Super::reference reference;                        \
1517.881 +    typedef typename _Super::const_reference const_reference;            \
1517.882 +    typedef typename _Super::pointer pointer;                            \
1517.883 +    typedef typename _Super::const_pointer const_pointer;                \
1517.884 +    typedef typename _Super::allocator_type allocator_type;
1517.885 +
1517.886 +
1517.887 +#define __IMPORT_ITERATORS(_Super)                                       \
1517.888 +    typedef typename _Super::iterator iterator;                          \
1517.889 +    typedef typename _Super::const_iterator const_iterator;
1517.890 +
1517.891 +#define __IMPORT_REVERSE_ITERATORS(_Super)                                   \
1517.892 +    typedef typename _Super::const_reverse_iterator  const_reverse_iterator; \
1517.893 +    typedef typename _Super::reverse_iterator reverse_iterator;
1517.894 +
1517.895 +#define  __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER)       \
1517.896 +    __derived_name(const _Super& __x) : _SUPER(__x) {}                       \
1517.897 +    _Self& operator=(const _Super& __x) {                                    \
1517.898 +        *(_Super*)this = __x;                                                \
1517.899 +        return *this;                                                        \
1517.900 +    }                                                                        \
1517.901 +    __derived_name(const _Self& __x) : _SUPER(__x) {}                        \
1517.902 +    _Self& operator=(const _Self& __x) {                                     \
1517.903 +        *(_Super*)this = __x;                                                \
1517.904 +        return *this;                                                        \
1517.905 +    }
1517.906 +
1517.907 +#define __IMPORT_WITH_ITERATORS(_Super) \
1517.908 +  __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super)
1517.909 +
1517.910 +#define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \
1517.911 +  __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super)
1517.912 +
1517.913 +#if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG)
1517.914 +#  define __TRIVIAL_CONSTRUCTOR(__type) __type() {}
1517.915 +#else
1517.916 +#  define __TRIVIAL_CONSTRUCTOR(__type)
1517.917 +#endif
1517.918 +
1517.919 +#if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG)
1517.920 +#  define __TRIVIAL_DESTRUCTOR(__type) ~__type() {}
1517.921 +#else
1517.922 +#  define __TRIVIAL_DESTRUCTOR(__type)
1517.923 +#endif
1517.924 +
1517.925 +#define __TRIVIAL_STUFF(__type)  \
1517.926 +  __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type)
1517.927 +
1517.928 +#if defined (_STLP_HAS_NO_EXCEPTIONS)
1517.929 +#  define _STLP_NO_EXCEPTIONS
1517.930 +#endif
1517.931 +
1517.932 +#if !defined (_STLP_DONT_USE_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_USE_EXCEPTIONS)
1517.933 +#  define _STLP_USE_EXCEPTIONS
1517.934 +#endif
1517.935 +
1517.936 +#if defined (_STLP_USE_EXCEPTIONS)
1517.937 +#  define _STLP_TRY try
1517.938 +#  define _STLP_CATCH_ALL catch(...)
1517.939 +#  ifndef _STLP_THROW
1517.940 +#    define _STLP_THROW(x) throw x
1517.941 +#  endif
1517.942 +#  define _STLP_RETHROW throw
1517.943 +
1517.944 +#  define _STLP_UNWIND(action) catch(...) { action; throw; }
1517.945 +
1517.946 +#  ifdef _STLP_THROW_RETURN_BUG
1517.947 +#    define _STLP_RET_AFTER_THROW(data) return data;
1517.948 +#  else
1517.949 +#    define _STLP_RET_AFTER_THROW(data)
1517.950 +#  endif
1517.951 +
1517.952 +/* We do not use exception throw specifications unless we are forced to */
1517.953 +#  if !defined (_STLP_THROWS)
1517.954 +#    define _STLP_THROWS(x)
1517.955 +#  endif
1517.956 +#  if !defined (_STLP_NOTHROW)
1517.957 +#    define _STLP_NOTHROW
1517.958 +#  endif
1517.959 +#else
1517.960 +#  define _STLP_TRY
1517.961 +#  define _STLP_CATCH_ALL if (false)
1517.962 +#  ifndef _STLP_THROW
1517.963 +#    define _STLP_THROW(x)
1517.964 +#  endif
1517.965 +#  define _STLP_RETHROW {}
1517.966 +#  define _STLP_UNWIND(action)
1517.967 +#  define _STLP_THROWS(x)
1517.968 +#  define _STLP_NOTHROW
1517.969 +#  define _STLP_RET_AFTER_THROW(data)
1517.970 +#endif
1517.971 +
1517.972 +/*
1517.973 + * Here we check _STLP_NO_EXCEPTIONS which means that the compiler has no
1517.974 + * exception support but not the _STLP_USE_EXCEPTIONS which simply means
1517.975 + * that the user do not want to use them.
1517.976 + */
1517.977 +#if !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTION_SPEC)
1517.978 +#  define _STLP_THROWS_INHERENTLY(x) throw x
1517.979 +#  define _STLP_NOTHROW_INHERENTLY throw()
1517.980 +#else
1517.981 +#  define _STLP_THROWS_INHERENTLY(x)
1517.982 +#  define _STLP_NOTHROW_INHERENTLY
1517.983 +#endif
1517.984 +
1517.985 +/* STLport function not returning are functions that throw so we translate
1517.986 + * the noreturn functions in throwing functions taking also into account
1517.987 + * exception support activation.
1517.988 + */
1517.989 +#if defined (_STLP_NORETURN_FUNCTION) && !defined (_STLP_NO_EXCEPTIONS) && \
1517.990 +   !defined (_STLP_FUNCTION_THROWS)
1517.991 +#  define _STLP_FUNCTION_THROWS _STLP_NORETURN_FUNCTION
1517.992 +#else
1517.993 +#  define _STLP_FUNCTION_THROWS
1517.994 +#endif
1517.995 +
1517.996 +#if defined(_STLP_NO_BOOL)
1517.997 +#  if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX)
1517.998 +#    include <isynonym.hpp>
1517.999 +#    if defined (__OS400__)
1517.1000 +typedef int bool;
1517.1001 +#    elif !( defined (__xlC__) || defined (_AIX))
1517.1002 +typedef Boolean bool;
1517.1003 +#    endif
1517.1004 +#  else
1517.1005 +#    if defined(_STLP_YVALS_H)
1517.1006 +#      include <yvals.h>
1517.1007 +#    else
1517.1008 +#      if defined (_STLP_DONT_USE_BOOL_TYPEDEF)
1517.1009 +#        define bool int
1517.1010 +#      else
1517.1011 +typedef int bool;
1517.1012 +#      endif
1517.1013 +#      define true 1
1517.1014 +#      define false 0
1517.1015 +#    endif
1517.1016 +#  endif /* __IBMCPP__ */
1517.1017 +#else
1517.1018 +#  define _STLP_BOOL_KEYWORD 1
1517.1019 +#endif /* _STLP_NO_BOOL */
1517.1020 +
1517.1021 +#ifndef _STLP_MPW_EXTRA_CONST
1517.1022 +#  define _STLP_MPW_EXTRA_CONST
1517.1023 +#endif
1517.1024 +
1517.1025 +#ifndef _STLP_DEFAULTCHAR
1517.1026 +#  define _STLP_DEFAULTCHAR char
1517.1027 +#endif
1517.1028 +
1517.1029 +#if defined (_STLP_DEBUG_ALLOC) && !defined (_STLP_ASSERTIONS)
1517.1030 +#  define _STLP_ASSERTIONS 1
1517.1031 +#endif
1517.1032 +
1517.1033 +/* uninitialized value filler */
1517.1034 +#ifndef _STLP_SHRED_BYTE
1517.1035 +/* This value is designed to cause problems if an error occurs */
1517.1036 +#  define _STLP_SHRED_BYTE 0xA3
1517.1037 +#endif /* _STLP_SHRED_BYTE */
1517.1038 +
1517.1039 +/* shared library tune-up */
1517.1040 +#ifndef _STLP_IMPORT_DECLSPEC
1517.1041 +#  define _STLP_IMPORT_DECLSPEC
1517.1042 +#endif
1517.1043 +
1517.1044 +/* a keyword used to instantiate export template */
1517.1045 +#ifndef _STLP_EXPORT_TEMPLATE_KEYWORD
1517.1046 +#  define _STLP_EXPORT_TEMPLATE_KEYWORD
1517.1047 +#endif
1517.1048 +#ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
1517.1049 +#  define _STLP_IMPORT_TEMPLATE_KEYWORD
1517.1050 +#endif
1517.1051 +
1517.1052 +#ifdef _STLP_USE_NO_IOSTREAMS
1517.1053 +/*
1517.1054 + * If we do not use iostreams we do not use the export/import
1517.1055 + * techniques to avoid build of the STLport library.
1517.1056 + */
1517.1057 +#  undef _STLP_USE_DECLSPEC
1517.1058 +/* We also undef USE_DYNAMIC_LIB macro as this macro add some code
1517.1059 + * to use the dynamic (shared) STLport library for some platform/compiler
1517.1060 + * configuration leading to problem when do not link to the STLport lib.
1517.1061 + */
1517.1062 +#  undef _STLP_USE_DYNAMIC_LIB
1517.1063 +#endif
1517.1064 +
1517.1065 +#if  defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC)
1517.1066 +#  if ! defined (_STLP_USE_TEMPLATE_EXPORT)
1517.1067 +/* this setting turns on "extern template" extension use */
1517.1068 +#    define _STLP_USE_TEMPLATE_EXPORT
1517.1069 +#  endif
1517.1070 +#  if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE)
1517.1071 +#    define _STLP_NO_FORCE_INSTANTIATE
1517.1072 +#  endif
1517.1073 +#endif
1517.1074 +
1517.1075 +#if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
1517.1076 +#  define  _STLP_EXPORT _STLP_EXPORT_TEMPLATE_KEYWORD
1517.1077 +#else
1517.1078 +#  define  _STLP_EXPORT _STLP_IMPORT_TEMPLATE_KEYWORD
1517.1079 +#endif
1517.1080 +
1517.1081 +#ifndef _STLP_EXPORT_TEMPLATE
1517.1082 +#  define  _STLP_EXPORT_TEMPLATE _STLP_EXPORT template
1517.1083 +#endif
1517.1084 +
1517.1085 +#if defined (_STLP_USE_DECLSPEC) /* using export/import technique */
1517.1086 +
1517.1087 +#  ifndef _STLP_EXPORT_DECLSPEC
1517.1088 +#    define _STLP_EXPORT_DECLSPEC
1517.1089 +#  endif
1517.1090 +#  ifndef _STLP_IMPORT_DECLSPEC
1517.1091 +#    define _STLP_IMPORT_DECLSPEC
1517.1092 +#  endif
1517.1093 +#  ifndef _STLP_CLASS_EXPORT_DECLSPEC
1517.1094 +#    define _STLP_CLASS_EXPORT_DECLSPEC
1517.1095 +#  endif
1517.1096 +#  ifndef _STLP_CLASS_IMPORT_DECLSPEC
1517.1097 +#    define _STLP_CLASS_IMPORT_DECLSPEC
1517.1098 +#  endif
1517.1099 +#  if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
1517.1100 +#    define  _STLP_DECLSPEC        _STLP_EXPORT_DECLSPEC
1517.1101 +#    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_EXPORT_DECLSPEC
1517.1102 +#  else
1517.1103 +#    define  _STLP_DECLSPEC        _STLP_IMPORT_DECLSPEC   /* Other modules, importing STLport exports */
1517.1104 +#    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_IMPORT_DECLSPEC
1517.1105 +#  endif
1517.1106 +
1517.1107 +#else /* Not using DLL export/import specifications */
1517.1108 +
1517.1109 +#  define _STLP_DECLSPEC
1517.1110 +#  define _STLP_CLASS_DECLSPEC
1517.1111 +
1517.1112 +#endif
1517.1113 +
1517.1114 +#define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
1517.1115 +
1517.1116 +#if defined (_STLP_MSVC) || defined (__ICL)
1517.1117 +#  define _STLP_STATIC_MEMBER_DECLSPEC
1517.1118 +#else
1517.1119 +#  define _STLP_STATIC_MEMBER_DECLSPEC _STLP_DECLSPEC
1517.1120 +#endif
1517.1121 +
1517.1122 +#if !defined (_STLP_CALL)
1517.1123 +#  define _STLP_CALL
1517.1124 +#endif
1517.1125 +
1517.1126 +#ifndef _STLP_USE_NO_IOSTREAMS
1517.1127 +
1517.1128 +#  if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM)
1517.1129 +#    define __USE_STD_IOSTREAM
1517.1130 +#  endif
1517.1131 +
1517.1132 +/* We only need to expose details of streams implementation
1517.1133 +   if we use non-standard i/o or are building STLport*/
1517.1134 +#  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO)
1517.1135 +#    define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1
1517.1136 +#  endif
1517.1137 +
1517.1138 +/* We only need to expose details of global implementation if we are building STLport
1517.1139 +   or have not instantiated everything in the lib */
1517.1140 +#  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE)
1517.1141 +#    undef  _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
1517.1142 +#    define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1
1517.1143 +#  endif
1517.1144 +
1517.1145 +#else /* _STLP_USE_NO_IOSTREAMS */
1517.1146 +/* when we are not using SGI iostreams, we must expose globals, but not streams implementation */
1517.1147 +#  define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
1517.1148 +#endif /* _STLP_USE_NO_IOSTREAMS */
1517.1149 +
1517.1150 +#ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1517.1151 +#  define _STLP_PSPEC2(t1,t2) < t1,t2 >
1517.1152 +#  define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 >
1517.1153 +#else
1517.1154 +#  define _STLP_PSPEC2(t1,t2)  /* nothing */
1517.1155 +#  define _STLP_PSPEC3(t1,t2,t3)  /* nothing */
1517.1156 +#endif
1517.1157 +
1517.1158 +/* Activation of the partial template workaround:
1517.1159 + */
1517.1160 +#if !defined(_STLP_DONT_USE_PARTIAL_SPEC_WRKD) &&\
1517.1161 +   (!defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || !defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER))
1517.1162 +#  define _STLP_USE_PARTIAL_SPEC_WORKAROUND
1517.1163 +#endif
1517.1164 +
1517.1165 +#ifndef _STLP_USE_NO_IOSTREAMS
1517.1166 +#  define _STLP_NEW_IO_NAMESPACE _STLP_STD
1517.1167 +#  define _STLP_NO_WIDE_STREAMS  _STLP_NO_WCHAR_T
1517.1168 +#endif
1517.1169 +
1517.1170 +#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1517.1171 +#  define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \
1517.1172 +_TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\
1517.1173 +_TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y)  {return __y < __x;}\
1517.1174 +_TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\
1517.1175 +_TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);}
1517.1176 +#else
1517.1177 +#  define _STLP_RELOPS_OPERATORS(_TMPL, _TP)
1517.1178 +#endif
1517.1179 +
1517.1180 +#if defined ( _STLP_USE_ABBREVS )
1517.1181 +#  include <stl/_abbrevs.h>
1517.1182 +#endif
1517.1183 +
1517.1184 +/* A really useful macro */
1517.1185 +#define _STLP_ARRAY_SIZE(A) sizeof(A) / sizeof(A[0])
1517.1186 +#define _STLP_ARRAY_AND_SIZE(A) A, sizeof(A) / sizeof(A[0])
1517.1187 +
1517.1188 +/* some cleanup */
1517.1189 +#undef _STLP_DONT_USE_BOOL_TYPEDEF
1517.1190 +#undef _STLP_YVALS_H
1517.1191 +#undef _STLP_LOOP_INLINE_PROBLEMS
1517.1192 +#undef _STLP_NEED_EXPLICIT
1517.1193 +#undef _STLP_NEED_TYPENAME
1517.1194 +#undef _STLP_NO_NEW_STYLE_CASTS
1517.1195 +#undef __AUTO_CONFIGURED
1517.1196 +
1517.1197 +#endif /* _STLP_FEATURES_H */
  1518.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1518.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/host.h	Wed Mar 31 12:27:01 2010 +0100
  1518.3 @@ -0,0 +1,265 @@
  1518.4 +/*
  1518.5 + * This file defines site configuration.
  1518.6 + */
  1518.7 +
  1518.8 +/*
  1518.9 + * _STLP_NO_THREADS: if defined, STLport don't use any
 1518.10 + * multithreading support. Synonym is _NOTHREADS
 1518.11 + */
 1518.12 +/*
 1518.13 +#define _NOTHREADS
 1518.14 +#define _STLP_NO_THREADS
 1518.15 +*/
 1518.16 +
 1518.17 +/* _PTHREADS: if defined, use POSIX threads for multithreading support. */
 1518.18 +/*
 1518.19 +#define _PTHREADS
 1518.20 +*/
 1518.21 +
 1518.22 +/* compatibility section
 1518.23 + */
 1518.24 +
 1518.25 +#if (defined (_STLP_NOTHREADS) || defined (_STLP_NO_THREADS) || defined (NOTHREADS))
 1518.26 +#  if !defined (_NOTHREADS)
 1518.27 +#    define _NOTHREADS
 1518.28 +#  endif
 1518.29 +#  if !defined (_STLP_NO_THREADS)
 1518.30 +#    define _STLP_NO_THREADS
 1518.31 +#  endif
 1518.32 +#endif
 1518.33 +
 1518.34 +#if !defined(_STLP_USE_DYNAMIC_LIB) && !defined(_STLP_USE_STATIC_LIB)
 1518.35 +/*
 1518.36 + * Turn _STLP_USE_DYNAMIC_LIB to enforce use of .dll version of STLport library.
 1518.37 + * NOTE: please do that only if you know what you are doing!
 1518.38 + * Changing default will require you to change makefiles in "build" accordingly
 1518.39 + * and to rebuild STLPort library!
 1518.40 + * On UNIX, this has no effect, see build/lib/README for make tags.
 1518.41 + * See STLport configuration file (build/lib/configure.bat) for help in building
 1518.42 + * the require library versions.
 1518.43 + */
 1518.44 +/*
 1518.45 +#define _STLP_USE_DYNAMIC_LIB
 1518.46 +*/
 1518.47 +
 1518.48 +/*
 1518.49 + * Turn _STLP_USE_STATIC_LIB to enforce use of static version of STLport library.
 1518.50 + * NOTE: please do that only if you know what you are doing!
 1518.51 + * Changing default will require you to change makefile in "build" accordingly
 1518.52 + * and to rebuild STLPort library!
 1518.53 + * On UNIX, this has no effect, see build/lib/README for make tags.
 1518.54 + * See STLport configuration file (build/lib/configure.bat) for help in building
 1518.55 + * the require library versions.
 1518.56 + */
 1518.57 +/*
 1518.58 +#define _STLP_USE_STATIC_LIB
 1518.59 +*/
 1518.60 +#endif
 1518.61 +
 1518.62 +/*
 1518.63 + * Signal STLport that we are using the cygwin distrib with the -mno-cygwin option.
 1518.64 + * This is similar to a mingw environment except that relative path to native headers
 1518.65 + * is different, this is why we need this macro.
 1518.66 + */
 1518.67 +/*
 1518.68 +#define _STLP_NO_CYGWIN
 1518.69 + */
 1518.70 +
 1518.71 +/*
 1518.72 + * Edit relative path below (or put full path) to get native
 1518.73 + * compiler vendor's headers included. Default is "../include"
 1518.74 + * for _STLP_NATIVE_INCLUDE_PATH, default for other macros is
 1518.75 + * _STLP_NATIVE_INCLUDE_PATH.
 1518.76 + * Hint: never install STLport in the directory that ends with "include"
 1518.77 + */
 1518.78 +/*
 1518.79 +#undef _STLP_NATIVE_INCLUDE_PATH
 1518.80 +#define _STLP_NATIVE_INCLUDE_PATH ../include
 1518.81 +*/
 1518.82 +/* same for C library headers like <cstring> */
 1518.83 +/*
 1518.84 +#undef _STLP_NATIVE_CPP_C_INCLUDE_PATH
 1518.85 +#define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1518.86 +*/
 1518.87 +/* same for C headers like <string.h> */
 1518.88 +/*
 1518.89 +#undef _STLP_NATIVE_C_INCLUDE_PATH
 1518.90 +#define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1518.91 +*/
 1518.92 +/* Some compilers locate basic C++ runtime support headers (<new>, <typeinfo>, <exception>) in separate directory */
 1518.93 +/*
 1518.94 +#undef _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH
 1518.95 +#define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1518.96 +*/
 1518.97 +
 1518.98 +/*
 1518.99 + * If namespases available, STLport use own namespace (and masquerade
1518.100 + * it as std). Disable own namespace may cause undefined behaviour.
1518.101 + */
1518.102 +/*
1518.103 +#define _STLP_NO_OWN_NAMESPACE  1
1518.104 +*/
1518.105 +
1518.106 +/*
1518.107 + * Uncomment _STLP_LEAKS_PEDANTIC to force deallocation of ALL allocated
1518.108 + * memory chunks. Normally not required. But if you worry about quazi-leaks
1518.109 + * (may be reported by some leaks detection tools), use
1518.110 + * _STLP_LEAKS_PEDANTIC. It should be used with _STLP_USE_NEWALLOC or
1518.111 + * _STLP_USE_MALLOC (see below), the default node_alloc allocator also clean
1518.112 + * its internal memory pool but only if STLport is used as a dynamic library
1518.113 + * under Win32 (using MSVC like compilers).
1518.114 + */
1518.115 +/*
1518.116 +#define _STLP_LEAKS_PEDANTIC 1
1518.117 +*/
1518.118 +
1518.119 +/*
1518.120 + * Uncomment _STLP_USE_NEWALLOC to force allocator<T> to use plain "new"
1518.121 + * instead of STLport optimized node allocator engine.
1518.122 + */
1518.123 +/*
1518.124 +#define _STLP_USE_NEWALLOC 1
1518.125 +*/
1518.126 +
1518.127 +/*
1518.128 + * Uncomment _STLP_USE_MALLOC to force allocator<T> to use plain "malloc"
1518.129 + * instead of STLport optimized node allocator engine.
1518.130 + */
1518.131 +/*
1518.132 +#define _STLP_USE_MALLOC 1
1518.133 +*/
1518.134 +
1518.135 +/*
1518.136 + * Uncomment _STLP_USE_PERTHREAD_ALLOC to force allocator<T> to use
1518.137 + * a specific implementation targetting the massively multi-threaded
1518.138 + * environment. The implementation is based on the POSIX pthread
1518.139 + * interface.
1518.140 + */
1518.141 +/*
1518.142 +#define _STLP_USE_PERTHREAD_ALLOC 1
1518.143 +*/
1518.144 +
1518.145 +/*
1518.146 + * Set _STLP_DEBUG_ALLOC to use allocators that perform memory debugging,
1518.147 + * such as padding/checking for memory consistency
1518.148 + */
1518.149 +/*
1518.150 +#define _STLP_DEBUG_ALLOC 1
1518.151 +*/
1518.152 +
1518.153 +/*
1518.154 + * For compiler not supporting partial template specialization or ordering of
1518.155 + * template functions STLport implement a workaround based on inheritance
1518.156 + * detection. This inheritance can introduce trouble in client code when
1518.157 + * a user class derived a STL container (which is not advised as STL containers
1518.158 + * do not have virtual destructors). To disable this workaround turn this macro on:
1518.159 + */
1518.160 +/*
1518.161 +#define _STLP_DONT_USE_PARTIAL_SPEC_WRKD 1
1518.162 +*/
1518.163 +
1518.164 +/*
1518.165 + * Uncomment this to force all debug diagnostic to be directed through a
1518.166 + * user-defined global function:
1518.167 + *  void __stl_debug_message(const char * format_str, ...)
1518.168 + * instead of predefined STLport routine.
1518.169 + * This allows you to take control of debug message output.
1518.170 + * Default routine calls fprintf(stderr,...)
1518.171 + * Note : If you set this macro, you must supply __stl_debug_message
1518.172 + * function definition somewhere.
1518.173 + */
1518.174 +/*
1518.175 +#define _STLP_DEBUG_MESSAGE 1
1518.176 +*/
1518.177 +
1518.178 +/*
1518.179 + * Uncomment this to force all failed assertions to be executed through
1518.180 + * user-defined global function:
1518.181 + *  void __stl_debug_terminate(void). This allows
1518.182 + * you to take control of assertion behaviour for debugging purposes.
1518.183 + * Default routine calls _STLP_ABORT().
1518.184 + * Note : If you set this macro, you must supply __stl_debug_terminate
1518.185 + * function definition somewhere.
1518.186 + */
1518.187 +/*
1518.188 +#define _STLP_DEBUG_TERMINATE 1
1518.189 +*/
1518.190 +
1518.191 +/*
1518.192 + * Uncomment that to disable exception handling code
1518.193 + */
1518.194 +/*
1518.195 +#define _STLP_DONT_USE_EXCEPTIONS 1
1518.196 +*/
1518.197 +
1518.198 +/*
1518.199 + * _STLP_NO_NAMESPACES: if defined, don't put the library in namespace
1518.200 + * stlport:: or std::, even if the compiler supports namespaces
1518.201 + */
1518.202 +/*
1518.203 +#define _STLP_NO_NAMESPACES 1
1518.204 +*/
1518.205 +
1518.206 +/*==========================================================
1518.207 + * Compatibility section
1518.208 + *==========================================================*/
1518.209 +
1518.210 +/*
1518.211 + * Use abbreviated class names for linker benefit (don't affect interface).
1518.212 + * This option is obsolete, but should work in this release.
1518.213 + *
1518.214 + */
1518.215 +/*
1518.216 +#define _STLP_USE_ABBREVS
1518.217 +*/
1518.218 +
1518.219 +/*
1518.220 + * This definition precludes STLport reverse_iterator to be compatible with
1518.221 + * other parts of MSVC library. (With partial specialization, it just
1518.222 + * has no effect).
1518.223 + * Use it _ONLY_ if you use SGI-style reverse_iterator<> template explicitly
1518.224 + */
1518.225 +/*
1518.226 +#define _STLP_NO_MSVC50_COMPATIBILITY 1
1518.227 +*/
1518.228 +
1518.229 +/*
1518.230 + * _STLP_USE_RAW_SGI_ALLOCATORS is a hook so that users can disable use of
1518.231 + * allocator<T> as default parameter for containers, and use SGI
1518.232 + * raw allocators as default ones, without having to edit library headers.
1518.233 + * Use of this macro is strongly discouraged.
1518.234 + */
1518.235 +/*
1518.236 +#define _STLP_USE_RAW_SGI_ALLOCATORS 1
1518.237 +*/
1518.238 +
1518.239 +/*
1518.240 + * Use obsolete overloaded template functions iterator_category(), value_type(), distance_type()
1518.241 + * for querying iterator properties. Please note those names are non-standard and are not guaranteed
1518.242 + * to be used by every implementation. However, this setting is on by default when partial specialization
1518.243 + * is not implemented in the compiler and cannot be simulated (only if _STLP_NO_ANACHRONISMS is not set).
1518.244 + * Use of those interfaces for user-defined iterators is strongly discouraged:
1518.245 + * please use public inheritance from iterator<> template to achieve desired effect.
1518.246 + * Second form is to disable old-style queries in any case.
1518.247 + */
1518.248 +/*
1518.249 +#define _STLP_USE_OLD_HP_ITERATOR_QUERIES
1518.250 +#define _STLP_NO_OLD_HP_ITERATOR_QUERIES
1518.251 +*/
1518.252 +
1518.253 +
1518.254 +/*==========================================================================*/
1518.255 +
1518.256 +/* This section contains swithes which should be off by default,
1518.257 + * but so few compilers would have it undefined, so that we set them here,
1518.258 + * with the option to be turned off later in compiler-specific file
1518.259 + */
1518.260 +
1518.261 +#define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
1518.262 +#define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
1518.263 +
1518.264 +/*
1518.265 +  Local Variables:
1518.266 +  mode:C++
1518.267 +  End:
1518.268 +*/
  1519.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1519.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/stl_confix.h	Wed Mar 31 12:27:01 2010 +0100
  1519.3 @@ -0,0 +1,78 @@
  1519.4 +/*
  1519.5 + * Copyright (c) 1999 
  1519.6 + * Boris Fomitchev
  1519.7 + *
  1519.8 + * This material is provided "as is", with absolutely no warranty expressed
  1519.9 + * or implied. Any use is at your own risk.
 1519.10 + *
 1519.11 + * Permission to use or copy this software for any purpose is hereby granted 
 1519.12 + * without fee, provided the above notices are retained on all copies.
 1519.13 + * Permission to modify the code and to distribute modified code is granted,
 1519.14 + * provided the above notices are retained, and a notice that the code was
 1519.15 + * modified is included with the above copyright notice.
 1519.16 + *
 1519.17 + */
 1519.18 +
 1519.19 +/*
 1519.20 + * STLport configuration file
 1519.21 + * It is internal STLport header - DO NOT include it directly
 1519.22 + * Purpose of this file : to define STLport settings that depend on
 1519.23 + * compiler flags or can be otherwise missed
 1519.24 + *
 1519.25 + */
 1519.26 +
 1519.27 +#ifndef _STLP_CONFIX_H
 1519.28 +# define _STLP_CONFIX_H
 1519.29 +
 1519.30 +/* If, by any chance, C compiler gets there, try to help it to pass smoothly */
 1519.31 +# if ! defined (__cplusplus) && ! defined (_STLP_HAS_NO_NAMESPACES)
 1519.32 +#  define _STLP_HAS_NO_NAMESPACES
 1519.33 +# endif
 1519.34 +
 1519.35 +# if defined(__MINGW32__)
 1519.36 +#   define _STLP_NO_DRAND48
 1519.37 +# endif
 1519.38 +
 1519.39 +/* Modena C++ library  */
 1519.40 +#if defined (__MWERKS__) && __MWERKS__ <= 0x2303 || (defined (__KCC) && __KCC_VERSION < 3400)
 1519.41 +# include <mcompile.h>
 1519.42 +# define _STLP_USE_MSIPL 1
 1519.43 +# if defined (__KCC) || (defined(__MSL_CPP__) && \
 1519.44 +       ( (__MSL_CPP__ >= 0x5000 && defined( _MSL_NO_MESSAGE_FACET )) || \
 1519.45 +	 (__MSL_CPP__ < 0x5000 && defined( MSIPL_NL_TYPES )))  \
 1519.46 +	 )
 1519.47 +#  define _STLP_NO_NATIVE_MESSAGE_FACET 1
 1519.48 +# endif
 1519.49 +#endif
 1519.50 +
 1519.51 +/* common switches for EDG front-end */
 1519.52 +# if defined (__EDG_SWITCHES)
 1519.53 +#   if !(defined(_TYPENAME) || defined (_TYPENAME_IS_KEYWORD))
 1519.54 +#     undef  _STLP_NEED_TYPENAME
 1519.55 +#     define _STLP_NEED_TYPENAME 1
 1519.56 +#   endif
 1519.57 +#   if !defined(_WCHAR_T_IS_KEYWORD)
 1519.58 +#     undef _STLP_NO_WCHAR_T 
 1519.59 +#     define _STLP_NO_WCHAR_T 1
 1519.60 +#   endif
 1519.61 +#   ifndef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES
 1519.62 +#     undef _STLP_NO_CLASS_PARTIAL_SPECIALIZATION
 1519.63 +#     define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
 1519.64 +#   endif
 1519.65 +#   ifndef _MEMBER_TEMPLATES
 1519.66 +#     undef _STLP_NO_MEMBER_TEMPLATES
 1519.67 +#     define _STLP_NO_MEMBER_TEMPLATES 1
 1519.68 +#     undef _STLP_NO_MEMBER_TEMPLATE_CLASSES
 1519.69 +#     define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
 1519.70 +#   endif
 1519.71 +#   if !defined(_MEMBER_TEMPLATE_KEYWORD)
 1519.72 +#     undef  _STLP_NO_MEMBER_TEMPLATE_KEYWORD
 1519.73 +#     define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
 1519.74 +#   endif
 1519.75 +#   if !defined (__EXCEPTIONS) && ! defined (_EXCEPTIONS)
 1519.76 +#     undef  _STLP_HAS_NO_EXCEPTIONS
 1519.77 +#     define _STLP_HAS_NO_EXCEPTIONS
 1519.78 +#   endif
 1519.79 +#   undef __EDG_SWITCHES
 1519.80 +# endif /* EDG */
 1519.81 +#endif
  1520.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1520.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/stl_gcce.h	Wed Mar 31 12:27:01 2010 +0100
  1520.3 @@ -0,0 +1,244 @@
  1520.4 +/*
  1520.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1520.6 +
  1520.7 +* Redistribution and use in source and binary forms, with or without 
  1520.8 +* modification, are permitted provided that the following conditions are met:
  1520.9 +
 1520.10 +* Redistributions of source code must retain the above copyright notice, this 
 1520.11 +* list of conditions and the following disclaimer.
 1520.12 +* Redistributions in binary form must reproduce the above copyright notice, 
 1520.13 +* this list of conditions and the following disclaimer in the documentation 
 1520.14 +* and/or other materials provided with the distribution.
 1520.15 +* Neither the name of Nokia Corporation nor the names of its contributors 
 1520.16 +* may be used to endorse or promote products derived from this software 
 1520.17 +* without specific prior written permission.
 1520.18 +
 1520.19 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1520.20 +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1520.21 +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1520.22 +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1520.23 +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1520.24 +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1520.25 +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1520.26 +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1520.27 +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1520.28 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1520.29 +*
 1520.30 +* Description:
 1520.31 +*
 1520.32 +*/
 1520.33 +  
 1520.34 +// =============================================================================
 1520.35 +//	stl_gcce.h
 1520.36 +//	This is a list of settings for STLport specific to the GCCE compiler.
 1520.37 +//	Do not include this file directly.
 1520.38 +// =============================================================================
 1520.39 +
 1520.40 +# ifndef _STLP_GCCE_H
 1520.41 +#  define  _STLP_GCCE_H
 1520.42 +
 1520.43 +
 1520.44 +#if defined(__WINS__)
 1520.45 +#  pragma warning ( disable : 4018 4097 4100 4127 4244 4284 4511 4512 4514 4786 4800 ) //4355 4284  4231 4511 4512 4097 4786 4800 4018 4146 4244 4514 4127 4100 4663)
 1520.46 +#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
 1520.47 +// Uncomment if partial order of template functions is not available
 1520.48 +#  define _STLP_NO_FUNC_PARTIAL_ORDERING 1
 1520.49 +#endif
 1520.50 +
 1520.51 +#ifndef _STLP_NO_IOSTREAMS
 1520.52 +//#  define _STLP_NO_IOSTREAMS	               1
 1520.53 +#endif
 1520.54 +
 1520.55 +//#  undef  _STLP_OWN_IOSTREAMS
 1520.56 +//#define _STLP_OWN_IOSTREAMS
 1520.57 +#define _STLP_USE_NEW_IOSTREAMS
 1520.58 +//#  define _STLP_NO_NATIVE_MBSTATE_T            1
 1520.59 +//#  define _NOTHREADS                           1
 1520.60 +//#  define _STLP_NO_TYPEINFO                    1
 1520.61 +
 1520.62 +#ifndef __PLACEMENT_NEW_INLINE
 1520.63 +#ifndef __E32STD_H__
 1520.64 +#ifdef __cplusplus
 1520.65 +inline void * operator new(unsigned int, void *_P) throw() { return (_P); }
 1520.66 +inline void operator delete(void* /*aPtr*/, void* /*aBase*/) __NO_THROW {}
 1520.67 +#endif
 1520.68 +#define __PLACEMENT_NEW_INLINE
 1520.69 +#endif // E32STD_H
 1520.70 +#endif
 1520.71 +
 1520.72 +
 1520.73 +//==========================================================
 1520.74 +
 1520.75 +// the values choosen here as defaults try to give
 1520.76 +// maximum functionality on the most conservative settings
 1520.77 +
 1520.78 +// Mostly correct guess, change it for Alpha (and other environments
 1520.79 +// that has 64-bit "long")
 1520.80 +#  define _STLP_UINT32_T unsigned long
 1520.81 +
 1520.82 +
 1520.83 +// Define if wchar_t is not a unique type, and is actually a typedef to unsigned short. 
 1520.84 +// #  define _STLP_WCHAR_T_IS_USHORT 1
 1520.85 +
 1520.86 +// Uncomment if long long is available
 1520.87 + #  define _STLP_LONG_LONG long long
 1520.88 +
 1520.89 +// Uncomment if long double is not available
 1520.90 +// #  define _STLP_NO_LONG_DOUBLE 1
 1520.91 +
 1520.92 +// Uncomment this if your compiler does not support namespaces 
 1520.93 +//#  define _STLP_HAS_NO_NAMESPACES 1
 1520.94 +
 1520.95 +// Uncomment if "using" keyword does not work with template types 
 1520.96 +// # define _STLP_BROKEN_USING_DIRECTIVE 1
 1520.97 +
 1520.98 +// Uncomment this if your compiler does not support exceptions
 1520.99 +//#  define _STLP_HAS_NO_EXCEPTIONS 1
1520.100 +//#  define _STLP_USE_TRAP_LEAVE 1
1520.101 +
1520.102 +// Header <new> that comes with the compiler 
1520.103 +// does not define bad_alloc exception
1520.104 +//#if defined(__WINS__)
1520.105 +// Possibly required ???
1520.106 +#  define _STLP_NO_BAD_ALLOC  1
1520.107 +//#endif
1520.108 +
1520.109 +// Uncomment if member template methods are not available
1520.110 +// #  define _STLP_NO_MEMBER_TEMPLATES   1
1520.111 +
1520.112 +// Uncomment if member template classes are not available
1520.113 +#if defined(__WINS__)
1520.114 +#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES   1
1520.115 +#endif
1520.116 +
1520.117 +// Uncomment if friend member templates are not available
1520.118 +#if defined(__WINS__)
1520.119 +// Possibly required ???
1520.120 +//#  define _STLP_NO_FRIEND_TEMPLATES   1
1520.121 +#endif
1520.122 +
1520.123 +// Compiler does not accept friend declaration qualified with namespace name.
1520.124 +// #  define _STLP_NO_QUALIFIED_FRIENDS 1
1520.125 +
1520.126 +// Uncomment if partial specialization is not available
1520.127 +#if defined(__WINS__)
1520.128 +#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1520.129 +#endif
1520.130 +
1520.131 +// Define if class being partially specialized require full name (template parameters)
1520.132 +// of itself for method declarations
1520.133 +// #  define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1520.134 +
1520.135 +// Compiler has problems specializing members of partially 
1520.136 +// specialized class
1520.137 +// #  define _STLP_MEMBER_SPECIALIZATION_BUG
1520.138 +
1520.139 +// Compiler requires typename keyword on outline method definition 
1520.140 +// explicitly taking nested types/typedefs
1520.141 +// #define  _STLP_TYPENAME_ON_RETURN_TYPE
1520.142 +
1520.143 +// * _STLP_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
1520.144 +//   constant-initializer in the declaration of a static const data member
1520.145 +//   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
1520.146 +#if defined(__WINS__)
1520.147 +# define _STLP_STATIC_CONST_INIT_BUG
1520.148 +#endif
1520.149 +
1520.150 +// Define if default constructor for builtin integer type fails to initialize it to 0
1520.151 +// #  define _STLP_DEFAULT_CONSTRUCTOR_BUG    1
1520.152 +
1520.153 +// Defined if constructor
1520.154 +// required to explicitly call member's default constructors for const objects
1520.155 +// #  define _STLP_CONST_CONSTRUCTOR_BUG    1
1520.156 +
1520.157 +// Define this if compiler lacks <exception> header
1520.158 +#  define _STLP_NO_EXCEPTION_HEADER 1
1520.159 +
1520.160 +// Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
1520.161 +#   define _STLP_HAS_NO_NEW_C_HEADERS 1
1520.162 +
1520.163 +// uncomment if new-style headers <new> is available
1520.164 +// #  define _STLP_HAS_NEW_NEW_HEADER 1
1520.165 +
1520.166 +// uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
1520.167 +// not std::
1520.168 +// #  define _STLP_VENDOR_GLOBAL_STD
1520.169 +
1520.170 +// uncomment this if <cstdio> and the like put stuff in ::namespace,
1520.171 +// not std::
1520.172 +#  define _STLP_VENDOR_GLOBAL_CSTD
1520.173 +/*
1520.174 +#  ifdef _PTHREADS
1520.175 +#    undef  _PTHREADS
1520.176 +#  endif
1520.177 +#  ifdef _STLP_PTHREADS
1520.178 +#    undef _STLP_PTHREADS
1520.179 +#  endif
1520.180 +#  ifdef _STLP_THREADS
1520.181 +#    undef _STLP_THREADS
1520.182 +#  endif
1520.183 +*/
1520.184 +
1520.185 +#ifdef _STLP_USE_NEW_C_HEADERS
1520.186 +#undef _STLP_USE_NEW_C_HEADERS
1520.187 +#endif
1520.188 +
1520.189 +#undef _STLP_NATIVE_C_HEADER
1520.190 +#ifndef __SYMBIAN32__
1520.191 +#define _STLP_NATIVE_C_HEADER(x) <libc/##x>
1520.192 +#endif
1520.193 +#define _STLP_NATIVE_HEADER(x) <x>
1520.194 +
1520.195 +
1520.196 +
1520.197 +#  define _STLP_NO_NEW_HEADER
1520.198 +#  define _STLP_NO_THREADS
1520.199 +
1520.200 +#  define _STLP_NO_EXCEPTIONS
1520.201 +//#   define _STLP_USE_TRAP_LEAVE
1520.202 +
1520.203 +#   define _STLP_NO_OWN_IOSTREAMS
1520.204 +//#   undef  _STLP_OWN_IOSTREAMS
1520.205 +//#define _STLP_OWN_IOSTREAMS
1520.206 +#define _STLP_USE_NEW_IOSTREAMS
1520.207 +#   define _STLP_USE_NEWALLOC
1520.208 +//#   define _STLP_NO_NODE_ALLOC
1520.209 +#   define _STLP_NO_LONG_DOUBLE
1520.210 +#   define _STLP_BIG_ENDIAN
1520.211 +// this one causes recursive abs() calls
1520.212 +#   define _STLP_LABS
1520.213 +#   define _STLP_LDIV
1520.214 +#   define _STLP_CONST_CONSTRUCTOR_BUG
1520.215 +// #   define _STLP_HAS_NAMESPACES
1520.216 +
1520.217 +//#define _STLP_NO_CSTD_FUNCTION_IMPORTS
1520.218 +
1520.219 +
1520.220 +//#warning ********** COMPILER SETTINGS **********
1520.221 +// -----------------------------------------------------------------------------
1520.222 +//  wstring support
1520.223 +//  This is a bit confusing.
1520.224 +//  * _STLP_NO_WCHAR_T inhibits the standard C wchar functions (Symbian doesn't 
1520.225 +//    have them).
1520.226 +//  * _STLP_HAS_WCHAR_T triggers the typedef of wstring.  It's based on wint_t,
1520.227 +//    which isn't typedef's elsewhere, so we take care of it here.
1520.228 +// -----------------------------------------------------------------------------
1520.229 +//#define _STLP_NO_WCHAR_T  1
1520.230 +#define _STLP_HAS_WCHAR_T 1
1520.231 +//typedef unsigned int wint_t;
1520.232 +#include <wchar.h>
1520.233 +
1520.234 +#ifdef _WCHAR_T
1520.235 +#warning ********** _WCHAR_T is defined **********
1520.236 +#endif
1520.237 +
1520.238 +#define _STLP_COMPLEX_SPECIALIZATION_BUG
1520.239 +#define _STLP_USE_EXCEPTIONS
1520.240 +#define _STLP_EXTERN_RANGE_ERRORS
1520.241 +//#define _STLP_NO_FORCE_INSTANTIATE
1520.242 +//#define __BUILDING_STLPORT
1520.243 +#  define _STLP_NO_NEW_NEW_HEADER 1
1520.244 +#  define _STLP_USE_DECLSPEC
1520.245 +#define _STLP_LIBSTD_CPP_NO_STATIC_VAR_
1520.246 +
1520.247 +#endif // _STLP_GCCE_H
  1521.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1521.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/stl_rvct.h	Wed Mar 31 12:27:01 2010 +0100
  1521.3 @@ -0,0 +1,244 @@
  1521.4 +/*
  1521.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1521.6 +
  1521.7 +* Redistribution and use in source and binary forms, with or without 
  1521.8 +* modification, are permitted provided that the following conditions are met:
  1521.9 +
 1521.10 +* Redistributions of source code must retain the above copyright notice, this 
 1521.11 +* list of conditions and the following disclaimer.
 1521.12 +* Redistributions in binary form must reproduce the above copyright notice, 
 1521.13 +* this list of conditions and the following disclaimer in the documentation 
 1521.14 +* and/or other materials provided with the distribution.
 1521.15 +* Neither the name of Nokia Corporation nor the names of its contributors 
 1521.16 +* may be used to endorse or promote products derived from this software 
 1521.17 +* without specific prior written permission.
 1521.18 +
 1521.19 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1521.20 +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1521.21 +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1521.22 +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1521.23 +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1521.24 +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1521.25 +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1521.26 +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1521.27 +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1521.28 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1521.29 +*
 1521.30 +* Description:
 1521.31 +*
 1521.32 +*/
 1521.33 +  
 1521.34 +// =============================================================================
 1521.35 +//	stl_rvct.h
 1521.36 +//	This is a list of settings for STLport specific to the ARM RVCT compiler.
 1521.37 +//	Do not include this file directly.
 1521.38 +// =============================================================================
 1521.39 +
 1521.40 +# ifndef _STLP_RVCT_H
 1521.41 +#  define  _STLP_RVCT_H
 1521.42 +
 1521.43 +
 1521.44 +#if defined(__WINS__)
 1521.45 +#  pragma warning ( disable : 4018 4097 4100 4127 4244 4284 4511 4512 4514 4786 4800 ) //4355 4284  4231 4511 4512 4097 4786 4800 4018 4146 4244 4514 4127 4100 4663)
 1521.46 +#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
 1521.47 +// Uncomment if partial order of template functions is not available
 1521.48 +#  define _STLP_NO_FUNC_PARTIAL_ORDERING 1
 1521.49 +#endif
 1521.50 +
 1521.51 +#ifndef _STLP_NO_IOSTREAMS
 1521.52 +//#  define _STLP_NO_IOSTREAMS	               1
 1521.53 +#endif
 1521.54 +
 1521.55 +//#  undef  _STLP_OWN_IOSTREAMS
 1521.56 +//#define _STLP_OWN_IOSTREAMS
 1521.57 +#define _STLP_USE_NEW_IOSTREAMS
 1521.58 +//#  define _STLP_NO_NATIVE_MBSTATE_T            1
 1521.59 +//#  define _NOTHREADS                           1
 1521.60 +//#  define _STLP_NO_TYPEINFO                    1
 1521.61 +
 1521.62 +#ifndef __PLACEMENT_NEW_INLINE
 1521.63 +#ifndef __E32STD_H__
 1521.64 +#ifdef __cplusplus
 1521.65 +inline void * operator new(unsigned int, void *_P) throw() { return (_P); }
 1521.66 +inline void operator delete(void* /*aPtr*/, void* /*aBase*/) __NO_THROW {}
 1521.67 +#endif
 1521.68 +#define __PLACEMENT_NEW_INLINE
 1521.69 +#endif // E32STD_H
 1521.70 +#endif
 1521.71 +
 1521.72 +
 1521.73 +//==========================================================
 1521.74 +
 1521.75 +// the values choosen here as defaults try to give
 1521.76 +// maximum functionality on the most conservative settings
 1521.77 +
 1521.78 +// Mostly correct guess, change it for Alpha (and other environments
 1521.79 +// that has 64-bit "long")
 1521.80 +#  define _STLP_UINT32_T unsigned long
 1521.81 +
 1521.82 +
 1521.83 +// Define if wchar_t is not a unique type, and is actually a typedef to unsigned short. 
 1521.84 +// #  define _STLP_WCHAR_T_IS_USHORT 1
 1521.85 +
 1521.86 +// Uncomment if long long is available
 1521.87 + #  define _STLP_LONG_LONG long long
 1521.88 +
 1521.89 +// Uncomment if long double is not available
 1521.90 +// #  define _STLP_NO_LONG_DOUBLE 1
 1521.91 +
 1521.92 +// Uncomment this if your compiler does not support namespaces 
 1521.93 +//#  define _STLP_HAS_NO_NAMESPACES 1
 1521.94 +
 1521.95 +// Uncomment if "using" keyword does not work with template types 
 1521.96 +// # define _STLP_BROKEN_USING_DIRECTIVE 1
 1521.97 +
 1521.98 +// Uncomment this if your compiler does not support exceptions
 1521.99 +//#  define _STLP_HAS_NO_EXCEPTIONS 1
1521.100 +//#  define _STLP_USE_TRAP_LEAVE 1
1521.101 +
1521.102 +// Header <new> that comes with the compiler 
1521.103 +// does not define bad_alloc exception
1521.104 +//#if defined(__WINS__)
1521.105 +// Possibly required ???
1521.106 +#  define _STLP_NO_BAD_ALLOC  1
1521.107 +//#endif
1521.108 +
1521.109 +// Uncomment if member template methods are not available
1521.110 +// #  define _STLP_NO_MEMBER_TEMPLATES   1
1521.111 +
1521.112 +// Uncomment if member template classes are not available
1521.113 +#if defined(__WINS__)
1521.114 +#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES   1
1521.115 +#endif
1521.116 +
1521.117 +// Uncomment if friend member templates are not available
1521.118 +#if defined(__WINS__)
1521.119 +// Possibly required ???
1521.120 +//#  define _STLP_NO_FRIEND_TEMPLATES   1
1521.121 +#endif
1521.122 +
1521.123 +// Compiler does not accept friend declaration qualified with namespace name.
1521.124 +// #  define _STLP_NO_QUALIFIED_FRIENDS 1
1521.125 +
1521.126 +// Uncomment if partial specialization is not available
1521.127 +#if defined(__WINS__)
1521.128 +#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1521.129 +#endif
1521.130 +
1521.131 +// Define if class being partially specialized require full name (template parameters)
1521.132 +// of itself for method declarations
1521.133 +// #  define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1521.134 +
1521.135 +// Compiler has problems specializing members of partially 
1521.136 +// specialized class
1521.137 +// #  define _STLP_MEMBER_SPECIALIZATION_BUG
1521.138 +
1521.139 +// Compiler requires typename keyword on outline method definition 
1521.140 +// explicitly taking nested types/typedefs
1521.141 +// #define  _STLP_TYPENAME_ON_RETURN_TYPE
1521.142 +
1521.143 +// * _STLP_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
1521.144 +//   constant-initializer in the declaration of a static const data member
1521.145 +//   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
1521.146 +#if defined(__WINS__)
1521.147 +# define _STLP_STATIC_CONST_INIT_BUG
1521.148 +#endif
1521.149 +
1521.150 +// Define if default constructor for builtin integer type fails to initialize it to 0
1521.151 +// #  define _STLP_DEFAULT_CONSTRUCTOR_BUG    1
1521.152 +
1521.153 +// Defined if constructor
1521.154 +// required to explicitly call member's default constructors for const objects
1521.155 +// #  define _STLP_CONST_CONSTRUCTOR_BUG    1
1521.156 +
1521.157 +// Define this if compiler lacks <exception> header
1521.158 +#  define _STLP_NO_EXCEPTION_HEADER 1
1521.159 +
1521.160 +// Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
1521.161 +#   define _STLP_HAS_NO_NEW_C_HEADERS 1
1521.162 +
1521.163 +// uncomment if new-style headers <new> is available
1521.164 +// #  define _STLP_HAS_NEW_NEW_HEADER 1
1521.165 +
1521.166 +// uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
1521.167 +// not std::
1521.168 +// #  define _STLP_VENDOR_GLOBAL_STD
1521.169 +
1521.170 +// uncomment this if <cstdio> and the like put stuff in ::namespace,
1521.171 +// not std::
1521.172 +#  define _STLP_VENDOR_GLOBAL_CSTD
1521.173 +/*
1521.174 +#  ifdef _PTHREADS
1521.175 +#    undef  _PTHREADS
1521.176 +#  endif
1521.177 +#  ifdef _STLP_PTHREADS
1521.178 +#    undef _STLP_PTHREADS
1521.179 +#  endif
1521.180 +#  ifdef _STLP_THREADS
1521.181 +#    undef _STLP_THREADS
1521.182 +#  endif
1521.183 +*/
1521.184 +
1521.185 +#ifdef _STLP_USE_NEW_C_HEADERS
1521.186 +#undef _STLP_USE_NEW_C_HEADERS
1521.187 +#endif
1521.188 +
1521.189 +#undef _STLP_NATIVE_C_HEADER
1521.190 +#ifndef __SYMBIAN32__
1521.191 +#define _STLP_NATIVE_C_HEADER(x) <libc/##x>
1521.192 +#endif
1521.193 +#define _STLP_NATIVE_HEADER(x) <x>
1521.194 +
1521.195 +
1521.196 +
1521.197 +#  define _STLP_NO_NEW_HEADER
1521.198 +#  define _STLP_NO_THREADS
1521.199 +
1521.200 +#  define _STLP_NO_EXCEPTIONS
1521.201 +//#   define _STLP_USE_TRAP_LEAVE
1521.202 +
1521.203 +#   define _STLP_NO_OWN_IOSTREAMS
1521.204 +//#   undef  _STLP_OWN_IOSTREAMS
1521.205 +//#define _STLP_OWN_IOSTREAMS
1521.206 +#define _STLP_USE_NEW_IOSTREAMS
1521.207 +#   define _STLP_USE_NEWALLOC
1521.208 +//#   define _STLP_NO_NODE_ALLOC
1521.209 +#   define _STLP_NO_LONG_DOUBLE
1521.210 +#   define _STLP_BIG_ENDIAN
1521.211 +// this one causes recursive abs() calls
1521.212 +#   define _STLP_LABS
1521.213 +#   define _STLP_LDIV
1521.214 +#   define _STLP_CONST_CONSTRUCTOR_BUG
1521.215 +// #   define _STLP_HAS_NAMESPACES
1521.216 +
1521.217 +//#define _STLP_NO_CSTD_FUNCTION_IMPORTS 
1521.218 +
1521.219 +
1521.220 +//#warning ********** COMPILER SETTINGS **********
1521.221 +// -----------------------------------------------------------------------------
1521.222 +//  wstring support
1521.223 +//  This is a bit confusing.
1521.224 +//  * _STLP_NO_WCHAR_T inhibits the standard C wchar functions (Symbian doesn't 
1521.225 +//    have them).
1521.226 +//  * _STLP_HAS_WCHAR_T triggers the typedef of wstring.  It's based on wint_t,
1521.227 +//    which isn't typedef's elsewhere, so we take care of it here.
1521.228 +// -----------------------------------------------------------------------------
1521.229 +//#define _STLP_NO_WCHAR_T  1
1521.230 +#define _STLP_HAS_WCHAR_T 1
1521.231 +//typedef unsigned int wint_t;
1521.232 +#  include <wchar.h>
1521.233 +
1521.234 +#ifdef _WCHAR_T
1521.235 +#warning ********** _WCHAR_T is defined **********
1521.236 +#endif
1521.237 +
1521.238 +#define _STLP_COMPLEX_SPECIALIZATION_BUG
1521.239 +#define _STLP_USE_EXCEPTIONS
1521.240 +#define _STLP_EXTERN_RANGE_ERRORS
1521.241 +//#define _STLP_NO_FORCE_INSTANTIATE
1521.242 +//#define __BUILDING_STLPORT
1521.243 +#  define _STLP_NO_NEW_NEW_HEADER 1
1521.244 +#  define _STLP_USE_DECLSPEC
1521.245 +#define _STLP_LIBSTD_CPP_NO_STATIC_VAR_
1521.246 +
1521.247 +#endif // _STLP_RVCT_H
  1522.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1522.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/stl_winscw.h	Wed Mar 31 12:27:01 2010 +0100
  1522.3 @@ -0,0 +1,236 @@
  1522.4 +/*
  1522.5 +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
  1522.6 +
  1522.7 +* Redistribution and use in source and binary forms, with or without 
  1522.8 +* modification, are permitted provided that the following conditions are met:
  1522.9 +
 1522.10 +* Redistributions of source code must retain the above copyright notice, this 
 1522.11 +* list of conditions and the following disclaimer.
 1522.12 +* Redistributions in binary form must reproduce the above copyright notice, 
 1522.13 +* this list of conditions and the following disclaimer in the documentation 
 1522.14 +* and/or other materials provided with the distribution.
 1522.15 +* Neither the name of Nokia Corporation nor the names of its contributors 
 1522.16 +* may be used to endorse or promote products derived from this software 
 1522.17 +* without specific prior written permission.
 1522.18 +
 1522.19 +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 
 1522.20 +* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 1522.21 +* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 1522.22 +* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 
 1522.23 +* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 1522.24 +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 
 1522.25 +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
 1522.26 +* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 1522.27 +* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
 1522.28 +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 1522.29 +*
 1522.30 +* Description:
 1522.31 +*
 1522.32 +*/
 1522.33 +  
 1522.34 +// =============================================================================
 1522.35 +//	stl_winscw.h
 1522.36 +//	This is a list of settings for STLport specific to the Metrowerks
 1522.37 +//  CodeWarrior for Symbian compiler.  Do not include this file directly.
 1522.38 +// =============================================================================
 1522.39 +
 1522.40 +#ifndef _STLP_WINSCW
 1522.41 +#	define  _STLP_WINSCW
 1522.42 +
 1522.43 +// -----------------------------------------------------------------------------
 1522.44 +//	iostreams
 1522.45 +//	No support for these in Symbian.
 1522.46 +// -----------------------------------------------------------------------------
 1522.47 +/*
 1522.48 +#	ifndef _STLP_NO_IOSTREAMS
 1522.49 +#		define _STLP_NO_IOSTREAMS
 1522.50 +#	endif
 1522.51 +
 1522.52 +#	ifdef _STLP_OWN_IOSTREAMS
 1522.53 +#   	undef  _STLP_OWN_IOSTREAMS
 1522.54 +#	endif
 1522.55 +*/
 1522.56 +//#	define _STLP_NO_NATIVE_MBSTATE_T            1
 1522.57 +//#	define _NOTHREADS                           1
 1522.58 +//#	define _STLP_NO_TYPEINFO                    1
 1522.59 +
 1522.60 +
 1522.61 +#	ifndef __PLACEMENT_NEW_INLINE
 1522.62 +#		ifndef __E32STD_H__
 1522.63 +#  ifdef __cplusplus
 1522.64 +		inline void * operator new(unsigned int, void *_P) throw(){ return (_P); }
 1522.65 +        inline void operator delete(void* /*aPtr*/, void* /*aBase*/) __NO_THROW {}
 1522.66 +#  endif        
 1522.67 +#		define __PLACEMENT_NEW_INLINE
 1522.68 +#		endif // E32STD_H
 1522.69 +#	endif
 1522.70 +
 1522.71 +//#  undef  _STLP_OWN_IOSTREAMS
 1522.72 +//#define _STLP_OWN_IOSTREAMS
 1522.73 +#define _STLP_USE_NEW_IOSTREAMS
 1522.74 +
 1522.75 +
 1522.76 +//==========================================================
 1522.77 +
 1522.78 +// the values choosen here as defaults try to give
 1522.79 +// maximum functionality on the most conservative settings
 1522.80 +
 1522.81 +// Mostly correct guess, change it for Alpha (and other environments
 1522.82 +// that has 64-bit "long")
 1522.83 +#  define _STLP_UINT32_T unsigned long
 1522.84 +
 1522.85 +	
 1522.86 +// Define if wchar_t is not a unique type, and is actually a typedef to unsigned short. 
 1522.87 +// #  define _STLP_WCHAR_T_IS_USHORT 1
 1522.88 +
 1522.89 +// Uncomment if long long is available
 1522.90 +#  define _STLP_LONG_LONG long long
 1522.91 +
 1522.92 +// Uncomment if long double is not available
 1522.93 +// #  define _STLP_NO_LONG_DOUBLE 1
 1522.94 +
 1522.95 +// Uncomment this if your compiler does not support namespaces 
 1522.96 +//#  define _STLP_HAS_NO_NAMESPACES 1
 1522.97 +
 1522.98 +// Uncomment if "using" keyword does not work with template types 
 1522.99 +// # define _STLP_BROKEN_USING_DIRECTIVE 1
1522.100 +
1522.101 +// Uncomment this if your compiler does not support exceptions
1522.102 +//#  define _STLP_HAS_NO_EXCEPTIONS 1
1522.103 +//#  define _STLP_USE_TRAP_LEAVE 1
1522.104 +
1522.105 +// Header <new> that comes with the compiler 
1522.106 +// does not define bad_alloc exception
1522.107 +//#	if defined(__WINS__)
1522.108 +// Possibly required ???
1522.109 +#  define _STLP_NO_BAD_ALLOC  1
1522.110 +//#	endif
1522.111 +
1522.112 +// Uncomment if member template methods are not available
1522.113 +// #  define _STLP_NO_MEMBER_TEMPLATES   1
1522.114 +
1522.115 +// Uncomment if member template classes are not available
1522.116 +#	if defined(__WINS__)
1522.117 +//# 		define _STLP_NO_MEMBER_TEMPLATE_CLASSES   1
1522.118 +#	endif
1522.119 +
1522.120 +// Uncomment if friend member templates are not available
1522.121 +#if defined(__WINS__)
1522.122 +// Possibly required ???
1522.123 +//#  define _STLP_NO_FRIEND_TEMPLATES   1
1522.124 +#endif
1522.125 +
1522.126 +// Compiler does not accept friend declaration qualified with namespace name.
1522.127 +// #  define _STLP_NO_QUALIFIED_FRIENDS 1
1522.128 +
1522.129 +// Uncomment if partial specialization is not available
1522.130 +#	if defined(__WINS__)
1522.131 +//#		define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1522.132 +#	endif
1522.133 +
1522.134 +// Define if class being partially specialized require full name (template parameters)
1522.135 +// of itself for method declarations
1522.136 +// #  define _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1522.137 +
1522.138 +// Compiler has problems specializing members of partially 
1522.139 +// specialized class
1522.140 +// #  define _STLP_MEMBER_SPECIALIZATION_BUG
1522.141 +
1522.142 +// Compiler requires typename keyword on outline method definition 
1522.143 +// explicitly taking nested types/typedefs
1522.144 +// #define  _STLP_TYPENAME_ON_RETURN_TYPE
1522.145 +
1522.146 +// * _STLP_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a
1522.147 +//   constant-initializer in the declaration of a static const data member
1522.148 +//   of integer type.  (See section 9.4.2, paragraph 4, of the C++ standard.)
1522.149 +#if defined(__WINS__)
1522.150 +//#	define _STLP_STATIC_CONST_INIT_BUG
1522.151 +#endif
1522.152 +
1522.153 +// Define if default constructor for builtin integer type fails to initialize it to 0
1522.154 +// #  define _STLP_DEFAULT_CONSTRUCTOR_BUG    1
1522.155 +
1522.156 +// Defined if constructor
1522.157 +// required to explicitly call member's default constructors for const objects
1522.158 +// #  define _STLP_CONST_CONSTRUCTOR_BUG    1
1522.159 +
1522.160 +// Define this if compiler lacks <exception> header
1522.161 +#  define _STLP_NO_EXCEPTION_HEADER 1
1522.162 +
1522.163 +// Uncomment if native new-style C library headers lile <cstddef>, etc are not available.
1522.164 +#   define _STLP_HAS_NO_NEW_C_HEADERS 1
1522.165 +
1522.166 +// uncomment if new-style headers <new> is available
1522.167 +// #  define _STLP_HAS_NEW_NEW_HEADER 1
1522.168 +
1522.169 +// uncomment this if <iostream> and other STD headers put their stuff in ::namespace,
1522.170 +// not std::
1522.171 +// #  define _STLP_VENDOR_GLOBAL_STD
1522.172 +
1522.173 +// uncomment this if <cstdio> and the like put stuff in ::namespace,
1522.174 +// not std::
1522.175 +#	define _STLP_VENDOR_GLOBAL_CSTD
1522.176 +/*
1522.177 +#	ifdef _PTHREADS
1522.178 +#		undef  _PTHREADS
1522.179 +#	endif
1522.180 +#	ifdef _STLP_PTHREADS
1522.181 +#		undef _STLP_PTHREADS
1522.182 +#	endif
1522.183 +#	ifdef _STLP_THREADS
1522.184 +#		undef _STLP_THREADS
1522.185 +#	endif
1522.186 +*/
1522.187 +#	define _STLP_NATIVE_INCLUDE_PATH
1522.188 +#	define _STLP_NATIVE_C_INCLUTE_PATH
1522.189 +
1522.190 +#	define _STLP_NO_NEW_HEADER
1522.191 +#	define _STLP_NO_THREADS
1522.192 +
1522.193 +#	define _STLP_NO_EXCEPTIONS
1522.194 +
1522.195 +#   define _STLP_USE_NEWALLOC
1522.196 +//#   define _STLP_NO_NODE_ALLOC
1522.197 +#   define _STLP_NO_LONG_DOUBLE
1522.198 +#   define _STLP_BIG_ENDIAN
1522.199 +// this one causes recursive abs() calls
1522.200 +#   define _STLP_LABS
1522.201 +#   define _STLP_LDIV
1522.202 +#   define _STLP_CONST_CONSTRUCTOR_BUG
1522.203 +// #   define _STLP_HAS_NAMESPACES
1522.204 +
1522.205 +#ifdef _STLP_USE_NEW_C_HEADERS
1522.206 +#undef _STLP_USE_NEW_C_HEADERS
1522.207 +#endif
1522.208 +
1522.209 +#undef _STLP_NATIVE_C_HEADER
1522.210 +#ifndef __SYMBIAN32__
1522.211 +#define _STLP_NATIVE_C_HEADER(x) <libc/##x>
1522.212 +#endif
1522.213 +#define _STLP_NATIVE_HEADER(x) <x>
1522.214 +
1522.215 +// -----------------------------------------------------------------------------
1522.216 +//  wstring support
1522.217 +//  This is a bit confusing.
1522.218 +//  * _STLP_NO_WCHAR_T inhibits the standard C wchar functions (Symbian doesn't 
1522.219 +//    have them).
1522.220 +//  * _STLP_HAS_WCHAR_T triggers the typedef of wstring.  It's based on wint_t,
1522.221 +//    which isn't typedef's elsewhere, so we take care of it here.
1522.222 +// -----------------------------------------------------------------------------
1522.223 +//#	define _STLP_NO_WCHAR_T  1
1522.224 +#	define _STLP_HAS_WCHAR_T 1
1522.225 +#	define _STLP_WCHAR_T_IS_USHORT 1
1522.226 +#  include <wchar.h>
1522.227 +
1522.228 +#define _STLP_COMPLEX_SPECIALIZATION_BUG
1522.229 +#define _STLP_USE_EXCEPTIONS
1522.230 +#define _STLP_EXTERN_RANGE_ERRORS
1522.231 +//#define _STLP_NO_FORCE_INSTANTIATE
1522.232 +//#define __BUILDING_STLPORT
1522.233 +//#  define _STLP_USE_STDIO_IO
1522.234 +#  define _STLP_NO_NEW_NEW_HEADER
1522.235 +#  define _STLP_USE_DECLSPEC
1522.236 +#define __LIBSTD_CPP_SYMBIAN32_WSD__
1522.237 +
1522.238 +//==========================================================
1522.239 +#endif  // _STLP_WINSCW
  1523.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1523.2 +++ b/epoc32/include/stdapis/stlportv5/stl/config/user_config.h	Wed Mar 31 12:27:01 2010 +0100
  1523.3 @@ -0,0 +1,312 @@
  1523.4 +/*
  1523.5 + * Copyright (c) 1999
  1523.6 + * Boris Fomitchev
  1523.7 + *
  1523.8 + * This material is provided "as is", with absolutely no warranty expressed
  1523.9 + * or implied. Any use is at your own risk.
 1523.10 + *
 1523.11 + * Permission to use or copy this software for any purpose is hereby granted
 1523.12 + * without fee, provided the above notices are retained on all copies.
 1523.13 + * Permission to modify the code and to distribute modified code is granted,
 1523.14 + * provided the above notices are retained, and a notice that the code was
 1523.15 + * modified is included with the above copyright notice.
 1523.16 + */
 1523.17 +
 1523.18 +/*
 1523.19 + * Purpose of this file :
 1523.20 + *
 1523.21 + * To hold user-definable portion of STLport settings which may be overridden
 1523.22 + * on per-project basis.
 1523.23 + * Please note that if you use STLport iostreams (compiled library) then you have
 1523.24 + * to use consistent settings when you compile STLport library and your project.
 1523.25 + * Those settings are defined in host.h and have to be the same for a given
 1523.26 + * STLport installation.
 1523.27 + */
 1523.28 +
 1523.29 +
 1523.30 +/*==========================================================
 1523.31 + * User-settable macros that control compilation:
 1523.32 + *              Features selection
 1523.33 + *==========================================================*/
 1523.34 +
 1523.35 +/*
 1523.36 + * Use this switch for embedded systems where no iostreams are available
 1523.37 + * at all. STLport own iostreams will also get disabled automatically then.
 1523.38 + * You can either use STLport iostreams, or no iostreams.
 1523.39 + * If you want iostreams, you have to compile library in ../build/lib
 1523.40 + * and supply resulting library at link time.
 1523.41 + */
 1523.42 +/*
 1523.43 +#define _STLP_NO_IOSTREAMS 1
 1523.44 +*/
 1523.45 +
 1523.46 +/*
 1523.47 + * Set _STLP_DEBUG to turn the "Debug Mode" on.
 1523.48 + * That gets you checked iterators/ranges in the manner
 1523.49 + * of "Safe STL". Very useful for debugging. Thread-safe.
 1523.50 + * Please do not forget to link proper STLport library flavor
 1523.51 + * (e.g libstlportstlg.so or libstlportstlg.a) when you set this flag
 1523.52 + * in STLport iostreams mode, namespace customization guaranty that you
 1523.53 + * link to the right library.
 1523.54 + */
 1523.55 +/*
 1523.56 +#define _STLP_DEBUG 1
 1523.57 +*/
 1523.58 +/*
 1523.59 + * You can also choose the debug level:
 1523.60 + * STLport debug level: Default value
 1523.61 + *                      Check only what the STLport implementation consider as invalid.
 1523.62 + *                      It also change the iterator invalidation schema.
 1523.63 + * Standard debug level: Check for all operations the standard consider as "undefined behavior"
 1523.64 + *                       even if STlport implement it correctly. It also invalidates iterators
 1523.65 + *                       more often.
 1523.66 + */
 1523.67 +/*
 1523.68 +#define   _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL
 1523.69 +#define   _STLP_DEBUG_LEVEL _STLP_STANDARD_DBG_LEVEL
 1523.70 +*/
 1523.71 +/* When an inconsistency is detected by the 'safe STL' the program will abort.
 1523.72 + * If you prefer an exception define the following macro. The thrown exception
 1523.73 + * will be the Standard runtime_error exception.
 1523.74 + */
 1523.75 +/*
 1523.76 +#define _STLP_DEBUG_MODE_THROWS
 1523.77 + */
 1523.78 +
 1523.79 +/*
 1523.80 + * _STLP_NO_CUSTOM_IO : define this if you do not instantiate basic_xxx iostream
 1523.81 + * classes with custom types (which is most likely the case). Custom means types
 1523.82 + * other than char, wchar_t, char_traits<> and allocator<> like
 1523.83 + * basic_ostream<my_char_type, my_traits<my_char_type> > or
 1523.84 + * basic_string<char, char_traits<char>, my_allocator >
 1523.85 + * When this option is on, most non-inline template functions definitions for iostreams
 1523.86 + * are not seen by the client which saves a lot of compile time for most compilers,
 1523.87 + * also object and executable size for some.
 1523.88 + * Default is off, just not to break compilation for those who do use those types.
 1523.89 + * That also guarantees that you still use optimized standard i/o when you compile
 1523.90 + * your program without optimization. Option does not affect STLport library build; you
 1523.91 + * may use the same binary library with and without this option, on per-project basis.
 1523.92 + */
 1523.93 +/*
 1523.94 +#define _STLP_NO_CUSTOM_IO
 1523.95 +*/
 1523.96 +
 1523.97 +/*
 1523.98 + * _STLP_NO_RELOPS_NAMESPACE: if defined, don't put the relational
 1523.99 + * operator templates (>, <=. >=, !=) in namespace std::rel_ops, even
1523.100 + * if the compiler supports namespaces.
1523.101 + * Note : if the compiler do not support namespaces, those operators are not be provided by default,
1523.102 + * to simulate hiding them into rel_ops. This was proved to resolve many compiler bugs with ambiguity.
1523.103 + */
1523.104 +/*
1523.105 +#define _STLP_NO_RELOPS_NAMESPACE 1
1523.106 +*/
1523.107 +
1523.108 +/*
1523.109 + * If _STLP_USE_OWN_NAMESPACE is in effect, STLport by default will try
1523.110 + * to rename std:: for the user to stlport::. If you do not want this feature,
1523.111 + * please define the following switch and then use stlport::
1523.112 + */
1523.113 +/*
1523.114 +#define _STLP_DONT_REDEFINE_STD 1
1523.115 +*/
1523.116 +
1523.117 +/*
1523.118 + * _STLP_WHOLE_NATIVE_STD : only meaningful in _STLP_USE_OWN_NAMESPACE mode.
1523.119 + * Normally, STLport only imports necessary components from native std:: namespace -
1523.120 + * those not yet provided by STLport (<iostream>, <complex>, etc.)
1523.121 + * and their dependencies (<string>, <stdexcept>).
1523.122 + * You might want everything from std:: being available in std:: namespace when you
1523.123 + * include corresponding STLport header (like STLport <map> provides std::map as well, etc.),
1523.124 + * if you are going to use both stlport:: and std:: components in your code.
1523.125 + * Otherwise this option is not recommended as it increases the size of your object files
1523.126 + * and slows down compilation.
1523.127 + */
1523.128 +/*
1523.129 +#define _STLP_WHOLE_NATIVE_STD
1523.130 +*/
1523.131 +
1523.132 +/*
1523.133 + * Use this option to catch uninitialized members in your classes.
1523.134 + * When it is set, construct() and destroy() fill the class storage
1523.135 + * with _STLP_SHRED_BYTE (see below).
1523.136 + * Note : _STLP_DEBUG and _STLP_DEBUG_ALLOC don't set this option automatically.
1523.137 + */
1523.138 +/*
1523.139 +#define _STLP_DEBUG_UNINITIALIZED 1
1523.140 +#define _STLP_DEBUG_ALLOC 1
1523.141 +*/
1523.142 +
1523.143 +/*
1523.144 + * Uncomment and provide a definition for the byte with which raw memory
1523.145 + * will be filled if _STLP_DEBUG_ALLOC or _STLP_DEBUG_UNINITIALIZED is defined.
1523.146 + * Choose a value which is likely to cause a noticeable problem if dereferenced
1523.147 + * or otherwise abused. A good value may already be defined for your platform; see
1523.148 + * stl/_config.h
1523.149 + */
1523.150 +/*
1523.151 +#define _STLP_SHRED_BYTE 0xA3
1523.152 +*/
1523.153 +
1523.154 +/*
1523.155 + *  This option is for gcc users only and only affects systems where native linker
1523.156 + *  does not let gcc to implement automatic instantiation of static template data members/
1523.157 + *  It is being put in this file as there is no way to check if we are using GNU ld automatically,
1523.158 + *  so it becomes user's responsibility.
1523.159 + */
1523.160 +/*
1523.161 +#define _STLP_GCC_USES_GNU_LD
1523.162 +*/
1523.163 +
1523.164 +/*==========================================================
1523.165 + * Compatibility section
1523.166 + *==========================================================*/
1523.167 +
1523.168 +/*
1523.169 + *  Define this macro to disable anachronistic constructs (like the ones used in HP STL and
1523.170 + *  not included in final standard, etc.
1523.171 + */
1523.172 +/*
1523.173 +#define _STLP_NO_ANACHRONISMS 1
1523.174 +*/
1523.175 +
1523.176 +/*
1523.177 + *  Define this macro to disable STLport extensions (for example, to make sure your code will
1523.178 + *  compile with some other implementation )
1523.179 + */
1523.180 +/*
1523.181 +#define _STLP_NO_EXTENSIONS 1
1523.182 +*/
1523.183 +
1523.184 +/*
1523.185 + * You should define this macro if compiling with MFC - STLport <stl/_config.h>
1523.186 + * then include <afx.h> instead of <windows.h> to get synchronisation primitives
1523.187 + */
1523.188 +/*
1523.189 +#define _STLP_USE_MFC 1
1523.190 +*/
1523.191 +
1523.192 +/*
1523.193 + * boris : this setting is here as we cannot detect precense of new Platform SDK automatically
1523.194 + * If you are using new PSDK with VC++ 6.0 or lower,
1523.195 + * please define this to get correct prototypes for InterlockedXXX functions
1523.196 + */
1523.197 +/*
1523.198 +#define _STLP_NEW_PLATFORM_SDK 1
1523.199 +*/
1523.200 +
1523.201 +/*
1523.202 + * For the same reason as the one above we are not able to detect easily use
1523.203 + * of the compiler coming with the Platform SDK instead of the one coming with
1523.204 + * a Microsoft Visual Studio release. This change native C/C++ library location
1523.205 + * and implementation, please define this to get correct STLport configuration.
1523.206 + */
1523.207 +/*
1523.208 +#define _STLP_USING_PLATFORM_SDK_COMPILER 1
1523.209 +*/
1523.210 +
1523.211 +/*
1523.212 + * Some compilers support the automatic linking feature.
1523.213 + * Uncomment the following if you prefer to specify the STLport library
1523.214 + * to link with yourself.
1523.215 + * For the moment, this feature is only supported and implemented within STLport
1523.216 + * by the Microsoft compilers.
1523.217 + */
1523.218 +/*
1523.219 +#define _STLP_DONT_USE_AUTO_LINK 1
1523.220 +*/
1523.221 +
1523.222 +/*
1523.223 + * If you customize the STLport generated library names don't forget to give
1523.224 + * the motif you used during configuration here if you still want the auto link
1523.225 + * to work. (Do not remove double quotes in the macro value)
1523.226 + */
1523.227 +/*
1523.228 +#define _STLP_LIB_NAME_MOTIF "???"
1523.229 + */
1523.230 +
1523.231 +/*
1523.232 + * When using automatic linking (see above), output a message that tells the
1523.233 + * user which lib is getting linked via 'pragma message(..)'.
1523.234 + * This setting has no effect if automatic linking is not active.
1523.235 + */
1523.236 +/*
1523.237 +#define _STLP_VERBOSE_AUTO_LINK 1
1523.238 +*/
1523.239 +
1523.240 +/*
1523.241 + * Use minimum set of default arguments on template classes that have more
1523.242 + * than one - for example map<>, set<>.
1523.243 + * This has effect only if _STLP_LIMITED_DEFAULT_TEMPLATES is on.
1523.244 + * If _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS is set, you'll be able to compile
1523.245 + * set<T> with those compilers, but you'll have to use __set__<T, less<T>>
1523.246 + *
1523.247 + * Affects : map<>, multimap<>, set<>, multiset<>, hash_*<>,
1523.248 + * queue<>, priority_queue<>, stack<>, istream_iterator<>
1523.249 + */
1523.250 +/*
1523.251 +#define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS 1
1523.252 +*/
1523.253 +
1523.254 +/*
1523.255 + * The agregation of strings using the + operator is an expensive operation
1523.256 + * as it requires construction of temporary objects that need memory allocation
1523.257 + * and deallocation. The problem can be even more important if you are adding
1523.258 + * several strings together in a single expression. To avoid this problem STLport
1523.259 + * implement expression template. With this technique addition of 2 strings is not
1523.260 + * a string anymore but a temporary object having a reference to each of the
1523.261 + * original strings involved in the expression. This object carry information
1523.262 + * directly to the destination string to set its size correctly and only make
1523.263 + * a single call to the allocator. This technique also works for the addition of
1523.264 + * N elements where elements are basic_string, C string or a single character.
1523.265 + * The drawback can be longer compilation time and bigger executable size.
1523.266 + * STLport rebuild: Yes
1523.267 + */
1523.268 +/*
1523.269 +#define _STLP_USE_TEMPLATE_EXPRESSION 1
1523.270 +*/
1523.271 +
1523.272 +/*
1523.273 + * By default the STLport basic_string implementation use a little static buffer
1523.274 + * (of 16 chars when writing this doc) to avoid systematically memory allocation
1523.275 + * in case of little basic_string. The drawback of such a method is bigger
1523.276 + * basic_string size and some performance penalty for method like swap. If you
1523.277 + * prefer systematical dynamic allocation turn on this macro.
1523.278 + * STLport rebuild: Yes
1523.279 + */
1523.280 +/*
1523.281 +#define _STLP_DONT_USE_SHORT_STRING_OPTIM 1
1523.282 +*/
1523.283 +
1523.284 +/*
1523.285 + * To reduce the famous code bloat trouble due to the use of templates STLport grant
1523.286 + * a specialization of some containers for pointer types. So all instanciations
1523.287 + * of those containers with a pointer type will use the same implementation based on
1523.288 + * a container of void*. This feature has show very good result on object files size
1523.289 + * but after link phase and optimization you will only experiment benefit if you use
1523.290 + * many container with pointer types.
1523.291 + */
1523.292 +/*
1523.293 +#define _STLP_USE_PTR_SPECIALIZATIONS 1
1523.294 +*/
1523.295 +
1523.296 +/*
1523.297 + * To achieve many different optimizations within the template implementations STLport
1523.298 + * uses some type traits technique. With this macro you can ask STLport to use the famous
1523.299 + * boost type traits rather than the internal one. The advantages are more compiler
1523.300 + * integration and a better support. If you only define this macro once the STLport has been
1523.301 + * built you just have to add the boost install path within your include path. If you want
1523.302 + * to use this feature at STLport built time you will have to define the
1523.303 + * STLP_BUILD_BOOST_PATH enrironment variable with the value of the boost library path.
1523.304 + */
1523.305 +/*
1523.306 +#define _STLP_USE_BOOST_SUPPORT 1
1523.307 +*/
1523.308 +
1523.309 +/*==========================================================*/
1523.310 +
1523.311 +/*
1523.312 +  Local Variables:
1523.313 +  mode: C++
1523.314 +  End:
1523.315 +*/
  1524.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1524.2 +++ b/epoc32/include/stdapis/stlportv5/stl/msl_string.h	Wed Mar 31 12:27:01 2010 +0100
  1524.3 @@ -0,0 +1,42 @@
  1524.4 +/*
  1524.5 + * Copyright (c) 1998
  1524.6 + * Mark of the Unicorn, Inc.
  1524.7 + *
  1524.8 + * Permission to use, copy, modify, distribute and sell this software
  1524.9 + * and its documentation for any purpose is hereby granted without fee,
 1524.10 + * provided that the above copyright notice appear in all copies and
 1524.11 + * that both that copyright notice and this permission notice appear
 1524.12 + * in supporting documentation.  Mark of the Unicorn, Inc. makes no
 1524.13 + * representations about the suitability of this software for any
 1524.14 + * purpose.  It is provided "as is" without express or implied warranty.
 1524.15 + *
 1524.16 + */
 1524.17 +#if defined( _STLP_USE_MSIPL ) && !defined( _STLP_MSL_STRING_H_ )
 1524.18 +#define _STLP_MSL_STRING_H_
 1524.19 +
 1524.20 +//# define char_traits __msl_char_traits
 1524.21 +# define basic_string __msl_basic_string
 1524.22 +# define b_str_ref __msl_b_str_ref
 1524.23 +# define basic_istream __msl_basic_istream
 1524.24 +# define basic_ostream __msl_basic_ostream
 1524.25 +# define string __msl_string
 1524.26 +# define wstring __msl_wstring
 1524.27 +# define iterator_traits __msl_iterator_traits
 1524.28 +
 1524.29 +namespace std
 1524.30 +{
 1524.31 +	template<class charT, class traits> class basic_istream;
 1524.32 +	template<class charT, class traits> class basic_ostream;
 1524.33 +}
 1524.34 +
 1524.35 +# include _STLP_NATIVE_HEADER(string)
 1524.36 +// # undef char_traits
 1524.37 +# undef basic_string
 1524.38 +# undef b_str_ref
 1524.39 +# undef basic_istream
 1524.40 +# undef basic_ostream
 1524.41 +# undef string
 1524.42 +# undef wstring
 1524.43 +# undef iterator_traits
 1524.44 +
 1524.45 +#endif
  1525.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1525.2 +++ b/epoc32/include/stdapis/stlportv5/stl/type_manips.h	Wed Mar 31 12:27:01 2010 +0100
  1525.3 @@ -0,0 +1,328 @@
  1525.4 +/*
  1525.5 + *
  1525.6 + * Copyright (c) 2003
  1525.7 + * François Dumont
  1525.8 + *
  1525.9 + * This material is provided "as is", with absolutely no warranty expressed
 1525.10 + * or implied. Any use is at your own risk.
 1525.11 + *
 1525.12 + * Permission to use or copy this software for any purpose is hereby granted
 1525.13 + * without fee, provided the above notices are retained on all copies.
 1525.14 + * Permission to modify the code and to distribute modified code is granted,
 1525.15 + * provided the above notices are retained, and a notice that the code was
 1525.16 + * modified is included with the above copyright notice.
 1525.17 + *
 1525.18 + */
 1525.19 +
 1525.20 +
 1525.21 +#ifndef _STLP_TYPE_MANIPS_H
 1525.22 +#define _STLP_TYPE_MANIPS_H
 1525.23 +
 1525.24 +# if defined (__GNUC__) && (__GNUC__ > 3)
 1525.25 +// See comment below
 1525.26 +#  include <bits/cpp_type_traits.h>
 1525.27 +# endif
 1525.28 +
 1525.29 +_STLP_BEGIN_NAMESPACE
 1525.30 +
 1525.31 +/*
 1525.32 + * gcc (libstdc++) define __true_type in different headers, and while
 1525.33 + * in gcc 3.x it in bits/type_traits.h that included only from headers
 1525.34 + * that not included from STLport; in gcc 4.x it defined in
 1525.35 + * bits/cpp_type_traits.h, that included well... from cmath for example
 1525.36 + *
 1525.37 + * libstdc++ v3,       __GLIBCXX__ 20050519 (3.4.4) use variant 1,
 1525.38 + * libstdc++ v3,       __GLIBCXX__ 20060306 (3.4.6) use variant 1,
 1525.39 + * while libstdc++ v3, __GLIBCXX__ 20050921 (4.0.2) use variant 2,
 1525.40 + *                     __GLIBCXX__ 20060524 (4.1.1) use variant 2
 1525.41 + * muddle in libstdc++ versions...
 1525.42 + *
 1525.43 + */
 1525.44 +# if defined (__GNUC__) && (__GNUC__ > 3)
 1525.45 +using ::__true_type;
 1525.46 +using ::__false_type;
 1525.47 +# else
 1525.48 +struct __true_type {};
 1525.49 +struct __false_type {};
 1525.50 +# endif
 1525.51 +
 1525.52 +#if defined (_STLP_USE_NAMESPACES)
 1525.53 +_STLP_MOVE_TO_PRIV_NAMESPACE
 1525.54 +using _STLP_STD::__true_type;
 1525.55 +using _STLP_STD::__false_type;
 1525.56 +_STLP_MOVE_TO_STD_NAMESPACE
 1525.57 +#endif
 1525.58 +
 1525.59 +//bool to type
 1525.60 +template <int _Is>
 1525.61 +struct __bool2type
 1525.62 +{ typedef __true_type _Ret; };
 1525.63 +
 1525.64 +_STLP_TEMPLATE_NULL
 1525.65 +struct __bool2type<1> { typedef __true_type _Ret; };
 1525.66 +
 1525.67 +_STLP_TEMPLATE_NULL
 1525.68 +struct __bool2type<0> { typedef __false_type _Ret; };
 1525.69 +
 1525.70 +//type to bool
 1525.71 +template <class __bool_type>
 1525.72 +struct __type2bool { enum {_Ret = 1}; };
 1525.73 +
 1525.74 +_STLP_TEMPLATE_NULL
 1525.75 +struct __type2bool<__true_type> { enum {_Ret = 1}; };
 1525.76 +
 1525.77 +_STLP_TEMPLATE_NULL
 1525.78 +struct __type2bool<__false_type> { enum {_Ret = 0}; };
 1525.79 +
 1525.80 +//Negation
 1525.81 +template <class _BoolType>
 1525.82 +struct _Not { typedef __false_type _Ret; };
 1525.83 +
 1525.84 +_STLP_TEMPLATE_NULL
 1525.85 +struct _Not<__false_type> { typedef __true_type _Ret; };
 1525.86 +
 1525.87 +// logical and of 2 predicated
 1525.88 +template <class _P1, class _P2>
 1525.89 +struct _Land2 { typedef __false_type _Ret; };
 1525.90 +
 1525.91 +_STLP_TEMPLATE_NULL
 1525.92 +struct _Land2<__true_type, __true_type> { typedef __true_type _Ret; };
 1525.93 +
 1525.94 +// logical and of 3 predicated
 1525.95 +template <class _P1, class _P2, class _P3>
 1525.96 +struct _Land3 { typedef __false_type _Ret; };
 1525.97 +
 1525.98 +_STLP_TEMPLATE_NULL
 1525.99 +struct _Land3<__true_type, __true_type, __true_type> { typedef __true_type _Ret; };
1525.100 +
1525.101 +//logical or of 2 predicated
1525.102 +template <class _P1, class _P2>
1525.103 +struct _Lor2 { typedef __true_type _Ret; };
1525.104 +
1525.105 +_STLP_TEMPLATE_NULL
1525.106 +struct _Lor2<__false_type, __false_type> { typedef __false_type _Ret; };
1525.107 +
1525.108 +// logical or of 3 predicated
1525.109 +template <class _P1, class _P2, class _P3>
1525.110 +struct _Lor3 { typedef __true_type _Ret; };
1525.111 +
1525.112 +_STLP_TEMPLATE_NULL
1525.113 +struct _Lor3<__false_type, __false_type, __false_type> { typedef __false_type _Ret; };
1525.114 +
1525.115 +////////////////////////////////////////////////////////////////////////////////
1525.116 +// class template __select
1525.117 +// Selects one of two types based upon a boolean constant
1525.118 +// Invocation: __select<_Cond, T, U>::Result
1525.119 +// where:
1525.120 +// flag is a compile-time boolean constant
1525.121 +// T and U are types
1525.122 +// Result evaluates to T if flag is true, and to U otherwise.
1525.123 +////////////////////////////////////////////////////////////////////////////////
1525.124 +// BEWARE: If the compiler do not support partial template specialization or nested template
1525.125 +//classes the default behavior of the __select is to consider the condition as false and so return
1525.126 +//the second template type!!
1525.127 +
1525.128 +#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1525.129 +template <bool _Cond, class _Tp1, class _Tp2>
1525.130 +struct __select { typedef _Tp1 _Ret; };
1525.131 +
1525.132 +template <class _Tp1, class _Tp2>
1525.133 +struct __select<false, _Tp1, _Tp2> { typedef _Tp2 _Ret; };
1525.134 +
1525.135 +#  if defined (__BORLANDC__)
1525.136 +template <class _CondT, class _Tp1, class _Tp2>
1525.137 +struct __selectT { typedef _Tp1 _Ret; };
1525.138 +
1525.139 +template <class _Tp1, class _Tp2>
1525.140 +struct __selectT<__false_type, _Tp1, _Tp2> { typedef _Tp2 _Ret; };
1525.141 +#  endif
1525.142 +
1525.143 +#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1525.144 +
1525.145 +#  if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1525.146 +template <int _Cond>
1525.147 +struct __select_aux {
1525.148 +  template <class _Tp1, class _Tp2>
1525.149 +  struct _In {
1525.150 +    typedef _Tp1 _Ret;
1525.151 +  };
1525.152 +};
1525.153 +
1525.154 +_STLP_TEMPLATE_NULL
1525.155 +struct __select_aux<0> {
1525.156 +  template <class _Tp1, class _Tp2>
1525.157 +  struct _In {
1525.158 +    typedef _Tp2 _Ret;
1525.159 +  };
1525.160 +};
1525.161 +
1525.162 +template <int _Cond, class _Tp1, class _Tp2>
1525.163 +struct __select {
1525.164 +  typedef typename __select_aux<_Cond>::_STLP_TEMPLATE _In<_Tp1, _Tp2>::_Ret _Ret;
1525.165 +};
1525.166 +#  else /* _STLP_MEMBER_TEMPLATE_CLASSES */
1525.167 +//default behavior
1525.168 +template <int _Cond, class _Tp1, class _Tp2>
1525.169 +struct __select {
1525.170 +  typedef _Tp2 _Ret;
1525.171 +};
1525.172 +#  endif /* _STLP_MEMBER_TEMPLATE_CLASSES */
1525.173 +
1525.174 +#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1525.175 +
1525.176 +#if defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
1525.177 +// Boris : simulation technique is used here according to Adobe Open Source License Version 1.0.
1525.178 +// Copyright 2000 Adobe Systems Incorporated and others. All rights reserved.
1525.179 +// Authors: Mat Marcus and Jesse Jones
1525.180 +// The original version of this source code may be found at
1525.181 +// http://opensource.adobe.com.
1525.182 +
1525.183 +// These are the discriminating functions
1525.184 +template <class _Tp>
1525.185 +char _STLP_CALL _IsSameFun(bool, _Tp const volatile*, _Tp const volatile*); // no implementation is required
1525.186 +char* _STLP_CALL _IsSameFun(bool, ...);       // no implementation is required
1525.187 +
1525.188 +template <class _Tp1, class _Tp2>
1525.189 +struct _IsSame {
1525.190 +  static _Tp1* __null_rep1();
1525.191 +  static _Tp2* __null_rep2();
1525.192 +  enum { _Ret = (sizeof(_IsSameFun(false,__null_rep1(), __null_rep2())) == sizeof(char)) };
1525.193 +  typedef typename __bool2type<_Ret>::_Ret _RetT;
1525.194 +};
1525.195 +
1525.196 +#else
1525.197 +
1525.198 +template <class _Tp1, class _Tp2>
1525.199 +struct _IsSameAux {
1525.200 +  typedef __false_type _RetT;
1525.201 +  enum { _Ret = 0 };
1525.202 +};
1525.203 +
1525.204 +template <class _Tp>
1525.205 +struct _UnConstType { typedef _Tp _Type; };
1525.206 +
1525.207 +template <class _Tp>
1525.208 +struct _UnVolatileType { typedef _Tp _Type; };
1525.209 +
1525.210 +template <class _Tp>
1525.211 +struct _UnCVType {
1525.212 +  typedef typename _UnVolatileType<_Tp>::_Type _UnVType;
1525.213 +  typedef typename _UnConstType<_UnVType>::_Type _Type;
1525.214 +};
1525.215 +
1525.216 +#  if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1525.217 +template <class _Tp>
1525.218 +struct _IsSameAux<_Tp, _Tp> {
1525.219 +  typedef __true_type _RetT;
1525.220 +  enum { _Ret = 1 };
1525.221 +};
1525.222 +
1525.223 +#    if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
1525.224 +template <class _Tp>
1525.225 +struct _UnConstType<const _Tp> { typedef _Tp _Type; };
1525.226 +
1525.227 +template <class _Tp>
1525.228 +struct _UnVolatileType<volatile _Tp> { typedef _Tp _Type; };
1525.229 +#    endif
1525.230 +
1525.231 +#    if defined(__BORLANDC__)
1525.232 +template<class _Tp>
1525.233 +struct _UnConstPtr { typedef _Tp _Type; };
1525.234 +
1525.235 +template<class _Tp>
1525.236 +struct _UnConstPtr<_Tp*> { typedef _Tp _Type; };
1525.237 +
1525.238 +template<class _Tp>
1525.239 +struct _UnConstPtr<const _Tp*> { typedef _Tp _Type; };
1525.240 +#    endif
1525.241 +#  endif
1525.242 +
1525.243 +template <class _Tp1, class _Tp2>
1525.244 +struct _IsSame {
1525.245 +  typedef typename _UnCVType<_Tp1>::_Type _Type1;
1525.246 +  typedef typename _UnCVType<_Tp2>::_Type _Type2;
1525.247 +
1525.248 +  typedef _IsSameAux<_Type1, _Type2> _Aux;
1525.249 +  enum { _Ret = _Aux::_Ret };
1525.250 +  typedef typename _Aux::_RetT _RetT;
1525.251 +};
1525.252 +#endif
1525.253 +
1525.254 +/*
1525.255 + * The following struct will tell you if 2 types are the same, the limitations are:
1525.256 + *  - it compares the types without the const or volatile qualifiers, int and const int
1525.257 + *    will be considered as same for instance.
1525.258 + *  - the previous remarks do not apply to pointer types, int* and int const* won't be
1525.259 + *    considered as comparable. (int * and int *const are).
1525.260 + */
1525.261 +template <class _Tp1, class _Tp2>
1525.262 +struct _AreSameUnCVTypes {
1525.263 +  enum { _Same = _IsSame<_Tp1, _Tp2>::_Ret };
1525.264 +  typedef typename _IsSame<_Tp1, _Tp2>::_RetT _Ret;
1525.265 +};
1525.266 +
1525.267 +/* Rather than introducing a new macro for the following constrution we use
1525.268 + * an existing one (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) that
1525.269 + * is used for a similar feature.
1525.270 + */
1525.271 +#if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
1525.272 +template <class _Src, class _Dst>
1525.273 +struct _ConversionHelper {
1525.274 +  static char _Test(bool, _Dst);
1525.275 +  static char* _Test(bool, ...);
1525.276 +  static _Src _MakeSource();
1525.277 +};
1525.278 +
1525.279 +template <class _Src, class _Dst>
1525.280 +struct _IsConvertible {
1525.281 +  typedef _ConversionHelper<_Src*, const volatile _Dst*> _H;
1525.282 +  enum { value = (sizeof(char) == sizeof(_H::_Test(false, _H::_MakeSource()))) };
1525.283 +  typedef typename __bool2type<value>::_Ret _Ret;
1525.284 +};
1525.285 +
1525.286 +/* This struct is intended to say if a pointer can be convertible to an other
1525.287 + * taking into account cv qualifications. It shouldn't be instanciated with
1525.288 + * something else than pointer type as it uses pass by value parameter that
1525.289 + * results in compilation error when parameter type has a special memory
1525.290 + * alignment
1525.291 + */
1525.292 +template <class _Src, class _Dst>
1525.293 +struct _IsCVConvertible {
1525.294 +#if !defined (__BORLANDC__)
1525.295 +  typedef _ConversionHelper<_Src, _Dst> _H;
1525.296 +  enum { value = (sizeof(char) == sizeof(_H::_Test(false, _H::_MakeSource()))) };
1525.297 +#else
1525.298 +  enum { _Is1 = __type2bool<_IsConst<_Src>::_Ret>::_Ret };
1525.299 +  enum { _Is2 = _IsConvertible<_UnConstPtr<_Src>::_Type, _UnConstPtr<_Dst>::_Type>::value };
1525.300 +  enum { value = _Is1 ? 0 : _Is2 };
1525.301 +#endif
1525.302 +  typedef typename __bool2type<value>::_Ret _Ret;
1525.303 +};
1525.304 +
1525.305 +#else
1525.306 +template <class _Src, class _Dst>
1525.307 +struct _IsConvertible {
1525.308 +  enum {value = 0};
1525.309 +  typedef __false_type _Ret;
1525.310 +};
1525.311 +#endif
1525.312 +
1525.313 +template <class _Tp>
1525.314 +struct _IsConst { typedef __false_type _Ret; };
1525.315 +
1525.316 +#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
1525.317 +template <class _Tp>
1525.318 +struct _IsConst <const _Tp> { typedef __true_type _Ret; };
1525.319 +#endif
1525.320 +
1525.321 +#  if defined(__BORLANDC__)
1525.322 +template<class _Tp>
1525.323 +struct _IsConst <const _Tp*> { typedef __true_type _Ret; };
1525.324 +
1525.325 +template<class _Tp>
1525.326 +struct _IsConst <const volatile _Tp*> { typedef __true_type _Ret; };
1525.327 +#  endif
1525.328 +
1525.329 +_STLP_END_NAMESPACE
1525.330 +
1525.331 +#endif /* _STLP_TYPE_MANIPS_H */
  1526.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1526.2 +++ b/epoc32/include/stdapis/stlportv5/stl/type_traits.h	Wed Mar 31 12:27:01 2010 +0100
  1526.3 @@ -0,0 +1,418 @@
  1526.4 +/*
  1526.5 + *
  1526.6 + * Copyright (c) 1996,1997
  1526.7 + * Silicon Graphics Computer Systems, Inc.
  1526.8 + *
  1526.9 + * Copyright (c) 1997
 1526.10 + * Moscow Center for SPARC Technology
 1526.11 + *
 1526.12 + * Copyright (c) 1999 
 1526.13 + * Boris Fomitchev
 1526.14 + *
 1526.15 + * This material is provided "as is", with absolutely no warranty expressed
 1526.16 + * or implied. Any use is at your own risk.
 1526.17 + *
 1526.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1526.19 + * without fee, provided the above notices are retained on all copies.
 1526.20 + * Permission to modify the code and to distribute modified code is granted,
 1526.21 + * provided the above notices are retained, and a notice that the code was
 1526.22 + * modified is included with the above copyright notice.
 1526.23 + *
 1526.24 + */
 1526.25 +
 1526.26 +#ifndef _STLP_TYPE_TRAITS_H
 1526.27 +#define _STLP_TYPE_TRAITS_H
 1526.28 +
 1526.29 +/*
 1526.30 +This header file provides a framework for allowing compile time dispatch
 1526.31 +based on type attributes. This is useful when writing template code.
 1526.32 +For example, when making a copy of an array of an unknown type, it helps
 1526.33 +to know if the type has a trivial copy constructor or not, to help decide
 1526.34 +if a memcpy can be used.
 1526.35 +
 1526.36 +The class template __type_traits provides a series of typedefs each of
 1526.37 +which is either __true_type or __false_type. The argument to
 1526.38 +__type_traits can be any type. The typedefs within this template will
 1526.39 +attain their correct values by one of these means:
 1526.40 +    1. The general instantiation contain conservative values which work
 1526.41 +       for all types.
 1526.42 +    2. Specializations may be declared to make distinctions between types.
 1526.43 +    3. Some compilers (such as the Silicon Graphics N32 and N64 compilers)
 1526.44 +       will automatically provide the appropriate specializations for all
 1526.45 +       types.
 1526.46 +
 1526.47 +EXAMPLE:
 1526.48 +
 1526.49 +//Copy an array of elements which have non-trivial copy constructors
 1526.50 +template <class T> void copy(T* source, T* destination, int n, __false_type);
 1526.51 +//Copy an array of elements which have trivial copy constructors. Use memcpy.
 1526.52 +template <class T> void copy(T* source, T* destination, int n, __true_type);
 1526.53 +
 1526.54 +//Copy an array of any type by using the most efficient copy mechanism
 1526.55 +template <class T> inline void copy(T* source,T* destination,int n) {
 1526.56 +   copy(source, destination, n,
 1526.57 +        typename __type_traits<T>::has_trivial_copy_constructor());
 1526.58 +}
 1526.59 +*/
 1526.60 +
 1526.61 +#ifdef __WATCOMC__
 1526.62 +# include <stl/_cwchar.h>
 1526.63 +#endif
 1526.64 +
 1526.65 +_STLP_BEGIN_NAMESPACE
 1526.66 +
 1526.67 +struct __true_type {};
 1526.68 +struct __false_type {};
 1526.69 +
 1526.70 +
 1526.71 +template <int _Is> struct __bool2type {
 1526.72 +  typedef __false_type _Ret; 
 1526.73 +};
 1526.74 +
 1526.75 +_STLP_TEMPLATE_NULL
 1526.76 +struct __bool2type<1> { typedef __true_type _Ret; };
 1526.77 +
 1526.78 +_STLP_TEMPLATE_NULL
 1526.79 +struct __bool2type<0> { typedef __false_type _Ret; };
 1526.80 +
 1526.81 +// logical end of 3 predicated
 1526.82 +template <class _P1, class _P2, class _P3>
 1526.83 +struct _Land3 {
 1526.84 +  typedef __false_type _Ret;
 1526.85 +};
 1526.86 +
 1526.87 +_STLP_TEMPLATE_NULL
 1526.88 +struct _Land3<__true_type, __true_type, __true_type> {
 1526.89 +  typedef __true_type _Ret;
 1526.90 +};
 1526.91 +
 1526.92 +
 1526.93 +// Forward declarations.
 1526.94 +template <class _Tp> struct __type_traits; 
 1526.95 +template <int _IsPOD> struct __type_traits_aux {
 1526.96 +   typedef __false_type    has_trivial_default_constructor;
 1526.97 +   typedef __false_type    has_trivial_copy_constructor;
 1526.98 +   typedef __false_type    has_trivial_assignment_operator;
 1526.99 +   typedef __false_type    has_trivial_destructor;
1526.100 +   typedef __false_type    is_POD_type;
1526.101 +};
1526.102 +
1526.103 +_STLP_TEMPLATE_NULL
1526.104 +struct __type_traits_aux<0> {
1526.105 +   typedef __false_type    has_trivial_default_constructor;
1526.106 +   typedef __false_type    has_trivial_copy_constructor;
1526.107 +   typedef __false_type    has_trivial_assignment_operator;
1526.108 +   typedef __false_type    has_trivial_destructor;
1526.109 +   typedef __false_type    is_POD_type;
1526.110 +};
1526.111 +
1526.112 +_STLP_TEMPLATE_NULL
1526.113 +struct __type_traits_aux<1> { 
1526.114 +   typedef __true_type    has_trivial_default_constructor;
1526.115 +   typedef __true_type    has_trivial_copy_constructor;
1526.116 +   typedef __true_type    has_trivial_assignment_operator;
1526.117 +   typedef __true_type    has_trivial_destructor;
1526.118 +   typedef __true_type    is_POD_type;
1526.119 +};
1526.120 +
1526.121 +# ifdef _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1526.122 +
1526.123 +// Boris : simulation technique is used here according to Adobe Open Source License Version 1.0.
1526.124 +// Copyright 2000 Adobe Systems Incorporated and others. All rights reserved.
1526.125 +// Authors: Mat Marcus and Jesse Jones
1526.126 +// The original version of this source code may be found at
1526.127 +// http://opensource.adobe.com.
1526.128 +
1526.129 +struct _PointerShim {
1526.130 +  // Since the compiler only allows at most one non-trivial
1526.131 +  // implicit conversion we can make use of a shim class to
1526.132 +  // be sure that IsPtr below doesn't accept classes with
1526.133 +  // implicit pointer conversion operators
1526.134 +  _PointerShim(const volatile void*); // no implementation
1526.135 +};
1526.136 +
1526.137 +// These are the discriminating functions
1526.138 +
1526.139 +char _STLP_CALL _IsP(bool, _PointerShim); // no implementation is required
1526.140 +char* _STLP_CALL _IsP(bool, ...);          // no implementation is required
1526.141 +
1526.142 +template <class _Tp>
1526.143 +char _STLP_CALL _IsSameFun(bool, _Tp*, _Tp*); // no implementation is required
1526.144 +char* _STLP_CALL _IsSameFun(bool, ...);          // no implementation is required
1526.145 +
1526.146 +template <class _Tp1, class _Tp2>
1526.147 +struct _IsSame {
1526.148 +  // boris : check!
1526.149 +  static _Tp1* __null_rep1();
1526.150 +  static _Tp2* __null_rep2();
1526.151 +  enum { _Ret = (sizeof(_IsSameFun(false,__null_rep1(),__null_rep2())) == sizeof(char)) };
1526.152 +};
1526.153 +
1526.154 +template <class _Tp>
1526.155 +struct _IsPtr {
1526.156 +  
1526.157 +  // This template meta function takes a type T
1526.158 +  // and returns true exactly when T is a pointer.
1526.159 +  // One can imagine meta-functions discriminating on
1526.160 +  // other criteria.
1526.161 +  static _Tp& __null_rep();
1526.162 +  enum { _Ret = (sizeof(_IsP(false,__null_rep())) == sizeof(char)) };
1526.163 +
1526.164 +};
1526.165 +
1526.166 +template <class _Tp>
1526.167 +struct _IsPtrType {
1526.168 +  enum { _Is =  _IsPtr<_Tp>::_Ret } ;
1526.169 +  typedef __bool2type< _Is > _BT;
1526.170 +  typedef typename _BT::_Ret _Type;
1526.171 +  static _Type _Ret() { return _Type(); }
1526.172 +};
1526.173 +
1526.174 +template <class _Tp1, class _Tp2>
1526.175 +struct _BothPtrType {
1526.176 +  typedef __bool2type< _IsPtr<_Tp1>::_Ret> _B1;
1526.177 +  typedef __bool2type< _IsPtr<_Tp2>::_Ret> _B2;
1526.178 +  typedef typename _B1::_Ret _Type1;
1526.179 +  typedef typename _B2::_Ret _Type2;
1526.180 +  typedef typename _Land3<_Type1, _Type2, __true_type>::_Ret _Type;
1526.181 +  static _Type _Ret() { return _Type(); }
1526.182 +};
1526.183 +
1526.184 +// we make general case dependant on the fact the type is actually a pointer.
1526.185 + 
1526.186 +template <class _Tp>
1526.187 +struct __type_traits : __type_traits_aux<_IsPtr<_Tp>::_Ret> {};
1526.188 +
1526.189 +# else
1526.190 +
1526.191 +template <class _Tp>
1526.192 +struct __type_traits { 
1526.193 +   typedef __true_type     this_dummy_member_must_be_first;
1526.194 +                   /* Do not remove this member. It informs a compiler which
1526.195 +                      automatically specializes __type_traits that this
1526.196 +                      __type_traits template is special. It just makes sure that
1526.197 +                      things work if an implementation is using a template
1526.198 +                      called __type_traits for something unrelated. */
1526.199 +
1526.200 +   /* The following restrictions should be observed for the sake of
1526.201 +      compilers which automatically produce type specific specializations 
1526.202 +      of this class:
1526.203 +          - You may reorder the members below if you wish
1526.204 +          - You may remove any of the members below if you wish
1526.205 +          - You must not rename members without making the corresponding
1526.206 +            name change in the compiler
1526.207 +          - Members you add will be treated like regular members unless
1526.208 +            you add the appropriate support in the compiler. */
1526.209 +   typedef __false_type    has_trivial_default_constructor;
1526.210 +   typedef __false_type    has_trivial_copy_constructor;
1526.211 +   typedef __false_type    has_trivial_assignment_operator;
1526.212 +   typedef __false_type    has_trivial_destructor;
1526.213 +   typedef __false_type    is_POD_type;
1526.214 +};
1526.215 +
1526.216 +
1526.217 +template <class _Tp>  struct _IsPtr { enum { _Ret = 0 }; };
1526.218 +template <class _Tp>  struct _IsPtrType { 
1526.219 +  static __false_type _Ret() { return __false_type();} 
1526.220 +};
1526.221 +template <class _Tp1, class _Tp2>  struct _BothPtrType { 
1526.222 +  static __false_type _Ret() { return __false_type();} 
1526.223 +};
1526.224 +
1526.225 +template <class _Tp1, class _Tp2>
1526.226 +struct _IsSame { enum { _Ret = 0 }; };
1526.227 +
1526.228 +// template <class _Tp1, class _Tp2>
1526.229 +// struct _IsSameType {   static __false_type _Ret() { return __false_type(); }  };
1526.230 +
1526.231 +#  ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1526.232 +template <class _Tp>  struct _IsPtr<_Tp*> { enum { _Ret = 1 }; };
1526.233 +template <class _Tp>  struct _IsPtrType<_Tp*> { 
1526.234 +  static __true_type _Ret() { return __true_type();} 
1526.235 +};
1526.236 +template <class _Tp1, class _Tp2>  struct _BothPtrType<_Tp1*, _Tp2*> { 
1526.237 +  static __true_type _Ret() { return __true_type();} 
1526.238 +};
1526.239 +template <class _Tp>
1526.240 +struct _IsSame<_Tp, _Tp> { enum { _Ret = 1 }; };
1526.241 +#  endif
1526.242 +
1526.243 +# endif /* _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS */
1526.244 +
1526.245 +// Provide some specializations.  This is harmless for compilers that
1526.246 +//  have built-in __types_traits support, and essential for compilers
1526.247 +//  that don't.
1526.248 +#ifndef _STLP_NO_BOOL
1526.249 +_STLP_TEMPLATE_NULL struct __type_traits<bool> : __type_traits_aux<1> {};
1526.250 +#endif /* _STLP_NO_BOOL */
1526.251 +_STLP_TEMPLATE_NULL struct __type_traits<char> : __type_traits_aux<1> {};
1526.252 +#ifndef _STLP_NO_SIGNED_BUILTINS
1526.253 +_STLP_TEMPLATE_NULL struct __type_traits<signed char> : __type_traits_aux<1> {};
1526.254 +# endif
1526.255 +_STLP_TEMPLATE_NULL struct __type_traits<unsigned char> : __type_traits_aux<1> {};
1526.256 +#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
1526.257 +_STLP_TEMPLATE_NULL struct __type_traits<wchar_t> : __type_traits_aux<1> {};
1526.258 +#endif /* _STLP_HAS_WCHAR_T */
1526.259 +
1526.260 +_STLP_TEMPLATE_NULL struct __type_traits<short> : __type_traits_aux<1> {};
1526.261 +_STLP_TEMPLATE_NULL struct __type_traits<unsigned short> : __type_traits_aux<1> {};
1526.262 +_STLP_TEMPLATE_NULL struct __type_traits<int> : __type_traits_aux<1> {};
1526.263 +_STLP_TEMPLATE_NULL struct __type_traits<unsigned int> : __type_traits_aux<1> {};
1526.264 +_STLP_TEMPLATE_NULL struct __type_traits<long> : __type_traits_aux<1> {};
1526.265 +_STLP_TEMPLATE_NULL struct __type_traits<unsigned long> : __type_traits_aux<1> {};
1526.266 +
1526.267 +#ifdef _STLP_LONG_LONG
1526.268 +_STLP_TEMPLATE_NULL struct __type_traits<_STLP_LONG_LONG> : __type_traits_aux<1> {};
1526.269 +_STLP_TEMPLATE_NULL struct __type_traits<unsigned _STLP_LONG_LONG> : __type_traits_aux<1> {};
1526.270 +#endif /* _STLP_LONG_LONG */
1526.271 +
1526.272 +_STLP_TEMPLATE_NULL struct __type_traits<float> : __type_traits_aux<1> {};
1526.273 +_STLP_TEMPLATE_NULL struct __type_traits<double> : __type_traits_aux<1> {};
1526.274 +
1526.275 +# if !defined ( _STLP_NO_LONG_DOUBLE )
1526.276 +_STLP_TEMPLATE_NULL struct __type_traits<long double> : __type_traits_aux<1> {};
1526.277 +# endif
1526.278 +
1526.279 +#ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1526.280 +template <class _Tp> struct __type_traits<_Tp*> : __type_traits_aux<1> {};
1526.281 +#endif
1526.282 +
1526.283 +// The following could be written in terms of numeric_limits.  
1526.284 +// We're doing it separately to reduce the number of dependencies.
1526.285 +
1526.286 +template <class _Tp> struct _Is_integer {
1526.287 +  typedef __false_type _Integral;
1526.288 +};
1526.289 +
1526.290 +#ifndef _STLP_NO_BOOL
1526.291 +
1526.292 +_STLP_TEMPLATE_NULL struct _Is_integer<bool> {
1526.293 +  typedef __true_type _Integral;
1526.294 +};
1526.295 +
1526.296 +#endif /* _STLP_NO_BOOL */
1526.297 +
1526.298 +_STLP_TEMPLATE_NULL struct _Is_integer<char> {
1526.299 +  typedef __true_type _Integral;
1526.300 +};
1526.301 +
1526.302 +#ifndef _STLP_NO_SIGNED_BUILTINS
1526.303 +
1526.304 +_STLP_TEMPLATE_NULL struct _Is_integer<signed char> {
1526.305 +  typedef __true_type _Integral;
1526.306 +};
1526.307 +#endif
1526.308 +
1526.309 +_STLP_TEMPLATE_NULL struct _Is_integer<unsigned char> {
1526.310 +  typedef __true_type _Integral;
1526.311 +};
1526.312 +
1526.313 +#if defined ( _STLP_HAS_WCHAR_T ) && ! defined (_STLP_WCHAR_T_IS_USHORT)
1526.314 +
1526.315 +_STLP_TEMPLATE_NULL struct _Is_integer<wchar_t> {
1526.316 +  typedef __true_type _Integral;
1526.317 +};
1526.318 +
1526.319 +#endif /* _STLP_HAS_WCHAR_T */
1526.320 +
1526.321 +_STLP_TEMPLATE_NULL struct _Is_integer<short> {
1526.322 +  typedef __true_type _Integral;
1526.323 +};
1526.324 +
1526.325 +_STLP_TEMPLATE_NULL struct _Is_integer<unsigned short> {
1526.326 +  typedef __true_type _Integral;
1526.327 +};
1526.328 +
1526.329 +_STLP_TEMPLATE_NULL struct _Is_integer<int> {
1526.330 +  typedef __true_type _Integral;
1526.331 +};
1526.332 +
1526.333 +_STLP_TEMPLATE_NULL struct _Is_integer<unsigned int> {
1526.334 +  typedef __true_type _Integral;
1526.335 +};
1526.336 +
1526.337 +_STLP_TEMPLATE_NULL struct _Is_integer<long> {
1526.338 +  typedef __true_type _Integral;
1526.339 +};
1526.340 +
1526.341 +_STLP_TEMPLATE_NULL struct _Is_integer<unsigned long> {
1526.342 +  typedef __true_type _Integral;
1526.343 +};
1526.344 +
1526.345 +#ifdef _STLP_LONG_LONG
1526.346 +
1526.347 +_STLP_TEMPLATE_NULL struct _Is_integer<_STLP_LONG_LONG> {
1526.348 +  typedef __true_type _Integral;
1526.349 +};
1526.350 +
1526.351 +_STLP_TEMPLATE_NULL struct _Is_integer<unsigned _STLP_LONG_LONG> {
1526.352 +  typedef __true_type _Integral;
1526.353 +};
1526.354 +
1526.355 +#endif /* _STLP_LONG_LONG */
1526.356 +
1526.357 +template <class _Tp1, class _Tp2>
1526.358 +struct _OKToMemCpy {
1526.359 +  enum { _Same = _IsSame<_Tp1,_Tp2>::_Ret } ;
1526.360 +  typedef typename __type_traits<_Tp1>::has_trivial_assignment_operator _Tr1;
1526.361 +  typedef typename __type_traits<_Tp2>::has_trivial_assignment_operator _Tr2;
1526.362 +  typedef typename __bool2type< _Same >::_Ret _Tr3;
1526.363 +  typedef typename _Land3<_Tr1, _Tr2, _Tr3>::_Ret _Type;
1526.364 +  static _Type _Ret() { return _Type(); }
1526.365 +};
1526.366 +
1526.367 +template <class _Tp1, class _Tp2>
1526.368 +inline _OKToMemCpy<_Tp1, _Tp2> _IsOKToMemCpy(_Tp1*, _Tp2*)  {
1526.369 +  return _OKToMemCpy<_Tp1, _Tp2>();
1526.370 +}
1526.371 +
1526.372 +template <class _Tp> 
1526.373 +struct _IsPOD {
1526.374 +  typedef typename __type_traits<_Tp>::is_POD_type _Type;
1526.375 +  static _Type _Ret() { return _Type(); }
1526.376 +};
1526.377 +
1526.378 +template <class _Tp> 
1526.379 +inline _IsPOD<_Tp>  _Is_POD (_Tp*) { return _IsPOD<_Tp>(); } 
1526.380 +
1526.381 +#  ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
1526.382 +#   if defined (__BORLANDC__) || defined (__SUNPRO_CC) || ( defined (__MWERKS__) && (__MWERKS__ <= 0x2303)) || ( defined (__sgi) && defined (_COMPILER_VERSION)) || defined (__DMC__)
1526.383 +#   define _IS_POD_ITER(_It, _Tp) __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type()
1526.384 +#   else
1526.385 +#   define _IS_POD_ITER(_It, _Tp) typename __type_traits< typename iterator_traits< _Tp >::value_type >::is_POD_type()
1526.386 +#   endif
1526.387 +#  else
1526.388 +#   define _IS_POD_ITER(_It, _Tp) _Is_POD( _STLP_VALUE_TYPE( _It, _Tp ) )._Ret()
1526.389 +#  endif
1526.390 +
1526.391 +# ifdef _STLP_DEFAULT_CONSTRUCTOR_BUG
1526.392 +// Those adaptors are here to fix common compiler bug regarding builtins:
1526.393 +// expressions like int k = int() should initialize k to 0
1526.394 +template <class _Tp>
1526.395 +inline _Tp __default_constructed_aux(_Tp*, const __false_type&) {
1526.396 +  return _Tp();
1526.397 +}
1526.398 +template <class _Tp>
1526.399 +inline _Tp __default_constructed_aux(_Tp*, const __true_type&) {
1526.400 +  return _Tp(0);
1526.401 +}
1526.402 +
1526.403 +template <class _Tp>
1526.404 +inline _Tp __default_constructed(_Tp* __p) {
1526.405 +  typedef typename _Is_integer<_Tp>::_Integral _Is_Integral;
1526.406 +  return __default_constructed_aux(__p, _Is_Integral());
1526.407 +}
1526.408 +
1526.409 +#  define _STLP_DEFAULT_CONSTRUCTED(_TTp) __default_constructed((_TTp*)0)
1526.410 +# else
1526.411 +#  define _STLP_DEFAULT_CONSTRUCTED(_TTp) _TTp()
1526.412 +# endif
1526.413 +
1526.414 +_STLP_END_NAMESPACE
1526.415 +
1526.416 +#endif /* __TYPE_TRAITS_H */
1526.417 +
1526.418 +// Local Variables:
1526.419 +// mode:C++
1526.420 +// End:
1526.421 +
  1527.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1527.2 +++ b/epoc32/include/stdapis/stlportv5/string	Wed Mar 31 12:27:01 2010 +0100
  1527.3 @@ -0,0 +1,62 @@
  1527.4 +/*
  1527.5 + * Copyright (c) 1997-1999
  1527.6 + * Silicon Graphics Computer Systems, Inc.
  1527.7 + *
  1527.8 + * Copyright (c) 1999 
  1527.9 + * Boris Fomitchev
 1527.10 + *
 1527.11 + * This material is provided "as is", with absolutely no warranty expressed
 1527.12 + * or implied. Any use is at your own risk.
 1527.13 + *
 1527.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1527.15 + * without fee, provided the above notices are retained on all copies.
 1527.16 + * Permission to modify the code and to distribute modified code is granted,
 1527.17 + * provided the above notices are retained, and a notice that the code was
 1527.18 + * modified is included with the above copyright notice.
 1527.19 + *
 1527.20 + */
 1527.21 +
 1527.22 +#ifndef _STLP_STRING
 1527.23 +# define _STLP_STRING
 1527.24 +
 1527.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1527.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x68
 1527.27 +#  include <stl/_prolog.h>
 1527.28 +# endif
 1527.29 +
 1527.30 +# ifdef _STLP_PRAGMA_ONCE
 1527.31 +#  pragma once
 1527.32 +# endif
 1527.33 +
 1527.34 +#if defined (_STLP_USE_NATIVE_STRING)
 1527.35 +
 1527.36 +// as part of compiled runtime library depends on it.
 1527.37 +
 1527.38 +# if defined (_STLP_MSVC)
 1527.39 +#  include <streambuf>
 1527.40 +#  include <istream>
 1527.41 +# endif
 1527.42 +
 1527.43 +#  include _STLP_NATIVE_HEADER(string)
 1527.44 +
 1527.45 +# endif /* _STLP_USE_NATIVE_STRING */
 1527.46 +
 1527.47 +# if !defined (_STLP_USE_NATIVE_STRING) || defined (_STLP_USE_OWN_NAMESPACE)
 1527.48 +# include <stl/_string.h>
 1527.49 +# else
 1527.50 +# include <stl/_string_hash.h>
 1527.51 +# endif /*_STLP_USE_NATIVE_STRING */
 1527.52 +
 1527.53 +// cleanup
 1527.54 +
 1527.55 +# if (_STLP_OUTERMOST_HEADER_ID == 0x68)
 1527.56 +#  include <stl/_epilog.h>
 1527.57 +#  undef _STLP_OUTERMOST_HEADER_ID
 1527.58 +# endif
 1527.59 +
 1527.60 +#endif /* _STLP_STRING */
 1527.61 +
 1527.62 +// Local Variables:
 1527.63 +// mode:C++
 1527.64 +// End:
 1527.65 +
  1528.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1528.2 +++ b/epoc32/include/stdapis/stlportv5/unordered_map	Wed Mar 31 12:27:01 2010 +0100
  1528.3 @@ -0,0 +1,39 @@
  1528.4 +/*
  1528.5 + * Copyright (c) 2004,2005
  1528.6 + * Francois Dumont
  1528.7 + *
  1528.8 + * This material is provided "as is", with absolutely no warranty expressed
  1528.9 + * or implied. Any use is at your own risk.
 1528.10 + *
 1528.11 + * Permission to use or copy this software for any purpose is hereby granted
 1528.12 + * without fee, provided the above notices are retained on all copies.
 1528.13 + * Permission to modify the code and to distribute modified code is granted,
 1528.14 + * provided the above notices are retained, and a notice that the code was
 1528.15 + * modified is included with the above copyright notice.
 1528.16 + *
 1528.17 + */
 1528.18 +
 1528.19 +#ifndef _STLP_UNORDERED_MAP
 1528.20 +#define _STLP_UNORDERED_MAP
 1528.21 +
 1528.22 +#ifndef _STLP_OUTERMOST_HEADER_ID
 1528.23 +#  define _STLP_OUTERMOST_HEADER_ID 0x4030
 1528.24 +#  include <stl/_prolog.h>
 1528.25 +#endif
 1528.26 +
 1528.27 +#ifdef _STLP_PRAGMA_ONCE
 1528.28 +#  pragma once
 1528.29 +#endif
 1528.30 +
 1528.31 +#include <stl/_unordered_map.h>
 1528.32 +
 1528.33 +#if (_STLP_OUTERMOST_HEADER_ID == 0x4030)
 1528.34 +#  include <stl/_epilog.h>
 1528.35 +#  undef _STLP_OUTERMOST_HEADER_ID
 1528.36 +#endif
 1528.37 +
 1528.38 +#endif /* _STLP_UNORDERED_MAP */
 1528.39 +
 1528.40 +// Local Variables:
 1528.41 +// mode:C++
 1528.42 +// End:
  1529.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1529.2 +++ b/epoc32/include/stdapis/stlportv5/unordered_set	Wed Mar 31 12:27:01 2010 +0100
  1529.3 @@ -0,0 +1,39 @@
  1529.4 +/*
  1529.5 + * Copyright (c) 2004,2005
  1529.6 + * Francois Dumont
  1529.7 + *
  1529.8 + * This material is provided "as is", with absolutely no warranty expressed
  1529.9 + * or implied. Any use is at your own risk.
 1529.10 + *
 1529.11 + * Permission to use or copy this software for any purpose is hereby granted
 1529.12 + * without fee, provided the above notices are retained on all copies.
 1529.13 + * Permission to modify the code and to distribute modified code is granted,
 1529.14 + * provided the above notices are retained, and a notice that the code was
 1529.15 + * modified is included with the above copyright notice.
 1529.16 + *
 1529.17 + */
 1529.18 +
 1529.19 +#ifndef _STLP_UNORDERED_SET
 1529.20 +#define _STLP_UNORDERED_SET
 1529.21 +
 1529.22 +#ifndef _STLP_OUTERMOST_HEADER_ID
 1529.23 +#  define _STLP_OUTERMOST_HEADER_ID 0x4031
 1529.24 +#  include <stl/_prolog.h>
 1529.25 +#endif
 1529.26 +
 1529.27 +#ifdef _STLP_PRAGMA_ONCE
 1529.28 +#  pragma once
 1529.29 +#endif
 1529.30 +
 1529.31 +#include <stl/_unordered_set.h>
 1529.32 +
 1529.33 +#if (_STLP_OUTERMOST_HEADER_ID == 0x4031)
 1529.34 +#  include <stl/_epilog.h>
 1529.35 +#  undef _STLP_OUTERMOST_HEADER_ID
 1529.36 +#endif
 1529.37 +
 1529.38 +#endif /* _STLP_UNORDERED_SET */
 1529.39 +
 1529.40 +// Local Variables:
 1529.41 +// mode:C++
 1529.42 +// End:
  1530.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1530.2 +++ b/epoc32/include/stdapis/stlportv5/utility	Wed Mar 31 12:27:01 2010 +0100
  1530.3 @@ -0,0 +1,65 @@
  1530.4 +/*
  1530.5 + *
  1530.6 + * Copyright (c) 1994
  1530.7 + * Hewlett-Packard Company
  1530.8 + *
  1530.9 + * Copyright (c) 1996,1997
 1530.10 + * Silicon Graphics Computer Systems, Inc.
 1530.11 + *
 1530.12 + * Copyright (c) 1999 
 1530.13 + * Boris Fomitchev
 1530.14 + *
 1530.15 + * This material is provided "as is", with absolutely no warranty expressed
 1530.16 + * or implied. Any use is at your own risk.
 1530.17 + *
 1530.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1530.19 + * without fee, provided the above notices are retained on all copies.
 1530.20 + * Permission to modify the code and to distribute modified code is granted,
 1530.21 + * provided the above notices are retained, and a notice that the code was
 1530.22 + * modified is included with the above copyright notice.
 1530.23 + *
 1530.24 + */
 1530.25 +
 1530.26 +#ifndef _STLP_UTILITY
 1530.27 +#define _STLP_UTILITY
 1530.28 +
 1530.29 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1530.30 +#  define _STLP_OUTERMOST_HEADER_ID 0x75
 1530.31 +#  include <stl/_prolog.h>
 1530.32 +# endif
 1530.33 +
 1530.34 +# ifdef _STLP_PRAGMA_ONCE
 1530.35 +#  pragma once
 1530.36 +# endif
 1530.37 +
 1530.38 +# ifndef __TYPE_TRAITS_H
 1530.39 +#  include <stl/type_traits.h>
 1530.40 +# endif
 1530.41 +
 1530.42 +# if !defined (_STLP_DEBUG_H) && (defined  (_STLP_DEBUG) || defined (_STLP_ASSERTIONS))
 1530.43 +#  include <stl/debug/_debug.h>
 1530.44 +# endif
 1530.45 +
 1530.46 +# ifndef _STLP_INTERNAL_PAIR_H
 1530.47 +#  include <stl/_pair.h>
 1530.48 +# endif
 1530.49 +
 1530.50 +# if defined (_STLP_IMPORT_VENDOR_STD)
 1530.51 +#   include _STLP_NATIVE_HEADER(utility)
 1530.52 +# else
 1530.53 +#  if defined (_STLP_MSVC) && ! defined (_STLP_INTERNAL_ITERATOR_H)
 1530.54 +#   include <stl/_iterator.h>
 1530.55 +#  endif
 1530.56 +# endif
 1530.57 +
 1530.58 +# if (_STLP_OUTERMOST_HEADER_ID == 0x75)
 1530.59 +#  include <stl/_epilog.h>
 1530.60 +#  undef _STLP_OUTERMOST_HEADER_ID
 1530.61 +# endif
 1530.62 +
 1530.63 +#endif /* _STLP_UTILITY */
 1530.64 +
 1530.65 +// Local Variables:
 1530.66 +// mode:C++
 1530.67 +// End:
 1530.68 +
  1531.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1531.2 +++ b/epoc32/include/stdapis/stlportv5/valarray	Wed Mar 31 12:27:01 2010 +0100
  1531.3 @@ -0,0 +1,47 @@
  1531.4 +/*
  1531.5 + * Copyright (c) 1999
  1531.6 + * Silicon Graphics Computer Systems, Inc.
  1531.7 + *
  1531.8 + * Copyright (c) 1999 
  1531.9 + * Boris Fomitchev
 1531.10 + *
 1531.11 + * This material is provided "as is", with absolutely no warranty expressed
 1531.12 + * or implied. Any use is at your own risk.
 1531.13 + *
 1531.14 + * Permission to use or copy this software for any purpose is hereby granted 
 1531.15 + * without fee, provided the above notices are retained on all copies.
 1531.16 + * Permission to modify the code and to distribute modified code is granted,
 1531.17 + * provided the above notices are retained, and a notice that the code was
 1531.18 + * modified is included with the above copyright notice.
 1531.19 + *
 1531.20 + */ 
 1531.21 +
 1531.22 +#ifndef _STLP_VALARRAY
 1531.23 +#define _STLP_VALARRAY
 1531.24 +
 1531.25 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1531.26 +#  define _STLP_OUTERMOST_HEADER_ID 0x76
 1531.27 +#  include <stl/_prolog.h>
 1531.28 +# endif
 1531.29 +
 1531.30 +# ifdef _STLP_PRAGMA_ONCE
 1531.31 +#  pragma once
 1531.32 +# endif
 1531.33 +
 1531.34 +#include <stl/_valarray.h>
 1531.35 +
 1531.36 +#if defined (_STLP_WHOLE_VENDOR_STD)
 1531.37 +# include _STLP_NATIVE_HEADER(valarray)
 1531.38 +#endif
 1531.39 +
 1531.40 +# if (_STLP_OUTERMOST_HEADER_ID == 0x76)
 1531.41 +#  include <stl/_epilog.h>
 1531.42 +#  undef _STLP_OUTERMOST_HEADER_ID
 1531.43 +# endif
 1531.44 +
 1531.45 +#endif /* _STLP_VALARRAY */
 1531.46 +
 1531.47 +
 1531.48 +// Local Variables:
 1531.49 +// mode:C++
 1531.50 +// End:
  1532.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1532.2 +++ b/epoc32/include/stdapis/stlportv5/vector	Wed Mar 31 12:27:01 2010 +0100
  1532.3 @@ -0,0 +1,57 @@
  1532.4 +/*
  1532.5 + *
  1532.6 + * Copyright (c) 1994
  1532.7 + * Hewlett-Packard Company
  1532.8 + *
  1532.9 + * Copyright (c) 1996,1997
 1532.10 + * Silicon Graphics Computer Systems, Inc.
 1532.11 + *
 1532.12 + * Copyright (c) 1999 
 1532.13 + * Boris Fomitchev
 1532.14 + *
 1532.15 + * This material is provided "as is", with absolutely no warranty expressed
 1532.16 + * or implied. Any use is at your own risk.
 1532.17 + *
 1532.18 + * Permission to use or copy this software for any purpose is hereby granted 
 1532.19 + * without fee, provided the above notices are retained on all copies.
 1532.20 + * Permission to modify the code and to distribute modified code is granted,
 1532.21 + * provided the above notices are retained, and a notice that the code was
 1532.22 + * modified is included with the above copyright notice.
 1532.23 + *
 1532.24 + */
 1532.25 +
 1532.26 +#ifndef _STLP_VECTOR
 1532.27 +#define _STLP_VECTOR
 1532.28 +
 1532.29 +# ifndef _STLP_OUTERMOST_HEADER_ID
 1532.30 +#  define _STLP_OUTERMOST_HEADER_ID 0x77
 1532.31 +#  include <stl/_prolog.h>
 1532.32 +# endif
 1532.33 +
 1532.34 +# ifdef _STLP_PRAGMA_ONCE
 1532.35 +#  pragma once
 1532.36 +# endif
 1532.37 +
 1532.38 +# ifndef _STLP_INTERNAL_ALGOBASE_H
 1532.39 +#  include <stl/_algobase.h>
 1532.40 +# endif
 1532.41 +
 1532.42 +#ifndef _STLP_INTERNAL_VECTOR_H
 1532.43 +# include <stl/_vector.h>
 1532.44 +#endif
 1532.45 +
 1532.46 +#if defined (_STLP_IMPORT_VENDOR_STD) && ! defined (_STLP_MINIMUM_IMPORT_STD)
 1532.47 +#  include _STLP_NATIVE_HEADER(vector)
 1532.48 +#endif
 1532.49 +
 1532.50 +# if (_STLP_OUTERMOST_HEADER_ID == 0x77)
 1532.51 +#  include <stl/_epilog.h>
 1532.52 +#  undef _STLP_OUTERMOST_HEADER_ID
 1532.53 +# endif
 1532.54 +
 1532.55 +#endif /* _STLP_VECTOR */
 1532.56 +
 1532.57 +// Local Variables:
 1532.58 +// mode:C++
 1532.59 +// End:
 1532.60 +
  1533.1 --- a/epoc32/include/stdapis/zconf.h	Tue Mar 16 16:12:26 2010 +0000
  1533.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1533.3 @@ -1,374 +0,0 @@
  1533.4 -/* zconf.h -- configuration of the zlib compression library
  1533.5 - * Copyright (C) 1995-2005 Jean-loup Gailly.
  1533.6 - * For conditions of distribution and use, see copyright notice in zlib.h
  1533.7 - */
  1533.8 -
  1533.9 -/* @(#) $Id: zconf.h,v 1.1.2.1 2008/08/14 15:26:57 e0222316 Exp $ */
 1533.10 -
 1533.11 -#ifndef _ZCONF_H
 1533.12 -#define _ZCONF_H
 1533.13 -
 1533.14 -#if (defined(__TOOLS2__) || defined(__TOOLS__))
 1533.15 -	/** Defined as nothing for tools builds, as EXPORT_C keyword not supported on these platforms  */
 1533.16 -	#define EXPORT_C	
 1533.17 -#else
 1533.18 -#ifdef __SYMBIAN32__
 1533.19 -	#include <e32def.h> 		/* Include for definition of IMPORT_C below */
 1533.20 -	/** This macro is used in function prototypes in zlib.h and libzcore.h.  Use Symbian definition IMPORT_C instead of ZEXTERN */ 
 1533.21 -	#define ZEXTERN IMPORT_C	
 1533.22 -	/** This macro is used for EZLIB component */
 1533.23 -	#define SYMBIAN_EZLIB_DEVICE
 1533.24 -#endif /* __SYMBIAN32__ */
 1533.25 -#endif /* __TOOLS2__ || __TOOLS__ */
 1533.26 -
 1533.27 -
 1533.28 -/*
 1533.29 - * If you *really* need a unique prefix for all types and library functions,
 1533.30 - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
 1533.31 - */
 1533.32 -#ifdef Z_PREFIX
 1533.33 -#  define deflateInit_          z_deflateInit_
 1533.34 -#  define deflate               z_deflate
 1533.35 -#  define deflateEnd            z_deflateEnd
 1533.36 -#  define inflateInit_          z_inflateInit_
 1533.37 -#  define inflate               z_inflate
 1533.38 -#  define inflateEnd            z_inflateEnd
 1533.39 -#  define deflateInit2_         z_deflateInit2_
 1533.40 -#  define deflateSetDictionary  z_deflateSetDictionary
 1533.41 -#  define deflateCopy           z_deflateCopy
 1533.42 -#  define deflateReset          z_deflateReset
 1533.43 -#  define deflateParams         z_deflateParams
 1533.44 -#  define deflateBound          z_deflateBound
 1533.45 -#  define deflatePrime          z_deflatePrime
 1533.46 -#  define inflateInit2_         z_inflateInit2_
 1533.47 -#  define inflateSetDictionary  z_inflateSetDictionary
 1533.48 -#  define inflateSync           z_inflateSync
 1533.49 -#  define inflateSyncPoint      z_inflateSyncPoint
 1533.50 -#  define inflateCopy           z_inflateCopy
 1533.51 -#  define inflateReset          z_inflateReset
 1533.52 -#  define inflateBack           z_inflateBack
 1533.53 -#  define inflateBackEnd        z_inflateBackEnd
 1533.54 -#  define compress              z_compress
 1533.55 -#  define compress2             z_compress2
 1533.56 -#  define compressBound         z_compressBound
 1533.57 -#  define uncompress            z_uncompress
 1533.58 -#  define adler32               z_adler32
 1533.59 -#  define crc32                 z_crc32
 1533.60 -#  define get_crc_table         z_get_crc_table
 1533.61 -#  define zError                z_zError
 1533.62 -
 1533.63 -#  define alloc_func            z_alloc_func
 1533.64 -#  define free_func             z_free_func
 1533.65 -#  define in_func               z_in_func
 1533.66 -#  define out_func              z_out_func
 1533.67 -#  define Byte                  z_Byte
 1533.68 -#  define uInt                  z_uInt
 1533.69 -#  define uLong                 z_uLong
 1533.70 -#  define Bytef                 z_Bytef
 1533.71 -#  define charf                 z_charf
 1533.72 -#  define intf                  z_intf
 1533.73 -#  define uIntf                 z_uIntf
 1533.74 -#  define uLongf                z_uLongf
 1533.75 -#  define voidpf                z_voidpf
 1533.76 -#  define voidp                 z_voidp
 1533.77 -#endif
 1533.78 -
 1533.79 -#if defined(__MSDOS__) && !defined(MSDOS)
 1533.80 -#  define MSDOS
 1533.81 -#endif
 1533.82 -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
 1533.83 -#  define OS2
 1533.84 -#endif
 1533.85 -#if defined(_WINDOWS) && !defined(WINDOWS)
 1533.86 -#  define WINDOWS
 1533.87 -#endif
 1533.88 -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
 1533.89 -#  ifndef WIN32
 1533.90 -#    define WIN32
 1533.91 -#  endif
 1533.92 -#endif
 1533.93 -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
 1533.94 -#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
 1533.95 -#    ifndef SYS16BIT
 1533.96 -#      define SYS16BIT
 1533.97 -#    endif
 1533.98 -#  endif
 1533.99 -#endif
1533.100 -
1533.101 -/*
1533.102 - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
1533.103 - * than 64k bytes at a time (needed on systems with 16-bit int).
1533.104 - */
1533.105 -#ifdef SYS16BIT
1533.106 -#  define MAXSEG_64K
1533.107 -#endif
1533.108 -#ifdef MSDOS
1533.109 -#  define UNALIGNED_OK
1533.110 -#endif
1533.111 -
1533.112 -#ifdef __STDC_VERSION__
1533.113 -#  ifndef STDC
1533.114 -#    define STDC
1533.115 -#  endif
1533.116 -#  if __STDC_VERSION__ >= 199901L
1533.117 -#    ifndef STDC99
1533.118 -#      define STDC99
1533.119 -#    endif
1533.120 -#  endif
1533.121 -#endif
1533.122 -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
1533.123 -/** define STDC i.e. Standard C */
1533.124 -#  define STDC
1533.125 -#endif
1533.126 -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
1533.127 -#  define STDC
1533.128 -#endif
1533.129 -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
1533.130 -#  define STDC
1533.131 -#endif
1533.132 -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
1533.133 -#  define STDC
1533.134 -#endif
1533.135 -
1533.136 -#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
1533.137 -#  define STDC
1533.138 -#endif
1533.139 -
1533.140 -#ifndef STDC
1533.141 -#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
1533.142 -#    define const       /* note: need a more gentle solution here */
1533.143 -#  endif
1533.144 -#endif
1533.145 -
1533.146 -/* Some Mac compilers merge all .h files incorrectly: */
1533.147 -#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
1533.148 -#  define NO_DUMMY_DECL
1533.149 -#endif
1533.150 -
1533.151 -#ifndef MAX_MEM_LEVEL
1533.152 -#  ifdef MAXSEG_64K
1533.153 -/** Maximum value for memLevel in deflateInit2 */
1533.154 -#    define MAX_MEM_LEVEL 8
1533.155 -#  else
1533.156 -/** Maximum value for memLevel in deflateInit2 */
1533.157 -#    define MAX_MEM_LEVEL 9
1533.158 -#  endif
1533.159 -#endif
1533.160 -
1533.161 -/* Maximum value for windowBits in deflateInit2 and inflateInit2.
1533.162 - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
1533.163 - * created by gzip. (Files created by minigzip can still be extracted by
1533.164 - * gzip.)
1533.165 - */
1533.166 -#ifndef MAX_WBITS
1533.167 -/** 32K LZ77 window */
1533.168 -#  define MAX_WBITS   15 
1533.169 -#endif
1533.170 -
1533.171 -/* The memory requirements for deflate are (in bytes):
1533.172 -            (1 << (windowBits+2)) +  (1 << (memLevel+9))
1533.173 - that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
1533.174 - plus a few kilobytes for small objects. For example, if you want to reduce
1533.175 - the default memory requirements from 256K to 128K, compile with
1533.176 -     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
1533.177 - Of course this will generally degrade compression (there's no free lunch).
1533.178 -
1533.179 -   The memory requirements for inflate are (in bytes) 1 << windowBits
1533.180 - that is, 32K for windowBits=15 (default value) plus a few kilobytes
1533.181 - for small objects.
1533.182 -*/
1533.183 -
1533.184 -                        /* Type declarations */
1533.185 -
1533.186 -#ifndef OF /* function prototypes */
1533.187 -#  ifdef STDC
1533.188 -/** 
1533.189 -	Function prototypes 
1533.190 -	@param args arguments ...
1533.191 -*/
1533.192 -#    define OF(args)  args
1533.193 -#  else
1533.194 -/** Function prototypes */
1533.195 -#    define OF(args)  ()
1533.196 -#  endif
1533.197 -#endif
1533.198 -
1533.199 -/* The following definitions for FAR are needed only for MSDOS mixed
1533.200 - * model programming (small or medium model with some far allocations).
1533.201 - * This was tested only with MSC; for other MSDOS compilers you may have
1533.202 - * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
1533.203 - * just define FAR to be empty.
1533.204 - */
1533.205 -#ifdef SYS16BIT
1533.206 -#  if defined(M_I86SM) || defined(M_I86MM)
1533.207 -     /* MSC small or medium model */
1533.208 -#    define SMALL_MEDIUM
1533.209 -#    ifdef _MSC_VER
1533.210 -#      define FAR _far
1533.211 -#    else
1533.212 -#      define FAR far
1533.213 -#    endif
1533.214 -#  endif
1533.215 -#  if (defined(__SMALL__) || defined(__MEDIUM__))
1533.216 -     /* Turbo C small or medium model */
1533.217 -#    define SMALL_MEDIUM
1533.218 -#    ifdef __BORLANDC__
1533.219 -#      define FAR _far
1533.220 -#    else
1533.221 -#      define FAR far
1533.222 -#    endif
1533.223 -#  endif
1533.224 -#endif
1533.225 -
1533.226 -#if defined(WINDOWS) || defined(WIN32)
1533.227 -   /* If building or using zlib as a DLL, define ZLIB_DLL.
1533.228 -    * This is not mandatory, but it offers a little performance increase.
1533.229 -    */
1533.230 -#  ifdef ZLIB_DLL
1533.231 -#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
1533.232 -#      ifdef ZLIB_INTERNAL
1533.233 -#        define ZEXTERN extern __declspec(dllexport)
1533.234 -#      else
1533.235 -#        define ZEXTERN extern __declspec(dllimport)
1533.236 -#      endif
1533.237 -#    endif
1533.238 -#  endif  /* ZLIB_DLL */
1533.239 -   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
1533.240 -    * define ZLIB_WINAPI.
1533.241 -    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
1533.242 -    */
1533.243 -#  ifdef ZLIB_WINAPI
1533.244 -#    ifdef FAR
1533.245 -#      undef FAR
1533.246 -#    endif
1533.247 -#    include <windows.h>
1533.248 -     /* No need for _export, use ZLIB.DEF instead. */
1533.249 -     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
1533.250 -#    define ZEXPORT WINAPI
1533.251 -#    ifdef WIN32
1533.252 -#      define ZEXPORTVA WINAPIV
1533.253 -#    else
1533.254 -#      define ZEXPORTVA FAR CDECL
1533.255 -#    endif
1533.256 -#  endif
1533.257 -#endif
1533.258 -
1533.259 -#if defined (__BEOS__)
1533.260 -#  ifdef ZLIB_DLL
1533.261 -#    ifdef ZLIB_INTERNAL
1533.262 -#      define ZEXPORT   __declspec(dllexport)
1533.263 -#      define ZEXPORTVA __declspec(dllexport)
1533.264 -#    else
1533.265 -#      define ZEXPORT   __declspec(dllimport)
1533.266 -#      define ZEXPORTVA __declspec(dllimport)
1533.267 -#    endif
1533.268 -#  endif
1533.269 -#endif
1533.270 -
1533.271 -#ifndef ZEXTERN
1533.272 -/** extern defined as ZEXTERN */
1533.273 -#  define ZEXTERN extern
1533.274 -#endif
1533.275 -#ifndef ZEXPORT
1533.276 -#  define ZEXPORT
1533.277 -#endif
1533.278 -#ifndef ZEXPORTVA
1533.279 -#  define ZEXPORTVA
1533.280 -#endif
1533.281 -
1533.282 -
1533.283 -#ifndef FAR
1533.284 -#  define FAR
1533.285 -#endif
1533.286 -
1533.287 -#if !defined(__MACTYPES__)
1533.288 -/** 8 bits */
1533.289 -typedef unsigned char  Byte;  
1533.290 -#endif
1533.291 -/** 16 bits or more */
1533.292 -typedef unsigned int   uInt;  
1533.293 -/** 32 bits or more */
1533.294 -typedef unsigned long  uLong; 
1533.295 -
1533.296 -#ifdef SMALL_MEDIUM
1533.297 -   /** Borland C/C++ and some old MSC versions ignore FAR inside typedef */
1533.298 -#  define Bytef Byte FAR
1533.299 -#else
1533.300 -   /** Borland C/C++ and some old MSC versions ignore FAR inside typedef */
1533.301 -   typedef Byte  FAR Bytef;
1533.302 -#endif
1533.303 -/** char typedef to charf */
1533.304 -typedef char  FAR charf;
1533.305 -/** int typedef to intf */
1533.306 -typedef int   FAR intf;
1533.307 -/** uInt typedef to uIntf */
1533.308 -typedef uInt  FAR uIntf;
1533.309 -/** uLong typedef to uLongf */
1533.310 -typedef uLong FAR uLongf;
1533.311 -
1533.312 -#ifdef STDC
1533.313 -   /** typedef void const* to voidpc */
1533.314 -   typedef void const *voidpc;
1533.315 -   /** typedef void FAR* to voidpf */
1533.316 -   typedef void FAR   *voidpf;
1533.317 -   /** typedef void* to voidp */
1533.318 -   typedef void       *voidp;
1533.319 -#else
1533.320 -   /** typedef Byte const* to voidpc */
1533.321 -   typedef Byte const *voidpc;
1533.322 -   /** typedef Byte FAR* to voidpf */
1533.323 -   typedef Byte FAR   *voidpf;
1533.324 -   /** typedef Byte* to voidp */
1533.325 -   typedef Byte       *voidp;
1533.326 -#endif
1533.327 -
1533.328 -#if 0           /* HAVE_UNISTD_H -- this line is updated by ./configure */
1533.329 -#  include <sys/types.h> /* for off_t */
1533.330 -#  include <unistd.h>    /* for SEEK_* and off_t */
1533.331 -#  ifdef VMS
1533.332 -#    include <unixio.h>   /* for off_t */
1533.333 -#  endif
1533.334 -#  define z_off_t off_t
1533.335 -#endif
1533.336 -#ifndef SEEK_SET
1533.337 -/** Seek from beginning of file.  */
1533.338 -#  define SEEK_SET        0       
1533.339 -/** Seek from current position.  */
1533.340 -#  define SEEK_CUR        1       
1533.341 -/** Set file pointer to EOF plus "offset" */
1533.342 -#  define SEEK_END        2       
1533.343 -#endif
1533.344 -#ifndef z_off_t
1533.345 -/** define z_off_t as long */
1533.346 -#  define z_off_t long
1533.347 -#endif
1533.348 -
1533.349 -#if defined(__OS400__)
1533.350 -#  define NO_vsnprintf
1533.351 -#endif
1533.352 -
1533.353 -#if defined(__MVS__)
1533.354 -#  define NO_vsnprintf
1533.355 -#  ifdef FAR
1533.356 -#    undef FAR
1533.357 -#  endif
1533.358 -#endif
1533.359 -
1533.360 -/* MVS linker does not support external names larger than 8 bytes */
1533.361 -#if defined(__MVS__)
1533.362 -#   pragma map(deflateInit_,"DEIN")
1533.363 -#   pragma map(deflateInit2_,"DEIN2")
1533.364 -#   pragma map(deflateEnd,"DEEND")
1533.365 -#   pragma map(deflateBound,"DEBND")
1533.366 -#   pragma map(inflateInit_,"ININ")
1533.367 -#   pragma map(inflateInit2_,"ININ2")
1533.368 -#   pragma map(inflateEnd,"INEND")
1533.369 -#   pragma map(inflateSync,"INSY")
1533.370 -#   pragma map(inflateSetDictionary,"INSEDI")
1533.371 -#   pragma map(compressBound,"CMBND")
1533.372 -#   pragma map(inflate_table,"INTABL")
1533.373 -#   pragma map(inflate_fast,"INFA")
1533.374 -#   pragma map(inflate_copyright,"INCOPY")
1533.375 -#endif
1533.376 -
1533.377 -#endif /* _ZCONF_H */
  1534.1 --- a/epoc32/include/stdapis/zlib.h	Tue Mar 16 16:12:26 2010 +0000
  1534.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1534.3 @@ -1,1899 +0,0 @@
  1534.4 -/** 
  1534.5 -@file
  1534.6 -@publishedAll
  1534.7 -@released
  1534.8 -*/
  1534.9 -
 1534.10 -/* zlib.h -- interface of the 'zlib' general purpose compression library
 1534.11 -  version 1.2.3, July 18th, 2005
 1534.12 -
 1534.13 -  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
 1534.14 -
 1534.15 -  This software is provided 'as-is', without any express or implied
 1534.16 -  warranty.  In no event will the authors be held liable for any damages
 1534.17 -  arising from the use of this software.
 1534.18 -
 1534.19 -  Permission is granted to anyone to use this software for any purpose,
 1534.20 -  including commercial applications, and to alter it and redistribute it
 1534.21 -  freely, subject to the following restrictions:
 1534.22 -
 1534.23 -  1. The origin of this software must not be misrepresented; you must not
 1534.24 -     claim that you wrote the original software. If you use this software
 1534.25 -     in a product, an acknowledgment in the product documentation would be
 1534.26 -     appreciated but is not required.
 1534.27 -  2. Altered source versions must be plainly marked as such, and must not be
 1534.28 -     misrepresented as being the original software.
 1534.29 -  3. This notice may not be removed or altered from any source distribution.
 1534.30 -
 1534.31 -  Jean-loup Gailly        Mark Adler
 1534.32 -  jloup@gzip.org          madler@alumni.caltech.edu
 1534.33 -
 1534.34 -
 1534.35 -  The data format used by the zlib library is described by RFCs (Request for
 1534.36 -  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
 1534.37 -  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
 1534.38 -*/
 1534.39 -
 1534.40 -
 1534.41 -#ifndef _ZLIB_H
 1534.42 -#define _ZLIB_H
 1534.43 -
 1534.44 -#if (defined(__TOOLS2__) || defined(__TOOLS__))
 1534.45 -	// A tools build picks up the zconf.h file from the user include path
 1534.46 -	#include "zconf.h"
 1534.47 -#else
 1534.48 -	// Any other build picks up zconf.h from stdapis system include directory
 1534.49 -	#include <zconf.h> 
 1534.50 -#endif
 1534.51 -
 1534.52 -#ifdef __cplusplus
 1534.53 -	extern "C" {
 1534.54 -#endif
 1534.55 -
 1534.56 -/** Zlib version */
 1534.57 -#define ZLIB_VERSION "1.2.3"
 1534.58 -/** Zlib version Number */
 1534.59 -#define ZLIB_VERNUM 0x1230
 1534.60 -
 1534.61 -/**
 1534.62 -     The 'zlib' compression library provides in-memory compression and
 1534.63 -  decompression functions, including integrity checks of the uncompressed
 1534.64 -  data.  This version of the library supports only one compression method
 1534.65 -  (deflation) but other algorithms will be added later and will have the same
 1534.66 -  stream interface.
 1534.67 -
 1534.68 -     Compression can be done in a single step if the buffers are large
 1534.69 -  enough (for example if an input file is mmap'ed), or can be done by
 1534.70 -  repeated calls of the compression function.  In the latter case, the
 1534.71 -  application must provide more input and/or consume the output
 1534.72 -  (providing more output space) before each call.
 1534.73 -
 1534.74 -     The compressed data format used by default by the in-memory functions is
 1534.75 -  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
 1534.76 -  around a deflate stream, which is itself documented in RFC 1951.
 1534.77 -
 1534.78 -     The library also supports reading and writing files in gzip (.gz) format
 1534.79 -  with an interface similar to that of stdio using the functions that start
 1534.80 -  with "gz".  The gzip format is different from the zlib format.  gzip is a
 1534.81 -  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
 1534.82 -
 1534.83 -     This library can optionally read and write gzip streams in memory as well.
 1534.84 -
 1534.85 -     The zlib format was designed to be compact and fast for use in memory
 1534.86 -  and on communications channels.  The gzip format was designed for single-
 1534.87 -  file compression on file systems, has a larger header than zlib to maintain
 1534.88 -  directory information, and uses a different, slower check method than zlib.
 1534.89 -
 1534.90 -     The library does not install any signal handler. The decoder checks
 1534.91 -  the consistency of the compressed data, so the library should never
 1534.92 -  crash even in case of corrupted input.
 1534.93 -*/
 1534.94 -
 1534.95 -/** Function pointer - used to allocate the internal state */
 1534.96 -typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
 1534.97 -/** Function pointer - used to free the internal state */
 1534.98 -typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
 1534.99 -
1534.100 -struct internal_state;
1534.101 -
1534.102 -/**
1534.103 -	Encapsulates a zip stream
1534.104 -*/
1534.105 -typedef struct z_stream_s {
1534.106 -	/** Next input byte */
1534.107 -    Bytef    *next_in;  
1534.108 -    /** Number of bytes available at next_in */
1534.109 -    uInt     avail_in;  
1534.110 -    /** Total nb of input bytes read so far */
1534.111 -    uLong    total_in;  
1534.112 -
1534.113 -    /** Next output byte should be put there */
1534.114 -    Bytef    *next_out; 
1534.115 -    /** Remaining free space at next_out */
1534.116 -    uInt     avail_out; 
1534.117 -    /** Total nb of bytes output so far */
1534.118 -    uLong    total_out; 
1534.119 -
1534.120 -    /** Last error message, NULL if no error */
1534.121 -    char     *msg;      
1534.122 -    /** Not visible by applications */
1534.123 -    struct internal_state FAR *state; 
1534.124 -
1534.125 -    /** Used to allocate the internal state */
1534.126 -    alloc_func zalloc;  
1534.127 -    /** Used to free the internal state */
1534.128 -    free_func  zfree;   
1534.129 -    /** Private data object passed to zalloc and zfree */
1534.130 -    voidpf     opaque;  
1534.131 -
1534.132 -    /** Best guess about the data type: binary or text */
1534.133 -    int     data_type;  
1534.134 -    /** Adler32 value of the uncompressed data */
1534.135 -    uLong   adler;      
1534.136 -    /** Reserved for future use */
1534.137 -    uLong   reserved;   
1534.138 -} z_stream;
1534.139 -
1534.140 -/** typedef z_stream* as z_streamp. Refer to z_stream_s for more details */
1534.141 -typedef z_stream FAR *z_streamp;
1534.142 -
1534.143 -/**
1534.144 -     gzip header information passed to and from zlib routines.  See RFC 1952
1534.145 -  for more details on the meanings of these fields.
1534.146 -*/
1534.147 -typedef struct gz_header_s {
1534.148 -	/** True if compressed data believed to be text */
1534.149 -    int     text;       
1534.150 -    /** Modification time */
1534.151 -    uLong   time;       
1534.152 -    /** Extra flags (not used when writing a gzip file) */
1534.153 -    int     xflags;     
1534.154 -    /** Operating system */
1534.155 -    int     os;         
1534.156 -    /** Pointer to extra field or Z_NULL if none */
1534.157 -    Bytef   *extra;     
1534.158 -    /** Extra field length (valid if extra != Z_NULL) */
1534.159 -    uInt    extra_len;  
1534.160 -    /** Space at extra (only when reading header) */
1534.161 -    uInt    extra_max;  
1534.162 -    /** Pointer to zero-terminated file name or Z_NULL */
1534.163 -    Bytef   *name;      
1534.164 -    /** Space at name (only when reading header) */
1534.165 -    uInt    name_max;   
1534.166 -    /** Pointer to zero-terminated comment or Z_NULL */
1534.167 -    Bytef   *comment;   
1534.168 -    /** Space at comment (only when reading header) */
1534.169 -    uInt    comm_max;   
1534.170 -    /** True if there was or will be a header crc */
1534.171 -    int     hcrc;       
1534.172 -    /** True when done reading gzip header (not used when writing a gzip file) */
1534.173 -    int     done;   
1534.174 -} gz_header;
1534.175 -
1534.176 -/** gz_headerp is typedef gz_header* */
1534.177 -typedef gz_header FAR *gz_headerp;
1534.178 -
1534.179 -/*
1534.180 -   The application must update next_in and avail_in when avail_in has
1534.181 -   dropped to zero. It must update next_out and avail_out when avail_out
1534.182 -   has dropped to zero. The application must initialize zalloc, zfree and
1534.183 -   opaque before calling the init function. All other fields are set by the
1534.184 -   compression library and must not be updated by the application.
1534.185 -
1534.186 -   The opaque value provided by the application will be passed as the first
1534.187 -   parameter for calls of zalloc and zfree. This can be useful for custom
1534.188 -   memory management. The compression library attaches no meaning to the
1534.189 -   opaque value.
1534.190 -
1534.191 -   zalloc must return Z_NULL if there is not enough memory for the object.
1534.192 -   If zlib is used in a multi-threaded application, zalloc and zfree must be
1534.193 -   thread safe.
1534.194 -
1534.195 -   On 16-bit systems, the functions zalloc and zfree must be able to allocate
1534.196 -   exactly 65536 bytes, but will not be required to allocate more than this
1534.197 -   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
1534.198 -   pointers returned by zalloc for objects of exactly 65536 bytes *must*
1534.199 -   have their offset normalized to zero. The default allocation function
1534.200 -   provided by this library ensures this (see zutil.c). To reduce memory
1534.201 -   requirements and avoid any allocation of 64K objects, at the expense of
1534.202 -   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
1534.203 -
1534.204 -   The fields total_in and total_out can be used for statistics or
1534.205 -   progress reports. After compression, total_in holds the total size of
1534.206 -   the uncompressed data and may be saved for use in the decompressor
1534.207 -   (particularly if the decompressor wants to decompress everything in
1534.208 -   a single step).
1534.209 -*/
1534.210 -
1534.211 -                        /* constants */
1534.212 -
1534.213 -/** Allowed flush values; see deflate() and inflate() below for details */
1534.214 -#define Z_NO_FLUSH      0
1534.215 -/** Allowed flush values; see deflate() and inflate() below for details. This constant will be removed, use Z_SYNC_FLUSH instead*/
1534.216 -#define Z_PARTIAL_FLUSH 1
1534.217 -/** Allowed flush values; see deflate() and inflate() below for details */
1534.218 -#define Z_SYNC_FLUSH    2
1534.219 -/** Allowed flush values; see deflate() and inflate() below for details */
1534.220 -#define Z_FULL_FLUSH    3
1534.221 -/** Allowed flush values; see deflate() and inflate() below for details */
1534.222 -#define Z_FINISH        4
1534.223 -/** Allowed flush values; see deflate() and inflate() below for details */
1534.224 -#define Z_BLOCK         5
1534.225 -
1534.226 -
1534.227 -/** Return codes for the compression/decompression functions. Negative
1534.228 -values are errors, positive values are used for special but normal events. */
1534.229 -#define Z_OK            0
1534.230 -/** Return codes for the compression/decompression functions. Negative
1534.231 -values are errors, positive values are used for special but normal events. */
1534.232 -#define Z_STREAM_END    1
1534.233 -/** Return codes for the compression/decompression functions. Negative
1534.234 -values are errors, positive values are used for special but normal events. */
1534.235 -#define Z_NEED_DICT     2
1534.236 -/** Return codes for the compression/decompression functions. Negative
1534.237 -values are errors, positive values are used for special but normal events. */
1534.238 -#define Z_ERRNO        (-1)
1534.239 -/** Return codes for the compression/decompression functions. Negative
1534.240 -values are errors, positive values are used for special but normal events. */
1534.241 -#define Z_STREAM_ERROR (-2)
1534.242 -/** Return codes for the compression/decompression functions. Negative
1534.243 -values are errors, positive values are used for special but normal events. */
1534.244 -#define Z_DATA_ERROR   (-3)
1534.245 -/** Return codes for the compression/decompression functions. Negative
1534.246 -values are errors, positive values are used for special but normal events. */
1534.247 -#define Z_MEM_ERROR    (-4)
1534.248 -/** Return codes for the compression/decompression functions. Negative
1534.249 -values are errors, positive values are used for special but normal events. */
1534.250 -#define Z_BUF_ERROR    (-5)
1534.251 -/** Return codes for the compression/decompression functions. Negative
1534.252 -values are errors, positive values are used for special but normal events. */
1534.253 -#define Z_VERSION_ERROR (-6)
1534.254 -
1534.255 -
1534.256 -/** Compression level as no compression */
1534.257 -#define Z_NO_COMPRESSION         0
1534.258 -/** Compression level for best speed */
1534.259 -#define Z_BEST_SPEED             1
1534.260 -/** Compression level for best compression */
1534.261 -#define Z_BEST_COMPRESSION       9
1534.262 -/** Compression level for default compression */
1534.263 -#define Z_DEFAULT_COMPRESSION  (-1)
1534.264 -
1534.265 -
1534.266 -/** Compression strategy; see deflateInit2() below for details */
1534.267 -#define Z_FILTERED            1
1534.268 -/** Compression strategy; see deflateInit2() below for details */
1534.269 -#define Z_HUFFMAN_ONLY        2
1534.270 -/** Compression strategy; see deflateInit2() below for details */
1534.271 -#define Z_RLE                 3
1534.272 -/** Compression strategy; see deflateInit2() below for details */
1534.273 -#define Z_FIXED               4
1534.274 -/** Compression strategy; see deflateInit2() below for details */
1534.275 -#define Z_DEFAULT_STRATEGY    0
1534.276 -
1534.277 -
1534.278 -/** Possible values of the data_type field (though see inflate()) */
1534.279 -#define Z_BINARY   0
1534.280 -/** Possible values of the data_type field (though see inflate()) */
1534.281 -#define Z_TEXT     1
1534.282 -/** Possible values of the data_type field (though see inflate()). It is used for compatibility with 1.2.2 and earlier */
1534.283 -#define Z_ASCII    Z_TEXT   
1534.284 -/** Possible values of the data_type field (though see inflate()) */
1534.285 -#define Z_UNKNOWN  2
1534.286 -
1534.287 -
1534.288 -/** The deflate compression method (the only one supported in this version) */
1534.289 -#define Z_DEFLATED   8
1534.290 -
1534.291 -/** For initializing zalloc, zfree, opaque */
1534.292 -#define Z_NULL  0  
1534.293 -
1534.294 -/** For compatibility with versions < 1.0.2 */
1534.295 -#define zlib_version zlibVersion()
1534.296 -
1534.297 -
1534.298 -                        /* basic functions */
1534.299 -
1534.300 -/** The application can compare zlibVersion and ZLIB_VERSION for consistency.
1534.301 -   If the first character differs, the library code actually used is
1534.302 -   not compatible with the zlib.h header file used by the application.
1534.303 -   This check is automatically made by deflateInit and inflateInit.
1534.304 -   @return returns zlib version 
1534.305 - */
1534.306 -ZEXTERN const char * ZEXPORT zlibVersion OF((void));
1534.307 -
1534.308 -/*
1534.309 -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
1534.310 -
1534.311 -     Initializes the internal stream state for compression. The fields
1534.312 -   zalloc, zfree and opaque must be initialized before by the caller.
1534.313 -   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
1534.314 -   use default allocation functions.
1534.315 -
1534.316 -     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
1534.317 -   1 gives best speed, 9 gives best compression, 0 gives no compression at
1534.318 -   all (the input data is simply copied a block at a time).
1534.319 -   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
1534.320 -   compression (currently equivalent to level 6).
1534.321 -
1534.322 -     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
1534.323 -   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
1534.324 -   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
1534.325 -   with the version assumed by the caller (ZLIB_VERSION).
1534.326 -   msg is set to null if there is no error message.  deflateInit does not
1534.327 -   perform any compression: this will be done by deflate().
1534.328 -*/
1534.329 -
1534.330 -/**
1534.331 -    deflate compresses as much data as possible, and stops when the input
1534.332 -  buffer becomes empty or the output buffer becomes full. It may introduce some
1534.333 -  output latency (reading input without producing any output) except when
1534.334 -  forced to flush.
1534.335 -
1534.336 -    The detailed semantics are as follows. deflate performs one or both of the
1534.337 -  following actions:
1534.338 -
1534.339 -  - Compress more input starting at next_in and update next_in and avail_in
1534.340 -    accordingly. If not all input can be processed (because there is not
1534.341 -    enough room in the output buffer), next_in and avail_in are updated and
1534.342 -    processing will resume at this point for the next call of deflate().
1534.343 -
1534.344 -  - Provide more output starting at next_out and update next_out and avail_out
1534.345 -    accordingly. This action is forced if the parameter flush is non zero.
1534.346 -    Forcing flush frequently degrades the compression ratio, so this parameter
1534.347 -    should be set only when necessary (in interactive applications).
1534.348 -    Some output may be provided even if flush is not set.
1534.349 -
1534.350 -  Before the call of deflate(), the application should ensure that at least
1534.351 -  one of the actions is possible, by providing more input and/or consuming
1534.352 -  more output, and updating avail_in or avail_out accordingly; avail_out
1534.353 -  should never be zero before the call. The application can consume the
1534.354 -  compressed output when it wants, for example when the output buffer is full
1534.355 -  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
1534.356 -  and with zero avail_out, it must be called again after making room in the
1534.357 -  output buffer because there might be more output pending.
1534.358 -
1534.359 -    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
1534.360 -  decide how much data to accumualte before producing output, in order to
1534.361 -  maximize compression.
1534.362 -
1534.363 -    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
1534.364 -  flushed to the output buffer and the output is aligned on a byte boundary, so
1534.365 -  that the decompressor can get all input data available so far. (In particular
1534.366 -  avail_in is zero after the call if enough output space has been provided
1534.367 -  before the call.)  Flushing may degrade compression for some compression
1534.368 -  algorithms and so it should be used only when necessary.
1534.369 -
1534.370 -    If flush is set to Z_FULL_FLUSH, all output is flushed as with
1534.371 -  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
1534.372 -  restart from this point if previous compressed data has been damaged or if
1534.373 -  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
1534.374 -  compression.
1534.375 -
1534.376 -    If deflate returns with avail_out == 0, this function must be called again
1534.377 -  with the same value of the flush parameter and more output space (updated
1534.378 -  avail_out), until the flush is complete (deflate returns with non-zero
1534.379 -  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
1534.380 -  avail_out is greater than six to avoid repeated flush markers due to
1534.381 -  avail_out == 0 on return.
1534.382 -
1534.383 -    If the parameter flush is set to Z_FINISH, pending input is processed,
1534.384 -  pending output is flushed and deflate returns with Z_STREAM_END if there
1534.385 -  was enough output space; if deflate returns with Z_OK, this function must be
1534.386 -  called again with Z_FINISH and more output space (updated avail_out) but no
1534.387 -  more input data, until it returns with Z_STREAM_END or an error. After
1534.388 -  deflate has returned Z_STREAM_END, the only possible operations on the
1534.389 -  stream are deflateReset or deflateEnd.
1534.390 -
1534.391 -    Z_FINISH can be used immediately after deflateInit if all the compression
1534.392 -  is to be done in a single step. In this case, avail_out must be at least
1534.393 -  the value returned by deflateBound (see below). If deflate does not return
1534.394 -  Z_STREAM_END, then it must be called again as described above.
1534.395 -
1534.396 -    deflate() sets strm->adler to the adler32 checksum of all input read
1534.397 -  so far (that is, total_in bytes).
1534.398 -
1534.399 -    deflate() may update strm->data_type if it can make a good guess about
1534.400 -  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
1534.401 -  binary. This field is only for information purposes and does not affect
1534.402 -  the compression algorithm in any manner.
1534.403 -
1534.404 -    deflate() returns Z_OK if some progress has been made (more input
1534.405 -  processed or more output produced), Z_STREAM_END if all input has been
1534.406 -  consumed and all output has been produced (only when flush is set to
1534.407 -  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
1534.408 -  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
1534.409 -  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
1534.410 -  fatal, and deflate() can be called again with more input and more output
1534.411 -  space to continue compressing.
1534.412 -  
1534.413 -  @param strm Stream of data
1534.414 -  @param flush Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
1534.415 -  decide how much data to accumualte before producing output, in order to
1534.416 -  maximize compression. Refer to the description above for more details.
1534.417 -  @return deflate returns Z_OK on success. Refer to the description above for more details.
1534.418 -*/
1534.419 -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
1534.420 -
1534.421 -/**
1534.422 -     All dynamically allocated data structures for this stream are freed.
1534.423 -   This function discards any unprocessed input and does not flush any
1534.424 -   pending output.
1534.425 -
1534.426 -     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
1534.427 -   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
1534.428 -   prematurely (some input or output was discarded). In the error case,
1534.429 -   msg may be set but then points to a static string (which must not be
1534.430 -   deallocated).
1534.431 -   
1534.432 -   @param strm Stream of data
1534.433 -   @return deflateEnd returns Z_OK on success. Refer to the description above for more details.
1534.434 -*/
1534.435 -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
1534.436 -
1534.437 -/*
1534.438 -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
1534.439 -
1534.440 -     Initializes the internal stream state for decompression. The fields
1534.441 -   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
1534.442 -   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
1534.443 -   value depends on the compression method), inflateInit determines the
1534.444 -   compression method from the zlib header and allocates all data structures
1534.445 -   accordingly; otherwise the allocation will be deferred to the first call of
1534.446 -   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
1534.447 -   use default allocation functions.
1534.448 -
1534.449 -     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.450 -   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
1534.451 -   version assumed by the caller.  msg is set to null if there is no error
1534.452 -   message. inflateInit does not perform any decompression apart from reading
1534.453 -   the zlib header if present: this will be done by inflate().  (So next_in and
1534.454 -   avail_in may be modified, but next_out and avail_out are unchanged.)
1534.455 -*/
1534.456 -
1534.457 -/**
1534.458 -    inflate decompresses as much data as possible, and stops when the input
1534.459 -  buffer becomes empty or the output buffer becomes full. It may introduce
1534.460 -  some output latency (reading input without producing any output) except when
1534.461 -  forced to flush.
1534.462 -
1534.463 -  The detailed semantics are as follows. inflate performs one or both of the
1534.464 -  following actions:
1534.465 -
1534.466 -  - Decompress more input starting at next_in and update next_in and avail_in
1534.467 -    accordingly. If not all input can be processed (because there is not
1534.468 -    enough room in the output buffer), next_in is updated and processing
1534.469 -    will resume at this point for the next call of inflate().
1534.470 -
1534.471 -  - Provide more output starting at next_out and update next_out and avail_out
1534.472 -    accordingly.  inflate() provides as much output as possible, until there
1534.473 -    is no more input data or no more space in the output buffer (see below
1534.474 -    about the flush parameter).
1534.475 -
1534.476 -  Before the call of inflate(), the application should ensure that at least
1534.477 -  one of the actions is possible, by providing more input and/or consuming
1534.478 -  more output, and updating the next_* and avail_* values accordingly.
1534.479 -  The application can consume the uncompressed output when it wants, for
1534.480 -  example when the output buffer is full (avail_out == 0), or after each
1534.481 -  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
1534.482 -  must be called again after making room in the output buffer because there
1534.483 -  might be more output pending.
1534.484 -
1534.485 -    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
1534.486 -  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
1534.487 -  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
1534.488 -  if and when it gets to the next deflate block boundary. When decoding the
1534.489 -  zlib or gzip format, this will cause inflate() to return immediately after
1534.490 -  the header and before the first block. When doing a raw inflate, inflate()
1534.491 -  will go ahead and process the first block, and will return when it gets to
1534.492 -  the end of that block, or when it runs out of data.
1534.493 -
1534.494 -    The Z_BLOCK option assists in appending to or combining deflate streams.
1534.495 -  Also to assist in this, on return inflate() will set strm->data_type to the
1534.496 -  number of unused bits in the last byte taken from strm->next_in, plus 64
1534.497 -  if inflate() is currently decoding the last block in the deflate stream,
1534.498 -  plus 128 if inflate() returned immediately after decoding an end-of-block
1534.499 -  code or decoding the complete header up to just before the first byte of the
1534.500 -  deflate stream. The end-of-block will not be indicated until all of the
1534.501 -  uncompressed data from that block has been written to strm->next_out.  The
1534.502 -  number of unused bits may in general be greater than seven, except when
1534.503 -  bit 7 of data_type is set, in which case the number of unused bits will be
1534.504 -  less than eight.
1534.505 -
1534.506 -    inflate() should normally be called until it returns Z_STREAM_END or an
1534.507 -  error. However if all decompression is to be performed in a single step
1534.508 -  (a single call of inflate), the parameter flush should be set to
1534.509 -  Z_FINISH. In this case all pending input is processed and all pending
1534.510 -  output is flushed; avail_out must be large enough to hold all the
1534.511 -  uncompressed data. (The size of the uncompressed data may have been saved
1534.512 -  by the compressor for this purpose.) The next operation on this stream must
1534.513 -  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
1534.514 -  is never required, but can be used to inform inflate that a faster approach
1534.515 -  may be used for the single inflate() call.
1534.516 -
1534.517 -     In this implementation, inflate() always flushes as much output as
1534.518 -  possible to the output buffer, and always uses the faster approach on the
1534.519 -  first call. So the only effect of the flush parameter in this implementation
1534.520 -  is on the return value of inflate(), as noted below, or when it returns early
1534.521 -  because Z_BLOCK is used.
1534.522 -
1534.523 -     If a preset dictionary is needed after this call (see inflateSetDictionary
1534.524 -  below), inflate sets strm->adler to the adler32 checksum of the dictionary
1534.525 -  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
1534.526 -  strm->adler to the adler32 checksum of all output produced so far (that is,
1534.527 -  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
1534.528 -  below. At the end of the stream, inflate() checks that its computed adler32
1534.529 -  checksum is equal to that saved by the compressor and returns Z_STREAM_END
1534.530 -  only if the checksum is correct.
1534.531 -
1534.532 -    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
1534.533 -  deflate data.  The header type is detected automatically.  Any information
1534.534 -  contained in the gzip header is not retained, so applications that need that
1534.535 -  information should instead use raw inflate, see inflateInit2() below, or
1534.536 -  inflateBack() and perform their own processing of the gzip header and
1534.537 -  trailer.
1534.538 -
1534.539 -    inflate() returns Z_OK if some progress has been made (more input processed
1534.540 -  or more output produced), Z_STREAM_END if the end of the compressed data has
1534.541 -  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
1534.542 -  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
1534.543 -  corrupted (input stream not conforming to the zlib format or incorrect check
1534.544 -  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
1534.545 -  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
1534.546 -  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
1534.547 -  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
1534.548 -  inflate() can be called again with more input and more output space to
1534.549 -  continue decompressing. If Z_DATA_ERROR is returned, the application may then
1534.550 -  call inflateSync() to look for a good compression block if a partial recovery
1534.551 -  of the data is desired.
1534.552 -
1534.553 -  @param strm Stream of data
1534.554 -  @param flush This parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
1534.555 -  Z_FINISH, or Z_BLOCK. Refer to the description for more details.
1534.556 -  @return inflate returns Z_OK on success. Refer to the description above for more details.
1534.557 -*/
1534.558 -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
1534.559 -
1534.560 -/**
1534.561 -     All dynamically allocated data structures for this stream are freed.
1534.562 -   This function discards any unprocessed input and does not flush any
1534.563 -   pending output.
1534.564 -
1534.565 -  @param strm Stream of data
1534.566 -  @return inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
1534.567 -   was inconsistent. In the error case, msg may be set but then points to a
1534.568 -   static string (which must not be deallocated). 
1534.569 -*/
1534.570 -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
1534.571 -
1534.572 -                        /* Advanced functions */
1534.573 -
1534.574 -/*
1534.575 -    The following functions are needed only in some special applications.
1534.576 -*/
1534.577 -
1534.578 -/*
1534.579 -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
1534.580 -                                     int  level,
1534.581 -                                     int  method,
1534.582 -                                     int  windowBits,
1534.583 -                                     int  memLevel,
1534.584 -                                     int  strategy));
1534.585 -
1534.586 -     This is another version of deflateInit with more compression options. The
1534.587 -   fields next_in, zalloc, zfree and opaque must be initialized before by
1534.588 -   the caller.
1534.589 -
1534.590 -     The method parameter is the compression method. It must be Z_DEFLATED in
1534.591 -   this version of the library.
1534.592 -
1534.593 -     The windowBits parameter is the base two logarithm of the window size
1534.594 -   (the size of the history buffer). It should be in the range 8..15 for this
1534.595 -   version of the library. Larger values of this parameter result in better
1534.596 -   compression at the expense of memory usage. The default value is 15 if
1534.597 -   deflateInit is used instead.
1534.598 -
1534.599 -     Note: In this version of the library a windowBits value of 8 is unsupported
1534.600 -   due to a problem with the window size being set to 256 bytes. Although a
1534.601 -   value of 8 will be accepted by deflateInit2(), as it is being changed
1534.602 -   internally from 8 to 9, it will not be possible to use the same value when it
1534.603 -   comes to decompression. This is because inflateInit2() does not make the same
1534.604 -   change internally and as a result a Z_DATA_ERROR is returned when calling
1534.605 -   inflate(). It is therefore advised that for this version of the library 
1534.606 -   windowBits of 9 is used in place of 8.
1534.607 -
1534.608 -     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
1534.609 -   determines the window size. deflate() will then generate raw deflate data
1534.610 -   with no zlib header or trailer, and will not compute an adler32 check value.
1534.611 -
1534.612 -     windowBits can also be greater than 15 for optional gzip encoding. Add
1534.613 -   16 to windowBits to write a simple gzip header and trailer around the
1534.614 -   compressed data instead of a zlib wrapper. The gzip header will have no
1534.615 -   file name, no extra data, no comment, no modification time (set to zero),
1534.616 -   no header crc, and the operating system will be set to 3 (UNIX).  If a
1534.617 -   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
1534.618 -
1534.619 -     The memLevel parameter specifies how much memory should be allocated
1534.620 -   for the internal compression state. memLevel=1 uses minimum memory but
1534.621 -   is slow and reduces compression ratio; memLevel=9 uses maximum memory
1534.622 -   for optimal speed. The default value is 8. See zconf.h for total memory
1534.623 -   usage as a function of windowBits and memLevel.
1534.624 -
1534.625 -     The strategy parameter is used to tune the compression algorithm. Use the
1534.626 -   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
1534.627 -   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
1534.628 -   string match), or Z_RLE to limit match distances to one (run-length
1534.629 -   encoding). Filtered data consists mostly of small values with a somewhat
1534.630 -   random distribution. In this case, the compression algorithm is tuned to
1534.631 -   compress them better. The effect of Z_FILTERED is to force more Huffman
1534.632 -   coding and less string matching; it is somewhat intermediate between
1534.633 -   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
1534.634 -   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
1534.635 -   parameter only affects the compression ratio but not the correctness of the
1534.636 -   compressed output even if it is not set appropriately.  Z_FIXED prevents the
1534.637 -   use of dynamic Huffman codes, allowing for a simpler decoder for special
1534.638 -   applications.
1534.639 -
1534.640 -      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.641 -   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
1534.642 -   method). msg is set to null if there is no error message.  deflateInit2 does
1534.643 -   not perform any compression: this will be done by deflate().
1534.644 -*/
1534.645 -
1534.646 -/**
1534.647 -     Initializes the compression dictionary from the given byte sequence
1534.648 -   without producing any compressed output. This function must be called
1534.649 -   immediately after deflateInit, deflateInit2 or deflateReset, before any
1534.650 -   call of deflate. The compressor and decompressor must use exactly the same
1534.651 -   dictionary (see inflateSetDictionary).
1534.652 -
1534.653 -     The dictionary should consist of strings (byte sequences) that are likely
1534.654 -   to be encountered later in the data to be compressed, with the most commonly
1534.655 -   used strings preferably put towards the end of the dictionary. Using a
1534.656 -   dictionary is most useful when the data to be compressed is short and can be
1534.657 -   predicted with good accuracy; the data can then be compressed better than
1534.658 -   with the default empty dictionary.
1534.659 -
1534.660 -     Depending on the size of the compression data structures selected by
1534.661 -   deflateInit or deflateInit2, a part of the dictionary may in effect be
1534.662 -   discarded, for example if the dictionary is larger than the window size in
1534.663 -   deflate or deflate2. Thus the strings most likely to be useful should be
1534.664 -   put at the end of the dictionary, not at the front. In addition, the
1534.665 -   current implementation of deflate will use at most the window size minus
1534.666 -   262 bytes of the provided dictionary.
1534.667 -
1534.668 -     Upon return of this function, strm->adler is set to the adler32 value
1534.669 -   of the dictionary; the decompressor may later use this value to determine
1534.670 -   which dictionary has been used by the compressor. (The adler32 value
1534.671 -   applies to the whole dictionary even if only a subset of the dictionary is
1534.672 -   actually used by the compressor.) If a raw deflate was requested, then the
1534.673 -   adler32 value is not computed and strm->adler is not set.
1534.674 -   
1534.675 -  @param strm Stream of data
1534.676 -  @param dictionary Pointer to the dictionary. Refer to the description above for more details.
1534.677 -  @param dictLength Dictionay Length
1534.678 -  @return deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
1534.679 -   parameter is invalid (such as NULL dictionary) or the stream state is
1534.680 -   inconsistent (for example if deflate has already been called for this stream
1534.681 -   or if the compression method is bsort). deflateSetDictionary does not
1534.682 -   perform any compression: this will be done by deflate(). 
1534.683 -*/
1534.684 -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
1534.685 -                                             const Bytef *dictionary,
1534.686 -                                             uInt  dictLength));
1534.687 -
1534.688 -/**
1534.689 -     Sets the destination stream as a complete copy of the source stream.
1534.690 -
1534.691 -     This function can be useful when several compression strategies will be
1534.692 -   tried, for example when there are several ways of pre-processing the input
1534.693 -   data with a filter. The streams that will be discarded should then be freed
1534.694 -   by calling deflateEnd.  Note that deflateCopy duplicates the internal
1534.695 -   compression state which can be quite large, so this strategy is slow and
1534.696 -   can consume lots of memory.
1534.697 -   
1534.698 -   @param dest destination stream 
1534.699 -   @param souce source stream of data
1534.700 -   @return deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
1534.701 -   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
1534.702 -   (such as zalloc being NULL). msg is left unchanged in both source and
1534.703 -   destination.
1534.704 -*/
1534.705 -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
1534.706 -                                    z_streamp source));
1534.707 -
1534.708 -/**
1534.709 -     This function is equivalent to deflateEnd followed by deflateInit,
1534.710 -   but does not free and reallocate all the internal compression state.
1534.711 -   The stream will keep the same compression level and any other attributes
1534.712 -   that may have been set by deflateInit2.
1534.713 -   
1534.714 -   @param strm stream of data
1534.715 -   @return deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
1534.716 -   stream state was inconsistent (such as zalloc or state being NULL).
1534.717 -*/
1534.718 -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
1534.719 -
1534.720 -/**
1534.721 -     Dynamically update the compression level and compression strategy.  The
1534.722 -   interpretation of level and strategy is as in deflateInit2.  This can be
1534.723 -   used to switch between compression and straight copy of the input data, or
1534.724 -   to switch to a different kind of input data requiring a different
1534.725 -   strategy. If the compression level is changed, the input available so far
1534.726 -   is compressed with the old level (and may be flushed); the new level will
1534.727 -   take effect only at the next call of deflate().
1534.728 -
1534.729 -     Before the call of deflateParams, the stream state must be set as for
1534.730 -   a call of deflate(), since the currently available input may have to
1534.731 -   be compressed and flushed. In particular, strm->avail_out must be non-zero.
1534.732 -   
1534.733 -   @param strm stream of data
1534.734 -   @param level compression level
1534.735 -   @param strategy compression algorithm
1534.736 -   @return deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
1534.737 -   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
1534.738 -   if strm->avail_out was zero.
1534.739 -*/
1534.740 -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
1534.741 -                                      int level,
1534.742 -                                      int strategy));
1534.743 -
1534.744 -/**
1534.745 -     Fine tune deflate's internal compression parameters.  This should only be
1534.746 -   used by someone who understands the algorithm used by zlib's deflate for
1534.747 -   searching for the best matching string, and even then only by the most
1534.748 -   fanatic optimizer trying to squeeze out the last compressed bit for their
1534.749 -   specific input data.  Read the deflate.c source code for the meaning of the
1534.750 -   max_lazy, good_length, nice_length, and max_chain parameters.
1534.751 -
1534.752 -     deflateTune() can be called after deflateInit() or deflateInit2()
1534.753 -   
1534.754 -   @param strm stream of data
1534.755 -   @param good_length reduce lazy search above this match length
1534.756 -   @param max_lazy do not perform lazy search above this match length
1534.757 -   @param nice_length quit search above this match length
1534.758 -   @param max_chain
1534.759 -   @return deflateTune returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
1534.760 - */
1534.761 -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
1534.762 -                                    int good_length,
1534.763 -                                    int max_lazy,
1534.764 -                                    int nice_length,
1534.765 -                                    int max_chain));
1534.766 -
1534.767 -/**
1534.768 -     deflateBound() returns an upper bound on the compressed size after
1534.769 -   deflation of sourceLen bytes.  It must be called after deflateInit()
1534.770 -   or deflateInit2().  This would be used to allocate an output buffer
1534.771 -   for deflation in a single pass, and so would be called before deflate().
1534.772 -   
1534.773 -   @param strm stream of data
1534.774 -   @param sourceLen source length
1534.775 -   @return deflateBound returns an upper bound on the compressed size after
1534.776 -   deflation of sourceLen bytes.
1534.777 -*/
1534.778 -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
1534.779 -                                       uLong sourceLen));
1534.780 -
1534.781 -/**
1534.782 -     deflatePrime() inserts bits in the deflate output stream.  The intent
1534.783 -  is that this function is used to start off the deflate output with the
1534.784 -  bits leftover from a previous deflate stream when appending to it.  As such,
1534.785 -  this function can only be used for raw deflate, and must be used before the
1534.786 -  first deflate() call after a deflateInit2() or deflateReset().  bits must be
1534.787 -  less than or equal to 16, and that many of the least significant bits of
1534.788 -  value will be inserted in the output.
1534.789 -   
1534.790 -   @param strm stream of data
1534.791 -   @param bits bits must be less than or equal to 16, and that many of the least 
1534.792 -   significant bits of value will be inserted in the output.
1534.793 -   @param value represents value of the bits to be inserted
1534.794 -   @return deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
1534.795 -   stream state was inconsistent.
1534.796 -*/
1534.797 -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
1534.798 -                                     int bits,
1534.799 -                                     int value));
1534.800 -
1534.801 -/**
1534.802 -      deflateSetHeader() provides gzip header information for when a gzip
1534.803 -   stream is requested by deflateInit2().  deflateSetHeader() may be called
1534.804 -   after deflateInit2() or deflateReset() and before the first call of
1534.805 -   deflate().  The text, time, os, extra field, name, and comment information
1534.806 -   in the provided gz_header structure are written to the gzip header (xflag is
1534.807 -   ignored -- the extra flags are set according to the compression level).  The
1534.808 -   caller must assure that, if not Z_NULL, name and comment are terminated with
1534.809 -   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
1534.810 -   available there.  If hcrc is true, a gzip header crc is included.  Note that
1534.811 -   the current versions of the command-line version of gzip (up through version
1534.812 -   1.3.x) do not support header crc's, and will report that it is a "multi-part
1534.813 -   gzip file" and give up.
1534.814 -
1534.815 -      If deflateSetHeader is not used, the default gzip header has text false,
1534.816 -   the time set to zero, and os set to 3, with no extra, name, or comment
1534.817 -   fields.  The gzip header is returned to the default state by deflateReset().
1534.818 -   
1534.819 -   @param strm stream of data
1534.820 -   @param head gzip header
1534.821 -   @return deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
1534.822 -   stream state was inconsistent.
1534.823 -*/
1534.824 -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
1534.825 -                                         gz_headerp head));
1534.826 -
1534.827 -/*
1534.828 -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
1534.829 -                                     int  windowBits));
1534.830 -
1534.831 -     This is another version of inflateInit with an extra parameter. The
1534.832 -   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
1534.833 -   before by the caller.
1534.834 -
1534.835 -     The windowBits parameter is the base two logarithm of the maximum window
1534.836 -   size (the size of the history buffer).  It should be in the range 8..15 for
1534.837 -   this version of the library. The default value is 15 if inflateInit is used
1534.838 -   instead. windowBits must be greater than or equal to the windowBits value
1534.839 -   provided to deflateInit2() while compressing, or it must be equal to 15 if
1534.840 -   deflateInit2() was not used. If a compressed stream with a larger window
1534.841 -   size is given as input, inflate() will return with the error code
1534.842 -   Z_DATA_ERROR instead of trying to allocate a larger window.
1534.843 -
1534.844 -     Note: In this version of the library a windowBits value of 8 is unsupported
1534.845 -   due to a problem with the window size being set to 256 bytes. Although a
1534.846 -   value of 8 will be accepted by deflateInit2(), as it is being changed
1534.847 -   internally from 8 to 9, it will not be possible to use the same value when it
1534.848 -   comes to decompression. This is because inflateInit2() does not make the same
1534.849 -   change internally and as a result a Z_DATA_ERROR is returned when calling
1534.850 -   inflate(). It is therefore advised that for this version of the library 
1534.851 -   windowBits of 9 is used in place of 8.
1534.852 -
1534.853 -     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
1534.854 -   determines the window size. inflate() will then process raw deflate data,
1534.855 -   not looking for a zlib or gzip header, not generating a check value, and not
1534.856 -   looking for any check values for comparison at the end of the stream. This
1534.857 -   is for use with other formats that use the deflate compressed data format
1534.858 -   such as zip.  Those formats provide their own check values. If a custom
1534.859 -   format is developed using the raw deflate format for compressed data, it is
1534.860 -   recommended that a check value such as an adler32 or a crc32 be applied to
1534.861 -   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
1534.862 -   most applications, the zlib format should be used as is. Note that comments
1534.863 -   above on the use in deflateInit2() applies to the magnitude of windowBits.
1534.864 -
1534.865 -     windowBits can also be greater than 15 for optional gzip decoding. Add
1534.866 -   32 to windowBits to enable zlib and gzip decoding with automatic header
1534.867 -   detection, or add 16 to decode only the gzip format (the zlib format will
1534.868 -   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
1534.869 -   a crc32 instead of an adler32.
1534.870 -
1534.871 -     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.872 -   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
1534.873 -   is set to null if there is no error message.  inflateInit2 does not perform
1534.874 -   any decompression apart from reading the zlib header if present: this will
1534.875 -   be done by inflate(). (So next_in and avail_in may be modified, but next_out
1534.876 -   and avail_out are unchanged.)
1534.877 -*/
1534.878 -
1534.879 -/**
1534.880 -     Initializes the decompression dictionary from the given uncompressed byte
1534.881 -   sequence. This function must be called immediately after a call of inflate,
1534.882 -   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
1534.883 -   can be determined from the adler32 value returned by that call of inflate.
1534.884 -   The compressor and decompressor must use exactly the same dictionary (see
1534.885 -   deflateSetDictionary).  For raw inflate, this function can be called
1534.886 -   immediately after inflateInit2() or inflateReset() and before any call of
1534.887 -   inflate() to set the dictionary.  The application must insure that the
1534.888 -   dictionary that was used for compression is provided.
1534.889 -
1534.890 -   inflateSetDictionary does not perform any decompression: this will be done 
1534.891 -   by subsequent calls of inflate().
1534.892 -   
1534.893 -   @param strm stream of data
1534.894 -   @param dictionary Pointer to dictionary
1534.895 -   @param dictLength Dictionary Length
1534.896 -   @return inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
1534.897 -   parameter is invalid (such as NULL dictionary) or the stream state is
1534.898 -   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
1534.899 -   expected one (incorrect adler32 value). 
1534.900 -*/
1534.901 -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
1534.902 -                                             const Bytef *dictionary,
1534.903 -                                             uInt  dictLength));
1534.904 -
1534.905 -/**
1534.906 -    Skips invalid compressed data until a full flush point (see above the
1534.907 -  description of deflate with Z_FULL_FLUSH) can be found, or until all
1534.908 -  available input is skipped. No output is provided.
1534.909 -
1534.910 -  @param strm Stream of data
1534.911 -  @return inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
1534.912 -  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
1534.913 -  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
1534.914 -  case, the application may save the current current value of total_in which
1534.915 -  indicates where valid compressed data was found. In the error case, the
1534.916 -  application may repeatedly call inflateSync, providing more input each time,
1534.917 -  until success or end of the input data.
1534.918 -*/
1534.919 -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
1534.920 -
1534.921 -/**
1534.922 -     Sets the destination stream as a complete copy of the source stream.
1534.923 -
1534.924 -     This function can be useful when randomly accessing a large stream.  The
1534.925 -   first pass through the stream can periodically record the inflate state,
1534.926 -   allowing restarting inflate at those points when randomly accessing the
1534.927 -   stream.
1534.928 -   
1534.929 -   @param dest destination stream
1534.930 -   @param source source stream of data
1534.931 -   @return inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
1534.932 -   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
1534.933 -   (such as zalloc being NULL). msg is left unchanged in both source and
1534.934 -   destination.
1534.935 -*/
1534.936 -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
1534.937 -                                    z_streamp source));
1534.938 -
1534.939 -/**
1534.940 -     This function is equivalent to inflateEnd followed by inflateInit,
1534.941 -   but does not free and reallocate all the internal decompression state.
1534.942 -   The stream will keep attributes that may have been set by inflateInit2.
1534.943 -
1534.944 -   @param strm Stream of data
1534.945 -   @return inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
1534.946 -   stream state was inconsistent (such as zalloc or state being NULL).
1534.947 -*/
1534.948 -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
1534.949 -
1534.950 -/**
1534.951 -     This function inserts bits in the inflate input stream.  The intent is
1534.952 -  that this function is used to start inflating at a bit position in the
1534.953 -  middle of a byte.  The provided bits will be used before any bytes are used
1534.954 -  from next_in.  This function should only be used with raw inflate, and
1534.955 -  should be used before the first inflate() call after inflateInit2() or
1534.956 -  inflateReset().  bits must be less than or equal to 16, and that many of the
1534.957 -  least significant bits of value will be inserted in the input.
1534.958 -
1534.959 -   @param strm stream of data
1534.960 -   @param bits bits must be less than or equal to 16, and that many of the
1534.961 -   least significant bits of value will be inserted in the input.
1534.962 -   @param value @param value represents value of the bits to be inserted
1534.963 -   @return inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
1534.964 -   stream state was inconsistent.
1534.965 -*/
1534.966 -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
1534.967 -                                     int bits,
1534.968 -                                     int value));
1534.969 -
1534.970 -/**
1534.971 -      inflateGetHeader() requests that gzip header information be stored in the
1534.972 -   provided gz_header structure.  inflateGetHeader() may be called after
1534.973 -   inflateInit2() or inflateReset(), and before the first call of inflate().
1534.974 -   As inflate() processes the gzip stream, head->done is zero until the header
1534.975 -   is completed, at which time head->done is set to one.  If a zlib stream is
1534.976 -   being decoded, then head->done is set to -1 to indicate that there will be
1534.977 -   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
1534.978 -   force inflate() to return immediately after header processing is complete
1534.979 -   and before any actual data is decompressed.
1534.980 -
1534.981 -      The text, time, xflags, and os fields are filled in with the gzip header
1534.982 -   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
1534.983 -   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
1534.984 -   contains the maximum number of bytes to write to extra.  Once done is true,
1534.985 -   extra_len contains the actual extra field length, and extra contains the
1534.986 -   extra field, or that field truncated if extra_max is less than extra_len.
1534.987 -   If name is not Z_NULL, then up to name_max characters are written there,
1534.988 -   terminated with a zero unless the length is greater than name_max.  If
1534.989 -   comment is not Z_NULL, then up to comm_max characters are written there,
1534.990 -   terminated with a zero unless the length is greater than comm_max.  When
1534.991 -   any of extra, name, or comment are not Z_NULL and the respective field is
1534.992 -   not present in the header, then that field is set to Z_NULL to signal its
1534.993 -   absence.  This allows the use of deflateSetHeader() with the returned
1534.994 -   structure to duplicate the header.  However if those fields are set to
1534.995 -   allocated memory, then the application will need to save those pointers
1534.996 -   elsewhere so that they can be eventually freed.
1534.997 -
1534.998 -      If inflateGetHeader is not used, then the header information is simply
1534.999 -   discarded.  The header is always checked for validity, including the header
1534.1000 -   CRC if present.  inflateReset() will reset the process to discard the header
1534.1001 -   information.  The application would need to call inflateGetHeader() again to
1534.1002 -   retrieve the header from the next gzip stream.
1534.1003 -
1534.1004 -   @param stream of data
1534.1005 -   @param head gzip header
1534.1006 -   @return inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
1534.1007 -   stream state was inconsistent.
1534.1008 -*/
1534.1009 -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
1534.1010 -                                         gz_headerp head));
1534.1011 -
1534.1012 -/*
1534.1013 -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
1534.1014 -                                        unsigned char FAR *window));
1534.1015 -
1534.1016 -     Initialize the internal stream state for decompression using inflateBack()
1534.1017 -   calls.  The fields zalloc, zfree and opaque in strm must be initialized
1534.1018 -   before the call.  If zalloc and zfree are Z_NULL, then the default library-
1534.1019 -   derived memory allocation routines are used.  windowBits is the base two
1534.1020 -   logarithm of the window size, in the range 8..15.  window is a caller
1534.1021 -   supplied buffer of that size.  Except for special applications where it is
1534.1022 -   assured that deflate was used with small window sizes, windowBits must be 15
1534.1023 -   and a 32K byte window must be supplied to be able to decompress general
1534.1024 -   deflate streams.
1534.1025 -
1534.1026 -     Note: In this version of the library a windowBits value of 8 is unsupported
1534.1027 -   due to a problem with the window size being set to 256 bytes. Although a
1534.1028 -   value of 8 will be accepted by deflateInit2(), as it is being changed
1534.1029 -   internally from 8 to 9, it will not be possible to use the same value when it
1534.1030 -   comes to decompression. This is because inflateInit2() does not make the same
1534.1031 -   change internally and as a result a Z_DATA_ERROR is returned when calling
1534.1032 -   inflate(). It is therefore advised that for this version of the library 
1534.1033 -   windowBits of 9 is used in place of 8.
1534.1034 -
1534.1035 -     See inflateBack() for the usage of these routines.
1534.1036 -
1534.1037 -     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
1534.1038 -   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
1534.1039 -   be allocated, or Z_VERSION_ERROR if the version of the library does not
1534.1040 -   match the version of the header file.
1534.1041 -*/
1534.1042 -
1534.1043 -/** Input function pointer defined to be used in inflateBack */
1534.1044 -typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
1534.1045 -/** Output function pointer defined to be used in inflateBack */
1534.1046 -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
1534.1047 -
1534.1048 -
1534.1049 -/**
1534.1050 -     inflateBack() does a raw inflate with a single call using a call-back
1534.1051 -   interface for input and output.  This is more efficient than inflate() for
1534.1052 -   file i/o applications in that it avoids copying between the output and the
1534.1053 -   sliding window by simply making the window itself the output buffer.  This
1534.1054 -   function trusts the application to not change the output buffer passed by
1534.1055 -   the output function, at least until inflateBack() returns.
1534.1056 -
1534.1057 -     inflateBackInit() must be called first to allocate the internal state
1534.1058 -   and to initialize the state with the user-provided window buffer.
1534.1059 -   inflateBack() may then be used multiple times to inflate a complete, raw
1534.1060 -   deflate stream with each call.  inflateBackEnd() is then called to free
1534.1061 -   the allocated state.
1534.1062 -
1534.1063 -     A raw deflate stream is one with no zlib or gzip header or trailer.
1534.1064 -   This routine would normally be used in a utility that reads zip or gzip
1534.1065 -   files and writes out uncompressed files.  The utility would decode the
1534.1066 -   header and process the trailer on its own, hence this routine expects
1534.1067 -   only the raw deflate stream to decompress.  This is different from the
1534.1068 -   normal behavior of inflate(), which expects either a zlib or gzip header and
1534.1069 -   trailer around the deflate stream.
1534.1070 -
1534.1071 -     inflateBack() uses two subroutines supplied by the caller that are then
1534.1072 -   called by inflateBack() for input and output.  inflateBack() calls those
1534.1073 -   routines until it reads a complete deflate stream and writes out all of the
1534.1074 -   uncompressed data, or until it encounters an error.  The function's
1534.1075 -   parameters and return types are defined above in the in_func and out_func
1534.1076 -   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
1534.1077 -   number of bytes of provided input, and a pointer to that input in buf.  If
1534.1078 -   there is no input available, in() must return zero--buf is ignored in that
1534.1079 -   case--and inflateBack() will return a buffer error.  inflateBack() will call
1534.1080 -   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
1534.1081 -   should return zero on success, or non-zero on failure.  If out() returns
1534.1082 -   non-zero, inflateBack() will return with an error.  Neither in() nor out()
1534.1083 -   are permitted to change the contents of the window provided to
1534.1084 -   inflateBackInit(), which is also the buffer that out() uses to write from.
1534.1085 -   The length written by out() will be at most the window size.  Any non-zero
1534.1086 -   amount of input may be provided by in().
1534.1087 -
1534.1088 -     For convenience, inflateBack() can be provided input on the first call by
1534.1089 -   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
1534.1090 -   in() will be called.  Therefore strm->next_in must be initialized before
1534.1091 -   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
1534.1092 -   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
1534.1093 -   must also be initialized, and then if strm->avail_in is not zero, input will
1534.1094 -   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
1534.1095 -
1534.1096 -     The in_desc and out_desc parameters of inflateBack() is passed as the
1534.1097 -   first parameter of in() and out() respectively when they are called.  These
1534.1098 -   descriptors can be optionally used to pass any information that the caller-
1534.1099 -   supplied in() and out() functions need to do their job.
1534.1100 -
1534.1101 -     On return, inflateBack() will set strm->next_in and strm->avail_in to
1534.1102 -   pass back any unused input that was provided by the last in() call.  The
1534.1103 -   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
1534.1104 -   if in() or out() returned an error, Z_DATA_ERROR if there was a format
1534.1105 -   error in the deflate stream (in which case strm->msg is set to indicate the
1534.1106 -   nature of the error), or Z_STREAM_ERROR if the stream was not properly
1534.1107 -   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
1534.1108 -   distinguished using strm->next_in which will be Z_NULL only if in() returned
1534.1109 -   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
1534.1110 -   out() returning non-zero.  (in() will always be called before out(), so
1534.1111 -   strm->next_in is assured to be defined if out() returns non-zero.)  Note
1534.1112 -   that inflateBack() cannot return Z_OK.
1534.1113 -   
1534.1114 -   @param strm stream of data
1534.1115 -   @param in input function pointer
1534.1116 -   @param in_desc input parameters for in_func
1534.1117 -   @param out output function pointer
1534.1118 -   @param out_desc output parameters for out_func
1534.1119 -   @return Refer to the above description for detailed explanation
1534.1120 -*/
1534.1121 -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
1534.1122 -                                    in_func in, void FAR *in_desc,
1534.1123 -                                    out_func out, void FAR *out_desc));
1534.1124 -
1534.1125 -/**
1534.1126 -     All memory allocated by inflateBackInit() is freed.
1534.1127 -
1534.1128 -   @param strm stream of data
1534.1129 -   @return inflateBackEnd returns Z_OK on success, or Z_STREAM_ERROR if the stream
1534.1130 -   state was inconsistent.
1534.1131 -*/
1534.1132 -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
1534.1133 -
1534.1134 -/** 
1534.1135 - 	Return flags indicating compile-time options.
1534.1136 -
1534.1137 -    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
1534.1138 -     1.0: size of uInt
1534.1139 -     3.2: size of uLong
1534.1140 -     5.4: size of voidpf (pointer)
1534.1141 -     7.6: size of z_off_t
1534.1142 -
1534.1143 -    Compiler, assembler, and debug options:
1534.1144 -     8: DEBUG
1534.1145 -     9: ASMV or ASMINF -- use ASM code
1534.1146 -     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
1534.1147 -     11: 0 (reserved)
1534.1148 -
1534.1149 -    One-time table building (smaller code, but not thread-safe if true):
1534.1150 -     12: BUILDFIXED -- build static block decoding tables when needed
1534.1151 -     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
1534.1152 -     14,15: 0 (reserved)
1534.1153 -
1534.1154 -    Library content (indicates missing functionality):
1534.1155 -     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
1534.1156 -                          deflate code when not needed)
1534.1157 -     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
1534.1158 -                    and decode gzip streams (to avoid linking crc code)
1534.1159 -     18-19: 0 (reserved)
1534.1160 -
1534.1161 -    Operation variations (changes in library functionality):
1534.1162 -     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
1534.1163 -     21: FASTEST -- deflate algorithm with only one, lowest compression level
1534.1164 -     22,23: 0 (reserved)
1534.1165 -
1534.1166 -    The sprintf variant used by gzprintf (zero is best):
1534.1167 -     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
1534.1168 -     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
1534.1169 -     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
1534.1170 -
1534.1171 -    Remainder:
1534.1172 -     27-31: 0 (reserved)
1534.1173 -     
1534.1174 -     @return Refer to the above description for detailed explanation
1534.1175 - */
1534.1176 -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
1534.1177 -
1534.1178 -                        /* utility functions */
1534.1179 -
1534.1180 -/*
1534.1181 -     The following utility functions are implemented on top of the
1534.1182 -   basic stream-oriented functions. To simplify the interface, some
1534.1183 -   default options are assumed (compression level and memory usage,
1534.1184 -   standard memory allocation functions). The source code of these
1534.1185 -   utility functions can easily be modified if you need special options.
1534.1186 -*/
1534.1187 -
1534.1188 -/**
1534.1189 -     Compresses the source buffer into the destination buffer.  sourceLen is
1534.1190 -   the byte length of the source buffer. Upon entry, destLen is the total
1534.1191 -   size of the destination buffer, which must be at least the value returned
1534.1192 -   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
1534.1193 -   compressed buffer.
1534.1194 -     This function can be used to compress a whole file at once if the
1534.1195 -   input file is mmap'ed.
1534.1196 -   
1534.1197 -   @param dest destination buffer
1534.1198 -   @param destLen byte length of destination buffer
1534.1199 -   @param source source buffer
1534.1200 -   @param sourceLen byte length of source buffer 
1534.1201 -   @return compress returns Z_OK if success, Z_MEM_ERROR if there was not
1534.1202 -   enough memory, Z_BUF_ERROR if there was not enough room in the output
1534.1203 -   buffer.
1534.1204 -*/
1534.1205 -ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
1534.1206 -                                 const Bytef *source, uLong sourceLen));
1534.1207 -
1534.1208 -/**
1534.1209 -     Compresses the source buffer into the destination buffer. The level
1534.1210 -   parameter has the same meaning as in deflateInit.  sourceLen is the byte
1534.1211 -   length of the source buffer. Upon entry, destLen is the total size of the
1534.1212 -   destination buffer, which must be at least the value returned by
1534.1213 -   compressBound(sourceLen). Upon exit, destLen is the actual size of the
1534.1214 -   compressed buffer.
1534.1215 -
1534.1216 -   @param dest destination buffer
1534.1217 -   @param destLen byte length of destination buffer
1534.1218 -   @param source source buffer
1534.1219 -   @param sourceLen byte length of source buffer 
1534.1220 -   @param level Compression level
1534.1221 -   @return compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.1222 -   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
1534.1223 -   Z_STREAM_ERROR if the level parameter is invalid.
1534.1224 -*/
1534.1225 -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
1534.1226 -                                  const Bytef *source, uLong sourceLen,
1534.1227 -                                  int level));
1534.1228 -
1534.1229 -/**
1534.1230 -     compressBound() returns an upper bound on the compressed size after
1534.1231 -   compress() or compress2() on sourceLen bytes.  It would be used before
1534.1232 -   a compress() or compress2() call to allocate the destination buffer.
1534.1233 -   
1534.1234 -   @param source buffer length
1534.1235 -   @return compressBound returns an upper bound on the compressed size after
1534.1236 -   compress() or compress2() on sourceLen bytes.
1534.1237 -*/
1534.1238 -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
1534.1239 -
1534.1240 -/**
1534.1241 -     Decompresses the source buffer into the destination buffer.  sourceLen is
1534.1242 -   the byte length of the source buffer. Upon entry, destLen is the total
1534.1243 -   size of the destination buffer, which must be large enough to hold the
1534.1244 -   entire uncompressed data. (The size of the uncompressed data must have
1534.1245 -   been saved previously by the compressor and transmitted to the decompressor
1534.1246 -   by some mechanism outside the scope of this compression library.)
1534.1247 -   Upon exit, destLen is the actual size of the compressed buffer.
1534.1248 -     This function can be used to decompress a whole file at once if the
1534.1249 -   input file is mmap'ed.
1534.1250 -
1534.1251 -   @param dest destination buffer
1534.1252 -   @param destLen byte length of destination buffer
1534.1253 -   @param source source buffer
1534.1254 -   @param sourceLen byte length of source buffer 
1534.1255 -   @return uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
1534.1256 -   enough memory, Z_BUF_ERROR if there was not enough room in the output
1534.1257 -   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
1534.1258 -*/
1534.1259 -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
1534.1260 -                                   const Bytef *source, uLong sourceLen));
1534.1261 -
1534.1262 -#ifndef SYMBIAN_EZLIB_EXCLUDE_GZ_FUNCTIONS
1534.1263 -/** gzfile is typedef to voidp i.e. void pointer(void*) */
1534.1264 -typedef voidp gzFile;
1534.1265 -
1534.1266 -/**
1534.1267 -     Opens a gzip (.gz) file for reading or writing. The mode parameter
1534.1268 -   is as in fopen ("rb" or "wb") but can also include a compression level
1534.1269 -   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
1534.1270 -   Huffman only compression as in "wb1h", or 'R' for run-length encoding
1534.1271 -   as in "wb1R". (See the description of deflateInit2 for more information
1534.1272 -   about the strategy parameter.)
1534.1273 -
1534.1274 -     gzopen can be used to read a file which is not in gzip format; in this
1534.1275 -   case gzread will directly read from the file without decompression.
1534.1276 -
1534.1277 -   @param path location of the file
1534.1278 -   @param mode refer to above description
1534.1279 -   @return gzopen returns NULL if the file could not be opened or if there was
1534.1280 -   insufficient memory to allocate the (de)compression state; errno
1534.1281 -   can be checked to distinguish the two cases (if errno is zero, the
1534.1282 -   zlib error is Z_MEM_ERROR).
1534.1283 -*/
1534.1284 -ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
1534.1285 -
1534.1286 -/**
1534.1287 -     gzdopen() associates a gzFile with the file descriptor fd.  File
1534.1288 -   descriptors are obtained from calls like open, dup, creat, pipe or
1534.1289 -   fileno (in the file has been previously opened with fopen).
1534.1290 -   The mode parameter is as in gzopen.
1534.1291 -     The next call of gzclose on the returned gzFile will also close the
1534.1292 -   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
1534.1293 -   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
1534.1294 -   
1534.1295 -   @param fd file descriptor
1534.1296 -   @param mode The mode parameter is as in gzopen
1534.1297 -   @return gzdopen returns NULL if there was insufficient memory to allocate
1534.1298 -   the (de)compression state.
1534.1299 -*/
1534.1300 -ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
1534.1301 -
1534.1302 -/**
1534.1303 -     Dynamically update the compression level or strategy. See the description
1534.1304 -   of deflateInit2 for the meaning of these parameters.
1534.1305 -     
1534.1306 -   @param file gzip file
1534.1307 -   @param level compression level
1534.1308 -   @param strategy compression algorithm
1534.1309 -   @return gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
1534.1310 -   opened for writing.
1534.1311 -*/
1534.1312 -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
1534.1313 -
1534.1314 -/**
1534.1315 -     Reads the given number of uncompressed bytes from the compressed file.
1534.1316 -   If the input file was not in gzip format, gzread copies the given number
1534.1317 -   of bytes into the buffer.
1534.1318 -
1534.1319 -   @param file gzip file
1534.1320 -   @param buf buffer to store the copied data from the gzip file
1534.1321 -   @param len length of the data to be copied
1534.1322 -   @return gzread returns the number of uncompressed bytes actually read (0 for
1534.1323 -   end of file, -1 for error). 
1534.1324 -*/
1534.1325 -ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
1534.1326 -
1534.1327 -/**
1534.1328 -     Writes the given number of uncompressed bytes into the compressed file.
1534.1329 -   gzwrite returns the number of uncompressed bytes actually written
1534.1330 -   (0 in case of error).
1534.1331 -   
1534.1332 -   @param file gzip file
1534.1333 -   @param buf buffer containing data to be written to the gzip file
1534.1334 -   @param len length of the data
1534.1335 -   @return gzwrite returns the number of uncompressed bytes actually written
1534.1336 -   (0 in case of error)
1534.1337 -*/
1534.1338 -ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
1534.1339 -                                   voidpc buf, unsigned len));
1534.1340 -
1534.1341 -/**
1534.1342 -     Converts, formats, and writes the args to the compressed file under
1534.1343 -   control of the format string, as in fprintf. gzprintf returns the number of
1534.1344 -   uncompressed bytes actually written (0 in case of error).  The number of
1534.1345 -   uncompressed bytes written is limited to 4095. The caller should assure that
1534.1346 -   this limit is not exceeded. If it is exceeded, then gzprintf() will return
1534.1347 -   return an error (0) with nothing written. In this case, there may also be a
1534.1348 -   buffer overflow with unpredictable consequences, which is possible only if
1534.1349 -   zlib was compiled with the insecure functions sprintf() or vsprintf()
1534.1350 -   because the secure snprintf() or vsnprintf() functions were not available.
1534.1351 -   
1534.1352 -   @param file gzip file
1534.1353 -   @param format format string
1534.1354 -   @return refer to the description above
1534.1355 -*/
1534.1356 -ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
1534.1357 -
1534.1358 -/**
1534.1359 -      Writes the given null-terminated string to the compressed file, excluding
1534.1360 -   the terminating null character.
1534.1361 -      
1534.1362 -   @param file gzip file
1534.1363 -   @param s null-terminated string
1534.1364 -   @return gzputs returns the number of characters written, or -1 in case of error.
1534.1365 -*/
1534.1366 -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
1534.1367 -
1534.1368 -/**
1534.1369 -      Reads bytes from the compressed file until len-1 characters are read, or
1534.1370 -   a newline character is read and transferred to buf, or an end-of-file
1534.1371 -   condition is encountered.  The string is then terminated with a null
1534.1372 -   character.
1534.1373 -      
1534.1374 -   @param file gzip file     
1534.1375 -   @param buf buffer to store the copied data from the gzip file
1534.1376 -   @param len number of characters to be read (len-1)
1534.1377 -   @return gzgets returns buf, or Z_NULL in case of error.
1534.1378 -*/
1534.1379 -ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
1534.1380 -
1534.1381 -/**
1534.1382 -      Writes c, converted to an unsigned char, into the compressed file.
1534.1383 -   gzputc returns the value that was written, or -1 in case of error.
1534.1384 -
1534.1385 -   @param file gzip file
1534.1386 -   @param c character
1534.1387 -   @return gzputc returns the value that was written, or -1 in case of error.
1534.1388 -*/
1534.1389 -ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
1534.1390 -
1534.1391 -/**
1534.1392 -      Reads one byte from the compressed file. gzgetc returns this byte
1534.1393 -   or -1 in case of end of file or error.
1534.1394 -
1534.1395 -   @param file gzip file
1534.1396 -   @return gzgetc returns this byte or -1 in case of end of file or error.
1534.1397 -*/
1534.1398 -ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
1534.1399 -
1534.1400 -/**
1534.1401 -      Push one character back onto the stream to be read again later.
1534.1402 -   Only one character of push-back is allowed.  gzungetc() returns the
1534.1403 -   character pushed, or -1 on failure.  gzungetc() will fail if a
1534.1404 -   character has been pushed but not read yet, or if c is -1. The pushed
1534.1405 -   character will be discarded if the stream is repositioned with gzseek()
1534.1406 -   or gzrewind().
1534.1407 -   
1534.1408 -   @param c character
1534.1409 -   @param file gzip file
1534.1410 -   @return gzungetc returns the character pushed, or -1 on failure.
1534.1411 -*/
1534.1412 -ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
1534.1413 -
1534.1414 -/**
1534.1415 -     Flushes all pending output into the compressed file. The parameter
1534.1416 -   flush is as in the deflate() function. The return value is the zlib
1534.1417 -   error number (see function gzerror below). gzflush returns Z_OK if
1534.1418 -   the flush parameter is Z_FINISH and all output could be flushed.
1534.1419 -     gzflush should be called only when strictly necessary because it can
1534.1420 -   degrade compression.
1534.1421 -   
1534.1422 -   @param file gzip file
1534.1423 -   @param flush parameter flush is as in the deflate() function
1534.1424 -   @return gzflush returns Z_OK if the flush parameter is Z_FINISH and all output could be flushed.
1534.1425 -*/
1534.1426 -ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
1534.1427 -
1534.1428 -/**
1534.1429 -      Sets the starting position for the next gzread or gzwrite on the
1534.1430 -   given compressed file. The offset represents a number of bytes in the
1534.1431 -   uncompressed data stream. The whence parameter is defined as in lseek(2);
1534.1432 -   the value SEEK_END is not supported.
1534.1433 -     If the file is opened for reading, this function is emulated but can be
1534.1434 -   extremely slow. If the file is opened for writing, only forward seeks are
1534.1435 -   supported; gzseek then compresses a sequence of zeroes up to the new
1534.1436 -   starting position.
1534.1437 -
1534.1438 -   @param file gzip file
1534.1439 -   @param offset represents a number of bytes in the uncompressed data stream
1534.1440 -   @param whence defined as in lseek(2); the value SEEK_END is not supported.
1534.1441 -   @return gzseek returns the resulting offset location as measured in bytes from
1534.1442 -   the beginning of the uncompressed stream, or -1 in case of error, in
1534.1443 -   particular if the file is opened for writing and the new starting position
1534.1444 -   would be before the current position.
1534.1445 -*/
1534.1446 -ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
1534.1447 -                                      z_off_t offset, int whence));
1534.1448 -
1534.1449 -/**
1534.1450 -     Rewinds the given file. This function is supported only for reading.
1534.1451 -
1534.1452 -   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
1534.1453 -   
1534.1454 -   @param file gzip file
1534.1455 -   @return refer to gzseek() return value & description
1534.1456 -*/
1534.1457 -ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
1534.1458 -
1534.1459 -/**
1534.1460 -     Returns the starting position for the next gzread or gzwrite on the
1534.1461 -   given compressed file. This position represents a number of bytes in the
1534.1462 -   uncompressed data stream.
1534.1463 -
1534.1464 -   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
1534.1465 -   
1534.1466 -   @param file gzip file
1534.1467 -   @return gztell returns the starting position for the next gzread or gzwrite on the
1534.1468 -   given compressed file
1534.1469 -*/
1534.1470 -ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
1534.1471 -
1534.1472 -/**
1534.1473 -     Returns 1 when EOF has previously been detected reading the given
1534.1474 -   input stream, otherwise zero.
1534.1475 -
1534.1476 -   @param file gzip file
1534.1477 -   @return gzeof returns 1 when EOF has previously been detected reading the given
1534.1478 -   input stream, otherwise zero.
1534.1479 -*/
1534.1480 -ZEXTERN int ZEXPORT gzeof OF((gzFile file));
1534.1481 -
1534.1482 -/**
1534.1483 -     Returns 1 if file is being read directly without decompression, otherwise
1534.1484 -   zero.
1534.1485 -   
1534.1486 -   @param file gzip file
1534.1487 -   @return gzdirect returns 1 if file is being read directly without decompression, otherwise zero.
1534.1488 -*/
1534.1489 -ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
1534.1490 -
1534.1491 -/**
1534.1492 -     Flushes all pending output if necessary, closes the compressed file
1534.1493 -   and deallocates all the (de)compression state. The return value is the zlib
1534.1494 -   error number (see function gzerror below).
1534.1495 -   
1534.1496 -   @param file gzip file
1534.1497 -   @return gzclose returns the zlib error number (see function gzerror below).
1534.1498 -*/
1534.1499 -ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
1534.1500 -
1534.1501 -/**
1534.1502 -     Returns the error message for the last error which occurred on the
1534.1503 -   given compressed file. errnum is set to zlib error number. If an
1534.1504 -   error occurred in the file system and not in the compression library,
1534.1505 -   errnum is set to Z_ERRNO and the application may consult errno
1534.1506 -   to get the exact error code.
1534.1507 -   
1534.1508 -   @param file gzip file
1534.1509 -   @param errnum error number
1534.1510 -   @return gzerror returns the error message for the last error which occurred on the
1534.1511 -   given compressed file.
1534.1512 -*/
1534.1513 -ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
1534.1514 -
1534.1515 -/**
1534.1516 -     Clears the error and end-of-file flags for file. This is analogous to the
1534.1517 -   clearerr() function in stdio. This is useful for continuing to read a gzip
1534.1518 -   file that is being written concurrently.
1534.1519 -   
1534.1520 -   @param file gzip file
1534.1521 -*/
1534.1522 -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
1534.1523 -
1534.1524 -#endif //SYMBIAN_EZLIB_EXCLUDE_GZ_FUNCTIONS
1534.1525 -
1534.1526 -                        /* checksum functions */
1534.1527 -
1534.1528 -/*
1534.1529 -     These functions are not related to compression but are exported
1534.1530 -   anyway because they might be useful in applications using the
1534.1531 -   compression library.
1534.1532 -*/
1534.1533 -
1534.1534 -/**
1534.1535 -     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
1534.1536 -   return the updated checksum. If buf is NULL, this function returns
1534.1537 -   the required initial value for the checksum.
1534.1538 -   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
1534.1539 -   much faster. Usage example:
1534.1540 -
1534.1541 -     uLong adler = adler32(0L, Z_NULL, 0);
1534.1542 -
1534.1543 -     while (read_buffer(buffer, length) != EOF) {
1534.1544 -       adler = adler32(adler, buffer, length);
1534.1545 -     }
1534.1546 -     if (adler != original_adler) error();
1534.1547 -     
1534.1548 -	@param adler Adler-32 checksum
1534.1549 -	@param buf pointer to buffer
1534.1550 -	@param len length of buffer
1534.1551 -	@return If buf is NULL, this function returns
1534.1552 -	the required initial value for the checksum.
1534.1553 -*/
1534.1554 -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
1534.1555 -
1534.1556 -/**
1534.1557 -     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
1534.1558 -   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
1534.1559 -   each, adler1 and adler2.
1534.1560 -   
1534.1561 -   @param adler1 Adler-32 checksum
1534.1562 -   @param adler2 Adler-32 checksum
1534.1563 -   @param len2 length
1534.1564 -   @return adler32_combine returns the Adler-32 checksum of
1534.1565 -   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
1534.1566 -*/
1534.1567 -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
1534.1568 -                                          z_off_t len2));
1534.1569 -
1534.1570 -/**
1534.1571 -     Update a running CRC-32 with the bytes buf[0..len-1] and return the
1534.1572 -   updated CRC-32. If buf is NULL, this function returns the required initial
1534.1573 -   value for the for the crc. Pre- and post-conditioning (one's complement) is
1534.1574 -   performed within this function so it shouldn't be done by the application.
1534.1575 -   Usage example:
1534.1576 -
1534.1577 -     uLong crc = crc32(0L, Z_NULL, 0);
1534.1578 -
1534.1579 -     while (read_buffer(buffer, length) != EOF) {
1534.1580 -       crc = crc32(crc, buffer, length);
1534.1581 -     }
1534.1582 -     if (crc != original_crc) error();
1534.1583 -     
1534.1584 -     @param crc CRC-32 check value
1534.1585 -     @param buf pointer to buffer
1534.1586 -     @param len length of buffer
1534.1587 -     @return If buf is NULL, this function returns the required initial
1534.1588 -     value for the for the crc.
1534.1589 -*/
1534.1590 -ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
1534.1591 -
1534.1592 -/**
1534.1593 -     Combine two CRC-32 check values into one.  For two sequences of bytes,
1534.1594 -   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
1534.1595 -   calculated for each, crc1 and crc2.
1534.1596 -   
1534.1597 -   @param crc1 CRC-32 check value
1534.1598 -   @param crc2 CRC-32 check value
1534.1599 -   @param len2 length
1534.1600 -   @return crc32_combine returns the CRC-32 check value of seq1 and seq2 
1534.1601 -   concatenated, requiring only crc1, crc2, and len2.
1534.1602 -*/
1534.1603 -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
1534.1604 -
1534.1605 -
1534.1606 -
1534.1607 -                        /* various hacks, don't look :) */
1534.1608 -
1534.1609 -/* deflateInit and inflateInit are macros to allow checking the zlib version
1534.1610 - * and the compiler's view of z_stream:
1534.1611 - */
1534.1612 -/**
1534.1613 -    Initializes the internal stream state for compression. The fields
1534.1614 -   zalloc, zfree and opaque must be initialized before by the caller.
1534.1615 -   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
1534.1616 -   use default allocation functions.
1534.1617 -
1534.1618 -     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
1534.1619 -   1 gives best speed, 9 gives best compression, 0 gives no compression at
1534.1620 -   all (the input data is simply copied a block at a time).
1534.1621 -   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
1534.1622 -   compression (currently equivalent to level 6).
1534.1623 -
1534.1624 -     deflateInit does not perform any compression: this will be done by deflate().
1534.1625 -   
1534.1626 -   @param strm stream of data
1534.1627 -   @param level compression level
1534.1628 -   @param version version of library
1534.1629 -   @param stream_size stream size
1534.1630 -   @return deflateInit_ returns Z_OK if success, Z_MEM_ERROR if there was not
1534.1631 -   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
1534.1632 -   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
1534.1633 -   with the version assumed by the caller (ZLIB_VERSION).
1534.1634 -   msg is set to null if there is no error message.
1534.1635 -*/
1534.1636 -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
1534.1637 -                                     const char *version, int stream_size));
1534.1638 -
1534.1639 -/**
1534.1640 -    Initializes the internal stream state for decompression. The fields
1534.1641 -   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
1534.1642 -   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
1534.1643 -   value depends on the compression method), inflateInit determines the
1534.1644 -   compression method from the zlib header and allocates all data structures
1534.1645 -   accordingly; otherwise the allocation will be deferred to the first call of
1534.1646 -   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
1534.1647 -   use default allocation functions.
1534.1648 -
1534.1649 -    inflateInit does not perform any decompression apart from reading
1534.1650 -   the zlib header if present: this will be done by inflate().  (So next_in and
1534.1651 -   avail_in may be modified, but next_out and avail_out are unchanged.)
1534.1652 -   
1534.1653 -   @param strm stream of data
1534.1654 -   @param version version of library
1534.1655 -   @param stream_size stream size
1534.1656 -   @return inflateInit_ returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.1657 -   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
1534.1658 -   version assumed by the caller.  msg is set to null if there is no error
1534.1659 -   message.
1534.1660 -*/
1534.1661 -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
1534.1662 -                                     const char *version, int stream_size));
1534.1663 -
1534.1664 -/**
1534.1665 -	This is another version of deflateInit with more compression options. The
1534.1666 -	fields next_in, zalloc, zfree and opaque must be initialized before by
1534.1667 -	the caller.
1534.1668 -	
1534.1669 -	  The method parameter is the compression method. It must be Z_DEFLATED in
1534.1670 -	this version of the library.
1534.1671 -	
1534.1672 -	  The windowBits parameter is the base two logarithm of the window size
1534.1673 -	(the size of the history buffer). It should be in the range 8..15 for this
1534.1674 -	version of the library. Larger values of this parameter result in better
1534.1675 -	compression at the expense of memory usage. The default value is 15 if
1534.1676 -	deflateInit is used instead.
1534.1677 -	
1534.1678 -	  Note: In this version of the library a windowBits value of 8 is unsupported
1534.1679 -	due to a problem with the window size being set to 256 bytes. Although a
1534.1680 -	value of 8 will be accepted by deflateInit2(), as it is being changed
1534.1681 -	internally from 8 to 9, it will not be possible to use the same value when it
1534.1682 -	comes to decompression. This is because inflateInit2() does not make the same
1534.1683 -	change internally and as a result a Z_DATA_ERROR is returned when calling
1534.1684 -	inflate(). It is therefore advised that for this version of the library 
1534.1685 -	windowBits of 9 is used in place of 8.
1534.1686 -	
1534.1687 -	  windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
1534.1688 -	determines the window size. deflate() will then generate raw deflate data
1534.1689 -	with no zlib header or trailer, and will not compute an adler32 check value.
1534.1690 -	
1534.1691 -	  windowBits can also be greater than 15 for optional gzip encoding. Add
1534.1692 -	16 to windowBits to write a simple gzip header and trailer around the
1534.1693 -	compressed data instead of a zlib wrapper. The gzip header will have no
1534.1694 -	file name, no extra data, no comment, no modification time (set to zero),
1534.1695 -	no header crc, and the operating system will be set to 3 (UNIX).  If a
1534.1696 -	gzip stream is being written, strm->adler is a crc32 instead of an adler32.
1534.1697 -	
1534.1698 -	  The memLevel parameter specifies how much memory should be allocated
1534.1699 -	for the internal compression state. memLevel=1 uses minimum memory but
1534.1700 -	is slow and reduces compression ratio; memLevel=9 uses maximum memory
1534.1701 -	for optimal speed. The default value is 8. See zconf.h for total memory
1534.1702 -	usage as a function of windowBits and memLevel.
1534.1703 -	
1534.1704 -	  The strategy parameter is used to tune the compression algorithm. Use the
1534.1705 -	value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
1534.1706 -	filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
1534.1707 -	string match), or Z_RLE to limit match distances to one (run-length
1534.1708 -	encoding). Filtered data consists mostly of small values with a somewhat
1534.1709 -	random distribution. In this case, the compression algorithm is tuned to
1534.1710 -	compress them better. The effect of Z_FILTERED is to force more Huffman
1534.1711 -	coding and less string matching; it is somewhat intermediate between
1534.1712 -	Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
1534.1713 -	Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
1534.1714 -	parameter only affects the compression ratio but not the correctness of the
1534.1715 -	compressed output even if it is not set appropriately.  Z_FIXED prevents the
1534.1716 -	use of dynamic Huffman codes, allowing for a simpler decoder for special
1534.1717 -	applications.
1534.1718 -	  deflateInit2 does not perform any compression: this will be done by deflate().
1534.1719 -	
1534.1720 -	@param strm stream of data
1534.1721 -	@param level compression level
1534.1722 -	@param method compression method
1534.1723 -	@param windowBits refer to above note & description for window bits value
1534.1724 -	@param memLevel memory level (i.e. how much memory should be allocated). refer to above description for more detail
1534.1725 -	@param strategy compression algorithm
1534.1726 -	@param version version of library
1534.1727 -	@param stream_size size of stream
1534.1728 -	@return deflateInit2_ returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.1729 -	memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
1534.1730 -	method). msg is set to null if there is no error message.  
1534.1731 -*/
1534.1732 -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
1534.1733 -                                      int windowBits, int memLevel,
1534.1734 -                                      int strategy, const char *version,
1534.1735 -                                      int stream_size));
1534.1736 -
1534.1737 -/**
1534.1738 -     This is another version of inflateInit with an extra parameter. The
1534.1739 -   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
1534.1740 -   before by the caller.
1534.1741 -
1534.1742 -     The windowBits parameter is the base two logarithm of the maximum window
1534.1743 -   size (the size of the history buffer).  It should be in the range 8..15 for
1534.1744 -   this version of the library. The default value is 15 if inflateInit is used
1534.1745 -   instead. windowBits must be greater than or equal to the windowBits value
1534.1746 -   provided to deflateInit2() while compressing, or it must be equal to 15 if
1534.1747 -   deflateInit2() was not used. If a compressed stream with a larger window
1534.1748 -   size is given as input, inflate() will return with the error code
1534.1749 -   Z_DATA_ERROR instead of trying to allocate a larger window.
1534.1750 -
1534.1751 -     Note: In this version of the library a windowBits value of 8 is unsupported
1534.1752 -   due to a problem with the window size being set to 256 bytes. Although a
1534.1753 -   value of 8 will be accepted by deflateInit2(), as it is being changed
1534.1754 -   internally from 8 to 9, it will not be possible to use the same value when it
1534.1755 -   comes to decompression. This is because inflateInit2() does not make the same
1534.1756 -   change internally and as a result a Z_DATA_ERROR is returned when calling
1534.1757 -   inflate(). It is therefore advised that for this version of the library 
1534.1758 -   windowBits of 9 is used in place of 8.
1534.1759 -
1534.1760 -     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
1534.1761 -   determines the window size. inflate() will then process raw deflate data,
1534.1762 -   not looking for a zlib or gzip header, not generating a check value, and not
1534.1763 -   looking for any check values for comparison at the end of the stream. This
1534.1764 -   is for use with other formats that use the deflate compressed data format
1534.1765 -   such as zip.  Those formats provide their own check values. If a custom
1534.1766 -   format is developed using the raw deflate format for compressed data, it is
1534.1767 -   recommended that a check value such as an adler32 or a crc32 be applied to
1534.1768 -   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
1534.1769 -   most applications, the zlib format should be used as is. Note that comments
1534.1770 -   above on the use in deflateInit2() applies to the magnitude of windowBits.
1534.1771 -
1534.1772 -     windowBits can also be greater than 15 for optional gzip decoding. Add
1534.1773 -   32 to windowBits to enable zlib and gzip decoding with automatic header
1534.1774 -   detection, or add 16 to decode only the gzip format (the zlib format will
1534.1775 -   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
1534.1776 -   a crc32 instead of an adler32.
1534.1777 -
1534.1778 -   @param strm stream of data
1534.1779 -   @param windowBits refer to above note & description for window bits value
1534.1780 -   @param version version of library
1534.1781 -   @param stream_size size of stream
1534.1782 -   @return inflateInit2_ returns Z_OK if success, Z_MEM_ERROR if there was not enough
1534.1783 -   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
1534.1784 -   is set to null if there is no error message.  inflateInit2 does not perform
1534.1785 -   any decompression apart from reading the zlib header if present: this will
1534.1786 -   be done by inflate(). (So next_in and avail_in may be modified, but next_out
1534.1787 -   and avail_out are unchanged.)
1534.1788 -*/
1534.1789 -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
1534.1790 -                                      const char *version, int stream_size));
1534.1791 -
1534.1792 -/**
1534.1793 -     Initialize the internal stream state for decompression using inflateBack()
1534.1794 -   calls.  The fields zalloc, zfree and opaque in strm must be initialized
1534.1795 -   before the call.  If zalloc and zfree are Z_NULL, then the default library-
1534.1796 -   derived memory allocation routines are used.  windowBits is the base two
1534.1797 -   logarithm of the window size, in the range 8..15.  window is a caller
1534.1798 -   supplied buffer of that size.  Except for special applications where it is
1534.1799 -   assured that deflate was used with small window sizes, windowBits must be 15
1534.1800 -   and a 32K byte window must be supplied to be able to decompress general
1534.1801 -   deflate streams.
1534.1802 -
1534.1803 -     Note: In this version of the library a windowBits value of 8 is unsupported
1534.1804 -   due to a problem with the window size being set to 256 bytes. Although a
1534.1805 -   value of 8 will be accepted by deflateInit2(), as it is being changed
1534.1806 -   internally from 8 to 9, it will not be possible to use the same value when it
1534.1807 -   comes to decompression. This is because inflateInit2() does not make the same
1534.1808 -   change internally and as a result a Z_DATA_ERROR is returned when calling
1534.1809 -   inflate(). It is therefore advised that for this version of the library 
1534.1810 -   windowBits of 9 is used in place of 8.
1534.1811 -
1534.1812 -     See inflateBack() for the usage of these routines.
1534.1813 -   
1534.1814 -   @param strm stream of data
1534.1815 -   @param windowBits refer to above note for window bits value
1534.1816 -   @param window window is a caller supplied buffer of that size
1534.1817 -   @param version version of library
1534.1818 -   @param stream_size size of stream
1534.1819 -   @return inflateBackInit_ returns Z_OK on success, Z_STREAM_ERROR if any of
1534.1820 -   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
1534.1821 -   be allocated, or Z_VERSION_ERROR if the version of the library does not
1534.1822 -   match the version of the header file.
1534.1823 -*/
1534.1824 -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
1534.1825 -                                         unsigned char FAR *window,
1534.1826 -                                         const char *version,
1534.1827 -                                         int stream_size));
1534.1828 -
1534.1829 -/** 
1534.1830 -	Macro deflateInit defined for deflateInit_()
1534.1831 -	@param strm stream of data
1534.1832 -	@param level compression level
1534.1833 -*/
1534.1834 -#define deflateInit(strm, level) \
1534.1835 -        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
1534.1836 -/** 
1534.1837 -	Macro inflateInit defined for inflateInit_()
1534.1838 -	@param strm stream of data
1534.1839 -*/
1534.1840 -#define inflateInit(strm) \
1534.1841 -        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
1534.1842 -/** 
1534.1843 -	Macro deflateInit2 defined for deflateInit2_()
1534.1844 -	@param strm stream of data
1534.1845 -	@param level compression level
1534.1846 -	@param method compression method
1534.1847 -	@param windowBits refer to the note for window bits value in deflateInit2_()
1534.1848 -	@param memLevel memory level (i.e. how much memory should be allocated). refer to above description for more detail
1534.1849 -	@param strategy compression algorithm
1534.1850 -*/
1534.1851 -#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
1534.1852 -        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
1534.1853 -                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
1534.1854 -/** 
1534.1855 -	Macro inflateInit2 defined for inflateInit2_()
1534.1856 -	@param strm stream of data
1534.1857 -	@param windowBits refer to the note for window bits value in inflateInit2_()
1534.1858 -*/
1534.1859 -#define inflateInit2(strm, windowBits) \
1534.1860 -        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
1534.1861 -/** 
1534.1862 -	Macro inflateBackInit defined for inflateBackInit_()
1534.1863 -  	@param strm stream of data
1534.1864 -   	@param windowBits refer to the note for window bits value in inflateBackInit_()
1534.1865 -   	@param window window is a caller supplied buffer of that size
1534.1866 -*/
1534.1867 -#define inflateBackInit(strm, windowBits, window) \
1534.1868 -        inflateBackInit_((strm), (windowBits), (window), \
1534.1869 -        ZLIB_VERSION, sizeof(z_stream))
1534.1870 -       
1534.1871 -
1534.1872 -#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
1534.1873 -	/** Hack for buggy compilers */
1534.1874 -    struct internal_state {int dummy;}; 
1534.1875 -#endif
1534.1876 -
1534.1877 -/**
1534.1878 -   Returns the string representing the error code
1534.1879 -	
1534.1880 -   @param int error code
1534.1881 -   @return zError returns string representing the error code
1534.1882 -*/
1534.1883 -ZEXTERN const char   * ZEXPORT zError           OF((int));
1534.1884 -/**
1534.1885 -   Checks whether inflate is currently at the end of a block generated by Z_SYNC_FLUSH or Z_FULL_FLUSH
1534.1886 -	
1534.1887 -   @param z stream of data
1534.1888 -   @return inflateSyncPoint returns true(1) if inflate is currently at the end of a block. Otherwise false(0)  
1534.1889 -*/
1534.1890 -ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
1534.1891 -/**
1534.1892 -   Initialize the tables before allowing more than one thread to use crc32()
1534.1893 -	
1534.1894 -   @return get_crc_table returns pointer to the crc table after initialisation
1534.1895 -*/
1534.1896 -ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
1534.1897 -
1534.1898 -#ifdef __cplusplus
1534.1899 -}
1534.1900 -#endif
1534.1901 -
1534.1902 -#endif /* _ZLIB_H */
  1535.1 --- a/epoc32/include/swi/pkgremover.h	Tue Mar 16 16:12:26 2010 +0000
  1535.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1535.3 @@ -1,200 +0,0 @@
  1535.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
  1535.5 -// All rights reserved.
  1535.6 -// This component and the accompanying materials are made available
  1535.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1535.8 -// which accompanies this distribution, and is available
  1535.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1535.10 -//
 1535.11 -// Initial Contributors:
 1535.12 -// Nokia Corporation - initial contribution.
 1535.13 -//
 1535.14 -// Contributors:
 1535.15 -//
 1535.16 -// Description:
 1535.17 -// Interface class for listing/removing uninstalled packages from a removable drive
 1535.18 -// 
 1535.19 -//
 1535.20 -
 1535.21 -
 1535.22 -
 1535.23 -/**
 1535.24 - @file 
 1535.25 - @publishedAll
 1535.26 - @released
 1535.27 -*/
 1535.28 -
 1535.29 -#ifndef __PKGREMOVER_H__
 1535.30 -#define __PKGREMOVER_H__
 1535.31 -
 1535.32 -#include <e32base.h>
 1535.33 -#include <f32fsys.h>
 1535.34 -#include <s32mem.h>
 1535.35 -
 1535.36 -namespace Swi
 1535.37 -{
 1535.38 -
 1535.39 -class CUninstalledPackageEntry;
 1535.40 -
 1535.41 -
 1535.42 -/**
 1535.43 - * This class provides static methods for managing uninstalled native packages
 1535.44 - * (SIS files) that are taking up space on removable drives.
 1535.45 - *
 1535.46 - * @publishedAll
 1535.47 - * @released
 1535.48 - */
 1535.49 -
 1535.50 -NONSHARABLE_CLASS(UninstalledSisPackages)
 1535.51 -{
 1535.52 -public:
 1535.53 -
 1535.54 -	/**
 1535.55 -	 * Get the list of uninstalled packages on a specified removable drive. In
 1535.56 -	 * this context uninstalled means 'not known by this phone'. This will list
 1535.57 -	 * uninstalled PA & PP files found in the SWI Daemon's private directory, and
 1535.58 -	 * will also search the sis registry files on the drive for uninstalled
 1535.59 -	 * applications.
 1535.60 -	 *
 1535.61 -	 * @param aDrive    		Removable drive number (@see TDriveNumber)
 1535.62 -	 * @param aPackageList      Array of pointers to the uninstalled packages
 1535.63 -	 *							found on the specified drive (@see
 1535.64 -	 *                          CUninstalledPackageEntry). This array is assumed to be empty.
 1535.65 -	 *							The caller takes ownership of the elements added to the array.
 1535.66 -	 * @leave					One of the system-wide error codes.
 1535.67 -	 * @leave                   KErrNotRemovable If the drive is not removable or is substed
 1535.68 -	 * @leave					KErrPackageFileCorrupt If an error occurs during the processing of files
 1535.69 -	 * @capability              ReadDeviceData Required to access protected directories during listing operation
 1535.70 -	 * @capability              ProtServ Required to access services of software installer
 1535.71 -	 * @capability             	TrustedUI Required to access services of software installer
 1535.72 -	 */
 1535.73 -	IMPORT_C static void ListL(TDriveNumber aDrive, RPointerArray<CUninstalledPackageEntry>& aPackageList);
 1535.74 -
 1535.75 -	/**
 1535.76 -	 * Remove the specified uninstalled package. The following restrictions apply to the files that will be removed:
 1535.77 -	 * <ul>
 1535.78 -	 * <li> For security reasons only files on the same drive as the package controller will be removed. Files on other drives will be orphaned.
 1535.79 -	 * <li> Files belonging to other packages will not be removed.
 1535.80 -	 * </ul>
 1535.81 -	 *
 1535.82 -	 * @param aPackage			The uninstalled package to remove (@see CUninstalledPackageEntry)
 1535.83 -	 * @leave					One of the system-wide error codes.
 1535.84 -	 * @leave                   KErrNotRemovable If the drive is not removable or is substed
 1535.85 -	 * @leave					KErrPackageIsInstalled If the specified package is installed on the device
 1535.86 -	 * @leave					KErrPackageFileCorrupt If an error occurs during the processing of files
 1535.87 -	 * @capability				WriteDeviceData Required to write to protected directories during remove operation
 1535.88 -	 * @capability				ProtServ Required to access services of software installer
 1535.89 -	 * @capability				TrustedUI Required to access services of software installer
 1535.90 -	 */
 1535.91 -	IMPORT_C static void RemoveL(const CUninstalledPackageEntry& aPackage);
 1535.92 -};
 1535.93 -
 1535.94 -
 1535.95 -/**
 1535.96 - * Uninstalled application entry class.
 1535.97 - *
 1535.98 - * This class is not externally instantiable. It is returned as a result of 
 1535.99 - * querying for a list of uninstalled packages present on a removable drive. 
1535.100 - * Each object of this type represents one uninstalled package. Methods can 
1535.101 - * be called on this object to retrieve the package details such as 
1535.102 - * Package UID, Name, Vendor, Version and Type.
1535.103 - *
1535.104 - * @publishedAll
1535.105 - * @released
1535.106 - */
1535.107 -
1535.108 -NONSHARABLE_CLASS(CUninstalledPackageEntry) : public CBase
1535.109 -{
1535.110 -public:
1535.111 -	enum TPackageType
1535.112 -	{
1535.113 -	    ESaPackage,       ///< Standard Application
1535.114 -		ESpPackage,       ///< Standard Patch (augmentation)
1535.115 -		EPuPackage,       ///< Partial Upgrade
1535.116 -		EPaPackage,       ///< Preinstalled Application
1535.117 -		EPpPackage        ///< Preinstalled Patch
1535.118 -	};
1535.119 -
1535.120 -	/**
1535.121 -	 * Get the package Uid
1535.122 -	 *
1535.123 -	 * @return The Uid of this package
1535.124 -	 */
1535.125 -	IMPORT_C const TUid& Uid() const;
1535.126 -
1535.127 -	/**
1535.128 -	 * Get the package name
1535.129 -	 *
1535.130 -	 * @return The name of this package as reference to TDesC
1535.131 -	 */
1535.132 -	IMPORT_C const TDesC& Name() const;
1535.133 -
1535.134 -	/**
1535.135 -	 * Get the package unique vendor name
1535.136 -	 *
1535.137 -	 * @return The unique vendor name of this package as reference to TDesC
1535.138 -	 */
1535.139 -	IMPORT_C const TDesC& Vendor() const;
1535.140 -
1535.141 -	/**
1535.142 -	 * Get the package version
1535.143 -	 *
1535.144 -	 * @return The version number of this package
1535.145 -	 */
1535.146 -	IMPORT_C const TVersion& Version() const;
1535.147 -
1535.148 -	/**
1535.149 -	 * Get the package type
1535.150 -	 *
1535.151 -	 * @return The package type of this package
1535.152 -	 */
1535.153 -	IMPORT_C const TPackageType& PackageType() const;
1535.154 -
1535.155 -	/**
1535.156 -	* Destructor
1535.157 -	*/
1535.158 -	virtual ~CUninstalledPackageEntry();
1535.159 -
1535.160 -private:
1535.161 -	static CUninstalledPackageEntry* NewLC(const TUid& aUid, const TDesC& aPackageName,
1535.162 -		const TDesC& aVendorName, const TVersion& aVersion, const TPackageType aPackageType,
1535.163 -		const TDesC& aPackageFile, const TDesC& aAssocStubSisFile);
1535.164 -
1535.165 -private:
1535.166 -	CUninstalledPackageEntry();
1535.167 -
1535.168 -private:
1535.169 -	void ConstructL(const TUid& aUid, const TDesC& aPackageName, const TDesC& aVendorName, 
1535.170 -		const TVersion& aVersion, const TPackageType aPackageType, const TDesC& aPackageFile,
1535.171 -		const TDesC& aAssocStubSisFile);
1535.172 -
1535.173 -	const TDesC& PackageFile() const;
1535.174 -	const TDesC& AssociatedStubSisFile() const;
1535.175 -
1535.176 -private:
1535.177 -	/// The package Uid
1535.178 -	TUid iUid;
1535.179 -
1535.180 -    /// The package name
1535.181 -	HBufC* iPackageName;
1535.182 -
1535.183 -    /// The package unique vendor name
1535.184 -	HBufC* iVendorName;
1535.185 -
1535.186 -    /// The package version
1535.187 -	TVersion iVersion; 
1535.188 -
1535.189 -	/// The package type
1535.190 -	TPackageType iType;
1535.191 -
1535.192 -	// The sis/controller file name with full path
1535.193 -	HBufC* iPackageFile;
1535.194 -
1535.195 -	// The stub sis file name with full path (if the package file is a controller file)
1535.196 -	HBufC* iAssocStubSisFile;
1535.197 -private:
1535.198 -	friend class UninstalledSisPackages;
1535.199 -};
1535.200 -
1535.201 -} // namespace Swi
1535.202 -
1535.203 -#endif // __PKGREMOVER_H__
  1536.1 --- a/epoc32/include/swi/pkgremovererrors.h	Tue Mar 16 16:12:26 2010 +0000
  1536.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1536.3 @@ -1,56 +0,0 @@
  1536.4 -// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
  1536.5 -// All rights reserved.
  1536.6 -// This component and the accompanying materials are made available
  1536.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1536.8 -// which accompanies this distribution, and is available
  1536.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1536.10 -//
 1536.11 -// Initial Contributors:
 1536.12 -// Nokia Corporation - initial contribution.
 1536.13 -//
 1536.14 -// Contributors:
 1536.15 -//
 1536.16 -// Description:
 1536.17 -// Definition of the package list/remove error codes
 1536.18 -// 
 1536.19 -//
 1536.20 -
 1536.21 -
 1536.22 -
 1536.23 -/**
 1536.24 - @file 
 1536.25 - @publishedAll
 1536.26 - @released
 1536.27 -*/
 1536.28 -
 1536.29 -#ifndef __PKGREMOVERERRORS_H__
 1536.30 -#define __PKGREMOVERERRORS_H__
 1536.31 -
 1536.32 -#include <e32std.h>
 1536.33 -
 1536.34 -/**
 1536.35 -*
 1536.36 -* A non-removable drive was passed.
 1536.37 -*
 1536.38 -*/
 1536.39 -const TInt KErrNotRemovable = -10280;
 1536.40 -/**
 1536.41 -*
 1536.42 -* No uninstalled packages were found.
 1536.43 -*
 1536.44 -*/
 1536.45 -const TInt KErrNoUninstalledPackages = -10281;
 1536.46 -/**
 1536.47 -*
 1536.48 -* The package being attempted to remove is installed on the device.
 1536.49 -*
 1536.50 -*/
 1536.51 -const TInt KErrPackageIsInstalled = -10282;
 1536.52 -/**
 1536.53 -*
 1536.54 -* The package being attempted to list/remove is corrupted.
 1536.55 -*
 1536.56 -*/
 1536.57 -const TInt KErrPackageFileCorrupt = -10283;
 1536.58 -
 1536.59 -#endif
  1537.1 --- a/epoc32/include/sysutil.h	Tue Mar 16 16:12:26 2010 +0000
  1537.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1537.3 @@ -1,210 +0,0 @@
  1537.4 -/*
  1537.5 -* Copyright (c) 2000-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1537.6 -* All rights reserved.
  1537.7 -* This component and the accompanying materials are made available
  1537.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1537.9 -* which accompanies this distribution, and is available
 1537.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1537.11 -*
 1537.12 -* Initial Contributors:
 1537.13 -* Nokia Corporation - initial contribution.
 1537.14 -*
 1537.15 -* Contributors:
 1537.16 -*
 1537.17 -* Description:  SysUtil API provides functions for applications to retrieve
 1537.18 -*                SW and language package versions and check whether there is
 1537.19 -*                free space on a disk drive.
 1537.20 -*
 1537.21 -*/
 1537.22 -
 1537.23 -
 1537.24 -#ifndef SYSUTIL_H
 1537.25 -#define SYSUTIL_H
 1537.26 -
 1537.27 -#include <e32base.h>
 1537.28 -
 1537.29 -/**
 1537.30 -* Helper constant to allocate buffers for GetSWVersion, GetLangSWVersion,
 1537.31 -* GetLangVersion.
 1537.32 -*/
 1537.33 -const TInt KSysUtilVersionTextLength = 64;
 1537.34 -
 1537.35 -class RFs;
 1537.36 -
 1537.37 -/**
 1537.38 - *  SysUtil provides various utility methods for applications.
 1537.39 - *
 1537.40 - *  SysUtil API provides functions for applications to retrieve SW and language
 1537.41 - *  package versions and check whether there is free space on a disk drive.
 1537.42 - *
 1537.43 - *  @lib sysutil.lib
 1537.44 - *  @since S60 v2.0
 1537.45 - */
 1537.46 -class SysUtil
 1537.47 -    {
 1537.48 -
 1537.49 -public:
 1537.50 -
 1537.51 -    /**
 1537.52 -     * Obtains the software version string.
 1537.53 -     *
 1537.54 -     * @since S60 v2.0
 1537.55 -     *
 1537.56 -     * Usage example:
 1537.57 -     * @code
 1537.58 -     * TBuf<KSysUtilVersionTextLength> version;
 1537.59 -     * if ( SysUtil::GetSWVersion( version ) == KErrNone )
 1537.60 -     *     {
 1537.61 -     *     // Use the version string.
 1537.62 -     *     ...
 1537.63 -     *     }
 1537.64 -     * @endcode
 1537.65 -     *
 1537.66 -     * @param aValue On return, contains the software version string.
 1537.67 -     *               The buffer should have space for KSysUtilVersionTextLength
 1537.68 -     *               characters.
 1537.69 -     *
 1537.70 -     * @return KErrNone on success, or one of the Symbian error codes if reading
 1537.71 -     *         the version string fails.
 1537.72 -     */
 1537.73 -    IMPORT_C static TInt GetSWVersion( TDes& aValue );
 1537.74 -
 1537.75 -    /**
 1537.76 -     * Returns software version which the currently installed language package
 1537.77 -     * is compatible with.
 1537.78 -     *
 1537.79 -     * @since S60 v2.0
 1537.80 -     *
 1537.81 -     * @param aValue On return, contains the version string.
 1537.82 -     *               The buffer should have space for KSysUtilVersionTextLength
 1537.83 -     *               characters.
 1537.84 -     *
 1537.85 -     * @return KErrNone on success, or one of the Symbian error codes if reading
 1537.86 -     *         the version string fails.
 1537.87 -     */
 1537.88 -    IMPORT_C static TInt GetLangSWVersion( TDes& aValue );
 1537.89 -
 1537.90 -    /**
 1537.91 -     * Obtains the version of the currently installed language package.
 1537.92 -     *
 1537.93 -     * @since S60 v2.0
 1537.94 -     *
 1537.95 -     * @param aValue On return, contains the language package version string.
 1537.96 -     *               The buffer should have space for KSysUtilVersionTextLength
 1537.97 -     *               characters.
 1537.98 -     *
 1537.99 -     * @return KErrNone on success, or one of the Symbian error codes if reading
1537.100 -     *         the version string fails.
1537.101 -     */
1537.102 -    IMPORT_C static TInt GetLangVersion( TDes& aValue );
1537.103 -
1537.104 -    /**
1537.105 -     * Checks if free FFS (internal flash file system) storage space is or will
1537.106 -     * fall below critical level. Static configuration value stored in Central
1537.107 -     * Repository is used to determine the critical level for the FFS drive.
1537.108 -     *
1537.109 -     * @since S60 v2.0
1537.110 -     *
1537.111 -     * @param aFs File server session. Must be given if available, e.g. from
1537.112 -     *            EIKON environment. If NULL, this method will create a
1537.113 -     *            temporary session, which causes the method to consume more
1537.114 -     *            time and system resources.
1537.115 -     * @param aBytesToWrite Number of bytes the caller is about to write to
1537.116 -     *                      FFS. If value 0 is given, this method checks
1537.117 -     *                      if the current FFS space is already below critical
1537.118 -     *                      level.
1537.119 -     *
1537.120 -     * @return ETrue if FFS space would go below critical level after writing
1537.121 -     *         aBytesToWrite more data, EFalse otherwise.
1537.122 -     *
1537.123 -     * @leave Leaves with one of the Symbian error codes if checking the FFS
1537.124 -     *        space fails, for instance if there is not enough free memory to
1537.125 -     *        create a temporary connection to file server.
1537.126 -     */
1537.127 -    IMPORT_C static TBool FFSSpaceBelowCriticalLevelL(
1537.128 -        RFs* aFs,
1537.129 -        TInt aBytesToWrite = 0 );
1537.130 -
1537.131 -
1537.132 -    /**
1537.133 -     * Checks if free MMC storage space is or will fall below critical
1537.134 -     * level. Static configuration value stored in Central Repository is
1537.135 -     * used to determine the critical level for the MMC drive.
1537.136 -     * PathInfo API is used to determine the drive letter for the MMC drive.
1537.137 -     *
1537.138 -     * @since S60 v2.0
1537.139 -     *
1537.140 -     * @param aFs File server session. Must be given if available, e.g. from
1537.141 -     *            EIKON environment. If NULL, this method will create a
1537.142 -     *            temporary session, which causes the method to consume more
1537.143 -     *            time and system resources.
1537.144 -     * @param aBytesToWrite Number of bytes the caller is about to write to
1537.145 -     *                      MMC. If value 0 is given, this method checks
1537.146 -     *                      if the current MMC space is already below critical
1537.147 -     *                      level.
1537.148 -     *
1537.149 -     * @return ETrue if MMC space would go below critical level after writing
1537.150 -     *         aBytesToWrite more data, EFalse otherwise.
1537.151 -     *         EFalse if the system has no MMC drive support.
1537.152 -     *
1537.153 -     * @leave Leaves with one of the Symbian error codes if checking the MMC
1537.154 -     *        space fails, for instance if the MMC drive contains no media or
1537.155 -     *        there is not enough free memory to create a temporary connection to
1537.156 -     *        file server.
1537.157 -     */
1537.158 -    IMPORT_C static TBool MMCSpaceBelowCriticalLevelL(
1537.159 -        RFs* aFs,
1537.160 -        TInt aBytesToWrite = 0 );
1537.161 -
1537.162 -    /**
1537.163 -     * Checks if free disk drive storage space is or will fall below critical
1537.164 -     * level. Static configuration values stored in Central Repository are
1537.165 -     * used to determine a critical level for each drive.
1537.166 -     *
1537.167 -     * Usage example:
1537.168 -     * @code
1537.169 -     * TInt dataSize = 500;
1537.170 -     * if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFsSession, dataSize, EDriveC ) )
1537.171 -     *     {
1537.172 -     *     // Can not write the data, there's not enough free space on disk.
1537.173 -     *     ...
1537.174 -     *     }
1537.175 -     * else
1537.176 -     *     {
1537.177 -     *     // It's ok to actually write the data.
1537.178 -     *     ...
1537.179 -     *     }
1537.180 -     * @endcode
1537.181 -     *
1537.182 -     * @since S60 v2.0
1537.183 -     *
1537.184 -     * @param aFs File server session. Must be given if available, e.g. from
1537.185 -     *            EIKON environment. If NULL, this method will create a
1537.186 -     *            temporary session, which causes the method to consume more
1537.187 -     *            time and system resources.
1537.188 -     * @param aBytesToWrite Number of bytes the caller is about to write to
1537.189 -     *                      disk. If value 0 is given, this method checks
1537.190 -     *                      if the current disk space is already below critical
1537.191 -     *                      level.
1537.192 -     * @param aDrive Identifies the disk drive to be checked. Numeric values
1537.193 -     *               for identifying disk drives are defined in TDriveNumber
1537.194 -     *               enumeration.
1537.195 -     *
1537.196 -     * @see TDriveNumber in f32file.h.
1537.197 -     *
1537.198 -     * @return ETrue if disk space would go below critical level after writing
1537.199 -     *         aBytesToWrite more data, EFalse otherwise.
1537.200 -     *
1537.201 -     * @leave Leaves with one of the Symbian error codes if checking the disk
1537.202 -     *        space fails, for instance if the drive contains no media or there
1537.203 -     *        is not enough free memory to create a temporary connection to
1537.204 -     *        file server.
1537.205 -     */
1537.206 -    IMPORT_C static TBool DiskSpaceBelowCriticalLevelL(
1537.207 -        RFs* aFs,
1537.208 -        TInt aBytesToWrite,
1537.209 -        TInt aDrive );
1537.210 -
1537.211 -    };
1537.212 -
1537.213 -#endif // SYSUTIL_H
  1538.1 --- a/epoc32/include/telsess.h	Tue Mar 16 16:12:26 2010 +0000
  1538.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1538.3 @@ -1,314 +0,0 @@
  1538.4 -/**
  1538.5 -* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
  1538.6 -* All rights reserved.
  1538.7 -* This component and the accompanying materials are made available
  1538.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1538.9 -* which accompanies this distribution, and is available
 1538.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1538.11 -*
 1538.12 -* Initial Contributors:
 1538.13 -* Nokia Corporation - initial contribution.
 1538.14 -*
 1538.15 -* Contributors:
 1538.16 -*
 1538.17 -* Description:
 1538.18 -* Telnet Session API
 1538.19 -* 
 1538.20 -*
 1538.21 -*/
 1538.22 -
 1538.23 -
 1538.24 -
 1538.25 -
 1538.26 -
 1538.27 -/**
 1538.28 - @file TELSESS.H
 1538.29 -*/
 1538.30 -
 1538.31 -#ifndef _TELSESS_H_
 1538.32 -#define _TELSESS_H_
 1538.33 -
 1538.34 -#include <in_sock.h>
 1538.35 -#include <e32std.h>
 1538.36 -#include <e32cons.h>
 1538.37 -#include <f32file.h>
 1538.38 -
 1538.39 -#define __TELNETSESSDEBUG__ // Put in Debug mode
 1538.40 -
 1538.41 -class CTelnetControl;
 1538.42 -
 1538.43 -// Used by client to retrieve RFC option state
 1538.44 -// Flags for Telnet negotiated options
 1538.45 -// 1 = Enabled 0 = Disabled
 1538.46 -
 1538.47 -/**
 1538.48 -Defines the supported, RFC-defined, option status.
 1538.49 -
 1538.50 -@publishedAll
 1538.51 -@released 
 1538.52 -*/
 1538.53 -typedef struct
 1538.54 -    {
 1538.55 -	/** If ETrue, the server is sending in binary (RFC 856). */
 1538.56 -    TBool    iServerBinary; ///< RFC 856  (Server Sending in Binary)
 1538.57 -	/** If ETrue, the client is sending in binary (RFC 856). */
 1538.58 -    TBool    iClientBinary; ///< RFC 856  (Client Sending in Binary)
 1538.59 -	/** If ETrue, the server is echoing data back to the client (RFC 857). */
 1538.60 -    TBool    iEcho;         ///< RFC 857  (Server Echoing Data from Client)
 1538.61 -	/** If ETrue, the client will negotiate about window size (RFC 1073). */
 1538.62 -    TBool    iNAWS;         ///< RFC 1073 (Client Providing Window Size Information)
 1538.63 -	/** If ETrue, the terminal speed option is enabled (RFC 1079). */
 1538.64 -    TBool    iTerminalSpeed;///< RFC 1079 (Client Providing Terminal Speed Information)
 1538.65 -	/** If ETrue, the client is providing terminal type information (RFC 1091). */
 1538.66 -    TBool    iTerminalType; ///< RFC 1091 (Client Providing Terminal Type Information)
 1538.67 -	/** If ETrue, if the server is providing status information (RFC 859). */
 1538.68 -    TBool    iServerStatus; ///< RFC 859  (Server Providing Status Information)
 1538.69 -	/** If ETrue, if the client is providing status information (RFC 859). */
 1538.70 -    TBool    iClientStatus; ///< RFC 859  (Client Providing Status Information)
 1538.71 -    }TOptionStatus;
 1538.72 -
 1538.73 -// Used by client to configure the Symbian Telnet
 1538.74 -class TTelnetConfig
 1538.75 -/**
 1538.76 -* Specifies telnet session configuration information.
 1538.77 -* 
 1538.78 -* The client must provide a reference to an instance of this class as a parameter 
 1538.79 -* to the CTelnetSession::NewL() function. 
 1538.80 -* 
 1538.81 -* Configuration options can be modified, when the session is in progress, using 
 1538.82 -* the CTelnetSession::DoModifyConfig() function. 
 1538.83 -* 
 1538.84 -* Configuration option state can be obtained using the CTelnetSession::OptionStatus() 
 1538.85 -* function.
 1538.86 -* @publishedAll
 1538.87 -* @released 
 1538.88 -*/
 1538.89 -    {
 1538.90 - public:
 1538.91 -
 1538.92 -	/** Constructor. */
 1538.93 -	 TTelnetConfig() {
 1538.94 -		              iAllowLogout = TRUE;        // RFC 727  - Default TRUE = Server Can Logout Client
 1538.95 -					  iWindowSize.x = (TInt16)80; // RFC 1073 - Default 80 x 24
 1538.96 -					  iWindowSize.y = (TInt16)24;
 1538.97 -					  iTermSpeed = _L8("38400");  // RFC 1079 - Default to 38400 Baud Terminal
 1538.98 -					  iTermType  = _L8("dumb");   // RFC 1091 - Default to base NVT Terminal
 1538.99 -					}
1538.100 -	/** Destructor. */
1538.101 -	 ~TTelnetConfig(){}
1538.102 -
1538.103 -	typedef struct
1538.104 -		/** 
1538.105 -		* Specifies the client's window size.
1538.106 -		* 
1538.107 -		* The default is 80 columns by 24 rows which constructs to x=80, y=24. 
1538.108 -		*/
1538.109 -		{
1538.110 -		/** The client window's width (number of columns). */
1538.111 -		TInt16 x;
1538.112 -		/** The client window's height (number of rows). */
1538.113 -		TInt16 y;
1538.114 -		}TWindowSize;
1538.115 -
1538.116 -	/** 
1538.117 -	* Specifies the client's window size.
1538.118 -	* 
1538.119 -	* The default is 80 columns by 24 rows. 
1538.120 -	* 
1538.121 -	* (RFC 1073 -- Set to Configure Window Size) 
1538.122 -	*/
1538.123 -	TWindowSize	iWindowSize; 
1538.124 -	
1538.125 -	/**
1538.126 -	* Specifies the speed of the telnet connection.
1538.127 -	* 
1538.128 -	* The default is "38400" (in ASCII characters). Must be set to a server-supported rate.
1538.129 -	* 
1538.130 -	* (RFC 1079 -- Set to Configure Terminal Speed) 
1538.131 -	*/
1538.132 -	TBuf8<20>	iTermSpeed;  
1538.133 -	
1538.134 -	/**
1538.135 -	* Specifies the terminal type.
1538.136 -	* 
1538.137 -	* The default is "dumb" (in ASCII characters). 
1538.138 -	* 
1538.139 -	* (RFC 1091 -- Set to Configure Terminal Type) 
1538.140 -	*/
1538.141 -	TBuf8<20>	iTermType;
1538.142 -	
1538.143 -	/**
1538.144 -	* Specifies whether the telnet server can logout the client.
1538.145 -	* 
1538.146 -	* The default, ETrue, enables the server to logout the client. If EFalse any 
1538.147 -	* logout request from the telnet server is rejected by the client.
1538.148 -	*
1538.149 -	* (RFC 727 -- Set/Clear to Enable/Disable Server Logout) 
1538.150 -	*/
1538.151 -	TBool		iAllowLogout;
1538.152 -	
1538.153 -	/**
1538.154 -	* Enables or disables telnet server echo to client.
1538.155 -	* 
1538.156 -	* The default, ETrue, enables server echo. Note that although this is normal 
1538.157 -	* telnet server behaviour, it is not a formal telnet requirement. It is therefore 
1538.158 -	* recommended that the client implement an optional local echo. 
1538.159 -	*
1538.160 -	* (RFC 857 -- Set/Clear to Enable/Disable Server Echo to client) 
1538.161 -	*/
1538.162 -	TBool		iServerEcho;
1538.163 -    };
1538.164 -
1538.165 -// Client can pass these in overloaded CTelnetSession::Write(TTelnetUserControl& aControlCode);
1538.166 -
1538.167 -/**
1538.168 -* Specifies the telnet control code to send to the server.
1538.169 -*
1538.170 -* This is done using the overloaded CTelnetSession::Write() function.
1538.171 -* @publishedAll
1538.172 -* @released 
1538.173 -*/
1538.174 -enum TTelnetUserControl 
1538.175 -    {
1538.176 -	/** Control code not supported. */
1538.177 -    ENotSupported = 0,
1538.178 -	
1538.179 -	/**
1538.180 -	* Break (the NVT 129th ASCII break code).
1538.181 -	* The default is 243. This is not a valid control in Binary mode. 
1538.182 -	*/
1538.183 -    EBrk	= 243,
1538.184 -	
1538.185 -	/**
1538.186 -	* Interupt Process.
1538.187 -	* The default is 244.
1538.188 -	*/
1538.189 -    EIp		= 244,
1538.190 -	
1538.191 -	/** 
1538.192 -	* Abort Output.
1538.193 -	* The default is 245. 
1538.194 -	*/
1538.195 -    EAo		= 245,
1538.196 -	
1538.197 -	/**
1538.198 -	Are you there?
1538.199 -	* The default is 246. 
1538.200 -	*/
1538.201 -    EAyt	= 246,
1538.202 -	
1538.203 -	/**
1538.204 -	* Erase Character. 
1538.205 -	* The default is 247. This is not a valid control in Binary mode. 
1538.206 -	*/
1538.207 -    EEc		= 247,
1538.208 -	
1538.209 -	/** 
1538.210 -	* Erase Line.
1538.211 -	* The default is 248. This is not a valid control in Binary mode. 
1538.212 -	*/
1538.213 -    EEl		= 248,
1538.214 -    };
1538.215 -
1538.216 -// Client MUST override this class
1538.217 -// Client MUST provide a pointer to an instance of this class as a parameter to CTelnetSession::NewL()
1538.218 -class MTelnetNotification
1538.219 -/**
1538.220 -* Symbian telnet notification interface.
1538.221 -* 
1538.222 -* Informs the client when an error occurs, when reads and writes have completed, 
1538.223 -* when a connection is made or closed and when configuration options change.
1538.224 -* @publishedAll
1538.225 -* @released 
1538.226 -*/
1538.227 -    {
1538.228 - public:
1538.229 -	/** 
1538.230 -	* Reports errors on the Telnet connection.
1538.231 -	*
1538.232 -	* The error code is supplied by the server. If this function is called, it is 
1538.233 -	* likely that the connection has failed. Therefore it is recommended that the 
1538.234 -	* client disconnects and resets its state.
1538.235 -	* 
1538.236 -	* @param aError	Error code from server. 
1538.237 -	 */
1538.238 -    virtual void Error(TInt aError) = 0; ///< Miscellaneous Error callback
1538.239 -	
1538.240 -	/** 
1538.241 -	* Passes the data that was received from the server to the client.
1538.242 -	* 
1538.243 -	* It is recommended that the client copies the data from this buffer, as it 
1538.244 -	* is owned by the Symbian telnet.
1538.245 -	* 
1538.246 -	* @param aBuffer	Data received from server. 
1538.247 -	*/
1538.248 -    virtual void ReadComplete(const TDesC8& aBuffer) = 0; ///< Last Read to Server completion callback
1538.249 -	
1538.250 -	/** Notifies the client that a write to the server from the client has completed. */
1538.251 -    virtual void WriteComplete() = 0; ///< Last Write to Server completion callback
1538.252 -	
1538.253 -	/** Notifies the client that the connection to the server has been closed. */
1538.254 -    virtual void ConnectionClosed() = 0; ///< Telnet Connection Closed callback
1538.255 -	
1538.256 -	/** Notifies the client that a connection to the server has been made. */
1538.257 -    virtual void Connected() = 0; ///< Telnet Connected callback
1538.258 -	
1538.259 -	/** Notifies the client that telnet configuration options have changed. */
1538.260 -    virtual void OptionsChanged() = 0;                    ///< Telnet RFC Options Changed callback
1538.261 -    };
1538.262 -
1538.263 -class CTelnetControl;
1538.264 -
1538.265 -class CTelnetSession : public CBase
1538.266 -/**
1538.267 -* The main Symbian telnet class.
1538.268 -* 
1538.269 -* Consists of a connection interface and a protocol interface. The connection 
1538.270 -* interface comprises member functions that: connect to, read from, write to 
1538.271 -* and disconnect from a telnet server.
1538.272 -* 
1538.273 -* The protocol interface includes member functions that get and set telnet configuration.
1538.274 -*
1538.275 -* @publishedAll
1538.276 -* @released 
1538.277 -*/
1538.278 -    {
1538.279 -    //public:
1538.280 -    // Data Structures
1538.281 - public:
1538.282 -    ~CTelnetSession();
1538.283 -    // Construction
1538.284 -    // Need to add max buffer size to constructor [check]
1538.285 -    IMPORT_C static CTelnetSession* NewL(const TTelnetConfig& aConfig,const MTelnetNotification* aNotifier);
1538.286 - protected:
1538.287 -    IMPORT_C void ConstructL(const TTelnetConfig& aConfig,const MTelnetNotification* aNotifier);
1538.288 -    //
1538.289 -    // Connection Interface
1538.290 -    //
1538.291 - public:
1538.292 -    IMPORT_C TInt Connect(const TInetAddr& aNetAddr); ///< Connects to aNetAddr on the standard telnet port (port 23)
1538.293 -    IMPORT_C TInt Connect(const TInetAddr& aNetAddr, TUint aPort); ///< Connects to aNetAddr on user specified port
1538.294 -    IMPORT_C TInt Connect(const TDesC& aServerName); ///< Connects to aSeverName on the standard telnet port (port 23)
1538.295 -    IMPORT_C TInt Connect(const TDesC& aServerName, TUint aPort); ///< Connects to aServerName on user specified port
1538.296 -    IMPORT_C TInt Disconnect(); ///< Disconnects current connection 
1538.297 -    IMPORT_C TInt Write(const TDesC8& aBuffer); ///< Writes a byte stream over the open telnet connection.
1538.298 -    IMPORT_C TInt Write(TTelnetUserControl& aControlCode); ///< Writes NVT code to stream. Prepends \<IAC\> code (255)
1538.299 -    IMPORT_C TInt Read(); ///< Read data received over telnet buffer.
1538.300 -    
1538.301 -	//
1538.302 -	// Protocol Interface 
1538.303 -	//
1538.304 -	IMPORT_C TInt DoForceLogout();
1538.305 -	IMPORT_C TInt DoModifyConfig(TTelnetConfig& aConfig);
1538.306 -	IMPORT_C TInt OptionStatus(TOptionStatus& aStatus);
1538.307 - private:
1538.308 -    CTelnetSession();
1538.309 -
1538.310 - private:
1538.311 -    MTelnetNotification* iNotifier;
1538.312 -    CTelnetControl* iTelnetProtocol;
1538.313 -
1538.314 -    };
1538.315 -
1538.316 -
1538.317 -#endif // _TELNETPROTOCOLAPI_H_
  1539.1 --- a/epoc32/include/template/mconf.h	Tue Mar 16 16:12:26 2010 +0000
  1539.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1539.3 @@ -1,55 +0,0 @@
  1539.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
  1539.5 -// All rights reserved.
  1539.6 -// This component and the accompanying materials are made available
  1539.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1539.8 -// which accompanies this distribution, and is available
  1539.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1539.10 -//
 1539.11 -// Initial Contributors:
 1539.12 -// Nokia Corporation - initial contribution.
 1539.13 -//
 1539.14 -// Contributors:
 1539.15 -//
 1539.16 -// Description:
 1539.17 -// template\template_variant\inc\mconf.h
 1539.18 -// Template Persistent Machine Configuration
 1539.19 -// 
 1539.20 -//
 1539.21 -
 1539.22 -
 1539.23 -
 1539.24 -#ifndef __MCONF_H__
 1539.25 -#define __MCONF_H__
 1539.26 -#include <kernel.h>
 1539.27 -
 1539.28 -class TDigitizerCalibrateValues
 1539.29 -    {
 1539.30 -public:
 1539.31 -    TInt iR11;
 1539.32 -    TInt iR12;
 1539.33 -    TInt iR21;
 1539.34 -    TInt iR22;
 1539.35 -    TInt iTx;
 1539.36 -    TInt iTy;
 1539.37 -    };
 1539.38 -
 1539.39 -class TTemplateMachineConfig : public TMachineConfig
 1539.40 -	{
 1539.41 -public:
 1539.42 -	TSoundInfoV1 iSoundInfo;
 1539.43 -    TOnOffInfoV1 iOnOffInfo;
 1539.44 -	TTimeK iMainBatteryInsertionTime;
 1539.45 -    Int64 iMainBatteryInUseMicroSeconds;
 1539.46 -	Int64 iExternalPowerInUseMicroSeconds;
 1539.47 -	Int64 iMainBatteryMilliAmpTicks;
 1539.48 -	TDigitizerCalibrateValues iCalibration;
 1539.49 -	TDigitizerCalibrateValues iCalibrationSaved;
 1539.50 -	TDigitizerCalibrateValues iCalibrationFactory;
 1539.51 -	};
 1539.52 -
 1539.53 -typedef TTemplateMachineConfig TActualMachineConfig;
 1539.54 -
 1539.55 -inline TActualMachineConfig& TheActualMachineConfig()
 1539.56 -	{return (TActualMachineConfig&)Kern::MachineConfig();}
 1539.57 -
 1539.58 -#endif
  1540.1 --- a/epoc32/include/template/specific/iolines.h	Tue Mar 16 16:12:26 2010 +0000
  1540.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1540.3 @@ -1,132 +0,0 @@
  1540.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
  1540.5 -// All rights reserved.
  1540.6 -// This component and the accompanying materials are made available
  1540.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1540.8 -// which accompanies this distribution, and is available
  1540.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1540.10 -//
 1540.11 -// Initial Contributors:
 1540.12 -// Nokia Corporation - initial contribution.
 1540.13 -//
 1540.14 -// Contributors:
 1540.15 -//
 1540.16 -// Description:
 1540.17 -// template\template_variant\inc\iolines.h
 1540.18 -// Variant layer header for Template Platform
 1540.19 -// 
 1540.20 -//
 1540.21 -
 1540.22 -
 1540.23 -
 1540.24 -#ifndef __V32TEMPLATEV1_H__
 1540.25 -#define __V32TEMPLATEV1_H__
 1540.26 -#include <e32cmn.h>
 1540.27 -#include <kpower.h>
 1540.28 -
 1540.29 -//----------------------------------------------------------------------------
 1540.30 -// Variant-specific constants: use #define if constant dependencies are not
 1540.31 -// declared within this file (this breaks the dependency on other header files)
 1540.32 -//----------------------------------------------------------------------------
 1540.33 -
 1540.34 -// Examples of what goes in here include:
 1540.35 -//
 1540.36 -// - General-purpose I/O allocation such as 
 1540.37 -//	 #define KtVariantGpio32KHzClkOut		KHtGpioPort1
 1540.38 -//	 #define KtVariantGpioRClkOut			KHtGpioPort0
 1540.39 -//
 1540.40 -//	 #define KmVariantPinDirectionIn Sleep	0
 1540.41 -//
 1540.42 -// - Memory constants (type, geometry, wait states, etc) such as:
 1540.43 -//	 #define KwVariantRom0Type				TTemplate::ERomTypeBurst4Rom
 1540.44 -//	 #define KwVariantRom0Width				TTemplate::ERomWidth32
 1540.45 -//	 const TUint KwVariantRom0WaitNs		= 150;
 1540.46 -//	 const TUint KwVariantRom0PageNs		= 30;
 1540.47 -//	 const TUint KwVariantRom0RecoverNs		= 55;
 1540.48 -//
 1540.49 -// - Specific Peripherals (Keyboard, LCD, CODECS, Serial Ports) such as 
 1540.50 -//	 const TUint KwVariantKeyColLshift		= 7;
 1540.51 -//	 #define KwVariantLcdBpp				TTemplate::ELcd8BitsPerPixel
 1540.52 -//   const TUint KwVariantLcdMaxColors		= 4096;
 1540.53 -//   const TUint KwVariantCodecMaxVolume	= 0;
 1540.54 -//
 1540.55 -// - Off-chip hardware control blocks (addresses, register make-up)
 1540.56 -//
 1540.57 -// - Interrupts (second-level Interrupt controller base address, register make-up):
 1540.58 -//   (EXAMPLE ONLY:)
 1540.59 -const TUint32 KHwVariantPhysBase		=	0x40000000;
 1540.60 -const TUint32 KHoVariantRegSpacing		=	0x200;
 1540.61 -
 1540.62 -const TUint32 KHoBaseIntCont			=	0x0B*KHoVariantRegSpacing;
 1540.63 -
 1540.64 -const TUint32 KHoIntContEnable			=	0x00;		// offsets from KHwVariantPhysBase+KHoBaseIntCont
 1540.65 -const TUint32 KHoIntContPending			=	0x04;
 1540.66 -// other Variant and external blocks Base adrress offsets to KHwVariantPhysBase
 1540.67 -
 1540.68 -
 1540.69 -// TO DO: (optional)
 1540.70 -//
 1540.71 -// Enumerate here all Variant (2nd level)  interrupt sources. It could be a good idea to enumerate them in a way that 
 1540.72 -// facilitates operating on the corresponding interrupt controller registers (e.g using their value as a shift count)
 1540.73 -//
 1540.74 -//   (EXAMPLE ONLY:)
 1540.75 -enum TTemplateInterruptId
 1540.76 -	{
 1540.77 -	// the top-level bit is set to distinguish from first level (ASSP) Interrupts
 1540.78 -	EXIntIdA=0x80000000,
 1540.79 -	EXIntIdB=0x80000001,
 1540.80 -	// ...
 1540.81 -	EXIntIdZ=0x80000019,
 1540.82 -
 1540.83 -	ENumXInts=0x1A
 1540.84 -	};
 1540.85 -
 1540.86 -//
 1540.87 -// TO DO: (optional)
 1540.88 -//
 1540.89 -// Define here some commonly used Variant (2nd level) interrupts
 1540.90 -//
 1540.91 -//   (EXAMPLE ONLY:)
 1540.92 -const TInt KIntIdKeyboard=EXIntIdB;
 1540.93 -
 1540.94 -class Variant
 1540.95 -    {
 1540.96 -	// below is a selection of functions usually implemented  at this level. This do not constitute a mandatory
 1540.97 -	// set and it might not be relevant for your hardware...
 1540.98 -public:
 1540.99 -	/**
1540.100 -	 * initialisation
1540.101 -	 */
1540.102 -	static void Init3();
1540.103 -	/**
1540.104 -	 * Returns the Linear Base address of the Variant Hardware
1540.105 -	 */
1540.106 -	IMPORT_C static TUint BaseLinAddress();
1540.107 -	/**
1540.108 -	 * When invoked, turns off all power supplies
1540.109 -	 */
1540.110 -	IMPORT_C static void PowerReset();
1540.111 -	/**
1540.112 -	 * When invoked, it marks the Serial port used for outputting debug strings as requiring re-initialisation
1540.113 -	 * As in, for example, the serial port was used by a device driver or the system is coming back from Standby
1540.114 -	 */
1540.115 -	IMPORT_C static void MarkDebugPortOff();
1540.116 -	/**
1540.117 -	 * When invoked, initialises the Serial Port hardware for the serial port used to output Debug strings
1540.118 -	 * Called by Template::DebugInit()
1540.119 -	 */
1540.120 -	IMPORT_C static void UartInit();
1540.121 -	/**
1540.122 -	 * When invoked, read the state of on-board switches
1540.123 -	 * @return A bitmask with the state of on-board switches
1540.124 -	 */
1540.125 -	IMPORT_C static TUint Switches();
1540.126 -	// other functions to access hardware not covered by specific device-drivres, which may be called from drivers
1540.127 -	// or platform-specifc code
1540.128 -	// ...
1540.129 -public:
1540.130 -	static TUint32 iBaseAddress;
1540.131 -	// (optional): May need to have a follower variable to store the value of a read only register initialised at boot time
1540.132 -	// static TUint aFollower;
1540.133 -    };
1540.134 -
1540.135 -#endif
  1541.1 --- a/epoc32/include/thttpfields.h	Tue Mar 16 16:12:26 2010 +0000
  1541.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1541.3 @@ -1,544 +0,0 @@
  1541.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
  1541.5 -// All rights reserved.
  1541.6 -// This component and the accompanying materials are made available
  1541.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1541.8 -// which accompanies this distribution, and is available
  1541.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1541.10 -//
 1541.11 -// Initial Contributors:
 1541.12 -// Nokia Corporation - initial contribution.
 1541.13 -//
 1541.14 -// Contributors:
 1541.15 -//
 1541.16 -// Description:
 1541.17 -// Purpose:  This file contains definitions of types THttpStatusCode,
 1541.18 -// THttpParameter, THttpHeaderField, KHttpContentTypes,
 1541.19 -// KHttpCharacterSetNames and KHttpCharacterSetCodes
 1541.20 -// This header is a direct transcoding of [WSP] Appendix A - Assigned
 1541.21 -// Numbers, which contains the following assignment tables:
 1541.22 -// Table 34 : PDU Type Assignments
 1541.23 -// 35 : Abort Reason Code Assignments
 1541.24 -// 36 : Status Code Assignments
 1541.25 -// 37 : Capability Assignments
 1541.26 -// 38 : Well-Known Parameter Assignments
 1541.27 -// 39 : Header Field Name Assignments
 1541.28 -// 40 : Content-Type Assignments
 1541.29 -// 41 : ISO-639 Language Assignments
 1541.30 -// 42 : Character Set Assignments
 1541.31 -// 
 1541.32 -//
 1541.33 -
 1541.34 -#if !defined(__THTTPFIELDS_H__)
 1541.35 -#define __THTTPFIELDS_H__
 1541.36 -
 1541.37 -//
 1541.38 -// Table 34 not implemented
 1541.39 -//
 1541.40 -
 1541.41 -
 1541.42 -//
 1541.43 -// Table 35 not implemented
 1541.44 -//
 1541.45 -
 1541.46 -
 1541.47 -/**
 1541.48 -HTTP/1.1 Status Codes: WSP Code Assignments
 1541.49 -
 1541.50 -(see [WSP] Appdx A Table 36)
 1541.51 -Codes from RFC-2616 added where necessary for HTTP Caching
 1541.52 -@publishedAll
 1541.53 -@deprecated
 1541.54 -*/
 1541.55 -enum THttpStatusCode
 1541.56 -    {
 1541.57 -    EHttpUnknown = 0, 
 1541.58 -    EHttpContinue = 100, 
 1541.59 -    EHttpSwitchingProtocols, 
 1541.60 -	EHttpWarnStaleContent = 110, 		// From RFC-2616
 1541.61 -	EHttpWarnRevalidationFailed, 		//		"
 1541.62 -	EHttpWarnDisconnectedOperation, 	//		"
 1541.63 -	EHttpWarnHeuristicExpiration, 		//		"
 1541.64 -	EHttpWarnMiscellaneous, 			//		"
 1541.65 -    EHttpOK = 200, 
 1541.66 -    EHttpCreated, 
 1541.67 -    EHttpAccepted, 
 1541.68 -    EHttpNonAuthorativeInformation, 
 1541.69 -    EHttpNoContent, 
 1541.70 -    EHttpResetContent, 
 1541.71 -    EHttpPartialContent, 
 1541.72 -	EHttpWarnTransformationApplied, 	// From RFC-2616
 1541.73 -	EHttpWarnPersistentMiscellanous, 	//		"
 1541.74 -    EHttpMultipleChoices = 300, 
 1541.75 -    EHttpMovedPermanently, 
 1541.76 -    EHttpMovedTemporarily, 	
 1541.77 -    EHttpSeeOther, 
 1541.78 -    EHttpNotModified, 
 1541.79 -    EHttpUseProxy,
 1541.80 -	EHttpTemporaryRedirect = 307, 		// From RFC-2616
 1541.81 -    EHttpBadRequest = 400, 
 1541.82 -    EHttpUnauthorized, 
 1541.83 -    EHttpPaymentRequired, 
 1541.84 -    EHttpForbidden, 
 1541.85 -    EHttpNotFound, 
 1541.86 -    EHttpMethodNotAllowed, 
 1541.87 -    EHttpNotAcceptable, 
 1541.88 -    EHttpProxyAuthenticationRequired, 
 1541.89 -    EHttpRequestTimeout, 
 1541.90 -    EHttpConflict, 
 1541.91 -    EHttpGone, 
 1541.92 -    EHttpLengthRequired, 
 1541.93 -    EHttpPreconditionFailed, 
 1541.94 -    EHttpRequestEntityTooLarge, 
 1541.95 -    EHttpRequestURITooLong, 
 1541.96 -    EHttpUnsupportedMediaType, 
 1541.97 -	EHttpRequestRangeNotSatisfiable, 	// From RFC-2616
 1541.98 -	EHttpExpectationFailed, 			// From RFC-2616
 1541.99 -    EHttpInternalServerError = 500, 
1541.100 -    EHttpNotImplemented, 
1541.101 -    EHttpBadGateway, 
1541.102 -    EHttpServiceUnavailable, 
1541.103 -    EHttpGatewayTimeout, 
1541.104 -    EHttpHTTPVersionNotSupported
1541.105 -	// All other codes are extension codes
1541.106 -    };
1541.107 -
1541.108 -
1541.109 -//
1541.110 -// Table 37 not implemented
1541.111 -//
1541.112 -
1541.113 -
1541.114 -/**
1541.115 -HTTP/1.1 Parameters: WSP Well-known Parameter Assignments
1541.116 -
1541.117 -(see [WSP] Appdx A Table 38)
1541.118 -@publishedAll
1541.119 -@deprecated
1541.120 -*/
1541.121 -enum THttpParameter
1541.122 -    {
1541.123 -    EHttpQ			= 0x00, 
1541.124 -	EHttpCharset	= 0x01, 
1541.125 -	EHttpLevel		= 0x02, 
1541.126 -	EHttpType		= 0x03, 
1541.127 -	EHttpName		= 0x04, 
1541.128 -	EHttpFilename	= 0x05, 
1541.129 -	EHttpDifferences = 0x06, 
1541.130 -	EHttpPadding	= 0x07
1541.131 -	};
1541.132 -
1541.133 -
1541.134 -/**
1541.135 -HTTP/1.1 Headers: WSP Field Name Assignments
1541.136 -
1541.137 -(see [WSP] Appdx A Table 39)
1541.138 -@publishedAll
1541.139 -@deprecated
1541.140 -*/
1541.141 -enum THttpHeaderField
1541.142 -    {
1541.143 -    EHttpAccept	 			= 0x00,
1541.144 -    EHttpAcceptCharset, 
1541.145 -    EHttpAcceptEncoding, 
1541.146 -    EHttpAcceptLanguage, 
1541.147 -    EHttpAcceptRanges, 
1541.148 -    EHttpAge, 
1541.149 -    EHttpAllow, 
1541.150 -    EHttpAuthorization, 
1541.151 -    EHttpCacheControl 		= 0x08,
1541.152 -    EHttpConnection, 
1541.153 -    EHttpContentBase, 
1541.154 -    EHttpContentEncoding, 
1541.155 -    EHttpContentLanguage, 
1541.156 -    EHttpContentLength, 
1541.157 -    EHttpContentLocation, 
1541.158 -    EHttpContentMD5, 
1541.159 -    EHttpContentRange 		= 0x10,
1541.160 -    EHttpContentType, 
1541.161 -    EHttpDate, 
1541.162 -    EHttpETag, 
1541.163 -    EHttpExpires, 
1541.164 -    EHttpFrom, 
1541.165 -    EHttpHost, 
1541.166 -    EHttpIfModifiedSince, 
1541.167 -    EHttpIfMatch			= 0x18, 
1541.168 -    EHttpIfNoneMatch, 
1541.169 -    EHttpIfRange, 
1541.170 -    EHttpIfUnmodifiedSince, 
1541.171 -    EHttpLocation, 
1541.172 -    EHttpLastModified, 
1541.173 -    EHttpMaxForwards, 
1541.174 -    EHttpPragma, 
1541.175 -    EHttpProxyAuthenticate = 0x20, 
1541.176 -    EHttpProxyAuthorization, 
1541.177 -    EHttpPublic, 
1541.178 -    EHttpRange, 
1541.179 -    EHttpReferer, 
1541.180 -    EHttpRetryAfter, 
1541.181 -    EHttpServer, 
1541.182 -    EHttpTransferEncoding, 
1541.183 -    EHttpUpgrade			= 0x28, 
1541.184 -    EHttpUserAgent, 
1541.185 -    EHttpVary, 
1541.186 -    EHttpVia, 
1541.187 -    EHttpWarning, 
1541.188 -    EHttpWWWAuthenticate, 
1541.189 -    EHttpContentDisposition,
1541.190 -	EHttpXWapApplicationID	= 0x2F,  // Additional Enums required for WAP1.2 Push
1541.191 -	EHttpXWapContentURI,
1541.192 -	EHttpXWapInitiatorURI,
1541.193 -	EHttpAcceptApplication,
1541.194 -	EHttpBearerIndication,
1541.195 -	EHttpPushFlag,
1541.196 -	EHttpProfile,
1541.197 -	EHttpProfileDiff,
1541.198 -	EHttpProfileWarning
1541.199 -    };
1541.200 -
1541.201 -
1541.202 -//
1541.203 -// WSP Content-Type Assignments
1541.204 -//
1541.205 -// (see [WSP] Appdx A Table 40)
1541.206 -//
1541.207 -/**
1541.208 -@publishedAll
1541.209 -@deprecated
1541.210 -*/
1541.211 -const TInt KHttpNumContentTypes = 77;	
1541.212 -
1541.213 -/**
1541.214 -@publishedAll
1541.215 -@deprecated
1541.216 -*/
1541.217 -const TInt KHttpMaxLenghtOfContentType = 42;
1541.218 -
1541.219 -/**
1541.220 -@publishedAll
1541.221 -@deprecated
1541.222 -*/
1541.223 -static const TText8* const KHttpContentTypes[] = 
1541.224 -    {
1541.225 -    _S8("*/*"),  //0x00
1541.226 -    _S8("text/*"), 
1541.227 -    _S8("text/html"), 
1541.228 -    _S8("text/plain"), 
1541.229 -    _S8("text/x-hdml"), 
1541.230 -    _S8("text/x-ttml"), 
1541.231 -    _S8("text/x-vCalendar"), 
1541.232 -    _S8("text/x-vCard"), 
1541.233 -    _S8("text/vnd.wap.wml"), // 0x08
1541.234 -    _S8("text/vnd.wap.wmlscript"),
1541.235 -    _S8("application/vnd.wap.catc"),
1541.236 -    _S8("Multipart/*"),
1541.237 -    _S8("Multipart/mixed"),
1541.238 -    _S8("Multipart/form-data"),
1541.239 -    _S8("Multipart/byteranges"),
1541.240 -    _S8("multipart/alternative"),
1541.241 -	_S8("application/*"), // 0x10
1541.242 -    _S8("application/java-vm"),
1541.243 -    _S8("application/x-www-form-urlencoded"),
1541.244 -    _S8("application/x-hdmlc"),
1541.245 -    _S8("application/vnd.wap.wmlc"),
1541.246 -    _S8("application/vnd.wap.wmlscriptc"),
1541.247 -    _S8("application/vnd.wap.wsic"),
1541.248 -    _S8("application/vnd.wap.uaprof"),
1541.249 -    _S8("application/vnd.wap.wtls-ca-certificate"), // 0x18
1541.250 -    _S8("application/vnd.wap.wtls-user-certificate"),
1541.251 -    _S8("application/x-x509-ca-cert"),
1541.252 -    _S8("application/x-x509-user-cert"),
1541.253 -    _S8("image/*"),
1541.254 -    _S8("image/gif"),
1541.255 -    _S8("image/jpeg"),
1541.256 -    _S8("image/tiff"),
1541.257 -    _S8("image/png"), // 0x20
1541.258 -    _S8("image/vnd.wap.wbmp"),
1541.259 -    _S8("application/vnd.wap.multipart.*"),
1541.260 -    _S8("application/vnd.wap.multipart.mixed"),
1541.261 -    _S8("application/vnd.wap.multipart.form-data"),
1541.262 -    _S8("application/vnd.wap.multipart.byteranges"),
1541.263 -    _S8("application/vnd.wap.multipart.alternative"),
1541.264 -    _S8("application/xml"),
1541.265 -    _S8("text/xml"), // 0x28
1541.266 -    _S8("application/vnd.wap.wbxml"),
1541.267 -	_S8("application/x-x968-cross-cert"),   //Additional C-Types in WAP 1.2
1541.268 -	_S8("application/x-x968-ca-cert"),
1541.269 -	_S8("application/x-x968-user-cert"),
1541.270 -	_S8("text/vnd.wap.si"),
1541.271 -	_S8("application/vnd.wap.sic"), 
1541.272 -	_S8("text/vnd.wap.sl"),
1541.273 -	_S8("application/vnd.wap.slc"),	//0x30
1541.274 -	_S8("text/vnd.wap.co"),
1541.275 -	_S8("application/vnd.wap.coc"),
1541.276 -	_S8("application/vnd.wap.multipart.related"),
1541.277 -	_S8("application/vnd.wap.sia"),	//0x34  or 52 in decimal
1541.278 - 	_S8("text/vnd.wap.connectivity-xml"),
1541.279 - 	_S8("application/vnd.wap.connectivity-wbxml"),
1541.280 - 	_S8("application/pkcs7-mime"),
1541.281 - 	_S8("application/vnd.wap.hashed-certificate"),
1541.282 - 	_S8("application/vnd.wap.signed-certificate"),
1541.283 - 	_S8("application/vnd.wap.cert-response"),
1541.284 - 	_S8("application/xhtml+xml"),
1541.285 - 	_S8("application/wml+xml"),
1541.286 - 	_S8("text/css"),
1541.287 - 	_S8("application/vnd.wap.mms-message"),
1541.288 - 	_S8("application/vnd.wap.rollover-certificate"),
1541.289 - 	_S8("application/vnd.wap.locc+wbxml"),
1541.290 - 	_S8("application/vnd.wap.loc+xml"),
1541.291 - 	_S8("application/vnd.syncml.dm+wbxml"),
1541.292 - 	_S8("application/vnd.syncml.dm+xml"),
1541.293 - 	_S8("application/vnd.syncml.notification"),
1541.294 - 	_S8("application/vnd.wap.xhtml+xml"),
1541.295 - 	_S8("application/vnd.wv.csp.cir"),
1541.296 - 	_S8("application/vnd.oma.dd+xml"),
1541.297 - 	_S8("application/vnd.oma.drm.message"),
1541.298 - 	_S8("application/vnd.oma.drm.content"),
1541.299 - 	_S8("application/vnd.oma.drm.rights+xml"),
1541.300 - 	_S8("application/vnd.oma.drm.rights+wbxml"),
1541.301 -  	_S8("application/vnd.oma.drm.roap-trigger+xml"),
1541.302 - 	_S8("application/vnd.oma.drm.roap-trigger+wbxml"),//0x4D	
1541.303 -    };
1541.304 -
1541.305 -
1541.306 -//
1541.307 -// Table 41. Languages 
1541.308 -//
1541.309 -/**
1541.310 -@publishedAll
1541.311 -@deprecated
1541.312 -*/
1541.313 -const TInt KHttpNumLanguages = 0x8D;
1541.314 -
1541.315 -/**
1541.316 -@publishedAll
1541.317 -@deprecated
1541.318 -*/
1541.319 -static const TText8* const KHttpLanguages[] = 
1541.320 -	{
1541.321 - 	_S8("AFAR AA"),
1541.322 -	_S8("ABKHAZIAN AB"),
1541.323 -	_S8("AFRIKAANS AF"),
1541.324 -	_S8("AMHARIC AM"),
1541.325 -	_S8("ARABIC AR"),
1541.326 -	_S8("ASSAMESE AS"),
1541.327 -	_S8("AYMARA AY"),
1541.328 -	_S8("AZERBAIJANI AZ"),
1541.329 -	_S8("BASHKIR BA"),
1541.330 -	_S8("BYELORUSSIAN BE"),
1541.331 -	_S8("BULGARIAN BG"),
1541.332 -	_S8("BIHARI BH"),
1541.333 -	_S8("BISLAMA BI"),
1541.334 -	_S8("BENGALI BANGLA  BN"),
1541.335 -	_S8("TIBETAN BO"),
1541.336 -	_S8("BRETON BR"),
1541.337 -	_S8("CATALAN CA"),
1541.338 -	_S8("CORSICAN CO"),
1541.339 -	_S8("CZECH CS"),
1541.340 -	_S8("WELSH CY"),
1541.341 -	_S8("DANISH DA"),
1541.342 -	_S8("GERMAN DE"),
1541.343 -	_S8("BHUTANI DZ"),
1541.344 -	_S8("GREEK EL"),
1541.345 -	_S8("ENGLISH EN"),
1541.346 -	_S8("ESPERANTO EO"),
1541.347 -	_S8("SPANISH ES"),
1541.348 -	_S8("ESTONIAN ET"),
1541.349 -	_S8("BASQUE EU"),
1541.350 -	_S8("PERSIAN farsi FA"),
1541.351 -	_S8("FINNISH FI"),
1541.352 -	_S8("FIJI FJ"),
1541.353 -	_S8("URDU UR"),
1541.354 -	_S8("FRENCH FR"),
1541.355 -	_S8("UZBEK UZ"),
1541.356 -	_S8("IRISH GA"),
1541.357 -	_S8("SCOTS-GAELIC GD"),
1541.358 -	_S8("GALICIAN GL"),
1541.359 -	_S8("GUARANI GN"),
1541.360 -	_S8("GUJARATI GU"),
1541.361 -	_S8("HAUSA HA"),
1541.362 -	_S8("HEBREW HE"),
1541.363 -	_S8("HINDI HI"),
1541.364 -	_S8("CROATIAN HR"),
1541.365 -	_S8("HUNGARIAN HU"),
1541.366 -	_S8("ARMENIAN HY"),
1541.367 -	_S8("VIETNAMESE VI"),
1541.368 -	_S8("INDONESIAN ID"),
1541.369 -	_S8("WOLOF WO"),
1541.370 -	_S8("XHOSA XH"),
1541.371 -	_S8("ICELANDIC IS"),
1541.372 -	_S8("ITALIAN IT"),
1541.373 -	_S8("YORUBA YO"),
1541.374 -	_S8("JAPANESE JA"),
1541.375 -	_S8("JAVANESE JV"),
1541.376 -	_S8("GEORGIAN KA"),
1541.377 -	_S8("KAZAKH KK"),
1541.378 -	_S8("ZHUANG ZA"),
1541.379 -	_S8("CAMBODIAN KM"),
1541.380 -	_S8("KANNADA KN"),
1541.381 -	_S8("KOREAN KO"),
1541.382 -	_S8("KASHMIRI KS"),
1541.383 -	_S8("KURDISH KU"),
1541.384 -	_S8("KIRGHIZ KY"),
1541.385 -	_S8("CHINESE ZH"),
1541.386 -	_S8("LINGALA LN"),
1541.387 -	_S8("LAOTHIAN LO"),
1541.388 -	_S8("LITHUANIAN LT"),
1541.389 -	_S8("LATVIAN LETTISH LV"),
1541.390 -	_S8("MALAGASY MG"),
1541.391 -	_S8("MAORI MI"),
1541.392 -	_S8("MACEDONIAN MK"),
1541.393 -	_S8("MALAYALAM ML"),
1541.394 -	_S8("MONGOLIAN MN"),
1541.395 -	_S8("MOLDAVIAN MO"),
1541.396 -	_S8("MARATHI MR"),
1541.397 -	_S8("MALAY MS"),
1541.398 -	_S8("MALTESE MT"),
1541.399 -	_S8("BURMESE MY"),
1541.400 -	_S8("UKRAINIAN UK"),
1541.401 -	_S8("NEPALI NE"),
1541.402 -	_S8("DUTCH NL"),
1541.403 -	_S8("NORWEGIAN NO"),
1541.404 -	_S8("OCCITAN OC"),
1541.405 -	_S8("AFAN OROMO OM"),
1541.406 -	_S8("ORIYA OR"),
1541.407 -	_S8("PUNJABI PA"),
1541.408 -	_S8("POLISH PL"),
1541.409 -	_S8("PASHTO PUSHTO PS"),
1541.410 -	_S8("PORTUGUESE PT"),
1541.411 -	_S8("QUECHUA QU"),
1541.412 -	_S8("ZULU ZU"),
1541.413 -	_S8("KURUNDI RN"),
1541.414 -	_S8("ROMANIAN RO"),
1541.415 -	_S8("RUSSIAN RU"),
1541.416 -	_S8("KINYARWANDA RW"),
1541.417 -	_S8("SANSKRIT SA"),
1541.418 -	_S8("SINDHI SD"),
1541.419 -	_S8("SANGHO SG"),
1541.420 -	_S8("SERBO-CROATIAN SH"),
1541.421 -	_S8("SINGHALESE SI"),
1541.422 -	_S8("SLOVAK SK"),
1541.423 -	_S8("SLOVENIAN SL"),
1541.424 -	_S8("SAMOAN SM"),
1541.425 -	_S8("SHONA SN"),
1541.426 -	_S8("SOMALI SO"),
1541.427 -	_S8("ALBANIAN SQ"),
1541.428 -	_S8("SERBIAN SR"),
1541.429 -	_S8("SISWATI SS"),
1541.430 -	_S8("SESOTHO ST"),
1541.431 -	_S8("SUNDANESE SU"),
1541.432 -	_S8("SWEDISH SV"),
1541.433 -	_S8("SWAHILI SW"),
1541.434 -	_S8("TAMIL TA"),
1541.435 -	_S8("TELUGU TE"),
1541.436 -	_S8("TAJIK TG"),
1541.437 -	_S8("THAI TH"),
1541.438 -	_S8("TIGRINYA TI"),
1541.439 -	_S8("TURKMEN TK"),
1541.440 -	_S8("TAGALOG TL"),
1541.441 -	_S8("SETSWANA TN"),
1541.442 -	_S8("TONGA TO"),
1541.443 -	_S8("TURKISH TR"),
1541.444 -	_S8("TSONGA TS"),
1541.445 -	_S8("TATAR TT"),
1541.446 -	_S8("TWI TW"),
1541.447 -	_S8("UIGUR UG"),
1541.448 -	_S8(""),
1541.449 -	_S8("NAURU NA"),
1541.450 -	_S8("FAROESE FO"),
1541.451 -	_S8("FRISIAN FY"),
1541.452 -	_S8("INTERLINGUA IA"),
1541.453 -	_S8("VOLAPUK VO"),
1541.454 -	_S8("INTERLINGUE IE"),
1541.455 -	_S8("INUPIAK IK"),
1541.456 -	_S8("YIDDISH YI"),
1541.457 -	_S8("INUKTITUT IU"),
1541.458 -	_S8("GREENLANDIC KL"),
1541.459 -	_S8("LATIN LA"),
1541.460 -	_S8("RHAETO-ROMANCE RM")
1541.461 -	};
1541.462 -
1541.463 -//
1541.464 -// WSP Character Set Assignments
1541.465 -//
1541.466 -// (see [WSP] Appdx A Table 42)
1541.467 -//
1541.468 -// The following two arrays form a paired look-up table
1541.469 -//
1541.470 -/**
1541.471 -@publishedAll
1541.472 -@deprecated
1541.473 -*/
1541.474 -const TInt KHttpNumCharacterSets = 15;
1541.475 -
1541.476 -/**
1541.477 -@publishedAll
1541.478 -@deprecated
1541.479 -*/
1541.480 -static const TText8* const KHttpCharacterSetNames[] = 
1541.481 -    {
1541.482 -    _S8("big5"),
1541.483 -    _S8("iso-10646-ucs-2"),
1541.484 -    _S8("iso-8859-1"),
1541.485 -    _S8("iso-8859-2"),
1541.486 -    _S8("iso-8859-3"),
1541.487 -    _S8("iso-8859-4"),
1541.488 -    _S8("iso-8859-5"),
1541.489 -    _S8("iso-8859-6"),
1541.490 -    _S8("iso-8859-7"),
1541.491 -    _S8("iso-8859-8"),
1541.492 -    _S8("iso-8859-9"),
1541.493 -    _S8("shift_JIS"),
1541.494 -    _S8("us-ascii"),
1541.495 -    _S8("utf-8"),
1541.496 -    _S8("gsm-default-alphabet") // (not yet assigned)
1541.497 -    };
1541.498 -    
1541.499 -/**
1541.500 -@publishedAll
1541.501 -@deprecated
1541.502 -*/
1541.503 -static const TInt KHttpCharacterSetCodes[] = 
1541.504 -    {
1541.505 -    0x07ea,	// big5
1541.506 -	0x03e8,	// iso-10646-ucs-2
1541.507 -    0x04,	// iso-8859-1
1541.508 -    0x05,	// iso-8859-2
1541.509 -    0x06,	// iso-8859-3
1541.510 -    0x07,	// iso-8859-4
1541.511 -    0x08,	// iso-8859-5
1541.512 -    0x09,	// iso-8859-6
1541.513 -    0x0a,	// iso-8859-7
1541.514 -    0x0b,	// iso-8859-8
1541.515 -    0x0c,	// iso-8859-9
1541.516 -    0x11,	// shift_JIS
1541.517 -    0x03,	// us-ascii
1541.518 -    0x6a,	// utf-8
1541.519 -    0xffff	// gsm-default-alphabet (not yet assigned)
1541.520 -    };
1541.521 -
1541.522 -
1541.523 -/**
1541.524 -Additional enumeration implementations for well known field values
1541.525 -that may be found in the Cache-Control header
1541.526 -As described in section 14.9 of RFC-2616
1541.527 -Assigned WSP encodings 
1541.528 -@publishedAll
1541.529 -@deprecated
1541.530 -*/
1541.531 -enum TCacheControlFieldValue
1541.532 -	{
1541.533 -	ECacheControlNoCache = 0x80,// "no-cache"
1541.534 -	ECacheCtrlNoStore,			// "no-store"
1541.535 -	ECacheCtrlMaxAge,			// "max-age"
1541.536 -	ECacheCtrlMaxStale,			// "max-stale"
1541.537 -	ECacheCtrlMinFresh,			// "min-fresh"
1541.538 -	ECacheCtrlOnlyIfCached,		// "only-if-cached"
1541.539 -	ECacheCtrlPublic,			// "public"
1541.540 -	ECacheCtrlPrivate,			// "private"
1541.541 -	ECacheCtrlNoTransform,		// "no-transform"
1541.542 -	ECacheCtrlMustRevalidate,	// "must-revalidate"
1541.543 -	ECacheCtrlProxyRevalidate,	// "proxy-revalidate"
1541.544 -	ECacheCtrlCacheExtension	// "cache-extension"
1541.545 -	};
1541.546 -
1541.547 -#endif // __THTTPFIELDS_H__
  1542.1 --- a/epoc32/include/tmsvsystemprogress.h	Tue Mar 16 16:12:26 2010 +0000
  1542.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1542.3 @@ -1,47 +0,0 @@
  1542.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
  1542.5 -// All rights reserved.
  1542.6 -// This component and the accompanying materials are made available
  1542.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1542.8 -// which accompanies this distribution, and is available
  1542.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1542.10 -//
 1542.11 -// Initial Contributors:
 1542.12 -// Nokia Corporation - initial contribution.
 1542.13 -//
 1542.14 -// Contributors:
 1542.15 -//
 1542.16 -// Description:
 1542.17 -// TMSVSYSTEMPROGRES.H
 1542.18 -// 
 1542.19 -//
 1542.20 -
 1542.21 -#ifndef __TMSVSYSTEMPROGRESS_H__
 1542.22 -#define __TMSVSYSTEMPROGRESS_H__
 1542.23 -
 1542.24 -#include <msvstd.h>
 1542.25 -
 1542.26 -const TUint KUIDMsgMsvSystemProgress = 0x1028308F;
 1542.27 -
 1542.28 -/**
 1542.29 -Progress information that is defined by and understood by the system as well as client MTM's
 1542.30 -
 1542.31 -@publishedAll
 1542.32 -@released
 1542.33 -*/
 1542.34 -class TMsvSystemProgress
 1542.35 -	{
 1542.36 -public:
 1542.37 -	IMPORT_C TMsvSystemProgress();
 1542.38 -	IMPORT_C TMsvSystemProgress(const TMsvSystemProgress& aSysProg);
 1542.39 -	IMPORT_C TMsvSystemProgress& operator=(const TMsvSystemProgress& aSysProg);
 1542.40 -	
 1542.41 -public:
 1542.42 -	/** the version number of class */
 1542.43 -	const TInt			iVersion;
 1542.44 -	/** Operation error code.*/
 1542.45 -	TInt				iErrorCode; 
 1542.46 -	/** the id of an entry in an operation*/
 1542.47 -	TMsvId				iId;	
 1542.48 -	};
 1542.49 -
 1542.50 -#endif // #define __TMSVSYSTEMPROGRESS_H__
  1543.1 --- a/epoc32/include/tools/stlport/ciso646	Tue Mar 16 16:12:26 2010 +0000
  1543.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1543.3 @@ -1,41 +0,0 @@
  1543.4 -/*
  1543.5 - * Copyright (c) 1999
  1543.6 - * Boris Fomitchev
  1543.7 - *
  1543.8 - * This material is provided "as is", with absolutely no warranty expressed
  1543.9 - * or implied. Any use is at your own risk.
 1543.10 - *
 1543.11 - * Permission to use or copy this software for any purpose is hereby granted
 1543.12 - * without fee, provided the above notices are retained on all copies.
 1543.13 - * Permission to modify the code and to distribute modified code is granted,
 1543.14 - * provided the above notices are retained, and a notice that the code was
 1543.15 - * modified is included with the above copyright notice.
 1543.16 - *
 1543.17 - */
 1543.18 -
 1543.19 -#ifndef _STLP_CISO646
 1543.20 -#define _STLP_CISO646
 1543.21 -
 1543.22 -#ifndef _STLP_OUTERMOST_HEADER_ID
 1543.23 -#  define _STLP_OUTERMOST_HEADER_ID 0x107
 1543.24 -#  include <stl/_prolog.h>
 1543.25 -#endif
 1543.26 -
 1543.27 -#if !defined(_STLP_WCE_EVC3) && !defined (N_PLAT_NLM) && !defined (__BORLANDC__)
 1543.28 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1543.29 -#    include _STLP_NATIVE_CPP_C_HEADER(ciso646)
 1543.30 -#  else
 1543.31 -#    include <iso646.h>
 1543.32 -#  endif /* _STLP_USE_NEW_C_HEADERS */
 1543.33 -#endif
 1543.34 -
 1543.35 -#if (_STLP_OUTERMOST_HEADER_ID == 0x107 )
 1543.36 -#  include <stl/_epilog.h>
 1543.37 -#  undef _STLP_OUTERMOST_HEADER_ID
 1543.38 -#endif
 1543.39 -
 1543.40 -#endif /* _STLP_CISO646 */
 1543.41 -
 1543.42 -// Local Variables:
 1543.43 -// mode:C++
 1543.44 -// End:
  1544.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1544.2 +++ b/epoc32/include/tools/stlport/float.h	Wed Mar 31 12:27:01 2010 +0100
  1544.3 @@ -0,0 +1,76 @@
  1544.4 +/*-
  1544.5 + * Copyright (c) 1989 Regents of the University of California.
  1544.6 + * All rights reserved.
  1544.7 + *
  1544.8 + * Redistribution and use in source and binary forms, with or without
  1544.9 + * modification, are permitted provided that the following conditions
 1544.10 + * are met:
 1544.11 + * 1. Redistributions of source code must retain the above copyright
 1544.12 + *    notice, this list of conditions and the following disclaimer.
 1544.13 + * 2. Redistributions in binary form must reproduce the above copyright
 1544.14 + *    notice, this list of conditions and the following disclaimer in the
 1544.15 + *    documentation and/or other materials provided with the distribution.
 1544.16 + * 4. Neither the name of the University nor the names of its contributors
 1544.17 + *    may be used to endorse or promote products derived from this software
 1544.18 + *    without specific prior written permission.
 1544.19 + *
 1544.20 + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 1544.21 + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 1544.22 + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 1544.23 + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 1544.24 + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 1544.25 + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 1544.26 + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 1544.27 + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 1544.28 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 1544.29 + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 1544.30 + * SUCH DAMAGE.
 1544.31 + *
 1544.32 + *	from: @(#)float.h	7.1 (Berkeley) 5/8/90
 1544.33 + * $FreeBSD: src/sys/arm/include/float.h,v 1.5 2005/03/20 00:34:24 cognet Exp $
 1544.34 + */
 1544.35 +
 1544.36 +#ifndef _MACHINE_FLOAT_H_
 1544.37 +#define _MACHINE_FLOAT_H_ 1
 1544.38 +
 1544.39 +#include <sys/cdefs.h>
 1544.40 +
 1544.41 +__BEGIN_DECLS
 1544.42 +extern int __flt_rounds(void);
 1544.43 +__END_DECLS
 1544.44 +
 1544.45 +#define FLT_RADIX	2		/* b */
 1544.46 +#define FLT_ROUNDS	-1
 1544.47 +#define	FLT_EVAL_METHOD	(-1)		/* XXX */
 1544.48 +#define	DECIMAL_DIG	17		/* max precision in decimal digits */
 1544.49 +
 1544.50 +#define FLT_MANT_DIG	24		/* p */
 1544.51 +#define FLT_EPSILON	1.19209290E-07F	/* b**(1-p) */
 1544.52 +#define FLT_DIG		6		/* floor((p-1)*log10(b))+(b == 10) */
 1544.53 +#define FLT_MIN_EXP	(-125)		/* emin */
 1544.54 +#define FLT_MIN		1.17549435E-38F	/* b**(emin-1) */
 1544.55 +#define FLT_MIN_10_EXP	(-37)		/* ceil(log10(b**(emin-1))) */
 1544.56 +#define FLT_MAX_EXP	128		/* emax */
 1544.57 +#define FLT_MAX		3.40282347E+38F	/* (1-b**(-p))*b**emax */
 1544.58 +#define FLT_MAX_10_EXP	38		/* floor(log10((1-b**(-p))*b**emax)) */
 1544.59 +
 1544.60 +#define DBL_MANT_DIG	53
 1544.61 +#define DBL_EPSILON	2.2204460492503131E-16
 1544.62 +#define DBL_DIG		15
 1544.63 +#define DBL_MIN_EXP	(-1021)
 1544.64 +#define DBL_MIN		2.2250738585072014E-308
 1544.65 +#define DBL_MIN_10_EXP	(-307)
 1544.66 +#define DBL_MAX_EXP	1024
 1544.67 +#define DBL_MAX		1.7976931348623157E+308
 1544.68 +#define DBL_MAX_10_EXP	308
 1544.69 +
 1544.70 +#define LDBL_MANT_DIG	DBL_MANT_DIG
 1544.71 +#define LDBL_EPSILON	DBL_EPSILON
 1544.72 +#define LDBL_DIG	DBL_DIG
 1544.73 +#define LDBL_MIN_EXP	DBL_MIN_EXP
 1544.74 +#define LDBL_MIN	DBL_MIN
 1544.75 +#define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
 1544.76 +#define LDBL_MAX_EXP	DBL_MAX_EXP
 1544.77 +#define LDBL_MAX	DBL_MAX
 1544.78 +#define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
 1544.79 +#endif /* _MACHINE_FLOAT_H_ */
  1545.1 --- a/epoc32/include/tools/stlport/iso646.h	Tue Mar 16 16:12:26 2010 +0000
  1545.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1545.3 @@ -1,39 +0,0 @@
  1545.4 -/*
  1545.5 - * Copyright (c) 1999
  1545.6 - * Boris Fomitchev
  1545.7 - *
  1545.8 - * This material is provided "as is", with absolutely no warranty expressed
  1545.9 - * or implied. Any use is at your own risk.
 1545.10 - *
 1545.11 - * Permission to use or copy this software for any purpose is hereby granted
 1545.12 - * without fee, provided the above notices are retained on all copies.
 1545.13 - * Permission to modify the code and to distribute modified code is granted,
 1545.14 - * provided the above notices are retained, and a notice that the code was
 1545.15 - * modified is included with the above copyright notice.
 1545.16 - *
 1545.17 - */
 1545.18 -
 1545.19 -#if !defined (_STLP_OUTERMOST_HEADER_ID)
 1545.20 -#  define _STLP_OUTERMOST_HEADER_ID 0x204
 1545.21 -#  include <stl/_prolog.h>
 1545.22 -#elif (_STLP_OUTERMOST_HEADER_ID == 0x204) && !defined (_STLP_DONT_POP_HEADER_ID)
 1545.23 -#  define _STLP_DONT_POP_HEADER_ID
 1545.24 -#endif
 1545.25 -
 1545.26 -/* evc3 doesn't have iso646.h */
 1545.27 -#if !defined (_STLP_WCE_EVC3) && !defined (N_PLAT_NLM) && !defined (__BORLANDC__)
 1545.28 -#  include _STLP_NATIVE_C_HEADER(iso646.h)
 1545.29 -#endif
 1545.30 -
 1545.31 -#if (_STLP_OUTERMOST_HEADER_ID == 0x204)
 1545.32 -#  if ! defined (_STLP_DONT_POP_HEADER_ID)
 1545.33 -#    include <stl/_epilog.h>
 1545.34 -#    undef  _STLP_OUTERMOST_HEADER_ID
 1545.35 -#  endif
 1545.36 -#  undef  _STLP_DONT_POP_HEADER_ID
 1545.37 -#endif
 1545.38 -
 1545.39 -/* Local Variables:
 1545.40 - * mode:C++
 1545.41 - * End:
 1545.42 - */
  1546.1 --- a/epoc32/include/tools/stlport/stl/_carray.h	Tue Mar 16 16:12:26 2010 +0000
  1546.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1546.3 @@ -1,61 +0,0 @@
  1546.4 -/*
  1546.5 - * Copyright (c) 2005
  1546.6 - * Francois Dumont
  1546.7 - *
  1546.8 - * This material is provided "as is", with absolutely no warranty expressed
  1546.9 - * or implied. Any use is at your own risk.
 1546.10 - *
 1546.11 - * Permission to use or copy this software for any purpose is hereby granted
 1546.12 - * without fee, provided the above notices are retained on all copies.
 1546.13 - * Permission to modify the code and to distribute modified code is granted,
 1546.14 - * provided the above notices are retained, and a notice that the code was
 1546.15 - * modified is included with the above copyright notice.
 1546.16 - *
 1546.17 - */
 1546.18 -
 1546.19 -/* NOTE: This is an internal header file, included by other STL headers.
 1546.20 - *   You should not attempt to use it directly.
 1546.21 - */
 1546.22 -
 1546.23 -#ifndef _STLP_CARRAY_H
 1546.24 -#define _STLP_CARRAY_H
 1546.25 -
 1546.26 -/* Purpose: Mimic a pur C array with the additionnal feature of
 1546.27 - * being able to be used with type not default constructible.
 1546.28 - */
 1546.29 -
 1546.30 -#ifndef _STLP_INTERNAL_CONSTRUCT_H
 1546.31 -#  include <stl/_construct.h>
 1546.32 -#endif
 1546.33 -
 1546.34 -_STLP_BEGIN_NAMESPACE
 1546.35 -
 1546.36 -_STLP_MOVE_TO_PRIV_NAMESPACE
 1546.37 -
 1546.38 -template <class _Tp, size_t _Nb>
 1546.39 -struct _CArray {
 1546.40 -  _CArray (const _Tp& __val) {
 1546.41 -    for (size_t __i = 0; __i < _Nb; ++__i) {
 1546.42 -      _Copy_Construct(__REINTERPRET_CAST(_Tp*, _M_data + __i * sizeof(_Tp)), __val);
 1546.43 -    }
 1546.44 -  }
 1546.45 -
 1546.46 -  ~_CArray() {
 1546.47 -    _Destroy_Range(__REINTERPRET_CAST(_Tp*, _M_data + 0),
 1546.48 -                   __REINTERPRET_CAST(_Tp*, _M_data + _Nb * sizeof(_Tp)));
 1546.49 -  }
 1546.50 -
 1546.51 -  _Tp& operator [] (size_t __i) {
 1546.52 -    _STLP_ASSERT(__i < _Nb)
 1546.53 -    return *__REINTERPRET_CAST(_Tp*, _M_data + __i * sizeof(_Tp));
 1546.54 -  }
 1546.55 -
 1546.56 -private:
 1546.57 -  char _M_data[sizeof(_Tp) * _Nb];
 1546.58 -};
 1546.59 -
 1546.60 -_STLP_MOVE_TO_STD_NAMESPACE
 1546.61 -
 1546.62 -_STLP_END_NAMESPACE
 1546.63 -
 1546.64 -#endif //_STLP_CARRAY_H
  1547.1 --- a/epoc32/include/tools/stlport/stl/_cctype.h	Tue Mar 16 16:12:26 2010 +0000
  1547.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1547.3 @@ -1,45 +0,0 @@
  1547.4 -/*
  1547.5 - * Copyright (c) 1999
  1547.6 - * Boris Fomitchev
  1547.7 - *
  1547.8 - * This material is provided "as is", with absolutely no warranty expressed
  1547.9 - * or implied. Any use is at your own risk.
 1547.10 - *
 1547.11 - * Permission to use or copy this software for any purpose is hereby granted
 1547.12 - * without fee, provided the above notices are retained on all copies.
 1547.13 - * Permission to modify the code and to distribute modified code is granted,
 1547.14 - * provided the above notices are retained, and a notice that the code was
 1547.15 - * modified is included with the above copyright notice.
 1547.16 - *
 1547.17 - */
 1547.18 -
 1547.19 -#ifndef _STLP_INTERNAL_CCTYPE
 1547.20 -#define _STLP_INTERNAL_CCTYPE
 1547.21 -
 1547.22 -#if defined (_STLP_USE_NEW_C_HEADERS)
 1547.23 -#  include _STLP_NATIVE_CPP_C_HEADER(cctype)
 1547.24 -#else
 1547.25 -#  include <ctype.h>
 1547.26 -#endif /* _STLP_USE_NEW_C_HEADERS */
 1547.27 -
 1547.28 -#if ! defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1547.29 -#  if defined ( _STLP_IMPORT_VENDOR_CSTD )
 1547.30 -_STLP_BEGIN_NAMESPACE
 1547.31 -using _STLP_VENDOR_CSTD::isalnum;
 1547.32 -using _STLP_VENDOR_CSTD::isalpha;
 1547.33 -using _STLP_VENDOR_CSTD::iscntrl;
 1547.34 -using _STLP_VENDOR_CSTD::isdigit;
 1547.35 -using _STLP_VENDOR_CSTD::isgraph;
 1547.36 -using _STLP_VENDOR_CSTD::islower;
 1547.37 -using _STLP_VENDOR_CSTD::isprint;
 1547.38 -using _STLP_VENDOR_CSTD::ispunct;
 1547.39 -using _STLP_VENDOR_CSTD::isspace;
 1547.40 -using _STLP_VENDOR_CSTD::isupper;
 1547.41 -using _STLP_VENDOR_CSTD::isxdigit;
 1547.42 -using _STLP_VENDOR_CSTD::tolower;
 1547.43 -using _STLP_VENDOR_CSTD::toupper;
 1547.44 -_STLP_END_NAMESPACE
 1547.45 -#  endif /* _STLP_IMPORT_VENDOR_CSTD*/
 1547.46 -#endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1547.47 -
 1547.48 -#endif
  1548.1 --- a/epoc32/include/tools/stlport/stl/_clocale.h	Tue Mar 16 16:12:26 2010 +0000
  1548.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1548.3 @@ -1,39 +0,0 @@
  1548.4 -/*
  1548.5 - * Copyright (c) 1999
  1548.6 - * Boris Fomitchev
  1548.7 - *
  1548.8 - * This material is provided "as is", with absolutely no warranty expressed
  1548.9 - * or implied. Any use is at your own risk.
 1548.10 - *
 1548.11 - * Permission to use or copy this software for any purpose is hereby granted
 1548.12 - * without fee, provided the above notices are retained on all copies.
 1548.13 - * Permission to modify the code and to distribute modified code is granted,
 1548.14 - * provided the above notices are retained, and a notice that the code was
 1548.15 - * modified is included with the above copyright notice.
 1548.16 - *
 1548.17 - */
 1548.18 -
 1548.19 -#ifndef _STLP_INTERNAL_CLOCALE
 1548.20 -#define _STLP_INTERNAL_CLOCALE
 1548.21 -
 1548.22 -#if !defined (_STLP_WCE_EVC3)
 1548.23 -
 1548.24 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1548.25 -#    include _STLP_NATIVE_CPP_C_HEADER(clocale)
 1548.26 -#  else
 1548.27 -#    include _STLP_NATIVE_C_HEADER(locale.h)
 1548.28 -#  endif
 1548.29 -
 1548.30 -#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1548.31 -_STLP_BEGIN_NAMESPACE
 1548.32 -using _STLP_VENDOR_CSTD::lconv;
 1548.33 -#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1548.34 -using _STLP_VENDOR_CSTD::localeconv;
 1548.35 -using _STLP_VENDOR_CSTD::setlocale;
 1548.36 -#    endif
 1548.37 -_STLP_END_NAMESPACE
 1548.38 -#  endif
 1548.39 -
 1548.40 -#endif /* !_STLP_WCE_EVC3 */
 1548.41 -
 1548.42 -#endif
  1549.1 --- a/epoc32/include/tools/stlport/stl/_csetjmp.h	Tue Mar 16 16:12:26 2010 +0000
  1549.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1549.3 @@ -1,65 +0,0 @@
  1549.4 -/*
  1549.5 - * Copyright (c) 1999
  1549.6 - * Boris Fomitchev
  1549.7 - *
  1549.8 - * This material is provided "as is", with absolutely no warranty expressed
  1549.9 - * or implied. Any use is at your own risk.
 1549.10 - *
 1549.11 - * Permission to use or copy this software for any purpose is hereby granted
 1549.12 - * without fee, provided the above notices are retained on all copies.
 1549.13 - * Permission to modify the code and to distribute modified code is granted,
 1549.14 - * provided the above notices are retained, and a notice that the code was
 1549.15 - * modified is included with the above copyright notice.
 1549.16 - *
 1549.17 - */
 1549.18 -
 1549.19 -#ifndef _STLP_INTERNAL_CSETJMP
 1549.20 -#define _STLP_INTERNAL_CSETJMP
 1549.21 -
 1549.22 -// if the macro is on, the header is already there
 1549.23 -#if !defined (setjmp)
 1549.24 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1549.25 -#    include _STLP_NATIVE_CPP_C_HEADER(csetjmp)
 1549.26 -#  else
 1549.27 -#    define _STLP_NATIVE_SETJMP_H_INCLUDED
 1549.28 -#    include _STLP_NATIVE_C_HEADER(setjmp.h)
 1549.29 -#  endif
 1549.30 -#endif
 1549.31 -
 1549.32 -#if defined (_STLP_IMPORT_VENDOR_CSTD)
 1549.33 -
 1549.34 -#  if defined (__BORLANDC__) && defined (_STLP_USE_NEW_C_HEADERS)
 1549.35 -/* For Borland, even if stdjmp.h is included symbols won't be in global namespace
 1549.36 - * so we need to reach them in vendor namespace:
 1549.37 - */
 1549.38 -#    undef _STLP_NATIVE_SETJMP_H_INCLUDED
 1549.39 -#  endif
 1549.40 -
 1549.41 -_STLP_BEGIN_NAMESPACE
 1549.42 -#  if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED)
 1549.43 -using _STLP_VENDOR_CSTD::jmp_buf;
 1549.44 -#  else
 1549.45 -// if setjmp.h was included first, this is in global namespace, not in
 1549.46 -// vendor's std.  - 2005-08-04, ptr
 1549.47 -using ::jmp_buf;
 1549.48 -#  endif
 1549.49 -#  if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1549.50 -#    if !defined (setjmp)
 1549.51 -#      if !defined (__MSL__) || ((__MSL__ > 0x7001) && (__MSL__ < 0x8000))
 1549.52 -#        ifndef _STLP_NATIVE_SETJMP_H_INCLUDED
 1549.53 -using _STLP_VENDOR_CSTD::setjmp;
 1549.54 -#        else
 1549.55 -using ::setjmp;
 1549.56 -#        endif
 1549.57 -#      endif
 1549.58 -#    endif
 1549.59 -#    if !defined (_STLP_NATIVE_SETJMP_H_INCLUDED)
 1549.60 -using _STLP_VENDOR_CSTD::longjmp;
 1549.61 -#    else
 1549.62 -using ::longjmp;
 1549.63 -#    endif
 1549.64 -#  endif
 1549.65 -_STLP_END_NAMESPACE
 1549.66 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1549.67 -
 1549.68 -#endif
  1550.1 --- a/epoc32/include/tools/stlport/stl/_csignal.h	Tue Mar 16 16:12:26 2010 +0000
  1550.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1550.3 @@ -1,37 +0,0 @@
  1550.4 -/*
  1550.5 - * Copyright (c) 1999
  1550.6 - * Boris Fomitchev
  1550.7 - *
  1550.8 - * This material is provided "as is", with absolutely no warranty expressed
  1550.9 - * or implied. Any use is at your own risk.
 1550.10 - *
 1550.11 - * Permission to use or copy this software for any purpose is hereby granted
 1550.12 - * without fee, provided the above notices are retained on all copies.
 1550.13 - * Permission to modify the code and to distribute modified code is granted,
 1550.14 - * provided the above notices are retained, and a notice that the code was
 1550.15 - * modified is included with the above copyright notice.
 1550.16 - *
 1550.17 - */
 1550.18 -
 1550.19 -#ifndef _STLP_INTERNAL_CSIGNAL
 1550.20 -#define _STLP_INTERNAL_CSIGNAL
 1550.21 -
 1550.22 -#if !defined (_STLP_WCE)
 1550.23 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1550.24 -#    include _STLP_NATIVE_CPP_C_HEADER(csignal)
 1550.25 -#  else
 1550.26 -#    include _STLP_NATIVE_C_HEADER(signal.h)
 1550.27 -#  endif
 1550.28 -
 1550.29 -#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1550.30 -_STLP_BEGIN_NAMESPACE
 1550.31 -#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1550.32 -using _STLP_VENDOR_CSTD::signal;
 1550.33 -using _STLP_VENDOR_CSTD::raise;
 1550.34 -#    endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1550.35 -using _STLP_VENDOR_CSTD::sig_atomic_t;
 1550.36 -_STLP_END_NAMESPACE
 1550.37 -#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1550.38 -#endif
 1550.39 -
 1550.40 -#endif /* _STLP_INTERNAL_CSIGNAL */
  1551.1 --- a/epoc32/include/tools/stlport/stl/_cstdarg.h	Tue Mar 16 16:12:26 2010 +0000
  1551.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1551.3 @@ -1,30 +0,0 @@
  1551.4 -/*
  1551.5 - * Copyright (c) 1999
  1551.6 - * Boris Fomitchev
  1551.7 - *
  1551.8 - * This material is provided "as is", with absolutely no warranty expressed
  1551.9 - * or implied. Any use is at your own risk.
 1551.10 - *
 1551.11 - * Permission to use or copy this software for any purpose is hereby granted
 1551.12 - * without fee, provided the above notices are retained on all copies.
 1551.13 - * Permission to modify the code and to distribute modified code is granted,
 1551.14 - * provided the above notices are retained, and a notice that the code was
 1551.15 - * modified is included with the above copyright notice.
 1551.16 - */
 1551.17 -
 1551.18 -#ifndef _STLP_INTERNAL_CSTDARG
 1551.19 -#define _STLP_INTERNAL_CSTDARG
 1551.20 -
 1551.21 -#if defined (_STLP_USE_NEW_C_HEADERS)
 1551.22 -#  include _STLP_NATIVE_CPP_C_HEADER(cstdarg)
 1551.23 -#else
 1551.24 -#  include _STLP_NATIVE_C_HEADER(stdarg.h)
 1551.25 -#endif
 1551.26 -
 1551.27 -#ifdef _STLP_IMPORT_VENDOR_CSTD
 1551.28 -_STLP_BEGIN_NAMESPACE
 1551.29 -using _STLP_VENDOR_CSTD::va_list;
 1551.30 -_STLP_END_NAMESPACE
 1551.31 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1551.32 -
 1551.33 -#endif
  1552.1 --- a/epoc32/include/tools/stlport/stl/_cstddef.h	Tue Mar 16 16:12:26 2010 +0000
  1552.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1552.3 @@ -1,40 +0,0 @@
  1552.4 -/*
  1552.5 - * Copyright (c) 1999
  1552.6 - * Boris Fomitchev
  1552.7 - *
  1552.8 - * This material is provided "as is", with absolutely no warranty expressed
  1552.9 - * or implied. Any use is at your own risk.
 1552.10 - *
 1552.11 - * Permission to use or copy this software for any purpose is hereby granted
 1552.12 - * without fee, provided the above notices are retained on all copies.
 1552.13 - * Permission to modify the code and to distribute modified code is granted,
 1552.14 - * provided the above notices are retained, and a notice that the code was
 1552.15 - * modified is included with the above copyright notice.
 1552.16 - *
 1552.17 - */
 1552.18 -
 1552.19 -#ifndef _STLP_INTERNAL_CSTDDEF
 1552.20 -#define _STLP_INTERNAL_CSTDDEF
 1552.21 -
 1552.22 -#  if (__GNUC__ >= 3) && defined (__CYGWIN__) // this total HACK is the only expedient way I could cygwin to work with GCC 3.0
 1552.23 -#    define __need_wint_t // mostly because wint_t didn't seem to get defined otherwise :(
 1552.24 -#    define __need_wchar_t
 1552.25 -#    define __need_size_t
 1552.26 -#    define __need_ptrdiff_t
 1552.27 -#    define __need_NULL
 1552.28 -#  endif
 1552.29 -
 1552.30 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1552.31 -#    include _STLP_NATIVE_CPP_C_HEADER(cstddef)
 1552.32 -#  else
 1552.33 -#    include <stddef.h>
 1552.34 -#  endif
 1552.35 -
 1552.36 -#  ifdef _STLP_IMPORT_VENDOR_CSTD
 1552.37 -_STLP_BEGIN_NAMESPACE
 1552.38 -using _STLP_VENDOR_CSTD::ptrdiff_t;
 1552.39 -using _STLP_VENDOR_CSTD::size_t;
 1552.40 -_STLP_END_NAMESPACE
 1552.41 -#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1552.42 -
 1552.43 -#endif /* _STLP_INTERNAL_CSTDDEF */
  1553.1 --- a/epoc32/include/tools/stlport/stl/_cstdio.h	Tue Mar 16 16:12:26 2010 +0000
  1553.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1553.3 @@ -1,125 +0,0 @@
  1553.4 -/*
  1553.5 - * Copyright (c) 1999
  1553.6 - * Boris Fomitchev
  1553.7 - *
  1553.8 - * This material is provided "as is", with absolutely no warranty expressed
  1553.9 - * or implied. Any use is at your own risk.
 1553.10 - *
 1553.11 - * Permission to use or copy this software for any purpose is hereby granted
 1553.12 - * without fee, provided the above notices are retained on all copies.
 1553.13 - * Permission to modify the code and to distribute modified code is granted,
 1553.14 - * provided the above notices are retained, and a notice that the code was
 1553.15 - * modified is included with the above copyright notice.
 1553.16 - *
 1553.17 - */
 1553.18 -
 1553.19 -#ifndef _STLP_INTERNAL_CSTDIO
 1553.20 -#define _STLP_INTERNAL_CSTDIO
 1553.21 -
 1553.22 -#if defined (__Lynx__)
 1553.23 -#  include _STLP_NATIVE_C_HEADER(stdarg.h)
 1553.24 -#endif
 1553.25 -
 1553.26 -#if defined (_STLP_USE_NEW_C_HEADERS)
 1553.27 -#  include _STLP_NATIVE_CPP_C_HEADER(cstdio)
 1553.28 -#else
 1553.29 -#  include _STLP_NATIVE_C_HEADER(stdio.h)
 1553.30 -#endif
 1553.31 -
 1553.32 -#if (defined (__MWERKS__) && !defined (N_PLAT_NLM))  || defined (__BORLANDC__)
 1553.33 -#  undef stdin
 1553.34 -#  undef stdout
 1553.35 -#  undef stderr
 1553.36 -#  if defined (__MWERKS__)
 1553.37 -#  define stdin   (&_STLP_VENDOR_CSTD::__files[0])
 1553.38 -#  define stdout  (&_STLP_VENDOR_CSTD::__files[1])
 1553.39 -#  define stderr  (&_STLP_VENDOR_CSTD::__files[2])
 1553.40 -#  elif defined (__BORLANDC__)
 1553.41 -#    define stdin   (&_STLP_VENDOR_CSTD::_streams[0])
 1553.42 -#    define stdout  (&_STLP_VENDOR_CSTD::_streams[1])
 1553.43 -#    define stderr  (&_STLP_VENDOR_CSTD::_streams[2])
 1553.44 -#  endif
 1553.45 -#endif
 1553.46 -
 1553.47 -#if defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400) || defined (_STLP_USING_PLATFORM_SDK_COMPILER)
 1553.48 -inline int vsnprintf(char *s1, size_t n, const char *s2, va_list v)
 1553.49 -{ return _STLP_VENDOR_CSTD::_vsnprintf(s1, n, s2, v); }
 1553.50 -#endif
 1553.51 -
 1553.52 -#if defined (_STLP_IMPORT_VENDOR_CSTD )
 1553.53 -_STLP_BEGIN_NAMESPACE
 1553.54 -using _STLP_VENDOR_CSTD::FILE;
 1553.55 -using _STLP_VENDOR_CSTD::fpos_t;
 1553.56 -using _STLP_VENDOR_CSTD::size_t;
 1553.57 -
 1553.58 -// undef obsolete macros
 1553.59 -#  undef putc
 1553.60 -#  undef getc
 1553.61 -#  undef getchar
 1553.62 -#  undef putchar
 1553.63 -#  undef feof
 1553.64 -#  undef ferror
 1553.65 -
 1553.66 -#  if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1553.67 -using _STLP_VENDOR_CSTD::clearerr;
 1553.68 -using _STLP_VENDOR_CSTD::fclose;
 1553.69 -using _STLP_VENDOR_CSTD::feof;
 1553.70 -using _STLP_VENDOR_CSTD::ferror;
 1553.71 -using _STLP_VENDOR_CSTD::fflush;
 1553.72 -using _STLP_VENDOR_CSTD::fgetc;
 1553.73 -using _STLP_VENDOR_CSTD::fgetpos;
 1553.74 -using _STLP_VENDOR_CSTD::fgets;
 1553.75 -using _STLP_VENDOR_CSTD::fopen;
 1553.76 -using _STLP_VENDOR_CSTD::fprintf;
 1553.77 -using _STLP_VENDOR_CSTD::fputc;
 1553.78 -using _STLP_VENDOR_CSTD::fputs;
 1553.79 -using _STLP_VENDOR_CSTD::fread;
 1553.80 -#    if _WIN32_WCE < 0x500 // CE5 stopped supplying this
 1553.81 -using _STLP_VENDOR_CSTD::freopen;
 1553.82 -#    endif
 1553.83 -using _STLP_VENDOR_CSTD::fscanf;
 1553.84 -using _STLP_VENDOR_CSTD::fseek;
 1553.85 -using _STLP_VENDOR_CSTD::fsetpos;
 1553.86 -using _STLP_VENDOR_CSTD::ftell;
 1553.87 -using _STLP_VENDOR_CSTD::fwrite;
 1553.88 -
 1553.89 -#    if  !(defined (__IBMCPP__) && (__IBMCPP__ >= 500))
 1553.90 -#      if _WIN32_WCE < 0x500 // CE5 stopped supplying this except as macros. TODO: use inline function to redirect to the macros?
 1553.91 - using _STLP_VENDOR_CSTD::getc;
 1553.92 - using _STLP_VENDOR_CSTD::putc;
 1553.93 -#      endif
 1553.94 - using _STLP_VENDOR_CSTD::getchar;
 1553.95 - using _STLP_VENDOR_CSTD::putchar;
 1553.96 -#    endif
 1553.97 -
 1553.98 -using _STLP_VENDOR_CSTD::gets;
 1553.99 -#    if _WIN32_WCE < 0x500 // CE5 stopped supplying this
1553.100 -using _STLP_VENDOR_CSTD::perror;
1553.101 -#    endif
1553.102 -using _STLP_VENDOR_CSTD::printf;
1553.103 -using _STLP_VENDOR_CSTD::puts;
1553.104 -#    if _WIN32_WCE < 0x500 // CE5 stopped supplying this
1553.105 -using _STLP_VENDOR_CSTD::remove;
1553.106 -using _STLP_VENDOR_CSTD::rename;
1553.107 -using _STLP_VENDOR_CSTD::rewind;
1553.108 -using _STLP_VENDOR_CSTD::setbuf;
1553.109 -using _STLP_VENDOR_CSTD::tmpfile;
1553.110 -using _STLP_VENDOR_CSTD::tmpnam;
1553.111 -#    endif
1553.112 -using _STLP_VENDOR_CSTD::scanf;
1553.113 -using _STLP_VENDOR_CSTD::setvbuf;
1553.114 -using _STLP_VENDOR_CSTD::sprintf;
1553.115 -using _STLP_VENDOR_CSTD::sscanf;
1553.116 -using _STLP_VENDOR_CSTD::ungetc;
1553.117 -using _STLP_VENDOR_CSTD::vfprintf;
1553.118 -using _STLP_VENDOR_CSTD::vprintf;
1553.119 -using _STLP_VENDOR_CSTD::vsprintf;
1553.120 -#    if ((defined (__MWERKS__) && !defined (N_PLAT_NLM)) || (defined (_STLP_MSVC_LIB) && (_STLP_MSVC_LIB < 1400)) || \
1553.121 -        (defined (__BORLANDC__)))
1553.122 -using _STLP_VENDOR_CSTD::vsnprintf;
1553.123 -#    endif
1553.124 -#  endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
1553.125 -_STLP_END_NAMESPACE
1553.126 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
1553.127 -
1553.128 -#endif /* _STLP_INTERNAL_CSTDIO */
  1554.1 --- a/epoc32/include/tools/stlport/stl/_cstdlib.h	Tue Mar 16 16:12:26 2010 +0000
  1554.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1554.3 @@ -1,179 +0,0 @@
  1554.4 -/*
  1554.5 - * Copyright (c) 1999
  1554.6 - * Boris Fomitchev
  1554.7 - *
  1554.8 - * This material is provided "as is", with absolutely no warranty expressed
  1554.9 - * or implied. Any use is at your own risk.
 1554.10 - *
 1554.11 - * Permission to use or copy this software for any purpose is hereby granted
 1554.12 - * without fee, provided the above notices are retained on all copies.
 1554.13 - * Permission to modify the code and to distribute modified code is granted,
 1554.14 - * provided the above notices are retained, and a notice that the code was
 1554.15 - * modified is included with the above copyright notice.
 1554.16 - *
 1554.17 - */
 1554.18 -
 1554.19 -#ifndef _STLP_INTERNAL_CSTDLIB
 1554.20 -#define _STLP_INTERNAL_CSTDLIB
 1554.21 -
 1554.22 -#if defined (_STLP_USE_NEW_C_HEADERS)
 1554.23 -#  include _STLP_NATIVE_CPP_C_HEADER(cstdlib)
 1554.24 -#else
 1554.25 -#  include <stdlib.h>
 1554.26 -#endif
 1554.27 -
 1554.28 -#if defined (__BORLANDC__)
 1554.29 -/* Borland process.h header do not bring anything here and is just included
 1554.30 - * in order to avoid inclusion later. This header cannot be included later
 1554.31 - * because Borland compiler consider that for instance the abort function
 1554.32 - * defined as extern "C" cannot be overloaded and it finds 2 "overloads",
 1554.33 - * once in native std namespace and the other in STLport namespace...
 1554.34 - */
 1554.35 -#  include <process.h>
 1554.36 -#endif
 1554.37 -
 1554.38 -/* on evc3/evc4 including stdlib.h also defines setjmp macro */
 1554.39 -#if defined (_STLP_WCE)
 1554.40 -#  define _STLP_NATIVE_SETJMP_H_INCLUDED
 1554.41 -#endif
 1554.42 -
 1554.43 -#if defined (__MSL__) && (__MSL__ <= 0x5003)
 1554.44 -namespace std {
 1554.45 -  typedef ::div_t div_t;
 1554.46 -  typedef ::ldiv_t ldiv_t;
 1554.47 -#  ifdef __MSL_LONGLONG_SUPPORT__
 1554.48 -  typedef ::lldiv_t lldiv_t;
 1554.49 -#  endif
 1554.50 -}
 1554.51 -#endif
 1554.52 -
 1554.53 -#ifdef _STLP_IMPORT_VENDOR_CSTD
 1554.54 -_STLP_BEGIN_NAMESPACE
 1554.55 -using _STLP_VENDOR_CSTD::div_t;
 1554.56 -using _STLP_VENDOR_CSTD::ldiv_t;
 1554.57 -using _STLP_VENDOR_CSTD::size_t;
 1554.58 -
 1554.59 -#  ifndef _STLP_NO_CSTD_FUNCTION_IMPORTS
 1554.60 -#    ifndef _STLP_WCE
 1554.61 -// these functions just don't exist on Windows CE
 1554.62 -using _STLP_VENDOR_CSTD::abort;
 1554.63 -using _STLP_VENDOR_CSTD::getenv;
 1554.64 -using _STLP_VENDOR_CSTD::mblen;
 1554.65 -using _STLP_VENDOR_CSTD::mbtowc;
 1554.66 -using _STLP_VENDOR_CSTD::system;
 1554.67 -using _STLP_VENDOR_CSTD::bsearch;
 1554.68 -#    endif
 1554.69 -using _STLP_VENDOR_CSTD::atexit;
 1554.70 -using _STLP_VENDOR_CSTD::exit;
 1554.71 -using _STLP_VENDOR_CSTD::calloc;
 1554.72 -using _STLP_VENDOR_CSTD::free;
 1554.73 -using _STLP_VENDOR_CSTD::malloc;
 1554.74 -using _STLP_VENDOR_CSTD::realloc;
 1554.75 -using _STLP_VENDOR_CSTD::atof;
 1554.76 -using _STLP_VENDOR_CSTD::atoi;
 1554.77 -using _STLP_VENDOR_CSTD::atol;
 1554.78 -using _STLP_VENDOR_CSTD::mbstowcs;
 1554.79 -using _STLP_VENDOR_CSTD::strtod;
 1554.80 -using _STLP_VENDOR_CSTD::strtol;
 1554.81 -using _STLP_VENDOR_CSTD::strtoul;
 1554.82 -
 1554.83 -#    if !(defined (_STLP_NO_NATIVE_WIDE_STREAMS) || defined (_STLP_NO_MBSTATE_T))
 1554.84 -using _STLP_VENDOR_CSTD::wcstombs;
 1554.85 -#      ifndef _STLP_WCE
 1554.86 -using _STLP_VENDOR_CSTD::wctomb;
 1554.87 -#      endif
 1554.88 -#    endif
 1554.89 -using _STLP_VENDOR_CSTD::qsort;
 1554.90 -using _STLP_VENDOR_CSTD::labs;
 1554.91 -using _STLP_VENDOR_CSTD::ldiv;
 1554.92 -#    if defined (_STLP_LONG_LONG) && !defined (_STLP_NO_VENDOR_STDLIB_L)
 1554.93 -#      if !defined(__sun)
 1554.94 -using _STLP_VENDOR_CSTD::llabs;
 1554.95 -using _STLP_VENDOR_CSTD::lldiv_t;
 1554.96 -using _STLP_VENDOR_CSTD::lldiv;
 1554.97 -#      else
 1554.98 -using ::llabs;
 1554.99 -using ::lldiv_t;
1554.100 -using ::lldiv;
1554.101 -#      endif
1554.102 -#    endif
1554.103 -using _STLP_VENDOR_CSTD::rand;
1554.104 -using _STLP_VENDOR_CSTD::srand;
1554.105 -#  endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
1554.106 -_STLP_END_NAMESPACE
1554.107 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
1554.108 -
1554.109 -#if defined (__BORLANDC__) && defined (_STLP_USE_NEW_C_HEADERS)
1554.110 -//In this config bcc define everything in std namespace and not in
1554.111 -//the global one.
1554.112 -inline int abs(int __x) { return _STLP_VENDOR_CSTD::abs(__x); }
1554.113 -inline _STLP_VENDOR_CSTD::div_t div(int __x, int __y) { return _STLP_VENDOR_CSTD::div(__x, __y); }
1554.114 -#endif
1554.115 -
1554.116 -#if defined(_MSC_EXTENSIONS) && defined(_STLP_MSVC) && (_STLP_MSVC <= 1300)
1554.117 -#  define _STLP_RESTORE_FUNCTION_INTRINSIC
1554.118 -#  pragma warning (push)
1554.119 -#  pragma warning (disable: 4162)
1554.120 -#  pragma function (abs)
1554.121 -#endif
1554.122 -
1554.123 -//HP-UX native lib has abs() and div() functions in global namespace
1554.124 -#if !defined (__HP_aCC) || (__HP_aCC < 30000)
1554.125 -
1554.126 -//MSVC starting with .Net 2003 already define all math functions in global namespace:
1554.127 -#  if !defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1310) || defined(UNDER_CE)
1554.128 -inline long abs(long __x) { return _STLP_VENDOR_CSTD::labs(__x); }
1554.129 -#  endif
1554.130 -
1554.131 -/** VC since version 8 has this, the platform SDK and CE SDKs hanging behind. */
1554.132 -#  if !defined (_STLP_MSVC_LIB) || (_STLP_MSVC_LIB < 1400) || defined (_STLP_USING_PLATFORM_SDK_COMPILER) || defined(UNDER_CE)
1554.133 -inline _STLP_VENDOR_CSTD::ldiv_t div(long __x, long __y) { return _STLP_VENDOR_CSTD::ldiv(__x, __y); }
1554.134 -#  endif
1554.135 -
1554.136 -#endif
1554.137 -
1554.138 -#if defined (_STLP_RESTORE_FUNCTION_INTRINSIC)
1554.139 -#  pragma intrinsic (abs)
1554.140 -#  pragma warning (pop)
1554.141 -#  undef _STLP_RESTORE_FUNCTION_INTRINSIC
1554.142 -#endif
1554.143 -
1554.144 -#if defined (_STLP_LONG_LONG)
1554.145 -#  if !defined (_STLP_NO_VENDOR_STDLIB_L)
1554.146 -#    if !defined (__sun)
1554.147 -inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return _STLP_VENDOR_CSTD::llabs(__x); }
1554.148 -inline lldiv_t div(_STLP_LONG_LONG __x, _STLP_LONG_LONG __y) { return _STLP_VENDOR_CSTD::lldiv(__x, __y); }
1554.149 -#    else
1554.150 -inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return ::llabs(__x); }
1554.151 -inline lldiv_t div(_STLP_LONG_LONG __x, _STLP_LONG_LONG __y) { return ::lldiv(__x, __y); }
1554.152 -#    endif
1554.153 -#  else
1554.154 -inline _STLP_LONG_LONG  abs(_STLP_LONG_LONG __x) { return __x < 0 ? -__x : __x; }
1554.155 -#  endif
1554.156 -#endif
1554.157 -
1554.158 -/* C++ Standard is unclear about several call to 'using ::func' if new overloads
1554.159 - * of ::func appears between 2 successive 'using' calls. To avoid this potential
1554.160 - * problem we provide all abs overload before the 'using' call.
1554.161 - * Beware: This header inclusion has to be after all abs overload of this file.
1554.162 - *         The first 'using ::abs' call is going to be in the other header.
1554.163 - */
1554.164 -#ifndef _STLP_INTERNAL_CMATH
1554.165 -#  include <stl/_cmath.h>
1554.166 -#endif
1554.167 -
1554.168 -#if defined (_STLP_IMPORT_VENDOR_CSTD) && !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
1554.169 -// ad hoc, don't replace with _STLP_VENDOR_CSTD::abs here! - ptr 2005-03-05
1554.170 -_STLP_BEGIN_NAMESPACE
1554.171 -using ::abs;
1554.172 -#  if !defined (N_PLAT_NLM)
1554.173 -using ::div;
1554.174 -#  else
1554.175 -// Don't use div from clib or libc on NetWare---buggy! - ptr 2005-06-06
1554.176 -inline div_t div(int __x, int __y) { div_t d; d.quot = __x / __y; d.rem = __x % __y; return d; }
1554.177 -inline ldiv_t div(long __x, long __y) { ldiv_t d; d.quot = __x / __y; d.rem = __x % __y; return d; }
1554.178 -#  endif
1554.179 -_STLP_END_NAMESPACE
1554.180 -#endif
1554.181 -
1554.182 -#endif /* _STLP_INTERNAL_CSTDLIB */
  1555.1 --- a/epoc32/include/tools/stlport/stl/_cstring.h	Tue Mar 16 16:12:26 2010 +0000
  1555.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1555.3 @@ -1,31 +0,0 @@
  1555.4 -/*
  1555.5 - * Copyright (c) 1999
  1555.6 - * Boris Fomitchev
  1555.7 - *
  1555.8 - * This material is provided "as is", with absolutely no warranty expressed
  1555.9 - * or implied. Any use is at your own risk.
 1555.10 - *
 1555.11 - * Permission to use or copy this software for any purpose is hereby granted
 1555.12 - * without fee, provided the above notices are retained on all copies.
 1555.13 - * Permission to modify the code and to distribute modified code is granted,
 1555.14 - * provided the above notices are retained, and a notice that the code was
 1555.15 - * modified is included with the above copyright notice.
 1555.16 - *
 1555.17 - */
 1555.18 -
 1555.19 -#ifndef _STLP_INTERNAL_CSTRING
 1555.20 -#define _STLP_INTERNAL_CSTRING
 1555.21 -
 1555.22 -#if defined (_STLP_USE_NEW_C_HEADERS)
 1555.23 -#  include _STLP_NATIVE_CPP_C_HEADER(cstring)
 1555.24 -#else
 1555.25 -#  include _STLP_NATIVE_C_HEADER(string.h)
 1555.26 -#endif
 1555.27 -
 1555.28 -#ifdef _STLP_IMPORT_VENDOR_CSTD
 1555.29 -_STLP_BEGIN_NAMESPACE
 1555.30 -#  include <using/cstring>
 1555.31 -_STLP_END_NAMESPACE
 1555.32 -#endif /* _STLP_IMPORT_VENDOR_CSTD */
 1555.33 -
 1555.34 -#endif /* _STLP_INTERNAL_CSTRING */
  1556.1 --- a/epoc32/include/tools/stlport/stl/_ctime.h	Tue Mar 16 16:12:26 2010 +0000
  1556.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1556.3 @@ -1,52 +0,0 @@
  1556.4 -/*
  1556.5 - * Copyright (c) 1999
  1556.6 - * Boris Fomitchev
  1556.7 - *
  1556.8 - * This material is provided "as is", with absolutely no warranty expressed
  1556.9 - * or implied. Any use is at your own risk.
 1556.10 - *
 1556.11 - * Permission to use or copy this software for any purpose is hereby granted
 1556.12 - * without fee, provided the above notices are retained on all copies.
 1556.13 - * Permission to modify the code and to distribute modified code is granted,
 1556.14 - * provided the above notices are retained, and a notice that the code was
 1556.15 - * modified is included with the above copyright notice.
 1556.16 - *
 1556.17 - */
 1556.18 -
 1556.19 -#ifndef _STLP_INTERNAL_CTIME
 1556.20 -#define _STLP_INTERNAL_CTIME
 1556.21 -
 1556.22 -#if !defined (_STLP_WCE_EVC3)
 1556.23 -
 1556.24 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1556.25 -#    include _STLP_NATIVE_CPP_C_HEADER(ctime)
 1556.26 -#  else
 1556.27 -#    include _STLP_NATIVE_C_HEADER(time.h)
 1556.28 -#  endif
 1556.29 -
 1556.30 -#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1556.31 -_STLP_BEGIN_NAMESPACE
 1556.32 -using _STLP_VENDOR_CSTD::size_t;
 1556.33 -using _STLP_VENDOR_CSTD::clock_t;
 1556.34 -using _STLP_VENDOR_CSTD::time_t;
 1556.35 -using _STLP_VENDOR_CSTD::tm;
 1556.36 -#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1556.37 -using _STLP_VENDOR_CSTD::clock;
 1556.38 -using _STLP_VENDOR_CSTD::asctime;
 1556.39 -using _STLP_VENDOR_CSTD::ctime;
 1556.40 -using _STLP_VENDOR_CSTD::gmtime;
 1556.41 -
 1556.42 -#      if _WIN32_WCE < 0x500 // CE5 stopped supplying this
 1556.43 -using _STLP_VENDOR_CSTD::difftime;
 1556.44 -#      endif
 1556.45 -using _STLP_VENDOR_CSTD::mktime;
 1556.46 -using _STLP_VENDOR_CSTD::localtime;
 1556.47 -using _STLP_VENDOR_CSTD::strftime;
 1556.48 -using _STLP_VENDOR_CSTD::time;
 1556.49 -#    endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1556.50 -_STLP_END_NAMESPACE
 1556.51 -#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1556.52 -
 1556.53 -#endif
 1556.54 -
 1556.55 -#endif /* _STLP_INTERNAL_CTIME */
  1557.1 --- a/epoc32/include/tools/stlport/stl/_cwctype.h	Tue Mar 16 16:12:26 2010 +0000
  1557.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1557.3 @@ -1,93 +0,0 @@
  1557.4 -/*
  1557.5 - * Copyright (c) 1999
  1557.6 - * Boris Fomitchev
  1557.7 - *
  1557.8 - * This material is provided "as is", with absolutely no warranty expressed
  1557.9 - * or implied. Any use is at your own risk.
 1557.10 - *
 1557.11 - * Permission to use or copy this software for any purpose is hereby granted
 1557.12 - * without fee, provided the above notices are retained on all copies.
 1557.13 - * Permission to modify the code and to distribute modified code is granted,
 1557.14 - * provided the above notices are retained, and a notice that the code was
 1557.15 - * modified is included with the above copyright notice.
 1557.16 - *
 1557.17 - */
 1557.18 -
 1557.19 -#ifndef _STLP_INTERNAL_CWCTYPE
 1557.20 -#define _STLP_INTERNAL_CWCTYPE
 1557.21 -
 1557.22 -#if defined (__BORLANDC__) && !defined (_STLP_INTERNAL_CCTYPE)
 1557.23 -#  include <stl/_cctype.h>
 1557.24 -#endif
 1557.25 -
 1557.26 -#if !defined (_STLP_WCE_EVC3)
 1557.27 -#  if defined (_STLP_USE_NEW_C_HEADERS)
 1557.28 -#    if !defined (N_PLAT_NLM)
 1557.29 -#      include _STLP_NATIVE_CPP_C_HEADER(cwctype)
 1557.30 -#    else
 1557.31 -       // see comments in stlport/cwchar about wint_t on Novell
 1557.32 -#      include _STLP_NATIVE_CPP_C_HEADER(wchar_t.h)
 1557.33 -#      include _STLP_NATIVE_C_HEADER(stddef.h)
 1557.34 -#      include _STLP_NATIVE_C_HEADER(stdio.h)
 1557.35 -#    endif
 1557.36 -#    if defined (__MSL__) && !defined (N_PLAT_NLM)
 1557.37 -namespace std {
 1557.38 -  typedef wchar_t wctrans_t;
 1557.39 -  wint_t towctrans(wint_t c, wctrans_t value);
 1557.40 -  wctrans_t wctrans(const char *name);
 1557.41 -}
 1557.42 -using std::wctrans_t;
 1557.43 -using std::towctrans;
 1557.44 -using std::wctrans;
 1557.45 -#    endif
 1557.46 -#  else
 1557.47 -#    include _STLP_NATIVE_C_HEADER(wctype.h)
 1557.48 -#  endif
 1557.49 -
 1557.50 -#  if defined (_STLP_IMPORT_VENDOR_CSTD)
 1557.51 -
 1557.52 -#    if defined (_STLP_USE_GLIBC) && !(defined (_GLIBCPP_USE_WCHAR_T) || defined (_GLIBCXX_USE_WCHAR_T)) || \
 1557.53 -        defined (__sun) || defined (__FreeBSD__) || \
 1557.54 -        defined (__MINGW32__) && ((__MINGW32_MAJOR_VERSION < 3) || (__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION <= 0))
 1557.55 -//We take wide functions from global namespace:
 1557.56 -#      define _STLP_VENDOR_CSTD_WFUNC
 1557.57 -#    else
 1557.58 -#      define _STLP_VENDOR_CSTD_WFUNC _STLP_VENDOR_CSTD
 1557.59 -#    endif
 1557.60 -
 1557.61 -_STLP_BEGIN_NAMESPACE
 1557.62 -using _STLP_VENDOR_CSTD_WFUNC::wctype_t;
 1557.63 -using _STLP_VENDOR_CSTD_WFUNC::wint_t;
 1557.64 -#    if !defined (_STLP_NO_CSTD_FUNCTION_IMPORTS)
 1557.65 -#      if !defined (__BORLANDC__) && !defined (__MSL__)
 1557.66 -using _STLP_VENDOR_CSTD_WFUNC::wctrans_t;
 1557.67 -#        if !defined (__DMC__) && (!defined(_WIN32_WCE) || _WIN32_WCE<0x500)
 1557.68 -using _STLP_VENDOR_CSTD_WFUNC::towctrans;
 1557.69 -using _STLP_VENDOR_CSTD_WFUNC::wctrans;
 1557.70 -using _STLP_VENDOR_CSTD_WFUNC::wctype;
 1557.71 -#        endif
 1557.72 -using _STLP_VENDOR_CSTD_WFUNC::iswctype;
 1557.73 -#      endif
 1557.74 -#      if !defined(N_PLAT_NLM)
 1557.75 -using _STLP_VENDOR_CSTD_WFUNC::iswalnum;
 1557.76 -using _STLP_VENDOR_CSTD_WFUNC::iswalpha;
 1557.77 -using _STLP_VENDOR_CSTD_WFUNC::iswcntrl;
 1557.78 -
 1557.79 -using _STLP_VENDOR_CSTD_WFUNC::iswdigit;
 1557.80 -using _STLP_VENDOR_CSTD_WFUNC::iswgraph;
 1557.81 -using _STLP_VENDOR_CSTD_WFUNC::iswlower;
 1557.82 -using _STLP_VENDOR_CSTD_WFUNC::iswprint;
 1557.83 -using _STLP_VENDOR_CSTD_WFUNC::iswpunct;
 1557.84 -using _STLP_VENDOR_CSTD_WFUNC::iswspace;
 1557.85 -using _STLP_VENDOR_CSTD_WFUNC::iswupper;
 1557.86 -using _STLP_VENDOR_CSTD_WFUNC::iswxdigit;
 1557.87 -
 1557.88 -using _STLP_VENDOR_CSTD_WFUNC::towlower;
 1557.89 -using _STLP_VENDOR_CSTD_WFUNC::towupper;
 1557.90 -#      endif /* !N_PLAT_NLM */
 1557.91 -#    endif /* _STLP_NO_CSTD_FUNCTION_IMPORTS */
 1557.92 -_STLP_END_NAMESPACE
 1557.93 -#  endif /* _STLP_IMPORT_VENDOR_CSTD */
 1557.94 -#endif /* _STLP_WCE_EVC3 */
 1557.95 -
 1557.96 -#endif /* _STLP_INTERNAL_CWCTYPE */
  1558.1 --- a/epoc32/include/tools/stlport/stl/_ioserr.h	Tue Mar 16 16:12:26 2010 +0000
  1558.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1558.3 @@ -1,12 +0,0 @@
  1558.4 -/*
  1558.5 - * This file is included in every header that needs the STLport library to be
  1558.6 - * built; the header files mostly are the iostreams-headers. The file checks for
  1558.7 - * _STLP_USE_NO_IOSTREAMS or _STLP_NO_IOSTREAMS being not defined, so that the
  1558.8 - * iostreams part of STLport cannot be used when the symbols were defined
  1558.9 - * accidentally.
 1558.10 - */
 1558.11 -#if defined (_STLP_NO_IOSTREAMS)
 1558.12 -#  error STLport iostreams header cannot be used; you chose not to use iostreams in the STLport configuration file (stlport/stl/config/user_config.h).
 1558.13 -#elif defined (_STLP_USE_NO_IOSTREAMS )
 1558.14 -#  error STLport iostreams header cannot be used; your compiler do not support it.
 1558.15 -#endif
  1559.1 --- a/epoc32/include/tools/stlport/stl/_iostream_string.h	Tue Mar 16 16:12:26 2010 +0000
  1559.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1559.3 @@ -1,140 +0,0 @@
  1559.4 -/*
  1559.5 - * Copyright (c) 2004
  1559.6 - * Francois Dumont
  1559.7 - *
  1559.8 - * This material is provided "as is", with absolutely no warranty expressed
  1559.9 - * or implied. Any use is at your own risk.
 1559.10 - *
 1559.11 - * Permission to use or copy this software for any purpose is hereby granted
 1559.12 - * without fee, provided the above notices are retained on all copies.
 1559.13 - * Permission to modify the code and to distribute modified code is granted,
 1559.14 - * provided the above notices are retained, and a notice that the code was
 1559.15 - * modified is included with the above copyright notice.
 1559.16 - *
 1559.17 - */
 1559.18 -
 1559.19 - /*
 1559.20 -  * This is an internal string for the STLport own iostream implementation.
 1559.21 -  * The only diference rely on the allocator used to instanciate the basic_string.
 1559.22 -  * Its goals is to improve performance limitating the number of dynamic allocation
 1559.23 -  * that could occur when requesting a big float ouput for instance. This allocator
 1559.24 -  * is not standard conformant as it has an internal state (the static buffer)
 1559.25 -  */
 1559.26 -
 1559.27 -
 1559.28 -#ifndef _STLP_INTERNAL_IOSTREAM_STRING_H
 1559.29 -#define _STLP_INTERNAL_IOSTREAM_STRING_H
 1559.30 -
 1559.31 -#ifndef _STLP_INTERNAL_ALLOC_H
 1559.32 -#  include <stl/_alloc.h>
 1559.33 -#endif /* _STLP_INTERNAL_ALLOC_H */
 1559.34 -
 1559.35 -#ifndef _STLP_INTERNAL_STRING_H
 1559.36 -#  include <stl/_string.h>
 1559.37 -#endif /* _STLP_INTERNAL_STRING_H */
 1559.38 -
 1559.39 -_STLP_BEGIN_NAMESPACE
 1559.40 -
 1559.41 -_STLP_MOVE_TO_PRIV_NAMESPACE
 1559.42 -
 1559.43 -template <class _CharT>
 1559.44 -class __iostring_allocator : public allocator<_CharT> {
 1559.45 -public:
 1559.46 -  enum { _STR_SIZE = 256 };
 1559.47 -
 1559.48 -private:
 1559.49 -  enum { _BUF_SIZE = _STR_SIZE + 1 };
 1559.50 -  typedef allocator<_CharT> _Base;
 1559.51 -  _CharT _M_static_buf[_BUF_SIZE];
 1559.52 -
 1559.53 -public:
 1559.54 -  typedef typename _Base::size_type size_type;
 1559.55 -  typedef typename _Base::pointer pointer;
 1559.56 -#if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
 1559.57 -  template <class _Tp1> struct rebind {
 1559.58 -#  if !defined (_STLP_MSVC) || (_STLP_MSVC >= 1300)
 1559.59 -    typedef __iostring_allocator<_Tp1> other;
 1559.60 -#  else
 1559.61 -    typedef _STLP_PRIV __iostring_allocator<_Tp1> other;
 1559.62 -#  endif
 1559.63 -  };
 1559.64 -#endif
 1559.65 -
 1559.66 -  _CharT* allocate(size_type __n, const void* __ptr = 0) {
 1559.67 -    if (__n > _BUF_SIZE) {
 1559.68 -      return _Base::allocate(__n, __ptr);
 1559.69 -    }
 1559.70 -    return _M_static_buf;
 1559.71 -  }
 1559.72 -  void deallocate(pointer __p, size_type __n) {
 1559.73 -    if (__p != _M_static_buf) _Base::deallocate(__p, __n);
 1559.74 -  }
 1559.75 -};
 1559.76 -
 1559.77 -#if defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE) || !defined (_STLP_MEMBER_TEMPLATES)
 1559.78 -/*
 1559.79 - * As the __iostring_allocator allocator will only be used in the basic_string implementation
 1559.80 - * we known that it is never going to be bound to another type that the one used to instantiate
 1559.81 - * the basic_string. This is why the associated __stl_alloc_rebind has only one template
 1559.82 - * parameter.
 1559.83 - */
 1559.84 -_STLP_MOVE_TO_STD_NAMESPACE
 1559.85 -
 1559.86 -template <class _Tp>
 1559.87 -inline _STLP_PRIV __iostring_allocator<_Tp>& _STLP_CALL
 1559.88 -__stl_alloc_rebind(_STLP_PRIV __iostring_allocator<_Tp>& __a, const _Tp*)
 1559.89 -{ return __a; }
 1559.90 -template <class _Tp>
 1559.91 -inline _STLP_PRIV __iostring_allocator<_Tp> _STLP_CALL
 1559.92 -__stl_alloc_create(const _STLP_PRIV __iostring_allocator<_Tp>&, const _Tp*)
 1559.93 -{ return _STLP_PRIV __iostring_allocator<_Tp>(); }
 1559.94 -
 1559.95 -_STLP_MOVE_TO_PRIV_NAMESPACE
 1559.96 -#endif /* _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE */
 1559.97 -
 1559.98 -#if !defined (_STLP_DEBUG)
 1559.99 -template <class _CharT>
1559.100 -struct __basic_iostring : public basic_string<_CharT, char_traits<_CharT>, __iostring_allocator<_CharT> > {
1559.101 -  /*
1559.102 -   * A consequence of the non standard conformant allocator is that a string using it
1559.103 -   * must always be presized to the allocator static buffer size because the basic_string implementation
1559.104 -   * do not manage an allocator returning always the same memory adress as long as the
1559.105 -   * requested memory block size is under a certain value.
1559.106 -   */
1559.107 -  typedef __basic_iostring<_CharT> _Self;
1559.108 -  typedef basic_string<_CharT, char_traits<_CharT>, __iostring_allocator<_CharT> > _Base;
1559.109 -  typedef typename _Base::_Reserve_t _Reserve_t;
1559.110 -
1559.111 -  __basic_iostring() : _Base(_Reserve_t(), __iostring_allocator<_CharT>::_STR_SIZE)
1559.112 -  {}
1559.113 -
1559.114 -  _Self& operator=(const _CharT* __s) {
1559.115 -    _Base::operator=(__s);
1559.116 -    return *this;
1559.117 -  }
1559.118 -};
1559.119 -
1559.120 -typedef __basic_iostring<char> __iostring;
1559.121 -
1559.122 -#  if !defined (_STLP_NO_WCHAR_T)
1559.123 -typedef __basic_iostring<wchar_t> __iowstring;
1559.124 -#  endif
1559.125 -
1559.126 -#  define _STLP_BASIC_IOSTRING(_CharT) _STLP_PRIV __basic_iostring<_CharT>
1559.127 -
1559.128 -#else
1559.129 -
1559.130 -typedef string __iostring;
1559.131 -#  if !defined (_STLP_NO_WCHAR_T)
1559.132 -typedef wstring __iowstring;
1559.133 -#  endif
1559.134 -
1559.135 -#  define _STLP_BASIC_IOSTRING(_CharT) basic_string<_CharT, char_traits<_CharT>, allocator<_CharT> >
1559.136 -
1559.137 -#endif
1559.138 -
1559.139 -_STLP_MOVE_TO_STD_NAMESPACE
1559.140 -
1559.141 -_STLP_END_NAMESPACE
1559.142 -
1559.143 -#endif /* _STLP_INTERNAL_IOSTREAM_STRING_H */
  1560.1 --- a/epoc32/include/tools/stlport/stl/_mbstate_t.h	Tue Mar 16 16:12:26 2010 +0000
  1560.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1560.3 @@ -1,39 +0,0 @@
  1560.4 -/*
  1560.5 - * Copyright (c) 1999
  1560.6 - * Boris Fomitchev
  1560.7 - *
  1560.8 - * This material is provided "as is", with absolutely no warranty expressed
  1560.9 - * or implied. Any use is at your own risk.
 1560.10 - *
 1560.11 - * Permission to use or copy this software for any purpose is hereby granted
 1560.12 - * without fee, provided the above notices are retained on all copies.
 1560.13 - * Permission to modify the code and to distribute modified code is granted,
 1560.14 - * provided the above notices are retained, and a notice that the code was
 1560.15 - * modified is included with the above copyright notice.
 1560.16 - *
 1560.17 - */
 1560.18 -
 1560.19 -#ifndef _STLP_INTERNAL_MBSTATE_T
 1560.20 -#define _STLP_INTERNAL_MBSTATE_T
 1560.21 -
 1560.22 -#if (defined (__OpenBSD__) || defined (__FreeBSD__)) && defined (__GNUC__) && !defined (_GLIBCPP_HAVE_MBSTATE_T)
 1560.23 -#  define __mbstate_t_defined /* mbstate_t defined in native <cwchar>, so not defined in C! */
 1560.24 -#endif
 1560.25 -
 1560.26 -#if defined (_STLP_NO_NATIVE_MBSTATE_T) && !defined (_STLP_NO_MBSTATE_T) && !defined (_MBSTATE_T) && !defined (__mbstate_t_defined)
 1560.27 -#  define _STLP_USE_OWN_MBSTATE_T
 1560.28 -#  define _MBSTATE_T
 1560.29 -#endif
 1560.30 -
 1560.31 -#if defined (_STLP_USE_OWN_MBSTATE_T)
 1560.32 -typedef int mbstate_t;
 1560.33 -
 1560.34 -#  if defined (__cplusplus)
 1560.35 -_STLP_BEGIN_NAMESPACE
 1560.36 -using ::mbstate_t;
 1560.37 -_STLP_END_NAMESPACE
 1560.38 -#  endif
 1560.39 -
 1560.40 -#endif /* _STLP_USE_OWN_MBSTATE_T */
 1560.41 -
 1560.42 -#endif /* _STLP_INTERNAL_MBSTATE_T */
  1561.1 --- a/epoc32/include/tools/stlport/stl/_move_construct_fwk.h	Tue Mar 16 16:12:26 2010 +0000
  1561.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1561.3 @@ -1,160 +0,0 @@
  1561.4 -/*
  1561.5 - *
  1561.6 - * Copyright (c) 2003
  1561.7 - * François Dumont
  1561.8 - *
  1561.9 - * This material is provided "as is", with absolutely no warranty expressed
 1561.10 - * or implied. Any use is at your own risk.
 1561.11 - *
 1561.12 - * Permission to use or copy this software for any purpose is hereby granted
 1561.13 - * without fee, provided the above notices are retained on all copies.
 1561.14 - * Permission to modify the code and to distribute modified code is granted,
 1561.15 - * provided the above notices are retained, and a notice that the code was
 1561.16 - * modified is included with the above copyright notice.
 1561.17 - *
 1561.18 - */
 1561.19 -
 1561.20 -#ifndef _STLP_MOVE_CONSTRUCT_FWK_H
 1561.21 -#define _STLP_MOVE_CONSTRUCT_FWK_H
 1561.22 -
 1561.23 -#ifndef _STLP_TYPE_TRAITS_H
 1561.24 -#  include <stl/type_traits.h>
 1561.25 -#endif
 1561.26 -
 1561.27 -_STLP_BEGIN_NAMESPACE
 1561.28 -
 1561.29 -/*************************************************************
 1561.30 - * Move constructor framework
 1561.31 - *************************************************************/
 1561.32 -
 1561.33 -/*************************************************************
 1561.34 - *Partial move:
 1561.35 - *The source HAS to be a valid instance after the move!
 1561.36 - *************************************************************/
 1561.37 -template <class _Tp>
 1561.38 -class __move_source {
 1561.39 -public:
 1561.40 -  explicit __move_source (_Tp &_src) : _M_data(_src)
 1561.41 -  {}
 1561.42 -
 1561.43 -  _Tp& get() const
 1561.44 -  { return _M_data; }
 1561.45 -private:
 1561.46 -  _Tp &_M_data;
 1561.47 -
 1561.48 -  //We explicitely forbid assignment to avoid warning:
 1561.49 -  typedef __move_source<_Tp> _Self;
 1561.50 -  _Self& operator = (_Self const&);
 1561.51 -};
 1561.52 -
 1561.53 -//Class used to signal move constructor support, implementation and type.
 1561.54 -template <class _Tp>
 1561.55 -struct __move_traits {
 1561.56 -  /*
 1561.57 -   * implemented tells if a the special move constructor has to be called or the classic
 1561.58 -   * copy constructor is just fine. Most of the time the copy constructor is fine only
 1561.59 -   * if the following info is true.
 1561.60 -   */
 1561.61 -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND) && \
 1561.62 -   !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && \
 1561.63 -   !defined (_STLP_NO_MOVE_SEMANTIC)
 1561.64 -  typedef typename _IsSTLportClass<_Tp>::_Ret implemented;
 1561.65 -#else
 1561.66 -  typedef __false_type implemented;
 1561.67 -#endif
 1561.68 -  /*
 1561.69 -   * complete tells if the move is complete or partial, that is to say, does the source
 1561.70 -   * needs to be destroyed once it has been moved.
 1561.71 -   */
 1561.72 -  typedef typename __type_traits<_Tp>::has_trivial_destructor complete;
 1561.73 -};
 1561.74 -
 1561.75 -#if !defined (_STLP_NO_MOVE_SEMANTIC)
 1561.76 -typedef __true_type __stlp_movable;
 1561.77 -#else
 1561.78 -typedef __false_type __stlp_movable;
 1561.79 -#endif
 1561.80 -
 1561.81 -_STLP_MOVE_TO_PRIV_NAMESPACE
 1561.82 -
 1561.83 -/*
 1561.84 - * This struct should never be used if the user has not explicitely stipulated
 1561.85 - * that its class support the full move concept. To check that the return type
 1561.86 - * in such a case will be __invalid_source<_Tp> to generate a compile error
 1561.87 - * revealing the configuration problem.
 1561.88 - */
 1561.89 -template <class _Tp>
 1561.90 -struct _MoveSourceTraits {
 1561.91 -  typedef typename __move_traits<_Tp>::implemented _MvImpRet;
 1561.92 -#if defined (__BORLANDC__)
 1561.93 -  typedef typename __selectT<_MvImpRet,
 1561.94 -#else
 1561.95 -  enum {_MvImp = __type2bool<_MvImpRet>::_Ret};
 1561.96 -  typedef typename __select<_MvImp,
 1561.97 -#endif
 1561.98 -                            __move_source<_Tp>,
 1561.99 -                            _Tp const&>::_Ret _Type;
1561.100 -};
1561.101 -
1561.102 -//The helper function
1561.103 -template <class _Tp>
1561.104 -inline _STLP_TYPENAME_ON_RETURN_TYPE _MoveSourceTraits<_Tp>::_Type
1561.105 -_AsMoveSource (_Tp &src) {
1561.106 -  typedef typename _MoveSourceTraits<_Tp>::_Type _SrcType;
1561.107 -  return _SrcType(src);
1561.108 -}
1561.109 -
1561.110 -//Helper structs used for many class.
1561.111 -template <class _Tp>
1561.112 -struct __move_traits_aux {
1561.113 -  typedef typename __move_traits<_Tp>::implemented implemented;
1561.114 -  typedef typename __move_traits<_Tp>::complete complete;
1561.115 -};
1561.116 -
1561.117 -template <class _Tp1, class _Tp2>
1561.118 -struct __move_traits_aux2 {
1561.119 -  typedef __move_traits<_Tp1> _MoveTraits1;
1561.120 -  typedef __move_traits<_Tp2> _MoveTraits2;
1561.121 -
1561.122 -  typedef typename _Lor2<typename _MoveTraits1::implemented,
1561.123 -                         typename _MoveTraits2::implemented>::_Ret implemented;
1561.124 -  typedef typename _Land2<typename _MoveTraits1::complete,
1561.125 -                          typename _MoveTraits2::complete>::_Ret complete;
1561.126 -};
1561.127 -
1561.128 -/*
1561.129 - * Most of the time a class implement a move constructor but its use depends
1561.130 - * on a third party, this is what the following struct are for.
1561.131 - */
1561.132 -template <class _Tp>
1561.133 -struct __move_traits_help {
1561.134 -  typedef __true_type implemented;
1561.135 -  typedef typename __move_traits<_Tp>::complete complete;
1561.136 -};
1561.137 -
1561.138 -template <class _Tp1, class _Tp2>
1561.139 -struct __move_traits_help1 {
1561.140 -  typedef __move_traits<_Tp1> _MoveTraits1;
1561.141 -  typedef __move_traits<_Tp2> _MoveTraits2;
1561.142 -
1561.143 -  typedef typename _Lor2<typename _MoveTraits1::implemented,
1561.144 -                         typename _MoveTraits2::implemented>::_Ret implemented;
1561.145 -  typedef typename _Land2<typename _MoveTraits1::complete,
1561.146 -                          typename _MoveTraits2::complete>::_Ret complete;
1561.147 -};
1561.148 -
1561.149 -template <class _Tp1, class _Tp2>
1561.150 -struct __move_traits_help2 {
1561.151 -  typedef __move_traits<_Tp1> _MoveTraits1;
1561.152 -  typedef __move_traits<_Tp2> _MoveTraits2;
1561.153 -
1561.154 -  typedef __stlp_movable implemented;
1561.155 -  typedef typename _Land2<typename _MoveTraits1::complete,
1561.156 -                          typename _MoveTraits2::complete>::_Ret complete;
1561.157 -};
1561.158 -
1561.159 -_STLP_MOVE_TO_STD_NAMESPACE
1561.160 -
1561.161 -_STLP_END_NAMESPACE
1561.162 -
1561.163 -#endif /* _STLP_MOVE_CONSTRUCT_FWK_H */
  1562.1 --- a/epoc32/include/tools/stlport/stl/_stdexcept.h	Tue Mar 16 16:12:26 2010 +0000
  1562.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1562.3 @@ -1,110 +0,0 @@
  1562.4 -/*
  1562.5 - * Copyright (c) 1996,1997
  1562.6 - * Silicon Graphics Computer Systems, Inc.
  1562.7 - *
  1562.8 - * Copyright (c) 1999
  1562.9 - * Boris Fomitchev
 1562.10 - *
 1562.11 - * This material is provided "as is", with absolutely no warranty expressed
 1562.12 - * or implied. Any use is at your own risk.
 1562.13 - *
 1562.14 - * Permission to use or copy this software for any purpose is hereby granted
 1562.15 - * without fee, provided the above notices are retained on all copies.
 1562.16 - * Permission to modify the code and to distribute modified code is granted,
 1562.17 - * provided the above notices are retained, and a notice that the code was
 1562.18 - * modified is included with the above copyright notice.
 1562.19 - *
 1562.20 - */
 1562.21 -
 1562.22 -#ifndef _STLP_INTERNAL_STDEXCEPT
 1562.23 -#define _STLP_INTERNAL_STDEXCEPT
 1562.24 -
 1562.25 -#ifndef _STLP_INTERNAL_STDEXCEPT_BASE
 1562.26 -#  include <stl/_stdexcept_base.h>
 1562.27 -#endif
 1562.28 -
 1562.29 -#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE)
 1562.30 -
 1562.31 -#  if defined(_STLP_USE_EXCEPTIONS) || \
 1562.32 -    !(defined(_MIPS_SIM) && defined(_ABIO32) && (_MIPS_SIM == _ABIO32))
 1562.33 -
 1562.34 -_STLP_BEGIN_NAMESPACE
 1562.35 -
 1562.36 -class _STLP_CLASS_DECLSPEC logic_error : public __Named_exception {
 1562.37 -public:
 1562.38 -  logic_error(const string& __s) : __Named_exception(__s) {}
 1562.39 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.40 -  ~logic_error() _STLP_NOTHROW_INHERENTLY;
 1562.41 -#    endif
 1562.42 -};
 1562.43 -
 1562.44 -class _STLP_CLASS_DECLSPEC runtime_error : public __Named_exception {
 1562.45 -public:
 1562.46 -  runtime_error(const string& __s) : __Named_exception(__s) {}
 1562.47 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.48 -  ~runtime_error() _STLP_NOTHROW_INHERENTLY;
 1562.49 -#    endif
 1562.50 -};
 1562.51 -
 1562.52 -class _STLP_CLASS_DECLSPEC domain_error : public logic_error {
 1562.53 -public:
 1562.54 -  domain_error(const string& __arg) : logic_error(__arg) {}
 1562.55 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.56 -  ~domain_error() _STLP_NOTHROW_INHERENTLY;
 1562.57 -#    endif
 1562.58 -};
 1562.59 -
 1562.60 -class _STLP_CLASS_DECLSPEC invalid_argument : public logic_error {
 1562.61 -public:
 1562.62 -  invalid_argument(const string& __arg) : logic_error(__arg) {}
 1562.63 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.64 -  ~invalid_argument() _STLP_NOTHROW_INHERENTLY;
 1562.65 -#    endif
 1562.66 -};
 1562.67 -
 1562.68 -class _STLP_CLASS_DECLSPEC length_error : public logic_error {
 1562.69 -public:
 1562.70 -  length_error(const string& __arg) : logic_error(__arg) {}
 1562.71 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.72 -  ~length_error() _STLP_NOTHROW_INHERENTLY;
 1562.73 -#    endif
 1562.74 -};
 1562.75 -
 1562.76 -class _STLP_CLASS_DECLSPEC out_of_range : public logic_error {
 1562.77 -public:
 1562.78 -  out_of_range(const string& __arg) : logic_error(__arg) {}
 1562.79 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.80 -  ~out_of_range() _STLP_NOTHROW_INHERENTLY;
 1562.81 -#    endif
 1562.82 -};
 1562.83 -
 1562.84 -class _STLP_CLASS_DECLSPEC range_error : public runtime_error {
 1562.85 -public:
 1562.86 -  range_error(const string& __arg) : runtime_error(__arg) {}
 1562.87 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.88 -  ~range_error() _STLP_NOTHROW_INHERENTLY;
 1562.89 -#    endif
 1562.90 -};
 1562.91 -
 1562.92 -class _STLP_CLASS_DECLSPEC overflow_error : public runtime_error {
 1562.93 -public:
 1562.94 -  overflow_error(const string& __arg) : runtime_error(__arg) {}
 1562.95 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1562.96 -  ~overflow_error() _STLP_NOTHROW_INHERENTLY;
 1562.97 -#    endif
 1562.98 -};
 1562.99 -
1562.100 -class _STLP_CLASS_DECLSPEC underflow_error : public runtime_error {
1562.101 -public:
1562.102 -  underflow_error(const string& __arg) : runtime_error(__arg) {}
1562.103 -#    ifndef _STLP_USE_NO_IOSTREAMS
1562.104 -  ~underflow_error() _STLP_NOTHROW_INHERENTLY;
1562.105 -#    endif
1562.106 -};
1562.107 -
1562.108 -_STLP_END_NAMESPACE
1562.109 -
1562.110 -#  endif
1562.111 -#endif
1562.112 -
1562.113 -#endif /* _STLP_INTERNAL_STDEXCEPT */
  1563.1 --- a/epoc32/include/tools/stlport/stl/_stdexcept_base.h	Tue Mar 16 16:12:26 2010 +0000
  1563.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1563.3 @@ -1,102 +0,0 @@
  1563.4 -/*
  1563.5 - * Copyright (c) 1996,1997
  1563.6 - * Silicon Graphics Computer Systems, Inc.
  1563.7 - *
  1563.8 - * Copyright (c) 1999
  1563.9 - * Boris Fomitchev
 1563.10 - *
 1563.11 - * This material is provided "as is", with absolutely no warranty expressed
 1563.12 - * or implied. Any use is at your own risk.
 1563.13 - *
 1563.14 - * Permission to use or copy this software for any purpose is hereby granted
 1563.15 - * without fee, provided the above notices are retained on all copies.
 1563.16 - * Permission to modify the code and to distribute modified code is granted,
 1563.17 - * provided the above notices are retained, and a notice that the code was
 1563.18 - * modified is included with the above copyright notice.
 1563.19 - *
 1563.20 - */
 1563.21 -
 1563.22 -#ifndef _STLP_INTERNAL_STDEXCEPT_BASE
 1563.23 -#define _STLP_INTERNAL_STDEXCEPT_BASE
 1563.24 -
 1563.25 -#if !defined (_STLP_USE_NATIVE_STDEXCEPT) || defined (_STLP_USE_OWN_NAMESPACE)
 1563.26 -
 1563.27 -#  ifndef _STLP_INTERNAL_EXCEPTION
 1563.28 -#    include <stl/_exception.h>
 1563.29 -#  endif
 1563.30 -
 1563.31 -#  if defined(_STLP_USE_EXCEPTIONS) || \
 1563.32 -    !(defined(_MIPS_SIM) && defined(_ABIO32) && (_MIPS_SIM == _ABIO32))
 1563.33 -
 1563.34 -#    ifndef _STLP_INTERNAL_CSTRING
 1563.35 -#      include <stl/_cstring.h>
 1563.36 -#    endif
 1563.37 -
 1563.38 -#    ifndef _STLP_STRING_FWD_H
 1563.39 -#      include <stl/_string_fwd.h>
 1563.40 -#    endif
 1563.41 -
 1563.42 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1563.43 -#      define _STLP_OWN_STDEXCEPT 1
 1563.44 -#    endif
 1563.45 -
 1563.46 -_STLP_BEGIN_NAMESPACE
 1563.47 -
 1563.48 -/* We disable the 4275 warning for
 1563.49 - *  - WinCE where there are only static version of the native C++ runtime.
 1563.50 - *  - The MSVC compilers when the STLport user wants to make an STLport dll linked to
 1563.51 - *    the static C++ native runtime. In this case the std::exception base class is no more
 1563.52 - *    exported from native dll but is used as a base class for the exported __Named_exception
 1563.53 - *    class.
 1563.54 - */
 1563.55 -#    if defined (_STLP_WCE_NET) || \
 1563.56 -        defined (_STLP_USE_DYNAMIC_LIB) && defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
 1563.57 -#      define _STLP_DO_WARNING_POP
 1563.58 -#      pragma warning (push)
 1563.59 -#      pragma warning (disable: 4275) // Non dll interface class 'exception' used as base
 1563.60 -                                      // for dll-interface class '__Named_exception'
 1563.61 -#    endif
 1563.62 -
 1563.63 -#    if !defined (_STLP_NO_EXCEPTION_HEADER)
 1563.64 -#      if !defined (_STLP_EXCEPTION_BASE) && !defined (_STLP_BROKEN_EXCEPTION_CLASS) && \
 1563.65 -           defined (_STLP_USE_NAMESPACES) &&  defined (_STLP_USE_OWN_NAMESPACE)
 1563.66 -using _STLP_VENDOR_EXCEPT_STD::exception;
 1563.67 -#      endif
 1563.68 -#    endif
 1563.69 -#    define _STLP_EXCEPTION_BASE exception
 1563.70 -
 1563.71 -class _STLP_CLASS_DECLSPEC __Named_exception : public _STLP_EXCEPTION_BASE {
 1563.72 -public:
 1563.73 -  __Named_exception(const string& __str)
 1563.74 -#    ifndef _STLP_USE_NO_IOSTREAMS
 1563.75 -    ;
 1563.76 -  const char* what() const _STLP_NOTHROW_INHERENTLY;
 1563.77 -  ~__Named_exception() _STLP_NOTHROW_INHERENTLY;
 1563.78 -#    else
 1563.79 -  {
 1563.80 -#      if !defined (_STLP_USE_SAFE_STRING_FUNCTIONS)
 1563.81 -    strncpy(_M_name, _STLP_PRIV __get_c_string(__str), _S_bufsize);
 1563.82 -#      else
 1563.83 -    strncpy_s(_STLP_ARRAY_AND_SIZE(_M_name), _STLP_PRIV __get_c_string(__str), _S_bufsize);
 1563.84 -#      endif
 1563.85 -    _M_name[_S_bufsize - 1] = '\0';
 1563.86 -  }
 1563.87 -  const char* what() const _STLP_NOTHROW_INHERENTLY { return _M_name; }
 1563.88 -#    endif
 1563.89 -
 1563.90 -private:
 1563.91 -  enum { _S_bufsize = 256 };
 1563.92 -  char _M_name[_S_bufsize];
 1563.93 -};
 1563.94 -
 1563.95 -#    if defined (_STLP_DO_WARNING_POP)
 1563.96 -#      pragma warning (pop)
 1563.97 -#      undef _STLP_DO_WARNING_POP
 1563.98 -#    endif
 1563.99 -
1563.100 -_STLP_END_NAMESPACE
1563.101 -
1563.102 -#  endif /* Not o32, and no exceptions */
1563.103 -#endif /* _STLP_STDEXCEPT_SEEN */
1563.104 -
1563.105 -#endif /* _STLP_INTERNAL_STDEXCEPT_BASE */
  1564.1 --- a/epoc32/include/tools/stlport/stl/_stlport_version.h	Tue Mar 16 16:12:26 2010 +0000
  1564.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1564.3 @@ -1,30 +0,0 @@
  1564.4 - /*
  1564.5 - *
  1564.6 - * Copyright (c) 2005
  1564.7 - * Francois Dumont
  1564.8 - *
  1564.9 - * This material is provided "as is", with absolutely no warranty expressed
 1564.10 - * or implied. Any use is at your own risk.
 1564.11 - *
 1564.12 - * Permission to use or copy this software for any purpose is hereby granted
 1564.13 - * without fee, provided the above notices are retained on all copies.
 1564.14 - * Permission to modify the code and to distribute modified code is granted,
 1564.15 - * provided the above notices are retained, and a notice that the code was
 1564.16 - * modified is included with the above copyright notice.
 1564.17 - *
 1564.18 - */
 1564.19 -
 1564.20 -#ifndef _STLP_STLPORT_VERSION_H
 1564.21 -#define _STLP_STLPORT_VERSION_H
 1564.22 -
 1564.23 -/* The last SGI STL release we merged with */
 1564.24 -#define __SGI_STL 0x330
 1564.25 -
 1564.26 -/* STLport version */
 1564.27 -#define _STLPORT_MAJOR 5
 1564.28 -#define _STLPORT_MINOR 1
 1564.29 -#define _STLPORT_PATCHLEVEL 0
 1564.30 -
 1564.31 -#define _STLPORT_VERSION 0x510
 1564.32 -
 1564.33 -#endif /* _STLP_STLPORT_VERSION_H */
  1565.1 --- a/epoc32/include/tools/stlport/stl/_string_base.h	Tue Mar 16 16:12:26 2010 +0000
  1565.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1565.3 @@ -1,249 +0,0 @@
  1565.4 -/*
  1565.5 - * Copyright (c) 1997-1999
  1565.6 - * Silicon Graphics Computer Systems, Inc.
  1565.7 - *
  1565.8 - * Copyright (c) 1999
  1565.9 - * Boris Fomitchev
 1565.10 - *
 1565.11 - * Copyright (c) 2003
 1565.12 - * Francois Dumont
 1565.13 - *
 1565.14 - * This material is provided "as is", with absolutely no warranty expressed
 1565.15 - * or implied. Any use is at your own risk.
 1565.16 - *
 1565.17 - * Permission to use or copy this software for any purpose is hereby granted
 1565.18 - * without fee, provided the above notices are retained on all copies.
 1565.19 - * Permission to modify the code and to distribute modified code is granted,
 1565.20 - * provided the above notices are retained, and a notice that the code was
 1565.21 - * modified is included with the above copyright notice.
 1565.22 - *
 1565.23 - */
 1565.24 -
 1565.25 -#ifndef _STLP_STRING_BASE_H
 1565.26 -#define _STLP_STRING_BASE_H
 1565.27 -
 1565.28 -// ------------------------------------------------------------
 1565.29 -// Class _String_base.
 1565.30 -
 1565.31 -// _String_base is a helper class that makes it it easier to write an
 1565.32 -// exception-safe version of basic_string.  The constructor allocates,
 1565.33 -// but does not initialize, a block of memory.  The destructor
 1565.34 -// deallocates, but does not destroy elements within, a block of
 1565.35 -// memory.  The destructor assumes that _M_start either is null, or else
 1565.36 -// points to a block of memory that was allocated using _String_base's
 1565.37 -// allocator and whose size is _M_end_of_storage._M_data - _M_start.
 1565.38 -
 1565.39 -_STLP_BEGIN_NAMESPACE
 1565.40 -
 1565.41 -_STLP_MOVE_TO_PRIV_NAMESPACE
 1565.42 -
 1565.43 -#ifndef _STLP_SHORT_STRING_SZ
 1565.44 -#  define _STLP_SHORT_STRING_SZ 16
 1565.45 -#endif
 1565.46 -
 1565.47 -template <class _Tp, class _Alloc>
 1565.48 -class _String_base {
 1565.49 -  typedef _String_base<_Tp, _Alloc> _Self;
 1565.50 -protected:
 1565.51 -  _STLP_FORCE_ALLOCATORS(_Tp, _Alloc)
 1565.52 -public:
 1565.53 -  //dums: Some compiler(MSVC6) require it to be public not simply protected!
 1565.54 -  enum {_DEFAULT_SIZE = _STLP_SHORT_STRING_SZ};
 1565.55 -  //This is needed by the full move framework
 1565.56 -  typedef typename _Alloc_traits<_Tp, _Alloc>::allocator_type allocator_type;
 1565.57 -  typedef _STLP_alloc_proxy<_Tp*, _Tp, allocator_type> _AllocProxy;
 1565.58 -  typedef size_t size_type;
 1565.59 -private:
 1565.60 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
 1565.61 -  union _Buffers {
 1565.62 -    _Tp*  _M_dynamic_buf;
 1565.63 -    _Tp   _M_static_buf[_DEFAULT_SIZE];
 1565.64 -  } _M_buffers;
 1565.65 -#else
 1565.66 -  _Tp*    _M_start;
 1565.67 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
 1565.68 -protected:
 1565.69 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
 1565.70 -  bool _M_using_static_buf() const {
 1565.71 -    return (_M_end_of_storage._M_data == _M_buffers._M_static_buf + _DEFAULT_SIZE);
 1565.72 -  }
 1565.73 -  _Tp const* _M_Start() const {
 1565.74 -    return _M_using_static_buf()?_M_buffers._M_static_buf:_M_buffers._M_dynamic_buf;
 1565.75 -  }
 1565.76 -  _Tp* _M_Start() {
 1565.77 -    return _M_using_static_buf()?_M_buffers._M_static_buf:_M_buffers._M_dynamic_buf;
 1565.78 -  }
 1565.79 -#else
 1565.80 -  _Tp const* _M_Start() const {return _M_start;}
 1565.81 -  _Tp* _M_Start() {return _M_start;}
 1565.82 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
 1565.83 -
 1565.84 -  _Tp*    _M_finish;
 1565.85 -  _AllocProxy _M_end_of_storage;
 1565.86 -
 1565.87 -  _Tp const* _M_Finish() const {return _M_finish;}
 1565.88 -  _Tp* _M_Finish() {return _M_finish;}
 1565.89 -
 1565.90 -  // Precondition: 0 < __n <= max_size().
 1565.91 -  void _M_allocate_block(size_t __n = _DEFAULT_SIZE);
 1565.92 -  void _M_deallocate_block() {
 1565.93 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
 1565.94 -    if (!_M_using_static_buf() && (_M_buffers._M_dynamic_buf != 0))
 1565.95 -      _M_end_of_storage.deallocate(_M_buffers._M_dynamic_buf, _M_end_of_storage._M_data - _M_buffers._M_dynamic_buf);
 1565.96 -#else
 1565.97 -    if (_M_start != 0)
 1565.98 -      _M_end_of_storage.deallocate(_M_start, _M_end_of_storage._M_data - _M_start);
 1565.99 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1565.100 -  }
1565.101 -
1565.102 -  size_t max_size() const {
1565.103 -    const size_type __string_max_size = size_type(-1) / sizeof(_Tp);
1565.104 -    typename allocator_type::size_type __alloc_max_size = _M_end_of_storage.max_size();
1565.105 -    return (min)(__alloc_max_size, __string_max_size) - 1;
1565.106 -  }
1565.107 -
1565.108 -  _String_base(const allocator_type& __a)
1565.109 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.110 -    : _M_finish(_M_buffers._M_static_buf), _M_end_of_storage(__a, _M_buffers._M_static_buf + _DEFAULT_SIZE)
1565.111 -#else
1565.112 -    : _M_start(0), _M_finish(0), _M_end_of_storage(__a, (_Tp*)0)
1565.113 -#endif
1565.114 -    {}
1565.115 -
1565.116 -  _String_base(const allocator_type& __a, size_t __n)
1565.117 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.118 -    : _M_finish(_M_buffers._M_static_buf), _M_end_of_storage(__a, _M_buffers._M_static_buf + _DEFAULT_SIZE) {
1565.119 -#else
1565.120 -    : _M_start(0), _M_finish(0), _M_end_of_storage(__a, (_Tp*)0) {
1565.121 -#endif
1565.122 -      _M_allocate_block(__n);
1565.123 -    }
1565.124 -
1565.125 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.126 -  void _M_move_src (_Self &src) {
1565.127 -      if (src._M_using_static_buf()) {
1565.128 -        _M_buffers = src._M_buffers;
1565.129 -        _M_finish = _M_buffers._M_static_buf + (src._M_finish - src._M_buffers._M_static_buf);
1565.130 -        _M_end_of_storage._M_data = _M_buffers._M_static_buf + _DEFAULT_SIZE;
1565.131 -      }
1565.132 -      else {
1565.133 -        _M_buffers._M_dynamic_buf = src._M_buffers._M_dynamic_buf;
1565.134 -        _M_finish = src._M_finish;
1565.135 -        _M_end_of_storage._M_data = src._M_end_of_storage._M_data;
1565.136 -        src._M_buffers._M_dynamic_buf = 0;
1565.137 -      }
1565.138 -    }
1565.139 -#endif
1565.140 -
1565.141 -  _String_base(__move_source<_Self> src)
1565.142 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.143 -    : _M_end_of_storage(__move_source<_AllocProxy>(src.get()._M_end_of_storage)) {
1565.144 -      _M_move_src(src.get());
1565.145 -#else
1565.146 -    : _M_start(src.get()._M_start), _M_finish(src.get()._M_finish),
1565.147 -      _M_end_of_storage(__move_source<_AllocProxy>(src.get()._M_end_of_storage)) {
1565.148 -      src.get()._M_start = 0;
1565.149 -#endif
1565.150 -    }
1565.151 -
1565.152 -  ~_String_base() { _M_deallocate_block(); }
1565.153 -
1565.154 -  void _M_reset(_Tp *__start, _Tp *__finish, _Tp *__end_of_storage) {
1565.155 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.156 -    _M_buffers._M_dynamic_buf = __start;
1565.157 -#else
1565.158 -    _M_start = __start;
1565.159 -#endif
1565.160 -    _M_finish = __finish;
1565.161 -    _M_end_of_storage._M_data = __end_of_storage;
1565.162 -  }
1565.163 -
1565.164 -  void _M_destroy_back () {
1565.165 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.166 -    if (!_M_using_static_buf())
1565.167 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1565.168 -      _STLP_STD::_Destroy(_M_finish);
1565.169 -  }
1565.170 -
1565.171 -  void _M_destroy_range(size_t __from_off = 0, size_t __to_off = 1) {
1565.172 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.173 -    if (!_M_using_static_buf())
1565.174 -      _STLP_STD::_Destroy_Range(_M_buffers._M_dynamic_buf + __from_off, _M_finish + __to_off);
1565.175 -#else
1565.176 -    _STLP_STD::_Destroy_Range(_M_start + __from_off, _M_finish + __to_off);
1565.177 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1565.178 -  }
1565.179 -
1565.180 -  void _M_destroy_ptr_range(_Tp *__f, _Tp *__l) {
1565.181 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.182 -    if (!_M_using_static_buf())
1565.183 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1565.184 -      _STLP_STD::_Destroy_Range(__f, __l);
1565.185 -  }
1565.186 -
1565.187 -  void _M_Swap(_Self &__s) {
1565.188 -#if defined (_STLP_USE_SHORT_STRING_OPTIM)
1565.189 -    if (_M_using_static_buf()) {
1565.190 -      if (__s._M_using_static_buf()) {
1565.191 -        _STLP_STD::swap(_M_buffers, __s._M_buffers);
1565.192 -        _Tp *__tmp = _M_finish;
1565.193 -        _M_finish = _M_buffers._M_static_buf + (__s._M_finish - __s._M_buffers._M_static_buf);
1565.194 -        __s._M_finish = __s._M_buffers._M_static_buf + (__tmp - _M_buffers._M_static_buf);
1565.195 -        //We need to swap _M_end_of_storage for allocators with state:
1565.196 -        _M_end_of_storage.swap(__s._M_end_of_storage);
1565.197 -        _M_end_of_storage._M_data = _M_buffers._M_static_buf + _DEFAULT_SIZE;
1565.198 -        __s._M_end_of_storage._M_data = __s._M_buffers._M_static_buf + _DEFAULT_SIZE;
1565.199 -      } else {
1565.200 -        __s._M_Swap(*this);
1565.201 -        return;
1565.202 -      }
1565.203 -    }
1565.204 -    else if (__s._M_using_static_buf()) {
1565.205 -      _Tp *__tmp = _M_buffers._M_dynamic_buf;
1565.206 -      _Tp *__tmp_finish = _M_finish;
1565.207 -      _Tp *__tmp_end_data = _M_end_of_storage._M_data;
1565.208 -      _M_buffers = __s._M_buffers;
1565.209 -      //We need to swap _M_end_of_storage for allocators with state:
1565.210 -      _M_end_of_storage.swap(__s._M_end_of_storage);
1565.211 -      _M_end_of_storage._M_data = _M_buffers._M_static_buf + _DEFAULT_SIZE;
1565.212 -      _M_finish = _M_buffers._M_static_buf + (__s._M_finish - __s._M_buffers._M_static_buf);
1565.213 -      __s._M_buffers._M_dynamic_buf = __tmp;
1565.214 -      __s._M_end_of_storage._M_data = __tmp_end_data;
1565.215 -      __s._M_finish = __tmp_finish;
1565.216 -    }
1565.217 -    else {
1565.218 -      _STLP_STD::swap(_M_buffers._M_dynamic_buf, __s._M_buffers._M_dynamic_buf);
1565.219 -      _M_end_of_storage.swap(__s._M_end_of_storage);
1565.220 -      _STLP_STD::swap(_M_finish, __s._M_finish);
1565.221 -    }
1565.222 -#else
1565.223 -    _STLP_STD::swap(_M_start, __s._M_start);
1565.224 -    _M_end_of_storage.swap(__s._M_end_of_storage);
1565.225 -    _STLP_STD::swap(_M_finish, __s._M_finish);
1565.226 -#endif /* _STLP_USE_SHORT_STRING_OPTIM */
1565.227 -  }
1565.228 -
1565.229 -  void _STLP_FUNCTION_THROWS _M_throw_length_error() const;
1565.230 -  void _STLP_FUNCTION_THROWS _M_throw_out_of_range() const;
1565.231 -};
1565.232 -
1565.233 -#undef _STLP_SHORT_STRING_SZ
1565.234 -
1565.235 -#if defined (_STLP_USE_TEMPLATE_EXPORT)
1565.236 -_STLP_EXPORT_TEMPLATE_CLASS _String_base<char, allocator<char> >;
1565.237 -#  if defined (_STLP_HAS_WCHAR_T)
1565.238 -_STLP_EXPORT_TEMPLATE_CLASS _String_base<wchar_t, allocator<wchar_t> >;
1565.239 -#  endif
1565.240 -#endif /* _STLP_USE_TEMPLATE_EXPORT */
1565.241 -
1565.242 -_STLP_MOVE_TO_STD_NAMESPACE
1565.243 -
1565.244 -_STLP_END_NAMESPACE
1565.245 -
1565.246 -#endif /* _STLP_STRING_BASE_H */
1565.247 -
1565.248 -/*
1565.249 - * Local Variables:
1565.250 - * mode:C++
1565.251 - * End:
1565.252 - */
  1566.1 --- a/epoc32/include/tools/stlport/stl/_string_npos.h	Tue Mar 16 16:12:26 2010 +0000
  1566.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1566.3 @@ -1,27 +0,0 @@
  1566.4 -/*
  1566.5 - * Copyright (c) 2005
  1566.6 - * Francois Dumont
  1566.7 - *
  1566.8 - * This material is provided "as is", with absolutely no warranty expressed
  1566.9 - * or implied. Any use is at your own risk.
 1566.10 - *
 1566.11 - * Permission to use or copy this software for any purpose is hereby granted
 1566.12 - * without fee, provided the above notices are retained on all copies.
 1566.13 - * Permission to modify the code and to distribute modified code is granted,
 1566.14 - * provided the above notices are retained, and a notice that the code was
 1566.15 - * modified is included with the above copyright notice.
 1566.16 - */
 1566.17 -
 1566.18 -/* This header contains npos definition used in basic_string and rope
 1566.19 - * implementation. It do not have to be guarded as files including it
 1566.20 - * are already guarded and it has sometimes to be included several times.
 1566.21 - */
 1566.22 -
 1566.23 -#if defined (_STLP_STATIC_CONST_INIT_BUG)
 1566.24 -  enum { npos = -1 };
 1566.25 -#elif defined (__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ == 96)
 1566.26 -  // inline initializer conflicts with 'extern template'
 1566.27 -  static const size_t npos;
 1566.28 -#else
 1566.29 -  static const size_t npos = ~(size_t)0;
 1566.30 -#endif
  1567.1 --- a/epoc32/include/tools/stlport/stl/_string_operators.h	Tue Mar 16 16:12:26 2010 +0000
  1567.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1567.3 @@ -1,602 +0,0 @@
  1567.4 -/*
  1567.5 - * Copyright (c) 2003
  1567.6 - * Francois Dumont
  1567.7 - *
  1567.8 - * This material is provided "as is", with absolutely no warranty expressed
  1567.9 - * or implied. Any use is at your own risk.
 1567.10 - *
 1567.11 - * Permission to use or copy this software for any purpose is hereby granted
 1567.12 - * without fee, provided the above notices are retained on all copies.
 1567.13 - * Permission to modify the code and to distribute modified code is granted,
 1567.14 - * provided the above notices are retained, and a notice that the code was
 1567.15 - * modified is included with the above copyright notice.
 1567.16 - *
 1567.17 - */
 1567.18 -
 1567.19 -#ifndef _STLP_STRING_OPERATORS_H
 1567.20 -#define _STLP_STRING_OPERATORS_H
 1567.21 -
 1567.22 -_STLP_BEGIN_NAMESPACE
 1567.23 -
 1567.24 -#if !defined (_STLP_USE_TEMPLATE_EXPRESSION)
 1567.25 -
 1567.26 -#  if defined (__GNUC__) || defined (__MLCCPP__)
 1567.27 -#    define _STLP_INIT_AMBIGUITY 1
 1567.28 -#  endif
 1567.29 -
 1567.30 -template <class _CharT, class _Traits, class _Alloc>
 1567.31 -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1567.32 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __s,
 1567.33 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
 1567.34 -  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1567.35 -  typedef typename _Str::_Reserve_t _Reserve_t;
 1567.36 -#  if defined (_STLP_INIT_AMBIGUITY)
 1567.37 -  // gcc counts this as a function
 1567.38 -  _Str __result  = _Str(_Reserve_t(), __s.size() + __y.size(), __s.get_allocator());
 1567.39 -#  else
 1567.40 -  _Str __result(_Reserve_t(), __s.size() + __y.size(), __s.get_allocator());
 1567.41 -#  endif
 1567.42 -  __result.append(__s);
 1567.43 -  __result.append(__y);
 1567.44 -  return __result;
 1567.45 -}
 1567.46 -
 1567.47 -template <class _CharT, class _Traits, class _Alloc>
 1567.48 -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1567.49 -operator+(const _CharT* __s,
 1567.50 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
 1567.51 -  _STLP_FIX_LITERAL_BUG(__s)
 1567.52 -  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1567.53 -  typedef typename _Str::_Reserve_t _Reserve_t;
 1567.54 -  const size_t __n = _Traits::length(__s);
 1567.55 -#  if defined (_STLP_INIT_AMBIGUITY)
 1567.56 -  _Str __result = _Str(_Reserve_t(), __n + __y.size(), __y.get_allocator());
 1567.57 -#  else
 1567.58 -  _Str __result(_Reserve_t(), __n + __y.size(), __y.get_allocator());
 1567.59 -#  endif
 1567.60 -  __result.append(__s, __s + __n);
 1567.61 -  __result.append(__y);
 1567.62 -  return __result;
 1567.63 -}
 1567.64 -
 1567.65 -template <class _CharT, class _Traits, class _Alloc>
 1567.66 -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1567.67 -operator+(_CharT __c,
 1567.68 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
 1567.69 -  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1567.70 -  typedef typename _Str::_Reserve_t _Reserve_t;
 1567.71 -#  if defined (_STLP_INIT_AMBIGUITY)
 1567.72 -  _Str __result = _Str(_Reserve_t(), 1 + __y.size(), __y.get_allocator());
 1567.73 -#  else
 1567.74 -  _Str __result(_Reserve_t(), 1 + __y.size(), __y.get_allocator());
 1567.75 -#  endif
 1567.76 -  __result.push_back(__c);
 1567.77 -  __result.append(__y);
 1567.78 -  return __result;
 1567.79 -}
 1567.80 -
 1567.81 -template <class _CharT, class _Traits, class _Alloc>
 1567.82 -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
 1567.83 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x,
 1567.84 -          const _CharT* __s) {
 1567.85 -  _STLP_FIX_LITERAL_BUG(__s)
 1567.86 -  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
 1567.87 -  typedef typename _Str::_Reserve_t _Reserve_t;
 1567.88 -  const size_t __n = _Traits::length(__s);
 1567.89 -#  if defined (_STLP_INIT_AMBIGUITY)
 1567.90 -  _Str __result = _Str(_Reserve_t(), __x.size() + __n, __x.get_allocator());
 1567.91 -#  else
 1567.92 -  _Str __result(_Reserve_t(), __x.size() + __n, __x.get_allocator());
 1567.93 -#  endif
 1567.94 -  __result.append(__x);
 1567.95 -  __result.append(__s, __s + __n);
 1567.96 -  return __result;
 1567.97 -}
 1567.98 -
 1567.99 -template <class _CharT, class _Traits, class _Alloc>
1567.100 -inline basic_string<_CharT,_Traits,_Alloc> _STLP_CALL
1567.101 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.102 -          const _CharT __c) {
1567.103 -  typedef basic_string<_CharT,_Traits,_Alloc> _Str;
1567.104 -  typedef typename _Str::_Reserve_t _Reserve_t;
1567.105 -#  if defined (_STLP_INIT_AMBIGUITY)
1567.106 -  _Str __result = _Str(_Reserve_t(), __x.size() + 1, __x.get_allocator());
1567.107 -#  else
1567.108 -  _Str __result(_Reserve_t(), __x.size() + 1, __x.get_allocator());
1567.109 -#  endif
1567.110 -  __result.append(__x);
1567.111 -  __result.push_back(__c);
1567.112 -  return __result;
1567.113 -}
1567.114 -
1567.115 -#  undef _STLP_INIT_AMBIGUITY
1567.116 -
1567.117 -#else /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.118 -
1567.119 -// addition with basic_string
1567.120 -template <class _CharT, class _Traits, class _Alloc>
1567.121 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.122 -                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.123 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.124 -                                                   _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.125 -                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.126 -                                                   _STLP_PRIV __on_right>,
1567.127 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.128 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __lhs,
1567.129 -          const basic_string<_CharT,_Traits,_Alloc>& __rhs) {
1567.130 -  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.131 -                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.132 -                                                         _STLP_PRIV __on_right> __root_type;
1567.133 -  __root_type __root(__rhs, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__lhs.get_allocator()));
1567.134 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.135 -                                                        __root_type,
1567.136 -                                                        _STLP_PRIV __on_right>(__lhs, __root);
1567.137 -}
1567.138 -
1567.139 -template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1567.140 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.141 -                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.142 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.143 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.144 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __lhs,
1567.145 -          const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __rhs) {
1567.146 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.147 -                                                        _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.148 -                                                        _STLP_PRIV __on_right>(__lhs, __rhs);
1567.149 -}
1567.150 -
1567.151 -template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1567.152 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.153 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.154 -                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.155 -                             _STLP_PRIV __on_left> _STLP_CALL
1567.156 -operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __lhs,
1567.157 -          const basic_string<_CharT,_Traits,_Alloc>& __rhs) {
1567.158 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.159 -                                                        _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.160 -                                                        _STLP_PRIV __on_left>(__lhs, __rhs);
1567.161 -}
1567.162 -
1567.163 -// addition with C string
1567.164 -template <class _CharT, class _Traits, class _Alloc>
1567.165 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.166 -                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.167 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.168 -                                                   _STLP_PRIV __cstr_wrapper<_CharT>,
1567.169 -                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.170 -                                                   _STLP_PRIV __on_right>,
1567.171 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.172 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.173 -          const _CharT* __s) {
1567.174 -  const size_t __n = _Traits::length(__s);
1567.175 -  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>,
1567.176 -                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.177 -                                                         _STLP_PRIV __on_right> __root_type;
1567.178 -  __root_type __root(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator()));
1567.179 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.180 -                                                        __root_type, _STLP_PRIV __on_right>(__x, __root);
1567.181 -}
1567.182 -
1567.183 -template <class _CharT, class _Traits, class _Alloc>
1567.184 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.185 -                             _STLP_PRIV __cstr_wrapper<_CharT>,
1567.186 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.187 -                                                   _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.188 -                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.189 -                                                   _STLP_PRIV __on_right>,
1567.190 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.191 -operator+(const _CharT* __s,
1567.192 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.193 -  const size_t __n = _Traits::length(__s);
1567.194 -  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.195 -                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.196 -                                                         _STLP_PRIV __on_right> __root_type;
1567.197 -  __root_type __root(__y, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__y.get_allocator()));
1567.198 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>,
1567.199 -                                                        __root_type,
1567.200 -                                                        _STLP_PRIV __on_right>(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), __root);
1567.201 -}
1567.202 -
1567.203 -template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1567.204 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.205 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.206 -                             _STLP_PRIV __cstr_wrapper<_CharT>,
1567.207 -                             _STLP_PRIV __on_left> _STLP_CALL
1567.208 -operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x,
1567.209 -          const _CharT* __s) {
1567.210 -  const size_t __n = _Traits::length(__s);
1567.211 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.212 -                                                        _STLP_PRIV __cstr_wrapper<_CharT>,
1567.213 -                                                        _STLP_PRIV __on_left>(__x, _STLP_PRIV __cstr_wrapper<_CharT>(__s, __n));
1567.214 -}
1567.215 -
1567.216 -template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1567.217 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.218 -                             _STLP_PRIV __cstr_wrapper<_CharT>,
1567.219 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.220 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.221 -operator+(const _CharT* __s,
1567.222 -          const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __y) {
1567.223 -  const size_t __n = _Traits::length(__s);
1567.224 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __cstr_wrapper<_CharT>,
1567.225 -                                                        _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.226 -                                                        _STLP_PRIV __on_right>(_STLP_PRIV __cstr_wrapper<_CharT>(__s, __n), __y);
1567.227 -}
1567.228 -
1567.229 -// addition with char
1567.230 -template <class _CharT, class _Traits, class _Alloc>
1567.231 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.232 -                             _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.233 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.234 -                                                   _STLP_PRIV __char_wrapper<_CharT>,
1567.235 -                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.236 -                                                   _STLP_PRIV __on_right>,
1567.237 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.238 -operator+(const basic_string<_CharT,_Traits,_Alloc>& __x, const _CharT __c) {
1567.239 -  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1567.240 -                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.241 -                                                         _STLP_PRIV __on_right> __root_type;
1567.242 -  __root_type __root(__c, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator()));
1567.243 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.244 -                                                        __root_type, _STLP_PRIV __on_right>(__x, __root);
1567.245 -}
1567.246 -
1567.247 -template <class _CharT, class _Traits, class _Alloc>
1567.248 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.249 -                             _STLP_PRIV __char_wrapper<_CharT>,
1567.250 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.251 -                                                   _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.252 -                                                   _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.253 -                                                   _STLP_PRIV __on_right>,
1567.254 -                             _STLP_PRIV __on_right> _STLP_CALL
1567.255 -operator+(const _CharT __c, const basic_string<_CharT,_Traits,_Alloc>& __x) {
1567.256 -  typedef _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_wrapper<_CharT,_Traits,_Alloc>,
1567.257 -                                                         _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>,
1567.258 -                                                         _STLP_PRIV __on_right> __root_type;
1567.259 -  __root_type __root(__x, _STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc>(__x.get_allocator()));
1567.260 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1567.261 -                                                        __root_type, _STLP_PRIV __on_right>(__c, __root);
1567.262 -}
1567.263 -
1567.264 -template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1567.265 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc,
1567.266 -                             _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.267 -                             _STLP_PRIV __char_wrapper<_CharT>,
1567.268 -                             _STLP_PRIV __on_left> _STLP_CALL
1567.269 -operator+(const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x, const _CharT __c) {
1567.270 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.271 -                                                        _STLP_PRIV __char_wrapper<_CharT>, _STLP_PRIV __on_left>(__x, __c);
1567.272 -}
1567.273 -
1567.274 -template <class _CharT, class _Traits, class _Alloc, class _Left, class _Right, class _StorageDir>
1567.275 -inline _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1567.276 -                                                      _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.277 -                                                      _STLP_PRIV __on_right> _STLP_CALL
1567.278 -operator+(const _CharT __c, const _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>& __x) {
1567.279 -  return _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _STLP_PRIV __char_wrapper<_CharT>,
1567.280 -                                                        _STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir>,
1567.281 -                                                        _STLP_PRIV __on_right>(__c, __x);
1567.282 -}
1567.283 -
1567.284 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.285 -
1567.286 -// Operator== and operator!=
1567.287 -
1567.288 -template <class _CharT, class _Traits, class _Alloc>
1567.289 -inline bool _STLP_CALL
1567.290 -operator==(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.291 -           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.292 -  return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0;
1567.293 -}
1567.294 -
1567.295 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.296 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.297 -inline bool _STLP_CALL
1567.298 -operator==(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.299 -           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.300 -  return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0;
1567.301 -}
1567.302 -
1567.303 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.304 -inline bool _STLP_CALL
1567.305 -operator==(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.306 -           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.307 -  return __x.size() == __y.size() && _Traits::compare(__x.data(), __y.data(), __x.size()) == 0;
1567.308 -}
1567.309 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.310 -
1567.311 -
1567.312 -template <class _CharT, class _Traits, class _Alloc>
1567.313 -inline bool _STLP_CALL
1567.314 -operator==(const _CharT* __s,
1567.315 -           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.316 -  _STLP_FIX_LITERAL_BUG(__s)
1567.317 -  size_t __n = _Traits::length(__s);
1567.318 -  return __n == __y.size() && _Traits::compare(__s, __y.data(), __n) == 0;
1567.319 -}
1567.320 -
1567.321 -template <class _CharT, class _Traits, class _Alloc>
1567.322 -inline bool _STLP_CALL
1567.323 -operator==(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.324 -           const _CharT* __s) {
1567.325 -  _STLP_FIX_LITERAL_BUG(__s)
1567.326 -  size_t __n = _Traits::length(__s);
1567.327 -  return __x.size() == __n && _Traits::compare(__x.data(), __s, __n) == 0;
1567.328 -}
1567.329 -
1567.330 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.331 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.332 -inline bool _STLP_CALL
1567.333 -operator==(const _CharT* __s,
1567.334 -           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.335 -  _STLP_FIX_LITERAL_BUG(__s)
1567.336 -  size_t __n = _Traits::length(__s);
1567.337 -  return __n == __y.size() && _Traits::compare(__s, __y.data(), __n) == 0;
1567.338 -}
1567.339 -
1567.340 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.341 -inline bool _STLP_CALL
1567.342 -operator==(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.343 -           const _CharT* __s) {
1567.344 -  _STLP_FIX_LITERAL_BUG(__s)
1567.345 -  size_t __n = _Traits::length(__s);
1567.346 -  return __x.size() == __n && _Traits::compare(__x.data(), __s, __n) == 0;
1567.347 -}
1567.348 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.349 -
1567.350 -// Operator< (and also >, <=, and >=).
1567.351 -
1567.352 -template <class _CharT, class _Traits, class _Alloc>
1567.353 -inline bool _STLP_CALL
1567.354 -operator<(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.355 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.356 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1567.357 -                                                          __y.begin(), __y.end()) < 0;
1567.358 -}
1567.359 -
1567.360 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.361 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.362 -inline bool _STLP_CALL
1567.363 -operator<(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.364 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.365 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1567.366 -                                                          __y.begin(), __y.end()) < 0;
1567.367 -}
1567.368 -
1567.369 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.370 -inline bool _STLP_CALL
1567.371 -operator<(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.372 -          const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.373 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1567.374 -                                                          __y.begin(), __y.end()) < 0;
1567.375 -}
1567.376 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.377 -
1567.378 -template <class _CharT, class _Traits, class _Alloc>
1567.379 -inline bool _STLP_CALL
1567.380 -operator<(const _CharT* __s,
1567.381 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.382 -  _STLP_FIX_LITERAL_BUG(__s)
1567.383 -  size_t __n = _Traits::length(__s);
1567.384 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__s, __s + __n,
1567.385 -                                                          __y.begin(), __y.end()) < 0;
1567.386 -}
1567.387 -
1567.388 -template <class _CharT, class _Traits, class _Alloc>
1567.389 -inline bool _STLP_CALL
1567.390 -operator<(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.391 -          const _CharT* __s) {
1567.392 -  _STLP_FIX_LITERAL_BUG(__s)
1567.393 -  size_t __n = _Traits::length(__s);
1567.394 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1567.395 -                                                          __s, __s + __n) < 0;
1567.396 -}
1567.397 -
1567.398 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.399 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.400 -inline bool _STLP_CALL
1567.401 -operator<(const _CharT* __s,
1567.402 -          const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.403 -  _STLP_FIX_LITERAL_BUG(__s)
1567.404 -  size_t __n = _Traits::length(__s);
1567.405 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__s, __s + __n,
1567.406 -                                                          __y.begin(), __y.end()) < 0;
1567.407 -}
1567.408 -
1567.409 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.410 -inline bool _STLP_CALL
1567.411 -operator<(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.412 -          const _CharT* __s) {
1567.413 -  _STLP_FIX_LITERAL_BUG(__s)
1567.414 -  size_t __n = _Traits::length(__s);
1567.415 -  return basic_string<_CharT,_Traits,_Alloc> ::_M_compare(__x.begin(), __x.end(),
1567.416 -                                                          __s, __s + __n) < 0;
1567.417 -}
1567.418 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.419 -
1567.420 -#if defined (_STLP_USE_SEPARATE_RELOPS_NAMESPACE)
1567.421 -
1567.422 -/* Only defined if _STLP_USE_SEPARATE_RELOPS_NAMESPACE is defined otherwise
1567.423 - * it might introduce ambiguity with pure template relational operators
1567.424 - * from rel_ops namespace.
1567.425 - */
1567.426 -template <class _CharT, class _Traits, class _Alloc>
1567.427 -inline bool _STLP_CALL
1567.428 -operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.429 -           const basic_string<_CharT,_Traits,_Alloc>& __y)
1567.430 -{ return !(__x == __y); }
1567.431 -
1567.432 -template <class _CharT, class _Traits, class _Alloc>
1567.433 -inline bool _STLP_CALL
1567.434 -operator>(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.435 -          const basic_string<_CharT,_Traits,_Alloc>& __y)
1567.436 -{ return __y < __x; }
1567.437 -
1567.438 -template <class _CharT, class _Traits, class _Alloc>
1567.439 -inline bool _STLP_CALL
1567.440 -operator<=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.441 -           const basic_string<_CharT,_Traits,_Alloc>& __y)
1567.442 -{ return !(__y < __x); }
1567.443 -
1567.444 -template <class _CharT, class _Traits, class _Alloc>
1567.445 -inline bool _STLP_CALL
1567.446 -operator>=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.447 -           const basic_string<_CharT,_Traits,_Alloc>& __y)
1567.448 -{ return !(__x < __y); }
1567.449 -
1567.450 -#  if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.451 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.452 -inline bool _STLP_CALL
1567.453 -operator!=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.454 -           const basic_string<_CharT,_Traits,_Alloc>& __y)
1567.455 -{ return !(__x==__y); }
1567.456 -
1567.457 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.458 -inline bool _STLP_CALL
1567.459 -operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.460 -           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y)
1567.461 -{ return !(__x==__y); }
1567.462 -#  endif
1567.463 -
1567.464 -#endif /* _STLP_USE_SEPARATE_RELOPS_NAMESPACE */
1567.465 -
1567.466 -template <class _CharT, class _Traits, class _Alloc>
1567.467 -inline bool _STLP_CALL
1567.468 -operator!=(const _CharT* __s,
1567.469 -           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.470 -  _STLP_FIX_LITERAL_BUG(__s)
1567.471 -  return !(__s == __y);
1567.472 -}
1567.473 -
1567.474 -template <class _CharT, class _Traits, class _Alloc>
1567.475 -inline bool _STLP_CALL
1567.476 -operator!=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.477 -           const _CharT* __s) {
1567.478 -  _STLP_FIX_LITERAL_BUG(__s)
1567.479 -  return !(__x == __s);
1567.480 -}
1567.481 -
1567.482 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.483 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.484 -inline bool _STLP_CALL
1567.485 -operator!=(const _CharT* __s,
1567.486 -           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.487 -  _STLP_FIX_LITERAL_BUG(__s)
1567.488 -  return !(__s == __y);
1567.489 -}
1567.490 -
1567.491 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.492 -inline bool _STLP_CALL
1567.493 -operator!=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.494 -           const _CharT* __s) {
1567.495 -  _STLP_FIX_LITERAL_BUG(__s)
1567.496 -  return !(__x == __s);
1567.497 -}
1567.498 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.499 -
1567.500 -template <class _CharT, class _Traits, class _Alloc>
1567.501 -inline bool _STLP_CALL
1567.502 -operator>(const _CharT* __s,
1567.503 -          const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.504 -  _STLP_FIX_LITERAL_BUG(__s)
1567.505 -  return __y < __s;
1567.506 -}
1567.507 -
1567.508 -template <class _CharT, class _Traits, class _Alloc>
1567.509 -inline bool _STLP_CALL
1567.510 -operator>(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.511 -          const _CharT* __s) {
1567.512 -  _STLP_FIX_LITERAL_BUG(__s)
1567.513 -  return __s < __x;
1567.514 -}
1567.515 -
1567.516 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.517 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.518 -inline bool _STLP_CALL
1567.519 -operator>(const _CharT* __s,
1567.520 -          const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.521 -  _STLP_FIX_LITERAL_BUG(__s)
1567.522 -  return __y < __s;
1567.523 -}
1567.524 -
1567.525 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.526 -inline bool _STLP_CALL
1567.527 -operator>(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.528 -          const _CharT* __s) {
1567.529 -  _STLP_FIX_LITERAL_BUG(__s)
1567.530 -  return __s < __x;
1567.531 -}
1567.532 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.533 -
1567.534 -template <class _CharT, class _Traits, class _Alloc>
1567.535 -inline bool _STLP_CALL
1567.536 -operator<=(const _CharT* __s,
1567.537 -           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.538 -  _STLP_FIX_LITERAL_BUG(__s)
1567.539 -  return !(__y < __s);
1567.540 -}
1567.541 -
1567.542 -template <class _CharT, class _Traits, class _Alloc>
1567.543 -inline bool _STLP_CALL
1567.544 -operator<=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.545 -           const _CharT* __s) {
1567.546 -  _STLP_FIX_LITERAL_BUG(__s)
1567.547 -  return !(__s < __x);
1567.548 -}
1567.549 -
1567.550 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.551 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.552 -inline bool _STLP_CALL
1567.553 -operator<=(const _CharT* __s,
1567.554 -           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.555 -  _STLP_FIX_LITERAL_BUG(__s)
1567.556 -  return !(__y < __s);
1567.557 -}
1567.558 -
1567.559 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.560 -inline bool _STLP_CALL
1567.561 -operator<=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.562 -           const _CharT* __s) {
1567.563 -  _STLP_FIX_LITERAL_BUG(__s)
1567.564 -  return !(__s < __x);
1567.565 -}
1567.566 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.567 -
1567.568 -template <class _CharT, class _Traits, class _Alloc>
1567.569 -inline bool _STLP_CALL
1567.570 -operator>=(const _CharT* __s,
1567.571 -           const basic_string<_CharT,_Traits,_Alloc>& __y) {
1567.572 -  _STLP_FIX_LITERAL_BUG(__s)
1567.573 -  return !(__s < __y);
1567.574 -}
1567.575 -
1567.576 -template <class _CharT, class _Traits, class _Alloc>
1567.577 -inline bool _STLP_CALL
1567.578 -operator>=(const basic_string<_CharT,_Traits,_Alloc>& __x,
1567.579 -           const _CharT* __s) {
1567.580 -  _STLP_FIX_LITERAL_BUG(__s)
1567.581 -  return !(__x < __s);
1567.582 -}
1567.583 -
1567.584 -#if defined (_STLP_USE_TEMPLATE_EXPRESSION)
1567.585 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.586 -inline bool _STLP_CALL
1567.587 -operator>=(const _CharT* __s,
1567.588 -           const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __y) {
1567.589 -  _STLP_FIX_LITERAL_BUG(__s)
1567.590 -  return !(__s < __y);
1567.591 -}
1567.592 -
1567.593 -template <class _CharT, class _Traits, class _Alloc, class _Lhs, class _Rhs, class _StoreDir>
1567.594 -inline bool _STLP_CALL
1567.595 -operator>=(const _STLP_PRIV __bstr_sum<_CharT,_Traits,_Alloc,_Lhs,_Rhs,_StoreDir>& __x,
1567.596 -           const _CharT* __s) {
1567.597 -  _STLP_FIX_LITERAL_BUG(__s)
1567.598 -  return !(__x < __s);
1567.599 -}
1567.600 -#endif /* _STLP_USE_TEMPLATE_EXPRESSION */
1567.601 -
1567.602 -_STLP_END_NAMESPACE
1567.603 -
1567.604 -#endif /* _STLP_STRING_OPERATORS_H */
1567.605 -
  1568.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1568.2 +++ b/epoc32/include/tools/stlport/stl/_string_sum_methods.h	Wed Mar 31 12:27:01 2010 +0100
  1568.3 @@ -0,0 +1,111 @@
  1568.4 +/*
  1568.5 + * Copyright (c) 2003
  1568.6 + * Francois Dumont
  1568.7 + *
  1568.8 + * This material is provided "as is", with absolutely no warranty expressed
  1568.9 + * or implied. Any use is at your own risk.
 1568.10 + *
 1568.11 + * Permission to use or copy this software for any purpose is hereby granted
 1568.12 + * without fee, provided the above notices are retained on all copies.
 1568.13 + * Permission to modify the code and to distribute modified code is granted,
 1568.14 + * provided the above notices are retained, and a notice that the code was
 1568.15 + * modified is included with the above copyright notice.
 1568.16 + *
 1568.17 + */
 1568.18 +
 1568.19 +/*
 1568.20 + * All the necessary methods used for template expressions with basic_string
 1568.21 + * This file do not have to be macro guarded as it is only used in the _string.h
 1568.22 + * file and it is a part of the basic_string definition.
 1568.23 + */
 1568.24 +
 1568.25 +  template <class _Left, class _Right, class _StorageDir>
 1568.26 +  basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s)
 1568.27 +    : _M_non_dbg_impl(_Reserve_t(), __s.size(), __s.get_allocator()),
 1568.28 +      _M_iter_list(&_M_non_dbg_impl)
 1568.29 +  { _M_append_sum(__s, _M_non_dbg_impl); }
 1568.30 +
 1568.31 +  template <class _Left, class _Right, class _StorageDir>
 1568.32 +  basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
 1568.33 +               size_type __pos, size_type __n = npos,
 1568.34 +               const allocator_type& __a = allocator_type())
 1568.35 +    : _M_non_dbg_impl(_Reserve_t(), (__pos <= __s.size()) ? ((min) (__n, __s.size() - __pos)) : 0, __a),
 1568.36 +      _M_iter_list(&_M_non_dbg_impl) {
 1568.37 +    size_type __size = __s.size();
 1568.38 +    if (__pos > __size)
 1568.39 +      //This call will generate the necessary out of range exception:
 1568.40 +      _M_non_dbg_impl.at(0);
 1568.41 +    else
 1568.42 +      _M_append_sum_pos(__s, __pos, (min) (__n, __size - __pos), _M_non_dbg_impl);
 1568.43 +  }
 1568.44 +
 1568.45 +private:
 1568.46 +  _Base& _M_append_fast(_STLP_PRIV __char_wrapper<_CharT> __c, _Base &__str)
 1568.47 +  { return __str += __c.getValue(); }
 1568.48 +  _Base& _M_append_fast(_CharT const* __s, size_type __s_size, _Base &__str)
 1568.49 +  { return __str.append(__s, __s_size); }
 1568.50 +  _Base& _M_append_fast(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _Base &__str)
 1568.51 +  { return _M_append_fast(__s.c_str(), __s.size(), __str); }
 1568.52 +  _Base& _M_append_fast(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _Base &__str)
 1568.53 +  { return _M_append_fast(__s.b_str(), __str); }
 1568.54 +  _Base& _M_append_fast(_Self const& __s, _Base &__str)
 1568.55 +  { return _M_append_fast(__s.data(), __s.size(), __str); }
 1568.56 +  _Base& _M_append_fast(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _Base &__str)
 1568.57 +  { return __str; }
 1568.58 +  template <class _Left, class _Right, class _StorageDir>
 1568.59 +  _Base& _M_append_fast(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, _Base &__str)
 1568.60 +  { return _M_append_fast(__s.getRhs(), _M_append_fast(__s.getLhs(), __str)); }
 1568.61 +
 1568.62 +  _Base& _M_append_fast_pos(_STLP_PRIV __char_wrapper<_CharT> __c, _Base &__str, size_type /*__pos*/, size_type __n) {
 1568.63 +    if (__n == 0)
 1568.64 +      return __str;
 1568.65 +    return __str += __c.getValue();
 1568.66 +  }
 1568.67 +  _Base& _M_append_fast_pos(_CharT const* __s, size_type __s_size, _Base &__str,
 1568.68 +                            size_type __pos, size_type __n)
 1568.69 +  { return __str.append(__s + __pos, __s + __pos + (min)(__n, __s_size - __pos)); }
 1568.70 +  _Base& _M_append_fast_pos(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _Base &__str,
 1568.71 +                            size_type __pos, size_type __n)
 1568.72 +  { return _M_append_fast_pos(__s.c_str(), __s.size(), __str, __pos, __n); }
 1568.73 +  _Base& _M_append_fast_pos(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _Base &__str,
 1568.74 +                            size_type __pos, size_type __n)
 1568.75 +  { return _M_append_fast_pos(__s.b_str(), __str, __pos, __n); }
 1568.76 +  _Base& _M_append_fast_pos(_Self const& __s, _Base &__str, size_type __pos, size_type __n)
 1568.77 +  { return _M_append_fast_pos(__s.data(), __s.size(), __str, __pos, __n); }
 1568.78 +  _Base& _M_append_fast_pos(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _Base &__str,
 1568.79 +                            size_type /*__pos*/, size_type /*__n*/)
 1568.80 +  { return __str; }
 1568.81 +
 1568.82 +  template <class _Left, class _Right, class _StorageDir>
 1568.83 +  _Base& _M_append_fast_pos(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
 1568.84 +                            _Base &__str, size_type __pos, size_type __n) {
 1568.85 +    if (__n == 0) {
 1568.86 +      return __str;
 1568.87 +    }
 1568.88 +    size_type __lhs_size = __s.getLhs().size();
 1568.89 +    if (__pos < __lhs_size) {
 1568.90 +      if (__n < (__lhs_size - __pos)) {
 1568.91 +        return _M_append_fast_pos(__s.getLhs(), __str, __pos, __n);
 1568.92 +      } else {
 1568.93 +        return _M_append_fast_pos(__s.getRhs(), _M_append_fast_pos(__s.getLhs(), __str, __pos, __n),
 1568.94 +                                  0, __n - (__lhs_size - __pos));
 1568.95 +      }
 1568.96 +    } else {
 1568.97 +      return _M_append_fast_pos(__s.getRhs(), __str, __pos - __lhs_size, __n);
 1568.98 +    }
 1568.99 +  }
1568.100 +
1568.101 +  template <class _Left, class _Right, class _StorageDir>
1568.102 +  _Self& _M_append_sum (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
1568.103 +                        _Base &__impl) {
1568.104 +    _M_append_fast(__s, __impl);
1568.105 +    return *this;
1568.106 +  }
1568.107 +
1568.108 +  template <class _Left, class _Right, class _StorageDir>
1568.109 +  _Self& _M_append_sum_pos (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
1568.110 +                            size_type __pos, size_type __n, _Base &__impl) {
1568.111 +    _M_non_dbg_impl.reserve(_M_non_dbg_impl.size() + (min) (__s.size() - __pos, __n));
1568.112 +    _M_append_fast_pos(__s, __impl, __pos, __n);
1568.113 +    return *this;
1568.114 +  }
  1569.1 --- a/epoc32/include/tools/stlport/stl/_unordered_map.h	Tue Mar 16 16:12:26 2010 +0000
  1569.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1569.3 @@ -1,427 +0,0 @@
  1569.4 -/*
  1569.5 - * Copyright (c) 2004
  1569.6 - * Francois Dumont
  1569.7 - *
  1569.8 - * This material is provided "as is", with absolutely no warranty expressed
  1569.9 - * or implied. Any use is at your own risk.
 1569.10 - *
 1569.11 - * Permission to use or copy this software for any purpose is hereby granted
 1569.12 - * without fee, provided the above notices are retained on all copies.
 1569.13 - * Permission to modify the code and to distribute modified code is granted,
 1569.14 - * provided the above notices are retained, and a notice that the code was
 1569.15 - * modified is included with the above copyright notice.
 1569.16 - *
 1569.17 - */
 1569.18 -
 1569.19 -/* NOTE: This is an internal header file, included by other STL headers.
 1569.20 - *   You should not attempt to use it directly.
 1569.21 - */
 1569.22 -
 1569.23 -#ifndef _STLP_INTERNAL_UNORDERED_MAP_H
 1569.24 -#define _STLP_INTERNAL_UNORDERED_MAP_H
 1569.25 -
 1569.26 -#ifndef _STLP_INTERNAL_HASHTABLE_H
 1569.27 -#  include <stl/_hashtable.h>
 1569.28 -#endif
 1569.29 -
 1569.30 -_STLP_BEGIN_NAMESPACE
 1569.31 -
 1569.32 -//Specific iterator traits creation
 1569.33 -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMapTraitsT, traits)
 1569.34 -
 1569.35 -template <class _Key, class _Tp, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Key>),
 1569.36 -          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Key>),
 1569.37 -          _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(const _Key, _Tp) >
 1569.38 -class unordered_map
 1569.39 -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
 1569.40 -               : public __stlport_class<unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> >
 1569.41 -#endif
 1569.42 -{
 1569.43 -private:
 1569.44 -  typedef unordered_map<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self;
 1569.45 -public:
 1569.46 -  typedef _Key key_type;
 1569.47 -  typedef _Tp data_type;
 1569.48 -  typedef _Tp mapped_type;
 1569.49 -#if !defined (__DMC__)
 1569.50 -  typedef pair<const key_type, data_type> value_type;
 1569.51 -#else
 1569.52 -  typedef pair<key_type, data_type> value_type;
 1569.53 -#endif
 1569.54 -private:
 1569.55 -  //Specific iterator traits creation
 1569.56 -  typedef _STLP_PRIV _UnorderedMapTraitsT<value_type> _UnorderedMapTraits;
 1569.57 -
 1569.58 -public:
 1569.59 -  typedef hashtable<value_type, key_type, _HashFcn, _UnorderedMapTraits,
 1569.60 -                    _STLP_SELECT1ST(value_type,  _Key), _EqualKey, _Alloc > _Ht;
 1569.61 -
 1569.62 -  typedef typename _Ht::hasher hasher;
 1569.63 -  typedef typename _Ht::key_equal key_equal;
 1569.64 -
 1569.65 -  typedef typename _Ht::size_type size_type;
 1569.66 -  typedef typename _Ht::difference_type difference_type;
 1569.67 -  typedef typename _Ht::pointer pointer;
 1569.68 -  typedef typename _Ht::const_pointer const_pointer;
 1569.69 -  typedef typename _Ht::reference reference;
 1569.70 -  typedef typename _Ht::const_reference const_reference;
 1569.71 -
 1569.72 -  typedef typename _Ht::iterator iterator;
 1569.73 -  typedef typename _Ht::const_iterator const_iterator;
 1569.74 -  typedef typename _Ht::local_iterator local_iterator;
 1569.75 -  typedef typename _Ht::const_local_iterator const_local_iterator;
 1569.76 -
 1569.77 -  typedef typename _Ht::allocator_type allocator_type;
 1569.78 -
 1569.79 -  hasher hash_function() const { return _M_ht.hash_funct(); }
 1569.80 -  key_equal key_eq() const { return _M_ht.key_eq(); }
 1569.81 -  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
 1569.82 -
 1569.83 -private:
 1569.84 -  _Ht _M_ht;
 1569.85 -  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
 1569.86 -
 1569.87 -public:
 1569.88 -  explicit unordered_map(size_type __n = 100, const hasher& __hf = hasher(),
 1569.89 -                         const key_equal& __eql = key_equal(),
 1569.90 -                         const allocator_type& __a = allocator_type())
 1569.91 -    : _M_ht(__n, __hf, __eql, __a) {}
 1569.92 -
 1569.93 -  unordered_map(__move_source<_Self> src)
 1569.94 -    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
 1569.95 -
 1569.96 -#if defined (_STLP_MEMBER_TEMPLATES)
 1569.97 -  template <class _InputIterator>
 1569.98 -  unordered_map(_InputIterator __f, _InputIterator __l,
 1569.99 -                size_type __n = 100, const hasher& __hf = hasher(),
1569.100 -                const key_equal& __eql = key_equal(),
1569.101 -                const allocator_type& __a = allocator_type())
1569.102 -    : _M_ht(__n, __hf, __eql, __a)
1569.103 -  { _M_ht.insert_unique(__f, __l); }
1569.104 -#else
1569.105 -  unordered_map(const value_type* __f, const value_type* __l,
1569.106 -                size_type __n = 100, const hasher& __hf = hasher(),
1569.107 -                const key_equal& __eql = key_equal(),
1569.108 -                const allocator_type& __a = allocator_type())
1569.109 -    : _M_ht(__n, __hf, __eql, __a)
1569.110 -  { _M_ht.insert_unique(__f, __l); }
1569.111 -
1569.112 -  unordered_map(const_iterator __f, const_iterator __l,
1569.113 -                size_type __n = 100, const hasher& __hf = hasher(),
1569.114 -                const key_equal& __eql = key_equal(),
1569.115 -                const allocator_type& __a = allocator_type())
1569.116 -    : _M_ht(__n, __hf, __eql, __a)
1569.117 -  { _M_ht.insert_unique(__f, __l); }
1569.118 -#endif /*_STLP_MEMBER_TEMPLATES */
1569.119 -
1569.120 -  _Self& operator = (const _Self& __other)
1569.121 -  { _M_ht = __other._M_ht; return *this; }
1569.122 -
1569.123 -  size_type size() const { return _M_ht.size(); }
1569.124 -  size_type max_size() const { return _M_ht.max_size(); }
1569.125 -  bool empty() const { return _M_ht.empty(); }
1569.126 -  void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); }
1569.127 -
1569.128 -  iterator begin() { return _M_ht.begin(); }
1569.129 -  iterator end() { return _M_ht.end(); }
1569.130 -  const_iterator begin() const { return _M_ht.begin(); }
1569.131 -  const_iterator end() const { return _M_ht.end(); }
1569.132 -
1569.133 -  pair<iterator,bool> insert(const value_type& __obj)
1569.134 -  { return _M_ht.insert_unique(__obj); }
1569.135 -  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1569.136 -  { return _M_ht.insert_unique(__obj); }
1569.137 -#if defined (_STLP_MEMBER_TEMPLATES)
1569.138 -  template <class _InputIterator>
1569.139 -  void insert(_InputIterator __f, _InputIterator __l)
1569.140 -#else
1569.141 -  void insert(const value_type* __f, const value_type* __l)
1569.142 -  { _M_ht.insert_unique(__f,__l); }
1569.143 -  void insert(const_iterator __f, const_iterator __l)
1569.144 -#endif /*_STLP_MEMBER_TEMPLATES */
1569.145 -  { _M_ht.insert_unique(__f, __l); }
1569.146 -
1569.147 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.148 -  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1569.149 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.150 -  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1569.151 -
1569.152 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.153 -  _Tp& operator[](const _KT& __key) {
1569.154 -    iterator __it = _M_ht.find(__key);
1569.155 -    return (__it == _M_ht.end() ?
1569.156 -      _M_ht._M_insert(value_type(__key, _STLP_DEFAULT_CONSTRUCTED(_Tp))).second :
1569.157 -      (*__it).second );
1569.158 -  }
1569.159 -
1569.160 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.161 -  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1569.162 -
1569.163 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.164 -  pair<iterator, iterator> equal_range(const _KT& __key)
1569.165 -  { return _M_ht.equal_range(__key); }
1569.166 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.167 -  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1569.168 -  { return _M_ht.equal_range(__key); }
1569.169 -
1569.170 -  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1569.171 -  void erase(const_iterator __it) { _M_ht.erase(__it); }
1569.172 -  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1569.173 -  void clear() { _M_ht.clear(); }
1569.174 -
1569.175 -  size_type bucket_count() const { return _M_ht.bucket_count(); }
1569.176 -  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1569.177 -  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1569.178 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.179 -  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1569.180 -  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1569.181 -  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1569.182 -  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1569.183 -  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1569.184 -
1569.185 -  float load_factor() const { return _M_ht.load_factor(); }
1569.186 -  float max_load_factor() const { return _M_ht.max_load_factor(); }
1569.187 -  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1569.188 -  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1569.189 -};
1569.190 -
1569.191 -//Specific iterator traits creation
1569.192 -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMultimapTraitsT, traits)
1569.193 -
1569.194 -template <class _Key, class _Tp, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Key>),
1569.195 -          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Key>),
1569.196 -          _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(const _Key, _Tp) >
1569.197 -class unordered_multimap
1569.198 -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
1569.199 -                    : public __stlport_class<unordered_multimap<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> >
1569.200 -#endif
1569.201 -{
1569.202 -private:
1569.203 -  typedef unordered_multimap<_Key, _Tp, _HashFcn, _EqualKey, _Alloc> _Self;
1569.204 -public:
1569.205 -  typedef _Key key_type;
1569.206 -  typedef _Tp data_type;
1569.207 -  typedef _Tp mapped_type;
1569.208 -#if !defined (__DMC__)
1569.209 -  typedef pair<const key_type, data_type> value_type;
1569.210 -#else
1569.211 -  typedef pair<key_type, data_type> value_type;
1569.212 -#endif
1569.213 -private:
1569.214 -  //Specific iterator traits creation
1569.215 -  typedef _STLP_PRIV _UnorderedMultimapTraitsT<value_type> _UnorderedMultimapTraits;
1569.216 -
1569.217 -public:
1569.218 -  typedef hashtable<value_type, key_type, _HashFcn, _UnorderedMultimapTraits,
1569.219 -                    _STLP_SELECT1ST(value_type,  _Key), _EqualKey, _Alloc > _Ht;
1569.220 -
1569.221 -  typedef typename _Ht::hasher hasher;
1569.222 -  typedef typename _Ht::key_equal key_equal;
1569.223 -
1569.224 -  typedef typename _Ht::size_type size_type;
1569.225 -  typedef typename _Ht::difference_type difference_type;
1569.226 -  typedef typename _Ht::pointer pointer;
1569.227 -  typedef typename _Ht::const_pointer const_pointer;
1569.228 -  typedef typename _Ht::reference reference;
1569.229 -  typedef typename _Ht::const_reference const_reference;
1569.230 -
1569.231 -  typedef typename _Ht::iterator iterator;
1569.232 -  typedef typename _Ht::const_iterator const_iterator;
1569.233 -  typedef typename _Ht::local_iterator local_iterator;
1569.234 -  typedef typename _Ht::const_local_iterator const_local_iterator;
1569.235 -
1569.236 -  typedef typename _Ht::allocator_type allocator_type;
1569.237 -
1569.238 -  hasher hash_function() const { return _M_ht.hash_funct(); }
1569.239 -  key_equal key_eq() const { return _M_ht.key_eq(); }
1569.240 -  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
1569.241 -
1569.242 -private:
1569.243 -  _Ht _M_ht;
1569.244 -  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
1569.245 -
1569.246 -public:
1569.247 -  explicit unordered_multimap(size_type __n = 100, const hasher& __hf = hasher(),
1569.248 -                              const key_equal& __eql = key_equal(),
1569.249 -                              const allocator_type& __a = allocator_type())
1569.250 -    : _M_ht(__n, __hf, __eql, __a) {}
1569.251 -
1569.252 -  unordered_multimap(__move_source<_Self> src)
1569.253 -    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
1569.254 -
1569.255 -#if defined (_STLP_MEMBER_TEMPLATES)
1569.256 -  template <class _InputIterator>
1569.257 -  unordered_multimap(_InputIterator __f, _InputIterator __l,
1569.258 -                     size_type __n = 100, const hasher& __hf = hasher(),
1569.259 -                     const key_equal& __eql = key_equal(),
1569.260 -                     const allocator_type& __a = allocator_type())
1569.261 -    : _M_ht(__n, __hf, __eql, __a)
1569.262 -  { _M_ht.insert_equal(__f, __l); }
1569.263 -#else
1569.264 -  unordered_multimap(const value_type* __f, const value_type* __l,
1569.265 -                     size_type __n = 100, const hasher& __hf = hasher(),
1569.266 -                     const key_equal& __eql = key_equal(),
1569.267 -                     const allocator_type& __a = allocator_type())
1569.268 -    : _M_ht(__n, __hf, __eql, __a)
1569.269 -  { _M_ht.insert_equal(__f, __l); }
1569.270 -
1569.271 -  unordered_multimap(const_iterator __f, const_iterator __l,
1569.272 -                     size_type __n = 100, const hasher& __hf = hasher(),
1569.273 -                     const key_equal& __eql = key_equal(),
1569.274 -                     const allocator_type& __a = allocator_type())
1569.275 -    : _M_ht(__n, __hf, __eql, __a)
1569.276 -  { _M_ht.insert_equal(__f, __l); }
1569.277 -#endif /*_STLP_MEMBER_TEMPLATES */
1569.278 -
1569.279 -  _Self& operator = (const _Self& __other)
1569.280 -  { _M_ht = __other._M_ht; return *this; }
1569.281 -
1569.282 -  size_type size() const { return _M_ht.size(); }
1569.283 -  size_type max_size() const { return _M_ht.max_size(); }
1569.284 -  bool empty() const { return _M_ht.empty(); }
1569.285 -  void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); }
1569.286 -
1569.287 -  iterator begin() { return _M_ht.begin(); }
1569.288 -  iterator end() { return _M_ht.end(); }
1569.289 -  const_iterator begin() const { return _M_ht.begin(); }
1569.290 -  const_iterator end() const { return _M_ht.end(); }
1569.291 -
1569.292 -  iterator insert(const value_type& __obj)
1569.293 -  { return _M_ht.insert_equal(__obj); }
1569.294 -  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1569.295 -  { return _M_ht.insert_equal(__obj); }
1569.296 -#if defined (_STLP_MEMBER_TEMPLATES)
1569.297 -  template <class _InputIterator>
1569.298 -  void insert(_InputIterator __f, _InputIterator __l)
1569.299 -#else
1569.300 -  void insert(const value_type* __f, const value_type* __l)
1569.301 -  { _M_ht.insert_equal(__f,__l); }
1569.302 -  void insert(const_iterator __f, const_iterator __l)
1569.303 -#endif /*_STLP_MEMBER_TEMPLATES */
1569.304 -  { _M_ht.insert_equal(__f, __l); }
1569.305 -
1569.306 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.307 -  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1569.308 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.309 -  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1569.310 -
1569.311 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.312 -  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1569.313 -
1569.314 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.315 -  pair<iterator, iterator> equal_range(const _KT& __key)
1569.316 -  { return _M_ht.equal_range(__key); }
1569.317 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.318 -  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1569.319 -  { return _M_ht.equal_range(__key); }
1569.320 -
1569.321 -  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1569.322 -  void erase(const_iterator __it) { _M_ht.erase(__it); }
1569.323 -  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1569.324 -  void clear() { _M_ht.clear(); }
1569.325 -
1569.326 -  size_type bucket_count() const { return _M_ht.bucket_count(); }
1569.327 -  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1569.328 -  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1569.329 -  _STLP_TEMPLATE_FOR_CONT_EXT
1569.330 -  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1569.331 -  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1569.332 -  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1569.333 -  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1569.334 -  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1569.335 -
1569.336 -  float load_factor() const { return _M_ht.load_factor(); }
1569.337 -  float max_load_factor() const { return _M_ht.max_load_factor(); }
1569.338 -  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1569.339 -  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1569.340 -};
1569.341 -
1569.342 -#define _STLP_TEMPLATE_HEADER template <class _Key, class _Tp, class _HashFcn, class _EqlKey, class _Alloc>
1569.343 -#define _STLP_TEMPLATE_CONTAINER unordered_map<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>
1569.344 -
1569.345 -#include <stl/_relops_hash_cont.h>
1569.346 -
1569.347 -#undef _STLP_TEMPLATE_CONTAINER
1569.348 -#define _STLP_TEMPLATE_CONTAINER unordered_multimap<_Key,_Tp,_HashFcn,_EqlKey,_Alloc>
1569.349 -
1569.350 -#include <stl/_relops_hash_cont.h>
1569.351 -
1569.352 -#undef _STLP_TEMPLATE_CONTAINER
1569.353 -#undef _STLP_TEMPLATE_HEADER
1569.354 -
1569.355 -// Specialization of insert_iterator so that it will work for unordered_map
1569.356 -// and unordered_multimap.
1569.357 -
1569.358 -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1569.359 -template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1569.360 -struct __move_traits<unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > :
1569.361 -  _STLP_PRIV __move_traits_help<typename unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>::_Ht>
1569.362 -{};
1569.363 -
1569.364 -template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1569.365 -struct __move_traits<unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > :
1569.366 -  _STLP_PRIV __move_traits_help<typename unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc>::_Ht>
1569.367 -{};
1569.368 -
1569.369 -template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1569.370 -class insert_iterator<unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> > {
1569.371 -protected:
1569.372 -  typedef unordered_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container;
1569.373 -  _Container* container;
1569.374 -public:
1569.375 -  typedef _Container          container_type;
1569.376 -  typedef output_iterator_tag iterator_category;
1569.377 -  typedef void                value_type;
1569.378 -  typedef void                difference_type;
1569.379 -  typedef void                pointer;
1569.380 -  typedef void                reference;
1569.381 -
1569.382 -  insert_iterator(_Container& __x) : container(&__x) {}
1569.383 -  insert_iterator(_Container& __x, typename _Container::iterator)
1569.384 -    : container(&__x) {}
1569.385 -  insert_iterator<_Container>&
1569.386 -  operator=(const typename _Container::value_type& __val) {
1569.387 -    container->insert(__val);
1569.388 -    return *this;
1569.389 -  }
1569.390 -  insert_iterator<_Container>& operator*() { return *this; }
1569.391 -  insert_iterator<_Container>& operator++() { return *this; }
1569.392 -  insert_iterator<_Container>& operator++(int) { return *this; }
1569.393 -};
1569.394 -
1569.395 -template <class _Key, class _Tp, class _HashFn,  class _EqKey, class _Alloc>
1569.396 -class insert_iterator<unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> > {
1569.397 -protected:
1569.398 -  typedef unordered_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> _Container;
1569.399 -  _Container* container;
1569.400 -  typename _Container::iterator iter;
1569.401 -public:
1569.402 -  typedef _Container          container_type;
1569.403 -  typedef output_iterator_tag iterator_category;
1569.404 -  typedef void                value_type;
1569.405 -  typedef void                difference_type;
1569.406 -  typedef void                pointer;
1569.407 -  typedef void                reference;
1569.408 -
1569.409 -  insert_iterator(_Container& __x) : container(&__x) {}
1569.410 -  insert_iterator(_Container& __x, typename _Container::iterator)
1569.411 -    : container(&__x) {}
1569.412 -  insert_iterator<_Container>&
1569.413 -  operator=(const typename _Container::value_type& __val) {
1569.414 -    container->insert(__val);
1569.415 -    return *this;
1569.416 -  }
1569.417 -  insert_iterator<_Container>& operator*() { return *this; }
1569.418 -  insert_iterator<_Container>& operator++() { return *this; }
1569.419 -  insert_iterator<_Container>& operator++(int) { return *this; }
1569.420 -};
1569.421 -
1569.422 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1569.423 -
1569.424 -_STLP_END_NAMESPACE
1569.425 -
1569.426 -#endif /* _STLP_INTERNAL_UNORDERED_MAP_H */
1569.427 -
1569.428 -// Local Variables:
1569.429 -// mode:C++
1569.430 -// End:
  1570.1 --- a/epoc32/include/tools/stlport/stl/_unordered_set.h	Tue Mar 16 16:12:26 2010 +0000
  1570.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1570.3 @@ -1,398 +0,0 @@
  1570.4 -/*
  1570.5 - * Copyright (c) 2004
  1570.6 - * Francois Dumont
  1570.7 - *
  1570.8 - * This material is provided "as is", with absolutely no warranty expressed
  1570.9 - * or implied. Any use is at your own risk.
 1570.10 - *
 1570.11 - * Permission to use or copy this software for any purpose is hereby granted
 1570.12 - * without fee, provided the above notices are retained on all copies.
 1570.13 - * Permission to modify the code and to distribute modified code is granted,
 1570.14 - * provided the above notices are retained, and a notice that the code was
 1570.15 - * modified is included with the above copyright notice.
 1570.16 - *
 1570.17 - */
 1570.18 -
 1570.19 -/* NOTE: This is an internal header file, included by other STL headers.
 1570.20 - *   You should not attempt to use it directly.
 1570.21 - */
 1570.22 -
 1570.23 -#ifndef _STLP_INTERNAL_UNORDERED_SET_H
 1570.24 -#define _STLP_INTERNAL_UNORDERED_SET_H
 1570.25 -
 1570.26 -#ifndef _STLP_INTERNAL_HASHTABLE_H
 1570.27 -#  include <stl/_hashtable.h>
 1570.28 -#endif
 1570.29 -
 1570.30 -_STLP_BEGIN_NAMESPACE
 1570.31 -
 1570.32 -//Specific iterator traits creation
 1570.33 -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedSetTraitsT, Const_traits)
 1570.34 -
 1570.35 -template <class _Value, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Value>),
 1570.36 -          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Value>),
 1570.37 -          _STLP_DEFAULT_ALLOCATOR_SELECT(_Value) >
 1570.38 -class unordered_set
 1570.39 -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
 1570.40 -               : public __stlport_class<unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> >
 1570.41 -#endif
 1570.42 -{
 1570.43 -  typedef unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> _Self;
 1570.44 -  //Specific iterator traits creation
 1570.45 -  typedef _STLP_PRIV _UnorderedSetTraitsT<_Value> _UnorderedSetTraits;
 1570.46 -public:
 1570.47 -  typedef hashtable<_Value, _Value, _HashFcn,
 1570.48 -                    _UnorderedSetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht;
 1570.49 -public:
 1570.50 -  typedef typename _Ht::key_type key_type;
 1570.51 -  typedef typename _Ht::value_type value_type;
 1570.52 -  typedef typename _Ht::hasher hasher;
 1570.53 -  typedef typename _Ht::key_equal key_equal;
 1570.54 -
 1570.55 -  typedef typename _Ht::size_type size_type;
 1570.56 -  typedef typename _Ht::difference_type difference_type;
 1570.57 -  typedef typename _Ht::pointer         pointer;
 1570.58 -  typedef typename _Ht::const_pointer   const_pointer;
 1570.59 -  typedef typename _Ht::reference       reference;
 1570.60 -  typedef typename _Ht::const_reference const_reference;
 1570.61 -
 1570.62 -  typedef typename _Ht::iterator iterator;
 1570.63 -  typedef typename _Ht::const_iterator const_iterator;
 1570.64 -  typedef typename _Ht::local_iterator local_iterator;
 1570.65 -  typedef typename _Ht::const_local_iterator const_local_iterator;
 1570.66 -
 1570.67 -  typedef typename _Ht::allocator_type allocator_type;
 1570.68 -
 1570.69 -  hasher hash_function() const { return _M_ht.hash_funct(); }
 1570.70 -  key_equal key_eq() const { return _M_ht.key_eq(); }
 1570.71 -  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
 1570.72 -
 1570.73 -private:
 1570.74 -  _Ht _M_ht;
 1570.75 -  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
 1570.76 -
 1570.77 -public:
 1570.78 -  explicit unordered_set(size_type __n = 100, const hasher& __hf = hasher(),
 1570.79 -                         const key_equal& __eql = key_equal(),
 1570.80 -                         const allocator_type& __a = allocator_type())
 1570.81 -    : _M_ht(__n, __hf, __eql, __a) {}
 1570.82 -
 1570.83 -  unordered_set(__move_source<_Self> src)
 1570.84 -    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
 1570.85 -
 1570.86 -#if defined (_STLP_MEMBER_TEMPLATES)
 1570.87 -  template <class _InputIterator>
 1570.88 -  unordered_set(_InputIterator __f, _InputIterator __l,
 1570.89 -                size_type __n = 100, const hasher& __hf = hasher(),
 1570.90 -                const key_equal& __eql = key_equal(),
 1570.91 -                const allocator_type& __a = allocator_type())
 1570.92 -    : _M_ht(__n, __hf, __eql, __a)
 1570.93 -  { _M_ht.insert_unique(__f, __l); }
 1570.94 -#else
 1570.95 -  unordered_set(const value_type* __f, const value_type* __l,
 1570.96 -                size_type __n = 100, const hasher& __hf = hasher(),
 1570.97 -                const key_equal& __eql = key_equal(),
 1570.98 -                const allocator_type& __a = allocator_type())
 1570.99 -    : _M_ht(__n, __hf, __eql, __a)
1570.100 -  { _M_ht.insert_unique(__f, __l); }
1570.101 -
1570.102 -  unordered_set(const_iterator __f, const_iterator __l,
1570.103 -                size_type __n = 100, const hasher& __hf = hasher(),
1570.104 -                const key_equal& __eql = key_equal(),
1570.105 -                const allocator_type& __a = allocator_type())
1570.106 -    : _M_ht(__n, __hf, __eql, __a)
1570.107 -  { _M_ht.insert_unique(__f, __l); }
1570.108 -#endif /*_STLP_MEMBER_TEMPLATES */
1570.109 -
1570.110 -  _Self& operator = (const _Self& __other)
1570.111 -  { _M_ht = __other._M_ht; return *this; }
1570.112 -
1570.113 -  size_type size() const { return _M_ht.size(); }
1570.114 -  size_type max_size() const { return _M_ht.max_size(); }
1570.115 -  bool empty() const { return _M_ht.empty(); }
1570.116 -  void swap(_Self& __hs) { _M_ht.swap(__hs._M_ht); }
1570.117 -
1570.118 -  iterator begin() { return _M_ht.begin(); }
1570.119 -  iterator end() { return _M_ht.end(); }
1570.120 -  const_iterator begin() const { return _M_ht.begin(); }
1570.121 -  const_iterator end() const { return _M_ht.end(); }
1570.122 -
1570.123 -  pair<iterator, bool> insert(const value_type& __obj)
1570.124 -  { return _M_ht.insert_unique(__obj); }
1570.125 -  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1570.126 -  { return _M_ht.insert_unique(__obj); }
1570.127 -#if defined (_STLP_MEMBER_TEMPLATES)
1570.128 -  template <class _InputIterator>
1570.129 -  void insert(_InputIterator __f, _InputIterator __l)
1570.130 -#else
1570.131 -  void insert(const_iterator __f, const_iterator __l)
1570.132 -  {_M_ht.insert_unique(__f, __l); }
1570.133 -  void insert(const value_type* __f, const value_type* __l)
1570.134 -#endif
1570.135 -  { _M_ht.insert_unique(__f,__l); }
1570.136 -
1570.137 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.138 -  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1570.139 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.140 -  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1570.141 -
1570.142 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.143 -  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1570.144 -
1570.145 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.146 -  pair<iterator, iterator> equal_range(const _KT& __key)
1570.147 -  { return _M_ht.equal_range(__key); }
1570.148 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.149 -  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1570.150 -  { return _M_ht.equal_range(__key); }
1570.151 -
1570.152 -  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1570.153 -  void erase(const_iterator __it) { _M_ht.erase(__it); }
1570.154 -  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1570.155 -  void clear() { _M_ht.clear(); }
1570.156 -
1570.157 -  size_type bucket_count() const { return _M_ht.bucket_count(); }
1570.158 -  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1570.159 -  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1570.160 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.161 -  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1570.162 -  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1570.163 -  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1570.164 -  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1570.165 -  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1570.166 -
1570.167 -  float load_factor() const { return _M_ht.load_factor(); }
1570.168 -  float max_load_factor() const { return _M_ht.max_load_factor(); }
1570.169 -  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1570.170 -  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1570.171 -};
1570.172 -
1570.173 -//Specific iterator traits creation
1570.174 -_STLP_CREATE_HASH_ITERATOR_TRAITS(UnorderedMultisetTraitsT, Const_traits)
1570.175 -
1570.176 -template <class _Value, _STLP_DFL_TMPL_PARAM(_HashFcn,hash<_Value>),
1570.177 -          _STLP_DFL_TMPL_PARAM(_EqualKey,equal_to<_Value>),
1570.178 -          _STLP_DEFAULT_ALLOCATOR_SELECT(_Value) >
1570.179 -class unordered_multiset
1570.180 -#if defined (_STLP_USE_PARTIAL_SPEC_WORKAROUND)
1570.181 -               : public __stlport_class<unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> >
1570.182 -#endif
1570.183 -{
1570.184 -  typedef unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Self;
1570.185 -  //Specific iterator traits creation
1570.186 -  typedef _STLP_PRIV _UnorderedMultisetTraitsT<_Value> _UnorderedMultisetTraits;
1570.187 -public:
1570.188 -  typedef hashtable<_Value, _Value, _HashFcn,
1570.189 -                    _UnorderedMultisetTraits, _STLP_PRIV _Identity<_Value>, _EqualKey, _Alloc> _Ht;
1570.190 -
1570.191 -  typedef typename _Ht::key_type key_type;
1570.192 -  typedef typename _Ht::value_type value_type;
1570.193 -  typedef typename _Ht::hasher hasher;
1570.194 -  typedef typename _Ht::key_equal key_equal;
1570.195 -
1570.196 -  typedef typename _Ht::size_type size_type;
1570.197 -  typedef typename _Ht::difference_type difference_type;
1570.198 -  typedef typename _Ht::pointer       pointer;
1570.199 -  typedef typename _Ht::const_pointer const_pointer;
1570.200 -  typedef typename _Ht::reference reference;
1570.201 -  typedef typename _Ht::const_reference const_reference;
1570.202 -
1570.203 -  typedef typename _Ht::iterator iterator;
1570.204 -  typedef typename _Ht::const_iterator const_iterator;
1570.205 -  typedef typename _Ht::local_iterator local_iterator;
1570.206 -  typedef typename _Ht::const_local_iterator const_local_iterator;
1570.207 -
1570.208 -  typedef typename _Ht::allocator_type allocator_type;
1570.209 -
1570.210 -  hasher hash_function() const { return _M_ht.hash_funct(); }
1570.211 -  key_equal key_eq() const { return _M_ht.key_eq(); }
1570.212 -  allocator_type get_allocator() const { return _M_ht.get_allocator(); }
1570.213 -
1570.214 -private:
1570.215 -  _Ht _M_ht;
1570.216 -  _STLP_KEY_TYPE_FOR_CONT_EXT(key_type)
1570.217 -
1570.218 -public:
1570.219 -  explicit unordered_multiset(size_type __n = 100, const hasher& __hf = hasher(),
1570.220 -                              const key_equal& __eql = key_equal(),
1570.221 -                              const allocator_type& __a = allocator_type())
1570.222 -    : _M_ht(__n, __hf, __eql, __a) {}
1570.223 -
1570.224 -  unordered_multiset(__move_source<_Self> src)
1570.225 -    : _M_ht(__move_source<_Ht>(src.get()._M_ht)) {}
1570.226 -
1570.227 -#if defined (_STLP_MEMBER_TEMPLATES)
1570.228 -  template <class _InputIterator>
1570.229 -  unordered_multiset(_InputIterator __f, _InputIterator __l,
1570.230 -                     size_type __n = 100, const hasher& __hf = hasher(),
1570.231 -                     const key_equal& __eql = key_equal(),
1570.232 -                     const allocator_type& __a = allocator_type())
1570.233 -    : _M_ht(__n, __hf, __eql, __a)
1570.234 -  { _M_ht.insert_equal(__f, __l); }
1570.235 -#else
1570.236 -  unordered_multiset(const value_type* __f, const value_type* __l,
1570.237 -                     size_type __n = 100, const hasher& __hf = hasher(),
1570.238 -                     const key_equal& __eql = key_equal(),
1570.239 -                     const allocator_type& __a = allocator_type())
1570.240 -    : _M_ht(__n, __hf, __eql, __a)
1570.241 -  { _M_ht.insert_equal(__f, __l); }
1570.242 -
1570.243 -  unordered_multiset(const_iterator __f, const_iterator __l,
1570.244 -                     size_type __n = 100, const hasher& __hf = hasher(),
1570.245 -                     const key_equal& __eql = key_equal(),
1570.246 -                     const allocator_type& __a = allocator_type())
1570.247 -    : _M_ht(__n, __hf, __eql, __a)
1570.248 -  { _M_ht.insert_equal(__f, __l); }
1570.249 -#endif /*_STLP_MEMBER_TEMPLATES */
1570.250 -
1570.251 -  _Self& operator = (const _Self& __other)
1570.252 -  { _M_ht = __other._M_ht; return *this; }
1570.253 -
1570.254 -  size_type size() const { return _M_ht.size(); }
1570.255 -  size_type max_size() const { return _M_ht.max_size(); }
1570.256 -  bool empty() const { return _M_ht.empty(); }
1570.257 -  void swap(_Self& hs) { _M_ht.swap(hs._M_ht); }
1570.258 -
1570.259 -  iterator begin() { return _M_ht.begin(); }
1570.260 -  iterator end() { return _M_ht.end(); }
1570.261 -  const_iterator begin() const { return _M_ht.begin(); }
1570.262 -  const_iterator end() const { return _M_ht.end(); }
1570.263 -
1570.264 -  iterator insert(const value_type& __obj)
1570.265 -  { return _M_ht.insert_equal(__obj); }
1570.266 -  iterator insert(const_iterator /*__hint*/, const value_type& __obj)
1570.267 -  { return _M_ht.insert_equal(__obj); }
1570.268 -#if defined (_STLP_MEMBER_TEMPLATES)
1570.269 -  template <class _InputIterator>
1570.270 -  void insert(_InputIterator __f, _InputIterator __l)
1570.271 -#else
1570.272 -  void insert(const value_type* __f, const value_type* __l)
1570.273 -  { _M_ht.insert_equal(__f,__l); }
1570.274 -  void insert(const_iterator __f, const_iterator __l)
1570.275 -#endif /*_STLP_MEMBER_TEMPLATES */
1570.276 -  { _M_ht.insert_equal(__f, __l); }
1570.277 -
1570.278 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.279 -  iterator find(const _KT& __key) { return _M_ht.find(__key); }
1570.280 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.281 -  const_iterator find(const _KT& __key) const { return _M_ht.find(__key); }
1570.282 -
1570.283 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.284 -  size_type count(const _KT& __key) const { return _M_ht.count(__key); }
1570.285 -
1570.286 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.287 -  pair<iterator, iterator> equal_range(const _KT& __key)
1570.288 -  { return _M_ht.equal_range(__key); }
1570.289 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.290 -  pair<const_iterator, const_iterator> equal_range(const _KT& __key) const
1570.291 -  { return _M_ht.equal_range(__key); }
1570.292 -
1570.293 -  size_type erase(const key_type& __key) {return _M_ht.erase(__key); }
1570.294 -  void erase(const_iterator __it) { _M_ht.erase(__it); }
1570.295 -  void erase(const_iterator __f, const_iterator __l) { _M_ht.erase(__f, __l); }
1570.296 -  void clear() { _M_ht.clear(); }
1570.297 -
1570.298 -  size_type bucket_count() const { return _M_ht.bucket_count(); }
1570.299 -  size_type max_bucket_count() const { return _M_ht.max_bucket_count(); }
1570.300 -  size_type bucket_size(size_type __n) const { return _M_ht.elems_in_bucket(__n); }
1570.301 -  _STLP_TEMPLATE_FOR_CONT_EXT
1570.302 -  size_type bucket(const _KT& __k) const { return _M_ht.bucket(__k); }
1570.303 -  local_iterator begin(size_type __n) { return _M_ht.begin(__n); }
1570.304 -  local_iterator end(size_type __n) { return _M_ht.end(__n); }
1570.305 -  const_local_iterator begin(size_type __n) const { return _M_ht.begin(__n); }
1570.306 -  const_local_iterator end(size_type __n) const { return _M_ht.end(__n); }
1570.307 -
1570.308 -  float load_factor() const { return _M_ht.load_factor(); }
1570.309 -  float max_load_factor() const { return _M_ht.max_load_factor(); }
1570.310 -  void max_load_factor(float __val) { _M_ht.max_load_factor(__val); }
1570.311 -  void rehash(size_type __hint) { _M_ht.rehash(__hint); }
1570.312 -};
1570.313 -
1570.314 -#define _STLP_TEMPLATE_HEADER template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1570.315 -#define _STLP_TEMPLATE_CONTAINER unordered_set<_Value,_HashFcn,_EqualKey,_Alloc>
1570.316 -
1570.317 -#include <stl/_relops_hash_cont.h>
1570.318 -
1570.319 -#undef _STLP_TEMPLATE_CONTAINER
1570.320 -#define _STLP_TEMPLATE_CONTAINER unordered_multiset<_Value,_HashFcn,_EqualKey,_Alloc>
1570.321 -#include <stl/_relops_hash_cont.h>
1570.322 -
1570.323 -#undef _STLP_TEMPLATE_CONTAINER
1570.324 -#undef _STLP_TEMPLATE_HEADER
1570.325 -
1570.326 -// Specialization of insert_iterator so that it will work for unordered_set
1570.327 -// and unordered_multiset.
1570.328 -
1570.329 -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1570.330 -template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1570.331 -struct __move_traits<unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> > :
1570.332 -  _STLP_PRIV __move_traits_aux<typename unordered_set<_Value, _HashFcn, _EqualKey, _Alloc>::_Ht>
1570.333 -{};
1570.334 -
1570.335 -template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1570.336 -struct __move_traits<unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > :
1570.337 -  _STLP_PRIV __move_traits_aux<typename unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc>::_Ht>
1570.338 -{};
1570.339 -
1570.340 -template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1570.341 -class insert_iterator<unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> > {
1570.342 -protected:
1570.343 -  typedef unordered_set<_Value, _HashFcn, _EqualKey, _Alloc> _Container;
1570.344 -  _Container* container;
1570.345 -public:
1570.346 -  typedef _Container          container_type;
1570.347 -  typedef output_iterator_tag iterator_category;
1570.348 -  typedef void                value_type;
1570.349 -  typedef void                difference_type;
1570.350 -  typedef void                pointer;
1570.351 -  typedef void                reference;
1570.352 -
1570.353 -  insert_iterator(_Container& __x) : container(&__x) {}
1570.354 -  insert_iterator(_Container& __x, typename _Container::iterator)
1570.355 -    : container(&__x) {}
1570.356 -  insert_iterator<_Container>&
1570.357 -  operator=(const typename _Container::value_type& __val) {
1570.358 -    container->insert(__val);
1570.359 -    return *this;
1570.360 -  }
1570.361 -  insert_iterator<_Container>& operator*() { return *this; }
1570.362 -  insert_iterator<_Container>& operator++() { return *this; }
1570.363 -  insert_iterator<_Container>& operator++(int) { return *this; }
1570.364 -};
1570.365 -
1570.366 -template <class _Value, class _HashFcn, class _EqualKey, class _Alloc>
1570.367 -class insert_iterator<unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> > {
1570.368 -protected:
1570.369 -  typedef unordered_multiset<_Value, _HashFcn, _EqualKey, _Alloc> _Container;
1570.370 -  _Container* container;
1570.371 -  typename _Container::iterator iter;
1570.372 -public:
1570.373 -  typedef _Container          container_type;
1570.374 -  typedef output_iterator_tag iterator_category;
1570.375 -  typedef void                value_type;
1570.376 -  typedef void                difference_type;
1570.377 -  typedef void                pointer;
1570.378 -  typedef void                reference;
1570.379 -
1570.380 -  insert_iterator(_Container& __x) : container(&__x) {}
1570.381 -  insert_iterator(_Container& __x, typename _Container::iterator)
1570.382 -    : container(&__x) {}
1570.383 -  insert_iterator<_Container>&
1570.384 -  operator=(const typename _Container::value_type& __val) {
1570.385 -    container->insert(__val);
1570.386 -    return *this;
1570.387 -  }
1570.388 -  insert_iterator<_Container>& operator*() { return *this; }
1570.389 -  insert_iterator<_Container>& operator++() { return *this; }
1570.390 -  insert_iterator<_Container>& operator++(int) { return *this; }
1570.391 -};
1570.392 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1570.393 -
1570.394 -_STLP_END_NAMESPACE
1570.395 -
1570.396 -#endif /* _STLP_INTERNAL_UNORDERED_SET_H */
1570.397 -
1570.398 -// Local Variables:
1570.399 -// mode:C++
1570.400 -// End:
1570.401 -
  1571.1 --- a/epoc32/include/tools/stlport/stl/config/_gcc.h	Tue Mar 16 16:12:26 2010 +0000
  1571.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1571.3 @@ -1,461 +0,0 @@
  1571.4 -/* STLport configuration file
  1571.5 - * It is internal STLport header - DO NOT include it directly
  1571.6 - */
  1571.7 -
  1571.8 -#define _STLP_COMPILER "gcc"
  1571.9 -
 1571.10 -/* Systems having GLIBC installed have different traits */
 1571.11 -#if defined (__linux__)
 1571.12 -#  ifndef _STLP_USE_GLIBC
 1571.13 -#    define _STLP_USE_GLIBC 1
 1571.14 -#  endif
 1571.15 -#  if defined (__UCLIBC__) && !defined (_STLP_USE_UCLIBC)
 1571.16 -#    define _STLP_USE_UCLIBC 1
 1571.17 -#  endif
 1571.18 -#endif
 1571.19 -
 1571.20 -#if defined (__CYGWIN__) && \
 1571.21 -     (__GNUC__ >= 3) && (__GNUC_MINOR__ >= 3) && !defined (_GLIBCPP_USE_C99)
 1571.22 -#  define _STLP_NO_VENDOR_MATH_L
 1571.23 -#  define _STLP_NO_VENDOR_STDLIB_L
 1571.24 -#endif
 1571.25 -
 1571.26 -#if (__GNUC__ < 3)
 1571.27 -#  define _STLP_NO_VENDOR_STDLIB_L
 1571.28 -#endif
 1571.29 -
 1571.30 -/* We guess if we are using the cygwin distrib that has a special include schema.
 1571.31 - * There is no way to distinguish a cygwin distrib used in no-cygwin mode from a
 1571.32 - * mingw install. We are forced to use a configuration option
 1571.33 - */
 1571.34 -#if !defined (_STLP_NATIVE_INCLUDE_PATH) && \
 1571.35 -    (defined (__CYGWIN__) || defined (__MINGW32__) && defined (_STLP_NO_CYGWIN))
 1571.36 -#  if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ > 3))
 1571.37 -#    define _STLP_NATIVE_INCLUDE_PATH ../../../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__/include/c++
 1571.38 -#  elif defined (_STLP_NO_CYGWIN)
 1571.39 -#    define _STLP_NATIVE_INCLUDE_PATH ../mingw
 1571.40 -/*#  else
 1571.41 - * Before version gcc 3.4, the cygwin package include path was conform to the
 1571.42 - * GNU convention which is set later in this file.
 1571.43 - */
 1571.44 -#  endif
 1571.45 -#endif
 1571.46 -
 1571.47 -#if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 4))
 1571.48 -/* define for gcc versions before 3.4.0. */
 1571.49 -#  define _STLP_NO_MEMBER_TEMPLATE_KEYWORD
 1571.50 -#endif
 1571.51 -
 1571.52 -/* azov: gcc on lynx have a bug that causes internal
 1571.53 - * compiler errors when compiling STLport with namespaces turned on.
 1571.54 - * When the compiler gets better - comment out _STLP_HAS_NO_NAMESPACES
 1571.55 - */
 1571.56 -#if defined (__Lynx__) && (__GNUC__ < 3)
 1571.57 -#  define _STLP_HAS_NO_NAMESPACES 1
 1571.58 -#  define _STLP_NO_STATIC_TEMPLATE_DATA 1
 1571.59 -/* turn off useless warning about including system headers */
 1571.60 -#  define __NO_INCLUDE_WARN__ 1
 1571.61 -#endif
 1571.62 -
 1571.63 -/* Tru64 Unix, AIX, HP : gcc there by default uses native ld and hence cannot auto-instantiate
 1571.64 -   static template data. If you are using GNU ld, please say so in stl_user_config.h header */
 1571.65 -#if (__GNUC__ < 3) && !defined(_STLP_GCC_USES_GNU_LD) && \
 1571.66 -   ((defined (__osf__) && defined (__alpha__)) || defined (_AIX) || defined (__hpux) || defined(__amigaos__) )
 1571.67 -#  define _STLP_NO_STATIC_TEMPLATE_DATA
 1571.68 -#endif
 1571.69 -
 1571.70 -#if !defined (_REENTRANT) && (defined (_THREAD_SAFE) || \
 1571.71 -                             (defined (__OpenBSD__) && defined (_POSIX_THREADS)) || \
 1571.72 -                             (defined (__MINGW32__) && defined (_MT)))
 1571.73 -#  define _REENTRANT
 1571.74 -#endif
 1571.75 -
 1571.76 -#if defined (__DJGPP)
 1571.77 -#  define _STLP_RAND48    1
 1571.78 -#  define _NOTHREADS    1
 1571.79 -#  undef  _PTHREADS
 1571.80 -#  define _STLP_LITTLE_ENDIAN
 1571.81 -#endif
 1571.82 -
 1571.83 -#if defined (__MINGW32__)
 1571.84 -/* Mingw32, egcs compiler using the Microsoft C runtime */
 1571.85 -#  undef  _STLP_NO_DRAND48
 1571.86 -#  define _STLP_NO_DRAND48
 1571.87 -#  define _STLP_CALL
 1571.88 -
 1571.89 -#  if defined (_STLP_NEW_PLATFORM_SDK)
 1571.90 -/* For the moment the Windows SDK coming with Mingw still mimik the old platform SDK. */
 1571.91 -#    undef _STLP_NEW_PLATFORM_SDK
 1571.92 -#  endif
 1571.93 -#endif /* __MINGW32__ */
 1571.94 -
 1571.95 -#if defined (__CYGWIN__) || defined (__MINGW32__)
 1571.96 -#  if !defined (_STLP_USE_STATIC_LIB)
 1571.97 -#    define _STLP_USE_DECLSPEC 1
 1571.98 -#    if !defined (_STLP_USE_DYNAMIC_LIB)
 1571.99 -#      define _STLP_USE_DYNAMIC_LIB
1571.100 -#    endif
1571.101 -#    define _STLP_EXPORT_DECLSPEC __declspec(dllexport)
1571.102 -#    define _STLP_CLASS_EXPORT_DECLSPEC __declspec(dllexport)
1571.103 -#    define _STLP_CLASS_IMPORT_DECLSPEC __declspec(dllimport)
1571.104 -#  endif
1571.105 -/* The following is defined independently of _STLP_USE_STATIC_LIB because it is also
1571.106 - * used to import symbols from PSDK under MinGW
1571.107 - */
1571.108 -#  define _STLP_IMPORT_DECLSPEC __declspec(dllimport)
1571.109 -#endif
1571.110 -
1571.111 -#if defined (__CYGWIN__) || defined (__MINGW32__) || !(defined (_STLP_USE_GLIBC) || defined (__sun) || defined(__APPLE__))
1571.112 -#  if !defined (__MINGW32__) && !defined (__CYGWIN__)
1571.113 -#    define _STLP_NO_NATIVE_MBSTATE_T    1
1571.114 -#  endif
1571.115 -#  if !defined (__MINGW32__) || (__GNUC__ < 3) || (__GNUC__ == 3) && (__GNUC_MINOR__ < 4)
1571.116 -#    define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
1571.117 -#  endif
1571.118 -#  define _STLP_NO_NATIVE_WIDE_STREAMS   1
1571.119 -#endif
1571.120 -
1571.121 -#define _STLP_NORETURN_FUNCTION __attribute__((noreturn))
1571.122 -
1571.123 -/* Mac OS X is a little different with namespaces and cannot instantiate
1571.124 - * static data members in template classes */
1571.125 -#if defined (__APPLE__)
1571.126 -#  if ((__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3)))
1571.127 -/* Mac OS X is missing a required typedef and standard macro */
1571.128 -typedef unsigned int wint_t;
1571.129 -#  endif
1571.130 -
1571.131 -#  define __unix
1571.132 -
1571.133 -#  if (__GNUC__ < 3)
1571.134 -
1571.135 - /* Mac OS X needs one and only one source file to initialize all static data
1571.136 -  * members in template classes. Only one source file in an executable or
1571.137 -  * library can declare instances for such data members, otherwise duplicate
1571.138 -  * symbols will be generated. */
1571.139 -
1571.140 -#    define _STLP_NO_STATIC_TEMPLATE_DATA
1571.141 -#    define _STLP_STATIC_CONST_INIT_BUG 1
1571.142 -#    define _STLP_STATIC_TEMPLATE_DATA 0
1571.143 -#    define _STLP_WEAK_ATTRIBUTE 1
1571.144 - /* Workaround for the broken Mac OS X C++ preprocessor which cannot handle
1571.145 -  * parameterized macros in #include statements */
1571.146 -#    define _STLP_NATIVE_HEADER(header) <../g++/##header##>
1571.147 -#    define _STLP_NATIVE_C_HEADER(header) <../include/##header##>
1571.148 -#    define _STLP_NATIVE_CPP_C_HEADER(header) <../g++/##header##>
1571.149 -#    define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../g++/##header##>
1571.150 -#    define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../g++/##header##>
1571.151 -#  endif /* __GNUC__ < 3 */
1571.152 -
1571.153 -#  define _STLP_NO_LONG_DOUBLE
1571.154 -
1571.155 -/* Mac OS X needs all "::" scope references to be "std::" */
1571.156 -#  define _STLP_USE_NEW_C_HEADERS
1571.157 -
1571.158 -#  define _STLP_NO_VENDOR_STDLIB_L
1571.159 -
1571.160 -#endif /* __APPLE__ */
1571.161 -
1571.162 -
1571.163 -#if defined(__BEOS__) && defined(__INTEL__)
1571.164 -#  define _STLP_NATIVE_HEADER(header) <../stlport/beos/##header##>
1571.165 -#  define _STLP_NATIVE_C_HEADER(header) <../stlport/beos/##header##>
1571.166 -#  define _STLP_NATIVE_CPP_C_HEADER(header) <../stlport/beos/##header##>
1571.167 -#  define _STLP_NATIVE_OLD_STREAMS_HEADER(header) <../stlport/beos/##header##>
1571.168 -#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../stlport/beos/##header##>
1571.169 -#  define _STLP_NO_NATIVE_WIDE_FUNCTIONS 1
1571.170 -#  define _STLP_NO_NATIVE_WIDE_STREAMS   1
1571.171 -/*
1571.172 -#  define _NOTHREADS 1
1571.173 -*/
1571.174 -#  ifdef _PTHREADS
1571.175 -#    undef  _PTHREADS
1571.176 -#  endif
1571.177 -#  ifdef _STLP_PTHREADS
1571.178 -#    undef _STLP_PTHREADS
1571.179 -#  endif
1571.180 -#  define _STLP_USE_STDIO_IO 1
1571.181 -#  define _STLP_USE_GLIBC 1
1571.182 -#endif
1571.183 -
1571.184 -/* g++ 2.7.x and above */
1571.185 -#define _STLP_LONG_LONG long long
1571.186 -
1571.187 -#ifdef _STLP_USE_UCLIBC
1571.188 -/*
1571.189 -#  ifndef __DO_C99_MATH__
1571.190 -*/
1571.191 -  /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
1571.192 -#  define _STLP_NO_VENDOR_MATH_F
1571.193 -  /* No *l math fuctions variants (i.e. sqrtl, fabsl, etc.) */
1571.194 -#  define _STLP_NO_VENDOR_MATH_L
1571.195 -#  define _STLP_NO_LONG_DOUBLE
1571.196 -/*
1571.197 -#  endif
1571.198 -*/
1571.199 -#endif
1571.200 -
1571.201 -#if defined (__OpenBSD__) || defined (__FreeBSD__)
1571.202 -#  define _STLP_NO_VENDOR_MATH_L
1571.203 -#  define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
1571.204 -#  ifndef __unix
1571.205 -#    define __unix
1571.206 -#  endif
1571.207 -#endif
1571.208 -
1571.209 -#if defined (__alpha__)
1571.210 -#  define _STLP_NO_VENDOR_MATH_L
1571.211 -#  define _STLP_NO_IEC559_SUPPORT
1571.212 -#endif
1571.213 -
1571.214 -#if defined (__hpux)
1571.215 -#  define _STLP_NO_VENDOR_STDLIB_L /* no llabs */
1571.216 -  /* No *f math fuctions variants (i.e. sqrtf, fabsf, etc.) */
1571.217 -#  define _STLP_NO_VENDOR_MATH_F
1571.218 -#endif
1571.219 -
1571.220 -#if (__GNUC__ >= 3)
1571.221 -#  ifndef _STLP_HAS_NO_NEW_C_HEADERS
1571.222 -/*
1571.223 -#    ifndef _STLP_USE_UCLIBC
1571.224 -*/
1571.225 -#    define _STLP_HAS_NATIVE_FLOAT_ABS
1571.226 -/*
1571.227 -#    endif
1571.228 -*/
1571.229 -#  else
1571.230 -#    ifdef _STLP_USE_GLIBC
1571.231 -#      define _STLP_VENDOR_LONG_DOUBLE_MATH  1
1571.232 -#    endif
1571.233 -#  endif
1571.234 -#endif
1571.235 -
1571.236 -#if (__GNUC__ < 3)
1571.237 -#  define _STLP_HAS_NO_NEW_C_HEADERS     1
1571.238 -#  define _STLP_VENDOR_GLOBAL_CSTD       1
1571.239 -#  define _STLP_DONT_USE_PTHREAD_SPINLOCK 1
1571.240 -#  ifndef __HONOR_STD
1571.241 -#    define _STLP_VENDOR_GLOBAL_EXCEPT_STD 1
1571.242 -#  endif
1571.243 -/* egcs fails to initialize builtin types in expr. like this : new(p) char();  */
1571.244 -#  define _STLP_DEF_CONST_PLCT_NEW_BUG 1
1571.245 -#endif
1571.246 -
1571.247 -/*
1571.248 -#define _STLP_VENDOR_GLOBAL_CSTD 1
1571.249 -*/
1571.250 -
1571.251 -#if (__GNUC__ == 2) && (__GNUC_MINOR__ < 95)
1571.252 -#  define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
1571.253 -#  define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
1571.254 -#  define _STLP_DEF_CONST_DEF_PARAM_BUG 1
1571.255 -#else
1571.256 -#  undef _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
1571.257 -#  undef _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
1571.258 -#endif
1571.259 -
1571.260 -#if (__GNUC_MINOR__ < 9)  && (__GNUC__ < 3) /* gcc 2.8 */
1571.261 -#  define _STLP_NO_TEMPLATE_CONVERSIONS
1571.262 -#  define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
1571.263 -#  define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
1571.264 -#  define _STLP_NO_FRIEND_TEMPLATES 1
1571.265 -#  define _STLP_HAS_NO_NAMESPACES 1
1571.266 -#  define _STLP_NO_METHOD_SPECIALIZATION 1
1571.267 -#  define _STLP_NO_MEMBER_TEMPLATES 1
1571.268 -#  define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
1571.269 -#  define _STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1571.270 -/*  DJGPP doesn't seem to implement it in 2.8.x */
1571.271 -#  ifdef DJGPP
1571.272 -#    define  _STLP_NO_STATIC_TEMPLATE_DATA 1
1571.273 -#  endif
1571.274 -#endif
1571.275 -
1571.276 -#if __GNUC__ <= 2 && __GNUC_MINOR__ <= 7 && !defined (__CYGWIN32__)
1571.277 -/* Will it work with 2.6 ? I doubt it. */
1571.278 -#  if ( __GNUC_MINOR__ < 6 )
1571.279 -__GIVE_UP_WITH_STL(GCC_272);
1571.280 -#  endif
1571.281 -
1571.282 -#  define  _STLP_NO_RELOPS_NAMESPACE
1571.283 -#  define  _STLP_NON_TYPE_TMPL_PARAM_BUG
1571.284 -#  define  _STLP_LIMITED_DEFAULT_TEMPLATES 1
1571.285 -#  define  _STLP_DEFAULT_TYPE_PARAM 1
1571.286 -#  define  _STLP_NO_BAD_ALLOC
1571.287 -#  define  _STLP_NO_ARROW_OPERATOR 1
1571.288 -#  ifndef _STLP_NO_STATIC_TEMPLATE_DATA
1571.289 -#    define  _STLP_NO_STATIC_TEMPLATE_DATA
1571.290 -#  endif
1571.291 -#  define  _STLP_STATIC_CONST_INIT_BUG 1
1571.292 -#  define  _STLP_NO_METHOD_SPECIALIZATION 1
1571.293 -
1571.294 -#  if !defined (__CYGWIN32__)
1571.295 -#    define _STLP_NESTED_TYPE_PARAM_BUG   1
1571.296 -#    define _STLP_BASE_MATCH_BUG       1
1571.297 -/*  unused operators are required (forward) */
1571.298 -#    define  _STLP_CONST_CONSTRUCTOR_BUG
1571.299 -#    define _STLP_NO_DEFAULT_NON_TYPE_PARAM
1571.300 -#  endif
1571.301 -#  define _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX 1
1571.302 -#  define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
1571.303 -#  define _STLP_NO_EXCEPTION_HEADER 1
1571.304 -#else /* ! <= 2.7.* */
1571.305 -#endif /* ! <= 2.7.* */
1571.306 -
1571.307 -/* static template data members workaround strategy for gcc tries
1571.308 - * to use weak symbols.
1571.309 - * if you don't want to use that, #define _STLP_WEAK_ATTRIBUTE=0 ( you'll
1571.310 - * have to put "#define __PUT_STATIC_DATA_MEMBERS_HERE" line in one of your
1571.311 - * compilation unit ( or CFLAGS for it ) _before_ including any STL header ).
1571.312 - */
1571.313 -#if defined (_STLP_NO_STATIC_TEMPLATE_DATA) && ! defined (_STLP_WEAK_ATTRIBUTE )
1571.314 -/* systems using GNU ld or format that supports weak symbols
1571.315 -   may use "weak" attribute
1571.316 -   Linux & Solaris ( x86 & SPARC ) are being auto-recognized here */
1571.317 -#  if defined(_STLP_GNU_LD) || defined(__ELF__) || defined (__CYGWIN__) || \
1571.318 -     (( defined (__SVR4) || defined ( __svr4__ )) && \
1571.319 -      ( defined (sun) || defined ( __sun__ )))
1571.320 -#    define _STLP_WEAK_ATTRIBUTE 1
1571.321 -#  endif
1571.322 -#endif /* _STLP_WEAK_ATTRIBUTE */
1571.323 -
1571.324 -
1571.325 -/* strict ANSI prohibits "long long" ( gcc) */
1571.326 -#if defined ( __STRICT_ANSI__ )
1571.327 -#  undef _STLP_LONG_LONG
1571.328 -/*
1571.329 -#    define _STLP_STRICT_ANSI 1
1571.330 -*/
1571.331 -#endif
1571.332 -
1571.333 -/*
1571.334 -#if !defined (__STRICT_ANSI__) || defined (__BUILDING_STLPORT)
1571.335 -#  define _STLP_USE_TEMPLATE_EXPORT
1571.336 -#  define _STLP_EXPORT_TEMPLATE_KEYWORD extern
1571.337 -#  define _STLP_IMPORT_TEMPLATE_KEYWORD extern
1571.338 -#endif
1571.339 -*/
1571.340 -
1571.341 -#ifndef __EXCEPTIONS
1571.342 -#  undef  _STLP_DONT_USE_EXCEPTIONS
1571.343 -#  define _STLP_DONT_USE_EXCEPTIONS 1
1571.344 -#endif
1571.345 -
1571.346 -#if (__GNUC__ >= 3)
1571.347 -
1571.348 -#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1571.349 -#    if ( (__GNUC__ == 3 ) && ((__GNUC_MINOR__ == 0) || ((__GNUC_MINOR__ < 3) && defined(__APPLE_CC__))))
1571.350 -#      define _STLP_NATIVE_INCLUDE_PATH ../g++-v3
1571.351 -#    else
1571.352 -#      if ( ((__GNUC__ == 4 ) || (__GNUC_MINOR__ >= 3)) && defined(__APPLE_CC__))
1571.353 -#        define _STLP_NATIVE_INCLUDE_PATH ../c++
1571.354 -/*
1571.355 -* Before version 3.4.0 the 0 patch level was not part of the include path:
1571.356 -*/
1571.357 -#      elif defined (__GNUC_PATCHLEVEL__) && ((__GNUC_PATCHLEVEL__ > 0) || \
1571.358 -                                              (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \
1571.359 -                                              (__GNUC__ > 3))
1571.360 -#        define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__.__GNUC_PATCHLEVEL__
1571.361 -#      else
1571.362 -#        define _STLP_NATIVE_INCLUDE_PATH ../__GNUC__.__GNUC_MINOR__
1571.363 -#      endif
1571.364 -#    endif
1571.365 -#  endif
1571.366 -
1571.367 -/* Instantiation scheme that used (default) in gcc 3 made void of sense explicit
1571.368 -   instantiation within library: nothing except increased library size. - ptr
1571.369 - */
1571.370 -#  define _STLP_NO_FORCE_INSTANTIATE
1571.371 -
1571.372 -#elif (__GNUC_MINOR__ < 8)
1571.373 -
1571.374 -#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1571.375 -#    define _STLP_NATIVE_INCLUDE_PATH ../g++-include
1571.376 -#  endif
1571.377 -
1571.378 -/* tuning of static template data members workaround */
1571.379 -#  if ( _STLP_STATIC_TEMPLATE_DATA < 1 )
1571.380 -#    if ( _STLP_WEAK_ATTRIBUTE > 0 )
1571.381 -#      define _STLP_WEAK __attribute__ (( weak ))
1571.382 -#    else
1571.383 -#      define _STLP_WEAK
1571.384 -#    endif /* _STLP_WEAK_ATTRIBUTE */
1571.385 -
1571.386 -#    ifdef __PUT_STATIC_DATA_MEMBERS_HERE
1571.387 -#      define __DECLARE_INSTANCE(type,item,init) type item _STLP_WEAK init
1571.388 -#    else
1571.389 -#      define __DECLARE_INSTANCE(type,item,init)
1571.390 -#    endif /* __PUT_STATIC_DATA_MEMBERS_HERE */
1571.391 -#  endif /* _STLP_STATIC_TEMPLATE_DATA */
1571.392 -
1571.393 -#else
1571.394 -
1571.395 -/* gcc-2.95.0 used to use "g++-3" directory which has been changed to "g++" in
1571.396 - * system-dependent "include" for 2.95.2 except for Cygwin and Mingw packages.
1571.397 - * I expect "g++-3" not being used in later releases.
1571.398 - * If your installation use "g++-3" include directory for any reason (pre-2.95.2 or Win binary kit),
1571.399 - * please change the macro below to point to your directory.
1571.400 - */
1571.401 -
1571.402 -#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
1571.403 -#    if defined(__DJGPP)
1571.404 -#      define _STLP_NATIVE_INCLUDE_PATH ../lang/cxx
1571.405 -#    elif (__GNUC__ >= 3) || (__GNUC_MINOR__ >= 97)
1571.406 -#      define _STLP_NATIVE_INCLUDE_PATH ../include/g++-v3
1571.407 -#    elif ((__GNUC_MINOR__ >= 95 && __GNUC_MINOR__ < 97) && \
1571.408 -          !( defined (__FreeBSD__) || defined (__NetBSD__) || defined(__sgi) || defined (__OS2__) ) )
1571.409 -#      define _STLP_NATIVE_INCLUDE_PATH ../g++-3
1571.410 -#    elif (__GNUC_MINOR__ > 8) && (__GNUC_MINOR__ < 95) && (__GNUC__ < 3) && !defined( __Lynx__ )
1571.411 -/* this really sucks, as GNUpro does not really identifies itself, so we have to guess
1571.412 - * depending on a platform
1571.413 - */
1571.414 -#      ifdef __hpux
1571.415 -#        define _STLP_NATIVE_INCLUDE_PATH ../g++-3
1571.416 -#      else
1571.417 -#        define _STLP_NATIVE_INCLUDE_PATH ../g++-2
1571.418 -#      endif
1571.419 -#    else
1571.420 -#      define _STLP_NATIVE_INCLUDE_PATH g++
1571.421 -#    endif
1571.422 -#  endif
1571.423 -
1571.424 -/* <exception> et al */
1571.425 -#  ifdef __FreeBSD__
1571.426 -#    if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)
1571.427 -#      define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
1571.428 -#    endif
1571.429 -#  else
1571.430 -/* azov */
1571.431 -#    ifndef __Lynx__
1571.432 -#      if (__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)
1571.433 -/*
1571.434 -#     define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../g++-v3
1571.435 -*/
1571.436 -#      else
1571.437 -#        define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH ../include
1571.438 -#      endif
1571.439 -#    endif
1571.440 -#  endif
1571.441 -
1571.442 -#endif /* GNUC_MINOR < 8 */
1571.443 -
1571.444 -#if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
1571.445 -#  define _STLP_NATIVE_C_INCLUDE_PATH ../include
1571.446 -#endif
1571.447 -
1571.448 -/* Tune settings for the case where static template data members are not
1571.449 - * instaniated by default
1571.450 - */
1571.451 -#if defined ( _STLP_NO_STATIC_TEMPLATE_DATA )
1571.452 -#  define _STLP_STATIC_TEMPLATE_DATA 0
1571.453 -#  if !defined ( _STLP_WEAK_ATTRIBUTE )
1571.454 -#    define _STLP_WEAK_ATTRIBUTE 0
1571.455 -#  endif
1571.456 -#  ifdef __PUT_STATIC_DATA_MEMBERS_HERE
1571.457 -#    define __DECLARE_INSTANCE(type,item,init) type item init
1571.458 -#  else
1571.459 -#    define __DECLARE_INSTANCE(type,item,init)
1571.460 -#  endif
1571.461 -#else
1571.462 -#  define _STLP_STATIC_TEMPLATE_DATA 1
1571.463 -#endif
1571.464 -
  1572.1 --- a/epoc32/include/tools/stlport/stl/config/_mwerks.h	Tue Mar 16 16:12:26 2010 +0000
  1572.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1572.3 @@ -1,161 +0,0 @@
  1572.4 -// STLport configuration file
  1572.5 -// It is internal STLport header - DO NOT include it directly
  1572.6 -
  1572.7 -#define _STLP_COMPILER "Metrowerk Codewarrior"
  1572.8 -
  1572.9 -// Bring in definition of __MSL__ and related items
 1572.10 -#include <mslGlobals.h>
 1572.11 -#include <ansi_parms.h>
 1572.12 -
 1572.13 -//
 1572.14 -//  Compiler features
 1572.15 -//
 1572.16 -
 1572.17 -
 1572.18 -// *** CodeWarrior Compiler Common Features ***
 1572.19 -#  if __option(longlong)
 1572.20 -#   define _STLP_LONG_LONG  long long
 1572.21 -#  endif
 1572.22 -
 1572.23 -#  define _STLP_USE_UNIX_EMULATION_IO  1
 1572.24 -
 1572.25 -#  define _STLP_USE_AUTO_PTR_CONVERSIONS  1
 1572.26 -
 1572.27 -# ifdef __INTEL__
 1572.28 -#  define _STLP_LITTLE_ENDIAN
 1572.29 -# else
 1572.30 -#  define _STLP_BIG_ENDIAN
 1572.31 -# endif
 1572.32 -
 1572.33 -#if defined(_MSL_NO_LOCALE)
 1572.34 -#define _STLP_NO_IMPORT_LOCALE
 1572.35 -#endif
 1572.36 -#if !__option( wchar_type )
 1572.37 -# define _STLP_WCHAR_T_IS_USHORT
 1572.38 -#endif
 1572.39 -
 1572.40 -#  if __MWERKS__ < 0x3000
 1572.41 -// *** CodeWarrior Compiler Common Bugs ***
 1572.42 -#   define __MSL_FIX_ITERATORS__(myType)    // Some MSL headers rely on this
 1572.43 -#   define _STLP_NO_FRIEND_TEMPLATES 1  // Bug mysteriously reintroduced in this version.
 1572.44 -#   define _STLP_THROW_RETURN_BUG  1
 1572.45 -#  endif
 1572.46 -
 1572.47 -//  *** Version-specific settings ***
 1572.48 -
 1572.49 -#  if __MWERKS__ >= 0x2405
 1572.50 -#   define _STLP_HAS_NATIVE_FLOAT_ABS
 1572.51 -#  endif
 1572.52 -
 1572.53 -#  if __MWERKS__ < 0x2405
 1572.54 -#   define _STLP_STATIC_CONST_INIT_BUG
 1572.55 -#  endif
 1572.56 -
 1572.57 -#  if __MWERKS__ <= 0x2303
 1572.58 -#   define _STLP_NO_TEMPLATE_CONVERSIONS  1
 1572.59 -#   define _STLP_NO_MEMBER_TEMPLATE_KEYWORD  1
 1572.60 -#  endif
 1572.61 -
 1572.62 -#  if __MWERKS__ < 0x2301
 1572.63 -#   define _STLP_MEMBER_SPECIALIZATION_BUG  1
 1572.64 -#  endif
 1572.65 -
 1572.66 -#  if __MWERKS__ < 0x2300    // CW Pro5 features
 1572.67 -#   define _STLP_INLINE_MEMBER_TEMPLATES 1
 1572.68 -#   define _STLP_RELOPS_IN_STD_BUG   1
 1572.69 -#   define _STLP_DEF_CONST_PLCT_NEW_BUG 1
 1572.70 -#   define _STLP_DEF_CONST_DEF_PARAM_BUG 1
 1572.71 -#   define _STLP_NO_TYPENAME_ON_RETURN_TYPE
 1572.72 -#  endif
 1572.73 -
 1572.74 -#  if __MWERKS__ < 0x2200    // CW Pro4 features
 1572.75 -#   define _STLP_BROKEN_USING_DIRECTIVE  1
 1572.76 -#   define _STLP_NO_MEMBER_TEMPLATES 1
 1572.77 -#   define _STLP_NO_MEMBER_TEMPLATE_CLASSES 1
 1572.78 -#   define _STLP_NO_MEMBER_TEMPLATE_KEYWORD 1
 1572.79 -#   define _STLP_NO_FRIEND_TEMPLATES 1
 1572.80 -#   define _STLP_NO_QUALIFIED_FRIENDS 1
 1572.81 -#   define _STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER 1
 1572.82 -#  endif
 1572.83 -
 1572.84 -#  if __MWERKS__ < 0x2100      // CW Pro3 features
 1572.85 -#   define _STLP_NO_CLASS_PARTIAL_SPECIALIZATION 1
 1572.86 -#   define _STLP_HAS_NO_NAMESPACES 1
 1572.87 -#   define _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS 1
 1572.88 -
 1572.89 -#   define _STLP_NEED_TYPENAME        1
 1572.90 -#   define _STLP_NO_ARROW_OPERATOR 1
 1572.91 -#   define _STLP_TEMPLATE_PARAM_SUBTYPE_BUG  1
 1572.92 -#   define _STLP_FORCED_INLINE_INSTANTIATION_BUG  1
 1572.93 -#   define _STLP_MULTI_CONST_TEMPLATE_ARG_BUG  1
 1572.94 -#   define _STLP_INLINE_NAME_RESOLUTION_BUG  1
 1572.95 -// *** Metrowerks Standard Library Bug ***
 1572.96 -#   define _STLP_MSVC50_COMPATIBILITY 1
 1572.97 -#  endif
 1572.98 -
 1572.99 -#  if __MWERKS__ < 0x2000      // v. 2.0 features
1572.100 -#   define _STLP_NO_WCHAR_T 1
1572.101 -#   define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
1572.102 -#   define _STLP_NON_TYPE_TMPL_PARAM_BUG  1  // dwa 8/21/97 - this bug fixed for CWPro2
1572.103 -#  endif
1572.104 -
1572.105 -#  if __MWERKS__ < 0x1900                 // dwa 8/19/97 - 1.9 Compiler feature defines
1572.106 -#   define _STLP_LIMITED_DEFAULT_TEMPLATES 1
1572.107 -#   define _STLP_BASE_TYPEDEF_BUG        1
1572.108 -#   define _STLP_BASE_MATCH_BUG   1
1572.109 -#   define _STLP_NONTEMPL_BASE_MATCH_BUG 1
1572.110 -#   define _STLP_DEFAULT_TYPE_PARAM  1      // More limited template parameters
1572.111 -
1572.112 -#   if __MWERKS__ < 0x1800
1572.113 -    __GIVE_UP_WITH_STL(CW_18)
1572.114 -#   endif
1572.115 -
1572.116 -#  endif
1572.117 -
1572.118 -
1572.119 -// fixes to native inclusion wrappers.
1572.120 -# if __MWERKS__ >= 0x2300  // CWPro5 changes paths - dwa 2/28/99
1572.121 -#  define _STLP_NATIVE_INCLUDE_PATH  ../include
1572.122 -#  define _STLP_NATIVE_C_INCLUDE_PATH  ../include
1572.123 -#  define _STLP_NATIVE_HEADER(header)     <../include/##header>
1572.124 -#  define _STLP_NATIVE_CPP_C_HEADER(header)     <../include/##header>
1572.125 -#  define _STLP_NATIVE_C_HEADER(header)     <../include/##header>
1572.126 -#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <../include/##header>
1572.127 -# else
1572.128 -
1572.129 -#  define _STLP_NATIVE_INCLUDE_PATH  Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include
1572.130 -#  define _STLP_NATIVE_C_INCLUDE_PATH  Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes
1572.131 -#  define _STLP_NATIVE_HEADER(header)     <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include:##header>
1572.132 -#  define _STLP_NATIVE_CPP_C_HEADER(header)     <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C++:Include:##header>
1572.133 -#  define _STLP_NATIVE_C_HEADER(header)     <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes:##header>
1572.134 -#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header) <Macintosh HD:Codewarrior Pro 4:Metrowerks CodeWarrior:Metrowerks Standard Library:MSL C:MSL Common:Public Includes:##header>
1572.135 -
1572.136 -# endif
1572.137 -
1572.138 -//Following block come from boost intrinsics.hpp file:
1572.139 -#if defined (__MSL_CPP__) && (__MSL_CPP__ >= 0x8000)
1572.140 -    // Metrowerks compiler is acquiring intrinsic type traits support
1572.141 -    // post version 8.  We hook into the published interface to pick up
1572.142 -    // user defined specializations as well as compiler intrinsics as
1572.143 -    // and when they become available:
1572.144 -#   include <msl_utility>
1572.145 -#   define _STLP_HAS_TRIVIAL_CONSTRUCTOR(T) Metrowerks::has_trivial_default_ctor<T>::value
1572.146 -#   define _STLP_HAS_TRIVIAL_COPY(T) Metrowerks::has_trivial_copy_ctor<T>::value
1572.147 -#   define _STLP_HAS_TRIVIAL_ASSIGN(T) Metrowerks::has_trivial_assignment<T>::value
1572.148 -#   define _STLP_HAS_TRIVIAL_DESTRUCTOR(T) Metrowerks::has_trivial_dtor<T>::value
1572.149 -#   define _STLP_IS_POD(T) Metrowerks::is_POD<T>::value
1572.150 -#   define _STLP_HAS_TYPE_TRAITS_INTRINSICS
1572.151 -#endif
1572.152 -
1572.153 -// fbp
1572.154 -# if !defined( __MSL_CPP__ ) || __MSL_CPP__ <= 0x4105
1572.155 -#   define _STLP_NO_NATIVE_WIDE_STREAMS 1
1572.156 -#  endif
1572.157 -
1572.158 -# if defined(__MACH__)
1572.159 -#  define _STLP_MAC
1572.160 -#  define O_BINARY 0
1572.161 -# elif defined(macintosh)
1572.162 -#  define _NOTHREADS
1572.163 -# endif
1572.164 -# define _STLP_DLLEXPORT_NEEDS_PREDECLARATION 1
  1573.1 --- a/epoc32/include/tools/stlport/stl/config/_native_headers.h	Tue Mar 16 16:12:26 2010 +0000
  1573.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1573.3 @@ -1,50 +0,0 @@
  1573.4 - /*
  1573.5 -  *
  1573.6 -  * Copyright (c) 2006
  1573.7 -  * Francois Dumont
  1573.8 -  *
  1573.9 -  * This material is provided "as is", with absolutely no warranty expressed
 1573.10 -  * or implied. Any use is at your own risk.
 1573.11 -  *
 1573.12 -  * Permission to use or copy this software for any purpose is hereby granted
 1573.13 -  * without fee, provided the above notices are retained on all copies.
 1573.14 -  * Permission to modify the code and to distribute modified code is granted,
 1573.15 -  * provided the above notices are retained, and a notice that the code was
 1573.16 -  * modified is included with the above copyright notice.
 1573.17 -  *
 1573.18 -  */
 1573.19 -
 1573.20 -#if !defined (_STLP_MAKE_HEADER)
 1573.21 -#  define _STLP_MAKE_HEADER(path, header) <path/header>
 1573.22 -#endif
 1573.23 -
 1573.24 -#if !defined (_STLP_NATIVE_HEADER)
 1573.25 -#  if !defined (_STLP_NATIVE_INCLUDE_PATH)
 1573.26 -#    define _STLP_NATIVE_INCLUDE_PATH ../include
 1573.27 -#  endif
 1573.28 -#  define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header)
 1573.29 -#endif
 1573.30 -
 1573.31 -/* For some compilers, C headers like <stdio.h> are located in separate directory */
 1573.32 -#if !defined (_STLP_NATIVE_C_HEADER)
 1573.33 -#  if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
 1573.34 -#    define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1573.35 -#  endif
 1573.36 -#  define _STLP_NATIVE_C_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_C_INCLUDE_PATH,header)
 1573.37 -#endif
 1573.38 -
 1573.39 -/* For some compilers, C-library headers like <cstdio> are located in separate directory */
 1573.40 -#if !defined (_STLP_NATIVE_CPP_C_HEADER)
 1573.41 -#  if !defined (_STLP_NATIVE_CPP_C_INCLUDE_PATH)
 1573.42 -#    define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1573.43 -#  endif
 1573.44 -#  define _STLP_NATIVE_CPP_C_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_C_INCLUDE_PATH,header)
 1573.45 -#endif
 1573.46 -
 1573.47 -/* Some compilers locate basic C++ runtime support headers (<new>, <typeinfo>, <exception>) in separate directory */
 1573.48 -#if !defined ( _STLP_NATIVE_CPP_RUNTIME_HEADER )
 1573.49 -#  if !defined (_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH)
 1573.50 -#    define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1573.51 -#  endif
 1573.52 -#  define _STLP_NATIVE_CPP_RUNTIME_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH,header)
 1573.53 -#endif
  1574.1 --- a/epoc32/include/tools/stlport/stl/config/_system.h	Tue Mar 16 16:12:26 2010 +0000
  1574.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1574.3 @@ -1,179 +0,0 @@
  1574.4 -/*
  1574.5 - * Copyright (c) 1997
  1574.6 - * Moscow Center for SPARC Technology
  1574.7 - *
  1574.8 - * Copyright (c) 1999
  1574.9 - * Boris Fomitchev
 1574.10 - *
 1574.11 - * This material is provided "as is", with absolutely no warranty expressed
 1574.12 - * or implied. Any use is at your own risk.
 1574.13 - *
 1574.14 - * Permission to use or copy this software for any purpose is hereby granted
 1574.15 - * without fee, provided the above notices are retained on all copies.
 1574.16 - * Permission to modify the code and to distribute modified code is granted,
 1574.17 - * provided the above notices are retained, and a notice that the code was
 1574.18 - * modified is included with the above copyright notice.
 1574.19 - *
 1574.20 - */
 1574.21 -
 1574.22 -/*
 1574.23 - * Purpose of this file :
 1574.24 - *
 1574.25 - * To hold COMPILER-SPECIFIC portion of STLport settings.
 1574.26 - * In general, user should not edit this file unless
 1574.27 - * using the compiler not recognized below.
 1574.28 - *
 1574.29 - * If your compiler is not being recognized yet,
 1574.30 - * please look for definitions of macros in stl_mycomp.h,
 1574.31 - * copy stl_mycomp.h to stl_YOUR_COMPILER_NAME,
 1574.32 - * adjust flags for your compiler, and add  <include config/stl_YOUR_COMPILER_NAME>
 1574.33 - * to the secton controlled by unique macro defined internaly by your compiler.
 1574.34 - *
 1574.35 - * To change user-definable settings, please edit <user_config.h>
 1574.36 - *
 1574.37 - */
 1574.38 -
 1574.39 -#ifndef __stl_config__system_h
 1574.40 -#define __stl_config__system_h
 1574.41 -
 1574.42 -#if defined (__sun)
 1574.43 -#  include <stl/config/_solaris.h>
 1574.44 -#  if defined (__GNUC__)
 1574.45 -#    include <stl/config/_gcc.h>
 1574.46 -#  elif defined (__SUNPRO_CC)
 1574.47 -#    include <stl/config/_sunprocc.h>
 1574.48 -/*
 1574.49 -#  ifdef __KCC
 1574.50 -#    include <stl/config/_kai.h>
 1574.51 -#  endif
 1574.52 -*/
 1574.53 -#  elif defined (__APOGEE__)  /* Apogee 4.x */
 1574.54 -#    include <stl/config/_apcc.h>
 1574.55 -#  elif defined (__FCC_VERSION) /* Fujitsu Compiler, v4.0 assumed */
 1574.56 -#    include <stl/config/_fujitsu.h>
 1574.57 -#  endif
 1574.58 -#elif defined (__hpux)
 1574.59 -#  include <stl/config/_hpux.h>
 1574.60 -#  if defined (__GNUC__)
 1574.61 -#    include <stl/config/_gcc.h>
 1574.62 -#  elif defined (__HP_aCC)
 1574.63 -#    include <stl/config/_hpacc.h>
 1574.64 -#  endif
 1574.65 -#elif defined (linux) || defined (__linux__)
 1574.66 -#  include <stl/config/_linux.h>
 1574.67 -/* Intel's icc define __GNUC__! */
 1574.68 -#  if defined (__INTEL_COMPILER)
 1574.69 -#    include <stl/config/_icc.h>
 1574.70 -#  elif defined (__GNUC__)
 1574.71 -#    include <stl/config/_gcc.h>
 1574.72 -#  endif
 1574.73 -/*
 1574.74 -#  ifdef __KCC
 1574.75 -#    include <stl/config/_kai.h>
 1574.76 -#  endif
 1574.77 -*/
 1574.78 -#elif defined (__FreeBSD__)
 1574.79 -#  include <stl/config/_freebsd.h>
 1574.80 -#  if defined (__GNUC__)
 1574.81 -#    include <stl/config/_gcc.h>
 1574.82 -#  endif
 1574.83 -#elif defined (__OpenBSD__)
 1574.84 -#  include <stl/config/_openbsd.h>
 1574.85 -#  if defined (__GNUC__)
 1574.86 -#    include <stl/config/_gcc.h>
 1574.87 -#  endif
 1574.88 -#elif defined (N_PLAT_NLM) /* Novell NetWare */
 1574.89 -#  include <stl/config/_netware.h>
 1574.90 -#  ifdef __MWERKS__ /* Metrowerks CodeWarrior */
 1574.91 -#    include <stl/config/_mwccnlm.h>
 1574.92 -#  endif
 1574.93 -#elif defined (__sgi) /* IRIX? */
 1574.94 -#  define _STLP_PLATFORM "SGI Irix"
 1574.95 -#  if defined (__GNUC__)
 1574.96 -#    include <stl/config/_gcc.h>
 1574.97 -#  else
 1574.98 -#    include <stl/config/_sgi.h>
 1574.99 -#  endif
1574.100 -#elif defined (__OS400__) /* AS/400 C++ */
1574.101 -#  define _STLP_PLATFORM "OS 400"
1574.102 -#  if defined (__GNUC__)
1574.103 -#    include <stl/config/_gcc.h>
1574.104 -#  else
1574.105 -#    include <stl/config/_as400.h>
1574.106 -#  endif
1574.107 -#elif defined (_AIX)
1574.108 -#  include <stl/config/_aix.h>
1574.109 -#  if defined (__xlC__) || defined (__IBMC__) || defined ( __IBMCPP__ )
1574.110 -     /* AIX xlC, Visual Age C++ , OS-390 C++ */
1574.111 -#    include <stl/config/_ibm.h>
1574.112 -#  endif
1574.113 -#elif defined (_CRAY) /* Cray C++ 3.4 or 3.5 */
1574.114 -#  define _STLP_PLATFORM "Cray"
1574.115 -#  include <config/_cray.h>
1574.116 -#elif defined (__DECCXX) || defined (__DECC)
1574.117 -#  define _STLP_PLATFORM "DECC"
1574.118 -#  ifdef __vms
1574.119 -#    include <stl/config/_dec_vms.h>
1574.120 -#  else
1574.121 -#    include <stl/config/_dec.h>
1574.122 -#  endif
1574.123 -#elif defined (macintosh) || defined (_MAC)
1574.124 -#  include <stl/config/_mac.h>
1574.125 -#  if defined (__MWERKS__)
1574.126 -#    include <stl/config/_mwerks.h>
1574.127 -#  elif defined (__MRC__) || (defined (__SC__) && (__SC__ >= 0x882))
1574.128 -     /* Apple MPW SCpp 8.8.2, Apple MPW MrCpp 4.1.0 */
1574.129 -#    include <stl/config/_apple.h>
1574.130 -#  endif
1574.131 -#elif defined (__APPLE__)
1574.132 -#  include <stl/config/_macosx.h>
1574.133 -#  ifdef __GNUC__
1574.134 -#    include <stl/config/_gcc.h>
1574.135 -#  endif
1574.136 -#elif defined (__CYGWIN__)
1574.137 -#  include <stl/config/_cygwin.h>
1574.138 -#  if defined (__GNUC__)
1574.139 -#    include <stl/config/_gcc.h>
1574.140 -#  endif
1574.141 -#elif defined (__MINGW32__)
1574.142 -#  define _STLP_PLATFORM "MinGW"
1574.143 -#  if defined (__GNUC__)
1574.144 -#    include <stl/config/_gcc.h>
1574.145 -#  endif
1574.146 -#  include <stl/config/_windows.h>
1574.147 -#elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__) || \
1574.148 -      defined (__WIN16) || defined (WIN16) || defined (_WIN16)
1574.149 -#  if defined ( __BORLANDC__ )  /* Borland C++ ( 4.x - 5.x ) */
1574.150 -#    include <stl/config/_bc.h>
1574.151 -#  elif defined (__WATCOM_CPLUSPLUS__) || defined (__WATCOMC__)  /* Watcom C++ */
1574.152 -#    include <stl/config/_watcom.h>
1574.153 -#  elif defined (__COMO__) || defined (__COMO_VERSION_)
1574.154 -#    include <stl/config/_como.h>
1574.155 -#  elif defined (__DMC__)   /* Digital Mars C++ */
1574.156 -#    include <stl/config/_dm.h>
1574.157 -#  elif defined (__SC__) && (__SC__ < 0x800) /* Symantec 7.5 */
1574.158 -#    include <stl/config/_symantec.h>
1574.159 -#  elif defined (__ICL) /* Intel reference compiler for Win */
1574.160 -#    include <stl/config/_intel.h>
1574.161 -#  elif defined (__MWERKS__)
1574.162 -#    include <stl/config/_mwerks.h>
1574.163 -#  elif defined (_MSC_VER) && (_MSC_VER >= 1200) && defined (UNDER_CE)
1574.164 -     /* Microsoft eMbedded Visual C++ 3.0, 4.0 (.NET) */
1574.165 -#    include <stl/config/_evc.h>
1574.166 -#  elif defined (_MSC_VER)
1574.167 -    /* Microsoft Visual C++ 6.0, 7.0, 7.1, 8.0 */
1574.168 -#    include <stl/config/_msvc.h>
1574.169 -#  endif
1574.170 -
1574.171 -#  include <stl/config/_windows.h>
1574.172 -#else
1574.173 -#  error Unknown platform !!
1574.174 -#endif
1574.175 -
1574.176 -#if !defined (_STLP_COMPILER)
1574.177 -/* Unable to identify the compiler, issue error diagnostic.
1574.178 - * Edit <config/stl_mycomp.h> to set STLport up for your compiler. */
1574.179 -#  include <stl/config/stl_mycomp.h>
1574.180 -#endif
1574.181 -
1574.182 -#endif /* __stl_config__system_h */
  1575.1 --- a/epoc32/include/tools/stlport/stl/config/_windows.h	Tue Mar 16 16:12:26 2010 +0000
  1575.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1575.3 @@ -1,209 +0,0 @@
  1575.4 -/*
  1575.5 - * Copyright (c) 1997-1999
  1575.6 - * Silicon Graphics Computer Systems, Inc.
  1575.7 - *
  1575.8 - * Copyright (c) 1999
  1575.9 - * Boris Fomitchev
 1575.10 - *
 1575.11 - * Copyright (c) 2003
 1575.12 - * Francois Dumont
 1575.13 - *
 1575.14 - * This material is provided "as is", with absolutely no warranty expressed
 1575.15 - * or implied. Any use is at your own risk.
 1575.16 - *
 1575.17 - * Permission to use or copy this software for any purpose is hereby granted
 1575.18 - * without fee, provided the above notices are retained on all copies.
 1575.19 - * Permission to modify the code and to distribute modified code is granted,
 1575.20 - * provided the above notices are retained, and a notice that the code was
 1575.21 - * modified is included with the above copyright notice.
 1575.22 - *
 1575.23 - */
 1575.24 -#ifndef _STLP_INTERNAL_WINDOWS_H
 1575.25 -#define _STLP_INTERNAL_WINDOWS_H
 1575.26 -
 1575.27 -#if !defined (_STLP_PLATFORM)
 1575.28 -#  define _STLP_PLATFORM "Windows"
 1575.29 -#endif
 1575.30 -
 1575.31 -#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN)
 1575.32 -#  if defined (_MIPSEB)
 1575.33 -#    define _STLP_BIG_ENDIAN 1
 1575.34 -#  endif
 1575.35 -#  if defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
 1575.36 -      defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
 1575.37 -      defined (__alpha__)
 1575.38 -#    define _STLP_LITTLE_ENDIAN 1
 1575.39 -#  endif
 1575.40 -#  if defined (__ia64__)
 1575.41 -    /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
 1575.42 -#    if defined (__BIG_ENDIAN__)
 1575.43 -#      define _STLP_BIG_ENDIAN 1
 1575.44 -#    else
 1575.45 -#      define _STLP_LITTLE_ENDIAN 1
 1575.46 -#    endif
 1575.47 -#  endif
 1575.48 -#endif /* _STLP_BIG_ENDIAN */
 1575.49 -
 1575.50 -#if !defined (_STLP_WINDOWS_H_INCLUDED)
 1575.51 -#  define _STLP_WINDOWS_H_INCLUDED
 1575.52 -#  if !(defined ( _STLP_MSVC ) || defined (__BORLANDC__) || defined (__ICL) || defined (__WATCOMC__) || \
 1575.53 -        defined (__MINGW32__) || defined (__DMC__))
 1575.54 -#    if defined (_STLP_USE_MFC)
 1575.55 -#      include <afx.h>
 1575.56 -#    else
 1575.57 -#      include <windows.h>
 1575.58 -#    endif
 1575.59 -#  else
 1575.60 -/* This section serves as a replacement for windows.h header for Visual C++ */
 1575.61 -#    if defined (__cplusplus)
 1575.62 -extern "C" {
 1575.63 -#    endif
 1575.64 -#    if (defined (_M_AMD64) || defined (_M_IA64) || (!defined (_STLP_WCE) && defined (_M_MRX000)) || defined (_M_ALPHA) || \
 1575.65 -        (defined (_M_PPC) && (_STLP_MSVC_LIB >= 1000))) && !defined (RC_INVOKED)
 1575.66 -#      define InterlockedIncrement       _InterlockedIncrement
 1575.67 -#      define InterlockedDecrement       _InterlockedDecrement
 1575.68 -#      define InterlockedExchange        _InterlockedExchange
 1575.69 -/* Here we use a different macro name than the InterlockedExchangePointer SDK function
 1575.70 - * to avoid macro definition conflict as the SDK might already define InterlockedExchangePointer
 1575.71 - * as a macro.
 1575.72 - */
 1575.73 -#      define STLPInterlockedExchangePointer _InterlockedExchangePointer
 1575.74 -#      define _STLP_STDCALL
 1575.75 -#    else
 1575.76 -#      if defined (_MAC)
 1575.77 -#        define _STLP_STDCALL _cdecl
 1575.78 -#      else
 1575.79 -#        define _STLP_STDCALL __stdcall
 1575.80 -#      endif
 1575.81 -#    endif
 1575.82 -
 1575.83 -#    if defined (_STLP_NEW_PLATFORM_SDK)
 1575.84 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long volatile *);
 1575.85 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long volatile *);
 1575.86 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long volatile *, long);
 1575.87 -#      if defined (STLPInterlockedExchangePointer)
 1575.88 -_STLP_IMPORT_DECLSPEC void* _STLP_STDCALL STLPInterlockedExchangePointer(void* volatile *, void*);
 1575.89 -#      endif
 1575.90 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchangeAdd(long volatile *, long);
 1575.91 -#    elif defined (_STLP_WCE)
 1575.92 -
 1575.93 -/* start of eMbedded Visual C++ specific section */
 1575.94 -#      include <windef.h> /* needed for basic windows types */
 1575.95 -
 1575.96 -       /** in SDKs generated with PB5, windef.h somehow includes headers which then
 1575.97 -       define setjmp. */
 1575.98 -#      if (_WIN32_WCE >= 0x500)
 1575.99 -#        define _STLP_NATIVE_SETJMP_H_INCLUDED
1575.100 -#      endif
1575.101 -
1575.102 -#      ifndef _WINBASE_ /* winbase.h already included? */
1575.103 -long WINAPI InterlockedIncrement(long*);
1575.104 -long WINAPI InterlockedDecrement(long*);
1575.105 -long WINAPI InterlockedExchange(long*, long);
1575.106 -#      endif
1575.107 -
1575.108 -#      ifndef __WINDOWS__ /* windows.h already included? */
1575.109 -
1575.110 -#        if defined (x86)
1575.111 -#          include <winbase.h> /* needed for inline versions of Interlocked* functions */
1575.112 -#        endif
1575.113 -
1575.114 -#        ifndef _MFC_VER
1575.115 -
1575.116 -#          define MessageBox MessageBoxW
1575.117 -int WINAPI MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);
1575.118 -
1575.119 -#          define wvsprintf wvsprintfW
1575.120 -int WINAPI wvsprintfW(LPWSTR, LPCWSTR, va_list ArgList);
1575.121 -
1575.122 -void WINAPI ExitThread(DWORD dwExitCode);
1575.123 -
1575.124 -#          if !defined (COREDLL)
1575.125 -#            define _STLP_WCE_WINBASEAPI DECLSPEC_IMPORT
1575.126 -#          else
1575.127 -#            define _STLP_WCE_WINBASEAPI
1575.128 -#          endif
1575.129 -
1575.130 -_STLP_WCE_WINBASEAPI int WINAPI
1575.131 -MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr,
1575.132 -                    int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar);
1575.133 -
1575.134 -_STLP_WCE_WINBASEAPI UINT WINAPI GetACP();
1575.135 -
1575.136 -_STLP_WCE_WINBASEAPI BOOL WINAPI TerminateProcess(HANDLE hProcess, DWORD uExitCode);
1575.137 -
1575.138 -#          define OutputDebugString OutputDebugStringW
1575.139 -void WINAPI OutputDebugStringW(LPCWSTR);
1575.140 -
1575.141 -_STLP_WCE_WINBASEAPI void WINAPI Sleep(DWORD);
1575.142 -
1575.143 -#          undef _STLP_WCE_WINBASEAPI
1575.144 -
1575.145 -#        endif /* !_MFC_VER */
1575.146 -
1575.147 -#      endif /* !__WINDOWS__ */
1575.148 -
1575.149 -/* end of eMbedded Visual C++ specific section */
1575.150 -
1575.151 -#    else
1575.152 -/* boris : for the latest SDK, you may actually need the other version of the declaration (above)
1575.153 - * even for earlier VC++ versions. There is no way to tell SDK versions apart, sorry ...
1575.154 - */
1575.155 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*);
1575.156 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*);
1575.157 -_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long);
1575.158 -#    endif
1575.159 -
1575.160 -#    if !defined (STLPInterlockedExchangePointer)
1575.161 -/* This API function do not exist in the old platform SDK and is equivalent to
1575.162 - * InterlockedExchange on 32 bits platform:
1575.163 - */
1575.164 -#      if defined (__cplusplus)
1575.165 -/* We do not define this function if we are not in a C++ translation unit just
1575.166 - * because of the inline portability issue it would introduce. We will have to
1575.167 - * fix it the day we need this function for a C translation unit.
1575.168 - */
1575.169 -inline
1575.170 -void* _STLP_CALL STLPInterlockedExchangePointer(void* volatile* __a, void* __b) {
1575.171 -#        if defined (_STLP_MSVC)
1575.172 -/* Here MSVC produces warning if 64 bits portability issue is activated.
1575.173 - * MSVC do not see that _STLP_ATOMIC_EXCHANGE_PTR is a macro which content
1575.174 - * is based on the platform, Win32 or Win64
1575.175 - */
1575.176 -#          pragma warning (push)
1575.177 -#          pragma warning (disable : 4311) // pointer truncation from void* to long
1575.178 -#          pragma warning (disable : 4312) // conversion from long to void* of greater size
1575.179 -#        endif
1575.180 -#        if !defined (_STLP_NO_NEW_STYLE_CASTS)
1575.181 -  return reinterpret_cast<void*>(InterlockedExchange(reinterpret_cast<long*>(const_cast<void**>(__a)),
1575.182 -                                                     reinterpret_cast<long>(__b)));
1575.183 -#        else
1575.184 -  return (void*)InterlockedExchange((long*)__a, (long)__b);
1575.185 -#        endif
1575.186 -#        if defined (_STLP_MSVC)
1575.187 -#          pragma warning (pop)
1575.188 -#        endif
1575.189 -}
1575.190 -#      endif
1575.191 -#    endif
1575.192 -
1575.193 -#    if !defined (_STLP_WCE)
1575.194 -_STLP_IMPORT_DECLSPEC void _STLP_STDCALL Sleep(unsigned long);
1575.195 -_STLP_IMPORT_DECLSPEC void _STLP_STDCALL OutputDebugStringA(const char* lpOutputString);
1575.196 -#    endif
1575.197 -
1575.198 -#    if defined (InterlockedIncrement)
1575.199 -#      pragma intrinsic(_InterlockedIncrement)
1575.200 -#      pragma intrinsic(_InterlockedDecrement)
1575.201 -#      pragma intrinsic(_InterlockedExchange)
1575.202 -#      pragma intrinsic(_InterlockedExchangePointer)
1575.203 -#    endif
1575.204 -#    if defined (__cplusplus)
1575.205 -} /* extern "C" */
1575.206 -#    endif
1575.207 -
1575.208 -#  endif /* STL_MSVC __BORLANDC__ __ICL __WATCOMC__ __MINGW32__ __DMC__*/
1575.209 -
1575.210 -#endif /* _STLP_WINDOWS_H_INCLUDED */
1575.211 -
1575.212 -#endif /* _STLP_INTERNAL_WINDOWS_H */
  1576.1 --- a/epoc32/include/tools/stlport/stl/config/compat.h	Tue Mar 16 16:12:26 2010 +0000
  1576.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1576.3 @@ -1,84 +0,0 @@
  1576.4 -
  1576.5 -/*
  1576.6 - * Compatibility section
  1576.7 - * This section sets new-style macros based on old-style ones, for compatibility
  1576.8 - */
  1576.9 -
 1576.10 -#if defined (__STL_DEBUG) && !defined (_STLP_DEBUG)
 1576.11 -#  define _STLP_DEBUG __STL_DEBUG
 1576.12 -#endif
 1576.13 -#if defined (__STL_NO_ANACHRONISMS) && !defined (_STLP_NO_ANACHRONISMS)
 1576.14 -#  define _STLP_NO_ANACHRONISMS __STL_NO_ANACHRONISMS
 1576.15 -#endif
 1576.16 -#if defined (__STL_NO_EXTENSIONS) && !defined (_STLP_NO_EXTENSIONS)
 1576.17 -#  define _STLP_NO_EXTENSIONS __STL_NO_EXTENSIONS
 1576.18 -#endif
 1576.19 -#if defined (__STL_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS)
 1576.20 -#  define _STLP_NO_EXCEPTIONS __STL_NO_EXCEPTIONS
 1576.21 -#endif
 1576.22 -#if defined (__STL_NO_NAMESPACES) && !defined (_STLP_NO_NAMESPACES)
 1576.23 -#  define _STLP_NO_NAMESPACES __STL_NO_NAMESPACES
 1576.24 -#endif
 1576.25 -#if defined (__STL_MINIMUM_DEFAULT_TEMPLATE_PARAMS) && !defined (_STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS)
 1576.26 -#  define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS __STL_MINIMUM_DEFAULT_TEMPLATE_PARAMS
 1576.27 -#endif
 1576.28 -#if defined (__STL_NO_OWN_NAMESPACE) && !defined (_STLP_NO_OWN_NAMESPACE)
 1576.29 -#  define _STLP_NO_OWN_NAMESPACE __STL_NO_OWN_NAMESPACE
 1576.30 -#endif
 1576.31 -
 1576.32 -#if defined (__STL_NO_RELOPS_NAMESPACE) && !defined (_STLP_NO_RELOPS_NAMESPACE)
 1576.33 -#  define _STLP_NO_RELOPS_NAMESPACE __STL_NO_RELOPS_NAMESPACE
 1576.34 -#endif
 1576.35 -
 1576.36 -#if defined (__STL_DEBUG_UNINITIALIZED) && !defined (_STLP_DEBUG_UNINITIALIZED)
 1576.37 -#  define _STLP_DEBUG_UNINITIALIZED __STL_DEBUG_UNINITIALIZED
 1576.38 -#endif
 1576.39 -#if defined (__STL_SHRED_BYTE) && !defined (_STLP_SHRED_BYTE)
 1576.40 -#  define _STLP_SHRED_BYTE __STL_SHRED_BYTE
 1576.41 -#endif
 1576.42 -#if defined (__STL_USE_MFC) && !defined (_STLP_USE_MFC)
 1576.43 -#  define _STLP_USE_MFC __STL_USE_MFC
 1576.44 -#endif
 1576.45 -
 1576.46 -#if defined (__STL_USE_NEWALLOC) && !defined (_STLP_USE_NEWALLOC)
 1576.47 -#  define _STLP_USE_NEWALLOC __STL_USE_NEWALLOC
 1576.48 -#endif
 1576.49 -#if defined (__STL_USE_MALLOC) && !defined (_STLP_USE_MALLOC)
 1576.50 -#  define _STLP_USE_MALLOC __STL_USE_MALLOC
 1576.51 -#endif
 1576.52 -
 1576.53 -#if defined (__STL_DEBUG_ALLOC) && !defined (_STLP_DEBUG_ALLOC)
 1576.54 -#  define _STLP_DEBUG_ALLOC __STL_DEBUG_ALLOC
 1576.55 -#endif
 1576.56 -
 1576.57 -#if defined (__STL_DEBUG_MESSAGE) && !defined (_STLP_DEBUG_MESSAGE)
 1576.58 -#  define _STLP_DEBUG_MESSAGE __STL_DEBUG_MESSAGE
 1576.59 -#endif
 1576.60 -
 1576.61 -#if defined (__STL_DEBUG_TERMINATE) && !defined (_STLP_DEBUG_TERMINATE)
 1576.62 -#  define _STLP_DEBUG_TERMINATE __STL_DEBUG_TERMINATE
 1576.63 -#endif
 1576.64 -
 1576.65 -#if defined (__STL_USE_ABBREVS) && !defined (_STLP_USE_ABBREVS)
 1576.66 -#  define _STLP_USE_ABBREVS __STL_USE_ABBREVS
 1576.67 -#endif
 1576.68 -
 1576.69 -#if defined (__STL_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_NO_MSVC50_COMPATIBILITY)
 1576.70 -#  define _STLP_NO_MSVC50_COMPATIBILITY __STL_NO_MSVC50_COMPATIBILITY
 1576.71 -#endif
 1576.72 -
 1576.73 -#if defined (__STL_USE_RAW_SGI_ALLOCATORS) && !defined (_STLP_USE_RAW_SGI_ALLOCATORS)
 1576.74 -#  define _STLP_USE_RAW_SGI_ALLOCATORS __STL_USE_RAW_SGI_ALLOCATORS
 1576.75 -#endif
 1576.76 -
 1576.77 -/* STLport do not support anymore the iostream wrapper mode so this macro should
 1576.78 - * always been define for other libraries that was using it:
 1576.79 - */
 1576.80 -#if !defined (_STLP_OWN_IOSTREAMS)
 1576.81 -#  define _STLP_OWN_IOSTREAMS
 1576.82 -#endif
 1576.83 -
 1576.84 -#if defined (_STLP_NO_OWN_IOSTREAMS)
 1576.85 -#  error STLport do not support anymore the wrapper mode. If you want to use STLport \
 1576.86 -use its iostreams implementation or no iostreams at all.
 1576.87 -#endif
  1577.1 --- a/epoc32/include/tools/stlport/stl/config/features.h	Tue Mar 16 16:12:26 2010 +0000
  1577.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1577.3 @@ -1,1194 +0,0 @@
  1577.4 - /*
  1577.5 -  *
  1577.6 -  * Copyright (c) 1994
  1577.7 -  * Hewlett-Packard Company
  1577.8 -  *
  1577.9 -  * Copyright (c) 1996,1997
 1577.10 -  * Silicon Graphics Computer Systems, Inc.
 1577.11 -  *
 1577.12 -  * Copyright (c) 1997
 1577.13 -  * Moscow Center for SPARC Technology
 1577.14 -  *
 1577.15 -  * Copyright (c) 1999
 1577.16 -  * Boris Fomitchev
 1577.17 -  *
 1577.18 -  * This material is provided "as is", with absolutely no warranty expressed
 1577.19 -  * or implied. Any use is at your own risk.
 1577.20 -  *
 1577.21 -  * Permission to use or copy this software for any purpose is hereby granted
 1577.22 -  * without fee, provided the above notices are retained on all copies.
 1577.23 -  * Permission to modify the code and to distribute modified code is granted,
 1577.24 -  * provided the above notices are retained, and a notice that the code was
 1577.25 -  * modified is included with the above copyright notice.
 1577.26 -  *
 1577.27 -  */
 1577.28 -
 1577.29 -#ifndef _STLP_FEATURES_H
 1577.30 -#define _STLP_FEATURES_H
 1577.31 -
 1577.32 -/*
 1577.33 - * Purpose of this file:
 1577.34 - *
 1577.35 - * Defines all STLport settings.
 1577.36 - * This file is actually a wrapper : it includes compiler-specific
 1577.37 - * settings from <config/stlcomp.h>
 1577.38 - * and user-defined settings from <stl_user_config.h>.
 1577.39 - * See <config/stl_mycomp.h> and <stl_user_config.h> for the description
 1577.40 - * of those macros
 1577.41 - *
 1577.42 - */
 1577.43 -
 1577.44 -/* Definition of the STLport version informations */
 1577.45 -#include <stl/_stlport_version.h>
 1577.46 -
 1577.47 -/* Other macros defined by this file:
 1577.48 -
 1577.49 - * bool, true, and false, if _STLP_NO_BOOL is defined.
 1577.50 - * typename, as a null macro if it's not already a keyword.
 1577.51 - * explicit, as a null macro if it's not already a keyword.
 1577.52 - * namespace-related macros (_STLP_STD, _STLP_BEGIN_NAMESPACE, etc.)
 1577.53 - * exception-related macros (_STLP_TRY, _STLP_UNWIND, etc.)
 1577.54 - * _STLP_ASSERT, either as a test or as a null macro, depending on
 1577.55 -   whether or not _STLP_ASSERTIONS is defined.
 1577.56 -*/
 1577.57 -
 1577.58 -/* Definition of the 2 STLport debug levels */
 1577.59 -#define _STLP_STLPORT_DBG_LEVEL 1
 1577.60 -#define _STLP_STANDARD_DBG_LEVEL 2
 1577.61 -
 1577.62 -/* Placeholder for user to override settings.
 1577.63 - * It could be also used to mask settings from
 1577.64 - * different directories.
 1577.65 - */
 1577.66 -#include <stl/config/user_config.h>
 1577.67 -
 1577.68 -#if defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_LEVEL)
 1577.69 -#  define _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL
 1577.70 -#endif
 1577.71 -
 1577.72 -#if defined (__BUILDING_STLPORT)
 1577.73 -/* For the STLport implementation we can use everything:
 1577.74 - */
 1577.75 -#  if defined (_STLP_NO_ANACHRONISMS)
 1577.76 -#    undef _STLP_NO_ANACHRONISMS
 1577.77 -#  endif
 1577.78 -#  if defined (_STLP_NO_EXTENSIONS)
 1577.79 -#    undef _STLP_NO_EXTENSIONS
 1577.80 -#  endif
 1577.81 -/* Moreover there are things that has no sens:
 1577.82 - */
 1577.83 -#  if defined (_STLP_NO_IOSTREAMS)
 1577.84 -#    error If you do not use iostreams you do not need to build the STLport library.
 1577.85 -#  endif
 1577.86 -#endif
 1577.87 -
 1577.88 -/* ========================================================= */
 1577.89 -/* This file is used for compatibility; it accepts old-style config
 1577.90 -   switches */
 1577.91 -#include <stl/config/compat.h>
 1577.92 -
 1577.93 -/* Common configuration file for this particular installation. */
 1577.94 -#include <stl/config/host.h>
 1577.95 -
 1577.96 -/* Operational Environment specific */
 1577.97 -#include <stl/config/_system.h>
 1577.98 -
 1577.99 -/* ========================================================= */
1577.100 -
1577.101 -/* some fixes to configuration. This also includes modifications
1577.102 - * of STLport switches depending on compiler flags,
1577.103 - * or settings applicable to a group of compilers, such as
1577.104 - * to all who use EDG front-end.
1577.105 - */
1577.106 -#include <stl/config/stl_confix.h>
1577.107 -
1577.108 -#ifdef _STLP_USE_BOOST_SUPPORT
1577.109 -/* We are going to use the boost library support. To limit the problem
1577.110 - * of self referencing headers we have to specify clearly to the boost
1577.111 - * library that the Standard lib is STLport:
1577.112 - */
1577.113 -#  ifndef BOOST_STDLIB_CONFIG
1577.114 -#    define BOOST_STDLIB_CONFIG <boost/config/stdlib/stlport.hpp>
1577.115 -#  endif
1577.116 -#endif
1577.117 -
1577.118 -
1577.119 -/*
1577.120 - * Performs integrity check on user-specified parameters
1577.121 - * and site-specific settings.
1577.122 - */
1577.123 -/*
1577.124 -# include <stl/_check_config.h>
1577.125 -*/
1577.126 -
1577.127 -/* SGI terms */
1577.128 -
1577.129 -#if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES)
1577.130 -#  define _STLP_MEMBER_TEMPLATES 1
1577.131 -#endif
1577.132 -
1577.133 -#if !defined (_STLP_NO_FRIEND_TEMPLATES) && !defined (_STLP_FRIEND_TEMPLATES)
1577.134 -#  define _STLP_FRIEND_TEMPLATES 1
1577.135 -#endif
1577.136 -
1577.137 -#if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1577.138 -#  define _STLP_MEMBER_TEMPLATE_CLASSES 1
1577.139 -#endif
1577.140 -
1577.141 -#if defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
1577.142 -#  define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
1577.143 -#endif
1577.144 -
1577.145 -#if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1577.146 -#  define _STLP_CLASS_PARTIAL_SPECIALIZATION 1
1577.147 -#endif
1577.148 -
1577.149 -#if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
1577.150 -#  define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1
1577.151 -#endif
1577.152 -
1577.153 -#if !defined (_STLP_DONT_USE_SHORT_STRING_OPTIM) && !defined (_STLP_USE_SHORT_STRING_OPTIM)
1577.154 -#  define _STLP_USE_SHORT_STRING_OPTIM 1
1577.155 -#endif
1577.156 -
1577.157 -#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXTENSIONS) && \
1577.158 -   !defined (_STLP_NO_CONTAINERS_EXTENSION) && !defined (_STLP_USE_CONTAINERS_EXTENSION)
1577.159 -#  define _STLP_USE_CONTAINERS_EXTENSION
1577.160 -#endif
1577.161 -
1577.162 -#if defined (_STLP_USE_CONTAINERS_EXTENSION)
1577.163 -#  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
1577.164 -#else
1577.165 -#  define _STLP_TEMPLATE_FOR_CONT_EXT
1577.166 -#endif
1577.167 -
1577.168 -#if defined (_STLP_USE_PTR_SPECIALIZATIONS) && \
1577.169 -    (defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
1577.170 -#  error "Sorry but according the STLport settings your compiler can not support the pointer specialization feature."
1577.171 -#endif
1577.172 -
1577.173 -#if defined (_STLP_NO_IOSTREAMS) && \
1577.174 -   !defined (_STLP_USE_NEWALLOC) && !defined (_STLP_USE_MALLOC)
1577.175 -#  define _STLP_USE_NEWALLOC
1577.176 -#endif
1577.177 -
1577.178 -#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN)
1577.179 -#  if defined (_MIPSEB) || defined (__sparc) || defined (_AIX) || \
1577.180 -      defined (__hpux) || defined (macintosh) || defined (_MAC)
1577.181 -#    define _STLP_BIG_ENDIAN 1
1577.182 -#  elif defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
1577.183 -        defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
1577.184 -        defined (__alpha__)
1577.185 -#    define _STLP_LITTLE_ENDIAN 1
1577.186 -#  elif defined (__ia64__)
1577.187 -    /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
1577.188 -#    if defined (__BIG_ENDIAN__)
1577.189 -#      define _STLP_BIG_ENDIAN 1
1577.190 -#    else
1577.191 -#      define _STLP_LITTLE_ENDIAN 1
1577.192 -#    endif
1577.193 -#  else
1577.194 -#    error "can't determine endianess"
1577.195 -#  endif
1577.196 -#endif /* _STLP_BIG_ENDIAN */
1577.197 -
1577.198 -/* ==========================================================
1577.199 - * final workaround tuning based on given flags
1577.200 - * ========================================================== */
1577.201 -
1577.202 -#ifndef _STLP_UINT32_T
1577.203 -#  define _STLP_UINT32_T unsigned long
1577.204 -#endif
1577.205 -#ifndef _STLP_ABORT
1577.206 -#  define _STLP_ABORT() abort()
1577.207 -#endif
1577.208 -
1577.209 -#if !defined (_STLP_HAS_NO_NAMESPACES)
1577.210 -#  if defined _STLP_NO_NAMESPACES
1577.211 -#    undef _STLP_USE_NAMESPACES
1577.212 -#  else
1577.213 -/* assume it as the default, turn it off later if NO_NAMESPACES selected */
1577.214 -#    undef _STLP_USE_NAMESPACES
1577.215 -#    define _STLP_USE_NAMESPACES 1
1577.216 -#  endif
1577.217 -#endif
1577.218 -
1577.219 -#if defined (_STLP_NO_IOSTREAMS)
1577.220 -#  define _STLP_USE_NO_IOSTREAMS
1577.221 -#endif
1577.222 -
1577.223 -/* Operating system recognition (basic) */
1577.224 -#if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX)  || defined (__NetBSD__) || defined(__OpenBSD__) || defined (__Lynx__)
1577.225 -#  define _STLP_UNIX 1
1577.226 -#elif defined(macintosh) || defined (_MAC)
1577.227 -#  define _STLP_MAC  1
1577.228 -#elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__)
1577.229 -#  define _STLP_WIN32 1
1577.230 -#elif defined (__WIN16) || defined (WIN16) || defined (_WIN16)
1577.231 -#  define _STLP_WIN16
1577.232 -#endif /* __unix */
1577.233 -
1577.234 -#if defined (_STLP_WIN16)
1577.235 -#  define _STLP_LDOUBLE_80
1577.236 -#elif defined(_STLP_WIN32)
1577.237 -#  if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__) || defined (__CYGWIN__)
1577.238 -#    define _STLP_LDOUBLE_64
1577.239 -#  else
1577.240 -#    define _STLP_LDOUBLE_96
1577.241 -#  endif
1577.242 -#elif defined (_STLP_UNIX)
1577.243 -#  if defined (__CYGWIN__)
1577.244 -#    define _STLP_LDOUBLE_96
1577.245 -#  endif
1577.246 -#endif
1577.247 -
1577.248 -#if !defined (_STLP_LDOUBLE_64) && !defined (_STLP_LDOUBLE_80) && !defined (_STLP_LDOUBLE_96) && !defined (_STLP_LDOUBLE_128)
1577.249 -#  define _STLP_LDOUBLE_128
1577.250 -#endif
1577.251 -
1577.252 -#if !defined (_STLP_NO_LONG_DOUBLE)
1577.253 -#  define _STLP_LONGEST_FLOAT_TYPE long double
1577.254 -#else
1577.255 -#  define _STLP_LONGEST_FLOAT_TYPE double
1577.256 -#endif
1577.257 -
1577.258 -/* Native headers access macros */
1577.259 -#include <stl/config/_native_headers.h>
1577.260 -
1577.261 -/*  shared library tune-up */
1577.262 -
1577.263 -#if defined (__BUILDING_STLPORT)
1577.264 -/*  if we are rebuilding right now, place everything here */
1577.265 -#  undef  _STLP_DESIGNATED_DLL
1577.266 -#  define _STLP_DESIGNATED_DLL 1
1577.267 -#endif
1577.268 -
1577.269 -/* Use own namespace always if possible and not explicitly instructed otherwise */
1577.270 -#if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \
1577.271 -   !defined (_STLP_NO_OWN_NAMESPACE)
1577.272 -#  undef  _STLP_USE_OWN_NAMESPACE
1577.273 -#  define _STLP_USE_OWN_NAMESPACE  1
1577.274 -#else
1577.275 -#  undef _STLP_WHOLE_NATIVE_STD
1577.276 -#endif
1577.277 -
1577.278 -#if !defined (_NOTHREADS) && !defined (_STLP_THREADS_DEFINED)
1577.279 -
1577.280 -#  if defined (_PTHREADS)
1577.281 -#    define _STLP_PTHREADS
1577.282 -#    define _STLP_THREADS
1577.283 -#  endif
1577.284 -#  if defined (_UITHREADS)
1577.285 -#    define _STLP_UITHREADS
1577.286 -#    define _STLP_THREADS
1577.287 -#  endif
1577.288 -
1577.289 -#  if defined (__sgi) && !defined (__KCC) && !defined (__GNUC__)
1577.290 -#    define _STLP_SGI_THREADS
1577.291 -#  elif defined (__DECC) || defined (__DECCXX)
1577.292 -#    define _STLP_DEC_THREADS
1577.293 -#  elif defined (_STLP_WIN32) && !defined (_STLP_PTHREADS)
1577.294 -#    define _STLP_WIN32THREADS 1
1577.295 -#  elif ((defined (__sun) && !defined (__linux__)) || defined (_UITHREADS) ) && \
1577.296 -        !defined(_STLP_PTHREADS)
1577.297 -#    define _STLP_UITHREADS
1577.298 -#  elif defined (__OS2__)
1577.299 -#    define _STLP_OS2THREADS
1577.300 -#  elif defined (__BEOS__)
1577.301 -#    define _STLP_BETHREADS
1577.302 -#  elif defined (__MWERKS__) && defined (N_PLAT_NLM) /* (__dest_os == __netware_os) */
1577.303 -#    define _STLP_NWTHREADS
1577.304 -#  else
1577.305 -#    define _STLP_PTHREADS
1577.306 -#  endif /* __sgi */
1577.307 -#  define _STLP_THREADS_DEFINED
1577.308 -#endif
1577.309 -
1577.310 -#if (defined (_REENTRANT) || defined (_THREAD_SAFE) || \
1577.311 -    (defined (_POSIX_THREADS) && defined (__OpenBSD__))) && \
1577.312 -    !defined (_STLP_THREADS)
1577.313 -#  define _STLP_THREADS
1577.314 -#endif /* _REENTRANT */
1577.315 -
1577.316 -#if defined (__linux__) && defined (_STLP_PTHREADS)
1577.317 -/* #  include <features.h> */
1577.318 -
1577.319 -#  if defined (__USE_XOPEN2K) && !defined (_STLP_DONT_USE_PTHREAD_SPINLOCK)
1577.320 -#    define _STLP_USE_PTHREAD_SPINLOCK
1577.321 -#    define _STLP_STATIC_MUTEX _STLP_mutex
1577.322 -#  endif /* __USE_XOPEN2K */
1577.323 -#endif /* __linux__ && _STLP_PTHREADS */
1577.324 -
1577.325 -#if defined (__OpenBSD__) && defined (_POSIX_THREADS) && !defined (_STLP_DONT_USE_PTHREAD_SPINLOCK)
1577.326 -#  define _STLP_USE_PTHREAD_SPINLOCK
1577.327 -#  define _STLP_STATIC_MUTEX _STLP_mutex
1577.328 -#endif
1577.329 -
1577.330 -#ifndef _STLP_STATIC_MUTEX
1577.331 -#  define _STLP_STATIC_MUTEX _STLP_mutex_base
1577.332 -#endif
1577.333 -
1577.334 -#if (defined (_MFC_VER) || defined (_AFXDLL)) && !defined (_STLP_USE_MFC)
1577.335 -#  define _STLP_USE_MFC 1
1577.336 -#endif
1577.337 -
1577.338 -#if defined (_STLP_THREADS)
1577.339 -#  define _STLP_VOLATILE volatile
1577.340 -/* windows.h _MUST be included before bool definition ;( */
1577.341 -#  if defined (_STLP_WIN32THREADS) && defined (_STLP_NO_BOOL)
1577.342 -#    undef  NOMINMAX
1577.343 -#    define NOMINMAX
1577.344 -#    ifdef _STLP_USE_MFC
1577.345 -#      include <afx.h>
1577.346 -#    else
1577.347 -#      include <windows.h>
1577.348 -#    endif
1577.349 -#    define _STLP_WINDOWS_H_INCLUDED
1577.350 -#  endif
1577.351 -#else
1577.352 -#  define _STLP_VOLATILE
1577.353 -#endif
1577.354 -
1577.355 -#if !defined (_STLP_USE_NEW_C_HEADERS) && !defined (_STLP_HAS_NO_NEW_C_HEADERS)
1577.356 -#  define _STLP_USE_NEW_C_HEADERS
1577.357 -#endif
1577.358 -/* disable new-style headers if requested */
1577.359 -#if defined (_STLP_NO_NEW_C_HEADERS)
1577.360 -#  undef _STLP_USE_NEW_C_HEADERS
1577.361 -#endif
1577.362 -
1577.363 -#if !defined (_STLP_STATIC_TEMPLATE_DATA)
1577.364 -#  define _STLP_STATIC_TEMPLATE_DATA 1
1577.365 -#endif
1577.366 -
1577.367 -#if defined (_STLP_BASE_TYPEDEF_BUG)
1577.368 -#  undef  _STLP_BASE_TYPEDEF_OUTSIDE_BUG
1577.369 -#  define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
1577.370 -#endif
1577.371 -
1577.372 -#if defined (_STLP_NESTED_TYPE_PARAM_BUG) || (defined (_STLP_MSVC) && (_STLP_MSVC < 1100))
1577.373 -#  define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG
1577.374 -#endif
1577.375 -
1577.376 -/* SUNpro 4.2 inline string literal bug */
1577.377 -#ifdef _STLP_INLINE_STRING_LITERAL_BUG
1577.378 -#  define _STLP_FIX_LITERAL_BUG(__x) __x = __x;
1577.379 -#else
1577.380 -#  define _STLP_FIX_LITERAL_BUG(__x)
1577.381 -#endif
1577.382 -
1577.383 -#if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
1577.384 -#  undef  _STLP_NO_DEFAULT_NON_TYPE_PARAM
1577.385 -#  define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
1577.386 -#endif
1577.387 -
1577.388 -#define _STLP_NEW new
1577.389 -#define _STLP_PLACEMENT_NEW new
1577.390 -
1577.391 -#ifdef _STLP_DEBUG
1577.392 -#  define _STLP_ASSERTIONS 1
1577.393 -#endif
1577.394 -
1577.395 -#if !defined (_STLP_STATIC_ASSERT)
1577.396 -/* Some compiler support 0 size array so we use negative size array to generate
1577.397 - * a compilation time error.
1577.398 - */
1577.399 -#  define _STLP_STATIC_ASSERT(expr) typedef char __static_assert[expr ? 1 : -1];
1577.400 -#endif
1577.401 -
1577.402 -/* apple mpw exception handling bug */
1577.403 -#ifndef _STLP_MPWFIX_TRY
1577.404 -#  define _STLP_MPWFIX_TRY
1577.405 -#endif
1577.406 -#ifndef _STLP_MPWFIX_CATCH
1577.407 -#  define _STLP_MPWFIX_CATCH
1577.408 -#endif
1577.409 -#ifndef _STLP_MPWFIX_CATCH_ACTION
1577.410 -#  define _STLP_MPWFIX_CATCH_ACTION(action)
1577.411 -#endif
1577.412 -
1577.413 -/* if _STLP_DEBUG or _STLP_ASSERTIONS are set, stl/debug/_debug.h defines those */
1577.414 -
1577.415 -#if !defined (_STLP_ASSERTIONS) && !defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_ALLOC)
1577.416 -#  define _STLP_ASSERT(expr)
1577.417 -#endif
1577.418 -
1577.419 -#if !defined (_STLP_DEBUG)
1577.420 -#  define _STLP_VERBOSE_ASSERT(expr,diagnostic)
1577.421 -#  define _STLP_DEBUG_CHECK(expr)
1577.422 -#  define _STLP_DEBUG_DO(expr)
1577.423 -#endif
1577.424 -
1577.425 -#if !defined (_STLP_WEAK)
1577.426 -#  define _STLP_WEAK
1577.427 -#endif
1577.428 -
1577.429 -/* default parameters as template types derived from arguments ( not always supported ) */
1577.430 -#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
1577.431 -#  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname
1577.432 -#else
1577.433 -#  if !defined (_STLP_DEFAULT_TYPE_PARAM)
1577.434 -#    define _STLP_DEFAULT_TYPE_PARAM 1
1577.435 -#  endif
1577.436 -#  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname = defval
1577.437 -#endif
1577.438 -
1577.439 -/* default parameters as complete types */
1577.440 -#if defined (_STLP_DEFAULT_TYPE_PARAM)
1577.441 -#  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname = defval
1577.442 -#  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name = val
1577.443 -#else
1577.444 -#  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname
1577.445 -#  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name
1577.446 -#endif
1577.447 -
1577.448 -/* SGI compatibility */
1577.449 -
1577.450 -#ifdef _STLP_NO_WCHAR_T
1577.451 -#  ifndef _STLP_NO_NATIVE_WIDE_STREAMS
1577.452 -#    define  _STLP_NO_NATIVE_WIDE_STREAMS 1
1577.453 -#  endif
1577.454 -#else
1577.455 -#  define _STLP_HAS_WCHAR_T 1
1577.456 -#endif
1577.457 -
1577.458 -#if !defined (_STLP_NO_AT_MEMBER_FUNCTION)
1577.459 -#  define _STLP_CAN_THROW_RANGE_ERRORS 1
1577.460 -#endif
1577.461 -
1577.462 -#if !defined (_STLP_USE_RAW_SGI_ALLOCATORS)
1577.463 -#  define _STLP_DEFAULT_ALLOCATOR(_Tp) allocator< _Tp >
1577.464 -#  define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) _STLP_DFL_TMPL_PARAM(_Alloc, allocator< _Tp >)
1577.465 -#  define _STLP_DEFAULT_PAIR_ALLOCATOR(_Key, _Tp) allocator< pair < _Key, _Tp > >
1577.466 -#  if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
1577.467 -#    define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc
1577.468 -#    define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
1577.469 -#  else
1577.470 -#    define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \
1577.471 -            class _Alloc = allocator< pair < _Key, _Tp > >
1577.472 -#  endif
1577.473 -#else
1577.474 -#  define _STLP_DEFAULT_ALLOCATOR( _Tp ) __sgi_alloc
1577.475 -#  define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) _STLP_DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
1577.476 -#  define _STLP_DEFAULT_PAIR_ALLOCATOR( _Key, _Tp ) __sgi_alloc
1577.477 -#  define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) _STLP_DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
1577.478 -#  if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) && !defined (_STLP_DEFAULT_TYPE_PARAM)
1577.479 -#    define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
1577.480 -#  endif
1577.481 -#endif
1577.482 -
1577.483 -/* debug mode tool */
1577.484 -#if defined (_STLP_DEBUG)
1577.485 -#  define _STLP_NON_DBG_NAME(X) _NonDbg_##X
1577.486 -#endif
1577.487 -
1577.488 -/* pointer specialization tool */
1577.489 -#if defined (_STLP_USE_PTR_SPECIALIZATIONS)
1577.490 -#  define _STLP_PTR_IMPL_NAME(X) _Impl_##X
1577.491 -#endif
1577.492 -
1577.493 -#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND)
1577.494 -#  define _STLP_NO_MEM_T_NAME(X) _NoMemT_##X
1577.495 -#  if defined (_STLP_DEBUG)
1577.496 -#    define _STLP_NON_DBG_NO_MEM_T_NAME(X) _NonDbg_NoMemT_##X
1577.497 -#  endif
1577.498 -#endif
1577.499 -
1577.500 -/* this always mean the C library is in global namespace */
1577.501 -#if defined (_STLP_HAS_NO_NEW_C_HEADERS) && !defined (_STLP_VENDOR_GLOBAL_CSTD)
1577.502 -#  define _STLP_VENDOR_GLOBAL_CSTD 1
1577.503 -#endif
1577.504 -
1577.505 -/* Depending of whether compiler supports namespaces,
1577.506 - * tune the parameters for vendor-supplied libraries.
1577.507 - * This section is guarded by _STLP_HAS_NO_NAMESPACES, not by _STLP_USE_NAMESPACES,
1577.508 - * since it depends only on the native features, not on user's preference whether
1577.509 - * to use namespace for STLport or not.
1577.510 - */
1577.511 -#if !defined (_STLP_HAS_NO_NAMESPACES)
1577.512 -/* Import some vendor's headers into corresponding STLport ones if they might be needed
1577.513 - * (if we wrap native iostreams and use namepace other than std::) */
1577.514 -#  if defined (_STLP_WHOLE_NATIVE_STD)
1577.515 -#    define  _STLP_IMPORT_VENDOR_STD 1
1577.516 -#    undef   _STLP_MINIMUM_IMPORT_STD
1577.517 -#  endif
1577.518 -
1577.519 -/* if using stlport:: namespace or if C library stuff is not in vendor's std::,
1577.520 - * try importing 'em.
1577.521 - * MSVC has ambiguity problem when we try to import C-style std:: stuff back into global namespace */
1577.522 -#  if defined (_STLP_USE_NAMESPACES) && (defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD))
1577.523 -#    define  _STLP_IMPORT_VENDOR_CSTD 1
1577.524 -#  endif
1577.525 -
1577.526 -#  if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && !defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS)
1577.527 -#    define _STLP_NO_CSTD_FUNCTION_IMPORTS
1577.528 -#  endif
1577.529 -
1577.530 -#  define _STLP_USING_NAMESPACE(x) using namespace x ;
1577.531 -
1577.532 -namespace std { }
1577.533 -namespace __std_alias = std;
1577.534 -
1577.535 -/* assume std:: namespace for C++ std library if not being told otherwise */
1577.536 -#  if defined (_STLP_VENDOR_GLOBAL_STD)
1577.537 -#    define _STLP_VENDOR_STD
1577.538 -#  else
1577.539 -#    define _STLP_VENDOR_STD __std_alias
1577.540 -#  endif
1577.541 -
1577.542 -/* tune things that come from C library */
1577.543 -#  if  defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS)
1577.544 -/*  in old-style headers, C functions go to global scope. */
1577.545 -#    define _STLP_VENDOR_CSTD
1577.546 -#    define _STLP_USING_VENDOR_CSTD
1577.547 -#  else
1577.548 -#    define _STLP_VENDOR_CSTD  _STLP_VENDOR_STD
1577.549 -#    define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD)
1577.550 -#  endif /* _STLP_VENDOR_CSTD */
1577.551 -/* exception, typeinfo, new - always come from the vendor */
1577.552 -#  if !defined (_STLP_VENDOR_EXCEPT_STD)
1577.553 -#    if defined (_STLP_VENDOR_GLOBAL_EXCEPT_STD)
1577.554 -#      define _STLP_VENDOR_EXCEPT_STD
1577.555 -#    else
1577.556 -#      define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD
1577.557 -#    endif
1577.558 -#  endif
1577.559 -#  define _STLP_OLD_IO_NAMESPACE
1577.560 -#  if !defined (_STLP_VENDOR_MB_NAMESPACE)
1577.561 -#    define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD
1577.562 -#  endif
1577.563 -#else
1577.564 -/* compiler has no namespace support */
1577.565 -#  define _STLP_VENDOR_STD
1577.566 -#  define _STLP_VENDOR_CSTD
1577.567 -#  define _STLP_USING_NAMESPACE(x)
1577.568 -#  define _STLP_USING_VENDOR_CSTD
1577.569 -#  define _STLP_VENDOR_EXCEPT_STD
1577.570 -#endif
1577.571 -
1577.572 -#if defined (_STLP_USE_NAMESPACES)
1577.573 -
1577.574 -#  if defined (_STLP_USE_OWN_NAMESPACE)
1577.575 -#    if !defined (_STLP_STD_NAME)
1577.576 -#      if !defined (_STLP_DEBUG)
1577.577 -#        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
1577.578 -#          ifndef _STLP_THREADS
1577.579 -#            define _STLP_STD_NAME  stlpmtx_std
1577.580 -#          else
1577.581 -#            define _STLP_STD_NAME  stlp_std
1577.582 -#          endif
1577.583 -#        else
1577.584 -#          ifndef _STLP_THREADS
1577.585 -#            define _STLP_STD_NAME  stlpxmtx_std
1577.586 -#          else
1577.587 -#            define _STLP_STD_NAME  stlpx_std
1577.588 -#          endif
1577.589 -#        endif
1577.590 -#      else
1577.591 -/*
1577.592 - * The STLport debug mode is binary incompatible with the other modes,
1577.593 - * lets make it clear on the STLport namespace to generate link errors rather
1577.594 - * than runtime.
1577.595 - */
1577.596 -#        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
1577.597 -#          ifndef _STLP_THREADS
1577.598 -#            define _STLP_STD_NAME  stlpdmtx_std
1577.599 -#          else
1577.600 -#            define _STLP_STD_NAME  stlpd_std
1577.601 -#          endif
1577.602 -#        else
1577.603 -#          ifndef _STLP_THREADS
1577.604 -#            define _STLP_STD_NAME  stlpdxmtx_std
1577.605 -#          else
1577.606 -#            define _STLP_STD_NAME  stlpdx_std
1577.607 -#          endif
1577.608 -#        endif
1577.609 -#      endif
1577.610 -#    endif
1577.611 -namespace _STLP_STD_NAME { }
1577.612 -#  else
1577.613 -#    if defined (_STLP_DEBUG)
1577.614 -namespace stdD = std;
1577.615 -#    endif
1577.616 -#    define _STLP_STD_NAME std
1577.617 -#  endif /* _STLP_USE_OWN_NAMESPACE */
1577.618 -
1577.619 -#  if !defined (_STLP_USING_NAMESPACE_BUG)
1577.620 -#    define _STLP_PRIV_NAME stlp_priv
1577.621 -namespace _STLP_PRIV_NAME {
1577.622 -  using namespace _STLP_STD_NAME;
1577.623 -}
1577.624 -#  else
1577.625 -#    define _STLP_PRIV_NAME priv
1577.626 -#  endif
1577.627 -
1577.628 -#  define _STLP_BEGIN_NAMESPACE namespace _STLP_STD_NAME {
1577.629 -#  define _STLP_END_NAMESPACE }
1577.630 -
1577.631 -#  if !defined (_STLP_DONT_USE_PRIV_NAMESPACE)
1577.632 -#    if !defined (_STLP_USING_NAMESPACE_BUG)
1577.633 -/* We prefer to make private namespace a totaly seperated namespace...
1577.634 - */
1577.635 -#      define _STLP_PRIV ::_STLP_PRIV_NAME::
1577.636 -#      define _STLP_MOVE_TO_PRIV_NAMESPACE } namespace _STLP_PRIV_NAME {
1577.637 -#      define _STLP_MOVE_TO_STD_NAMESPACE } namespace _STLP_STD_NAME {
1577.638 -#    else
1577.639 -/* but sometimes we can't:
1577.640 - */
1577.641 -#      define _STLP_PRIV _STLP_PRIV_NAME::
1577.642 -#      define _STLP_MOVE_TO_PRIV_NAMESPACE namespace _STLP_PRIV_NAME {
1577.643 -#      define _STLP_MOVE_TO_STD_NAMESPACE }
1577.644 -#    endif
1577.645 -#  else
1577.646 -#    define _STLP_PRIV
1577.647 -#    define _STLP_MOVE_TO_PRIV_NAMESPACE
1577.648 -#    define _STLP_MOVE_TO_STD_NAMESPACE
1577.649 -#  endif
1577.650 -
1577.651 -/* decide whether or not we use separate namespace for rel ops */
1577.652 -#  if defined (_STLP_NO_RELOPS_NAMESPACE)
1577.653 -#    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {}
1577.654 -#    define _STLP_END_RELOPS_NAMESPACE }
1577.655 -#  else
1577.656 -/* Use std::rel_ops namespace */
1577.657 -#    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {
1577.658 -#    define _STLP_END_RELOPS_NAMESPACE } }
1577.659 -#    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1577.660 -#  endif /* Use std::rel_ops namespace */
1577.661 -
1577.662 -#  define _STLP_STD ::_STLP_STD_NAME
1577.663 -
1577.664 -/* Official STLport namespace when std is not redefined.
1577.665 - * Here we don't use a macro as stlport is used as file name by boost
1577.666 - * and folder name under beos:
1577.667 - */
1577.668 -namespace stlport = _STLP_STD_NAME;
1577.669 -
1577.670 -/* Backward compatibility:
1577.671 - */
1577.672 -namespace _STL = _STLP_STD_NAME;
1577.673 -#undef __STLPORT_NAMESPACE
1577.674 -#define __STLPORT_NAMESPACE _STLP_STD_NAME
1577.675 -
1577.676 -#else /* _STLP_USE_NAMESPACES */
1577.677 -/* STLport is being put into global namespace */
1577.678 -#  define _STLP_STD
1577.679 -#  define _STLP_PRIV
1577.680 -#  define _STLP_BEGIN_NAMESPACE
1577.681 -#  define _STLP_END_NAMESPACE
1577.682 -#  define _STLP_MOVE_TO_PRIV_NAMESPACE
1577.683 -#  define _STLP_MOVE_TO_STD_NAMESPACE
1577.684 -
1577.685 -/* boris : it was found out that _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1577.686 -   causes less problems than having relational operator templates in global namespace
1577.687 -   Please define _STLP_NO_RELOPS_NAMESPACE in stl_user_config.h if your code rely on them. */
1577.688 -#  if !defined (_STLP_NO_RELOPS_NAMESPACE)
1577.689 -#    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1577.690 -#  endif
1577.691 -#  define _STLP_BEGIN_RELOPS_NAMESPACE
1577.692 -#  define _STLP_END_RELOPS_NAMESPACE
1577.693 -#  undef  _STLP_USE_OWN_NAMESPACE
1577.694 -#endif  /* _STLP_USE_NAMESPACES */
1577.695 -
1577.696 -#define STLPORT_CSTD _STLP_VENDOR_CSTD
1577.697 -#define STLPORT      _STLP_STD_NAME
1577.698 -
1577.699 -#if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG)
1577.700 -#  define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy<T>
1577.701 -#else
1577.702 -#  define _STLP_SIMPLE_TYPE(T) T
1577.703 -#endif
1577.704 -
1577.705 -#ifndef _STLP_RAND48
1577.706 -#  define _STLP_NO_DRAND48
1577.707 -#endif
1577.708 -
1577.709 -/* advanced keywords usage */
1577.710 -#define __C_CAST(__x, __y) ((__x)(__y))
1577.711 -#ifndef  _STLP_NO_NEW_STYLE_CASTS
1577.712 -#  define __CONST_CAST(__x,__y) const_cast<__x>(__y)
1577.713 -#  define __STATIC_CAST(__x,__y) static_cast<__x>(__y)
1577.714 -#  define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y)
1577.715 -#  define __DYNAMIC_CAST(__x,__y) dynamic_cast<__x>(__y)
1577.716 -#else
1577.717 -#  define __STATIC_CAST(__x,__y) __C_CAST(__x, __y)
1577.718 -#  define __CONST_CAST(__x,__y) __C_CAST(__x, __y)
1577.719 -#  define __REINTERPRET_CAST(__x,__y) __C_CAST(__x, __y)
1577.720 -#  define __DYNAMIC_CAST(__x,__y) __C_CAST(__x, __y)
1577.721 -#endif
1577.722 -
1577.723 -#if defined (_STLP_NEED_TYPENAME) && ! defined (typename)
1577.724 -#  define typename
1577.725 -#endif
1577.726 -
1577.727 -#if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE )
1577.728 -#  define _STLP_TYPENAME_ON_RETURN_TYPE
1577.729 -#else
1577.730 -#  define _STLP_TYPENAME_ON_RETURN_TYPE typename
1577.731 -#endif
1577.732 -
1577.733 -#ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
1577.734 -#  define _STLP_HEADER_TYPENAME
1577.735 -#else
1577.736 -#  define _STLP_HEADER_TYPENAME typename
1577.737 -#endif
1577.738 -
1577.739 -#ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD
1577.740 -#  define _STLP_TEMPLATE template
1577.741 -#else
1577.742 -#  define _STLP_TEMPLATE
1577.743 -#endif
1577.744 -
1577.745 -#if defined (_STLP_USE_CONTAINERS_EXTENSION)
1577.746 -#  define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
1577.747 -#  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
1577.748 -#else
1577.749 -#  define _STLP_KEY_TYPE_FOR_CONT_EXT(type) typedef type _KT;
1577.750 -#  define _STLP_TEMPLATE_FOR_CONT_EXT
1577.751 -#endif
1577.752 -
1577.753 -#if defined (_STLP_NEED_EXPLICIT) && !defined (explicit)
1577.754 -#  define explicit
1577.755 -#endif
1577.756 -
1577.757 -#if !defined (_STLP_NEED_MUTABLE)
1577.758 -#  define _STLP_ASSIGN_MUTABLE(type,x,y) x = y
1577.759 -#else
1577.760 -#  define _STLP_ASSIGN_MUTABLE(type,x,y) __CONST_CAST(type,x)=y
1577.761 -#  define mutable
1577.762 -#endif
1577.763 -
1577.764 -#if defined (_STLP_NO_SIGNED_BUILTINS)
1577.765 -/* old HP-UX doesn't understand "signed" keyword */
1577.766 -#  define signed
1577.767 -#endif
1577.768 -
1577.769 -#if defined (_STLP_LOOP_INLINE_PROBLEMS)
1577.770 -#  define _STLP_INLINE_LOOP
1577.771 -#else
1577.772 -#  define _STLP_INLINE_LOOP inline
1577.773 -#endif
1577.774 -
1577.775 -#define _STLP_PRIVATE public
1577.776 -
1577.777 -#ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
1577.778 -#  define _STLP_TEMPLATE_NULL template<>
1577.779 -#else
1577.780 -#  define _STLP_TEMPLATE_NULL
1577.781 -#endif
1577.782 -
1577.783 -#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
1577.784 -#  define _STLP_OPERATOR_TEMPLATE
1577.785 -#else
1577.786 -#  define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL
1577.787 -#endif
1577.788 -
1577.789 -#ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION
1577.790 -/* unless we have other compiler problem, try simulating partial spec here */
1577.791 -#  if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
1577.792 -#    define _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
1577.793 -#  endif
1577.794 -/* For your own iterators, please use inheritance from iterator<> instead of these obsolete queries. */
1577.795 -#  if  (defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
1577.796 -#    if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES )
1577.797 -#      define _STLP_USE_OLD_HP_ITERATOR_QUERIES
1577.798 -#    endif
1577.799 -#  elif defined ( _STLP_NO_ANACHRONISMS )
1577.800 -#    undef _STLP_USE_OLD_HP_ITERATOR_QUERIES
1577.801 -#  endif
1577.802 -#endif
1577.803 -
1577.804 -#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
1577.805 -#  define _STLP_NULL_TMPL_ARGS <>
1577.806 -# else
1577.807 -#  define _STLP_NULL_TMPL_ARGS
1577.808 -#endif
1577.809 -
1577.810 -#if !defined (_STLP_ALLOCATOR_TYPE_DFL)
1577.811 -#  if defined (_STLP_DONT_SUP_DFLT_PARAM)
1577.812 -#    define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
1577.813 -#  endif
1577.814 -#  if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
1577.815 -#    define _STLP_ALLOCATOR_TYPE_DFL
1577.816 -#  else
1577.817 -#    define _STLP_ALLOCATOR_TYPE_DFL = allocator_type()
1577.818 -#  endif
1577.819 -#endif
1577.820 -
1577.821 -/* When the compiler do not correctly initialized the basic types value in default parameters we prefer
1577.822 - * to avoid them to be able to correct this bug.
1577.823 - */
1577.824 -#if defined (_STLP_DEF_CONST_DEF_PARAM_BUG)
1577.825 -#  define _STLP_DONT_SUP_DFLT_PARAM 1
1577.826 -#endif
1577.827 -
1577.828 -#if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR)
1577.829 -#  define _STLP_NO_ARROW_OPERATOR
1577.830 -#endif
1577.831 -
1577.832 -#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1577.833 -#  if !(defined (_STLP_NO_ARROW_OPERATOR)) && \
1577.834 -       !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY)
1577.835 -/* this one is needed for proper reverse_iterator<> operator ->() handling */
1577.836 -#    define _STLP_MSVC50_COMPATIBILITY 1
1577.837 -#  endif
1577.838 -#endif
1577.839 -
1577.840 -#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
1577.841 -#  if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) )
1577.842 -#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1577.843 -   typedef typename _STLP_STD :: reverse_iterator<const_iterator> const_reverse_iterator; \
1577.844 -   typedef typename _STLP_STD :: reverse_iterator<iterator> reverse_iterator
1577.845 -#  elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__)
1577.846 -#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1577.847 -   typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<const_iterator> const_reverse_iterator; \
1577.848 -   typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<iterator> reverse_iterator
1577.849 -#  else
1577.850 -#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1577.851 -   typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator; \
1577.852 -   typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator
1577.853 -#  endif
1577.854 -#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1577.855 -#  if defined (_STLP_MSVC50_COMPATIBILITY)
1577.856 -#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1577.857 -  typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
1577.858 -    const_pointer, difference_type>  const_reverse_iterator; \
1577.859 -  typedef _STLP_STD::__reverse_iterator<iterator, value_type, reference, pointer, difference_type> \
1577.860 -    reverse_iterator
1577.861 -#  else
1577.862 -#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
1577.863 -  typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
1577.864 -    difference_type>  const_reverse_iterator; \
1577.865 -  typedef _STLP_STD::__reverse_iterator<iterator, value_type, \
1577.866 -    reference, difference_type> \
1577.867 -    reverse_iterator
1577.868 -#  endif
1577.869 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1577.870 -
1577.871 -#define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \
1577.872 -        _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator)
1577.873 -#define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \
1577.874 -        _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator)
1577.875 -
1577.876 -#define __IMPORT_CONTAINER_TYPEDEFS(_Super)                              \
1577.877 -    typedef typename _Super::value_type value_type;                      \
1577.878 -    typedef typename _Super::size_type size_type;                        \
1577.879 -    typedef typename _Super::difference_type difference_type;            \
1577.880 -    typedef typename _Super::reference reference;                        \
1577.881 -    typedef typename _Super::const_reference const_reference;            \
1577.882 -    typedef typename _Super::pointer pointer;                            \
1577.883 -    typedef typename _Super::const_pointer const_pointer;                \
1577.884 -    typedef typename _Super::allocator_type allocator_type;
1577.885 -
1577.886 -
1577.887 -#define __IMPORT_ITERATORS(_Super)                                       \
1577.888 -    typedef typename _Super::iterator iterator;                          \
1577.889 -    typedef typename _Super::const_iterator const_iterator;
1577.890 -
1577.891 -#define __IMPORT_REVERSE_ITERATORS(_Super)                                   \
1577.892 -    typedef typename _Super::const_reverse_iterator  const_reverse_iterator; \
1577.893 -    typedef typename _Super::reverse_iterator reverse_iterator;
1577.894 -
1577.895 -#define  __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER)       \
1577.896 -    __derived_name(const _Super& __x) : _SUPER(__x) {}                       \
1577.897 -    _Self& operator=(const _Super& __x) {                                    \
1577.898 -        *(_Super*)this = __x;                                                \
1577.899 -        return *this;                                                        \
1577.900 -    }                                                                        \
1577.901 -    __derived_name(const _Self& __x) : _SUPER(__x) {}                        \
1577.902 -    _Self& operator=(const _Self& __x) {                                     \
1577.903 -        *(_Super*)this = __x;                                                \
1577.904 -        return *this;                                                        \
1577.905 -    }
1577.906 -
1577.907 -#define __IMPORT_WITH_ITERATORS(_Super) \
1577.908 -  __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super)
1577.909 -
1577.910 -#define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \
1577.911 -  __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super)
1577.912 -
1577.913 -#if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG)
1577.914 -#  define __TRIVIAL_CONSTRUCTOR(__type) __type() {}
1577.915 -#else
1577.916 -#  define __TRIVIAL_CONSTRUCTOR(__type)
1577.917 -#endif
1577.918 -
1577.919 -#if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG)
1577.920 -#  define __TRIVIAL_DESTRUCTOR(__type) ~__type() {}
1577.921 -#else
1577.922 -#  define __TRIVIAL_DESTRUCTOR(__type)
1577.923 -#endif
1577.924 -
1577.925 -#define __TRIVIAL_STUFF(__type)  \
1577.926 -  __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type)
1577.927 -
1577.928 -#if defined (_STLP_HAS_NO_EXCEPTIONS)
1577.929 -#  define _STLP_NO_EXCEPTIONS
1577.930 -#endif
1577.931 -
1577.932 -#if !defined (_STLP_DONT_USE_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_USE_EXCEPTIONS)
1577.933 -#  define _STLP_USE_EXCEPTIONS
1577.934 -#endif
1577.935 -
1577.936 -#if defined (_STLP_USE_EXCEPTIONS)
1577.937 -#  define _STLP_TRY try
1577.938 -#  define _STLP_CATCH_ALL catch(...)
1577.939 -#  ifndef _STLP_THROW
1577.940 -#    define _STLP_THROW(x) throw x
1577.941 -#  endif
1577.942 -#  define _STLP_RETHROW throw
1577.943 -
1577.944 -#  define _STLP_UNWIND(action) catch(...) { action; throw; }
1577.945 -
1577.946 -#  ifdef _STLP_THROW_RETURN_BUG
1577.947 -#    define _STLP_RET_AFTER_THROW(data) return data;
1577.948 -#  else
1577.949 -#    define _STLP_RET_AFTER_THROW(data)
1577.950 -#  endif
1577.951 -
1577.952 -/* We do not use exception throw specifications unless we are forced to */
1577.953 -#  if !defined (_STLP_THROWS)
1577.954 -#    define _STLP_THROWS(x)
1577.955 -#  endif
1577.956 -#  if !defined (_STLP_NOTHROW)
1577.957 -#    define _STLP_NOTHROW
1577.958 -#  endif
1577.959 -#else
1577.960 -#  define _STLP_TRY
1577.961 -#  define _STLP_CATCH_ALL if (false)
1577.962 -#  ifndef _STLP_THROW
1577.963 -#    define _STLP_THROW(x)
1577.964 -#  endif
1577.965 -#  define _STLP_RETHROW {}
1577.966 -#  define _STLP_UNWIND(action)
1577.967 -#  define _STLP_THROWS(x)
1577.968 -#  define _STLP_NOTHROW
1577.969 -#  define _STLP_RET_AFTER_THROW(data)
1577.970 -#endif
1577.971 -
1577.972 -/*
1577.973 - * Here we check _STLP_NO_EXCEPTIONS which means that the compiler has no
1577.974 - * exception support but not the _STLP_USE_EXCEPTIONS which simply means
1577.975 - * that the user do not want to use them.
1577.976 - */
1577.977 -#if !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTION_SPEC)
1577.978 -#  define _STLP_THROWS_INHERENTLY(x) throw x
1577.979 -#  define _STLP_NOTHROW_INHERENTLY throw()
1577.980 -#else
1577.981 -#  define _STLP_THROWS_INHERENTLY(x)
1577.982 -#  define _STLP_NOTHROW_INHERENTLY
1577.983 -#endif
1577.984 -
1577.985 -/* STLport function not returning are functions that throw so we translate
1577.986 - * the noreturn functions in throwing functions taking also into account
1577.987 - * exception support activation.
1577.988 - */
1577.989 -#if defined (_STLP_NORETURN_FUNCTION) && !defined (_STLP_NO_EXCEPTIONS) && \
1577.990 -   !defined (_STLP_FUNCTION_THROWS)
1577.991 -#  define _STLP_FUNCTION_THROWS _STLP_NORETURN_FUNCTION
1577.992 -#else
1577.993 -#  define _STLP_FUNCTION_THROWS
1577.994 -#endif
1577.995 -
1577.996 -#if defined(_STLP_NO_BOOL)
1577.997 -#  if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX)
1577.998 -#    include <isynonym.hpp>
1577.999 -#    if defined (__OS400__)
1577.1000 -typedef int bool;
1577.1001 -#    elif !( defined (__xlC__) || defined (_AIX))
1577.1002 -typedef Boolean bool;
1577.1003 -#    endif
1577.1004 -#  else
1577.1005 -#    if defined(_STLP_YVALS_H)
1577.1006 -#      include <yvals.h>
1577.1007 -#    else
1577.1008 -#      if defined (_STLP_DONT_USE_BOOL_TYPEDEF)
1577.1009 -#        define bool int
1577.1010 -#      else
1577.1011 -typedef int bool;
1577.1012 -#      endif
1577.1013 -#      define true 1
1577.1014 -#      define false 0
1577.1015 -#    endif
1577.1016 -#  endif /* __IBMCPP__ */
1577.1017 -#else
1577.1018 -#  define _STLP_BOOL_KEYWORD 1
1577.1019 -#endif /* _STLP_NO_BOOL */
1577.1020 -
1577.1021 -#ifndef _STLP_MPW_EXTRA_CONST
1577.1022 -#  define _STLP_MPW_EXTRA_CONST
1577.1023 -#endif
1577.1024 -
1577.1025 -#ifndef _STLP_DEFAULTCHAR
1577.1026 -#  define _STLP_DEFAULTCHAR char
1577.1027 -#endif
1577.1028 -
1577.1029 -#if defined (_STLP_DEBUG_ALLOC) && !defined (_STLP_ASSERTIONS)
1577.1030 -#  define _STLP_ASSERTIONS 1
1577.1031 -#endif
1577.1032 -
1577.1033 -/* uninitialized value filler */
1577.1034 -#ifndef _STLP_SHRED_BYTE
1577.1035 -/* This value is designed to cause problems if an error occurs */
1577.1036 -#  define _STLP_SHRED_BYTE 0xA3
1577.1037 -#endif /* _STLP_SHRED_BYTE */
1577.1038 -
1577.1039 -/* shared library tune-up */
1577.1040 -#ifndef _STLP_IMPORT_DECLSPEC
1577.1041 -#  define _STLP_IMPORT_DECLSPEC
1577.1042 -#endif
1577.1043 -
1577.1044 -/* a keyword used to instantiate export template */
1577.1045 -#ifndef _STLP_EXPORT_TEMPLATE_KEYWORD
1577.1046 -#  define _STLP_EXPORT_TEMPLATE_KEYWORD
1577.1047 -#endif
1577.1048 -#ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
1577.1049 -#  define _STLP_IMPORT_TEMPLATE_KEYWORD
1577.1050 -#endif
1577.1051 -
1577.1052 -#ifdef _STLP_USE_NO_IOSTREAMS
1577.1053 -/*
1577.1054 - * If we do not use iostreams we do not use the export/import
1577.1055 - * techniques to avoid build of the STLport library.
1577.1056 - */
1577.1057 -#  undef _STLP_USE_DECLSPEC
1577.1058 -/* We also undef USE_DYNAMIC_LIB macro as this macro add some code
1577.1059 - * to use the dynamic (shared) STLport library for some platform/compiler
1577.1060 - * configuration leading to problem when do not link to the STLport lib.
1577.1061 - */
1577.1062 -#  undef _STLP_USE_DYNAMIC_LIB
1577.1063 -#endif
1577.1064 -
1577.1065 -#if  defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC)
1577.1066 -#  if ! defined (_STLP_USE_TEMPLATE_EXPORT)
1577.1067 -/* this setting turns on "extern template" extension use */
1577.1068 -#    define _STLP_USE_TEMPLATE_EXPORT
1577.1069 -#  endif
1577.1070 -#  if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE)
1577.1071 -#    define _STLP_NO_FORCE_INSTANTIATE
1577.1072 -#  endif
1577.1073 -#endif
1577.1074 -
1577.1075 -#if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
1577.1076 -#  define  _STLP_EXPORT _STLP_EXPORT_TEMPLATE_KEYWORD
1577.1077 -#else
1577.1078 -#  define  _STLP_EXPORT _STLP_IMPORT_TEMPLATE_KEYWORD
1577.1079 -#endif
1577.1080 -
1577.1081 -#ifndef _STLP_EXPORT_TEMPLATE
1577.1082 -#  define  _STLP_EXPORT_TEMPLATE _STLP_EXPORT template
1577.1083 -#endif
1577.1084 -
1577.1085 -#if defined (_STLP_USE_DECLSPEC) /* using export/import technique */
1577.1086 -
1577.1087 -#  ifndef _STLP_EXPORT_DECLSPEC
1577.1088 -#    define _STLP_EXPORT_DECLSPEC
1577.1089 -#  endif
1577.1090 -#  ifndef _STLP_IMPORT_DECLSPEC
1577.1091 -#    define _STLP_IMPORT_DECLSPEC
1577.1092 -#  endif
1577.1093 -#  ifndef _STLP_CLASS_EXPORT_DECLSPEC
1577.1094 -#    define _STLP_CLASS_EXPORT_DECLSPEC
1577.1095 -#  endif
1577.1096 -#  ifndef _STLP_CLASS_IMPORT_DECLSPEC
1577.1097 -#    define _STLP_CLASS_IMPORT_DECLSPEC
1577.1098 -#  endif
1577.1099 -#  if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
1577.1100 -#    define  _STLP_DECLSPEC        _STLP_EXPORT_DECLSPEC
1577.1101 -#    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_EXPORT_DECLSPEC
1577.1102 -#  else
1577.1103 -#    define  _STLP_DECLSPEC        _STLP_IMPORT_DECLSPEC   /* Other modules, importing STLport exports */
1577.1104 -#    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_IMPORT_DECLSPEC
1577.1105 -#  endif
1577.1106 -
1577.1107 -#else /* Not using DLL export/import specifications */
1577.1108 -
1577.1109 -#  define _STLP_DECLSPEC
1577.1110 -#  define _STLP_CLASS_DECLSPEC
1577.1111 -
1577.1112 -#endif
1577.1113 -
1577.1114 -#define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
1577.1115 -
1577.1116 -#if defined (_STLP_MSVC) || defined (__ICL)
1577.1117 -#  define _STLP_STATIC_MEMBER_DECLSPEC
1577.1118 -#else
1577.1119 -#  define _STLP_STATIC_MEMBER_DECLSPEC _STLP_DECLSPEC
1577.1120 -#endif
1577.1121 -
1577.1122 -#if !defined (_STLP_CALL)
1577.1123 -#  define _STLP_CALL
1577.1124 -#endif
1577.1125 -
1577.1126 -#ifndef _STLP_USE_NO_IOSTREAMS
1577.1127 -
1577.1128 -#  if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM)
1577.1129 -#    define __USE_STD_IOSTREAM
1577.1130 -#  endif
1577.1131 -
1577.1132 -/* We only need to expose details of streams implementation
1577.1133 -   if we use non-standard i/o or are building STLport*/
1577.1134 -#  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO)
1577.1135 -#    define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1
1577.1136 -#  endif
1577.1137 -
1577.1138 -/* We only need to expose details of global implementation if we are building STLport
1577.1139 -   or have not instantiated everything in the lib */
1577.1140 -#  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE)
1577.1141 -#    undef  _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
1577.1142 -#    define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1
1577.1143 -#  endif
1577.1144 -
1577.1145 -#else /* _STLP_USE_NO_IOSTREAMS */
1577.1146 -/* when we are not using SGI iostreams, we must expose globals, but not streams implementation */
1577.1147 -#  define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
1577.1148 -#endif /* _STLP_USE_NO_IOSTREAMS */
1577.1149 -
1577.1150 -#ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
1577.1151 -#  define _STLP_PSPEC2(t1,t2) < t1,t2 >
1577.1152 -#  define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 >
1577.1153 -#else
1577.1154 -#  define _STLP_PSPEC2(t1,t2)  /* nothing */
1577.1155 -#  define _STLP_PSPEC3(t1,t2,t3)  /* nothing */
1577.1156 -#endif
1577.1157 -
1577.1158 -/* Activation of the partial template workaround:
1577.1159 - */
1577.1160 -#if !defined(_STLP_DONT_USE_PARTIAL_SPEC_WRKD) &&\
1577.1161 -   (!defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || !defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER))
1577.1162 -#  define _STLP_USE_PARTIAL_SPEC_WORKAROUND
1577.1163 -#endif
1577.1164 -
1577.1165 -#ifndef _STLP_USE_NO_IOSTREAMS
1577.1166 -#  define _STLP_NEW_IO_NAMESPACE _STLP_STD
1577.1167 -#  define _STLP_NO_WIDE_STREAMS  _STLP_NO_WCHAR_T
1577.1168 -#endif
1577.1169 -
1577.1170 -#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
1577.1171 -#  define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \
1577.1172 -_TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\
1577.1173 -_TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y)  {return __y < __x;}\
1577.1174 -_TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\
1577.1175 -_TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);}
1577.1176 -#else
1577.1177 -#  define _STLP_RELOPS_OPERATORS(_TMPL, _TP)
1577.1178 -#endif
1577.1179 -
1577.1180 -#if defined ( _STLP_USE_ABBREVS )
1577.1181 -#  include <stl/_abbrevs.h>
1577.1182 -#endif
1577.1183 -
1577.1184 -/* A really useful macro */
1577.1185 -#define _STLP_ARRAY_SIZE(A) sizeof(A) / sizeof(A[0])
1577.1186 -#define _STLP_ARRAY_AND_SIZE(A) A, sizeof(A) / sizeof(A[0])
1577.1187 -
1577.1188 -/* some cleanup */
1577.1189 -#undef _STLP_DONT_USE_BOOL_TYPEDEF
1577.1190 -#undef _STLP_YVALS_H
1577.1191 -#undef _STLP_LOOP_INLINE_PROBLEMS
1577.1192 -#undef _STLP_NEED_EXPLICIT
1577.1193 -#undef _STLP_NEED_TYPENAME
1577.1194 -#undef _STLP_NO_NEW_STYLE_CASTS
1577.1195 -#undef __AUTO_CONFIGURED
1577.1196 -
1577.1197 -#endif /* _STLP_FEATURES_H */
  1578.1 --- a/epoc32/include/tools/stlport/stl/config/host.h	Tue Mar 16 16:12:26 2010 +0000
  1578.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1578.3 @@ -1,265 +0,0 @@
  1578.4 -/*
  1578.5 - * This file defines site configuration.
  1578.6 - */
  1578.7 -
  1578.8 -/*
  1578.9 - * _STLP_NO_THREADS: if defined, STLport don't use any
 1578.10 - * multithreading support. Synonym is _NOTHREADS
 1578.11 - */
 1578.12 -/*
 1578.13 -#define _NOTHREADS
 1578.14 -#define _STLP_NO_THREADS
 1578.15 -*/
 1578.16 -
 1578.17 -/* _PTHREADS: if defined, use POSIX threads for multithreading support. */
 1578.18 -/*
 1578.19 -#define _PTHREADS
 1578.20 -*/
 1578.21 -
 1578.22 -/* compatibility section
 1578.23 - */
 1578.24 -
 1578.25 -#if (defined (_STLP_NOTHREADS) || defined (_STLP_NO_THREADS) || defined (NOTHREADS))
 1578.26 -#  if !defined (_NOTHREADS)
 1578.27 -#    define _NOTHREADS
 1578.28 -#  endif
 1578.29 -#  if !defined (_STLP_NO_THREADS)
 1578.30 -#    define _STLP_NO_THREADS
 1578.31 -#  endif
 1578.32 -#endif
 1578.33 -
 1578.34 -#if !defined(_STLP_USE_DYNAMIC_LIB) && !defined(_STLP_USE_STATIC_LIB)
 1578.35 -/*
 1578.36 - * Turn _STLP_USE_DYNAMIC_LIB to enforce use of .dll version of STLport library.
 1578.37 - * NOTE: please do that only if you know what you are doing!
 1578.38 - * Changing default will require you to change makefiles in "build" accordingly
 1578.39 - * and to rebuild STLPort library!
 1578.40 - * On UNIX, this has no effect, see build/lib/README for make tags.
 1578.41 - * See STLport configuration file (build/lib/configure.bat) for help in building
 1578.42 - * the require library versions.
 1578.43 - */
 1578.44 -/*
 1578.45 -#define _STLP_USE_DYNAMIC_LIB
 1578.46 -*/
 1578.47 -
 1578.48 -/*
 1578.49 - * Turn _STLP_USE_STATIC_LIB to enforce use of static version of STLport library.
 1578.50 - * NOTE: please do that only if you know what you are doing!
 1578.51 - * Changing default will require you to change makefile in "build" accordingly
 1578.52 - * and to rebuild STLPort library!
 1578.53 - * On UNIX, this has no effect, see build/lib/README for make tags.
 1578.54 - * See STLport configuration file (build/lib/configure.bat) for help in building
 1578.55 - * the require library versions.
 1578.56 - */
 1578.57 -/*
 1578.58 -#define _STLP_USE_STATIC_LIB
 1578.59 -*/
 1578.60 -#endif
 1578.61 -
 1578.62 -/*
 1578.63 - * Signal STLport that we are using the cygwin distrib with the -mno-cygwin option.
 1578.64 - * This is similar to a mingw environment except that relative path to native headers
 1578.65 - * is different, this is why we need this macro.
 1578.66 - */
 1578.67 -/*
 1578.68 -#define _STLP_NO_CYGWIN
 1578.69 - */
 1578.70 -
 1578.71 -/*
 1578.72 - * Edit relative path below (or put full path) to get native
 1578.73 - * compiler vendor's headers included. Default is "../include"
 1578.74 - * for _STLP_NATIVE_INCLUDE_PATH, default for other macros is
 1578.75 - * _STLP_NATIVE_INCLUDE_PATH.
 1578.76 - * Hint: never install STLport in the directory that ends with "include"
 1578.77 - */
 1578.78 -/*
 1578.79 -#undef _STLP_NATIVE_INCLUDE_PATH
 1578.80 -#define _STLP_NATIVE_INCLUDE_PATH ../include
 1578.81 -*/
 1578.82 -/* same for C library headers like <cstring> */
 1578.83 -/*
 1578.84 -#undef _STLP_NATIVE_CPP_C_INCLUDE_PATH
 1578.85 -#define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1578.86 -*/
 1578.87 -/* same for C headers like <string.h> */
 1578.88 -/*
 1578.89 -#undef _STLP_NATIVE_C_INCLUDE_PATH
 1578.90 -#define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1578.91 -*/
 1578.92 -/* Some compilers locate basic C++ runtime support headers (<new>, <typeinfo>, <exception>) in separate directory */
 1578.93 -/*
 1578.94 -#undef _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH
 1578.95 -#define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
 1578.96 -*/
 1578.97 -
 1578.98 -/*
 1578.99 - * If namespases available, STLport use own namespace (and masquerade
1578.100 - * it as std). Disable own namespace may cause undefined behaviour.
1578.101 - */
1578.102 -/*
1578.103 -#define _STLP_NO_OWN_NAMESPACE  1
1578.104 -*/
1578.105 -
1578.106 -/*
1578.107 - * Uncomment _STLP_LEAKS_PEDANTIC to force deallocation of ALL allocated
1578.108 - * memory chunks. Normally not required. But if you worry about quazi-leaks
1578.109 - * (may be reported by some leaks detection tools), use
1578.110 - * _STLP_LEAKS_PEDANTIC. It should be used with _STLP_USE_NEWALLOC or
1578.111 - * _STLP_USE_MALLOC (see below), the default node_alloc allocator also clean
1578.112 - * its internal memory pool but only if STLport is used as a dynamic library
1578.113 - * under Win32 (using MSVC like compilers).
1578.114 - */
1578.115 -/*
1578.116 -#define _STLP_LEAKS_PEDANTIC 1
1578.117 -*/
1578.118 -
1578.119 -/*
1578.120 - * Uncomment _STLP_USE_NEWALLOC to force allocator<T> to use plain "new"
1578.121 - * instead of STLport optimized node allocator engine.
1578.122 - */
1578.123 -/*
1578.124 -#define _STLP_USE_NEWALLOC 1
1578.125 -*/
1578.126 -
1578.127 -/*
1578.128 - * Uncomment _STLP_USE_MALLOC to force allocator<T> to use plain "malloc"
1578.129 - * instead of STLport optimized node allocator engine.
1578.130 - */
1578.131 -/*
1578.132 -#define _STLP_USE_MALLOC 1
1578.133 -*/
1578.134 -
1578.135 -/*
1578.136 - * Uncomment _STLP_USE_PERTHREAD_ALLOC to force allocator<T> to use
1578.137 - * a specific implementation targetting the massively multi-threaded
1578.138 - * environment. The implementation is based on the POSIX pthread
1578.139 - * interface.
1578.140 - */
1578.141 -/*
1578.142 -#define _STLP_USE_PERTHREAD_ALLOC 1
1578.143 -*/
1578.144 -
1578.145 -/*
1578.146 - * Set _STLP_DEBUG_ALLOC to use allocators that perform memory debugging,
1578.147 - * such as padding/checking for memory consistency
1578.148 - */
1578.149 -/*
1578.150 -#define _STLP_DEBUG_ALLOC 1
1578.151 -*/
1578.152 -
1578.153 -/*
1578.154 - * For compiler not supporting partial template specialization or ordering of
1578.155 - * template functions STLport implement a workaround based on inheritance
1578.156 - * detection. This inheritance can introduce trouble in client code when
1578.157 - * a user class derived a STL container (which is not advised as STL containers
1578.158 - * do not have virtual destructors). To disable this workaround turn this macro on:
1578.159 - */
1578.160 -/*
1578.161 -#define _STLP_DONT_USE_PARTIAL_SPEC_WRKD 1
1578.162 -*/
1578.163 -
1578.164 -/*
1578.165 - * Uncomment this to force all debug diagnostic to be directed through a
1578.166 - * user-defined global function:
1578.167 - *  void __stl_debug_message(const char * format_str, ...)
1578.168 - * instead of predefined STLport routine.
1578.169 - * This allows you to take control of debug message output.
1578.170 - * Default routine calls fprintf(stderr,...)
1578.171 - * Note : If you set this macro, you must supply __stl_debug_message
1578.172 - * function definition somewhere.
1578.173 - */
1578.174 -/*
1578.175 -#define _STLP_DEBUG_MESSAGE 1
1578.176 -*/
1578.177 -
1578.178 -/*
1578.179 - * Uncomment this to force all failed assertions to be executed through
1578.180 - * user-defined global function:
1578.181 - *  void __stl_debug_terminate(void). This allows
1578.182 - * you to take control of assertion behaviour for debugging purposes.
1578.183 - * Default routine calls _STLP_ABORT().
1578.184 - * Note : If you set this macro, you must supply __stl_debug_terminate
1578.185 - * function definition somewhere.
1578.186 - */
1578.187 -/*
1578.188 -#define _STLP_DEBUG_TERMINATE 1
1578.189 -*/
1578.190 -
1578.191 -/*
1578.192 - * Uncomment that to disable exception handling code
1578.193 - */
1578.194 -/*
1578.195 -#define _STLP_DONT_USE_EXCEPTIONS 1
1578.196 -*/
1578.197 -
1578.198 -/*
1578.199 - * _STLP_NO_NAMESPACES: if defined, don't put the library in namespace
1578.200 - * stlport:: or std::, even if the compiler supports namespaces
1578.201 - */
1578.202 -/*
1578.203 -#define _STLP_NO_NAMESPACES 1
1578.204 -*/
1578.205 -
1578.206 -/*==========================================================
1578.207 - * Compatibility section
1578.208 - *==========================================================*/
1578.209 -
1578.210 -/*
1578.211 - * Use abbreviated class names for linker benefit (don't affect interface).
1578.212 - * This option is obsolete, but should work in this release.
1578.213 - *
1578.214 - */
1578.215 -/*
1578.216 -#define _STLP_USE_ABBREVS
1578.217 -*/
1578.218 -
1578.219 -/*
1578.220 - * This definition precludes STLport reverse_iterator to be compatible with
1578.221 - * other parts of MSVC library. (With partial specialization, it just
1578.222 - * has no effect).
1578.223 - * Use it _ONLY_ if you use SGI-style reverse_iterator<> template explicitly
1578.224 - */
1578.225 -/*
1578.226 -#define _STLP_NO_MSVC50_COMPATIBILITY 1
1578.227 -*/
1578.228 -
1578.229 -/*
1578.230 - * _STLP_USE_RAW_SGI_ALLOCATORS is a hook so that users can disable use of
1578.231 - * allocator<T> as default parameter for containers, and use SGI
1578.232 - * raw allocators as default ones, without having to edit library headers.
1578.233 - * Use of this macro is strongly discouraged.
1578.234 - */
1578.235 -/*
1578.236 -#define _STLP_USE_RAW_SGI_ALLOCATORS 1
1578.237 -*/
1578.238 -
1578.239 -/*
1578.240 - * Use obsolete overloaded template functions iterator_category(), value_type(), distance_type()
1578.241 - * for querying iterator properties. Please note those names are non-standard and are not guaranteed
1578.242 - * to be used by every implementation. However, this setting is on by default when partial specialization
1578.243 - * is not implemented in the compiler and cannot be simulated (only if _STLP_NO_ANACHRONISMS is not set).
1578.244 - * Use of those interfaces for user-defined iterators is strongly discouraged:
1578.245 - * please use public inheritance from iterator<> template to achieve desired effect.
1578.246 - * Second form is to disable old-style queries in any case.
1578.247 - */
1578.248 -/*
1578.249 -#define _STLP_USE_OLD_HP_ITERATOR_QUERIES
1578.250 -#define _STLP_NO_OLD_HP_ITERATOR_QUERIES
1578.251 -*/
1578.252 -
1578.253 -
1578.254 -/*==========================================================================*/
1578.255 -
1578.256 -/* This section contains swithes which should be off by default,
1578.257 - * but so few compilers would have it undefined, so that we set them here,
1578.258 - * with the option to be turned off later in compiler-specific file
1578.259 - */
1578.260 -
1578.261 -#define _STLP_NO_UNCAUGHT_EXCEPT_SUPPORT
1578.262 -#define _STLP_NO_UNEXPECTED_EXCEPT_SUPPORT
1578.263 -
1578.264 -/*
1578.265 -  Local Variables:
1578.266 -  mode:C++
1578.267 -  End:
1578.268 -*/
  1579.1 --- a/epoc32/include/tools/stlport/stl/config/user_config.h	Tue Mar 16 16:12:26 2010 +0000
  1579.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1579.3 @@ -1,312 +0,0 @@
  1579.4 -/*
  1579.5 - * Copyright (c) 1999
  1579.6 - * Boris Fomitchev
  1579.7 - *
  1579.8 - * This material is provided "as is", with absolutely no warranty expressed
  1579.9 - * or implied. Any use is at your own risk.
 1579.10 - *
 1579.11 - * Permission to use or copy this software for any purpose is hereby granted
 1579.12 - * without fee, provided the above notices are retained on all copies.
 1579.13 - * Permission to modify the code and to distribute modified code is granted,
 1579.14 - * provided the above notices are retained, and a notice that the code was
 1579.15 - * modified is included with the above copyright notice.
 1579.16 - */
 1579.17 -
 1579.18 -/*
 1579.19 - * Purpose of this file :
 1579.20 - *
 1579.21 - * To hold user-definable portion of STLport settings which may be overridden
 1579.22 - * on per-project basis.
 1579.23 - * Please note that if you use STLport iostreams (compiled library) then you have
 1579.24 - * to use consistent settings when you compile STLport library and your project.
 1579.25 - * Those settings are defined in host.h and have to be the same for a given
 1579.26 - * STLport installation.
 1579.27 - */
 1579.28 -
 1579.29 -
 1579.30 -/*==========================================================
 1579.31 - * User-settable macros that control compilation:
 1579.32 - *              Features selection
 1579.33 - *==========================================================*/
 1579.34 -
 1579.35 -/*
 1579.36 - * Use this switch for embedded systems where no iostreams are available
 1579.37 - * at all. STLport own iostreams will also get disabled automatically then.
 1579.38 - * You can either use STLport iostreams, or no iostreams.
 1579.39 - * If you want iostreams, you have to compile library in ../build/lib
 1579.40 - * and supply resulting library at link time.
 1579.41 - */
 1579.42 -/*
 1579.43 -#define _STLP_NO_IOSTREAMS 1
 1579.44 -*/
 1579.45 -
 1579.46 -/*
 1579.47 - * Set _STLP_DEBUG to turn the "Debug Mode" on.
 1579.48 - * That gets you checked iterators/ranges in the manner
 1579.49 - * of "Safe STL". Very useful for debugging. Thread-safe.
 1579.50 - * Please do not forget to link proper STLport library flavor
 1579.51 - * (e.g libstlportstlg.so or libstlportstlg.a) when you set this flag
 1579.52 - * in STLport iostreams mode, namespace customization guaranty that you
 1579.53 - * link to the right library.
 1579.54 - */
 1579.55 -/*
 1579.56 -#define _STLP_DEBUG 1
 1579.57 -*/
 1579.58 -/*
 1579.59 - * You can also choose the debug level:
 1579.60 - * STLport debug level: Default value
 1579.61 - *                      Check only what the STLport implementation consider as invalid.
 1579.62 - *                      It also change the iterator invalidation schema.
 1579.63 - * Standard debug level: Check for all operations the standard consider as "undefined behavior"
 1579.64 - *                       even if STlport implement it correctly. It also invalidates iterators
 1579.65 - *                       more often.
 1579.66 - */
 1579.67 -/*
 1579.68 -#define   _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL
 1579.69 -#define   _STLP_DEBUG_LEVEL _STLP_STANDARD_DBG_LEVEL
 1579.70 -*/
 1579.71 -/* When an inconsistency is detected by the 'safe STL' the program will abort.
 1579.72 - * If you prefer an exception define the following macro. The thrown exception
 1579.73 - * will be the Standard runtime_error exception.
 1579.74 - */
 1579.75 -/*
 1579.76 -#define _STLP_DEBUG_MODE_THROWS
 1579.77 - */
 1579.78 -
 1579.79 -/*
 1579.80 - * _STLP_NO_CUSTOM_IO : define this if you do not instantiate basic_xxx iostream
 1579.81 - * classes with custom types (which is most likely the case). Custom means types
 1579.82 - * other than char, wchar_t, char_traits<> and allocator<> like
 1579.83 - * basic_ostream<my_char_type, my_traits<my_char_type> > or
 1579.84 - * basic_string<char, char_traits<char>, my_allocator >
 1579.85 - * When this option is on, most non-inline template functions definitions for iostreams
 1579.86 - * are not seen by the client which saves a lot of compile time for most compilers,
 1579.87 - * also object and executable size for some.
 1579.88 - * Default is off, just not to break compilation for those who do use those types.
 1579.89 - * That also guarantees that you still use optimized standard i/o when you compile
 1579.90 - * your program without optimization. Option does not affect STLport library build; you
 1579.91 - * may use the same binary library with and without this option, on per-project basis.
 1579.92 - */
 1579.93 -/*
 1579.94 -#define _STLP_NO_CUSTOM_IO
 1579.95 -*/
 1579.96 -
 1579.97 -/*
 1579.98 - * _STLP_NO_RELOPS_NAMESPACE: if defined, don't put the relational
 1579.99 - * operator templates (>, <=. >=, !=) in namespace std::rel_ops, even
1579.100 - * if the compiler supports namespaces.
1579.101 - * Note : if the compiler do not support namespaces, those operators are not be provided by default,
1579.102 - * to simulate hiding them into rel_ops. This was proved to resolve many compiler bugs with ambiguity.
1579.103 - */
1579.104 -/*
1579.105 -#define _STLP_NO_RELOPS_NAMESPACE 1
1579.106 -*/
1579.107 -
1579.108 -/*
1579.109 - * If _STLP_USE_OWN_NAMESPACE is in effect, STLport by default will try
1579.110 - * to rename std:: for the user to stlport::. If you do not want this feature,
1579.111 - * please define the following switch and then use stlport::
1579.112 - */
1579.113 -/*
1579.114 -#define _STLP_DONT_REDEFINE_STD 1
1579.115 -*/
1579.116 -
1579.117 -/*
1579.118 - * _STLP_WHOLE_NATIVE_STD : only meaningful in _STLP_USE_OWN_NAMESPACE mode.
1579.119 - * Normally, STLport only imports necessary components from native std:: namespace -
1579.120 - * those not yet provided by STLport (<iostream>, <complex>, etc.)
1579.121 - * and their dependencies (<string>, <stdexcept>).
1579.122 - * You might want everything from std:: being available in std:: namespace when you
1579.123 - * include corresponding STLport header (like STLport <map> provides std::map as well, etc.),
1579.124 - * if you are going to use both stlport:: and std:: components in your code.
1579.125 - * Otherwise this option is not recommended as it increases the size of your object files
1579.126 - * and slows down compilation.
1579.127 - */
1579.128 -/*
1579.129 -#define _STLP_WHOLE_NATIVE_STD
1579.130 -*/
1579.131 -
1579.132 -/*
1579.133 - * Use this option to catch uninitialized members in your classes.
1579.134 - * When it is set, construct() and destroy() fill the class storage
1579.135 - * with _STLP_SHRED_BYTE (see below).
1579.136 - * Note : _STLP_DEBUG and _STLP_DEBUG_ALLOC don't set this option automatically.
1579.137 - */
1579.138 -/*
1579.139 -#define _STLP_DEBUG_UNINITIALIZED 1
1579.140 -#define _STLP_DEBUG_ALLOC 1
1579.141 -*/
1579.142 -
1579.143 -/*
1579.144 - * Uncomment and provide a definition for the byte with which raw memory
1579.145 - * will be filled if _STLP_DEBUG_ALLOC or _STLP_DEBUG_UNINITIALIZED is defined.
1579.146 - * Choose a value which is likely to cause a noticeable problem if dereferenced
1579.147 - * or otherwise abused. A good value may already be defined for your platform; see
1579.148 - * stl/_config.h
1579.149 - */
1579.150 -/*
1579.151 -#define _STLP_SHRED_BYTE 0xA3
1579.152 -*/
1579.153 -
1579.154 -/*
1579.155 - *  This option is for gcc users only and only affects systems where native linker
1579.156 - *  does not let gcc to implement automatic instantiation of static template data members/
1579.157 - *  It is being put in this file as there is no way to check if we are using GNU ld automatically,
1579.158 - *  so it becomes user's responsibility.
1579.159 - */
1579.160 -/*
1579.161 -#define _STLP_GCC_USES_GNU_LD
1579.162 -*/
1579.163 -
1579.164 -/*==========================================================
1579.165 - * Compatibility section
1579.166 - *==========================================================*/
1579.167 -
1579.168 -/*
1579.169 - *  Define this macro to disable anachronistic constructs (like the ones used in HP STL and
1579.170 - *  not included in final standard, etc.
1579.171 - */
1579.172 -/*
1579.173 -#define _STLP_NO_ANACHRONISMS 1
1579.174 -*/
1579.175 -
1579.176 -/*
1579.177 - *  Define this macro to disable STLport extensions (for example, to make sure your code will
1579.178 - *  compile with some other implementation )
1579.179 - */
1579.180 -/*
1579.181 -#define _STLP_NO_EXTENSIONS 1
1579.182 -*/
1579.183 -
1579.184 -/*
1579.185 - * You should define this macro if compiling with MFC - STLport <stl/_config.h>
1579.186 - * then include <afx.h> instead of <windows.h> to get synchronisation primitives
1579.187 - */
1579.188 -/*
1579.189 -#define _STLP_USE_MFC 1
1579.190 -*/
1579.191 -
1579.192 -/*
1579.193 - * boris : this setting is here as we cannot detect precense of new Platform SDK automatically
1579.194 - * If you are using new PSDK with VC++ 6.0 or lower,
1579.195 - * please define this to get correct prototypes for InterlockedXXX functions
1579.196 - */
1579.197 -/*
1579.198 -#define _STLP_NEW_PLATFORM_SDK 1
1579.199 -*/
1579.200 -
1579.201 -/*
1579.202 - * For the same reason as the one above we are not able to detect easily use
1579.203 - * of the compiler coming with the Platform SDK instead of the one coming with
1579.204 - * a Microsoft Visual Studio release. This change native C/C++ library location
1579.205 - * and implementation, please define this to get correct STLport configuration.
1579.206 - */
1579.207 -/*
1579.208 -#define _STLP_USING_PLATFORM_SDK_COMPILER 1
1579.209 -*/
1579.210 -
1579.211 -/*
1579.212 - * Some compilers support the automatic linking feature.
1579.213 - * Uncomment the following if you prefer to specify the STLport library
1579.214 - * to link with yourself.
1579.215 - * For the moment, this feature is only supported and implemented within STLport
1579.216 - * by the Microsoft compilers.
1579.217 - */
1579.218 -/*
1579.219 -#define _STLP_DONT_USE_AUTO_LINK 1
1579.220 -*/
1579.221 -
1579.222 -/*
1579.223 - * If you customize the STLport generated library names don't forget to give
1579.224 - * the motif you used during configuration here if you still want the auto link
1579.225 - * to work. (Do not remove double quotes in the macro value)
1579.226 - */
1579.227 -/*
1579.228 -#define _STLP_LIB_NAME_MOTIF "???"
1579.229 - */
1579.230 -
1579.231 -/*
1579.232 - * When using automatic linking (see above), output a message that tells the
1579.233 - * user which lib is getting linked via 'pragma message(..)'.
1579.234 - * This setting has no effect if automatic linking is not active.
1579.235 - */
1579.236 -/*
1579.237 -#define _STLP_VERBOSE_AUTO_LINK 1
1579.238 -*/
1579.239 -
1579.240 -/*
1579.241 - * Use minimum set of default arguments on template classes that have more
1579.242 - * than one - for example map<>, set<>.
1579.243 - * This has effect only if _STLP_LIMITED_DEFAULT_TEMPLATES is on.
1579.244 - * If _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS is set, you'll be able to compile
1579.245 - * set<T> with those compilers, but you'll have to use __set__<T, less<T>>
1579.246 - *
1579.247 - * Affects : map<>, multimap<>, set<>, multiset<>, hash_*<>,
1579.248 - * queue<>, priority_queue<>, stack<>, istream_iterator<>
1579.249 - */
1579.250 -/*
1579.251 -#define _STLP_MINIMUM_DEFAULT_TEMPLATE_PARAMS 1
1579.252 -*/
1579.253 -
1579.254 -/*
1579.255 - * The agregation of strings using the + operator is an expensive operation
1579.256 - * as it requires construction of temporary objects that need memory allocation
1579.257 - * and deallocation. The problem can be even more important if you are adding
1579.258 - * several strings together in a single expression. To avoid this problem STLport
1579.259 - * implement expression template. With this technique addition of 2 strings is not
1579.260 - * a string anymore but a temporary object having a reference to each of the
1579.261 - * original strings involved in the expression. This object carry information
1579.262 - * directly to the destination string to set its size correctly and only make
1579.263 - * a single call to the allocator. This technique also works for the addition of
1579.264 - * N elements where elements are basic_string, C string or a single character.
1579.265 - * The drawback can be longer compilation time and bigger executable size.
1579.266 - * STLport rebuild: Yes
1579.267 - */
1579.268 -/*
1579.269 -#define _STLP_USE_TEMPLATE_EXPRESSION 1
1579.270 -*/
1579.271 -
1579.272 -/*
1579.273 - * By default the STLport basic_string implementation use a little static buffer
1579.274 - * (of 16 chars when writing this doc) to avoid systematically memory allocation
1579.275 - * in case of little basic_string. The drawback of such a method is bigger
1579.276 - * basic_string size and some performance penalty for method like swap. If you
1579.277 - * prefer systematical dynamic allocation turn on this macro.
1579.278 - * STLport rebuild: Yes
1579.279 - */
1579.280 -/*
1579.281 -#define _STLP_DONT_USE_SHORT_STRING_OPTIM 1
1579.282 -*/
1579.283 -
1579.284 -/*
1579.285 - * To reduce the famous code bloat trouble due to the use of templates STLport grant
1579.286 - * a specialization of some containers for pointer types. So all instanciations
1579.287 - * of those containers with a pointer type will use the same implementation based on
1579.288 - * a container of void*. This feature has show very good result on object files size
1579.289 - * but after link phase and optimization you will only experiment benefit if you use
1579.290 - * many container with pointer types.
1579.291 - */
1579.292 -/*
1579.293 -#define _STLP_USE_PTR_SPECIALIZATIONS 1
1579.294 -*/
1579.295 -
1579.296 -/*
1579.297 - * To achieve many different optimizations within the template implementations STLport
1579.298 - * uses some type traits technique. With this macro you can ask STLport to use the famous
1579.299 - * boost type traits rather than the internal one. The advantages are more compiler
1579.300 - * integration and a better support. If you only define this macro once the STLport has been
1579.301 - * built you just have to add the boost install path within your include path. If you want
1579.302 - * to use this feature at STLport built time you will have to define the
1579.303 - * STLP_BUILD_BOOST_PATH enrironment variable with the value of the boost library path.
1579.304 - */
1579.305 -/*
1579.306 -#define _STLP_USE_BOOST_SUPPORT 1
1579.307 -*/
1579.308 -
1579.309 -/*==========================================================*/
1579.310 -
1579.311 -/*
1579.312 -  Local Variables:
1579.313 -  mode: C++
1579.314 -  End:
1579.315 -*/
  1580.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1580.2 +++ b/epoc32/include/tools/stlport/stl/debug/_debug.c	Wed Mar 31 12:27:01 2010 +0100
  1580.3 @@ -0,0 +1,496 @@
  1580.4 +/*
  1580.5 + * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
  1580.6 + *
  1580.7 + * Copyright (c) 1997
  1580.8 + * Moscow Center for SPARC Technology
  1580.9 + *
 1580.10 + * Copyright (c) 1999 
 1580.11 + * Boris Fomitchev
 1580.12 + *
 1580.13 + * This material is provided "as is", with absolutely no warranty expressed
 1580.14 + * or implied. Any use is at your own risk.
 1580.15 + *
 1580.16 + * Permission to use or copy this software for any purpose is hereby granted 
 1580.17 + * without fee, provided the above notices are retained on all copies.
 1580.18 + * Permission to modify the code and to distribute modified code is granted,
 1580.19 + * provided the above notices are retained, and a notice that the code was
 1580.20 + * modified is included with the above copyright notice.
 1580.21 + *
 1580.22 + */
 1580.23 +
 1580.24 +# ifndef _STLP_DEBUG_C
 1580.25 +#  define  _STLP_DEBUG_C
 1580.26 +
 1580.27 +#if defined ( _STLP_DEBUG )
 1580.28 +
 1580.29 +# ifdef _STLP_THREADS
 1580.30 +#  ifndef _STLP_NEED_MUTABLE 
 1580.31 +#   define _STLP_ACQUIRE_LOCK(_Lock) _Lock._M_acquire_lock();
 1580.32 +#   define _STLP_RELEASE_LOCK(_Lock) _Lock._M_release_lock();
 1580.33 +#  else
 1580.34 +#   define _STLP_ACQUIRE_LOCK(_Lock) ((_STLP_mutex&)_Lock)._M_acquire_lock();
 1580.35 +#   define _STLP_RELEASE_LOCK(_Lock) ((_STLP_mutex&)_Lock)._M_release_lock();
 1580.36 +#  endif /* _STLP_NEED_MUTABLE */
 1580.37 +# else
 1580.38 +#  define _STLP_ACQUIRE_LOCK(_Lock)
 1580.39 +#  define _STLP_RELEASE_LOCK(_Lock)
 1580.40 +# endif /* _STLP_THREADS */
 1580.41 +
 1580.42 +_STLP_BEGIN_NAMESPACE
 1580.43 +
 1580.44 +//==========================================================
 1580.45 +//  global non-inline functions
 1580.46 +//==========================================================
 1580.47 +
 1580.48 +// [ i1, i2)
 1580.49 +template <class _Iterator>
 1580.50 +inline bool  _STLP_CALL
 1580.51 +__in_range_aux(const _Iterator& __it, const _Iterator& __first,
 1580.52 +               const _Iterator& __last, const random_access_iterator_tag &) {
 1580.53 +    return ( __it >= __first && 
 1580.54 +             __it < __last);
 1580.55 +}
 1580.56 +
 1580.57 +template <class _Iterator1, class _Iterator>
 1580.58 +# if defined (_STLP_MSVC) && (_STLP_MSVC >= 1100)
 1580.59 +inline bool _STLP_CALL  __in_range_aux(_Iterator1 __it, const _Iterator& __first,
 1580.60 +# else
 1580.61 +inline bool _STLP_CALL  __in_range_aux(const _Iterator1& __it, const _Iterator& __first,
 1580.62 +# endif
 1580.63 +                                       const _Iterator& __last, const forward_iterator_tag &) {
 1580.64 +    _Iterator1 __i(__first);
 1580.65 +    for (;  __i != __last && __i != __it; ++__i);
 1580.66 +    return (__i!=__last);
 1580.67 +}
 1580.68 +
 1580.69 +# if defined (_STLP_NONTEMPL_BASE_MATCH_BUG)
 1580.70 +template <class _Iterator1, class _Iterator>
 1580.71 +inline bool  _STLP_CALL
 1580.72 +__in_range_aux(const _Iterator1& __it, const _Iterator& __first,
 1580.73 +               const _Iterator& __last, const bidirectional_iterator_tag &) {
 1580.74 +    _Iterator1 __i(__first);
 1580.75 +    for (;  __i != __last && __i != __it; ++__i);
 1580.76 +    return (__i !=__last);
 1580.77 +}
 1580.78 +# endif
 1580.79 +
 1580.80 +template <class _Iterator>
 1580.81 +bool _STLP_CALL  __check_range(const _Iterator& __first, const _Iterator& __last) {
 1580.82 +    _STLP_VERBOSE_RETURN(__valid_range(__first,__last), _StlMsg_INVALID_RANGE )
 1580.83 +    return true;
 1580.84 +}
 1580.85 +
 1580.86 +template <class _Iterator>
 1580.87 +bool _STLP_CALL  __check_range(const _Iterator& __it, 
 1580.88 +                               const _Iterator& __start, const _Iterator& __finish) {
 1580.89 +    _STLP_VERBOSE_RETURN(__in_range(__it,__start, __finish), 
 1580.90 +                         _StlMsg_NOT_IN_RANGE_1)
 1580.91 +    return true;
 1580.92 +}
 1580.93 +
 1580.94 +template <class _Iterator>
 1580.95 +bool _STLP_CALL  __check_range(const _Iterator& __first, const _Iterator& __last, 
 1580.96 +                               const _Iterator& __start, const _Iterator& __finish) {
 1580.97 +    _STLP_VERBOSE_RETURN(__in_range(__first, __last, __start, __finish), 
 1580.98 +                         _StlMsg_NOT_IN_RANGE_2)
 1580.99 +    return true;
1580.100 +}
1580.101 +
1580.102 +//===============================================================
1580.103 +
1580.104 +template <class _Iterator>
1580.105 +void  _STLP_CALL __invalidate_range(const __owned_list* __base, 
1580.106 +                                    const _Iterator& __first,
1580.107 +                                    const _Iterator& __last)
1580.108 +{
1580.109 +    typedef _Iterator* _Safe_iterator_ptr;
1580.110 +    typedef __owned_link _L_type;
1580.111 +    _STLP_ACQUIRE_LOCK(__base->_M_lock)
1580.112 +    _L_type* __pos;
1580.113 +    _L_type* __prev;
1580.114 +
1580.115 +    for (__prev = (_L_type*)&__base->_M_node, __pos= (_L_type*)__prev->_M_next; 
1580.116 +         __pos!=0;) {	    
1580.117 +        if ((!(&__first == (_Iterator*)__pos || &__last == (_Iterator*)__pos))
1580.118 +            &&  __in_range_aux(
1580.119 +			       ((_Iterator*)__pos)->_M_iterator,
1580.120 +			       __first._M_iterator,
1580.121 +			       __last._M_iterator,
1580.122 +			       _STLP_ITERATOR_CATEGORY(__first, _Iterator))) {
1580.123 +	  __pos->_M_owner = 0;
1580.124 +	  __pos = (_L_type*) (__prev->_M_next = __pos->_M_next);
1580.125 +	}
1580.126 +	else {
1580.127 +	  __prev = __pos;
1580.128 +	  __pos=(_L_type*)__pos->_M_next;
1580.129 +	}
1580.130 +    }
1580.131 +    _STLP_RELEASE_LOCK(__base->_M_lock)    
1580.132 +}
1580.133 +
1580.134 +template <class _Iterator>
1580.135 +void  _STLP_CALL __invalidate_iterator(const __owned_list* __base, 
1580.136 +                                       const _Iterator& __it)
1580.137 +{
1580.138 +    typedef __owned_link   _L_type;
1580.139 +    _L_type*  __position, *__prev;
1580.140 +    _STLP_ACQUIRE_LOCK(__base->_M_lock)
1580.141 +    for (__prev = (_L_type*)&__base->_M_node, __position = (_L_type*)__prev->_M_next; 
1580.142 +         __position!= 0;) {
1580.143 +      // this requires safe iterators to be derived from __owned_link
1580.144 +       if ((__position != (_L_type*)&__it) && ((_Iterator*)__position)->_M_iterator ==__it._M_iterator) {
1580.145 +	    __position->_M_owner = 0;
1580.146 +	    __position = (_L_type*) (__prev->_M_next = __position->_M_next);
1580.147 +        }
1580.148 +       else {
1580.149 +	 __prev = __position;
1580.150 +	 __position=(_L_type*)__position->_M_next;
1580.151 +       }
1580.152 +    }
1580.153 +    _STLP_RELEASE_LOCK(__base->_M_lock)
1580.154 +}
1580.155 +
1580.156 +_STLP_END_NAMESPACE
1580.157 +
1580.158 +# endif /* _STLP_DEBUG */
1580.159 +
1580.160 +# if defined (_STLP_EXPOSE_GLOBALS_IMPLEMENTATION)
1580.161 +
1580.162 +// dwa 12/26/99 -- for abort
1580.163 +#  if defined (_STLP_USE_NEW_C_HEADERS)
1580.164 +#   include <cstdlib>
1580.165 +#  else
1580.166 +#   include <stdlib.h>
1580.167 +#  endif
1580.168 +
1580.169 +# if defined (_STLP_WIN32)
1580.170 +#  include <stl/_threads.h>
1580.171 +# endif
1580.172 +
1580.173 +//==========================================================
1580.174 +// .c section
1580.175 +//  owned_list non-inline methods and global functions 
1580.176 +//==========================================================
1580.177 +
1580.178 +#if defined ( _STLP_ASSERTIONS )
1580.179 +
1580.180 +_STLP_BEGIN_NAMESPACE
1580.181 +
1580.182 +# ifndef _STLP_STRING_LITERAL
1580.183 +# define _STLP_STRING_LITERAL(__x) __x
1580.184 +# endif
1580.185 +
1580.186 +# ifdef _STLP_WINCE
1580.187 +#  define _STLP_PERCENT_S "%hs" 
1580.188 +# else
1580.189 +#  define _STLP_PERCENT_S "%s" 
1580.190 +# endif
1580.191 +
1580.192 +# define _STLP_MESSAGE_TABLE_BODY = { \
1580.193 +_STLP_STRING_LITERAL("\n" _STLP_PERCENT_S "(%d): STL error: %s\n"), \
1580.194 +_STLP_STRING_LITERAL(_STLP_PERCENT_S "(%d): STL assertion failure : " _STLP_PERCENT_S "\n" _STLP_ASSERT_MSG_TRAILER), \
1580.195 +_STLP_STRING_LITERAL("\n" _STLP_PERCENT_S "(%d): STL error : " _STLP_PERCENT_S "\n" _STLP_PERCENT_S "(%d): STL assertion failure:     " _STLP_PERCENT_S " \n" _STLP_ASSERT_MSG_TRAILER), \
1580.196 +_STLP_STRING_LITERAL("Invalid argument to operation (see operation documentation)"),                  \
1580.197 +_STLP_STRING_LITERAL("Taking an iterator out of destroyed (or otherwise corrupted) container"),       \
1580.198 +_STLP_STRING_LITERAL("Trying to extract an object out from empty container"),\
1580.199 +_STLP_STRING_LITERAL("Past-the-end iterator could not be erased"),  \
1580.200 +_STLP_STRING_LITERAL("Index out of bounds"),  \
1580.201 +_STLP_STRING_LITERAL("Container doesn't own the iterator"),  \
1580.202 +_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) iterator used"),  \
1580.203 +_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) lefthand iterator in expression"),  \
1580.204 +_STLP_STRING_LITERAL("Uninitialized or invalidated (by mutating operation) righthand iterator in expression"),  \
1580.205 +_STLP_STRING_LITERAL("Iterators used in expression are from different owners"),  \
1580.206 +_STLP_STRING_LITERAL("Iterator could not be dereferenced (past-the-end ?)"),  \
1580.207 +_STLP_STRING_LITERAL("Range [first,last) is invalid"),  \
1580.208 +_STLP_STRING_LITERAL("Iterator is not in range [first,last)"),  \
1580.209 +_STLP_STRING_LITERAL("Range [first,last) is not in range [start,finish)"),  \
1580.210 +_STLP_STRING_LITERAL("The advance would produce invalid iterator"),  \
1580.211 +_STLP_STRING_LITERAL("Iterator is singular (advanced beyond the bounds ?)"),  \
1580.212 +_STLP_STRING_LITERAL("Memory block deallocated twice"),  \
1580.213 +_STLP_STRING_LITERAL("Deallocating a block that was never allocated"),  \
1580.214 +_STLP_STRING_LITERAL("Deallocating a memory block allocated for another type"),  \
1580.215 +_STLP_STRING_LITERAL("Size of block passed to deallocate() doesn't match block size"),  \
1580.216 +_STLP_STRING_LITERAL("Pointer underrun - safety margin at front of memory block overwritten"),  \
1580.217 +_STLP_STRING_LITERAL("Pointer overrrun - safety margin at back of memory block overwritten"),   \
1580.218 +_STLP_STRING_LITERAL("Attempt to dereference null pointer returned by auto_ptr::get()"),   \
1580.219 +_STLP_STRING_LITERAL("Unknown problem") \
1580.220 +  }
1580.221 +
1580.222 +# if ( _STLP_STATIC_TEMPLATE_DATA > 0 )
1580.223 +#ifdef __SYMBIAN32__
1580.224 +template <class _Dummy>
1580.225 +const char* __stl_debug_engine<_Dummy>::_Message_table[_StlMsg_MAX];//  _STLP_MESSAGE_TABLE_BODY;
1580.226 +#else
1580.227 +template <class _Dummy>
1580.228 +const char* __stl_debug_engine<_Dummy>::_Message_table[_StlMsg_MAX]  _STLP_MESSAGE_TABLE_BODY;
1580.229 +#endif
1580.230 +
1580.231 +# else
1580.232 +__DECLARE_INSTANCE(const char*, __stl_debug_engine<bool>::_Message_table[_StlMsg_MAX],
1580.233 +		   _STLP_MESSAGE_TABLE_BODY);
1580.234 +
1580.235 +# endif
1580.236 +
1580.237 +# undef _STLP_STRING_LITERAL
1580.238 +# undef _STLP_PERCENT_S
1580.239 +_STLP_END_NAMESPACE
1580.240 +
1580.241 +// abort()
1580.242 +#    include <cstdlib>
1580.243 +
1580.244 +#  if !defined( _STLP_DEBUG_MESSAGE )
1580.245 +
1580.246 +#    include <cstdarg>
1580.247 +#    include <cstdio>
1580.248 +
1580.249 +_STLP_BEGIN_NAMESPACE
1580.250 +
1580.251 +template <class _Dummy>
1580.252 +void _STLP_CALL  
1580.253 +__stl_debug_engine<_Dummy>::_Message(const char * __format_str, ...)
1580.254 +{
1580.255 +	STLPORT_CSTD::va_list __args;
1580.256 +	va_start( __args, __format_str );
1580.257 +
1580.258 +# if defined (_STLP_WINCE)
1580.259 +	TCHAR __buffer[512];
1580.260 +	int _convert = strlen(__format_str) + 1;
1580.261 +	LPWSTR _lpw = (LPWSTR)alloca(_convert*sizeof(wchar_t));
1580.262 +	_lpw[0] = '\0';
1580.263 +	MultiByteToWideChar(GetACP(), 0, __format_str, -1, _lpw, _convert);
1580.264 +	wvsprintf(__buffer, _lpw, __args);
1580.265 +	//	wvsprintf(__buffer, __format_str, __args);
1580.266 +	_STLP_WINCE_TRACE(__buffer);
1580.267 +# elif defined (_STLP_WIN32) && ( defined(_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)) && ! defined (__WINS__)
1580.268 +    char __buffer [4096];
1580.269 +    _vsnprintf(__buffer, sizeof(__buffer) / sizeof(char),
1580.270 +               __format_str, __args);
1580.271 +    OutputDebugStringA(__buffer);
1580.272 +# elif defined (__amigaos__)
1580.273 +    STLPORT_CSTD::vfprintf(stderr, __format_str, (char *)__args);
1580.274 +# else
1580.275 +    STLPORT_CSTD::vfprintf(stderr, __format_str, __args);
1580.276 +# endif /* WINCE */
1580.277 +
1580.278 +# ifdef _STLP_DEBUG_MESSAGE_POST
1580.279 +	_STLP_DEBUG_MESSAGE_POST
1580.280 +# endif
1580.281 +
1580.282 +    va_end(__args);
1580.283 +
1580.284 +}
1580.285 +
1580.286 +_STLP_END_NAMESPACE
1580.287 +
1580.288 +#  endif /* _STLP_DEBUG_MESSAGE */
1580.289 +
1580.290 +
1580.291 +_STLP_BEGIN_NAMESPACE
1580.292 +
1580.293 +
1580.294 +template <class _Dummy>
1580.295 +void _STLP_CALL  
1580.296 +__stl_debug_engine<_Dummy>::_IndexedError(int __error_ind, const char* __f, int __l)
1580.297 +{
1580.298 +  __stl_debug_message(_Message_table[_StlFormat_ERROR_RETURN], 
1580.299 +		      __f, __l, _Message_table[__error_ind]);
1580.300 +}
1580.301 +
1580.302 +template <class _Dummy>
1580.303 +void _STLP_CALL  
1580.304 +__stl_debug_engine<_Dummy>::_VerboseAssert(const char* __expr, int __error_ind, const char* __f, int __l)
1580.305 +{
1580.306 +  __stl_debug_message(_Message_table[_StlFormat_VERBOSE_ASSERTION_FAILURE],
1580.307 +		      __f, __l, _Message_table[__error_ind], __f, __l, __expr);
1580.308 +  __stl_debug_terminate();
1580.309 +}
1580.310 +
1580.311 +template <class _Dummy>
1580.312 +void _STLP_CALL 
1580.313 +__stl_debug_engine<_Dummy>::_Assert(const char* __expr, const char* __f, int __l)
1580.314 +{
1580.315 +  __stl_debug_message(_Message_table[_StlFormat_ASSERTION_FAILURE],__f, __l, __expr);
1580.316 +  __stl_debug_terminate();
1580.317 +}
1580.318 +
1580.319 +// if exceptions are present, sends unique exception
1580.320 +// if not, calls abort() to terminate
1580.321 +template <class _Dummy>
1580.322 +void _STLP_CALL 
1580.323 +__stl_debug_engine<_Dummy>::_Terminate()
1580.324 +{
1580.325 +# ifdef _STLP_USE_NAMESPACES
1580.326 +  using namespace _STLP_STD;
1580.327 +# endif
1580.328 +# if defined (_STLP_USE_EXCEPTIONS) && ! defined (_STLP_NO_DEBUG_EXCEPTIONS)
1580.329 +  throw __stl_debug_exception();
1580.330 +# else
1580.331 +  _STLP_ABORT();
1580.332 +# endif
1580.333 +}
1580.334 +
1580.335 +_STLP_END_NAMESPACE
1580.336 +
1580.337 +# endif /* _STLP_ASSERTIONS */
1580.338 +
1580.339 +#ifdef _STLP_DEBUG
1580.340 +
1580.341 +_STLP_BEGIN_NAMESPACE
1580.342 +
1580.343 +//==========================================================
1580.344 +//  owned_list non-inline methods 
1580.345 +//==========================================================
1580.346 +
1580.347 +template <class _Dummy>
1580.348 +void  _STLP_CALL
1580.349 +__stl_debug_engine<_Dummy>::_Invalidate_all(__owned_list* __l) {
1580.350 +  _STLP_ACQUIRE_LOCK(__l->_M_lock);
1580.351 +  _Stamp_all(__l, 0);
1580.352 +  __l->_M_node._M_next =0;
1580.353 +  _STLP_RELEASE_LOCK(__l->_M_lock);
1580.354 +}
1580.355 +
1580.356 +// boris : this is unasafe routine; should be used from within critical section only !
1580.357 +template <class _Dummy>
1580.358 +void  _STLP_CALL
1580.359 +__stl_debug_engine<_Dummy>::_Stamp_all(__owned_list* __l, __owned_list* __o) {
1580.360 +  // crucial
1580.361 +  if (__l->_M_node._M_owner) {
1580.362 +    for (__owned_link*  __position = (__owned_link*)__l->_M_node._M_next; 
1580.363 +	 __position != 0; __position= (__owned_link*)__position->_M_next) {
1580.364 +      _STLP_ASSERT(__position->_Owner()== __l)
1580.365 +      __position->_M_owner=__o;
1580.366 +    }
1580.367 +  }
1580.368 +}
1580.369 +
1580.370 +template <class _Dummy>
1580.371 +void  _STLP_CALL
1580.372 +__stl_debug_engine<_Dummy>::_Verify(const __owned_list* __l) {
1580.373 +  _STLP_ACQUIRE_LOCK(__l->_M_lock);
1580.374 +  if (__l) {
1580.375 +    _STLP_ASSERT(__l->_M_node._Owner() != 0)
1580.376 +    for (__owned_link* __position = (__owned_link*)__l->_M_node._M_next; 
1580.377 +         __position != 0; __position= (__owned_link*)__position->_M_next) {
1580.378 +      _STLP_ASSERT(__position->_Owner()== __l)
1580.379 +    }
1580.380 +  }
1580.381 +  _STLP_RELEASE_LOCK(__l->_M_lock);
1580.382 +}
1580.383 +
1580.384 +template <class _Dummy>
1580.385 +void _STLP_CALL  
1580.386 +__stl_debug_engine<_Dummy>::_Swap_owners(__owned_list& __x, __owned_list& __y) {
1580.387 +
1580.388 +  //  according to the standard : --no swap() function invalidates any references, 
1580.389 +  //  pointers,  or  iterators referring to the elements of the containers being swapped.
1580.390 +
1580.391 +  __owned_link* __tmp;
1580.392 +
1580.393 +  // boris : there is a deadlock potential situation here if we lock two containers sequentially.
1580.394 +  // As user is supposed to provide its own synchronization around swap() ( it is unsafe to do any container/iterator access
1580.395 +  // in parallel with swap()), we just do not use any locking at all -- that behaviour is closer to non-debug version
1580.396 +
1580.397 +  __tmp = __x._M_node._M_next;
1580.398 +
1580.399 +  _Stamp_all(&__x, &__y);
1580.400 +  _Stamp_all(&__y, &__x);
1580.401 +
1580.402 +  __x._M_node._M_next = __y._M_node._M_next;
1580.403 +  __y._M_node._M_next = __tmp;  
1580.404 +
1580.405 +}
1580.406 +
1580.407 +template <class _Dummy>
1580.408 +void _STLP_CALL 
1580.409 +__stl_debug_engine<_Dummy>::_M_detach(__owned_list* __l, __owned_link* __c_node) {
1580.410 +  if (__l  != 0) {
1580.411 +
1580.412 +    _STLP_VERBOSE_ASSERT(__l->_Owner()!=0, _StlMsg_INVALID_CONTAINER)
1580.413 +
1580.414 +    _STLP_ACQUIRE_LOCK(__l->_M_lock)
1580.415 +      // boris : re-test the condition in case someone else already deleted us
1580.416 +      if(__c_node->_M_owner != 0) {
1580.417 +        __owned_link* __prev, *__next;
1580.418 +        
1580.419 +        for (__prev = &__l->_M_node; (__next = __prev->_M_next) != __c_node; 
1580.420 +             __prev = __next) {
1580.421 +          _STLP_ASSERT(__next && __next->_Owner() == __l)
1580.422 +            }
1580.423 +        
1580.424 +        __prev->_M_next = __c_node->_M_next;
1580.425 +        __c_node->_M_owner=0;
1580.426 +      }
1580.427 +    _STLP_RELEASE_LOCK(__l->_M_lock)
1580.428 +  }
1580.429 +}
1580.430 +
1580.431 +template <class _Dummy>
1580.432 +void _STLP_CALL 
1580.433 +__stl_debug_engine<_Dummy>::_M_attach(__owned_list* __l, __owned_link* __c_node) {
1580.434 +  if (__l ==0) {
1580.435 +    (__c_node)->_M_owner = 0;    
1580.436 +  } else {
1580.437 +    _STLP_VERBOSE_ASSERT(__l->_Owner()!=0, _StlMsg_INVALID_CONTAINER)
1580.438 +    _STLP_ACQUIRE_LOCK(__l->_M_lock)
1580.439 +    __c_node->_M_owner = __l;
1580.440 +    __c_node->_M_next = __l->_M_node._M_next;
1580.441 +    __l->_M_node._M_next = __c_node;
1580.442 +    _STLP_RELEASE_LOCK(__l->_M_lock)
1580.443 +  }
1580.444 +}
1580.445 +
1580.446 +
1580.447 +template <class _Dummy>
1580.448 +void* _STLP_CALL
1580.449 +__stl_debug_engine<_Dummy>::_Get_container_ptr(const __owned_link* __l) {
1580.450 +  const __owned_list* __owner    = __l->_Owner();
1580.451 +  _STLP_VERBOSE_RETURN_0(__owner != 0, _StlMsg_INVALID_ITERATOR)
1580.452 +  void* __ret = __CONST_CAST(void*,__owner->_Owner());
1580.453 +  _STLP_VERBOSE_RETURN_0(__ret !=0, _StlMsg_INVALID_CONTAINER)
1580.454 +  return __ret;
1580.455 +}
1580.456 +
1580.457 +template <class _Dummy>
1580.458 +bool _STLP_CALL
1580.459 +__stl_debug_engine<_Dummy>::_Check_same_owner( const __owned_link& __i1, 
1580.460 +                                               const __owned_link& __i2)
1580.461 +{
1580.462 +  _STLP_VERBOSE_RETURN(__i1._Valid(), _StlMsg_INVALID_LEFTHAND_ITERATOR)
1580.463 +  _STLP_VERBOSE_RETURN(__i2._Valid(), _StlMsg_INVALID_RIGHTHAND_ITERATOR)
1580.464 +  _STLP_VERBOSE_RETURN((__i1._Owner()==__i2._Owner()), _StlMsg_DIFFERENT_OWNERS)
1580.465 +  return true;
1580.466 +}
1580.467 +
1580.468 +template <class _Dummy>
1580.469 +bool  _STLP_CALL
1580.470 +__stl_debug_engine<_Dummy>::_Check_same_owner_or_null( const __owned_link& __i1, 
1580.471 +						       const __owned_link& __i2)
1580.472 +{
1580.473 +  _STLP_VERBOSE_RETURN(__i1._Owner()==__i2._Owner(), _StlMsg_DIFFERENT_OWNERS)
1580.474 +  return true;
1580.475 +}
1580.476 +
1580.477 +template <class _Dummy>
1580.478 +bool _STLP_CALL
1580.479 +__stl_debug_engine<_Dummy>::_Check_if_owner( const __owned_list * __l, const __owned_link& __it)
1580.480 +{
1580.481 +  const __owned_list* __owner_ptr = __it._Owner();
1580.482 +  _STLP_VERBOSE_RETURN(__owner_ptr!=0, _StlMsg_INVALID_ITERATOR)
1580.483 +  _STLP_VERBOSE_RETURN(__l==__owner_ptr, _StlMsg_NOT_OWNER)
1580.484 +  return true;
1580.485 +}
1580.486 +
1580.487 +
1580.488 +_STLP_END_NAMESPACE
1580.489 +
1580.490 +#endif /* _STLP_DEBUG */
1580.491 +
1580.492 +#endif /* if defined (EXPOSE_GLOBALS_IMPLEMENTATION) */
1580.493 +
1580.494 +#endif /* header guard */
1580.495 +
1580.496 +// Local Variables:
1580.497 +// mode:C++
1580.498 +// End:
1580.499 +
  1581.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1581.2 +++ b/epoc32/include/tools/stlport/stl/debug/_debug.h	Wed Mar 31 12:27:01 2010 +0100
  1581.3 @@ -0,0 +1,426 @@
  1581.4 +/*
  1581.5 + *
  1581.6 + * Copyright (c) 1997
  1581.7 + * Moscow Center for SPARC Technology
  1581.8 + *
  1581.9 + * Copyright (c) 1999 
 1581.10 + * Boris Fomitchev
 1581.11 + *
 1581.12 + * This material is provided "as is", with absolutely no warranty expressed
 1581.13 + * or implied. Any use is at your own risk.
 1581.14 + *
 1581.15 + * Permission to use or copy this software for any purpose is hereby granted 
 1581.16 + * without fee, provided the above notices are retained on all copies.
 1581.17 + * Permission to modify the code and to distribute modified code is granted,
 1581.18 + * provided the above notices are retained, and a notice that the code was
 1581.19 + * modified is included with the above copyright notice.
 1581.20 + *
 1581.21 + */
 1581.22 +
 1581.23 +#ifndef _STLP_DEBUG_H
 1581.24 +# define _STLP_DEBUG_H
 1581.25 +
 1581.26 +# if defined (_STLP_ASSERTIONS) || defined (_STLP_DEBUG)
 1581.27 +
 1581.28 +#ifndef _STLP_CONFIG_H
 1581.29 +# include <stl/_config.h>
 1581.30 +#endif
 1581.31 +
 1581.32 +# if !defined (_STLP_EXTRA_OPERATORS_FOR_DEBUG) && \
 1581.33 +     ( defined (_STLP_BASE_MATCH_BUG) || (defined (_STLP_MSVC) && _STLP_MSVC < 1100 ) )
 1581.34 +#  define _STLP_EXTRA_OPERATORS_FOR_DEBUG
 1581.35 +# endif
 1581.36 +
 1581.37 +# if !defined(_STLP_FILE__)
 1581.38 +#   define _STLP_FILE__ __FILE__
 1581.39 +# endif
 1581.40 + 
 1581.41 +enum {
 1581.42 +  _StlFormat_ERROR_RETURN,
 1581.43 +  _StlFormat_ASSERTION_FAILURE,
 1581.44 +  _StlFormat_VERBOSE_ASSERTION_FAILURE,
 1581.45 +  _StlMsg_INVALID_ARGUMENT,
 1581.46 +  _StlMsg_INVALID_CONTAINER,
 1581.47 +  _StlMsg_EMPTY_CONTAINER,
 1581.48 +  _StlMsg_ERASE_PAST_THE_END,
 1581.49 +  _StlMsg_OUT_OF_BOUNDS,
 1581.50 +  _StlMsg_NOT_OWNER,
 1581.51 +  _StlMsg_INVALID_ITERATOR,
 1581.52 +  _StlMsg_INVALID_LEFTHAND_ITERATOR,
 1581.53 +  _StlMsg_INVALID_RIGHTHAND_ITERATOR,
 1581.54 +  _StlMsg_DIFFERENT_OWNERS     ,
 1581.55 +  _StlMsg_NOT_DEREFERENCEABLE  ,
 1581.56 +  _StlMsg_INVALID_RANGE        ,
 1581.57 +  _StlMsg_NOT_IN_RANGE_1       ,
 1581.58 +  _StlMsg_NOT_IN_RANGE_2       ,
 1581.59 +  _StlMsg_INVALID_ADVANCE      ,
 1581.60 +  _StlMsg_SINGULAR_ITERATOR    ,
 1581.61 +  // debug alloc messages
 1581.62 +  _StlMsg_DBA_DELETED_TWICE    ,
 1581.63 +  _StlMsg_DBA_NEVER_ALLOCATED  ,
 1581.64 +  _StlMsg_DBA_TYPE_MISMATCH    ,
 1581.65 +  _StlMsg_DBA_SIZE_MISMATCH    ,
 1581.66 +  _StlMsg_DBA_UNDERRUN         ,
 1581.67 +  _StlMsg_DBA_OVERRUN          ,
 1581.68 +  // auto_ptr messages
 1581.69 +  _StlMsg_AUTO_PTR_NULL    ,
 1581.70 +  _StlMsg_UNKNOWN
 1581.71 +  /* _StlMsg_MAX */
 1581.72 +};
 1581.73 +
 1581.74 +/* have to hardcode that ;() */
 1581.75 +# define _StlMsg_MAX 27
 1581.76 +
 1581.77 +_STLP_BEGIN_NAMESPACE
 1581.78 +
 1581.79 +// This class is unique (not inherited from exception),
 1581.80 +// to disallow catch in anything but (...)
 1581.81 +struct __stl_debug_exception {
 1581.82 +  // no members
 1581.83 +};
 1581.84 +
 1581.85 +class _STLP_CLASS_DECLSPEC __owned_link;
 1581.86 +class _STLP_CLASS_DECLSPEC __owned_list;
 1581.87 +
 1581.88 +template <class _Dummy>
 1581.89 +struct __stl_debug_engine {
 1581.90 +
 1581.91 +  // Basic routine to report any debug message
 1581.92 +  // Use _STLP_DEBUG_MESSAGE to override
 1581.93 +  static void _STLP_CALL _Message(const char * format_str, ...);
 1581.94 +
 1581.95 +  // Micsellanous function to report indexed error message
 1581.96 +  static void _STLP_CALL  _IndexedError(int __ind, const char* __f, int __l);
 1581.97 +
 1581.98 +  // Basic assertion report mechanism.
 1581.99 +  // Reports failed assertion via __stl_debug_message and calls _Terminate
1581.100 +  // if _STLP_DEBUG_TERMINATE is specified, calls __stl_debug_terminate instead
1581.101 +  static void _STLP_CALL  _Assert(const char* __expr, const char* __f, int __l);
1581.102 +
1581.103 +  // The same, with additional diagnostics
1581.104 +  static void _STLP_CALL  _VerboseAssert(const char* __expr, int __error_ind, const char* __f, int __l);
1581.105 +
1581.106 +  // If exceptions are present, sends unique exception
1581.107 +  // If not, calls _STLP_ABORT() to terminate
1581.108 +  // Use _STLP_DEBUG_TERMINATE to override
1581.109 +  static void _STLP_CALL  _Terminate();
1581.110 +
1581.111 +# ifdef _STLP_DEBUG
1581.112 +
1581.113 +  // owned_list/link delegate non-inline functions here
1581.114 +
1581.115 +  static bool _STLP_CALL  _Check_same_owner( const __owned_link& __i1, 
1581.116 +                                             const __owned_link& __i2);
1581.117 +  static bool _STLP_CALL  _Check_same_owner_or_null( const __owned_link& __i1, 
1581.118 +                                                     const __owned_link& __i2);
1581.119 +  static bool  _STLP_CALL _Check_if_owner( const __owned_list*, const __owned_link&);
1581.120 +
1581.121 +  static void _STLP_CALL  _Verify(const __owned_list*);
1581.122 +  
1581.123 +  static void _STLP_CALL  _Swap_owners(__owned_list&, __owned_list& /*, bool __swap_roots */ );
1581.124 + 
1581.125 +  static void _STLP_CALL  _Invalidate_all(__owned_list*);
1581.126 +  
1581.127 +  static void _STLP_CALL  _Stamp_all(__owned_list*, __owned_list*);
1581.128 +
1581.129 +  static void _STLP_CALL  _M_detach(__owned_list*, __owned_link*);
1581.130 +
1581.131 +  static void _STLP_CALL  _M_attach(__owned_list*, __owned_link*);
1581.132 +
1581.133 +  // accessor : check and get pointer to the container
1581.134 +  static void* _STLP_CALL  _Get_container_ptr(const __owned_link*);
1581.135 +# endif /* _STLP_DEBUG */
1581.136 +
1581.137 +  // debug messages and formats
1581.138 +   _STLP_STATIC_MEMBER_DECLSPEC static const char* _Message_table[_StlMsg_MAX];
1581.139 +};
1581.140 +
1581.141 +
1581.142 +# if defined (_STLP_USE_TEMPLATE_EXPORT)
1581.143 +_STLP_EXPORT_TEMPLATE struct _STLP_CLASS_DECLSPEC __stl_debug_engine<bool>;
1581.144 +# endif /* _STLP_USE_TEMPLATE_EXPORT */
1581.145 +
1581.146 +typedef __stl_debug_engine<bool> __stl_debugger;
1581.147 +
1581.148 +_STLP_END_NAMESPACE
1581.149 +
1581.150 +#  ifndef _STLP_ASSERT
1581.151 +#   define _STLP_ASSERT(expr) \
1581.152 +     if (!(expr)) {STLPORT::__stl_debugger::_Assert( # expr, _STLP_FILE__, __LINE__);}
1581.153 +#  endif
1581.154 +
1581.155 +# endif /* _STLP_ASSERTIONS || _STLP_DEBUG */
1581.156 +
1581.157 +
1581.158 +// this section is for _STLP_DEBUG only 
1581.159 +#if defined ( _STLP_DEBUG )
1581.160 +
1581.161 +# ifndef _STLP_VERBOSE_ASSERT
1581.162 +// fbp : new form not requiring ";"
1581.163 +#  define _STLP_VERBOSE_ASSERT(expr,__diag_num) \
1581.164 +    if (!(expr)) { STLPORT::__stl_debugger::_VerboseAssert\
1581.165 +                                 ( # expr,  __diag_num, _STLP_FILE__, __LINE__ ); \
1581.166 +         }
1581.167 +# endif
1581.168 +
1581.169 +#  define _STLP_DEBUG_CHECK(expr) _STLP_ASSERT(expr)
1581.170 +#  define _STLP_DEBUG_DO(expr)    expr;
1581.171 +
1581.172 +# ifndef _STLP_VERBOSE_RETURN
1581.173 +#  define _STLP_VERBOSE_RETURN(__expr,__diag_num) if (!(__expr)) { \
1581.174 +       __stl_debugger::_IndexedError(__diag_num, __FILE__ , __LINE__); \
1581.175 +       return false; }
1581.176 +# endif
1581.177 +
1581.178 +# ifndef _STLP_VERBOSE_RETURN_0
1581.179 +#  define _STLP_VERBOSE_RETURN_0(__expr,__diag_num) if (!(__expr)) { \
1581.180 +       __stl_debugger::_IndexedError(__diag_num, __FILE__ , __LINE__); \
1581.181 +       return 0; }
1581.182 +# endif
1581.183 +
1581.184 +#if ! defined (_STLP_INTERNAL_THREADS_H)
1581.185 +# include <stl/_threads.h>
1581.186 +#endif
1581.187 +
1581.188 +#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
1581.189 +# include <stl/_iterator_base.h>
1581.190 +#endif
1581.191 +
1581.192 +_STLP_BEGIN_NAMESPACE
1581.193 +
1581.194 +//=============================================================
1581.195 +template <class _Iterator>
1581.196 +inline bool  _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, 
1581.197 +                                      const random_access_iterator_tag&) { 
1581.198 +    return (__i1< __i2) || (__i1 == __i2);
1581.199 +}
1581.200 +
1581.201 +template <class _Iterator>
1581.202 +inline bool  _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2,
1581.203 +                                      const bidirectional_iterator_tag&) { 
1581.204 +    // check if comparable
1581.205 +    bool __dummy(__i1==__i2);
1581.206 +    return (__dummy==__dummy); 
1581.207 +}
1581.208 +
1581.209 +template <class _Iterator>
1581.210 +inline bool  _STLP_CALL __valid_range(const _Iterator& __i1 ,const _Iterator& __i2, const forward_iterator_tag&) { 
1581.211 +    // check if comparable
1581.212 +    bool __dummy(__i1==__i2);
1581.213 +    return (__dummy==__dummy); 
1581.214 +}
1581.215 +
1581.216 +template <class _Iterator>
1581.217 +inline bool  _STLP_CALL __valid_range(const _Iterator&,const _Iterator&, const input_iterator_tag&) { 
1581.218 +    return true; 
1581.219 +}
1581.220 +
1581.221 +template <class _Iterator>
1581.222 +inline bool  _STLP_CALL __valid_range(const _Iterator&,const _Iterator&, const output_iterator_tag&) { 
1581.223 +    return true; 
1581.224 +}
1581.225 +
1581.226 +template <class _Iterator>
1581.227 +inline bool  _STLP_CALL __valid_range(const _Iterator& __i1, const _Iterator& __i2) { 
1581.228 +    return __valid_range(__i1,__i2,_STLP_ITERATOR_CATEGORY(__i1, _Iterator));
1581.229 +}
1581.230 +
1581.231 +// Note : that means in range [i1, i2].
1581.232 +template <class _Iterator>
1581.233 +inline bool  _STLP_CALL __in_range(const _Iterator& _It, const _Iterator& __i1,
1581.234 +                                   const _Iterator& __i2) { 
1581.235 +    return __valid_range(__i1,_It,_STLP_ITERATOR_CATEGORY(__i1, _Iterator)) && 
1581.236 +        __valid_range(_It,__i2,_STLP_ITERATOR_CATEGORY(_It, _Iterator));
1581.237 +}
1581.238 +
1581.239 +template <class _Iterator>
1581.240 +inline bool  _STLP_CALL __in_range(const _Iterator& __first, const _Iterator& __last, 
1581.241 +                                   const _Iterator& __start, const _Iterator& __finish) { 
1581.242 +    return __valid_range(__first,__last,_STLP_ITERATOR_CATEGORY(__first, _Iterator)) &&
1581.243 +        __valid_range(__start,__first,_STLP_ITERATOR_CATEGORY(__first, _Iterator)) && 
1581.244 +        __valid_range(__last,__finish,_STLP_ITERATOR_CATEGORY(__last, _Iterator));
1581.245 +}
1581.246 +
1581.247 +//==========================================================
1581.248 +
1581.249 +
1581.250 +class _STLP_CLASS_DECLSPEC __owned_link {
1581.251 +public:
1581.252 +
1581.253 +  __owned_link() : _M_owner(0) {}
1581.254 +  __owned_link(const __owned_list* __c) : _M_owner(0), _M_next(0) {
1581.255 +    __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__c), this);
1581.256 +  }
1581.257 +  __owned_link(const __owned_link& __rhs): _M_owner(0) {
1581.258 +    __stl_debugger::_M_attach(__CONST_CAST(__owned_list*,__rhs._M_owner), this);
1581.259 +  }
1581.260 +  __owned_link& operator=(const __owned_link& __rhs) {
1581.261 +    __owned_list* __new_owner = __CONST_CAST(__owned_list*,__rhs._M_owner);
1581.262 +    __owned_list* __old_owner = _M_owner;
1581.263 +    if ( __old_owner != __new_owner ) {
1581.264 +      __stl_debugger::_M_detach(__old_owner, this);
1581.265 +      __stl_debugger::_M_attach(__new_owner, this);
1581.266 +    }
1581.267 +    return *this;
1581.268 +  }
1581.269 +  ~__owned_link() {
1581.270 +    __stl_debugger::_M_detach(_M_owner, this);
1581.271 +    _Invalidate();
1581.272 +  }
1581.273 +  
1581.274 +  const __owned_list* _Owner() const { 
1581.275 +    return _M_owner; 
1581.276 +  }
1581.277 +  __owned_list* _Owner() { 
1581.278 +    return _M_owner; 
1581.279 +  }
1581.280 +  void _Set_owner(const __owned_list* __o)  { 
1581.281 +    _M_owner= __CONST_CAST(__owned_list*,__o); 
1581.282 +  }
1581.283 +  bool  _Valid() const { 
1581.284 +    return _M_owner !=0; 
1581.285 +  }
1581.286 +
1581.287 +  void _Invalidate() { _M_owner=0; _M_next = 0; }
1581.288 +  void _Link_to_self() { _M_next= 0; }
1581.289 +
1581.290 +  __owned_link* _Next() { return _M_next; }
1581.291 +  const __owned_link* _Next() const { return _M_next; }
1581.292 +
1581.293 +public:
1581.294 +  __owned_list* _M_owner;
1581.295 +  __owned_link* _M_next;
1581.296 +};
1581.297 +
1581.298 +
1581.299 +class _STLP_CLASS_DECLSPEC __owned_list {
1581.300 +public:
1581.301 +  __owned_list(const void* __o) {
1581.302 +    //    fprintf(stderr, "__owned_list(): %p\n",(void*)this);
1581.303 +    _M_node._M_owner = __CONST_CAST(__owned_list*, __REINTERPRET_CAST(const __owned_list*,__o)); 
1581.304 +    _M_node._M_next=0;
1581.305 +  }
1581.306 +  ~__owned_list() {
1581.307 +    //    fprintf(stderr, "~__owned_list(): %p\n",(void*)this);
1581.308 +    _Invalidate_all();
1581.309 +    // that prevents detach
1581.310 +    _M_node._Invalidate();
1581.311 +  }
1581.312 +  const void* _Owner() const { 
1581.313 +    return (const void*)_M_node._M_owner; 
1581.314 +  }
1581.315 +  void* _Owner() { 
1581.316 +    return (void*)_M_node._M_owner; 
1581.317 +  }
1581.318 +  bool  _Valid() const { 
1581.319 +    return _M_node._M_owner!=0; 
1581.320 +  }
1581.321 +  void _Invalidate() { _M_node._M_owner=0; }
1581.322 +  
1581.323 +  __owned_link* _First() { return _M_node._Next(); }
1581.324 +  __owned_link* _Last() { return 0 ; }
1581.325 +
1581.326 +  const __owned_link* _First() const { return (__owned_link*)_M_node._M_next; }
1581.327 +  const __owned_link* _Last() const { return 0 ;}
1581.328 +  
1581.329 +  void _Verify() const {
1581.330 +    __stl_debugger::_Verify(this); 
1581.331 +  }
1581.332 +  
1581.333 +  void _Swap_owners(__owned_list& __y) { 
1581.334 +    __stl_debugger::_Swap_owners(*this, __y); 
1581.335 +  }
1581.336 + 
1581.337 +  void _Invalidate_all() { 
1581.338 +    __stl_debugger::_Invalidate_all(this);
1581.339 +  }
1581.340 +  
1581.341 +  mutable __owned_link              _M_node; 
1581.342 +  mutable _STLP_mutex            _M_lock;
1581.343 +  
1581.344 +private:
1581.345 +  // should never be called, should be left undefined,
1581.346 +  // but some compilers complain about it ;(
1581.347 +  __owned_list(const __owned_list&){}
1581.348 +  void operator=(const __owned_list&) {}
1581.349 +
1581.350 +  friend class __owned_link;
1581.351 +  friend struct __stl_debug_engine<bool>;
1581.352 +};
1581.353 +
1581.354 +
1581.355 +//==========================================================
1581.356 +
1581.357 +// forward declaratioins
1581.358 +
1581.359 +template <class _Iterator>
1581.360 +bool  _STLP_CALL __check_range(const _Iterator&, const _Iterator&);
1581.361 +template <class _Iterator>
1581.362 +bool _STLP_CALL  __check_range(const _Iterator&, 
1581.363 +                               const _Iterator&, const _Iterator&);
1581.364 +template <class _Iterator>
1581.365 +bool _STLP_CALL  __check_range(const _Iterator&, const _Iterator& , 
1581.366 +                               const _Iterator&, const _Iterator& );
1581.367 +
1581.368 +template <class _Iterator>
1581.369 +void _STLP_CALL  __invalidate_range(const __owned_list* __base, 
1581.370 +                                    const _Iterator& __first,
1581.371 +                                    const _Iterator& __last);
1581.372 +
1581.373 +template <class _Iterator>
1581.374 +void  _STLP_CALL __invalidate_iterator(const __owned_list* __base, 
1581.375 +                                       const _Iterator& __it);
1581.376 +
1581.377 +//============================================================
1581.378 +
1581.379 +inline bool _STLP_CALL 
1581.380 +__check_same_owner( const __owned_link& __i1, const __owned_link& __i2) {
1581.381 +  return __stl_debugger::_Check_same_owner(__i1,__i2);
1581.382 +}
1581.383 +inline bool _STLP_CALL  
1581.384 +__check_same_owner_or_null( const __owned_link& __i1, const __owned_link& __i2) {
1581.385 +  return __stl_debugger::_Check_same_owner_or_null(__i1,__i2);
1581.386 +}
1581.387 +
1581.388 +template <class _Iterator>
1581.389 +inline bool _STLP_CALL  __check_if_owner( const __owned_list* __owner, 
1581.390 +                                          const _Iterator& __it) {
1581.391 +  return __stl_debugger::_Check_if_owner(__owner, (const __owned_link&)__it);
1581.392 +}
1581.393 +
1581.394 +_STLP_END_NAMESPACE
1581.395 +
1581.396 +# endif /* _STLP_DEBUG */
1581.397 +
1581.398 +#if defined ( _STLP_ASSERTIONS )
1581.399 +
1581.400 +# ifndef _STLP_ASSERT_MSG_TRAILER
1581.401 +#  define _STLP_ASSERT_MSG_TRAILER
1581.402 +# endif
1581.403 +
1581.404 +// dwa 12/30/98 - if _STLP_DEBUG_MESSAGE is defined, the user can supply own definition.
1581.405 +# if !defined( _STLP_DEBUG_MESSAGE )
1581.406 +#   define __stl_debug_message __stl_debugger::_Message
1581.407 +# else
1581.408 +    extern  void __stl_debug_message(const char * format_str, ...);
1581.409 +# endif
1581.410 +
1581.411 +// fbp: if _STLP_DEBUG_TERMINATE is defined, the user can supply own definition.
1581.412 +# if !defined( _STLP_DEBUG_TERMINATE )
1581.413 +#   define __stl_debug_terminate __stl_debugger::_Terminate
1581.414 +# else
1581.415 +    extern  void __stl_debug_terminate(void);
1581.416 +# endif
1581.417 +
1581.418 +#endif
1581.419 +
1581.420 +# if !defined (_STLP_LINK_TIME_INSTANTIATION)
1581.421 +#  include <stl/debug/_debug.c>
1581.422 +# endif
1581.423 +
1581.424 +#endif /* DEBUG_H */
1581.425 +
1581.426 +// Local Variables:
1581.427 +// mode:C++
1581.428 +// End:
1581.429 +
  1582.1 --- a/epoc32/include/tools/stlport/stl/debug/_string_sum_methods.h	Tue Mar 16 16:12:26 2010 +0000
  1582.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1582.3 @@ -1,111 +0,0 @@
  1582.4 -/*
  1582.5 - * Copyright (c) 2003
  1582.6 - * Francois Dumont
  1582.7 - *
  1582.8 - * This material is provided "as is", with absolutely no warranty expressed
  1582.9 - * or implied. Any use is at your own risk.
 1582.10 - *
 1582.11 - * Permission to use or copy this software for any purpose is hereby granted
 1582.12 - * without fee, provided the above notices are retained on all copies.
 1582.13 - * Permission to modify the code and to distribute modified code is granted,
 1582.14 - * provided the above notices are retained, and a notice that the code was
 1582.15 - * modified is included with the above copyright notice.
 1582.16 - *
 1582.17 - */
 1582.18 -
 1582.19 -/*
 1582.20 - * All the necessary methods used for template expressions with basic_string
 1582.21 - * This file do not have to be macro guarded as it is only used in the _string.h
 1582.22 - * file and it is a part of the basic_string definition.
 1582.23 - */
 1582.24 -
 1582.25 -  template <class _Left, class _Right, class _StorageDir>
 1582.26 -  basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s)
 1582.27 -    : _M_non_dbg_impl(_Reserve_t(), __s.size(), __s.get_allocator()),
 1582.28 -      _M_iter_list(&_M_non_dbg_impl)
 1582.29 -  { _M_append_sum(__s, _M_non_dbg_impl); }
 1582.30 -
 1582.31 -  template <class _Left, class _Right, class _StorageDir>
 1582.32 -  basic_string(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
 1582.33 -               size_type __pos, size_type __n = npos,
 1582.34 -               const allocator_type& __a = allocator_type())
 1582.35 -    : _M_non_dbg_impl(_Reserve_t(), (__pos <= __s.size()) ? ((min) (__n, __s.size() - __pos)) : 0, __a),
 1582.36 -      _M_iter_list(&_M_non_dbg_impl) {
 1582.37 -    size_type __size = __s.size();
 1582.38 -    if (__pos > __size)
 1582.39 -      //This call will generate the necessary out of range exception:
 1582.40 -      _M_non_dbg_impl.at(0);
 1582.41 -    else
 1582.42 -      _M_append_sum_pos(__s, __pos, (min) (__n, __size - __pos), _M_non_dbg_impl);
 1582.43 -  }
 1582.44 -
 1582.45 -private:
 1582.46 -  _Base& _M_append_fast(_STLP_PRIV __char_wrapper<_CharT> __c, _Base &__str)
 1582.47 -  { return __str += __c.getValue(); }
 1582.48 -  _Base& _M_append_fast(_CharT const* __s, size_type __s_size, _Base &__str)
 1582.49 -  { return __str.append(__s, __s_size); }
 1582.50 -  _Base& _M_append_fast(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _Base &__str)
 1582.51 -  { return _M_append_fast(__s.c_str(), __s.size(), __str); }
 1582.52 -  _Base& _M_append_fast(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _Base &__str)
 1582.53 -  { return _M_append_fast(__s.b_str(), __str); }
 1582.54 -  _Base& _M_append_fast(_Self const& __s, _Base &__str)
 1582.55 -  { return _M_append_fast(__s.data(), __s.size(), __str); }
 1582.56 -  _Base& _M_append_fast(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _Base &__str)
 1582.57 -  { return __str; }
 1582.58 -  template <class _Left, class _Right, class _StorageDir>
 1582.59 -  _Base& _M_append_fast(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s, _Base &__str)
 1582.60 -  { return _M_append_fast(__s.getRhs(), _M_append_fast(__s.getLhs(), __str)); }
 1582.61 -
 1582.62 -  _Base& _M_append_fast_pos(_STLP_PRIV __char_wrapper<_CharT> __c, _Base &__str, size_type /*__pos*/, size_type __n) {
 1582.63 -    if (__n == 0)
 1582.64 -      return __str;
 1582.65 -    return __str += __c.getValue();
 1582.66 -  }
 1582.67 -  _Base& _M_append_fast_pos(_CharT const* __s, size_type __s_size, _Base &__str,
 1582.68 -                            size_type __pos, size_type __n)
 1582.69 -  { return __str.append(__s + __pos, __s + __pos + (min)(__n, __s_size - __pos)); }
 1582.70 -  _Base& _M_append_fast_pos(_STLP_PRIV __cstr_wrapper<_CharT> const& __s, _Base &__str,
 1582.71 -                            size_type __pos, size_type __n)
 1582.72 -  { return _M_append_fast_pos(__s.c_str(), __s.size(), __str, __pos, __n); }
 1582.73 -  _Base& _M_append_fast_pos(_STLP_PRIV __bstr_wrapper<_CharT, _Traits, _Alloc> __s, _Base &__str,
 1582.74 -                            size_type __pos, size_type __n)
 1582.75 -  { return _M_append_fast_pos(__s.b_str(), __str, __pos, __n); }
 1582.76 -  _Base& _M_append_fast_pos(_Self const& __s, _Base &__str, size_type __pos, size_type __n)
 1582.77 -  { return _M_append_fast_pos(__s.data(), __s.size(), __str, __pos, __n); }
 1582.78 -  _Base& _M_append_fast_pos(_STLP_PRIV __sum_storage_elem<_CharT, _Traits, _Alloc> const&, _Base &__str,
 1582.79 -                            size_type /*__pos*/, size_type /*__n*/)
 1582.80 -  { return __str; }
 1582.81 -
 1582.82 -  template <class _Left, class _Right, class _StorageDir>
 1582.83 -  _Base& _M_append_fast_pos(_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
 1582.84 -                            _Base &__str, size_type __pos, size_type __n) {
 1582.85 -    if (__n == 0) {
 1582.86 -      return __str;
 1582.87 -    }
 1582.88 -    size_type __lhs_size = __s.getLhs().size();
 1582.89 -    if (__pos < __lhs_size) {
 1582.90 -      if (__n < (__lhs_size - __pos)) {
 1582.91 -        return _M_append_fast_pos(__s.getLhs(), __str, __pos, __n);
 1582.92 -      } else {
 1582.93 -        return _M_append_fast_pos(__s.getRhs(), _M_append_fast_pos(__s.getLhs(), __str, __pos, __n),
 1582.94 -                                  0, __n - (__lhs_size - __pos));
 1582.95 -      }
 1582.96 -    } else {
 1582.97 -      return _M_append_fast_pos(__s.getRhs(), __str, __pos - __lhs_size, __n);
 1582.98 -    }
 1582.99 -  }
1582.100 -
1582.101 -  template <class _Left, class _Right, class _StorageDir>
1582.102 -  _Self& _M_append_sum (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
1582.103 -                        _Base &__impl) {
1582.104 -    _M_append_fast(__s, __impl);
1582.105 -    return *this;
1582.106 -  }
1582.107 -
1582.108 -  template <class _Left, class _Right, class _StorageDir>
1582.109 -  _Self& _M_append_sum_pos (_STLP_PRIV __bstr_sum<_CharT, _Traits, _Alloc, _Left, _Right, _StorageDir> const& __s,
1582.110 -                            size_type __pos, size_type __n, _Base &__impl) {
1582.111 -    _M_non_dbg_impl.reserve(_M_non_dbg_impl.size() + (min) (__s.size() - __pos, __n));
1582.112 -    _M_append_fast_pos(__s, __impl, __pos, __n);
1582.113 -    return *this;
1582.114 -  }
  1583.1 --- a/epoc32/include/tools/stlport/stl/type_manips.h	Tue Mar 16 16:12:26 2010 +0000
  1583.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1583.3 @@ -1,328 +0,0 @@
  1583.4 -/*
  1583.5 - *
  1583.6 - * Copyright (c) 2003
  1583.7 - * François Dumont
  1583.8 - *
  1583.9 - * This material is provided "as is", with absolutely no warranty expressed
 1583.10 - * or implied. Any use is at your own risk.
 1583.11 - *
 1583.12 - * Permission to use or copy this software for any purpose is hereby granted
 1583.13 - * without fee, provided the above notices are retained on all copies.
 1583.14 - * Permission to modify the code and to distribute modified code is granted,
 1583.15 - * provided the above notices are retained, and a notice that the code was
 1583.16 - * modified is included with the above copyright notice.
 1583.17 - *
 1583.18 - */
 1583.19 -
 1583.20 -
 1583.21 -#ifndef _STLP_TYPE_MANIPS_H
 1583.22 -#define _STLP_TYPE_MANIPS_H
 1583.23 -
 1583.24 -# if defined (__GNUC__) && (__GNUC__ > 3)
 1583.25 -// See comment below
 1583.26 -#  include <bits/cpp_type_traits.h>
 1583.27 -# endif
 1583.28 -
 1583.29 -_STLP_BEGIN_NAMESPACE
 1583.30 -
 1583.31 -/*
 1583.32 - * gcc (libstdc++) define __true_type in different headers, and while
 1583.33 - * in gcc 3.x it in bits/type_traits.h that included only from headers
 1583.34 - * that not included from STLport; in gcc 4.x it defined in
 1583.35 - * bits/cpp_type_traits.h, that included well... from cmath for example
 1583.36 - *
 1583.37 - * libstdc++ v3,       __GLIBCXX__ 20050519 (3.4.4) use variant 1,
 1583.38 - * libstdc++ v3,       __GLIBCXX__ 20060306 (3.4.6) use variant 1,
 1583.39 - * while libstdc++ v3, __GLIBCXX__ 20050921 (4.0.2) use variant 2,
 1583.40 - *                     __GLIBCXX__ 20060524 (4.1.1) use variant 2
 1583.41 - * muddle in libstdc++ versions...
 1583.42 - *
 1583.43 - */
 1583.44 -# if defined (__GNUC__) && (__GNUC__ > 3)
 1583.45 -using ::__true_type;
 1583.46 -using ::__false_type;
 1583.47 -# else
 1583.48 -struct __true_type {};
 1583.49 -struct __false_type {};
 1583.50 -# endif
 1583.51 -
 1583.52 -#if defined (_STLP_USE_NAMESPACES)
 1583.53 -_STLP_MOVE_TO_PRIV_NAMESPACE
 1583.54 -using _STLP_STD::__true_type;
 1583.55 -using _STLP_STD::__false_type;
 1583.56 -_STLP_MOVE_TO_STD_NAMESPACE
 1583.57 -#endif
 1583.58 -
 1583.59 -//bool to type
 1583.60 -template <int _Is>
 1583.61 -struct __bool2type
 1583.62 -{ typedef __true_type _Ret; };
 1583.63 -
 1583.64 -_STLP_TEMPLATE_NULL
 1583.65 -struct __bool2type<1> { typedef __true_type _Ret; };
 1583.66 -
 1583.67 -_STLP_TEMPLATE_NULL
 1583.68 -struct __bool2type<0> { typedef __false_type _Ret; };
 1583.69 -
 1583.70 -//type to bool
 1583.71 -template <class __bool_type>
 1583.72 -struct __type2bool { enum {_Ret = 1}; };
 1583.73 -
 1583.74 -_STLP_TEMPLATE_NULL
 1583.75 -struct __type2bool<__true_type> { enum {_Ret = 1}; };
 1583.76 -
 1583.77 -_STLP_TEMPLATE_NULL
 1583.78 -struct __type2bool<__false_type> { enum {_Ret = 0}; };
 1583.79 -
 1583.80 -//Negation
 1583.81 -template <class _BoolType>
 1583.82 -struct _Not { typedef __false_type _Ret; };
 1583.83 -
 1583.84 -_STLP_TEMPLATE_NULL
 1583.85 -struct _Not<__false_type> { typedef __true_type _Ret; };
 1583.86 -
 1583.87 -// logical and of 2 predicated
 1583.88 -template <class _P1, class _P2>
 1583.89 -struct _Land2 { typedef __false_type _Ret; };
 1583.90 -
 1583.91 -_STLP_TEMPLATE_NULL
 1583.92 -struct _Land2<__true_type, __true_type> { typedef __true_type _Ret; };
 1583.93 -
 1583.94 -// logical and of 3 predicated
 1583.95 -template <class _P1, class _P2, class _P3>
 1583.96 -struct _Land3 { typedef __false_type _Ret; };
 1583.97 -
 1583.98 -_STLP_TEMPLATE_NULL
 1583.99 -struct _Land3<__true_type, __true_type, __true_type> { typedef __true_type _Ret; };
1583.100 -
1583.101 -//logical or of 2 predicated
1583.102 -template <class _P1, class _P2>
1583.103 -struct _Lor2 { typedef __true_type _Ret; };
1583.104 -
1583.105 -_STLP_TEMPLATE_NULL
1583.106 -struct _Lor2<__false_type, __false_type> { typedef __false_type _Ret; };
1583.107 -
1583.108 -// logical or of 3 predicated
1583.109 -template <class _P1, class _P2, class _P3>
1583.110 -struct _Lor3 { typedef __true_type _Ret; };
1583.111 -
1583.112 -_STLP_TEMPLATE_NULL
1583.113 -struct _Lor3<__false_type, __false_type, __false_type> { typedef __false_type _Ret; };
1583.114 -
1583.115 -////////////////////////////////////////////////////////////////////////////////
1583.116 -// class template __select
1583.117 -// Selects one of two types based upon a boolean constant
1583.118 -// Invocation: __select<_Cond, T, U>::Result
1583.119 -// where:
1583.120 -// flag is a compile-time boolean constant
1583.121 -// T and U are types
1583.122 -// Result evaluates to T if flag is true, and to U otherwise.
1583.123 -////////////////////////////////////////////////////////////////////////////////
1583.124 -// BEWARE: If the compiler do not support partial template specialization or nested template
1583.125 -//classes the default behavior of the __select is to consider the condition as false and so return
1583.126 -//the second template type!!
1583.127 -
1583.128 -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1583.129 -template <bool _Cond, class _Tp1, class _Tp2>
1583.130 -struct __select { typedef _Tp1 _Ret; };
1583.131 -
1583.132 -template <class _Tp1, class _Tp2>
1583.133 -struct __select<false, _Tp1, _Tp2> { typedef _Tp2 _Ret; };
1583.134 -
1583.135 -#  if defined (__BORLANDC__)
1583.136 -template <class _CondT, class _Tp1, class _Tp2>
1583.137 -struct __selectT { typedef _Tp1 _Ret; };
1583.138 -
1583.139 -template <class _Tp1, class _Tp2>
1583.140 -struct __selectT<__false_type, _Tp1, _Tp2> { typedef _Tp2 _Ret; };
1583.141 -#  endif
1583.142 -
1583.143 -#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1583.144 -
1583.145 -#  if defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1583.146 -template <int _Cond>
1583.147 -struct __select_aux {
1583.148 -  template <class _Tp1, class _Tp2>
1583.149 -  struct _In {
1583.150 -    typedef _Tp1 _Ret;
1583.151 -  };
1583.152 -};
1583.153 -
1583.154 -_STLP_TEMPLATE_NULL
1583.155 -struct __select_aux<0> {
1583.156 -  template <class _Tp1, class _Tp2>
1583.157 -  struct _In {
1583.158 -    typedef _Tp2 _Ret;
1583.159 -  };
1583.160 -};
1583.161 -
1583.162 -template <int _Cond, class _Tp1, class _Tp2>
1583.163 -struct __select {
1583.164 -  typedef typename __select_aux<_Cond>::_STLP_TEMPLATE _In<_Tp1, _Tp2>::_Ret _Ret;
1583.165 -};
1583.166 -#  else /* _STLP_MEMBER_TEMPLATE_CLASSES */
1583.167 -//default behavior
1583.168 -template <int _Cond, class _Tp1, class _Tp2>
1583.169 -struct __select {
1583.170 -  typedef _Tp2 _Ret;
1583.171 -};
1583.172 -#  endif /* _STLP_MEMBER_TEMPLATE_CLASSES */
1583.173 -
1583.174 -#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
1583.175 -
1583.176 -#if defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
1583.177 -// Boris : simulation technique is used here according to Adobe Open Source License Version 1.0.
1583.178 -// Copyright 2000 Adobe Systems Incorporated and others. All rights reserved.
1583.179 -// Authors: Mat Marcus and Jesse Jones
1583.180 -// The original version of this source code may be found at
1583.181 -// http://opensource.adobe.com.
1583.182 -
1583.183 -// These are the discriminating functions
1583.184 -template <class _Tp>
1583.185 -char _STLP_CALL _IsSameFun(bool, _Tp const volatile*, _Tp const volatile*); // no implementation is required
1583.186 -char* _STLP_CALL _IsSameFun(bool, ...);       // no implementation is required
1583.187 -
1583.188 -template <class _Tp1, class _Tp2>
1583.189 -struct _IsSame {
1583.190 -  static _Tp1* __null_rep1();
1583.191 -  static _Tp2* __null_rep2();
1583.192 -  enum { _Ret = (sizeof(_IsSameFun(false,__null_rep1(), __null_rep2())) == sizeof(char)) };
1583.193 -  typedef typename __bool2type<_Ret>::_Ret _RetT;
1583.194 -};
1583.195 -
1583.196 -#else
1583.197 -
1583.198 -template <class _Tp1, class _Tp2>
1583.199 -struct _IsSameAux {
1583.200 -  typedef __false_type _RetT;
1583.201 -  enum { _Ret = 0 };
1583.202 -};
1583.203 -
1583.204 -template <class _Tp>
1583.205 -struct _UnConstType { typedef _Tp _Type; };
1583.206 -
1583.207 -template <class _Tp>
1583.208 -struct _UnVolatileType { typedef _Tp _Type; };
1583.209 -
1583.210 -template <class _Tp>
1583.211 -struct _UnCVType {
1583.212 -  typedef typename _UnVolatileType<_Tp>::_Type _UnVType;
1583.213 -  typedef typename _UnConstType<_UnVType>::_Type _Type;
1583.214 -};
1583.215 -
1583.216 -#  if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1583.217 -template <class _Tp>
1583.218 -struct _IsSameAux<_Tp, _Tp> {
1583.219 -  typedef __true_type _RetT;
1583.220 -  enum { _Ret = 1 };
1583.221 -};
1583.222 -
1583.223 -#    if !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
1583.224 -template <class _Tp>
1583.225 -struct _UnConstType<const _Tp> { typedef _Tp _Type; };
1583.226 -
1583.227 -template <class _Tp>
1583.228 -struct _UnVolatileType<volatile _Tp> { typedef _Tp _Type; };
1583.229 -#    endif
1583.230 -
1583.231 -#    if defined(__BORLANDC__)
1583.232 -template<class _Tp>
1583.233 -struct _UnConstPtr { typedef _Tp _Type; };
1583.234 -
1583.235 -template<class _Tp>
1583.236 -struct _UnConstPtr<_Tp*> { typedef _Tp _Type; };
1583.237 -
1583.238 -template<class _Tp>
1583.239 -struct _UnConstPtr<const _Tp*> { typedef _Tp _Type; };
1583.240 -#    endif
1583.241 -#  endif
1583.242 -
1583.243 -template <class _Tp1, class _Tp2>
1583.244 -struct _IsSame {
1583.245 -  typedef typename _UnCVType<_Tp1>::_Type _Type1;
1583.246 -  typedef typename _UnCVType<_Tp2>::_Type _Type2;
1583.247 -
1583.248 -  typedef _IsSameAux<_Type1, _Type2> _Aux;
1583.249 -  enum { _Ret = _Aux::_Ret };
1583.250 -  typedef typename _Aux::_RetT _RetT;
1583.251 -};
1583.252 -#endif
1583.253 -
1583.254 -/*
1583.255 - * The following struct will tell you if 2 types are the same, the limitations are:
1583.256 - *  - it compares the types without the const or volatile qualifiers, int and const int
1583.257 - *    will be considered as same for instance.
1583.258 - *  - the previous remarks do not apply to pointer types, int* and int const* won't be
1583.259 - *    considered as comparable. (int * and int *const are).
1583.260 - */
1583.261 -template <class _Tp1, class _Tp2>
1583.262 -struct _AreSameUnCVTypes {
1583.263 -  enum { _Same = _IsSame<_Tp1, _Tp2>::_Ret };
1583.264 -  typedef typename _IsSame<_Tp1, _Tp2>::_RetT _Ret;
1583.265 -};
1583.266 -
1583.267 -/* Rather than introducing a new macro for the following constrution we use
1583.268 - * an existing one (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS) that
1583.269 - * is used for a similar feature.
1583.270 - */
1583.271 -#if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
1583.272 -template <class _Src, class _Dst>
1583.273 -struct _ConversionHelper {
1583.274 -  static char _Test(bool, _Dst);
1583.275 -  static char* _Test(bool, ...);
1583.276 -  static _Src _MakeSource();
1583.277 -};
1583.278 -
1583.279 -template <class _Src, class _Dst>
1583.280 -struct _IsConvertible {
1583.281 -  typedef _ConversionHelper<_Src*, const volatile _Dst*> _H;
1583.282 -  enum { value = (sizeof(char) == sizeof(_H::_Test(false, _H::_MakeSource()))) };
1583.283 -  typedef typename __bool2type<value>::_Ret _Ret;
1583.284 -};
1583.285 -
1583.286 -/* This struct is intended to say if a pointer can be convertible to an other
1583.287 - * taking into account cv qualifications. It shouldn't be instanciated with
1583.288 - * something else than pointer type as it uses pass by value parameter that
1583.289 - * results in compilation error when parameter type has a special memory
1583.290 - * alignment
1583.291 - */
1583.292 -template <class _Src, class _Dst>
1583.293 -struct _IsCVConvertible {
1583.294 -#if !defined (__BORLANDC__)
1583.295 -  typedef _ConversionHelper<_Src, _Dst> _H;
1583.296 -  enum { value = (sizeof(char) == sizeof(_H::_Test(false, _H::_MakeSource()))) };
1583.297 -#else
1583.298 -  enum { _Is1 = __type2bool<_IsConst<_Src>::_Ret>::_Ret };
1583.299 -  enum { _Is2 = _IsConvertible<_UnConstPtr<_Src>::_Type, _UnConstPtr<_Dst>::_Type>::value };
1583.300 -  enum { value = _Is1 ? 0 : _Is2 };
1583.301 -#endif
1583.302 -  typedef typename __bool2type<value>::_Ret _Ret;
1583.303 -};
1583.304 -
1583.305 -#else
1583.306 -template <class _Src, class _Dst>
1583.307 -struct _IsConvertible {
1583.308 -  enum {value = 0};
1583.309 -  typedef __false_type _Ret;
1583.310 -};
1583.311 -#endif
1583.312 -
1583.313 -template <class _Tp>
1583.314 -struct _IsConst { typedef __false_type _Ret; };
1583.315 -
1583.316 -#if defined (_STLP_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_QUALIFIED_SPECIALIZATION_BUG)
1583.317 -template <class _Tp>
1583.318 -struct _IsConst <const _Tp> { typedef __true_type _Ret; };
1583.319 -#endif
1583.320 -
1583.321 -#  if defined(__BORLANDC__)
1583.322 -template<class _Tp>
1583.323 -struct _IsConst <const _Tp*> { typedef __true_type _Ret; };
1583.324 -
1583.325 -template<class _Tp>
1583.326 -struct _IsConst <const volatile _Tp*> { typedef __true_type _Ret; };
1583.327 -#  endif
1583.328 -
1583.329 -_STLP_END_NAMESPACE
1583.330 -
1583.331 -#endif /* _STLP_TYPE_MANIPS_H */
  1584.1 --- a/epoc32/include/tools/stlport/unordered_map	Tue Mar 16 16:12:26 2010 +0000
  1584.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1584.3 @@ -1,39 +0,0 @@
  1584.4 -/*
  1584.5 - * Copyright (c) 2004,2005
  1584.6 - * Francois Dumont
  1584.7 - *
  1584.8 - * This material is provided "as is", with absolutely no warranty expressed
  1584.9 - * or implied. Any use is at your own risk.
 1584.10 - *
 1584.11 - * Permission to use or copy this software for any purpose is hereby granted
 1584.12 - * without fee, provided the above notices are retained on all copies.
 1584.13 - * Permission to modify the code and to distribute modified code is granted,
 1584.14 - * provided the above notices are retained, and a notice that the code was
 1584.15 - * modified is included with the above copyright notice.
 1584.16 - *
 1584.17 - */
 1584.18 -
 1584.19 -#ifndef _STLP_UNORDERED_MAP
 1584.20 -#define _STLP_UNORDERED_MAP
 1584.21 -
 1584.22 -#ifndef _STLP_OUTERMOST_HEADER_ID
 1584.23 -#  define _STLP_OUTERMOST_HEADER_ID 0x4030
 1584.24 -#  include <stl/_prolog.h>
 1584.25 -#endif
 1584.26 -
 1584.27 -#ifdef _STLP_PRAGMA_ONCE
 1584.28 -#  pragma once
 1584.29 -#endif
 1584.30 -
 1584.31 -#include <stl/_unordered_map.h>
 1584.32 -
 1584.33 -#if (_STLP_OUTERMOST_HEADER_ID == 0x4030)
 1584.34 -#  include <stl/_epilog.h>
 1584.35 -#  undef _STLP_OUTERMOST_HEADER_ID
 1584.36 -#endif
 1584.37 -
 1584.38 -#endif /* _STLP_UNORDERED_MAP */
 1584.39 -
 1584.40 -// Local Variables:
 1584.41 -// mode:C++
 1584.42 -// End:
  1585.1 --- a/epoc32/include/tools/stlport/unordered_set	Tue Mar 16 16:12:26 2010 +0000
  1585.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1585.3 @@ -1,39 +0,0 @@
  1585.4 -/*
  1585.5 - * Copyright (c) 2004,2005
  1585.6 - * Francois Dumont
  1585.7 - *
  1585.8 - * This material is provided "as is", with absolutely no warranty expressed
  1585.9 - * or implied. Any use is at your own risk.
 1585.10 - *
 1585.11 - * Permission to use or copy this software for any purpose is hereby granted
 1585.12 - * without fee, provided the above notices are retained on all copies.
 1585.13 - * Permission to modify the code and to distribute modified code is granted,
 1585.14 - * provided the above notices are retained, and a notice that the code was
 1585.15 - * modified is included with the above copyright notice.
 1585.16 - *
 1585.17 - */
 1585.18 -
 1585.19 -#ifndef _STLP_UNORDERED_SET
 1585.20 -#define _STLP_UNORDERED_SET
 1585.21 -
 1585.22 -#ifndef _STLP_OUTERMOST_HEADER_ID
 1585.23 -#  define _STLP_OUTERMOST_HEADER_ID 0x4031
 1585.24 -#  include <stl/_prolog.h>
 1585.25 -#endif
 1585.26 -
 1585.27 -#ifdef _STLP_PRAGMA_ONCE
 1585.28 -#  pragma once
 1585.29 -#endif
 1585.30 -
 1585.31 -#include <stl/_unordered_set.h>
 1585.32 -
 1585.33 -#if (_STLP_OUTERMOST_HEADER_ID == 0x4031)
 1585.34 -#  include <stl/_epilog.h>
 1585.35 -#  undef _STLP_OUTERMOST_HEADER_ID
 1585.36 -#endif
 1585.37 -
 1585.38 -#endif /* _STLP_UNORDERED_SET */
 1585.39 -
 1585.40 -// Local Variables:
 1585.41 -// mode:C++
 1585.42 -// End:
  1586.1 --- a/epoc32/include/tsendasclientpanic.h	Tue Mar 16 16:12:26 2010 +0000
  1586.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1586.3 @@ -1,69 +0,0 @@
  1586.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1586.5 -// All rights reserved.
  1586.6 -// This component and the accompanying materials are made available
  1586.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1586.8 -// which accompanies this distribution, and is available
  1586.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1586.10 -//
 1586.11 -// Initial Contributors:
 1586.12 -// Nokia Corporation - initial contribution.
 1586.13 -//
 1586.14 -// Contributors:
 1586.15 -//
 1586.16 -// Description:
 1586.17 -//
 1586.18 -
 1586.19 -#ifndef __TSENDASCLIENTPANIC_H__
 1586.20 -#define __TSENDASCLIENTPANIC_H__
 1586.21 -
 1586.22 -/**
 1586.23 -Defines the SendAs client panic codes.
 1586.24 -
 1586.25 -@publishedAll
 1586.26 -@released
 1586.27 -*/
 1586.28 -enum TSendAsClientPanic
 1586.29 -	{
 1586.30 -	/**
 1586.31 -	Indicates an invalid request was made.
 1586.32 -	*/
 1586.33 -	ESendAsClientPanicBadRequest				= 0,
 1586.34 -
 1586.35 -	/**
 1586.36 -	Indicates a request was made on a session with an invalid handle.
 1586.37 -	*/
 1586.38 -	ESendAsClientPanicBadSubSessionHandle		= 1,
 1586.39 -	
 1586.40 -	/**
 1586.41 -	Indicates a request was made with invalid an argument.
 1586.42 -	*/
 1586.43 -	ESendAsClientPanicBadRequestArgument		= 2,
 1586.44 -	
 1586.45 -	/**
 1586.46 -	Indicates a request while the session is already in use.
 1586.47 -	*/
 1586.48 -	ESendAsClientPanicSubsessionInUse			= 3,
 1586.49 -	
 1586.50 -	/**
 1586.51 -	Indicates a request relating to a message was made where no message exists.
 1586.52 -	*/
 1586.53 -	ESendAsClientPanicNoCurrentMessage			= 4,
 1586.54 -
 1586.55 -	/**
 1586.56 -	Indicates a request deleting a non-existent message was made.
 1586.57 -	*/
 1586.58 -	ESendAsClientPanicMessageAlreadyDeleted		= 5,
 1586.59 -	
 1586.60 -	/**
 1586.61 -	Indicates a request to send a message encountered a problem.
 1586.62 -	*/
 1586.63 -	ESendAsClientPanicSendingMessage			= 6,
 1586.64 -
 1586.65 -	/**
 1586.66 -	Indicates a request to add or create an attachment encountered a problem.
 1586.67 -	*/
 1586.68 -	ESendAsClientPanicAddingCreatingAttachment  = 7
 1586.69 -
 1586.70 -	};
 1586.71 -
 1586.72 -#endif	//  __TSENDASCLIENTPANIC_H__
  1587.1 --- a/epoc32/include/tsendasmessagetypefilter.h	Tue Mar 16 16:12:26 2010 +0000
  1587.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1587.3 @@ -1,43 +0,0 @@
  1587.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1587.5 -// All rights reserved.
  1587.6 -// This component and the accompanying materials are made available
  1587.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1587.8 -// which accompanies this distribution, and is available
  1587.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1587.10 -//
 1587.11 -// Initial Contributors:
 1587.12 -// Nokia Corporation - initial contribution.
 1587.13 -//
 1587.14 -// Contributors:
 1587.15 -//
 1587.16 -// Description:
 1587.17 -//
 1587.18 -
 1587.19 -#ifndef __TSENDASMESSAGETYPEFILTER_H__
 1587.20 -#define __TSENDASMESSAGETYPEFILTER_H__
 1587.21 -
 1587.22 -
 1587.23 -#include <rsendas.h>
 1587.24 -
 1587.25 -/**
 1587.26 -This class encapsulates filter information for available message type modules
 1587.27 -(MTMs) held by the SendAs session.
 1587.28 -
 1587.29 -@publishedAll
 1587.30 -@released
 1587.31 -*/
 1587.32 -class TSendAsMessageTypeFilter
 1587.33 -	{
 1587.34 -public:
 1587.35 -	IMPORT_C TSendAsMessageTypeFilter();
 1587.36 -	IMPORT_C TSendAsMessageTypeFilter(TUid aMsgCap);
 1587.37 -	IMPORT_C TSendAsMessageTypeFilter(TUid aMsgCap, TInt aVal, RSendAs::TSendAsConditionType aCond);
 1587.38 -	IMPORT_C void Reset();
 1587.39 -public:
 1587.40 -	TUid iMessageCapability;
 1587.41 -	TInt iValue;
 1587.42 -	RSendAs::TSendAsConditionType iCondition;
 1587.43 -	};
 1587.44 -
 1587.45 -
 1587.46 -#endif	// __TSENDASMESSAGETYPEFILTER_H__
  1588.1 --- a/epoc32/include/tuladdressstringtokenizer.h	Tue Mar 16 16:12:26 2010 +0000
  1588.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1588.3 @@ -1,165 +0,0 @@
  1588.4 -/*
  1588.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
  1588.6 -* All rights reserved.
  1588.7 -* This component and the accompanying materials are made available
  1588.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1588.9 -* which accompanies this distribution, and is available
 1588.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1588.11 -*
 1588.12 -* Initial Contributors:
 1588.13 -* Nokia Corporation - initial contribution.
 1588.14 -*
 1588.15 -* Contributors:
 1588.16 -*
 1588.17 -* Description:
 1588.18 -*
 1588.19 -*/
 1588.20 -
 1588.21 -
 1588.22 -
 1588.23 -#ifndef __TULADDRESSSTRINGTOKENIZER_H__
 1588.24 -#define __TULADDRESSSTRINGTOKENIZER_H__
 1588.25 -
 1588.26 -#include <e32base.h>
 1588.27 -
 1588.28 -/**
 1588.29 -Address String Tokenizer API offers methods for parsing phone numbers and e-mail, 
 1588.30 -URL and URI addresses from the given text. The API consists of the 
 1588.31 -CTulAddressStringTokenizer class.
 1588.32 -
 1588.33 -Usage:
 1588.34 -
 1588.35 -@code
 1588.36 - #include <tuladdressstringtokenizer.h>
 1588.37 -
 1588.38 - // SFoundItem instance
 1588.39 - CTulAddressStringTokenizer::SFoundItem item;
 1588.40 -
 1588.41 - // Some text
 1588.42 - TBufC<256> strSomeText(_L("Mail to me@someplace.com or call 040 1234567. 
 1588.43 - You can also tune in to audio feed at rtsp://someplace.com/somefeed.ra."));
 1588.44 -	
 1588.45 - // First the user has to create an instance of CTulAddressStringTokenizer by using the
 1588.46 - // factory method NewL(). The method takes two parameters. The first 
 1588.47 - // parameter defines the text to be searched from and the second parameter 
 1588.48 - // tells what exactly is being looked for.
 1588.49 - CTulAddressStringTokenizer singleSearch = CTulAddressStringTokenizer::NewL(strSomeText, 
 1588.50 -                  CTulAddressStringTokenizer::EFindItemSearchMailAddressBin);
 1588.51 -
 1588.52 - // The passed text is parsed in construction, and found items can be fetched 
 1588.53 - // by using the ItemArray() method. It returns a constant array containing 
 1588.54 - // all the found items. The interface also offers helper functions for 
 1588.55 - // handling the item array by itself. 
 1588.56 -
 1588.57 - // Get count of found items.
 1588.58 - TInt count(singleSearch->ItemCount());
 1588.59 -
 1588.60 - // Get currently selected item (me@someplace.com) to the result1 variable.
 1588.61 - singleSearch->Item(item);
 1588.62 - TPtrC16 result1(strSomeText.Mid(item.iStartPos, item.iLength));
 1588.63 -
 1588.64 - // Deallocate memory
 1588.65 - delete singleSearch;
 1588.66 -
 1588.67 - // Create an instance of CTulAddressStringTokenizer and look for all possible 
 1588.68 - // things (cases work as binary mask).
 1588.69 - CTulAddressStringTokenizer* multiSearch = CTulAddressStringTokenizer::NewL(strSomeText,
 1588.70 -                  (CTulAddressStringTokenizer::EFindItemSearchPhoneNumberBin |           
 1588.71 -                  CTulAddressStringTokenizer::EFindItemSearchURLBin | 
 1588.72 -                  CTulAddressStringTokenizer::EFindItemSearchMailAddressBin | 
 1588.73 -                  CTulAddressStringTokenizer::EFindItemSearchScheme));
 1588.74 -
 1588.75 - // Get count of found items.
 1588.76 - TInt count2(multiSearch->ItemCount());
 1588.77 -
 1588.78 - // Get currently selected item to the result2 variable.
 1588.79 - multiSearch->Item(item);
 1588.80 -
 1588.81 - // Debug print all items and their type.
 1588.82 - for( TInt i=0; i<count2; i++)
 1588.83 -     {
 1588.84 -     TPtrC16 result2(strSomeText.Mid(item.iStartPos, item.iLength));
 1588.85 -     RDebug::Print(_L("Found type %d item:"), item.iItemType);
 1588.86 -     RDebug::Print(_L("%S"), &result2);
 1588.87 -     multiSearch->NextItem(item);
 1588.88 -     }
 1588.89 -
 1588.90 - // Deallocate memory
 1588.91 - delete multiSearch;
 1588.92 -@endcode
 1588.93 -
 1588.94 -@publishedAll
 1588.95 -@released
 1588.96 -*/
 1588.97 -
 1588.98 -class CTulAddressStringTokenizer : public CBase
 1588.99 -    {
1588.100 -public:
1588.101 -#define TFindItemSearchCase TTokenizerSearchCase	// For source compatibility with S60 only
1588.102 -    /**
1588.103 -    Enumeration to define the search case. 
1588.104 -    Multiple enumerations can be used as binary mask.
1588.105 -    */
1588.106 -    enum TTokenizerSearchCase
1588.107 -        {
1588.108 -        // Searches phone numbers.
1588.109 -		EFindItemSearchPhoneNumberBin = 4, 
1588.110 -        // Searches mail addresses.
1588.111 -        EFindItemSearchMailAddressBin = 8,
1588.112 -        // Searches fixed start URLs ("http://", "https://", "rtsp://"), "www.", "wap." and IPv4 addresses.
1588.113 -        EFindItemSearchURLBin  = 16,
1588.114 -        // Searches for all URIs containing a scheme.
1588.115 -        EFindItemSearchScheme  = 32
1588.116 -        };
1588.117 -
1588.118 -    // Struct to contain a found item.
1588.119 -    struct SFoundItem
1588.120 -        {
1588.121 -        TInt iStartPos;	// Start position of the found item.
1588.122 -        TInt iLength;	// Length of the found item (characters).
1588.123 -        TTokenizerSearchCase iItemType;		// Search case of the found item
1588.124 -		};
1588.125 -
1588.126 -public:  // Constructors and destructor
1588.127 -    IMPORT_C static CTulAddressStringTokenizer* NewL( const TDesC& aText, TInt aSearchCases );
1588.128 -    IMPORT_C static CTulAddressStringTokenizer* NewL( const TDesC& aText,  TInt aSearchCases, TInt aMinNumbers );
1588.129 -    IMPORT_C ~CTulAddressStringTokenizer();
1588.130 -public:
1588.131 -	IMPORT_C TInt ItemCount() const;
1588.132 -    IMPORT_C TBool Item( SFoundItem& aItem ) const;
1588.133 -    IMPORT_C TBool NextItem( SFoundItem& aItem );
1588.134 -    IMPORT_C TBool PrevItem( SFoundItem& aItem );
1588.135 -    IMPORT_C const CArrayFixFlat<SFoundItem>* ItemArray() const;
1588.136 -	IMPORT_C TInt Position() const;	
1588.137 -    IMPORT_C void ResetPosition();
1588.138 -    IMPORT_C TInt DoNewSearchL( const TDesC& aText, TInt aSearchCases);
1588.139 -    IMPORT_C TInt DoNewSearchL( const TDesC& aText, TInt aSearchCases,  TInt aMinNumbers );
1588.140 -private:
1588.141 -    CTulAddressStringTokenizer();
1588.142 -    void AddItemL( TInt aStartPos, TInt aLength, TTokenizerSearchCase aType );
1588.143 -
1588.144 -    TBool SearchPhoneNumberL( const TDesC& aText );
1588.145 -    TBool SearchMailAddressL( const TDesC& aText );  
1588.146 -    TBool SearchGenericUriL( const TDesC& aText );
1588.147 -    TBool SearchUrlL( const TDesC& aText, TBool aFindFixedSchemas );
1588.148 -    TBool ParseUrlL( const TDesC& aType, const TPtrC& aTokenPtr, TInt aTextOffset );
1588.149 -
1588.150 -    static TBool IsValidEmailChar(const TChar& charac); // Login part of the e-mail address
1588.151 -    static TBool IsValidEmailHostChar(const TChar& charac); // Host part of the e-mail address
1588.152 -    static TBool IsValidPhoneNumberChar(const TChar& charac); // Phone number
1588.153 -    static TBool IsValidUrlChar( const TChar& charac); // URL
1588.154 -
1588.155 -    void ConstructL( const TDesC& aText, TInt aSearchCases, TInt aMinNumbers );
1588.156 -	void PerformSearchL( const TDesC& aText, TInt aSearchCases );
1588.157 -    
1588.158 -    CTulAddressStringTokenizer( const CTulAddressStringTokenizer& );	// Prohibit copy constructor
1588.159 -    CTulAddressStringTokenizer& operator= ( const CTulAddressStringTokenizer& );  // Prohibit assigment operator
1588.160 -private:
1588.161 -    CArrayFixFlat<SFoundItem>* iFoundItems;		// Array of all found items.
1588.162 -    TInt iPosition;		// Engine's position in the iFoundItems.
1588.163 -    TInt iMinNumbers;	// Minimum count of numbers in a phone number
1588.164 -    };
1588.165 -
1588.166 -
1588.167 -#endif      // __TULADDRESSSTRINGTOKENIZER_H__
1588.168 -            
  1589.1 --- a/epoc32/include/tulpanics.h	Tue Mar 16 16:12:26 2010 +0000
  1589.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1589.3 @@ -1,55 +0,0 @@
  1589.4 -/*
  1589.5 -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
  1589.6 -* All rights reserved.
  1589.7 -* This component and the accompanying materials are made available
  1589.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1589.9 -* which accompanies this distribution, and is available
 1589.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1589.11 -*
 1589.12 -* Initial Contributors:
 1589.13 -* Nokia Corporation - initial contribution.
 1589.14 -*
 1589.15 -* Contributors:
 1589.16 -*
 1589.17 -* Description:
 1589.18 -*
 1589.19 -*/
 1589.20 -
 1589.21 -
 1589.22 -
 1589.23 -#ifndef __TULPANICS_H__
 1589.24 -#define __TULPANICS_H__
 1589.25 -
 1589.26 -// ========== DATA TYPES ===================================
 1589.27 -
 1589.28 -enum TTulPanic
 1589.29 -	{
 1589.30 -    ETulPanicDescriptorLength = 0x100,
 1589.31 -    ETulPanicInvalidTokenizerSearchCase
 1589.32 -	};
 1589.33 -
 1589.34 -
 1589.35 -//Error codes
 1589.36 -enum TStringLoaderPanic
 1589.37 -    {
 1589.38 -    ETooFewArguments        = 0, // Unsolved parameters in resource string.
 1589.39 -    ETooManyArguments       = 1, // Already solved all parameters in  resource string.
 1589.40 -    EKeyStringNotFound      = 2, // The key string wasn't found in formating.
 1589.41 -    EInvalidIndex           = 3, // Invalid index in Format-method
 1589.42 -    EDescriptorTooSmall     = 4, // Too small destination descriptor.
 1589.43 -    ECCoeEnvNotInitialized  = 5, // CCoeEnv is not initialized
 1589.44 -    EInvalidSubstitute      = 6  // Substituted string contains KSubStringSeparator
 1589.45 -    };
 1589.46 -
 1589.47 -
 1589.48 -// ========== FUNCTION PROTOTYPES ==========================
 1589.49 -
 1589.50 -// ---------------------------------------------------------
 1589.51 -// Panic
 1589.52 -//
 1589.53 -// ---------------------------------------------------------
 1589.54 -//
 1589.55 -GLREF_C void Panic (TTulPanic);
 1589.56 -
 1589.57 -#endif // __TULPANICS_H__
 1589.58 -
  1590.1 --- a/epoc32/include/tulphonenumberutils.h	Tue Mar 16 16:12:26 2010 +0000
  1590.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1590.3 @@ -1,115 +0,0 @@
  1590.4 -/*
  1590.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
  1590.6 -* All rights reserved.
  1590.7 -* This component and the accompanying materials are made available
  1590.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1590.9 -* which accompanies this distribution, and is available
 1590.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1590.11 -*
 1590.12 -* Initial Contributors:
 1590.13 -* Nokia Corporation - initial contribution.
 1590.14 -*
 1590.15 -* Contributors:
 1590.16 -*
 1590.17 -* Description:
 1590.18 -*
 1590.19 -*/
 1590.20 -
 1590.21 -
 1590.22 -
 1590.23 -#ifndef __TULPHONENUMBERUTILS_H__
 1590.24 -#define __TULPHONENUMBERUTILS_H__
 1590.25 -
 1590.26 -#include    <coemain.h>
 1590.27 -
 1590.28 -
 1590.29 -/**
 1590.30 -Class offers static methods for parsing and validating phone numbers. 
 1590.31 -Phone Parser API provides methods which are used to parse and validate
 1590.32 -phone numbers. The API consists of the TulPhoneNumberUtils class.
 1590.33 -
 1590.34 -Examples of valid phone numbers:
 1590.35 -1.	+358501234567
 1590.36 -2.	+358 (50) 123 4567
 1590.37 -
 1590.38 -Even though both of the above examples are valid phone numbers, only 1) is 
 1590.39 -accepted as a phone number by many systems. To convert 2) to 1), use the 
 1590.40 -parsing method of the API.
 1590.41 -
 1590.42 -Usage:
 1590.43 -  
 1590.44 -@code
 1590.45 - #include <tulphonenumberutils.h> 
 1590.46 -
 1590.47 - // Example shows how to use the parsing method of the API.
 1590.48 -
 1590.49 - // A number to be parsed. 
 1590.50 - TBuf<50> number1 = _L("+358 (40) 123 132");
 1590.51 -
 1590.52 - // Type of the phone number to be parsed is a regular phone number.
 1590.53 - TBool validNumber1 = 
 1590.54 - TulPhoneNumberUtils::NormalizePhoneNumber( number1,
 1590.55 -                                      TulPhoneNumberUtils::EPlainPhoneNumber );
 1590.56 -
 1590.57 - // The phone number number1 is a valid regular phone number.
 1590.58 - // After parsing validNumber1 is ETrue and 
 1590.59 - // number1 is "+35840123132".
 1590.60 - // Do something like SendSMS( number1 ) etc.
 1590.61 -
 1590.62 - // A number to be parsed. 
 1590.63 - TBuf<50> number2 = _L("+358 (40) 123p132"); // note 'p'
 1590.64 -
 1590.65 - // Type of the phone number to be parsed is a regular phone number.
 1590.66 - TBool validNumber2 = 
 1590.67 - TulPhoneNumberUtils::NormalizePhoneNumber( number2,
 1590.68 -                                      TulPhoneNumberUtils::EPlainPhoneNumber );
 1590.69 -
 1590.70 - // The phone number number2 is not a valid regular phone number.
 1590.71 - // After parsing validNumber2 is EFalse and 
 1590.72 - // number2 is "+358 (40) 123p132" (unchanged).
 1590.73 -@endcode
 1590.74 -
 1590.75 -@publishedAll
 1590.76 -@released
 1590.77 -*/
 1590.78 -NONSHARABLE_CLASS(TulPhoneNumberUtils)
 1590.79 -    {
 1590.80 -public:
 1590.81 -    /** 
 1590.82 -    * Enumeration for phone number types. 
 1590.83 -    * Used to specify the type of phone numbers in methods of 
 1590.84 -    * TulPhoneNumberUtils class.
 1590.85 -    */
 1590.86 -    enum TPhoneNumberType
 1590.87 -        {
 1590.88 -        /** The supplied phone number is a regular phone number. */
 1590.89 -        EPlainPhoneNumber,
 1590.90 -        /** The supplied phone number is a contact card number. */
 1590.91 -        EContactCardNumber,
 1590.92 -        /** The supplied phone number is is a phone client number. */
 1590.93 -        EPhoneClientNumber,
 1590.94 -        /** The supplied phone number is an SMS number. */
 1590.95 -        ESMSNumber
 1590.96 -        };
 1590.97 -
 1590.98 -    IMPORT_C static TBool Normalize( TDes& aNumber, TPhoneNumberType aType = EPlainPhoneNumber);
 1590.99 -    IMPORT_C static TBool IsValid( const TDesC& aNumber, TPhoneNumberType aType = EPlainPhoneNumber );
1590.100 -public: // deprecated
1590.101 -    inline static TBool ParsePhoneNumber( TDes& aNumber, TInt aType );
1590.102 -    inline static TBool IsValidPhoneNumber( const TDesC& aNumber, TInt aType );
1590.103 -private:    
1590.104 -    static TBool IsValidPhoneNumber( const TDesC& aNumber, const TDesC& aValidChars);
1590.105 -    static void ParseInvalidChars( TDes& aNumber, const TDesC& aInvalidChars);
1590.106 -    };
1590.107 -
1590.108 -// For source compatibility with S60
1590.109 -
1590.110 -/** @deprecated */
1590.111 -inline TBool TulPhoneNumberUtils::ParsePhoneNumber( TDes& aNumber, TInt aType )
1590.112 -	{ return TulPhoneNumberUtils::Normalize(aNumber, static_cast<TPhoneNumberType>(aType)); }
1590.113 -/** @deprecated */
1590.114 -inline TBool TulPhoneNumberUtils::IsValidPhoneNumber( const TDesC& aNumber, TInt aType )
1590.115 -	{ return TulPhoneNumberUtils::IsValid(aNumber, static_cast<TPhoneNumberType>(aType)); }
1590.116 -	
1590.117 -#endif      // __TULPHONENUMBERUTILS_H__
1590.118 -            
  1591.1 --- a/epoc32/include/tulstringresourcereader.h	Tue Mar 16 16:12:26 2010 +0000
  1591.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1591.3 @@ -1,76 +0,0 @@
  1591.4 -/*
  1591.5 -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
  1591.6 -* All rights reserved.
  1591.7 -* This component and the accompanying materials are made available
  1591.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1591.9 -* which accompanies this distribution, and is available
 1591.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1591.11 -*
 1591.12 -* Initial Contributors:
 1591.13 -* Nokia Corporation - initial contribution.
 1591.14 -*
 1591.15 -* Contributors:
 1591.16 -*
 1591.17 -* Description:
 1591.18 -*
 1591.19 -*/
 1591.20 -
 1591.21 -
 1591.22 -
 1591.23 -#ifndef TULSTRINGRESOURCEREADER_H
 1591.24 -#define TULSTRINGRESOURCEREADER_H
 1591.25 -
 1591.26 -#include <coemain.h> // RResourceReader
 1591.27 -
 1591.28 -/**
 1591.29 -CTulStringResourceReader reads strings from resource without CCoeEnv.
 1591.30 -If resource file given to the constructor is not found, the constructor leaves.
 1591.31 -This module is mainly for server usage, where there is the need to read resources,
 1591.32 -but no CCoeEnv instance is present.     
 1591.33 -
 1591.34 -Usage:
 1591.35 - 
 1591.36 -@code
 1591.37 -#include <stringresourcereader.h>
 1591.38 -#include <errorres.rsg> // Resource to be read header 
 1591.39 -
 1591.40 -TFileName myFileName( _L("z:\\resource\\errorres.rsc") );
 1591.41 -CTulStringResourceReader* test = CTulStringResourceReader::NewL( myFileName );
 1591.42 -
 1591.43 -TPtrC buf;
 1591.44 -buf.Set(test-> ReadResourceString(R_ERROR_RES_GENERAL)); 
 1591.45 -  
 1591.46 -// Note that buf will only be valid as long as CTulStringResourceReader 
 1591.47 -// instance is alive and no new string is read by the same instance.
 1591.48 -// If you need to read multiple strings, make copies.
 1591.49 -
 1591.50 -delete test;
 1591.51 -@endcode
 1591.52 -
 1591.53 -@publishedAll
 1591.54 -@released 
 1591.55 -*/
 1591.56 -class CTulStringResourceReader : public CBase
 1591.57 -    {
 1591.58 -public:  // Constructors and destructor
 1591.59 -    IMPORT_C static CTulStringResourceReader* NewL(TFileName& aResFile);
 1591.60 -    IMPORT_C static CTulStringResourceReader* NewLC(TFileName& aResFile);     
 1591.61 -    IMPORT_C static CTulStringResourceReader* NewL(TFileName& aResFile, RFs& aFs);
 1591.62 -    IMPORT_C static CTulStringResourceReader* NewLC(TFileName& aResFile, RFs& aFs);         
 1591.63 -    ~CTulStringResourceReader();
 1591.64 -public:
 1591.65 -	IMPORT_C const TDesC& ReadResourceString( TInt aResourceId );
 1591.66 -private:
 1591.67 -    CTulStringResourceReader();
 1591.68 -    void ConstructL(TFileName& aResFile);
 1591.69 -    void ConstructL(TFileName& aResFile, RFs& aFs);
 1591.70 -private:
 1591.71 -    RResourceFile iResourceFile;
 1591.72 -    HBufC* iResourceBuffer;
 1591.73 -    RFs iFsSession;
 1591.74 -    TPtrC iTruncatedTextPointer;
 1591.75 -    TBool iFsConnected; // ETrue if connected to the file server, else EFalse
 1591.76 -    };
 1591.77 -
 1591.78 -#endif      // TULSTRINGRESOURCEREADER_H
 1591.79 -            
  1592.1 --- a/epoc32/include/tultextresourceutils.h	Tue Mar 16 16:12:26 2010 +0000
  1592.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1592.3 @@ -1,250 +0,0 @@
  1592.4 -/*
  1592.5 -* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
  1592.6 -* All rights reserved.
  1592.7 -* This component and the accompanying materials are made available
  1592.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1592.9 -* which accompanies this distribution, and is available
 1592.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1592.11 -*
 1592.12 -* Initial Contributors:
 1592.13 -* Nokia Corporation - initial contribution.
 1592.14 -*
 1592.15 -* Contributors:
 1592.16 -*
 1592.17 -* Description:
 1592.18 -*
 1592.19 -*/
 1592.20 -
 1592.21 -
 1592.22 -
 1592.23 -#ifndef __TULTEXTRESOURCEUTILS_H__
 1592.24 -#define __TULTEXTRESOURCEUTILS_H__
 1592.25 -
 1592.26 -#include <e32std.h>
 1592.27 -#include <e32base.h>	// class CArrayFix
 1592.28 -#include <bamdesca.h>	// class MDesCArray
 1592.29 -#include <biditext.h>	// class TBidiText
 1592.30 -class CCoeEnv;
 1592.31 -
 1592.32 -
 1592.33 -/**
 1592.34 -Utility that provides methods to load and format resource strings.
 1592.35 -String Loader API provides an interface to load and format resource strings
 1592.36 -that may contain parameter(s) (\%U for (unicode) text or or \%N for numerical).
 1592.37 -Resource strings are usually defined in an RSS file.
 1592.38 -
 1592.39 -The API consists of the TulTextResourceUtils class. All methods are static, so there is
 1592.40 -no need to explicitly allocate memory for the interface class.
 1592.41 -The implementation needs a CCoeEnv instance to access for example the
 1592.42 -resource files.
 1592.43 -
 1592.44 -
 1592.45 -Usage:
 1592.46 -
 1592.47 -Applications load and format resource strings from normal resources with
 1592.48 -static methods of the TulTextResourceUtils class. The loading is done with the LoadL
 1592.49 -and LoadLC methods and with the Load method in situations where memory
 1592.50 -allocation from the heap is not possible. Formatting is done automatically
 1592.51 -after loading in the LoadL and LoadLC methods, but it can also be done
 1592.52 -separately with the Format method in situations where memory allocation from
 1592.53 -the heap is not possible. For reading the resource strings with the Load,
 1592.54 -LoadL and LoadLC methods, the user should provide a pointer to CCoeEnv for
 1592.55 -efficiency reasons. If the pointer is not provided, the implementation uses
 1592.56 -the CCoeEnv::Static method internally to get it.
 1592.57 -
 1592.58 -Different size displays can handle different length strings. To take full
 1592.59 -advantage of this fact, TulTextResourceUtils supports resource strings with multiple
 1592.60 -options for strings, separated by the character 0x0001. Each such string can
 1592.61 -contain the same or different sub string keys (\%U and \%N). TulTextResourceUtils returns
 1592.62 -all strings, it is the responsibility of the caller to parse the result and
 1592.63 -choose the proper string to display.
 1592.64 -
 1592.65 -Setting the maximum sub string length may be done in the text resources. Sub
 1592.66 -string maximum lengths can be localized separately for every language.
 1592.67 -The maximum sub string length is of the format: \%U[NN]
 1592.68 -where NN is a number [01..99]. Please note that NN must always consist of two
 1592.69 -characters, i.e. if the sub string maximum length is eight characters, the
 1592.70 -value to be used is 08, not plain 8. If the number of characters exceeds the
 1592.71 -maximum length, the sub string is cut to fit and the last character is
 1592.72 -replaced with an ellipsis character.
 1592.73 -
 1592.74 -The following examples describe the usage of the String Loader API.
 1592.75 -
 1592.76 -Usage when one TInt is added:
 1592.77 -
 1592.78 -@code
 1592.79 - // In .loc -file
 1592.80 - // #define text_example "You have %N undone tasks."
 1592.81 -
 1592.82 - // In .rss -file
 1592.83 - // RESOURCE TBUF r_text_example { buf = text_example; }
 1592.84 -
 1592.85 - // (In the .cpp -file)
 1592.86 - #include <coeutils.h>
 1592.87 -
 1592.88 - // Get CCoeEnv instance
 1592.89 - CEikonEnv* iEikonEnv = CEikonEnv::Static();
 1592.90 -
 1592.91 - TInt number(324);
 1592.92 -
 1592.93 - // Method reads a resource string with memory allocation
 1592.94 - // and replaces the first %N-string in it with replacement TInt.
 1592.95 - // The heap descriptor must be destroyed when it is no longer needed.
 1592.96 - // iEikonEnv is needed for loading the resource string.
 1592.97 - HBufC* stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE, number, iEikonEnv);
 1592.98 -
 1592.99 - // The 'number' is added to the resource string. The result is
1592.100 - // that stringholder points to a heap descriptor containing string:
1592.101 - // "You have 324 undone tasks."
1592.102 -
1592.103 - // Delete the heap descriptor
1592.104 - delete stringholder;
1592.105 -@endcode
1592.106 -
1592.107 -
1592.108 -Usage when several strings are added:
1592.109 -
1592.110 -An index can be included to parameters. Several parameters can have same index
1592.111 -if the same replacement is needed multiple times.
1592.112 -
1592.113 -@code
1592.114 - // In .loc -file
1592.115 - // #define text_example "I'm %2U%1U %3U%0U fine."
1592.116 -
1592.117 - // In .rss -file
1592.118 - // RESOURCE TBUF r_text_example { buf = text_example; }
1592.119 -
1592.120 - // In the .cpp -file
1592.121 - #include <coeutils.h>
1592.122 -
1592.123 - // Get CCoeEnv instance
1592.124 - CEikonEnv* iEikonEnv = CEikonEnv::Static();
1592.125 -
1592.126 - CDesCArrayFlat* strings = new CDesCArrayFlat(4);
1592.127 - CleanupStack::PushL(strings);
1592.128 -
1592.129 - strings->AppendL(_L("orking")); //First string
1592.130 -
1592.131 - strings->AppendL(_L("ll")); //Second string
1592.132 -
1592.133 - strings->AppendL(_L("sti")); //Third string
1592.134 -
1592.135 - strings->AppendL(_L("w")); //Fourth string
1592.136 -
1592.137 - // Method reads a resource string with memory allocation and replaces
1592.138 - // the %(index)U strings in it with replacement strings from an array.
1592.139 - // The heap descriptor must be destroyed when it is no longer needed.
1592.140 - // iEikonEnv is needed for loading the resource string.
1592.141 - HBufC* stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE, *strings, iEikonEnv);
1592.142 -
1592.143 - // Four strings are added to the resource string. The result is
1592.144 - // that stringholder points to a heap descriptor containing string:
1592.145 - // "I'm still working fine."
1592.146 -
1592.147 - // Pop and delete strings array
1592.148 - CleanupStack::PopAndDestroy();
1592.149 -
1592.150 - // Delete the heap descriptor
1592.151 - delete stringholder;
1592.152 -@endcode
1592.153 -
1592.154 -
1592.155 -Usage with scalable UI support:
1592.156 -
1592.157 -@code
1592.158 - // In .loc -file
1592.159 - // #define TEXT_EXAMPLE "You have missed %N messages from %U."<0x0001>"Missed %N msgs from %U."<0x0001>"Missed %N msgs."
1592.160 -
1592.161 - // In .rss -file
1592.162 - // RESOURCE TBUF R_TEXT_EXAMPLE { buf = TEXT_EXAMPLE; }
1592.163 -
1592.164 - // In the .cpp -file
1592.165 - #include <coeutils.h>
1592.166 -
1592.167 - // Get CCoeEnv instance
1592.168 - CEikonEnv* iEikonEnv = CEikonEnv::Static();
1592.169 -
1592.170 - TInt number(12);
1592.171 - _LIT(name, "John Doe");
1592.172 -
1592.173 - // Method reads a resource string with memory allocation,
1592.174 - // replaces all %N strings in it with a replacement TInt and
1592.175 - // all %U strings in it with a replacement string.
1592.176 - // The heap descriptor must be destroyed  when it is no longer needed.
1592.177 - // iEikonEnv is needed for loading the resource string.
1592.178 - HBufC stringholder = TulTextResourceUtils::LoadL(R_TEXT_EXAMPLE, name, number, iEikonEnv);
1592.179 -
1592.180 - // The number and name are added to the resource string. The result is
1592.181 - // that stringholder points to a heap descriptor containing string:
1592.182 - // "You have missed 12 messages from John Doe.\001Missed 12 msgs from John
1592.183 - // Doe.\001Missed 12 msgs."
1592.184 -
1592.185 - // Delete the heap descriptor
1592.186 - delete stringholder;
1592.187 -@endcode
1592.188 -
1592.189 -
1592.190 -Error handling:
1592.191 -
1592.192 -The leave mechanism of the Symbian OS environment is used to handle memory
1592.193 -exhaustion. The panic mechanism is used to handle programming errors while
1592.194 -debugging. TulTextResourceUtils panics for seven different reasons. The panic 
1592.195 -category is named TulTextResourceUtils. The panic codes are:
1592.196 -
1592.197 -- ETooFewArguments        = 0 (Unsolved parameters in resource string.)
1592.198 -- ETooManyArguments       = 1 (Already solved all parameters in  resource string.)
1592.199 -- EKeyStringNotFound      = 2 (The key string wasn't found in formatting.)
1592.200 -- EInvalidIndex           = 3 (Invalid index in Format-method)
1592.201 -- EDescriptorTooSmall     = 4 (Too small destination descriptor.)
1592.202 -- ECCoeEnvNotInitialized  = 5 (CCoeEnv is not initialized)
1592.203 -- EInvalidSubstitute      = 6 (Substituted string contains KSubStringSeparator)
1592.204 -
1592.205 -@publishedAll
1592.206 -@released
1592.207 -*/
1592.208 -NONSHARABLE_CLASS(TulTextResourceUtils)
1592.209 -    {
1592.210 -public:
1592.211 -    IMPORT_C static void Load(TDes& aDest, TInt aResourceId, CCoeEnv* aLoaderEnv = NULL);
1592.212 -    IMPORT_C static void Format(TDes& aDest, const TDesC& aSource, TInt aPosition, TInt aSubs);
1592.213 -    IMPORT_C static void Format(TDes& aDest, const TDesC& aSource, TInt aPosition, const TDesC& aSubs);
1592.214 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, CCoeEnv* aLoaderEnv = NULL);
1592.215 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
1592.216 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, const TDesC& aString, CCoeEnv* aLoaderEnv = NULL);
1592.217 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, const TDesC& aString, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
1592.218 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
1592.219 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, const MDesCArray& aStrings, CCoeEnv* aLoaderEnv = NULL);
1592.220 -    IMPORT_C static HBufC* LoadL(TInt aResourceId, const MDesCArray& aStrings, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
1592.221 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, CCoeEnv* aLoaderEnv = NULL);
1592.222 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
1592.223 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const TDesC& aString, CCoeEnv* aLoaderEnv = NULL);
1592.224 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const TDesC& aString, TInt aInt, CCoeEnv* aLoaderEnv = NULL);
1592.225 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
1592.226 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const MDesCArray& aStrings, CCoeEnv* aLoaderEnv = NULL);
1592.227 -    IMPORT_C static HBufC* LoadLC(TInt aResourceId, const MDesCArray& aStrings, const CArrayFix<TInt>& aInts, CCoeEnv* aLoaderEnv = NULL);
1592.228 -private:
1592.229 -    TulTextResourceUtils();
1592.230 -    TulTextResourceUtils(const TulTextResourceUtils&);	// Prohibit copy constructor
1592.231 -    TulTextResourceUtils& operator= (const TulTextResourceUtils&);	// Prohibit assigment operator
1592.232 -    static HBufC* FormatStringL(const TDesC& aSource, const TDesC& aKey, const TDesC& aSubs, TBidiText::TDirectionality aDir);
1592.233 -    static HBufC* FormatStringL(const TDesC& aSource, const TDesC& aKey, const TDesC& aSubs,
1592.234 -        						 TBidiText::TDirectionality aDirectionality, TInt& aParamCount, TInt aSubCount);
1592.235 -    static HBufC* FormatStringL(TDesC& aSource, const CArrayFix<TInt>& aInts, TInt aMax, TBidiText::TDirectionality aDir);
1592.236 -    static HBufC* FormatStringL(TDesC& aSource, const MDesCArray& aStrings, TInt aMax, TBidiText::TDirectionality aDir);
1592.237 -    static TInt Formater(TDes& aDest, const TDesC& aSource, const TDesC& aKey,
1592.238 -        					const TDesC& aSubs, TBidiText::TDirectionality aDirectionality);
1592.239 -
1592.240 -    static void KeyStringFormater(TDes& aDest, const TText& aKey, TInt aPosition, const TDesC& aKeyString);
1592.241 -    static TBidiText::TDirectionality ResolveDirectionality(TDes& aText, TBool* aFound);
1592.242 -    static TInt GetParamCount(const TDesC& aText, TInt aIndex = -1);
1592.243 -    static TInt GetSubStringCount(const TDesC& aText);
1592.244 -        
1592.245 -    static TBidiText::TDirectionality DirectionalityL(const TDesC& aText, TBool* aFound);
1592.246 -    static HBufC* ResolveSubStringDirsL(TDes& aText, TInt aCount, TBool* aMarker);
1592.247 -    static HBufC* ResolveSubStringL(TDes& aText, TBool* aMarker);
1592.248 -    static void RemoveNoDirMarkers(TDes& aText);
1592.249 -    static void FormatL(TDes& aDest, const TDesC& aSource, const TDesC& aKeybuf, const TDesC& aSubs);
1592.250 -    };
1592.251 -
1592.252 -
1592.253 -#endif	// __TULTEXTRESOURCEUTILS_H__
  1593.1 --- a/epoc32/include/tz.h	Tue Mar 16 16:12:26 2010 +0000
  1593.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1593.3 @@ -1,347 +0,0 @@
  1593.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1593.5 -// All rights reserved.
  1593.6 -// This component and the accompanying materials are made available
  1593.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1593.8 -// which accompanies this distribution, and is available
  1593.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1593.10 -//
 1593.11 -// Initial Contributors:
 1593.12 -// Nokia Corporation - initial contribution.
 1593.13 -//
 1593.14 -// Contributors:
 1593.15 -//
 1593.16 -// Description:
 1593.17 -//
 1593.18 -
 1593.19 -#ifndef __TIMEZONE_H__
 1593.20 -#define __TIMEZONE_H__
 1593.21 -
 1593.22 -#include <e32base.h>
 1593.23 -#include <s32std.h>
 1593.24 -#include <tzdefines.h>
 1593.25 -#include <tzupdate.h>
 1593.26 -
 1593.27 -class CTzChangeNotifier;
 1593.28 -class CTzRules;
 1593.29 -class CTzRuleHolder;
 1593.30 -
 1593.31 -//-------------------------------------------------------------------------
 1593.32 -/**
 1593.33 -Encapsulates a time zone identifier.
 1593.34 -
 1593.35 -The identifier may be either a name or a number.
 1593.36 -@publishedAll
 1593.37 -@released
 1593.38 -@since 9.1
 1593.39 -*/
 1593.40 -class CTzId : public CBase
 1593.41 -	{
 1593.42 -public:
 1593.43 -
 1593.44 -	IMPORT_C ~CTzId();
 1593.45 -	
 1593.46 -	/** 
 1593.47 -	@internalComponent 
 1593.48 -	*/
 1593.49 -	IMPORT_C CTzId* CloneL() const;
 1593.50 -	
 1593.51 -	IMPORT_C static CTzId* NewL(TUint aNumericId);
 1593.52 -	
 1593.53 -	IMPORT_C static CTzId* NewL(const TDesC8& aNameIdentity);
 1593.54 -	
 1593.55 -	/** 
 1593.56 -	@internalComponent 
 1593.57 -	*/
 1593.58 -	IMPORT_C static CTzId* NewL(RReadStream& aStream);
 1593.59 -	
 1593.60 -	/** 
 1593.61 -	@internalComponent 
 1593.62 -	*/
 1593.63 -	IMPORT_C void SetId(TUint aNumericId);
 1593.64 -	
 1593.65 -	/** 
 1593.66 -	@internalComponent 
 1593.67 -	*/
 1593.68 -	IMPORT_C void SetIdL(const TDesC8& aNameIdentity);
 1593.69 -	
 1593.70 -	/** 
 1593.71 -	@internalComponent 
 1593.72 -	*/
 1593.73 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 1593.74 -	
 1593.75 -	/** 
 1593.76 -	@internalComponent 
 1593.77 -	*/
 1593.78 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
 1593.79 -
 1593.80 -	IMPORT_C const TDesC8& TimeZoneNameID() const;
 1593.81 -	
 1593.82 -	IMPORT_C TUint TimeZoneNumericID() const;
 1593.83 -	
 1593.84 -	IMPORT_C TBool operator==(const CTzId& aTZId) const;
 1593.85 -
 1593.86 -	inline TBool operator!=(const CTzId& aTZId) const;
 1593.87 -
 1593.88 -public:
 1593.89 -	static CTzId* NewL(TUint aReferenceId, const TDesC8& aZoneIdentity);
 1593.90 -	void SetIdL(TUint aNumRefId, const TDesC8& aZoneIdentity);
 1593.91 -
 1593.92 -private:
 1593.93 -	void ConstructL(const TDesC8& aZoneIdentity);
 1593.94 -	CTzId();
 1593.95 -	CTzId(TUint aNumericId);
 1593.96 -
 1593.97 -private:
 1593.98 -	HBufC8* iZoneId;
 1593.99 -	TUint32 iReferenceId;
1593.100 -	};
1593.101 -
1593.102 -
1593.103 -/** 
1593.104 -The client interface to the time zone server. 
1593.105 -
1593.106 -This class performs two basic functions:
1593.107 -1. Converts between UTC time and local time.
1593.108 -2. Sets the current local time zone.
1593.109 -
1593.110 -NOTE: The presence of a time zone server will alter the behaviour of the 
1593.111 -time zone related function calls User::SetUTCOffset() and 
1593.112 -User::SetUTCTimeAndOffset(). The time zone server is shutdown when the 
1593.113 -last session (RTz) is closed. Therefore, to maintain consistent time related behaviour, 
1593.114 -licensees may want to keep a system level time zone server session open at all times.
1593.115 -
1593.116 -@see User
1593.117 -
1593.118 -Exceptional cases occur when a user requests conversion 
1593.119 -for a non-existent local time or a double local time. 
1593.120 -
1593.121 -Non-existent local times occur when the local time 
1593.122 -changes from winter to summer for DST.
1593.123 -
1593.124 -For example, 01:59 local time is non-existent on the day of a change to BST
1593.125 -in Europe/London since the time changes directly from 12:59:59 to 2:00.
1593.126 -
1593.127 -A double local time occurs when the local time changes from
1593.128 -summer to winter. 
1593.129 -
1593.130 -For example, if the time changes at 02:00 AM BST to 01:00 AM GMT
1593.131 -then local times between 01:00 and 01:59 occur twice.
1593.132 -
1593.133 -The conversion applies the DST offset if the local time value is double and applies
1593.134 -the standard UTC offset if the local time does not exists.
1593.135 -
1593.136 -This decision makes the conversion process asymmetrical around
1593.137 -the discontinuity in the local time when there is a DST change.
1593.138 -
1593.139 -An example conversion from a double local time to UTC and 
1593.140 -from UTC to a double local time is:
1593.141 -
1593.142 -	01:59 AM BST => 00:59 AM UTC
1593.143 -	01:59 AM UTC => 01:59 AM GMT
1593.144 -	
1593.145 -An example conversion from a non-existent local time to UTC 
1593.146 -and from UTC to local time is:
1593.147 -
1593.148 -    01:59 AM GMT => 01:59 AM UTC
1593.149 -    01:59 AM UTC => 02:59 AM BST 	
1593.150 -	
1593.151 -
1593.152 -@publishedAll
1593.153 -@released
1593.154 -@since 9.1
1593.155 -*/
1593.156 -class RTz : public RSessionBase
1593.157 -	{
1593.158 -public:
1593.159 -	/**
1593.160 -	These enumerators are to describe different modes of the automatic 
1593.161 -	DST event handling.
1593.162 -
1593.163 -	These are used both as arguments for the API SetAutoUpdateBehaviorL, 
1593.164 -	and as notifications for the publish and subscribe.
1593.165 -	*/
1593.166 -	enum TTzAutoDSTUpdateModes
1593.167 -		{
1593.168 -		/** No auto update notification when a DST event occurs. */
1593.169 -		ETZAutoDSTUpdateOff = 0,
1593.170 -
1593.171 -		/** Automatic time update will occur and the client app will be notified. */
1593.172 -		ETZAutoDSTUpdateOn,
1593.173 -
1593.174 -		/** Client app needs to confirm that the time should be updated whenever a DST event occurs. */
1593.175 -		ETZAutoDSTNotificationOnly,
1593.176 -		};
1593.177 -
1593.178 -	enum TTzChanges
1593.179 -		{
1593.180 -		/** Used for notifying that the timezone database has changed.*/
1593.181 -		ETZDatabaseChanged = 1,
1593.182 -		/** Used for notifying that the system timezone database has changed.*/
1593.183 -		ETZSystemTimeZoneChanged,
1593.184 -		/** Used for notifying that the DST rule has changed. */
1593.185 -		ETZDSTRuleChanged,
1593.186 -		/** Used for notifying that an automatic time update has taken place. */
1593.187 -		ETZAutomaticTimeUpdate
1593.188 -		};
1593.189 -
1593.190 -	enum TPanic
1593.191 -		{
1593.192 -		/** This panic indicates that the time zone server has not been found.*/
1593.193 -		EPanicServerNotFound = 1,
1593.194 -		/** This panic indicates that the server has died.*/
1593.195 -		EPanicServerDead,
1593.196 -		/** This panic indicates that the time zone ID is not set.*/
1593.197 -		EPanicTimeZoneNameIdNotSet,
1593.198 -		/** This panic indicates that an out of range index was accessed.*/
1593.199 -		EPanicRulesIndexOutofRange,
1593.200 -		/** This panic indicates that there are no rules present for this time zone.*/
1593.201 -		EPanicTimeNotCoveredByRules,
1593.202 -		/** This panic indicates that the time zone rules are unusable.*/
1593.203 -		EPanicBadTimeZoneRules,
1593.204 -		/** This panic indicates  that an unsupported time reference has been accessed.*/
1593.205 -		EPanicUnsupportedTimeReference,
1593.206 -		/** This panic indicates that the time zone ID is not supported.*/
1593.207 -		EPanicUnsupportedTimeZoneNoId,
1593.208 -		/** This panic indicates that a request for notification is already pending from the client.*/
1593.209 -		EPanicNotificationRequestPending,
1593.210 -		/** This panic indicates that an incorrect data has been sent to the server.*/
1593.211 -		EPanicInvalidArgument
1593.212 -		};
1593.213 -	
1593.214 -	/** 
1593.215 -	@internalComponent 
1593.216 -	*/
1593.217 -	IMPORT_C static void Panic(TPanic aPanic);
1593.218 -	
1593.219 -	/** 
1593.220 -	@internalTechnology
1593.221 -	*/
1593.222 -	IMPORT_C CTzId* GetTimeZoneIdL() const;
1593.223 -	
1593.224 -	/** 
1593.225 -	@internalTechnology
1593.226 -	*/
1593.227 -	IMPORT_C void SetTimeZoneL(CTzId& aZone) const;
1593.228 -
1593.229 -	IMPORT_C void Close();
1593.230 -	
1593.231 -	IMPORT_C TInt Connect();
1593.232 -
1593.233 -	IMPORT_C ~RTz();
1593.234 -	
1593.235 -	IMPORT_C RTz();
1593.236 -	
1593.237 -	IMPORT_C TInt ConvertToLocalTime(TTime& aTime) const;
1593.238 -	
1593.239 -	IMPORT_C TInt ConvertToLocalTime(TTime& aTime, const CTzId& aZone) const;
1593.240 -
1593.241 -	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime) const;
1593.242 -	
1593.243 -	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime, const CTzId& aZone) const;
1593.244 -	
1593.245 -	IMPORT_C void GetOffsetsForTimeZoneIdsL(const RArray<TInt>& aTzNumericIds, RArray<TInt>& aOffsets) const; 
1593.246 -	
1593.247 -	IMPORT_C TInt AutoUpdateSettingL();
1593.248 -	
1593.249 -    IMPORT_C void SetAutoUpdateBehaviorL(TTzAutoDSTUpdateModes aUpdateEnabled);
1593.250 -    
1593.251 -    // Methods for setting the system time.
1593.252 -    IMPORT_C TInt SetHomeTime(const TTime& aLocalTime) const;
1593.253 -
1593.254 -    IMPORT_C TBool IsDaylightSavingOnL(CTzId& aZone) const;
1593.255 -    
1593.256 -    IMPORT_C TBool IsDaylightSavingOnL(CTzId& aZone, const TTime& aUTCTime) const;
1593.257 -
1593.258 - 	// Get Encoded Rules for Current Local Time Zone
1593.259 -	IMPORT_C CTzRules* GetTimeZoneRulesL(const TTime& aStartTime, const TTime& aEndTime, TTzTimeReference aTimeRef) const;
1593.260 -	
1593.261 -	IMPORT_C CTzRules* GetTimeZoneRulesL(const CTzId& aZone, const TTime& aStartTime, const TTime& aEndTime, TTzTimeReference aTimeRef) const;
1593.262 -	
1593.263 -	void RegisterTzChangeNotifier(TRequestStatus& aStatus) const;
1593.264 -	TInt CancelRequestForNotice() const;
1593.265 -	TVersion Version() const;
1593.266 -	
1593.267 -	IMPORT_C void NotifyHomeTimeZoneChangedL(const NTzUpdate::TTimeZoneChange& aChange) const;
1593.268 -	
1593.269 -	IMPORT_C void SetUnknownZoneTimeL(const TTime& aUTCTime, const TInt aUTCOffset);
1593.270 -	
1593.271 -	IMPORT_C void SetUnknownZoneTimeL(const TTime& aUTCTime, const TInt aUTCOffset, TBool aPersistInCenRep);
1593.272 -
1593.273 -	IMPORT_C void __dbgClearCacheL(TBool aRestartCaching);
1593.274 -
1593.275 -    TBool StartCachingL();
1593.276 -    TUint16 CurrentCachedTzId();
1593.277 -
1593.278 -private:
1593.279 -	static TInt StartServer();
1593.280 -	TInt DoConnect();
1593.281 -	void doConvertL(const CTzId& aZone, TTime& aTime,
1593.282 -					TTzTimeReference aTimerRef) const;
1593.283 -	void doConvertL(TTime& aTime, 
1593.284 -					TTzTimeReference aTimerRef) const;
1593.285 -private:
1593.286 -	CTzRuleHolder* iRulesHolder;
1593.287 -	};
1593.288 -
1593.289 -/**
1593.290 -Encapsulates a TTime and a TTzTimeReference.
1593.291 -Use, for example, for iCalendar's DTSTART.
1593.292 -
1593.293 -@publishedAll
1593.294 -@released
1593.295 -*/
1593.296 -class TTimeWithReference
1593.297 -	{
1593.298 -public:
1593.299 -	static inline TTimeWithReference Max();
1593.300 -	inline TTimeWithReference();
1593.301 -	inline TTimeWithReference(TTime aTime, TTzTimeReference aTimeReference=ETzUtcTimeReference);
1593.302 -	inline TTimeWithReference(TDateTime aTime, TTzTimeReference aTimeReference=ETzUtcTimeReference);
1593.303 -	inline bool operator==(const TTimeWithReference& aTime) const;
1593.304 -	inline bool operator!=(const TTimeWithReference& aTime) const;
1593.305 -
1593.306 -	TTime iTime;
1593.307 -	TTzTimeReference iTimeReference;
1593.308 -	};
1593.309 -
1593.310 -/** Inequality operator.
1593.311 -
1593.312 -@param aTZId The time zone ID to compare with this one.
1593.313 -@return True if the two IDs are different. False if they are the same.
1593.314 -*/
1593.315 -inline TBool CTzId::operator!=(const CTzId& aTZId) const
1593.316 -	{
1593.317 -	return (!operator==(aTZId));
1593.318 -	}
1593.319 -
1593.320 -//////////////////////////////////
1593.321 -// TTimeWithReference
1593.322 -//////////////////////////////////
1593.323 -inline TTimeWithReference TTimeWithReference::Max()
1593.324 -	{
1593.325 -	return TTimeWithReference(
1593.326 -		TDateTime(9999,EDecember,30,23,59,59,0), 
1593.327 -		ETzUtcTimeReference);
1593.328 -	}
1593.329 -
1593.330 -inline TTimeWithReference::TTimeWithReference() 
1593.331 -		: iTime(0), iTimeReference(ETzUtcTimeReference)
1593.332 -	{
1593.333 -	}
1593.334 -inline TTimeWithReference::TTimeWithReference(TTime aTime, TTzTimeReference aTimeReference)
1593.335 -		: iTime(aTime), iTimeReference(aTimeReference)
1593.336 -	{
1593.337 -	}
1593.338 -inline TTimeWithReference::TTimeWithReference(TDateTime aTime, TTzTimeReference aTimeReference)
1593.339 -		: iTime(aTime), iTimeReference(aTimeReference)
1593.340 -	{
1593.341 -	}
1593.342 -inline bool TTimeWithReference::operator==(const TTimeWithReference& aTime) const
1593.343 -	{
1593.344 -	return(aTime.iTime == iTime && aTime.iTimeReference == iTimeReference);
1593.345 -	}
1593.346 -inline bool TTimeWithReference::operator!=(const TTimeWithReference& aTime) const
1593.347 -	{
1593.348 -	return(!(*this == aTime));
1593.349 -	}
1593.350 -#endif
  1594.1 --- a/epoc32/include/tzconverter.h	Tue Mar 16 16:12:26 2010 +0000
  1594.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1594.3 @@ -1,62 +0,0 @@
  1594.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1594.5 -// All rights reserved.
  1594.6 -// This component and the accompanying materials are made available
  1594.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1594.8 -// which accompanies this distribution, and is available
  1594.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1594.10 -//
 1594.11 -// Initial Contributors:
 1594.12 -// Nokia Corporation - initial contribution.
 1594.13 -//
 1594.14 -// Contributors:
 1594.15 -//
 1594.16 -// Description:
 1594.17 -//
 1594.18 -
 1594.19 -#ifndef __TZ_CONVERTER_H__
 1594.20 -#define __TZ_CONVERTER_H__
 1594.21 -
 1594.22 -#include <e32base.h>
 1594.23 -#include <tz.h>
 1594.24 -#include <tzdefines.h>
 1594.25 -
 1594.26 -class CTzChangeNotifier;
 1594.27 -class CVTzActualisedRules;
 1594.28 -class CTzRuleHolder;
 1594.29 -
 1594.30 -/**
 1594.31 -Converts between time expressed in UTC and local time. 
 1594.32 -
 1594.33 -@publishedAll
 1594.34 -@released
 1594.35 -
 1594.36 -@see RTz
 1594.37 -@since 9.1
 1594.38 -*/
 1594.39 -class CTzConverter : public CBase
 1594.40 -	{
 1594.41 -public:
 1594.42 -
 1594.43 -	IMPORT_C static CTzConverter* NewL(RTz& aTzServer);
 1594.44 -	IMPORT_C ~CTzConverter();
 1594.45 -	IMPORT_C TInt ConvertToLocalTime(TTime& aTime);
 1594.46 -	IMPORT_C TInt ConvertToLocalTime(TTime& aTime, const CTzId& aZone);
 1594.47 -	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime);
 1594.48 -	IMPORT_C TInt ConvertToUniversalTime(TTime& aTime, const CTzId& aZone);
 1594.49 -	IMPORT_C TUint16 CurrentTzId();
 1594.50 -
 1594.51 -	void NotifyTimeZoneChangeL(RTz::TTzChanges aChange);
 1594.52 -	const RTz& Server() const; 
 1594.53 -private:
 1594.54 -	CTzConverter(RTz& aTzServer);
 1594.55 -	void ConstructL();
 1594.56 -
 1594.57 -
 1594.58 -private:
 1594.59 -	RTz& iTzServer;
 1594.60 -
 1594.61 -	TAny* iReserved; 
 1594.62 -	TAny* iReserved2; 
 1594.63 -	};
 1594.64 -
 1594.65 -#endif
  1595.1 --- a/epoc32/include/tzdefines.h	Tue Mar 16 16:12:26 2010 +0000
  1595.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1595.3 @@ -1,55 +0,0 @@
  1595.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1595.5 -// All rights reserved.
  1595.6 -// This component and the accompanying materials are made available
  1595.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1595.8 -// which accompanies this distribution, and is available
  1595.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1595.10 -//
 1595.11 -// Initial Contributors:
 1595.12 -// Nokia Corporation - initial contribution.
 1595.13 -//
 1595.14 -// Contributors:
 1595.15 -//
 1595.16 -// Description:
 1595.17 -//
 1595.18 -
 1595.19 -#ifndef __TZDEFINES_H__
 1595.20 -#define __TZDEFINES_H__
 1595.21 -
 1595.22 -/** Time Zone Rule Day Rules.
 1595.23 -@publishedAll
 1595.24 -@released
 1595.25 -*/
 1595.26 -enum TTzRuleDay
 1595.27 -	{
 1595.28 -	ETzFixedDate			= 0,	// e.g. 11th October
 1595.29 -	ETzDayAfterDate,				// e.g. first Sunday after 8th October
 1595.30 -	ETzDayBeforeDate,				// e.g. Sunday before 7th October
 1595.31 -	ETzDayInLastWeekOfMonth			// e.g. last Sunday in October
 1595.32 -	};
 1595.33 -
 1595.34 -/**
 1595.35 -this const must match the last TTzRuleDay enumeration;
 1595.36 -'int' is deliberately used because this file is shared with non Symbian C++ environments 
 1595.37 -@internalComponent
 1595.38 -*/
 1595.39 -const int KValidatedLastDayRule = ETzDayInLastWeekOfMonth;
 1595.40 -
 1595.41 -/** Time reference.
 1595.42 -@publishedAll
 1595.43 -@released
 1595.44 -*/
 1595.45 -enum TTzTimeReference
 1595.46 -	{
 1595.47 -	ETzUtcTimeReference	= 0,
 1595.48 -	ETzStdTimeReference,
 1595.49 -	ETzWallTimeReference	// Local time
 1595.50 -	};
 1595.51 -
 1595.52 -/**
 1595.53 -this const must match the last TTzTimeReference enumeration 
 1595.54 -'int' is deliberately used because this file is shared with non Symbian C++ environments 
 1595.55 -@internalComponent
 1595.56 -*/
 1595.57 -const int KValidatedLastTimeReference = ETzWallTimeReference;
 1595.58 -#endif
  1596.1 --- a/epoc32/include/tzlocalizationdatatypes.h	Tue Mar 16 16:12:26 2010 +0000
  1596.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1596.3 @@ -1,295 +0,0 @@
  1596.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1596.5 -// All rights reserved.
  1596.6 -// This component and the accompanying materials are made available
  1596.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1596.8 -// which accompanies this distribution, and is available
  1596.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1596.10 -//
 1596.11 -// Initial Contributors:
 1596.12 -// Nokia Corporation - initial contribution.
 1596.13 -//
 1596.14 -// Contributors:
 1596.15 -//
 1596.16 -// Description:
 1596.17 -//
 1596.18 -
 1596.19 -#ifndef __TZLOCAL_DATATYPES_H__
 1596.20 -#define __TZLOCAL_DATATYPES_H__
 1596.21 -
 1596.22 -#include <e32base.h>	//CBase
 1596.23 -
 1596.24 -/**
 1596.25 -Encapsulates the correspondence between a time zone ID and a resource ID and
 1596.26 -facilitates fast finding of resources in the resource file.  For internal use only.
 1596.27 -
 1596.28 -@internalTechnology
 1596.29 -*/
 1596.30 -class TTzLocalizedId
 1596.31 -	{
 1596.32 -	public:
 1596.33 -		// Represents an invalid UTC offset of 25 hours and 1 minutes, in minutes
 1596.34 -		enum TTzUTCOffset
 1596.35 -			{
 1596.36 -			ETzInvalidUTCOffset = 1501
 1596.37 -			};
 1596.38 -
 1596.39 -	public:
 1596.40 -		TTzLocalizedId(const TUint16 aTzId, const TUint aResourceId =0);
 1596.41 -
 1596.42 -		//Accessor methods
 1596.43 -		inline TUint16 TimeZoneId() const;
 1596.44 -		inline TUint ResourceId() const;
 1596.45 -		inline TInt UTCOffset() const;
 1596.46 -		inline void SetUTCOffset(TInt aOffsetInMinutes);
 1596.47 -
 1596.48 -	private:
 1596.49 -		TUint16 iTzId;
 1596.50 -		TUint iResourceId;
 1596.51 -		TInt iUTCOffset;	//UTC offset stored in minutes
 1596.52 -	};
 1596.53 -
 1596.54 -/**
 1596.55 -Encapsulates a localized (exemplar) city.
 1596.56 -
 1596.57 -@publishedAll
 1596.58 -@released
 1596.59 -*/
 1596.60 -class CTzLocalizedCity : public CBase
 1596.61 -	{
 1596.62 -	public:
 1596.63 -		static CTzLocalizedCity* NewL(
 1596.64 -			const TDesC& aName,
 1596.65 -			const TTzLocalizedId& aTzLocalizedId,
 1596.66 -			const TUint8 aGroupId =0);
 1596.67 -		static CTzLocalizedCity* NewLC(
 1596.68 -			const TDesC& aName,
 1596.69 -			const TTzLocalizedId& aTzLocalizedId,
 1596.70 -			const TUint8 aGroupId =0);
 1596.71 -		~CTzLocalizedCity();
 1596.72 -
 1596.73 -		//Accessor methods
 1596.74 -		IMPORT_C TPtrC Name() const;
 1596.75 -		IMPORT_C TUint16 TimeZoneId() const;
 1596.76 -		IMPORT_C TUint8 GroupId() const;
 1596.77 -		TTzLocalizedId TzLocalizedId() const;
 1596.78 -		TInt UTCOffset() const;
 1596.79 -		void SetUTCOffset(TInt aUTCoffset);
 1596.80 -        void SetCityIndex(TInt aIndex);
 1596.81 -       	TInt CityIndex() const;
 1596.82 -
 1596.83 -	private:
 1596.84 -		void ConstructL(const TDesC& aName);
 1596.85 -		CTzLocalizedCity(const TUint8 aGroupId, const TTzLocalizedId& aTzLocalizedId);
 1596.86 -
 1596.87 -	private:
 1596.88 -		//Member data
 1596.89 -		HBufC* iName;
 1596.90 -		TUint8 iGroupId;
 1596.91 -		TTzLocalizedId iTzLocalizedId;
 1596.92 -        TInt iCityIndex;
 1596.93 -	};
 1596.94 -
 1596.95 -/**
 1596.96 -Encapsulates a localized group of (exemplar) cities.
 1596.97 -
 1596.98 -@publishedAll
 1596.99 -@released
1596.100 -*/
1596.101 -class CTzLocalizedCityGroup : public CBase
1596.102 -	{
1596.103 -	public:
1596.104 -		static CTzLocalizedCityGroup* NewL(const TDesC& aName, const TUint8 aGroupId);
1596.105 -		static CTzLocalizedCityGroup* NewLC(const TDesC& aName, const TUint8 aGroupId);
1596.106 -		~CTzLocalizedCityGroup();
1596.107 -
1596.108 -		//Accessor methods
1596.109 -		IMPORT_C TPtrC Name() const;
1596.110 -		IMPORT_C TUint8 Id() const;
1596.111 -
1596.112 -	private:
1596.113 -		void ConstructL(const TDesC& aName);
1596.114 -		CTzLocalizedCityGroup(const TUint8 aGroupId);
1596.115 -
1596.116 -	private:
1596.117 -		//Member data
1596.118 -		HBufC* iName;
1596.119 -		TUint8 iGroupId;
1596.120 -	};
1596.121 -
1596.122 -/**
1596.123 -Encapsulates a group of LDML localized timezone names.
1596.124 -LDML stands for Locale Data Markup Language. For details, see 
1596.125 -http://www.openi18n.org/specs/ldml/1.0/ldml-spec.htm.
1596.126 -
1596.127 -@publishedAll
1596.128 -@released
1596.129 -*/
1596.130 -class CTzLocalizedTimeZone : public CBase
1596.131 -	{
1596.132 -	public: //enums
1596.133 -		/**
1596.134 -		Flags to identify a cached zone.
1596.135 -		@publishedAll
1596.136 -		@released
1596.137 -		*/
1596.138 -		enum TTzFrequentlyUsedZone
1596.139 -			{
1596.140 -			/** The current zone. */
1596.141 -			ECurrentZone,
1596.142 -			/** The home zone. */
1596.143 -			EHomeZone,
1596.144 -			/** The zone of interest. */
1596.145 -			EInterestZone,
1596.146 -			/** The first recently-used zone. */
1596.147 -			ERecentZone1,
1596.148 -			/** The second recently-used zone. */
1596.149 -			ERecentZone2,
1596.150 -			/** Specifies the number of cached zones. Not to be used as an API argument. */
1596.151 -			ECachedTimeZones	// If new items are added to this enum, this must 
1596.152 -								// left as last item, because it is used to keep 
1596.153 -								// count of the number of cached zones
1596.154 -			};
1596.155 -
1596.156 -	public:
1596.157 -		static CTzLocalizedTimeZone* NewL(
1596.158 -			const TTzLocalizedId& aTzLocalizedId,
1596.159 -			const TDesC& aStandardName,
1596.160 -			const TDesC& aDaylightName,
1596.161 -			const TDesC& aShortStandardName,
1596.162 -			const TDesC& aShortDaylightName);
1596.163 -
1596.164 -		static CTzLocalizedTimeZone* NewLC(
1596.165 -			const TTzLocalizedId& aTzLocalizedId,
1596.166 -			const TDesC& aStandardName,
1596.167 -			const TDesC& aDaylightName,
1596.168 -			const TDesC& aShortStandardName,
1596.169 -			const TDesC& aShortDaylightName);
1596.170 -
1596.171 -		~CTzLocalizedTimeZone();
1596.172 -
1596.173 -		//Accessor methods
1596.174 -		IMPORT_C TUint16 TimeZoneId() const;
1596.175 -		IMPORT_C TPtrC StandardName() const;
1596.176 -		IMPORT_C TPtrC DaylightName() const;
1596.177 -		IMPORT_C TPtrC ShortStandardName() const;
1596.178 -		IMPORT_C TPtrC ShortDaylightName() const;
1596.179 -		TTzLocalizedId TzLocalizedId() const;
1596.180 -		TInt UTCOffset() const;
1596.181 -		void SetUTCOffset(TInt aUTCoffset);
1596.182 -
1596.183 -	private:
1596.184 -		void ConstructL(
1596.185 -			const TDesC& aStandardName,
1596.186 -			const TDesC& aDaylightName,
1596.187 -			const TDesC& aShortStandardName,
1596.188 -			const TDesC& aShortDaylightName);
1596.189 -		CTzLocalizedTimeZone(const TTzLocalizedId& aTzLocalizedId);
1596.190 -
1596.191 -	private:
1596.192 -		//Member data
1596.193 -		TTzLocalizedId iTzLocalizedId;
1596.194 -		HBufC* iStandardName;
1596.195 -		HBufC* iDaylightName;
1596.196 -		HBufC* iShortStandardName;
1596.197 -		HBufC* iShortDaylightName;
1596.198 -	};
1596.199 -
1596.200 -/**
1596.201 -Template for arrays of localized objects. Implemented using a thin template. 
1596.202 -All functions are inline.
1596.203 -
1596.204 -@publishedAll
1596.205 -@released
1596.206 -*/
1596.207 -template <class T>
1596.208 -class CTzLocalizedArray : public CBase
1596.209 -	{
1596.210 -	protected:
1596.211 -		inline ~CTzLocalizedArray();
1596.212 -
1596.213 -		inline T& At(TInt aIndex) const;
1596.214 -		inline TInt Count() const;
1596.215 -		inline void AppendL(T* aElement);
1596.216 -		inline void Remove(TInt aIndex);
1596.217 -		inline void Sort(TLinearOrder<T> aOrder);
1596.218 -		inline TInt Find(T* aEntry,TIdentityRelation<T> aIdentityRelation);
1596.219 -
1596.220 -		inline CTzLocalizedArray();
1596.221 -
1596.222 -	private:
1596.223 -		//Member data
1596.224 -		RPointerArray<T> iArray;
1596.225 -	};
1596.226 -
1596.227 -// Assign concrete classes for each of the arrays that will be used
1596.228 -// This guards against future BC problems
1596.229 -
1596.230 -/**
1596.231 -An array of cities. This just passes function calls on to its templated base
1596.232 -class, CTzLocalizedArray.
1596.233 -
1596.234 -@publishedAll
1596.235 -@released
1596.236 -*/
1596.237 -class CTzLocalizedCityArray : public CTzLocalizedArray<CTzLocalizedCity>
1596.238 -	{
1596.239 -	public:
1596.240 -		IMPORT_C static CTzLocalizedCityArray* NewL();
1596.241 -		IMPORT_C static CTzLocalizedCityArray* NewLC();
1596.242 -
1596.243 -		IMPORT_C CTzLocalizedCity& At(TInt aIndex) const;
1596.244 -		IMPORT_C TInt Count() const;
1596.245 -		IMPORT_C void AppendL(CTzLocalizedCity* aCity);
1596.246 -		IMPORT_C void Remove(TInt aIndex);
1596.247 -		IMPORT_C void Sort(TLinearOrder<CTzLocalizedCity> anOrder);
1596.248 -		IMPORT_C TInt Find(CTzLocalizedCity* anEntry,TIdentityRelation<CTzLocalizedCity> aIdentityRelation);
1596.249 -	};
1596.250 -	
1596.251 -/**
1596.252 -An array of city groups. This just passes function calls on to its templated base
1596.253 -class, CTzLocalizedArray.
1596.254 -
1596.255 -@publishedAll
1596.256 -@released
1596.257 -*/
1596.258 -class CTzLocalizedCityGroupArray : public CTzLocalizedArray<CTzLocalizedCityGroup>
1596.259 -	{
1596.260 -	public:
1596.261 -		IMPORT_C static CTzLocalizedCityGroupArray* NewL();
1596.262 -		IMPORT_C static CTzLocalizedCityGroupArray* NewLC();
1596.263 -
1596.264 -		IMPORT_C CTzLocalizedCityGroup& At(TInt aIndex) const;
1596.265 -		IMPORT_C TInt Count() const;
1596.266 -		IMPORT_C void AppendL(CTzLocalizedCityGroup* aGroup);
1596.267 -		IMPORT_C void Remove(TInt aIndex);
1596.268 -		IMPORT_C void Sort(TLinearOrder<CTzLocalizedCityGroup> anOrder);
1596.269 -		IMPORT_C TInt Find(CTzLocalizedCityGroup* anEntry,TIdentityRelation<CTzLocalizedCityGroup> aIdentityRelation);
1596.270 -	};
1596.271 -
1596.272 -/**
1596.273 -An array of time zones. This just passes function calls on to its templated base
1596.274 -class, CTzLocalizedArray.
1596.275 -
1596.276 -@publishedAll
1596.277 -@released
1596.278 -*/
1596.279 -class CTzLocalizedTimeZoneArray : public CTzLocalizedArray<CTzLocalizedTimeZone>
1596.280 -	{
1596.281 -	public:
1596.282 -		IMPORT_C static CTzLocalizedTimeZoneArray* NewL();
1596.283 -		IMPORT_C static CTzLocalizedTimeZoneArray* NewLC();
1596.284 -
1596.285 -		IMPORT_C CTzLocalizedTimeZone& At(TInt aIndex) const;
1596.286 -		IMPORT_C TInt Count() const;
1596.287 -		IMPORT_C void AppendL(CTzLocalizedTimeZone* aElement);
1596.288 -		IMPORT_C void Remove(TInt aIndex);
1596.289 -		IMPORT_C void Sort(TLinearOrder<CTzLocalizedTimeZone> anOrder);
1596.290 -		IMPORT_C TInt Find(CTzLocalizedTimeZone* anEntry,TIdentityRelation<CTzLocalizedTimeZone> aIdentityRelation);
1596.291 -	};
1596.292 -
1596.293 -#include <tzlocalizationdatatypes.inl>
1596.294 -
1596.295 -#endif //__TZLOCAL_DATATYPES_H__
1596.296 -//==================================================================
1596.297 -// End of file
1596.298 -//==================================================================
  1597.1 --- a/epoc32/include/tzlocalizationdatatypes.inl	Tue Mar 16 16:12:26 2010 +0000
  1597.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1597.3 @@ -1,152 +0,0 @@
  1597.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1597.5 -// All rights reserved.
  1597.6 -// This component and the accompanying materials are made available
  1597.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1597.8 -// which accompanies this distribution, and is available
  1597.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1597.10 -//
 1597.11 -// Initial Contributors:
 1597.12 -// Nokia Corporation - initial contribution.
 1597.13 -//
 1597.14 -// Contributors:
 1597.15 -//
 1597.16 -// Description:
 1597.17 -//
 1597.18 -
 1597.19 -#ifndef __TZLOCAL_DATATYPES_INL__
 1597.20 -#define __TZLOCAL_DATATYPES_INL__
 1597.21 -
 1597.22 -//==================================================================
 1597.23 -// TTzLocalizedId inline Functions
 1597.24 -//==================================================================
 1597.25 -/**
 1597.26 -Returns the time zone ID.
 1597.27 -@return The time zone ID.
 1597.28 -*/
 1597.29 -inline TUint16 TTzLocalizedId::TimeZoneId() const
 1597.30 -	{
 1597.31 -	return iTzId;
 1597.32 -	}
 1597.33 -
 1597.34 -/**
 1597.35 -Returns the resource ID.
 1597.36 -@return The resource ID.
 1597.37 -*/
 1597.38 -inline TUint TTzLocalizedId::ResourceId() const
 1597.39 -	{
 1597.40 -	return iResourceId;
 1597.41 -	}
 1597.42 -
 1597.43 -/**
 1597.44 -Returns the UTC offset in minutes.
 1597.45 -This value should only be used for array sorting.
 1597.46 -@return The UTC offset in minutes.
 1597.47 -*/
 1597.48 -inline TInt TTzLocalizedId::UTCOffset() const
 1597.49 -	{
 1597.50 -	return iUTCOffset;
 1597.51 -	}
 1597.52 -
 1597.53 -/**
 1597.54 -Sets the UTC offset in minutes.
 1597.55 -This value should only be used for internal array sorting.
 1597.56 -@param aOffsetInMinutes The new UTC offset in minutes.
 1597.57 -*/
 1597.58 -inline void TTzLocalizedId::SetUTCOffset(TInt aOffsetInMinutes)
 1597.59 -	{
 1597.60 -	iUTCOffset = aOffsetInMinutes;
 1597.61 -	}
 1597.62 -
 1597.63 -//==================================================================
 1597.64 -// CTzLocalizedArray's inline functions
 1597.65 -//==================================================================
 1597.66 -/**
 1597.67 -Destructor
 1597.68 -@internalTechnology
 1597.69 -*/
 1597.70 -template <class T>
 1597.71 -inline CTzLocalizedArray<T>::~CTzLocalizedArray()
 1597.72 -	{
 1597.73 -	iArray.ResetAndDestroy();
 1597.74 -	}
 1597.75 -
 1597.76 -/**
 1597.77 -Default constructor
 1597.78 -@internalTechnology
 1597.79 -*/
 1597.80 -template <class T>
 1597.81 -inline CTzLocalizedArray<T>::CTzLocalizedArray()
 1597.82 -	{
 1597.83 -	}
 1597.84 -/**
 1597.85 -Returns the element at the specified index.
 1597.86 -@param aIndex Index of the element to get.
 1597.87 -@return The element at aIndex.
 1597.88 -@internalTechnology
 1597.89 -*/
 1597.90 -template <class T>
 1597.91 -inline T& CTzLocalizedArray<T>::At(TInt aIndex) const
 1597.92 -	{
 1597.93 -	return *(iArray[aIndex]);
 1597.94 -	}
 1597.95 -
 1597.96 -/**
 1597.97 -Returns the number of elements in the array.
 1597.98 -@return The number of elements in the array.
 1597.99 -@internalTechnology
1597.100 -*/
1597.101 -template <class T>
1597.102 -inline TInt CTzLocalizedArray<T>::Count() const
1597.103 -	{
1597.104 -	return iArray.Count();
1597.105 -	}
1597.106 -
1597.107 -/**
1597.108 -Appends aElement to this array.
1597.109 -@param aElement The element to add.
1597.110 -@internalTechnology
1597.111 -*/
1597.112 -template <class T>
1597.113 -inline void CTzLocalizedArray<T>::AppendL(T* aElement)
1597.114 -	{
1597.115 -	iArray.AppendL(aElement);
1597.116 -	}
1597.117 -
1597.118 -/**
1597.119 -Removes the element at the specified index.
1597.120 -@param aIndex The index of the element to remove.
1597.121 -@internalTechnology
1597.122 -*/
1597.123 -template <class T>
1597.124 -inline void CTzLocalizedArray<T>::Remove(TInt aIndex)
1597.125 -	{
1597.126 -	iArray.Remove(aIndex);
1597.127 -	}
1597.128 -
1597.129 -/**
1597.130 -Sorts this array.
1597.131 -@param aOrder The sorting function to use.
1597.132 -@internalTechnology
1597.133 -*/
1597.134 -template <class T>
1597.135 -inline void CTzLocalizedArray<T>::Sort(TLinearOrder<T> aOrder)
1597.136 -	{
1597.137 -	iArray.Sort(aOrder);
1597.138 -	}
1597.139 -
1597.140 -/**
1597.141 -Finds an element in this array.
1597.142 -@param aIdentityRelation finding function to use.
1597.143 -@internalTechnology
1597.144 -*/
1597.145 -template <class T>
1597.146 -inline TInt CTzLocalizedArray<T>::Find(T* aEntry,TIdentityRelation<T> aIdentityRelation)
1597.147 -	{
1597.148 -	return iArray.Find(aEntry,aIdentityRelation);
1597.149 -	}
1597.150 -
1597.151 -#endif //__TZLOCAL_DATATYPES_INL__
1597.152 -
1597.153 -//==================================================================
1597.154 -// End of file
1597.155 -//==================================================================
  1598.1 --- a/epoc32/include/tzlocalizer.h	Tue Mar 16 16:12:26 2010 +0000
  1598.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1598.3 @@ -1,175 +0,0 @@
  1598.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1598.5 -// All rights reserved.
  1598.6 -// This component and the accompanying materials are made available
  1598.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1598.8 -// which accompanies this distribution, and is available
  1598.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1598.10 -//
 1598.11 -// Initial Contributors:
 1598.12 -// Nokia Corporation - initial contribution.
 1598.13 -//
 1598.14 -// Contributors:
 1598.15 -//
 1598.16 -// Description:
 1598.17 -//
 1598.18 -
 1598.19 -#ifndef __TzLocalizer_H__
 1598.20 -#define __TzLocalizer_H__
 1598.21 -
 1598.22 -#include <e32base.h> //CBase
 1598.23 -
 1598.24 -#include <tzlocalizationdatatypes.h> 	//CTzLocalizedCity, CTzLocalizedCityGroup etc
 1598.25 -
 1598.26 -// Forward Declarations
 1598.27 -class MTzLocalizationReader;
 1598.28 -class MTzLocalizationWriter;
 1598.29 -
 1598.30 -/**
 1598.31 -Retrieves localized time zone information based on a time zone ID.
 1598.32 -
 1598.33 -Time zone information is available in the following forms:
 1598.34 -- Standard Name, for instance Greenwich Mean Time,
 1598.35 -- Short Standard Name, for instance GMT,
 1598.36 -- Daylight Savings Name, for instance British Summer Time,
 1598.37 -- Short Daylight Savings Name, for instance BST.
 1598.38 -
 1598.39 -This information is encapsulated in a CTzLocalizedTimeZone object.
 1598.40 -
 1598.41 -A collection of localizable cities for a specific time zone can also be returned.
 1598.42 -New cities can be added to a time zone.  Cities may also be added to groups, but 
 1598.43 -a city may only be a member of one group.
 1598.44 -
 1598.45 -@publishedAll
 1598.46 -@released
 1598.47 -*/
 1598.48 -class CTzLocalizer : public CBase
 1598.49 -	{
 1598.50 -	public:
 1598.51 -		/** Panic reasons for the time zone localization component. */
 1598.52 -		enum TTzLocalizerPanics
 1598.53 -			{
 1598.54 -			/** The time zone server was not found. */
 1598.55 -			ETzLocalizerPanicTimeZoneServerNotFound,
 1598.56 -			/** A resource file was not found. */
 1598.57 -			ETzLocalizerPanicResourceFileNotFound
 1598.58 -			};
 1598.59 -
 1598.60 -		/** Used to specify the sort order of localized time zone information. */
 1598.61 -		enum TTzSortOrder
 1598.62 -			{
 1598.63 -			/** Unsorted. This is the fastest way to get localized data. */
 1598.64 -			ETzUnsorted,
 1598.65 -			/** Sort by UTC offset starting with the lowest. */
 1598.66 -			ETzUTCAscending,
 1598.67 -			/** Sort by UTC offset starting with the highest. */
 1598.68 -			ETzUTCDescending,
 1598.69 -			/** Sort by name (city name/group name/standard time zone name), from A-Z. */
 1598.70 -			ETzAlphaNameAscending,
 1598.71 -			/** Sort by name (city name/group name/standard time zone name), from Z-A. */
 1598.72 -			ETzAlphaNameDescending,
 1598.73 -			/** Sort by standard name from A-Z. */
 1598.74 -			ETzAlphaStandardNameAscending,
 1598.75 -			/** Sort by daylight savings name from A-Z. */
 1598.76 -			ETzAlphaDaylightNameAscending,
 1598.77 -			/** Sort by short standard name from A-Z. */
 1598.78 -			ETzAlphaShortStandardNameAscending,
 1598.79 -			/** Sort by short daylight savings name from A-Z. */
 1598.80 -			ETzAlphaShortDaylightNameAscending,
 1598.81 -			/** Sort by standard name from Z-A. */
 1598.82 -			ETzAlphaStandardNameDescending,
 1598.83 -			/** Sort by daylight savings name from Z-A. */
 1598.84 -			ETzAlphaDaylightNameDescending,
 1598.85 -			/** Sort by short standard name from Z-A. */
 1598.86 -			ETzAlphaShortStandardNameDescending,
 1598.87 -			/** Sort by short daylight savings name from Z-A. */
 1598.88 -			ETzAlphaShortDaylightNameDescending
 1598.89 -			};
 1598.90 -
 1598.91 -	public:
 1598.92 -		//Construction / Destruction
 1598.93 -		IMPORT_C static CTzLocalizer* NewL();
 1598.94 -		IMPORT_C static CTzLocalizer* NewLC();
 1598.95 -		IMPORT_C ~CTzLocalizer();
 1598.96 -
 1598.97 -		//Time zones
 1598.98 -		IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(TInt aTimeZoneId) const;
 1598.99 -		IMPORT_C CTzLocalizedTimeZone* GetLocalizedTimeZoneL(const CTzLocalizedCity& aCity) const;
1598.100 -		IMPORT_C CTzLocalizedTimeZoneArray* GetAllTimeZonesL(const TTzSortOrder aSortOrder = ETzUnsorted);
1598.101 -		
1598.102 -		IMPORT_C void SetTimeZoneL(TInt aTimeZoneId);
1598.103 -
1598.104 -		//City Management
1598.105 -		IMPORT_C CTzLocalizedCity* GetDefaultCityL(TInt aTimeZoneId) const;
1598.106 -		IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedCity& aCity) const;
1598.107 -		IMPORT_C CTzLocalizedCity* GetDefaultCityL(const CTzLocalizedTimeZone& aTimeZone) const;
1598.108 -
1598.109 -		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const TTzSortOrder aSortOrder = ETzUnsorted);
1598.110 -		IMPORT_C CTzLocalizedCityArray* GetCitiesL(TInt aTimeZoneId,const TTzSortOrder aSortOrder = ETzUnsorted);
1598.111 -		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedTimeZone& aTimeZone,const TTzSortOrder aSortOrder = ETzUnsorted);
1598.112 -		IMPORT_C CTzLocalizedCityArray* GetCitiesL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted);
1598.113 -
1598.114 -		IMPORT_C CTzLocalizedCity* AddCityL(TInt aTimeZoneId,const TDesC& aCityName, TInt aGroupId = 0);
1598.115 -		IMPORT_C void RemoveCityL(CTzLocalizedCity* aCity);
1598.116 -
1598.117 -		//City Groups
1598.118 -		IMPORT_C CTzLocalizedCityGroupArray* GetAllCityGroupsL(const TTzSortOrder aSortOrder = ETzUnsorted) const;
1598.119 -		IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(TInt aGroupId) const;
1598.120 -		IMPORT_C CTzLocalizedCityGroup* GetCityGroupL(const CTzLocalizedCity& aCity) const ;
1598.121 -
1598.122 -		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(TInt aGroupId,const TTzSortOrder aSortOrder = ETzUnsorted);
1598.123 -		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCity& aCity,const TTzSortOrder aSortOrder = ETzUnsorted);
1598.124 -		IMPORT_C CTzLocalizedCityArray* GetCitiesInGroupL(const CTzLocalizedCityGroup& aCityGroup,const TTzSortOrder aSortOrder = ETzUnsorted);
1598.125 -
1598.126 -		//Frequently Used Zones
1598.127 -		IMPORT_C CTzLocalizedTimeZone* GetFrequentlyUsedZoneL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
1598.128 -		IMPORT_C CTzLocalizedCity* GetFrequentlyUsedZoneCityL(const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
1598.129 -		IMPORT_C void SetFrequentlyUsedZoneL(TInt aTimeZoneId,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
1598.130 -		IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedTimeZone& aTimeZone,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
1598.131 -		IMPORT_C void SetFrequentlyUsedZoneL(const CTzLocalizedCity& aCity,const CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFrequentlyUsedZone);
1598.132 -
1598.133 -		//Find functions
1598.134 -		IMPORT_C CTzLocalizedCity* FindCityByNameL(const TDesC& aCityName, const TInt aTimeZoneId = 0);
1598.135 -		IMPORT_C CTzLocalizedTimeZone* FindTimeZoneByNameL(const TDesC& aTimeZoneName);
1598.136 -		IMPORT_C CTzLocalizedCityGroup* FindCityGroupByNameL(const TDesC& aCityGroupName);
1598.137 -		
1598.138 -		IMPORT_C TBool CheckLanguage();
1598.139 -		
1598.140 -		//Cities and Time Zones with a specified UTC offset
1598.141 -		IMPORT_C CTzLocalizedCityArray* GetCitiesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted);
1598.142 -		IMPORT_C CTzLocalizedTimeZoneArray* GetTimeZonesWithUTCOffsetL(TInt aUTCOffsetInMinutes, const TTzSortOrder aSortOrder = ETzUnsorted);
1598.143 -		
1598.144 -	private:
1598.145 -		void ConstructL();
1598.146 -		CTzLocalizer();
1598.147 -		
1598.148 -		TBool PrepareFrequentlyUsedZonesL();
1598.149 -		void UpdateFrequentlyUsedZonesL();
1598.150 -		CTzLocalizedTimeZone* GetFrequentlyUsedDefaultZoneL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone);
1598.151 -		TUint32 GetFrequentlyUsedDefaultZoneCenRepKeyL(CTzLocalizedTimeZone::TTzFrequentlyUsedZone aFreqUsedZone);
1598.152 -		
1598.153 -		void GetCitiesL(CTzLocalizedCityArray& aCities, const TTzLocalizedId& aLocalizedId, const TTzSortOrder aSortOrder = ETzUnsorted);
1598.154 -		
1598.155 -		TLinearOrder<CTzLocalizedCity> CitySortOrderL(const TTzSortOrder aSortOrder);
1598.156 -		TLinearOrder<CTzLocalizedTimeZone> TimeZoneSortOrderL(const TTzSortOrder aSortOrder);
1598.157 -		template <class T> void PrepareForUTCSortL(T& aArray);
1598.158 -		
1598.159 -		TInt GetTimeZoneIdFromTzServerL();
1598.160 -		void DoSetTimeZoneL(TInt aTimeZoneId);
1598.161 -		void ChangeHomeTimeZoneL(TInt aNewId);
1598.162 -		
1598.163 -		void ValidateDbL();
1598.164 -        void RecreateDbL();
1598.165 -        TBool DbNeedsUpdatingL() const;
1598.166 -		TBool DbIsInvalidL() const;
1598.167 -        void UpgradeDbVersionL();
1598.168 -        void FetchCityToUpgradeL(CTzLocalizedTimeZoneArray& aTimeZoneArray, CTzLocalizedCityArray& aCityArray, CTzLocalizedTimeZone::TTzFrequentlyUsedZone aCachedZone);
1598.169 -
1598.170 -	private:
1598.171 -		//Member data
1598.172 -		MTzLocalizationReader* iStaticDataReader;
1598.173 -		MTzLocalizationReader* iPersistedDataReader;
1598.174 -		MTzLocalizationWriter* iPersistedDataWriter;
1598.175 -		TLanguage iLanguage;
1598.176 -	};
1598.177 -
1598.178 -#endif//__TzLocalizer_H__
  1599.1 --- a/epoc32/include/tzupdate.h	Tue Mar 16 16:12:26 2010 +0000
  1599.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1599.3 @@ -1,78 +0,0 @@
  1599.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1599.5 -// All rights reserved.
  1599.6 -// This component and the accompanying materials are made available
  1599.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1599.8 -// which accompanies this distribution, and is available
  1599.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1599.10 -//
 1599.11 -// Initial Contributors:
 1599.12 -// Nokia Corporation - initial contribution.
 1599.13 -//
 1599.14 -// Contributors:
 1599.15 -//
 1599.16 -// Description:
 1599.17 -//
 1599.18 -
 1599.19 -#ifndef __TZUPDATE_H__
 1599.20 -#define __TZUPDATE_H__
 1599.21 -
 1599.22 -#include <e32cmn.h> // TUid.
 1599.23 -
 1599.24 -/** UTC Offset update notification constants. When the UTC offset is automatically
 1599.25 -adjusted for Daylight Saving then it is possible to receive
 1599.26 -notification using the Publish and Subscribe API with the
 1599.27 -values defined here. Note that this property is updated by the Time Zone Server
 1599.28 -as this is the only component that can modify the UTC Offset.
 1599.29 -
 1599.30 -@see RProperty in e32property.h
 1599.31 -@publishedAll
 1599.32 -@released
 1599.33 -@since 9.1
 1599.34 -*/
 1599.35 -namespace NTzUpdate
 1599.36 -    {
 1599.37 -    const TUid KPropertyCategory = { 0x1020383E };
 1599.38 -
 1599.39 -    enum TPropertyKeys
 1599.40 -        {
 1599.41 -        EUtcOffsetChangeNotification,
 1599.42 -        ECurrentTimeZoneId,
 1599.43 -        EHomeTimeZoneId,
 1599.44 -        ENextDSTChange
 1599.45 -        };
 1599.46 -
 1599.47 -	struct TTimeZoneChange
 1599.48 -		{
 1599.49 -		TInt iNewTimeZoneId;
 1599.50 -		TInt iOldTimeZoneId;
 1599.51 -		};
 1599.52 -		
 1599.53 -	/** This struct is used to publish DST Change info in an RProperty.
 1599.54 -	Subscribers to the property will define a copy of this struct
 1599.55 -	so that they are not dependant on the tz component.
 1599.56 -	If this struct changes then the copies must also be changed.
 1599.57 -	@internalTechnology
 1599.58 -	*/
 1599.59 -	struct TDSTChangeInfo
 1599.60 -		{
 1599.61 -		/** The version of the struct. Currently always 1 */
 1599.62 -		TUint8 iVersion;
 1599.63 -
 1599.64 -		/** The time of the next offset change in UTC */
 1599.65 -		TTime iNextDSTChangeUTC;
 1599.66 -		/** The offset from UTC (in minutes) after the next DST change will take place.*/
 1599.67 -		TInt iNextUTCOffset;
 1599.68 -		
 1599.69 -		/** The time of the previous offset change in UTC. This member is only valid if the version is 2 or above. */
 1599.70 -		TTime iPreviousDSTChangeUTC;
 1599.71 -
 1599.72 -		/** The offset from UTC (in minutes) before the previous DST change took place. This member is only valid
 1599.73 -		if the version is 2 or above.*/
 1599.74 -		TInt iPreviousUTCOffset;
 1599.75 -
 1599.76 -		/** Reserved for future use. */
 1599.77 -		TInt iReserved[12];
 1599.78 -		};
 1599.79 -    }
 1599.80 -
 1599.81 -#endif  // __TZUPDATE_H__
  1600.1 --- a/epoc32/include/uikon/eikalsrv.h	Tue Mar 16 16:12:26 2010 +0000
  1600.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1600.3 @@ -1,133 +0,0 @@
  1600.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1600.5 -// All rights reserved.
  1600.6 -// This component and the accompanying materials are made available
  1600.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1600.8 -// which accompanies this distribution, and is available
  1600.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1600.10 -//
 1600.11 -// Initial Contributors:
 1600.12 -// Nokia Corporation - initial contribution.
 1600.13 -//
 1600.14 -// Contributors:
 1600.15 -//
 1600.16 -// Description:
 1600.17 -//
 1600.18 -
 1600.19 -
 1600.20 -
 1600.21 -/**
 1600.22 - @file
 1600.23 - @internalComponent
 1600.24 -*/
 1600.25 -
 1600.26 -#ifndef __EIKALSRV_H__
 1600.27 -#define __EIKALSRV_H__
 1600.28 -
 1600.29 -#include <e32base.h>
 1600.30 -#include <asaltdefs.h>
 1600.31 -#include <asshddefs.h>
 1600.32 -
 1600.33 -class MEikServAlarmFactory;
 1600.34 -class MEikServAlarm;
 1600.35 -class CEikServAlarmAlertSession;
 1600.36 -
 1600.37 -/** 
 1600.38 -@internalComponent
 1600.39 -*/
 1600.40 -NONSHARABLE_CLASS(CEikServAlarmAlertServer) : public CPolicyServer
 1600.41 -	{
 1600.42 -public:
 1600.43 -	IMPORT_C static CEikServAlarmAlertServer* NewL(MEikServAlarmFactory* aAlarmControlFactory);
 1600.44 -	IMPORT_C static CEikServAlarmAlertServer* NewL(MEikServAlarmFactory* aAlarmControlFactory, TInt aMaxAlarms);
 1600.45 -	~CEikServAlarmAlertServer();
 1600.46 -	IMPORT_C void HandleSwitchOnEvent();
 1600.47 -	IMPORT_C void TaskKeyPressedL();
 1600.48 -	inline TBool AlarmAlertIsVisible() const;
 1600.49 -	inline void SessionDied();
 1600.50 -	IMPORT_C void SetQuietPeriodL(TTime aQuietPeriodEndTime);
 1600.51 -	IMPORT_C void ClearAllAlarmsL();	
 1600.52 -public: // from CPolicyServer
 1600.53 -	CSession2* NewSessionL(const TVersion& aVersion, const RMessage2& aMessage) const;
 1600.54 -private:
 1600.55 -	CEikServAlarmAlertServer(TInt aPriority, MEikServAlarmFactory& aAlarmControlFactory,  TInt aMaxAlarms);
 1600.56 -private:
 1600.57 -	CEikServAlarmAlertSession* iSession; // iSession does not *own* what it points to
 1600.58 -	MEikServAlarmFactory& iAlarmControlFactory;
 1600.59 -	TInt iMaxAlarms;
 1600.60 -	};
 1600.61 -
 1600.62 -
 1600.63 -class CEikAlmControlSupervisor;
 1600.64 -
 1600.65 -/** 
 1600.66 -Helper class for CEikServAlarmAlertSession. Holds response data for queuing
 1600.67 -@internalComponent
 1600.68 -*/
 1600.69 -NONSHARABLE_CLASS(TAlarmResponse)
 1600.70 -	{
 1600.71 -public:	
 1600.72 -	TAlarmResponse (TASAltAlertServerResponse  aCode,  TAlarmId aId, TTime aTime);
 1600.73 -	TASAltAlertServerResponse ResponseCode () const;
 1600.74 -	TAlarmId AlarmId () const;
 1600.75 -	TTime TimeToSnooze() const;
 1600.76 -private:
 1600.77 -	TASAltAlertServerResponse  iCode;
 1600.78 -	TAlarmId iId;
 1600.79 -	TTime iTime;
 1600.80 -	};
 1600.81 -	
 1600.82 -// supposed to be maximum one response in a queue, because client should resubmit request 
 1600.83 -// for response as soon	as it receive previous 
 1600.84 -const TInt KAlertResponseQueueSize = 20;	
 1600.85 -
 1600.86 -/**
 1600.87 -Represents a session for a client thread on the server-side.
 1600.88 -@internalComponent 
 1600.89 -*/
 1600.90 -NONSHARABLE_CLASS(CEikServAlarmAlertSession) : public CSession2
 1600.91 -	{
 1600.92 -public:
 1600.93 -	static CEikServAlarmAlertSession* NewL(MEikServAlarmFactory& aAlarmControlFactory, TInt aMaxAlarms);
 1600.94 -	~CEikServAlarmAlertSession();
 1600.95 -	void TaskKeyPressedL();
 1600.96 -	void HandleSwitchOnEvent();
 1600.97 -	inline TBool AlarmAlertIsVisible() const;
 1600.98 -
 1600.99 -	void SetQuietPeriodL(TTime aQuietPeriodEndTime);
1600.100 -	inline TTime QuietPeriodEndTime() const; 
1600.101 -	void RespondEventL(TASAltAlertServerResponse aCode);
1600.102 -	void RespondEventL(TASAltAlertServerResponse aCode, TAlarmId aId, TTime aTimeToSnooze = 0);
1600.103 -	void ClearAllAlarmsL();
1600.104 -private:
1600.105 -	CEikServAlarmAlertServer* AlarmAlertServer() const;
1600.106 -	void ConstructL();
1600.107 -	virtual void ServiceL(const RMessage2 &aMessage);
1600.108 -
1600.109 -	CEikServAlarmAlertSession(MEikServAlarmFactory& aAlarmControl, TInt aMaxAlarms);
1600.110 -	void QueueEventL (TASAltAlertServerResponse&  aCode,TAlarmId& aId, TTime& aTimeToSnooze);
1600.111 -	TInt FindAlarm(TAlarmId aAlarmId) const;
1600.112 -	void DeleteAlarmL(const RMessage2& aMessage);
1600.113 -	void UpdateVisibility();
1600.114 -private:
1600.115 -	TBool iVisible;
1600.116 -	MEikServAlarmFactory& iAlarmControlFactory;
1600.117 -	TTime iQuietPeriodEndTime;
1600.118 -	TInt iMaxAlarms;
1600.119 -	RPointerArray<CEikAlmControlSupervisor> iAlarmSupervisors;
1600.120 -	RArray <TAlarmResponse> iResponseQueue;
1600.121 -	RMessage2 iMessage;
1600.122 -	};
1600.123 -
1600.124 -inline TBool CEikServAlarmAlertServer::AlarmAlertIsVisible() const 
1600.125 -	{ return iSession->AlarmAlertIsVisible(); }
1600.126 -
1600.127 -inline TBool CEikServAlarmAlertSession::AlarmAlertIsVisible() const 
1600.128 -	{ return iVisible; }
1600.129 -
1600.130 -inline void CEikServAlarmAlertServer::SessionDied() 
1600.131 -	{ iSession = NULL; }
1600.132 -
1600.133 -inline TTime CEikServAlarmAlertSession::QuietPeriodEndTime() const 
1600.134 -	{ return iQuietPeriodEndTime; }
1600.135 -
1600.136 -#endif //__EIKALSRV_H__
  1601.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1601.2 +++ b/epoc32/include/variant/platform_paths.hrh	Wed Mar 31 12:27:01 2010 +0100
  1601.3 @@ -0,0 +1,585 @@
  1601.4 +/*
  1601.5 +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
  1601.6 +* All rights reserved.
  1601.7 +* This component and the accompanying materials are made available
  1601.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1601.9 +* which accompanies this distribution, and is available
 1601.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1601.11 +*
 1601.12 +* Initial Contributors:
 1601.13 +* Nokia Corporation - initial contribution.
 1601.14 +*
 1601.15 +* Contributors:
 1601.16 +*
 1601.17 +* Description:  Predefined include paths to be used in the mmp-files for the 
 1601.18 +*                components in the layered model. There is one definition for
 1601.19 +*                each layer. The mmp-file should use the statement that is 
 1601.20 +*                intended for the same layer as where the mmp-file resides.
 1601.21 +*
 1601.22 +*                There is also macros to be used in the bld.inf-files to 
 1601.23 +*                export of Public  and Platform headers into 
 1601.24 +*                correct locations. 
 1601.25 +*
 1601.26 +* Usage examples:
 1601.27 +*     ---------------------------------------------
 1601.28 +*      How to include this file in bld.inf and mmp-files.
 1601.29 +*       Reasoning: The build system is such that at the time the 
 1601.30 +*                  bld.inf and mmp-files are "compiled" the available
 1601.31 +*                  include paths are limited. Only the /epoc32/include
 1601.32 +*                  can be guaranteed. Thus to get this file available
 1601.33 +*                  you need to make include relative to the mentioned
 1601.34 +*                  directory. 
 1601.35 +*     ---------------------------------------------
 1601.36 +*
 1601.37 +*      #include <platform_paths.hrh>
 1601.38 +*    
 1601.39 +*     *************************************************************
 1601.40 +*     * MMP file related macro usages to add the system include paths
 1601.41 +*     * 
 1601.42 +*     * The include paths has to be related to the layer in which your SW 
 1601.43 +*     * resides. Thus as an example: a component residing in middleware
 1601.44 +*     * layer should use the MW specific macro.
 1601.45 +*     * Keep this as a separate line in the mmp-files. If you need to
 1601.46 +*     * add your own SYSTEMINCLUDE paths, please defined them as
 1601.47 +*     * separate statement.
 1601.48 +*     *************************************************************
 1601.49 +*         APP_LAYER_SYSTEMINCLUDE
 1601.50 +*         MW_LAYER_SYSTEMINCLUDE
 1601.51 +*         OS_LAYER_SYSTEMINCLUDE
 1601.52 +**
 1601.53 +*     *************************************************************
 1601.54 +*     * Macros related to using various parts of stdapis
 1601.55 +*     *************************************************************
 1601.56 +*       To use STLLIB you need to have this in your mmp-file
 1601.57 +*         STLLIB_USAGE_DEFINITIONS
 1601.58 +*
 1601.59 +*       Depending on what module you are using from stdapis you need to have
 1601.60 +*       one or more of the following macros in your mmp-file (every one in 
 1601.61 +*       separate line !)
 1601.62 +*
 1601.63 +*          OS_LAYER_LIBC_SYSTEMINCLUDE
 1601.64 +*          OS_LAYER_GLIB_SYSTEMINCLUDE
 1601.65 +*          OS_LAYER_SSL_SYSTEMINCLUDE
 1601.66 +*          OS_LAYER_STDCPP_SYSTEMINCLUDE
 1601.67 +*          OS_LAYER_BOOST_SYSTEMINCLUDE
 1601.68 +*          OS_LAYER_DBUS_SYSTEMINCLUDE
 1601.69 +*          OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
 1601.70 +*
 1601.71 +*     *************************************************************
 1601.72 +*     * Macros related to exporting Public and Platform APIs into 
 1601.73 +*     * correct place in the new system. 
 1601.74 +*     *
 1601.75 +*     * The macro that you should use depends on 2 things:
 1601.76 +*     *  - in which layer your package, which exports the APIs resides
 1601.77 +*     *  - what is the visibility of the API (public or platform)
 1601.78 +*     *************************************************************
 1601.79 +*      // the exporting of public APIs should use one of below macros
 1601.80 +*      // depending on which layer the API belogs to
 1601.81 +*      APP_LAYER_PUBLIC_EXPORT_PATH
 1601.82 +*      MW_LAYER_PUBLIC_EXPORT_PATH
 1601.83 +*      OS_LAYER_PUBLIC_EXPORT_PATH
 1601.84 +*
 1601.85 +*      // the exporting of platform APIs should use one of below macros
 1601.86 +*      // depending on which layer the API belogs to
 1601.87 +*      APP_LAYER_PLATFORM_EXPORT_PATH
 1601.88 +*      MW_LAYER_PLATFORM_EXPORT_PATH
 1601.89 +*      OS_LAYER_PLATFORM_EXPORT_PATH
 1601.90 +*
 1601.91 +*      The hierarchy how APIs should reside in foundation has been specified
 1601.92 +*      in developer documentation. See further details from documentation.
 1601.93 +*      Below is example case relying on the structure
 1601.94 +*        my_own_api/group/bld.inf
 1601.95 +*        my_own_api/inc/header1.h
 1601.96 +*        my_own_api/inc/subdir/header2.h
 1601.97 +*  
 1601.98 +*      Assuming that the API is in middleware layer and a public API. 
 1601.99 +*      Then the bld.inf should have the following      
1601.100 +*        ../inc/header1.h  APP_LAYER_PUBLIC_EXPORT_PATH(header1.h)
1601.101 +*        ../inc/subdir/header2.h  APP_LAYER_PUBLIC_EXPORT_PATH(subdir/header2.h)
1601.102 +*  
1601.103 +*      In the above case the locations are as follow (with current MACRO settings):
1601.104 +*        header1.h in /epoc32/include/app
1601.105 +*        header2.h in /epoc32/include/app/subdir
1601.106 +*
1601.107 +*
1601.108 +*     *************************************************************
1601.109 +*     * Macros related to IBY file exporting
1601.110 +*     *************************************************************
1601.111 +*			
1601.112 +*	    Component bld.inf files need to include platform_paths.hrh, see
1601.113 +*           beginning of this file on how to do this correctly. Component bld.inf 
1601.114 +*           files need to use these macros in PRJ_EXPORTS to get their IBY files 
1601.115 +*           to ROM image.
1601.116 +*
1601.117 +*     ---------------------------------------------
1601.118 +*     Usage for Core image (ROM+ROFS1):
1601.119 +*     ---------------------------------------------
1601.120 +*	 // Layer specific specific macros. Use the macro, which is specified
1601.121 +*        // for the layer, in which your component resides
1601.122 +*        <somepath>/<file1.iby>  CORE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
1601.123 +*	 <somepath>/<file2.iby>  CORE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
1601.124 +*	 <somepath>/<file3.iby>  CORE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)
1601.125 +*
1601.126 +*	 //stub iby files
1601.127 +*	 <somepath>/<file4.iby>  CORE_IBY_EXPORT_PATH(stubs,<file4.iby>)
1601.128 +*	 //tool iby files
1601.129 +*	 <somepath>/<file5.iby>  CORE_IBY_EXPORT_PATH(tools,<file5.iby>)
1601.130 +*		
1601.131 +*     ---------------------------------------------
1601.132 +*     Usage for Variant image, Language part (ROFS2):
1601.133 +*     ---------------------------------------------
1601.134 +*	 // Layer specific specific macros. Use the macro, which is specified
1601.135 +*        // for the layer, in which your component resides
1601.136 +*        <somepath>/<file1.iby>  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
1601.137 +*	 <somepath>/<file2.iby>  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
1601.138 +*	 <somepath>/<file3.iby>  LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
1601.139 +*
1601.140 +*     ---------------------------------------------
1601.141 +*     Usage for Variant image, Language part  (ROFS2):
1601.142 +*     ---------------------------------------------
1601.143 +*	 // Layer specific specific macros. Use the macro, which is specified
1601.144 +*        // for the layer, in which your component resides
1601.145 +*        <somepath>/<file1.iby>  CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
1601.146 +*	 <somepath>/<file2.iby>  CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
1601.147 +*	 <somepath>/<file3.iby>  CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
1601.148 +*
1601.149 +*     ---------------------------------------------
1601.150 +*     Usage for Customer Variant image, (ROFS3):
1601.151 +*     ---------------------------------------------
1601.152 +*	 // Layer specific specific macros. Use the macro, which is specified
1601.153 +*        // for the layer, in which your component resides
1601.154 +*        <somepath>/<f1.iby> CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(<f1.iby>)
1601.155 +*	 <somepath>/<f2.iby> CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(<f2.iby>)
1601.156 +*	 <somepath>/<f3.iby> CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(<f3.iby>)			
1601.157 +*	
1601.158 +*
1601.159 +*     *************************************************************
1601.160 +*     * Macro related to Exporting localization .loc files into 
1601.161 +*     * correct place in the system. 
1601.162 +*     *************************************************************
1601.163 +*
1601.164 +*     ---------------------------------------------
1601.165 +*     Usage for components:
1601.166 +*     ---------------------------------------------
1601.167 +*	    Component bld.inf files need to include platform_paths.hrh, see
1601.168 +*           beginning of this file on how to do this correctly. Component bld.inf 
1601.169 +*           files need to use these macros in PRJ_EXPORTS to get their loc files 
1601.170 +*           for localization.
1601.171 +*     loc files that should be localized by localisation team should be in 
1601.172 +*     loc-folder in the source tree (see developer guidelines)
1601.173 +*
1601.174 +*	 // Layer specific specific macros. Use the macro, which is specified
1601.175 +*        // for the layer, in which your component resides
1601.176 +*	 <somepath>/loc/<file>.loc  APP_LAYER_LOC_EXPORT_PATH(<file>.loc)
1601.177 +*	 <somepath>/loc/<file>.loc  MW_LAYER_LOC_EXPORT_PATH(<file>.loc)
1601.178 +*	 <somepath>/loc/<file>.loc  OS_LAYER_LOC_EXPORT_PATH(<file>.loc)
1601.179 +*
1601.180 +* 
1601.181 +*
1601.182 +*
1601.183 +*/
1601.184 +
1601.185 +
1601.186 +#ifndef PLATFORM_PATHS_HRH
1601.187 +#define PLATFORM_PATHS_HRH
1601.188 +
1601.189 +/**
1601.190 +**************************************************************************
1601.191 +* General comments about the exporting of headers macros
1601.192 +*  1) The definitions point currently to the old locations. (which makes some 
1601.193 +*     macros to have same values. The idea is that you can already start using
1601.194 +*     them now and those will be later on changed => change affects everybody.
1601.195 +***************************************************************************
1601.196 +*/
1601.197 +
1601.198 +/**
1601.199 +* ---------------------------------------
1601.200 +* Location, where the applications layer specific public headers should be exported
1601.201 +* See usage on top of this hrh-file.
1601.202 +* ---------------------------------------
1601.203 +*/
1601.204 +
1601.205 +#if __GNUC__ >= 3
1601.206 +#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
1601.207 +#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/exported
1601.208 +#else
1601.209 +#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
1601.210 +#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/##exported
1601.211 +#endif
1601.212 +
1601.213 +/**
1601.214 +* ---------------------------------------
1601.215 +* Location, where the applications layer specific platform headers should be exported
1601.216 +* See usage on top of this hrh-file.
1601.217 +* ---------------------------------------
1601.218 +*/
1601.219 +#if __GNUC__ >= 3
1601.220 +#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
1601.221 +#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/exported
1601.222 +#else
1601.223 +#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
1601.224 +#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/##exported
1601.225 +#endif
1601.226 +
1601.227 +/**
1601.228 +* ---------------------------------------
1601.229 +* Location, where the middleware layer specific public headers should be exported
1601.230 +* See usage on top of this hrh-file.
1601.231 +* ---------------------------------------
1601.232 +*/
1601.233 +#if __GNUC__ >= 3
1601.234 +#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
1601.235 +#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/exported
1601.236 +#else
1601.237 +#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
1601.238 +#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/##exported
1601.239 +#endif
1601.240 +
1601.241 +/**
1601.242 +* ---------------------------------------
1601.243 +* Location, where the middleware layer specific platform headers should be exported
1601.244 +* ---------------------------------------
1601.245 +*/
1601.246 +#if __GNUC__ >= 3
1601.247 +#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
1601.248 +#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/exported
1601.249 +#else
1601.250 +#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
1601.251 +#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/##exported
1601.252 +#endif
1601.253 +
1601.254 +/**
1601.255 +* ---------------------------------------
1601.256 +* Location, where the os layer specific public headers should be exported
1601.257 +* ---------------------------------------
1601.258 +*/
1601.259 +#if __GNUC__ >= 3
1601.260 +#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
1601.261 +#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/exported
1601.262 +#else
1601.263 +#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
1601.264 +#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
1601.265 +#endif
1601.266 +
1601.267 +/**
1601.268 +* ---------------------------------------
1601.269 +* Location, where the os specific platform headers should be exported
1601.270 +* ---------------------------------------
1601.271 +*/
1601.272 +#if __GNUC__ >= 3
1601.273 +#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
1601.274 +#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/exported
1601.275 +#else
1601.276 +#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
1601.277 +#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/##exported
1601.278 +#endif
1601.279 +
1601.280 +/**
1601.281 +* ---------------------------------------
1601.282 +* Location, where the  cenrep excel sheets should be exported
1601.283 +* Deprecated: should no longer be used. Kept for compability.
1601.284 +* ---------------------------------------
1601.285 +*/
1601.286 +#if __GNUC__ >= 3
1601.287 +#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/exported
1601.288 +#else
1601.289 +#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
1601.290 +#endif
1601.291 +
1601.292 +/**
1601.293 +**************************************************************************
1601.294 +*  General comments about the 3 define statements related to include paths:
1601.295 +*  1) the /epoc32/include/oem is now defined there for backward compability.
1601.296 +*     Once the directory is empty, the directory will be removed. However this 
1601.297 +*     enables us to ensure that if you use these define statements => you do 
1601.298 +*     not have to remove the statements later on, when the directory no longer 
1601.299 +*     exists.
1601.300 +*  2) These statements should be enough in normal cases. For certain specific 
1601.301 +*     cases you migth need to add some specific directory from /epoc32/include
1601.302 +*     (for instance /epoc32/include/ecom).
1601.303 +*     In normal cases the include staments in code should be relative to one of 
1601.304 +*     the system include paths, but in certain cases, the included files requires
1601.305 +*     that the subdirectory is also part of the system include paths.
1601.306 +****************************************************************************
1601.307 +*/
1601.308 +
1601.309 +/**
1601.310 +* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
1601.311 +* used in the mmp-files that are part of the applications-layer. It includes all 
1601.312 +* the needed directories from the /epoc32/include, that are valid ones for the 
1601.313 +* application-layer components. 
1601.314 +*
1601.315 +* Applications layer is the last one in the list, since most likely the most of 
1601.316 +* the headers come from middleware or os-layer  => thus they are first.
1601.317 +*/
1601.318 +#define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
1601.319 + /epoc32/include \
1601.320 + /epoc32/include/mw \
1601.321 + /epoc32/include/platform/mw \
1601.322 + /epoc32/include/platform \
1601.323 + /epoc32/include/app \
1601.324 + /epoc32/include/platform/app \
1601.325 + /epoc32/include/platform/loc \
1601.326 + /epoc32/include/platform/mw/loc \
1601.327 + /epoc32/include/platform/app/loc \
1601.328 + /epoc32/include/platform/loc/sc \
1601.329 + /epoc32/include/platform/mw/loc/sc \
1601.330 + /epoc32/include/platform/app/loc/sc
1601.331 + 
1601.332 +/**
1601.333 +* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
1601.334 +* used in the mmp-files that are part of the middleware-layer. It includes all 
1601.335 +* the needed directories from the /epoc32/include, that are valid ones for the 
1601.336 +* middleware-layer components. 
1601.337 +*/
1601.338 +#define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
1601.339 + /epoc32/include \
1601.340 + /epoc32/include/mw \
1601.341 + /epoc32/include/platform/mw \
1601.342 + /epoc32/include/platform \
1601.343 + /epoc32/include/platform/loc \
1601.344 + /epoc32/include/platform/mw/loc \
1601.345 + /epoc32/include/platform/loc/sc \
1601.346 + /epoc32/include/platform/mw/loc/sc
1601.347 +
1601.348 +/**
1601.349 +* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
1601.350 +* used in the mmp-files that are part of the  osextensions-layer. It includes all
1601.351 +* the needed directories from the /epoc32/include, that are valid ones for the
1601.352 +* os-layer components. 
1601.353 +*/
1601.354 +#define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
1601.355 + /epoc32/include \
1601.356 + /epoc32/include/platform \
1601.357 + /epoc32/include/platform/loc \
1601.358 + /epoc32/include/platform/loc/sc
1601.359 +
1601.360 +// Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
1601.361 +// used.
1601.362 +// Removed, use teh OS_LAYER_SYSTEMINCLUDE instead.
1601.363 +// #define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE
1601.364 +
1601.365 +/**
1601.366 +* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
1601.367 +* used in the mmp-files that are part of the os-layer. This is intended 
1601.368 +* to be only used by those components which need to use in their mmp-file either
1601.369 +* kern_ext.mmh or nkern_ext.mmh. Reason is that those
1601.370 +* 2 files already contain the /epoc32/include  as system include path.
1601.371 +* 
1601.372 +*/
1601.373 +#define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE \
1601.374 + /epoc32/include/platform
1601.375 +
1601.376 +// Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
1601.377 +// has to be used.
1601.378 +// Removed, use the OS_LAYER_KERNER_SYSTEMINCLUDE instead.
1601.379 +// #define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE
1601.380 +
1601.381 +/**
1601.382 +****************************************************************************
1601.383 +* Definitions that also define the systeminclude paths for various
1601.384 +* part of stdapis. Each statement has to be in its own line in the using
1601.385 +* mmp-file. There are be more than 1 statement in single mmp-file.
1601.386 +****************************************************************************
1601.387 +*/
1601.388 +#define OS_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
1601.389 +
1601.390 +#define OS_LAYER_GLIB_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
1601.391 +                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
1601.392 +                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject)
1601.393 +
1601.394 +
1601.395 +#define OS_LAYER_SSL_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
1601.396 +                  
1601.397 +#define OS_LAYER_STDCPP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) 
1601.398 +
1601.399 +#define OS_LAYER_BOOST_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost)
1601.400 +
1601.401 +#define OS_LAYER_DBUS_SYSTEMINCLUDE SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
1601.402 +                                                     OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
1601.403 +#define OS_LAYER_LIBUTILITY_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)
1601.404 +
1601.405 +#define OS_LAYER_LIBOIL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/liboil)
1601.406 +
1601.407 +#define MW_LAYER_GSTREAMER_SYSTEMINCLUDE SYSTEMINCLUDE \
1601.408 + /epoc32/include/platform/mw/gstreamer/10_18 \
1601.409 + /epoc32/include/platform/mw/gstreamer/10_18/gst \
1601.410 + /epoc32/include/platform/mw/gstreamer/10_18/gst/gstcontroller \
1601.411 + /epoc32/include/stdapis/machine
1601.412 +
1601.413 +// You need to add STLLIB_USAGE_DEFINITIONS as a separate line into your mmp-file, if you are using
1601.414 +// the stllib. 
1601.415 +#define STLLIB_USAGE_DEFINITIONS OPTION CW -wchar_t on\
1601.416 +        MACRO _WCHAR_T_DECLARED
1601.417 +
1601.418 +
1601.419 +/**
1601.420 +****************************************************************************
1601.421 +* Definitions that also define the paths to the layer specific source directories.
1601.422 +****************************************************************************
1601.423 +*/
1601.424 +/**
1601.425 +* The below 3 macros define the paths to the layer-specific source dirs.
1601.426 +* See usage on top of this hrh-file, these are used the same way as 
1601.427 +* for instance the OS_LAYER_DOMAIN_EXPORT_PATH
1601.428 +* Deprecated: is not allowed to be using in Symbian Foundation
1601.429 +*/
1601.430 +#if __GNUC__ >= 3
1601.431 +#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
1601.432 +#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
1601.433 +#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
1601.434 +#else
1601.435 +#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
1601.436 +#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
1601.437 +#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
1601.438 +#endif
1601.439 +
1601.440 +/**
1601.441 +****************************************************************************
1601.442 +* Definitions to export IBY files to different folders where they will be taken 
1601.443 +* to ROM image
1601.444 +****************************************************************************
1601.445 +*/
1601.446 +
1601.447 +// Following three definitions are used for exporting IBY files to 
1601.448 +// Core image (ROM+ROFS1). IBY files are exported according to their layer.
1601.449 +#if __GNUC__ >= 3
1601.450 +#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/exported
1601.451 +#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/exported
1601.452 +#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.453 +#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/exported
1601.454 +#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
1601.455 +#else
1601.456 +#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/##exported
1601.457 +#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/##exported
1601.458 +#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.459 +#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/##exported
1601.460 +#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
1601.461 +#endif
1601.462 +
1601.463 +// Following three definitions are used for exporting IBY files to Variant image, 
1601.464 +// Language part (ROFS2). IBY files are exported according to their layer.
1601.465 +#if __GNUC__ >= 3
1601.466 +#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/exported
1601.467 +#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/exported
1601.468 +#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.469 +#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/exported
1601.470 +#else
1601.471 +#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/##exported
1601.472 +#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/##exported
1601.473 +#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.474 +#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/##exported
1601.475 +#endif
1601.476 +
1601.477 +// Following three definitions are used for exporting IBY files to Variant image, (ROFS2). 
1601.478 +// BY files are exported according to their layer.
1601.479 +#if __GNUC__ >= 3
1601.480 +#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/exported
1601.481 +#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/exported
1601.482 +#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.483 +#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/exported
1601.484 +#else
1601.485 +#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/##exported
1601.486 +#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/##exported
1601.487 +#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.488 +#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/##exported
1601.489 +#endif
1601.490 +
1601.491 +// Following three definitions are used for exporting IBY files to 
1601.492 +// Variant Customer part, (ROFS3). IBY files are exported according to 
1601.493 +// their layer.
1601.494 +#if __GNUC__ >= 3
1601.495 +#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/exported
1601.496 +#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/exported
1601.497 +#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.498 +#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/exported
1601.499 +#else
1601.500 +#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/##exported
1601.501 +#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/##exported
1601.502 +#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
1601.503 +#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/##exported
1601.504 +#endif
1601.505 +
1601.506 +
1601.507 +// Following definition is used for exporting tools and stubs IBY files to 
1601.508 +// Core image.
1601.509 +#if __GNUC__ >= 3
1601.510 +#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/path/exported
1601.511 +#else
1601.512 +#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/##path##/##exported
1601.513 +#endif
1601.514 +
1601.515 +/**
1601.516 +* ---------------------------------------
1601.517 +* Location, where the localization .loc file should be exported
1601.518 +* ---------------------------------------
1601.519 +*/
1601.520 +// Location, where the os layer localization .loc file should be 
1601.521 +// exported
1601.522 +#if __GNUC__ >= 3
1601.523 +// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
1601.524 +#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
1601.525 +#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/exported
1601.526 +
1601.527 +// Location, where the middleware layer localization .loc file should be 
1601.528 +// exported
1601.529 +#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/exported
1601.530 +
1601.531 +// Location, where the application layer localization .loc file should be 
1601.532 +// exported
1601.533 +#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/exported
1601.534 +
1601.535 +#else
1601.536 +
1601.537 +// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
1601.538 +#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
1601.539 +#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/##exported
1601.540 +
1601.541 +// Location, where the middleware layer localization .loc file should be exported
1601.542 +#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/##exported
1601.543 +
1601.544 +// Location, where the application layer localization .loc file should be exported
1601.545 +#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/##exported
1601.546 +#endif
1601.547 +
1601.548 +/**
1601.549 +* ---------------------------------------
1601.550 +* Macros for Configuration tool migration. 
1601.551 +* The below macros define the location under epoc32, where the confml 
1601.552 +* (Configuration Markup Language) and crml (Central Repository Markup Language) 
1601.553 +* files should be exported.
1601.554 +* ---------------------------------------
1601.555 +*/
1601.556 +#if __GNUC__ >= 3
1601.557 +#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/category/file
1601.558 +#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/category/file
1601.559 +#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/category/file
1601.560 +#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/category/config/file
1601.561 +#else
1601.562 +#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/##category##/##file
1601.563 +#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/##category##/##file
1601.564 +#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/##category##/##file
1601.565 +#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/##category##/config/##file
1601.566 +#endif
1601.567 +
1601.568 +#define APP_LAYER_CONFML(exported)                  CONFML_EXPORT_PATH(exported,s60)
1601.569 +#define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
1601.570 +#define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
1601.571 +#define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
1601.572 +                                                    
1601.573 +#define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
1601.574 +#define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
1601.575 +#define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
1601.576 +#define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
1601.577 +       
1601.578 +// Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
1601.579 +#define OSEXT_LAYER_CONFML(exported)                do not use intentionally generates error
1601.580 +#define OSEXT_LAYER_CRML(exported)                  do not use intentionally generates error
1601.581 +#define OSEXT_LAYER_GCFML(exported)                 do not use intentionally generates error
1601.582 +#define OSEXT_LAYER_CONFML_CONFIG(exported)         do not use intentionally generates error
1601.583 +#define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
1601.584 +#define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
1601.585 +#define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
1601.586 +#define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
1601.587 +
1601.588 +#endif  // end of PLATFORM_PATHS_HRH
  1602.1 --- a/epoc32/include/vcal.h	Tue Mar 16 16:12:26 2010 +0000
  1602.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1602.3 @@ -1,269 +0,0 @@
  1602.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1602.5 -// All rights reserved.
  1602.6 -// This component and the accompanying materials are made available
  1602.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1602.8 -// which accompanies this distribution, and is available
  1602.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1602.10 -//
 1602.11 -// Initial Contributors:
 1602.12 -// Nokia Corporation - initial contribution.
 1602.13 -//
 1602.14 -// Contributors:
 1602.15 -//
 1602.16 -// Description:
 1602.17 -//
 1602.18 - 
 1602.19 -#if !defined(__VCAL_H__)
 1602.20 -#define __VCAL_H__
 1602.21 -
 1602.22 -#if !defined(__VERSIT_H__)
 1602.23 -#include <versit.h>
 1602.24 -#endif
 1602.25 -
 1602.26 -#if !defined(__VRECUR_H__)
 1602.27 -#include <vrecur.h>
 1602.28 -#endif
 1602.29 -
 1602.30 -_LIT(KVersitTokenVCalVersionNo, "1.0");
 1602.31 -
 1602.32 -//
 1602.33 -// CParserVCal
 1602.34 -//
 1602.35 -class CParserVCal : public CVersitParser
 1602.36 -/** A vCalendar parser.
 1602.37 -
 1602.38 -Adds support for parsing vToDos and vEvents, and associated alarms 
 1602.39 -(see CParserPropertyValueAlarm) to the functionality of CVersitParser.
 1602.40 -
 1602.41 -Adds a constructor and overrides CVersitParser::InternalizeL() for streams, 
 1602.42 -ExternalizeL() for streams, RecognizeToken(), RecognizeEntityName() and MakeEntityL().
 1602.43 -
 1602.44 -The vCalendar data is read from or written to a stream or file, using the 
 1602.45 -InternalizeL() and ExternalizeL() functions. Most users of this class will 
 1602.46 -only need to use these functions.
 1602.47 -
 1602.48 -Note: if you are sequentially creating and destroying multiple 
 1602.49 -parsers, a major performance improvement may be achieved by using thread local 
 1602.50 -storage to store an instance of CVersitUnicodeUtils which persists and can be 
 1602.51 -used by all of the parsers.
 1602.52 -
 1602.53 -See CVersitTlsData for more information. 
 1602.54 -
 1602.55 -@publishedAll
 1602.56 -@released
 1602.57 -*/
 1602.58 -	{
 1602.59 -public:
 1602.60 -	IMPORT_C static CParserVCal* NewL();
 1602.61 -public: // from CVersitParser
 1602.62 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 1602.63 -	IMPORT_C void ExternalizeL(RWriteStream& aStream);
 1602.64 -protected: // from CVersitParser
 1602.65 -	IMPORT_C CVersitParser* MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
 1602.66 -public: // from CVersitParser
 1602.67 -	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
 1602.68 -	IMPORT_C TInt RecognizeEntityName() const;
 1602.69 -private:
 1602.70 -	CParserVCal();
 1602.71 -private: // from CVersitParser
 1602.72 -	IMPORT_C virtual void Reserved1();
 1602.73 -	IMPORT_C virtual void Reserved2();
 1602.74 -	};
 1602.75 -
 1602.76 -//
 1602.77 -// CVersitAlarm
 1602.78 -//
 1602.79 -class CVersitAlarm : public CBase
 1602.80 -/** An alarm for a vEvent or a vTodo. 
 1602.81 -
 1602.82 -Specifies the date/time for the alarm, the amount of time the alarm will be 
 1602.83 -snoozed (optional), the number of times that the alarm will repeat, the binary 
 1602.84 -data of the sound to be played when the alarm runs (optional), and some text 
 1602.85 -to associate with the alarm (optional).
 1602.86 -
 1602.87 -An object of this class is owned by the CParserPropertyValueAlarm class.
 1602.88 -
 1602.89 -This class supports the following types of alarm:
 1602.90 -
 1602.91 -- Audible Alarm
 1602.92 -
 1602.93 -- Display Alarm (displays message on the screen) 
 1602.94 -
 1602.95 -- Procedure Alarm (calls a procedure)
 1602.96 -
 1602.97 -- Mail Alarm (sends an email). 
 1602.98 -
 1602.99 -@publishedAll
1602.100 -@released
1602.101 -*/
1602.102 -	{
1602.103 -public:
1602.104 -	IMPORT_C static CVersitAlarm* NewL(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount, const TDesC& aAudioContent, const TDesC& aNote);
1602.105 -	IMPORT_C ~CVersitAlarm();
1602.106 -private:
1602.107 -	CVersitAlarm(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount);
1602.108 -	void ConstructL(const TDesC& aAudioContent, const TDesC& aNote);
1602.109 -public:	
1602.110 -	/** The date/time for the alarm. */
1602.111 -	TVersitDateTime* iRunTime;
1602.112 -	/** The amount of time the alarm will be snoozed (optional). */
1602.113 -	TTime* iSnoozeTime;
1602.114 -	/** The number of times that the alarm will repeat. */
1602.115 -	TInt iRepeatCount;
1602.116 -	/** The binary data describing the sound to play for an AALARM (optional), or 
1602.117 -	the string which specifies the address to send the e-mail to, for an MALARM. */
1602.118 -	HBufC* iAudioContent;
1602.119 -	/** The mesage to display on the screen for a DALARM (optional), or 
1602.120 -	the body of the e-mail to be sent for an MALARM, or the name of the procedure 
1602.121 -	to call for a PALARM. */
1602.122 -	HBufC* iNote;//Empty except for MAlarm
1602.123 -	};
1602.124 -	
1602.125 -class CVersitExtendedAlarm : public CBase
1602.126 -/** An extended alarm for a vEvent or a vTodo. 
1602.127 -
1602.128 -Specifies the date/time for the alarm, the amount of time the alarm will be 
1602.129 -snoozed (optional), the number of times that the alarm will repeat, and the 
1602.130 -action for the alarm.
1602.131 -An object of this class is owned by the CParserPropertyValueAlarm class.
1602.132 -
1602.133 -This class supports the following types of alarm:
1602.134 -- X-EPOCALARM 
1602.135 -
1602.136 -@publishedPartner
1602.137 -@released
1602.138 -*/
1602.139 -	{
1602.140 -public:
1602.141 -
1602.142 -	/** Extended Alarm's disposition types.
1602.143 -	*/
1602.144 -	enum TDisposition
1602.145 -		{
1602.146 -		/** URL disposition
1602.147 -		*/
1602.148 -		EDispositionUrl = 0,
1602.149 -		/** Inline disposition
1602.150 -		*/
1602.151 -		EDispositionInline = 1,
1602.152 -		/** Unknown disposition
1602.153 -		*/
1602.154 -		EDispositionUnknown = 15
1602.155 -		};
1602.156 -	
1602.157 -	IMPORT_C static CVersitExtendedAlarm* NewL(const TDesC8& aContent,const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aDisposition);
1602.158 -	IMPORT_C ~CVersitExtendedAlarm();
1602.159 -private:
1602.160 -	CVersitExtendedAlarm();
1602.161 -	void ConstructL(const TDesC8& aContent, const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aContentDisposition);
1602.162 -public:	
1602.163 -	/** The data describing the action for the alarm.*/
1602.164 -	HBufC8* iContent;
1602.165 -	/** The MIME type of the data describing the action for the alarm.*/
1602.166 -	HBufC8* iMimeType;
1602.167 -	/** The disposition of the data for the alarm action (i.e whether it is inline or an URI).*/
1602.168 -	CVersitExtendedAlarm::TDisposition iDisposition;
1602.169 -	};
1602.170 -
1602.171 -//
1602.172 -// CParserVCalEntity
1602.173 -//
1602.174 -class CParserVCalEntity : public CRecurrenceParser
1602.175 -/** A parser for vCalendar sub-entities.
1602.176 -
1602.177 -A vCalendar sub-entity is a vEvent or vToDo contained in a vCalendar. vEvents 
1602.178 -and vToDos are derived from CRecurrenceParser, which provides recurrence functionality. 
1602.179 -
1602.180 -vEvents and vTodos may have alarm properties (see CParserPropertyValueAlarm). 
1602.181 -
1602.182 -@publishedAll
1602.183 -@released
1602.184 -*/
1602.185 -	{
1602.186 -public:
1602.187 -	IMPORT_C static CParserVCalEntity* NewL();
1602.188 -	IMPORT_C ~CParserVCalEntity();
1602.189 -public: // from CVersitParser
1602.190 -	IMPORT_C void ExternalizeL(RWriteStream& aStream);
1602.191 -protected: // from CVersitParser
1602.192 -	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
1602.193 -	IMPORT_C CVersitAlarm* MakePropertyValueAlarmL(TPtr16 aAlarmValue);
1602.194 -	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(TPtr16 aAlarmValue);
1602.195 -	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(CBufSeg& aAlarmValue);
1602.196 -	IMPORT_C CVersitExtendedAlarm::TDisposition DecodeDisposition(const TDesC8& aContentDispositionToken) const;
1602.197 -	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
1602.198 -private:
1602.199 -	CParserVCalEntity();
1602.200 -private: // from CVersitParser
1602.201 -	IMPORT_C virtual void Reserved1();
1602.202 -	IMPORT_C virtual void Reserved2();
1602.203 -	};
1602.204 -
1602.205 -
1602.206 -//
1602.207 -// CParserPropertyValueAlarm
1602.208 -//
1602.209 -class CParserPropertyValueAlarm : public CParserTimePropertyValue
1602.210 -/** An alarm property value parser for a vCalendar entity.
1602.211 -
1602.212 -An alarm can be associated with a vEvent or a vTodo. The value for the alarm 
1602.213 -is stored as a CVersitAlarm.
1602.214 -
1602.215 -Note: The UID for an alarm property value is KVCalPropertyAlarmUid. 
1602.216 -
1602.217 -@publishedAll
1602.218 -@released
1602.219 -*/
1602.220 -	{
1602.221 -public:
1602.222 -	IMPORT_C CParserPropertyValueAlarm(CVersitAlarm* aValue);
1602.223 -	IMPORT_C CParserPropertyValueAlarm();
1602.224 -	IMPORT_C ~CParserPropertyValueAlarm();
1602.225 -	inline CVersitAlarm* Value() const;
1602.226 -public: // from CParserTimePropertyValue
1602.227 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1602.228 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
1602.229 -public: // from CParserPropertyValue
1602.230 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
1602.231 -	IMPORT_C TBool IsAsciiCharacterSetSufficient();
1602.232 -private:
1602.233 -	CVersitAlarm* iValue;
1602.234 -	};
1602.235 -
1602.236 -
1602.237 -//
1602.238 -// CParserPropertyValueExtendedAlarm
1602.239 -//
1602.240 -class CParserPropertyValueExtendedAlarm : public CParserTimePropertyValue
1602.241 -/** An extended alarm property value parser for a vCalendar entity.
1602.242 -
1602.243 -An alarm action can be attached with a vEvent or a vTodo. The value for the alarm 
1602.244 -action is stored as a CVersitExtendedAlarm object. 
1602.245 -
1602.246 -Note: The UID for an extended alarm property value is KVCalPropertyExtendedAlarmUid. 
1602.247 -
1602.248 -@publishedAll
1602.249 -@released
1602.250 -*/
1602.251 -	{
1602.252 -public:
1602.253 -	IMPORT_C CParserPropertyValueExtendedAlarm(CVersitExtendedAlarm* aValue);
1602.254 -	IMPORT_C ~CParserPropertyValueExtendedAlarm();
1602.255 -	inline CVersitExtendedAlarm* Value() const;
1602.256 -public: // from CParserTimePropertyValue
1602.257 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1602.258 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
1602.259 -public: // from CParserPropertyValue
1602.260 -	IMPORT_C void ExternalizeL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
1602.261 -	IMPORT_C TBool IsAsciiCharacterSetSufficient();
1602.262 -private:
1602.263 -	void ExternalizeUrlL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
1602.264 -	void ExternalizeInlineL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
1602.265 -	
1602.266 -private:
1602.267 -	CVersitExtendedAlarm* iValue;
1602.268 -	};
1602.269 -
1602.270 -#include <vcal.inl>
1602.271 -
1602.272 -#endif
  1603.1 --- a/epoc32/include/vcal.inl	Tue Mar 16 16:12:26 2010 +0000
  1603.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1603.3 @@ -1,31 +0,0 @@
  1603.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1603.5 -// All rights reserved.
  1603.6 -// This component and the accompanying materials are made available
  1603.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1603.8 -// which accompanies this distribution, and is available
  1603.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1603.10 -//
 1603.11 -// Initial Contributors:
 1603.12 -// Nokia Corporation - initial contribution.
 1603.13 -//
 1603.14 -// Contributors:
 1603.15 -//
 1603.16 -// Description:
 1603.17 -// CParserPropertyValueAlarm
 1603.18 -// 
 1603.19 -//
 1603.20 -
 1603.21 -inline CVersitAlarm* CParserPropertyValueAlarm::Value() const
 1603.22 -/** Gets a pointer to the alarm property value.
 1603.23 -
 1603.24 -@return Pointer to the alarm property value. */
 1603.25 -	{return iValue;}
 1603.26 -
 1603.27 -//
 1603.28 -// CParserPropertyValueExtendedAlarm
 1603.29 -//
 1603.30 -inline CVersitExtendedAlarm* CParserPropertyValueExtendedAlarm::Value() const
 1603.31 -/** Gets a pointer to the extended alarm property value.
 1603.32 -
 1603.33 -@return Pointer to the extended alarm property value. */
 1603.34 -	{return iValue;}
  1604.1 --- a/epoc32/include/vcard.h	Tue Mar 16 16:12:26 2010 +0000
  1604.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1604.3 @@ -1,183 +0,0 @@
  1604.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1604.5 -// All rights reserved.
  1604.6 -// This component and the accompanying materials are made available
  1604.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1604.8 -// which accompanies this distribution, and is available
  1604.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1604.10 -//
 1604.11 -// Initial Contributors:
 1604.12 -// Nokia Corporation - initial contribution.
 1604.13 -//
 1604.14 -// Contributors:
 1604.15 -//
 1604.16 -// Description:
 1604.17 -//
 1604.18 - 
 1604.19 -#ifndef __VCARD_H__
 1604.20 -#define __VCARD_H__
 1604.21 -
 1604.22 -#ifndef __VERSIT_H__
 1604.23 -#include <versit.h>
 1604.24 -#endif
 1604.25 -
 1604.26 -#include <vobserv.h>
 1604.27 -
 1604.28 -_LIT(KVersitTokenVCardVersionNo, "2.1");
 1604.29 -
 1604.30 -class CVCard3ParserPlugIn;
 1604.31 -
 1604.32 -//
 1604.33 -// CParserVCard
 1604.34 -//
 1604.35 -class CParserVCard : public CVersitParser
 1604.36 -/** A vCard parser. 
 1604.37 -
 1604.38 -Adds support for property groups (see CParserGroupedProperty) and agents 
 1604.39 -(see CParserPropertyValueAgent) to the functionality of CVersitParser. 
 1604.40 -
 1604.41 -Provides a constructor and overrides CVersitParser::InternalizeL(),   
 1604.42 -ExternalizeL(), RecognizeToken(), ConvertAllPropertyDateTimesToMachineLocalL(), 
 1604.43 -ParsePropertyL() and MakePropertyValueL().
 1604.44 -
 1604.45 -The vCard data is read from or written to a stream or file, using the InternalizeL() 
 1604.46 -and ExternalizeL() functions. Most users of this class will only need to use 
 1604.47 -these functions.
 1604.48 -
 1604.49 -If you are sequentially creating and destroying multiple parsers, a major performance 
 1604.50 -improvement may be achieved by using thread local storage to store an instance of 
 1604.51 -CVersitUnicodeUtils which persists and can be used by all of the parsers.
 1604.52 -
 1604.53 -See CVersitTlsData for more information. 
 1604.54 -@publishedAll
 1604.55 -@released
 1604.56 -*/
 1604.57 -	{
 1604.58 -public:
 1604.59 -	IMPORT_C static CParserVCard* NewL();
 1604.60 -	IMPORT_C CArrayPtr<CParserProperty>* GroupOfPropertiesL(const TDesC8& aName) const;
 1604.61 -public: //from CVersitParser
 1604.62 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 1604.63 -	IMPORT_C void ExternalizeL(RWriteStream& aStream);
 1604.64 -	IMPORT_C void ConvertAllPropertyDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
 1604.65 -protected:
 1604.66 -	IMPORT_C virtual CParserPropertyValue* MakePropertyValueAgentL(TPtr16 aValue);
 1604.67 -	IMPORT_C CDesC8Array* GetGroupNamesL(TPtr8& aGroupsAndName);
 1604.68 -protected: // from CVersitParser
 1604.69 -	IMPORT_C void ParsePropertyL();
 1604.70 -	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
 1604.71 -    IMPORT_C CParserPropertyValue* MakePropertyValueSoundL(HBufC16*& aValue);
 1604.72 -public: //from CVersitParser
 1604.73 -	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
 1604.74 -	IMPORT_C void ConvertDateTimesToMachineLocalAndDeleteTZL();
 1604.75 -protected:
 1604.76 -	CParserVCard();
 1604.77 -private: // from CVersitParser
 1604.78 -	IMPORT_C virtual void Reserved1();
 1604.79 -	IMPORT_C virtual void Reserved2();
 1604.80 -	};
 1604.81 -
 1604.82 -NONSHARABLE_CLASS(CParserVCard3) : public CParserVCard
 1604.83 -/** A vCard 3.0 parser. 
 1604.84 -
 1604.85 -Overrides CParserVCard::InternalizeL(). Internalizing of vCard 3.0
 1604.86 -objects is not supported
 1604.87 -
 1604.88 -@internalTechnology
 1604.89 -@prototype
 1604.90 -*/
 1604.91 -	{
 1604.92 -public:
 1604.93 -	IMPORT_C static CParserVCard3* NewL();
 1604.94 -	~CParserVCard3();
 1604.95 -	
 1604.96 -public: //from CParserVCard
 1604.97 -	IMPORT_C void InternalizeL(RReadStream& aStream);
 1604.98 -	
 1604.99 -private:
1604.100 -	CParserVCard3();
1604.101 -	void ConstructL();
1604.102 -	void CreateParserPlugInL();
1604.103 -
1604.104 -private:
1604.105 -	CVCard3ParserPlugIn* iPlugInImpl;
1604.106 -	};
1604.107 -	
1604.108 -//
1604.109 -// CParserGroupedProperty
1604.110 -//
1604.111 -class CParserGroupedProperty : public CParserProperty
1604.112 -/** A grouped property.
1604.113 -
1604.114 -This is a vCard property which may be a member of one or more property groups. 
1604.115 -It owns an array of descriptors, each of which identifies a group 
1604.116 -to which the property belongs.
1604.117 -
1604.118 -An example of how grouped properties may be useful is for a person with two 
1604.119 -homes. Each home has an address and telephone number, both of which are to 
1604.120 -be stored on the vCard. The address and telephone number are grouped for each 
1604.121 -home. A prefix for the address and telephone number properties is provided: 
1604.122 -one for each home. Each prefix is stored as a property group.
1604.123 -
1604.124 -When the property is externalised, the identities of all the groups to which 
1604.125 -the property belongs (i.e. the prefixes) are written to the stream before 
1604.126 -CParserProperty::ExternalizeL() is called.
1604.127 -
1604.128 -The class also provides a function which can be used to test whether 
1604.129 -the property is a member of a given group.
1604.130 -
1604.131 -Note that the vCard parser stores all properties using this class; if the 
1604.132 -vCard property is not grouped then the array of property groups is empty. 
1604.133 -Conversely, the vCalender parser does not have property groups, and so stores 
1604.134 -all properties using the CParserProperty base class. 
1604.135 -@publishedAll
1604.136 -@released
1604.137 -*/
1604.138 -	{
1604.139 -public:
1604.140 -	IMPORT_C static CParserGroupedProperty* NewL(CParserPropertyValue& aPropertyValue, const TDesC8& aName, CDesC8Array* aArrayOfGroups, CArrayPtr<CParserParam>* aArrayOfParams);
1604.141 -	IMPORT_C CParserGroupedProperty(CDesC8Array* aArrayOfGroups, CArrayPtr<CParserParam>* aArrayOfParams);
1604.142 -	IMPORT_C ~CParserGroupedProperty();
1604.143 -	IMPORT_C TBool Group(const TDesC8& aGroup) const;
1604.144 -	inline void SetGroups(CDesC8Array* aArrayOfGroups);
1604.145 -	inline const CDesC8Array* Groups();
1604.146 -public: //from CParserProperty
1604.147 -	IMPORT_C TBool SupportsInterface(const TUid& aInterfaceUid) const;
1604.148 -	IMPORT_C void ExternalizeL(RWriteStream& aStream, CVersitParser* aVersitParser = NULL);
1604.149 -protected:
1604.150 -	CParserGroupedProperty(CParserPropertyValue& aPropertyValue, CDesC8Array* aArrayOfGroups, CArrayPtr<CParserParam>* aArrayOfParams);
1604.151 -private: //from CParserProperty
1604.152 -	IMPORT_C virtual void Reserved();
1604.153 -protected:
1604.154 -	CDesC8Array* iArrayOfGroups;
1604.155 -	};
1604.156 -
1604.157 -//
1604.158 -// CParserPropertyValueAgent
1604.159 -//
1604.160 -class CParserPropertyValueAgent : public CParserPropertyValue
1604.161 -/** An agent property value parser. 
1604.162 -
1604.163 -An agent property value contains information about a person who is not the 
1604.164 -main subject of the vCard. It is implemented as a vCard nested within another 
1604.165 -vCard. The agent's vCard is held in the property value of the parent vCard.
1604.166 -
1604.167 -The UID for an agent property value is KVCardPropertyAgentUid. 
1604.168 -@publishedAll
1604.169 -@released
1604.170 -*/
1604.171 -	{
1604.172 -public:
1604.173 -	IMPORT_C CParserPropertyValueAgent(CParserVCard* aValue);
1604.174 -	IMPORT_C ~CParserPropertyValueAgent();
1604.175 -	inline CParserVCard* Value() const;
1604.176 -
1604.177 -public: // from CParserPropertyValue
1604.178 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt /*aLengthOutput*/);
1604.179 -protected:
1604.180 -	CParserVCard* iValue;
1604.181 -private:
1604.182 -	};
1604.183 -
1604.184 -#include <vcard.inl>
1604.185 -
1604.186 -#endif
  1605.1 --- a/epoc32/include/vcard.inl	Tue Mar 16 16:12:26 2010 +0000
  1605.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1605.3 @@ -1,36 +0,0 @@
  1605.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1605.5 -// All rights reserved.
  1605.6 -// This component and the accompanying materials are made available
  1605.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1605.8 -// which accompanies this distribution, and is available
  1605.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1605.10 -//
 1605.11 -// Initial Contributors:
 1605.12 -// Nokia Corporation - initial contribution.
 1605.13 -//
 1605.14 -// Contributors:
 1605.15 -//
 1605.16 -// Description:
 1605.17 -// CParserPropertyValueAgent
 1605.18 -// 
 1605.19 -//
 1605.20 -
 1605.21 -inline CParserVCard* CParserPropertyValueAgent::Value() const
 1605.22 -/** Gets the agent object owned by the property value.
 1605.23 -
 1605.24 -@return A pointer to the agent property value. */
 1605.25 -	{return iValue;}
 1605.26 -
 1605.27 -inline void CParserGroupedProperty::SetGroups(CDesC8Array* aArrayOfGroups)
 1605.28 -/** Sets the list of groups to which the property belongs, replacing any existing 
 1605.29 -list.
 1605.30 -
 1605.31 -@param aArrayOfGroups Array of descriptors; each of which specifies 
 1605.32 -a group name. The grouped property takes ownership of the array. */
 1605.33 -	{iArrayOfGroups=aArrayOfGroups;}
 1605.34 -
 1605.35 -inline const CDesC8Array* CParserGroupedProperty::Groups()
 1605.36 -/** Gets the groups to which the property belongs.
 1605.37 -
 1605.38 -@return Pointer to an array of descriptors. Each one specifies a group name. */
 1605.39 -	{return iArrayOfGroups;}
  1606.1 --- a/epoc32/include/versit.h	Tue Mar 16 16:12:26 2010 +0000
  1606.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1606.3 @@ -1,485 +0,0 @@
  1606.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1606.5 -// All rights reserved.
  1606.6 -// This component and the accompanying materials are made available
  1606.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1606.8 -// which accompanies this distribution, and is available
  1606.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1606.10 -//
 1606.11 -// Initial Contributors:
 1606.12 -// Nokia Corporation - initial contribution.
 1606.13 -//
 1606.14 -// Contributors:
 1606.15 -//
 1606.16 -// Description:
 1606.17 -//
 1606.18 -
 1606.19 -#ifndef __VERSIT_H__
 1606.20 -#define __VERSIT_H__
 1606.21 -
 1606.22 -// System includes
 1606.23 -#include <e32base.h>
 1606.24 -#include <badesca.h>
 1606.25 -#include <s32file.h>
 1606.26 -
 1606.27 -// User includes
 1606.28 -#include <vuid.h>
 1606.29 -#include <vtoken.h>
 1606.30 -#include <vprop.h>
 1606.31 -#include <versittls.h>
 1606.32 -
 1606.33 -// Classes referenced
 1606.34 -class RFile;
 1606.35 -class TVersitDateTime;
 1606.36 -class MVersitObserver;
 1606.37 -class MVersitPlugIn;
 1606.38 -
 1606.39 -// Panic enumeration
 1606.40 -/** Versit panic numbers. The Versit panic numbers have a category of "Versit-Parser". 
 1606.41 -@internalComponent
 1606.42 -@released
 1606.43 -*/
 1606.44 -enum TVersitParserPanic
 1606.45 -	{
 1606.46 -	ECurrentTokenNotFound,		//Unused
 1606.47 -	EUnicodeUtilsNotFound,		//Unused
 1606.48 -	ENoPropertyValue,		//Unused
 1606.49 -	/** A CWeekDayArray contains an invalid value (not between EMonday 
 1606.50 -	and ESunday inclusive). */
 1606.51 -	ENoWeekdayFound,
 1606.52 -	/** The number of a week within a month is invalid. */
 1606.53 -	EWeekNoOverTen,
 1606.54 -	/** The repeat type for a recurrence rule property value is not one of the values 
 1606.55 -	specified in CVersitRecurrence::TType. */
 1606.56 -	ENoRecognizedRepeatType,
 1606.57 -	EVersitPanicEscapedTextAlreadyExists,		//Unused
 1606.58 -	/** 8-bit encoding is proposed as the default for a parser but may not be appropriate. */
 1606.59 -	EVersitPanicCannotSetEightBitEncoding,
 1606.60 -	/** 8-bit encoding is encountered or proposed where it is not expected. */
 1606.61 -	EVersitPanicUnexpectedEightBitEncoding,
 1606.62 -	/** A parser was not specified when externalising a property. */
 1606.63 -	EVersitPanicNeedToSpecifyParser,
 1606.64 -	/** The additional storage slot for the given property has already been used */
 1606.65 -	EVersitPanicAdditionalStorageSlotAlreadyInUse,
 1606.66 -	/** Attempting to assign a NULL value to an additional storage slot  */
 1606.67 -	EVersitPanicNullValueAssignedToAdditionalStorageSlot,
 1606.68 -	//
 1606.69 -	EVersitPanicLast
 1606.70 -	};
 1606.71 -
 1606.72 -/**
 1606.73 -Used as key into additional storage within tls object, for CVersitTLSContainer
 1606.74 -Value should not conflict with genuine compiler generated pointer values
 1606.75 -*/
 1606.76 -const static TInt* const KTLSVars = reinterpret_cast<TInt*>(1);
 1606.77 -
 1606.78 -GLREF_C void DestroyHBufC(TAny* aHBufC);
 1606.79 -IMPORT_C void Panic(TVersitParserPanic aPanic);
 1606.80 -
 1606.81 -
 1606.82 -/** Extension mechanism for CLineReader
 1606.83 -This is an internal class and is only for use by CLineReader
 1606.84 -@internalComponent
 1606.85 -@released
 1606.86 -*/
 1606.87 -class CLineReaderExtension : public CBase
 1606.88 -	{
 1606.89 -	friend class CLineReader;
 1606.90 -private:
 1606.91 -	CLineReaderExtension();
 1606.92 -	static CLineReaderExtension* NewL();
 1606.93 -private:
 1606.94 -	TUint8 iBuf[1024];
 1606.95 -	TInt iOffset;
 1606.96 -	TInt iSize;
 1606.97 -	};
 1606.98 -
 1606.99 -class CLineReader : public CBase
1606.100 -/** Line reader for a vCalendar or vCard parser.
1606.101 -
1606.102 -Reads in a line at a time for the parser. 
1606.103 -
1606.104 -Also allows the first character of the next line to be checked to see if it 
1606.105 -is a space, which can indicate that the line is wrapped. This enables the 
1606.106 -reading of multi-line property values.
1606.107 -
1606.108 -Used by CVersitParser to internalise streams. 
1606.109 -@publishedAll
1606.110 -@released
1606.111 -*/
1606.112 -	{
1606.113 -public:
1606.114 -	/** Defines the initial line size of, and the size of expansions to, the buffer 
1606.115 -	which stores the line being read. */
1606.116 -	enum
1606.117 -		{
1606.118 -		/** The initial size of the buffer (pointed to by iBuf). */
1606.119 -		EInitialLineSize=96,
1606.120 -		/** The size by which the buffer (pointed to by iBuf) 
1606.121 -		is expanded when it has run out of room. */
1606.122 -		EExpandSize=16,
1606.123 -		};
1606.124 -	/** Defines values which describe the content of a line that has been read.
1606.125 -
1606.126 -	This is the return value from the function ReadLine(). */
1606.127 -	enum
1606.128 -		{
1606.129 -		/** The line has content (not white space). */
1606.130 -		ELineHasContent=0,
1606.131 -		/** The line has white space only. */
1606.132 -		ELineIsWhiteSpace=1,		//Doesn't include next case
1606.133 -		/** The line has no content, and so is just a carriage return and line 
1606.134 -		feed ("/r/n"). */
1606.135 -		ELineIsCRLFOnly=2,
1606.136 -		};
1606.137 -public:
1606.138 -	IMPORT_C static CLineReader* NewL(RReadStream& aStream);
1606.139 -	IMPORT_C ~CLineReader();
1606.140 -	IMPORT_C virtual TBool ReadLineL(TInt aPos,TInt& aErr);
1606.141 -	IMPORT_C TBool AppendLineIfSpaceNextL();
1606.142 -	IMPORT_C TBool IsSpaceNextL();
1606.143 -	IMPORT_C TInt AppendSpaceL();
1606.144 -	inline void SetPlugIn(MVersitPlugIn* aPlugIn);
1606.145 -	inline void SetSkipWhiteSpaceAtStart(TBool aDoSkip);
1606.146 -protected:
1606.147 -	inline CLineReader(RReadStream& aStream) :iReadStream(&aStream), iBufPtr(NULL,0), iFirstCharNextLine(-1) {}
1606.148 -	IMPORT_C void ConstructL();
1606.149 -	IMPORT_C void ExpandBufferL(TInt aCurrentSize);
1606.150 -	IMPORT_C TUint8 ReadChar(TInt& aErr);
1606.151 -private:
1606.152 -	IMPORT_C virtual void Reserved();
1606.153 -public:
1606.154 -	/** A pointer to an RReadStream object, the ReadUint8L() function of which is used 
1606.155 -	to read single characters from the stream.
1606.156 -	
1606.157 -	This is passed into the NewL() function upon construction. */
1606.158 -	RReadStream* iReadStream;
1606.159 -	/** A pointer to a buffer which stores data read from the stream.
1606.160 -	
1606.161 -	Its size on construction is EInitialLineSize, and it is expanded by EExpandSize 
1606.162 -	when necessary.
1606.163 -	
1606.164 -	A copy of this value should not be stored, since the buffer location may change 
1606.165 -	if the buffer is expanded.
1606.166 -	
1606.167 -	Data in the buffer is not lost when the buffer is expanded, but is copied 
1606.168 -	to the new location. */
1606.169 -	TPtr8 iBufPtr;
1606.170 -protected:
1606.171 -	HBufC8* iLineBuf;
1606.172 -	TInt iFirstCharNextLine;
1606.173 -private:
1606.174 -	MVersitPlugIn* iPlugIn;
1606.175 -	TBool iSkipWhiteSpaceAtStart;
1606.176 -	CLineReaderExtension* iExtension;
1606.177 -	};
1606.178 -
1606.179 -class CVersitParser : public CBase
1606.180 -/** A generic Versit parser. 
1606.181 -
1606.182 -Provides generic functions which implement behaviour common to both vCalendar 
1606.183 -and vCard parsers. For instance:
1606.184 -
1606.185 -- InternalizeL() and ExternalizeL() functions, for writing and reading 
1606.186 -data from a stream or file.
1606.187 -
1606.188 -- adding/retrieving properties and sub-entities to/from an existing entity. 
1606.189 -
1606.190 -- encoding and character set conversion capabilities.
1606.191 -
1606.192 -Although this is not an abstract class, in practice you would create and use 
1606.193 -objects of a derived class instead (CParserVCal or CParserVCard), as these 
1606.194 -provide additional functionality needed for parsing vCalendars and vCards.
1606.195 -
1606.196 -Note: a flag used in the class constructor indicates whether the entity needs 
1606.197 -a version property. The version property will be inserted at the start of 
1606.198 -the array of properties for the entity, and specifies the version of the vCard/vCalendar 
1606.199 -specification used by the data of this particular vCard/vCalendar. The versions 
1606.200 -that are currently supported are vCard v2.1 and vCalendar v1.0.
1606.201 -
1606.202 -A typical vCard looks like this:
1606.203 -
1606.204 -BEGIN VCARD
1606.205 -
1606.206 -VERSION 2.1 ...
1606.207 -
1606.208 -END VCARD
1606.209 -
1606.210 -Note: if you are sequentially creating and destroying multiple 
1606.211 -parsers, a major performance improvement may be achieved 
1606.212 -by using thread local storage to store an instance of CVersitUnicodeUtils 
1606.213 -which persists and can be used by all of the parsers.
1606.214 -
1606.215 -See CVersitTlsData for more details. 
1606.216 -@publishedAll
1606.217 -@released
1606.218 -*/
1606.219 -	{
1606.220 -	friend class CParserProperty;
1606.221 -public:
1606.222 -	IMPORT_C CVersitParser(TUint aFlags);
1606.223 -	IMPORT_C void ConstructL();
1606.224 -	IMPORT_C ~CVersitParser();
1606.225 -	IMPORT_C void								InternalizeL(RFile& aInputFile,TInt& aBytesThroughFile);
1606.226 -	IMPORT_C virtual void						InternalizeL(RReadStream& aStream);
1606.227 -	IMPORT_C virtual void						InternalizeL(HBufC* aEntityName,CLineReader* aLineReader);
1606.228 -	IMPORT_C void								ExternalizeL(RFile& aOutputFile);
1606.229 -	IMPORT_C virtual void						ExternalizeL(RWriteStream& aStream);
1606.230 -	IMPORT_C void								AddEntityL(CVersitParser* aEntity);
1606.231 -	IMPORT_C void								AddPropertyL(CParserProperty* aProperty,TBool aInternalizing=EFalse);
1606.232 -	IMPORT_C CArrayPtr<CVersitParser>*			EntityL(const TDesC& aEntityName,TBool aTakeOwnership=ETrue);
1606.233 -	IMPORT_C CArrayPtr<CVersitParser>*			ArrayOfEntities(TBool aTakeOwnership=ETrue);
1606.234 -	IMPORT_C CArrayPtr<CParserProperty>*		PropertyL(const TDesC8& aPropertyName,const TUid& aPropertyUid,TBool aTakeOwnership=ETrue) const;
1606.235 -	IMPORT_C CArrayPtr<CParserProperty>*		ArrayOfProperties(TBool aTakeOwnership=ETrue);
1606.236 -	IMPORT_C virtual void						ConvertAllPropertyDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1606.237 -	IMPORT_C void								AdjustAllPropertyDateTimesToMachineLocalL();
1606.238 -	IMPORT_C static TBool						IsValidParameterValue(TInt& aPos,const TDesC& aParamValue);
1606.239 -	IMPORT_C void								SetEntityNameL(const TDesC& aEntityName);
1606.240 -	IMPORT_C TPtrC								EntityName() const;
1606.241 -	IMPORT_C static TBool						IsValidLabel(const TDesC& aLabel, TInt& aPos);
1606.242 -	IMPORT_C static TInt						Val(const TDesC& aString, TInt& aNumber);
1606.243 -	IMPORT_C void								SetCharacterConverter(Versit::TEncodingAndCharset& encodingAndCharset);
1606.244 -
1606.245 -	//
1606.246 -	// Set/Get the default settings for the [en|de]coding process
1606.247 -	//
1606.248 -	IMPORT_C Versit::TVersitEncoding			DefaultEncoding() const;
1606.249 -	IMPORT_C void								SetDefaultEncoding(const Versit::TVersitEncoding aEncoding);
1606.250 -	IMPORT_C Versit::TVersitCharSet				DefaultCharSet() const;
1606.251 -	IMPORT_C TUint								DefaultCharSetId() const;
1606.252 -	IMPORT_C void								SetDefaultCharSet(const Versit::TVersitCharSet aCharSet);
1606.253 -	IMPORT_C void								SetDefaultCharSetId(TUint aCharSetId);
1606.254 -	IMPORT_C void								SetAutoDetect(TBool aOn,const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* aAutoDetectCharSets=NULL);
1606.255 -
1606.256 -	//
1606.257 -	// Set/Get Observers and PlugIn's
1606.258 -	//
1606.259 -	inline void									SetObserver(MVersitObserver* aObserver);
1606.260 -	inline MVersitObserver*						Observer();
1606.261 -	inline void									SetPlugIn(MVersitPlugIn* aPlugIn);
1606.262 -	inline MVersitPlugIn*						PlugIn();
1606.263 -
1606.264 -public:
1606.265 -
1606.266 -	IMPORT_C TInt LoadBinaryValuesFromFilesL();
1606.267 -	IMPORT_C TInt LoadBinaryValuesFromFilesL(RFs& aFileSession);
1606.268 -	IMPORT_C TInt SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath);
1606.269 -	IMPORT_C TInt SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath,RFs& aFileSession);
1606.270 -public:
1606.271 -	/** White space character codes: used while analysing the syntax of the received 
1606.272 -	data and while externalising data. 
1606.273 -	@publishedAll
1606.274 -	@released 
1606.275 -	*/
1606.276 -	enum TCharCodes
1606.277 -		{
1606.278 -		/** ' ' */
1606.279 -		ESpace				= ' ',
1606.280 -		/** 9 */
1606.281 -		EHTab				= 9,
1606.282 -		/** 10 */
1606.283 -		ELineFeed			= 10,
1606.284 -		/** 13 */
1606.285 -		ECarriageReturn		= 13
1606.286 -		};
1606.287 -	/** Flags that can be specified on construction. 
1606.288 -	@publishedAll
1606.289 -	@released 
1606.290 -	*/
1606.291 -	enum TVersitParserFlags
1606.292 -		{
1606.293 -		/** This entity does not need a version property. */
1606.294 -		ENoVersionProperty	= 0,
1606.295 -		/** This entity should have a version property. */
1606.296 -		ESupportsVersion	= 0x01,
1606.297 -		//Gaps since other flags have been used in past
1606.298 -		EImportSyncML		= 0x1000,	//Importing from a SyncML server
1606.299 -		/** Indicates whether the parser should use auto-detection of character sets when 
1606.300 -		one has not been explicitly specified. */
1606.301 -		EUseAutoDetection	= 0x4000,
1606.302 -		//versit Internal use only
1606.303 -		/** The current property has specified a character set. */
1606.304 -		ECharSetIdentified	= 0x8000,
1606.305 -		/** If the charset is not explicitly specified, the default charset will be used instead of US-ASCII as required
1606.306 -		by the Versit specification . */
1606.307 -		EUseDefaultCharSetForAllProperties = 0x2000		
1606.308 -		};
1606.309 -
1606.310 -	//
1606.311 -	// Unicode support conversion functions
1606.312 -	//
1606.313 -	IMPORT_C static TInt						ConvertFromUnicodeToISOL(TDes8& aIso, const TDesC16& aUnicode, CCnvCharacterSetConverter* aConverter);
1606.314 -	IMPORT_C TVersitDateTime*					DecodeDateTimeL(TDes& aToken) const;
1606.315 -
1606.316 -protected:
1606.317 -	IMPORT_C TInt								ConvertToUnicodeFromISOL(TDes16& aUnicode, const TDesC8& aIso, TUint aCharacterSet);
1606.318 -
1606.319 -	//
1606.320 -	// Parsing high level functions
1606.321 -	//
1606.322 -	IMPORT_C void								ParsePropertiesL();
1606.323 -	IMPORT_C void								ParseBeginL();
1606.324 -	IMPORT_C void								ParseEndL();
1606.325 -	void										ParseEndL(HBufC16& aEntityName);
1606.326 -	IMPORT_C TBool								ParseEntityL();
1606.327 -	IMPORT_C virtual void						ParsePropertyL();
1606.328 -	IMPORT_C CArrayPtr<CParserParam>*			ReadLineAndDecodeParamsLC(TInt& aValueStart,TInt& aNameLen);
1606.329 -	IMPORT_C void								MakePropertyL(TPtr8& aPropName,TInt aValueStart);
1606.330 -	IMPORT_C CArrayPtr<CParserParam>*			GetPropertyParamsLC(TPtr8 aParams);
1606.331 -	IMPORT_C void								ParseParamL(CArrayPtr<CParserParam>* aArray,TPtr8 aParam);
1606.332 -	IMPORT_C void								AnalysesEncodingCharset(CArrayPtr<CParserParam>* aArrayOfParams);
1606.333 -	IMPORT_C void								ReadMultiLineValueL(TPtr8& aValue,TInt aValueStart,TBool aBinaryData);
1606.334 -	inline TPtr8&								BufPtr();
1606.335 -
1606.336 -	//
1606.337 -	// Append standard versit tokens to streams
1606.338 -	//
1606.339 -	IMPORT_C void								AppendBeginL();
1606.340 -	IMPORT_C void								AppendEndL();
1606.341 -	void										AppendEntityNameL();
1606.342 -	IMPORT_C void								DoAddPropertyL(CParserProperty* aProperty);
1606.343 -
1606.344 -	//
1606.345 -	// Dispatcher functions to create entities/properties based upon a Versit identifying Uid
1606.346 -	//
1606.347 -	IMPORT_C virtual CVersitParser*				MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
1606.348 -	CParserPropertyValueHBufC*					MakeDefaultPropertyValueL(HBufC16*& aValue);
1606.349 -	IMPORT_C virtual CParserPropertyValue*		MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
1606.350 -	IMPORT_C HBufC*								DecodePropertyValueL(const TDesC8& aValue);
1606.351 -	IMPORT_C void								DecodePropertyValueL(const TDesC8& aValue,const TUid& aEncodingUid);
1606.352 -	HBufC*										ConvertToUnicodeL(const TDesC8& aValue);
1606.353 -	IMPORT_C CDesCArray*						MakePropertyValueCDesCArrayL(TPtr16 aStringValue);
1606.354 -	IMPORT_C CArrayPtr<TVersitDateTime>*		MakePropertyValueMultiDateTimeL(TPtr16 aDateTimeGroup);
1606.355 -	IMPORT_C CVersitDaylight*					MakePropertyValueDaylightL(TPtr16 aDaylightValue);
1606.356 -	IMPORT_C TBool								FindFirstField(TPtr16& aField,TPtr16& aRemaining, TBool aTrimSpace=ETrue);
1606.357 -	IMPORT_C void								FindRemainingField(TPtr16& aField,TPtr16& aRemaining);
1606.358 -
1606.359 -	//
1606.360 -	// Helper methods to decode versit dates, times, and time periods
1606.361 -	//
1606.362 -	IMPORT_C TTimeIntervalSeconds				DecodeTimeZoneL(const TDesC& aToken) const;
1606.363 -	IMPORT_C TTime*								DecodeTimePeriodL(const TDesC& aToken) const;
1606.364 -	IMPORT_C TInt								GetNumberL(const TDesC& aToken,TInt& aNumChars) const;
1606.365 -
1606.366 -public:
1606.367 -	IMPORT_C virtual TUid						RecognizeToken(const TDesC8& aToken) const;
1606.368 -	IMPORT_C virtual TInt						RecognizeEntityName() const;
1606.369 -	//
1606.370 -	// Cleanup support methods
1606.371 -	//
1606.372 -	IMPORT_C static void						ResetAndDestroyArrayOfParams(TAny* aObject);
1606.373 -	IMPORT_C static void						ResetAndDestroyArrayOfProperties(TAny* aObject);
1606.374 -	IMPORT_C static void						ResetAndDestroyArrayOfEntities(TAny* aObject);
1606.375 -	IMPORT_C static void						ResetAndDestroyArrayOfDateTimes(TAny* aObject);
1606.376 -
1606.377 -	inline void									SetFlags(TUint aFlags);
1606.378 -
1606.379 -	
1606.380 -
1606.381 -protected:
1606.382 -	//
1606.383 -	// Enquiry functions
1606.384 -	//
1606.385 -	static TBool								IsPunctuationToken(TUint aChar);
1606.386 -	inline TBool								SupportsVersion() const;
1606.387 -	inline void									SetSupportsVersion();
1606.388 -	inline void									ClearSupportsVersion();
1606.389 -
1606.390 -	//
1606.391 -	// Set the settings for the [en|de]coding of the current property
1606.392 -	//
1606.393 -	IMPORT_C void								RestoreLineCodingDetailsToDefault();
1606.394 -	IMPORT_C void								SetLineEncoding(Versit::TVersitEncoding aLineEncoding);
1606.395 -	IMPORT_C void								SetLineEncoding(TUint aVersitEncodingUid);
1606.396 -	IMPORT_C void								SetLineCharacterSet(Versit::TVersitCharSet aLineCharSet);
1606.397 -	IMPORT_C void								SetLineCharacterSetId(TUint aLineCharSetId);
1606.398 -	IMPORT_C void								SetLineCoding(Versit::TVersitCharSet aLineCharSet, Versit::TVersitEncoding aLineEncoding);
1606.399 -
1606.400 -	//
1606.401 -	// Return the settings for the current property
1606.402 -	//
1606.403 -	IMPORT_C Versit::TVersitEncoding			LineEncoding() const;
1606.404 -	IMPORT_C Versit::TVersitCharSet				LineCharSet() const;
1606.405 -	IMPORT_C TUint								LineEncodingId() const;
1606.406 -	IMPORT_C TUint								LineCharSetId() const;
1606.407 -
1606.408 -	inline CVersitUnicodeUtils&					UnicodeUtils();
1606.409 -
1606.410 -public:
1606.411 -	//
1606.412 -	// Static utility functions to aid with the Unicode conversion process
1606.413 -	//
1606.414 -	static TUint								MapVersitCharsetToCharConvCharset(Versit::TVersitCharSet aVersitSet);
1606.415 -	static TUint								MapVersitEncodingToConArcUid(Versit::TVersitEncoding aVersitEncoding);
1606.416 -
1606.417 -private:
1606.418 -	void										SetLineCharsetDetailsToDefault();
1606.419 -	void										SetLineEncodingDetailsToDefault();
1606.420 -
1606.421 -private:	//To fix TimeZone SyncML bug
1606.422 -	void										ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1606.423 -	void										ConvertUTCDateTimeToMachineLocal(TVersitDateTime* aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1606.424 -	//void										AddTimeZonePropertyL();
1606.425 -
1606.426 -protected:
1606.427 -	struct TParserCodingDetails
1606.428 -		{
1606.429 -		Versit::TVersitEncoding		iEncoding;
1606.430 -		TUint						iEncodingUid;
1606.431 -		Versit::TVersitCharSet		iCharSet;
1606.432 -		TUint						iCharSetUid;
1606.433 -		};
1606.434 -
1606.435 -protected:
1606.436 -	// Default settings & internal flags
1606.437 -	TInt							iFlags;
1606.438 -	TParserCodingDetails			iDefaultCodingDetails;
1606.439 -	TParserCodingDetails			iCurrentPropertyCodingDetails;
1606.440 -	TBuf<KVersitMaxVersionLength>	iDefaultVersion;
1606.441 -	const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iAutoDetectCharSets;
1606.442 -
1606.443 -	// Member data relating to the current item being parsed
1606.444 -	HBufC*							iEntityName;
1606.445 -	CArrayPtr<CVersitParser>*		iArrayOfEntities;
1606.446 -	CArrayPtr<CParserProperty>*		iArrayOfProperties;
1606.447 -	CParserProperty*				iCurrentProperty;
1606.448 -	CLineReader*					iOwnedLineReader;
1606.449 -	CLineReader*					iLineReader;
1606.450 -	HBufC8*							iDecodedValue;
1606.451 -	CBufSeg*						iLargeDataBuf;
1606.452 -
1606.453 -	// In memory buffers
1606.454 -	RWriteStream*					iWriteStream;
1606.455 -
1606.456 -	// General utility class
1606.457 -	CVersitTlsData*					iStaticUtils;
1606.458 -
1606.459 -	// Plug-in classes
1606.460 -	MVersitObserver*				iObserver;
1606.461 -	MVersitPlugIn*					iPlugIn;
1606.462 -
1606.463 -private:
1606.464 -	void DoInternalizeL();
1606.465 -	IMPORT_C virtual void Reserved1();
1606.466 -	IMPORT_C virtual void Reserved2();
1606.467 -private:
1606.468 -	TInt iParseBegin;
1606.469 -	TInt iReserved2;
1606.470 -	};
1606.471 -
1606.472 -NONSHARABLE_CLASS( CVersitTLSContainer ): public CBase	
1606.473 -/**
1606.474 -Wrapper class for static variables to be stored in TLS
1606.475 -@internalComponent
1606.476 -@released
1606.477 -*/
1606.478 -	{
1606.479 -public:
1606.480 -	static CVersitTLSContainer *NewLC(const TInt aSize);
1606.481 -	~CVersitTLSContainer();
1606.482 -public:
1606.483 -	HBufC * iShiftJisEscape;//Store shift-jis escape charcter, as generated by relevant charconv plugin	
1606.484 -	};
1606.485 -
1606.486 -#include <versit.inl>
1606.487 -
1606.488 -#endif
  1607.1 --- a/epoc32/include/versit.inl	Tue Mar 16 16:12:26 2010 +0000
  1607.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1607.3 @@ -1,112 +0,0 @@
  1607.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1607.5 -// All rights reserved.
  1607.6 -// This component and the accompanying materials are made available
  1607.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1607.8 -// which accompanies this distribution, and is available
  1607.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1607.10 -//
 1607.11 -// Initial Contributors:
 1607.12 -// Nokia Corporation - initial contribution.
 1607.13 -//
 1607.14 -// Contributors:
 1607.15 -//
 1607.16 -// Description:
 1607.17 -// CVersitParser
 1607.18 -// 
 1607.19 -//
 1607.20 -
 1607.21 -inline void CLineReader::SetPlugIn(MVersitPlugIn* aPlugIn)
 1607.22 -/** Sets the plug-in.
 1607.23 -
 1607.24 -Allows implemented functions of the MVersitPlugIn class to be used in specifying 
 1607.25 -options for adding and deleting spaces to/from the buffer. 
 1607.26 -
 1607.27 -Specifically, the plug-in is used to determine whether an additional space should 
 1607.28 -be added when appending a line to the buffer (by default a space will be added), 
 1607.29 -and whether the white space at the start of a line should form part of the data 
 1607.30 -(by default it will not form part of the data).
 1607.31 -
 1607.32 -Using a plug-in is optional. 
 1607.33 -
 1607.34 -@param aPlugIn A pointer to an MVersitPlugIn instance. */
 1607.35 -	{iPlugIn=aPlugIn;}
 1607.36 -
 1607.37 -inline void CLineReader::SetSkipWhiteSpaceAtStart(TBool aDoSkip)
 1607.38 -	{iSkipWhiteSpaceAtStart=aDoSkip;}
 1607.39 -
 1607.40 -
 1607.41 -//
 1607.42 -// CVersitParser
 1607.43 -//
 1607.44 -
 1607.45 -inline void CVersitParser::SetObserver(MVersitObserver* aObserver)
 1607.46 -/** Sets the Versit observer.
 1607.47 -
 1607.48 -@param aObserver A pointer to the observer. */
 1607.49 -	{iObserver=aObserver;}
 1607.50 -
 1607.51 -inline MVersitObserver* CVersitParser::Observer()
 1607.52 -/** Gets a pointer to the Versit observer.
 1607.53 -
 1607.54 -@return A pointer to the observer. */
 1607.55 -	{return iObserver;}
 1607.56 -
 1607.57 -inline void CVersitParser::SetPlugIn(MVersitPlugIn* aPlugIn)
 1607.58 -/** Sets the Versit plug-in.
 1607.59 -
 1607.60 -If there is one, the Versit plug-in needs to be set before any properties are 
 1607.61 -added to the parser. This is done for you when internalising (using InternalizeL()) 
 1607.62 -or adding properties (using AddPropertyL()).
 1607.63 -
 1607.64 -@param aPlugIn A pointer to the plug in. */
 1607.65 -	{iPlugIn=aPlugIn;}
 1607.66 -
 1607.67 -inline MVersitPlugIn* CVersitParser::PlugIn()
 1607.68 -/** Gets a pointer to the Versit plug-in.
 1607.69 -
 1607.70 -@return A pointer to the plug-in. */
 1607.71 -	{return iPlugIn;}
 1607.72 -
 1607.73 -/* Gets a pointer to the read buffer owned by the CLineReader.
 1607.74 - *
 1607.75 - * @return Pointer to the read buffer. */
 1607.76 -inline TPtr8& CVersitParser::BufPtr()
 1607.77 -	{return iLineReader->iBufPtr;}
 1607.78 -
 1607.79 -/*
 1607.80 - * Check the iFlags to see if <code>ESupportsVersion</code> is set
 1607.81 - *
 1607.82 - * @return    " TBool "
 1607.83 - *            <code>ETrue</code> if the parser supports the version property
 1607.84 - *            <code>EFalse</code> otherwise
 1607.85 - */
 1607.86 -inline TBool CVersitParser::SupportsVersion() const
 1607.87 -	{return iFlags & ESupportsVersion;}
 1607.88 -
 1607.89 -/*
 1607.90 - * Sets the iFlags to <code>ESupportsVersion</code>
 1607.91 - */
 1607.92 -inline void CVersitParser::SetSupportsVersion()
 1607.93 -	{iFlags |= ESupportsVersion;}
 1607.94 -
 1607.95 -/*
 1607.96 - * Clear the bit of <code>ESupportsVersion</code> in iFlags'
 1607.97 - */
 1607.98 -inline void CVersitParser::ClearSupportsVersion()
 1607.99 -	{iFlags &= ~ESupportsVersion;}
1607.100 -
1607.101 -/*
1607.102 - * Set Flags
1607.103 - */
1607.104 -inline void CVersitParser::SetFlags(TUint aFlags)
1607.105 -	{iFlags |= aFlags;}
1607.106 -
1607.107 -/*
1607.108 - * Gets a reference to <code>CVersitUnicodeUtils</code>
1607.109 - * which is used for charset conversion 
1607.110 - *
1607.111 - * @return    " CVersitUnicodeUtils&"
1607.112 - *            reference to <code>CVersitUnicodeUtils</code>
1607.113 - */
1607.114 -inline CVersitUnicodeUtils& CVersitParser::UnicodeUtils()
1607.115 -	{ return iStaticUtils->UnicodeUtils(); }
  1608.1 --- a/epoc32/include/versittls.h	Tue Mar 16 16:12:26 2010 +0000
  1608.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1608.3 @@ -1,110 +0,0 @@
  1608.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1608.5 -// All rights reserved.
  1608.6 -// This component and the accompanying materials are made available
  1608.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1608.8 -// which accompanies this distribution, and is available
  1608.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1608.10 -//
 1608.11 -// Initial Contributors:
 1608.12 -// Nokia Corporation - initial contribution.
 1608.13 -//
 1608.14 -// Contributors:
 1608.15 -//
 1608.16 -// Description:
 1608.17 -//
 1608.18 -
 1608.19 -#ifndef __VERSITTLS_H__
 1608.20 -#define __VERSITTLS_H__
 1608.21 -
 1608.22 -// System includes
 1608.23 -#include <e32base.h>
 1608.24 -#include <charconv.h>
 1608.25 -
 1608.26 -#include <vutil.h>
 1608.27 -
 1608.28 -class CVersitTimer;
 1608.29 -class CVersitAdditionalStorage;
 1608.30 -
 1608.31 -class CVersitTlsData : public CBase
 1608.32 -/** Versit thread local storage.
 1608.33 -
 1608.34 -This class provides a performance improvement by allowing a CVersitUnicodeUtils 
 1608.35 -instance to be shared between parsers operating in the same thread, so that 
 1608.36 -a new instance does not have to be created for each parser. A pointer to the 
 1608.37 -unicode utilities object is held in thread local storage: a single word (32bits) 
 1608.38 -of data. Each unicode utilities object is managed by an instance of this class.
 1608.39 -
 1608.40 -Every time a parser is created, CVersitParser::ConstructL() calls the 
 1608.41 -CVersitTlsData constructor, and when the parser is destroyed the CVersitTlsData 
 1608.42 -destructor is called. If a CVersitTlsData object exists, the constructor 
 1608.43 -returns a pointer to it, otherwise a new one is constructed. The CVersitTlsData 
 1608.44 -object is only destroyed when no more parsers refer to it: a count is kept, 
 1608.45 -which is incremented every time the constructor is called and decremented each 
 1608.46 -time the destructor is called, and the object is only destroyed when the count 
 1608.47 -reaches zero.
 1608.48 -
 1608.49 -This class provides an additional major performance improvement 
 1608.50 -if you are sequentially constructing and destructing multiple parsers. 
 1608.51 -By default, when the count of parsers reaches zero, the thread local 
 1608.52 -storage object is destroyed (even if the thread has not finished). However, 
 1608.53 -by using the technique described below, the thread local storage object, and therefore 
 1608.54 -the unicode utilities object, can be made to persist, significantly reducing 
 1608.55 -the overhead of sequentially constructing and destructing parsers.
 1608.56 -
 1608.57 -The constructor needs to be called an extra time before creating any parsers, 
 1608.58 -and the destructor needs to be called an extra time once the parsers have 
 1608.59 -been destroyed. This has the effect of adding one to the reference count so 
 1608.60 -that during all the parser construction and deletion the count never hits 
 1608.61 -zero, which would trigger the TLS object's destruction.
 1608.62 -
 1608.63 -This can be implemented as follows:
 1608.64 -
 1608.65 -1. Create a thread local storage data class instance as follows: 
 1608.66 -@code
 1608.67 -CVersitTlsData* versitTLS = CVersitTlsData::VersitTlsDataL(); 
 1608.68 -@endcode
 1608.69 -
 1608.70 -2. Create and delete the parsers. 
 1608.71 -
 1608.72 -3. Delete the Thread Local Storage Data class instance: 
 1608.73 -@code
 1608.74 -delete versitTLS; 
 1608.75 -@endcode 
 1608.76 -@publishedAll
 1608.77 -@released
 1608.78 -*/
 1608.79 -	{
 1608.80 -	friend class CVersitTimer;
 1608.81 -
 1608.82 -public:
 1608.83 -	IMPORT_C static CVersitTlsData& VersitTlsDataL();
 1608.84 -	IMPORT_C static void CloseVersitTlsData();
 1608.85 -	IMPORT_C void VersitTlsDataClose();
 1608.86 -
 1608.87 -public:
 1608.88 -	inline CVersitUnicodeUtils& UnicodeUtils() 
 1608.89 -	/** Returns a pointer to the current Unicode utilities object.
 1608.90 -	
 1608.91 -	@return A pointer to the current Unicode utilities object. */
 1608.92 -		{ return *iUnicodeUtils; }
 1608.93 -
 1608.94 -    inline CVersitAdditionalStorage& AdditionalStorage()
 1608.95 -	/** Returns a pointer to the additional property storage object.
 1608.96 -	
 1608.97 -	@return A pointer to the additional property storage. */
 1608.98 -        {
 1608.99 -        return *iAdditionalStorage;
1608.100 -        }
1608.101 -
1608.102 -private:
1608.103 -	static CVersitTlsData* NewL();
1608.104 -	void ConstructL();
1608.105 -	~CVersitTlsData();
1608.106 -
1608.107 -private:
1608.108 -	TInt iRefCount;
1608.109 -	CVersitUnicodeUtils* iUnicodeUtils;
1608.110 -    CVersitAdditionalStorage* iAdditionalStorage;
1608.111 -	};
1608.112 -
1608.113 -#endif
  1609.1 --- a/epoc32/include/viewcli.h	Tue Mar 16 16:12:26 2010 +0000
  1609.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1609.3 @@ -1,166 +0,0 @@
  1609.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
  1609.5 -// All rights reserved.
  1609.6 -// This component and the accompanying materials are made available
  1609.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1609.8 -// which accompanies this distribution, and is available
  1609.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1609.10 -//
 1609.11 -// Initial Contributors:
 1609.12 -// Nokia Corporation - initial contribution.
 1609.13 -//
 1609.14 -// Contributors:
 1609.15 -//
 1609.16 -// Description:
 1609.17 -//
 1609.18 -
 1609.19 -#ifndef __VIEWCLI_H__
 1609.20 -#define __VIEWCLI_H__
 1609.21 -
 1609.22 -#include <e32base.h>
 1609.23 -#include <gdi.h>
 1609.24 -#include <vwsdef.h>
 1609.25 -
 1609.26 -//
 1609.27 -// Forward declarations.
 1609.28 -//
 1609.29 -
 1609.30 -class RVwsSession;
 1609.31 -class CVwsSessionEventHandler;
 1609.32 -class MVwsAppStarter;
 1609.33 -
 1609.34 -class MVwsSessionWrapperObserver
 1609.35 -/**
 1609.36 -The MVwsSessionObserver specifies an interface through which server events to be handled by the owner of
 1609.37 -a client session are notified
 1609.38 -
 1609.39 -@publishedAll 
 1609.40 -@deprecated
 1609.41 -*/
 1609.42 -//@internalTechnology @released
 1609.43 -
 1609.44 -	{
 1609.45 -public:	
 1609.46 -
 1609.47 -	/**
 1609.48 -	 * Handles the view event aEvent for a view added through the client session being observed.
 1609.49 -	 * Handles events for all the views added by the client.
 1609.50 -	 */
 1609.51 -	virtual void HandleViewEventL(const TVwsViewEvent& aEvent)=0;
 1609.52 -	};
 1609.53 -
 1609.54 -
 1609.55 -class CVwsSessionWrapper : public CBase
 1609.56 -/**
 1609.57 -The CVwsSessionWrapper class mediates access to the view server client session which it creates, and wraps in
 1609.58 -support for notification of server events. A session observer will be called back with server events if
 1609.59 -it maintains an outstanding request for asynchronous event notification.
 1609.60 -
 1609.61 -@publishedPartner 
 1609.62 -@released 
 1609.63 -*/
 1609.64 -//@internalTechnology @released
 1609.65 -
 1609.66 -	{
 1609.67 -public:	
 1609.68 -	IMPORT_C static CVwsSessionWrapper* NewL();
 1609.69 -	IMPORT_C static CVwsSessionWrapper* NewLC();
 1609.70 -	IMPORT_C static CVwsSessionWrapper* NewL(MVwsSessionWrapperObserver& aObserver);
 1609.71 -	IMPORT_C static CVwsSessionWrapper* NewLC(MVwsSessionWrapperObserver& aObserver);
 1609.72 -	IMPORT_C ~CVwsSessionWrapper();
 1609.73 -	IMPORT_C static TInt StartViewServer(MVwsAppStarter& aAppStarter);
 1609.74 -	IMPORT_C TInt ShutdownViewServer();
 1609.75 -	IMPORT_C TInt AddView(const TVwsViewId& aViewId);
 1609.76 -	IMPORT_C TInt RemoveView(const TVwsViewId& aViewId) const;
 1609.77 -	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId,TInt aMode);
 1609.78 -	IMPORT_C TInt SetSystemDefaultView(const TVwsViewId& aViewId);
 1609.79 -	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 1609.80 -	IMPORT_C TInt ActivateViewViaViewEvent(const TVwsViewIdAndMessage& aViewIdAndMessage);
 1609.81 -	IMPORT_C TInt RequestCustomMessage(TDes8& aMessageBufPtr) const;
 1609.82 -	IMPORT_C void QueueAsyncRequest();
 1609.83 -	IMPORT_C TInt StartApp(TUid aAppToStart);
 1609.84 -	IMPORT_C TInt DeactivateActiveView();
 1609.85 -	IMPORT_C TInt DeactivateActiveViewIfOwnerMatch();
 1609.86 -	IMPORT_C TInt NotifyNextDeactivation(const TVwsViewId& aViewId);
 1609.87 -	IMPORT_C TInt NotifyNextDeactivation();
 1609.88 -	IMPORT_C TInt NotifyNextActivation(const TVwsViewId& aViewId);
 1609.89 -	IMPORT_C TInt NotifyNextActivation();
 1609.90 -	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId,TInt aMode) const;
 1609.91 -	IMPORT_C TInt SetDefaultView(const TVwsViewId& aViewId) const;
 1609.92 -	IMPORT_C TInt GetSystemDefaultView(TVwsViewId& aViewId);
 1609.93 -	IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 1609.94 -	IMPORT_C TInt SetClientRequestTimeOut(TTimeIntervalMicroSeconds32 aDuration);
 1609.95 -	IMPORT_C TInt SetServerEventTimeOut(TTimeIntervalMicroSeconds32 aDuration);
 1609.96 -	IMPORT_C TInt EnableServerEventTimeOut(TBool aEnable);
 1609.97 -	IMPORT_C TInt CheckSourceOfViewSwitch(TBool& aResult,const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic);
 1609.98 -	IMPORT_C TInt EnableServerBlankScreen(TBool aEnable);
 1609.99 -	IMPORT_C TInt EnableExternalViewSwitches(TBool aEnable);
1609.100 -	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus);
1609.101 -	IMPORT_C TInt SetCrossCheckUid(const TUid& aCrossCheckUid);
1609.102 -	IMPORT_C TInt SetWindowBackgroundColor(const TRgb& aBgColor);
1609.103 -public:	
1609.104 -	/**
1609.105 -	@internalComponent
1609.106 -	@released
1609.107 -	*/
1609.108 -	IMPORT_C TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
1609.109 -	/**
1609.110 -	@internalComponent
1609.111 -	@released
1609.112 -	*/
1609.113 -	IMPORT_C void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TRequestStatus& aStatus, TInt aCustomControl);
1609.114 -	/**
1609.115 -	@internalComponent
1609.116 -	@released
1609.117 -	*/IMPORT_C TInt CreateActivateViewEvent(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl);
1609.118 -	/**
1609.119 -	@internalComponent
1609.120 -	@released
1609.121 -	*/
1609.122 -	IMPORT_C TInt GetCurrentActiveViewInSystem(TVwsViewId& aActiveViewId);
1609.123 -private:
1609.124 -	CVwsSessionWrapper();
1609.125 -	CVwsSessionWrapper(MVwsSessionWrapperObserver& aObserver);
1609.126 -	void ConstructL();
1609.127 -	TInt CheckCreateViewServerSession();
1609.128 -	TBool IsSchedulerRunning();
1609.129 -private:
1609.130 -	RVwsSession* iVwsSession;
1609.131 -	CVwsSessionEventHandler* iViewEventHandler;
1609.132 -	MVwsSessionWrapperObserver* iObserver;
1609.133 -	};
1609.134 -
1609.135 -
1609.136 -//
1609.137 -// Panic.
1609.138 -//
1609.139 -/**
1609.140 -@internalComponent
1609.141 -*/
1609.142 -enum TVwsPanic
1609.143 -	{
1609.144 -	EVwsCreateScheduler=1,
1609.145 -	EVwsThreadRename
1609.146 -	};
1609.147 -
1609.148 -/**
1609.149 -@internalComponent
1609.150 -*/
1609.151 -GLREF_C void Panic(TVwsPanic aPanic);
1609.152 -
1609.153 -/**
1609.154 -Server thread start.
1609.155 -
1609.156 -@internalComponent
1609.157 -*/
1609.158 -GLDEF_C TInt ViewServerThreadStart(TAny* aPtr);
1609.159 -
1609.160 -/**
1609.161 -@internalComponent
1609.162 -*/
1609.163 -struct SVwsCommandLine
1609.164 -	{
1609.165 -	MVwsAppStarter* iAppStarter;
1609.166 -	};
1609.167 -
1609.168 -
1609.169 -#endif
  1610.1 --- a/epoc32/include/vobserv.h	Tue Mar 16 16:12:26 2010 +0000
  1610.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1610.3 @@ -1,257 +0,0 @@
  1610.4 -// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
  1610.5 -// All rights reserved.
  1610.6 -// This component and the accompanying materials are made available
  1610.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1610.8 -// which accompanies this distribution, and is available
  1610.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1610.10 -//
 1610.11 -// Initial Contributors:
 1610.12 -// Nokia Corporation - initial contribution.
 1610.13 -//
 1610.14 -// Contributors:
 1610.15 -//
 1610.16 -// Description:
 1610.17 -//
 1610.18 -
 1610.19 -#ifndef __VOBSERV_H__
 1610.20 -#define __VOBSERV_H__
 1610.21 -
 1610.22 -#ifndef __E32DEF_H__
 1610.23 -#include <e32def.h>
 1610.24 -#endif
 1610.25 -#ifndef __E32STD_H__
 1610.26 -#include <e32std.h>
 1610.27 -#endif
 1610.28 -#ifndef __E32DES16_H__
 1610.29 -#include <e32des16.h>
 1610.30 -#endif
 1610.31 -#ifndef __S32STRM_H__
 1610.32 -#include <s32strm.h>
 1610.33 -#endif
 1610.34 -#ifndef __VUTIL_H__
 1610.35 -#include <vutil.h>
 1610.36 -#endif
 1610.37 -
 1610.38 -class CVersitParser;
 1610.39 -
 1610.40 -class MVersitObserver
 1610.41 -/** A Versit parser observer.
 1610.42 -
 1610.43 -This is a plug-in class and contains only pure virtual functions.
 1610.44 -
 1610.45 -An implementator of this class can find out the version number of an entity 
 1610.46 -being parsed. The version number specifies the version of the vCard/vCalendar 
 1610.47 -specification used by the data of the vCard/vCalendar. This is for use in 
 1610.48 -conjunction with the MVersitPlugin class, which adjusts the parser's behaviour 
 1610.49 -according to the vCard/vCalendar version.
 1610.50 -
 1610.51 -An implementator of this class can also respond to the creation of a new parser 
 1610.52 -for an embedded sub-entity. This is so that the observer can set the MVersitPlugin, 
 1610.53 -as well as itself, for each new parser that is created.
 1610.54 -
 1610.55 -An observer is set up for a Versit parser using CVersitParser::SetObserver(). 
 1610.56 -@publishedAll
 1610.57 -@released
 1610.58 -*/
 1610.59 -	{
 1610.60 -public:
 1610.61 -	/** Called when the version property (a property of the name KVersitTokenVERSION) 
 1610.62 -	of an entity is parsed during internalisation of a stream, if the Versit parser 
 1610.63 -	has an observer.
 1610.64 -	
 1610.65 -	An implementation of this function can determine the version of an entity 
 1610.66 -	being parsed.
 1610.67 -	
 1610.68 -	Called by CVersitParser::ParsePropertiesL().
 1610.69 -	
 1610.70 -	@param aParser A pointer to the parser object that detected the version.
 1610.71 -	@param aVersion A unicode string containing the version number detected. */
 1610.72 -	virtual void VersionSet(CVersitParser* aParser,const TDesC16& aVersion)=0;
 1610.73 -	/** Called when a new Versit parser is created to parse an embedded object, 
 1610.74 -	specifically a vEvent, a vTodo or an agent, if the Versit parser has an observer.
 1610.75 -	
 1610.76 -	@param aParser The newly created Versit entity. */
 1610.77 -	virtual void NewParser(CVersitParser* aParser)=0;
 1610.78 -private:
 1610.79 -	IMPORT_C virtual void Reserved1();
 1610.80 -	IMPORT_C virtual void Reserved2();
 1610.81 -	};
 1610.82 -
 1610.83 -class MVersitPlugIn
 1610.84 -/** A Versit parser plug-in.
 1610.85 -
 1610.86 -This is a plug-in class and contains only pure virtual functions.
 1610.87 -
 1610.88 -An implementator of this class can override some of the low level behaviour 
 1610.89 -of a Versit parser. For instance, options are provided to determine behaviour 
 1610.90 -during line wrapping and unwrapping.
 1610.91 -
 1610.92 -The use of this plug-in is optional, and when there is no plug-in the parser 
 1610.93 -object will use default behaviour. However, vCard v3.0 has some differences 
 1610.94 -to vCard v2.1, such as for line wrapping and unwrapping. Symbian OS supports 
 1610.95 -vCard v2.1 in its default behaviour. Therefore this plug-in can be used to 
 1610.96 -provide compatibility with vCard v3.0. 
 1610.97 -@publishedAll
 1610.98 -@released
 1610.99 -*/
1610.100 -	{
1610.101 -public:
1610.102 -	/** Tests whether a space is to be added when merging (unwrapping) two lines 
1610.103 -	while internalising a stream. 
1610.104 -	
1610.105 -	If there is no plug-in then a space will be added.
1610.106 -	
1610.107 -	Used by the CLineReader class.
1610.108 -	
1610.109 -	@return ETrue if a space is to be added and EFalse if not. */
1610.110 -	virtual TBool AddSpace()=0;				//Unwrapping lines
1610.111 -	/** Tests whether white space at the start of a line, apart from the first space, 
1610.112 -	forms part of the data when internalising a stream.
1610.113 -	
1610.114 -	Note that the first space is always ignored and never included.
1610.115 -	
1610.116 -	If there is no plug-in then the rest of the white space at the start of a 
1610.117 -	line (tabs and spaces) is skipped and does not form part of the data when 
1610.118 -	internalising a stream.
1610.119 -	
1610.120 -	Used by the CLineReader class.
1610.121 -	
1610.122 -	@return EFalse if the spaces are to be part of the data and ETrue if not. */
1610.123 -	virtual TBool DeleteAllSpaces()=0;		//Unwrapping lines
1610.124 -	/** Tests how the end of Base64 data (data encoded using Versit::EBase64Encoding) 
1610.125 -	should be detected when internalising a stream. 
1610.126 -	
1610.127 -	To determine the end of Base64 data, either a blank line can be used, or a line 
1610.128 -	without a space at the start.
1610.129 -	
1610.130 -	If there is no plug-in then a blank line will be looked for. 
1610.131 -	
1610.132 -	Used by the CVersitParser class.
1610.133 -	
1610.134 -	@return ETrue if a blank line should be used and EFalse if a line without 
1610.135 -	a space at the start should be used. */
1610.136 -	virtual TBool NeedsBlankLine()=0;		//Unwrapping Base64 data
1610.137 -	/** Allows the removal of escape characters from a property value when internalising 
1610.138 -	from a stream.
1610.139 -	
1610.140 -	Versit deals with the escaping of semi-colons and the escape character itself 
1610.141 -	(that is, the Yen character for Shift-JIS or a backslash for other character 
1610.142 -	sets) without the help of a plug-in. Other characters, such as commas and 
1610.143 -	carriage returns, can be escaped and un-escaped using the plug-in's AddEscaping() 
1610.144 -	and RemoveEscaping().
1610.145 -	
1610.146 -	This function is needed as escaping is done differently in vCard v3.0: firstly, 
1610.147 -	commas are used as syntactical characters and so need to be escaped when they 
1610.148 -	are just part of the text; secondly, \\r\\n in plain (un-encoded) text is used 
1610.149 -	to mean a CRLF, whereas v2.1 forces you to use Quoted Printble encoding if 
1610.150 -	there is a CRLF in the data.
1610.151 -	
1610.152 -	Note that, although the string passed into this function can be changed, it 
1610.153 -	must not be made longer.
1610.154 -	
1610.155 -	Used by the CVersitParser class.
1610.156 -	
1610.157 -	@param aText The property value text from which escape characters are to be 
1610.158 -	removed. */
1610.159 -	virtual void RemoveEscaping(TPtr16& aText)=0;
1610.160 -	/** Allows the addition of escape characters to a property value when externalising 
1610.161 -	to a stream. 
1610.162 -	
1610.163 -	Versit deals with the escaping of semi-colons and the escape character itself 
1610.164 -	(that is, the Yen character for Shift-JIS or a backslash for other character 
1610.165 -	sets) without the help of a plug-in. Other characters, such as commas and 
1610.166 -	carriage returns, can be escaped and un-escaped using the plug-in's RemoveEscaping() 
1610.167 -	and AddEscaping().
1610.168 -	
1610.169 -	This function is needed as escaping is done differently in vCard v3.0: firstly, 
1610.170 -	commas are used as syntactical characters and so need to be escaped when they 
1610.171 -	are just part of the text; secondly, \\r\\n in plain (un-encoded) text is used 
1610.172 -	to mean a CRLF, whereas v2.1 forces you to use Quoted Printble encoding if 
1610.173 -	there is a CRLF in the data.
1610.174 -	
1610.175 -	If the string passed into this function needs to be made longer, then this 
1610.176 -	should be done with the following command, otherwise the cleanup stack will 
1610.177 -	eventually panic:
1610.178 -	
1610.179 -	@code
1610.180 -	aText=aText->ReAllocL(newSize); 
1610.181 -	@endcode
1610.182 -	
1610.183 -	Used by the CParserPropertyValue class.
1610.184 -	
1610.185 -	@param aText The property value text to which escape characters are to be 
1610.186 -	added. */
1610.187 -	virtual void AddEscaping(HBufC16*& aText)=0;
1610.188 -	/** Determines how an unencoded property value should be wrapped when externalising 
1610.189 -	to a stream.
1610.190 -	
1610.191 -	If there is no plug-in then line wrapping will follow vCal v1.0 and vCard 
1610.192 -	v2.1 wrapping rules. In this case, the text is split into lines with a maximum 
1610.193 -	length of KMaxExternalizedTokenLength (70) characters, and two spaces are inserted 
1610.194 -	at the beginning of each new line.
1610.195 -	
1610.196 -	Used by the CParserPropertyValue class.
1610.197 -	
1610.198 -	@param aStream The stream to write the text to.
1610.199 -	@param aCurrentLineLength The number of characters already written to the current 
1610.200 -	line, which needs to be taken into account when calculating where the next 
1610.201 -	line break should occur. This value should be updated before returning.
1610.202 -	@param aText The property value text to write to the stream, in the correct 
1610.203 -	character set and encoded as necessary.
1610.204 -	@return ETrue if the property value is wrapped using the method defined in 
1610.205 -	this (overloaded) function. EFalse if the property value text is not wrapped 
1610.206 -	by this function (in which case the default wrapping rules are implemented). */
1610.207 -	virtual TBool WrapLine(RWriteStream& aStream,TInt& aCurrentLineLength,const TPtr8& aText)=0;
1610.208 -	/** Determines how property values are encoded when externalising a property to 
1610.209 -	a stream.
1610.210 -	
1610.211 -	This function is called for each property in turn and can specify how encoding 
1610.212 -	should be implemented for the value of that property.
1610.213 -	
1610.214 -	If there is no plug-in, or this function returns EFalse, then the default 
1610.215 -	rules are used to determine how each property value is encoded.
1610.216 -	
1610.217 -	Used by the CVersitParser plug-in when externalising a property.
1610.218 -	
1610.219 -	@param aEncoding On return, specifies the encoding type used.
1610.220 -	@param aRequiresEncoding ETrue if encoding is required. This is the case if 
1610.221 -	either the default encoding is not Versit::ENoEncoding, or if the property 
1610.222 -	value contains characters that cannot be written out directly (e.g. equals, 
1610.223 -	CR, LF, tab or non-ASCII characters).
1610.224 -	@param aDefaultEncoding The default encoding specifed by the user of the parser.
1610.225 -	@param aPropertyUid The property UID of the property being externalised. These are 
1610.226 -	defined in vuid.h.
1610.227 -	@param aPropertyCharsetId The character set UID of the character set being 
1610.228 -	used to output the property.
1610.229 -	@return ETrue if the encoding type to be used is defined in this (overloaded) 
1610.230 -	function. EFalse if this function does not determine the encoding type (in 
1610.231 -	which case Versit's default method is used to decide the encoding type). */
1610.232 -	virtual TBool EncodingType(Versit::TVersitEncoding& aEncoding,TBool aRequiresEncoding,Versit::TVersitEncoding aDefaultEncoding
1610.233 -																						,TUid aPropertyUid,TUint aPropertyCharsetId)=0;
1610.234 -	/** Returns the encoding name to be used for a specified encoding type when externalising 
1610.235 -	a property to a stream, or allows the default name to be used.
1610.236 -	
1610.237 -	Can override the default name Versit would select if there was no plug-in ("BASE64", 
1610.238 -	"QUOTED-PRINTABLE", "8-BIT").
1610.239 -	
1610.240 -	The default names are selected using VersitUtils::IANAEncodingName().
1610.241 -	
1610.242 -	Used by the CVersitParser class when externalising a property.
1610.243 -	
1610.244 -	@param aEncoding The encoding type the name is required for.
1610.245 -	@return The name to use for the encoding type, or a zero length descriptor 
1610.246 -	if the default name should be used. */
1610.247 -	virtual const TDesC8& EncodingName(Versit::TVersitEncoding aEncoding)=0;
1610.248 -	
1610.249 -	/** Returns a pointer to a specified interface extension - to allow future extension
1610.250 -	of this class without breaking binary compatibility
1610.251 -
1610.252 -	@param aInterfaceUid Identifier of the interface to be retrieved
1610.253 -	@param aInterface A reference to a pointer that retrieves the specified interface.
1610.254 -	*/
1610.255 -	IMPORT_C virtual void GetInterface(TUid aInterfaceUid, TAny*& aInterface);
1610.256 -private:
1610.257 -	IMPORT_C virtual void Reserved2();
1610.258 -	};
1610.259 -
1610.260 -#endif
  1611.1 --- a/epoc32/include/vprop.h	Tue Mar 16 16:12:26 2010 +0000
  1611.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1611.3 @@ -1,697 +0,0 @@
  1611.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1611.5 -// All rights reserved.
  1611.6 -// This component and the accompanying materials are made available
  1611.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1611.8 -// which accompanies this distribution, and is available
  1611.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1611.10 -//
 1611.11 -// Initial Contributors:
 1611.12 -// Nokia Corporation - initial contribution.
 1611.13 -//
 1611.14 -// Contributors:
 1611.15 -//
 1611.16 -// Description:
 1611.17 -//
 1611.18 -
 1611.19 -#ifndef __VPROP_H__
 1611.20 -#define __VPROP_H__
 1611.21 -
 1611.22 -#ifndef __E32BASE_H__
 1611.23 -#include <e32base.h>
 1611.24 -#endif
 1611.25 -
 1611.26 -#ifndef __BADESCA_H__
 1611.27 -#include <badesca.h>
 1611.28 -#endif
 1611.29 -
 1611.30 -#ifndef __S32STRM_H__
 1611.31 -#include <s32strm.h>
 1611.32 -#endif
 1611.33 -
 1611.34 -#ifndef __E32MATH_H__
 1611.35 -#include <e32math.h>
 1611.36 -#endif
 1611.37 -
 1611.38 -
 1611.39 -#ifndef __VUID_H__
 1611.40 -#include <vuid.h>
 1611.41 -#endif
 1611.42 -
 1611.43 -#ifndef __VTOKEN_H__
 1611.44 -#include <vtoken.h>
 1611.45 -#endif
 1611.46 -
 1611.47 -#ifndef __VUTIL_H__
 1611.48 -#include <vutil.h>
 1611.49 -#endif
 1611.50 -
 1611.51 -#ifndef __S32FILE_H__
 1611.52 -#include <s32file.h>
 1611.53 -#endif
 1611.54 -// 
 1611.55 -
 1611.56 -class CParserProperty;
 1611.57 -class CVersitParser;
 1611.58 -class MVersitPlugIn;
 1611.59 -class CParserPropertyValueCDesCArray;
 1611.60 -
 1611.61 -const TInt KRandomnumberlen = 5;
 1611.62 -const TInt KMaxGeneratedfilenamelen =16; 
 1611.63 -//
 1611.64 -// CParserParam
 1611.65 -//
 1611.66 -
 1611.67 -class CParserParam : public CBase
 1611.68 -/** A Versit property parameter. 
 1611.69 -
 1611.70 -A property parameter consists of a name and optionally a value, both in descriptor 
 1611.71 -form. Parser properties (class CParserProperty) may own one or more property 
 1611.72 -parameters.
 1611.73 -
 1611.74 -Note:
 1611.75 -
 1611.76 -The private parameter name and value members are stored as narrow (8-bit) 
 1611.77 -rather than 16-bit Unicode descriptors.
 1611.78 -
 1611.79 -However, certain member functions take or return a Unicode value, 
 1611.80 -for the purpose of backwards compatibility. In this case a simple conversion 
 1611.81 -takes place: this ignores the top 8 bits (for Unicode -> Narrow) or adds zero 
 1611.82 -for the top 8-bits (for Narrow->Unicode). 
 1611.83 -@publishedAll
 1611.84 -@released
 1611.85 -*/
 1611.86 -	{
 1611.87 -public:
 1611.88 -	IMPORT_C static CParserParam* NewL(const TDesC8& aName, const TDesC8& aValue);
 1611.89 -	IMPORT_C static CParserParam* NewL(const TDesC8& aName, const TDesC& aValue);
 1611.90 -	IMPORT_C ~CParserParam();
 1611.91 -	IMPORT_C void SetValueL(const TDesC8& aValue);
 1611.92 -	IMPORT_C void SetValueL(HBufC8* aValue);
 1611.93 -	IMPORT_C TInt ExternalizeL(RWriteStream& aStream) const;
 1611.94 -	IMPORT_C TPtrC8 Name() const;
 1611.95 -	IMPORT_C TPtrC8 Value() const;
 1611.96 -	IMPORT_C HBufC* ValueL() const;
 1611.97 -	IMPORT_C TInt ExternalizeL(RWriteStream& aStream, TInt& aLengthOutput, CVersitParser* aVersitParser) const;
 1611.98 -private:
 1611.99 -	CParserParam(HBufC8* aName, HBufC8* aValue);
1611.100 -private:
1611.101 -	HBufC8* iParamName;
1611.102 -	HBufC8* iValue;
1611.103 -	};
1611.104 -
1611.105 -//
1611.106 -// TVersitDateTime
1611.107 -//
1611.108 -
1611.109 -class TVersitDateTime
1611.110 -/** Defines a Versit date and time.
1611.111 -
1611.112 -This class is used throughout Versit to represent the date and time. It uses 
1611.113 -a TDateTime object to store the date/time value and records whether this value 
1611.114 -is local to the machine which originated the vCard, local to the machine on 
1611.115 -which the code is running, or universal time (UTC).
1611.116 -
1611.117 -The Year(), Month() and Day() member functions of class TDateTime may be used 
1611.118 -to extract the date and time components from the TVersitDateTime::iDateTime. 
1611.119 -@publishedAll
1611.120 -@released */
1611.121 -	{
1611.122 -public:
1611.123 -	/** Relative time flags. */
1611.124 -	enum TRelativeTime
1611.125 -		{
1611.126 -		/** Time is stored in UTC. */
1611.127 -		EIsUTC,
1611.128 -		/** Time is local to the machine which originated the vCard. */
1611.129 -		EIsVCardLocal,
1611.130 -		/** Time is local to the machine on which the code is running. */
1611.131 -		EIsMachineLocal,
1611.132 -		/** Unused. */
1611.133 -		EIsCorrect
1611.134 -		};
1611.135 -	IMPORT_C TVersitDateTime(const TDateTime& aDateTime,TRelativeTime aRelativeTime);
1611.136 -
1611.137 -	/** Date/time flags. 
1611.138 -	@publishedAll
1611.139 -	@deprecated since 9.1*/
1611.140 -	enum TVersitDateTimeFlags 
1611.141 -		{
1611.142 -		EExportNullFlag=0,
1611.143 -		/** Indicates whether the relative time is to be externalized along with the date/time 
1611.144 -		value.
1611.145 -	
1611.146 -		The flag is set to 'EExportNullFlag' by default.
1611.147 -	
1611.148 -		This is only implemented (by CParserTimePropertyValue::EncodeVersitDateTimeL()) 
1611.149 -		if the date/time is universal. When the flag is set, the externalised value 
1611.150 -		is followed by the token, KVersitTokenUniversalTime. */
1611.151 -		EExportTimeZoneDesignator=0x01,
1611.152 -		EExportLeaveAsLocalTime=0x02
1611.153 -		};
1611.154 -	/**
1611.155 -	@deprecated since 9.1
1611.156 -	*/
1611.157 -	inline void SetFlag(TVersitDateTimeFlags aFlag) { iFlags |= aFlag; }
1611.158 -	/**
1611.159 -	@deprecated since 9.1
1611.160 -	*/
1611.161 -	inline TBool IsFlagSet(TVersitDateTimeFlags aFlag) const { return iFlags & aFlag; }
1611.162 -	/**
1611.163 -	@deprecated since 9.1
1611.164 -	*/
1611.165 -	inline void ClearFlag(TVersitDateTimeFlags aFlag) { iFlags &= ~aFlag; }
1611.166 -public:
1611.167 -	/** The date/time value. */
1611.168 -	TDateTime iDateTime;
1611.169 -	/** Specifies whether the time value is local to the machine which originated the 
1611.170 -	vCard, local to the machine on which the code is running, or universal. */
1611.171 -	TRelativeTime iRelativeTime;
1611.172 -private:
1611.173 -	TInt iFlags;
1611.174 -	};
1611.175 -
1611.176 -//
1611.177 -// CParserPropertyValue
1611.178 -//
1611.179 -class CParserPropertyValue : public CBase
1611.180 -/** Abstract base class for all property values. 
1611.181 -
1611.182 -Defines a pure virtual ExternalizeL() function which should write out the 
1611.183 -property value to a stream.
1611.184 -
1611.185 -The type of derived class is returned by the Uid() function; the UID value is 
1611.186 -specified on construction.
1611.187 -
1611.188 -The other functions relate to the character set, encoding format and plug-in 
1611.189 -used during externalising. 
1611.190 -@publishedAll
1611.191 -@released
1611.192 -*/
1611.193 -	{
1611.194 -public:
1611.195 -	/** Externalises the property value to a write stream. 
1611.196 -	
1611.197 -	Implementations of this function are invoked by the parser's ExternalizeL() 
1611.198 -	function.
1611.199 -	
1611.200 -	@param aStream Stream to which the property value is externalised.
1611.201 -	@param aEncodingCharset The character set and encoding information.
1611.202 -	@param aLengthOutput The amount of text that has been outputted so far on the 
1611.203 -	line (for the property name), which may need to be taken into account when 
1611.204 -	calculating if and where any line break should occur. */
1611.205 -	virtual void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput)=0;
1611.206 -	IMPORT_C virtual TBool IsAsciiCharacterSetSufficient();
1611.207 -	IMPORT_C virtual void EncodeL(CBufBase* aTarget,const TDesC8& aSource,const TUid& aEncoding) const;
1611.208 -	IMPORT_C virtual TBool SupportsInterface(const TUid& /*aInterfaceUid*/) const;
1611.209 -	inline TUid Uid() const;
1611.210 -	inline void SetPlugIn(MVersitPlugIn* aPlugIn);
1611.211 -protected:
1611.212 -	IMPORT_C CParserPropertyValue(const TUid& aPropertyValueUid);
1611.213 -	IMPORT_C void FoldEncodeAndWriteValueToStreamL(RWriteStream& aStream, const TDesC& aValue
1611.214 -														,const Versit::TEncodingAndCharset& aEncodingCharset,TInt& aLengthOutput) const;
1611.215 -	IMPORT_C void FoldEncodeAndWriteValueToStreamL(RWriteStream& aStream, const CDesCArray* aValueArray
1611.216 -														,const Versit::TEncodingAndCharset& aEncodingCharset,TInt& aLengthOutput) const;
1611.217 -	IMPORT_C void FoldAndWriteValueToStreamL(RWriteStream& aStream, const TDesC& aValue
1611.218 -														,const Versit::TEncodingAndCharset& aEncodingCharset,TInt& aLengthOutput) const;
1611.219 -	IMPORT_C static void Append(TDes16& aTarget,TDesC8& aSource);
1611.220 -protected:
1611.221 -    inline MVersitPlugIn* PlugIn();
1611.222 -
1611.223 -private:
1611.224 -	TUid iPropertyValueTypeUid;
1611.225 -	MVersitPlugIn* iPlugIn;
1611.226 -	};
1611.227 -
1611.228 -//
1611.229 -// CParserTimePropertyValue
1611.230 -//
1611.231 -
1611.232 -class CVersitDaylight;
1611.233 -
1611.234 -class CParserTimePropertyValue : public CParserPropertyValue
1611.235 -/** Abstract base class for all of the date/time property value classes.
1611.236 -
1611.237 -Provides date/time conversion functions between machine-local and universal 
1611.238 -time. 
1611.239 -
1611.240 -The date/time property value classes are CParserPropertyValueAlarm, 
1611.241 -CParserPropertyValueDate, CParserPropertyValueDateTime, 
1611.242 -CParserPropertyValueMultiDateTime, CParserPropertyValueDaylight and 
1611.243 -CParserPropertyValueRecurrence. 
1611.244 -@publishedAll
1611.245 -@released
1611.246 -*/
1611.247 -	{
1611.248 -public:
1611.249 -	/** This is implemented, where applicable, to convert date/time 
1611.250 -	values into universal time.
1611.251 -	
1611.252 -	The date/time is checked against the daylight saving information provided 
1611.253 -	in aDaylight. If it falls inside the daylight saving period then the daylight 
1611.254 -	saving offset is subtracted from the time to convert it to universal time. 
1611.255 -	Otherwise aIncrement is added to the date/time of the alarm to convert it 
1611.256 -	to universal time.
1611.257 -	
1611.258 -	Note that the daylight savings offset will adjust the time both for the daylight 
1611.259 -	saving and for the time zone.
1611.260 -	
1611.261 -	The function has no effect if it date/times are already stored in universal 
1611.262 -	time.
1611.263 -	
1611.264 -	If aDaylight is a NULL pointer then aIncrement is used.
1611.265 -	
1611.266 -	@param aIncrement A time interval in seconds which represents the time zone's 
1611.267 -	offset from universal time. 
1611.268 -	@param aDaylight Pointer to the specification for daylight saving. If the alarm's 
1611.269 -	time value is within the period for daylight saving, the value is modified 
1611.270 -	by the daylight saving offset (which accounts for both the time zone and daylight 
1611.271 -	saving rule). 
1611.272 -	@deprecated since 9.1
1611.273 -	*/
1611.274 -	IMPORT_C virtual void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight)=0;
1611.275 -	/** Pure virtual function which is implemented, where applicable, to convert the 
1611.276 -	date/time property value into machine-local time. 
1611.277 -	
1611.278 -	This process involves adjusting the date/time value by the offset in aIncrement.
1611.279 -	
1611.280 -	The function has no effect if the value is already stored as machine-local 
1611.281 -	time.
1611.282 -	
1611.283 -	The universal date/times are assumed to have been corrected for any daylight saving 
1611.284 -	rule in effect.
1611.285 -	
1611.286 -	@param aIncrement A time interval which represents the number of seconds which 
1611.287 -	is to be added to the date/time value. This should normally be the universal 
1611.288 -	time offset for the machine's locale. 
1611.289 -	@deprecated since 9.1 */
1611.290 -	IMPORT_C virtual void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement)=0;
1611.291 -	static void ConvertDateTime(TDateTime& aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight,TBool aTo);
1611.292 -public: //from CParserPropertyValue
1611.293 -	IMPORT_C virtual TBool SupportsInterface(const TUid& aInterfaceUid) const;
1611.294 -protected:
1611.295 -	IMPORT_C CParserTimePropertyValue(const TUid& aPropertyValueUid);
1611.296 -	IMPORT_C void ConvertDateTime(TDateTime* aDateTime,const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1611.297 -	IMPORT_C void EncodeVersitDateTimeL(TDes8& aBuf,const TVersitDateTime& aDateTime,TBool aEncodeTime=ETrue) const;
1611.298 -	IMPORT_C void EncodeTimePeriodL(TDes8& aBuf,const TTime& aTimePeriod) const;
1611.299 -	};
1611.300 -
1611.301 -//
1611.302 -//  CParserPropertyValueHBufC
1611.303 -//
1611.304 -class CParserPropertyValueHBufC : public CParserPropertyValue
1611.305 -/** A heap descriptor property value parser.
1611.306 -
1611.307 -Many properties are stored using this class. Examples are vCard e-mails and 
1611.308 -vCalendar locations.
1611.309 -
1611.310 -The UID for a heap descriptor property value is KVersitPropertyHBufCUid. 
1611.311 -@publishedAll
1611.312 -@released
1611.313 -*/
1611.314 -	{
1611.315 -public:
1611.316 -	IMPORT_C static CParserPropertyValueHBufC* NewL(const TDesC& aValue);
1611.317 -	IMPORT_C CParserPropertyValueHBufC(HBufC16* aValue);
1611.318 -	IMPORT_C ~CParserPropertyValueHBufC();
1611.319 -	IMPORT_C TPtrC Value() const;
1611.320 -	IMPORT_C HBufC* TakeValueOwnership();
1611.321 -    IMPORT_C CParserPropertyValueCDesCArray* TreatAsArrayPropertyLC(const CParserProperty& aOwningProperty) const;
1611.322 -public: // from CParserPropertyValue
1611.323 -	IMPORT_C TBool IsAsciiCharacterSetSufficient();
1611.324 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
1611.325 -private:
1611.326 -	CParserPropertyValueHBufC();
1611.327 -	void ConstructL(const TDesC& aValue);
1611.328 -protected:
1611.329 -	HBufC* iValue;
1611.330 -	};
1611.331 -
1611.332 -//
1611.333 -//  CParserPropertyValueBinary
1611.334 -//
1611.335 -
1611.336 -class CParserPropertyValueBinary : public CParserPropertyValue
1611.337 -/** A binary property value parser.
1611.338 -
1611.339 -It is used to store logos, photos, alarm content and binary attachment as binary values.
1611.340 -
1611.341 -The UID for a binary property value is KVersitPropertyBinaryUid. 
1611.342 -@publishedAll
1611.343 -@released
1611.344 -*/
1611.345 -	{
1611.346 -public:
1611.347 -	IMPORT_C static CParserPropertyValueBinary* NewL(const TDesC8& aValue);
1611.348 -	IMPORT_C static CParserPropertyValueBinary* NewLC(const TDesC8& aValue);
1611.349 -
1611.350 -	inline CParserPropertyValueBinary(CBufSeg& aValue);
1611.351 -	IMPORT_C ~CParserPropertyValueBinary();
1611.352 -	IMPORT_C const CBufSeg* Value() const;
1611.353 -public: // from CParserPropertyValue
1611.354 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
1611.355 -protected:
1611.356 -	inline CParserPropertyValueBinary();
1611.357 -	void ConstructL(const TDesC8& aValue);
1611.358 -	void ExternalizeL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput, RReadStream& aReadStream);
1611.359 -
1611.360 -protected:
1611.361 -	CBufSeg* iValue;
1611.362 -	};//
1611.363 -	
1611.364 -NONSHARABLE_CLASS(CParserPropertyValueBinaryFile) : public CParserPropertyValueBinary
1611.365 -/** A file property value parser.
1611.366 -
1611.367 -It is used to store a file handle so that the binary data can be read through the handle when exporting.
1611.368 -It is not used when importing.
1611.369 -The UID for a binary property value is KVersitPropertyBinaryUid. 
1611.370 -@publishedPartner
1611.371 -@prototype
1611.372 -*/
1611.373 -	{
1611.374 -public:
1611.375 -	IMPORT_C static CParserPropertyValueBinaryFile* NewL(const RFile& aFileHandle);
1611.376 -	IMPORT_C ~CParserPropertyValueBinaryFile();
1611.377 -public: // from CParserPropertyValue
1611.378 -	void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
1611.379 -
1611.380 -private:
1611.381 -	void ConstructL(const RFile& aFileHandle);
1611.382 -private:
1611.383 -	RFileReadStream iFileStream;
1611.384 -	};
1611.385 -
1611.386 -//  CParserPropertyValueCDesCArray
1611.387 -//
1611.388 -class CParserPropertyValueCDesCArray : public CParserPropertyValue
1611.389 -/** A property value parser which stores an array of descriptors.
1611.390 -
1611.391 -Can be used by both vCards and vCalendars, for example to store a postal address 
1611.392 -or information about an organisation.
1611.393 -
1611.394 -The UID for a descriptor array property value is KVersitPropertyCDesCArrayUid. 
1611.395 -@publishedAll
1611.396 -@released
1611.397 -*/
1611.398 -	{
1611.399 -public:
1611.400 -	IMPORT_C CParserPropertyValueCDesCArray(CDesCArray* aValue);
1611.401 -	IMPORT_C ~CParserPropertyValueCDesCArray();
1611.402 -	inline CDesCArray* Value() const;
1611.403 -	IMPORT_C TBool IsPresent(const TDesC& aValue) const;
1611.404 -public: // from CParserPropertyValue
1611.405 -	IMPORT_C TBool IsAsciiCharacterSetSufficient();
1611.406 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
1611.407 -protected:
1611.408 -	CDesCArray* iValue;
1611.409 -	};
1611.410 -
1611.411 -//
1611.412 -// CParserPropertyValueTimeZone
1611.413 -//
1611.414 -
1611.415 -class CParserPropertyValueTimeZone: public CParserPropertyValue
1611.416 -/** A time zone property value parser.
1611.417 -
1611.418 -Stores and externalises a property value which represents the time zone information 
1611.419 -for a vCard or vCalendar. 
1611.420 -
1611.421 -The time zone is specified as the universal time offset. This is a time interval 
1611.422 -which is a positive or negative number of seconds from universal time. Time 
1611.423 -zones east of universal time have positive numbers. Time zones west of universal 
1611.424 -time have negative numbers.
1611.425 -
1611.426 -The UID for a time zone property value is KVersitPropertyTimeZoneUid. 
1611.427 -@publishedAll
1611.428 -@released
1611.429 -*/
1611.430 -	{
1611.431 -public:
1611.432 -	static void EncodeTimeZone(TDes8& aBuf,TTimeIntervalSeconds iValue);
1611.433 -	IMPORT_C CParserPropertyValueTimeZone(TTimeIntervalSeconds aValue);
1611.434 -	inline TTimeIntervalSeconds Value() const;
1611.435 -public: // from CParserPropertyValue
1611.436 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
1611.437 -protected:
1611.438 -	TTimeIntervalSeconds iValue;
1611.439 -	};
1611.440 -
1611.441 -//
1611.442 -// CVersitDaylight
1611.443 -//
1611.444 -class CVersitDaylight : public CBase
1611.445 -/** Universal time offset information, including the daylight savings offset. 
1611.446 -
1611.447 -This class deals with the daylight saving offset: a one hour offset that occurs 
1611.448 -in many countries during part of the year. This offset needs to be taken into 
1611.449 -account when converting Versit times (TVersitDateTimes) between universal 
1611.450 -and machine-local times.
1611.451 -
1611.452 -This class stores information about the offset, including its length in seconds, 
1611.453 -when it takes effect and the standard time designations.
1611.454 -
1611.455 -Note that the universal offset (iOffset) is the sum of the daylight saving 
1611.456 -offset and any time zone offset, as it is the absolute offset from GMT.
1611.457 -
1611.458 -An instance of this class is owned by the CParserPropertyValueDaylight class. 
1611.459 -@publishedAll
1611.460 -@released
1611.461 -*/
1611.462 -	{
1611.463 -public:
1611.464 -	IMPORT_C static CVersitDaylight* NewL(TBool aSavings, TTimeIntervalSeconds aOffset, TVersitDateTime* aStartTime, TVersitDateTime* aEndTime, const TDesC& aStandardDesignation, const TDesC& aDaylightDesignation);
1611.465 -	IMPORT_C ~CVersitDaylight();
1611.466 -private:
1611.467 -	CVersitDaylight(TBool aSavings, TTimeIntervalSeconds aOffset, TVersitDateTime* aStartTime, TVersitDateTime* aEndTime);
1611.468 -	void ConstructL(const TDesC& aStandardDesignation, const TDesC& aDaylightDesignation);
1611.469 -public:
1611.470 -	/** A sort key than can be used when sorting an array of properties by start date/time. */
1611.471 -	TInt64 iStartTimeSortKey;
1611.472 -	/** The daylight savings flag: this is ETrue if daylight saving is in effect 
1611.473 -	in the locale and EFalse if not. */
1611.474 -	TBool iSavings;
1611.475 -	/** The absolute offset from GMT, which is the sum of the time zone and daylight 
1611.476 -	saving offsets (in seconds). */
1611.477 -	TTimeIntervalSeconds iOffset;
1611.478 -	/** The date/time at which the period for daylight saving begins. */
1611.479 -	TVersitDateTime* iStartTime;
1611.480 -	/** The date/time at which the period for daylight saving ends. */
1611.481 -	TVersitDateTime* iEndTime;
1611.482 -	/** The standard time designation, e.g. GMT, EST. */
1611.483 -	HBufC* iStandardDesignation;
1611.484 -	/** The daylight saving time designation, e.g. BST, EDT. */
1611.485 -	HBufC* iDaylightDesignation;
1611.486 -	};
1611.487 -
1611.488 -//
1611.489 -// CParserPropertyValueDaylight
1611.490 -//
1611.491 -class CParserPropertyValueDaylight : public CParserTimePropertyValue
1611.492 -/** A property value parser which contains the daylight savings rule for a vCalendar.
1611.493 -
1611.494 -The property value is stored using an instance of the CVersitDaylight class.
1611.495 -
1611.496 -The UID for a daylight savings rule property value is KVersitPropertyDaylightUid. 
1611.497 -@publishedAll
1611.498 -@released
1611.499 -*/
1611.500 -	{
1611.501 -public:
1611.502 -	IMPORT_C CParserPropertyValueDaylight(CVersitDaylight* aValue);
1611.503 -	IMPORT_C ~CParserPropertyValueDaylight();
1611.504 -	inline CVersitDaylight* Value() const;
1611.505 -public: // from CParserTimePropertyValue
1611.506 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1611.507 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
1611.508 -public: // from CParserPropertyValue
1611.509 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
1611.510 -private:
1611.511 -	CVersitDaylight* iValue;
1611.512 -	};
1611.513 -
1611.514 -//
1611.515 -//  CParserPropertyValueDateTime
1611.516 -//
1611.517 -class CParserPropertyValueDateTime : public CParserTimePropertyValue
1611.518 -/** A date/time property value parser. 
1611.519 -
1611.520 -The date/time value is contained in a TVersitDateTime object.
1611.521 -
1611.522 -The UID for a date/time property value is KVersitPropertyDateTimeUid. 
1611.523 -@publishedAll
1611.524 -@released
1611.525 -*/
1611.526 -	{
1611.527 -public:
1611.528 -	IMPORT_C CParserPropertyValueDateTime(TVersitDateTime* aValue);
1611.529 -	IMPORT_C ~CParserPropertyValueDateTime();
1611.530 -	inline TVersitDateTime* Value() const;
1611.531 -public: // from CParserTimePropertyValue
1611.532 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1611.533 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
1611.534 -public: // from CParserPropertyValue
1611.535 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt /*aLengthOutput*/);
1611.536 -protected:
1611.537 -	TVersitDateTime* iValue;
1611.538 -	};
1611.539 -
1611.540 -//
1611.541 -//  CParserPropertyValueDate
1611.542 -//
1611.543 -class CParserPropertyValueDate : public CParserTimePropertyValue
1611.544 -/** A date property value parser.
1611.545 -
1611.546 -The date value is contained in a TVersitDateTime object. 
1611.547 -
1611.548 -The UID for a date property value is KVersitPropertyDateUid. 
1611.549 -@publishedAll
1611.550 -@released
1611.551 -*/
1611.552 -	{
1611.553 -public:
1611.554 -	IMPORT_C CParserPropertyValueDate(TVersitDateTime* aValue);
1611.555 -	IMPORT_C ~CParserPropertyValueDate();
1611.556 -	inline TVersitDateTime* Value() const;
1611.557 -public: // from CParserTimePropertyValue
1611.558 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& /*aIncrement*/,const CVersitDaylight* /*aDaylight*/);
1611.559 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& /*aIncrement*/);
1611.560 -public: // from CParserPropertyValue
1611.561 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
1611.562 -private:
1611.563 -	TVersitDateTime* iValue;
1611.564 -	};
1611.565 -
1611.566 -//
1611.567 -//  CParserPropertyValueMultiDateTime
1611.568 -//
1611.569 -class CParserPropertyValueMultiDateTime : public CParserTimePropertyValue
1611.570 -/** A property value parser which stores a list of date/time values using an array 
1611.571 -of TVersitDateTime objects.
1611.572 -
1611.573 -The UID for a multiple date/time property value is KVersitPropertyMultiDateTimeUid. 
1611.574 -@publishedAll
1611.575 -@released
1611.576 -*/
1611.577 -	{
1611.578 -public:
1611.579 -	IMPORT_C CParserPropertyValueMultiDateTime(CArrayPtr<TVersitDateTime>* aValue);
1611.580 -	IMPORT_C ~CParserPropertyValueMultiDateTime();
1611.581 -	inline CArrayPtr<TVersitDateTime>* Value() const;
1611.582 -public: // from CParserTimePropertyValue
1611.583 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1611.584 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
1611.585 -public: // from CParserPropertyValue
1611.586 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt aLengthOutput);
1611.587 -protected:
1611.588 -	CArrayPtr<TVersitDateTime>* iValue;
1611.589 -	};
1611.590 -
1611.591 -//
1611.592 -//  CParserPropertyValueInt
1611.593 -//
1611.594 -class CParserPropertyValueInt : public CParserPropertyValue
1611.595 -/** An integer property value parser.
1611.596 -
1611.597 -This stores a property value as a signed integer. For example, an employee 
1611.598 -ID number might be stored using this class.
1611.599 -
1611.600 -The UID for an integer property value is KVersitPropertyIntUid. 
1611.601 -@publishedAll
1611.602 -@released
1611.603 -*/
1611.604 -	{
1611.605 -public:
1611.606 -	IMPORT_C CParserPropertyValueInt(TInt aValue);
1611.607 -	inline TInt Value() const;
1611.608 -public: // from CParserPropertyValue
1611.609 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt /*aLengthOutput*/);
1611.610 -protected:
1611.611 -	TInt iValue;
1611.612 -	};
1611.613 -
1611.614 -//
1611.615 -//	CParserProperty
1611.616 -//
1611.617 -
1611.618 -class CParserProperty : public CBase
1611.619 -/** A vCard or vCalendar property.
1611.620 -
1611.621 -A property consists of a name, an optional value and one or more optional 
1611.622 -parameters.
1611.623 -
1611.624 -The name, value and parameters are initialised on construction.
1611.625 -
1611.626 -Versit properties have the general form:
1611.627 -
1611.628 -Property Name (; Property Parameter Name(=Property Parameter Value)* : Property 
1611.629 -Value)
1611.630 -
1611.631 -where items in brackets are optional and * indicates that the item may be 
1611.632 -repeated. 
1611.633 -
1611.634 -For instance, TEL; HOME; ENCODING=QUOTED-PRINTABLE; CHARSET=US-ASCII : 01234 567890
1611.635 -
1611.636 -Here, TEL is the property name; HOME, ENCODING and CHARSET are property parameter 
1611.637 -names; QUOTED-PRINTABLE and US-ASCII are property parameter values. The component 
1611.638 -following the colon is the property value.
1611.639 -
1611.640 -Properties also have a name UID, which set during internalisation of a property 
1611.641 -and used only during internalisation. It is set by SetNameUid() and is used 
1611.642 -to allow number comparisons during internalisation. This provides a faster 
1611.643 -alternative to string comparisons when checking a property to see if it is 
1611.644 -a significant one (e.g. a begin or binary property). This is the only use 
1611.645 -of the name UID: it is not used during externalisation of a property.
1611.646 -
1611.647 -Note that grouped properties are supported by the derived class, CParserGroupedProperty. 
1611.648 -The vCalender parser does not have property groups, and so stores all properties 
1611.649 -using this base class, whereas the vCard parser stores all properties using 
1611.650 -CParserGroupedProperty. 
1611.651 -@publishedAll
1611.652 -@released
1611.653 -*/
1611.654 -	{
1611.655 -public:
1611.656 -	IMPORT_C static					CParserProperty* NewL(CParserPropertyValue& aPropertyValue, const TDesC8& aName, CArrayPtr<CParserParam>* aArrayOfParams);
1611.657 -	IMPORT_C CParserProperty(CArrayPtr<CParserParam>* aArrayOfParams);
1611.658 -	IMPORT_C ~CParserProperty();
1611.659 -	IMPORT_C virtual void			ExternalizeL(RWriteStream& aStream, CVersitParser* aVersitParser = NULL);
1611.660 -	IMPORT_C CParserParam*			Param(const TDesC8& aParamName) const; // note params can only appear once
1611.661 -	IMPORT_C void					AddParamL(CParserParam* aParam);
1611.662 -	IMPORT_C void					DeleteParam(TDesC8& aParamName);
1611.663 -	IMPORT_C void					SetNameL(const TDesC8& aName);
1611.664 -	IMPORT_C virtual TBool			SupportsInterface(const TUid& /*aInterfaceUid*/) const;
1611.665 -	IMPORT_C TPtrC8					Name() const;
1611.666 -	inline void						SetValue(CParserPropertyValue* aPropertyValue);
1611.667 -	inline CParserPropertyValue*	Value() const;
1611.668 -	inline TUid						Uid() const;
1611.669 -	inline void						SetNameUid(TUid aUid);
1611.670 -	inline TUid						NameUid() const;
1611.671 -	inline void						SetParamArray(CArrayPtr<CParserParam>* aArrayOfParams);
1611.672 -
1611.673 -	
1611.674 -	IMPORT_C TBool LoadBinaryValuesFromFilesL(RFs& aFileSession);
1611.675 -	IMPORT_C TBool SaveBinaryValuesToFilesL(TInt aSizeThreshold,const TDesC& aPath,RFs& aFileSession);
1611.676 -protected:
1611.677 -	IMPORT_C CParserProperty(CParserPropertyValue& aPropertyValue, CArrayPtr<CParserParam>* aArrayOfParams);
1611.678 -	IMPORT_C static void			ConstructSelfL(CParserProperty& aSelf,const TDesC8& aName);
1611.679 -
1611.680 -public:
1611.681 -	IMPORT_C CArrayPtr<CParserParam>* ParamArray()const;
1611.682 -
1611.683 -protected:
1611.684 -	CParserPropertyValue*			iPropertyValue;
1611.685 -	HBufC8*							iPropertyName;
1611.686 -	TUid							iPropertyNameUid;
1611.687 -	CArrayPtr<CParserParam>*		iArrayOfParams;
1611.688 -
1611.689 -private:
1611.690 -	friend class CVersitParser;
1611.691 -	inline HBufC8*&					NameBuf();
1611.692 -	IMPORT_C virtual void			Reserved();
1611.693 -	void ReadBinaryDataL(const CBufSeg* aBufseg_ptr,HBufC8** aBuffer);
1611.694 -	void GenerateNameAndCreateFileL(RFs& aFileSession,TPtr8 aPropertyName,RFile& aFile,TDes& aFileName);
1611.695 -	
1611.696 -	};
1611.697 -
1611.698 -#include <vprop.inl>
1611.699 -
1611.700 -#endif
  1612.1 --- a/epoc32/include/vprop.inl	Tue Mar 16 16:12:26 2010 +0000
  1612.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1612.3 @@ -1,181 +0,0 @@
  1612.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1612.5 -// All rights reserved.
  1612.6 -// This component and the accompanying materials are made available
  1612.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1612.8 -// which accompanies this distribution, and is available
  1612.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1612.10 -//
 1612.11 -// Initial Contributors:
 1612.12 -// Nokia Corporation - initial contribution.
 1612.13 -//
 1612.14 -// Contributors:
 1612.15 -//
 1612.16 -// Description:
 1612.17 -// CParserPropertyValue
 1612.18 -// 
 1612.19 -//
 1612.20 -
 1612.21 -inline TUid CParserPropertyValue::Uid() const
 1612.22 -/** Returns the property value's UID.
 1612.23 -
 1612.24 -This UID identifies the property value's type and is specified on construction. 
 1612.25 -The values are defined in vuid.h.
 1612.26 -
 1612.27 -@return The property value's UID. */
 1612.28 -	{return iPropertyValueTypeUid;}
 1612.29 -
 1612.30 -inline void CParserPropertyValue::SetPlugIn(MVersitPlugIn* aPlugIn)
 1612.31 -/** Assigns a Versit plug-in to the property value.
 1612.32 -
 1612.33 -Allows functions of the MVersitPlugIn class to be used when writing to a stream.
 1612.34 -
 1612.35 -If a plug-in is in use then this function needs to be called with each property value 
 1612.36 -before it is externalised. However, this will be done for you if you add a property 
 1612.37 -using the function CVersitParser::AddPropertyL(). 
 1612.38 -
 1612.39 -@param aPlugIn A pointer to an MVersitPlugIn instance. */
 1612.40 -	{iPlugIn=aPlugIn;}
 1612.41 -
 1612.42 -inline MVersitPlugIn* CParserPropertyValue::PlugIn()
 1612.43 -/** Gets a pointer to the Versit plug-in
 1612.44 -
 1612.45 -@return A pointer to the plug-in. */
 1612.46 -	{return iPlugIn;}
 1612.47 -
 1612.48 -//
 1612.49 -//  CParserPropertyValueCDesCArray
 1612.50 -//
 1612.51 -inline CParserPropertyValueBinary::CParserPropertyValueBinary() :CParserPropertyValue(TUid::Uid(KVersitPropertyBinaryUid))
 1612.52 -/** Constructs a binary property value. 
 1612.53 -
 1612.54 -Sets the property value UID to KVersitPropertyBinaryUid. */
 1612.55 -	{}
 1612.56 -
 1612.57 -inline CParserPropertyValueBinary::CParserPropertyValueBinary(CBufSeg& aValue) :CParserPropertyValue(TUid::Uid(KVersitPropertyBinaryUid)), iValue(&aValue)
 1612.58 -/** Constructs a binary property value. 
 1612.59 -
 1612.60 -Sets the property value to aValue and the property value UID to KVersitPropertyBinaryUid.
 1612.61 -
 1612.62 -@param aValue The property value. */
 1612.63 -	{}
 1612.64 -
 1612.65 -//
 1612.66 -//  CParserPropertyValueCDesCArray
 1612.67 -//
 1612.68 -inline CDesCArray* CParserPropertyValueCDesCArray::Value() const
 1612.69 -/** Gets the property value.
 1612.70 -
 1612.71 -@return Pointer to the array of descriptors owned by the property value object. */
 1612.72 -	{return iValue;}
 1612.73 -
 1612.74 -//
 1612.75 -// CParserPropertyValueTimeZone
 1612.76 -//
 1612.77 -inline TTimeIntervalSeconds CParserPropertyValueTimeZone::Value() const
 1612.78 -/** Gets the time zone property value.
 1612.79 -
 1612.80 -@return A time interval (in seconds) which represents the offset from universal 
 1612.81 -time. */
 1612.82 -	{return iValue;}
 1612.83 -
 1612.84 -//
 1612.85 -// CParserPropertyValueDaylight
 1612.86 -//
 1612.87 -inline CVersitDaylight* CParserPropertyValueDaylight::Value() const
 1612.88 -/** Gets the daylight saving property value.
 1612.89 -
 1612.90 -@return Pointer to the daylight saving specification. */
 1612.91 -	{return iValue;}
 1612.92 -
 1612.93 -//
 1612.94 -//  CParserPropertyValueDateTime
 1612.95 -//
 1612.96 -inline TVersitDateTime* CParserPropertyValueDateTime::Value() const
 1612.97 -/** Gets a pointer to the date/time property value.
 1612.98 -
 1612.99 -@return Pointer to the date/time property value. */
1612.100 -	{return iValue;}
1612.101 -
1612.102 -//
1612.103 -//  CParserPropertyValueDate
1612.104 -//
1612.105 -inline TVersitDateTime* CParserPropertyValueDate::Value() const
1612.106 -/** Gets a pointer to the date property value.
1612.107 -
1612.108 -@return Pointer to the date property value. */
1612.109 -	{return iValue;}
1612.110 -
1612.111 -//
1612.112 -//  CParserPropertyValueMultiDateTime
1612.113 -//
1612.114 -inline CArrayPtr<TVersitDateTime>* CParserPropertyValueMultiDateTime::Value() const
1612.115 -/** Gets a pointer to the object's list of date/time property values.
1612.116 -
1612.117 -@return Pointer to the array of date/time property values. */
1612.118 -	{return iValue;}
1612.119 -
1612.120 -//
1612.121 -//  CParserPropertyValueInt
1612.122 -//
1612.123 -inline TInt CParserPropertyValueInt::Value() const
1612.124 -/** Gets the signed integer property value.
1612.125 -
1612.126 -@return The signed integer property value. */
1612.127 -	{return iValue;}
1612.128 -
1612.129 -//
1612.130 -//	CParserProperty
1612.131 -//
1612.132 -inline void CParserProperty::SetValue(CParserPropertyValue* aPropertyValue)
1612.133 -/** Sets the property value.
1612.134 -
1612.135 -The property takes ownership of the property value.
1612.136 -
1612.137 -@param aPropertyValue A pointer to the property value to be set. */
1612.138 -	{iPropertyValue=aPropertyValue;}
1612.139 -
1612.140 -inline CParserPropertyValue* CParserProperty::Value() const
1612.141 -/** Gets a pointer to the property value.
1612.142 -
1612.143 -Ownership of the property value is not transferred by this function.
1612.144 -
1612.145 -@return Pointer to generic parser property value. */
1612.146 -	{return iPropertyValue;}
1612.147 -
1612.148 -inline TUid CParserProperty::Uid() const
1612.149 -/** Gets the UID of the property value.
1612.150 -
1612.151 -@return UID of the property value. */
1612.152 -	{return iPropertyValue->Uid();}
1612.153 -
1612.154 -/*
1612.155 - * Gets the name of the property.
1612.156 - *
1612.157 - * @return    " HBufC8*& "
1612.158 - *            Pointer to the property name.
1612.159 - */
1612.160 -inline HBufC8*& CParserProperty::NameBuf()
1612.161 -	{return iPropertyName;}
1612.162 -
1612.163 -inline void CParserProperty::SetNameUid(TUid aUid)
1612.164 -/** Sets a property name UID.
1612.165 -
1612.166 -This function is called by CVersitParser::AddProperty() when internalising, 
1612.167 -and will not normally be used directly.
1612.168 -
1612.169 -@param aUid A property name UID. */
1612.170 -	{iPropertyNameUid=aUid;}
1612.171 -
1612.172 -inline TUid CParserProperty::NameUid() const
1612.173 -/** Gets the property name UID.
1612.174 -
1612.175 -@return UID of the property name. */
1612.176 -	{return iPropertyNameUid;}
1612.177 -
1612.178 -inline void CParserProperty::SetParamArray(CArrayPtr<CParserParam>* aArrayOfParams)
1612.179 -/** Sets the array of property parameters. 
1612.180 -
1612.181 -The property takes ownership of aArrayOfParams
1612.182 -
1612.183 -@param aArrayOfParams Array of property parameters. */
1612.184 -	{iArrayOfParams=aArrayOfParams;}
  1613.1 --- a/epoc32/include/vrecur.h	Tue Mar 16 16:12:26 2010 +0000
  1613.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1613.3 @@ -1,355 +0,0 @@
  1613.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1613.5 -// All rights reserved.
  1613.6 -// This component and the accompanying materials are made available
  1613.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1613.8 -// which accompanies this distribution, and is available
  1613.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1613.10 -//
 1613.11 -// Initial Contributors:
 1613.12 -// Nokia Corporation - initial contribution.
 1613.13 -//
 1613.14 -// Contributors:
 1613.15 -//
 1613.16 -// Description:
 1613.17 -//
 1613.18 - 
 1613.19 -#ifndef __VRECUR_H__
 1613.20 -#define __VRECUR_H__
 1613.21 -
 1613.22 -#include <versit.h>
 1613.23 -
 1613.24 -//
 1613.25 -// CWeekDayArray
 1613.26 -//
 1613.27 -
 1613.28 -class CWeekDayArray : public CBase
 1613.29 -/** Defines an array of the days in the week on which a 'weekly' 
 1613.30 -or 'monthly by position' repeat event occurs. 
 1613.31 -@publishedAll
 1613.32 -@released
 1613.33 -*/
 1613.34 -	{
 1613.35 -public:
 1613.36 -	IMPORT_C CWeekDayArray();
 1613.37 -	IMPORT_C ~CWeekDayArray();
 1613.38 -	IMPORT_C void ExternalizeL(RWriteStream& aStream);
 1613.39 -public:	
 1613.40 -	/** The array of days in the week. */
 1613.41 -	CArrayFix<TDay>* iArray;
 1613.42 -	};
 1613.43 -
 1613.44 -//
 1613.45 -// CVersitRecurrence
 1613.46 -//
 1613.47 -class CVersitRecurrence : public CBase
 1613.48 -/** Abstract base class for all recurrence property value classes.
 1613.49 -
 1613.50 -A pointer to a derived recurrence property value class instance is owned by 
 1613.51 -the CParserPropertyValueRecurrence class.
 1613.52 -
 1613.53 -Implementations of this class define when an event is to repeat. 
 1613.54 -@publishedAll
 1613.55 -@released
 1613.56 -*/
 1613.57 -	{
 1613.58 -public:
 1613.59 -	IMPORT_C CVersitRecurrence(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate);
 1613.60 -	IMPORT_C ~CVersitRecurrence();
 1613.61 -	/** Externalises an occurrence list to aStream.
 1613.62 -	
 1613.63 -	@param aStream The stream to which the occurrence list is to be externalised. */
 1613.64 -	virtual void ExternalizeOccurrenceListsL(RWriteStream& aStream) const=0;
 1613.65 -	/** Repeat type. 
 1613.66 -	@publishedAll
 1613.67 -	@released */
 1613.68 -	enum TType
 1613.69 -		{
 1613.70 -		/** Daily repeat. */
 1613.71 -		EDaily=1,
 1613.72 -		/** Weekly repeat. */
 1613.73 -		EWeekly,
 1613.74 -		/** Monthly repeat, by relative position within the month. */
 1613.75 -		EMonthlyByPos,
 1613.76 -		/** Monthly repeat, by day number within the month. */
 1613.77 -		EMonthlyByDay,
 1613.78 -		/** Yearly repeat, by specific months within the year. */
 1613.79 -		EYearlyByMonth,
 1613.80 -		/** Yearly repeat, by specific days within the year. */
 1613.81 -		EYearlyByDay
 1613.82 -		};
 1613.83 -public:
 1613.84 -	/** The type of repeat (daily, weekly etc.). */
 1613.85 -	TType iRepeatType;
 1613.86 -	/** The interval between repeats: a number of days, weeks, months or years, depending 
 1613.87 -	on the repeat type. */
 1613.88 -	TInt iInterval;
 1613.89 -	/** The duration in days, weeks, months or years (depending on the repeat type) 
 1613.90 -	for the repeat.
 1613.91 -	
 1613.92 -	A value of zero indicates the repeat should continue forever. */
 1613.93 -	TInt iDuration;
 1613.94 -	/** Specification for the date at which the repeat will end. If a duration and 
 1613.95 -	an end date are both specified, the end date takes precedence. */
 1613.96 -	TVersitDateTime* iEndDate;
 1613.97 -	};
 1613.98 -
 1613.99 -//
1613.100 -// CVersitRecurrenceDaily
1613.101 -//
1613.102 -class CVersitRecurrenceDaily : public CVersitRecurrence
1613.103 -/** Defines when a 'daily' recurrence is to be repeated.
1613.104 -
1613.105 -Used by a repeating event (a vCalendar event or to-do) to define when it is 
1613.106 -to occur. The days on which the event occurs are identified by the number 
1613.107 -of days between repeats, e.g. every third day.
1613.108 -
1613.109 -A pointer to this object may be owned by a CParserPropertyValueRecurrence 
1613.110 -object. 
1613.111 -@publishedAll
1613.112 -@released
1613.113 -*/
1613.114 -	{
1613.115 -public:
1613.116 -	IMPORT_C CVersitRecurrenceDaily(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate);
1613.117 -public: //from CVersitRecurrence
1613.118 -	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& /*aStream*/) const;
1613.119 -	};
1613.120 -
1613.121 -//
1613.122 -//	CVersitRecurrenceWeekly
1613.123 -//
1613.124 -class CVersitRecurrenceWeekly : public CVersitRecurrence
1613.125 -/** Defines a list of days when a 'weekly' recurrence is to be 
1613.126 -repeated.
1613.127 -
1613.128 -Used by a repeating event (a vCalendar event or to-do) to define when it is 
1613.129 -to occur. The days on which the event occurs are identified by the number 
1613.130 -of weeks between repeats and the day(s) of the week on which the event occurs, 
1613.131 -e.g. on Monday every other week.
1613.132 -
1613.133 -A pointer to this object may be owned by a CParserPropertyValueRecurrence 
1613.134 -object. 
1613.135 -@publishedAll
1613.136 -@released
1613.137 -*/
1613.138 -	{
1613.139 -public:
1613.140 -	IMPORT_C CVersitRecurrenceWeekly(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CWeekDayArray* aArrayOfWeekDayOccurrences);
1613.141 -	IMPORT_C ~CVersitRecurrenceWeekly();
1613.142 -public: //from CVersitRecurrence
1613.143 -	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
1613.144 -public:
1613.145 -	CWeekDayArray* iArrayOfWeekDayOccurrences;		//Mon-Sun
1613.146 -	};
1613.147 -
1613.148 -//
1613.149 -// CVersitRecurrenceMonthlyByPos
1613.150 -//
1613.151 -class CVersitRecurrenceMonthlyByPos : public CVersitRecurrence
1613.152 -/** Defines a list of days when a 'monthly by position' recurrence 
1613.153 -is to be repeated.
1613.154 -
1613.155 -Used by a repeating event (a vCalendar event or to-do) to define when it is 
1613.156 -to occur.
1613.157 -
1613.158 -The days on which the event occurs are identified by their relative position 
1613.159 -within the month, for example the second Monday or the last Friday.
1613.160 -
1613.161 -A pointer to this object may be owned by a CParserPropertyValueRecurrence 
1613.162 -object
1613.163 -
1613.164 -Note: The CMonthPosition class, defined within this class, is used to 
1613.165 -define the positions of days within the month. 
1613.166 -@publishedAll
1613.167 -@released
1613.168 -*/
1613.169 -	{
1613.170 -public:
1613.171 -	class CMonthPosition : public CBase
1613.172 -	/** Defines a week within the month, using the numeric occurrence of the week 
1613.173 -	(between 1 and 5 inclusive) counting from either the start or end of the month, 
1613.174 -	and defines an array of days within this week. 
1613.175 -	@publishedAll
1613.176 -	@released
1613.177 -	*/
1613.178 -		{
1613.179 -	public:
1613.180 -		IMPORT_C ~CMonthPosition();
1613.181 -	public:
1613.182 -		/** Flags that define whether the week number is counted from the start or end of the month. 
1613.183 -		@publishedAll
1613.184 -		@released */
1613.185 -		enum TSign 
1613.186 -				{
1613.187 -				/** Indicates that the iWeekNo member specifies a number counting forwards 
1613.188 -				from the start of the month. */
1613.189 -				EWeeksFromStartOfMonth,
1613.190 -				/** Indicates that the iWeekNo member specifies a number counting backwards from 
1613.191 -				the end of the month. */
1613.192 -				EWeeksFromEndOfMonth
1613.193 -				};
1613.194 -	public:
1613.195 -		/** Indicates whether the week number iWeekNo is counted from the start or the 
1613.196 -		end of the month. A plus sign denotes from the start of the month and a minus 
1613.197 -		sign denotes from the end. */
1613.198 -		TSign iSign;
1613.199 -		/** A week number within the month, between 1 and 5 inclusive. */
1613.200 -		TInt iWeekNo;
1613.201 -		/** Pointer to an array of week days. */
1613.202 -		CWeekDayArray* iArrayOfWeekDays;
1613.203 -		};
1613.204 -	IMPORT_C CVersitRecurrenceMonthlyByPos(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CArrayPtrFlat<CMonthPosition>* aMonthPositions);
1613.205 -	IMPORT_C ~CVersitRecurrenceMonthlyByPos();
1613.206 -public: //framework
1613.207 -	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
1613.208 -public:
1613.209 -	/** Array of 'month positions' which define the days on which the event occurs. */
1613.210 -	CArrayPtrFlat<CMonthPosition>* iMonthPositions;
1613.211 -	};
1613.212 -
1613.213 -//
1613.214 -// CVersitRecurrenceMonthlyByDay
1613.215 -//
1613.216 -class CVersitRecurrenceMonthlyByDay : public CVersitRecurrence
1613.217 -/** Defines a list of days when a 'monthly by day' recurrence 
1613.218 -is to repeat.
1613.219 -
1613.220 -Used by a repeating event (a vCalendar event or to-do) to define when it is 
1613.221 -to occur.
1613.222 -
1613.223 -The days on which the event occurs are identified by a number, counting 
1613.224 -either from the start or the end of the month.
1613.225 -
1613.226 -A pointer to this object may be owned by a CParserPropertyValueRecurrence 
1613.227 -object. 
1613.228 -@publishedAll
1613.229 -@released
1613.230 -*/
1613.231 -	{
1613.232 -public:
1613.233 -	IMPORT_C CVersitRecurrenceMonthlyByDay(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,	CArrayFix<TInt>* aArrayOfOccurrencesInDaysFromStartOfMonth
1613.234 -		,CArrayFix<TInt>* aArrayOfOccurrencesInDaysFromEndOfMonth,TBool aLastDay);
1613.235 -	IMPORT_C ~CVersitRecurrenceMonthlyByDay();
1613.236 -public: //framework
1613.237 -	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
1613.238 -public:
1613.239 -	/** Array of days, counting from the start of the month, on which the event occurs. */
1613.240 -	CArrayFix<TInt>* iArrayOfOccurrencesInDaysFromStartOfMonth; //1-31
1613.241 -	/** Array of days, counting from the end of the month, on which the event occurs. */
1613.242 -	CArrayFix<TInt>* iArrayOfOccurrencesInDaysFromEndOfMonth; //1-31
1613.243 -	/** Identifies whether the event occurs on the last day of the month. */
1613.244 -	TBool iLastDay;
1613.245 -	};
1613.246 -
1613.247 -//
1613.248 -// CVersitRecurrenceYearlyByMonth
1613.249 -//
1613.250 -class CVersitRecurrenceYearlyByMonth : public CVersitRecurrence
1613.251 -/** Defines a list of months when a 'yearly by month' recurrence 
1613.252 -is to repeat.
1613.253 -
1613.254 -Used by a repeating event (a vCalendar event or to-do) to define the months  
1613.255 -in which it is to occur. The months on which the event occurs are identified 
1613.256 -by their number in the year (between 1 and 12 inclusive).
1613.257 -
1613.258 -A pointer to this object may be owned by a CParserPropertyValueRecurrence 
1613.259 -object. 
1613.260 -@publishedAll
1613.261 -@released
1613.262 -*/
1613.263 -	{
1613.264 -public:
1613.265 -	IMPORT_C CVersitRecurrenceYearlyByMonth(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CArrayFix<TMonth>* aArrayOfMonthsInYearOccurrences);
1613.266 -	IMPORT_C ~CVersitRecurrenceYearlyByMonth();
1613.267 -public: //framework
1613.268 -	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
1613.269 -public:
1613.270 -	/** Pointer to an array of month values. */
1613.271 -	CArrayFix<TMonth>* iArrayOfMonthsInYearOccurrences; //Jan-Dec
1613.272 -	};
1613.273 -
1613.274 -//
1613.275 -// CVersitRecurrenceYearlyByDay
1613.276 -//
1613.277 -class CVersitRecurrenceYearlyByDay : public CVersitRecurrence
1613.278 -/** Defines a list of days when a 'yearly by day' recurrence is 
1613.279 -to be repeated.
1613.280 -
1613.281 -Used by a repeating event (a vCalendar event or to-do) to define when it is 
1613.282 -to occur.
1613.283 -
1613.284 -The days on which the repeat occurs are identified by their day number in 
1613.285 -the year (between 1 and 366 inclusive).
1613.286 -
1613.287 -A pointer to this object may be owned by a CParserPropertyValueRecurrence 
1613.288 -object. 
1613.289 -@publishedAll
1613.290 -@released
1613.291 -*/
1613.292 -	{
1613.293 -public:
1613.294 -	IMPORT_C CVersitRecurrenceYearlyByDay(TInt aInterval,TInt aDuration,TVersitDateTime* aEndDate,CArrayFix<TInt>* aArrayOfDaysInYearOccurrences);
1613.295 -	IMPORT_C ~CVersitRecurrenceYearlyByDay();
1613.296 -public: //framework
1613.297 -	IMPORT_C void ExternalizeOccurrenceListsL(RWriteStream& aStream) const;
1613.298 -public:
1613.299 -	/** Pointer to an array of integers between 1 and 366 inclusive. 
1613.300 -	
1613.301 -	Each integer represents a day on which the repeat event occurs. */
1613.302 -	CArrayFix<TInt>* iArrayOfDaysInYearOccurrences; 
1613.303 -	};
1613.304 -
1613.305 -//
1613.306 -// CParserPropertyValueRecurrence
1613.307 -//
1613.308 -class CParserPropertyValueRecurrence : public CParserTimePropertyValue
1613.309 -/** A recurrence property value parser.
1613.310 -
1613.311 -This is used to store and retrieve the recurrence information for a repeating 
1613.312 -vEvent or vTodo. This information is stored as a CVersitRecurrence object.
1613.313 -
1613.314 -The UID for a recurrence property value is KVCalPropertyRecurrenceUid. 
1613.315 -@publishedAll
1613.316 -@released
1613.317 -*/
1613.318 -	{
1613.319 -public:
1613.320 -	IMPORT_C CParserPropertyValueRecurrence(CVersitRecurrence* aValue);
1613.321 -	IMPORT_C ~CParserPropertyValueRecurrence();
1613.322 -	inline CVersitRecurrence* Value() const;
1613.323 -public: // from CParserTimePropertyValue
1613.324 -	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
1613.325 -	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
1613.326 -public: // from CParserPropertyValue
1613.327 -	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& /*aEncodingCharset*/,TInt /*aLengthOutput*/);
1613.328 -protected:
1613.329 -	CVersitRecurrence* iValue;
1613.330 -	};
1613.331 -
1613.332 -//
1613.333 -// CRecurrenceParser
1613.334 -//
1613.335 -class CRecurrenceParser : public CVersitParser
1613.336 -/** Base class used in the derivation of CParserVCalEntity.
1613.337 -
1613.338 -Provides recurrence functionality for vEvents and vToDos in vCalendars. 
1613.339 -@publishedAll
1613.340 -@released
1613.341 -*/
1613.342 -	{
1613.343 -public:
1613.344 -	IMPORT_C CRecurrenceParser(TBool aHasVersion);
1613.345 -	IMPORT_C CParserPropertyValue* MakePropertyValueRecurrenceL(TDes& aRecurringEntity);
1613.346 -private:	
1613.347 -	static void ResetAndDestroyArrayOfMonthPositions(TAny* aObject);	
1613.348 -	void GetFrequencyAndIntervalL(CVersitRecurrence::TType& aFrequency,TInt& aInterval, const TDesC& aRecurrenceType);
1613.349 -	CVersitRecurrence* GetFrequencyModifiersL(const CVersitRecurrence::TType& aRepeatType,TInt aInterval, const TDesC& aListDates);
1613.350 -	CWeekDayArray* GetListOfWeekDayOccurrencesL(const TDesC& aListDays);
1613.351 -private: // from CVersitParser
1613.352 -	IMPORT_C virtual void Reserved1();
1613.353 -	IMPORT_C virtual void Reserved2();
1613.354 -	};
1613.355 -
1613.356 -#include <vrecur.inl>
1613.357 -
1613.358 -#endif
  1614.1 --- a/epoc32/include/vrecur.inl	Tue Mar 16 16:12:26 2010 +0000
  1614.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1614.3 @@ -1,22 +0,0 @@
  1614.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1614.5 -// All rights reserved.
  1614.6 -// This component and the accompanying materials are made available
  1614.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1614.8 -// which accompanies this distribution, and is available
  1614.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1614.10 -//
 1614.11 -// Initial Contributors:
 1614.12 -// Nokia Corporation - initial contribution.
 1614.13 -//
 1614.14 -// Contributors:
 1614.15 -//
 1614.16 -// Description:
 1614.17 -// CParserPropertyValueRecurrence
 1614.18 -// 
 1614.19 -//
 1614.20 -
 1614.21 -inline CVersitRecurrence* CParserPropertyValueRecurrence::Value() const
 1614.22 -/** Gets the recurrence value.
 1614.23 -
 1614.24 -@return A pointer to the recurrence value. */
 1614.25 -	{return iValue;}
  1615.1 --- a/epoc32/include/vstaticutils.h	Tue Mar 16 16:12:26 2010 +0000
  1615.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1615.3 @@ -1,86 +0,0 @@
  1615.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1615.5 -// All rights reserved.
  1615.6 -// This component and the accompanying materials are made available
  1615.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1615.8 -// which accompanies this distribution, and is available
  1615.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1615.10 -//
 1615.11 -// Initial Contributors:
 1615.12 -// Nokia Corporation - initial contribution.
 1615.13 -//
 1615.14 -// Contributors:
 1615.15 -//
 1615.16 -// Description:
 1615.17 -//
 1615.18 -
 1615.19 -#ifndef __VSTATICUTILS_H__
 1615.20 -#define __VSTATICUTILS_H__
 1615.21 -
 1615.22 -// System includes
 1615.23 -#include <e32base.h>
 1615.24 -
 1615.25 -// User includes
 1615.26 -#include <versit.h>
 1615.27 -
 1615.28 -// Classes referenced
 1615.29 -class CVersitAdditionalPropertyStorage;
 1615.30 -
 1615.31 -class VersitUtils
 1615.32 -/** A utility class which provides functions for handling character set conversions, 
 1615.33 -and for the parsing of character strings. 
 1615.34 -@publishedAll
 1615.35 -@released
 1615.36 -*/
 1615.37 -	{
 1615.38 -public:
 1615.39 -	IMPORT_C static TBool EightBitEncoding(Versit::TVersitCharSet aCharSet);
 1615.40 -	IMPORT_C static TBool EightBitEncoding(TUint aCharSetId);
 1615.41 -	IMPORT_C static TUid ConArcEncodingUid(Versit::TVersitEncoding aEncoding);
 1615.42 -	IMPORT_C static const TDesC8& IANACharacterSetName(Versit::TVersitCharSet aCharSet);
 1615.43 -	IMPORT_C static const TDesC8& IANAEncodingName(Versit::TVersitEncoding aEncoding);
 1615.44 -	IMPORT_C static TUid CharConvCharSetUid(Versit::TVersitCharSet aVersitSet);
 1615.45 -	static Versit::TVersitCharSet CharSet(TUint aCharConvCharSetUid);
 1615.46 -	IMPORT_C static TBool DescriptorContainsOnlySevenBitCharacters(const TDesC& aText);
 1615.47 -	IMPORT_C static TBool RequiresEncoding(const TDesC& aText);
 1615.48 -	IMPORT_C static void UncodeToNarrowL(const TDesC& aUnicode, TDes8& aNarrow, const Versit::TEncodingAndCharset& aEncodingCharset);
 1615.49 -	IMPORT_C static void AddEscapedString(TDes& aDestination,const TDesC& aTextToEscape,Versit::TVersitCharSet aCharSet);
 1615.50 -	IMPORT_C static void AddEscapedString(TDes& aDestination,const TDesC& aTextToEscape,TUint aCharSetId);
 1615.51 -	IMPORT_C static void ConArcEncodeL(RReadStream& aSource, CBufBase& aTarget, TUid aConArcEncodingUid);
 1615.52 -	IMPORT_C static void WrapLinesL(CBufBase& aBuffer, TInt aMaxLineLength);
 1615.53 -	IMPORT_C static TBool CheckAndIgnoreCustomErrorL(TInt aError); 
 1615.54 -	IMPORT_C static void RemoveEscapeChars(TPtr8& aText);
 1615.55 -	IMPORT_C static void RemoveEscapeChars(HBufC16& aText);
 1615.56 -	IMPORT_C static void RemoveEscapeChars(HBufC16& aText, TUint aCharSetUid);
 1615.57 -	IMPORT_C static void RemoveEscapeChars(TPtr16& aText, TUint aCharSetUid);
 1615.58 -	IMPORT_C static TBool IsNoneWhiteSpaceChar(const TDesC8& aString);
 1615.59 -	IMPORT_C static void StripWhiteSpace(TPtr8& aString);
 1615.60 -	IMPORT_C static void StripWhiteSpace(TPtr16& aString);
 1615.61 -	static inline TBool IsWhiteSpace(TUint aChar);
 1615.62 -	static inline TBool IsBeginOrEnd(TUid aUid);
 1615.63 -	IMPORT_C static TBool IsNoneWhiteSpaceWideChar(const TDesC16& aString);
 1615.64 -    IMPORT_C static CDesCArray* ParseForArrayPropertiesL(TPtr16 aStringValue, TUint aLineCharacterSetId);
 1615.65 -    //
 1615.66 -    IMPORT_C static void AllocateAdditionalPropertyStorageL(CVersitTlsData& aTlsData, CParserProperty& aProperty, TPtr16& aStringValue, TUint aLineCharacterSetId);
 1615.67 -    IMPORT_C static void FreeAdditionalPropertyStorageL(const CParserProperty& aProperty);
 1615.68 -    IMPORT_C static CParserPropertyValue* AdditionalPropertyValueFromStorageL(const CParserProperty& aProperty);
 1615.69 -
 1615.70 -private:
 1615.71 -	static void AddEscapedString(TBool aIsShiftJis,TDes& aDestination,const TDesC& aTextToEscape);
 1615.72 -	static const TDesC &VersitUtils::EscapeChar(TBool aIsShiftJis);
 1615.73 -	};
 1615.74 -
 1615.75 -inline TBool VersitUtils::IsWhiteSpace(TUint aChar)
 1615.76 -/** Tests whether the specified character is white space 
 1615.77 -(either a tab or a space character).
 1615.78 -
 1615.79 -@param aChar The character to test.
 1615.80 -@return ETrue if the character is white space, otherwise EFalse. */
 1615.81 -	{return (aChar==CVersitParser::ESpace || aChar==CVersitParser::EHTab);}
 1615.82 -inline TBool VersitUtils::IsBeginOrEnd(TUid aUid)
 1615.83 -/** Tests whether the specified UID is the Versit Begin or End UID (KVersitTokenBeginUid 
 1615.84 -or KVersitTokenEndUid).
 1615.85 -
 1615.86 -@param aUid The UID to test.
 1615.87 -@return ETrue if the UID is the Begin or End UID, otherwise EFalse. */
 1615.88 -	{return (aUid.iUid==KVersitTokenBeginUid || aUid.iUid==KVersitTokenEndUid);}
 1615.89 -#endif
  1616.1 --- a/epoc32/include/vtoken.h	Tue Mar 16 16:12:26 2010 +0000
  1616.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1616.3 @@ -1,366 +0,0 @@
  1616.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1616.5 -// All rights reserved.
  1616.6 -// This component and the accompanying materials are made available
  1616.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1616.8 -// which accompanies this distribution, and is available
  1616.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1616.10 -//
 1616.11 -// Initial Contributors:
 1616.12 -// Nokia Corporation - initial contribution.
 1616.13 -//
 1616.14 -// Contributors:
 1616.15 -//
 1616.16 -// Description:
 1616.17 -//
 1616.18 -
 1616.19 -
 1616.20 -
 1616.21 -/**
 1616.22 - @file
 1616.23 - @publishedAll
 1616.24 - @released 
 1616.25 -*/
 1616.26 - 
 1616.27 -#ifndef __VTOKEN_H__
 1616.28 -#define __VTOKEN_H__
 1616.29 -
 1616.30 -#include <e32base.h>
 1616.31 -
 1616.32 -#define KMaxExternalizedTokenLength			70
 1616.33 -#define KMinLineLengthToWriteTo				1
 1616.34 -
 1616.35 -/** A colon string. */
 1616.36 -_LIT8(KVersitTokenColon,					":");
 1616.37 -/** A Unicode colon string. */
 1616.38 -_LIT(KVersitTokenColonUnicode,				":");
 1616.39 -/** A semi-colon string. */
 1616.40 -_LIT8(KVersitTokenSemiColon,				";");
 1616.41 -/** A Unicode semi-colon string. */
 1616.42 -_LIT(KVersitTokenSemiColonUnicode,			";");
 1616.43 -/** A backslash string (escaped). */
 1616.44 -_LIT8(KVersitBackSlash,						"\\");
 1616.45 -/** An escaped semi-colon string. */
 1616.46 -_LIT8(KVersitEscapedSemiColon,				"\\;");
 1616.47 -/** An escaped Unicode semi-colon string. */
 1616.48 -_LIT(KVersitEscapedSemiColonUnicode,		"\\;");
 1616.49 -/** An equals sign string. */
 1616.50 -_LIT8(KVersitTokenEquals,					"=");
 1616.51 -/** A full stop string. */
 1616.52 -_LIT8(KVersitTokenPeriod,					".");
 1616.53 -/** A space string. */
 1616.54 -_LIT8(KVersitTokenSpace,					" ");
 1616.55 -/** A minus sign string. */
 1616.56 -_LIT8(KVersitTokenMinus,					"-");
 1616.57 -/** A plus sign string. */
 1616.58 -_LIT8(KVersitTokenPlus,						"+");
 1616.59 -/** A line break string. */
 1616.60 -_LIT8(KVersitLineBreak,						"\r\n  ");
 1616.61 -/** The string used at the start of a time interval string. */
 1616.62 -_LIT8(KVersitTimePeriodBegin,				"P");
 1616.63 -/** The string appended to the number of years when encoding a time interval. */
 1616.64 -_LIT8(KVersitTimePeriodYear,				"Y");
 1616.65 -/** The string appended to the number of months when encoding a time interval. */
 1616.66 -_LIT8(KVersitTimePeriodMonth,				"M");
 1616.67 -/** Not used. */
 1616.68 -_LIT8(KVersitTimePeriodWeek,				"W");		//unused
 1616.69 -/** The string appended to the number of days when encoding a time interval. */
 1616.70 -_LIT8(KVersitTimePeriodDay,					"D");
 1616.71 -/** The string added before the time of day when encoding a Versit date/time.
 1616.72 -
 1616.73 -Also the string added before the time of day when encoding a time interval. */
 1616.74 -_LIT8(KVersitTimePeriodTime,				"T");
 1616.75 -/** The string appended to the hour value when encoding a time interval. */
 1616.76 -_LIT8(KVersitTimePeriodHour,				"H");
 1616.77 -/** The string appended to the minutes value when encoding a time interval. */
 1616.78 -_LIT8(KVersitTimePeriodMinute,				"M");
 1616.79 -/** The string appended to the seconds value when encoding a time interval. */
 1616.80 -_LIT8(KVersitTimePeriodSecond,				"S");
 1616.81 -/**  The string appended to a date/time when encoding a Versit 
 1616.82 -date/time, if the value is in universal time. */
 1616.83 -_LIT8(KVersitTokenUniversalTime,			"Z");
 1616.84 -
 1616.85 -/** A colon character. */
 1616.86 -const TUint KVersitTokenColonVal			=':';
 1616.87 -/** A semi-colon character. */
 1616.88 -const TUint KVersitTokenSemiColonVal		=';';
 1616.89 -/** A backslash character. */
 1616.90 -const TUint KVersitTokenBackslashVal		='\\';
 1616.91 -/** An equals sign character. */
 1616.92 -const TUint KVersitTokenEqualsVal			='=';
 1616.93 -/** A full stop character. */
 1616.94 -const TUint KVersitTokenPeriodVal			='.';
 1616.95 -/** A comma character. */
 1616.96 -const TUint KVersitTokenCommaVal			=',';
 1616.97 -/** A left square bracket character. */
 1616.98 -const TUint KVersitTokenLSquareBracketVal	='[';
 1616.99 -/** A right square bracket character. */
1616.100 -const TUint KVersitTokenRSquareBracketVal	=']';
1616.101 -/** A minus sign character. */
1616.102 -const TUint KVersitTokenMinusVal			='-';
1616.103 -/** A plus sign character. */
1616.104 -const TUint KVersitTokenPlusVal				='+';
1616.105 -/** A Yen character: the escape character for the 'ShiftJis' character set. */
1616.106 -const TUint KVersitTokenYenVal				=0xa5;
1616.107 -/** The character at the beginning of a time interval string. */
1616.108 -const TUint KVersitTimePeriodBeginVal		='P';
1616.109 -/** The character following the number of years in a time interval string. */
1616.110 -const TUint KVersitTimePeriodYearVal		='Y';
1616.111 -/** The character following the number of months in a time interval string. */
1616.112 -const TUint KVersitTimePeriodMonthVal		='M';
1616.113 -/** The character following the number of weeks in a time interval string. */
1616.114 -const TUint KVersitTimePeriodWeekVal		='W';
1616.115 -/** The character following the number of days in a time interval string. */
1616.116 -const TUint KVersitTimePeriodDayVal			='D';
1616.117 -/** The character preceding a length of day (hours,minutes and seconds) in a time 
1616.118 -interval string.
1616.119 -
1616.120 -Also the character preceding the time of day in a date/time string. */
1616.121 -const TUint KVersitTimePeriodTimeVal		='T';
1616.122 -/** The character following the number of hours in a time interval string. */
1616.123 -const TUint KVersitTimePeriodHourVal		='H';
1616.124 -/** The character following the number of minutes in a time interval string. */
1616.125 -const TUint KVersitTimePeriodMinuteVal		='M';
1616.126 -/** The character following the number of seconds in a time interval string. */
1616.127 -const TUint KVersitTimePeriodSecondVal		='S';
1616.128 -/** The character at the end of a universal date/time string. */
1616.129 -const TUint KVersitTokenUniversalTimeVal	='Z';
1616.130 -/** The character at the start of a daily recurring entity string. */
1616.131 -const TUint KVersitRecurrenceDailyVal		='D';
1616.132 -/** The character at the start of a weekly recurring entity string. */
1616.133 -const TUint KVersitRecurrenceWeeklyVal		='W';
1616.134 -/** The character which precedes the number of recurrences, when specified, in 
1616.135 -a recurring entity. */
1616.136 -const TUint KVersitRecurrenceNumberOfVal	='#';
1616.137 -/** The string at the beginning of a 'monthly by position' recurring entity 
1616.138 -(see CVersitRecurrenceMonthlyByPos). Used when internalising. */
1616.139 -_LIT(KVersitRecurrenceMonthlyByPos,		"MP");
1616.140 -/** Not used. */
1616.141 -_LIT(KVersitRecurrenceMonthlyByDay,		"MD");
1616.142 -/** Not used. */
1616.143 -_LIT(KVersitRecurrenceYearlyByMonth,		"YM");
1616.144 -/** The string at the beginning of a 'yearly by day' recurring entity, 
1616.145 -(see CVersitRecurrenceYearlyByDay). Used when internalising. */
1616.146 -_LIT(KVersitRecurrenceYearlyByDay,			"YD");
1616.147 -/** A string in the date list (if a date list is defined) of an entity 
1616.148 -that recurs either weekly or 'monthly by position' on Mondays. Used when 
1616.149 -internalising. */
1616.150 -_LIT(KVersitRecurrenceMonday,				"MO");
1616.151 -/** A string in the date list (if a date list is defined) of an entity 
1616.152 -that recurs either weekly or 'monthly by position' on Tuesdays. Used when internalising. */
1616.153 -_LIT(KVersitRecurrenceTuesday,				"TU");
1616.154 -/** A string in the date list (if a date list is defined) of an entity 
1616.155 -that recurs either weekly or 'monthly by position' on Wednesdays. Used when internalising. */
1616.156 -_LIT(KVersitRecurrenceWednesday,			"WE");
1616.157 -/** A string in the date list (if a date list is defined) of an entity that 
1616.158 -recurs either weekly or 'monthly by position' on Thursdays. Used when internalising. */
1616.159 -_LIT(KVersitRecurrenceThursday,				"TH");
1616.160 -/** A string in the date list (if a date list is defined) of an entity that 
1616.161 -recurs either weekly or 'monthly by position' on Fridays. Used when internalising. */
1616.162 -_LIT(KVersitRecurrenceFriday,				"FR");
1616.163 -/** A string in the date list (if a date list is defined) of an entity that 
1616.164 -recurs either weekly or 'monthly by position' on Saturdays. Used when internalising. */
1616.165 -_LIT(KVersitRecurrenceSaturday,				"SA");
1616.166 -/** A string in the date list (if a date list is defined) of an entity that 
1616.167 -recurs either weekly or 'monthly by position' on Sundays. Used when internalising. */
1616.168 -_LIT(KVersitRecurrenceSunday,				"SU");
1616.169 -/** The string appended to the 'occurrence list' section of an entity that 
1616.170 -recurs on the last day of the month. Used when internalising. */
1616.171 -_LIT(KVersitRecurrenceLastDay,				"LD");
1616.172 -
1616.173 -/** The string used at the start of a daily recurring entity. */
1616.174 -_LIT8(KVersitRecurrenceDaily,				"D");
1616.175 -/** The string used at the start of a weekly recurring entity. */
1616.176 -_LIT8(KVersitRecurrenceWeekly,				"W");
1616.177 -/** The string appended just before the number of occurrences, when encoding a recurring 
1616.178 -entity as a descriptor. */
1616.179 -_LIT8(KVersitRecurrenceNumberOf,			"#");
1616.180 -/** The string used at the start of a 'monthly by position' recurring entity, 
1616.181 -(see CVersitRecurrenceMonthlyByPos). Used when externalising. */
1616.182 -_LIT8(KVersitRecurrenceMonthlyByPos8,		"MP");
1616.183 -/** Not used. */
1616.184 -_LIT8(KVersitRecurrenceMonthlyByDay8,		"MD");
1616.185 -/** Not used. */
1616.186 -_LIT8(KVersitRecurrenceYearlyByMonth8,		"YM");
1616.187 -/** The string used at the start of a 'yearly by day' recurring entity, 
1616.188 -(see CVersitRecurrenceYearlyByDay). Used when externalising. */
1616.189 -_LIT8(KVersitRecurrenceYearlyByDay8,			"YD");
1616.190 -/** The string appended to the 'occurrence list' section of an entity that recurs on Mondays. 
1616.191 -Used when externalising. */
1616.192 -_LIT8(KVersitRecurrenceMonday8,				"MO");
1616.193 -/** The string appended to the 'occurrence list' section of an entity that recurs on Tuesdays. 
1616.194 -Used when externalising. */
1616.195 -_LIT8(KVersitRecurrenceTuesday8,				"TU");
1616.196 -/** The string appended to the 'occurrence list' section of an entity that recurs on Wednesdays. 
1616.197 -Used when externalising. */
1616.198 -_LIT8(KVersitRecurrenceWednesday8,			"WE");
1616.199 -/** The string appended to the 'occurrence list' section of an entity that recurs on Thursdays. 
1616.200 -Used when externalising. */
1616.201 -_LIT8(KVersitRecurrenceThursday8,				"TH");
1616.202 -/** The string appended to the 'occurrence list' section of an entity that recurs on Fridays. 
1616.203 -Used when externalising. */
1616.204 -_LIT8(KVersitRecurrenceFriday8,				"FR");
1616.205 -/** The string appended to the 'occurrence list' section of an entity that recurs on Saturdays. 
1616.206 -Used when externalising. */
1616.207 -_LIT8(KVersitRecurrenceSaturday8,				"SA");
1616.208 -/** The string appended to the 'occurrence list' section of an entity that recurs on Sundays. 
1616.209 -Used when externalising. */
1616.210 -_LIT8(KVersitRecurrenceSunday8,				"SU");
1616.211 -/** The string appended to the 'occurrence list' section of an entity that recurs on the last day of 
1616.212 -the month. Used when externalising. */
1616.213 -_LIT8(KVersitRecurrenceLastDay8,				"LD");
1616.214 -/** The string at the start of an entity encoded in a stream. 
1616.215 -
1616.216 -This is implemented as the name of a property, but this property is not stored in the entity's array 
1616.217 -of properties. */
1616.218 -_LIT8(KVersitTokenBEGIN,					"BEGIN");
1616.219 -/** The string at the start of an agent vCard entity encoded in a stream. 
1616.220 -
1616.221 -The reason for needing a Unicode version, is that the agent vCard is held in a 
1616.222 -property value in the parent vCard, and all property values are converted 
1616.223 -to Unicode when they are internalised, in order to make them character set-independent. 
1616.224 -
1616.225 -This is implemented as the name of a property, but this property is not stored in the 
1616.226 -entity's array of properties. */
1616.227 -_LIT(KVersitVarTokenBEGIN,					"BEGIN");
1616.228 -/** The string which follows the body of data of a vCard/vCalendar encoded in a stream. 
1616.229 -It is followed only by the entity name. 
1616.230 -
1616.231 -This is implemented as the name of a property, but this property is not stored in the 
1616.232 -entity's array of properties. */
1616.233 -_LIT8(KVersitTokenEND,						"END");
1616.234 -/** A carriage return and line feed */
1616.235 -_LIT8(KVersitTokenCRLF,						"\r\n"); // carriage return, line feed
1616.236 -/** A boolean true value. Not used. */
1616.237 -_LIT8(KVersitTokenTRUE,						"TRUE");
1616.238 -/** A boolean true value. */
1616.239 -_LIT(KVersitVarTokenTRUE,					"TRUE");
1616.240 -/** A boolean false value. Not used. */
1616.241 -_LIT8(KVersitTokenFALSE,					"FALSE");
1616.242 -/** A boolean false value. */
1616.243 -_LIT(KVersitVarTokenFALSE,					"FALSE");
1616.244 -/** The symbol added to the beginning of an unrecognised property name while 
1616.245 -internalising from a stream. */
1616.246 -_LIT8(KVersitTokenXDashEPOC,				"X-EPOC");
1616.247 -_LIT8(KVersitTokenXDash,					"X-");
1616.248 -/** An empty string. */
1616.249 -_LIT8(KVersitTokenEmptyNarrow,				"");
1616.250 -/** An empty string. */
1616.251 -_LIT(KVersitTokenEmpty,						"");
1616.252 -
1616.253 -//The following names should not be used, versit now uses CharConv character set names.
1616.254 -// params
1616.255 -_LIT8(KVersitTokenENCODING,					"ENCODING");
1616.256 -_LIT8(KVersitTokenBASE64,					"BASE64");
1616.257 -_LIT8(KVersitTokenQUOTEDPRINTABLE,			"QUOTED-PRINTABLE");
1616.258 -_LIT8(KVersitToken8BIT,						"8-BIT");
1616.259 -_LIT8(KVersitTokenCHARSET,					"CHARSET");
1616.260 -_LIT8(KVersitTokenUTF8,						"UTF-8");
1616.261 -_LIT8(KVersitTokenUTF7,						"UTF-7");
1616.262 -_LIT8(KVersitTokenISO1,						"ISO-8859-1");
1616.263 -_LIT8(KVersitTokenISO2,						"ISO-8859-2");
1616.264 -_LIT8(KVersitTokenISO4,						"ISO-8859-4");
1616.265 -_LIT8(KVersitTokenISO5,						"ISO-8859-5");
1616.266 -_LIT8(KVersitTokenISO7,						"ISO-8859-7");
1616.267 -_LIT8(KVersitTokenISO9,						"ISO-8859-9");
1616.268 -_LIT8(KVersitTokenTYPE,						"TYPE");	//used for photo format type 
1616.269 -
1616.270 -// parameters for the X-EPOCALARM 
1616.271 -_LIT8(KVersitTokenVALUE,					"VALUE");
1616.272 -_LIT8(KVersitTokenCONTENTTYPE,				"X-CONTENTTYPE");
1616.273 -_LIT8(KVersitTokenINLINE, 					"INLINE");
1616.274 -_LIT8(KVersitTokenBINARY, 					"BINARY");
1616.275 -
1616.276 -// additional character sets
1616.277 -_LIT8(KVersitTokenISO3,						"ISO-8859-3");
1616.278 -_LIT8(KVersitTokenISO10,					"ISO-8859-10");
1616.279 -_LIT8(KVersitTokenShiftJIS,					"SHIFT_JIS");
1616.280 -_LIT8(KVersitTokenGB2312,					"GB 2312-80");		//This and the following contain the wrong name.
1616.281 -_LIT8(KVersitTokenGBK,						"GBK");
1616.282 -_LIT8(KVersitTokenBIG5,						"BIG5 level 1 and 2");
1616.283 -_LIT8(KVersitTokenISO2022JP,				"ISO 2022-JP");
1616.284 -_LIT8(KVersitTokenEUCJP,					"EUC-JP");
1616.285 -_LIT8(KVersitTokenJIS,						"JIS");
1616.286 -
1616.287 -
1616.288 -// entities
1616.289 -_LIT8(KVersitTokenVCALENDAR,				"VCALENDAR");
1616.290 -_LIT8(KVersitTokenVCARD,					"VCARD");
1616.291 -_LIT(KVersitVarTokenVCALENDAR,				"VCALENDAR");
1616.292 -_LIT(KVersitVarTokenVCARD,					"VCARD");
1616.293 -_LIT(KVersitVarTokenVEVENT,					"VEVENT");
1616.294 -_LIT(KVersitVarTokenVTODO,					"VTODO");
1616.295 -
1616.296 -// properties
1616.297 -_LIT8(KVersitTokenXALARM,					"X-EPOCALARM");
1616.298 -_LIT8(KVersitTokenAALARM,					"AALARM");
1616.299 -_LIT8(KVersitTokenDALARM,					"DALARM");
1616.300 -_LIT8(KVersitTokenPALARM,					"PALARM");
1616.301 -_LIT8(KVersitTokenMALARM,					"MALARM");
1616.302 -_LIT8(KVersitTokenDAYLIGHT,					"DAYLIGHT");
1616.303 -_LIT(KVersitVarTokenDAYLIGHT,				"DAYLIGHT");
1616.304 -_LIT8(KVersitTokenVERSION,					"VERSION");
1616.305 -_LIT8(KVersitTokenCATEGORIES,				"CATEGORIES");
1616.306 -_LIT8(KVersitTokenRESOURCES,				"RESOURCES");
1616.307 -_LIT8(KVersitTokenDCREATED,					"DCREATED");
1616.308 -_LIT8(KVersitTokenDTSTART,					"DTSTART");
1616.309 -_LIT8(KVersitTokenDTEND,					"DTEND");
1616.310 -_LIT8(KVersitTokenLASTMODIFIED,				"LAST-MODIFIED");
1616.311 -_LIT8(KVersitTokenCOMPLETED,				"COMPLETED");
1616.312 -_LIT8(KVersitTokenDUE,						"DUE");
1616.313 -_LIT8(KVersitTokenEXDATE,					"EXDATE");
1616.314 -_LIT8(KVersitTokenEXRULE,					"EXRULE");
1616.315 -_LIT8(KVersitTokenRDATE,					"RDATE");
1616.316 -_LIT8(KVersitTokenRRULE,					"RRULE");
1616.317 -_LIT8(KVersitTokenRNUM,						"RNUM");
1616.318 -_LIT8(KVersitTokenPRIORITY,					"PRIORITY");
1616.319 -_LIT8(KVersitTokenSEQUENCE,					"SEQUENCE");
1616.320 -_LIT8(KVersitTokenTRANSP,					"TRANSP");
1616.321 -_LIT8(KVersitTokenBDAY,						"BDAY");
1616.322 -_LIT8(KVersitTokenAGENT,					"AGENT");
1616.323 -_LIT8(KVersitTokenLABEL,					"LABEL");
1616.324 -_LIT8(KVersitTokenPHOTO,					"PHOTO");
1616.325 -_LIT8(KVersitTokenEMAIL,					"EMAIL");
1616.326 -_LIT8(KVersitTokenINTERNET,					"INTERNET");
1616.327 -_LIT8(KVersitTokenTITLE,					"TITLE");
1616.328 -_LIT8(KVersitTokenROLE,						"ROLE");
1616.329 -_LIT8(KVersitTokenLOGO,						"LOGO");
1616.330 -_LIT8(KVersitTokenNOTE,						"NOTE");
1616.331 -_LIT8(KVersitTokenSOUND,					"SOUND");
1616.332 -_LIT8(KVersitTokenMAILER,					"MAILER");
1616.333 -_LIT8(KVersitTokenPRODID,					"PRODID");
1616.334 -_LIT8(KVersitTokenATTACH,					"ATTACH");
1616.335 -_LIT8(KVersitTokenATTENDEE,					"ATTENDEE");
1616.336 -_LIT8(KVersitTokenCLASS,					"CLASS");
1616.337 -_LIT8(KVersitTokenDESCRIPTION,				"DESCRIPTION");
1616.338 -_LIT8(KVersitTokenLOCATION,					"LOCATION");
1616.339 -_LIT8(KVersitTokenRELATEDTO,				"RELATED-TO");
1616.340 -_LIT8(KVersitTokenSTATUS,					"STATUS");
1616.341 -_LIT8(KVersitTokenSUMMARY,					"SUMMARY");
1616.342 -_LIT8(KVersitTokenN,						"N");
1616.343 -_LIT8(KVersitTokenTZ,						"TZ");
1616.344 -_LIT8(KVersitTokenADR,						"ADR");
1616.345 -_LIT8(KVersitTokenORG,						"ORG");
1616.346 -_LIT8(KVersitTokenREV,						"REV");
1616.347 -_LIT8(KVersitTokenFN,						"FN");
1616.348 -_LIT8(KVersitTokenTEL,						"TEL");
1616.349 -_LIT8(KVersitTokenURL,						"URL");
1616.350 -_LIT8(KVersitTokenGEO,						"GEO");
1616.351 -_LIT8(KVersitTokenUID,						"UID");
1616.352 -_LIT8(KVersitTokenKEY,						"KEY");
1616.353 -_LIT8(KVersitTokenSECONDNAME,				"X-EPOCSECONDNAME");
1616.354 -_LIT8(KVersitTokenXMETHOD,					"X-METHOD");        // For Group Scheduling
1616.355 -_LIT8(KVersitTokenXRECURRENCEID,			"X-RECURRENCE-ID"); // For Group Scheduling
1616.356 -_LIT8(KVersitTokenXLOCALUID,				"X-SYMBIAN-LUID");
1616.357 -_LIT8(KVersitTokenXDTSTAMP,					"X-SYMBIAN-DTSTAMP");
1616.358 -_LIT(KVersitVarTokenINTERNET,				"INTERNET");		//Used by Jave Phone and not by versit
1616.359 -_LIT8(KVersitTokenAssistant,				"X-ASSISTANT");
1616.360 -_LIT8(KVersitTokenAssistantTel,				"X-ASSISTANT-TEL");
1616.361 -_LIT8(KVersitTokenAnniversary,				"X-ANNIVERSARY");
1616.362 -_LIT8(KVersitTokenSpouse,					"X-SPOUSE");
1616.363 -_LIT8(KVersitTokenChildren,					"X-CHILDREN");
1616.364 -_LIT8(KVersitTokenClass,					"X-CLASS");
1616.365 -_LIT8(KVersitAttachLabel, 					"X-NAME");
1616.366 -_LIT8(KVersitAttachMimeType, 				"X-FMTTYPE");
1616.367 -_LIT8(KVersitXUserIntType, 				    "X-SYMBIAN-USERINT");
1616.368 -
1616.369 -#endif
  1617.1 --- a/epoc32/include/vtzrules.h	Tue Mar 16 16:12:26 2010 +0000
  1617.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1617.3 @@ -1,187 +0,0 @@
  1617.4 -// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
  1617.5 -// All rights reserved.
  1617.6 -// This component and the accompanying materials are made available
  1617.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1617.8 -// which accompanies this distribution, and is available
  1617.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1617.10 -//
 1617.11 -// Initial Contributors:
 1617.12 -// Nokia Corporation - initial contribution.
 1617.13 -//
 1617.14 -// Contributors:
 1617.15 -//
 1617.16 -// Description:
 1617.17 -//
 1617.18 -
 1617.19 -#ifndef __VTZRULES_H__
 1617.20 -#define __VTZRULES_H__
 1617.21 -
 1617.22 -#include <e32base.h>
 1617.23 -#include <s32strm.h>
 1617.24 -#include <tzdefines.h>
 1617.25 -#include <tz.h>
 1617.26 -
 1617.27 -class CVTzActualisedRules;
 1617.28 -class TVTzActualisedRule; 
 1617.29 -
 1617.30 -const TInt KVTzRulesGranularity = 4;
 1617.31 -
 1617.32 -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 1617.33 - *	Time zone rules
 1617.34 - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 1617.35 -
 1617.36 -/**
 1617.37 -Encapsulates one time zone rule.
 1617.38 -
 1617.39 -@publishedAll
 1617.40 -@released
 1617.41 -*/
 1617.42 -class TTzRule
 1617.43 -	{
 1617.44 -public:
 1617.45 -	IMPORT_C TTzRule(TInt16 aFromYear, TInt16 aToYear, TInt16 aOldOffset, TInt16 aNewOffset, TMonth aMonth, TTzRuleDay aDayRule, 
 1617.46 -				TUint8 aDayOfMonth, TUint8 aDayOfWeek, TTzTimeReference aTimeReference, TUint16 aTimeOfChange);
 1617.47 -	IMPORT_C TTzRule();
 1617.48 -	IMPORT_C TTzRule(const TTzRule& aRule);
 1617.49 -	IMPORT_C TTzRule(TTimeWithReference aFromYear, TTimeWithReference aToYear, TInt16 aOldOffset, TInt16 aNewOffset, TMonth aMonth, TTzRuleDay aDayRule, 
 1617.50 -				TUint8 aDayOfMonth, TUint8 aDayOfWeek, TTzTimeReference aTimeReference, TUint16 aTimeOfChange);
 1617.51 -
 1617.52 -	
 1617.53 -	void ExternalizeL(RWriteStream& aStream) const;
 1617.54 -	void InternalizeL(RReadStream& aStream);		
 1617.55 -	TBool RuleApplies(const TTime& aStart, const TTime& aEnd) const;		
 1617.56 -		
 1617.57 -	IMPORT_C TVTzActualisedRule Actualise(TInt aYear) const;    // deprecated, replace by the L version
 1617.58 -	IMPORT_C TVTzActualisedRule ActualiseL(TInt aYear) const;   
 1617.59 -	
 1617.60 -public:
 1617.61 -	TTimeWithReference iFrom;		// first date the rule applies
 1617.62 -	TTimeWithReference iTo;			// last date the rule applies
 1617.63 -	TInt16		iOldLocalTimeOffset; // local time offset (in minutes) BEFORE the change (local time = UTC + DST)
 1617.64 -	TInt16		iNewLocalTimeOffset; // local time offset (in minutes) AFTER the change
 1617.65 -	TMonth		iMonth;
 1617.66 -	TTzRuleDay	iDayRule;		// format in which the rule is expressed
 1617.67 -	TUint8		iDayOfMonth;
 1617.68 -	TUint8		iDayOfWeek;
 1617.69 -	TTzTimeReference iTimeReference;
 1617.70 -	TUint16		iTimeOfChange;	// number of minutes since midnight
 1617.71 -	TUint32		iReserved;
 1617.72 -	};
 1617.73 -	
 1617.74 -
 1617.75 -
 1617.76 -/**
 1617.77 -Encapsulates a collection of time zone rules, and includes the period covered by the rules
 1617.78 -and the standard time offset at the start of that period.
 1617.79 -
 1617.80 -@publishedAll
 1617.81 -@released
 1617.82 -*/
 1617.83 -class CTzRules : public CBase
 1617.84 -	{
 1617.85 -public:
 1617.86 -	IMPORT_C static CTzRules* NewL();
 1617.87 -	IMPORT_C static CTzRules* NewL(TInt aStartYear, TInt aEndYear);
 1617.88 -	IMPORT_C static CTzRules* NewL(RReadStream& aStream);
 1617.89 -	IMPORT_C ~CTzRules();
 1617.90 -	IMPORT_C TBool RulesApply(const TTime& aTime) const;
 1617.91 -	IMPORT_C void AddRuleL(TTzRule aRule);
 1617.92 -	IMPORT_C void RemoveRule(TInt aIndex);
 1617.93 -	IMPORT_C TTzRule& operator[](TInt aIndex);
 1617.94 -	IMPORT_C TInt Count() const;
 1617.95 -	IMPORT_C TInt StartYear() const;
 1617.96 -	IMPORT_C TInt EndYear() const;
 1617.97 -	IMPORT_C void SetStartYear(TInt aYear);
 1617.98 -	IMPORT_C void SetEndYear(TInt aYear);
 1617.99 -	IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
1617.100 -	IMPORT_C void InternalizeL(RReadStream& aStream);
1617.101 -	IMPORT_C TInt InitialStdTimeOffset() const;
1617.102 -	IMPORT_C void SetInitialStdTimeOffset(TInt aOffset);
1617.103 -	IMPORT_C void ConvertToUtcL(TTime& aLocalTime) const;
1617.104 -	IMPORT_C void ConvertToLocalL(TTime& aUtcTime) const;
1617.105 -	IMPORT_C CTzRules* CloneL() const;
1617.106 -	IMPORT_C TBool IsEqualTo(const CTzRules& aRules) const;
1617.107 -	
1617.108 -	IMPORT_C void GetActualisedRulesL(CVTzActualisedRules& aActRules) const;
1617.109 -	IMPORT_C TInt ConvertTime(CVTzActualisedRules& aRules, TTime& aTime, TTzTimeReference aTimerRef) const;
1617.110 -		
1617.111 -private:
1617.112 -	CTzRules();
1617.113 -	CTzRules(TInt aStartYear, TInt aEndYear);
1617.114 -	void GetActualisedRulesL(CVTzActualisedRules& aActRules, TInt aYear) const;
1617.115 -	TInt GetOffsetL(const TTime& aTime, TTzTimeReference aTimeRef) const;
1617.116 -	TInt AddActualisedRulesL(CVTzActualisedRules& aActRules, TInt aYear) const;
1617.117 -	TInt CompareTimesWithRef(TTime aTimeA, TTzTimeReference aTimeARef,
1617.118 -						     TTime aTimeB, TTzTimeReference aTimeBRef, TInt aStdOffset, TInt aWallOffset,
1617.119 -						     TTimeIntervalMinutes* aMinutesDifference) const;
1617.120 -
1617.121 -private:
1617.122 -	TInt16 iStartYear;
1617.123 -	TInt16 iEndYear;
1617.124 -	RArray<TTzRule> iRules;
1617.125 -	TInt iInitialStdTimeOffset;
1617.126 -	};
1617.127 -
1617.128 -
1617.129 -
1617.130 -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
1617.131 - *	Actualised time zone rules
1617.132 - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
1617.133 -
1617.134 -/**
1617.135 -Encapsulates a local time change.
1617.136 -
1617.137 -@publishedAll
1617.138 -@released
1617.139 -*/
1617.140 -class TVTzActualisedRule
1617.141 -	{
1617.142 -public:	
1617.143 -	IMPORT_C TVTzActualisedRule(TTime aTimeOfChange, TInt aNewOffset, TTzTimeReference aTimeReference);
1617.144 -	IMPORT_C TVTzActualisedRule();
1617.145 -		
1617.146 -	IMPORT_C void operator=(TVTzActualisedRule aRule);
1617.147 -	static TInt Order(const TVTzActualisedRule& aLeft, const TVTzActualisedRule& aRight);	
1617.148 -	
1617.149 -public:
1617.150 -	TTime iTimeOfChange;
1617.151 -	TInt32  iNewOffset;
1617.152 -	TTzTimeReference iTimeReference;
1617.153 -	};
1617.154 -	
1617.155 -	
1617.156 -/**
1617.157 -Encapsulates a collection of the local time changes occurring during a range of years.
1617.158 -
1617.159 -@publishedAll
1617.160 -@released
1617.161 -*/
1617.162 -NONSHARABLE_CLASS(CVTzActualisedRules) : public CBase
1617.163 -	{
1617.164 -public:
1617.165 -	IMPORT_C static CVTzActualisedRules* NewL(TInt aStartYear, TInt aEndYear);
1617.166 -	IMPORT_C ~CVTzActualisedRules();
1617.167 -	IMPORT_C void AddRuleL(const TVTzActualisedRule& aRule);
1617.168 -	IMPORT_C TInt Count() const;
1617.169 -	IMPORT_C TVTzActualisedRule& operator[](TInt aIndex) const;
1617.170 -
1617.171 -	IMPORT_C TInt StartYear() const;
1617.172 -	IMPORT_C TInt EndYear() const;
1617.173 -	
1617.174 -	IMPORT_C TBool IsDaylightSavingOn(TTime& aTime) const;
1617.175 -	IMPORT_C TInt GetOffsetFromRuleL(const TTime& aTime, TTzTimeReference aTimeRef) const;
1617.176 -	
1617.177 -private:
1617.178 -	CVTzActualisedRules(TInt aStartYear, TInt aEndYear);
1617.179 -	CVTzActualisedRules();
1617.180 -	TInt CompareTimesWithRef(TTime aRolloverTime, TTzTimeReference aTimeRefRollover, 
1617.181 -							 TTime aUserTime, TTzTimeReference aTimeRefUser,
1617.182 -							 TInt aOldWallOffset, TTimeIntervalMinutes& aDiffMinutes) const;
1617.183 -	
1617.184 -private:
1617.185 -	TInt32 iStartYear;		// years covered by 
1617.186 -	TInt32 iEndYear;		// the actualised rules
1617.187 -	RArray<TVTzActualisedRule> iRules;	
1617.188 -	};
1617.189 -
1617.190 -#endif
  1618.1 --- a/epoc32/include/vuid.h	Tue Mar 16 16:12:26 2010 +0000
  1618.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1618.3 @@ -1,156 +0,0 @@
  1618.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1618.5 -// All rights reserved.
  1618.6 -// This component and the accompanying materials are made available
  1618.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1618.8 -// which accompanies this distribution, and is available
  1618.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1618.10 -//
 1618.11 -// Initial Contributors:
 1618.12 -// Nokia Corporation - initial contribution.
 1618.13 -//
 1618.14 -// Contributors:
 1618.15 -//
 1618.16 -// Description:
 1618.17 -//
 1618.18 -
 1618.19 -
 1618.20 -
 1618.21 -/**
 1618.22 - @file
 1618.23 - @publishedAll
 1618.24 - @released 
 1618.25 -*/
 1618.26 -
 1618.27 -#ifndef __VUID_H__
 1618.28 -#define __VUID_H__
 1618.29 -
 1618.30 -/** The default size for 8-bit buffers used in Versit. */
 1618.31 -#define KVersitDefaultBufferSize 32
 1618.32 -/** The maximum length for a Versit date/time buffer. */
 1618.33 -#define KVersitMaxDateTimeLength 16
 1618.34 -/** Not used. */
 1618.35 -#define KVersitMaxVersionLength 16
 1618.36 -_LIT8(KVersitQuestionMark, "?");
 1618.37 -
 1618.38 -//
 1618.39 -// Uid's
 1618.40 -// 268440459-268440508 have been allocated to Versit initially
 1618.41 -//
 1618.42 -
 1618.43 -/** The UID for a KVersitTokenBEGIN property.
 1618.44 -
 1618.45 -Used in vCards and vCalendars. */
 1618.46 -#define KVersitTokenBeginUid							268440459
 1618.47 -/** The UID for a KVersitTokenEND property.
 1618.48 -
 1618.49 -Used in vCards and vCalendars. */
 1618.50 -#define KVersitTokenEndUid								268440460
 1618.51 -/** The UID for a property with an unrecognised name. */
 1618.52 -#define KVersitTokenUnknownUid							268440461
 1618.53 -/** The UID for a version property.
 1618.54 -
 1618.55 -Used in vCards and vCalendars. */
 1618.56 -#define KVersitTokenVersionUid							270490587
 1618.57 -/** The UID for an agent property.
 1618.58 -
 1618.59 -Used in vCards. */
 1618.60 -#define KVCardPropertyAgentUid							268440471
 1618.61 -/** The UID for a SOUND property.
 1618.62 -
 1618.63 -Used in vCards. */
 1618.64 -#define KVCardPropertySoundUid							270537213
 1618.65 -/** The UID for an alarm property.
 1618.66 -
 1618.67 -Used in vCalendars and associated with a vEvent or vToDo. */
 1618.68 -#define KVCalPropertyAlarmUid							268440472
 1618.69 -/** The UID for a vEvent entity. */
 1618.70 -#define KVCalEntityUidVEvent							268440473
 1618.71 -/** The UID for a vTodo entity. */
 1618.72 -#define KVCalEntityUidVTodo								268440474
 1618.73 -/** A grouped property UID. This is used to determine whether a property 
 1618.74 -is grouped. */
 1618.75 -#define KVersitGroupedPropertyUid						268440475
 1618.76 -/** The UID for a time zone property.
 1618.77 -
 1618.78 -Used in vCards and vCalendars. */
 1618.79 -#define KVersitPropertyTimeZoneUid						268440476
 1618.80 -/** The UID for a date property. */
 1618.81 -#define KVersitPropertyDateUid							268440477
 1618.82 -/** A time property UID. */
 1618.83 -#define KVersitTimePropertyUid							268440478
 1618.84 -
 1618.85 -/** The UID for an rich (extended) alarm property.
 1618.86 -
 1618.87 -Used in vCalendars and associated with a vEvent or vToDo. */
 1618.88 -#define KVCalPropertyExtendedAlarmUid					268440479
 1618.89 -
 1618.90 -
 1618.91 -
 1618.92 -/** Used by the contacts database to identify a vCard. */
 1618.93 -#define KVersitEntityUidVCard							268440483		//Used by cntmodel and not by versit
 1618.94 -/** The UID for a recurrence property. */
 1618.95 -#define KVCalPropertyRecurrenceUid						268440484
 1618.96 -/** The UID for a daylight savings property. */
 1618.97 -#define KVersitPropertyDaylightUid						268440485
 1618.98 -/** The UID for a character set property parameter. */
 1618.99 -#define KVersitParamCharsetUid							268440488
1618.100 -
1618.101 -/** The UID for a quoted printable to text converter. */
1618.102 -#define KQuotedPrintableToTextConverter					268441637
1618.103 -/** The UID for a text to quoted printable converter. */
1618.104 -#define KTextToQuotedPrintableConverter					268441638
1618.105 -/** The UID for a base 64 to text converter. */
1618.106 -#define KBase64ToTextConverter							268440005
1618.107 -/** The UID for a text to base 64 converter. */
1618.108 -#define KTextToBase64Converter							268437281 
1618.109 -
1618.110 -/** The UID for a character encoding property parameter. */
1618.111 -#define KVersitParamEncodingUid							268440463
1618.112 -/** The UID for a QUOTED-PRINTABLE property parameter. */
1618.113 -#define KVersitParamEncodingQuotedPrintableUid			268440464
1618.114 -/** The UID for a BASE64 property parameter. */
1618.115 -#define KVersitParamEncodingBase64Uid					268440465
1618.116 -
1618.117 -
1618.118 -/*
1618.119 - * These are versit data-type uids for property values. They
1618.120 - * are versit-internal.
1618.121 - */
1618.122 -
1618.123 -/** The UID for a heap descriptor property. */
1618.124 -#define KVersitPropertyHBufCUid							268440466
1618.125 -/** The UID for a binary property.
1618.126 -
1618.127 -Used in vCards for logos and photos. */
1618.128 -#define KVersitPropertyBinaryUid						268470833
1618.129 -/** The UID for a descriptor array property.
1618.130 -
1618.131 -Used in vCards and vCalendars. */
1618.132 -#define KVersitPropertyCDesCArrayUid					268440467
1618.133 -/** The UID for a multiple date/time property.
1618.134 -
1618.135 -Used in vCalendars. */
1618.136 -#define KVersitPropertyMultiDateTimeUid					268440468
1618.137 -/** The UID for a date/time property.
1618.138 -
1618.139 -Used in vCards and vCalendars. */
1618.140 -#define KVersitPropertyDateTimeUid						268440469
1618.141 -/** The UID for an integer property.
1618.142 -
1618.143 -Used in vCalendars, e.g. for priorities and sequences. */
1618.144 -#define KVersitPropertyIntUid							268440470
1618.145 -
1618.146 -
1618.147 -/*
1618.148 - * The following is a list of UIDs that were used by versit but are not now
1618.149 - */
1618.150 -//UID's for tokens
1618.151 -//268440462
1618.152 -//UID's used for character sets
1618.153 -//268440489, 268440499-506, 268457255-6, 268457654-8, 268478097
1618.154 -//UID's used for Quoted Printable with a character set
1618.155 -//268440486, 268440490-8, 268457253-4, 268457801-5
1618.156 -//UID's used for Base64 with a character set
1618.157 -//268440480-82, 268440487, 268440508, 268456960, 268457257-62, 268470904-6, 268479493
1618.158 -
1618.159 -#endif
  1619.1 --- a/epoc32/include/vutil.h	Tue Mar 16 16:12:26 2010 +0000
  1619.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1619.3 @@ -1,189 +0,0 @@
  1619.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1619.5 -// All rights reserved.
  1619.6 -// This component and the accompanying materials are made available
  1619.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1619.8 -// which accompanies this distribution, and is available
  1619.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1619.10 -//
 1619.11 -// Initial Contributors:
 1619.12 -// Nokia Corporation - initial contribution.
 1619.13 -//
 1619.14 -// Contributors:
 1619.15 -//
 1619.16 -// Description:
 1619.17 -//
 1619.18 -
 1619.19 -#ifndef __VUTIL_H__
 1619.20 -#define __VUTIL_H__
 1619.21 -
 1619.22 -// System includes
 1619.23 -#ifndef __E32BASE_H__
 1619.24 -#include <e32base.h>
 1619.25 -#endif
 1619.26 -#ifndef __F32FILE_H__
 1619.27 -#include <f32file.h>
 1619.28 -#endif
 1619.29 -#ifndef __CHARCONV_H__
 1619.30 -#include <charconv.h>
 1619.31 -#endif
 1619.32 -
 1619.33 -
 1619.34 -class Versit
 1619.35 -/** Provides Versit-specific encoding and character set identifiers. 
 1619.36 -@publishedAll
 1619.37 -@released
 1619.38 -*/
 1619.39 -	{
 1619.40 -public:
 1619.41 -	/** Versit-specific encoding identifiers. 
 1619.42 -	@publishedAll
 1619.43 -	@released
 1619.44 -	*/
 1619.45 -	enum TVersitEncoding
 1619.46 -		{
 1619.47 -		/** No encoding. */
 1619.48 -		ENoEncoding,
 1619.49 -		/** Quoted Printable encoding. */
 1619.50 -		EQuotedPrintableEncoding,
 1619.51 -		/** Base 64 encoding. */
 1619.52 -		EBase64Encoding,
 1619.53 -
 1619.54 -		// Used internally - not to be used by versit clients
 1619.55 -		/** Eight bit encoding. */
 1619.56 -		EEightBitEncoding
 1619.57 -		};
 1619.58 -
 1619.59 -	/** Versit-specific character set identifiers. These are used in the Versit API 
 1619.60 -	to represent foreign (non-Unicode) character sets for vCard and vCalendar 
 1619.61 -	properties. 
 1619.62 -	@publishedAll
 1619.63 -	@released */
 1619.64 -	enum TVersitCharSet
 1619.65 -		{
 1619.66 -		/** Unknown character set. */
 1619.67 -		EUnknownCharSet,
 1619.68 -		/** ASCII (7-bit).*/
 1619.69 -		EUSAsciiCharSet,	
 1619.70 -		/** UTF-8 Unicode transformation format. */
 1619.71 -		EUTF8CharSet,
 1619.72 -		/** UTF-7 Unicode transformation format. */
 1619.73 -		EUTF7CharSet,
 1619.74 -		/** ISO 8859-1 (8-bit). */
 1619.75 -		EISO88591CharSet,
 1619.76 -		/** ISO 8859-2 (8-bit). */
 1619.77 -		EISO88592CharSet,
 1619.78 -		/** ISO 8859-4 (8-bit). */
 1619.79 -		EISO88594CharSet,
 1619.80 -		/** ISO 8859-5 (8-bit). */
 1619.81 -		EISO88595CharSet,
 1619.82 -		/** ISO 8859-7 (8-bit). */
 1619.83 -		EISO88597CharSet,
 1619.84 -		/** ISO 8859-9 (8-bit). */
 1619.85 -		EISO88599CharSet,
 1619.86 -		/** ISO 8859-3 (8-bit). */
 1619.87 -		EISO88593CharSet,
 1619.88 -		/** ISO 8859-10 (8-bit). */
 1619.89 -		EISO885910CharSet,
 1619.90 -		/** GB 2312. */
 1619.91 -		EGB231280CharSet,
 1619.92 -		/** GBK. */
 1619.93 -		EGBKCharSet,
 1619.94 -		/** Big 5. */
 1619.95 -		EBIG5CharSet,
 1619.96 -		/** ISO-2022-JP. */
 1619.97 -		EISO2022JPCharSet,
 1619.98 -		/** EUC-JP. */
 1619.99 -		EEUCJPCharSet,
1619.100 -		/** Shift JIS. */
1619.101 -		EShiftJISCharSet,
1619.102 -		/** JIS. */
1619.103 -		EJISCharSet,
1619.104 -		/** Must be first character set. */
1619.105 -		EFirstCharSet=EUSAsciiCharSet,
1619.106 -		/** Must be last character set. */
1619.107 -		ELastCharSet=EJISCharSet
1619.108 -		};
1619.109 -
1619.110 -	class TEncodingAndCharset
1619.111 -	/** Specifies an encoding, a character set and a character set converter. 
1619.112 -	@publishedAll
1619.113 -	@released */
1619.114 -		{
1619.115 -	public:
1619.116 -		inline TEncodingAndCharset(TVersitEncoding aEncoding,TUint aCharSetId) :iEncoding(aEncoding), iCharSetId(aCharSetId) 
1619.117 -		/** The C++ constructor initialises the encoding and character set.
1619.118 -	
1619.119 -		@param aEncoding An encoding.
1619.120 -		@param aCharSetId A character set. */
1619.121 -			{}
1619.122 -	public:
1619.123 -		/** An encoding. */
1619.124 -		TVersitEncoding iEncoding;
1619.125 -		/** A character set. */
1619.126 -		TUint iCharSetId;
1619.127 -		/** A character set converter. */
1619.128 -		CCnvCharacterSetConverter* iConverter;
1619.129 -		};
1619.130 -	};
1619.131 -
1619.132 -class CVersitUnicodeUtils : public CBase
1619.133 -/** Versit Unicode utilities class. 
1619.134 -
1619.135 -This enables conversion between Unicode and ISO character sets. 
1619.136 -@publishedAll
1619.137 -@released
1619.138 -*/
1619.139 -	{
1619.140 -public:
1619.141 -	IMPORT_C ~CVersitUnicodeUtils();
1619.142 -	IMPORT_C HBufC8* NarrowL(const TDesC& aDesC);
1619.143 -	IMPORT_C HBufC8* NarrowLC(const TDesC& aDesC);
1619.144 -	IMPORT_C HBufC* WidenL(const TDesC8& aDesC8);
1619.145 -	IMPORT_C HBufC* WidenLC(const TDesC8& aDesC8);
1619.146 -	IMPORT_C void CreateConverterL();
1619.147 -	CCnvCharacterSetConverter::TAvailability SetCurrentCharSetL(TUint aCharacterSet);
1619.148 -
1619.149 -public:
1619.150 -	inline CCnvCharacterSetConverter& CharacterSetConverter() const;
1619.151 -	inline TUint ConvertStandardNameL(const TDesC8& aStandardNameOfCharacterSet);
1619.152 -	inline HBufC8* StandardNameL(TUint aCharSetId);
1619.153 -	TUint AutoDetectCharSetL(const TDesC8& aSample,const CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* aAutoDetectCharSets);
1619.154 -
1619.155 -private:
1619.156 -	RFs iFsSession;
1619.157 -	CCnvCharacterSetConverter* iUnicodeConverter;
1619.158 -	TBool iFsConnected;
1619.159 -	TUint iCurrentConverterCharSet;
1619.160 -	CArrayFix<CCnvCharacterSetConverter::SCharacterSet>* iCharSetsAvailable;
1619.161 -	};
1619.162 -
1619.163 -
1619.164 -inline CCnvCharacterSetConverter& CVersitUnicodeUtils::CharacterSetConverter() const
1619.165 -/** Returns the character set converter created in CreateConverterL().
1619.166 -	
1619.167 -@return A character set converter. */
1619.168 -	{
1619.169 -	return *iUnicodeConverter;
1619.170 -	}
1619.171 -inline TUint CVersitUnicodeUtils::ConvertStandardNameL(const TDesC8& aStandardNameOfCharacterSet)
1619.172 -/** Returns the Symbian OS UID for a character set from its Internet-standard 
1619.173 -name.
1619.174 -	
1619.175 -@param aStandardNameOfCharacterSet Internet-standard name of a character set 
1619.176 -encoded in 8-bit ASCII.
1619.177 -@return The Symbian OS UID of the specified character set. If the name is not 
1619.178 -known, zero is returned. */
1619.179 -	{
1619.180 -	return iUnicodeConverter->ConvertStandardNameOfCharacterSetToIdentifierL(aStandardNameOfCharacterSet,iFsSession);
1619.181 -	}
1619.182 -inline HBufC8* CVersitUnicodeUtils::StandardNameL(TUint aCharSetId)
1619.183 -/** Returns the Internet-standard name of a character set, from its Symbian OS UID. 
1619.184 -
1619.185 -@param aCharSetId The Symbian OS UID of a character set.
1619.186 -@return The Internet-standard name or MIME name of the specified character 
1619.187 -set, or NULL if the UID is not known. The name is encoded in 8-bit ASCII. */
1619.188 -	{
1619.189 -	return iUnicodeConverter->ConvertCharacterSetIdentifierToStandardNameL(aCharSetId,iFsSession);
1619.190 -	}
1619.191 -
1619.192 -#endif
  1620.1 --- a/epoc32/include/vwsdef.h	Tue Mar 16 16:12:26 2010 +0000
  1620.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1620.3 @@ -1,277 +0,0 @@
  1620.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
  1620.5 -// All rights reserved.
  1620.6 -// This component and the accompanying materials are made available
  1620.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1620.8 -// which accompanies this distribution, and is available
  1620.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1620.10 -//
 1620.11 -// Initial Contributors:
 1620.12 -// Nokia Corporation - initial contribution.
 1620.13 -//
 1620.14 -// Contributors:
 1620.15 -//
 1620.16 -// Description:
 1620.17 -//
 1620.18 -
 1620.19 -#ifndef __VWSDEF_H__
 1620.20 -#define __VWSDEF_H__
 1620.21 -
 1620.22 -#include <e32std.h>
 1620.23 -
 1620.24 -/**
 1620.25 -@publishedPartner
 1620.26 -*/
 1620.27 -#define KUidCustomCrossCheckValue 0x80282748
 1620.28 -
 1620.29 -/**
 1620.30 -@publishedPartner
 1620.31 -*/
 1620.32 -const TUid KUidCustomCrossCheck={KUidCustomCrossCheckValue};
 1620.33 -
 1620.34 -class TVwsViewId
 1620.35 -/** Identifies an application view using two unique identifiers (UIDs): a view 
 1620.36 -UID and an application UID. 
 1620.37 -
 1620.38 -The application UID is required so that the application associated with the view 
 1620.39 -can be started if it is not already running.
 1620.40 -
 1620.41 -@publishedAll 
 1620.42 -@released */
 1620.43 -	{
 1620.44 -public:
 1620.45 -	inline TVwsViewId();
 1620.46 -	inline TVwsViewId(const TVwsViewId& aUid);
 1620.47 -	inline TVwsViewId(TUid aAppUid,TUid aViewUid);
 1620.48 -	inline TBool operator==(const TVwsViewId& aUid) const;
 1620.49 -	inline TBool operator!=(const TVwsViewId& aUid) const;
 1620.50 -public:
 1620.51 -	/** A unique application ID (or application UID).
 1620.52 -	
 1620.53 -	Uniquely identifies the application associated with the view. */
 1620.54 -	TUid iAppUid;
 1620.55 -	/** A unique view ID (or view UID).
 1620.56 -	
 1620.57 -	Uniquely identifies the view. */
 1620.58 -	TUid iViewUid;
 1620.59 -	};
 1620.60 -
 1620.61 -/** @internalTechnology */
 1620.62 -#define KNullViewId TVwsViewId(KNullUid,KNullUid)
 1620.63 -
 1620.64 -/** @internalTechnology */
 1620.65 -const TInt KErrViewWrongMode=1; // !!! Wrong error code - should be -ve & unique
 1620.66 -
 1620.67 -
 1620.68 -class TVwsViewIdAndMessage
 1620.69 -/**
 1620.70 -The TVwsViewIdAndMessage class identifies a view and encapsulates a message to
 1620.71 -be read by the view when it is activated.
 1620.72 -
 1620.73 -@publishedAll 
 1620.74 -@released 
 1620.75 -*/
 1620.76 -	{
 1620.77 -public:
 1620.78 -	inline TVwsViewIdAndMessage();
 1620.79 -	inline TVwsViewIdAndMessage(const TVwsViewId& aId);
 1620.80 -	inline TVwsViewIdAndMessage(const TVwsViewId& aId,TUid aCustomMessageId,const TDesC8& aCustomMessage);
 1620.81 -	inline TVwsViewIdAndMessage& operator=(const TVwsViewIdAndMessage& aVwsViewIdAndMessage);
 1620.82 -public:
 1620.83 -	TVwsViewId iViewId;
 1620.84 -	TUid iCustomMessageId;
 1620.85 -	TInt iCustomMessageLength;
 1620.86 -	TPtrC8 iCustomMessage;
 1620.87 -	};
 1620.88 -
 1620.89 -
 1620.90 -
 1620.91 -class TVwsViewEvent
 1620.92 -/**
 1620.93 -The TVwsViewEvent class encapsulates the attributes of a view server event.
 1620.94 -These are:
 1620.95 -- The event type
 1620.96 -- The view ids of the two views associated with the event
 1620.97 -- The attributes of any message which can go with the event.
 1620.98 -
 1620.99 -@publishedPartner
1620.100 -@released 
1620.101 -*/
1620.102 -	{
1620.103 -public:
1620.104 -	enum TVwsViewEventType
1620.105 -		{
1620.106 -		EVwsActivateView,
1620.107 -		EVwsDeactivateView,
1620.108 -		EVwsScreenDeviceChanged,
1620.109 -		EVwsDeactivationNotification,
1620.110 -		EVwsActivationNotification,
1620.111 -		EVwsDeactivateViewDifferentInstance
1620.112 -		};
1620.113 -public:
1620.114 -	inline TVwsViewEvent();
1620.115 -	inline TVwsViewEvent(TVwsViewEventType aEventType);
1620.116 -	inline TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId);
1620.117 -	inline TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId);
1620.118 -	inline TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId,TUid aCustomMessageId,TInt aCustomMessageLength);
1620.119 -public:
1620.120 -	/**
1620.121 -	The event type.
1620.122 -	*/
1620.123 -	TVwsViewEventType iEventType;
1620.124 -	/**
1620.125 -	The first view id associated with the event. This has a different meaning for each of the event types:
1620.126 -	- For ActivateView events, it is the view to activate
1620.127 -	- For DeactivateView events, it is the view to deactivate
1620.128 -	- For ScreenDeviceChange events, it is the id of the currently active view
1620.129 -	- For ActivationNotification events, it is the id of the activated view
1620.130 -	- For DeactivationNotification events, it is the id of the deactivated view
1620.131 -	*/
1620.132 -	TVwsViewId iViewOneId;
1620.133 -	/**
1620.134 -	The second view id associated with the event. This has a different meaning for each of the event types:
1620.135 -	- For ActivateView events, it is the view that will be deactivated
1620.136 -	- For DeactivateView events, it is the view that has been activated
1620.137 -	- For ScreenDeviceChange events, it is unused
1620.138 -	- For ActivationNotification events, it is the view that will be deactivated
1620.139 -	- For DeactivationNotification events, it is the id of the view that has been activated
1620.140 -	*/
1620.141 -	TVwsViewId iViewTwoId;
1620.142 -	/**
1620.143 -	The type of message being passed in the custom message buffer
1620.144 -	*/
1620.145 -	TUid iCustomMessageId;
1620.146 -	/**
1620.147 -	The length of the custom message being held by the server.
1620.148 -	To retrieve the message itself from the server, a buffer of this length must be allocated
1620.149 -	*/
1620.150 -	TInt iCustomMessageLength;
1620.151 -	};
1620.152 -
1620.153 -
1620.154 -//
1620.155 -// Typedefs.
1620.156 -//
1620.157 -/** @internalComponent */
1620.158 -typedef TPckgBuf<TVwsViewIdAndMessage> TVwsViewIdAndMessageBuf;
1620.159 -
1620.160 -/** @internalComponent */
1620.161 -typedef TPckgBuf<TVwsViewEvent> TVwsViewEventBuf;
1620.162 -
1620.163 -
1620.164 -//
1620.165 -// Inlines
1620.166 -//
1620.167 -
1620.168 -inline TVwsViewId::TVwsViewId()
1620.169 -/** Constructs a TVwsViewId object, and initialises both the application UID and 
1620.170 -the view UID to NULL. */
1620.171 -	: iAppUid(KNullUid), iViewUid(KNullUid) {}
1620.172 -
1620.173 -inline TVwsViewId::TVwsViewId(const TVwsViewId& aUid)
1620.174 -/** Constructs a new TVwsViewId object from an existing one. This simply performs 
1620.175 -a member-wise copy, each member variable of the passed in object is individually 
1620.176 -copied to the corresponding member variable of the new object.
1620.177 -
1620.178 -@param aUid A reference to the TVwsViewId object to be copied. */
1620.179 -	: iAppUid(aUid.iAppUid), iViewUid(aUid.iViewUid) {}
1620.180 -
1620.181 -inline TVwsViewId::TVwsViewId(TUid aAppUid,TUid aViewUid)
1620.182 -/** Constructs a TVwsViewId object with the specified application UID and view UID.
1620.183 -
1620.184 -@param aAppUid The application UID.
1620.185 -@param aViewUid The view UID. */
1620.186 -	: iAppUid(aAppUid), iViewUid(aViewUid) {}
1620.187 -
1620.188 -inline TBool TVwsViewId::operator==(const TVwsViewId& aUid) const
1620.189 -/** Checks whether the TVwsViewId object being operated upon and the TVwsViewId 
1620.190 -object specified are the same.
1620.191 -
1620.192 -Returns true if both application UIDs and both view UIDs are the same, otherwise 
1620.193 -returns false.
1620.194 -
1620.195 -@param aUid A reference to a TVwsViewId object.
1620.196 -@return ETrue if objects are the same, EFalse otherwise. */
1620.197 -	{
1620.198 -	return (aUid.iAppUid==iAppUid && aUid.iViewUid==iViewUid);
1620.199 -	}
1620.200 -
1620.201 -inline TBool TVwsViewId::operator!=(const TVwsViewId& aUid) const
1620.202 -/** Checks whether the TVwsViewId object being operated upon and the TVwsViewId 
1620.203 -object specified are different.
1620.204 -
1620.205 -Returns true if either the application UIDs or view UIDs are different, otherwise 
1620.206 -returns false.
1620.207 -
1620.208 -@param aUid A reference to a TVwsViewId object.
1620.209 -@return ETrue if objects are different, EFalse otherwise. */
1620.210 -	{
1620.211 -	return (aUid.iAppUid!=iAppUid || aUid.iViewUid!=iViewUid);
1620.212 -	}
1620.213 -
1620.214 -
1620.215 -/** Constructs a TVwsViewIdAndMessage object, and initialises it to contain a
1620.216 -NULL view UID and an empty message */
1620.217 -inline TVwsViewIdAndMessage::TVwsViewIdAndMessage()
1620.218 -	: iViewId(TVwsViewId()), iCustomMessageLength(0)
1620.219 -	{
1620.220 -	iCustomMessageId.iUid=0;
1620.221 -	iCustomMessage.Set(KNullDesC8);
1620.222 -	}
1620.223 -
1620.224 -/** Constructs a TVwsViewIdAndMessage object, and initialises it to contain the
1620.225 -specified view UID and an empty message
1620.226 -
1620.227 -@param aId A reference to the TVwsViewId to be used
1620.228 -*/
1620.229 -inline TVwsViewIdAndMessage::TVwsViewIdAndMessage(const TVwsViewId& aId)
1620.230 -	: iViewId(aId), iCustomMessageLength(0)
1620.231 -	{
1620.232 -	iCustomMessageId.iUid=0;
1620.233 -	iCustomMessage.Set(KNullDesC8);
1620.234 -	}
1620.235 -
1620.236 -/** Constructs a TVwsViewIdAndMessage object, and initialises it to contain the
1620.237 -specified view UID and the specified message
1620.238 -
1620.239 -@param aId A reference to the TVwsViewId to be used
1620.240 -@param aCustomMessageId The message Id to use
1620.241 -@param aCustomMessage A narrow descriptor containing the message
1620.242 -*/
1620.243 -inline TVwsViewIdAndMessage::TVwsViewIdAndMessage(const TVwsViewId& aId,TUid aCustomMessageId,const TDesC8& aCustomMessage)
1620.244 -	: iViewId(aId), iCustomMessageId(aCustomMessageId)
1620.245 -	{
1620.246 -	iCustomMessageLength=aCustomMessage.Length();
1620.247 -	iCustomMessage.Set(aCustomMessage);
1620.248 -	}
1620.249 -
1620.250 -/** Copies the contents of another TVwsViewIdAndMessage into this one
1620.251 -
1620.252 -@param aVwsViewIdAndMessage A reference to the TVwsViewIdAndMessage to be copied
1620.253 -
1620.254 -@return A reference to the object being copied into
1620.255 -*/
1620.256 -inline TVwsViewIdAndMessage& TVwsViewIdAndMessage::operator=(const TVwsViewIdAndMessage& aVwsViewIdAndMessage)
1620.257 -	{
1620.258 -	iViewId=aVwsViewIdAndMessage.iViewId;
1620.259 -	iCustomMessageId=aVwsViewIdAndMessage.iCustomMessageId;
1620.260 -	iCustomMessageLength=aVwsViewIdAndMessage.iCustomMessage.Length();
1620.261 -	iCustomMessage.Set(aVwsViewIdAndMessage.iCustomMessage);
1620.262 -	return(*this);
1620.263 -	}
1620.264 -
1620.265 -inline TVwsViewEvent::TVwsViewEvent() {}
1620.266 -
1620.267 -inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType)
1620.268 -	: iEventType(aEventType),iViewOneId(),iViewTwoId(),iCustomMessageId(KNullUid),iCustomMessageLength(0) {}
1620.269 -
1620.270 -inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId)
1620.271 -	: iEventType(aEventType),iViewOneId(aViewOneId),iViewTwoId(),iCustomMessageId(KNullUid),iCustomMessageLength(0) {}
1620.272 -
1620.273 -inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId)
1620.274 -	: iEventType(aEventType),iViewOneId(aViewOneId),iViewTwoId(aViewTwoId),iCustomMessageId(KNullUid),iCustomMessageLength(0) {}
1620.275 -
1620.276 -inline TVwsViewEvent::TVwsViewEvent(TVwsViewEventType aEventType,const TVwsViewId& aViewOneId,const TVwsViewId& aViewTwoId,TUid aCustomMessageId,TInt aCustomMessageLength)
1620.277 -	: iEventType(aEventType),iViewOneId(aViewOneId),iViewTwoId(aViewTwoId),iCustomMessageId(aCustomMessageId),iCustomMessageLength(aCustomMessageLength) {}
1620.278 -
1620.279 -
1620.280 -#endif
  1621.1 --- a/epoc32/include/wapattrdf.h	Tue Mar 16 16:12:26 2010 +0000
  1621.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1621.3 @@ -1,49 +0,0 @@
  1621.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
  1621.5 -// All rights reserved.
  1621.6 -// This component and the accompanying materials are made available
  1621.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1621.8 -// which accompanies this distribution, and is available
  1621.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1621.10 -//
 1621.11 -// Initial Contributors:
 1621.12 -// Nokia Corporation - initial contribution.
 1621.13 -//
 1621.14 -// Contributors:
 1621.15 -//
 1621.16 -// Description:
 1621.17 -// WAP Attribute Std
 1621.18 -// Standard attribute keys
 1621.19 -// 
 1621.20 -//
 1621.21 -
 1621.22 -#ifndef __WAPATTRIBUTESTD_H
 1621.23 -#define __WAPATTRIBUTESTD_H
 1621.24 -
 1621.25 -// Document node
 1621.26 -//
 1621.27 -_LIT(KWAPNodeMimeTypeAttributeName,"KWapAttrNodeMimeType");							// node mime type
 1621.28 -_LIT(KWAPNodeContentEncodingTypeAttributeName,"KWapAttrNodeContentEncodingType");	// node content encoding type
 1621.29 -_LIT(KWAPDocumentNodeURLAttributeName,"KWapAttrNodeURL");							// URL of node
 1621.30 -
 1621.31 -
 1621.32 -// Data Storage node
 1621.33 -//
 1621.34 -_LIT(KWAPNodeErrorCodeAttributeName,"KWapAttrNodeErrorCode"); // node error code
 1621.35 -
 1621.36 -// Image nodes
 1621.37 -//
 1621.38 -_LIT(KWAPBitmapHandleAttributeName,"KWapAttrImgBmpHnd"); // standard bitmap handle
 1621.39 -_LIT(KWAPZoomedBitmapHandleAttributeName,"KWapAttrImgZoomBmpHnd"); // zoomed bitmap handle
 1621.40 -_LIT(KWAPZoomedBitmapZoomFactorAttributeName,"KWapAttrImgZoomFactor"); // zoomed bitmap zoom factor
 1621.41 -
 1621.42 -// Document root node
 1621.43 -//
 1621.44 -_LIT(KWAPDocumentValidStatusAttributeName,"KWapAttrDocValid"); // set if the doucment has been validated
 1621.45 -_LIT(KWAPDocumentCompletedAttributeName,"KWapAttrDocCompleted"); // set if the doucment is complete
 1621.46 -_LIT(KWAPDocumentWmlVersion,"KWapAAttrWmlVersion"); //1.1 or 1.2
 1621.47 -
 1621.48 -// Script Node
 1621.49 -_LIT(KWAPScriptReferingCardUrl, "KWapAttrReferingUrl"); // URL to the card that refered to this script
 1621.50 -
 1621.51 -
 1621.52 -#endif // __WAPATTRIBUTESTD_H
  1622.1 --- a/epoc32/include/wapengstd.h	Tue Mar 16 16:12:26 2010 +0000
  1622.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1622.3 @@ -1,278 +0,0 @@
  1622.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
  1622.5 -// All rights reserved.
  1622.6 -// This component and the accompanying materials are made available
  1622.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1622.8 -// which accompanies this distribution, and is available
  1622.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1622.10 -//
 1622.11 -// Initial Contributors:
 1622.12 -// Nokia Corporation - initial contribution.
 1622.13 -//
 1622.14 -// Contributors:
 1622.15 -//
 1622.16 -// Description:
 1622.17 -// WAP Engine Standard 
 1622.18 -// Standard status codes used by data handlers and the WAP engine. Note that some are exact duplicates of error
 1622.19 -// codes from sub-components (e.g. HTTP) or from components outside of the WAP Browser (e.g. NetDial, ETEL)
 1622.20 -// 
 1622.21 -//
 1622.22 -
 1622.23 -#ifndef __WAPENGINESTANDARD_H__
 1622.24 -#define __WAPENGINESTANDARD_H__
 1622.25 -
 1622.26 -// System includes
 1622.27 -//
 1622.28 -#include <e32std.h>
 1622.29 -
 1622.30 -//
 1622.31 -// Status code offset for HTTP status values and stack connection progress
 1622.32 -// e.g. HTTP/200 becomes KHttpPluginStatusBase + 200
 1622.33 -//
 1622.34 -const TInt KHttpPluginStatusBase = 1000;
 1622.35 -const TInt KWapDocumentLoadStatusBase = 2000;
 1622.36 -
 1622.37 -typedef enum TWapEngineStatus
 1622.38 -{
 1622.39 -	// DRAFT
 1622.40 -	// Some of these errors MAY be handled in the control level.
 1622.41 -
 1622.42 -	//
 1622.43 -	// HTTP/1.1 Status/Error codes from 40x and 50x series
 1622.44 -	//
 1622.45 -	EWapErrHttp_505_HTTPVersionNotSupported = -20505,	// has to be 1.1 at the client end; talking to a 1.0 origin server might cause this? Or the client erroneously claiming to do HTTP/3 or something.
 1622.46 -	EWapErrHttp_504_GatewayTimeout = -20504,			// not sure if this refers to Gateway in the WAP sense
 1622.47 -	EWapErrHttp_503_ServiceUnavailable = -20503,		// ?
 1622.48 -	EWapErrHttp_502_BadGateway = -20502,				// could occur with a badly configured WAP GW = e.g. the gateway uses a proxy which cannot be reached = there should probably be some indication to the user.
 1622.49 -	EWapErrHttp_501_NotImplemented = -20501,			// duh. Bad server.
 1622.50 -	EWapErrHttp_500_InternalServerError = -20500,		// bad news again; this one can either come from the origin server _or_ from the WAP GW, which may convert a different server code into 500 if the WML is bad. Report.
 1622.51 -
 1622.52 -	EWapErrHttp_415_UnsupportedMediaType = -20415,		// see RFC2068
 1622.53 -	EWapErrHttp_414_RequestUriTooLong = -20414,			// report to user
 1622.54 -	EWapErrHttp_413_RequestEntityTooLarge = -20413,		// see RFC2068
 1622.55 -	EWapErrHttp_412_PreconditionFailed = -20412,		// see RFC2068
 1622.56 -	EWapErrHttp_411_LengthRequired = -20411,			// error in our use of HTTP if this occurs.
 1622.57 -	EWapErrHttp_410_Gone = -20410,						// like 404, except more definite! report to user.
 1622.58 -	EWapErrHttp_409_Conflict = -20409,					// see RFC2068
 1622.59 -	EWapErrHttp_408_RequestTimeout = -20408,			//  dealt with in HTTP, shouldn't have to be presented to the user
 1622.60 -	EWapErrHttp_407_ProxyAuthenticationRequired = -20407,//  - not sure, we don't correctly deal with this at the moment. Is it needed?
 1622.61 -	EWapErrHttp_406_NotAcceptable = -20406,				//  this is returned if the resource requested is not acceptable to the client according to its own accept- strings in the HTTP request header. e.g. accept-charset, accept (content types). accept-language. This shows that we're getting our headers wrong, so should be considered a software error and not be reported. I think.
 1622.62 -	EWapErrHttp_405_MethodNotAllowed = -20405,			//  e.g. attempt to POST to a URL that is not appropriate for POSTing. Probably a result of poor site design?
 1622.63 -	EWapErrHttp_404_NotFound = -20404,					//  document missing on origin server. This one would be a good one to report to the user since it happens frequently with badly maintained sites!
 1622.64 -	EWapErrHttp_403_Forbidden = -20403,					// the server HTTPD does refuses to return the requested document, for internal reasons not necessarily disclosed to the client
 1622.65 -	EWapErrHttp_402_PaymentRequired = -20402,			//  I don't think this is used in our world of e-commerce. RFC2068 says it is reserved for future use.
 1622.66 -//
 1622.67 -//														// NOTE THAT HTTP/401 IS NOT TREATED AS AN ERROR, BECAUSE IT IS
 1622.68 -//														// FULLY HANDLED IN HTTP - see HTTP status codes below
 1622.69 -//
 1622.70 -	EWapErrHttp_400_BadRequest = -20400,				// client sent a request with a malformed syntax (in HTTP request headers) = I assume this indicates a programming error on our part ,and should not happen, or be reported?
 1622.71 -
 1622.72 -	//
 1622.73 -	// HTTP Data Provider plug-in 'inherited' error codes
 1622.74 -	//
 1622.75 -	EWapErrHttpReceivingErrorDeck		= -20014,	// Could not find document, so receiving an error deck
 1622.76 -	EWapErrHttpCancellationAbort		= -20013,	// Error code for leave when cancellation has occured during RunL()
 1622.77 -	EWapErrHttpGatewaySessionDisconnect	= -20012,	// The session was disconnected by the WAP Gateway
 1622.78 -	EWapErrHttpGatewayTransactionAbort	= -20011,	// A transaction was aborted by the gateway or the stack
 1622.79 -	EWapErrHttpGatewayCannotBeReached	= -20010,	// A session could not be established with the WAP Gateway
 1622.80 -	// Note that EWapErrHttpAuthenticationFailed and EWapErrHttpAuthenticationCancelled are now information status codes - see below.
 1622.81 -	EWapErrHttpWtlsCipherRejected		= -20009,	// The user rejected the cipher strength negotiated in WTLS
 1622.82 -	EWapErrHttpWtlsServerCertRejected	= -20008,	// The user rejected the certificate from the WAP GW
 1622.83 -	EWapErrHttpWtlsBadServerCert		= -20007,	// WTLS rejected the certificate obtained from the WAP GW
 1622.84 -	EWapErrHttpWtlsConfigFailed			= -20006,	// Failed to configure the WTLS layer of the WAP Stack
 1622.85 -	EWapErrHttpNetDialSetupFailed		= -20005,	// Failed to configure Net Dial
 1622.86 -	EWapErrHttpWapAPReadFailure			= -20004,	// An error occurred when reading the WAP AP from CommsDB
 1622.87 -	EWapErrHttpUnsupportedMethod		= -20003,	// An HTTP method was specified that is not supported
 1622.88 -	EWapErrHttpCannotFindPlugin			= -20002,	// Plug-in server failed to create an HTTP plugin
 1622.89 -	EWapErrHttpCannotFindServer			= -20001,	// URL specified a non-existent or inaccessible domain
 1622.90 -	EWapErrHttpGeneralError				= -20000,	// Unspecified error condition
 1622.91 -
 1622.92 -	//
 1622.93 -	//	XMLLIB ERROR CODES
 1622.94 -	//
 1622.95 -
 1622.96 -	// XmlLib
 1622.97 -#define XmlLibErrorBase -13200
 1622.98 -	EWapErrXmlLibInvalidDocument				= XmlLibErrorBase,
 1622.99 -	EWapErrXmlLibDocumentBuffered				= XmlLibErrorBase -  1,
1622.100 -	EWapErrXmlLibDocumentAlreadyValid			= XmlLibErrorBase -  2,
1622.101 -	EWapErrXmlLibInvalidDTD						= XmlLibErrorBase -  3,
1622.102 -
1622.103 -	// Validator
1622.104 -#define XmlValidatorErrorBase -13100
1622.105 -	EWapErrXmlLibIllegalTagName					= XmlValidatorErrorBase,
1622.106 -	EWapErrXmlLibIllegalFixedAttributeValue		= XmlValidatorErrorBase -  1,
1622.107 -	EWapErrXmlLibMissingRequiredAttribute		= XmlValidatorErrorBase -  2,
1622.108 -	EWapErrXmlLibMissingDocument				= XmlValidatorErrorBase -  4,
1622.109 -	EWapErrXmlLibInvalidDocumentStructure		= XmlValidatorErrorBase -  6,
1622.110 -	EWapErrXmlLibIllegalAttributeValue			= XmlValidatorErrorBase -  7,
1622.111 -
1622.112 -	// Parser
1622.113 -#define XmlParserErrorBase -13000
1622.114 -	EWapErrXmlLibMissingCDATASectionEndTag		= XmlParserErrorBase,
1622.115 -	EWapErrXmlLibInvalidAttributeDeclaration	= XmlParserErrorBase -  1,
1622.116 -	EWapErrXmlLibEndTagMismatch					= XmlParserErrorBase -  2,
1622.117 -	EWapErrXmlLibInvalidCharacterReference		= XmlParserErrorBase -  3,
1622.118 -	EWapErrXmlLibUnknownEntityReference			= XmlParserErrorBase -  4,
1622.119 -	EWapErrXmlLibNoDTD							= XmlParserErrorBase -  5,
1622.120 -	EWapErrXmlLibMissingDocumentRootNode		= XmlParserErrorBase -  6,
1622.121 -	EWapErrXmlLibInvalidXmlVersionDefinition	= XmlParserErrorBase -  7,
1622.122 -	EWapErrXmlLibRootElementNameMismatch		= XmlParserErrorBase -  8,
1622.123 -
1622.124 -
1622.125 -	//
1622.126 -	//	WMLLIB ERROR CODES
1622.127 -	//
1622.128 -
1622.129 -	// WmlLib
1622.130 -	// No WmlLib (interface module) specific errors defined
1622.131 -
1622.132 -	// Validator
1622.133 -#define WmlValidatorErrorBase -12100
1622.134 -	EWapErrWmlLibAccessViolation			= WmlValidatorErrorBase -   1,
1622.135 -	EWapErrWmlLibInvalidVariableReference	= WmlValidatorErrorBase - 	2,
1622.136 -	EWapErrWmlLibInvalidConversionMethod	= WmlValidatorErrorBase -   3,
1622.137 -	EWapErrWmlLibIllegalVariableName		= WmlValidatorErrorBase -   4,
1622.138 -	EWapErrWmlLibIllegalTaskCountOnAnchor	= WmlValidatorErrorBase -   5,
1622.139 -	EWapErrWmlLibNULLVariableName			= WmlValidatorErrorBase -   6,
1622.140 -	EWapErrWmlLibNestedTables               = WmlValidatorErrorBase -   7,
1622.141 -	EWapErrWmlLibDuplicateDoNodeName        = WmlValidatorErrorBase -   8,
1622.142 -	EWapErrWmlLibUsageOfReservedWord        = WmlValidatorErrorBase -   9,
1622.143 -	EWapErrWmlLibZeroTableColumns           = WmlValidatorErrorBase -  10,
1622.144 -	EWapErrWmlLibNonWmlDocument				= WmlValidatorErrorBase -  11,
1622.145 -	EWapErrWmlLibMultipleMetaPropertyName   = WmlValidatorErrorBase -  12,
1622.146 -	EWapErrWmlLibEventBindingConflict       = WmlValidatorErrorBase -  14,
1622.147 -	EWapErrWmlLibMultipleAccessElements		= WmlValidatorErrorBase -  15,
1622.148 -	EWapErrWmlLibNonUniqueIds				= WmlValidatorErrorBase -  16,
1622.149 -	EWapErrWmlLibVariableInInvalidLocation	= WmlValidatorErrorBase -  17,
1622.150 -
1622.151 -	// Parser
1622.152 -#define WmlParserErrorBase -12000
1622.153 -	EWapErrWmlLibNullNode					= WmlParserErrorBase,
1622.154 -	EWapErrWmlLibCDATANodeWithoutParent		= WmlParserErrorBase -   1,
1622.155 -
1622.156 -
1622.157 -	// 
1622.158 -	// WAP Engine 'native' error codes
1622.159 -	//
1622.160 -	EWapErrSubDocumentNotFound	= -10027,
1622.161 -	EWapErrCannotCreateDeck		= -10026,			// Failed to create a deck
1622.162 -	EWapErrMimeTypeMissing		= -10025,			// Engine tried to access the mime-type attribute in a
1622.163 -													// tree node but it was missing
1622.164 -	EWapErrUnknownDocument		= -10024,
1622.165 -	EWapErrInvalidDTD			= -10023,
1622.166 -	EWapErrDTDUnavailable		= -10022,			// Document cannot be validated as DTD is not available
1622.167 -
1622.168 -	EWapErrUnknownScheme = -10021,					// unknown scheme
1622.169 -	EWapErrCorruptScheme = -10020,					// scheme contains invalid characters
1622.170 -	EWapErrCorruptUrl	 = -10019,					// part of url contains invalid characters
1622.171 -
1622.172 -	EWapErrPluginNotFound = -10018,					// couldn't find the requested plugin
1622.173 -
1622.174 -	EWapErrImageConversionFailed = -10017,			// image data handler got error from media server
1622.175 -
1622.176 -	EWapErrAccessPointNotSetUpForCSD	=  -10016,	// Access point lacked info for Data call
1622.177 -	EWapErrAccessPointNotSetUpForSMS	=  -10015,
1622.178 -	EWapErrAccessPointNotSetUpForUSSD	=  -10014,
1622.179 -	EWapErrAccessPointNotSetUpGeneric	=  -10013,
1622.180 -	EWapErrProtocolNotSupported			=  -10012,	// Current network does not support the requested service
1622.181 -
1622.182 -	EWapErrAuthorizationFailed			= -10011,
1622.183 -		
1622.184 -	EWapErrScriptObscureLibraryCall	= -10010,		// The script function was unavailable
1622.185 -	EWapErrScriptIllegalAction		= -10009,		// The script attempted an illegal action and was terminated
1622.186 -	EWapErrScriptCorrupt			= -10008,		// Script had errors
1622.187 -	EWapErrScriptError				= -10007,		// Script returned a fatal error
1622.188 -	EWapErrScriptNotFound			= -10006,		// Requested script was not found
1622.189 -		
1622.190 -	EWapErrDataCallUnavailable	= -10005,			// The data call is being used by another application
1622.191 -	EWapErrDataCallDropped		= -10004,			// CSD connection was closed 
1622.192 -
1622.193 -	EWapErrAccessViolation		= -10003,			// Access to the document was denied
1622.194 -	EWapErrDocumentCorrupted	= -10002,
1622.195 -	EWapErrDocumentNotFound		= -10001,
1622.196 -	EWapErrGeneral				= -10000,
1622.197 -
1622.198 -	//
1622.199 -	// PPP connection 'inherited' error codes
1622.200 -	//
1622.201 -	EWapErrPppIfLRDBadLine			   = -3059,	// ??
1622.202 -	EWapErrPppIfDNSNotFound			= -3058,	// ??
1622.203 -	EWapErrPppIfCallbackNotAcceptable = -3057,	// NTRAS: client requested server Callback but was refused
1622.204 -	EWapErrPppIfChangingPassword      = -3056,	// NTRAS: User's password is currently being changed
1622.205 -	EWapErrPppIfNoDialInPermission    = -3055,	// NTRAS: User has not got dial-in permission on the server
1622.206 -	EWapErrPppIfPasswdExpired         = -3054,	// NTRAS: User's password has expired
1622.207 -	EWapErrPppIfRestrictedLogonHours  = -3053,	// NTRAS: User is attempting to log-in outside their hours
1622.208 -	EWapErrPppIfAccountDisabled       = -3052,	// NTRAS: User's account has been disabled
1622.209 -	EWapErrPppIfAuthNotSecure         = -3051,	// ??
1622.210 -	EWapErrPppIfAuthenticationFailure = -3050,	// The supplied password was wrong??
1622.211 -
1622.212 -	//
1622.213 -	// NetDial 'inherited' error codes
1622.214 -	//
1622.215 -	EWapErrNetDialScriptError	= -3005,	// NetDial Exit Condition - Script Error
1622.216 -	EWapErrNetDialScriptTimeOut	= -3004,	// NetDial Exit Condition - Script Timed Out
1622.217 -	EWapErrNetDialLoginFail		= -3003,	// NetDial Exit Condition - Login Failure
1622.218 -	EWapErrNetDialModemError	= -3002,	// NetDial Exit Condition - Modem error
1622.219 -	EWapErrNetDialNoModem		= -3001,	// NetDial Exit Condition - No Modem Response
1622.220 -
1622.221 -	//
1622.222 -	// ETEL 'inherited' error codes
1622.223 -	//
1622.224 -	EWapErrEtelModemSettingsCorrupt		= -2018,
1622.225 -	EWapErrEtelModemNotDetected			= -2017,
1622.226 -	EWapErrEtelAnswerAlreadyOutstanding	= -2016,
1622.227 -	EWapErrEtelUnknownModemCapability		= -2015,
1622.228 -	EWapErrEtelWrongModemType				= -2014,
1622.229 -	EWapErrEtelPortNotLoanedToClient		= -2013,
1622.230 -	EWapErrEtelNotFaxOwner					= -2012,
1622.231 -	EWapErrEtelFaxChunkNotCreated			= -2011,
1622.232 -	EWapErrEtelConfigPortFailure			= -2010,
1622.233 -	EWapErrEtelNoDialTone					= -2009,
1622.234 -	EWapErrEtelNoAnswer					= -2008,
1622.235 -	EWapErrEtelCallNotActive				= -2007,
1622.236 -	EWapErrEtelInitialisationFailure		= -2006,
1622.237 -	EWapErrEtelNoClientInterestedInThisCall= -2005,
1622.238 -	EWapErrEtelBusyDetected				= -2004,
1622.239 -	EWapErrEtelNoCarrier					= -2003,
1622.240 -	EWapErrEtelAlreadyCallOwner			= -2002,
1622.241 -	EWapErrEtelDuplicatePhoneName			= -2001,
1622.242 -	EWapErrEtelNotCallOwner				= -2000,
1622.243 -
1622.244 -	//
1622.245 -	// General EPOC 'inherited' error codes
1622.246 -	//
1622.247 -	EWapErrEpocTimedOut						= -33,
1622.248 -	EWapErrEpocNotFound						= -1,
1622.249 -	EWapErrEpocAccessDenied						= -21,
1622.250 -
1622.251 -	// 
1622.252 -	// 
1622.253 -	// Wap engine status messages
1622.254 -	//
1622.255 -	EWapStatusDownloadProgress = 1,		// Amount complete in aValue (0...100)
1622.256 -	EWapStatusDownloadComplete,			// Document fetch is complete
1622.257 -	EWapStatusSubDocumentChanged,		// XML subdocument (card in WML) has changed 
1622.258 -	EWapStatusRefreshRequest,			// Observer is requested to refresh display
1622.259 -	EWapStatusError,					// Error
1622.260 -	EWapStatusInformational,			// Information other than download progress
1622.261 -	EWapStatusInitialisingConnection	= KHttpPluginStatusBase,
1622.262 -	EWapStatusConnecting				= KHttpPluginStatusBase + 1,
1622.263 -	EWapStatusAuthenticating			= KHttpPluginStatusBase + 2,
1622.264 -	EWapStatusConnected					= KHttpPluginStatusBase + 3,
1622.265 -	EWapStatusDisconnecting				= KHttpPluginStatusBase + 4,
1622.266 -	EWapStatusHttpAuthenticationFailed	= KHttpPluginStatusBase + 10,		// The user's password was rejected by the origin server
1622.267 -	EWapStatusHttpAuthenticationAborted	= KHttpPluginStatusBase + 11,		// The user cancelled the password box
1622.268 -	EWapStatusHttp_401_Unauthorized		= KHttpPluginStatusBase + 401,		// occurs when HTTP authentication is used, username/password dialogs raised as a response. Need to consider how UI deals with authentication failures here.
1622.269 -	EWapStatusValidating				= KWapDocumentLoadStatusBase,		// Validating document
1622.270 -	EWapStatusReceivingErrorDeck		= KWapDocumentLoadStatusBase + 1	// Receiving error deck
1622.271 -
1622.272 -} TWapEngineStatus;
1622.273 -
1622.274 -enum TWmlFetchFlag
1622.275 -	{
1622.276 -	EWmlFetchNoFlag		= 0x00,
1622.277 -	EWmlFetchReload		= 0x01,
1622.278 -	EWmlFetchTimerFetch	= 0x02
1622.279 -	};
1622.280 -
1622.281 -#endif // __WAPENGINESTANDARD_H__
  1623.1 --- a/epoc32/include/waplog.h	Tue Mar 16 16:12:26 2010 +0000
  1623.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1623.3 @@ -1,37 +0,0 @@
  1623.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1623.5 -// All rights reserved.
  1623.6 -// This component and the accompanying materials are made available
  1623.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1623.8 -// which accompanies this distribution, and is available
  1623.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1623.10 -//
 1623.11 -// Initial Contributors:
 1623.12 -// Nokia Corporation - initial contribution.
 1623.13 -//
 1623.14 -// Contributors:
 1623.15 -//
 1623.16 -// Description:
 1623.17 -// WAP Logging public header, defines the name of the 
 1623.18 -// file to use for WAP activity logging messages
 1623.19 -// 
 1623.20 -//
 1623.21 -
 1623.22 -#if !defined(__WAPLOG_H__)
 1623.23 -#define __WAPLOG_H__
 1623.24 -
 1623.25 -#if !defined(__E32STD_H__)
 1623.26 -#include <e32std.h>
 1623.27 -#endif
 1623.28 -
 1623.29 -#ifdef _DEBUG
 1623.30 -/**
 1623.31 -@publishedAll
 1623.32 -@deprecated
 1623.33 -*/
 1623.34 -_LIT(KWapLogFileName,"WAPLog.html");
 1623.35 -#define __LOG_WAP_FILE_NAME KWapLogFileName
 1623.36 -#else
 1623.37 -#define __LOG_WAP_FILE_NAME
 1623.38 -#endif
 1623.39 -
 1623.40 -#endif
  1624.1 --- a/epoc32/include/wappdef.h	Tue Mar 16 16:12:26 2010 +0000
  1624.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1624.3 @@ -1,223 +0,0 @@
  1624.4 -// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies).
  1624.5 -// All rights reserved.
  1624.6 -// This component and the accompanying materials are made available
  1624.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1624.8 -// which accompanies this distribution, and is available
  1624.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1624.10 -//
 1624.11 -// Initial Contributors:
 1624.12 -// Nokia Corporation - initial contribution.
 1624.13 -//
 1624.14 -// Contributors:
 1624.15 -//
 1624.16 -// Description:
 1624.17 -// Definitions of WBXML message tokens for use in the Wap  Parser, WAPP
 1624.18 -// 
 1624.19 -//
 1624.20 -
 1624.21 -#if !defined (__WAPPDEF_H__)
 1624.22 -#define __WAPPDEF_H__
 1624.23 -
 1624.24 -// *********      GENERAL WBXML TOKENS       ***************
 1624.25 -// WBXML global tokens - applicable to all messages
 1624.26 -// See WAP Binary XML Content Format, 16-Jun-99, p16.  
 1624.27 -// These and our message specific tokens define our DTD
 1624.28 -
 1624.29 -// As our DTD is hard coded into the app, we don't use the following - 
 1624.30 -//		SWITCH_PAGE - not defined as we only have 1 page
 1624.31 -//		EXT_I_0, EXT_I_1, EXT_I_2
 1624.32 -//		PI - don't define processing inline - all hard coded
 1624.33 -//		LITERAL,LITERAL_C,LITERAL_A,LITERAL_AC  - not using literals, don't define elements inline
 1624.34 -//		EXT_T_0,EXT_T_1,EXT_T_2, EXT_0, EXT_1, EXT_2  - not using document extensions
 1624.35 -//		OPAQUE - not using opaque data
 1624.36 -
 1624.37 -#define KWAPP_STR_TERM  0x00	// Basically the NULL terminator character for a string
 1624.38 -#define KWAPP_END_TAG	0x01    // Code for the end of an element
 1624.39 -#define KWAPP_ENTITY	0x02    // indicates the start of a character entity number
 1624.40 -#define KWAPP_STR_I		0x03    // indicates the start of an inline string,
 1624.41 -								// terminated by '\0', OR STR_TERMINATOR
 1624.42 -#define	KWAPP_STR_T		0X83    // a reference to the string table follows. Token is followed
 1624.43 -								// by multi byte Int32 referencing an offset in the string table
 1624.44 -
 1624.45 -#define KWAPP_TAG_CONTENT		0x40 // Bit 6 of the Wap Tag is set when a element has content
 1624.46 -#define KWAPP_TAG_ATTRIBUTES	0x80 // Bit 7 of Tag is set when the element has attributes
 1624.47 -#define KWAPP_TAG_ATTRIBUTES_CONTENT 0XC0  // Bits 6 & 7 are set - attributes and content
 1624.48 -#define KWAPP_MB_INT32_CONTINUATION  0x80  // Continuation Bit of an octet of a Multibyte 32 bit int is set.
 1624.49 -// Binary encoding for remote configuration of WAP browser settings
 1624.50 -// same as for the Nokia 7110 
 1624.51 -
 1624.52 -// **********    APPLICATION SPECIFIC CODE LEVEL TAG TOKENS    *************
 1624.53 -#define	KWAPP_CHAR_LIST		  0x05	// Code level tag (CLT), indicates start 
 1624.54 -									// of a characteristic list element
 1624.55 -#define KWAPP_CHARACTERISTIC  0x06	// code level tag (CLT), indicates start 
 1624.56 -									// of a characteristic element
 1624.57 -#define KWAPP_PARM			  0x07	// CLT  indicating start of a 
 1624.58 -									// attribute element of a characteristic
 1624.59 -
 1624.60 -// ***************	 ATTRIBUTE TOKENS    *****************************
 1624.61 -#define KWAPP_TYPE				0x05 // Undocumented token which indicates the 
 1624.62 -								  	 // start of a TYPE attribute i.e. "TYPE="
 1624.63 -#define KWAPP_ADDR_TYPE			0x06 // Characteristic type  = ADDRESS
 1624.64 -#define KWAPP_URL_TYPE			0x07 // Characteristic type = URL 
 1624.65 -#define KWAPP_NAME_TYPE			0x08 // Characteristic Type = NAME 
 1624.66 -#define KWAPP_ID				0x7D // Characteristic Type = ID 
 1624.67 -#define KWAPP_BOOKMARK			0x7F // Characteristic Type = BOOKMARK
 1624.68 -
 1624.69 -#define KWAPP_NAME_ATTRIB		0x10 // A NAME attribute follows, i.e "NAME="
 1624.70 -#define KWAPP_VALUE_ATTRIB		0x11 // A VALUE attribute follows, i.e "VALUE"
 1624.71 -
 1624.72 -// ***************   PARM TYPES and VALUES  ***************************
 1624.73 -#define KWAPP_BEARER			0x12 // This is a BEARER element 
 1624.74 -#define KWAPP_PROXY				0x13 // This is a PROXY 
 1624.75 -#define KWAPP_PORT				0x14 // PORT element
 1624.76 -#define KWAPP_NAME				0x15 // This is a NAME element 
 1624.77 -
 1624.78 -// IMPORTANT tag 0x16 had different meanings for different versions of the OTA settings 
 1624.79 -// Not in Ver 4.0, = ICON token in Version 4.3 but 4.3 NOT SUPPORTED!!
 1624.80 -
 1624.81 -#define KWAPP_PROXYTYPE			0x16 // PROXY_TYPE in Settings specification version 5.0!
 1624.82 -
 1624.83 -#define KWAPP_URL				0x17 // Not defined for Version 4.0
 1624.84 -									 // Start of a URL, i.e. "TYPE=URL" for Version 5.0 
 1624.85 -#define KWAPP_PROXY_AUTHNAME	0x18 // Not defined for Ver. 4.0 - website uses Proxy token and inline string "AUTHNAME"
 1624.86 -									 // Version 5.0 - proxy name follows
 1624.87 -#define KWAPP_PROXY_AUTHSECRET	0x19 // Not defined for Version 4.0 - use Proxy token and inline string
 1624.88 -									 // Versions 5.0 - the password for the proxy follows
 1624.89 -#define KWAPP_SMS_SMSC_ADDR		0x1A // Service centre address for SMS service
 1624.90 -#define KWAPP_USSD_SERV_CODE	0x1B // Service centre address for USSD service
 1624.91 -#define KWAPP_ACCESS_POINT_NAME	0x1C // GPRS access point
 1624.92 -#define KWAPP_PPP_LOGIN_TYPE	0x1D 
 1624.93 -#define KWAPP_PROXY_LOGIN_TYPE	0x1E 
 1624.94 -#define KWAPP_CSD_DIALSTRING	0x21 // Dialing sting for CSD gateway
 1624.95 -#define KWAPP_PPP_AUTHTYPE		0x22 // type of authentification
 1624.96 -#define KWAPP_PPP_AUTHNAME		0x23 // authentification name
 1624.97 -#define KWAPP_PPP_AUTHSECRET	0x24 // authentification password
 1624.98 -#define KWAPP_PPP_LOGINTYPE		0x25 // authentification password
 1624.99 -#define	KWAPP_CSD_CALLTYPE		0x28 // CSD calltype 
1624.100 -#define KWAPP_CSD_CALLSPEED		0x29 // CSD callspeed
1624.101 -
1624.102 -#define KWAPP_GSM_SMS_OLD		0x41 // Defined as GSM\SMS in Nokia Spec version 4.0,but not 5.0
1624.103 -									 // Distinguish it's Ver 4.0 by WAP Version ( = 1.0 )
1624.104 -									 // For versions 5.0 the WAP  XML version = 1.1, & token = 0x46 
1624.105 -
1624.106 -#define KWAPP_GSM_CSD			0x45 // GSM CSD service 
1624.107 -
1624.108 -// IMPORTANT tag 0x46 has multiple meaning across different versions of the Over the Air settings
1624.109 -#define KWAPP_GSM_SMS_NEW		0x46 // Not defined for Version 4.0
1624.110 -									 //  GSM SMS  Nokia spec version 5.0
1624.111 -
1624.112 -#define KWAPP_GSM_USSD			0x47 //  Unstructured Short Service Data service 
1624.113 -									 //  Not defined for version 4.0  
1624.114 -
1624.115 -//IMPORTANT tag 0x48 has different meanings in different versions of the Over the Air Settings specs
1624.116 -#define KWAPP_IS136				0x48 // Not defined for Version 4.0
1624.117 -									 // IS-136/CSD service in Nokia spec version 5.0
1624.118 -
1624.119 -#define KWAPP_GPRS				0x49 // GSM/GPRS service  - added in OTA v6.0
1624.120 -
1624.121 -
1624.122 -#define KWAPP_PORT_9200			0x60 // Port 9200 - non continuous and not secure
1624.123 -#define KWAPP_PORT_9201			0x61 // Port 9201 - continuous but not secure
1624.124 -#define KWAPP_PORT_9202			0x62 // Indicates port 9202 - secure but non continuous conection
1624.125 -#define KWAPP_PORT_9203			0x63 // Indicates port 9203 - secure and continuous 
1624.126 -#define KWAPP_AUTOMATIC			0x64 
1624.127 -#define KWAPP_MANUAL			0x65 
1624.128 -#define KWAPP_SPEED_AUTO		0x6A // Use auto selection of speed
1624.129 -#define KWAPP_SPEED_9600		0x6B // Indicates comm speed is 9600
1624.130 -#define KWAPP_SPEED_14400		0x6C // Indicates comm speed is 14400
1624.131 -#define	KWAPP_SPEED_19200		0x6D // Comm speed is 19200
1624.132 -#define KWAPP_SPEED_28800		0x6E // Comms speed is 28800
1624.133 -#define KWAPP_SPEED_38400		0x6F // Comms speed is 38400
1624.134 -#define KWAPP_PAP				0x70 // Interface protocol = PAP
1624.135 -#define KWAPP_CHAP				0x71 // Interface protocol = CHAP
1624.136 -#define KWAPP_ANALOGUE			0x72 // Analogue connection
1624.137 -#define KWAPP_ISDN				0x73 // Digital ISDN connection
1624.138 -#define KWAPP_SPEED_43200		0x74 // Communication speed of 42K
1624.139 -#define KWAPP_SPEED_56700		0x75 // Comm speed of 56k
1624.140 -#define KWAPP_MSISDN_NO			0x76 // Proxy type is MSISDN number (relevant for USSD)
1624.141 -#define KWAPP_IPV4				0x77 // Proxy type is an IP address (relevant for USSD)
1624.142 -#define KWAPP_MSCHAP			0x78 // Interface protocol = CHAP
1624.143 -#define KWAPP_NAME_ISP			0X7E // Start of Internet Service Provider follows
1624.144 -#define KWAPP_MMS_URL			0x7C // Address of Multi Media Service Centre -added in OTA v7.0
1624.145 -
1624.146 -
1624.147 -// Labels for use in array of ParsedFields - application specific not Nokia 
1624.148 -
1624.149 -// CHARACTERISTIC DELIMITORS
1624.150 -_LIT(KWappCharAddress,	"CHAR-ADDRESS"); // Start of an Address Characteristic
1624.151 -_LIT(KWappCharName,		"CHAR-NAME");	 // Start of a Name Characteristic
1624.152 -_LIT(KWappCharURL,		"CHAR-URL");	 // Start of a URL Characteristic	
1624.153 -_LIT(KWappCharMMSURL,	"CHAR-MMSURL");	 // Start of a URL Characteristic	
1624.154 -_LIT(KWappCharBookmark, "CHAR-BOOKMARK");// Start of a Bookmark Characteristic
1624.155 -_LIT(KWappCharID,		"CHAR-ID");		 // Start of an ID characteristic
1624.156 -
1624.157 -_LIT(KWappXMLversion,"VERSIONx10");
1624.158 -_LIT(KWappPublicID, "PUBLICID");
1624.159 -_LIT(KWappCharacterSet, "CHARSET");
1624.160 -
1624.161 -//XML Document Characteristic Tags
1624.162 -_LIT(KWappAddr, "ADDRESS");  
1624.163 -_LIT(KWappURL, "URL");
1624.164 -_LIT(KWappMMSURL, "MMSURL"); // Added in v6.6 of Nokia OTA Spec
1624.165 -_LIT(KWappName, "NAME");  
1624.166 -_LIT(KWappBookmark, "BOOKMARK");
1624.167 -_LIT(KWappID, "ID");
1624.168 -
1624.169 -
1624.170 -// General tags
1624.171 -_LIT(KWappBearer, "BEARER");
1624.172 -_LIT(KWappProxy, "PROXY");
1624.173 -_LIT(KWappPort, "PORT");
1624.174 -_LIT(KWappProxyType, "PROXY_TYPE");
1624.175 -
1624.176 -_LIT(KWappProxyAuthName, "PROXY_AUTHNAME");
1624.177 -_LIT(KWappProxyAuthSecret, "PROXY_AUTHSECRET");
1624.178 -_LIT(KWappProxyLoginType, "PROXY_LOGINTYPE");
1624.179 -_LIT(KWappSMSCAddress, "SMS_SMSC_ADDRESS");
1624.180 -_LIT(KWappUSSDCode, "USSD_SERVICE_CODE");
1624.181 -_LIT(KWappISP, "ISP_NAME");
1624.182 -_LIT(KWappAccessPointName, "ACCESS_POINT_NAME");
1624.183 -
1624.184 -_LIT(KWappCsdDial, "CSD_DIALSTRING");
1624.185 -_LIT(KWappPPPAuthType, "PPP_AUTHTYPE");
1624.186 -_LIT(KWappPPPAuthName, "PPP_AUTHNAME");
1624.187 -_LIT(KWappPPPAuthSecret, "PPP_AUTHSECRET");
1624.188 -_LIT(KWappPPPLoginType, "PPP_LOGINTYPE");
1624.189 -_LIT(KWappCsdCallType, "CSD_CALLTYPE");
1624.190 -_LIT(KWappCsdCallSpeed, "CSD_CALLSPEED");
1624.191 -
1624.192 -_LIT(KWappGsmCsd, "GSM/CSD");
1624.193 -_LIT(KWappGsmSms, "GSM/SMS");
1624.194 -_LIT(KWappGsmUssd, "GSM/USSD");
1624.195 -_LIT(KWappIS136Csd, "IS136/CSD");
1624.196 -_LIT(KWappGprs, "GPRS");   // Added in OTA v6.0
1624.197 -
1624.198 -_LIT(KWappPort9200, "9200");
1624.199 -_LIT(KWappPort9201, "9201");
1624.200 -_LIT(KWappPort9202, "9202");
1624.201 -_LIT(KWappPort9203, "9203");
1624.202 -
1624.203 -_LIT(KWappSpeedAuto, "AUTO");
1624.204 -_LIT(KWappSpeed9600, "9600");
1624.205 -_LIT(KWappSpeed14400, "14400");
1624.206 -// Additional speeds added in Version 5.0
1624.207 -_LIT(KWappSpeed19200, "19200");
1624.208 -_LIT(KWappSpeed28800, "28800");
1624.209 -_LIT(KWappSpeed38400, "38400");
1624.210 -_LIT(KWappSpeed43200, "43200");
1624.211 -_LIT(KWappSpeed56700, "57600");
1624.212 -
1624.213 -_LIT(KWappPAP, "PAP");
1624.214 -_LIT(KWappCHAP, "CHAP");
1624.215 -_LIT(KWappMSCHAP, "MSCHAP");
1624.216 -_LIT(KWappAnalogue, "ANALOGUE");
1624.217 -_LIT(KWappISDN, "ISDN");
1624.218 -
1624.219 -_LIT(KWappAuthAutomatic, "AUTOMATIC");
1624.220 -_LIT(KWappAuthManual, "MANUAL");
1624.221 -
1624.222 -_LIT(KWappMsisdnNo, "MSISDN_NO");
1624.223 -_LIT(KWappIpv4, "IPV4");
1624.224 -
1624.225 -
1624.226 -#endif
  1625.1 --- a/epoc32/include/waptestutils.h	Tue Mar 16 16:12:26 2010 +0000
  1625.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1625.3 @@ -1,146 +0,0 @@
  1625.4 -// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies).
  1625.5 -// All rights reserved.
  1625.6 -// This component and the accompanying materials are made available
  1625.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1625.8 -// which accompanies this distribution, and is available
  1625.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1625.10 -//
 1625.11 -// Initial Contributors:
 1625.12 -// Nokia Corporation - initial contribution.
 1625.13 -//
 1625.14 -// Contributors:
 1625.15 -//
 1625.16 -// Description:
 1625.17 -//
 1625.18 -
 1625.19 -#if !defined(__WAPTESTUTILS_H__)
 1625.20 -#define __WAPTESTUTILS_H__
 1625.21 -
 1625.22 -#include <e32base.h>
 1625.23 -#include <e32test.h>
 1625.24 -#include <f32file.h>
 1625.25 -#include <flogger.h>
 1625.26 -
 1625.27 -#if !defined(__LOGGING)
 1625.28 -	#define __LOGGING
 1625.29 -#endif
 1625.30 -
 1625.31 -#include "waplog.h"
 1625.32 -#include "logdef.h"
 1625.33 -
 1625.34 -//	Constants
 1625.35 -const TUid KUidWapTestUtils = {0x10005188};
 1625.36 -const TInt KMaxUserEntrySize = 50;
 1625.37 -
 1625.38 -//Test Harness Logging
 1625.39 -
 1625.40 -#define KLogsDir				_L("c:\\logs\\")
 1625.41 -#define KWapLogsDirName			_L("WapTest")
 1625.42 -
 1625.43 -#define KTestHeader				_L("Test Results")
 1625.44 -#define KTestStarting			_L("Test %d Starting")
 1625.45 -#define KTestStartingWithDesc	_L("Test %d Starting (%S)")
 1625.46 -#define KNextTestStepWithDesc	_L("Test %d Step %d (%S)")
 1625.47 -#define KTestPassed				_L("Test %d OK")
 1625.48 -#define KTestFailed				_L("Test %d FAILED (error = %d)")
 1625.49 -#define KTestHarnessCompleted	_L("Tests Completed Ok")
 1625.50 -#define KTestHarnessFailed		_L("Test FAILED (%d failed test(s))")
 1625.51 -#define KTestFailInfo			_L("Test %d : %S failed with Error %d") 
 1625.52 -#define KTestCommentPrepend		_L("\t")
 1625.53 -
 1625.54 -
 1625.55 -class CWapTestHarness : public CBase
 1625.56 -/**
 1625.57 -	Test harness providing logging features
 1625.58 -	@publishedAll
 1625.59 -	@released
 1625.60 -*/
 1625.61 -
 1625.62 -	{
 1625.63 -public:
 1625.64 -	IMPORT_C static CWapTestHarness* NewLC(const TDesC& aTitle);
 1625.65 -	IMPORT_C static CWapTestHarness* NewL(const TDesC& aTitle);
 1625.66 -	~CWapTestHarness();
 1625.67 -
 1625.68 -	IMPORT_C void StartTestL(const TDesC& aName);
 1625.69 -	IMPORT_C void NextStep(const TDesC& aStepName);
 1625.70 -	IMPORT_C void EndTest(TInt aErrorCode);
 1625.71 -	IMPORT_C void LogIt(TRefByValue<const TDesC> aFmt, ...);
 1625.72 -	IMPORT_C void operator()(TInt aResult,TInt aLineNum);
 1625.73 -	IMPORT_C void operator()(TInt aResult);
 1625.74 -	IMPORT_C void PressAnyKey();
 1625.75 -	IMPORT_C void DumpData(HBufC8& aData, TBool logIt = EFalse);
 1625.76 -	IMPORT_C void GetAnEntry(const TDesC & ourPrompt, TDes & currentstring);
 1625.77 -	IMPORT_C TInt GetSelection(const TDesC& ourPrompt, const TDesC& validChoices);
 1625.78 -	IMPORT_C void SetScript(RFile& scriptFile);
 1625.79 -	inline void DoResourceLeakTest(TBool aValue);
 1625.80 -	inline RTest& Test();
 1625.81 -
 1625.82 -	inline static void DefaultLogFileName(TDes& aFileName);
 1625.83 -private:
 1625.84 -	CWapTestHarness(const TDesC& aTitle);
 1625.85 -	void ConstructL(const TDesC& aTitle);
 1625.86 -	void Panic(TInt aPanic);
 1625.87 -	void TestHarnessFailed();
 1625.88 -	void TestHarnessComplete();
 1625.89 -	void ResourceLeakTest();
 1625.90 -	inline void CreateFlogger(const TDesC& aFileName, TInt aShowDate=ETrue, TInt aShowTime=ETrue);
 1625.91 -	inline void WriteComment(const TDesC& aComment);
 1625.92 -	TInt ReadLineFromScript(TDes& aBuffer);
 1625.93 -
 1625.94 -private:
 1625.95 -	//	Helper class to store failed tests
 1625.96 -	class CTestInfo;
 1625.97 -	enum TPanicCode
 1625.98 -		{
 1625.99 -		EBadStartTest,
1625.100 -		EBadEndTest,
1625.101 -		EBadCLogPtr
1625.102 -		};
1625.103 -private:
1625.104 -	RTest iTest;
1625.105 -	RFileLogger iFlogger;
1625.106 -	RFile* iScriptFile;
1625.107 -	__DECLARE_LOG;	//	Does CLogClient* iLogPtr;
1625.108 -	TInt iTestCount;
1625.109 -	CArrayPtrFlat<CTestInfo>* iFailedTests;
1625.110 -	TTime iStartTime;
1625.111 -	TBool iCanStartTest;
1625.112 -	TInt iStepNumber;
1625.113 -	TInt iStartHandleCount;
1625.114 -	TBool iDoResourceLeakTest;
1625.115 -	TBool iScriptRunning;
1625.116 -	};
1625.117 -
1625.118 -class CWapTestHarness::CTestInfo : public CBase
1625.119 -
1625.120 -/**
1625.121 -	Holds test number and name
1625.122 -	@publishedAll
1625.123 -	@released
1625.124 -*/
1625.125 -	{
1625.126 -public:
1625.127 -	static CTestInfo* NewLC(const TDesC& aName, TInt aNumber, TInt aErrorCode);
1625.128 -	static CTestInfo* NewL(const TDesC& aName, TInt aNumber, TInt aErrorCode);
1625.129 -	~CTestInfo();
1625.130 -
1625.131 -	void SetNameL(const TDesC& aName);
1625.132 -	void SetNumber(TInt aNumber);
1625.133 -	void SetErrorCode(TInt aErrorCode);
1625.134 -
1625.135 -	inline TPtr Name() const;
1625.136 -	inline TInt Number() const;
1625.137 -	inline TInt ErrorCode() const;
1625.138 -private:
1625.139 -	CTestInfo();
1625.140 -	void ConstructL(const TDesC& aName, TInt aNumber, TInt aErrorCode);
1625.141 -private:
1625.142 -	HBufC* iName;
1625.143 -	TInt iNumber;
1625.144 -	TInt iErrorCode;
1625.145 -	};
1625.146 -
1625.147 -#include <waptestutils.inl>
1625.148 -
1625.149 -#endif	//	__WAPTESTUTILS_H__
  1626.1 --- a/epoc32/include/wbconverter.h	Tue Mar 16 16:12:26 2010 +0000
  1626.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1626.3 @@ -1,471 +0,0 @@
  1626.4 -// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
  1626.5 -// All rights reserved.
  1626.6 -// This component and the accompanying materials are made available
  1626.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1626.8 -// which accompanies this distribution, and is available
  1626.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1626.10 -//
 1626.11 -// Initial Contributors:
 1626.12 -// Nokia Corporation - initial contribution.
 1626.13 -//
 1626.14 -// Contributors:
 1626.15 -//
 1626.16 -// Description:
 1626.17 -//
 1626.18 -
 1626.19 -#ifndef __WBCONVERTER_H
 1626.20 -#define __WBCONVERTER_H
 1626.21 -
 1626.22 -#include <e32std.h>
 1626.23 -#include <s32stor.h>
 1626.24 -#include <f32file.h>
 1626.25 -
 1626.26 -// forward declarations
 1626.27 -//
 1626.28 -class CWbxmlToken;
 1626.29 -class MWbxmlConverterObserver;
 1626.30 -class CByteList;
 1626.31 -class CCnvCharacterSetConverter;
 1626.32 -
 1626.33 -// consts, defines, enums
 1626.34 -//
 1626.35 -/**
 1626.36 -@publishedAll
 1626.37 -@deprecated
 1626.38 -*/
 1626.39 -_LIT8(KWbXmlVersion10,"<?xml version=\"1.0\"?>");
 1626.40 -
 1626.41 -/**
 1626.42 -@publishedAll
 1626.43 -@deprecated
 1626.44 -*/
 1626.45 -_LIT8(KWbPublicIdStartWml,"<!DOCTYPE wml PUBLIC \"");
 1626.46 -/**
 1626.47 -@publishedAll
 1626.48 -@deprecated
 1626.49 -*/
 1626.50 -_LIT8(KWbPublicIdStartSi,"<!DOCTYPE si PUBLIC \"");
 1626.51 -/**
 1626.52 -@publishedAll
 1626.53 -@deprecated
 1626.54 -*/
 1626.55 -_LIT8(KWbPublicIdStartSl,"<!DOCTYPE sl PUBLIC \"");
 1626.56 -
 1626.57 -
 1626.58 -/**
 1626.59 -@publishedAll
 1626.60 -@deprecated
 1626.61 -*/
 1626.62 -_LIT(KWbTokenDatabaseWml11,"\\RESOURCE\\WAPPUSH\\WMLC11.TOK");
 1626.63 -/**
 1626.64 -@publishedAll
 1626.65 -@deprecated
 1626.66 -*/
 1626.67 -_LIT(KWbTokenDatabaseWml12,"\\RESOURCE\\WAPPUSH\\WMLC12.TOK");
 1626.68 -/**
 1626.69 -@publishedAll
 1626.70 -@deprecated
 1626.71 -*/
 1626.72 -_LIT(KWbTokenDatabaseSI10,"\\RESOURCE\\WAPPUSH\\SI10.TOK");
 1626.73 -/**
 1626.74 -@publishedAll
 1626.75 -@deprecated
 1626.76 -*/
 1626.77 -_LIT(KWbTokenDatabaseSL10,"\\RESOURCE\\WAPPUSH\\SL10.TOK");
 1626.78 -
 1626.79 -/**
 1626.80 -@publishedAll
 1626.81 -@deprecated
 1626.82 -*/
 1626.83 -_LIT8(KWbPublicIdEnd11,"\" \"http://www.wapforum.org/DTD/wml_1.1.xml\">");
 1626.84 -/**
 1626.85 -@publishedAll
 1626.86 -@deprecated
 1626.87 -*/
 1626.88 -_LIT8(KWbPublicIdEnd12,"\" \"http://www.wapforum.org/DTD/wml_1.2.xml\">");
 1626.89 -/**
 1626.90 -@publishedAll
 1626.91 -@deprecated
 1626.92 -*/
 1626.93 -_LIT8(KWbPublicIdEndSI10,"\" \"http://www.wapforum.org/DTD/si.dtd\">");
 1626.94 -/**
 1626.95 -@publishedAll
 1626.96 -@deprecated
 1626.97 -*/
 1626.98 -_LIT8(KWbPublicIdEndSL10,"\" \"http://www.wapforum.org/DTD/sl.dtd\">");
 1626.99 -
1626.100 -/**
1626.101 -@publishedAll
1626.102 -@deprecated
1626.103 -*/
1626.104 -_LIT8(KWbTagStart,"<");
1626.105 -/**
1626.106 -@publishedAll
1626.107 -@deprecated
1626.108 -*/
1626.109 -_LIT8(KWbTagStartClose,"</");
1626.110 -/**
1626.111 -@publishedAll
1626.112 -@deprecated
1626.113 -*/
1626.114 -_LIT8(KWbTagEndWithContent,">");
1626.115 -/**
1626.116 -@publishedAll
1626.117 -@deprecated
1626.118 -*/
1626.119 -_LIT8(KWbTagEndWithoutContent,"/>");
1626.120 -/**
1626.121 -@publishedAll
1626.122 -@deprecated
1626.123 -*/
1626.124 -_LIT8(KWbVariableStart,"$(");
1626.125 -/**
1626.126 -@publishedAll
1626.127 -@deprecated
1626.128 -*/
1626.129 -_LIT8(KWbVariableEscaped,":E)");
1626.130 -/**
1626.131 -@publishedAll
1626.132 -@deprecated
1626.133 -*/
1626.134 -_LIT8(KWbVariableUnescaped,":U)");
1626.135 -/**
1626.136 -@publishedAll
1626.137 -@deprecated
1626.138 -*/
1626.139 -_LIT8(KWbVariableNoescape,":N)");
1626.140 -/**
1626.141 -@publishedAll
1626.142 -@deprecated
1626.143 -*/
1626.144 -_LIT8(KWbVariableNormal,")");
1626.145 -/**
1626.146 -@publishedAll
1626.147 -@deprecated
1626.148 -*/
1626.149 -_LIT8(KWbQuote,"\"");
1626.150 -/**
1626.151 -@publishedAll
1626.152 -@deprecated
1626.153 -*/
1626.154 -_LIT8(KWbSpace," ");
1626.155 -/**
1626.156 -@publishedAll
1626.157 -@deprecated
1626.158 -*/
1626.159 -_LIT8(KWbTab,"\t");
1626.160 -/**
1626.161 -@publishedAll
1626.162 -@deprecated
1626.163 -*/
1626.164 -_LIT8(KWbLineBreak,"\n");
1626.165 -
1626.166 -/**
1626.167 -@publishedAll
1626.168 -@deprecated
1626.169 -*/
1626.170 -const TInt8 KWbxmlIdIndex = 0;
1626.171 -/**
1626.172 -@publishedAll
1626.173 -@deprecated
1626.174 -*/
1626.175 -const TInt8 KWbxmlIdUnknown = 1;
1626.176 -/**
1626.177 -@publishedAll
1626.178 -@deprecated
1626.179 -*/
1626.180 -const TInt8 KWbxmlIdWml10 = 2;
1626.181 -/**
1626.182 -@publishedAll
1626.183 -@deprecated
1626.184 -*/
1626.185 -const TInt8 KWbxmlIdWta10 = 3;
1626.186 -/**
1626.187 -@publishedAll
1626.188 -@deprecated
1626.189 -*/
1626.190 -const TInt8 KWbxmlIdWml11 = 4;
1626.191 -/**
1626.192 -@publishedAll
1626.193 -@deprecated
1626.194 -*/
1626.195 -const TInt8 KWbxmlIdSI = 5;
1626.196 -/**
1626.197 -@publishedAll
1626.198 -@deprecated
1626.199 -*/
1626.200 -const TInt8 KWbxmlIdSL = 6;
1626.201 -/**
1626.202 -@publishedAll
1626.203 -@deprecated
1626.204 -*/
1626.205 -const TInt8 KWbxmlIdWml12 = 9;
1626.206 -
1626.207 -// Entity translation literals
1626.208 -/**
1626.209 -@publishedAll
1626.210 -@deprecated
1626.211 -*/
1626.212 -_LIT8(KEntityDollar,"$$");
1626.213 -/**
1626.214 -@publishedAll
1626.215 -@deprecated
1626.216 -*/
1626.217 -_LIT8(KEntityAmp,"&amp;");
1626.218 -/**
1626.219 -@publishedAll
1626.220 -@deprecated
1626.221 -*/
1626.222 -_LIT8(KEntityLt,"&lt;");
1626.223 -/**
1626.224 -@publishedAll
1626.225 -@deprecated
1626.226 -*/
1626.227 -_LIT8(KEntityGt,"&gt;");
1626.228 -/**
1626.229 -@publishedAll
1626.230 -@deprecated
1626.231 -*/
1626.232 -_LIT8(KEntityQuot,"&quot;");
1626.233 -/**
1626.234 -@publishedAll
1626.235 -@deprecated
1626.236 -*/
1626.237 -_LIT8(KEntityApos,"&apos;");
1626.238 -/**
1626.239 -@publishedAll
1626.240 -@deprecated
1626.241 -*/
1626.242 -_LIT8(KEntityNbsp,"&nbsp;");
1626.243 -/**
1626.244 -@publishedAll
1626.245 -@deprecated
1626.246 -*/
1626.247 -_LIT8(KEntityShy,"&shy;");
1626.248 -
1626.249 -/**
1626.250 -@publishedAll
1626.251 -@deprecated
1626.252 -*/
1626.253 -const TUint16 KWbxmlSkipLiteralEndTagMagicToken = 0xac1d;
1626.254 -
1626.255 -
1626.256 -///////////////////////////////////////////////////////////////////
1626.257 -// CWbxmlConverter
1626.258 -///////////////////////////////////////////////////////////////////
1626.259 -class RFileReadStream;
1626.260 -//##ModelId=3B6678E20007
1626.261 -class CWbxmlConverter : public CBase
1626.262 -/**
1626.263 -@publishedAll
1626.264 -@deprecated
1626.265 -*/
1626.266 -{
1626.267 -public:	// Methods
1626.268 -	//##ModelId=3B6678E30199
1626.269 -	~CWbxmlConverter();
1626.270 -
1626.271 -	// NOTE: input data really is 8bit bytecode
1626.272 -	//##ModelId=3B6678E300F9
1626.273 -	IMPORT_C static CWbxmlConverter* CWbxmlConverter::NewL(RFs& aFs, MWbxmlConverterObserver* aObserver);
1626.274 -	//##ModelId=3B6678E300BD
1626.275 -	IMPORT_C static CWbxmlConverter* CWbxmlConverter::NewLC(RFs& aFs, MWbxmlConverterObserver* aObserver);
1626.276 -	//##ModelId=3B6678E30135
1626.277 -	IMPORT_C static CWbxmlConverter* CWbxmlConverter::NewL(RFs& aFs, MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding);
1626.278 -	//##ModelId=3B6678E3009F
1626.279 -	IMPORT_C void ProcessDataL(HBufC8& aBuffer);
1626.280 -	//##ModelId=3B6678E3009E
1626.281 -	IMPORT_C void CommitL();
1626.282 -
1626.283 -private:	// Emumerations
1626.284 -
1626.285 -	enum TGotoState
1626.286 -	{
1626.287 -		EGotoStreaming = 1,
1626.288 -		EGotoString,
1626.289 -		EGotoOpaque
1626.290 -	};
1626.291 -	enum TConvertState
1626.292 -	{
1626.293 -		EConvertError = 1,
1626.294 -		EConvertVersion,
1626.295 -		EConvertPublicIdValue,
1626.296 -		EConvertCharset,
1626.297 -		EConvertStringTable,
1626.298 -		EConvertPublicIdName,
1626.299 -		EConvertData,
1626.300 -		EConvertFinished
1626.301 -	};
1626.302 -
1626.303 -private:	// Methods
1626.304 -
1626.305 -	//##ModelId=3B6678E30080
1626.306 -	CWbxmlConverter(RFs& aFs);
1626.307 -	//##ModelId=3B6678E30045
1626.308 -	void ConstructL(MWbxmlConverterObserver* aObserver, const TDesC* aCharacterEncoding);
1626.309 -
1626.310 -	//##ModelId=3B6678E30044
1626.311 -	void HandleDataL();
1626.312 -	//##ModelId=3B6678E30009
1626.313 -	void SetNextStateL(const TInt aResult, const TConvertState aState);
1626.314 -	//##ModelId=3B6678E30008
1626.315 -	TInt ConvertWbxmlVersionL();
1626.316 -	//##ModelId=3B6678E203E8
1626.317 -	TInt ConvertPublicIdValueL();	// Extract PublicId
1626.318 -	//##ModelId=3B6678E203E7
1626.319 -	TInt ConvertPublicIdNameL();	// Report PublicId
1626.320 -	//##ModelId=3B6678E203E6
1626.321 -	TInt ConvertCharsetL();
1626.322 -	//##ModelId=3B6678E203DE
1626.323 -	TInt ConvertStringTableL();
1626.324 -	//##ModelId=3B6678E203DD
1626.325 -	TInt ConvertDataL();
1626.326 -	//##ModelId=3B6678E203DC
1626.327 -	TInt ConvertDataStreamingL();
1626.328 -	//##ModelId=3B6678E203D3
1626.329 -	TInt ConvertDataStringL();
1626.330 -	//##ModelId=3B6678E203D2
1626.331 -	TInt ConvertOpaqueDataL();
1626.332 -	//##ModelId=3B6678E203B4
1626.333 -	HBufC16* FormatDateStringL(TDesC8& aData);
1626.334 -
1626.335 -	//##ModelId=3B6678E20396
1626.336 -	TInt OpenTokenFileL(HBufC& aFileName);
1626.337 -	//##ModelId=3B6678E2035A
1626.338 -	void ReadTokenFileL(RFileReadStream& aStream, HBufC8& aBuffer);
1626.339 -	//##ModelId=3B6678E2033C
1626.340 -	TInt LoadTokensL(HBufC* aBuffer);
1626.341 -
1626.342 -	//##ModelId=3B6678E2030A
1626.343 -	TInt ExtractMultiByte(TUint32* aMultiByte, TInt aSkipHeader);
1626.344 -	//##ModelId=3B6678E202E3
1626.345 -	void Indent(const TInt aCount) const;
1626.346 -	//##ModelId=3B6678E202E2
1626.347 -	void FinishStringL();
1626.348 -	//##ModelId=3B6678E202C4
1626.349 -	HBufC16* CharsetConvertDataL(TDesC8& aData);
1626.350 -
1626.351 -	// Gets the full path to wmlc token table. Input aTokenFilePath is the path, without the drive.
1626.352 -	//
1626.353 -	// In:
1626.354 -	// aTokenFilePath	- the path to the token table file.
1626.355 -	//
1626.356 -	// Rtn: the full path to the token table file. Ownership is transfered to caller.
1626.357 -	//
1626.358 -	//##ModelId=3B6678E202A6
1626.359 -	HBufC* FindTokenFileL(const TDesC& aTokenFilePath) const;
1626.360 -
1626.361 -	// Replaces characters originating from chracter entity references with the reference string
1626.362 -	// For example chracter '&' will be "decoded" back to "&amp;"
1626.363 -	//
1626.364 -	// In:
1626.365 -	// aString - The original string containing the undedcoded characters.
1626.366 -	//			 This string can get ReAllocated during the process - DO NOT USE THIS POINTER
1626.367 -	//           AFTER THE CALL to this method. (use the returned one instead...)
1626.368 -	// Return:
1626.369 -	// HBufC*  - Pointer to the string with replaced stuff
1626.370 -	//
1626.371 -	//##ModelId=3B6678E20288
1626.372 -	HBufC* ReplaceCharacterEntitiesL(HBufC* aString);
1626.373 -
1626.374 -	// MWbxmlConverterObserver interface overloads
1626.375 -	//##ModelId=3B6678E2024C
1626.376 -	void OutputL(const TUint32 aSource) const;
1626.377 -
1626.378 -	//##ModelId=3B6678E2022E
1626.379 -	TBool OutputCheckQuoteL(HBufC8& aSource) const;
1626.380 -
1626.381 -	// Helper method to optimise the OutputL oveloads
1626.382 -	//##ModelId=3B6678E20211
1626.383 -	void BufferAndOutputL(const TDesC8& aSource) const;
1626.384 -
1626.385 -	// Must exist for Binary Compatibility
1626.386 -	//##ModelId=3B6678E20210
1626.387 -	IMPORT_C virtual void CWbxmlConverter_Reserved1();
1626.388 -
1626.389 -private:	// Attributes
1626.390 -	
1626.391 -	// For binary compatibility
1626.392 -	//##ModelId=3B6678E20206
1626.393 -	TAny* CWbxmlConverter_Reserved;
1626.394 -	
1626.395 -	// Attributes
1626.396 -	// Note: conversion table from disk ie. you can change it at runtime
1626.397 -	//##ModelId=3B6678E201F2
1626.398 -	CArrayPtrFlat<CWbxmlToken>* iTagArray;
1626.399 -	//##ModelId=3B6678E201D3
1626.400 -	CArrayPtrFlat<CWbxmlToken>* iAttArray;
1626.401 -
1626.402 -	//##ModelId=3B6678E2018D
1626.403 -	MWbxmlConverterObserver* iObserver;
1626.404 -
1626.405 -	//##ModelId=3B6678E20179
1626.406 -	TUint8 iWbxmlVersion;
1626.407 -	//##ModelId=3B6678E20165
1626.408 -	TUint32 iWbxmlCharset;
1626.409 -	//##ModelId=3B6678E20151
1626.410 -	TUint32 iPublicId;
1626.411 -	//##ModelId=3B6678E2013D
1626.412 -	TUint32 iPublicIdIndex;
1626.413 -
1626.414 -	// Note: must handle source as 8bit data even in Unicode compile!
1626.415 -	//##ModelId=3B6678E2012B
1626.416 -	CByteList* iByteList;
1626.417 -	//##ModelId=3B6678E2011F
1626.418 -	HBufC8* iStringTable;
1626.419 -	//##ModelId=3B6678E2010D
1626.420 -	HBufC8* iPublicIdStr;
1626.421 -	//##ModelId=3B6678E20101
1626.422 -	RFs&	iFs;
1626.423 -
1626.424 -	//##ModelId=3B6678E200ED
1626.425 -	TInt iState;
1626.426 -	//##ModelId=3B6678E200E3
1626.427 -	TUint32 iContinue;
1626.428 -
1626.429 -	//##ModelId=3B6678E200D1
1626.430 -	TUint8 iVariable;
1626.431 -	//##ModelId=3B6678E200C5
1626.432 -	TUint8 hasAttrs;
1626.433 -	//##ModelId=3B6678E200B3
1626.434 -	TUint8 hasContent;
1626.435 -
1626.436 -
1626.437 -	//##ModelId=3B6678E200A7
1626.438 -	TInt iTagIndex;
1626.439 -	//##ModelId=3B6678E20095
1626.440 -	CArrayFixFlat<TUint16>* iTagStack;
1626.441 -	//##ModelId=3B6678E2006B
1626.442 -	TBool iRestrictedOutput;
1626.443 -
1626.444 -	enum TParsing
1626.445 -	{
1626.446 -		EParseNot = 0,
1626.447 -		EParseTag,
1626.448 -		EParseAttrs
1626.449 -	};
1626.450 -	//##ModelId=3B6678E20059
1626.451 -	TParsing iParsing;
1626.452 -	//##ModelId=3B6678E2004F
1626.453 -	TBool iOpenQuote;
1626.454 -
1626.455 -	//##ModelId=3B6678E20045
1626.456 -	mutable HBufC8* iOutputBuffer;		// Buffered output buffer : Optimisation
1626.457 -
1626.458 -	//##ModelId=3B6678E2003B
1626.459 -	CCnvCharacterSetConverter* iCharsetConverter;
1626.460 -
1626.461 -#ifdef __OUTPUT_WMLC
1626.462 -	//##ModelId=3B6678E20031
1626.463 -	RFile iWmlcFile;		// Debug stuff
1626.464 -	//##ModelId=3B6678E20025
1626.465 -	RFs iWmlcFs;			// Debug stuff
1626.466 -#endif
1626.467 -
1626.468 -};
1626.469 -
1626.470 -#endif // __WBCONVERTER_H
1626.471 -
1626.472 -///////////////////////////////////////////////////////////////////
1626.473 -// End of file
1626.474 -///////////////////////////////////////////////////////////////////
  1627.1 --- a/epoc32/include/wins/variantmediadef.h	Tue Mar 16 16:12:26 2010 +0000
  1627.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1627.3 @@ -1,57 +0,0 @@
  1627.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
  1627.5 -// All rights reserved.
  1627.6 -// This component and the accompanying materials are made available
  1627.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1627.8 -// which accompanies this distribution, and is available
  1627.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1627.10 -//
 1627.11 -// Initial Contributors:
 1627.12 -// Nokia Corporation - initial contribution.
 1627.13 -//
 1627.14 -// Contributors:
 1627.15 -//
 1627.16 -// Description:
 1627.17 -// wins\inc\variantmediadef.h
 1627.18 -// Media definitions for the Wins Variant.
 1627.19 -// Each Media Driver requires the following definitions
 1627.20 -// DRIVECOUNT - The total number of local drive object to be assigned to the Media Driver (1-KMaxLocalDrives)
 1627.21 -// DRIVELIST - A list of the local drive numbers (each separated with a comma) to be assigned to the Media Driver.
 1627.22 -// Each in the range 0 - (KMaxLocalDrives-1). Total number of drive numbers must equal the value
 1627.23 -// of DRIVECOUNT.
 1627.24 -// NUMMEDIA - The total number of media objects to be assigned to the Media Driver.
 1627.25 -// DRIVENAME - A name for the drive group.
 1627.26 -// For the complete set of media definitions
 1627.27 -// - The total number of local drive objects assigned should not exceed KMaxLocalDrives.
 1627.28 -// - Each Media Driver should be assigned a unique set of drive numbers - no conflicts between Media Drivers.
 1627.29 -// - The total number of media objects assigned should not exceed KMaxLocalDrives.
 1627.30 -// 
 1627.31 -//
 1627.32 - 
 1627.33 -#ifndef __VARIANTMEDIADEF_H__
 1627.34 -#define __VARIANTMEDIADEF_H__
 1627.35 -
 1627.36 -// Variant parameters for IRAM Media Driver (MEDINT.PDD)
 1627.37 -#define IRAM_DRIVECOUNT 1
 1627.38 -#define IRAM_DRIVELIST 0
 1627.39 -#define IRAM_NUMMEDIA 1	
 1627.40 -#define IRAM_DRIVENAME "IRam"
 1627.41 -
 1627.42 -// Variant parameters for LFFS Media Driver (MEDLFS.PDD)
 1627.43 -#define LFFS_DRIVECOUNT 1
 1627.44 -#define LFFS_DRIVELIST 8
 1627.45 -#define LFFS_NUMMEDIA 1	
 1627.46 -#define LFFS_DRIVENAME "Flash"
 1627.47 -
 1627.48 -// Variant parameters for the MMC Controller (EPBUSMMC.DLL)
 1627.49 -#define MMC0_DRIVECOUNT 4
 1627.50 -#define MMC0_DRIVELIST 1,2,3,4
 1627.51 -#define MMC0_NUMMEDIA 4	
 1627.52 -#define MMC0_DRIVENAME "MultiMediaCard0"
 1627.53 -
 1627.54 -// Variant parameters for NAND flash media driver (mednand.pdd)
 1627.55 -#define NAND_DRIVECOUNT 3
 1627.56 -#define NAND_DRIVELIST 5,6,9
 1627.57 -#define NAND_NUMMEDIA 1
 1627.58 -#define NAND_DRIVENAME "Nand"
 1627.59 -
 1627.60 -#endif
  1628.1 --- a/epoc32/include/wsp/wsptypes.h	Tue Mar 16 16:12:26 2010 +0000
  1628.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1628.3 @@ -1,535 +0,0 @@
  1628.4 -// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
  1628.5 -// All rights reserved.
  1628.6 -// This component and the accompanying materials are made available
  1628.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1628.8 -// which accompanies this distribution, and is available
  1628.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1628.10 -//
 1628.11 -// Initial Contributors:
 1628.12 -// Nokia Corporation - initial contribution.
 1628.13 -//
 1628.14 -// Contributors:
 1628.15 -//
 1628.16 -// Description:
 1628.17 -//
 1628.18 -
 1628.19 -
 1628.20 -
 1628.21 -/**
 1628.22 - @file WspTypes.h
 1628.23 - @warning : This file contains Rose Model ID comments - please do not delete
 1628.24 -*/
 1628.25 -
 1628.26 -#ifndef __WSPTYPES_H__
 1628.27 -#define __WSPTYPES_H__
 1628.28 -
 1628.29 -// System includes
 1628.30 -#include <e32base.h>
 1628.31 -#include <stringpool.h>
 1628.32 -
 1628.33 -//TODO - These will move to a common WAPMSG/WSPTransport file at a later stage,
 1628.34 -//in the wap-stack subsystem, to be shared with the WAP Messaging API.
 1628.35 -
 1628.36 -namespace Wap
 1628.37 -/**
 1628.38 -All type definitions and enumerations used in WSP are in placed in a wider WAP
 1628.39 -namespace, to avoid name conflicts with other components.
 1628.40 -@publishedAll
 1628.41 -@released
 1628.42 -*/
 1628.43 -{
 1628.44 -
 1628.45 -/** The TWspPrimitive type represents the WSP primitives defined in the WSP
 1628.46 -	Specification, July 2001.
 1628.47 -*/
 1628.48 -enum TWspPrimitive
 1628.49 -	{
 1628.50 -	/**
 1628.51 -	*/
 1628.52 -	ESConnect			= 0,
 1628.53 -	/**
 1628.54 -	*/
 1628.55 -	ESDisconnect,
 1628.56 -	/**
 1628.57 -	*/
 1628.58 -	ESSuspend,
 1628.59 -	/**
 1628.60 -	*/
 1628.61 -	ESResume,
 1628.62 -	/**
 1628.63 -	*/
 1628.64 -	ESException,
 1628.65 -	/**
 1628.66 -	*/
 1628.67 -	ESMethodInvoke,
 1628.68 -	/**
 1628.69 -	*/
 1628.70 -	ESMethodInvokeData,
 1628.71 -	/**
 1628.72 -	*/
 1628.73 -	ESMethodResult,
 1628.74 -	/**
 1628.75 -	*/
 1628.76 -	ESMethodResultData,
 1628.77 -	/**
 1628.78 -	*/
 1628.79 -	ESMethodAbort,
 1628.80 -	/**
 1628.81 -	*/
 1628.82 -	ESPush,
 1628.83 -	/**
 1628.84 -	*/
 1628.85 -	ESConfirmedPush,
 1628.86 -	/**
 1628.87 -	*/
 1628.88 -	ESPushAbort
 1628.89 -	};
 1628.90 -
 1628.91 -/** The TWspProtocolOptions type represents the optional protocol functions 
 1628.92 -	defined in the WSP Specification, July 2001. When the client sends the 
 1628.93 -	Protocol Capability to the server, it indicates which functions it will
 1628.94 -	accept from the server. The server returns from the set of functions sent
 1628.95 -	by the client those that it will perform.
 1628.96 -*/
 1628.97 -enum TWspProtocolOptions
 1628.98 -	{
 1628.99 -	/** The Large Data Transfer feature includes support for multiple SDU's and
1628.100 -		support for the Data Fragment PDU. Setting this falg indicates support 
1628.101 -		for sending and receiving large data. If a client only wishes to receive
1628.102 -		large data, then it should set the Client and Server Message size fields
1628.103 -		appropriately.
1628.104 -	*/
1628.105 -	ELargeDataTransfer			= 0x08,
1628.106 -	/** The acknowledgement headers flag specifies that the client wishes to send
1628.107 -		acknowledgement headers. If the server cannot process them (indicated by
1628.108 -		negotiating down the flag) the client should not send the headers as they
1628.109 -		will be ignored.
1628.110 -	*/
1628.111 -	EAcknowledgementHeaders		= 0x10,
1628.112 -	/** The client enables the Suspend Resume facility when it wishes to suspend
1628.113 -		and resume the session. If the server does not support suspend and resume
1628.114 -		then this flag must be cleared in the negotiated capabilities.
1628.115 -	*/
1628.116 -	ESessionResumeFacility		= 0x20,
1628.117 -	/** The client uses this flag to indicate that it is able and willing to 
1628.118 -		receive push information. If the server cannot send pushes then this flag 
1628.119 -		must be cleared in the negotiated capabilities.
1628.120 -	*/
1628.121 -	EPushFacility				= 0x40,
1628.122 -	/** The client uses this flag to indicate that it is able and willing to 
1628.123 -		receive confirmed push information. If the server cannot send pushes 
1628.124 -		then this flag must be cleared in the negotiated capabilities.
1628.125 -	*/
1628.126 -	EConfirmedPushFacility		= 0x80
1628.127 -	};
1628.128 -
1628.129 -/** The TWspSessionState type represents the states of a WSP session, as defined
1628.130 -	by the WSP Specification, July 2001.
1628.131 -*/
1628.132 -enum TWspSessionState
1628.133 -	{
1628.134 -	/** 
1628.135 -	*/
1628.136 -	ENull			= 0,
1628.137 -	/**
1628.138 -	*/
1628.139 -	EConnecting,
1628.140 -	/**
1628.141 -	*/
1628.142 -	EConnected,
1628.143 -	/**
1628.144 -	*/
1628.145 -	ESuspending,
1628.146 -	/**
1628.147 -	*/
1628.148 -	ESuspended,
1628.149 -	/**
1628.150 -	*/
1628.151 -	EClosing,
1628.152 -	/**
1628.153 -	*/
1628.154 -	EResuming
1628.155 -	};
1628.156 -
1628.157 -/** The TWspMethodState type represents the states of a WSP method transaction,
1628.158 -	as defined by the WSP Specification, July 2001.
1628.159 -*/
1628.160 -enum TWspMethodState
1628.161 -	{
1628.162 -	/**
1628.163 -	*/
1628.164 -	ENullMethod			=0,
1628.165 -	/**
1628.166 -	*/
1628.167 -	ERequesting,
1628.168 -	/**
1628.169 -	*/
1628.170 -	EWaiting,
1628.171 -	/**
1628.172 -	*/
1628.173 -	EWaiting2,
1628.174 -	/**
1628.175 -	*/
1628.176 -	ECompleting,
1628.177 -	/**
1628.178 -	*/
1628.179 -	EAborting
1628.180 -	};
1628.181 -
1628.182 -/** The TWspBearer type defines the set of supported bearers.
1628.183 -*/
1628.184 -enum TWspBearer
1628.185 -	{
1628.186 -	/** Specifier for any bearer.
1628.187 -	*/
1628.188 -	EAny		= 0,
1628.189 -	/** IP bearer.
1628.190 -	*/
1628.191 -	EIP,
1628.192 -	/** A 7-bit SMS bearer.
1628.193 -	*/
1628.194 -	ESMS7,
1628.195 -	/** An 8-bit SMS bearer.
1628.196 -	*/
1628.197 -	ESMS,
1628.198 -	/** A 7-bit WAP SMS bearer.
1628.199 -	*/
1628.200 -	EWAPSMS7,
1628.201 -	/** An 8-bit WAP SMS bearer.
1628.202 -	*/
1628.203 -	EWAPSMS
1628.204 -	};
1628.205 -
1628.206 -/** The TWspSession type defines the 2 types of WSP Session Service; Connection
1628.207 -	Oriented and Connectionless.
1628.208 -*/
1628.209 -enum TWspSession
1628.210 -	{
1628.211 -	/** Specifier for Connection Oriented Session Service.
1628.212 -	*/
1628.213 -	EWspConnectionOriented			= 0,
1628.214 -	/** Specifier for Connectionless Session Service.
1628.215 -	*/
1628.216 -	EWspConnectionLess
1628.217 -	};
1628.218 -
1628.219 -/** The TWspReason type is used by to report the cause of a particular indication 
1628.220 -	primitive. The WSP Specification, July 2001, specifies a given set that MUST
1628.221 -	be recognised (6.2.5). Further values may be added.
1628.222 -*/
1628.223 -enum TWspReason
1628.224 -	{
1628.225 -	/** The rules of the protocol were broken and in its current state, the peer
1628.226 -		could not perform the specified operation. E.g. the PDU was not allowed.
1628.227 -	*/
1628.228 -	EProtoErr			= 0xE0,
1628.229 -	/** The session was disconnected while the operation was still in progress.
1628.230 -	*/
1628.231 -	EDisconnect			= 0xE1,
1628.232 -	/** The session was suspended while the operation was still in progress.
1628.233 -	*/
1628.234 -	ESuspend			= 0xE2,
1628.235 -	/** The session was resumed while the operation was still in progress.
1628.236 -	*/
1628.237 -	EResume				= 0xE3,
1628.238 -	/** The request could not be processed due to a lack of resources.
1628.239 -	*/
1628.240 -	ECongestion			= 0xE4,
1628.241 -	/** The connection was prevented due to an error.
1628.242 -	*/ 
1628.243 -	EConnectErr			= 0xE5,
1628.244 -	/** The SDU size in a request exceeded the maximum negotiated SDU size.
1628.245 -	*/
1628.246 -	EMRUExceeded		= 0xE6,
1628.247 -	/** The negotiated value of the maximum outstanding transactions (either for
1628.248 -		push or method transactions) has been exceeded.
1628.249 -	*/
1628.250 -	EMORExceeded		= 0xE7,
1628.251 -	/** The operation was aborted by the Provider. 
1628.252 -	*/
1628.253 -	EPeerReq			= 0xE8,
1628.254 -	/** An underlying network error prevented the completion of a request.
1628.255 -	*/
1628.256 -	ENetErr				= 0xE9,
1628.257 -	/** The cause of the indication was an action by the Client.
1628.258 -	*/
1628.259 -	EUserReq			= 0xEA,
1628.260 -	/** The client has refesed the Push message, no specific reason, no retries.
1628.261 -	*/
1628.262 -	EUserRfs			= 0xEB,
1628.263 -	/** The Push message cannot be delivered to the intended destination.
1628.264 -	*/
1628.265 -	EUserPnd			= 0xEC,
1628.266 -	/** The Push message was discarded due to resource shortage.
1628.267 -	*/
1628.268 -	EUserDcr			= 0xED,
1628.269 -	/** The content-type of the Push message cannot be processed.
1628.270 -	*/
1628.271 -	EUserDcu			= 0xEE,
1628.272 -	/** The session connect request has been redirected to a new proxy. This is
1628.273 -		a temporary redirection and the original proxy should be used in the
1628.274 -		future when trying to access this service. This is not defined by the 
1628.275 -		WSP Specification.
1628.276 -	*/
1628.277 -	ETemporaryRedirectedProxy	=0,
1628.278 -	/** The session connect request has been redirected to a new proxy. This is
1628.279 -		a permanent redirection and the new proxy should be used in the future 
1628.280 -		when trying to access this service. The client will be notified of this
1628.281 -		event and the HTTP session property EWspProxyAddressnew will contain the
1628.282 -		new proxy's address. The client should update its access point database.
1628.283 -		This is not defined by the WSP Specification.
1628.284 -	*/
1628.285 -	EPermanentRedirectedProxy,
1628.286 -	/** The client had disconnected the session, but as Suspend Resume facility
1628.287 -		was being used, the session was suspended. The client then changed the
1628.288 -		proxy and did a connect. The suspended session cannot be resumed, so the
1628.289 -		the current session must be disconnected (with this reason) and a 
1628.290 -		session connect initiated with the new proxy. This is not defined by the
1628.291 -		WSP Specification.
1628.292 -	*/
1628.293 -	EChangedProxyInSuspendedSession,
1628.294 -	/** The client's WSP session was disconnected in the Connecting state because
1628.295 -		configuration of the underlying WTLS layer failed prior to the phase 1
1628.296 -		WTLS handshake.
1628.297 -	*/
1628.298 -	EWtlsConfigurationFailed,
1628.299 -	/** The client's WSP session was disconnected in the Connecting state because
1628.300 -		phase 1 of the WTLS handshake failed.
1628.301 -	*/
1628.302 -	EWtlsPhase1HandshakeFailed,
1628.303 -	/** The client's WSP session was disconnected in the Connecting state because
1628.304 -		phase 2 of the WTLS handshake failed.
1628.305 -	*/
1628.306 -	EWtlsPhase2HandshakeFailed,
1628.307 -	/** The client's WSP session was disconnected in the Connecting state because
1628.308 -		the proxy's WTLS certificate was invalid - e.g. badly formed, or out of date.
1628.309 -	*/
1628.310 -	EWtlsInvalidServerCert,
1628.311 -	/** The client's WSP session was disconnected in the Connecting state because
1628.312 -		the proxy's WTLS certificate could not be trusted.  This means it was not signed
1628.313 -		by any root certificate on the device, and the security policy criteria could not
1628.314 -		determine further whether it could be trusted or not.
1628.315 -	*/
1628.316 -	EWtlsUntrustedServerCert,
1628.317 -	/** The client's WSP session was disconnected in the Connecting state because
1628.318 -		the negotiated WTLS configuration at completion of the secure handshake was
1628.319 -		rejected by criteria in the security policy.
1628.320 -	*/
1628.321 -	EWtlsNegotiatedConfigRejected,
1628.322 -	/** The client's transaction or session has failed due to an out-of-memory situation.
1628.323 -	*/
1628.324 -	EOutOfMemory,
1628.325 -	/** The client's session has entered an inconsistent state, probably due to a failure caused
1628.326 -		by an out-of-memory situation.
1628.327 -	*/
1628.328 -	ESessionStateFailure
1628.329 -	};
1628.330 -
1628.331 -/**	The enum TWspCapabilty is used to select a capability to reset (if required) 
1628.332 -	before setting the value of the capability.
1628.333 -*/
1628.334 -enum TWspCapability
1628.335 -	{
1628.336 -	/** Specifies the Alias Addresses capability.
1628.337 -	*/
1628.338 -	EAliasAddresses				= 0,
1628.339 -	/** Specifies the Extended Methods capability.
1628.340 -	*/
1628.341 -	EExtendedMethods,
1628.342 -	/** Specifies the Header Code Pages capability.
1628.343 -	*/
1628.344 -	EHeaderCodePages,
1628.345 -	/** Specifies the Method Maximum Outstanding Requests capability. Default value is 1.
1628.346 -	*/
1628.347 -	EMethodMOR,
1628.348 -	/** Specifies the Push Maximum Outstanding Requests capability. Default value is 1.
1628.349 -	*/
1628.350 -	EPushMOR,
1628.351 -	/** Specifies the Protocol Options capability. Default value is 0x00.
1628.352 -	*/
1628.353 -	EProtocolOptions,
1628.354 -	/** Specifies the Client SDU size capability. Default value is 1400 octets.
1628.355 -	*/
1628.356 -	EClientSDUSize,
1628.357 -	/** Specifies the Server SDU size capability. Default value is 1400 octets.
1628.358 -	*/
1628.359 -	EServerSDUSize,
1628.360 -	/** Specifies the Client Message size capability. Default value is 1400 octets.
1628.361 -	*/
1628.362 -	EClientMessageSize,
1628.363 -	/** Specifies the Server Message size capability. Default value is 1400 octets.
1628.364 -	*/
1628.365 -	EServerMessageSize,
1628.366 -	/** Specifies the Unknown capabilities.
1628.367 -	*/
1628.368 -	EUnknownCapabilities,
1628.369 -	/** Specifies all the capabilities.
1628.370 -	*/
1628.371 -	EAllCapabilities
1628.372 -	};
1628.373 -
1628.374 -} // end of namespace Wap
1628.375 -
1628.376 -
1628.377 -/**
1628.378 -Maximum Proxy address length, this is large enough for a full IPv6 address.
1628.379 -@publishedAll
1628.380 -@released
1628.381 -*/
1628.382 -const TInt KMaxProxyAddrLen = 40;
1628.383 -
1628.384 -//##ModelId=3C4C41B20079
1628.385 -class TWspRedirectedAddress
1628.386 -/**	
1628.387 -The TWspRedirectedAddress type represents an alternate address to which 
1628.388 -Clients must use to establish a session with the same service that was 
1628.389 -initially contacted. If the bearer or port fields have been excluded, then
1628.390 -the orginal bearer and port should be used to contact the new server. The 
1628.391 -WSP Specification, July 2001, defines an Address Type (8.2.2.3) upon which 
1628.392 -this class is based.
1628.393 -@publishedAll
1628.394 -@released
1628.395 -*/
1628.396 -	{
1628.397 -public:	// Attributes
1628.398 -
1628.399 -	/** A flag to indicate that the port field is set.
1628.400 -	*/
1628.401 -	//##ModelId=3C4C41B200DD
1628.402 -	TBool		iHasPort;
1628.403 -
1628.404 -	/** A flag to indicate that the bearer field is set.
1628.405 -	*/
1628.406 -	//##ModelId=3C4C41B200CB
1628.407 -	TBool		iHasBearer;
1628.408 -
1628.409 -	/** The proxy address.
1628.410 -	*/
1628.411 -	//##ModelId=3C4C41B200C1
1628.412 -	TBuf8<KMaxProxyAddrLen>	iProxyAddress;
1628.413 -
1628.414 -	/** The port number. 
1628.415 -	*/
1628.416 -	//##ModelId=3C4C41B200B5
1628.417 -	TUint16		iPort;
1628.418 -
1628.419 -	/** The bearer type.
1628.420 -	*/
1628.421 -	//##ModelId=3C4C41B200A3
1628.422 -	Wap::TWspBearer	iBearer;
1628.423 -	};
1628.424 -
1628.425 -/**
1628.426 -Maximum length of a key ID for WTLS
1628.427 -@publishedAll
1628.428 -@released
1628.429 -*/
1628.430 -const TInt KWtlsMaxKeyIdLength = 512;
1628.431 -
1628.432 -class TWtlsKeyExchangeSuite
1628.433 -/**
1628.434 -The class TWtlsKeyExchangeSuite contain the definitions of WTLS
1628.435 -Key Exchange Suites as defined in the WAP WTLS Specification, July 2001
1628.436 -@publishedAll
1628.437 -@released 
1628.438 -*/
1628.439 -	{
1628.440 -public:
1628.441 -	enum TKeyExchangeSuite
1628.442 -		{
1628.443 -		ENULL					=0,
1628.444 -		ESHARED_SECRET			=1,
1628.445 -		EDH_anon				=2,
1628.446 -		EDH_anon_512			=3,
1628.447 -		EDH_anon_768			=4,
1628.448 -		ERSA_anon				=5,
1628.449 -		ERSA_anon_512			=6,
1628.450 -		ERSA_anon_768			=7,
1628.451 -		ERSA					=8,
1628.452 -		ERSA_512				=9,
1628.453 -		ERSA_768				=10,
1628.454 -		EECDH_anon				=11,
1628.455 -		EECDH_anon_113			=12,
1628.456 -		EECDH_anon_131			=13,
1628.457 -		EECDH_ECDSA				=14,
1628.458 -		EECDH_anon_uncomp		=15,
1628.459 -		EECDH_anon_uncomp_113	=16,
1628.460 -		EECDH_anon_uncomp_131	=17,
1628.461 -		EECDH_ECDSA_uncomp		=18
1628.462 -		};
1628.463 -	enum TKeyIdType 
1628.464 -		{
1628.465 -		EIdNull			= 0,
1628.466 -		EText			= 1, 
1628.467 -		EBinary			= 2, 
1628.468 -		EKeyHashSha		= 254, 
1628.469 -		EX509Name		= 255
1628.470 -		};
1628.471 -
1628.472 -public:
1628.473 -	TWtlsKeyExchangeSuite(TKeyExchangeSuite aKeyExchangeSuite, TKeyIdType aKeyIdType, const TBuf8<KWtlsMaxKeyIdLength>& aKeyId);
1628.474 -
1628.475 -public:
1628.476 -	TKeyExchangeSuite iKeyExchangeSuite;
1628.477 -	TKeyIdType iKeyIdType;
1628.478 -	TBuf8<KWtlsMaxKeyIdLength> iKeyId;
1628.479 -	};
1628.480 -
1628.481 -class TWtlsCipherSuite
1628.482 -/**
1628.483 -The class TWtlsCipherSuite encapsulates a WTLS cipher suite as defined in
1628.484 -the WAP WTLS Specification, July 2001
1628.485 -This is a pair made up of a Bulk Encryption Algorithm and a Mac Algorithm
1628.486 -@publishedAll
1628.487 -@released
1628.488 -*/
1628.489 -	{
1628.490 -public:
1628.491 -			
1628.492 -	enum TBulkEncryptionAlgorithm
1628.493 -		{
1628.494 -		ENULL			=0,
1628.495 -		ERC5_CBC_40		=1,
1628.496 -		ERC5_CBC_56		=2,
1628.497 -		ERC5_CBC		=3,
1628.498 -		EDES_CBC_40		=4,
1628.499 -		EDES_CBC		=5,
1628.500 -		E3DES_CBC_EDE	=6,
1628.501 -		EIDEA_CBC_40	=7,
1628.502 -		EIDEA_CBC_56	=8,
1628.503 -		EIDEA_CBC		=9,
1628.504 -		ERC5_CBC_64		=10,
1628.505 -		EIDEA_CBC_64	=11
1628.506 -		};
1628.507 -
1628.508 -	enum TMacAlgorithm
1628.509 -		{
1628.510 -		ESHA_0			=0,
1628.511 -		ESHA_40			=1,
1628.512 -		ESHA_80			=2,
1628.513 -		ESHA			=3,
1628.514 -//		N/A (removed)	=4,
1628.515 -		EMD5_40			=5,
1628.516 -		EMD5_80			=6,
1628.517 -		EMD5			=7,
1628.518 -		};
1628.519 -
1628.520 -	TWtlsCipherSuite(TBulkEncryptionAlgorithm aBulkEncryptionAlgorithm, TMacAlgorithm aMacAlgorithm);
1628.521 -
1628.522 -public:
1628.523 -	TBulkEncryptionAlgorithm iBulkEncryptionAlgorithm;
1628.524 -	TMacAlgorithm iMacAlgorithm;
1628.525 -	};
1628.526 -
1628.527 -inline TWtlsCipherSuite::TWtlsCipherSuite(TBulkEncryptionAlgorithm aBulkEncryptionAlgorithm, TMacAlgorithm aMacAlgorithm)
1628.528 -	: iBulkEncryptionAlgorithm(aBulkEncryptionAlgorithm), iMacAlgorithm(aMacAlgorithm)
1628.529 -	{
1628.530 -	}
1628.531 -
1628.532 -inline TWtlsKeyExchangeSuite::TWtlsKeyExchangeSuite(TKeyExchangeSuite aKeyExchangeSuite, TKeyIdType aKeyIdType, const TBuf8<KWtlsMaxKeyIdLength>& aKeyId)
1628.533 -	: iKeyExchangeSuite(aKeyExchangeSuite), iKeyIdType(aKeyIdType), iKeyId(aKeyId)
1628.534 -	{
1628.535 -	}
1628.536 -
1628.537 -
1628.538 -#endif	// __WSPTYPES_H__
  1629.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1629.2 +++ b/epoc32/include/xml/dom/xmlengattr.h	Wed Mar 31 12:27:01 2010 +0100
  1629.3 @@ -0,0 +1,192 @@
  1629.4 +/*
  1629.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1629.6 +* All rights reserved.
  1629.7 +* This component and the accompanying materials are made available
  1629.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1629.9 +* which accompanies this distribution, and is available
 1629.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1629.11 +*
 1629.12 +* Initial Contributors:
 1629.13 +* Nokia Corporation - initial contribution.
 1629.14 +*
 1629.15 +* Contributors:
 1629.16 +*
 1629.17 +* Description:       Attribute node functions
 1629.18 +*
 1629.19 +*/
 1629.20 +
 1629.21 +
 1629.22 +
 1629.23 +
 1629.24 +
 1629.25 +
 1629.26 +
 1629.27 +#ifndef XMLENGINE_ATTR_H_INCLUDED
 1629.28 +#define XMLENGINE_ATTR_H_INCLUDED
 1629.29 +
 1629.30 +#include "xmlengnode.h"
 1629.31 +
 1629.32 +/**
 1629.33 + * Instance of TXmlEngAttr class represents an XML attribute in the DOM tree.
 1629.34 + * 
 1629.35 + * Is a storage attributes properties. Implements DOM action for it.
 1629.36 + * 
 1629.37 + * @lib XmlEngineDOM.lib
 1629.38 + * @since S60 v3.1
 1629.39 + */
 1629.40 +class TXmlEngAttr : public TXmlEngNode
 1629.41 +{
 1629.42 +  public:
 1629.43 +    /**
 1629.44 +     * Default constructor
 1629.45 +     *
 1629.46 +     * @since S60 v3.1
 1629.47 +     */
 1629.48 +    inline TXmlEngAttr();
 1629.49 +
 1629.50 +
 1629.51 +    /**
 1629.52 +     * Clones attribute node
 1629.53 +     *
 1629.54 +     * @since S60 v3.1
 1629.55 +     * @return A copy of the attribute with its value
 1629.56 +     *
 1629.57 +     * @note Namespace of the attribute is reset; use 
 1629.58 +     * TXmlEngNode::CopyToL(TXmlEngNode), which finds appropriate or creates
 1629.59 +     * new namespace declaration on the new parent node (argument should be
 1629.60 +     * an TXmlEngElement handle)
 1629.61 +     *
 1629.62 +     * @see CopyToL(TXmlEngNode)
 1629.63 +     */
 1629.64 +    IMPORT_C TXmlEngAttr CopyL() const;
 1629.65 +
 1629.66 +    /**
 1629.67 +     * Get owner element
 1629.68 +     *
 1629.69 +     * @since S60 v3.1
 1629.70 +     * @return TXmlEngElement that contains the attribute
 1629.71 +     *
 1629.72 +     * Same as TXmlEngNode::ParentNode() but returns TXmlEngElement 
 1629.73 +     * instead of TXmlEngNode.
 1629.74 +     *
 1629.75 +     * @note Copies of attributes [TXmlEngAttr::CopyL()] and newly created 
 1629.76 +     * attribute nodes [RXmlEngDocument::CreateAttributeL(..)] do not have 
 1629.77 +     * parent element until they are attached to some element.
 1629.78 +     */
 1629.79 +    IMPORT_C const TXmlEngElement OwnerElement() const;
 1629.80 +
 1629.81 +    /**
 1629.82 +     * Check attribute name.
 1629.83 +     *
 1629.84 +     * @since S60 v3.1
 1629.85 +     * @return Local name of the attribute
 1629.86 +     *
 1629.87 +     * @note Equal to TXmlEngNode::Name(), but works faster.
 1629.88 +     *
 1629.89 +     * Never call this on NULL object!
 1629.90 +     * @see TXmlEngNode::Name()
 1629.91 +     */
 1629.92 +    IMPORT_C TPtrC8 Name() const;
 1629.93 +
 1629.94 +    /**
 1629.95 +     * Get element value.
 1629.96 +     *
 1629.97 +     * @since S60 v3.1
 1629.98 +     * @return Attribute's contents
 1629.99 +     *
1629.100 +     * @note For values consisting of more then one TXmlEngTextNode node 
1629.101 +     * (as attribute's child) returns only the begining of the value; 
1629.102 +     * this happens when the value is represented by list of TXmlEngTextNode
1629.103 +     * and TXmlEngEntityReference nodes.
1629.104 +     * 
1629.105 +     * @see IsSimpleContents(), WholeValueCopyL()
1629.106 +     */
1629.107 +    IMPORT_C TPtrC8 Value() const; 
1629.108 +
1629.109 +    /**
1629.110 +     * Get copy of attribute content
1629.111 +     *
1629.112 +     * @since S60 v3.1
1629.113 +     * @return Complex value of the attribute,
1629.114 +     *     probably consisting of text nodes and entity references
1629.115 +     *
1629.116 +     * Since the value may be composed from a set of TXmlEngTextNode
1629.117 +     * and EntityRefernce nodes, the returned result is newly allocated 
1629.118 +     * string, which should be freed by caller.
1629.119 +     * 
1629.120 +     * <B style="color: red">BE SURE TO FREE THE RESULT STRING!!!</B>
1629.121 +     *
1629.122 +     * Example usage of the API:
1629.123 +     * @code
1629.124 +     *    RBuf8 value;
1629.125 +	 *    attr.WholeValueCopyL(value);
1629.126 +     *    ...
1629.127 +     *    value.Close();
1629.128 +     * @endcode
1629.129 +     *
1629.130 +     * @see TXmlEngAttr::Value(), TXmlEngNode::Value(),
1629.131 +     * TXmlEngNode::IsSimpleTextContents(), 
1629.132 +     * TXmlEngNode::WholeTextContentsCopyL()
1629.133 +     *
1629.134 +     * @note In most cases using Value() is enough (and it needs no memory allocation).
1629.135 +     *     Use IsSimpleTextContents() if there doubts can Value() be used or not safely.
1629.136 +     */
1629.137 +    IMPORT_C void WholeValueCopyL(RBuf8& aBuffer) const;
1629.138 +
1629.139 +    /**
1629.140 +     * Sets new value of the attribute. Provided new value will be escaped 
1629.141 +     * as needed.
1629.142 +     *
1629.143 +	 * @ since S60 v3.1
1629.144 +     * @param aNewValue A string value for the attribute
1629.145 +     *
1629.146 +     * The new value should not contain entity references. 
1629.147 +     * Entity references are not expanded, but used as text, because 
1629.148 +     * the ampersand (&) character of reference is escaped.
1629.149 +     *
1629.150 +     * @see SetEscapedValueL(const TDesC8&)
1629.151 +     */
1629.152 +    IMPORT_C void SetValueL(const TDesC8& aNewValue);
1629.153 +
1629.154 +    /**
1629.155 +     * Sets new value from escaped XML character data that may contain 
1629.156 +     * entity references.
1629.157 +     *
1629.158 +     * The value as if it is an escaped contents from XML file.
1629.159 +     * If the value contains entity references, then the resulting
1629.160 +     * content of the attribute is a list of TXmlEngTextNode 
1629.161 +     * and TXmlEngEntityRefeerence nodes.
1629.162 +     * Predefined entities are converted into characters they represent.
1629.163 +     * 
1629.164 +     * @param aNewValue is a new attribute value
1629.165 +     * @since S60 v3.1
1629.166 +     *
1629.167 +     * @see TXmlEngAttr::SetValueL(const TDesC8&)
1629.168 +     */
1629.169 +    IMPORT_C void SetEscapedValueL(const TDesC8& aNewValue);
1629.170 +
1629.171 +	/**
1629.172 +	 * Sets new attribute value exactly as presented in the string.
1629.173 +	 *
1629.174 +	 * Predefined entities are not converted into characters they represent.
1629.175 +	 *
1629.176 +     * @param aNewValue is a new attribute value 
1629.177 +     * @since S60 v3.2
1629.178 +     *
1629.179 +     * @see TXmlEngAttr::SetValueL(const TDesC8&)
1629.180 +     */
1629.181 +	IMPORT_C void SetValueNoEncL(const TDesC8& aNewValue );
1629.182 +
1629.183 +protected:
1629.184 +    /**
1629.185 +     * Constructor
1629.186 +     *
1629.187 +     * @since S60 v3.1
1629.188 +     * @param aInternal attribute pointer
1629.189 +     */
1629.190 +    inline TXmlEngAttr(void* aInternal);
1629.191 +};
1629.192 +
1629.193 +#include "xmlengattr.inl"
1629.194 +
1629.195 +#endif /* XMLENGINE_ATTR_H_INCLUDED */
  1630.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1630.2 +++ b/epoc32/include/xml/dom/xmlengattr.inl	Wed Mar 31 12:27:01 2010 +0100
  1630.3 @@ -0,0 +1,40 @@
  1630.4 +/*
  1630.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1630.6 +* All rights reserved.
  1630.7 +* This component and the accompanying materials are made available
  1630.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1630.9 +* which accompanies this distribution, and is available
 1630.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1630.11 +*
 1630.12 +* Initial Contributors:
 1630.13 +* Nokia Corporation - initial contribution.
 1630.14 +*
 1630.15 +* Contributors:
 1630.16 +*
 1630.17 +* Description:       Attribute node functions
 1630.18 +*
 1630.19 +*/
 1630.20 +
 1630.21 +
 1630.22 +
 1630.23 +
 1630.24 +
 1630.25 +
 1630.26 +
 1630.27 +// -----------------------------------------------------------------------------
 1630.28 +// Default constructor
 1630.29 +// -----------------------------------------------------------------------------
 1630.30 +//
 1630.31 +inline TXmlEngAttr::TXmlEngAttr()
 1630.32 +    {
 1630.33 +    }
 1630.34 +
 1630.35 +// -----------------------------------------------------------------------------
 1630.36 +// Constructor
 1630.37 +// -----------------------------------------------------------------------------
 1630.38 +//
 1630.39 +inline TXmlEngAttr::TXmlEngAttr(void* aInternal):TXmlEngNode(aInternal)
 1630.40 +    {
 1630.41 +    }
 1630.42 +
 1630.43 +
  1631.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1631.2 +++ b/epoc32/include/xml/dom/xmlengbinarycontainer.h	Wed Mar 31 12:27:01 2010 +0100
  1631.3 @@ -0,0 +1,103 @@
  1631.4 +/*
  1631.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1631.6 +* All rights reserved.
  1631.7 +* This component and the accompanying materials are made available
  1631.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1631.9 +* which accompanies this distribution, and is available
 1631.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1631.11 +*
 1631.12 +* Initial Contributors:
 1631.13 +* Nokia Corporation - initial contribution.
 1631.14 +*
 1631.15 +* Contributors:
 1631.16 +*
 1631.17 +* Description:       All binary data functions
 1631.18 +*
 1631.19 +*/
 1631.20 +
 1631.21 +
 1631.22 +
 1631.23 +
 1631.24 +
 1631.25 +
 1631.26 +
 1631.27 +#ifndef XMLENGINE_BINARYCONTAINER_H_INCLUDED
 1631.28 +#define XMLENGINE_BINARYCONTAINER_H_INCLUDED
 1631.29 +
 1631.30 +#include "xmlengdatacontainer.h"
 1631.31 +
 1631.32 +/**
 1631.33 +* Instance of TXmlEngBinaryContainer class represents binary data in 
 1631.34 +* DOM tree.
 1631.35 +*
 1631.36 +* Binary data is treated in general as text nodes in DOM tree. 
 1631.37 +* Some of the fields in xmlNode structure are reused in order to save memory. 
 1631.38 +* Data is stored in process's heap memory.
 1631.39 +*
 1631.40 +* Sample code for creating binary container:
 1631.41 +* @code  
 1631.42 +*      RXmlEngDOMImplementation domImpl;
 1631.43 +*      domImpl.OpenL();        ///< opening DOM implementation object 
 1631.44 +*      RXmlEngDocument iDoc; 
 1631.45 +*      ///< create document element
 1631.46 +*      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
 1631.47 +*      ///< create binary container from buffer (str1) and CID equals cid
 1631.48 +*      TXmlEngBinaryContainer binData=iDoc.CreateBinaryContainerL(cid,*str1);  
 1631.49 +*      elem.AppendChildL(binData);      ///< append container to the dom tree       
 1631.50 +*      iDoc.Close();               ///< closing all opened objects
 1631.51 +*      domImpl.Close();
 1631.52 +* @endcode 
 1631.53 +*
 1631.54 +* @lib XmlEngineDOM.lib
 1631.55 +* @since S60 v3.2
 1631.56 +*/
 1631.57 +class TXmlEngBinaryContainer : public TXmlEngDataContainer
 1631.58 +{
 1631.59 +public:
 1631.60 +
 1631.61 +    /**
 1631.62 +     * Get content of the container.
 1631.63 +     *
 1631.64 +     * @since S60 v3.2
 1631.65 +     * @return TPtrC8 with container content
 1631.66 +     * 
 1631.67 +     */
 1631.68 +    IMPORT_C TPtrC8 Contents() const;
 1631.69 +    
 1631.70 +    /**
 1631.71 +     * Sets contents of binary container
 1631.72 +     *
 1631.73 +     * @since S60 v3.2
 1631.74 +     * @param aNewContents  The actual value to store
 1631.75 +     */
 1631.76 +    IMPORT_C void SetContentsL( const TDesC8& aNewContents );
 1631.77 +
 1631.78 +    /**
 1631.79 +     * Appends contents to binary container
 1631.80 +     *
 1631.81 +     * @since S60 v3.2
 1631.82 +     * @param aData  Content to be appended to current content
 1631.83 +     */    
 1631.84 +    EXPORT_C void AppendContentsL( const TDesC8& aData );
 1631.85 +
 1631.86 +    /**
 1631.87 +     * Default constructor
 1631.88 +	 *
 1631.89 +     * @since S60 v3.1
 1631.90 +     */
 1631.91 +	inline TXmlEngBinaryContainer(); 
 1631.92 +
 1631.93 +protected:
 1631.94 +
 1631.95 +    /**
 1631.96 +     * Constructor
 1631.97 +     *
 1631.98 +     * @since S60 v3.1
 1631.99 +     * @param aInternal node pointer
1631.100 +     */
1631.101 +	inline TXmlEngBinaryContainer(void* aInternal);
1631.102 +};
1631.103 +
1631.104 +#include "xmlengbinarycontainer.inl"
1631.105 +
1631.106 +#endif /* XMLENGINE_BINARYCONTAINER_H_INCLUDED */
  1632.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1632.2 +++ b/epoc32/include/xml/dom/xmlengbinarycontainer.inl	Wed Mar 31 12:27:01 2010 +0100
  1632.3 @@ -0,0 +1,41 @@
  1632.4 +/*
  1632.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1632.6 +* All rights reserved.
  1632.7 +* This component and the accompanying materials are made available
  1632.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1632.9 +* which accompanies this distribution, and is available
 1632.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1632.11 +*
 1632.12 +* Initial Contributors:
 1632.13 +* Nokia Corporation - initial contribution.
 1632.14 +*
 1632.15 +* Contributors:
 1632.16 +*
 1632.17 +* Description:       Binary data node functions
 1632.18 +*
 1632.19 +*/
 1632.20 +
 1632.21 +
 1632.22 +
 1632.23 +
 1632.24 +
 1632.25 +
 1632.26 +
 1632.27 +// -----------------------------------------------------------------------------
 1632.28 +// Default constructor
 1632.29 +// -----------------------------------------------------------------------------
 1632.30 +//
 1632.31 +
 1632.32 +inline TXmlEngBinaryContainer::TXmlEngBinaryContainer():TXmlEngDataContainer(NULL)
 1632.33 +    {
 1632.34 +    }
 1632.35 +  
 1632.36 +// -----------------------------------------------------------------------------
 1632.37 +// Constructor
 1632.38 +// -----------------------------------------------------------------------------
 1632.39 +//
 1632.40 +
 1632.41 +inline TXmlEngBinaryContainer::TXmlEngBinaryContainer(void* aInternal):TXmlEngDataContainer(aInternal)
 1632.42 +    {
 1632.43 +    }
 1632.44 +  
  1633.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1633.2 +++ b/epoc32/include/xml/dom/xmlengcdatasection.h	Wed Mar 31 12:27:01 2010 +0100
  1633.3 @@ -0,0 +1,58 @@
  1633.4 +/*
  1633.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1633.6 +* All rights reserved.
  1633.7 +* This component and the accompanying materials are made available
  1633.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1633.9 +* which accompanies this distribution, and is available
 1633.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1633.11 +*
 1633.12 +* Initial Contributors:
 1633.13 +* Nokia Corporation - initial contribution.
 1633.14 +*
 1633.15 +* Contributors:
 1633.16 +*
 1633.17 +* Description:       CDATASection node functions
 1633.18 +*
 1633.19 +*/
 1633.20 +
 1633.21 +
 1633.22 +
 1633.23 +
 1633.24 +
 1633.25 +
 1633.26 +
 1633.27 +#ifndef XMLENGINE_CDATASECTION_H_INCLUDED
 1633.28 +#define XMLENGINE_CDATASECTION_H_INCLUDED
 1633.29 +
 1633.30 +#include "xmlengtext.h"
 1633.31 +
 1633.32 +/** 
 1633.33 + * Instance of TXmlEngCDATASection class represents an XML CDATASection in the DOM tree.
 1633.34 + * 
 1633.35 + * @lib XmlEngineDOM.lib
 1633.36 + * @since S60 v3.1
 1633.37 + */
 1633.38 +class TXmlEngCDATASection : public TXmlEngTextNode
 1633.39 +{
 1633.40 +public:
 1633.41 +    /** 
 1633.42 +     * Default constructor
 1633.43 +     */
 1633.44 +	inline TXmlEngCDATASection();
 1633.45 +
 1633.46 +    
 1633.47 +protected:
 1633.48 +    /** 
 1633.49 +     * Constructor
 1633.50 +     *
 1633.51 +     * @since S60 v3.1
 1633.52 +     * @param aInternal CDATASection pointer
 1633.53 +     */
 1633.54 +	inline TXmlEngCDATASection(void* aInternal);
 1633.55 +};
 1633.56 +
 1633.57 +
 1633.58 +
 1633.59 +#include "xmlengcdatasection.inl"
 1633.60 +
 1633.61 +#endif /* XMLENGINE_CDATASECTION_H_INCLUDED */
  1634.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1634.2 +++ b/epoc32/include/xml/dom/xmlengcdatasection.inl	Wed Mar 31 12:27:01 2010 +0100
  1634.3 @@ -0,0 +1,40 @@
  1634.4 +/*
  1634.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1634.6 +* All rights reserved.
  1634.7 +* This component and the accompanying materials are made available
  1634.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1634.9 +* which accompanies this distribution, and is available
 1634.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1634.11 +*
 1634.12 +* Initial Contributors:
 1634.13 +* Nokia Corporation - initial contribution.
 1634.14 +*
 1634.15 +* Contributors:
 1634.16 +*
 1634.17 +* Description:       Data section node functions
 1634.18 +*
 1634.19 +*/
 1634.20 +
 1634.21 +
 1634.22 +
 1634.23 +
 1634.24 +
 1634.25 +
 1634.26 +
 1634.27 +// -----------------------------------------------------------------------------
 1634.28 +// Default constructor
 1634.29 +// -----------------------------------------------------------------------------
 1634.30 +//
 1634.31 +inline TXmlEngCDATASection::TXmlEngCDATASection():TXmlEngTextNode(NULL)
 1634.32 +    {
 1634.33 +    }
 1634.34 +    
 1634.35 +
 1634.36 +// -----------------------------------------------------------------------------
 1634.37 +// Constructor
 1634.38 +// -----------------------------------------------------------------------------
 1634.39 +//
 1634.40 +inline TXmlEngCDATASection::TXmlEngCDATASection(void* aInternal):TXmlEngTextNode(aInternal)
 1634.41 +    {
 1634.42 +    }
 1634.43 +    
  1635.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1635.2 +++ b/epoc32/include/xml/dom/xmlengcharacterdata.h	Wed Mar 31 12:27:01 2010 +0100
  1635.3 @@ -0,0 +1,105 @@
  1635.4 +/*
  1635.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1635.6 +* All rights reserved.
  1635.7 +* This component and the accompanying materials are made available
  1635.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1635.9 +* which accompanies this distribution, and is available
 1635.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1635.11 +*
 1635.12 +* Initial Contributors:
 1635.13 +* Nokia Corporation - initial contribution.
 1635.14 +*
 1635.15 +* Contributors:
 1635.16 +*
 1635.17 +* Description:       All text nodes functions
 1635.18 +*
 1635.19 +*/
 1635.20 +
 1635.21 +
 1635.22 +
 1635.23 +
 1635.24 +
 1635.25 +
 1635.26 +
 1635.27 +#ifndef XMLENGINE_CHARACTERDATA_H_INCLUDED
 1635.28 +#define XMLENGINE_CHARACTERDATA_H_INCLUDED
 1635.29 +
 1635.30 +#include "xmlengnode.h"
 1635.31 +
 1635.32 +/**
 1635.33 +* Instance of TXmlEngCharacterData class represents all kinds of XML text nodes 
 1635.34 +* (i.e. text node, comment node) in the DOM tree.
 1635.35 +*
 1635.36 +* Describe DOM action for nodes that contains text data.
 1635.37 +* DOM spec: 
 1635.38 +* http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-FF21A306
 1635.39 +*
 1635.40 +* @lib XmlEngineDOM.lib
 1635.41 +* @since S60 v3.1
 1635.42 +*/
 1635.43 +class TXmlEngCharacterData : public TXmlEngNode
 1635.44 +{
 1635.45 +public:
 1635.46 +
 1635.47 +    /**
 1635.48 +     * Get content of the node.
 1635.49 +     *
 1635.50 +     * @since S60 v3.1
 1635.51 +     * @return String with nodes content
 1635.52 +     * 
 1635.53 +     * This method applies to TXmlEngCDATASection, TXmlEngComment and TXmlEngTextNode nodes.
 1635.54 +     */
 1635.55 +    IMPORT_C TPtrC8 Contents() const;
 1635.56 +    
 1635.57 +    /**
 1635.58 +     * Sets contents of basic character nodes: TXmlEngTextNode, TXmlEngComment, TXmlEngCDATASection
 1635.59 +     *
 1635.60 +     * @since S60 v3.1
 1635.61 +     * @param aNewContents  The actual value to store
 1635.62 +     * 
 1635.63 +     * The input is taken as non-escaped: for example, 
 1635.64 +     * aNewContents = "123 > 34 && P" will be serialized as "123 &gt; 34 &amp;&amp; P"
 1635.65 +     * 
 1635.66 +     * Escaped contents may be set only for TXmlEngElement and TXmlEngAttr nodes.
 1635.67 +     * @see TXmlEngAttr::SetEscapedValueL(const TDesC8&), TXmlEngElement::SetEscapedTextL(const TDesC8&), 
 1635.68 +     */
 1635.69 +    IMPORT_C void SetContentsL(const TDesC8& aNewContents);
 1635.70 +
 1635.71 +    /**
 1635.72 +     * Extends the contents of the node by appending aString
 1635.73 +     *
 1635.74 +     * @since S60 v3.1
 1635.75 +     * @param aString Content to be added to current content
 1635.76 +     */
 1635.77 +    IMPORT_C void AppendContentsL(const TDesC8& aString);
 1635.78 +
 1635.79 +    /**
 1635.80 +     * Get length of the content
 1635.81 +     *
 1635.82 +     * @since S60 v3.1
 1635.83 +     * @return Number of characters in the contents
 1635.84 +     */
 1635.85 +    IMPORT_C TUint Length() const;
 1635.86 +
 1635.87 +protected:
 1635.88 +    /**
 1635.89 +     * Default constructor
 1635.90 +	 *
 1635.91 +     * @since S60 v3.1
 1635.92 +     */
 1635.93 +	inline TXmlEngCharacterData(); // protected from API users
 1635.94 +
 1635.95 +    /**
 1635.96 +     * Constructor
 1635.97 +     *
 1635.98 +     * @since S60 v3.1
 1635.99 +     * @param aInternal node pointer
1635.100 +     */
1635.101 +	inline TXmlEngCharacterData(void* aInternal);
1635.102 +};
1635.103 +
1635.104 +
1635.105 +#include "xmlengcharacterdata.inl"
1635.106 +
1635.107 +#endif /* XMLENGINE_CHARACTERDATA_H_INCLUDED */
1635.108 +
  1636.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1636.2 +++ b/epoc32/include/xml/dom/xmlengcharacterdata.inl	Wed Mar 31 12:27:01 2010 +0100
  1636.3 @@ -0,0 +1,39 @@
  1636.4 +/*
  1636.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1636.6 +* All rights reserved.
  1636.7 +* This component and the accompanying materials are made available
  1636.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1636.9 +* which accompanies this distribution, and is available
 1636.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1636.11 +*
 1636.12 +* Initial Contributors:
 1636.13 +* Nokia Corporation - initial contribution.
 1636.14 +*
 1636.15 +* Contributors:
 1636.16 +*
 1636.17 +* Description:       Character data node functions
 1636.18 +*
 1636.19 +*/
 1636.20 +
 1636.21 +
 1636.22 +
 1636.23 +
 1636.24 +
 1636.25 +
 1636.26 +
 1636.27 +// -----------------------------------------------------------------------------
 1636.28 +// Default constructor
 1636.29 +// -----------------------------------------------------------------------------
 1636.30 +//
 1636.31 +inline TXmlEngCharacterData::TXmlEngCharacterData()
 1636.32 +    {
 1636.33 +    }
 1636.34 +
 1636.35 +// -----------------------------------------------------------------------------
 1636.36 +// Constructor
 1636.37 +// -----------------------------------------------------------------------------
 1636.38 +//
 1636.39 +inline TXmlEngCharacterData::TXmlEngCharacterData(void* aInternal):TXmlEngNode(aInternal)
 1636.40 +    {
 1636.41 +    }
 1636.42 +    
  1637.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1637.2 +++ b/epoc32/include/xml/dom/xmlengchunkcontainer.h	Wed Mar 31 12:27:01 2010 +0100
  1637.3 @@ -0,0 +1,104 @@
  1637.4 +/*
  1637.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1637.6 +* All rights reserved.
  1637.7 +* This component and the accompanying materials are made available
  1637.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1637.9 +* which accompanies this distribution, and is available
 1637.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1637.11 +*
 1637.12 +* Initial Contributors:
 1637.13 +* Nokia Corporation - initial contribution.
 1637.14 +*
 1637.15 +* Contributors:
 1637.16 +*
 1637.17 +* Description:       All memory chunk data functions
 1637.18 +*
 1637.19 +*/
 1637.20 +
 1637.21 +
 1637.22 +
 1637.23 +
 1637.24 +
 1637.25 +
 1637.26 +
 1637.27 +#ifndef XMLENGINE_CHUNKCONTAINER_H_INCLUDED
 1637.28 +#define XMLENGINE_CHUNKCONTAINER_H_INCLUDED
 1637.29 +
 1637.30 +#include "xmlengdatacontainer.h"
 1637.31 +
 1637.32 +
 1637.33 +/**
 1637.34 +* Instance of TXmlEngChunkContainer class represents data stored in RChunks in DOM tree
 1637.35 +*
 1637.36 +* RChunk data is treated in general as text nodes in DOM tree.
 1637.37 +* Some of the fields in xmlNode structure are reused in order to save memory. 
 1637.38 +* Data is stored in memory referenced to by RChunk.
 1637.39 +*
 1637.40 +* Sample code for creating chunk container:
 1637.41 +* @code  
 1637.42 +*      RXmlEngDOMImplementation domImpl;
 1637.43 +*      domImpl.OpenL();        ///< opening DOM implementation object 
 1637.44 +*      RXmlEngDocument iDoc; 
 1637.45 +*      ///< create document element
 1637.46 +*      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
 1637.47 +*      ///< create RChunk object with chunkName name and size
 1637.48 +*      RChunk chunk;
 1637.49 +*      chunk.CreateGlobal(chunkName, size, maxSize);
 1637.50 +*      CleanupClosePushL(chunk); 
 1637.51 +*      ///< create chunk container from Rchunk object with offset to the 
 1637.52 +*      ///< binary data in chunk and binary data size in chunk (binarySize) 
 1637.53 +*      TXmlEngChunkContainer binData = iDoc.CreateChunkContainerL(
 1637.54 +*									cid,chunk,offset,binarySize); 
 1637.55 +*      ///< append chunkcontainer to the dom tree          
 1637.56 +*      TXmlEngNode ref = iDoc.DocumentElement().AppendChildL(binData);
 1637.57 +*       ///< closing all opened objects
 1637.58 +*      CleanupStack::PopAndDestroy();//chunk
 1637.59 +*      iDoc.Close();              
 1637.60 +*      domImpl.Close();
 1637.61 +* @endcode 
 1637.62 +*
 1637.63 +* @lib XmlEngineDOM.lib
 1637.64 +* @since S60 v3.2
 1637.65 +*/
 1637.66 +class TXmlEngChunkContainer : public TXmlEngDataContainer
 1637.67 +{
 1637.68 +public:
 1637.69 +    /**
 1637.70 +     * Get memory chunk reference
 1637.71 +     *
 1637.72 +     * @since S60 v3.2
 1637.73 +     * @return Memory chunk reference
 1637.74 +     * 
 1637.75 +     */
 1637.76 +    IMPORT_C RChunk& Chunk() const;
 1637.77 +
 1637.78 +    /**
 1637.79 +     * Get offset of binary data in memory chunk
 1637.80 +     *
 1637.81 +     * @since S60 v3.2
 1637.82 +     * @return Offset of binary data in memory chunk
 1637.83 +     */
 1637.84 +    IMPORT_C TUint ChunkOffset() const;   
 1637.85 +	
 1637.86 +protected:
 1637.87 +    /**
 1637.88 +     * Default constructor
 1637.89 +	 *
 1637.90 +     * @since S60 v3.1
 1637.91 +     */
 1637.92 +	inline TXmlEngChunkContainer(); 
 1637.93 +	
 1637.94 +    /**
 1637.95 +     * Constructor
 1637.96 +     *
 1637.97 +     * @since S60 v3.1
 1637.98 +     * @param aInternal node pointer
 1637.99 +     */
1637.100 +	inline TXmlEngChunkContainer(void* aInternal);
1637.101 +};
1637.102 +
1637.103 +
1637.104 +
1637.105 +#include "xmlengchunkcontainer.inl"
1637.106 +
1637.107 +#endif /* XMLENGINE_CHUNKCONTAINER_H_INCLUDED */
  1638.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1638.2 +++ b/epoc32/include/xml/dom/xmlengchunkcontainer.inl	Wed Mar 31 12:27:01 2010 +0100
  1638.3 @@ -0,0 +1,40 @@
  1638.4 +/*
  1638.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1638.6 +* All rights reserved.
  1638.7 +* This component and the accompanying materials are made available
  1638.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1638.9 +* which accompanies this distribution, and is available
 1638.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1638.11 +*
 1638.12 +* Initial Contributors:
 1638.13 +* Nokia Corporation - initial contribution.
 1638.14 +*
 1638.15 +* Contributors:
 1638.16 +*
 1638.17 +* Description:       RChunk container functions
 1638.18 +*
 1638.19 +*/
 1638.20 +
 1638.21 +
 1638.22 +
 1638.23 +
 1638.24 +
 1638.25 +
 1638.26 +
 1638.27 +
 1638.28 +// -----------------------------------------------------------------------------
 1638.29 +// Default constructor
 1638.30 +// -----------------------------------------------------------------------------
 1638.31 +//
 1638.32 +inline TXmlEngChunkContainer::TXmlEngChunkContainer():TXmlEngDataContainer(NULL)
 1638.33 +    {
 1638.34 +    }
 1638.35 +    
 1638.36 +// -----------------------------------------------------------------------------
 1638.37 +// Constructor
 1638.38 +// -----------------------------------------------------------------------------
 1638.39 +//
 1638.40 +inline TXmlEngChunkContainer::TXmlEngChunkContainer(void* aInternal):TXmlEngDataContainer(aInternal)
 1638.41 +    {
 1638.42 +    }
 1638.43 +   
  1639.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1639.2 +++ b/epoc32/include/xml/dom/xmlengcomment.h	Wed Mar 31 12:27:01 2010 +0100
  1639.3 @@ -0,0 +1,59 @@
  1639.4 +/*
  1639.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1639.6 +* All rights reserved.
  1639.7 +* This component and the accompanying materials are made available
  1639.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1639.9 +* which accompanies this distribution, and is available
 1639.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1639.11 +*
 1639.12 +* Initial Contributors:
 1639.13 +* Nokia Corporation - initial contribution.
 1639.14 +*
 1639.15 +* Contributors:
 1639.16 +*
 1639.17 +* Description:       Comment node functions
 1639.18 +*
 1639.19 +*/
 1639.20 +
 1639.21 +
 1639.22 +
 1639.23 +
 1639.24 +
 1639.25 +
 1639.26 +
 1639.27 +#ifndef XMLENGINE_COMMENT_H_INCLUDED
 1639.28 +#define XMLENGINE_COMMENT_H_INCLUDED
 1639.29 +
 1639.30 +#include "xmlengcharacterdata.h"
 1639.31 +
 1639.32 +/** 
 1639.33 + * Instance of TXmlEngComment class represents an XML comments in the DOM tree.
 1639.34 + * 
 1639.35 + * DOM spec: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-FF21A306
 1639.36 + * 
 1639.37 + * @lib XmlEngineDOM.lib
 1639.38 + * @since S60 v3.1
 1639.39 + */
 1639.40 +class TXmlEngComment : public TXmlEngCharacterData
 1639.41 +{
 1639.42 +public:
 1639.43 +    /** 
 1639.44 +     * Default constructor
 1639.45 +     *
 1639.46 +     * @since S60 v3.1
 1639.47 +     */
 1639.48 +    inline TXmlEngComment();
 1639.49 +
 1639.50 +protected:
 1639.51 +    /** 
 1639.52 +     * Constructor
 1639.53 +     *
 1639.54 +     * @since S60 v3.1
 1639.55 +     * @param aInternal Comment pointer
 1639.56 +     */
 1639.57 +    inline TXmlEngComment(void* aInternal);
 1639.58 +};
 1639.59 +
 1639.60 +#include "xmlengcomment.inl"
 1639.61 +
 1639.62 +#endif /* XMLENGINE_COMMENT_H_INCLUDED */
  1640.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1640.2 +++ b/epoc32/include/xml/dom/xmlengcomment.inl	Wed Mar 31 12:27:01 2010 +0100
  1640.3 @@ -0,0 +1,39 @@
  1640.4 +/*
  1640.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1640.6 +* All rights reserved.
  1640.7 +* This component and the accompanying materials are made available
  1640.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1640.9 +* which accompanies this distribution, and is available
 1640.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1640.11 +*
 1640.12 +* Initial Contributors:
 1640.13 +* Nokia Corporation - initial contribution.
 1640.14 +*
 1640.15 +* Contributors:
 1640.16 +*
 1640.17 +* Description:       Comment node functions
 1640.18 +*
 1640.19 +*/
 1640.20 +
 1640.21 +
 1640.22 +
 1640.23 +
 1640.24 +
 1640.25 +
 1640.26 +
 1640.27 +// -----------------------------------------------------------------------------
 1640.28 +// Default constructor
 1640.29 +// -----------------------------------------------------------------------------
 1640.30 +//
 1640.31 +inline TXmlEngComment::TXmlEngComment():TXmlEngCharacterData(NULL)
 1640.32 +    {
 1640.33 +    }
 1640.34 +    
 1640.35 +// -----------------------------------------------------------------------------
 1640.36 +// Constructor
 1640.37 +// -----------------------------------------------------------------------------
 1640.38 +//
 1640.39 +inline TXmlEngComment::TXmlEngComment(void* aInternal):TXmlEngCharacterData(aInternal)
 1640.40 +    {
 1640.41 +    }
 1640.42 +    
  1641.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1641.2 +++ b/epoc32/include/xml/dom/xmlengdatacontainer.h	Wed Mar 31 12:27:01 2010 +0100
  1641.3 @@ -0,0 +1,82 @@
  1641.4 +/*
  1641.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1641.6 +* All rights reserved.
  1641.7 +* This component and the accompanying materials are made available
  1641.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1641.9 +* which accompanies this distribution, and is available
 1641.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1641.11 +*
 1641.12 +* Initial Contributors:
 1641.13 +* Nokia Corporation - initial contribution.
 1641.14 +*
 1641.15 +* Contributors:
 1641.16 +*
 1641.17 +* Description:       All binary data functions
 1641.18 +*
 1641.19 +*/
 1641.20 +
 1641.21 +
 1641.22 +
 1641.23 +
 1641.24 +
 1641.25 +
 1641.26 +
 1641.27 +#ifndef XMLENGINE_DATACONTAINER_H_INCLUDED
 1641.28 +#define XMLENGINE_DATACONTAINER_H_INCLUDED
 1641.29 +
 1641.30 +#include "xmlengnode.h"
 1641.31 +
 1641.32 +
 1641.33 +/**
 1641.34 +* TXmlEngDataContainer is a class for representing different types
 1641.35 +* of binary data in DOM tree.
 1641.36 +*
 1641.37 +* It can be cusom-serialized using MXmlEngDataSerializer interface which can 
 1641.38 +* be set in TXmlEngSerializationOptions used for saving the tree.
 1641.39 +*
 1641.40 +* @lib XmlEngineDOM.lib
 1641.41 +* @since S60 v3.2
 1641.42 +*/
 1641.43 +class TXmlEngDataContainer : public TXmlEngNode
 1641.44 +{
 1641.45 +public:
 1641.46 +
 1641.47 +    /**
 1641.48 +     * Get CID of data container.
 1641.49 +     *
 1641.50 +     * @since S60 v3.2
 1641.51 +     * @return Cid of data container
 1641.52 +     * 
 1641.53 +     */
 1641.54 +    IMPORT_C TPtrC8 Cid() const;
 1641.55 +        
 1641.56 +    /**
 1641.57 +     * Get data size in bytes
 1641.58 +     *
 1641.59 +     * @since S60 v3.1
 1641.60 +     * @return Number of bytes occupied by data
 1641.61 +     */
 1641.62 +    IMPORT_C TUint Size() const;
 1641.63 +
 1641.64 +protected:
 1641.65 +    /**
 1641.66 +     * Default constructor
 1641.67 +	 *
 1641.68 +     * @since S60 v3.1
 1641.69 +     */
 1641.70 +	inline TXmlEngDataContainer(); 
 1641.71 +
 1641.72 +    /**
 1641.73 +     * Constructor
 1641.74 +     *
 1641.75 +     * @since S60 v3.1
 1641.76 +     * @param aInternal node pointer
 1641.77 +     */
 1641.78 +	inline TXmlEngDataContainer(void* aInternal);
 1641.79 +};
 1641.80 +
 1641.81 +
 1641.82 + 
 1641.83 +#include "xmlengdatacontainer.inl"
 1641.84 +
 1641.85 +#endif /* XMLENGINE_DATACONTAINER_H_INCLUDED */
  1642.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1642.2 +++ b/epoc32/include/xml/dom/xmlengdatacontainer.inl	Wed Mar 31 12:27:01 2010 +0100
  1642.3 @@ -0,0 +1,43 @@
  1642.4 +/*
  1642.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1642.6 +* All rights reserved.
  1642.7 +* This component and the accompanying materials are made available
  1642.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1642.9 +* which accompanies this distribution, and is available
 1642.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1642.11 +*
 1642.12 +* Initial Contributors:
 1642.13 +* Nokia Corporation - initial contribution.
 1642.14 +*
 1642.15 +* Contributors:
 1642.16 +*
 1642.17 +* Description:       Binary data node functions
 1642.18 +*
 1642.19 +*/
 1642.20 +
 1642.21 +
 1642.22 +
 1642.23 +
 1642.24 +
 1642.25 +
 1642.26 +
 1642.27 +
 1642.28 +
 1642.29 +// -----------------------------------------------------------------------------
 1642.30 +// Default constructor
 1642.31 +// -----------------------------------------------------------------------------
 1642.32 +//
 1642.33 +
 1642.34 +inline TXmlEngDataContainer::TXmlEngDataContainer()
 1642.35 +    {
 1642.36 +    }
 1642.37 +    
 1642.38 +// -----------------------------------------------------------------------------
 1642.39 +// Constructor
 1642.40 +// -----------------------------------------------------------------------------
 1642.41 +//
 1642.42 +
 1642.43 +inline TXmlEngDataContainer::TXmlEngDataContainer(void* aInternal):TXmlEngNode(aInternal)
 1642.44 +    {
 1642.45 +    }
 1642.46 +   
  1643.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1643.2 +++ b/epoc32/include/xml/dom/xmlengdataserializer.h	Wed Mar 31 12:27:01 2010 +0100
  1643.3 @@ -0,0 +1,51 @@
  1643.4 +/*
  1643.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1643.6 +* All rights reserved.
  1643.7 +* This component and the accompanying materials are made available
  1643.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1643.9 +* which accompanies this distribution, and is available
 1643.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1643.11 +*
 1643.12 +* Initial Contributors:
 1643.13 +* Nokia Corporation - initial contribution.
 1643.14 +*
 1643.15 +* Contributors:
 1643.16 +*
 1643.17 +* Description:       Interface class describing class that may be used as
 1643.18 +*                serializer for binary data
 1643.19 +*
 1643.20 +*/
 1643.21 +
 1643.22 +
 1643.23 +
 1643.24 +
 1643.25 +
 1643.26 +
 1643.27 +
 1643.28 +#ifndef XMLENGINE_MDATASERIALIZER_H_INCLUDED
 1643.29 +#define XMLENGINE_MDATASERIALIZER_H_INCLUDED
 1643.30 +
 1643.31 +#include "xmlengnode.h"
 1643.32 +
 1643.33 +/**
 1643.34 + * MXmlEngDataSerializer interface used by XML Engine to serialize binary data for example binary data
 1643.35 + * stored in node, external memory chunk (RChunk) or file. This interface may be implemented by client application.
 1643.36 + *
 1643.37 + * @lib XmlEngineDOM.lib
 1643.38 + * @since S60 v3.2
 1643.39 + */
 1643.40 +class MXmlEngDataSerializer
 1643.41 +    {
 1643.42 +public:
 1643.43 +    /**
 1643.44 +     * Callback for serializing data
 1643.45 +     *
 1643.46 +     * @since S60 v3.1
 1643.47 +     * @param aNode is a node to serialize
 1643.48 +     * @return Replacement string for node data
 1643.49 +     */
 1643.50 +    virtual TPtrC8 SerializeDataL(TXmlEngNode aNode) = 0;
 1643.51 +    };
 1643.52 +
 1643.53 +
 1643.54 +#endif /* XMLENGINE_MDATASERIALIZER_H_INCLUDED */  
  1644.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1644.2 +++ b/epoc32/include/xml/dom/xmlengdocument.h	Wed Mar 31 12:27:01 2010 +0100
  1644.3 @@ -0,0 +1,573 @@
  1644.4 +/*
  1644.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1644.6 +* All rights reserved.
  1644.7 +* This component and the accompanying materials are made available
  1644.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1644.9 +* which accompanies this distribution, and is available
 1644.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1644.11 +*
 1644.12 +* Initial Contributors:
 1644.13 +* Nokia Corporation - initial contribution.
 1644.14 +*
 1644.15 +* Contributors:
 1644.16 +*
 1644.17 +* Description:       Document node functions
 1644.18 +*
 1644.19 +*/
 1644.20 +
 1644.21 +
 1644.22 +
 1644.23 +
 1644.24 +
 1644.25 +
 1644.26 +#ifndef XMLENGINE_DOCUMENT_H_INCLUDED
 1644.27 +#define XMLENGINE_DOCUMENT_H_INCLUDED
 1644.28 +
 1644.29 +#include <f32file.h> 
 1644.30 +
 1644.31 +#include "xmlengnode.h"
 1644.32 +#include "xmlengserializationoptions.h"
 1644.33 +
 1644.34 +// FORWARD DECLARATION
 1644.35 +class RXmlEngDOMImplementation;
 1644.36 +
 1644.37 +/**
 1644.38 + * Instance of RXmlEngDocument class represents an XML document in the DOM tree.
 1644.39 + * 
 1644.40 + * Is a storage all nodes and information about XML data.
 1644.41 + * 
 1644.42 + * @lib XmlEngineDOM.lib
 1644.43 + * @since S60 v3.1
 1644.44 + */
 1644.45 +class RXmlEngDocument : public TXmlEngNode
 1644.46 +{
 1644.47 +public:    
 1644.48 +    /**
 1644.49 +     * Default constructor.
 1644.50 +     *
 1644.51 +     * Instance of RXmlEngDocument must be "opened" with one of OpenL() overloads.
 1644.52 +     *
 1644.53 +     * @since S60 v3.1
 1644.54 +	 */
 1644.55 +    IMPORT_C RXmlEngDocument();
 1644.56 +    
 1644.57 +    /** 
 1644.58 +     * Opens the document.
 1644.59 +     *
 1644.60 +	 * @since S60 v3.2
 1644.61 +	 * @param aDOMImpl DOM implementation object
 1644.62 +     * @return KErrNone if succeed.
 1644.63 +     */
 1644.64 +    IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl);
 1644.65 +	
 1644.66 +	/** 
 1644.67 +     * Opens the document.
 1644.68 +     *
 1644.69 +	 * @since S60 v3.2
 1644.70 +	 * @param aDOMImpl DOM implementation object
 1644.71 + 	 * @param aInternal Document pointer
 1644.72 +     * @return KErrNone if succeed.
 1644.73 +     */
 1644.74 +    IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, void* aInternal);
 1644.75 +    
 1644.76 +    /** 
 1644.77 +     * Opens the document.
 1644.78 +     *
 1644.79 +	 * @since S60 v3.2
 1644.80 +	 * @param aDOMImpl DOM implementation object
 1644.81 + 	 * @param aRoot element taht will be root of the DOM tree
 1644.82 +     * @return KErrNone if succeed.
 1644.83 +     */
 1644.84 +    IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, TXmlEngElement aRoot);
 1644.85 +    
 1644.86 +    /**
 1644.87 +     * Closes document
 1644.88 +     *
 1644.89 +     * @since S60 v3.1
 1644.90 +	 */
 1644.91 +    IMPORT_C  void Close();
 1644.92 +
 1644.93 +    /**
 1644.94 +     * Serializes document tree into a file. For nodes containing binary data in the form of BinaryDataContainer,
 1644.95 +     * FileContainer or ChunkContainer, client can implement custom serialization by implementing the interface
 1644.96 +     * MXmlEngDataSerializer and specify the pointer in iDataSerializer member of aSaveOptions parameter. If no
 1644.97 +     * custom serialization is specified, the binary data container nodes are serialized like text nodes.
 1644.98 +     *
 1644.99 +     * @since S60 v3.2
1644.100 +	 * @param aFileName A file name (with path)
1644.101 + 	 * @param aRoot Root node to be serialized	
1644.102 +	 * @param aSaveOptions Options that control how serialization is performed 
1644.103 +     * @return Number of byte written
1644.104 +     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1644.105 +     */
1644.106 +    IMPORT_C TInt SaveL( const TDesC& aFileName,
1644.107 +    					 TXmlEngNode aRoot = TXmlEngNode(),
1644.108 +    					 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1644.109 +   
1644.110 +    /**
1644.111 +     * Serializes document tree into a file.  For nodes containing binary data in the form of BinaryDataContainer,
1644.112 +     * FileContainer or ChunkContainer, client can implement custom serialization by implementing the interface
1644.113 +     * MXmlEngDataSerializer and specify the pointer in iDataSerializer member of aSaveOptions parameter. If no
1644.114 +     * custom serialization is specified, the binary data container nodes are serialized like text nodes.
1644.115 +     *
1644.116 +     * @since S60 v3.2
1644.117 +	 * @param aRFs File Server session
1644.118 +	 * @param aFileName A file name (with path)	 
1644.119 + 	 * @param aRoot Root node to be serialized	
1644.120 +	 * @param aSaveOptions Options that control how serialization is performed 
1644.121 +     * @return Number of byte written
1644.122 +     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1644.123 +     */                        
1644.124 +    IMPORT_C TInt SaveL( RFs& aRFs,
1644.125 +                         const TDesC& aFileName,
1644.126 +                         TXmlEngNode aRoot = TXmlEngNode(),
1644.127 +                         const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1644.128 +    
1644.129 +    /**
1644.130 +     * Serializes a document tree into provided output stream, which supports progressive writing of data.
1644.131 +     * For nodes containing binary data in the form of BinaryDataContainer, FileContainer or ChunkContainer,
1644.132 +     * client can implement custom serialization by implementing the interface MXmlEngDataSerializer and specify
1644.133 +     * the pointer in iDataSerializer member of aSaveOptions parameter. If no custom serialization is specified,
1644.134 +     * the binary data container nodes are serialized like text nodes.
1644.135 +     *
1644.136 +     * @since S60 v3.1
1644.137 +	 * @param aStream  An output stream to write serialized DOM tree
1644.138 +	 * @param aRoot Root node to be serialized
1644.139 +	 * @param aSaveOptions Options that control how serialization is performed	 	 
1644.140 +     * @return Number of byte written
1644.141 +     * @leave KXmlEngErrWrongUseOfAPI or one of general codes (e.g.KErrNoMemory)
1644.142 +     * @see MXmlEngOutputStream
1644.143 +     */
1644.144 +    IMPORT_C TInt SaveL( MXmlEngOutputStream& aStream,
1644.145 +						 TXmlEngNode aRoot = TXmlEngNode(),
1644.146 +						 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1644.147 +
1644.148 +    /**
1644.149 +     * Saves document tree into memory buffer
1644.150 +     *
1644.151 +     * @since S60 v3.1
1644.152 +	 * @param aBuffer Resulting buffer
1644.153 +     * @param aRoot A "root" of the subtree to serialize
1644.154 +     * @param aSaveOptions Various options to be effective during serialization
1644.155 +     * @return Number of bytes in updated buffer     
1644.156 +     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding.
1644.157 +     *
1644.158 +     * @note Result returned via aBuffer argument owns the memory buffer; it is up to 
1644.159 +     *      method caller to free it like in this sample:
1644.160 +     *
1644.161 +     * @see TXmlEngSerializationOptions
1644.162 +     */
1644.163 +    IMPORT_C TInt SaveL(RBuf8& aBuffer, 
1644.164 +    					TXmlEngNode aRoot = TXmlEngNode(), 
1644.165 +                        const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions()) const;
1644.166 +   
1644.167 +    /**
1644.168 +     * Creates complete copy of the document
1644.169 +     *
1644.170 +     * @since S60 v3.1
1644.171 +	 * @return Complete copy of the document tree
1644.172 +     */
1644.173 +	IMPORT_C RXmlEngDocument CloneDocumentL() const;
1644.174 +
1644.175 +    /**
1644.176 +     * Creates new element from specific namespace to be a root of the document tree.
1644.177 +     * Any existing document element of the document is destroyed
1644.178 +     *
1644.179 +     * @since S60 v3.1
1644.180 +	 * @param aName Element name
1644.181 +     * @param aNamespaceUri Element namespace URI
1644.182 +     * @param aPrefix Element namemespace prefix
1644.183 +     * @return A new root element
1644.184 +     */
1644.185 +    IMPORT_C TXmlEngElement CreateDocumentElementL(const TDesC8& aName, 
1644.186 +                                             const TDesC8& aNamespaceUri = KNullDesC8, 
1644.187 +                                             const TDesC8& aPrefix = KNullDesC8);
1644.188 +
1644.189 +    /**
1644.190 +     * Replaces (and destroys) document element with another one
1644.191 +     * New document element is added as the last child to the document node
1644.192 +     *
1644.193 +     * @since S60 v3.1
1644.194 +	 * @param aNewDocElement New document tree
1644.195 +     *
1644.196 +     * @note Use TXmlEngElement::ReconcileNamespacesL() on the new document element
1644.197 +     *      if it or its descendants can contain references to namespace declarations
1644.198 +     *      out of the element
1644.199 +     * @see TXmlEngElement::ReconcileNamespacesL()
1644.200 +     */
1644.201 +    IMPORT_C void SetDocumentElement(TXmlEngElement aNewDocElement);
1644.202 +
1644.203 +    /**
1644.204 +     * Get document encoding
1644.205 +     *
1644.206 +     * @since S60 v3.1
1644.207 +	 * @return Encoding of the source XML data.
1644.208 +     */
1644.209 +    IMPORT_C TPtrC8 XmlEncoding() const;
1644.210 +
1644.211 +    /**
1644.212 +     * Get xml version
1644.213 +     *
1644.214 +     * @since S60 v3.1
1644.215 +	 * @return Version number of XML taken from XML declaration
1644.216 +     */
1644.217 +    IMPORT_C TPtrC8 XmlVersion() const;
1644.218 +  
1644.219 +    /**
1644.220 +     * Retrieves base URI (if defined) of the document or NULL
1644.221 +     *
1644.222 +     * @since S60 v3.1
1644.223 +	 * @return Document URI
1644.224 +     */
1644.225 +    IMPORT_C TPtrC8 DocumentUri() const;
1644.226 +
1644.227 +    /**
1644.228 +     * Check if document is standalone
1644.229 +     *
1644.230 +     * @since S60 v3.1
1644.231 +	 * @return Whether standalone="true" was specified in XML declaration in the source XML file.
1644.232 +     */
1644.233 +    IMPORT_C TBool IsStandalone() const;
1644.234 +
1644.235 +    /**
1644.236 +     * Sets XML version number to be shown in XML declaration when document is serialized.
1644.237 +     *
1644.238 +     * @since S60 v3.1
1644.239 +	 * @param aVersion New version
1644.240 +     */
1644.241 +    IMPORT_C void  SetXmlVersionL(const TDesC8& aVersion);
1644.242 +
1644.243 +    /**
1644.244 +     * Sets location of the document.
1644.245 +     * Document's URI is used as top-level base URI definition.
1644.246 +     *
1644.247 +     * @since S60 v3.1
1644.248 +	 * @param aUri New document URI
1644.249 +     */
1644.250 +    IMPORT_C void  SetDocumentUriL(const TDesC8& aUri);
1644.251 +
1644.252 +    /**
1644.253 +     * Sets 'standalone' attribute of XML declaration for a document
1644.254 +     *
1644.255 +     * @since S60 v3.1
1644.256 +	 * @param aStandalone Is document standalone
1644.257 +     */
1644.258 +    IMPORT_C void  SetStandalone(TBool aStandalone);
1644.259 +
1644.260 +    /**
1644.261 +     * Get dom implementation.
1644.262 +     *
1644.263 +     * @since S60 v3.1
1644.264 +	 * @return Object that represents current DOM implementation
1644.265 +     *
1644.266 +     * @note There is no practical use of implementation object in this version
1644.267 +     *      of API other than for creating new RXmlEngDocument instances, but
1644.268 +     *      it will change in the future, when an implementation object 
1644.269 +     *      is used for changing configuration settings at run-time.
1644.270 +     */
1644.271 +    IMPORT_C RXmlEngDOMImplementation Implementation() const;
1644.272 +    
1644.273 +    /**
1644.274 +     * Get document element
1644.275 +     *
1644.276 +     * @since S60 v3.1
1644.277 +	 * @return A document element - the top-most element in the document tree
1644.278 +     */
1644.279 +    IMPORT_C TXmlEngElement DocumentElement() const;
1644.280 +
1644.281 +    /**
1644.282 +     * Sets "document" property on the node and all its descendants to be this RXmlEngDocument node 
1644.283 +     *
1644.284 +     * @since S60 v3.1
1644.285 +	 * @param aSource Node that should be added.
1644.286 +     * @return Adopted node
1644.287 +     */
1644.288 +    IMPORT_C TXmlEngNode AdoptNodeL(TXmlEngNode aSource);
1644.289 +
1644.290 +    /**
1644.291 +     * Creates new attribute,
1644.292 +     *
1644.293 +     * @since S60 v3.1
1644.294 +	 * @param aName Name of the atribute; no prefix allowed
1644.295 +     * @param aValue Value of the attribute (optional)
1644.296 +     * @return Handler to the newly created attribute 
1644.297 +     * 
1644.298 +     * @note 
1644.299 +     * aValue should represent a correct value of an attribute if it is put as is into XML file
1644.300 +     * (with all characters correctly escaped with entity references when XML spec requires)
1644.301 +     * 
1644.302 +     * TXmlEngElement class provides a rich set of attribute creation methods, which not
1644.303 +     * just create attribute but also link it into element.
1644.304 +     * 
1644.305 +     * There is no way to create attributes with namespace (despite the DOM spec); 
1644.306 +     * you have to use one of the TXmlEngElement::AddNewAttributeL(..) methods instead
1644.307 +     *
1644.308 +     * Returned handler is the only reference to the allocated memory
1644.309 +     * until you have attached the attribute to some element node
1644.310 +     */
1644.311 +    IMPORT_C TXmlEngAttr CreateAttributeL(const TDesC8& aName,
1644.312 +                                    const TDesC8& aValue = KNullDesC8);
1644.313 +
1644.314 +    /**
1644.315 +     * Creates new text node and copies the content string into it.
1644.316 +     *
1644.317 +     * @since S60 v3.1
1644.318 +	 * @param aCharacters Text node content
1644.319 +     * @return Created node
1644.320 +     */
1644.321 +    IMPORT_C TXmlEngTextNode CreateTextNodeL(const TDesC8& aCharacters = KNullDesC8);
1644.322 +
1644.323 +    /**
1644.324 +     * Creates new binary container and copies the content string into it.
1644.325 +     * Pointer to the container is stored in the document's 
1644.326 +     * data container list that can be fetched using GetDataContainerList().
1644.327 +     * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )
1644.328 +     *
1644.329 +     * @since S60 v3.2
1644.330 +	 * @param aCid Content identifier     
1644.331 +	 * @param aData Binary octets
1644.332 +     * @return Created node
1644.333 +     */
1644.334 +    IMPORT_C TXmlEngBinaryContainer CreateBinaryContainerL( const TDesC8& aCid,
1644.335 +    												  const TDesC8& aData );
1644.336 +
1644.337 +    /**
1644.338 +     * Creates new chunk container that stores reference to 
1644.339 +     * memory chunk.
1644.340 +     * Pointer to the container is stored in the document's 
1644.341 +     * data container list that can be fetched using GetDataContainerList().
1644.342 +     * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )     
1644.343 +     *
1644.344 +     * @since S60 v3.2
1644.345 +	 * @param aCid Content identifier 
1644.346 +	 * @param aChunk RChunk reference
1644.347 +	 * @param aChunkOffset Offset to the binary data in aChunk
1644.348 +	 * @param aDataSize Size of binary data in aChunk
1644.349 +     * @return Created node
1644.350 +     */
1644.351 +    IMPORT_C TXmlEngChunkContainer CreateChunkContainerL( const TDesC8& aCid, 
1644.352 +    												const RChunk& aChunk,
1644.353 +					                                const TInt aChunkOffset,
1644.354 +					                                const TInt aDataSize );
1644.355 +
1644.356 +    /**
1644.357 +     * Creates new file container that stores reference to 
1644.358 +     * file in file system.
1644.359 +     * Pointer to the container is stored in the document's 
1644.360 +     * data container list that can be fetched using GetDataContainerList().
1644.361 +     * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )     
1644.362 +     *
1644.363 +     * @since S60 v3.2
1644.364 +	 * @param aCid Content identifier
1644.365 +	 * @param aFile RFile reference
1644.366 +     * @return Created node
1644.367 +     */
1644.368 +    IMPORT_C TXmlEngFileContainer CreateFileContainerL( const TDesC8& aCid, 
1644.369 +    											  const RFile& aFile );
1644.370 +
1644.371 +    /**
1644.372 +     * Creates new element node that belongs to specific namespace.
1644.373 +     * A namespace declaration node is created on the element.
1644.374 +     *
1644.375 +     * @since S60 v3.1
1644.376 +	 * @param aNamespaceUri Namespace of new element
1644.377 +     * @param aPrefix Prefix to use for namespace binding and QName of the element
1644.378 +     * @param aLocalName Local name of the element 
1644.379 +     * @return Created node
1644.380 +     * @note If null namespace uri is provided element will be created without namespace.
1644.381 +     */  
1644.382 +    IMPORT_C TXmlEngElement CreateElementL(const TDesC8& aLocalName, 
1644.383 +                                     const TDesC8& aNamespaceUri = KNullDesC8, 
1644.384 +                                     const TDesC8& aPrefix = KNullDesC8);
1644.385 +
1644.386 +    /**
1644.387 +     * Creates new comment node and copies the content string into it.
1644.388 +     *
1644.389 +     * @since S60 v3.1
1644.390 +	 * @param aText New comment
1644.391 +     * @return Created node
1644.392 +     */
1644.393 +    IMPORT_C TXmlEngComment CreateCommentL(const TDesC8& aText = KNullDesC8);
1644.394 +
1644.395 +    /**
1644.396 +     * Creates new CDATA section node and copies the content into it.
1644.397 +     *
1644.398 +     * @since S60 v3.1
1644.399 +	 * @param aContents CDATASection content
1644.400 +     * @return Created node
1644.401 +     */
1644.402 +    IMPORT_C TXmlEngCDATASection CreateCDATASectionL(const TDesC8& aContents = KNullDesC8);
1644.403 +
1644.404 +    /**
1644.405 +     * Creates new entity reference node for aEntityName entity
1644.406 +     *
1644.407 +     * @since S60 v3.1
1644.408 +	 * @param aEntityRef is a string in one of the forms:
1644.409 +     *     -  <i>name</i>
1644.410 +     *     -  <b>&</b><i>name</i>
1644.411 +     *     -  <b>&</b><i>name</i><b>;</b>
1644.412 +     * where <i>name</i> is the name of the entity
1644.413 +     * @return Created node
1644.414 +     * 
1644.415 +     * @note &lt; , &gt; , &apos; , &quot; and other <b>predefined</b> entity references
1644.416 +     *      should not be created with this method. These entity refs are rather 
1644.417 +     *      "character references" and encoded/decoded automatically.
1644.418 +     */
1644.419 +    IMPORT_C TXmlEngEntityReference CreateEntityReferenceL(const TDesC8& aEntityRef);
1644.420 +
1644.421 +    /**
1644.422 +     * Creates new processing instruction node and set its "target" and "data" values
1644.423 +     *
1644.424 +     * @since S60 v3.1
1644.425 +	 * @param aTarget Target
1644.426 +     * @param aData Data
1644.427 +     * @return Created node
1644.428 +     */
1644.429 +    IMPORT_C TXmlEngProcessingInstruction CreateProcessingInstructionL(const TDesC8& aTarget, 
1644.430 +                                                                 const TDesC8& aData = KNullDesC8);
1644.431 +                                                                 
1644.432 +    /**
1644.433 +     * Registers specified attribute as xml:id.
1644.434 +     * First parametr allows user, to specify sub-tree, not to search whole document.
1644.435 +     * To search whole tree see @see RegisterXmlId(const TDesC8,const TDesC8)
1644.436 +     *
1644.437 +     * @since S60 v3.2
1644.438 +     * @param aStartElement Root of tree to search (should be part of the document)
1644.439 +     * @param aLocalName Name of attribute
1644.440 +	 * @param aNamespaceUri Namespace of new element (default empty)
1644.441 +     */
1644.442 +    IMPORT_C void RegisterXmlIdL(TXmlEngElement aStartElement,
1644.443 +                                 const TDesC8& aLocalName, 
1644.444 +                                 const TDesC8& aNamespaceUri = KNullDesC8);
1644.445 +
1644.446 +    /**
1644.447 +     * Registers specified attribute as xml:id.
1644.448 +     * Not to search whole tree see @see RegisterXmlId(TXmlEngElement,const TDesC8,const TDesC8)
1644.449 +     *
1644.450 +     * @since S60 v3.2
1644.451 +     * @param aLocalName Name of attribute
1644.452 +	 * @param aNamespaceUri Namespace of new element (default empty)
1644.453 +     */
1644.454 +    IMPORT_C void RegisterXmlIdL(const TDesC8& aLocalName, 
1644.455 +                                 const TDesC8& aNamespaceUri = KNullDesC8);
1644.456 +       
1644.457 +    /**
1644.458 +     * Looks for element with specified value of xml:id
1644.459 +     *
1644.460 +     * @since S60 v3.2
1644.461 +	 * @param aValue Name of attribute
1644.462 +     * @return found element or null-element.
1644.463 +     */
1644.464 +    IMPORT_C TXmlEngElement FindElementByXmlIdL(const TDesC8& aValue ) const;  
1644.465 +
1644.466 +    /**
1644.467 +     * Retrieves an array of data containers owned by this document.
1644.468 +     *
1644.469 +	 * @note The document ceases to be the owner of data container when data container
1644.470 +	 *		 (or one of its predecessors) is removed from the document or data container 
1644.471 +	 * 	 	 (or one of its predecessors) becomes a part of another document.
1644.472 +	 *		 Unlinking data container (or one of its predecessors) doesn't remove
1644.473 +	 *		 ownership of data container from the this document so the list might
1644.474 +	 *		 contain containers that are not linked to this document anymore.    
1644.475 +     * @since S60 v3.2
1644.476 +	 * @param aList Array of data containers
1644.477 +     */
1644.478 +    IMPORT_C void GetDataContainerList( RArray<TXmlEngDataContainer>& aList );         
1644.479 +                                                                 
1644.480 +protected:
1644.481 +    friend class RXmlEngDOMParser;
1644.482 +    friend class TXmlEngNode;
1644.483 +    friend class TXmlEngAttr;
1644.484 +    friend class TXmlEngElement;
1644.485 +    friend class RXmlEngDOMImplementation;
1644.486 +
1644.487 +protected:
1644.488 +    /**
1644.489 +     * Constructor
1644.490 +     *
1644.491 +     * @since S60 v3.1
1644.492 +	 * @param aInternal Document pointer
1644.493 +	 */
1644.494 +    inline RXmlEngDocument(void* aInternal);
1644.495 +
1644.496 +    /**
1644.497 +     * DISABLED for document; CloneDocumentL() must be used
1644.498 +     *
1644.499 +     * @since S60 v3.1
1644.500 +	 */
1644.501 +    inline TXmlEngNode CopyL() const; 
1644.502 +
1644.503 +    /**
1644.504 +     * DISABLED for document; Destroy() must be used
1644.505 +     *
1644.506 +     * @since S60 v3.1
1644.507 +	 */    
1644.508 +    inline void Remove();
1644.509 +
1644.510 +    /**
1644.511 +     * DISABLED for document; Destroy() must be used
1644.512 +     *
1644.513 +     * @since S60 v3.1
1644.514 +	 */ 
1644.515 +    inline void ReplaceWith(TXmlEngNode aNode);
1644.516 +private:
1644.517 +    /**
1644.518 +     * Main implementation of SaveL() functions that puts together all common code
1644.519 +     * and serializes to buffer or output stream.
1644.520 +     *
1644.521 +     * @since S60 v3.2
1644.522 +	 * @param aNode Root node to be serialized     
1644.523 +	 * @param aBuffer buffer with serialized data.
1644.524 +	 * @param aOutputStream stream that should be used during serialization
1644.525 +	 * @param aSaveOptions Options that control how serialization is performed
1644.526 +     * @return Number of bytes written
1644.527 +     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.     
1644.528 +	 */ 
1644.529 +	TInt SaveNodeL( TXmlEngNode aNode,
1644.530 +					RBuf8& aBuffer,
1644.531 +               	    MXmlEngOutputStream* aOutputStream = NULL,
1644.532 +               	    TXmlEngSerializationOptions aOpt = TXmlEngSerializationOptions()) const;	
1644.533 +
1644.534 +    /**
1644.535 +     * "Secondary" constructor that should be called on every newly created document node.
1644.536 +     * Initializes container for nodes owned by the document.
1644.537 +     *
1644.538 +     * The need for such secondary constructor is in the fact that underlying libxml2
1644.539 +     * library knows nothing about ownership of unlinked nodes -- this feature is
1644.540 +     * implemented in C++ DOM wrapper.
1644.541 +     *
1644.542 +     * @since S60 v3.1
1644.543 +	 */ 
1644.544 +    void InitOwnedNodeListL();
1644.545 +
1644.546 +    /**
1644.547 +     * Adds aNode to the list of owned nodes - the nodes that are not linked yet into a 
1644.548 +     * document tree, but still destroyed with the document that owns them.
1644.549 +     *
1644.550 +     * @since S60 v3.1
1644.551 +	 * @param aNode Node that should be added to document
1644.552 +     *
1644.553 +     * In case of OOM (during growing node list container) the argument node is freed with
1644.554 +     * xmlFreeNode()
1644.555 +     */ 
1644.556 +    void TakeOwnership(TXmlEngNode aNode);
1644.557 +
1644.558 +    /**
1644.559 +     * Remove aNode from the list of owned nodes.
1644.560 +     *
1644.561 +     * @since S60 v3.1
1644.562 +	 * @param aNode Node that should be removed from document
1644.563 +     */
1644.564 +    void RemoveOwnership(TXmlEngNode aNode);
1644.565 +
1644.566 +protected:
1644.567 +    /**  Pointer to DOM implementation object */
1644.568 +    RXmlEngDOMImplementation* iImpl;
1644.569 +
1644.570 +};// class RXmlEngDocument
1644.571 +
1644.572 +
1644.573 +
1644.574 +#include "xmlengdocument.inl"
1644.575 +
1644.576 +#endif /* XMLENGINE_DOCUMENT_H_INCLUDED */
  1645.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1645.2 +++ b/epoc32/include/xml/dom/xmlengdocument.inl	Wed Mar 31 12:27:01 2010 +0100
  1645.3 @@ -0,0 +1,33 @@
  1645.4 +/*
  1645.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1645.6 +* All rights reserved.
  1645.7 +* This component and the accompanying materials are made available
  1645.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1645.9 +* which accompanies this distribution, and is available
 1645.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1645.11 +*
 1645.12 +* Initial Contributors:
 1645.13 +* Nokia Corporation - initial contribution.
 1645.14 +*
 1645.15 +* Contributors:
 1645.16 +*
 1645.17 +* Description:       Document node functions
 1645.18 +*
 1645.19 +*/
 1645.20 +
 1645.21 +
 1645.22 +
 1645.23 +
 1645.24 +
 1645.25 +
 1645.26 +
 1645.27 +
 1645.28 +
 1645.29 +// -----------------------------------------------------------------------------
 1645.30 +// Constructor
 1645.31 +// -----------------------------------------------------------------------------
 1645.32 +//
 1645.33 +inline RXmlEngDocument::RXmlEngDocument(void* aInternal):TXmlEngNode(aInternal)
 1645.34 +    {
 1645.35 +    }
 1645.36 +    
  1646.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1646.2 +++ b/epoc32/include/xml/dom/xmlengdocumentfragment.h	Wed Mar 31 12:27:01 2010 +0100
  1646.3 @@ -0,0 +1,60 @@
  1646.4 +/*
  1646.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1646.6 +* All rights reserved.
  1646.7 +* This component and the accompanying materials are made available
  1646.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1646.9 +* which accompanies this distribution, and is available
 1646.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1646.11 +*
 1646.12 +* Initial Contributors:
 1646.13 +* Nokia Corporation - initial contribution.
 1646.14 +*
 1646.15 +* Contributors:
 1646.16 +*
 1646.17 +* Description:       Document fragment node functions
 1646.18 +*
 1646.19 +*/
 1646.20 +
 1646.21 +
 1646.22 +
 1646.23 +
 1646.24 +
 1646.25 +
 1646.26 +
 1646.27 +#ifndef XMLENGINE_DOCUMENTFRAGMENT_H_INCLUDED
 1646.28 +#define XMLENGINE_DOCUMENTFRAGMENT_H_INCLUDED
 1646.29 +
 1646.30 +#include "xmlengnode.h"
 1646.31 +
 1646.32 +
 1646.33 +
 1646.34 +/** 
 1646.35 + * Instance of TXmlEngDocumentFragment class represents an document fragment of the DOM tree.
 1646.36 + * 
 1646.37 + * @lib XmlEngineDOM.lib
 1646.38 + * @since S60 v3.1
 1646.39 + */
 1646.40 +class TXmlEngDocumentFragment : public TXmlEngNode
 1646.41 +{
 1646.42 +public:
 1646.43 +    /** 
 1646.44 +     * Default constructor
 1646.45 +     *
 1646.46 +     * @since S60 v3.1
 1646.47 +     */
 1646.48 +	inline TXmlEngDocumentFragment();
 1646.49 +
 1646.50 +protected:
 1646.51 +	/** 
 1646.52 +     * Constructor
 1646.53 +     *
 1646.54 +     * @since S60 v3.1
 1646.55 +     * @param aInternal Document fragment pointer
 1646.56 +     */
 1646.57 +	inline TXmlEngDocumentFragment(void* aInternal);
 1646.58 +};
 1646.59 +
 1646.60 +#include "xmlengdocumentfragment.inl"
 1646.61 +
 1646.62 +#endif /* XMLENGINE_DOCUMENTFRAGMENT_H_INCLUDED */
 1646.63 +
  1647.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1647.2 +++ b/epoc32/include/xml/dom/xmlengdocumentfragment.inl	Wed Mar 31 12:27:01 2010 +0100
  1647.3 @@ -0,0 +1,40 @@
  1647.4 +/*
  1647.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1647.6 +* All rights reserved.
  1647.7 +* This component and the accompanying materials are made available
  1647.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1647.9 +* which accompanies this distribution, and is available
 1647.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1647.11 +*
 1647.12 +* Initial Contributors:
 1647.13 +* Nokia Corporation - initial contribution.
 1647.14 +*
 1647.15 +* Contributors:
 1647.16 +*
 1647.17 +* Description:       Document fragment node functions
 1647.18 +*
 1647.19 +*/
 1647.20 +
 1647.21 +
 1647.22 +
 1647.23 +
 1647.24 +
 1647.25 +
 1647.26 +
 1647.27 +// -----------------------------------------------------------------------------
 1647.28 +// Default constructor
 1647.29 +// -----------------------------------------------------------------------------
 1647.30 +//
 1647.31 +inline TXmlEngDocumentFragment::TXmlEngDocumentFragment():TXmlEngNode(NULL)
 1647.32 +    {
 1647.33 +    }
 1647.34 +    
 1647.35 +
 1647.36 +// -----------------------------------------------------------------------------
 1647.37 +// Constructor
 1647.38 +// -----------------------------------------------------------------------------
 1647.39 +//
 1647.40 +inline TXmlEngDocumentFragment::TXmlEngDocumentFragment(void* aInternal):TXmlEngNode(aInternal)
 1647.41 +    {
 1647.42 +    }
 1647.43 +    
  1648.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1648.2 +++ b/epoc32/include/xml/dom/xmlengdom.h	Wed Mar 31 12:27:01 2010 +0100
  1648.3 @@ -0,0 +1,56 @@
  1648.4 +/*
  1648.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1648.6 +* All rights reserved.
  1648.7 +* This component and the accompanying materials are made available
  1648.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1648.9 +* which accompanies this distribution, and is available
 1648.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1648.11 +*
 1648.12 +* Initial Contributors:
 1648.13 +* Nokia Corporation - initial contribution.
 1648.14 +*
 1648.15 +* Contributors:
 1648.16 +*
 1648.17 +* Description:       This file is to be included by DOM API clients
 1648.18 +*
 1648.19 +*/
 1648.20 +
 1648.21 +
 1648.22 +
 1648.23 +
 1648.24 +
 1648.25 +
 1648.26 +
 1648.27 +#ifndef XMLENGINE_DOM_H_INCLEDED
 1648.28 +#define XMLENGINE_DOM_H_INCLEDED
 1648.29 +
 1648.30 +#include "XmlEngAttr.h"
 1648.31 +#include "XmlEngElement.h"
 1648.32 +#include "XmlEngDocument.h"
 1648.33 +#include "XmlEngElement.h"
 1648.34 +#include "XmlEngCDATASection.h"
 1648.35 +#include "XmlEngProcessingInstruction.h"
 1648.36 +#include "XmlEngComment.h"
 1648.37 +#include "XmlEngDocumentFragment.h"
 1648.38 +#include "XmlEngEntityReference.h"
 1648.39 +#include "XmlEngNamespace.h"
 1648.40 +#include "XmlEngText.h"
 1648.41 +
 1648.42 +#include "XmlEngBinaryContainer.h"
 1648.43 +#include "XmlEngChunkContainer.h"
 1648.44 +#include "XmlEngFileContainer.h"
 1648.45 +
 1648.46 +#include "XmlEngNodeList.h"
 1648.47 +
 1648.48 +#include "XmlEngErrors.h"
 1648.49 +#include "xmlengserializationoptions.h"
 1648.50 +#include "xmlengnodefilter.h"
 1648.51 +#include "xmlengoutputstream.h"	//pjj18 new
 1648.52 +#include "xmlengdataserializer.h"		//pjj18 new
 1648.53 +#include "xmlenguserdata.h"
 1648.54 +#include "xmlengdomimplementation.h"
 1648.55 +#include "xmlengdomparser.h"
 1648.56 +
 1648.57 +
 1648.58 +#endif // XMLENGINE_DOM_H_INCLEDED
 1648.59 +
  1649.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1649.2 +++ b/epoc32/include/xml/dom/xmlengdomimplementation.h	Wed Mar 31 12:27:01 2010 +0100
  1649.3 @@ -0,0 +1,70 @@
  1649.4 +/*
  1649.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1649.6 +* All rights reserved.
  1649.7 +* This component and the accompanying materials are made available
  1649.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1649.9 +* which accompanies this distribution, and is available
 1649.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1649.11 +*
 1649.12 +* Initial Contributors:
 1649.13 +* Nokia Corporation - initial contribution.
 1649.14 +*
 1649.15 +* Contributors:
 1649.16 +*
 1649.17 +* Description:       DOM implementation functions
 1649.18 +*
 1649.19 +*/
 1649.20 +
 1649.21 +
 1649.22 +
 1649.23 +
 1649.24 +
 1649.25 +
 1649.26 +
 1649.27 +#ifndef XMLENGINE_DOMIMPLEMENTATION_H_INCLUDED
 1649.28 +#define XMLENGINE_DOMIMPLEMENTATION_H_INCLUDED
 1649.29 +
 1649.30 +#include <e32base.h>
 1649.31 +
 1649.32 +/**
 1649.33 + * The RXmlEngDOMImplementation interface provides a number of methods for performing 
 1649.34 + * operations that are independent of any particular instance of the document object model. 
 1649.35 + *    
 1649.36 + * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-102161490
 1649.37 + *
 1649.38 + * @lib XmlEngineDOM.lib
 1649.39 + * @since S60 v3.1
 1649.40 + */
 1649.41 +class RXmlEngDOMImplementation
 1649.42 +{
 1649.43 +  public:
 1649.44 +    
 1649.45 +    
 1649.46 +	/**
 1649.47 +     * Open method needed to initialize the XmlEngineDOM library and should be called before using any
 1649.48 +     * class/function from this library. The initialization is required in every client thread in which
 1649.49 +     * it used. Calling this method multiple times in a thread is allowed. There should be a call to Close()
 1649.50 +     * for every call to Open, per thread.
 1649.51 +     *
 1649.52 +     * @since S60 v3.2
 1649.53 +     * @param aHeap - pointer to client created heap. If aHeap argument is NULL (by default) 
 1649.54 +     *                client thread's default heap is used.- NOT IMPLEMENTED YET
 1649.55 +     * @return Document handle
 1649.56 +     */
 1649.57 +    IMPORT_C void OpenL( RHeap* aHeap = NULL );
 1649.58 +
 1649.59 +    /**
 1649.60 +     * Close method. It does cleanup of resources used by XmlengineDOM library. Client should call this
 1649.61 +     * method at the end of library usage. The library should not be used after this call. If needed, client
 1649.62 +     * can initialize the library again by calling Open() method. Libxml2 uses Symbian implementation of POSIX
 1649.63 +     * standard libraries. During closure of XmlEngineDOM library, the standard library is also closed by default.
 1649.64 +     * User can choose not to close standard libraries when XmlEngine shuts down, by specifying FALSE in aCloseStdLib flag.
 1649.65 +     * 
 1649.66 +     * @since S60 v3.2
 1649.67 +     * @param aCloseStdLib A flag, if TRUE will close the STDLIB resources belonging to this thread.
 1649.68 +     *                     else STDLIB is not closed.
 1649.69 +     */
 1649.70 +    IMPORT_C void Close(TBool aCloseStdLib = ETrue);
 1649.71 +};
 1649.72 +
 1649.73 +#endif /* XMLENGINE_DOMIMPLEMENTATION_H_INCLUDED */
  1650.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1650.2 +++ b/epoc32/include/xml/dom/xmlengdomparser.h	Wed Mar 31 12:27:01 2010 +0100
  1650.3 @@ -0,0 +1,184 @@
  1650.4 +/*
  1650.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1650.6 +* All rights reserved.
  1650.7 +* This component and the accompanying materials are made available
  1650.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1650.9 +* which accompanies this distribution, and is available
 1650.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1650.11 +*
 1650.12 +* Initial Contributors:
 1650.13 +* Nokia Corporation - initial contribution.
 1650.14 +*
 1650.15 +* Contributors:
 1650.16 +*
 1650.17 +* Description:       DOM parser functions
 1650.18 +*
 1650.19 +*/
 1650.20 +
 1650.21 +
 1650.22 +
 1650.23 +
 1650.24 +
 1650.25 +
 1650.26 +
 1650.27 +#ifndef XMLENGINE_DOMPARSER_H_INCLUDED
 1650.28 +#define XMLENGINE_DOMPARSER_H_INCLUDED
 1650.29 +
 1650.30 +#include <f32file.h>
 1650.31 +
 1650.32 +class RXmlEngDOMImplementation;
 1650.33 +class RXmlEngDocument;
 1650.34 +
 1650.35 +/** 
 1650.36 + * DOM parser class implements methods for parsing XML data.
 1650.37 + *
 1650.38 + * Parse XML data in one chunk. Data can be parsed from file 
 1650.39 + * or memory buffer.
 1650.40 + *
 1650.41 + * Sample code for parsing from buffer:
 1650.42 + * @code
 1650.43 + *      RXmlEngDOMImplementation domImpl;
 1650.44 + *      domImpl.OpenL();              ///< opening DOM implementation object 
 1650.45 + *      RXmlEngDOMParser parser;
 1650.46 + *      parser.Open( domImpl );   ///< opening parser object
 1650.47 + *      RXmlEngDocument iDoc;
 1650.48 + *      iDoc =parser.ParseL( *aInput );   ///< parsing aInput - buffer  
 1650.49 + *      iDoc.Close();               ///< closing all opened objects
 1650.50 + *      parser.Close();
 1650.51 + *      domImpl.Close();
 1650.52 + * @endcode 
 1650.53 + * 
 1650.54 + * Sample code for parsing from file:
 1650.55 + * @code
 1650.56 + *      RXmlEngDOMImplementation domImpl;
 1650.57 + *      domImpl.OpenL();              ///< opening DOM implementation object 
 1650.58 + *      RXmlEngDOMParser parser;
 1650.59 + *      parser.Open( domImpl );   ///< opening parser object
 1650.60 + *      RXmlEngDocument iDoc;
 1650.61 + *      iDoc =parser.ParseFileL( aFileName );   ///< parsing from file  
 1650.62 + *      iDoc.Close();               ///< closing all openend objects
 1650.63 + *      parser.Close();
 1650.64 + *      domImpl.Close();
 1650.65 + * @endcode 
 1650.66 + * 
 1650.67 + * @lib XmlEngineDOM.lib
 1650.68 + * @since S60 v3.1
 1650.69 + */
 1650.70 +class RXmlEngDOMParser
 1650.71 +{
 1650.72 +public:
 1650.73 +    /**
 1650.74 +     * Default constructor
 1650.75 +     */
 1650.76 +    IMPORT_C RXmlEngDOMParser();
 1650.77 +	
 1650.78 +    /** 
 1650.79 +     * Opens the parser.
 1650.80 +     *
 1650.81 +	 * @since S60 v3.2
 1650.82 +	 * @param aDOMImpl DOM implementation object
 1650.83 +     * @return KErrNone if succeed.
 1650.84 +     */
 1650.85 +    IMPORT_C TInt Open(RXmlEngDOMImplementation& aDOMImpl);
 1650.86 +    
 1650.87 +    /** 
 1650.88 +     * Closes the parser.
 1650.89 +     *
 1650.90 +	 * @since S60 v3.2
 1650.91 +	 */
 1650.92 +    IMPORT_C void Close();
 1650.93 +
 1650.94 +    /** 
 1650.95 +     * Parses chunk of XML data from memory buffer and builds DOM RXmlEngDocument.
 1650.96 +     *
 1650.97 +     * @since S60 v3.2
 1650.98 +     * @param aBuffer XML data buffer
 1650.99 +     * 
1650.100 +     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1650.101 +     */
1650.102 +    IMPORT_C void ParseChunkL(const TDesC8& aBuffer);
1650.103 +    /** 
1650.104 +     * Creates document from parsed chunks of data.
1650.105 +     * Should be called after parsing of allchunks.
1650.106 +     * Ownership over returned RXmlEngDocument object is transferred to the caller of the method.
1650.107 +     *
1650.108 +     * @since S60 v3.2
1650.109 +     * @return RXmlEngDocument created document.
1650.110 +     * 
1650.111 +     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1650.112 +     */
1650.113 +    IMPORT_C RXmlEngDocument FinishL();
1650.114 +    
1650.115 +    /** 
1650.116 +     * Parses XML file and builds DOM RXmlEngDocument
1650.117 +     *
1650.118 +     * @since S60 v3.2
1650.119 +	 * @param aRFs File server session
1650.120 +     * @param aFileName File name
1650.121 +     * @param aChunkSize Size of chunk (if 0 chunks won't be used)
1650.122 +     * @return Document handle
1650.123 +     * 
1650.124 +     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1650.125 +	 */
1650.126 +    IMPORT_C RXmlEngDocument ParseFileL(RFs &aRFs, const TDesC& aFileName, TUint aChunkSize = 0);
1650.127 +
1650.128 +    /** 
1650.129 +     * Parses XML file and builds DOM RXmlEngDocument
1650.130 +     *
1650.131 +     * @since S60 v3.2
1650.132 +	 * @param aFileName File name
1650.133 +     * @param aChunkSize Size of chunk (if 0 chunks won't be used)
1650.134 +     * @return Document handle
1650.135 +     * 
1650.136 +     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1650.137 +     */
1650.138 +    IMPORT_C RXmlEngDocument ParseFileL(const TDesC& aFileName, TUint aChunkSize = 0);
1650.139 +
1650.140 +    /** 
1650.141 +     * Parses XML data from memory buffer and builds DOM RXmlEngDocument without chunks
1650.142 +     *
1650.143 +	 * @since S60 v3.1
1650.144 +	 * @param aBuffer XML data buffer
1650.145 +     * @return Document handle
1650.146 +     * 
1650.147 +     * @leave KXmlEngErrParsing code (besides system I/O error codes)
1650.148 +     */
1650.149 +    IMPORT_C RXmlEngDocument ParseL(const TDesC8& aBuffer);  
1650.150 +
1650.151 +    /** 
1650.152 +     * Return last parsing error code. 
1650.153 +     *
1650.154 +     * @since S60 v3.2
1650.155 +	 * @return positive number
1650.156 +     *
1650.157 +     * @note Error codes are positive numbers. User can find them
1650.158 +     *         in XmlEngDErrors.h
1650.159 +     */
1650.160 +    IMPORT_C TInt GetLastParsingError();
1650.161 +private:
1650.162 +    /** 
1650.163 +     * Parses XML file and builds DOM RXmlEngDocument without usage of chunks
1650.164 +     *
1650.165 +     * @param aRFs File server session
1650.166 +     * @param aFileName File name
1650.167 +     * @return Document handle
1650.168 +     * 
1650.169 +     * @leave KXmlEngErrParsing code (besides system I/O error codes)
1650.170 +	 */
1650.171 +    RXmlEngDocument ParseFileWithoutChunksL(RFs& aRFs, const TDesC& aFileName);
1650.172 +
1650.173 +    /** 
1650.174 +     * Cleanup internal data.
1650.175 +     *
1650.176 +     * @since S60 v3.2
1650.177 +     */
1650.178 +    void Cleanup();
1650.179 +private:
1650.180 +    void* iInternal;
1650.181 +    TInt iError;
1650.182 +    RXmlEngDOMImplementation* iImpl;
1650.183 +};
1650.184 +
1650.185 +
1650.186 +
1650.187 +#endif /* XMLENGINE_DOMPARSER_H_INCLUDED */
  1651.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1651.2 +++ b/epoc32/include/xml/dom/xmlengelement.h	Wed Mar 31 12:27:01 2010 +0100
  1651.3 @@ -0,0 +1,995 @@
  1651.4 +/*
  1651.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1651.6 +* All rights reserved.
  1651.7 +* This component and the accompanying materials are made available
  1651.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1651.9 +* which accompanies this distribution, and is available
 1651.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1651.11 +*
 1651.12 +* Initial Contributors:
 1651.13 +* Nokia Corporation - initial contribution.
 1651.14 +*
 1651.15 +* Contributors:
 1651.16 +*
 1651.17 +* Description:       Element node functions
 1651.18 +*
 1651.19 +*/
 1651.20 +
 1651.21 +
 1651.22 +
 1651.23 +
 1651.24 +
 1651.25 +
 1651.26 +
 1651.27 +#ifndef XMLENGINE_ELEMENT_H_INCLUDED
 1651.28 +#define XMLENGINE_ELEMENT_H_INCLUDED
 1651.29 +
 1651.30 +#include "XmlEngAttr.h"
 1651.31 +#include "XmlEngNamespace.h"
 1651.32 +
 1651.33 +template<class T> class RXmlEngNodeList;
 1651.34 +
 1651.35 +
 1651.36 +/**
 1651.37 + * Instance of TXmlEngElement class represents an XML element in the DOM tree.
 1651.38 + *
 1651.39 + * <b>Namespace handling:</b>
 1651.40 + *
 1651.41 + * Namespace of XML element is an URI that in pair with <i>local part</i> of
 1651.42 + * element's name consistute <b>expanded-name</b> of element. It is said that "the element
 1651.43 + * is of <i>NNN</i> namespace".
 1651.44 + *
 1651.45 + * XML elements are shown as belonging to a specific namespace by using <i>prefixes</i>
 1651.46 + * that previously were bound to some namespace URIs. The scope of a prefix is the
 1651.47 + * element, where it was declared and all its child (sub-)elements.
 1651.48 + *      
 1651.49 + * Namespace declaration is created by using special <b>xmlns:<i>{prefix-name}</i></b>
 1651.50 + * attribute (which is not really considered as attribute in DOM):
 1651.51 + * @code 
 1651.52 + *    <a xmlns:pr="http://some.uri.com/"> ... </a>
 1651.53 + * OR
 1651.54 + *    <pr:a xmlns:pr="http://some.uri.com/"> ... </a>
 1651.55 + *    <a xmlns="http://some.uri.com/"> ... </a>
 1651.56 + * @endcode
 1651.57 + *
 1651.58 + * The latter two examples are equivalent and show the use of <i>default namespace</i>.
 1651.59 + *    
 1651.60 + * Implementation notes:
 1651.61 + *	- Element having no namespace is either presented with a NULL TXmlEngNamespace node 
 1651.62 + *    or a TXmlEngNamespace node that has NULL prefix and namespace URI set to "". 
 1651.63 + *    The former is used by default on all nodes, whereas the latter is for cases
 1651.64 + *    when some node contains undeclaration of the default namespace:
 1651.65 + * @code
 1651.66 + *	   <a xmlns=""> .. </a>
 1651.67 + * @endcode
 1651.68 + *
 1651.69 + * - The prefix of the default attribute is NULL, not "" (zero-length string)
 1651.70 + *	 "" corresponds to  
 1651.71 + *   @code
 1651.72 + *       <a xmlns:="http://some.uri.com/"> ... </a>
 1651.73 + *   @endcode
 1651.74 + *   (it does not contradict XML spec, but you are strongly advised against using this)
 1651.75 + *
 1651.76 + * - Prefix <b>"xml"</b> is reserved by XML Namespace spec for special purposes; it is implicitly bound
 1651.77 + *   to XML's namespace <i>"http://www.w3.org/XML/1998/namespace"</i> and no one is allowed
 1651.78 + *   to use this prefix except as with spec-defined elements and attributes or to rebind this 
 1651.79 + *   prefix to other namespaces
 1651.80 + *
 1651.81 + * - Namespace URI may be "" only for default namespace. In other words,
 1651.82 + *   "" namespace URI may not be bound to non-NULL prefix. 
 1651.83 + *          
 1651.84 + *   Declaration of "" namespace with NULL prefix results in:
 1651.85 + *   @code
 1651.86 + *       <a xmlns=""> ... </a>
 1651.87 + *   @endcode
 1651.88 + *   which <i>undeclares</i> any existing (in some parent element) default namespace
 1651.89 + *   for the scope of element 'a': element, its attributes and all child nodes of DOM tree.
 1651.90 + *   Note, that such "undeclaration" will be added only if neccessary. 
 1651.91 + *        
 1651.92 + * - Unneccessary namespace declaration are ignored. Attemps to add namespace binding 
 1651.93 + *   using same namespace URI and prefix if such binding already exists in the scope
 1651.94 + *   will have no effect.
 1651.95 + *
 1651.96 + * - <b>IMPORTANT!</b> Attributes DO NOT HAVE default namespaces. If an attribute has no
 1651.97 + *   prefix, its namespace is <b>undeclared</b> even if there is some default namespaces for
 1651.98 + *   the scope of the element, which contains the attribute.
 1651.99 + *
1651.100 + * So, it is wrong to write something like this:
1651.101 + * @code
1651.102 + *     <a xmlns="ns_uri"  attr="value"> ... </a>
1651.103 + * @endcode
1651.104 + * and assume that the <b>attr</b> belongs to namespace pointed to with <i>ns_uri</i>.
1651.105 + *    
1651.106 + * <b>HINTS:</b>
1651.107 + * - Use namespace declaration nodes as much as possible (but watch out prefix collisions).
1651.108 + * - Add most referred to namespace declarations (AddNamespaceDeclarationL(uri,pref)) after
1651.109 + *   any other namespace declarations in a element -- the will be found faster in
1651.110 + *   namespace lookups.
1651.111 + *
1651.112 + * @lib XmlEngineDOM.lib
1651.113 + * @since S60 v3.1
1651.114 + */
1651.115 +
1651.116 +class TXmlEngElement : public TXmlEngNode
1651.117 +{
1651.118 +  public:
1651.119 +    /**
1651.120 +     * Default constructor for automatic variables (not initialized)
1651.121 +	 *
1651.122 +     * @since S60 v3.1
1651.123 +	 */
1651.124 +    inline TXmlEngElement();
1651.125 +
1651.126 +    /**
1651.127 +     * Constructor
1651.128 +     *
1651.129 +     * @since S60 v3.1
1651.130 +	 * @param aInternal element pointer
1651.131 +	 */
1651.132 +    inline TXmlEngElement(void* aInternal);
1651.133 +	
1651.134 +    /** 
1651.135 +    *    @name XmlEngine's non-DOM extensions
1651.136 +    */
1651.137 +    /** @{ */
1651.138 +
1651.139 +    /**
1651.140 +     *   Retrieves list of attribute nodes of the element
1651.141 +     *   
1651.142 +     *   @param aList - a node list object to initialize
1651.143 +     *
1651.144 +     *   Passed by reference list of nodes is initialized and after call to
1651.145 +     *   Attributes(..) is ready for use with HasNext() and Next() methods:
1651.146 +     *
1651.147 +     *   @code
1651.148 +     *       ...
1651.149 +     *       TXmlEngElement root = doc.DocumentElement();
1651.150 +     *       RXmlEngNodeList<TXmlEngAttr>    attlist;
1651.151 +     *       root.GetAttributes(attlist);
1651.152 +     *       while (attlist.HasNext())
1651.153 +     *           processAttribute(attlist.Next());
1651.154 +     *       ...
1651.155 +	 *       attlist.Close();
1651.156 +     *   @endcode
1651.157 +	 *
1651.158 +     * @since S60 v3.1
1651.159 +	 */
1651.160 +    IMPORT_C void GetAttributes(RXmlEngNodeList<TXmlEngAttr>& aList) const;
1651.161 +
1651.162 +    /**
1651.163 +     * Retrieves list of child elements of the element
1651.164 +     *
1651.165 +     * @since S60 v3.1
1651.166 +	 * @param aList - a node list object to initialize
1651.167 +     *
1651.168 +     * Passed by reference list of nodes is initialized and after the call
1651.169 +     * it is ready for use with HasNext() and Next() methods:
1651.170 +     *   
1651.171 +     * @note Returned list is a "filtered view" of the underlying
1651.172 +     *       list of all element's children (with text nodes, comments
1651.173 +     *       processing instructions, etc.)
1651.174 +	 */ 
1651.175 +    IMPORT_C void GetChildElements(RXmlEngNodeList<TXmlEngElement>& aList) const;
1651.176 +
1651.177 +    /**
1651.178 +     * Creates new attribute node out of any namespace (i.e. it has no prefix),
1651.179 +     * sets attribute's value and links it as the last attribute of the current element
1651.180 +     *
1651.181 +     * @since S60 v3.1
1651.182 +	 * @param  aName   A local name of attribute
1651.183 +     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1651.184 +     * @return         A handler to the newly created attribute node;
1651.185 +     *
1651.186 +     * For adding attribute as the first one, use TXmlEngNode::SetAsFirstSibling() on the attribute:
1651.187 +     * @code
1651.188 +     *     TXmlEngElement el = ... ; // get some element
1651.189 +     *     el.AddNewAttributeL("version","0.1").SetAsFirstSibling();
1651.190 +     * @endcode
1651.191 +     *   
1651.192 +     * @see   SetAsLastSibling(), MoveBeforeSibling(TXmlEngNode) and MoveAfterSibling(TXmlEngNode)
1651.193 +     *
1651.194 +     * @note   - No checks are made that attribute with such name exists
1651.195 +     *           Use this method only on newly created elements!
1651.196 +     *           Otherwise, use TXmlEngElement::SetAttributeL(..)
1651.197 +     *         - Attributes do not inherit default namespace of its element
1651.198 +     *           (http://w3.org/TR/REC-xml-names/#defaulting)
1651.199 +     *         - attribute's value is the second argument in all AddNewAttributeL(..) methods
1651.200 +     *         - Use of NULL as value is more preferrable then "" 
1651.201 +	 */
1651.202 +    IMPORT_C TXmlEngAttr AddNewAttributeL(const TDesC8& aName, const TDesC8& aValue);
1651.203 +    
1651.204 +    /**
1651.205 +     * Creates new attribute node and add it to the element
1651.206 +     *
1651.207 +     * Provided handle to namespace declaration is used to set up
1651.208 +     * attribute's namespace.
1651.209 +     *
1651.210 +     * @since S60 v3.1
1651.211 +	 * @param  aName   A local name of attribute
1651.212 +     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1651.213 +     * @param  aNsDef  Namespace to add to the attribute
1651.214 +     * @return         A handler to the newly created attribute node;
1651.215 +     *
1651.216 +     * @note If aNsDef is not defined in some of attributes ascendants
1651.217 +     *      (including this element), then
1651.218 +     *      ReconcileNamespacesL() method must be called on
1651.219 +     *      this element later.
1651.220 +	 */
1651.221 +    IMPORT_C TXmlEngAttr AddNewAttributeL(const TDesC8& aName,
1651.222 +                                    const TDesC8& aValue, 
1651.223 +                                    const TXmlEngNamespace aNsDef);
1651.224 +
1651.225 +    /**
1651.226 +     * Creates new attribute on the element. Namespace declaration for the attribute namespace is
1651.227 +     * created too.
1651.228 +     *
1651.229 +     * @since S60 v3.1
1651.230 +	 * @param  aName   A local name of attribute
1651.231 +     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1651.232 +     * @param  aNsUri  Namespace uri
1651.233 +     * @param  aPrefix  Namespace prefix
1651.234 +     * @return         A handler to the newly created attribute node;
1651.235 +     *
1651.236 +     * @note
1651.237 +     *    - Namespace declarations are reused if possible (no redundant ones are created)
1651.238 +     */
1651.239 +    IMPORT_C TXmlEngAttr AddNewAttributeL(const TDesC8& aName, 
1651.240 +                                    const TDesC8& aValue,
1651.241 +                                    const TDesC8& aNsUri, 
1651.242 +                                    const TDesC8& aPrefix);
1651.243 +
1651.244 +    /**
1651.245 +     * Creates new attribute node using namespace of its parent element (this element),
1651.246 +     * sets attribute's value and links it as the last attribute of the element
1651.247 +     *
1651.248 +     * @since S60 v3.1
1651.249 +	 * @param aName Local name of attribute 
1651.250 +     * @param aValue Value to set for new attribute or NULL (sets value to "")
1651.251 +     * @return A handler to the newly created attribute node;
1651.252 +     *    
1651.253 +     * For more hints how to use it refer to AddNewAttributeL(const TDesC8&,const TDesC8&)
1651.254 +     *        
1651.255 +     * @note    
1651.256 +     *     - No checks are made that attribute with such name exists
1651.257 +     *     - if namespace of the parent element is default (i.e. bound prefix is NULL),
1651.258 +     *       then temporary prefix will be used and bound to the same namespace URI as elements
1651.259 +     *       (It is due to the fact that default namespaces do not spread on unprefixed attributes,
1651.260 +     *       see http://w3.org/TR/REC-xml-names/#defaulting)
1651.261 +     */
1651.262 +    inline   TXmlEngAttr AddNewAttributeSameNsL(const TDesC8& aName, const TDesC8& aValue);
1651.263 +
1651.264 +    /**
1651.265 +     * Creates new attributes using namespace, which is bound to the specified prefix
1651.266 +     *
1651.267 +     * @since S60 v3.1
1651.268 +	 * @param  aLocalName   A local name of attribute
1651.269 +     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1651.270 +     * @param  aPrefix  Namespace prefix for new attribute
1651.271 +     * @return A handler to the newly created attribute node;
1651.272 +     *
1651.273 +     * Use this mothod only for construction of new parts of DOM tree, where
1651.274 +     * you know for sure that prefix is bound in the given scope.
1651.275 +     * @code
1651.276 +     *     TXmlEngElement el = parent.AddNewAttributeUsePrefixL("property","ObjName","rdf");
1651.277 +     *     el.AddNewAttributeUsePrefixL("type", "xs:integer", "rdf");
1651.278 +     * @endcode
1651.279 +     *
1651.280 +     * Otherwise, you should check that prefix is bound like this example shows:
1651.281 +     * @code
1651.282 +     *     TXmlEngNamespace boundNS = TXmlEngNamespace::LookupByPrefix(thisElement, prefix);
1651.283 +     *     if (boundNS.NotNull()){
1651.284 +     *         thisElement.AddNewAttributeUsePrefixL("name", value, prefix);
1651.285 +     *     }
1651.286 +     * @endcode
1651.287 +     *
1651.288 +     * @note
1651.289 +     *     Use AddNewAttributeNsL(name,value,nsDefNode) as much as you can, because
1651.290 +     *     it is most efficient way to create namespaced DOM elements (no additional
1651.291 +     *     lookups for namespace declarations are required).
1651.292 +     *  
1651.293 +     * @code
1651.294 +     *     // If namespace with given URI is not in the scope, then it will be declared
1651.295 +     *     // and bound to "data" prefix.
1651.296 +     *     TXmlEngNamespace nsDef = elem.FindOrCreateNsDefL("http://../Data", "data");
1651.297 +     *     elem.AddNewAttributeL("location", "...", nsDef);
1651.298 +     *     elem.AddNewElementL("child", nsDef).AddNewAttributeL("attr","...value...");
1651.299 +     *     // the result is
1651.300 +     *         ...
1651.301 +     *      <elem xmlns:data="http://../Data" data:location="...">
1651.302 +     *         <data:child attr="...value..."/>
1651.303 +     *      </elem>
1651.304 +     *         ...
1651.305 +     *     //
1651.306 +     * @endcode    
1651.307 +     */
1651.308 +    IMPORT_C TXmlEngAttr AddNewAttributeUsePrefixL(const TDesC8& aLocalName, 
1651.309 +                                             const TDesC8& aValue, 
1651.310 +                                             const TDesC8& aPrefix);
1651.311 +
1651.312 +    /**
1651.313 +     * Creates new attributes using namespace in the scope, which has specified URI
1651.314 +     *   
1651.315 +     * Almost the same as AddNewAttributeUsePrefixL(...) but does lookup by namespace URI
1651.316 +     *
1651.317 +     * @since S60 v3.1
1651.318 +	 * @param  aLocalName   A local name of attribute
1651.319 +     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1651.320 +     * @param  aNsUri  Namespace uri for new attribute
1651.321 +     * @return - NULL attribute if namespace declaration is not found OR newly added to the end of
1651.322 +     *           attribute list attribute of this element.
1651.323 +     *
1651.324 +     * @see AddNewAttributeUsePrefixL(const TDesC8&,const TDesC8&,const TDesC8&)
1651.325 +     */
1651.326 +    IMPORT_C TXmlEngAttr AddNewAttributeWithNsL(const TDesC8& aLocalName, 
1651.327 +                                          const TDesC8& aValue, 
1651.328 +                                          const TDesC8& aNsUri);
1651.329 +                                          
1651.330 +    /**
1651.331 +     * Add attribute to element that will be used as Xml:Id.
1651.332 +     *
1651.333 +     * No check if such attribute exists are made.
1651.334 +     * 
1651.335 +     * @since S60 v3.2
1651.336 +	 * @param aLocalName Name of attribute that should be add.
1651.337 +	 * @param aValue Value of the attribute
1651.338 +	 * @param aNs Namespace of the attribute
1651.339 +	 * @return Attribute if created. Null attribute if Id exist
1651.340 +     *
1651.341 +     * @note Call RXmlEngDocument.RegisterXmlIdL(aName,aNsUri) first
1651.342 +     *       to register existed id's in the document.
1651.343 +     */
1651.344 +    IMPORT_C TXmlEngAttr AddXmlIdL(const TDesC8& aLocalName,
1651.345 +                                       const TDesC8& aValue,
1651.346 +                                       TXmlEngNamespace aNs = TXmlEngNamespace());
1651.347 +    
1651.348 +    /**
1651.349 +     * Adds child element with no namespace
1651.350 +     *
1651.351 +     * @since S60 v3.1
1651.352 +	 * @param aName name of the element
1651.353 +     * @return A handler to the newly created element node;
1651.354 +     *
1651.355 +     * Results in adding element with aName and no prefix.
1651.356 +     *
1651.357 +     * This method is the best for creation of non-namespace based documents
1651.358 +     * or document fragments, where no default namespace declared.
1651.359 +     *
1651.360 +     * It may be used also as a method for adding element from default namespace,
1651.361 +     * BUT namespace will be assigned ONLY after serialization of the current
1651.362 +     * document and parsing it back into a DOM tree!! If you need that default namespace
1651.363 +     * was inherited by new element immediately use:
1651.364 +     * @code
1651.365 +     *    ...
1651.366 +     *    TXmlEngNamespace defns = element.DefaultNamespace();
1651.367 +     *    TXmlEngElement newEl = element.AddNewElementL("Name",defns);
1651.368 +     *    ...
1651.369 +     * @endcode
1651.370 +     *
1651.371 +     * If truly undefined namespace for the element is required, then <b>DO NOT USE</b>
1651.372 +     * this method if there is a default namespace in the scope!
1651.373 +     */
1651.374 +    IMPORT_C TXmlEngElement AddNewElementL(const TDesC8& aName);
1651.375 +
1651.376 +    /**
1651.377 +     * Creates new child element with provided name and namespace declaration
1651.378 +     *
1651.379 +     * @since S60 v3.1
1651.380 +	 * @param aLocalName Name of the element
1651.381 +     * @param aNsDecl Handle of the namespace declaration, that must be retrieved from
1651.382 +     *            one of the ascendant nodes of the new elements (and its prefix
1651.383 +     *            should not be remapped to another namespace URI for the scope
1651.384 +     *            of the new element)
1651.385 +     * @return    Created element node (and added as the last child of its parent)
1651.386 +     */
1651.387 +    IMPORT_C TXmlEngElement AddNewElementL(const TDesC8& aLocalName, TXmlEngNamespace aNsDecl);
1651.388 +
1651.389 +    /**
1651.390 +     * Creates new child element with provided name, prefix and namespace URI
1651.391 +     *
1651.392 +     * New namespace declaration will be attached to the parent (this) element and used
1651.393 +     * as namespace for newly created child element. If such binding already exists
1651.394 +     * (same prefix is bound to same URI), it will be reused. If the prefix is already
1651.395 +     * bound to some another namespace URI, it will be rebound by the new namespace
1651.396 +     * declaration node.
1651.397 +     *
1651.398 +     * @since S60 v3.1
1651.399 +	 * @param aLocalName Name of the element
1651.400 +     * @param aNsUri     URI of element's namespace
1651.401 +     * @param aPrefix    Prefix of the element
1651.402 +     * @return Created element node (and added as the last child of its parent)
1651.403 +     */
1651.404 +    IMPORT_C TXmlEngElement AddNewElementL(const TDesC8& aLocalName, 
1651.405 +                                     const TDesC8& aNsUri, 
1651.406 +                                     const TDesC8& aPrefix);
1651.407 +
1651.408 +    /**
1651.409 +     * Adds child element with same namespace (and prefix if present) as parent element has
1651.410 +     *
1651.411 +     * @since S60 v3.1
1651.412 +	 * @param aLocalName element's name
1651.413 +     * @return New element that was added to the end of children list of its parent (this element)
1651.414 +     */
1651.415 +    IMPORT_C TXmlEngElement AddNewElementSameNsL(const TDesC8& aLocalName);
1651.416 +
1651.417 +    /**
1651.418 +     * Performs lookup for the namespace declaration for specified prefix and
1651.419 +     * adds new child element with found namespace.
1651.420 +     *
1651.421 +     * The assumption is that prefix is bound, otherwise run-time error
1651.422 +     * (Symbian's Leave or exception) occurs
1651.423 +     *
1651.424 +     * @note   Use this method only if there is a binding for the given prefix.
1651.425 +     *
1651.426 +     * @since S60 v3.1
1651.427 +	 * @param aLocalName element's name
1651.428 +     * @param aPrefix    prefix to use
1651.429 +     * @return new TXmlEngElement that was added to the end of children list of its parent (this element)
1651.430 +     */
1651.431 +    IMPORT_C TXmlEngElement AddNewElementUsePrefixL(const TDesC8& aLocalName, const TDesC8& aPrefix);
1651.432 +
1651.433 +    /**
1651.434 +     * Performs lookup for the namespace declaration for specified namespace URI and
1651.435 +     * adds new child element with found namespace.
1651.436 +     *
1651.437 +     * The assumption is that namespace with given URI was declared,
1651.438 +     * otherwise run-time error (Symbian' Leave or exception) occurs
1651.439 +     * 
1651.440 +     * @note Use this method only if namespace declaration for the provided URI exists.
1651.441 +     *
1651.442 +     * @since S60 v3.1
1651.443 +	 * @param aLocalName    element's name
1651.444 +     * @param aNsUri        namespace of element
1651.445 +     * @return new TXmlEngElement that was added to the end of children list of its parent (this element)
1651.446 +     */
1651.447 +    IMPORT_C TXmlEngElement AddNewElementWithNsL(const TDesC8& aLocalName, const TDesC8& aNsUri);
1651.448 +
1651.449 +    /**
1651.450 +     * Creates new child element; if there is no a prefix binding for new element's namespace,
1651.451 +     * a namespace decaration is created with generated prefix at specified element.
1651.452 +     *
1651.453 +     * @since S60 v3.1
1651.454 +	 * @param aLocalName    Name of the element to create
1651.455 +     * @param aNsUri        Namespace URI of the new element
1651.456 +     * @param aNsDeclTarget An element where namespace declaraton should be placed
1651.457 +     *                     if there is a needed to create new namespace declaration;
1651.458 +     *                     NULL is used to specify the created element itself
1651.459 +     *
1651.460 +     * As aNsDeclTarget any ascendant of the new node may be provided:
1651.461 +     * @code
1651.462 +     *     el.AddNewElementAutoPrefixL(tagName,uri,NULL); // declare on the new element
1651.463 +     *     el.AddNewElementAutoPrefixL(tagName,uri,el);   // declare on the parent element
1651.464 +     *     el.AddNewElementAutoPrefixL(tagName,uri,doc.DocumentElement()); // declare on the root element
1651.465 +     *    ...
1651.466 +     * @endcode
1651.467 +     *
1651.468 +     * @note
1651.469 +     *  The farther namespace declaration up in the document tree,
1651.470 +     *  the longer time namespace declaration lookups take.
1651.471 +     */
1651.472 +    IMPORT_C TXmlEngElement AddNewElementAutoPrefixL(const TDesC8& aLocalName, 
1651.473 +                                               const TDesC8& aNsUri, 
1651.474 +                                               TXmlEngElement aNsDeclTarget);
1651.475 +
1651.476 +    /**
1651.477 +     * Get element content.
1651.478 +     * This method may be used in most cases, when element has only simple text content
1651.479 +     * (without entity references embedded).
1651.480 +     * If element's contents is mixed (other types of nodes present), only contents of
1651.481 +     * first child node is returned if it is a TXmlEngTextNode node. For getting mixed contents of the
1651.482 +     * element of contents with entity references, WholeTextValueCopyL() should be used.
1651.483 +     *
1651.484 +     * @since S60 v3.1
1651.485 +	 * @return Basic contents of the element
1651.486 +     * 
1651.487 +     * @see TXmlEngNode::WholeTextContentsCopyL()
1651.488 +     */
1651.489 +    IMPORT_C TPtrC8 Text() const;
1651.490 +
1651.491 +    /**
1651.492 +     * Adds text as a child of the element.
1651.493 +     *
1651.494 +     * @since S60 v3.1
1651.495 +	 * @param aString text to be added as element's content.
1651.496 +     * 
1651.497 +     * @note There may be several TXmlEngTextNode and TXmlEngEntityReference nodes added actually,
1651.498 +     *   depending on the aString value
1651.499 +     */
1651.500 +    IMPORT_C void  AddTextL(const TDesC8& aString);
1651.501 +
1651.502 +    /**
1651.503 +     * Sets text contents for the element.
1651.504 +     * Any child nodes are removed.
1651.505 +     * Same as TXmlEngNode::SetValueL(TDesC8&)
1651.506 +     *
1651.507 +     * @since S60 v3.1
1651.508 +	 * @param aString text to be set as element's content.
1651.509 +     *
1651.510 +     * @see TXmlEngNode::SetValueL(TDesC8&)
1651.511 +     */
1651.512 +    IMPORT_C void  SetTextL(const TDesC8& aString);
1651.513 +
1651.514 +    /**
1651.515 +     * Sets text content of the element from escaped string.
1651.516 +     *
1651.517 +     * @since S60 v3.1
1651.518 +	 * @param aEscapedString New value
1651.519 +     *
1651.520 +     * @see TXmlEngAttr::SetEscapedValueL(TDesC8&)
1651.521 +     */
1651.522 +    IMPORT_C void  SetEscapedTextL(const TDesC8& aEscapedString);
1651.523 +    
1651.524 +    /**
1651.525 +     * Sets new element value exactly as presented in the string.
1651.526 +	 * Predefined entities are not converted into characters they represent.
1651.527 +	 * Any child nodes are removed.     
1651.528 +     *
1651.529 +     * @since S60 v3.2
1651.530 +	 * @param aNotEncText New element value
1651.531 +     *
1651.532 +     * @see TXmlEngAttr::SetValueNoEncL(const TDesC8& aNewValue); 
1651.533 +     */    
1651.534 +    IMPORT_C void SetTextNoEncL(const TDesC8& aNotEncString);
1651.535 +
1651.536 +    /**
1651.537 +     * Appends new text node with the value exactly as presented in the string.
1651.538 +	 * Predefined entities are not converted into characters they represent.
1651.539 +	 * Existing child nodes are not removed.    
1651.540 +     *
1651.541 +     * @since S60 v3.2
1651.542 +	 * @param aNotEncText Appended element value
1651.543 +     *
1651.544 +     * @see TXmlEngAttr::SetValueNoEncL(const TDesC8& aNewValue); 
1651.545 +     */  
1651.546 +	IMPORT_C void AppendTextNoEncL(const TDesC8& aNotEncString);   
1651.547 +
1651.548 +    /**
1651.549 +     * Adds namespace declaration to the current element, a binding of prefix to namespace URI.
1651.550 +     * 
1651.551 +     * If same namespace declaration exists (same prefix and URI), redundant namespace declaration
1651.552 +     * will not be created.
1651.553 +     * 
1651.554 +     * Both NULL or "" (empty string) may be used for "UNDEFINED URI" and "NO PREFIX" values of arguments. 
1651.555 +     *
1651.556 +     * @since S60 v3.1
1651.557 +	 * @param aNsUri Namespace URI
1651.558 +     * @param aPrefix Namespace prefix
1651.559 +     * @return  A handle to the created (or found, if there is such) namespace declaration node.
1651.560 +     *          If namespace undeclaration is being created, NULL handle is returned -- it can be
1651.561 +     *           used in node-creation methods that take namespace handle as an argument.
1651.562 +     * 
1651.563 +     * @note   Undeclaring of default namespace (xmlns="") is supported by
1651.564 +     *         SetNoDefaultNamespace() method
1651.565 +     * 
1651.566 +     * @see SetNoDefaulNamespace()
1651.567 +     * 
1651.568 +     * @note   By adding namespace declaration that rebinds prefix mapping (or default namespace)
1651.569 +     *         used by nodes lower in the tree, document tree may become
1651.570 +     *         wrongly constructed, because references to namespace declaration are
1651.571 +     *         not updated. However, after serialization the document will have
1651.572 +     *         desired structure.
1651.573 +     *         Use this method with care!
1651.574 +     */ 
1651.575 +    IMPORT_C TXmlEngNamespace AddNamespaceDeclarationL(const TDesC8& aNsUri, const TDesC8& aPrefix);
1651.576 +
1651.577 +    /**
1651.578 +     * Adds default namespace declaration.
1651.579 +     *
1651.580 +     * @since S60 v3.1
1651.581 +	 * @param aNsUri   Namespace URI;  both NULL and "" (empty string) are allowed to represent UNDEFINED NAMSPACE
1651.582 +     * @return    Handle to the created namespace declaration (NULL for UNDEFINED NAMESPACE)
1651.583 +     *
1651.584 +     * Same result as with AddNamespaceDeclarationL(aNsUri, NULL), but additionally
1651.585 +     * element's namespace modified (if it has no prefix and there were no default
1651.586 +     * namespace declaration in the scope) to the new default one.
1651.587 +     */
1651.588 +    IMPORT_C TXmlEngNamespace SetDefaultNamespaceL(const TDesC8& aNsUri);
1651.589 +
1651.590 +    /**
1651.591 +     * Undeclares any default namespace for current element and its descendants.
1651.592 +     * 
1651.593 +     * If there is already some default namespace,  <i>xmlns=""</i> namespace
1651.594 +     * declaration is added. Otherwise, nothing happens, since element with no
1651.595 +     * prefix in such scope is automaticaly considered as out of any namespace.
1651.596 +     * 
1651.597 +     * The side effect of this method is that namespace of the current element
1651.598 +     * may change from previous <b>default</b> namespace to NULL TXmlEngNamespace, which is
1651.599 +     * considered an absence of namespace.
1651.600 +     * 
1651.601 +     * If the element has prefix (i.e. not having default namespace), 
1651.602 +     * then the only effect for the element is undeclaration of existing default namespace. 
1651.603 +     * 
1651.604 +     * If element is in the scope of another <i>xmlns=""</i> undeclaration, no
1651.605 +     * actions are taken.
1651.606 +     * 
1651.607 +     * @note
1651.608 +     *     Use AddNamespaceDeclarationL(NULL,NULL) to force creation of
1651.609 +     *     xmlns=""  declaration within scope of another such declaration 
1651.610 +     *     (otherwise unneccessary/duplicate declarations are not created)
1651.611 +     * 
1651.612 +     * @note
1651.613 +     *     This method should be called on elements before adding children,
1651.614 +     *     because default namespace undeclaration is not spread into its subtree and 
1651.615 +     *     descedants' default namespaces are not reset to NULL. This should be taken into 
1651.616 +     *     account if later some processing on the subtree occurs.
1651.617 +     *     However, after serialization and deserialization, undeclared default namespace will
1651.618 +     *     affect whole element's subtree correctly.
1651.619 +     *
1651.620 +     * @since S60 v3.1
1651.621 +	 */
1651.622 +    IMPORT_C void SetNoDefaultNamespaceL();
1651.623 +
1651.624 +    /**
1651.625 +     * Finds namespace declaration that has specific prefix in the scope for given node
1651.626 +     *
1651.627 +     * Prefix "" or NULL are considered the same, meaning "<b>NO PREFIX</b>".
1651.628 +     * If namespace declaration for "no prefix" is searched, then default namespace is returned. 
1651.629 +     *
1651.630 +     * @since S60 v3.1
1651.631 +	 * @param aPrefix Namespace prefix
1651.632 +     * @return Namespace handler, which may be NULL if prefix is not bound.
1651.633 +     * 
1651.634 +     * NULL result for "no prefix" means that default namespace is undefined.
1651.635 +     */
1651.636 +    IMPORT_C TXmlEngNamespace LookupNamespaceByPrefixL(const TDesC8& aPrefix) const;
1651.637 +
1651.638 +    /**
1651.639 +     * Finds namespace declaration that has specific namespace URI
1651.640 +     * in the scope for the given node.
1651.641 +     *
1651.642 +     * @since S60 v3.1
1651.643 +	 * @param aUri  Namespace URI, for which namespace declaration is searched
1651.644 +     * @return Handler to the namespace declaration that binds given namespace URI to some prefix 
1651.645 +     *          or sets it a default namespace.
1651.646 +     * 
1651.647 +     * NULL value of aUri is equivalent to "" and means "<b>UNDEFINED NAMESPACE</b>". 
1651.648 +     * For such URI  a NULL namespace handle is always returned even if there is
1651.649 +     * namespace undeclaration, which has "" URI (and NULL prefix).
1651.650 +     * 
1651.651 +     * <b>Hint:</b><p>
1651.652 +     * Use returned instance of TXmlEngNamespace as aNsDef argument to element's methods
1651.653 +     * that create new element's child elements and attributes. The same handler
1651.654 +     * may be used on more deep descentants of the reference element (and doing
1651.655 +     * this way will generally increase performance of DOM tree construction).<br />
1651.656 +     * <span class="color:red;">However</span>, if namespace bindings are not controlled
1651.657 +     * for element's children and prefix, which is bound to the search namespace, is
1651.658 +     * rebound to some other namespace URI, then reusing namespace may lead to
1651.659 +     * unwanted result.
1651.660 +     * 
1651.661 +     * Consider an example:
1651.662 +     * @code
1651.663 +     *     TXmlEngElement root = doc.DocumentElement();
1651.664 +     *     TXmlEngNamespace targetNs = root.AddNamespaceDeclarationL("http://example.com/","ex");
1651.665 +     *     TXmlEngElement el_1 = root.AddNewElementL("outer", targetNs);
1651.666 +     *     TXmlEngElement el_2 = el_1.AddNewElementL("inner"); // element without prefix
1651.667 +     * 
1651.668 +     *     // NOTE: prefix "ex" is not bound to "http://example.com/" anymore!
1651.669 +     *     el_2.AddNamespaceDeclarationL("http://whatever.com/","ex");
1651.670 +     *     TXmlEngElement el_3 = el_2.AddNewElementL("problem", targetNs);
1651.671 +     *     ...
1651.672 +     * @endcode
1651.673 +     * 
1651.674 +     * The sought result was (showing expanded names of elements):
1651.675 +     * @code
1651.676 +     *     --> "root"
1651.677 +     *         --> {"http://example.com/","outer"}
1651.678 +     *         --> "inner"
1651.679 +     *             -->{"http://example.com/","problem"}
1651.680 +     *                 ...
1651.681 +     *             <--
1651.682 +     *         <-- "inner"
1651.683 +     *         <-- {"http://example.com/","outer"}
1651.684 +     *         ...
1651.685 +     *     <-- </root>
1651.686 +     * @endcode
1651.687 +     * and it may look that it has been achieved. Indeed, if namespace of element "problem"
1651.688 +     * was queried, it would have URI "http://example.com/" and prefix "ex".
1651.689 +     * However, if namespace URI was looked up by "problem"'s prefix, it would be
1651.690 +     * "http://whatever.com/". We have created illegal DOM tree.
1651.691 +     * 
1651.692 +     * The actual DOM tree in serialized form will be:
1651.693 +     * @code
1651.694 +     *     <root>
1651.695 +     *         <ex:outer xmlns:ex="http://example.com/">
1651.696 +     *             <inner xmlns:ex="http://whatever.com/">
1651.697 +     *                 <ex:problem>
1651.698 +     *                 ...
1651.699 +     *                 </ex:problem>
1651.700 +     *             </inner>
1651.701 +     *         </ex:outer>
1651.702 +     *         ...
1651.703 +     *     </root>
1651.704 +     * @endcode
1651.705 +     * 
1651.706 +     * So, reuse of namespace handlers should be performed with special care.
1651.707 +     * 
1651.708 +     * @note
1651.709 +     * At the moment it is possible to retrieve namespace declaration nodes
1651.710 +     * whose prefixes were rebound. Be careful when use returned TXmlEngNamespace object
1651.711 +     * for creation of new elements. In later releases, this method will perform
1651.712 +     * safe lookup. And so far, it is better to make check that prefix of returned
1651.713 +     * namespace declaration has not rebound:
1651.714 +     * @code
1651.715 +     *     TXmlEngNamespace ns = element.LookupNamespaceByUri("a_uri");
1651.716 +     *     if (element.LookupNamespaceByPrefix(ns.Prefix()).IsSameNode(ns)){
1651.717 +     *         ... // now it is safe to create new elements by using "ns"
1651.718 +     *         element.AddNewElementL("product",ns);
1651.719 +     *         ...
1651.720 +     *     }
1651.721 +     * @endcode
1651.722 +     */
1651.723 +    IMPORT_C TXmlEngNamespace LookupNamespaceByUriL(const TDesC8& aUri) const;
1651.724 +
1651.725 +    /**
1651.726 +     * Retrieves implicitly declared on every XML infoset binding
1651.727 +     * of 'xml' prefix to XML's namespace URI:
1651.728 +     * "http://www.w3.org/XML/1998/namespace"
1651.729 +     *
1651.730 +     * @since S60 v3.1
1651.731 +	 * @return Handler to {xml,"http://www.w3.org/XML/1998/namespace"} prefix
1651.732 +     *            binding in the current document
1651.733 +     *
1651.734 +     * The result should be used for creating attributes beloging to the XML namespace
1651.735 +     * (xml:lang, xml:space, xml:id , etc.)
1651.736 +     *
1651.737 +     * DO NOT USE methods LookupNamespaceByUriL(const TDesC8&) and LookupNamespaceByPrefixL(const TDesC8&)
1651.738 +     * (with "http://www.w3.org/XML/1998/namespace" and "xml" arguments) for retrieving
1651.739 +     * namespace node, since in a case of [possible] memory allocation fault
1651.740 +     * NULL result is returned (and breaks your program silently)
1651.741 +     * 
1651.742 +     * @note   Normally 'xml' prefix is bound to XML namespace URI in the document
1651.743 +     *        node, BUT if current node is not a part of the document tree yet,
1651.744 +     *        the requested namespace declaration WILL BE ADDED to the current node.
1651.745 +     *        This is the reason why the method may fail in OOM conditions.
1651.746 +     */
1651.747 +    IMPORT_C TXmlEngNamespace TheXMLNamespaceL() const;
1651.748 +
1651.749 +    /**
1651.750 +     * Get default namespace for element.
1651.751 +     *
1651.752 +     * @since S60 v3.1
1651.753 +	 * @return Default namespace in the scope of the element
1651.754 +     *
1651.755 +     * NULL TXmlEngNamespace means that element with no prefix have no namespace associated
1651.756 +     * because no default namespace was declared or default namespace was undeclared with <b>xmlns=""</b>
1651.757 +     *
1651.758 +     * Equivalent to LookupNamespaceByPrefixL(const TDesC8&) with NULL (or "") prefix provided
1651.759 +     */
1651.760 +    inline   TXmlEngNamespace DefaultNamespaceL() const;
1651.761 +
1651.762 +    /**
1651.763 +     * Performs search of namespace handler in the scope of the element. This method will
1651.764 +     * create new namespace declaration on the element if such namespace is not available.
1651.765 +     *
1651.766 +     * @since S60 v3.1
1651.767 +	 * @param aNsUri   Searched namespace
1651.768 +     * @param aPrefix  Prefix to use for <b>new</b> namespace declaration (if it is to be created)
1651.769 +     * @return    TXmlEngNamespace handler that may be used to create new attributes and child elements of
1651.770 +     *            the element. The namespace may be one of those existed previously or was created
1651.771 +     *
1651.772 +     * @note
1651.773 +     *    Be sure not to use the result of this method for non-descendants of the element or in situations
1651.774 +     *    when prefix overlapping might occur (read also about general general considerations of attributes
1651.775 +     *    and elements creation using namespace handlers)
1651.776 +     */
1651.777 +    IMPORT_C TXmlEngNamespace FindOrCreateNsDeclL(const TDesC8& aNsUri, const TDesC8& aPrefix);
1651.778 +
1651.779 +    /**
1651.780 +     * Performs search on the element and its ascendants for any namespace declaration
1651.781 +     * with given URI and create a new namespace declaration with some (unique) prefix
1651.782 +     * if the search was not successful.
1651.783 +     *
1651.784 +     * @since S60 v3.1
1651.785 +	 * @param aNsUri   Searched namespace
1651.786 +     * @return    TXmlEngNamespace handler that may be used to create new attributes and child elements of
1651.787 +     *            the element. The namespace may be one of those existed previously or was created
1651.788 +     */
1651.789 +    IMPORT_C TXmlEngNamespace FindOrCreateNsDeclL(const TDesC8& aNsUri);
1651.790 +
1651.791 +    /**
1651.792 +     * Checks whether a prefix has been bound in this element (not in one of its ascendants)
1651.793 +     * 
1651.794 +     * Use this method for preventig prefix-name collision in a element node
1651.795 +     *
1651.796 +     * @since S60 v3.1
1651.797 +	 * @param aPrefix Namespace prefix
1651.798 +     * @return TRUE if there is already namespace declaration that uses aPrefix on this element
1651.799 +     */
1651.800 +    IMPORT_C TBool HasNsDeclarationForPrefixL(const TDesC8& aPrefix) const;
1651.801 +    
1651.802 +    /**
1651.803 +     * Copies the element with its attributes, but not child nodes
1651.804 +     * 
1651.805 +     * If context is preserved, then all namespace declarations that are in the element are
1651.806 +     * writen to element's start tag too.
1651.807 +     *
1651.808 +     * @since S60 v3.1
1651.809 +	 * @param preserveNsContext TRUE if context should be preserved
1651.810 +     * @return handle to copy of element
1651.811 +     */
1651.812 +    IMPORT_C TXmlEngElement ElementCopyNoChildrenL(TBool preserveNsContext) const;
1651.813 +    
1651.814 +    /**
1651.815 +     * Specialized version of TXmlEngNode::CopyL()
1651.816 +     *
1651.817 +     * @since S60 v3.1
1651.818 +	 * @return Deep copy of the element.
1651.819 +     */
1651.820 +    inline   TXmlEngElement CopyL() const;
1651.821 +
1651.822 +    /**
1651.823 +     * Resets element's content: all child nodes are removed
1651.824 +     *
1651.825 +     * @since S60 v3.1
1651.826 +	 */
1651.827 +    IMPORT_C void RemoveChildren();
1651.828 +
1651.829 +    /**
1651.830 +     * Resets element's attributes
1651.831 +     *
1651.832 +     * @since S60 v3.1
1651.833 +	 */
1651.834 +    IMPORT_C void RemoveAttributes();
1651.835 +
1651.836 +    /**
1651.837 +     * Resets all namespace declarations made in the element
1651.838 +     * 
1651.839 +     * @note There can be references to these namespace declaration from elsewhere!
1651.840 +     *      Use ReconcileNamespacesL() to fix that.
1651.841 +     *
1651.842 +     * @since S60 v3.1
1651.843 +	 */
1651.844 +    IMPORT_C void RemoveNamespaceDeclarations();
1651.845 +
1651.846 +    /**
1651.847 +     * Removes all element contents: child nodes, attributes and namespace declarations
1651.848 +     *
1651.849 +     * @see RemoveChildren(), RemoveAttributes(), RemoveNamespaceDeclarations();
1651.850 +     *
1651.851 +     * @since S60 v3.1
1651.852 +	 */
1651.853 +    inline   void ClearElement();
1651.854 +
1651.855 +    /**
1651.856 +     * Copies attributes from another element
1651.857 +     *
1651.858 +     * It may be a very convenient method for initializing element with a set of predefined attributes.
1651.859 +     *
1651.860 +     * @since S60 v3.1
1651.861 +	 * @param aSrc source element
1651.862 +     * 
1651.863 +     * @note
1651.864 +     *  Namespaces of the this element may need to be reconciled if copied attributes
1651.865 +     *  belong to any namespace that is not declared on some ascendant of this node.
1651.866 +     * @see ReconcileNamespacesL()
1651.867 +     */  
1651.868 +    IMPORT_C void CopyAttributesL(TXmlEngElement aSrc);
1651.869 +
1651.870 +    /**
1651.871 +     * Copies a list of elements.
1651.872 +     *
1651.873 +     * Elements are appended to the element's children list.
1651.874 +     *
1651.875 +     * @since S60 v3.1
1651.876 +	 * @param aSrc source element
1651.877 +     *
1651.878 +     * @note Namespaces of the this element may need to be reconciled after copy operation
1651.879 +     * @see  ReconcileNamespacesL()
1651.880 +     */
1651.881 +    IMPORT_C void CopyChildrenL(TXmlEngElement aSrc);
1651.882 +
1651.883 +    /**
1651.884 +     * Removes attribute with given name and namespace URI(if such exists).
1651.885 +     * Memory allocated for the attribute is freed.
1651.886 +     *
1651.887 +     * @since S60 v3.1
1651.888 +	 * @param aLocalName Element name
1651.889 +     * @param aNamespaceUri Element namespace
1651.890 +     */
1651.891 +    IMPORT_C void RemoveChildElementsL(const TDesC8& aLocalName,const TDesC8& aNamespaceUri);
1651.892 +
1651.893 +    /** @} */
1651.894 +
1651.895 +    /** 
1651.896 +    *    @name DOM Level 3 Core methods
1651.897 +    *
1651.898 +    *    @note
1651.899 +    *        Most methods of DOM spec operate with fully-qualified names (QNames)
1651.900 +    *        of elements and attributes. It is different in this API - all methods
1651.901 +    *        instead accept prefix and localName parts of QName.
1651.902 +    */
1651.903 +    /** @{ */
1651.904 +    
1651.905 +    /**
1651.906 +     * Returns value of attribute with given name and namespace URI
1651.907 +     *
1651.908 +     * @since S60 v3.1
1651.909 +	 * @param aLocalName Local name of attribute node
1651.910 +     * @param aNamespaceUri Namespace URI of attribute
1651.911 +     * @return Attribute value
1651.912 +     */
1651.913 +    IMPORT_C TPtrC8 AttributeValueL(const TDesC8& aLocalName, 
1651.914 +                                    const TDesC8& aNamespaceUri = KNullDesC8) const;
1651.915 +
1651.916 +    /**
1651.917 +     * Initializes list of child elements with matching name and namespace URI.
1651.918 +     *
1651.919 +     * @since S60 v3.1
1651.920 +	 * @param aList Node list to be initialized
1651.921 +     * @param aLocalName Element name
1651.922 +     * @param aNamespaceUri Namespace URI, default is NULL
1651.923 +     *
1651.924 +     * @note This method does not lists all descedants of the element, only child elements
1651.925 +     */
1651.926 +    IMPORT_C void  GetElementsByTagNameL(RXmlEngNodeList<TXmlEngElement>& aList, 
1651.927 +                                         const TDesC8& aLocalName, 
1651.928 +                                         const TDesC8& aNamespaceUri = KNullDesC8) const;
1651.929 +    
1651.930 +    /**
1651.931 +     * Sets value of attribute; attribute is created if there is no such attribute yet
1651.932 +     *
1651.933 +     * @since S60 v3.1
1651.934 +	 * @param aLocalName Attribute name
1651.935 +     * @param aValue Attribute value
1651.936 +     * @param aNamespaceUri Namespace URI - default is NULL
1651.937 +     * @param aPrefix Namespace prefix - default is NULL
1651.938 +     *
1651.939 +     * @note
1651.940 +     *  If prefix is not NULL (or ""), then namespace URI may not be empty
1651.941 +     *  see http://www.w3.org/TR/REC-xml-names/#ns-decl (Definition #3)
1651.942 +     */
1651.943 +    IMPORT_C void  SetAttributeL(const TDesC8& aLocalName, 
1651.944 +                                 const TDesC8& aValue, 
1651.945 +                                 const TDesC8& aNamespaceUri = KNullDesC8, 
1651.946 +                                 const TDesC8& aPrefix = KNullDesC8);
1651.947 +
1651.948 +    /**
1651.949 +     * Removes attribute with given name and namespace URI(if such exists).
1651.950 +     * Memory allocated for the attribute is freed.
1651.951 +     *
1651.952 +     * @since S60 v3.1
1651.953 +	 * @param aLocalName Name of the attribute
1651.954 +     * @param aNamespaceUri Attribute namespace URI, default is NULL
1651.955 +     */
1651.956 +    IMPORT_C void  RemoveAttributeL(const TDesC8& aLocalName, 
1651.957 +                                    const TDesC8& aNamespaceUri = KNullDesC8);
1651.958 +
1651.959 +    /**
1651.960 +     * Retrieves attribute node from specific namespace by its name.
1651.961 +     *
1651.962 +     * @since S60 v3.1
1651.963 +	 * @param aLocalName Name of the attribute
1651.964 +     * @param aNamespaceUri Attribute namespace URI, default is NULL
1651.965 +     * @return Attribute node with matching namespace URI and name
1651.966 +     */
1651.967 +    IMPORT_C TXmlEngAttr AttributeNodeL(const TDesC8& aLocalName, 
1651.968 +                                  const TDesC8& aNamespaceUri = KNullDesC8) const;
1651.969 +
1651.970 +    /**
1651.971 +     * Check if element has attribute with given parameters.
1651.972 +     *
1651.973 +     * @since S60 v3.1
1651.974 +	 * @param aLocalName Name of attribute
1651.975 +     * @param aNamespaceUri Namespace uri, default is NULL.
1651.976 +     * @return TRUE if the element holds an attribute with such namespace URI and name.
1651.977 +     *
1651.978 +     * Same result gives AttributeNodeL(uri,name).NotNull()
1651.979 +     */
1651.980 +    inline     TBool HasAttributeL(const TDesC8& aLocalName, 
1651.981 +                                   const TDesC8& aNamespaceUri  = KNullDesC8) const;
1651.982 +
1651.983 +    /**
1651.984 +     * Links attribute into tree
1651.985 +     *
1651.986 +     * @since S60 v3.1
1651.987 +	 * @param aNewAttr new attribute
1651.988 +     * 
1651.989 +     * The replaced attribute node is not returned and just deleted
1651.990 +     */
1651.991 +    IMPORT_C void  SetAttributeNodeL(TXmlEngAttr aNewAttr);
1651.992 +};
1651.993 +
1651.994 +
1651.995 +
1651.996 +#include "xmlengelement.inl"
1651.997 +
1651.998 +#endif /* XMLENGINE_ELEMENT_H_INCLUDED */
  1652.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1652.2 +++ b/epoc32/include/xml/dom/xmlengelement.inl	Wed Mar 31 12:27:01 2010 +0100
  1652.3 @@ -0,0 +1,113 @@
  1652.4 +/*
  1652.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1652.6 +* All rights reserved.
  1652.7 +* This component and the accompanying materials are made available
  1652.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1652.9 +* which accompanies this distribution, and is available
 1652.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1652.11 +*
 1652.12 +* Initial Contributors:
 1652.13 +* Nokia Corporation - initial contribution.
 1652.14 +*
 1652.15 +* Contributors:
 1652.16 +*
 1652.17 +* Description:       Inline functions specyfic for element node
 1652.18 +*
 1652.19 +*/
 1652.20 +
 1652.21 +
 1652.22 +
 1652.23 +
 1652.24 +
 1652.25 +
 1652.26 +
 1652.27 +
 1652.28 +// -------------------------------------------------------------------------------------
 1652.29 +// Default constructor
 1652.30 +// -------------------------------------------------------------------------------------
 1652.31 +//
 1652.32 +inline TXmlEngElement::TXmlEngElement():TXmlEngNode(NULL) {}
 1652.33 +
 1652.34 +// -------------------------------------------------------------------------------------
 1652.35 +// Constructor
 1652.36 +// -------------------------------------------------------------------------------------
 1652.37 +//
 1652.38 +inline TXmlEngElement::TXmlEngElement(void* aInternal): TXmlEngNode(aInternal) {}
 1652.39 +
 1652.40 +
 1652.41 +// -------------------------------------------------------------------------------------
 1652.42 +// Creates new attribute node using namespace of its parent element (this element),
 1652.43 +// sets attribute's value and links it as the last attribute of the element
 1652.44 +//
 1652.45 +// @param aName	- Local name of attribute 
 1652.46 +// @param aValue - Value to set for new attribute or NULL (sets value to "")
 1652.47 +// @return A handler to the newly created attribute node;
 1652.48 +//
 1652.49 +// For more hints how to use it refer to AddNewAttributeL(const TDesC8&,const TDesC8&)
 1652.50 +//		
 1652.51 +// @note	
 1652.52 +// 	- No checks are made that attribute with such name exists
 1652.53 +// 	- if namespace of the parent element is default (i.e. bound prefix is NULL),
 1652.54 +// 	  then temporary prefix will be used and bound to the same namespace URI as elements
 1652.55 +// 	  (It is due to the fact that default namespaces do not spread on unprefixed attributes,
 1652.56 +// 	   see http://w3.org/TR/REC-xml-names/#defaulting)
 1652.57 +// -------------------------------------------------------------------------------------
 1652.58 +//
 1652.59 +inline TXmlEngAttr TXmlEngElement::AddNewAttributeSameNsL(const TDesC8& aName, const TDesC8& aValue)
 1652.60 +    {
 1652.61 +    return AddNewAttributeL(aName, aValue, NamespaceDeclaration());
 1652.62 +    }
 1652.63 +
 1652.64 +// -------------------------------------------------------------------------------------
 1652.65 +// @return Default namespace in the scope of the element
 1652.66 +//
 1652.67 +// NULL TXmlEngNamespace means that element with no prefix have no namespace associated
 1652.68 +// because no default namespace was declared or default namespace was undeclared with <b>xmlns=""</b>
 1652.69 +//
 1652.70 +// Equivalent to LookupNamespaceByPrefixL() with NULL (or "") prefix provided
 1652.71 +// -------------------------------------------------------------------------------------
 1652.72 +//
 1652.73 +inline TXmlEngNamespace TXmlEngElement::DefaultNamespaceL() const
 1652.74 +    {
 1652.75 +    return LookupNamespaceByPrefixL(KNullDesC8);
 1652.76 +    }
 1652.77 +
 1652.78 +// -------------------------------------------------------------------------------------
 1652.79 +// Specialized version of TXmlEngNode::CopyL()
 1652.80 +//
 1652.81 +// @return Deep copy of the element.
 1652.82 +// -------------------------------------------------------------------------------------
 1652.83 +//
 1652.84 +inline TXmlEngElement TXmlEngElement::CopyL() const
 1652.85 +    {return TXmlEngNode::CopyL().AsElement();}
 1652.86 +
 1652.87 +// -------------------------------------------------------------------------------------
 1652.88 +// Removes all element contents: child nodes, attributes and namespace declarations
 1652.89 +//
 1652.90 +// @see RemoveChildren(), RemoveAttributes(), RemoveNamespaceDeclarations();
 1652.91 +// -------------------------------------------------------------------------------------
 1652.92 +//
 1652.93 +inline void TXmlEngElement::ClearElement()
 1652.94 +    {
 1652.95 +    RemoveChildren();
 1652.96 +    RemoveAttributes();
 1652.97 +    RemoveNamespaceDeclarations();
 1652.98 +    }
 1652.99 +
1652.100 +// -------------------------------------------------------------------------------------
1652.101 +// -------------------------------------------------------------------------------------
1652.102 +//
1652.103 +
1652.104 +
1652.105 +// -------------------------------------------------------------------------------------
1652.106 +// Returns TRUE if the element holds an attribute with such namespace URI and name.
1652.107 +//
1652.108 +// Same result gives AttributeNodeL(uri,name).NotNull()
1652.109 +// -------------------------------------------------------------------------------------
1652.110 +//
1652.111 +inline TBool TXmlEngElement::HasAttributeL(const TDesC8& aLocalName, const TDesC8& aNamespaceUri) const
1652.112 +	{return AttributeNodeL(aLocalName, aNamespaceUri).NotNull();}
1652.113 +
1652.114 +
1652.115 +
1652.116 +
  1653.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1653.2 +++ b/epoc32/include/xml/dom/xmlengentityreference.h	Wed Mar 31 12:27:01 2010 +0100
  1653.3 @@ -0,0 +1,59 @@
  1653.4 +/*
  1653.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1653.6 +* All rights reserved.
  1653.7 +* This component and the accompanying materials are made available
  1653.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1653.9 +* which accompanies this distribution, and is available
 1653.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1653.11 +*
 1653.12 +* Initial Contributors:
 1653.13 +* Nokia Corporation - initial contribution.
 1653.14 +*
 1653.15 +* Contributors:
 1653.16 +*
 1653.17 +* Description:       Entity reference node functions
 1653.18 +*
 1653.19 +*/
 1653.20 +
 1653.21 +
 1653.22 +
 1653.23 +
 1653.24 +
 1653.25 +
 1653.26 +
 1653.27 +#ifndef XMLENGINE_ENTITYREFERENCE_H_INCLUDED
 1653.28 +#define XMLENGINE_ENTITYREFERENCE_H_INCLUDED
 1653.29 +
 1653.30 +#include "xmlengnode.h"
 1653.31 +
 1653.32 +
 1653.33 +/** 
 1653.34 + * Instance of TXmlEngEntityReference class represents an XML entity reference in the DOM tree.
 1653.35 + * 
 1653.36 + * @lib XmlEngineDOM.lib
 1653.37 + * @since S60 v3.1
 1653.38 + */
 1653.39 +class TXmlEngEntityReference : public TXmlEngNode
 1653.40 +{
 1653.41 +public:
 1653.42 +	/** 
 1653.43 +     * Default constructor
 1653.44 +     *
 1653.45 +     * @since S60 v3.1
 1653.46 +     */
 1653.47 +	inline TXmlEngEntityReference();
 1653.48 +
 1653.49 +protected:
 1653.50 +	/** 
 1653.51 +     * Constructor
 1653.52 +     *
 1653.53 +     * @since S60 v3.1
 1653.54 +     * @param aInternal Entity reference pointer
 1653.55 +     */
 1653.56 +	inline TXmlEngEntityReference(void* aInternal);
 1653.57 +};
 1653.58 +
 1653.59 +#include "xmlengentityreference.inl"
 1653.60 +
 1653.61 +#endif /* XMLENGINE_ENTITYREFERENCE_H_INCLUDED */
 1653.62 +
  1654.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1654.2 +++ b/epoc32/include/xml/dom/xmlengentityreference.inl	Wed Mar 31 12:27:01 2010 +0100
  1654.3 @@ -0,0 +1,40 @@
  1654.4 +/*
  1654.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1654.6 +* All rights reserved.
  1654.7 +* This component and the accompanying materials are made available
  1654.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1654.9 +* which accompanies this distribution, and is available
 1654.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1654.11 +*
 1654.12 +* Initial Contributors:
 1654.13 +* Nokia Corporation - initial contribution.
 1654.14 +*
 1654.15 +* Contributors:
 1654.16 +*
 1654.17 +* Description:       Entity reference node functions
 1654.18 +*
 1654.19 +*/
 1654.20 +
 1654.21 +
 1654.22 +
 1654.23 +
 1654.24 +
 1654.25 +
 1654.26 +
 1654.27 +// -----------------------------------------------------------------------------
 1654.28 +// Default constructor
 1654.29 +// -----------------------------------------------------------------------------
 1654.30 +//
 1654.31 +inline TXmlEngEntityReference::TXmlEngEntityReference():TXmlEngNode(NULL)
 1654.32 +    {
 1654.33 +    }
 1654.34 +    
 1654.35 +
 1654.36 +// -----------------------------------------------------------------------------
 1654.37 +// Constructor
 1654.38 +// -----------------------------------------------------------------------------
 1654.39 +//
 1654.40 +inline TXmlEngEntityReference::TXmlEngEntityReference(void* aInternal):TXmlEngNode(aInternal)
 1654.41 +    {
 1654.42 +    }
 1654.43 +    
  1655.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1655.2 +++ b/epoc32/include/xml/dom/xmlengerrors.h	Wed Mar 31 12:27:01 2010 +0100
  1655.3 @@ -0,0 +1,161 @@
  1655.4 +/*
  1655.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1655.6 +* All rights reserved.
  1655.7 +* This component and the accompanying materials are made available
  1655.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1655.9 +* which accompanies this distribution, and is available
 1655.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1655.11 +*
 1655.12 +* Initial Contributors:
 1655.13 +* Nokia Corporation - initial contribution.
 1655.14 +*
 1655.15 +* Contributors:
 1655.16 +*
 1655.17 +* Description:       DOM errors codes
 1655.18 +*
 1655.19 +*/
 1655.20 +
 1655.21 +
 1655.22 +
 1655.23 +
 1655.24 +
 1655.25 +
 1655.26 +
 1655.27 +
 1655.28 +/**
 1655.29 + * NOTE1: All errors returned by DOM parser (positive values) are propagated from open-source library.
 1655.30 + * They can be found in documentation to Libxml2 (version 2.6.10). See http://xmlsoft.org, and find enum xmlParserErrors.
 1655.31 + *
 1655.32 + * NOTE2: This errors CANNOT be propagated to other applications. 
 1655.33 + *        It should be handled by user application.
 1655.34 + */
 1655.35 +
 1655.36 +#ifndef XMLENGINE_DOM_ERRORS_H__
 1655.37 +#define XMLENGINE_DOM_ERRORS_H__
 1655.38 +
 1655.39 +#include <e32def.h> 
 1655.40 +
 1655.41 +/** DOM parsing error */
 1655.42 +const TInt KXmlEngErrParsing = -32397;
 1655.43 +/** DOM save errors */
 1655.44 +const TInt KXmlEngErrNegativeOutputSize = -32383;
 1655.45 +const TInt KXmlEngErrWrongEncoding = -32382;
 1655.46 +
 1655.47 +/** KXmlEngErrNullNode error */
 1655.48 +const TInt KXmlEngErrNullNode = -32380;
 1655.49 +/** KXmlEngErrWrongUseOfAPI error */
 1655.50 +const TInt KXmlEngErrWrongUseOfAPI = -32381;
 1655.51 +
 1655.52 +#endif // XMLENGINE_DOM_ERRORS_H__
 1655.53 +
 1655.54 +/*
 1655.55 +* PARSING ERRORS:
 1655.56 +*
 1655.57 +*     XML_ERR_OK = 0 
 1655.58 +*    XML_ERR_INTERNAL_ERROR 				 1  
 1655.59 +*    XML_ERR_NO_MEMORY 						 2  
 1655.60 +*    XML_ERR_DOCUMENT_START 				 3  
 1655.61 +*    XML_ERR_DOCUMENT_EMPTY 				 4  
 1655.62 +*    XML_ERR_DOCUMENT_END 					 5  
 1655.63 +*    XML_ERR_INVALID_HEX_CHARREF 			 6  
 1655.64 +*    XML_ERR_INVALID_DEC_CHARREF 			 7  
 1655.65 +*    XML_ERR_INVALID_CHARREF 				 8  
 1655.66 +*    XML_ERR_INVALID_CHAR 					 9  
 1655.67 +*    XML_ERR_CHARREF_AT_EOF 				 10 
 1655.68 +*    XML_ERR_CHARREF_IN_PROLOG 				 11 
 1655.69 +*    XML_ERR_CHARREF_IN_EPILOG 				 12 
 1655.70 +*    XML_ERR_CHARREF_IN_DTD 				 13 
 1655.71 +*    XML_ERR_ENTITYREF_AT_EOF 				 14 
 1655.72 +*    XML_ERR_ENTITYREF_IN_PROLOG 			 15 
 1655.73 +*    XML_ERR_ENTITYREF_IN_EPILOG 			 16 
 1655.74 +*    XML_ERR_ENTITYREF_IN_DTD 				 17 
 1655.75 +*    XML_ERR_PEREF_AT_EOF 					 18 
 1655.76 +*    XML_ERR_PEREF_IN_PROLOG 				 19 
 1655.77 +*    XML_ERR_PEREF_IN_EPILOG 				 20 
 1655.78 +*    XML_ERR_PEREF_IN_INT_SUBSET 			 21 
 1655.79 +*    XML_ERR_ENTITYREF_NO_NAME 				 22 
 1655.80 +*    XML_ERR_ENTITYREF_SEMICOL_MISSING	 	 23 
 1655.81 +*    XML_ERR_PEREF_NO_NAME 					 24 
 1655.82 +*    XML_ERR_PEREF_SEMICOL_MISSING 			 25 
 1655.83 +*    XML_ERR_UNDECLARED_ENTITY 				 26 
 1655.84 +*    XML_WAR_UNDECLARED_ENTITY 				 27 
 1655.85 +*    XML_ERR_UNPARSED_ENTITY 				 28 
 1655.86 +*    XML_ERR_ENTITY_IS_EXTERNAL 			 29 
 1655.87 +*    XML_ERR_ENTITY_IS_PARAMETER 			 30 
 1655.88 +*    XML_ERR_UNKNOWN_ENCODING 				 31 
 1655.89 +*    XML_ERR_UNSUPPORTED_ENCODING 			 32 
 1655.90 +*    XML_ERR_STRING_NOT_STARTED 			 33 
 1655.91 +*    XML_ERR_STRING_NOT_CLOSED 				 34 
 1655.92 +*    XML_ERR_NS_DECL_ERROR 					 35 
 1655.93 +*    XML_ERR_ENTITY_NOT_STARTED 			 36 
 1655.94 +*    XML_ERR_ENTITY_NOT_FINISHED 			 37 
 1655.95 +*    XML_ERR_LT_IN_ATTRIBUTE 				 38 
 1655.96 +*    XML_ERR_ATTRIBUTE_NOT_STARTED 			 39 
 1655.97 +*    XML_ERR_ATTRIBUTE_NOT_FINISHED 		 40 
 1655.98 +*    XML_ERR_ATTRIBUTE_WITHOUT_VALUE		 41 
 1655.99 +*    XML_ERR_ATTRIBUTE_REDEFINED 			 42 
1655.100 +*    XML_ERR_LITERAL_NOT_STARTED 			 43 
1655.101 +*    XML_ERR_LITERAL_NOT_FINISHED 			 44 
1655.102 +*    XML_ERR_COMMENT_NOT_FINISHED 			 45 
1655.103 +*    XML_ERR_PI_NOT_STARTED 				 46 
1655.104 +*    XML_ERR_PI_NOT_FINISHED 				 47 
1655.105 +*    XML_ERR_NOTATION_NOT_STARTED 			 48 
1655.106 +*    XML_ERR_NOTATION_NOT_FINISHED 			 49 
1655.107 +*    XML_ERR_ATTLIST_NOT_STARTED 			 50 
1655.108 +*    XML_ERR_ATTLIST_NOT_FINISHED 			 51 
1655.109 +*    XML_ERR_MIXED_NOT_STARTED 				 52 
1655.110 +*    XML_ERR_MIXED_NOT_FINISHED 			 53 
1655.111 +*    XML_ERR_ELEMCONTENT_NOT_STARTED 		 54 
1655.112 +*    XML_ERR_ELEMCONTENT_NOT_FINISHED		 55 
1655.113 +*    XML_ERR_XMLDECL_NOT_STARTED 			 56 
1655.114 +*    XML_ERR_XMLDECL_NOT_FINISHED 			 57 
1655.115 +*    XML_ERR_CONDSEC_NOT_STARTED 			 58 
1655.116 +*    XML_ERR_CONDSEC_NOT_FINISHED 			 59 
1655.117 +*    XML_ERR_EXT_SUBSET_NOT_FINISHED		 60 
1655.118 +*    XML_ERR_DOCTYPE_NOT_FINISHED 			 61 
1655.119 +*    XML_ERR_MISPLACED_CDATA_END 			 62 
1655.120 +*    XML_ERR_CDATA_NOT_FINISHED 			 63 
1655.121 +*    XML_ERR_RESERVED_XML_NAME 				 64 
1655.122 +*    XML_ERR_SPACE_REQUIRED 				 65 
1655.123 +*    XML_ERR_SEPARATOR_REQUIRED 			 66 
1655.124 +*    XML_ERR_NMTOKEN_REQUIRED 				 67 
1655.125 +*    XML_ERR_NAME_REQUIRED 					 68 
1655.126 +*    XML_ERR_PCDATA_REQUIRED 				 69 
1655.127 +*    XML_ERR_URI_REQUIRED 					 70 
1655.128 +*    XML_ERR_PUBID_REQUIRED 				 71 
1655.129 +*    XML_ERR_LT_REQUIRED 					 72 
1655.130 +*    XML_ERR_GT_REQUIRED 					 73 
1655.131 +*    XML_ERR_LTSLASH_REQUIRED 				 74 
1655.132 +*    XML_ERR_EQUAL_REQUIRED 				 75 
1655.133 +*    XML_ERR_TAG_NAME_MISMATCH 				 76 
1655.134 +*    XML_ERR_TAG_NOT_FINISHED 				 77 
1655.135 +*    XML_ERR_STANDALONE_VALUE 				 78 
1655.136 +*    XML_ERR_ENCODING_NAME 					 79 
1655.137 +*    XML_ERR_HYPHEN_IN_COMMENT 				 80 
1655.138 +*    XML_ERR_INVALID_ENCODING 				 81 
1655.139 +*    XML_ERR_EXT_ENTITY_STANDALONE 			 82 
1655.140 +*    XML_ERR_CONDSEC_INVALID 				 83 
1655.141 +*    XML_ERR_VALUE_REQUIRED 				 84 
1655.142 +*    XML_ERR_NOT_WELL_BALANCED 				 85 
1655.143 +*    XML_ERR_EXTRA_CONTENT 					 86 
1655.144 +*    XML_ERR_ENTITY_CHAR_ERROR 				 87 
1655.145 +*    XML_ERR_ENTITY_PE_INTERNAL 			 88 
1655.146 +*    XML_ERR_ENTITY_LOOP 					 89 
1655.147 +*    XML_ERR_ENTITY_BOUNDARY 				 90 
1655.148 +*    XML_ERR_INVALID_URI 					 91 
1655.149 +*    XML_ERR_URI_FRAGMENT 					 92 
1655.150 +*    XML_WAR_CATALOG_PI 					 93 
1655.151 +*    XML_ERR_NO_DTD 						 94 
1655.152 +*    XML_ERR_CONDSEC_INVALID_KEYWORD 		 95 
1655.153 +*    XML_ERR_VERSION_MISSING 				 96 
1655.154 +*    XML_WAR_UNKNOWN_VERSION 				 97 
1655.155 +*    XML_WAR_LANG_VALUE 					 98 
1655.156 +*    XML_WAR_NS_URI 						 99 
1655.157 +*    XML_WAR_NS_URI_RELATIVE 				 100 
1655.158 +*    XML_ERR_MISSING_ENCODING 				 101 
1655.159 +*    XML_NS_ERR_XML_NAMESPACE			     200
1655.160 +*    XML_NS_ERR_UNDEFINED_NAMESPACE 		 201 
1655.161 +*    XML_NS_ERR_QNAME 						 202 
1655.162 +*    XML_NS_ERR_ATTRIBUTE_REDEFINED 		 203 
1655.163 +*/    
1655.164 +
  1656.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1656.2 +++ b/epoc32/include/xml/dom/xmlengfilecontainer.h	Wed Mar 31 12:27:01 2010 +0100
  1656.3 @@ -0,0 +1,90 @@
  1656.4 +/*
  1656.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1656.6 +* All rights reserved.
  1656.7 +* This component and the accompanying materials are made available
  1656.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1656.9 +* which accompanies this distribution, and is available
 1656.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1656.11 +*
 1656.12 +* Initial Contributors:
 1656.13 +* Nokia Corporation - initial contribution.
 1656.14 +*
 1656.15 +* Contributors:
 1656.16 +*
 1656.17 +* Description:       All file container data functions
 1656.18 +*
 1656.19 +*/
 1656.20 +
 1656.21 +
 1656.22 +
 1656.23 +
 1656.24 +
 1656.25 +
 1656.26 +
 1656.27 +#ifndef XMLENGINE_FILECONTAINER_H_INCLUDED
 1656.28 +#define XMLENGINE_FILECONTAINER_H_INCLUDED
 1656.29 +
 1656.30 +#include "xmlengdatacontainer.h"
 1656.31 +
 1656.32 +class RFile;
 1656.33 +
 1656.34 +
 1656.35 +
 1656.36 +/**
 1656.37 +* Instance of TXmlEngFileContainer class represents data stored in RFile in DOM tree
 1656.38 +*
 1656.39 +* RFile container is treated in general as text nodes in DOM tree.
 1656.40 +* Some of the fields in xmlNode structure are reused in order to save memory. 
 1656.41 +* Data is stored in file system referenced to by RFile handle.
 1656.42 +*
 1656.43 +* Sample code for creating filecontainer:
 1656.44 +* @code  
 1656.45 +*      RXmlEngDOMImplementation domImpl;
 1656.46 +*      domImpl.OpenL();        ///< opening DOM implementation object 
 1656.47 +*      RXmlEngDocument iDoc; 
 1656.48 +*      ///< create document element
 1656.49 +*      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
 1656.50 +*      ///< create file container from file (file1 is an RFile object) and CID equals cid
 1656.51 +*      TXmlEngFileContainer binData = iDoc.CreateFileContainerL(cid, file1);
 1656.52 +*      elem.AppendChildL(binData);      ///< append container to the dom tree       
 1656.53 +*      iDoc.Close();               ///< closing all opened objects
 1656.54 +*      domImpl.Close();
 1656.55 +* @endcode 
 1656.56 +*
 1656.57 +* @lib XmlEngineDOM.lib
 1656.58 +* @since S60 v3.2
 1656.59 +*/
 1656.60 +class TXmlEngFileContainer : public TXmlEngDataContainer
 1656.61 +{
 1656.62 +public:
 1656.63 +    /**
 1656.64 +     * Get RFile reference
 1656.65 +     *
 1656.66 +     * @since S60 v3.2
 1656.67 +     * @return RFile reference
 1656.68 +     * 
 1656.69 +     */
 1656.70 +    IMPORT_C RFile& File() const;
 1656.71 +	
 1656.72 +protected:
 1656.73 +    /**
 1656.74 +     * Default constructor
 1656.75 +	 *
 1656.76 +     * @since S60 v3.1
 1656.77 +     */
 1656.78 +	inline TXmlEngFileContainer(); 
 1656.79 +	
 1656.80 +    /**
 1656.81 +     * Constructor
 1656.82 +     *
 1656.83 +     * @since S60 v3.1
 1656.84 +     * @param aInternal node pointer
 1656.85 +     */
 1656.86 +	inline TXmlEngFileContainer(void* aInternal);
 1656.87 +};
 1656.88 +
 1656.89 +
 1656.90 +
 1656.91 +#include "xmlengfilecontainer.inl"
 1656.92 +
 1656.93 +#endif /* XMLENGINE_FILECONTAINER_H_INCLUDED */
  1657.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1657.2 +++ b/epoc32/include/xml/dom/xmlengfilecontainer.inl	Wed Mar 31 12:27:01 2010 +0100
  1657.3 @@ -0,0 +1,41 @@
  1657.4 +/*
  1657.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1657.6 +* All rights reserved.
  1657.7 +* This component and the accompanying materials are made available
  1657.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1657.9 +* which accompanies this distribution, and is available
 1657.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1657.11 +*
 1657.12 +* Initial Contributors:
 1657.13 +* Nokia Corporation - initial contribution.
 1657.14 +*
 1657.15 +* Contributors:
 1657.16 +*
 1657.17 +* Description:       File container functions
 1657.18 +*
 1657.19 +*/
 1657.20 +
 1657.21 +
 1657.22 +
 1657.23 +
 1657.24 +
 1657.25 +
 1657.26 +
 1657.27 +
 1657.28 +
 1657.29 +// -----------------------------------------------------------------------------
 1657.30 +// Default constructor
 1657.31 +// -----------------------------------------------------------------------------
 1657.32 +//
 1657.33 +inline TXmlEngFileContainer::TXmlEngFileContainer():TXmlEngDataContainer(NULL)
 1657.34 +    {
 1657.35 +    }
 1657.36 +    
 1657.37 +// -----------------------------------------------------------------------------
 1657.38 +// Constructor
 1657.39 +// -----------------------------------------------------------------------------
 1657.40 +//
 1657.41 +inline TXmlEngFileContainer::TXmlEngFileContainer(void* aInternal):TXmlEngDataContainer(aInternal)
 1657.42 +    {
 1657.43 +    }
 1657.44 +   
  1658.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1658.2 +++ b/epoc32/include/xml/dom/xmlengnamespace.h	Wed Mar 31 12:27:01 2010 +0100
  1658.3 @@ -0,0 +1,161 @@
  1658.4 +/*
  1658.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1658.6 +* All rights reserved.
  1658.7 +* This component and the accompanying materials are made available
  1658.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1658.9 +* which accompanies this distribution, and is available
 1658.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1658.11 +*
 1658.12 +* Initial Contributors:
 1658.13 +* Nokia Corporation - initial contribution.
 1658.14 +*
 1658.15 +* Contributors:
 1658.16 +*
 1658.17 +* Description:       Namespace node functions
 1658.18 +*
 1658.19 +*/
 1658.20 +
 1658.21 +
 1658.22 +
 1658.23 +
 1658.24 +
 1658.25 +
 1658.26 +
 1658.27 +#ifndef XMLENGINE_NAMESPACE_H_INCLUDED
 1658.28 +#define XMLENGINE_NAMESPACE_H_INCLUDED
 1658.29 +
 1658.30 +#include "xmlengnode.h"
 1658.31 +
 1658.32 +/**
 1658.33 + *   Represents existing namespace declaration in DOM tree <b>OR</b> namespace node returned
 1658.34 + *   in RXmlEngNodeSet as a result of some XPath expression. 
 1658.35 + *
 1658.36 + *   All elements and attributes may have a namespace instance associated.
 1658.37 + *   Once put in element, a namespace declaration (instance of TXmlEngNamespace) may be 
 1658.38 + *   referred to by all attributes and descentants of the element (unless
 1658.39 + *   prefix that this namespace-to-prefix binding uses is overriden somewhere below in the document tree)
 1658.40 + *
 1658.41 + *   <b>General rules of namespace handling:</b>
 1658.42 + *
 1658.43 + * - <b>NULL</b> prefix in namespace node means NO PREFIX. ""(empty string '\\0') can be used for specifying 
 1658.44 + *   absense of prefix when setting it, however <b>NULL</b> will be stored and returned.
 1658.45 + *
 1658.46 + * - <b>NULL</b> value of namespace URI is legal only with <b>NULL</b> prefix and only met in 
 1658.47 + *   undeclaration of namespace (<i>xmlns=""</i>). <b>""</b> (empty string) can be used too, however it 
 1658.48 + *   will be returned as <b>NULL</b>.
 1658.49 + *
 1658.50 + * - <b>NULL</b> or <b>""</b> namespace <b>URI</b> with non-<b>NULL</b> prefix is illegal acording to the XML specification.
 1658.51 + *
 1658.52 + * - Namespace of a element is <b>default</b> if it is associated with some namespace declaration with <b>NULL</b> prefix.
 1658.53 + *
 1658.54 + * - Elements are never associated with namespace undeclarations (<b>xmlns=""</b>), instead, such elements have no
 1658.55 + *   namespace declaration referred to. 
 1658.56 + *
 1658.57 + * - Attributes do not have <i>default</i> namespace. Even if it is effective at element scope,
 1658.58 + *   default namespace declaration is not applied to element's attributes (according to the XML specification)
 1658.59 + *
 1658.60 + * - Namespace of a node (element or attribute) is <b>undefined</b> if no namespace declaration is
 1658.61 + *   associated with it.
 1658.62 + *
 1658.63 + * - Node with <i>undefined</i> namespace is serialized as having no prefix. In general,
 1658.64 + *   DOM API handles the complexity of namespace declaration handling and creates neccessary
 1658.65 + *   namespace declarations and undeclares default namespace. However, some node-creation methods (e.g. TXmlEngElement::AddNewElementL()) 
 1658.66 + *   do not ensure that created node with undefined namespace (thus, without a prefix) will 
 1658.67 + *   actually treated after serialization as having some <i>default</i> namespace
 1658.68 + *
 1658.69 + *   @note
 1658.70 + *   Namespace nodes that are result of XPath expression have following restrictions:
 1658.71 + *       - they cannot be used as namespace definitions, because they are not part of
 1658.72 + *         the DOM tree, but copies of existing namespace definitions.
 1658.73 + *       - namespace prefix is not available because it is not mandated by DOM Level 3 XPath module API, 
 1658.74 + *         so in returned copies of DOM tree, namespaces prefix strings are not preserved 
 1658.75 + *         and Prefix() returns NULL.
 1658.76 + * 
 1658.77 + * @lib XmlEngineDOM.lib
 1658.78 + * @since S60 v3.1
 1658.79 + */
 1658.80 +class TXmlEngNamespace: public TXmlEngNode
 1658.81 +{
 1658.82 +  public:
 1658.83 +    /**
 1658.84 +     * Default constructor
 1658.85 +     *
 1658.86 +     * @since S60 v3.1
 1658.87 +     */
 1658.88 +	inline TXmlEngNamespace();
 1658.89 +
 1658.90 +    /**
 1658.91 +    /**
 1658.92 +     * Get namespace URI
 1658.93 +     *
 1658.94 +     * @since S60 v3.1
 1658.95 +     * @return Namespace URI string 
 1658.96 +     * @note "" is never returned - it is replaced with NULL
 1658.97 +     *
 1658.98 +     * For TXmlEngNamespace(NULL) or namespace undeclaration (xmlns=""), which are
 1658.99 +     * treatet as <i>undefined namespace</i> returns NULL,
1658.100 +     * otherwise result is not a NULL string and not a "" (empty string).
1658.101 +     */
1658.102 +    IMPORT_C TPtrC8 Uri() const;
1658.103 +
1658.104 +    /**
1658.105 +     * Get namespace prefix. 
1658.106 +     *
1658.107 +     * @since S60 v3.1
1658.108 +     * @return prefix that is bound in the namespace declaration
1658.109 +     * or NULL string for default namespace or if no binding exist
1658.110 +     */
1658.111 +    IMPORT_C TPtrC8 Prefix() const;
1658.112 +
1658.113 +    /**
1658.114 +     * Check if namespace is default.
1658.115 +     *
1658.116 +     * @since S60 v3.1
1658.117 +     * @return Whether it is a definition of default namespace
1658.118 +     *    TRUE  -- is a default namespace (no prefix)
1658.119 +     *    FALSE -- not a default namespace (bound to prefix) or empty TXmlEngNamespace(NULL) instance
1658.120 +     */
1658.121 +    IMPORT_C TBool IsDefault() const;
1658.122 +
1658.123 +	/**
1658.124 +     * Check if namespace is undefined
1658.125 +	 *
1658.126 +     * @since S60 v3.1
1658.127 +     * @return Whether the namespace is undefined
1658.128 +     *
1658.129 +     * A node's namespace is undefined if no namespace declaration associated with it.
1658.130 +     * @note Same as TXmlEngNode::IsNull()
1658.131 +     */
1658.132 +    IMPORT_C TBool IsUndefined() const; 
1658.133 +
1658.134 +protected:
1658.135 +    /**
1658.136 +     *   Workaround to avoid misuse of TXmlEngNode::NamespaceUri() method, which should not be
1658.137 +     *   applied to TXmlEngNamespace node. Since the name of the inherited method from TXmlEngNode
1658.138 +     *   is too similar to TXmlEngNamespace::Uri(), NamespaceUri() is disabled for direct
1658.139 +     *   use. 
1658.140 +     *   If NamespaceUri() is called on the TXmlEngNamespace object that is downcasted to TXmlEngNode, then
1658.141 +     *   NamespaceUri()'s result equals to result of Uri() method.
1658.142 +     *
1658.143 +     * @since S60 v3.1
1658.144 +     * @return NULL
1658.145 +     */
1658.146 +	inline TPtrC8 NamespaceUri();
1658.147 +
1658.148 +protected:
1658.149 +    /**
1658.150 +     * Constructor
1658.151 +     *
1658.152 +     * @since S60 v3.1
1658.153 +     * @param aPtr Namespace pointer
1658.154 +     */
1658.155 +	inline TXmlEngNamespace(void* aPtr);
1658.156 +
1658.157 +    friend class TXmlEngElement;
1658.158 +    friend class TXmlEngNode;
1658.159 +};
1658.160 +
1658.161 +#include "xmlengnamespace.inl"
1658.162 +
1658.163 +#endif /* XMLENGINE_NAMESPACE_H_INCLUDED */
1658.164 +
  1659.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1659.2 +++ b/epoc32/include/xml/dom/xmlengnamespace.inl	Wed Mar 31 12:27:01 2010 +0100
  1659.3 @@ -0,0 +1,56 @@
  1659.4 +/*
  1659.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1659.6 +* All rights reserved.
  1659.7 +* This component and the accompanying materials are made available
  1659.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1659.9 +* which accompanies this distribution, and is available
 1659.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1659.11 +*
 1659.12 +* Initial Contributors:
 1659.13 +* Nokia Corporation - initial contribution.
 1659.14 +*
 1659.15 +* Contributors:
 1659.16 +*
 1659.17 +* Description:       Namespace node functions
 1659.18 +*
 1659.19 +*/
 1659.20 +
 1659.21 +
 1659.22 +
 1659.23 +
 1659.24 +
 1659.25 +
 1659.26 +
 1659.27 +
 1659.28 +
 1659.29 +// -----------------------------------------------------------------------------
 1659.30 +// Default constructor
 1659.31 +// -----------------------------------------------------------------------------
 1659.32 +//
 1659.33 +inline TXmlEngNamespace::TXmlEngNamespace():TXmlEngNode(NULL)
 1659.34 +    {
 1659.35 +    }
 1659.36 +    
 1659.37 +// -----------------------------------------------------------------------------
 1659.38 +// Workaround to avoid misuse of TXmlEngNode::NamespaceUri() method, which should not 
 1659.39 +// be applied to TXmlEngNamespace node. Since the name of the inherited method from 
 1659.40 +// TXmlEngNode is too similar to TXmlEngNamespace::Uri(), NamespaceUri() is disabled for 
 1659.41 +// direct use. 
 1659.42 +//		
 1659.43 +// If NamespaceUri() is called on the TXmlEngNamespace object that is downcasted to 
 1659.44 +// TXmlEngNode, then NamespaceUri()'s result equals to result of Uri() method.
 1659.45 +// -----------------------------------------------------------------------------
 1659.46 +//
 1659.47 +inline TPtrC8 TXmlEngNamespace::NamespaceUri()
 1659.48 +    {
 1659.49 +    return KNullDesC8();
 1659.50 +    }    
 1659.51 +
 1659.52 +// -----------------------------------------------------------------------------
 1659.53 +// Constructor
 1659.54 +// -----------------------------------------------------------------------------
 1659.55 +//
 1659.56 +inline TXmlEngNamespace::TXmlEngNamespace(void* aPtr):TXmlEngNode(aPtr)
 1659.57 +    {
 1659.58 +    }
 1659.59 +    
  1660.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1660.2 +++ b/epoc32/include/xml/dom/xmlengnode.h	Wed Mar 31 12:27:01 2010 +0100
  1660.3 @@ -0,0 +1,805 @@
  1660.4 +/*
  1660.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1660.6 +* All rights reserved.
  1660.7 +* This component and the accompanying materials are made available
  1660.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1660.9 +* which accompanies this distribution, and is available
 1660.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1660.11 +*
 1660.12 +* Initial Contributors:
 1660.13 +* Nokia Corporation - initial contribution.
 1660.14 +*
 1660.15 +* Contributors:
 1660.16 +*
 1660.17 +* Description:       Node class declaration
 1660.18 +*
 1660.19 +*/
 1660.20 +
 1660.21 +
 1660.22 +
 1660.23 +
 1660.24 +
 1660.25 +
 1660.26 +
 1660.27 +#ifndef XMLENGINE_NODE_H_INCLUDED
 1660.28 +#define XMLENGINE_NODE_H_INCLUDED
 1660.29 +
 1660.30 +#include <e32base.h>
 1660.31 +
 1660.32 +// forward declaration
 1660.33 +class TXmlEngNode;
 1660.34 +
 1660.35 +// Forward declarations
 1660.36 +template<class T> class RXmlEngNodeList;
 1660.37 +
 1660.38 +class RXmlEngDocument;
 1660.39 +class TXmlEngElement;
 1660.40 +class TXmlEngAttr;
 1660.41 +class TXmlEngTextNode;
 1660.42 +class TXmlEngNamespace;
 1660.43 +class TXmlEngComment;
 1660.44 +class TXmlEngCDATASection;
 1660.45 +class TXmlEngDocumentFragment;
 1660.46 +class TXmlEngEntityReference;
 1660.47 +class TXmlEngProcessingInstruction;
 1660.48 +class MXmlEngUserData;
 1660.49 +class TXmlEngBinaryContainer;
 1660.50 +class TXmlEngChunkContainer;
 1660.51 +class TXmlEngDataContainer;
 1660.52 +class TXmlEngFileContainer;
 1660.53 +//
 1660.54 +
 1660.55 +/**
 1660.56 + * Instance of TXmlEngNode class represents an XML node in the DOM tree.
 1660.57 + *
 1660.58 + * Class implements methods that are similar for all XML node types
 1660.59 + * i.e. element, attribute.
 1660.60 + * 
 1660.61 + * Sample code for node tree modifications:
 1660.62 + * @code  
 1660.63 + *      RXmlEngDOMImplementation domImpl;
 1660.64 + *      domImpl.OpenL();        ///< opening DOM implementation object 
 1660.65 + *      RXmlEngDocument iDoc; ///< iDoc with created nodes tree
 1660.66 + *      TXmlEngNode tmp = iDoc.DocumentElement();
 1660.67 + *	///< copying first child of iDoc to tmp2 node and appending it
 1660.68 + * 	TXmlEngNode tmp2 = tmp.FirstChild().CopyL();
 1660.69 + *	tmp.AppendChildL(tmp2);
 1660.70 + *	///< copying next node to the first child of iDoc to the last child place
 1660.71 + *	tmp.FirstChild().NextSibling().CopyToL(tmp.LastChild());
 1660.72 + *	///< replasing before last child with second child 
 1660.73 + *	tmp.LastChild().PreviousSibling().ReplaceWith(tmp.FirstChild().NextSibling());
 1660.74 + *	///< moving first child of iDoc to second child childrens
 1660.75 + *	tmp.FirstChild().MoveTo(tmp.FirstChild().NextSibling());	
 1660.76 + *      iDoc.Close();               ///< closing all opened objects
 1660.77 + *      domImpl.Close();
 1660.78 + * @endcode 
 1660.79 + *
 1660.80 + * @lib XmlEngineDOM.lib
 1660.81 + * @since S60 v3.1
 1660.82 + */
 1660.83 +class TXmlEngNode
 1660.84 +{
 1660.85 +public:
 1660.86 +   /**
 1660.87 +    * The different element types carried by an XML tree.
 1660.88 +    *
 1660.89 +    * @note This is synchronized with DOM Level 3 values
 1660.90 +    *       See http://www.w3.org/TR/DOM-Level-3-Core/
 1660.91 +    *
 1660.92 +    */
 1660.93 +    enum TXmlEngDOMNodeType {
 1660.94 +        EElement                =        1,
 1660.95 +        EAttribute              =        2,
 1660.96 +        EText                   =        3,
 1660.97 +        ECDATASection           =        4,
 1660.98 +        EEntityReference        =        5,
 1660.99 +        EEntity                 =        6,  //> Not supported currently
1660.100 +        EProcessingInstruction  =        7,
1660.101 +        EComment                =        8,
1660.102 +        EDocument               =        9,
1660.103 +        EDocumentType           =        10, //> Not supported currently
1660.104 +        EDocumentFragment       =        11,
1660.105 +        ENotation               =        12, //> Not supported currently
1660.106 +        ENamespaceDeclaration   =        18, //> Not in DOM spec
1660.107 +		EBinaryContainer 		= 		 30, //> Not in DOM spec
1660.108 +		EChunkContainer 		= 		 31, //> Not in DOM spec
1660.109 +		EFileContainer 			= 		 32  //> Not in DOM spec
1660.110 +    };
1660.111 +
1660.112 +public:
1660.113 +    /**
1660.114 +     * Default constructor
1660.115 +     *
1660.116 +     * @since S60 v3.1
1660.117 +     */
1660.118 +    inline TXmlEngNode();
1660.119 +
1660.120 +    /**
1660.121 +     * Constructor
1660.122 +     *
1660.123 +     * @since S60 v3.1
1660.124 +     * @param aInternal node pointer
1660.125 +     */
1660.126 +    inline TXmlEngNode(void* aInternal);
1660.127 +
1660.128 +    /**
1660.129 +     * Check if node is NULL
1660.130 +     *
1660.131 +     * @since S60 v3.1
1660.132 +     * @return TRUE if node is NULL in other case FALSE
1660.133 +     */
1660.134 +    inline TBool IsNull() const;
1660.135 +
1660.136 +    /**
1660.137 +     * Check if node is NULL
1660.138 +     *
1660.139 +     * @since S60 v3.1
1660.140 +     * @return TRUE if node is not NULL in other case FALSE
1660.141 +     */
1660.142 +    inline TBool NotNull()const;
1660.143 +
1660.144 +    /**
1660.145 +     * Cast node to attribute node.
1660.146 +     *
1660.147 +     * @since S60 v3.1
1660.148 +     * @return Attribute node
1660.149 +     *
1660.150 +     * @note
1660.151 +     *      - Never cast nodes to a wrong node type!
1660.152 +     *      - Casting removes const'ness of the node
1660.153 +     */
1660.154 +    inline    TXmlEngAttr&                    AsAttr() const;
1660.155 +
1660.156 +    /**
1660.157 +     * Cast node to text node.
1660.158 +     *
1660.159 +     * @since S60 v3.1
1660.160 +     * @return Text node
1660.161 +     *
1660.162 +     * @note
1660.163 +     *     - Never cast nodes to a wrong node type!
1660.164 +     *     - Casting removes const'ness of the node
1660.165 +     */
1660.166 +    inline    TXmlEngTextNode&                AsText() const;
1660.167 +
1660.168 +    /**
1660.169 +     * Cast node to binary data container
1660.170 +     *
1660.171 +     * @since S60 v3.2
1660.172 +     * @return Binary container
1660.173 +     *
1660.174 +     * @note
1660.175 +     *     - Never cast nodes to a wrong node type!
1660.176 +     *     - Casting removes const'ness of the node
1660.177 +     */
1660.178 +    inline    TXmlEngBinaryContainer&		 AsBinaryContainer() const;
1660.179 +
1660.180 +    /**
1660.181 +     * Cast node to memory chunk container
1660.182 +     *
1660.183 +     * @since S60 v3.2
1660.184 +     * @return Chunk container
1660.185 +     *
1660.186 +     * @note
1660.187 +     *     - Never cast nodes to a wrong node type!
1660.188 +     *     - Casting removes const'ness of the node
1660.189 +     */
1660.190 +    inline    TXmlEngChunkContainer&		 AsChunkContainer() const;
1660.191 +
1660.192 +    /**
1660.193 +     * Cast node to file container
1660.194 +     *
1660.195 +     * @since S60 v3.2
1660.196 +     * @return File container
1660.197 +     *
1660.198 +     * @note
1660.199 +     *     - Never cast nodes to a wrong node type!
1660.200 +     *     - Casting removes const'ness of the node
1660.201 +     */
1660.202 +    inline    TXmlEngFileContainer&		 AsFileContainer() const;
1660.203 +
1660.204 +    /**
1660.205 +     * Cast node to memory chunk container
1660.206 +     *
1660.207 +     * @since S60 v3.1
1660.208 +     * @return Chunk container
1660.209 +     *
1660.210 +     * @note
1660.211 +     *     - Never cast nodes to a wrong node type!
1660.212 +     *     - Casting removes const'ness of the node
1660.213 +     */
1660.214 +    inline    TXmlEngDataContainer&		 AsDataContainer() const;
1660.215 +
1660.216 +    /**
1660.217 +     * Cast node to element node.
1660.218 +     *
1660.219 +     * @since S60 v3.1
1660.220 +     * @return Element node
1660.221 +     *
1660.222 +     * @note
1660.223 +     *     - Never cast nodes to a wrong node type!
1660.224 +     *     - Casting removes const'ness of the node
1660.225 +     */
1660.226 +    inline TXmlEngElement& AsElement() const;
1660.227 +
1660.228 +    /**
1660.229 +     * Cast node to comment node.
1660.230 +     *
1660.231 +     * @since S60 v3.1
1660.232 +     * @return Comment node
1660.233 +     *
1660.234 +     * @note
1660.235 +     *     - Never cast nodes to a wrong node type!
1660.236 +     *     - Casting removes const'ness of the node
1660.237 +     */
1660.238 +    inline TXmlEngComment& AsComment() const;
1660.239 +
1660.240 +    /**
1660.241 +     * Cast node to namespace node.
1660.242 +     *
1660.243 +     * @since S60 v3.1
1660.244 +     * @return Namespace node
1660.245 +     *
1660.246 +     * @note
1660.247 +     *     - Never cast nodes to a wrong node type!
1660.248 +     *     - Casting removes const'ness of the node
1660.249 +     */
1660.250 +    inline TXmlEngNamespace& AsNamespace() const;
1660.251 +
1660.252 +    /**
1660.253 +     * Cast node to CDATA section node.
1660.254 +     *
1660.255 +     * @since S60 v3.1
1660.256 +     * @return CDATA section node
1660.257 +     *
1660.258 +     * @note
1660.259 +     *     - Never cast nodes to a wrong node type!
1660.260 +     *     - Casting removes const'ness of the node
1660.261 +     */
1660.262 +    inline TXmlEngCDATASection& AsCDATASection() const;
1660.263 +
1660.264 +    /**
1660.265 +     * Cast node to entity reference node.
1660.266 +     *
1660.267 +     * @since S60 v3.1
1660.268 +     * @return Entity reference node
1660.269 +     *
1660.270 +     * @note
1660.271 +     *     - Never cast nodes to a wrong node type!
1660.272 +     *     - Casting removes const'ness of the node
1660.273 +     */
1660.274 +    inline TXmlEngEntityReference& AsEntityReference() const;
1660.275 +
1660.276 +    /**
1660.277 +     * Cast node to processing instruction node.
1660.278 +     *
1660.279 +     * @since S60 v3.1
1660.280 +     * @return Processing instruction node
1660.281 +     *
1660.282 +     * @note
1660.283 +     *     - Never cast nodes to a wrong node type!
1660.284 +     *     - Casting removes const'ness of the node
1660.285 +     */
1660.286 +    inline TXmlEngProcessingInstruction& AsProcessingInstruction() const;
1660.287 +
1660.288 +    /**
1660.289 +     * Get innerXML string. This method returns all content of the node.
1660.290 +     * Output text does not include node markup.
1660.291 +     *
1660.292 +     * @since S60 v3.1
1660.293 +     * @param aBuffer RBuf8 in which output should be save
1660.294 +     * @return Size of output buffer
1660.295 +     * @note Returned RBuf8 should be freed
1660.296 +     */
1660.297 +    IMPORT_C TInt InnerXmlL(RBuf8& aBuffer);
1660.298 +    
1660.299 +    /**
1660.300 +     * Get outerXML string. This method returns all content of the node.
1660.301 +     * Output text includes node markup.
1660.302 +     *
1660.303 +     * @since S60 v3.1
1660.304 +     * @param aBuffer RBuf8 in which output should be save
1660.305 +     * @return Size of output buffer
1660.306 +     * @note Returned RBuf8 should be freed
1660.307 +     */
1660.308 +    IMPORT_C TInt OuterXmlL(RBuf8& aBuffer);
1660.309 +
1660.310 +    /**
1660.311 +     * Moves the node to become the first in the list of its siblings
1660.312 +     * Node is expected to have a parent.
1660.313 +     *
1660.314 +     * @since S60 v3.1
1660.315 +     */
1660.316 +    IMPORT_C void SetAsFirstSibling();
1660.317 +
1660.318 +    /**
1660.319 +     * Moves the node to become the last in the list of its siblings
1660.320 +     * Node is expected to have a parent.
1660.321 +     *
1660.322 +     * @since S60 v3.1
1660.323 +     */
1660.324 +    IMPORT_C void SetAsLastSibling();
1660.325 +
1660.326 +    /**
1660.327 +     * Moves the node in the list of sibling nodes before another node
1660.328 +     * Node is expected to have a parent.
1660.329 +     * Do nothing if aSiblingNode is not one of node's siblings
1660.330 +     *
1660.331 +     * @since S60 v3.1
1660.332 +	 * @param aSiblingNode Node that should be after current node 
1660.333 +     */
1660.334 +    IMPORT_C void MoveBeforeSibling(TXmlEngNode aSiblingNode);
1660.335 +
1660.336 +    /**
1660.337 +     * Moves the node in the list of sibling nodes after another node
1660.338 +     * Node is expected to have a parent.
1660.339 +     * Do nothing if aSiblingNode is not one of the node's siblings
1660.340 +     *
1660.341 +     * @since S60 v3.1
1660.342 +	 * @param aSiblingNode Node that should be after current node 
1660.343 +     */    
1660.344 +    IMPORT_C void MoveAfterSibling(TXmlEngNode aSiblingNode);
1660.345 +
1660.346 +    /**
1660.347 +     * Moves the node to another part of the tree or another document
1660.348 +     * The node is unliked from current postion (if any) and appended
1660.349 +     * to the its new parent.
1660.350 +     *
1660.351 +     * @since S60 v3.1
1660.352 +     * @param aParent Parent node
1660.353 +     * @return Node handle
1660.354 +     *
1660.355 +     * @note 
1660.356 +     * In many cases this method call should be followed by ReconcileNamespacesL() on the moved node
1660.357 +     */
1660.358 +    inline  TXmlEngNode MoveTo(TXmlEngNode aParent);
1660.359 +
1660.360 +    /**
1660.361 +     * Detaches a node from document tree
1660.362 +     *
1660.363 +     * @since S60 v3.1
1660.364 +     * @return This node, which is already not a part of any document
1660.365 +     * @note    Remember to use ReconcileNamespacesL() later, if extracted node (subtree)
1660.366 +     *          contains references to namespace declarations outside of the subtree.
1660.367 +     * @see     ReconcileNamespacesL()
1660.368 +     * @note    The document, from which the is being unlinked, becomes an owner of the node
1660.369 +     *          until it is linked elsewhere.
1660.370 +     */
1660.371 +    IMPORT_C TXmlEngNode Unlink();
1660.372 +
1660.373 +    /**
1660.374 +     * Ensures that namespaces referred to in the node and its descendants are
1660.375 +     * in the scope the node.
1660.376 +     *
1660.377 +     * This method checks that all the namespaces declared within the given
1660.378 +     * tree are properly declared. This is needed for example after Copy or Unlink
1660.379 +     * and then Append operations. The subtree may still hold pointers to
1660.380 +     * namespace declarations outside the subtree or they may be invalid/masked. As much
1660.381 +     * as possible the function try to reuse the existing namespaces found in
1660.382 +     * the new environment. If not possible, the new namespaces are redeclared
1660.383 +     * on the top of the subtree.
1660.384 +     *
1660.385 +     * This method should be used after unlinking nodes and inserting to another
1660.386 +     * document tree or to a another part of the original tree, if some nodes of the subtree
1660.387 +     * are remove from the scope of a namespace declaration they refer to.
1660.388 +     *
1660.389 +     * When node is unlinked, it may still refer to namespace declarations from the previous location.
1660.390 +     * It is important to reconcile subtree's namespaces if previous parent tree is to be destroyed.
1660.391 +     * On the other hand, if the parent tree is not changed before pasting its unlinked part into another
1660.392 +     * tree, then reconciliation is needed only after paste operation.
1660.393 +     *
1660.394 +     * @since S60 v3.1
1660.395 +     */
1660.396 +    IMPORT_C void ReconcileNamespacesL();
1660.397 +
1660.398 +    /**
1660.399 +     * Unlinks the node and destroys it; all child nodes are destroyed as well and all memory is freed
1660.400 +     *
1660.401 +     * @note  Document nodes cannot be "removed" with this method, uses RXmlEngDocument-specific methods.
1660.402 +     *
1660.403 +     * @since S60 v3.1
1660.404 +     */
1660.405 +    IMPORT_C void Remove();
1660.406 +
1660.407 +    /**
1660.408 +     * Current node is replaced with another node (subtree).
1660.409 +     *
1660.410 +     * The replacement node is linked into document tree instead of this node.
1660.411 +     * The replaced node is destroyed.
1660.412 +     *
1660.413 +     * @since S60 v3.1
1660.414 +     * @param aNode Node that repleace current node
1660.415 +     *
1660.416 +     * @see SubstituteFor(TXmlEngNode)
1660.417 +     *
1660.418 +     * In both cases the argument node is unlinked from its previous location
1660.419 +     * (which can be NONE, i.e. not linked; SAME or ANOTHER document tree).
1660.420 +     *
1660.421 +     * @note Replacement of a node with NULL TXmlEngNode is legal and equivalent to removing the node.
1660.422 +     * @note Not applicable to document nodes
1660.423 +     */
1660.424 +    IMPORT_C void ReplaceWith(TXmlEngNode aNode);
1660.425 +
1660.426 +    /**
1660.427 +     * Another node is put instead of the current node.
1660.428 +     *
1660.429 +     * Does the same as ReplaceWith(TXmlEngNode) but does not free node and just returns it.
1660.430 +     *
1660.431 +     * @since S60 v3.1
1660.432 +     * @param aNode Node that repleace current node
1660.433 +     * @return Current node after unlinking it from document tree
1660.434 +     * @see ReplaceWith(TXmlEngNode)
1660.435 +     *
1660.436 +     * In both cases the argument node is unlinked from its previous location
1660.437 +     * (which can be NONE, i.e. not linked; SAME or ANOTHER document tree)
1660.438 +     *
1660.439 +     * It is possible to use NULL TXmlEngNode object as an argument. In such case
1660.440 +     * no new node will be put instead of unlinked one.
1660.441 +     *
1660.442 +     * @note Not applicable to document nodes
1660.443 +     */
1660.444 +    IMPORT_C TXmlEngNode SubstituteForL(TXmlEngNode aNode);
1660.445 +
1660.446 +    /**
1660.447 +     * Retrieves a "handle" for namespace declaration that applies to the node's namespace
1660.448 +     * Note: DOM specs do not consider namespace declarations as a kind of nodes
1660.449 +     * This API adds TXmlEngNamespace type of nodes, which is derived from TXmlEngNode.
1660.450 +     *
1660.451 +     * @since S60 v3.1
1660.452 +     * @return    Object that represents namespace declaration and prefix binding that
1660.453 +     *             act on the node; returns NULL object (check using TXmlEngNamespace.IsNull()
1660.454 +     *             or TXmlEngNamespace.NotNull()) if no namespace associated
1660.455 +     */
1660.456 +    IMPORT_C TXmlEngNamespace NamespaceDeclaration() const;
1660.457 +
1660.458 +    /**
1660.459 +     * Attaches a user data object to this node. The ownership of the object is transferred.
1660.460 +     * When the (underlying) node is deleted the Destroy method of the MXmlEngUserData class will be
1660.461 +     * called. If there already is a user data object associated with this node, it will be
1660.462 +     * deleted before attaching the new object.
1660.463 +     *
1660.464 +     * @since S60 v3.1
1660.465 +     * @param aData Pointer to the data object.
1660.466 +     * @return true if successful, false if for example underlying node type doesn't support
1660.467 +     * attaching user data.
1660.468 +     * @note Only TXmlEngElement and Attribute nodes currently support this feature.
1660.469 +     *             User data is not copied, when node is copied.
1660.470 +     */
1660.471 +    IMPORT_C TBool AddUserData(MXmlEngUserData* aData);
1660.472 +
1660.473 +    /**
1660.474 +     * Returns the user data object attached to this node. Ownership is not transferred.
1660.475 +     *
1660.476 +     * @since S60 v3.1
1660.477 +     * @return Pointer to data object or NULL if it doesn't exist.
1660.478 +     */
1660.479 +    IMPORT_C MXmlEngUserData* UserData() const;
1660.480 +
1660.481 +    /**
1660.482 +     * Removes the user data onject attached to this node. Ownership is transferred
1660.483 +     * (the object is not deleted).
1660.484 +     *
1660.485 +     * @since S60 v3.1
1660.486 +     * @return Pointer to data object or NULL if it doesn't exist.
1660.487 +     */
1660.488 +    IMPORT_C MXmlEngUserData* RemoveUserData();
1660.489 +
1660.490 +    /**
1660.491 +     * Clones the node completely: all attributes and namespace declarations (for TXmlEngElement nodes),
1660.492 +     * values and children nodes are copied as well.
1660.493 +     *
1660.494 +     * Document nodes cannot be copied with this method: RXmlEngDocument::CloneDocumentL() must be used.
1660.495 +     *
1660.496 +     * @since S60 v3.1
1660.497 +     * @return Complete copy of a node or leaves.
1660.498 +     * @note    The node should not be NULL!
1660.499 +     */
1660.500 +    IMPORT_C TXmlEngNode CopyL() const;
1660.501 +
1660.502 +    /**
1660.503 +     * Creates a deep copy of the node and appends the subtree as a new child
1660.504 +     * to the provided parent node.
1660.505 +     *
1660.506 +     * @since S60 v3.1
1660.507 +     * @return Created copy of the node after linking it into the target document tree.
1660.508 +     * @note Document nodes cannot be copied with this method; use RXmlEngDocument::CloneDocumentL()
1660.509 +     */
1660.510 +    IMPORT_C TXmlEngNode CopyToL(TXmlEngNode aParent) const;
1660.511 +
1660.512 +    /**
1660.513 +     * Append a child node.
1660.514 +     *
1660.515 +     * This is universal operation for any types of nodes.
1660.516 +     * Note, that some types of nodes cannot have children and
1660.517 +     * some types of nodes are not allowed to be children of some other types.
1660.518 +     *
1660.519 +     * @since S60 v3.1
1660.520 +     * @param aNewChild Child node that should be added
1660.521 +     * @return Appended node, which could changed as a result of adding it to
1660.522 +     * list of child nodes (e.g. text nodes can coalesce together)
1660.523 +     */
1660.524 +    IMPORT_C TXmlEngNode AppendChildL(TXmlEngNode aNewChild);
1660.525 +
1660.526 +    /**
1660.527 +     * Initializes a node list with all children of the node
1660.528 +     *
1660.529 +     * @since S60 v3.1
1660.530 +     * @param aList node list that should be initialized
1660.531 +     */
1660.532 +    IMPORT_C void GetChildNodes(RXmlEngNodeList<TXmlEngNode>& aList) const;
1660.533 +
1660.534 +    /**
1660.535 +     * Get parent node of current node.
1660.536 +     *
1660.537 +     * @since S60 v3.1
1660.538 +     * @return Parent node of the node or NULL if no parent
1660.539 +     */
1660.540 +    IMPORT_C TXmlEngNode ParentNode() const;
1660.541 +
1660.542 +    /**
1660.543 +     * Get first child of current node
1660.544 +     *
1660.545 +     * @since S60 v3.1
1660.546 +     * @return The first child node or NULL if no children
1660.547 +     */
1660.548 +    IMPORT_C TXmlEngNode FirstChild() const;
1660.549 +
1660.550 +    /**
1660.551 +     * Get last child of current node
1660.552 +     *
1660.553 +     * @since S60 v3.1
1660.554 +     * @return The last child node or NULL if no children
1660.555 +     */
1660.556 +    IMPORT_C TXmlEngNode LastChild() const;
1660.557 +
1660.558 +    /**
1660.559 +     * Get previous node of current node
1660.560 +     *
1660.561 +     * @since S60 v3.1
1660.562 +     * @return Previous node in a child list or NULL if no sibling before
1660.563 +     */
1660.564 +    IMPORT_C TXmlEngNode PreviousSibling() const;
1660.565 +
1660.566 +    /**
1660.567 +     * Get fallowing node of current node
1660.568 +     *
1660.569 +     * @since S60 v3.1
1660.570 +     * @return Following node in a child list or NULL if no sibling after
1660.571 +     */
1660.572 +    IMPORT_C TXmlEngNode NextSibling() const;
1660.573 +
1660.574 +    /**
1660.575 +     * Get document handle
1660.576 +     *
1660.577 +     * @since S60 v3.1
1660.578 +     * @return A document node of the DOM tree this node belongs to
1660.579 +     *
1660.580 +     * @note An instance of RXmlEngDocument class returns itself
1660.581 +     */
1660.582 +    IMPORT_C RXmlEngDocument OwnerDocument() const;
1660.583 +
1660.584 +    /**
1660.585 +     * Fetches value of this node, depending on its type.
1660.586 +     *
1660.587 +     * @note It is better to always cast nodes to specific type and then use specific
1660.588 +     *       method for getting "node value"
1660.589 +     *
1660.590 +     * @since S60 v3.1
1660.591 +     * @return Node value
1660.592 +     */
1660.593 +    IMPORT_C TPtrC8 Value() const;
1660.594 +
1660.595 +    /**
1660.596 +     * Get copy of node's text content
1660.597 +     * What is returned depends on the node type.
1660.598 +     * Method caller is responsible for freeing returned string.
1660.599 +     *
1660.600 +     * @since S60 v3.1
1660.601 +     * @return   the content of the node
1660.602 +     */
1660.603 +    IMPORT_C void WholeTextContentsCopyL(RBuf8& aOutput) const;
1660.604 +
1660.605 +    /**
1660.606 +     * Sets value of this node.
1660.607 +     *
1660.608 +     * @since S60 v3.1
1660.609 +     * @param aValue New value
1660.610 +     */
1660.611 +    IMPORT_C void SetValueL(const TDesC8& aValue);
1660.612 +
1660.613 +    /**
1660.614 +     * Check if node content is "simple text".
1660.615 +     *
1660.616 +     * @since S60 v3.1
1660.617 +     * @return Whether the value of the node is presented by only one TXmlEngTextNode node
1660.618 +     *
1660.619 +     * If the value is <i>"simple text"</i> then it is possible to access it as TDOMString
1660.620 +     * without making copy, which combines values of all text nodes and entity reference nodes.
1660.621 +     *
1660.622 +     * @see TXmlEngNode::Value(), TXmlEngAttr::Value(), TXmlEngElement::Text()
1660.623 +     *
1660.624 +     * This method is applicable to TXmlEngElement and TXmlEngAttr nodes. On other nodes FALSE is returned.
1660.625 +     *
1660.626 +     * @note
1660.627 +     *  Values (contents) of TXmlEngComment, TXmlEngCDATASection, TXmlEngTextNode, ProcessingInstuction data are
1660.628 +     *  always "simple".
1660.629 +     *
1660.630 +     * When the returned result is FALSE, getting value of the node would not returned
1660.631 +     * whole contents because of either entity references present in the contents or
1660.632 +     * the contents is mixed (for TXmlEngElement node). In this case WholeTextContentsCopyL()
1660.633 +     * should be used.
1660.634 +     *
1660.635 +     * @see TXmlEngNode::WholeTextContentsCopyL()
1660.636 +     */
1660.637 +    IMPORT_C TBool IsSimpleTextContents() const;
1660.638 +
1660.639 +    /**
1660.640 +     * Use NodeType() to find out the type of the node prior to casting object
1660.641 +     * of TXmlEngNode class to one of its derived subclasses (TXmlEngElement, TXmlEngAttr, TXmlEngTextNode, etc.)
1660.642 +     *
1660.643 +     * @since S60 v3.1
1660.644 +     * @return Type of the node
1660.645 +     *
1660.646 +     * @see TXmlEngDOMNodeType
1660.647 +     */
1660.648 +    IMPORT_C TXmlEngDOMNodeType NodeType() const;
1660.649 +
1660.650 +    /**
1660.651 +     * Get node name
1660.652 +     *
1660.653 +     * @since S60 v3.1
1660.654 +     * @return Name of the node
1660.655 +     *
1660.656 +     * This method generally follows DOM spec :
1660.657 +     * -------------------------------------------------------------------------------
1660.658 +     * The values of nodeName, nodeValue, and attributes vary according to the node
1660.659 +     * type as follows:
1660.660 +     *
1660.661 +     * interface              nodeName                nodeValue            attributes
1660.662 +     * -------------------------------------------------------------------------------
1660.663 +     * Attr                   = Attr.name              = Attr.value             = null
1660.664 +     * CDATASection           = "#cdata-section"       = CharacterData.data     = null
1660.665 +     * Comment                = "#comment"             = CharacterData.data     = null
1660.666 +     * Document               = "#document"            = null                   = null
1660.667 +     * DocumentFragment       = "#document-fragment"   = null                   = null
1660.668 +     * DocumentType           = DocumentType.name      = null                   = null
1660.669 +     * Element                = Element.tagName        = null           = NamedNodeMap
1660.670 +     * Entity                 = entity name            = null                   = null
1660.671 +     * EntityReference        = name of entity referenced  = null               = null
1660.672 +     * Notation               = notation name          = null                   = null
1660.673 +     * ProcessingInstruction  = target                 = data                   = null
1660.674 +     * Text                   = "#text"                = CharacterData.data     = null
1660.675 +     * -------------------------------------------------------------------------------
1660.676 +     */
1660.677 +    IMPORT_C TPtrC8 Name() const;
1660.678 +
1660.679 +
1660.680 +    /**
1660.681 +     * Check if node has child nodes.
1660.682 +     *
1660.683 +     * @since S60 v3.1
1660.684 +     * @return True if the node is TXmlEngElement and has at least one child node
1660.685 +     */
1660.686 +    IMPORT_C TBool HasChildNodes() const;
1660.687 +
1660.688 +    /**
1660.689 +     * Check if node has attributes.
1660.690 +     *
1660.691 +     * @since S60 v3.1
1660.692 +     * @return True if the node is TXmlEngElement and has at least one attribute
1660.693 +     *
1660.694 +     * @note Namespace-to-prefix bindings are not attributes.
1660.695 +     */
1660.696 +    IMPORT_C TBool HasAttributes() const;
1660.697 +
1660.698 +    /**
1660.699 +     * Evaluates active base URI for the node by processing xml:base attributes of parents
1660.700 +     *
1660.701 +     * @since S60 v3.1
1660.702 +     * @return A copy of effective base URI for the node
1660.703 +     * @note It's up to the caller to free the string
1660.704 +     */
1660.705 +    IMPORT_C void BaseUriL(RBuf8& aBaseUri) const;
1660.706 +
1660.707 +    /**
1660.708 +     * Compares nodes.
1660.709 +     *
1660.710 +     * The nodes are the same if they are referring to the same in-memory
1660.711 +     * data structure.
1660.712 +     *
1660.713 +     * @since S60 v3.1
1660.714 +     * @param aOther Node to compare
1660.715 +     * @return TRUE if the same
1660.716 +     */
1660.717 +    inline TBool IsSameNode(TXmlEngNode aOther) const;
1660.718 +
1660.719 +    /**
1660.720 +     * Get namespace uri.
1660.721 +     *
1660.722 +     * @since S60 v3.1
1660.723 +     * @return  Namespace URI of a node
1660.724 +     *           - NULL is returned for elements and attributes that do not
1660.725 +     *             belong to any namespace.
1660.726 +     *           - bound namespace URI is returned for namespace declaration nodes (instances of TXmlEngNamespace).
1660.727 +     *           - NULL is returned to all other types of node.
1660.728 +     *
1660.729 +     * @note use IsNull() and NotNull() for testing returned result on the subject
1660.730 +     *      of having some URI
1660.731 +     */
1660.732 +    IMPORT_C TPtrC8 NamespaceUri() const;
1660.733 +
1660.734 +    /**
1660.735 +     * Get namespace prefix.
1660.736 +     *
1660.737 +     * @since S60 v3.1
1660.738 +     * @return  Prefix of a node
1660.739 +     * Returns NULL for elements and attributes that do not have prefix
1660.740 +     * (node belongs to the default namespace or does not belong to any namespace)
1660.741 +     * NULL is also returned for all types of node other than TXmlEngElement or TXmlEngAttr
1660.742 +     */
1660.743 +    IMPORT_C TPtrC8 Prefix() const;
1660.744 +
1660.745 +    /**
1660.746 +     * Check if nemespace is default for this node
1660.747 +     *
1660.748 +     * @since S60 v3.1
1660.749 +     * @param aNamespaceUri Namespace URI
1660.750 +     * @return True if given namespace URI is a default one for the node (applicable to elements only)
1660.751 +     *
1660.752 +     * @note "" or NULL can be used to denote undefined namespace
1660.753 +     */
1660.754 +    IMPORT_C TBool IsDefaultNamespaceL(const TDesC8& aNamespaceUri) const;
1660.755 +
1660.756 +    /**
1660.757 +     * Searches the prefix that is bound to the given aNamespaceUri and
1660.758 +     * applicable in the scope of this TXmlEngNode.
1660.759 +     *
1660.760 +     * @since S60 v3.1
1660.761 +     * @param aNamespaceUri Namespace Uri that should be found
1660.762 +     * @return A sought prefix or NULL if not found or aNamespaceUri is the default namespace
1660.763 +     *
1660.764 +     * @see TXmlEngElement::LookupNamespaceByUriL(const TDesC8&)
1660.765 +     */
1660.766 +    IMPORT_C TPtrC8 LookupPrefixL(const TDesC8& aNamespaceUri) const;
1660.767 +
1660.768 +    /**
1660.769 +     * Searches the namespace URI that is bound to the given prefix.
1660.770 +     * 
1660.771 +     * @since S60 v3.1
1660.772 +     * @param aPrefix Namespace prefix that should be found
1660.773 +     * @return A sought URI or NULL if the prefix is not bound
1660.774 +     *
1660.775 +     * @see TXmlEngElement::LookupNamespaceByPrefixL(const TDesC8&)
1660.776 +     */
1660.777 +    IMPORT_C TPtrC8 LookupNamespaceUriL(const TDesC8& aPrefix) const;
1660.778 +
1660.779 +protected:
1660.780 +    /**
1660.781 +     * Unlinks the internal libxml2's node from double-linked list.
1660.782 +     * Relinks neighbour nodes.The node stays virtually linked to its old neighbours! Use with care!!
1660.783 +     *
1660.784 +     * No checks are made; nor parent's, nor node's properties updated
1660.785 +     *
1660.786 +     * @since S60 v3.1
1660.787 +     */
1660.788 +    void DoUnlinkNode();
1660.789 +
1660.790 +    /**
1660.791 +     * Inserts the node in a double-linked list of nodes before specified node.
1660.792 +     *
1660.793 +     * No checks are made; nor parent's, nor node's properties updated (except prev/next)
1660.794 +     *
1660.795 +     * @since S60 v3.1
1660.796 +     * @param aNode Target node
1660.797 +     */
1660.798 +    void LinkBefore(TXmlEngNode aNode);
1660.799 +
1660.800 +protected:
1660.801 +	/** Node pointer */
1660.802 +    void* iInternal;
1660.803 +
1660.804 +};
1660.805 +
1660.806 +#include "xmlengnode.inl"
1660.807 +
1660.808 +#endif /* XMLENGINE_NODE_H_INCLUDED */
  1661.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1661.2 +++ b/epoc32/include/xml/dom/xmlengnode.inl	Wed Mar 31 12:27:01 2010 +0100
  1661.3 @@ -0,0 +1,94 @@
  1661.4 +/*
  1661.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1661.6 +* All rights reserved.
  1661.7 +* This component and the accompanying materials are made available
  1661.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1661.9 +* which accompanies this distribution, and is available
 1661.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1661.11 +*
 1661.12 +* Initial Contributors:
 1661.13 +* Nokia Corporation - initial contribution.
 1661.14 +*
 1661.15 +* Contributors:
 1661.16 +*
 1661.17 +* Description:       Node functions implementation
 1661.18 +*
 1661.19 +*/
 1661.20 +
 1661.21 +
 1661.22 +
 1661.23 +
 1661.24 +
 1661.25 +
 1661.26 +
 1661.27 +inline TXmlEngNode::TXmlEngNode()
 1661.28 +        : iInternal(NULL) {}
 1661.29 +
 1661.30 +inline TXmlEngNode::TXmlEngNode(void* aInternal)
 1661.31 +        : iInternal(aInternal) {}
 1661.32 +
 1661.33 +inline TBool TXmlEngNode::IsNull() const
 1661.34 +    {return iInternal == NULL;}
 1661.35 +
 1661.36 +inline TBool TXmlEngNode::NotNull() const
 1661.37 +    {return iInternal != NULL;}
 1661.38 +
 1661.39 +// ------------------------------------------------------------------------
 1661.40 +// Compares nodes.
 1661.41 +//
 1661.42 +// The nodes are the same if they are referring to the same in-memory
 1661.43 +// data structure. 
 1661.44 +// ------------------------------------------------------------------------
 1661.45 +//
 1661.46 +inline TBool TXmlEngNode::IsSameNode(TXmlEngNode aOther) const
 1661.47 +    {return iInternal == aOther.iInternal;}
 1661.48 +
 1661.49 +// ------------------------------------------------------------------------
 1661.50 +// Moves the node to another part of the tree or another document
 1661.51 +// The node is unliked from current postion (if any) and appended
 1661.52 +// to the its new parent.
 1661.53 +//
 1661.54 +// @note 
 1661.55 +// In many cases this method call should be followed by ReconcileNamespacesL() on the moved node
 1661.56 +// ------------------------------------------------------------------------
 1661.57 +//
 1661.58 +inline TXmlEngNode TXmlEngNode::MoveTo(TXmlEngNode aParent)
 1661.59 +    {return aParent.AppendChildL(Unlink());}
 1661.60 +
 1661.61 +inline TXmlEngAttr& TXmlEngNode::AsAttr() const                    
 1661.62 +    {return *reinterpret_cast<TXmlEngAttr*>(const_cast<TXmlEngNode*>(this));}
 1661.63 +
 1661.64 +inline TXmlEngElement&     TXmlEngNode::AsElement() const                    
 1661.65 +    {return *reinterpret_cast<TXmlEngElement*>(const_cast<TXmlEngNode*>(this));}
 1661.66 +
 1661.67 +inline TXmlEngTextNode& TXmlEngNode::AsText() const    
 1661.68 +    {return *reinterpret_cast<TXmlEngTextNode*>(const_cast<TXmlEngNode*>(this));}
 1661.69 +
 1661.70 +inline TXmlEngBinaryContainer& TXmlEngNode::AsBinaryContainer() const    
 1661.71 +    {return *reinterpret_cast<TXmlEngBinaryContainer*>(const_cast<TXmlEngNode*>(this));}
 1661.72 +
 1661.73 +inline TXmlEngChunkContainer& TXmlEngNode::AsChunkContainer() const    
 1661.74 +    {return *reinterpret_cast<TXmlEngChunkContainer*>(const_cast<TXmlEngNode*>(this));}   
 1661.75 +
 1661.76 +inline TXmlEngFileContainer& TXmlEngNode::AsFileContainer() const    
 1661.77 +    {return *reinterpret_cast<TXmlEngFileContainer*>(const_cast<TXmlEngNode*>(this));} 
 1661.78 +
 1661.79 +inline TXmlEngDataContainer& TXmlEngNode::AsDataContainer() const    
 1661.80 +    {return *reinterpret_cast<TXmlEngDataContainer*>(const_cast<TXmlEngNode*>(this));}      
 1661.81 +
 1661.82 +inline TXmlEngNamespace& TXmlEngNode::AsNamespace() const
 1661.83 +    {return *reinterpret_cast<TXmlEngNamespace*>(const_cast<TXmlEngNode*>(this));}
 1661.84 +
 1661.85 +inline TXmlEngComment& TXmlEngNode::AsComment() const        
 1661.86 +    {return *reinterpret_cast<TXmlEngComment*>(const_cast<TXmlEngNode*>(this));}
 1661.87 +
 1661.88 +inline TXmlEngCDATASection& TXmlEngNode::AsCDATASection()    const
 1661.89 +    {return *reinterpret_cast<TXmlEngCDATASection*>(const_cast<TXmlEngNode*>(this));}
 1661.90 +
 1661.91 +
 1661.92 +inline TXmlEngEntityReference& TXmlEngNode::AsEntityReference() const
 1661.93 +    {return *reinterpret_cast<TXmlEngEntityReference*>(const_cast<TXmlEngNode*>(this));}
 1661.94 +
 1661.95 +inline TXmlEngProcessingInstruction& TXmlEngNode::AsProcessingInstruction() const
 1661.96 +    {return *reinterpret_cast<TXmlEngProcessingInstruction*>(const_cast<TXmlEngNode*>(this));}
 1661.97 +
  1662.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1662.2 +++ b/epoc32/include/xml/dom/xmlengnodefilter.h	Wed Mar 31 12:27:01 2010 +0100
  1662.3 @@ -0,0 +1,63 @@
  1662.4 +/*
  1662.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1662.6 +* All rights reserved.
  1662.7 +* This component and the accompanying materials are made available
  1662.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1662.9 +* which accompanies this distribution, and is available
 1662.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1662.11 +*
 1662.12 +* Initial Contributors:
 1662.13 +* Nokia Corporation - initial contribution.
 1662.14 +*
 1662.15 +* Contributors:
 1662.16 +*
 1662.17 +* Description:       Node filter interface
 1662.18 +*
 1662.19 +*/
 1662.20 +
 1662.21 +
 1662.22 +
 1662.23 +
 1662.24 +
 1662.25 +
 1662.26 +
 1662.27 +#ifndef XMLENGINE_NODEFILTER_H_INCLUDED
 1662.28 +#define XMLENGINE_NODEFILTER_H_INCLUDED
 1662.29 +
 1662.30 +#include <e32base.h>
 1662.31 +
 1662.32 +class TXmlEngNode;
 1662.33 +
 1662.34 +/** 
 1662.35 + * Results that can be returned by node filter
 1662.36 + */
 1662.37 +enum TXmlEngNodeFilterResult
 1662.38 +    {
 1662.39 +    EAccept = 1,
 1662.40 +    EReject = 2,
 1662.41 +    ESkip = 3,
 1662.42 +    ESkipContents = 4  /** non-standard feature */
 1662.43 +    }; 
 1662.44 +
 1662.45 +/** 
 1662.46 + * Interface of nodes filter class
 1662.47 + *
 1662.48 + * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/traversal.html#Traversal-NodeFilter
 1662.49 + *
 1662.50 + * @since S60 v3.1
 1662.51 + */
 1662.52 +class MXmlEngNodeFilter
 1662.53 +    {
 1662.54 +public:
 1662.55 +    /** 
 1662.56 +     * Check if node is accepted.
 1662.57 +     *
 1662.58 +     * @since S60 v3.1
 1662.59 +     * @param aNode Node to check
 1662.60 +     * @return Node filter result
 1662.61 +     */ 
 1662.62 +    virtual TXmlEngNodeFilterResult AcceptNode(TXmlEngNode aNode) = 0;    
 1662.63 +    };
 1662.64 +
 1662.65 +
 1662.66 +#endif /* XMLENGINE_NODEFILTER_H_INCLUDED */  
  1663.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1663.2 +++ b/epoc32/include/xml/dom/xmlengnodelist.h	Wed Mar 31 12:27:01 2010 +0100
  1663.3 @@ -0,0 +1,131 @@
  1663.4 +/*
  1663.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1663.6 +* All rights reserved.
  1663.7 +* This component and the accompanying materials are made available
  1663.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1663.9 +* which accompanies this distribution, and is available
 1663.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1663.11 +*
 1663.12 +* Initial Contributors:
 1663.13 +* Nokia Corporation - initial contribution.
 1663.14 +*
 1663.15 +* Contributors:
 1663.16 +*
 1663.17 +* Description:       Node list inline functions
 1663.18 +*
 1663.19 +*/
 1663.20 +
 1663.21 +
 1663.22 +
 1663.23 +
 1663.24 +
 1663.25 +
 1663.26 +
 1663.27 +#ifndef XMLENGINE_NODELIST_H_INCLUDED
 1663.28 +#define XMLENGINE_NODELIST_H_INCLUDED
 1663.29 +
 1663.30 +#include "xmlengnode.h"
 1663.31 +#include "xmlengnodelist_impl.h"
 1663.32 +
 1663.33 +
 1663.34 +
 1663.35 +/**
 1663.36 + * Template implements list container.
 1663.37 + *
 1663.38 + * List may contain different types of nodes.
 1663.39 + * Node pointer is casted to specify node type when
 1663.40 + * is returned by Next() method.
 1663.41 + *
 1663.42 + * @lib XmlEngineDOM.lib
 1663.43 + * @since S60 v3.2
 1663.44 + */
 1663.45 +template<class T> 
 1663.46 +class RXmlEngNodeList
 1663.47 +{
 1663.48 +public:
 1663.49 +    /**
 1663.50 +     * Get list length.
 1663.51 +     *
 1663.52 +     * @since S60 v3.2
 1663.53 +     * @return Number of nodes in a node list
 1663.54 +     */
 1663.55 +	inline TInt Count() const;
 1663.56 +
 1663.57 +    /**
 1663.58 +     * Checks whether next node exists in a node list
 1663.59 +     *
 1663.60 +     * @since S60 v3.2
 1663.61 +     * @return TRUE if next node exists, FALSE otherwise
 1663.62 +     */
 1663.63 +	inline TBool HasNext() const;
 1663.64 +
 1663.65 +    /**
 1663.66 +     * Retrieves next node from a node list
 1663.67 +     *
 1663.68 +     * @since S60 v3.2
 1663.69 +     * @return Next node 
 1663.70 +     */
 1663.71 +	inline T Next();
 1663.72 +
 1663.73 +    /**
 1663.74 +     * Closes a node list
 1663.75 +     *
 1663.76 +     * @since S60 v3.2
 1663.77 +     */
 1663.78 +	inline void Close();
 1663.79 +
 1663.80 +private:
 1663.81 +    friend class TXmlEngNode;
 1663.82 +    friend class TXmlEngElement;
 1663.83 +
 1663.84 +    /*
 1663.85 +     * Opens node.
 1663.86 +     *
 1663.87 +     * @since S60 v3.2
 1663.88 +     * @param aHead node pointer to the node from which the searching 
 1663.89 +            of list elements is started
 1663.90 +     * @param aType type of list elements
 1663.91 +     * @param aName name of list elements 
 1663.92 +     * @param aNs namespace of list elements
 1663.93 +     *
 1663.94 +     * @note If aType is NULL, aName and aNs are ignored
 1663.95 +     */
 1663.96 +    void OpenL( 
 1663.97 +			void* aHead,
 1663.98 +			TXmlEngNode::TXmlEngDOMNodeType aType,
 1663.99 +			const TDesC8&	aName = KNullDesC8,
1663.100 +			const TDesC8&	aNs = KNullDesC8);
1663.101 +
1663.102 +    /** 
1663.103 +     * Opens node.
1663.104 +     *
1663.105 +     * @since S60 v3.2
1663.106 +     * @param aHead node pointer to the node from which the searching 
1663.107 +            of list elements is started
1663.108 +     * @param aType type of list elements
1663.109 +     */
1663.110 +    void Open( 
1663.111 +			void* aHead,
1663.112 +			TXmlEngNode::TXmlEngDOMNodeType aType);
1663.113 +
1663.114 +    /** List with nodes */
1663.115 +	RXmlEngNodeListImpl iList;
1663.116 +};
1663.117 +
1663.118 +/**
1663.119 + * Template implements list container for nodes.
1663.120 + *
1663.121 + * Specialization for trivial case: list of TXmlEngNode objects
1663.122 + * No "thin wrapper" pattern needed, operate directly on NodeListImpl
1663.123 + *
1663.124 + * @lib XmlEngineDOM.lib
1663.125 + * @since S60 v3.1
1663.126 + */
1663.127 +template<>
1663.128 +class RXmlEngNodeList<TXmlEngNode>: public RXmlEngNodeListImpl {};
1663.129 +
1663.130 +
1663.131 +
1663.132 +#include "xmlengnodelist.inl"
1663.133 +
1663.134 +#endif /* XMLENGINE_NODELIST_H_INCLUDED */
  1664.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1664.2 +++ b/epoc32/include/xml/dom/xmlengnodelist.inl	Wed Mar 31 12:27:01 2010 +0100
  1664.3 @@ -0,0 +1,86 @@
  1664.4 +/*
  1664.5 +* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1664.6 +* All rights reserved.
  1664.7 +* This component and the accompanying materials are made available
  1664.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1664.9 +* which accompanies this distribution, and is available
 1664.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1664.11 +*
 1664.12 +* Initial Contributors:
 1664.13 +* Nokia Corporation - initial contribution.
 1664.14 +*
 1664.15 +* Contributors:
 1664.16 +*
 1664.17 +* Description:       Node list inline functions
 1664.18 +*
 1664.19 +*/
 1664.20 +
 1664.21 +
 1664.22 +
 1664.23 +
 1664.24 +
 1664.25 +
 1664.26 +
 1664.27 +
 1664.28 +
 1664.29 +// -----------------------------------------------------------------------------
 1664.30 +// Retrieves number of items in node list
 1664.31 +// -----------------------------------------------------------------------------
 1664.32 +//
 1664.33 +template<class T> inline TInt RXmlEngNodeList<T>::Count() const
 1664.34 +    {
 1664.35 +    return iList.Count();
 1664.36 +    }
 1664.37 +    
 1664.38 +// -----------------------------------------------------------------------------
 1664.39 +// Returns true if this node has next sibling, false otherwise.
 1664.40 +// -----------------------------------------------------------------------------
 1664.41 +//
 1664.42 +template<class T> inline TBool RXmlEngNodeList<T>::HasNext() const
 1664.43 +    {
 1664.44 +    return iList.HasNext();
 1664.45 +    }    
 1664.46 +
 1664.47 +// -----------------------------------------------------------------------------
 1664.48 +// Retrieves next node
 1664.49 +// -----------------------------------------------------------------------------
 1664.50 +//
 1664.51 +template<class T> inline T RXmlEngNodeList<T>::Next()
 1664.52 +    {
 1664.53 +    TXmlEngNode t = iList.Next(); 
 1664.54 +    return *(static_cast<T*>(&t));
 1664.55 +    }
 1664.56 +
 1664.57 +// -----------------------------------------------------------------------------
 1664.58 +// Closes node list
 1664.59 +// -----------------------------------------------------------------------------
 1664.60 +//
 1664.61 +template<class T> inline void RXmlEngNodeList<T>::Close()
 1664.62 +    {
 1664.63 +    iList.Close();
 1664.64 +    }
 1664.65 +
 1664.66 +// -----------------------------------------------------------------------------
 1664.67 +// Opens node list
 1664.68 +// -----------------------------------------------------------------------------
 1664.69 +//
 1664.70 +template<class T> inline void RXmlEngNodeList<T>::OpenL( 
 1664.71 +			void* aHead,
 1664.72 +			TXmlEngNode::TXmlEngDOMNodeType aType,
 1664.73 +			const TDesC8&	aName,
 1664.74 +			const TDesC8&	aNs) 
 1664.75 +    {
 1664.76 +    iList.OpenL(aHead, aType, aName, aNs);    
 1664.77 +    }
 1664.78 +
 1664.79 +// -----------------------------------------------------------------------------
 1664.80 +// Opens node list
 1664.81 +// -----------------------------------------------------------------------------
 1664.82 +//
 1664.83 +template<class T> inline void RXmlEngNodeList<T>::Open( 
 1664.84 +			void* aHead,
 1664.85 +			TXmlEngNode::TXmlEngDOMNodeType aType)
 1664.86 +    {
 1664.87 +    iList.Open(aHead, aType);    
 1664.88 +    }
 1664.89 +
  1665.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1665.2 +++ b/epoc32/include/xml/dom/xmlengnodelist_impl.h	Wed Mar 31 12:27:01 2010 +0100
  1665.3 @@ -0,0 +1,122 @@
  1665.4 +/*
  1665.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1665.6 +* All rights reserved.
  1665.7 +* This component and the accompanying materials are made available
  1665.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1665.9 +* which accompanies this distribution, and is available
 1665.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1665.11 +*
 1665.12 +* Initial Contributors:
 1665.13 +* Nokia Corporation - initial contribution.
 1665.14 +*
 1665.15 +* Contributors:
 1665.16 +*
 1665.17 +* Description:       Node list implementation functions
 1665.18 +*
 1665.19 +*/
 1665.20 +
 1665.21 +
 1665.22 +
 1665.23 +
 1665.24 +
 1665.25 +
 1665.26 +
 1665.27 +#ifndef XMLENGINE_NODELIST_IMPL_H_INCLUDED
 1665.28 +#define XMLENGINE_NODELIST_IMPL_H_INCLUDED
 1665.29 +
 1665.30 +#include <e32def.h>
 1665.31 +#include "xmlengnode.h"
 1665.32 +
 1665.33 +/** 
 1665.34 + * Class implements list container.
 1665.35 + * 
 1665.36 + * @lib XmlEngineDOM.lib
 1665.37 + * @since S60 v3.2
 1665.38 + */
 1665.39 +class RXmlEngNodeListImpl
 1665.40 +{
 1665.41 +public:
 1665.42 +
 1665.43 +    /**
 1665.44 +     *  Default constructor
 1665.45 +     *
 1665.46 +     * @since S60 v3.2
 1665.47 +     */
 1665.48 +    IMPORT_C RXmlEngNodeListImpl();
 1665.49 +
 1665.50 +    /** 
 1665.51 +     * Closes node list
 1665.52 +     *
 1665.53 +     * @since S60 v3.2
 1665.54 +     */
 1665.55 +    IMPORT_C void Close();
 1665.56 +
 1665.57 +    /** 
 1665.58 +     * Get list length.
 1665.59 +     *
 1665.60 +     * @since S60 v3.2
 1665.61 +     * @return Number of nodes in a node list
 1665.62 +     */
 1665.63 +    IMPORT_C TInt  Count() const;
 1665.64 +
 1665.65 +    /** 
 1665.66 +     * Checks whether next node exists in a node list
 1665.67 +     *
 1665.68 +     * @since S60 v3.2
 1665.69 +     * @return TRUE if next node exists, FALSE otherwise
 1665.70 +     */
 1665.71 +    IMPORT_C TBool HasNext() const;
 1665.72 +
 1665.73 +    /** 
 1665.74 +     * Retrieves next node from a node list
 1665.75 +     *
 1665.76 +     * @since S60 v3.2
 1665.77 +     * @return Next node 
 1665.78 +     */
 1665.79 +    IMPORT_C TXmlEngNode Next();
 1665.80 +
 1665.81 +    /** 
 1665.82 +     * Opens node.
 1665.83 +     *
 1665.84 +     * @since S60 v3.2
 1665.85 +     * @param aHead node pointer to the node from which the searching 
 1665.86 +            of list elements is started
 1665.87 +     * @param aType type of list elements
 1665.88 +     * @param aName name of list elements 
 1665.89 +     * @param aNs namespace of list elements
 1665.90 +     *
 1665.91 +     * @note If aType is NULL, aName and aNs are ignored
 1665.92 +     */
 1665.93 +    void OpenL( 
 1665.94 +			void* aHead,
 1665.95 +			TXmlEngNode::TXmlEngDOMNodeType aType,
 1665.96 +			const TDesC8&	aName = KNullDesC8,
 1665.97 +			const TDesC8&	aNs = KNullDesC8);
 1665.98 +
 1665.99 +    /** 
1665.100 +     * Opens node.
1665.101 +     *
1665.102 +     * @since S60 v3.2
1665.103 +     * @param aHead node pointer to the node from which the searching 
1665.104 +            of list elements is started
1665.105 +     * @param aType type of list elements
1665.106 +     */
1665.107 +    void Open( 
1665.108 +			void* aHead,
1665.109 +			TXmlEngNode::TXmlEngDOMNodeType aType);
1665.110 +
1665.111 +private:
1665.112 +
1665.113 +    void* FindNextNode(void* aCurrentNode) const;
1665.114 +
1665.115 +    void*	        iCurrentNode;
1665.116 +	TInt		    iType;  // NodeType:4 bits (0-3) & MatchName flag (bit 4)
1665.117 +	unsigned char*	iName;
1665.118 +	unsigned char*	iNsUri;
1665.119 +};
1665.120 +
1665.121 +TBool StrEqualOrNull(const void* aStr1, const void* aStr2);
1665.122 +			
1665.123 +
1665.124 +
1665.125 +#endif /* XMLENGINE_NODELIST_IMPL_H_INCLUDED */
  1666.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1666.2 +++ b/epoc32/include/xml/dom/xmlengoutputstream.h	Wed Mar 31 12:27:01 2010 +0100
  1666.3 @@ -0,0 +1,64 @@
  1666.4 +/*
  1666.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1666.6 +* All rights reserved.
  1666.7 +* This component and the accompanying materials are made available
  1666.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1666.9 +* which accompanies this distribution, and is available
 1666.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1666.11 +*
 1666.12 +* Initial Contributors:
 1666.13 +* Nokia Corporation - initial contribution.
 1666.14 +*
 1666.15 +* Contributors:
 1666.16 +*
 1666.17 +* Description:       Interface class describing class that may be used as
 1666.18 +*                 output stream for dom tree
 1666.19 +*
 1666.20 +*/
 1666.21 +
 1666.22 +
 1666.23 +
 1666.24 +
 1666.25 +
 1666.26 +
 1666.27 +
 1666.28 +#ifndef XMLENGINE_MOUTPUTSTREAM_H_INCLUDED
 1666.29 +#define XMLENGINE_MOUTPUTSTREAM_H_INCLUDED
 1666.30 +
 1666.31 +#include <e32base.h>
 1666.32 +
 1666.33 +
 1666.34 +
 1666.35 +/**
 1666.36 + * MXmlEngOutputStream is used by XML Engine to write serialized XML data
 1666.37 + * to stream. This interface should be implemented by client application
 1666.38 + * when RXmlEngDocument::SaveL() method is used to serialize xml data to stream.
 1666.39 + *
 1666.40 + * @lib XmlEngineDOM.lib
 1666.41 + * @since S60 v3.1
 1666.42 + */
 1666.43 +class MXmlEngOutputStream
 1666.44 +    {
 1666.45 +public:
 1666.46 +    /**
 1666.47 +     * Callback for writing a buffer with data to output stream
 1666.48 +     *
 1666.49 +     * @since S60 v3.1
 1666.50 +     * @return number of bytes written or -1 in case of error
 1666.51 +     */
 1666.52 +    virtual TInt Write(const TDesC8& aBuffer) = 0;
 1666.53 +
 1666.54 +    /**
 1666.55 +     * Callback for closing output stream
 1666.56 +     *
 1666.57 +     * @since S60 v3.1
 1666.58 +     * @return 
 1666.59 +     *       0 is succeeded, 
 1666.60 +     *      -1 in case of error
 1666.61 +     */
 1666.62 +    virtual TInt Close() = 0;
 1666.63 +    };
 1666.64 +
 1666.65 +
 1666.66 +
 1666.67 +#endif /* XMLENGINE_MOUTPUTSTREAM_H_INCLUDED */  
  1667.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1667.2 +++ b/epoc32/include/xml/dom/xmlengprocessinginstruction.h	Wed Mar 31 12:27:01 2010 +0100
  1667.3 @@ -0,0 +1,96 @@
  1667.4 +/*
  1667.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1667.6 +* All rights reserved.
  1667.7 +* This component and the accompanying materials are made available
  1667.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1667.9 +* which accompanies this distribution, and is available
 1667.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1667.11 +*
 1667.12 +* Initial Contributors:
 1667.13 +* Nokia Corporation - initial contribution.
 1667.14 +*
 1667.15 +* Contributors:
 1667.16 +*
 1667.17 +* Description:       Processing instruction node functions
 1667.18 +*
 1667.19 +*/
 1667.20 +
 1667.21 +
 1667.22 +
 1667.23 +
 1667.24 +
 1667.25 +
 1667.26 +
 1667.27 +#ifndef XMLENGINE_PROCESSINGINSTRUCTION_H_INCLUDED
 1667.28 +#define XMLENGINE_PROCESSINGINSTRUCTION_H_INCLUDED
 1667.29 +
 1667.30 +#include "xmlengnode.h"
 1667.31 +
 1667.32 +
 1667.33 +
 1667.34 +/**
 1667.35 + * Instance of TXmlEngProcessingInstruction class represents an XML processing 
 1667.36 + * instruction in the DOM tree.
 1667.37 + * 
 1667.38 + * @lib XmlEngineDOM.lib
 1667.39 + * @since S60 v3.1
 1667.40 + */
 1667.41 +class TXmlEngProcessingInstruction : public TXmlEngNode
 1667.42 +{
 1667.43 +  public:
 1667.44 +    /**
 1667.45 +     * Default constructor
 1667.46 +     *
 1667.47 +     * @since S60 v3.1
 1667.48 +     */
 1667.49 +	inline TXmlEngProcessingInstruction();
 1667.50 +    
 1667.51 +    /**
 1667.52 +     * Get target of processing instruction.
 1667.53 +     *
 1667.54 +     * @since S60 v3.1
 1667.55 +     * @return "Target" part of a processing instruction
 1667.56 +     *
 1667.57 +     * @code
 1667.58 +     *    <?target data?>
 1667.59 +     * @endcode
 1667.60 +     * @see http://www.w3.org/TR/2004/REC-xml-20040204/#sec-pi
 1667.61 +     */
 1667.62 +    IMPORT_C TPtrC8 Target() const;
 1667.63 +
 1667.64 +    /**
 1667.65 +     * Get data of processing instruction.
 1667.66 +     *
 1667.67 +     * @since S60 v3.1
 1667.68 +     * @return "Data" part of a processing instruction
 1667.69 +     *
 1667.70 +     * @code
 1667.71 +     *    <?target data?>
 1667.72 +     * @endcode
 1667.73 +     * @see http://www.w3.org/TR/2004/REC-xml-20040204/#sec-pi
 1667.74 +     */
 1667.75 +    IMPORT_C TPtrC8 Data() const;
 1667.76 +
 1667.77 +    /**
 1667.78 +     * Sets data part of processing instruction
 1667.79 +     *
 1667.80 +     * @since S60 v3.1
 1667.81 +     * @param aData New data part of processing instruction
 1667.82 +     * @note PI contents should not contain "?>" sequence
 1667.83 +     */
 1667.84 +    IMPORT_C void SetDataL(const TDesC8& aData);
 1667.85 +
 1667.86 +protected:
 1667.87 +    /**
 1667.88 +     * Constructor
 1667.89 +     *
 1667.90 +     * @since S60 v3.1
 1667.91 +     * @param aInternal processing instruction pointer
 1667.92 +     */
 1667.93 +	inline TXmlEngProcessingInstruction(void* aInternal);
 1667.94 +};
 1667.95 +
 1667.96 +
 1667.97 +
 1667.98 +#include "xmlengprocessinginstruction.inl"
 1667.99 +#endif /* XMLENGINE_PROCESSINGINSTRUCTION_H_INCLUDED */
  1668.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1668.2 +++ b/epoc32/include/xml/dom/xmlengprocessinginstruction.inl	Wed Mar 31 12:27:01 2010 +0100
  1668.3 @@ -0,0 +1,41 @@
  1668.4 +/*
  1668.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1668.6 +* All rights reserved.
  1668.7 +* This component and the accompanying materials are made available
  1668.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1668.9 +* which accompanies this distribution, and is available
 1668.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1668.11 +*
 1668.12 +* Initial Contributors:
 1668.13 +* Nokia Corporation - initial contribution.
 1668.14 +*
 1668.15 +* Contributors:
 1668.16 +*
 1668.17 +* Description:       Processing instruction inline functions
 1668.18 +*
 1668.19 +*/
 1668.20 +
 1668.21 +
 1668.22 +
 1668.23 +
 1668.24 +
 1668.25 +
 1668.26 +
 1668.27 +
 1668.28 +
 1668.29 +// -----------------------------------------------------------------------------
 1668.30 +// Default constructor
 1668.31 +// -----------------------------------------------------------------------------
 1668.32 +//
 1668.33 +inline TXmlEngProcessingInstruction::TXmlEngProcessingInstruction():TXmlEngNode(NULL)
 1668.34 +    {
 1668.35 +    }
 1668.36 +    
 1668.37 +// -----------------------------------------------------------------------------
 1668.38 +// Constructor
 1668.39 +// -----------------------------------------------------------------------------
 1668.40 +//
 1668.41 +inline TXmlEngProcessingInstruction::TXmlEngProcessingInstruction(void* aInternal):TXmlEngNode(aInternal)
 1668.42 +    {
 1668.43 +    }
 1668.44 +    
  1669.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1669.2 +++ b/epoc32/include/xml/dom/xmlengserializationoptions.h	Wed Mar 31 12:27:01 2010 +0100
  1669.3 @@ -0,0 +1,93 @@
  1669.4 +/*
  1669.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1669.6 +* All rights reserved.
  1669.7 +* This component and the accompanying materials are made available
  1669.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1669.9 +* which accompanies this distribution, and is available
 1669.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1669.11 +*
 1669.12 +* Initial Contributors:
 1669.13 +* Nokia Corporation - initial contribution.
 1669.14 +*
 1669.15 +* Contributors:
 1669.16 +*
 1669.17 +* Description:       Serialization options functions
 1669.18 +*
 1669.19 +*/
 1669.20 +
 1669.21 +
 1669.22 +
 1669.23 +
 1669.24 +
 1669.25 +
 1669.26 +
 1669.27 +
 1669.28 +#ifndef XMLENGINE_SERIALIZATIONOPTIONS_H_INCLUDED
 1669.29 +#define XMLENGINE_SERIALIZATIONOPTIONS_H_INCLUDED
 1669.30 +
 1669.31 +#include <e32base.h>
 1669.32 +
 1669.33 +// FORWARD DECLARATION
 1669.34 +class MXmlEngOutputStream;
 1669.35 +class MXmlEngDataSerializer;
 1669.36 +class MXmlEngNodeFilter;
 1669.37 +
 1669.38 +/**
 1669.39 + * Class allow to set serialization option during document save.
 1669.40 + * 
 1669.41 + * @lib XmlEngineDOM.lib
 1669.42 + * @since S60 v3.1
 1669.43 + */
 1669.44 +class TXmlEngSerializationOptions 
 1669.45 +	{
 1669.46 +public:
 1669.47 +    /** Use indent in output */
 1669.48 +    static const TUint KOptionIndent                 = 0x01;
 1669.49 +    /** Skip xml declaration */
 1669.50 +	static const TUint KOptionOmitXMLDeclaration     = 0x02;
 1669.51 +	/** Add standalone in xml declaration. KOptionOmitXMLDeclaration must not be set */
 1669.52 +	static const TUint KOptionStandalone             = 0x04;
 1669.53 +	/** Add encoding in xml declaration. KOptionOmitXMLDeclaration must not be set */
 1669.54 +	static const TUint KOptionEncoding               = 0x08;
 1669.55 +	/** Not supported currently */
 1669.56 +	static const TUint KOptionIncludeNsPrefixes      = 0x10;
 1669.57 +	/** Not supported currently */
 1669.58 +	static const TUint KOptionCDATASectionElements   = 0x20;
 1669.59 +	/** Decode base64 encoded binary containers content upon XOP serialization*/
 1669.60 +	static const TUint KOptionDecodeBinaryContainers		 = 0x40;	
 1669.61 +    
 1669.62 +	/**
 1669.63 +     * Constructor
 1669.64 +     *
 1669.65 +     * @since S60 v3.1
 1669.66 +	 * @param aOptionFlags Serialization options
 1669.67 +     * @param aEncoding Serialization encoding
 1669.68 +     */
 1669.69 +    IMPORT_C TXmlEngSerializationOptions( TUint aOptionFlags = 
 1669.70 +    								   (TXmlEngSerializationOptions::KOptionIndent | 
 1669.71 +    									TXmlEngSerializationOptions::KOptionStandalone |
 1669.72 +    									TXmlEngSerializationOptions::KOptionEncoding), 
 1669.73 +                                    const TDesC8& aEncoding = KNullDesC8);
 1669.74 +
 1669.75 +	/**
 1669.76 +     * Set node filter
 1669.77 +     *
 1669.78 +     * @since S60 v3.1
 1669.79 +	 * @param aFilter New node filter
 1669.80 +     */
 1669.81 +    IMPORT_C void SetNodeFilter(MXmlEngNodeFilter* aFilter);  
 1669.82 +
 1669.83 +public:
 1669.84 +	/** Options flag */
 1669.85 +    TUint iOptions;
 1669.86 +	/** Encoding */
 1669.87 +    TPtrC8 iEncoding;
 1669.88 +	/** Node filter */
 1669.89 +    MXmlEngNodeFilter* iNodeFilter;
 1669.90 +    /** Object whose serialization callback is invoked **/
 1669.91 +    MXmlEngDataSerializer* iDataSerializer;
 1669.92 +	};
 1669.93 +
 1669.94 +
 1669.95 +
 1669.96 +#endif /* XMLENGINE_SERIALIZATIONOPTIONS_H_INCLUDED */
  1670.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1670.2 +++ b/epoc32/include/xml/dom/xmlengtext.h	Wed Mar 31 12:27:01 2010 +0100
  1670.3 @@ -0,0 +1,90 @@
  1670.4 +/*
  1670.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1670.6 +* All rights reserved.
  1670.7 +* This component and the accompanying materials are made available
  1670.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1670.9 +* which accompanies this distribution, and is available
 1670.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1670.11 +*
 1670.12 +* Initial Contributors:
 1670.13 +* Nokia Corporation - initial contribution.
 1670.14 +*
 1670.15 +* Contributors:
 1670.16 +*
 1670.17 +* Description:       Text node functions
 1670.18 +*
 1670.19 +*/
 1670.20 +
 1670.21 +
 1670.22 +
 1670.23 +
 1670.24 +
 1670.25 +
 1670.26 +
 1670.27 +#ifndef XMLENGINE_TEXT_H_INCLUDED
 1670.28 +#define XMLENGINE_TEXT_H_INCLUDED
 1670.29 +
 1670.30 +#include "xmlengcharacterdata.h"
 1670.31 +
 1670.32 +
 1670.33 +
 1670.34 +/**
 1670.35 + * The TXmlEngTextNode interface inherits from TXmlEngCharacterData and represents the textual content 
 1670.36 + * (termed "character data" in XML) of an Element or TXmlEngAttr. 
 1670.37 + *
 1670.38 + * If there is no markup inside an element's content, the text is contained in a single object 
 1670.39 + * of the TXmlEngTextNode interface that is the only child of the element. If there is markup, 
 1670.40 + * it is parsed into the information items (elements, comments, etc.) and TXmlEngTextNode nodes that 
 1670.41 + * form the list of children of the element.
 1670.42 + * 
 1670.43 + * When a document is first made available via the DOM, there is only one TXmlEngTextNode node for each 
 1670.44 + * block of text. Users may create adjacent TXmlEngTextNode nodes that represent the contents of a given 
 1670.45 + * element without any intervening markup, but should be aware that there is no way to 
 1670.46 + * represent the separations between these nodes in XML or HTML, so they will not (in general) 
 1670.47 + * persist between DOM editing sessions. 
 1670.48 + * 
 1670.49 + * No lexical check is done on the content of a TXmlEngTextNode node and, depending on its position in 
 1670.50 + * the document, some characters must be escaped during serialization using character references; 
 1670.51 + * e.g. the characters "<&" if the textual content is part of an element or of an attribute, 
 1670.52 + * the character sequence "]]>" when part of an element, the quotation mark character " or 
 1670.53 + * the apostrophe character ' when part of an attribute. 
 1670.54 + * 
 1670.55 + * <b>DOM Level 3 spec:</b>
 1670.56 + * <p>http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-1312295772
 1670.57 + * 
 1670.58 + * @lib XmlEngineDOM.lib
 1670.59 + * @since S60 v3.1
 1670.60 + */
 1670.61 +class TXmlEngTextNode : public TXmlEngCharacterData
 1670.62 +{
 1670.63 +public:
 1670.64 +    /**
 1670.65 +     * Default constructor
 1670.66 +     *
 1670.67 +     * @since S60 v3.1
 1670.68 +     */
 1670.69 +	inline TXmlEngTextNode();
 1670.70 +
 1670.71 +    /**
 1670.72 +     * Check if element content is whitespace.
 1670.73 +     *
 1670.74 +     * @since S60 v3.1
 1670.75 +     * @return TRUE if is only whitespace
 1670.76 +     */
 1670.77 +    IMPORT_C TBool IsElementContentWhitespace() const;
 1670.78 +
 1670.79 +protected:
 1670.80 +    /**
 1670.81 +     * Constructor
 1670.82 +     *
 1670.83 +     * @since S60 v3.1
 1670.84 +     * @param aInternal Text node pointer
 1670.85 +     */
 1670.86 +    inline TXmlEngTextNode(void* aInternal);
 1670.87 +};
 1670.88 +
 1670.89 +
 1670.90 +
 1670.91 +#include "xmlengtext.inl"
 1670.92 +
 1670.93 +#endif /* XMLENGINE_TEXT_H_INCLUDED */
  1671.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1671.2 +++ b/epoc32/include/xml/dom/xmlengtext.inl	Wed Mar 31 12:27:01 2010 +0100
  1671.3 @@ -0,0 +1,41 @@
  1671.4 +/*
  1671.5 +* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1671.6 +* All rights reserved.
  1671.7 +* This component and the accompanying materials are made available
  1671.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1671.9 +* which accompanies this distribution, and is available
 1671.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1671.11 +*
 1671.12 +* Initial Contributors:
 1671.13 +* Nokia Corporation - initial contribution.
 1671.14 +*
 1671.15 +* Contributors:
 1671.16 +*
 1671.17 +* Description:       Text node inline functions
 1671.18 +*
 1671.19 +*/
 1671.20 +
 1671.21 +
 1671.22 +
 1671.23 +
 1671.24 +
 1671.25 +
 1671.26 +
 1671.27 +
 1671.28 +
 1671.29 +// -----------------------------------------------------------------------------
 1671.30 +// Default constructor
 1671.31 +// -----------------------------------------------------------------------------
 1671.32 +//
 1671.33 +inline TXmlEngTextNode::TXmlEngTextNode():TXmlEngCharacterData(NULL)
 1671.34 +    {
 1671.35 +    }
 1671.36 +    
 1671.37 +// -----------------------------------------------------------------------------
 1671.38 +// Constructor
 1671.39 +// -----------------------------------------------------------------------------
 1671.40 +//
 1671.41 +inline TXmlEngTextNode::TXmlEngTextNode(void* aInternal):TXmlEngCharacterData(aInternal)
 1671.42 +    {
 1671.43 +    }
 1671.44 +    
  1672.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1672.2 +++ b/epoc32/include/xml/dom/xmlenguserdata.h	Wed Mar 31 12:27:01 2010 +0100
  1672.3 @@ -0,0 +1,74 @@
  1672.4 +/*
  1672.5 +* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1672.6 +* All rights reserved.
  1672.7 +* This component and the accompanying materials are made available
  1672.8 +* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1672.9 +* which accompanies this distribution, and is available
 1672.10 +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1672.11 +*
 1672.12 +* Initial Contributors:
 1672.13 +* Nokia Corporation - initial contribution.
 1672.14 +*
 1672.15 +* Contributors:
 1672.16 +*
 1672.17 +* Description:       Interface class describing class that may contains user
 1672.18 + *                 data aded to node
 1672.19 + *
 1672.20 +*/
 1672.21 +
 1672.22 +
 1672.23 +
 1672.24 +
 1672.25 +
 1672.26 +
 1672.27 +
 1672.28 +#ifndef XMLENGINE_USERDATA_H_INCLUDED
 1672.29 +#define XMLENGINE_USERDATA_H_INCLUDED
 1672.30 +
 1672.31 +#include <e32def.h>
 1672.32 +
 1672.33 +/**
 1672.34 + * MXmlEngUserData is an abstract base class (interface) for user data that can be
 1672.35 + * stored in the DOM tree. Applications that wish to store user data in the 
 1672.36 + * DOM tree must wrap the user data in a class that implemens this interface.
 1672.37 + *
 1672.38 + * @lib XmlEngineDOM.lib
 1672.39 + * @since S60 v3.1
 1672.40 + */
 1672.41 +class MXmlEngUserData {
 1672.42 +public:
 1672.43 +    /**
 1672.44 +     * Free memory that is allocated and do other case specific cleanup.
 1672.45 +     *
 1672.46 +     * @since S60 v3.1
 1672.47 +     */
 1672.48 +    virtual void Destroy() = 0;
 1672.49 +    
 1672.50 +    /**
 1672.51 +     * Make a copy of the the object. Note that if reference counting is used or
 1672.52 +     * the same pointer can be safely copied to other places the implementation
 1672.53 +     * of this method may just return a pointer to self.
 1672.54 +     *
 1672.55 +     * Copying user data when copying nodes has not been implemented
 1672.56 +     * so this method is for future use (though there's no harm in implementing 
 1672.57 +     * it, of course).
 1672.58 +     *
 1672.59 +     * @since S60 v3.1
 1672.60 +     * @return Pointer to a copy of this object.
 1672.61 +     */
 1672.62 +    virtual MXmlEngUserData* CloneL() = 0;
 1672.63 +
 1672.64 +    /**
 1672.65 +     * Get id of the object. It is up to user-data provider what the result is.
 1672.66 +     * Such a "user data identification" may be in use if several types of
 1672.67 +     * MXmlEngUserData objects are used.
 1672.68 +     *
 1672.69 +     * @since S60 v3.1
 1672.70 +     * @return Pointer that somehow identifies the type of MXmlEngUserData (NULL by default)
 1672.71 +     */
 1672.72 +    virtual void* ID() {return NULL;}
 1672.73 +};
 1672.74 +
 1672.75 +
 1672.76 +
 1672.77 +#endif /* XMLENGINE_USERDATA_H_INCLUDED*/
  1673.1 --- a/epoc32/include/xmlelemt.h	Tue Mar 16 16:12:26 2010 +0000
  1673.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1673.3 @@ -1,192 +0,0 @@
  1673.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
  1673.5 -// All rights reserved.
  1673.6 -// This component and the accompanying materials are made available
  1673.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1673.8 -// which accompanies this distribution, and is available
  1673.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1673.10 -//
 1673.11 -// Initial Contributors:
 1673.12 -// Nokia Corporation - initial contribution.
 1673.13 -//
 1673.14 -// Contributors:
 1673.15 -//
 1673.16 -// Description:
 1673.17 -// XmlElement.h
 1673.18 -// XML Element class
 1673.19 -// Derived from CTypedNode. Adds functionality
 1673.20 -// to make the use of the node simpler
 1673.21 -// 
 1673.22 -//
 1673.23 -
 1673.24 -#ifndef __XMLELEMT_H
 1673.25 -#define __XMLELEMT_H
 1673.26 -
 1673.27 -//
 1673.28 -//  INCLUDES
 1673.29 -//
 1673.30 -#include <e32base.h>
 1673.31 -#include <cnode.h>
 1673.32 -
 1673.33 -//
 1673.34 -//  CONSTANTS  
 1673.35 -//
 1673.36 -/**
 1673.37 -@publishedAll
 1673.38 -@deprecated
 1673.39 -*/
 1673.40 -_LIT(KXmlElementDataItemAttributeName, "__XML_DI");
 1673.41 -
 1673.42 -//
 1673.43 -//  DATA TYPES  
 1673.44 -//
 1673.45 -enum TXmlElementPanic
 1673.46 -/**
 1673.47 -@publishedAll
 1673.48 -@deprecated
 1673.49 -*/
 1673.50 -{
 1673.51 -	EXmlElPanicInvalidDataItem = 1
 1673.52 -};
 1673.53 -
 1673.54 -// Type of an attribute in a node
 1673.55 -typedef const TDesC* TXmlAttributeType;
 1673.56 -// Type of an element (type of node)
 1673.57 -typedef const TDesC* TXmlElementType;
 1673.58 -
 1673.59 -//
 1673.60 -//  FUNCTION PROTOTYPES  
 1673.61 -//
 1673.62 -/**
 1673.63 -@publishedAll
 1673.64 -@deprecated
 1673.65 -*/
 1673.66 -GLREF_C void Panic(TXmlElementPanic aPanic);
 1673.67 -
 1673.68 -//
 1673.69 -//  FORWARD DECLARATIONS
 1673.70 -//
 1673.71 -class RFile;
 1673.72 -class CAttributeLookupTable;
 1673.73 -
 1673.74 -//
 1673.75 -//  CLASS DEFINITIONS 
 1673.76 -//
 1673.77 -//##ModelId=3B66798702FF
 1673.78 -class CXmlElement : public CTypedNode<TXmlElementType, TXmlAttributeType>
 1673.79 -/**
 1673.80 -@publishedAll
 1673.81 -@deprecated
 1673.82 -*/
 1673.83 -{
 1673.84 -public:
 1673.85 -	// Construction
 1673.86 -	//##ModelId=3B6679870364
 1673.87 -	static inline CXmlElement* NewL(TXmlElementType aType,CNode* aParent);
 1673.88 -
 1673.89 -	// Attributes
 1673.90 -	// Return the value of a particular attribute
 1673.91 -	//##ModelId=3B667987035D
 1673.92 -	IMPORT_C const TDesC* Attribute(const TDesC& aAttributeName) const;
 1673.93 -	// Return the value of an aIndexth attribute
 1673.94 -	//##ModelId=3B6679870362
 1673.95 -	inline const TDesC* Attribute(TInt aIndex) const;
 1673.96 -
 1673.97 -	// Set attribute value
 1673.98 -	//##ModelId=3B6679870359
 1673.99 -	IMPORT_C void SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue, CAttributeLookupTable& aAttributeLUT);
1673.100 -
1673.101 -	// Store a unicode descriptor as data value. 
1673.102 -	//##ModelId=3B6679870357
1673.103 -	IMPORT_C void SetTextL(const TDesC& aData);
1673.104 -	// Get data value
1673.105 -	//##ModelId=3B6679870352
1673.106 -	inline const TDesC* Text() const;
1673.107 -
1673.108 -	// Children
1673.109 -	//##ModelId=3B6679870350
1673.110 -	inline void AppendChildL(CXmlElement* aElement);
1673.111 -
1673.112 -	//##ModelId=3B667987034D
1673.113 -	IMPORT_C void InsertChildL(TInt aIndexToInsertBefore, CXmlElement* aElement);
1673.114 -
1673.115 -	//##ModelId=3B6679870347
1673.116 -	inline TInt Count() const;
1673.117 -
1673.118 -	//##ModelId=3B6679870345
1673.119 -	inline CXmlElement* Child(TInt aIndex) const;
1673.120 -
1673.121 -	// Find out the index of this child
1673.122 -	// INPUT:
1673.123 -	// aChild - Pointer to the child node
1673.124 -	// RETURN:
1673.125 -	// TInt - index to the child, -1 if no child found
1673.126 -	//##ModelId=3B6679870343
1673.127 -	IMPORT_C TInt ChildIndex(CXmlElement* aChild) const;
1673.128 -
1673.129 -	// Data item
1673.130 -	//##ModelId=3B667987033C
1673.131 -	IMPORT_C void SetDataItemL(CBase* aDataItem, CAttributeLookupTable& aAttributeLUT); // takes ownership of aDataItem
1673.132 -	//##ModelId=3B667987033B
1673.133 -	IMPORT_C CBase* DataItem() const;
1673.134 -	//##ModelId=3B6679870339
1673.135 -	IMPORT_C void DeleteDataItem(CAttributeLookupTable& aAttributeLUT);
1673.136 -
1673.137 -private:
1673.138 -	// Data Item handling
1673.139 -	class CDataItemAttribute : public CBase
1673.140 -	{
1673.141 -	public:
1673.142 -		~CDataItemAttribute() { delete iDataItem; };
1673.143 -		CBase* iDataItem;
1673.144 -	};
1673.145 -
1673.146 -	//##ModelId=3B6679870335
1673.147 -	CXmlElement() : CTypedNode<TXmlElementType, TXmlAttributeType>(NULL, NULL) {};
1673.148 -
1673.149 -// Debug stuff
1673.150 -//#ifdef _DEBUG
1673.151 -public:
1673.152 -	//##ModelId=3B6679870334
1673.153 -	IMPORT_C void WriteIntoFileL();
1673.154 -	//##ModelId=3B6679870331
1673.155 -	void StartWriteL(RFile& aFile, TInt aIndentation);
1673.156 -private:
1673.157 -	//##ModelId=3B6679870327
1673.158 -	void WriteNameL(RFile& aFile, TInt aIndentation);
1673.159 -//#endif
1673.160 -};
1673.161 -
1673.162 -//
1673.163 -//	INLINE METHODS
1673.164 -//
1673.165 -inline CXmlElement* CXmlElement::NewL(TXmlElementType aType,CNode* aParent) 
1673.166 -{
1673.167 -	return (CXmlElement*)CTypedNode<TXmlElementType, TXmlAttributeType>::NewL(aType, aParent);
1673.168 -}
1673.169 -
1673.170 -inline const TDesC* CXmlElement::Attribute(TInt aIndex) const
1673.171 -{ 
1673.172 -	return (TDesC*)((CDataDelete*)AttributeByIndex(aIndex))->Data();
1673.173 -}
1673.174 -
1673.175 -inline const TDesC* CXmlElement::Text() const
1673.176 -{ 
1673.177 -	return (const TDesC*)CTypedNode<TXmlElementType, TXmlAttributeType>::Data(); 
1673.178 -}
1673.179 -
1673.180 -inline void CXmlElement::AppendChildL(CXmlElement* aElement)
1673.181 -{ 
1673.182 -	CTypedNode<TXmlElementType, TXmlAttributeType>::AppendNodeToThisNodeL(aElement); 
1673.183 -}
1673.184 -
1673.185 -inline TInt CXmlElement::Count() const
1673.186 -{ 
1673.187 -	return NumberImmediateChildren(); 
1673.188 -}
1673.189 -
1673.190 -inline CXmlElement* CXmlElement::Child(TInt aIndex) const
1673.191 -{ 
1673.192 -	return (CXmlElement*)CTypedNode<TXmlElementType, TXmlAttributeType>::Child(aIndex); 
1673.193 -}
1673.194 -
1673.195 -#endif //__XMLELEMT_H
  1674.1 --- a/epoc32/include/xmlengattr.h	Tue Mar 16 16:12:26 2010 +0000
  1674.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1674.3 @@ -1,192 +0,0 @@
  1674.4 -/*
  1674.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1674.6 -* All rights reserved.
  1674.7 -* This component and the accompanying materials are made available
  1674.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1674.9 -* which accompanies this distribution, and is available
 1674.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1674.11 -*
 1674.12 -* Initial Contributors:
 1674.13 -* Nokia Corporation - initial contribution.
 1674.14 -*
 1674.15 -* Contributors:
 1674.16 -*
 1674.17 -* Description:       Attribute node functions
 1674.18 -*
 1674.19 -*/
 1674.20 -
 1674.21 -
 1674.22 -
 1674.23 -
 1674.24 -
 1674.25 -
 1674.26 -
 1674.27 -#ifndef XMLENGINE_ATTR_H_INCLUDED
 1674.28 -#define XMLENGINE_ATTR_H_INCLUDED
 1674.29 -
 1674.30 -#include "xmlengnode.h"
 1674.31 -
 1674.32 -/**
 1674.33 - * Instance of TXmlEngAttr class represents an XML attribute in the DOM tree.
 1674.34 - * 
 1674.35 - * Is a storage attributes properties. Implements DOM action for it.
 1674.36 - * 
 1674.37 - * @lib XmlEngineDOM.lib
 1674.38 - * @since S60 v3.1
 1674.39 - */
 1674.40 -class TXmlEngAttr : public TXmlEngNode
 1674.41 -{
 1674.42 -  public:
 1674.43 -    /**
 1674.44 -     * Default constructor
 1674.45 -     *
 1674.46 -     * @since S60 v3.1
 1674.47 -     */
 1674.48 -    inline TXmlEngAttr();
 1674.49 -
 1674.50 -
 1674.51 -    /**
 1674.52 -     * Clones attribute node
 1674.53 -     *
 1674.54 -     * @since S60 v3.1
 1674.55 -     * @return A copy of the attribute with its value
 1674.56 -     *
 1674.57 -     * @note Namespace of the attribute is reset; use 
 1674.58 -     * TXmlEngNode::CopyToL(TXmlEngNode), which finds appropriate or creates
 1674.59 -     * new namespace declaration on the new parent node (argument should be
 1674.60 -     * an TXmlEngElement handle)
 1674.61 -     *
 1674.62 -     * @see CopyToL(TXmlEngNode)
 1674.63 -     */
 1674.64 -    IMPORT_C TXmlEngAttr CopyL() const;
 1674.65 -
 1674.66 -    /**
 1674.67 -     * Get owner element
 1674.68 -     *
 1674.69 -     * @since S60 v3.1
 1674.70 -     * @return TXmlEngElement that contains the attribute
 1674.71 -     *
 1674.72 -     * Same as TXmlEngNode::ParentNode() but returns TXmlEngElement 
 1674.73 -     * instead of TXmlEngNode.
 1674.74 -     *
 1674.75 -     * @note Copies of attributes [TXmlEngAttr::CopyL()] and newly created 
 1674.76 -     * attribute nodes [RXmlEngDocument::CreateAttributeL(..)] do not have 
 1674.77 -     * parent element until they are attached to some element.
 1674.78 -     */
 1674.79 -    IMPORT_C const TXmlEngElement OwnerElement() const;
 1674.80 -
 1674.81 -    /**
 1674.82 -     * Check attribute name.
 1674.83 -     *
 1674.84 -     * @since S60 v3.1
 1674.85 -     * @return Local name of the attribute
 1674.86 -     *
 1674.87 -     * @note Equal to TXmlEngNode::Name(), but works faster.
 1674.88 -     *
 1674.89 -     * Never call this on NULL object!
 1674.90 -     * @see TXmlEngNode::Name()
 1674.91 -     */
 1674.92 -    IMPORT_C TPtrC8 Name() const;
 1674.93 -
 1674.94 -    /**
 1674.95 -     * Get element value.
 1674.96 -     *
 1674.97 -     * @since S60 v3.1
 1674.98 -     * @return Attribute's contents
 1674.99 -     *
1674.100 -     * @note For values consisting of more then one TXmlEngTextNode node 
1674.101 -     * (as attribute's child) returns only the begining of the value; 
1674.102 -     * this happens when the value is represented by list of TXmlEngTextNode
1674.103 -     * and TXmlEngEntityReference nodes.
1674.104 -     * 
1674.105 -     * @see IsSimpleContents(), WholeValueCopyL()
1674.106 -     */
1674.107 -    IMPORT_C TPtrC8 Value() const; 
1674.108 -
1674.109 -    /**
1674.110 -     * Get copy of attribute content
1674.111 -     *
1674.112 -     * @since S60 v3.1
1674.113 -     * @return Complex value of the attribute,
1674.114 -     *     probably consisting of text nodes and entity references
1674.115 -     *
1674.116 -     * Since the value may be composed from a set of TXmlEngTextNode
1674.117 -     * and EntityRefernce nodes, the returned result is newly allocated 
1674.118 -     * string, which should be freed by caller.
1674.119 -     * 
1674.120 -     * <B style="color: red">BE SURE TO FREE THE RESULT STRING!!!</B>
1674.121 -     *
1674.122 -     * Example usage of the API:
1674.123 -     * @code
1674.124 -     *    RBuf8 value;
1674.125 -	 *    attr.WholeValueCopyL(value);
1674.126 -     *    ...
1674.127 -     *    value.Close();
1674.128 -     * @endcode
1674.129 -     *
1674.130 -     * @see TXmlEngAttr::Value(), TXmlEngNode::Value(),
1674.131 -     * TXmlEngNode::IsSimpleTextContents(), 
1674.132 -     * TXmlEngNode::WholeTextContentsCopyL()
1674.133 -     *
1674.134 -     * @note In most cases using Value() is enough (and it needs no memory allocation).
1674.135 -     *     Use IsSimpleTextContents() if there doubts can Value() be used or not safely.
1674.136 -     */
1674.137 -    IMPORT_C void WholeValueCopyL(RBuf8& aBuffer) const;
1674.138 -
1674.139 -    /**
1674.140 -     * Sets new value of the attribute. Provided new value will be escaped 
1674.141 -     * as needed.
1674.142 -     *
1674.143 -	 * @ since S60 v3.1
1674.144 -     * @param aNewValue A string value for the attribute
1674.145 -     *
1674.146 -     * The new value should not contain entity references. 
1674.147 -     * Entity references are not expanded, but used as text, because 
1674.148 -     * the ampersand (&) character of reference is escaped.
1674.149 -     *
1674.150 -     * @see SetEscapedValueL(const TDesC8&)
1674.151 -     */
1674.152 -    IMPORT_C void SetValueL(const TDesC8& aNewValue);
1674.153 -
1674.154 -    /**
1674.155 -     * Sets new value from escaped XML character data that may contain 
1674.156 -     * entity references.
1674.157 -     *
1674.158 -     * The value as if it is an escaped contents from XML file.
1674.159 -     * If the value contains entity references, then the resulting
1674.160 -     * content of the attribute is a list of TXmlEngTextNode 
1674.161 -     * and TXmlEngEntityRefeerence nodes.
1674.162 -     * Predefined entities are converted into characters they represent.
1674.163 -     * 
1674.164 -     * @param aNewValue is a new attribute value
1674.165 -     * @since S60 v3.1
1674.166 -     *
1674.167 -     * @see TXmlEngAttr::SetValueL(const TDesC8&)
1674.168 -     */
1674.169 -    IMPORT_C void SetEscapedValueL(const TDesC8& aNewValue);
1674.170 -
1674.171 -	/**
1674.172 -	 * Sets new attribute value exactly as presented in the string.
1674.173 -	 *
1674.174 -	 * Predefined entities are not converted into characters they represent.
1674.175 -	 *
1674.176 -     * @param aNewValue is a new attribute value 
1674.177 -     * @since S60 v3.2
1674.178 -     *
1674.179 -     * @see TXmlEngAttr::SetValueL(const TDesC8&)
1674.180 -     */
1674.181 -	IMPORT_C void SetValueNoEncL(const TDesC8& aNewValue );
1674.182 -
1674.183 -protected:
1674.184 -    /**
1674.185 -     * Constructor
1674.186 -     *
1674.187 -     * @since S60 v3.1
1674.188 -     * @param aInternal attribute pointer
1674.189 -     */
1674.190 -    inline TXmlEngAttr(void* aInternal);
1674.191 -};
1674.192 -
1674.193 -#include "xmlengattr.inl"
1674.194 -
1674.195 -#endif /* XMLENGINE_ATTR_H_INCLUDED */
  1675.1 --- a/epoc32/include/xmlengattr.inl	Tue Mar 16 16:12:26 2010 +0000
  1675.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1675.3 @@ -1,40 +0,0 @@
  1675.4 -/*
  1675.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1675.6 -* All rights reserved.
  1675.7 -* This component and the accompanying materials are made available
  1675.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1675.9 -* which accompanies this distribution, and is available
 1675.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1675.11 -*
 1675.12 -* Initial Contributors:
 1675.13 -* Nokia Corporation - initial contribution.
 1675.14 -*
 1675.15 -* Contributors:
 1675.16 -*
 1675.17 -* Description:       Attribute node functions
 1675.18 -*
 1675.19 -*/
 1675.20 -
 1675.21 -
 1675.22 -
 1675.23 -
 1675.24 -
 1675.25 -
 1675.26 -
 1675.27 -// -----------------------------------------------------------------------------
 1675.28 -// Default constructor
 1675.29 -// -----------------------------------------------------------------------------
 1675.30 -//
 1675.31 -inline TXmlEngAttr::TXmlEngAttr()
 1675.32 -    {
 1675.33 -    }
 1675.34 -
 1675.35 -// -----------------------------------------------------------------------------
 1675.36 -// Constructor
 1675.37 -// -----------------------------------------------------------------------------
 1675.38 -//
 1675.39 -inline TXmlEngAttr::TXmlEngAttr(void* aInternal):TXmlEngNode(aInternal)
 1675.40 -    {
 1675.41 -    }
 1675.42 -
 1675.43 -
  1676.1 --- a/epoc32/include/xmlengbinarycontainer.h	Tue Mar 16 16:12:26 2010 +0000
  1676.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1676.3 @@ -1,103 +0,0 @@
  1676.4 -/*
  1676.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1676.6 -* All rights reserved.
  1676.7 -* This component and the accompanying materials are made available
  1676.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1676.9 -* which accompanies this distribution, and is available
 1676.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1676.11 -*
 1676.12 -* Initial Contributors:
 1676.13 -* Nokia Corporation - initial contribution.
 1676.14 -*
 1676.15 -* Contributors:
 1676.16 -*
 1676.17 -* Description:       All binary data functions
 1676.18 -*
 1676.19 -*/
 1676.20 -
 1676.21 -
 1676.22 -
 1676.23 -
 1676.24 -
 1676.25 -
 1676.26 -
 1676.27 -#ifndef XMLENGINE_BINARYCONTAINER_H_INCLUDED
 1676.28 -#define XMLENGINE_BINARYCONTAINER_H_INCLUDED
 1676.29 -
 1676.30 -#include "xmlengdatacontainer.h"
 1676.31 -
 1676.32 -/**
 1676.33 -* Instance of TXmlEngBinaryContainer class represents binary data in 
 1676.34 -* DOM tree.
 1676.35 -*
 1676.36 -* Binary data is treated in general as text nodes in DOM tree. 
 1676.37 -* Some of the fields in xmlNode structure are reused in order to save memory. 
 1676.38 -* Data is stored in process's heap memory.
 1676.39 -*
 1676.40 -* Sample code for creating binary container:
 1676.41 -* @code  
 1676.42 -*      RXmlEngDOMImplementation domImpl;
 1676.43 -*      domImpl.OpenL();        ///< opening DOM implementation object 
 1676.44 -*      RXmlEngDocument iDoc; 
 1676.45 -*      ///< create document element
 1676.46 -*      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
 1676.47 -*      ///< create binary container from buffer (str1) and CID equals cid
 1676.48 -*      TXmlEngBinaryContainer binData=iDoc.CreateBinaryContainerL(cid,*str1);  
 1676.49 -*      elem.AppendChildL(binData);      ///< append container to the dom tree       
 1676.50 -*      iDoc.Close();               ///< closing all opened objects
 1676.51 -*      domImpl.Close();
 1676.52 -* @endcode 
 1676.53 -*
 1676.54 -* @lib XmlEngineDOM.lib
 1676.55 -* @since S60 v3.2
 1676.56 -*/
 1676.57 -class TXmlEngBinaryContainer : public TXmlEngDataContainer
 1676.58 -{
 1676.59 -public:
 1676.60 -
 1676.61 -    /**
 1676.62 -     * Get content of the container.
 1676.63 -     *
 1676.64 -     * @since S60 v3.2
 1676.65 -     * @return TPtrC8 with container content
 1676.66 -     * 
 1676.67 -     */
 1676.68 -    IMPORT_C TPtrC8 Contents() const;
 1676.69 -    
 1676.70 -    /**
 1676.71 -     * Sets contents of binary container
 1676.72 -     *
 1676.73 -     * @since S60 v3.2
 1676.74 -     * @param aNewContents  The actual value to store
 1676.75 -     */
 1676.76 -    IMPORT_C void SetContentsL( const TDesC8& aNewContents );
 1676.77 -
 1676.78 -    /**
 1676.79 -     * Appends contents to binary container
 1676.80 -     *
 1676.81 -     * @since S60 v3.2
 1676.82 -     * @param aData  Content to be appended to current content
 1676.83 -     */    
 1676.84 -    EXPORT_C void AppendContentsL( const TDesC8& aData );
 1676.85 -
 1676.86 -    /**
 1676.87 -     * Default constructor
 1676.88 -	 *
 1676.89 -     * @since S60 v3.1
 1676.90 -     */
 1676.91 -	inline TXmlEngBinaryContainer(); 
 1676.92 -
 1676.93 -protected:
 1676.94 -
 1676.95 -    /**
 1676.96 -     * Constructor
 1676.97 -     *
 1676.98 -     * @since S60 v3.1
 1676.99 -     * @param aInternal node pointer
1676.100 -     */
1676.101 -	inline TXmlEngBinaryContainer(void* aInternal);
1676.102 -};
1676.103 -
1676.104 -#include "xmlengbinarycontainer.inl"
1676.105 -
1676.106 -#endif /* XMLENGINE_BINARYCONTAINER_H_INCLUDED */
  1677.1 --- a/epoc32/include/xmlengbinarycontainer.inl	Tue Mar 16 16:12:26 2010 +0000
  1677.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1677.3 @@ -1,41 +0,0 @@
  1677.4 -/*
  1677.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1677.6 -* All rights reserved.
  1677.7 -* This component and the accompanying materials are made available
  1677.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1677.9 -* which accompanies this distribution, and is available
 1677.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1677.11 -*
 1677.12 -* Initial Contributors:
 1677.13 -* Nokia Corporation - initial contribution.
 1677.14 -*
 1677.15 -* Contributors:
 1677.16 -*
 1677.17 -* Description:       Binary data node functions
 1677.18 -*
 1677.19 -*/
 1677.20 -
 1677.21 -
 1677.22 -
 1677.23 -
 1677.24 -
 1677.25 -
 1677.26 -
 1677.27 -// -----------------------------------------------------------------------------
 1677.28 -// Default constructor
 1677.29 -// -----------------------------------------------------------------------------
 1677.30 -//
 1677.31 -
 1677.32 -inline TXmlEngBinaryContainer::TXmlEngBinaryContainer():TXmlEngDataContainer(NULL)
 1677.33 -    {
 1677.34 -    }
 1677.35 -  
 1677.36 -// -----------------------------------------------------------------------------
 1677.37 -// Constructor
 1677.38 -// -----------------------------------------------------------------------------
 1677.39 -//
 1677.40 -
 1677.41 -inline TXmlEngBinaryContainer::TXmlEngBinaryContainer(void* aInternal):TXmlEngDataContainer(aInternal)
 1677.42 -    {
 1677.43 -    }
 1677.44 -  
  1678.1 --- a/epoc32/include/xmlengcdatasection.h	Tue Mar 16 16:12:26 2010 +0000
  1678.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1678.3 @@ -1,58 +0,0 @@
  1678.4 -/*
  1678.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1678.6 -* All rights reserved.
  1678.7 -* This component and the accompanying materials are made available
  1678.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1678.9 -* which accompanies this distribution, and is available
 1678.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1678.11 -*
 1678.12 -* Initial Contributors:
 1678.13 -* Nokia Corporation - initial contribution.
 1678.14 -*
 1678.15 -* Contributors:
 1678.16 -*
 1678.17 -* Description:       CDATASection node functions
 1678.18 -*
 1678.19 -*/
 1678.20 -
 1678.21 -
 1678.22 -
 1678.23 -
 1678.24 -
 1678.25 -
 1678.26 -
 1678.27 -#ifndef XMLENGINE_CDATASECTION_H_INCLUDED
 1678.28 -#define XMLENGINE_CDATASECTION_H_INCLUDED
 1678.29 -
 1678.30 -#include "xmlengtext.h"
 1678.31 -
 1678.32 -/** 
 1678.33 - * Instance of TXmlEngCDATASection class represents an XML CDATASection in the DOM tree.
 1678.34 - * 
 1678.35 - * @lib XmlEngineDOM.lib
 1678.36 - * @since S60 v3.1
 1678.37 - */
 1678.38 -class TXmlEngCDATASection : public TXmlEngTextNode
 1678.39 -{
 1678.40 -public:
 1678.41 -    /** 
 1678.42 -     * Default constructor
 1678.43 -     */
 1678.44 -	inline TXmlEngCDATASection();
 1678.45 -
 1678.46 -    
 1678.47 -protected:
 1678.48 -    /** 
 1678.49 -     * Constructor
 1678.50 -     *
 1678.51 -     * @since S60 v3.1
 1678.52 -     * @param aInternal CDATASection pointer
 1678.53 -     */
 1678.54 -	inline TXmlEngCDATASection(void* aInternal);
 1678.55 -};
 1678.56 -
 1678.57 -
 1678.58 -
 1678.59 -#include "xmlengcdatasection.inl"
 1678.60 -
 1678.61 -#endif /* XMLENGINE_CDATASECTION_H_INCLUDED */
  1679.1 --- a/epoc32/include/xmlengcdatasection.inl	Tue Mar 16 16:12:26 2010 +0000
  1679.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1679.3 @@ -1,40 +0,0 @@
  1679.4 -/*
  1679.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1679.6 -* All rights reserved.
  1679.7 -* This component and the accompanying materials are made available
  1679.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1679.9 -* which accompanies this distribution, and is available
 1679.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1679.11 -*
 1679.12 -* Initial Contributors:
 1679.13 -* Nokia Corporation - initial contribution.
 1679.14 -*
 1679.15 -* Contributors:
 1679.16 -*
 1679.17 -* Description:       Data section node functions
 1679.18 -*
 1679.19 -*/
 1679.20 -
 1679.21 -
 1679.22 -
 1679.23 -
 1679.24 -
 1679.25 -
 1679.26 -
 1679.27 -// -----------------------------------------------------------------------------
 1679.28 -// Default constructor
 1679.29 -// -----------------------------------------------------------------------------
 1679.30 -//
 1679.31 -inline TXmlEngCDATASection::TXmlEngCDATASection():TXmlEngTextNode(NULL)
 1679.32 -    {
 1679.33 -    }
 1679.34 -    
 1679.35 -
 1679.36 -// -----------------------------------------------------------------------------
 1679.37 -// Constructor
 1679.38 -// -----------------------------------------------------------------------------
 1679.39 -//
 1679.40 -inline TXmlEngCDATASection::TXmlEngCDATASection(void* aInternal):TXmlEngTextNode(aInternal)
 1679.41 -    {
 1679.42 -    }
 1679.43 -    
  1680.1 --- a/epoc32/include/xmlengcharacterdata.h	Tue Mar 16 16:12:26 2010 +0000
  1680.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1680.3 @@ -1,105 +0,0 @@
  1680.4 -/*
  1680.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1680.6 -* All rights reserved.
  1680.7 -* This component and the accompanying materials are made available
  1680.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1680.9 -* which accompanies this distribution, and is available
 1680.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1680.11 -*
 1680.12 -* Initial Contributors:
 1680.13 -* Nokia Corporation - initial contribution.
 1680.14 -*
 1680.15 -* Contributors:
 1680.16 -*
 1680.17 -* Description:       All text nodes functions
 1680.18 -*
 1680.19 -*/
 1680.20 -
 1680.21 -
 1680.22 -
 1680.23 -
 1680.24 -
 1680.25 -
 1680.26 -
 1680.27 -#ifndef XMLENGINE_CHARACTERDATA_H_INCLUDED
 1680.28 -#define XMLENGINE_CHARACTERDATA_H_INCLUDED
 1680.29 -
 1680.30 -#include "xmlengnode.h"
 1680.31 -
 1680.32 -/**
 1680.33 -* Instance of TXmlEngCharacterData class represents all kinds of XML text nodes 
 1680.34 -* (i.e. text node, comment node) in the DOM tree.
 1680.35 -*
 1680.36 -* Describe DOM action for nodes that contains text data.
 1680.37 -* DOM spec: 
 1680.38 -* http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-FF21A306
 1680.39 -*
 1680.40 -* @lib XmlEngineDOM.lib
 1680.41 -* @since S60 v3.1
 1680.42 -*/
 1680.43 -class TXmlEngCharacterData : public TXmlEngNode
 1680.44 -{
 1680.45 -public:
 1680.46 -
 1680.47 -    /**
 1680.48 -     * Get content of the node.
 1680.49 -     *
 1680.50 -     * @since S60 v3.1
 1680.51 -     * @return String with nodes content
 1680.52 -     * 
 1680.53 -     * This method applies to TXmlEngCDATASection, TXmlEngComment and TXmlEngTextNode nodes.
 1680.54 -     */
 1680.55 -    IMPORT_C TPtrC8 Contents() const;
 1680.56 -    
 1680.57 -    /**
 1680.58 -     * Sets contents of basic character nodes: TXmlEngTextNode, TXmlEngComment, TXmlEngCDATASection
 1680.59 -     *
 1680.60 -     * @since S60 v3.1
 1680.61 -     * @param aNewContents  The actual value to store
 1680.62 -     * 
 1680.63 -     * The input is taken as non-escaped: for example, 
 1680.64 -     * aNewContents = "123 > 34 && P" will be serialized as "123 &gt; 34 &amp;&amp; P"
 1680.65 -     * 
 1680.66 -     * Escaped contents may be set only for TXmlEngElement and TXmlEngAttr nodes.
 1680.67 -     * @see TXmlEngAttr::SetEscapedValueL(const TDesC8&), TXmlEngElement::SetEscapedTextL(const TDesC8&), 
 1680.68 -     */
 1680.69 -    IMPORT_C void SetContentsL(const TDesC8& aNewContents);
 1680.70 -
 1680.71 -    /**
 1680.72 -     * Extends the contents of the node by appending aString
 1680.73 -     *
 1680.74 -     * @since S60 v3.1
 1680.75 -     * @param aString Content to be added to current content
 1680.76 -     */
 1680.77 -    IMPORT_C void AppendContentsL(const TDesC8& aString);
 1680.78 -
 1680.79 -    /**
 1680.80 -     * Get length of the content
 1680.81 -     *
 1680.82 -     * @since S60 v3.1
 1680.83 -     * @return Number of characters in the contents
 1680.84 -     */
 1680.85 -    IMPORT_C TUint Length() const;
 1680.86 -
 1680.87 -protected:
 1680.88 -    /**
 1680.89 -     * Default constructor
 1680.90 -	 *
 1680.91 -     * @since S60 v3.1
 1680.92 -     */
 1680.93 -	inline TXmlEngCharacterData(); // protected from API users
 1680.94 -
 1680.95 -    /**
 1680.96 -     * Constructor
 1680.97 -     *
 1680.98 -     * @since S60 v3.1
 1680.99 -     * @param aInternal node pointer
1680.100 -     */
1680.101 -	inline TXmlEngCharacterData(void* aInternal);
1680.102 -};
1680.103 -
1680.104 -
1680.105 -#include "xmlengcharacterdata.inl"
1680.106 -
1680.107 -#endif /* XMLENGINE_CHARACTERDATA_H_INCLUDED */
1680.108 -
  1681.1 --- a/epoc32/include/xmlengcharacterdata.inl	Tue Mar 16 16:12:26 2010 +0000
  1681.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1681.3 @@ -1,39 +0,0 @@
  1681.4 -/*
  1681.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1681.6 -* All rights reserved.
  1681.7 -* This component and the accompanying materials are made available
  1681.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1681.9 -* which accompanies this distribution, and is available
 1681.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1681.11 -*
 1681.12 -* Initial Contributors:
 1681.13 -* Nokia Corporation - initial contribution.
 1681.14 -*
 1681.15 -* Contributors:
 1681.16 -*
 1681.17 -* Description:       Character data node functions
 1681.18 -*
 1681.19 -*/
 1681.20 -
 1681.21 -
 1681.22 -
 1681.23 -
 1681.24 -
 1681.25 -
 1681.26 -
 1681.27 -// -----------------------------------------------------------------------------
 1681.28 -// Default constructor
 1681.29 -// -----------------------------------------------------------------------------
 1681.30 -//
 1681.31 -inline TXmlEngCharacterData::TXmlEngCharacterData()
 1681.32 -    {
 1681.33 -    }
 1681.34 -
 1681.35 -// -----------------------------------------------------------------------------
 1681.36 -// Constructor
 1681.37 -// -----------------------------------------------------------------------------
 1681.38 -//
 1681.39 -inline TXmlEngCharacterData::TXmlEngCharacterData(void* aInternal):TXmlEngNode(aInternal)
 1681.40 -    {
 1681.41 -    }
 1681.42 -    
  1682.1 --- a/epoc32/include/xmlengchunkcontainer.h	Tue Mar 16 16:12:26 2010 +0000
  1682.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1682.3 @@ -1,104 +0,0 @@
  1682.4 -/*
  1682.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1682.6 -* All rights reserved.
  1682.7 -* This component and the accompanying materials are made available
  1682.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1682.9 -* which accompanies this distribution, and is available
 1682.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1682.11 -*
 1682.12 -* Initial Contributors:
 1682.13 -* Nokia Corporation - initial contribution.
 1682.14 -*
 1682.15 -* Contributors:
 1682.16 -*
 1682.17 -* Description:       All memory chunk data functions
 1682.18 -*
 1682.19 -*/
 1682.20 -
 1682.21 -
 1682.22 -
 1682.23 -
 1682.24 -
 1682.25 -
 1682.26 -
 1682.27 -#ifndef XMLENGINE_CHUNKCONTAINER_H_INCLUDED
 1682.28 -#define XMLENGINE_CHUNKCONTAINER_H_INCLUDED
 1682.29 -
 1682.30 -#include "xmlengdatacontainer.h"
 1682.31 -
 1682.32 -
 1682.33 -/**
 1682.34 -* Instance of TXmlEngChunkContainer class represents data stored in RChunks in DOM tree
 1682.35 -*
 1682.36 -* RChunk data is treated in general as text nodes in DOM tree.
 1682.37 -* Some of the fields in xmlNode structure are reused in order to save memory. 
 1682.38 -* Data is stored in memory referenced to by RChunk.
 1682.39 -*
 1682.40 -* Sample code for creating chunk container:
 1682.41 -* @code  
 1682.42 -*      RXmlEngDOMImplementation domImpl;
 1682.43 -*      domImpl.OpenL();        ///< opening DOM implementation object 
 1682.44 -*      RXmlEngDocument iDoc; 
 1682.45 -*      ///< create document element
 1682.46 -*      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
 1682.47 -*      ///< create RChunk object with chunkName name and size
 1682.48 -*      RChunk chunk;
 1682.49 -*      chunk.CreateGlobal(chunkName, size, maxSize);
 1682.50 -*      CleanupClosePushL(chunk); 
 1682.51 -*      ///< create chunk container from Rchunk object with offset to the 
 1682.52 -*      ///< binary data in chunk and binary data size in chunk (binarySize) 
 1682.53 -*      TXmlEngChunkContainer binData = iDoc.CreateChunkContainerL(
 1682.54 -*									cid,chunk,offset,binarySize); 
 1682.55 -*      ///< append chunkcontainer to the dom tree          
 1682.56 -*      TXmlEngNode ref = iDoc.DocumentElement().AppendChildL(binData);
 1682.57 -*       ///< closing all opened objects
 1682.58 -*      CleanupStack::PopAndDestroy();//chunk
 1682.59 -*      iDoc.Close();              
 1682.60 -*      domImpl.Close();
 1682.61 -* @endcode 
 1682.62 -*
 1682.63 -* @lib XmlEngineDOM.lib
 1682.64 -* @since S60 v3.2
 1682.65 -*/
 1682.66 -class TXmlEngChunkContainer : public TXmlEngDataContainer
 1682.67 -{
 1682.68 -public:
 1682.69 -    /**
 1682.70 -     * Get memory chunk reference
 1682.71 -     *
 1682.72 -     * @since S60 v3.2
 1682.73 -     * @return Memory chunk reference
 1682.74 -     * 
 1682.75 -     */
 1682.76 -    IMPORT_C RChunk& Chunk() const;
 1682.77 -
 1682.78 -    /**
 1682.79 -     * Get offset of binary data in memory chunk
 1682.80 -     *
 1682.81 -     * @since S60 v3.2
 1682.82 -     * @return Offset of binary data in memory chunk
 1682.83 -     */
 1682.84 -    IMPORT_C TUint ChunkOffset() const;   
 1682.85 -	
 1682.86 -protected:
 1682.87 -    /**
 1682.88 -     * Default constructor
 1682.89 -	 *
 1682.90 -     * @since S60 v3.1
 1682.91 -     */
 1682.92 -	inline TXmlEngChunkContainer(); 
 1682.93 -	
 1682.94 -    /**
 1682.95 -     * Constructor
 1682.96 -     *
 1682.97 -     * @since S60 v3.1
 1682.98 -     * @param aInternal node pointer
 1682.99 -     */
1682.100 -	inline TXmlEngChunkContainer(void* aInternal);
1682.101 -};
1682.102 -
1682.103 -
1682.104 -
1682.105 -#include "xmlengchunkcontainer.inl"
1682.106 -
1682.107 -#endif /* XMLENGINE_CHUNKCONTAINER_H_INCLUDED */
  1683.1 --- a/epoc32/include/xmlengchunkcontainer.inl	Tue Mar 16 16:12:26 2010 +0000
  1683.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1683.3 @@ -1,40 +0,0 @@
  1683.4 -/*
  1683.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1683.6 -* All rights reserved.
  1683.7 -* This component and the accompanying materials are made available
  1683.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1683.9 -* which accompanies this distribution, and is available
 1683.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1683.11 -*
 1683.12 -* Initial Contributors:
 1683.13 -* Nokia Corporation - initial contribution.
 1683.14 -*
 1683.15 -* Contributors:
 1683.16 -*
 1683.17 -* Description:       RChunk container functions
 1683.18 -*
 1683.19 -*/
 1683.20 -
 1683.21 -
 1683.22 -
 1683.23 -
 1683.24 -
 1683.25 -
 1683.26 -
 1683.27 -
 1683.28 -// -----------------------------------------------------------------------------
 1683.29 -// Default constructor
 1683.30 -// -----------------------------------------------------------------------------
 1683.31 -//
 1683.32 -inline TXmlEngChunkContainer::TXmlEngChunkContainer():TXmlEngDataContainer(NULL)
 1683.33 -    {
 1683.34 -    }
 1683.35 -    
 1683.36 -// -----------------------------------------------------------------------------
 1683.37 -// Constructor
 1683.38 -// -----------------------------------------------------------------------------
 1683.39 -//
 1683.40 -inline TXmlEngChunkContainer::TXmlEngChunkContainer(void* aInternal):TXmlEngDataContainer(aInternal)
 1683.41 -    {
 1683.42 -    }
 1683.43 -   
  1684.1 --- a/epoc32/include/xmlengcomment.h	Tue Mar 16 16:12:26 2010 +0000
  1684.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1684.3 @@ -1,59 +0,0 @@
  1684.4 -/*
  1684.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1684.6 -* All rights reserved.
  1684.7 -* This component and the accompanying materials are made available
  1684.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1684.9 -* which accompanies this distribution, and is available
 1684.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1684.11 -*
 1684.12 -* Initial Contributors:
 1684.13 -* Nokia Corporation - initial contribution.
 1684.14 -*
 1684.15 -* Contributors:
 1684.16 -*
 1684.17 -* Description:       Comment node functions
 1684.18 -*
 1684.19 -*/
 1684.20 -
 1684.21 -
 1684.22 -
 1684.23 -
 1684.24 -
 1684.25 -
 1684.26 -
 1684.27 -#ifndef XMLENGINE_COMMENT_H_INCLUDED
 1684.28 -#define XMLENGINE_COMMENT_H_INCLUDED
 1684.29 -
 1684.30 -#include "xmlengcharacterdata.h"
 1684.31 -
 1684.32 -/** 
 1684.33 - * Instance of TXmlEngComment class represents an XML comments in the DOM tree.
 1684.34 - * 
 1684.35 - * DOM spec: http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-FF21A306
 1684.36 - * 
 1684.37 - * @lib XmlEngineDOM.lib
 1684.38 - * @since S60 v3.1
 1684.39 - */
 1684.40 -class TXmlEngComment : public TXmlEngCharacterData
 1684.41 -{
 1684.42 -public:
 1684.43 -    /** 
 1684.44 -     * Default constructor
 1684.45 -     *
 1684.46 -     * @since S60 v3.1
 1684.47 -     */
 1684.48 -    inline TXmlEngComment();
 1684.49 -
 1684.50 -protected:
 1684.51 -    /** 
 1684.52 -     * Constructor
 1684.53 -     *
 1684.54 -     * @since S60 v3.1
 1684.55 -     * @param aInternal Comment pointer
 1684.56 -     */
 1684.57 -    inline TXmlEngComment(void* aInternal);
 1684.58 -};
 1684.59 -
 1684.60 -#include "xmlengcomment.inl"
 1684.61 -
 1684.62 -#endif /* XMLENGINE_COMMENT_H_INCLUDED */
  1685.1 --- a/epoc32/include/xmlengcomment.inl	Tue Mar 16 16:12:26 2010 +0000
  1685.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1685.3 @@ -1,39 +0,0 @@
  1685.4 -/*
  1685.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1685.6 -* All rights reserved.
  1685.7 -* This component and the accompanying materials are made available
  1685.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1685.9 -* which accompanies this distribution, and is available
 1685.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1685.11 -*
 1685.12 -* Initial Contributors:
 1685.13 -* Nokia Corporation - initial contribution.
 1685.14 -*
 1685.15 -* Contributors:
 1685.16 -*
 1685.17 -* Description:       Comment node functions
 1685.18 -*
 1685.19 -*/
 1685.20 -
 1685.21 -
 1685.22 -
 1685.23 -
 1685.24 -
 1685.25 -
 1685.26 -
 1685.27 -// -----------------------------------------------------------------------------
 1685.28 -// Default constructor
 1685.29 -// -----------------------------------------------------------------------------
 1685.30 -//
 1685.31 -inline TXmlEngComment::TXmlEngComment():TXmlEngCharacterData(NULL)
 1685.32 -    {
 1685.33 -    }
 1685.34 -    
 1685.35 -// -----------------------------------------------------------------------------
 1685.36 -// Constructor
 1685.37 -// -----------------------------------------------------------------------------
 1685.38 -//
 1685.39 -inline TXmlEngComment::TXmlEngComment(void* aInternal):TXmlEngCharacterData(aInternal)
 1685.40 -    {
 1685.41 -    }
 1685.42 -    
  1686.1 --- a/epoc32/include/xmlengdatacontainer.h	Tue Mar 16 16:12:26 2010 +0000
  1686.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1686.3 @@ -1,82 +0,0 @@
  1686.4 -/*
  1686.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1686.6 -* All rights reserved.
  1686.7 -* This component and the accompanying materials are made available
  1686.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1686.9 -* which accompanies this distribution, and is available
 1686.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1686.11 -*
 1686.12 -* Initial Contributors:
 1686.13 -* Nokia Corporation - initial contribution.
 1686.14 -*
 1686.15 -* Contributors:
 1686.16 -*
 1686.17 -* Description:       All binary data functions
 1686.18 -*
 1686.19 -*/
 1686.20 -
 1686.21 -
 1686.22 -
 1686.23 -
 1686.24 -
 1686.25 -
 1686.26 -
 1686.27 -#ifndef XMLENGINE_DATACONTAINER_H_INCLUDED
 1686.28 -#define XMLENGINE_DATACONTAINER_H_INCLUDED
 1686.29 -
 1686.30 -#include "xmlengnode.h"
 1686.31 -
 1686.32 -
 1686.33 -/**
 1686.34 -* TXmlEngDataContainer is a class for representing different types
 1686.35 -* of binary data in DOM tree.
 1686.36 -*
 1686.37 -* It can be cusom-serialized using MXmlEngDataSerializer interface which can 
 1686.38 -* be set in TXmlEngSerializationOptions used for saving the tree.
 1686.39 -*
 1686.40 -* @lib XmlEngineDOM.lib
 1686.41 -* @since S60 v3.2
 1686.42 -*/
 1686.43 -class TXmlEngDataContainer : public TXmlEngNode
 1686.44 -{
 1686.45 -public:
 1686.46 -
 1686.47 -    /**
 1686.48 -     * Get CID of data container.
 1686.49 -     *
 1686.50 -     * @since S60 v3.2
 1686.51 -     * @return Cid of data container
 1686.52 -     * 
 1686.53 -     */
 1686.54 -    IMPORT_C TPtrC8 Cid() const;
 1686.55 -        
 1686.56 -    /**
 1686.57 -     * Get data size in bytes
 1686.58 -     *
 1686.59 -     * @since S60 v3.1
 1686.60 -     * @return Number of bytes occupied by data
 1686.61 -     */
 1686.62 -    IMPORT_C TUint Size() const;
 1686.63 -
 1686.64 -protected:
 1686.65 -    /**
 1686.66 -     * Default constructor
 1686.67 -	 *
 1686.68 -     * @since S60 v3.1
 1686.69 -     */
 1686.70 -	inline TXmlEngDataContainer(); 
 1686.71 -
 1686.72 -    /**
 1686.73 -     * Constructor
 1686.74 -     *
 1686.75 -     * @since S60 v3.1
 1686.76 -     * @param aInternal node pointer
 1686.77 -     */
 1686.78 -	inline TXmlEngDataContainer(void* aInternal);
 1686.79 -};
 1686.80 -
 1686.81 -
 1686.82 - 
 1686.83 -#include "xmlengdatacontainer.inl"
 1686.84 -
 1686.85 -#endif /* XMLENGINE_DATACONTAINER_H_INCLUDED */
  1687.1 --- a/epoc32/include/xmlengdatacontainer.inl	Tue Mar 16 16:12:26 2010 +0000
  1687.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1687.3 @@ -1,43 +0,0 @@
  1687.4 -/*
  1687.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1687.6 -* All rights reserved.
  1687.7 -* This component and the accompanying materials are made available
  1687.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1687.9 -* which accompanies this distribution, and is available
 1687.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1687.11 -*
 1687.12 -* Initial Contributors:
 1687.13 -* Nokia Corporation - initial contribution.
 1687.14 -*
 1687.15 -* Contributors:
 1687.16 -*
 1687.17 -* Description:       Binary data node functions
 1687.18 -*
 1687.19 -*/
 1687.20 -
 1687.21 -
 1687.22 -
 1687.23 -
 1687.24 -
 1687.25 -
 1687.26 -
 1687.27 -
 1687.28 -
 1687.29 -// -----------------------------------------------------------------------------
 1687.30 -// Default constructor
 1687.31 -// -----------------------------------------------------------------------------
 1687.32 -//
 1687.33 -
 1687.34 -inline TXmlEngDataContainer::TXmlEngDataContainer()
 1687.35 -    {
 1687.36 -    }
 1687.37 -    
 1687.38 -// -----------------------------------------------------------------------------
 1687.39 -// Constructor
 1687.40 -// -----------------------------------------------------------------------------
 1687.41 -//
 1687.42 -
 1687.43 -inline TXmlEngDataContainer::TXmlEngDataContainer(void* aInternal):TXmlEngNode(aInternal)
 1687.44 -    {
 1687.45 -    }
 1687.46 -   
  1688.1 --- a/epoc32/include/xmlengdataserializer.h	Tue Mar 16 16:12:26 2010 +0000
  1688.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1688.3 @@ -1,51 +0,0 @@
  1688.4 -/*
  1688.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1688.6 -* All rights reserved.
  1688.7 -* This component and the accompanying materials are made available
  1688.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1688.9 -* which accompanies this distribution, and is available
 1688.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1688.11 -*
 1688.12 -* Initial Contributors:
 1688.13 -* Nokia Corporation - initial contribution.
 1688.14 -*
 1688.15 -* Contributors:
 1688.16 -*
 1688.17 -* Description:       Interface class describing class that may be used as
 1688.18 -*                serializer for binary data
 1688.19 -*
 1688.20 -*/
 1688.21 -
 1688.22 -
 1688.23 -
 1688.24 -
 1688.25 -
 1688.26 -
 1688.27 -
 1688.28 -#ifndef XMLENGINE_MDATASERIALIZER_H_INCLUDED
 1688.29 -#define XMLENGINE_MDATASERIALIZER_H_INCLUDED
 1688.30 -
 1688.31 -#include "xmlengnode.h"
 1688.32 -
 1688.33 -/**
 1688.34 - * MXmlEngDataSerializer interface used by XML Engine to serialize binary data for example binary data
 1688.35 - * stored in node, external memory chunk (RChunk) or file. This interface may be implemented by client application.
 1688.36 - *
 1688.37 - * @lib XmlEngineDOM.lib
 1688.38 - * @since S60 v3.2
 1688.39 - */
 1688.40 -class MXmlEngDataSerializer
 1688.41 -    {
 1688.42 -public:
 1688.43 -    /**
 1688.44 -     * Callback for serializing data
 1688.45 -     *
 1688.46 -     * @since S60 v3.1
 1688.47 -     * @param aNode is a node to serialize
 1688.48 -     * @return Replacement string for node data
 1688.49 -     */
 1688.50 -    virtual TPtrC8 SerializeDataL(TXmlEngNode aNode) = 0;
 1688.51 -    };
 1688.52 -
 1688.53 -
 1688.54 -#endif /* XMLENGINE_MDATASERIALIZER_H_INCLUDED */  
  1689.1 --- a/epoc32/include/xmlengdocument.h	Tue Mar 16 16:12:26 2010 +0000
  1689.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1689.3 @@ -1,573 +0,0 @@
  1689.4 -/*
  1689.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1689.6 -* All rights reserved.
  1689.7 -* This component and the accompanying materials are made available
  1689.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1689.9 -* which accompanies this distribution, and is available
 1689.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1689.11 -*
 1689.12 -* Initial Contributors:
 1689.13 -* Nokia Corporation - initial contribution.
 1689.14 -*
 1689.15 -* Contributors:
 1689.16 -*
 1689.17 -* Description:       Document node functions
 1689.18 -*
 1689.19 -*/
 1689.20 -
 1689.21 -
 1689.22 -
 1689.23 -
 1689.24 -
 1689.25 -
 1689.26 -#ifndef XMLENGINE_DOCUMENT_H_INCLUDED
 1689.27 -#define XMLENGINE_DOCUMENT_H_INCLUDED
 1689.28 -
 1689.29 -#include <f32file.h> 
 1689.30 -
 1689.31 -#include "xmlengnode.h"
 1689.32 -#include "xmlengserializationoptions.h"
 1689.33 -
 1689.34 -// FORWARD DECLARATION
 1689.35 -class RXmlEngDOMImplementation;
 1689.36 -
 1689.37 -/**
 1689.38 - * Instance of RXmlEngDocument class represents an XML document in the DOM tree.
 1689.39 - * 
 1689.40 - * Is a storage all nodes and information about XML data.
 1689.41 - * 
 1689.42 - * @lib XmlEngineDOM.lib
 1689.43 - * @since S60 v3.1
 1689.44 - */
 1689.45 -class RXmlEngDocument : public TXmlEngNode
 1689.46 -{
 1689.47 -public:    
 1689.48 -    /**
 1689.49 -     * Default constructor.
 1689.50 -     *
 1689.51 -     * Instance of RXmlEngDocument must be "opened" with one of OpenL() overloads.
 1689.52 -     *
 1689.53 -     * @since S60 v3.1
 1689.54 -	 */
 1689.55 -    IMPORT_C RXmlEngDocument();
 1689.56 -    
 1689.57 -    /** 
 1689.58 -     * Opens the document.
 1689.59 -     *
 1689.60 -	 * @since S60 v3.2
 1689.61 -	 * @param aDOMImpl DOM implementation object
 1689.62 -     * @return KErrNone if succeed.
 1689.63 -     */
 1689.64 -    IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl);
 1689.65 -	
 1689.66 -	/** 
 1689.67 -     * Opens the document.
 1689.68 -     *
 1689.69 -	 * @since S60 v3.2
 1689.70 -	 * @param aDOMImpl DOM implementation object
 1689.71 - 	 * @param aInternal Document pointer
 1689.72 -     * @return KErrNone if succeed.
 1689.73 -     */
 1689.74 -    IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, void* aInternal);
 1689.75 -    
 1689.76 -    /** 
 1689.77 -     * Opens the document.
 1689.78 -     *
 1689.79 -	 * @since S60 v3.2
 1689.80 -	 * @param aDOMImpl DOM implementation object
 1689.81 - 	 * @param aRoot element taht will be root of the DOM tree
 1689.82 -     * @return KErrNone if succeed.
 1689.83 -     */
 1689.84 -    IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, TXmlEngElement aRoot);
 1689.85 -    
 1689.86 -    /**
 1689.87 -     * Closes document
 1689.88 -     *
 1689.89 -     * @since S60 v3.1
 1689.90 -	 */
 1689.91 -    IMPORT_C  void Close();
 1689.92 -
 1689.93 -    /**
 1689.94 -     * Serializes document tree into a file. For nodes containing binary data in the form of BinaryDataContainer,
 1689.95 -     * FileContainer or ChunkContainer, client can implement custom serialization by implementing the interface
 1689.96 -     * MXmlEngDataSerializer and specify the pointer in iDataSerializer member of aSaveOptions parameter. If no
 1689.97 -     * custom serialization is specified, the binary data container nodes are serialized like text nodes.
 1689.98 -     *
 1689.99 -     * @since S60 v3.2
1689.100 -	 * @param aFileName A file name (with path)
1689.101 - 	 * @param aRoot Root node to be serialized	
1689.102 -	 * @param aSaveOptions Options that control how serialization is performed 
1689.103 -     * @return Number of byte written
1689.104 -     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1689.105 -     */
1689.106 -    IMPORT_C TInt SaveL( const TDesC& aFileName,
1689.107 -    					 TXmlEngNode aRoot = TXmlEngNode(),
1689.108 -    					 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1689.109 -   
1689.110 -    /**
1689.111 -     * Serializes document tree into a file.  For nodes containing binary data in the form of BinaryDataContainer,
1689.112 -     * FileContainer or ChunkContainer, client can implement custom serialization by implementing the interface
1689.113 -     * MXmlEngDataSerializer and specify the pointer in iDataSerializer member of aSaveOptions parameter. If no
1689.114 -     * custom serialization is specified, the binary data container nodes are serialized like text nodes.
1689.115 -     *
1689.116 -     * @since S60 v3.2
1689.117 -	 * @param aRFs File Server session
1689.118 -	 * @param aFileName A file name (with path)	 
1689.119 - 	 * @param aRoot Root node to be serialized	
1689.120 -	 * @param aSaveOptions Options that control how serialization is performed 
1689.121 -     * @return Number of byte written
1689.122 -     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1689.123 -     */                        
1689.124 -    IMPORT_C TInt SaveL( RFs& aRFs,
1689.125 -                         const TDesC& aFileName,
1689.126 -                         TXmlEngNode aRoot = TXmlEngNode(),
1689.127 -                         const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1689.128 -    
1689.129 -    /**
1689.130 -     * Serializes a document tree into provided output stream, which supports progressive writing of data.
1689.131 -     * For nodes containing binary data in the form of BinaryDataContainer, FileContainer or ChunkContainer,
1689.132 -     * client can implement custom serialization by implementing the interface MXmlEngDataSerializer and specify
1689.133 -     * the pointer in iDataSerializer member of aSaveOptions parameter. If no custom serialization is specified,
1689.134 -     * the binary data container nodes are serialized like text nodes.
1689.135 -     *
1689.136 -     * @since S60 v3.1
1689.137 -	 * @param aStream  An output stream to write serialized DOM tree
1689.138 -	 * @param aRoot Root node to be serialized
1689.139 -	 * @param aSaveOptions Options that control how serialization is performed	 	 
1689.140 -     * @return Number of byte written
1689.141 -     * @leave KXmlEngErrWrongUseOfAPI or one of general codes (e.g.KErrNoMemory)
1689.142 -     * @see MXmlEngOutputStream
1689.143 -     */
1689.144 -    IMPORT_C TInt SaveL( MXmlEngOutputStream& aStream,
1689.145 -						 TXmlEngNode aRoot = TXmlEngNode(),
1689.146 -						 const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1689.147 -
1689.148 -    /**
1689.149 -     * Saves document tree into memory buffer
1689.150 -     *
1689.151 -     * @since S60 v3.1
1689.152 -	 * @param aBuffer Resulting buffer
1689.153 -     * @param aRoot A "root" of the subtree to serialize
1689.154 -     * @param aSaveOptions Various options to be effective during serialization
1689.155 -     * @return Number of bytes in updated buffer     
1689.156 -     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding.
1689.157 -     *
1689.158 -     * @note Result returned via aBuffer argument owns the memory buffer; it is up to 
1689.159 -     *      method caller to free it like in this sample:
1689.160 -     *
1689.161 -     * @see TXmlEngSerializationOptions
1689.162 -     */
1689.163 -    IMPORT_C TInt SaveL(RBuf8& aBuffer, 
1689.164 -    					TXmlEngNode aRoot = TXmlEngNode(), 
1689.165 -                        const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions()) const;
1689.166 -   
1689.167 -    /**
1689.168 -     * Creates complete copy of the document
1689.169 -     *
1689.170 -     * @since S60 v3.1
1689.171 -	 * @return Complete copy of the document tree
1689.172 -     */
1689.173 -	IMPORT_C RXmlEngDocument CloneDocumentL() const;
1689.174 -
1689.175 -    /**
1689.176 -     * Creates new element from specific namespace to be a root of the document tree.
1689.177 -     * Any existing document element of the document is destroyed
1689.178 -     *
1689.179 -     * @since S60 v3.1
1689.180 -	 * @param aName Element name
1689.181 -     * @param aNamespaceUri Element namespace URI
1689.182 -     * @param aPrefix Element namemespace prefix
1689.183 -     * @return A new root element
1689.184 -     */
1689.185 -    IMPORT_C TXmlEngElement CreateDocumentElementL(const TDesC8& aName, 
1689.186 -                                             const TDesC8& aNamespaceUri = KNullDesC8, 
1689.187 -                                             const TDesC8& aPrefix = KNullDesC8);
1689.188 -
1689.189 -    /**
1689.190 -     * Replaces (and destroys) document element with another one
1689.191 -     * New document element is added as the last child to the document node
1689.192 -     *
1689.193 -     * @since S60 v3.1
1689.194 -	 * @param aNewDocElement New document tree
1689.195 -     *
1689.196 -     * @note Use TXmlEngElement::ReconcileNamespacesL() on the new document element
1689.197 -     *      if it or its descendants can contain references to namespace declarations
1689.198 -     *      out of the element
1689.199 -     * @see TXmlEngElement::ReconcileNamespacesL()
1689.200 -     */
1689.201 -    IMPORT_C void SetDocumentElement(TXmlEngElement aNewDocElement);
1689.202 -
1689.203 -    /**
1689.204 -     * Get document encoding
1689.205 -     *
1689.206 -     * @since S60 v3.1
1689.207 -	 * @return Encoding of the source XML data.
1689.208 -     */
1689.209 -    IMPORT_C TPtrC8 XmlEncoding() const;
1689.210 -
1689.211 -    /**
1689.212 -     * Get xml version
1689.213 -     *
1689.214 -     * @since S60 v3.1
1689.215 -	 * @return Version number of XML taken from XML declaration
1689.216 -     */
1689.217 -    IMPORT_C TPtrC8 XmlVersion() const;
1689.218 -  
1689.219 -    /**
1689.220 -     * Retrieves base URI (if defined) of the document or NULL
1689.221 -     *
1689.222 -     * @since S60 v3.1
1689.223 -	 * @return Document URI
1689.224 -     */
1689.225 -    IMPORT_C TPtrC8 DocumentUri() const;
1689.226 -
1689.227 -    /**
1689.228 -     * Check if document is standalone
1689.229 -     *
1689.230 -     * @since S60 v3.1
1689.231 -	 * @return Whether standalone="true" was specified in XML declaration in the source XML file.
1689.232 -     */
1689.233 -    IMPORT_C TBool IsStandalone() const;
1689.234 -
1689.235 -    /**
1689.236 -     * Sets XML version number to be shown in XML declaration when document is serialized.
1689.237 -     *
1689.238 -     * @since S60 v3.1
1689.239 -	 * @param aVersion New version
1689.240 -     */
1689.241 -    IMPORT_C void  SetXmlVersionL(const TDesC8& aVersion);
1689.242 -
1689.243 -    /**
1689.244 -     * Sets location of the document.
1689.245 -     * Document's URI is used as top-level base URI definition.
1689.246 -     *
1689.247 -     * @since S60 v3.1
1689.248 -	 * @param aUri New document URI
1689.249 -     */
1689.250 -    IMPORT_C void  SetDocumentUriL(const TDesC8& aUri);
1689.251 -
1689.252 -    /**
1689.253 -     * Sets 'standalone' attribute of XML declaration for a document
1689.254 -     *
1689.255 -     * @since S60 v3.1
1689.256 -	 * @param aStandalone Is document standalone
1689.257 -     */
1689.258 -    IMPORT_C void  SetStandalone(TBool aStandalone);
1689.259 -
1689.260 -    /**
1689.261 -     * Get dom implementation.
1689.262 -     *
1689.263 -     * @since S60 v3.1
1689.264 -	 * @return Object that represents current DOM implementation
1689.265 -     *
1689.266 -     * @note There is no practical use of implementation object in this version
1689.267 -     *      of API other than for creating new RXmlEngDocument instances, but
1689.268 -     *      it will change in the future, when an implementation object 
1689.269 -     *      is used for changing configuration settings at run-time.
1689.270 -     */
1689.271 -    IMPORT_C RXmlEngDOMImplementation Implementation() const;
1689.272 -    
1689.273 -    /**
1689.274 -     * Get document element
1689.275 -     *
1689.276 -     * @since S60 v3.1
1689.277 -	 * @return A document element - the top-most element in the document tree
1689.278 -     */
1689.279 -    IMPORT_C TXmlEngElement DocumentElement() const;
1689.280 -
1689.281 -    /**
1689.282 -     * Sets "document" property on the node and all its descendants to be this RXmlEngDocument node 
1689.283 -     *
1689.284 -     * @since S60 v3.1
1689.285 -	 * @param aSource Node that should be added.
1689.286 -     * @return Adopted node
1689.287 -     */
1689.288 -    IMPORT_C TXmlEngNode AdoptNodeL(TXmlEngNode aSource);
1689.289 -
1689.290 -    /**
1689.291 -     * Creates new attribute,
1689.292 -     *
1689.293 -     * @since S60 v3.1
1689.294 -	 * @param aName Name of the atribute; no prefix allowed
1689.295 -     * @param aValue Value of the attribute (optional)
1689.296 -     * @return Handler to the newly created attribute 
1689.297 -     * 
1689.298 -     * @note 
1689.299 -     * aValue should represent a correct value of an attribute if it is put as is into XML file
1689.300 -     * (with all characters correctly escaped with entity references when XML spec requires)
1689.301 -     * 
1689.302 -     * TXmlEngElement class provides a rich set of attribute creation methods, which not
1689.303 -     * just create attribute but also link it into element.
1689.304 -     * 
1689.305 -     * There is no way to create attributes with namespace (despite the DOM spec); 
1689.306 -     * you have to use one of the TXmlEngElement::AddNewAttributeL(..) methods instead
1689.307 -     *
1689.308 -     * Returned handler is the only reference to the allocated memory
1689.309 -     * until you have attached the attribute to some element node
1689.310 -     */
1689.311 -    IMPORT_C TXmlEngAttr CreateAttributeL(const TDesC8& aName,
1689.312 -                                    const TDesC8& aValue = KNullDesC8);
1689.313 -
1689.314 -    /**
1689.315 -     * Creates new text node and copies the content string into it.
1689.316 -     *
1689.317 -     * @since S60 v3.1
1689.318 -	 * @param aCharacters Text node content
1689.319 -     * @return Created node
1689.320 -     */
1689.321 -    IMPORT_C TXmlEngTextNode CreateTextNodeL(const TDesC8& aCharacters = KNullDesC8);
1689.322 -
1689.323 -    /**
1689.324 -     * Creates new binary container and copies the content string into it.
1689.325 -     * Pointer to the container is stored in the document's 
1689.326 -     * data container list that can be fetched using GetDataContainerList().
1689.327 -     * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )
1689.328 -     *
1689.329 -     * @since S60 v3.2
1689.330 -	 * @param aCid Content identifier     
1689.331 -	 * @param aData Binary octets
1689.332 -     * @return Created node
1689.333 -     */
1689.334 -    IMPORT_C TXmlEngBinaryContainer CreateBinaryContainerL( const TDesC8& aCid,
1689.335 -    												  const TDesC8& aData );
1689.336 -
1689.337 -    /**
1689.338 -     * Creates new chunk container that stores reference to 
1689.339 -     * memory chunk.
1689.340 -     * Pointer to the container is stored in the document's 
1689.341 -     * data container list that can be fetched using GetDataContainerList().
1689.342 -     * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )     
1689.343 -     *
1689.344 -     * @since S60 v3.2
1689.345 -	 * @param aCid Content identifier 
1689.346 -	 * @param aChunk RChunk reference
1689.347 -	 * @param aChunkOffset Offset to the binary data in aChunk
1689.348 -	 * @param aDataSize Size of binary data in aChunk
1689.349 -     * @return Created node
1689.350 -     */
1689.351 -    IMPORT_C TXmlEngChunkContainer CreateChunkContainerL( const TDesC8& aCid, 
1689.352 -    												const RChunk& aChunk,
1689.353 -					                                const TInt aChunkOffset,
1689.354 -					                                const TInt aDataSize );
1689.355 -
1689.356 -    /**
1689.357 -     * Creates new file container that stores reference to 
1689.358 -     * file in file system.
1689.359 -     * Pointer to the container is stored in the document's 
1689.360 -     * data container list that can be fetched using GetDataContainerList().
1689.361 -     * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )     
1689.362 -     *
1689.363 -     * @since S60 v3.2
1689.364 -	 * @param aCid Content identifier
1689.365 -	 * @param aFile RFile reference
1689.366 -     * @return Created node
1689.367 -     */
1689.368 -    IMPORT_C TXmlEngFileContainer CreateFileContainerL( const TDesC8& aCid, 
1689.369 -    											  const RFile& aFile );
1689.370 -
1689.371 -    /**
1689.372 -     * Creates new element node that belongs to specific namespace.
1689.373 -     * A namespace declaration node is created on the element.
1689.374 -     *
1689.375 -     * @since S60 v3.1
1689.376 -	 * @param aNamespaceUri Namespace of new element
1689.377 -     * @param aPrefix Prefix to use for namespace binding and QName of the element
1689.378 -     * @param aLocalName Local name of the element 
1689.379 -     * @return Created node
1689.380 -     * @note If null namespace uri is provided element will be created without namespace.
1689.381 -     */  
1689.382 -    IMPORT_C TXmlEngElement CreateElementL(const TDesC8& aLocalName, 
1689.383 -                                     const TDesC8& aNamespaceUri = KNullDesC8, 
1689.384 -                                     const TDesC8& aPrefix = KNullDesC8);
1689.385 -
1689.386 -    /**
1689.387 -     * Creates new comment node and copies the content string into it.
1689.388 -     *
1689.389 -     * @since S60 v3.1
1689.390 -	 * @param aText New comment
1689.391 -     * @return Created node
1689.392 -     */
1689.393 -    IMPORT_C TXmlEngComment CreateCommentL(const TDesC8& aText = KNullDesC8);
1689.394 -
1689.395 -    /**
1689.396 -     * Creates new CDATA section node and copies the content into it.
1689.397 -     *
1689.398 -     * @since S60 v3.1
1689.399 -	 * @param aContents CDATASection content
1689.400 -     * @return Created node
1689.401 -     */
1689.402 -    IMPORT_C TXmlEngCDATASection CreateCDATASectionL(const TDesC8& aContents = KNullDesC8);
1689.403 -
1689.404 -    /**
1689.405 -     * Creates new entity reference node for aEntityName entity
1689.406 -     *
1689.407 -     * @since S60 v3.1
1689.408 -	 * @param aEntityRef is a string in one of the forms:
1689.409 -     *     -  <i>name</i>
1689.410 -     *     -  <b>&</b><i>name</i>
1689.411 -     *     -  <b>&</b><i>name</i><b>;</b>
1689.412 -     * where <i>name</i> is the name of the entity
1689.413 -     * @return Created node
1689.414 -     * 
1689.415 -     * @note &lt; , &gt; , &apos; , &quot; and other <b>predefined</b> entity references
1689.416 -     *      should not be created with this method. These entity refs are rather 
1689.417 -     *      "character references" and encoded/decoded automatically.
1689.418 -     */
1689.419 -    IMPORT_C TXmlEngEntityReference CreateEntityReferenceL(const TDesC8& aEntityRef);
1689.420 -
1689.421 -    /**
1689.422 -     * Creates new processing instruction node and set its "target" and "data" values
1689.423 -     *
1689.424 -     * @since S60 v3.1
1689.425 -	 * @param aTarget Target
1689.426 -     * @param aData Data
1689.427 -     * @return Created node
1689.428 -     */
1689.429 -    IMPORT_C TXmlEngProcessingInstruction CreateProcessingInstructionL(const TDesC8& aTarget, 
1689.430 -                                                                 const TDesC8& aData = KNullDesC8);
1689.431 -                                                                 
1689.432 -    /**
1689.433 -     * Registers specified attribute as xml:id.
1689.434 -     * First parametr allows user, to specify sub-tree, not to search whole document.
1689.435 -     * To search whole tree see @see RegisterXmlId(const TDesC8,const TDesC8)
1689.436 -     *
1689.437 -     * @since S60 v3.2
1689.438 -     * @param aStartElement Root of tree to search (should be part of the document)
1689.439 -     * @param aLocalName Name of attribute
1689.440 -	 * @param aNamespaceUri Namespace of new element (default empty)
1689.441 -     */
1689.442 -    IMPORT_C void RegisterXmlIdL(TXmlEngElement aStartElement,
1689.443 -                                 const TDesC8& aLocalName, 
1689.444 -                                 const TDesC8& aNamespaceUri = KNullDesC8);
1689.445 -
1689.446 -    /**
1689.447 -     * Registers specified attribute as xml:id.
1689.448 -     * Not to search whole tree see @see RegisterXmlId(TXmlEngElement,const TDesC8,const TDesC8)
1689.449 -     *
1689.450 -     * @since S60 v3.2
1689.451 -     * @param aLocalName Name of attribute
1689.452 -	 * @param aNamespaceUri Namespace of new element (default empty)
1689.453 -     */
1689.454 -    IMPORT_C void RegisterXmlIdL(const TDesC8& aLocalName, 
1689.455 -                                 const TDesC8& aNamespaceUri = KNullDesC8);
1689.456 -       
1689.457 -    /**
1689.458 -     * Looks for element with specified value of xml:id
1689.459 -     *
1689.460 -     * @since S60 v3.2
1689.461 -	 * @param aValue Name of attribute
1689.462 -     * @return found element or null-element.
1689.463 -     */
1689.464 -    IMPORT_C TXmlEngElement FindElementByXmlIdL(const TDesC8& aValue ) const;  
1689.465 -
1689.466 -    /**
1689.467 -     * Retrieves an array of data containers owned by this document.
1689.468 -     *
1689.469 -	 * @note The document ceases to be the owner of data container when data container
1689.470 -	 *		 (or one of its predecessors) is removed from the document or data container 
1689.471 -	 * 	 	 (or one of its predecessors) becomes a part of another document.
1689.472 -	 *		 Unlinking data container (or one of its predecessors) doesn't remove
1689.473 -	 *		 ownership of data container from the this document so the list might
1689.474 -	 *		 contain containers that are not linked to this document anymore.    
1689.475 -     * @since S60 v3.2
1689.476 -	 * @param aList Array of data containers
1689.477 -     */
1689.478 -    IMPORT_C void GetDataContainerList( RArray<TXmlEngDataContainer>& aList );         
1689.479 -                                                                 
1689.480 -protected:
1689.481 -    friend class RXmlEngDOMParser;
1689.482 -    friend class TXmlEngNode;
1689.483 -    friend class TXmlEngAttr;
1689.484 -    friend class TXmlEngElement;
1689.485 -    friend class RXmlEngDOMImplementation;
1689.486 -
1689.487 -protected:
1689.488 -    /**
1689.489 -     * Constructor
1689.490 -     *
1689.491 -     * @since S60 v3.1
1689.492 -	 * @param aInternal Document pointer
1689.493 -	 */
1689.494 -    inline RXmlEngDocument(void* aInternal);
1689.495 -
1689.496 -    /**
1689.497 -     * DISABLED for document; CloneDocumentL() must be used
1689.498 -     *
1689.499 -     * @since S60 v3.1
1689.500 -	 */
1689.501 -    inline TXmlEngNode CopyL() const; 
1689.502 -
1689.503 -    /**
1689.504 -     * DISABLED for document; Destroy() must be used
1689.505 -     *
1689.506 -     * @since S60 v3.1
1689.507 -	 */    
1689.508 -    inline void Remove();
1689.509 -
1689.510 -    /**
1689.511 -     * DISABLED for document; Destroy() must be used
1689.512 -     *
1689.513 -     * @since S60 v3.1
1689.514 -	 */ 
1689.515 -    inline void ReplaceWith(TXmlEngNode aNode);
1689.516 -private:
1689.517 -    /**
1689.518 -     * Main implementation of SaveL() functions that puts together all common code
1689.519 -     * and serializes to buffer or output stream.
1689.520 -     *
1689.521 -     * @since S60 v3.2
1689.522 -	 * @param aNode Root node to be serialized     
1689.523 -	 * @param aBuffer buffer with serialized data.
1689.524 -	 * @param aOutputStream stream that should be used during serialization
1689.525 -	 * @param aSaveOptions Options that control how serialization is performed
1689.526 -     * @return Number of bytes written
1689.527 -     * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.     
1689.528 -	 */ 
1689.529 -	TInt SaveNodeL( TXmlEngNode aNode,
1689.530 -					RBuf8& aBuffer,
1689.531 -               	    MXmlEngOutputStream* aOutputStream = NULL,
1689.532 -               	    TXmlEngSerializationOptions aOpt = TXmlEngSerializationOptions()) const;	
1689.533 -
1689.534 -    /**
1689.535 -     * "Secondary" constructor that should be called on every newly created document node.
1689.536 -     * Initializes container for nodes owned by the document.
1689.537 -     *
1689.538 -     * The need for such secondary constructor is in the fact that underlying libxml2
1689.539 -     * library knows nothing about ownership of unlinked nodes -- this feature is
1689.540 -     * implemented in C++ DOM wrapper.
1689.541 -     *
1689.542 -     * @since S60 v3.1
1689.543 -	 */ 
1689.544 -    void InitOwnedNodeListL();
1689.545 -
1689.546 -    /**
1689.547 -     * Adds aNode to the list of owned nodes - the nodes that are not linked yet into a 
1689.548 -     * document tree, but still destroyed with the document that owns them.
1689.549 -     *
1689.550 -     * @since S60 v3.1
1689.551 -	 * @param aNode Node that should be added to document
1689.552 -     *
1689.553 -     * In case of OOM (during growing node list container) the argument node is freed with
1689.554 -     * xmlFreeNode()
1689.555 -     */ 
1689.556 -    void TakeOwnership(TXmlEngNode aNode);
1689.557 -
1689.558 -    /**
1689.559 -     * Remove aNode from the list of owned nodes.
1689.560 -     *
1689.561 -     * @since S60 v3.1
1689.562 -	 * @param aNode Node that should be removed from document
1689.563 -     */
1689.564 -    void RemoveOwnership(TXmlEngNode aNode);
1689.565 -
1689.566 -protected:
1689.567 -    /**  Pointer to DOM implementation object */
1689.568 -    RXmlEngDOMImplementation* iImpl;
1689.569 -
1689.570 -};// class RXmlEngDocument
1689.571 -
1689.572 -
1689.573 -
1689.574 -#include "xmlengdocument.inl"
1689.575 -
1689.576 -#endif /* XMLENGINE_DOCUMENT_H_INCLUDED */
  1690.1 --- a/epoc32/include/xmlengdocument.inl	Tue Mar 16 16:12:26 2010 +0000
  1690.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1690.3 @@ -1,33 +0,0 @@
  1690.4 -/*
  1690.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1690.6 -* All rights reserved.
  1690.7 -* This component and the accompanying materials are made available
  1690.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1690.9 -* which accompanies this distribution, and is available
 1690.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1690.11 -*
 1690.12 -* Initial Contributors:
 1690.13 -* Nokia Corporation - initial contribution.
 1690.14 -*
 1690.15 -* Contributors:
 1690.16 -*
 1690.17 -* Description:       Document node functions
 1690.18 -*
 1690.19 -*/
 1690.20 -
 1690.21 -
 1690.22 -
 1690.23 -
 1690.24 -
 1690.25 -
 1690.26 -
 1690.27 -
 1690.28 -
 1690.29 -// -----------------------------------------------------------------------------
 1690.30 -// Constructor
 1690.31 -// -----------------------------------------------------------------------------
 1690.32 -//
 1690.33 -inline RXmlEngDocument::RXmlEngDocument(void* aInternal):TXmlEngNode(aInternal)
 1690.34 -    {
 1690.35 -    }
 1690.36 -    
  1691.1 --- a/epoc32/include/xmlengdocumentfragment.h	Tue Mar 16 16:12:26 2010 +0000
  1691.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1691.3 @@ -1,60 +0,0 @@
  1691.4 -/*
  1691.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1691.6 -* All rights reserved.
  1691.7 -* This component and the accompanying materials are made available
  1691.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1691.9 -* which accompanies this distribution, and is available
 1691.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1691.11 -*
 1691.12 -* Initial Contributors:
 1691.13 -* Nokia Corporation - initial contribution.
 1691.14 -*
 1691.15 -* Contributors:
 1691.16 -*
 1691.17 -* Description:       Document fragment node functions
 1691.18 -*
 1691.19 -*/
 1691.20 -
 1691.21 -
 1691.22 -
 1691.23 -
 1691.24 -
 1691.25 -
 1691.26 -
 1691.27 -#ifndef XMLENGINE_DOCUMENTFRAGMENT_H_INCLUDED
 1691.28 -#define XMLENGINE_DOCUMENTFRAGMENT_H_INCLUDED
 1691.29 -
 1691.30 -#include "xmlengnode.h"
 1691.31 -
 1691.32 -
 1691.33 -
 1691.34 -/** 
 1691.35 - * Instance of TXmlEngDocumentFragment class represents an document fragment of the DOM tree.
 1691.36 - * 
 1691.37 - * @lib XmlEngineDOM.lib
 1691.38 - * @since S60 v3.1
 1691.39 - */
 1691.40 -class TXmlEngDocumentFragment : public TXmlEngNode
 1691.41 -{
 1691.42 -public:
 1691.43 -    /** 
 1691.44 -     * Default constructor
 1691.45 -     *
 1691.46 -     * @since S60 v3.1
 1691.47 -     */
 1691.48 -	inline TXmlEngDocumentFragment();
 1691.49 -
 1691.50 -protected:
 1691.51 -	/** 
 1691.52 -     * Constructor
 1691.53 -     *
 1691.54 -     * @since S60 v3.1
 1691.55 -     * @param aInternal Document fragment pointer
 1691.56 -     */
 1691.57 -	inline TXmlEngDocumentFragment(void* aInternal);
 1691.58 -};
 1691.59 -
 1691.60 -#include "xmlengdocumentfragment.inl"
 1691.61 -
 1691.62 -#endif /* XMLENGINE_DOCUMENTFRAGMENT_H_INCLUDED */
 1691.63 -
  1692.1 --- a/epoc32/include/xmlengdocumentfragment.inl	Tue Mar 16 16:12:26 2010 +0000
  1692.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1692.3 @@ -1,40 +0,0 @@
  1692.4 -/*
  1692.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1692.6 -* All rights reserved.
  1692.7 -* This component and the accompanying materials are made available
  1692.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1692.9 -* which accompanies this distribution, and is available
 1692.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1692.11 -*
 1692.12 -* Initial Contributors:
 1692.13 -* Nokia Corporation - initial contribution.
 1692.14 -*
 1692.15 -* Contributors:
 1692.16 -*
 1692.17 -* Description:       Document fragment node functions
 1692.18 -*
 1692.19 -*/
 1692.20 -
 1692.21 -
 1692.22 -
 1692.23 -
 1692.24 -
 1692.25 -
 1692.26 -
 1692.27 -// -----------------------------------------------------------------------------
 1692.28 -// Default constructor
 1692.29 -// -----------------------------------------------------------------------------
 1692.30 -//
 1692.31 -inline TXmlEngDocumentFragment::TXmlEngDocumentFragment():TXmlEngNode(NULL)
 1692.32 -    {
 1692.33 -    }
 1692.34 -    
 1692.35 -
 1692.36 -// -----------------------------------------------------------------------------
 1692.37 -// Constructor
 1692.38 -// -----------------------------------------------------------------------------
 1692.39 -//
 1692.40 -inline TXmlEngDocumentFragment::TXmlEngDocumentFragment(void* aInternal):TXmlEngNode(aInternal)
 1692.41 -    {
 1692.42 -    }
 1692.43 -    
  1693.1 --- a/epoc32/include/xmlengdom.h	Tue Mar 16 16:12:26 2010 +0000
  1693.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1693.3 @@ -1,56 +0,0 @@
  1693.4 -/*
  1693.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1693.6 -* All rights reserved.
  1693.7 -* This component and the accompanying materials are made available
  1693.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1693.9 -* which accompanies this distribution, and is available
 1693.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1693.11 -*
 1693.12 -* Initial Contributors:
 1693.13 -* Nokia Corporation - initial contribution.
 1693.14 -*
 1693.15 -* Contributors:
 1693.16 -*
 1693.17 -* Description:       This file is to be included by DOM API clients
 1693.18 -*
 1693.19 -*/
 1693.20 -
 1693.21 -
 1693.22 -
 1693.23 -
 1693.24 -
 1693.25 -
 1693.26 -
 1693.27 -#ifndef XMLENGINE_DOM_H_INCLEDED
 1693.28 -#define XMLENGINE_DOM_H_INCLEDED
 1693.29 -
 1693.30 -#include "XmlEngAttr.h"
 1693.31 -#include "XmlEngElement.h"
 1693.32 -#include "XmlEngDocument.h"
 1693.33 -#include "XmlEngElement.h"
 1693.34 -#include "XmlEngCDATASection.h"
 1693.35 -#include "XmlEngProcessingInstruction.h"
 1693.36 -#include "XmlEngComment.h"
 1693.37 -#include "XmlEngDocumentFragment.h"
 1693.38 -#include "XmlEngEntityReference.h"
 1693.39 -#include "XmlEngNamespace.h"
 1693.40 -#include "XmlEngText.h"
 1693.41 -
 1693.42 -#include "XmlEngBinaryContainer.h"
 1693.43 -#include "XmlEngChunkContainer.h"
 1693.44 -#include "XmlEngFileContainer.h"
 1693.45 -
 1693.46 -#include "XmlEngNodeList.h"
 1693.47 -
 1693.48 -#include "XmlEngErrors.h"
 1693.49 -#include "xmlengserializationoptions.h"
 1693.50 -#include "xmlengnodefilter.h"
 1693.51 -#include "xmlengoutputstream.h"	//pjj18 new
 1693.52 -#include "xmlengdataserializer.h"		//pjj18 new
 1693.53 -#include "xmlenguserdata.h"
 1693.54 -#include "xmlengdomimplementation.h"
 1693.55 -#include "xmlengdomparser.h"
 1693.56 -
 1693.57 -
 1693.58 -#endif // XMLENGINE_DOM_H_INCLEDED
 1693.59 -
  1694.1 --- a/epoc32/include/xmlengdomimplementation.h	Tue Mar 16 16:12:26 2010 +0000
  1694.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1694.3 @@ -1,70 +0,0 @@
  1694.4 -/*
  1694.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1694.6 -* All rights reserved.
  1694.7 -* This component and the accompanying materials are made available
  1694.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1694.9 -* which accompanies this distribution, and is available
 1694.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1694.11 -*
 1694.12 -* Initial Contributors:
 1694.13 -* Nokia Corporation - initial contribution.
 1694.14 -*
 1694.15 -* Contributors:
 1694.16 -*
 1694.17 -* Description:       DOM implementation functions
 1694.18 -*
 1694.19 -*/
 1694.20 -
 1694.21 -
 1694.22 -
 1694.23 -
 1694.24 -
 1694.25 -
 1694.26 -
 1694.27 -#ifndef XMLENGINE_DOMIMPLEMENTATION_H_INCLUDED
 1694.28 -#define XMLENGINE_DOMIMPLEMENTATION_H_INCLUDED
 1694.29 -
 1694.30 -#include <e32base.h>
 1694.31 -
 1694.32 -/**
 1694.33 - * The RXmlEngDOMImplementation interface provides a number of methods for performing 
 1694.34 - * operations that are independent of any particular instance of the document object model. 
 1694.35 - *    
 1694.36 - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-102161490
 1694.37 - *
 1694.38 - * @lib XmlEngineDOM.lib
 1694.39 - * @since S60 v3.1
 1694.40 - */
 1694.41 -class RXmlEngDOMImplementation
 1694.42 -{
 1694.43 -  public:
 1694.44 -    
 1694.45 -    
 1694.46 -	/**
 1694.47 -     * Open method needed to initialize the XmlEngineDOM library and should be called before using any
 1694.48 -     * class/function from this library. The initialization is required in every client thread in which
 1694.49 -     * it used. Calling this method multiple times in a thread is allowed. There should be a call to Close()
 1694.50 -     * for every call to Open, per thread.
 1694.51 -     *
 1694.52 -     * @since S60 v3.2
 1694.53 -     * @param aHeap - pointer to client created heap. If aHeap argument is NULL (by default) 
 1694.54 -     *                client thread's default heap is used.- NOT IMPLEMENTED YET
 1694.55 -     * @return Document handle
 1694.56 -     */
 1694.57 -    IMPORT_C void OpenL( RHeap* aHeap = NULL );
 1694.58 -
 1694.59 -    /**
 1694.60 -     * Close method. It does cleanup of resources used by XmlengineDOM library. Client should call this
 1694.61 -     * method at the end of library usage. The library should not be used after this call. If needed, client
 1694.62 -     * can initialize the library again by calling Open() method. Libxml2 uses Symbian implementation of POSIX
 1694.63 -     * standard libraries. During closure of XmlEngineDOM library, the standard library is also closed by default.
 1694.64 -     * User can choose not to close standard libraries when XmlEngine shuts down, by specifying FALSE in aCloseStdLib flag.
 1694.65 -     * 
 1694.66 -     * @since S60 v3.2
 1694.67 -     * @param aCloseStdLib A flag, if TRUE will close the STDLIB resources belonging to this thread.
 1694.68 -     *                     else STDLIB is not closed.
 1694.69 -     */
 1694.70 -    IMPORT_C void Close(TBool aCloseStdLib = ETrue);
 1694.71 -};
 1694.72 -
 1694.73 -#endif /* XMLENGINE_DOMIMPLEMENTATION_H_INCLUDED */
  1695.1 --- a/epoc32/include/xmlengdomparser.h	Tue Mar 16 16:12:26 2010 +0000
  1695.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1695.3 @@ -1,184 +0,0 @@
  1695.4 -/*
  1695.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1695.6 -* All rights reserved.
  1695.7 -* This component and the accompanying materials are made available
  1695.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1695.9 -* which accompanies this distribution, and is available
 1695.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1695.11 -*
 1695.12 -* Initial Contributors:
 1695.13 -* Nokia Corporation - initial contribution.
 1695.14 -*
 1695.15 -* Contributors:
 1695.16 -*
 1695.17 -* Description:       DOM parser functions
 1695.18 -*
 1695.19 -*/
 1695.20 -
 1695.21 -
 1695.22 -
 1695.23 -
 1695.24 -
 1695.25 -
 1695.26 -
 1695.27 -#ifndef XMLENGINE_DOMPARSER_H_INCLUDED
 1695.28 -#define XMLENGINE_DOMPARSER_H_INCLUDED
 1695.29 -
 1695.30 -#include <f32file.h>
 1695.31 -
 1695.32 -class RXmlEngDOMImplementation;
 1695.33 -class RXmlEngDocument;
 1695.34 -
 1695.35 -/** 
 1695.36 - * DOM parser class implements methods for parsing XML data.
 1695.37 - *
 1695.38 - * Parse XML data in one chunk. Data can be parsed from file 
 1695.39 - * or memory buffer.
 1695.40 - *
 1695.41 - * Sample code for parsing from buffer:
 1695.42 - * @code
 1695.43 - *      RXmlEngDOMImplementation domImpl;
 1695.44 - *      domImpl.OpenL();              ///< opening DOM implementation object 
 1695.45 - *      RXmlEngDOMParser parser;
 1695.46 - *      parser.Open( domImpl );   ///< opening parser object
 1695.47 - *      RXmlEngDocument iDoc;
 1695.48 - *      iDoc =parser.ParseL( *aInput );   ///< parsing aInput - buffer  
 1695.49 - *      iDoc.Close();               ///< closing all opened objects
 1695.50 - *      parser.Close();
 1695.51 - *      domImpl.Close();
 1695.52 - * @endcode 
 1695.53 - * 
 1695.54 - * Sample code for parsing from file:
 1695.55 - * @code
 1695.56 - *      RXmlEngDOMImplementation domImpl;
 1695.57 - *      domImpl.OpenL();              ///< opening DOM implementation object 
 1695.58 - *      RXmlEngDOMParser parser;
 1695.59 - *      parser.Open( domImpl );   ///< opening parser object
 1695.60 - *      RXmlEngDocument iDoc;
 1695.61 - *      iDoc =parser.ParseFileL( aFileName );   ///< parsing from file  
 1695.62 - *      iDoc.Close();               ///< closing all openend objects
 1695.63 - *      parser.Close();
 1695.64 - *      domImpl.Close();
 1695.65 - * @endcode 
 1695.66 - * 
 1695.67 - * @lib XmlEngineDOM.lib
 1695.68 - * @since S60 v3.1
 1695.69 - */
 1695.70 -class RXmlEngDOMParser
 1695.71 -{
 1695.72 -public:
 1695.73 -    /**
 1695.74 -     * Default constructor
 1695.75 -     */
 1695.76 -    IMPORT_C RXmlEngDOMParser();
 1695.77 -	
 1695.78 -    /** 
 1695.79 -     * Opens the parser.
 1695.80 -     *
 1695.81 -	 * @since S60 v3.2
 1695.82 -	 * @param aDOMImpl DOM implementation object
 1695.83 -     * @return KErrNone if succeed.
 1695.84 -     */
 1695.85 -    IMPORT_C TInt Open(RXmlEngDOMImplementation& aDOMImpl);
 1695.86 -    
 1695.87 -    /** 
 1695.88 -     * Closes the parser.
 1695.89 -     *
 1695.90 -	 * @since S60 v3.2
 1695.91 -	 */
 1695.92 -    IMPORT_C void Close();
 1695.93 -
 1695.94 -    /** 
 1695.95 -     * Parses chunk of XML data from memory buffer and builds DOM RXmlEngDocument.
 1695.96 -     *
 1695.97 -     * @since S60 v3.2
 1695.98 -     * @param aBuffer XML data buffer
 1695.99 -     * 
1695.100 -     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1695.101 -     */
1695.102 -    IMPORT_C void ParseChunkL(const TDesC8& aBuffer);
1695.103 -    /** 
1695.104 -     * Creates document from parsed chunks of data.
1695.105 -     * Should be called after parsing of allchunks.
1695.106 -     * Ownership over returned RXmlEngDocument object is transferred to the caller of the method.
1695.107 -     *
1695.108 -     * @since S60 v3.2
1695.109 -     * @return RXmlEngDocument created document.
1695.110 -     * 
1695.111 -     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1695.112 -     */
1695.113 -    IMPORT_C RXmlEngDocument FinishL();
1695.114 -    
1695.115 -    /** 
1695.116 -     * Parses XML file and builds DOM RXmlEngDocument
1695.117 -     *
1695.118 -     * @since S60 v3.2
1695.119 -	 * @param aRFs File server session
1695.120 -     * @param aFileName File name
1695.121 -     * @param aChunkSize Size of chunk (if 0 chunks won't be used)
1695.122 -     * @return Document handle
1695.123 -     * 
1695.124 -     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1695.125 -	 */
1695.126 -    IMPORT_C RXmlEngDocument ParseFileL(RFs &aRFs, const TDesC& aFileName, TUint aChunkSize = 0);
1695.127 -
1695.128 -    /** 
1695.129 -     * Parses XML file and builds DOM RXmlEngDocument
1695.130 -     *
1695.131 -     * @since S60 v3.2
1695.132 -	 * @param aFileName File name
1695.133 -     * @param aChunkSize Size of chunk (if 0 chunks won't be used)
1695.134 -     * @return Document handle
1695.135 -     * 
1695.136 -     * @leave KXmlEngErrParsing or one of general codes (e.g. KErrNoMemory)
1695.137 -     */
1695.138 -    IMPORT_C RXmlEngDocument ParseFileL(const TDesC& aFileName, TUint aChunkSize = 0);
1695.139 -
1695.140 -    /** 
1695.141 -     * Parses XML data from memory buffer and builds DOM RXmlEngDocument without chunks
1695.142 -     *
1695.143 -	 * @since S60 v3.1
1695.144 -	 * @param aBuffer XML data buffer
1695.145 -     * @return Document handle
1695.146 -     * 
1695.147 -     * @leave KXmlEngErrParsing code (besides system I/O error codes)
1695.148 -     */
1695.149 -    IMPORT_C RXmlEngDocument ParseL(const TDesC8& aBuffer);  
1695.150 -
1695.151 -    /** 
1695.152 -     * Return last parsing error code. 
1695.153 -     *
1695.154 -     * @since S60 v3.2
1695.155 -	 * @return positive number
1695.156 -     *
1695.157 -     * @note Error codes are positive numbers. User can find them
1695.158 -     *         in XmlEngDErrors.h
1695.159 -     */
1695.160 -    IMPORT_C TInt GetLastParsingError();
1695.161 -private:
1695.162 -    /** 
1695.163 -     * Parses XML file and builds DOM RXmlEngDocument without usage of chunks
1695.164 -     *
1695.165 -     * @param aRFs File server session
1695.166 -     * @param aFileName File name
1695.167 -     * @return Document handle
1695.168 -     * 
1695.169 -     * @leave KXmlEngErrParsing code (besides system I/O error codes)
1695.170 -	 */
1695.171 -    RXmlEngDocument ParseFileWithoutChunksL(RFs& aRFs, const TDesC& aFileName);
1695.172 -
1695.173 -    /** 
1695.174 -     * Cleanup internal data.
1695.175 -     *
1695.176 -     * @since S60 v3.2
1695.177 -     */
1695.178 -    void Cleanup();
1695.179 -private:
1695.180 -    void* iInternal;
1695.181 -    TInt iError;
1695.182 -    RXmlEngDOMImplementation* iImpl;
1695.183 -};
1695.184 -
1695.185 -
1695.186 -
1695.187 -#endif /* XMLENGINE_DOMPARSER_H_INCLUDED */
  1696.1 --- a/epoc32/include/xmlengelement.h	Tue Mar 16 16:12:26 2010 +0000
  1696.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1696.3 @@ -1,995 +0,0 @@
  1696.4 -/*
  1696.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1696.6 -* All rights reserved.
  1696.7 -* This component and the accompanying materials are made available
  1696.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1696.9 -* which accompanies this distribution, and is available
 1696.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1696.11 -*
 1696.12 -* Initial Contributors:
 1696.13 -* Nokia Corporation - initial contribution.
 1696.14 -*
 1696.15 -* Contributors:
 1696.16 -*
 1696.17 -* Description:       Element node functions
 1696.18 -*
 1696.19 -*/
 1696.20 -
 1696.21 -
 1696.22 -
 1696.23 -
 1696.24 -
 1696.25 -
 1696.26 -
 1696.27 -#ifndef XMLENGINE_ELEMENT_H_INCLUDED
 1696.28 -#define XMLENGINE_ELEMENT_H_INCLUDED
 1696.29 -
 1696.30 -#include "XmlEngAttr.h"
 1696.31 -#include "XmlEngNamespace.h"
 1696.32 -
 1696.33 -template<class T> class RXmlEngNodeList;
 1696.34 -
 1696.35 -
 1696.36 -/**
 1696.37 - * Instance of TXmlEngElement class represents an XML element in the DOM tree.
 1696.38 - *
 1696.39 - * <b>Namespace handling:</b>
 1696.40 - *
 1696.41 - * Namespace of XML element is an URI that in pair with <i>local part</i> of
 1696.42 - * element's name consistute <b>expanded-name</b> of element. It is said that "the element
 1696.43 - * is of <i>NNN</i> namespace".
 1696.44 - *
 1696.45 - * XML elements are shown as belonging to a specific namespace by using <i>prefixes</i>
 1696.46 - * that previously were bound to some namespace URIs. The scope of a prefix is the
 1696.47 - * element, where it was declared and all its child (sub-)elements.
 1696.48 - *      
 1696.49 - * Namespace declaration is created by using special <b>xmlns:<i>{prefix-name}</i></b>
 1696.50 - * attribute (which is not really considered as attribute in DOM):
 1696.51 - * @code 
 1696.52 - *    <a xmlns:pr="http://some.uri.com/"> ... </a>
 1696.53 - * OR
 1696.54 - *    <pr:a xmlns:pr="http://some.uri.com/"> ... </a>
 1696.55 - *    <a xmlns="http://some.uri.com/"> ... </a>
 1696.56 - * @endcode
 1696.57 - *
 1696.58 - * The latter two examples are equivalent and show the use of <i>default namespace</i>.
 1696.59 - *    
 1696.60 - * Implementation notes:
 1696.61 - *	- Element having no namespace is either presented with a NULL TXmlEngNamespace node 
 1696.62 - *    or a TXmlEngNamespace node that has NULL prefix and namespace URI set to "". 
 1696.63 - *    The former is used by default on all nodes, whereas the latter is for cases
 1696.64 - *    when some node contains undeclaration of the default namespace:
 1696.65 - * @code
 1696.66 - *	   <a xmlns=""> .. </a>
 1696.67 - * @endcode
 1696.68 - *
 1696.69 - * - The prefix of the default attribute is NULL, not "" (zero-length string)
 1696.70 - *	 "" corresponds to  
 1696.71 - *   @code
 1696.72 - *       <a xmlns:="http://some.uri.com/"> ... </a>
 1696.73 - *   @endcode
 1696.74 - *   (it does not contradict XML spec, but you are strongly advised against using this)
 1696.75 - *
 1696.76 - * - Prefix <b>"xml"</b> is reserved by XML Namespace spec for special purposes; it is implicitly bound
 1696.77 - *   to XML's namespace <i>"http://www.w3.org/XML/1998/namespace"</i> and no one is allowed
 1696.78 - *   to use this prefix except as with spec-defined elements and attributes or to rebind this 
 1696.79 - *   prefix to other namespaces
 1696.80 - *
 1696.81 - * - Namespace URI may be "" only for default namespace. In other words,
 1696.82 - *   "" namespace URI may not be bound to non-NULL prefix. 
 1696.83 - *          
 1696.84 - *   Declaration of "" namespace with NULL prefix results in:
 1696.85 - *   @code
 1696.86 - *       <a xmlns=""> ... </a>
 1696.87 - *   @endcode
 1696.88 - *   which <i>undeclares</i> any existing (in some parent element) default namespace
 1696.89 - *   for the scope of element 'a': element, its attributes and all child nodes of DOM tree.
 1696.90 - *   Note, that such "undeclaration" will be added only if neccessary. 
 1696.91 - *        
 1696.92 - * - Unneccessary namespace declaration are ignored. Attemps to add namespace binding 
 1696.93 - *   using same namespace URI and prefix if such binding already exists in the scope
 1696.94 - *   will have no effect.
 1696.95 - *
 1696.96 - * - <b>IMPORTANT!</b> Attributes DO NOT HAVE default namespaces. If an attribute has no
 1696.97 - *   prefix, its namespace is <b>undeclared</b> even if there is some default namespaces for
 1696.98 - *   the scope of the element, which contains the attribute.
 1696.99 - *
1696.100 - * So, it is wrong to write something like this:
1696.101 - * @code
1696.102 - *     <a xmlns="ns_uri"  attr="value"> ... </a>
1696.103 - * @endcode
1696.104 - * and assume that the <b>attr</b> belongs to namespace pointed to with <i>ns_uri</i>.
1696.105 - *    
1696.106 - * <b>HINTS:</b>
1696.107 - * - Use namespace declaration nodes as much as possible (but watch out prefix collisions).
1696.108 - * - Add most referred to namespace declarations (AddNamespaceDeclarationL(uri,pref)) after
1696.109 - *   any other namespace declarations in a element -- the will be found faster in
1696.110 - *   namespace lookups.
1696.111 - *
1696.112 - * @lib XmlEngineDOM.lib
1696.113 - * @since S60 v3.1
1696.114 - */
1696.115 -
1696.116 -class TXmlEngElement : public TXmlEngNode
1696.117 -{
1696.118 -  public:
1696.119 -    /**
1696.120 -     * Default constructor for automatic variables (not initialized)
1696.121 -	 *
1696.122 -     * @since S60 v3.1
1696.123 -	 */
1696.124 -    inline TXmlEngElement();
1696.125 -
1696.126 -    /**
1696.127 -     * Constructor
1696.128 -     *
1696.129 -     * @since S60 v3.1
1696.130 -	 * @param aInternal element pointer
1696.131 -	 */
1696.132 -    inline TXmlEngElement(void* aInternal);
1696.133 -	
1696.134 -    /** 
1696.135 -    *    @name XmlEngine's non-DOM extensions
1696.136 -    */
1696.137 -    /** @{ */
1696.138 -
1696.139 -    /**
1696.140 -     *   Retrieves list of attribute nodes of the element
1696.141 -     *   
1696.142 -     *   @param aList - a node list object to initialize
1696.143 -     *
1696.144 -     *   Passed by reference list of nodes is initialized and after call to
1696.145 -     *   Attributes(..) is ready for use with HasNext() and Next() methods:
1696.146 -     *
1696.147 -     *   @code
1696.148 -     *       ...
1696.149 -     *       TXmlEngElement root = doc.DocumentElement();
1696.150 -     *       RXmlEngNodeList<TXmlEngAttr>    attlist;
1696.151 -     *       root.GetAttributes(attlist);
1696.152 -     *       while (attlist.HasNext())
1696.153 -     *           processAttribute(attlist.Next());
1696.154 -     *       ...
1696.155 -	 *       attlist.Close();
1696.156 -     *   @endcode
1696.157 -	 *
1696.158 -     * @since S60 v3.1
1696.159 -	 */
1696.160 -    IMPORT_C void GetAttributes(RXmlEngNodeList<TXmlEngAttr>& aList) const;
1696.161 -
1696.162 -    /**
1696.163 -     * Retrieves list of child elements of the element
1696.164 -     *
1696.165 -     * @since S60 v3.1
1696.166 -	 * @param aList - a node list object to initialize
1696.167 -     *
1696.168 -     * Passed by reference list of nodes is initialized and after the call
1696.169 -     * it is ready for use with HasNext() and Next() methods:
1696.170 -     *   
1696.171 -     * @note Returned list is a "filtered view" of the underlying
1696.172 -     *       list of all element's children (with text nodes, comments
1696.173 -     *       processing instructions, etc.)
1696.174 -	 */ 
1696.175 -    IMPORT_C void GetChildElements(RXmlEngNodeList<TXmlEngElement>& aList) const;
1696.176 -
1696.177 -    /**
1696.178 -     * Creates new attribute node out of any namespace (i.e. it has no prefix),
1696.179 -     * sets attribute's value and links it as the last attribute of the current element
1696.180 -     *
1696.181 -     * @since S60 v3.1
1696.182 -	 * @param  aName   A local name of attribute
1696.183 -     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1696.184 -     * @return         A handler to the newly created attribute node;
1696.185 -     *
1696.186 -     * For adding attribute as the first one, use TXmlEngNode::SetAsFirstSibling() on the attribute:
1696.187 -     * @code
1696.188 -     *     TXmlEngElement el = ... ; // get some element
1696.189 -     *     el.AddNewAttributeL("version","0.1").SetAsFirstSibling();
1696.190 -     * @endcode
1696.191 -     *   
1696.192 -     * @see   SetAsLastSibling(), MoveBeforeSibling(TXmlEngNode) and MoveAfterSibling(TXmlEngNode)
1696.193 -     *
1696.194 -     * @note   - No checks are made that attribute with such name exists
1696.195 -     *           Use this method only on newly created elements!
1696.196 -     *           Otherwise, use TXmlEngElement::SetAttributeL(..)
1696.197 -     *         - Attributes do not inherit default namespace of its element
1696.198 -     *           (http://w3.org/TR/REC-xml-names/#defaulting)
1696.199 -     *         - attribute's value is the second argument in all AddNewAttributeL(..) methods
1696.200 -     *         - Use of NULL as value is more preferrable then "" 
1696.201 -	 */
1696.202 -    IMPORT_C TXmlEngAttr AddNewAttributeL(const TDesC8& aName, const TDesC8& aValue);
1696.203 -    
1696.204 -    /**
1696.205 -     * Creates new attribute node and add it to the element
1696.206 -     *
1696.207 -     * Provided handle to namespace declaration is used to set up
1696.208 -     * attribute's namespace.
1696.209 -     *
1696.210 -     * @since S60 v3.1
1696.211 -	 * @param  aName   A local name of attribute
1696.212 -     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1696.213 -     * @param  aNsDef  Namespace to add to the attribute
1696.214 -     * @return         A handler to the newly created attribute node;
1696.215 -     *
1696.216 -     * @note If aNsDef is not defined in some of attributes ascendants
1696.217 -     *      (including this element), then
1696.218 -     *      ReconcileNamespacesL() method must be called on
1696.219 -     *      this element later.
1696.220 -	 */
1696.221 -    IMPORT_C TXmlEngAttr AddNewAttributeL(const TDesC8& aName,
1696.222 -                                    const TDesC8& aValue, 
1696.223 -                                    const TXmlEngNamespace aNsDef);
1696.224 -
1696.225 -    /**
1696.226 -     * Creates new attribute on the element. Namespace declaration for the attribute namespace is
1696.227 -     * created too.
1696.228 -     *
1696.229 -     * @since S60 v3.1
1696.230 -	 * @param  aName   A local name of attribute
1696.231 -     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1696.232 -     * @param  aNsUri  Namespace uri
1696.233 -     * @param  aPrefix  Namespace prefix
1696.234 -     * @return         A handler to the newly created attribute node;
1696.235 -     *
1696.236 -     * @note
1696.237 -     *    - Namespace declarations are reused if possible (no redundant ones are created)
1696.238 -     */
1696.239 -    IMPORT_C TXmlEngAttr AddNewAttributeL(const TDesC8& aName, 
1696.240 -                                    const TDesC8& aValue,
1696.241 -                                    const TDesC8& aNsUri, 
1696.242 -                                    const TDesC8& aPrefix);
1696.243 -
1696.244 -    /**
1696.245 -     * Creates new attribute node using namespace of its parent element (this element),
1696.246 -     * sets attribute's value and links it as the last attribute of the element
1696.247 -     *
1696.248 -     * @since S60 v3.1
1696.249 -	 * @param aName Local name of attribute 
1696.250 -     * @param aValue Value to set for new attribute or NULL (sets value to "")
1696.251 -     * @return A handler to the newly created attribute node;
1696.252 -     *    
1696.253 -     * For more hints how to use it refer to AddNewAttributeL(const TDesC8&,const TDesC8&)
1696.254 -     *        
1696.255 -     * @note    
1696.256 -     *     - No checks are made that attribute with such name exists
1696.257 -     *     - if namespace of the parent element is default (i.e. bound prefix is NULL),
1696.258 -     *       then temporary prefix will be used and bound to the same namespace URI as elements
1696.259 -     *       (It is due to the fact that default namespaces do not spread on unprefixed attributes,
1696.260 -     *       see http://w3.org/TR/REC-xml-names/#defaulting)
1696.261 -     */
1696.262 -    inline   TXmlEngAttr AddNewAttributeSameNsL(const TDesC8& aName, const TDesC8& aValue);
1696.263 -
1696.264 -    /**
1696.265 -     * Creates new attributes using namespace, which is bound to the specified prefix
1696.266 -     *
1696.267 -     * @since S60 v3.1
1696.268 -	 * @param  aLocalName   A local name of attribute
1696.269 -     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1696.270 -     * @param  aPrefix  Namespace prefix for new attribute
1696.271 -     * @return A handler to the newly created attribute node;
1696.272 -     *
1696.273 -     * Use this mothod only for construction of new parts of DOM tree, where
1696.274 -     * you know for sure that prefix is bound in the given scope.
1696.275 -     * @code
1696.276 -     *     TXmlEngElement el = parent.AddNewAttributeUsePrefixL("property","ObjName","rdf");
1696.277 -     *     el.AddNewAttributeUsePrefixL("type", "xs:integer", "rdf");
1696.278 -     * @endcode
1696.279 -     *
1696.280 -     * Otherwise, you should check that prefix is bound like this example shows:
1696.281 -     * @code
1696.282 -     *     TXmlEngNamespace boundNS = TXmlEngNamespace::LookupByPrefix(thisElement, prefix);
1696.283 -     *     if (boundNS.NotNull()){
1696.284 -     *         thisElement.AddNewAttributeUsePrefixL("name", value, prefix);
1696.285 -     *     }
1696.286 -     * @endcode
1696.287 -     *
1696.288 -     * @note
1696.289 -     *     Use AddNewAttributeNsL(name,value,nsDefNode) as much as you can, because
1696.290 -     *     it is most efficient way to create namespaced DOM elements (no additional
1696.291 -     *     lookups for namespace declarations are required).
1696.292 -     *  
1696.293 -     * @code
1696.294 -     *     // If namespace with given URI is not in the scope, then it will be declared
1696.295 -     *     // and bound to "data" prefix.
1696.296 -     *     TXmlEngNamespace nsDef = elem.FindOrCreateNsDefL("http://../Data", "data");
1696.297 -     *     elem.AddNewAttributeL("location", "...", nsDef);
1696.298 -     *     elem.AddNewElementL("child", nsDef).AddNewAttributeL("attr","...value...");
1696.299 -     *     // the result is
1696.300 -     *         ...
1696.301 -     *      <elem xmlns:data="http://../Data" data:location="...">
1696.302 -     *         <data:child attr="...value..."/>
1696.303 -     *      </elem>
1696.304 -     *         ...
1696.305 -     *     //
1696.306 -     * @endcode    
1696.307 -     */
1696.308 -    IMPORT_C TXmlEngAttr AddNewAttributeUsePrefixL(const TDesC8& aLocalName, 
1696.309 -                                             const TDesC8& aValue, 
1696.310 -                                             const TDesC8& aPrefix);
1696.311 -
1696.312 -    /**
1696.313 -     * Creates new attributes using namespace in the scope, which has specified URI
1696.314 -     *   
1696.315 -     * Almost the same as AddNewAttributeUsePrefixL(...) but does lookup by namespace URI
1696.316 -     *
1696.317 -     * @since S60 v3.1
1696.318 -	 * @param  aLocalName   A local name of attribute
1696.319 -     * @param  aValue  Value to set for new attribute or NULL (sets value to "")
1696.320 -     * @param  aNsUri  Namespace uri for new attribute
1696.321 -     * @return - NULL attribute if namespace declaration is not found OR newly added to the end of
1696.322 -     *           attribute list attribute of this element.
1696.323 -     *
1696.324 -     * @see AddNewAttributeUsePrefixL(const TDesC8&,const TDesC8&,const TDesC8&)
1696.325 -     */
1696.326 -    IMPORT_C TXmlEngAttr AddNewAttributeWithNsL(const TDesC8& aLocalName, 
1696.327 -                                          const TDesC8& aValue, 
1696.328 -                                          const TDesC8& aNsUri);
1696.329 -                                          
1696.330 -    /**
1696.331 -     * Add attribute to element that will be used as Xml:Id.
1696.332 -     *
1696.333 -     * No check if such attribute exists are made.
1696.334 -     * 
1696.335 -     * @since S60 v3.2
1696.336 -	 * @param aLocalName Name of attribute that should be add.
1696.337 -	 * @param aValue Value of the attribute
1696.338 -	 * @param aNs Namespace of the attribute
1696.339 -	 * @return Attribute if created. Null attribute if Id exist
1696.340 -     *
1696.341 -     * @note Call RXmlEngDocument.RegisterXmlIdL(aName,aNsUri) first
1696.342 -     *       to register existed id's in the document.
1696.343 -     */
1696.344 -    IMPORT_C TXmlEngAttr AddXmlIdL(const TDesC8& aLocalName,
1696.345 -                                       const TDesC8& aValue,
1696.346 -                                       TXmlEngNamespace aNs = TXmlEngNamespace());
1696.347 -    
1696.348 -    /**
1696.349 -     * Adds child element with no namespace
1696.350 -     *
1696.351 -     * @since S60 v3.1
1696.352 -	 * @param aName name of the element
1696.353 -     * @return A handler to the newly created element node;
1696.354 -     *
1696.355 -     * Results in adding element with aName and no prefix.
1696.356 -     *
1696.357 -     * This method is the best for creation of non-namespace based documents
1696.358 -     * or document fragments, where no default namespace declared.
1696.359 -     *
1696.360 -     * It may be used also as a method for adding element from default namespace,
1696.361 -     * BUT namespace will be assigned ONLY after serialization of the current
1696.362 -     * document and parsing it back into a DOM tree!! If you need that default namespace
1696.363 -     * was inherited by new element immediately use:
1696.364 -     * @code
1696.365 -     *    ...
1696.366 -     *    TXmlEngNamespace defns = element.DefaultNamespace();
1696.367 -     *    TXmlEngElement newEl = element.AddNewElementL("Name",defns);
1696.368 -     *    ...
1696.369 -     * @endcode
1696.370 -     *
1696.371 -     * If truly undefined namespace for the element is required, then <b>DO NOT USE</b>
1696.372 -     * this method if there is a default namespace in the scope!
1696.373 -     */
1696.374 -    IMPORT_C TXmlEngElement AddNewElementL(const TDesC8& aName);
1696.375 -
1696.376 -    /**
1696.377 -     * Creates new child element with provided name and namespace declaration
1696.378 -     *
1696.379 -     * @since S60 v3.1
1696.380 -	 * @param aLocalName Name of the element
1696.381 -     * @param aNsDecl Handle of the namespace declaration, that must be retrieved from
1696.382 -     *            one of the ascendant nodes of the new elements (and its prefix
1696.383 -     *            should not be remapped to another namespace URI for the scope
1696.384 -     *            of the new element)
1696.385 -     * @return    Created element node (and added as the last child of its parent)
1696.386 -     */
1696.387 -    IMPORT_C TXmlEngElement AddNewElementL(const TDesC8& aLocalName, TXmlEngNamespace aNsDecl);
1696.388 -
1696.389 -    /**
1696.390 -     * Creates new child element with provided name, prefix and namespace URI
1696.391 -     *
1696.392 -     * New namespace declaration will be attached to the parent (this) element and used
1696.393 -     * as namespace for newly created child element. If such binding already exists
1696.394 -     * (same prefix is bound to same URI), it will be reused. If the prefix is already
1696.395 -     * bound to some another namespace URI, it will be rebound by the new namespace
1696.396 -     * declaration node.
1696.397 -     *
1696.398 -     * @since S60 v3.1
1696.399 -	 * @param aLocalName Name of the element
1696.400 -     * @param aNsUri     URI of element's namespace
1696.401 -     * @param aPrefix    Prefix of the element
1696.402 -     * @return Created element node (and added as the last child of its parent)
1696.403 -     */
1696.404 -    IMPORT_C TXmlEngElement AddNewElementL(const TDesC8& aLocalName, 
1696.405 -                                     const TDesC8& aNsUri, 
1696.406 -                                     const TDesC8& aPrefix);
1696.407 -
1696.408 -    /**
1696.409 -     * Adds child element with same namespace (and prefix if present) as parent element has
1696.410 -     *
1696.411 -     * @since S60 v3.1
1696.412 -	 * @param aLocalName element's name
1696.413 -     * @return New element that was added to the end of children list of its parent (this element)
1696.414 -     */
1696.415 -    IMPORT_C TXmlEngElement AddNewElementSameNsL(const TDesC8& aLocalName);
1696.416 -
1696.417 -    /**
1696.418 -     * Performs lookup for the namespace declaration for specified prefix and
1696.419 -     * adds new child element with found namespace.
1696.420 -     *
1696.421 -     * The assumption is that prefix is bound, otherwise run-time error
1696.422 -     * (Symbian's Leave or exception) occurs
1696.423 -     *
1696.424 -     * @note   Use this method only if there is a binding for the given prefix.
1696.425 -     *
1696.426 -     * @since S60 v3.1
1696.427 -	 * @param aLocalName element's name
1696.428 -     * @param aPrefix    prefix to use
1696.429 -     * @return new TXmlEngElement that was added to the end of children list of its parent (this element)
1696.430 -     */
1696.431 -    IMPORT_C TXmlEngElement AddNewElementUsePrefixL(const TDesC8& aLocalName, const TDesC8& aPrefix);
1696.432 -
1696.433 -    /**
1696.434 -     * Performs lookup for the namespace declaration for specified namespace URI and
1696.435 -     * adds new child element with found namespace.
1696.436 -     *
1696.437 -     * The assumption is that namespace with given URI was declared,
1696.438 -     * otherwise run-time error (Symbian' Leave or exception) occurs
1696.439 -     * 
1696.440 -     * @note Use this method only if namespace declaration for the provided URI exists.
1696.441 -     *
1696.442 -     * @since S60 v3.1
1696.443 -	 * @param aLocalName    element's name
1696.444 -     * @param aNsUri        namespace of element
1696.445 -     * @return new TXmlEngElement that was added to the end of children list of its parent (this element)
1696.446 -     */
1696.447 -    IMPORT_C TXmlEngElement AddNewElementWithNsL(const TDesC8& aLocalName, const TDesC8& aNsUri);
1696.448 -
1696.449 -    /**
1696.450 -     * Creates new child element; if there is no a prefix binding for new element's namespace,
1696.451 -     * a namespace decaration is created with generated prefix at specified element.
1696.452 -     *
1696.453 -     * @since S60 v3.1
1696.454 -	 * @param aLocalName    Name of the element to create
1696.455 -     * @param aNsUri        Namespace URI of the new element
1696.456 -     * @param aNsDeclTarget An element where namespace declaraton should be placed
1696.457 -     *                     if there is a needed to create new namespace declaration;
1696.458 -     *                     NULL is used to specify the created element itself
1696.459 -     *
1696.460 -     * As aNsDeclTarget any ascendant of the new node may be provided:
1696.461 -     * @code
1696.462 -     *     el.AddNewElementAutoPrefixL(tagName,uri,NULL); // declare on the new element
1696.463 -     *     el.AddNewElementAutoPrefixL(tagName,uri,el);   // declare on the parent element
1696.464 -     *     el.AddNewElementAutoPrefixL(tagName,uri,doc.DocumentElement()); // declare on the root element
1696.465 -     *    ...
1696.466 -     * @endcode
1696.467 -     *
1696.468 -     * @note
1696.469 -     *  The farther namespace declaration up in the document tree,
1696.470 -     *  the longer time namespace declaration lookups take.
1696.471 -     */
1696.472 -    IMPORT_C TXmlEngElement AddNewElementAutoPrefixL(const TDesC8& aLocalName, 
1696.473 -                                               const TDesC8& aNsUri, 
1696.474 -                                               TXmlEngElement aNsDeclTarget);
1696.475 -
1696.476 -    /**
1696.477 -     * Get element content.
1696.478 -     * This method may be used in most cases, when element has only simple text content
1696.479 -     * (without entity references embedded).
1696.480 -     * If element's contents is mixed (other types of nodes present), only contents of
1696.481 -     * first child node is returned if it is a TXmlEngTextNode node. For getting mixed contents of the
1696.482 -     * element of contents with entity references, WholeTextValueCopyL() should be used.
1696.483 -     *
1696.484 -     * @since S60 v3.1
1696.485 -	 * @return Basic contents of the element
1696.486 -     * 
1696.487 -     * @see TXmlEngNode::WholeTextContentsCopyL()
1696.488 -     */
1696.489 -    IMPORT_C TPtrC8 Text() const;
1696.490 -
1696.491 -    /**
1696.492 -     * Adds text as a child of the element.
1696.493 -     *
1696.494 -     * @since S60 v3.1
1696.495 -	 * @param aString text to be added as element's content.
1696.496 -     * 
1696.497 -     * @note There may be several TXmlEngTextNode and TXmlEngEntityReference nodes added actually,
1696.498 -     *   depending on the aString value
1696.499 -     */
1696.500 -    IMPORT_C void  AddTextL(const TDesC8& aString);
1696.501 -
1696.502 -    /**
1696.503 -     * Sets text contents for the element.
1696.504 -     * Any child nodes are removed.
1696.505 -     * Same as TXmlEngNode::SetValueL(TDesC8&)
1696.506 -     *
1696.507 -     * @since S60 v3.1
1696.508 -	 * @param aString text to be set as element's content.
1696.509 -     *
1696.510 -     * @see TXmlEngNode::SetValueL(TDesC8&)
1696.511 -     */
1696.512 -    IMPORT_C void  SetTextL(const TDesC8& aString);
1696.513 -
1696.514 -    /**
1696.515 -     * Sets text content of the element from escaped string.
1696.516 -     *
1696.517 -     * @since S60 v3.1
1696.518 -	 * @param aEscapedString New value
1696.519 -     *
1696.520 -     * @see TXmlEngAttr::SetEscapedValueL(TDesC8&)
1696.521 -     */
1696.522 -    IMPORT_C void  SetEscapedTextL(const TDesC8& aEscapedString);
1696.523 -    
1696.524 -    /**
1696.525 -     * Sets new element value exactly as presented in the string.
1696.526 -	 * Predefined entities are not converted into characters they represent.
1696.527 -	 * Any child nodes are removed.     
1696.528 -     *
1696.529 -     * @since S60 v3.2
1696.530 -	 * @param aNotEncText New element value
1696.531 -     *
1696.532 -     * @see TXmlEngAttr::SetValueNoEncL(const TDesC8& aNewValue); 
1696.533 -     */    
1696.534 -    IMPORT_C void SetTextNoEncL(const TDesC8& aNotEncString);
1696.535 -
1696.536 -    /**
1696.537 -     * Appends new text node with the value exactly as presented in the string.
1696.538 -	 * Predefined entities are not converted into characters they represent.
1696.539 -	 * Existing child nodes are not removed.    
1696.540 -     *
1696.541 -     * @since S60 v3.2
1696.542 -	 * @param aNotEncText Appended element value
1696.543 -     *
1696.544 -     * @see TXmlEngAttr::SetValueNoEncL(const TDesC8& aNewValue); 
1696.545 -     */  
1696.546 -	IMPORT_C void AppendTextNoEncL(const TDesC8& aNotEncString);   
1696.547 -
1696.548 -    /**
1696.549 -     * Adds namespace declaration to the current element, a binding of prefix to namespace URI.
1696.550 -     * 
1696.551 -     * If same namespace declaration exists (same prefix and URI), redundant namespace declaration
1696.552 -     * will not be created.
1696.553 -     * 
1696.554 -     * Both NULL or "" (empty string) may be used for "UNDEFINED URI" and "NO PREFIX" values of arguments. 
1696.555 -     *
1696.556 -     * @since S60 v3.1
1696.557 -	 * @param aNsUri Namespace URI
1696.558 -     * @param aPrefix Namespace prefix
1696.559 -     * @return  A handle to the created (or found, if there is such) namespace declaration node.
1696.560 -     *          If namespace undeclaration is being created, NULL handle is returned -- it can be
1696.561 -     *           used in node-creation methods that take namespace handle as an argument.
1696.562 -     * 
1696.563 -     * @note   Undeclaring of default namespace (xmlns="") is supported by
1696.564 -     *         SetNoDefaultNamespace() method
1696.565 -     * 
1696.566 -     * @see SetNoDefaulNamespace()
1696.567 -     * 
1696.568 -     * @note   By adding namespace declaration that rebinds prefix mapping (or default namespace)
1696.569 -     *         used by nodes lower in the tree, document tree may become
1696.570 -     *         wrongly constructed, because references to namespace declaration are
1696.571 -     *         not updated. However, after serialization the document will have
1696.572 -     *         desired structure.
1696.573 -     *         Use this method with care!
1696.574 -     */ 
1696.575 -    IMPORT_C TXmlEngNamespace AddNamespaceDeclarationL(const TDesC8& aNsUri, const TDesC8& aPrefix);
1696.576 -
1696.577 -    /**
1696.578 -     * Adds default namespace declaration.
1696.579 -     *
1696.580 -     * @since S60 v3.1
1696.581 -	 * @param aNsUri   Namespace URI;  both NULL and "" (empty string) are allowed to represent UNDEFINED NAMSPACE
1696.582 -     * @return    Handle to the created namespace declaration (NULL for UNDEFINED NAMESPACE)
1696.583 -     *
1696.584 -     * Same result as with AddNamespaceDeclarationL(aNsUri, NULL), but additionally
1696.585 -     * element's namespace modified (if it has no prefix and there were no default
1696.586 -     * namespace declaration in the scope) to the new default one.
1696.587 -     */
1696.588 -    IMPORT_C TXmlEngNamespace SetDefaultNamespaceL(const TDesC8& aNsUri);
1696.589 -
1696.590 -    /**
1696.591 -     * Undeclares any default namespace for current element and its descendants.
1696.592 -     * 
1696.593 -     * If there is already some default namespace,  <i>xmlns=""</i> namespace
1696.594 -     * declaration is added. Otherwise, nothing happens, since element with no
1696.595 -     * prefix in such scope is automaticaly considered as out of any namespace.
1696.596 -     * 
1696.597 -     * The side effect of this method is that namespace of the current element
1696.598 -     * may change from previous <b>default</b> namespace to NULL TXmlEngNamespace, which is
1696.599 -     * considered an absence of namespace.
1696.600 -     * 
1696.601 -     * If the element has prefix (i.e. not having default namespace), 
1696.602 -     * then the only effect for the element is undeclaration of existing default namespace. 
1696.603 -     * 
1696.604 -     * If element is in the scope of another <i>xmlns=""</i> undeclaration, no
1696.605 -     * actions are taken.
1696.606 -     * 
1696.607 -     * @note
1696.608 -     *     Use AddNamespaceDeclarationL(NULL,NULL) to force creation of
1696.609 -     *     xmlns=""  declaration within scope of another such declaration 
1696.610 -     *     (otherwise unneccessary/duplicate declarations are not created)
1696.611 -     * 
1696.612 -     * @note
1696.613 -     *     This method should be called on elements before adding children,
1696.614 -     *     because default namespace undeclaration is not spread into its subtree and 
1696.615 -     *     descedants' default namespaces are not reset to NULL. This should be taken into 
1696.616 -     *     account if later some processing on the subtree occurs.
1696.617 -     *     However, after serialization and deserialization, undeclared default namespace will
1696.618 -     *     affect whole element's subtree correctly.
1696.619 -     *
1696.620 -     * @since S60 v3.1
1696.621 -	 */
1696.622 -    IMPORT_C void SetNoDefaultNamespaceL();
1696.623 -
1696.624 -    /**
1696.625 -     * Finds namespace declaration that has specific prefix in the scope for given node
1696.626 -     *
1696.627 -     * Prefix "" or NULL are considered the same, meaning "<b>NO PREFIX</b>".
1696.628 -     * If namespace declaration for "no prefix" is searched, then default namespace is returned. 
1696.629 -     *
1696.630 -     * @since S60 v3.1
1696.631 -	 * @param aPrefix Namespace prefix
1696.632 -     * @return Namespace handler, which may be NULL if prefix is not bound.
1696.633 -     * 
1696.634 -     * NULL result for "no prefix" means that default namespace is undefined.
1696.635 -     */
1696.636 -    IMPORT_C TXmlEngNamespace LookupNamespaceByPrefixL(const TDesC8& aPrefix) const;
1696.637 -
1696.638 -    /**
1696.639 -     * Finds namespace declaration that has specific namespace URI
1696.640 -     * in the scope for the given node.
1696.641 -     *
1696.642 -     * @since S60 v3.1
1696.643 -	 * @param aUri  Namespace URI, for which namespace declaration is searched
1696.644 -     * @return Handler to the namespace declaration that binds given namespace URI to some prefix 
1696.645 -     *          or sets it a default namespace.
1696.646 -     * 
1696.647 -     * NULL value of aUri is equivalent to "" and means "<b>UNDEFINED NAMESPACE</b>". 
1696.648 -     * For such URI  a NULL namespace handle is always returned even if there is
1696.649 -     * namespace undeclaration, which has "" URI (and NULL prefix).
1696.650 -     * 
1696.651 -     * <b>Hint:</b><p>
1696.652 -     * Use returned instance of TXmlEngNamespace as aNsDef argument to element's methods
1696.653 -     * that create new element's child elements and attributes. The same handler
1696.654 -     * may be used on more deep descentants of the reference element (and doing
1696.655 -     * this way will generally increase performance of DOM tree construction).<br />
1696.656 -     * <span class="color:red;">However</span>, if namespace bindings are not controlled
1696.657 -     * for element's children and prefix, which is bound to the search namespace, is
1696.658 -     * rebound to some other namespace URI, then reusing namespace may lead to
1696.659 -     * unwanted result.
1696.660 -     * 
1696.661 -     * Consider an example:
1696.662 -     * @code
1696.663 -     *     TXmlEngElement root = doc.DocumentElement();
1696.664 -     *     TXmlEngNamespace targetNs = root.AddNamespaceDeclarationL("http://example.com/","ex");
1696.665 -     *     TXmlEngElement el_1 = root.AddNewElementL("outer", targetNs);
1696.666 -     *     TXmlEngElement el_2 = el_1.AddNewElementL("inner"); // element without prefix
1696.667 -     * 
1696.668 -     *     // NOTE: prefix "ex" is not bound to "http://example.com/" anymore!
1696.669 -     *     el_2.AddNamespaceDeclarationL("http://whatever.com/","ex");
1696.670 -     *     TXmlEngElement el_3 = el_2.AddNewElementL("problem", targetNs);
1696.671 -     *     ...
1696.672 -     * @endcode
1696.673 -     * 
1696.674 -     * The sought result was (showing expanded names of elements):
1696.675 -     * @code
1696.676 -     *     --> "root"
1696.677 -     *         --> {"http://example.com/","outer"}
1696.678 -     *         --> "inner"
1696.679 -     *             -->{"http://example.com/","problem"}
1696.680 -     *                 ...
1696.681 -     *             <--
1696.682 -     *         <-- "inner"
1696.683 -     *         <-- {"http://example.com/","outer"}
1696.684 -     *         ...
1696.685 -     *     <-- </root>
1696.686 -     * @endcode
1696.687 -     * and it may look that it has been achieved. Indeed, if namespace of element "problem"
1696.688 -     * was queried, it would have URI "http://example.com/" and prefix "ex".
1696.689 -     * However, if namespace URI was looked up by "problem"'s prefix, it would be
1696.690 -     * "http://whatever.com/". We have created illegal DOM tree.
1696.691 -     * 
1696.692 -     * The actual DOM tree in serialized form will be:
1696.693 -     * @code
1696.694 -     *     <root>
1696.695 -     *         <ex:outer xmlns:ex="http://example.com/">
1696.696 -     *             <inner xmlns:ex="http://whatever.com/">
1696.697 -     *                 <ex:problem>
1696.698 -     *                 ...
1696.699 -     *                 </ex:problem>
1696.700 -     *             </inner>
1696.701 -     *         </ex:outer>
1696.702 -     *         ...
1696.703 -     *     </root>
1696.704 -     * @endcode
1696.705 -     * 
1696.706 -     * So, reuse of namespace handlers should be performed with special care.
1696.707 -     * 
1696.708 -     * @note
1696.709 -     * At the moment it is possible to retrieve namespace declaration nodes
1696.710 -     * whose prefixes were rebound. Be careful when use returned TXmlEngNamespace object
1696.711 -     * for creation of new elements. In later releases, this method will perform
1696.712 -     * safe lookup. And so far, it is better to make check that prefix of returned
1696.713 -     * namespace declaration has not rebound:
1696.714 -     * @code
1696.715 -     *     TXmlEngNamespace ns = element.LookupNamespaceByUri("a_uri");
1696.716 -     *     if (element.LookupNamespaceByPrefix(ns.Prefix()).IsSameNode(ns)){
1696.717 -     *         ... // now it is safe to create new elements by using "ns"
1696.718 -     *         element.AddNewElementL("product",ns);
1696.719 -     *         ...
1696.720 -     *     }
1696.721 -     * @endcode
1696.722 -     */
1696.723 -    IMPORT_C TXmlEngNamespace LookupNamespaceByUriL(const TDesC8& aUri) const;
1696.724 -
1696.725 -    /**
1696.726 -     * Retrieves implicitly declared on every XML infoset binding
1696.727 -     * of 'xml' prefix to XML's namespace URI:
1696.728 -     * "http://www.w3.org/XML/1998/namespace"
1696.729 -     *
1696.730 -     * @since S60 v3.1
1696.731 -	 * @return Handler to {xml,"http://www.w3.org/XML/1998/namespace"} prefix
1696.732 -     *            binding in the current document
1696.733 -     *
1696.734 -     * The result should be used for creating attributes beloging to the XML namespace
1696.735 -     * (xml:lang, xml:space, xml:id , etc.)
1696.736 -     *
1696.737 -     * DO NOT USE methods LookupNamespaceByUriL(const TDesC8&) and LookupNamespaceByPrefixL(const TDesC8&)
1696.738 -     * (with "http://www.w3.org/XML/1998/namespace" and "xml" arguments) for retrieving
1696.739 -     * namespace node, since in a case of [possible] memory allocation fault
1696.740 -     * NULL result is returned (and breaks your program silently)
1696.741 -     * 
1696.742 -     * @note   Normally 'xml' prefix is bound to XML namespace URI in the document
1696.743 -     *        node, BUT if current node is not a part of the document tree yet,
1696.744 -     *        the requested namespace declaration WILL BE ADDED to the current node.
1696.745 -     *        This is the reason why the method may fail in OOM conditions.
1696.746 -     */
1696.747 -    IMPORT_C TXmlEngNamespace TheXMLNamespaceL() const;
1696.748 -
1696.749 -    /**
1696.750 -     * Get default namespace for element.
1696.751 -     *
1696.752 -     * @since S60 v3.1
1696.753 -	 * @return Default namespace in the scope of the element
1696.754 -     *
1696.755 -     * NULL TXmlEngNamespace means that element with no prefix have no namespace associated
1696.756 -     * because no default namespace was declared or default namespace was undeclared with <b>xmlns=""</b>
1696.757 -     *
1696.758 -     * Equivalent to LookupNamespaceByPrefixL(const TDesC8&) with NULL (or "") prefix provided
1696.759 -     */
1696.760 -    inline   TXmlEngNamespace DefaultNamespaceL() const;
1696.761 -
1696.762 -    /**
1696.763 -     * Performs search of namespace handler in the scope of the element. This method will
1696.764 -     * create new namespace declaration on the element if such namespace is not available.
1696.765 -     *
1696.766 -     * @since S60 v3.1
1696.767 -	 * @param aNsUri   Searched namespace
1696.768 -     * @param aPrefix  Prefix to use for <b>new</b> namespace declaration (if it is to be created)
1696.769 -     * @return    TXmlEngNamespace handler that may be used to create new attributes and child elements of
1696.770 -     *            the element. The namespace may be one of those existed previously or was created
1696.771 -     *
1696.772 -     * @note
1696.773 -     *    Be sure not to use the result of this method for non-descendants of the element or in situations
1696.774 -     *    when prefix overlapping might occur (read also about general general considerations of attributes
1696.775 -     *    and elements creation using namespace handlers)
1696.776 -     */
1696.777 -    IMPORT_C TXmlEngNamespace FindOrCreateNsDeclL(const TDesC8& aNsUri, const TDesC8& aPrefix);
1696.778 -
1696.779 -    /**
1696.780 -     * Performs search on the element and its ascendants for any namespace declaration
1696.781 -     * with given URI and create a new namespace declaration with some (unique) prefix
1696.782 -     * if the search was not successful.
1696.783 -     *
1696.784 -     * @since S60 v3.1
1696.785 -	 * @param aNsUri   Searched namespace
1696.786 -     * @return    TXmlEngNamespace handler that may be used to create new attributes and child elements of
1696.787 -     *            the element. The namespace may be one of those existed previously or was created
1696.788 -     */
1696.789 -    IMPORT_C TXmlEngNamespace FindOrCreateNsDeclL(const TDesC8& aNsUri);
1696.790 -
1696.791 -    /**
1696.792 -     * Checks whether a prefix has been bound in this element (not in one of its ascendants)
1696.793 -     * 
1696.794 -     * Use this method for preventig prefix-name collision in a element node
1696.795 -     *
1696.796 -     * @since S60 v3.1
1696.797 -	 * @param aPrefix Namespace prefix
1696.798 -     * @return TRUE if there is already namespace declaration that uses aPrefix on this element
1696.799 -     */
1696.800 -    IMPORT_C TBool HasNsDeclarationForPrefixL(const TDesC8& aPrefix) const;
1696.801 -    
1696.802 -    /**
1696.803 -     * Copies the element with its attributes, but not child nodes
1696.804 -     * 
1696.805 -     * If context is preserved, then all namespace declarations that are in the element are
1696.806 -     * writen to element's start tag too.
1696.807 -     *
1696.808 -     * @since S60 v3.1
1696.809 -	 * @param preserveNsContext TRUE if context should be preserved
1696.810 -     * @return handle to copy of element
1696.811 -     */
1696.812 -    IMPORT_C TXmlEngElement ElementCopyNoChildrenL(TBool preserveNsContext) const;
1696.813 -    
1696.814 -    /**
1696.815 -     * Specialized version of TXmlEngNode::CopyL()
1696.816 -     *
1696.817 -     * @since S60 v3.1
1696.818 -	 * @return Deep copy of the element.
1696.819 -     */
1696.820 -    inline   TXmlEngElement CopyL() const;
1696.821 -
1696.822 -    /**
1696.823 -     * Resets element's content: all child nodes are removed
1696.824 -     *
1696.825 -     * @since S60 v3.1
1696.826 -	 */
1696.827 -    IMPORT_C void RemoveChildren();
1696.828 -
1696.829 -    /**
1696.830 -     * Resets element's attributes
1696.831 -     *
1696.832 -     * @since S60 v3.1
1696.833 -	 */
1696.834 -    IMPORT_C void RemoveAttributes();
1696.835 -
1696.836 -    /**
1696.837 -     * Resets all namespace declarations made in the element
1696.838 -     * 
1696.839 -     * @note There can be references to these namespace declaration from elsewhere!
1696.840 -     *      Use ReconcileNamespacesL() to fix that.
1696.841 -     *
1696.842 -     * @since S60 v3.1
1696.843 -	 */
1696.844 -    IMPORT_C void RemoveNamespaceDeclarations();
1696.845 -
1696.846 -    /**
1696.847 -     * Removes all element contents: child nodes, attributes and namespace declarations
1696.848 -     *
1696.849 -     * @see RemoveChildren(), RemoveAttributes(), RemoveNamespaceDeclarations();
1696.850 -     *
1696.851 -     * @since S60 v3.1
1696.852 -	 */
1696.853 -    inline   void ClearElement();
1696.854 -
1696.855 -    /**
1696.856 -     * Copies attributes from another element
1696.857 -     *
1696.858 -     * It may be a very convenient method for initializing element with a set of predefined attributes.
1696.859 -     *
1696.860 -     * @since S60 v3.1
1696.861 -	 * @param aSrc source element
1696.862 -     * 
1696.863 -     * @note
1696.864 -     *  Namespaces of the this element may need to be reconciled if copied attributes
1696.865 -     *  belong to any namespace that is not declared on some ascendant of this node.
1696.866 -     * @see ReconcileNamespacesL()
1696.867 -     */  
1696.868 -    IMPORT_C void CopyAttributesL(TXmlEngElement aSrc);
1696.869 -
1696.870 -    /**
1696.871 -     * Copies a list of elements.
1696.872 -     *
1696.873 -     * Elements are appended to the element's children list.
1696.874 -     *
1696.875 -     * @since S60 v3.1
1696.876 -	 * @param aSrc source element
1696.877 -     *
1696.878 -     * @note Namespaces of the this element may need to be reconciled after copy operation
1696.879 -     * @see  ReconcileNamespacesL()
1696.880 -     */
1696.881 -    IMPORT_C void CopyChildrenL(TXmlEngElement aSrc);
1696.882 -
1696.883 -    /**
1696.884 -     * Removes attribute with given name and namespace URI(if such exists).
1696.885 -     * Memory allocated for the attribute is freed.
1696.886 -     *
1696.887 -     * @since S60 v3.1
1696.888 -	 * @param aLocalName Element name
1696.889 -     * @param aNamespaceUri Element namespace
1696.890 -     */
1696.891 -    IMPORT_C void RemoveChildElementsL(const TDesC8& aLocalName,const TDesC8& aNamespaceUri);
1696.892 -
1696.893 -    /** @} */
1696.894 -
1696.895 -    /** 
1696.896 -    *    @name DOM Level 3 Core methods
1696.897 -    *
1696.898 -    *    @note
1696.899 -    *        Most methods of DOM spec operate with fully-qualified names (QNames)
1696.900 -    *        of elements and attributes. It is different in this API - all methods
1696.901 -    *        instead accept prefix and localName parts of QName.
1696.902 -    */
1696.903 -    /** @{ */
1696.904 -    
1696.905 -    /**
1696.906 -     * Returns value of attribute with given name and namespace URI
1696.907 -     *
1696.908 -     * @since S60 v3.1
1696.909 -	 * @param aLocalName Local name of attribute node
1696.910 -     * @param aNamespaceUri Namespace URI of attribute
1696.911 -     * @return Attribute value
1696.912 -     */
1696.913 -    IMPORT_C TPtrC8 AttributeValueL(const TDesC8& aLocalName, 
1696.914 -                                    const TDesC8& aNamespaceUri = KNullDesC8) const;
1696.915 -
1696.916 -    /**
1696.917 -     * Initializes list of child elements with matching name and namespace URI.
1696.918 -     *
1696.919 -     * @since S60 v3.1
1696.920 -	 * @param aList Node list to be initialized
1696.921 -     * @param aLocalName Element name
1696.922 -     * @param aNamespaceUri Namespace URI, default is NULL
1696.923 -     *
1696.924 -     * @note This method does not lists all descedants of the element, only child elements
1696.925 -     */
1696.926 -    IMPORT_C void  GetElementsByTagNameL(RXmlEngNodeList<TXmlEngElement>& aList, 
1696.927 -                                         const TDesC8& aLocalName, 
1696.928 -                                         const TDesC8& aNamespaceUri = KNullDesC8) const;
1696.929 -    
1696.930 -    /**
1696.931 -     * Sets value of attribute; attribute is created if there is no such attribute yet
1696.932 -     *
1696.933 -     * @since S60 v3.1
1696.934 -	 * @param aLocalName Attribute name
1696.935 -     * @param aValue Attribute value
1696.936 -     * @param aNamespaceUri Namespace URI - default is NULL
1696.937 -     * @param aPrefix Namespace prefix - default is NULL
1696.938 -     *
1696.939 -     * @note
1696.940 -     *  If prefix is not NULL (or ""), then namespace URI may not be empty
1696.941 -     *  see http://www.w3.org/TR/REC-xml-names/#ns-decl (Definition #3)
1696.942 -     */
1696.943 -    IMPORT_C void  SetAttributeL(const TDesC8& aLocalName, 
1696.944 -                                 const TDesC8& aValue, 
1696.945 -                                 const TDesC8& aNamespaceUri = KNullDesC8, 
1696.946 -                                 const TDesC8& aPrefix = KNullDesC8);
1696.947 -
1696.948 -    /**
1696.949 -     * Removes attribute with given name and namespace URI(if such exists).
1696.950 -     * Memory allocated for the attribute is freed.
1696.951 -     *
1696.952 -     * @since S60 v3.1
1696.953 -	 * @param aLocalName Name of the attribute
1696.954 -     * @param aNamespaceUri Attribute namespace URI, default is NULL
1696.955 -     */
1696.956 -    IMPORT_C void  RemoveAttributeL(const TDesC8& aLocalName, 
1696.957 -                                    const TDesC8& aNamespaceUri = KNullDesC8);
1696.958 -
1696.959 -    /**
1696.960 -     * Retrieves attribute node from specific namespace by its name.
1696.961 -     *
1696.962 -     * @since S60 v3.1
1696.963 -	 * @param aLocalName Name of the attribute
1696.964 -     * @param aNamespaceUri Attribute namespace URI, default is NULL
1696.965 -     * @return Attribute node with matching namespace URI and name
1696.966 -     */
1696.967 -    IMPORT_C TXmlEngAttr AttributeNodeL(const TDesC8& aLocalName, 
1696.968 -                                  const TDesC8& aNamespaceUri = KNullDesC8) const;
1696.969 -
1696.970 -    /**
1696.971 -     * Check if element has attribute with given parameters.
1696.972 -     *
1696.973 -     * @since S60 v3.1
1696.974 -	 * @param aLocalName Name of attribute
1696.975 -     * @param aNamespaceUri Namespace uri, default is NULL.
1696.976 -     * @return TRUE if the element holds an attribute with such namespace URI and name.
1696.977 -     *
1696.978 -     * Same result gives AttributeNodeL(uri,name).NotNull()
1696.979 -     */
1696.980 -    inline     TBool HasAttributeL(const TDesC8& aLocalName, 
1696.981 -                                   const TDesC8& aNamespaceUri  = KNullDesC8) const;
1696.982 -
1696.983 -    /**
1696.984 -     * Links attribute into tree
1696.985 -     *
1696.986 -     * @since S60 v3.1
1696.987 -	 * @param aNewAttr new attribute
1696.988 -     * 
1696.989 -     * The replaced attribute node is not returned and just deleted
1696.990 -     */
1696.991 -    IMPORT_C void  SetAttributeNodeL(TXmlEngAttr aNewAttr);
1696.992 -};
1696.993 -
1696.994 -
1696.995 -
1696.996 -#include "xmlengelement.inl"
1696.997 -
1696.998 -#endif /* XMLENGINE_ELEMENT_H_INCLUDED */
  1697.1 --- a/epoc32/include/xmlengelement.inl	Tue Mar 16 16:12:26 2010 +0000
  1697.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1697.3 @@ -1,113 +0,0 @@
  1697.4 -/*
  1697.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1697.6 -* All rights reserved.
  1697.7 -* This component and the accompanying materials are made available
  1697.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1697.9 -* which accompanies this distribution, and is available
 1697.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1697.11 -*
 1697.12 -* Initial Contributors:
 1697.13 -* Nokia Corporation - initial contribution.
 1697.14 -*
 1697.15 -* Contributors:
 1697.16 -*
 1697.17 -* Description:       Inline functions specyfic for element node
 1697.18 -*
 1697.19 -*/
 1697.20 -
 1697.21 -
 1697.22 -
 1697.23 -
 1697.24 -
 1697.25 -
 1697.26 -
 1697.27 -
 1697.28 -// -------------------------------------------------------------------------------------
 1697.29 -// Default constructor
 1697.30 -// -------------------------------------------------------------------------------------
 1697.31 -//
 1697.32 -inline TXmlEngElement::TXmlEngElement():TXmlEngNode(NULL) {}
 1697.33 -
 1697.34 -// -------------------------------------------------------------------------------------
 1697.35 -// Constructor
 1697.36 -// -------------------------------------------------------------------------------------
 1697.37 -//
 1697.38 -inline TXmlEngElement::TXmlEngElement(void* aInternal): TXmlEngNode(aInternal) {}
 1697.39 -
 1697.40 -
 1697.41 -// -------------------------------------------------------------------------------------
 1697.42 -// Creates new attribute node using namespace of its parent element (this element),
 1697.43 -// sets attribute's value and links it as the last attribute of the element
 1697.44 -//
 1697.45 -// @param aName	- Local name of attribute 
 1697.46 -// @param aValue - Value to set for new attribute or NULL (sets value to "")
 1697.47 -// @return A handler to the newly created attribute node;
 1697.48 -//
 1697.49 -// For more hints how to use it refer to AddNewAttributeL(const TDesC8&,const TDesC8&)
 1697.50 -//		
 1697.51 -// @note	
 1697.52 -// 	- No checks are made that attribute with such name exists
 1697.53 -// 	- if namespace of the parent element is default (i.e. bound prefix is NULL),
 1697.54 -// 	  then temporary prefix will be used and bound to the same namespace URI as elements
 1697.55 -// 	  (It is due to the fact that default namespaces do not spread on unprefixed attributes,
 1697.56 -// 	   see http://w3.org/TR/REC-xml-names/#defaulting)
 1697.57 -// -------------------------------------------------------------------------------------
 1697.58 -//
 1697.59 -inline TXmlEngAttr TXmlEngElement::AddNewAttributeSameNsL(const TDesC8& aName, const TDesC8& aValue)
 1697.60 -    {
 1697.61 -    return AddNewAttributeL(aName, aValue, NamespaceDeclaration());
 1697.62 -    }
 1697.63 -
 1697.64 -// -------------------------------------------------------------------------------------
 1697.65 -// @return Default namespace in the scope of the element
 1697.66 -//
 1697.67 -// NULL TXmlEngNamespace means that element with no prefix have no namespace associated
 1697.68 -// because no default namespace was declared or default namespace was undeclared with <b>xmlns=""</b>
 1697.69 -//
 1697.70 -// Equivalent to LookupNamespaceByPrefixL() with NULL (or "") prefix provided
 1697.71 -// -------------------------------------------------------------------------------------
 1697.72 -//
 1697.73 -inline TXmlEngNamespace TXmlEngElement::DefaultNamespaceL() const
 1697.74 -    {
 1697.75 -    return LookupNamespaceByPrefixL(KNullDesC8);
 1697.76 -    }
 1697.77 -
 1697.78 -// -------------------------------------------------------------------------------------
 1697.79 -// Specialized version of TXmlEngNode::CopyL()
 1697.80 -//
 1697.81 -// @return Deep copy of the element.
 1697.82 -// -------------------------------------------------------------------------------------
 1697.83 -//
 1697.84 -inline TXmlEngElement TXmlEngElement::CopyL() const
 1697.85 -    {return TXmlEngNode::CopyL().AsElement();}
 1697.86 -
 1697.87 -// -------------------------------------------------------------------------------------
 1697.88 -// Removes all element contents: child nodes, attributes and namespace declarations
 1697.89 -//
 1697.90 -// @see RemoveChildren(), RemoveAttributes(), RemoveNamespaceDeclarations();
 1697.91 -// -------------------------------------------------------------------------------------
 1697.92 -//
 1697.93 -inline void TXmlEngElement::ClearElement()
 1697.94 -    {
 1697.95 -    RemoveChildren();
 1697.96 -    RemoveAttributes();
 1697.97 -    RemoveNamespaceDeclarations();
 1697.98 -    }
 1697.99 -
1697.100 -// -------------------------------------------------------------------------------------
1697.101 -// -------------------------------------------------------------------------------------
1697.102 -//
1697.103 -
1697.104 -
1697.105 -// -------------------------------------------------------------------------------------
1697.106 -// Returns TRUE if the element holds an attribute with such namespace URI and name.
1697.107 -//
1697.108 -// Same result gives AttributeNodeL(uri,name).NotNull()
1697.109 -// -------------------------------------------------------------------------------------
1697.110 -//
1697.111 -inline TBool TXmlEngElement::HasAttributeL(const TDesC8& aLocalName, const TDesC8& aNamespaceUri) const
1697.112 -	{return AttributeNodeL(aLocalName, aNamespaceUri).NotNull();}
1697.113 -
1697.114 -
1697.115 -
1697.116 -
  1698.1 --- a/epoc32/include/xmlengentityreference.h	Tue Mar 16 16:12:26 2010 +0000
  1698.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1698.3 @@ -1,59 +0,0 @@
  1698.4 -/*
  1698.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1698.6 -* All rights reserved.
  1698.7 -* This component and the accompanying materials are made available
  1698.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1698.9 -* which accompanies this distribution, and is available
 1698.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1698.11 -*
 1698.12 -* Initial Contributors:
 1698.13 -* Nokia Corporation - initial contribution.
 1698.14 -*
 1698.15 -* Contributors:
 1698.16 -*
 1698.17 -* Description:       Entity reference node functions
 1698.18 -*
 1698.19 -*/
 1698.20 -
 1698.21 -
 1698.22 -
 1698.23 -
 1698.24 -
 1698.25 -
 1698.26 -
 1698.27 -#ifndef XMLENGINE_ENTITYREFERENCE_H_INCLUDED
 1698.28 -#define XMLENGINE_ENTITYREFERENCE_H_INCLUDED
 1698.29 -
 1698.30 -#include "xmlengnode.h"
 1698.31 -
 1698.32 -
 1698.33 -/** 
 1698.34 - * Instance of TXmlEngEntityReference class represents an XML entity reference in the DOM tree.
 1698.35 - * 
 1698.36 - * @lib XmlEngineDOM.lib
 1698.37 - * @since S60 v3.1
 1698.38 - */
 1698.39 -class TXmlEngEntityReference : public TXmlEngNode
 1698.40 -{
 1698.41 -public:
 1698.42 -	/** 
 1698.43 -     * Default constructor
 1698.44 -     *
 1698.45 -     * @since S60 v3.1
 1698.46 -     */
 1698.47 -	inline TXmlEngEntityReference();
 1698.48 -
 1698.49 -protected:
 1698.50 -	/** 
 1698.51 -     * Constructor
 1698.52 -     *
 1698.53 -     * @since S60 v3.1
 1698.54 -     * @param aInternal Entity reference pointer
 1698.55 -     */
 1698.56 -	inline TXmlEngEntityReference(void* aInternal);
 1698.57 -};
 1698.58 -
 1698.59 -#include "xmlengentityreference.inl"
 1698.60 -
 1698.61 -#endif /* XMLENGINE_ENTITYREFERENCE_H_INCLUDED */
 1698.62 -
  1699.1 --- a/epoc32/include/xmlengentityreference.inl	Tue Mar 16 16:12:26 2010 +0000
  1699.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1699.3 @@ -1,40 +0,0 @@
  1699.4 -/*
  1699.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1699.6 -* All rights reserved.
  1699.7 -* This component and the accompanying materials are made available
  1699.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1699.9 -* which accompanies this distribution, and is available
 1699.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1699.11 -*
 1699.12 -* Initial Contributors:
 1699.13 -* Nokia Corporation - initial contribution.
 1699.14 -*
 1699.15 -* Contributors:
 1699.16 -*
 1699.17 -* Description:       Entity reference node functions
 1699.18 -*
 1699.19 -*/
 1699.20 -
 1699.21 -
 1699.22 -
 1699.23 -
 1699.24 -
 1699.25 -
 1699.26 -
 1699.27 -// -----------------------------------------------------------------------------
 1699.28 -// Default constructor
 1699.29 -// -----------------------------------------------------------------------------
 1699.30 -//
 1699.31 -inline TXmlEngEntityReference::TXmlEngEntityReference():TXmlEngNode(NULL)
 1699.32 -    {
 1699.33 -    }
 1699.34 -    
 1699.35 -
 1699.36 -// -----------------------------------------------------------------------------
 1699.37 -// Constructor
 1699.38 -// -----------------------------------------------------------------------------
 1699.39 -//
 1699.40 -inline TXmlEngEntityReference::TXmlEngEntityReference(void* aInternal):TXmlEngNode(aInternal)
 1699.41 -    {
 1699.42 -    }
 1699.43 -    
  1700.1 --- a/epoc32/include/xmlengerrors.h	Tue Mar 16 16:12:26 2010 +0000
  1700.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1700.3 @@ -1,161 +0,0 @@
  1700.4 -/*
  1700.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1700.6 -* All rights reserved.
  1700.7 -* This component and the accompanying materials are made available
  1700.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1700.9 -* which accompanies this distribution, and is available
 1700.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1700.11 -*
 1700.12 -* Initial Contributors:
 1700.13 -* Nokia Corporation - initial contribution.
 1700.14 -*
 1700.15 -* Contributors:
 1700.16 -*
 1700.17 -* Description:       DOM errors codes
 1700.18 -*
 1700.19 -*/
 1700.20 -
 1700.21 -
 1700.22 -
 1700.23 -
 1700.24 -
 1700.25 -
 1700.26 -
 1700.27 -
 1700.28 -/**
 1700.29 - * NOTE1: All errors returned by DOM parser (positive values) are propagated from open-source library.
 1700.30 - * They can be found in documentation to Libxml2 (version 2.6.10). See http://xmlsoft.org, and find enum xmlParserErrors.
 1700.31 - *
 1700.32 - * NOTE2: This errors CANNOT be propagated to other applications. 
 1700.33 - *        It should be handled by user application.
 1700.34 - */
 1700.35 -
 1700.36 -#ifndef XMLENGINE_DOM_ERRORS_H__
 1700.37 -#define XMLENGINE_DOM_ERRORS_H__
 1700.38 -
 1700.39 -#include <e32def.h> 
 1700.40 -
 1700.41 -/** DOM parsing error */
 1700.42 -const TInt KXmlEngErrParsing = -32397;
 1700.43 -/** DOM save errors */
 1700.44 -const TInt KXmlEngErrNegativeOutputSize = -32383;
 1700.45 -const TInt KXmlEngErrWrongEncoding = -32382;
 1700.46 -
 1700.47 -/** KXmlEngErrNullNode error */
 1700.48 -const TInt KXmlEngErrNullNode = -32380;
 1700.49 -/** KXmlEngErrWrongUseOfAPI error */
 1700.50 -const TInt KXmlEngErrWrongUseOfAPI = -32381;
 1700.51 -
 1700.52 -#endif // XMLENGINE_DOM_ERRORS_H__
 1700.53 -
 1700.54 -/*
 1700.55 -* PARSING ERRORS:
 1700.56 -*
 1700.57 -*     XML_ERR_OK = 0 
 1700.58 -*    XML_ERR_INTERNAL_ERROR 				 1  
 1700.59 -*    XML_ERR_NO_MEMORY 						 2  
 1700.60 -*    XML_ERR_DOCUMENT_START 				 3  
 1700.61 -*    XML_ERR_DOCUMENT_EMPTY 				 4  
 1700.62 -*    XML_ERR_DOCUMENT_END 					 5  
 1700.63 -*    XML_ERR_INVALID_HEX_CHARREF 			 6  
 1700.64 -*    XML_ERR_INVALID_DEC_CHARREF 			 7  
 1700.65 -*    XML_ERR_INVALID_CHARREF 				 8  
 1700.66 -*    XML_ERR_INVALID_CHAR 					 9  
 1700.67 -*    XML_ERR_CHARREF_AT_EOF 				 10 
 1700.68 -*    XML_ERR_CHARREF_IN_PROLOG 				 11 
 1700.69 -*    XML_ERR_CHARREF_IN_EPILOG 				 12 
 1700.70 -*    XML_ERR_CHARREF_IN_DTD 				 13 
 1700.71 -*    XML_ERR_ENTITYREF_AT_EOF 				 14 
 1700.72 -*    XML_ERR_ENTITYREF_IN_PROLOG 			 15 
 1700.73 -*    XML_ERR_ENTITYREF_IN_EPILOG 			 16 
 1700.74 -*    XML_ERR_ENTITYREF_IN_DTD 				 17 
 1700.75 -*    XML_ERR_PEREF_AT_EOF 					 18 
 1700.76 -*    XML_ERR_PEREF_IN_PROLOG 				 19 
 1700.77 -*    XML_ERR_PEREF_IN_EPILOG 				 20 
 1700.78 -*    XML_ERR_PEREF_IN_INT_SUBSET 			 21 
 1700.79 -*    XML_ERR_ENTITYREF_NO_NAME 				 22 
 1700.80 -*    XML_ERR_ENTITYREF_SEMICOL_MISSING	 	 23 
 1700.81 -*    XML_ERR_PEREF_NO_NAME 					 24 
 1700.82 -*    XML_ERR_PEREF_SEMICOL_MISSING 			 25 
 1700.83 -*    XML_ERR_UNDECLARED_ENTITY 				 26 
 1700.84 -*    XML_WAR_UNDECLARED_ENTITY 				 27 
 1700.85 -*    XML_ERR_UNPARSED_ENTITY 				 28 
 1700.86 -*    XML_ERR_ENTITY_IS_EXTERNAL 			 29 
 1700.87 -*    XML_ERR_ENTITY_IS_PARAMETER 			 30 
 1700.88 -*    XML_ERR_UNKNOWN_ENCODING 				 31 
 1700.89 -*    XML_ERR_UNSUPPORTED_ENCODING 			 32 
 1700.90 -*    XML_ERR_STRING_NOT_STARTED 			 33 
 1700.91 -*    XML_ERR_STRING_NOT_CLOSED 				 34 
 1700.92 -*    XML_ERR_NS_DECL_ERROR 					 35 
 1700.93 -*    XML_ERR_ENTITY_NOT_STARTED 			 36 
 1700.94 -*    XML_ERR_ENTITY_NOT_FINISHED 			 37 
 1700.95 -*    XML_ERR_LT_IN_ATTRIBUTE 				 38 
 1700.96 -*    XML_ERR_ATTRIBUTE_NOT_STARTED 			 39 
 1700.97 -*    XML_ERR_ATTRIBUTE_NOT_FINISHED 		 40 
 1700.98 -*    XML_ERR_ATTRIBUTE_WITHOUT_VALUE		 41 
 1700.99 -*    XML_ERR_ATTRIBUTE_REDEFINED 			 42 
1700.100 -*    XML_ERR_LITERAL_NOT_STARTED 			 43 
1700.101 -*    XML_ERR_LITERAL_NOT_FINISHED 			 44 
1700.102 -*    XML_ERR_COMMENT_NOT_FINISHED 			 45 
1700.103 -*    XML_ERR_PI_NOT_STARTED 				 46 
1700.104 -*    XML_ERR_PI_NOT_FINISHED 				 47 
1700.105 -*    XML_ERR_NOTATION_NOT_STARTED 			 48 
1700.106 -*    XML_ERR_NOTATION_NOT_FINISHED 			 49 
1700.107 -*    XML_ERR_ATTLIST_NOT_STARTED 			 50 
1700.108 -*    XML_ERR_ATTLIST_NOT_FINISHED 			 51 
1700.109 -*    XML_ERR_MIXED_NOT_STARTED 				 52 
1700.110 -*    XML_ERR_MIXED_NOT_FINISHED 			 53 
1700.111 -*    XML_ERR_ELEMCONTENT_NOT_STARTED 		 54 
1700.112 -*    XML_ERR_ELEMCONTENT_NOT_FINISHED		 55 
1700.113 -*    XML_ERR_XMLDECL_NOT_STARTED 			 56 
1700.114 -*    XML_ERR_XMLDECL_NOT_FINISHED 			 57 
1700.115 -*    XML_ERR_CONDSEC_NOT_STARTED 			 58 
1700.116 -*    XML_ERR_CONDSEC_NOT_FINISHED 			 59 
1700.117 -*    XML_ERR_EXT_SUBSET_NOT_FINISHED		 60 
1700.118 -*    XML_ERR_DOCTYPE_NOT_FINISHED 			 61 
1700.119 -*    XML_ERR_MISPLACED_CDATA_END 			 62 
1700.120 -*    XML_ERR_CDATA_NOT_FINISHED 			 63 
1700.121 -*    XML_ERR_RESERVED_XML_NAME 				 64 
1700.122 -*    XML_ERR_SPACE_REQUIRED 				 65 
1700.123 -*    XML_ERR_SEPARATOR_REQUIRED 			 66 
1700.124 -*    XML_ERR_NMTOKEN_REQUIRED 				 67 
1700.125 -*    XML_ERR_NAME_REQUIRED 					 68 
1700.126 -*    XML_ERR_PCDATA_REQUIRED 				 69 
1700.127 -*    XML_ERR_URI_REQUIRED 					 70 
1700.128 -*    XML_ERR_PUBID_REQUIRED 				 71 
1700.129 -*    XML_ERR_LT_REQUIRED 					 72 
1700.130 -*    XML_ERR_GT_REQUIRED 					 73 
1700.131 -*    XML_ERR_LTSLASH_REQUIRED 				 74 
1700.132 -*    XML_ERR_EQUAL_REQUIRED 				 75 
1700.133 -*    XML_ERR_TAG_NAME_MISMATCH 				 76 
1700.134 -*    XML_ERR_TAG_NOT_FINISHED 				 77 
1700.135 -*    XML_ERR_STANDALONE_VALUE 				 78 
1700.136 -*    XML_ERR_ENCODING_NAME 					 79 
1700.137 -*    XML_ERR_HYPHEN_IN_COMMENT 				 80 
1700.138 -*    XML_ERR_INVALID_ENCODING 				 81 
1700.139 -*    XML_ERR_EXT_ENTITY_STANDALONE 			 82 
1700.140 -*    XML_ERR_CONDSEC_INVALID 				 83 
1700.141 -*    XML_ERR_VALUE_REQUIRED 				 84 
1700.142 -*    XML_ERR_NOT_WELL_BALANCED 				 85 
1700.143 -*    XML_ERR_EXTRA_CONTENT 					 86 
1700.144 -*    XML_ERR_ENTITY_CHAR_ERROR 				 87 
1700.145 -*    XML_ERR_ENTITY_PE_INTERNAL 			 88 
1700.146 -*    XML_ERR_ENTITY_LOOP 					 89 
1700.147 -*    XML_ERR_ENTITY_BOUNDARY 				 90 
1700.148 -*    XML_ERR_INVALID_URI 					 91 
1700.149 -*    XML_ERR_URI_FRAGMENT 					 92 
1700.150 -*    XML_WAR_CATALOG_PI 					 93 
1700.151 -*    XML_ERR_NO_DTD 						 94 
1700.152 -*    XML_ERR_CONDSEC_INVALID_KEYWORD 		 95 
1700.153 -*    XML_ERR_VERSION_MISSING 				 96 
1700.154 -*    XML_WAR_UNKNOWN_VERSION 				 97 
1700.155 -*    XML_WAR_LANG_VALUE 					 98 
1700.156 -*    XML_WAR_NS_URI 						 99 
1700.157 -*    XML_WAR_NS_URI_RELATIVE 				 100 
1700.158 -*    XML_ERR_MISSING_ENCODING 				 101 
1700.159 -*    XML_NS_ERR_XML_NAMESPACE			     200
1700.160 -*    XML_NS_ERR_UNDEFINED_NAMESPACE 		 201 
1700.161 -*    XML_NS_ERR_QNAME 						 202 
1700.162 -*    XML_NS_ERR_ATTRIBUTE_REDEFINED 		 203 
1700.163 -*/    
1700.164 -
  1701.1 --- a/epoc32/include/xmlengfilecontainer.h	Tue Mar 16 16:12:26 2010 +0000
  1701.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1701.3 @@ -1,90 +0,0 @@
  1701.4 -/*
  1701.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1701.6 -* All rights reserved.
  1701.7 -* This component and the accompanying materials are made available
  1701.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1701.9 -* which accompanies this distribution, and is available
 1701.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1701.11 -*
 1701.12 -* Initial Contributors:
 1701.13 -* Nokia Corporation - initial contribution.
 1701.14 -*
 1701.15 -* Contributors:
 1701.16 -*
 1701.17 -* Description:       All file container data functions
 1701.18 -*
 1701.19 -*/
 1701.20 -
 1701.21 -
 1701.22 -
 1701.23 -
 1701.24 -
 1701.25 -
 1701.26 -
 1701.27 -#ifndef XMLENGINE_FILECONTAINER_H_INCLUDED
 1701.28 -#define XMLENGINE_FILECONTAINER_H_INCLUDED
 1701.29 -
 1701.30 -#include "xmlengdatacontainer.h"
 1701.31 -
 1701.32 -class RFile;
 1701.33 -
 1701.34 -
 1701.35 -
 1701.36 -/**
 1701.37 -* Instance of TXmlEngFileContainer class represents data stored in RFile in DOM tree
 1701.38 -*
 1701.39 -* RFile container is treated in general as text nodes in DOM tree.
 1701.40 -* Some of the fields in xmlNode structure are reused in order to save memory. 
 1701.41 -* Data is stored in file system referenced to by RFile handle.
 1701.42 -*
 1701.43 -* Sample code for creating filecontainer:
 1701.44 -* @code  
 1701.45 -*      RXmlEngDOMImplementation domImpl;
 1701.46 -*      domImpl.OpenL();        ///< opening DOM implementation object 
 1701.47 -*      RXmlEngDocument iDoc; 
 1701.48 -*      ///< create document element
 1701.49 -*      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
 1701.50 -*      ///< create file container from file (file1 is an RFile object) and CID equals cid
 1701.51 -*      TXmlEngFileContainer binData = iDoc.CreateFileContainerL(cid, file1);
 1701.52 -*      elem.AppendChildL(binData);      ///< append container to the dom tree       
 1701.53 -*      iDoc.Close();               ///< closing all opened objects
 1701.54 -*      domImpl.Close();
 1701.55 -* @endcode 
 1701.56 -*
 1701.57 -* @lib XmlEngineDOM.lib
 1701.58 -* @since S60 v3.2
 1701.59 -*/
 1701.60 -class TXmlEngFileContainer : public TXmlEngDataContainer
 1701.61 -{
 1701.62 -public:
 1701.63 -    /**
 1701.64 -     * Get RFile reference
 1701.65 -     *
 1701.66 -     * @since S60 v3.2
 1701.67 -     * @return RFile reference
 1701.68 -     * 
 1701.69 -     */
 1701.70 -    IMPORT_C RFile& File() const;
 1701.71 -	
 1701.72 -protected:
 1701.73 -    /**
 1701.74 -     * Default constructor
 1701.75 -	 *
 1701.76 -     * @since S60 v3.1
 1701.77 -     */
 1701.78 -	inline TXmlEngFileContainer(); 
 1701.79 -	
 1701.80 -    /**
 1701.81 -     * Constructor
 1701.82 -     *
 1701.83 -     * @since S60 v3.1
 1701.84 -     * @param aInternal node pointer
 1701.85 -     */
 1701.86 -	inline TXmlEngFileContainer(void* aInternal);
 1701.87 -};
 1701.88 -
 1701.89 -
 1701.90 -
 1701.91 -#include "xmlengfilecontainer.inl"
 1701.92 -
 1701.93 -#endif /* XMLENGINE_FILECONTAINER_H_INCLUDED */
  1702.1 --- a/epoc32/include/xmlengfilecontainer.inl	Tue Mar 16 16:12:26 2010 +0000
  1702.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1702.3 @@ -1,41 +0,0 @@
  1702.4 -/*
  1702.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1702.6 -* All rights reserved.
  1702.7 -* This component and the accompanying materials are made available
  1702.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1702.9 -* which accompanies this distribution, and is available
 1702.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1702.11 -*
 1702.12 -* Initial Contributors:
 1702.13 -* Nokia Corporation - initial contribution.
 1702.14 -*
 1702.15 -* Contributors:
 1702.16 -*
 1702.17 -* Description:       File container functions
 1702.18 -*
 1702.19 -*/
 1702.20 -
 1702.21 -
 1702.22 -
 1702.23 -
 1702.24 -
 1702.25 -
 1702.26 -
 1702.27 -
 1702.28 -
 1702.29 -// -----------------------------------------------------------------------------
 1702.30 -// Default constructor
 1702.31 -// -----------------------------------------------------------------------------
 1702.32 -//
 1702.33 -inline TXmlEngFileContainer::TXmlEngFileContainer():TXmlEngDataContainer(NULL)
 1702.34 -    {
 1702.35 -    }
 1702.36 -    
 1702.37 -// -----------------------------------------------------------------------------
 1702.38 -// Constructor
 1702.39 -// -----------------------------------------------------------------------------
 1702.40 -//
 1702.41 -inline TXmlEngFileContainer::TXmlEngFileContainer(void* aInternal):TXmlEngDataContainer(aInternal)
 1702.42 -    {
 1702.43 -    }
 1702.44 -   
  1703.1 --- a/epoc32/include/xmlengnamespace.h	Tue Mar 16 16:12:26 2010 +0000
  1703.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1703.3 @@ -1,161 +0,0 @@
  1703.4 -/*
  1703.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1703.6 -* All rights reserved.
  1703.7 -* This component and the accompanying materials are made available
  1703.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1703.9 -* which accompanies this distribution, and is available
 1703.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1703.11 -*
 1703.12 -* Initial Contributors:
 1703.13 -* Nokia Corporation - initial contribution.
 1703.14 -*
 1703.15 -* Contributors:
 1703.16 -*
 1703.17 -* Description:       Namespace node functions
 1703.18 -*
 1703.19 -*/
 1703.20 -
 1703.21 -
 1703.22 -
 1703.23 -
 1703.24 -
 1703.25 -
 1703.26 -
 1703.27 -#ifndef XMLENGINE_NAMESPACE_H_INCLUDED
 1703.28 -#define XMLENGINE_NAMESPACE_H_INCLUDED
 1703.29 -
 1703.30 -#include "xmlengnode.h"
 1703.31 -
 1703.32 -/**
 1703.33 - *   Represents existing namespace declaration in DOM tree <b>OR</b> namespace node returned
 1703.34 - *   in RXmlEngNodeSet as a result of some XPath expression. 
 1703.35 - *
 1703.36 - *   All elements and attributes may have a namespace instance associated.
 1703.37 - *   Once put in element, a namespace declaration (instance of TXmlEngNamespace) may be 
 1703.38 - *   referred to by all attributes and descentants of the element (unless
 1703.39 - *   prefix that this namespace-to-prefix binding uses is overriden somewhere below in the document tree)
 1703.40 - *
 1703.41 - *   <b>General rules of namespace handling:</b>
 1703.42 - *
 1703.43 - * - <b>NULL</b> prefix in namespace node means NO PREFIX. ""(empty string '\\0') can be used for specifying 
 1703.44 - *   absense of prefix when setting it, however <b>NULL</b> will be stored and returned.
 1703.45 - *
 1703.46 - * - <b>NULL</b> value of namespace URI is legal only with <b>NULL</b> prefix and only met in 
 1703.47 - *   undeclaration of namespace (<i>xmlns=""</i>). <b>""</b> (empty string) can be used too, however it 
 1703.48 - *   will be returned as <b>NULL</b>.
 1703.49 - *
 1703.50 - * - <b>NULL</b> or <b>""</b> namespace <b>URI</b> with non-<b>NULL</b> prefix is illegal acording to the XML specification.
 1703.51 - *
 1703.52 - * - Namespace of a element is <b>default</b> if it is associated with some namespace declaration with <b>NULL</b> prefix.
 1703.53 - *
 1703.54 - * - Elements are never associated with namespace undeclarations (<b>xmlns=""</b>), instead, such elements have no
 1703.55 - *   namespace declaration referred to. 
 1703.56 - *
 1703.57 - * - Attributes do not have <i>default</i> namespace. Even if it is effective at element scope,
 1703.58 - *   default namespace declaration is not applied to element's attributes (according to the XML specification)
 1703.59 - *
 1703.60 - * - Namespace of a node (element or attribute) is <b>undefined</b> if no namespace declaration is
 1703.61 - *   associated with it.
 1703.62 - *
 1703.63 - * - Node with <i>undefined</i> namespace is serialized as having no prefix. In general,
 1703.64 - *   DOM API handles the complexity of namespace declaration handling and creates neccessary
 1703.65 - *   namespace declarations and undeclares default namespace. However, some node-creation methods (e.g. TXmlEngElement::AddNewElementL()) 
 1703.66 - *   do not ensure that created node with undefined namespace (thus, without a prefix) will 
 1703.67 - *   actually treated after serialization as having some <i>default</i> namespace
 1703.68 - *
 1703.69 - *   @note
 1703.70 - *   Namespace nodes that are result of XPath expression have following restrictions:
 1703.71 - *       - they cannot be used as namespace definitions, because they are not part of
 1703.72 - *         the DOM tree, but copies of existing namespace definitions.
 1703.73 - *       - namespace prefix is not available because it is not mandated by DOM Level 3 XPath module API, 
 1703.74 - *         so in returned copies of DOM tree, namespaces prefix strings are not preserved 
 1703.75 - *         and Prefix() returns NULL.
 1703.76 - * 
 1703.77 - * @lib XmlEngineDOM.lib
 1703.78 - * @since S60 v3.1
 1703.79 - */
 1703.80 -class TXmlEngNamespace: public TXmlEngNode
 1703.81 -{
 1703.82 -  public:
 1703.83 -    /**
 1703.84 -     * Default constructor
 1703.85 -     *
 1703.86 -     * @since S60 v3.1
 1703.87 -     */
 1703.88 -	inline TXmlEngNamespace();
 1703.89 -
 1703.90 -    /**
 1703.91 -    /**
 1703.92 -     * Get namespace URI
 1703.93 -     *
 1703.94 -     * @since S60 v3.1
 1703.95 -     * @return Namespace URI string 
 1703.96 -     * @note "" is never returned - it is replaced with NULL
 1703.97 -     *
 1703.98 -     * For TXmlEngNamespace(NULL) or namespace undeclaration (xmlns=""), which are
 1703.99 -     * treatet as <i>undefined namespace</i> returns NULL,
1703.100 -     * otherwise result is not a NULL string and not a "" (empty string).
1703.101 -     */
1703.102 -    IMPORT_C TPtrC8 Uri() const;
1703.103 -
1703.104 -    /**
1703.105 -     * Get namespace prefix. 
1703.106 -     *
1703.107 -     * @since S60 v3.1
1703.108 -     * @return prefix that is bound in the namespace declaration
1703.109 -     * or NULL string for default namespace or if no binding exist
1703.110 -     */
1703.111 -    IMPORT_C TPtrC8 Prefix() const;
1703.112 -
1703.113 -    /**
1703.114 -     * Check if namespace is default.
1703.115 -     *
1703.116 -     * @since S60 v3.1
1703.117 -     * @return Whether it is a definition of default namespace
1703.118 -     *    TRUE  -- is a default namespace (no prefix)
1703.119 -     *    FALSE -- not a default namespace (bound to prefix) or empty TXmlEngNamespace(NULL) instance
1703.120 -     */
1703.121 -    IMPORT_C TBool IsDefault() const;
1703.122 -
1703.123 -	/**
1703.124 -     * Check if namespace is undefined
1703.125 -	 *
1703.126 -     * @since S60 v3.1
1703.127 -     * @return Whether the namespace is undefined
1703.128 -     *
1703.129 -     * A node's namespace is undefined if no namespace declaration associated with it.
1703.130 -     * @note Same as TXmlEngNode::IsNull()
1703.131 -     */
1703.132 -    IMPORT_C TBool IsUndefined() const; 
1703.133 -
1703.134 -protected:
1703.135 -    /**
1703.136 -     *   Workaround to avoid misuse of TXmlEngNode::NamespaceUri() method, which should not be
1703.137 -     *   applied to TXmlEngNamespace node. Since the name of the inherited method from TXmlEngNode
1703.138 -     *   is too similar to TXmlEngNamespace::Uri(), NamespaceUri() is disabled for direct
1703.139 -     *   use. 
1703.140 -     *   If NamespaceUri() is called on the TXmlEngNamespace object that is downcasted to TXmlEngNode, then
1703.141 -     *   NamespaceUri()'s result equals to result of Uri() method.
1703.142 -     *
1703.143 -     * @since S60 v3.1
1703.144 -     * @return NULL
1703.145 -     */
1703.146 -	inline TPtrC8 NamespaceUri();
1703.147 -
1703.148 -protected:
1703.149 -    /**
1703.150 -     * Constructor
1703.151 -     *
1703.152 -     * @since S60 v3.1
1703.153 -     * @param aPtr Namespace pointer
1703.154 -     */
1703.155 -	inline TXmlEngNamespace(void* aPtr);
1703.156 -
1703.157 -    friend class TXmlEngElement;
1703.158 -    friend class TXmlEngNode;
1703.159 -};
1703.160 -
1703.161 -#include "xmlengnamespace.inl"
1703.162 -
1703.163 -#endif /* XMLENGINE_NAMESPACE_H_INCLUDED */
1703.164 -
  1704.1 --- a/epoc32/include/xmlengnamespace.inl	Tue Mar 16 16:12:26 2010 +0000
  1704.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1704.3 @@ -1,56 +0,0 @@
  1704.4 -/*
  1704.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1704.6 -* All rights reserved.
  1704.7 -* This component and the accompanying materials are made available
  1704.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1704.9 -* which accompanies this distribution, and is available
 1704.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1704.11 -*
 1704.12 -* Initial Contributors:
 1704.13 -* Nokia Corporation - initial contribution.
 1704.14 -*
 1704.15 -* Contributors:
 1704.16 -*
 1704.17 -* Description:       Namespace node functions
 1704.18 -*
 1704.19 -*/
 1704.20 -
 1704.21 -
 1704.22 -
 1704.23 -
 1704.24 -
 1704.25 -
 1704.26 -
 1704.27 -
 1704.28 -
 1704.29 -// -----------------------------------------------------------------------------
 1704.30 -// Default constructor
 1704.31 -// -----------------------------------------------------------------------------
 1704.32 -//
 1704.33 -inline TXmlEngNamespace::TXmlEngNamespace():TXmlEngNode(NULL)
 1704.34 -    {
 1704.35 -    }
 1704.36 -    
 1704.37 -// -----------------------------------------------------------------------------
 1704.38 -// Workaround to avoid misuse of TXmlEngNode::NamespaceUri() method, which should not 
 1704.39 -// be applied to TXmlEngNamespace node. Since the name of the inherited method from 
 1704.40 -// TXmlEngNode is too similar to TXmlEngNamespace::Uri(), NamespaceUri() is disabled for 
 1704.41 -// direct use. 
 1704.42 -//		
 1704.43 -// If NamespaceUri() is called on the TXmlEngNamespace object that is downcasted to 
 1704.44 -// TXmlEngNode, then NamespaceUri()'s result equals to result of Uri() method.
 1704.45 -// -----------------------------------------------------------------------------
 1704.46 -//
 1704.47 -inline TPtrC8 TXmlEngNamespace::NamespaceUri()
 1704.48 -    {
 1704.49 -    return KNullDesC8();
 1704.50 -    }    
 1704.51 -
 1704.52 -// -----------------------------------------------------------------------------
 1704.53 -// Constructor
 1704.54 -// -----------------------------------------------------------------------------
 1704.55 -//
 1704.56 -inline TXmlEngNamespace::TXmlEngNamespace(void* aPtr):TXmlEngNode(aPtr)
 1704.57 -    {
 1704.58 -    }
 1704.59 -    
  1705.1 --- a/epoc32/include/xmlengnode.h	Tue Mar 16 16:12:26 2010 +0000
  1705.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1705.3 @@ -1,805 +0,0 @@
  1705.4 -/*
  1705.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1705.6 -* All rights reserved.
  1705.7 -* This component and the accompanying materials are made available
  1705.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1705.9 -* which accompanies this distribution, and is available
 1705.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1705.11 -*
 1705.12 -* Initial Contributors:
 1705.13 -* Nokia Corporation - initial contribution.
 1705.14 -*
 1705.15 -* Contributors:
 1705.16 -*
 1705.17 -* Description:       Node class declaration
 1705.18 -*
 1705.19 -*/
 1705.20 -
 1705.21 -
 1705.22 -
 1705.23 -
 1705.24 -
 1705.25 -
 1705.26 -
 1705.27 -#ifndef XMLENGINE_NODE_H_INCLUDED
 1705.28 -#define XMLENGINE_NODE_H_INCLUDED
 1705.29 -
 1705.30 -#include <e32base.h>
 1705.31 -
 1705.32 -// forward declaration
 1705.33 -class TXmlEngNode;
 1705.34 -
 1705.35 -// Forward declarations
 1705.36 -template<class T> class RXmlEngNodeList;
 1705.37 -
 1705.38 -class RXmlEngDocument;
 1705.39 -class TXmlEngElement;
 1705.40 -class TXmlEngAttr;
 1705.41 -class TXmlEngTextNode;
 1705.42 -class TXmlEngNamespace;
 1705.43 -class TXmlEngComment;
 1705.44 -class TXmlEngCDATASection;
 1705.45 -class TXmlEngDocumentFragment;
 1705.46 -class TXmlEngEntityReference;
 1705.47 -class TXmlEngProcessingInstruction;
 1705.48 -class MXmlEngUserData;
 1705.49 -class TXmlEngBinaryContainer;
 1705.50 -class TXmlEngChunkContainer;
 1705.51 -class TXmlEngDataContainer;
 1705.52 -class TXmlEngFileContainer;
 1705.53 -//
 1705.54 -
 1705.55 -/**
 1705.56 - * Instance of TXmlEngNode class represents an XML node in the DOM tree.
 1705.57 - *
 1705.58 - * Class implements methods that are similar for all XML node types
 1705.59 - * i.e. element, attribute.
 1705.60 - * 
 1705.61 - * Sample code for node tree modifications:
 1705.62 - * @code  
 1705.63 - *      RXmlEngDOMImplementation domImpl;
 1705.64 - *      domImpl.OpenL();        ///< opening DOM implementation object 
 1705.65 - *      RXmlEngDocument iDoc; ///< iDoc with created nodes tree
 1705.66 - *      TXmlEngNode tmp = iDoc.DocumentElement();
 1705.67 - *	///< copying first child of iDoc to tmp2 node and appending it
 1705.68 - * 	TXmlEngNode tmp2 = tmp.FirstChild().CopyL();
 1705.69 - *	tmp.AppendChildL(tmp2);
 1705.70 - *	///< copying next node to the first child of iDoc to the last child place
 1705.71 - *	tmp.FirstChild().NextSibling().CopyToL(tmp.LastChild());
 1705.72 - *	///< replasing before last child with second child 
 1705.73 - *	tmp.LastChild().PreviousSibling().ReplaceWith(tmp.FirstChild().NextSibling());
 1705.74 - *	///< moving first child of iDoc to second child childrens
 1705.75 - *	tmp.FirstChild().MoveTo(tmp.FirstChild().NextSibling());	
 1705.76 - *      iDoc.Close();               ///< closing all opened objects
 1705.77 - *      domImpl.Close();
 1705.78 - * @endcode 
 1705.79 - *
 1705.80 - * @lib XmlEngineDOM.lib
 1705.81 - * @since S60 v3.1
 1705.82 - */
 1705.83 -class TXmlEngNode
 1705.84 -{
 1705.85 -public:
 1705.86 -   /**
 1705.87 -    * The different element types carried by an XML tree.
 1705.88 -    *
 1705.89 -    * @note This is synchronized with DOM Level 3 values
 1705.90 -    *       See http://www.w3.org/TR/DOM-Level-3-Core/
 1705.91 -    *
 1705.92 -    */
 1705.93 -    enum TXmlEngDOMNodeType {
 1705.94 -        EElement                =        1,
 1705.95 -        EAttribute              =        2,
 1705.96 -        EText                   =        3,
 1705.97 -        ECDATASection           =        4,
 1705.98 -        EEntityReference        =        5,
 1705.99 -        EEntity                 =        6,  //> Not supported currently
1705.100 -        EProcessingInstruction  =        7,
1705.101 -        EComment                =        8,
1705.102 -        EDocument               =        9,
1705.103 -        EDocumentType           =        10, //> Not supported currently
1705.104 -        EDocumentFragment       =        11,
1705.105 -        ENotation               =        12, //> Not supported currently
1705.106 -        ENamespaceDeclaration   =        18, //> Not in DOM spec
1705.107 -		EBinaryContainer 		= 		 30, //> Not in DOM spec
1705.108 -		EChunkContainer 		= 		 31, //> Not in DOM spec
1705.109 -		EFileContainer 			= 		 32  //> Not in DOM spec
1705.110 -    };
1705.111 -
1705.112 -public:
1705.113 -    /**
1705.114 -     * Default constructor
1705.115 -     *
1705.116 -     * @since S60 v3.1
1705.117 -     */
1705.118 -    inline TXmlEngNode();
1705.119 -
1705.120 -    /**
1705.121 -     * Constructor
1705.122 -     *
1705.123 -     * @since S60 v3.1
1705.124 -     * @param aInternal node pointer
1705.125 -     */
1705.126 -    inline TXmlEngNode(void* aInternal);
1705.127 -
1705.128 -    /**
1705.129 -     * Check if node is NULL
1705.130 -     *
1705.131 -     * @since S60 v3.1
1705.132 -     * @return TRUE if node is NULL in other case FALSE
1705.133 -     */
1705.134 -    inline TBool IsNull() const;
1705.135 -
1705.136 -    /**
1705.137 -     * Check if node is NULL
1705.138 -     *
1705.139 -     * @since S60 v3.1
1705.140 -     * @return TRUE if node is not NULL in other case FALSE
1705.141 -     */
1705.142 -    inline TBool NotNull()const;
1705.143 -
1705.144 -    /**
1705.145 -     * Cast node to attribute node.
1705.146 -     *
1705.147 -     * @since S60 v3.1
1705.148 -     * @return Attribute node
1705.149 -     *
1705.150 -     * @note
1705.151 -     *      - Never cast nodes to a wrong node type!
1705.152 -     *      - Casting removes const'ness of the node
1705.153 -     */
1705.154 -    inline    TXmlEngAttr&                    AsAttr() const;
1705.155 -
1705.156 -    /**
1705.157 -     * Cast node to text node.
1705.158 -     *
1705.159 -     * @since S60 v3.1
1705.160 -     * @return Text node
1705.161 -     *
1705.162 -     * @note
1705.163 -     *     - Never cast nodes to a wrong node type!
1705.164 -     *     - Casting removes const'ness of the node
1705.165 -     */
1705.166 -    inline    TXmlEngTextNode&                AsText() const;
1705.167 -
1705.168 -    /**
1705.169 -     * Cast node to binary data container
1705.170 -     *
1705.171 -     * @since S60 v3.2
1705.172 -     * @return Binary container
1705.173 -     *
1705.174 -     * @note
1705.175 -     *     - Never cast nodes to a wrong node type!
1705.176 -     *     - Casting removes const'ness of the node
1705.177 -     */
1705.178 -    inline    TXmlEngBinaryContainer&		 AsBinaryContainer() const;
1705.179 -
1705.180 -    /**
1705.181 -     * Cast node to memory chunk container
1705.182 -     *
1705.183 -     * @since S60 v3.2
1705.184 -     * @return Chunk container
1705.185 -     *
1705.186 -     * @note
1705.187 -     *     - Never cast nodes to a wrong node type!
1705.188 -     *     - Casting removes const'ness of the node
1705.189 -     */
1705.190 -    inline    TXmlEngChunkContainer&		 AsChunkContainer() const;
1705.191 -
1705.192 -    /**
1705.193 -     * Cast node to file container
1705.194 -     *
1705.195 -     * @since S60 v3.2
1705.196 -     * @return File container
1705.197 -     *
1705.198 -     * @note
1705.199 -     *     - Never cast nodes to a wrong node type!
1705.200 -     *     - Casting removes const'ness of the node
1705.201 -     */
1705.202 -    inline    TXmlEngFileContainer&		 AsFileContainer() const;
1705.203 -
1705.204 -    /**
1705.205 -     * Cast node to memory chunk container
1705.206 -     *
1705.207 -     * @since S60 v3.1
1705.208 -     * @return Chunk container
1705.209 -     *
1705.210 -     * @note
1705.211 -     *     - Never cast nodes to a wrong node type!
1705.212 -     *     - Casting removes const'ness of the node
1705.213 -     */
1705.214 -    inline    TXmlEngDataContainer&		 AsDataContainer() const;
1705.215 -
1705.216 -    /**
1705.217 -     * Cast node to element node.
1705.218 -     *
1705.219 -     * @since S60 v3.1
1705.220 -     * @return Element node
1705.221 -     *
1705.222 -     * @note
1705.223 -     *     - Never cast nodes to a wrong node type!
1705.224 -     *     - Casting removes const'ness of the node
1705.225 -     */
1705.226 -    inline TXmlEngElement& AsElement() const;
1705.227 -
1705.228 -    /**
1705.229 -     * Cast node to comment node.
1705.230 -     *
1705.231 -     * @since S60 v3.1
1705.232 -     * @return Comment node
1705.233 -     *
1705.234 -     * @note
1705.235 -     *     - Never cast nodes to a wrong node type!
1705.236 -     *     - Casting removes const'ness of the node
1705.237 -     */
1705.238 -    inline TXmlEngComment& AsComment() const;
1705.239 -
1705.240 -    /**
1705.241 -     * Cast node to namespace node.
1705.242 -     *
1705.243 -     * @since S60 v3.1
1705.244 -     * @return Namespace node
1705.245 -     *
1705.246 -     * @note
1705.247 -     *     - Never cast nodes to a wrong node type!
1705.248 -     *     - Casting removes const'ness of the node
1705.249 -     */
1705.250 -    inline TXmlEngNamespace& AsNamespace() const;
1705.251 -
1705.252 -    /**
1705.253 -     * Cast node to CDATA section node.
1705.254 -     *
1705.255 -     * @since S60 v3.1
1705.256 -     * @return CDATA section node
1705.257 -     *
1705.258 -     * @note
1705.259 -     *     - Never cast nodes to a wrong node type!
1705.260 -     *     - Casting removes const'ness of the node
1705.261 -     */
1705.262 -    inline TXmlEngCDATASection& AsCDATASection() const;
1705.263 -
1705.264 -    /**
1705.265 -     * Cast node to entity reference node.
1705.266 -     *
1705.267 -     * @since S60 v3.1
1705.268 -     * @return Entity reference node
1705.269 -     *
1705.270 -     * @note
1705.271 -     *     - Never cast nodes to a wrong node type!
1705.272 -     *     - Casting removes const'ness of the node
1705.273 -     */
1705.274 -    inline TXmlEngEntityReference& AsEntityReference() const;
1705.275 -
1705.276 -    /**
1705.277 -     * Cast node to processing instruction node.
1705.278 -     *
1705.279 -     * @since S60 v3.1
1705.280 -     * @return Processing instruction node
1705.281 -     *
1705.282 -     * @note
1705.283 -     *     - Never cast nodes to a wrong node type!
1705.284 -     *     - Casting removes const'ness of the node
1705.285 -     */
1705.286 -    inline TXmlEngProcessingInstruction& AsProcessingInstruction() const;
1705.287 -
1705.288 -    /**
1705.289 -     * Get innerXML string. This method returns all content of the node.
1705.290 -     * Output text does not include node markup.
1705.291 -     *
1705.292 -     * @since S60 v3.1
1705.293 -     * @param aBuffer RBuf8 in which output should be save
1705.294 -     * @return Size of output buffer
1705.295 -     * @note Returned RBuf8 should be freed
1705.296 -     */
1705.297 -    IMPORT_C TInt InnerXmlL(RBuf8& aBuffer);
1705.298 -    
1705.299 -    /**
1705.300 -     * Get outerXML string. This method returns all content of the node.
1705.301 -     * Output text includes node markup.
1705.302 -     *
1705.303 -     * @since S60 v3.1
1705.304 -     * @param aBuffer RBuf8 in which output should be save
1705.305 -     * @return Size of output buffer
1705.306 -     * @note Returned RBuf8 should be freed
1705.307 -     */
1705.308 -    IMPORT_C TInt OuterXmlL(RBuf8& aBuffer);
1705.309 -
1705.310 -    /**
1705.311 -     * Moves the node to become the first in the list of its siblings
1705.312 -     * Node is expected to have a parent.
1705.313 -     *
1705.314 -     * @since S60 v3.1
1705.315 -     */
1705.316 -    IMPORT_C void SetAsFirstSibling();
1705.317 -
1705.318 -    /**
1705.319 -     * Moves the node to become the last in the list of its siblings
1705.320 -     * Node is expected to have a parent.
1705.321 -     *
1705.322 -     * @since S60 v3.1
1705.323 -     */
1705.324 -    IMPORT_C void SetAsLastSibling();
1705.325 -
1705.326 -    /**
1705.327 -     * Moves the node in the list of sibling nodes before another node
1705.328 -     * Node is expected to have a parent.
1705.329 -     * Do nothing if aSiblingNode is not one of node's siblings
1705.330 -     *
1705.331 -     * @since S60 v3.1
1705.332 -	 * @param aSiblingNode Node that should be after current node 
1705.333 -     */
1705.334 -    IMPORT_C void MoveBeforeSibling(TXmlEngNode aSiblingNode);
1705.335 -
1705.336 -    /**
1705.337 -     * Moves the node in the list of sibling nodes after another node
1705.338 -     * Node is expected to have a parent.
1705.339 -     * Do nothing if aSiblingNode is not one of the node's siblings
1705.340 -     *
1705.341 -     * @since S60 v3.1
1705.342 -	 * @param aSiblingNode Node that should be after current node 
1705.343 -     */    
1705.344 -    IMPORT_C void MoveAfterSibling(TXmlEngNode aSiblingNode);
1705.345 -
1705.346 -    /**
1705.347 -     * Moves the node to another part of the tree or another document
1705.348 -     * The node is unliked from current postion (if any) and appended
1705.349 -     * to the its new parent.
1705.350 -     *
1705.351 -     * @since S60 v3.1
1705.352 -     * @param aParent Parent node
1705.353 -     * @return Node handle
1705.354 -     *
1705.355 -     * @note 
1705.356 -     * In many cases this method call should be followed by ReconcileNamespacesL() on the moved node
1705.357 -     */
1705.358 -    inline  TXmlEngNode MoveTo(TXmlEngNode aParent);
1705.359 -
1705.360 -    /**
1705.361 -     * Detaches a node from document tree
1705.362 -     *
1705.363 -     * @since S60 v3.1
1705.364 -     * @return This node, which is already not a part of any document
1705.365 -     * @note    Remember to use ReconcileNamespacesL() later, if extracted node (subtree)
1705.366 -     *          contains references to namespace declarations outside of the subtree.
1705.367 -     * @see     ReconcileNamespacesL()
1705.368 -     * @note    The document, from which the is being unlinked, becomes an owner of the node
1705.369 -     *          until it is linked elsewhere.
1705.370 -     */
1705.371 -    IMPORT_C TXmlEngNode Unlink();
1705.372 -
1705.373 -    /**
1705.374 -     * Ensures that namespaces referred to in the node and its descendants are
1705.375 -     * in the scope the node.
1705.376 -     *
1705.377 -     * This method checks that all the namespaces declared within the given
1705.378 -     * tree are properly declared. This is needed for example after Copy or Unlink
1705.379 -     * and then Append operations. The subtree may still hold pointers to
1705.380 -     * namespace declarations outside the subtree or they may be invalid/masked. As much
1705.381 -     * as possible the function try to reuse the existing namespaces found in
1705.382 -     * the new environment. If not possible, the new namespaces are redeclared
1705.383 -     * on the top of the subtree.
1705.384 -     *
1705.385 -     * This method should be used after unlinking nodes and inserting to another
1705.386 -     * document tree or to a another part of the original tree, if some nodes of the subtree
1705.387 -     * are remove from the scope of a namespace declaration they refer to.
1705.388 -     *
1705.389 -     * When node is unlinked, it may still refer to namespace declarations from the previous location.
1705.390 -     * It is important to reconcile subtree's namespaces if previous parent tree is to be destroyed.
1705.391 -     * On the other hand, if the parent tree is not changed before pasting its unlinked part into another
1705.392 -     * tree, then reconciliation is needed only after paste operation.
1705.393 -     *
1705.394 -     * @since S60 v3.1
1705.395 -     */
1705.396 -    IMPORT_C void ReconcileNamespacesL();
1705.397 -
1705.398 -    /**
1705.399 -     * Unlinks the node and destroys it; all child nodes are destroyed as well and all memory is freed
1705.400 -     *
1705.401 -     * @note  Document nodes cannot be "removed" with this method, uses RXmlEngDocument-specific methods.
1705.402 -     *
1705.403 -     * @since S60 v3.1
1705.404 -     */
1705.405 -    IMPORT_C void Remove();
1705.406 -
1705.407 -    /**
1705.408 -     * Current node is replaced with another node (subtree).
1705.409 -     *
1705.410 -     * The replacement node is linked into document tree instead of this node.
1705.411 -     * The replaced node is destroyed.
1705.412 -     *
1705.413 -     * @since S60 v3.1
1705.414 -     * @param aNode Node that repleace current node
1705.415 -     *
1705.416 -     * @see SubstituteFor(TXmlEngNode)
1705.417 -     *
1705.418 -     * In both cases the argument node is unlinked from its previous location
1705.419 -     * (which can be NONE, i.e. not linked; SAME or ANOTHER document tree).
1705.420 -     *
1705.421 -     * @note Replacement of a node with NULL TXmlEngNode is legal and equivalent to removing the node.
1705.422 -     * @note Not applicable to document nodes
1705.423 -     */
1705.424 -    IMPORT_C void ReplaceWith(TXmlEngNode aNode);
1705.425 -
1705.426 -    /**
1705.427 -     * Another node is put instead of the current node.
1705.428 -     *
1705.429 -     * Does the same as ReplaceWith(TXmlEngNode) but does not free node and just returns it.
1705.430 -     *
1705.431 -     * @since S60 v3.1
1705.432 -     * @param aNode Node that repleace current node
1705.433 -     * @return Current node after unlinking it from document tree
1705.434 -     * @see ReplaceWith(TXmlEngNode)
1705.435 -     *
1705.436 -     * In both cases the argument node is unlinked from its previous location
1705.437 -     * (which can be NONE, i.e. not linked; SAME or ANOTHER document tree)
1705.438 -     *
1705.439 -     * It is possible to use NULL TXmlEngNode object as an argument. In such case
1705.440 -     * no new node will be put instead of unlinked one.
1705.441 -     *
1705.442 -     * @note Not applicable to document nodes
1705.443 -     */
1705.444 -    IMPORT_C TXmlEngNode SubstituteForL(TXmlEngNode aNode);
1705.445 -
1705.446 -    /**
1705.447 -     * Retrieves a "handle" for namespace declaration that applies to the node's namespace
1705.448 -     * Note: DOM specs do not consider namespace declarations as a kind of nodes
1705.449 -     * This API adds TXmlEngNamespace type of nodes, which is derived from TXmlEngNode.
1705.450 -     *
1705.451 -     * @since S60 v3.1
1705.452 -     * @return    Object that represents namespace declaration and prefix binding that
1705.453 -     *             act on the node; returns NULL object (check using TXmlEngNamespace.IsNull()
1705.454 -     *             or TXmlEngNamespace.NotNull()) if no namespace associated
1705.455 -     */
1705.456 -    IMPORT_C TXmlEngNamespace NamespaceDeclaration() const;
1705.457 -
1705.458 -    /**
1705.459 -     * Attaches a user data object to this node. The ownership of the object is transferred.
1705.460 -     * When the (underlying) node is deleted the Destroy method of the MXmlEngUserData class will be
1705.461 -     * called. If there already is a user data object associated with this node, it will be
1705.462 -     * deleted before attaching the new object.
1705.463 -     *
1705.464 -     * @since S60 v3.1
1705.465 -     * @param aData Pointer to the data object.
1705.466 -     * @return true if successful, false if for example underlying node type doesn't support
1705.467 -     * attaching user data.
1705.468 -     * @note Only TXmlEngElement and Attribute nodes currently support this feature.
1705.469 -     *             User data is not copied, when node is copied.
1705.470 -     */
1705.471 -    IMPORT_C TBool AddUserData(MXmlEngUserData* aData);
1705.472 -
1705.473 -    /**
1705.474 -     * Returns the user data object attached to this node. Ownership is not transferred.
1705.475 -     *
1705.476 -     * @since S60 v3.1
1705.477 -     * @return Pointer to data object or NULL if it doesn't exist.
1705.478 -     */
1705.479 -    IMPORT_C MXmlEngUserData* UserData() const;
1705.480 -
1705.481 -    /**
1705.482 -     * Removes the user data onject attached to this node. Ownership is transferred
1705.483 -     * (the object is not deleted).
1705.484 -     *
1705.485 -     * @since S60 v3.1
1705.486 -     * @return Pointer to data object or NULL if it doesn't exist.
1705.487 -     */
1705.488 -    IMPORT_C MXmlEngUserData* RemoveUserData();
1705.489 -
1705.490 -    /**
1705.491 -     * Clones the node completely: all attributes and namespace declarations (for TXmlEngElement nodes),
1705.492 -     * values and children nodes are copied as well.
1705.493 -     *
1705.494 -     * Document nodes cannot be copied with this method: RXmlEngDocument::CloneDocumentL() must be used.
1705.495 -     *
1705.496 -     * @since S60 v3.1
1705.497 -     * @return Complete copy of a node or leaves.
1705.498 -     * @note    The node should not be NULL!
1705.499 -     */
1705.500 -    IMPORT_C TXmlEngNode CopyL() const;
1705.501 -
1705.502 -    /**
1705.503 -     * Creates a deep copy of the node and appends the subtree as a new child
1705.504 -     * to the provided parent node.
1705.505 -     *
1705.506 -     * @since S60 v3.1
1705.507 -     * @return Created copy of the node after linking it into the target document tree.
1705.508 -     * @note Document nodes cannot be copied with this method; use RXmlEngDocument::CloneDocumentL()
1705.509 -     */
1705.510 -    IMPORT_C TXmlEngNode CopyToL(TXmlEngNode aParent) const;
1705.511 -
1705.512 -    /**
1705.513 -     * Append a child node.
1705.514 -     *
1705.515 -     * This is universal operation for any types of nodes.
1705.516 -     * Note, that some types of nodes cannot have children and
1705.517 -     * some types of nodes are not allowed to be children of some other types.
1705.518 -     *
1705.519 -     * @since S60 v3.1
1705.520 -     * @param aNewChild Child node that should be added
1705.521 -     * @return Appended node, which could changed as a result of adding it to
1705.522 -     * list of child nodes (e.g. text nodes can coalesce together)
1705.523 -     */
1705.524 -    IMPORT_C TXmlEngNode AppendChildL(TXmlEngNode aNewChild);
1705.525 -
1705.526 -    /**
1705.527 -     * Initializes a node list with all children of the node
1705.528 -     *
1705.529 -     * @since S60 v3.1
1705.530 -     * @param aList node list that should be initialized
1705.531 -     */
1705.532 -    IMPORT_C void GetChildNodes(RXmlEngNodeList<TXmlEngNode>& aList) const;
1705.533 -
1705.534 -    /**
1705.535 -     * Get parent node of current node.
1705.536 -     *
1705.537 -     * @since S60 v3.1
1705.538 -     * @return Parent node of the node or NULL if no parent
1705.539 -     */
1705.540 -    IMPORT_C TXmlEngNode ParentNode() const;
1705.541 -
1705.542 -    /**
1705.543 -     * Get first child of current node
1705.544 -     *
1705.545 -     * @since S60 v3.1
1705.546 -     * @return The first child node or NULL if no children
1705.547 -     */
1705.548 -    IMPORT_C TXmlEngNode FirstChild() const;
1705.549 -
1705.550 -    /**
1705.551 -     * Get last child of current node
1705.552 -     *
1705.553 -     * @since S60 v3.1
1705.554 -     * @return The last child node or NULL if no children
1705.555 -     */
1705.556 -    IMPORT_C TXmlEngNode LastChild() const;
1705.557 -
1705.558 -    /**
1705.559 -     * Get previous node of current node
1705.560 -     *
1705.561 -     * @since S60 v3.1
1705.562 -     * @return Previous node in a child list or NULL if no sibling before
1705.563 -     */
1705.564 -    IMPORT_C TXmlEngNode PreviousSibling() const;
1705.565 -
1705.566 -    /**
1705.567 -     * Get fallowing node of current node
1705.568 -     *
1705.569 -     * @since S60 v3.1
1705.570 -     * @return Following node in a child list or NULL if no sibling after
1705.571 -     */
1705.572 -    IMPORT_C TXmlEngNode NextSibling() const;
1705.573 -
1705.574 -    /**
1705.575 -     * Get document handle
1705.576 -     *
1705.577 -     * @since S60 v3.1
1705.578 -     * @return A document node of the DOM tree this node belongs to
1705.579 -     *
1705.580 -     * @note An instance of RXmlEngDocument class returns itself
1705.581 -     */
1705.582 -    IMPORT_C RXmlEngDocument OwnerDocument() const;
1705.583 -
1705.584 -    /**
1705.585 -     * Fetches value of this node, depending on its type.
1705.586 -     *
1705.587 -     * @note It is better to always cast nodes to specific type and then use specific
1705.588 -     *       method for getting "node value"
1705.589 -     *
1705.590 -     * @since S60 v3.1
1705.591 -     * @return Node value
1705.592 -     */
1705.593 -    IMPORT_C TPtrC8 Value() const;
1705.594 -
1705.595 -    /**
1705.596 -     * Get copy of node's text content
1705.597 -     * What is returned depends on the node type.
1705.598 -     * Method caller is responsible for freeing returned string.
1705.599 -     *
1705.600 -     * @since S60 v3.1
1705.601 -     * @return   the content of the node
1705.602 -     */
1705.603 -    IMPORT_C void WholeTextContentsCopyL(RBuf8& aOutput) const;
1705.604 -
1705.605 -    /**
1705.606 -     * Sets value of this node.
1705.607 -     *
1705.608 -     * @since S60 v3.1
1705.609 -     * @param aValue New value
1705.610 -     */
1705.611 -    IMPORT_C void SetValueL(const TDesC8& aValue);
1705.612 -
1705.613 -    /**
1705.614 -     * Check if node content is "simple text".
1705.615 -     *
1705.616 -     * @since S60 v3.1
1705.617 -     * @return Whether the value of the node is presented by only one TXmlEngTextNode node
1705.618 -     *
1705.619 -     * If the value is <i>"simple text"</i> then it is possible to access it as TDOMString
1705.620 -     * without making copy, which combines values of all text nodes and entity reference nodes.
1705.621 -     *
1705.622 -     * @see TXmlEngNode::Value(), TXmlEngAttr::Value(), TXmlEngElement::Text()
1705.623 -     *
1705.624 -     * This method is applicable to TXmlEngElement and TXmlEngAttr nodes. On other nodes FALSE is returned.
1705.625 -     *
1705.626 -     * @note
1705.627 -     *  Values (contents) of TXmlEngComment, TXmlEngCDATASection, TXmlEngTextNode, ProcessingInstuction data are
1705.628 -     *  always "simple".
1705.629 -     *
1705.630 -     * When the returned result is FALSE, getting value of the node would not returned
1705.631 -     * whole contents because of either entity references present in the contents or
1705.632 -     * the contents is mixed (for TXmlEngElement node). In this case WholeTextContentsCopyL()
1705.633 -     * should be used.
1705.634 -     *
1705.635 -     * @see TXmlEngNode::WholeTextContentsCopyL()
1705.636 -     */
1705.637 -    IMPORT_C TBool IsSimpleTextContents() const;
1705.638 -
1705.639 -    /**
1705.640 -     * Use NodeType() to find out the type of the node prior to casting object
1705.641 -     * of TXmlEngNode class to one of its derived subclasses (TXmlEngElement, TXmlEngAttr, TXmlEngTextNode, etc.)
1705.642 -     *
1705.643 -     * @since S60 v3.1
1705.644 -     * @return Type of the node
1705.645 -     *
1705.646 -     * @see TXmlEngDOMNodeType
1705.647 -     */
1705.648 -    IMPORT_C TXmlEngDOMNodeType NodeType() const;
1705.649 -
1705.650 -    /**
1705.651 -     * Get node name
1705.652 -     *
1705.653 -     * @since S60 v3.1
1705.654 -     * @return Name of the node
1705.655 -     *
1705.656 -     * This method generally follows DOM spec :
1705.657 -     * -------------------------------------------------------------------------------
1705.658 -     * The values of nodeName, nodeValue, and attributes vary according to the node
1705.659 -     * type as follows:
1705.660 -     *
1705.661 -     * interface              nodeName                nodeValue            attributes
1705.662 -     * -------------------------------------------------------------------------------
1705.663 -     * Attr                   = Attr.name              = Attr.value             = null
1705.664 -     * CDATASection           = "#cdata-section"       = CharacterData.data     = null
1705.665 -     * Comment                = "#comment"             = CharacterData.data     = null
1705.666 -     * Document               = "#document"            = null                   = null
1705.667 -     * DocumentFragment       = "#document-fragment"   = null                   = null
1705.668 -     * DocumentType           = DocumentType.name      = null                   = null
1705.669 -     * Element                = Element.tagName        = null           = NamedNodeMap
1705.670 -     * Entity                 = entity name            = null                   = null
1705.671 -     * EntityReference        = name of entity referenced  = null               = null
1705.672 -     * Notation               = notation name          = null                   = null
1705.673 -     * ProcessingInstruction  = target                 = data                   = null
1705.674 -     * Text                   = "#text"                = CharacterData.data     = null
1705.675 -     * -------------------------------------------------------------------------------
1705.676 -     */
1705.677 -    IMPORT_C TPtrC8 Name() const;
1705.678 -
1705.679 -
1705.680 -    /**
1705.681 -     * Check if node has child nodes.
1705.682 -     *
1705.683 -     * @since S60 v3.1
1705.684 -     * @return True if the node is TXmlEngElement and has at least one child node
1705.685 -     */
1705.686 -    IMPORT_C TBool HasChildNodes() const;
1705.687 -
1705.688 -    /**
1705.689 -     * Check if node has attributes.
1705.690 -     *
1705.691 -     * @since S60 v3.1
1705.692 -     * @return True if the node is TXmlEngElement and has at least one attribute
1705.693 -     *
1705.694 -     * @note Namespace-to-prefix bindings are not attributes.
1705.695 -     */
1705.696 -    IMPORT_C TBool HasAttributes() const;
1705.697 -
1705.698 -    /**
1705.699 -     * Evaluates active base URI for the node by processing xml:base attributes of parents
1705.700 -     *
1705.701 -     * @since S60 v3.1
1705.702 -     * @return A copy of effective base URI for the node
1705.703 -     * @note It's up to the caller to free the string
1705.704 -     */
1705.705 -    IMPORT_C void BaseUriL(RBuf8& aBaseUri) const;
1705.706 -
1705.707 -    /**
1705.708 -     * Compares nodes.
1705.709 -     *
1705.710 -     * The nodes are the same if they are referring to the same in-memory
1705.711 -     * data structure.
1705.712 -     *
1705.713 -     * @since S60 v3.1
1705.714 -     * @param aOther Node to compare
1705.715 -     * @return TRUE if the same
1705.716 -     */
1705.717 -    inline TBool IsSameNode(TXmlEngNode aOther) const;
1705.718 -
1705.719 -    /**
1705.720 -     * Get namespace uri.
1705.721 -     *
1705.722 -     * @since S60 v3.1
1705.723 -     * @return  Namespace URI of a node
1705.724 -     *           - NULL is returned for elements and attributes that do not
1705.725 -     *             belong to any namespace.
1705.726 -     *           - bound namespace URI is returned for namespace declaration nodes (instances of TXmlEngNamespace).
1705.727 -     *           - NULL is returned to all other types of node.
1705.728 -     *
1705.729 -     * @note use IsNull() and NotNull() for testing returned result on the subject
1705.730 -     *      of having some URI
1705.731 -     */
1705.732 -    IMPORT_C TPtrC8 NamespaceUri() const;
1705.733 -
1705.734 -    /**
1705.735 -     * Get namespace prefix.
1705.736 -     *
1705.737 -     * @since S60 v3.1
1705.738 -     * @return  Prefix of a node
1705.739 -     * Returns NULL for elements and attributes that do not have prefix
1705.740 -     * (node belongs to the default namespace or does not belong to any namespace)
1705.741 -     * NULL is also returned for all types of node other than TXmlEngElement or TXmlEngAttr
1705.742 -     */
1705.743 -    IMPORT_C TPtrC8 Prefix() const;
1705.744 -
1705.745 -    /**
1705.746 -     * Check if nemespace is default for this node
1705.747 -     *
1705.748 -     * @since S60 v3.1
1705.749 -     * @param aNamespaceUri Namespace URI
1705.750 -     * @return True if given namespace URI is a default one for the node (applicable to elements only)
1705.751 -     *
1705.752 -     * @note "" or NULL can be used to denote undefined namespace
1705.753 -     */
1705.754 -    IMPORT_C TBool IsDefaultNamespaceL(const TDesC8& aNamespaceUri) const;
1705.755 -
1705.756 -    /**
1705.757 -     * Searches the prefix that is bound to the given aNamespaceUri and
1705.758 -     * applicable in the scope of this TXmlEngNode.
1705.759 -     *
1705.760 -     * @since S60 v3.1
1705.761 -     * @param aNamespaceUri Namespace Uri that should be found
1705.762 -     * @return A sought prefix or NULL if not found or aNamespaceUri is the default namespace
1705.763 -     *
1705.764 -     * @see TXmlEngElement::LookupNamespaceByUriL(const TDesC8&)
1705.765 -     */
1705.766 -    IMPORT_C TPtrC8 LookupPrefixL(const TDesC8& aNamespaceUri) const;
1705.767 -
1705.768 -    /**
1705.769 -     * Searches the namespace URI that is bound to the given prefix.
1705.770 -     * 
1705.771 -     * @since S60 v3.1
1705.772 -     * @param aPrefix Namespace prefix that should be found
1705.773 -     * @return A sought URI or NULL if the prefix is not bound
1705.774 -     *
1705.775 -     * @see TXmlEngElement::LookupNamespaceByPrefixL(const TDesC8&)
1705.776 -     */
1705.777 -    IMPORT_C TPtrC8 LookupNamespaceUriL(const TDesC8& aPrefix) const;
1705.778 -
1705.779 -protected:
1705.780 -    /**
1705.781 -     * Unlinks the internal libxml2's node from double-linked list.
1705.782 -     * Relinks neighbour nodes.The node stays virtually linked to its old neighbours! Use with care!!
1705.783 -     *
1705.784 -     * No checks are made; nor parent's, nor node's properties updated
1705.785 -     *
1705.786 -     * @since S60 v3.1
1705.787 -     */
1705.788 -    void DoUnlinkNode();
1705.789 -
1705.790 -    /**
1705.791 -     * Inserts the node in a double-linked list of nodes before specified node.
1705.792 -     *
1705.793 -     * No checks are made; nor parent's, nor node's properties updated (except prev/next)
1705.794 -     *
1705.795 -     * @since S60 v3.1
1705.796 -     * @param aNode Target node
1705.797 -     */
1705.798 -    void LinkBefore(TXmlEngNode aNode);
1705.799 -
1705.800 -protected:
1705.801 -	/** Node pointer */
1705.802 -    void* iInternal;
1705.803 -
1705.804 -};
1705.805 -
1705.806 -#include "xmlengnode.inl"
1705.807 -
1705.808 -#endif /* XMLENGINE_NODE_H_INCLUDED */
  1706.1 --- a/epoc32/include/xmlengnode.inl	Tue Mar 16 16:12:26 2010 +0000
  1706.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1706.3 @@ -1,94 +0,0 @@
  1706.4 -/*
  1706.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1706.6 -* All rights reserved.
  1706.7 -* This component and the accompanying materials are made available
  1706.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1706.9 -* which accompanies this distribution, and is available
 1706.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1706.11 -*
 1706.12 -* Initial Contributors:
 1706.13 -* Nokia Corporation - initial contribution.
 1706.14 -*
 1706.15 -* Contributors:
 1706.16 -*
 1706.17 -* Description:       Node functions implementation
 1706.18 -*
 1706.19 -*/
 1706.20 -
 1706.21 -
 1706.22 -
 1706.23 -
 1706.24 -
 1706.25 -
 1706.26 -
 1706.27 -inline TXmlEngNode::TXmlEngNode()
 1706.28 -        : iInternal(NULL) {}
 1706.29 -
 1706.30 -inline TXmlEngNode::TXmlEngNode(void* aInternal)
 1706.31 -        : iInternal(aInternal) {}
 1706.32 -
 1706.33 -inline TBool TXmlEngNode::IsNull() const
 1706.34 -    {return iInternal == NULL;}
 1706.35 -
 1706.36 -inline TBool TXmlEngNode::NotNull() const
 1706.37 -    {return iInternal != NULL;}
 1706.38 -
 1706.39 -// ------------------------------------------------------------------------
 1706.40 -// Compares nodes.
 1706.41 -//
 1706.42 -// The nodes are the same if they are referring to the same in-memory
 1706.43 -// data structure. 
 1706.44 -// ------------------------------------------------------------------------
 1706.45 -//
 1706.46 -inline TBool TXmlEngNode::IsSameNode(TXmlEngNode aOther) const
 1706.47 -    {return iInternal == aOther.iInternal;}
 1706.48 -
 1706.49 -// ------------------------------------------------------------------------
 1706.50 -// Moves the node to another part of the tree or another document
 1706.51 -// The node is unliked from current postion (if any) and appended
 1706.52 -// to the its new parent.
 1706.53 -//
 1706.54 -// @note 
 1706.55 -// In many cases this method call should be followed by ReconcileNamespacesL() on the moved node
 1706.56 -// ------------------------------------------------------------------------
 1706.57 -//
 1706.58 -inline TXmlEngNode TXmlEngNode::MoveTo(TXmlEngNode aParent)
 1706.59 -    {return aParent.AppendChildL(Unlink());}
 1706.60 -
 1706.61 -inline TXmlEngAttr& TXmlEngNode::AsAttr() const                    
 1706.62 -    {return *reinterpret_cast<TXmlEngAttr*>(const_cast<TXmlEngNode*>(this));}
 1706.63 -
 1706.64 -inline TXmlEngElement&     TXmlEngNode::AsElement() const                    
 1706.65 -    {return *reinterpret_cast<TXmlEngElement*>(const_cast<TXmlEngNode*>(this));}
 1706.66 -
 1706.67 -inline TXmlEngTextNode& TXmlEngNode::AsText() const    
 1706.68 -    {return *reinterpret_cast<TXmlEngTextNode*>(const_cast<TXmlEngNode*>(this));}
 1706.69 -
 1706.70 -inline TXmlEngBinaryContainer& TXmlEngNode::AsBinaryContainer() const    
 1706.71 -    {return *reinterpret_cast<TXmlEngBinaryContainer*>(const_cast<TXmlEngNode*>(this));}
 1706.72 -
 1706.73 -inline TXmlEngChunkContainer& TXmlEngNode::AsChunkContainer() const    
 1706.74 -    {return *reinterpret_cast<TXmlEngChunkContainer*>(const_cast<TXmlEngNode*>(this));}   
 1706.75 -
 1706.76 -inline TXmlEngFileContainer& TXmlEngNode::AsFileContainer() const    
 1706.77 -    {return *reinterpret_cast<TXmlEngFileContainer*>(const_cast<TXmlEngNode*>(this));} 
 1706.78 -
 1706.79 -inline TXmlEngDataContainer& TXmlEngNode::AsDataContainer() const    
 1706.80 -    {return *reinterpret_cast<TXmlEngDataContainer*>(const_cast<TXmlEngNode*>(this));}      
 1706.81 -
 1706.82 -inline TXmlEngNamespace& TXmlEngNode::AsNamespace() const
 1706.83 -    {return *reinterpret_cast<TXmlEngNamespace*>(const_cast<TXmlEngNode*>(this));}
 1706.84 -
 1706.85 -inline TXmlEngComment& TXmlEngNode::AsComment() const        
 1706.86 -    {return *reinterpret_cast<TXmlEngComment*>(const_cast<TXmlEngNode*>(this));}
 1706.87 -
 1706.88 -inline TXmlEngCDATASection& TXmlEngNode::AsCDATASection()    const
 1706.89 -    {return *reinterpret_cast<TXmlEngCDATASection*>(const_cast<TXmlEngNode*>(this));}
 1706.90 -
 1706.91 -
 1706.92 -inline TXmlEngEntityReference& TXmlEngNode::AsEntityReference() const
 1706.93 -    {return *reinterpret_cast<TXmlEngEntityReference*>(const_cast<TXmlEngNode*>(this));}
 1706.94 -
 1706.95 -inline TXmlEngProcessingInstruction& TXmlEngNode::AsProcessingInstruction() const
 1706.96 -    {return *reinterpret_cast<TXmlEngProcessingInstruction*>(const_cast<TXmlEngNode*>(this));}
 1706.97 -
  1707.1 --- a/epoc32/include/xmlengnodefilter.h	Tue Mar 16 16:12:26 2010 +0000
  1707.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1707.3 @@ -1,63 +0,0 @@
  1707.4 -/*
  1707.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1707.6 -* All rights reserved.
  1707.7 -* This component and the accompanying materials are made available
  1707.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1707.9 -* which accompanies this distribution, and is available
 1707.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1707.11 -*
 1707.12 -* Initial Contributors:
 1707.13 -* Nokia Corporation - initial contribution.
 1707.14 -*
 1707.15 -* Contributors:
 1707.16 -*
 1707.17 -* Description:       Node filter interface
 1707.18 -*
 1707.19 -*/
 1707.20 -
 1707.21 -
 1707.22 -
 1707.23 -
 1707.24 -
 1707.25 -
 1707.26 -
 1707.27 -#ifndef XMLENGINE_NODEFILTER_H_INCLUDED
 1707.28 -#define XMLENGINE_NODEFILTER_H_INCLUDED
 1707.29 -
 1707.30 -#include <e32base.h>
 1707.31 -
 1707.32 -class TXmlEngNode;
 1707.33 -
 1707.34 -/** 
 1707.35 - * Results that can be returned by node filter
 1707.36 - */
 1707.37 -enum TXmlEngNodeFilterResult
 1707.38 -    {
 1707.39 -    EAccept = 1,
 1707.40 -    EReject = 2,
 1707.41 -    ESkip = 3,
 1707.42 -    ESkipContents = 4  /** non-standard feature */
 1707.43 -    }; 
 1707.44 -
 1707.45 -/** 
 1707.46 - * Interface of nodes filter class
 1707.47 - *
 1707.48 - * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113/traversal.html#Traversal-NodeFilter
 1707.49 - *
 1707.50 - * @since S60 v3.1
 1707.51 - */
 1707.52 -class MXmlEngNodeFilter
 1707.53 -    {
 1707.54 -public:
 1707.55 -    /** 
 1707.56 -     * Check if node is accepted.
 1707.57 -     *
 1707.58 -     * @since S60 v3.1
 1707.59 -     * @param aNode Node to check
 1707.60 -     * @return Node filter result
 1707.61 -     */ 
 1707.62 -    virtual TXmlEngNodeFilterResult AcceptNode(TXmlEngNode aNode) = 0;    
 1707.63 -    };
 1707.64 -
 1707.65 -
 1707.66 -#endif /* XMLENGINE_NODEFILTER_H_INCLUDED */  
  1708.1 --- a/epoc32/include/xmlengnodelist.h	Tue Mar 16 16:12:26 2010 +0000
  1708.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1708.3 @@ -1,131 +0,0 @@
  1708.4 -/*
  1708.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1708.6 -* All rights reserved.
  1708.7 -* This component and the accompanying materials are made available
  1708.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1708.9 -* which accompanies this distribution, and is available
 1708.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1708.11 -*
 1708.12 -* Initial Contributors:
 1708.13 -* Nokia Corporation - initial contribution.
 1708.14 -*
 1708.15 -* Contributors:
 1708.16 -*
 1708.17 -* Description:       Node list inline functions
 1708.18 -*
 1708.19 -*/
 1708.20 -
 1708.21 -
 1708.22 -
 1708.23 -
 1708.24 -
 1708.25 -
 1708.26 -
 1708.27 -#ifndef XMLENGINE_NODELIST_H_INCLUDED
 1708.28 -#define XMLENGINE_NODELIST_H_INCLUDED
 1708.29 -
 1708.30 -#include "xmlengnode.h"
 1708.31 -#include "xmlengnodelist_impl.h"
 1708.32 -
 1708.33 -
 1708.34 -
 1708.35 -/**
 1708.36 - * Template implements list container.
 1708.37 - *
 1708.38 - * List may contain different types of nodes.
 1708.39 - * Node pointer is casted to specify node type when
 1708.40 - * is returned by Next() method.
 1708.41 - *
 1708.42 - * @lib XmlEngineDOM.lib
 1708.43 - * @since S60 v3.2
 1708.44 - */
 1708.45 -template<class T> 
 1708.46 -class RXmlEngNodeList
 1708.47 -{
 1708.48 -public:
 1708.49 -    /**
 1708.50 -     * Get list length.
 1708.51 -     *
 1708.52 -     * @since S60 v3.2
 1708.53 -     * @return Number of nodes in a node list
 1708.54 -     */
 1708.55 -	inline TInt Count() const;
 1708.56 -
 1708.57 -    /**
 1708.58 -     * Checks whether next node exists in a node list
 1708.59 -     *
 1708.60 -     * @since S60 v3.2
 1708.61 -     * @return TRUE if next node exists, FALSE otherwise
 1708.62 -     */
 1708.63 -	inline TBool HasNext() const;
 1708.64 -
 1708.65 -    /**
 1708.66 -     * Retrieves next node from a node list
 1708.67 -     *
 1708.68 -     * @since S60 v3.2
 1708.69 -     * @return Next node 
 1708.70 -     */
 1708.71 -	inline T Next();
 1708.72 -
 1708.73 -    /**
 1708.74 -     * Closes a node list
 1708.75 -     *
 1708.76 -     * @since S60 v3.2
 1708.77 -     */
 1708.78 -	inline void Close();
 1708.79 -
 1708.80 -private:
 1708.81 -    friend class TXmlEngNode;
 1708.82 -    friend class TXmlEngElement;
 1708.83 -
 1708.84 -    /*
 1708.85 -     * Opens node.
 1708.86 -     *
 1708.87 -     * @since S60 v3.2
 1708.88 -     * @param aHead node pointer to the node from which the searching 
 1708.89 -            of list elements is started
 1708.90 -     * @param aType type of list elements
 1708.91 -     * @param aName name of list elements 
 1708.92 -     * @param aNs namespace of list elements
 1708.93 -     *
 1708.94 -     * @note If aType is NULL, aName and aNs are ignored
 1708.95 -     */
 1708.96 -    void OpenL( 
 1708.97 -			void* aHead,
 1708.98 -			TXmlEngNode::TXmlEngDOMNodeType aType,
 1708.99 -			const TDesC8&	aName = KNullDesC8,
1708.100 -			const TDesC8&	aNs = KNullDesC8);
1708.101 -
1708.102 -    /** 
1708.103 -     * Opens node.
1708.104 -     *
1708.105 -     * @since S60 v3.2
1708.106 -     * @param aHead node pointer to the node from which the searching 
1708.107 -            of list elements is started
1708.108 -     * @param aType type of list elements
1708.109 -     */
1708.110 -    void Open( 
1708.111 -			void* aHead,
1708.112 -			TXmlEngNode::TXmlEngDOMNodeType aType);
1708.113 -
1708.114 -    /** List with nodes */
1708.115 -	RXmlEngNodeListImpl iList;
1708.116 -};
1708.117 -
1708.118 -/**
1708.119 - * Template implements list container for nodes.
1708.120 - *
1708.121 - * Specialization for trivial case: list of TXmlEngNode objects
1708.122 - * No "thin wrapper" pattern needed, operate directly on NodeListImpl
1708.123 - *
1708.124 - * @lib XmlEngineDOM.lib
1708.125 - * @since S60 v3.1
1708.126 - */
1708.127 -template<>
1708.128 -class RXmlEngNodeList<TXmlEngNode>: public RXmlEngNodeListImpl {};
1708.129 -
1708.130 -
1708.131 -
1708.132 -#include "xmlengnodelist.inl"
1708.133 -
1708.134 -#endif /* XMLENGINE_NODELIST_H_INCLUDED */
  1709.1 --- a/epoc32/include/xmlengnodelist.inl	Tue Mar 16 16:12:26 2010 +0000
  1709.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1709.3 @@ -1,86 +0,0 @@
  1709.4 -/*
  1709.5 -* Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1709.6 -* All rights reserved.
  1709.7 -* This component and the accompanying materials are made available
  1709.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1709.9 -* which accompanies this distribution, and is available
 1709.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1709.11 -*
 1709.12 -* Initial Contributors:
 1709.13 -* Nokia Corporation - initial contribution.
 1709.14 -*
 1709.15 -* Contributors:
 1709.16 -*
 1709.17 -* Description:       Node list inline functions
 1709.18 -*
 1709.19 -*/
 1709.20 -
 1709.21 -
 1709.22 -
 1709.23 -
 1709.24 -
 1709.25 -
 1709.26 -
 1709.27 -
 1709.28 -
 1709.29 -// -----------------------------------------------------------------------------
 1709.30 -// Retrieves number of items in node list
 1709.31 -// -----------------------------------------------------------------------------
 1709.32 -//
 1709.33 -template<class T> inline TInt RXmlEngNodeList<T>::Count() const
 1709.34 -    {
 1709.35 -    return iList.Count();
 1709.36 -    }
 1709.37 -    
 1709.38 -// -----------------------------------------------------------------------------
 1709.39 -// Returns true if this node has next sibling, false otherwise.
 1709.40 -// -----------------------------------------------------------------------------
 1709.41 -//
 1709.42 -template<class T> inline TBool RXmlEngNodeList<T>::HasNext() const
 1709.43 -    {
 1709.44 -    return iList.HasNext();
 1709.45 -    }    
 1709.46 -
 1709.47 -// -----------------------------------------------------------------------------
 1709.48 -// Retrieves next node
 1709.49 -// -----------------------------------------------------------------------------
 1709.50 -//
 1709.51 -template<class T> inline T RXmlEngNodeList<T>::Next()
 1709.52 -    {
 1709.53 -    TXmlEngNode t = iList.Next(); 
 1709.54 -    return *(static_cast<T*>(&t));
 1709.55 -    }
 1709.56 -
 1709.57 -// -----------------------------------------------------------------------------
 1709.58 -// Closes node list
 1709.59 -// -----------------------------------------------------------------------------
 1709.60 -//
 1709.61 -template<class T> inline void RXmlEngNodeList<T>::Close()
 1709.62 -    {
 1709.63 -    iList.Close();
 1709.64 -    }
 1709.65 -
 1709.66 -// -----------------------------------------------------------------------------
 1709.67 -// Opens node list
 1709.68 -// -----------------------------------------------------------------------------
 1709.69 -//
 1709.70 -template<class T> inline void RXmlEngNodeList<T>::OpenL( 
 1709.71 -			void* aHead,
 1709.72 -			TXmlEngNode::TXmlEngDOMNodeType aType,
 1709.73 -			const TDesC8&	aName,
 1709.74 -			const TDesC8&	aNs) 
 1709.75 -    {
 1709.76 -    iList.OpenL(aHead, aType, aName, aNs);    
 1709.77 -    }
 1709.78 -
 1709.79 -// -----------------------------------------------------------------------------
 1709.80 -// Opens node list
 1709.81 -// -----------------------------------------------------------------------------
 1709.82 -//
 1709.83 -template<class T> inline void RXmlEngNodeList<T>::Open( 
 1709.84 -			void* aHead,
 1709.85 -			TXmlEngNode::TXmlEngDOMNodeType aType)
 1709.86 -    {
 1709.87 -    iList.Open(aHead, aType);    
 1709.88 -    }
 1709.89 -
  1710.1 --- a/epoc32/include/xmlengnodelist_impl.h	Tue Mar 16 16:12:26 2010 +0000
  1710.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1710.3 @@ -1,122 +0,0 @@
  1710.4 -/*
  1710.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1710.6 -* All rights reserved.
  1710.7 -* This component and the accompanying materials are made available
  1710.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1710.9 -* which accompanies this distribution, and is available
 1710.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1710.11 -*
 1710.12 -* Initial Contributors:
 1710.13 -* Nokia Corporation - initial contribution.
 1710.14 -*
 1710.15 -* Contributors:
 1710.16 -*
 1710.17 -* Description:       Node list implementation functions
 1710.18 -*
 1710.19 -*/
 1710.20 -
 1710.21 -
 1710.22 -
 1710.23 -
 1710.24 -
 1710.25 -
 1710.26 -
 1710.27 -#ifndef XMLENGINE_NODELIST_IMPL_H_INCLUDED
 1710.28 -#define XMLENGINE_NODELIST_IMPL_H_INCLUDED
 1710.29 -
 1710.30 -#include <e32def.h>
 1710.31 -#include "xmlengnode.h"
 1710.32 -
 1710.33 -/** 
 1710.34 - * Class implements list container.
 1710.35 - * 
 1710.36 - * @lib XmlEngineDOM.lib
 1710.37 - * @since S60 v3.2
 1710.38 - */
 1710.39 -class RXmlEngNodeListImpl
 1710.40 -{
 1710.41 -public:
 1710.42 -
 1710.43 -    /**
 1710.44 -     *  Default constructor
 1710.45 -     *
 1710.46 -     * @since S60 v3.2
 1710.47 -     */
 1710.48 -    IMPORT_C RXmlEngNodeListImpl();
 1710.49 -
 1710.50 -    /** 
 1710.51 -     * Closes node list
 1710.52 -     *
 1710.53 -     * @since S60 v3.2
 1710.54 -     */
 1710.55 -    IMPORT_C void Close();
 1710.56 -
 1710.57 -    /** 
 1710.58 -     * Get list length.
 1710.59 -     *
 1710.60 -     * @since S60 v3.2
 1710.61 -     * @return Number of nodes in a node list
 1710.62 -     */
 1710.63 -    IMPORT_C TInt  Count() const;
 1710.64 -
 1710.65 -    /** 
 1710.66 -     * Checks whether next node exists in a node list
 1710.67 -     *
 1710.68 -     * @since S60 v3.2
 1710.69 -     * @return TRUE if next node exists, FALSE otherwise
 1710.70 -     */
 1710.71 -    IMPORT_C TBool HasNext() const;
 1710.72 -
 1710.73 -    /** 
 1710.74 -     * Retrieves next node from a node list
 1710.75 -     *
 1710.76 -     * @since S60 v3.2
 1710.77 -     * @return Next node 
 1710.78 -     */
 1710.79 -    IMPORT_C TXmlEngNode Next();
 1710.80 -
 1710.81 -    /** 
 1710.82 -     * Opens node.
 1710.83 -     *
 1710.84 -     * @since S60 v3.2
 1710.85 -     * @param aHead node pointer to the node from which the searching 
 1710.86 -            of list elements is started
 1710.87 -     * @param aType type of list elements
 1710.88 -     * @param aName name of list elements 
 1710.89 -     * @param aNs namespace of list elements
 1710.90 -     *
 1710.91 -     * @note If aType is NULL, aName and aNs are ignored
 1710.92 -     */
 1710.93 -    void OpenL( 
 1710.94 -			void* aHead,
 1710.95 -			TXmlEngNode::TXmlEngDOMNodeType aType,
 1710.96 -			const TDesC8&	aName = KNullDesC8,
 1710.97 -			const TDesC8&	aNs = KNullDesC8);
 1710.98 -
 1710.99 -    /** 
1710.100 -     * Opens node.
1710.101 -     *
1710.102 -     * @since S60 v3.2
1710.103 -     * @param aHead node pointer to the node from which the searching 
1710.104 -            of list elements is started
1710.105 -     * @param aType type of list elements
1710.106 -     */
1710.107 -    void Open( 
1710.108 -			void* aHead,
1710.109 -			TXmlEngNode::TXmlEngDOMNodeType aType);
1710.110 -
1710.111 -private:
1710.112 -
1710.113 -    void* FindNextNode(void* aCurrentNode) const;
1710.114 -
1710.115 -    void*	        iCurrentNode;
1710.116 -	TInt		    iType;  // NodeType:4 bits (0-3) & MatchName flag (bit 4)
1710.117 -	unsigned char*	iName;
1710.118 -	unsigned char*	iNsUri;
1710.119 -};
1710.120 -
1710.121 -TBool StrEqualOrNull(const void* aStr1, const void* aStr2);
1710.122 -			
1710.123 -
1710.124 -
1710.125 -#endif /* XMLENGINE_NODELIST_IMPL_H_INCLUDED */
  1711.1 --- a/epoc32/include/xmlengoutputstream.h	Tue Mar 16 16:12:26 2010 +0000
  1711.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1711.3 @@ -1,64 +0,0 @@
  1711.4 -/*
  1711.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1711.6 -* All rights reserved.
  1711.7 -* This component and the accompanying materials are made available
  1711.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1711.9 -* which accompanies this distribution, and is available
 1711.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1711.11 -*
 1711.12 -* Initial Contributors:
 1711.13 -* Nokia Corporation - initial contribution.
 1711.14 -*
 1711.15 -* Contributors:
 1711.16 -*
 1711.17 -* Description:       Interface class describing class that may be used as
 1711.18 -*                 output stream for dom tree
 1711.19 -*
 1711.20 -*/
 1711.21 -
 1711.22 -
 1711.23 -
 1711.24 -
 1711.25 -
 1711.26 -
 1711.27 -
 1711.28 -#ifndef XMLENGINE_MOUTPUTSTREAM_H_INCLUDED
 1711.29 -#define XMLENGINE_MOUTPUTSTREAM_H_INCLUDED
 1711.30 -
 1711.31 -#include <e32base.h>
 1711.32 -
 1711.33 -
 1711.34 -
 1711.35 -/**
 1711.36 - * MXmlEngOutputStream is used by XML Engine to write serialized XML data
 1711.37 - * to stream. This interface should be implemented by client application
 1711.38 - * when RXmlEngDocument::SaveL() method is used to serialize xml data to stream.
 1711.39 - *
 1711.40 - * @lib XmlEngineDOM.lib
 1711.41 - * @since S60 v3.1
 1711.42 - */
 1711.43 -class MXmlEngOutputStream
 1711.44 -    {
 1711.45 -public:
 1711.46 -    /**
 1711.47 -     * Callback for writing a buffer with data to output stream
 1711.48 -     *
 1711.49 -     * @since S60 v3.1
 1711.50 -     * @return number of bytes written or -1 in case of error
 1711.51 -     */
 1711.52 -    virtual TInt Write(const TDesC8& aBuffer) = 0;
 1711.53 -
 1711.54 -    /**
 1711.55 -     * Callback for closing output stream
 1711.56 -     *
 1711.57 -     * @since S60 v3.1
 1711.58 -     * @return 
 1711.59 -     *       0 is succeeded, 
 1711.60 -     *      -1 in case of error
 1711.61 -     */
 1711.62 -    virtual TInt Close() = 0;
 1711.63 -    };
 1711.64 -
 1711.65 -
 1711.66 -
 1711.67 -#endif /* XMLENGINE_MOUTPUTSTREAM_H_INCLUDED */  
  1712.1 --- a/epoc32/include/xmlengprocessinginstruction.h	Tue Mar 16 16:12:26 2010 +0000
  1712.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1712.3 @@ -1,96 +0,0 @@
  1712.4 -/*
  1712.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1712.6 -* All rights reserved.
  1712.7 -* This component and the accompanying materials are made available
  1712.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1712.9 -* which accompanies this distribution, and is available
 1712.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1712.11 -*
 1712.12 -* Initial Contributors:
 1712.13 -* Nokia Corporation - initial contribution.
 1712.14 -*
 1712.15 -* Contributors:
 1712.16 -*
 1712.17 -* Description:       Processing instruction node functions
 1712.18 -*
 1712.19 -*/
 1712.20 -
 1712.21 -
 1712.22 -
 1712.23 -
 1712.24 -
 1712.25 -
 1712.26 -
 1712.27 -#ifndef XMLENGINE_PROCESSINGINSTRUCTION_H_INCLUDED
 1712.28 -#define XMLENGINE_PROCESSINGINSTRUCTION_H_INCLUDED
 1712.29 -
 1712.30 -#include "xmlengnode.h"
 1712.31 -
 1712.32 -
 1712.33 -
 1712.34 -/**
 1712.35 - * Instance of TXmlEngProcessingInstruction class represents an XML processing 
 1712.36 - * instruction in the DOM tree.
 1712.37 - * 
 1712.38 - * @lib XmlEngineDOM.lib
 1712.39 - * @since S60 v3.1
 1712.40 - */
 1712.41 -class TXmlEngProcessingInstruction : public TXmlEngNode
 1712.42 -{
 1712.43 -  public:
 1712.44 -    /**
 1712.45 -     * Default constructor
 1712.46 -     *
 1712.47 -     * @since S60 v3.1
 1712.48 -     */
 1712.49 -	inline TXmlEngProcessingInstruction();
 1712.50 -    
 1712.51 -    /**
 1712.52 -     * Get target of processing instruction.
 1712.53 -     *
 1712.54 -     * @since S60 v3.1
 1712.55 -     * @return "Target" part of a processing instruction
 1712.56 -     *
 1712.57 -     * @code
 1712.58 -     *    <?target data?>
 1712.59 -     * @endcode
 1712.60 -     * @see http://www.w3.org/TR/2004/REC-xml-20040204/#sec-pi
 1712.61 -     */
 1712.62 -    IMPORT_C TPtrC8 Target() const;
 1712.63 -
 1712.64 -    /**
 1712.65 -     * Get data of processing instruction.
 1712.66 -     *
 1712.67 -     * @since S60 v3.1
 1712.68 -     * @return "Data" part of a processing instruction
 1712.69 -     *
 1712.70 -     * @code
 1712.71 -     *    <?target data?>
 1712.72 -     * @endcode
 1712.73 -     * @see http://www.w3.org/TR/2004/REC-xml-20040204/#sec-pi
 1712.74 -     */
 1712.75 -    IMPORT_C TPtrC8 Data() const;
 1712.76 -
 1712.77 -    /**
 1712.78 -     * Sets data part of processing instruction
 1712.79 -     *
 1712.80 -     * @since S60 v3.1
 1712.81 -     * @param aData New data part of processing instruction
 1712.82 -     * @note PI contents should not contain "?>" sequence
 1712.83 -     */
 1712.84 -    IMPORT_C void SetDataL(const TDesC8& aData);
 1712.85 -
 1712.86 -protected:
 1712.87 -    /**
 1712.88 -     * Constructor
 1712.89 -     *
 1712.90 -     * @since S60 v3.1
 1712.91 -     * @param aInternal processing instruction pointer
 1712.92 -     */
 1712.93 -	inline TXmlEngProcessingInstruction(void* aInternal);
 1712.94 -};
 1712.95 -
 1712.96 -
 1712.97 -
 1712.98 -#include "xmlengprocessinginstruction.inl"
 1712.99 -#endif /* XMLENGINE_PROCESSINGINSTRUCTION_H_INCLUDED */
  1713.1 --- a/epoc32/include/xmlengprocessinginstruction.inl	Tue Mar 16 16:12:26 2010 +0000
  1713.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1713.3 @@ -1,41 +0,0 @@
  1713.4 -/*
  1713.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1713.6 -* All rights reserved.
  1713.7 -* This component and the accompanying materials are made available
  1713.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1713.9 -* which accompanies this distribution, and is available
 1713.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1713.11 -*
 1713.12 -* Initial Contributors:
 1713.13 -* Nokia Corporation - initial contribution.
 1713.14 -*
 1713.15 -* Contributors:
 1713.16 -*
 1713.17 -* Description:       Processing instruction inline functions
 1713.18 -*
 1713.19 -*/
 1713.20 -
 1713.21 -
 1713.22 -
 1713.23 -
 1713.24 -
 1713.25 -
 1713.26 -
 1713.27 -
 1713.28 -
 1713.29 -// -----------------------------------------------------------------------------
 1713.30 -// Default constructor
 1713.31 -// -----------------------------------------------------------------------------
 1713.32 -//
 1713.33 -inline TXmlEngProcessingInstruction::TXmlEngProcessingInstruction():TXmlEngNode(NULL)
 1713.34 -    {
 1713.35 -    }
 1713.36 -    
 1713.37 -// -----------------------------------------------------------------------------
 1713.38 -// Constructor
 1713.39 -// -----------------------------------------------------------------------------
 1713.40 -//
 1713.41 -inline TXmlEngProcessingInstruction::TXmlEngProcessingInstruction(void* aInternal):TXmlEngNode(aInternal)
 1713.42 -    {
 1713.43 -    }
 1713.44 -    
  1714.1 --- a/epoc32/include/xmlengserializationoptions.h	Tue Mar 16 16:12:26 2010 +0000
  1714.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1714.3 @@ -1,93 +0,0 @@
  1714.4 -/*
  1714.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1714.6 -* All rights reserved.
  1714.7 -* This component and the accompanying materials are made available
  1714.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1714.9 -* which accompanies this distribution, and is available
 1714.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1714.11 -*
 1714.12 -* Initial Contributors:
 1714.13 -* Nokia Corporation - initial contribution.
 1714.14 -*
 1714.15 -* Contributors:
 1714.16 -*
 1714.17 -* Description:       Serialization options functions
 1714.18 -*
 1714.19 -*/
 1714.20 -
 1714.21 -
 1714.22 -
 1714.23 -
 1714.24 -
 1714.25 -
 1714.26 -
 1714.27 -
 1714.28 -#ifndef XMLENGINE_SERIALIZATIONOPTIONS_H_INCLUDED
 1714.29 -#define XMLENGINE_SERIALIZATIONOPTIONS_H_INCLUDED
 1714.30 -
 1714.31 -#include <e32base.h>
 1714.32 -
 1714.33 -// FORWARD DECLARATION
 1714.34 -class MXmlEngOutputStream;
 1714.35 -class MXmlEngDataSerializer;
 1714.36 -class MXmlEngNodeFilter;
 1714.37 -
 1714.38 -/**
 1714.39 - * Class allow to set serialization option during document save.
 1714.40 - * 
 1714.41 - * @lib XmlEngineDOM.lib
 1714.42 - * @since S60 v3.1
 1714.43 - */
 1714.44 -class TXmlEngSerializationOptions 
 1714.45 -	{
 1714.46 -public:
 1714.47 -    /** Use indent in output */
 1714.48 -    static const TUint KOptionIndent                 = 0x01;
 1714.49 -    /** Skip xml declaration */
 1714.50 -	static const TUint KOptionOmitXMLDeclaration     = 0x02;
 1714.51 -	/** Add standalone in xml declaration. KOptionOmitXMLDeclaration must not be set */
 1714.52 -	static const TUint KOptionStandalone             = 0x04;
 1714.53 -	/** Add encoding in xml declaration. KOptionOmitXMLDeclaration must not be set */
 1714.54 -	static const TUint KOptionEncoding               = 0x08;
 1714.55 -	/** Not supported currently */
 1714.56 -	static const TUint KOptionIncludeNsPrefixes      = 0x10;
 1714.57 -	/** Not supported currently */
 1714.58 -	static const TUint KOptionCDATASectionElements   = 0x20;
 1714.59 -	/** Decode base64 encoded binary containers content upon XOP serialization*/
 1714.60 -	static const TUint KOptionDecodeBinaryContainers		 = 0x40;	
 1714.61 -    
 1714.62 -	/**
 1714.63 -     * Constructor
 1714.64 -     *
 1714.65 -     * @since S60 v3.1
 1714.66 -	 * @param aOptionFlags Serialization options
 1714.67 -     * @param aEncoding Serialization encoding
 1714.68 -     */
 1714.69 -    IMPORT_C TXmlEngSerializationOptions( TUint aOptionFlags = 
 1714.70 -    								   (TXmlEngSerializationOptions::KOptionIndent | 
 1714.71 -    									TXmlEngSerializationOptions::KOptionStandalone |
 1714.72 -    									TXmlEngSerializationOptions::KOptionEncoding), 
 1714.73 -                                    const TDesC8& aEncoding = KNullDesC8);
 1714.74 -
 1714.75 -	/**
 1714.76 -     * Set node filter
 1714.77 -     *
 1714.78 -     * @since S60 v3.1
 1714.79 -	 * @param aFilter New node filter
 1714.80 -     */
 1714.81 -    IMPORT_C void SetNodeFilter(MXmlEngNodeFilter* aFilter);  
 1714.82 -
 1714.83 -public:
 1714.84 -	/** Options flag */
 1714.85 -    TUint iOptions;
 1714.86 -	/** Encoding */
 1714.87 -    TPtrC8 iEncoding;
 1714.88 -	/** Node filter */
 1714.89 -    MXmlEngNodeFilter* iNodeFilter;
 1714.90 -    /** Object whose serialization callback is invoked **/
 1714.91 -    MXmlEngDataSerializer* iDataSerializer;
 1714.92 -	};
 1714.93 -
 1714.94 -
 1714.95 -
 1714.96 -#endif /* XMLENGINE_SERIALIZATIONOPTIONS_H_INCLUDED */
  1715.1 --- a/epoc32/include/xmlengtext.h	Tue Mar 16 16:12:26 2010 +0000
  1715.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1715.3 @@ -1,90 +0,0 @@
  1715.4 -/*
  1715.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1715.6 -* All rights reserved.
  1715.7 -* This component and the accompanying materials are made available
  1715.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1715.9 -* which accompanies this distribution, and is available
 1715.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1715.11 -*
 1715.12 -* Initial Contributors:
 1715.13 -* Nokia Corporation - initial contribution.
 1715.14 -*
 1715.15 -* Contributors:
 1715.16 -*
 1715.17 -* Description:       Text node functions
 1715.18 -*
 1715.19 -*/
 1715.20 -
 1715.21 -
 1715.22 -
 1715.23 -
 1715.24 -
 1715.25 -
 1715.26 -
 1715.27 -#ifndef XMLENGINE_TEXT_H_INCLUDED
 1715.28 -#define XMLENGINE_TEXT_H_INCLUDED
 1715.29 -
 1715.30 -#include "xmlengcharacterdata.h"
 1715.31 -
 1715.32 -
 1715.33 -
 1715.34 -/**
 1715.35 - * The TXmlEngTextNode interface inherits from TXmlEngCharacterData and represents the textual content 
 1715.36 - * (termed "character data" in XML) of an Element or TXmlEngAttr. 
 1715.37 - *
 1715.38 - * If there is no markup inside an element's content, the text is contained in a single object 
 1715.39 - * of the TXmlEngTextNode interface that is the only child of the element. If there is markup, 
 1715.40 - * it is parsed into the information items (elements, comments, etc.) and TXmlEngTextNode nodes that 
 1715.41 - * form the list of children of the element.
 1715.42 - * 
 1715.43 - * When a document is first made available via the DOM, there is only one TXmlEngTextNode node for each 
 1715.44 - * block of text. Users may create adjacent TXmlEngTextNode nodes that represent the contents of a given 
 1715.45 - * element without any intervening markup, but should be aware that there is no way to 
 1715.46 - * represent the separations between these nodes in XML or HTML, so they will not (in general) 
 1715.47 - * persist between DOM editing sessions. 
 1715.48 - * 
 1715.49 - * No lexical check is done on the content of a TXmlEngTextNode node and, depending on its position in 
 1715.50 - * the document, some characters must be escaped during serialization using character references; 
 1715.51 - * e.g. the characters "<&" if the textual content is part of an element or of an attribute, 
 1715.52 - * the character sequence "]]>" when part of an element, the quotation mark character " or 
 1715.53 - * the apostrophe character ' when part of an attribute. 
 1715.54 - * 
 1715.55 - * <b>DOM Level 3 spec:</b>
 1715.56 - * <p>http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-1312295772
 1715.57 - * 
 1715.58 - * @lib XmlEngineDOM.lib
 1715.59 - * @since S60 v3.1
 1715.60 - */
 1715.61 -class TXmlEngTextNode : public TXmlEngCharacterData
 1715.62 -{
 1715.63 -public:
 1715.64 -    /**
 1715.65 -     * Default constructor
 1715.66 -     *
 1715.67 -     * @since S60 v3.1
 1715.68 -     */
 1715.69 -	inline TXmlEngTextNode();
 1715.70 -
 1715.71 -    /**
 1715.72 -     * Check if element content is whitespace.
 1715.73 -     *
 1715.74 -     * @since S60 v3.1
 1715.75 -     * @return TRUE if is only whitespace
 1715.76 -     */
 1715.77 -    IMPORT_C TBool IsElementContentWhitespace() const;
 1715.78 -
 1715.79 -protected:
 1715.80 -    /**
 1715.81 -     * Constructor
 1715.82 -     *
 1715.83 -     * @since S60 v3.1
 1715.84 -     * @param aInternal Text node pointer
 1715.85 -     */
 1715.86 -    inline TXmlEngTextNode(void* aInternal);
 1715.87 -};
 1715.88 -
 1715.89 -
 1715.90 -
 1715.91 -#include "xmlengtext.inl"
 1715.92 -
 1715.93 -#endif /* XMLENGINE_TEXT_H_INCLUDED */
  1716.1 --- a/epoc32/include/xmlengtext.inl	Tue Mar 16 16:12:26 2010 +0000
  1716.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1716.3 @@ -1,41 +0,0 @@
  1716.4 -/*
  1716.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies). 
  1716.6 -* All rights reserved.
  1716.7 -* This component and the accompanying materials are made available
  1716.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1716.9 -* which accompanies this distribution, and is available
 1716.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1716.11 -*
 1716.12 -* Initial Contributors:
 1716.13 -* Nokia Corporation - initial contribution.
 1716.14 -*
 1716.15 -* Contributors:
 1716.16 -*
 1716.17 -* Description:       Text node inline functions
 1716.18 -*
 1716.19 -*/
 1716.20 -
 1716.21 -
 1716.22 -
 1716.23 -
 1716.24 -
 1716.25 -
 1716.26 -
 1716.27 -
 1716.28 -
 1716.29 -// -----------------------------------------------------------------------------
 1716.30 -// Default constructor
 1716.31 -// -----------------------------------------------------------------------------
 1716.32 -//
 1716.33 -inline TXmlEngTextNode::TXmlEngTextNode():TXmlEngCharacterData(NULL)
 1716.34 -    {
 1716.35 -    }
 1716.36 -    
 1716.37 -// -----------------------------------------------------------------------------
 1716.38 -// Constructor
 1716.39 -// -----------------------------------------------------------------------------
 1716.40 -//
 1716.41 -inline TXmlEngTextNode::TXmlEngTextNode(void* aInternal):TXmlEngCharacterData(aInternal)
 1716.42 -    {
 1716.43 -    }
 1716.44 -    
  1717.1 --- a/epoc32/include/xmlenguserdata.h	Tue Mar 16 16:12:26 2010 +0000
  1717.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1717.3 @@ -1,74 +0,0 @@
  1717.4 -/*
  1717.5 -* Copyright (c) 2004-2005 Nokia Corporation and/or its subsidiary(-ies). 
  1717.6 -* All rights reserved.
  1717.7 -* This component and the accompanying materials are made available
  1717.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1717.9 -* which accompanies this distribution, and is available
 1717.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1717.11 -*
 1717.12 -* Initial Contributors:
 1717.13 -* Nokia Corporation - initial contribution.
 1717.14 -*
 1717.15 -* Contributors:
 1717.16 -*
 1717.17 -* Description:       Interface class describing class that may contains user
 1717.18 - *                 data aded to node
 1717.19 - *
 1717.20 -*/
 1717.21 -
 1717.22 -
 1717.23 -
 1717.24 -
 1717.25 -
 1717.26 -
 1717.27 -
 1717.28 -#ifndef XMLENGINE_USERDATA_H_INCLUDED
 1717.29 -#define XMLENGINE_USERDATA_H_INCLUDED
 1717.30 -
 1717.31 -#include <e32def.h>
 1717.32 -
 1717.33 -/**
 1717.34 - * MXmlEngUserData is an abstract base class (interface) for user data that can be
 1717.35 - * stored in the DOM tree. Applications that wish to store user data in the 
 1717.36 - * DOM tree must wrap the user data in a class that implemens this interface.
 1717.37 - *
 1717.38 - * @lib XmlEngineDOM.lib
 1717.39 - * @since S60 v3.1
 1717.40 - */
 1717.41 -class MXmlEngUserData {
 1717.42 -public:
 1717.43 -    /**
 1717.44 -     * Free memory that is allocated and do other case specific cleanup.
 1717.45 -     *
 1717.46 -     * @since S60 v3.1
 1717.47 -     */
 1717.48 -    virtual void Destroy() = 0;
 1717.49 -    
 1717.50 -    /**
 1717.51 -     * Make a copy of the the object. Note that if reference counting is used or
 1717.52 -     * the same pointer can be safely copied to other places the implementation
 1717.53 -     * of this method may just return a pointer to self.
 1717.54 -     *
 1717.55 -     * Copying user data when copying nodes has not been implemented
 1717.56 -     * so this method is for future use (though there's no harm in implementing 
 1717.57 -     * it, of course).
 1717.58 -     *
 1717.59 -     * @since S60 v3.1
 1717.60 -     * @return Pointer to a copy of this object.
 1717.61 -     */
 1717.62 -    virtual MXmlEngUserData* CloneL() = 0;
 1717.63 -
 1717.64 -    /**
 1717.65 -     * Get id of the object. It is up to user-data provider what the result is.
 1717.66 -     * Such a "user data identification" may be in use if several types of
 1717.67 -     * MXmlEngUserData objects are used.
 1717.68 -     *
 1717.69 -     * @since S60 v3.1
 1717.70 -     * @return Pointer that somehow identifies the type of MXmlEngUserData (NULL by default)
 1717.71 -     */
 1717.72 -    virtual void* ID() {return NULL;}
 1717.73 -};
 1717.74 -
 1717.75 -
 1717.76 -
 1717.77 -#endif /* XMLENGINE_USERDATA_H_INCLUDED*/
  1718.1 --- a/epoc32/include/xmllib.h	Tue Mar 16 16:12:26 2010 +0000
  1718.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1718.3 @@ -1,234 +0,0 @@
  1718.4 -// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
  1718.5 -// All rights reserved.
  1718.6 -// This component and the accompanying materials are made available
  1718.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
  1718.8 -// which accompanies this distribution, and is available
  1718.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
 1718.10 -//
 1718.11 -// Initial Contributors:
 1718.12 -// Nokia Corporation - initial contribution.
 1718.13 -//
 1718.14 -// Contributors:
 1718.15 -//
 1718.16 -// Description:
 1718.17 -// CXmlLibrary is an interface class for a client to access the Xml parsing and validation
 1718.18 -// services provided by the library. In general, CXmlLibrary should be concidered as a base
 1718.19 -// class for a library which implements the language specific bits of an Xml-language parser.
 1718.20 -// USAGE:
 1718.21 -// - Construction of the class using NewL or NewL
 1718.22 -// - Pass data to parsing by calling ProcessDataL.
 1718.23 -// - When all data has been parsed, call CommitL
 1718.24 -// 
 1718.25 -//
 1718.26 -
 1718.27 -#ifndef __XMLLIB_H__
 1718.28 -#define __XMLLIB_H__
 1718.29 -
 1718.30 -// System includes
 1718.31 -//
 1718.32 -#include <e32base.h>
 1718.33 -#include <wapengstd.h>
 1718.34 -
 1718.35 -//	CONSTANT DEFINITIONS
 1718.36 -//
 1718.37 -
 1718.38 -/**
 1718.39 -ID for the root node attribute that contains the buffered document in case no DTD was available
 1718.40 -@publishedAll
 1718.41 -@deprecated
 1718.42 -*/
 1718.43 -_LIT(KXmlLibBufferedDocumentAttribute, "XmlLibBufferedDocument");
 1718.44 -
 1718.45 -/**
 1718.46 -The Xml version that XML currently parser supports
 1718.47 -@publishedAll
 1718.48 -@deprecated
 1718.49 -*/
 1718.50 -_LIT(KSupportedXmlVersion, "1.0");
 1718.51 -
 1718.52 -/**
 1718.53 -ID for node containing text data defined in a CDATA section (i.e. within <![CDATA[ .. ]]> )
 1718.54 -@publishedAll
 1718.55 -@deprecated
 1718.56 -*/
 1718.57 -_LIT(KCDataID, "CDATA");
 1718.58 -
 1718.59 -/**
 1718.60 -ID for "normal" text nodes
 1718.61 -@publishedAll
 1718.62 -@deprecated
 1718.63 -*/
 1718.64 -_LIT(KPCDataID, "#PCDATA");
 1718.65 -
 1718.66 -
 1718.67 -// Forward class declarations
 1718.68 -//
 1718.69 -class CXmlElement;
 1718.70 -class CXmlParser;
 1718.71 -class CBNFNode;
 1718.72 -class CAttributeLookupTable;
 1718.73 -class MWapPluginSP;
 1718.74 -
 1718.75 -//	CXmlLibrary
 1718.76 -//
 1718.77 -//##ModelId=3B6679A401C8
 1718.78 -class CXmlLibrary : public CBase
 1718.79 -/**
 1718.80 -@publishedAll
 1718.81 -@deprecated
 1718.82 -*/
 1718.83 -	{
 1718.84 -public:	// Methods
 1718.85 -	// Default constuctor
 1718.86 -	// Sets default values values iMIMEType, iDefaultDoctype and iDefaultDTDUrl
 1718.87 -	// An inheriting class should override this constructor and set the variables
 1718.88 -	// with their correct values.
 1718.89 -	//##ModelId=3B6679A402CD
 1718.90 -	IMPORT_C virtual ~CXmlLibrary();
 1718.91 -	//##ModelId=3B6679A402BA
 1718.92 -	IMPORT_C static CXmlLibrary* NewL(MWapPluginSP& aPluginSP, CXmlElement* aRootNode);
 1718.93 -	//##ModelId=3B6679A402AF
 1718.94 -	IMPORT_C static CXmlLibrary* NewLC(MWapPluginSP& aPluginSP, CXmlElement* aRootNode);
 1718.95 -
 1718.96 -	//##ModelId=3B6679A40287
 1718.97 -	IMPORT_C virtual TInt ProcessDataL(TDesC8& aData);
 1718.98 -
 1718.99 -	// Xml Parse given data and generate document tree to the given root node.
1718.100 -	// INPUT:
1718.101 -	//	aData - document text, or a piece of it
1718.102 -	// RETURN:
1718.103 -	//	TInt - an error code defined above, KErrNone if no errors.
1718.104 -	//##ModelId=3B6679A40291
1718.105 -	IMPORT_C virtual TInt ProcessDataL(HBufC8& aData);
1718.106 -
1718.107 -	// Signal parser that incoming data stream has finished
1718.108 -	// RETURN:
1718.109 -	//	TInt - an error code defined above, KErrNone if no error occured.
1718.110 -	//		   NOTE: In case no DTD was available, the document got buffered and was attached
1718.111 -	//				 to an attribute in the root node and CommitL returns KErrDocumentBuffered.
1718.112 -	//				 The buffered document will be re-parsed when engine receives the requested
1718.113 -	//				 DTD and calls a data handler (defined by iMIMEType) for validation.
1718.114 -	//##ModelId=3B6679A4027E
1718.115 -	IMPORT_C virtual TInt CommitL();
1718.116 -
1718.117 -	// Validate the document according to the given DTD.
1718.118 -	// INPUT:
1718.119 -	//	aDTDRootNode - Root node to the DTD tree which defines the structure of the document.
1718.120 -	//                 This referenced node is the DTD root node created by the engine.
1718.121 -	//                 The actual DTD tree, if any, is attached as a child to this node.
1718.122 -	//				   NO INHERITING CLASS SHOULD OVERRIDE THIS! Override the protected
1718.123 -	//                 ValidateL instead.
1718.124 -	// RETURN:
1718.125 -	//	TInt - an error code defining the reason for validation failure. KErrNone if no errors.
1718.126 -	//##ModelId=3B6679A40274
1718.127 -	IMPORT_C virtual TInt ValidateL(CBNFNode& aDTDRootNode);
1718.128 -
1718.129 -	// Set parser and library to its initial state to start parsing of a new document
1718.130 -	// INPUT:
1718.131 -	//	aRootNode - root node for the new document tree
1718.132 -	//##ModelId=3B6679A4026B
1718.133 -	IMPORT_C virtual void ResetL(CXmlElement* aRootNode);
1718.134 -
1718.135 -	// -----------------------------------------------------------------------
1718.136 -	// (WAP Push Addition)
1718.137 -	// Wap Push specific method to switch off use of XML validator which doesn't work
1718.138 -	// with push messages.
1718.139 -	//	iIgnoreValidator will be set on class construction to False with complies with
1718.140 -	// current code usage; for push messages ONLY set iIgnoreValidator to True
1718.141 -	// -----------------------------------------------------------------------
1718.142 -//	inline void OmitValidator(TBool aIgnoreValidator) { iIgnoreValidator = aIgnoreValidator; } ;
1718.143 -	//
1718.144 -	// -----------------------------------------------------------------------
1718.145 -
1718.146 -protected:
1718.147 -	// A simple, internal utility function to setup the Xml parser
1718.148 -	//##ModelId=3B6679A4026A
1718.149 -	IMPORT_C void PrepareParserL();
1718.150 -
1718.151 -	//##ModelId=3B6679A40269
1718.152 -	IMPORT_C void ConstructL();
1718.153 -
1718.154 -	// Default constructor
1718.155 -	// SEE NOTES ON iMimeType, iDefaultDocType and iDefaultDTDUrl for inheriting class's constuctor
1718.156 -	IMPORT_C CXmlLibrary(MWapPluginSP& aPluginSP, CXmlElement* aRootNode);
1718.157 -
1718.158 -	// Data parsing method for internal usage. Takes ownership of the given data
1718.159 -	// INPUT:
1718.160 -	// aData - Pointer to the UNICODE text data. Parser shall take ownership of this data!
1718.161 -	// RETURN:
1718.162 -	// TInt - Error code, KErrNone if no errors.
1718.163 -	//##ModelId=3B6679A402A5
1718.164 -	TInt ProcessDataL(HBufC16* aData);
1718.165 -
1718.166 -	// Internal utility function for finishing with the parser
1718.167 -	// RETURN:
1718.168 -	// TInt - Error code. KErrNone if no errors.
1718.169 -	//##ModelId=3B6679A40260
1718.170 -	TInt CommitParserL();
1718.171 -
1718.172 -	// Internal utility function for handling return values from parsing and initiating DTD fetch
1718.173 -	// RETURN:
1718.174 -	// TInt - Error code. KErrNone if no errors.
1718.175 -	//##ModelId=3B6679A4025F
1718.176 -	TInt ExecuteDataProcessingL();
1718.177 -
1718.178 -	//##ModelId=3B6679A40255
1718.179 -	CBNFNode* ExtractDTDTree(CBNFNode* aDTDRoot);
1718.180 -
1718.181 -	// Internal validation function that actually performs the validation.
1718.182 -	// INPUT:
1718.183 -	// aDTDRootNode - Pointer to the _actual_ dtd tree root node, NOT the root given by angine
1718.184 -	// OUTPUT:
1718.185 -	// TInt - Error code, KErrNone if no errors
1718.186 -	//##ModelId=3B6679A4024B
1718.187 -	IMPORT_C virtual TInt ExecuteValidateL(CBNFNode* aDTDRootNode);
1718.188 -
1718.189 -protected:	// Attributes
1718.190 -
1718.191 -	/** Plugin Service Provider
1718.192 -	 */
1718.193 -	//##ModelId=3B6679A40239
1718.194 -	MWapPluginSP&		iPluginSP;
1718.195 -
1718.196 -	/** Document Root Node
1718.197 -	 */
1718.198 -	//##ModelId=3B6679A40225
1718.199 -	CXmlElement*		iRootNode;
1718.200 -
1718.201 -	// The default DTD doctype and Url in case no DTD was defined
1718.202 -	// NOTE: Inheriting class should set these values in its constructor!!
1718.203 -	//##ModelId=3B6679A4021B
1718.204 -	const TDesC*		iDefaultDoctype;
1718.205 -
1718.206 -	//##ModelId=3B6679A40211
1718.207 -	const TDesC*		iDefaultDTDUrl;
1718.208 -
1718.209 -	/** The actual DTD tree - not owned
1718.210 -	 */
1718.211 -	//##ModelId=3B6679A401FC
1718.212 -	CBNFNode*			iDTD;
1718.213 -
1718.214 -private:	// Attributes
1718.215 -
1718.216 -	/** The XML parser
1718.217 -	 */
1718.218 -	//##ModelId=3B6679A401F2
1718.219 -	CXmlParser*			iParser;
1718.220 -
1718.221 -private:	// BC-proofing
1718.222 -
1718.223 -/**
1718.224 -	Intended Usage	:	Reserved for future use
1718.225 -	@since			6.0
1718.226 - */
1718.227 -	//##ModelId=3B6679A40241
1718.228 -	IMPORT_C virtual void CXmlLibrary_Reserved1();
1718.229 -
1718.230 -	/** Reserved for future use
1718.231 -	 */
1718.232 -	//##ModelId=3B6679A401E8
1718.233 -	TAny*				iCXmlLibrary_Reserved;
1718.234 -
1718.235 -	};
1718.236 -
1718.237 -#endif // __XMLLIB_H__
  1719.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1719.2 +++ b/epoc32/include/zconf.h	Wed Mar 31 12:27:01 2010 +0100
  1719.3 @@ -0,0 +1,374 @@
  1719.4 +/* zconf.h -- configuration of the zlib compression library
  1719.5 + * Copyright (C) 1995-2005 Jean-loup Gailly.
  1719.6 + * For conditions of distribution and use, see copyright notice in zlib.h
  1719.7 + */
  1719.8 +
  1719.9 +/* @(#) $Id: zconf.h,v 1.1.2.1 2008/08/14 15:26:57 e0222316 Exp $ */
 1719.10 +
 1719.11 +#ifndef _ZCONF_H
 1719.12 +#define _ZCONF_H
 1719.13 +
 1719.14 +#if (defined(__TOOLS2__) || defined(__TOOLS__))
 1719.15 +	/** Defined as nothing for tools builds, as EXPORT_C keyword not supported on these platforms  */
 1719.16 +	#define EXPORT_C	
 1719.17 +#else
 1719.18 +#ifdef __SYMBIAN32__
 1719.19 +	#include <e32def.h> 		/* Include for definition of IMPORT_C below */
 1719.20 +	/** This macro is used in function prototypes in zlib.h and libzcore.h.  Use Symbian definition IMPORT_C instead of ZEXTERN */ 
 1719.21 +	#define ZEXTERN IMPORT_C	
 1719.22 +	/** This macro is used for EZLIB component */
 1719.23 +	#define SYMBIAN_EZLIB_DEVICE
 1719.24 +#endif /* __SYMBIAN32__ */
 1719.25 +#endif /* __TOOLS2__ || __TOOLS__ */
 1719.26 +
 1719.27 +
 1719.28 +/*
 1719.29 + * If you *really* need a unique prefix for all types and library functions,
 1719.30 + * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
 1719.31 + */
 1719.32 +#ifdef Z_PREFIX
 1719.33 +#  define deflateInit_          z_deflateInit_
 1719.34 +#  define deflate               z_deflate
 1719.35 +#  define deflateEnd            z_deflateEnd
 1719.36 +#  define inflateInit_          z_inflateInit_
 1719.37 +#  define inflate               z_inflate
 1719.38 +#  define inflateEnd            z_inflateEnd
 1719.39 +#  define deflateInit2_         z_deflateInit2_
 1719.40 +#  define deflateSetDictionary  z_deflateSetDictionary
 1719.41 +#  define deflateCopy           z_deflateCopy
 1719.42 +#  define deflateReset          z_deflateReset
 1719.43 +#  define deflateParams         z_deflateParams
 1719.44 +#  define deflateBound          z_deflateBound
 1719.45 +#  define deflatePrime          z_deflatePrime
 1719.46 +#  define inflateInit2_         z_inflateInit2_
 1719.47 +#  define inflateSetDictionary  z_inflateSetDictionary
 1719.48 +#  define inflateSync           z_inflateSync
 1719.49 +#  define inflateSyncPoint      z_inflateSyncPoint
 1719.50 +#  define inflateCopy           z_inflateCopy
 1719.51 +#  define inflateReset          z_inflateReset
 1719.52 +#  define inflateBack           z_inflateBack
 1719.53 +#  define inflateBackEnd        z_inflateBackEnd
 1719.54 +#  define compress              z_compress
 1719.55 +#  define compress2             z_compress2
 1719.56 +#  define compressBound         z_compressBound
 1719.57 +#  define uncompress            z_uncompress
 1719.58 +#  define adler32               z_adler32
 1719.59 +#  define crc32                 z_crc32
 1719.60 +#  define get_crc_table         z_get_crc_table
 1719.61 +#  define zError                z_zError
 1719.62 +
 1719.63 +#  define alloc_func            z_alloc_func
 1719.64 +#  define free_func             z_free_func
 1719.65 +#  define in_func               z_in_func
 1719.66 +#  define out_func              z_out_func
 1719.67 +#  define Byte                  z_Byte
 1719.68 +#  define uInt                  z_uInt
 1719.69 +#  define uLong                 z_uLong
 1719.70 +#  define Bytef                 z_Bytef
 1719.71 +#  define charf                 z_charf
 1719.72 +#  define intf                  z_intf
 1719.73 +#  define uIntf                 z_uIntf
 1719.74 +#  define uLongf                z_uLongf
 1719.75 +#  define voidpf                z_voidpf
 1719.76 +#  define voidp                 z_voidp
 1719.77 +#endif
 1719.78 +
 1719.79 +#if defined(__MSDOS__) && !defined(MSDOS)
 1719.80 +#  define MSDOS
 1719.81 +#endif
 1719.82 +#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
 1719.83 +#  define OS2
 1719.84 +#endif
 1719.85 +#if defined(_WINDOWS) && !defined(WINDOWS)
 1719.86 +#  define WINDOWS
 1719.87 +#endif
 1719.88 +#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__)
 1719.89 +#  ifndef WIN32
 1719.90 +#    define WIN32
 1719.91 +#  endif
 1719.92 +#endif
 1719.93 +#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
 1719.94 +#  if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
 1719.95 +#    ifndef SYS16BIT
 1719.96 +#      define SYS16BIT
 1719.97 +#    endif
 1719.98 +#  endif
 1719.99 +#endif
1719.100 +
1719.101 +/*
1719.102 + * Compile with -DMAXSEG_64K if the alloc function cannot allocate more
1719.103 + * than 64k bytes at a time (needed on systems with 16-bit int).
1719.104 + */
1719.105 +#ifdef SYS16BIT
1719.106 +#  define MAXSEG_64K
1719.107 +#endif
1719.108 +#ifdef MSDOS
1719.109 +#  define UNALIGNED_OK
1719.110 +#endif
1719.111 +
1719.112 +#ifdef __STDC_VERSION__
1719.113 +#  ifndef STDC
1719.114 +#    define STDC
1719.115 +#  endif
1719.116 +#  if __STDC_VERSION__ >= 199901L
1719.117 +#    ifndef STDC99
1719.118 +#      define STDC99
1719.119 +#    endif
1719.120 +#  endif
1719.121 +#endif
1719.122 +#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
1719.123 +/** define STDC i.e. Standard C */
1719.124 +#  define STDC
1719.125 +#endif
1719.126 +#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
1719.127 +#  define STDC
1719.128 +#endif
1719.129 +#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
1719.130 +#  define STDC
1719.131 +#endif
1719.132 +#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
1719.133 +#  define STDC
1719.134 +#endif
1719.135 +
1719.136 +#if defined(__OS400__) && !defined(STDC)    /* iSeries (formerly AS/400). */
1719.137 +#  define STDC
1719.138 +#endif
1719.139 +
1719.140 +#ifndef STDC
1719.141 +#  ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
1719.142 +#    define const       /* note: need a more gentle solution here */
1719.143 +#  endif
1719.144 +#endif
1719.145 +
1719.146 +/* Some Mac compilers merge all .h files incorrectly: */
1719.147 +#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
1719.148 +#  define NO_DUMMY_DECL
1719.149 +#endif
1719.150 +
1719.151 +#ifndef MAX_MEM_LEVEL
1719.152 +#  ifdef MAXSEG_64K
1719.153 +/** Maximum value for memLevel in deflateInit2 */
1719.154 +#    define MAX_MEM_LEVEL 8
1719.155 +#  else
1719.156 +/** Maximum value for memLevel in deflateInit2 */
1719.157 +#    define MAX_MEM_LEVEL 9
1719.158 +#  endif
1719.159 +#endif
1719.160 +
1719.161 +/* Maximum value for windowBits in deflateInit2 and inflateInit2.
1719.162 + * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
1719.163 + * created by gzip. (Files created by minigzip can still be extracted by
1719.164 + * gzip.)
1719.165 + */
1719.166 +#ifndef MAX_WBITS
1719.167 +/** 32K LZ77 window */
1719.168 +#  define MAX_WBITS   15 
1719.169 +#endif
1719.170 +
1719.171 +/* The memory requirements for deflate are (in bytes):
1719.172 +            (1 << (windowBits+2)) +  (1 << (memLevel+9))
1719.173 + that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
1719.174 + plus a few kilobytes for small objects. For example, if you want to reduce
1719.175 + the default memory requirements from 256K to 128K, compile with
1719.176 +     make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
1719.177 + Of course this will generally degrade compression (there's no free lunch).
1719.178 +
1719.179 +   The memory requirements for inflate are (in bytes) 1 << windowBits
1719.180 + that is, 32K for windowBits=15 (default value) plus a few kilobytes
1719.181 + for small objects.
1719.182 +*/
1719.183 +
1719.184 +                        /* Type declarations */
1719.185 +
1719.186 +#ifndef OF /* function prototypes */
1719.187 +#  ifdef STDC
1719.188 +/** 
1719.189 +	Function prototypes 
1719.190 +	@param args arguments ...
1719.191 +*/
1719.192 +#    define OF(args)  args
1719.193 +#  else
1719.194 +/** Function prototypes */
1719.195 +#    define OF(args)  ()
1719.196 +#  endif
1719.197 +#endif
1719.198 +
1719.199 +/* The following definitions for FAR are needed only for MSDOS mixed
1719.200 + * model programming (small or medium model with some far allocations).
1719.201 + * This was tested only with MSC; for other MSDOS compilers you may have
1719.202 + * to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
1719.203 + * just define FAR to be empty.
1719.204 + */
1719.205 +#ifdef SYS16BIT
1719.206 +#  if defined(M_I86SM) || defined(M_I86MM)
1719.207 +     /* MSC small or medium model */
1719.208 +#    define SMALL_MEDIUM
1719.209 +#    ifdef _MSC_VER
1719.210 +#      define FAR _far
1719.211 +#    else
1719.212 +#      define FAR far
1719.213 +#    endif
1719.214 +#  endif
1719.215 +#  if (defined(__SMALL__) || defined(__MEDIUM__))
1719.216 +     /* Turbo C small or medium model */
1719.217 +#    define SMALL_MEDIUM
1719.218 +#    ifdef __BORLANDC__
1719.219 +#      define FAR _far
1719.220 +#    else
1719.221 +#      define FAR far
1719.222 +#    endif
1719.223 +#  endif
1719.224 +#endif
1719.225 +
1719.226 +#if defined(WINDOWS) || defined(WIN32)
1719.227 +   /* If building or using zlib as a DLL, define ZLIB_DLL.
1719.228 +    * This is not mandatory, but it offers a little performance increase.
1719.229 +    */
1719.230 +#  ifdef ZLIB_DLL
1719.231 +#    if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
1719.232 +#      ifdef ZLIB_INTERNAL
1719.233 +#        define ZEXTERN extern __declspec(dllexport)
1719.234 +#      else
1719.235 +#        define ZEXTERN extern __declspec(dllimport)
1719.236 +#      endif
1719.237 +#    endif
1719.238 +#  endif  /* ZLIB_DLL */
1719.239 +   /* If building or using zlib with the WINAPI/WINAPIV calling convention,
1719.240 +    * define ZLIB_WINAPI.
1719.241 +    * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
1719.242 +    */
1719.243 +#  ifdef ZLIB_WINAPI
1719.244 +#    ifdef FAR
1719.245 +#      undef FAR
1719.246 +#    endif
1719.247 +#    include <windows.h>
1719.248 +     /* No need for _export, use ZLIB.DEF instead. */
1719.249 +     /* For complete Windows compatibility, use WINAPI, not __stdcall. */
1719.250 +#    define ZEXPORT WINAPI
1719.251 +#    ifdef WIN32
1719.252 +#      define ZEXPORTVA WINAPIV
1719.253 +#    else
1719.254 +#      define ZEXPORTVA FAR CDECL
1719.255 +#    endif
1719.256 +#  endif
1719.257 +#endif
1719.258 +
1719.259 +#if defined (__BEOS__)
1719.260 +#  ifdef ZLIB_DLL
1719.261 +#    ifdef ZLIB_INTERNAL
1719.262 +#      define ZEXPORT   __declspec(dllexport)
1719.263 +#      define ZEXPORTVA __declspec(dllexport)
1719.264 +#    else
1719.265 +#      define ZEXPORT   __declspec(dllimport)
1719.266 +#      define ZEXPORTVA __declspec(dllimport)
1719.267 +#    endif
1719.268 +#  endif
1719.269 +#endif
1719.270 +
1719.271 +#ifndef ZEXTERN
1719.272 +/** extern defined as ZEXTERN */
1719.273 +#  define ZEXTERN extern
1719.274 +#endif
1719.275 +#ifndef ZEXPORT
1719.276 +#  define ZEXPORT
1719.277 +#endif
1719.278 +#ifndef ZEXPORTVA
1719.279 +#  define ZEXPORTVA
1719.280 +#endif
1719.281 +
1719.282 +
1719.283 +#ifndef FAR
1719.284 +#  define FAR
1719.285 +#endif
1719.286 +
1719.287 +#if !defined(__MACTYPES__)
1719.288 +/** 8 bits */
1719.289 +typedef unsigned char  Byte;  
1719.290 +#endif
1719.291 +/** 16 bits or more */
1719.292 +typedef unsigned int   uInt;  
1719.293 +/** 32 bits or more */
1719.294 +typedef unsigned long  uLong; 
1719.295 +
1719.296 +#ifdef SMALL_MEDIUM
1719.297 +   /** Borland C/C++ and some old MSC versions ignore FAR inside typedef */
1719.298 +#  define Bytef Byte FAR
1719.299 +#else
1719.300 +   /** Borland C/C++ and some old MSC versions ignore FAR inside typedef */
1719.301 +   typedef Byte  FAR Bytef;
1719.302 +#endif
1719.303 +/** char typedef to charf */
1719.304 +typedef char  FAR charf;
1719.305 +/** int typedef to intf */
1719.306 +typedef int   FAR intf;
1719.307 +/** uInt typedef to uIntf */
1719.308 +typedef uInt  FAR uIntf;
1719.309 +/** uLong typedef to uLongf */
1719.310 +typedef uLong FAR uLongf;
1719.311 +
1719.312 +#ifdef STDC
1719.313 +   /** typedef void const* to voidpc */
1719.314 +   typedef void const *voidpc;
1719.315 +   /** typedef void FAR* to voidpf */
1719.316 +   typedef void FAR   *voidpf;
1719.317 +   /** typedef void* to voidp */
1719.318 +   typedef void       *voidp;
1719.319 +#else
1719.320 +   /** typedef Byte const* to voidpc */
1719.321 +   typedef Byte const *voidpc;
1719.322 +   /** typedef Byte FAR* to voidpf */
1719.323 +   typedef Byte FAR   *voidpf;
1719.324 +   /** typedef Byte* to voidp */
1719.325 +   typedef Byte       *voidp;
1719.326 +#endif
1719.327 +
1719.328 +#if 0           /* HAVE_UNISTD_H -- this line is updated by ./configure */
1719.329 +#  include <sys/types.h> /* for off_t */
1719.330 +#  include <unistd.h>    /* for SEEK_* and off_t */
1719.331 +#  ifdef VMS
1719.332 +#    include <unixio.h>   /* for off_t */
1719.333 +#  endif
1719.334 +#  define z_off_t off_t
1719.335 +#endif
1719.336 +#ifndef SEEK_SET
1719.337 +/** Seek from beginning of file.  */
1719.338 +#  define SEEK_SET        0       
1719.339 +/** Seek from current position.  */
1719.340 +#  define SEEK_CUR        1       
1719.341 +/** Set file pointer to EOF plus "offset" */
1719.342 +#  define SEEK_END        2       
1719.343 +#endif
1719.344 +#ifndef z_off_t
1719.345 +/** define z_off_t as long */
1719.346 +#  define z_off_t long
1719.347 +#endif
1719.348 +
1719.349 +#if defined(__OS400__)
1719.350 +#  define NO_vsnprintf
1719.351 +#endif
1719.352 +
1719.353 +#if defined(__MVS__)
1719.354 +#  define NO_vsnprintf
1719.355 +#  ifdef FAR
1719.356 +#    undef FAR
1719.357 +#  endif
1719.358 +#endif
1719.359 +
1719.360 +/* MVS linker does not support external names larger than 8 bytes */
1719.361 +#if defined(__MVS__)
1719.362 +#   pragma map(deflateInit_,"DEIN")
1719.363 +#   pragma map(deflateInit2_,"DEIN2")
1719.364 +#   pragma map(deflateEnd,"DEEND")
1719.365 +#   pragma map(deflateBound,"DEBND")
1719.366 +#   pragma map(inflateInit_,"ININ")
1719.367 +#   pragma map(inflateInit2_,"ININ2")
1719.368 +#   pragma map(inflateEnd,"INEND")
1719.369 +#   pragma map(inflateSync,"INSY")
1719.370 +#   pragma map(inflateSetDictionary,"INSEDI")
1719.371 +#   pragma map(compressBound,"CMBND")
1719.372 +#   pragma map(inflate_table,"INTABL")
1719.373 +#   pragma map(inflate_fast,"INFA")
1719.374 +#   pragma map(inflate_copyright,"INCOPY")
1719.375 +#endif
1719.376 +
1719.377 +#endif /* _ZCONF_H */
  1720.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
  1720.2 +++ b/epoc32/include/zlib.h	Wed Mar 31 12:27:01 2010 +0100
  1720.3 @@ -0,0 +1,1899 @@
  1720.4 +/** 
  1720.5 +@file
  1720.6 +@publishedAll
  1720.7 +@released
  1720.8 +*/
  1720.9 +
 1720.10 +/* zlib.h -- interface of the 'zlib' general purpose compression library
 1720.11 +  version 1.2.3, July 18th, 2005
 1720.12 +
 1720.13 +  Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler
 1720.14 +
 1720.15 +  This software is provided 'as-is', without any express or implied
 1720.16 +  warranty.  In no event will the authors be held liable for any damages
 1720.17 +  arising from the use of this software.
 1720.18 +
 1720.19 +  Permission is granted to anyone to use this software for any purpose,
 1720.20 +  including commercial applications, and to alter it and redistribute it
 1720.21 +  freely, subject to the following restrictions:
 1720.22 +
 1720.23 +  1. The origin of this software must not be misrepresented; you must not
 1720.24 +     claim that you wrote the original software. If you use this software
 1720.25 +     in a product, an acknowledgment in the product documentation would be
 1720.26 +     appreciated but is not required.
 1720.27 +  2. Altered source versions must be plainly marked as such, and must not be
 1720.28 +     misrepresented as being the original software.
 1720.29 +  3. This notice may not be removed or altered from any source distribution.
 1720.30 +
 1720.31 +  Jean-loup Gailly        Mark Adler
 1720.32 +  jloup@gzip.org          madler@alumni.caltech.edu
 1720.33 +
 1720.34 +
 1720.35 +  The data format used by the zlib library is described by RFCs (Request for
 1720.36 +  Comments) 1950 to 1952 in the files http://www.ietf.org/rfc/rfc1950.txt
 1720.37 +  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
 1720.38 +*/
 1720.39 +
 1720.40 +
 1720.41 +#ifndef _ZLIB_H
 1720.42 +#define _ZLIB_H
 1720.43 +
 1720.44 +#if (defined(__TOOLS2__) || defined(__TOOLS__))
 1720.45 +	// A tools build picks up the zconf.h file from the user include path
 1720.46 +	#include "zconf.h"
 1720.47 +#else
 1720.48 +	// Any other build picks up zconf.h from stdapis system include directory
 1720.49 +	#include <zconf.h> 
 1720.50 +#endif
 1720.51 +
 1720.52 +#ifdef __cplusplus
 1720.53 +	extern "C" {
 1720.54 +#endif
 1720.55 +
 1720.56 +/** Zlib version */
 1720.57 +#define ZLIB_VERSION "1.2.3"
 1720.58 +/** Zlib version Number */
 1720.59 +#define ZLIB_VERNUM 0x1230
 1720.60 +
 1720.61 +/**
 1720.62 +     The 'zlib' compression library provides in-memory compression and
 1720.63 +  decompression functions, including integrity checks of the uncompressed
 1720.64 +  data.  This version of the library supports only one compression method
 1720.65 +  (deflation) but other algorithms will be added later and will have the same
 1720.66 +  stream interface.
 1720.67 +
 1720.68 +     Compression can be done in a single step if the buffers are large
 1720.69 +  enough (for example if an input file is mmap'ed), or can be done by
 1720.70 +  repeated calls of the compression function.  In the latter case, the
 1720.71 +  application must provide more input and/or consume the output
 1720.72 +  (providing more output space) before each call.
 1720.73 +
 1720.74 +     The compressed data format used by default by the in-memory functions is
 1720.75 +  the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
 1720.76 +  around a deflate stream, which is itself documented in RFC 1951.
 1720.77 +
 1720.78 +     The library also supports reading and writing files in gzip (.gz) format
 1720.79 +  with an interface similar to that of stdio using the functions that start
 1720.80 +  with "gz".  The gzip format is different from the zlib format.  gzip is a
 1720.81 +  gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
 1720.82 +
 1720.83 +     This library can optionally read and write gzip streams in memory as well.
 1720.84 +
 1720.85 +     The zlib format was designed to be compact and fast for use in memory
 1720.86 +  and on communications channels.  The gzip format was designed for single-
 1720.87 +  file compression on file systems, has a larger header than zlib to maintain
 1720.88 +  directory information, and uses a different, slower check method than zlib.
 1720.89 +
 1720.90 +     The library does not install any signal handler. The decoder checks
 1720.91 +  the consistency of the compressed data, so the library should never
 1720.92 +  crash even in case of corrupted input.
 1720.93 +*/
 1720.94 +
 1720.95 +/** Function pointer - used to allocate the internal state */
 1720.96 +typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
 1720.97 +/** Function pointer - used to free the internal state */
 1720.98 +typedef void   (*free_func)  OF((voidpf opaque, voidpf address));
 1720.99 +
1720.100 +struct internal_state;
1720.101 +
1720.102 +/**
1720.103 +	Encapsulates a zip stream
1720.104 +*/
1720.105 +typedef struct z_stream_s {
1720.106 +	/** Next input byte */
1720.107 +    Bytef    *next_in;  
1720.108 +    /** Number of bytes available at next_in */
1720.109 +    uInt     avail_in;  
1720.110 +    /** Total nb of input bytes read so far */
1720.111 +    uLong    total_in;  
1720.112 +
1720.113 +    /** Next output byte should be put there */
1720.114 +    Bytef    *next_out; 
1720.115 +    /** Remaining free space at next_out */
1720.116 +    uInt     avail_out; 
1720.117 +    /** Total nb of bytes output so far */
1720.118 +    uLong    total_out; 
1720.119 +
1720.120 +    /** Last error message, NULL if no error */
1720.121 +    char     *msg;      
1720.122 +    /** Not visible by applications */
1720.123 +    struct internal_state FAR *state; 
1720.124 +
1720.125 +    /** Used to allocate the internal state */
1720.126 +    alloc_func zalloc;  
1720.127 +    /** Used to free the internal state */
1720.128 +    free_func  zfree;   
1720.129 +    /** Private data object passed to zalloc and zfree */
1720.130 +    voidpf     opaque;  
1720.131 +
1720.132 +    /** Best guess about the data type: binary or text */
1720.133 +    int     data_type;  
1720.134 +    /** Adler32 value of the uncompressed data */
1720.135 +    uLong   adler;      
1720.136 +    /** Reserved for future use */
1720.137 +    uLong   reserved;   
1720.138 +} z_stream;
1720.139 +
1720.140 +/** typedef z_stream* as z_streamp. Refer to z_stream_s for more details */
1720.141 +typedef z_stream FAR *z_streamp;
1720.142 +
1720.143 +/**
1720.144 +     gzip header information passed to and from zlib routines.  See RFC 1952
1720.145 +  for more details on the meanings of these fields.
1720.146 +*/
1720.147 +typedef struct gz_header_s {
1720.148 +	/** True if compressed data believed to be text */
1720.149 +    int     text;       
1720.150 +    /** Modification time */
1720.151 +    uLong   time;       
1720.152 +    /** Extra flags (not used when writing a gzip file) */
1720.153 +    int     xflags;     
1720.154 +    /** Operating system */
1720.155 +    int     os;         
1720.156 +    /** Pointer to extra field or Z_NULL if none */
1720.157 +    Bytef   *extra;     
1720.158 +    /** Extra field length (valid if extra != Z_NULL) */
1720.159 +    uInt    extra_len;  
1720.160 +    /** Space at extra (only when reading header) */
1720.161 +    uInt    extra_max;  
1720.162 +    /** Pointer to zero-terminated file name or Z_NULL */
1720.163 +    Bytef   *name;      
1720.164 +    /** Space at name (only when reading header) */
1720.165 +    uInt    name_max;   
1720.166 +    /** Pointer to zero-terminated comment or Z_NULL */
1720.167 +    Bytef   *comment;   
1720.168 +    /** Space at comment (only when reading header) */
1720.169 +    uInt    comm_max;   
1720.170 +    /** True if there was or will be a header crc */
1720.171 +    int     hcrc;       
1720.172 +    /** True when done reading gzip header (not used when writing a gzip file) */
1720.173 +    int     done;   
1720.174 +} gz_header;
1720.175 +
1720.176 +/** gz_headerp is typedef gz_header* */
1720.177 +typedef gz_header FAR *gz_headerp;
1720.178 +
1720.179 +/*
1720.180 +   The application must update next_in and avail_in when avail_in has
1720.181 +   dropped to zero. It must update next_out and avail_out when avail_out
1720.182 +   has dropped to zero. The application must initialize zalloc, zfree and
1720.183 +   opaque before calling the init function. All other fields are set by the
1720.184 +   compression library and must not be updated by the application.
1720.185 +
1720.186 +   The opaque value provided by the application will be passed as the first
1720.187 +   parameter for calls of zalloc and zfree. This can be useful for custom
1720.188 +   memory management. The compression library attaches no meaning to the
1720.189 +   opaque value.
1720.190 +
1720.191 +   zalloc must return Z_NULL if there is not enough memory for the object.
1720.192 +   If zlib is used in a multi-threaded application, zalloc and zfree must be
1720.193 +   thread safe.
1720.194 +
1720.195 +   On 16-bit systems, the functions zalloc and zfree must be able to allocate
1720.196 +   exactly 65536 bytes, but will not be required to allocate more than this
1720.197 +   if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
1720.198 +   pointers returned by zalloc for objects of exactly 65536 bytes *must*
1720.199 +   have their offset normalized to zero. The default allocation function
1720.200 +   provided by this library ensures this (see zutil.c). To reduce memory
1720.201 +   requirements and avoid any allocation of 64K objects, at the expense of
1720.202 +   compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
1720.203 +
1720.204 +   The fields total_in and total_out can be used for statistics or
1720.205 +   progress reports. After compression, total_in holds the total size of
1720.206 +   the uncompressed data and may be saved for use in the decompressor
1720.207 +   (particularly if the decompressor wants to decompress everything in
1720.208 +   a single step).
1720.209 +*/
1720.210 +
1720.211 +                        /* constants */
1720.212 +
1720.213 +/** Allowed flush values; see deflate() and inflate() below for details */
1720.214 +#define Z_NO_FLUSH      0
1720.215 +/** Allowed flush values; see deflate() and inflate() below for details. This constant will be removed, use Z_SYNC_FLUSH instead*/
1720.216 +#define Z_PARTIAL_FLUSH 1
1720.217 +/** Allowed flush values; see deflate() and inflate() below for details */
1720.218 +#define Z_SYNC_FLUSH    2
1720.219 +/** Allowed flush values; see deflate() and inflate() below for details */
1720.220 +#define Z_FULL_FLUSH    3
1720.221 +/** Allowed flush values; see deflate() and inflate() below for details */
1720.222 +#define Z_FINISH        4
1720.223 +/** Allowed flush values; see deflate() and inflate() below for details */
1720.224 +#define Z_BLOCK         5
1720.225 +
1720.226 +
1720.227 +/** Return codes for the compression/decompression functions. Negative
1720.228 +values are errors, positive values are used for special but normal events. */
1720.229 +#define Z_OK            0
1720.230 +/** Return codes for the compression/decompression functions. Negative
1720.231 +values are errors, positive values are used for special but normal events. */
1720.232 +#define Z_STREAM_END    1
1720.233 +/** Return codes for the compression/decompression functions. Negative
1720.234 +values are errors, positive values are used for special but normal events. */
1720.235 +#define Z_NEED_DICT     2
1720.236 +/** Return codes for the compression/decompression functions. Negative
1720.237 +values are errors, positive values are used for special but normal events. */
1720.238 +#define Z_ERRNO        (-1)
1720.239 +/** Return codes for the compression/decompression functions. Negative
1720.240 +values are errors, positive values are used for special but normal events. */
1720.241 +#define Z_STREAM_ERROR (-2)
1720.242 +/** Return codes for the compression/decompression functions. Negative
1720.243 +values are errors, positive values are used for special but normal events. */
1720.244 +#define Z_DATA_ERROR   (-3)
1720.245 +/** Return codes for the compression/decompression functions. Negative
1720.246 +values are errors, positive values are used for special but normal events. */
1720.247 +#define Z_MEM_ERROR    (-4)
1720.248 +/** Return codes for the compression/decompression functions. Negative
1720.249 +values are errors, positive values are used for special but normal events. */
1720.250 +#define Z_BUF_ERROR    (-5)
1720.251 +/** Return codes for the compression/decompression functions. Negative
1720.252 +values are errors, positive values are used for special but normal events. */
1720.253 +#define Z_VERSION_ERROR (-6)
1720.254 +
1720.255 +
1720.256 +/** Compression level as no compression */
1720.257 +#define Z_NO_COMPRESSION         0
1720.258 +/** Compression level for best speed */
1720.259 +#define Z_BEST_SPEED             1
1720.260 +/** Compression level for best compression */
1720.261 +#define Z_BEST_COMPRESSION       9
1720.262 +/** Compression level for default compression */
1720.263 +#define Z_DEFAULT_COMPRESSION  (-1)
1720.264 +
1720.265 +
1720.266 +/** Compression strategy; see deflateInit2() below for details */
1720.267 +#define Z_FILTERED            1
1720.268 +/** Compression strategy; see deflateInit2() below for details */
1720.269 +#define Z_HUFFMAN_ONLY        2
1720.270 +/** Compression strategy; see deflateInit2() below for details */
1720.271 +#define Z_RLE                 3
1720.272 +/** Compression strategy; see deflateInit2() below for details */
1720.273 +#define Z_FIXED               4
1720.274 +/** Compression strategy; see deflateInit2() below for details */
1720.275 +#define Z_DEFAULT_STRATEGY    0
1720.276 +
1720.277 +
1720.278 +/** Possible values of the data_type field (though see inflate()) */
1720.279 +#define Z_BINARY   0
1720.280 +/** Possible values of the data_type field (though see inflate()) */
1720.281 +#define Z_TEXT     1
1720.282 +/** Possible values of the data_type field (though see inflate()). It is used for compatibility with 1.2.2 and earlier */
1720.283 +#define Z_ASCII    Z_TEXT   
1720.284 +/** Possible values of the data_type field (though see inflate()) */
1720.285 +#define Z_UNKNOWN  2
1720.286 +
1720.287 +
1720.288 +/** The deflate compression method (the only one supported in this version) */
1720.289 +#define Z_DEFLATED   8
1720.290 +
1720.291 +/** For initializing zalloc, zfree, opaque */
1720.292 +#define Z_NULL  0  
1720.293 +
1720.294 +/** For compatibility with versions < 1.0.2 */
1720.295 +#define zlib_version zlibVersion()
1720.296 +
1720.297 +
1720.298 +                        /* basic functions */
1720.299 +
1720.300 +/** The application can compare zlibVersion and ZLIB_VERSION for consistency.
1720.301 +   If the first character differs, the library code actually used is
1720.302 +   not compatible with the zlib.h header file used by the application.
1720.303 +   This check is automatically made by deflateInit and inflateInit.
1720.304 +   @return returns zlib version 
1720.305 + */
1720.306 +ZEXTERN const char * ZEXPORT zlibVersion OF((void));
1720.307 +
1720.308 +/*
1720.309 +ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
1720.310 +
1720.311 +     Initializes the internal stream state for compression. The fields
1720.312 +   zalloc, zfree and opaque must be initialized before by the caller.
1720.313 +   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
1720.314 +   use default allocation functions.
1720.315 +
1720.316 +     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
1720.317 +   1 gives best speed, 9 gives best compression, 0 gives no compression at
1720.318 +   all (the input data is simply copied a block at a time).
1720.319 +   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
1720.320 +   compression (currently equivalent to level 6).
1720.321 +
1720.322 +     deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
1720.323 +   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
1720.324 +   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
1720.325 +   with the version assumed by the caller (ZLIB_VERSION).
1720.326 +   msg is set to null if there is no error message.  deflateInit does not
1720.327 +   perform any compression: this will be done by deflate().
1720.328 +*/
1720.329 +
1720.330 +/**
1720.331 +    deflate compresses as much data as possible, and stops when the input
1720.332 +  buffer becomes empty or the output buffer becomes full. It may introduce some
1720.333 +  output latency (reading input without producing any output) except when
1720.334 +  forced to flush.
1720.335 +
1720.336 +    The detailed semantics are as follows. deflate performs one or both of the
1720.337 +  following actions:
1720.338 +
1720.339 +  - Compress more input starting at next_in and update next_in and avail_in
1720.340 +    accordingly. If not all input can be processed (because there is not
1720.341 +    enough room in the output buffer), next_in and avail_in are updated and
1720.342 +    processing will resume at this point for the next call of deflate().
1720.343 +
1720.344 +  - Provide more output starting at next_out and update next_out and avail_out
1720.345 +    accordingly. This action is forced if the parameter flush is non zero.
1720.346 +    Forcing flush frequently degrades the compression ratio, so this parameter
1720.347 +    should be set only when necessary (in interactive applications).
1720.348 +    Some output may be provided even if flush is not set.
1720.349 +
1720.350 +  Before the call of deflate(), the application should ensure that at least
1720.351 +  one of the actions is possible, by providing more input and/or consuming
1720.352 +  more output, and updating avail_in or avail_out accordingly; avail_out
1720.353 +  should never be zero before the call. The application can consume the
1720.354 +  compressed output when it wants, for example when the output buffer is full
1720.355 +  (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
1720.356 +  and with zero avail_out, it must be called again after making room in the
1720.357 +  output buffer because there might be more output pending.
1720.358 +
1720.359 +    Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
1720.360 +  decide how much data to accumualte before producing output, in order to
1720.361 +  maximize compression.
1720.362 +
1720.363 +    If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
1720.364 +  flushed to the output buffer and the output is aligned on a byte boundary, so
1720.365 +  that the decompressor can get all input data available so far. (In particular
1720.366 +  avail_in is zero after the call if enough output space has been provided
1720.367 +  before the call.)  Flushing may degrade compression for some compression
1720.368 +  algorithms and so it should be used only when necessary.
1720.369 +
1720.370 +    If flush is set to Z_FULL_FLUSH, all output is flushed as with
1720.371 +  Z_SYNC_FLUSH, and the compression state is reset so that decompression can
1720.372 +  restart from this point if previous compressed data has been damaged or if
1720.373 +  random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
1720.374 +  compression.
1720.375 +
1720.376 +    If deflate returns with avail_out == 0, this function must be called again
1720.377 +  with the same value of the flush parameter and more output space (updated
1720.378 +  avail_out), until the flush is complete (deflate returns with non-zero
1720.379 +  avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that
1720.380 +  avail_out is greater than six to avoid repeated flush markers due to
1720.381 +  avail_out == 0 on return.
1720.382 +
1720.383 +    If the parameter flush is set to Z_FINISH, pending input is processed,
1720.384 +  pending output is flushed and deflate returns with Z_STREAM_END if there
1720.385 +  was enough output space; if deflate returns with Z_OK, this function must be
1720.386 +  called again with Z_FINISH and more output space (updated avail_out) but no
1720.387 +  more input data, until it returns with Z_STREAM_END or an error. After
1720.388 +  deflate has returned Z_STREAM_END, the only possible operations on the
1720.389 +  stream are deflateReset or deflateEnd.
1720.390 +
1720.391 +    Z_FINISH can be used immediately after deflateInit if all the compression
1720.392 +  is to be done in a single step. In this case, avail_out must be at least
1720.393 +  the value returned by deflateBound (see below). If deflate does not return
1720.394 +  Z_STREAM_END, then it must be called again as described above.
1720.395 +
1720.396 +    deflate() sets strm->adler to the adler32 checksum of all input read
1720.397 +  so far (that is, total_in bytes).
1720.398 +
1720.399 +    deflate() may update strm->data_type if it can make a good guess about
1720.400 +  the input data type (Z_BINARY or Z_TEXT). In doubt, the data is considered
1720.401 +  binary. This field is only for information purposes and does not affect
1720.402 +  the compression algorithm in any manner.
1720.403 +
1720.404 +    deflate() returns Z_OK if some progress has been made (more input
1720.405 +  processed or more output produced), Z_STREAM_END if all input has been
1720.406 +  consumed and all output has been produced (only when flush is set to
1720.407 +  Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
1720.408 +  if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
1720.409 +  (for example avail_in or avail_out was zero). Note that Z_BUF_ERROR is not
1720.410 +  fatal, and deflate() can be called again with more input and more output
1720.411 +  space to continue compressing.
1720.412 +  
1720.413 +  @param strm Stream of data
1720.414 +  @param flush Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
1720.415 +  decide how much data to accumualte before producing output, in order to
1720.416 +  maximize compression. Refer to the description above for more details.
1720.417 +  @return deflate returns Z_OK on success. Refer to the description above for more details.
1720.418 +*/
1720.419 +ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
1720.420 +
1720.421 +/**
1720.422 +     All dynamically allocated data structures for this stream are freed.
1720.423 +   This function discards any unprocessed input and does not flush any
1720.424 +   pending output.
1720.425 +
1720.426 +     deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
1720.427 +   stream state was inconsistent, Z_DATA_ERROR if the stream was freed
1720.428 +   prematurely (some input or output was discarded). In the error case,
1720.429 +   msg may be set but then points to a static string (which must not be
1720.430 +   deallocated).
1720.431 +   
1720.432 +   @param strm Stream of data
1720.433 +   @return deflateEnd returns Z_OK on success. Refer to the description above for more details.
1720.434 +*/
1720.435 +ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
1720.436 +
1720.437 +/*
1720.438 +ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
1720.439 +
1720.440 +     Initializes the internal stream state for decompression. The fields
1720.441 +   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
1720.442 +   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
1720.443 +   value depends on the compression method), inflateInit determines the
1720.444 +   compression method from the zlib header and allocates all data structures
1720.445 +   accordingly; otherwise the allocation will be deferred to the first call of
1720.446 +   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
1720.447 +   use default allocation functions.
1720.448 +
1720.449 +     inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.450 +   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
1720.451 +   version assumed by the caller.  msg is set to null if there is no error
1720.452 +   message. inflateInit does not perform any decompression apart from reading
1720.453 +   the zlib header if present: this will be done by inflate().  (So next_in and
1720.454 +   avail_in may be modified, but next_out and avail_out are unchanged.)
1720.455 +*/
1720.456 +
1720.457 +/**
1720.458 +    inflate decompresses as much data as possible, and stops when the input
1720.459 +  buffer becomes empty or the output buffer becomes full. It may introduce
1720.460 +  some output latency (reading input without producing any output) except when
1720.461 +  forced to flush.
1720.462 +
1720.463 +  The detailed semantics are as follows. inflate performs one or both of the
1720.464 +  following actions:
1720.465 +
1720.466 +  - Decompress more input starting at next_in and update next_in and avail_in
1720.467 +    accordingly. If not all input can be processed (because there is not
1720.468 +    enough room in the output buffer), next_in is updated and processing
1720.469 +    will resume at this point for the next call of inflate().
1720.470 +
1720.471 +  - Provide more output starting at next_out and update next_out and avail_out
1720.472 +    accordingly.  inflate() provides as much output as possible, until there
1720.473 +    is no more input data or no more space in the output buffer (see below
1720.474 +    about the flush parameter).
1720.475 +
1720.476 +  Before the call of inflate(), the application should ensure that at least
1720.477 +  one of the actions is possible, by providing more input and/or consuming
1720.478 +  more output, and updating the next_* and avail_* values accordingly.
1720.479 +  The application can consume the uncompressed output when it wants, for
1720.480 +  example when the output buffer is full (avail_out == 0), or after each
1720.481 +  call of inflate(). If inflate returns Z_OK and with zero avail_out, it
1720.482 +  must be called again after making room in the output buffer because there
1720.483 +  might be more output pending.
1720.484 +
1720.485 +    The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
1720.486 +  Z_FINISH, or Z_BLOCK. Z_SYNC_FLUSH requests that inflate() flush as much
1720.487 +  output as possible to the output buffer. Z_BLOCK requests that inflate() stop
1720.488 +  if and when it gets to the next deflate block boundary. When decoding the
1720.489 +  zlib or gzip format, this will cause inflate() to return immediately after
1720.490 +  the header and before the first block. When doing a raw inflate, inflate()
1720.491 +  will go ahead and process the first block, and will return when it gets to
1720.492 +  the end of that block, or when it runs out of data.
1720.493 +
1720.494 +    The Z_BLOCK option assists in appending to or combining deflate streams.
1720.495 +  Also to assist in this, on return inflate() will set strm->data_type to the
1720.496 +  number of unused bits in the last byte taken from strm->next_in, plus 64
1720.497 +  if inflate() is currently decoding the last block in the deflate stream,
1720.498 +  plus 128 if inflate() returned immediately after decoding an end-of-block
1720.499 +  code or decoding the complete header up to just before the first byte of the
1720.500 +  deflate stream. The end-of-block will not be indicated until all of the
1720.501 +  uncompressed data from that block has been written to strm->next_out.  The
1720.502 +  number of unused bits may in general be greater than seven, except when
1720.503 +  bit 7 of data_type is set, in which case the number of unused bits will be
1720.504 +  less than eight.
1720.505 +
1720.506 +    inflate() should normally be called until it returns Z_STREAM_END or an
1720.507 +  error. However if all decompression is to be performed in a single step
1720.508 +  (a single call of inflate), the parameter flush should be set to
1720.509 +  Z_FINISH. In this case all pending input is processed and all pending
1720.510 +  output is flushed; avail_out must be large enough to hold all the
1720.511 +  uncompressed data. (The size of the uncompressed data may have been saved
1720.512 +  by the compressor for this purpose.) The next operation on this stream must
1720.513 +  be inflateEnd to deallocate the decompression state. The use of Z_FINISH
1720.514 +  is never required, but can be used to inform inflate that a faster approach
1720.515 +  may be used for the single inflate() call.
1720.516 +
1720.517 +     In this implementation, inflate() always flushes as much output as
1720.518 +  possible to the output buffer, and always uses the faster approach on the
1720.519 +  first call. So the only effect of the flush parameter in this implementation
1720.520 +  is on the return value of inflate(), as noted below, or when it returns early
1720.521 +  because Z_BLOCK is used.
1720.522 +
1720.523 +     If a preset dictionary is needed after this call (see inflateSetDictionary
1720.524 +  below), inflate sets strm->adler to the adler32 checksum of the dictionary
1720.525 +  chosen by the compressor and returns Z_NEED_DICT; otherwise it sets
1720.526 +  strm->adler to the adler32 checksum of all output produced so far (that is,
1720.527 +  total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described
1720.528 +  below. At the end of the stream, inflate() checks that its computed adler32
1720.529 +  checksum is equal to that saved by the compressor and returns Z_STREAM_END
1720.530 +  only if the checksum is correct.
1720.531 +
1720.532 +    inflate() will decompress and check either zlib-wrapped or gzip-wrapped
1720.533 +  deflate data.  The header type is detected automatically.  Any information
1720.534 +  contained in the gzip header is not retained, so applications that need that
1720.535 +  information should instead use raw inflate, see inflateInit2() below, or
1720.536 +  inflateBack() and perform their own processing of the gzip header and
1720.537 +  trailer.
1720.538 +
1720.539 +    inflate() returns Z_OK if some progress has been made (more input processed
1720.540 +  or more output produced), Z_STREAM_END if the end of the compressed data has
1720.541 +  been reached and all uncompressed output has been produced, Z_NEED_DICT if a
1720.542 +  preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
1720.543 +  corrupted (input stream not conforming to the zlib format or incorrect check
1720.544 +  value), Z_STREAM_ERROR if the stream structure was inconsistent (for example
1720.545 +  if next_in or next_out was NULL), Z_MEM_ERROR if there was not enough memory,
1720.546 +  Z_BUF_ERROR if no progress is possible or if there was not enough room in the
1720.547 +  output buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and
1720.548 +  inflate() can be called again with more input and more output space to
1720.549 +  continue decompressing. If Z_DATA_ERROR is returned, the application may then
1720.550 +  call inflateSync() to look for a good compression block if a partial recovery
1720.551 +  of the data is desired.
1720.552 +
1720.553 +  @param strm Stream of data
1720.554 +  @param flush This parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH,
1720.555 +  Z_FINISH, or Z_BLOCK. Refer to the description for more details.
1720.556 +  @return inflate returns Z_OK on success. Refer to the description above for more details.
1720.557 +*/
1720.558 +ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
1720.559 +
1720.560 +/**
1720.561 +     All dynamically allocated data structures for this stream are freed.
1720.562 +   This function discards any unprocessed input and does not flush any
1720.563 +   pending output.
1720.564 +
1720.565 +  @param strm Stream of data
1720.566 +  @return inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
1720.567 +   was inconsistent. In the error case, msg may be set but then points to a
1720.568 +   static string (which must not be deallocated). 
1720.569 +*/
1720.570 +ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
1720.571 +
1720.572 +                        /* Advanced functions */
1720.573 +
1720.574 +/*
1720.575 +    The following functions are needed only in some special applications.
1720.576 +*/
1720.577 +
1720.578 +/*
1720.579 +ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
1720.580 +                                     int  level,
1720.581 +                                     int  method,
1720.582 +                                     int  windowBits,
1720.583 +                                     int  memLevel,
1720.584 +                                     int  strategy));
1720.585 +
1720.586 +     This is another version of deflateInit with more compression options. The
1720.587 +   fields next_in, zalloc, zfree and opaque must be initialized before by
1720.588 +   the caller.
1720.589 +
1720.590 +     The method parameter is the compression method. It must be Z_DEFLATED in
1720.591 +   this version of the library.
1720.592 +
1720.593 +     The windowBits parameter is the base two logarithm of the window size
1720.594 +   (the size of the history buffer). It should be in the range 8..15 for this
1720.595 +   version of the library. Larger values of this parameter result in better
1720.596 +   compression at the expense of memory usage. The default value is 15 if
1720.597 +   deflateInit is used instead.
1720.598 +
1720.599 +     Note: In this version of the library a windowBits value of 8 is unsupported
1720.600 +   due to a problem with the window size being set to 256 bytes. Although a
1720.601 +   value of 8 will be accepted by deflateInit2(), as it is being changed
1720.602 +   internally from 8 to 9, it will not be possible to use the same value when it
1720.603 +   comes to decompression. This is because inflateInit2() does not make the same
1720.604 +   change internally and as a result a Z_DATA_ERROR is returned when calling
1720.605 +   inflate(). It is therefore advised that for this version of the library 
1720.606 +   windowBits of 9 is used in place of 8.
1720.607 +
1720.608 +     windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
1720.609 +   determines the window size. deflate() will then generate raw deflate data
1720.610 +   with no zlib header or trailer, and will not compute an adler32 check value.
1720.611 +
1720.612 +     windowBits can also be greater than 15 for optional gzip encoding. Add
1720.613 +   16 to windowBits to write a simple gzip header and trailer around the
1720.614 +   compressed data instead of a zlib wrapper. The gzip header will have no
1720.615 +   file name, no extra data, no comment, no modification time (set to zero),
1720.616 +   no header crc, and the operating system will be set to 3 (UNIX).  If a
1720.617 +   gzip stream is being written, strm->adler is a crc32 instead of an adler32.
1720.618 +
1720.619 +     The memLevel parameter specifies how much memory should be allocated
1720.620 +   for the internal compression state. memLevel=1 uses minimum memory but
1720.621 +   is slow and reduces compression ratio; memLevel=9 uses maximum memory
1720.622 +   for optimal speed. The default value is 8. See zconf.h for total memory
1720.623 +   usage as a function of windowBits and memLevel.
1720.624 +
1720.625 +     The strategy parameter is used to tune the compression algorithm. Use the
1720.626 +   value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
1720.627 +   filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
1720.628 +   string match), or Z_RLE to limit match distances to one (run-length
1720.629 +   encoding). Filtered data consists mostly of small values with a somewhat
1720.630 +   random distribution. In this case, the compression algorithm is tuned to
1720.631 +   compress them better. The effect of Z_FILTERED is to force more Huffman
1720.632 +   coding and less string matching; it is somewhat intermediate between
1720.633 +   Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
1720.634 +   Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
1720.635 +   parameter only affects the compression ratio but not the correctness of the
1720.636 +   compressed output even if it is not set appropriately.  Z_FIXED prevents the
1720.637 +   use of dynamic Huffman codes, allowing for a simpler decoder for special
1720.638 +   applications.
1720.639 +
1720.640 +      deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.641 +   memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
1720.642 +   method). msg is set to null if there is no error message.  deflateInit2 does
1720.643 +   not perform any compression: this will be done by deflate().
1720.644 +*/
1720.645 +
1720.646 +/**
1720.647 +     Initializes the compression dictionary from the given byte sequence
1720.648 +   without producing any compressed output. This function must be called
1720.649 +   immediately after deflateInit, deflateInit2 or deflateReset, before any
1720.650 +   call of deflate. The compressor and decompressor must use exactly the same
1720.651 +   dictionary (see inflateSetDictionary).
1720.652 +
1720.653 +     The dictionary should consist of strings (byte sequences) that are likely
1720.654 +   to be encountered later in the data to be compressed, with the most commonly
1720.655 +   used strings preferably put towards the end of the dictionary. Using a
1720.656 +   dictionary is most useful when the data to be compressed is short and can be
1720.657 +   predicted with good accuracy; the data can then be compressed better than
1720.658 +   with the default empty dictionary.
1720.659 +
1720.660 +     Depending on the size of the compression data structures selected by
1720.661 +   deflateInit or deflateInit2, a part of the dictionary may in effect be
1720.662 +   discarded, for example if the dictionary is larger than the window size in
1720.663 +   deflate or deflate2. Thus the strings most likely to be useful should be
1720.664 +   put at the end of the dictionary, not at the front. In addition, the
1720.665 +   current implementation of deflate will use at most the window size minus
1720.666 +   262 bytes of the provided dictionary.
1720.667 +
1720.668 +     Upon return of this function, strm->adler is set to the adler32 value
1720.669 +   of the dictionary; the decompressor may later use this value to determine
1720.670 +   which dictionary has been used by the compressor. (The adler32 value
1720.671 +   applies to the whole dictionary even if only a subset of the dictionary is
1720.672 +   actually used by the compressor.) If a raw deflate was requested, then the
1720.673 +   adler32 value is not computed and strm->adler is not set.
1720.674 +   
1720.675 +  @param strm Stream of data
1720.676 +  @param dictionary Pointer to the dictionary. Refer to the description above for more details.
1720.677 +  @param dictLength Dictionay Length
1720.678 +  @return deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
1720.679 +   parameter is invalid (such as NULL dictionary) or the stream state is
1720.680 +   inconsistent (for example if deflate has already been called for this stream
1720.681 +   or if the compression method is bsort). deflateSetDictionary does not
1720.682 +   perform any compression: this will be done by deflate(). 
1720.683 +*/
1720.684 +ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
1720.685 +                                             const Bytef *dictionary,
1720.686 +                                             uInt  dictLength));
1720.687 +
1720.688 +/**
1720.689 +     Sets the destination stream as a complete copy of the source stream.
1720.690 +
1720.691 +     This function can be useful when several compression strategies will be
1720.692 +   tried, for example when there are several ways of pre-processing the input
1720.693 +   data with a filter. The streams that will be discarded should then be freed
1720.694 +   by calling deflateEnd.  Note that deflateCopy duplicates the internal
1720.695 +   compression state which can be quite large, so this strategy is slow and
1720.696 +   can consume lots of memory.
1720.697 +   
1720.698 +   @param dest destination stream 
1720.699 +   @param souce source stream of data
1720.700 +   @return deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
1720.701 +   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
1720.702 +   (such as zalloc being NULL). msg is left unchanged in both source and
1720.703 +   destination.
1720.704 +*/
1720.705 +ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
1720.706 +                                    z_streamp source));
1720.707 +
1720.708 +/**
1720.709 +     This function is equivalent to deflateEnd followed by deflateInit,
1720.710 +   but does not free and reallocate all the internal compression state.
1720.711 +   The stream will keep the same compression level and any other attributes
1720.712 +   that may have been set by deflateInit2.
1720.713 +   
1720.714 +   @param strm stream of data
1720.715 +   @return deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
1720.716 +   stream state was inconsistent (such as zalloc or state being NULL).
1720.717 +*/
1720.718 +ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
1720.719 +
1720.720 +/**
1720.721 +     Dynamically update the compression level and compression strategy.  The
1720.722 +   interpretation of level and strategy is as in deflateInit2.  This can be
1720.723 +   used to switch between compression and straight copy of the input data, or
1720.724 +   to switch to a different kind of input data requiring a different
1720.725 +   strategy. If the compression level is changed, the input available so far
1720.726 +   is compressed with the old level (and may be flushed); the new level will
1720.727 +   take effect only at the next call of deflate().
1720.728 +
1720.729 +     Before the call of deflateParams, the stream state must be set as for
1720.730 +   a call of deflate(), since the currently available input may have to
1720.731 +   be compressed and flushed. In particular, strm->avail_out must be non-zero.
1720.732 +   
1720.733 +   @param strm stream of data
1720.734 +   @param level compression level
1720.735 +   @param strategy compression algorithm
1720.736 +   @return deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
1720.737 +   stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
1720.738 +   if strm->avail_out was zero.
1720.739 +*/
1720.740 +ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
1720.741 +                                      int level,
1720.742 +                                      int strategy));
1720.743 +
1720.744 +/**
1720.745 +     Fine tune deflate's internal compression parameters.  This should only be
1720.746 +   used by someone who understands the algorithm used by zlib's deflate for
1720.747 +   searching for the best matching string, and even then only by the most
1720.748 +   fanatic optimizer trying to squeeze out the last compressed bit for their
1720.749 +   specific input data.  Read the deflate.c source code for the meaning of the
1720.750 +   max_lazy, good_length, nice_length, and max_chain parameters.
1720.751 +
1720.752 +     deflateTune() can be called after deflateInit() or deflateInit2()
1720.753 +   
1720.754 +   @param strm stream of data
1720.755 +   @param good_length reduce lazy search above this match length
1720.756 +   @param max_lazy do not perform lazy search above this match length
1720.757 +   @param nice_length quit search above this match length
1720.758 +   @param max_chain
1720.759 +   @return deflateTune returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream.
1720.760 + */
1720.761 +ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm,
1720.762 +                                    int good_length,
1720.763 +                                    int max_lazy,
1720.764 +                                    int nice_length,
1720.765 +                                    int max_chain));
1720.766 +
1720.767 +/**
1720.768 +     deflateBound() returns an upper bound on the compressed size after
1720.769 +   deflation of sourceLen bytes.  It must be called after deflateInit()
1720.770 +   or deflateInit2().  This would be used to allocate an output buffer
1720.771 +   for deflation in a single pass, and so would be called before deflate().
1720.772 +   
1720.773 +   @param strm stream of data
1720.774 +   @param sourceLen source length
1720.775 +   @return deflateBound returns an upper bound on the compressed size after
1720.776 +   deflation of sourceLen bytes.
1720.777 +*/
1720.778 +ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm,
1720.779 +                                       uLong sourceLen));
1720.780 +
1720.781 +/**
1720.782 +     deflatePrime() inserts bits in the deflate output stream.  The intent
1720.783 +  is that this function is used to start off the deflate output with the
1720.784 +  bits leftover from a previous deflate stream when appending to it.  As such,
1720.785 +  this function can only be used for raw deflate, and must be used before the
1720.786 +  first deflate() call after a deflateInit2() or deflateReset().  bits must be
1720.787 +  less than or equal to 16, and that many of the least significant bits of
1720.788 +  value will be inserted in the output.
1720.789 +   
1720.790 +   @param strm stream of data
1720.791 +   @param bits bits must be less than or equal to 16, and that many of the least 
1720.792 +   significant bits of value will be inserted in the output.
1720.793 +   @param value represents value of the bits to be inserted
1720.794 +   @return deflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
1720.795 +   stream state was inconsistent.
1720.796 +*/
1720.797 +ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm,
1720.798 +                                     int bits,
1720.799 +                                     int value));
1720.800 +
1720.801 +/**
1720.802 +      deflateSetHeader() provides gzip header information for when a gzip
1720.803 +   stream is requested by deflateInit2().  deflateSetHeader() may be called
1720.804 +   after deflateInit2() or deflateReset() and before the first call of
1720.805 +   deflate().  The text, time, os, extra field, name, and comment information
1720.806 +   in the provided gz_header structure are written to the gzip header (xflag is
1720.807 +   ignored -- the extra flags are set according to the compression level).  The
1720.808 +   caller must assure that, if not Z_NULL, name and comment are terminated with
1720.809 +   a zero byte, and that if extra is not Z_NULL, that extra_len bytes are
1720.810 +   available there.  If hcrc is true, a gzip header crc is included.  Note that
1720.811 +   the current versions of the command-line version of gzip (up through version
1720.812 +   1.3.x) do not support header crc's, and will report that it is a "multi-part
1720.813 +   gzip file" and give up.
1720.814 +
1720.815 +      If deflateSetHeader is not used, the default gzip header has text false,
1720.816 +   the time set to zero, and os set to 3, with no extra, name, or comment
1720.817 +   fields.  The gzip header is returned to the default state by deflateReset().
1720.818 +   
1720.819 +   @param strm stream of data
1720.820 +   @param head gzip header
1720.821 +   @return deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
1720.822 +   stream state was inconsistent.
1720.823 +*/
1720.824 +ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm,
1720.825 +                                         gz_headerp head));
1720.826 +
1720.827 +/*
1720.828 +ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
1720.829 +                                     int  windowBits));
1720.830 +
1720.831 +     This is another version of inflateInit with an extra parameter. The
1720.832 +   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
1720.833 +   before by the caller.
1720.834 +
1720.835 +     The windowBits parameter is the base two logarithm of the maximum window
1720.836 +   size (the size of the history buffer).  It should be in the range 8..15 for
1720.837 +   this version of the library. The default value is 15 if inflateInit is used
1720.838 +   instead. windowBits must be greater than or equal to the windowBits value
1720.839 +   provided to deflateInit2() while compressing, or it must be equal to 15 if
1720.840 +   deflateInit2() was not used. If a compressed stream with a larger window
1720.841 +   size is given as input, inflate() will return with the error code
1720.842 +   Z_DATA_ERROR instead of trying to allocate a larger window.
1720.843 +
1720.844 +     Note: In this version of the library a windowBits value of 8 is unsupported
1720.845 +   due to a problem with the window size being set to 256 bytes. Although a
1720.846 +   value of 8 will be accepted by deflateInit2(), as it is being changed
1720.847 +   internally from 8 to 9, it will not be possible to use the same value when it
1720.848 +   comes to decompression. This is because inflateInit2() does not make the same
1720.849 +   change internally and as a result a Z_DATA_ERROR is returned when calling
1720.850 +   inflate(). It is therefore advised that for this version of the library 
1720.851 +   windowBits of 9 is used in place of 8.
1720.852 +
1720.853 +     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
1720.854 +   determines the window size. inflate() will then process raw deflate data,
1720.855 +   not looking for a zlib or gzip header, not generating a check value, and not
1720.856 +   looking for any check values for comparison at the end of the stream. This
1720.857 +   is for use with other formats that use the deflate compressed data format
1720.858 +   such as zip.  Those formats provide their own check values. If a custom
1720.859 +   format is developed using the raw deflate format for compressed data, it is
1720.860 +   recommended that a check value such as an adler32 or a crc32 be applied to
1720.861 +   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
1720.862 +   most applications, the zlib format should be used as is. Note that comments
1720.863 +   above on the use in deflateInit2() applies to the magnitude of windowBits.
1720.864 +
1720.865 +     windowBits can also be greater than 15 for optional gzip decoding. Add
1720.866 +   32 to windowBits to enable zlib and gzip decoding with automatic header
1720.867 +   detection, or add 16 to decode only the gzip format (the zlib format will
1720.868 +   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
1720.869 +   a crc32 instead of an adler32.
1720.870 +
1720.871 +     inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.872 +   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
1720.873 +   is set to null if there is no error message.  inflateInit2 does not perform
1720.874 +   any decompression apart from reading the zlib header if present: this will
1720.875 +   be done by inflate(). (So next_in and avail_in may be modified, but next_out
1720.876 +   and avail_out are unchanged.)
1720.877 +*/
1720.878 +
1720.879 +/**
1720.880 +     Initializes the decompression dictionary from the given uncompressed byte
1720.881 +   sequence. This function must be called immediately after a call of inflate,
1720.882 +   if that call returned Z_NEED_DICT. The dictionary chosen by the compressor
1720.883 +   can be determined from the adler32 value returned by that call of inflate.
1720.884 +   The compressor and decompressor must use exactly the same dictionary (see
1720.885 +   deflateSetDictionary).  For raw inflate, this function can be called
1720.886 +   immediately after inflateInit2() or inflateReset() and before any call of
1720.887 +   inflate() to set the dictionary.  The application must insure that the
1720.888 +   dictionary that was used for compression is provided.
1720.889 +
1720.890 +   inflateSetDictionary does not perform any decompression: this will be done 
1720.891 +   by subsequent calls of inflate().
1720.892 +   
1720.893 +   @param strm stream of data
1720.894 +   @param dictionary Pointer to dictionary
1720.895 +   @param dictLength Dictionary Length
1720.896 +   @return inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
1720.897 +   parameter is invalid (such as NULL dictionary) or the stream state is
1720.898 +   inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
1720.899 +   expected one (incorrect adler32 value). 
1720.900 +*/
1720.901 +ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
1720.902 +                                             const Bytef *dictionary,
1720.903 +                                             uInt  dictLength));
1720.904 +
1720.905 +/**
1720.906 +    Skips invalid compressed data until a full flush point (see above the
1720.907 +  description of deflate with Z_FULL_FLUSH) can be found, or until all
1720.908 +  available input is skipped. No output is provided.
1720.909 +
1720.910 +  @param strm Stream of data
1720.911 +  @return inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
1720.912 +  if no more input was provided, Z_DATA_ERROR if no flush point has been found,
1720.913 +  or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
1720.914 +  case, the application may save the current current value of total_in which
1720.915 +  indicates where valid compressed data was found. In the error case, the
1720.916 +  application may repeatedly call inflateSync, providing more input each time,
1720.917 +  until success or end of the input data.
1720.918 +*/
1720.919 +ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
1720.920 +
1720.921 +/**
1720.922 +     Sets the destination stream as a complete copy of the source stream.
1720.923 +
1720.924 +     This function can be useful when randomly accessing a large stream.  The
1720.925 +   first pass through the stream can periodically record the inflate state,
1720.926 +   allowing restarting inflate at those points when randomly accessing the
1720.927 +   stream.
1720.928 +   
1720.929 +   @param dest destination stream
1720.930 +   @param source source stream of data
1720.931 +   @return inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
1720.932 +   enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
1720.933 +   (such as zalloc being NULL). msg is left unchanged in both source and
1720.934 +   destination.
1720.935 +*/
1720.936 +ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest,
1720.937 +                                    z_streamp source));
1720.938 +
1720.939 +/**
1720.940 +     This function is equivalent to inflateEnd followed by inflateInit,
1720.941 +   but does not free and reallocate all the internal decompression state.
1720.942 +   The stream will keep attributes that may have been set by inflateInit2.
1720.943 +
1720.944 +   @param strm Stream of data
1720.945 +   @return inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
1720.946 +   stream state was inconsistent (such as zalloc or state being NULL).
1720.947 +*/
1720.948 +ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
1720.949 +
1720.950 +/**
1720.951 +     This function inserts bits in the inflate input stream.  The intent is
1720.952 +  that this function is used to start inflating at a bit position in the
1720.953 +  middle of a byte.  The provided bits will be used before any bytes are used
1720.954 +  from next_in.  This function should only be used with raw inflate, and
1720.955 +  should be used before the first inflate() call after inflateInit2() or
1720.956 +  inflateReset().  bits must be less than or equal to 16, and that many of the
1720.957 +  least significant bits of value will be inserted in the input.
1720.958 +
1720.959 +   @param strm stream of data
1720.960 +   @param bits bits must be less than or equal to 16, and that many of the
1720.961 +   least significant bits of value will be inserted in the input.
1720.962 +   @param value @param value represents value of the bits to be inserted
1720.963 +   @return inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source
1720.964 +   stream state was inconsistent.
1720.965 +*/
1720.966 +ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm,
1720.967 +                                     int bits,
1720.968 +                                     int value));
1720.969 +
1720.970 +/**
1720.971 +      inflateGetHeader() requests that gzip header information be stored in the
1720.972 +   provided gz_header structure.  inflateGetHeader() may be called after
1720.973 +   inflateInit2() or inflateReset(), and before the first call of inflate().
1720.974 +   As inflate() processes the gzip stream, head->done is zero until the header
1720.975 +   is completed, at which time head->done is set to one.  If a zlib stream is
1720.976 +   being decoded, then head->done is set to -1 to indicate that there will be
1720.977 +   no gzip header information forthcoming.  Note that Z_BLOCK can be used to
1720.978 +   force inflate() to return immediately after header processing is complete
1720.979 +   and before any actual data is decompressed.
1720.980 +
1720.981 +      The text, time, xflags, and os fields are filled in with the gzip header
1720.982 +   contents.  hcrc is set to true if there is a header CRC.  (The header CRC
1720.983 +   was valid if done is set to one.)  If extra is not Z_NULL, then extra_max
1720.984 +   contains the maximum number of bytes to write to extra.  Once done is true,
1720.985 +   extra_len contains the actual extra field length, and extra contains the
1720.986 +   extra field, or that field truncated if extra_max is less than extra_len.
1720.987 +   If name is not Z_NULL, then up to name_max characters are written there,
1720.988 +   terminated with a zero unless the length is greater than name_max.  If
1720.989 +   comment is not Z_NULL, then up to comm_max characters are written there,
1720.990 +   terminated with a zero unless the length is greater than comm_max.  When
1720.991 +   any of extra, name, or comment are not Z_NULL and the respective field is
1720.992 +   not present in the header, then that field is set to Z_NULL to signal its
1720.993 +   absence.  This allows the use of deflateSetHeader() with the returned
1720.994 +   structure to duplicate the header.  However if those fields are set to
1720.995 +   allocated memory, then the application will need to save those pointers
1720.996 +   elsewhere so that they can be eventually freed.
1720.997 +
1720.998 +      If inflateGetHeader is not used, then the header information is simply
1720.999 +   discarded.  The header is always checked for validity, including the header
1720.1000 +   CRC if present.  inflateReset() will reset the process to discard the header
1720.1001 +   information.  The application would need to call inflateGetHeader() again to
1720.1002 +   retrieve the header from the next gzip stream.
1720.1003 +
1720.1004 +   @param stream of data
1720.1005 +   @param head gzip header
1720.1006 +   @return inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
1720.1007 +   stream state was inconsistent.
1720.1008 +*/
1720.1009 +ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm,
1720.1010 +                                         gz_headerp head));
1720.1011 +
1720.1012 +/*
1720.1013 +ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
1720.1014 +                                        unsigned char FAR *window));
1720.1015 +
1720.1016 +     Initialize the internal stream state for decompression using inflateBack()
1720.1017 +   calls.  The fields zalloc, zfree and opaque in strm must be initialized
1720.1018 +   before the call.  If zalloc and zfree are Z_NULL, then the default library-
1720.1019 +   derived memory allocation routines are used.  windowBits is the base two
1720.1020 +   logarithm of the window size, in the range 8..15.  window is a caller
1720.1021 +   supplied buffer of that size.  Except for special applications where it is
1720.1022 +   assured that deflate was used with small window sizes, windowBits must be 15
1720.1023 +   and a 32K byte window must be supplied to be able to decompress general
1720.1024 +   deflate streams.
1720.1025 +
1720.1026 +     Note: In this version of the library a windowBits value of 8 is unsupported
1720.1027 +   due to a problem with the window size being set to 256 bytes. Although a
1720.1028 +   value of 8 will be accepted by deflateInit2(), as it is being changed
1720.1029 +   internally from 8 to 9, it will not be possible to use the same value when it
1720.1030 +   comes to decompression. This is because inflateInit2() does not make the same
1720.1031 +   change internally and as a result a Z_DATA_ERROR is returned when calling
1720.1032 +   inflate(). It is therefore advised that for this version of the library 
1720.1033 +   windowBits of 9 is used in place of 8.
1720.1034 +
1720.1035 +     See inflateBack() for the usage of these routines.
1720.1036 +
1720.1037 +     inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
1720.1038 +   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
1720.1039 +   be allocated, or Z_VERSION_ERROR if the version of the library does not
1720.1040 +   match the version of the header file.
1720.1041 +*/
1720.1042 +
1720.1043 +/** Input function pointer defined to be used in inflateBack */
1720.1044 +typedef unsigned (*in_func) OF((void FAR *, unsigned char FAR * FAR *));
1720.1045 +/** Output function pointer defined to be used in inflateBack */
1720.1046 +typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned));
1720.1047 +
1720.1048 +
1720.1049 +/**
1720.1050 +     inflateBack() does a raw inflate with a single call using a call-back
1720.1051 +   interface for input and output.  This is more efficient than inflate() for
1720.1052 +   file i/o applications in that it avoids copying between the output and the
1720.1053 +   sliding window by simply making the window itself the output buffer.  This
1720.1054 +   function trusts the application to not change the output buffer passed by
1720.1055 +   the output function, at least until inflateBack() returns.
1720.1056 +
1720.1057 +     inflateBackInit() must be called first to allocate the internal state
1720.1058 +   and to initialize the state with the user-provided window buffer.
1720.1059 +   inflateBack() may then be used multiple times to inflate a complete, raw
1720.1060 +   deflate stream with each call.  inflateBackEnd() is then called to free
1720.1061 +   the allocated state.
1720.1062 +
1720.1063 +     A raw deflate stream is one with no zlib or gzip header or trailer.
1720.1064 +   This routine would normally be used in a utility that reads zip or gzip
1720.1065 +   files and writes out uncompressed files.  The utility would decode the
1720.1066 +   header and process the trailer on its own, hence this routine expects
1720.1067 +   only the raw deflate stream to decompress.  This is different from the
1720.1068 +   normal behavior of inflate(), which expects either a zlib or gzip header and
1720.1069 +   trailer around the deflate stream.
1720.1070 +
1720.1071 +     inflateBack() uses two subroutines supplied by the caller that are then
1720.1072 +   called by inflateBack() for input and output.  inflateBack() calls those
1720.1073 +   routines until it reads a complete deflate stream and writes out all of the
1720.1074 +   uncompressed data, or until it encounters an error.  The function's
1720.1075 +   parameters and return types are defined above in the in_func and out_func
1720.1076 +   typedefs.  inflateBack() will call in(in_desc, &buf) which should return the
1720.1077 +   number of bytes of provided input, and a pointer to that input in buf.  If
1720.1078 +   there is no input available, in() must return zero--buf is ignored in that
1720.1079 +   case--and inflateBack() will return a buffer error.  inflateBack() will call
1720.1080 +   out(out_desc, buf, len) to write the uncompressed data buf[0..len-1].  out()
1720.1081 +   should return zero on success, or non-zero on failure.  If out() returns
1720.1082 +   non-zero, inflateBack() will return with an error.  Neither in() nor out()
1720.1083 +   are permitted to change the contents of the window provided to
1720.1084 +   inflateBackInit(), which is also the buffer that out() uses to write from.
1720.1085 +   The length written by out() will be at most the window size.  Any non-zero
1720.1086 +   amount of input may be provided by in().
1720.1087 +
1720.1088 +     For convenience, inflateBack() can be provided input on the first call by
1720.1089 +   setting strm->next_in and strm->avail_in.  If that input is exhausted, then
1720.1090 +   in() will be called.  Therefore strm->next_in must be initialized before
1720.1091 +   calling inflateBack().  If strm->next_in is Z_NULL, then in() will be called
1720.1092 +   immediately for input.  If strm->next_in is not Z_NULL, then strm->avail_in
1720.1093 +   must also be initialized, and then if strm->avail_in is not zero, input will
1720.1094 +   initially be taken from strm->next_in[0 .. strm->avail_in - 1].
1720.1095 +
1720.1096 +     The in_desc and out_desc parameters of inflateBack() is passed as the
1720.1097 +   first parameter of in() and out() respectively when they are called.  These
1720.1098 +   descriptors can be optionally used to pass any information that the caller-
1720.1099 +   supplied in() and out() functions need to do their job.
1720.1100 +
1720.1101 +     On return, inflateBack() will set strm->next_in and strm->avail_in to
1720.1102 +   pass back any unused input that was provided by the last in() call.  The
1720.1103 +   return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR
1720.1104 +   if in() or out() returned an error, Z_DATA_ERROR if there was a format
1720.1105 +   error in the deflate stream (in which case strm->msg is set to indicate the
1720.1106 +   nature of the error), or Z_STREAM_ERROR if the stream was not properly
1720.1107 +   initialized.  In the case of Z_BUF_ERROR, an input or output error can be
1720.1108 +   distinguished using strm->next_in which will be Z_NULL only if in() returned
1720.1109 +   an error.  If strm->next is not Z_NULL, then the Z_BUF_ERROR was due to
1720.1110 +   out() returning non-zero.  (in() will always be called before out(), so
1720.1111 +   strm->next_in is assured to be defined if out() returns non-zero.)  Note
1720.1112 +   that inflateBack() cannot return Z_OK.
1720.1113 +   
1720.1114 +   @param strm stream of data
1720.1115 +   @param in input function pointer
1720.1116 +   @param in_desc input parameters for in_func
1720.1117 +   @param out output function pointer
1720.1118 +   @param out_desc output parameters for out_func
1720.1119 +   @return Refer to the above description for detailed explanation
1720.1120 +*/
1720.1121 +ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm,
1720.1122 +                                    in_func in, void FAR *in_desc,
1720.1123 +                                    out_func out, void FAR *out_desc));
1720.1124 +
1720.1125 +/**
1720.1126 +     All memory allocated by inflateBackInit() is freed.
1720.1127 +
1720.1128 +   @param strm stream of data
1720.1129 +   @return inflateBackEnd returns Z_OK on success, or Z_STREAM_ERROR if the stream
1720.1130 +   state was inconsistent.
1720.1131 +*/
1720.1132 +ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm));
1720.1133 +
1720.1134 +/** 
1720.1135 + 	Return flags indicating compile-time options.
1720.1136 +
1720.1137 +    Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other:
1720.1138 +     1.0: size of uInt
1720.1139 +     3.2: size of uLong
1720.1140 +     5.4: size of voidpf (pointer)
1720.1141 +     7.6: size of z_off_t
1720.1142 +
1720.1143 +    Compiler, assembler, and debug options:
1720.1144 +     8: DEBUG
1720.1145 +     9: ASMV or ASMINF -- use ASM code
1720.1146 +     10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention
1720.1147 +     11: 0 (reserved)
1720.1148 +
1720.1149 +    One-time table building (smaller code, but not thread-safe if true):
1720.1150 +     12: BUILDFIXED -- build static block decoding tables when needed
1720.1151 +     13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed
1720.1152 +     14,15: 0 (reserved)
1720.1153 +
1720.1154 +    Library content (indicates missing functionality):
1720.1155 +     16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking
1720.1156 +                          deflate code when not needed)
1720.1157 +     17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect
1720.1158 +                    and decode gzip streams (to avoid linking crc code)
1720.1159 +     18-19: 0 (reserved)
1720.1160 +
1720.1161 +    Operation variations (changes in library functionality):
1720.1162 +     20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate
1720.1163 +     21: FASTEST -- deflate algorithm with only one, lowest compression level
1720.1164 +     22,23: 0 (reserved)
1720.1165 +
1720.1166 +    The sprintf variant used by gzprintf (zero is best):
1720.1167 +     24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format
1720.1168 +     25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure!
1720.1169 +     26: 0 = returns value, 1 = void -- 1 means inferred string length returned
1720.1170 +
1720.1171 +    Remainder:
1720.1172 +     27-31: 0 (reserved)
1720.1173 +     
1720.1174 +     @return Refer to the above description for detailed explanation
1720.1175 + */
1720.1176 +ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void));
1720.1177 +
1720.1178 +                        /* utility functions */
1720.1179 +
1720.1180 +/*
1720.1181 +     The following utility functions are implemented on top of the
1720.1182 +   basic stream-oriented functions. To simplify the interface, some
1720.1183 +   default options are assumed (compression level and memory usage,
1720.1184 +   standard memory allocation functions). The source code of these
1720.1185 +   utility functions can easily be modified if you need special options.
1720.1186 +*/
1720.1187 +
1720.1188 +/**
1720.1189 +     Compresses the source buffer into the destination buffer.  sourceLen is
1720.1190 +   the byte length of the source buffer. Upon entry, destLen is the total
1720.1191 +   size of the destination buffer, which must be at least the value returned
1720.1192 +   by compressBound(sourceLen). Upon exit, destLen is the actual size of the
1720.1193 +   compressed buffer.
1720.1194 +     This function can be used to compress a whole file at once if the
1720.1195 +   input file is mmap'ed.
1720.1196 +   
1720.1197 +   @param dest destination buffer
1720.1198 +   @param destLen byte length of destination buffer
1720.1199 +   @param source source buffer
1720.1200 +   @param sourceLen byte length of source buffer 
1720.1201 +   @return compress returns Z_OK if success, Z_MEM_ERROR if there was not
1720.1202 +   enough memory, Z_BUF_ERROR if there was not enough room in the output
1720.1203 +   buffer.
1720.1204 +*/
1720.1205 +ZEXTERN int ZEXPORT compress OF((Bytef *dest,   uLongf *destLen,
1720.1206 +                                 const Bytef *source, uLong sourceLen));
1720.1207 +
1720.1208 +/**
1720.1209 +     Compresses the source buffer into the destination buffer. The level
1720.1210 +   parameter has the same meaning as in deflateInit.  sourceLen is the byte
1720.1211 +   length of the source buffer. Upon entry, destLen is the total size of the
1720.1212 +   destination buffer, which must be at least the value returned by
1720.1213 +   compressBound(sourceLen). Upon exit, destLen is the actual size of the
1720.1214 +   compressed buffer.
1720.1215 +
1720.1216 +   @param dest destination buffer
1720.1217 +   @param destLen byte length of destination buffer
1720.1218 +   @param source source buffer
1720.1219 +   @param sourceLen byte length of source buffer 
1720.1220 +   @param level Compression level
1720.1221 +   @return compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.1222 +   memory, Z_BUF_ERROR if there was not enough room in the output buffer,
1720.1223 +   Z_STREAM_ERROR if the level parameter is invalid.
1720.1224 +*/
1720.1225 +ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
1720.1226 +                                  const Bytef *source, uLong sourceLen,
1720.1227 +                                  int level));
1720.1228 +
1720.1229 +/**
1720.1230 +     compressBound() returns an upper bound on the compressed size after
1720.1231 +   compress() or compress2() on sourceLen bytes.  It would be used before
1720.1232 +   a compress() or compress2() call to allocate the destination buffer.
1720.1233 +   
1720.1234 +   @param source buffer length
1720.1235 +   @return compressBound returns an upper bound on the compressed size after
1720.1236 +   compress() or compress2() on sourceLen bytes.
1720.1237 +*/
1720.1238 +ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen));
1720.1239 +
1720.1240 +/**
1720.1241 +     Decompresses the source buffer into the destination buffer.  sourceLen is
1720.1242 +   the byte length of the source buffer. Upon entry, destLen is the total
1720.1243 +   size of the destination buffer, which must be large enough to hold the
1720.1244 +   entire uncompressed data. (The size of the uncompressed data must have
1720.1245 +   been saved previously by the compressor and transmitted to the decompressor
1720.1246 +   by some mechanism outside the scope of this compression library.)
1720.1247 +   Upon exit, destLen is the actual size of the compressed buffer.
1720.1248 +     This function can be used to decompress a whole file at once if the
1720.1249 +   input file is mmap'ed.
1720.1250 +
1720.1251 +   @param dest destination buffer
1720.1252 +   @param destLen byte length of destination buffer
1720.1253 +   @param source source buffer
1720.1254 +   @param sourceLen byte length of source buffer 
1720.1255 +   @return uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
1720.1256 +   enough memory, Z_BUF_ERROR if there was not enough room in the output
1720.1257 +   buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete.
1720.1258 +*/
1720.1259 +ZEXTERN int ZEXPORT uncompress OF((Bytef *dest,   uLongf *destLen,
1720.1260 +                                   const Bytef *source, uLong sourceLen));
1720.1261 +
1720.1262 +#ifndef SYMBIAN_EZLIB_EXCLUDE_GZ_FUNCTIONS
1720.1263 +/** gzfile is typedef to voidp i.e. void pointer(void*) */
1720.1264 +typedef voidp gzFile;
1720.1265 +
1720.1266 +/**
1720.1267 +     Opens a gzip (.gz) file for reading or writing. The mode parameter
1720.1268 +   is as in fopen ("rb" or "wb") but can also include a compression level
1720.1269 +   ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
1720.1270 +   Huffman only compression as in "wb1h", or 'R' for run-length encoding
1720.1271 +   as in "wb1R". (See the description of deflateInit2 for more information
1720.1272 +   about the strategy parameter.)
1720.1273 +
1720.1274 +     gzopen can be used to read a file which is not in gzip format; in this
1720.1275 +   case gzread will directly read from the file without decompression.
1720.1276 +
1720.1277 +   @param path location of the file
1720.1278 +   @param mode refer to above description
1720.1279 +   @return gzopen returns NULL if the file could not be opened or if there was
1720.1280 +   insufficient memory to allocate the (de)compression state; errno
1720.1281 +   can be checked to distinguish the two cases (if errno is zero, the
1720.1282 +   zlib error is Z_MEM_ERROR).
1720.1283 +*/
1720.1284 +ZEXTERN gzFile ZEXPORT gzopen  OF((const char *path, const char *mode));
1720.1285 +
1720.1286 +/**
1720.1287 +     gzdopen() associates a gzFile with the file descriptor fd.  File
1720.1288 +   descriptors are obtained from calls like open, dup, creat, pipe or
1720.1289 +   fileno (in the file has been previously opened with fopen).
1720.1290 +   The mode parameter is as in gzopen.
1720.1291 +     The next call of gzclose on the returned gzFile will also close the
1720.1292 +   file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
1720.1293 +   descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
1720.1294 +   
1720.1295 +   @param fd file descriptor
1720.1296 +   @param mode The mode parameter is as in gzopen
1720.1297 +   @return gzdopen returns NULL if there was insufficient memory to allocate
1720.1298 +   the (de)compression state.
1720.1299 +*/
1720.1300 +ZEXTERN gzFile ZEXPORT gzdopen  OF((int fd, const char *mode));
1720.1301 +
1720.1302 +/**
1720.1303 +     Dynamically update the compression level or strategy. See the description
1720.1304 +   of deflateInit2 for the meaning of these parameters.
1720.1305 +     
1720.1306 +   @param file gzip file
1720.1307 +   @param level compression level
1720.1308 +   @param strategy compression algorithm
1720.1309 +   @return gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
1720.1310 +   opened for writing.
1720.1311 +*/
1720.1312 +ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
1720.1313 +
1720.1314 +/**
1720.1315 +     Reads the given number of uncompressed bytes from the compressed file.
1720.1316 +   If the input file was not in gzip format, gzread copies the given number
1720.1317 +   of bytes into the buffer.
1720.1318 +
1720.1319 +   @param file gzip file
1720.1320 +   @param buf buffer to store the copied data from the gzip file
1720.1321 +   @param len length of the data to be copied
1720.1322 +   @return gzread returns the number of uncompressed bytes actually read (0 for
1720.1323 +   end of file, -1 for error). 
1720.1324 +*/
1720.1325 +ZEXTERN int ZEXPORT    gzread  OF((gzFile file, voidp buf, unsigned len));
1720.1326 +
1720.1327 +/**
1720.1328 +     Writes the given number of uncompressed bytes into the compressed file.
1720.1329 +   gzwrite returns the number of uncompressed bytes actually written
1720.1330 +   (0 in case of error).
1720.1331 +   
1720.1332 +   @param file gzip file
1720.1333 +   @param buf buffer containing data to be written to the gzip file
1720.1334 +   @param len length of the data
1720.1335 +   @return gzwrite returns the number of uncompressed bytes actually written
1720.1336 +   (0 in case of error)
1720.1337 +*/
1720.1338 +ZEXTERN int ZEXPORT    gzwrite OF((gzFile file,
1720.1339 +                                   voidpc buf, unsigned len));
1720.1340 +
1720.1341 +/**
1720.1342 +     Converts, formats, and writes the args to the compressed file under
1720.1343 +   control of the format string, as in fprintf. gzprintf returns the number of
1720.1344 +   uncompressed bytes actually written (0 in case of error).  The number of
1720.1345 +   uncompressed bytes written is limited to 4095. The caller should assure that
1720.1346 +   this limit is not exceeded. If it is exceeded, then gzprintf() will return
1720.1347 +   return an error (0) with nothing written. In this case, there may also be a
1720.1348 +   buffer overflow with unpredictable consequences, which is possible only if
1720.1349 +   zlib was compiled with the insecure functions sprintf() or vsprintf()
1720.1350 +   because the secure snprintf() or vsnprintf() functions were not available.
1720.1351 +   
1720.1352 +   @param file gzip file
1720.1353 +   @param format format string
1720.1354 +   @return refer to the description above
1720.1355 +*/
1720.1356 +ZEXTERN int ZEXPORTVA   gzprintf OF((gzFile file, const char *format, ...));
1720.1357 +
1720.1358 +/**
1720.1359 +      Writes the given null-terminated string to the compressed file, excluding
1720.1360 +   the terminating null character.
1720.1361 +      
1720.1362 +   @param file gzip file
1720.1363 +   @param s null-terminated string
1720.1364 +   @return gzputs returns the number of characters written, or -1 in case of error.
1720.1365 +*/
1720.1366 +ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
1720.1367 +
1720.1368 +/**
1720.1369 +      Reads bytes from the compressed file until len-1 characters are read, or
1720.1370 +   a newline character is read and transferred to buf, or an end-of-file
1720.1371 +   condition is encountered.  The string is then terminated with a null
1720.1372 +   character.
1720.1373 +      
1720.1374 +   @param file gzip file     
1720.1375 +   @param buf buffer to store the copied data from the gzip file
1720.1376 +   @param len number of characters to be read (len-1)
1720.1377 +   @return gzgets returns buf, or Z_NULL in case of error.
1720.1378 +*/
1720.1379 +ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
1720.1380 +
1720.1381 +/**
1720.1382 +      Writes c, converted to an unsigned char, into the compressed file.
1720.1383 +   gzputc returns the value that was written, or -1 in case of error.
1720.1384 +
1720.1385 +   @param file gzip file
1720.1386 +   @param c character
1720.1387 +   @return gzputc returns the value that was written, or -1 in case of error.
1720.1388 +*/
1720.1389 +ZEXTERN int ZEXPORT    gzputc OF((gzFile file, int c));
1720.1390 +
1720.1391 +/**
1720.1392 +      Reads one byte from the compressed file. gzgetc returns this byte
1720.1393 +   or -1 in case of end of file or error.
1720.1394 +
1720.1395 +   @param file gzip file
1720.1396 +   @return gzgetc returns this byte or -1 in case of end of file or error.
1720.1397 +*/
1720.1398 +ZEXTERN int ZEXPORT    gzgetc OF((gzFile file));
1720.1399 +
1720.1400 +/**
1720.1401 +      Push one character back onto the stream to be read again later.
1720.1402 +   Only one character of push-back is allowed.  gzungetc() returns the
1720.1403 +   character pushed, or -1 on failure.  gzungetc() will fail if a
1720.1404 +   character has been pushed but not read yet, or if c is -1. The pushed
1720.1405 +   character will be discarded if the stream is repositioned with gzseek()
1720.1406 +   or gzrewind().
1720.1407 +   
1720.1408 +   @param c character
1720.1409 +   @param file gzip file
1720.1410 +   @return gzungetc returns the character pushed, or -1 on failure.
1720.1411 +*/
1720.1412 +ZEXTERN int ZEXPORT    gzungetc OF((int c, gzFile file));
1720.1413 +
1720.1414 +/**
1720.1415 +     Flushes all pending output into the compressed file. The parameter
1720.1416 +   flush is as in the deflate() function. The return value is the zlib
1720.1417 +   error number (see function gzerror below). gzflush returns Z_OK if
1720.1418 +   the flush parameter is Z_FINISH and all output could be flushed.
1720.1419 +     gzflush should be called only when strictly necessary because it can
1720.1420 +   degrade compression.
1720.1421 +   
1720.1422 +   @param file gzip file
1720.1423 +   @param flush parameter flush is as in the deflate() function
1720.1424 +   @return gzflush returns Z_OK if the flush parameter is Z_FINISH and all output could be flushed.
1720.1425 +*/
1720.1426 +ZEXTERN int ZEXPORT    gzflush OF((gzFile file, int flush));
1720.1427 +
1720.1428 +/**
1720.1429 +      Sets the starting position for the next gzread or gzwrite on the
1720.1430 +   given compressed file. The offset represents a number of bytes in the
1720.1431 +   uncompressed data stream. The whence parameter is defined as in lseek(2);
1720.1432 +   the value SEEK_END is not supported.
1720.1433 +     If the file is opened for reading, this function is emulated but can be
1720.1434 +   extremely slow. If the file is opened for writing, only forward seeks are
1720.1435 +   supported; gzseek then compresses a sequence of zeroes up to the new
1720.1436 +   starting position.
1720.1437 +
1720.1438 +   @param file gzip file
1720.1439 +   @param offset represents a number of bytes in the uncompressed data stream
1720.1440 +   @param whence defined as in lseek(2); the value SEEK_END is not supported.
1720.1441 +   @return gzseek returns the resulting offset location as measured in bytes from
1720.1442 +   the beginning of the uncompressed stream, or -1 in case of error, in
1720.1443 +   particular if the file is opened for writing and the new starting position
1720.1444 +   would be before the current position.
1720.1445 +*/
1720.1446 +ZEXTERN z_off_t ZEXPORT    gzseek OF((gzFile file,
1720.1447 +                                      z_off_t offset, int whence));
1720.1448 +
1720.1449 +/**
1720.1450 +     Rewinds the given file. This function is supported only for reading.
1720.1451 +
1720.1452 +   gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
1720.1453 +   
1720.1454 +   @param file gzip file
1720.1455 +   @return refer to gzseek() return value & description
1720.1456 +*/
1720.1457 +ZEXTERN int ZEXPORT    gzrewind OF((gzFile file));
1720.1458 +
1720.1459 +/**
1720.1460 +     Returns the starting position for the next gzread or gzwrite on the
1720.1461 +   given compressed file. This position represents a number of bytes in the
1720.1462 +   uncompressed data stream.
1720.1463 +
1720.1464 +   gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
1720.1465 +   
1720.1466 +   @param file gzip file
1720.1467 +   @return gztell returns the starting position for the next gzread or gzwrite on the
1720.1468 +   given compressed file
1720.1469 +*/
1720.1470 +ZEXTERN z_off_t ZEXPORT    gztell OF((gzFile file));
1720.1471 +
1720.1472 +/**
1720.1473 +     Returns 1 when EOF has previously been detected reading the given
1720.1474 +   input stream, otherwise zero.
1720.1475 +
1720.1476 +   @param file gzip file
1720.1477 +   @return gzeof returns 1 when EOF has previously been detected reading the given
1720.1478 +   input stream, otherwise zero.
1720.1479 +*/
1720.1480 +ZEXTERN int ZEXPORT gzeof OF((gzFile file));
1720.1481 +
1720.1482 +/**
1720.1483 +     Returns 1 if file is being read directly without decompression, otherwise
1720.1484 +   zero.
1720.1485 +   
1720.1486 +   @param file gzip file
1720.1487 +   @return gzdirect returns 1 if file is being read directly without decompression, otherwise zero.
1720.1488 +*/
1720.1489 +ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
1720.1490 +
1720.1491 +/**
1720.1492 +     Flushes all pending output if necessary, closes the compressed file
1720.1493 +   and deallocates all the (de)compression state. The return value is the zlib
1720.1494 +   error number (see function gzerror below).
1720.1495 +   
1720.1496 +   @param file gzip file
1720.1497 +   @return gzclose returns the zlib error number (see function gzerror below).
1720.1498 +*/
1720.1499 +ZEXTERN int ZEXPORT    gzclose OF((gzFile file));
1720.1500 +
1720.1501 +/**
1720.1502 +     Returns the error message for the last error which occurred on the
1720.1503 +   given compressed file. errnum is set to zlib error number. If an
1720.1504 +   error occurred in the file system and not in the compression library,
1720.1505 +   errnum is set to Z_ERRNO and the application may consult errno
1720.1506 +   to get the exact error code.
1720.1507 +   
1720.1508 +   @param file gzip file
1720.1509 +   @param errnum error number
1720.1510 +   @return gzerror returns the error message for the last error which occurred on the
1720.1511 +   given compressed file.
1720.1512 +*/
1720.1513 +ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
1720.1514 +
1720.1515 +/**
1720.1516 +     Clears the error and end-of-file flags for file. This is analogous to the
1720.1517 +   clearerr() function in stdio. This is useful for continuing to read a gzip
1720.1518 +   file that is being written concurrently.
1720.1519 +   
1720.1520 +   @param file gzip file
1720.1521 +*/
1720.1522 +ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
1720.1523 +
1720.1524 +#endif //SYMBIAN_EZLIB_EXCLUDE_GZ_FUNCTIONS
1720.1525 +
1720.1526 +                        /* checksum functions */
1720.1527 +
1720.1528 +/*
1720.1529 +     These functions are not related to compression but are exported
1720.1530 +   anyway because they might be useful in applications using the
1720.1531 +   compression library.
1720.1532 +*/
1720.1533 +
1720.1534 +/**
1720.1535 +     Update a running Adler-32 checksum with the bytes buf[0..len-1] and
1720.1536 +   return the updated checksum. If buf is NULL, this function returns
1720.1537 +   the required initial value for the checksum.
1720.1538 +   An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
1720.1539 +   much faster. Usage example:
1720.1540 +
1720.1541 +     uLong adler = adler32(0L, Z_NULL, 0);
1720.1542 +
1720.1543 +     while (read_buffer(buffer, length) != EOF) {
1720.1544 +       adler = adler32(adler, buffer, length);
1720.1545 +     }
1720.1546 +     if (adler != original_adler) error();
1720.1547 +     
1720.1548 +	@param adler Adler-32 checksum
1720.1549 +	@param buf pointer to buffer
1720.1550 +	@param len length of buffer
1720.1551 +	@return If buf is NULL, this function returns
1720.1552 +	the required initial value for the checksum.
1720.1553 +*/
1720.1554 +ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
1720.1555 +
1720.1556 +/**
1720.1557 +     Combine two Adler-32 checksums into one.  For two sequences of bytes, seq1
1720.1558 +   and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for
1720.1559 +   each, adler1 and adler2.
1720.1560 +   
1720.1561 +   @param adler1 Adler-32 checksum
1720.1562 +   @param adler2 Adler-32 checksum
1720.1563 +   @param len2 length
1720.1564 +   @return adler32_combine returns the Adler-32 checksum of
1720.1565 +   seq1 and seq2 concatenated, requiring only adler1, adler2, and len2.
1720.1566 +*/
1720.1567 +ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
1720.1568 +                                          z_off_t len2));
1720.1569 +
1720.1570 +/**
1720.1571 +     Update a running CRC-32 with the bytes buf[0..len-1] and return the
1720.1572 +   updated CRC-32. If buf is NULL, this function returns the required initial
1720.1573 +   value for the for the crc. Pre- and post-conditioning (one's complement) is
1720.1574 +   performed within this function so it shouldn't be done by the application.
1720.1575 +   Usage example:
1720.1576 +
1720.1577 +     uLong crc = crc32(0L, Z_NULL, 0);
1720.1578 +
1720.1579 +     while (read_buffer(buffer, length) != EOF) {
1720.1580 +       crc = crc32(crc, buffer, length);
1720.1581 +     }
1720.1582 +     if (crc != original_crc) error();
1720.1583 +     
1720.1584 +     @param crc CRC-32 check value
1720.1585 +     @param buf pointer to buffer
1720.1586 +     @param len length of buffer
1720.1587 +     @return If buf is NULL, this function returns the required initial
1720.1588 +     value for the for the crc.
1720.1589 +*/
1720.1590 +ZEXTERN uLong ZEXPORT crc32   OF((uLong crc, const Bytef *buf, uInt len));
1720.1591 +
1720.1592 +/**
1720.1593 +     Combine two CRC-32 check values into one.  For two sequences of bytes,
1720.1594 +   seq1 and seq2 with lengths len1 and len2, CRC-32 check values were
1720.1595 +   calculated for each, crc1 and crc2.
1720.1596 +   
1720.1597 +   @param crc1 CRC-32 check value
1720.1598 +   @param crc2 CRC-32 check value
1720.1599 +   @param len2 length
1720.1600 +   @return crc32_combine returns the CRC-32 check value of seq1 and seq2 
1720.1601 +   concatenated, requiring only crc1, crc2, and len2.
1720.1602 +*/
1720.1603 +ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
1720.1604 +
1720.1605 +
1720.1606 +
1720.1607 +                        /* various hacks, don't look :) */
1720.1608 +
1720.1609 +/* deflateInit and inflateInit are macros to allow checking the zlib version
1720.1610 + * and the compiler's view of z_stream:
1720.1611 + */
1720.1612 +/**
1720.1613 +    Initializes the internal stream state for compression. The fields
1720.1614 +   zalloc, zfree and opaque must be initialized before by the caller.
1720.1615 +   If zalloc and zfree are set to Z_NULL, deflateInit updates them to
1720.1616 +   use default allocation functions.
1720.1617 +
1720.1618 +     The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
1720.1619 +   1 gives best speed, 9 gives best compression, 0 gives no compression at
1720.1620 +   all (the input data is simply copied a block at a time).
1720.1621 +   Z_DEFAULT_COMPRESSION requests a default compromise between speed and
1720.1622 +   compression (currently equivalent to level 6).
1720.1623 +
1720.1624 +     deflateInit does not perform any compression: this will be done by deflate().
1720.1625 +   
1720.1626 +   @param strm stream of data
1720.1627 +   @param level compression level
1720.1628 +   @param version version of library
1720.1629 +   @param stream_size stream size
1720.1630 +   @return deflateInit_ returns Z_OK if success, Z_MEM_ERROR if there was not
1720.1631 +   enough memory, Z_STREAM_ERROR if level is not a valid compression level,
1720.1632 +   Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
1720.1633 +   with the version assumed by the caller (ZLIB_VERSION).
1720.1634 +   msg is set to null if there is no error message.
1720.1635 +*/
1720.1636 +ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
1720.1637 +                                     const char *version, int stream_size));
1720.1638 +
1720.1639 +/**
1720.1640 +    Initializes the internal stream state for decompression. The fields
1720.1641 +   next_in, avail_in, zalloc, zfree and opaque must be initialized before by
1720.1642 +   the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
1720.1643 +   value depends on the compression method), inflateInit determines the
1720.1644 +   compression method from the zlib header and allocates all data structures
1720.1645 +   accordingly; otherwise the allocation will be deferred to the first call of
1720.1646 +   inflate.  If zalloc and zfree are set to Z_NULL, inflateInit updates them to
1720.1647 +   use default allocation functions.
1720.1648 +
1720.1649 +    inflateInit does not perform any decompression apart from reading
1720.1650 +   the zlib header if present: this will be done by inflate().  (So next_in and
1720.1651 +   avail_in may be modified, but next_out and avail_out are unchanged.)
1720.1652 +   
1720.1653 +   @param strm stream of data
1720.1654 +   @param version version of library
1720.1655 +   @param stream_size stream size
1720.1656 +   @return inflateInit_ returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.1657 +   memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
1720.1658 +   version assumed by the caller.  msg is set to null if there is no error
1720.1659 +   message.
1720.1660 +*/
1720.1661 +ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
1720.1662 +                                     const char *version, int stream_size));
1720.1663 +
1720.1664 +/**
1720.1665 +	This is another version of deflateInit with more compression options. The
1720.1666 +	fields next_in, zalloc, zfree and opaque must be initialized before by
1720.1667 +	the caller.
1720.1668 +	
1720.1669 +	  The method parameter is the compression method. It must be Z_DEFLATED in
1720.1670 +	this version of the library.
1720.1671 +	
1720.1672 +	  The windowBits parameter is the base two logarithm of the window size
1720.1673 +	(the size of the history buffer). It should be in the range 8..15 for this
1720.1674 +	version of the library. Larger values of this parameter result in better
1720.1675 +	compression at the expense of memory usage. The default value is 15 if
1720.1676 +	deflateInit is used instead.
1720.1677 +	
1720.1678 +	  Note: In this version of the library a windowBits value of 8 is unsupported
1720.1679 +	due to a problem with the window size being set to 256 bytes. Although a
1720.1680 +	value of 8 will be accepted by deflateInit2(), as it is being changed
1720.1681 +	internally from 8 to 9, it will not be possible to use the same value when it
1720.1682 +	comes to decompression. This is because inflateInit2() does not make the same
1720.1683 +	change internally and as a result a Z_DATA_ERROR is returned when calling
1720.1684 +	inflate(). It is therefore advised that for this version of the library 
1720.1685 +	windowBits of 9 is used in place of 8.
1720.1686 +	
1720.1687 +	  windowBits can also be -8..-15 for raw deflate. In this case, -windowBits
1720.1688 +	determines the window size. deflate() will then generate raw deflate data
1720.1689 +	with no zlib header or trailer, and will not compute an adler32 check value.
1720.1690 +	
1720.1691 +	  windowBits can also be greater than 15 for optional gzip encoding. Add
1720.1692 +	16 to windowBits to write a simple gzip header and trailer around the
1720.1693 +	compressed data instead of a zlib wrapper. The gzip header will have no
1720.1694 +	file name, no extra data, no comment, no modification time (set to zero),
1720.1695 +	no header crc, and the operating system will be set to 3 (UNIX).  If a
1720.1696 +	gzip stream is being written, strm->adler is a crc32 instead of an adler32.
1720.1697 +	
1720.1698 +	  The memLevel parameter specifies how much memory should be allocated
1720.1699 +	for the internal compression state. memLevel=1 uses minimum memory but
1720.1700 +	is slow and reduces compression ratio; memLevel=9 uses maximum memory
1720.1701 +	for optimal speed. The default value is 8. See zconf.h for total memory
1720.1702 +	usage as a function of windowBits and memLevel.
1720.1703 +	
1720.1704 +	  The strategy parameter is used to tune the compression algorithm. Use the
1720.1705 +	value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
1720.1706 +	filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no
1720.1707 +	string match), or Z_RLE to limit match distances to one (run-length
1720.1708 +	encoding). Filtered data consists mostly of small values with a somewhat
1720.1709 +	random distribution. In this case, the compression algorithm is tuned to
1720.1710 +	compress them better. The effect of Z_FILTERED is to force more Huffman
1720.1711 +	coding and less string matching; it is somewhat intermediate between
1720.1712 +	Z_DEFAULT and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as fast as
1720.1713 +	Z_HUFFMAN_ONLY, but give better compression for PNG image data. The strategy
1720.1714 +	parameter only affects the compression ratio but not the correctness of the
1720.1715 +	compressed output even if it is not set appropriately.  Z_FIXED prevents the
1720.1716 +	use of dynamic Huffman codes, allowing for a simpler decoder for special
1720.1717 +	applications.
1720.1718 +	  deflateInit2 does not perform any compression: this will be done by deflate().
1720.1719 +	
1720.1720 +	@param strm stream of data
1720.1721 +	@param level compression level
1720.1722 +	@param method compression method
1720.1723 +	@param windowBits refer to above note & description for window bits value
1720.1724 +	@param memLevel memory level (i.e. how much memory should be allocated). refer to above description for more detail
1720.1725 +	@param strategy compression algorithm
1720.1726 +	@param version version of library
1720.1727 +	@param stream_size size of stream
1720.1728 +	@return deflateInit2_ returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.1729 +	memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
1720.1730 +	method). msg is set to null if there is no error message.  
1720.1731 +*/
1720.1732 +ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int  level, int  method,
1720.1733 +                                      int windowBits, int memLevel,
1720.1734 +                                      int strategy, const char *version,
1720.1735 +                                      int stream_size));
1720.1736 +
1720.1737 +/**
1720.1738 +     This is another version of inflateInit with an extra parameter. The
1720.1739 +   fields next_in, avail_in, zalloc, zfree and opaque must be initialized
1720.1740 +   before by the caller.
1720.1741 +
1720.1742 +     The windowBits parameter is the base two logarithm of the maximum window
1720.1743 +   size (the size of the history buffer).  It should be in the range 8..15 for
1720.1744 +   this version of the library. The default value is 15 if inflateInit is used
1720.1745 +   instead. windowBits must be greater than or equal to the windowBits value
1720.1746 +   provided to deflateInit2() while compressing, or it must be equal to 15 if
1720.1747 +   deflateInit2() was not used. If a compressed stream with a larger window
1720.1748 +   size is given as input, inflate() will return with the error code
1720.1749 +   Z_DATA_ERROR instead of trying to allocate a larger window.
1720.1750 +
1720.1751 +     Note: In this version of the library a windowBits value of 8 is unsupported
1720.1752 +   due to a problem with the window size being set to 256 bytes. Although a
1720.1753 +   value of 8 will be accepted by deflateInit2(), as it is being changed
1720.1754 +   internally from 8 to 9, it will not be possible to use the same value when it
1720.1755 +   comes to decompression. This is because inflateInit2() does not make the same
1720.1756 +   change internally and as a result a Z_DATA_ERROR is returned when calling
1720.1757 +   inflate(). It is therefore advised that for this version of the library 
1720.1758 +   windowBits of 9 is used in place of 8.
1720.1759 +
1720.1760 +     windowBits can also be -8..-15 for raw inflate. In this case, -windowBits
1720.1761 +   determines the window size. inflate() will then process raw deflate data,
1720.1762 +   not looking for a zlib or gzip header, not generating a check value, and not
1720.1763 +   looking for any check values for comparison at the end of the stream. This
1720.1764 +   is for use with other formats that use the deflate compressed data format
1720.1765 +   such as zip.  Those formats provide their own check values. If a custom
1720.1766 +   format is developed using the raw deflate format for compressed data, it is
1720.1767 +   recommended that a check value such as an adler32 or a crc32 be applied to
1720.1768 +   the uncompressed data as is done in the zlib, gzip, and zip formats.  For
1720.1769 +   most applications, the zlib format should be used as is. Note that comments
1720.1770 +   above on the use in deflateInit2() applies to the magnitude of windowBits.
1720.1771 +
1720.1772 +     windowBits can also be greater than 15 for optional gzip decoding. Add
1720.1773 +   32 to windowBits to enable zlib and gzip decoding with automatic header
1720.1774 +   detection, or add 16 to decode only the gzip format (the zlib format will
1720.1775 +   return a Z_DATA_ERROR).  If a gzip stream is being decoded, strm->adler is
1720.1776 +   a crc32 instead of an adler32.
1720.1777 +
1720.1778 +   @param strm stream of data
1720.1779 +   @param windowBits refer to above note & description for window bits value
1720.1780 +   @param version version of library
1720.1781 +   @param stream_size size of stream
1720.1782 +   @return inflateInit2_ returns Z_OK if success, Z_MEM_ERROR if there was not enough
1720.1783 +   memory, Z_STREAM_ERROR if a parameter is invalid (such as a null strm). msg
1720.1784 +   is set to null if there is no error message.  inflateInit2 does not perform
1720.1785 +   any decompression apart from reading the zlib header if present: this will
1720.1786 +   be done by inflate(). (So next_in and avail_in may be modified, but next_out
1720.1787 +   and avail_out are unchanged.)
1720.1788 +*/
1720.1789 +ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int  windowBits,
1720.1790 +                                      const char *version, int stream_size));
1720.1791 +
1720.1792 +/**
1720.1793 +     Initialize the internal stream state for decompression using inflateBack()
1720.1794 +   calls.  The fields zalloc, zfree and opaque in strm must be initialized
1720.1795 +   before the call.  If zalloc and zfree are Z_NULL, then the default library-
1720.1796 +   derived memory allocation routines are used.  windowBits is the base two
1720.1797 +   logarithm of the window size, in the range 8..15.  window is a caller
1720.1798 +   supplied buffer of that size.  Except for special applications where it is
1720.1799 +   assured that deflate was used with small window sizes, windowBits must be 15
1720.1800 +   and a 32K byte window must be supplied to be able to decompress general
1720.1801 +   deflate streams.
1720.1802 +
1720.1803 +     Note: In this version of the library a windowBits value of 8 is unsupported
1720.1804 +   due to a problem with the window size being set to 256 bytes. Although a
1720.1805 +   value of 8 will be accepted by deflateInit2(), as it is being changed
1720.1806 +   internally from 8 to 9, it will not be possible to use the same value when it
1720.1807 +   comes to decompression. This is because inflateInit2() does not make the same
1720.1808 +   change internally and as a result a Z_DATA_ERROR is returned when calling
1720.1809 +   inflate(). It is therefore advised that for this version of the library 
1720.1810 +   windowBits of 9 is used in place of 8.
1720.1811 +
1720.1812 +     See inflateBack() for the usage of these routines.
1720.1813 +   
1720.1814 +   @param strm stream of data
1720.1815 +   @param windowBits refer to above note for window bits value
1720.1816 +   @param window window is a caller supplied buffer of that size
1720.1817 +   @param version version of library
1720.1818 +   @param stream_size size of stream
1720.1819 +   @return inflateBackInit_ returns Z_OK on success, Z_STREAM_ERROR if any of
1720.1820 +   the paramaters are invalid, Z_MEM_ERROR if the internal state could not
1720.1821 +   be allocated, or Z_VERSION_ERROR if the version of the library does not
1720.1822 +   match the version of the header file.
1720.1823 +*/
1720.1824 +ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits,
1720.1825 +                                         unsigned char FAR *window,
1720.1826 +                                         const char *version,
1720.1827 +                                         int stream_size));
1720.1828 +
1720.1829 +/** 
1720.1830 +	Macro deflateInit defined for deflateInit_()
1720.1831 +	@param strm stream of data
1720.1832 +	@param level compression level
1720.1833 +*/
1720.1834 +#define deflateInit(strm, level) \
1720.1835 +        deflateInit_((strm), (level),       ZLIB_VERSION, sizeof(z_stream))
1720.1836 +/** 
1720.1837 +	Macro inflateInit defined for inflateInit_()
1720.1838 +	@param strm stream of data
1720.1839 +*/
1720.1840 +#define inflateInit(strm) \
1720.1841 +        inflateInit_((strm),                ZLIB_VERSION, sizeof(z_stream))
1720.1842 +/** 
1720.1843 +	Macro deflateInit2 defined for deflateInit2_()
1720.1844 +	@param strm stream of data
1720.1845 +	@param level compression level
1720.1846 +	@param method compression method
1720.1847 +	@param windowBits refer to the note for window bits value in deflateInit2_()
1720.1848 +	@param memLevel memory level (i.e. how much memory should be allocated). refer to above description for more detail
1720.1849 +	@param strategy compression algorithm
1720.1850 +*/
1720.1851 +#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
1720.1852 +        deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
1720.1853 +                      (strategy),           ZLIB_VERSION, sizeof(z_stream))
1720.1854 +/** 
1720.1855 +	Macro inflateInit2 defined for inflateInit2_()
1720.1856 +	@param strm stream of data
1720.1857 +	@param windowBits refer to the note for window bits value in inflateInit2_()
1720.1858 +*/
1720.1859 +#define inflateInit2(strm, windowBits) \
1720.1860 +        inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
1720.1861 +/** 
1720.1862 +	Macro inflateBackInit defined for inflateBackInit_()
1720.1863 +  	@param strm stream of data
1720.1864 +   	@param windowBits refer to the note for window bits value in inflateBackInit_()
1720.1865 +   	@param window window is a caller supplied buffer of that size
1720.1866 +*/
1720.1867 +#define inflateBackInit(strm, windowBits, window) \
1720.1868 +        inflateBackInit_((strm), (windowBits), (window), \
1720.1869 +        ZLIB_VERSION, sizeof(z_stream))
1720.1870 +       
1720.1871 +
1720.1872 +#if !defined(ZUTIL_H) && !defined(NO_DUMMY_DECL)
1720.1873 +	/** Hack for buggy compilers */
1720.1874 +    struct internal_state {int dummy;}; 
1720.1875 +#endif
1720.1876 +
1720.1877 +/**
1720.1878 +   Returns the string representing the error code
1720.1879 +	
1720.1880 +   @param int error code
1720.1881 +   @return zError returns string representing the error code
1720.1882 +*/
1720.1883 +ZEXTERN const char   * ZEXPORT zError           OF((int));
1720.1884 +/**
1720.1885 +   Checks whether inflate is currently at the end of a block generated by Z_SYNC_FLUSH or Z_FULL_FLUSH
1720.1886 +	
1720.1887 +   @param z stream of data
1720.1888 +   @return inflateSyncPoint returns true(1) if inflate is currently at the end of a block. Otherwise false(0)  
1720.1889 +*/
1720.1890 +ZEXTERN int            ZEXPORT inflateSyncPoint OF((z_streamp z));
1720.1891 +/**
1720.1892 +   Initialize the tables before allowing more than one thread to use crc32()
1720.1893 +	
1720.1894 +   @return get_crc_table returns pointer to the crc table after initialisation
1720.1895 +*/
1720.1896 +ZEXTERN const uLongf * ZEXPORT get_crc_table    OF((void));
1720.1897 +
1720.1898 +#ifdef __cplusplus
1720.1899 +}
1720.1900 +#endif
1720.1901 +
1720.1902 +#endif /* _ZLIB_H */